[med-svn] [praat] 09/10: Imported Upstream version 6.0.18

Rafael Laboissière rlaboiss-guest at moszumanska.debian.org
Mon Jun 13 07:46:36 UTC 2016


This is an automated email from the git hooks/post-receive script.

rlaboiss-guest pushed a commit to branch master
in repository praat.

commit 7322f72b07e21354897ea956389a48a7f3ca23f8
Author: Rafael Laboissiere <rafael at laboissiere.net>
Date:   Sun Jun 12 16:38:39 2016 -0300

    Imported Upstream version 6.0.18
---
 EEG/EEG.cpp                                        |   329 +-
 EEG/EEG.h                                          |    26 +-
 EEG/EEGWindow.cpp                                  |    31 +-
 EEG/EEGWindow.h                                    |    11 +-
 EEG/EEGWindow_prefs.h                              |     7 +-
 EEG/EEG_def.h                                      |    12 +-
 EEG/ERP.cpp                                        |    41 +-
 EEG/ERP.h                                          |    12 +-
 EEG/ERPTier.cpp                                    |   176 +-
 EEG/ERPTier.h                                      |    30 +-
 EEG/ERPTier_def.h                                  |    18 +-
 EEG/ERPWindow.cpp                                  |    69 +-
 EEG/ERPWindow.h                                    |    11 +-
 EEG/ERPWindow_prefs.h                              |     7 +-
 EEG/ERP_def.h                                      |     7 +-
 EEG/manual_EEG.cpp                                 |     7 +-
 EEG/praat_EEG.cpp                                  |   338 +-
 FFNet/FFNet.cpp                                    |   276 +-
 FFNet/FFNet.h                                      |    34 +-
 FFNet/FFNet_Activation_Categories.cpp              |    43 +-
 FFNet/FFNet_Activation_Categories.h                |    15 +-
 FFNet/FFNet_Eigen.cpp                              |    39 +-
 FFNet/FFNet_Eigen.h                                |    11 +-
 FFNet/FFNet_Matrix.cpp                             |    29 +-
 FFNet/FFNet_Matrix.h                               |    13 +-
 FFNet/FFNet_Pattern.cpp                            |     9 +-
 FFNet/FFNet_Pattern.h                              |     9 +-
 FFNet/FFNet_Pattern_Activation.cpp                 |   122 +-
 FFNet/FFNet_Pattern_Activation.h                   |    15 +-
 FFNet/FFNet_Pattern_Categories.cpp                 |    83 +-
 FFNet/FFNet_Pattern_Categories.h                   |    15 +-
 FFNet/FFNet_def.h                                  |    17 +-
 FFNet/manual_FFNet.cpp                             |    63 +-
 FFNet/praat_FFNet_init.cpp                         |   163 +-
 LPC/Cepstrogram.cpp                                |   174 +-
 LPC/Cepstrogram.h                                  |    43 +-
 LPC/Cepstrum.cpp                                   |   234 +-
 LPC/Cepstrum.h                                     |    32 +-
 LPC/Cepstrum_and_Spectrum.cpp                      |   100 +-
 LPC/Cepstrum_and_Spectrum.h                        |    27 +-
 LPC/Cepstrumc.cpp                                  |    28 +-
 LPC/Cepstrumc.h                                    |    16 +-
 LPC/Cepstrumc_def.h                                |    22 +-
 LPC/Formant_extensions.cpp                         |    33 +-
 LPC/Formant_extensions.h                           |    11 +-
 LPC/LPC.cpp                                        |    47 +-
 LPC/LPC.h                                          |    27 +-
 LPC/LPC_and_Cepstrumc.cpp                          |    19 +-
 LPC/LPC_and_Cepstrumc.h                            |    13 +-
 LPC/LPC_and_Formant.cpp                            |    27 +-
 LPC/LPC_and_Formant.h                              |    21 +-
 LPC/LPC_and_LFCC.cpp                               |    24 +-
 LPC/LPC_and_LFCC.h                                 |    13 +-
 LPC/LPC_and_Polynomial.cpp                         |    17 +-
 LPC/LPC_and_Polynomial.h                           |    13 +-
 LPC/LPC_and_Tube.cpp                               |    67 +-
 LPC/LPC_and_Tube.h                                 |    15 +-
 LPC/LPC_def.h                                      |     7 +-
 LPC/LPC_to_Spectrogram.cpp                         |    17 +-
 LPC/LPC_to_Spectrogram.h                           |    11 +-
 LPC/LPC_to_Spectrum.cpp                            |    27 +-
 LPC/LPC_to_Spectrum.h                              |    17 +-
 LPC/Sound_and_Cepstrum.cpp                         |    43 +-
 LPC/Sound_and_Cepstrum.h                           |    15 +-
 LPC/Sound_and_LPC.cpp                              |   134 +-
 LPC/Sound_and_LPC.h                                |    32 +-
 LPC/Sound_and_LPC_robust.cpp                       |    87 +-
 LPC/Sound_and_LPC_robust.h                         |    13 +-
 LPC/Tube.cpp                                       |    38 +-
 LPC/Tube.h                                         |    31 +-
 LPC/Tube_def.h                                     |     7 +-
 LPC/VocalTractTier.cpp                             |   102 +-
 LPC/VocalTractTier.h                               |    25 +-
 LPC/VocalTractTier_def.h                           |    13 +-
 LPC/manual_LPC.cpp                                 |    19 +-
 LPC/praat_LPC_init.cpp                             |   215 +-
 README.md                                          |   147 +
 artsynth/Art_Speaker.cpp                           |     7 +-
 artsynth/Art_Speaker.h                             |     7 +-
 artsynth/Art_Speaker_Delta.cpp                     |     7 +-
 artsynth/Art_Speaker_Delta.h                       |     7 +-
 artsynth/Art_Speaker_to_VocalTract.cpp             |    35 +-
 artsynth/Art_Speaker_to_VocalTract.h               |    11 +-
 artsynth/Articulation.cpp                          |    13 +-
 artsynth/Articulation.h                            |    12 +-
 artsynth/Articulation_def.h                        |    11 +-
 artsynth/Articulation_enums.h                      |     7 +-
 artsynth/Artword.cpp                               |    29 +-
 artsynth/Artword.h                                 |    26 +-
 artsynth/ArtwordEditor.cpp                         |    64 +-
 artsynth/ArtwordEditor.h                           |    13 +-
 artsynth/Artword_Speaker.cpp                       |    33 +-
 artsynth/Artword_Speaker.h                         |     7 +-
 artsynth/Artword_Speaker_Sound.cpp                 |    50 +-
 artsynth/Artword_Speaker_Sound.h                   |     7 +-
 artsynth/Artword_Speaker_to_Sound.cpp              |   347 +-
 artsynth/Artword_Speaker_to_Sound.h                |    17 +-
 artsynth/Artword_def.h                             |    12 +-
 artsynth/Artword_to_Art.cpp                        |    15 +-
 artsynth/Artword_to_Art.h                          |    11 +-
 artsynth/Delta.cpp                                 |    17 +-
 artsynth/Delta.h                                   |    21 +-
 artsynth/Speaker.cpp                               |    14 +-
 artsynth/Speaker.h                                 |    10 +-
 artsynth/Speaker_def.h                             |    56 +-
 artsynth/Speaker_to_Delta.cpp                      |   213 +-
 artsynth/Speaker_to_Delta.h                        |     9 +-
 artsynth/manual_Artsynth.cpp                       |     7 +-
 artsynth/praat_Artsynth.cpp                        |   194 +-
 contrib/ola/FeatureWeights.cpp                     |   120 +-
 contrib/ola/FeatureWeights.h                       |    14 +-
 contrib/ola/FeatureWeights_def.h                   |    12 +-
 contrib/ola/KNN.cpp                                |   460 +-
 contrib/ola/KNN.h                                  |    26 +-
 contrib/ola/KNN_def.h                              |    23 +-
 contrib/ola/KNN_prune.cpp                          |    37 +-
 contrib/ola/KNN_prune.h                            |     7 +-
 contrib/ola/KNN_threads.cpp                        |    33 +-
 contrib/ola/KNN_threads.h                          |    11 +-
 contrib/ola/OlaP.h                                 |     7 +-
 contrib/ola/Pattern_to_Categories_cluster.cpp      |    63 +-
 contrib/ola/Pattern_to_Categories_cluster.h        |     9 +-
 contrib/ola/manual_KNN.cpp                         |     9 +-
 contrib/ola/praat_contrib_Ola_KNN.cpp              |   218 +-
 dwsys/Collection_extensions.cpp                    |   198 +-
 dwsys/Collection_extensions.h                      |    31 +-
 dwsys/Command.cpp                                  |    89 +-
 dwsys/Command.h                                    |    67 +-
 dwsys/DLL.cpp                                      |   226 -
 dwsys/DLL.h                                        |    64 -
 dwsys/DoublyLinkedList.cpp                         |   222 +
 dwsys/DoublyLinkedList.h                           |    66 +
 dwsys/Eigen.cpp                                    |   264 +-
 dwsys/Eigen.h                                      |    77 +-
 dwsys/Eigen_def.h                                  |    13 +-
 dwsys/FileInMemory.cpp                             |   186 +-
 dwsys/FileInMemory.h                               |    55 +-
 dwsys/Graphics_extensions.cpp                      |    25 +-
 dwsys/Graphics_extensions.h                        |    14 +-
 dwsys/Index.cpp                                    |    54 +-
 dwsys/Index.h                                      |    15 +-
 dwsys/Index_def.h                                  |    17 +-
 dwsys/Makefile                                     |     2 +-
 dwsys/NUM2.cpp                                     |   824 +-
 dwsys/NUM2.h                                       |   120 +-
 dwsys/NUMcblas.cpp                                 |     4 +-
 dwsys/NUMcblas.h                                   |     7 +-
 dwsys/NUMclapack.h                                 |     7 +-
 dwsys/NUMf2c.cpp                                   |     6 +-
 dwsys/NUMf2c.h                                     |     7 +-
 dwsys/NUMfft_core.h                                |     1 -
 dwsys/NUMfft_d.cpp                                 |     7 +-
 dwsys/NUMhuber.cpp                                 |    41 +-
 dwsys/NUMlapack.cpp                                |     7 +-
 dwsys/NUMlapack.h                                  |     7 +-
 dwsys/NUMmachar.cpp                                |     7 +-
 dwsys/NUMmachar.h                                  |     7 +-
 dwsys/NUMsort2.cpp                                 |   234 +-
 dwsys/NUMstring.cpp                                |    96 +-
 dwsys/Permutation.cpp                              |   147 +-
 dwsys/Permutation.h                                |    34 +-
 dwsys/Permutation_and_Index.cpp                    |    21 +-
 dwsys/Permutation_and_Index.h                      |    11 +-
 dwsys/Permutation_def.h                            |     9 +-
 dwsys/SVD.cpp                                      |    82 +-
 dwsys/SVD.h                                        |    29 +-
 dwsys/SVD_def.h                                    |    11 +-
 dwsys/SimpleVector.cpp                             |    31 +-
 dwsys/SimpleVector.h                               |    21 +-
 dwsys/SimpleVector_def.h                           |    11 +-
 dwsys/Simple_extensions.cpp                        |    27 +-
 dwsys/Simple_extensions.h                          |    17 +-
 dwsys/regularExp.cpp                               |     6 +-
 dwtest/pols_50males_format0.Discriminant           |   389 +
 dwtest/runAllTests.praat                           |    20 +-
 dwtest/test_Activation.praat                       |    25 +
 dwtest/test_Confusion.praat                        |     8 +-
 dwtest/test_Covariance.praat                       |    61 +
 dwtest/test_Discriminant.praat                     |    48 +-
 dwtest/test_FFNet.praat                            |    31 +
 dwtest/test_HMM.praat                              |    64 +
 dwtest/test_KlattGrid.praat                        |     7 +-
 dwtest/test_KruskalWallis.praat                    |     7 +-
 dwtest/test_MDS.praat                              |    37 +-
 dwtest/test_OnewayAnova.praat                      |     7 +-
 dwtest/test_Polygon_simplify.praat                 |     4 -
 dwtest/test_Procrustes.praat                       |   263 +-
 dwtest/test_Sound_draw_where.praat                 |     1 +
 dwtest/test_Sound_paint_where.praat                |     2 +-
 dwtest/test_SpeechSynthesizer.praat                |    41 +-
 dwtest/test_TableOfReal_extensions.praat           |     3 +-
 dwtest/test_bss_twoSoundsMixed.praat               |    31 +
 ...est_henzeZirklerMultivariateNormalityTest.praat |     4 +-
 dwtest/test_sigma_ellipse.praat                    |     2 +
 dwtools/Activation.cpp                             |    38 +-
 dwtools/Activation.h                               |    16 +-
 dwtools/AffineTransform.cpp                        |    56 +-
 dwtools/AffineTransform.h                          |    20 +-
 dwtools/AffineTransform_def.h                      |    16 +-
 dwtools/CC.cpp                                     |   104 +-
 dwtools/CC.h                                       |    35 +-
 dwtools/CCA.cpp                                    |   198 +-
 dwtools/CCA.h                                      |    23 +-
 dwtools/CCA_and_Correlation.cpp                    |    50 +-
 dwtools/CCA_and_Correlation.h                      |    11 +-
 dwtools/CCA_def.h                                  |    21 +-
 dwtools/CC_def.h                                   |     7 +-
 dwtools/CCs_to_DTW.cpp                             |    67 +-
 dwtools/CCs_to_DTW.h                               |    11 +-
 dwtools/Categories.cpp                             |    82 +-
 dwtools/Categories.h                               |    23 +-
 dwtools/CategoriesEditor.cpp                       |   833 +-
 dwtools/CategoriesEditor.h                         |    43 +-
 dwtools/Categories_and_Strings.cpp                 |    29 +-
 dwtools/Categories_and_Strings.h                   |    13 +-
 dwtools/ClassificationTable.cpp                    |   102 +-
 dwtools/ClassificationTable.h                      |    20 +-
 dwtools/ComplexSpectrogram.cpp                     |    85 +-
 dwtools/ComplexSpectrogram.h                       |    19 +-
 dwtools/ComplexSpectrogram_def.h                   |     7 +-
 dwtools/Configuration.cpp                          |   238 +-
 dwtools/Configuration.h                            |    46 +-
 dwtools/Configuration_AffineTransform.cpp          |    66 +-
 dwtools/Configuration_AffineTransform.h            |    15 +-
 dwtools/Configuration_and_Procrustes.cpp           |    13 +-
 dwtools/Configuration_and_Procrustes.h             |    11 +-
 dwtools/Configuration_def.h                        |     7 +-
 dwtools/Confusion.cpp                              |   233 +-
 dwtools/Confusion.h                                |    36 +-
 dwtools/ContingencyTable.cpp                       |   106 +-
 dwtools/ContingencyTable.h                         |    34 +-
 dwtools/DTW.cpp                                    |   411 +-
 dwtools/DTW.h                                      |    48 +-
 dwtools/DTW_and_TextGrid.cpp                       |   121 +-
 dwtools/DTW_and_TextGrid.h                         |    20 +-
 dwtools/DTW_def.h                                  |    26 +-
 dwtools/DataModeler.cpp                            |  1013 +-
 dwtools/DataModeler.h                              |   110 +-
 dwtools/DataModeler_def.h                          |    38 +-
 dwtools/Discriminant.cpp                           |   530 +-
 dwtools/Discriminant.h                             |    59 +-
 dwtools/Discriminant_Pattern_Categories.cpp        |    25 +-
 dwtools/Discriminant_Pattern_Categories.h          |    14 +-
 dwtools/Discriminant_def.h                         |    26 +-
 dwtools/Distance.cpp                               |    15 +-
 dwtools/Distance.h                                 |    11 +-
 dwtools/EEG_extensions.cpp                         |   134 +-
 dwtools/EEG_extensions.h                           |    36 +-
 dwtools/EditDistanceTable.cpp                      |   154 +-
 dwtools/EditDistanceTable.h                        |    45 +-
 dwtools/EditDistanceTable_def.h                    |    15 +-
 dwtools/Eigen_and_Matrix.cpp                       |    65 +-
 dwtools/Eigen_and_Matrix.h                         |    23 +-
 dwtools/Eigen_and_Procrustes.cpp                   |    21 +-
 dwtools/Eigen_and_Procrustes.h                     |    11 +-
 dwtools/Eigen_and_SSCP.cpp                         |    29 +-
 dwtools/Eigen_and_SSCP.h                           |    14 +-
 dwtools/Eigen_and_TableOfReal.cpp                  |    60 +-
 dwtools/Eigen_and_TableOfReal.h                    |    21 +-
 dwtools/Excitations.cpp                            |    75 +-
 dwtools/Excitations.h                              |    31 +-
 dwtools/FilterBank.cpp                             |   290 +-
 dwtools/FilterBank.h                               |    69 +-
 dwtools/FormantGrid_extensions.cpp                 |    59 +-
 dwtools/FormantGrid_extensions.h                   |     9 +-
 dwtools/GaussianMixture.cpp                        |   848 +-
 dwtools/GaussianMixture.h                          |    63 +-
 dwtools/GaussianMixture_def.h                      |    13 +-
 dwtools/HMM.cpp                                    |  1052 +-
 dwtools/HMM.h                                      |   185 +-
 dwtools/HMM_def.h                                  |    42 +-
 dwtools/ICA.cpp                                    |   341 +-
 dwtools/ICA.h                                      |    76 +-
 dwtools/Intensity_extensions.cpp                   |    46 +-
 dwtools/Intensity_extensions.h                     |    15 +-
 dwtools/KlattGrid.cpp                              |  1967 +-
 dwtools/KlattGrid.h                                |   124 +-
 dwtools/KlattGridEditors.cpp                       |   271 +-
 dwtools/KlattGridEditors.h                         |    79 +-
 dwtools/KlattGrid_def.h                            |   157 +-
 dwtools/KlattTable.cpp                             |   178 +-
 dwtools/KlattTable.h                               |    25 +-
 dwtools/LFCC.cpp                                   |    16 +-
 dwtools/LFCC.h                                     |    11 +-
 dwtools/LongSound_extensions.cpp                   |    46 +-
 dwtools/LongSound_extensions.h                     |    14 +-
 dwtools/Ltas_extensions.cpp                        |     7 +-
 dwtools/Ltas_extensions.h                          |     7 +-
 dwtools/MDS.cpp                                    |  1858 +-
 dwtools/MDS.h                                      |   529 +-
 dwtools/MFCC.cpp                                   |    42 +-
 dwtools/MFCC.h                                     |    24 +-
 dwtools/Makefile                                   |     5 +-
 dwtools/Matrix_Categories.cpp                      |    30 +-
 dwtools/Matrix_Categories.h                        |    11 +-
 dwtools/Matrix_extensions.cpp                      |   233 +-
 dwtools/Matrix_extensions.h                        |    19 +-
 dwtools/Minimizers.cpp                             |   186 +-
 dwtools/Minimizers.h                               |   130 +-
 dwtools/OptimalCeilingTier.cpp                     |    18 +-
 dwtools/OptimalCeilingTier.h                       |    11 +-
 dwtools/OptimalCeilingTierEditor.cpp               |    17 +-
 dwtools/OptimalCeilingTierEditor.h                 |    11 +-
 dwtools/PCA.cpp                                    |   240 +-
 dwtools/PCA.h                                      |    36 +-
 dwtools/PCA_def.h                                  |     7 +-
 dwtools/Pattern.cpp                                |    31 +-
 dwtools/Pattern.h                                  |    14 +-
 dwtools/Pitch_extensions.cpp                       |   101 +-
 dwtools/Pitch_extensions.h                         |    15 +-
 dwtools/Polygon_extensions.cpp                     |   496 +-
 dwtools/Polygon_extensions.h                       |    46 +-
 dwtools/Polynomial.cpp                             |   428 +-
 dwtools/Polynomial.h                               |   125 +-
 dwtools/Polynomial_def.h                           |     7 +-
 dwtools/Procrustes.cpp                             |    37 +-
 dwtools/Procrustes.h                               |    12 +-
 dwtools/Procrustes_def.h                           |    14 +-
 dwtools/Proximity.cpp                              |    13 +-
 dwtools/Proximity.h                                |     7 +-
 dwtools/Resonator.cpp                              |    23 +-
 dwtools/Resonator.h                                |    17 +-
 dwtools/SPINET.cpp                                 |   106 +-
 dwtools/SPINET.h                                   |    15 +-
 dwtools/SPINET_def.h                               |    21 +-
 dwtools/SPINET_to_Pitch.cpp                        |    33 +-
 dwtools/SPINET_to_Pitch.h                          |    12 +-
 dwtools/SSCP.cpp                                   |  1164 +-
 dwtools/SSCP.h                                     |   154 +-
 dwtools/SSCP_def.h                                 |    11 +-
 dwtools/Sampled2.cpp                               |   217 -
 dwtools/Sampled2.h                                 |    83 -
 dwtools/Sampled2_def.h                             |    37 -
 dwtools/Sound_and_FilterBank.cpp                   |   421 -
 dwtools/Sound_and_FilterBank.h                     |    58 -
 dwtools/Sound_and_PCA.cpp                          |    33 +-
 dwtools/Sound_and_PCA.h                            |    19 +-
 dwtools/Sound_and_Spectrogram_extensions.cpp       |   157 +-
 dwtools/Sound_and_Spectrogram_extensions.h         |    22 +-
 dwtools/Sound_extensions.cpp                       |   672 +-
 dwtools/Sound_extensions.h                         |   104 +-
 dwtools/Sound_to_DTW.h                             |    34 -
 dwtools/Sound_to_MFCC.cpp                          |    15 +-
 dwtools/Sound_to_MFCC.h                            |    11 +-
 dwtools/Sound_to_Pitch2.cpp                        |    47 +-
 dwtools/Sound_to_Pitch2.h                          |    13 +-
 dwtools/Sound_to_SPINET.cpp                        |    29 +-
 dwtools/Sound_to_SPINET.h                          |    11 +-
 dwtools/Sounds_to_DTW.cpp                          |    19 +-
 dwtools/Sounds_to_DTW.h                            |    11 +-
 dwtools/Spectrogram_extensions.cpp                 |   142 +-
 dwtools/Spectrogram_extensions.h                   |    33 +-
 dwtools/Spectrum_extensions.cpp                    |    83 +-
 dwtools/Spectrum_extensions.h                      |    21 +-
 dwtools/SpeechSynthesizer.cpp                      |   468 +-
 dwtools/SpeechSynthesizer.h                        |    26 +-
 dwtools/SpeechSynthesizer_and_TextGrid.cpp         |   520 +-
 dwtools/SpeechSynthesizer_and_TextGrid.h           |    27 +-
 dwtools/SpeechSynthesizer_def.h                    |    17 +-
 dwtools/Strings_extensions.cpp                     |   132 +-
 dwtools/Strings_extensions.h                       |    47 +-
 dwtools/TableOfReal_and_Permutation.cpp            |    21 +-
 dwtools/TableOfReal_and_Permutation.h              |    13 +-
 dwtools/TableOfReal_and_SVD.cpp                    |    33 +-
 dwtools/TableOfReal_and_SVD.h                      |    27 +-
 dwtools/TableOfReal_extensions.cpp                 |   572 +-
 dwtools/TableOfReal_extensions.h                   |   122 +-
 dwtools/Table_extensions.cpp                       |   931 +-
 dwtools/Table_extensions.h                         |    50 +-
 dwtools/TextGrid_extensions.cpp                    |   386 +-
 dwtools/TextGrid_extensions.h                      |    34 +-
 dwtools/VowelEditor.cpp                            |  1136 +-
 dwtools/VowelEditor.h                              |    74 +-
 dwtools/Vowel_def.h                                |    13 +-
 dwtools/manual_BSS.cpp                             |    43 +-
 dwtools/manual_DataModeler.cpp                     |     7 +-
 dwtools/manual_HMM.cpp                             |    53 +-
 dwtools/manual_KlattGrid.cpp                       |     7 +-
 dwtools/manual_MDS.cpp                             |    58 +-
 dwtools/manual_Permutation.cpp                     |     7 +-
 dwtools/manual_dwtools.cpp                         |   305 +-
 dwtools/praat_BSS_init.cpp                         |   235 +-
 dwtools/praat_DataModeler_init.cpp                 |   228 +-
 dwtools/praat_David_init.cpp                       |  3575 +-
 dwtools/praat_HMM_init.cpp                         |   605 +-
 dwtools/praat_KlattGrid_init.cpp                   |   661 +-
 dwtools/praat_MDS_init.cpp                         |  1176 +-
 external/espeak/READ_ME.TXT                        |    18 +-
 external/espeak/StdAfx.h                           |     0
 external/espeak/compiledict.cpp                    |   362 +-
 external/espeak/debug.h                            |     0
 external/espeak/dictionary.cpp                     |  1083 +-
 external/espeak/espeak_command.h                   |     0
 external/espeak/espeakdata_FileInMemory.cpp        |   114 +-
 external/espeak/espeakdata_FileInMemory.h          |    39 +-
 external/espeak/espeakdata_dicts.cpp               | 79065 +++++++++++--------
 external/espeak/espeakdata_phons.cpp               | 25929 +++---
 external/espeak/espeakdata_variants.cpp            |   131 +-
 external/espeak/espeakdata_voices.cpp              |  1272 +-
 external/espeak/event.h                            |     0
 external/espeak/fifo.h                             |     0
 external/espeak/intonation.cpp                     |    46 +-
 external/espeak/klatt.cpp                          |   453 +-
 external/espeak/klatt.h                            |     5 +-
 external/espeak/numbers.cpp                        |  1274 +-
 external/espeak/phoneme.h                          |     8 +-
 external/espeak/phonemelist.cpp                    |   232 +-
 external/espeak/readclause.cpp                     |   455 +-
 external/espeak/setlengths.cpp                     |    51 +-
 external/espeak/sintab.h                           |     0
 external/espeak/sonic.cpp                          |     0
 external/espeak/sonic.h                            |     0
 external/espeak/speak_lib.cpp                      |    71 +-
 external/espeak/speak_lib.h                        |   107 +-
 external/espeak/speech.h                           |    16 +-
 external/espeak/synth_mbrola.cpp                   |     5 +-
 external/espeak/synthdata.cpp                      |    75 +-
 external/espeak/synthesize.cpp                     |    92 +-
 external/espeak/synthesize.h                       |    35 +-
 external/espeak/tr_languages.cpp                   |   417 +-
 external/espeak/translate.cpp                      |  1136 +-
 external/espeak/translate.h                        |   186 +-
 external/espeak/voice.h                            |     6 +-
 external/espeak/voices.cpp                         |   523 +-
 external/espeak/wave.h                             |     2 +-
 external/espeak/wavegen.cpp                        |    75 +-
 external/flac/flac_FLAC_format.h                   |     2 +-
 external/flac/flac_stream_decoder.c                |     6 +-
 external/flac/flac_stream_encoder.c                |     4 +-
 external/mp3/mp3.cpp                               |    98 +-
 external/mp3/mp3.h                                 |     9 +-
 external/portaudio2007/Makefile                    |    27 -
 external/portaudio2007/READ_ME.TXT                 |    22 -
 external/portaudio2007/pa_allocation.c             |   243 -
 external/portaudio2007/pa_allocation.h             |   104 -
 external/portaudio2007/pa_converters.c             |  1935 -
 external/portaudio2007/pa_converters.h             |   263 -
 external/portaudio2007/pa_cpuload.c                |   105 -
 external/portaudio2007/pa_cpuload.h                |    72 -
 external/portaudio2007/pa_debugprint.c             |   107 -
 external/portaudio2007/pa_debugprint.h             |   149 -
 external/portaudio2007/pa_dither.c                 |   215 -
 external/portaudio2007/pa_dither.h                 |   100 -
 external/portaudio2007/pa_endianness.h             |   141 -
 external/portaudio2007/pa_front.c                  |  1760 -
 external/portaudio2007/pa_hostapi.h                |   253 -
 external/portaudio2007/pa_linux_alsa.c             |  3565 -
 external/portaudio2007/pa_linux_alsa.h             |    95 -
 external/portaudio2007/pa_mac_core.c               |  2328 -
 external/portaudio2007/pa_mac_core.h               |   171 -
 external/portaudio2007/pa_mac_core_blocking.c      |   585 -
 external/portaudio2007/pa_mac_core_blocking.h      |   136 -
 external/portaudio2007/pa_mac_core_internal.h      |   164 -
 external/portaudio2007/pa_mac_core_utilities.c     |   620 -
 external/portaudio2007/pa_mac_core_utilities.h     |   205 -
 external/portaudio2007/pa_mac_hostapis.c           |    71 -
 external/portaudio2007/pa_mac_util.c               |   142 -
 external/portaudio2007/pa_mac_util.h               |   222 -
 external/portaudio2007/pa_process.c                |  1772 -
 external/portaudio2007/pa_process.h                |   750 -
 external/portaudio2007/pa_ringbuffer.c             |   285 -
 external/portaudio2007/pa_ringbuffer.h             |   198 -
 external/portaudio2007/pa_skeleton.c               |   816 -
 external/portaudio2007/pa_stream.c                 |   150 -
 external/portaudio2007/pa_stream.h                 |   205 -
 external/portaudio2007/pa_trace.c                  |    97 -
 external/portaudio2007/pa_trace.h                  |    79 -
 external/portaudio2007/pa_types.h                  |    82 -
 external/portaudio2007/pa_unix_hostapis.c          |    68 -
 external/portaudio2007/pa_unix_oss.c               |  1955 -
 external/portaudio2007/pa_unix_util.c              |   668 -
 external/portaudio2007/pa_unix_util.h              |   224 -
 external/portaudio2007/pa_util.h                   |   159 -
 external/portaudio2007/pa_win_ds.c                 |  2512 -
 external/portaudio2007/pa_win_ds.h                 |   100 -
 external/portaudio2007/pa_win_ds_dynlink.c         |   181 -
 external/portaudio2007/pa_win_ds_dynlink.h         |    95 -
 external/portaudio2007/pa_win_hostapis.c           |    81 -
 external/portaudio2007/pa_win_util.c               |   150 -
 external/portaudio2007/pa_win_waveformat.c         |   162 -
 external/portaudio2007/pa_win_waveformat.h         |   180 -
 external/portaudio2007/pa_win_wdmks.c              |  3300 -
 external/portaudio2007/pa_win_wdmks_utils.h        |    65 -
 external/portaudio2007/pa_win_wmme.c               |  3903 -
 external/portaudio2007/pa_win_wmme.h               |   176 -
 external/portaudio2007/portaudio.h                 |  1133 -
 fon/AmplitudeTier.cpp                              |   106 +-
 fon/AmplitudeTier.h                                |    27 +-
 fon/AmplitudeTierEditor.cpp                        |    21 +-
 fon/AmplitudeTierEditor.h                          |    11 +-
 fon/AnyTier.cpp                                    |   136 +-
 fon/AnyTier.h                                      |    61 +-
 fon/AnyTier_def.h                                  |    44 -
 fon/Cochleagram.cpp                                |    45 +-
 fon/Cochleagram.h                                  |    21 +-
 fon/Cochleagram_and_Excitation.cpp                 |    11 +-
 fon/Cochleagram_and_Excitation.h                   |    11 +-
 fon/Corpus.cpp                                     |     7 +-
 fon/Corpus.h                                       |     8 +-
 fon/Corpus_def.h                                   |     7 +-
 fon/Distributions_and_Transition.cpp               |    36 +-
 fon/Distributions_and_Transition.h                 |    17 +-
 fon/DurationTier.cpp                               |    31 +-
 fon/DurationTier.h                                 |    11 +-
 fon/DurationTierEditor.cpp                         |    21 +-
 fon/DurationTierEditor.h                           |    11 +-
 fon/Excitation.cpp                                 |    67 +-
 fon/Excitation.h                                   |    13 +-
 fon/Excitation_to_Formant.cpp                      |    11 +-
 fon/Excitation_to_Formant.h                        |    11 +-
 fon/ExperimentMFC.cpp                              |   133 +-
 fon/ExperimentMFC.h                                |    29 +-
 fon/ExperimentMFC_def.h                            |    35 +-
 fon/Experiment_enums.h                             |     7 +-
 fon/Formant.cpp                                    |   115 +-
 fon/Formant.h                                      |    22 +-
 fon/FormantGrid.cpp                                |   228 +-
 fon/FormantGrid.h                                  |    40 +-
 fon/FormantGridEditor.cpp                          |   264 +-
 fon/FormantGridEditor.h                            |    11 +-
 fon/FormantGridEditor_prefs.h                      |     7 +-
 fon/FormantGrid_def.h                              |    11 +-
 fon/FormantTier.cpp                                |   160 +-
 fon/FormantTier.h                                  |    26 +-
 fon/FormantTier_def.h                              |    20 +-
 fon/Formant_def.h                                  |     7 +-
 fon/FujisakiPitch.cpp                              |    55 +-
 fon/FujisakiPitch.h                                |    19 +-
 fon/FujisakiPitch_def.h                            |    16 +-
 fon/Function.cpp                                   |     9 +-
 fon/Function.h                                     |     8 +-
 fon/FunctionEditor.cpp                             |   656 +-
 fon/FunctionEditor.h                               |    23 +-
 fon/FunctionEditor_prefs.h                         |     7 +-
 fon/Function_def.h                                 |     9 +-
 fon/Harmonicity.cpp                                |    25 +-
 fon/Harmonicity.h                                  |    16 +-
 fon/Harmonics.h                                    |    18 +-
 fon/Harmonics_def.h                                |     9 +-
 fon/Image.cpp                                      |     7 +-
 fon/Image.h                                        |    10 +-
 fon/Image_def.h                                    |     7 +-
 fon/Intensity.cpp                                  |    48 +-
 fon/Intensity.h                                    |    13 +-
 fon/IntensityTier.cpp                              |    61 +-
 fon/IntensityTier.h                                |    25 +-
 fon/IntensityTierEditor.cpp                        |    19 +-
 fon/IntensityTierEditor.h                          |    11 +-
 fon/Label.cpp                                      |    93 +-
 fon/Label.h                                        |    89 +-
 fon/LongSound.cpp                                  |   176 +-
 fon/LongSound.h                                    |    35 +-
 fon/Ltas.cpp                                       |   123 +-
 fon/Ltas.h                                         |    43 +-
 fon/Ltas_to_SpectrumTier.cpp                       |    14 +-
 fon/Ltas_to_SpectrumTier.h                         |    11 +-
 fon/Manipulation.cpp                               |   335 +-
 fon/Manipulation.h                                 |    40 +-
 fon/ManipulationEditor.cpp                         |   658 +-
 fon/ManipulationEditor.h                           |    19 +-
 fon/ManipulationEditor_enums.h                     |     7 +-
 fon/ManipulationEditor_prefs.h                     |     7 +-
 fon/Manipulation_def.h                             |    44 +-
 fon/Matrix.cpp                                     |   111 +-
 fon/Matrix.h                                       |   116 +-
 fon/Matrix_and_Pitch.cpp                           |    17 +-
 fon/Matrix_and_Pitch.h                             |    13 +-
 fon/Matrix_and_PointProcess.cpp                    |    27 +-
 fon/Matrix_and_PointProcess.h                      |    17 +-
 fon/Matrix_and_Polygon.cpp                         |    27 +-
 fon/Matrix_and_Polygon.h                           |    17 +-
 fon/Matrix_def.h                                   |     7 +-
 fon/Movie.cpp                                      |    32 +-
 fon/Movie.h                                        |    16 +-
 fon/MovieWindow.cpp                                |    73 +-
 fon/MovieWindow.h                                  |    11 +-
 fon/Movie_def.h                                    |    11 +-
 fon/ParamCurve.cpp                                 |    85 +-
 fon/ParamCurve.h                                   |    17 +-
 fon/ParamCurve_def.h                               |    11 +-
 fon/Photo.cpp                                      |    89 +-
 fon/Photo.h                                        |    20 +-
 fon/Photo_def.h                                    |    15 +-
 fon/Pitch.cpp                                      |   121 +-
 fon/Pitch.h                                        |    46 +-
 fon/PitchEditor.cpp                                |   161 +-
 fon/PitchEditor.h                                  |    11 +-
 fon/PitchTier.cpp                                  |    56 +-
 fon/PitchTier.h                                    |    13 +-
 fon/PitchTierEditor.cpp                            |    21 +-
 fon/PitchTierEditor.h                              |    11 +-
 fon/PitchTier_to_PointProcess.cpp                  |    69 +-
 fon/PitchTier_to_PointProcess.h                    |    23 +-
 fon/PitchTier_to_Sound.cpp                         |    62 +-
 fon/PitchTier_to_Sound.h                           |    21 +-
 fon/Pitch_AnyTier_to_PitchTier.cpp                 |    42 +-
 fon/Pitch_AnyTier_to_PitchTier.h                   |    13 +-
 fon/Pitch_Intensity.cpp                            |    75 +-
 fon/Pitch_Intensity.h                              |    15 +-
 fon/Pitch_def.h                                    |     8 +-
 fon/Pitch_enums.h                                  |     7 +-
 fon/Pitch_to_PitchTier.cpp                         |    46 +-
 fon/Pitch_to_PitchTier.h                           |    11 +-
 fon/Pitch_to_PointProcess.cpp                      |    68 +-
 fon/Pitch_to_PointProcess.h                        |    13 +-
 fon/Pitch_to_Sound.cpp                             |    39 +-
 fon/Pitch_to_Sound.h                               |    15 +-
 fon/PointEditor.cpp                                |   122 +-
 fon/PointEditor.h                                  |    15 +-
 fon/PointProcess.cpp                               |   111 +-
 fon/PointProcess.h                                 |    26 +-
 fon/PointProcess_and_Sound.cpp                     |    75 +-
 fon/PointProcess_and_Sound.h                       |    18 +-
 fon/PointProcess_def.h                             |     7 +-
 fon/Polygon.cpp                                    |    17 +-
 fon/Polygon.h                                      |    16 +-
 fon/Polygon_def.h                                  |     9 +-
 fon/Praat_tests.cpp                                |   138 +-
 fon/Praat_tests.h                                  |    18 +-
 fon/Praat_tests_enums.h                            |    43 +-
 fon/RealTier.cpp                                   |   255 +-
 fon/RealTier.h                                     |    32 +-
 fon/RealTierEditor.cpp                             |   192 +-
 fon/RealTierEditor.h                               |    13 +-
 fon/RealTier_def.h                                 |    26 +-
 fon/RunnerMFC.cpp                                  |   234 +-
 fon/RunnerMFC.h                                    |    15 +-
 fon/Sampled.cpp                                    |    49 +-
 fon/Sampled.h                                      |     8 +-
 fon/SampledXY.cpp                                  |    21 +-
 fon/SampledXY.h                                    |     8 +-
 fon/SampledXY_def.h                                |    23 +-
 fon/Sampled_def.h                                  |    19 +-
 fon/Sound.cpp                                      |   217 +-
 fon/Sound.h                                        |   108 +-
 fon/SoundEditor.cpp                                |   138 +-
 fon/SoundEditor.h                                  |    11 +-
 fon/SoundRecorder.cpp                              |   257 +-
 fon/SoundRecorder.h                                |    13 +-
 fon/SoundRecorder_enums.h                          |     7 +-
 fon/SoundRecorder_prefs.h                          |     7 +-
 fon/Sound_PointProcess.cpp                         |    11 +-
 fon/Sound_PointProcess.h                           |    11 +-
 fon/Sound_and_Spectrogram.cpp                      |    25 +-
 fon/Sound_and_Spectrogram.h                        |    13 +-
 fon/Sound_and_Spectrogram_enums.h                  |     7 +-
 fon/Sound_and_Spectrum.cpp                         |    73 +-
 fon/Sound_and_Spectrum.h                           |    23 +-
 fon/Sound_audio.cpp                                |    85 +-
 fon/Sound_enhance.cpp                              |    71 +-
 fon/Sound_enums.h                                  |     7 +-
 fon/Sound_files.cpp                                |    45 +-
 fon/Sound_to_Cochleagram.cpp                       |    87 +-
 fon/Sound_to_Cochleagram.h                         |    13 +-
 fon/Sound_to_Formant.cpp                           |    44 +-
 fon/Sound_to_Formant.h                             |    17 +-
 fon/Sound_to_Harmonicity.cpp                       |    39 +-
 fon/Sound_to_Harmonicity.h                         |    15 +-
 fon/Sound_to_Harmonicity_GNE.cpp                   |    71 +-
 fon/Sound_to_Intensity.cpp                         |    28 +-
 fon/Sound_to_Intensity.h                           |    13 +-
 fon/Sound_to_Pitch.cpp                             |    33 +-
 fon/Sound_to_Pitch.h                               |    19 +-
 fon/Sound_to_PointProcess.cpp                      |    50 +-
 fon/Sound_to_PointProcess.h                        |    23 +-
 fon/Spectrogram.cpp                                |    39 +-
 fon/Spectrogram.h                                  |    15 +-
 fon/SpectrogramEditor.cpp                          |    49 +-
 fon/SpectrogramEditor.h                            |    11 +-
 fon/Spectrum.cpp                                   |   132 +-
 fon/Spectrum.h                                     |    32 +-
 fon/SpectrumEditor.cpp                             |    86 +-
 fon/SpectrumEditor.h                               |    11 +-
 fon/SpectrumTier.cpp                               |    41 +-
 fon/SpectrumTier.h                                 |    15 +-
 fon/Spectrum_and_Spectrogram.cpp                   |    17 +-
 fon/Spectrum_and_Spectrogram.h                     |    15 +-
 fon/Spectrum_def.h                                 |     7 +-
 fon/Spectrum_to_Excitation.cpp                     |    35 +-
 fon/Spectrum_to_Excitation.h                       |    11 +-
 fon/Spectrum_to_Formant.cpp                        |    17 +-
 fon/Spectrum_to_Formant.h                          |    11 +-
 fon/SpellingChecker.cpp                            |    91 +-
 fon/SpellingChecker.h                              |    16 +-
 fon/SpellingChecker_def.h                          |    19 +-
 fon/TextGrid.cpp                                   |   770 +-
 fon/TextGrid.h                                     |    85 +-
 fon/TextGridEditor.cpp                             |   934 +-
 fon/TextGridEditor.h                               |    15 +-
 fon/TextGridEditor_enums.h                         |     7 +-
 fon/TextGridEditor_prefs.h                         |     7 +-
 fon/TextGrid_Sound.cpp                             |   371 +-
 fon/TextGrid_Sound.h                               |    23 +-
 fon/TextGrid_def.h                                 |    48 +-
 fon/TimeSoundAnalysisEditor.cpp                    |   759 +-
 fon/TimeSoundAnalysisEditor.h                      |    50 +-
 fon/TimeSoundAnalysisEditor_enums.h                |     7 +-
 fon/TimeSoundAnalysisEditor_prefs.h                |     7 +-
 fon/TimeSoundEditor.cpp                            |   261 +-
 fon/TimeSoundEditor.h                              |    13 +-
 fon/TimeSoundEditor_enums.h                        |     7 +-
 fon/TimeSoundEditor_prefs.h                        |     7 +-
 fon/Transition.cpp                                 |    43 +-
 fon/Transition.h                                   |    21 +-
 fon/Transition_def.h                               |     9 +-
 fon/Vector.cpp                                     |    21 +-
 fon/Vector.h                                       |     9 +-
 fon/VocalTract.cpp                                 |   197 +-
 fon/VocalTract.h                                   |    19 +-
 fon/VocalTract_to_Spectrum.cpp                     |    11 +-
 fon/VocalTract_to_Spectrum.h                       |    11 +-
 fon/VoiceAnalysis.cpp                              |    40 +-
 fon/VoiceAnalysis.h                                |     7 +-
 fon/WordList.cpp                                   |    27 +-
 fon/WordList.h                                     |    12 +-
 fon/WordList_def.h                                 |    11 +-
 fon/manual_Exp.cpp                                 |     7 +-
 fon/manual_Fon.cpp                                 |    23 +-
 fon/manual_Manual.cpp                              |     7 +-
 fon/manual_Picture.cpp                             |    15 +-
 fon/manual_Sampling.cpp                            |     7 +-
 fon/manual_Script.cpp                              |   291 +-
 fon/manual_annotation.cpp                          |     7 +-
 fon/manual_exampleSound.cpp                        |    33 +-
 fon/manual_exampleSound.h                          |    11 +-
 fon/manual_formant.cpp                             |     7 +-
 fon/manual_glossary.cpp                            |    11 +-
 fon/manual_pitch.cpp                               |     7 +-
 fon/manual_programming.cpp                         |   408 +-
 fon/manual_references.cpp                          |     7 +-
 fon/manual_sound.cpp                               |    99 +-
 fon/manual_soundFiles.cpp                          |     9 +-
 fon/manual_spectrum.cpp                            |   110 +-
 fon/manual_tutorials.cpp                           |   112 +-
 fon/manual_voice.cpp                               |     7 +-
 fon/praat_Exp.cpp                                  |   107 +-
 fon/praat_Fon.cpp                                  |  2836 +-
 fon/praat_Sound_init.cpp                           |  1435 +-
 fon/praat_TextGrid_init.cpp                        |  1026 +-
 gram/Makefile                                      |     4 +-
 gram/Network.cpp                                   |    57 +-
 gram/Network.h                                     |    16 +-
 gram/Network_def.h                                 |    13 +-
 gram/Network_enums.h                               |     7 +-
 gram/OTGrammar.cpp                                 |   342 +-
 gram/OTGrammar.h                                   |    58 +-
 gram/OTGrammarEditor.cpp                           |    86 +-
 gram/OTGrammarEditor.h                             |     9 +-
 gram/OTGrammar_def.h                               |    13 +-
 gram/OTGrammar_enums.h                             |     7 +-
 gram/OTGrammar_ex_NPA.cpp                          |    29 +-
 gram/OTGrammar_ex_NoCoda.cpp                       |    17 +-
 gram/OTGrammar_ex_metrics.cpp                      |    90 +-
 gram/OTGrammar_ex_tongueRoot.cpp                   |    17 +-
 gram/OTMulti.cpp                                   |   102 +-
 gram/OTMulti.h                                     |    18 +-
 gram/OTMultiEditor.cpp                             |    83 +-
 gram/OTMultiEditor.h                               |     9 +-
 gram/OTMulti_def.h                                 |    13 +-
 gram/OTMulti_ex_metrics.cpp                        |    89 +-
 gram/RBM.cpp                                       |   253 +
 gram/RBM.h                                         |    52 +
 gram/RBM_def.h                                     |    44 +
 gram/manual_gram.cpp                               |    69 +-
 gram/praat_gram.cpp                                |   801 +-
 kar/ipaSerifRegularPS.cpp                          |     5 +-
 kar/longchar.cpp                                   |     9 +-
 kar/longchar.h                                     |     7 +-
 main/GNU_General_Public_License.txt                |     2 +-
 main/main_Praat.cpp                                |    57 +-
 makefiles/makefile.defs.cygwin64                   |    25 +
 ...akefile.defs.mingw32 => makefile.defs.darmin32} |     0
 ...akefile.defs.mingw64 => makefile.defs.darmin64} |     0
 makefiles/makefile.defs.linux.pulse                |    23 +
 makefiles/makefile.defs.linuxc.alsa                |    23 -
 makefiles/makefile.defs.linuxs.alsa                |    23 -
 makefiles/makefile.defs.linuxs.pulse               |    23 +
 makefiles/makefile.defs.mingw32                    |    23 +-
 makefiles/makefile.defs.mingw32-490                |    24 -
 makefiles/makefile.defs.mingw32c                   |    24 -
 makefiles/makefile.defs.mingw64                    |    23 +-
 makefiles/makefile.defs.mingw64-490                |    24 -
 makefiles/makefile.defs.mingw64c                   |    24 -
 num/NUM.cpp                                        |    13 +-
 num/NUM.h                                          |    55 +-
 num/NUMarrays.cpp                                  |    69 +-
 num/NUMear.cpp                                     |    13 +-
 num/NUMlinprog.cpp                                 |    18 +-
 num/NUMrandom.cpp                                  |    48 +-
 num/NUMsort.cpp                                    |     7 +-
 stat/Distributions.cpp                             |    47 +-
 stat/Distributions.h                               |    13 +-
 stat/Distributions_and_Strings.cpp                 |    34 +-
 stat/Distributions_and_Strings.h                   |    15 +-
 stat/LogisticRegression.cpp                        |    68 +-
 stat/LogisticRegression.h                          |    12 +-
 stat/LogisticRegression_def.h                      |     7 +-
 stat/PairDistribution.cpp                          |   133 +-
 stat/PairDistribution.h                            |    20 +-
 stat/PairDistribution_def.h                        |    13 +-
 stat/Regression.cpp                                |    55 +-
 stat/Regression.h                                  |    13 +-
 stat/Regression_def.h                              |    13 +-
 stat/Table.cpp                                     |   769 +-
 stat/Table.h                                       |    39 +-
 stat/TableEditor.cpp                               |   197 +-
 stat/TableEditor.h                                 |    21 +-
 sys/winport_off.h => stat/TableEditor_prefs.h      |    21 +-
 stat/TableOfReal.cpp                               |   246 +-
 stat/TableOfReal.h                                 |    47 +-
 stat/TableOfReal_def.h                             |     9 +-
 stat/Table_def.h                                   |    20 +-
 stat/manual_statistics.cpp                         |     7 +-
 stat/praat_Stat.cpp                                |   711 +-
 sys/ButtonEditor.cpp                               |    69 +-
 sys/ButtonEditor.h                                 |     9 +-
 sys/Collection.cpp                                 |   540 +-
 sys/Collection.h                                   |   978 +-
 sys/Data.cpp                                       |   180 +-
 sys/Data.h                                         |   142 +-
 sys/DataEditor.cpp                                 |   248 +-
 sys/DataEditor.h                                   |    17 +-
 sys/DemoEditor.cpp                                 |   303 +-
 sys/DemoEditor.h                                   |    37 +-
 sys/Editor.cpp                                     |   158 +-
 sys/Editor.h                                       |    78 +-
 sys/EditorM.h                                      |    82 +-
 sys/Editor_enums.h                                 |     7 +-
 sys/Editor_prefs.h                                 |     7 +-
 sys/Formula.cpp                                    |   643 +-
 sys/Formula.h                                      |    15 +-
 sys/Graphics.cpp                                   |    51 +-
 sys/Graphics.h                                     |    49 +-
 sys/GraphicsP.h                                    |    33 +-
 sys/GraphicsPostscript.cpp                         |    85 +-
 sys/GraphicsScreen.cpp                             |   442 +-
 sys/Graphics_altitude.cpp                          |    21 +-
 sys/Graphics_colour.cpp                            |   125 +-
 sys/Graphics_enums.h                               |     7 +-
 sys/Graphics_grey.cpp                              |    19 +-
 sys/Graphics_image.cpp                             |    74 +-
 sys/Graphics_linesAndAreas.cpp                     |   135 +-
 sys/Graphics_mouse.cpp                             |    33 +-
 sys/Graphics_record.cpp                            |    31 +-
 sys/Graphics_surface.cpp                           |     7 +-
 sys/Graphics_text.cpp                              |   411 +-
 sys/Graphics_utils.cpp                             |   219 +-
 sys/Gui.cpp                                        |    66 +-
 sys/Gui.h                                          |   292 +-
 sys/GuiButton.cpp                                  |   138 +-
 sys/GuiCheckButton.cpp                             |    92 +-
 sys/GuiControl.cpp                                 |    33 +-
 sys/GuiDialog.cpp                                  |   102 +-
 sys/GuiDrawingArea.cpp                             |   246 +-
 sys/GuiFileSelect.cpp                              |   213 +-
 sys/GuiForm.cpp                                    |    21 +-
 sys/GuiLabel.cpp                                   |    51 +-
 sys/GuiList.cpp                                    |   491 +-
 sys/GuiMenu.cpp                                    |   254 +-
 sys/GuiMenuItem.cpp                                |   188 +-
 sys/GuiObject.cpp                                  |    17 +-
 sys/GuiOptionMenu.cpp                              |    79 +-
 sys/GuiP.h                                         |   409 +-
 sys/GuiProgressBar.cpp                             |    29 +-
 sys/GuiRadioButton.cpp                             |   150 +-
 sys/GuiScale.cpp                                   |    51 +-
 sys/GuiScrollBar.cpp                               |    77 +-
 sys/GuiScrolledWindow.cpp                          |    43 +-
 sys/GuiShell.cpp                                   |    92 +-
 sys/GuiText.cpp                                    |   859 +-
 sys/GuiThing.cpp                                   |    13 +-
 sys/GuiWindow.cpp                                  |   144 +-
 sys/HyperPage.cpp                                  |   313 +-
 sys/HyperPage.h                                    |    23 +-
 sys/HyperPage_prefs.h                              |     7 +-
 sys/InfoEditor.cpp                                 |    60 +-
 sys/InfoEditor.h                                   |     9 +-
 sys/Interpreter.cpp                                |   211 +-
 sys/Interpreter.h                                  |    27 +-
 sys/Interpreter_decl.h                             |    25 -
 sys/ManPage.cpp                                    |     7 +-
 sys/ManPage.h                                      |     7 +-
 sys/ManPage_enums.h                                |     7 +-
 sys/ManPages.cpp                                   |   354 +-
 sys/ManPages.h                                     |    17 +-
 sys/ManPagesM.h                                    |     9 +-
 sys/Manual.cpp                                     |   161 +-
 sys/Manual.h                                       |    11 +-
 sys/MelderThread.h                                 |    37 +-
 sys/Picture.cpp                                    |   187 +-
 sys/Picture.h                                      |    54 +-
 sys/Preferences.cpp                                |    71 +-
 sys/Preferences.h                                  |     7 +-
 sys/Printer.cpp                                    |   246 +-
 sys/Printer.h                                      |    24 +-
 sys/Script.cpp                                     |    15 +-
 sys/Script.h                                       |    11 +-
 sys/ScriptEditor.cpp                               |   175 +-
 sys/ScriptEditor.h                                 |    23 +-
 sys/Simple.cpp                                     |    35 +-
 sys/Simple.h                                       |    21 +-
 sys/Simple_def.h                                   |    15 +-
 sys/Strings.cpp                                    |    48 +-
 sys/StringsEditor.cpp                              |    53 +-
 sys/StringsEditor.h                                |    11 +-
 sys/Strings_.h                                     |    14 +-
 sys/Strings_def.h                                  |     9 +-
 sys/TextEditor.cpp                                 |   265 +-
 sys/TextEditor.h                                   |    17 +-
 sys/TextEditor_prefs.h                             |     7 +-
 sys/Thing.cpp                                      |    57 +-
 sys/Thing.h                                        |   405 +-
 sys/Ui.cpp                                         |   416 +-
 sys/Ui.h                                           |   149 +-
 sys/UiFile.cpp                                     |   106 +-
 sys/UiP.h                                          |     7 +-
 sys/UiPause.cpp                                    |   152 +-
 sys/UiPause.h                                      |     9 +-
 sys/abcio.cpp                                      |   145 +-
 sys/abcio.h                                        |    83 +-
 sys/abcio_enums.h                                  |     7 +-
 sys/complex.cpp                                    |    11 +-
 sys/complex.h                                      |     7 +-
 sys/enums.h                                        |     7 +-
 sys/enums_getText.h                                |     7 +-
 sys/enums_getValue.h                               |     7 +-
 sys/machine.cpp                                    |    34 +-
 sys/machine.h                                      |    21 +-
 sys/macport_off.h                                  |     7 +-
 sys/macport_on.h                                   |     7 +-
 sys/melder.cpp                                     |   366 +-
 sys/melder.h                                       |   318 +-
 sys/melder_alloc.cpp                               |   118 +-
 sys/melder_atof.cpp                                |    39 +-
 sys/melder_audio.cpp                               |   673 +-
 sys/melder_audiofiles.cpp                          |    60 +-
 sys/melder_console.cpp                             |    45 +-
 sys/melder_debug.cpp                               |   345 +-
 sys/melder_enums.h                                 |    53 +-
 sys/melder_error.cpp                               |    13 +-
 sys/melder_files.cpp                               |   165 +-
 sys/melder_ftoa.cpp                                |    74 +-
 sys/melder_info.cpp                                |    21 +-
 sys/melder_quantity.cpp                            |    14 +-
 sys/melder_readtext.cpp                            |    87 +-
 sys/melder_strings.cpp                             |    27 +-
 sys/melder_sysenv.cpp                              |    23 +-
 sys/melder_textencoding.cpp                        |    69 +-
 sys/melder_time.cpp                                |    28 +-
 sys/melder_token.cpp                               |    24 +-
 sys/melder_writetext.cpp                           |   132 +-
 sys/motifEmulator.cpp                              |  3637 +-
 sys/motifEmulator_resources.h                      |     7 +-
 sys/oo.h                                           |    30 +-
 sys/oo_CAN_WRITE_AS_ENCODING.h                     |    20 +-
 sys/oo_COPY.h                                      |    32 +-
 sys/oo_DESCRIPTION.h                               |    20 +-
 sys/oo_DESTROY.h                                   |    19 +-
 sys/oo_EQUAL.h                                     |    24 +-
 sys/oo_READ_BINARY.h                               |    36 +-
 sys/oo_READ_TEXT.h                                 |    32 +-
 sys/oo_WRITE_BINARY.h                              |    28 +-
 sys/oo_WRITE_TEXT.h                                |    46 +-
 sys/oo_undef.h                                     |    12 +-
 sys/praat.cpp                                      |   947 +-
 sys/praat.h                                        |   132 +-
 sys/praatP.h                                       |    32 +-
 sys/praat_actions.cpp                              |   449 +-
 sys/praat_logo.cpp                                 |    59 +-
 sys/praat_menuCommands.cpp                         |   334 +-
 sys/praat_objectMenus.cpp                          |   297 +-
 sys/praat_picture.cpp                              |   650 +-
 sys/praat_script.cpp                               |   102 +-
 sys/praat_script.h                                 |    12 +-
 sys/praat_statistics.cpp                           |    71 +-
 sys/praat_version.h                                |    10 +-
 sys/prefs.h                                        |     7 +-
 sys/prefs_copyToInstance.h                         |     7 +-
 sys/prefs_define.h                                 |     7 +-
 sys/prefs_install.h                                |     7 +-
 sys/sendpraat.c                                    |     4 +-
 sys/sendsocket.c                                   |     7 +-
 sys/sendsocket.h                                   |     7 +-
 sys/site.cpp                                       |    20 +-
 sys/site.h                                         |    11 +-
 sys/winport_off.h                                  |    10 +-
 sys/winport_on.h                                   |    10 +-
 test/dwtools/Discriminant.praat                    |    41 +
 test/dwtools/KlattSlope.praat                      |     3 +-
 test/dwtools/Pols.binary.Discriminant              |   Bin 0 -> 5057 bytes
 test/dwtools/Pols.text.Discriminant                |   389 +
 test/fon Exp/Sounds/M1F1-float32-AFsp.wav          |   Bin 0 -> 188168 bytes
 test/fon Exp/Sounds/again.wav                      |   Bin 0 -> 27688 bytes
 test/fon Exp/Sounds/heed.wav                       |   Bin 0 -> 16016 bytes
 test/fon Exp/Sounds/hid.wav                        |   Bin 0 -> 14866 bytes
 test/fon Exp/Sounds/hood.wav                       |   Bin 0 -> 23258 bytes
 test/fon Exp/Sounds/hud.wav                        |   Bin 0 -> 21716 bytes
 test/fon Exp/Sounds/weSayTheWord.wav               |   Bin 0 -> 25926 bytes
 test/fon Exp/continuousGoodness.ExperimentMFC      |   144 +
 test/fon Exp/csl.ExperimentMFC                     |    35 +
 test/fon Exp/experimentMFC.praat                   |    15 +
 test/fon Exp/hoofdletters.ExperimentMFC            |    43 +
 test/fon Exp/pictures.ExperimentMFC                |    40 +
 test/fon Exp/pictures/paul.jpg                     |   Bin 0 -> 7776 bytes
 test/fon Exp/pictures/silke.jpg                    |   Bin 0 -> 21362 bytes
 test/fon Exp/simplest.ExperimentMFC                |    45 +
 test/fon Exp/simplest_broken.ExperimentMFC         |    45 +
 test/fon Exp/simplest_missing.ExperimentMFC        |    45 +
 test/fon Exp/stereo.ExperimentMFC                  |    38 +
 test/fon Exp/test.ExperimentMFC                    |    33 +
 test/fon Exp/version3.ExperimentMFC                |    32 +
 test/fon Exp/version4.ExperimentMFC                |    50 +
 test/fon Exp/version6.ExperimentMFC                |    53 +
 test/fon/PitchTier.praat                           |    40 +
 test/fon/Spectrum_draw.praat                       |    12 +
 test/fon/TextGrid_Sound_extractIntervals.praat     |    11 +
 test/fon/data.praat                                |   Bin 13494 -> 13492 bytes
 test/fon/endian.praat                              |     1 +
 test/fon/examples/OTGrammar/Infant.OTGrammar       |   198 +
 test/fon/examples/OTGrammar/Infant2.OTGrammar      |   198 +
 .../fon/examples/OTGrammar/Infant_binary.OTGrammar |   Bin 0 -> 3689 bytes
 .../examples/OTGrammar/Infant_binary2.OTGrammar    |   Bin 0 -> 3689 bytes
 test/fon/examples/banner.praat                     |    11 +
 test/fon/examples/example.wav                      |   Bin 0 -> 40958 bytes
 test/fon/examples/sineWithNoise.TextGrid           |    10 +
 test/fon/examples/sounds/aaaa02.nsp                |   Bin 0 -> 1520078 bytes
 test/fon/examples/sounds/aaaa02.wav                |   Bin 0 -> 1520044 bytes
 test/fon/examples/sounds/cl_F1_2b_egg.wav          |   Bin 0 -> 312142 bytes
 .../fon/examples/sounds/elephant calls/27_Ella.wav |   Bin 0 -> 1254122 bytes
 test/fon/texio.praat                               |   Bin 10042 -> 10074 bytes
 test/fon/textioSpeed.praat                         |     3 +-
 test/kar/unicode.praat                             |   Bin 9022 -> 9020 bytes
 .../kar/\303\245b\303\247\303\251\303\274.wav"     |   Bin
 test/manually/Demo_recording_problem.praat         |    36 +
 test/manually/PairDistributions_append.praat       |    44 +
 test/manually/guiTest.praat                        |   Bin 1832 -> 1556 bytes
 test/manually/testCommandLineCalls.praat           |    33 +
 test/menuSpeed.praat                               |    19 +
 test/num/fisherQ.praat                             |     2 +-
 test/num/mathFunctions.praat                       |     4 +-
 test/runAllTests.praat                             |    88 +-
 test/runAllTests_leak.praat                        |   128 +
 test/stat/Table.praat                              |    11 +-
 test/stat/linearRegression.praat                   |    19 +
 test/stat/logisticRegression.praat                 |    11 +-
 test/stat/logisticRegression/rh.LogisticRegression |    17 +
 test/stat/pb.Table                                 | 31944 ++++++++
 test/sys/graphics.praat                            |   Bin 8026 -> 8230 bytes
 test/sys/progress.praat                            |   Bin 786 -> 946 bytes
 test/sys/script2.praat                             |   Bin 3890 -> 4276 bytes
 1050 files changed, 143095 insertions(+), 130064 deletions(-)

diff --git a/EEG/EEG.cpp b/EEG/EEG.cpp
index 9ccb8b0..65656f9 100644
--- a/EEG/EEG.cpp
+++ b/EEG/EEG.cpp
@@ -1,20 +1,19 @@
 /* EEG.cpp
  *
- * Copyright (C) 2011-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2011-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "EEG.h"
@@ -42,12 +41,12 @@
 Thing_implement (EEG, Function, 0);
 
 void structEEG :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", our xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", our xmax, U" seconds");
 	MelderInfo_writeLine (U"   Total duration: ", our xmax - our xmin, U" seconds");
-	if (our sound != NULL) {
+	if (our sound) {
 		MelderInfo_writeLine (U"Time sampling of the signal:");
 		MelderInfo_writeLine (U"   Number of samples: ", our sound -> nx);
 		MelderInfo_writeLine (U"   Sampling period: ", our sound -> dx, U" seconds");
@@ -61,14 +60,14 @@ void structEEG :: v_info () {
 
 void structEEG :: v_shiftX (double xfrom, double xto) {
 	EEG_Parent :: v_shiftX (xfrom, xto);
-	if (our sound    != NULL)  Function_shiftXTo (our sound,    xfrom, xto);
-	if (our textgrid != NULL)  Function_shiftXTo (our textgrid, xfrom, xto);
+	if (our sound   )  Function_shiftXTo (our sound.get(),    xfrom, xto);
+	if (our textgrid)  Function_shiftXTo (our textgrid.get(), xfrom, xto);
 }
 
 void structEEG :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	EEG_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (our sound    != NULL)  our sound    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (our textgrid != NULL)  our textgrid -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our sound   )  our sound    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our textgrid)  our textgrid -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 }
 
 void EEG_init (EEG me, double tmin, double tmax) {
@@ -76,11 +75,11 @@ void EEG_init (EEG me, double tmin, double tmax) {
 	my xmax = tmax;
 }
 
-EEG EEG_create (double tmin, double tmax) {
+autoEEG EEG_create (double tmin, double tmax) {
 	try {
 		autoEEG me = Thing_new (EEG);
-		EEG_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		EEG_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"EEG object not created.");
 	}
@@ -95,7 +94,7 @@ long EEG_getChannelNumber (EEG me, const char32 *channelName) {
 	return 0;
 }
 
-EEG EEG_readFromBdfFile (MelderFile file) {
+autoEEG EEG_readFromBdfFile (MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 		char buffer [81];
@@ -115,7 +114,7 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 		fread (buffer, 1, 44, f); buffer [44] = '\0';
 		trace (U"Version of data format: \"", Melder_peek8to32 (buffer), U"\"");
 		fread (buffer, 1, 8, f); buffer [8] = '\0';
-		long numberOfDataRecords = strtol (buffer, NULL, 10);
+		long numberOfDataRecords = strtol (buffer, nullptr, 10);
 		trace (U"Number of data records: ", numberOfDataRecords);
 		fread (buffer, 1, 8, f); buffer [8] = '\0';
 		double durationOfDataRecord = atof (buffer);
@@ -198,7 +197,7 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 		for (long record = 1; record <= numberOfDataRecords; record ++) {
 			for (long channel = 1; channel <= numberOfChannels; channel ++) {
 				double factor = channel == numberOfChannels ? 1.0 : physicalMinimum [channel] / digitalMinimum [channel];
-				if (channel < numberOfChannels - EEG_getNumberOfExtraSensors (him.peek())) factor /= 1000000.0;
+				if (channel < numberOfChannels - EEG_getNumberOfExtraSensors (him.get())) factor /= 1000000.0;
 				if (is24bit) {
 					fread (& dataBuffer [0], 3, numberOfSamplesPerDataRecord, f);
 					unsigned char *p = & dataBuffer [0];
@@ -233,7 +232,7 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 		}
 		autoTextGrid thee;
 		if (hasLetters) {
-			thee.reset (TextGrid_create (0, duration, U"Mark Trigger", U"Mark Trigger"));
+			thee = TextGrid_create (0, duration, U"Mark Trigger", U"Mark Trigger");
 			autoMelderString letters;
 			double time = NUMundefined;
 			for (long i = 1; i <= my nx; i ++) {
@@ -247,7 +246,7 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 						if (letters. string [0] == U'+') {
 							if (NUMdefined (time)) {
 								try {
-									TextGrid_insertPoint (thee.peek(), 1, time, U"");
+									TextGrid_insertPoint (thee.get(), 1, time, U"");
 								} catch (MelderError) {
 									Melder_throw (U"Did not insert empty mark (", letters. string, U") on Mark tier.");
 								}
@@ -262,13 +261,13 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 							try {
 								if (Melder_nequ (letters. string, U"Trigger-", 8)) {
 									try {
-										TextGrid_insertPoint (thee.peek(), 2, time, & letters. string [8]);
+										TextGrid_insertPoint (thee.get(), 2, time, & letters. string [8]);
 									} catch (MelderError) {
 										Melder_clearError ();
 										trace (U"Duplicate trigger at ", time, U" seconds: ", & letters. string [8]);
 									}
 								} else {
-									TextGrid_insertPoint (thee.peek(), 1, time, & letters. string [0]);
+									TextGrid_insertPoint (thee.get(), 1, time, & letters. string [0]);
 								}
 							} catch (MelderError) {
 								Melder_throw (U"Did not insert mark (", letters. string, U") on Trigger tier.");
@@ -280,132 +279,132 @@ EEG EEG_readFromBdfFile (MelderFile file) {
 				}
 			}
 			if (NUMdefined (time)) {
-				TextGrid_insertPoint (thee.peek(), 1, time, U"");
+				TextGrid_insertPoint (thee.get(), 1, time, U"");
 				time = NUMundefined;   // defensive
 			}
 		} else {
-			thee.reset (TextGrid_create (0, duration,
-				numberOfStatusBits == 8 ? U"S1 S2 S3 S4 S5 S6 S7 S8" : U"S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16", U""));
+			thee = TextGrid_create (0, duration,
+				numberOfStatusBits == 8 ? U"S1 S2 S3 S4 S5 S6 S7 S8" : U"S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16", U"");
 			for (int bit = 1; bit <= numberOfStatusBits; bit ++) {
 				unsigned long bitValue = 1 << (bit - 1);
-				IntervalTier tier = (IntervalTier) thy tiers -> item [bit];
+				IntervalTier tier = (IntervalTier) thy tiers->at [bit];
 				for (long i = 1; i <= my nx; i ++) {
 					unsigned long previousValue = i == 1 ? 0 : (long) my z [numberOfChannels] [i - 1];
 					unsigned long thisValue = (long) my z [numberOfChannels] [i];
 					if ((thisValue & bitValue) != (previousValue & bitValue)) {
 						double time = i == 1 ? 0.0 : my x1 + (i - 1.5) * my dx;
 						if (time != 0.0)
-							TextGrid_insertBoundary (thee.peek(), bit, time);
+							TextGrid_insertBoundary (thee.get(), bit, time);
 						if ((thisValue & bitValue) != 0)
-							TextGrid_setIntervalText (thee.peek(), bit, tier -> intervals -> size, U"1");
+							TextGrid_setIntervalText (thee.get(), bit, tier -> intervals.size, U"1");
 					}
 				}
 			}
 		}
 		f.close (file);
 		his channelNames = channelNames.transfer();
-		his sound = me.transfer();
-		his textgrid = thee.transfer();
-		if (EEG_getNumberOfCapElectrodes (him.peek()) == 32) {
-			EEG_setChannelName (him.peek(), 1, U"Fp1");
-			EEG_setChannelName (him.peek(), 2, U"AF3");
-			EEG_setChannelName (him.peek(), 3, U"F7");
-			EEG_setChannelName (him.peek(), 4, U"F3");
-			EEG_setChannelName (him.peek(), 5, U"FC1");
-			EEG_setChannelName (him.peek(), 6, U"FC5");
-			EEG_setChannelName (him.peek(), 7, U"T7");
-			EEG_setChannelName (him.peek(), 8, U"C3");
-			EEG_setChannelName (him.peek(), 9, U"CP1");
-			EEG_setChannelName (him.peek(), 10, U"CP5");
-			EEG_setChannelName (him.peek(), 11, U"P7");
-			EEG_setChannelName (him.peek(), 12, U"P3");
-			EEG_setChannelName (him.peek(), 13, U"Pz");
-			EEG_setChannelName (him.peek(), 14, U"PO3");
-			EEG_setChannelName (him.peek(), 15, U"O1");
-			EEG_setChannelName (him.peek(), 16, U"Oz");
-			EEG_setChannelName (him.peek(), 17, U"O2");
-			EEG_setChannelName (him.peek(), 18, U"PO4");
-			EEG_setChannelName (him.peek(), 19, U"P4");
-			EEG_setChannelName (him.peek(), 20, U"P8");
-			EEG_setChannelName (him.peek(), 21, U"CP6");
-			EEG_setChannelName (him.peek(), 22, U"CP2");
-			EEG_setChannelName (him.peek(), 23, U"C4");
-			EEG_setChannelName (him.peek(), 24, U"T8");
-			EEG_setChannelName (him.peek(), 25, U"FC6");
-			EEG_setChannelName (him.peek(), 26, U"FC2");
-			EEG_setChannelName (him.peek(), 27, U"F4");
-			EEG_setChannelName (him.peek(), 28, U"F8");
-			EEG_setChannelName (him.peek(), 29, U"AF4");
-			EEG_setChannelName (him.peek(), 30, U"Fp2");
-			EEG_setChannelName (him.peek(), 31, U"Fz");
-			EEG_setChannelName (him.peek(), 32, U"Cz");
-		} else if (EEG_getNumberOfCapElectrodes (him.peek()) == 64) {
-			EEG_setChannelName (him.peek(), 1, U"Fp1");
-			EEG_setChannelName (him.peek(), 2, U"AF7");
-			EEG_setChannelName (him.peek(), 3, U"AF3");
-			EEG_setChannelName (him.peek(), 4, U"F1");
-			EEG_setChannelName (him.peek(), 5, U"F3");
-			EEG_setChannelName (him.peek(), 6, U"F5");
-			EEG_setChannelName (him.peek(), 7, U"F7");
-			EEG_setChannelName (him.peek(), 8, U"FT7");
-			EEG_setChannelName (him.peek(), 9, U"FC5");
-			EEG_setChannelName (him.peek(), 10, U"FC3");
-			EEG_setChannelName (him.peek(), 11, U"FC1");
-			EEG_setChannelName (him.peek(), 12, U"C1");
-			EEG_setChannelName (him.peek(), 13, U"C3");
-			EEG_setChannelName (him.peek(), 14, U"C5");
-			EEG_setChannelName (him.peek(), 15, U"T7");
-			EEG_setChannelName (him.peek(), 16, U"TP7");
-			EEG_setChannelName (him.peek(), 17, U"CP5");
-			EEG_setChannelName (him.peek(), 18, U"CP3");
-			EEG_setChannelName (him.peek(), 19, U"CP1");
-			EEG_setChannelName (him.peek(), 20, U"P1");
-			EEG_setChannelName (him.peek(), 21, U"P3");
-			EEG_setChannelName (him.peek(), 22, U"P5");
-			EEG_setChannelName (him.peek(), 23, U"P7");
-			EEG_setChannelName (him.peek(), 24, U"P9");
-			EEG_setChannelName (him.peek(), 25, U"PO7");
-			EEG_setChannelName (him.peek(), 26, U"PO3");
-			EEG_setChannelName (him.peek(), 27, U"O1");
-			EEG_setChannelName (him.peek(), 28, U"Iz");
-			EEG_setChannelName (him.peek(), 29, U"Oz");
-			EEG_setChannelName (him.peek(), 30, U"POz");
-			EEG_setChannelName (him.peek(), 31, U"Pz");
-			EEG_setChannelName (him.peek(), 32, U"CPz");
-			EEG_setChannelName (him.peek(), 33, U"Fpz");
-			EEG_setChannelName (him.peek(), 34, U"Fp2");
-			EEG_setChannelName (him.peek(), 35, U"AF8");
-			EEG_setChannelName (him.peek(), 36, U"AF4");
-			EEG_setChannelName (him.peek(), 37, U"AFz");
-			EEG_setChannelName (him.peek(), 38, U"Fz");
-			EEG_setChannelName (him.peek(), 39, U"F2");
-			EEG_setChannelName (him.peek(), 40, U"F4");
-			EEG_setChannelName (him.peek(), 41, U"F6");
-			EEG_setChannelName (him.peek(), 42, U"F8");
-			EEG_setChannelName (him.peek(), 43, U"FT8");
-			EEG_setChannelName (him.peek(), 44, U"FC6");
-			EEG_setChannelName (him.peek(), 45, U"FC4");
-			EEG_setChannelName (him.peek(), 46, U"FC2");
-			EEG_setChannelName (him.peek(), 47, U"FCz");
-			EEG_setChannelName (him.peek(), 48, U"Cz");
-			EEG_setChannelName (him.peek(), 49, U"C2");
-			EEG_setChannelName (him.peek(), 50, U"C4");
-			EEG_setChannelName (him.peek(), 51, U"C6");
-			EEG_setChannelName (him.peek(), 52, U"T8");
-			EEG_setChannelName (him.peek(), 53, U"TP8");
-			EEG_setChannelName (him.peek(), 54, U"CP6");
-			EEG_setChannelName (him.peek(), 55, U"CP4");
-			EEG_setChannelName (him.peek(), 56, U"CP2");
-			EEG_setChannelName (him.peek(), 57, U"P2");
-			EEG_setChannelName (him.peek(), 58, U"P4");
-			EEG_setChannelName (him.peek(), 59, U"P6");
-			EEG_setChannelName (him.peek(), 60, U"P8");
-			EEG_setChannelName (him.peek(), 61, U"P10");
-			EEG_setChannelName (him.peek(), 62, U"PO8");
-			EEG_setChannelName (him.peek(), 63, U"PO4");
-			EEG_setChannelName (him.peek(), 64, U"O2");
+		his sound = me.move();
+		his textgrid = thee.move();
+		if (EEG_getNumberOfCapElectrodes (him.get()) == 32) {
+			EEG_setChannelName (him.get(), 1, U"Fp1");
+			EEG_setChannelName (him.get(), 2, U"AF3");
+			EEG_setChannelName (him.get(), 3, U"F7");
+			EEG_setChannelName (him.get(), 4, U"F3");
+			EEG_setChannelName (him.get(), 5, U"FC1");
+			EEG_setChannelName (him.get(), 6, U"FC5");
+			EEG_setChannelName (him.get(), 7, U"T7");
+			EEG_setChannelName (him.get(), 8, U"C3");
+			EEG_setChannelName (him.get(), 9, U"CP1");
+			EEG_setChannelName (him.get(), 10, U"CP5");
+			EEG_setChannelName (him.get(), 11, U"P7");
+			EEG_setChannelName (him.get(), 12, U"P3");
+			EEG_setChannelName (him.get(), 13, U"Pz");
+			EEG_setChannelName (him.get(), 14, U"PO3");
+			EEG_setChannelName (him.get(), 15, U"O1");
+			EEG_setChannelName (him.get(), 16, U"Oz");
+			EEG_setChannelName (him.get(), 17, U"O2");
+			EEG_setChannelName (him.get(), 18, U"PO4");
+			EEG_setChannelName (him.get(), 19, U"P4");
+			EEG_setChannelName (him.get(), 20, U"P8");
+			EEG_setChannelName (him.get(), 21, U"CP6");
+			EEG_setChannelName (him.get(), 22, U"CP2");
+			EEG_setChannelName (him.get(), 23, U"C4");
+			EEG_setChannelName (him.get(), 24, U"T8");
+			EEG_setChannelName (him.get(), 25, U"FC6");
+			EEG_setChannelName (him.get(), 26, U"FC2");
+			EEG_setChannelName (him.get(), 27, U"F4");
+			EEG_setChannelName (him.get(), 28, U"F8");
+			EEG_setChannelName (him.get(), 29, U"AF4");
+			EEG_setChannelName (him.get(), 30, U"Fp2");
+			EEG_setChannelName (him.get(), 31, U"Fz");
+			EEG_setChannelName (him.get(), 32, U"Cz");
+		} else if (EEG_getNumberOfCapElectrodes (him.get()) == 64) {
+			EEG_setChannelName (him.get(), 1, U"Fp1");
+			EEG_setChannelName (him.get(), 2, U"AF7");
+			EEG_setChannelName (him.get(), 3, U"AF3");
+			EEG_setChannelName (him.get(), 4, U"F1");
+			EEG_setChannelName (him.get(), 5, U"F3");
+			EEG_setChannelName (him.get(), 6, U"F5");
+			EEG_setChannelName (him.get(), 7, U"F7");
+			EEG_setChannelName (him.get(), 8, U"FT7");
+			EEG_setChannelName (him.get(), 9, U"FC5");
+			EEG_setChannelName (him.get(), 10, U"FC3");
+			EEG_setChannelName (him.get(), 11, U"FC1");
+			EEG_setChannelName (him.get(), 12, U"C1");
+			EEG_setChannelName (him.get(), 13, U"C3");
+			EEG_setChannelName (him.get(), 14, U"C5");
+			EEG_setChannelName (him.get(), 15, U"T7");
+			EEG_setChannelName (him.get(), 16, U"TP7");
+			EEG_setChannelName (him.get(), 17, U"CP5");
+			EEG_setChannelName (him.get(), 18, U"CP3");
+			EEG_setChannelName (him.get(), 19, U"CP1");
+			EEG_setChannelName (him.get(), 20, U"P1");
+			EEG_setChannelName (him.get(), 21, U"P3");
+			EEG_setChannelName (him.get(), 22, U"P5");
+			EEG_setChannelName (him.get(), 23, U"P7");
+			EEG_setChannelName (him.get(), 24, U"P9");
+			EEG_setChannelName (him.get(), 25, U"PO7");
+			EEG_setChannelName (him.get(), 26, U"PO3");
+			EEG_setChannelName (him.get(), 27, U"O1");
+			EEG_setChannelName (him.get(), 28, U"Iz");
+			EEG_setChannelName (him.get(), 29, U"Oz");
+			EEG_setChannelName (him.get(), 30, U"POz");
+			EEG_setChannelName (him.get(), 31, U"Pz");
+			EEG_setChannelName (him.get(), 32, U"CPz");
+			EEG_setChannelName (him.get(), 33, U"Fpz");
+			EEG_setChannelName (him.get(), 34, U"Fp2");
+			EEG_setChannelName (him.get(), 35, U"AF8");
+			EEG_setChannelName (him.get(), 36, U"AF4");
+			EEG_setChannelName (him.get(), 37, U"AFz");
+			EEG_setChannelName (him.get(), 38, U"Fz");
+			EEG_setChannelName (him.get(), 39, U"F2");
+			EEG_setChannelName (him.get(), 40, U"F4");
+			EEG_setChannelName (him.get(), 41, U"F6");
+			EEG_setChannelName (him.get(), 42, U"F8");
+			EEG_setChannelName (him.get(), 43, U"FT8");
+			EEG_setChannelName (him.get(), 44, U"FC6");
+			EEG_setChannelName (him.get(), 45, U"FC4");
+			EEG_setChannelName (him.get(), 46, U"FC2");
+			EEG_setChannelName (him.get(), 47, U"FCz");
+			EEG_setChannelName (him.get(), 48, U"Cz");
+			EEG_setChannelName (him.get(), 49, U"C2");
+			EEG_setChannelName (him.get(), 50, U"C4");
+			EEG_setChannelName (him.get(), 51, U"C6");
+			EEG_setChannelName (him.get(), 52, U"T8");
+			EEG_setChannelName (him.get(), 53, U"TP8");
+			EEG_setChannelName (him.get(), 54, U"CP6");
+			EEG_setChannelName (him.get(), 55, U"CP4");
+			EEG_setChannelName (him.get(), 56, U"CP2");
+			EEG_setChannelName (him.get(), 57, U"P2");
+			EEG_setChannelName (him.get(), 58, U"P4");
+			EEG_setChannelName (him.get(), 59, U"P6");
+			EEG_setChannelName (him.get(), 60, U"P8");
+			EEG_setChannelName (him.get(), 61, U"P10");
+			EEG_setChannelName (him.get(), 62, U"PO8");
+			EEG_setChannelName (him.get(), 63, U"PO4");
+			EEG_setChannelName (him.get(), 64, U"O2");
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"BDF file not read.");
 	}
@@ -435,14 +434,14 @@ void EEG_filter (EEG me, double lowFrequency, double lowWidth, double highFreque
 	NUMfft_Table_init (& fftTable, nsampFFT);
 */
 		for (long ichan = 1; ichan <= my numberOfChannels - EEG_getNumberOfExtraSensors (me); ichan ++) {
-			autoSound channel = Sound_extractChannel (my sound, ichan);
-			autoSpectrum spec = Sound_to_Spectrum (channel.peek(), TRUE);
-			Spectrum_passHannBand (spec.peek(), lowFrequency, 0.0, lowWidth);
-			Spectrum_passHannBand (spec.peek(), 0.0, highFrequency, highWidth);
+			autoSound channel = Sound_extractChannel (my sound.get(), ichan);
+			autoSpectrum spec = Sound_to_Spectrum (channel.get(), true);
+			Spectrum_passHannBand (spec.get(), lowFrequency, 0.0, lowWidth);
+			Spectrum_passHannBand (spec.get(), 0.0, highFrequency, highWidth);
 			if (doNotch50Hz) {
-				Spectrum_stopHannBand (spec.peek(), 48.0, 52.0, 1.0);
+				Spectrum_stopHannBand (spec.get(), 48.0, 52.0, 1.0);
 			}
-			autoSound him = Spectrum_to_Sound (spec.peek());
+			autoSound him = Spectrum_to_Sound (spec.get());
 			NUMvector_copyElements (his z [1], my sound -> z [ichan], 1, my sound -> nx);
 		}
 	} catch (MelderError) {
@@ -537,15 +536,15 @@ void EEG_setChannelToZero (EEG me, const char32 *channelName) {
 
 void EEG_removeTriggers (EEG me, int which_Melder_STRING, const char32 *criterion) {
 	try {
-		if (my textgrid -> numberOfTiers () < 2 || ! Melder_equ (my textgrid -> tier (2) -> name, U"Trigger"))
+		if (my textgrid -> tiers->size < 2 || ! Melder_equ (my textgrid -> tiers->at [2] -> name, U"Trigger"))
 			Melder_throw (me, U" does not have a Trigger channel.");
-		TextGrid_removePoints (my textgrid, 2, which_Melder_STRING, criterion);
+		TextGrid_removePoints (my textgrid.get(), 2, which_Melder_STRING, criterion);
 	} catch (MelderError) {
 		Melder_throw (me, U": triggers not removed.");
 	}
 }
 
-EEG EEG_extractChannel (EEG me, long channelNumber) {
+autoEEG EEG_extractChannel (EEG me, long channelNumber) {
 	try {
 		if (channelNumber < 1 || channelNumber > my numberOfChannels)
 			Melder_throw (U"No channel ", channelNumber, U".");
@@ -553,15 +552,15 @@ EEG EEG_extractChannel (EEG me, long channelNumber) {
 		thy numberOfChannels = 1;
 		thy channelNames = NUMvector <char32 *> (1, 1);
 		thy channelNames [1] = Melder_dup (my channelNames [1]);
-		thy sound = Sound_extractChannel (my sound, channelNumber);
-		thy textgrid = Data_copy (my textgrid);
-		return thee.transfer();
+		thy sound = Sound_extractChannel (my sound.get(), channelNumber);
+		thy textgrid = Data_copy (my textgrid.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": channel ", channelNumber, U" not extracted.");
 	}
 }
 
-EEG EEG_extractChannel (EEG me, const char32 *channelName) {
+autoEEG EEG_extractChannel (EEG me, const char32 *channelName) {
 	try {
 		long channelNumber = EEG_getChannelNumber (me, channelName);
 		if (channelNumber == 0)
@@ -572,15 +571,15 @@ EEG EEG_extractChannel (EEG me, const char32 *channelName) {
 	}
 }
 
-EEG EEGs_concatenate (Collection me) {
+autoEEG EEGs_concatenate (OrderedOf<structEEG>* me) {
 	try {
 		if (my size < 1)
 			Melder_throw (U"Cannot concatenate zero EEG objects.");
-		EEG first = (EEG) my item [1];
+		EEG first = my at [1];
 		long numberOfChannels = first -> numberOfChannels;
 		char32 **channelNames = first -> channelNames;
 		for (long ieeg = 2; ieeg <= my size; ieeg ++) {
-			EEG other = (EEG) my item [ieeg];
+			EEG other = my at [ieeg];
 			if (other -> numberOfChannels != numberOfChannels)
 				Melder_throw (U"The number of channels of ", other, U" does not match the number of channels of ", first, U".");
 			for (long ichan = 1; ichan <= numberOfChannels; ichan ++) {
@@ -588,14 +587,12 @@ EEG EEGs_concatenate (Collection me) {
 					Melder_throw (U"Channel ", ichan, U" has a different name in ", other, U" (", other -> channelNames [ichan], U") than in ", first, U" (", channelNames [ichan], U").");
 			}
 		}
-		autoOrdered soundCollection = Ordered_create ();
-		Collection_dontOwnItems (soundCollection.peek());
-		autoOrdered textgridCollection = Ordered_create ();
-		Collection_dontOwnItems (textgridCollection.peek());
+		OrderedOf<structSound> soundList;
+		OrderedOf<structTextGrid> textgridList;
 		for (long ieeg = 1; ieeg <= my size; ieeg ++) {
-			EEG eeg = (EEG) my item [ieeg];
-			Collection_addItem (soundCollection.peek(), eeg -> sound);
-			Collection_addItem (textgridCollection.peek(), eeg -> textgrid);
+			EEG eeg = my at [ieeg];
+			soundList. addItem_ref (eeg -> sound.get());
+			textgridList. addItem_ref (eeg -> textgrid.get());
 		}
 		autoEEG thee = Thing_new (EEG);
 		thy numberOfChannels = numberOfChannels;
@@ -603,17 +600,17 @@ EEG EEGs_concatenate (Collection me) {
 		for (long ichan = 1; ichan <= numberOfChannels; ichan ++) {
 			thy channelNames [ichan] = Melder_dup (channelNames [ichan]);
 		}
-		thy sound = Sounds_concatenate_e (soundCollection.peek(), 0.0);
-		thy textgrid = TextGrids_concatenate (textgridCollection.peek());
+		thy sound = Sounds_concatenate (soundList, 0.0);
+		thy textgrid = TextGrids_concatenate (& textgridList);
 		thy xmin = thy textgrid -> xmin;
 		thy xmax = thy textgrid -> xmax;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrids not concatenated.");
 	}
 }
 
-EEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes) {
+autoEEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes) {
 	try {
 		autoEEG thee = Thing_new (EEG);
 		thy numberOfChannels = my numberOfChannels;
@@ -621,11 +618,11 @@ EEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes) {
 		for (long ichan = 1; ichan <= my numberOfChannels; ichan ++) {
 			thy channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
-		thy sound = Sound_extractPart (my sound, tmin, tmax, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
-		thy textgrid = TextGrid_extractPart (my textgrid, tmin, tmax, preserveTimes);
+		thy sound = Sound_extractPart (my sound.get(), tmin, tmax, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
+		thy textgrid = TextGrid_extractPart (my textgrid.get(), tmin, tmax, preserveTimes);
 		thy xmin = thy textgrid -> xmin;
 		thy xmax = thy textgrid -> xmax;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": part not extracted.");
 	}
@@ -633,24 +630,22 @@ EEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes) {
 
 void EEG_replaceTextGrid (EEG me, TextGrid textgrid) {
 	try {
-		autoTextGrid textgrid2 = Data_copy (textgrid);
-		forget (my textgrid);
-		my textgrid = textgrid2.transfer();
+		my textgrid = Data_copy (textgrid);
 	} catch (MelderError) {
 		Melder_throw (me, U": TextGrid not replaced with ", textgrid, U".");
 	}
 }
 
-MixingMatrix EEG_to_MixingMatrix (EEG me, long maxNumberOfIterations, double tol, int method) {
+autoMixingMatrix EEG_to_MixingMatrix (EEG me, long maxNumberOfIterations, double tol, int method) {
 	try {
-		autoCrossCorrelationTables tables = Sound_to_CrossCorrelationTables (my sound, 0.0, 0.0, 0.002, 1);
+		autoCrossCorrelationTableList tables = Sound_to_CrossCorrelationTableList (my sound.get(), 0.0, 0.0, 0.002, 1);
 		autoMixingMatrix thee = MixingMatrix_create (my sound -> ny, my sound -> ny);
 		for (long ichan = 1; ichan <= my numberOfChannels; ichan ++) {
-			TableOfReal_setRowLabel (thee.peek(), ichan, my channelNames [ichan]);
-			TableOfReal_setColumnLabel (thee.peek(), ichan, Melder_cat (U"ic", ichan));
+			TableOfReal_setRowLabel (thee.get(), ichan, my channelNames [ichan]);
+			TableOfReal_setColumnLabel (thee.get(), ichan, Melder_cat (U"ic", ichan));
 		}
-		MixingMatrix_and_CrossCorrelationTables_improveUnmixing (thee.peek(), tables.peek(), maxNumberOfIterations, tol, method);
-		return thee.transfer();
+		MixingMatrix_and_CrossCorrelationTableList_improveUnmixing (thee.get(), tables.get(), maxNumberOfIterations, tol, method);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MixingMatrix created.");
 	}
diff --git a/EEG/EEG.h b/EEG/EEG.h
index e3314ab..4f8395c 100644
--- a/EEG/EEG.h
+++ b/EEG/EEG.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2011-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -24,13 +23,12 @@
 #include "../dwtools/ICA.h"
 
 #include "EEG_def.h"
-oo_CLASS_CREATE (EEG, Function);
 
-EEG EEG_create (double tmin, double tmax);
+autoEEG EEG_create (double tmin, double tmax);
 
-EEG EEG_readFromBdfFile (MelderFile file);
+autoEEG EEG_readFromBdfFile (MelderFile file);
 
-EEG EEGs_concatenate (Collection me);
+autoEEG EEGs_concatenate (OrderedOf<structEEG>* me);
 
 void EEG_init (EEG me, double tmin, double tmax);
 long EEG_getChannelNumber (EEG me, const char32 *channelName);
@@ -53,13 +51,13 @@ void EEG_subtractMeanChannel (EEG me, long fromChannel, long toChannel);
 void EEG_setChannelToZero (EEG me, long channelNumber);
 void EEG_setChannelToZero (EEG me, const char32 *channelName);
 void EEG_removeTriggers (EEG me, int which_Melder_STRING, const char32 *criterion);
-EEG EEG_extractChannel (EEG me, long channelNumber);
-EEG EEG_extractChannel (EEG me, const char32 *channelName);
-static inline Sound EEG_extractSound (EEG me) { return Data_copy (my sound); }
-static inline TextGrid EEG_extractTextGrid (EEG me) { return Data_copy (my textgrid); }
-EEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes);
+autoEEG EEG_extractChannel (EEG me, long channelNumber);
+autoEEG EEG_extractChannel (EEG me, const char32 *channelName);
+static inline autoSound EEG_extractSound (EEG me) { return Data_copy (my sound.get()); }
+static inline autoTextGrid EEG_extractTextGrid (EEG me) { return Data_copy (my textgrid.get()); }
+autoEEG EEG_extractPart (EEG me, double tmin, double tmax, bool preserveTimes);
 void EEG_replaceTextGrid (EEG me, TextGrid textgrid);
-MixingMatrix EEG_to_MixingMatrix (EEG me, long maxNumberOfIterations, double tol, int method);
+autoMixingMatrix EEG_to_MixingMatrix (EEG me, long maxNumberOfIterations, double tol, int method);
 
 /* End of file EEG.h */
 #endif
diff --git a/EEG/EEGWindow.cpp b/EEG/EEGWindow.cpp
index ca8ab16..e7a9b51 100644
--- a/EEG/EEGWindow.cpp
+++ b/EEG/EEGWindow.cpp
@@ -1,20 +1,19 @@
 /* EEGWindow.cpp
  *
- * Copyright (C) 2011-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2011-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "EEGWindow.h"
@@ -29,7 +28,7 @@ Thing_implement (EEGWindow, TextGridEditor, 0);
 #include "prefs_copyToInstance.h"
 #include "EEGWindow_prefs.h"
 
-static void menu_cb_EEGWindowHelp (EDITOR_ARGS) { EDITOR_IAM (EEGWindow); Melder_help (U"EEG window"); }
+static void menu_cb_EEGWindowHelp (EEGWindow, EDITOR_ARGS_DIRECT) { Melder_help (U"EEG window"); }
 
 void structEEGWindow :: v_createMenus () {
 	EEGWindow_Parent :: v_createMenus ();
@@ -41,22 +40,20 @@ void structEEGWindow :: v_createHelpMenuItems (EditorMenu menu) {
 }
 
 const char32 * structEEGWindow :: v_getChannelName (long channelNumber) {
-	Melder_assert (our eeg != NULL);
+	Melder_assert (our eeg != nullptr);
 	return our eeg -> channelNames [channelNumber];
 }
 
-static void menu_cb_ExtractSelectedEEG_preserveTimes (EDITOR_ARGS) {
-	EDITOR_IAM (EEGWindow);
+static void menu_cb_ExtractSelectedEEG_preserveTimes (EEGWindow me, EDITOR_ARGS_DIRECT) {
 	if (my d_endSelection <= my d_startSelection) Melder_throw (U"No selection.");
 	autoEEG extract = EEG_extractPart (my eeg, my d_startSelection, my d_endSelection, true);
-	Editor_broadcastPublication (me, extract.transfer());
+	Editor_broadcastPublication (me, extract.move());
 }
 
-static void menu_cb_ExtractSelectedEEG_timeFromZero (EDITOR_ARGS) {
-	EDITOR_IAM (EEGWindow);
+static void menu_cb_ExtractSelectedEEG_timeFromZero (EEGWindow me, EDITOR_ARGS_DIRECT) {
 	if (my d_endSelection <= my d_startSelection) Melder_throw (U"No selection.");
 	autoEEG extract = EEG_extractPart (my eeg, my d_startSelection, my d_endSelection, false);
-	Editor_broadcastPublication (me, extract.transfer());
+	Editor_broadcastPublication (me, extract.move());
 }
 
 void structEEGWindow :: v_createMenuItems_file_extract (EditorMenu menu) {
@@ -75,14 +72,14 @@ void structEEGWindow :: v_updateMenuItems_file () {
 
 void EEGWindow_init (EEGWindow me, const char32 *title, EEG eeg) {
 	my eeg = eeg;   // before initing, because initing will already draw!
-	TextGridEditor_init (me, title, eeg -> textgrid, eeg -> sound, false, NULL, NULL);
+	TextGridEditor_init (me, title, eeg -> textgrid.get(), eeg -> sound.get(), false, nullptr, nullptr);
 }
 
-EEGWindow EEGWindow_create (const char32 *title, EEG eeg) {
+autoEEGWindow EEGWindow_create (const char32 *title, EEG eeg) {
 	try {
 		autoEEGWindow me = Thing_new (EEGWindow);
-		EEGWindow_init (me.peek(), title, eeg);
-		return me.transfer();
+		EEGWindow_init (me.get(), title, eeg);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"EEG window not created.");
 	}
diff --git a/EEG/EEGWindow.h b/EEG/EEGWindow.h
index 06d51a7..8fa3327 100644
--- a/EEG/EEGWindow.h
+++ b/EEG/EEGWindow.h
@@ -4,25 +4,24 @@
  *
  * Copyright (C) 2011-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextGridEditor.h"
 #include "EEG.h"
 
-Thing_define (EEGWindow, TextGridEditor) { public:
+Thing_define (EEGWindow, TextGridEditor) {
 	EEG eeg;
 	GuiMenuItem extractSelectedEEGPreserveTimesButton, extractSelectedEEGTimeFromZeroButton;
 
@@ -50,7 +49,7 @@ Thing_define (EEGWindow, TextGridEditor) { public:
 
 void EEGWindow_init (EEGWindow me, const char32 *title, EEG eeg);
 
-EEGWindow EEGWindow_create (const char32 *title, EEG eeg);
+autoEEGWindow EEGWindow_create (const char32 *title, EEG eeg);
 
 /* End of file EEGWindow.h */
 #endif
diff --git a/EEG/EEGWindow_prefs.h b/EEG/EEGWindow_prefs.h
index 0ba45f6..848898d 100644
--- a/EEG/EEGWindow_prefs.h
+++ b/EEG/EEGWindow_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (EEGWindow)
diff --git a/EEG/EEG_def.h b/EEG/EEG_def.h
index 7708ebb..6cfa4f5 100644
--- a/EEG/EEG_def.h
+++ b/EEG/EEG_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -23,8 +22,8 @@ oo_DEFINE_CLASS (EEG, Function)
 
 	oo_LONG (numberOfChannels)
 	oo_STRING_VECTOR (channelNames, numberOfChannels)
-	oo_OBJECT (Sound, 2, sound)
-	oo_OBJECT (TextGrid, 0, textgrid)
+	oo_AUTO_OBJECT (Sound, 2, sound)
+	oo_AUTO_OBJECT (TextGrid, 0, textgrid)
 
 	#if oo_DECLARING
 		void v_info ()
@@ -40,4 +39,5 @@ oo_DEFINE_CLASS (EEG, Function)
 oo_END_CLASS (EEG)
 #undef ooSTRUCT
 
+
 /* End of file EEG_def.h */
diff --git a/EEG/ERP.cpp b/EEG/ERP.cpp
index 5de9beb..ee4caae 100644
--- a/EEG/ERP.cpp
+++ b/EEG/ERP.cpp
@@ -1,20 +1,19 @@
 /* ERP.cpp
  *
- * Copyright (C) 2011-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2011-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ERP.h"
@@ -88,12 +87,12 @@ void ERP_drawChannel_number (ERP me, Graphics graphics, long channelNumber, doub
 		Graphics_textBottom (graphics, true, U"Time (s)");
 		Graphics_marksBottom (graphics, 2, true, true, false);
 		if (0.0 > tmin && 0.0 < tmax)
-			Graphics_markBottom (graphics, 0.0, true, true, true, NULL);
-		Graphics_markLeft (graphics, vmin, true, true, false, NULL);
-		Graphics_markLeft (graphics, vmax, true, true, false, NULL);
-			Graphics_markBottom (graphics, 0.0, true, true, true, NULL);
+			Graphics_markBottom (graphics, 0.0, true, true, true, nullptr);
+		Graphics_markLeft (graphics, vmin, true, true, false, nullptr);
+		Graphics_markLeft (graphics, vmax, true, true, false, nullptr);
+			Graphics_markBottom (graphics, 0.0, true, true, true, nullptr);
 		if (vmin != 0.0 && vmax != 0.0 && (vmin > 0.0) != (vmax > 0.0)) {
-			Graphics_markLeft (graphics, 0.0, true, true, true, NULL);
+			Graphics_markLeft (graphics, 0.0, true, true, true, nullptr);
 		}
 	}
 
@@ -103,7 +102,7 @@ void ERP_drawChannel_name (ERP me, Graphics graphics, const char32 *channelName,
 	ERP_drawChannel_number (me, graphics, ERP_getChannelNumber (me, channelName), tmin, tmax, vmin, vmax, garnish);
 }
 
-Table ERP_tabulate (ERP me, bool includeSampleNumbers, bool includeTime, int timeDecimals, int voltageDecimals, int units) {
+autoTable ERP_tabulate (ERP me, bool includeSampleNumbers, bool includeTime, int timeDecimals, int voltageDecimals, int units) {
 	double voltageScaling = 1.0;
 	const char32 *unitText = U"(V)";
 	if (units == 2) {
@@ -114,30 +113,30 @@ Table ERP_tabulate (ERP me, bool includeSampleNumbers, bool includeTime, int tim
 	try {
 		autoTable thee = Table_createWithoutColumnNames (my nx, includeSampleNumbers + includeTime + my ny);
 		long icol = 0;
-		if (includeSampleNumbers) Table_setColumnLabel (thee.peek(), ++ icol, U"sample");
-		if (includeTime) Table_setColumnLabel (thee.peek(), ++ icol, U"time(s)");
+		if (includeSampleNumbers) Table_setColumnLabel (thee.get(), ++ icol, U"sample");
+		if (includeTime) Table_setColumnLabel (thee.get(), ++ icol, U"time(s)");
 		for (long ichan = 1; ichan <= my ny; ichan ++) {
-			Table_setColumnLabel (thee.peek(), ++ icol, Melder_cat (my channelNames [ichan], unitText));
+			Table_setColumnLabel (thee.get(), ++ icol, Melder_cat (my channelNames [ichan], unitText));
 		}
 		for (long isamp = 1; isamp <= my nx; isamp ++) {
 			icol = 0;
-			if (includeSampleNumbers) Table_setNumericValue (thee.peek(), isamp, ++ icol, isamp);
-			if (includeTime) Table_setStringValue (thee.peek(), isamp, ++ icol, Melder_fixed (my x1 + (isamp - 1) * my dx, timeDecimals));
+			if (includeSampleNumbers) Table_setNumericValue (thee.get(), isamp, ++ icol, isamp);
+			if (includeTime) Table_setStringValue (thee.get(), isamp, ++ icol, Melder_fixed (my x1 + (isamp - 1) * my dx, timeDecimals));
 			for (long ichan = 1; ichan <= my ny; ichan ++) {
-				Table_setStringValue (thee.peek(), isamp, ++ icol, Melder_fixed (voltageScaling * my z [ichan] [isamp], voltageDecimals));
+				Table_setStringValue (thee.get(), isamp, ++ icol, Melder_fixed (voltageScaling * my z [ichan] [isamp], voltageDecimals));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
 }
 
-Sound ERP_downto_Sound (ERP me) {
+autoSound ERP_downto_Sound (ERP me) {
 	try {
 		autoSound thee = Thing_new (Sound);
-		my structSound :: v_copy (thee.peek());
-		return thee.transfer();
+		my structSound :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
diff --git a/EEG/ERP.h b/EEG/ERP.h
index 2d9b24f..b2acc99 100644
--- a/EEG/ERP.h
+++ b/EEG/ERP.h
@@ -4,25 +4,23 @@
  *
  * Copyright (C) 2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 
 #include "ERP_def.h"
-oo_CLASS_CREATE (ERP, Sound);
 
 /**
 	Look up the channel number from its name.
@@ -42,12 +40,12 @@ void ERP_drawScalp_garnish (Graphics graphics, double vmin, double vmax, enum kG
 void ERP_drawChannel_number (ERP me, Graphics graphics, long channelNumber, double tmin, double tmax, double vmin, double vmax, bool garnish);
 void ERP_drawChannel_name (ERP me, Graphics graphics, const char32 *channelName, double tmin, double tmax, double vmin, double vmax, bool garnish);
 
-Table ERP_tabulate (ERP me, bool includeSampleNumbers, bool includeTime, int timeDecimals, int voltageDecimals, int units);
+autoTable ERP_tabulate (ERP me, bool includeSampleNumbers, bool includeTime, int timeDecimals, int voltageDecimals, int units);
 
 /**
 	Extract the Sound part from the ERP. The channel names are lost.
 */
-Sound ERP_downto_Sound (ERP me);
+autoSound ERP_downto_Sound (ERP me);
 
 /* End of file ERP.h */
 #endif
diff --git a/EEG/ERPTier.cpp b/EEG/ERPTier.cpp
index c427bb8..33e0b86 100644
--- a/EEG/ERPTier.cpp
+++ b/EEG/ERPTier.cpp
@@ -1,20 +1,19 @@
 /* ERPTier.cpp
  *
- * Copyright (C) 2011-2012,2014,2015 Paul Boersma
+ * Copyright (C) 2011-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ERPTier.h"
@@ -44,19 +43,7 @@ Thing_implement (ERPPoint, AnyPoint, 0);
 
 /***** ERPTier *****/
 
-Thing_implement (ERPTier, Function, 0);
-
-void structERPTier :: v_shiftX (double xfrom, double xto) {
-	ERPTier_Parent :: v_shiftX (xfrom, xto);
-	//if (our sound    != NULL)  Function_shiftXTo (our sound,    xfrom, xto);
-	//if (our textgrid != NULL)  Function_shiftXTo (our textgrid, xfrom, xto);
-}
-
-void structERPTier :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
-	ERPTier_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	//if (our sound    != NULL)  our sound    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	//if (our textgrid != NULL)  our textgrid -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-}
+Thing_implement (ERPTier, AnyTier, 0);
 
 long ERPTier_getChannelNumber (ERPTier me, const char32 *channelName) {
 	for (long ichan = 1; ichan <= my numberOfChannels; ichan ++) {
@@ -68,20 +55,20 @@ long ERPTier_getChannelNumber (ERPTier me, const char32 *channelName) {
 }
 
 double ERPTier_getMean (ERPTier me, long pointNumber, long channelNumber, double tmin, double tmax) {
-	if (pointNumber < 1 || pointNumber > my events -> size) return NUMundefined;
+	if (pointNumber < 1 || pointNumber > my points.size) return NUMundefined;
 	if (channelNumber < 1 || channelNumber > my numberOfChannels) return NUMundefined;
-	ERPPoint point = my event (pointNumber);
-	return Vector_getMean (point -> erp, tmin, tmax, channelNumber);
+	ERPPoint point = my points.at [pointNumber];
+	return Vector_getMean (point -> erp.get(), tmin, tmax, channelNumber);
 }
 
 double ERPTier_getMean (ERPTier me, long pointNumber, const char32 *channelName, double tmin, double tmax) {
 	return ERPTier_getMean (me, pointNumber, ERPTier_getChannelNumber (me, channelName), tmin, tmax);
 }
 
-static ERPTier EEG_PointProcess_to_ERPTier (EEG me, PointProcess events, double fromTime, double toTime) {
+static autoERPTier EEG_PointProcess_to_ERPTier (EEG me, PointProcess events, double fromTime, double toTime) {
 	try {
 		autoERPTier thee = Thing_new (ERPTier);
-		Function_init (thee.peek(), fromTime, toTime);
+		Function_init (thee.get(), fromTime, toTime);
 		thy numberOfChannels = my numberOfChannels - EEG_getNumberOfExtraSensors (me);
 		Melder_assert (thy numberOfChannels > 0);
 		thy channelNames = NUMvector <char32 *> (1, thy numberOfChannels);
@@ -89,7 +76,6 @@ static ERPTier EEG_PointProcess_to_ERPTier (EEG me, PointProcess events, double
 			thy channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
 		long numberOfEvents = events -> nt;
-		thy events = SortedSetOfDouble_create ();
 		double soundDuration = toTime - fromTime;
 		double samplingPeriod = my sound -> dx;
 		long numberOfSamples = (long) floor (soundDuration / samplingPeriod) + 1;
@@ -113,105 +99,103 @@ static ERPTier EEG_PointProcess_to_ERPTier (EEG me, PointProcess events, double
 					event -> erp -> z [ichannel] [isample] = jsample < 1 || jsample > my sound -> nx ? 0.0 : my sound -> z [ichannel] [jsample];
 				}
 			}
-			Collection_addItem (thy events, event.transfer());
+			thy points. addItem_move (event.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERP analysis not performed.");
 	}
 }
 
-ERPTier EEG_to_ERPTier_bit (EEG me, double fromTime, double toTime, int markerBit) {
+autoERPTier EEG_to_ERPTier_bit (EEG me, double fromTime, double toTime, int markerBit) {
 	try {
-		autoPointProcess events = TextGrid_getStartingPoints (my textgrid, markerBit, kMelder_string_EQUAL_TO, U"1");
-		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.peek(), fromTime, toTime);
-		return thee.transfer();
+		autoPointProcess events = TextGrid_getStartingPoints (my textgrid.get(), markerBit, kMelder_string_EQUAL_TO, U"1");
+		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.get(), fromTime, toTime);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERPTier not created.");
 	}
 }
 
-static PointProcess TextGrid_getStartingPoints_multiNumeric (TextGrid me, uint16_t number) {
+static autoPointProcess TextGrid_getStartingPoints_multiNumeric (TextGrid me, uint16_t number) {
 	try {
-		autoPointProcess thee = NULL;
-		int numberOfBits = my numberOfTiers();
+		autoPointProcess thee;
+		int numberOfBits = my tiers->size;
 		for (int ibit = 0; ibit < numberOfBits; ibit ++) {
 			(void) TextGrid_checkSpecifiedTierIsIntervalTier (me, ibit + 1);
 			if (number & (1 << ibit)) {
 				autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, U"1");
-				if (thee.peek()) {
-					autoPointProcess intersection = PointProcesses_intersection (thee.peek(), bitEvents.peek());
-					thee.reset (intersection.transfer());
+				if (thee) {
+					thee = PointProcesses_intersection (thee.get(), bitEvents.get());
 				} else {
-					thee.reset (bitEvents.transfer());
+					thee = bitEvents.move();
 				}
 			}
 		}
 		for (int ibit = 0; ibit < numberOfBits; ibit ++) {
 			autoPointProcess bitEvents = TextGrid_getStartingPoints (me, ibit + 1, kMelder_string_EQUAL_TO, U"1");
 			if (! (number & (1 << ibit))) {
-				if (thee.peek()) {
-					autoPointProcess difference = PointProcesses_difference (thee.peek(), bitEvents.peek());
-					thee.reset (difference.transfer());
+				if (thee) {
+					thee = PointProcesses_difference (thee.get(), bitEvents.get());
 				} else {
-					thee.reset (PointProcess_create (my xmin, my xmax, 10));
+					thee = PointProcess_create (my xmin, my xmax, 10);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": starting points not converted to PointProcess.");
 	}
 }
 
-ERPTier EEG_to_ERPTier_marker (EEG me, double fromTime, double toTime, uint16_t marker) {
+autoERPTier EEG_to_ERPTier_marker (EEG me, double fromTime, double toTime, uint16_t marker) {
 	try {
-		autoPointProcess events = TextGrid_getStartingPoints_multiNumeric (my textgrid, marker);
-		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.peek(), fromTime, toTime);
-		return thee.transfer();
+		autoPointProcess events = TextGrid_getStartingPoints_multiNumeric (my textgrid.get(), marker);
+		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.get(), fromTime, toTime);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERPTier not created.");
 	}
 }
 
-ERPTier EEG_to_ERPTier_triggers (EEG me, double fromTime, double toTime,
+autoERPTier EEG_to_ERPTier_triggers (EEG me, double fromTime, double toTime,
 	int which_Melder_STRING, const char32 *criterion)
 {
 	try {
-		autoPointProcess events = TextGrid_getPoints (my textgrid, 2, which_Melder_STRING, criterion);
-		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.peek(), fromTime, toTime);
-		return thee.transfer();
+		autoPointProcess events = TextGrid_getPoints (my textgrid.get(), 2, which_Melder_STRING, criterion);
+		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.get(), fromTime, toTime);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERPTier not created.");
 	}
 }
 
-ERPTier EEG_to_ERPTier_triggers_preceded (EEG me, double fromTime, double toTime,
+autoERPTier EEG_to_ERPTier_triggers_preceded (EEG me, double fromTime, double toTime,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_precededBy, const char32 *criterion_precededBy)
 {
 	try {
-		autoPointProcess events = TextGrid_getPoints_preceded (my textgrid, 2,
+		autoPointProcess events = TextGrid_getPoints_preceded (my textgrid.get(), 2,
 			which_Melder_STRING, criterion,
 			which_Melder_STRING_precededBy, criterion_precededBy);
-		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.peek(), fromTime, toTime);
-		return thee.transfer();
+		autoERPTier thee = EEG_PointProcess_to_ERPTier (me, events.get(), fromTime, toTime);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERPTier not created.");
 	}
 }
 
 void ERPTier_subtractBaseline (ERPTier me, double tmin, double tmax) {
-	long numberOfEvents = my events -> size;
+	long numberOfEvents = my points.size;
 	if (numberOfEvents < 1)
 		return;   // nothing to do
-	ERPPoint firstEvent = my event (1);
+	ERPPoint firstEvent = my points.at [1];
 	long numberOfChannels = firstEvent -> erp -> ny;
 	long numberOfSamples = firstEvent -> erp -> nx;
 	for (long ievent = 1; ievent <= numberOfEvents; ievent ++) {
-		ERPPoint event = my event (ievent);
+		ERPPoint event = my points.at [ievent];
 		for (long ichannel = 1; ichannel <= numberOfChannels; ichannel ++) {
-			double mean = Vector_getMean (event -> erp, tmin, tmax, ichannel);
+			double mean = Vector_getMean (event -> erp.get(), tmin, tmax, ichannel);
 			double *channel = event -> erp -> z [ichannel];
 			for (long isample = 1; isample <= numberOfSamples; isample ++) {
 				channel [isample] -= mean;
@@ -221,16 +205,16 @@ void ERPTier_subtractBaseline (ERPTier me, double tmin, double tmax) {
 }
 
 void ERPTier_rejectArtefacts (ERPTier me, double threshold) {
-	long numberOfEvents = my events -> size;
+	long numberOfEvents = my points.size;
 	if (numberOfEvents < 1)
 		return;   // nothing to do
-	ERPPoint firstEvent = my event (1);
+	ERPPoint firstEvent = my points.at [1];
 	long numberOfChannels = firstEvent -> erp -> ny;
 	long numberOfSamples = firstEvent -> erp -> nx;
 	if (numberOfSamples < 1)
 		return;   // nothing to do
 	for (long ievent = numberOfEvents; ievent >= 1; ievent --) {   // cycle down because of removal
-		ERPPoint event = my event (ievent);
+		ERPPoint event = my points.at [ievent];
 		double minimum = event -> erp -> z [1] [1];
 		double maximum = minimum;
 		for (long ichannel = 1; ichannel <= (numberOfChannels & ~ 15); ichannel ++) {
@@ -242,22 +226,22 @@ void ERPTier_rejectArtefacts (ERPTier me, double threshold) {
 			}
 		}
 		if (minimum < - threshold || maximum > threshold) {
-			Collection_removeItem (my events, ievent);
+			my points. removeItem (ievent);
 		}
 	}
 }
 
-ERP ERPTier_extractERP (ERPTier me, long eventNumber) {
+autoERP ERPTier_extractERP (ERPTier me, long eventNumber) {
 	try {
-		long numberOfEvents = my events -> size;
+		long numberOfEvents = my points.size;
 		if (numberOfEvents < 1)
 			Melder_throw (U"No events.");
 		ERPTier_checkEventNumber (me, eventNumber);
-		ERPPoint event = my event (eventNumber);
+		ERPPoint event = my points.at [eventNumber];
 		long numberOfChannels = event -> erp -> ny;
 		long numberOfSamples = event -> erp -> nx;
 		autoERP thee = Thing_new (ERP);
-		event -> erp -> structSound :: v_copy (thee.peek());
+		event -> erp -> structSound :: v_copy (thee.get());
 		for (long ichannel = 1; ichannel <= numberOfChannels; ichannel ++) {
 			double *oldChannel = event -> erp -> z [ichannel];
 			double *newChannel = thy z [ichannel];
@@ -269,24 +253,24 @@ ERP ERPTier_extractERP (ERPTier me, long eventNumber) {
 		for (long ichan = 1; ichan <= thy ny; ichan ++) {
 			thy channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": ERP not extracted.");
 	}
 }
 
-ERP ERPTier_to_ERP_mean (ERPTier me) {
+autoERP ERPTier_to_ERP_mean (ERPTier me) {
 	try {
-		long numberOfEvents = my events -> size;
+		long numberOfEvents = my points.size;
 		if (numberOfEvents < 1)
 			Melder_throw (U"No events.");
-		ERPPoint firstEvent = my event (1);
+		ERPPoint firstEvent = my points.at [1];
 		long numberOfChannels = firstEvent -> erp -> ny;
 		long numberOfSamples = firstEvent -> erp -> nx;
 		autoERP mean = Thing_new (ERP);
-		firstEvent -> erp -> structSound :: v_copy (mean.peek());
+		firstEvent -> erp -> structSound :: v_copy (mean.get());
 		for (long ievent = 2; ievent <= numberOfEvents; ievent ++) {
-			ERPPoint event = my event (ievent);
+			ERPPoint event = my points.at [ievent];
 			for (long ichannel = 1; ichannel <= numberOfChannels; ichannel ++) {
 				double *erpChannel = event -> erp -> z [ichannel];
 				double *meanChannel = mean -> z [ichannel];
@@ -306,72 +290,70 @@ ERP ERPTier_to_ERP_mean (ERPTier me) {
 		for (long ichan = 1; ichan <= mean -> ny; ichan ++) {
 			mean -> channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
-		return mean.transfer();
+		return mean;
 	} catch (MelderError) {
 		Melder_throw (me, U": mean not computed.");
 	}
 }
 
-ERPTier ERPTier_extractEventsWhereColumn_number (ERPTier me, Table table, long columnNumber, int which_Melder_NUMBER, double criterion) {
+autoERPTier ERPTier_extractEventsWhereColumn_number (ERPTier me, Table table, long columnNumber, int which_Melder_NUMBER, double criterion) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (table, columnNumber);
 		Table_numericize_Assert (table, columnNumber);   // extraction should work even if cells are not defined
-		if (my events -> size != table -> rows -> size)
-			Melder_throw (me, U" & ", table, U": the number of rows in the table (", table -> rows -> size,
-				U") doesn't match the number of events (", my events -> size, U").");
+		if (my points.size != table -> rows.size)
+			Melder_throw (me, U" & ", table, U": the number of rows in the table (", table -> rows.size,
+				U") doesn't match the number of events (", my points.size, U").");
 		autoERPTier thee = Thing_new (ERPTier);
-		Function_init (thee.peek(), my xmin, my xmax);
+		Function_init (thee.get(), my xmin, my xmax);
 		thy numberOfChannels = my numberOfChannels;
 		thy channelNames = NUMvector <char32 *> (1, thy numberOfChannels);
 		for (long ichan = 1; ichan <= thy numberOfChannels; ichan ++) {
 			thy channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
-		thy events = SortedSetOfDouble_create ();
-		for (long ievent = 1; ievent <= my events -> size; ievent ++) {
-			ERPPoint oldEvent = my event (ievent);
-			TableRow row = table -> row (ievent);
+		for (long ievent = 1; ievent <= my points.size; ievent ++) {
+			ERPPoint oldEvent = my points.at [ievent];
+			TableRow row = table -> rows.at [ievent];
 			if (Melder_numberMatchesCriterion (row -> cells [columnNumber]. number, which_Melder_NUMBER, criterion)) {
 				autoERPPoint newEvent = Data_copy (oldEvent);
-				Collection_addItem (thy events, newEvent.transfer());
+				thy points. addItem_move (newEvent.move());
 			}
 		}
-		if (thy events -> size == 0) {
+		if (thy points.size == 0) {
 			Melder_warning (U"No event matches criterion.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": events not extracted.");
 	}
 }
 
-ERPTier ERPTier_extractEventsWhereColumn_string (ERPTier me, Table table,
+autoERPTier ERPTier_extractEventsWhereColumn_string (ERPTier me, Table table,
 	long columnNumber, int which_Melder_STRING, const char32 *criterion)
 {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (table, columnNumber);
-		if (my events -> size != table -> rows -> size)
-			Melder_throw (me, U" & ", table, U": the number of rows in the table (", table -> rows -> size,
-				U") doesn't match the number of events (", my events -> size, U").");
+		if (my points.size != table -> rows.size)
+			Melder_throw (me, U" & ", table, U": the number of rows in the table (", table -> rows.size,
+				U") doesn't match the number of events (", my points.size, U").");
 		autoERPTier thee = Thing_new (ERPTier);
-		Function_init (thee.peek(), my xmin, my xmax);
+		Function_init (thee.get(), my xmin, my xmax);
 		thy numberOfChannels = my numberOfChannels;
 		thy channelNames = NUMvector <char32 *> (1, thy numberOfChannels);
 		for (long ichan = 1; ichan <= thy numberOfChannels; ichan ++) {
 			thy channelNames [ichan] = Melder_dup (my channelNames [ichan]);
 		}
-		thy events = SortedSetOfDouble_create ();
-		for (long ievent = 1; ievent <= my events -> size; ievent ++) {
-			ERPPoint oldEvent = my event (ievent);
-			TableRow row = table -> row (ievent);
+		for (long ievent = 1; ievent <= my points.size; ievent ++) {
+			ERPPoint oldEvent = my points.at [ievent];
+			TableRow row = table -> rows.at [ievent];
 			if (Melder_stringMatchesCriterion (row -> cells [columnNumber]. string, which_Melder_STRING, criterion)) {
 				autoERPPoint newEvent = Data_copy (oldEvent);
-				Collection_addItem (thy events, newEvent.transfer());
+				thy points. addItem_move (newEvent.move());
 			}
 		}
-		if (thy events -> size == 0) {
+		if (thy points.size == 0) {
 			Melder_warning (U"No event matches criterion.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": events not extracted.");
 	}
diff --git a/EEG/ERPTier.h b/EEG/ERPTier.h
index ad717eb..023413b 100644
--- a/EEG/ERPTier.h
+++ b/EEG/ERPTier.h
@@ -4,50 +4,46 @@
  *
  * Copyright (C) 2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "EEG.h"
 #include "ERP.h"
 
 #include "ERPTier_def.h"
-oo_CLASS_CREATE (ERPPoint, AnyPoint);
-oo_CLASS_CREATE (ERPTier, Function);
-
 
 long ERPTier_getChannelNumber (ERPTier me, const char32 *channelName);
 static inline void ERPTier_checkEventNumber (ERPTier me, long eventNumber) {
 	if (eventNumber < 1)
 		Melder_throw (U"The specified event number is ", eventNumber, U" but should have been positive.");
-	if (eventNumber > my events -> size)
-		Melder_throw (U"The specified event number (", eventNumber, U") exceeds the number of events (", my events -> size, U").");
+	if (eventNumber > my points.size)
+		Melder_throw (U"The specified event number (", eventNumber, U") exceeds the number of events (", my points.size, U").");
 }
 double ERPTier_getMean (ERPTier me, long pointNumber, long channelNumber, double tmin, double tmax);
 double ERPTier_getMean (ERPTier me, long pointNumber, const char32 *channelName, double tmin, double tmax);
 void ERPTier_subtractBaseline (ERPTier me, double tmin, double tmax);
 void ERPTier_rejectArtefacts (ERPTier me, double threshold);
-ERP ERPTier_extractERP (ERPTier me, long pointNumber);
-ERP ERPTier_to_ERP_mean (ERPTier me);
-ERPTier ERPTier_extractEventsWhereColumn_number (ERPTier me, Table table, long columnNumber, int which_Melder_NUMBER, double criterion);
-ERPTier ERPTier_extractEventsWhereColumn_string (ERPTier me, Table table, long columnNumber, int which_Melder_STRING, const char32 *criterion);
+autoERP ERPTier_extractERP (ERPTier me, long pointNumber);
+autoERP ERPTier_to_ERP_mean (ERPTier me);
+autoERPTier ERPTier_extractEventsWhereColumn_number (ERPTier me, Table table, long columnNumber, int which_Melder_NUMBER, double criterion);
+autoERPTier ERPTier_extractEventsWhereColumn_string (ERPTier me, Table table, long columnNumber, int which_Melder_STRING, const char32 *criterion);
 
-ERPTier EEG_to_ERPTier_bit (EEG me, double fromTime, double toTime, int markerBit);
-ERPTier EEG_to_ERPTier_marker (EEG me, double fromTime, double toTime, uint16 marker);
-ERPTier EEG_to_ERPTier_triggers (EEG me, double fromTime, double toTime,
+autoERPTier EEG_to_ERPTier_bit (EEG me, double fromTime, double toTime, int markerBit);
+autoERPTier EEG_to_ERPTier_marker (EEG me, double fromTime, double toTime, uint16 marker);
+autoERPTier EEG_to_ERPTier_triggers (EEG me, double fromTime, double toTime,
 	int which_Melder_STRING, const char32 *criterion);
-ERPTier EEG_to_ERPTier_triggers_preceded (EEG me, double fromTime, double toTime,
+autoERPTier EEG_to_ERPTier_triggers_preceded (EEG me, double fromTime, double toTime,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_precededBy, const char32 *criterion_precededBy);
 
diff --git a/EEG/ERPTier_def.h b/EEG/ERPTier_def.h
index 4941036..a9d235d 100644
--- a/EEG/ERPTier_def.h
+++ b/EEG/ERPTier_def.h
@@ -2,26 +2,25 @@
  *
  * Copyright (C) 2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT ERPPoint
 oo_DEFINE_CLASS (ERPPoint, AnyPoint)
 
-	oo_OBJECT (Sound, 2, erp)
+	oo_AUTO_OBJECT (Sound, 2, erp)
 
 oo_END_CLASS (ERPPoint)
 #undef ooSTRUCT
@@ -30,21 +29,16 @@ oo_END_CLASS (ERPPoint)
 #define ooSTRUCT ERPTier
 oo_DEFINE_CLASS (ERPTier, Function)
 
-	oo_COLLECTION (SortedSetOfDouble, events, ERPPoint, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, points, ERPPoint, 0)
 
 	oo_LONG (numberOfChannels)
 	oo_STRING_VECTOR (channelNames, numberOfChannels)
 
 	#if oo_DECLARING
-		ERPPoint event (long i)   // rvalue accessor
-			{ return static_cast <ERPPoint> (our events -> item [i]); }
+		AnyTier_METHODS
 
 		int v_domainQuantity ()
 			override { return MelderQuantity_TIME_SECONDS; }
-		void v_shiftX (double xfrom, double xto)
-			override;
-		void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
-			override;
 	#endif
 
 oo_END_CLASS (ERPTier)
diff --git a/EEG/ERPWindow.cpp b/EEG/ERPWindow.cpp
index 6ac0d6a..72fed23 100644
--- a/EEG/ERPWindow.cpp
+++ b/EEG/ERPWindow.cpp
@@ -1,20 +1,19 @@
 /* ERPWindow.cpp
  *
- * Copyright (C) 2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ERPWindow.h"
@@ -272,10 +271,10 @@ void ERP_drawScalp (ERP me, Graphics graphics, double tmin, double tmax, double
 
 void structERPWindow :: v_drawSelectionViewer () {
 	ERP erp = (ERP) data;
-	Graphics_setWindow (d_graphics, -1.1, 1.1, -1.01, 1.19);
-	Graphics_setColour (d_graphics, Graphics_WINDOW_BACKGROUND_COLOUR);
-	Graphics_fillRectangle (d_graphics, -1.1, 1.1, -1.01, 1.19);
-	Graphics_setColour (d_graphics, Graphics_BLACK);
+	Graphics_setWindow (d_graphics.get(), -1.1, 1.1, -1.01, 1.19);
+	Graphics_setColour (d_graphics.get(), Graphics_WINDOW_BACKGROUND_COLOUR);
+	Graphics_fillRectangle (d_graphics.get(), -1.1, 1.1, -1.01, 1.19);
+	Graphics_setColour (d_graphics.get(), Graphics_BLACK);
 	long numberOfDrawableChannels =
 			erp -> ny >= 64 && Melder_equ (erp -> channelNames [64], U"O2") ? 64 :
 			erp -> ny >= 32 && Melder_equ (erp -> channelNames [32], U"Cz") ? 32 :
@@ -355,43 +354,43 @@ void structERPWindow :: v_drawSelectionViewer () {
 			}
 		}
 	}
-	Graphics_setColourScale (d_graphics, our p_scalp_colourScale);
-	Graphics_image (d_graphics, image.peek(), 1, n, -1.0-0.5/n, 1.0+0.5/n, 1, n, -1.0-0.5/n, 1.0+0.5/n, minimum, maximum);
-	Graphics_setColourScale (d_graphics, kGraphics_colourScale_GREY);
-	Graphics_setLineWidth (d_graphics, 2.0);
+	Graphics_setColourScale (our d_graphics.get(), our p_scalp_colourScale);
+	Graphics_image (our d_graphics.get(), image.peek(), 1, n, -1.0-0.5/n, 1.0+0.5/n, 1, n, -1.0-0.5/n, 1.0+0.5/n, minimum, maximum);
+	Graphics_setColourScale (our d_graphics.get(), kGraphics_colourScale_GREY);
+	Graphics_setLineWidth (our d_graphics.get(), 2.0);
 	/*
 	 * Nose.
 	 */
-	Graphics_setGrey (d_graphics, our p_scalp_colourScale == kGraphics_colourScale_BLUE_TO_RED ? 1.0 : 0.5);
+	Graphics_setGrey (our d_graphics.get(), our p_scalp_colourScale == kGraphics_colourScale_BLUE_TO_RED ? 1.0 : 0.5);
 	{// scope
 		double x [3] = { -0.08, 0.0, 0.08 }, y [3] = { 0.99, 1.18, 0.99 };
-		Graphics_fillArea (d_graphics, 3, x, y);
+		Graphics_fillArea (our d_graphics.get(), 3, x, y);
 	}
-	Graphics_setColour (d_graphics, Graphics_BLACK);
-	Graphics_line (d_graphics, -0.08, 0.99, 0.0, 1.18);
-	Graphics_line (d_graphics, 0.08, 0.99, 0.0, 1.18);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+	Graphics_line (our d_graphics.get(), -0.08, 0.99, 0.0, 1.18);
+	Graphics_line (our d_graphics.get(), 0.08, 0.99, 0.0, 1.18);
 	/*
 	 * Ears.
 	 */
-	Graphics_setGrey (d_graphics, our p_scalp_colourScale == kGraphics_colourScale_BLUE_TO_RED ? 1.0 : 0.5);
-	Graphics_fillRectangle (d_graphics, -1.09, -1.00, -0.08, 0.08);
-	Graphics_fillRectangle (d_graphics, 1.09, 1.00, -0.08, 0.08);
-	Graphics_setColour (d_graphics, Graphics_BLACK);
-	Graphics_line (d_graphics, -0.99, 0.08, -1.09, 0.08);
-	Graphics_line (d_graphics, -1.09, 0.08, -1.09, -0.08);
-	Graphics_line (d_graphics, -1.09, -0.08, -0.99, -0.08);
-	Graphics_line (d_graphics, 0.99, 0.08, 1.09, 0.08);
-	Graphics_line (d_graphics, 1.09, 0.08, 1.09, -0.08);
-	Graphics_line (d_graphics, 1.09, -0.08, 0.99, -0.08);
+	Graphics_setGrey (our d_graphics.get(), our p_scalp_colourScale == kGraphics_colourScale_BLUE_TO_RED ? 1.0 : 0.5);
+	Graphics_fillRectangle (our d_graphics.get(), -1.09, -1.00, -0.08, 0.08);
+	Graphics_fillRectangle (our d_graphics.get(), 1.09, 1.00, -0.08, 0.08);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+	Graphics_line (our d_graphics.get(), -0.99, 0.08, -1.09, 0.08);
+	Graphics_line (our d_graphics.get(), -1.09, 0.08, -1.09, -0.08);
+	Graphics_line (our d_graphics.get(), -1.09, -0.08, -0.99, -0.08);
+	Graphics_line (our d_graphics.get(), 0.99, 0.08, 1.09, 0.08);
+	Graphics_line (our d_graphics.get(), 1.09, 0.08, 1.09, -0.08);
+	Graphics_line (our d_graphics.get(), 1.09, -0.08, 0.99, -0.08);
 	/*
 	 * Scalp.
 	 */
-	Graphics_ellipse (d_graphics, -1.0, 1.0, -1.0, 1.0);
-	Graphics_setLineWidth (d_graphics, 1.0);
+	Graphics_ellipse (our d_graphics.get(), -1.0, 1.0, -1.0, 1.0);
+	Graphics_setLineWidth (our d_graphics.get(), 1.0);
 }
 
 void structERPWindow :: v_prefs_addFields (EditorCommand cmd) {
-	Any radio;
+	UiField radio;
 	OPTIONMENU_ENUM (U"Scalp colour space", kGraphics_colourScale, kGraphics_colourScale_BLUE_TO_RED)
 }
 void structERPWindow :: v_prefs_setValues (EditorCommand cmd) {
@@ -402,12 +401,12 @@ void structERPWindow :: v_prefs_getValues (EditorCommand cmd) {
 	FunctionEditor_redraw (this);
 }
 
-ERPWindow ERPWindow_create (const char32 *title, ERP data) {
-	Melder_assert (data != NULL);
+autoERPWindow ERPWindow_create (const char32 *title, ERP data) {
+	Melder_assert (data);
 	try {
 		autoERPWindow me = Thing_new (ERPWindow);
-		SoundEditor_init (me.peek(), title, data);
-		return me.transfer();
+		SoundEditor_init (me.get(), title, data);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ERP window not created.");
 	}
diff --git a/EEG/ERPWindow.h b/EEG/ERPWindow.h
index becab6e..de720f3 100644
--- a/EEG/ERPWindow.h
+++ b/EEG/ERPWindow.h
@@ -4,25 +4,24 @@
  *
  * Copyright (C) 2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SoundEditor.h"
 #include "ERP.h"
 
-Thing_define (ERPWindow, SoundEditor) { public:
+Thing_define (ERPWindow, SoundEditor) {
 	const char32 * v_getChannelName (long channelNumber)
 		override {
 			ERP erp = (ERP) our data;
@@ -51,7 +50,7 @@ Thing_define (ERPWindow, SoundEditor) { public:
 /**
 	Create an ERPWindow.
 */
-ERPWindow ERPWindow_create (const char32 *title, ERP data);
+autoERPWindow ERPWindow_create (const char32 *title, ERP data);
 
 /* End of file ERPWindow.h */
 #endif
diff --git a/EEG/ERPWindow_prefs.h b/EEG/ERPWindow_prefs.h
index 906a2e8..af4fbb8 100644
--- a/EEG/ERPWindow_prefs.h
+++ b/EEG/ERPWindow_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (ERPWindow)
diff --git a/EEG/ERP_def.h b/EEG/ERP_def.h
index 9812cab..84d2473 100644
--- a/EEG/ERP_def.h
+++ b/EEG/ERP_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2011-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/EEG/manual_EEG.cpp b/EEG/manual_EEG.cpp
index f53417a..f0e569f 100644
--- a/EEG/manual_EEG.cpp
+++ b/EEG/manual_EEG.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/EEG/praat_EEG.cpp b/EEG/praat_EEG.cpp
index 4eb8890..b169f22 100644
--- a/EEG/praat_EEG.cpp
+++ b/EEG/praat_EEG.cpp
@@ -1,20 +1,19 @@
 /* praat_EEG.cpp
  *
- * Copyright (C) 2011-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2011-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -30,9 +29,13 @@
 /***** EEG *****/
 
 DIRECT2 (EEGs_concatenate) {
-	autoCollection eegs = praat_getSelectedObjects ();
-	autoEEG thee = EEGs_concatenate (eegs.peek());
-	praat_new (thee.transfer(), U"chain");
+	OrderedOf<structEEG> eegs;
+	LOOP {
+		iam (EEG);
+		eegs. addItem_ref (me);
+	}
+	autoEEG thee = EEGs_concatenate (& eegs);
+	praat_new (thee.move(), U"chain");
 END2 }
 
 DIRECT2 (EEG_detrend) {
@@ -43,7 +46,7 @@ DIRECT2 (EEG_detrend) {
 	}
 END2 }
 
-FORM (EEG_editExternalElectrodeNames, U"Edit external electrode names", 0) {
+FORM (EEG_editExternalElectrodeNames, U"Edit external electrode names", nullptr) {
 	WORD (U"External electrode 1", U"EXG1")
 	WORD (U"External electrode 2", U"EXG2")
 	WORD (U"External electrode 3", U"EXG3")
@@ -80,7 +83,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_extractChannel, U"EEG: Extract channel", 0) {
+FORM (EEG_extractChannel, U"EEG: Extract channel", nullptr) {
 	SENTENCE (U"Channel name", U"Cz")
 	OK2
 DO
@@ -88,20 +91,20 @@ DO
 		iam (EEG);
 		const char32 *channelName = GET_STRING (U"Channel name");
 		autoEEG thee = EEG_extractChannel (me, channelName);
-		praat_new (thee.transfer(), my name, U"_", channelName);
+		praat_new (thee.move(), my name, U"_", channelName);
 	}
 END2 }
 
-FORM (EEG_extractPart, U"EEG: Extract part", 0) {
+FORM (EEG_extractPart, U"EEG: Extract part", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1.0")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OK2
 DO
 	LOOP {
 		iam (EEG);
 		autoEEG thee = EEG_extractPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_INTEGER (U"Preserve times"));
-		praat_new (thee.transfer(), my name, U"_part");
+		praat_new (thee.move(), my name, U"_part");
 	}
 END2 }
 
@@ -110,7 +113,7 @@ DIRECT2 (EEG_extractSound) {
 		iam (EEG);
 		if (! my sound) Melder_throw (me, U": I don't contain a waveform.");
 		autoSound thee = EEG_extractSound (me);
-		praat_new (thee.transfer());
+		praat_new (thee.move());
 	}
 END2 }
 
@@ -119,11 +122,11 @@ DIRECT2 (EEG_extractTextGrid) {
 		iam (EEG);
 		if (! my textgrid) Melder_throw (me, U": I don't contain marks.");
 		autoTextGrid thee = EEG_extractTextGrid (me);
-		praat_new (thee.transfer());
+		praat_new (thee.move());
 	}
 END2 }
 
-FORM (EEG_filter, U"Filter", 0) {
+FORM (EEG_filter, U"Filter", nullptr) {
 	REAL (U"Low frequency (Hz)", U"1.0")
 	REAL (U"Low width (Hz)", U"0.5")
 	REAL (U"High frequency (Hz)", U"25.0")
@@ -138,7 +141,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_getChannelName, U"Get channel name", 0) {
+FORM (EEG_getChannelName, U"Get channel name", nullptr) {
 	NATURAL (U"Channel number", U"1")
 	OK2
 DO
@@ -151,7 +154,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_getChannelNumber, U"Get channel number", 0) {
+FORM (EEG_getChannelNumber, U"Get channel number", nullptr) {
 	WORD (U"Channel name", U"Cz")
 	OK2
 DO
@@ -161,7 +164,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_removeTriggers, U"Remove triggers", 0) {
+FORM (EEG_removeTriggers, U"Remove triggers", nullptr) {
 	OPTIONMENU_ENUM (U"Remove every trigger that...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
 	OK2
@@ -173,7 +176,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_setChannelName, U"Set channel name", 0) {
+FORM (EEG_setChannelName, U"Set channel name", nullptr) {
 	NATURAL (U"Channel number", U"1")
 	WORD (U"New name", U"BLA")
 	OK2
@@ -185,7 +188,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_setChannelToZero, U"Set channel to zero", 0) {
+FORM (EEG_setChannelToZero, U"Set channel to zero", nullptr) {
 	SENTENCE (U"Channel", U"Iz")
 	OK2
 DO
@@ -196,7 +199,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_subtractMeanChannel, U"Subtract mean channel", 0) {
+FORM (EEG_subtractMeanChannel, U"Subtract mean channel", nullptr) {
 	LABEL (U"label", U"Range of reference channels:")
 	NATURAL (U"From channel", U"1")
 	NATURAL (U"To channel", U"32")
@@ -209,7 +212,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_subtractReference, U"Subtract reference", 0) {
+FORM (EEG_subtractReference, U"Subtract reference", nullptr) {
 	WORD (U"Reference channel 1", U"MASL")
 	WORD (U"Reference channel 2 (optional)", U"MASR")
 	OK2
@@ -221,7 +224,7 @@ DO
 	}
 END2 }
 
-FORM (EEG_to_ERPTier_bit, U"To ERPTier (bit)", 0) {
+FORM (EEG_to_ERPTier_bit, U"To ERPTier (bit)", nullptr) {
 	REAL (U"From time (s)", U"-0.11")
 	REAL (U"To time (s)", U"0.39")
 	NATURAL (U"Marker bit", U"8")
@@ -231,11 +234,11 @@ DO
 		iam (EEG);
 		int markerBit = GET_INTEGER (U"Marker bit");
 		autoERPTier thee = EEG_to_ERPTier_bit (me, GET_REAL (U"From time"), GET_REAL (U"To time"), markerBit);
-		praat_new (thee.transfer(), my name, U"_bit", markerBit);
+		praat_new (thee.move(), my name, U"_bit", markerBit);
 	}
 END2 }
 
-FORM (EEG_to_ERPTier_marker, U"To ERPTier (marker)", 0) {
+FORM (EEG_to_ERPTier_marker, U"To ERPTier (marker)", nullptr) {
 	REAL (U"From time (s)", U"-0.11")
 	REAL (U"To time (s)", U"0.39")
 	NATURAL (U"Marker number", U"12")
@@ -245,11 +248,11 @@ DO
 		iam (EEG);
 		uint16 markerNumber = GET_INTEGER (U"Marker number");
 		autoERPTier thee = EEG_to_ERPTier_marker (me, GET_REAL (U"From time"), GET_REAL (U"To time"), markerNumber);
-		praat_new (thee.transfer(), my name, U"_", markerNumber);
+		praat_new (thee.move(), my name, U"_", markerNumber);
 	}
 END2 }
 
-FORM (EEG_to_ERPTier_triggers, U"To ERPTier (triggers)", 0) {
+FORM (EEG_to_ERPTier_triggers, U"To ERPTier (triggers)", nullptr) {
 	REAL (U"From time (s)", U"-0.11")
 	REAL (U"To time (s)", U"0.39")
 	OPTIONMENU_ENUM (U"Get every event with a trigger that", kMelder_string, DEFAULT)
@@ -260,11 +263,11 @@ DO
 		iam (EEG);
 		autoERPTier thee = EEG_to_ERPTier_triggers (me, GET_REAL (U"From time"), GET_REAL (U"To time"),
 			GET_ENUM (kMelder_string, U"Get every event with a trigger that"), GET_STRING (U"...the text"));
-		praat_new (thee.transfer(), my name, U"_trigger", GET_STRING (U"...the text"));
+		praat_new (thee.move(), my name, U"_trigger", GET_STRING (U"...the text"));
 	}
 END2 }
 
-FORM (EEG_to_ERPTier_triggers_preceded, U"To ERPTier (triggers, preceded)", 0) {
+FORM (EEG_to_ERPTier_triggers_preceded, U"To ERPTier (triggers, preceded)", nullptr) {
 	REAL (U"From time (s)", U"-0.11")
 	REAL (U"To time (s)", U"0.39")
 	OPTIONMENU_ENUM (U"Get every event with a trigger that", kMelder_string, DEFAULT)
@@ -278,11 +281,11 @@ DO
 		autoERPTier thee = EEG_to_ERPTier_triggers_preceded (me, GET_REAL (U"From time"), GET_REAL (U"To time"),
 			GET_ENUM (kMelder_string, U"Get every event with a trigger that"), GET_STRING (U"...the text"),
 			GET_ENUM (kMelder_string, U"and is preceded by a trigger that"), GET_STRING (U" ...the text"));
-		praat_new (thee.transfer(), my name, U"_trigger", GET_STRING (U" ...the text"));
+		praat_new (thee.move(), my name, U"_trigger", GET_STRING (U" ...the text"));
 	}
 END2 }
 
-FORM (EEG_to_MixingMatrix, U"To MixingMatrix", 0) {
+FORM (EEG_to_MixingMatrix, U"To MixingMatrix", nullptr) {
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
 	OPTIONMENU (U"Diagonalization method", 2)
@@ -295,25 +298,25 @@ DO
 		autoMixingMatrix thee = EEG_to_MixingMatrix (me,
 			GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance"),
 			GET_INTEGER (U"Diagonalization method"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-static void cb_EEGWindow_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_EEGWindow_publication (Editor /* editor */, autoDaata publication) {
 	/*
 	 * Keep the gate for error handling.
 	 */
 	try {
-		praat_new (publication);
+		bool isaSpectralSlice = Thing_isa (publication.get(), classSpectrum) && str32equ (Thing_getName (publication.get()), U"slice");
+		praat_new (publication.move());
 		praat_updateSelection ();
-		if (Thing_isa (publication, classSpectrum) && str32equ (Thing_getName (publication), U"slice")) {
+		if (isaSpectralSlice) {
 			int IOBJECT;
 			LOOP {
 				iam (Spectrum);
 				autoSpectrumEditor editor2 = SpectrumEditor_create (ID_AND_FULL_NAME, me);
-				praat_installEditor (editor2.transfer(), IOBJECT);
+				praat_installEditor (editor2.get(), IOBJECT);
+				editor2.releaseToUser();
 			}
 		}
 	} catch (MelderError) {
@@ -325,8 +328,9 @@ DIRECT2 (EEG_viewAndEdit) {
 	LOOP {
 		iam (EEG);
 		autoEEGWindow editor = EEGWindow_create (ID_AND_FULL_NAME, me);
-		Editor_setPublicationCallback (editor.peek(), cb_EEGWindow_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		Editor_setPublicationCallback (editor.get(), cb_EEGWindow_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -344,11 +348,11 @@ DIRECT2 (ERP_downto_Sound) {
 	LOOP {
 		iam (ERP);
 		autoSound thee = ERP_downto_Sound (me);
-		praat_new (thee.transfer());
+		praat_new (thee.move());
 	}
 END2 }
 
-FORM (ERP_downto_Table, U"ERP: Down to Table", 0) {
+FORM (ERP_downto_Table, U"ERP: Down to Table", nullptr) {
 	BOOLEAN (U"Include sample number", false)
 	BOOLEAN (U"Include time", true)
 	NATURAL (U"Time decimals", U"6")
@@ -362,17 +366,17 @@ DO
 		iam (ERP);
 		autoTable thee = ERP_tabulate (me, GET_INTEGER (U"Include sample number"),
 			GET_INTEGER (U"Include time"), GET_INTEGER (U"Time decimals"), GET_INTEGER (U"Voltage decimals"), GET_INTEGER (U"Voltage units"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (ERP_draw, U"ERP: Draw", 0) {
+FORM (ERP_draw, U"ERP: Draw", nullptr) {
 	SENTENCE (U"Channel name", U"Cz")
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range", U"0.0 (= all)")
 	REAL (U"left Voltage range (V)", U"10e-6")
 	REAL (U"right Voltage range", U"-10e-6")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -383,12 +387,12 @@ DO
 	}
 END2 }
 
-FORM (ERP_drawScalp, U"ERP: Draw scalp", 0) {
+FORM (ERP_drawScalp, U"ERP: Draw scalp", nullptr) {
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range", U"0.2")
 	REAL (U"left Voltage range (V)", U"10e-6")
 	REAL (U"right Voltage range", U"-10e-6")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -399,13 +403,13 @@ DO
 	}
 END2 }
 
-FORM (ERP_drawScalp_colour, U"ERP: Draw scalp (colour)", 0) {
+FORM (ERP_drawScalp_colour, U"ERP: Draw scalp (colour)", nullptr) {
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range", U"0.2")
 	REAL (U"left Voltage range (V)", U"10e-6")
 	REAL (U"right Voltage range", U"-10e-6")
 	RADIO_ENUM (U"Colour scale", kGraphics_colourScale, BLUE_TO_RED)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -416,7 +420,7 @@ DO
 	}
 END2 }
 
-FORM (ERP_drawScalp_garnish, U"ERP: Draw scalp (garnish)", 0) {
+FORM (ERP_drawScalp_garnish, U"ERP: Draw scalp (garnish)", nullptr) {
 	REAL (U"left Voltage range (V)", U"10e-6")
 	REAL (U"right Voltage range", U"-10e-6")
 	RADIO_ENUM (U"Colour scale", kGraphics_colourScale, BLUE_TO_RED)
@@ -427,7 +431,7 @@ DO
 		GET_REAL (U"left Voltage range"), GET_REAL (U"right Voltage range"), GET_ENUM (kGraphics_colourScale, U"Colour scale"));
 END2 }
 
-FORM (ERP_extractOneChannelAsSound, U"ERP: Extract one channel as Sound", 0) {
+FORM (ERP_extractOneChannelAsSound, U"ERP: Extract one channel as Sound", nullptr) {
 	WORD (U"Channel name", U"Cz")
 	OK2
 DO
@@ -437,7 +441,7 @@ DO
 		long channelNumber = ERP_getChannelNumber (me, channelName);
 		if (channelNumber == 0) Melder_throw (me, U": no channel named \"", channelName, U"\".");
 		autoSound thee = Sound_extractChannel (me, channelNumber);
-		praat_new (thee.transfer(), my name, U"_", channelName);
+		praat_new (thee.move(), my name, U"_", channelName);
 	}
 END2 }
 
@@ -454,7 +458,7 @@ DO
 	LOOP {
 		iam (ERP);
 		try {
-			Matrix_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the ERP may have partially changed
@@ -477,7 +481,7 @@ DO
 			Matrix_formula_part (me,
 				GET_REAL (U"From time"), GET_REAL (U"To time"),
 				GET_INTEGER (U"From channel") - 0.5, GET_INTEGER (U"To channel") + 0.5,
-				GET_STRING (U"formula"), interpreter, NULL);
+				GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the ERP may have partially changed
@@ -486,7 +490,7 @@ DO
 	}
 END2 }
 
-FORM (ERP_getChannelName, U"Get channel name", 0) {
+FORM (ERP_getChannelName, U"Get channel name", nullptr) {
 	NATURAL (U"Channel number", U"1")
 	OK2
 DO
@@ -499,7 +503,7 @@ DO
 	}
 END2 }
 
-FORM (ERP_getChannelNumber, U"Get channel number", 0) {
+FORM (ERP_getChannelNumber, U"Get channel number", nullptr) {
 	WORD (U"Channel name", U"Cz")
 	OK2
 DO
@@ -527,7 +531,7 @@ DO
 		long channelNumber = ERP_getChannelNumber (me, channelName);
 		if (channelNumber == 0) Melder_throw (me, U": no channel named \"", channelName, U"\".");
 		double maximum;
-		Vector_getMaximumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, & maximum, NULL);
+		Vector_getMaximumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, & maximum, nullptr);
 		Melder_informationReal (maximum, U"Volt");
 	}
 END2 }
@@ -566,7 +570,7 @@ DO
 		long channelNumber = ERP_getChannelNumber (me, channelName);
 		if (channelNumber == 0) Melder_throw (me, U": no channel named \"", channelName, U"\".");
 		double minimum;
-		Vector_getMinimumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, & minimum, NULL);
+		Vector_getMinimumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, & minimum, nullptr);
 		Melder_informationReal (minimum, U"Volt");
 	}
 END2 }
@@ -589,7 +593,7 @@ DO
 		long channelNumber = ERP_getChannelNumber (me, channelName);
 		if (channelNumber == 0) Melder_throw (me, U": no channel named \"", channelName, U"\".");
 		double timeOfMaximum;
-		Vector_getMaximumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, NULL, & timeOfMaximum);
+		Vector_getMaximumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, nullptr, & timeOfMaximum);
 		Melder_informationReal (timeOfMaximum, U"seconds");
 	}
 END2 }
@@ -612,26 +616,26 @@ DO
 		long channelNumber = ERP_getChannelNumber (me, channelName);
 		if (channelNumber == 0) Melder_throw (me, U": no channel named \"", channelName, U"\".");
 		double timeOfMinimum;
-		Vector_getMinimumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, NULL, & timeOfMinimum);
+		Vector_getMinimumAndX (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), channelNumber, GET_INTEGER (U"Interpolation") - 1, nullptr, & timeOfMinimum);
 		Melder_informationReal (timeOfMinimum, U"seconds");
 	}
 END2 }
 
-static void cb_ERPWindow_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_ERPWindow_publication (Editor /* editor */, autoDaata publication) {
 	/*
 	 * Keep the gate for error handling.
 	 */
 	try {
-		praat_new (publication);
+		bool isaSpectralSlice = Thing_isa (publication.get(), classSpectrum) && str32equ (Thing_getName (publication.get()), U"slice");
+		praat_new (publication.move());
 		praat_updateSelection ();
-		if (Thing_isa (publication, classSpectrum) && str32equ (Thing_getName (publication), U"slice")) {
+		if (isaSpectralSlice) {
 			int IOBJECT;
 			LOOP {
 				iam (Spectrum);
 				autoSpectrumEditor editor2 = SpectrumEditor_create (ID_AND_FULL_NAME, me);
-				praat_installEditor (editor2.transfer(), IOBJECT);
+				praat_installEditor (editor2.get(), IOBJECT);
+				editor2.releaseToUser();
 			}
 		}
 	} catch (MelderError) {
@@ -643,14 +647,15 @@ DIRECT2 (ERP_viewAndEdit) {
 	LOOP {
 		iam (ERP);
 		autoERPWindow editor = ERPWindow_create (ID_AND_FULL_NAME, me);
-		Editor_setPublicationCallback (editor.peek(), cb_ERPWindow_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		Editor_setPublicationCallback (editor.get(), cb_ERPWindow_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 /***** ERPTier *****/
 
-FORM (ERPTier_getChannelName, U"Get channel name", 0) {
+FORM (ERPTier_getChannelName, U"Get channel name", nullptr) {
 	NATURAL (U"Channel number", U"1")
 	OK2
 DO
@@ -663,7 +668,7 @@ DO
 	}
 END2 }
 
-FORM (ERPTier_getChannelNumber, U"Get channel number", 0) {
+FORM (ERPTier_getChannelNumber, U"Get channel number", nullptr) {
 	WORD (U"Channel name", U"Cz")
 	OK2
 DO
@@ -687,7 +692,7 @@ DO
 	}
 END2 }
 
-FORM (ERPTier_rejectArtefacts, U"Reject artefacts", 0) {
+FORM (ERPTier_rejectArtefacts, U"Reject artefacts", nullptr) {
 	POSITIVE (U"Threshold (V)", U"75e-6")
 	OK2
 DO
@@ -705,12 +710,12 @@ FORM (ERPTier_removeEventsBetween, U"Remove events", U"ERPTier: Remove events be
 DO
 	LOOP {
 		iam (ERPTier);
-		AnyTier_removePointsBetween (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"));
+		AnyTier_removePointsBetween (me->asAnyTier(), GET_REAL (U"left Time range"), GET_REAL (U"right Time range"));
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (ERPTier_subtractBaseline, U"Subtract baseline", 0) {
+FORM (ERPTier_subtractBaseline, U"Subtract baseline", nullptr) {
 	REAL (U"From time (s)", U"-0.11")
 	REAL (U"To time (s)", U"0.0")
 	OK2
@@ -722,14 +727,14 @@ DO
 	}
 END2 }
 
-FORM (ERPTier_to_ERP, U"ERPTier: To ERP", 0) {
+FORM (ERPTier_to_ERP, U"ERPTier: To ERP", nullptr) {
 	NATURAL (U"Event number", U"1")
 	OK2
 DO
 	LOOP {
 		iam (ERPTier);
 		autoERP thee = ERPTier_extractERP (me, GET_INTEGER (U"Event number"));
-		praat_new (thee.transfer(), my name, U"_mean");
+		praat_new (thee.move(), my name, U"_mean");
 	}
 END2 }
 
@@ -737,13 +742,13 @@ DIRECT2 (ERPTier_to_ERP_mean) {
 	LOOP {
 		iam (ERPTier);
 		autoERP thee = ERPTier_to_ERP_mean (me);
-		praat_new (thee.transfer(), my name, U"_mean");
+		praat_new (thee.move(), my name, U"_mean");
 	}
 END2 }
 
 /***** ERPTier & Table *****/
 
-FORM (ERPTier_Table_extractEventsWhereColumn_number, U"Extract events where column (number)", 0) {
+FORM (ERPTier_Table_extractEventsWhereColumn_number, U"Extract events where column (number)", nullptr) {
 	WORD (U"Extract all events where column...", U"")
 	RADIO_ENUM (U"...is...", kMelder_number, DEFAULT)
 	REAL (U"...the number", U"0.0")
@@ -753,7 +758,7 @@ DO
 	Table table = FIRST (Table);
 	long columnNumber = Table_getColumnIndexFromColumnLabel (table, GET_STRING (U"Extract all events where column..."));
 	autoERPTier thee = ERPTier_extractEventsWhereColumn_number (erpTier, table, columnNumber, GET_ENUM (kMelder_number, U"...is..."), GET_REAL (U"...the number"));
-	praat_new (thee.transfer(), erpTier -> name);
+	praat_new (thee.move(), erpTier -> name);
 END2 }
 
 FORM (ERPTier_Table_extractEventsWhereColumn_text, U"Extract events where column (text)", 0) {
@@ -766,7 +771,7 @@ DO
 	Table table = FIRST (Table);
 	long columnNumber = Table_getColumnIndexFromColumnLabel (table, GET_STRING (U"Extract all events where column..."));
 	autoERPTier thee = ERPTier_extractEventsWhereColumn_string (erpTier, table, columnNumber, GET_ENUM (kMelder_string, U"..."), GET_STRING (U"...the text"));
-	praat_new (thee.transfer(), erpTier -> name);
+	praat_new (thee.move(), erpTier -> name);
 END2 }
 
 /***** Help menus *****/
@@ -781,14 +786,13 @@ END2 }
 
 /***** file recognizers *****/
 
-static Any bdfFileRecognizer (int nread, const char *header, MelderFile file) {
-	(void) header;
+static autoDaata bdfFileRecognizer (int nread, const char * /* header */, MelderFile file) {
 	const char32 *fileName = MelderFile_name (file);
 	bool isBdfFile = Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".bdf") ||
 	                 Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".BDF");
 	bool isEdfFile = Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".edf") ||
 	                 Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".EDF");
-	if (nread < 512 || (! isBdfFile && ! isEdfFile)) return NULL;
+	if (nread < 512 || (! isBdfFile && ! isEdfFile)) return autoDaata ();
 	return EEG_readFromBdfFile (file);
 }
 
@@ -796,94 +800,94 @@ static Any bdfFileRecognizer (int nread, const char *header, MelderFile file) {
 
 void praat_TimeTier_query_init (ClassInfo klas);   // Query buttons for time-based subclasses of AnyTier.
 
-void praat_EEG_init (void);
-void praat_EEG_init (void) {
+void praat_EEG_init ();
+void praat_EEG_init () {
 
-	Thing_recognizeClassesByName (classEEG, classERPTier, classERP, NULL);
+	Thing_recognizeClassesByName (classEEG, classERPTier, classERP, nullptr);
 
 	Data_recognizeFileType (bdfFileRecognizer);
 
-	praat_addAction1 (classEEG, 0, U"EEG help", 0, 0, DO_EEG_help);
-	praat_addAction1 (classEEG, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_EEG_viewAndEdit);
-	praat_addAction1 (classEEG, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"Get channel name...", 0, 1, DO_EEG_getChannelName);
-		praat_addAction1 (classEEG, 0, U"Get channel number...", 0, 1, DO_EEG_getChannelNumber);
-	praat_addAction1 (classEEG, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"Set channel name...", 0, 1, DO_EEG_setChannelName);
-		praat_addAction1 (classEEG, 1, U"Edit external electrode names...", 0, 1, DO_EEG_editExternalElectrodeNames);
-		praat_addAction1 (classEEG, 0, U"-- processing --", 0, 1, 0);
-		praat_addAction1 (classEEG, 0, U"Subtract reference...", 0, 1, DO_EEG_subtractReference);
-		praat_addAction1 (classEEG, 0, U"Subtract mean channel...", 0, 1, DO_EEG_subtractMeanChannel);
-		praat_addAction1 (classEEG, 0, U"Detrend", 0, 1, DO_EEG_detrend);
-		praat_addAction1 (classEEG, 0, U"Filter...", 0, 1, DO_EEG_filter);
-		praat_addAction1 (classEEG, 0, U"Remove triggers...", 0, 1, DO_EEG_removeTriggers);
-		praat_addAction1 (classEEG, 0, U"Set channel to zero...", 0, 1, DO_EEG_setChannelToZero);
-	praat_addAction1 (classEEG, 0, U"Analyse", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"Extract channel...", 0, 0, DO_EEG_extractChannel);
-		praat_addAction1 (classEEG, 1, U"Extract part...", 0, 0, DO_EEG_extractPart);
-		praat_addAction1 (classEEG, 0, U"To ERPTier -", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"To ERPTier (bit)...", 0, 1, DO_EEG_to_ERPTier_bit);
-		praat_addAction1 (classEEG, 0, U"To ERPTier (marker)...", 0, 1, DO_EEG_to_ERPTier_marker);
-		praat_addAction1 (classEEG, 0, U"To ERPTier (triggers)...", 0, 1, DO_EEG_to_ERPTier_triggers);
-		praat_addAction1 (classEEG, 0, U"To ERPTier (triggers, preceded)...", 0, 1, DO_EEG_to_ERPTier_triggers_preceded);
-		praat_addAction1 (classEEG, 0, U"To ERPTier...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_EEG_to_ERPTier_bit);
-		praat_addAction1 (classEEG, 0, U"To MixingMatrix...", 0, 0, DO_EEG_to_MixingMatrix);
-	praat_addAction1 (classEEG, 0, U"Synthesize", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"Concatenate", 0, 0, DO_EEGs_concatenate);
-	praat_addAction1 (classEEG, 0, U"Hack -", 0, 0, 0);
-		praat_addAction1 (classEEG, 0, U"Extract waveforms as Sound", 0, 1, DO_EEG_extractSound);
-		praat_addAction1 (classEEG, 0, U"Extract marks as TextGrid", 0, 1, DO_EEG_extractTextGrid);
-
-	praat_addAction1 (classERP, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_ERP_viewAndEdit);
-	praat_addAction1 (classERP, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classERP, 0, U"Draw...", 0, 1, DO_ERP_draw);
-		praat_addAction1 (classERP, 0, U"Draw scalp...", 0, 1, DO_ERP_drawScalp);
-		praat_addAction1 (classERP, 0, U"Draw scalp (colour)...", 0, 1, DO_ERP_drawScalp_colour);
-		praat_addAction1 (classERP, 0, U"Draw scalp (garnish)...", 0, 1, DO_ERP_drawScalp_garnish);
-	praat_addAction1 (classERP, 0, U"Tabulate -", 0, 0, 0);
-		praat_addAction1 (classERP, 0, U"Down to Table...", 0, 1, DO_ERP_downto_Table);
-	praat_addAction1 (classERP, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classERP, 0, U"Get channel name...", 0, 1, DO_ERP_getChannelName);
-		praat_addAction1 (classERP, 0, U"Get channel number...", 0, 1, DO_ERP_getChannelNumber);
-		praat_addAction1 (classERP, 0, U"-- get shape --", 0, 1, 0);
-		praat_addAction1 (classERP, 0, U"Get minimum...", 0, 1, DO_ERP_getMinimum);
-		praat_addAction1 (classERP, 0, U"Get time of minimum...", 0, 1, DO_ERP_getTimeOfMinimum);
-		praat_addAction1 (classERP, 0, U"Get maximum...", 0, 1, DO_ERP_getMaximum);
-		praat_addAction1 (classERP, 0, U"Get time of maximum...", 0, 1, DO_ERP_getTimeOfMaximum);
-		praat_addAction1 (classERP, 0, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classERP, 0, U"Get mean...", 0, 1, DO_ERP_getMean);
-	praat_addAction1 (classERP, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classERP, 0, U"Formula...", 0, 1, DO_ERP_formula);
-		praat_addAction1 (classERP, 0, U"Formula (part)...", 0, 1, DO_ERP_formula_part);
-	// praat_addAction1 (classERP, 0, U"Analyse -", 0, 0, 0);
-		// praat_addAction1 (classERP, 0, U"To ERP (difference)", 0, 1, DO_ERP_to_ERP_difference);
-		// praat_addAction1 (classERP, 0, U"To ERP (mean)", 0, 1, DO_ERP_to_ERP_mean);
-	praat_addAction1 (classERP, 0, U"Hack -", 0, 0, 0);
-		praat_addAction1 (classERP, 0, U"Down to Sound", 0, 1, DO_ERP_downto_Sound);
-		praat_addAction1 (classERP, 0, U"Extract one channel as Sound...", 0, 1, DO_ERP_extractOneChannelAsSound);
-
-	praat_addAction1 (classERPTier, 0, U"ERPTier help", 0, 0, DO_ERPTier_help);
-	// praat_addAction1 (classERPTier, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_ERPTier_viewAndEdit);
-	praat_addAction1 (classERPTier, 0, U"Query -", 0, 0, 0);
+	praat_addAction1 (classEEG, 0, U"EEG help", nullptr, 0, DO_EEG_help);
+	praat_addAction1 (classEEG, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_EEG_viewAndEdit);
+	praat_addAction1 (classEEG, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"Get channel name...", nullptr, 1, DO_EEG_getChannelName);
+		praat_addAction1 (classEEG, 0, U"Get channel number...", nullptr, 1, DO_EEG_getChannelNumber);
+	praat_addAction1 (classEEG, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"Set channel name...", nullptr, 1, DO_EEG_setChannelName);
+		praat_addAction1 (classEEG, 1, U"Edit external electrode names...", nullptr, 1, DO_EEG_editExternalElectrodeNames);
+		praat_addAction1 (classEEG, 0, U"-- processing --", nullptr, 1, nullptr);
+		praat_addAction1 (classEEG, 0, U"Subtract reference...", nullptr, 1, DO_EEG_subtractReference);
+		praat_addAction1 (classEEG, 0, U"Subtract mean channel...", nullptr, 1, DO_EEG_subtractMeanChannel);
+		praat_addAction1 (classEEG, 0, U"Detrend", nullptr, 1, DO_EEG_detrend);
+		praat_addAction1 (classEEG, 0, U"Filter...", nullptr, 1, DO_EEG_filter);
+		praat_addAction1 (classEEG, 0, U"Remove triggers...", nullptr, 1, DO_EEG_removeTriggers);
+		praat_addAction1 (classEEG, 0, U"Set channel to zero...", nullptr, 1, DO_EEG_setChannelToZero);
+	praat_addAction1 (classEEG, 0, U"Analyse", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"Extract channel...", nullptr, 0, DO_EEG_extractChannel);
+		praat_addAction1 (classEEG, 1, U"Extract part...", nullptr, 0, DO_EEG_extractPart);
+		praat_addAction1 (classEEG, 0, U"To ERPTier -", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"To ERPTier (bit)...", nullptr, 1, DO_EEG_to_ERPTier_bit);
+		praat_addAction1 (classEEG, 0, U"To ERPTier (marker)...", nullptr, 1, DO_EEG_to_ERPTier_marker);
+		praat_addAction1 (classEEG, 0, U"To ERPTier (triggers)...", nullptr, 1, DO_EEG_to_ERPTier_triggers);
+		praat_addAction1 (classEEG, 0, U"To ERPTier (triggers, preceded)...", nullptr, 1, DO_EEG_to_ERPTier_triggers_preceded);
+		praat_addAction1 (classEEG, 0, U"To ERPTier...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_EEG_to_ERPTier_bit);
+		praat_addAction1 (classEEG, 0, U"To MixingMatrix...", nullptr, 0, DO_EEG_to_MixingMatrix);
+	praat_addAction1 (classEEG, 0, U"Synthesize", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"Concatenate", nullptr, 0, DO_EEGs_concatenate);
+	praat_addAction1 (classEEG, 0, U"Hack -", nullptr, 0, nullptr);
+		praat_addAction1 (classEEG, 0, U"Extract waveforms as Sound", nullptr, 1, DO_EEG_extractSound);
+		praat_addAction1 (classEEG, 0, U"Extract marks as TextGrid", nullptr, 1, DO_EEG_extractTextGrid);
+
+	praat_addAction1 (classERP, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_ERP_viewAndEdit);
+	praat_addAction1 (classERP, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classERP, 0, U"Draw...", nullptr, 1, DO_ERP_draw);
+		praat_addAction1 (classERP, 0, U"Draw scalp...", nullptr, 1, DO_ERP_drawScalp);
+		praat_addAction1 (classERP, 0, U"Draw scalp (colour)...", nullptr, 1, DO_ERP_drawScalp_colour);
+		praat_addAction1 (classERP, 0, U"Draw scalp (garnish)...", nullptr, 1, DO_ERP_drawScalp_garnish);
+	praat_addAction1 (classERP, 0, U"Tabulate -", nullptr, 0, nullptr);
+		praat_addAction1 (classERP, 0, U"Down to Table...", nullptr, 1, DO_ERP_downto_Table);
+	praat_addAction1 (classERP, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classERP, 0, U"Get channel name...", nullptr, 1, DO_ERP_getChannelName);
+		praat_addAction1 (classERP, 0, U"Get channel number...", nullptr, 1, DO_ERP_getChannelNumber);
+		praat_addAction1 (classERP, 0, U"-- get shape --", nullptr, 1, nullptr);
+		praat_addAction1 (classERP, 0, U"Get minimum...", nullptr, 1, DO_ERP_getMinimum);
+		praat_addAction1 (classERP, 0, U"Get time of minimum...", nullptr, 1, DO_ERP_getTimeOfMinimum);
+		praat_addAction1 (classERP, 0, U"Get maximum...", nullptr, 1, DO_ERP_getMaximum);
+		praat_addAction1 (classERP, 0, U"Get time of maximum...", nullptr, 1, DO_ERP_getTimeOfMaximum);
+		praat_addAction1 (classERP, 0, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classERP, 0, U"Get mean...", nullptr, 1, DO_ERP_getMean);
+	praat_addAction1 (classERP, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classERP, 0, U"Formula...", nullptr, 1, DO_ERP_formula);
+		praat_addAction1 (classERP, 0, U"Formula (part)...", nullptr, 1, DO_ERP_formula_part);
+	// praat_addAction1 (classERP, 0, U"Analyse -", nullptr, 0, nullptr);
+		// praat_addAction1 (classERP, 0, U"To ERP (difference)", nullptr, 1, DO_ERP_to_ERP_difference);
+		// praat_addAction1 (classERP, 0, U"To ERP (mean)", nullptr, 1, DO_ERP_to_ERP_mean);
+	praat_addAction1 (classERP, 0, U"Hack -", nullptr, 0, nullptr);
+		praat_addAction1 (classERP, 0, U"Down to Sound", nullptr, 1, DO_ERP_downto_Sound);
+		praat_addAction1 (classERP, 0, U"Extract one channel as Sound...", nullptr, 1, DO_ERP_extractOneChannelAsSound);
+
+	praat_addAction1 (classERPTier, 0, U"ERPTier help", nullptr, 0, DO_ERPTier_help);
+	// praat_addAction1 (classERPTier, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_ERPTier_viewAndEdit);
+	praat_addAction1 (classERPTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classERPTier);
-		praat_addAction1 (classERPTier, 0, U"-- channel names --", 0, 1, 0);
-		praat_addAction1 (classERPTier, 0, U"Get channel name...", 0, 1, DO_ERPTier_getChannelName);
-		praat_addAction1 (classERPTier, 0, U"Get channel number...", 0, 1, DO_ERPTier_getChannelNumber);
-		praat_addAction1 (classERPTier, 0, U"-- erp --", 0, 1, 0);
-		praat_addAction1 (classERPTier, 0, U"Get mean...", 0, 1, DO_ERPTier_getMean);
-	praat_addAction1 (classERPTier, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classERPTier, 0, U"Subtract baseline...", 0, 1, DO_ERPTier_subtractBaseline);
-		praat_addAction1 (classERPTier, 0, U"Reject artefacts...", 0, 1, DO_ERPTier_rejectArtefacts);
-		praat_addAction1 (classERPTier, 0, U"-- structure --", 0, 1, 0);
-		praat_addAction1 (classERPTier, 0, U"Remove events between...", 0, 1, DO_ERPTier_removeEventsBetween);
-	praat_addAction1 (classERPTier, 0, U"Analyse", 0, 0, 0);
-		praat_addAction1 (classERPTier, 0, U"Extract ERP...", 0, 0, DO_ERPTier_to_ERP);
-		praat_addAction1 (classERPTier, 0, U"To ERP (mean)", 0, 0, DO_ERPTier_to_ERP_mean);
-
-	praat_addAction2 (classEEG, 1, classTextGrid, 1, U"Replace TextGrid", 0, 0, DO_EEG_TextGrid_replaceTextGrid);
-	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract -", 0, 0, 0);
-	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract events where column (number)...", 0, 1, DO_ERPTier_Table_extractEventsWhereColumn_number);
-	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract events where column (text)...", 0, 1, DO_ERPTier_Table_extractEventsWhereColumn_text);
+		praat_addAction1 (classERPTier, 0, U"-- channel names --", nullptr, 1, nullptr);
+		praat_addAction1 (classERPTier, 0, U"Get channel name...", nullptr, 1, DO_ERPTier_getChannelName);
+		praat_addAction1 (classERPTier, 0, U"Get channel number...", nullptr, 1, DO_ERPTier_getChannelNumber);
+		praat_addAction1 (classERPTier, 0, U"-- erp --", nullptr, 1, nullptr);
+		praat_addAction1 (classERPTier, 0, U"Get mean...", nullptr, 1, DO_ERPTier_getMean);
+	praat_addAction1 (classERPTier, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classERPTier, 0, U"Subtract baseline...", nullptr, 1, DO_ERPTier_subtractBaseline);
+		praat_addAction1 (classERPTier, 0, U"Reject artefacts...", nullptr, 1, DO_ERPTier_rejectArtefacts);
+		praat_addAction1 (classERPTier, 0, U"-- structure --", nullptr, 1, nullptr);
+		praat_addAction1 (classERPTier, 0, U"Remove events between...", nullptr, 1, DO_ERPTier_removeEventsBetween);
+	praat_addAction1 (classERPTier, 0, U"Analyse", nullptr, 0, nullptr);
+		praat_addAction1 (classERPTier, 0, U"Extract ERP...", nullptr, 0, DO_ERPTier_to_ERP);
+		praat_addAction1 (classERPTier, 0, U"To ERP (mean)", nullptr, 0, DO_ERPTier_to_ERP_mean);
+
+	praat_addAction2 (classEEG, 1, classTextGrid, 1, U"Replace TextGrid", nullptr, 0, DO_EEG_TextGrid_replaceTextGrid);
+	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract -", nullptr, 0, nullptr);
+	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract events where column (number)...", nullptr, 1, DO_ERPTier_Table_extractEventsWhereColumn_number);
+	praat_addAction2 (classERPTier, 1, classTable, 1, U"Extract events where column (text)...", nullptr, 1, DO_ERPTier_Table_extractEventsWhereColumn_text);
 
 	structEEGWindow :: f_preferences ();
 	structERPWindow :: f_preferences ();
diff --git a/FFNet/FFNet.cpp b/FFNet/FFNet.cpp
index b24b1bd..1f05fdb 100644
--- a/FFNet/FFNet.cpp
+++ b/FFNet/FFNet.cpp
@@ -1,20 +1,19 @@
 /* FFNet.cpp
  *
- * Copyright (C) 1997-2011, 2015 David Weenink
+ * Copyright (C) 1997-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -62,12 +61,12 @@ static void bookkeeping (FFNet me);
 #include "oo_DESCRIPTION.h"
 #include "FFNet_def.h"
 
-Thing_implement (FFNet, Data, 0);
+Thing_implement (FFNet, Daata, 0);
 
 static void FFNet_checkLayerNumber (FFNet me, long layer) {
 	if (layer < 1 || layer > my nLayers) {
 		if (layer == 0) {
-			Melder_throw (U"A Layer number of 0 is not allowed.");
+			Melder_throw (U"A layer number of 0 is not allowed.");
 		} else if (layer < 0) {
 			Melder_throw (U"A negative layer number is not allowed.");
 		} else if (layer > my nLayers) {
@@ -87,26 +86,25 @@ static void FFNet_checkLayerNumber (FFNet me, long layer) {
 	}
 }
 
-char32 *FFNet_createNameFromTopology (FFNet me) {
+autostring32 FFNet_createNameFromTopology (FFNet me) {
 	autoMelderString name;
 	MelderString_copy (&name, my nUnitsInLayer[0]);
 	for (long i = 1; i <= my nLayers; i++) {
 		MelderString_appendCharacter (&name, U'-');
 		MelderString_append (&name, my nUnitsInLayer[i]);
 	}
-	return name.transfer();
+	autostring32 naam = Melder_dup (name.string);
+	return naam.transfer();
 }
 
 /****** non-linearities ****************************************************/
 
-static double sigmoid (I, double x, double *deriv) {
+static double sigmoid (FFNet /*me*/, double x, double *deriv) {
 	double act = NUMsigmoid (x);
-	(void) void_me;
 	*deriv = act * (1.0 - act);
 	return act;
 }
 
-
 /* ******************* cost functions ****************************************/
 
 /*
@@ -115,8 +113,7 @@ static double sigmoid (I, double x, double *deriv) {
 		if target < activity ==> error < 0
 */
 
-static double minimumSquaredError (I, const double target[]) {
-	iam (FFNet);
+static double minimumSquaredError (FFNet me, const double target[]) {
 	long k = my nNodes - my nOutputs + 1;
 	double cost = 0.0;
 	for (long i = 1; i <= my nOutputs; i++, k++) {
@@ -129,8 +126,7 @@ static double minimumSquaredError (I, const double target[]) {
 /* E = - sum (i=1; i=nPatterns; sum (k=1;k=nOutputs; t[k]*ln (o[k]) + (1-t[k])ln (1-o[k]))) */
 /* dE/do[k] = -(1-t[k])/ (1-o[k]) + t[k]/o[k] */
 /* werkt niet bij (grote?) netten */
-static double minimumCrossEntropy (I, const double target[]) {
-	iam (FFNet);
+static double minimumCrossEntropy (FFNet me, const double target[]) {
 	long k = my nNodes - my nOutputs + 1;
 	double cost = 0.0;
 
@@ -147,7 +143,7 @@ static double minimumCrossEntropy (I, const double target[]) {
 
 /* *********************************************************************** */
 
-void bookkeeping (FFNet me) {
+static void bookkeeping (FFNet me) {
 	long nWeights = 0;
 	my nNodes = my nUnitsInLayer[0];
 	for (long i = 1; i <= my nLayers; i++) {
@@ -160,7 +156,7 @@ void bookkeeping (FFNet me) {
 	my nWeights = nWeights;
 
 	// The following test is essential because when an FFNet is read from file the w array already exists
-	if (my w == 0) {
+	if (! my w) {
 		my w = NUMvector<double> (1, my nWeights);
 	}
 	my activity = NUMvector<double> (1, my nNodes);
@@ -200,47 +196,46 @@ void bookkeeping (FFNet me) {
 }
 
 void structFFNet :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"Number of layers: ", nLayers);
+	our structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of layers: ", our nLayers);
 	MelderInfo_writeLine (U"Total number of units: ", FFNet_getNumberOfUnits (this));
-	MelderInfo_writeLine (U"   Number of units in layer ", nLayers, U" (output): ", nUnitsInLayer[nLayers]);
-	for (long i = nLayers - 1; i >= 1; i--) {
-		MelderInfo_writeLine (U"   Number of units in layer ", i, U" (hidden): ", nUnitsInLayer[i]);
+	MelderInfo_writeLine (U"   Number of units in layer ", our nLayers, U" (output): ", our nUnitsInLayer [nLayers]);
+	for (long i = our nLayers - 1; i >= 1; i --) {
+		MelderInfo_writeLine (U"   Number of units in layer ", i, U" (hidden): ", our nUnitsInLayer [i]);
 	}
-	MelderInfo_writeLine (U"   Number of units in layer 0 (input): ", nUnitsInLayer[0]);
-	MelderInfo_writeLine (U"Outputs are linear: ", Melder_boolean (outputsAreLinear));
-	MelderInfo_writeLine (U"Number of weights: ", nWeights, U" (",
+	MelderInfo_writeLine (U"   Number of units in layer 0 (input): ", our nUnitsInLayer [0]);
+	MelderInfo_writeLine (U"Outputs are linear: ", Melder_boolean (our outputsAreLinear));
+	MelderInfo_writeLine (U"Number of weights: ", our nWeights, U" (",
 	                       FFNet_dimensionOfSearchSpace (this), U" selected)");
-	MelderInfo_writeLine (U"Number of nodes: ", nNodes);
+	MelderInfo_writeLine (U"Number of nodes: ", our nNodes);
 }
 
-void FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesInLayer2,
-                 long numberOfOutputs, int outputsAreLinear) {
+void FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesInLayer2, long numberOfOutputs, bool outputsAreLinear) {
 	long numberOfLayers = 3;
 
 	if (numberOfInputs < 1) {
-		Melder_throw (U"Number of inputs must be a natrural number.");
+		Melder_throw (U"Number of inputs must be a natural number.");
 	}
 	if (numberOfOutputs < 1) {
-		Melder_throw (U"Number of outputs must be a natrural number.");
+		Melder_throw (U"Number of outputs must be a natural number.");
 	}
 	if (nodesInLayer1 < 1) {
-		numberOfLayers--;
+		numberOfLayers --;
 	}
 	if (nodesInLayer2 < 1) {
-		numberOfLayers--;
+		numberOfLayers --;
 	}
 	my nLayers = numberOfLayers;
 	my nUnitsInLayer = NUMvector<long> (0, numberOfLayers);
 
-	my nUnitsInLayer[numberOfLayers--] = numberOfOutputs;
+	my nUnitsInLayer [numberOfLayers --] = numberOfOutputs;
 	if (nodesInLayer2 > 0) {
-		my nUnitsInLayer[numberOfLayers--] = nodesInLayer2;
+		my nUnitsInLayer [numberOfLayers --] = nodesInLayer2;
 	}
 	if (nodesInLayer1 > 0) {
-		my nUnitsInLayer[numberOfLayers--] = nodesInLayer1;
+		my nUnitsInLayer [numberOfLayers --] = nodesInLayer1;
 	}
-	my nUnitsInLayer[numberOfLayers] = numberOfInputs;
+	my nUnitsInLayer [numberOfLayers] = numberOfInputs;
 	Melder_assert (numberOfLayers == 0);
 	my outputsAreLinear = outputsAreLinear;
 
@@ -252,19 +247,17 @@ void FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesIn
 }
 
 void FFNet_setOutputCategories (FFNet me, Categories thee) {
-	autoCategories uniq = Categories_selectUniqueItems (thee, 1);
-	if (uniq -> size == thy size) {
-		forget (my outputCategories);
-		my outputCategories = uniq.transfer();
+	autoCategories uniq = Categories_selectUniqueItems (thee);
+	if (uniq->size == thy size) {
+		my outputCategories = uniq.move();
 	}
 }
 
-FFNet FFNet_create (long numberOfInputs, long numberInLayer1, long numberInLayer2,
-                    long numberOfOutputs, int outputsAreLinear) {
+autoFFNet FFNet_create (long numberOfInputs, long numberInLayer1, long numberInLayer2, long numberOfOutputs, bool outputsAreLinear) {
 	try {
 		autoFFNet me = Thing_new (FFNet);
-		FFNet_init (me.peek(), numberOfInputs, numberInLayer1, numberInLayer2, numberOfOutputs, outputsAreLinear);
-		return me.transfer();
+		FFNet_init (me.get(), numberOfInputs, numberInLayer1, numberInLayer2, numberOfOutputs, outputsAreLinear);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FFNet not created.");
 	}
@@ -273,7 +266,7 @@ FFNet FFNet_create (long numberOfInputs, long numberInLayer1, long numberInLayer
 void FFNet_setNonLinearity (FFNet me, int nonLinearityType) {
 	my nonLinearityType = nonLinearityType;
 	my nonLinearity = sigmoid;
-	my nlClosure = NULL;
+	my nlClosure = nullptr;
 }
 
 void FFNet_setCostFunction (FFNet me, int costType) {
@@ -283,7 +276,7 @@ void FFNet_setCostFunction (FFNet me, int costType) {
 	} else {
 		my costFunction = minimumSquaredError;
 	}
-	my cfClosure = NULL;
+	my cfClosure = nullptr;
 }
 
 double FFNet_getBias (FFNet me, long layer, long unit) {
@@ -304,7 +297,7 @@ void FFNet_setBias (FFNet me, long layer, long unit, double value) {
 	if (node < 1) {
 		Melder_throw (U"Not a valid unit / layer combination.");
 	}
-	long bias_unit = my wLast[node]; // ??? +1
+	long bias_unit = my wLast [node]; // ??? +1
 	my w[bias_unit] = value;
 }
 
@@ -317,7 +310,7 @@ void FFNet_setWeight (FFNet me, long layer, long unit, long unit_from, double va
 	if (nodef < 1) {
 		Melder_throw (U"Not a valid unit / layer combination.");
 	}
-	long w_unit = my wFirst[node] + unit_from - 1;
+	long w_unit = my wFirst [node] + unit_from - 1;
 	my w[w_unit] = value;
 }
 
@@ -334,16 +327,17 @@ double FFNet_getWeight (FFNet me, long layer, long unit, long unit_from) {
 	return my w[w_unit];
 }
 
-void FFNet_reset (FFNet me, double wrange) {
-	for (long i = 1; i <= my nWeights; i++)
-		if (my wSelected[i]) {
-			my w[i] = NUMrandomUniform (-wrange, wrange);
+void FFNet_reset (FFNet me, double weightRange) {
+	for (long i = 1; i <= my nWeights; i ++) {
+		if (my wSelected [i]) {
+			my w [i] = NUMrandomUniform (- weightRange, weightRange);
 		}
-	for (long i = 1; i <= my nNodes; i++) {
-		my activity[i] = (my isbias[i] ? 1.0 : 0.0);
+	}
+	for (long i = 1; i <= my nNodes; i ++) {
+		my activity [i] = ( my isbias [i] ? 1.0 : 0.0 );
 	}
 	my accumulatedCost = 0.0;
-	forget (my minimizer);
+	my minimizer.reset();
 }
 
 
@@ -382,9 +376,11 @@ void FFNet_propagate (FFNet me, const double input[], double output[]) {
 		}
 	}
 	k = my nNodes - my nOutputs + 1;
-	if (output) for (long i = 1; i <= my nOutputs; i++, k++) {
+	if (output) {
+		for (long i = 1; i <= my nOutputs; i++, k++) {
 			output[i] = my activity[k];
 		}
+	}
 }
 
 
@@ -426,14 +422,16 @@ void FFNet_computeDerivative (FFNet me) {
 long FFNet_getWinningUnit (FFNet me, int labeling) {
 	long pos = 1, k = my nNodes - my nOutputs;
 	if (labeling == 2) { /* stochastic */
-		double sum = 0;
+		double sum = 0.0;
 		for (long i = 1; i <= my nOutputs; i++) {
 			sum += my activity[k + i];
 		}
-		double random = NUMrandomUniform (0, sum);
-		for (pos = my nOutputs; pos >= 2; pos--) if (random > (sum -= my activity[k + pos])) {
+		double random = NUMrandomUniform (0.0, sum);
+		for (pos = my nOutputs; pos >= 2; pos--) {
+			if (random > (sum -= my activity[k + pos])) {
 				break;
 			}
+		}
 	} else { /* winner-takes-all */
 		double max = my activity[k + 1];
 		for (long i = 2; i <= my nOutputs; i++) if (my activity[k + i] > max) {
@@ -447,7 +445,7 @@ long FFNet_getWinningUnit (FFNet me, int labeling) {
 void FFNet_propagateToLayer (FFNet me, const double input[], double activity[], long layer) {
 	Melder_assert (activity);
 	long k = 0;
-	FFNet_propagate (me, input, 0);
+	FFNet_propagate (me, input, nullptr);
 	for (long i = 0; i < layer; i++) {
 		k += my nUnitsInLayer[i] + 1;
 	}
@@ -479,7 +477,7 @@ void FFNet_selectBiasesInLayer (FFNet me, long layer) {
 		return;
 	}
 	for (long i = 1; i <= my nWeights; i++) {
-		my wSelected[i] = 0;
+		my wSelected[i] = 0.0;
 	}
 	for (long i = 1; i < layer; i++) {
 		node += my nUnitsInLayer[i] + 1;
@@ -501,9 +499,15 @@ void FFNet_weightConnectsUnits (FFNet me, long index, long *fromUnit, long *toUn
 	if (i > 1) {
 		index -= nw - np;
 	}
-	*fromUnit = index % (my nUnitsInLayer[i - 1] + 1);
-	*toUnit = (index - 1) / (my nUnitsInLayer[i - 1] + 1) + 1;
-	*layer = i;
+	if (fromUnit) {
+		*fromUnit = index % (my nUnitsInLayer[i - 1] + 1);
+	}
+	if (toUnit) {
+		*toUnit = (index - 1) / (my nUnitsInLayer[i - 1] + 1) + 1;
+	}
+	if (layer) {
+		*layer = i;
+	}
 }
 
 long FFNet_getNodeNumberFromUnitNumber (FFNet me, long unit, long layer) {
@@ -556,7 +560,7 @@ long FFNet_getNumberOfUnitsInLayer (FFNet me, int layer) {
 }
 
 double FFNet_getMinimum (FFNet me) {
-	return my minimizer ? Minimizer_getMinimum (my minimizer) : NUMundefined;
+	return my minimizer ? Minimizer_getMinimum (my minimizer.get()) : NUMundefined;
 }
 
 void FFNet_drawTopology (FFNet me, Graphics g) {
@@ -570,7 +574,7 @@ void FFNet_drawTopology (FFNet me, Graphics g) {
 		}
 	}
 	double dx = 1.0 / maxNumOfUnits;
-	double radius = dx / 10;
+	double radius = dx / 10.0;
 	Graphics_setInner (g);
 	Graphics_setWindow (g, 0.0, 1.0, 0.0, 1.0);
 	for (long i = 0; i <= my nLayers; i++) {
@@ -579,13 +583,13 @@ void FFNet_drawTopology (FFNet me, Graphics g) {
 		/* draw the units */
 		if (! dxIsFixed) {
 			dx2 = 1.0 / my nUnitsInLayer[i];
-			x2 = dx2 / 2;
+			x2 = dx2 / 2.0;
 		}
 		if (i == 0) {
 			Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_TOP);
 			x2WC = x2;
 			for (long j = 1; j <= my nInputs; j++) {
-				Graphics_arrow (g, x2WC, y2WC - radius - dy / 4, x2WC, y2WC - radius);
+				Graphics_arrow (g, x2WC, y2WC - radius - dy / 4.0, x2WC, y2WC - radius);
 				x2WC += dx2;
 			}
 		}
@@ -601,11 +605,11 @@ void FFNet_drawTopology (FFNet me, Graphics g) {
 		Graphics_setColour (g, Graphics_BLACK);
 		if (i > 0) {
 			double dx1 = dx;
-			double x1 = (maxNumOfUnits - my nUnitsInLayer[i - 1] + 1) * dx1 / 2;
+			double x1 = (maxNumOfUnits - my nUnitsInLayer[i - 1] + 1) * dx1 / 2.0;
 			double y1WC = y2WC - dy;
 			if (! dxIsFixed) {
 				dx1 = 1.0 / my nUnitsInLayer[i - 1];
-				x1 = dx1 / 2;
+				x1 = dx1 / 2.0;
 			}
 			x2WC = x2;
 			for (long j = 1; j <= my nUnitsInLayer[i]; j++) {
@@ -624,9 +628,9 @@ void FFNet_drawTopology (FFNet me, Graphics g) {
 			x2WC = x2;
 			Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
 			for (long j = 1; j <= my nOutputs; j++) {
-				Graphics_arrow (g, x2WC, y2WC + radius, x2WC, y2WC + radius + dy / 4);
+				Graphics_arrow (g, x2WC, y2WC + radius, x2WC, y2WC + radius + dy / 4.0);
 				if (my outputCategories) {
-					Categories_drawItem (my outputCategories, g, j, x2WC, y2WC + radius + dy / 4);
+					Categories_drawItem (my outputCategories.get(), g, j, x2WC, y2WC + radius + dy / 4.0);
 				}
 				x2WC += dx2;
 			}
@@ -649,13 +653,13 @@ void FFNet_drawActivation (FFNet me, Graphics g) {
 		}
 	}
 	double dx = 1.0 / maxNumOfUnits;
-	double r1 = dx / 2; /* May touch when neighbouring activities are both 1 (very rare). */
+	double r1 = dx / 2.0; /* May touch when neighbouring activities are both 1 (very rare). */
 	for (long i = 0; i <= my nLayers; i++, node++) {
-		double dx2 = dx, x2WC, y2WC = dy / 2 + i * dy;
-		double x2 = (maxNumOfUnits - my nUnitsInLayer[i] + 1) * dx2 / 2;
+		double dx2 = dx, x2WC, y2WC = dy / 2.0 + i * dy;
+		double x2 = (maxNumOfUnits - my nUnitsInLayer[i] + 1) * dx2 / 2.0;
 		if (! dxIsFixed) {
 			dx2 = 1.0 / my nUnitsInLayer[i];
-			x2 = dx2 / 2;
+			x2 = dx2 / 2.0;
 		}
 		x2WC = x2;
 		for (long j = 1; j <= my nUnitsInLayer[i]; j++, node++) {
@@ -678,9 +682,9 @@ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int
 	if (layer < 1 || layer > my nLayers) {
 		Melder_throw (U"Layer must be in [1,", my nLayers, U"].");
 	}
-	autoMatrix weights = FFNet_weightsToMatrix (me, layer, 0);
-	Matrix_scale (weights.peek(), scaling);
-	Matrix_drawAsSquares (weights.peek(), g, 0, 0, 0, 0, 0);
+	autoMatrix weights = FFNet_weightsToMatrix (me, layer, false);
+	Matrix_scale (weights.get(), scaling);
+	Matrix_drawAsSquares (weights.get(), g, 0.0, 0.0, 0.0, 0.0, 0);
 	if (garnish) {
 		double x1WC, x2WC, y1WC, y2WC;
 		Graphics_inqWindow (g, & x1WC, & x2WC, & y1WC, & y2WC);
@@ -700,94 +704,95 @@ void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int layer, int scaling, int
 
 void FFNet_drawWeights (FFNet me, Graphics g, long layer, int garnish) {
 	autoTableOfReal thee = FFNet_extractWeights (me, layer);
-	TableOfReal_drawAsSquares (thee.peek(), g, 1, thy numberOfRows, 1, thy numberOfColumns, garnish);
+	TableOfReal_drawAsSquares (thee.get(), g, 1, thy numberOfRows, 1, thy numberOfColumns, garnish);
 }
 
 void FFNet_drawCostHistory (FFNet me, Graphics g, long iFrom, long iTo, double costMin, double costMax, int garnish) {
-	if (my minimizer) Minimizer_drawHistory (my minimizer, g, iFrom, iTo,
-		        costMin, costMax, 0);
+	if (my minimizer) {
+		Minimizer_drawHistory (my minimizer.get(), g, iFrom, iTo, costMin, costMax, 0);
+	}
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, 1, my costFunctionType == FFNet_COST_MSE ?
+		Graphics_textLeft (g, true, my costFunctionType == FFNet_COST_MSE ?
 		                   U"Minimum squared error" : U"Minimum cross entropy");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Number of epochs");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Number of epochs");
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
-Collection FFNet_createIrisExample (long numberOfHidden1, long numberOfHidden2) {
+autoCollection FFNet_createIrisExample (long numberOfHidden1, long numberOfHidden2) {
 	try {
-		autoCollection c = Collection_create (classData, 3);
-		autoCategories uniq = Categories_sequentialNumbers (3);
-		autoFFNet me = FFNet_create (4, numberOfHidden1, numberOfHidden2, 3, 0);
-		FFNet_setOutputCategories (me.peek(), uniq.peek());
-		autostring32 name = FFNet_createNameFromTopology (me.peek());
-		Thing_setName (me.peek(), name.peek());
-		Collection_addItem (c.peek(), me.transfer());
+		autoCollection collection = Collection_create ();
+		autoCategories uniq = Categories_createWithSequentialNumbers (3);
+		autoFFNet me = FFNet_create (4, numberOfHidden1, numberOfHidden2, 3, false);
+		FFNet_setOutputCategories (me.get(), uniq.get());
+		autostring32 name = FFNet_createNameFromTopology (me.get());
+		Thing_setName (me.get(), name.peek());
+		collection -> addItem_move (me.move());
 		autoTableOfReal iris = TableOfReal_createIrisDataset ();
 
-		// Scale data to interval [0-1]
-
-		for (long i = 1; i <= 150; i++) {
-			for (long j = 1; j <= 4; j++) {
-				iris -> data[i][j] /= 10.0;
+		/*
+		 * Scale data to interval [0-1]
+		 */
+		for (long i = 1; i <= 150; i ++) {
+			for (long j = 1; j <= 4; j ++) {
+				iris -> data [i] [j] /= 10.0;
 			}
 		}
 
-		Pattern thee = 0; Categories him = 0;
-		TableOfReal_to_Pattern_and_Categories (iris.peek(), 0, 0, 0, 0, &thee, &him);
-		autoPattern ap = thee; autoCategories ac = him;
-		Thing_setName (ap.peek(), U"iris");
-		Thing_setName (ac.peek(), U"iris");
-		Collection_addItem (c.peek(), ap.transfer());
-		Collection_addItem (c.peek(), ac.transfer());
-		return c.transfer();
+		autoPattern ap;
+		autoCategories ac;
+		TableOfReal_to_Pattern_and_Categories (iris.get(), 0, 0, 0, 0, & ap, & ac);
+		Thing_setName (ap.get(), U"iris");
+		Thing_setName (ac.get(), U"iris");
+		collection -> addItem_move (ap.move());
+		collection -> addItem_move (ac.move());
+		return collection;
 	} catch (MelderError) {
 		Melder_throw (U"Iris example not created.");
 	}
 }
 
-TableOfReal FFNet_extractWeights (FFNet me, long layer) {
+autoTableOfReal FFNet_extractWeights (FFNet me, long layer) {
 	try {
 		FFNet_checkLayerNumber (me, layer);
 
-		long numberOfUnitsFrom = my nUnitsInLayer[layer - 1] + 1;
-		long numberOfUnitsTo = my nUnitsInLayer[layer];
+		long numberOfUnitsFrom = my nUnitsInLayer [layer - 1] + 1;
+		long numberOfUnitsTo = my nUnitsInLayer [layer];
 		autoTableOfReal thee = TableOfReal_create (numberOfUnitsFrom, numberOfUnitsTo);
 
-		char32 label[40];
-		for (long i = 1; i <= numberOfUnitsFrom - 1; i++) {
-			Melder_sprint (label,40, U"L", layer - 1, U"-", i);   // ppgb: 20 chars is niet genoeg voor een long
-			TableOfReal_setRowLabel (thee.peek(), i, label);
+		char32 label [40];
+		for (long i = 1; i <= numberOfUnitsFrom - 1; i ++) {
+			Melder_sprint (label,40, U"L", layer - 1, U"-", i);
+			TableOfReal_setRowLabel (thee.get(), i, label);
 		}
-		TableOfReal_setRowLabel (thee.peek(), numberOfUnitsFrom, U"Bias");
+		TableOfReal_setRowLabel (thee.get(), numberOfUnitsFrom, U"Bias");
 		for (long i = 1; i <= numberOfUnitsTo; i++) {
-			Melder_sprint (label,40, U"L", layer, U"-", i);   // ppgb: 20 chars is niet genoeg voor een long
-			TableOfReal_setColumnLabel (thee.peek(), i, label);
+			Melder_sprint (label,40, U"L", layer, U"-", i);
+			TableOfReal_setColumnLabel (thee.get(), i, label);
 		}
 
 		long node = 1;
-		for (long i = 0; i < layer; i++) {
+		for (long i = 0; i < layer; i ++) {
 			node += my nUnitsInLayer[i] + 1;
 		}
-		for (long i = 1; i <= numberOfUnitsTo; i++, node++) {
+		for (long i = 1; i <= numberOfUnitsTo; i ++, node ++) {
 			long k = 1;
-			for (long j = my wFirst[node]; j <= my wLast[node]; j++) {
-				thy data[k++][i] = my w[j];
+			for (long j = my wFirst [node]; j <= my wLast [node]; j ++) {
+				thy data [k ++] [i] = my w [j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TableOfReal created.");
 	}
 }
 
-FFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer) {
+autoFFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer) {
 	try {
 		FFNet_checkLayerNumber (me, layer);
-		if ( (my nUnitsInLayer[layer] != his numberOfColumns) ||
-		        (my nUnitsInLayer[layer] == his numberOfColumns && my nUnitsInLayer[layer - 1] + 1 == his numberOfRows)) {
+		if (my nUnitsInLayer [layer] != his numberOfColumns || my nUnitsInLayer [layer - 1] + 1 == his numberOfRows) {
 			long trys[1+3], rows[1+3], cols[1+3], ntry = my nLayers > 3 ? 3 : my nLayers, ok = 0;
 			if (my nLayers > 3) {
 				Melder_throw (U"Dimensions don't fit.");
@@ -800,18 +805,19 @@ FFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer) {
 					ok ++;
 				}
 			}
-			if (! rows[layer]) Melder_throw (U"The number of rows in the TableOfReal does not equal \n"
-				                                 U"the number of units in the layer that connect to layer ", layer, U".");
-			else
+			if (! rows[layer]){
+				Melder_throw (U"The number of rows in the TableOfReal does not equal \n"
+				U"the number of units in the layer that connect to layer ", layer, U".");
+			} else {
 				Melder_throw (U"The number of columns in the TableOfReal does not equal \n"
-				              U"the number of units in layer ", layer, U".");
+				    U"the number of units in layer ", layer, U".");
+			}
 			if (ok == 0) {
 				Melder_throw (U"Please quit, there is no appropriate layer in the FFNet for this TableOfReal.");
 			} else {
-				if (ok == 1)
-					Melder_throw (U"Please try again with layer number ",
-					              trys[1] ? trys[1] : (trys[2] ? trys[2] : trys[3]), U".");
-				else {
+				if (ok == 1) {
+					Melder_throw (U"Please try again with layer number ", trys[1] ? trys[1] : (trys[2] ? trys[2] : trys[3]), U".");
+				} else {
 					Melder_throw (U"Please try again with one of the other two layer numbers.");
 				}
 			}
@@ -827,7 +833,7 @@ FFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer) {
 				thy w[j] = his data[k][i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no FFNet created.");
 	}
diff --git a/FFNet/FFNet.h b/FFNet/FFNet.h
index b29fa7b..5b5f71b 100644
--- a/FFNet/FFNet.h
+++ b/FFNet/FFNet.h
@@ -2,21 +2,20 @@
 #define _FFNet_h_
 /* FFNet.h
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,7 +35,6 @@
 #include "TableOfReal.h"
 
 #include "FFNet_def.h"
-oo_CLASS_CREATE (FFNet, Data);
 
 /* Parameters:
  *  long nLayers	    : the #layers in the net (exclusive the inputs)
@@ -118,12 +116,12 @@ oo_CLASS_CREATE (FFNet, Data);
  */
 
 void FFNet_init (FFNet me, long numberOfInputs, long nodesInLayer1, long nodesInLayer2,
-	long numberOfOutputs, int outputsAreLinear);
+	long numberOfOutputs, bool outputsAreLinear);
 
-FFNet FFNet_create (long numberOfInputs, long numberInLayer1, long numberInLayer2,
-	long numberOfOutputs, int outputsAreLinear	);
+autoFFNet FFNet_create (long numberOfInputs, long numberInLayer1, long numberInLayer2,
+	long numberOfOutputs, bool outputsAreLinear);
 
-char32 * FFNet_createNameFromTopology (FFNet me);
+autostring32 FFNet_createNameFromTopology (FFNet me);
 /* Create names as <inputs>-<outputs>, <inputs>-<hidden>-<outputs>,
 	<inputs>-<hidden1>-<hidden2>-<outputs> for 1, 2 or 3 layer networks.
 */
@@ -139,8 +137,11 @@ void FFNet_setNonLinearity (FFNet me, int type);
 void FFNet_setOutputCategories (FFNet me, Categories thee);
 
 double FFNet_getBias (FFNet me, long layer, long unit);
+
 void FFNet_setBias (FFNet me, long layer, long node, double value);
+
 void FFNet_setWeight (FFNet me, long later, long node, long node_from, double value);
+
 double FFNet_getWeight (FFNet me, long later, long node, long node_from);
 
 void FFNet_reset (FFNet me, double wrange);
@@ -155,7 +156,7 @@ void FFNet_propagateToLayer (FFNet me, const double input[], double activity[],
 
 void FFNet_propagate (FFNet me, const double input[], double output[]);
 /* step (1) feed forward input from "input layer" to "output layer"
- * if output != NULL the output activity is copied into output.
+ * if output != nullptr the output activity is copied into output.
  * postcondition: my activities defined
  */
 
@@ -173,6 +174,7 @@ long FFNet_getWinningUnit (FFNet me, int labeling);
 /* labeling = 2 : stochastic */
 
 void FFNet_selectAllWeights (FFNet me);
+
 void FFNet_selectBiasesInLayer (FFNet me, long layer);
 
 long FFNet_dimensionOfSearchSpace (FFNet me);
@@ -203,7 +205,9 @@ long FFNet_getNumberOfUnitsInLayer (FFNet me, int layer);
 double FFNet_getMinimum (FFNet me);
 
 void FFNet_drawTopology (FFNet me, Graphics g);
+
 void FFNet_drawActivation (FFNet me, Graphics g);
+
 void FFNet_drawWeightsToLayer (FFNet me, Graphics g, int toLayer, int scaling, int garnish);
 /* Deprecated: the strengths of the weights that connect to the nodes in later 'layer' */
 /* are drawn with boxes. The area of each box corresponds to the strength. */
@@ -213,10 +217,12 @@ void FFNet_drawCostHistory (FFNet me, Graphics g, long from_iteration, long to_i
 	double from_cost, double to_cost, int garnish);
 /* draw cost vs epochs */
 
-Collection FFNet_createIrisExample (long numberOfHidden1, long numberOfHidden2);
+autoCollection FFNet_createIrisExample (long numberOfHidden1, long numberOfHidden2);
+
+autoTableOfReal FFNet_extractWeights (FFNet me, long layer);
 
-TableOfReal FFNet_extractWeights (FFNet me, long layer);
 void FFNet_drawWeights (FFNet me, Graphics g, long layer, int garnish);
-FFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer);
+
+autoFFNet FFNet_and_TabelOfReal_to_FFNet (FFNet me, TableOfReal him, long layer);
 
 #endif /* _FFNet_h_ */
diff --git a/FFNet/FFNet_Activation_Categories.cpp b/FFNet/FFNet_Activation_Categories.cpp
index 55346dd..7175678 100644
--- a/FFNet/FFNet_Activation_Categories.cpp
+++ b/FFNet/FFNet_Activation_Categories.cpp
@@ -1,20 +1,19 @@
 /* FFNet_Activation_Categories.cpp
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -39,12 +38,11 @@ static long winnerTakesAll (FFNet me, const double activation[]) {
 
 static long stochastic (FFNet me, const double activation[]) {
 	long i;
-	double range = 0;
+	double range = 0.0, lower = 0.0;
 	for (i = 1; i <= my nOutputs; i++) {
 		range += activation[i];
 	}
-	double number = NUMrandomUniform (0, range);
-	double lower = 0;
+	double number = NUMrandomUniform (0.0, range);
 	for (i = 1; i <= my nOutputs; i++) {
 		lower += activation[i];
 		if (number < lower) {
@@ -54,52 +52,51 @@ static long stochastic (FFNet me, const double activation[]) {
 	return i;
 }
 
-Categories FFNet_Activation_to_Categories (FFNet me, Activation activation, int labeling) {
+autoCategories FFNet_Activation_to_Categories (FFNet me, Activation activation, int labeling) {
 	try {
-		Categories categories = (Categories) my outputCategories;
 		long (*labelingFunction) (FFNet me, const double act[]);
 
-		if (my outputCategories == 0) {
+		if (! my outputCategories) {
 			Melder_throw (U"No Categories (has the FFNet been trained yet?).");
 		}
-		if (my nOutputs != activation->nx) {
+		if (my nOutputs != activation -> nx) {
 			Melder_throw (U"Number of columns and number of outputs must be equal.");
 		}
 		autoCategories thee = Categories_create ();
 		labelingFunction = labeling == 2 ? stochastic : winnerTakesAll;
 		for (long i = 1; i <= activation->ny; i++) {
 			long index = labelingFunction (me, activation -> z[i]);
-			autoSimpleString item = Data_copy ( (SimpleString) categories -> item[index]);
-			Collection_addItem (thee.peek(), item.transfer());
+			autoSimpleString item = Data_copy (my outputCategories->at [index]);
+			thy addItem_move (item.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Categories created.");
 	}
 }
 
-Activation FFNet_Categories_to_Activation (FFNet me, Categories thee) {
+autoActivation FFNet_Categories_to_Activation (FFNet me, Categories thee) {
 	try {
-		autoCategories uniq = Categories_selectUniqueItems (thee, 1);
+		autoCategories uniq = Categories_selectUniqueItems (thee);
 
-		if (my outputCategories == 0) {
+		if (! my outputCategories) {
 			Melder_throw (U"The FFNet does not have categories.");
 		}
-		long nl =  OrderedOfString_isSubsetOf (uniq.peek(), my outputCategories, 0);
+		long nl = OrderedOfString_isSubsetOf (uniq.get(), my outputCategories.get(), 0);
 		if (nl == 0) {
 			Melder_throw (U"The Categories do not match the categories of the FFNet.");
 		}
 
 		autoActivation him = Activation_create (thy size, my nOutputs);
-		for (long i = 1; i <= thy size; i++) {
+		for (long i = 1; i <= thy size; i ++) {
 			const char32 *citem = OrderedOfString_itemAtIndex_c (thee, i);
-			long pos =  OrderedOfString_indexOfItem_c (my outputCategories, citem);
+			long pos = OrderedOfString_indexOfItem_c (my outputCategories.get(), citem);
 			if (pos < 1) {
 				Melder_throw (U"The FFNet doesn't know the category ", citem, U".");
 			}
-			his z[i][pos] = 1.0;
+			his z [i] [pos] = 1.0;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Activation created.");
 	}
diff --git a/FFNet/FFNet_Activation_Categories.h b/FFNet/FFNet_Activation_Categories.h
index 5a7d5f3..43ad7ce 100644
--- a/FFNet/FFNet_Activation_Categories.h
+++ b/FFNet/FFNet_Activation_Categories.h
@@ -2,21 +2,20 @@
 #define _FFNet_Activation_Categories_h_
 /* FFNet_Activation_Categories.h
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,11 +28,11 @@
 #include "Activation.h"
 #include "Categories.h"
 
-Categories FFNet_Activation_to_Categories (FFNet me, Activation activation, int labeling);
+autoCategories FFNet_Activation_to_Categories (FFNet me, Activation activation, int labeling);
 /* labeling = 1 : winner-takes-all */
 /* labeling = 2 : stochastic */
 
-Activation FFNet_Categories_to_Activation (FFNet me, Categories labels);
-/* Postcondition: my outputCategories != NULL; */
+autoActivation FFNet_Categories_to_Activation (FFNet me, Categories labels);
+/* Postcondition: my outputCategories != nullptr; */
 
 #endif /* _FFNet_Activation_Categories_h_ */
diff --git a/FFNet/FFNet_Eigen.cpp b/FFNet/FFNet_Eigen.cpp
index bd99f80..8ac8428 100644
--- a/FFNet/FFNet_Eigen.cpp
+++ b/FFNet/FFNet_Eigen.cpp
@@ -1,20 +1,19 @@
 /* FFNet_Eigen.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,8 +25,7 @@
 #include "Graphics.h"
 #include "NUM2.h"
 
-void FFNet_Eigen_drawIntersection (FFNet me, Eigen eigen, Graphics g, long pcx, long pcy,
-                                   double xmin, double xmax, double ymin, double ymax) {
+void FFNet_Eigen_drawIntersection (FFNet me, Eigen eigen, Graphics g, long pcx, long pcy, double xmin, double xmax, double ymin, double ymax) {
 	long ix = labs (pcx), iy = labs (pcy);
 	long numberOfEigenvalues = eigen -> numberOfEigenvalues;
 	long dimension = eigen -> dimension;
@@ -86,10 +84,9 @@ void FFNet_Eigen_drawIntersection (FFNet me, Eigen eigen, Graphics g, long pcx,
 	Draw the intersection line of the decision hyperplane 'w.e-b' of the weights of unit i
 	from layer j with the plane spanned by eigenvectors pcx and pcy.
 */
-void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, thou, Graphics g, long unit,
-        long layer, long pcx, long pcy, double xmin, double xmax, double ymin, double ymax) {
-	thouart (Eigen);
-
+void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, Eigen thee, Graphics g, long unit, long layer,
+	long pcx, long pcy, double xmin, double xmax, double ymin, double ymax)
+{
 	if (layer < 1 || layer > my nLayers) {
 		return;
 	}
@@ -146,7 +143,7 @@ void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, thou, Graphics g, long
 	*/
 
 	long iw = my wFirst[node] - 1;
-	double we1 = 0, we2 = 0;
+	double we1 = 0.0, we2 = 0.0;
 	for (long i = 1; i <= my nUnitsInLayer[layer - 1]; i++) {
 		we1 += my w[iw + i] * thy eigenvectors[pcx][i];
 		we2 += my w[iw + i] * thy eigenvectors[pcy][i];
@@ -155,24 +152,24 @@ void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, thou, Graphics g, long
 	double bias = my w[my wLast[node]];
 	x1 = xmin; x2 = xmax;
 	y1 = ymin; y2 = ymax;
-	if (we1 != 0) {
-		x1 = -bias / we1; y1 = 0;
+	if (we1 != 0.0) {
+		x1 = -bias / we1; y1 = 0.0;
 	}
-	if (we2 != 0) {
-		x2 = 0; y2 = -bias / we2;
+	if (we2 != 0.0) {
+		x2 = 0.0; y2 = -bias / we2;
 	}
-	if (we1 == 0 && we2 == 0) {
+	if (we1 == 0.0 && we2 == 0.0) {
 		Melder_warning (U"We cannot draw the intersection of the neural net decision plane\n"
-		                 "for unit ", unit, U" in layer ", layer,
-		                 U" with the plane spanned by the eigenvectors because \nboth planes are parallel.");
+		    "for unit ", unit, U" in layer ", layer, U" with the plane spanned by the eigenvectors because \nboth planes are parallel.");
 		return;
 	}
 	double xi[3], yi[3]; /* Intersections */
 	double ni = NUMgetIntersectionsWithRectangle (x1, y1, x2, y2, xmin, ymin, xmax, ymax, xi, yi);
 	if (ni == 2) {
 		Graphics_line (g, xi[1], yi[1], xi[2], yi[2]);
-	} else Melder_warning (U"There were no intersections in the drawing area.\n"
-		                        U"Please enlarge the drawing area.");
+	} else {
+		Melder_warning (U"There were no intersections in the drawing area.\nPlease enlarge the drawing area.");
+	}
 	Graphics_unsetInner (g);
 }
 
diff --git a/FFNet/FFNet_Eigen.h b/FFNet/FFNet_Eigen.h
index aaa4d0f..9a976a0 100644
--- a/FFNet/FFNet_Eigen.h
+++ b/FFNet/FFNet_Eigen.h
@@ -2,21 +2,20 @@
 #define _FFNet_Eigen_h_
 /* FFNet_Eigen.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,7 +33,7 @@ void FFNet_Eigen_drawIntersection (FFNet me, Eigen eigen, Graphics g, long pcx,
 /* pcx (pcy) > 0	: negative values left (bottom), positive right (top) */
 /* pcx (pcy) < 0	: negative values right (top). */
 
-void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, thou, Graphics g, long unit, 
+void FFNet_Eigen_drawDecisionPlaneInEigenspace (FFNet me, Eigen thee, Graphics g, long unit,
 	long layer,	long pcx, long pcy, double xmin, double xmax, double ymin, double ymax);
 
 #endif /* _FFNet_Eigen_h_ */
diff --git a/FFNet/FFNet_Matrix.cpp b/FFNet/FFNet_Matrix.cpp
index 68ad037..0ddd97e 100644
--- a/FFNet/FFNet_Matrix.cpp
+++ b/FFNet/FFNet_Matrix.cpp
@@ -1,20 +1,19 @@
 /* FFNet_Matrix.cpp
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -24,14 +23,13 @@
 
 #include "FFNet_Matrix.h"
 
-Matrix FFNet_weightsToMatrix (FFNet me, long layer, int deltaWeights) {
+autoMatrix FFNet_weightsToMatrix (FFNet me, long layer, bool deltaWeights) {
 	try {
 		if (layer < 1 || layer > my nLayers) {
 			Melder_throw (U"Layer must be > 0 and < ", my nLayers, U".");
 		}
-		autoMatrix thee = Matrix_create (
-		                      0.5, my nUnitsInLayer[layer] + 0.5, my nUnitsInLayer[layer], 1, 1,
-		                      0.5, my nUnitsInLayer[layer - 1] + 1 + 0.5, my nUnitsInLayer[layer - 1] + 1, 1, 1);
+		autoMatrix thee = Matrix_create (0.5, my nUnitsInLayer[layer] + 0.5, my nUnitsInLayer[layer], 1.0, 1.0,
+		    0.5, my nUnitsInLayer[layer - 1] + 1 + 0.5, my nUnitsInLayer[layer - 1] + 1, 1.0, 1.0);
 		long node = 1;
 		for (long i = 0; i < layer; i++) {
 			node += my nUnitsInLayer[i] + 1;
@@ -42,24 +40,25 @@ Matrix FFNet_weightsToMatrix (FFNet me, long layer, int deltaWeights) {
 				thy z[k++][i] = deltaWeights ? my dwi[j] : my w[j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix created.");
 	}
 }
 
-FFNet FFNet_weightsFromMatrix (FFNet me, Matrix him, long layer) {
+autoFFNet FFNet_weightsFromMatrix (FFNet me, Matrix him, long layer) {
 	try {
 		if (layer < 1 || layer > my nLayers) {
 			Melder_throw (U"Layer must be > 0 and < ", my nLayers, U".");
 		}
-		if (my nUnitsInLayer[layer] != his nx) Melder_throw (U"The #columns (", his nx, U") must equal "
-			        U"#units (", my nUnitsInLayer[layer], U") in layer ", layer, U".");
+		if (my nUnitsInLayer[layer] != his nx) {
+			Melder_throw (U"The #columns (", his nx, U") must equal #units (", my nUnitsInLayer[layer], U") in layer ", layer, U".");
+		}
 		long nunits = my nUnitsInLayer[layer - 1] + 1;
 		if (nunits != his ny) {
 			Melder_throw (U" The #rows (", his ny, U")  must equal #units (", nunits , U") in layer ", layer - 1, U".");
 		}
-		autoFFNet thee = (FFNet) Data_copy (me);
+		autoFFNet thee = Data_copy (me);
 		long node = 1;
 		for (long i = 0; i < layer; i++) {
 			node += thy nUnitsInLayer[i] + 1;
@@ -70,7 +69,7 @@ FFNet FFNet_weightsFromMatrix (FFNet me, Matrix him, long layer) {
 				thy w[j] = his z[k][i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no FFNet created.");
 	}
diff --git a/FFNet/FFNet_Matrix.h b/FFNet/FFNet_Matrix.h
index 6878663..4e6eb28 100644
--- a/FFNet/FFNet_Matrix.h
+++ b/FFNet/FFNet_Matrix.h
@@ -2,21 +2,20 @@
 #define _FFNet_Matrix_h_
 /* FFNet_Matrix.h
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,10 +37,10 @@
 /* x1 = y1 = 1																*/
 /*																			*/
 
-Matrix FFNet_weightsToMatrix (FFNet me, long layer, int deltaWeights);
+autoMatrix FFNet_weightsToMatrix (FFNet me, long layer, bool deltaWeights);
 /* (delta) weights connected to layer into Matrix */
 
-FFNet FFNet_weightsFromMatrix (FFNet me, Matrix matrix, long layer);
+autoFFNet FFNet_weightsFromMatrix (FFNet me, Matrix matrix, long layer);
 /* creates a new FFNet in which the weights that connect to layer are		*/
 /* replaced by the weights in the matrix									*/
 
diff --git a/FFNet/FFNet_Pattern.cpp b/FFNet/FFNet_Pattern.cpp
index 0e214e2..53b5d8f 100644
--- a/FFNet/FFNet_Pattern.cpp
+++ b/FFNet/FFNet_Pattern.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1997-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@ void FFNet_Pattern_drawActivation (FFNet me, Pattern pattern, Graphics g, long i
 	if (index < 1 || index > pattern->ny) {
 		return;
 	}
-	FFNet_propagate (me, pattern->z[index], NULL);
+	FFNet_propagate (me, pattern->z[index], nullptr);
 	FFNet_drawActivation (me, g);
 }
 
diff --git a/FFNet/FFNet_Pattern.h b/FFNet/FFNet_Pattern.h
index 41c890d..0f5fd42 100644
--- a/FFNet/FFNet_Pattern.h
+++ b/FFNet/FFNet_Pattern.h
@@ -2,21 +2,20 @@
 #define _FFNet_Pattern_h_
 /* FFNet_Pattern.h
  *
- * Copyright (C) 1997-2011 David Weenink
+ * Copyright (C) 1997-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/FFNet/FFNet_Pattern_Activation.cpp b/FFNet/FFNet_Pattern_Activation.cpp
index 5ec1f8f..0c7d02f 100644
--- a/FFNet/FFNet_Pattern_Activation.cpp
+++ b/FFNet/FFNet_Pattern_Activation.cpp
@@ -1,20 +1,19 @@
 /* FFNet_Pattern_Activation.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011,2015-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,10 +27,10 @@
 #include "Graphics.h"
 #include "FFNet_Pattern_Activation.h"
 
-static double func (Data object, const double p[]) {
+static double func (Daata object, const double p[]) {
 	FFNet me = (FFNet) object;
-	Minimizer thee = my minimizer;
-	double fp = 0;
+	Minimizer thee = my minimizer.get();
+	double fp = 0.0;
 
 	for (long j = 1, k = 1; k <= my nWeights; k++) {
 		my dw[k] = 0.0;
@@ -40,7 +39,7 @@ static double func (Data object, const double p[]) {
 		}
 	}
 	for (long i = 1; i <= my nPatterns; i++) {
-		FFNet_propagate (me, my inputPattern[i], NULL);
+		FFNet_propagate (me, my inputPattern[i], nullptr);
 		fp += FFNet_computeError (me, my targetActivation[i]);
 		FFNet_computeDerivative (me);
 		/* derivative (cumulative) */
@@ -52,7 +51,7 @@ static double func (Data object, const double p[]) {
 	return fp;
 }
 
-static void dfunc_optimized (Data object, const double p[], double dp[]) {
+static void dfunc_optimized (Daata object, const double p[], double dp[]) {
 	FFNet me = (FFNet) object;
 	(void) p;
 
@@ -65,26 +64,25 @@ static void dfunc_optimized (Data object, const double p[], double dp[]) {
 }
 
 static void _FFNet_Pattern_Activation_checkDimensions (FFNet me, Pattern p, Activation a) {
-	if (my nInputs != p -> nx) Melder_throw (U"The Pattern and the FFNet do not match.\n"
-		        "The number of colums in the Pattern must equal the number of inputs in the FFNet.");
-	if (my nOutputs != a -> nx) Melder_throw (U"The Activation and the FFNet do not match.\n"
-		        "The number of colums in the Activation must equal the number of outputs in the FFNet.");
-	if (p -> ny != a -> ny) Melder_throw (U"The Pattern and the Activation do not match.\n"
-		                                      "The number of rows in the Pattern must equal the number of rows in the Activation.");
-	if (! _Pattern_checkElements (p)) Melder_throw (U"The elements in the Pattern are not all "
-		        "in the interval [0, 1].\nThe input of the neural net can only process values that are between 0 "
-		        "and 1.\nYou could use a \"Formula...\" to scale the Pattern values first.");
-	if (! _Activation_checkElements (a)) Melder_throw (U"The elements in the Activation are not "
-		        "all in the interval [0, 1].\nThe output of the neural net can only process values that are "
-		        "between 0 and 1.\nYou could use \"Formula...\" to scale the Activation values first.");
+	if (my nInputs != p -> nx) {
+		Melder_throw (U"The Pattern and the FFNet do not match.\nThe number of columns in the Pattern must equal the number of inputs in the FFNet.");
+	}
+	if (my nOutputs != a -> nx) {
+		Melder_throw (U"The Activation and the FFNet do not match.\nThe number of columns in the Activation must equal the number of outputs in the FFNet.");
+	}
+	if (p -> ny != a -> ny) {
+		Melder_throw (U"The Pattern and the Activation do not match.\nThe number of rows in the Pattern must equal the number of rows in the Activation.");
+	}
+	if (! _Pattern_checkElements (p)) {
+		Melder_throw (U"All Pattern elements must be in the interval [0, 1].\nYou could use \"Formula...\" to scale the Pattern values first.");	}
+	if (! _Activation_checkElements (a)) {
+		Melder_throw (U"All Activation elements must be in the interval [0, 1].\nYou could use \"Formula...\" to scale the Activation values first.");
+	}
 }
 
-static void _FFNet_Pattern_Activation_learn (FFNet me, Pattern pattern,
-        Activation activation, long maxNumOfEpochs, double tolerance,
-        Any parameters, int costFunctionType, int reset) {
+static void _FFNet_Pattern_Activation_learn (FFNet me, Pattern pattern, Activation activation, long maxNumOfEpochs, double tolerance, int costFunctionType, bool reset) {
 	try {
 		_FFNet_Pattern_Activation_checkDimensions (me, pattern, activation);
-		Minimizer_setParameters (my minimizer, parameters);
 
 		// Link the things to be learned
 
@@ -101,58 +99,56 @@ static void _FFNet_Pattern_Activation_learn (FFNet me, Pattern pattern,
 					wbuf[k++] = my w[i];
 				}
 			}
-			Minimizer_reset (my minimizer, wbuf.peek());
+			Minimizer_reset (my minimizer.get(), wbuf.peek());
 		}
 
-		Minimizer_minimize (my minimizer, maxNumOfEpochs, tolerance, 1);
+		Minimizer_minimize (my minimizer.get(), maxNumOfEpochs, tolerance, 1);
 
 		// Unlink
 
 		my nPatterns = 0;
-		my inputPattern = NULL;
-		my targetActivation = NULL;
+		my inputPattern = nullptr;
+		my targetActivation = nullptr;
 	} catch (MelderError) {
 		my nPatterns = 0;
-		my inputPattern = 0;
-		my targetActivation = 0;
+		my inputPattern = nullptr;
+		my targetActivation = nullptr;
 	}
 }
 
 
-void FFNet_Pattern_Activation_learnSD (FFNet me, Pattern p, Activation a,
-                                       long maxNumOfEpochs, double tolerance, Any parameters, int costFunctionType) {
+void FFNet_Pattern_Activation_learnSD (FFNet me, Pattern p, Activation a, long maxNumOfEpochs, double tolerance, double learningRate, double momentum, int costFunctionType) {
 	int resetMinimizer = 0;
 	/* Did we choose another minimizer */
-	if (my minimizer != 0 && ! Thing_isa (my minimizer, classSteepestDescentMinimizer)) {
-		forget (my minimizer);
+	if (my minimizer && ! Thing_isa (my minimizer.get(), classSteepestDescentMinimizer)) {
+		my minimizer.reset();
 		resetMinimizer = 1;
 	}
 	/* create the minimizer if it doesn't exist */
-	if (my minimizer == 0) {
+	if (! my minimizer) {
 		resetMinimizer = 1;
-		my minimizer = (Minimizer) SteepestDescentMinimizer_create (my dimension, me, func, dfunc_optimized);
+		my minimizer = SteepestDescentMinimizer_create (my dimension, me, func, dfunc_optimized);
 	}
-	_FFNet_Pattern_Activation_learn (me, p, a, maxNumOfEpochs,
-	                                 tolerance, parameters, costFunctionType, resetMinimizer);
+	((SteepestDescentMinimizer) my minimizer.get()) -> eta = learningRate;
+	((SteepestDescentMinimizer) my minimizer.get()) -> momentum = momentum;
+	_FFNet_Pattern_Activation_learn (me, p, a, maxNumOfEpochs, tolerance, costFunctionType, resetMinimizer);
 }
 
-void FFNet_Pattern_Activation_learnSM (FFNet me, Pattern p, Activation a,
-                                       long maxNumOfEpochs, double tolerance, Any parameters, int costFunctionType) {
+void FFNet_Pattern_Activation_learnSM (FFNet me, Pattern p, Activation a, long maxNumOfEpochs, double tolerance, int costFunctionType) {
 	int resetMinimizer = 0;
-	/*
-		Did we choose another minimizer
-	*/
-	if (my minimizer != 0 && ! Thing_isa (my minimizer, classVDSmagtMinimizer)) {
-		forget (my minimizer);
+
+	// Did we choose another minimizer
+
+	if (my minimizer.get() && ! Thing_isa (my minimizer.get(), classVDSmagtMinimizer)) {
+		my minimizer.reset();
 		resetMinimizer = 1;
 	}
-	/* create the minimizer if it doesn't exist */
-	if (my minimizer == 0) {
+	// create the minimizer if it doesn't exist
+	if (! my minimizer.get()) {
 		resetMinimizer = 1;
-		my minimizer = (Minimizer) VDSmagtMinimizer_create (my dimension, me, func, dfunc_optimized);
+		my minimizer = VDSmagtMinimizer_create (my dimension, me, func, dfunc_optimized);
 	}
-	_FFNet_Pattern_Activation_learn (me, p, a, maxNumOfEpochs,
-	                                 tolerance, parameters, costFunctionType, resetMinimizer);
+	_FFNet_Pattern_Activation_learn (me, p, a, maxNumOfEpochs, tolerance, costFunctionType, resetMinimizer);
 }
 
 double FFNet_Pattern_Activation_getCosts_total (FFNet me, Pattern p, Activation a, int costFunctionType) {
@@ -160,9 +156,9 @@ double FFNet_Pattern_Activation_getCosts_total (FFNet me, Pattern p, Activation
 		_FFNet_Pattern_Activation_checkDimensions (me, p, a);
 		FFNet_setCostFunction (me, costFunctionType);
 
-		double cost = 0;
+		double cost = 0.0;
 		for (long i = 1; i <= p -> ny; i++) {
-			FFNet_propagate (me, p -> z[i], NULL);
+			FFNet_propagate (me, p -> z[i], nullptr);
 			cost += FFNet_computeError (me, a -> z[i]);
 		}
 		return cost;
@@ -176,26 +172,24 @@ double FFNet_Pattern_Activation_getCosts_average (FFNet me, Pattern p, Activatio
 	return costs == NUMundefined ? NUMundefined : costs / p -> ny;
 }
 
-Activation FFNet_Pattern_to_Activation (FFNet me, Pattern p, long layer) {
+autoActivation FFNet_Pattern_to_Activation (FFNet me, Pattern p, long layer) {
 	try {
 		if (layer < 1 || layer > my nLayers) {
 			layer = my nLayers;
 		}
-		if (my nInputs != p -> nx) Melder_throw (U"The Pattern and the FFNet do not match. "
-			        U"The number of colums in the Pattern (", p -> nx, U") should equal the number of inputs "
-			        U"in the FFNet (", my nInputs, U").");
-		if (! _Pattern_checkElements (p)) Melder_throw
-			(U"The elements in the Activation are not all in the interval [0, 1].\n"
-			 U"The output units of the neural net can only process values that are between 0 and 1.\n"
-			 U"You could use \"Formula...\" to scale the Activation values first.");
-
+		if (my nInputs != p -> nx) {
+			Melder_throw (U"The Pattern and the FFNet do not match. The number of colums in the Pattern (", p -> nx, U") should equal the number of inputs in the FFNet (", my nInputs, U").");
+		}
+		if (! _Pattern_checkElements (p)) {
+			Melder_throw (U"All Pattern elements must be in the interval [0, 1].\nYou could use \"Formula...\" to scale the Pattern values first.");
+		}
 		long nPatterns = p -> ny;
 		autoActivation thee = Activation_create (nPatterns, my nUnitsInLayer[layer]);
 
 		for (long i = 1; i <= nPatterns; i++) {
 			FFNet_propagateToLayer (me, p -> z[i], thy z[i], layer);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Activation created.");
 	}
diff --git a/FFNet/FFNet_Pattern_Activation.h b/FFNet/FFNet_Pattern_Activation.h
index db0ce55..664242e 100644
--- a/FFNet/FFNet_Pattern_Activation.h
+++ b/FFNet/FFNet_Pattern_Activation.h
@@ -2,21 +2,20 @@
 #define _FFNet_Pattern_Activation_h_
 /* FFNet_Pattern_Activation.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,16 +32,16 @@
 #include "Minimizers.h"
 
 void FFNet_Pattern_Activation_learnSD (FFNet me, Pattern p, Activation a, long maxNumOfEpochs,
-    double tolerance, Any parameters, int costFunctionType);
+    double tolerance, double learningRate, double momentum, int costFunctionType);
 /* Steepest Descent minimization */
 
 void FFNet_Pattern_Activation_learnSM (FFNet me, Pattern p, Activation a, long maxNumOfEpochs,
-    double tolerance, Any parameters, int costFunctionType);
+    double tolerance, int costFunctionType);
 
 double FFNet_Pattern_Activation_getCosts_total (FFNet me, Pattern p, Activation a, int costFunctionType);
 double FFNet_Pattern_Activation_getCosts_average (FFNet me, Pattern p, Activation a, int costFunctionType);
 
-Activation FFNet_Pattern_to_Activation (FFNet me, Pattern p, long layer);
+autoActivation FFNet_Pattern_to_Activation (FFNet me, Pattern p, long layer);
 /* Calculate the activations at a layer */
 /* if (layer<1 || layer > my nLayers) layer = my nLayers; */
 
diff --git a/FFNet/FFNet_Pattern_Categories.cpp b/FFNet/FFNet_Pattern_Categories.cpp
index 86c955f..e88f9f1 100644
--- a/FFNet/FFNet_Pattern_Categories.cpp
+++ b/FFNet/FFNet_Pattern_Categories.cpp
@@ -1,20 +1,19 @@
 /* FFNet_Pattern_Categories.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,31 +28,22 @@
 #include "FFNet_Pattern_Activation.h"
 
 static void _FFNet_Pattern_Categories_checkDimensions (FFNet me, Pattern p, Categories c) {
-
-	if (my nInputs != p -> nx) Melder_throw (U"The Pattern and the FFNet do not match.\n"
-		        U"The number of colums in the Pattern must equal the number of inputs in the FFNet.");
-	if (p -> ny != c -> size) Melder_throw (U"The Pattern and the categories do not match.\n"
-		                                        U"The number of rows in the Pattern must equal the number of categories.");
-	if (! _Pattern_checkElements (p)) Melder_throw (U"The elements in the Pattern are not all "
-		        U"in the interval [0, 1].\nThe input of the neural net can only process values that are between 0 "
-		        U"and 1.\nYou could use \"Formula...\" to scale the Pattern values first.");
-}
-
-static void _FFNet_Pattern_Categories_learn (FFNet me, Pattern p, Categories c,
-        long maxNumOfEpochs, double tolerance, Any parameters, int costFunctionType,
-        void (*learn) (FFNet, Pattern, Activation, long, double, Any, int)) {
-	_FFNet_Pattern_Categories_checkDimensions (me, p, c);
-	autoActivation activation = FFNet_Categories_to_Activation (me, c);
-	double min, max;
-	Matrix_getWindowExtrema (p, 0, 0, 0, 0, &min, &max);
-	learn (me, p, activation.peek(), maxNumOfEpochs, tolerance, parameters, costFunctionType);
+	if (my nInputs != p -> nx) {
+		Melder_throw (U"The Pattern and the FFNet do not match.\nThe number of colums in the Pattern must equal the number of inputs in the FFNet.");
+	}
+	if (p -> ny != c->size) {
+		Melder_throw (U"The Pattern and the categories do not match.\nThe number of rows in the Pattern must equal the number of categories.");
+	}
+	if (! _Pattern_checkElements (p)) {
+		Melder_throw (U"All Pattern elements must be in the interval [0, 1].\nYou could use \"Formula...\" to scale the Pattern values first.");
+	}
 }
 
 double FFNet_Pattern_Categories_getCosts_total (FFNet me, Pattern p, Categories c, int costFunctionType) {
 	try {
 		_FFNet_Pattern_Categories_checkDimensions (me, p, c);
 		autoActivation activation = FFNet_Categories_to_Activation (me, c);
-		return FFNet_Pattern_Activation_getCosts_total (me, p, activation.peek(), costFunctionType);
+		return FFNet_Pattern_Activation_getCosts_total (me, p, activation.get(), costFunctionType);
 	} catch (MelderError) {
 		return NUMundefined;
 	}
@@ -64,38 +54,43 @@ double FFNet_Pattern_Categories_getCosts_average (FFNet me, Pattern p, Categorie
 	return costs == NUMundefined ? NUMundefined : costs / p -> ny;
 }
 
-void FFNet_Pattern_Categories_learnSM (FFNet me, Pattern p, Categories c,
-                                       long maxNumOfEpochs, double tolerance, Any parameters, int costFunctionType) {
-	_FFNet_Pattern_Categories_learn (me, p, c, maxNumOfEpochs, tolerance, parameters, costFunctionType, FFNet_Pattern_Activation_learnSM);
+void FFNet_Pattern_Categories_learnSD (FFNet me, Pattern p, Categories c, long maxNumOfEpochs, double tolerance, double learningRate, double momentum, int costFunctionType) {
+	_FFNet_Pattern_Categories_checkDimensions (me, p, c);
+	autoActivation activation = FFNet_Categories_to_Activation (me, c);
+	double min, max;
+	Matrix_getWindowExtrema (p, 0, 0, 0, 0, & min, & max);
+	FFNet_Pattern_Activation_learnSD (me, p, activation.get(), maxNumOfEpochs, tolerance, learningRate, momentum, costFunctionType);
 }
 
-void FFNet_Pattern_Categories_learnSD (FFNet me, Pattern p, Categories c,
-                                       long maxNumOfEpochs, double tolerance, Any parameters, int costFunctionType) {
-	_FFNet_Pattern_Categories_learn (me, p, c, maxNumOfEpochs, tolerance, parameters, costFunctionType, FFNet_Pattern_Activation_learnSD);
+void FFNet_Pattern_Categories_learnSM (FFNet me, Pattern p, Categories c, long maxNumOfEpochs, double tolerance, int costFunctionType) {
+	_FFNet_Pattern_Categories_checkDimensions (me, p, c);
+	autoActivation activation = FFNet_Categories_to_Activation (me, c);
+	double min, max;
+	Matrix_getWindowExtrema (p, 0, 0, 0, 0, & min, & max);
+	FFNet_Pattern_Activation_learnSM (me, p, activation.get(), maxNumOfEpochs, tolerance, costFunctionType);
 }
 
-Categories FFNet_Pattern_to_Categories (FFNet me, Pattern thee, int labeling) {
+autoCategories FFNet_Pattern_to_Categories (FFNet me, Pattern thee, int labeling) {
 	try {
-		if (my outputCategories == 0) {
+		if (! my outputCategories) {
 			Melder_throw (U"The FFNet has no output categories.");
 		}
-		if (my nInputs != thy nx) Melder_throw (U"The number of colums in the Pattern (", thy nx,
-			                                        U") should equal the number of inputs in the FFNet (", my nInputs, U").");
-		if (! _Pattern_checkElements (thee)) Melder_throw
-			(U"The elements in the Pattern are not all in the interval [0, 1].\n"
-			 U"The input of the neural net can only process values that are between 0 and 1.\n"
-			 U"You could use \"Formula...\" to scale the Pattern values first.");
-
+		if (my nInputs != thy nx) {
+			Melder_throw (U"The number of colums in the Pattern (", thy nx, U") should equal the number of inputs in the FFNet (", my nInputs, U").");
+		}
+		if (! _Pattern_checkElements (thee)) {
+			Melder_throw (U"All Pattern elements must be in the interval [0, 1].\nYou could use \"Formula...\" to scale the Pattern values first.");
+		}
 
 		autoCategories him = Categories_create ();
 
-		for (long k = 1; k <= thy ny; k++) {
-			FFNet_propagate (me, thy z[k], 0);
+		for (long k = 1; k <= thy ny; k ++) {
+			FFNet_propagate (me, thy z [k], nullptr);
 			long index = FFNet_getWinningUnit (me, labeling);
-			autoData item = Data_copy ( (Data) my outputCategories -> item[index]);
-			Collection_addItem (him.peek(), item.transfer());
+			autoSimpleString item = Data_copy (my outputCategories->at [index]);
+			his addItem_move (item.move());
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Categories created.");
 	}
diff --git a/FFNet/FFNet_Pattern_Categories.h b/FFNet/FFNet_Pattern_Categories.h
index d25a223..4684a6b 100644
--- a/FFNet/FFNet_Pattern_Categories.h
+++ b/FFNet/FFNet_Pattern_Categories.h
@@ -2,21 +2,20 @@
 #define _FFNet_Pattern_Categories_h_
 /* FFNet_Pattern_Categories.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,17 +30,17 @@
 #include "Minimizers.h"
 
 void FFNet_Pattern_Categories_learnSD (FFNet me, Pattern p, Categories c, long maxNumOfEpochs,
-    double tolerance, Any parameters, int costFunctionType);
+    double tolerance, double learningRate, double momentum, int costFunctionType);
 /* Steepest descent */
 
 void FFNet_Pattern_Categories_learnSM (FFNet me, Pattern p, Categories c, long maxNumOfEpochs,
-    double tolerance, Any parameters, int costFunctionType);
+    double tolerance, int costFunctionType);
 /* Conj. Gradient vdSmagt */
 
 double FFNet_Pattern_Categories_getCosts_total (FFNet me, Pattern p, Categories c, int costFunctionType);
 double FFNet_Pattern_Categories_getCosts_average (FFNet me, Pattern p, Categories c, int costFunctionType);
 
-Categories FFNet_Pattern_to_Categories (FFNet me, Pattern p, int labeling);
+autoCategories FFNet_Pattern_to_Categories (FFNet me, Pattern p, int labeling);
 /* classify the Pattern */
 /* labeling = 1 : winner-takes-all */
 /* labeling = 2 : stochastic */
diff --git a/FFNet/FFNet_def.h b/FFNet/FFNet_def.h
index 3aa1421..92d5fd7 100644
--- a/FFNet/FFNet_def.h
+++ b/FFNet/FFNet_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,7 +24,7 @@
 */
 
 #define ooSTRUCT FFNet
-oo_DEFINE_CLASS (FFNet, Data)
+oo_DEFINE_CLASS (FFNet, Daata)
 
 	oo_LONG (nLayers)	/* number of layers */
 	
@@ -37,7 +36,7 @@ oo_DEFINE_CLASS (FFNet, Data)
 
 	oo_INT (costFunctionType)
 
-	oo_COLLECTION (Categories, outputCategories, SimpleString, 0)
+	oo_AUTO_COLLECTION (Categories, outputCategories, SimpleString, 0)
 
 	oo_LONG (nWeights)	/* number of weights */
 
@@ -50,9 +49,9 @@ oo_DEFINE_CLASS (FFNet, Data)
 		oo_LONG (dimension)
 
 		#if oo_DECLARING
-			double (*nonLinearity) (I, double /* x */, double * /* deriv */);
+			double (*nonLinearity) (FFNet /* me */, double /* x */, double * /* deriv */);
     		void *nlClosure;
-    		double (*costFunction) (I, const double * /* target */);
+    		double (*costFunction) (FFNet /* me */, const double * /* target */);
 			void *cfClosure;
 		#endif
 		
@@ -63,7 +62,7 @@ oo_DEFINE_CLASS (FFNet, Data)
 			double **inputPattern, **targetActivation;
 		#endif
 		#if oo_DECLARING || oo_DESTROYING
-			oo_OBJECT (Minimizer, 0, minimizer)
+			oo_AUTO_OBJECT (Minimizer, 0, minimizer)
 		#endif
 
 		oo_DOUBLE_VECTOR (activity, nNodes)
diff --git a/FFNet/manual_FFNet.cpp b/FFNet/manual_FFNet.cpp
index ef46aeb..7db8f76 100644
--- a/FFNet/manual_FFNet.cpp
+++ b/FFNet/manual_FFNet.cpp
@@ -1,20 +1,19 @@
 /* manual_FFNet.c
  *
- * Copyright (C) 1994-2013 David Weenink
+ * Copyright (C) 1994-2013, 2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,8 +26,8 @@
 
 static void drawFFNet_345 (Graphics g)
 {
-	autoFFNet me = FFNet_create (3, 4, 0, 5, 0);
-	FFNet_drawTopology (me.peek(), g);
+	autoFFNet me = FFNet_create (3, 4, 0, 5, false);
+	FFNet_drawTopology (me.get(), g);
 }
 
 void manual_FFNet_init (ManPages me);
@@ -95,78 +94,77 @@ NORMAL (U"The FFNet uses a %supervised learning algorithm: besides the input pat
 	"is a little bit higher than it is now and that, at the same time, the output values of all the other incorrect outputs are a "
 	"little bit lower than they are now. (The differences between the actual outputs and the idealized outputs "
 	"are propagated back from the top layer to lower layers to be used at these layers to modify connection weights. "
-	"This is why the term %%backpropagation network% is also often used to describe this type of neural network.")
+	"This is why the term %%backpropagation network% is also often used to describe this type of neural network.)")
 NORMAL (U"If you perform the procedure above once for every pattern and category pair in your data "
-	"set you have have performed 1 @epoch of learning.")
+	"set you have performed one @epoch of learning.")
 NORMAL (U"The hope is that eventually, probably after many epochs, "
-	"the neural net will remember these pattern-category pairs. "
-	"You even hope that the neural net when the learning phase has terminated, will be able to %generalize "
+	"the neural net will come to remember these pattern-category pairs. "
+	"You even hope that the neural net, when the learning phase has terminated, will be able to %generalize "
 	"and has learned to "
 	"@@FFNet & Pattern: To Categories...|classify@ correctly any unknown pattern presented to it. ")
-NORMAL (U"Because real-life data many times contains noise as well as partly contradictory information "
-	"these hopes can only be partly fulfilled. ")
+NORMAL (U"Because real-life data often contains noise as well as partly contradictory information, "
+	"these hopes can be fulfilled only partly. ")
 NORMAL (U"For @@FFNet & Pattern & Categories: Learn...|learning@ you "
-	"need to select 3 different objects together: a FFNet (the %classifier), "
+	"need to select three different objects together: a FFNet (the %classifier), "
 	"a Pattern (the %inputs) and a Categories (the %%correct outputs%).")
 ENTRY (U"How long will the learning phase take?")
-NORMAL (U"In general this question is hard to answer. It depends on the size of the neural network, "
+NORMAL (U"In general, this question is hard to answer. It depends on the size of the neural network, "
 	"the number of patterns to be learned, the number of epochs, the tolerance of the minimizer "
 	"and the speed of your computer, how much computing time the learning phase may take. ")
 NORMAL (U"If computing time becomes excessive in your interactive environment then consider using the "
-	"powerful @@Scripting|scripting@ facilities in P\\s{RAAT} to process your learning job as a batch job. ")
+	"powerful @@Scripting|scripting@ facilities in Praat to process your learning job as a batch job. ")
 MAN_END
 
 MAN_BEGIN (U"Feedforward neural networks 1.2. The classification phase", U"djmw", 20040428)
-INTRO (U"In the classification phase the weights of the network are fixed. ")
+INTRO (U"In the classification phase, the weights of the network are fixed. ")
 NORMAL (U"A pattern, presented at the inputs, will be transformed from layer to layer until it reaches the output layer. "
 	"Now classification can occur by selecting the category associated with the output unit that has "
 	"the largest output value.  "
 	"For classification we only need to select an FFNet and a Pattern together and "
-	"choose  @@FFNet & Pattern: To Categories...|To Categories... at . ")
+	"choose @@FFNet & Pattern: To Categories...|To Categories... at . ")
 NORMAL (U"In contrast to the @@Feedforward neural networks 1.1. The learning phase|learning phase@ classification is very fast.")
 MAN_END
 
 MAN_BEGIN (U"Feedforward neural networks 2. Quick start", U"djmw", 20040426)
 INTRO (U"You may create the iris example set with the @@Create iris example...@ command "
-	"that you will find under the ##Neural nets# option in the #New menu. "
+	"that you will find under the ##Feedforward neural networks# option in the #New menu. "
 	"Three new objects will appear in the @@List of Objects@: a @FFNet, a @Categories and "
 	"a @Pattern.")
-NORMAL (U"The #Pattern contains the @@iris data set@ in a 150 rows by 4 columns matrix. "
-	"To  guarantee that every cell in the Pattern is in the [0,1] interval, all measurement "
+NORMAL (U"The #Pattern contains the @@iris data set@ in a matrix of 150 rows by 4 columns. "
+	"To guarantee that every cell in the Pattern is in the [0,1] interval, all measurement "
 	"values were divided by 10. In the #Categories the three iris species %setosa, "
 	"%versicolor, and %virginica were categorized with the numbers #1, #2 and #3, respectively. "
 	"Because there are 4 data columns in the Pattern and 3 different iris species in the Categories, "
 	"the newly created #FFNet has 4 inputs and 3 outputs. "
-	"If you have entered a positive number in one of the fields in the form, the FFNet will have "
+	"If you enter a positive number in one of the fields in the form, the FFNet will have "
 	"this number of units in a %%hidden layer%. The name of the newly created FFNet "
-	"will reflect its topology. If you did opt for the default, 0 hidden units, the FFNet will be named 4-3.")
+	"will reflect its topology. If you opt for the standard setting, which is 0 hidden units, the FFNet will be named 4-3.")
 ENTRY (U"Learning the iris data")
 NORMAL (U"The first thing you probably might want to do is to let the #FFNet learn the association in "
-	"each pattern-category pair.  To do this select all three objects together and choose "
+	"each pattern-category pair. To do this select all three objects together and choose "
 	"@@FFNet & Pattern & Categories: Learn...|Learn... at . "
 	"A form will appear, asking you to supply some settings for "
-	"the learning algorithm. Learning starts after you have clicked the OK-button. "
-	"Since the example network does not have too many weights that need to be adjusted and "
-	"the learning data set is very small and computers nowadays are very fast, this will only take a "
-	"very short time.")
-ENTRY (U"Classify")
+	"the learning algorithm. Learning starts after you have clicked the OK button. "
+	"As the example network has only a small number of weights that need to be adjusted, "
+	"and the learning data set is very small, this will only take a very short time.")
+ENTRY (U"Classification")
 NORMAL (U"Now, if you are curious how well the FFNet has learned the iris data, you may select the "
 	"#FFNet and the #Pattern together and choose @@FFNet & Pattern: To Categories...|To Categories... at . "
-	"A new #Categories appears in the ##List of Objects# with the name %4-3_iris (if %%4-3% was the name of the FFNet and %iris% the name of the Pattern). "
+	"A new #Categories appears in the ##List of Objects# with the name %%4-3_iris% (if %%4-3% was the name of the FFNet and %iris% the name of the Pattern). "
 	"We have two different Categories in the list of objects, the topmost one has the original categories, the other "
 	"the categories as were assigned by the FFNet classifier. The obvious thing to do now is to compare the "
 	"original categories with the assigned categories by making a @@Confusion|confusion table at . "
 	"Select the two #Categories and choose @@Categories: To Confusion|To Confusion@ and a newly "
 	"created @Confusion appears. Pressing the @Info button will show you an info window with, "
 	"among others, the fraction correct. ")
-NORMAL (U"You might also want to "
+NORMAL (U"You may also want to "
 	"@@Feedforward neural networks 3. FFNet versus discriminant classifier|compare the FFNet classifier with a discriminant classifier at .")
 ENTRY (U"Create other neural net topologies")
 NORMAL (U"With a #Pattern and a #Categories selected together, you can for example create a new #FFNet of a different topology.")
 MAN_END
 
 MAN_BEGIN (U"Feedforward neural networks 3. FFNet versus discriminant classifier", U"djmw", 20040426)
-NORMAL (U"You might want to compare the FFNet classifier with a discriminant classifier. "
+NORMAL (U"You may want to compare the FFNet classifier with a discriminant classifier. "
 	"Unlike the FFNet, a @@Discriminant|discriminant@ classifier does not need any iterative procedure in the "
 	"learning phase and can be used immediately after creation for classification. "
 	"The following three simple steps will give you the confusion matrix based on discriminant analysis:")
@@ -272,7 +270,6 @@ NORMAL (U"For a network with only one layer, the inputs are connected directly t
 	"In a two-layer network the inputs are connected to a hidden layer.")
 MAN_END
 
-
 MAN_BEGIN (U"FFNet: Get number of hidden units...", U"djmw", 20040420)
 INTRO (U"Queries the selected @FFNet for the number of units in a hidden layer.")
 ENTRY (U"Settings")
diff --git a/FFNet/praat_FFNet_init.cpp b/FFNet/praat_FFNet_init.cpp
index 731b5d4..4a9603d 100644
--- a/FFNet/praat_FFNet_init.cpp
+++ b/FFNet/praat_FFNet_init.cpp
@@ -1,20 +1,19 @@
 /* praat_FFNet_init.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -57,22 +56,22 @@ static char32 const *EXTRACT_BUTTON = U"Extract -";
 
 /**************** New FFNet ***************************/
 
-static void FFNet_create_addCommonFields_inputOutput (void *dia) {
+static void FFNet_create_addCommonFields_inputOutput (UiForm dia) {
 	NATURAL (U"Number of inputs", U"4")
 	NATURAL (U"Number of outputs", U"3")
 }
 
-static void FFNet_create_checkCommonFields_inputOutput (void *dia, long *numberOfInputs, long *numberOfOutputs) {
+static void FFNet_create_checkCommonFields_inputOutput (UiForm dia, long *numberOfInputs, long *numberOfOutputs) {
 	*numberOfInputs = GET_INTEGER (U"Number of inputs");
 	*numberOfOutputs = GET_INTEGER (U"Number of outputs");
 }
 
-static void FFNet_create_addCommonFields_hidden (void *dia) {
+static void FFNet_create_addCommonFields_hidden (UiForm dia) {
 	INTEGER (U"Number of units in hidden layer 1", U"0")
 	INTEGER (U"Number of units in hidden layer 2", U"0")
 }
 
-static void FFNet_create_checkCommonFields_hidden (void *dia, 	long *numberOfHidden1, long *numberOfHidden2) {
+static void FFNet_create_checkCommonFields_hidden (UiForm dia, 	long *numberOfHidden1, long *numberOfHidden2) {
 	*numberOfHidden1 = GET_INTEGER (U"Number of units in hidden layer 1");
 	*numberOfHidden2 = GET_INTEGER (U"Number of units in hidden layer 2");
 	if (*numberOfHidden1 < 0 || *numberOfHidden2 < 0) {
@@ -80,12 +79,12 @@ static void FFNet_create_checkCommonFields_hidden (void *dia, 	long *numberOfHid
 	}
 }
 
-static void FFNet_create_addCommonFields (void *dia) {
+static void FFNet_create_addCommonFields (UiForm dia) {
 	FFNet_create_addCommonFields_inputOutput (dia);
 	FFNet_create_addCommonFields_hidden (dia);
 }
 
-static void FFNet_create_checkCommonFields (void *dia, long *numberOfInputs, long *numberOfOutputs,
+static void FFNet_create_checkCommonFields (UiForm dia, long *numberOfInputs, long *numberOfOutputs,
         long *numberOfHidden1, long *numberOfHidden2) {
 	FFNet_create_checkCommonFields_inputOutput (dia, numberOfInputs, numberOfOutputs);
 	FFNet_create_checkCommonFields_hidden (dia, numberOfHidden1, numberOfHidden2);
@@ -98,8 +97,8 @@ FORM (FFNet_create, U"Create FFNet", U"Create FFNet...")
 DO
 	long numberOfInputs, numberOfOutputs, numberOfHidden1, numberOfHidden2;
 	FFNet_create_checkCommonFields (dia, &numberOfInputs, &numberOfOutputs, &numberOfHidden1, &numberOfHidden2);
-	autoFFNet thee = FFNet_create (numberOfInputs, numberOfHidden1, numberOfHidden2, numberOfOutputs, 0);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	autoFFNet thee = FFNet_create (numberOfInputs, numberOfHidden1, numberOfHidden2, numberOfOutputs, false);
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (FFNet_create_linearOutputs, U"Create FFNet", U"Create FFNet (linear outputs)...")
@@ -109,8 +108,8 @@ FORM (FFNet_create_linearOutputs, U"Create FFNet", U"Create FFNet (linear output
 DO
 	long numberOfInputs, numberOfOutputs, numberOfHidden1, numberOfHidden2;
 	FFNet_create_checkCommonFields (dia, &numberOfInputs, &numberOfOutputs, &numberOfHidden1, &numberOfHidden2);
-	autoFFNet thee = FFNet_create (numberOfInputs, numberOfHidden1, numberOfHidden2, numberOfOutputs, 1);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	autoFFNet thee = FFNet_create (numberOfInputs, numberOfHidden1, numberOfHidden2, numberOfOutputs, true);
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (FFNet_createIrisExample, U"Create iris example", U"Create iris example...")
@@ -120,7 +119,8 @@ FORM (FFNet_createIrisExample, U"Create iris example", U"Create iris example..."
 DO
 	long numberOfHidden1, numberOfHidden2;
 	FFNet_create_checkCommonFields_hidden (dia, &numberOfHidden1, &numberOfHidden2);
-	praat_new (FFNet_createIrisExample (numberOfHidden1, numberOfHidden2), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+	autoCollection thee = FFNet_createIrisExample (numberOfHidden1, numberOfHidden2);
+	praat_new (thee.move());
 END
 
 DIRECT (FFNet_getNumberOfInputs)
@@ -152,33 +152,31 @@ DO
 	}
 END
 
-FORM (FFNet_getCategoryOfOutputUnit, U"FFNet: Get category of output unit", U"")
+FORM (FFNet_getCategoryOfOutputUnit, U"FFNet: Get category of output unit", nullptr)
 	NATURAL (U"Output unit", U"1")
 	OK
-	DO
+DO
 	LOOP {
 		iam (FFNet);
-		Categories c = (Categories) my outputCategories;
 		long unit = GET_INTEGER (U"Output unit");
-		if (unit > c -> size) {
-			Melder_throw (U"Output unit cannot be larger than ", c -> size, U".");
+		if (unit > my outputCategories->size) {
+			Melder_throw (U"Output unit cannot be larger than ", my outputCategories->size, U".");
 		}
-		SimpleString ss = (SimpleString) c -> item[unit];
+		SimpleString ss = my outputCategories->at [unit];
 		Melder_information (ss -> string);
 	}
 END
 
-FORM (FFNet_getOutputUnitOfCategory, U"FFNet: Get output unit of category", U"")
+FORM (FFNet_getOutputUnitOfCategory, U"FFNet: Get output unit of category", nullptr)
 	SENTENCE (U"Category", U"u")
 	OK
 DO
 	LOOP {
 		iam (FFNet);
-		Categories c = my outputCategories;
 		char32 *category = GET_STRING (U"Category");
 		long index = 0;
-		for (long i = 1; i <= c -> size; i++) {
-			SimpleString s = (SimpleString) c -> item[i];
+		for (long i = 1; i <= my outputCategories->size; i ++) {
+			SimpleString s = my outputCategories->at [i];
 			if (Melder_equ (s -> string, category)) {
 				index = i;
 				break;
@@ -188,7 +186,7 @@ DO
 	}
 END
 
-FORM (FFNet_getBias, U"FFNet: Get bias", 0)
+FORM (FFNet_getBias, U"FFNet: Get bias", nullptr)
 	NATURAL (U"Layer", U"1")
 	NATURAL (U"Unit", U"1")
 	OK
@@ -202,7 +200,7 @@ DO
 	}
 END
 
-FORM (FFNet_setBias, U"FFNet: Set bias", 0)
+FORM (FFNet_setBias, U"FFNet: Set bias", nullptr)
 	NATURAL (U"Layer", U"1")
 	NATURAL (U"Unit", U"1")
 	REAL (U"Value", U"0.0")
@@ -214,7 +212,7 @@ DO
 	}
 END
 
-FORM (FFNet_getWeight, U"FFNet: Get weight", 0)
+FORM (FFNet_getWeight, U"FFNet: Get weight", nullptr)
 	NATURAL (U"Layer", U"1")
 	NATURAL (U"Unit", U"1")
 	NATURAL (U"Unit from", U"1")
@@ -232,7 +230,7 @@ DO
 	}
 END
 
-FORM (FFNet_setWeight, U"FFNet: Set weight", 0)
+FORM (FFNet_setWeight, U"FFNet: Set weight", nullptr)
 	NATURAL (U"Layer", U"1")
 	NATURAL (U"Unit", U"1")
 	NATURAL (U"Unit (from)", U"1")
@@ -273,7 +271,7 @@ END
 
 /**************** New Pattern ***************************/
 
-FORM (Pattern_create, U"Create Pattern", 0)
+FORM (Pattern_create, U"Create Pattern", nullptr)
 	WORD (U"Name", U"1x1")
 	NATURAL (U"Dimension of a pattern", U"1")
 	NATURAL (U"Number of patterns", U"1")
@@ -285,11 +283,12 @@ END
 
 /**************** New Categories ***************************/
 
-FORM (Categories_create, U"Create Categories", U"")
+FORM (Categories_create, U"Create Categories", nullptr)
 	WORD (U"Name", U"empty")
 	OK
 DO
-	praat_new (Categories_create (), GET_STRING (U"Name"));
+	autoCategories thee = Categories_create ();
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 DIRECT (FFNet_help) Melder_help (U"Feedforward neural networks"); END
@@ -319,7 +318,7 @@ FORM (FFNet_selectBiasesInLayer, U"FFNet: Select biases", U"FFNet: Select biases
 	LABEL (U"", U"during a following learning phase.")
 	NATURAL (U"Layer number", U"1")
 	OK
-	DO
+DO
 	LOOP {
 		iam (FFNet);
 		FFNet_selectBiasesInLayer (me, GET_INTEGER (U"Layer number"));
@@ -343,14 +342,14 @@ DIRECT (FFNet_drawTopology)
 	}
 END
 
-FORM (FFNet_drawWeightsToLayer, U"FFNet: Draw weights to layer", 0)
+FORM (FFNet_drawWeightsToLayer, U"FFNet: Draw weights to layer", nullptr)
 	LABEL (U"", U"Warning: Disapproved. Use \"Draw weights..\" instead.")
 	NATURAL (U"Layer number", U"1")
 	RADIO (U"Scale", 1)
-	RADIOBUTTON (U"by maximum of all weights to layer")
-	RADIOBUTTON (U"by maximum weight from 'from-unit'")
-	RADIOBUTTON (U"by maximum weight to 'to-unit'")
-	BOOLEAN (U"Garnish", 1)
+		RADIOBUTTON (U"by maximum of all weights to layer")
+		RADIOBUTTON (U"by maximum weight from 'from-unit'")
+		RADIOBUTTON (U"by maximum weight to 'to-unit'")
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -363,7 +362,7 @@ END
 
 FORM (FFNet_drawWeights, U"FFNet: Draw weights", U"FFNet: Draw weights...")
 	NATURAL (U"Layer number", U"1")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -378,7 +377,7 @@ FORM (FFNet_drawCostHistory, U"FFNet: Draw cost history", U"FFNet: Draw cost his
 	INTEGER (U"right Iteration_range", U"0")
 	REAL (U"left Cost_range", U"0.0")
 	REAL (U"right Cost_range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -393,21 +392,23 @@ END
 FORM (FFNet_extractWeights, U"FFNet: Extract weights", U"FFNet: Extract weights...")
 	NATURAL (U"Layer number", U"1")
 	OK
-	DO
+DO
 	LOOP {
 		iam (FFNet);
-		praat_new (FFNet_extractWeights (me, GET_INTEGER (U"Layer number")), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		autoTableOfReal thee = FFNet_extractWeights (me, GET_INTEGER (U"Layer number"));
+		praat_new (thee.move());
 	}
 END
 
-FORM (FFNet_weightsToMatrix, U"FFNet: Weights to Matrix ", 0)
+FORM (FFNet_weightsToMatrix, U"FFNet: Weights to Matrix ", nullptr)
 	LABEL (U"", U"Warning: Use \"Extract weights..\" instead.")
 	NATURAL (U"Layer number", U"1")
 	OK
 DO
 	LOOP {
 		iam (FFNet);
-		praat_new (FFNet_weightsToMatrix (me, GET_INTEGER (U"Layer number"), 0), my name);
+		autoMatrix thee = FFNet_weightsToMatrix (me, GET_INTEGER (U"Layer number"), false);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -421,7 +422,8 @@ FORM (FFNet_Activation_to_Categories, U"FFNet & Activation: To Categories", 0)
 DO
 	FFNet me = FIRST (FFNet);
 	Activation thee = FIRST (Activation);
-	praat_new (FFNet_Activation_to_Categories (me, thee, GET_INTEGER (U"Kind of labeling")), my name, U"_", thy name);
+	autoCategories him = FFNet_Activation_to_Categories (me, thee, GET_INTEGER (U"Kind of labeling"));
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 /******************* FFNet && Eigen ******************************************/
@@ -472,7 +474,8 @@ END
 DIRECT (FFNet_Categories_to_Activation)
 	FFNet me = FIRST (FFNet);
 	Categories thee = FIRST (Categories);
-	praat_new (FFNet_Categories_to_Activation (me, thee), my name);
+	autoActivation him = FFNet_Categories_to_Activation (me, thee);
+	praat_new (him.move(), my name);
 END
 
 /************************* FFNet && Matrix **********************************/
@@ -483,7 +486,8 @@ FORM (FFNet_weightsFromMatrix, U"Replace weights by values from Matrix", 0)
 DO
 	FFNet me = FIRST (FFNet);
 	Matrix thee = FIRST (Matrix);
-	praat_new (FFNet_weightsFromMatrix (me, thee, GET_INTEGER (U"Layer")), my name);
+	autoFFNet him = FFNet_weightsFromMatrix (me, thee, GET_INTEGER (U"Layer"));
+	praat_new (him.move(), my name);
 END
 
 /************************* FFNet && Pattern **********************************/
@@ -504,7 +508,8 @@ FORM (FFNet_Pattern_to_Activation, U"To activations in layer", 0)
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
-	praat_new (FFNet_Pattern_to_Activation (me, thee, GET_INTEGER (U"Layer")), my name, U"_", thy name);
+	autoActivation him = FFNet_Pattern_to_Activation (me, thee, GET_INTEGER (U"Layer"));
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 DIRECT (hint_FFNet_and_Pattern_classify)
@@ -519,13 +524,14 @@ END
 
 FORM (FFNet_Pattern_to_Categories, U"FFNet & Pattern: To Categories", U"FFNet & Pattern: To Categories...")
 	RADIO (U"Determine output category as", 1)
-	RADIOBUTTON (U"Winner-takes-all")
-	RADIOBUTTON (U"Stochastic")
+		RADIOBUTTON (U"Winner-takes-all")
+		RADIOBUTTON (U"Stochastic")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
-	praat_new (FFNet_Pattern_to_Categories (me, thee, GET_INTEGER (U"Determine output category as")), my name, U"_", thy name);
+	autoCategories him = FFNet_Pattern_to_Categories (me, thee, GET_INTEGER (U"Determine output category as"));
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 /*********** FFNet Pattern Activation **********************************/
@@ -561,42 +567,38 @@ FORM (FFNet_Pattern_Activation_learnSD, U"FFNet & Pattern & Activation: Learn sl
 	POSITIVE (U"Learning rate", U"0.1")
 	REAL (U"Momentum", U"0.9")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
 	Activation him = FIRST (Activation);
-	struct structSteepestDescentMinimizer_parameters p;
-	p.eta = GET_REAL (U"Learning rate");
-	p.momentum = GET_REAL (U"Momentum");
 	return FFNet_Pattern_Activation_learnSD (me, thee, him, GET_INTEGER (U"Maximum number of epochs"),
-			GET_REAL (U"Tolerance of minimizer"), & p, GET_INTEGER (U"Cost function"));
+			GET_REAL (U"Tolerance of minimizer"), GET_REAL (U"Learning rate"), GET_REAL (U"Momentum"), GET_INTEGER (U"Cost function"));
 END
 
 FORM (FFNet_Pattern_Activation_learnSM, U"FFNet & Pattern & Activation: Learn", 0)
 	NATURAL (U"Maximum number of epochs", U"100")
 	POSITIVE (U"Tolerance of minimizer", U"1e-7")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
 	Activation him = FIRST (Activation);
 	return FFNet_Pattern_Activation_learnSM (me, thee, him, GET_INTEGER (U"Maximum number of epochs"),
-		GET_REAL (U"Tolerance of minimizer"), NULL,
-		GET_INTEGER (U"Cost function"));
+		GET_REAL (U"Tolerance of minimizer"), GET_INTEGER (U"Cost function"));
 END
 
 /*********** FFNet Pattern Categories **********************************/
 
 FORM (FFNet_Pattern_Categories_getCosts_total, U"FFNet & Pattern & Categories: Get total costs", U"FFNet & Pattern & Categories: Get total costs...")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
@@ -608,8 +610,8 @@ END
 
 FORM (FFNet_Pattern_Categories_getCosts_average, U"FFNet & Pattern & Categories: Get average costs", U"FFNet & Pattern & Categories: Get average costs...")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
@@ -635,30 +637,30 @@ DO
 	if (nHidden2 < 1) {
 		nHidden2 = 0;
 	}
-	autoCategories uniq = Categories_selectUniqueItems (thee, 1);
-	long numberOfOutputs = uniq -> size;
+	autoCategories uniq = Categories_selectUniqueItems (thee);
+	long numberOfOutputs = uniq->size;
 	if (numberOfOutputs < 1) Melder_throw (U"There are not enough categories in the Categories.\n"
 		U"Please try again with more categories in the Categories.");
 
-	autoFFNet ffnet = FFNet_create (my nx, nHidden1, nHidden2, numberOfOutputs, 0);
-	FFNet_setOutputCategories (ffnet.peek(), uniq.peek());
-	autostring32 ffnetName = FFNet_createNameFromTopology (ffnet.peek());
-	praat_new (ffnet.transfer(), ffnetName.peek());
+	autoFFNet ffnet = FFNet_create (my nx, nHidden1, nHidden2, numberOfOutputs, false);
+	FFNet_setOutputCategories (ffnet.get(), uniq.get());
+	autostring32 ffnetName = FFNet_createNameFromTopology (ffnet.get());
+	praat_new (ffnet.move(), ffnetName.peek());
 END
 
 FORM (FFNet_Pattern_Categories_learnSM, U"FFNet & Pattern & Categories: Learn", U"FFNet & Pattern & Categories: Learn...")
 	NATURAL (U"Maximum number of epochs", U"100")
 	POSITIVE (U"Tolerance of minimizer", U"1e-7")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
 	Categories him = FIRST (Categories);
 	FFNet_Pattern_Categories_learnSM (me, thee, him, GET_INTEGER (U"Maximum number of epochs"),
-		GET_REAL (U"Tolerance of minimizer"), NULL, GET_INTEGER (U"Cost function"));
+		GET_REAL (U"Tolerance of minimizer"), GET_INTEGER (U"Cost function"));
 END
 
 FORM (FFNet_Pattern_Categories_learnSD, U"FFNet & Pattern & Categories: Learn slow", U"FFNet & Pattern & Categories: Learn slow...")
@@ -668,25 +670,22 @@ FORM (FFNet_Pattern_Categories_learnSD, U"FFNet & Pattern & Categories: Learn sl
 	POSITIVE (U"Learning rate", U"0.1")
 	REAL (U"Momentum", U"0.9")
 	RADIO (U"Cost function", 1)
-	RADIOBUTTON (U"Minimum-squared-error")
-	RADIOBUTTON (U"Minimum-cross-entropy")
+		RADIOBUTTON (U"Minimum-squared-error")
+		RADIOBUTTON (U"Minimum-cross-entropy")
 	OK
 DO
 	FFNet me = FIRST (FFNet);
 	Pattern thee = FIRST (Pattern);
 	Categories him = FIRST (Categories);
-	struct structSteepestDescentMinimizer_parameters p;
-	p.eta = GET_REAL (U"Learning rate");
-	p.momentum = GET_REAL (U"Momentum");
 	FFNet_Pattern_Categories_learnSD (me, thee, him, GET_INTEGER (U"Maximum number of epochs"),
-		GET_REAL (U"Tolerance of minimizer"), &p, GET_INTEGER (U"Cost function"));
+		GET_REAL (U"Tolerance of minimizer"), GET_REAL (U"Learning rate"), GET_REAL (U"Momentum"), GET_INTEGER (U"Cost function"));
 END
 
 void praat_uvafon_FFNet_init ();
 void praat_uvafon_FFNet_init () {
 	Thing_recognizeClassesByName (classFFNet, NULL);
 
-	praat_addMenuCommand (U"Objects", U"New", U"Neural nets", 0, 0, 0);
+	praat_addMenuCommand (U"Objects", U"New", U"Feedforward neural networks", 0, 0, 0);
 	praat_addMenuCommand (U"Objects", U"New", U"Feedforward neural networks", 0, 1, DO_FFNet_help);
 	praat_addMenuCommand (U"Objects", U"New", U"-- FFNet --", 0, 1, 0);
 	praat_addMenuCommand (U"Objects", U"New", U"Create iris example...", 0, 1, DO_FFNet_createIrisExample);
diff --git a/LPC/Cepstrogram.cpp b/LPC/Cepstrogram.cpp
index 2d1a936..7f7ad57 100644
--- a/LPC/Cepstrogram.cpp
+++ b/LPC/Cepstrogram.cpp
@@ -1,20 +1,19 @@
 /* Cepstrogram.cpp
  *
- * Copyright (C) 2013 David Weenink
+ * Copyright (C) 2013, 2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -37,25 +36,25 @@
 Thing_implement (Cepstrogram, Matrix, 2);
 Thing_implement (PowerCepstrogram, Cepstrogram, 2); // derives from Matrix -> also version 2
 
-Cepstrogram Cepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
+autoCepstrogram Cepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
 	double qmin, double qmax, long nq, double dq, double q1) {
 	try {
 		autoCepstrogram me = Thing_new (Cepstrogram);
 
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, qmin, qmax, nq, dq, q1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, qmin, qmax, nq, dq, q1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Cepstrogram not created.");
 	}
 }
 
-PowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
+autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
 	double qmin, double qmax, long nq, double dq, double q1) {
 	try {
 		autoPowerCepstrogram me = Thing_new (PowerCepstrogram);
 
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, qmin, qmax, nq, dq, q1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, qmin, qmax, nq, dq, q1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PowerCepstrogram not created.");
 	}
@@ -69,8 +68,8 @@ void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, doubl
 		 ! Matrix_getWindowSamplesY (me, qmin - 0.49999 * my dy, qmax + 0.49999 * my dy, & ifmin, & ifmax)) {
 		return;
 	}
-	autoMatrix thee = (Matrix) Data_copy (me);
-	double min = 1e38, max = -min;
+	autoMatrix thee = Data_copy (me);
+	double min = 1e308, max = -min;
 	for (long i = 1; i <= my ny; i++) {
 		for (long j = 1; j <= my nx; j++) {
 			double val = TO10LOG (my z[i][j]);
@@ -101,20 +100,20 @@ void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, doubl
 	Graphics_setWindow (g, tmin, tmax, qmin, qmax);
 	Graphics_image (g, thy z,
 		itmin, itmax,
-		Matrix_columnToX (thee.peek(), itmin - 0.5),
-		Matrix_columnToX (thee.peek(), itmax + 0.5),
+		Matrix_columnToX (thee.get(), itmin - 0.5),
+		Matrix_columnToX (thee.get(), itmax + 0.5),
 		ifmin, ifmax,
-		Matrix_rowToY (thee.peek(), ifmin - 0.5),
-		Matrix_rowToY (thee.peek(), ifmax + 0.5),
+		Matrix_rowToY (thee.get(), ifmin - 0.5),
+		Matrix_rowToY (thee.get(), ifmax + 0.5),
 		dBminimum, dBmaximum);
 
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Quefrency (s)");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Quefrency (s)");
 	}
 }
 
@@ -125,7 +124,7 @@ void PowerCepstrogram_subtractTilt_inline (PowerCepstrogram me, double qstartFit
 			for (long j = 1; j <= my ny; j++) {
 				thy z[1][j] = my z[j][i];
 			}
-			PowerCepstrum_subtractTilt_inline (thee.peek(), qstartFit, qendFit, lineType, fitMethod);
+			PowerCepstrum_subtractTilt_inline (thee.get(), qstartFit, qendFit, lineType, fitMethod);
 			for (long j = 1; j <= my ny; j++) {
 				my z[j][i] = thy z[1][j];
 			}
@@ -135,18 +134,18 @@ void PowerCepstrogram_subtractTilt_inline (PowerCepstrogram me, double qstartFit
 	}
 }
 
-PowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) {
+autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod) {
 	try {
 		autoPowerCepstrogram thee = Data_copy (me);
-		PowerCepstrogram_subtractTilt_inline (thee.peek(), qstartFit, qendFit, lineType, fitMethod);
-		return thee.transfer();
+		PowerCepstrogram_subtractTilt_inline (thee.get(), qstartFit, qendFit, lineType, fitMethod);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no tilt subtracted.");
 	}
 	
 }
 
-Table PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling) {
+autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling) {
 	try {
 		autoTable thee = Table_createWithColumnNames (my nx, U"time quefrency cpp f0");
 		autoPowerCepstrum him = PowerCepstrum_create (my ymax, my ny);
@@ -154,20 +153,20 @@ Table PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFl
 			for (long j = 1; j <= my ny; j++) {
 				his z[1][j] = my z[j][i];
 			}
-			double qpeak, cpp = PowerCepstrum_getPeakProminence_hillenbrand (him.peek(), pitchFloor, pitchCeiling, &qpeak);
+			double qpeak, cpp = PowerCepstrum_getPeakProminence_hillenbrand (him.get(), pitchFloor, pitchCeiling, &qpeak);
 			double time = Sampled_indexToX (me, i);
-			Table_setNumericValue (thee.peek(), i, 1, time);
-			Table_setNumericValue (thee.peek(), i, 2, qpeak);
-			Table_setNumericValue (thee.peek(), i, 3, cpp); // Cepstrogram_getCPPS depends on this index 3!!
-			Table_setNumericValue (thee.peek(), i, 4, 1.0 / qpeak);
+			Table_setNumericValue (thee.get(), i, 1, time);
+			Table_setNumericValue (thee.get(), i, 2, qpeak);
+			Table_setNumericValue (thee.get(), i, 3, cpp); // Cepstrogram_getCPPS depends on this index 3!!
+			Table_setNumericValue (thee.get(), i, 4, 1.0 / qpeak);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Table with cepstral peak prominence values created.");
 	}
 }
 
-Table PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) {
+autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) {
 	try {
 		autoTable thee = Table_createWithColumnNames (my nx, U"time quefrency cpp f0 rnr");
 		autoPowerCepstrum him = PowerCepstrum_create (my ymax, my ny);
@@ -175,25 +174,25 @@ Table PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, dou
 			for (long j = 1; j <= my ny; j++) {
 				his z[1][j] = my z[j][i];
 			}
-			double qpeak, cpp = PowerCepstrum_getPeakProminence (him.peek(), pitchFloor, pitchCeiling, interpolation,
+			double qpeak, cpp = PowerCepstrum_getPeakProminence (him.get(), pitchFloor, pitchCeiling, interpolation,
 				qstartFit, qendFit, lineType, fitMethod, &qpeak);
-			double rnr = PowerCepstrum_getRNR (him.peek(), pitchFloor, pitchCeiling, deltaF0);
+			double rnr = PowerCepstrum_getRNR (him.get(), pitchFloor, pitchCeiling, deltaF0);
 			double time = Sampled_indexToX (me, i);
-			Table_setNumericValue (thee.peek(), i, 1, time);
-			Table_setNumericValue (thee.peek(), i, 2, qpeak);
-			Table_setNumericValue (thee.peek(), i, 3, cpp); // Cepstrogram_getCPPS depends on this index!!
-			Table_setNumericValue (thee.peek(), i, 4, 1.0 / qpeak);
-			Table_setNumericValue (thee.peek(), i, 5, rnr);
+			Table_setNumericValue (thee.get(), i, 1, time);
+			Table_setNumericValue (thee.get(), i, 2, qpeak);
+			Table_setNumericValue (thee.get(), i, 3, cpp); // Cepstrogram_getCPPS depends on this index!!
+			Table_setNumericValue (thee.get(), i, 4, 1.0 / qpeak);
+			Table_setNumericValue (thee.get(), i, 5, rnr);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Table with cepstral peak prominence values created.");
 	}
 }
 
-PowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow) {
+autoPowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow) {
 	try {
-		autoPowerCepstrogram thee = (PowerCepstrogram) Data_copy (me);
+		autoPowerCepstrogram thee = Data_copy (me);
 		// 1. average across time
 		long numberOfFrames = (long) floor (timeAveragingWindow / my dx);
 		if (numberOfFrames > 1) {
@@ -228,23 +227,23 @@ PowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAverag
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not smoothed.");
 	}
 }
 
-Matrix PowerCepstrogram_to_Matrix (PowerCepstrogram me) {
+autoMatrix PowerCepstrogram_to_Matrix (PowerCepstrogram me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no Matrix created.");
+		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-PowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time) {
+autoPowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time) {
 	try {
 		long iframe = Sampled_xToNearestIndex (me, time);
 		iframe = iframe < 1 ? 1 : iframe > my nx ? my nx : iframe;
@@ -252,28 +251,27 @@ PowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, doub
 		for (long i = 1; i <= my ny; i++) {
 			thy z[1][i] = my z[i][iframe];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Cepstrum not extracted.");
 	}
 }
 
-PowerCepstrogram Matrix_to_PowerCepstrogram (Matrix me);
-PowerCepstrogram Matrix_to_PowerCepstrogram (Matrix me) {
+autoPowerCepstrogram Matrix_to_PowerCepstrogram (Matrix me) {
 	try {
 		autoPowerCepstrogram thee = Thing_new (PowerCepstrogram);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no PowerCepstrogram created.");
+		Melder_throw (me, U": not converted to PowerCepstrogram.");
 	}
 }
 
-PowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double pitchFloor, double dt, double maximumFrequency, double preEmphasisFrequency) {
+autoPowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double pitchFloor, double dt, double maximumFrequency, double preEmphasisFrequency) {
 	try {
 		// minimum analysis window has 3 periods of lowest pitch
-		double analysisWidth = 3  / pitchFloor;
-		double windowDuration = 2 * analysisWidth; /* gaussian window */
+		double analysisWidth = 3.0  / pitchFloor;
+		double windowDuration = 2.0 * analysisWidth; /* gaussian window */
 		long nFrames;
 
 		// Convenience: analyse the whole sound into one Cepstrogram_frame
@@ -282,7 +280,7 @@ PowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double pitchFloor, double
 		}
 		double t1, samplingFrequency = 2 * maximumFrequency;
 		autoSound sound = Sound_resample (me, samplingFrequency, 50);
-		Sound_preEmphasis (sound.peek(), preEmphasisFrequency);
+		Sound_preEmphasis (sound.get(), preEmphasisFrequency);
 		Sampled_shortTermAnalysis (me, windowDuration, dt, & nFrames, & t1);
 		autoSound sframe = Sound_createSimple (1, windowDuration, samplingFrequency);
 		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
@@ -296,12 +294,12 @@ PowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double pitchFloor, double
 		autoMelderProgress progress (U"Cepstrogram analysis");
 
 		for (long iframe = 1; iframe <= nFrames; iframe++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
-			Sound_into_Sound (sound.peek(), sframe.peek(), t - windowDuration / 2);
-			Vector_subtractMean (sframe.peek());
-			Sounds_multiply (sframe.peek(), window.peek());
-			autoSpectrum spec = Sound_to_Spectrum (sframe.peek(), 1); // FFT yes
-			autoPowerCepstrum cepstrum = Spectrum_to_PowerCepstrum (spec.peek());
+			double t = Sampled_indexToX (thee.get(), iframe);
+			Sound_into_Sound (sound.get(), sframe.get(), t - windowDuration / 2);
+			Vector_subtractMean (sframe.get());
+			Sounds_multiply (sframe.get(), window.get());
+			autoSpectrum spec = Sound_to_Spectrum (sframe.get(), 1); // FFT yes
+			autoPowerCepstrum cepstrum = Spectrum_to_PowerCepstrum (spec.get());
 			for (long i = 1; i <= nq; i++) {
 				thy z[i][iframe] = cepstrum -> z[1][i];
 			}
@@ -310,14 +308,14 @@ PowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double pitchFloor, double
 					iframe, U" out of ", nFrames, U".");
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PowerCepstrogram created.");
 	}
 }
 
-Cepstrum Spectrum_to_Cepstrum_hillenbrand (Spectrum me);
-Cepstrum Spectrum_to_Cepstrum_hillenbrand (Spectrum me) {
+autoCepstrum Spectrum_to_Cepstrum_hillenbrand (Spectrum me);
+autoCepstrum Spectrum_to_Cepstrum_hillenbrand (Spectrum me) {
 	try {
 		autoNUMfft_Table fftTable;
 		// originalNumberOfSamplesProbablyOdd irrelevant
@@ -338,7 +336,7 @@ Cepstrum Spectrum_to_Cepstrum_hillenbrand (Spectrum me) {
 			double val = amp[i] / numberOfSamples;// scaling 1/n because ifft(fft(1))= n;
 			thy z[1][i] = val * val; // power cepstrum
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
@@ -364,21 +362,20 @@ static void complexfftoutput_to_power (double *fft, long nfft, double *dbs, bool
 	}
 }
 
-
-PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimumPitch, double dt) {
+autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimumPitch, double dt) {
 	try {
 		// minimum analysis window has 3 periods of lowest pitch
 		double analysisWidth = 3  / minimumPitch;
 		if (analysisWidth > my dx * my nx) {
 			analysisWidth = my dx * my nx;
 		}
-		double t1, samplingFrequency = 1 / my dx;
+		double samplingFrequency = 1.0 / my dx;
 		autoSound thee;
 		if (samplingFrequency > 30000) {
-			samplingFrequency = samplingFrequency / 2;
-			thee.reset (Sound_resample (me, samplingFrequency, 1));
+			samplingFrequency = samplingFrequency / 2.0;
+			thee = Sound_resample (me, samplingFrequency, 1);
 		} else {
-			thee.reset (Data_copy (me));
+			thee = Data_copy (me);
 		}
 		// pre-emphasis with fixed coefficient 0.9
 		for (long i = thy nx; i > 1; i--) {
@@ -388,7 +385,8 @@ PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimum
 		if (nosInWindow < 8) {
 			Melder_throw (U"Analysis window too short.");
 		}
-		Sampled_shortTermAnalysis (thee.peek(), analysisWidth, dt, & nFrames, & t1);
+		double t1;
+		Sampled_shortTermAnalysis (thee.get(), analysisWidth, dt, & nFrames, & t1);
 		autoNUMvector<double> hamming (1, nosInWindow);
 		for (long i = 1; i <= nosInWindow; i++) {
 			hamming[i] = 0.54 -0.46 * cos(2 * NUMpi * (i - 1) / (nosInWindow - 1));
@@ -409,7 +407,7 @@ PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimum
 		for (long iframe = 1; iframe <= nFrames; iframe++) {
 			double tbegin = t1 + (iframe - 1) * dt - analysisWidth / 2;
 			tbegin = tbegin < thy xmin ? thy xmin : tbegin;
-			long istart = Sampled_xToLowIndex (thee.peek(), tbegin);   // ppgb: afronding naar beneden?
+			long istart = Sampled_xToLowIndex (thee.get(), tbegin);   // ppgb: afronding naar beneden?
 			istart = istart < 1 ? 1 : istart;
 			long iend = istart + nosInWindow - 1;
 			iend = iend > thy nx ? thy nx : iend;
@@ -434,7 +432,7 @@ PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimum
 			 * Here we diverge from Hillenbrand as he takes the fft of half of the spectral values.
 			 * H. forgets that the actual spectrum has nfft/2+1 values. Thefore, we take the inverse
 			 * transform because this keeps the number of samples a power of 2.
-			 * At the same time this results in twice as much numbers in the quefrency domain, i.e. we end with nfft/2+1
+			 * At the same time this results in twice as many numbers in the quefrency domain, i.e. we end up with nfft/2+1
 			 * numbers while H. has only nfft/4!
 			 */
 			fftbuf[1] = spectrum[1];
@@ -452,7 +450,7 @@ PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimum
 					 iframe, U" out of ", nFrames, U".");
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Cepstrogram created.");
 	}
@@ -460,13 +458,13 @@ PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double minimum
 
 double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod) {
 	try {
-		autoPowerCepstrogram him;
+		autoPowerCepstrogram flattened;
 		if (subtractTiltBeforeSmoothing) {
-			him.reset(PowerCepstrogram_subtractTilt (me, qstartFit, qendFit, lineType, fitMethod));
+			flattened = PowerCepstrogram_subtractTilt (me, qstartFit, qendFit, lineType, fitMethod);
 		}
-		autoPowerCepstrogram smooth = PowerCepstrogram_smooth (subtractTiltBeforeSmoothing ? him.peek() : me, timeAveragingWindow, quefrencyAveragingWindow);
-		autoTable table = PowerCepstrogram_to_Table_cpp (smooth.peek(), pitchFloor, pitchCeiling, deltaF0, interpolation, qstartFit, qendFit, lineType, fitMethod);
-		double cpps = Table_getMean (table.peek(), 3);
+		autoPowerCepstrogram smooth = PowerCepstrogram_smooth (flattened ? flattened.get() : me, timeAveragingWindow, quefrencyAveragingWindow);
+		autoTable table = PowerCepstrogram_to_Table_cpp (smooth.get(), pitchFloor, pitchCeiling, deltaF0, interpolation, qstartFit, qendFit, lineType, fitMethod);
+		double cpps = Table_getMean (table.get(), 3);
 		return cpps;
 	} catch (MelderError) {
 		Melder_throw (me, U": no CPPS value calculated.");
@@ -477,11 +475,11 @@ double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractT
 	try {
 		autoPowerCepstrogram him;
 		if (subtractTiltBeforeSmoothing) {
-			him.reset(PowerCepstrogram_subtractTilt (me, 0.001, 0, 1, 1));
+			him = PowerCepstrogram_subtractTilt (me, 0.001, 0, 1, 1);
 		}
-		autoPowerCepstrogram smooth = PowerCepstrogram_smooth (subtractTiltBeforeSmoothing ? him.peek() : me, timeAveragingWindow, quefrencyAveragingWindow);
-		autoTable table = PowerCepstrogram_to_Table_hillenbrand (smooth.peek(), pitchFloor, pitchCeiling);
-		double cpps = Table_getMean (table.peek(), 3);
+		autoPowerCepstrogram smooth = PowerCepstrogram_smooth (subtractTiltBeforeSmoothing ? him.get() : me, timeAveragingWindow, quefrencyAveragingWindow);
+		autoTable table = PowerCepstrogram_to_Table_hillenbrand (smooth.get(), pitchFloor, pitchCeiling);
+		double cpps = Table_getMean (table.get(), 3);
 		return cpps;
 	} catch (MelderError) {
 		Melder_throw (me, U": no CPPS value calculated.");
diff --git a/LPC/Cepstrogram.h b/LPC/Cepstrogram.h
index e198212..aba399e 100644
--- a/LPC/Cepstrogram.h
+++ b/LPC/Cepstrogram.h
@@ -2,21 +2,20 @@
 #define _Cepstrogram_h_
 /* Cepstrogram.h
  *
- * Copyright (C) 2012-2013 David Weenink
+ * Copyright (C) 2012-2013, 2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,30 +48,34 @@ Thing_define (PowerCepstrogram, Cepstrogram) {
 
 */
 
-Cepstrogram Cepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
-	double qmin, double qmax, long nq, double dq, double q1);
-PowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, long nt, double dt, double t1,
-	double qmin, double qmax, long nq, double dq, double q1);
+autoCepstrogram Cepstrogram_create (double tmin, double tmax, long nt, double dt, double t1, double qmin, double qmax, long nq, double dq, double q1);
+
+autoPowerCepstrogram PowerCepstrogram_create (double tmin, double tmax, long nt, double dt, double t1, double qmin, double qmax, long nq, double dq, double q1);
 
 void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish);
 
-PowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow);
+autoPowerCepstrogram PowerCepstrogram_smooth (PowerCepstrogram me, double timeAveragingWindow, double quefrencyAveragingWindow);
+
+autoPowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double analysisWidth, double dt, double maximumFrequency, double preEmphasisFrequency);
+
+autoPowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double analysisWidth, double dt);
+
+autoTable PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling);
 
-PowerCepstrogram Sound_to_PowerCepstrogram (Sound me, double analysisWidth, double dt, double maximumFrequency, double preEmphasisFrequency);
+autoTable PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int method);
 
-PowerCepstrogram Sound_to_PowerCepstrogram_hillenbrand (Sound me, double analysisWidth, double dt);
+autoPowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time);
 
-Table PowerCepstrogram_to_Table_hillenbrand (PowerCepstrogram me, double pitchFloor, double pitchCeiling);
-Table PowerCepstrogram_to_Table_cpp (PowerCepstrogram me, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int method);
-PowerCepstrum PowerCepstrogram_to_PowerCepstrum_slice (PowerCepstrogram me, double time);
+autoPowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod);
 
-PowerCepstrogram PowerCepstrogram_subtractTilt (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod);
 void PowerCepstrogram_subtractTilt_inline (PowerCepstrogram me, double qstartFit, double qendFit, int lineType, int fitMethod);
 
 double PowerCepstrogram_getCPPS_hillenbrand (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling);
-double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow,
-	double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod);
 
-Matrix PowerCepstrogram_to_Matrix (PowerCepstrogram me);
-PowerCepstrogram Matrix_to_Cepstrogram (Matrix me);
+double PowerCepstrogram_getCPPS (PowerCepstrogram me, bool subtractTiltBeforeSmoothing, double timeAveragingWindow, double quefrencyAveragingWindow, double pitchFloor, double pitchCeiling, double deltaF0, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod);
+
+autoMatrix PowerCepstrogram_to_Matrix (PowerCepstrogram me);
+
+autoPowerCepstrogram Matrix_to_PowerCepstrogram (Matrix me);
+
 #endif /* _Cepstrogram_h_ */
diff --git a/LPC/Cepstrum.cpp b/LPC/Cepstrum.cpp
index c3c40ac..b689a5d 100644
--- a/LPC/Cepstrum.cpp
+++ b/LPC/Cepstrum.cpp
@@ -1,20 +1,19 @@
 /* Cepstrum.cpp
  *
- * Copyright (C) 1994-2014 David Weenink
+ * Copyright (C) 1994-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,53 +27,6 @@
 #include "NUM2.h"
 #include "Vector.h"
 
-static void NUMvector_gaussianBlur (double sigma, long filterLength, double *filter) {
-	if (filterLength <= 1) {
-		filter[1] = 1;
-		return;
-	}
-	double sum = 0, mid = (filterLength + 1) / 2;
-	for (long i = 1; i <= filterLength; i++) {
-		double val = (mid - i) / sigma;
-		filter[i] = exp (- 0.5 * val * val);
-		sum += filter[i];
-	}
-	for (long i = 1; i <= filterLength; i++) {
-		filter[i] /= sum;
-	}
-}
-
-// filter must be normalised: sum(i=1, nfilters, filter[i]) == 1
-static void NUMvector_filter (double *input, long numberOfDataPoints, double *filter, long numberOfFilterCoefficients, double *output, int edgeTreatment) {
-	long nleft = (numberOfFilterCoefficients - 1) / 2;
-	if (edgeTreatment == 0) { // outside values are zero
-		for (long i = 1; i <= numberOfDataPoints; i++) {
-			long ifrom = i - nleft, ito = i + nleft;
-			ito = numberOfFilterCoefficients % 2 == 0 ? ito - 1 : ito;
-			long jfrom = ifrom < 1 ? 1 : ifrom;
-			long jto = ito > numberOfDataPoints ? numberOfDataPoints : ito;
-			long index = ifrom < 1 ? 2 - ifrom : 1;
-			double out = 0, sum = 0;
-			for (long j = jfrom; j <= jto; j++, index++) {
-				out += filter[index] * input[j];
-				sum += filter[index];
-			}
-			output[i] = out / sum;
-		}
-	} else if (edgeTreatment == 1) { // wrap-around
-		for (long i = 1; i <= numberOfDataPoints; i++) {
-			double out = 0;
-			for (long j = 1; j <= numberOfFilterCoefficients; j++) {
-				long index = (i - nleft + j - 2) % numberOfDataPoints + 1;
-				out += filter[j] * input[index];
-			}
-			output[i] = out;
-		}
-	}
-	
-	
-}
-
 Thing_implement (Cepstrum, Matrix, 2);
 Thing_implement (PowerCepstrum, Cepstrum, 2); // derives from Matrix therefore also version 2
 
@@ -100,37 +52,37 @@ double structPowerCepstrum :: v_getValueAtSample (long isamp, long which, int un
 	return NUMundefined;
 }
 
-Cepstrum Cepstrum_create (double qmax, long nq) {
+autoCepstrum Cepstrum_create (double qmax, long nq) {
 	try {
 		autoCepstrum me = Thing_new (Cepstrum);
 		double dq = qmax / (nq - 1);
 
-		Matrix_init (me.peek(), 0, qmax, nq, dq, 0, 1, 1, 1, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, qmax, nq, dq, 0.0, 1.0, 1.0, 1, 1, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Cepstrum not created.");
 	}
 }
 
-PowerCepstrum Cepstrum_downto_PowerCepstrum (Cepstrum me ) {
+autoPowerCepstrum Cepstrum_downto_PowerCepstrum (Cepstrum me ) {
 	try {
 		autoPowerCepstrum thee = PowerCepstrum_create (my xmax, my nx);
 		for (long i = 1; i <= my nx; i++) {
 			thy z[1][i] = my z[1][i] * my z[1][i];
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" not converted.");
 	}
 }
 
-PowerCepstrum PowerCepstrum_create (double qmax, long nq) {
+autoPowerCepstrum PowerCepstrum_create (double qmax, long nq) {
 	try {
 		autoPowerCepstrum me = Thing_new (PowerCepstrum);
 		double dq = qmax / (nq - 1);
 
-		Matrix_init (me.peek(), 0, qmax, nq, dq, 0, 1, 1, 1, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, qmax, nq, dq, 0.0, 1.0, 1.0, 1, 1, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PowerCepstrum not created.");
 	}
@@ -173,10 +125,10 @@ static void _Cepstrum_draw (Cepstrum me, Graphics g, double qmin, double qmax, d
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Quefrency (s)");
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-		Graphics_textLeft (g, 1, power ? U"Amplitude (dB)" : U"Amplitude");
-		Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
+		Graphics_textBottom (g, true, U"Quefrency (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textLeft (g, true, power ? U"Amplitude (dB)" : U"Amplitude");
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
@@ -314,6 +266,7 @@ void PowerCepstrum_fitTiltLine (PowerCepstrum me, double qmin, double qmax, doub
 	}
 }
 
+#if 0
 // Hillenbrand subtracts dB values and if the result is negative it is made zero
 static void PowerCepstrum_subtractTiltLine_inline2 (PowerCepstrum me, double slope, double intercept, int lineType) {
 	for (long j = 1; j <= my nx; j++) {
@@ -326,6 +279,7 @@ static void PowerCepstrum_subtractTiltLine_inline2 (PowerCepstrum me, double slo
 		my z[1][j] = diff;
 	}
 }
+#endif
 
 // clip with tilt line
 static void PowerCepstrum_subtractTiltLine_inline (PowerCepstrum me, double slope, double intercept, int lineType) {
@@ -339,7 +293,7 @@ static void PowerCepstrum_subtractTiltLine_inline (PowerCepstrum me, double slop
 		if (diff < 0) {
 			diff = 0;
 		}
-		my z[1][j] = exp (diff * NUMln10 / 10) - 1e-30;
+		my z[1][j] = exp (diff * NUMln10 / 10.0) - 1e-30;
 	}
 }
 
@@ -350,52 +304,33 @@ void PowerCepstrum_subtractTilt_inline (PowerCepstrum me, double qstartFit, doub
 	PowerCepstrum_subtractTiltLine_inline (me, slope, intercept, lineType);
 }
 
-PowerCepstrum PowerCepstrum_subtractTilt (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod) {
+autoPowerCepstrum PowerCepstrum_subtractTilt (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod) {
 	try {
 		autoPowerCepstrum thee = Data_copy (me);
-		PowerCepstrum_subtractTilt_inline (thee.peek(), qstartFit,  qendFit, lineType, fitMethod);
-		return thee.transfer();
+		PowerCepstrum_subtractTilt_inline (thee.get(), qstartFit,  qendFit, lineType, fitMethod);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": couldn't subtract tilt line.");
 	}
 }
 
-static void PowerCepstrum_smooth_inline2 (PowerCepstrum me, double quefrencyAveragingWindow) {
-	try {
-		long numberOfQuefrencyBins = (long) floor (quefrencyAveragingWindow / my dx);
-		if (numberOfQuefrencyBins > 1) {
-			autoNUMvector<double> qin (1, my nx);
-			autoNUMvector<double> qout (1, my nx);
-			for (long iq = 1; iq <= my nx; iq++) {
-				qin[iq] = my z[1][iq];
-			}
-			NUMvector_smoothByMovingAverage (qin.peek(), my nx, numberOfQuefrencyBins, qout.peek());
-			for (long iq = 1; iq <= my nx; iq++) {
-				my z[1][iq] = qout[iq];
-			}
-		}
-	} catch (MelderError) {
-		Melder_throw (me, U": not smoothed.");
-	}
-}
-
 void PowerCepstrum_smooth_inline (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations) {
 	try {
 		long numberOfQuefrencyBins = (long) floor (quefrencyAveragingWindow / my dx);
 		if (numberOfQuefrencyBins > 1) {
 			autoNUMvector<double> qin (1, my nx);
 			autoNUMvector<double> qout (1, my nx);
-			for (long iq = 1; iq <= my nx; iq++) {
-				qin[iq] = my z[1][iq];
+			for (long iq = 1; iq <= my nx; iq ++) {
+				qin [iq] = my z [1] [iq];
 			}
 			double *xin, *xout;
-			for (long k = 1; k <= numberOfIterations; k++) {
+			for (long k = 1; k <= numberOfIterations; k ++) {
 				xin  = k % 2 == 1 ? qin.peek() : qout.peek ();
 				xout = k % 2 == 1 ? qout.peek () : qin.peek();
 				NUMvector_smoothByMovingAverage (xin, my nx, numberOfQuefrencyBins, xout);
 			}
 			for (long iq = 1; iq <= my nx; iq++) {
-				my z[1][iq] = xout[iq];
+				my z [1] [iq] = xout [iq];
 			}
 		}
 	} catch (MelderError) {
@@ -403,71 +338,46 @@ void PowerCepstrum_smooth_inline (PowerCepstrum me, double quefrencyAveragingWin
 	}
 }
 
-PowerCepstrum PowerCepstrum_smooth (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations) {
+autoPowerCepstrum PowerCepstrum_smooth (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations) {
 	autoPowerCepstrum thee = Data_copy (me);
-	PowerCepstrum_smooth_inline (thee.peek(), quefrencyAveragingWindow, numberOfIterations);
-	return thee.transfer();
+	PowerCepstrum_smooth_inline (thee.get(), quefrencyAveragingWindow, numberOfIterations);
+	return thee;
 }
 
 void PowerCepstrum_getMaximumAndQuefrency (PowerCepstrum me, double pitchFloor, double pitchCeiling, int interpolation, double *peakdB, double *quefrency) {
-	*peakdB = *quefrency = NUMundefined;
 	autoPowerCepstrum thee = Data_copy (me);
-	double lowestQuefrency = 1 / pitchCeiling, highestQuefrency = 1 / pitchFloor;
-	for (long i = 1; i <= my nx; i++) {
+	double lowestQuefrency = 1.0 / pitchCeiling, highestQuefrency = 1.0 / pitchFloor;
+	for (long i = 1; i <= my nx; i ++) {
 		thy z[1][i] = my v_getValueAtSample (i, 1, 0); // 10 log val^2
 	}
-	Vector_getMaximumAndX ((Vector) thee.peek(), lowestQuefrency, highestQuefrency, 1, interpolation, peakdB, quefrency);
-}
-
-static void Cepstrum_getZ2 (Cepstrum me, long imin, long imax, double peakdB, long margin, long keep, double *z) {
-	*z = NUMundefined;
-	long npeaks = 0, n = (imax - imin) / 2 + keep;
-	autoNUMvector<double> ymax (1, n);
-	autoNUMvector<long> index (1, n);
-	for (long i = imin + 1; i < imax; i++) {
-		if (my z[1][i] > my z[1][i-1] && my z[1][i] > my z[1][i+1]) {
-			ymax[++npeaks] = my z[1][i];
-			index[npeaks] = i;
-		}
-	}
-	NUMsort2<double, long> (npeaks, ymax.peek(), index.peek());
-	long i = npeaks - 1, ipeak = 0;
-	while (i > 0 && ipeak < keep) {
-		if (labs(index[i] - index[npeaks]) > margin) {
-			ipeak++;
-			ymax[npeaks +ipeak] = ymax[i];
-		}
-		i--;
-	}
-	double mean, variance;
-	NUMvector_avevar (&ymax[npeaks], ipeak, &mean, &variance);
-	double sigma = sqrt (variance / (ipeak - 1));
-	double peak = exp (peakdB * NUMln10 / 10) - 1e-30;
-	*z = sigma <= 0 ? NUMundefined : peak / sigma;
+	Vector_getMaximumAndX ((Vector) thee.get(), lowestQuefrency, highestQuefrency, 1, interpolation, peakdB, quefrency);   // FIXME cast
 }
 
+#if 0
 static void Cepstrum_getZ (Cepstrum me, long imin, long imax, double peakdB, double slope, double intercept, int lineType, double *z) {
 	long ndata = imax - imin + 1;
 	autoNUMvector<double> dabs (1, ndata);
-	for (long i = imin; i <= imax; i++) {
+	for (long i = imin; i <= imax; i ++) {
 		double q = my x1 + (i - 1) * my dx;
-		q = i == 1 ? 0.5 * my dx : q; // approximation
-		double xq = lineType == 2 ? log(q) : q;
+		q = ( i == 1 ? 0.5 * my dx : q );   // approximation
+		double xq = ( lineType == 2 ? log (q) : q );
 		double db_background = slope * xq + intercept;
 		double db_cepstrum = my v_getValueAtSample (i, 1, 0);
-		double diff = exp ((db_cepstrum - db_background) * NUMln10 / 10) - 1e-30;
+		double diff = exp ((db_cepstrum - db_background) * NUMln10 / 10.0) - 1e-30;
 		//double diff = fabs (db_cepstrum - db_background);
-		dabs[i - imin + 1] = diff;
+		dabs [i - imin + 1] = diff;
 	}
 	double q50 = NUMquantile (ndata, dabs.peek(), 0.5);
-	double peak = exp (peakdB * NUMln10 / 10) - 1e-30;
-	//*z = peakdB / q50;
-	*z = peak / q50;
+	double peak = exp (peakdB * NUMln10 / 10.0) - 1e-30;
+	if (z) {
+		*z = peak / q50;
+	}
 }
+#endif
 
 double PowerCepstrum_getRNR (PowerCepstrum me, double pitchFloor, double pitchCeiling, double f0fractionalWidth) {
 	double rnr = NUMundefined;
-	double qmin = 1 / pitchCeiling, qmax = 1 / pitchFloor, peakdB, qpeak;
+	double qmin = 1.0 / pitchCeiling, qmax = 1.0 / pitchFloor, peakdB, qpeak;
 	PowerCepstrum_getMaximumAndQuefrency (me, pitchFloor, pitchCeiling, 2, &peakdB, &qpeak);
 	long imin, imax;
 	if (! Matrix_getWindowSamplesX (me, qmin, qmax, & imin, & imax)) {
@@ -488,14 +398,15 @@ double PowerCepstrum_getRNR (PowerCepstrum me, double pitchFloor, double pitchCe
 		double qx = my x1 + (i - 1) * my dx;
 		sum += val;
 		// is qx within an interval around a multiple of the peak's q ?
-		for (long j = 1; j <= npeaks; j++) {
-			double f0c = 1 / (j * qpeak);
-			double f0clow = f0c * (1 - f0fractionalWidth);
-			double f0chigh = f0c * (1 + f0fractionalWidth);
-			double qclow =  1 / f0chigh;
-			double qchigh = f0fractionalWidth >= 1 ? qmax : 1 / f0clow;
-			if (qx >= qclow && qx <= qchigh) { // yes in rhamonic interval
-				sumr += val; break;
+		for (long j = 1; j <= npeaks; j ++) {
+			double f0c = 1.0 / (j * qpeak);
+			double f0clow = f0c * (1.0 - f0fractionalWidth);
+			double f0chigh = f0c * (1.0 + f0fractionalWidth);
+			double qclow =  1.0 / f0chigh;
+			double qchigh = ( f0fractionalWidth >= 1 ? qmax : 1.0 / f0clow );
+			if (qx >= qclow && qx <= qchigh) {   // yes in rahmonic interval
+				sumr += val;
+				break;
 			}
 		}
 	}
@@ -507,63 +418,64 @@ double PowerCepstrum_getPeakProminence_hillenbrand (PowerCepstrum me, double pit
 	double slope, intercept, quefrency, peakdB;
 	PowerCepstrum_fitTiltLine (me, 0.001, 0, &slope, &intercept, 1, 1);
 	autoPowerCepstrum thee = Data_copy (me);
-	PowerCepstrum_subtractTiltLine_inline (thee.peek(), slope, intercept, 1);
-	PowerCepstrum_getMaximumAndQuefrency (thee.peek(), pitchFloor, pitchCeiling, 0, &peakdB, &quefrency);
+	PowerCepstrum_subtractTiltLine_inline (thee.get(), slope, intercept, 1);
+	PowerCepstrum_getMaximumAndQuefrency (thee.get(), pitchFloor, pitchCeiling, 0, & peakdB, & quefrency);
 	if (qpeak) {
 		*qpeak = quefrency;
 	}
 	return peakdB;
 }
 
-double PowerCepstrum_getPeakProminence (PowerCepstrum me, double pitchFloor, double pitchCeiling, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod, double *qpeak) {
-	double slope, intercept, quefrency, peakdB;
+double PowerCepstrum_getPeakProminence (PowerCepstrum me, double pitchFloor, double pitchCeiling, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod, double *p_qpeak) {
+	double slope, intercept, qpeak, peakdB;
 	PowerCepstrum_fitTiltLine (me, qstartFit, qendFit, &slope, &intercept, lineType, fitMethod);
-	PowerCepstrum_getMaximumAndQuefrency (me, pitchFloor, pitchCeiling, interpolation, &peakdB, &quefrency);
-	double xq = lineType == 2 ? log(quefrency) : quefrency;
+	PowerCepstrum_getMaximumAndQuefrency (me, pitchFloor, pitchCeiling, interpolation, & peakdB, & qpeak);
+	double xq = lineType == 2 ? log(qpeak) : qpeak;
 	double db_background = slope * xq + intercept;
 	double cpp = peakdB - db_background;
-	if (qpeak != NULL) {
-		*qpeak = quefrency;
+	if (p_qpeak) {
+		*p_qpeak = qpeak;
 	}
 	return cpp;
 }
 
-Matrix PowerCepstrum_to_Matrix (PowerCepstrum me) {
+autoMatrix PowerCepstrum_to_Matrix (PowerCepstrum me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix created.");
 	}
 }
 
-PowerCepstrum Matrix_to_PowerCepstrum (Matrix me) {
+autoPowerCepstrum Matrix_to_PowerCepstrum (Matrix me) {
 	try {
-		if (my ny != 1)
+		if (my ny != 1) {
 			Melder_throw (U"Matrix should have exactly 1 row.");
+		}
 		autoPowerCepstrum thee = Thing_new (PowerCepstrum);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PowerCepstrum.");
 	}
 }
 
-PowerCepstrum Matrix_to_PowerCepstrum_row (Matrix me, long row) {
+autoPowerCepstrum Matrix_to_PowerCepstrum_row (Matrix me, long row) {
 	try {
 		autoPowerCepstrum thee = PowerCepstrum_create (my xmax, my nx);
 		if (row < 1 || row > my ny) {
 			Melder_throw (U"Row number should be between 1 and ", my ny, U" inclusive.");
 		}
 		NUMvector_copyElements (my z[row], thy z[1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PowerCepstrum created.");
 	}
 }
 
-PowerCepstrum Matrix_to_PowerCepstrum_column (Matrix me, long col) {
+autoPowerCepstrum Matrix_to_PowerCepstrum_column (Matrix me, long col) {
 	try {
 		autoPowerCepstrum thee = PowerCepstrum_create (my ymax, my ny);
 		if (col < 1 || col > my nx) {
@@ -572,7 +484,7 @@ PowerCepstrum Matrix_to_PowerCepstrum_column (Matrix me, long col) {
 		for (long i = 1; i <= my ny; i++) {
 			thy z[1][i] = my z[i][col];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PowerCepstrum created.");
 	}
diff --git a/LPC/Cepstrum.h b/LPC/Cepstrum.h
index 86e65e2..7170337 100644
--- a/LPC/Cepstrum.h
+++ b/LPC/Cepstrum.h
@@ -2,21 +2,20 @@
 #define _Cepstrum_h_
 /* Cepstrum.h
  *
- * Copyright (C) 1994-2013 David Weenink
+ * Copyright (C) 1994-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -60,8 +59,9 @@ Thing_define (PowerCepstrum, Cepstrum) {
 	ny = 1
 */
 
-Cepstrum Cepstrum_create (double qmax, long nq);
-PowerCepstrum PowerCepstrum_create (double qmax, long nq);
+autoCepstrum Cepstrum_create (double qmax, long nq);
+
+autoPowerCepstrum PowerCepstrum_create (double qmax, long nq);
 /* Preconditions:
 		nq >= 2;
 	Postconditions:
@@ -74,7 +74,9 @@ PowerCepstrum PowerCepstrum_create (double qmax, long nq);
 */
 
 void PowerCepstrum_draw (PowerCepstrum me, Graphics g, double qmin, double qmax, double dBminimum, double dBmaximum, int garnish);
+
 void Cepstrum_drawLinear (Cepstrum me, Graphics g, double qmin, double qmax, double minimum, double maximum, int garnish);
+
 void PowerCepstrum_drawTiltLine (PowerCepstrum me, Graphics g, double qmin, double qmax, double dBminimum, double dBmaximum, double qstart, double qend, int lineType, int method);
 /*
 	Function:
@@ -96,16 +98,16 @@ double PowerCepstrum_getPeakProminence_hillenbrand (PowerCepstrum me, double pit
 double PowerCepstrum_getRNR (PowerCepstrum me, double pitchFloor, double pitchCeiling, double f0fractionalWidth);
 double PowerCepstrum_getPeakProminence (PowerCepstrum me, double pitchFloor, double pitchCeiling, int interpolation, double qstartFit, double qendFit, int lineType, int fitMethod, double *qpeak);
 void PowerCepstrum_fitTiltLine (PowerCepstrum me, double qmin, double qmax, double *slope, double *intercept, int lineType, int method);
-PowerCepstrum PowerCepstrum_subtractTilt (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod);
+autoPowerCepstrum PowerCepstrum_subtractTilt (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod);
 void PowerCepstrum_subtractTilt_inline (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod);
-PowerCepstrum PowerCepstrum_subtractTilt (PowerCepstrum me, double qstartFit, double qendFit, int lineType, int fitMethod);
+
 void PowerCepstrum_smooth_inline (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations);
-PowerCepstrum PowerCepstrum_smooth (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations);
+autoPowerCepstrum PowerCepstrum_smooth (PowerCepstrum me, double quefrencyAveragingWindow, long numberOfIterations);
 
-Matrix PowerCepstrum_to_Matrix (PowerCepstrum me);
-PowerCepstrum Matrix_to_PowerCepstrum (Matrix me);
-PowerCepstrum Matrix_to_PowerCepstrum_row (Matrix me, long row);
-PowerCepstrum Matrix_to_PowerCepstrum_column (Matrix me, long col);
-PowerCepstrum Cepstrum_downto_PowerCepstrum (Cepstrum me);
+autoMatrix PowerCepstrum_to_Matrix (PowerCepstrum me);
+autoPowerCepstrum Matrix_to_PowerCepstrum (Matrix me);
+autoPowerCepstrum Matrix_to_PowerCepstrum_row (Matrix me, long row);
+autoPowerCepstrum Matrix_to_PowerCepstrum_column (Matrix me, long col);
+autoPowerCepstrum Cepstrum_downto_PowerCepstrum (Cepstrum me);
 
 #endif /* _Cepstrum_h_ */
diff --git a/LPC/Cepstrum_and_Spectrum.cpp b/LPC/Cepstrum_and_Spectrum.cpp
index 38a869c..0f415ed 100644
--- a/LPC/Cepstrum_and_Spectrum.cpp
+++ b/LPC/Cepstrum_and_Spectrum.cpp
@@ -1,20 +1,19 @@
 /* Cepstrum_and_Spectrum.cpp
  *
- * Copyright (C) 1994-2012 David Weenink
+ * Copyright (C) 1994-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,7 +29,8 @@
 #include "Spectrum_extensions.h"
 #include "Sound_and_Spectrum.h"
 
-static Cepstrum Spectrum_to_Cepstrum_cmplx (Spectrum me) {
+#if 0
+static autoCepstrum Spectrum_to_Cepstrum_cmplx (Spectrum me) {
 	try {
 		autoMatrix unwrap = Spectrum_unwrap (me);
 		autoSpectrum sx = Data_copy (me);
@@ -39,22 +39,23 @@ static Cepstrum Spectrum_to_Cepstrum_cmplx (Spectrum me) {
 
 		for (long i = 1; i <= my nx; i ++) {
 			double xa = unwrap -> z[1][i];
-			sx -> z[1][i] = xa > 0 ? 0.5 * log (xa) : -300;
+			sx -> z[1][i] = xa > 0.0 ? 0.5 * log (xa) : -300.0;
 			sx -> z[2][i] = unwrap -> z[2][i];
 		}
 
 		// Compute complex cepstrum x.
 
-		autoSound x = Spectrum_to_Sound (sx.peek());
+		autoSound x = Spectrum_to_Sound (sx.get());
 		autoCepstrum thee = Cepstrum_create (x -> xmax - x -> xmin, x -> nx);
 		NUMvector_copyElements (x -> z[1], thy z[1], 1, x -> nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Cepstrum created.");
 	}
 }
+#endif
 
-PowerCepstrum Spectrum_to_PowerCepstrum (Spectrum me) {
+autoPowerCepstrum Spectrum_to_PowerCepstrum (Spectrum me) {
 	try {
 		autoSpectrum dBspectrum = Data_copy (me);
 		double *re = dBspectrum -> z[1], *im = dBspectrum -> z[2];
@@ -62,19 +63,19 @@ PowerCepstrum Spectrum_to_PowerCepstrum (Spectrum me) {
 			re[i] = log (re[i] * re[i] + im[i] * im[i] + 1e-300);
 			im[i] = 0.0;
 		}
-		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.peek());
+		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.get());
 		autoPowerCepstrum thee = PowerCepstrum_create (0.5 / my dx, my nx);
 		for (long i = 1; i <= thy nx; i++) {
 			double val = cepstrum -> z[1][i];
 			thy z[1][i] = val * val;
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
 }
 
-Cepstrum Spectrum_to_Cepstrum (Spectrum me) {
+autoCepstrum Spectrum_to_Cepstrum (Spectrum me) {
 	try {
 		autoSpectrum dBspectrum = Data_copy (me);
 		double *re = dBspectrum -> z[1], *im = dBspectrum -> z[2];
@@ -82,96 +83,33 @@ Cepstrum Spectrum_to_Cepstrum (Spectrum me) {
 			re[i] = log (re[i] * re[i] + im[i] * im[i] + 1e-300);
 			im[i] = 0.0;
 		}
-		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.peek());
+		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.get());
 		autoCepstrum thee = Cepstrum_create (0.5 / my dx, my nx);
 		for (long i = 1; i <= thy nx; i++) {
 			double val = cepstrum -> z[1][i];
 			thy z[1][i] = val;
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
 }
 
-Spectrum Cepstrum_to_Spectrum (Cepstrum me) { //TODO power cepstrum
+autoSpectrum Cepstrum_to_Spectrum (Cepstrum me) { //TODO power cepstrum
 	try {
 		autoCepstrum cepstrum = Data_copy (me);
 		cepstrum ->  z[1][1] = my z[1][1];
 		for (long i = 2; i <= cepstrum -> nx; i++) {
 			cepstrum -> z[1][i] = 2 * my z[1][i];
 		}
-		autoSpectrum thee = Sound_to_Spectrum ((Sound) cepstrum.peek(), 1);
+		autoSpectrum thee = Sound_to_Spectrum ((Sound) cepstrum.get(), 1);
 
 		double *re = thy z[1], *im = thy z[2];
 		for (long i = 1; i <= thy nx; i ++) {
 			re[i] =  exp (0.5 * re[i]);   // i.e., sqrt (exp(re [i]))
 			im[i] = 0.0;
 		}
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, U": no Spectrum created.");
-	}
-}
-
-static Cepstrum Spectrum_to_Cepstrum2 (Spectrum me) {
-	try {
-		autoNUMfft_Table fftTable;
-		// originalNumberOfSamplesProbablyOdd irrelevant
-		if (my x1 != 0.0) {
-			Melder_throw (U"A Fourier-transformable Spectrum must have a first frequency of 0 Hz, not ", my x1, U" Hz.");
-		}
-		long numberOfSamples = 2 * my nx - 2;
-		autoCepstrum thee = Cepstrum_create (0.5 / my dx, my nx);
-		// my dx = 1 / (dT * N) = 1 / (duration of sound)
-		thy dx = 1 / (my dx * numberOfSamples); // Cepstrum is on [-T/2, T/2] !
-		NUMfft_Table_init (&fftTable, numberOfSamples);
-		autoNUMvector<double> fftbuf (1, numberOfSamples);
-
-		fftbuf[1] = my v_getValueAtSample (1, 0, 2);
-		for (long i = 2; i < my nx; i++) {
-			fftbuf [i + i - 2] = my v_getValueAtSample (i, 0, 2);
-			fftbuf [i + i - 1] = 0;
-		}
-		fftbuf [numberOfSamples] = my v_getValueAtSample (my nx, 0, 2);
-		NUMfft_backward (&fftTable, fftbuf.peek());
-		for (long i = 1; i <= my nx; i++) {
-			double val = fftbuf[i] / numberOfSamples; // scaling 1/n because ifft(fft(1))= n;
-			thy z[1][i] = val * val; // power cepstrum
-		}
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, U": not converted to Cepstrum.");
-	}
-}
-
-
-static Spectrum Cepstrum_to_Spectrum2 (Cepstrum me) { //TODO power cepstrum
-	try {
-		autoNUMfft_Table fftTable;
-		long numberOfSamples = 2 * my nx - 2;
-
-		autoNUMvector<double> fftbuf (1, numberOfSamples);
-		autoSpectrum thee = Spectrum_create (0.5 / my dx, my nx);
-		fftbuf[1] = sqrt (my z[1][1]);
-		for (long i = 2; i <= my nx; i++) {
-			fftbuf[i] = 2 * sqrt (my z[1][i]);
-		}
-		// fftbuf[my nx+1 ... numberOfSamples] = 0
-		NUMfft_Table_init (&fftTable, numberOfSamples);
-		NUMfft_forward (&fftTable, fftbuf.peek());
-		
-		thy z[1][1] = fabs (fftbuf[1]);
-		for (long i = 2; i < my nx; i++) {
-			double br = fftbuf[i + i - 2], bi = fftbuf[i + i - 1];
-			thy z[1][i] = sqrt (br * br + bi * bi);
-		}
-		thy z[1][my nx] = fabs (fftbuf[numberOfSamples]);
-		for (long i = 1; i <= my nx; i++) {
-			thy z[1][i] = exp (NUMln10 * thy z[1][i] / 20) * 2e-5 / sqrt (2 * thy dx);
-			thy z[2][i] = 0;
-		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum created.");
 	}
diff --git a/LPC/Cepstrum_and_Spectrum.h b/LPC/Cepstrum_and_Spectrum.h
index 17daeae..8d8033c 100644
--- a/LPC/Cepstrum_and_Spectrum.h
+++ b/LPC/Cepstrum_and_Spectrum.h
@@ -1,11 +1,30 @@
 #ifndef _Cepstrum_and_Spectrum_h_
 #define _Cepstrum_and_Spectrum_h_
-/* David Weenink, 20010101 */
+/* Cepstrum_and_Spectrum.h
+ *
+ * Copyright (C) 1994-2012, 2015 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 #include "Spectrum.h"
 #include "Cepstrum.h"
 
-Cepstrum Spectrum_to_Cepstrum (Spectrum me);
-Spectrum Cepstrum_to_Spectrum (Cepstrum me);
-PowerCepstrum Spectrum_to_PowerCepstrum (Spectrum me);
+autoCepstrum Spectrum_to_Cepstrum (Spectrum me);
+
+autoSpectrum Cepstrum_to_Spectrum (Cepstrum me);
+
+autoPowerCepstrum Spectrum_to_PowerCepstrum (Spectrum me);
+
 #endif /* _Cepstrum_and_Spectrum_h_ */
diff --git a/LPC/Cepstrumc.cpp b/LPC/Cepstrumc.cpp
index 9df4426..700e118 100644
--- a/LPC/Cepstrumc.cpp
+++ b/LPC/Cepstrumc.cpp
@@ -1,20 +1,19 @@
 /* Cepstrumc.c
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -50,7 +49,7 @@
 Thing_implement (Cepstrumc, Sampled, 1);
 
 void structCepstrumc :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"  Start time: ", xmin);
 	MelderInfo_writeLine (U"  End time: ", xmax);
 	MelderInfo_writeLine (U"  Number of frames: ", nx);
@@ -72,12 +71,12 @@ void Cepstrumc_init (Cepstrumc me, double tmin, double tmax, long nt, double dt,
 	my frame = NUMvector<structCepstrumc_Frame> (1, nt);
 }
 
-Cepstrumc Cepstrumc_create (double tmin, double tmax, long nt, double dt, double t1,
+autoCepstrumc Cepstrumc_create (double tmin, double tmax, long nt, double dt, double t1,
                             int nCoefficients, double samplingFrequency) {
 	try {
 		autoCepstrumc me = Thing_new (Cepstrumc);
-		Cepstrumc_init (me.peek(), tmin, tmax, nt, dt, t1, nCoefficients, samplingFrequency);
-		return me.transfer();
+		Cepstrumc_init (me.get(), tmin, tmax, nt, dt, t1, nCoefficients, samplingFrequency);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Cepstrum not created.");
 	}
@@ -106,8 +105,7 @@ static void regression (Cepstrumc me, long frame, double r[], long nr) {
 	}
 }
 
-DTW Cepstrumc_to_DTW (Cepstrumc me, Cepstrumc thee, double wc, double wle,
-                      double wr, double wer, double dtr, int matchStart, int matchEnd, int constraint) {
+autoDTW Cepstrumc_to_DTW (Cepstrumc me, Cepstrumc thee, double wc, double wle, double wr, double wer, double dtr, int matchStart, int matchEnd, int constraint) {
 	try {
 		long nr = (long) floor (dtr / my dx);
 
@@ -167,14 +165,14 @@ DTW Cepstrumc_to_DTW (Cepstrumc me, Cepstrumc thee, double wc, double wle,
 			Melder_progress ( (double) i / my nx, U"Calculate distances: frame ",
 			                   i, U" from ", my nx, U".");
 		}
-		DTW_findPath (him.peek(), matchStart, matchEnd, constraint);
-		return him.transfer();
+		DTW_findPath (him.get(), matchStart, matchEnd, constraint);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created.");
 	}
 }
 
-Matrix Cepstrumc_to_Matrix (Cepstrumc me) {
+autoMatrix Cepstrumc_to_Matrix (Cepstrumc me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
 		                                 0, my maxnCoefficients, my maxnCoefficients + 1, 1, 0);
@@ -185,7 +183,7 @@ Matrix Cepstrumc_to_Matrix (Cepstrumc me) {
 				thy z[j][i] = his c[j - 1];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix created.");
 	}
diff --git a/LPC/Cepstrumc.h b/LPC/Cepstrumc.h
index 49b30d9..17c7cc6 100644
--- a/LPC/Cepstrumc.h
+++ b/LPC/Cepstrumc.h
@@ -2,21 +2,20 @@
 #define _Cepstrumc_h_
 /* Cepstrumc.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,19 +30,18 @@
 #include "DTW.h"
 
 #include "Cepstrumc_def.h"
-oo_CLASS_CREATE (Cepstrumc, Sampled);
 
 void Cepstrumc_init (Cepstrumc me, double tmin, double tmax, long nt, double dt, double t1,
 	int nCoefficients, double samplingFrequency);
 	
-Cepstrumc Cepstrumc_create (double tmin, double tmax, long nt, double dt, double t1,
+autoCepstrumc Cepstrumc_create (double tmin, double tmax, long nt, double dt, double t1,
 	int nCoefficients, double samplingFrequency);
 
 /******************* Frames ************************************************/
 
 void Cepstrumc_Frame_init (Cepstrumc_Frame me, int nCoefficients);
 	
-DTW Cepstrumc_to_DTW ( Cepstrumc me, Cepstrumc thee, double wc, double wle,
+autoDTW Cepstrumc_to_DTW ( Cepstrumc me, Cepstrumc thee, double wc, double wle,
 	double wr, double wer, double dtr, int matchStart, int matchEnd, int constraint);
 /*
 	1. Calculate distances between Cepstra:
@@ -64,6 +62,6 @@ DTW Cepstrumc_to_DTW ( Cepstrumc me, Cepstrumc thee, double wc, double wle,
 	at least one of wc, wle, wr, wer != 0
 */
 
-Matrix Cepstrumc_to_Matrix (Cepstrumc me);
+autoMatrix Cepstrumc_to_Matrix (Cepstrumc me);
 
 #endif /* _Cepstrumc_h_ */
diff --git a/LPC/Cepstrumc_def.h b/LPC/Cepstrumc_def.h
index fedb108..9cd8fa0 100644
--- a/LPC/Cepstrumc_def.h
+++ b/LPC/Cepstrumc_def.h
@@ -2,37 +2,34 @@
  *
  * Copyright (C) 1994-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
- djmw 20020812 GPL header
- djmw 20080122 Version 1: float -> double
+	djmw 20020812 GPL header
+	djmw 20080122 Version 1: float -> double
 */
 
 #define ooSTRUCT Cepstrumc_Frame
 oo_DEFINE_STRUCT (Cepstrumc_Frame)
 
 	oo_INT (nCoefficients)
+
 	#if oo_READING_BINARY
-		if (formatVersion == 0)
-		{
+		if (formatVersion == 0) {
 			oo_FLOAT_VECTOR_FROM (c, 0, nCoefficients)
-		}
-		else
-		{
+		} else {
 			oo_DOUBLE_VECTOR_FROM (c, 0, nCoefficients)
 		}
 	#else
@@ -46,7 +43,7 @@ oo_END_STRUCT (Cepstrumc_Frame)
 #define ooSTRUCT Cepstrumc
 oo_DEFINE_CLASS (Cepstrumc, Sampled)
 
-	oo_DOUBLE (samplingFrequency) /* from Sound */
+	oo_DOUBLE (samplingFrequency)   // from Sound
 	oo_INT (maxnCoefficients)
 	oo_STRUCT_VECTOR (Cepstrumc_Frame, frame, nx)
 
@@ -58,4 +55,5 @@ oo_DEFINE_CLASS (Cepstrumc, Sampled)
 oo_END_CLASS (Cepstrumc)
 #undef ooSTRUCT
 
+
 /* End of file Cepstrumc_def.h */
diff --git a/LPC/Formant_extensions.cpp b/LPC/Formant_extensions.cpp
index a90b9ab..7e7100b 100644
--- a/LPC/Formant_extensions.cpp
+++ b/LPC/Formant_extensions.cpp
@@ -1,26 +1,21 @@
-/* Formant_extensions.c
+/* Formant_extensions.cpp
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012,2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
-*/
-
 #include "Formant_extensions.h"
 #include "NUM2.h"
 
@@ -48,12 +43,12 @@ void Formant_formula (Formant me, double tmin, double tmax, long formantmin, lon
 			}
 		}
 		// Apply formula
-		double ymin = 2 * formantmin - 1, ymax = 2 * formantmax;
-		Matrix_formula_part (fb.peek(), tmin, tmax, ymin, ymax, expression, interpreter, NULL);
+		double ymin = 2.0 * formantmin - 1.0, ymax = 2.0 * formantmax;
+		Matrix_formula_part (fb.get(), tmin, tmax, ymin, ymax, expression, interpreter, nullptr);
 		// Put results back in Formant
 		long ixmin, ixmax, iymin, iymax;
-		(void) Matrix_getWindowSamplesX (fb.peek(), tmin, tmax, & ixmin, & ixmax);
-		(void) Matrix_getWindowSamplesY (fb.peek(), ymin, ymax, & iymin, & iymax);
+		(void) Matrix_getWindowSamplesX (fb.get(), tmin, tmax, & ixmin, & ixmax);
+		(void) Matrix_getWindowSamplesY (fb.get(), ymin, ymax, & iymin, & iymax);
 
 		for (long iframe = ixmin; iframe <= ixmax; iframe++) {
 			// if some of the formant frequencies are set to zero => remove the formant
@@ -90,7 +85,7 @@ void Formant_formula (Formant me, double tmin, double tmax, long formantmin, lon
 	}
 }
 
-IntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram thee, long iformant) {
+autoIntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram thee, long iformant) {
 	try {
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"The start and end times of the Formant and the Spectrogram must be equal.");
@@ -99,7 +94,7 @@ IntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram
 			Melder_throw (U"Formant number not in range [1, ", my maxnFormants, U"].");
 		}
 		autoIntensityTier him = IntensityTier_create (my xmin, my xmax);
-		double previousValue = -80000; // can never occur
+		double previousValue = -80000.0; // can never occur
 		double previousTime = my xmin;
 		for (long iframe = 1; iframe <= my nx; iframe++) {
 			Formant_Frame frame = & my d_frames [iframe];
@@ -114,14 +109,14 @@ IntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram
 			value = 10.0 * log10 ((value + 1e-30) / 4.0e-10); /* dB / Hz */
 			if (value != previousValue) {
 				if (iframe > 1 && previousTime < time - 1.5 * my dx) { // mark the end of the same interval
-					RealTier_addPoint (him.peek(), time - my dx, previousValue);
+					RealTier_addPoint (him.get(), time - my dx, previousValue);
 				}
-				RealTier_addPoint (him.peek(), time, value);
+				RealTier_addPoint (him.get(), time, value);
 				previousTime = time;
 			}
 			previousValue = value;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"IntensityTier not created from ", me, U" and ", thee, U".");
 	}
diff --git a/LPC/Formant_extensions.h b/LPC/Formant_extensions.h
index cbe5d18..9a59f56 100644
--- a/LPC/Formant_extensions.h
+++ b/LPC/Formant_extensions.h
@@ -2,21 +2,20 @@
 #define _Formant_extensions_h_
 /* Formant_extensions.h
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,6 +29,6 @@
 
 
 void Formant_formula (Formant me, double tmin, double tmax, long formantmin, long formantmax, Interpreter interpreter, char32 *expression);
-IntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram thee, long iformant);
+autoIntensityTier Formant_and_Spectrogram_to_IntensityTier (Formant me, Spectrogram thee, long iformant);
 
 #endif /* _Formant_extensions_h_ */
diff --git a/LPC/LPC.cpp b/LPC/LPC.cpp
index 1149ef0..29ef4ff 100644
--- a/LPC/LPC.cpp
+++ b/LPC/LPC.cpp
@@ -1,20 +1,19 @@
 /* LPC.cpp
  *
- * Copyright (C) 1994-2014 David Weenink
+ * Copyright (C) 1994-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -53,7 +52,7 @@
 Thing_implement (LPC, Sampled, 1);
 
 void structLPC :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain: ", xmin, U" to ", xmax, U" (s).");
 	MelderInfo_writeLine (U"Prediction order: ", maxnCoefficients);
 	MelderInfo_writeLine (U"Number of frames: ", nx);
@@ -76,12 +75,12 @@ void LPC_init (LPC me, double tmin, double tmax, long nt, double dt, double t1,
 	my d_frames = NUMvector<structLPC_Frame> (1, nt);
 }
 
-LPC LPC_create (double tmin, double tmax, long nt, double dt, double t1,
+autoLPC LPC_create (double tmin, double tmax, long nt, double dt, double t1,
                 int predictionOrder, double samplingPeriod) {
 	try {
 		autoLPC me = Thing_new (LPC);
-		LPC_init (me.peek(), tmin, tmax, nt, dt, t1, predictionOrder, samplingPeriod);
-		return me.transfer();
+		LPC_init (me.get(), tmin, tmax, nt, dt, t1, predictionOrder, samplingPeriod);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LPC not created.");
 	}
@@ -118,37 +117,37 @@ void LPC_drawGain (LPC me, Graphics g, double tmin, double tmax, double gmin, do
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (seconds)");
-		Graphics_textLeft (g, 1, U"Gain");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Time (seconds)");
+		Graphics_textLeft (g, true, U"Gain");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
 void LPC_drawPoles (LPC me, Graphics g, double time, int garnish) {
 	autoPolynomial p = LPC_to_Polynomial (me, time);
-	autoRoots r = Polynomial_to_Roots (p.peek());
-	Roots_draw (r.peek(), g, -1, 1, -1, 1, U"+", 12, garnish);
+	autoRoots r = Polynomial_to_Roots (p.get());
+	Roots_draw (r.get(), g, -1.0, 1.0, -1.0, 1.0, U"+", 12, garnish);
 }
 
-Matrix LPC_downto_Matrix_lpc (LPC me) {
+autoMatrix LPC_downto_Matrix_lpc (LPC me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1, 1);
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1.0, 1.0);
 		for (long j = 1; j <= my nx; j++) {
 			LPC_Frame lpc = & my d_frames[j];
 			for (long i = 1; i <= lpc -> nCoefficients; i++) {
 				thy z[i][j] = lpc -> a[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix with linear prediction coefficients created.");
 	}
 }
 
-Matrix LPC_downto_Matrix_rc (LPC me) {
+autoMatrix LPC_downto_Matrix_rc (LPC me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1, 1);
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1.0, 1.0);
 		autoNUMvector<double> rc (1, my maxnCoefficients);
 		for (long j = 1; j <= my nx; j++) {
 			LPC_Frame lpc = & my d_frames[j];
@@ -157,15 +156,15 @@ Matrix LPC_downto_Matrix_rc (LPC me) {
 				thy z[i][j] = rc[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix with relection coefficients created.");
 	}
 }
 
-Matrix LPC_downto_Matrix_area (LPC me) {
+autoMatrix LPC_downto_Matrix_area (LPC me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1, 1);
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, 0.5 + my maxnCoefficients, my maxnCoefficients, 1.0, 1.0);
 		autoNUMvector<double> rc (1, my maxnCoefficients);
 		autoNUMvector<double> area (1, my maxnCoefficients);
 		for (long j = 1; j <= my nx; j++) {
@@ -176,7 +175,7 @@ Matrix LPC_downto_Matrix_area (LPC me) {
 				thy z[i][j] = area[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix with areas created.");
 	}
diff --git a/LPC/LPC.h b/LPC/LPC.h
index d824b07..d92b86b 100644
--- a/LPC/LPC.h
+++ b/LPC/LPC.h
@@ -2,28 +2,26 @@
 #define _LPC_h_
 /* LPC.h
  *
- * Copyright (C) 1994-2012 David Weenink
+ * Copyright (C) 1994-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 #include "Graphics.h"
 
 #include "LPC_def.h"
-oo_CLASS_CREATE (LPC, Sampled);
 
 /*
 	From Sampled:
@@ -33,20 +31,19 @@ oo_CLASS_CREATE (LPC, Sampled);
 	nx : number of frames
 */
 
-void LPC_init (LPC me, double tmin, double tmax, long nt, double dt, double t1,
-	int predictionOrder, double samplingPeriod);
+void LPC_init (LPC me, double tmin, double tmax, long nt, double dt, double t1, int predictionOrder, double samplingPeriod);
 
-LPC LPC_create (double tmin, double tmax, long nt, double dt, double t1,
-	int predictionOrder, double samplingPeriod);
+autoLPC LPC_create (double tmin, double tmax, long nt, double dt, double t1, int predictionOrder, double samplingPeriod);
 
-void LPC_drawGain (LPC me, Graphics g, double t1, double t2,
-	double gmin, double gmax, int garnish);
+void LPC_drawGain (LPC me, Graphics g, double t1, double t2, double gmin, double gmax, int garnish);
 
 void LPC_drawPoles (LPC me, Graphics g, double time, int garnish);
 
-Matrix LPC_downto_Matrix_lpc (LPC me);
-Matrix LPC_downto_Matrix_rc (LPC me);
-Matrix LPC_downto_Matrix_area (LPC me);
+autoMatrix LPC_downto_Matrix_lpc (LPC me);
+
+autoMatrix LPC_downto_Matrix_rc (LPC me);
+
+autoMatrix LPC_downto_Matrix_area (LPC me);
 
 /******************* Frames ************************************************/
 
diff --git a/LPC/LPC_and_Cepstrumc.cpp b/LPC/LPC_and_Cepstrumc.cpp
index 2d20588..2262a09 100644
--- a/LPC/LPC_and_Cepstrumc.cpp
+++ b/LPC/LPC_and_Cepstrumc.cpp
@@ -1,20 +1,19 @@
 /* LPC_and_Cepstrumc.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -46,7 +45,7 @@ void LPC_Frame_into_Cepstrumc_Frame (LPC_Frame me, Cepstrumc_Frame thee) {
 
 void Cepstrumc_Frame_into_LPC_Frame (Cepstrumc_Frame me, LPC_Frame thee) {
 	double *c = my c, *a = thy a;
-	thy gain = exp (2 * c[0]);
+	thy gain = exp (2.0 * c[0]);
 	if (thy nCoefficients == 0) {
 		return;
 	}
@@ -66,7 +65,7 @@ void Cepstrumc_Frame_into_LPC_Frame (Cepstrumc_Frame me, LPC_Frame thee) {
 	}
 }
 
-Cepstrumc LPC_to_Cepstrumc (LPC me) {
+autoCepstrumc LPC_to_Cepstrumc (LPC me) {
 	try {
 		autoCepstrumc thee = Cepstrumc_create (my xmin, my xmax, my nx, my dx, my x1,
 		                                       my maxnCoefficients, 1.0 / my samplingPeriod);
@@ -75,13 +74,13 @@ Cepstrumc LPC_to_Cepstrumc (LPC me) {
 			Cepstrumc_Frame_init (& thy frame[i], my d_frames[i].nCoefficients);
 			LPC_Frame_into_Cepstrumc_Frame (& my d_frames[i], & thy frame[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Cepstrum created.");
 	}
 }
 
-LPC Cepstrumc_to_LPC (Cepstrumc me) {
+autoLPC Cepstrumc_to_LPC (Cepstrumc me) {
 	try {
 		autoLPC thee = LPC_create (my xmin, my xmax, my nx, my dx, my x1,
 		                           my maxnCoefficients, 1.0 / my samplingFrequency);
@@ -89,7 +88,7 @@ LPC Cepstrumc_to_LPC (Cepstrumc me) {
 			LPC_Frame_init (& thy d_frames[i], my frame[i].nCoefficients);
 			Cepstrumc_Frame_into_LPC_Frame (& my frame[i], & thy d_frames[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U":no LPC created.");
 	}
diff --git a/LPC/LPC_and_Cepstrumc.h b/LPC/LPC_and_Cepstrumc.h
index 320bd40..5c3c57e 100644
--- a/LPC/LPC_and_Cepstrumc.h
+++ b/LPC/LPC_and_Cepstrumc.h
@@ -2,21 +2,20 @@
 #define _LPC_and_Cepstrumc_h_
 /* LPC_and_Cepstrumc.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,9 +27,9 @@
 #include "LPC.h"
 #include "Cepstrumc.h"
 
-Cepstrumc LPC_to_Cepstrumc (LPC me);
+autoCepstrumc LPC_to_Cepstrumc (LPC me);
 
-LPC Cepstrumc_to_LPC (Cepstrumc me);
+autoLPC Cepstrumc_to_LPC (Cepstrumc me);
 
 void LPC_Frame_into_Cepstrumc_Frame (LPC_Frame me, Cepstrumc_Frame thee);
 void Cepstrumc_Frame_into_LPC_Frame (Cepstrumc_Frame me, LPC_Frame thee);
diff --git a/LPC/LPC_and_Formant.cpp b/LPC/LPC_and_Formant.cpp
index e8df254..d117dac 100644
--- a/LPC/LPC_and_Formant.cpp
+++ b/LPC/LPC_and_Formant.cpp
@@ -1,20 +1,19 @@
 /* LPC_and_Formant.cpp
  *
- * Copyright (C) 1994-2013 David Weenink
+ * Copyright (C) 1994-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -54,7 +53,7 @@ void Roots_into_Formant_Frame (Roots me, Formant_Frame thee, double samplingFreq
 		if (my v[i].im < 0) {
 			continue;
 		}
-		double f = fabs (atan2 (my v[i].im, my v[i].re)) * samplingFrequency / 2 / NUMpi;
+		double f = fabs (atan2 (my v[i].im, my v[i].re)) * samplingFrequency / 2.0 / NUMpi;
 		if (f >= fLow && f <= fHigh) {
 			/*b = - log (my v[i].re * my v[i].re + my v[i].im * my v[i].im) * samplingFrequency / 2 / NUMpi;*/
 			double b = - log (dcomplex_abs (my v[i])) * samplingFrequency / NUMpi;
@@ -79,12 +78,12 @@ void LPC_Frame_into_Formant_Frame (LPC_Frame me, Formant_Frame thee, double samp
 	}
 
 	autoPolynomial p = LPC_Frame_to_Polynomial (me);
-	autoRoots r = Polynomial_to_Roots (p.peek());
-	Roots_fixIntoUnitCircle (r.peek());
-	Roots_into_Formant_Frame (r.peek(), thee, 1 / samplingPeriod, margin);
+	autoRoots r = Polynomial_to_Roots (p.get());
+	Roots_fixIntoUnitCircle (r.get());
+	Roots_into_Formant_Frame (r.get(), thee, 1 / samplingPeriod, margin);
 }
 
-Formant LPC_to_Formant (LPC me, double margin) {
+autoFormant LPC_to_Formant (LPC me, double margin) {
 	try {
 		double samplingFrequency = 1.0 / my samplingPeriod;
 		long nmax = my maxnCoefficients, err = 0;
@@ -120,11 +119,11 @@ Formant LPC_to_Formant (LPC me, double margin) {
 			}
 		}
 
-		Formant_sort (thee.peek());
+		Formant_sort (thee.get());
 		if (err > 0) {
 			Melder_warning (err, U" formant frames out of ", my nx, U" are suspect.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Formant created.");
 	}
@@ -169,7 +168,7 @@ void Formant_Frame_into_LPC_Frame (Formant_Frame me, LPC_Frame thee, double samp
 	thy gain = my intensity;
 }
 
-LPC Formant_to_LPC (Formant me, double samplingPeriod) {
+autoLPC Formant_to_LPC (Formant me, double samplingPeriod) {
 	try {
 		autoLPC thee = LPC_create (my xmin, my xmax, my nx, my dx, my x1, 2 * my maxnFormants, samplingPeriod);
 
@@ -181,7 +180,7 @@ LPC Formant_to_LPC (Formant me, double samplingPeriod) {
 			LPC_Frame_init (lpc, m);
 			Formant_Frame_into_LPC_Frame (f, lpc, samplingPeriod);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC created.");
 	}
diff --git a/LPC/LPC_and_Formant.h b/LPC/LPC_and_Formant.h
index ed5171c..9c3c7a5 100644
--- a/LPC/LPC_and_Formant.h
+++ b/LPC/LPC_and_Formant.h
@@ -2,38 +2,31 @@
 #define  _LPC_and_Formant_h_
 /* LPC_and_Formant.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20030524 GPL header
- djmw 20110307 Latest modification
-*/
-
 #include "LPC.h"
 #include "Polynomial.h"
 #include "Formant.h"
 
-Formant LPC_to_Formant (LPC me, double margin);
+autoFormant LPC_to_Formant (LPC me, double margin);
 
-LPC Formant_to_LPC (Formant me, double samplingPeriod);
+autoLPC Formant_to_LPC (Formant me, double samplingPeriod);
 
-void LPC_Frame_into_Formant_Frame (LPC_Frame me, Formant_Frame thee, 
-	double samplingPeriod, double margin);
+void LPC_Frame_into_Formant_Frame (LPC_Frame me, Formant_Frame thee, double samplingPeriod, double margin);
 
 void Formant_Frame_into_LPC_Frame (Formant_Frame me, LPC_Frame thee, double samplingPeriod);
 
diff --git a/LPC/LPC_and_LFCC.cpp b/LPC/LPC_and_LFCC.cpp
index 65a1db6..e83dbcf 100644
--- a/LPC/LPC_and_LFCC.cpp
+++ b/LPC/LPC_and_LFCC.cpp
@@ -1,20 +1,19 @@
 /* LPC_and_LFCC.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -56,7 +55,7 @@ void CC_Frame_into_LPC_Frame (CC_Frame me, LPC_Frame thee) {
 	long n = MIN (my numberOfCoefficients, thy nCoefficients);
 	double *c = my c, *a = thy a;
 
-	thy gain = exp (2 * my c0);
+	thy gain = exp (2.0 * my c0);
 
 	if (n < 1) {
 		return;
@@ -72,26 +71,25 @@ void CC_Frame_into_LPC_Frame (CC_Frame me, LPC_Frame thee) {
 	}
 }
 
-LFCC LPC_to_LFCC (LPC me, long numberOfCoefficients) {
+autoLFCC LPC_to_LFCC (LPC me, long numberOfCoefficients) {
 	try {
 		if (numberOfCoefficients < 1) {
 			numberOfCoefficients = my maxnCoefficients;
 		}
 
-		autoLFCC thee = LFCC_create (my xmin, my xmax, my nx, my dx, my x1,
-		                             numberOfCoefficients, 0, 0.5 / my samplingPeriod);
+		autoLFCC thee = LFCC_create (my xmin, my xmax, my nx, my dx, my x1, numberOfCoefficients, 0, 0.5 / my samplingPeriod);
 
 		for (long i = 1; i <= my nx; i++) {
 			CC_Frame_init (& thy frame[i], numberOfCoefficients);
 			LPC_Frame_into_CC_Frame (& my d_frames[i], & thy frame[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LFCC created.");
 	}
 }
 
-LPC LFCC_to_LPC (LFCC me, long numberOfCoefficients) {
+autoLPC LFCC_to_LPC (LFCC me, long numberOfCoefficients) {
 	try {
 		if (numberOfCoefficients < 1) {
 			numberOfCoefficients = my maximumNumberOfCoefficients;
@@ -103,7 +101,7 @@ LPC LFCC_to_LPC (LFCC me, long numberOfCoefficients) {
 			LPC_Frame_init (& thy d_frames[i], numberOfCoefficients);
 			CC_Frame_into_LPC_Frame (& my frame[i], & thy d_frames[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC created.");
 	}
@@ -111,4 +109,4 @@ LPC LFCC_to_LPC (LFCC me, long numberOfCoefficients) {
 
 #undef MIN
 
-/* End of file LPC_and_LFCC.c  */
+/* End of file LPC_and_LFCC.cpp  */
diff --git a/LPC/LPC_and_LFCC.h b/LPC/LPC_and_LFCC.h
index 1d9ce90..50f99f1 100644
--- a/LPC/LPC_and_LFCC.h
+++ b/LPC/LPC_and_LFCC.h
@@ -2,21 +2,20 @@
 #define _LPC_and_LFCC_h_
 /* LPC_and_LFCC.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,9 +27,9 @@
 #include "LPC.h"
 #include "LFCC.h"
 
-LFCC LPC_to_LFCC (LPC me, long numberOfCoefficients);
+autoLFCC LPC_to_LFCC (LPC me, long numberOfCoefficients);
 
-LPC LFCC_to_LPC (LFCC me, long numberOfCoefficients);
+autoLPC LFCC_to_LPC (LFCC me, long numberOfCoefficients);
 
 void LPC_Frame_into_CC_Frame (LPC_Frame me, CC_Frame thee);
 /*
diff --git a/LPC/LPC_and_Polynomial.cpp b/LPC/LPC_and_Polynomial.cpp
index eb2eade..21742aa 100644
--- a/LPC/LPC_and_Polynomial.cpp
+++ b/LPC/LPC_and_Polynomial.cpp
@@ -1,20 +1,19 @@
 /* LPC_and_Polynomial.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -23,17 +22,17 @@
 
 #include "LPC_and_Polynomial.h"
 
-Polynomial LPC_Frame_to_Polynomial (LPC_Frame me) {
+autoPolynomial LPC_Frame_to_Polynomial (LPC_Frame me) {
 	long degree = (long) my nCoefficients;
 	autoPolynomial thee = Polynomial_create (-1, 1, degree);
 	for (long i = 1; i <= degree; i++) {
 		thy coefficients[i] = my a[degree - i + 1];
 	}
 	thy coefficients[degree + 1] = 1;
-	return thee.transfer();
+	return thee;
 }
 
-Polynomial LPC_to_Polynomial (LPC me, double time) {
+autoPolynomial LPC_to_Polynomial (LPC me, double time) {
 	try {
 		long iFrame = Sampled_xToIndex (me, time);
 
@@ -41,7 +40,7 @@ Polynomial LPC_to_Polynomial (LPC me, double time) {
 			Melder_throw (U"invalid frame number.");
 		}
 		autoPolynomial thee = LPC_Frame_to_Polynomial (&my d_frames[iFrame]);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U":no Polynomial created.");
 	}
diff --git a/LPC/LPC_and_Polynomial.h b/LPC/LPC_and_Polynomial.h
index 540efaa..ecb1e0a 100644
--- a/LPC/LPC_and_Polynomial.h
+++ b/LPC/LPC_and_Polynomial.h
@@ -2,21 +2,20 @@
 #define _LPC_and_Polynomial_h_
 /* LPC_and_Polynomial.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,8 +28,8 @@
 #include "LPC.h"
 #include "Polynomial.h"
 
-Polynomial LPC_to_Polynomial (LPC me, double t);
+autoPolynomial LPC_to_Polynomial (LPC me, double t);
 
-Polynomial LPC_Frame_to_Polynomial (LPC_Frame me);
+autoPolynomial LPC_Frame_to_Polynomial (LPC_Frame me);
 
 #endif /* _LPC_and_Polynomial_h_ */
diff --git a/LPC/LPC_and_Tube.cpp b/LPC/LPC_and_Tube.cpp
index ccd8fdd..db99a26 100644
--- a/LPC/LPC_and_Tube.cpp
+++ b/LPC/LPC_and_Tube.cpp
@@ -1,20 +1,19 @@
 /* LPC_and_Tube.cpp
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -72,15 +71,15 @@ double VocalTract_and_LPC_Frame_getMatchingLength (VocalTract me, LPC_Frame thee
 	try {
 		// match the average distance between the first two formants in the VocaTract and the LPC spectrum
 		long numberOfFrequencies = 1000;
-		double maximumFrequency = 5000;
+		double maximumFrequency = 5000.0;
 		autoSpectrum vts = VocalTract_to_Spectrum (me, numberOfFrequencies, maximumFrequency, glottalDamping, radiationDamping, internalDamping);
 		double samplingFrequency =  1000.0 * my nx;
 		autoSpectrum lps = Spectrum_create (0.5 * samplingFrequency, numberOfFrequencies);
-		LPC_Frame_into_Spectrum (thee, lps.peek(), 0, 50);
-		autoSpectrumTier vtst = Spectrum_to_SpectrumTier_peaks (vts.peek());
-		autoSpectrumTier lpst = Spectrum_to_SpectrumTier_peaks (lps.peek());
-		double vt_f1 = vtst -> point(1) -> number, vt_f2 = vtst -> point(2) -> number;
-		double lp_f1 = lpst -> point(1) -> number, lp_f2 = lpst -> point(2) -> number;
+		LPC_Frame_into_Spectrum (thee, lps.get(), 0, 50);
+		autoSpectrumTier vtst = Spectrum_to_SpectrumTier_peaks (vts.get());
+		autoSpectrumTier lpst = Spectrum_to_SpectrumTier_peaks (lps.get());
+		double vt_f1 = vtst -> points.at [1] -> number, vt_f2 = vtst -> points.at [2] -> number;
+		double lp_f1 = lpst -> points.at [1] -> number, lp_f2 = lpst -> points.at [2] -> number;
 		double df1 = lp_f1 - vt_f1, df2 =  lp_f2 - vt_f2, df = 0.5 * (df1 + df2);
 		double dl = - df / lp_f2;
 		return my dx * my nx * (1 + dl);
@@ -99,7 +98,7 @@ double LPC_Frame_getVTL_wakita (LPC_Frame me, double samplingPeriod, double refL
 	try {
 		long m = my nCoefficients;
 		double length, dlength = 0.001, wakita_length = NUMundefined;
-		double varMin = 1e38;
+		double varMin = 1e308;
 
 		memset (& lpc_struct, 0, sizeof (lpc_struct));
 		memset (& f_struct, 0, sizeof (f_struct));
@@ -159,14 +158,14 @@ double LPC_Frame_getVTL_wakita (LPC_Frame me, double samplingPeriod, double refL
 
 			// step 6.2 Log(areas)
 
-			double logSum = 0;
+			double logSum = 0.0;
 			for (long i = 1; i <= af -> nSegments; i++) {
 				area[i] = log (area[i]);
 				logSum += area[i];
 			}
 
 			// step 6.3 and 7
-			double var = 0;
+			double var = 0.0;
 			for (long i = 1; i <= af -> nSegments; i++) {
 				double delta = area[i] - logSum / af -> nSegments;
 				var += delta * delta;
@@ -212,7 +211,7 @@ void VocalTract_setLength (VocalTract me, double newLength) {
 	my x1 = 0.5 * my dx;
 }
 
-VocalTract LPC_to_VocalTract (LPC me, double time, double glottalDamping, bool radiationDamping, bool internalDamping) {
+autoVocalTract LPC_to_VocalTract (LPC me, double time, double glottalDamping, bool radiationDamping, bool internalDamping) {
 	try {
 		long iframe = Sampled_xToLowIndex (me, time);   // ppgb: BUG? Is rounding down the correct thing to do? not nearestIndex?
 		if (iframe < 1) {
@@ -223,39 +222,15 @@ VocalTract LPC_to_VocalTract (LPC me, double time, double glottalDamping, bool r
 		}
 		LPC_Frame lpc = & my d_frames[iframe];
 		autoVocalTract thee = LPC_Frame_to_VocalTract (lpc, 0.17);
-		double length = VocalTract_and_LPC_Frame_getMatchingLength (thee.peek(), lpc, glottalDamping, radiationDamping, internalDamping);
-		VocalTract_setLength (thee.peek(), length);
-		return thee.transfer();
+		double length = VocalTract_and_LPC_Frame_getMatchingLength (thee.get(), lpc, glottalDamping, radiationDamping, internalDamping);
+		VocalTract_setLength (thee.get(), length);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no VocalTract created.");
 	}
 }
 
-static VocalTract LPC_Frame_to_VocalTract2 (LPC_Frame me, double length) {
-	struct structTube_Frame area_struct = { 0 };
-	Tube_Frame area = & area_struct;
-	try {
-		long m = my nCoefficients;
-
-		Tube_Frame_init (area, m, length);
-		LPC_Frame_into_Tube_Frame_area (me, area);
-
-		autoVocalTract thee = VocalTract_create (m, area -> length / m);
-
-		// area[lips..glottis] (m^2) to VocalTract[glottis..lips] (m^2)
-
-		for (long i = 1; i <= m; i++) {
-			thy z[1][i] = area -> c[m + 1 - i];
-		}
-		area -> destroy ();
-		return thee.transfer();
-	} catch (MelderError) {
-		area -> destroy ();
-		Melder_throw (U"No VocalTract created from LPC_Frame.");
-	}
-}
-
-VocalTract LPC_Frame_to_VocalTract (LPC_Frame me, double length) {
+autoVocalTract LPC_Frame_to_VocalTract (LPC_Frame me, double length) {
 	try {
 		long m = my nCoefficients;
 		autoNUMvector<double> area (1, m + 1);
@@ -267,13 +242,13 @@ VocalTract LPC_Frame_to_VocalTract (LPC_Frame me, double length) {
 		for (long i = 1; i <= m; i++) {
 			thy z[1][i] = area[m + 1 - i];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No VocalTract created from LPC_Frame.");
 	}
 }
 
-VocalTract LPC_to_VocalTract (LPC me, double time, double length) {
+autoVocalTract LPC_to_VocalTract (LPC me, double time, double length) {
 	try {
 		long iframe = Sampled_xToLowIndex (me, time);   // ppgb: BUG? Is rounding down the correct thing to do?
 		if (iframe < 1) {
@@ -284,7 +259,7 @@ VocalTract LPC_to_VocalTract (LPC me, double time, double length) {
 		}
 		LPC_Frame lpc = & my d_frames[iframe];
 		autoVocalTract thee = LPC_Frame_to_VocalTract (lpc, length);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no VocalTract created.");
 	}
diff --git a/LPC/LPC_and_Tube.h b/LPC/LPC_and_Tube.h
index 84d3332..c61ebee 100644
--- a/LPC/LPC_and_Tube.h
+++ b/LPC/LPC_and_Tube.h
@@ -2,21 +2,20 @@
 #define _LPC_and_Tube_h_
 /* LPC_and_Tube.h
  *
- * Copyright (C) 1994-2012 David Weenink
+ * Copyright (C) 1994-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,7 +30,7 @@
 void LPC_Frame_into_Tube_Frame_rc (LPC_Frame me, Tube_Frame thee);
 void LPC_Frame_into_Tube_Frame_area (LPC_Frame me, Tube_Frame thee);
 
-VocalTract LPC_Frame_to_VocalTract (LPC_Frame me, double length);
+autoVocalTract LPC_Frame_to_VocalTract (LPC_Frame me, double length);
 
 double LPC_Frame_getVTL_wakita (LPC_Frame me, double samplingPeriod, double refLength);
 double VocalTract_and_LPC_Frame_getMatchingLength (VocalTract me, LPC_Frame thee, double glottalDamping, bool radiationDamping, bool internalDamping);
@@ -40,9 +39,9 @@ int Tube_Frame_into_LPC_Frame_area (Tube_Frame me, LPC_Frame thee);
 
 int Tube_Frame_into_LPC_Frame_rc (Tube_Frame me, LPC_Frame thee);
 
-VocalTract LPC_to_VocalTract (LPC me, double time, double length);
+autoVocalTract LPC_to_VocalTract (LPC me, double time, double length);
 void VocalTract_setLength (VocalTract me, double newLength);
 
-VocalTract LPC_to_VocalTract (LPC me, double time, double glottalDamping, bool radiationDamping, bool internalDamping);
+autoVocalTract LPC_to_VocalTract (LPC me, double time, double glottalDamping, bool radiationDamping, bool internalDamping);
 
 #endif /* _LPC_and_Tube_h_ */
diff --git a/LPC/LPC_def.h b/LPC/LPC_def.h
index fa649a4..a33d7c5 100644
--- a/LPC/LPC_def.h
+++ b/LPC/LPC_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/LPC/LPC_to_Spectrogram.cpp b/LPC/LPC_to_Spectrogram.cpp
index 4e6300a..b341a6a 100644
--- a/LPC/LPC_to_Spectrogram.cpp
+++ b/LPC/LPC_to_Spectrogram.cpp
@@ -1,20 +1,19 @@
 /* LPC_to_Spectrogram.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -24,7 +23,7 @@
 
 #include "LPC_to_Spectrogram.h"
 
-Spectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction, double deEmphasisFrequency) {
+autoSpectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction, double deEmphasisFrequency) {
 	try {
 		double samplingFrequency = 1.0 / my samplingPeriod;
 		long nfft = 2;
@@ -36,8 +35,8 @@ Spectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction,
 		}
 		double freqStep = samplingFrequency / nfft;
 
-		autoSpectrogram thee = (Spectrogram) Spectrogram_create (my xmin, my xmax, my nx, my dx, my x1,
-		                       0, samplingFrequency / 2, nfft / 2 + 1, freqStep, 0);
+		autoSpectrogram thee = Spectrogram_create (my xmin, my xmax, my nx, my dx, my x1,
+		                                           0.0, samplingFrequency / 2.0, nfft / 2 + 1, freqStep, 0.0);
 
 		for (long i = 1; i <= my nx; i++) {
 			double t = Sampled_indexToX (me, i);
@@ -47,7 +46,7 @@ Spectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction,
 				thy z[j][i] =  re * re + im * im;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrogram created.");
 	}
diff --git a/LPC/LPC_to_Spectrogram.h b/LPC/LPC_to_Spectrogram.h
index 291f635..8a698b1 100644
--- a/LPC/LPC_to_Spectrogram.h
+++ b/LPC/LPC_to_Spectrogram.h
@@ -2,21 +2,20 @@
 #define _LPC_to_Spectrogram_h_
 /* LPC_to_Spectrogram.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,7 +28,7 @@
 #include "Spectrogram.h"
 #include "LPC_to_Spectrum.h"
 
-Spectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction, double deEmphasisFrequency);
+autoSpectrogram LPC_to_Spectrogram (LPC me, double dfMin, double bandwidthReduction, double deEmphasisFrequency);
 /* if(dfMin >= 0) df <= dfMin else df = NyquistFrequency / 512 */
 
 #endif /* _LPC_and_Spectrogram_h_ */
diff --git a/LPC/LPC_to_Spectrum.cpp b/LPC/LPC_to_Spectrum.cpp
index 28f386c..1821c61 100644
--- a/LPC/LPC_to_Spectrum.cpp
+++ b/LPC/LPC_to_Spectrum.cpp
@@ -1,20 +1,19 @@
 /* LPC_to_Spectrum.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,7 +37,7 @@ void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduc
                               double deEmphasisFrequency) {
 	if (my nCoefficients == 0) {
 		for (long i = 1; i <= thy nx; i++) {
-			thy z[1][i] = thy z[2][i] = 0;
+			thy z[1][i] = thy z[2][i] = 0.0;
 		}
 		return;
 	}
@@ -46,7 +45,7 @@ void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduc
 	// When deEmphasisFrequency is effective we need 1 extra position in the fftbuffer.
 
 	long nfft = 2 * (thy nx - 1), ndata = my nCoefficients + 1;
-	double scale = 1.0 / sqrt (2 * thy xmax * thy dx);
+	double scale = 1.0 / sqrt (2.0 * thy xmax * thy dx);
 	if (ndata >= nfft - 1 && (deEmphasisFrequency < thy xmax || ndata > nfft)) {
 		Melder_throw (U"Spectrum size not large enough.");
 	}
@@ -87,11 +86,11 @@ void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduc
 	*/
 
 	NUMforwardRealFastFourierTransform (fftbuffer.peek(), nfft);
-	if (my gain > 0) {
+	if (my gain > 0.0) {
 		scale *= sqrt (my gain);
 	}
 	thy z[1][1] = scale / fftbuffer[1];
-	thy z[2][1] = 0;
+	thy z[2][1] = 0.0;
 	for (long i = 2; i <= nfft / 2; i++) {
 		// We use: 1 / (a + ib) = (a - ib) / (a^2 + b^2)
 
@@ -101,10 +100,10 @@ void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduc
 		thy z[2][i] = -im * invSquared;
 	}
 	thy z[1][thy nx] = scale / fftbuffer[2];
-	thy z[2][thy nx] = 0;
+	thy z[2][thy nx] = 0.0;
 }
 
-Spectrum LPC_to_Spectrum (LPC me, double t, double dfMin, double bandwidthReduction, double deEmphasisFrequency) {
+autoSpectrum LPC_to_Spectrum (LPC me, double t, double dfMin, double bandwidthReduction, double deEmphasisFrequency) {
 	try {
 		double samplingFrequency = 1.0 / my samplingPeriod;
 		long nfft = 2, index = Sampled_xToNearestIndex (me, t);
@@ -121,9 +120,9 @@ Spectrum LPC_to_Spectrum (LPC me, double t, double dfMin, double bandwidthReduct
 		while (samplingFrequency / nfft > dfMin || nfft <= my d_frames[index].nCoefficients) {
 			nfft *= 2;
 		}
-		autoSpectrum thee = Spectrum_create (samplingFrequency / 2, nfft / 2 + 1);
-		LPC_Frame_into_Spectrum (& my d_frames[index], thee.peek(), bandwidthReduction, deEmphasisFrequency);
-		return thee.transfer();
+		autoSpectrum thee = Spectrum_create (samplingFrequency / 2.0, nfft / 2 + 1);
+		LPC_Frame_into_Spectrum (& my d_frames[index], thee.get(), bandwidthReduction, deEmphasisFrequency);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum created.");
 	}
diff --git a/LPC/LPC_to_Spectrum.h b/LPC/LPC_to_Spectrum.h
index 44be603..7c0e60f 100644
--- a/LPC/LPC_to_Spectrum.h
+++ b/LPC/LPC_to_Spectrum.h
@@ -2,21 +2,20 @@
 #define _LPC_to_Spectrum_h_
 /* LPC_to_Spectrum.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,13 +27,11 @@
 #include "LPC.h"
 #include "Spectrum.h"
 
-void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduction,
-	double deEmphasisFrequency);
+void LPC_Frame_into_Spectrum (LPC_Frame me, Spectrum thee, double bandwidthReduction, double deEmphasisFrequency);
 	
-Spectrum LPC_to_Spectrum (LPC me, double t, double dfMin, double bandwidthReduction,
-	double deEmphasisFrequency);
+autoSpectrum LPC_to_Spectrum (LPC me, double t, double dfMin, double bandwidthReduction, double deEmphasisFrequency);
 	
-Spectrum LPC_to_Spectrum2 (LPC me, double t, double dfMin, double bandwidthReduction);
+autoSpectrum LPC_to_Spectrum2 (LPC me, double t, double dfMin, double bandwidthReduction);
 /* if(dfMin >= 0) df <= dfMin else df = NyquistFrequency / 512 */
 /* integration radius r = exp (- pi * bandwidthReduction / samplingFrequency) */
 
diff --git a/LPC/Sound_and_Cepstrum.cpp b/LPC/Sound_and_Cepstrum.cpp
index 5619d94..c19956a 100644
--- a/LPC/Sound_and_Cepstrum.cpp
+++ b/LPC/Sound_and_Cepstrum.cpp
@@ -1,20 +1,19 @@
 /* Sound_and_Cepstrum.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,7 +33,7 @@
 	without Phase Unwrapping or Integration, IEEE Trans. on ASSP 33,
 	1014-1017 (Does not work yet).
 */
-Cepstrum Sound_to_Cepstrum_bw (Sound me) {
+autoCepstrum Sound_to_Cepstrum_bw (Sound me) {
 	try {
 		long nfft = 2;
 		while (nfft < my nx) {
@@ -62,13 +61,13 @@ Cepstrum Sound_to_Cepstrum_bw (Sound me) {
 		// Compute Avg (ln |X(f)|) as Avg (ln |X(f)|^2) / 2.
 		// Treat i=1 separately: x[1] * nx[1] / |x[1]|^2
 
-		double lnxa = 0;
-		if (x[1] != 0) {
-			lnxa = 2 * log (fabs (x[1]));
+		double lnxa = 0.0;
+		if (x[1] != 0.0) {
+			lnxa = 2.0 * log (fabs (x[1]));
 			x[1] = nx[1] / x[1];
 		}
-		if (x[2] != 0) {
-			lnxa = 2 * log (fabs (x[2]));
+		if (x[2] != 0.0) {
+			lnxa = 2.0 * log (fabs (x[2]));
 			x[2] = nx[2] / x[2];
 		}
 
@@ -76,16 +75,16 @@ Cepstrum Sound_to_Cepstrum_bw (Sound me) {
 			double xr = x[i], nxr = nx[i];
 			double xi = x[i + 1], nxi = nx[i + 1];
 			double xa = xr * xr + xi * xi;
-			if (xa > 0) {
+			if (xa > 0.0) {
 				x[i]   = (xr * nxr + xi * nxi) / xa;
 				x[i + 1] = (xr * nxi - xi * nxr) / xa;
 				lnxa += log (xa);
 			} else {
-				x[i] = x[i + 1] = 0;
+				x[i] = x[i + 1] = 0.0;
 			}
 		}
 
-		lnxa /= 2 * nfft / 2;
+		lnxa /= 2.0 * nfft / 2.0; // TODO
 
 		// Step 4: Inverse transform of complex array x
 		//	results in: n * xhat (n)
@@ -102,7 +101,7 @@ Cepstrum Sound_to_Cepstrum_bw (Sound me) {
 		// Step 6: xhat[0] = Avg (ln |X(f)|)
 
 		thy z[1][1] = lnxa;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Cepstrum created.");
 	}
@@ -110,21 +109,21 @@ Cepstrum Sound_to_Cepstrum_bw (Sound me) {
 
 /* Zijn nog niet elkaars inverse!!!!*/
 
-Cepstrum Sound_to_Cepstrum (Sound me) {
+autoCepstrum Sound_to_Cepstrum (Sound me) {
 	try {
-		autoSpectrum spectrum = Sound_to_Spectrum (me, TRUE);
-		autoCepstrum thee = Spectrum_to_Cepstrum (spectrum.peek());
-		return thee.transfer();
+		autoSpectrum spectrum = Sound_to_Spectrum (me, true);
+		autoCepstrum thee = Spectrum_to_Cepstrum (spectrum.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Cepstrum calculated.");
 	}
 }
 
-Sound Cepstrum_to_Sound (Cepstrum me) {
+autoSound Cepstrum_to_Sound (Cepstrum me) {
 	try {
 		autoSpectrum sx = Cepstrum_to_Spectrum (me);
-		autoSound thee = Spectrum_to_Sound (sx.peek());
-		return thee.transfer();
+		autoSound thee = Spectrum_to_Sound (sx.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound calculated.");
 	}
diff --git a/LPC/Sound_and_Cepstrum.h b/LPC/Sound_and_Cepstrum.h
index 60f6a22..ed7486e 100644
--- a/LPC/Sound_and_Cepstrum.h
+++ b/LPC/Sound_and_Cepstrum.h
@@ -2,21 +2,20 @@
 #define _Sound_and_Cepstrum_h_
 /* Sound_and_Cepstrum.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,10 +26,10 @@
 #include "Sound.h"
 #include "Cepstrum.h"
 
-Cepstrum Sound_to_Cepstrum (Sound me);
+autoCepstrum Sound_to_Cepstrum (Sound me);
 
-Cepstrum Sound_to_Cepstrum_bw (Sound me);
+autoCepstrum Sound_to_Cepstrum_bw (Sound me);
 
-Sound Cepstrum_to_Sound (Cepstrum me);
+autoSound Cepstrum_to_Sound (Cepstrum me);
 
 #endif /* _Sound_and_Cepstrum_h_ */
diff --git a/LPC/Sound_and_LPC.cpp b/LPC/Sound_and_LPC.cpp
index 4718e4d..ea2d2ba 100644
--- a/LPC/Sound_and_LPC.cpp
+++ b/LPC/Sound_and_LPC.cpp
@@ -1,20 +1,19 @@
 /* Sound_and_LPC.cpp
  *
- * Copyright (C) 1994-2013 David Weenink
+ * Copyright (C) 1994-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -86,13 +85,13 @@ static int Sound_into_LPC_Frame_auto (Sound me, LPC_Frame thee) {
 			r[i] += x[j] * x[j + i - 1];
 		}
 	}
-	if (r[1] == 0) {
+	if (r[1] == 0.0) {
 		i = 1; /* ! */ goto end;
 	}
 	a[1] = 1; a[2] = rc[1] = - r[2] / r[1];
 	thy gain = r[1] + r[2] * rc[1];
 	for (i = 2; i <= m; i++) {
-		double s = 0;
+		double s = 0.0;
 		for (long j = 1; j <= i; j++) {
 			s += r[i - j + 2] * a[j];
 		}
@@ -117,7 +116,7 @@ end:
 	}
 	thy nCoefficients = i;
 	for (long j = i + 1; j <= m; j++) {
-		thy a[j] = 0;
+		thy a[j] = 0.0;
 	}
 	return 0; // Melder_warning ("Less coefficienst than asked for.");
 }
@@ -141,38 +140,38 @@ static int Sound_into_LPC_Frame_covar (Sound me, LPC_Frame thee) {
 	autoNUMvector<double> beta (1, m);
 	autoNUMvector<double> cc (1, m + 1);
 
-	thy gain = 0;
+	thy gain = 0.0;
 	for (i = m + 1; i <= n; i++) {
 		thy gain += x[i] * x[i];
 		cc[1] += x[i] * x[i - 1];
 		cc[2] += x[i - 1] * x[i - 1];
 	}
 
-	if (thy gain == 0) {
+	if (thy gain == 0.0) {
 		i = 1; /* ! */ goto end;
 	}
 
-	b[1] = 1;
+	b[1] = 1.0;
 	beta[1] = cc[2];
-	a[1] = 1;
+	a[1] = 1.0;
 	a[2] = grc[1] = -cc[1] / cc[2];
 	thy gain += grc[1] * cc[1];
 
 	for (i = 2; i <= m; i++) { /*130*/
-		double s = 0; /* 20 */
+		double s = 0.0; /* 20 */
 		for (long j = 1; j <= i; j++) {
 			cc[i - j + 2] = cc[i - j + 1] + x[m - i + 1] * x[m - i + j] - x[n - i + 1] * x[n - i + j];
 		}
-		cc[1] = 0;
+		cc[1] = 0.0;
 		for (long j = m + 1; j <= n; j++) {
 			cc[1] += x[j - i] * x[j]; /* 30 */
 		}
-		b[i * (i + 1) / 2] = 1;
+		b[i * (i + 1) / 2] = 1.0;
 		for (long j = 1; j <= i - 1; j++) { /* 70 */
-			double gam = 0;
-			if (beta[j] < 0) {
+			double gam = 0.0;
+			if (beta[j] < 0.0) {
 				goto end;
-			} else if (beta[j] == 0) {
+			} else if (beta[j] == 0.0) {
 				continue;
 			}
 			for (long k = 1; k <= j; k++) {
@@ -184,11 +183,11 @@ static int Sound_into_LPC_Frame_covar (Sound me, LPC_Frame thee) {
 			}
 		}
 
-		beta[i] = 0;
+		beta[i] = 0.0;
 		for (long j = 1; j <= i; j++) {
 			beta[i] += cc[j + 1] * b[i * (i - 1) / 2 + j]; /*80*/
 		}
-		if (beta[i] <= 0) {
+		if (beta[i] <= 0.0) {
 			goto end;
 		}
 
@@ -203,7 +202,7 @@ static int Sound_into_LPC_Frame_covar (Sound me, LPC_Frame thee) {
 		a[i + 1] = grc[i];
 		s = grc[i] * grc[i] * beta[i];
 		thy gain -= s;
-		if (thy gain <= 0) {
+		if (thy gain <= 0.0) {
 			goto end;
 		}
 	}
@@ -219,7 +218,7 @@ end:
 
 	thy nCoefficients = i;
 	for (long j = i + 1; j <= m; j++) {
-		thy a[j] = 0;
+		thy a[j] = 0.0;
 	}
 	return 0; // Melder_warning ("Less coefficienst than asked for.");
 }
@@ -241,12 +240,12 @@ static int Sound_into_LPC_Frame_marple (Sound me, LPC_Frame thee, double tol1, d
 	autoNUMvector<double> c (1, mmax + 1);
 	autoNUMvector<double> d (1, mmax + 1);
 	autoNUMvector<double> r (1, mmax + 1);
-	double e0 = 0;
+	double e0 = 0.0;
 	for (long k = 1; k <= n; k++) {
 		e0 += x[k] * x[k];
 	}
-	e0 *= 2;
-	if (e0 == 0) {
+	e0 *= 2.0;
+	if (e0 == 0.0) {
 		m = 0; thy gain *= 0.5; /* because e0 is twice the energy */
 		thy nCoefficients = m; return 0; // warning no signal
 	}
@@ -290,7 +289,7 @@ static int Sound_into_LPC_Frame_marple (Sound me, LPC_Frame thee, double tol1, d
 		double y5 = 2.0 * h * s;
 		q += y1 * q1 + q4 * (y2 * q6 + q7 * q5 + v * y5);
 		w += y3 * q1 + q4 * (y4 * q5 + q7 * q6 + u * y5);
-		h = s = u = v = 0;
+		h = s = u = v = 0.0;
 		for (long k = 0; k <= m; k++) {
 			h += x[n - m + k] * c[k + 1];
 			s += x[n - k] * c[k + 1];
@@ -300,7 +299,7 @@ static int Sound_into_LPC_Frame_marple (Sound me, LPC_Frame thee, double tol1, d
 		q5 = 1.0 - q;
 		q6 = 1.0 - w;
 		den = q5 * q6 - h * h;
-		if (den <= 0) {
+		if (den <= 0.0) {
 			status = 2; goto end; /* 2: ill-conditioning */
 		}
 		q4 = 1.0 / den;
@@ -369,8 +368,7 @@ end:
 	return status == 1 || status == 4 || status == 5;
 }
 
-static LPC _Sound_to_LPC (Sound me, int predictionOrder, double analysisWidth, double dt,
-                          double preEmphasisFrequency, int method, double tol1, double tol2) {
+static autoLPC _Sound_to_LPC (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency, int method, double tol1, double tol2) {
 	double t1, samplingFrequency = 1.0 / my dx;
 	double windowDuration = 2 * analysisWidth; /* gaussian window */
 	long nFrames, frameErrorCount = 0;
@@ -391,30 +389,30 @@ static LPC _Sound_to_LPC (Sound me, int predictionOrder, double analysisWidth, d
 	autoMelderProgress progress (U"LPC analysis");
 
 	if (preEmphasisFrequency < samplingFrequency / 2) {
-		Sound_preEmphasis (sound.peek(), preEmphasisFrequency);
+		Sound_preEmphasis (sound.get(), preEmphasisFrequency);
 	}
 
 	for (long i = 1; i <= nFrames; i++) {
 		LPC_Frame lpcframe = (LPC_Frame) & thy d_frames[i];
-		double t = Sampled_indexToX (thee.peek(), i);
+		double t = Sampled_indexToX (thee.get(), i);
 		LPC_Frame_init (lpcframe, predictionOrder);
-		Sound_into_Sound (sound.peek(), sframe.peek(), t - windowDuration / 2);
-		Vector_subtractMean (sframe.peek());
-		Sounds_multiply (sframe.peek(), window.peek());
+		Sound_into_Sound (sound.get(), sframe.get(), t - windowDuration / 2);
+		Vector_subtractMean (sframe.get());
+		Sounds_multiply (sframe.get(), window.get());
 		if (method == LPC_METHOD_AUTO) {
-			if (! Sound_into_LPC_Frame_auto (sframe.peek(), lpcframe)) {
+			if (! Sound_into_LPC_Frame_auto (sframe.get(), lpcframe)) {
 				frameErrorCount++;
 			}
 		} else if (method == LPC_METHOD_COVAR) {
-			if (! Sound_into_LPC_Frame_covar (sframe.peek(), lpcframe)) {
+			if (! Sound_into_LPC_Frame_covar (sframe.get(), lpcframe)) {
 				frameErrorCount++;
 			}
 		} else if (method == LPC_METHOD_BURG) {
-			if (! Sound_into_LPC_Frame_burg (sframe.peek(), lpcframe)) {
+			if (! Sound_into_LPC_Frame_burg (sframe.get(), lpcframe)) {
 				frameErrorCount++;
 			}
 		} else if (method == LPC_METHOD_MARPLE) {
-			if (! Sound_into_LPC_Frame_marple (sframe.peek(), lpcframe, tol1, tol2)) {
+			if (! Sound_into_LPC_Frame_marple (sframe.get(), lpcframe, tol1, tol2)) {
 				frameErrorCount++;
 			}
 		}
@@ -423,50 +421,46 @@ static LPC _Sound_to_LPC (Sound me, int predictionOrder, double analysisWidth, d
 			                   i, U" out of ", nFrames, U".");
 		}
 	}
-	return thee.transfer();
+	return thee;
 }
 
-LPC Sound_to_LPC_auto (Sound me, int predictionOrder, double analysisWidth, double dt,
-                       double preEmphasisFrequency) {
+autoLPC Sound_to_LPC_auto (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency) {
 	try {
 		autoLPC thee = _Sound_to_LPC (me, predictionOrder, analysisWidth, dt, preEmphasisFrequency, LPC_METHOD_AUTO, 0, 0);
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC (auto) created.");
 	}
 }
 
-LPC Sound_to_LPC_covar (Sound me, int predictionOrder, double analysisWidth, double dt,
-                        double preEmphasisFrequency) {
+autoLPC Sound_to_LPC_covar (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency) {
 	try {
 		autoLPC thee = _Sound_to_LPC (me, predictionOrder, analysisWidth, dt, preEmphasisFrequency, LPC_METHOD_COVAR, 0, 0);
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC (covar) created.");
 	}
 }
 
-LPC Sound_to_LPC_burg (Sound me, int predictionOrder, double analysisWidth, double dt,
-                       double preEmphasisFrequency) {
+autoLPC Sound_to_LPC_burg (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency) {
 	try {
 		autoLPC thee = _Sound_to_LPC (me, predictionOrder, analysisWidth, dt, preEmphasisFrequency, LPC_METHOD_BURG, 0, 0);
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC (burg) created.");
 	}
 }
 
-LPC Sound_to_LPC_marple (Sound me, int predictionOrder, double analysisWidth, double dt,
-                         double preEmphasisFrequency, double tol1, double tol2) {
+autoLPC Sound_to_LPC_marple (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency, double tol1, double tol2) {
 	try {
 		autoLPC thee = _Sound_to_LPC (me, predictionOrder, analysisWidth, dt, preEmphasisFrequency, LPC_METHOD_MARPLE, tol1, tol2);
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LPC (marple) created.");
 	}
 }
 
-Sound LPC_and_Sound_filterInverse (LPC me, Sound thee) {
+autoSound LPC_and_Sound_filterInverse (LPC me, Sound thee) {
 	try {
 		if (my samplingPeriod != thy dx) {
 			Melder_throw (U"Sampling frequencies are not the same.");
@@ -482,7 +476,7 @@ Sound LPC_and_Sound_filterInverse (LPC me, Sound thee) {
 			long iFrame = lround ( (t - my x1) / my dx + 1.0); /* Sampled_xToNearestIndex (me, t) */
 			double *a;
 			if (iFrame < 1 || iFrame > my nx) {
-				e[i] = 0;
+				e[i] = 0.0;
 				continue;
 			}
 			a = my d_frames[iFrame].a;
@@ -491,7 +485,7 @@ Sound LPC_and_Sound_filterInverse (LPC me, Sound thee) {
 				e[i] += a[j] * x[i - j];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (thee, U": not inverse filtered.");
 	}
@@ -501,7 +495,7 @@ Sound LPC_and_Sound_filterInverse (LPC me, Sound thee) {
 	gain used as a constant amplitude multiplyer within a frame of duration my dx.
 	future alternative: convolve gain with a  smoother.
 */
-Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain) {
+autoSound LPC_and_Sound_filter (LPC me, Sound thee, int useGain) {
 	try {
 		double xmin = my xmin > thy xmin ? my xmin : thy xmin;
 		double xmax = my xmax < thy xmax ? my xmax : thy xmax;
@@ -510,10 +504,10 @@ Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain) {
 				my xmin, U",", my xmax, U"] do not overlap.");
 		}
 		// resample sound if samplings don't match
-		autoSound source = 0;
+		autoSound source;
 		if (my samplingPeriod != thy dx) {
-			source.reset (Sound_resample (thee, 1.0 / my samplingPeriod, 50));
-			thee = source.peek();   // reference copy; remove at end
+			source = Sound_resample (thee, 1.0 / my samplingPeriod, 50);
+			thee = source.get();   // reference copy; remove at end
 		}
 
 		autoSound him = Data_copy (thee);
@@ -540,11 +534,11 @@ Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain) {
 		// Make samples before first frame and after last frame zero.
 
 		for (long i = 1; i < ifirst; i++) {
-			x[i] = 0;
+			x[i] = 0.0;
 		}
 
 		for (long i = ilast + 1; i <= his nx; i++) {
-			x[i] = 0;
+			x[i] = 0.0;
 		}
 		if (useGain) {
 			for (long i = ifirst; i <= ilast; i++) {
@@ -553,16 +547,16 @@ Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain) {
 				long iFrame = (long) floor (riFrame);
 				double phase = riFrame - iFrame;
 				if (iFrame < 0 || iFrame > my nx) {
-					x[i] = 0;
+					x[i] = 0.0;
 				} else if (iFrame == 0) {
 					x[i] *= sqrt (my d_frames[1].gain) * phase;
 				} else if (iFrame == my nx) {
-					x[i] *= sqrt (my d_frames[my nx].gain) * (1 - phase);
+					x[i] *= sqrt (my d_frames[my nx].gain) * (1.0 - phase);
 				} else x[i] *=
-					    phase * sqrt (my d_frames[iFrame + 1].gain) + (1 - phase) * sqrt (my d_frames[iFrame].gain);
+					    phase * sqrt (my d_frames[iFrame + 1].gain) + (1.0 - phase) * sqrt (my d_frames[iFrame].gain);
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (thee, U": not filtered.");
 	}
@@ -591,11 +585,11 @@ void LPC_and_Sound_filterWithFilterAtTime_inline (LPC me, Sound thee, int channe
 	}
 }
 
-Sound LPC_and_Sound_filterWithFilterAtTime (LPC me, Sound thee, int channel, double time) {
+autoSound LPC_and_Sound_filterWithFilterAtTime (LPC me, Sound thee, int channel, double time) {
 	try {
 		autoSound him = Data_copy (thee);
-		LPC_and_Sound_filterWithFilterAtTime_inline (me, him.peek(), channel, time);
-		return him.transfer();
+		LPC_and_Sound_filterWithFilterAtTime_inline (me, him.get(), channel, time);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (thee, U": not filtered.");
 	}
@@ -625,11 +619,11 @@ void LPC_and_Sound_filterInverseWithFilterAtTime_inline (LPC me, Sound thee, int
 	}
 }
 
-Sound LPC_and_Sound_filterInverseWithFilterAtTime (LPC me, Sound thee, int channel, double time) {
+autoSound LPC_and_Sound_filterInverseWithFilterAtTime (LPC me, Sound thee, int channel, double time) {
 	try {
 		autoSound him = Data_copy (thee);
-		LPC_and_Sound_filterInverseWithFilterAtTime_inline (me, him.peek(), channel, time);
-		return him.transfer();
+		LPC_and_Sound_filterInverseWithFilterAtTime_inline (me, him.get(), channel, time);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (thee, U": not inverse filtered.");
 	}
diff --git a/LPC/Sound_and_LPC.h b/LPC/Sound_and_LPC.h
index fbcad33..33a7f48 100644
--- a/LPC/Sound_and_LPC.h
+++ b/LPC/Sound_and_LPC.h
@@ -2,21 +2,20 @@
 #define _Sound_and_LPC_h_
 /* Sound_and_LPC.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,17 +28,13 @@
 #include "LPC.h"
 #include "Sound.h"
 
-LPC Sound_to_LPC_auto (Sound me, int predictionOrder, double analysisWidth, double dt,
-	double preEmphasisFrequency);
+autoLPC Sound_to_LPC_auto (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency);
 
-LPC Sound_to_LPC_covar (Sound me, int predictionOrder, double analysisWidth, double dt,
-	double preEmphasisFrequency);
+autoLPC Sound_to_LPC_covar (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency);
 
-LPC Sound_to_LPC_burg (Sound me, int predictionOrder, double analysisWidth, double dt,
-	double preEmphasisFrequency);
+autoLPC Sound_to_LPC_burg (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency);
 
-LPC Sound_to_LPC_marple (Sound me, int predictionOrder, double analysisWidth, double dt,
-	double preEmphasisFrequency, double tol1, double tol2);
+autoLPC Sound_to_LPC_marple (Sound me, int predictionOrder, double analysisWidth, double dt, double preEmphasisFrequency, double tol1, double tol2);
 
 /*
  * Function:
@@ -71,7 +66,8 @@ LPC Sound_to_LPC_marple (Sound me, int predictionOrder, double analysisWidth, do
  */
 
 void LPC_Frame_and_Sound_filterInverse (LPC_Frame me, Sound thee, int channel);
-Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain);
+
+autoSound LPC_and_Sound_filter (LPC me, Sound thee, int useGain);
 /*
 	E(z) = X(z)A(z),
 	A(z) = 1 + Sum (k=1, k=m, a(k)z^-k);
@@ -83,9 +79,10 @@ Sound LPC_and_Sound_filter (LPC me, Sound thee, int useGain);
 */
 
 void LPC_and_Sound_filterWithFilterAtTime_inline (LPC me, Sound thee, int channel, double time);
-Sound LPC_and_Sound_filterWithFilterAtTime (LPC me, Sound thee, int channel, double time);
 
-Sound LPC_and_Sound_filterInverse (LPC me, Sound thee);
+autoSound LPC_and_Sound_filterWithFilterAtTime (LPC me, Sound thee, int channel, double time);
+
+autoSound LPC_and_Sound_filterInverse (LPC me, Sound thee);
 /*
 	E(z) = X(z)A(z),
 	A(z) = 1 + Sum (k=1, k=m, a(k)z^-k);
@@ -95,7 +92,8 @@ Sound LPC_and_Sound_filterInverse (LPC me, Sound thee);
 		e(n) = x(n) + Sum (k=1, m, a(k)x(n-k))
 */
 
-Sound LPC_and_Sound_filterInverseWithFilterAtTime (LPC me, Sound thee, int channel, double time);
+autoSound LPC_and_Sound_filterInverseWithFilterAtTime (LPC me, Sound thee, int channel, double time);
+
 void LPC_and_Sound_filterInverseWithFilterAtTime_inline (LPC me, Sound thee, int channel, double time);
 
 #endif /* _Sound_and_LPC_h_ */
diff --git a/LPC/Sound_and_LPC_robust.cpp b/LPC/Sound_and_LPC_robust.cpp
index 12db555..3737f1a 100644
--- a/LPC/Sound_and_LPC_robust.cpp
+++ b/LPC/Sound_and_LPC_robust.cpp
@@ -1,20 +1,19 @@
 /* Sound_and_LPC_robust.cpp
  *
- * Copyright (C) 1994-2013 David Weenink
+ * Copyright (C) 1994-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,7 +35,7 @@
 #include "NUM2.h"
 
 struct huber_struct {
-	Sound e;
+	autoSound e;
 	double k, tol, tol_svd;
 	long iter, itermax;
 	int wantlocation, wantscale;
@@ -45,13 +44,13 @@ struct huber_struct {
 	double *w, *work;
 	double *a;
 	double **covar, *c;
-	SVD svd;
+	autoSVD svd;
 };
 
-static void huber_struct_init (struct huber_struct *hs, double windowDuration,
-                               long p, double samplingFrequency, double location, int wantlocation) {
-	hs -> w = hs -> work = hs -> a = hs -> c = 0;
-	hs -> covar = 0; hs -> svd = 0;
+static void huber_struct_init (struct huber_struct *hs, double windowDuration, long p, double samplingFrequency, double location, int wantlocation) {
+	hs -> w = hs -> work = hs -> a = hs -> c = nullptr;
+	hs -> covar = nullptr;
+	hs -> svd = autoSVD();
 	hs -> e = Sound_createSimple (1, windowDuration, samplingFrequency);
 	long n = hs -> e -> nx;
 	hs -> n = n;
@@ -70,8 +69,8 @@ static void huber_struct_init (struct huber_struct *hs, double windowDuration,
 }
 
 static void huber_struct_destroy (struct huber_struct *hs) {
-	forget (hs -> e);
-	forget (hs -> svd);
+	hs -> e.reset();
+	hs -> svd.reset();
 	NUMvector_free<double> (hs -> w, 1);
 	NUMvector_free<double> (hs -> work, 1);
 	NUMvector_free<double> (hs -> a, 1);
@@ -85,7 +84,7 @@ static void huber_struct_getWeights (struct huber_struct *hs, double *e) {
 
 	for (long i = 1 ; i <= hs -> n; i++) {
 		double ei = e[i] - hs -> location;
-		w[i] = ei > -ks && ei < ks ? 1 : ks / fabs (ei);
+		w[i] = ei > -ks && ei < ks ? 1.0 : ks / fabs (ei);
 	}
 }
 
@@ -111,7 +110,7 @@ static void huber_struct_getWeightedCovars (struct huber_struct *hs, double *s)
 }
 
 static void huber_struct_solvelpc (struct huber_struct *hs) {
-	SVD me = hs -> svd;
+	SVD me = hs -> svd.get();
 	double **covar = hs -> covar;
 
 	for (long i = 1; i <= my numberOfRows; i++) {
@@ -134,12 +133,12 @@ void LPC_Frames_and_Sound_huber (LPC_Frame me, Sound thee, LPC_Frame him, struct
 	double *e = hs -> e -> z[1], *s = thy z[1];
 
 	hs -> iter = 0;
-	hs -> scale = 1e38;
+	hs -> scale = 1e308;
 	hs -> p = p;
 
 	double s0;
 	do {
-		Sound hse = hs -> e;
+		Sound hse = hs -> e.get();
 		for (long i = 1; i <= thy nx; i++) {
 			hse -> z[1][i] = thy z[1][i];
 		}
@@ -147,8 +146,7 @@ void LPC_Frames_and_Sound_huber (LPC_Frame me, Sound thee, LPC_Frame him, struct
 
 		s0 = hs -> scale;
 
-		NUMstatistics_huber (e, n, & (hs -> location), hs -> wantlocation, & (hs -> scale), hs -> wantscale,
-		                     hs -> k, hs -> tol, hs -> work);
+		NUMstatistics_huber (e, n, & (hs -> location), hs -> wantlocation, & (hs -> scale), hs -> wantscale, hs -> k, hs -> tol, hs -> work);
 
 		huber_struct_getWeights (hs, e);
 		huber_struct_getWeightedCovars (hs, s);
@@ -171,10 +169,22 @@ void LPC_Frames_and_Sound_huber (LPC_Frame me, Sound thee, LPC_Frame him, struct
 	} while ( (hs -> iter < hs -> itermax) && (fabs (s0 - hs -> scale) > hs -> tol * s0));
 }
 
-
-LPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth, double preEmphasisFrequency, double k,
+#if 0
+	autoSound e;
+	double k, tol, tol_svd;
+	long iter, itermax;
+	int wantlocation, wantscale;
+	double location, scale;
+	long n, p;
+	double *w, *work;
+	double *a;
+	double **covar, *c;
+	autoSVD svd;
+#endif
+	
+autoLPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth, double preEmphasisFrequency, double k,
 	int itermax, double tol, int wantlocation) {
-	struct huber_struct struct_huber = { 0 };
+	struct huber_struct struct_huber { autoSound(), 0.0, 0.0, 0.0, 0, 0, 0, 0, 0.0, 0.0, 0, 0, nullptr, nullptr, nullptr, nullptr, nullptr, autoSVD() };
 	try {
 		double t1, samplingFrequency = 1.0 / my dx, tol_svd = 0.000001;
 		double location = 0, windowDuration = 2 * analysisWidth; /* Gaussian window */
@@ -208,19 +218,19 @@ LPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth, doubl
 
 		autoMelderProgress progess (U"LPC analysis");
 
-		Sound_preEmphasis (sound.peek(), preEmphasisFrequency);
+		Sound_preEmphasis (sound.get(), preEmphasisFrequency);
 
 		for (long i = 1; i <= nFrames; i++) {
 			LPC_Frame lpc = (LPC_Frame) & thy d_frames[i];
 			LPC_Frame lpcto = (LPC_Frame) & his d_frames[i];
 			double t = Sampled_indexToX (thee, i);
 
-			Sound_into_Sound (sound.peek(), sframe.peek(), t - windowDuration / 2);
-			Vector_subtractMean (sframe.peek());
-			Sounds_multiply (sframe.peek(), window.peek());
+			Sound_into_Sound (sound.get(), sframe.get(), t - windowDuration / 2);
+			Vector_subtractMean (sframe.get());
+			Sounds_multiply (sframe.get(), window.get());
 
 			try {
-				LPC_Frames_and_Sound_huber (lpc, sframe.peek(), lpcto, & struct_huber);
+				LPC_Frames_and_Sound_huber (lpc, sframe.get(), lpcto, & struct_huber);
 			} catch (MelderError) {
 				frameErrorCount++;
 			}
@@ -228,8 +238,7 @@ LPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth, doubl
 			iter += struct_huber.iter;
 
 			if ( (i % 10) == 1) {
-				Melder_progress ( (double) i / nFrames, U"LPC analysis of frame ",
-				                   i, U" out of ", nFrames, U".");
+				Melder_progress ( (double) i / nFrames, U"LPC analysis of frame ", i, U" out of ", nFrames, U".");
 			}
 		}
 
@@ -238,31 +247,31 @@ LPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth, doubl
 		MelderInfo_writeLine (U"Number of iterations: ", iter,
 			U"\n   Average per frame: ", ((double) iter) / nFrames);
 		huber_struct_destroy (&struct_huber);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		huber_struct_destroy (&struct_huber);
 		Melder_throw (me, U": no robust LPC created.");
 	}
 }
 
-Formant Sound_to_Formant_robust (Sound me, double dt_in, double numberOfFormants, double maximumFrequency,
+autoFormant Sound_to_Formant_robust (Sound me, double dt_in, double numberOfFormants, double maximumFrequency,
 	double halfdt_window, double preEmphasisFrequency, double safetyMargin, double k, int itermax, double tol, int wantlocation)
 {
 	double dt = dt_in > 0.0 ? dt_in : halfdt_window / 4.0;
 	double nyquist = 0.5 / my dx;
 	int predictionOrder = (long) floor (2 * numberOfFormants);
 	try {
-		autoSound sound = NULL;
-		if (maximumFrequency <= 0.0 || fabs (maximumFrequency / nyquist - 1) < 1.0e-12) {
-			sound.reset (Data_copy (me));   // will be modified
+		autoSound sound;
+		if (maximumFrequency <= 0.0 || fabs (maximumFrequency / nyquist - 1.0) < 1.0e-12) {
+			sound = Data_copy (me);   // will be modified
 		} else {
-			sound.reset (Sound_resample (me, maximumFrequency * 2, 50));
+			sound = Sound_resample (me, maximumFrequency * 2.0, 50);
 		}
 
-		autoLPC lpc = Sound_to_LPC_auto (sound.peek(), predictionOrder, halfdt_window, dt, preEmphasisFrequency);
-		autoLPC lpcr = LPC_and_Sound_to_LPC_robust (lpc.peek(), sound.peek(), halfdt_window, preEmphasisFrequency, k, itermax, tol, wantlocation);
-		autoFormant thee = LPC_to_Formant (lpcr.peek(), safetyMargin);
-		return thee.transfer();
+		autoLPC lpc = Sound_to_LPC_auto (sound.get(), predictionOrder, halfdt_window, dt, preEmphasisFrequency);
+		autoLPC lpcr = LPC_and_Sound_to_LPC_robust (lpc.get(), sound.get(), halfdt_window, preEmphasisFrequency, k, itermax, tol, wantlocation);
+		autoFormant thee = LPC_to_Formant (lpcr.get(), safetyMargin);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no robust Formant created.");
 	}
diff --git a/LPC/Sound_and_LPC_robust.h b/LPC/Sound_and_LPC_robust.h
index 5d86f9e..dc39cdb 100644
--- a/LPC/Sound_and_LPC_robust.h
+++ b/LPC/Sound_and_LPC_robust.h
@@ -2,21 +2,20 @@
 #define _Sound_and_LPC_robust_h_
 /* Sound_and_LPC_robust.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,10 +35,10 @@ void LPC_Frames_and_Sound_huber (LPC_Frame me, Sound thee, LPC_Frame him, struct
 	By defining a void pointer we circumvent the complaint.
 */
 
-LPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth,
+autoLPC LPC_and_Sound_to_LPC_robust (LPC thee, Sound me, double analysisWidth,
 	double preEmphasisFrequency, double k, int itermax, double tol, int wantlocation);
 
-Formant Sound_to_Formant_robust (Sound me, double dt_in, double numberOfFormants, double maximumFrequency,
+autoFormant Sound_to_Formant_robust (Sound me, double dt_in, double numberOfFormants, double maximumFrequency,
 	double halfdt_window, double preemphasisFrequency, double safetyMargin, double k, int itermax, double tol, int wantlocation);
 
 #endif /* _Sound_and_LPC_robust_h_ */
diff --git a/LPC/Tube.cpp b/LPC/Tube.cpp
index 9cd14d0..a4cac0e 100644
--- a/LPC/Tube.cpp
+++ b/LPC/Tube.cpp
@@ -1,20 +1,19 @@
 /* Tube.cpp
  *
- * Copyright (C) 1994-2012 David Weenink
+ * Copyright (C) 1994-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -48,7 +47,7 @@
 Thing_implement (Tube, Sampled, 0);
 
 void structTube :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain: ", xmin, U" to ", xmax, U" seconds");
 	MelderInfo_writeLine (U"Maximum number of segments: ", maxnSegments);
 	MelderInfo_writeLine (U"Number of frames: ", nx);
@@ -79,8 +78,7 @@ void Tube_Frames_rc_into_area (Tube_Frame me, Tube_Frame thee) {
 	}
 }
 
-static void Tube_setLengths (I, double length) {
-	iam (Tube);
+static void Tube_setLengths (Tube me, double length) {
 	for (long i = 1; i <= my nx; i++) {
 		Tube_Frame f = & my frame[i];
 		if (f) {
@@ -89,9 +87,7 @@ static void Tube_setLengths (I, double length) {
 	}
 }
 
-void Tube_init (I, double tmin, double tmax, long nt, double dt, double t1,
-                long maxnSegments, double defaultLength) {
-	iam (Tube);
+void Tube_init (Tube me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength) {
 	my maxnSegments = maxnSegments;
 	Sampled_init (me, tmin, tmax, nt, dt, t1);
 	my frame = NUMvector<structTube_Frame> (1, nt);
@@ -100,17 +96,15 @@ void Tube_init (I, double tmin, double tmax, long nt, double dt, double t1,
 
 Thing_implement (Area, Tube, 0);
 
-void Area_init (Area me, double tmin, double tmax, long nt, double dt, double t1,
-                long maxnSegments, double defaultLength) {
+void Area_init (Area me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength) {
 	Tube_init (me, tmin, tmax, nt, dt, t1, maxnSegments, defaultLength);
 }
 
-Area Area_create (double tmin, double tmax, long nt, double dt, double t1,
-                  long maxnSegments, double defaultLength) {
+autoArea Area_create (double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength) {
 	try {
 		autoArea me = Thing_new (Area);
-		Area_init (me.peek(), tmin, tmax, nt, dt, t1, maxnSegments, defaultLength);
-		return me.transfer();
+		Area_init (me.get(), tmin, tmax, nt, dt, t1, maxnSegments, defaultLength);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Area not crteated.");
 	}
@@ -118,17 +112,15 @@ Area Area_create (double tmin, double tmax, long nt, double dt, double t1,
 
 Thing_implement (RC, Tube, 0);
 
-void RC_init (RC me, double tmin, double tmax, long nt, double dt, double t1,
-              long maxnSegments, double defaultLength) {
+void RC_init (RC me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength) {
 	Tube_init (me, tmin, tmax, nt, dt, t1, maxnSegments, defaultLength);
 }
 
-RC RC_create (double tmin, double tmax, long nt, double dt, double t1,
-              long maxnCoefficients, double defaultLength) {
+autoRC RC_create (double tmin, double tmax, long nt, double dt, double t1, long maxnCoefficients, double defaultLength) {
 	try {
 		autoRC me = Thing_new (RC);
-		RC_init (me.peek(), tmin, tmax, nt, dt, t1, maxnCoefficients, defaultLength);
-		return me.transfer();
+		RC_init (me.get(), tmin, tmax, nt, dt, t1, maxnCoefficients, defaultLength);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"RC not crteated.");
 	}
diff --git a/LPC/Tube.h b/LPC/Tube.h
index b847316..2abdce2 100644
--- a/LPC/Tube.h
+++ b/LPC/Tube.h
@@ -2,27 +2,25 @@
 #define _Tube_h_
 /* Tube.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sampled.h"
 
 #include "Tube_def.h"
-oo_CLASS_CREATE (Tube, Sampled);
 
 /*
 	Tube's as a function of time.
@@ -36,8 +34,7 @@ void Tube_Frame_free (Tube_Frame me);
 
 void Tube_Frames_rc_into_area (Tube_Frame me, Tube_Frame thee);
 
-void Tube_init (I, double tmin, double tmax, long nt, double dt, double t1,
-	long maxnSegments, double defaultLength);
+void Tube_init (Tube me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength);
 
 Thing_define (Area, Tube) {
 };
@@ -47,25 +44,17 @@ Thing_define (Area, Tube) {
 	units in m^2.
 */
 
-void Area_init (Area me, double tmin, double tmax, long nt, double dt, double t1,
-	long maxnSegments, double defaultLength);
+void Area_init (Area me, double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength);
 
-Area Area_create (double tmin, double tmax, long nt, double dt, double t1,
-	long maxnSegments, double defaultLength);
+autoArea Area_create (double tmin, double tmax, long nt, double dt, double t1, long maxnSegments, double defaultLength);
 
 Thing_define (RC, Tube) {
 };
 
-/*
-	Reflection Coefficients as a function of time.
-
-*/
-
+// Reflection Coefficients as a function of time.
 
-void RC_init (RC me, double tmin, double tmax, long nt, double dt, double t1,
-	long maxnCoefficients, double defaultLength);
+void RC_init (RC me, double tmin, double tmax, long nt, double dt, double t1, long maxnCoefficients, double defaultLength);
 
-RC RC_create (double tmin, double tmax, long nt, double dt, double t1,
-	long maxnCoefficients, double defaultLength);
+autoRC RC_create (double tmin, double tmax, long nt, double dt, double t1, long maxnCoefficients, double defaultLength);
 
 #endif // _Tube_h_
diff --git a/LPC/Tube_def.h b/LPC/Tube_def.h
index ab3d27e..150f505 100644
--- a/LPC/Tube_def.h
+++ b/LPC/Tube_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/LPC/VocalTractTier.cpp b/LPC/VocalTractTier.cpp
index b9ae97c..de9d114 100644
--- a/LPC/VocalTractTier.cpp
+++ b/LPC/VocalTractTier.cpp
@@ -1,20 +1,19 @@
 /* VocalTractTier.cpp
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "NUM2.h"
@@ -40,15 +39,13 @@
 #include "oo_DESCRIPTION.h"
 #include "VocalTractTier_def.h"
 
-/***** VocalTractPoint *****/
-
 void VocalTract_drawSegments (VocalTract me, Graphics g, double maxLength, double maxArea, bool closedAtGlottis)
 {
 	Graphics_setInner (g);
 	double maxCrossection = sqrt (maxArea);
-	Graphics_setWindow (g, 0, maxLength, -maxCrossection, maxCrossection);
+	Graphics_setWindow (g, 0.0, maxLength, -maxCrossection, maxCrossection);
 	for (long isection = 1; isection <= my nx; isection++) {
-		double x1 = (isection - 1) * my dx, x2 = x1 + my dx;
+		double x1 = (isection - 1.0) * my dx, x2 = x1 + my dx;
 		double crosssection2 = sqrt (my z[1][isection]);
 		Graphics_line (g, x1, crosssection2, x2, crosssection2);
 		Graphics_line (g, x1, -crosssection2, x2, -crosssection2);
@@ -63,14 +60,16 @@ void VocalTract_drawSegments (VocalTract me, Graphics g, double maxLength, doubl
 	Graphics_unsetInner (g);
 }
 
+/***** VocalTractPoint *****/
+
 Thing_implement (VocalTractPoint, AnyPoint, 0);
 
-VocalTractPoint VocalTract_to_VocalTractPoint (VocalTract me, double time) {
+autoVocalTractPoint VocalTract_to_VocalTractPoint (VocalTract me, double time) {
 	try {
 		autoVocalTractPoint thee = Thing_new (VocalTractPoint);
 		thy number = time;
-		thy d_vocalTract = (VocalTract) Data_copy (me);
-		return thee.transfer();
+		thy d_vocalTract = Data_copy (me);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to VocalTractPoint.");
 	}
@@ -80,100 +79,99 @@ VocalTractPoint VocalTract_to_VocalTractPoint (VocalTract me, double time) {
 
 Thing_implement (VocalTractTier, Function, 0);
 
-VocalTractTier VocalTractTier_create (double fromTime, double toTime) {
+autoVocalTractTier VocalTractTier_create (double fromTime, double toTime) {
 	try {
 		autoVocalTractTier me = Thing_new (VocalTractTier);
-		Function_init (me.peek(), fromTime, toTime);
-		my d_vocalTracts = SortedSetOfDouble_create ();
-		return me.transfer();
+		Function_init (me.get(), fromTime, toTime);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U": VocalTractTier not created.");
 	}
 }
 
-VocalTractTier VocalTract_to_VocalTractTier (VocalTract me, double startTime, double endTime, double time) {
+autoVocalTractTier VocalTract_to_VocalTractTier (VocalTract me, double startTime, double endTime, double time) {
 	try {
 		autoVocalTractTier thee = VocalTractTier_create (startTime, endTime);
-		VocalTractTier_addVocalTract (thee.peek(), time, me);
-		return thee.transfer();
+		VocalTractTier_addVocalTract_copy (thee.get(), time, me);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to VocalTractTier");
 	}
 }
 
-void VocalTractTier_addVocalTract (VocalTractTier me, double time, VocalTract vocaltract) {
+void VocalTractTier_addVocalTract_copy (VocalTractTier me, double time, VocalTract vocaltract) {
 	try {
-		autoVocalTractPoint thee =  VocalTract_to_VocalTractPoint (vocaltract, time);
-		if (my d_vocalTracts -> size > 1) {
-			VocalTractPoint vtp = (VocalTractPoint) my d_vocalTracts -> item[1];
+		autoVocalTractPoint thee = VocalTract_to_VocalTractPoint (vocaltract, time);
+		if (my d_vocalTracts.size > 0) {
+			VocalTractPoint vtp = my d_vocalTracts.at [1];
 			long numberOfSections = vtp -> d_vocalTract -> nx;
 			if (numberOfSections != vocaltract -> nx) {
-				forget (vocaltract);
 				Melder_throw (U"The number of sections must be equal to ", numberOfSections, U".");
 			}
 		}
-		Collection_addItem (my d_vocalTracts, thee.transfer());
+		my d_vocalTracts. addItem_move (thee.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": no VocalTract added.");
 	}
 }
 
-VocalTract VocalTractTier_to_VocalTract (VocalTractTier me, double time) {
+autoVocalTract VocalTractTier_to_VocalTract (VocalTractTier me, double time) {
 	try {
-		VocalTractPoint vtp = (VocalTractPoint) my d_vocalTracts -> item[1];
+		Melder_assert (my d_vocalTracts.size > 0);
+		VocalTractPoint vtp = my d_vocalTracts.at [1];
 		long numberOfSections = vtp -> d_vocalTract -> nx;
 		autoVocalTract thee = VocalTract_create (numberOfSections, vtp -> d_vocalTract -> dx);
-		for (long isection = 1; isection <= numberOfSections; isection++) {
+		for (long isection = 1; isection <= numberOfSections; isection ++) {
 			autoRealTier section = RealTier_create (my xmin, my xmax);
-			for (long i = 1; i <= my d_vocalTracts -> size; i++) {
-				VocalTractPoint vtpi = (VocalTractPoint) my d_vocalTracts -> item[i];
-				double areai = vtpi -> d_vocalTract -> z[1][isection];
-				RealTier_addPoint (section.peek(), vtpi -> number, areai);
+			for (long i = 1; i <= my d_vocalTracts.size; i ++) {
+				VocalTractPoint vtpi = my d_vocalTracts.at [i];
+				double areai = vtpi -> d_vocalTract -> z [1] [isection];
+				RealTier_addPoint (section.get(), vtpi -> number, areai);
 			}
-			thy z[1][isection] = RealTier_getValueAtTime (section.peek(), time);
+			thy z[1][isection] = RealTier_getValueAtTime (section.get(), time);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no VocalTract created.");
 	}
 }
 
-LPC VocalTractTier_to_LPC (VocalTractTier me, double timeStep) {
+autoLPC VocalTractTier_to_LPC (VocalTractTier me, double timeStep) {
 	try {
-		if (my d_vocalTracts -> size == 0) {
+		if (my d_vocalTracts.size == 0) {
 			Melder_throw (U"Empty VocalTractTier");
 		}
 		long numberOfFrames = (long) floor ((my xmax - my xmin) / timeStep);
-		VocalTractPoint vtp = (VocalTractPoint) my d_vocalTracts -> item[1];
+		VocalTractPoint vtp = my d_vocalTracts.at [1];
 		long numberOfSections = vtp -> d_vocalTract -> nx;
 		double samplingPeriod = 1.0 / (1000.0 * numberOfSections);
 		autoNUMmatrix<double> area (1, numberOfFrames, 1, numberOfSections + 1);
 		autoNUMvector<double> areavec (1, numberOfSections + 1);
-		autoLPC thee = LPC_create (my xmin, my xmax, numberOfFrames, timeStep, timeStep / 2, numberOfSections, samplingPeriod);
+		autoLPC thee = LPC_create (my xmin, my xmax, numberOfFrames, timeStep, timeStep / 2.0, numberOfSections, samplingPeriod);
 		// interpolate each section
-		for (long isection = 1; isection <= numberOfSections; isection++) {
+		for (long isection = 1; isection <= numberOfSections; isection ++) {
 			autoRealTier sectioni = RealTier_create (my xmin, my xmax);
-			for (long i = 1; i <= my d_vocalTracts -> size; i++) {
-				VocalTractPoint vtpi = (VocalTractPoint) my d_vocalTracts -> item[i];
-				double areai = vtpi -> d_vocalTract -> z[1][isection];
-				RealTier_addPoint (sectioni.peek(), vtpi -> number, areai);
+			for (long i = 1; i <= my d_vocalTracts.size; i ++) {
+				VocalTractPoint vtpi = my d_vocalTracts.at [i];
+				double areai = vtpi -> d_vocalTract -> z [1] [isection];
+				RealTier_addPoint (sectioni.get(), vtpi -> number, areai);
 			}
-			for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
+			for (long iframe = 1; iframe <= numberOfFrames; iframe ++) {
 				double time = thy x1 + (iframe - 1) * thy dx;
-				area[iframe][isection] = RealTier_getValueAtTime (sectioni.peek(), time);
-				area[iframe][numberOfSections + 1] = 0.0001; // normalisation is area[n+1] = 0.0001
+				area [iframe] [isection] = RealTier_getValueAtTime (sectioni.get(), time);
+				area [iframe] [numberOfSections + 1] = 0.0001;   // normalisation is area[n+1] = 0.0001
 			}
 		}
-		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
-			LPC_Frame frame = &thy d_frames[iframe];
+		for (long iframe = 1; iframe <= numberOfFrames; iframe ++) {
+			LPC_Frame frame = & thy d_frames [iframe];
 			LPC_Frame_init (frame, numberOfSections);
-			for (long i = 1; i <= numberOfSections + 1; i++) {
-				areavec[i] = area[iframe][numberOfSections + 1 - i];
+			for (long i = 1; i <= numberOfSections + 1; i ++) {
+				areavec [i] = area [iframe] [numberOfSections + 1 - i];
 			}
 			NUMlpc_area_to_lpc (areavec.peek(), numberOfSections + 1, frame -> a);
-			frame -> gain = 1e-6; // something
+			frame -> gain = 1e-6;   // something
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U": not converted to LPC.");
 	}
diff --git a/LPC/VocalTractTier.h b/LPC/VocalTractTier.h
index 7151d86..4280ef9 100644
--- a/LPC/VocalTractTier.h
+++ b/LPC/VocalTractTier.h
@@ -2,21 +2,20 @@
 #define _VocalTractTier_h_
 /* VocalTractTier.h
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AnyTier.h"
@@ -24,20 +23,20 @@
 #include "VocalTract.h"
 
 #include "VocalTractTier_def.h"
-oo_CLASS_CREATE (VocalTractPoint, AnyPoint);
-oo_CLASS_CREATE (VocalTractTier, Function);
 
 void VocalTract_drawSegments (VocalTract me, Graphics g, double maxLength, double maxArea, bool closedAtGlottis);
 
-VocalTractPoint VocalTract_to_VocalTractPoint (VocalTract me, double time);
+autoVocalTractPoint VocalTract_to_VocalTractPoint (VocalTract me, double time);
 
-VocalTractTier VocalTractTier_create (double fromTime, double toTime);
-VocalTractTier VocalTract_to_VocalTractTier (VocalTract me, double startTime, double endTime, double time);
+autoVocalTractTier VocalTractTier_create (double fromTime, double toTime);
 
-void VocalTractTier_addVocalTract (VocalTractTier me, double time, VocalTract thee);
+autoVocalTractTier VocalTract_to_VocalTractTier (VocalTract me, double startTime, double endTime, double time);
 
-LPC VocalTractTier_to_LPC (VocalTractTier me, double timeStep);
-VocalTract VocalTractTier_to_VocalTract (VocalTractTier me, double time);
+void VocalTractTier_addVocalTract_copy (VocalTractTier me, double time, VocalTract thee);
+
+autoLPC VocalTractTier_to_LPC (VocalTractTier me, double timeStep);
+
+autoVocalTract VocalTractTier_to_VocalTract (VocalTractTier me, double time);
 
 /* End of file VocalTractTier.h */
 #endif
diff --git a/LPC/VocalTractTier_def.h b/LPC/VocalTractTier_def.h
index da55923..701edb5 100644
--- a/LPC/VocalTractTier_def.h
+++ b/LPC/VocalTractTier_def.h
@@ -1,26 +1,25 @@
 /* VocalTractTier_def.h
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT VocalTractPoint
 oo_DEFINE_CLASS (VocalTractPoint, AnyPoint)
 
-	oo_OBJECT (VocalTract, 0, d_vocalTract)
+	oo_AUTO_OBJECT (VocalTract, 0, d_vocalTract)
 
 oo_END_CLASS (VocalTractPoint)
 #undef ooSTRUCT
@@ -29,7 +28,7 @@ oo_END_CLASS (VocalTractPoint)
 #define ooSTRUCT VocalTractTier
 oo_DEFINE_CLASS (VocalTractTier, Function)
 
-	oo_COLLECTION (SortedSetOfDouble, d_vocalTracts, VocalTractPoint, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, d_vocalTracts, VocalTractPoint, 0)
 
 oo_END_CLASS (VocalTractTier)
 #undef ooSTRUCT
diff --git a/LPC/manual_LPC.cpp b/LPC/manual_LPC.cpp
index 93899e8..c882930 100644
--- a/LPC/manual_LPC.cpp
+++ b/LPC/manual_LPC.cpp
@@ -1,20 +1,19 @@
-/* manual_LPC.c
+/* manual_LPC.cpp
  *
- * Copyright (C) 1994-2014 David Weenink
+ * Copyright (C) 1994-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -475,10 +474,10 @@ TAG (U"##Use filter at time (s)")
 DEFINITION (U"determines which LPC frame will be chosen to inverse filter the sound. ")
 MAN_END
 
-MAN_BEGIN (U"MFCC", U"djmw", 20141022)
+MAN_BEGIN (U"MFCC", U"djmw", 20160225)
 INTRO (U"One of the @@types of objects@ in P\\s{RAAT}.")
 NORMAL (U"An object of type MFCC represents mel frequency cepstral coefficients "
-	"as a function of time. The coefficients are represented in frames "
+	"as a function of time. The coefficients are represented in a number of frames centred at equally spaced times. "
 	"at constant sampling period.")
 ENTRY (U"MFCC commands")
 NORMAL (U"Creation:")
@@ -558,7 +557,7 @@ MAN_END
 
 #define Sound_to_LPC_COMMON_HELP(method) \
 INTRO (U"With this command you create a new @LPC from every selected @Sound, " \
-	"using " #method " method.") \
+	"using " method " method.") \
 ENTRY (U"Warning") \
 NORMAL (U"You are advised not to use this command for formant analysis. " \
 	"For formant analysis, instead use @@Sound: To Formant (burg)...@, " \
@@ -690,4 +689,4 @@ MAN_END
  19980322 djmw Sound_into_LPC_Frame_auto did not return (nCoefficients == 0) when (r[1] == 0).
 */
 
-/* End of file manual_LPC.c */
+/* End of file manual_LPC.cpp */
diff --git a/LPC/praat_LPC_init.cpp b/LPC/praat_LPC_init.cpp
index 3717fee..7857e1d 100644
--- a/LPC/praat_LPC_init.cpp
+++ b/LPC/praat_LPC_init.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -71,7 +70,7 @@ DIRECT (Cepstrum_downto_PowerCepstrum)
 	LOOP {
 		iam (Cepstrum);
 		autoPowerCepstrum thee = Cepstrum_downto_PowerCepstrum (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -84,7 +83,7 @@ FORM (Cepstrum_drawLinear, U"Cepstrum: Draw linear", U"Cepstrum: Draw (linear)..
 	REAL (U"right Quefrency range (s)", U"0.0")
 	REAL (U"Minimum", U"0.0")
 	REAL (U"Maximum", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -100,7 +99,7 @@ FORM (PowerCepstrum_draw, U"PowerCepstrum: Draw", U"PowerCepstrum: Draw...")
 	REAL (U"right Quefrency range (s)", U"0.0")
 	REAL (U"Minimum (dB)", U"0.0")
 	REAL (U"Maximum (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -178,7 +177,7 @@ DO
 		iam (PowerCepstrum);
 		double peakdB, quefrency;
 		PowerCepstrum_getMaximumAndQuefrency (me, GET_REAL (U"left Search peak in pitch range"), GET_REAL (U"right Search peak in pitch range"), GET_INTEGER (U"Interpolation") - 1, &peakdB, &quefrency);
-		double f = 1 / quefrency;
+		double f = 1.0 / quefrency;
 		Melder_information (quefrency, U" s (f =", f, U" Hz)");
 	}
 END
@@ -206,7 +205,7 @@ DO
 		double qpeak, cpp = PowerCepstrum_getPeakProminence_hillenbrand (me,
 			GET_REAL (U"left Search peak in pitch range"), GET_REAL (U"right Search peak in pitch range"), &qpeak);
 		Melder_information (cpp, U" dB; quefrency=", qpeak, U" s (f=",
-			1 / qpeak, U" Hz).");
+			1.0 / qpeak, U" Hz).");
 	}
 END
 
@@ -279,7 +278,7 @@ DO
 			GET_REAL (U"left Tilt line quefrency range"), GET_REAL (U"right Tilt line quefrency range"),
 			GET_INTEGER (U"Line type"), GET_INTEGER (U"Fit method"), &qpeak);
 		Melder_information (cpp, U" dB; quefrency=", qpeak, U" s (f=",
-			1 / qpeak, U" Hz).");
+			1.0 / qpeak, U" Hz).");
 	}
 END
 
@@ -320,7 +319,7 @@ DO
 	LOOP {
 		iam (PowerCepstrum);
 		autoPowerCepstrum thee = PowerCepstrum_smooth (me, GET_REAL (U"Quefrency averaging window"), GET_INTEGER (U"Number of iterations"));
-		praat_new (thee.transfer(), my name, U"_smooth");
+		praat_new (thee.move(), my name, U"_smooth");
 	}
 END
 
@@ -339,21 +338,23 @@ DO
 		iam (PowerCepstrum);
 		autoPowerCepstrum thee = PowerCepstrum_subtractTilt (me, GET_REAL (U"left Tilt line quefrency range"), 
 			GET_REAL (U"right Tilt line quefrency range"), GET_INTEGER (U"Line type"), GET_INTEGER (U"Fit method"));
-		praat_new (thee.transfer(), my name, U"minusTilt");
+		praat_new (thee.move(), my name, U"minusTilt");
 	}
 END
 
 DIRECT (Cepstrum_to_Spectrum)
 	LOOP {
 		iam (Cepstrum);
-		praat_new (Cepstrum_to_Spectrum (me), my name);
+		autoSpectrum thee = Cepstrum_to_Spectrum (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (PowerCepstrum_to_Matrix)
 	LOOP {
 		iam (PowerCepstrum);
-		praat_new (PowerCepstrum_to_Matrix (me), my name);
+		autoMatrix thee = PowerCepstrum_to_Matrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -363,14 +364,14 @@ DIRECT (PowerCepstrogram_help)
 	Melder_help (U"PowerCepstrogram");
 END
 
-FORM (old_PowerCepstrogram_paint, U"PowerCepstrogram: Paint", 0)
+FORM (old_PowerCepstrogram_paint, U"PowerCepstrogram: Paint", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Quefrency range (s)", U"0.0")
 	REAL (U"right Quefrency range (s)", U"0.0")
 	REAL (U"Minimum (dB)", U"0.0")
 	REAL (U"Maximum (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -389,10 +390,10 @@ FORM (PowerCepstrogram_paint, U"PowerCepstrogram: Paint", U"PowerCepstrogram: Pa
 	REAL (U"left Quefrency range (s)", U"0.0")
 	REAL (U"right Quefrency range (s)", U"0.0")
 	REAL (U"Maximum (dB)", U"80.0")
-	BOOLEAN (U"Autoscaling", 0);
+	BOOLEAN (U"Autoscaling", false);
 	REAL (U"Dynamic range (dB)", U"30.0");
 	REAL (U"Dynamic compression (0-1)", U"0.0");
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO_ALTERNATIVE (old_PowerCepstrogram_paint)
 	autoPraatPicture picture;
@@ -413,7 +414,7 @@ DO
 	LOOP {
 		iam (PowerCepstrogram);
 		autoPowerCepstrogram thee = PowerCepstrogram_smooth (me, GET_REAL (U"Time averaging window"), GET_REAL (U"Quefrency averaging window"));
-		praat_new (thee.transfer(), my name, U"_smoothed");
+		praat_new (thee.move(), my name, U"_smoothed");
 	}
 END
 
@@ -460,11 +461,11 @@ DO
 		iam (PowerCepstrogram);
 		autoPowerCepstrogram thee = PowerCepstrogram_subtractTilt (me, GET_REAL (U"left Tilt line quefrency range"), 
 			GET_REAL (U"right Tilt line quefrency range"), GET_INTEGER (U"Line type"), GET_INTEGER (U"Fit method"));
-		praat_new (thee.transfer(), my name, U"_minusTilt");
+		praat_new (thee.move(), my name, U"_minusTilt");
 	}
 END
 
-FORM (PowerCepstrogram_subtractTilt_inline, U"PowerCepstrogram: Subtract tilt (in-line)", 0)
+FORM (PowerCepstrogram_subtractTilt_inline, U"PowerCepstrogram: Subtract tilt (in-line)", nullptr)
 	REAL (U"left Tilt line quefrency range (s)", U"0.001")
 	REAL (U"right Tilt line quefrency range (s)", U"0.0 (=end)")
 	OPTIONMENU (U"Line type", 2)
@@ -482,9 +483,9 @@ DO
 	}
 END
 
-FORM (PowerCepstrogram_getCPPS_hillenbrand, U"PowerCepstrogram: Get CPPS", 0)
+FORM (PowerCepstrogram_getCPPS_hillenbrand, U"PowerCepstrogram: Get CPPS", nullptr)
 	LABEL (U"", U"Smoothing:")
-	BOOLEAN (U"Subtract tilt before smoothing", 1)
+	BOOLEAN (U"Subtract tilt before smoothing", true)
 	REAL (U"Time averaging window (s)", U"0.001")
 	REAL (U"Quefrency averaging window (s)", U"0.00005")
 	LABEL (U"", U"Peak search:")
@@ -501,9 +502,9 @@ DO
 END
 
 
-FORM (PowerCepstrogram_getCPPS, U"PowerCepstrogram: Get CPPS", 0)
+FORM (PowerCepstrogram_getCPPS, U"PowerCepstrogram: Get CPPS", nullptr)
 	LABEL (U"", U"Smoothing:")
-	BOOLEAN (U"Subtract tilt before smoothing", 1)
+	BOOLEAN (U"Subtract tilt before smoothing", true)
 	REAL (U"Time averaging window (s)", U"0.001")
 	REAL (U"Quefrency averaging window (s)", U"0.00005")
 	LABEL (U"", U"Peak search:")
@@ -537,7 +538,7 @@ DO
 	}
 END
 
-FORM (PowerCepstrogram_formula, U"PowerCepstrogram: Formula", U"")
+FORM (PowerCepstrogram_formula, U"PowerCepstrogram: Formula", nullptr)
 	LABEL (U"label", U"Do for all times and quefrencies:")
 	LABEL (U"label", U"   `x' is the time in seconds")
 	LABEL (U"label", U"   `y' is the quefrency in seconds")
@@ -549,7 +550,7 @@ DO
 	LOOP {
 		iam (PowerCepstrogram);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the PowerCepstrogram may have partially changed
@@ -558,7 +559,7 @@ DO
 	}
 END
 
-FORM (PowerCepstrogram_to_PowerCepstrum_slice, U"PowerCepstrogram: To PowerCepstrum (slice)", 0)
+FORM (PowerCepstrogram_to_PowerCepstrum_slice, U"PowerCepstrogram: To PowerCepstrum (slice)", nullptr)
 	REAL (U"Time (s)", U"0.1")
 	OK
 DO
@@ -566,7 +567,7 @@ DO
 		iam (PowerCepstrogram);
 		double time = GET_REAL (U"Time");
 		autoPowerCepstrum thee = PowerCepstrogram_to_PowerCepstrum_slice (me, time);
-		praat_new (thee.transfer(), my name, NUMstring_timeNoDot (time));
+		praat_new (thee.move(), my name, NUMstring_timeNoDot (time));
 	}
 END
 
@@ -596,7 +597,7 @@ DO
 			GET_INTEGER (U"Interpolation") - 1,
 			GET_REAL (U"left Tilt line quefrency range"), GET_REAL (U"right Tilt line quefrency range"),
 			GET_INTEGER (U"Line type"), GET_INTEGER (U"Fit method"));
-		praat_new (thee.transfer(), my name, U"_cpp");
+		praat_new (thee.move(), my name, U"_cpp");
 	}
 END
 
@@ -609,7 +610,7 @@ DO
 		iam (PowerCepstrogram);
 		autoTable thee = PowerCepstrogram_to_Table_hillenbrand (me,
 			GET_REAL (U"left Peak search pitch range"), GET_REAL (U"right Peak search pitch range"));
-		praat_new (thee.transfer(), my name, U"_cpp");
+		praat_new (thee.move(), my name, U"_cpp");
 	}
 END
 
@@ -617,7 +618,7 @@ DIRECT (PowerCepstrogram_to_Matrix)
 	LOOP {
 		iam (PowerCepstrogram);
 		autoMatrix thee = PowerCepstrogram_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -626,7 +627,8 @@ END
 DIRECT (Cepstrumc_to_LPC)
 	LOOP {
 		iam (Cepstrumc);
-		praat_new (Cepstrumc_to_LPC (me), my name);
+		autoLPC thee = Cepstrumc_to_LPC (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -638,8 +640,8 @@ FORM (Cepstrumc_to_DTW, U"Cepstrumc: To DTW", U"Cepstrumc: To DTW...")
 	REAL (U"Regression weight log energy", U"0.0")
 	REAL (U"Window for regression coefficients (seconds)", U"0.056")
 	LABEL (U"", U"Boundary conditions for time warp")
-	BOOLEAN (U"Match begin positions", 0)
-	BOOLEAN (U"Match end positions", 0)
+	BOOLEAN (U"Match begin positions", false)
+	BOOLEAN (U"Match end positions", false)
 	RADIO (U"Slope constraints", 1)
 	RADIOBUTTON (U"no restriction")
 	RADIOBUTTON (U"1/3 < slope < 3")
@@ -647,39 +649,42 @@ FORM (Cepstrumc_to_DTW, U"Cepstrumc: To DTW", U"Cepstrumc: To DTW...")
 	RADIOBUTTON (U"2/3 < slope < 3/2")
 	OK
 DO
-	Cepstrumc c1 = 0, c2 = 0;
+	Cepstrumc c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Cepstrumc);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
-	praat_new (Cepstrumc_to_DTW (c1, c2, GET_REAL (U"Cepstral weight"),
+	autoDTW thee = Cepstrumc_to_DTW (c1, c2, GET_REAL (U"Cepstral weight"),
 		GET_REAL (U"Log energy weight"), GET_REAL (U"Regression weight"),
 		GET_REAL (U"Regression weight log energy"), GET_REAL (U"Window for regression coefficients"),
 		GET_INTEGER (U"Match begin positions"), GET_INTEGER (U"Match end positions"),
-		GET_INTEGER (U"Slope constraints")), c1->name, U"_", c2->name);
+		GET_INTEGER (U"Slope constraints"));
+	praat_new (thee.move(), c1 -> name, U"_", c2 -> name);
 END
 
 DIRECT (Cepstrumc_to_Matrix)
 	LOOP {
 		iam (Cepstrumc);
-		praat_new (Cepstrumc_to_Matrix (me), my name);
+		autoMatrix thee = Cepstrumc_to_Matrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 /******************** Formant ********************************************/
 
-FORM (Formant_to_LPC, U"Formant: To LPC", 0)
+FORM (Formant_to_LPC, U"Formant: To LPC", nullptr)
 	POSITIVE (U"Sampling frequency (Hz)", U"16000.0")
 	OK
 DO
 	LOOP {
 		iam (Formant);
-		praat_new (Formant_to_LPC (me, 1.0 / GET_REAL (U"Sampling frequency")), my name);
+		autoLPC thee = Formant_to_LPC (me, 1.0 / GET_REAL (U"Sampling frequency"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Formant_formula, U"Formant: Formula", 0)
+FORM (Formant_formula, U"Formant: Formula", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	NATURAL (U"left Formant range", U"1")
@@ -707,7 +712,7 @@ DO
 	long iformant = GET_INTEGER (U"Formant number");
 	Spectrogram thee = FIRST (Spectrogram);
 	autoIntensityTier him = Formant_and_Spectrogram_to_IntensityTier (me, thee, iformant);
-	praat_new (him.transfer(), my name, U"_", GET_INTEGER (U"Formant number"));
+	praat_new (him.move(), my name, U"_", GET_INTEGER (U"Formant number"));
 END
 
 /********************LFCC ********************************************/
@@ -726,7 +731,8 @@ DO
 	}
 	LOOP {
 		iam (LFCC);
-		praat_new (LFCC_to_LPC (me, ncof), my name);
+		autoLPC thee = LFCC_to_LPC (me, ncof);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -739,7 +745,7 @@ FORM (LPC_drawGain, U"LPC: Draw gain", U"LPC: Draw gain...")
 	REAL (U"To time (seconds)", U"0.0 (=all)")
 	REAL (U"Minimum gain", U"0.0")
 	REAL (U"Maximum gain", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -773,7 +779,7 @@ END
 
 FORM (LPC_drawPoles, U"LPC: Draw poles", U"LPC: Draw poles...")
 	REAL (U"Time (seconds)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -786,14 +792,16 @@ END
 DIRECT (LPC_to_Formant)
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_to_Formant (me, 50), my name);
+		autoFormant thee = LPC_to_Formant (me, 50.0);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (LPC_to_Formant_keep_all)
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_to_Formant (me, 0), my name);
+		autoFormant thee = LPC_to_Formant (me, 0.0);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -807,18 +815,20 @@ DO
 	}
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_to_LFCC (me, ncof), my name);
+		autoLFCC thee = LPC_to_LFCC (me, ncof);
+		praat_new (thee.move(), my name);
 	}
 END
 
 FORM (LPC_to_Polynomial, U"LPC: To Polynomial", U"LPC: To Polynomial (slice)...")
 	REAL (U"Time (seconds)", U"0.0")
 	OK
-	DO
+DO
+	double time = GET_REAL (U"Time");
 	LOOP {
 		iam (LPC);
-		double time = GET_REAL (U"Time");
-		praat_new (LPC_to_Polynomial (me, time), my name, NUMstring_timeNoDot (time));
+		autoPolynomial thee = LPC_to_Polynomial (me, time);
+		praat_new (thee.move(), my name, NUMstring_timeNoDot (time));
 	}
 END
 
@@ -832,8 +842,9 @@ DO
 	LOOP {
 		iam (LPC);
 		double time = GET_REAL (U"Time");
-		praat_new (LPC_to_Spectrum (me, time, GET_REAL (U"Minimum frequency resolution"),
-		GET_REAL (U"Bandwidth reduction"), GET_REAL (U"De-emphasis frequency")), my name, NUMstring_timeNoDot (time));
+		autoSpectrum thee = LPC_to_Spectrum (me, time, GET_REAL (U"Minimum frequency resolution"),
+		GET_REAL (U"Bandwidth reduction"), GET_REAL (U"De-emphasis frequency"));
+		praat_new (thee.move(), my name, NUMstring_timeNoDot (time));
 	}
 END
 
@@ -845,16 +856,16 @@ FORM (LPC_to_Spectrogram, U"LPC: To Spectrogram", U"LPC: To Spectrogram...")
 DO
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_to_Spectrogram (me, GET_REAL (U"Minimum frequency resolution"),
-			GET_REAL (U"Bandwidth reduction"), GET_REAL (U"De-emphasis frequency")), my name);
+		autoSpectrogram thee = LPC_to_Spectrogram (me, GET_REAL (U"Minimum frequency resolution"), GET_REAL (U"Bandwidth reduction"), GET_REAL (U"De-emphasis frequency"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 FORM (LPC_to_VocalTract_special, U"LPC: To VocalTract", U"LPC: To VocalTract (slice, special)...")
 	REAL (U"Time (s)", U"0.0")
 	REAL (U"Glottal damping", U"0.1")
-	BOOLEAN (U"Radiation damping", 1)
-	BOOLEAN (U"Internal damping", 1)
+	BOOLEAN (U"Radiation damping", true)
+	BOOLEAN (U"Internal damping", true)
 	OK
 DO
 	double glottalDamping = GET_REAL (U"Glottal damping");
@@ -863,7 +874,8 @@ DO
 	LOOP {
 		iam (LPC);
 		double time = GET_REAL (U"Time");
-		praat_new (LPC_to_VocalTract (me, time, glottalDamping, radiationDamping, internalDamping), my name, NUMstring_timeNoDot (time));
+		autoVocalTract thee = LPC_to_VocalTract (me, time, glottalDamping, radiationDamping, internalDamping);
+		praat_new (thee.move(), my name, NUMstring_timeNoDot (time));
 	}
 END
 
@@ -872,31 +884,35 @@ FORM (LPC_to_VocalTract, U"LPC: To VocalTract", U"LPC: To VocalTract (slice)..."
 	POSITIVE (U"Length (m)", U"0.17")
 	OK
 DO
+	double time = GET_REAL (U"Time");
 	LOOP {
 		iam (LPC);
-		double time = GET_REAL (U"Time");
-		praat_new (LPC_to_VocalTract (me, time, GET_REAL (U"Length")), my name, NUMstring_timeNoDot (time));
+		autoVocalTract thee = LPC_to_VocalTract (me, time, GET_REAL (U"Length"));
+		praat_new (thee.move(), my name, NUMstring_timeNoDot (time));
 	}
 END
 
 DIRECT (LPC_downto_Matrix_lpc)
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_downto_Matrix_lpc (me), my name, U"_lpc");
+		autoMatrix thee = LPC_downto_Matrix_lpc (me);
+		praat_new (thee.move(), my name, U"_lpc");
 	}
 END
 
 DIRECT (LPC_downto_Matrix_rc)
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_downto_Matrix_rc (me), my name, U"_rc");
+		autoMatrix thee = LPC_downto_Matrix_rc (me);
+		praat_new (thee.move(), my name, U"_rc");
 	}
 END
 
 DIRECT (LPC_downto_Matrix_area)
 	LOOP {
 		iam (LPC);
-		praat_new (LPC_downto_Matrix_area (me), my name, U"_area");
+		autoMatrix thee = LPC_downto_Matrix_area (me);
+		praat_new (thee.move(), my name, U"_area");
 	}
 END
 
@@ -913,7 +929,7 @@ DO
 		iam (Sound);
 		autoPowerCepstrogram thee = Sound_to_PowerCepstrogram (me, GET_REAL (U"Pitch floor"), GET_REAL (U"Time step"), GET_REAL(U"Maximum frequency"),
 			 GET_REAL (U"Pre-emphasis from"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -926,7 +942,7 @@ DO
 	LOOP {
 		iam (Sound);
 		autoPowerCepstrogram thee = Sound_to_PowerCepstrogram_hillenbrand (me, GET_REAL (U"Pitch floor"), GET_REAL (U"Time step"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 	
@@ -950,7 +966,7 @@ DO
 	}
 END
 
-static void Sound_to_LPC_addCommonFields (void *dia) {
+static void Sound_to_LPC_addCommonFields (UiForm dia) {
 	LABEL (U"", U"Warning 1:  for formant analysis, use \"To Formant\" instead.")
 	LABEL (U"", U"Warning 2:  if you do use \"To LPC\", you may want to resample first.")
 	LABEL (U"", U"Click Help for more details.")
@@ -961,7 +977,7 @@ static void Sound_to_LPC_addCommonFields (void *dia) {
 	REAL (U"Pre-emphasis frequency (Hz)", U"50.0")
 }
 
-static void Sound_to_LPC_checkCommonFields (void *dia, long *predictionOrder, double *analysisWindowDuration,
+static void Sound_to_LPC_checkCommonFields (UiForm dia, long *predictionOrder, double *analysisWindowDuration,
         double *timeStep, double *preemphasisFrequency) {
 	*predictionOrder = GET_INTEGER (U"Prediction order");
 	*analysisWindowDuration = GET_REAL (U"Window length");
@@ -981,7 +997,8 @@ DO
 	Sound_to_LPC_checkCommonFields (dia, & numberOfPoles, & analysisWindowDuration, & timeStep, &preemphasisFrequency);
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_LPC_auto (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency), my name);
+		autoLPC thee = Sound_to_LPC_auto (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -994,7 +1011,8 @@ DO
 	Sound_to_LPC_checkCommonFields (dia, & numberOfPoles, & analysisWindowDuration, & timeStep, & preemphasisFrequency);
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_LPC_covar (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency), my name);
+		autoLPC thee = Sound_to_LPC_covar (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -1007,7 +1025,8 @@ DO
 	Sound_to_LPC_checkCommonFields (dia, & numberOfPoles, & analysisWindowDuration, & timeStep, & preemphasisFrequency);
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_LPC_burg (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency), my name);
+		autoLPC thee = Sound_to_LPC_burg (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -1022,8 +1041,8 @@ DO
 	Sound_to_LPC_checkCommonFields (dia, & numberOfPoles, & analysisWindowDuration, &timeStep, & preemphasisFrequency);
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_LPC_marple (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency,
-		GET_REAL (U"Tolerance 1"), GET_REAL (U"Tolerance 2")), my name);
+		autoLPC thee = Sound_to_LPC_marple (me, numberOfPoles, analysisWindowDuration, timeStep, preemphasisFrequency, GET_REAL (U"Tolerance 1"), GET_REAL (U"Tolerance 2"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -1049,15 +1068,15 @@ DO
 	}
 END
 
-FORM (VocalTract_drawSegments, U"VocalTract: Draw segments", 0)
+FORM (VocalTract_drawSegments, U"VocalTract: Draw segments", nullptr)
 	POSITIVE (U"Maximum length (cm)", U"20.0")
 	POSITIVE (U"Maximum area (cm^2)", U"90.0")
-	BOOLEAN (U"Closed at glottis", 1)
+	BOOLEAN (U"Closed at glottis", true)
 	OK
 DO
 	autoPraatPicture picture;
-	double maxLength = GET_REAL (U"Maximum length") / 100;
-	double maxArea = GET_REAL (U"Maximum area") / 10000;
+	double maxLength = GET_REAL (U"Maximum length") / 100.0;
+	double maxArea = GET_REAL (U"Maximum area") / 10000.0;
 	bool closedAtGlottis = GET_INTEGER (U"Closed at glottis");
 	LOOP {
 		iam (VocalTract);
@@ -1072,7 +1091,7 @@ DIRECT (VocalTract_getLength)
 	}
 END
 
-FORM (VocalTract_setLength, U"", 0)
+FORM (VocalTract_setLength, U"", nullptr)
 	POSITIVE (U"New length (m)", U"0.17")
 	OK
 DO
@@ -1083,7 +1102,7 @@ DO
 	}
 END
 
-FORM (VocalTract_to_VocalTractTier, U"VocalTract: To VocalTractTier", 0)
+FORM (VocalTract_to_VocalTractTier, U"VocalTract: To VocalTractTier", nullptr)
 	REAL (U"Tier start time (s)", U"0.0")
 	REAL (U"Tier end time (s)", U"1.0")
 	REAL (U"Insert at time (s)", U"0.5")
@@ -1097,7 +1116,7 @@ DO
 	LOOP {
 		iam (VocalTract);
 		autoVocalTractTier thee = VocalTract_to_VocalTractTier (me, xmin, xmax, time);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -1105,46 +1124,49 @@ DIRECT (VocalTractTier_help)
 	Melder_help (U"VocalTractTier");
 END
 
-FORM (VocalTractTier_to_LPC, U"VocalTractTier: To LPC", 0)
+FORM (VocalTractTier_to_LPC, U"VocalTractTier: To LPC", nullptr)
 	POSITIVE (U"Time step", U"0.005")
 	OK
 DO
 	LOOP {
 		iam (VocalTractTier);
-		praat_new (VocalTractTier_to_LPC (me, GET_REAL (U"Time step")), my name);
+		autoLPC thee = VocalTractTier_to_LPC (me, GET_REAL (U"Time step"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (VocalTractTier_to_VocalTract, U"", 0)
+FORM (VocalTractTier_to_VocalTract, U"", nullptr)
 	REAL (U"Time (s)", U"0.1")
 	OK
 DO
 	double time = GET_REAL (U"Time");
 	LOOP {
 		iam (VocalTractTier);
-		praat_new (VocalTractTier_to_VocalTract (me, time), my name);
+		autoVocalTract thee = VocalTractTier_to_VocalTract (me, time);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (VocalTractTier_addVocalTract, U"VocalTractTier: Add VocalTract", 0)
+FORM (VocalTractTier_addVocalTract, U"VocalTractTier: Add VocalTract", nullptr)
 	REAL (U"Time", U"0.1")
 	OK
 DO
 	VocalTractTier me = FIRST (VocalTractTier);
 	VocalTract thee = FIRST (VocalTract);
-	VocalTractTier_addVocalTract (me, GET_REAL (U"Time"), thee);
+	VocalTractTier_addVocalTract_copy (me, GET_REAL (U"Time"), thee);
 	praat_dataChanged (me);
 END
 
 /******************* LPC & Sound *************************************/
 
 FORM (LPC_and_Sound_filter, U"LPC & Sound: Filter", U"LPC & Sound: Filter...")
-	BOOLEAN (U"Use LPC gain", 0)
+	BOOLEAN (U"Use LPC gain", false)
 	OK
 DO
 	LPC me = FIRST (LPC);
 	Sound s = FIRST (Sound);
-	praat_new (LPC_and_Sound_filter (me , s, GET_INTEGER (U"Use LPC gain")), my name);
+	autoSound thee = LPC_and_Sound_filter (me , s, GET_INTEGER (U"Use LPC gain"));
+	praat_new (thee.move(), my name);
 END
 
 FORM (LPC_and_Sound_filterWithFilterAtTime, U"LPC & Sound: Filter with one filter at time",
@@ -1159,13 +1181,15 @@ DO
 	LPC me = FIRST (LPC);
 	Sound s = FIRST (Sound);
 	long channel = GET_INTEGER (U"Channel") - 1;
-	praat_new (LPC_and_Sound_filterWithFilterAtTime (me , s, channel, GET_REAL (U"Use filter at time")), my name);
+	autoSound thee = LPC_and_Sound_filterWithFilterAtTime (me , s, channel, GET_REAL (U"Use filter at time"));
+	praat_new (thee.move(), my name);
 END
 
 DIRECT (LPC_and_Sound_filterInverse)
 	LPC me = FIRST (LPC);
 	Sound s = FIRST (Sound);
-	praat_new (LPC_and_Sound_filterInverse (me , s), my name);
+	autoSound thee = LPC_and_Sound_filterInverse (me , s);
+	praat_new (thee.move(), my name);
 END
 
 FORM (LPC_and_Sound_filterInverseWithFilterAtTime, U"LPC & Sound: Filter (inverse) with filter at time",
@@ -1180,7 +1204,8 @@ DO
 	LPC me = FIRST (LPC);
 	Sound s = FIRST (Sound);
 	long channel = GET_INTEGER (U"Channel") - 1;
-	praat_new (LPC_and_Sound_filterInverseWithFilterAtTime (me , s, channel, GET_REAL (U"Use filter at time")), my name);
+	autoSound thee = LPC_and_Sound_filterInverseWithFilterAtTime (me , s, channel, GET_REAL (U"Use filter at time"));
+	praat_new (thee.move(), my name);
 END
 
 FORM (LPC_and_Sound_to_LPC_robust, U"Robust LPC analysis", U"LPC & Sound: To LPC (robust)...")
@@ -1189,7 +1214,7 @@ FORM (LPC_and_Sound_to_LPC_robust, U"Robust LPC analysis", U"LPC & Sound: To LPC
 	POSITIVE (U"Number of std. dev.", U"1.5")
 	NATURAL (U"Maximum number of iterations", U"5")
 	REAL (U"Tolerance", U"0.000001")
-	BOOLEAN (U"Variable location", 0)
+	BOOLEAN (U"Variable location", false)
 	OK
 DO
 	LPC me = FIRST (LPC);
@@ -1201,9 +1226,9 @@ END
 
 extern void praat_TimeTier_query_init (ClassInfo klas);
 extern void praat_TimeTier_modify_init (ClassInfo klas);
-void praat_uvafon_LPC_init (void);
-void praat_uvafon_LPC_init (void) {
-	Thing_recognizeClassesByName (classCepstrumc, classPowerCepstrum, classCepstrogram, classPowerCepstrogram, classLPC, classLFCC, classMFCC, classVocalTractTier, NULL);
+void praat_uvafon_LPC_init ();
+void praat_uvafon_LPC_init () {
+	Thing_recognizeClassesByName (classCepstrumc, classPowerCepstrum, classCepstrogram, classPowerCepstrogram, classLPC, classLFCC, classMFCC, classVocalTractTier, nullptr);
 
 	praat_addAction1 (classPowerCepstrum, 0, U"PowerCepstrum help", 0, 0, DO_PowerCepstrum_help);
 	praat_addAction1 (classPowerCepstrum, 0, U"Draw...", 0, 0, DO_PowerCepstrum_draw);
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f7ebcdd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,147 @@
+# Praat: doing phonetics by computer
+
+Most information on how the program works is in its manual and on http://www.praat.org,
+which is also where you can download the latest binary executables from.
+
+## 1. Compiling the source code
+
+You need the Praat source code only in the following cases:
+
+1. you want to extend Praat’s functionality by adding C or C++ code to it; or
+2. you want to understand or reuse Praat’s source code; or
+3. you want to compile Praat for a computer for which we do not provide binary executables,
+e.g. Linux for non-Intel computers, FreeBSD, HP-UX, SGI, or SPARC Solaris.
+
+Before trying to dive into Praat’s source code, you should be familiar with the working of the Praat program
+and with writing Praat scripts. The Praat program can be downloaded from http://www.praat.org.
+
+### 1.1. License
+
+All of the code is available on GitHub under the
+[GNU General Public License](http://www.fon.hum.uva.nl/praat/GNU_General_Public_License.txt).
+Of course, any improvements are welcomed by the authors.
+
+### 1.2. Downloading the archive
+
+To download the latest source code of Praat from GitHub,
+click on the *zip* or *tar.gz* archive at the latest release,
+or clone ("fork") the praat/praat repository at any later change.
+
+### 1.3. Steps to take if you want to extend Praat
+
+First make sure that the source code can be compiled as is.
+Then add your own buttons by editing `main/main_Praat.cpp` or `fon/praat_Fon.cpp`.
+Consult the manual page on [Programming](http://www.fon.hum.uva.nl/praat/manual/Programming_with_Praat.html).
+
+### 1.4. The programming language
+
+Most of the source code is written in C++, but some parts are written in C.
+The code requires that your compiler supports C99 and C++11 (for e.g. `char32_t` and rvalue references).
+
+### 1.5. Compiling for Windows
+
+Install Cygwin (on a 64-bit computer),
+and under Cygwin install the Devel packages i686-w64-mingw32 (for 32-bit targets)
+and/or x86_64-w64-mingw32 (for 64-bit targets).
+Move the Praat sources directory somewhere in your `/home/yourname` tree.
+Go into this sources directory (where the folders `fon` and `sys` are) and type
+
+    cp makefiles/makefile.defs.mingw32 ./makefile.defs
+
+if you want to build Praat's 32-bit edition, or
+
+    cp makefiles/makefile.defs.mingw64 ./makefile.defs
+
+if you want to build Praat's 64-bit edition. Then type `make` to build `Praat.exe`
+(use `make -j4` to speed this up, e.g. to use 4 processors in parallel).
+
+Cross-compiling for Windows: use the [MinGW](http://www.mingw.org) compiler, perhaps on a Mac or Linux computer.
+You can find toolchains for 32 and 64 bits
+[here](http://sourceforge.net/projects/mingw-w64/files/) (look for Automated Builds).
+Install the GDI+ headers and the GDI+ library ([32-bit](http://www.fon.hum.uva.nl/praat/libgdiplus.a-32.zip);
+for 64-bit Windows just extract a GDI+ DLL from somewhere).
+Then copy the file `makefiles/makefile.defs.darmin32` or `makefiles/makefile.defs.darmin64`
+to the sources directory and rename it to `makefile.defs`.
+Then type `make`.
+
+### 1.6. Compiling for Macintosh
+
+Extract the *xcodeproj64.zip* file from the latest release into the directory that contains
+`sys`, `fon`, `dwtools` and so on. Then open the project `praat64.xcodeproj` in Xcode
+and choose Build or Run for the target `praat_mac64`.
+
+If you get an error message like “Code Signing Identity xxx does not match any valid, non-expired,
+code-signing certificate in your keychain”, then select the target `praat_mac64`, go to Info → Build,
+and switch “Code Signing Identity” to “Don’t Code Sign”,
+or sign with your own certificate if you have one as a registered Apple developer.
+
+If you get lots of errors saying “Expected unqualified-id” or “Unknown type name NSString”,
+then you may have to switch the Type of some .cpp file from “C++ Source” to “Objective-C++ Source”
+(under “Identity and Type” in the righthand sidebar).
+
+If you want to build the Praat library instead of the executable,
+try the target `praat_mac64_a` (static) or `praat_mac64_so` (dynamic).
+
+### 1.7. Compiling on Linux and other Unixes
+
+To set up the required system libraries, install some graphics and sound packages:
+
+	sudo apt-get install libgtk2.0-dev
+	sudo apt-get install libasound2-dev
+	sudo apt-get install libpulse-dev
+
+To set up your source tree for Linux, go to Praat's sources directory (where the folders `fon` and `sys` are) and type
+
+    cp makefiles/makefile.defs.linux.pulse ./makefile.defs
+
+To build the Praat executable, type `make`.
+If your Unix isn’t Linux, you may have to edit the library names in the makefile
+(you may need pthread, gtk-x11-2.0, gdk-x11-2.0, atk-1.0, pangoft2-1.0, gdk_pixbuf-2.0, m, pangocairo-1.0,
+cairo, gio-2.0, pango-1.0, freetype, fontconfig, gobject-2.0, gmodule-2.0, gthread-2.0, rt, glib-2.0, asound).
+
+When compiling Praat on an external supercomputer or so, you will not have sound.
+If you do have `libgtk2.0-dev` (and its dependencies), do
+
+    cp makefiles/makefile.defs.linux.silent ./makefile.defs
+
+Then type `make` to build the program. If your Unix isn’t Linux,
+you may have to edit the library names in the makefile (you may need pthread, gtk-x11-2.0, gdk-x11-2.0, atk-1.0,
+pangoft2-1.0, gdk_pixbuf-2.0, m, pangocairo-1.0, cairo, gio-2.0, pango-1.0, freetype, fontconfig, gobject-2.0,
+gmodule-2.0, gthread-2.0, rt, glib-2.0).
+
+## 2. Binary executables
+
+While the [Praat website](http://www.praat.org) contains the latest executable for all platforms that we support
+(or used to support), the releases on GitHub contain many older executables as well.
+
+The meaning of the names of binary files available on GitHub is as follows:
+
+### 2.1. Windows binaries
+- `praatXXXX_win64.zip`: zipped executable for 64-bit Windows (XP and higher)
+- `praatXXXX_win32.zip`: zipped executable for 32-bit Windows (XP and higher)
+- `praatconXXXX_win64.zip`: zipped executable for 64-bit Windows, console edition
+- `praatconXXXX_win32.zip`: zipped executable for 32-bit Windows, console edition
+- `praatconXXXX_win32sit.exe`: self-extracting StuffIt archive with executable for 32-bit Windows, console edition
+- `praatXXXX_win98.zip`: zipped executable for Windows 98
+- `praatXXXX_win98sit.exe`: self-extracting StuffIt archive with executable for Windows 98
+
+### 2.2. Mac binaries
+- `praatXXXX_mac64.dmg`: disk image with executable for 64-bit Intel Macs (Cocoa)
+- `praatXXXX_xcodeproj64.zip`: zipped Xcode project file for the 64-bit edition (Cocoa)
+- `praatXXXX_mac32.dmg`: disk image with executable for 32-bit Intel Macs (Carbon)
+- `praatXXXX_xcodeproj32.zip`: zipped Xcode project file for the 32-bit edition (Carbon)
+- `praatXXXX_macU.dmg`: disk image with universal executable for (32-bit) PPC and Intel Macs (Carbon)
+- `praatXXXX_macU.sit`: StuffIt archive with universal executable for (32-bit) PPC and Intel Macs (Carbon)
+- `praatXXXX_macU.zip`: zipped universal executable for (32-bit) PPC and Intel Macs (Carbon)
+- `praatXXXX_macX.zip`: zipped executable for MacOS X (PPC)
+- `praatXXXX_mac9.sit`: StuffIt archive with executable for MacOS 9
+- `praatXXXX_mac9.zip`: zipped executable for MacOS 9
+- `praatXXXX_mac7.sit`: StuffIt archive with executable for MacOS 7
+
+### 2.3. Unix binaries
+- `praatXXXX_linux64.tar.gz`: gzipped tarred executable for 64-bit Linux (GTK)
+- `praatXXXX_linux32.tar.gz`: gzipped tarred executable for 32-bit Linux (GTK)
+- `praatXXXX_linux_motif64.tar.gz`: gzipped tarred executable for 64-bit Linux (Motif)
+- `praatXXXX_linux_motif32.tar.gz`: gzipped tarred executable for 32-bit Linux (Motif)
+- `praatXXXX_solaris.tar.gz`: gzipped tarred executable for Solaris
+
diff --git a/artsynth/Art_Speaker.cpp b/artsynth/Art_Speaker.cpp
index b13b103..23d89db 100644
--- a/artsynth/Art_Speaker.cpp
+++ b/artsynth/Art_Speaker.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Art_Speaker.h"
diff --git a/artsynth/Art_Speaker.h b/artsynth/Art_Speaker.h
index d4f36e0..374a786 100644
--- a/artsynth/Art_Speaker.h
+++ b/artsynth/Art_Speaker.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Articulation.h"
diff --git a/artsynth/Art_Speaker_Delta.cpp b/artsynth/Art_Speaker_Delta.cpp
index a1e286a..671e7c6 100644
--- a/artsynth/Art_Speaker_Delta.cpp
+++ b/artsynth/Art_Speaker_Delta.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Art_Speaker_Delta.h"
diff --git a/artsynth/Art_Speaker_Delta.h b/artsynth/Art_Speaker_Delta.h
index 46e17a4..7192943 100644
--- a/artsynth/Art_Speaker_Delta.h
+++ b/artsynth/Art_Speaker_Delta.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Articulation.h"
diff --git a/artsynth/Art_Speaker_to_VocalTract.cpp b/artsynth/Art_Speaker_to_VocalTract.cpp
index 99d2391..d3970ca 100644
--- a/artsynth/Art_Speaker_to_VocalTract.cpp
+++ b/artsynth/Art_Speaker_to_VocalTract.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Delta.h"
@@ -22,32 +21,22 @@
 #include "Art_Speaker_Delta.h"
 #include "Art_Speaker_to_VocalTract.h"
 
-VocalTract Art_Speaker_to_VocalTract (Art art, Speaker speaker)
-{
-	VocalTract thee = NULL;
-	long isection;
+autoVocalTract Art_Speaker_to_VocalTract (Art art, Speaker speaker) {
+	autoDelta delta = Speaker_to_Delta (speaker);
+	Art_Speaker_intoDelta (art, speaker, delta.get());
 	double area [300];
-	int numberOfSections;
-	double sectionLength = 0.001;   // one millimetre
-	Delta delta = NULL;
-
-	delta = Speaker_to_Delta (speaker); if (! delta) goto end;
-	Art_Speaker_intoDelta (art, speaker, delta);
-	numberOfSections = 0;
-	for (isection = 1; isection <= 27; isection ++)
-	{
+	constexpr double sectionLength = 0.001;   // one millimetre
+	int numberOfSections = 0;
+	for (long isection = 1; isection <= 27; isection ++) {
 		Delta_Tube tube = delta -> tube + 37 + isection;
 		int numberOfConstantSections = lround (tube -> Dxeq / sectionLength);
 		double constantArea = tube -> Dyeq * tube -> Dzeq;
-		int jsection; for (jsection = 1; jsection <= numberOfConstantSections; jsection ++)
+		for (int jsection = 1; jsection <= numberOfConstantSections; jsection ++)
 			area [++ numberOfSections] = constantArea;
 	}
-	thee = VocalTract_create (numberOfSections, sectionLength); if (! thee) goto end;
-	for (isection = 1; isection <= numberOfSections; isection ++)
+	autoVocalTract thee = VocalTract_create (numberOfSections, sectionLength);
+	for (long isection = 1; isection <= numberOfSections; isection ++)
 		thy z [1] [isection] = area [isection];
-
-end:
-	forget (delta);
 	return thee;
 }
 
diff --git a/artsynth/Art_Speaker_to_VocalTract.h b/artsynth/Art_Speaker_to_VocalTract.h
index 4391b67..0677f48 100644
--- a/artsynth/Art_Speaker_to_VocalTract.h
+++ b/artsynth/Art_Speaker_to_VocalTract.h
@@ -1,26 +1,25 @@
 /* Art_Speaker_to_VocalTract.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Articulation.h"
 #include "Speaker.h"
 #include "VocalTract.h"
 
-VocalTract Art_Speaker_to_VocalTract (Art art, Speaker speaker);
+autoVocalTract Art_Speaker_to_VocalTract (Art art, Speaker speaker);
 
 /* End of file Art_Speaker_to_VocalTract.h */
diff --git a/artsynth/Articulation.cpp b/artsynth/Articulation.cpp
index 38ee2d3..13d79ba 100644
--- a/artsynth/Articulation.cpp
+++ b/artsynth/Articulation.cpp
@@ -1,20 +1,19 @@
 /* Articulation.cpp
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Articulation.h"
@@ -43,9 +42,9 @@
 #include "enums_getValue.h"
 #include "Articulation_enums.h"
 
-Thing_implement (Art, Data, 0);
+Thing_implement (Art, Daata, 0);
 
-Art Art_create (void) {
+autoArt Art_create () {
 	return Thing_new (Art);
 }
 
diff --git a/artsynth/Articulation.h b/artsynth/Articulation.h
index 4cd041f..bb13b96 100644
--- a/artsynth/Articulation.h
+++ b/artsynth/Articulation.h
@@ -2,21 +2,20 @@
 #define _Articulation_h_
 /* Articulation.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Art = Articulation */
@@ -28,9 +27,8 @@
 #include "Articulation_enums.h"
 
 #include "Articulation_def.h"
-oo_CLASS_CREATE (Art, Data);
 
-Art Art_create (void);
+autoArt Art_create ();
 /*
 	Return value:
 		an array of double, with indices from enum Art.
diff --git a/artsynth/Articulation_def.h b/artsynth/Articulation_def.h
index 6e5f9a2..9ce552d 100644
--- a/artsynth/Articulation_def.h
+++ b/artsynth/Articulation_def.h
@@ -1,25 +1,24 @@
 /* Articulation_def.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Art
-oo_DEFINE_CLASS (Art, Data)
+oo_DEFINE_CLASS (Art, Daata)
 
 	oo_DOUBLE_SET (art, kArt_muscle)
 
diff --git a/artsynth/Articulation_enums.h b/artsynth/Articulation_enums.h
index 8a31290..b6a5bc8 100644
--- a/artsynth/Articulation_enums.h
+++ b/artsynth/Articulation_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2009,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kArt_muscle, 0)
diff --git a/artsynth/Artword.cpp b/artsynth/Artword.cpp
index 73dc831..06920d4 100644
--- a/artsynth/Artword.cpp
+++ b/artsynth/Artword.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword.h"
@@ -38,14 +37,13 @@
 #include "oo_DESCRIPTION.h"
 #include "Artword_def.h"
 
-Thing_implement (Artword, Data, 0);
+Thing_implement (Artword, Daata, 0);
 
-Artword Artword_create (double totalTime) {
-	Artword me = Thing_new (Artword);
-	if (! me) return NULL;
+autoArtword Artword_create (double totalTime) {
+	autoArtword me = Thing_new (Artword);
 	my totalTime = totalTime;
 	for (int i = 1; i <= kArt_muscle_MAX; i ++)
-		Artword_setDefault (me, i);
+		Artword_setDefault (me.get(), i);
 	return me;
 }
 
@@ -114,8 +112,7 @@ void Artword_removeTarget (Artword me, int feature, int iTarget) {
 	else if (iTarget == f -> numberOfTargets)
 		f -> targets [f -> numberOfTargets] = 0.0;
 	else {
-		int i;
-		for (i = iTarget; i < f -> numberOfTargets; i ++) {
+		for (int i = iTarget; i < f -> numberOfTargets; i ++) {
 			f -> times [i] = f -> times [i + 1];
 			f -> targets [i] = f -> targets [i + 1];
 		}
@@ -136,7 +133,7 @@ void Artword_draw (Artword me, Graphics g, int feature, int garnish) {
 		autoNUMvector <double> x (1, numberOfTargets);
 		autoNUMvector <double> y (1, numberOfTargets);
 		Graphics_setInner (g);
-		Graphics_setWindow (g, 0, my totalTime, -1, 1);
+		Graphics_setWindow (g, 0, my totalTime, -1.0, 1.0);
 		for (int i = 1; i <= numberOfTargets; i ++) {
 			x [i] = my data [feature]. times [i];
 			y [i] = my data [feature]. targets [i];
@@ -147,10 +144,10 @@ void Artword_draw (Artword me, Graphics g, int feature, int garnish) {
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-		Graphics_marksLeft (g, 3, TRUE, TRUE, TRUE);
-		Graphics_textTop (g, FALSE, kArt_muscle_getText (feature));
-		Graphics_textBottom (g, TRUE, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 3, true, true, true);
+		Graphics_textTop (g, false, kArt_muscle_getText (feature));
+		Graphics_textBottom (g, true, U"Time (s)");
 	}
 }
 
diff --git a/artsynth/Artword.h b/artsynth/Artword.h
index 431c0c2..b3a49d8 100644
--- a/artsynth/Artword.h
+++ b/artsynth/Artword.h
@@ -2,30 +2,28 @@
 #define _Artword_h_
 /* Artword.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Articulation.h"
 #include "Graphics.h"
 
 #include "Artword_def.h"
-oo_CLASS_CREATE (Artword, Data);
 
-Artword Artword_create (double totalTime);
+autoArtword Artword_create (double totalTime);
 
 void Artword_setDefault (Artword me, int feature);
 /*
@@ -49,7 +47,7 @@ void Artword_removeTarget (Artword me, int feature, int iTarget);
 		If "iTarget" is the first or the last target in the list,
 		only set the target to zero (begin and end targets remain).
 	Preconditions:
-		self != NULL;
+		self != nullptr;
 		feature in enum Art_MUSCLE;
 		iTarget >= 1;
 		iTarget <= self -> data [feature]. numberOfTargets;
@@ -65,21 +63,13 @@ void Artword_removeTarget (Artword me, int feature, int iTarget);
 				self -> data [feature]. targets [i] == old self -> data [feature]. targets [i + 1];	
 */
 
-/*
-	Implemented methods:
-
-		int Artword::writeText (I, FILE *f)
-			writes an Artword as text to the stream f.
-
-*/
-
 void Artword_intoArt (Artword me, Art art, double tim);
 /*
 	Function:
 		Linear interpolation between targets, into an existing Art.
 	Preconditions:
-		me != NULL;
-		art != NULL;
+		me != nullptr;
+		art != nullptr;
 */
 	
 void Artword_draw (Artword me, Graphics graphics, int feature, int garnish);
diff --git a/artsynth/ArtwordEditor.cpp b/artsynth/ArtwordEditor.cpp
index 667497a..0386866 100644
--- a/artsynth/ArtwordEditor.cpp
+++ b/artsynth/ArtwordEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ArtwordEditor.h"
@@ -22,8 +21,7 @@
 
 Thing_implement (ArtwordEditor, Editor, 0);
 
-void structArtwordEditor :: v_destroy () {
-	forget (graphics);
+void structArtwordEditor :: v_destroy () noexcept {
 	ArtwordEditor_Parent :: v_destroy ();
 }
 
@@ -36,16 +34,14 @@ static void updateList (ArtwordEditor me) {
 			Melder_cat (Melder_single (a -> times [i]), U"  ", Melder_single (a -> targets [i])),
 			i);
 	}
-	Graphics_updateWs (my graphics);
+	Graphics_updateWs (my graphics.get());
 }
 
-static void gui_button_cb_removeTarget (I, GuiButtonEvent event) {
-	(void) event;
-	iam (ArtwordEditor);
+static void gui_button_cb_removeTarget (ArtwordEditor me, GuiButtonEvent /* event */) {
 	Artword artword = (Artword) my data;
 	long numberOfSelectedPositions;
 	long *selectedPositions = GuiList_getSelectedPositions (my list, & numberOfSelectedPositions);   // BUG memory
-	if (selectedPositions != NULL) {
+	if (selectedPositions) {
 		for (long ipos = numberOfSelectedPositions; ipos > 0; ipos --)
 			Artword_removeTarget (artword, my feature, selectedPositions [ipos]);
 	}
@@ -54,9 +50,7 @@ static void gui_button_cb_removeTarget (I, GuiButtonEvent event) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_button_cb_addTarget (I, GuiButtonEvent event) {
-	(void) event;
-	iam (ArtwordEditor);
+static void gui_button_cb_addTarget (ArtwordEditor me, GuiButtonEvent /* event */) {
 	Artword artword = (Artword) my data;
 	char32 *timeText = GuiText_getString (my time);
 	double tim = Melder_atof (timeText);
@@ -82,43 +76,39 @@ static void gui_button_cb_addTarget (I, GuiButtonEvent event) {
 	} else {
 		GuiList_insertItem (my list, itemText, i);
 	}
-	Graphics_updateWs (my graphics);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_radiobutton_cb_toggle (I, GuiRadioButtonEvent event) {
-	iam (ArtwordEditor);
+static void gui_radiobutton_cb_toggle (ArtwordEditor me, GuiRadioButtonEvent event) {
 	my feature = event -> position;
 	Melder_assert (my feature > 0);
 	Melder_assert (my feature <= kArt_muscle_MAX);
 	updateList (me);
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (ArtwordEditor);
-	(void) event;
-	if (my graphics == NULL) return;
+static void gui_drawingarea_cb_expose (ArtwordEditor me, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! my graphics) return;
 	Artword artword = (Artword) my data;
-	Graphics_clearWs (my graphics);
-	Artword_draw (artword, my graphics, my feature, TRUE);
+	Graphics_clearWs (my graphics.get());
+	Artword_draw (artword, my graphics.get(), my feature, true);
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (ArtwordEditor);
-	if (my graphics == NULL) return;
+static void gui_drawingarea_cb_click (ArtwordEditor me, GuiDrawingArea_ClickEvent event) {
+	if (! my graphics) return;
 	Artword artword = (Artword) my data;
-	Graphics_setWindow (my graphics, 0, artword -> totalTime, -1.0, 1.0);
-	Graphics_setInner (my graphics);
+	Graphics_setWindow (my graphics.get(), 0, artword -> totalTime, -1.0, 1.0);
+	Graphics_setInner (my graphics.get());
 	double xWC, yWC;
-	Graphics_DCtoWC (my graphics, event -> x, event -> y, & xWC, & yWC);
-	Graphics_unsetInner (my graphics);
+	Graphics_DCtoWC (my graphics.get(), event -> x, event -> y, & xWC, & yWC);
+	Graphics_unsetInner (my graphics.get());
 	GuiText_setString (my time,  Melder_fixed (xWC, 6));
 	GuiText_setString (my value, Melder_fixed (yWC, 6));
 }
 
 void structArtwordEditor :: v_dataChanged () {
 	updateList (this);
-	Graphics_updateWs (graphics);
+	Graphics_updateWs (graphics.get());
 }
 
 void structArtwordEditor :: v_createChildren () {
@@ -126,12 +116,12 @@ void structArtwordEditor :: v_createChildren () {
 	GuiLabel_createShown (d_windowForm, 40, 100, dy + 3, dy + 3 + Gui_LABEL_HEIGHT, U"Targets:", 0);
 	GuiLabel_createShown (d_windowForm, 5, 65, dy + 20, dy + 20 + Gui_LABEL_HEIGHT, U"Times:", 0);
 	GuiLabel_createShown (d_windowForm, 80, 140, dy + 20, dy + 20 + Gui_LABEL_HEIGHT, U"Values:", 0);
-	list = GuiList_createShown (d_windowForm, 0, 140, dy + 40, dy + 340, true, NULL);
+	list = GuiList_createShown (d_windowForm, 0, 140, dy + 40, dy + 340, true, nullptr);
 
 	GuiButton_createShown (d_windowForm, 10, 130, dy + 410, dy + 410 + Gui_PUSHBUTTON_HEIGHT, U"Remove target", gui_button_cb_removeTarget, this, 0);
 
 	drawingArea = GuiDrawingArea_createShown (d_windowForm, 170, 470, dy + 10, dy + 310,
-		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, NULL, this, 0);
+		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, nullptr, this, 0);
 
 	GuiLabel_createShown (d_windowForm, 220, 270, dy + 340, dy + 340 + Gui_LABEL_HEIGHT, U"Time:", 0);
 	time = GuiText_createShown (d_windowForm, 270, 370, dy + 340, dy + 340 + Gui_TEXTFIELD_HEIGHT, 0);
@@ -154,14 +144,14 @@ void structArtwordEditor :: v_createChildren () {
 	GuiRadioButton_set (button [feature]);
 }
 
-ArtwordEditor ArtwordEditor_create (const char32 *title, Artword data) {
+autoArtwordEditor ArtwordEditor_create (const char32 *title, Artword data) {
 	try {
 		autoArtwordEditor me = Thing_new (ArtwordEditor);
-		Editor_init (me.peek(), 20, 40, 650, 600, title, data);
+		Editor_init (me.get(), 20, 40, 650, 600, title, data);
 		//XtUnmanageChild (my menuBar);
 		my graphics = Graphics_create_xmdrawingarea (my drawingArea);
-		updateList (me.peek());
-		return me.transfer();
+		updateList (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Artword window not created.");
 	}
diff --git a/artsynth/ArtwordEditor.h b/artsynth/ArtwordEditor.h
index efe2beb..4617eb1 100644
--- a/artsynth/ArtwordEditor.h
+++ b/artsynth/ArtwordEditor.h
@@ -4,33 +4,32 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
 #include "Artword.h"
 
 Thing_define (ArtwordEditor, Editor) {
-	Graphics graphics;
+	autoGraphics graphics;
 	int feature;
 	GuiList list;
 	GuiDrawingArea drawingArea;
 	GuiText time, value;
 	GuiRadioButton button [1 + kArt_muscle_MAX];
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_createChildren ()
 		override;
@@ -38,7 +37,7 @@ Thing_define (ArtwordEditor, Editor) {
 		override;
 };
 
-ArtwordEditor ArtwordEditor_create (const char32 *title, Artword data);
+autoArtwordEditor ArtwordEditor_create (const char32 *title, Artword data);
 
 /* End of file ArtwordEditor.h */
 #endif
diff --git a/artsynth/Artword_Speaker.cpp b/artsynth/Artword_Speaker.cpp
index 1a388cd..b28165c 100644
--- a/artsynth/Artword_Speaker.cpp
+++ b/artsynth/Artword_Speaker.cpp
@@ -1,20 +1,19 @@
 /* Artword_Speaker.cpp
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Art_Speaker.h"
@@ -22,26 +21,24 @@
 
 void Artword_Speaker_draw (Artword artword, Speaker speaker, Graphics g, int numberOfSteps) {
 	double oldLineWidth = Graphics_inqLineWidth (g);
-	Art art = Art_create ();
+	autoArt art = Art_create ();
 	for (int i = 0; i <= numberOfSteps; i ++) {
-		Artword_intoArt (artword, art, i * artword -> totalTime / numberOfSteps);
+		Artword_intoArt (artword, art.get(), i * artword -> totalTime / numberOfSteps);
 		Graphics_setLineWidth (g, 2 + i + i);
-		Art_Speaker_draw (art, speaker, g);
+		Art_Speaker_draw (art.get(), speaker, g);
 	}
-	forget (art);
 	Graphics_setLineWidth (g, oldLineWidth);
 }
 
-void Artword_Speaker_movie (Artword artword, Speaker speaker, Graphics g) {
-	double timeStep = 0.00001;
-	Art art = Art_create ();
+void Artword_Speaker_movie (Artword artword, Speaker speaker, Graphics graphics) {
+	constexpr double timeStep = 0.03;
+	autoArt art = Art_create ();
 	for (double tim = 0.0; tim < artword -> totalTime; tim += timeStep) {
-		Artword_intoArt (artword, art, tim);
-		Graphics_setViewport (g, 0, 1, 0, 1);
-		Graphics_clearWs (g);
-		Art_Speaker_draw (art, speaker, g);
-		Graphics_flushWs (g);
-		// TODO: we should pause here a bit
+		Artword_intoArt (artword, art.get(), tim);
+		Graphics_beginMovieFrame (graphics, & Graphics_WHITE);
+		Graphics_setWindow (graphics, 0.0, 1.0, 0.0, 1.0);
+		Art_Speaker_draw (art.get(), speaker, graphics);
+		Graphics_endMovieFrame (graphics, timeStep);
 	}
 }
 
diff --git a/artsynth/Artword_Speaker.h b/artsynth/Artword_Speaker.h
index 56802eb..eb13cfb 100644
--- a/artsynth/Artword_Speaker.h
+++ b/artsynth/Artword_Speaker.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword.h"
diff --git a/artsynth/Artword_Speaker_Sound.cpp b/artsynth/Artword_Speaker_Sound.cpp
index 02c4b92..8b8dbb2 100644
--- a/artsynth/Artword_Speaker_Sound.cpp
+++ b/artsynth/Artword_Speaker_Sound.cpp
@@ -1,53 +1,59 @@
 /* Artword_Speaker_Sound.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword_Speaker_Sound.h"
 #include "Artword_Speaker.h"
 #include "Art_Speaker.h"
 
-struct playInfo {
+Thing_define (Artword_Speaker_Sound_PlayInfo, Thing) {
 	Artword artword;
 	Speaker speaker;
 	Graphics graphics;
 };
 
-static int playCallback (void *playClosure, int phase, double tmin, double tmax, double t) {
-	struct playInfo *me = (struct playInfo *) playClosure;
-	static Art art;
-	(void) phase;
-	(void) tmin;
-	(void) tmax;
-	if (! art) art = Art_create ();
-	Artword_intoArt (my artword, art, t);
-	Graphics_clearWs (my graphics);
-	Art_Speaker_draw (art, my speaker, my graphics);
+Thing_implement (Artword_Speaker_Sound_PlayInfo, Thing, 0);
+
+static int playCallback (Artword_Speaker_Sound_PlayInfo me, int /* phase */, double /* tmin */, double /* tmax */, double t) {
+	static autoArt art;
+	if (! art)
+		art = Art_create ();
+	Artword_intoArt (my artword, art.get(), t);
+	Graphics_beginMovieFrame (my graphics, & Graphics_WHITE);
+	Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
+	Art_Speaker_draw (art.get(), my speaker, my graphics);
+	Graphics_endMovieFrame (my graphics, 0.0);
 	return 1;
 }
 
 void Artword_Speaker_Sound_movie (Artword artword, Speaker speaker, Sound sound, Graphics graphics) {
 	try {
-		static struct playInfo info;   // must be static!!!
-		info. artword = artword;
-		info. speaker = speaker;
-		info. graphics = graphics;
-		autoSound mySound = sound ? NULL : Sound_createSimple (1, artword -> totalTime, 44100);
-		Sound_play (sound ? sound : mySound.peek(), playCallback, & info);
+		static autoArtword_Speaker_Sound_PlayInfo info;
+		if (! info)
+			info = Thing_new (Artword_Speaker_Sound_PlayInfo);
+		info -> artword = artword;
+		info -> speaker = speaker;
+		info -> graphics = graphics;
+		if (sound) {
+			Sound_play (sound, playCallback, info.get());
+		} else {
+			autoSound silence = Sound_createSimple (1, artword -> totalTime, 44100.0);
+			Sound_play (silence.get(), playCallback, info.get());
+		}
 	} catch (MelderError) {
 		Melder_throw (artword, U" & ", speaker, U": movie not played.");
 	}
diff --git a/artsynth/Artword_Speaker_Sound.h b/artsynth/Artword_Speaker_Sound.h
index 2635c25..6c878a3 100644
--- a/artsynth/Artword_Speaker_Sound.h
+++ b/artsynth/Artword_Speaker_Sound.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword.h"
diff --git a/artsynth/Artword_Speaker_to_Sound.cpp b/artsynth/Artword_Speaker_to_Sound.cpp
index 28b7f1f..6a9b81d 100644
--- a/artsynth/Artword_Speaker_to_Sound.cpp
+++ b/artsynth/Artword_Speaker_to_Sound.cpp
@@ -1,32 +1,31 @@
 /* Artword_Speaker_to_Sound.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Speaker_to_Delta.h"
 #include "Art_Speaker_Delta.h"
 #include "Artword_Speaker_to_Sound.h"
 
-#define Dymin 0.00001
-#define criticalVelocity 10.0
+#define Dymin  0.00001
+#define criticalVelocity  10.0
 
-#define noiseFactor 0.1
+#define noiseFactor  0.1
 
-#define MONITOR_SAMPLES 11
+#define MONITOR_SAMPLES  100
 
 /* While debugging, some of these can be 1; otherwise, they are all 0: */
 #define EQUAL_TUBE_WIDTHS  0
@@ -36,135 +35,137 @@
 #define NO_RADIATION_DAMPING  0
 #define NO_BERNOULLI_EFFECT  0
 #define MASS_LEAPFROG  0
-#define B91 0
+#define B91  0
 
-Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
+autoSound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 	double fsamp, int oversampling,
-	Sound *out_w1, int iw1, Sound *out_w2, int iw2, Sound *out_w3, int iw3,
-	Sound *out_p1, int ip1, Sound *out_p2, int ip2, Sound *out_p3, int ip3,
-	Sound *out_v1, int iv1, Sound *out_v2, int iv2, Sound *out_v3, int iv3)
+	autoSound *out_w1, int iw1, autoSound *out_w2, int iw2, autoSound *out_w3, int iw3,
+	autoSound *out_p1, int ip1, autoSound *out_p2, int ip2, autoSound *out_p3, int ip3,
+	autoSound *out_v1, int iv1, autoSound *out_v2, int iv2, autoSound *out_v3, int iv3)
 {
 	try {
 		autoSound result = Sound_createSimple (1, artword -> totalTime, fsamp);
 		long numberOfSamples = result -> nx;
-		double minTract [1+78], maxTract [1+78];   /* For drawing. */
-		double Dt = 1 / fsamp / oversampling,
+		double minTract [1+78], maxTract [1+78];   // for drawing
+		double Dt = 1.0 / fsamp / oversampling,
 			rho0 = 1.14,
-			c = 353,
+			c = 353.0,
 			onebyc2 = 1.0 / (c * c),
 			rho0c2 = rho0 * c * c,
 			halfDt = 0.5 * Dt,
-			twoDt = 2 * Dt,
+			twoDt = 2.0 * Dt,
 			halfc2Dt = 0.5 * c * c * Dt,
-			twoc2Dt = 2 * c * c * Dt,
+			twoc2Dt = 2.0 * c * c * Dt,
 			onebytworho0 = 1.0 / (2.0 * rho0),
 			Dtbytworho0 = Dt / (2.0 * rho0);
 		double tension, rrad, onebygrad, totalVolume;
 		autoArt art = Art_create ();
-		long sample;
-		int n, m, M;
 		autoDelta delta = Speaker_to_Delta (speaker);
 		autoMelderMonitor monitor (U"Articulatory synthesis");
-		Artword_intoArt (artword, art.peek(), 0.0);
-		Art_Speaker_intoDelta (art.peek(), speaker, delta.peek());
-		M = delta -> numberOfTubes;
+		Artword_intoArt (artword, art.get(), 0.0);
+		Art_Speaker_intoDelta (art.get(), speaker, delta.get());
+		int M = delta -> numberOfTubes;
 		autoSound w1, w2, w3, p1, p2, p3, v1, v2, v3;
-		if (iw1 > 0 && iw1 <= M) w1.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iw1 = 0;
-		if (iw2 > 0 && iw2 <= M) w2.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iw2 = 0;
-		if (iw3 > 0 && iw3 <= M) w3.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iw3 = 0;
-		if (ip1 > 0 && ip1 <= M) p1.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else ip1 = 0;
-		if (ip2 > 0 && ip2 <= M) p2.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else ip2 = 0;
-		if (ip3 > 0 && ip3 <= M) p3.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else ip3 = 0;
-		if (iv1 > 0 && iv1 <= M) v1.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iv1 = 0;
-		if (iv2 > 0 && iv2 <= M) v2.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iv2 = 0;
-		if (iv3 > 0 && iv3 <= M) v3.reset (Sound_createSimple (1, artword -> totalTime, fsamp)); else iv3 = 0;
+		if (iw1 > 0 && iw1 <= M) w1 = Sound_createSimple (1, artword -> totalTime, fsamp); else iw1 = 0;
+		if (iw2 > 0 && iw2 <= M) w2 = Sound_createSimple (1, artword -> totalTime, fsamp); else iw2 = 0;
+		if (iw3 > 0 && iw3 <= M) w3 = Sound_createSimple (1, artword -> totalTime, fsamp); else iw3 = 0;
+		if (ip1 > 0 && ip1 <= M) p1 = Sound_createSimple (1, artword -> totalTime, fsamp); else ip1 = 0;
+		if (ip2 > 0 && ip2 <= M) p2 = Sound_createSimple (1, artword -> totalTime, fsamp); else ip2 = 0;
+		if (ip3 > 0 && ip3 <= M) p3 = Sound_createSimple (1, artword -> totalTime, fsamp); else ip3 = 0;
+		if (iv1 > 0 && iv1 <= M) v1 = Sound_createSimple (1, artword -> totalTime, fsamp); else iv1 = 0;
+		if (iv2 > 0 && iv2 <= M) v2 = Sound_createSimple (1, artword -> totalTime, fsamp); else iv2 = 0;
+		if (iv3 > 0 && iv3 <= M) v3 = Sound_createSimple (1, artword -> totalTime, fsamp); else iv3 = 0;
 		/* Initialize drawing. */
-		{ int i; for (i = 1; i <= 78; i ++) { minTract [i] = 100; maxTract [i] = -100; } }
+		for (int i = 1; i <= 78; i ++) {
+			minTract [i] = 100.0;
+			maxTract [i] = -100.0;
+		}
 		totalVolume = 0.0;
-		for (m = 1; m <= M; m ++) {
+		for (int m = 1; m <= M; m ++) {
 			Delta_Tube t = delta->tube + m;
 			if (! t -> left1 && ! t -> right1) continue;
-			t->Dx = t->Dxeq; t->dDxdt = 0;   /* 5.113 */
-			t->Dy = t->Dyeq; t->dDydt = 0;   /* 5.113 */
-			t->Dz = t->Dzeq;   /* 5.113 */
+			t->Dx = t->Dxeq; t->dDxdt = 0.0;   // 5.113 (numbers refer to equations in Boersma (1998)
+			t->Dy = t->Dyeq; t->dDydt = 0.0;   // 5.113
+			t->Dz = t->Dzeq;   // 5.113
 			t->A = t->Dz * ( t->Dy >= t->dy ? t->Dy + Dymin :
 				t->Dy <= - t->dy ? Dymin :
-				(t->dy + t->Dy) * (t->dy + t->Dy) / (4 * t->dy) + Dymin );   /* 4.4, 4.5 */
+				(t->dy + t->Dy) * (t->dy + t->Dy) / (4.0 * t->dy) + Dymin );   // 4.4, 4.5
 			#if EQUAL_TUBE_WIDTHS
 				t->A = 0.0001;
 			#endif
-			t->Jleft = t->Jright = 0;   /* 5.113 */
-			t->Qleft = t->Qright = rho0c2;   /* 5.113 */
-			t->pleft = t->pright = 0;   /* 5.114 */
-			t->Kleft = t->Kright = 0;   /* 5.114 */
-			t->V = t->A * t->Dx;   /* 5.114 */
+			t->Jleft = t->Jright = 0.0;   // 5.113
+			t->Qleft = t->Qright = rho0c2;   // 5.113
+			t->pleft = t->pright = 0.0;   // 5.114
+			t->Kleft = t->Kright = 0.0;   // 5.114
+			t->V = t->A * t->Dx;   // 5.114
 			totalVolume += t->V;
 		}
 		//Melder_casual (U"Starting volume: ", totalVolume * 1000, U" litres.");
-		for (sample = 1; sample <= numberOfSamples; sample ++) {
+		for (long sample = 1; sample <= numberOfSamples; sample ++) {
 			double time = (sample - 1) / fsamp;
-			Artword_intoArt (artword, art.peek(), time);
-			Art_Speaker_intoDelta (art.peek(), speaker, delta.peek());
+			Artword_intoArt (artword, art.get(), time);
+			Art_Speaker_intoDelta (art.get(), speaker, delta.get());
 			if (sample % MONITOR_SAMPLES == 0 && monitor.graphics()) {   // because we can be in batch
 				Graphics graphics = monitor.graphics();
 				double area [1+78];
-				Graphics_Viewport vp;
 				for (int i = 1; i <= 78; i ++) {
 					area [i] = delta -> tube [i]. A;
 					if (area [i] < minTract [i]) minTract [i] = area [i];
 					if (area [i] > maxTract [i]) maxTract [i] = area [i];
 				}
-				Graphics_clearWs (graphics);
+				Graphics_beginMovieFrame (graphics, & Graphics_WHITE);
 
-				vp = Graphics_insetViewport (monitor.graphics(), 0, 0.5, 0.5, 1);
-				Graphics_setWindow (graphics, 0, 1, 0, 0.05);
+				Graphics_Viewport vp = Graphics_insetViewport (monitor.graphics(), 0.0, 0.5, 0.5, 1.0);
+				Graphics_setWindow (graphics, 0.0, 1.0, 0.0, 0.05);
 				Graphics_setColour (graphics, Graphics_RED);
-				Graphics_function (graphics, minTract, 1, 35, 0, 0.9);
-				Graphics_function (graphics, maxTract, 1, 35, 0, 0.9);
+				Graphics_function (graphics, minTract, 1, 35, 0.0, 0.9);
+				Graphics_function (graphics, maxTract, 1, 35, 0.0, 0.9);
 				Graphics_setColour (graphics, Graphics_BLACK);
-				Graphics_function (graphics, area, 1, 35, 0, 0.9);
+				Graphics_function (graphics, area, 1, 35, 0.0, 0.9);
 				Graphics_setLineType (graphics, Graphics_DOTTED);
-				Graphics_line (graphics, 0, 0, 1, 0);
+				Graphics_line (graphics, 0.0, 0.0, 1.0, 0.0);
 				Graphics_setLineType (graphics, Graphics_DRAWN);
 				Graphics_resetViewport (graphics, vp);
 
 				vp = Graphics_insetViewport (graphics, 0, 0.5, 0, 0.5);
-				Graphics_setWindow (graphics, 0, 1, -0.000003, 0.00001);
+				Graphics_setWindow (graphics, 0.0, 1.0, -0.000003, 0.00001);
 				Graphics_setColour (graphics, Graphics_RED);
 				Graphics_function (graphics, minTract, 36, 37, 0.2, 0.8);
 				Graphics_function (graphics, maxTract, 36, 37, 0.2, 0.8);
 				Graphics_setColour (graphics, Graphics_BLACK);
 				Graphics_function (graphics, area, 36, 37, 0.2, 0.8);
 				Graphics_setLineType (graphics, Graphics_DOTTED);
-				Graphics_line (graphics, 0, 0, 1, 0);
+				Graphics_line (graphics, 0.0, 0.0, 1.0, 0.0);
 				Graphics_setLineType (graphics, Graphics_DRAWN);
 				Graphics_resetViewport (graphics, vp);
 
-				vp = Graphics_insetViewport (graphics, 0.5, 1, 0.5, 1);
-				Graphics_setWindow (graphics, 0, 1, 0, 0.001);
+				vp = Graphics_insetViewport (graphics, 0.5, 1.0, 0.5, 1.0);
+				Graphics_setWindow (graphics, 0.0, 1.0, 0.0, 0.001);
 				Graphics_setColour (graphics, Graphics_RED);
-				Graphics_function (graphics, minTract, 38, 64, 0, 1);
-				Graphics_function (graphics, maxTract, 38, 64, 0, 1);
+				Graphics_function (graphics, minTract, 38, 64, 0.0, 1.0);
+				Graphics_function (graphics, maxTract, 38, 64, 0.0, 1.0);
 				Graphics_setColour (graphics, Graphics_BLACK);
-				Graphics_function (graphics, area, 38, 64, 0, 1);
+				Graphics_function (graphics, area, 38, 64, 0.0, 1.0);
 				Graphics_setLineType (graphics, Graphics_DOTTED);
-				Graphics_line (graphics, 0, 0, 1, 0);
+				Graphics_line (graphics, 0.0, 0.0, 1.0, 0.0);
 				Graphics_setLineType (graphics, Graphics_DRAWN);
 				Graphics_resetViewport (graphics, vp);
 
-				vp = Graphics_insetViewport (graphics, 0.5, 1, 0, 0.5);
-				Graphics_setWindow (graphics, 0, 1, 0.001, 0);
+				vp = Graphics_insetViewport (graphics, 0.5, 1.0, 0.0, 0.5);
+				Graphics_setWindow (graphics, 0.0, 1.0, 0.001, 0.0);
 				Graphics_setColour (graphics, Graphics_RED);
-				Graphics_function (graphics, minTract, 65, 78, 0.5, 1);
-				Graphics_function (graphics, maxTract, 65, 78, 0.5, 1);
+				Graphics_function (graphics, minTract, 65, 78, 0.5, 1.0);
+				Graphics_function (graphics, maxTract, 65, 78, 0.5, 1.0);
 				Graphics_setColour (graphics, Graphics_BLACK);
-				Graphics_function (graphics, area, 65, 78, 0.5, 1);
+				Graphics_function (graphics, area, 65, 78, 0.5, 1.0);
 				Graphics_setLineType (graphics, Graphics_DRAWN);
 				Graphics_resetViewport (graphics, vp);
+
+				Graphics_endMovieFrame (graphics, 0.0);
 				Melder_monitor ((double) sample / numberOfSamples, U"Articulatory synthesis: ", Melder_half (time), U" seconds");
 			}
-			for (n = 1; n <= oversampling; n ++) {
-				for (m = 1; m <= M; m ++) {
+			for (int n = 1; n <= oversampling; n ++) {
+				for (int m = 1; m <= M; m ++) {
 					Delta_Tube t = delta -> tube + m;
 					if (! t -> left1 && ! t -> right1) continue;
 
@@ -173,26 +174,26 @@ Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 					#if CONSTANT_TUBE_LENGTHS
 						t->Dxnew = t->Dx;
 					#else
-						t->dDxdtnew = (t->dDxdt + Dt * 10000 * (t->Dxeq - t->Dx)) /
-							(1 + 200 * Dt);   /* Critical damping, 10 ms. */
+						t->dDxdtnew = (t->dDxdt + Dt * 10000.0 * (t->Dxeq - t->Dx)) /
+							(1.0 + 200.0 * Dt);   // critical damping, 10 ms
 						t->Dxnew = t->Dx + t->dDxdtnew * Dt;
 					#endif
 					/* 3-way: equal lengths. */
 					/* This requires left tubes to be processed before right tubes. */
 					if (t->left1 && t->left1->right2) t->Dxnew = t->left1->Dxnew;
 					t->Dz = t->Dzeq;   /* immediate... */
-					t->eleft = (t->Qleft - t->Kleft) * t->V;   /* 5.115 */
-					t->eright = (t->Qright - t->Kright) * t->V;   /* 5.115 */
-					t->e = 0.5 * (t->eleft + t->eright);   /* 5.116 */
-					t->p = 0.5 * (t->pleft + t->pright);   /* 5.116 */
-					t->DeltaP = t->e / t->V - rho0c2;   /* 5.117 */
-					t->v = t->p / (rho0 + onebyc2 * t->DeltaP);   /* 5.118 */
+					t->eleft = (t->Qleft - t->Kleft) * t->V;   // 5.115
+					t->eright = (t->Qright - t->Kright) * t->V;   // 5.115
+					t->e = 0.5 * (t->eleft + t->eright);   // 5.116
+					t->p = 0.5 * (t->pleft + t->pright);   // 5.116
+					t->DeltaP = t->e / t->V - rho0c2;   // 5.117
+					t->v = t->p / (rho0 + onebyc2 * t->DeltaP);   // 5.118
 					{
 						double dDy = t->Dyeq - t->Dy;
 						double cubic = t->k3 * dDy * dDy;
 						Delta_Tube l1 = t->left1, l2 = t->left2, r1 = t->right1, r2 = t->right2;
 						tension = dDy * (t->k1 + cubic);
-						t->B = 2 * t->Brel * sqrt (t->mass * (t->k1 + 3 * cubic));
+						t->B = 2.0 * t->Brel * sqrt (t->mass * (t->k1 + 3.0 * cubic));
 						if (t->k1left1 != 0.0 && l1)
 							tension += t->k1left1 * t->k1 * (dDy - (l1->Dyeq - l1->Dy));
 						if (t->k1left2 != 0.0 && l2)
@@ -205,157 +206,157 @@ Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 					if (t->Dy < t->dy) {
 						if (t->Dy >= - t->dy) {
 							double dDy = t->dy - t->Dy, dDy2 = dDy * dDy;
-							tension += dDy2 / (4 * t->dy) * (t->s1 + 0.5 * t->s3 * dDy2);
-							t->B += 2 * dDy / (2 * t->dy) *
+							tension += dDy2 / (4.0 * t->dy) * (t->s1 + 0.5 * t->s3 * dDy2);
+							t->B += 2.0 * dDy / (2.0 * t->dy) *
 								sqrt (t->mass * (t->s1 + t->s3 * dDy2));
 						} else {
 							tension -= t->Dy * (t->s1 + t->s3 * (t->Dy * t->Dy + t->dy * t->dy));
-							t->B += 2 * sqrt (t->mass * (t->s1 + t->s3 * (3 * t->Dy * t->Dy + t->dy * t->dy)));
+							t->B += 2.0 * sqrt (t->mass * (t->s1 + t->s3 * (3.0 * t->Dy * t->Dy + t->dy * t->dy)));
 						}
 					}
-					t->dDydtnew = (t->dDydt + Dt / t->mass * (tension + 2 * t->DeltaP * t->Dz * t->Dx)) /
-						(1 + t->B * Dt / t->mass);   /* 5.119 */
-					t->Dynew = t->Dy + t->dDydtnew * Dt;   /* 5.119 */
+					t->dDydtnew = (t->dDydt + Dt / t->mass * (tension + 2.0 * t->DeltaP * t->Dz * t->Dx)) /
+						(1.0 + t->B * Dt / t->mass);   // 5.119
+					t->Dynew = t->Dy + t->dDydtnew * Dt;   // 5.119
 					#if NO_MOVING_WALLS
 						t->Dynew = t->Dy;
 					#endif
 					t->Anew = t->Dz * ( t->Dynew >= t->dy ? t->Dynew + Dymin :
 						t->Dynew <= - t->dy ? Dymin :
-						(t->dy + t->Dynew) * (t->dy + t->Dynew) / (4 * t->dy) + Dymin );   /* 4.4, 4.5 */
+						(t->dy + t->Dynew) * (t->dy + t->Dynew) / (4.0 * t->dy) + Dymin );   // 4.4, 4.5
 					#if EQUAL_TUBE_WIDTHS
 						t->Anew = 0.0001;
 					#endif
-					t->Ahalf = 0.5 * (t->A + t->Anew);   /* 5.120 */
-					t->Dxhalf = 0.5 * (t->Dxnew + t->Dx);   /* 5.121 */
-					t->Vnew = t->Anew * t->Dxnew;   /* 5.128 */
+					t->Ahalf = 0.5 * (t->A + t->Anew);   // 5.120
+					t->Dxhalf = 0.5 * (t->Dxnew + t->Dx);   // 5.121
+					t->Vnew = t->Anew * t->Dxnew;   // 5.128
 					{ double oneByDyav = t->Dz / t->A;
-					/*t->R = 12 * 1.86e-5 * t->parallel * t->parallel * oneByDyav * oneByDyav;*/
-					if (t->Dy < 0)
-						t->R = 12 * 1.86e-5 / (Dymin * Dymin + t->dy * t->dy);
+					/*t->R = 12.0 * 1.86e-5 * t->parallel * t->parallel * oneByDyav * oneByDyav;*/
+					if (t->Dy < 0.0)
+						t->R = 12.0 * 1.86e-5 / (Dymin * Dymin + t->dy * t->dy);
 					else
-						t->R = 12 * 1.86e-5 * t->parallel * t->parallel /
+						t->R = 12.0 * 1.86e-5 * t->parallel * t->parallel /
 							((t->Dy + Dymin) * (t->Dy + Dymin) + t->dy * t->dy);
 					t->R += 0.3 * t->parallel * oneByDyav;   /* 5.23 */ }
-					t->r = (1 + t->R * Dt / rho0) * t->Dxhalf / t->Anew;   /* 5.122 */
-					t->ehalf = t->e + halfc2Dt * (t->Jleft - t->Jright);   /* 5.123 */
-					t->phalf = (t->p + halfDt * (t->Qleft - t->Qright) / t->Dx) / (1 + Dtbytworho0 * t->R);   /* 5.123 */
+					t->r = (1.0 + t->R * Dt / rho0) * t->Dxhalf / t->Anew;   // 5.122
+					t->ehalf = t->e + halfc2Dt * (t->Jleft - t->Jright);   // 5.123
+					t->phalf = (t->p + halfDt * (t->Qleft - t->Qright) / t->Dx) / (1.0 + Dtbytworho0 * t->R);   // 5.123
 					#if MASS_LEAPFROG
-						t->ehalf = t->ehalfold + 2 * halfc2Dt * (t->Jleft - t->Jright);
+						t->ehalf = t->ehalfold + 2.0 * halfc2Dt * (t->Jleft - t->Jright);
 					#endif
-					t->Jhalf = t->phalf * t->Ahalf;   /* 5.124 */
-					t->Qhalf = t->ehalf / (t->Ahalf * t->Dxhalf) + onebytworho0 * t->phalf * t->phalf;   /* 5.124 */
+					t->Jhalf = t->phalf * t->Ahalf;   // 5.124
+					t->Qhalf = t->ehalf / (t->Ahalf * t->Dxhalf) + onebytworho0 * t->phalf * t->phalf;   // 5.124
 					#if NO_BERNOULLI_EFFECT
 						t->Qhalf = t->ehalf / (t->Ahalf * t->Dxhalf);
 					#endif
 				}
-				for (m = 1; m <= M; m ++) {   /* Compute Jleftnew and Qleftnew. */
+				for (int m = 1; m <= M; m ++) {   // compute Jleftnew and Qleftnew
 					Delta_Tube l = delta->tube + m, r1 = l -> right1, r2 = l -> right2, r = r1;
-					Delta_Tube l1 = l, l2 = r ? r -> left2 : NULL;
-					if (l->left1 == NULL) {   /* Closed boundary at the left side (diaphragm)? */
-						if (r == NULL) continue;   /* Tube not connected at all. */
-						l->Jleftnew = 0;   /* 5.132. */
-						l->Qleftnew = (l->eleft - twoc2Dt * l->Jhalf) / l->Vnew;   /* 5.132. */
+					Delta_Tube l1 = l, l2 = r ? r -> left2 : nullptr;
+					if (! l->left1) {   // closed boundary at the left side (diaphragm)?
+						if (! r) continue;   // tube not connected at all
+						l->Jleftnew = 0;   // 5.132
+						l->Qleftnew = (l->eleft - twoc2Dt * l->Jhalf) / l->Vnew;   // 5.132
 					}
-					else   /* Left boundary open to another tube will be handled... */
-						(void) 0;   /* ...together with the right boundary of the tube to the left. */
-					if (r == NULL) {   /* Open boundary at the right side (lips, nostrils)? */
-						rrad = 1 - c * Dt / 0.02;   /* Radiation resistance, 5.135. */
-						onebygrad = 1 / (1 + c * Dt / 0.02);   /* Radiation conductance, 5.135. */
+					else   // left boundary open to another tube will be handled...
+						(void) 0;   // ...together with the right boundary of the tube to the left
+					if (! r) {   // open boundary at the right side (lips, nostrils)?
+						rrad = 1.0 - c * Dt / 0.02;   // radiation resistance, 5.135
+						onebygrad = 1.0 / (1.0 + c * Dt / 0.02);   // radiation conductance, 5.135
 						#if NO_RADIATION_DAMPING
 							rrad = 0;
 							onebygrad = 0;
 						#endif
 						l->prightnew = ((l->Dxhalf / Dt + c * onebygrad) * l->pright +
-							 2 * ((l->Qhalf - rho0c2) - (l->Qright - rho0c2) * onebygrad)) /
-							(l->r * l->Anew / Dt + c * onebygrad);   /* 5.136 */
-						l->Jrightnew = l->prightnew * l->Anew;   /* 5.136 */
+							 2.0 * ((l->Qhalf - rho0c2) - (l->Qright - rho0c2) * onebygrad)) /
+							(l->r * l->Anew / Dt + c * onebygrad);   // 5.136
+						l->Jrightnew = l->prightnew * l->Anew;   // 5.136
 						l->Qrightnew = (rrad * (l->Qright - rho0c2) +
-							c * (l->prightnew - l->pright)) * onebygrad + rho0c2;   /* 5.136 */
-					} else if (l2 == NULL && r2 == NULL) {   /* Two-way boundary. */
+							c * (l->prightnew - l->pright)) * onebygrad + rho0c2;   // 5.136
+					} else if (! l2 && ! r2) {   // two-way boundary
 						if (l->v > criticalVelocity && l->A < r->A) {
 							l->Pturbrightnew = -0.5 * rho0 * (l->v - criticalVelocity) *
-								(1 - l->A / r->A) * (1 - l->A / r->A) * l->v;
+								(1.0 - l->A / r->A) * (1.0 - l->A / r->A) * l->v;
 							if (l->Pturbrightnew != 0.0)
-								l->Pturbrightnew *= 1 + NUMrandomGauss (0, noiseFactor) /* * l->A */;
+								l->Pturbrightnew *= NUMrandomGauss (1.0, noiseFactor) /* * l->A */;
 						}
 						if (r->v < - criticalVelocity && r->A < l->A) {
 							l->Pturbrightnew = 0.5 * rho0 * (r->v + criticalVelocity) *
-								(1 - r->A / l->A) * (1 - r->A / l->A) * r->v;
+								(1.0 - r->A / l->A) * (1.0 - r->A / l->A) * r->v;
 							if (l->Pturbrightnew != 0.0)
-								l->Pturbrightnew *= 1 + NUMrandomGauss (0, noiseFactor) /* * r->A */;
+								l->Pturbrightnew *= NUMrandomGauss (1.0, noiseFactor) /* * r->A */;
 						}
 						#if NO_TURBULENCE
-							l->Pturbrightnew = 0;
+							l->Pturbrightnew = 0.0;
 						#endif
 						l->Jrightnew = r->Jleftnew =
 							(l->Dxhalf * l->pright + r->Dxhalf * r->pleft +
 							 twoDt * (l->Qhalf - r->Qhalf + l->Pturbright)) /
-							(l->r + r->r);   /* 5.127 */
+							(l->r + r->r);   // 5.127
 						#if B91
 							l->Jrightnew = r->Jleftnew =
 								(l->pright + r->pleft +
-								 2 * twoDt * (l->Qhalf - r->Qhalf + l->Pturbright) / (l->Dxhalf + r->Dxhalf)) /
+								 2.0 * twoDt * (l->Qhalf - r->Qhalf + l->Pturbright) / (l->Dxhalf + r->Dxhalf)) /
 								(l->r / l->Dxhalf + r->r / r->Dxhalf);
 						#endif
-						l->prightnew = l->Jrightnew / l->Anew;   /* 5.128 */
-						r->pleftnew = r->Jleftnew / r->Anew;   /* 5.128 */
-						l->Krightnew = onebytworho0 * l->prightnew * l->prightnew;   /* 5.128 */
-						r->Kleftnew = onebytworho0 * r->pleftnew * r->pleftnew;   /* 5.128 */
+						l->prightnew = l->Jrightnew / l->Anew;   // 5.128
+						r->pleftnew = r->Jleftnew / r->Anew;   // 5.128
+						l->Krightnew = onebytworho0 * l->prightnew * l->prightnew;   // 5.128
+						r->Kleftnew = onebytworho0 * r->pleftnew * r->pleftnew;   // 5.128
 						#if NO_BERNOULLI_EFFECT
-							l->Krightnew = r->Kleftnew = 0;
+							l->Krightnew = r->Kleftnew = 0.0;
 						#endif
 						l->Qrightnew =
 							(l->eright + r->eleft + twoc2Dt * (l->Jhalf - r->Jhalf)
 							 + l->Krightnew * l->Vnew + (r->Kleftnew - l->Pturbrightnew) * r->Vnew) /
-							(l->Vnew + r->Vnew);   /* 5.131 */
-						r->Qleftnew = l->Qrightnew + l->Pturbrightnew;   /* 5.131 */
-					} else if (r2) {   /* Two adjacent tubes at the right side (velic). */
+							(l->Vnew + r->Vnew);   // 5.131
+						r->Qleftnew = l->Qrightnew + l->Pturbrightnew;   // 5.131
+					} else if (r2) {   // two adjacent tubes at the right side (velic)
 						r1->Jleftnew =
-							(r1->Jleft * r1->Dxhalf * (1 / (l->A + r2->A) + 1 / r1->A) +
+							(r1->Jleft * r1->Dxhalf * (1.0 / (l->A + r2->A) + 1.0 / r1->A) +
 							 twoDt * ((l->Ahalf * l->Qhalf + r2->Ahalf * r2->Qhalf ) / (l->Ahalf  + r2->Ahalf) - r1->Qhalf)) /
-							(1 / (1 / l->r + 1 / r2->r) + r1->r);   /* 5.138 */
+							(1.0 / (1.0 / l->r + 1.0 / r2->r) + r1->r);   // 5.138
 						r2->Jleftnew =
-							(r2->Jleft * r2->Dxhalf * (1 / (l->A + r1->A) + 1 / r2->A) +
+							(r2->Jleft * r2->Dxhalf * (1.0 / (l->A + r1->A) + 1.0 / r2->A) +
 							 twoDt * ((l->Ahalf * l->Qhalf + r1->Ahalf * r1->Qhalf ) / (l->Ahalf  + r1->Ahalf) - r2->Qhalf)) /
-							(1 / (1 / l->r + 1 / r1->r) + r2->r);   /* 5.138 */
-						l->Jrightnew = r1->Jleftnew + r2->Jleftnew;   /* 5.139 */
-						l->prightnew = l->Jrightnew / l->Anew;   /* 5.128 */
-						r1->pleftnew = r1->Jleftnew / r1->Anew;   /* 5.128 */
-						r2->pleftnew = r2->Jleftnew / r2->Anew;   /* 5.128 */
-						l->Krightnew = onebytworho0 * l->prightnew * l->prightnew;   /* 5.128 */
-						r1->Kleftnew = onebytworho0 * r1->pleftnew * r1->pleftnew;   /* 5.128 */
-						r2->Kleftnew = onebytworho0 * r2->pleftnew * r2->pleftnew;   /* 5.128 */
+							(1.0 / (1.0 / l->r + 1.0 / r1->r) + r2->r);   // 5.138
+						l->Jrightnew = r1->Jleftnew + r2->Jleftnew;   // 5.139
+						l->prightnew = l->Jrightnew / l->Anew;   // 5.128
+						r1->pleftnew = r1->Jleftnew / r1->Anew;   // 5.128
+						r2->pleftnew = r2->Jleftnew / r2->Anew;   // 5.128
+						l->Krightnew = onebytworho0 * l->prightnew * l->prightnew;   // 5.128
+						r1->Kleftnew = onebytworho0 * r1->pleftnew * r1->pleftnew;   // 5.128
+						r2->Kleftnew = onebytworho0 * r2->pleftnew * r2->pleftnew;   // 5.128
 						#if NO_BERNOULLI_EFFECT
 							l->Krightnew = r1->Kleftnew = r2->Kleftnew = 0;
 						#endif
 						l->Qrightnew = r1->Qleftnew = r2->Qleftnew =
 							(l->eright + r1->eleft + r2->eleft + twoc2Dt * (l->Jhalf - r1->Jhalf - r2->Jhalf) +
 							 l->Krightnew * l->Vnew + r1->Kleftnew * r1->Vnew + r2->Kleftnew * r2->Vnew) /
-							(l->Vnew + r1->Vnew + r2->Vnew);   /* 5.137 */
+							(l->Vnew + r1->Vnew + r2->Vnew);   // 5.137
 					} else {
-						Melder_assert (l2 != NULL);
+						Melder_assert (l2 != nullptr);
 						l1->Jrightnew =
-							(l1->Jright * l1->Dxhalf * (1 / (r->A + l2->A) + 1 / l1->A) -
+							(l1->Jright * l1->Dxhalf * (1.0 / (r->A + l2->A) + 1.0 / l1->A) -
 							 twoDt * ((r->Ahalf * r->Qhalf + l2->Ahalf * l2->Qhalf ) / (r->Ahalf  + l2->Ahalf) - l1->Qhalf)) /
-							(1 / (1 / r->r + 1 / l2->r) + l1->r);   /* 5.138 */
+							(1.0 / (1.0 / r->r + 1.0 / l2->r) + l1->r);   // 5.138
 						l2->Jrightnew =
-							(l2->Jright * l2->Dxhalf * (1 / (r->A + l1->A) + 1 / l2->A) -
+							(l2->Jright * l2->Dxhalf * (1.0 / (r->A + l1->A) + 1.0 / l2->A) -
 							 twoDt * ((r->Ahalf * r->Qhalf + l1->Ahalf  * l1->Qhalf ) / (r->Ahalf  + l1->Ahalf) - l2->Qhalf)) /
-							(1 / (1 / r->r + 1 / l1->r) + l2->r);   /* 5.138 */
-						r->Jleftnew = l1->Jrightnew + l2->Jrightnew;   /* 5.139 */
-						r->pleftnew = r->Jleftnew / r->Anew;   /* 5.128 */
-						l1->prightnew = l1->Jrightnew / l1->Anew;   /* 5.128 */
-						l2->prightnew = l2->Jrightnew / l2->Anew;   /* 5.128 */
-						r->Kleftnew = onebytworho0 * r->pleftnew * r->pleftnew;   /* 5.128 */
-						l1->Krightnew = onebytworho0 * l1->prightnew * l1->prightnew;   /* 5.128 */
-						l2->Krightnew = onebytworho0 * l2->prightnew * l2->prightnew;   /* 5.128 */
+							(1.0 / (1.0 / r->r + 1.0 / l1->r) + l2->r);   // 5.138
+						r->Jleftnew = l1->Jrightnew + l2->Jrightnew;   // 5.139
+						r->pleftnew = r->Jleftnew / r->Anew;   // 5.128
+						l1->prightnew = l1->Jrightnew / l1->Anew;   // 5.128
+						l2->prightnew = l2->Jrightnew / l2->Anew;   // 5.128
+						r->Kleftnew = onebytworho0 * r->pleftnew * r->pleftnew;   // 5.128
+						l1->Krightnew = onebytworho0 * l1->prightnew * l1->prightnew;   // 5.128
+						l2->Krightnew = onebytworho0 * l2->prightnew * l2->prightnew;   // 5.128
 						#if NO_BERNOULLI_EFFECT
-							r->Kleftnew = l1->Krightnew = l2->Krightnew = 0;
+							r->Kleftnew = l1->Krightnew = l2->Krightnew = 0.0;
 						#endif
 						r->Qleftnew = l1->Qrightnew = l2->Qrightnew =
 							(r->eleft + l1->eright + l2->eright + twoc2Dt * (l1->Jhalf + l2->Jhalf - r->Jhalf) +
 							 r->Kleftnew * r->Vnew + l1->Krightnew * l1->Vnew + l2->Krightnew * l2->Vnew) /
-							(r->Vnew + l1->Vnew + l2->Vnew);   /* 5.137 */
+							(r->Vnew + l1->Vnew + l2->Vnew);   // 5.137
 					}
 				}
 
@@ -363,13 +364,13 @@ Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 
 				if (n == (oversampling + 1) / 2) {
 					double out = 0.0;
-					for (m = 1; m <= M; m ++) {
+					for (int m = 1; m <= M; m ++) {
 						Delta_Tube t = delta->tube + m;
-						out += rho0 * t->Dx * t->Dz * t->dDydt * Dt * 1000;   /* Radiation of wall movement, 5.140. */
-						if (t->right1 == NULL)
-							out += t->Jrightnew - t->Jright;   /* Radiation of open tube end. */
+						out += rho0 * t->Dx * t->Dz * t->dDydt * Dt * 1000.0;   // radiation of wall movement, 5.140
+						if (! t->right1)
+							out += t->Jrightnew - t->Jright;   // radiation of open tube end
 					}
-					result -> z [1] [sample] = out /= 4 * NUMpi * 0.4 * Dt;   /* At 0.4 metres. */
+					result -> z [1] [sample] = out /= 4.0 * NUMpi * 0.4 * Dt;   // at 0.4 metres
 					if (iw1) w1 -> z [1] [sample] = delta->tube[iw1].Dy;
 					if (iw2) w2 -> z [1] [sample] = delta->tube[iw2].Dy;
 					if (iw3) w3 -> z [1] [sample] = delta->tube[iw3].Dy;
@@ -380,7 +381,7 @@ Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 					if (iv2) v2 -> z [1] [sample] = delta->tube[iv2].v;
 					if (iv3) v3 -> z [1] [sample] = delta->tube[iv3].v;
 				}
-				for (m = 1; m <= M; m ++) {
+				for (int m = 1; m <= M; m ++) {
 					Delta_Tube t = delta->tube + m;
 					t->Jleft = t->Jleftnew;
 					t->Jright = t->Jrightnew;
@@ -406,19 +407,19 @@ Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
 			}
 		}
 		totalVolume = 0.0;
-		for (m = 1; m <= M; m ++)
+		for (int m = 1; m <= M; m ++)
 			totalVolume += delta->tube [m]. V;
 		//Melder_casual (U"Ending volume: ", totalVolume * 1000, U" litres.");
-		if (out_w1) *out_w1 = w1.transfer();
-		if (out_w2) *out_w2 = w2.transfer();
-		if (out_w3) *out_w3 = w3.transfer();
-		if (out_p1) *out_p1 = p1.transfer();
-		if (out_p2) *out_p2 = p2.transfer();
-		if (out_p3) *out_p3 = p3.transfer();
-		if (out_v1) *out_v1 = v1.transfer();
-		if (out_v2) *out_v2 = v2.transfer();
-		if (out_v3) *out_v3 = v3.transfer();
-		return result.transfer();
+		if (out_w1) *out_w1 = w1.move();
+		if (out_w2) *out_w2 = w2.move();
+		if (out_w3) *out_w3 = w3.move();
+		if (out_p1) *out_p1 = p1.move();
+		if (out_p2) *out_p2 = p2.move();
+		if (out_p3) *out_p3 = p3.move();
+		if (out_v1) *out_v1 = v1.move();
+		if (out_v2) *out_v2 = v2.move();
+		if (out_v3) *out_v3 = v3.move();
+		return result;
 	} catch (MelderError) {
 		Melder_throw (artword, U" & ", speaker, U": articulatory synthesis not performed.");
 	}
diff --git a/artsynth/Artword_Speaker_to_Sound.h b/artsynth/Artword_Speaker_to_Sound.h
index 969d181..a019bcd 100644
--- a/artsynth/Artword_Speaker_to_Sound.h
+++ b/artsynth/Artword_Speaker_to_Sound.h
@@ -1,30 +1,29 @@
 /* Artword_Speaker_to_Sound.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword.h"
 #include "Speaker.h"
 #include "Sound.h"
 
-Sound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
+autoSound Artword_Speaker_to_Sound (Artword artword, Speaker speaker,
    double samplingFrequency, int oversampling,
-   Sound *w1, int iw1, Sound *w2, int iw2, Sound *w3, int iw3,
-   Sound *p1, int ip1, Sound *p2, int ip2, Sound *p3, int ip3,
-   Sound *v1, int iv1, Sound *v2, int iv2, Sound *v3, int iv3);
+   autoSound *w1, int iw1, autoSound *w2, int iw2, autoSound *w3, int iw3,
+   autoSound *p1, int ip1, autoSound *p2, int ip2, autoSound *p3, int ip3,
+   autoSound *v1, int iv1, autoSound *v2, int iv2, autoSound *v3, int iv3);
 
 /* End of file Artword_Speaker_to_Sound.h */
diff --git a/artsynth/Artword_def.h b/artsynth/Artword_def.h
index d2c7ef0..b2e0435 100644
--- a/artsynth/Artword_def.h
+++ b/artsynth/Artword_def.h
@@ -1,20 +1,19 @@
 /* Artword_def.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -24,6 +23,7 @@ oo_DEFINE_STRUCT (ArtwordData)
 	oo_INT (numberOfTargets)
 	oo_DOUBLE_VECTOR (targets, numberOfTargets)
 	oo_DOUBLE_VECTOR (times, numberOfTargets)
+
 	#if oo_DECLARING
 		oo_INT (_iTarget)
 	#endif
@@ -33,7 +33,7 @@ oo_END_STRUCT (ArtwordData)
 
 
 #define ooSTRUCT Artword
-oo_DEFINE_CLASS (Artword, Data)
+oo_DEFINE_CLASS (Artword, Daata)
 
 	oo_DOUBLE (totalTime)
 	oo_STRUCT_SET (ArtwordData, data, kArt_muscle)
diff --git a/artsynth/Artword_to_Art.cpp b/artsynth/Artword_to_Art.cpp
index a85923c..7aade1d 100644
--- a/artsynth/Artword_to_Art.cpp
+++ b/artsynth/Artword_to_Art.cpp
@@ -1,29 +1,28 @@
 /* Artword_to_Art.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword_to_Art.h"
 
-Art Artword_to_Art (Artword me, double tim) {
+autoArt Artword_to_Art (Artword me, double tim) {
 	try {
 		autoArt thee = Art_create ();
-		Artword_intoArt (me, thee.peek(), tim);
-		return thee.transfer();
+		Artword_intoArt (me, thee.get(), tim);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Articulation.");
 	}
diff --git a/artsynth/Artword_to_Art.h b/artsynth/Artword_to_Art.h
index d5f2b8a..4f8bb43 100644
--- a/artsynth/Artword_to_Art.h
+++ b/artsynth/Artword_to_Art.h
@@ -1,25 +1,24 @@
 /* Artword_to_Art.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Artword.h"
 
-Art Artword_to_Art (Artword me, double time);
+autoArt Artword_to_Art (Artword me, double time);
 /*
 	Function:
 		linear interpolation between targets.	
diff --git a/artsynth/Delta.cpp b/artsynth/Delta.cpp
index 294a997..6d7269f 100644
--- a/artsynth/Delta.cpp
+++ b/artsynth/Delta.cpp
@@ -1,27 +1,26 @@
 /* Delta.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Delta.h"
 
 Thing_implement (Delta, Thing, 0);
 
-void structDelta :: v_destroy () {
+void structDelta :: v_destroy () noexcept {
 	NUMvector_free (our tube, 1);
 	Delta_Parent :: v_destroy ();
 }
@@ -36,10 +35,10 @@ void Delta_init (Delta me, int numberOfTubes) {
 	}
 }
 
-Delta Delta_create (int numberOfTubes) {
+autoDelta Delta_create (int numberOfTubes) {
 	autoDelta me = Thing_new (Delta);
-	Delta_init (me.peek(), numberOfTubes);
-	return me.transfer();
+	Delta_init (me.get(), numberOfTubes);
+	return me;
 }
 
 /* End of file Delta.cpp */
diff --git a/artsynth/Delta.h b/artsynth/Delta.h
index 7769338..22b1e3f 100644
--- a/artsynth/Delta.h
+++ b/artsynth/Delta.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Thing.h"
@@ -26,10 +25,10 @@ struct structDelta_Tube
 {
 	/* Structure: static. */
 
-	Delta_Tube left1;   /* If NULL: closed at left edge. */
-	Delta_Tube left2;   /* If not NULL: two merging streams. */
-	Delta_Tube right1;  /* If NULL: radiation at right edge. */
-	Delta_Tube right2;  /* If not NULL: a stream splitting into two. */
+	Delta_Tube left1;   /* If null: closed at left edge. */
+	Delta_Tube left2;   /* If not null: two merging streams. */
+	Delta_Tube right1;  /* If null: radiation at right edge. */
+	Delta_Tube right2;  /* If not null: a stream splitting into two. */
 	long parallel;   /* Parallel subdivision. */
 
 	/* Controlled by articulation: quasistatic. */
@@ -57,13 +56,13 @@ Thing_define (Delta, Thing) {
 	int numberOfTubes;              // >= 1
 	struct structDelta_Tube *tube;  // tube [1..numberOfTubes]
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
 void Delta_init (Delta me, int numberOfTubes);
 
-Delta Delta_create (int numberOfTubes);
+autoDelta Delta_create (int numberOfTubes);
 /*
 	Function:
 		return a new Delta.
@@ -71,7 +70,7 @@ Delta Delta_create (int numberOfTubes);
 		numberOfTubes >= 1;
 	Postconditions:
 		result -> numberOfTubes = numberOfTubes;
-		all members of result -> tube [1..numberOfTubes] are zero or NULL,
+		all members of result -> tube [1..numberOfTubes] are zero or null,
 		except 'parallel', which is 1.
 */
 
diff --git a/artsynth/Speaker.cpp b/artsynth/Speaker.cpp
index 3bc8e7c..831e8f6 100644
--- a/artsynth/Speaker.cpp
+++ b/artsynth/Speaker.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Speaker.h"
@@ -38,10 +37,10 @@
 #include "oo_DESCRIPTION.h"
 #include "Speaker_def.h"
 
-Thing_implement (Speaker, Data, 0);
+Thing_implement (Speaker, Daata, 0);
 
-Speaker Speaker_create (char32 *kindOfSpeaker, int numberOfVocalCordMasses) {
-	Speaker me = Thing_new (Speaker);
+autoSpeaker Speaker_create (char32 *kindOfSpeaker, int numberOfVocalCordMasses) {
+	autoSpeaker me = Thing_new (Speaker);
 
 	/* Supralaryngeal dimensions are taken from P. Mermelstein (1973):		*/
 	/*    "Articulatory model for the study of speech production",		*/
@@ -49,7 +48,6 @@ Speaker Speaker_create (char32 *kindOfSpeaker, int numberOfVocalCordMasses) {
 	/* That was a male speaker, so we need scaling for other speakers:		*/
 
 	double scaling;
-	if (! me) return NULL;
 	if (str32equ (kindOfSpeaker, U"Male")) my relativeSize = 1.1;
 	else if (str32equ (kindOfSpeaker, U"Child")) my relativeSize = 0.7;
 	else my relativeSize = 1.0;
diff --git a/artsynth/Speaker.h b/artsynth/Speaker.h
index f1f7510..e3c6992 100644
--- a/artsynth/Speaker.h
+++ b/artsynth/Speaker.h
@@ -4,27 +4,25 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
 #include "Speaker_def.h"
-oo_CLASS_CREATE (Speaker, Data);
 
-Speaker Speaker_create (char32 *kindOfSpeaker, int numberOfVocalCordMasses);
+autoSpeaker Speaker_create (char32 *kindOfSpeaker, int numberOfVocalCordMasses);
 	/* Preconditions:								*/
 	/*    1 <= numberOfVocalCordMasses <= 2;					*/
 	/* Failures:									*/
diff --git a/artsynth/Speaker_def.h b/artsynth/Speaker_def.h
index b5012f8..4b08d65 100644
--- a/artsynth/Speaker_def.h
+++ b/artsynth/Speaker_def.h
@@ -1,116 +1,150 @@
 /* Speaker_def.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Speaker_CordDimensions
 oo_DEFINE_STRUCT (Speaker_CordDimensions)
+
 	oo_INT (numberOfMasses)
 	oo_DOUBLE (length)
+
 oo_END_STRUCT (Speaker_CordDimensions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_CordSpring
 oo_DEFINE_STRUCT (Speaker_CordSpring)
+
 	oo_DOUBLE (thickness)
 	oo_DOUBLE (mass)
 	oo_DOUBLE (k1)
+
 oo_END_STRUCT (Speaker_CordSpring)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_GlottalShunt
 oo_DEFINE_STRUCT (Speaker_GlottalShunt)
+
 	oo_DOUBLE (Dx)
 	oo_DOUBLE (Dy)
 	oo_DOUBLE (Dz)
+
 oo_END_STRUCT (Speaker_GlottalShunt)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Velum
-oo_DEFINE_STRUCT (Speaker_Velum)   /* V */
+oo_DEFINE_STRUCT (Speaker_Velum)   // V
+
 	oo_DOUBLE (x)
 	oo_DOUBLE (y)
 	oo_DOUBLE (a)
+
 oo_END_STRUCT (Speaker_Velum)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Palate
-oo_DEFINE_STRUCT (Speaker_Palate)   /* OM */
+oo_DEFINE_STRUCT (Speaker_Palate)   // OM
+
 	oo_DOUBLE (radius)
+
 oo_END_STRUCT (Speaker_Palate)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Tip
 oo_DEFINE_STRUCT (Speaker_Tip)
+
 	oo_DOUBLE (length)
+
 oo_END_STRUCT (Speaker_Tip)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Alveoli
 oo_DEFINE_STRUCT (Speaker_Alveoli)
+
 	oo_DOUBLE (x)
 	oo_DOUBLE (y)
 	oo_DOUBLE (a)
+
 oo_END_STRUCT (Speaker_Alveoli)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_TeethCavity
 oo_DEFINE_STRUCT (Speaker_TeethCavity)
+
 	oo_DOUBLE (dx1)
 	oo_DOUBLE (dx2)
 	oo_DOUBLE (dy)
+
 oo_END_STRUCT (Speaker_TeethCavity)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_LowerTeeth
-oo_DEFINE_STRUCT (Speaker_LowerTeeth)   /* rest position of J */
+oo_DEFINE_STRUCT (Speaker_LowerTeeth)   // rest position of J
+
 	oo_DOUBLE (r)
 	oo_DOUBLE (a)
+
 oo_END_STRUCT (Speaker_LowerTeeth)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_UpperTeeth
-oo_DEFINE_STRUCT (Speaker_UpperTeeth)   /* U */
+oo_DEFINE_STRUCT (Speaker_UpperTeeth)   // U
+
 	oo_DOUBLE (x)
 	oo_DOUBLE (y)
+
 oo_END_STRUCT (Speaker_UpperTeeth)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Lip
 oo_DEFINE_STRUCT (Speaker_Lip)
+
 	oo_DOUBLE (dx)
 	oo_DOUBLE (dy)
+
 oo_END_STRUCT (Speaker_Lip)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT Speaker_Nose
 oo_DEFINE_STRUCT (Speaker_Nose)
+
 	oo_DOUBLE (Dx)
 	oo_DOUBLE (Dz)
 	oo_DOUBLE_ARRAY (weq, 14, 14)
+
 oo_END_STRUCT (Speaker_Nose)
 #undef ooSTRUCT
 
 
 #define ooSTRUCT Speaker
-oo_DEFINE_CLASS (Speaker, Data)
+oo_DEFINE_CLASS (Speaker, Daata)
 
-	oo_DOUBLE (relativeSize)   /* Different for female, male, child. */
+	oo_DOUBLE (relativeSize)   // different for female, male, child
 
 	/* In the larynx. */
 
diff --git a/artsynth/Speaker_to_Delta.cpp b/artsynth/Speaker_to_Delta.cpp
index 4bc5458..dc1f245 100644
--- a/artsynth/Speaker_to_Delta.cpp
+++ b/artsynth/Speaker_to_Delta.cpp
@@ -1,29 +1,28 @@
 /* Speaker_to_Delta.cpp
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Art_Speaker.h"
 #include "Speaker_to_Delta.h"
-#define SMOOTH_LUNGS  TRUE
+#define SMOOTH_LUNGS  true
 #define FIRST_TUBE  7
 
-Delta Speaker_to_Delta (Speaker me) {
-	double f = my relativeSize * 1e-3;   /* We shall use millimetres and grams. */
+autoDelta Speaker_to_Delta (Speaker me) {
+	double f = my relativeSize * 1e-3;   // we shall use millimetres and grams
 	double xe [30], ye [30], xi [30], yi [30], xmm [30], ymm [30], dx, dy;
 	int closed [40];
 	int itube;
@@ -34,11 +33,11 @@ Delta Speaker_to_Delta (Speaker me) {
 
 	for (itube = 1; itube <= 23; itube ++) {
 		Delta_Tube t = thy tube + itube;
-		t -> Dx = t -> Dxeq = 10 * f;
-		t -> Dy = t -> Dyeq = 100 * f;
-		t -> Dz = t -> Dzeq = 230 * f;
-		t -> mass = 10 * my relativeSize * t -> Dx * t -> Dz;   /* 80 * f; 35 * Dx * Dz */
-		t -> k1 = 200;   /* 90000 * Dx * Dz; Newtons per metre */
+		t -> Dx = t -> Dxeq = 10.0 * f;
+		t -> Dy = t -> Dyeq = 100.0 * f;
+		t -> Dz = t -> Dzeq = 230.0 * f;
+		t -> mass = 10.0 * my relativeSize * t -> Dx * t -> Dz;   // 80 * f; 35 * Dx * Dz
+		t -> k1 = 200.0;   // 90000 * Dx * Dz; Newtons per metre
 		t -> k3 = 0.0;
 		t -> Brel = 0.8;
 		t -> parallel = 1000;
@@ -48,11 +47,11 @@ Delta Speaker_to_Delta (Speaker me) {
 
 	for (itube = 24; itube <= 29; itube ++) {
 		Delta_Tube t = thy tube + itube;
-		t -> Dx = t -> Dxeq = 10 * f;
-		t -> Dy = t -> Dyeq = 15 * f;
-		t -> Dz = t -> Dzeq = 30 * f;
-		t -> mass = 10 * f;
-		t -> k1 = 40;   /* 125000 * Dx * Dz; Newtons per metre */
+		t -> Dx = t -> Dxeq = 10.0 * f;
+		t -> Dy = t -> Dyeq = 15.0 * f;
+		t -> Dz = t -> Dzeq = 30.0 * f;
+		t -> mass = 10.0 * f;
+		t -> k1 = 40.0;   // 125000 * Dx * Dz; Newtons per metre
 		t -> k3 = 0.0;
 		t -> Brel = 0.8;
 	}
@@ -61,24 +60,24 @@ Delta Speaker_to_Delta (Speaker me) {
 
 	for (itube = 30; itube <= 35; itube ++) {
 		Delta_Tube t = thy tube + itube;
-		t -> Dx = t -> Dxeq = 10 * f;
-		t -> Dy = t -> Dyeq = 15 * f;
-		t -> Dz = t -> Dzeq = 16 * f;
-		t -> mass = 5 * f;
-		t -> k1 = 160;   /* 100000 * Dx * Dz; Newtons per metre */
+		t -> Dx = t -> Dxeq = 10.0 * f;
+		t -> Dy = t -> Dyeq = 15.0 * f;
+		t -> Dz = t -> Dzeq = 16.0 * f;
+		t -> mass = 5.0 * f;
+		t -> k1 = 160.0;   // 100000 * Dx * Dz; Newtons per metre
 		t -> k3 = 0.0;
 		t -> Brel = 0.8;
 	}
 
 	if (SMOOTH_LUNGS) {
 		struct { int itube; double Dy, Dz, parallel; } data [] = {
-			{  7, 120, 240, 5000 }, {  8, 120, 240, 5000 }, {  9, 120, 240, 5000 },
-			{ 10, 120, 240, 5000 }, { 11, 120, 240, 5000 }, { 12, 120, 240, 5000 },
-			{ 13, 120, 240, 2500 }, { 14, 120, 240, 1250 }, { 15, 120, 240,  640 },
-			{ 16, 120, 240,  320 }, { 17, 120, 240,  160 }, { 18, 120, 140,   80 },
-			{ 19,  70,  70,   40 }, { 20,  35,  35,   20 }, { 21,  18,  18,   10 },
-			{ 22,  12,  12,    5 }, { 23,  12,  12,    3 }, { 24,  18,   9,    2 },
-			{ 25,  18,  19,    2 }, { 0 } };
+			{  7, 120.0, 240.0, 5000.0 }, {  8, 120.0, 240.0, 5000.0 }, {  9, 120.0, 240.0, 5000.0 },
+			{ 10, 120.0, 240.0, 5000.0 }, { 11, 120.0, 240.0, 5000.0 }, { 12, 120.0, 240.0, 5000.0 },
+			{ 13, 120.0, 240.0, 2500.0 }, { 14, 120.0, 240.0, 1250.0 }, { 15, 120.0, 240.0,  640.0 },
+			{ 16, 120.0, 240.0,  320.0 }, { 17, 120.0, 240.0,  160.0 }, { 18, 120.0, 140.0,   80.0 },
+			{ 19,  70.0,  70.0,   40.0 }, { 20,  35.0,  35.0,   20.0 }, { 21,  18.0,  18.0,   10.0 },
+			{ 22,  12.0,  12.0,    5.0 }, { 23,  12.0,  12.0,    3.0 }, { 24,  18.0,   9.0,    2.0 },
+			{ 25,  18.0,  19.0,    2.0 }, { 0 } };
 		int i;
 		for (i = 0; data [i]. itube; i ++) {
 			Delta_Tube t = thy tube + data [i]. itube;
@@ -88,25 +87,25 @@ Delta Speaker_to_Delta (Speaker me) {
 		}
 		for (itube = 26; itube <= 35; itube ++) {
 			Delta_Tube t = thy tube + itube;
-			t -> Dy = t -> Dyeq = 11 * f;
-			t -> Dz = t -> Dzeq = 14 * f;
+			t -> Dy = t -> Dyeq = 11.0 * f;
+			t -> Dz = t -> Dzeq = 14.0 * f;
 			t -> parallel = 1;
 		}
 		for (itube = FIRST_TUBE; itube <= 18; itube ++) {
 			Delta_Tube t = thy tube + itube;
-			t -> Dx = t -> Dxeq = 10 * f;
-			t -> mass = 10 * my relativeSize * t -> Dx * t -> Dz;   /* 10 mm */
-			t -> k1 = 1e5 * t -> Dx * t -> Dz;   /* elastic tissue: 1 mbar/mm */
+			t -> Dx = t -> Dxeq = 10.0 * f;
+			t -> mass = 10.0 * my relativeSize * t -> Dx * t -> Dz;   // 10 mm
+			t -> k1 = 1e5 * t -> Dx * t -> Dz;   // elastic tissue: 1 mbar/mm
 			t -> k3 = 0.0;
-			t -> Brel = 1;
+			t -> Brel = 1.0;
 		}
 		for (itube = 19; itube <= 35; itube ++) {
 			Delta_Tube t = thy tube + itube;
-			t -> Dx = t -> Dxeq = 10 * f;
-			t -> mass = 3 * my relativeSize * t -> Dx * t -> Dz;   /* 3 mm */
-			t -> k1 = 10e5 * t -> Dx * t -> Dz;   /* cartilage: 10 mbar/mm */
+			t -> Dx = t -> Dxeq = 10.0 * f;
+			t -> mass = 3.0 * my relativeSize * t -> Dx * t -> Dz;   // 3 mm
+			t -> k1 = 10e5 * t -> Dx * t -> Dz;   // cartilage: 10 mbar/mm
 			t -> k3 = 0.0;
-			t -> Brel = 1;
+			t -> Brel = 1.0;
 		}
 	}
 
@@ -118,7 +117,7 @@ Delta Speaker_to_Delta (Speaker me) {
 		t -> Dz = t -> Dzeq = my cord.length;
 		t -> mass = my lowerCord.mass;
 		t -> k1 = my lowerCord.k1;
-		t -> k3 = t -> k1 * (20 / t -> Dz) * (20 / t -> Dz);
+		t -> k3 = t -> k1 * (20.0 / t -> Dz) * (20.0 / t -> Dz);
 		t -> Brel = 0.2;
 	}
 
@@ -132,7 +131,7 @@ Delta Speaker_to_Delta (Speaker me) {
 		t -> Dz = t -> Dzeq = my cord.length;
 		t -> mass = my upperCord.mass;
 		t -> k1 = my upperCord.k1;
-		t -> k3 = t -> k1 * (20 / t -> Dz) * (20 / t -> Dz);
+		t -> k3 = t -> k1 * (20.0 / t -> Dz) * (20.0 / t -> Dz);
 		t -> Brel = 0.2;
 
 		/* Couple spring with lower cord. */
@@ -143,41 +142,41 @@ Delta Speaker_to_Delta (Speaker me) {
 	 * Fill in the values for the conus elasticus (tubes 79..86) only if we want to model it.
 	 */
 	if (my cord.numberOfMasses == 10) {
-		thy tube [79]. Dx = thy tube [79]. Dxeq = 8 * f;
-		thy tube [80]. Dx = thy tube [80]. Dxeq = 7 * f;
-		thy tube [81]. Dx = thy tube [81]. Dxeq = 6 * f;
-		thy tube [82]. Dx = thy tube [82]. Dxeq = 5 * f;
-		thy tube [83]. Dx = thy tube [83]. Dxeq = 4 * f;
-		thy tube [84]. Dx = thy tube [84]. Dxeq = 0.75 * 4 * f + 0.25 * my lowerCord.thickness;
-		thy tube [85]. Dx = thy tube [85]. Dxeq = 0.50 * 4 * f + 0.50 * my lowerCord.thickness;
-		thy tube [86]. Dx = thy tube [86]. Dxeq = 0.25 * 4 * f + 0.75 * my lowerCord.thickness;
-
-		thy tube [79]. Dy = thy tube [79]. Dyeq = 11 * f;
-		thy tube [80]. Dy = thy tube [80]. Dyeq = 7 * f;
-		thy tube [81]. Dy = thy tube [81]. Dyeq = 4 * f;
-		thy tube [82]. Dy = thy tube [82]. Dyeq = 2 * f;
-		thy tube [83]. Dy = thy tube [83]. Dyeq = 1 * f;
+		thy tube [79]. Dx = thy tube [79]. Dxeq = 8.0 * f;
+		thy tube [80]. Dx = thy tube [80]. Dxeq = 7.0 * f;
+		thy tube [81]. Dx = thy tube [81]. Dxeq = 6.0 * f;
+		thy tube [82]. Dx = thy tube [82]. Dxeq = 5.0 * f;
+		thy tube [83]. Dx = thy tube [83]. Dxeq = 4.0 * f;
+		thy tube [84]. Dx = thy tube [84]. Dxeq = 0.75 * 4.0 * f + 0.25 * my lowerCord.thickness;
+		thy tube [85]. Dx = thy tube [85]. Dxeq = 0.50 * 4.0 * f + 0.50 * my lowerCord.thickness;
+		thy tube [86]. Dx = thy tube [86]. Dxeq = 0.25 * 4.0 * f + 0.75 * my lowerCord.thickness;
+
+		thy tube [79]. Dy = thy tube [79]. Dyeq = 11.0 * f;
+		thy tube [80]. Dy = thy tube [80]. Dyeq = 7.0 * f;
+		thy tube [81]. Dy = thy tube [81]. Dyeq = 4.0 * f;
+		thy tube [82]. Dy = thy tube [82]. Dyeq = 2.0 * f;
+		thy tube [83]. Dy = thy tube [83]. Dyeq = 1.0 * f;
 		thy tube [84]. Dy = thy tube [84]. Dyeq = 0.75 * f;
 		thy tube [85]. Dy = thy tube [85]. Dyeq = 0.50 * f;
 		thy tube [86]. Dy = thy tube [86]. Dyeq = 0.25 * f;
 
-		thy tube [79]. Dz = thy tube [79]. Dzeq = 16 * f;
-		thy tube [80]. Dz = thy tube [80]. Dzeq = 16 * f;
-		thy tube [81]. Dz = thy tube [81]. Dzeq = 16 * f;
-		thy tube [82]. Dz = thy tube [82]. Dzeq = 16 * f;
-		thy tube [83]. Dz = thy tube [83]. Dzeq = 16 * f;
-		thy tube [84]. Dz = thy tube [84]. Dzeq = 0.75 * 16 * f + 0.25 * my cord.length;
-		thy tube [85]. Dz = thy tube [85]. Dzeq = 0.50 * 16 * f + 0.50 * my cord.length;
-		thy tube [86]. Dz = thy tube [86]. Dzeq = 0.25 * 16 * f + 0.75 * my cord.length;
-
-		thy tube [79]. k1 = 160;
-		thy tube [80]. k1 = 160;
-		thy tube [81]. k1 = 160;
-		thy tube [82]. k1 = 160;
-		thy tube [83]. k1 = 160;
-		thy tube [84]. k1 = 0.75 * 160 * f + 0.25 * my lowerCord.k1;
-		thy tube [85]. k1 = 0.50 * 160 * f + 0.50 * my lowerCord.k1;
-		thy tube [86]. k1 = 0.25 * 160 * f + 0.75 * my lowerCord.k1;
+		thy tube [79]. Dz = thy tube [79]. Dzeq = 16.0 * f;
+		thy tube [80]. Dz = thy tube [80]. Dzeq = 16.0 * f;
+		thy tube [81]. Dz = thy tube [81]. Dzeq = 16.0 * f;
+		thy tube [82]. Dz = thy tube [82]. Dzeq = 16.0 * f;
+		thy tube [83]. Dz = thy tube [83]. Dzeq = 16.0 * f;
+		thy tube [84]. Dz = thy tube [84]. Dzeq = 0.75 * 16.0 * f + 0.25 * my cord.length;
+		thy tube [85]. Dz = thy tube [85]. Dzeq = 0.50 * 16.0 * f + 0.50 * my cord.length;
+		thy tube [86]. Dz = thy tube [86]. Dzeq = 0.25 * 16.0 * f + 0.75 * my cord.length;
+
+		thy tube [79]. k1 = 160.0;
+		thy tube [80]. k1 = 160.0;
+		thy tube [81]. k1 = 160.0;
+		thy tube [82]. k1 = 160.0;
+		thy tube [83]. k1 = 160.0;
+		thy tube [84]. k1 = 0.75 * 160.0 * f + 0.25 * my lowerCord.k1;
+		thy tube [85]. k1 = 0.50 * 160.0 * f + 0.50 * my lowerCord.k1;
+		thy tube [86]. k1 = 0.25 * 160.0 * f + 0.75 * my lowerCord.k1;
 
 		thy tube [79]. Brel = 0.7;
 		thy tube [80]. Brel = 0.6;
@@ -190,12 +189,12 @@ Delta Speaker_to_Delta (Speaker me) {
 
 		for (itube = 79; itube <= 86; itube ++) {
 			Delta_Tube t = thy tube + itube;
-			t -> mass = t -> Dx * t -> Dz / (30 * f);
-			t -> k3 = t -> k1 * (20 / t -> Dz) * (20 / t -> Dz);
+			t -> mass = t -> Dx * t -> Dz / (30.0 * f);
+			t -> k3 = t -> k1 * (20.0 / t -> Dz) * (20.0 / t -> Dz);
 			t -> k1left1 = t -> k1right1 = 1.0;
 		}
 		thy tube [79]. k1left1 = 0.0;
-		thy tube [36]. k1left1 = 1.0;   /* The essence: couple spring with lower vocal cords. */
+		thy tube [36]. k1left1 = 1.0;   // the essence: couple spring with lower vocal cords
 	}
 
 	/*
@@ -207,17 +206,17 @@ Delta Speaker_to_Delta (Speaker me) {
 			t -> Dx = t -> Dxeq = my shunt.Dx;
 			t -> Dy = t -> Dyeq = my shunt.Dy;
 			t -> Dz = t -> Dzeq = my shunt.Dz;
-			t -> mass = 3 * my upperCord.mass;   /* Heavy... */
-			t -> k1 = 3 * my upperCord.k1;   /* ...and stiff... */
-			t -> k3 = t -> k1 * (20 / t -> Dz) * (20 / t -> Dz);
-			t -> Brel = 3.0;   /* ...and inelastic, so that the walls will not vibrate. */
+			t -> mass = 3.0 * my upperCord.mass;   // heavy...
+			t -> k1 = 3.0 * my upperCord.k1;   // ...and stiff...
+			t -> k3 = t -> k1 * (20.0 / t -> Dz) * (20.0 / t -> Dz);
+			t -> Brel = 3.0;   // ...and inelastic, so that the walls will not vibrate
 		}
 	}
 
 	/* Vocal tract from neutral articulation. */
 	{
 		autoArt art = Art_create ();
-		Art_Speaker_meshVocalTract (art.peek(), me, xi, yi, xe, ye, xmm, ymm, closed);
+		Art_Speaker_meshVocalTract (art.get(), me, xi, yi, xe, ye, xmm, ymm, closed);
 	}
 
 	/* Pharynx and mouth: tubes 38..64. */
@@ -231,7 +230,7 @@ Delta Speaker_to_Delta (Speaker me) {
 		t -> Dy = t -> Dyeq;
 		t -> Dz = t -> Dzeq = 0.015;
 		t -> mass = 0.006;
-		t -> k1 = 30;
+		t -> k1 = 30.0;
 		t -> k3 = 0.0;
 		t -> Brel = 1.0;
 	}
@@ -245,11 +244,11 @@ Delta Speaker_to_Delta (Speaker me) {
 		t -> Dy = t -> Dyeq = my nose.weq [itube - 65];
 		t -> Dz = t -> Dzeq = my nose.Dz;
 		t -> mass = 0.006;
-		t -> k1 = 100;
+		t -> k1 = 100.0;
 		t -> k3 = 0.0;
 		t -> Brel = 1.0;
 	}
-	thy tube [65]. Dy = thy tube [65]. Dyeq = 0.0;   /* Override: nasopharyngeal port closed. */
+	thy tube [65]. Dy = thy tube [65]. Dyeq = 0.0;   // override: nasopharyngeal port closed
 
 	/* The default structure:
 	 * every tube is connected on the left to the previous tube (index one lower).
@@ -260,8 +259,8 @@ Delta Speaker_to_Delta (Speaker me) {
 		t -> s1 = 5e6 * t -> Dx * t -> Dz;
 		t -> s3 = t -> s1 / (0.9e-3 * 0.9e-3);
 		t -> dy = 1e-5;
-		t -> left1 = t - 1;   /* Connect to the previous tube on the left. */
-		t -> right1 = t + 1;   /* Connect to the next tube on the right. */
+		t -> left1 = t - 1;   // connect to the previous tube on the left
+		t -> right1 = t + 1;   // connect to the next tube on the right
 	}
 
 	/***** Connections: boundaries and interfaces. *****/
@@ -269,7 +268,7 @@ Delta Speaker_to_Delta (Speaker me) {
 	/* The leftmost boundary: the diaphragm (tube 1).
 	 * Disconnect on the left.
 	 */
-	thy tube [SMOOTH_LUNGS ? FIRST_TUBE : 1]. left1 = NULL;   /* Closed at diaphragm. */
+	thy tube [SMOOTH_LUNGS ? FIRST_TUBE : 1]. left1 = nullptr;   // closed at diaphragm
 
 	/* Optional one-mass model of the vocal cords.
 	 * Short-circuit over tube 37 (upper glottis).
@@ -281,7 +280,7 @@ Delta Speaker_to_Delta (Speaker me) {
 		thy tube [38]. left1 = thy tube + 36;
 
 		/* Disconnect tube 37 on both sides. */
-		thy tube [37]. left1 = thy tube [37]. right1 = NULL;
+		thy tube [37]. left1 = thy tube [37]. right1 = nullptr;
 	}
 
 	/* Optionally couple vocal cords with conus elasticus.
@@ -298,58 +297,58 @@ Delta Speaker_to_Delta (Speaker me) {
 		thy tube [36]. left1 = thy tube + 86;
 
 		/* Disconnect tubes 32..35 on both sides. */
-		thy tube [32]. left1 = thy tube [32]. right1 = NULL;
-		thy tube [33]. left1 = thy tube [33]. right1 = NULL;
-		thy tube [34]. left1 = thy tube [34]. right1 = NULL;
-		thy tube [35]. left1 = thy tube [35]. right1 = NULL;
+		thy tube [32]. left1 = thy tube [32]. right1 = nullptr;
+		thy tube [33]. left1 = thy tube [33]. right1 = nullptr;
+		thy tube [34]. left1 = thy tube [34]. right1 = nullptr;
+		thy tube [35]. left1 = thy tube [35]. right1 = nullptr;
 	} else {
 
 		/* Disconnect tubes 79..86 on both sides. */
 		for (itube = 79; itube <= 86; itube ++)
-			thy tube [itube]. left1 = thy tube [itube]. right1 = NULL;
+			thy tube [itube]. left1 = thy tube [itube]. right1 = nullptr;
 	}
 
 	/* Optionally add a shunt parallel to the glottis.
 	 * Create a side branch from tube 34/35 (or 85/86) to tube 38/39 with tubes 87..89.
 	 */
 	if (my shunt.Dx != 0.0) {
-		int topOfTrachea = my cord.numberOfMasses == 10 ? 86 : 35;
+		int topOfTrachea = ( my cord.numberOfMasses == 10 ? 86 : 35 );
 
 		/* Create a three-way interface below the shunt.
 		 * Connect lowest shunt tube (87) with top of trachea (34/35 or 85/86).
 		 */
-		thy tube [topOfTrachea - 1]. right2 = thy tube + 87;   /* Trachea to shunt. */
-		thy tube [87]. left1 = thy tube + topOfTrachea - 1;   /* Shunt to trachea. */
-		thy tube [87]. Dxeq = thy tube [topOfTrachea - 1]. Dxeq = thy tube [topOfTrachea]. Dxeq;   /* Equal length. */
+		thy tube [topOfTrachea - 1]. right2 = thy tube + 87;   // trachea to shunt
+		thy tube [87]. left1 = thy tube + topOfTrachea - 1;   // shunt to trachea
+		thy tube [87]. Dxeq = thy tube [topOfTrachea - 1]. Dxeq = thy tube [topOfTrachea]. Dxeq;   // equal length
 		thy tube [87]. Dx = thy tube [topOfTrachea - 1]. Dx = thy tube [topOfTrachea]. Dx;
 
 		/* Create a three-way interface above the shunt.
 		 * Connect highest shunt tube (89) with bottom of pharynx (38/39).
 		 */
-		thy tube [89]. right1 = thy tube + 39;   /* Shunt to pharynx. */
-		thy tube [39]. left2 = thy tube + 89;   /* Pharynx to shunt. */
-		thy tube [89]. Dxeq = thy tube [39]. Dxeq = thy tube [38]. Dxeq;   /* All three of equal length. */
+		thy tube [89]. right1 = thy tube + 39;   // shunt to pharynx
+		thy tube [39]. left2 = thy tube + 89;   // pharynx to shunt
+		thy tube [89]. Dxeq = thy tube [39]. Dxeq = thy tube [38]. Dxeq;   // all three of equal length
 		thy tube [89]. Dx = thy tube [39]. Dx = thy tube [38]. Dx;
 	} else {
 
 		/* Disconnect tubes 87..89 on both sides. */
 		for (itube = 87; itube <= 89; itube ++)
-			thy tube [itube]. left1 = thy tube [itube]. right1 = NULL;
+			thy tube [itube]. left1 = thy tube [itube]. right1 = nullptr;
 	}
 
 	/* Create a three-way interface at the nasopharyngeal port.
 	 * Connect tubes 50 (pharynx), 51 (mouth), and 65 (nose).
 	 */
-	thy tube [50]. right2 = thy tube + 65;   /* Pharynx to nose. */
-	thy tube [65]. left1 = thy tube + 50;   /* Nose to pharynx. */
-	thy tube [65]. Dxeq = thy tube [51]. Dxeq = thy tube [50]. Dxeq;   /* All three must be of equal length. */
+	thy tube [50]. right2 = thy tube + 65;   // pharynx to nose
+	thy tube [65]. left1 = thy tube + 50;   // nose to pharynx
+	thy tube [65]. Dxeq = thy tube [51]. Dxeq = thy tube [50]. Dxeq;   // all three must be of equal length
 	thy tube [65]. Dx = thy tube [51]. Dx = thy tube [50]. Dx;
 
 	/* The rightmost boundaries: the lips (tube 64) and the nostrils (tube 78).
 	 * Disconnect on the right.
 	 */
-	thy tube [64]. right1 = NULL;   /* Radiation at the lips. */
-	thy tube [78]. right1 = NULL;   /* Radiation at the nostrils. */
+	thy tube [64]. right1 = nullptr;   // radiation at the lips
+	thy tube [78]. right1 = nullptr;   // radiation at the nostrils
 
 	for (itube = 1; itube <= thy numberOfTubes; itube ++) {
 		Delta_Tube t = thy tube + itube;
@@ -358,7 +357,7 @@ Delta Speaker_to_Delta (Speaker me) {
 		Melder_assert (! t->right1 || t->right1->left1 == t || t->right1->left2 == t);
 		Melder_assert (! t->right2 || t->right2->left1 == t);
 	}
-	return thee.transfer();
+	return thee;
 }
 
 /* End of file Speaker_to_Delta.cpp */
diff --git a/artsynth/Speaker_to_Delta.h b/artsynth/Speaker_to_Delta.h
index ad6d42e..b9ed437 100644
--- a/artsynth/Speaker_to_Delta.h
+++ b/artsynth/Speaker_to_Delta.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Speaker.h"
 #include "Delta.h"
 
-Delta Speaker_to_Delta (Speaker me);
+autoDelta Speaker_to_Delta (Speaker me);
 
 /* End of file Speaker_to_Delta.h */
diff --git a/artsynth/manual_Artsynth.cpp b/artsynth/manual_Artsynth.cpp
index ff8dfb3..518d8e9 100644
--- a/artsynth/manual_Artsynth.cpp
+++ b/artsynth/manual_Artsynth.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/artsynth/praat_Artsynth.cpp b/artsynth/praat_Artsynth.cpp
index 4086af7..86528ce 100644
--- a/artsynth/praat_Artsynth.cpp
+++ b/artsynth/praat_Artsynth.cpp
@@ -1,20 +1,19 @@
 /* praat_Artsynth.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Art_Speaker.h"
@@ -38,10 +37,11 @@ FORM (Art_create, U"Create a default Articulation", U"Articulatory synthesis") {
 	WORD (U"Name", U"articulation")
 	OK2
 DO
-	praat_new (Art_create (), GET_STRING (U"Name"));
+	autoArt me = Art_create ();
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (Art_edit, U"View & Edit Articulation", 0) {
+FORM (Art_edit, U"View & Edit Articulation", nullptr) {
 	for (int i = 1; i <= kArt_muscle_MAX; i ++)
 		REAL (kArt_muscle_getText (i), U"0.0")
 	OK2
@@ -68,11 +68,11 @@ DO
 	praat_new (Artword_create (GET_REAL (U"Duration")), GET_STRING (U"Name"));
 END2 }
 
-FORM (Artword_draw, U"Draw one Artword tier", NULL) {
+FORM (Artword_draw, U"Draw one Artword tier", nullptr) {
 	OPTIONMENU (U"Muscle", kArt_muscle_LUNGS)
 	for (int ienum = 1; ienum <= kArt_muscle_MAX; ienum ++)
 		OPTION (kArt_muscle_getText (ienum))
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	
@@ -88,11 +88,12 @@ DIRECT2 (Artword_edit) {
 	WHERE (SELECTED) {
 		iam_LOOP (Artword);
 		autoArtwordEditor editor = ArtwordEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (Artword_getTarget, U"Get one Artword target", 0) {
+FORM (Artword_getTarget, U"Get one Artword target", nullptr) {
 	REAL (U"Time (seconds)", U"0.0")
 	OPTIONMENU (U"Muscle", kArt_muscle_LUNGS)
 	for (int ienum = 1; ienum <= kArt_muscle_MAX; ienum ++)
@@ -110,7 +111,7 @@ DIRECT2 (Artword_help) {
 	Melder_help (U"Artword");
 END2 }
 
-FORM (Artword_setTarget, U"Set one Artword target", 0) {
+FORM (Artword_setTarget, U"Set one Artword target", nullptr) {
 	REAL (U"Time (seconds)", U"0.0")
 	REAL (U"Target value (0-1)", U"0.0")
 	OPTIONMENU (U"Muscle", kArt_muscle_LUNGS)
@@ -127,14 +128,14 @@ DO
 	}
 END2 }
 
-FORM (Artword_to_Art, U"From Artword to Art", 0) {
+FORM (Artword_to_Art, U"From Artword to Art", nullptr) {
 	REAL (U"Time (seconds)", U"0.0")
 	OK2
 DO
 	LOOP {
 		iam (Artword);
 		autoArt thee = Artword_to_Art (me, GET_REAL (U"Time"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -165,12 +166,12 @@ DIRECT2 (Art_Speaker_to_VocalTract) {
 	iam_ONLY (Art);
 	thouart_ONLY (Speaker);
 	autoVocalTract him = Art_Speaker_to_VocalTract (me, thee);
-	praat_new (him.transfer(), my name, U"_", thy name);
+	praat_new (him.move(), my name, U"_", thy name);
 END2 }
 
 /***** ARTWORD & SPEAKER *****/
 
-FORM (Artword_Speaker_draw, U"Draw Artword & Speaker", 0) {
+FORM (Artword_Speaker_draw, U"Draw Artword & Speaker", nullptr) {
 	NATURAL (U"Number of steps", U"5")
 	OK2
 DO
@@ -181,7 +182,7 @@ DO
 END2 }
 
 FORM (Artword_Speaker_to_Sound, U"Articulatory synthesizer", U"Artword & Speaker: To Sound...") {
-	POSITIVE (U"Sampling frequency (Hz)", U"22050")
+	POSITIVE (U"Sampling frequency (Hz)", U"22050.0")
 	NATURAL (U"Oversampling factor", U"25")
 	INTEGER (U"Width 1", U"0")
 	INTEGER (U"Width 2", U"0")
@@ -194,7 +195,7 @@ FORM (Artword_Speaker_to_Sound, U"Articulatory synthesizer", U"Artword & Speaker
 	INTEGER (U"Velocity 3", U"0")
 	OK2
 DO
-	Sound w1, w2, w3, p1, p2, p3, v1, v2, v3;
+	autoSound w1, w2, w3, p1, p2, p3, v1, v2, v3;
 	int iw1 = GET_INTEGER (U"Width 1");
 	int iw2 = GET_INTEGER (U"Width 2");
 	int iw3 = GET_INTEGER (U"Width 3");
@@ -211,26 +212,33 @@ DO
 			& w1, iw1, & w2, iw2, & w3, iw3,
 			& p1, ip1, & p2, ip2, & p3, ip3,
 			& v1, iv1, & v2, iv2, & v3, iv3);
-	praat_new (him.transfer(), my name, U"_", thy name);
-	if (iw1) praat_new (w1, U"width", iw1);
-	if (iw2) praat_new (w2, U"width", iw2);
-	if (iw3) praat_new (w3, U"width", iw3);
-	if (ip1) praat_new (p1, U"pressure", ip1);
-	if (ip2) praat_new (p2, U"pressure", ip2);
-	if (ip3) praat_new (p3, U"pressure", ip3);
-	if (iv1) praat_new (v1, U"velocity", iv1);
-	if (iv2) praat_new (v2, U"velocity", iv2);
-	if (iv3) praat_new (v3, U"velocity", iv3);
+	praat_new (him.move(), my name, U"_", thy name);
+	if (iw1) praat_new (w1.move(), U"width", iw1);
+	if (iw2) praat_new (w2.move(), U"width", iw2);
+	if (iw3) praat_new (w3.move(), U"width", iw3);
+	if (ip1) praat_new (p1.move(), U"pressure", ip1);
+	if (ip2) praat_new (p2.move(), U"pressure", ip2);
+	if (ip3) praat_new (p3.move(), U"pressure", ip3);
+	if (iv1) praat_new (v1.move(), U"velocity", iv1);
+	if (iv2) praat_new (v2.move(), U"velocity", iv2);
+	if (iv3) praat_new (v3.move(), U"velocity", iv3);
+END2 }
+
+DIRECT2 (Artword_Speaker_movie) {
+	Graphics graphics = Movie_create (U"Artword & Speaker movie", 300, 300);
+	iam_ONLY (Artword);
+	thouart_ONLY (Speaker);
+	Artword_Speaker_movie (me, thee, graphics);
 END2 }
 
 /***** ARTWORD & SPEAKER [ & SOUND ] *****/
 
-DIRECT2 (Artword_Speaker_movie) {
-	Graphics g = Movie_create (U"Artword & Speaker movie", 300, 300);
+DIRECT2 (Artword_Speaker_Sound_movie) {
+	Graphics graphics = Movie_create (U"Artword & Speaker & Sound movie", 300, 300);
 	iam_ONLY (Artword);
 	thouart_ONLY (Speaker);
 	heis_ONLY (Sound);   // can be null
-	Artword_Speaker_Sound_movie (me, thee, him, g);
+	Artword_Speaker_Sound_movie (me, thee, him, graphics);
 END2 }
 
 /***** SPEAKER *****/
@@ -248,7 +256,7 @@ FORM (Speaker_create, U"Create a Speaker", U"Create Speaker...") {
 	OK2
 DO
 	autoSpeaker me = Speaker_create (GET_STRING (U"Kind of speaker"), Melder_atoi (GET_STRING (U"Number of tubes in glottis")));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (Speaker_help) {
@@ -284,7 +292,7 @@ FORM (VocalTract_createFromPhone, U"Create Vocal Tract from phone", U"Create Voc
 	OK2
 DO
 	autoVocalTract me = VocalTract_createFromPhone (GET_STRING (U"Phone"));
-	praat_new (me.transfer(), GET_STRING (U"Phone"));
+	praat_new (me.move(), GET_STRING (U"Phone"));
 END2 }
 
 DIRECT2 (VocalTract_draw) {
@@ -304,7 +312,7 @@ DO
 	LOOP {
 		iam (VocalTract);
 		try {
-			Matrix_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -321,17 +329,17 @@ DIRECT2 (VocalTract_to_Matrix) {
 	WHERE (SELECTED) {
 		iam_LOOP (VocalTract);
 		autoMatrix thee = VocalTract_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (VocalTract_to_Spectrum, U"From Vocal Tract to Spectrum", 0) {
+FORM (VocalTract_to_Spectrum, U"From Vocal Tract to Spectrum", nullptr) {
 	LABEL (U"", U"Compute transfer function")
 	NATURAL (U"Number of frequencies", U"4097")
 	POSITIVE (U"Maximum frequency (Hz)", U"5000")
 	REAL (U"Glottal damping", U"0.1")
-	BOOLEAN (U"Radiation damping", 1)
-	BOOLEAN (U"Internal damping", 1)
+	BOOLEAN (U"Radiation damping", true)
+	BOOLEAN (U"Internal damping", true)
 	OK2
 DO
 	LOOP {
@@ -339,7 +347,7 @@ DO
 		autoSpectrum thee = VocalTract_to_Spectrum (me, GET_INTEGER (U"Number of frequencies"),
 			GET_REAL (U"Maximum frequency"), GET_REAL (U"Glottal damping"),
 			GET_INTEGER (U"Radiation damping"), GET_INTEGER (U"Internal damping"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -349,60 +357,60 @@ END2 }
 
 void manual_Artsynth_init (ManPages me);
 
-void praat_uvafon_Artsynth_init (void);
-void praat_uvafon_Artsynth_init (void) {
-	Thing_recognizeClassesByName (classArt, classArtword, classSpeaker, NULL);
-
-	praat_addMenuCommand (U"Objects", U"New", U"Articulatory synthesis", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Articulatory synthesis tutorial", 0, 1, DO_ArticulatorySynthesisTutorial);
-	praat_addMenuCommand (U"Objects", U"New", U"-- new articulatory synthesis -- ", 0, 1, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Articulation...", 0, 1, DO_Art_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Speaker...", 0, 1, DO_Speaker_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Artword...", 0, 1, DO_Artword_create);
-	praat_addMenuCommand (U"Objects", U"New", U"-- new vocal tract --", 0, 1, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Vocal Tract from phone...", 0, 1, DO_VocalTract_createFromPhone);
-
-	praat_addAction1 (classArt, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Art_edit);
-	praat_addAction1 (classArt, 1, U"Edit", 0, praat_HIDDEN, DO_Art_edit);
-
-	praat_addAction1 (classArtword, 0, U"Artword help", 0, 0, DO_Artword_help);
-	praat_addAction1 (classArtword, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Artword_edit);
-	praat_addAction1 (classArtword, 1, U"Edit", 0, praat_HIDDEN, DO_Artword_edit);
-	praat_addAction1 (classArtword, 0, U"Info", 0, 0, 0);
-	praat_addAction1 (classArtword, 1, U"Get target...", 0, 0, DO_Artword_getTarget);
-	praat_addAction1 (classArtword, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classArtword, 0, U"Draw...", 0, 0, DO_Artword_draw);
-	praat_addAction1 (classArtword, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classArtword, 1, U"Set target...", 0, 0, DO_Artword_setTarget);
-	praat_addAction1 (classArtword, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classArtword, 0, U"To Art (slice)...", 0, 0, DO_Artword_to_Art);
-
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw", 0, 0, 0);
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw", 0, 0, DO_Art_Speaker_draw);
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Fill inner contour", 0, 0, DO_Art_Speaker_fillInnerContour);
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw mesh", 0, 0, DO_Art_Speaker_drawMesh);
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Synthesize", 0, 0, 0);
-	praat_addAction2 (classArt, 1, classSpeaker, 1, U"To VocalTract", 0, 0, DO_Art_Speaker_to_VocalTract);
-
-	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Movie", 0, 0, DO_Artword_Speaker_movie);
-	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Draw", 0, 0, 0);
-	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Draw...", 0, 0, DO_Artword_Speaker_draw);
-	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Synthesize", 0, 0, 0);
-	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"To Sound...", 0, 0, DO_Artword_Speaker_to_Sound);
-
-	praat_addAction3 (classArtword, 1, classSpeaker, 1, classSound, 1, U"Movie", 0, 0, DO_Artword_Speaker_movie);
-
-	praat_addAction1 (classSpeaker, 0, U"Speaker help", 0, 0, DO_Speaker_help);
-
-	praat_addAction1 (classVocalTract, 0, U"VocalTract help", 0, 0, DO_VocalTract_help);
-	praat_addAction1 (classVocalTract, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classVocalTract, 0, U"Draw", 0, 0, DO_VocalTract_draw);
-	praat_addAction1 (classVocalTract, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classVocalTract, 0, U"To Spectrum...", 0, 0, DO_VocalTract_to_Spectrum);
-	praat_addAction1 (classVocalTract, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classVocalTract, 0, U"Formula...", 0, 0, DO_VocalTract_formula);
-	praat_addAction1 (classVocalTract, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classVocalTract, 0, U"To Matrix", 0, 0, DO_VocalTract_to_Matrix);
+void praat_uvafon_Artsynth_init ();
+void praat_uvafon_Artsynth_init () {
+	Thing_recognizeClassesByName (classArt, classArtword, classSpeaker, nullptr);
+
+	praat_addMenuCommand (U"Objects", U"New", U"Articulatory synthesis", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Articulatory synthesis tutorial", nullptr, 1, DO_ArticulatorySynthesisTutorial);
+	praat_addMenuCommand (U"Objects", U"New", U"-- new articulatory synthesis -- ", nullptr, 1, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Articulation...", nullptr, 1, DO_Art_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Speaker...", nullptr, 1, DO_Speaker_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Artword...", nullptr, 1, DO_Artword_create);
+	praat_addMenuCommand (U"Objects", U"New", U"-- new vocal tract --", nullptr, 1, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Vocal Tract from phone...", nullptr, 1, DO_VocalTract_createFromPhone);
+
+	praat_addAction1 (classArt, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Art_edit);
+	praat_addAction1 (classArt, 1, U"Edit", nullptr, praat_HIDDEN, DO_Art_edit);
+
+	praat_addAction1 (classArtword, 0, U"Artword help", nullptr, 0, DO_Artword_help);
+	praat_addAction1 (classArtword, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Artword_edit);
+	praat_addAction1 (classArtword, 1, U"Edit", nullptr, praat_HIDDEN, DO_Artword_edit);
+	praat_addAction1 (classArtword, 0, U"Info", nullptr, 0, nullptr);
+	praat_addAction1 (classArtword, 1, U"Get target...", nullptr, 0, DO_Artword_getTarget);
+	praat_addAction1 (classArtword, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classArtword, 0, U"Draw...", nullptr, 0, DO_Artword_draw);
+	praat_addAction1 (classArtword, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classArtword, 1, U"Set target...", nullptr, 0, DO_Artword_setTarget);
+	praat_addAction1 (classArtword, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classArtword, 0, U"To Art (slice)...", nullptr, 0, DO_Artword_to_Art);
+
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw", nullptr, 0, nullptr);
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw", nullptr, 0, DO_Art_Speaker_draw);
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Fill inner contour", nullptr, 0, DO_Art_Speaker_fillInnerContour);
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Draw mesh", nullptr, 0, DO_Art_Speaker_drawMesh);
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction2 (classArt, 1, classSpeaker, 1, U"To VocalTract", nullptr, 0, DO_Art_Speaker_to_VocalTract);
+
+	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Movie", nullptr, 0, DO_Artword_Speaker_movie);
+	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Draw", nullptr, 0, nullptr);
+	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Draw...", nullptr, 0, DO_Artword_Speaker_draw);
+	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction2 (classArtword, 1, classSpeaker, 1, U"To Sound...", nullptr, 0, DO_Artword_Speaker_to_Sound);
+
+	praat_addAction3 (classArtword, 1, classSpeaker, 1, classSound, 1, U"Movie", nullptr, 0, DO_Artword_Speaker_Sound_movie);
+
+	praat_addAction1 (classSpeaker, 0, U"Speaker help", nullptr, 0, DO_Speaker_help);
+
+	praat_addAction1 (classVocalTract, 0, U"VocalTract help", nullptr, 0, DO_VocalTract_help);
+	praat_addAction1 (classVocalTract, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classVocalTract, 0, U"Draw", nullptr, 0, DO_VocalTract_draw);
+	praat_addAction1 (classVocalTract, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classVocalTract, 0, U"To Spectrum...", nullptr, 0, DO_VocalTract_to_Spectrum);
+	praat_addAction1 (classVocalTract, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classVocalTract, 0, U"Formula...", nullptr, 0, DO_VocalTract_formula);
+	praat_addAction1 (classVocalTract, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classVocalTract, 0, U"To Matrix", nullptr, 0, DO_VocalTract_to_Matrix);
 
 	manual_Artsynth_init (theCurrentPraatApplication -> manPages);
 }
diff --git a/contrib/ola/FeatureWeights.cpp b/contrib/ola/FeatureWeights.cpp
index 7c3b738..f6dde56 100644
--- a/contrib/ola/FeatureWeights.cpp
+++ b/contrib/ola/FeatureWeights.cpp
@@ -1,20 +1,19 @@
 /* FeatureWeights.cpp
  *
- * Copyright (C) 2007-2008 Ola So"der, 2010-2012 Paul Boersma
+ * Copyright (C) 2007-2008 Ola So"der, 2010-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -48,17 +47,17 @@
 
 void structFeatureWeights :: v_info ()
 {
-    this -> structData :: v_info ();
-    MelderInfo_writeLine (U"Number of weights: ", fweights -> numberOfColumns);
+    our structDaata :: v_info ();
+    MelderInfo_writeLine (U"Number of weights: ", our fweights -> numberOfColumns);
 }
 
-Thing_implement (FeatureWeights, Data, 0);
+Thing_implement (FeatureWeights, Daata, 0);
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // Creation...    //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-FeatureWeights FeatureWeights_create
+autoFeatureWeights FeatureWeights_create
 (
     ///////////////////////////////
     // Parameters                //
@@ -74,7 +73,7 @@ FeatureWeights FeatureWeights_create
 		for (long i = 1; i <= nweights; i ++) {
 			my fweights -> data [1] [i] = 1;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FeatureWeights not created.");
 	}
@@ -100,32 +99,32 @@ long FeatureWeights_computePriors
 
 {
     long nc = 0;
-    for (long y = 1; y <= c->size; y++)
+    for (long y = 1; y <= c->size; y ++)
     {
         long ifriend = -1;
-        for (long sc = 0; sc < nc; sc++)
-            if (FeatureWeights_areFriends ((SimpleString) c->item[y], (SimpleString) c->item[indices[sc]])) ifriend = sc;
+        for (long sc = 0; sc < nc; sc ++)
+            if (FeatureWeights_areFriends (c->at [y], c->at [indices [sc]])) ifriend = sc;
 
         if (ifriend < 0)
         {
-            indices[nc] = y;
-            priors[nc] = 1;
-            nc++;
+            indices [nc] = y;
+            priors [nc] = 1;
+            nc ++;
         }
         else
         {
-            priors[ifriend]++;
+            priors [ifriend] ++;
         }
     }
-    for (long q = 0; q < nc; q++) priors[q] /= c->size;
-    return(nc);
+    for (long q = 0; q < nc; q++) priors [q] /= c->size;
+    return nc;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // Compute feature weights                                                                 //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-FeatureWeights FeatureWeights_compute           // Obsolete
+autoFeatureWeights FeatureWeights_compute           // Obsolete
 (
     ///////////////////////////////
     // Parameters                //
@@ -139,7 +138,7 @@ FeatureWeights FeatureWeights_compute           // Obsolete
 )
 
 {
-    return(FeatureWeights_computeRELIEF(pp, c, k));
+    return FeatureWeights_computeRELIEF (pp, c, k);
 }
 
 
@@ -147,7 +146,7 @@ FeatureWeights FeatureWeights_compute           // Obsolete
 // Compute feature weights (wrapper), evaluate using folding                               //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-FeatureWeights FeatureWeights_computeWrapperInt
+autoFeatureWeights FeatureWeights_computeWrapperInt
 (
     ///////////////////////////////
     // Parameters                //
@@ -172,14 +171,14 @@ FeatureWeights FeatureWeights_computeWrapperInt
 )
 
 {
-	if (! me) return NULL;
+	if (! me) return autoFeatureWeights();
 
 	try {
 		double pivot = 0.5;
 		double range = 0.5;
 		autoNUMvector <double> results (0L, nseeds);
 
-		autoThingVector <FeatureWeights> cs (0L, nseeds);
+		autoThingVector <structFeatureWeights> cs (0L, nseeds);
 		for (long y = 0; y <= nseeds; y++) {
 			cs [y] = FeatureWeights_create (my input -> nx);
 		}
@@ -187,7 +186,7 @@ FeatureWeights FeatureWeights_computeWrapperInt
 		for (long x = 1; x <= my input -> nx; x ++)
 			cs [nseeds] -> fweights -> data [1] [x] = pivot;
 
-		results [nseeds] = KNN_evaluate (me, cs [nseeds], k, d, emode);
+		results [nseeds] = KNN_evaluate (me, cs [nseeds].get(), k, d, emode);
 
 		while (range > 0 && results [nseeds] < stop)
 		{
@@ -195,20 +194,20 @@ FeatureWeights FeatureWeights_computeWrapperInt
 
 			if (mode == 2)
 			{
-				for (long x = 1; x <= (my input)->nx; x++)
+				for (long x = 1; x <= (my input)->nx; x ++)
 				{
-					for (long y = 0; y < nseeds; y++)
+					for (long y = 0; y < nseeds; y ++)
 					{
 						cs[y]->fweights->data[1][x] = NUMrandomUniform(OlaMAX(0, cs[nseeds]->fweights->data[1][x] - range),
 													  OlaMIN(1, cs[nseeds]->fweights->data[1][x] + range));
-						results[y] = KNN_evaluate(me, cs[y], k, d, emode);
+						results[y] = KNN_evaluate (me, cs [y].get(), k, d, emode);
 					}
 					for (long q = 0; q < nseeds; q++)
 						if (results[q] > results[best]) best = q;
 
 					if (results[best] > results[nseeds])
 					{
-						for (long x = 1; x <= (my input)->nx; x++)
+						for (long x = 1; x <= (my input)->nx; x++)   // HELP FIXME the same index for an inner and an outer loop!!!
 							cs[nseeds]->fweights->data[1][x] = cs[best]->fweights->data[1][x];
 						results[nseeds] = results[best];
 					}
@@ -223,7 +222,7 @@ FeatureWeights FeatureWeights_computeWrapperInt
 						cs[y]->fweights->data[1][x] = NUMrandomUniform(OlaMAX(0, cs[nseeds]->fweights->data[1][x] - range),
 													  OlaMIN(1, cs[nseeds]->fweights->data[1][x] + range));
 					}
-					results[y] = KNN_evaluate (me, cs [y], k, d, emode);
+					results[y] = KNN_evaluate (me, cs [y].get(), k, d, emode);
 				}
 
 				for (long q = 0; q < nseeds; q++)
@@ -239,8 +238,7 @@ FeatureWeights FeatureWeights_computeWrapperInt
 			range -= alfa;
 		}
 
-		FeatureWeights result = cs [nseeds];
-		cs [nseeds] = NULL;   // prevent destruction
+		autoFeatureWeights result = cs [nseeds].move();
 		return result;
 	} catch (MelderError) {
 		Melder_throw (U"FeatureWeights: wrapper not computed.");
@@ -251,7 +249,7 @@ FeatureWeights FeatureWeights_computeWrapperInt
 // Compute feature weights (wrapper), evaluate using separate test set                     //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-FeatureWeights FeatureWeights_computeWrapperExt
+autoFeatureWeights FeatureWeights_computeWrapperExt
 (
     ///////////////////////////////
     // Parameters                //
@@ -278,14 +276,14 @@ FeatureWeights FeatureWeights_computeWrapperExt
 )
 
 {
-	if (nn == NULL) return NULL;
+	if (! nn) return autoFeatureWeights();
 
 	try {
 		double pivot = 0.5;
 		double range = 0.5;
 		autoNUMvector <double> results (0L, nseeds);
 
-		autoThingVector <FeatureWeights> cs (0L, nseeds);
+		autoThingVector <structFeatureWeights> cs (0L, nseeds);
 		for (long y = 0; y <= nseeds; y++) {
 			cs [y] = FeatureWeights_create (pp -> nx);
 		}
@@ -293,7 +291,7 @@ FeatureWeights FeatureWeights_computeWrapperExt
 		for (long x = 1; x <= pp -> nx; x ++)
 			cs [nseeds] -> fweights -> data [1] [x] = pivot;
 
-		results [nseeds] = FeatureWeights_evaluate (cs [nseeds], nn, pp, c, k, d);
+		results [nseeds] = FeatureWeights_evaluate (cs [nseeds].get(), nn, pp, c, k, d);
 
 		while (range > 0 && results [nseeds] < stop)
 		{
@@ -305,16 +303,16 @@ FeatureWeights FeatureWeights_computeWrapperExt
 				{
 					for (long y = 0; y < nseeds; y++)
 					{
-						cs[y]->fweights->data[1][x] = NUMrandomUniform(OlaMAX(0, cs[nseeds]->fweights->data[1][x] - range),
+						cs[y]->fweights->data[1][x] = NUMrandomUniform(OlaMAX(0, (cs[nseeds]->fweights)->data[1][x] - range),
 													  OlaMIN(1, cs[nseeds]->fweights->data[1][x] + range));
-						results[y] = FeatureWeights_evaluate(cs[y], nn, pp, c, k, d);
+						results[y] = FeatureWeights_evaluate (cs[y].get(), nn, pp, c, k, d);
 					}
 					for (long q = 0; q < nseeds; q++)
 						if (results[q] > results[best]) best = q;
 
 					if (results[best] > results[nseeds])
 					{
-						for (long x = 1; x <= pp->nx; x++)
+						for (long x = 1; x <= pp->nx; x++)   // BUG: a loop over x inside a loop over x; just hope mode is never 2
 							cs[nseeds]->fweights->data[1][x] = cs[best]->fweights->data[1][x];
 						results[nseeds] = results[best];
 					}
@@ -329,7 +327,7 @@ FeatureWeights FeatureWeights_computeWrapperExt
 						cs[y]->fweights->data[1][x] = NUMrandomUniform(OlaMAX(0, cs[nseeds]->fweights->data[1][x] - range),
 													  OlaMIN(1, cs[nseeds]->fweights->data[1][x] + range));
 					}
-					results[y] = FeatureWeights_evaluate (cs [y], nn, pp, c, k, d);
+					results[y] = FeatureWeights_evaluate (cs [y].get(), nn, pp, c, k, d);
 				}
 
 				for (long q = 0; q < nseeds; q++)
@@ -345,8 +343,7 @@ FeatureWeights FeatureWeights_computeWrapperExt
 			range -= alfa;
 		}
 
-		FeatureWeights result = cs [nseeds];
-		cs [nseeds] = NULL;   // prevent destruction
+		autoFeatureWeights result = cs [nseeds].move();
 		return result;
 	} catch (MelderError) {
 		Melder_throw (U"FeatureWeights: wrapper not computed.");
@@ -382,14 +379,13 @@ double FeatureWeights_evaluate      // Obsolete - use *_EvaluateWithTestSet
 {
 	try {
 		autoCategories o = KNN_classifyToCategories (nn, pp, fws, k, d);
-		double hits = 0;
-		for (long y = 1; y <= o->size; y++)
-			if (FeatureWeights_areFriends ((SimpleString) o -> item [y], (SimpleString) c -> item [y])) hits ++;
-		hits /= o -> size;
+		double hits = 0.0;
+		for (long y = 1; y <= o->size; y ++)
+			if (FeatureWeights_areFriends (o->at [y], c->at [y])) hits ++;
+		hits /= o->size;
 		return hits;
 	} catch (MelderError) {
 		throw;
-		return 0;
 	}
 }
 
@@ -397,7 +393,7 @@ double FeatureWeights_evaluate      // Obsolete - use *_EvaluateWithTestSet
 // Compute feature weights according to the RELIEF-F algorithm                             //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-FeatureWeights FeatureWeights_computeRELIEF
+autoFeatureWeights FeatureWeights_computeRELIEF
 (
     ///////////////////////////////
     // Parameters                //
@@ -412,7 +408,7 @@ FeatureWeights FeatureWeights_computeRELIEF
 )
 
 {
-	autoPattern p = (Pattern) Data_copy (pp);
+	autoPattern p = Data_copy (pp);
 	autoFeatureWeights me = FeatureWeights_create (p -> nx);
 
 	/////////////////////////////////
@@ -448,10 +444,10 @@ FeatureWeights FeatureWeights_computeRELIEF
 
 	for (long y = 1; y <= p->ny; y++) {
 		for (long x = 1; x <= p->nx; x++) {
-			if (alfa [x]) {
+			if (alfa [x] != 0.0) {
 				p->z[y][x] = (p->z[y][x] - min[x]) / alfa[x];
 			} else {
-				p->z[y][x] = 0;
+				p->z[y][x] = 0.0;
 			}
 		}
 	}
@@ -473,33 +469,33 @@ FeatureWeights FeatureWeights_computeRELIEF
 
 	for (long y = 1; y <= p -> ny; y ++) {
 
-		long nfriends = KNN_kFriends (p.peek(), p.peek(), c, y, k, friends.peek());
-		long nenemies = KNN_kUniqueEnemies (p.peek(), p.peek(), c, y, nclasses - 1, enemies.peek());
+		long nfriends = KNN_kFriends (p.get(), p.get(), c, y, k, friends.peek());
+		long nenemies = KNN_kUniqueEnemies (p.get(), p.get(), c, y, nclasses - 1, enemies.peek());
 
 		if (nfriends && nenemies) {
 			autoNUMvector <double> classps (0L, nenemies - 1);
-			for (long eq = 0; eq < nenemies; eq++) {
-				for (long iq = 0; iq < nclasses; iq++) {
-					if (FeatureWeights_areFriends ((SimpleString) c->item[enemies[eq]], (SimpleString) c->item[classes[iq]])) {
-						classps[eq] = priors[iq];
+			for (long eq = 0; eq < nenemies; eq ++) {
+				for (long iq = 0; iq < nclasses; iq ++) {
+					if (FeatureWeights_areFriends (c->at [enemies [eq]], c->at [classes [iq]])) {
+						classps [eq] = priors [iq];
 						break;
 					}
 				}
 			}
-			for (long x = 1; x <= p->nx; x++) {
+			for (long x = 1; x <= p -> nx; x ++) {
 				double p1 = 0.0;
 				double p2 = 0.0;
-				for (long ec = 0; ec < nfriends; ec++) {
-					p1 += fabs(p->z[y][x] - p->z[friends[ec]][x]) / (p->ny * nfriends);
+				for (long ec = 0; ec < nfriends; ec ++) {
+					p1 += fabs (p -> z [y] [x] - p -> z [friends [ec]] [x]) / (p -> ny * nfriends);
 				}
 				for (long ec = 0; ec < nenemies; ec++) {
-					p2 += (fabs(p->z[y][x] - p->z[enemies[ec]][x]) * classps[ec]) / p->ny;
+					p2 += (fabs (p->z[y][x] - p->z[enemies[ec]][x]) * classps[ec]) / p->ny;
 				}
 				my fweights -> data [1] [x] = my fweights -> data [1] [x] - p1 + p2;
 			}
 		}
 	}
-	return me.transfer();
+	return me;
 }
 
 /* End of file FeatureWeights.cpp */
diff --git a/contrib/ola/FeatureWeights.h b/contrib/ola/FeatureWeights.h
index 74786a2..3c903c6 100644
--- a/contrib/ola/FeatureWeights.h
+++ b/contrib/ola/FeatureWeights.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -44,7 +43,6 @@
 /////////////////////////////////////////////////////
 
 #include "FeatureWeights_def.h"
-oo_CLASS_CREATE (FeatureWeights, Data);
 
 /////////////////////////////////////////////////////
 // Private definitions and macros                  //
@@ -58,7 +56,7 @@ oo_CLASS_CREATE (FeatureWeights, Data);
 /////////////////////////////////////////////////////
 
 // Create
-FeatureWeights FeatureWeights_create
+autoFeatureWeights FeatureWeights_create
 (
     long nweights           // number of weights
 );
@@ -72,7 +70,7 @@ long FeatureWeights_computePriors
 );
 
 // Compute feature weights (obsolete)
-FeatureWeights FeatureWeights_compute
+autoFeatureWeights FeatureWeights_compute
 (
     Pattern pp,             // Source pattern
     Categories c,           // Source categories
@@ -80,7 +78,7 @@ FeatureWeights FeatureWeights_compute
 );
 
 // Compute feature weights according to the RELIEF-F algorithm
-FeatureWeights FeatureWeights_computeRELIEF
+autoFeatureWeights FeatureWeights_computeRELIEF
 (
     Pattern pp,             // source pattern
     Categories c,           // source categories
diff --git a/contrib/ola/FeatureWeights_def.h b/contrib/ola/FeatureWeights_def.h
index f5d14d6..3fb3648 100644
--- a/contrib/ola/FeatureWeights_def.h
+++ b/contrib/ola/FeatureWeights_def.h
@@ -2,25 +2,25 @@
  *
  * Copyright (C) 2007-2009 Ola Söder, 2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT FeatureWeights
-oo_DEFINE_CLASS (FeatureWeights, Data)
-	oo_OBJECT (TableOfReal, 0, fweights)
+oo_DEFINE_CLASS (FeatureWeights, Daata)
+
+	oo_AUTO_OBJECT (TableOfReal, 0, fweights)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/contrib/ola/KNN.cpp b/contrib/ola/KNN.cpp
index 7a7e259..00da46c 100644
--- a/contrib/ola/KNN.cpp
+++ b/contrib/ola/KNN.cpp
@@ -1,20 +1,19 @@
 /* KNN.cpp
  *
- * Copyright (C) 2008 Ola So"der, 2010-2012 Paul Boersma
+ * Copyright (C) 2008 Ola So"der, 2010-2012,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,7 +48,7 @@
 #include "KNN_def.h"
 
 
-Thing_implement (KNN, Data, 0);
+Thing_implement (KNN, Daata, 0);
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // Praat specifics                                                                         //
@@ -57,7 +56,7 @@ Thing_implement (KNN, Data, 0);
 
 void structKNN :: v_info ()
 {
-    structData :: v_info ();
+    structDaata :: v_info ();
     MelderInfo_writeLine (U"Size of instancebase: ", nInstances);
 }
 
@@ -65,12 +64,12 @@ void structKNN :: v_info ()
 // Creation                                                                                //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-KNN KNN_create ()   
+autoKNN KNN_create ()
 {
 	try {
 		autoKNN me = Thing_new (KNN);
         my nInstances = 0;
-        return me.transfer();
+        return me;
     } catch (MelderError) {
 		Melder_throw (U"KNN classifier not created.");
 	}
@@ -104,14 +103,8 @@ int KNN_learn
         {
         case kOla_REPLACE:          // in REPLACE mode simply
                                     // dispose of the current
-            if (my nInstances > 0)  // instance base and store
-            {                       // the new one.
-                forget (my input);
-                forget (my output);
-            }
-
-            my input = (Pattern) Data_copy (p);   // LEAK
-            my output = (Categories) Data_copy (c);
+            my input = Data_copy (p);   // LEAK
+            my output = Data_copy (c);
             my nInstances = c->size;
 
             break;
@@ -130,16 +123,16 @@ int KNN_learn
 				/*
 				 * Create without change.
 				 */
-                autoPattern tinput = (Pattern) Matrix_appendRows (my input, p, classPattern);
-                autoCategories toutput = (Categories) Collections_merge (my output, c);
+				autoMatrix matrix = Matrix_appendRows (my input.get(), p, classPattern);
+                autoPattern tinput = matrix.static_cast_move <structPattern>();
+				autoCategories toutput = Data_copy (my output.get());
+				toutput -> merge (c);
 
 				/*
 				 * Change without error.
 				 */
-                forget (my input);
-                forget (my output);
-                my input = tinput.transfer();
-                my output = toutput.transfer();
+                my input = tinput.move();
+                my output = toutput.move();
                 my nInstances += p->ny;
             }
             else                                    // fail
@@ -179,7 +172,7 @@ typedef struct
 
 } KNN_input_ToCategories_t;
 
-Categories KNN_classifyToCategories
+autoCategories KNN_classifyToCategories
 (
     ///////////////////////////////
     // Parameters                //
@@ -213,26 +206,26 @@ Categories KNN_classifyToCategories
     long istart = 1;
     long istop = chunksize;
 
-    Categories output = Categories_create();
+    autoCategories output = Categories_create ();
     KNN_input_ToCategories_t ** input = (KNN_input_ToCategories_t **) malloc(nthreads * sizeof(KNN_input_ToCategories_t *));
 
-    if(!input)
-        return(NULL);
+    if (!input)
+        return autoCategories();
 
-    for(int i = 0; i < nthreads; ++i)
+    for (int i = 0; i < nthreads; i ++)
     {
-        input[i] = (KNN_input_ToCategories_t *) malloc(sizeof(KNN_input_ToCategories_t));
-        if(!input[i])
+        input [i] = (KNN_input_ToCategories_t *) malloc(sizeof(KNN_input_ToCategories_t));
+        if (! input [i])
         {
-            while(input[i--])
-                free(input[i]);
+            while (input [i --])
+                free (input [i]);
 
-            free(input);
-            return(NULL);
+            free (input);
+            return autoCategories();
         }
     }
 
-    for(int i = 0; i < nthreads; ++i)
+    for (int i = 0; i < nthreads; i ++)
     {  
         input[i]->me = me;
         input[i]->ps = ps;
@@ -242,7 +235,7 @@ Categories KNN_classifyToCategories
         input[i]->dist = dist;
         input[i]->istart = istart;
 
-        if(istop + chunksize > ps->ny)
+        if (istop + chunksize > ps->ny)
         {  
             input[i]->istop = ps->ny; 
             break;
@@ -257,21 +250,19 @@ Categories KNN_classifyToCategories
  
     enum KNN_thread_status * error = (enum KNN_thread_status *) KNN_threadDistribution(KNN_classifyToCategoriesAux, (void **) input, nthreads);
     //void *error = KNN_classifyToCategoriesAux (input [0]);
-    for (int i = 0; i < nthreads; ++ i)
+    for (int i = 0; i < nthreads; i ++)
         free (input [i]);
   
     free (input);
     if (error)           // Something went very wrong, you ought to inform the user!
     {
         free (error);
-        return NULL;
+        return autoCategories();
     }
 
-    if (output)
-    {
-        for (long i = 1; i <= ps->ny; ++i)
-            Collection_addItem (output, Data_copy ((SimpleString) my output -> item [outputindices [i]]));
-    }
+	for (long i = 1; i <= ps -> ny; i ++) {
+		output -> addItem_move (Data_copy (my output->at [outputindices [i]]));
+	}
 	NUMvector_free (outputindices, 0);
     return output;
 }
@@ -311,7 +302,7 @@ void * KNN_classifyToCategoriesAux
         ncollected = KNN_kNeighbours
         (
             ((KNN_input_ToCategories_t *) input)->ps, 
-            ((KNN_input_ToCategories_t *) input)->me->input, 
+            ((KNN_input_ToCategories_t *) input)->me->input.get(),
             ((KNN_input_ToCategories_t *) input)->fws, y, 
             ((KNN_input_ToCategories_t *) input)->k, indices, distances
         );
@@ -322,7 +313,7 @@ void * KNN_classifyToCategoriesAux
 
         ncategories = KNN_kIndicesToFrequenciesAndDistances
         (
-            ((KNN_input_ToCategories_t *) input)->me->output, 
+            ((KNN_input_ToCategories_t *) input)->me->output.get(),
             ((KNN_input_ToCategories_t *) input)->k, 
             indices, distances, freqs, freqindices
         );
@@ -351,29 +342,26 @@ void * KNN_classifyToCategoriesAux
 	NUMvector_free (freqindices, 0);
 	NUMvector_free (distances, 0);
 	NUMvector_free (freqs, 0);
-    return(NULL);
-
+    return nullptr;
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////
 // Classification - To TableOfReal                                                         //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-typedef struct
-{
-        KNN me;
-        Pattern ps;
-        Categories uniqueCategories;
-        TableOfReal output;
-        FeatureWeights fws;
-        long k;
-        int dist;
-        long istart;
-        long istop;
-
+typedef struct {
+	KNN me;
+	Pattern ps;
+	Categories uniqueCategories;
+	TableOfReal output;
+	FeatureWeights fws;
+	long k;
+	int dist;
+	long istart;
+	long istop;
 } KNN_input_ToTableOfReal_t;
 
-TableOfReal KNN_classifyToTableOfReal
+autoTableOfReal KNN_classifyToTableOfReal
 (
     ///////////////////////////////
     // Parameters                //
@@ -393,17 +381,17 @@ TableOfReal KNN_classifyToTableOfReal
 {
     int nthreads = KNN_getNumberOfCPUs();
     long chunksize =  ps->ny / nthreads;
-    Categories uniqueCategories = Categories_selectUniqueItems(my output, 1);
-    long ncategories = Categories_getSize(uniqueCategories);
+    autoCategories uniqueCategories = Categories_selectUniqueItems (my output.get());
+    long ncategories = Categories_getSize (uniqueCategories.get());
    
-    Melder_assert(nthreads > 0);
-    Melder_assert(ncategories > 0);
-    Melder_assert(k > 0 && k <= my nInstances);
+    Melder_assert (nthreads > 0);
+    Melder_assert (ncategories > 0);
+    Melder_assert (k > 0 && k <= my nInstances);
  
-    if(!ncategories)
-        return(NULL);
+    if (! ncategories)
+        return autoTableOfReal();
 
-    if(chunksize < 1)
+    if (chunksize < 1)
     {
         chunksize = 1;
         nthreads = ps->ny;
@@ -412,35 +400,35 @@ TableOfReal KNN_classifyToTableOfReal
     long istart = 1;
     long istop = chunksize;
 
-    KNN_input_ToTableOfReal_t ** input = (KNN_input_ToTableOfReal_t **) malloc(nthreads * sizeof(KNN_input_ToTableOfReal_t *));
+    KNN_input_ToTableOfReal_t ** input = (KNN_input_ToTableOfReal_t **) malloc (nthreads * sizeof (KNN_input_ToTableOfReal_t *));
     
-    if(!input)
-        return(NULL);
+    if(! input)
+        return autoTableOfReal();
 
-    TableOfReal output = TableOfReal_create(ps->ny, ncategories);
+    autoTableOfReal output = TableOfReal_create(ps->ny, ncategories);
 
-    for (long i = 1; i <= ncategories; ++i)
-        TableOfReal_setColumnLabel (output, i,  SimpleString_c ((SimpleString) uniqueCategories->item[i]));
+    for (long i = 1; i <= ncategories; i ++)
+        TableOfReal_setColumnLabel (output.get(), i, SimpleString_c (uniqueCategories->at [i]));
 
-    for(int i = 0; i < nthreads; ++i)
+    for (int i = 0; i < nthreads; i ++)
     {
-        input[i] = (KNN_input_ToTableOfReal_t *) malloc(sizeof(KNN_input_ToTableOfReal_t));
-        if(!input[i])
+        input [i] = (KNN_input_ToTableOfReal_t *) malloc (sizeof (KNN_input_ToTableOfReal_t));
+        if (! input [i])
         {
-            while(input[i--])
-                free(input[i]);
+            while (input [i --])   // ppgb FIXME: is always false
+                free (input [i]);   // ppgb FIXME: the stopping condition is incorrect
 
-            free(input);
-            return(NULL);
+            free (input);
+            return autoTableOfReal();
         }
     }
 
-    for(int i = 0; i < nthreads; ++i)
+    for (int i = 0; i < nthreads; i ++)
     {  
         input[i]->me = me;
         input[i]->ps = ps;
-        input[i]->output = output;
-        input[i]->uniqueCategories = uniqueCategories;
+        input[i]->output = output.get();   // YUCK: reference copy
+        input[i]->uniqueCategories = uniqueCategories.releaseToAmbiguousOwner();
         input[i]->fws = fws;
         input[i]->k = k;
         input[i]->dist = dist;
@@ -460,16 +448,16 @@ TableOfReal KNN_classifyToTableOfReal
     }
  
     enum KNN_thread_status * error = (enum KNN_thread_status *) KNN_threadDistribution(KNN_classifyToTableOfRealAux, (void **) input, nthreads);
-    for(int i = 0; i < nthreads; ++i)
-        free(input[i]);
+    for (int i = 0; i < nthreads; i ++)
+        free (input [i]);
   
-    free(input);
-    if(error)           // Something went very wrong, you ought to inform the user!
+    free (input);
+    if (error)           // Something went very wrong, you ought to inform the user!
     {
-        free(error);
-        return(NULL);
+        free (error);
+        return autoTableOfReal();
     }
-    return(output);
+    return output;
 }
 
 
@@ -485,28 +473,32 @@ void * KNN_classifyToTableOfRealAux
 
 {
     long ncategories = Categories_getSize (((KNN_input_ToTableOfReal_t *) input)->uniqueCategories);
-    long *indices = NUMvector <long> (0, ((KNN_input_ToTableOfReal_t *) input)->k);
-    double *distances = NUMvector <double> (0, ((KNN_input_ToTableOfReal_t *) input)->k);
+    autoNUMvector <long> indices (0L, ((KNN_input_ToTableOfReal_t *) input)->k);
+    autoNUMvector <double> distances (0L, ((KNN_input_ToTableOfReal_t *) input)->k);
 
     for (long y = ((KNN_input_ToTableOfReal_t *) input)->istart; y <= ((KNN_input_ToTableOfReal_t *) input)->istop; ++y)
     {
         KNN_kNeighbours(((KNN_input_ToTableOfReal_t *) input)->ps, 
-                        ((KNN_input_ToTableOfReal_t *) input)->me->input, 
+                        ((KNN_input_ToTableOfReal_t *) input)->me->input.get(),
                         ((KNN_input_ToTableOfReal_t *) input)->fws, y, 
-                        ((KNN_input_ToTableOfReal_t *) input)->k, indices, distances);
+                        ((KNN_input_ToTableOfReal_t *) input)->k, indices.peek(), distances.peek());
 
         for(long i = 0; i < ((KNN_input_ToTableOfReal_t *) input)->k; ++i)
         {
-            for(long j = 1; j <= ncategories; ++j)
-                if(FeatureWeights_areFriends ((SimpleString) ((KNN_input_ToTableOfReal_t *) input)->me->output->item[indices[i]], (SimpleString) ((KNN_input_ToTableOfReal_t *) input)->uniqueCategories->item[j])) 
-                    ++((KNN_input_ToTableOfReal_t *) input)->output->data[y][j];
+            for(long j = 1; j <= ncategories; ++j) {
+                if (FeatureWeights_areFriends (((KNN_input_ToTableOfReal_t *) input) -> me -> output->at [indices [i]],
+											   ((KNN_input_ToTableOfReal_t *) input) -> uniqueCategories->at [j]))
+				{
+                    ++((KNN_input_ToTableOfReal_t *) input) -> output -> data [y] [j];
+				}
+			}
         }
     }
  
     switch (((KNN_input_ToTableOfReal_t *) input)->dist)
     {
         case kOla_DISTANCE_WEIGHTED_VOTING:
-            for (long y = ((KNN_input_ToTableOfReal_t *) input)->istart; y <= ((KNN_input_ToTableOfReal_t *) input)->istop; ++y)
+            for (long y = ((KNN_input_ToTableOfReal_t *) input) -> istart; y <= ((KNN_input_ToTableOfReal_t *) input) -> istop; y ++)
             {
                 double sum = 0;
                 for(long c = 1; c <= ncategories; ++c)
@@ -548,16 +540,14 @@ void * KNN_classifyToTableOfRealAux
             }
 
     }
-	NUMvector_free (indices, 0);
-	NUMvector_free (distances, 0);
-    return(NULL);
+    return nullptr;
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////
 // Classification - Folding                                                                //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-Categories KNN_classifyFold
+autoCategories KNN_classifyFold
 (
     ///////////////////////////////
     // Parameters                //
@@ -605,13 +595,13 @@ Categories KNN_classifyFold
         // Localizing the k nearest neighbours //
         /////////////////////////////////////////
 
-        ncollected = KNN_kNeighboursSkipRange (ps, my input, fws, y, k, indices.peek(), distances.peek(), begin, end);
+        ncollected = KNN_kNeighboursSkipRange (ps, my input.get(), fws, y, k, indices.peek(), distances.peek(), begin, end);
 
         /////////////////////////////////////////////////
         // Computing frequencies and average distances //
         /////////////////////////////////////////////////
 
-        ncategories = KNN_kIndicesToFrequenciesAndDistances (my output, k, indices.peek(), distances.peek(), freqs.peek(), freqindices.peek());
+        ncategories = KNN_kIndicesToFrequenciesAndDistances (my output.get(), k, indices.peek(), distances.peek(), freqs.peek(), freqindices.peek());
 
         ////////////////////////
         // Distance weighting //
@@ -621,21 +611,21 @@ Categories KNN_classifyFold
         {
             case kOla_DISTANCE_WEIGHTED_VOTING:
                 for (long c = 0; c < ncategories; c ++)
-                    freqs [c] *= 1 / OlaMAX (distances [c], kOla_MINFLOAT);
+                    freqs [c] *= 1.0 / OlaMAX (distances [c], kOla_MINFLOAT);
                 break;
 
             case kOla_SQUARED_DISTANCE_WEIGHTED_VOTING:
                 for (long c = 0; c < ncategories; c ++)
-                    freqs [c] *= 1 / OlaMAX (OlaSQUARE (distances [c]), kOla_MINFLOAT);
+                    freqs [c] *= 1.0 / OlaMAX (OlaSQUARE (distances [c]), kOla_MINFLOAT);
         }
 
         KNN_normalizeFloatArray (freqs.peek(), ncategories);
         outputindices [noutputindices++] = freqindices [KNN_max (freqs.peek(), ncategories)];
     }
 
-    Categories output = Categories_create ();
+	autoCategories output = Categories_create ();
 	for (long o = 0; o < noutputindices; o ++) {
-		Collection_addItem (output, Data_copy ((SimpleString) my output -> item [outputindices [o]]));
+		output -> addItem_move (Data_copy (my output->at [outputindices [o]]));
 	}
 	return output;
 }
@@ -663,7 +653,7 @@ double KNN_evaluate
 )
 
 {
-    double correct = 0;
+    double correct = 0.0;
     long adder;
 
     switch(mode)
@@ -683,21 +673,19 @@ double KNN_evaluate
             adder = 0;
     }
     
-    if (adder ==  0)
+    if (adder == 0)
         return -1;
 
     for (long begin = 1; begin <= my nInstances; begin += adder)
     {
-        autoCategories c = KNN_classifyFold (me, my input, fws, k, dist, begin, OlaMIN (begin + adder - 1, my nInstances));
-        for (long y = 1; y <= c -> size; y ++)
-            if (FeatureWeights_areFriends ((SimpleString) c -> item [y], (SimpleString) my output -> item [begin + y - 1])) 
-                ++ correct;
+        autoCategories c = KNN_classifyFold (me, my input.get(), fws, k, dist, begin, OlaMIN (begin + adder - 1, my nInstances));
+        for (long y = 1; y <= c->size; y ++)
+            if (FeatureWeights_areFriends (c->at [y], my output->at [begin + y - 1]))
+                correct += 1.0;
     }
 
     correct /= (double) my nInstances;
-
     return correct;
-
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -725,20 +713,11 @@ double KNN_evaluateWithTestSet
 )
 
 {
-    double correct = 0;
-    Categories t = KNN_classifyToCategories(me, p, fws, k, dist);
-
-    if (t)
-    {
-        for (long y = 1; y <= t->size; y++)
-            if (FeatureWeights_areFriends ((SimpleString) t->item[y], (SimpleString) c->item[y])) correct++;
-        forget(t);
-        return(correct / c->size);
-    }
-    else
-    {
-        return(0);
-    }
+    double correct = 0.0;
+    autoCategories t = KNN_classifyToCategories (me, p, fws, k, dist);
+	for (long y = 1; y <= t->size; y ++)
+		if (FeatureWeights_areFriends (t->at [y], c->at [y])) correct += 1.0;
+	return correct / c->size;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -784,11 +763,11 @@ double KNN_modelSearch
 		};
 
 		long max = *k;
-		double range = (double) max / 2;
+		double range = (double) max / 2.0;
 		double pivot = range;
 
-		double dpivot = 1;
-		double drange = 1;
+		double dpivot = 1.0;
+		double drange = 1.0;
 		double drate = rate / range;
 
 		soil best = {0, lround(dpivot), lround(dpivot)};
@@ -798,9 +777,9 @@ double KNN_modelSearch
 		{
 			for (long n = 0; n < nseeds; n++)
 			{
-				field[n].k = lround(NUMrandomUniform(OlaMAX(pivot - range, 1), OlaMIN(pivot + range, max)));
-				field[n].dist = lround(NUMrandomUniform(OlaMAX(dpivot - drange, 0), OlaMIN(dpivot + drange, 2)));
-				field[n].performance = KNN_evaluate(me, fws, field[n].k, dists[field[n].dist], mode);
+				field[n].k = lround (NUMrandomUniform (OlaMAX (pivot - range, 1), OlaMIN (pivot + range, max)));
+				field[n].dist = lround (NUMrandomUniform (OlaMAX (dpivot - drange, 0), OlaMIN (dpivot + drange, 2)));
+				field[n].performance = KNN_evaluate (me, fws, field[n].k, dists[field[n].dist], mode);
 			}
 
 			long maxindex = 0;
@@ -848,11 +827,10 @@ double KNN_distanceEuclidean
 )
 
 {
-    double distance = 0;
+    double distance = 0.0;
     for (long x = 1; x <= ps->nx; ++x)
-        distance += OlaSQUARE((ps->z[rows][x] - pt->z[rowt][x]) * fws->fweights->data[1][x]);
-
-    return(sqrt(distance));
+        distance += OlaSQUARE ((ps->z[rows][x] - pt->z[rowt][x]) * fws->fweights->data[1][x]);
+    return sqrt (distance);
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -872,11 +850,10 @@ double KNN_distanceManhattan
 )
 
 {
-    double distance = 0;
+    double distance = 0.0;
     for (long x = 1; x <= ps->nx; ++x)
-        distance += fabs(ps->z[rows][x] - pt->z[rowt][x]);
-
-    return(distance);
+        distance += fabs (ps->z[rows][x] - pt->z[rowt][x]);
+    return distance;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -893,12 +870,10 @@ long KNN_max
 
 {
     long maxndx = 0;
-
-    for(long maxc = 1; maxc < ndistances; ++maxc)
+    for (long maxc = 1; maxc < ndistances; ++maxc)
         if (distances[maxc] > distances[maxndx]) 
             maxndx = maxc;
-
-    return(maxndx);
+    return maxndx;
 }
 
 
@@ -936,9 +911,9 @@ long KNN_kNeighboursSkip
 
     autoNUMvector <double> distances (0L, k - 1);
 
-    Melder_assert(jy > 0 && jy <= j->ny);
-    Melder_assert(k > 0 && k <= p->ny);
-    Melder_assert(skipper <= p->ny);
+    Melder_assert (jy > 0 && jy <= j->ny);
+    Melder_assert (k > 0 && k <= p->ny);
+    Melder_assert (skipper <= p->ny);
 
     while (dc < k && py <= p -> ny)
     {
@@ -1020,18 +995,18 @@ long KNN_kNeighboursSkipRange
                                     //
     long py = 0;                    //
 
-    Melder_assert(jy > 0 && jy <= j->ny);
-    Melder_assert(k > 0 && k <= p->ny);
-    Melder_assert(end > 0 && end <= j->ny);
-    Melder_assert(begin > 0 && begin <= j->ny);
+    Melder_assert (jy > 0 && jy <= j->ny);
+    Melder_assert (k > 0 && k <= p->ny);
+    Melder_assert (end > 0 && end <= j->ny);
+    Melder_assert (begin > 0 && begin <= j->ny);
 
     while (dc < k && (end + py) % p->ny + 1 != begin)   // the first k neighbours are the nearest found
     {                                                   // sofar
 
         if ((end + py) % p->ny + 1 != jy)               // no instance is its own neighbour
         {
-            distances[dc] = KNN_distanceEuclidean(j, p, fws, jy, (end + py) % p->ny + 1);
-            indices[dc] = (end + py) % p->ny + 1;
+            distances [dc] = KNN_distanceEuclidean (j, p, fws, jy, (end + py) % p->ny + 1);
+            indices [dc] = (end + py) % p->ny + 1;
             ++dc;
         }
         ++py;
@@ -1045,15 +1020,15 @@ long KNN_kNeighboursSkipRange
             double d = KNN_distanceEuclidean(j, p, fws, jy, (end + py) % p->ny + 1);
             if (d < distances[maxi])
             {
-                distances[maxi] = d;
-                indices[maxi] = (end + py) % p->ny + 1;
-                maxi = KNN_max(distances, k);
+                distances [maxi] = d;
+                indices [maxi] = (end + py) % p->ny + 1;
+                maxi = KNN_max (distances, k);
             }
         }
         ++py;
     }
 
-    return(OlaMIN(k, dc)); // return the number of found neighbours
+    return OlaMIN (k, dc); // return the number of found neighbours
 
 }
 
@@ -1091,16 +1066,16 @@ long KNN_kNeighbours
     long dc = 0;
     long py = 1;
 
-    Melder_assert(jy > 0 && jy <= j->ny);
-    Melder_assert(k > 0 && k <= p->ny);
-    Melder_assert(indices);
-    Melder_assert(distances);
+    Melder_assert (jy > 0 && jy <= j->ny);
+    Melder_assert (k > 0 && k <= p->ny);
+    Melder_assert (indices);
+    Melder_assert (distances);
 
     while (dc < k && py <= p->ny)
     {
         if (py != jy)
         {
-            distances[dc] = KNN_distanceEuclidean(j, p, fws, jy, py);
+            distances[dc] = KNN_distanceEuclidean (j, p, fws, jy, py);
             indices[dc] = py;
             ++dc;
         }
@@ -1112,25 +1087,25 @@ long KNN_kNeighbours
     {
         if (py != jy)
         {
-            double d = KNN_distanceEuclidean(j, p, fws, jy, py);
-            if (d < distances[maxi])
+            double d = KNN_distanceEuclidean (j, p, fws, jy, py);
+            if (d < distances [maxi])
             {
-                distances[maxi] = d;
-                indices[maxi] = py;
-                maxi = KNN_max(distances, k);
+                distances [maxi] = d;
+                indices [maxi] = py;
+                maxi = KNN_max (distances, k);
             }
         }
         ++py;
     }
 
-    long ret = OlaMIN(k, dc);
+    long ret = OlaMIN (k, dc);
     if (ret < 1)
     {
-        indices[0] = jy;
-        return(0);
+        indices [0] = jy;
+        return 0;
     }
     else
-        return(ret);
+        return ret;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -1162,40 +1137,39 @@ long KNN_kFriends
     long maxi;
     long dc = 0;
     long py = 1;
-    double *distances = NUMvector <double> (0, k - 1);
+    autoNUMvector <double> distances (0L, k - 1);
 
-    Melder_assert(jy <= j->ny  && k <= p->ny && k > 0);
-    Melder_assert(indices);
+    Melder_assert (jy <= j->ny  && k <= p->ny && k > 0);
+    Melder_assert (indices);
 
     while (dc < k && py < p->ny)
     {
-        if (jy != py && FeatureWeights_areFriends ((SimpleString) c->item[jy], (SimpleString) c->item[py]))
+        if (jy != py && FeatureWeights_areFriends (c->at [jy], c->at [py]))
         {
-            distances[dc] = KNN_distanceManhattan(j, p, jy, py);
+            distances[dc] = KNN_distanceManhattan (j, p, jy, py);
             indices[dc] = py;
             dc++;
         }
         ++py;
     }
 
-    maxi = KNN_max(distances, k);
+    maxi = KNN_max (distances.peek(), k);
     while (py <= p->ny)
     {
-        if (jy != py && FeatureWeights_areFriends ((SimpleString) c->item[jy],(SimpleString) c->item[py]))
+        if (jy != py && FeatureWeights_areFriends (c->at [jy], c->at [py]))
         {
-            double d = KNN_distanceManhattan(j, p, jy, py);
-            if (d < distances[maxi])
+            double d = KNN_distanceManhattan (j, p, jy, py);
+            if (d < distances [maxi])
             {
-                distances[maxi] = d;
-                indices[maxi] = py;
-                maxi = KNN_max(distances, k);
+                distances [maxi] = d;
+                indices [maxi] = py;
+                maxi = KNN_max (distances.peek(), k);
             }
         }
         ++py;
     }
 
-	NUMvector_free (distances, 0);
-    return(OlaMIN(k,dc));
+    return OlaMIN (k, dc);
 
 }
 
@@ -1225,14 +1199,13 @@ double KNN_nearestEnemy
 
     for (long y = 2; y <= p->ny; y++)
     {
-        if (FeatureWeights_areEnemies ((SimpleString) c->item[jy], (SimpleString) c->item[y]))
+        if (FeatureWeights_areEnemies (c->at [jy], c->at [y]))
         {
             double newdist = KNN_distanceManhattan(j, p, jy, y);
             if (newdist > distance) distance = newdist;
         }
     }
-
-    return(distance);
+    return distance;
 
 }
 
@@ -1267,12 +1240,12 @@ long KNN_friendsAmongkNeighbours
     Melder_assert (jy > 0 && jy <= j->ny  && k <= p->ny && k > 0);
 
     autoFeatureWeights fws = FeatureWeights_create (p -> nx);
-    long ncollected = KNN_kNeighbours (j, p, fws.peek(), jy, k, indices.peek(), distances.peek());
+    long ncollected = KNN_kNeighbours (j, p, fws.get(), jy, k, indices.peek(), distances.peek());
 
     while (ncollected--)
-        if (FeatureWeights_areFriends ((SimpleString) c->item[jy], (SimpleString) c->item[indices[ncollected]])) friends++;
+        if (FeatureWeights_areFriends (c->at [jy], c->at [indices [ncollected]])) friends ++;
     
-    return friends ;
+    return friends;
 
 }
 
@@ -1310,15 +1283,15 @@ long KNN_kUniqueEnemies
     Melder_assert (jy <= j->ny);
 	Melder_assert (k <= p->ny);
 	Melder_assert (k > 0);
-    Melder_assert (indices != NULL);
+    Melder_assert (indices);
 
     while (dc < k && py <= p->ny)
     {
-        if (FeatureWeights_areEnemies ((SimpleString) c->item[jy], (SimpleString) c->item[py]))
+        if (FeatureWeights_areEnemies (c->at [jy], c->at [py]))
         {
             int hasfriend = 0;
             for (long sc = 0; sc < dc; ++sc)
-                if (FeatureWeights_areFriends ((SimpleString) c->item[py], (SimpleString) c->item[indices[sc]])) hasfriend = 1;
+                if (FeatureWeights_areFriends (c->at [py], c->at [indices [sc]])) hasfriend = 1;
 
             if (!hasfriend)
             {
@@ -1333,16 +1306,16 @@ long KNN_kUniqueEnemies
     maxi = KNN_max(distances, k);
     while (py <= p->ny)
     {
-        if (FeatureWeights_areEnemies ((SimpleString) c->item[jy], (SimpleString) c->item[py]))
+        if (FeatureWeights_areEnemies (c->at [jy], c->at [py]))
         {
             int hasfriend = 0;
             for (long sc = 0; sc < dc; ++sc)
-                if (FeatureWeights_areFriends ((SimpleString) c->item[py], (SimpleString) c->item[indices[sc]])) hasfriend = 1;
+                if (FeatureWeights_areFriends (c->at [py], c->at [indices[sc]])) hasfriend = 1;
 
             if (!hasfriend)
             {
                 double d = KNN_distanceManhattan(j, p, jy, py);
-                if (d < distances[maxi] && FeatureWeights_areFriends ((SimpleString) c->item[jy], (SimpleString) c->item[py]))
+                if (d < distances[maxi] && FeatureWeights_areFriends (c->at [jy], c->at [py]))
                 {
                     distances[maxi] = d;
                     indices[maxi] = py;
@@ -1353,14 +1326,14 @@ long KNN_kUniqueEnemies
         ++py;
     }
 	NUMvector_free (distances, 0);
-    return(OlaMIN(k,dc));
+    return OlaMIN (k, dc);
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // Compute dissimilarity matrix                                                            //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-Dissimilarity KNN_patternToDissimilarity
+autoDissimilarity KNN_patternToDissimilarity
 (
     ///////////////////////////////
     // Parameters                //
@@ -1377,7 +1350,7 @@ Dissimilarity KNN_patternToDissimilarity
 	for (long y = 1; y <= p -> ny; ++ y)
 		for (long x = 1; x <= p -> ny; ++ x)
 			output -> data [y] [x] = KNN_distanceEuclidean (p, p, fws, y, x);
-	return output.transfer();
+	return output;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -1406,8 +1379,8 @@ long KNN_kIndicesToFrequenciesAndDistances
 {
     long ncategories = 0;
     
-    Melder_assert(k <= c->size && k > 0);
-    Melder_assert(distances && indices && freqs  && freqindices);
+    Melder_assert (k <= c->size && k > 0);
+    Melder_assert (distances && indices && freqs && freqindices);
 
     for (long y = 0; y < k; ++y)
     {
@@ -1416,7 +1389,7 @@ long KNN_kIndicesToFrequenciesAndDistances
 
         while (ifriend < ncategories)
         {
-            if (FeatureWeights_areFriends ((SimpleString) c->item[indices[y]], (SimpleString) c->item[freqindices[ifriend]]))
+            if (FeatureWeights_areFriends (c->at [indices [y]], c->at [freqindices [ifriend]]))
             {
                 hasfriend = 1;
                 break;
@@ -1484,36 +1457,28 @@ void KNN_removeInstance
 )
 
 {
-    if (y == 1 && my nInstances == 1)
-    {
+    if (y == 1 && my nInstances == 1) {
         my nInstances = 0;
-        forget(my input);
-        forget(my output);
+        my input.reset();
+        my output.reset();
         return;
     }
 
-    Melder_assert(y > 0 && y <= my nInstances);
-    if (y > my nInstances || y < 1) 
-        return;                         // safety belt
+    Melder_assert (y > 0 && y <= my nInstances);
 
-    Pattern newPattern = (Pattern) Pattern_create(my nInstances - 1, (my input)->nx);
-    Melder_assert(newPattern);
-    if (newPattern)
-    {
-        long yt = 1;
-        for (long cy = 1; cy <= my nInstances; ++cy)
-            if (cy != y)
-            {
-                for (long cx = 1; cx <= (my input)->nx; ++cx)
-                    newPattern->z[yt][cx] = (my input)->z[cy][cx];
-                ++yt;
-            }
+    autoPattern newPattern = Pattern_create (my nInstances - 1, my input -> nx);
+	long yt = 1;
+	for (long cy = 1; cy <= my nInstances; cy ++) {
+		if (cy != y) {
+			for (long cx = 1; cx <= my input -> nx; cx ++)
+				newPattern -> z [yt] [cx] = my input -> z [cy] [cx];
+			yt ++;
+		}
+	}
 
-        forget(my input);
-        my input = newPattern;
-        Collection_removeItem(my output, y);
-        my nInstances--;
-    }
+	my input = newPattern.move();
+	my output -> removeItem (y);
+	my nInstances--;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -1529,38 +1494,35 @@ void KNN_shuffleInstances
     KNN me      // Classifier whose instance
                 // base is to be shuffled
 )
-
 {
     if (my nInstances < 2) 
-        return;                 // It takes atleast two to tango
+        return;   // it takes at least two to tango
 
     autoPattern new_input = Pattern_create (my nInstances, my input -> nx);
     autoCategories new_output = Categories_create ();
 	long y = 1;
 	while (my nInstances)
 	{
-		long pick = (long) lround (NUMrandomUniform (1, my nInstances));
-		Collection_addItem (new_output.peek(), Data_copy ((SimpleString) my output -> item [pick]));
+		long pick = NUMrandomInteger (1, my nInstances);
+		new_output -> addItem_move (Data_copy (my output->at [pick]));
 
-		for (long x = 1;x <= (my input)->nx; ++x)
-			new_input -> z [y] [x] = my input-> z [pick] [x];
+		for (long x = 1; x <= my input -> nx; x ++)
+			new_input -> z [y] [x] = my input -> z [pick] [x];
 
 		KNN_removeInstance (me, pick);
-		++y;
+		y ++;
 	}
 
-	forget (my input);
-	forget (my output);
-	my nInstances = new_output -> size;
-	my input = new_input.transfer();
-	my output = new_output.transfer();
+	my nInstances = new_output->size;
+	my input = new_input.move();
+	my output = new_output.move();
 }
 
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // KNN to Permutation (experimental)                                                       //
 /////////////////////////////////////////////////////////////////////////////////////////////
-Permutation KNN_SA_ToPermutation
+autoPermutation KNN_SA_ToPermutation
 (
     ///////////////////////////////
     // Parameters                //
@@ -1588,8 +1550,8 @@ Permutation KNN_SA_ToPermutation
     gsl_rng * r;
     const gsl_rng_type * T;
 
-    KNN_SA_t * istruct = KNN_SA_t_create(my input); 
-    Permutation result = Permutation_create(my nInstances);
+    KNN_SA_t * istruct = KNN_SA_t_create (my input.get());
+    autoPermutation result = Permutation_create (my nInstances);
 
     gsl_siman_params_t params = { (int) tries, (int) iterations, step_size, boltzmann_c, temp_start, damping_f, temp_stop};
 
@@ -1602,7 +1564,7 @@ Permutation KNN_SA_ToPermutation
                     KNN_SA_t_energy, 
                     KNN_SA_t_step, 
                     KNN_SA_t_metric, 
-                    NULL,                // KNN_SA_t_print, 
+                    nullptr,                // KNN_SA_t_print
                     KNN_SA_t_copy, 
                     KNN_SA_t_copy_construct, 
                     KNN_SA_t_destroy, 
@@ -1614,7 +1576,7 @@ Permutation KNN_SA_ToPermutation
 
     KNN_SA_t_destroy(istruct);
 
-    return(result);
+    return result;
 }
 
 
diff --git a/contrib/ola/KNN.h b/contrib/ola/KNN.h
index b5fea78..9c83eae 100644
--- a/contrib/ola/KNN.h
+++ b/contrib/ola/KNN.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -48,7 +47,6 @@
 /////////////////////////////////////////////////////
 
 #include "KNN_def.h"
-oo_CLASS_CREATE (KNN, Data);
 
 /////////////////////////////////////////////////////
 // Private definitions and macros                  //
@@ -84,7 +82,7 @@ oo_CLASS_CREATE (KNN, Data);
 /////////////////////////////////////////////////////
 
 // a near-dummy function
-KNN KNN_create(void);
+autoKNN KNN_create ();
 
 // Learning
 int KNN_learn
@@ -97,7 +95,7 @@ int KNN_learn
 );
 
 // Classification - To Categories
-Categories KNN_classifyToCategories
+autoCategories KNN_classifyToCategories
 (
     KNN me,             // the classifier being used
     Pattern ps,         // target pattern (where neighbours are sought for)
@@ -113,7 +111,7 @@ void * KNN_classifyToCategoriesAux
 );
 
 // Classification - To TableOfReal
-TableOfReal KNN_classifyToTableOfReal
+autoTableOfReal KNN_classifyToTableOfReal
 (
     KNN me,             // the classifier being used
     Pattern ps,         // target pattern (where neighbours are sought for)
@@ -129,7 +127,7 @@ void * KNN_classifyToTableOfRealAux
 );
 
 // Classification - To TableOfReal, all candidates
-TableOfReal KNN_classifyToTableOfRealAll
+autoTableOfReal KNN_classifyToTableOfRealAll
 (
     KNN me,             // the classifier being used
     Pattern ps,         // target pattern (where neighbours are sought for)
@@ -139,7 +137,7 @@ TableOfReal KNN_classifyToTableOfRealAll
 );
 
 // Classification - Folding
-Categories KNN_classifyFold
+autoCategories KNN_classifyFold
 (
     KNN me,             // the classifier being used
     Pattern ps,         // target pattern (where neighbours are sought for)
@@ -304,7 +302,7 @@ long KNN_kUniqueEnemies
 );
 
 // Compute dissimilarity matrix
-Dissimilarity KNN_patternToDissimilarity
+autoDissimilarity KNN_patternToDissimilarity
 (
     Pattern p,          // Pattern
     FeatureWeights fws  // Feature weights
@@ -345,7 +343,7 @@ void KNN_shuffleInstances
 );
 
 // Experimental code
-Permutation KNN_SA_ToPermutation
+autoPermutation KNN_SA_ToPermutation
 (
     KNN me,             // the classifier being used
     long tries,         //
@@ -427,7 +425,7 @@ void KNN_SA_partition
 );
 
 // Compute feature weights (wrapper), evaluate using folding
-FeatureWeights FeatureWeights_computeWrapperInt
+autoFeatureWeights FeatureWeights_computeWrapperInt
 (
     KNN me,                 // Classifier
     long k,                 // k(!)
@@ -440,7 +438,7 @@ FeatureWeights FeatureWeights_computeWrapperInt
 );
 
 // Compute feature weights (wrapper), evaluate using separate test set
-FeatureWeights FeatureWeights_computeWrapperExt
+autoFeatureWeights FeatureWeights_computeWrapperExt
 (
     KNN nn,                 // Classifier
     Pattern pp,             // test pattern
diff --git a/contrib/ola/KNN_def.h b/contrib/ola/KNN_def.h
index 74444d9..2187052 100644
--- a/contrib/ola/KNN_def.h
+++ b/contrib/ola/KNN_def.h
@@ -1,37 +1,36 @@
 /* KNN_def.h
  *
- * Copyright (C) 2007-2009 Ola Söder, 2011 Paul Boersma
+ * Copyright (C) 2007-2009 Ola Söder, 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
-#include "Pattern.h"
-
 #define ooSTRUCT KNN
-oo_DEFINE_CLASS (KNN, Data)
+oo_DEFINE_CLASS (KNN, Daata)
+
 	oo_LONG (nInstances)
-	oo_OBJECT (Pattern, 2, input)
-	oo_OBJECT (Categories, 0, output)
+	oo_AUTO_OBJECT (Pattern, 2, input)
+	oo_AUTO_OBJECT (Categories, 0, output)
 
 	#if oo_DECLARING
-		// overridden methods:
-			virtual void v_info ();
+		void v_info ()
+			override;
 	#endif
 
 oo_END_CLASS (KNN)
 #undef ooSTRUCT
 
+
 /* End of file KNN_def.h */
diff --git a/contrib/ola/KNN_prune.cpp b/contrib/ola/KNN_prune.cpp
index 0d7658e..ff39d93 100644
--- a/contrib/ola/KNN_prune.cpp
+++ b/contrib/ola/KNN_prune.cpp
@@ -1,20 +1,19 @@
 /* KNN_prune.cpp
  *
- * Copyright (C) 2007-2008 Ola So"der, 2010-2011 Paul Boersma
+ * Copyright (C) 2007-2008 Ola So"der, 2010-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -39,8 +38,8 @@ long KNN_prune_prune
     long k      // k(!)
 )
 {
-	autoCategories uniqueCategories = Categories_selectUniqueItems (my output, 1);
-	if (Categories_getSize (uniqueCategories.peek()) == my nInstances)
+	autoCategories uniqueCategories = Categories_selectUniqueItems (my output.get());
+	if (Categories_getSize (uniqueCategories.get()) == my nInstances)
 		return 0;
 	long removals = 0;
 	long ncandidates = 0;
@@ -48,7 +47,7 @@ long KNN_prune_prune
 	if (my nInstances <= 1)
 		return 0;
 	for (long y = 1; y <= my nInstances; y ++) {
-		if (KNN_prune_noisy (my input, my output, y, k)) {
+		if (KNN_prune_noisy (my input.get(), my output.get(), y, k)) {
 			if (n == 1 || NUMrandomUniform (0, 1) <= n) {
 				KNN_removeInstance (me, y);
 				++ removals;
@@ -56,13 +55,13 @@ long KNN_prune_prune
 		}
 	}
 	for (long y = 1; y <= my nInstances; ++ y) {
-		if (KNN_prune_superfluous (my input, my output, y, k, 0) && ! KNN_prune_critical (my input, my output, y, k))
+		if (KNN_prune_superfluous (my input.get(), my output.get(), y, k, 0) && ! KNN_prune_critical (my input.get(), my output.get(), y, k))
 			candidates [ncandidates ++] = y;
 	}
-	KNN_prune_sort (my input, my output, k, candidates.peek(), ncandidates);
+	KNN_prune_sort (my input.get(), my output.get(), k, candidates.peek(), ncandidates);
 	for (long y = 0; y < ncandidates; ++ y) {
-		if (KNN_prune_superfluous (my input, my output, candidates [y], k, 0) && ! KNN_prune_critical (my input, my output, candidates [y], k)) {
-			if (r == 1 || NUMrandomUniform (0, 1) <= r) {
+		if (KNN_prune_superfluous (my input.get(), my output.get(), candidates [y], k, 0) && ! KNN_prune_critical (my input.get(), my output.get(), candidates [y], k)) {
+			if (r == 1.0 || NUMrandomUniform (0.0, 1.0) <= r) {
 				KNN_removeInstance (me, candidates[y]);
 				for (long i = y + 1; i < ncandidates; ++ i) {
 					if(candidates[i] > candidates[y])
@@ -130,9 +129,9 @@ long KNN_prune_kCoverage
 	long cc = 0;
 	autoFeatureWeights fws = FeatureWeights_create (p -> nx);
 	autoNUMvector <long> tempindices (0L, p -> ny - 1);
-	for (long yy = 1; yy <= p -> ny; yy++) {
-		if (y != yy && FeatureWeights_areFriends ((SimpleString) c -> item [y], (SimpleString) c -> item [yy])) {
-			long n = KNN_kNeighboursSkip (p, p, fws.peek(), yy, k, tempindices.peek(), y);
+	for (long yy = 1; yy <= p -> ny; yy ++) {
+		if (y != yy && FeatureWeights_areFriends (c->at [y], c->at [yy])) {
+			long n = KNN_kNeighboursSkip (p, p, fws.get(), yy, k, tempindices.peek(), y);
 			while (n) {
 				Melder_assert (n <= p -> ny);
 				if (tempindices [-- n] == y) {
@@ -165,9 +164,9 @@ int KNN_prune_superfluous
 	autoNUMvector <long> freqindices (0L, k - 1);
 	autoNUMvector <double> distances (0L, k - 1);
 	autoNUMvector <double> freqs (0L, k - 1);
-	if (! KNN_kNeighboursSkip (p, p, fws.peek(), y, k, indices.peek(), skipper)) return 0;
+	if (! KNN_kNeighboursSkip (p, p, fws.get(), y, k, indices.peek(), skipper)) return 0;
 	long ncategories = KNN_kIndicesToFrequenciesAndDistances (c, k, indices.peek(), distances.peek(), freqs.peek(), freqindices.peek());
-	int result = FeatureWeights_areFriends ((SimpleString) c -> item [y], (SimpleString) c -> item [freqindices [KNN_max (freqs.peek(), ncategories)]]);
+	int result = FeatureWeights_areFriends (c->at [y], c->at [freqindices [KNN_max (freqs.peek(), ncategories)]]);
 	if (result)
 		return 1;
 	return 0;
@@ -189,7 +188,7 @@ int KNN_prune_critical
 	if (k > p -> ny) k = p -> ny;
 	autoFeatureWeights fws = FeatureWeights_create (p -> nx);
 	autoNUMvector <long> indices (0L, k - 1);
-	long ncollected = KNN_kNeighboursSkip (p, p, fws.peek(), y, k, indices.peek(), y);
+	long ncollected = KNN_kNeighboursSkip (p, p, fws.get(), y, k, indices.peek(), y);
 	for (long ic = 0; ic < ncollected; ic ++) {
 		if (! KNN_prune_superfluous (p, c, indices [ic], k, 0) || ! KNN_prune_superfluous (p, c, indices [ic], k, y)) {
 			return 1;
@@ -215,7 +214,7 @@ int KNN_prune_noisy
 	if (k > p -> ny) k = p -> ny;
 	autoFeatureWeights fws = FeatureWeights_create (p -> nx);
 	autoNUMvector <long> indices (0L, p->ny - 1);    // the coverage is not bounded by k but by n
-	long reachability = KNN_kNeighboursSkip (p, p, fws.peek(), y, k, indices.peek(), y); 
+	long reachability = KNN_kNeighboursSkip (p, p, fws.get(), y, k, indices.peek(), y);
 	long coverage = KNN_prune_kCoverage (p, c, y, k, indices.peek());
 	if (! KNN_prune_superfluous (p, c, y, k, 0) && reachability > coverage)
 		return 1;
diff --git a/contrib/ola/KNN_prune.h b/contrib/ola/KNN_prune.h
index a3fea7d..258af56 100644
--- a/contrib/ola/KNN_prune.h
+++ b/contrib/ola/KNN_prune.h
@@ -5,19 +5,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/contrib/ola/KNN_threads.cpp b/contrib/ola/KNN_threads.cpp
index 58a970b..b273e10 100644
--- a/contrib/ola/KNN_threads.cpp
+++ b/contrib/ola/KNN_threads.cpp
@@ -1,20 +1,19 @@
-/* KNN_threads.c
+/* KNN_threads.cpp
  *
  * Copyright (C) 2009 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -55,7 +54,7 @@
 // KNN_getNumberOfCPUs                             //
 /////////////////////////////////////////////////////
 
-int KNN_getNumberOfCPUs(void)
+int KNN_getNumberOfCPUs ()
 {
     return(1);
     
@@ -97,8 +96,8 @@ int KNN_getNumberOfCPUs(void)
     if(!Glpi) 
         return(1);
     
-    done = FALSE;
-    buffer = NULL;
+    done = false;
+    buffer = nullptr;
     returnLength = 0;
 
     while(!done) 
@@ -112,7 +111,7 @@ int KNN_getNumberOfCPUs(void)
                     free(buffer);
                 return (1);
             } 
-            else done = TRUE;
+            else done = true;
         }
         byteOffset = 0;
         ptr=buffer;
@@ -169,7 +168,7 @@ void * KNN_threadDistribution
         /*
         HANDLE hHandle[nthreads];
         for(int i = 0; i < nthreds; ++)
-            hHandle[i] = CreateThread(NULL, 0, function, input[i], 0, NULL);    
+            hHandle[i] = CreateThread(nullptr, 0, function, input[i], 0, nullptr);
         while(nthreads--)
             WaitForSingleObject(hHandle[nthreds], INFINITE);
         */
@@ -178,10 +177,10 @@ void * KNN_threadDistribution
         /*
         pthread_t thread_ids[nthreads];
         for(int i = 0; i < nthreads; ++i)
-            pthread_create(&thread_ids[i], NULL, function, input[i]);
+            pthread_create(&thread_ids[i], nullptr, function, input[i]);
         while(nthreads--)
-            pthread_join(thread_ids[nthreads], NULL);
-        return(NULL);
+            pthread_join(thread_ids[nthreads], nullptr);
+        return nullptr;
         */
 #endif
 	}
@@ -195,7 +194,7 @@ void * KNN_threadDistribution
 // KNN_threadTest                                  //
 /////////////////////////////////////////////////////
 
-void KNN_threadTest(void)
+void KNN_threadTest ()
 {
     void * dummy[KNN_getNumberOfCPUs()];
     KNN_threadDistribution(KNN_threadTestAux, (void **) &dummy, KNN_getNumberOfCPUs());
@@ -207,14 +206,14 @@ void KNN_threadTest(void)
 // KNN_threadTestAux                               //
 /////////////////////////////////////////////////////
 
-void * KNN_threadTestAux(void * dummy)
+void * KNN_threadTestAux (void * dummy)
 {
-    dummy = NULL; // dummy assignment to avoid compiler warnings;
+    dummy = nullptr; // dummy assignment to avoid compiler warnings;
 
     for(int i = 0; i < 50000; ++i)
         for(int i = 0; i < 50000; ++i) ;
 
-    return(NULL);
+    return nullptr;
 }
 
 
diff --git a/contrib/ola/KNN_threads.h b/contrib/ola/KNN_threads.h
index a50a805..b49af81 100644
--- a/contrib/ola/KNN_threads.h
+++ b/contrib/ola/KNN_threads.h
@@ -5,19 +5,18 @@
  *
  * Copyright (C) 2009 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -37,7 +36,7 @@ enum KNN_thread_status
 };
 
 // Query the number of available CPUs
-int KNN_getNumberOfCPUs(void);
+int KNN_getNumberOfCPUs ();
 
 // Distribute the work specified by 
 // (*function) and input over nthreads 
@@ -50,7 +49,7 @@ void * KNN_threadDistribution
 );
 
 // Test threading
-void KNN_threadTest(void);
+void KNN_threadTest ();
 
 // Test threading aux
 void * KNN_threadTestAux
diff --git a/contrib/ola/OlaP.h b/contrib/ola/OlaP.h
index 3ff1c56..89b90f3 100644
--- a/contrib/ola/OlaP.h
+++ b/contrib/ola/OlaP.h
@@ -5,19 +5,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/contrib/ola/Pattern_to_Categories_cluster.cpp b/contrib/ola/Pattern_to_Categories_cluster.cpp
index 75e904e..1a21d10 100644
--- a/contrib/ola/Pattern_to_Categories_cluster.cpp
+++ b/contrib/ola/Pattern_to_Categories_cluster.cpp
@@ -1,20 +1,19 @@
 /* Pattern_to_Categories_cluster.cpp
  *
- * Copyright (C) 2007-2008 Ola So"der, 2010-2011 Paul Boersma
+ * Copyright (C) 2007-2008 Ola So"der, 2010-2011,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,7 +32,7 @@
 // Pattern_to_Categories_cluster                                                                              //
 /////////////////////////////////////////////////////////////////////////////////////////////
 
-Categories Pattern_to_Categories_cluster
+autoCategories Pattern_to_Categories_cluster
 (
     ///////////////////////////////
     // Parameters                //
@@ -52,21 +51,21 @@ Categories Pattern_to_Categories_cluster
 )
 
 {
-		autoCategories categories = Categories_sequentialNumbers (k);
+		autoCategories categories = Categories_createWithSequentialNumbers (k);
 		if (k == p->ny)
-			return categories.transfer();
+			return categories;
 
 		autoKNN knn = KNN_create();
-		if(p->ny % k) 
-			if (s > (double) (p->ny / k) / (double) (p->ny / k + 1)) 
-				s = (double) (p->ny / k) / (double) (p->ny / k + 1);
+		if (p -> ny % k)
+			if (s > (double) (p -> ny / k) / (double) (p -> ny / k + 1))   // FIXME check whether integer division is correct
+				s = (double) (p -> ny / k) / (double) (p -> ny / k + 1);
 
 		double progress = m;
 		autoNUMvector <double> sizes (0L, k);
 		autoNUMvector <long> seeds (0L, k);
 
-		autoPattern centroids = (Pattern) Pattern_create (k, p->nx);
-		autoNUMvector <double> beta (0L, centroids->nx);
+		autoPattern centroids = Pattern_create (k, p -> nx);
+		autoNUMvector <double> beta (0L, centroids -> nx);
 
 		do
 		{
@@ -105,47 +104,47 @@ Categories Pattern_to_Categories_cluster
 			do
 			{
 				delta = 0;
-				KNN_learn (knn.peek(), centroids.peek(), categories.peek(), kOla_REPLACE, kOla_SEQUENTIAL);
-				autoCategories interim = KNN_classifyToCategories (knn.peek(), p, fws, 1, kOla_FLAT_VOTING);
+				KNN_learn (knn.get(), centroids.get(), categories.get(), kOla_REPLACE, kOla_SEQUENTIAL);
+				autoCategories interim = KNN_classifyToCategories (knn.get(), p, fws, 1, kOla_FLAT_VOTING);
 
-				for (long x = 1; x <= k; x++)
+				for (long x = 1; x <= k; x ++)
 					sizes [x] = 0;
 
-				for (long yp = 1; yp <= categories->size; yp++)
+				for (long yp = 1; yp <= categories->size; yp ++)
 				{
 					double alfa = 1;
-					Melder_assert (yp <= centroids->ny);
+					Melder_assert (yp <= centroids -> ny);
 
-					for (long x = 1; x <= centroids->nx; x++)
+					for (long x = 1; x <= centroids -> nx; x ++)
 					{
-						beta[x] = centroids->z[yp][x];
+						beta [x] = centroids -> z [yp] [x];
 					}
 
-					for (long ys = 1; ys <= interim->size; ys++)
+					for (long ys = 1; ys <= interim->size; ys ++)
 					{
-						if (FeatureWeights_areFriends ((SimpleString) categories->item[yp], (SimpleString) interim->item[ys]))
+						if (FeatureWeights_areFriends (categories->at [yp], interim->at [ys]))
 						{
-							for (long x = 1; x <= p->nx; x++)
+							for (long x = 1; x <= p -> nx; x ++)
 							{
-								Melder_assert (ys <= p->ny);
+								Melder_assert (ys <= p -> ny);
 								if (alfa == 1)
 								{
-									centroids->z[yp][x] = p->z[ys][x];
+									centroids -> z [yp] [x] = p -> z [ys] [x];
 								}
 								else
 								{
-									centroids->z[yp][x] += (p->z[ys][x] - centroids->z[yp][x]) / alfa;
+									centroids -> z [yp] [x] += (p -> z [ys] [x] - centroids -> z [yp] [x]) / alfa;
 								}
 							}
 							Melder_assert (yp <= k);
 							sizes [yp] ++;
-							alfa++;
+							alfa ++;
 						}
 					}
 
-					for (long x = 1; x <= centroids->nx; x++)
+					for (long x = 1; x <= centroids -> nx; x ++)
 					{
-						delta += fabs (beta[x] - centroids->z[yp][x]);
+						delta += fabs (beta [x] - centroids -> z [yp] [x]);
 					}
 				}
 			}
@@ -161,13 +160,13 @@ Categories Pattern_to_Categories_cluster
 			}
 
 			sizes [0] = smin / smax;
-			--m;
+			-- m;
 		}
 		while (sizes[0] < s && m > 0);
 
-		autoCategories output = KNN_classifyToCategories (knn.peek(), p, fws, 1, kOla_FLAT_VOTING);
+		autoCategories output = KNN_classifyToCategories (knn.get(), p, fws, 1, kOla_FLAT_VOTING);
 
-		return output.transfer();
+		return output;
 }
 
 /* End of file Pattern_to_Categories_cluster.cpp */
diff --git a/contrib/ola/Pattern_to_Categories_cluster.h b/contrib/ola/Pattern_to_Categories_cluster.h
index 69334e5..c3266e6 100644
--- a/contrib/ola/Pattern_to_Categories_cluster.h
+++ b/contrib/ola/Pattern_to_Categories_cluster.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -46,7 +45,7 @@
 /////////////////////////////////////////////////////
 
 // Pattern_to_Categories_cluster                                                                            
-Categories Pattern_to_Categories_cluster
+autoCategories Pattern_to_Categories_cluster
 (
     Pattern p,              // source
     FeatureWeights fws,     // feature weights
diff --git a/contrib/ola/manual_KNN.cpp b/contrib/ola/manual_KNN.cpp
index 965ec15..ba7c038 100644
--- a/contrib/ola/manual_KNN.cpp
+++ b/contrib/ola/manual_KNN.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007-2008 Ola Söder
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -149,7 +148,7 @@ MAN_END
 MAN_BEGIN (U"kNN classifiers 2. Quick start", U"Ola Söder", 20080809)
 ENTRY (U"An example: Learning the Iris data set")
 NORMAL (U"In the @@Feedforward neural networks|the feedforward neural networks tutorial@ a description of how the @FFNet classifier in Praat can be applied to @@iris data set|the Iris data set@ can be found.")
-NORMAL (U"The same data can be used to test the %%k%NN feature of Praat. To do so create an example data set using the @@Create iris example...@ command found in the ##Neural nets# submenu. The form prompting for network topology settings can be ignored by selecting OK. Select the newly created @Pattern and @Categories objects and click ##To KNN Classifier...#. A form prompting for a name of the classifier to be created will be shown. The ordering in which instances are to be inserted in [...]
+NORMAL (U"The same data can be used to test the %%k%NN feature of Praat. To do so create an example data set using the @@Create iris example...@ command found in the ##Feedforward neural networks# submenu. The form prompting for network topology settings can be ignored by selecting OK. Select the newly created @Pattern and @Categories objects and click ##To KNN Classifier...#. A form prompting for a name of the classifier to be created will be shown. The ordering in which instances are t [...]
 NORMAL (U"To estimate how well the classifier can be expected to classify new samples of Irises select ##Query -# \\=> ##Get accuracy estimate...#. A form prompting for %%k%NN parameter settings and evaluation method will be shown. Experiment with the parameter settings until satisfactory results are achieved. If everything worked out the estimate will likely end up somewhere in the range of 94-98 percent.")
 NORMAL (U"An alternative to manually experimenting with model parameters is to let the computer do the job. This is done be choosing the @KNN object and thereafter selecting ##Query -# \\=> ##Get optimized parameters...#. The form shown prompts for a selection of parameters controlling the search. The default values will in most cases, including this, be appropriate.")
 NORMAL (U"Another way of improving classification accuracy is to transform the instance space in which the individual instances, in this case Irises, are stored as to maximize the distance between instances of different classes and minimize the distance between instances of the same class. This can be done by means of feature weighting. To do so select the @KNN object and choose ##To FeatureWeights...#. Adjust the %%k%NN settings according to the ones found by the model search algorithm  [...]
diff --git a/contrib/ola/praat_contrib_Ola_KNN.cpp b/contrib/ola/praat_contrib_Ola_KNN.cpp
index dc89a5e..7acd241 100644
--- a/contrib/ola/praat_contrib_Ola_KNN.cpp
+++ b/contrib/ola/praat_contrib_Ola_KNN.cpp
@@ -1,20 +1,19 @@
 /* praat_contrib_Ola_KNN.cpp
  *
- * Copyright (C) 2007-2009 Ola Söder, 2010-2011,2015 Paul Boersma
+ * Copyright (C) 2007-2009 Ola Söder, 2010-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -45,7 +44,7 @@ FORM (KNN_create, U"Create kNN Classifier", U"kNN classifiers 1. What is a kNN c
 	OK2
 DO
 	autoKNN knn = KNN_create ();
-	praat_new (knn.transfer(), GET_STRING (U"Name"));
+	praat_new (knn.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (KNN_Pattern_Categories_to_KNN, U"Create kNN classifier", U"kNN classifiers 1. What is a kNN classifier?") {
@@ -66,14 +65,14 @@ DO
 		case 2:
 			ordering = kOla_SEQUENTIAL;
 	}
-	int result = KNN_learn (knn.peek(), me, thee, kOla_REPLACE, ordering);
+	int result = KNN_learn (knn.get(), me, thee, kOla_REPLACE, ordering);
 	switch (result) {
 		case kOla_PATTERN_CATEGORIES_MISMATCH:
 			Melder_throw (U"The number of Categories should be equal to the number of rows in Pattern.");
 		case kOla_DIMENSIONALITY_MISMATCH:
 			Melder_throw (U"The dimensionality of Pattern should be equal to that of the instance base.");
 		default:
-			praat_new (knn.transfer(), GET_STRING(U"Name"));
+			praat_new (knn.move(), GET_STRING(U"Name"));
 	}
 END2 }
 
@@ -114,7 +113,7 @@ DO
 	}
 	autoFeatureWeights fws = FeatureWeights_create ((my input) -> nx);
 	int dist;
-	KNN_modelSearch (me, fws.peek(), &k, &dist, mode, lrate, nseeds);
+	KNN_modelSearch (me, fws.get(), &k, &dist, mode, lrate, nseeds);
 	switch (dist) {
 		case kOla_SQUARED_DISTANCE_WEIGHTED_VOTING:
 			Melder_information (U"Vote weighting: Inversed squared distance\n", U"k: ", k);
@@ -167,7 +166,7 @@ DO
 			break;
 	}
 	autoFeatureWeights fws = FeatureWeights_create (my input -> nx);
-	double result = KNN_evaluate (me, fws.peek(), k, vt, mode);
+	double result = KNN_evaluate (me, fws.get(), k, vt, mode);
 	if (lround (result) == kOla_FWEIGHTS_MISMATCH)
 		Melder_throw (U"The number of feature weights should be equal to the dimensionality of the Pattern.");
 	Melder_information (100 * result, U" percent of the instances correctly classified.");   // BUG: use Melder_percent
@@ -220,20 +219,18 @@ END2 }
 
 DIRECT2 (KNN_extractInputPatterns) {
 	iam_ONLY (KNN);
-	if (my nInstances > 0) {
-		praat_new (Data_copy (my input), U"Input Patterns");
-	} else {
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
-	}
+	autoPattern input = Data_copy (my input.get());
+	praat_new (input.move(), U"Input Patterns");
 END2 }
 
 DIRECT2 (KNN_extractOutputCategories) {
 	iam_ONLY (KNN);
-	if (my nInstances > 0) {
-		praat_new (Data_copy (my output), U"Output Categories");
-	} else {
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
-	}
+	autoCategories output = Data_copy (my output.get());
+	praat_new (output.move(), U"Output Categories");
 END2 }
 
 FORM (KNN_reset, U"Reset", U"KNN: Reset...") {
@@ -241,18 +238,17 @@ FORM (KNN_reset, U"Reset", U"KNN: Reset...") {
     OK2
 DO
 	iam_ONLY (KNN);
-	forget (my input);
-	forget (my output);
+	my input.reset();
+	my output.reset();
 	my nInstances = 0;
 	praat_dataChanged (me);   // BUG: this should be inserted much more often
 END2 }
 
 DIRECT2 (KNN_shuffle) {
 	iam_ONLY (KNN);
-	if (my nInstances > 0)  
-		KNN_shuffleInstances (me);
-	else
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
+	KNN_shuffleInstances (me);
 END2 }
 
 FORM (KNN_prune, U"Pruning", U"KNN: Prune...") {
@@ -262,7 +258,7 @@ FORM (KNN_prune, U"Pruning", U"KNN: Prune...") {
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
 	long oldn = my nInstances;   // save before it changes!
 	long k = GET_INTEGER (U"k neighbours");
@@ -331,7 +327,7 @@ FORM (KNN_evaluateWithTestSet, U"Evaluation", U"KNN & Pattern & Categories: Eval
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty");
 	thouart_ONLY (Pattern);
 	heis_ONLY (Categories);
@@ -355,7 +351,7 @@ DO
 	if (thy nx != (my input)->nx)
 		Melder_throw (U"The dimensionality of Pattern should be equal to that of the instance base.");
 	autoFeatureWeights fws = FeatureWeights_create (thy nx);
-	double result = KNN_evaluateWithTestSet (me, thee, him, fws.peek(), k, vt);
+	double result = KNN_evaluateWithTestSet (me, thee, him, fws.get(), k, vt);
 	Melder_information (100 * result, U" percent of the instances correctly classified.");
 END2 }
 
@@ -368,7 +364,7 @@ FORM (KNN_evaluateWithTestSetAndFeatureWeights, U"Evaluation", U"KNN & Pattern &
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty");
 	Pattern p = (Pattern) ONLY (classPattern);
 	Categories c = (Categories) ONLY (classCategories);
@@ -388,7 +384,7 @@ DO
 			vt = kOla_FLAT_VOTING;
 			break;
 	}
-	if (p -> ny != c -> size)
+	if (p -> ny != c->size)
 		Melder_throw (U"The number of Categories should be equal to the number of rows in Pattern.");
 	if (p -> nx != my input -> nx)
 		Melder_throw (U"The dimensionality of Pattern should be equal to that of the instance base.");
@@ -411,7 +407,7 @@ FORM (KNN_toCategories, U"Classification", U"KNN & Pattern: To Categories...") {
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
 	thouart_ONLY (Pattern);
 	long k = GET_INTEGER (U"k neighbours");
@@ -432,7 +428,8 @@ DO
 	if (thy nx != my input -> nx)
 		Melder_throw (U"The dimensionality of Pattern should match that of the instance base.");
 	autoFeatureWeights fws = FeatureWeights_create (thy nx);
-	praat_new (KNN_classifyToCategories (me, thee, fws.peek(), k, vt), U"Output");
+	autoCategories result = KNN_classifyToCategories (me, thee, fws.get(), k, vt);
+	praat_new (result.move(), U"Output");
 END2 }
 
 FORM (KNN_toTableOfReal, U"Classification", U"KNN & Pattern: To TabelOfReal...") {
@@ -444,7 +441,7 @@ FORM (KNN_toTableOfReal, U"Classification", U"KNN & Pattern: To TabelOfReal...")
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
 	thouart_ONLY (Pattern);
 	long k = GET_INTEGER (U"k neighbours");
@@ -465,7 +462,8 @@ DO
 	}
 	if (thy nx != my input -> nx)
 		Melder_throw (U"The dimensionality of Pattern should match that of the instance base.");
-	praat_new (KNN_classifyToTableOfReal (me, thee, fws.peek(), k, vt), U"Output");
+	autoTableOfReal result = KNN_classifyToTableOfReal (me, thee, fws.get(), k, vt);
+	praat_new (result.move(), U"Output");
 END2 }
 
 FORM (KNN_toCategoriesWithFeatureWeights, U"Classification", U"KNN & Pattern & FeatureWeights: To Categories...") {
@@ -477,7 +475,7 @@ FORM (KNN_toCategoriesWithFeatureWeights, U"Classification", U"KNN & Pattern & F
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
 	thouart_ONLY (Pattern);
 	heis_ONLY (FeatureWeights);
@@ -500,7 +498,8 @@ DO
 		Melder_throw (U"The dimensionality of Pattern should be equal to that of the instance base.");
 	if (thy nx != his fweights -> numberOfColumns)
 		Melder_throw (U"The number of feature weights should be equal to the dimensionality of the Pattern.");
-	praat_new (KNN_classifyToCategories (me, thee, him, k, vt), U"Output");
+	autoCategories result = KNN_classifyToCategories (me, thee, him, k, vt);
+	praat_new (result.move(), U"Output");
 END2 }
 
 FORM (KNN_toTableOfRealWithFeatureWeights, U"Classification", U"KNN & Pattern & FeatureWeights: To TableOfReal...") {
@@ -512,7 +511,7 @@ FORM (KNN_toTableOfRealWithFeatureWeights, U"Classification", U"KNN & Pattern &
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty.");
 	thouart_ONLY (Pattern);
 	heis_ONLY (FeatureWeights);
@@ -533,7 +532,8 @@ DO
 			vt = kOla_FLAT_VOTING;
 			break;
 	}
-	praat_new (KNN_classifyToTableOfReal (me, thee, him, k, vt), U"Output");
+	autoTableOfReal result = KNN_classifyToTableOfReal (me, thee, him, k, vt);
+	praat_new (result.move(), U"Output");
 END2 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -558,7 +558,8 @@ DO
 		if (rc > 1 || rc <= 0)
 			Melder_throw (U"Please select a value of the cluster size ratio constraint c such that 0 < c <= 1.");
 		autoFeatureWeights fws = FeatureWeights_create (my nx);
-		praat_new (Pattern_to_Categories_cluster (me, fws.peek(), k, rc, rs), U"Output");
+		autoCategories result = Pattern_to_Categories_cluster (me, fws.get(), k, rc, rs);
+		praat_new (result.move(), U"Output");
 	} else {
 		Melder_throw (U"Pattern is empty.");
 	}
@@ -584,7 +585,8 @@ DO
 		double rc =  GET_REAL(U"Cluster size ratio constraint");
 		if (rc > 1 || rc <= 0)
 			Melder_throw (U"Please select a value of the cluster size ratio constraint c such that 0 < c <= 1.");
-		praat_new (Pattern_to_Categories_cluster (me, thee, k, rc, rs), U"Output");
+		autoCategories result = Pattern_to_Categories_cluster (me, thee, k, rc, rs);
+		praat_new (result.move(), U"Output");
 	} else {
 		Melder_throw (U"Pattern is empty.");
 	}
@@ -597,7 +599,8 @@ END2 }
 DIRECT2 (KNN_patternToDissimilarity) {
 	iam_ONLY (Pattern);
 	autoFeatureWeights fws = FeatureWeights_create (my nx);
-	praat_new (KNN_patternToDissimilarity (me, fws.peek()), U"Output");
+	autoDissimilarity result = KNN_patternToDissimilarity (me, fws.get());
+	praat_new (result.move(), U"Output");
 END2 }
 
 DIRECT2 (KNN_patternToDissimilarityWithFeatureWeights) {
@@ -605,7 +608,8 @@ DIRECT2 (KNN_patternToDissimilarityWithFeatureWeights) {
 	thouart_ONLY (FeatureWeights);  
 	if (my nx != thy fweights -> numberOfColumns)
 		Melder_throw (U"The number of features and the number of feature weights should be equal.");
-	praat_new (KNN_patternToDissimilarity (me, thee), U"Output");
+	autoDissimilarity result = KNN_patternToDissimilarity (me, thee);
+	praat_new (result.move(), U"Output");
 END2 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -630,7 +634,8 @@ DO
 	double temp_start = GET_REAL (U"Initial temperature");
 	double temp_damp = GET_REAL (U"Damping factor");
 	double temp_stop = GET_REAL (U"Final temperature");
-	praat_new (KNN_SA_ToPermutation (me, tries, iterations, step_size, bolzmann_c, temp_start, temp_damp, temp_stop), U"Output");
+	autoPermutation result = KNN_SA_ToPermutation (me, tries, iterations, step_size, bolzmann_c, temp_start, temp_damp, temp_stop);
+	praat_new (result.move(), U"Output");
 END2 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -644,10 +649,11 @@ DO
 	iam_ONLY (Pattern);
 	thouart_ONLY (Categories);
 	if (my ny < 2)
-		Melder_throw (U"The Pattern object should contain at least 2 rows.");
+		Melder_throw (U"The Pattern object should contain at least two rows.");
 	if (my ny != thy size)
 		Melder_throw (U"The number of rows in the Pattern object should equal the number of categories in the Categories object.");
-	praat_new (FeatureWeights_compute (me, thee, GET_INTEGER (U"Number of neighbours")), U"Output");
+	autoFeatureWeights result = FeatureWeights_compute (me, thee, GET_INTEGER (U"Number of neighbours"));
+	praat_new (result.move(), U"Output");
 END2 }
 
 FORM (FeatureWeights_computeWrapperExt, U"Feature weights", U"KNN & Pattern & Categories: To FeatureWeights..") {
@@ -665,7 +671,7 @@ FORM (FeatureWeights_computeWrapperExt, U"Feature weights", U"KNN & Pattern & Ca
 	OK2
 DO
 	iam_ONLY (KNN);
-	if (my nInstances < 1)
+	if (my nInstances <= 0)
 		Melder_throw (U"Instance base is empty");
 	thouart_ONLY (Pattern);
 	heis_ONLY (Categories);
@@ -686,8 +692,9 @@ DO
 		Melder_throw (U"Please select a value of k such that 0 < k < ", my nInstances + 1, U".");
 	if (thy nx != my input -> nx)
 		Melder_throw (U"The dimensionality of Pattern should be equal to that of the instance base.");
-	praat_new (FeatureWeights_computeWrapperExt (me, thee, him, k, mode, GET_INTEGER (U"Number of seeds"),
-		GET_REAL (U"Learning rate"), GET_REAL (U"Stop at"), (int) GET_INTEGER (U"Optimization")), U"Output");
+	autoFeatureWeights result = FeatureWeights_computeWrapperExt (me, thee, him, k, mode, GET_INTEGER (U"Number of seeds"),
+		GET_REAL (U"Learning rate"), GET_REAL (U"Stop at"), (int) GET_INTEGER (U"Optimization"));
+	praat_new (result.move(), U"Output");
 END2 }
 
 FORM (FeatureWeights_computeWrapperInt, U"Feature weights", U"KNN: To FeatureWeights...") {
@@ -734,8 +741,9 @@ DO
 	long k = GET_INTEGER (U"k neighbours");
 	if (k < 1 || k > my nInstances)
 		Melder_throw (U"Please select a value of k such that 0 < k < ", my nInstances + 1, U".");
-	praat_new (FeatureWeights_computeWrapperInt (me, k, mode, GET_INTEGER (U"Number of seeds"), GET_REAL (U"Learning rate"),
-		GET_REAL (U"Stop at"), (int) GET_INTEGER (U"Optimization"), emode), U"Output");
+	autoFeatureWeights result = FeatureWeights_computeWrapperInt (me, k, mode, GET_INTEGER (U"Number of seeds"), GET_REAL (U"Learning rate"),
+		GET_REAL (U"Stop at"), (int) GET_INTEGER (U"Optimization"), emode);
+	praat_new (result.move(), U"Output");
 END2 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -748,14 +756,16 @@ FORM (Pattern_create, U"Create Pattern", 0) {
 	NATURAL (U"Number of patterns", U"1")
 	OK2
 DO
-	praat_new (Pattern_create (GET_INTEGER (U"Number of patterns"), GET_INTEGER (U"Dimension of a pattern")), GET_STRING (U"Name"));
+	autoPattern result = Pattern_create (GET_INTEGER (U"Number of patterns"), GET_INTEGER (U"Dimension of a pattern"));
+	praat_new (result.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Categories_create, U"Create Categories", 0) {
 	WORD (U"Name", U"empty")
 	OK2
 DO
-	praat_new (Categories_create (), GET_STRING (U"Name"));
+	autoCategories result = Categories_create ();
+	praat_new (result.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (FeatureWeights_create, U"Create FeatureWeights", 0) {
@@ -763,7 +773,8 @@ FORM (FeatureWeights_create, U"Create FeatureWeights", 0) {
 	NATURAL (U"Number of weights", U"1")
 	OK2
 DO
-	praat_new (FeatureWeights_create (GET_INTEGER (U"Number of weights")), GET_STRING (U"Name"));
+	autoFeatureWeights result = FeatureWeights_create (GET_INTEGER (U"Number of weights"));
+	praat_new (result.move(), GET_STRING (U"Name"));
 END2 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -776,7 +787,7 @@ END2 }
 
 DIRECT (KNN_debug_KNN_SA_partition)
     Pattern p = ONLY (classPattern);
-    Pattern output = Pattern_create (p->ny, p->nx);
+    autoPattern output = Pattern_create (p->ny, p->nx);
     autoNUMvector <long> result (0, p->ny);
     KNN_SA_partition (p, 1, p->ny, result);
 
@@ -789,7 +800,7 @@ DIRECT (KNN_debug_KNN_SA_partition)
                 ++k;
             }
 
-    praat_new (output, U"Output");
+    praat_new (output.move(), U"Output");
 
 END
 
@@ -848,69 +859,68 @@ END2 }
 // Setting callbacks                                                                   //
 /////////////////////////////////////////////////////////////////////////////////////////
 
-void praat_contrib_Ola_KNN_init (void);
-void praat_contrib_Ola_KNN_init (void)
+void praat_contrib_Ola_KNN_init ();
+void praat_contrib_Ola_KNN_init ()
 {
-    Thing_recognizeClassesByName (classKNN, NULL);
-    Thing_recognizeClassesByName (classFeatureWeights, NULL);
+    Thing_recognizeClassesByName (classKNN, classFeatureWeights, nullptr);
 
 //////////
 // Menu //
 //////////
 
-    praat_addMenuCommand (U"Objects", U"New", U"kNN classifiers", 0, 0, 0);
+    praat_addMenuCommand (U"Objects", U"New", U"kNN classifiers", nullptr, 0, nullptr);
 
-    praat_addMenuCommand (U"Objects", U"New", U"kNN classifiers", 0, 1, DO_KNN_help);
-    praat_addMenuCommand (U"Objects", U"New", U"-- KNN --", 0, 1, 0);
+    praat_addMenuCommand (U"Objects", U"New", U"kNN classifiers", nullptr, 1, DO_KNN_help);
+    praat_addMenuCommand (U"Objects", U"New", U"-- KNN --", nullptr, 1, nullptr);
 
-    praat_addMenuCommand (U"Objects", U"New", U"Create kNN classifier...", 0, 1, DO_KNN_create);
+    praat_addMenuCommand (U"Objects", U"New", U"Create kNN classifier...", nullptr, 1, DO_KNN_create);
 
-    praat_addMenuCommand (U"Objects", U"New", U"Advanced", 0, 1, 0);
-    praat_addMenuCommand (U"Objects", U"New", U"Create Pattern...", 0, 2, DO_Pattern_create);
-    praat_addMenuCommand (U"Objects", U"New", U"Create Categories...", 0, 2, DO_Categories_create);
-    praat_addMenuCommand (U"Objects", U"New", U"Create FeatureWeights...", 0, 2, DO_FeatureWeights_create);
+    praat_addMenuCommand (U"Objects", U"New", U"Advanced", nullptr, 1, nullptr);
+    praat_addMenuCommand (U"Objects", U"New", U"Create Pattern...", nullptr, 2, DO_Pattern_create);
+    praat_addMenuCommand (U"Objects", U"New", U"Create Categories...", nullptr, 2, DO_Categories_create);
+    praat_addMenuCommand (U"Objects", U"New", U"Create FeatureWeights...", nullptr, 2, DO_FeatureWeights_create);
 
 /////////////
 // Actions //
 /////////////
 
-    praat_addAction1 (classKNN, 0, U"kNN help", 0, 0, DO_KNN_help);
-    praat_addAction1 (classKNN, 0, QUERY_BUTTON, 0, 0, 0);
-    praat_addAction1 (classKNN, 1, U"Get optimized parameters...", 0, 2, DO_KNN_getOptimumModel);
-    praat_addAction1 (classKNN, 1, U"Get accuracy estimate...", 0, 2, DO_KNN_evaluate);
-    praat_addAction1 (classKNN, 1, U"Get size of instancebase", 0, 2, DO_KNN_getNumberOfInstances);
+    praat_addAction1 (classKNN, 0, U"kNN help", nullptr, 0, DO_KNN_help);
+    praat_addAction1 (classKNN, 0, QUERY_BUTTON, nullptr, 0, nullptr);
+    praat_addAction1 (classKNN, 1, U"Get optimized parameters...", nullptr, 2, DO_KNN_getOptimumModel);
+    praat_addAction1 (classKNN, 1, U"Get accuracy estimate...", nullptr, 2, DO_KNN_evaluate);
+    praat_addAction1 (classKNN, 1, U"Get size of instancebase", nullptr, 2, DO_KNN_getNumberOfInstances);
 
-    praat_addAction1 (classKNN, 0, MODIFY_BUTTON, 0, 0, 0);
-    praat_addAction1 (classKNN, 1, U"Shuffle", 0, 1, DO_KNN_shuffle);
-    praat_addAction1 (classKNN, 1, U"Prune...", 0, 1, DO_KNN_prune);
-    praat_addAction1 (classKNN, 1, U"Reset...", 0, 1, DO_KNN_reset);
-    praat_addAction1 (classKNN, 0, EXTRACT_BUTTON, 0, 0, 0);
-    praat_addAction1 (classKNN, 0, U"Extract input Patterns", 0, 1, DO_KNN_extractInputPatterns);
-    praat_addAction1 (classKNN, 0, U"Extract output Categories", 0, 1, DO_KNN_extractOutputCategories);
+    praat_addAction1 (classKNN, 0, MODIFY_BUTTON, nullptr, 0, nullptr);
+    praat_addAction1 (classKNN, 1, U"Shuffle", nullptr, 1, DO_KNN_shuffle);
+    praat_addAction1 (classKNN, 1, U"Prune...", nullptr, 1, DO_KNN_prune);
+    praat_addAction1 (classKNN, 1, U"Reset...", nullptr, 1, DO_KNN_reset);
+    praat_addAction1 (classKNN, 0, EXTRACT_BUTTON, nullptr, 0, nullptr);
+    praat_addAction1 (classKNN, 0, U"Extract input Patterns", nullptr, 1, DO_KNN_extractInputPatterns);
+    praat_addAction1 (classKNN, 0, U"Extract output Categories", nullptr, 1, DO_KNN_extractOutputCategories);
 
-    praat_addAction1 (classKNN, 0, U"To FeatureWeights...", 0, 0, DO_FeatureWeights_computeWrapperInt);
+    praat_addAction1 (classKNN, 0, U"To FeatureWeights...", nullptr, 0, DO_FeatureWeights_computeWrapperInt);
 
- // praat_addAction1 (classKNN, 0, U"To Permutation...", 0, 0, DO_KNN_SA_computePermutation);
- // praat_addAction2 (classKNN, 1, classFeatureWeights, 1, U"To Permutation...", 0, 0, DO_KNN_evaluateWithFeatureWeights);
+ // praat_addAction1 (classKNN, 0, U"To Permutation...", nullptr, 0, DO_KNN_SA_computePermutation);
+ // praat_addAction2 (classKNN, 1, classFeatureWeights, 1, U"To Permutation...", nullptr, 0, DO_KNN_evaluateWithFeatureWeights);
 
-    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"Learn...", 0, 0, DO_KNN_learn);
-    praat_addAction2 (classKNN, 1, classFeatureWeights, 1, U"Evaluate...", 0, 0, DO_KNN_evaluateWithFeatureWeights);
-    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"Evaluate...", 0, 0, DO_KNN_evaluateWithTestSet);
-    praat_addAction4 (classKNN, 1, classPattern, 1, classCategories, 1, classFeatureWeights, 1, U"Evaluate...", 0, 0, DO_KNN_evaluateWithTestSetAndFeatureWeights);
-    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"To FeatureWeights...", 0, 0, DO_FeatureWeights_computeWrapperExt);
-    praat_addAction2 (classKNN, 1, classPattern, 1, U"To Categories...", 0, 0, DO_KNN_toCategories);
-    praat_addAction2 (classKNN, 1, classPattern, 1, U"To TableOfReal...", 0, 0, DO_KNN_toTableOfReal);
+    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"Learn...", nullptr, 0, DO_KNN_learn);
+    praat_addAction2 (classKNN, 1, classFeatureWeights, 1, U"Evaluate...", nullptr, 0, DO_KNN_evaluateWithFeatureWeights);
+    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"Evaluate...", nullptr, 0, DO_KNN_evaluateWithTestSet);
+    praat_addAction4 (classKNN, 1, classPattern, 1, classCategories, 1, classFeatureWeights, 1, U"Evaluate...", nullptr, 0, DO_KNN_evaluateWithTestSetAndFeatureWeights);
+    praat_addAction (classKNN, 1, classPattern, 1, classCategories, 1, U"To FeatureWeights...", nullptr, 0, DO_FeatureWeights_computeWrapperExt);
+    praat_addAction2 (classKNN, 1, classPattern, 1, U"To Categories...", nullptr, 0, DO_KNN_toCategories);
+    praat_addAction2 (classKNN, 1, classPattern, 1, U"To TableOfReal...", nullptr, 0, DO_KNN_toTableOfReal);
 
-    praat_addAction (classKNN, 1, classPattern, 1, classFeatureWeights, 1, U"To Categories...", 0, 0, DO_KNN_toCategoriesWithFeatureWeights);
-    praat_addAction (classKNN, 1, classPattern, 1, classFeatureWeights, 1, U"To TableOfReal...", 0, 0, DO_KNN_toTableOfRealWithFeatureWeights);
+    praat_addAction (classKNN, 1, classPattern, 1, classFeatureWeights, 1, U"To Categories...", nullptr, 0, DO_KNN_toCategoriesWithFeatureWeights);
+    praat_addAction (classKNN, 1, classPattern, 1, classFeatureWeights, 1, U"To TableOfReal...", nullptr, 0, DO_KNN_toTableOfRealWithFeatureWeights);
 
-    praat_addAction1 (classPattern, 1, U"To Dissimilarity", 0, 1, DO_KNN_patternToDissimilarity);
-    praat_addAction1 (classPattern, 1, U"To Categories...", 0, 1, DO_Pattern_to_Categories_cluster);
-    praat_addAction2 (classPattern, 1, classFeatureWeights, 1, U"To Dissimilarity", 0, 0, DO_KNN_patternToDissimilarityWithFeatureWeights);
-    praat_addAction2 (classPattern, 1, classFeatureWeights, 1, U"To Categories...", 0, 0, DO_Pattern_to_Categories_clusterWithFeatureWeights);
+    praat_addAction1 (classPattern, 1, U"To Dissimilarity", nullptr, 1, DO_KNN_patternToDissimilarity);
+    praat_addAction1 (classPattern, 1, U"To Categories...", nullptr, 1, DO_Pattern_to_Categories_cluster);
+    praat_addAction2 (classPattern, 1, classFeatureWeights, 1, U"To Dissimilarity", nullptr, 0, DO_KNN_patternToDissimilarityWithFeatureWeights);
+    praat_addAction2 (classPattern, 1, classFeatureWeights, 1, U"To Categories...", nullptr, 0, DO_Pattern_to_Categories_clusterWithFeatureWeights);
 
-    praat_addAction2 (classPattern, 1, classCategories, 1, U"To FeatureWeights...", 0, 0, DO_FeatureWeights_computeRELIEF);
-    praat_addAction2 (classPattern, 1, classCategories, 1, U"To KNN Classifier...", 0, 0, DO_KNN_Pattern_Categories_to_KNN);
+    praat_addAction2 (classPattern, 1, classCategories, 1, U"To FeatureWeights...", nullptr, 0, DO_FeatureWeights_computeRELIEF);
+    praat_addAction2 (classPattern, 1, classCategories, 1, U"To KNN Classifier...", nullptr, 0, DO_KNN_Pattern_Categories_to_KNN);
 
 ///////////
 // DEBUG //
@@ -930,16 +940,16 @@ void praat_contrib_Ola_KNN_init (void)
 // Hints //
 ///////////
 
-    praat_addAction1 (classPattern, 0, U"& FeatureWeights: To Categories?", 0, 0, DO_hint_Pattern_and_FeatureWeights_to_Categories);
-    praat_addAction1 (classPattern, 0, U"& FeatureWeights: To Dissimilarity?", 0, 0, DO_hint_Pattern_and_FeatureWeights_to_Dissimilarity);
+    praat_addAction1 (classPattern, 0, U"& FeatureWeights: To Categories?", nullptr, 0, DO_hint_Pattern_and_FeatureWeights_to_Categories);
+    praat_addAction1 (classPattern, 0, U"& FeatureWeights: To Dissimilarity?", nullptr, 0, DO_hint_Pattern_and_FeatureWeights_to_Dissimilarity);
 
-    praat_addAction1 (classKNN, 0, U"& FeatureWeights: Evaluate?", 0, 0, DO_hint_KNN_and_FeatureWeights_evaluate);
-//  praat_addAction1 (classKNN, 0, U"& FeatureWeights: To Permutation?", 0, 0, DO_hint_Pattern_and_FeatureWeights_to_Dissimilarity);
-    praat_addAction1 (classKNN, 0, U"& Pattern: Classify?", 0, 0, DO_hint_KNN_and_Pattern_classify);
-    praat_addAction1 (classKNN, 0, U"& Pattern & FeatureWeights: Classify?", 0, 0, DO_hint_KNN_and_Pattern_and_FeatureWeights_classify);
-    praat_addAction1 (classKNN, 0, U"& Pattern & Categories: Learn?", 0, 0, DO_hint_KNN_and_Pattern_and_Categories_learn);
-    praat_addAction1 (classKNN, 0, U"& Pattern & Categories: Evaluate?", 0, 0, DO_hint_KNN_and_Pattern_and_Categories_evaluate);
-    praat_addAction1 (classKNN, 0, U"& Pattern & Categories & FeatureWeights: Evaluate?", 0, 0, DO_hint_KNN_and_Pattern_and_Categories_and_FeatureWeights_evaluate);
+    praat_addAction1 (classKNN, 0, U"& FeatureWeights: Evaluate?", nullptr, 0, DO_hint_KNN_and_FeatureWeights_evaluate);
+//  praat_addAction1 (classKNN, 0, U"& FeatureWeights: To Permutation?", nullptr, 0, DO_hint_Pattern_and_FeatureWeights_to_Dissimilarity);
+    praat_addAction1 (classKNN, 0, U"& Pattern: Classify?", nullptr, 0, DO_hint_KNN_and_Pattern_classify);
+    praat_addAction1 (classKNN, 0, U"& Pattern & FeatureWeights: Classify?", nullptr, 0, DO_hint_KNN_and_Pattern_and_FeatureWeights_classify);
+    praat_addAction1 (classKNN, 0, U"& Pattern & Categories: Learn?", nullptr, 0, DO_hint_KNN_and_Pattern_and_Categories_learn);
+    praat_addAction1 (classKNN, 0, U"& Pattern & Categories: Evaluate?", nullptr, 0, DO_hint_KNN_and_Pattern_and_Categories_evaluate);
+    praat_addAction1 (classKNN, 0, U"& Pattern & Categories & FeatureWeights: Evaluate?", nullptr, 0, DO_hint_KNN_and_Pattern_and_Categories_and_FeatureWeights_evaluate);
 
     INCLUDE_MANPAGES (manual_KNN_init)
 }
diff --git a/dwsys/Collection_extensions.cpp b/dwsys/Collection_extensions.cpp
index 7a872b5..1057bda 100644
--- a/dwsys/Collection_extensions.cpp
+++ b/dwsys/Collection_extensions.cpp
@@ -1,20 +1,19 @@
-/* Collection_extensions.c
+/* Collection_extensions.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,46 +29,46 @@
 #include "Simple_extensions.h"
 #include "NUM2.h"
 
-Collection Collection_and_Permutation_permuteItems (Collection me, Permutation him) {
+autoCollection Collection_and_Permutation_permuteItems (Collection me, Permutation him) {
 	try {
 		if (my size != his numberOfElements) {
 			Melder_throw (me, U"The number of elements are not equal.");
 		}
 		autoNUMvector<long> pos (1, my size);
-		autoCollection thee = static_cast<Collection> (Data_copy (me));
+		autoCollection thee = Data_copy (me);
 
-		for (long i = 1; i <= my size; i++) {
-			pos[i] = i;
+		for (long i = 1; i <= my size; i ++) {
+			pos [i] = i;
 		}
 		/* Dual meaning of array pos: */
 		/* k <  i : position of item 'k' */
 		/* k >= i : the item at position 'k' */
 		for (long i = 1; i <= my size; i++) {
-			long ti = pos[i], which = Permutation_getValueAtIndex (him, i);
-			long where = pos[which]; /* where >= i */
-			Data tmp =  static_cast<Data> (thy item[i]);
+			long ti = pos [i], which = Permutation_getValueAtIndex (him, i);
+			long where = pos [which];   // where >= i
+			Daata tmp = static_cast<Daata> (thy at [i]);
 			if (i == where) {
 				continue;
 			}
-			thy item[i] = thy item[ where ];
-			thy item[where] = tmp;
+			thy at [i] = thy at [where];
+			thy at [where] = tmp;
 			/* order is important !! */
-			pos[ti] = where;
-			pos[where] = ti;
-			pos[which] = which <= i ? i : ti;
+			pos [ti] = where;
+			pos [where] = ti;
+			pos [which] = ( which <= i ? i : ti );
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not permuted.");
 	}
 }
 
-Collection Collection_permuteItems (Collection me) {
+autoCollection Collection_permuteItems (Collection me) {
 	try {
 		autoPermutation p = Permutation_create (my size);
-		Permutation_permuteRandomly_inline (p.peek(), 0, 0);
-		autoCollection thee = Collection_and_Permutation_permuteItems (me, p.peek());
-		return thee.transfer();
+		Permutation_permuteRandomly_inline (p.get(), 0, 0);
+		autoCollection thee = Collection_and_Permutation_permuteItems (me, p.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": items not permuted.");
 	}
@@ -78,98 +77,67 @@ Collection Collection_permuteItems (Collection me) {
 /****************** class OrderedOfString ******************/
 
 void structOrderedOfString :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"Number of strings: ", size);
-	autoOrderedOfString uStrings = OrderedOfString_selectUniqueItems (this, 1);
-	MelderInfo_writeLine (U"Number of unique categories: ", uStrings -> size);
+	structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of strings: ", our size);
+	autoOrderedOfString uStrings = OrderedOfString_selectUniqueItems (this);
+	MelderInfo_writeLine (U"Number of unique categories: ", uStrings->size);   // FIXME: "categories"?, and why mention a Set property?
 }
 
 Thing_implement (OrderedOfString, Ordered, 0);
 
-int OrderedOfString_init (OrderedOfString me, long initialCapacity) {
-	Ordered_init (me, classSimpleString, initialCapacity);
-	return 1;
-}
-
-OrderedOfString OrderedOfString_create () {
+int OrderedOfString_append (OrderedOfString me, const char32 *append) {
 	try {
-		autoOrderedOfString me = Thing_new (OrderedOfString);
-		OrderedOfString_init (me.peek(), 10);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"OrderedOfString not created.");
-	}
-}
-
-int OrderedOfString_append (OrderedOfString me, char32 *append) {
-	try {
-		if (append == 0) {
+		if (! append) {
 			return 1;    // BUG: lege string appenden??
 		}
 		autoSimpleString item = SimpleString_create (append);
-		Collection_addItem (me, item.transfer());
+		my addItem_move (item.move());
 		return 1;
 	} catch (MelderError) {
 		Melder_throw (me, U": text not appended.");
 	}
 }
 
-OrderedOfString OrderedOfString_joinItems (OrderedOfString me, OrderedOfString thee) {
+autoOrderedOfString OrderedOfString_joinItems (OrderedOfString me, OrderedOfString thee) {
 	try {
-
-
 		if (my size != thy size) {
 			Melder_throw (U"sizes must be equal.");
 		}
 		autoOrderedOfString him = Data_copy (me);
 
-		for (long i = 1; i <= my size; i++) {
-			SimpleString_append ( (SimpleString) his item[i], (SimpleString) thy item[i]);
+		for (long i = 1; i <= my size; i ++) {
+			SimpleString_append (his at [i], thy at [i]);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Items not joinmed.");
 	}
 }
 
-
-OrderedOfString OrderedOfString_selectUniqueItems (OrderedOfString me, int sort) {
+autoOrderedOfString OrderedOfString_selectUniqueItems (OrderedOfString me) {
 	try {
-		if (! sort) {
-			autoOrderedOfString him = OrderedOfString_create ();
-			for (long i = 1; i <= my size; i++) {
-				SimpleString ss = (SimpleString) my item[i];
-				if (! OrderedOfString_indexOfItem_c (him.peek(), ss -> string)) {
-					autoSimpleString item = Data_copy (ss);
-					Collection_addItem (him.peek(), item.transfer());
-				}
-			}
-			Collection_shrinkToFit (him.peek());
-			return him.transfer();
-		}
-		autoSortedSetOfString thee = SortedSetOfString_create ();
-		/* Collection_to_SortedSet (I, int (*compare)(I, thou)) */
-		for (long i = 1; i <= my size; i++) {
-			if (! SortedSet_hasItem (thee.peek(), my item[i])) {
-				autoSimpleString item = Data_copy ( (SimpleString) my item[i]);
-				Collection_addItem (thee.peek(), item.transfer());
+		autoStringSet thee = StringSet_create ();
+		for (long i = 1; i <= my size; i ++) {
+			if (! thy hasItem (my at [i])) {   // FIXME: first sort, then unicize
+				autoSimpleString item = Data_copy (my at [i]);
+				thy addItem_move (item.move());
 			}
 		}
 		autoOrderedOfString him = OrderedOfString_create ();
-		for (long i = 1; i <= thy size; i++) {
-			autoSimpleString item = Data_copy ( (SimpleString) thy item[i]);
-			Collection_addItem (him.peek(), item.transfer());
+		for (long i = 1; i <= thy size; i ++) {
+			autoSimpleString item = Data_copy (thy at [i]);
+			his addItem_move (item.move());
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": unique items not selected.");
 	}
 }
 
 void OrderedOfString_frequency (OrderedOfString me, OrderedOfString thee, long *count) {
-	for (long i = 1; i <= my size; i++) {
-		for (long j = 1; j <= thy size; j++) {
-			if (Data_equal ( (Data) my item[i], (Data) thy item[j])) {
+	for (long i = 1; i <= my size; i ++) {
+		for (long j = 1; j <= thy size; j ++) {
+			if (Data_equal (my at [i], thy at [j])) {
 				count[j]++;
 				break;
 			}
@@ -183,8 +151,8 @@ long OrderedOfString_getNumberOfDifferences (OrderedOfString me, OrderedOfString
 	if (my size != thy size) {
 		return -1;
 	}
-	for (long i = 1; i <= my size; i++) {
-		if (! Data_equal ( (SimpleString) my item[i], (SimpleString) thy item[i])) {
+	for (long i = 1; i <= my size; i ++) {
+		if (! Data_equal (my at [i], thy at [i])) {
 			numberOfDifferences++;
 		}
 	}
@@ -197,17 +165,18 @@ double OrderedOfString_getFractionDifferent (OrderedOfString me, OrderedOfString
 	if (numberOfDifferences < 0) {
 		return NUMundefined;
 	}
-	return my size == 0 ? 0 : (0.0 + numberOfDifferences) / my size;
+	return my size == 0 ? 0.0 : (0.0 + numberOfDifferences) / my size;
 }
 
 int OrderedOfString_difference (OrderedOfString me, OrderedOfString thee, long *ndif, double *fraction) {
-	*ndif = 0; *fraction = 1;
+	*ndif = 0;
+	*fraction = 1.0;
 	if (my size != thy size) {
-		Melder_flushError (U"OrderedOfString_difference: the number of items differ");
+		Melder_flushError (U"OrderedOfString_difference: the numbers of items differ");
 		return 0;
 	}
-	for (long i = 1; i <= my size; i++) {
-		if (! Data_equal ( (SimpleString) my item[i], (SimpleString) thy item[i])) {
+	for (long i = 1; i <= my size; i ++) {
+		if (! Data_equal (my at [i], thy at [i])) {
 			(*ndif) ++;
 		}
 	}
@@ -220,8 +189,8 @@ long OrderedOfString_indexOfItem_c (OrderedOfString me, const char32 *str) {
 	long index = 0;
 	autoSimpleString s = SimpleString_create (str);
 
-	for (long i = 1; i <= my size; i++) {
-		if (Data_equal ( (Data) my item[i], s.peek())) {
+	for (long i = 1; i <= my size; i ++) {
+		if (Data_equal (my at [i], s.get())) {
 			index = i;
 			break;
 		}
@@ -230,43 +199,32 @@ long OrderedOfString_indexOfItem_c (OrderedOfString me, const char32 *str) {
 }
 
 const char32 *OrderedOfString_itemAtIndex_c (OrderedOfString me, long index) {
-	return index > 0 && index <= my size ? SimpleString_c ( (SimpleString) my item[index]) : NULL;
+	return index > 0 && index <= my size ? SimpleString_c (my at [index]) : nullptr;
 }
 
-void OrderedOfString_sequentialNumbers (OrderedOfString me, long n) {
-	Collection_removeAllItems (me);
-	for (long i = 1; i <= n; i++) {
-		char32 s[40];
-		Melder_sprint (s,40, i);   // ppgb: 20 chars is niet genoeg voor een long
-		autoSimpleString str = SimpleString_create (s);
-		Collection_addItem (me, str.transfer());
+void OrderedOfString_initWithSequentialNumbers (OrderedOfString me, long n) {
+	for (long i = 1; i <= n; i ++) {
+		my addItem_move (SimpleString_create (Melder_integer (i)));
 	}
 }
-void OrderedOfString_changeStrings (OrderedOfString me, char32 *search, char32 *replace,
-                                    int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp) {
-	regexp *compiled_search = NULL;
-	try {
-		char32 *r;
 
-		if (search == NULL) {
+void OrderedOfString_changeStrings (OrderedOfString me, char32 *search, char32 *replace, int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp) {
+	regexp *compiled_search = nullptr;
+	try {
+		if (! search) {
 			Melder_throw (U"Missing search string.");
 		}
-		if (replace == NULL) {
+		if (! replace) {
 			Melder_throw (U"Missing replace string.");
 		}
 
 		if (use_regexp) {
 			compiled_search = CompileRE_throwable (search, 0);
 		}
-		for (long i = 1; i <= my size; i++) {
-			SimpleString ss = (SimpleString) my item[i];
+		for (long i = 1; i <= my size; i ++) {
+			SimpleString ss = my at [i];
 			long nmatches_sub;
-
-			if (use_regexp) {
-				r = str_replace_regexp (ss -> string, compiled_search,
-				                        replace, maximumNumberOfReplaces, &nmatches_sub);
-			} else r = str_replace_literal (ss -> string, search, replace,
-				                                maximumNumberOfReplaces, &nmatches_sub);
+			char32 *r = use_regexp ? str_replace_regexp (ss -> string, compiled_search, replace, maximumNumberOfReplaces, &nmatches_sub) : str_replace_literal (ss -> string, search, replace, maximumNumberOfReplaces, &nmatches_sub);
 
 			// Change without error:
 			Melder_free (ss -> string);
@@ -290,12 +248,12 @@ void OrderedOfString_changeStrings (OrderedOfString me, char32 *search, char32 *
 long OrderedOfString_isSubsetOf (OrderedOfString me, OrderedOfString thee, long *translation) { // ?? test and give number
 	long nStrings = 0;
 
-	for (long i = 1; i <= my size; i++) {
+	for (long i = 1; i <= my size; i ++) {
 		if (translation) {
-			translation[i] = 0;
+			translation [i] = 0;
 		}
-		for (long j = 1; j <= thy size; j++)
-			if (Data_equal ( (SimpleString) my item[i], (SimpleString) thy item[j])) {
+		for (long j = 1; j <= thy size; j ++)
+			if (Data_equal (my at [i], thy at [j])) {
 				if (translation) {
 					translation[i] = j;
 				}
@@ -307,7 +265,7 @@ long OrderedOfString_isSubsetOf (OrderedOfString me, OrderedOfString thee, long
 
 void OrderedOfString_drawItem (OrderedOfString me, Graphics g, long index, double xWC, double yWC) {
 	if (index > 0 && index <= my size) {
-		SimpleString_draw ( (SimpleString) my item[index], g, xWC, yWC);
+		SimpleString_draw (my at [index], g, xWC, yWC);
 	}
 }
 
@@ -316,16 +274,16 @@ long OrderedOfString_getSize (OrderedOfString me) {
 }
 
 void OrderedOfString_removeOccurrences (OrderedOfString me, const char32 *search, int use_regexp) {
-	if (search == NULL) {
+	if (! search) {
 		return;
 	}
-	for (long i = my size; i >= 1; i--) {
-		SimpleString ss = (SimpleString) my item[i];
+	for (long i = my size; i >= 1; i --) {
+		SimpleString ss = my at [i];
 		if ( (use_regexp && strstr_regexp (ss -> string, search)) ||
 		        (!use_regexp && str32str (ss -> string, search))) {
-			Collection_removeItem (me, i);
+			my removeItem (i);
 		}
 	}
 }
 
-/* End of file Collection_extensions.c */
+/* End of file Collection_extensions.cpp */
diff --git a/dwsys/Collection_extensions.h b/dwsys/Collection_extensions.h
index 341f8bb..93f4802 100644
--- a/dwsys/Collection_extensions.h
+++ b/dwsys/Collection_extensions.h
@@ -2,51 +2,44 @@
 #define _Collection_extensions_h_
 /* Collection_extensions.h
  *
- * Copyright (C) 1994-2002 David Weenink
+ * Copyright (C) 1994-2002,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020812 GPL header
- djmw 20110414 Latest modification.
-*/
-
 #include "Collection.h"
 #include "Graphics.h"
 #include "Permutation.h"
 
-Collection Collection_and_Permutation_permuteItems (Collection me, Permutation him);
-Collection Collection_permuteItems (Collection me);
+autoCollection Collection_and_Permutation_permuteItems (Collection me, Permutation him);
+
+autoCollection Collection_permuteItems (Collection me);
 /* permute the order of my items */
 
 /****************** class OrderedOfString ******************/
 
-Thing_define (OrderedOfString, Ordered) {
+Collection_define (OrderedOfString, OrderedOf, SimpleString) {
 	void v_info ()
 		override;
 };
 
-OrderedOfString OrderedOfString_create ();
-int OrderedOfString_init (OrderedOfString me, long initialCapacity);
+int OrderedOfString_append (OrderedOfString me, const char32 *append);
 
-int OrderedOfString_append (OrderedOfString me, char32 *append);
-OrderedOfString OrderedOfString_joinItems (OrderedOfString me, OrderedOfString thee);
+autoOrderedOfString OrderedOfString_joinItems (OrderedOfString me, OrderedOfString thee);
 /* Join each item */
 
-OrderedOfString OrderedOfString_selectUniqueItems (OrderedOfString me, int sort);
+autoOrderedOfString OrderedOfString_selectUniqueItems (OrderedOfString me);
 /* Postcondition: thy size <= my size */
 
 void OrderedOfString_frequency (OrderedOfString me, OrderedOfString thee, long *count);
@@ -65,7 +58,7 @@ long OrderedOfString_indexOfItem_c (OrderedOfString me, const char32 *str);
 
 void OrderedOfString_drawItem (OrderedOfString me, Graphics g, long index, double xWC, double yWC);
 
-void OrderedOfString_sequentialNumbers (OrderedOfString me, long n);
+void OrderedOfString_initWithSequentialNumbers (OrderedOfString me, long n);
 
 void OrderedOfString_removeOccurrences (OrderedOfString me, const char32 *search, int user_regexp);
 
diff --git a/dwsys/Command.cpp b/dwsys/Command.cpp
index 5f5a575..10d26d8 100644
--- a/dwsys/Command.cpp
+++ b/dwsys/Command.cpp
@@ -1,117 +1,86 @@
 /* Command.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 19950710
- djmw 20020812 GPL header
- djmw 20071007 wchar
- djmw 20110304 Thing_new
-*/
-
 #include "Command.h"
 
+#pragma mark - class Command
+
 Thing_implement (Command, Thing, 0);
 
-void Command_init (I, const char32 *name, Any data, int (*execute) (Any), int (*undo) (Any)) {
-	iam (Command);
+void Command_init (Command me, const char32 *name, Thing boss, Command_Callback execute, Command_Callback undo) {
 	Melder_assert (execute && undo);
 	Thing_setName (me, name);
-	my data = data;
+	my boss = boss;
 	my execute = execute;
 	my undo = undo;
 }
 
-int Command_do (I) {
-	iam (Command);
+int Command_do (Command me) {
 	return my execute (me);
 }
 
-int Command_undo (I) {
-	iam (Command);
+int Command_undo (Command me) {
 	return my undo (me);
 }
 
-Thing_implement (CommandHistory, Ordered, 0);
+#pragma mark - class CommandHistory
 
-CommandHistory CommandHistory_create (long maximumCapacity) {
-	try {
-		autoCommandHistory me = Thing_new (CommandHistory);
-		Collection_init (me.peek(), classCommand, maximumCapacity);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Command not created.");
-	}
-}
+Thing_implement (CommandHistory, Ordered, 0);
 
-void CommandHistory_forth (I) {
-	iam (CommandHistory);
-	my current++;
+void CommandHistory_forth (CommandHistory me) {
+	my current ++;
 }
 
-void CommandHistory_back (I) {
-	iam (CommandHistory);
-	my current--;
+void CommandHistory_back (CommandHistory me) {
+	my current --;
 }
 
-Any CommandHistory_getItem (I) {
-	iam (CommandHistory);
+Command CommandHistory_getItem (CommandHistory me) {
 	Melder_assert (my current > 0 && my current <= my size);
-	return my item[my current];
+	return my at [my current];
 }
 
-void CommandHistory_insertItem (I, Any data) {
-	iam (CommandHistory);
-
-	Melder_assert (data && (Thing_isa ( (Thing) data, my itemClass) || my itemClass == NULL));
-	if (my current < my size) {
-		for (long i = my current + 1; i <= my size; i++) {
-			forget ( ( (Command *) my item) [i]);
-		}
-		my size = my current;
+void CommandHistory_insertItem_move (CommandHistory me, autoCommand command) {
+	for (long i = my size; i >= my current + 1; i --) {
+		my removeItem (i);
 	}
-	if (my size >= my _capacity) {
-		Collection_removeItem (me, 1);
+	my addItem_move (command.move());
+	while (my size > 20) {
+		my removeItem (1);
 	}
-	my item[++my size] = data;
 	my current = my size;
 }
 
-int CommandHistory_empty (I) {
-	iam (CommandHistory);
+int CommandHistory_empty (CommandHistory me) {
 	return my size == 0;
 }
 
-int CommandHistory_offleft (I) {
-	iam (CommandHistory);
+int CommandHistory_offleft (CommandHistory me) {
 	return my current == 0;
 }
 
-int CommandHistory_offright (I) {
-	iam (CommandHistory);
+int CommandHistory_offright (CommandHistory me) {
 	return my size == 0 || my current == my size + 1;
 }
 
-char32 *CommandHistory_commandName (I, long offsetFromCurrent) {
-	iam (CommandHistory);
+char32 *CommandHistory_commandName (CommandHistory me, long offsetFromCurrent) {
 	long pos = my current + offsetFromCurrent;
-
-	return pos >= 1 && pos <= my size ? Thing_getName ( (Thing) my item[pos]) : NULL;
+	return pos >= 1 && pos <= my size ? Thing_getName (my at [pos]) : nullptr;
 }
 
 /* End of file Command.cpp */
diff --git a/dwsys/Command.h b/dwsys/Command.h
index a674d1a..207ba45 100644
--- a/dwsys/Command.h
+++ b/dwsys/Command.h
@@ -2,50 +2,49 @@
 #define _Command_h_
 /* Command.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 19950711
- djmw 20020812 GPL header
- djmw 20110306 Latest modification
-*/
-
 #include "Thing.h"
 #include "Collection.h"
 
+
+#pragma mark - class Command
+
+Thing_declare (Command);
+
+typedef MelderCallback<int, structCommand> Command_Callback;
+
 Thing_define (Command, Thing) {
-	// new data:
-	public:
-		Any data;
-		int (*execute) (I);
-		int (*undo) (I);
+	Thing boss;
+	Command_Callback execute;
+	Command_Callback undo;
 };
 
-void Command_init (I, const char32 *name, Any data, int (*execute)(Any), int (*undo)(Any));
-	
-int Command_do (I);
+void Command_init (Command me, const char32 *name, Thing boss, Command_Callback execute, Command_Callback undo);
 
-int Command_undo (I);
+int Command_do (Command me);
 
-Thing_define (CommandHistory, Ordered) {
-	// new data:
-	public:
-		long current;
+int Command_undo (Command me);
+
+
+#pragma mark - class CommandHistory
+
+Collection_define (CommandHistory, OrderedOf, Command) {
+	long current;
 };
 
 /* Active data structure. 'current' is position of the cursor in the list */
@@ -53,35 +52,33 @@ Thing_define (CommandHistory, Ordered) {
 /* Invariants: */
 /*	0 <= current <= size + 1; */
 
-CommandHistory CommandHistory_create (long maximumCapacity);
-
-void CommandHistory_forth (I);
+void CommandHistory_forth (CommandHistory me);
 /* Precondition: ! offright */
 /* my current++; */
 
-void CommandHistory_back (I);
+void CommandHistory_back (CommandHistory me);
 /* Precondition: ! offleft */
 /* my current--; */
 
-Any CommandHistory_getItem (I);
+Command CommandHistory_getItem (CommandHistory me);
 /* return (pointer to) my item[my current]; */
 
-void CommandHistory_insertItem (I, Any item);
+void CommandHistory_insertItem_move (CommandHistory me, autoCommand command);
 /* 1. forget about item[ current+1..size ] */
 /* 2. insert item after current. */
 /* 3. current = size */
 
-int CommandHistory_empty (I);
+int CommandHistory_empty (CommandHistory me);
 /*	return my size == 0; */
 
-int CommandHistory_offleft (I);
+int CommandHistory_offleft (CommandHistory me);
 /*	return my current == 0; */
 
-int CommandHistory_offright (I);
+int CommandHistory_offright (CommandHistory me);
 /*	return my size == 0 || my current == my size + 1; */
 
-char32 *CommandHistory_commandName (I, long offsetFromCurrent);
+char32 *CommandHistory_commandName (CommandHistory me, long offsetFromCurrent);
 /* offsetFromCurrent may be zero, positive or negative. */
-/* References outside the list will return NULL. */
+/* References outside the list will return nullptr. */
 
 #endif /* _Command_h_ */
diff --git a/dwsys/DLL.cpp b/dwsys/DLL.cpp
deleted file mode 100644
index 0099845..0000000
--- a/dwsys/DLL.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/* DLL.cpp
- *
- * Copyright (C) 2011-2013 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "DLL.h"
-
-Thing_implement (DLLNode, Data, 0);
-
-void structDLLNode :: v_destroy () {
-	forget (data);
-	DLLNode_Parent :: v_destroy ();
-}
-
-void structDLLNode :: v_copy (thou) {
-	thouart (DLLNode);
-	thy data = Data_copy (data);
-}
-
-Thing_implement (DLL, Thing, 0);
-
-void structDLL :: v_destroy () {
-	DLLNode v = front;
-	while (v != 0) {
-		DLLNode cur = v;
-		v = v -> next;
-		forget (cur);
-	}
-	DLL_Parent :: v_destroy ();
-}
-
-int structDLL :: s_compare (Any node1, Any node2) {
-	(void) node1;
-	(void) node2;
-	return 0;
-}
-
-DLLNode DLLNode_create (Data data) {
-	DLLNode me = Thing_new (DLLNode);
-	my data = data;
-	return me;
-}
-
-void DLL_init (DLL) {
-}
-
-DLL DLL_create() {
-	try {
-		DLL me = Thing_new (DLL);
-		DLL_init (me);
-		return me;
-	} catch (MelderError) {
-		Melder_throw (U"DLL not created.");
-	}
-
-}
-
-void DLL_addFront (DLL me, DLLNode n) {
-	if (my front == 0) { // empty list
-		my front = n;
-		my back = n;
-		n -> next = 0;
-		n -> prev = 0;
-		my numberOfNodes++;
-	} else {
-		DLL_addBefore (me, my front, n);
-	}
-}
-
-void DLL_addBack (DLL me, DLLNode n) {
-	if (my back == 0) {
-		DLL_addFront (me, n);    // empty list
-	} else {
-		DLL_addAfter (me, my back, n);
-	}
-}
-
-void DLL_addBefore (DLL me, DLLNode pos, DLLNode n) {
-	n -> prev = pos -> prev;
-	n -> next = pos;
-	if (pos -> prev == 0) {
-		my front = n;
-	} else {
-		pos -> prev -> next = n;
-	}
-	pos -> prev = n;
-	my numberOfNodes++;
-}
-
-void DLL_addAfter (DLL me, DLLNode pos, DLLNode n) {
-	n -> prev = pos;
-	n -> next = pos -> next;
-	if (pos -> next == 0) {
-		my back = n;
-	} else {
-		pos -> next -> prev = n;
-	}
-	pos -> next = n;
-	my numberOfNodes++;
-}
-
-void DLL_remove (DLL me, DLLNode n) {
-	if (my numberOfNodes == 0) {
-		return;
-	}
-	if (n == my front) {
-		my front = my front -> next;
-		my front -> prev = 0;
-	} else if (n == my back) {
-		my back = my back -> prev;
-		my back -> next = 0;
-	} else {
-		n -> prev -> next = n -> next;
-		n -> next -> prev = n -> prev;
-	}
-	forget (n);
-	my numberOfNodes++;
-}
-
-// Preconditions:
-//	from and to must be part of the list
-//	from must occur before to
-void DLL_sortPart (DLL me, DLLNode from, DLLNode to) {
-	// Save data
-	if (from == to) {
-		return;    // nothing to do
-	}
-	DLLNode from_prev = from -> prev;
-	DLLNode to_next = to -> next;
-	DLLNode my_front = my front;
-	DLLNode my_back = my back;
-
-	from -> prev = to -> next = 0;
-	my front = from;
-	my back = to;
-	DLL_sort (me);
-	// restore complete list
-	my front -> prev = from_prev;
-	if (from_prev != 0) {
-		from_prev -> next = my front;
-	}
-	my back -> next = to_next;
-	if (to_next != 0) {
-		to_next -> prev = my back;
-	}
-	if (my_front != from) {
-		my front = my_front;
-	}
-	if (my_back != to) {
-		my back = my_back;
-	}
-}
-
-void DLL_sort (DLL me) {
-	Data_CompareFunction compare = my v_getCompareFunction ();
-	long increment = 1;
-	DLLNode front = my front, back;
-	for (;;) {
-		DLLNode n1 = front;
-		front = 0;
-		back = 0;
-
-		long numberOfMerges = 0;
-
-		while (n1 != 0) {
-			DLLNode n2 = n1, n;
-			long n1size = 0;
-			numberOfMerges++;
-
-			for (long i = 1; i <= increment; i++) {
-				n1size++;
-				n2 = n2 -> next;
-				if (n2 == 0) {
-					break;
-				}
-			}
-
-			long n2size = increment;
-
-			while (n1size > 0 || (n2size > 0 && n2 != 0)) { // merge n1 and n2
-				if (n1size == 0) {
-					n2size--; n = n2; n2 = n2 -> next;
-				} else if (n2size == 0 || n2 == 0) {
-					n1size--; n = n1; n1 = n1 -> next;
-				} else if (compare (n1, n2) <= 0) {
-					n1size--; n = n1; n1 = n1 -> next;
-				} else {
-					n2size--; n = n2; n2 = n2 -> next;
-				}
-
-				if (back != 0) {
-					back -> next = n;
-				} else {
-					front = n;
-				}
-				n -> prev = back;
-				back = n;
-			}
-			n1 = n2;
-		}
-		back -> next = 0;
-		if (numberOfMerges <= 1) {
-			break;
-		}
-		increment *= 2;
-	}
-	//
-	my front = front;
-	my back = back;
-}
-
-// end of file DLL.cpp
diff --git a/dwsys/DLL.h b/dwsys/DLL.h
deleted file mode 100644
index 4ec1c00..0000000
--- a/dwsys/DLL.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef _DLL_h_
-#define _DLL_h_
-/* DLL.h
- *
- * Copyright (C) 2011 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#include "Data.h"
-
-Thing_define (DLLNode, Data) {
-	// new data:
-	public:
-		DLLNode next, prev;
-		Data data;
-	// overridden methods:
-	protected:
-		virtual void v_destroy ();
-		virtual void v_copy (Any data_to);
-};
-
-Thing_define (DLL, Thing) {
-	// new data:
-	public:
-		long numberOfNodes;
-		DLLNode front, back;
-	// overridden methods:
-	protected:
-		virtual void v_destroy ();
-	// new methods:
-	public:
-		static int s_compare (Any data1, Any data2);
-		virtual Data_CompareFunction v_getCompareFunction () { return s_compare; }
-};
-
-DLLNode DLLNode_create (Data data); // DLLNode owns the data
-
-void DLL_init (DLL me);
-DLL DLL_create ();
-
-void DLL_addFront (DLL me, DLLNode n);
-void DLL_addBack (DLL me, DLLNode n);
-void DLL_addBefore (DLL me, DLLNode pos, DLLNode n);
-void DLL_addAfter (DLL me, DLLNode pos, DLLNode n);
-void DLL_remove (DLL me, DLLNode n);
-void DLL_sort (DLL me);
-void DLL_sortPart (DLL me, DLLNode from, DLLNode to);
-
-#endif // _DLL_h_
-
diff --git a/dwsys/DoublyLinkedList.cpp b/dwsys/DoublyLinkedList.cpp
new file mode 100644
index 0000000..f27ab7b
--- /dev/null
+++ b/dwsys/DoublyLinkedList.cpp
@@ -0,0 +1,222 @@
+/* DoublyLinkedList.cpp
+ *
+ * Copyright (C) 2011-2013, 2015-2016 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "DoublyLinkedList.h"
+
+Thing_implement (DoublyLinkedNode, Daata, 0);
+
+void structDoublyLinkedNode :: v_destroy () noexcept {
+	DoublyLinkedNode_Parent :: v_destroy ();
+}
+
+void structDoublyLinkedNode :: v_copy (Daata thee_Daata) {
+	DoublyLinkedNode thee = static_cast <DoublyLinkedNode> (thee_Daata);
+	thy data = Data_copy (our data.get());
+}
+
+Thing_implement (DoublyLinkedList, Thing, 0);
+
+void structDoublyLinkedList :: v_destroy () noexcept {
+	DoublyLinkedNode v = front;
+	while (v) {
+		DoublyLinkedNode cur = v;
+		v = v -> next;
+		forget (cur);
+	}
+	DoublyLinkedList_Parent :: v_destroy ();
+}
+
+int structDoublyLinkedList :: s_compareHook (Daata /* node1 */, Daata /* node2 */) noexcept {
+	return 0;
+}
+
+autoDoublyLinkedNode DoublyLinkedNode_create (autoDaata data) {
+	autoDoublyLinkedNode me = Thing_new (DoublyLinkedNode);
+	my data = data.move();
+	return me;
+}
+
+void DoublyLinkedList_init (DoublyLinkedList) {
+}
+
+autoDoublyLinkedList DoublyLinkedList_create() {
+	try {
+		autoDoublyLinkedList me = Thing_new (DoublyLinkedList);
+		DoublyLinkedList_init (me.get());
+		return me;
+	} catch (MelderError) {
+		Melder_throw (U"DoublyLinkedList not created.");
+	}
+
+}
+
+void DoublyLinkedList_addFront (DoublyLinkedList me, DoublyLinkedNode node) {
+	if (my front) {
+		DoublyLinkedList_addBefore (me, my front, node);
+	} else {   // empty list
+		my front = node;
+		my back = node;
+		node -> next = nullptr;
+		node -> prev = nullptr;
+		my numberOfNodes++;
+	}
+}
+
+void DoublyLinkedList_addBack (DoublyLinkedList me, DoublyLinkedNode node) {
+	if (my back) {
+		DoublyLinkedList_addAfter (me, my back, node);
+	} else {
+		DoublyLinkedList_addFront (me, node);    // empty list
+	}
+}
+
+void DoublyLinkedList_addBefore (DoublyLinkedList me, DoublyLinkedNode pos, DoublyLinkedNode node) {
+	node -> prev = pos -> prev;
+	node -> next = pos;
+	if (pos -> prev == nullptr) {
+		my front = node;
+	} else {
+		pos -> prev -> next = node;
+	}
+	pos -> prev = node;
+	my numberOfNodes++;
+}
+
+void DoublyLinkedList_addAfter (DoublyLinkedList me, DoublyLinkedNode pos, DoublyLinkedNode node) {
+	node -> prev = pos;
+	node -> next = pos -> next;
+	if (pos -> next == nullptr) {
+		my back = node;
+	} else {
+		pos -> next -> prev = node;
+	}
+	pos -> next = node;
+	my numberOfNodes++;
+}
+
+void DoublyLinkedList_remove (DoublyLinkedList me, DoublyLinkedNode node) {
+	if (my numberOfNodes == 0) {
+		return;
+	}
+	if (node == my front) {
+		my front = my front -> next;
+		my front -> prev = nullptr;
+	} else if (node == my back) {
+		my back = my back -> prev;
+		my back -> next = nullptr;
+	} else {
+		node -> prev -> next = node -> next;
+		node -> next -> prev = node -> prev;
+	}
+	forget (node);
+	my numberOfNodes++;
+}
+
+// Preconditions:
+//	from and to must be part of the list
+//	from must occur before to
+void DoublyLinkedList_sortPart (DoublyLinkedList me, DoublyLinkedNode from, DoublyLinkedNode to) {
+	// Save data
+	if (from == to) {
+		return;   // nothing to do
+	}
+	DoublyLinkedNode from_prev = from -> prev;
+	DoublyLinkedNode to_next = to -> next;
+	DoublyLinkedNode my_front = my front;
+	DoublyLinkedNode my_back = my back;
+
+	from -> prev = to -> next = nullptr;
+	my front = from;
+	my back = to;
+	DoublyLinkedList_sort (me);
+	// restore complete list
+	my front -> prev = from_prev;
+	if (from_prev) {
+		from_prev -> next = my front;
+	}
+	my back -> next = to_next;
+	if (to_next) {
+		to_next -> prev = my back;
+	}
+	if (my_front != from) {
+		my front = my_front;
+	}
+	if (my_back != to) {
+		my back = my_back;
+	}
+}
+
+void DoublyLinkedList_sort (DoublyLinkedList me) {
+	Data_CompareHook::FunctionType compare = my v_getCompareHook ().get();
+	long increment = 1;
+	DoublyLinkedNode front = my front, back;
+	for (;;) {
+		DoublyLinkedNode node1 = front;
+		front = nullptr;
+		back = nullptr;
+
+		long numberOfMerges = 0;
+
+		while (node1) {
+			DoublyLinkedNode node2 = node1, node;
+			long node1size = 0;
+			numberOfMerges++;
+
+			for (long i = 1; i <= increment; i++) {
+				node1size++;
+				node2 = node2 -> next;
+				if (! node2) {
+					break;
+				}
+			}
+
+			long node2size = increment;
+
+			while (node1size > 0 || (node2size > 0 && node2)) { // merge node1 and node2
+				if (node1size == 0) {
+					node2size--; node = node2; node2 = node2 -> next;
+				} else if (node2size == 0 || ! node2) {
+					node1size--; node = node1; node1 = node1 -> next;
+				} else if (compare (node1, node2) <= 0) {
+					node1size--; node = node1; node1 = node1 -> next;
+				} else {
+					node2size--; node = node2; node2 = node2 -> next;
+				}
+
+				if (back) {
+					back -> next = node;
+				} else {
+					front = node;
+				}
+				node -> prev = back;
+				back = node;
+			}
+			node1 = node2;
+		}
+		back -> next = nullptr;
+		if (numberOfMerges <= 1) {
+			break;
+		}
+		increment *= 2;
+	}
+	//
+	my front = front;
+	my back = back;
+}
+
+// end of file DoublyLinkedList.cpp
diff --git a/dwsys/DoublyLinkedList.h b/dwsys/DoublyLinkedList.h
new file mode 100644
index 0000000..c29138e
--- /dev/null
+++ b/dwsys/DoublyLinkedList.h
@@ -0,0 +1,66 @@
+#ifndef _DoublyLinkedList_h_
+#define _DoublyLinkedList_h_
+/* DoublyLinkedList.h
+ *
+ * Copyright (C) 2011, 2015 David Weenink, 2015 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "Data.h"
+
+Thing_define (DoublyLinkedNode, Daata) {
+	DoublyLinkedNode next, prev;
+	autoDaata data;
+
+	void v_destroy () noexcept
+		override;
+	void v_copy (Daata data_to)
+		override;
+};
+
+Thing_define (DoublyLinkedList, Thing) {
+	long numberOfNodes;
+	DoublyLinkedNode front, back;
+
+	void v_destroy () noexcept
+		override;
+
+	static int s_compareHook (Daata /* data1 */, Daata /* data2 */) noexcept;
+	virtual Data_CompareHook v_getCompareHook () { return s_compareHook; }
+};
+
+autoDoublyLinkedNode DoublyLinkedNode_create (autoDaata data);
+
+void DoublyLinkedList_init (DoublyLinkedList me);
+
+autoDoublyLinkedList DoublyLinkedList_create ();
+
+void DoublyLinkedList_addFront (DoublyLinkedList me, DoublyLinkedNode n);
+
+void DoublyLinkedList_addBack (DoublyLinkedList me, DoublyLinkedNode n);
+
+void DoublyLinkedList_addBefore (DoublyLinkedList me, DoublyLinkedNode pos, DoublyLinkedNode n);
+
+void DoublyLinkedList_addAfter (DoublyLinkedList me, DoublyLinkedNode pos, DoublyLinkedNode n);
+
+void DoublyLinkedList_remove (DoublyLinkedList me, DoublyLinkedNode n);
+
+void DoublyLinkedList_sort (DoublyLinkedList me);
+
+void DoublyLinkedList_sortPart (DoublyLinkedList me, DoublyLinkedNode from, DoublyLinkedNode to);
+
+#endif // _DoublyLinkedList_h_
+
diff --git a/dwsys/Eigen.cpp b/dwsys/Eigen.cpp
index 98fc389..cd53710 100644
--- a/dwsys/Eigen.cpp
+++ b/dwsys/Eigen.cpp
@@ -1,20 +1,19 @@
 /* Eigen.cpp
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -63,31 +62,30 @@
 #include "oo_DESCRIPTION.h"
 #include "Eigen_def.h"
 
-Thing_implement (Eigen, Data, 0);
+Thing_implement (Eigen, Daata, 0);
 
 #define MAX(m,n) ((m) > (n) ? (m) : (n))
 #define MIN(m,n) ((m) < (n) ? (m) : (n))
 #define SWAP(a,b) {temp=(a);(a)=(b);(b)=temp;}
 
-static void Graphics_ticks (Graphics g, double min, double max, int hasNumber,
-                            int hasTick, int hasDottedLine, int integers) {
-	double range = max - min, scale = 1, tick = min, dtick = 1;
+static void Graphics_ticks (Graphics g, double min, double max, bool hasNumber, bool hasTick, bool hasDottedLine, bool integers) {
+	double range = max - min, scale = 1.0, tick = min, dtick = 1.0;
 
-	if (range == 0) {
+	if (range == 0.0) {
 		return;
-	} else if (range > 1) {
-		while (range / scale > 10) {
-			scale *= 10;
+	} else if (range > 1.0) {
+		while (range / scale > 10.0) {
+			scale *= 10.0;
 		}
 		range /= scale;
 	} else {
-		while (range / scale < 10) {
-			scale /= 10;
+		while (range / scale < 10.0) {
+			scale /= 10.0;
 		}
 		range *= scale;
 	}
 
-	if (range < 3) {
+	if (range < 3.0) {
 		dtick = 0.5;
 	}
 	dtick *= scale;
@@ -96,14 +94,13 @@ static void Graphics_ticks (Graphics g, double min, double max, int hasNumber,
 		tick += dtick;
 	}
 	while (tick <= max) {
-		double num = integers ? floor (tick + 0.5) : tick;
-		Graphics_markBottom (g, num, hasNumber, hasTick, hasDottedLine, NULL);
+		double num = integers ? round (tick) : tick;
+		Graphics_markBottom (g, num, hasNumber, hasTick, hasDottedLine, nullptr);
 		tick += dtick;
 	}
 }
 
-void Eigen_init (I, long numberOfEigenvalues, long dimension) {
-	iam (Eigen);
+void Eigen_init (Eigen me, long numberOfEigenvalues, long dimension) {
 	my numberOfEigenvalues = numberOfEigenvalues;
 	my dimension = dimension;
 	my eigenvalues = NUMvector<double> (1, numberOfEigenvalues);
@@ -117,8 +114,7 @@ void Eigen_init (I, long numberOfEigenvalues, long dimension) {
 	Eigenvectors: the columns of the matrix V
 	Eigenvalues: D_i^2
 */
-void Eigen_initFromSquareRoot (I, double **a, long numberOfRows, long numberOfColumns) {
-	iam (Eigen);
+void Eigen_initFromSquareRoot (Eigen me, double **a, long numberOfRows, long numberOfColumns) {
 	long numberOfZeroed, numberOfEigenvalues;
 	long nsv = MIN (numberOfRows, numberOfColumns);
 
@@ -134,7 +130,7 @@ void Eigen_initFromSquareRoot (I, double **a, long numberOfRows, long numberOfCo
 		basis.)
 	*/
 
-	numberOfZeroed = SVD_zeroSmallSingularValues (svd.peek(), 0);
+	numberOfZeroed = SVD_zeroSmallSingularValues (svd.get(), 0.0);
 
 	numberOfEigenvalues = nsv - numberOfZeroed;
 
@@ -142,7 +138,7 @@ void Eigen_initFromSquareRoot (I, double **a, long numberOfRows, long numberOfCo
 	long k = 0;
 	for (long i = 1; i <= nsv; i++) {
 		double t = svd -> d[i];
-		if (t > 0) {
+		if (t > 0.0) {
 			my eigenvalues[++k] = t * t;
 			for (long j = 1; j <= numberOfColumns; j++) {
 				my eigenvectors[k][j] = svd -> v[j][i];
@@ -152,10 +148,8 @@ void Eigen_initFromSquareRoot (I, double **a, long numberOfRows, long numberOfCo
 	Eigen_sort (me);
 }
 
-void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
-                                   long numberOfColumns, double **b, long numberOfRows_b) {
-	iam (Eigen);
-	double *u = NULL, *v = NULL, maxsv2 = -10;
+void Eigen_initFromSquareRootPair (Eigen me, double **a, long numberOfRows, long numberOfColumns, double **b, long numberOfRows_b) {
+	double *u = nullptr, *v = nullptr, maxsv2 = -10.0;
 	char jobu = 'N', jobv = 'N', jobq = 'Q';
 	long k, ll, m = numberOfRows, n = numberOfColumns, p = numberOfRows_b;
 	long lda = m, ldb = p, ldu = lda, ldv = ldb, ldq = n;
@@ -181,11 +175,9 @@ void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
 		Melder_throw (U"dggsvd fails.");
 	}
 
-	/*
-		Calculate the eigenvalues (alpha[i]/beta[i])^2 and store in alpha[i].
-	*/
+	// Calculate the eigenvalues (alpha[i]/beta[i])^2 and store in alpha[i].
 
-	maxsv2 = -1;
+	maxsv2 = -1.0;
 	for (long i = k + 1; i <= k + ll; i++) {
 		double t = alpha[i] / beta[i];
 		alpha[i] = t * t;
@@ -194,13 +186,12 @@ void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
 		}
 	}
 
-	/*
-		Deselect the eigenvalues < eps * max_eigenvalue.
-	*/
+	// Deselect the eigenvalues < eps * max_eigenvalue.
+
 	n = 0;
 	for (long i = k + 1; i <= k + ll; i++) {
 		if (alpha[i] < NUMfpp -> eps * maxsv2) {
-			n++; alpha[i] = -1;
+			n++; alpha[i] = -1.0;
 		}
 	}
 
@@ -212,7 +203,7 @@ void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
 
 	long ii = 0;
 	for (long i = k + 1; i <= k + ll; i++) {
-		if (alpha[i] == -1) {
+		if (alpha[i] == -1.0) {
 			continue;
 		}
 
@@ -227,35 +218,20 @@ void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
 	NUMnormalizeRows (my eigenvectors, my numberOfEigenvalues, numberOfColumns, 1);
 }
 
-void Eigen_initFromSymmetricMatrix_f (I, float **a, long n) {
-	iam (Eigen);
-
-	autoNUMmatrix<double> m (1, n, 1, n);
-	for (long i = 1; i <= n; i++) {
-		for (long j = 1; j <= n; j++) {
-			m[i][j] = a[i][j];
-		}
-	}
-	Eigen_initFromSymmetricMatrix (me, m.peek(), n);
-}
-
-void Eigen_initFromSymmetricMatrix (I, double **a, long n) {
-	iam (Eigen);
+void Eigen_initFromSymmetricMatrix (Eigen me, double **a, long n) {
 	double wt[1], temp;
 	char jobz = 'V', uplo = 'U';
 	long lwork = -1, info;
 
 	my dimension = my numberOfEigenvalues = n;
 
-	if (my eigenvectors == NULL) {
+	if (! my eigenvectors) {
 		Eigen_init (me, n, n);
 	}
 
 	NUMmatrix_copyElements (a, my eigenvectors, 1, n, 1, n);
 
-	/*
-		Get size of work array
-	*/
+	// Get size of work array
 
 	(void) NUMlapack_dsyev (&jobz, &uplo, &n, &my eigenvectors[1][1], &n,
 	                        &my eigenvalues[1], wt, &lwork, &info);
@@ -266,15 +242,12 @@ void Eigen_initFromSymmetricMatrix (I, double **a, long n) {
 	lwork = (long) floor (wt[0]);
 	autoNUMvector<double> work (0L, lwork);
 
-	(void) NUMlapack_dsyev (&jobz, &uplo, &n, &my eigenvectors[1][1], &n,
-	                        &my eigenvalues[1], work.peek(), &lwork, &info);
+	(void) NUMlapack_dsyev (&jobz, &uplo, &n, &my eigenvectors[1][1], &n, &my eigenvalues[1], work.peek(), &lwork, &info);
 	if (info != 0) {
 		Melder_throw (U"dsyev fails");
 	}
 
-	/*
-		We want descending order instead of ascending.
-	*/
+	// We want descending order instead of ascending.
 
 	for (long i = 1; i <= n / 2; i++) {
 		long ilast = n - i + 1;
@@ -286,37 +259,32 @@ void Eigen_initFromSymmetricMatrix (I, double **a, long n) {
 	}
 }
 
-Eigen Eigen_create (long numberOfEigenvalues, long dimension) {
+autoEigen Eigen_create (long numberOfEigenvalues, long dimension) {
 	try {
 		autoEigen me = Thing_new (Eigen);
-		Eigen_init (me.peek(), numberOfEigenvalues, dimension);
-		return me.transfer();
+		Eigen_init (me.get(), numberOfEigenvalues, dimension);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Eigen not created.");
 	}
 }
 
-long Eigen_getNumberOfEigenvectors (I) {
-	iam (Eigen);
+long Eigen_getNumberOfEigenvectors (Eigen me) {
 	return my numberOfEigenvalues;
 }
 
-double Eigen_getEigenvectorElement (I, long ivec, long element) {
-	iam (Eigen);
+double Eigen_getEigenvectorElement (Eigen me, long ivec, long element) {
 	if (ivec > my numberOfEigenvalues || element < 1 || element > my dimension) {
 		return NUMundefined;
 	}
 	return my eigenvectors[ivec][element];
 }
 
-long Eigen_getDimensionOfComponents (I) {
-	iam (Eigen);
+long Eigen_getDimensionOfComponents (Eigen me) {
 	return my dimension;
 }
 
-double Eigen_getSumOfEigenvalues (I, long from, long to) {
-	iam (Eigen);
-
+double Eigen_getSumOfEigenvalues (Eigen me, long from, long to) {
 	if (from < 1) {
 		from = 1;
 	}
@@ -326,16 +294,15 @@ double Eigen_getSumOfEigenvalues (I, long from, long to) {
 	if (to > my numberOfEigenvalues || from > to) {
 		return NUMundefined;
 	}
-	double sum = 0;
+	double sum = 0.0;
 	for (long i = from; i <= to; i++) {
 		sum += my eigenvalues[i];
 	}
 	return sum;
 }
 
-double Eigen_getCumulativeContributionOfComponents (I, long from, long to) {
-	iam (Eigen);
-	double partial = 0, sum = 0;
+double Eigen_getCumulativeContributionOfComponents (Eigen me, long from, long to) {
+	double partial = 0.0, sum = 0.0;
 
 	if (to == 0) {
 		to = my numberOfEigenvalues;
@@ -348,15 +315,14 @@ double Eigen_getCumulativeContributionOfComponents (I, long from, long to) {
 			}
 		}
 	}
-	return sum > 0 ? partial / sum : 0;
+	return sum > 0.0 ? partial / sum : 0.0;
 
 }
 
-long Eigen_getDimensionOfFraction (I, double fraction) {
-	iam (Eigen);
+long Eigen_getDimensionOfFraction (Eigen me, double fraction) {
 	double sum = Eigen_getSumOfEigenvalues (me, 0, 0);
 
-	if (sum == 0) {
+	if (sum == 0.0) {
 		return 1;
 	}
 
@@ -368,8 +334,7 @@ long Eigen_getDimensionOfFraction (I, double fraction) {
 	return n;
 }
 
-void Eigen_sort (I) {
-	iam (Eigen);
+void Eigen_sort (Eigen me) {
 	double temp, *e = my eigenvalues, **v = my eigenvectors;
 
 	for (long i = 1; i < my numberOfEigenvalues; i++) {
@@ -381,9 +346,8 @@ void Eigen_sort (I) {
 			}
 		}
 		if (k != i) {
-			/*
-				Swap eigenvalues and eigenvectors
-			*/
+
+			// Swap eigenvalues and eigenvectors
 
 			SWAP (e[i], e[k])
 			for (long j = 1; j <= my dimension; j++) {
@@ -393,8 +357,7 @@ void Eigen_sort (I) {
 	}
 }
 
-void Eigen_invertEigenvector (I, long ivec) {
-	iam (Eigen);
+void Eigen_invertEigenvector (Eigen me, long ivec) {
 
 	if (ivec < 1 || ivec > my numberOfEigenvalues) {
 		return;
@@ -405,11 +368,8 @@ void Eigen_invertEigenvector (I, long ivec) {
 	}
 }
 
-void Eigen_drawEigenvalues (I, Graphics g, long first, long last, double ymin, double ymax,
-                            int fractionOfTotal, int cumulative, double size_mm, const char32 *mark, int garnish) {
-	iam (Eigen);
-	double xmin = first, xmax = last, scale = 1, sumOfEigenvalues = 0;
-	long i;
+void Eigen_drawEigenvalues (Eigen me, Graphics g, long first, long last, double ymin, double ymax, bool fractionOfTotal, bool cumulative, double size_mm, const char32 *mark, bool garnish) {
+	double xmin = first, xmax = last, scale = 1.0, sumOfEigenvalues = 0.0;
 
 	if (first < 1) {
 		first = 1;
@@ -423,40 +383,40 @@ void Eigen_drawEigenvalues (I, Graphics g, long first, long last, double ymin, d
 	xmin = first - 0.5; xmax = last + 0.5;
 	if (fractionOfTotal || cumulative) {
 		sumOfEigenvalues = Eigen_getSumOfEigenvalues (me, 0, 0);
-		if (sumOfEigenvalues <= 0) {
-			sumOfEigenvalues = 1;
+		if (sumOfEigenvalues <= 0.0) {
+			sumOfEigenvalues = 1.0;
 		}
 		scale = sumOfEigenvalues;
 	}
 	if (ymax <= ymin) {
-		ymax = Eigen_getSumOfEigenvalues (me, (cumulative ? 1 : first), first) / scale;
-		ymin = Eigen_getSumOfEigenvalues (me, (cumulative ? 1 : last), last) / scale;
+		ymax = Eigen_getSumOfEigenvalues (me, ( cumulative ? 1 : first ), first) / scale;
+		ymin = Eigen_getSumOfEigenvalues (me, ( cumulative ? 1 : last ), last) / scale;
 		if (ymin > ymax) {
 			double tmp = ymin; ymin = ymax; ymax = tmp;
 		}
+		if (ymin == ymax) { // only one eigenvalue
+			ymin -= 0.1 * ymin; ymax = ymax += 0.1 * ymax;
+		}
 	}
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
-	for (i = first; i <= last; i++) {
-		double accu = Eigen_getSumOfEigenvalues (me, (cumulative ? 1 : i), i);
+	for (long i = first; i <= last; i ++) {
+		double accu = Eigen_getSumOfEigenvalues (me, ( cumulative ? 1 : i ), i);
 		Graphics_mark (g, i, accu / scale, size_mm, mark);
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, 1, fractionOfTotal ? (cumulative ? U"Cumulative fractional eigenvalue" : U"Fractional eigenvalue") :
-			                   (cumulative ? U"Cumulative eigenvalue" : U"Eigenvalue"));
-		Graphics_ticks (g, first, last, 1, 1, 0, 1);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Index");
+		Graphics_textLeft (g, true, ( fractionOfTotal ? ( cumulative ? U"Cumulative fractional eigenvalue" : U"Fractional eigenvalue" ) :
+			                   ( cumulative ? U"Cumulative eigenvalue" : U"Eigenvalue" ) ));
+		Graphics_ticks (g, first, last, true, true, false, true);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Index");
 	}
 }
 
-void Eigen_drawEigenvector (I, Graphics g, long ivec, long first, long last,
-                            double ymin, double ymax, int weigh, double size_mm, const char32 *mark,
-                            int connect, char32 **rowLabels, int garnish) {
-	iam (Eigen);
-	double xmin = first, xmax = last, *vec, w;
+void Eigen_drawEigenvector (Eigen me, Graphics g, long ivec, long first, long last, double ymin, double ymax, bool weigh, double size_mm, const char32 *mark, bool connect, char32 **rowLabels, bool garnish) {
+	double xmin = first, xmax = last;
 
 	if (ivec < 1 || ivec > my numberOfEigenvalues) {
 		return;
@@ -466,11 +426,10 @@ void Eigen_drawEigenvector (I, Graphics g, long ivec, long first, long last,
 		first = 1; last = my dimension;
 		xmin = 0.5; xmax = last + 0.5;
 	}
-	vec = my eigenvectors[ivec];
-	w = weigh ? sqrt (my eigenvalues[ivec]) : 1;
-	/*
-		If ymax < ymin the eigenvector will automatically be drawn inverted.
-	*/
+	double *vec = my eigenvectors[ivec];
+	double w = weigh ? sqrt (my eigenvalues[ivec]) : 1.0;
+
+	// If ymax < ymin the eigenvector will automatically be drawn inverted.
 
 	if (ymax == ymin) {
 		NUMvector_extrema (vec, first, last, &ymin, &ymax);
@@ -482,36 +441,36 @@ void Eigen_drawEigenvector (I, Graphics g, long ivec, long first, long last,
 	for (long i = first; i <= last; i++) {
 		Graphics_mark (g, i, w * vec[i], size_mm, mark);
 		if (connect && i > first) {
-			Graphics_line (g, i - 1, w * vec[i - 1], i, w * vec[i]);
+			Graphics_line (g, i - 1.0, w * vec[i - 1], i, w * vec[i]);
 		}
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
-		Graphics_markBottom (g, first, 0, 1, 0, rowLabels ? rowLabels[first] : Melder_integer (first));
-		Graphics_markBottom (g, last, 0, 1, 0, rowLabels ? rowLabels[last] : Melder_integer (last));
+		Graphics_markBottom (g, first, false, true, false, rowLabels ? rowLabels[first] : Melder_integer (first));
+		Graphics_markBottom (g, last, false, true, false, rowLabels ? rowLabels[last] : Melder_integer (last));
 		Graphics_drawInnerBox (g);
-		if (ymin * ymax < 0) {
-			Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+		if (ymin * ymax < 0.0) {
+			Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 		}
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		if (rowLabels == NULL) {
-			Graphics_textBottom (g, 1, U"Element number");
+		Graphics_marksLeft (g, 2, true, true, false);
+		if (! rowLabels) {
+			Graphics_textBottom (g, true, U"Element number");
 		}
 	}
 }
 
-void Eigens_alignEigenvectors (Collection me) {
+void Eigens_alignEigenvectors (OrderedOf<structEigen>* me) {
 	if (my size < 2) {
 		return;
 	}
 
-	Eigen e1 = (Eigen) my item[1];
+	Eigen e1 = my at [1];
 	double **evec1 = e1 -> eigenvectors;
 	long nev1 = e1 -> numberOfEigenvalues;
 	long dimension = e1 -> dimension;
 
-	for (long i = 2; i <= my size; i++) {
-		Eigen e2 = (Eigen) my item[i];
+	for (long i = 2; i <= my size; i ++) {
+		Eigen e2 = my at [i];
 		if (e2 -> dimension != dimension) {
 			Melder_throw (U"The dimension of the eigenvectors must be equal (offending object is ",  i, U").");
 		}
@@ -522,26 +481,25 @@ void Eigens_alignEigenvectors (Collection me) {
 		If r < 0 then mirror the eigenvector.
 	*/
 
-	for (long i = 2; i <= my size; i++) {
-		Eigen e2 = (Eigen) my item[i];
+	for (long i = 2; i <= my size; i ++) {
+		Eigen e2 = my at [i];
 		double **evec2 = e2 -> eigenvectors;
 
-		for (long j = 1; j <= MIN (nev1, e2 -> numberOfEigenvalues); j++) {
-			double ip = 0;
-			for (long k = 1; k <= dimension; k++) {
-				ip += evec1[j][k] * evec2[j][k];
+		for (long j = 1; j <= MIN (nev1, e2 -> numberOfEigenvalues); j ++) {
+			double ip = 0.0;
+			for (long k = 1; k <= dimension; k ++) {
+				ip += evec1 [j] [k] * evec2 [j] [k];
 			}
-			if (ip < 0) {
-				for (long k = 1; k <= dimension; k++) {
-					evec2[j][k] = - evec2[j][k];
+			if (ip < 0.0) {
+				for (long k = 1; k <= dimension; k ++) {
+					evec2 [j] [k] = - evec2 [j] [k];
 				}
 			}
 		}
 	}
 }
 
-static void Eigens_getAnglesBetweenSubspaces (I, thou, long ivec_from, long ivec_to, double *angles_degrees) {
-	iam (Eigen); thouart (Eigen);
+static void Eigens_getAnglesBetweenSubspaces (Eigen me, Eigen thee, long ivec_from, long ivec_to, double *angles_degrees) {
 	long nvectors = ivec_to - ivec_from + 1;
 	for (long i = 1; i <= nvectors; i++) {
 		angles_degrees[i] = NUMundefined;
@@ -573,18 +531,46 @@ static void Eigens_getAnglesBetweenSubspaces (I, thou, long ivec_from, long ivec
 	}
 	autoSVD svd = SVD_create_d (c.peek(), nvectors, nvectors);
 	for (long i = 1; i <= nvectors; i++) {
-		angles_degrees[i] = acos (svd -> d[i]) * 180 / NUMpi;
+		angles_degrees[i] = acos (svd -> d[i]) * 180.0 / NUMpi;
 	}
 }
 
-double Eigens_getAngleBetweenEigenplanes_degrees (I, thou) {
-	iam (Eigen); thouart (Eigen);
+double Eigens_getAngleBetweenEigenplanes_degrees (Eigen me, Eigen thee) {
 	double angles_degrees[3];
 
 	Eigens_getAnglesBetweenSubspaces (me, thee, 1, 2, angles_degrees);
 	return angles_degrees[2];
 }
 
+/* Very low level */
+
+void Eigen_and_matrix_into_matrix_principalComponents (Eigen me, double **from, long numberOfRows, long from_colbegin, double **to, long numberOfDimensionsToKeep, long to_colbegin) {
+	/*
+	 * Preconditions:
+	 * 
+	 * 	from[numberOfRows, from_colbegin - 1 + my dimension] exists
+	 * 	to [numberOfRows, to_colbegin - 1 + numberOfDimensionsToKeep] exists
+	 * 
+	 * Project/rotate the vectors in matrix 'from' along the 'numberOfDimensionsToKeep' eigenvectors into the matrix 'to'.
+	 */
+	from_colbegin = from_colbegin <= 0 ? 1 : from_colbegin;
+	to_colbegin = to_colbegin <= 0 ? 1 : to_colbegin;
+	if (numberOfDimensionsToKeep > my numberOfEigenvalues) {
+		Melder_throw (U"The number of dimensions to keep must not be larger than the number of eigenvalues.");
+	}
+	for (long irow = 1; irow <= numberOfRows; irow ++) {
+		for (long icol = 1; icol <= numberOfDimensionsToKeep; icol ++) {
+			double r = 0.0;
+			for (long k = 1; k <= my dimension; k ++) {
+				// eigenvector[icol] is in row[icol] of my eigenvectors
+				r += my eigenvectors  [icol] [k] * from [irow] [from_colbegin + k - 1];
+			}
+			to [irow] [to_colbegin + icol - 1] = r;
+		}
+	}
+}
+
+
 #undef MAX
 #undef MIN
 #undef SWAP
diff --git a/dwsys/Eigen.h b/dwsys/Eigen.h
index 56ad63f..4f19859 100644
--- a/dwsys/Eigen.h
+++ b/dwsys/Eigen.h
@@ -2,45 +2,35 @@
 #define _Eigen_h_
 /* Eigen.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
- djmw 20110306 Latest modification
-*/
-
 #include "Collection.h"
 #include "Graphics.h"
 #include "Strings_.h"
 
-
 #include "Eigen_def.h"
-oo_CLASS_CREATE (Eigen, Data);
 
-Eigen Eigen_create (long numberOfEigenvalues, long dimension);
+autoEigen Eigen_create (long numberOfEigenvalues, long dimension);
 
-void Eigen_init (I, long numberOfEigenvalues, long dimension);
+void Eigen_init (Eigen me, long numberOfEigenvalues, long dimension);
 
-void Eigen_initFromSymmetricMatrix_f (I, float **a, long n);
-void Eigen_initFromSymmetricMatrix (I, double **a, long n);
+void Eigen_initFromSymmetricMatrix (Eigen me, double **a, long n);
 
-void Eigen_initFromSquareRoot (I, double **a, long numberOfRows,
-	long numberOfColumns);
+void Eigen_initFromSquareRoot (Eigen me, double **a, long numberOfRows, long numberOfColumns);
 /*
 	Calculate eigenstructure for symmetric matrix A'A (e.g. covariance matrix),
 	when only A is given.
@@ -48,8 +38,7 @@ void Eigen_initFromSquareRoot (I, double **a, long numberOfRows,
 	Method: SVD.
 */
 
-void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
-	long numberOfColumns, double **b, long numberOfRows_b);
+void Eigen_initFromSquareRootPair (Eigen me, double **a, long numberOfRows, long numberOfColumns, double **b, long numberOfRows_b);
 /*
 	Calculate eigenstructure for A'Ax - lambda B'Bx = 0
 	Preconditions: numberOfRows >= numberOfColumns &&
@@ -57,46 +46,56 @@ void Eigen_initFromSquareRootPair (I, double **a, long numberOfRows,
 	Method: Generalized SVD.
 */
 
-long Eigen_getNumberOfEigenvectors (I);
+long Eigen_getNumberOfEigenvectors (Eigen me);
 
-long Eigen_getDimensionOfComponents (I);
+long Eigen_getDimensionOfComponents (Eigen me);
 
-double Eigen_getCumulativeContributionOfComponents (I, long from, long to);
+double Eigen_getCumulativeContributionOfComponents (Eigen me, long from, long to);
 
-long Eigen_getDimensionOfFraction (I, double fraction);
+long Eigen_getDimensionOfFraction (Eigen me, double fraction);
 
-double Eigen_getEigenvectorElement (I, long ivec, long element);
+double Eigen_getEigenvectorElement (Eigen me, long ivec, long element);
 
-double Eigen_getSumOfEigenvalues (I, long from, long to);
+double Eigen_getSumOfEigenvalues (Eigen me, long from, long to);
 
 
-void Eigen_sort (I);
+void Eigen_sort (Eigen me);
 /*
 	Sort eigenvalues and corresponding eigenvectors in decreasing order.
 */
 
-void Eigen_invertEigenvector (I, long ivec);
+void Eigen_invertEigenvector (Eigen me, long ivec);
 
-void Eigen_drawEigenvalues (I, Graphics g, long first, long last, double ymin, double ymax,
-	int fractionOfTotal, int cumulative, double size_mm, const char32 *mark, int garnish);
+void Eigen_drawEigenvalues (Eigen me, Graphics g, long first, long last, double ymin, double ymax,
+	bool fractionOfTotal, bool cumulative, double size_mm, const char32 *mark, bool garnish);
 
-void Eigen_drawEigenvector (I, Graphics g, long ivec, long first, long last,
-	double minimum, double maximum, int weigh, double size_mm, const char32 *mark,
-	int connect, char32 **rowLabels, int garnish);
+void Eigen_drawEigenvector (Eigen me, Graphics g, long ivec, long first, long last, double minimum, double maximum, bool weigh,
+	double size_mm, const char32 *mark, bool connect, char32 **rowLabels, bool garnish);
 /*
-	Draw eigenvector. When rowLabels != NULL, draw row text labels on bottom axis.
+	Draw eigenvector. When rowLabels != nullptr, draw row text labels on bottom axis.
 */
 
-void Eigens_alignEigenvectors (Collection me);
-/*
-	Correlate all eigenvectors with the eigenvectors of the first Eigen.
-	If r < 0 then mirror the eigenvectors of
+/**
+	Adapt the sign of each eigenvector except the first
+	in such a way that it correlates positively with the first eigenvector.
 */
+void Eigens_alignEigenvectors (OrderedOf<structEigen>* me);
 
-double Eigens_getAngleBetweenEigenplanes_degrees (I, thou);
+double Eigens_getAngleBetweenEigenplanes_degrees (Eigen me, Eigen thee);
 /*
 	Get angle between the eigenplanes, spanned by the first two eigenvectors, .
 */
 
+void Eigen_and_matrix_into_matrix_principalComponents (Eigen me, double **from, long numberOfRows, long from_colbegin, double **to, long numberOfDimensionsToKeep, long to_colbegin);
+/*
+ * Preconditions:
+ * 
+ * 	from[numberOfRows, from_colbegin - 1 + my dimension] exists
+ * 	to [numberOfRows, to_colbegin - 1 + numberOfDimensionsToKeep] exists
+ * 
+ * Project the vectors in matrix 'from' along the 'numberOfDimensionsToKeep' eigenvectors into the matrix 'to'.
+ */
+
+
 #endif /* _Eigen_h_ */
 
diff --git a/dwsys/Eigen_def.h b/dwsys/Eigen_def.h
index a3c3fdb..5d9dfe8 100644
--- a/dwsys/Eigen_def.h
+++ b/dwsys/Eigen_def.h
@@ -2,27 +2,22 @@
  *
  * Copyright (C) 1993-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
-*/
-
 #define ooSTRUCT Eigen
-oo_DEFINE_CLASS (Eigen, Data)
+oo_DEFINE_CLASS (Eigen, Daata)
 
 	oo_LONG (numberOfEigenvalues)
 	oo_LONG (dimension)
diff --git a/dwsys/FileInMemory.cpp b/dwsys/FileInMemory.cpp
index 556c4f6..abedf02 100644
--- a/dwsys/FileInMemory.cpp
+++ b/dwsys/FileInMemory.cpp
@@ -1,52 +1,53 @@
 /* FileInMemory.cpp
  *
- * Copyright (C) 2012-2013 David Weenink
+ * Copyright (C) 2012-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FileInMemory.h"
 #include "Strings_.h"
 
-Thing_implement (FileInMemory, Data, 0);
+Thing_implement (FileInMemory, Daata, 0);
 
-void structFileInMemory :: v_copy (thou) {
-	thouart (FileInMemory);
-	FileInMemory_Parent :: v_copy (thee);
-	thy d_path = Melder_dup (d_path);
-	thy d_id = Melder_dup (d_id);
-	thy d_numberOfBytes = d_numberOfBytes;
-	thy d_data = NUMvector<char> (0, d_numberOfBytes);
-	memcpy (thy d_data, d_data, d_numberOfBytes+1);
+void structFileInMemory :: v_copy (Daata thee_Daata) {
+	FileInMemory thee = static_cast <FileInMemory> (thee_Daata);
+	our FileInMemory_Parent :: v_copy (thee);
+	thy d_path = Melder_dup (our d_path);
+	thy d_id = Melder_dup (our d_id);
+	thy d_numberOfBytes = our d_numberOfBytes;
+	thy ownData = our ownData;
+	thy d_data = NUMvector<char> (0, our d_numberOfBytes);
+	memcpy (thy d_data, our d_data, our d_numberOfBytes + 1);
 }
 
-void structFileInMemory :: v_destroy () {
-	Melder_free (d_path);
-	Melder_free (d_id);
-	NUMvector_free <char>  (d_data, 0);
-	FileInMemory_Parent :: v_destroy ();
+void structFileInMemory :: v_destroy () noexcept {
+	Melder_free (our d_path);
+	Melder_free (our d_id);
+	if (our ownData)
+		NUMvector_free <char> (our d_data, 0);
+	our FileInMemory_Parent :: v_destroy ();
 }
 
 void structFileInMemory :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"File name: ", d_path);
-	MelderInfo_writeLine (U"Id: ", d_id);
-	MelderInfo_writeLine (U"Number of bytes: ", d_numberOfBytes);
+	our structDaata :: v_info ();
+	MelderInfo_writeLine (U"File name: ", our d_path);
+	MelderInfo_writeLine (U"Id: ", our d_id);
+	MelderInfo_writeLine (U"Number of bytes: ", our d_numberOfBytes);
 }
 
-FileInMemory FileInMemory_create (MelderFile file) {
+autoFileInMemory FileInMemory_create (MelderFile file) {
 	try {
 		if (! MelderFile_readable (file)) {
 			Melder_throw (U"File not readable.");
@@ -59,28 +60,30 @@ FileInMemory FileInMemory_create (MelderFile file) {
 		my d_path = Melder_dup (file -> path);
 		my d_id = Melder_dup (MelderFile_name (file));
 		my d_numberOfBytes = length;
-		my d_data = NUMvector <char> (0, my d_numberOfBytes); // one extra for 0-byte at end if text
+		my ownData = true;
+		my d_data = NUMvector <char> (0, my d_numberOfBytes);   // includes room for a final null byte in case the file happens to contain text
 		MelderFile_open (file);
 		for (long i = 0; i < my d_numberOfBytes; i++) {
 			unsigned int number = bingetu1 (file -> filePointer);
 			my d_data[i] = number;
 		}
-		my d_data[my d_numberOfBytes] = 0; // one extra
+		my d_data[my d_numberOfBytes] = 0;   // one extra
 		MelderFile_close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FileInMemory not created from \"", Melder_fileToPath (file), U"\".");
 	}
 }
 
-FileInMemory FileInMemory_createWithData (long numberOfBytes, const char *data, const char32 *path, const char32 *id) {
+autoFileInMemory FileInMemory_createWithData (long numberOfBytes, const char *data, const char32 *path, const char32 *id) {
 	try {
 		autoFileInMemory me = Thing_new (FileInMemory);
 		my d_path = Melder_dup (path);
 		my d_id = Melder_dup (id);
 		my d_numberOfBytes = numberOfBytes;
+		my ownData = false;
 		my d_data = const_cast<char *> (data); // copy pointer to data only
-		return me.transfer ();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FileInMemory not create from data.");
 	}
@@ -93,150 +96,143 @@ void FileInMemory_setId (FileInMemory me, const char32 *newId) {
 
 void FileInMemory_showAsCode (FileInMemory me, const char32 *name, long numberOfBytesPerLine)
 {
-	if (numberOfBytesPerLine <= 0) numberOfBytesPerLine = 20;
+	if (numberOfBytesPerLine <= 0) {
+		numberOfBytesPerLine = 20;
+	}
 	// autoNUMvector<unsigned char> data (0, my d_numberOfBytes); ????
 	MelderInfo_writeLine (U"\t\tstatic unsigned char ", name, U"_data[", my d_numberOfBytes+1, U"] = {");
 	for (long i = 0; i < my d_numberOfBytes; i++) {
 		unsigned char number = my d_data[i];
 		MelderInfo_write ((i % numberOfBytesPerLine == 0 ? U"\t\t\t" : U""), number, U",",
-			((i % numberOfBytesPerLine  == (numberOfBytesPerLine - 1)) ? U"\n" : U" "));
+			((i % numberOfBytesPerLine == (numberOfBytesPerLine - 1)) ? U"\n" : U" "));
 	}
 	MelderInfo_writeLine ((my d_numberOfBytes - 1) % numberOfBytesPerLine == (numberOfBytesPerLine - 1) ? U"\t\t\t0};" : U"0};");
 	MelderInfo_write (U"\t\tautoFileInMemory ", name, U" = FileInMemory_createWithData (");
 	MelderInfo_writeLine (my d_numberOfBytes, U", reinterpret_cast<const char *> (&", name, U"_data), \n\t\t\tU\"", my d_path, U"\", \n\t\t\tU\"", my d_id, U"\");");
 }
 
-Thing_implement (FilesInMemory, SortedSet, 0);
+Thing_implement (FileInMemorySet, SortedSet, 0);
 
-int structFilesInMemory :: s_compare_name (I, thou) {
-	iam (FileInMemory); thouart (FileInMemory);
+int structFileInMemorySet :: s_compare_name (FileInMemory me, FileInMemory thee) {
 	return Melder_cmp (my d_path, thy d_path);
 }
 
-int structFilesInMemory :: s_compare_id (I, thou) {
-	iam (FileInMemory); thouart (FileInMemory);
+int structFileInMemorySet :: s_compare_id (FileInMemory me, FileInMemory thee) {
 	return Melder_cmp (my d_id, thy d_id);
 }
 
-FilesInMemory FilesInMemory_create () {
-	try {
-		autoFilesInMemory me = Thing_new (FilesInMemory);
-		Collection_init (me.peek(), classFileInMemory, 30);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created.");
-	}
-}
-
-FilesInMemory FilesInMemory_createFromDirectoryContents (const char32 *dirpath, const char32 *fileGlobber) {
+autoFileInMemorySet FileInMemorySet_createFromDirectoryContents (const char32 *dirpath, const char32 *fileGlobber) {
 	try {
-		structMelderDir parent = { { 0 } };
+		structMelderDir parent { { 0 } };
 		Melder_pathToDir (dirpath, &parent);
 		autoStrings thee = Strings_createAsFileList (Melder_cat (dirpath, U"/", fileGlobber));
 		if (thy numberOfStrings < 1) {
 			Melder_throw (U"No files found.");
 		}
-		autoFilesInMemory me = FilesInMemory_create ();
-		for (long i = 1; i <= thy numberOfStrings; i++) {
-			structMelderFile file = { 0 };
-			MelderDir_getFile (&parent, thy strings[i], &file);
-			autoFileInMemory fim = FileInMemory_create (&file);
-			Collection_addItem (me.peek(), fim.transfer());
+		autoFileInMemorySet me = FileInMemorySet_create ();
+		for (long i = 1; i <= thy numberOfStrings; i ++) {
+			structMelderFile file { 0 };
+			MelderDir_getFile (& parent, thy strings [i], & file);
+			autoFileInMemory fim = FileInMemory_create (& file);
+			my addItem_move (fim.move());
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created from directory \"", dirpath, U"\" for files that match \"",
-		fileGlobber, U"\".");
+		Melder_throw (U"FileInMemorySet not created from directory \"", dirpath, U"\" for files that match \"", fileGlobber, U"\".");
 	}
 }
 
-void FilesInMemory_showAsCode (FilesInMemory me, const char32 *name, long numberOfBytesPerLine) {
+void FileInMemorySet_showAsCode (FileInMemorySet me, const char32 *name, long numberOfBytesPerLine) {
 	autoMelderString one_fim;
 	MelderInfo_writeLine (U"#include \"Collection.h\"");
 	MelderInfo_writeLine (U"#include \"FileInMemory.h\"");
 	MelderInfo_writeLine (U"#include \"melder.h\"\n");
-	MelderInfo_writeLine (U"FilesInMemory create_", name, U" () {");
+	MelderInfo_writeLine (U"autoFileInMemorySet create_", name, U" () {");
 	MelderInfo_writeLine (U"\ttry {");
-	MelderInfo_writeLine (U"\t\tautoFilesInMemory me = FilesInMemory_create ();");
-	for (long ifile = 1; ifile <= my size; ifile++) {
-		FileInMemory fim = (FileInMemory) my item[ifile];
-		MelderString_copy (&one_fim, name, ifile);
+	MelderInfo_writeLine (U"\t\tautoFileInMemorySet me = FileInMemorySet_create ();");
+	for (long ifile = 1; ifile <= my size; ifile ++) {
+		FileInMemory fim = my at [ifile];
+		MelderString_copy (& one_fim, name, ifile);
 		FileInMemory_showAsCode (fim, one_fim.string, numberOfBytesPerLine);
-		MelderInfo_writeLine (U"\t\tCollection_addItem (me.peek(), ", one_fim.string, U".transfer());\n");
+		MelderInfo_writeLine (U"\t\tCollection_addItem_move (me.get(), ", one_fim.string, U".move());\n");
 	}
-	MelderInfo_writeLine (U"\t\treturn me.transfer();");
+	MelderInfo_writeLine (U"\t\treturn me;");
 	MelderInfo_writeLine (U"\t} catch (MelderError) {");
-	MelderInfo_writeLine (U"\t\tMelder_throw (L\"FilesInMemory not created.\");");
+	MelderInfo_writeLine (U"\t\tMelder_throw (U\"FileInMemorySet not created.\");");
 	MelderInfo_writeLine (U"\t}");
 	MelderInfo_writeLine (U"}\n\n");
 }
 
-void FilesInMemory_showOneFileAsCode (FilesInMemory me, long index, const char32 *name, long numberOfBytesPerLine)
+void FileInMemorySet_showOneFileAsCode (FileInMemorySet me, long index, const char32 *name, long numberOfBytesPerLine)
 {
 	if (index < 1 || index > my size) return;
 	MelderInfo_writeLine (U"#include \"FileInMemory.h\"");
 	MelderInfo_writeLine (U"#include \"melder.h\"\n");
-	MelderInfo_writeLine (U"static FileInMemory create_new_object () {");
+	MelderInfo_writeLine (U"static autoFileInMemory create_new_object () {");
 	MelderInfo_writeLine (U"\ttry {");
 	autoMelderString one_fim;
-	FileInMemory fim = (FileInMemory) my item[index];
-	MelderString_append (&one_fim, name, index);
+	FileInMemory fim = my at [index];
+	MelderString_append (& one_fim, name, index);
 	FileInMemory_showAsCode (fim, U"me", numberOfBytesPerLine);
-	MelderInfo_writeLine (U"\t\treturn me.transfer();");
+	MelderInfo_writeLine (U"\t\treturn me;");
 	MelderInfo_writeLine (U"\t} catch (MelderError) {");
-	MelderInfo_writeLine (U"\t\tMelder_throw (L\"FileInMemory not created.\");");
+	MelderInfo_writeLine (U"\t\tMelder_throw (U\"FileInMemory not created.\");");
 	MelderInfo_writeLine (U"\t}");
 	MelderInfo_writeLine (U"}\n\n");
-	MelderInfo_writeLine (U"FileInMemory ", name, U" = create_new_object ();");
+	MelderInfo_writeLine (U"autoFileInMemory ", name, U" = create_new_object ();");
 }
 
-long FilesInMemory_getIndexFromId (FilesInMemory me, const char32 *id) {
+long FileInMemorySet_getIndexFromId (FileInMemorySet me, const char32 *id) {
 	long index = 0;
-	for (long i = 1; i <= my size; i++) {
-		FileInMemory fim = (FileInMemory) my item[i];
-		if (Melder_cmp (id, fim -> d_id) == 0) {
-			index = i; break;
+	for (long i = 1; i <= my size; i ++) {
+		FileInMemory fim = my at [i];
+		if (Melder_equ (id, fim -> d_id)) {
+			index = i;
+			break;
 		}
 	}
 	return index;
 }
 
-Strings FilesInMemory_to_Strings_id (FilesInMemory me) {
+autoStrings FileInMemorySet_to_Strings_id (FileInMemorySet me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector <char32 *> (1, my size);
 		thy numberOfStrings = 0;
-		for (long ifile = 1; ifile <= my size; ifile++) {
-			FileInMemory fim = (FileInMemory) my item[ifile];
-			thy strings[ifile] = Melder_dup_f (fim -> d_id);
-			thy numberOfStrings++;
+		for (long ifile = 1; ifile <= my size; ifile ++) {
+			FileInMemory fim = my at [ifile];
+			thy strings [ifile] = Melder_dup_f (fim -> d_id);
+			thy numberOfStrings ++;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No Strings created from FilesinMemory.");
 	}
 }
 
-char * FilesInMemory_getCopyOfData (FilesInMemory me, const char32 *id, long *numberOfBytes) {
+char * FileInMemorySet_getCopyOfData (FileInMemorySet me, const char32 *id, long *numberOfBytes) {
 	*numberOfBytes = 0;
-	long index = FilesInMemory_getIndexFromId (me, id);
-	if (index == 0) return 0;
-	FileInMemory fim = (FileInMemory) my item[index];
+	long index = FileInMemorySet_getIndexFromId (me, id);
+	if (index == 0) {
+		return nullptr;
+	}
+	FileInMemory fim = my at [index];
 	char *data = (char *) _Melder_malloc (fim -> d_numberOfBytes);
-	if (data == 0 ||
-		(memcpy (data, fim -> d_data, fim -> d_numberOfBytes) == NULL)) {
+	if (! data || ! memcpy (data, fim -> d_data, fim -> d_numberOfBytes)) {
 		//Melder_appendError (U"No memory for dictionary.");
-		return 0;
+		return nullptr;
 	}
 	*numberOfBytes = fim -> d_numberOfBytes;
 	return data;
 }
 
-const char * FilesInMemory_getData (FilesInMemory me, const char32 *id, long *numberOfBytes) {
+const char * FileInMemorySet_getData (FileInMemorySet me, const char32 *id, long *numberOfBytes) {
 	*numberOfBytes = 0;
-	long index = FilesInMemory_getIndexFromId (me, id);
-	if (index == 0) return 0;
-	FileInMemory fim = (FileInMemory) my item[index];
+	long index = FileInMemorySet_getIndexFromId (me, id);
+	if (index == 0) {
+		return nullptr;
+	}
+	FileInMemory fim = my at [index];
 	*numberOfBytes = fim -> d_numberOfBytes;
 	return fim -> d_data;
 }
diff --git a/dwsys/FileInMemory.h b/dwsys/FileInMemory.h
index 5948e94..f52fdf2 100644
--- a/dwsys/FileInMemory.h
+++ b/dwsys/FileInMemory.h
@@ -2,72 +2,71 @@
 #define _FileInMemory_h_
 /* FileInMemory.h
  *
- * Copyright (C) 2011-2012 David Weenink
+ * Copyright (C) 2011-2012,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
-	djmw 20120125
-*/
 #include "Collection.h"
-
-#include "Strings_.h"
-#include "melder.h"
 #include "Strings_.h"
 
-Thing_define (FileInMemory, Data) {
+Thing_define (FileInMemory, Daata) {
 	char32 *d_path;
 	char32 *d_id;
 	long d_numberOfBytes;
 	char *d_data;
+	bool ownData;
 
-	void v_copy (Any data_to)
+	void v_copy (Daata data_to)
 		override;
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
 };
 
-FileInMemory FileInMemory_create (MelderFile file);
-FileInMemory FileInMemory_createWithData (long numberOfBytes, const char *data, const char32 *path, const char32 *id);
+autoFileInMemory FileInMemory_create (MelderFile file);
+
+autoFileInMemory FileInMemory_createWithData (long numberOfBytes, const char *data, const char32 *path, const char32 *id);
 
 void FileInMemory_dontOwnData (FileInMemory me);
+
 void FileInMemory_setId (FileInMemory me, const char32 *newId);
 
 void FileInMemory_showAsCode (FileInMemory me, const char32 *name, long numberOfBytesPerLine);
 
-Thing_define (FilesInMemory, SortedSet) {
+Collection_define (FileInMemorySet, SortedSetOf, FileInMemory) {
 	int d_sortKey;
 
-	static int s_compare_name (Any data1, Any data2);
-	static int s_compare_id (Any data1, Any data2);
-	Data_CompareFunction v_getCompareFunction ()
+	static int s_compare_name (FileInMemory data1, FileInMemory data2);
+	static int s_compare_id (FileInMemory data1, FileInMemory data2);
+	CompareHook v_getCompareHook ()
 		override { return d_sortKey == 0 ? s_compare_name : s_compare_id; }
 };
 
-FilesInMemory FilesInMemory_create ();
-FilesInMemory FilesInMemory_createFromDirectoryContents (const char32 *dirpath, const char32 *file);
+autoFileInMemorySet FileInMemorySet_createFromDirectoryContents (const char32 *dirpath, const char32 *file);
+
+void FileInMemorySet_showAsCode (FileInMemorySet me, const char32 *name, long numberOfBytesPerLine);
+
+void FileInMemorySet_showOneFileAsCode (FileInMemorySet me, long index, const char32 *name, long numberOfBytesPerLine);
+
+long FileInMemorySet_getIndexFromId (FileInMemorySet me, const char32 *id);
+
+autoStrings FileInMemorySet_to_Strings_id (FileInMemorySet me);
 
-void FilesInMemory_showAsCode (FilesInMemory me, const char32 *name, long numberOfBytesPerLine);
-void FilesInMemory_showOneFileAsCode (FilesInMemory me, long index, const char32 *name, long numberOfBytesPerLine);
+char * FileInMemorySet_getCopyOfData (FileInMemorySet me, const char32 *id, long *numberOfBytes);
 
-long FilesInMemory_getIndexFromId (FilesInMemory me, const char32 *id);
-Strings FilesInMemory_to_Strings_id (FilesInMemory me);
-char * FilesInMemory_getCopyOfData (FilesInMemory me, const char32 *id, long *numberOfBytes);
-const char * FilesInMemory_getData (FilesInMemory me, const char32 *id, long *numberOfBytes);
+const char * FileInMemorySet_getData (FileInMemorySet me, const char32 *id, long *numberOfBytes);
 
 #endif // _FileInMemory_h_
diff --git a/dwsys/Graphics_extensions.cpp b/dwsys/Graphics_extensions.cpp
index 1ea79cf..6a9dfd5 100644
--- a/dwsys/Graphics_extensions.cpp
+++ b/dwsys/Graphics_extensions.cpp
@@ -1,20 +1,19 @@
-/* Graphics_extensions.c
+/* Graphics_extensions.cpp
  *
- * Copyright (C) 2012 -2014 David Weenink
+ * Copyright (C) 2012-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,7 +33,7 @@
 void Graphics_boxAndWhiskerPlot (Graphics g, double data[], long ndata, double x, double r, double w, double ymin, double ymax) {
 	int lineType = Graphics_inqLineType (g);
 
-	Melder_assert (r > 0 && w > 0);
+	Melder_assert (r > 0.0 && w > 0.0);
 	if (ndata < 3) {
 		return;
 	}
@@ -60,7 +59,7 @@ void Graphics_boxAndWhiskerPlot (Graphics g, double data[], long ndata, double x
 		return;
 	}
 
-	double mean = 0;
+	double mean = 0.0;
 	for (long i = 1; i <= ndata; i++) {
 		mean += data[i];
 	}
@@ -187,7 +186,7 @@ void Graphics_quantileQuantilePlot (Graphics g, long numberOfQuantiles, double x
 	long numberOfData = xnumberOfData < ynumberOfData ? xnumberOfData : ynumberOfData;
 	numberOfQuantiles = numberOfData < numberOfQuantiles ? numberOfData : numberOfQuantiles;
 	double un = pow (0.5, 1.0 / numberOfQuantiles);
-	double u1 = 1 - un;
+	double u1 = 1.0 - un;
 	if (xmin == xmax) {
 		xmin = NUMquantile (xnumberOfData, xsorted.peek(), u1);
 		xmax = NUMquantile (xnumberOfData, xsorted.peek(), un);
@@ -213,7 +212,7 @@ void Graphics_matrixAsSquares (Graphics g, double **matrix, long numberOfRows, l
 	long numberOfCells = numberOfRows * numberOfColumns;
 	autoPermutation p = Permutation_create (numberOfCells);
 	if (randomFillOrder) {
-		Permutation_permuteRandomly_inline (p.peek(), 1, numberOfCells);
+		Permutation_permuteRandomly_inline (p.get(), 1, numberOfCells);
 	}
 	double zAbsMax = fabs (zmax) > fabs (zmin) ? fabs (zmax) : fabs (zmin);
 	Graphics_Colour colour = Graphics_inqColour (g);
@@ -222,7 +221,7 @@ void Graphics_matrixAsSquares (Graphics g, double **matrix, long numberOfRows, l
 	double dx = fabs (x2WC - x1WC) / numberOfColumns;
 	double dy = fabs (y2WC - y1WC) / numberOfRows;
 	for (long i = 1; i <= numberOfCells; i++) {
-		long index = Permutation_getValueAtIndex (p.peek(), i);
+		long index = Permutation_getValueAtIndex (p.get(), i);
 		long irow = (index - 1) / numberOfColumns + 1;
 		long icol = (index - 1) % numberOfColumns + 1;
 		double z = matrix[irow][icol];
@@ -239,7 +238,7 @@ void Graphics_matrixAsSquares (Graphics g, double **matrix, long numberOfRows, l
 		y1 = y1 < y1WC ? y1WC : y1;
 		double y2 = y1WC + ycenter + zweight * 0.5 * dy * cellSizeFactor;
 		y2 = y2 > y2WC ? y2WC : y2;
-		if (z > 0) {
+		if (z > 0.0) {
 			Graphics_setColour (g, Graphics_WHITE);
 		}
 		Graphics_fillRectangle (g, x1, x2, y1, y2);
@@ -266,4 +265,4 @@ void Graphics_lagPlot (Graphics g, double data[], long numberOfData, double xmin
 	Graphics_setFontSize (g, fontSize);
 }
 
-/* End of file Graphics_extensions.c */
+/* End of file Graphics_extensions.cpp */
diff --git a/dwsys/Graphics_extensions.h b/dwsys/Graphics_extensions.h
index 05a4d2a..8d5358c 100644
--- a/dwsys/Graphics_extensions.h
+++ b/dwsys/Graphics_extensions.h
@@ -4,33 +4,27 @@
  *
  * Copyright (C) 2012-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20120914 Latest modification.
-*/
-
 #include "Graphics.h"
 
-/*
+/**
 	Draw a box plot of data[1..ndata]. The vertical center line of the plot
 	is at position 'x'. The rectangle box is 2*w wide, the whisker 2*r.
 	All drawing outside [ymin, ymax] is clipped.
 */
-
 void Graphics_boxAndWhiskerPlot (Graphics g, double data[], long ndata, double x, double r, double w, double ymin, double ymax);
 
 void Graphics_quantileQuantilePlot (Graphics g, long numberOfQuantiles, double xdata[], long xnumberOfData, double ydata[], long ynumberOfData, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *plotLabel);
diff --git a/dwsys/Index.cpp b/dwsys/Index.cpp
index b0452f1..8832d69 100644
--- a/dwsys/Index.cpp
+++ b/dwsys/Index.cpp
@@ -1,20 +1,19 @@
 /* Index.cpp
  *
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011,2015,2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,15 +48,14 @@
 #include "Index_def.h"
 
 
-Thing_implement (Index, Data, 0);
+Thing_implement (Index, Daata, 0);
 
 void structIndex :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"Number of elements: ", numberOfElements);
+	structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of elements: ", our numberOfElements);
 }
 
-void Index_init (I, long numberOfElements) {
-	iam (Index);
+void Index_init (Index me, long numberOfElements) {
 	if (numberOfElements < 1) {
 		Melder_throw (U"Cannot create index without elements.");
 	}
@@ -66,8 +64,7 @@ void Index_init (I, long numberOfElements) {
 	my classIndex = NUMvector<long> (1, numberOfElements);
 }
 
-Index Index_extractPart (I, long from, long to) {
-	iam (Index);
+autoIndex Index_extractPart (Index me, long from, long to) {
 	try {
 		if (from == 0) {
 			from = 1;
@@ -75,15 +72,16 @@ Index Index_extractPart (I, long from, long to) {
 		if (to == 0) {
 			to = my numberOfElements;
 		}
-		if (to < from || from < 1 || to > my numberOfElements) Melder_throw
-			(U"Range should be in interval [1,", my numberOfElements, U"].");
+		if (to < from || from < 1 || to > my numberOfElements) {
+			Melder_throw (U"Range should be in interval [1,", my numberOfElements, U"].");
+		}
 		autoIndex thee = Data_copy (me);
 		thy numberOfElements = to - from + 1;
-		/* */
-		for (long i = 1; i <= thy numberOfElements; i++) {
-			thy classIndex[i] = my classIndex[from + i - 1];
+		
+		for (long i = 1; i <= thy numberOfElements; i ++) {
+			thy classIndex [i] = my classIndex [from + i - 1];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": part not extracted.");
 	}
@@ -91,20 +89,20 @@ Index Index_extractPart (I, long from, long to) {
 
 Thing_implement (StringsIndex, Index, 0);
 
-StringsIndex StringsIndex_create (long numberOfElements) {
+autoStringsIndex StringsIndex_create (long numberOfElements) {
 	try {
-		autoStringsIndex me = (StringsIndex) Thing_new (StringsIndex);
-		Index_init (me.peek(), numberOfElements);
-		return me.transfer();
+		autoStringsIndex me = Thing_new (StringsIndex);
+		Index_init (me.get(), numberOfElements);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"StringsIndex not created.");
 	}
 }
 
 int StringsIndex_getClass (StringsIndex me, char32 *klasLabel) {
-	for (long i = 1; i <= my classes -> size; i++) {
-		SimpleString ss = (SimpleString) my classes -> item[i];
-		if (Melder_cmp (ss -> string, klasLabel) == 0) {
+	for (long i = 1; i <= my classes->size; i ++) {
+		SimpleString ss = (SimpleString) my classes->at [i];   // FIXME cast
+		if (Melder_equ (ss -> string, klasLabel)) {
 			return i;
 		}
 	}
@@ -113,9 +111,11 @@ int StringsIndex_getClass (StringsIndex me, char32 *klasLabel) {
 
 long StringsIndex_countItems (StringsIndex me, int iclass) {
 	long sum = 0;
-	for (long i = 1; i <= my numberOfElements; i++) if (my classIndex[i] == iclass) {
-			sum++;
+	for (long i = 1; i <= my numberOfElements; i ++) {
+		if (my classIndex [i] == iclass) {
+			sum ++;
 		}
+	}
 	return sum;
 }
 
diff --git a/dwsys/Index.h b/dwsys/Index.h
index e4a4a0d..a9cefad 100644
--- a/dwsys/Index.h
+++ b/dwsys/Index.h
@@ -4,32 +4,29 @@
  *
  * Copyright (C) 2005-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 
 #include "Index_def.h"
-oo_CLASS_CREATE (Index, Data);
-oo_CLASS_CREATE (StringsIndex, Index);
 
-void Index_init (I, long numberOfElements);
+void Index_init (Index me, long numberOfElements);
 
-Index Index_extractPart (I, long from, long to);
+autoIndex Index_extractPart (Index me, long from, long to);
 
-StringsIndex StringsIndex_create (long numberOfElements);
+autoStringsIndex StringsIndex_create (long numberOfElements);
 
 int StringsIndex_getClass (StringsIndex me, char32 *classLabel);
 
diff --git a/dwsys/Index_def.h b/dwsys/Index_def.h
index e94151e..52c9e1c 100644
--- a/dwsys/Index_def.h
+++ b/dwsys/Index_def.h
@@ -1,20 +1,19 @@
 /* Index_def.h
  *
- * Copyright (C) 2005-2006 David Weenink
+ * Copyright (C) 2005-2006,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -23,8 +22,9 @@
 */
 
 #define ooSTRUCT Index
-oo_DEFINE_CLASS (Index, Data)
-	oo_OBJECT (Ordered, 0, classes)
+oo_DEFINE_CLASS (Index, Daata)
+
+	oo_AUTO_OBJECT (Ordered, 0, classes)
 	oo_LONG (numberOfElements)
 	oo_LONG_VECTOR (classIndex, numberOfElements)
 
@@ -36,9 +36,12 @@ oo_DEFINE_CLASS (Index, Data)
 oo_END_CLASS(Index)	
 #undef ooSTRUCT
 
+
 #define ooSTRUCT StringsIndex
 oo_DEFINE_CLASS (StringsIndex, Index)
+
 oo_END_CLASS(StringsIndex)
 #undef ooSTRUCT
 
+
 /* End of file Index_def.h */	
diff --git a/dwsys/Makefile b/dwsys/Makefile
index 598c65e..2e71955 100644
--- a/dwsys/Makefile
+++ b/dwsys/Makefile
@@ -8,7 +8,7 @@ CPPFLAGS =  -I ../stat -I ../num -I ../sys -I dwsys -I ../external/gsl -I ../kar
 all: libdwsys.a
 
 OBJECTS = Collection_extensions.o Command.o \
-	DLL.o Eigen.o FileInMemory.o Graphics_extensions.o Index.o \
+	DoublyLinkedList.o Eigen.o FileInMemory.o Graphics_extensions.o Index.o \
 	NUM2.o NUMhuber.o NUMlapack.o NUMmachar.o \
 	NUMf2c.o NUMcblas.o NUMclapack.o NUMfft_d.o NUMsort2.o \
 	NUMmathlib.o NUMstring.o \
diff --git a/dwsys/NUM2.cpp b/dwsys/NUM2.cpp
index 1ce213b..2223449 100644
--- a/dwsys/NUM2.cpp
+++ b/dwsys/NUM2.cpp
@@ -1,20 +1,19 @@
 /* NUM2.cpp
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -105,24 +104,6 @@ struct pdf2_struct {
 	double df2;
 };
 
-int NUMdmatrix_hasInfinities (double **m, long rb, long re, long cb, long ce) {
-	double min = m[rb][cb];
-	double max = min;
-	for (long i = rb; i <= re; i++) {
-		for (long j = cb; j <= ce; j++) {
-			if (m[i][j] > max) {
-				max = m[i][j];
-			} else if (m[i][j] < min) {
-				min = m[i][j];
-			}
-		}
-	}
-	if (! NUMfpp) {
-		NUMmachar ();
-	}
-	return max >= NUMfpp -> rmax || min <= - NUMfpp -> rmax;
-}
-
 void NUMdmatrix_printMatlabForm (double **m, long nr, long nc, const char32 *name) {
 	long npc = 5;
 	ldiv_t n = ldiv (nc, npc);
@@ -132,19 +113,13 @@ void NUMdmatrix_printMatlabForm (double **m, long nr, long nc, const char32 *nam
 	for (long i = 1; i <= nr; i++) {
 		for (long j = 1; j <= n.quot; j++) {
 			for (long k = 1; k <= npc; k++) {
-				MelderInfo_write (
-					m[i][ (j - 1) *npc + k],
-					(k < npc ? U", " : U"")
-				);
+				MelderInfo_write (m[i][ (j - 1) *npc + k], (k < npc ? U", " : U""));
 			}
 			MelderInfo_write (j < n.quot ? U",\n" : U"");
 		}
 
 		for (long k = 1; k <= n.rem; k++) {
-			MelderInfo_write (
-				m[i][n.quot * npc + k],
-				(k < n.rem ? U", " : U"")
-			);
+			MelderInfo_write (m[i][n.quot * npc + k], (k < n.rem ? U", " : U""));
 		}
 		MelderInfo_write (i < nr ? U";\n" : U"];\n");
 	}
@@ -153,7 +128,7 @@ void NUMdmatrix_printMatlabForm (double **m, long nr, long nc, const char32 *nam
 
 void NUMcentreRows (double **a, long rb, long re, long cb, long ce) {
 	for (long i = rb; i <= re; i++) {
-		double rowmean = 0;
+		double rowmean = 0.0;
 		for (long j = cb; j <= ce; j++) {
 			rowmean += a[i][j];
 		}
@@ -166,7 +141,7 @@ void NUMcentreRows (double **a, long rb, long re, long cb, long ce) {
 
 void NUMcentreColumns (double **a, long rb, long re, long cb, long ce, double *centres) {
 	for (long j = cb; j <= ce; j++) {
-		double colmean = 0;
+		double colmean = 0.0;
 		for (long i = rb; i <= re; i++) {
 			colmean += a[i][j];
 		}
@@ -174,7 +149,7 @@ void NUMcentreColumns (double **a, long rb, long re, long cb, long ce, double *c
 		for (long i = rb; i <= re; i++) {
 			a[i][j] -= colmean;
 		}
-		if (centres != NULL) {
+		if (centres) {
 			centres[j - cb + 1] = colmean;
 		}
 	}
@@ -188,11 +163,11 @@ void NUMdoubleCentre (double **a, long rb, long re, long cb, long ce) {
 void NUMnormalizeColumns (double **a, long nr, long nc, double norm) {
 	Melder_assert (norm > 0);
 	for (long j = 1; j <= nc; j++) {
-		double s = 0;
+		double s = 0.0;
 		for (long i = 1; i <= nr; i++) {
 			s += a[i][j] * a[i][j];
 		}
-		if (s <= 0) {
+		if (s <= 0.0) {
 			continue;
 		}
 		s = sqrt (norm / s);
@@ -205,11 +180,11 @@ void NUMnormalizeColumns (double **a, long nr, long nc, double norm) {
 void NUMnormalizeRows (double **a, long nr, long nc, double norm) {
 	Melder_assert (norm > 0);
 	for (long i = 1; i <= nr; i++) {
-		double s = 0;
+		double s = 0.0;
 		for (long j = 1; j <= nc; j++) {
 			s += a[i][j] * a[i][j];
 		}
-		if (s <= 0) {
+		if (s <= 0.0) {
 			continue;
 		}
 		s = sqrt (norm / s);
@@ -221,13 +196,13 @@ void NUMnormalizeRows (double **a, long nr, long nc, double norm) {
 
 void NUMnormalize (double **a, long nr, long nc, double norm) {
 	Melder_assert (norm > 0);
-	double sq = 0;
+	double sq = 0.0;
 	for (long i = 1; i <= nr; i++) {
 		for (long j = 1; j <= nc; j++) {
 			sq += a[i][j] * a[i][j];
 		}
 	}
-	if (sq <= 0) {
+	if (sq <= 0.0) {
 		return;
 	}
 	norm = sqrt (norm / sq);
@@ -244,7 +219,7 @@ void NUMstandardizeColumns (double **a, long rb, long re, long cb, long ce) {
 		return;
 	}
 	for (long j = cb; j <= ce; j++) {
-		double ep = 0, s = 0, sdev, var = 0;
+		double ep = 0.0, s = 0.0, sdev, var = 0.0;
 		for (long i = rb; i <= re; i++) {
 			s += a[i][j];
 		}
@@ -254,12 +229,12 @@ void NUMstandardizeColumns (double **a, long rb, long re, long cb, long ce) {
 			ep += s;
 			var += s * s;
 		}
-		if (ave != 0) {
+		if (ave != 0.0) {
 			for (long i = rb; i <= re; i++) {
 				a[i][j] -= ave;
 			}
 		}
-		if (var > 0) {
+		if (var > 0.0) {
 			var = (var - ep * ep / n) / (n - 1);
 			sdev = sqrt (var);
 			for (long i = rb; i <= re; i++) {
@@ -275,7 +250,7 @@ void NUMstandardizeRows (double **a, long rb, long re, long cb, long ce) {
 		return;
 	}
 	for (long i = rb; i <= re; i++) {
-		double ep = 0, s = 0, sdev, var = 0;
+		double ep = 0.0, s = 0.0, sdev, var = 0.0;
 		for (long j = cb; j <= ce; j++) {
 			s += a[i][j];
 		}
@@ -285,12 +260,12 @@ void NUMstandardizeRows (double **a, long rb, long re, long cb, long ce) {
 			ep += s;
 			var += s * s;
 		}
-		if (ave != 0) {
+		if (ave != 0.0) {
 			for (long j = cb; j <= ce; j++) {
 				a[i][j] -= ave;
 			}
 		}
-		if (var > 0) {
+		if (var > 0.0) {
 			var = (var - ep * ep / n) / (n - 1);
 			sdev = sqrt (var);
 			for (long j = cb; j <= ce; j++) {
@@ -306,7 +281,7 @@ void NUMaverageColumns (double **a, long rb, long re, long cb, long ce) {
 		return;
 	}
 	for (long j = cb; j <= ce; j++) {
-		double ave = 0;
+		double ave = 0.0;
 		for (long i = rb; i <= re; i++) {
 			ave += a[i][j];
 		}
@@ -318,81 +293,73 @@ void NUMaverageColumns (double **a, long rb, long re, long cb, long ce) {
 
 }
 
-void NUMvector_avevar (double *a, long n, double *average, double *variance) {
-
-	double eps = 0, mean = 0, var = 0;
+void NUMvector_avevar (double *a, long n, double *p_mean, double *p_var) {
 
+	double mean = 0.0;
 	for (long i = 1; i <= n; i++) {
 		mean += a[i];
 	}
 
 	mean /= n;
 
-	if (average != NULL) {
-		*average = mean;
+	if (p_mean) {
+		*p_mean = mean;
 	}
 
-	if (variance == NULL) {
-		return;
-	}
+	if (p_var) {
+		double eps = 0.0, var = 0.0;
+		if (n > 1) {
+			for (long i = 1; i <= n; i++) {
+				double s = a[i] - mean;
+				eps += s;
+				var += s * s;
+			}
 
-	if (n > 1) {
-		for (long i = 1; i <= n; i++) {
-			double s = a[i] - mean;
-			eps += s;
-			var += s * s;
+			var = (var - eps * eps / n);
+		} else {
+			var = NUMundefined;
 		}
-
-		var = (var - eps * eps / n);
-	} else {
-		var = NUMundefined;
+		*p_var = var;
 	}
-	*variance = var;
 }
 
-void NUMcolumn_avevar (double **a, long nr, long nc, long icol, double *average, double *variance) {
-
-	double eps = 0, mean = 0, var = 0;
+void NUMcolumn_avevar (double **a, long nr, long nc, long icol, double *p_mean, double *p_var) {
 
 	Melder_assert (nr > 0 && nc > 0 && icol > 0 && icol <= nc);
 
+	double mean = 0.0;
 	for (long i = 1; i <= nr; i++) {
 		mean += a[i][icol];
 	}
 
 	mean /= nr;
 
-	if (average != NULL) {
-		*average = mean;
+	if (p_mean) {
+		*p_mean = mean;
 	}
 
-	if (variance == NULL) {
-		return;
-	}
+	if (p_var) {
+		double eps = 0.0, var = 0.0;
+		if (nr > 1) {
+			for (long i = 1; i <= nr; i++) {
+				double s = a[i][icol] - mean;
+				eps += s;
+				var += s * s;
+			}
 
-	if (nr > 1) {
-		for (long i = 1; i <= nr; i++) {
-			double s = a[i][icol] - mean;
-			eps += s;
-			var += s * s;
+			var = (var - eps * eps / nr);
+		} else {
+			var = NUMundefined;
 		}
-
-		var = (var - eps * eps / nr);
-	} else {
-		var = NUMundefined;
+		*p_var = var;
 	}
-
-	*variance = var;
 }
 
-void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2,
-                        double *average1, double *variance1, double *average2, double *variance2,
-                        double *covariance) {
-	double eps1 = 0, eps2 = 0, mean1 = 0, mean2 = 0;
-	double var1 = 0, var2 = 0, covar = 0;
+void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2, double *p_mean1, double *p_var1, double *p_mean2, double *p_var2, double *p_covar) {
 
 	Melder_assert (icol1 > 0 && icol1 <= nc && icol2 > 0 && icol2 <= nc);
 
+	double mean1 = 0.0, mean2 = 0.0;
 	for (long i = 1; i <= nr; i++) {
 		mean1 += a[i][icol1];
 		mean2 += a[i][icol2];
@@ -401,47 +368,46 @@ void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2,
 	mean1 /= nr;
 	mean2 /= nr;
 
-	if (average1 != NULL) {
-		*average1 = mean1;
-	}
-	if (average2 != NULL) {
-		*average2 = mean2;
+	if (p_mean1) {
+		*p_mean1 = mean1;
 	}
-
-	if (variance1 == NULL && variance2 == NULL && covariance == NULL) {
-		return;
+	if (p_mean2) {
+		*p_mean2 = mean2;
 	}
 
-	if (nr > 1) {
-		for (long i = 1; i <= nr; i++) {
-			double s1 = a[i][icol1] - mean1;
-			double s2 = a[i][icol2] - mean2;
-			eps1 += s1;
-			eps2 += s2;
-			var1 += s1 * s1;
-			var2 += s2 * s2;
-			covar += s1 * s2;
-		}
+	if (p_var1 || p_var2 || p_covar) {
+		double eps1 = 0.0, eps2 = 0.0, var1 = 0.0, var2 = 0.0, covar = 0.0;
 
-		var1 = (var1 - eps1 * eps1 / nr);
-		var2 = (var2 - eps2 * eps2 / nr);;
-	} else {
-		var1 = NUMundefined;
-		var2 = NUMundefined;
-		covar = NUMundefined;
-	}
+		if (nr > 1) {
+			for (long i = 1; i <= nr; i++) {
+				double s1 = a[i][icol1] - mean1;
+				double s2 = a[i][icol2] - mean2;
+				eps1 += s1;
+				eps2 += s2;
+				var1 += s1 * s1;
+				var2 += s2 * s2;
+				covar += s1 * s2;
+			}
 
-	if (variance1 != NULL) {
-		*variance1 = var1;
-	}
-	if (variance2 != NULL) {
-		*variance2 = var2;
-	}
-	if (covariance != NULL) {
-		*covariance = covar;
-	}
-	if (icol1 == icol2) {
-		*covariance = *variance1;
+			var1 = (var1 - eps1 * eps1 / nr);
+			var2 = (var2 - eps2 * eps2 / nr);;
+		} else {
+			var1 = NUMundefined;
+			var2 = NUMundefined;
+			covar = NUMundefined;
+		}
+		if (p_var1) {
+			*p_var1 = var1;
+		}
+		if (p_var2) {
+			*p_var2 = var2;
+		}
+		if (icol1 == icol2) {
+			covar = var1;
+		}
+		if (p_covar) {
+			*p_covar = covar;
+		}
 	}
 }
 
@@ -468,7 +434,7 @@ void NUMcovarianceFromColumnCentredMatrix (double **x, long nrows, long ncols, l
 	}
 	for (long i = 1; i <= ncols; i++) {
 		for (long j = i; j <= ncols; j++) {
-			double sum = 0;
+			double sum = 0.0;
 			for (long k = 1; k <= nrows; k++) {
 				sum += x[k][i] * x[k][j];
 			}
@@ -488,18 +454,18 @@ double NUMmultivariateKurtosis (double **x, long nrows, long ncols, int method)
 	NUMcentreColumns (x, 1, nrows, 1, ncols, mean.peek());
 	NUMcovarianceFromColumnCentredMatrix (x, nrows, ncols, 1, covar.peek());
 	if (method == 1) { // Schott (2001, page 33)
-		kurt = 0;
+		kurt = 0.0;
 		for (long l = 1; l <= ncols; l++) {
-			double zl = 0, wl, sll2 = covar[l][l] * covar[l][l];
+			double zl = 0.0, wl, sll2 = covar[l][l] * covar[l][l];
 			for (long j = 1; j <= nrows; j++) {
 				double d = x[j][l] - mean[l], d2 = d * d;
 				zl += d2 * d2;
 			}
-			zl = (zl - 6 * sll2) / (nrows - 4);
+			zl = (zl - 6.0 * sll2) / (nrows - 4);
 			wl = (sll2 - zl / nrows) * nrows / (nrows - 1);
 			kurt += zl / wl;
 		}
-		kurt = kurt / (3 * ncols) - 1;
+		kurt = kurt / (3 * ncols) - 1.0;
 	}
 	return kurt;
 }
@@ -539,14 +505,14 @@ void eigenSort (double d[], double **v, long n, int sort) {
 }
 
 int NUMstrcmp (const char *s1, const char *s2) {
-	if (s1 == NULL || s1[0] == '\0') {
-		if (s2 != NULL && s2[0] != '\0') {
+	if (! s1 || s1[0] == '\0') {
+		if (s2 && s2[0] != '\0') {
 			return -1;
 		} else {
 			return 0;
 		}
 	} else {
-		if (s2 == NULL) {
+		if (! s2) {
 			return +1;
 		} else {
 			return strcmp (s1, s2);
@@ -629,41 +595,45 @@ void NUMmonotoneRegression (const double x[], long n, double xs[]) {
 }
 
 double NUMvector_getNorm1 (const double v[], long n) {
-	double norm = 0; long i;
-	for (i = 1; i <= n; i++) {
+	double norm = 0;
+	for (long i = 1; i <= n; i++) {
 		norm += fabs (v[i]);
 	}
 	return norm;
 }
 
 double NUMvector_getNorm2 (const double v[], long n) {
-	double norm = 0; long i;
-	for (i = 1; i <= n; i++) {
+	double norm = 0.0;
+	for (long i = 1; i <= n; i++) {
 		norm += v[i] * v[i];
 	}
 	return sqrt (norm);
 }
 
 double NUMvector_normalize1 (double v[], long n) {
-	double norm = 0; long i;
-	for (i = 1; i <= n; i++) {
+	double norm = 0.0;
+	for (long i = 1; i <= n; i++) {
 		norm += fabs (v[i]);
 	}
-	if (norm > 0) for (i = 1; i <= n; i++) {
+	if (norm > 0.0) {
+		for (long i = 1; i <= n; i++) {
 			v[i] /= norm;
 		}
+	}
 	return norm;
 }
 
 double NUMvector_normalize2 (double v[], long n) {
-	double norm = 0; long i;
-	for (i = 1; i <= n; i++) {
+	double norm = 0;
+	for (long i = 1; i <= n; i++) {
 		norm += v[i] * v[i];
 	}
 	norm = sqrt (norm);
-	if (norm > 0) for (i = 1; i <= n; i++) {
+	if (norm > 0) {
+		for (long i = 1; i <= n; i++) {
 			v[i] /= norm;
 		}
+	}
 	return norm;
 }
 
@@ -686,7 +656,7 @@ void NUMcholeskySolve (double **a, long n, double d[], double b[], double x[]) {
 	}
 }
 
-void NUMdeterminant_cholesky (double **a, long n, double *lnd) {
+void NUMdeterminant_cholesky (double **a, long n, double *p_lnd) {
 	// Save the diagonal
 	autoNUMvector<double> d (1, n);
 	for (long i = 1; i <= n; i++) {
@@ -703,12 +673,13 @@ void NUMdeterminant_cholesky (double **a, long n, double *lnd) {
 	}
 
 	// Determinant from diagonal, restore diagonal
-	*lnd = 0;
+
+	double lnd = 0.0;
 	for (long i = 1; i <= n; i++) {
-		*lnd += log (a[i][i]);
+		lnd += log (a[i][i]);
 		a[i][i] = d[i];
 	}
-	*lnd *= 2; // because A = L . L'
+	lnd *= 2.0; // because A = L . L' TODO
 
 	// Restore lower from upper */
 
@@ -717,6 +688,9 @@ void NUMdeterminant_cholesky (double **a, long n, double *lnd) {
 			a[j][i] = a[i][j];
 		}
 	}
+	if (p_lnd) {
+		*p_lnd = lnd;
+	}
 }
 
 void NUMlowerCholeskyInverse (double **a, long n, double *lnd) {
@@ -734,12 +708,12 @@ void NUMlowerCholeskyInverse (double **a, long n, double *lnd) {
 
 	// Determinant from diagonal, diagonal is now sqrt (a[i][i]) !
 
-	if (lnd != NULL) {
-		*lnd = 0;
+	if (lnd) {
+		*lnd = 0.0;
 		for (long i = 1; i <= n; i++) {
 			*lnd += log (a[i][i]);
 		}
-		*lnd *= 2; /* because A = L . L' */
+		*lnd *= 2.0; /* because A = L . L' */
 	}
 
 	// Get the inverse */
@@ -773,7 +747,7 @@ double NUMmahalanobisDistance_chi (double **linv, double *v, double *m, long nr,
 		}
 	} else { // nxn matrix
 		for (long i = n; i > 0; i--) {
-			double t = 0;
+			double t = 0.0;
 			for (long j = 1; j <= i; j++) {
 				t += linv[i][j] * (v[j] - m[j]);
 			}
@@ -784,7 +758,7 @@ double NUMmahalanobisDistance_chi (double **linv, double *v, double *m, long nr,
 }
 
 double NUMtrace (double **a, long n) {
-	double trace = 0;
+	double trace = 0.0;
 	for (long i = 1; i <= n; i++) {
 		trace += a[i][i];
 	}
@@ -792,7 +766,7 @@ double NUMtrace (double **a, long n) {
 }
 
 double NUMtrace2 (double **a1, double **a2, long n) {
-	double trace = 0;
+	double trace = 0.0;
 	for (long i = 1; i <= n; i++) {
 		for (long k = 1; k <= n; k++) {
 			trace += a1[i][k] * a2[k][i];
@@ -803,7 +777,7 @@ double NUMtrace2 (double **a1, double **a2, long n) {
 
 void NUMeigensystem (double **a, long n, double **evec, double eval[]) {
 	autoEigen me = Thing_new (Eigen);
-	Eigen_initFromSymmetricMatrix (me.peek(), a, n);
+	Eigen_initFromSymmetricMatrix (me.get(), a, n);
 	if (evec) {
 		NUMmatrix_copyElements (my eigenvectors, evec, 1, n, 1, n);
 	}
@@ -812,24 +786,24 @@ void NUMeigensystem (double **a, long n, double **evec, double eval[]) {
 	}
 }
 
-void NUMdominantEigenvector (double **mns, long n, double *q, double *lambda, double tolerance) {
+void NUMdominantEigenvector (double **mns, long n, double *q, double *p_lambda, double tolerance) {
 	autoNUMvector<double> z (1, n);
 
-	double val, cval = 0;
+	double lambda0, lambda = 0.0;
 	for (long k = 1; k <= n; k++) {
 		for (long l = 1; l <= n; l++) {
-			cval += q[k] * mns[k][l] * q[l];
+			lambda += q[k] * mns[k][l] * q[l];
 		}
 	}
-	if (cval == 0) {
+	if (lambda == 0.0) {
 		Melder_throw (U"Zero matrices ??");
 	}
 
 	long iter = 0;
 	do {
-		double znorm2 = 0;
+		double znorm2 = 0.0;
 		for (long l = 1; l <= n; l++) {
-			z[l] = 0;
+			z[l] = 0.0;
 			for (long k = 1; k <= n; k++) {
 				z[l] += mns[l][k] * q[k];
 			}
@@ -844,16 +818,19 @@ void NUMdominantEigenvector (double **mns, long n, double *q, double *lambda, do
 			q[k] = z[k] / znorm2;
 		}
 
-		val = cval; cval = 0;
-
+		lambda0 = lambda; 
+		
+		lambda = 0.0;
 		for (long k = 1; k <= n; k++) {
 			for (long l = 1; l <= n; l++) {
-				cval += q[k] * mns[k][l] * q[l];
+				lambda += q[k] * mns[k][l] * q[l];
 			}
 		}
 
-	} while (fabs (cval - val) > tolerance || ++iter < 30);
-	*lambda = cval;
+	} while (fabs (lambda - lambda0) > tolerance || ++iter < 30);
+	if (p_lambda) {
+		*p_lambda = lambda;
+	}
 }
 
 void NUMprincipalComponents (double **a, long n, long nComponents, double **pc) {
@@ -861,7 +838,7 @@ void NUMprincipalComponents (double **a, long n, long nComponents, double **pc)
 	NUMeigensystem (a, n, evec.peek(), NULL);
 	for (long i = 1; i <= n; i++) {
 		for (long j = 1; j <= nComponents; j++) {
-			double s = 0;
+			double s = 0.0;
 			for (long k = 1; k <= n; k++) {
 				s += a[k][i] * evec[k][j]; /* times sqrt(eigenvalue) ?? */
 			}
@@ -870,6 +847,56 @@ void NUMprincipalComponents (double **a, long n, long nComponents, double **pc)
 	}
 }
 
+void NUMdmatrix_projectRowsOnEigenspace (double **data, long numberOfRows, long from_col, double **eigenvectors, long numberOfEigenvectors, long dimension, double **projection, long to_col) {
+	/* Input:
+	 * 	data[numberOfRows, from_col - 1 + my dimension] 
+	 * 		contains the 'numberOfRows' vectors to be projected on the eigenspace. 
+	 *  eigenvectors [numberOfEigenvectors][dimension] 
+	 * 		the eigenvectors stored as rows
+	 * Input/Output
+	 * 	projection [numberOfRows, to_colbegin - 1 + numberOfEigenvectors] 
+	 * 		the projected vectors from 'data'
+	 * 
+	 * Project (part of) the vectors in matrix 'data' along the 'numberOfEigenvectors' eigenvectors into the matrix 'projection'.
+	 */
+	from_col = from_col <= 0 ? 1 : from_col;
+	to_col = to_col <= 0 ? 1 : to_col;
+
+	for (long irow = 1; irow <= numberOfRows; irow ++) {
+		for (long icol = 1; icol <= numberOfEigenvectors; icol ++) {
+			double r = 0.0;
+			for (long k = 1; k <= dimension; k ++) {
+				r += eigenvectors  [icol] [k] * data [irow] [from_col + k - 1];
+			}
+			projection [irow] [to_col + icol - 1] = r;
+		}
+	}
+}
+
+void NUMdmatrix_projectColumnsOnEigenspace (double **data, long numberOfColumns, double **eigenvectors, long numberOfEigenvectors, long dimension, double **projection) {
+	/* Input:
+	 * 	data[dimension, numberOfColumns] 
+	 * 		contains the column vectors to be projected on the eigenspace. 
+	 *  eigenvectors [numberOfEigenvectors][dimension] 
+	 * 		the eigenvectors stored as rows
+	 * Input/Output
+	 * 	projection [numberOfEigenvectors, numberOfColumns] 
+	 * 		the projected vectors from 'data'
+	 * 
+	 * Project the columnvectors in matrix 'data' along the 'numberOfEigenvectors' eigenvectors into the matrix 'projection'.
+	 */
+
+	for (long icol = 1; icol <= numberOfColumns; icol++) {
+		for (long irow = 1; irow <= numberOfEigenvectors; irow++) {
+			double r = 0.0;
+			for (long k = 1; k <= dimension; k ++) {
+				r += eigenvectors  [irow] [k] * data [k] [icol];
+			}
+			projection [irow][icol] = r;
+		}
+	}
+}
+
 void NUMdmatrix_into_principalComponents (double **m, long nrows, long ncols, long numberOfComponents, double **pc) {
 	Melder_assert (numberOfComponents > 0 && numberOfComponents <= ncols);
 	autoNUMmatrix<double> mc (NUMmatrix_copy (m, 1, nrows, 1, ncols), 1, 1);
@@ -878,7 +905,7 @@ void NUMdmatrix_into_principalComponents (double **m, long nrows, long ncols, lo
 	autoSVD svd = SVD_create_d (mc.peek(), nrows, ncols);
 	for (long i = 1; i <= nrows; i++) {
 		for (long j = 1; j <= numberOfComponents; j++) {
-			pc[i][j] = 0;
+			pc[i][j] = 0.0;
 			for (long k = 1; k <= ncols; k++) {
 				pc[i][j] += svd -> v[k][j] * m[i][k];
 			}
@@ -889,12 +916,12 @@ void NUMdmatrix_into_principalComponents (double **m, long nrows, long ncols, lo
 void NUMpseudoInverse (double **y, long nr, long nc, double **yinv, double tolerance) {
 	autoSVD me = SVD_create_d (y, nr, nc);
 
-	(void) SVD_zeroSmallSingularValues (me.peek(), tolerance);
+	(void) SVD_zeroSmallSingularValues (me.get(), tolerance);
 	for (long i = 1; i <= nc; i++) {
 		for (long j = 1; j <= nr; j++) {
-			double s = 0;
+			double s = 0.0;
 			for (long k = 1; k <= nc; k++) {
-				if (my d[k] != 0) {
+				if (my d[k] != 0.0) {
 					s += my v[i][k] * my u[j][k] / my d[k];
 				}
 			}
@@ -915,8 +942,8 @@ void NUMsolveEquation (double **a, long nr, long nc, double *b, double tolerance
 	}
 
 	autoSVD me = SVD_create_d (a, nr, nc);
-	SVD_zeroSmallSingularValues (me.peek(), tol);
-	SVD_solve (me.peek(), b, result);
+	SVD_zeroSmallSingularValues (me.get(), tol);
+	SVD_solve (me.get(), b, result);
 }
 
 
@@ -931,14 +958,14 @@ void NUMsolveEquations (double **a, long nr, long nc, double **b, long ncb, doub
 	autoNUMvector<double> bt (1, nr + nc);
 	double *xt = & bt[nr];
 
-	SVD_zeroSmallSingularValues (me.peek(), tol);
+	SVD_zeroSmallSingularValues (me.get(), tol);
 
 	for (long k = 1; k <= ncb; k++) {
 		for (long j = 1; j <= nr; j++) {
 			bt[j] = b[j][k];
 		}
 
-		SVD_solve (me.peek(), bt.peek(), xt);
+		SVD_solve (me.get(), bt.peek(), xt);
 
 		for (long j = 1; j <= nc; j++) {
 			x[j][k] = xt[j];
@@ -948,15 +975,14 @@ void NUMsolveEquations (double **a, long nr, long nc, double **b, long ncb, doub
 
 
 void NUMsolveNonNegativeLeastSquaresRegression (double **m, long nr, long nc, double *d, double tol, long itermax, double *b) {
-	double difsq, difsqp = 0;
+	double difsq, difsqp = 0.0;
 
 	for (long iter = 1; iter <= itermax; iter++) {
-		/*
-			Fix all weights except b[j]
-		*/
+
+		// Fix all weights except b[j]
 
 		for (long j = 1; j <= nc; j++) {
-			double mjr = 0, mjmj = 0;
+			double mjr = 0.0, mjmj = 0.0;
 			for (long i = 1; i <= nr; i++) {
 				double ri = d[i], mij = m[i][j];
 				for (long l = 1; l <= nc; l++) {
@@ -968,16 +994,14 @@ void NUMsolveNonNegativeLeastSquaresRegression (double **m, long nr, long nc, do
 				mjmj += mij * mij;
 			}
 			b[j] = mjr / mjmj;
-			if (b[j] < 0) {
-				b[j] = 0;
+			if (b[j] < 0.0) {
+				b[j] = 0.0;
 			}
 		}
 
-		/*
-			Calculate t(b) and compare with previous result.
-		*/
+		// Calculate t(b) and compare with previous result.
 
-		difsq = 0;
+		difsq = 0.0;
 		for (long i = 1; i <= nr; i++) {
 			double dmb = d[i];
 			for (long j = 1; j <= nc; j++) {
@@ -1003,7 +1027,7 @@ struct nr_struct {
 
 static void nr_func (double x, double *f, double *df, void *data) {
 	struct nr_struct *me = (struct nr_struct *) data;
-	*f = *df = 0;
+	*f = *df = 0.0;
 	for (long i = 1; i <= 3; i++) {
 		double t1 = (my delta[i] - x);
 		double t2 = my y[i] / t1;
@@ -1049,19 +1073,19 @@ void NUMsolveConstrainedLSQuadraticRegression (double **o, const double d[], lon
 	if (info != 0) {
 		Melder_throw (U"dpotf2 fails.");
 	}
-	ftinv[1][2] = ftinv[1][3] = ftinv[2][3] = 0;
+	ftinv[1][2] = ftinv[1][3] = ftinv[2][3] = 0.0;
 
 	// Construct G and its eigen-decomposition (eq. (4,5))
 	// Sort eigenvalues (& eigenvectors) ascending.
 
-	b[3][1] = b[1][3] = -0.5; b[2][2] = 1;
+	b[3][1] = b[1][3] = -0.5; b[2][2] = 1.0;
 
 	// G = F^-1 B (F')^-1 (eq. 4)
 
 	for (long i = 1; i <= 3; i++) {
 		for (long j = 1; j <= 3; j++) {
 			for (long k = 1; k <= 3; k++) {
-				if (ftinv[k][i] != 0) {
+				if (ftinv[k][i] != 0.0) {
 					for (long l = 1; l <= 3; l++) {
 						g[i][j] += ftinv[k][i] * b[k][l] * ftinv[l][j];
 					}
@@ -1081,7 +1105,7 @@ void NUMsolveConstrainedLSQuadraticRegression (double **o, const double d[], lon
 
 	for (long i = 1; i <= 3; i++) {
 		for (long j = 1; j <= 3; j++) {
-			if (ftinv[i][j] != 0) {
+			if (ftinv[i][j] != 0.0) {
 				for (long k = 1; k <= 3; k++) {
 					ftinvp[i][k] += ftinv[i][j] * p[3 + 1 - j][k]; /* is sorted desc. */
 				}
@@ -1124,8 +1148,7 @@ void NUMsolveConstrainedLSQuadraticRegression (double **o, const double d[], lon
 		t1 = y[1] / (delta[1] - delta[2]);
 		t3 = y[3] / (delta[3] - delta[2]);
 		w[1] = t1 * delta[1];
-		if ( (delta[2] < delta[3] &&
-		        (t2 = (t1 * t1 * delta[1] + t3 * t3 * delta[3])) < eps)) {
+		if ( (delta[2] < delta[3] && (t2 = (t1 * t1 * delta[1] + t3 * t3 * delta[3])) < eps)) {
 			w[2] = sqrt (- delta[2] * t2); /* +- */
 			w[3] = t3 * delta[3];
 			NUMsolveEquation (ptfinv.peek(), 3, 3, w.peek(), 1e-6, chi.peek());
@@ -1133,8 +1156,7 @@ void NUMsolveConstrainedLSQuadraticRegression (double **o, const double d[], lon
 			if (fabs (chi[3] / chi[1]) < eps) {
 				NUMsolveEquation (ptfinvc.peek(), 3, 3, w.peek(), 1e-6, chi.peek());
 			}
-		} else if ( ( (delta[2] < delta[3] + eps) || (delta[2] > delta[3] - eps))
-		            && fabs (y[3]) < eps) {
+		} else if (((delta[2] < delta[3] + eps) || (delta[2] > delta[3] - eps)) && fabs (y[3]) < eps) {
 			// choose one value for w[2] from an infinite number
 
 			w[2] = w[1];
@@ -1189,13 +1211,13 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 	autoNUMvector<long> indx (1, m);
 
 	for (long j = 1; j <= m; j++) {
-		t[j] = 0;
+		t[j] = 0.0;
 	}
 
 	autoSVD svd = SVD_create_d (f, n, m);
 
-	if (alpha == 0) {
-		SVD_solve (svd.peek(), phi, t);    // standard least squares
+	if (alpha == 0.0) {
+		SVD_solve (svd.get(), phi, t);    // standard least squares
 	}
 
 
@@ -1240,7 +1262,7 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 	me.x = x.peek();
 	me.c = c.peek();
 
-	double xqsq = 0;
+	double xqsq = 0.0;
 	for (long j = m - q + 1; j <= m; j++) {
 		xqsq += x[j] * x[j];
 	}
@@ -1251,7 +1273,7 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 		r = m - q;
 		me.m = r;
 		nr2_func (c[m], &fm, &df, & me);
-		if (fm >= 0) { /* step 3.b1 */
+		if (fm >= 0.0) { /* step 3.b1 */
 			x[r + 1] = sqrt (fm);
 			for (long j = 1; j <= r; j++) {
 				x[j] /= c[j] - c[m];
@@ -1263,16 +1285,16 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 			}
 			return;
 		}
-		/* else continue with r = m - q */
+		// else continue with r = m - q
 	}
 
 	// step 3a & 3b2, determine interval lower bound for Newton-Raphson root finder
 
-	double xCx = 0;
+	double xCx = 0.0;
 	for (long j = 1; j <= r; j++) {
 		xCx += x[j] * x[j] / c[j];
 	}
-	double b0, bmin = delta > 0 ? - xCx / delta : -2 * sqrt (alpha * xCx);
+	double b0, bmin = delta > 0.0 ? - xCx / delta : -2.0 * sqrt (alpha * xCx);
 	double eps = (c[m] - bmin) * tol;
 
 	// find the root of d(psi(b)/db in interval (bmin, c[m])
@@ -1286,8 +1308,8 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 	}
 }
 
-void NUMProcrustes (double **x, double **y, long nPoints, long nDimensions, double **t, double *v, double *s) {
-	int orthogonal = v == 0 || s == 0; /* else similarity transform */
+void NUMProcrustes (double **x, double **y, long nPoints, long nDimensions, double **t, double v[], double *s) {
+	bool orthogonal = ! v || ! s; // else similarity transform
 
 	autoNUMmatrix<double> c (1, nDimensions, 1, nDimensions);
 	autoNUMmatrix<double> yc (1, nPoints, 1, nDimensions);
@@ -1315,12 +1337,12 @@ void NUMProcrustes (double **x, double **y, long nPoints, long nDimensions, doub
 	// 2. Decompose C by SVD:  C = PDQ' (SVD attribute is Q instead of Q'!)
 
 	autoSVD svd = SVD_create_d (c.peek(), nDimensions, nDimensions);
-	double trace = 0;
+	double trace = 0.0;
 	for (long i = 1; i <= nDimensions; i++) {
 		trace += svd -> d[i];
 	}
 
-	if (trace == 0) {
+	if (trace == 0.0) {
 		Melder_throw (U"NUMProcrustes: degenerate configuration(s).");
 	}
 
@@ -1328,7 +1350,7 @@ void NUMProcrustes (double **x, double **y, long nPoints, long nDimensions, doub
 
 	for (long i = 1; i <= nDimensions; i++) {
 		for (long j = 1; j <= nDimensions; j++) {
-			t[i][j] = 0;
+			t[i][j] = 0.0;
 			for (long k = 1; k <= nDimensions; k++) {
 				t[i][j] += svd -> v[i][k] * svd -> u[j][k];
 			}
@@ -1357,13 +1379,13 @@ void NUMProcrustes (double **x, double **y, long nPoints, long nDimensions, doub
 
 		// tr X'J YT == tr xc' yt
 
-		double traceXtJYT = 0;
+		double traceXtJYT = 0.0;
 		for (long i = 1; i <= nDimensions; i++) {
 			for (long j = 1; j <= nPoints; j++) {
 				traceXtJYT += xc[j][i] * yt[j][i];
 			}
 		}
-		double traceYtJY = 0;
+		double traceYtJY = 0.0;
 		for (long i = 1; i <= nDimensions; i++) {
 			for (long j = 1; j <= nPoints; j++) {
 				traceYtJY += y[j][i] * yc[j][i];
@@ -1396,7 +1418,7 @@ void NUMmspline (double knot[], long nKnots, long order, long i, double x, doubl
 	// First and last 'order' knots are equal, i.e.,
 	// knot[1] = ... = knot[order] && knot[nKnots-order+1] = ... knot[nKnots].
 
-	*y = 0;
+	*y = 0.0;
 	if (i > nSplines || order < 1) {
 		Melder_throw (U"Combination of order and index not correct.");
 	}
@@ -1425,7 +1447,7 @@ void NUMmspline (double knot[], long nKnots, long order, long i, double x, doubl
 		for (long j = i; j <= i + order - k; j++) {
 			double kj = knot[j], kjpk = knot[j + k];
 			if (kjpk > kj) {
-				m[j] = k * ( (x - kj) * m[j] + (kjpk - x) * m[j + 1]) / ( (k - 1) * (kjpk - kj));
+				m[j] = k * ((x - kj) * m[j] + (kjpk - x) * m[j + 1]) / ((k - 1) * (kjpk - kj));
 			}
 		}
 	}
@@ -1435,7 +1457,7 @@ void NUMmspline (double knot[], long nKnots, long order, long i, double x, doubl
 void NUMispline (double aknot[], long nKnots, long order, long i, double x, double *y) {
 	long j, orderp1 = order + 1;
 
-	*y = 0;
+	*y = 0.0;
 
 	for (j = orderp1; j <= nKnots - order; j++) {
 		if (x < aknot[j]) {
@@ -1447,7 +1469,7 @@ void NUMispline (double aknot[], long nKnots, long order, long i, double x, doub
 		return;
 	}
 	if (j > i + order || (j == nKnots - order && x == aknot[j])) {
-		*y = 1; return;
+		*y = 1.0; return;
 	}
 
 	// Equation 5 in Ramsay's article contains some errors!!!
@@ -1464,9 +1486,9 @@ void NUMispline (double aknot[], long nKnots, long order, long i, double x, doub
 }
 
 double NUMwilksLambda (double *lambda, long from, long to) {
-	double result = 1;
+	double result = 1.0;
 	for (long i = from; i <= to; i++) {
-		result /= (1 + lambda[i]);
+		result /= (1.0 + lambda[i]);
 	}
 	return result;
 }
@@ -1534,7 +1556,7 @@ void NUMnrbis (void (*f) (double x, double *fx, double *dfx, void *closure), dou
 				return;
 			}
 		}
-		tol = NUMfpp -> eps	* (*root == 0 ? 1 : fabs (*root));
+		tol = NUMfpp -> eps	* (*root == 0.0 ? 1.0 : fabs (*root));
 		if (fabs (dx) < tol) {
 			return;
 		}
@@ -1572,7 +1594,7 @@ double NUMridders (double (*f) (double x, void *closure), double x1, double x2,
 	if (f2 == NUMundefined) {
 		return NUMundefined;
 	}
-	if ( (f1 < 0 && f2 < 0) || (f1 > 0 && f2 > 0)) {
+	if ( (f1 < 0.0 && f2 < 0.0) || (f1 > 0.0 && f2 > 0.0)) {
 		Melder_warning (U"NUMridders: root must be bracketed.");
 		return NUMundefined;
 	}
@@ -1587,10 +1609,7 @@ double NUMridders (double (*f) (double x, void *closure), double x1, double x2,
 			return NUMundefined;
 		}
 
-		/*
-			New guess:
-			x4 = x3 + (x3 - x1) * sign(f1 - f2) * f3 / sqrt(f3^2 - f1*f2)
-		*/
+		// New guess: x4 = x3 + (x3 - x1) * sign(f1 - f2) * f3 / sqrt(f3^2 - f1*f2)
 
 		d = f3 * f3 - f1 * f2;
 		if (d < 0.0) {
@@ -1599,59 +1618,59 @@ double NUMridders (double (*f) (double x, void *closure), double x1, double x2,
 		}
 
 		if (d == 0.0) {
-			/* pb test added because f1 f2 f3 may be 1e-170 or so */
+			// pb test added because f1 f2 f3 may be 1e-170 or so
 			tol = NUMfpp -> eps * fabs (x3);
 			if (iter > 1 && fabs (x3 - root) < tol) {
 				return root;
 			}
 			root = x3;
-			/*
-			 * Perform bisection.
-			 */
-			if (f1 > 0.0) {
-				/* falling curve: f1 > 0, f2 < 0 */
+
+			// Perform bisection.
+
+			if (f1 > 0.0) { 
+				// falling curve: f1 > 0, f2 < 0 
 				if (f3 > 0.0) {
-					x1 = x3; f1 = f3;   /* retain invariant: f1 > 0, f2 < 0 */
+					x1 = x3; f1 = f3;   // retain invariant: f1 > 0, f2 < 0
 				} else {
-					/* f3 < 0.0 */
-					x2 = x3; f2 = f3;   /* retain invariant: f1 > 0, f2 < 0 */
+					// f3 <= 0.0
+					x2 = x3; f2 = f3;   // retain invariant: f1 > 0, f2 < 0
 				}
 			} else {
-				/* rising curve: f1 < 0, f2 > 0 */
+				// rising curve: f1 < 0, f2 > 0 
 				if (f3 > 0.0) {
-					x2 = x3; f2 = f3;   /* retain invariant: f1 < 0, f2 > 0 */
+					x2 = x3; f2 = f3;   // retain invariant: f1 < 0, f2 > 0
 				} else {
-					/* f3 < 0.0 */
-					x1 = x3; f1 = f3;   /* retain invariant: f1 < 0, f2 > 0 */
+					// f3 < 0.0
+					x1 = x3; f1 = f3;   // retain invariant: f1 < 0, f2 > 0
 				}
 			}
 		} else {
 			d = sqrt (d);
 			if (isnan (d)) {
-				/* pb: square root of denormalized small number fails on some computers */
+				// pb: square root of denormalized small number fails on some computers
 				tol = NUMfpp -> eps * fabs (x3);
 				if (iter > 1 && fabs (x3 - root) < tol) {
 					return root;
 				}
 				root = x3;
-				/*
-				 * Perform bisection.
-				 */
+
+				// Perform bisection.
+
 				if (f1 > 0.0) {
-					/* falling curve: f1 > 0, f2 < 0 */
+					// falling curve: f1 > 0, f2 < 0
 					if (f3 > 0.0) {
-						x1 = x3; f1 = f3;   /* retain invariant: f1 > 0, f2 < 0 */
+						x1 = x3; f1 = f3;   // retain invariant: f1 > 0, f2 < 0
 					} else {
-						/* f3 < 0.0 */
-						x2 = x3; f2 = f3;   /* retain invariant: f1 > 0, f2 < 0 */
+						// f3 <= 0.0
+						x2 = x3; f2 = f3;   // retain invariant: f1 > 0, f2 < 0
 					}
 				} else {
-					/* rising curve: f1 < 0, f2 > 0 */
+					// rising curve: f1 < 0, f2 > 0
 					if (f3 > 0.0) {
-						x2 = x3; f2 = f3;   /* retain invariant: f1 < 0, f2 > 0 */
+						x2 = x3; f2 = f3;   // retain invariant: f1 < 0, f2 > 0
 					} else {
-						/* f3 < 0.0 */
-						x1 = x3; f1 = f3;   /* retain invariant: f1 < 0, f2 > 0 */
+						// f3 < 0.0
+						x1 = x3; f1 = f3;   // retain invariant: f1 < 0, f2 > 0 */
 					}
 				}
 			} else {
@@ -1669,7 +1688,7 @@ double NUMridders (double (*f) (double x, void *closure), double x1, double x2,
 				if (f4 == NUMundefined) {
 					return NUMundefined;
 				}
-				if ( (f1 > f2) == (d > 0.0) /* pb: instead of x3 < x4 */) {
+				if ((f1 > f2) == (d > 0.0) /* pb: instead of x3 < x4 */) {
 					if (SIGN (f3, f4) != f3) {
 						x1 = x3; f1 = f3;
 						x2 = x4; f2 = f4;
@@ -1708,7 +1727,7 @@ double NUMlogNormalQ (double x, double zeta, double sigma) {
 }
 
 double NUMstudentP (double t, double df) {
-	if (df < 1) {
+	if (df < 1.0) {
 		return NUMundefined;
 	}
 	double ib = NUMincompleteBeta (0.5 * df, 0.5, df / (df + t * t));
@@ -1716,7 +1735,7 @@ double NUMstudentP (double t, double df) {
 		return NUMundefined;
 	}
 	ib *= 0.5;
-	return t < 0 ? ib : 1 - ib;
+	return t < 0.0 ? ib : 1.0 - ib;
 }
 
 double NUMstudentQ (double t, double df) {
@@ -1728,22 +1747,22 @@ double NUMstudentQ (double t, double df) {
 		return NUMundefined;
 	}
 	ib *= 0.5;
-	return t > 0 ? ib : 1 - ib;
+	return t > 0.0 ? ib : 1.0 - ib;
 }
 
 double NUMfisherP (double f, double df1, double df2) {
-	if (f < 0 || df1 < 1 || df2 < 1) {
+	if (f < 0.0 || df1 < 1.0 || df2 < 1.0) {
 		return NUMundefined;
 	}
 	double ib = NUMincompleteBeta (0.5 * df2, 0.5 * df1, df2 / (df2 + f * df1));
 	if (ib == NUMundefined) {
 		return NUMundefined;
 	}
-	return 1 - ib;
+	return 1.0 - ib;
 }
 
 double NUMfisherQ (double f, double df1, double df2) {
-	if (f < 0 || df1 < 1 || df2 < 1) {
+	if (f < 0.0 || df1 < 1.0 || df2 < 1.0) {
 		return NUMundefined;
 	}
 	if (Melder_debug == 28) {
@@ -1759,11 +1778,11 @@ double NUMfisherQ (double f, double df1, double df2) {
 
 double NUMinvGaussQ (double p) {
 	double pc = p;
-	if (p <= 0 || p >= 1.0) {
+	if (p <= 0.0 || p >= 1.0) {
 		return NUMundefined;
 	}
 	if (p > 0.5) {
-		pc = 1 - p;
+		pc = 1.0 - p;
 	}
 	double t = sqrt (- 2.0 * log (pc));
 	t -= (2.515517 + (0.802853 + 0.010328 * t) * t) /
@@ -1779,15 +1798,15 @@ static double studentQ_func (double x, void *voidParams) {
 
 double NUMinvStudentQ (double p, double df) {
 	struct pdf1_struct params;
-	double pc = p > 0.5 ? 1 - p : p, xmin, xmax = 1, x;
+	double pc = p > 0.5 ? 1.0 - p : p, xmin, xmax = 1.0, x;
 
-	if (p < 0 || p >= 1) {
+	if (p < 0.0 || p >= 1.0) {
 		return NUMundefined;
 	}
 
-	/*
-		Bracket the function f(x) = NUMstudentQ (x, df) - p.
-	*/
+
+	// Bracket the function f(x) = NUMstudentQ (x, df) - p.
+
 	for (;;) {
 		double q = NUMstudentQ (xmax, df);
 		if (q == NUMundefined) {
@@ -1796,14 +1815,13 @@ double NUMinvStudentQ (double p, double df) {
 		if (q < pc) {
 			break;
 		}
-		xmax *= 2;
+		xmax *= 2.0;
 	}
 
-	xmin = xmax > 1 ? xmax / 2 : 0;
+	xmin = xmax > 1.0 ? xmax / 2.0 : 0.0;
+
+	// Find zero of f(x) with Ridders' method.
 
-	/*
-		Find zero of f(x) with Ridders' method.
-	*/
 	params. df = df;
 	params. p = pc;
 	x = NUMridders (studentQ_func, xmin, xmax, & params);
@@ -1824,13 +1842,12 @@ double NUMinvChiSquareQ (double p, double df) {
 	struct pdf1_struct params;
 	double xmin, xmax = 1;
 
-	if (p < 0 || p >= 1) {
+	if (p < 0.0 || p >= 1.0) {
 		return NUMundefined;
 	}
 
-	/*
-		Bracket the function f(x) = NUMchiSquareQ (x, df) - p.
-	*/
+	// Bracket the function f(x) = NUMchiSquareQ (x, df) - p.
+
 	for (;;) {
 		double q = NUMchiSquareQ (xmax, df);
 		if (q == NUMundefined) {
@@ -1839,13 +1856,12 @@ double NUMinvChiSquareQ (double p, double df) {
 		if (q < p) {
 			break;
 		}
-		xmax *= 2;
+		xmax *= 2.0;
 	}
-	xmin = xmax > 1 ? xmax / 2 : 0;
+	xmin = xmax > 1.0 ? xmax / 2.0 : 0.0;
+
+	// Find zero of f(x) with Ridders' method.
 
-	/*
-		Find zero of f(x) with Ridders' method.
-	*/
 	params. df = df;
 	params. p = p;
 	return NUMridders (chiSquareQ_func, xmin, xmax, & params);
@@ -1858,7 +1874,7 @@ static double fisherQ_func (double x, void *voidParams) {
 }
 
 double NUMinvFisherQ (double p, double df1, double df2) {
-	if (p <= 0.0 || p > 1.0 || df1 < 1 || df2 < 1) {
+	if (p <= 0.0 || p > 1.0 || df1 < 1.0 || df2 < 1.0) {
 		return NUMundefined;
 	}
 	if (Melder_debug == 29) {
@@ -1904,12 +1920,12 @@ double NUMlnBeta (double a, double b) {
 
 double NUMnormalityTest_HenzeZirkler (double **data, long n, long p, double *beta, double *tnb, double *lnmu, double *lnvar) {
 	if (*beta <= 0) {
-		*beta = (1.0 / sqrt (2)) * pow ( (1.0 + 2 * p) / 4, 1.0 / (p + 4)) * pow (n, 1.0 / (p + 4));
+		*beta = (1.0 / sqrt (2.0)) * pow ((1.0 + 2 * p) / 4.0, 1.0 / (p + 4)) * pow (n, 1.0 / (p + 4));
 	}
 	double p2 = p / 2.0;
 	double beta2 = *beta * *beta, beta4 = beta2 * beta2, beta8 = beta4 * beta4;
-	double gamma = 1 + 2 * beta2, gamma2 = gamma * gamma, gamma4 = gamma2 * gamma2;
-	double delta = 1.0 + beta2 * (4 + 3 * beta2), delta2 = delta * delta;
+	double gamma = 1.0 + 2.0 * beta2, gamma2 = gamma * gamma, gamma4 = gamma2 * gamma2;
+	double delta = 1.0 + beta2 * (4.0 + 3.0 * beta2), delta2 = delta * delta;
 	double prob = NUMundefined;
 
 	*tnb = *lnmu = *lnvar = NUMundefined;
@@ -1928,8 +1944,8 @@ double NUMnormalityTest_HenzeZirkler (double **data, long n, long p, double *bet
 
 	try {
 		NUMlowerCholeskyInverse (covar.peek(), p, NULL);
-		double djk, djj, sumjk = 0, sumj = 0;
-		double b1 = beta2 / 2, b2 = b1 / (1.0 + beta2);
+		double djk, djj, sumjk = 0.0, sumj = 0.0;
+		double b1 = beta2 / 2.0, b2 = b1 / (1.0 + beta2);
 		/* Heinze & Wagner (1997), page 3
 			We use d[j][k] = ||Y[j]-Y[k]||^2 = (Y[j]-Y[k])'S^(-1)(Y[j]-Y[k])
 			So d[j][k]= d[k][j] and d[j][j] = 0
@@ -1937,22 +1953,22 @@ double NUMnormalityTest_HenzeZirkler (double **data, long n, long p, double *bet
 		for (long j = 1; j <= n; j++) {
 			for (long k = 1; k < j; k++) {
 				djk = NUMmahalanobisDistance_chi (covar.peek(), x[j], x[k], p, p);
-				sumjk += 2 * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
+				sumjk += 2.0 * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
 			}
-			sumjk += 1; // for k == j
+			sumjk += 1.0; // for k == j
 			djj = NUMmahalanobisDistance_chi (covar.peek(), x[j], zero.peek(), p, p);
 			sumj += exp (-b2 * djj);
 		}
 		*tnb = (1.0 / n) * sumjk - 2.0 * pow (1.0 + beta2, - p2) * sumj + n * pow (gamma, - p2); // n *
 	} catch (MelderError) {
 		Melder_clearError ();
-		*tnb = 4 * n;
+		*tnb = 4.0 * n;
 	}
 
-	double mu = 1.0 - pow (gamma, -p2) * (1.0 + p * beta2 / gamma + p * (p + 2) * beta4 / (2 * gamma2));
-	double var = 2.0 * pow (1 + 4 * beta2, -p2)
-	             + 2.0 * pow (gamma,  -p) * (1.0 + 2 * p * beta4 / gamma2  + 3 * p * (p + 2) * beta8 / (4 * gamma4))
-	             - 4.0 * pow (delta, -p2) * (1.0 + 3 * p * beta4 / (2 * delta) + p * (p + 2) * beta8 / (2 * delta2));
+	double mu = 1.0 - pow (gamma, -p2) * (1.0 + p * beta2 / gamma + p * (p + 2) * beta4 / (2.0 * gamma2));
+	double var = 2.0 * pow (1.0 + 4.0 * beta2, -p2)
+	     + 2.0 * pow (gamma,  -p) * (1.0 + 2.0 * p * beta4 / gamma2  + 3.0 * p * (p + 2) * beta8 / (4.0 * gamma4))
+	     - 4.0 * pow (delta, -p2) * (1.0 + 3.0 * p * beta4 / (2.0 * delta) + p * (p + 2) * beta8 / (2.0 * delta2));
 	double mu2 = mu * mu;
 	*lnmu = log (sqrt (mu2 * mu2 / (mu2 + var)));
 	*lnvar = sqrt (log ( (mu2 + var) / mu2));
@@ -1963,45 +1979,45 @@ double NUMnormalityTest_HenzeZirkler (double **data, long n, long p, double *bet
 /*************** Hz <--> other freq reps *********************/
 
 double NUMmelToHertz3 (double mel) {
-	if (mel < 0) {
+	if (mel < 0.0) {
 		return NUMundefined;
 	}
-	return mel < 1000 ? mel : 1000 * (exp (mel * log10 (2) / 1000) - 1);
+	return mel < 1000.0 ? mel : 1000.0 * (exp (mel * log10 (2.0) / 1000.0) - 1.0);
 }
 
 double NUMhertzToMel3 (double hz) {
-	if (hz < 0) {
+	if (hz < 0.0) {
 		return NUMundefined;
 	}
-	return hz < 1000 ? hz : 1000 * log10 (1 + hz / 1000) / log10 (2);
+	return hz < 1000.0 ? hz : 1000.0 * log10 (1.0 + hz / 1000.0) / log10 (2.0);
 }
 
 double NUMmelToHertz2 (double mel) {
-	if (mel < 0) {
+	if (mel < 0.0) {
 		return NUMundefined;
 	}
-	return 700 * (pow (10.0, mel / 2595.0) - 1);
+	return 700.0 * (pow (10.0, mel / 2595.0) - 1.0);
 }
 
 double NUMhertzToMel2 (double hz) {
-	if (hz < 0) {
+	if (hz < 0.0) {
 		return NUMundefined;
 	}
-	return 2595 * log10 (1 + hz / 700);
+	return 2595.0 * log10 (1.0 + hz / 700.0);
 }
 
 double NUMhertzToBark_traunmueller (double hz) {
-	if (hz < 0) {
+	if (hz < 0.0) {
 		return NUMundefined;
 	}
-	return 26.81 * hz / (1960 + hz) - 0.53;
+	return 26.81 * hz / (1960.0 + hz) - 0.53;
 }
 
 double NUMbarkToHertz_traunmueller (double bark) {
-	if (bark < 0 || bark > 26.28) {
+	if (bark < 0.0 || bark > 26.28) {
 		return NUMundefined;
 	}
-	return 1960 * (bark + 0.53) / (26.28 - bark);
+	return 1960.0 * (bark + 0.53) / (26.28 - bark);
 }
 
 double NUMbarkToHertz_schroeder (double bark) {
@@ -2009,23 +2025,22 @@ double NUMbarkToHertz_schroeder (double bark) {
 }
 
 double NUMbarkToHertz_zwickerterhardt (double hz) {
-	if (hz < 0) {
+	if (hz < 0.0) {
 		return NUMundefined;
 	}
-	return 13 * atan (0.00076 * hz) + 3.5 * atan (hz / 7500);
+	return 13.0 * atan (0.00076 * hz) + 3.5 * atan (hz / 7500.0);
 }
 
 double NUMhertzToBark_schroeder (double hz) {
-	double h650;
-	if (hz < 0) {
+	if (hz < 0.0) {
 		return NUMundefined;
 	}
-	h650 = hz / 650;
-	return 7.0 * log (h650 + sqrt (1 + h650 * h650));
+	double h650 = hz / 650.0;
+	return 7.0 * log (h650 + sqrt (1.0 + h650 * h650));
 }
 
 double NUMbarkToHertz2 (double bark) {
-	if (bark < 0) {
+	if (bark < 0.0) {
 		return NUMundefined;
 	}
 	return 650.0 * sinh (bark / 7.0);
@@ -2035,22 +2050,22 @@ double NUMhertzToBark2 (double hz) {
 	if (hz < 0) {
 		return NUMundefined;
 	}
-	double h650 = hz / 650;
-	return 7.0 * log (h650 + sqrt (1 + h650 * h650));
+	double h650 = hz / 650.0;
+	return 7.0 * log (h650 + sqrt (1.0 + h650 * h650));
 }
 
 double NUMbladonlindblomfilter_amplitude (double zc, double z) {
 	double dz = zc - z + 0.474;
-	return pow (10, 1.581 + 0.75 * dz - 1.75 * sqrt (1 + dz * dz));
+	return pow (10.0, 1.581 + 0.75 * dz - 1.75 * sqrt (1.0 + dz * dz));
 }
 
 double NUMsekeyhansonfilter_amplitude (double zc, double z) {
 	double dz = zc - z - 0.215;
-	return pow (10, 0.7 - 0.75 * dz - 1.75 * sqrt (0.196 + dz * dz));
+	return pow (10.0, 0.7 - 0.75 * dz - 1.75 * sqrt (0.196 + dz * dz));
 }
 
 double NUMtriangularfilter_amplitude (double fl, double fc, double fh, double f) {
-	double a = 0;
+	double a = 0.0;
 	if (f > fl && f < fh) {
 		a = f < fc ? (f - fl) / (fc - fl) : (fh - f) / (fh - fc);
 
@@ -2075,7 +2090,7 @@ for (i=1; i<=n+n+n; i++) work[i]=0;
 */
 int NUMburg (double x[], long n, double a[], int m, double *xms) {
 	for (long j = 1; j <= m; j++) {
-		a[j] = 0;
+		a[j] = 0.0;
 	}
 
 	autoNUMvector<double> b1 (1, n);
@@ -2090,7 +2105,7 @@ int NUMburg (double x[], long n, double a[], int m, double *xms) {
 	}
 
 	*xms = p / n;
-	if (*xms <= 0) {
+	if (*xms <= 0.0) {
 		return 0;    // warning empty
 	}
 
@@ -2111,7 +2126,7 @@ int NUMburg (double x[], long n, double a[], int m, double *xms) {
 			denum += b1[j] * b1[j] + b2[j] * b2[j];
 		}
 
-		if (denum <= 0) {
+		if (denum <= 0.0) {
 			return 0;    // warning ill-conditioned
 		}
 
@@ -2144,7 +2159,7 @@ int NUMburg (double x[], long n, double a[], int m, double *xms) {
 }
 
 void NUMdmatrix_to_dBs (double **m, long rb, long re, long cb, long ce, double ref, double factor, double floor) {
-	double ref_db, factor10 = factor * 10;
+	double ref_db, factor10 = factor * 10.0;
 	double max = m[rb][cb], min = max;
 
 	Melder_assert (ref > 0 && factor > 0 && rb <= re && cb <= ce);
@@ -2167,7 +2182,7 @@ void NUMdmatrix_to_dBs (double **m, long rb, long re, long cb, long ce, double r
 	for (long i = rb; i <= re; i++) {
 		for (long j = cb; j <= ce; j++) {
 			double mij = floor;
-			if (m[i][j] > 0) {
+			if (m[i][j] > 0.0) {
 				mij = factor10 * log10 (m[i][j]) - ref_db;
 				if (mij < floor) {
 					mij = floor;
@@ -2190,8 +2205,7 @@ double **NUMcosinesTable (long first, long last, long npoints) {
 	return m.transfer();
 }
 
-void NUMspline (double x[], double y[], long n, double yp1, double ypn,
-                double y2[]) {
+void NUMspline (double x[], double y[], long n, double yp1, double ypn, double y2[]) {
 	autoNUMvector<double> u (1, n - 1);
 
 	if (yp1 > 0.99e30) {
@@ -2262,7 +2276,7 @@ int NUMdoLineSegmentsIntersect (double x1, double y1, double x2, double y2, doub
 	int o12 = NUMgetOrientationOfPoints (x1, y1, x2, y2, x4, y4);
 	int o21 = NUMgetOrientationOfPoints (x3, y3, x4, y4, x1, y1);
 	int o22 = NUMgetOrientationOfPoints (x3, y3, x4, y4, x2, y2);
-	return ( (o11 * o12 < 0) && (o21 * o22 < 0)) || (o11 *o12 *o21 *o22 == 0);
+	return ((o11 * o12 < 0) && (o21 * o22 < 0)) || (o11 *o12 *o21 *o22 == 0);
 }
 
 int NUMgetOrientationOfPoints (double x1, double y1, double x2, double y2, double x3, double y3) {
@@ -2274,9 +2288,9 @@ int NUMgetOrientationOfPoints (double x1, double y1, double x2, double y2, doubl
 	} else if (dx2 * dy3 < dy2 * dx3) {
 		orientation = -1;
 	} else {
-		if ( (dx2 * dx3 < 0) || (dy2 * dy3 < 0)) {
+		if ((dx2 * dx3 < 0) || (dy2 * dy3 < 0)) {
 			orientation = -1;
-		} else if ( (dx2 * dx2 + dy2 * dy2) >= (dx3 * dx3 + dy3 * dy3)) {
+		} else if ((dx2 * dx2 + dy2 * dy2) >= (dx3 * dx3 + dy3 * dy3)) {
 			orientation = 0;
 		} else {
 			orientation = 1;
@@ -2325,7 +2339,7 @@ int NUMgetIntersectionsWithRectangle (double x1, double y1, double x2, double y2
 	for (long i = 1; i <= 4; i++) {
 		double denom = (x[i + 1] - x[i]) * (y2 - y1) - (y[i + 1] - y[i]) * (x2 - x1);
 		double s, t, x3, y3;
-		if (denom == 0) {
+		if (denom == 0.0) {
 			continue;
 		}
 		/* We have an intersection. */
@@ -2496,16 +2510,14 @@ void NUMgetEllipseBoundingBox (double a, double b, double cospsi, double *width,
 	Melder_assert (cospsi >= -1 && cospsi <= 1);
 
 	if (cospsi == 1) {
-		/*
-			a-axis along x-axis
-		*/
+
+		// a-axis along x-axis
 
 		*width = a;
 		*height = b;
 	} else if (cospsi == 0) {
-		/*
-			a-axis along y-axis
-		*/
+
+		// a-axis along y-axis
 
 		*width = b;
 		*height = a;
@@ -2521,8 +2533,7 @@ void NUMgetEllipseBoundingBox (double a, double b, double cospsi, double *width,
 /*
 Closely modelled after the netlib code by Oleg Keselyov.
 */
-double NUMminimize_brent (double (*f) (double x, void *closure), double a, double b,
-                          void *closure, double tol, double *fx) {
+double NUMminimize_brent (double (*f) (double x, void *closure), double a, double b, void *closure, double tol, double *fx) {
 	double x, v, fv, w, fw;
 	const double golden = 1 - NUM_goldenSection;
 	const double sqrt_epsilon = sqrt (NUMfpp -> eps);
@@ -2539,22 +2550,19 @@ double NUMminimize_brent (double (*f) (double x, void *closure), double a, doubl
 
 	for (long iter = 1; iter <= itermax; iter++) {
 		double range = b - a;
-		double middle_range = (a + b) / 2;
-		double tol_act = sqrt_epsilon * fabs (x) + tol / 3;
+		double middle_range = (a + b) / 2.0;
+		double tol_act = sqrt_epsilon * fabs (x) + tol / 3.0;
 		double new_step; /* Step at this iteration */
 
-
-
-		if (fabs (x - middle_range) + range / 2 <= 2 * tol_act) {
+		if (fabs (x - middle_range) + range / 2.0 <= 2.0 * tol_act) {
 			return x;
 		}
 
-		/* Obtain the golden section step */
+		// Obtain the golden section step
 
 		new_step = golden * (x < middle_range ? b - x : a - x);
 
-
-		/* Decide if the parabolic interpolation can be tried	*/
+		// Decide if the parabolic interpolation can be tried
 
 		if (fabs (x - w) >= tol_act) {
 			/*
@@ -2562,14 +2570,12 @@ double NUMminimize_brent (double (*f) (double x, void *closure), double a, doubl
 				division operation is delayed until last moment.
 			*/
 
-			double p, q, t;
-
-			t = (x - w) * (*fx - fv);
-			q = (x - v) * (*fx - fw);
-			p = (x - v) * q - (x - w) * t;
-			q = 2 * (q - t);
+			double t = (x - w) * (*fx - fv);
+			double q = (x - v) * (*fx - fw);
+			double p = (x - v) * q - (x - w) * t;
+			q = 2.0 * (q - t);
 
-			if (q > 0) {
+			if (q > 0.0) {
 				p = -p;
 			} else {
 				q = -q;
@@ -2583,22 +2589,22 @@ double NUMminimize_brent (double (*f) (double x, void *closure), double a, doubl
 			*/
 
 			if (fabs (p) < fabs (new_step * q) &&
-			        p > q * (a - x + 2 * tol_act) &&
-			        p < q * (b - x - 2 * tol_act)) {
+			        p > q * (a - x + 2.0 * tol_act) &&
+			        p < q * (b - x - 2.0 * tol_act)) {
 				new_step = p / q;
 			}
 		}
 
-		/* Adjust the step to be not less than tolerance. */
+		// Adjust the step to be not less than tolerance.
 
 		if (fabs (new_step) < tol_act) {
-			new_step = new_step > 0 ? tol_act : - tol_act;
+			new_step = new_step > 0.0 ? tol_act : - tol_act;
 		}
 
-		/* Obtain the next approximation to min	and reduce the enveloping range */
+		// Obtain the next approximation to min	and reduce the enveloping range
 
 		{
-			double t = x + new_step;	/* Tentative point for the min	*/
+			double t = x + new_step;	// Tentative point for the min
 			double ft = (*f) (t, closure);
 
 			/*
@@ -2652,7 +2658,7 @@ long NUMgetIndexFromProbability (double *probs, long nprobs, double p) {
 
 // straight line fitting
 
-void NUMlineFit_theil (double *x, double *y, long numberOfPoints, double *m, double *intercept, bool incompleteMethod) {
+void NUMlineFit_theil (double *x, double *y, long numberOfPoints, double *p_m, double *p_intercept, bool incompleteMethod) {
 	try {
 		/* Theil's incomplete method:
 		 * Split (x[i],y[i]) as
@@ -2661,14 +2667,15 @@ void NUMlineFit_theil (double *x, double *y, long numberOfPoints, double *m, dou
 		 * m = median (m[i])
 		 * b = median(y[i]-m*x[i])
 		 */
+		double m, intercept;
 		if (numberOfPoints <= 0) {
-			*m = *intercept = NUMundefined;
+			m = intercept = NUMundefined;
 		} else if (numberOfPoints == 1) {
-			*intercept = y[1];
-			*m = 0;
+			intercept = y[1];
+			m = 0;
 		} else if (numberOfPoints == 2) {
-			*m = (y[2] - y[1]) / (x[2] - x[1]);
-			*intercept = y[1] - *m * x[1];
+			m = (y[2] - y[1]) / (x[2] - x[1]);
+			intercept = y[1] - m * x[1];
 		} else {
 			long numberOfCombinations;
 			autoNUMvector<double> mbs;
@@ -2690,35 +2697,45 @@ void NUMlineFit_theil (double *x, double *y, long numberOfPoints, double *m, dou
 				}
 			}
 			NUMsort_d (numberOfCombinations, mbs.peek());
-			*m = NUMquantile (numberOfCombinations, mbs.peek(), 0.5);
+			m = NUMquantile (numberOfCombinations, mbs.peek(), 0.5);
 			for (long i = 1; i <= numberOfPoints; i++) {
-				mbs[i] = y[i] - *m * x[i];
+				mbs[i] = y[i] - m * x[i];
 			}
 			NUMsort_d (numberOfPoints, mbs.peek());
-			*intercept = NUMquantile (numberOfPoints, mbs.peek(), 0.5);
+			intercept = NUMquantile (numberOfPoints, mbs.peek(), 0.5);
+		}
+		if (p_m) {
+			*p_m = m;
+		}
+		if (p_intercept) {
+			*p_intercept = intercept;
 		}
 	} catch (MelderError) {
 		Melder_throw (U"No line fit (Theil's method)");
 	}
 }
 
-void NUMlineFit_LS (double *x, double *y, long numberOfPoints, double *m, double *intercept) {
-	double sx = 0, sy = 0;
+void NUMlineFit_LS (double *x, double *y, long numberOfPoints, double *p_m, double *intercept) {
+	double sx = 0.0, sy = 0.0;
 	for (long i = 1; i <= numberOfPoints; i++) {
 		sx += x[i];
 		sy += y[i];
 	}
 	double xmean = sx / numberOfPoints;
-	double st2 = 0, a = 0;
+	double st2 = 0.0, m = 0.0;
 	for (long i = 1; i <= numberOfPoints; i++) {
 		double t = x[i] - xmean;
 		st2 += t * t;
-		a += t * y[i];
+		m += t * y[i];
+	}
+	// y = m*x + b
+	m /= st2;
+	if (intercept) {
+		*intercept = (sy - m * sx) / numberOfPoints;
+	}
+	if (p_m) {
+		*p_m = m;
 	}
-	// y = a*x + b
-	a /= st2;
-	*intercept = (sy - a * sx) / numberOfPoints;
-	*m = a;
 }
 
 void NUMlineFit (double *x, double *y, long numberOfPoints, double *m, double *intercept, int method) {
@@ -2790,7 +2807,7 @@ void NUMlpc_lpc_to_rc2 (double *lpc, long m, double *rc) { // klopt nog niet
 		long jb = m + 1 - j;
 		long mh = (jb + 1) / 2;
 		double rct = rc[jb+1];
-		double d = 1 - rct * rct;
+		double d = 1.0 - rct * rct;
 		for (long k = 1; k <= mh; k++) {
 			rc[k] *= (1 - rct) / d;
 		}
@@ -2800,7 +2817,7 @@ void NUMlpc_lpc_to_rc2 (double *lpc, long m, double *rc) { // klopt nog niet
 void NUMlpc_rc_to_area (double *rc, long m, double *area) {
 	area[m+1] = 0.0001; /* 1.0 cm^2 */
 	for (long j = 1; j <= m; j++) {
-		double ar = (1 - rc[m+1-j]) / (1 + rc[m+1-j]);
+		double ar = (1.0 - rc[m+1-j]) / (1.0 + rc[m+1-j]);
 		area[m+1-j] = area[m+2-j] / ar;
 	}
 }
@@ -2809,7 +2826,7 @@ void NUMlpc_rc_to_area (double *rc, long m, double *area) {
 void NUMlpc_area_to_rc (double *area, long m, double *rc) {
 	for (long j = 1; j <= m - 1; j++) {
 		double ar = area[j+1] / area[j];
-		rc[j] = (1 - ar) / (1 + ar);
+		rc[j] = (1.0 - ar) / (1.0 + ar);
 	}
 }
 
@@ -2869,7 +2886,7 @@ inline static double Stirling (double y1)
 // djmw 20121211 replaced calls to gsl_rng_uniform with NUMrandomUniform (0,1)
 
 long NUMrandomBinomial (double p, long n) {
-	if (p < 0 || p > 1 || n < 0) {
+	if (p < 0.0 || p > 1.0 || n < 0) {
 		return -100000000;
 	}
 	long ix;                       /* return value */
@@ -2883,7 +2900,7 @@ long NUMrandomBinomial (double p, long n) {
 		flipped = 1;
 	}
 
-	double q = 1 - p;
+	double q = 1.0 - p;
 	double s = p / q;
 	double np = n * p;
 
@@ -2902,7 +2919,7 @@ long NUMrandomBinomial (double p, long n) {
 			*/
 
 			double f = f0;
-			double u = NUMrandomUniform (0, 1); //djmw gsl_rng_uniform (rng);
+			double u = NUMrandomUniform (0.0, 1.0); //djmw gsl_rng_uniform (rng);
 
 			for (ix = 0; ix <= BINV_CUTOFF; ++ix) {
 				if (u < f) {
@@ -2910,7 +2927,7 @@ long NUMrandomBinomial (double p, long n) {
 				}
 				u -= f;
 				/* Use recursion f(x+1) = f(x)*[(n-x)/(x+1)]*[p/(1-p)] */
-				f *= s * (n - ix) / (ix + 1);
+				f *= s * (n - ix) / (ix + 1.0);
 			}
 
 			/* It should be the case that the 'goto Finish' was encountered
@@ -2978,8 +2995,8 @@ long NUMrandomBinomial (double p, long n) {
 TryAgain:
 
 		/* generate random variates, u specifies which region: Tri, Par, Tail */
-		u = p4 * NUMrandomUniform (0, 1); // djmw gsl_rng_uniform (rng) * p4;
-		v = NUMrandomUniform (0, 1); // djmw gsl_rng_uniform (rng);
+		u = p4 * NUMrandomUniform (0.0, 1.0); // djmw gsl_rng_uniform (rng) * p4;
+		v = NUMrandomUniform (0.0, 1.0); // djmw gsl_rng_uniform (rng);
 
 		if (u <= p1) {
 			/* Triangular region */
@@ -3126,4 +3143,57 @@ Finish:
   	return (flipped) ? (n - ix) : ix;
 }
 
+void NUMlngamma_complex (double zr, double zi, double *lnr, double *arg) {
+	double ln_re = NUMundefined, ln_arg = NUMundefined;
+	gsl_sf_result gsl_lnr, gsl_arg;
+	if (gsl_sf_lngamma_complex_e (zr, zi, & gsl_lnr, & gsl_arg)) {
+		ln_re = gsl_lnr.val; ln_arg = gsl_arg.val;
+	}
+	if (lnr) {
+		*lnr = ln_re;
+	}
+	if (arg) {
+		*arg = ln_arg;
+	}
+}
+
+bool NUMdmatrix_hasFiniteElements (double **m, long row1, long row2, long col1, long col2) {
+	for (long i = row1; i <= row2; i ++) {
+		for (long j = col1; j <= col2; j ++) {
+			if (! isfinite (m [i] [j])) {
+				return false;
+			}
+		}
+	}
+	return true;
+}
+
+void NUMdmatrix_diagnoseCells (double **m, long rb, long re, long cb, long ce, long maximumNumberOfPositionsToReport) {
+	long numberOfInvalids = 0;
+	bool firstTime = true;
+	for (long i = rb; i <= re; i++) {
+		for (long j = cb; j <= ce; j++) {
+			if (! isfinite (m [i][j])) {
+				numberOfInvalids ++;
+				if (firstTime) {
+					MelderInfo_writeLine (U"Invalid data at the following [row] [column] positions:");
+					firstTime = false;
+				}
+				if (numberOfInvalids <= maximumNumberOfPositionsToReport) {
+					if (numberOfInvalids % 10 != 0) {
+						MelderInfo_write (U"[", i, U"][", j, U"]  ");
+					} else {
+						MelderInfo_writeLine (U"[", i, U"][", j, U"]");
+					}
+				} else {
+					return;
+				}
+			}
+		}
+	}
+	if (numberOfInvalids == 0) {
+		MelderInfo_writeLine (U"All cells have valid data.");
+	}
+}
+
 /* End of file NUM2.cpp */
diff --git a/dwsys/NUM2.h b/dwsys/NUM2.h
index 74e57f3..bd28a0d 100644
--- a/dwsys/NUM2.h
+++ b/dwsys/NUM2.h
@@ -2,21 +2,20 @@
 #define _NUM2_h_
 /* NUM2.h
  *
- * Copyright (C) 1997-2014 David Weenink
+ * Copyright (C) 1997-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -39,7 +38,9 @@ int NUMstrcmp (const char *s1, const char *s2);
 */
 
 int NUMstring_containsPrintableCharacter (const char32 *s);
+
 void NUMstring_chopWhiteSpaceAtExtremes_inline (char32 *string);
+
 double *NUMstring_to_numbers (const char32 *s, long *numbers_found);
 /* return array with the number of numbers found */
 
@@ -51,11 +52,14 @@ double *NUMstring_to_numbers (const char32 *s, long *numbers_found);
 long *NUMstring_getElementsOfRanges (const char32 *ranges, long maximumElement, long *numberOfElements, long *numberOfMultiples, const char32 *elementType, bool sortedUniques);
 
 char32 * NUMstring_timeNoDot (double time);
+
 int NUMstrings_equal (const char32 **s1, const char32 **s2, long lo, long hi);
+
 void NUMstrings_copyElements (char32 **from, char32**to, long lo, long hi);
+
 void NUMstrings_free (char32 **s, long lo, long hi);
-int NUMstrings_setSequentialNumbering (char32 **s, long lo, long hi,
-	const char32 *precursor, long number, long increment, int asArray);
+
+int NUMstrings_setSequentialNumbering (char32 **s, long lo, long hi, const char32 *precursor, long number, long increment, int asArray);
 /*
 	Set s[lo]   = precursor<number>
 	    s[lo+1] = precursor<number+1>
@@ -125,6 +129,12 @@ void NUMdmatrix_printMatlabForm (double **m, long nr, long nc, const char32 *nam
 	7, 8, 9];
 */
 
+bool NUMdmatrix_hasFiniteElements (double **m, long row1, long row2, long col1, long col2);
+/* true if all the elements are finite i.e. not plus or minus infinity, and not NaN */
+
+void NUMdmatrix_diagnoseCells (double **m, long rb, long re, long cb, long ce, long maximumNumberOfPositionsToReport);
+/* which cells are not finite? */
+
 double **NUMdmatrix_transpose (double **m, long nr, long nc);
 /*
 	Transpose a nr x nc matrix.
@@ -138,29 +148,38 @@ double **NUMdmatrix_transpose (double **m, long nr, long nc);
  *     lo and hi must be valid indices in the array.
 */
 template <class T>
-void NUMvector_extrema (T *v, long lo, long hi, double *min, double *max) {
-    T tmin = v[lo];
-    T tmax = tmin;
+void NUMvector_extrema (T *v, long lo, long hi, double *p_min, double *p_max) {
+    T min = v[lo];
+    T max = min;
     for (long i = lo + 1; i <= hi; i++)
     {
-        if (v[i] < tmin) tmin = v[i];
-        else if (v[i] > tmax) tmax = v[i];
+        if (v[i] < min) min = v[i];
+        else if (v[i] > max) max = v[i];
     }
-    *min = tmin; *max = tmax;
+    if (p_min) {
+		*p_min = min;
+	}
+	if (p_max) {
+		*p_max = max;
+	}
 }
 
 template <class T>
-void NUMmatrix_extrema (T **x, long rb, long re, long cb, long ce, double *min, double *max) {
-    T xmin, xmax;
-    xmax = xmin = x[rb][cb];
+void NUMmatrix_extrema (T **x, long rb, long re, long cb, long ce, double *p_min, double *p_max) {
+    T min = x[rb][cb], max = min;
     for (long i = rb; i <= re; i++) {
         for (long j = cb; j <= ce; j++) {
             T t = x[i][j];
-            if (t < xmin) xmin = t;
-            else if (t > xmax) xmax = t;
+            if (t < min) min = t;
+            else if (t > max) max = t;
         }
     }
-    *min = xmin; *max = xmax;
+    if (p_min) {
+		*p_min = min;
+	}
+	if (p_max) {
+		*p_max = max;
+	}
 }
 
 
@@ -171,11 +190,10 @@ void NUMmatrix_extrema (T **x, long rb, long re, long cb, long ce, double *min,
 */
 template <class T>
 void NUMvector_clip (T *v, long lo, long hi, double min, double max) {
-    T tmin = min, tmax = max;
     for (long i = lo; i <= hi; i++)
     {
-        if (v[i] < tmin) v[i] = tmin;
-        else if (v[i] > tmax) v[i] = tmax;
+        if (v[i] < min) v[i] = min;
+        else if (v[i] > max) v[i] = max;
     }
 }
 
@@ -191,11 +209,12 @@ T ** NUMmatrix_transpose (T **m, long nr, long nc) {
     return to.transfer();
 }
 
-int NUMdmatrix_hasInfinities (double **m, long rb, long re, long cb, long ce);
-
 double NUMvector_normalize1 (double v[], long n);
+
 double NUMvector_normalize2 (double v[], long n);
+
 double NUMvector_getNorm1 (const double v[], long n);
+
 double NUMvector_getNorm2 (const double v[], long n);
 
 void  NUMcentreRows (double **a, long rb, long re, long cb, long ce);
@@ -229,6 +248,7 @@ void NUMnormalize (double **a, long nr, long nc, double norm);
 
 void NUMstandardizeColumns (double **a, long rb, long re, long cb, long ce);
 /* a[i][j] = (a[i][j] - average[j]) / sigma[j] */
+
 void NUMstandardizeRows (double **a, long rb, long re, long cb, long ce);
 /* a[i][j] = (a[i][j] - average[i]) / sigma[i] */
 
@@ -237,17 +257,14 @@ void NUMaverageColumns (double **a, long rb, long re, long cb, long ce);
 
 void NUMvector_avevar (double *a, long n, double *average, double *variance);
 
-void NUMcolumn_avevar (double **a, long nr, long nc, long icol,
-	double *average, double *variance);
+void NUMcolumn_avevar (double **a, long nr, long nc, long icol, double *average, double *variance);
 /*
 	Get mean and variance of a column.
 	When average and/or variance are NULL, the corresponding output is
 	NOT given.
  */
 
-void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2,
-	double *average1, double *variance1, double *average2, double *variance2,
-	double *covariance);
+void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2, double *average1, double *variance1, double *average2, double *variance2, double *covariance);
 /*
 	Get mean and variance of two columns.
 	When average and/or variance are NULL, the corresponding output is
@@ -256,7 +273,6 @@ void NUMcolumn2_avevar (double **a, long nr, long nc, long icol1, long icol2,
 
 void NUMvector_smoothByMovingAverage (double *xin, long n, long nwindow, double *xout);
 
-
 void NUMcovarianceFromColumnCentredMatrix (double **x, long nrows, long ncols, long ndf, double **covar);
 /*
 	Calculate covariance matrix(ncols x ncols) from data matrix (nrows x ncols);
@@ -270,8 +286,7 @@ double NUMmultivariateKurtosis (double **x, long nrows, long ncols, int method);
 	method = 1 : Schott (2001), J. of Statistical planning and Inference 94, 25-36.
 */
 
-void NUMmad (double *x, long n, double *location, int wantlocation,
-	double *mad, double *work);
+void NUMmad (double *x, long n, double *location, int wantlocation, double *mad, double *work);
 /*
 	Computes the median absolute deviation, i.e., the median of the
 	absolute deviations from the median, and adjust by a factor for
@@ -561,6 +576,33 @@ void NUMeigensystem (double **a, long n, double **evec, double eval[]);
 	Eigenvalues (with corresponding eigenvectors) are sorted in descending order.
 */
 
+void NUMdmatrix_projectRowsOnEigenspace (double **data, long numberOfRows, long from_col, double **eigenvectors, long numberOfEigenvectors, long dimension, double **projection, long to_col);
+/* Input:
+	data[numberOfRows, from_col - 1 + my dimension] 
+		contains the 'numberOfRows' vectors to be projected on the eigenspace. 
+	eigenvectors [numberOfEigenvectors][dimension] 
+		the eigenvectors stored as rows
+   Input/Output
+		projection [numberOfRows, to_colbegin - 1 + numberOfDimensionsToKeep] 
+		the projected vectors from 'data'
+
+   Project (part of) the vectors in matrix 'data' along the 'numberOfEigenvectors' eigenvectors into the matrix 'projection'.
+ */
+
+void NUMdmatrix_projectColumnsOnEigenspace (double **data, long numberOfColumns, double **eigenvectors, long numberOfEigenvectors, long dimension, double **projection);
+/* Input:
+ 	data[dimension, numberOfColumns]
+ 		contains the column vectors to be projected on the eigenspace.
+  eigenvectors [numberOfEigenvectors][dimension]
+ 		the eigenvectors stored as rowvectors
+ Input/Output
+ 	projection [numberOfEigenvectors, numberOfColumns] 
+ 		the projected vectors from 'data'
+ 
+ Project the columnvectors in matrix 'data' along the 'numberOfEigenvectors' eigenvectors into the matrix 'projection'.
+*/
+
+
 void NUMdominantEigenvector (double **mns, long n, double *q, double *lambda, double tolerance);
 /*
 	Determines the first dominant eigenvector from a GENERAL matrix
@@ -679,7 +721,7 @@ void NUMsolveWeaklyConstrainedLinearRegression (double **f, long n, long m, doub
 */
 
 void NUMProcrustes (double **x, double **y, long nPoints,
-	long nDimensions, double **t, double *v, double *s);
+	long nDimensions, double **t, double v[], double *s);
 /*
 	Given two configurations x and y (nPoints x nDimensions), find the
 	the Procrustes rotation/reflection matrix T, the translation vector v and the scaling
@@ -755,6 +797,18 @@ double NUMbetaContinuedFraction(double a, double b, double x);
 double NUMfactln (int n);
 /* Returns ln (n!) */
 
+void NUMlngamma_complex (double zr, double zi, double *lnr, double *arg);
+/* Log[Gamma(z)] for z complex, z not a negative integer
+ * Uses complex Lanczos method. Note that the phase part (arg)
+ * is not well-determined when |z| is very large, due
+ * to inevitable roundoff in restricting to (-pi, pi].
+ * The absolute value part (lnr), however, never suffers.
+ *
+ * Calculates:
+ *   lnr = log|Gamma(z)|
+ *   arg = arg(Gamma(z))  in (-Pi, Pi]
+ */
+
 /***** STATISTICS: PROBABILITY DENSITY FUNCTIONS ********************/
 
 double NUMlogNormalP (double x, double zeta, double sigma);
diff --git a/dwsys/NUMcblas.cpp b/dwsys/NUMcblas.cpp
index d8b0517..b938970 100644
--- a/dwsys/NUMcblas.cpp
+++ b/dwsys/NUMcblas.cpp
@@ -1,4 +1,4 @@
-/* NUMcblas.c
+/* NUMcblas.cpp
 
 	-- LAPACK helper routines  -- Univ. of Tennessee, Univ. of
 	California Berkeley, NAG Ltd., Courant Institute, Argonne National Lab,
@@ -3014,4 +3014,4 @@ L30:
 #undef MAX
 #undef MIN
 
-/* End of file NUMcblas.c */
+/* End of file NUMcblas.cpp */
diff --git a/dwsys/NUMcblas.h b/dwsys/NUMcblas.h
index 0df7232..9f26a27 100644
--- a/dwsys/NUMcblas.h
+++ b/dwsys/NUMcblas.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMclapack.h b/dwsys/NUMclapack.h
index 440f23c..8b28216 100644
--- a/dwsys/NUMclapack.h
+++ b/dwsys/NUMclapack.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMf2c.cpp b/dwsys/NUMf2c.cpp
index 7dc8c11..895f3a7 100644
--- a/dwsys/NUMf2c.cpp
+++ b/dwsys/NUMf2c.cpp
@@ -6,8 +6,8 @@
 
 double d_sign (double *a, double *b) {
 	double x;
-	x = (*a >= 0 ? *a : - *a);
-	return (*b >= 0 ? x : -x);
+	x = (*a >= 0.0 ? *a : - *a);
+	return (*b >= 0.0 ? x : -x);
 }
 
 long int lsame_ (const char *ca, const char *cb) {
@@ -28,7 +28,7 @@ double pow_di (double *ap, long *bp) {
 	if (n != 0) {
 		if (n < 0) {
 			n = -n;
-			x = 1 / x;
+			x = 1.0 / x;
 		}
 		for (u = n; ;) {
 			if (u & 01) {
diff --git a/dwsys/NUMf2c.h b/dwsys/NUMf2c.h
index 78ece39..162cba2 100644
--- a/dwsys/NUMf2c.h
+++ b/dwsys/NUMf2c.h
@@ -5,19 +5,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMfft_core.h b/dwsys/NUMfft_core.h
index c0f2d84..a546581 100644
--- a/dwsys/NUMfft_core.h
+++ b/dwsys/NUMfft_core.h
@@ -79,7 +79,6 @@ static void drfti1 (long n, FFT_DATA_TYPE * wa, long *ifac)
 
 	if (nfm1 == 0)
 		return;
-
 	for (k1 = 0; k1 < nfm1; k1++)
 	{
 		ip = ifac[k1 + 2];
diff --git a/dwsys/NUMfft_d.cpp b/dwsys/NUMfft_d.cpp
index 459dd4a..9beae6c 100644
--- a/dwsys/NUMfft_d.cpp
+++ b/dwsys/NUMfft_d.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1997-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* djmw 20020813 GPL header
diff --git a/dwsys/NUMhuber.cpp b/dwsys/NUMhuber.cpp
index 3839476..80f45df 100644
--- a/dwsys/NUMhuber.cpp
+++ b/dwsys/NUMhuber.cpp
@@ -1,20 +1,19 @@
 /* NUMhuber.cpp
-*
-* Copyright (C) 1994-2008 David Weenink
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 2 of the License, or (at
-* your option) any later version.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Copyright (C) 1994-2008, 2015 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
 */
 
 /*
@@ -36,7 +35,7 @@ void NUMmad (double *x, long n, double *location, int wantlocation, double *mad,
 		return;
 	}
 	autoNUMvector<double> atmp;
-	if (work == 0)  {
+	if (! work)  {
 		atmp.reset (1, n);
 		tmp = atmp.peek();
 	}
@@ -65,8 +64,8 @@ static double NUMgauss (double x) {
 void NUMstatistics_huber (double *x, long n, double *location, int wantlocation,
                           double *scale, int wantscale, double k, double tol, double *work) {
 	double *tmp = work;
-	double theta = 2 * NUMgaussP (k) - 1;
-	double beta = theta + k * k * (1 - theta) - 2 * k * NUMgauss (k);
+	double theta = 2.0 * NUMgaussP (k) - 1.0;
+	double beta = theta + k * k * (1.0 - theta) - 2.0 * k * NUMgauss (k);
 	long n1 = n;
 
 	autoNUMvector<double> atmp;
@@ -107,14 +106,14 @@ void NUMstatistics_huber (double *x, long n, double *location, int wantlocation,
 			}
 		}
 		if (wantlocation) {
-			mu1 = 0;
+			mu1 = 0.0;
 			for (long i = 1; i <= n; i++) {
 				mu1 += tmp[i];
 			}
 			mu1 /= n;
 		}
 		if (wantscale) {
-			s1 = 0;
+			s1 = 0.0;
 			for (long i = 1; i <= n; i++) {
 				double dx = tmp[i] - mu1;
 				s1 += dx * dx;
diff --git a/dwsys/NUMlapack.cpp b/dwsys/NUMlapack.cpp
index 5bd4ebd..f0c1bb0 100644
--- a/dwsys/NUMlapack.cpp
+++ b/dwsys/NUMlapack.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMlapack.h b/dwsys/NUMlapack.h
index 3fc71c8..62d8898 100644
--- a/dwsys/NUMlapack.h
+++ b/dwsys/NUMlapack.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMmachar.cpp b/dwsys/NUMmachar.cpp
index dce5754..2a262c6 100644
--- a/dwsys/NUMmachar.cpp
+++ b/dwsys/NUMmachar.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMmachar.h b/dwsys/NUMmachar.h
index c9ae513..1eaebdc 100644
--- a/dwsys/NUMmachar.h
+++ b/dwsys/NUMmachar.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1994-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwsys/NUMsort2.cpp b/dwsys/NUMsort2.cpp
index d24331b..ea1c20d 100644
--- a/dwsys/NUMsort2.cpp
+++ b/dwsys/NUMsort2.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -56,6 +55,76 @@ void NUMrankColumns (double **m, long rb, long re, long cb, long ce) {
 	}
 }
 
+template <class T>
+void NUMindexx (const T a[], long n, long index[], int (*compare) (void *, void *)) {
+	long ii, imin;
+	T min;
+	for (long j = 1; j <= n; j++) {
+		index[j] = j;
+	}
+	if (n < 2) return;   // Already sorted
+	if (n == 2) {
+		if (COMPARELT(a[2], a[1])) {
+			index[1] = 2; index[2] = 1;
+		}
+		return;
+	} 
+	if (n <= 12) {
+		for (long i = 1; i < n; i++) {
+			imin = i;
+			min = a[index[imin]];
+			for (long j = i + 1; j <= n; j++) {
+				if (COMPARELT(a[index[j]], min)) {
+					imin = j;
+					min = a[index[j]];
+				}
+			}
+			ii = index[imin]; index[imin] = index[i]; index[i] = ii;
+		}
+		return;
+	}
+	// H1
+	long l = n / 2 + 1, r = n;
+	for (;;) { // H2
+		long k, i;
+		if (l > 1) {
+			l--;
+			k = index[l];
+		} else { // l == 1
+			k = index[r];
+			index[r] = index[1];
+			r--;
+			if (r == 1) {
+				index[1] = k; break;
+			}
+		}
+		// H3 
+		long j = l;
+		for (;;) {
+			// H4
+			i = j;
+			j *= 2;
+			if (j > r) {
+				break;
+			}
+			if (j < r && COMPARELT (a[index[j]], a[index[j + 1]])) {
+				j++; // H5
+			}
+			index[i] = index[j]; // H7
+		}
+		for (;;) { // H8' 
+			j = i;
+			i = j >> 1;
+			// H9'
+			if (j == l || COMPARELT (a[k], a[index[i]])) {
+				index[j] = k; break;
+			}
+			index[j] = index[i];
+		}
+	}
+}
+
+
 #define MACRO_NUMindex(TYPE) \
 { \
 	long l, r, j, i, ii, k, imin; \
@@ -146,96 +215,81 @@ MACRO_NUMindex (char32 *)
 #undef COMPARELT
 #undef MACRO_INDEXX
 
-
+template <class T>
+void NUMsort1 (long n, T a[]) {
 /*
 	Knuth's heapsort algorithm (vol. 3, page 145),
 	modified with Floyd's optimization (vol. 3, page 642).
 */
-#define MACRO_NUMsortkf(TYPE)  { \
-	long l, r, j, i, imin; \
-	TYPE k, min; \
-	if (n < 2) return;   /* Already sorted. */ \
-	/* This n<2 step is absent from Press et al.'s implementation, */ \
-	/* which will therefore not terminate on if(--ir==1). */ \
-	/* Knuth's initial assumption is now fulfilled: n >= 2. */ \
-	if (n == 2) \
-	{ \
-		if (a[1] > a[2]) \
-		{\
-			min = a[2]; a[2] = a[1]; a[1] = min; \
-		} \
-		return; \
-	} \
-	if (n <= 12) \
-	{ \
-		for (i = 1; i < n; i++) \
-		{ \
-			min = a[i]; \
-			imin = i; \
-			for (j = i + 1; j <= n; j++) \
-			{\
-				if (a[j] < min)\
-				{ \
-					min = a [j]; \
-					imin = j; \
-				} \
-			} \
-			a[imin] = a[i]; \
-			a[i] = min; \
-		} \
-		return; \
-	} \
-	/* H1 */\
-	l = (n >> 1) + 1; \
-	r = n; \
-	for (;;) /* H2 */\
-	{ \
-		if (l > 1) \
-		{ \
-			l--; \
-			k = a[l]; \
-		} \
-		else /* l == 1 */ \
-		{ \
-			k = a[r]; \
-			a[r] = a[1]; \
-			r--; \
-			if (r == 1) \
-			{ \
-				a[1] = k; return; \
-			} \
-		} \
-		/* H3 */ \
-		j = l; \
-		for (;;) \
-		{ \
-			/* H4 */ \
-			i = j; \
-			j = j << 1; \
-			if (j > r) break; \
-			if (j < r && a[j] < a[j + 1]) j++; /* H5 */\
-			/*if (k >= a[j]) break; */\
-			a[i] = a[j]; /* H7 */\
-		} \
-/*		a[i] = k; H8 */\
-		for (;;)  /*H8' */\
-		{\
-			j = i; \
-			i = j >> 1; \
-			/* H9' */ \
-			if (j == l || k <= a[i]) \
-			{ \
-				a[j] = k; break; \
-			} \
-			a[j] = a[i]; \
-		}\
-	} \
+	T min;
+	if (n < 2) return;   // Already sorted. 
+	/*	
+		This n<2 step is absent from Press et al.'s implementation,
+		which will therefore not terminate on if(--ir==1).
+		Knuth's initial assumption is now fulfilled: n >= 2.
+	*/
+	if (n == 2) {
+		if (a[1] > a[2]) {
+			min = a[2]; a[2] = a[1]; a[1] = min;
+		}
+		return;
+	}
+	if (n <= 12) {
+		long imin;
+		for (long i = 1; i < n; i++) {
+			min = a[i];
+			imin = i;
+			for (long j = i + 1; j <= n; j++) {
+				if (a[j] < min) {
+					min = a [j];
+					imin = j;
+				}
+			}
+			a[imin] = a[i];
+			a[i] = min;
+		}
+		return;
+	}
+	// H1
+	long l = (n >> 1) + 1, r = n;
+	for (;;) { // H2
+		T ak;
+		if (l > 1) {
+			l--;
+			ak = a[l];
+		} else { // l == 1
+			ak = a[r];
+			a[r] = a[1];
+			r--;
+			if (r == 1) {
+				a[1] = ak; return;
+			}
+		}
+		// H3
+		long i, j = l;
+		for (;;) { // H4
+			i = j;
+			j = j << 1;
+			if (j > r) {
+				break;
+			}
+			if (j < r && a[j] < a[j + 1]) {
+				j++; // H5
+			}
+			// if (k >= a[j]) break;
+			a[i] = a[j]; // H7 
+		}
+		//	a[i] = k; H8 
+		for (;;) { // H8'
+			j = i;
+			i = j >> 1;
+			// H9'
+			if (j == l || ak <= a[i]) {
+				a[j] = ak; break;
+			}
+			a[j] = a[i];
+		}
+	}
 }
 
-void NUMsort1_d (long n, double a[]);
-void NUMsort1_d (long n, double a[])
-MACRO_NUMsortkf (double)
-
-#undef MACRO_NUMsortkf
-
 /* End of file NUMsort.cpp */
diff --git a/dwsys/NUMstring.cpp b/dwsys/NUMstring.cpp
index a4bf7ee..0f67c54 100644
--- a/dwsys/NUMstring.cpp
+++ b/dwsys/NUMstring.cpp
@@ -1,21 +1,20 @@
 /* NUMstring.cpp
-*
-* Copyright (C) 2012 David Weenink
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 2 of the License, or (at
-* your option) any later version.
-*
-* This program is distributed in the hope that it will be useful, but
-* WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ *
+ * Copyright (C) 2012-2016 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 /*
  djmw 20121005 First version
@@ -54,16 +53,19 @@ void NUMstring_chopWhiteSpaceAtExtremes_inline (char32 *string) {
 	string[n] = 0;
 }
 
-double *NUMstring_to_numbers (const char32 *s, long *numbers_found) {
-	*numbers_found = Melder_countTokens (s);
-	if (*numbers_found < 1) {
+double *NUMstring_to_numbers (const char32 *s, long *p_numbers_found) {
+	long numbers_found = Melder_countTokens (s);
+	if (numbers_found < 1) {
 		Melder_throw (U"Empty string.");
 	}
-	autoNUMvector<double> numbers (1, *numbers_found);
+	autoNUMvector<double> numbers (1, numbers_found);
 	long inum = 1;
 	for (char32 *token = Melder_firstToken (s); token != 0; token = Melder_nextToken (), inum++) {
 		Interpreter_numericExpression (0, token, &numbers[inum]);
 	}
+	if (p_numbers_found) {
+		*p_numbers_found = numbers_found;
+	}
 	return numbers.transfer();
 }
 
@@ -334,29 +336,33 @@ char32 *str_replace_regexp (const char32 *string, regexp *compiledSearchRE,
 }
 
 static char32 **strs_replace_literal (char32 **from, long lo, long hi, const char32 *search,
-	const char32 *replace, int maximumNumberOfReplaces, long *nmatches, long *nstringmatches) {
+	const char32 *replace, int maximumNumberOfReplaces, long *p_nmatches, long *p_nstringmatches) {
 	if (search == NULL || replace == NULL) {
 		return NULL;
 	}
 	autostring32vector result (lo, hi);
 
-	long nmatches_sub = 0;
-	*nmatches = 0; *nstringmatches = 0;
-	for (long i = lo; i <= hi; i++) {
-		/* Treat a NULL as an empty string */
-		const char32 *string = from[i] == NULL ? U"" : from[i];
+	long nmatches_sub = 0, nmatches = 0, nstringmatches = 0;
+	for (long i = lo; i <= hi; i ++) {
+		const char32 *string = ( from [i] ? from [i] : U"" );   // treat null as an empty string
 
-		result[i] = str_replace_literal (string, search, replace, maximumNumberOfReplaces, &nmatches_sub);
+		result [i] = str_replace_literal (string, search, replace, maximumNumberOfReplaces, & nmatches_sub);
 		if (nmatches_sub > 0) {
-			*nmatches += nmatches_sub;
-			(*nstringmatches) ++;
+			nmatches += nmatches_sub;
+			nstringmatches ++;
 		}
 	}
+	if (p_nmatches) {
+		*p_nmatches = nmatches;
+	}
+	if (p_nstringmatches) {
+		*p_nstringmatches = nstringmatches;
+	}
 	return result.transfer();
 }
 
 static char32 **strs_replace_regexp (char32 **from, long lo, long hi, const char32 *searchRE,
-	const char32 *replaceRE, int maximumNumberOfReplaces, long *nmatches, long *nstringmatches) {
+	const char32 *replaceRE, int maximumNumberOfReplaces, long *p_nmatches, long *p_nstringmatches) {
 	if (searchRE == NULL || replaceRE == NULL) {
 		return NULL;
 	}
@@ -368,26 +374,28 @@ static char32 **strs_replace_regexp (char32 **from, long lo, long hi, const char
 
 	result.reset (lo, hi);
 
-	*nmatches = 0; *nstringmatches = 0;
+	long nmatches = 0, nstringmatches = 0;
 	for (long i = lo; i <= hi; i++) {
-		/* Treat a NULL as an empty string */
-		const char32 *string = from[i] == NULL ? U"" : from[i];
-		result [i] = str_replace_regexp (string, compiledRE, replaceRE,
-										 maximumNumberOfReplaces, &nmatches_sub);
+		const char32 *string = ( from [i] ? from [i] : U"" );   // treat null as an empty string
+
+		result [i] = str_replace_regexp (string, compiledRE, replaceRE, maximumNumberOfReplaces, &nmatches_sub);
 		if (nmatches_sub > 0) {
-			*nmatches += nmatches_sub;
-			(*nstringmatches) ++;
+			nmatches += nmatches_sub;
+			nstringmatches ++;
 		}
 	}
+	if (p_nmatches) {
+		*p_nmatches = nmatches;
+	}
+	if (p_nstringmatches) {
+		*p_nstringmatches = nstringmatches;
+	}
 	return result.transfer();
 }
 
-char32 **strs_replace (char32 **from, long lo, long hi, const char32 *search, const char32 *replace,
-                        int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp) {
-	if (use_regexp) return strs_replace_regexp (from, lo, hi, search,
-		                       replace, maximumNumberOfReplaces, nmatches, nstringmatches);
-	else return strs_replace_literal (from, lo, hi, search, replace,
-		                                  maximumNumberOfReplaces, nmatches, nstringmatches);
+char32 **strs_replace (char32 **from, long lo, long hi, const char32 *search, const char32 *replace, int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp) {
+	return use_regexp ? strs_replace_regexp (from, lo, hi, search, replace, maximumNumberOfReplaces, nmatches, nstringmatches) :
+		strs_replace_literal (from, lo, hi, search, replace, maximumNumberOfReplaces, nmatches, nstringmatches);
 }
 
 
diff --git a/dwsys/Permutation.cpp b/dwsys/Permutation.cpp
index 6f19941..69192e1 100644
--- a/dwsys/Permutation.cpp
+++ b/dwsys/Permutation.cpp
@@ -1,20 +1,19 @@
 /* Permutation.cpp
  *
- * Copyright (C) 2005-2012 David Weenink
+ * Copyright (C) 2005-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -47,7 +46,7 @@
 #include "oo_DESCRIPTION.h"
 #include "Permutation_def.h"
 
-Thing_implement (Permutation, Data, 0);
+Thing_implement (Permutation, Daata, 0);
 
 static long Permutation_checkRange (Permutation me, long *from, long *to) {
 	if ( (*from < 0 || *from > my numberOfElements) || (*to < 0 || *to > my numberOfElements)) {
@@ -73,7 +72,7 @@ void Permutation_checkInvariant (Permutation me) {
 }
 
 void structPermutation :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of elements: ", numberOfElements);
 }
 
@@ -92,11 +91,11 @@ void Permutation_init (Permutation me, long numberOfElements) {
 	Permutation_sort (me);
 }
 
-Permutation Permutation_create (long numberOfElements) {
+autoPermutation Permutation_create (long numberOfElements) {
 	try {
 		autoPermutation me = Thing_new (Permutation);
-		Permutation_init (me.peek(), numberOfElements);
-		return me.transfer();
+		Permutation_init (me.get(), numberOfElements);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Permulation not created.");
 	}
@@ -150,8 +149,9 @@ void Permutation_swapNumbers (Permutation me, long i1, long i2) {
 
 void Permutation_swapBlocks (Permutation me, long from, long to, long blocksize) {
 	try {
-		if (blocksize < 1 || blocksize > my numberOfElements) Melder_throw
-			(U"Blocksize must be in [1, %d] range.", my numberOfElements / 2);
+		if (blocksize < 1 || blocksize > my numberOfElements) {
+			Melder_throw (U"Blocksize must be in [1, %d] range.", my numberOfElements / 2);
+		}
 		if (from < 0 || from + blocksize - 1 > my numberOfElements || to < 0 || to + blocksize - 1 > my numberOfElements) {
 			Melder_throw (U"Start and finish positions of the two blocks must be in [1,", my numberOfElements, U"] range.");
 		}
@@ -187,17 +187,17 @@ void Permutation_permuteRandomly_inline (Permutation me, long from, long to) {
 	}
 }
 
-Permutation Permutation_permuteRandomly (Permutation me, long from, long to) {
+autoPermutation Permutation_permuteRandomly (Permutation me, long from, long to) {
 	try {
 		autoPermutation thee = Data_copy (me);
-		Permutation_permuteRandomly_inline (thee.peek(), from, to);
-		return thee.transfer();
+		Permutation_permuteRandomly_inline (thee.get(), from, to);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not permuted.");
 	}
 }
 
-Permutation Permutation_rotate (Permutation me, long from, long to, long step) {
+autoPermutation Permutation_rotate (Permutation me, long from, long to, long step) {
 	try {
 		long n = Permutation_checkRange (me, &from, &to);
 		step = (step - 1) % n + 1;
@@ -213,7 +213,7 @@ Permutation Permutation_rotate (Permutation me, long from, long to, long step) {
 			}
 			thy p[ifrom] = my p[i];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not rotated.");
 	}
@@ -227,7 +227,7 @@ void Permutation_swapOneFromRange (Permutation me, long from, long to, long pos,
 			if (n == 1) {
 				Melder_throw (U"Impossible to satisfy \"forbid same\" constraint within the chosen range.");
 			}
-			while ( (newpos = NUMrandomInteger (from, to)) == pos) {
+			while ((newpos = NUMrandomInteger (from, to)) == pos) {
 				;
 			}
 		}
@@ -238,31 +238,29 @@ void Permutation_swapOneFromRange (Permutation me, long from, long to, long pos,
 	}
 }
 
-
-Permutation Permutation_permuteBlocksRandomly (Permutation me, long from, long to, long blocksize,
-        int permuteWithinBlocks, int noDoublets) {
+autoPermutation Permutation_permuteBlocksRandomly (Permutation me, long from, long to, long blocksize, int permuteWithinBlocks, int noDoublets) {
 	try {
 		long n = Permutation_checkRange (me, &from, &to);
 		if (blocksize == 1 || (blocksize >= n && permuteWithinBlocks)) {
 			autoPermutation thee = Permutation_permuteRandomly (me, from, to);
-			return thee.transfer();
+			return thee;
 		}
 		autoPermutation thee = Data_copy (me);
 		if (blocksize >= n) {
-			return thee.transfer();
+			return thee;
 		}
 
 		long nblocks  = n / blocksize, nrest = n % blocksize;
-		if (nrest != 0) Melder_throw (U"It is not possible to fit an integer number of blocks "
-			                              U"in the range.\n(The last block is only of size ", nrest, U").");
-
+		if (nrest != 0) {
+			Melder_throw (U"It is not possible to fit an integer number of blocks in the range.\n(The last block is only of size ", nrest, U").");
+		}
 		autoPermutation pblocks = Permutation_create (nblocks);
 
-		Permutation_permuteRandomly_inline (pblocks.peek(), 1, nblocks);
+		Permutation_permuteRandomly_inline (pblocks.get(), 1, nblocks);
 		long first = from;
 		for (long iblock = 1; iblock <= nblocks; iblock++, first += blocksize) {
 			/* (n1,n2,n3,...) means: move block n1 to position 1 etc... */
-			long blocktomove = Permutation_getValueAtIndex (pblocks.peek(), iblock);
+			long blocktomove = Permutation_getValueAtIndex (pblocks.get(), iblock);
 
 			for (long j = 1; j <= blocksize; j++) {
 				thy p[first - 1 + j] = my p[from - 1 + (blocktomove - 1) * blocksize + j];
@@ -270,60 +268,60 @@ Permutation Permutation_permuteBlocksRandomly (Permutation me, long from, long t
 
 			if (permuteWithinBlocks) {
 				long last = first + blocksize - 1;
-				Permutation_permuteRandomly_inline (thee.peek(), first, last);
+				Permutation_permuteRandomly_inline (thee.get(), first, last);
 				if (noDoublets && iblock > 0 && (thy p[first - 1] % blocksize) == (thy p[first] % blocksize)) {
-					Permutation_swapOneFromRange (thee.peek(), first + 1, last, first, 0);
+					Permutation_swapOneFromRange (thee.get(), first + 1, last, first, 0);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not permuted block randomly.");
 	}
 }
 
-Permutation Permutation_interleave (Permutation me, long from, long to, long blocksize, long offset) {
+autoPermutation Permutation_interleave (Permutation me, long from, long to, long blocksize, long offset) {
 	try {
 		long n = Permutation_checkRange (me, &from, &to);
 		long nblocks = n / blocksize;
 		long nrest = n % blocksize;
-		if (nrest != 0) Melder_throw (U"There is not an integer number of blocks in the range.\n"
-			                              U"(The last block is only of size ", nrest, U" instead of ", blocksize, U").");
+		if (nrest != 0) {
+			Melder_throw (U"There is not an integer number of blocks in the range.\n"
+				U"(The last block is only of size ", nrest, U" instead of ", blocksize, U").");
+		}
 		if (offset >= blocksize) {
 			Melder_throw (U"Offset must be smaller than blocksize.");
 		}
 
 		autoPermutation thee = Data_copy (me);
 
-		if (nblocks == 1) {
-			return thee.transfer();
-		}
-
-		autoNUMvector<long> occupied (1, blocksize);
+		if (nblocks > 1) {
+			autoNUMvector<long> occupied (1, blocksize);
 
-		long posinblock = 1 - offset;
-		for (long i = 1; i <= n; i++) {
-			long index, rblock = (i - 1) % nblocks + 1;
+			long posinblock = 1 - offset;
+			for (long i = 1; i <= n; i++) {
+				long index, rblock = (i - 1) % nblocks + 1;
 
-			posinblock += offset;
-			if (posinblock > blocksize) {
-				posinblock -= blocksize;
-			}
+				posinblock += offset;
+				if (posinblock > blocksize) {
+					posinblock -= blocksize;
+				}
 
-			if (i % nblocks == 1) {
-				long count = blocksize;
-				while (occupied[posinblock] == 1 && count > 0) {
-					posinblock++; count--;
-					if (posinblock > blocksize) {
-						posinblock -= blocksize;
+				if (i % nblocks == 1) {
+					long count = blocksize;
+					while (occupied[posinblock] == 1 && count > 0) {
+						posinblock++; count--;
+						if (posinblock > blocksize) {
+							posinblock -= blocksize;
+						}
 					}
+					occupied[posinblock] = 1;
 				}
-				occupied[posinblock] = 1;
+				index = from - 1 + (rblock - 1) * blocksize + posinblock;
+				thy p[from - 1 + i] = my p[index];
 			}
-			index = from - 1 + (rblock - 1) * blocksize + posinblock;
-			thy p[from - 1 + i] = my p[index];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not interleaved.");
 	}
@@ -342,26 +340,26 @@ long Permutation_getIndexAtValue (Permutation me, long value) {
 	return -1;
 }
 
-Permutation Permutation_invert (Permutation me) {
+autoPermutation Permutation_invert (Permutation me) {
 	try {
 		autoPermutation thee = Data_copy (me);
 		for (long i = 1; i <= my numberOfElements; i++) {
 			thy p[my p[i]] = i;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not inverted.");
 	}
 }
 
-Permutation Permutation_reverse (Permutation me, long from, long to) {
+autoPermutation Permutation_reverse (Permutation me, long from, long to) {
 	try {
 		long n = Permutation_checkRange (me, &from, &to);
 		autoPermutation thee = Data_copy (me);
 		for (long i = 1; i <= n; i++) {
 			thy p[from + i - 1] = my p[to - i + 1];
 		}
-		return thee.transfer();
+		return thee;
 
 	} catch (MelderError) {
 		Melder_throw (me, U": not reversed.");
@@ -381,25 +379,25 @@ void Permutation_next_inline (Permutation me) {
 
 	long i = size - 2;
 
-	while ( (p[i] > p[i + 1]) && (i != 0)) {
+	while ((p[i] > p[i + 1]) && (i != 0)) {
 		i--;
 	}
 
-	if ( (i == 0) && (p[0] > p[1])) {
+	if ((i == 0) && (p[0] > p[1])) {
 		Melder_throw (U"No next.");
 	}
 
 	long k = i + 1;
 
 	for (long j = i + 2; j < size; j++) {
-		if ( (p[j] > p[i]) && (p[j] < p[k])) {
+		if ((p[j] > p[i]) && (p[j] < p[k])) {
 			k = j;
 		}
 	}
 
 	long tmp = p[i]; p[i] = p[k]; p[k] = tmp;
 
-	for (long j = i + 1; j <= ( (size + i) / 2); j++) {
+	for (long j = i + 1; j <= (size + i) / 2; j++) {
 		tmp = p[j];
 		p[j] = p[size + i - j];
 		p[size + i - j] = tmp;
@@ -409,7 +407,6 @@ void Permutation_next_inline (Permutation me) {
 /* Replaces p with the previous permutation (in the standard lexicographical ordering.
    Adapted from the GSL library
 */
-
 void Permutation_previous_inline (Permutation me) {
 	long size = my numberOfElements;
 	long *p = & my p[1];
@@ -420,18 +417,18 @@ void Permutation_previous_inline (Permutation me) {
 
 	long i = size - 2;
 
-	while ( (p[i] < p[i + 1]) && (i != 0)) {
+	while ((p[i] < p[i + 1]) && (i != 0)) {
 		i--;
 	}
 
-	if ( (i == 0) && (p[0] < p[1])) {
+	if ((i == 0) && (p[0] < p[1])) {
 		Melder_throw (U"No previous");
 	}
 
 	long k = i + 1;
 
 	for (long j = i + 2; j < size; j++) {
-		if ( (p[j] < p[i]) && (p[j] > p[k])) {
+		if ((p[j] < p[i]) && (p[j] > p[k])) {
 			k = j;
 		}
 	}
@@ -445,7 +442,7 @@ void Permutation_previous_inline (Permutation me) {
 	}
 }
 
-Permutation Permutations_multiply2 (Permutation me, Permutation thee) {
+autoPermutation Permutations_multiply2 (Permutation me, Permutation thee) {
 	try {
 		if (my numberOfElements != thy numberOfElements) {
 			Melder_throw (U"Number of elements must be equal.");
@@ -454,22 +451,22 @@ Permutation Permutations_multiply2 (Permutation me, Permutation thee) {
 		for (long i = 1; i <= my numberOfElements; i++) {
 			his p[i] = my p[thy p[i]];
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U" not multiplied.");
 	}
 }
 
-Permutation Permutations_multiply (Collection me) {
+autoPermutation Permutations_multiply (OrderedOf<structPermutation>* me) {
 	try {
 		if (my size < 2) {
 			Melder_throw (U"There must be at least 2 Permutations in the set.");
 		}
-		autoPermutation thee = Permutations_multiply2 ( (Permutation) my item[1], (Permutation) my item[2]);
-		for (long i = 3; i <= my size; i++) {
-			thee.reset (Permutations_multiply2 (thee.peek(), (Permutation) my item[i]));
+		autoPermutation thee = Permutations_multiply2 (my at [1], my at [2]);
+		for (long i = 3; i <= my size; i ++) {
+			thee = Permutations_multiply2 (thee.get(), my at [i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Permutations not multiplied.");
 	}
diff --git a/dwsys/Permutation.h b/dwsys/Permutation.h
index 41d8bad..6da581d 100644
--- a/dwsys/Permutation.h
+++ b/dwsys/Permutation.h
@@ -2,36 +2,33 @@
 #define _Permutation_h_
 /* Permutation.h
  *
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 
 #include "Permutation_def.h"
-oo_CLASS_CREATE (Permutation, Data);
 
 /*
 	Class invariant: any permutation equals the identity permutation after all its elements are sorted ascendingly.
 */
 
-
 void Permutation_init (Permutation me, long numberOfElements);
 
-Permutation Permutation_create (long numberOfElements);
+autoPermutation Permutation_create (long numberOfElements);
 /*
 	Create the Permutation data structure and fill
 		with the identical permutation (1,2,..n)
@@ -46,10 +43,10 @@ void Permutation_sort (Permutation me);
 
 void Permutation_permuteRandomly_inline (Permutation me, long from, long to);
 
-Permutation Permutation_permuteRandomly (Permutation me, long from, long to);
+autoPermutation Permutation_permuteRandomly (Permutation me, long from, long to);
 /* Generate a new sequence by permuting the elements from..to */
 
-Permutation Permutation_rotate (Permutation me, long from, long to, long step);
+autoPermutation Permutation_rotate (Permutation me, long from, long to, long step);
 
 void Permutation_swapOneFromRange (Permutation me, long from, long to, long pos, int forbidsame);
 /* Swap item at pos with one randomly chosen in interval [from,to]. If pos in [from,to]
@@ -59,11 +56,12 @@ void Permutation_swapBlocks (Permutation me, long from, long to, long blocksize)
 /* Swap two blocks */
 
 void Permutation_swapPositions (Permutation me, long i1, long i2);
+
 void Permutation_swapNumbers (Permutation me, long i1, long i2);
-Permutation Permutation_interleave (Permutation me, long from, long to, long blocksize, long offset);
 
-Permutation Permutation_permuteBlocksRandomly (Permutation me, long from, long to, long blocksize,
-	int permuteWithinBlocks, int noDoublets);
+autoPermutation Permutation_interleave (Permutation me, long from, long to, long blocksize, long offset);
+
+autoPermutation Permutation_permuteBlocksRandomly (Permutation me, long from, long to, long blocksize, int permuteWithinBlocks, int noDoublets);
 /* Permute blocks of size blocksize randomly. If permuteWithinBlocks=true and noDoublets=true forbid that the last
 	number in a block and the first number in the following block are 'equal modulo blocksize'. */
 
@@ -73,16 +71,18 @@ long Permutation_getValueAtIndex (Permutation me, long i);
 long Permutation_getIndexAtValue (Permutation me, long value);
 /* Find i for which p[i] = value */
 
-Permutation Permutation_invert (Permutation me);
+autoPermutation Permutation_invert (Permutation me);
 /*  */
 
-Permutation Permutation_reverse (Permutation me, long from, long to);
+autoPermutation Permutation_reverse (Permutation me, long from, long to);
 /* (n1,n2,...nn) to (nn,...n2,n1) */
 
 void Permutation_next_inline (Permutation me);
+
 void Permutation_previous_inline (Permutation me);
 
-Permutation Permutations_multiply2 (Permutation me, Permutation thee);
-Permutation Permutations_multiply (Collection me);
+autoPermutation Permutations_multiply2 (Permutation me, Permutation thee);
+
+autoPermutation Permutations_multiply (OrderedOf<structPermutation>* me);
 
 #endif /* _Permutation_h_ */
diff --git a/dwsys/Permutation_and_Index.cpp b/dwsys/Permutation_and_Index.cpp
index 847b535..1e1b3bf 100644
--- a/dwsys/Permutation_and_Index.cpp
+++ b/dwsys/Permutation_and_Index.cpp
@@ -1,20 +1,19 @@
 /* Permutation_and_Index.cpp
  *
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,14 +24,14 @@
 
 #include "Permutation_and_Index.h"
 
-Permutation Index_to_Permutation_permuteRandomly (Index me, int permuteWithinClasses) {
+autoPermutation Index_to_Permutation_permuteRandomly (Index me, int permuteWithinClasses) {
 	try {
-		long numberOfClasses = my classes -> size;
+		long numberOfClasses = my classes->size;
 
 		autoPermutation thee = Permutation_create (my numberOfElements);
 		autoPermutation classes = Permutation_create (numberOfClasses);
-		Permutation_permuteRandomly_inline (classes.peek(), 0, 0);
-		autoPermutation classesinv = Permutation_invert (classes.peek());
+		Permutation_permuteRandomly_inline (classes.get(), 0, 0);
+		autoPermutation classesinv = Permutation_invert (classes.get());
 		autoNUMmatrix<long> indices (0, numberOfClasses, 1, 4);
 
 		for (long i = 1; i <= my numberOfElements; i++) {
@@ -57,11 +56,11 @@ Permutation Index_to_Permutation_permuteRandomly (Index me, int permuteWithinCla
 				long from = indices[i][3] + 1;
 				long to = from + indices[i][2] - 1;
 				if (to > from) {
-					Permutation_permuteRandomly_inline (thee.peek(), from, to);
+					Permutation_permuteRandomly_inline (thee.get(), from, to);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Permutation not created.");
 	}
diff --git a/dwsys/Permutation_and_Index.h b/dwsys/Permutation_and_Index.h
index 9f1eac8..ceacf34 100644
--- a/dwsys/Permutation_and_Index.h
+++ b/dwsys/Permutation_and_Index.h
@@ -3,21 +3,20 @@
 
 /* Permutation_and_Index.h
  *
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,6 +26,6 @@
 #include "Permutation.h"
 #include "Index.h"
 
-Permutation Index_to_Permutation_permuteRandomly (Index me, int permuteWithinClass);
+autoPermutation Index_to_Permutation_permuteRandomly (Index me, int permuteWithinClass);
 
 #endif /* _Permutation_and_Index_h_ */
diff --git a/dwsys/Permutation_def.h b/dwsys/Permutation_def.h
index 5b85adf..bd6cf1d 100644
--- a/dwsys/Permutation_def.h
+++ b/dwsys/Permutation_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 2005-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Permutation
-oo_DEFINE_CLASS (Permutation, Data)
+oo_DEFINE_CLASS (Permutation, Daata)
 
 	oo_LONG (numberOfElements)
 	oo_LONG_VECTOR (p, numberOfElements)
diff --git a/dwsys/SVD.cpp b/dwsys/SVD.cpp
index 6730b37..c0a8c52 100644
--- a/dwsys/SVD.cpp
+++ b/dwsys/SVD.cpp
@@ -1,20 +1,19 @@
 /* SVD.cpp
  *
- * Copyright (C) 1994-2014 David Weenink
+ * Copyright (C) 1994-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -68,7 +67,7 @@ void structSVD :: v_info () {
 	MelderInfo_writeLine (U"Number of columns: ", numberOfColumns);
 }
 
-Thing_implement (SVD, Data, 0);
+Thing_implement (SVD, Daata, 0);
 
 static void NUMtranspose_d (double **m, long n);
 
@@ -87,8 +86,7 @@ static void SVD_transpose (SVD me) {
 	m >=n, mxn matrix A has svd UDV', where u is mxn, D is n and V is nxn.
 	m < n, mxn matrix A. Consider A' with svd (UDV')'= VDU', where v is mxm, D is m and U' is mxn
 */
-void SVD_init (I, long numberOfRows, long numberOfColumns) {
-	iam (SVD);
+void SVD_init (SVD me, long numberOfRows, long numberOfColumns) {
 	long mn_min = MIN (numberOfRows, numberOfColumns);
 	my numberOfRows = numberOfRows;
 	my numberOfColumns = numberOfColumns;
@@ -101,31 +99,31 @@ void SVD_init (I, long numberOfRows, long numberOfColumns) {
 	my d = NUMvector<double> (1, mn_min);
 }
 
-SVD SVD_create (long numberOfRows, long numberOfColumns) {
+autoSVD SVD_create (long numberOfRows, long numberOfColumns) {
 	try {
 		autoSVD me = Thing_new (SVD);
-		SVD_init (me.peek(), numberOfRows, numberOfColumns);
-		return me.transfer();
+		SVD_init (me.get(), numberOfRows, numberOfColumns);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SVD not created.");
 	}
 }
 
-SVD SVD_create_d (double **m, long numberOfRows, long numberOfColumns) {
+autoSVD SVD_create_d (double **m, long numberOfRows, long numberOfColumns) {
 	try {
 		autoSVD me = SVD_create (numberOfRows, numberOfColumns);
-		SVD_svd_d (me.peek(), m);
-		return me.transfer();
+		SVD_svd_d (me.get(), m);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SVD not created from vector.");
 	}
 }
 
-SVD SVD_create_f (float **m, long numberOfRows, long numberOfColumns) {
+autoSVD SVD_create_f (float **m, long numberOfRows, long numberOfColumns) {
 	try {
 		autoSVD me = SVD_create (numberOfRows, numberOfColumns);
-		SVD_svd_f (me.peek(), m);
-		return me.transfer();
+		SVD_svd_f (me.get(), m);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SVD not created from vector.");
 	}
@@ -133,14 +131,14 @@ SVD SVD_create_f (float **m, long numberOfRows, long numberOfColumns) {
 
 void SVD_svd_d (SVD me, double **m) {
 	if (my numberOfRows >= my numberOfColumns) {
-		/* Store m in u */
+		// Store m in u
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				my u[i][j] = m[i][j];
 			}
 		}
 	} else {
-		/* Store m transposed in v */
+		// Store m transposed in v
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				my v[j][i] = m[i][j];
@@ -152,14 +150,14 @@ void SVD_svd_d (SVD me, double **m) {
 
 void SVD_svd_f (SVD me, float **m) {
 	if (my numberOfRows >= my numberOfColumns) {
-		/* Store in u */
+		// Store in u
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				my u[j][i] = m[i][j];
 			}
 		}
 	} else {
-		/* Store transposed in v */
+		// Store transposed in v
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				my v[i][j] = m[j][i];
@@ -210,7 +208,7 @@ void SVD_compute (SVD me) {
 		double wt[2];
 		int transpose = my numberOfRows < my numberOfColumns;
 
-		/* transpose: if rows < cols then data in v */
+		// Transpose: if rows < cols then data in v
 		if (transpose) {
 			SVD_transpose (me);
 		}
@@ -218,8 +216,7 @@ void SVD_compute (SVD me) {
 		lda = ldu = ldvt = m = my numberOfColumns;
 		long n = my numberOfRows;
 
-		(void) NUMlapack_dgesvd (&jobu, &jobvt, &m, &n, &my u[1][1], &lda, &my d[1], &my v[1][1], &ldu,
-		                         NULL, &ldvt, wt, &lwork, &info);
+		(void) NUMlapack_dgesvd (&jobu, &jobvt, &m, &n, &my u[1][1], &lda, &my d[1], &my v[1][1], &ldu, nullptr, &ldvt, wt, &lwork, &info);
 
 		if (info != 0) {
 			Melder_throw (U"SVD not precomputed.");
@@ -227,8 +224,7 @@ void SVD_compute (SVD me) {
 
 		lwork = wt[0];
 		autoNUMvector<double> work (0L, lwork);
-		(void) NUMlapack_dgesvd (&jobu, &jobvt, &m, &n, &my u[1][1], &lda, &my d[1], &my v[1][1], &ldu,
-		                         NULL, &ldvt, work.peek(), &lwork, &info);
+		(void) NUMlapack_dgesvd (&jobu, &jobvt, &m, &n, &my u[1][1], &lda, &my d[1], &my v[1][1], &ldu, nullptr, &ldvt, work.peek(), &lwork, &info);
 		if (info != 0) {
 			Melder_throw (U"SVD not computed.");
 		}
@@ -246,11 +242,11 @@ void SVD_compute (SVD me) {
 void SVD_getSquared (SVD me, double **m, bool inverse) {
 	for (long i = 1; i <= my numberOfColumns; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			double val = 0;
+			double val = 0.0;
 			for (long k = 1; k <= my numberOfColumns; k++) {
-				if (my d[k] > 0) {
+				if (my d[k] > 0.0) {
 					double dsq = my d[k] * my d[k];
-					double factor = inverse ? 1 / dsq : dsq;
+					double factor = inverse ? 1.0 / dsq : dsq;
 					val += my v[i][k] * my v[j][k] * factor;
 				}
 			}
@@ -269,8 +265,8 @@ void SVD_solve (SVD me, double b[], double x[]) {
 			Solution: x = V D^-1 U' b */
 
 		for (long j = 1; j <= mn_min; j++) {
-			double tmp = 0;
-			if (my d[j] > 0) {
+			double tmp = 0.0;
+			if (my d[j] > 0.0) {
 				for (long i = 1; i <= my numberOfRows; i++) {
 					tmp += my u[i][j] * b[i];
 				}
@@ -280,7 +276,7 @@ void SVD_solve (SVD me, double b[], double x[]) {
 		}
 
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			double tmp = 0;
+			double tmp = 0.0;
 			for (long i = 1; i <= mn_min; i++) {
 				tmp += my v[j][i] * t[i];
 			}
@@ -318,7 +314,7 @@ long SVD_zeroSmallSingularValues (SVD me, double tolerance) {
 	long numberOfZeroed = 0, mn_min = MIN (my numberOfRows, my numberOfColumns);
 	double dmax = my d[1];
 
-	if (tolerance == 0) {
+	if (tolerance == 0.0) {
 		tolerance = my tolerance;
 	}
 	for (long i = 2; i <= mn_min; i++) {
@@ -328,7 +324,7 @@ long SVD_zeroSmallSingularValues (SVD me, double tolerance) {
 	}
 	for (long i = 1; i <= mn_min; i++) {
 		if (my d[i] < dmax * tolerance) {
-			my d[i] = 0; numberOfZeroed++;
+			my d[i] = 0.0; numberOfZeroed++;
 		}
 	}
 	return numberOfZeroed;
@@ -338,7 +334,7 @@ long SVD_zeroSmallSingularValues (SVD me, double tolerance) {
 long SVD_getRank (SVD me) {
 	long rank = 0, mn_min = MIN (my numberOfRows, my numberOfColumns);
 	for (long i = 1; i <= mn_min; i++) {
-		if (my d[i] > 0) {
+		if (my d[i] > 0.0) {
 			rank++;
 		}
 	}
@@ -365,7 +361,7 @@ void SVD_synthesize (SVD me, long sv_from, long sv_to, double **m) {
 
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
-				m[i][j] = 0;
+				m[i][j] = 0.0;
 			}
 		}
 
@@ -381,13 +377,13 @@ void SVD_synthesize (SVD me, long sv_from, long sv_to, double **m) {
 	}
 }
 
-Thing_implement (GSVD, Data, 0);
+Thing_implement (GSVD, Daata, 0);
 
 void structGSVD :: v_info () {
 	MelderInfo_writeLine (U"Number of columns: ", numberOfColumns);
 }
 
-GSVD GSVD_create (long numberOfColumns) {
+autoGSVD GSVD_create (long numberOfColumns) {
 	try {
 		autoGSVD me = Thing_new (GSVD);
 		my numberOfColumns = numberOfColumns;
@@ -396,13 +392,13 @@ GSVD GSVD_create (long numberOfColumns) {
 		my r = NUMmatrix<double> (1, numberOfColumns, 1, numberOfColumns);
 		my d1 = NUMvector<double> (1, numberOfColumns);
 		my d2 = NUMvector<double> (1, numberOfColumns);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"GSVD not created.");
 	}
 }
 
-GSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns, double **m2, long numberOfRows2) {
+autoGSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns, double **m2, long numberOfRows2) {
 	try {
 		long m = numberOfRows1, n = numberOfColumns, p = numberOfRows2;
 		long lwork = MAX (MAX (3 * n, m), p) + n;
@@ -420,8 +416,8 @@ GSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns, doubl
 		char jobu1 = 'N', jobu2 = 'N', jobq = 'Q';
 		long k, l, info;
 		NUMlapack_dggsvd (&jobu1, &jobu2, &jobq, &m, &n, &p, &k, &l,
-		    &a[1][1], &m, &b[1][1], &p, &alpha[1], &beta[1], NULL, &m,
-		    NULL, &p, &q[1][1], &n, &work[1], &iwork[1], &info);
+		    &a[1][1], &m, &b[1][1], &p, &alpha[1], &beta[1], nullptr, &m,
+		    nullptr, &p, &q[1][1], &n, &work[1], &iwork[1], &info);
 		if (info != 0) {
 			Melder_throw (U"dggsvd failed, error = ", info);
 		}
@@ -453,7 +449,7 @@ GSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns, doubl
 				my r[i][j] = pr[i - 1 + (n - kl + j - 1) * m]; /* from col-major */
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"GSVD not created.");
 	}
diff --git a/dwsys/SVD.h b/dwsys/SVD.h
index 119cd13..0d553bd 100644
--- a/dwsys/SVD.h
+++ b/dwsys/SVD.h
@@ -1,20 +1,19 @@
 /* SVD.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,26 +27,24 @@
 #include "Data.h"
 
 #include "SVD_def.h"
-oo_CLASS_CREATE (SVD, Data);
 
-#define GSVD__methods(klas) Data__methods(klas)
-oo_CLASS_CREATE (GSVD, Data);
+void SVD_init (SVD me, long numberOfRows, long numberOfColumns);
 
-void SVD_init (I, long numberOfRows, long numberOfColumns);
-
-SVD SVD_create (long numberOfRows, long numberOfColumns);
+autoSVD SVD_create (long numberOfRows, long numberOfColumns);
 /*
 	my tolerance = eps * MAX (numberOfRows, numberOfColumns)
 	where eps is the floating point precision, approximately 2.2e-16
 */
 
-SVD SVD_create_d (double **m, long numberOfRows, long numberOfColumns);
-SVD SVD_create_f (float **m, long numberOfRows, long numberOfColumns);
+autoSVD SVD_create_d (double **m, long numberOfRows, long numberOfColumns);
+
+autoSVD SVD_create_f (float **m, long numberOfRows, long numberOfColumns);
 /*
 	Copy matrix into svd->u and calculate U D V'
 */
 
 void SVD_svd_d (SVD me, double **m);
+
 void SVD_svd_f (SVD me, float **m);
 /*
 	Perform SVD analysis on matrix M, i.e., decompose M as M = UDV'.
@@ -65,6 +62,7 @@ void SVD_sort (SVD me);
 */
 
 void SVD_setTolerance (SVD me, double tolerance);
+
 double SVD_getTolerance (SVD me);
 
 long SVD_zeroSmallSingularValues (SVD me, double tolerance);
@@ -88,10 +86,9 @@ void SVD_getSquared (SVD me, double **m, bool inverse);
 
 long SVD_getRank (SVD me);
 
-GSVD GSVD_create (long numberOfColumns);
+autoGSVD GSVD_create (long numberOfColumns);
 
-GSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns,
-	double **m2, long numberOfRows2);
+autoGSVD GSVD_create_d (double **m1, long numberOfRows1, long numberOfColumns, double **m2, long numberOfRows2);
 
 void GSVD_setTolerance (GSVD me, double tolerance);
 
diff --git a/dwsys/SVD_def.h b/dwsys/SVD_def.h
index d52bbce..1f9a8b6 100644
--- a/dwsys/SVD_def.h
+++ b/dwsys/SVD_def.h
@@ -2,23 +2,22 @@
  *
  * Copyright (C) 1994-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT SVD
-oo_DEFINE_CLASS (SVD, Data)
+oo_DEFINE_CLASS (SVD, Daata)
 
 	oo_DOUBLE (tolerance)
 	oo_LONG (numberOfRows)
@@ -37,7 +36,7 @@ oo_END_CLASS (SVD)
 
 
 #define ooSTRUCT GSVD
-oo_DEFINE_CLASS (GSVD, Data)
+oo_DEFINE_CLASS (GSVD, Daata)
 
 	oo_DOUBLE (tolerance)
 	oo_LONG (numberOfColumns)
diff --git a/dwsys/SimpleVector.cpp b/dwsys/SimpleVector.cpp
index 571f5ce..05baf34 100644
--- a/dwsys/SimpleVector.cpp
+++ b/dwsys/SimpleVector.cpp
@@ -1,20 +1,19 @@
 /* SimpleVector.cpp
  *
- * Copyright (C) 1994-2012 David Weenink
+ * Copyright (C) 1994-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -43,37 +42,35 @@
 #include "oo_DESCRIPTION.h"
 #include "SimpleVector_def.h"
 
-Thing_implement (DoubleVector, Data, 0);
+Thing_implement (DoubleVector, Daata, 0);
 
-void DoubleVector_init (I, long min, long max) {
-	iam (DoubleVector);
+void DoubleVector_init (DoubleVector me, long min, long max) {
 	my min = min; my max = max;
 	my v = NUMvector<double> (min, max);
 }
 
-DoubleVector DoubleVector_create (long min, long max) {
+autoDoubleVector DoubleVector_create (long min, long max) {
 	try {
 		autoDoubleVector me = Thing_new (DoubleVector);
-		DoubleVector_init (me.peek(), min, max);
-		return me.transfer();
+		DoubleVector_init (me.get(), min, max);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"DoubleVector not created.");
 	}
 }
 
-Thing_implement (ComplexVector, Data, 0);
+Thing_implement (ComplexVector, Daata, 0);
 
-void ComplexVector_init (I, long min, long max) {
-	iam (ComplexVector);
+void ComplexVector_init (ComplexVector me, long min, long max) {
 	my min = min; my max = max;
 	my v = NUMvector<dcomplex> (min, max);
 }
 
-ComplexVector ComplexVector_create (long min, long max) {
+autoComplexVector ComplexVector_create (long min, long max) {
 	try {
 		autoComplexVector me = Thing_new (ComplexVector);
-		ComplexVector_init (me.peek(), min, max);
-		return me.transfer();
+		ComplexVector_init (me.get(), min, max);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ComplexVector not created.");
 	}
diff --git a/dwsys/SimpleVector.h b/dwsys/SimpleVector.h
index 4e9d5c5..1bdb4c4 100644
--- a/dwsys/SimpleVector.h
+++ b/dwsys/SimpleVector.h
@@ -2,33 +2,32 @@
 #define _SimpleVector_h_
 /* SimpleVector.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
 #include "SimpleVector_def.h"
-oo_CLASS_CREATE (DoubleVector, Data);
-oo_CLASS_CREATE (ComplexVector, Data);
 
-void DoubleVector_init (I, long min, long max);
-DoubleVector DoubleVector_create (long min, long max);
+void DoubleVector_init (DoubleVector me, long min, long max);
 
-void ComplexVector_init (I, long min, long max);
-ComplexVector ComplexVector_create (long min, long max);
+autoDoubleVector DoubleVector_create (long min, long max);
+
+void ComplexVector_init (ComplexVector me, long min, long max);
+
+autoComplexVector ComplexVector_create (long min, long max);
 
 #endif /* _SimpleVector_h_ */
diff --git a/dwsys/SimpleVector_def.h b/dwsys/SimpleVector_def.h
index a8738a0..4f24125 100644
--- a/dwsys/SimpleVector_def.h
+++ b/dwsys/SimpleVector_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -22,7 +21,7 @@
 */
 
 #define ooSTRUCT DoubleVector
-oo_DEFINE_CLASS (DoubleVector, Data)
+oo_DEFINE_CLASS (DoubleVector, Daata)
 
 	oo_LONG (min)
 	oo_LONG (max)
@@ -32,7 +31,7 @@ oo_END_CLASS (DoubleVector)
 #undef ooSTRUCT
 
 #define ooSTRUCT ComplexVector
-oo_DEFINE_CLASS (ComplexVector, Data)
+oo_DEFINE_CLASS (ComplexVector, Daata)
 
 	oo_LONG (min)
 	oo_LONG (max)
diff --git a/dwsys/Simple_extensions.cpp b/dwsys/Simple_extensions.cpp
index ffcdeca..13de279 100644
--- a/dwsys/Simple_extensions.cpp
+++ b/dwsys/Simple_extensions.cpp
@@ -1,20 +1,19 @@
 /* Simple_extensions.cpp
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,10 +28,6 @@ void SimpleString_init (SimpleString me, const char32 *string) {
 	my string = Melder_dup (string);
 }
 
-int SimpleString_compare (SimpleString me, SimpleString thee) {
-	return str32cmp (my string, thy string);
-}
-
 const char32 *SimpleString_c (SimpleString me) {
 	return my string;
 }
@@ -42,7 +37,7 @@ void SimpleString_append (SimpleString me, SimpleString thee) {
 }
 
 void SimpleString_append_c (SimpleString me, const char32 *str) {
-	if (str == 0) {
+	if (! str) {
 		return;
 	}
 	long myLength = str32len (my string);
@@ -50,16 +45,16 @@ void SimpleString_append_c (SimpleString me, const char32 *str) {
 	str32cpy (& my string[myLength], str);
 }
 
-SimpleString SimpleString_concat (SimpleString me, SimpleString thee) {
+autoSimpleString SimpleString_concat (SimpleString me, SimpleString thee) {
 	autoSimpleString him = Data_copy (me);
-	SimpleString_append_c (him.peek(), thy string);
-	return him.transfer();
+	SimpleString_append_c (him.get(), thy string);
+	return him;
 }
 
-SimpleString SimpleString_concat_c (SimpleString me, const char32 *str) {
+autoSimpleString SimpleString_concat_c (SimpleString me, const char32 *str) {
 	autoSimpleString him = Data_copy (me);
-	SimpleString_append_c (him.peek(), str);
-	return him.transfer();
+	SimpleString_append_c (him.get(), str);
+	return him;
 }
 
 void SimpleString_replace_c (SimpleString me, const char32 *str) {
diff --git a/dwsys/Simple_extensions.h b/dwsys/Simple_extensions.h
index 2a75a67..6dbd13c 100644
--- a/dwsys/Simple_extensions.h
+++ b/dwsys/Simple_extensions.h
@@ -2,21 +2,20 @@
 #define _Simple_extensions_h_
 /* Simple_extensions.h
  *
- * Copyright (C) 1994-2011 David Weenink
+ * Copyright (C) 1994-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,19 +28,17 @@
 #include "Simple.h"
 
 void SimpleString_init (SimpleString me, const char32 *value);
-/* return 0 when value == NULL */
+/* return 0 when value == nullptr */
 
 const char32 *SimpleString_c (SimpleString me);
 /* return pointer to the string */
 
-int SimpleString_compare (SimpleString me, SimpleString thee);
-
 void SimpleString_append (SimpleString me, SimpleString thee);
 void SimpleString_append_c (SimpleString me, const char32 *str);
 /* append string to me */
 
-SimpleString SimpleString_concat (SimpleString me, SimpleString thee);
-SimpleString SimpleString_concat_c (SimpleString me, const char32 *str);
+autoSimpleString SimpleString_concat (SimpleString me, SimpleString thee);
+autoSimpleString SimpleString_concat_c (SimpleString me, const char32 *str);
 /* concatenate two strings */
 
 void SimpleString_replace_c (SimpleString me, const char32 *replacement);
diff --git a/dwsys/regularExp.cpp b/dwsys/regularExp.cpp
index f7c98a6..f38d767 100644
--- a/dwsys/regularExp.cpp
+++ b/dwsys/regularExp.cpp
@@ -520,7 +520,7 @@ static char32 *piece (int *flag_param, len_range *range_param);
 static void tail (char32 *search_from, char32 *point_t);
 static char32 *shortcut_escape (char32 c, int *flag_param, int emit);
 
-static int             init_ansi_classes (void);
+static int             init_ansi_classes ();
 
 /*----------------------------------------------------------------------*
  * CompileRE
@@ -2952,7 +2952,7 @@ SINGLE_RETURN: if (Brace) {
  *
  *--------------------------------------------------------------------*/
 
-static int init_ansi_classes (void) {
+static int init_ansi_classes () {
 
 	static int initialized = 0;
 	static int underscore = (int) '_';
@@ -3720,7 +3720,7 @@ static int match (char32 *prog, int *branch_index_param) {
 			case LOOK_BEHIND_CLOSE:
 				MATCH_RETURN (1);  /* We have reached the end of the look-ahead or
 	                    look-behind which implies that we matched it,
-			    so return TRUE. */
+			    so return `true`. */
 			default:
 				if ( (GET_OP_CODE (scan) > OPEN) &&
 				        (GET_OP_CODE (scan) < OPEN + NSUBEXP)) {
diff --git a/dwtest/pols_50males_format0.Discriminant b/dwtest/pols_50males_format0.Discriminant
new file mode 100644
index 0000000..b2ac059
--- /dev/null
+++ b/dwtest/pols_50males_format0.Discriminant
@@ -0,0 +1,389 @@
+File type = "ooTextFile"
+Object class = "Discriminant"
+
+numberOfEigenvalues = 3 
+dimension = 3 
+eigenvalues []: 
+    eigenvalues [1] = 21.139001553325844 
+    eigenvalues [2] = 4.355295817120748 
+    eigenvalues [3] = 0.6828853876561858 
+eigenvectors [] []: 
+    eigenvectors [1]:
+        eigenvectors [1] [1] = -0.4968246733001902 
+        eigenvectors [1] [2] = 0.7929232798703864 
+        eigenvectors [1] [3] = -0.35275758849349803 
+    eigenvectors [2]:
+        eigenvectors [2] [1] = 0.8675540972437397 
+        eigenvectors [2] [2] = 0.46440535560029494 
+        eigenvectors [2] [3] = -0.17798189246483306 
+    eigenvectors [3]:
+        eigenvectors [3] [1] = -0.022696527394271637 
+        eigenvectors [3] [2] = 0.39446208680854555 
+        eigenvectors [3] [3] = 0.9186318793264734 
+numberOfGroups = 12 
+groups? <exists> 
+size = 12 
+item []: 
+    item [1]:
+        class = "SSCP" 
+        name = "\as" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.1371322072880503	0.06507801179217895	-0.011074735561417193
+row [2]: "F2"	0.06507801179217895	0.07640416821463858	-0.0019956280460737305
+row [3]: "F3"	-0.011074735561417193	-0.0019956280460737305	0.04095240135530774
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.829041821512515 
+            centroid [2] = 3.0200046382498926 
+            centroid [3] = 3.4171619939756255 
+    item [2]:
+        class = "SSCP" 
+        name = "\ct" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.09067302012389811	0.03716882530705852	0.010895111765093148
+row [2]: "F2"	0.03716882530705852	0.06623815158562135	-0.008040088713702414
+row [3]: "F3"	0.010895111765093148	-0.008040088713702414	0.047514137896571926
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.7164753792040868 
+            centroid [2] = 2.9358032337839095 
+            centroid [3] = 3.428957254834133 
+    item [3]:
+        class = "SSCP" 
+        name = "\ep" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.12325126739884948	0.007977535637010664	0.014713593912108792
+row [2]: "F2"	0.007977535637010664	0.08256097042007325	0.05045318851511985
+row [3]: "F3"	0.014713593912108792	0.05045318851511985	0.07438879619774624
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.763135965884448 
+            centroid [2] = 3.2349692064700704 
+            centroid [3] = 3.391162711212973 
+    item [4]:
+        class = "SSCP" 
+        name = "\ic" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.17647612299370122	-0.02063302628174945	-0.005697855587989537
+row [2]: "F2"	-0.02063302628174945	0.07460647712948608	0.049614643436171904
+row [3]: "F3"	-0.005697855587989537	0.049614643436171904	0.05109063361148622
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.585018518814506 
+            centroid [2] = 3.3000373347537915 
+            centroid [3] = 3.408994217433088 
+    item [5]:
+        class = "SSCP" 
+        name = "\o/" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.09908822912163297	0.015541819671631943	0.013775375020258235
+row [2]: "F2"	0.015541819671631943	0.056684926460000895	0.025520496405190735
+row [3]: "F3"	0.013775375020258235	0.025520496405190735	0.03527931367299332
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.643922974695668 
+            centroid [2] = 3.174039321160438 
+            centroid [3] = 3.353368431962918 
+    item [6]:
+        class = "SSCP" 
+        name = "\yc" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.11604848853561119	0.004638097797573026	0.014234726305389083
+row [2]: "F2"	0.004638097797573026	0.08910829880242509	0.05772847540761414
+row [3]: "F3"	0.014234726305389083	0.05772847540761414	0.059535232541858635
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.638814682287954 
+            centroid [2] = 3.1732312476628675 
+            centroid [3] = 3.3702977370451324 
+    item [7]:
+        class = "SSCP" 
+        name = "a" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.13373820303933756	0.043918895913021325	0.009483926777506332
+row [2]: "F2"	0.043918895913021325	0.07185378889695229	0.017946300429884602
+row [3]: "F3"	0.009483926777506332	0.017946300429884602	0.056974025547855855
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.8971834611872826 
+            centroid [2] = 3.1126947721089406 
+            centroid [3] = 3.407776548856642 
+    item [8]:
+        class = "SSCP" 
+        name = "e" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.16197482567602983	0.002298374666522604	0.012604046776579057
+row [2]: "F2"	0.002298374666522604	0.061562730940411266	0.04116004354455001
+row [3]: "F3"	0.012604046776579057	0.04116004354455001	0.043223685110515324
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.606165152281404 
+            centroid [2] = 3.3033427054078994 
+            centroid [3] = 3.406164846453073 
+    item [9]:
+        class = "SSCP" 
+        name = "i" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.15428266876841684	0.013276386826015094	0.012320309785365528
+row [2]: "F2"	0.013276386826015094	0.055510083642718484	0.03784952638535774
+row [3]: "F3"	0.012320309785365528	0.03784952638535774	0.05006027585038744
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.464795953065796 
+            centroid [2] = 3.3427245505456598 
+            centroid [3] = 3.4407579626513725 
+    item [10]:
+        class = "SSCP" 
+        name = "o" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.06861045715394555	0.035093223137004324	-0.0023606822102749565
+row [2]: "F2"	0.035093223137004324	0.09021650740495563	0.006512208041729222
+row [3]: "F3"	-0.0023606822102749565	0.006512208041729222	0.07700471610942107
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.6855835642500985 
+            centroid [2] = 2.9572369144661237 
+            centroid [3] = 3.392825472161562 
+    item [11]:
+        class = "SSCP" 
+        name = "u" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.1699999779614091	0.021885675183543243	0.0161142422435738
+row [2]: "F2"	0.021885675183543243	0.1039591160562141	-0.00200153380888963
+row [3]: "F3"	0.0161142422435738	-0.00200153380888963	0.07540959694619889
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.5268057305429337 
+            centroid [2] = 2.9058781887555085 
+            centroid [3] = 3.3643364436087393 
+    item [12]:
+        class = "SSCP" 
+        name = "y" 
+        numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+        numberOfRows = 3 
+row [1]: "F1"	0.18909356327139404	0.014010234547664086	0.020273089008566562
+row [2]: "F2"	0.014010234547664086	0.0734940861707178	0.054864607563280654
+row [3]: "F3"	0.020273089008566562	0.054864607563280654	0.08826214244880358
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 2.4797538722099293 
+            centroid [2] = 3.236360871766193 
+            centroid [3] = 3.341855942791658 
+total? <exists> 
+numberOfColumns = 3 
+columnLabels []: 
+"F1"	"F2"	"F3"	
+numberOfRows = 3 
+row [1]: "F1"	11.43514736353313	-3.8028772011835716	0.7254293171774202
+row [2]: "F2"	-3.8028772011835716	13.851776134183913	0.4932432271899076
+row [3]: "F3"	0.7254293171774202	0.4932432271899076	1.2160403917859772
+numberOfObservations = 600 
+centroid []: 
+    centroid [1] = 2.6530580896613785 
+    centroid [2] = 3.141360248760944 
+    centroid [3] = 3.3936382969155714 
+aprioriProbabilities []: 
+    aprioriProbabilities [1] = 0.08333333333333333 
+    aprioriProbabilities [2] = 0.08333333333333333 
+    aprioriProbabilities [3] = 0.08333333333333333 
+    aprioriProbabilities [4] = 0.08333333333333333 
+    aprioriProbabilities [5] = 0.08333333333333333 
+    aprioriProbabilities [6] = 0.08333333333333333 
+    aprioriProbabilities [7] = 0.08333333333333333 
+    aprioriProbabilities [8] = 0.08333333333333333 
+    aprioriProbabilities [9] = 0.08333333333333333 
+    aprioriProbabilities [10] = 0.08333333333333333 
+    aprioriProbabilities [11] = 0.08333333333333333 
+    aprioriProbabilities [12] = 0.08333333333333333 
+costs [] []: 
+    costs [1]:
+        costs [1] [1] = 0 
+        costs [1] [2] = 1 
+        costs [1] [3] = 1 
+        costs [1] [4] = 1 
+        costs [1] [5] = 1 
+        costs [1] [6] = 1 
+        costs [1] [7] = 1 
+        costs [1] [8] = 1 
+        costs [1] [9] = 1 
+        costs [1] [10] = 1 
+        costs [1] [11] = 1 
+        costs [1] [12] = 1 
+    costs [2]:
+        costs [2] [1] = 1 
+        costs [2] [2] = 0 
+        costs [2] [3] = 1 
+        costs [2] [4] = 1 
+        costs [2] [5] = 1 
+        costs [2] [6] = 1 
+        costs [2] [7] = 1 
+        costs [2] [8] = 1 
+        costs [2] [9] = 1 
+        costs [2] [10] = 1 
+        costs [2] [11] = 1 
+        costs [2] [12] = 1 
+    costs [3]:
+        costs [3] [1] = 1 
+        costs [3] [2] = 1 
+        costs [3] [3] = 0 
+        costs [3] [4] = 1 
+        costs [3] [5] = 1 
+        costs [3] [6] = 1 
+        costs [3] [7] = 1 
+        costs [3] [8] = 1 
+        costs [3] [9] = 1 
+        costs [3] [10] = 1 
+        costs [3] [11] = 1 
+        costs [3] [12] = 1 
+    costs [4]:
+        costs [4] [1] = 1 
+        costs [4] [2] = 1 
+        costs [4] [3] = 1 
+        costs [4] [4] = 0 
+        costs [4] [5] = 1 
+        costs [4] [6] = 1 
+        costs [4] [7] = 1 
+        costs [4] [8] = 1 
+        costs [4] [9] = 1 
+        costs [4] [10] = 1 
+        costs [4] [11] = 1 
+        costs [4] [12] = 1 
+    costs [5]:
+        costs [5] [1] = 1 
+        costs [5] [2] = 1 
+        costs [5] [3] = 1 
+        costs [5] [4] = 1 
+        costs [5] [5] = 0 
+        costs [5] [6] = 1 
+        costs [5] [7] = 1 
+        costs [5] [8] = 1 
+        costs [5] [9] = 1 
+        costs [5] [10] = 1 
+        costs [5] [11] = 1 
+        costs [5] [12] = 1 
+    costs [6]:
+        costs [6] [1] = 1 
+        costs [6] [2] = 1 
+        costs [6] [3] = 1 
+        costs [6] [4] = 1 
+        costs [6] [5] = 1 
+        costs [6] [6] = 0 
+        costs [6] [7] = 1 
+        costs [6] [8] = 1 
+        costs [6] [9] = 1 
+        costs [6] [10] = 1 
+        costs [6] [11] = 1 
+        costs [6] [12] = 1 
+    costs [7]:
+        costs [7] [1] = 1 
+        costs [7] [2] = 1 
+        costs [7] [3] = 1 
+        costs [7] [4] = 1 
+        costs [7] [5] = 1 
+        costs [7] [6] = 1 
+        costs [7] [7] = 0 
+        costs [7] [8] = 1 
+        costs [7] [9] = 1 
+        costs [7] [10] = 1 
+        costs [7] [11] = 1 
+        costs [7] [12] = 1 
+    costs [8]:
+        costs [8] [1] = 1 
+        costs [8] [2] = 1 
+        costs [8] [3] = 1 
+        costs [8] [4] = 1 
+        costs [8] [5] = 1 
+        costs [8] [6] = 1 
+        costs [8] [7] = 1 
+        costs [8] [8] = 0 
+        costs [8] [9] = 1 
+        costs [8] [10] = 1 
+        costs [8] [11] = 1 
+        costs [8] [12] = 1 
+    costs [9]:
+        costs [9] [1] = 1 
+        costs [9] [2] = 1 
+        costs [9] [3] = 1 
+        costs [9] [4] = 1 
+        costs [9] [5] = 1 
+        costs [9] [6] = 1 
+        costs [9] [7] = 1 
+        costs [9] [8] = 1 
+        costs [9] [9] = 0 
+        costs [9] [10] = 1 
+        costs [9] [11] = 1 
+        costs [9] [12] = 1 
+    costs [10]:
+        costs [10] [1] = 1 
+        costs [10] [2] = 1 
+        costs [10] [3] = 1 
+        costs [10] [4] = 1 
+        costs [10] [5] = 1 
+        costs [10] [6] = 1 
+        costs [10] [7] = 1 
+        costs [10] [8] = 1 
+        costs [10] [9] = 1 
+        costs [10] [10] = 0 
+        costs [10] [11] = 1 
+        costs [10] [12] = 1 
+    costs [11]:
+        costs [11] [1] = 1 
+        costs [11] [2] = 1 
+        costs [11] [3] = 1 
+        costs [11] [4] = 1 
+        costs [11] [5] = 1 
+        costs [11] [6] = 1 
+        costs [11] [7] = 1 
+        costs [11] [8] = 1 
+        costs [11] [9] = 1 
+        costs [11] [10] = 1 
+        costs [11] [11] = 0 
+        costs [11] [12] = 1 
+    costs [12]:
+        costs [12] [1] = 1 
+        costs [12] [2] = 1 
+        costs [12] [3] = 1 
+        costs [12] [4] = 1 
+        costs [12] [5] = 1 
+        costs [12] [6] = 1 
+        costs [12] [7] = 1 
+        costs [12] [8] = 1 
+        costs [12] [9] = 1 
+        costs [12] [10] = 1 
+        costs [12] [11] = 1 
+        costs [12] [12] = 0 
diff --git a/dwtest/runAllTests.praat b/dwtest/runAllTests.praat
index 147f247..95766f2 100644
--- a/dwtest/runAllTests.praat
+++ b/dwtest/runAllTests.praat
@@ -6,6 +6,22 @@ for itest to ntests
 	select tests
 	test$ = Get string... itest
 	printline 'test$'
+	report_before$ = Report memory use
 	execute 'test$'
-	endif
-endfor
\ No newline at end of file
+	@check_memory: report_before$, "   "
+endfor
+
+procedure check_memory: .report_before$, .preprint$
+	.m$[1] = "Strings: "
+	.m$[2] = "Arrays: "
+	.m$[3] = "Things: "
+	.report_after$ = Report memory use
+	appendInfoLine: .preprint$, "Memory:"
+	for .i to 3
+		.nb = extractNumber (.report_before$, .m$[.i])
+		.na = extractNumber (.report_after$, .m$[.i])
+		.post$ = if .nb <> .na then " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" else "" endif
+		appendInfoLine: .preprint$, .m$[.i], .nb, " ", .na, .post$
+	endfor
+endproc
+removeObject: tests
diff --git a/dwtest/test_Activation.praat b/dwtest/test_Activation.praat
new file mode 100644
index 0000000..a271347
--- /dev/null
+++ b/dwtest/test_Activation.praat
@@ -0,0 +1,25 @@
+# test_Activation.praat
+# djmw 20151020
+
+appendInfoLine: "test_Activation.praat"
+
+for irun to 2
+	nrows = 10
+	for ncols to 10
+		tab = Create simple Matrix: "act", nrows, ncols, "0"
+		act = To Activation
+		Formula:  "randomUniform (0, 0.99)"
+		mat = To Matrix
+		for irow to nrows
+			for icol to ncols
+				val = Get value in cell: irow, icol
+				assert 0<= val and val <= 0.99; 'irow' icol' 'val'
+			endfor
+		endfor
+		removeObject: tab, act, mat
+	endfor
+endfor
+		
+appendInfoLine: "test_Activation.praat OK"
+
+
diff --git a/dwtest/test_Confusion.praat b/dwtest/test_Confusion.praat
index 866d2ec..f486166 100644
--- a/dwtest/test_Confusion.praat
+++ b/dwtest/test_Confusion.praat
@@ -1,11 +1,12 @@
 # test_Confusion.praat
-# djmw 20110511
+# djmw 20110511, 20151020
+
+printline test_Confusion.praat
 
 l$[1] = "u"
 l$[2] = "i"
 l$[3] = "e"
 nlabels = 3
-printline Confusion test...
 c1 = Create simple Confusion... test 'l$[1]'  'l$[2]'   'l$[3]' 
 nrows = Get number of rows
 ncols = Get number of columns
@@ -60,4 +61,5 @@ assert v = 8
 
 plus c2
 Remove
-printline Confusion test... ok
+
+printline test_Confusion.praat OK
diff --git a/dwtest/test_Covariance.praat b/dwtest/test_Covariance.praat
new file mode 100644
index 0000000..5e7e38b
--- /dev/null
+++ b/dwtest/test_Covariance.praat
@@ -0,0 +1,61 @@
+# test_Covariance.praat
+# djmw 2015
+
+appendInfoLine: "test_Covariance"
+appendInfoLine: tab$, "Morrison_example_7.3"
+ at test_Morrison_example_7_3
+appendInfoLine: tab$, "Morrison_example_3.5"
+ at test_Morrison_example_3_5
+appendInfoLine: "test_Covariance OK"
+
+procedure test_Morrison_example_7_3
+	.p = 2
+	.k = 2
+	.sm = Create simple Covariance: "sm", "4.32 1.88 9.18", "0 0",  32
+	.numberOfColumns = Get number of columns
+	.numberOfRows = Get number of rows
+	assert .numberOfColumns = .p and .numberOfRows = .p; "nrows = ncols = 2"
+	.numberOfObservations = Get number of observations
+	assert .numberOfObservations = 32; "numberOfObservations" 'no' <> 32
+	.dof = Get degrees of freedom
+	assert .dof = .numberOfObservations - 1 ; "dof = no-1", 'dof'
+	.x = Get centroid element: 1
+	assert .x = 0
+	.c11 = Get value: 1, 1
+	.c22 = Get value: 2, 2
+	assert .c11 = 4.32
+	assert .c22 = 9.18
+	.ln_det_sm = Get ln(determinant)
+	.det_sm = exp (.ln_det_sm)
+	.det_sm$ = fixed$ (.det_sm, 3)
+	assert .det_sm$ = "36.123"
+
+	.sf = Create simple Covariance: "sf", "2.52 1.90 10.06", "0 0",  32
+	.ln_det_sf = Get ln(determinant)
+	.det_sf = exp (.ln_det_sf)
+	.det_sf$ = fixed$ (.det_sf, 3)
+	assert .det_sf$ = "21.741"
+	selectObject: .sm, .sf
+	.report$ = Report equality of covariances
+	.chisq = extractNumber (.report$, "Chi-squared (bartlett) = ")
+	.chisq$ = fixed$ (.chisq, 2)
+	assert .chisq$ = "2.72" 
+	.cInv = 1 - (2*.p^2+3*.p-1)/(6*(.p+1)*(.k-1))*(1/31+1/31-1/62)
+	appendInfoLine: "C^-1 = ", .cInv
+	removeObject: .sm, .sf
+endproc
+
+procedure test_Morrison_example_3_5
+	.cor = Create simple Correlation: "correlation", "1.0 0.69 0.43 1.0 0.3 1.0", "0.0 0.0 0.0", 54
+	.report$ = Get diagonality (bartlett): 1
+ 	.chisq = extractNumber (.report$, "chisq = ")
+	.chisq$ = fixed$ (.chisq, 2)
+	assert .chisq$ = "43.54"
+	.ln_det_r = Get ln(determinant)
+	.det_r = exp (.ln_det_r)
+	.det_r$ = fixed$ (.det_r, 3)
+	assert .det_r$ = "0.427"
+	removeObject: .cor
+endproc
+
+;Difference
\ No newline at end of file
diff --git a/dwtest/test_Discriminant.praat b/dwtest/test_Discriminant.praat
index 6277964..89f3d88 100644
--- a/dwtest/test_Discriminant.praat
+++ b/dwtest/test_Discriminant.praat
@@ -1,18 +1,48 @@
 # test_Discriminant.praat
-# djmw 20110518, 20141030
+# djmw 20110518, 20141030, 20150128
 
 appendInfoLine: "test_Discriminant"
 
-t = Create TableOfReal (Pols 1973): "no"
+# old format
+appendInfoLine: tab$ + "Read Discriminant format 0 from disk"
+discriminant[1] = Read from file: "pols_50males_format0.Discriminant"
+
+tableOfReal = Create TableOfReal (Pols 1973): "no"
 Formula: "log10(self)"
 
-dis = To Discriminant
-plus t
-clas = To ClassificationTable: "yes", "yes"
-conf = To Confusion: "no"
-fc = Get fraction correct
-assert fc -0.74 < 0.00001
+discriminant[2] = To Discriminant
+
+appendInfoLine: tab$ + "Query old and new Discriminant"
+ at query: discriminant[1]
+ at query: discriminant[2]
+
+appendInfoLine: tab$ + "Assert old and new Discriminant classify the same"
+ at classify: discriminant[1], tableOfReal, 1
+ at classify: discriminant[2], tableOfReal, 2
+assert classify.fc[1] = classify.fc[2]
+
+procedure classify: .discriminant, .tableOfReal, .index
+	selectObject: .discriminant, .tableOfReal
+	.classificationTable = To ClassificationTable: "yes", "yes"
+	.confusion = To Confusion: "no"
+	.fc[.index] = Get fraction correct
+	assert .fc[.index] -0.74 < 0.00001
+	removeObject: .classificationTable, .confusion
+endproc
+
+procedure query: .discriminant
+	for .ieigen to 3
+		.eigenvalue[.ieigen] = Get eigenvalue: .ieigen
+	endfor
+	.numberOfEigenvectors = Get number of eigenvectors
+	.dimension = Get eigenvector dimension
+	assert (.eigenvalue[1] - 21.139) < 0.00001
+	assert (.eigenvalue[2] - 4.35530) < 0.00001
+	assert (.eigenvalue[3] - 0.68289) < 0.00001
+	assert .numberOfEigenvectors = 3
+	assert .dimension = 3
+endproc
 
-removeObject: t, dis, clas, conf
+removeObject: discriminant[2], tableOfReal, discriminant[1]
 
 appendInfoLine: "test_Discriminant OK"
diff --git a/dwtest/test_FFNet.praat b/dwtest/test_FFNet.praat
index bb034d5..ee2058d 100644
--- a/dwtest/test_FFNet.praat
+++ b/dwtest/test_FFNet.praat
@@ -8,7 +8,14 @@ ffnet = selected ("FFNet")
 pattern = selected ("Pattern")
 cat = selected ("Categories")
 
+selectObject: pattern, cat
+tab = To TableOfReal
+To Pattern and Categories: 0, 0, 0, 0
+Remove
+removeObject: tab
+
 ntries = 10
+selectObject: ffnet, pattern, cat
 error1 = Get total costs... Minimum-squared-error
 tab = Create Table with column names... results ntries costsb  costsa fc 
 
@@ -42,6 +49,30 @@ plus pattern
 plus cat
 Remove
 
+ at test_openSave
+
 printline FFNet ok
 
+procedure test_openSave
+	.ffnet_read= Read from file: "iris_4-2-3-3.FFNet"
+	Create iris example: 2, 3
+	.ffnet = selected ("FFNet")
+	.pattern = selected ("Pattern")
+	.categories = selected ("Categories")
+
+	selectObject: .ffnet
+	Save as binary file: "kanweg.FFNet"
+	.ffnet_read2 = Read from file: "kanweg.FFNet"
+	# are they the same ??
+
+	selectObject: .ffnet_read, .pattern, .categories
+	.costs[1] = Get total costs: "Minimum-squared-error"
+	selectObject: .ffnet_read, .pattern, .categories
+	Learn: 100, 1e-7, "Minimum-squared-error"
+	.costs[2] = Get total costs: "Minimum-squared-error"
+	assert .costs[1] >= .costs[2]
+
+	removeObject: 	.ffnet, .ffnet_read, .ffnet_read2, .pattern, .categories
+endproc
+
 
diff --git a/dwtest/test_HMM.praat b/dwtest/test_HMM.praat
new file mode 100644
index 0000000..e55c0be
--- /dev/null
+++ b/dwtest/test_HMM.praat
@@ -0,0 +1,64 @@
+# test_HMM.praat
+
+appendInfoLine: "test_HMM"
+ at mm
+ at hmms_test_multiple_os
+
+
+# two state not hidden model
+procedure mm
+	.mm1 = Create simple HMM: "m1", "no", "1 2", ""
+	Set transition probabilities: 1, "0.8 0.2"
+	Set transition probabilities: 2, "0.4 0.6"
+
+	# check sum of p leaving
+	for .it to 10
+ 		.psum = 0
+		for .istate to 2
+			.lnp = Get p (time, state): .it , .istate
+			.p = exp(.lnp)
+			.psum += .p
+		endfor
+ 		assert (.psum>0.999 and .psum<1.001)
+	endfor
+	.os = To HMMObservationSequence: 0, 2000
+	.mm2 = To HMM: 0, "no"
+	plusObject: .os
+	Learn: 0.001, 0.00000001, "no"
+
+	selectObject: .mm2
+  	# check sum of p leaving
+	for .it to 10
+		.psum = 0
+		for .istate to 2
+			.p = Get p (time, state): .it, .istate
+ 			.p = exp(.p)
+			.psum += .p
+		endfor
+		assert (.psum>0.999 and .psum<1.001)
+	endfor
+
+	removeObject: .mm1, .mm2, .os
+endproc
+
+procedure hmms_test_multiple_os
+	.hmm = Create simple HMM: "hmm1", "no", "1 2 3", ""
+	Set transition probabilities: 1, "0.5 0.1 0.4"
+	Set transition probabilities: 2, "0.3 0.5 0.2"
+	Set transition probabilities: 3, "0.4 0.1 0.5"
+	.os = To HMMObservationSequence: 0, 20000
+	.s = To Strings
+	.s1 = Extract part: 1, 10001
+	.os1 = To HMMObservationSequence
+	selectObject: .s
+	.s2 = Extract part: 10002, 20000
+	.os2 = To HMMObservationSequence
+
+	.hmm2 = Create simple HMM: "hmm3", "no", "1 2 3", ""
+	selectObject: .hmm2, .os1, .os2
+	Learn: 0001, 0.00000001, "no"
+	removeObject: .s, .s1, .s2, .hmm2, .os, .os1, .os2, .hmm
+endproc
+
+appendInfoLine: "test_HMM OK"
+
diff --git a/dwtest/test_KlattGrid.praat b/dwtest/test_KlattGrid.praat
index f0ef799..7f07893 100644
--- a/dwtest/test_KlattGrid.praat
+++ b/dwtest/test_KlattGrid.praat
@@ -1,6 +1,7 @@
 # test_KlattGrid.praat
+# djmw 20151020
 
-printline test_KlattGrid
+printline test_KlattGrid.praat
 
 t = Create Table with column names... t 25 tier min max nf
 Set string value... 1 tier pitch
@@ -155,4 +156,6 @@ for i from nPhonationTiers+1 to 25
 	print 'newline$'
 endfor
 
-printline test_KlattGrid OK
\ No newline at end of file
+removeObject: kg, t
+
+printline test_KlattGrid.praat OK
\ No newline at end of file
diff --git a/dwtest/test_KruskalWallis.praat b/dwtest/test_KruskalWallis.praat
index 76d0dae..d68a358 100644
--- a/dwtest/test_KruskalWallis.praat
+++ b/dwtest/test_KruskalWallis.praat
@@ -1,6 +1,7 @@
 # test_KruskalWallis.praat
 
-printline One-way Kruskal-Wallis test
+printline test_KruskalWallis.praat
+
 table = Read from file... Hayes_table_19.7.1.txt
 report$ = Report one-way Kruskal-Wallis... Data Group
 hprime = extractNumber (report$, "Chi squared:")
@@ -12,6 +13,8 @@ assert abs(hprime-13.8443) < 0.0001
 assert groupI = 139
 assert groupII = 200
 assert groupIII = 327
-printline One-way Kruskal-Wallis test OK
+removeObject: table
+
+printline test_KruskalWallis.praat OK
 
 
diff --git a/dwtest/test_MDS.praat b/dwtest/test_MDS.praat
index e773897..37daa6b 100644
--- a/dwtest/test_MDS.praat
+++ b/dwtest/test_MDS.praat
@@ -16,6 +16,21 @@ c[5] = To Configuration (absolute mds)... 2 1e-05 50 1
 select dr
 c[6] = To Configuration (kruskal)... 2 2 "Primary approach" Formula1 1e-05 50 1
 
+selectObject: dr, c[1]
+c[6+1]= To Configuration (monotone mds): "Primary approach", 1e-7, 50, 1
+
+selectObject: dr, c[2]
+c[6+2] = To Configuration (i-spline mds): 1, 1, 1e-07, 50, 1
+selectObject: dr, c[3]
+c[6+3] = To Configuration (interval mds): 1e-05, 50, 1
+selectObject: dr, c[4]
+c[6+4] = To Configuration (ratio mds): 1e-05, 50, 1
+selectObject: dr, c[5]
+c[6+5] = To Configuration (absolute mds): 1e-05, 50, 1
+selectObject: dr, c[6]
+c[6+6] = To Configuration (kruskal): "Primary approach", "Formula1", 1e-05, 50, 1
+
+
 printline ... comparing configurations
 for i from 2 to  6
 	select c[1]
@@ -41,26 +56,36 @@ for i to 6
 endfor
 
 To Configuration (indscal)... 2 yes 1e-5 100 1
-ic = selected ("Configuration")
-is = selected ("Salience")
+ic[1] = selected ("Configuration")
+is[1] = selected ("Salience")
+
+selectObject: ic[1]
+for i to 6
+	plusObject: dist[i]
+endfor
+
+To Configuration (indscal): "yes", 1e-5, 100
+ic[2] = selected ("Configuration")
+is[2] = selected ("Salience")
 
 select c[1]
-plus ic
+plus ic[1]
 p3 = To Procrustes... no
-plus ic
+plus ic[1]
 cp3 = To Configuration
 plus c[1]
 p4 = To Procrustes... no
 call check_if_identity_transform  p4
 
 select dr
-plus ic
-plus is
+plusObject: ic[1], ic[2]
+plusObject: is[1], is[2]
 plus p3
 plus p4
 plus cp3
 for i to 6
 	plus c[i]
+	plus c[i+6]
 	plus ct[i]
 	plus dist[i]
 endfor
diff --git a/dwtest/test_OnewayAnova.praat b/dwtest/test_OnewayAnova.praat
index 2868063..444eca9 100644
--- a/dwtest/test_OnewayAnova.praat
+++ b/dwtest/test_OnewayAnova.praat
@@ -1,7 +1,7 @@
 # test_OnewayAnova.praat
 # djmw 20120625
 
-printline One-way Anova test
+printline test_OnewayAnova.praat
 
 # unequal groups hayes pg 371
 
@@ -14,7 +14,6 @@ total = extractNumber (report$, "Total")
 assert abs (between-22.57) < 0.01
 assert abs (within - 878.93) < 0.01
 assert abs (total - 901.5) < 0.1
+removeObject: table
 
-printline One-way Anova test OK
-
-
+printline test_OnewayAnova.praat OK
diff --git a/dwtest/test_Polygon_simplify.praat b/dwtest/test_Polygon_simplify.praat
index 5fa9240..f5afaaa 100644
--- a/dwtest/test_Polygon_simplify.praat
+++ b/dwtest/test_Polygon_simplify.praat
@@ -2,10 +2,6 @@
 
 printline test_Polygon_simplify
 
-
-p = Create simple Polygon... p 0 0 0 1 0.25 0.75 -0.25 0.75 0.25 0.25 -0.25 0.25
-
-
 for j to 10
 	m = Create simple Matrix... ps 2 100  randomUniform (0,1)
 	p1x = Get value in cell... 1 1
diff --git a/dwtest/test_Procrustes.praat b/dwtest/test_Procrustes.praat
index 210c974..c4a7a8a 100644
--- a/dwtest/test_Procrustes.praat
+++ b/dwtest/test_Procrustes.praat
@@ -10,156 +10,157 @@ printline
 printline ----- succeeded: test_Procrustes.praat (end) -----
 
 procedure test_procrustes_bg_19_4
-  # example Borg&Groenen section 19.4
-  printline   test example in Borg & Groenen section 19.4
-  nr = 4 
-  nc = 2
-  s = 0.5
-  t1 = 1
-  t2 = 2
-  alpha = 30
-  eps = 2.3e-16
+	# example Borg&Groenen section 19.4
+	printline   test example in Borg & Groenen section 19.4
+	nr = 4 
+ 	nc = 2
+	s = 0.5
+	t1 = 1
+ 	t2 = 2
+	alpha = 30
+	eps = 2.3e-16
   
-  Create Configuration... X nr nc 0
-  Set value... 1 1 1
-  Set value... 1 2 2
-  Set value... 2 1 -1
-  Set value... 2 2 2
-  Set value... 3 1 -1
-  Set value... 3 2 -2
-  Set value... 4 1 1
-  Set value... 4 2 -2
+	Create Configuration... X nr nc 0
+	Set value... 1 1 1
+	Set value... 1 2 2
+	Set value... 2 1 -1
+	Set value... 2 2 2
+	Set value... 3 1 -1
+	Set value... 3 2 -2
+	Set value... 4 1 1
+	Set value... 4 2 -2
   
-  for i to 4
-    Set row label (index)... i x_'i'
-  endfor
+	for i to 4
+		Set row label (index)... i x_'i'
+	endfor
   
-  Copy... Y
-  ! Horizontal reflection
-  Invert dimension... 1
-  Rotate... 1 2 alpha
+	Copy... Y
+	! Horizontal reflection
+	Invert dimension... 1
+	Rotate... 1 2 alpha
   
-  Formula...  0.5*self + (if col=1 then t1 else t2 fi)
+	Formula...  0.5*self + (if col=1 then t1 else t2 fi)
   
-  plus Configuration X
-  To Procrustes... 0
-  Rename... X_Y
-  plus Configuration Y
-  To Configuration
-  Rename... Z
-  Formula... self-Configuration_X[]
-  for i to 4
-    for j to 2
-      assert Configuration_Z[i,j] < nr*nc*eps; Configuration_Z['i','j'] < 'nr'*'nc'*'eps'
-    endfor
-  endfor
+	plus Configuration X
+	To Procrustes... 0
+	Rename... X_Y
+	plus Configuration Y
+	To Configuration
+	Rename... Z
+	Formula... self-Configuration_X[]
+	for i to 4
+		for j to 2
+			assert Configuration_Z[i,j] < nr*nc*eps; Configuration_Z['i','j'] < 'nr'*'nc'*'eps'
+		endfor
+	endfor
   
-  select Procrustes X_Y
-  Invert
-  Rename... X_Yi
-  for i to 2
-    tp = Get translation element... i
-    assert t'i' - tp < nr*nc*eps; translation['i']
-  endfor
-  sp = Get scale
-  assert s - tp < nr*nc*eps; scale
+	select Procrustes X_Y
+	Invert
+	Rename... X_Yi
+	for i to 2
+		tp = Get translation element... i
+		assert t'i' - tp < nr*nc*eps; translation['i']
+	endfor
+	sp = Get scale
+	assert s - tp < nr*nc*eps; scale
   
-  select Configuration X
-  plus Configuration Y
-  plus Configuration Z
-  plus Procrustes X_Y
-  plus Procrustes X_Yi
-  Remove
+	select Configuration X
+	plus Configuration Y
+	plus Configuration Z
+	plus Procrustes X_Y
+	plus Procrustes X_Yi
+	Remove
 endproc
 
 procedure test_procrustes_random_configurations numconf
-  printline   'numconf' randomly generated configurations of dimension 2^1 x 2 .. 2^12 x 2
-  nr = 2
-  print     Configuration:
-  for k to numconf
-    print  'k'
-    Create Configuration... X nr nc randomUniform(-1,1)
-    Copy... Y
-    Invert dimension... 1
-    alpha = randomUniform (0,90)
-    Rotate... 1 2 alpha
-    t1 = randomUniform (0,2)
-    t2 = randomUniform (0,2)
-    scale = randomUniform(0.5,2)
-    Formula...  scale*self + (if col=1 then t1 else t2 fi)
+	printline   'numconf' randomly generated configurations of dimension 2^1 x 2 .. 2^12 x 2
+	nr = 2
+	print     Configuration:
+	for k to numconf
+		print  'k'
+		Create Configuration... X nr nc randomUniform(-1,1)
+ 		Copy... Y
+		Invert dimension... 1
+		alpha = randomUniform (0,90)
+		Rotate... 1 2 alpha
+		t1 = randomUniform (0,2)
+ 		t2 = randomUniform (0,2)
+ 		scale = randomUniform(0.5,2)
+		Formula...  scale*self + (if col=1 then t1 else t2 fi)
   
-    plus Configuration X
-    To Procrustes... 0
-    Rename... X_Y
-    plus Configuration Y
-    To Configuration
-    Rename... Z
-    Formula... self-Configuration_X[]
-    for i to nr
-      for j to 2
-        assert Configuration_Z[i,j] < nr*nc*eps; Configuration_Z['i','j'] < 'nr'*'nc'*'eps'
-      endfor
-    endfor
+		plus Configuration X
+		To Procrustes... 0
+		Rename... X_Y
+		plus Configuration Y
+		To Configuration
+		Rename... Z
+		Formula... self-Configuration_X[]
+		.eps = 10 * nr * nc * eps
+		for i to nr
+ 			for j to 2
+ 				assert Configuration_Z[i,j] < .eps; Configuration_Z['i','j'] < '.eps'
+			endfor
+		endfor
   
-    select Procrustes X_Y
-    Invert
-    Rename... X_Yi
-    # no need to test the translations, they need not be equal (see BG page 347)
-    sp = Get scale
-    assert abs(scale - sp) < nr*nc*eps; scale
+		select Procrustes X_Y
+		Invert
+		Rename... X_Yi
+		# no need to test the translations, they need not be equal (see BG page 347)
+		sp = Get scale
+ 		assert abs(scale - sp) < .eps; scale
   
-#   printline o.k.: nr='nr', nc='nc', alpha='alpha' degrees, scale='scale', t=('t1', 't2')
-    nr *= 2
-    select Configuration X
-    plus Configuration Y
-    plus Configuration Z
-    plus Procrustes X_Y
-    plus Procrustes X_Yi
-    Remove
-  endfor
+		#   printline o.k.: nr='nr', nc='nc', alpha='alpha' degrees, scale='scale', t=('t1', 't2')
+ 		nr *= 2
+		select Configuration X
+		plus Configuration Y
+		plus Configuration Z
+		plus Procrustes X_Y
+		plus Procrustes X_Yi
+ 		Remove
+	endfor
 endproc
 
 procedure test_orthogional_procrustes_gvl_12_4_3
-  printline   test orthognal Procrustes transform (example 12.4.1 Golub & van Loan)
-  Create Configuration... a 4 2 0
-  Set value... 1 1 1
-  Set value... 2 1 3
-  Set value... 3 1 5
-  Set value... 4 1 7
-  Set value... 1 2 2
-  Set value... 2 2 4
-  Set value... 3 2 6
-  Set value... 4 2 8
+	printline   test orthognal Procrustes transform (example 12.4.1 Golub & van Loan)
+	Create Configuration... a 4 2 0
+	Set value... 1 1 1
+	Set value... 2 1 3
+	Set value... 3 1 5
+	Set value... 4 1 7
+	Set value... 1 2 2
+	Set value... 2 2 4
+	Set value... 3 2 6
+	Set value... 4 2 8
 
-  Create Configuration... b 4 2 0
-  Set value... 1 1 1.2
-  Set value... 2 1 2.9
-  Set value... 3 1 5.2
-  Set value... 4 1 6.8
-  Set value... 1 2 2.1
-  Set value... 2 2 4.3
-  Set value... 3 2 6.1
-  Set value... 4 2 8.1
+	Create Configuration... b 4 2 0
+	Set value... 1 1 1.2
+	Set value... 2 1 2.9
+	Set value... 3 1 5.2
+	Set value... 4 1 6.8
+	Set value... 1 2 2.1
+	Set value... 2 2 4.3
+	Set value... 3 2 6.1
+	Set value... 4 2 8.1
 
-  plus Configuration a
-  To Procrustes... y
+	plus Configuration a
+	To Procrustes... y
 
-  t2 = Get translation element... 2
-  assert t2 = 0
-  s = Get scale
-  assert s = 1; 
+	t2 = Get translation element... 2
+	assert t2 = 0
+	s = Get scale
+	assert s = 1; 
 
-  eps = 5e-5
-  r11 = Get transformation element... 1 1
-  r22 = Get transformation element... 2 2
-  assert r11-r22 < eps
-  assert r11-0.9999 < eps
-  r12 = Get transformation element... 1 2
-  r21 = Get transformation element... 2 1
-  assert r12+0.0126 < eps
-  assert r21-0.0126 < eps
+	eps = 5e-5
+	r11 = Get transformation element... 1 1
+	r22 = Get transformation element... 2 2
+	assert r11-r22 < eps
+	assert r11-0.9999 < eps
+	r12 = Get transformation element... 1 2
+	r21 = Get transformation element... 2 1
+	assert r12+0.0126 < eps
+	assert r21-0.0126 < eps
 
-  plus Configuration a
-  plus Configuration b
-  Remove
+	plus Configuration a
+	plus Configuration b
+	Remove
 endproc
diff --git a/dwtest/test_Sound_draw_where.praat b/dwtest/test_Sound_draw_where.praat
index d60363f..5626051 100644
--- a/dwtest/test_Sound_draw_where.praat
+++ b/dwtest/test_Sound_draw_where.praat
@@ -75,5 +75,6 @@ Marks bottom every... 1 0.0005 n y y
 Marks bottom every... 1 0.001 y y y
 Draw inner box
 Text top... n Random amplitudes: parts > 0.5 blue only in the first half of every 0.001 s
+Remove
 printline Draw where... End tests
 
diff --git a/dwtest/test_Sound_paint_where.praat b/dwtest/test_Sound_paint_where.praat
index 0b8f56b..754a1e1 100644
--- a/dwtest/test_Sound_paint_where.praat
+++ b/dwtest/test_Sound_paint_where.praat
@@ -34,5 +34,5 @@ plus s1
 Select outer viewport... 0 6 9 12
 Paint enclosed... Grey 0 0 -1 1 yes
 Text top... n Paint enclosed: between sine and straight line
-
+removeObject: s1, s3
 
diff --git a/dwtest/test_SpeechSynthesizer.praat b/dwtest/test_SpeechSynthesizer.praat
index e20d364..4de2370 100644
--- a/dwtest/test_SpeechSynthesizer.praat
+++ b/dwtest/test_SpeechSynthesizer.praat
@@ -1,34 +1,37 @@
 # test_SpeechSynthesizer.praat
 # djmw 20120130, 20120522
 
-printline SpeechSynthesizer test...
+appendInfoLine: "SpeechSynthesizer test..."
 
-variantslist = Create copy from FilesInMemory... variants_names
+variantslist = Create copy from FilesInMemory: "variants_names"
 nvariants = Get number of strings
 
-voiceslist = Create copy from FilesInMemory... voices_names
+voiceslist = Create copy from FilesInMemory: "voices_names"
 nvoices = Get number of strings
 
+numberOfSounds = 0
 for ivoice to nvoices
-	select voiceslist
-	voice$ = Get string... ivoice
-	printline 'tab$' 'voice$'
+	selectObject: voiceslist
+	voice$ = Get string: ivoice
+	appendInfoLine: tab$, voice$
 	for ivariant to nvariants
-		select variantslist
-		variant$ = Get string... ivariant
-		printline 'tab$''tab$' 'variant$'
+		selectObject: variantslist
+		variant$ = Get string: ivariant
+		appendInfoLine: tab$, tab$, variant$
 		# some voices have spaces!
-		ss = Create SpeechSynthesizer... "'voice$'" 'variant$'
-		sound = To Sound... a e u
-		Remove
-		select ss
-		Remove
+		ss = Create SpeechSynthesizer: voice$, variant$
+		sound = To Sound: "a e u", "no"
+		;Play
+		removeObject: ss, sound
+		numberOfSounds += 1
 	endfor
 endfor
+appendInfoLine: tab$, numberOfSounds, " sounds created/removed"
+appendInfoLine: tab$, "Writing and reading..."
+ss = Create SpeechSynthesizer: voice$, variant$
+Save as text file: "kanweg.SpeechSynthesizer"
+ss2 = Read from file: "kanweg.SpeechSynthesizer"
 
-select variantslist
-plus voiceslist
-Remove
+removeObject: variantslist, voiceslist, ss, ss2
 
-
-printline SpeechSynthesizer test OK
+appendInfoLine: "SpeechSynthesizer test OK"
diff --git a/dwtest/test_TableOfReal_extensions.praat b/dwtest/test_TableOfReal_extensions.praat
index 432719a..035f71b 100644
--- a/dwtest/test_TableOfReal_extensions.praat
+++ b/dwtest/test_TableOfReal_extensions.praat
@@ -35,5 +35,6 @@ procedure means_by_row_labels
 			endif
 			assert .dif <= eps
 		endfor
-	endfor		
+	endfor
+	removeObject: 	.tab1, .tabm	
 endproc
diff --git a/dwtest/test_bss_twoSoundsMixed.praat b/dwtest/test_bss_twoSoundsMixed.praat
new file mode 100644
index 0000000..891da76
--- /dev/null
+++ b/dwtest/test_bss_twoSoundsMixed.praat
@@ -0,0 +1,31 @@
+# bss_twoSoundsMixed.praat
+# test_bss_example_manual.praat
+# djmw 20151030
+
+Erase all
+
+synth = Create SpeechSynthesizer: "English", "default"
+s1 = To Sound: "This is some text.", "no"
+selectObject: synth
+selectObject: "SpeechSynthesizer English_default"
+Set speech output settings: 44100, 0.01, 80, 50, 145, "no", "IPA"
+
+s2 =To Sound: "abracadabra, abra", "no"
+plusObject: s1
+stereo = Combine to stereo
+Select inner viewport: 1, 6, 0.1, 1.9
+Draw: 0, 0, 0, 0, "no", "Curve"
+Draw inner box
+mm = Create simple MixingMatrix: "mm", 2, 2, "1.0 2.0 2.0 1.0"
+plus stereo
+mixed = Mix
+Select inner viewport: 1, 6, 2.1, 3.9
+Draw: 0, 0, 0, 0, "no", "Curve"
+Draw inner box
+
+unmixed = To Sound (bss): 0.1, 1, 20, 0.00021, 100, 0.001, "ffdiag"
+Select inner viewport: 1, 6, 4.1, 5.9
+Draw: 0, 0, 0, 0, "no", "Curve"
+Draw inner box
+
+removeObject: synth, stereo, s1, s2, mixed, mm, unmixed
diff --git a/dwtest/test_henzeZirklerMultivariateNormalityTest.praat b/dwtest/test_henzeZirklerMultivariateNormalityTest.praat
index 1afdfc0..4e59b57 100644
--- a/dwtest/test_henzeZirklerMultivariateNormalityTest.praat
+++ b/dwtest/test_henzeZirklerMultivariateNormalityTest.praat
@@ -7,9 +7,9 @@ ir50 = Extract row ranges...  1:50
 report$ = Report multivariate normality... 0
 tol = 1e-10
 stat = extractNumber (report$, "statistic:")
-assert abs(stat - 0.958366538697967)<tol
+assert abs(stat - 0.9583666347568522)<tol
 prob = extractNumber (report$, " normality:")
-assert abs (prob - 0.04292525730817163) < tol
+assert abs (prob - 0.042925190989665477) < tol
 lmean = extractNumber (report$, " mean:")
 assert abs (lmean  + 0.27940830765481794)<tol
 lvariance = extractNumber (report$, " variance:")
diff --git a/dwtest/test_sigma_ellipse.praat b/dwtest/test_sigma_ellipse.praat
index 66dbe27..ca077b6 100644
--- a/dwtest/test_sigma_ellipse.praat
+++ b/dwtest/test_sigma_ellipse.praat
@@ -30,3 +30,5 @@ procedure get_p .nsigma
   Draw confidence ellipse... psigma 1 2  -6 6 -12 12 no
   Black
 endproc
+
+removeObject: tor, sscp
\ No newline at end of file
diff --git a/dwtools/Activation.cpp b/dwtools/Activation.cpp
index 4a10d25..f8a0908 100644
--- a/dwtools/Activation.cpp
+++ b/dwtools/Activation.cpp
@@ -1,20 +1,19 @@
 /* Activation.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,7 +30,7 @@ Thing_implement (Activation, Matrix, 2);
 int _Activation_checkElements (Activation me) {
 	for (long i = 1; i <= my ny; i++) {
 		for (long j = 1; j <= my nx; j++) {
-			if (my z[i][j] < 0 || my z[i][j] > 1) {
+			if (my z[i][j] < 0.0 || my z[i][j] > 1) {
 				return 0;
 			}
 		}
@@ -39,42 +38,35 @@ int _Activation_checkElements (Activation me) {
 	return 1;
 }
 
-void Activation_init (I, long ny, long nx) {
-	iam (Activation);
-	double xmin = 1, xmax = nx, dx = 1, x1 = 1, ymin = 1, ymax = ny;
-	double dy = 1, y1 = 1;
-	my ny = ny; my nx = nx;
-	Matrix_init (me, xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
+void Activation_init (Activation me, long ny, long nx) {
+	Matrix_init (me, 1.0, nx, nx, 1.0, 1.0, 1.0, ny, ny, 1.0, 1.0);
 }
 
-Activation Activation_create (long ny, long nx) {
+autoActivation Activation_create (long ny, long nx) {
 	try {
 		autoActivation me = Thing_new (Activation);
-		Activation_init (me.peek(), ny, nx);
-		return me.transfer();
+		Activation_init (me.get(), ny, nx);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Activation not created.");
 	}
 }
 
-Activation Matrix_to_Activation (I) {
-	iam (Matrix);
+autoActivation Matrix_to_Activation (Matrix me) {
 	try {
 		autoActivation thee = Activation_create (my ny, my nx);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Activation.");
 	}
 }
 
-Matrix Activation_to_Matrix (I) {
-	iam (Activation);
+autoMatrix Activation_to_Matrix (Activation me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
-		                                 my ymin, my ymax, my ny, my dy, my y1);
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/dwtools/Activation.h b/dwtools/Activation.h
index 14c0192..8fcf8b8 100644
--- a/dwtools/Activation.h
+++ b/dwtools/Activation.h
@@ -2,21 +2,20 @@
 #define _Activation_h_
 /* Activation.h
  * 
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  * 
  * This program is free oftware; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -43,14 +42,13 @@ Thing_define (Activation, Matrix) {
    z[iy][ix]		:the activities
 */
 
-void Activation_init (I, long ny, long nx);
+void Activation_init (Activation me, long ny, long nx);
 
-Activation Activation_create (long ny, long nx);
+autoActivation Activation_create (long ny, long nx);
 
-Activation Matrix_to_Activation (I);
-
-Matrix Activation_to_Matrix (I);
+autoActivation Matrix_to_Activation (Matrix me);
 
+autoMatrix Activation_to_Matrix (Activation me);
 
 int _Activation_checkElements (Activation me);
 /* Return 1 if all elements are in interval [0,1] else 0. */
diff --git a/dwtools/AffineTransform.cpp b/dwtools/AffineTransform.cpp
index 649fdf9..7688610 100644
--- a/dwtools/AffineTransform.cpp
+++ b/dwtools/AffineTransform.cpp
@@ -1,20 +1,19 @@
 /* AffineTransform.cpp
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -61,24 +60,23 @@ void structAffineTransform :: v_transform (double **in, long nrows, double **out
 	}
 }
 
-Any structAffineTransform :: v_invert () {
+autoAffineTransform structAffineTransform :: v_invert () {
 	autoAffineTransform thee = Data_copy (this);
 	double tolerance = 0.000001;
 
 	NUMpseudoInverse (r, n, n, thy r, tolerance);
-	for (long i = 1; i <= n; i++) {
-		thy t[i] = 0;
-		for (long j = 1; j <= thy n; j++) {
+	for (long i = 1; i <= n; i ++) {
+		thy t[i] = 0.0;
+		for (long j = 1; j <= thy n; j ++) {
 			thy t[i] -= thy r[i][j] * t[j];
 		}
 	}
-	return thee.transfer();
+	return thee;
 }
 
-Thing_implement (AffineTransform, Data, 0);
+Thing_implement (AffineTransform, Daata, 0);
 
-void AffineTransform_init (I, long n) {
-	iam (AffineTransform);
+void AffineTransform_init (AffineTransform me, long n) {
 	if (n < 1) {
 		Melder_throw (U"Dimensionality must be at least 1.");
 	}
@@ -87,47 +85,43 @@ void AffineTransform_init (I, long n) {
 	my t = NUMvector<double> (1, n);
 }
 
-AffineTransform AffineTransform_create (long n) {
+autoAffineTransform AffineTransform_create (long n) {
 	try {
 		autoAffineTransform me = Thing_new (AffineTransform);
-		AffineTransform_init (me.peek(), n);
-		return me.transfer();
+		AffineTransform_init (me.get(), n);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"AffineTransform not created.");
 	}
 }
 
-Any AffineTransform_invert (I) {
-	iam (AffineTransform);
-	AffineTransform thee = (AffineTransform) my v_invert ();
-	return thee;
+autoAffineTransform AffineTransform_invert (AffineTransform me) {
+	return my v_invert ();
 }
 
-TableOfReal AffineTransform_extractMatrix (I) {
-	iam (AffineTransform);
+autoTableOfReal AffineTransform_extractMatrix (AffineTransform me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my n, my n);
 		NUMmatrix_copyElements (my r, thy data, 1, my n, 1, my n);
-		for (long i = 1; i <= my n; i++) {
-			char32 label[40];
-			Melder_sprint (label,40, i);   // ppgb: 20 chars is niet genoeg voor een long
-			TableOfReal_setRowLabel (thee.peek(), i, label);
-			TableOfReal_setColumnLabel (thee.peek(), i, label);
+		for (long i = 1; i <= my n; i ++) {
+			char32 label [40];
+			Melder_sprint (label,40, i);
+			TableOfReal_setRowLabel (thee.get(), i, label);
+			TableOfReal_setColumnLabel (thee.get(), i, label);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": transformation matrix not extracted.");
 	}
 }
 
-TableOfReal AffineTransform_extractTranslationVector (I) {
-	iam (AffineTransform);
+autoTableOfReal AffineTransform_extractTranslationVector (AffineTransform me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (1, my n);
 		for (long i = 1; i <= my n; i++) {
 			thy data[1][i] = my t[i];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": translation vector not extracted.");
 	}
diff --git a/dwtools/AffineTransform.h b/dwtools/AffineTransform.h
index a5e06b1..3dfab14 100644
--- a/dwtools/AffineTransform.h
+++ b/dwtools/AffineTransform.h
@@ -2,41 +2,39 @@
 #define _AffineTransform_h_
 /* AffineTransform.h
  *
- * Copyright (C) 2001-2011 David Weenink
+ * Copyright (C) 2001-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 #include "TableOfReal.h"
 
 #include "AffineTransform_def.h"
-oo_CLASS_CREATE (AffineTransform, Data);
 
-void AffineTransform_init (I, long n);
+void AffineTransform_init (AffineTransform me, long n);
 
-AffineTransform AffineTransform_create (long n);
+autoAffineTransform AffineTransform_create (long n);
 
-Any AffineTransform_invert (I);
+autoAffineTransform AffineTransform_invert (AffineTransform me);
 /*
 	Get inverse transform for y = A x + t:
 		x = A^(-1)y - A^(-1) t
 */
 
-TableOfReal AffineTransform_extractMatrix (I);
+autoTableOfReal AffineTransform_extractMatrix (AffineTransform me);
 
-TableOfReal AffineTransform_extractTranslationVector (I);
+autoTableOfReal AffineTransform_extractTranslationVector (AffineTransform me);
 
 #endif /* _AffineTransform_h_ */
diff --git a/dwtools/AffineTransform_def.h b/dwtools/AffineTransform_def.h
index 0dc6be6..c8b3d3c 100644
--- a/dwtools/AffineTransform_def.h
+++ b/dwtools/AffineTransform_def.h
@@ -1,34 +1,32 @@
 /* AffineTransform_def.h
  * 
- * Copyright (C) 1993-2008 David Weenink
+ * Copyright (C) 1993-2008,2015 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT AffineTransform
-oo_DEFINE_CLASS (AffineTransform, Data)
+oo_DEFINE_CLASS (AffineTransform, Daata)
 
 	oo_LONG (n)
 	oo_DOUBLE_VECTOR (t, n)
 	oo_DOUBLE_MATRIX (r, n, n)
 
 	#if oo_DECLARING
-		// new methods:
-			virtual void v_transform (double **in, long nrows, double **out);
-			virtual Any v_invert ();
+		virtual void v_transform (double **in, long nrows, double **out);
+		virtual autoAffineTransform v_invert ();
 	#endif
 
 oo_END_CLASS(AffineTransform)
diff --git a/dwtools/CC.cpp b/dwtools/CC.cpp
index 069f836..077d7f1 100644
--- a/dwtools/CC.cpp
+++ b/dwtools/CC.cpp
@@ -1,27 +1,26 @@
 /* CC.cpp
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  djmw 20011016 removed some causes for compiler warnings
  djmw 20020315 GPL header
  djmw 20061212 Changed info to Melder_writeLine<x> format.
- djmw 20071012 Added: o_CAN_WRITE_AS_ENCODING.h
+ djmw 20071012 Added: oo_CAN_WRITE_AS_ENCODING.h
  djmw 20080122 float -> double
  djmw 20080513 CC_getValue
  */
@@ -51,7 +50,7 @@
 Thing_implement (CC, Sampled, 1);
 
 void structCC :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:", xmin, U" to ", xmax, U" seconds");
 	MelderInfo_writeLine (U"Number of frames: ", nx);
 	MelderInfo_writeLine (U"Time step: ", dx, U" seconds");
@@ -66,9 +65,7 @@ void CC_Frame_init (CC_Frame me, long numberOfCoefficients) {
 	my numberOfCoefficients = numberOfCoefficients;
 }
 
-void CC_init (I, double tmin, double tmax, long nt, double dt, double t1,
-              long maximumNumberOfCoefficients, double fmin, double fmax) {
-	iam (CC);
+void CC_init (CC me, double tmin, double tmax, long nt, double dt, double t1, long maximumNumberOfCoefficients, double fmin, double fmax) {
 	my fmin = fmin;
 	my fmax = fmax;
 	my maximumNumberOfCoefficients = maximumNumberOfCoefficients;
@@ -76,42 +73,45 @@ void CC_init (I, double tmin, double tmax, long nt, double dt, double t1,
 	my frame = NUMvector<structCC_Frame> (1, nt);
 }
 
-Matrix CC_to_Matrix (I) {
-	iam (CC);
+autoMatrix CC_to_Matrix (CC me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
-		                                 1, my maximumNumberOfCoefficients, my maximumNumberOfCoefficients, 1, 1);
-
+		// find number of coefficients by quering all frames.
+		// We cannot use maximumNumberOfCoefficiennts because this number is only used to calculate the inverse
+		long numberOfCoefficients = 0;
+		for (long i = 1; i <= my nx; i++) {
+			CC_Frame cf = & my frame[i];
+			if (cf -> numberOfCoefficients > numberOfCoefficients) {
+				numberOfCoefficients = cf -> numberOfCoefficients;
+			}
+		}
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1.0, numberOfCoefficients, numberOfCoefficients, 1.0, 1.0);
+		
 		for (long i = 1; i <= my nx; i++) {
 			CC_Frame cf = & my frame[i];
 			for (long j = 1; j <= cf -> numberOfCoefficients; j++) {
 				thy z[j][i] = cf -> c[j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-void CC_paint (I, Graphics g, double xmin, double xmax, long cmin,
-               long cmax, double minimum, double maximum, int garnish) {
-	iam (CC);
+void CC_paint (CC me, Graphics g, double xmin, double xmax, long cmin, long cmax, double minimum, double maximum, int garnish) {
 	autoMatrix thee = CC_to_Matrix (me);
 
-	Matrix_paintCells (thee.peek(), g, xmin, xmax, cmin, cmax, minimum, maximum);
+	Matrix_paintCells (thee.get(), g, xmin, xmax, cmin, cmax, minimum, maximum);
 
 	if (garnish) {
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Coefficients");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Coefficients");
 	}
 }
 
-void CC_drawC0 (I, Graphics g, double xmin, double xmax, double ymin,
-                double ymax, int garnish) {
-	iam (CC);
+void CC_drawC0 (CC me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	(void) garnish;
 
 	if (xmin >= xmax) {
@@ -140,8 +140,7 @@ void CC_drawC0 (I, Graphics g, double xmin, double xmax, double ymin,
 	Graphics_unsetInner (g);
 }
 
-void CC_getNumberOfCoefficients_extrema (I, long startframe, long endframe, long *min, long *max) {
-	iam (CC);
+void CC_getNumberOfCoefficients_extrema (CC me, long startframe, long endframe, long *p_min, long *p_max) {
 
 	Melder_assert (startframe <= endframe);
 
@@ -155,23 +154,28 @@ void CC_getNumberOfCoefficients_extrema (I, long startframe, long endframe, long
 		endframe = my nx;
 	}
 
-	*min = my maximumNumberOfCoefficients;
-	*max = 0;
+	long min = my maximumNumberOfCoefficients;
+	long max = 0;
 
 	for (long i = startframe; i <= endframe; i++) {
 		CC_Frame f = & my frame[i];
 		long nc = f -> numberOfCoefficients;
 
-		if (nc < *min) {
-			*min = nc;
-		} else if (nc > *max) {
-			*max = nc;
+		if (nc < min) {
+			min = nc;
+		} else if (nc > max) {
+			max = nc;
 		}
 	}
+	if (p_min) {
+		*p_min = min;
+	}
+	if (p_max) {
+		*p_max = max;
+	}
 }
 
-long CC_getMinimumNumberOfCoefficients (I, long startframe, long endframe) {
-	iam (CC);
+long CC_getMinimumNumberOfCoefficients (CC me, long startframe, long endframe) {
 	long min, max;
 
 	CC_getNumberOfCoefficients_extrema (me, startframe, endframe, &min, &max);
@@ -179,8 +183,7 @@ long CC_getMinimumNumberOfCoefficients (I, long startframe, long endframe) {
 	return min;
 }
 
-long CC_getMaximumNumberOfCoefficients (I, long startframe, long endframe) {
-	iam (CC);
+long CC_getMaximumNumberOfCoefficients (CC me, long startframe, long endframe) {
 	long min, max;
 
 	CC_getNumberOfCoefficients_extrema (me, startframe, endframe, &min, &max);
@@ -188,8 +191,7 @@ long CC_getMaximumNumberOfCoefficients (I, long startframe, long endframe) {
 	return max;
 }
 
-long CC_getNumberOfCoefficients (I, long iframe) {
-	iam (CC);
+long CC_getNumberOfCoefficients (CC me, long iframe) {
 	if (iframe < 1 || iframe > my nx) {
 		return 0;
 	}
@@ -198,8 +200,7 @@ long CC_getNumberOfCoefficients (I, long iframe) {
 }
 
 
-double CC_getValueInFrame (I, long iframe, long index) {
-	iam (CC);
+double CC_getValueInFrame (CC me, long iframe, long index) {
 	if (iframe < 1 || iframe > my nx) {
 		return NUMundefined;
 	}
@@ -207,14 +208,7 @@ double CC_getValueInFrame (I, long iframe, long index) {
 	return index > cf -> numberOfCoefficients ? NUMundefined : cf -> c[index];
 }
 
-double CC_getValueAtTime (I, double t, long index) {
-	iam (CC);
-	long iframe = Sampled_xToNearestIndex (me, t);
-	return CC_getValueInFrame (me, iframe, index);
-}
-
-double CC_getValue (I, double t, long index) {
-	iam (CC);
+double CC_getValue (CC me, double t, long index) {
 	long iframe = Sampled_xToNearestIndex (me, t);
 	if (iframe < 1 || iframe > my nx) {
 		return NUMundefined;
@@ -223,8 +217,7 @@ double CC_getValue (I, double t, long index) {
 	return index > cf -> numberOfCoefficients ? NUMundefined : cf -> c[index];
 }
 
-double CC_getC0ValueInFrame (I, long iframe) {
-	iam (CC);
+double CC_getC0ValueInFrame (CC me, long iframe) {
 	if (iframe < 1 || iframe > my nx) {
 		return NUMundefined;
 	}
@@ -232,10 +225,11 @@ double CC_getC0ValueInFrame (I, long iframe) {
 	return cf -> c0;
 }
 
-double CC_getC0ValueAtTime (I, double t) {
-	iam (CC);
+#if 0
+double CC_getC0ValueAtTime (CC me, double t) {
 	long iframe = Sampled_xToNearestIndex (me, t);
 	return CC_getC0ValueInFrame (me, iframe);
 }
+#endif
 
 /* End of file CC.cpp */
diff --git a/dwtools/CC.h b/dwtools/CC.h
index d9983cf..4261548 100644
--- a/dwtools/CC.h
+++ b/dwtools/CC.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,32 +29,28 @@
 #include "Matrix.h"
 
 #include "CC_def.h"
-oo_CLASS_CREATE (CC, Sampled);
 
-void CC_init (I, double tmin, double tmax, long nt, double dt, double t1,
-	long maximumNumberOfCoefficients, double fmin, double fmax);
+void CC_init (CC me, double tmin, double tmax, long nt, double dt, double t1, long maximumNumberOfCoefficients, double fmin, double fmax);
 
-void CC_getNumberOfCoefficients_extrema (I, long startframe,
-	long endframe, long *min, long *max);
+void CC_getNumberOfCoefficients_extrema (CC me, long startframe, long endframe, long *min, long *max);
 
-long CC_getMinimumNumberOfCoefficients (I, long startframe, long endframe);
+long CC_getMinimumNumberOfCoefficients (CC me, long startframe, long endframe);
 
-long CC_getMaximumNumberOfCoefficients (I, long startframe, long endframe);
+long CC_getMaximumNumberOfCoefficients (CC me, long startframe, long endframe);
 
-long CC_getNumberOfCoefficients (I, long iframe);
+long CC_getNumberOfCoefficients (CC me, long iframe);
 
-double CC_getValueInFrame (I, long iframe, long index);
-double CC_getC0ValueInFrame (I, long iframe);
+double CC_getValueInFrame (CC me, long iframe, long index);
 
-void CC_paint (I, Graphics g, double xmin, double xmax, long cmin,
-	long cmax, double minimum, double maximum, int garnish);
+double CC_getC0ValueInFrame (CC me, long iframe);
 
-void CC_drawC0 (I, Graphics g, double xmin, double xmax, double ymin,
-	double ymax, int garnish);
+void CC_paint (CC me, Graphics g, double xmin, double xmax, long cmin, long cmax, double minimum, double maximum, int garnish);
 
-Matrix CC_to_Matrix (I);
+void CC_drawC0 (CC me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
 
-double CC_getValue (I, double t, long index);
+autoMatrix CC_to_Matrix (CC me);
+
+double CC_getValue (CC me, double t, long index);
 
 /******************* Frames ************************************************/
 
diff --git a/dwtools/CCA.cpp b/dwtools/CCA.cpp
index 6019e15..c4fbc6c 100644
--- a/dwtools/CCA.cpp
+++ b/dwtools/CCA.cpp
@@ -1,20 +1,19 @@
 /* CCA.c
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -57,15 +56,15 @@
 #include "CCA_def.h"
 
 void structCCA :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of coefficients: ", numberOfCoefficients);
 	MelderInfo_writeLine (U"ny: ", y -> dimension);
 	MelderInfo_writeLine (U"nx: ", x -> dimension);
 }
 
-Thing_implement (CCA, Data, 0);
+Thing_implement (CCA, Daata, 0);
 
-CCA CCA_create (long numberOfCoefficients, long ny, long nx) {
+autoCCA CCA_create (long numberOfCoefficients, long ny, long nx) {
 	try {
 		autoCCA me = Thing_new (CCA);
 		my numberOfCoefficients = numberOfCoefficients;
@@ -73,42 +72,45 @@ CCA CCA_create (long numberOfCoefficients, long ny, long nx) {
 		my xLabels = Thing_new (Strings);
 		my y = Eigen_create (numberOfCoefficients, ny);
 		my x = Eigen_create (numberOfCoefficients, nx);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CCA not created.");
 	}
 }
 
-void CCA_drawEigenvector (CCA me, Graphics g, int x_or_y, long ivec, long first, long last,
-                          double ymin, double ymax, int weigh, double size_mm, const char32 *mark,	int connect, int garnish) {
-	Eigen e = my x;
-	Strings labels = my xLabels;
+void CCA_drawEigenvector (CCA me, Graphics g, int x_or_y, long ivec, long first, long last, double ymin, double ymax, int weigh, double size_mm, const char32 *mark,	int connect, int garnish) {
+	Eigen e = my x.get();
+	Strings labels = my xLabels.get();
 	if (x_or_y == 1) {
-		e = my y; labels = my yLabels;
+		e = my y.get();
+		labels = my yLabels.get();
 	}
-	Eigen_drawEigenvector (e, g, ivec, first, last, ymin, ymax, weigh, size_mm, mark,
-	                       connect, labels -> strings, garnish);
+	Eigen_drawEigenvector (e, g, ivec, first, last, ymin, ymax, weigh, size_mm, mark, connect, labels -> strings, garnish);
 }
 
 double CCA_getEigenvectorElement (CCA me, int x_or_y, long ivec, long element) {
-	Eigen e = x_or_y == 1 ? my y : my x;
+	Eigen e = ( x_or_y == 1 ? my y.get() : my x.get() );
 	return Eigen_getEigenvectorElement (e, ivec, element);
 }
 
-CCA TableOfReal_to_CCA (TableOfReal me, long ny) {
+autoCCA TableOfReal_to_CCA (TableOfReal me, long ny) {
 	try {
 		long n = my numberOfRows, nx = my numberOfColumns - ny;
 
 		if (ny < 1 || ny > my numberOfColumns - 1) {
 			Melder_throw (U"Dimension of first part not correct.");
 		}
-		if (ny > nx) Melder_throw (U"The dimension of the dependent part (", ny, U") must be less than or equal to "
-			                           "the dimension of the independent part (", nx, U").");
+		if (ny > nx) {
+			Melder_throw (U"The dimension of the dependent part (", ny, U") must be less than or equal to "
+				"the dimension of the independent part (", nx, U").");
+		}
 		if (n < ny) {
 			Melder_throw (U"The number of observations must be larger then ", ny, U".");
 		}
-
-		TableOfReal_areAllCellsDefined (me, 0, 0, 0, 0);
+			
+		if (! NUMdmatrix_hasFiniteElements (my data, 1, my numberOfRows, 1, my numberOfColumns)) {
+			Melder_throw (U"At least one of the table's elements is not finite or undefined.");;
+		}
 		// Use svd as (temporary) storage, and copy data
 
 		autoSVD svdy = SVD_create (n, ny);
@@ -129,42 +131,39 @@ CCA TableOfReal_to_CCA (TableOfReal me, long ny) {
 		double **vx = svdx -> v;
 		double fnormy = NUMfrobeniusnorm (n, ny, uy);
 		double fnormx = NUMfrobeniusnorm (n, nx, ux);
-		if (fnormy == 0 || fnormx == 0) {
+		if (fnormy == 0.0 || fnormx == 0.0) {
 			Melder_throw (U"One of the parts of the table contains only zeros.");
 		}
 
-		/*
-			Centre the data and svd it.
-		*/
+		// Centre the data and svd it.
 
-		NUMcentreColumns (uy, 1, n, 1, ny, NULL);
-		NUMcentreColumns (ux, 1, n, 1, nx, NULL);
+		NUMcentreColumns (uy, 1, n, 1, ny, nullptr);
+		NUMcentreColumns (ux, 1, n, 1, nx, nullptr);
 
-		SVD_compute (svdy.peek()); SVD_compute (svdx.peek());
+		SVD_compute (svdy.get());
+		SVD_compute (svdx.get());
 
-		long numberOfZeroedy = SVD_zeroSmallSingularValues (svdy.peek(), 0);
-		long numberOfZeroedx = SVD_zeroSmallSingularValues (svdx.peek(), 0);
+		long numberOfZeroedy = SVD_zeroSmallSingularValues (svdy.get(), 0.0);
+		long numberOfZeroedx = SVD_zeroSmallSingularValues (svdx.get(), 0.0);
 
-		/*
-			Form the matrix C = ux' uy (use svd-object storage)
-		*/
+		// Form the matrix C = ux' uy (use svd-object storage)
 
 		autoSVD svdc = SVD_create (nx, ny);
 		double **uc = svdc -> u;
 		double **vc = svdc -> v;
 
-		for (long i = 1; i <= nx; i++) {
-			for (long j = 1; j <= ny; j++) {
-				double t = 0;
-				for (long q = 1; q <= n; q++) {
-					t += ux[q][i] * uy[q][j];
+		for (long i = 1; i <= nx; i ++) {
+			for (long j = 1; j <= ny; j ++) {
+				double t = 0.0;
+				for (long q = 1; q <= n; q ++) {
+					t += ux [q] [i] * uy [q] [j];
 				}
-				uc[i][j] = t;
+				uc [i] [j] = t;
 			}
 		}
 
-		SVD_compute (svdc.peek());
-		long numberOfZeroedc = SVD_zeroSmallSingularValues (svdc.peek(), 0);
+		SVD_compute (svdc.get());
+		long numberOfZeroedc = SVD_zeroSmallSingularValues (svdc.get(), 0.0);
 		long numberOfCoefficients = ny - numberOfZeroedc;
 
 		autoCCA thee = CCA_create (numberOfCoefficients, ny, nx);
@@ -185,66 +184,64 @@ CCA TableOfReal_to_CCA (TableOfReal me, long ny) {
 			rows(X') = evecx[i][j] = Uc[k][i] * Vx[j][k] / Dx[k]
 		*/
 
-		for (long i = 1; i <= numberOfCoefficients; i++) {
-			double ccc = svdc -> d[i];
-			thy y -> eigenvalues[i] = thy x -> eigenvalues[i] = ccc * ccc;
-			for (long j = 1; j <= ny; j++) {
-				double t = 0;
-				for (long q = 1; q <= ny - numberOfZeroedy; q++) {
-					t += vc[q][i] * vy[j][q] / svdy -> d[q];
+		for (long i = 1; i <= numberOfCoefficients; i ++) {
+			double ccc = svdc -> d [i];
+			thy y -> eigenvalues [i] = thy x -> eigenvalues [i] = ccc * ccc;
+			for (long j = 1; j <= ny; j ++) {
+				double t = 0.0;
+				for (long q = 1; q <= ny - numberOfZeroedy; q ++) {
+					t += vc [q] [i] * vy [j] [q] / svdy -> d [q];
 				}
-				evecy[i][j] = t;
+				evecy [i] [j] = t;
 			}
-			for (long j = 1; j <= nx; j++) {
-				double t = 0;
-				for (long q = 1; q <= nx - numberOfZeroedx; q++) {
-					t += uc[q][i] * vx[j][q] / svdx -> d[q];
+			for (long j = 1; j <= nx; j ++) {
+				double t = 0.0;
+				for (long q = 1; q <= nx - numberOfZeroedx; q ++) {
+					t += uc [q] [i] * vx [j] [q] / svdx -> d [q];
 				}
-				evecx[i][j] = t;
+				evecx [i] [j] = t;
 			}
 		}
 
-		/*
-			Normalize eigenvectors.
-		*/
+		// Normalize eigenvectors.
+
 		NUMnormalizeRows (thy y -> eigenvectors, numberOfCoefficients, ny, 1);
 		NUMnormalizeRows (thy x -> eigenvectors, numberOfCoefficients, nx, 1);
 		Melder_assert (thy x -> dimension == thy xLabels -> numberOfStrings &&
 		               thy y -> dimension == thy yLabels -> numberOfStrings);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": CCA not created.");
 	}
 }
 
-TableOfReal CCA_and_TableOfReal_scores (CCA me, TableOfReal thee, long numberOfFactors) {
+autoTableOfReal CCA_and_TableOfReal_scores (CCA me, TableOfReal thee, long numberOfFactors) {
 	try {
 		long n = thy numberOfRows;
 		long nx = my x -> dimension, ny = my y -> dimension;
 
-		if (ny + nx != thy numberOfColumns) Melder_throw (U"The number of columns in the table (", thy numberOfColumns,
-			        U") does not agree with the dimensions of the CCA object (ny + nx = ", ny, U" + ", nx, U").");
-
+		if (ny + nx != thy numberOfColumns) {
+			Melder_throw (U"The number of columns in the table (", thy numberOfColumns, U") does not agree with the dimensions of the CCA object (ny + nx = ", ny, U" + ", nx, U").");
+		}
 		if (numberOfFactors == 0) {
 			numberOfFactors = my numberOfCoefficients;
 		}
-		if (numberOfFactors < 1 || numberOfFactors > my numberOfCoefficients) Melder_throw
-			(U"The number of factors must be in interval [1, ", my numberOfCoefficients, U"].");
-
+		if (numberOfFactors < 1 || numberOfFactors > my numberOfCoefficients) {
+			Melder_throw (U"The number of factors must be in interval [1, ", my numberOfCoefficients, U"].");
+		}
 		autoTableOfReal him = TableOfReal_create (n, 2 * numberOfFactors);
-		TableOfReal phim = him.peek();
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, thy numberOfRows);
-		Eigen_and_TableOfReal_project_into (my y, thee, 1, ny, &phim, 1, numberOfFactors);
-		Eigen_and_TableOfReal_project_into (my x, thee, ny + 1, thy numberOfColumns, &phim, numberOfFactors + 1, his numberOfColumns);
-		TableOfReal_setSequentialColumnLabels (him.peek(), 1, numberOfFactors, U"y_", 1, 1);
-		TableOfReal_setSequentialColumnLabels (him.peek(), numberOfFactors + 1, his numberOfColumns, U"x_", 1, 1);
-		return him.transfer();
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (my y.get(), thee, 1, him.get(), 1, numberOfFactors);
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (my x.get(), thee, ny + 1, him.get(), numberOfFactors + 1, numberOfFactors);
+		TableOfReal_setSequentialColumnLabels (him.get(), 1, numberOfFactors, U"y_", 1, 1);
+		TableOfReal_setSequentialColumnLabels (him.get(), numberOfFactors + 1, his numberOfColumns, U"x_", 1, 1);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TableOfReal with scores created.");
 	}
 }
 
-TableOfReal CCA_and_TableOfReal_predict (CCA me, TableOfReal thee, long from) {
+autoTableOfReal CCA_and_TableOfReal_predict (CCA me, TableOfReal thee, long from) {
 	try {
 		long ny = my y -> dimension, nx = my x -> dimension;
 		long nev = my y -> numberOfEigenvalues;
@@ -268,34 +265,34 @@ TableOfReal CCA_and_TableOfReal_predict (CCA me, TableOfReal thee, long from) {
 
 		// ???? dimensions if nx .. ny ??
 
-		autoTableOfReal him = Eigen_and_TableOfReal_project (my x, thee, from, ny);
+		autoTableOfReal him = Eigen_and_TableOfReal_to_TableOfReal_projectRows (my x.get(), thee, from, ny);
 		autoNUMvector<double> buf (1, ny);
 
 		// u = V a -> a = V'u
 
 		double **v = my y -> eigenvectors;
 		double *d = my y -> eigenvalues;
-		for (long i = 1; i <= thy numberOfRows; i++) {
-			NUMvector_copyElements (his data[i], buf.peek(), 1, ny);
-			for (long j = 1; j <= ny; j++) {
-				double t = 0;
-				for (long k = 1; k <= ny; k++) {
-					t += sqrt (d[k]) * v[k][j] * buf[k];
+		for (long i = 1; i <= thy numberOfRows; i ++) {
+			NUMvector_copyElements (his data [i], buf.peek(), 1, ny);
+			for (long j = 1; j <= ny; j ++) {
+				double t = 0.0;
+				for (long k = 1; k <= ny; k ++) {
+					t += sqrt (d [k]) * v [k] [j] * buf [k];
 				}
-				his data [i][j] = t;
+				his data [i] [j] = t;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no predictions created.");
 	}
 }
 
-TableOfReal CCA_and_TableOfReal_factorLoadings (CCA me, TableOfReal thee) {
+autoTableOfReal CCA_and_TableOfReal_factorLoadings (CCA me, TableOfReal thee) {
 	try {
 		autoCorrelation c = TableOfReal_to_Correlation (thee);
-		autoTableOfReal him = CCA_and_Correlation_factorLoadings (me, c.peek());
-		return him.transfer();
+		autoTableOfReal him = CCA_and_Correlation_factorLoadings (me, c.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no factor loadings created.");
 	}
@@ -305,28 +302,33 @@ double CCA_getCorrelationCoefficient (CCA me, long index) {
 	if (index < 1 || index > my numberOfCoefficients) {
 		return NUMundefined;
 	}
-
 	return sqrt (my y -> eigenvalues[index]);
 }
 
-void CCA_getZeroCorrelationProbability (CCA me, long index, double *chisq, long *ndf, double *probability) {
-	double lambda = 1, *ev = my y -> eigenvalues;
+void CCA_getZeroCorrelationProbability (CCA me, long index, double *p_prob, double *p_chisq, double *p_df) {
+	double lambda = 1.0, *ev = my y -> eigenvalues;
 	long nev = my y -> numberOfEigenvalues;
 	long ny = my y -> dimension, nx = my x -> dimension;
 
-	*chisq = *probability = NUMundefined;
-	*ndf = 0;
+	double chisq = NUMundefined, prob = NUMundefined, df = NUMundefined;
 
-	if (index < 1 || index > nev) {
-		return;
+	if (index >= 1 && index <= nev) {
+		for (long i = index; i <= nev; i ++) {
+			lambda *= 1.0 - ev [i];
+		}
+		df = (ny - index + 1) * (nx - index + 1);
+		chisq = - (my numberOfObservations - (ny + nx + 3.0) / 2.0) * log (lambda);
+		prob = NUMchiSquareQ (chisq, df);
 	}
-
-	for (long i = index; i <= nev; i++) {
-		lambda *= (1 - ev[i]);
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_df) {
+		*p_df = df;
+	}
+	if (p_prob) {
+		*p_prob = prob;
 	}
-	*ndf = (ny - index + 1) * (nx - index + 1);
-	*chisq = - (my numberOfObservations - (ny + nx + 3) / 2) * log (lambda);
-	*probability = NUMchiSquareQ (*chisq, *ndf);
 }
 
 /* End of file CCA.c */
diff --git a/dwtools/CCA.h b/dwtools/CCA.h
index 2450793..213866a 100644
--- a/dwtools/CCA.h
+++ b/dwtools/CCA.h
@@ -2,21 +2,20 @@
 #define _CCA_h_
 /* CCA.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,7 +28,6 @@
 #include "TableOfReal.h"
 
 #include "CCA_def.h"
-oo_CLASS_CREATE (CCA, Data);
 
 /*
 	Class CCA represents the Canonical Correlation Analysis of two datasets
@@ -50,14 +48,14 @@ oo_CLASS_CREATE (CCA, Data);
 	uncorrelated with c1[1] and c2[1], and so on, for all p possible pairs.
 */
 
-CCA CCA_create (long numberOfCoefficients, long ny, long nx);
+autoCCA CCA_create (long numberOfCoefficients, long ny, long nx);
 
 void CCA_drawEigenvector (CCA me, Graphics g, int x_or_y, long ivec, long first, long last,
 	double ymin, double ymax, int weigh, double size_mm, const char32 *mark, int connect, int garnish);
 
 double CCA_getEigenvectorElement (CCA me, int x_or_y, long ivec, long element);
 
-CCA TableOfReal_to_CCA (TableOfReal me, long ny);
+autoCCA TableOfReal_to_CCA (TableOfReal me, long ny);
 /*
 	Solves the canonical correlation analysis equations:
 
@@ -100,7 +98,7 @@ CCA TableOfReal_to_CCA (TableOfReal me, long ny);
 	X2 = V2*inv(D2)*U
 */
 
-TableOfReal CCA_and_TableOfReal_scores (CCA me, TableOfReal thee, long numberOfFactors);
+autoTableOfReal CCA_and_TableOfReal_scores (CCA me, TableOfReal thee, long numberOfFactors);
 /*
 	Return the factors in a table with 2*numberOfFactors columns.
 	The first 'numberOfFactors' columns are the scores for the dependent part
@@ -108,7 +106,7 @@ TableOfReal CCA_and_TableOfReal_scores (CCA me, TableOfReal thee, long numberOfF
 	independent part.
 */
 
-TableOfReal CCA_and_TableOfReal_factorLoadings (CCA me, TableOfReal thee);
+autoTableOfReal CCA_and_TableOfReal_factorLoadings (CCA me, TableOfReal thee);
 /*
 	Get the canonical factor loadings (also structure correlation coefficients),
 	the correlation of a canonical variable with an original variable.
@@ -116,10 +114,9 @@ TableOfReal CCA_and_TableOfReal_factorLoadings (CCA me, TableOfReal thee);
 
 double CCA_getCorrelationCoefficient (CCA me, long index);
 
-void CCA_getZeroCorrelationProbability (CCA me, long index, double *chisq,
-	long *ndf, double *probability);
+void CCA_getZeroCorrelationProbability (CCA me, long index, double *prob, double *chisq, double *df);
 
-TableOfReal CCA_and_TableOfReal_predict (CCA me, TableOfReal thee, long from);
+autoTableOfReal CCA_and_TableOfReal_predict (CCA me, TableOfReal thee, long from);
 /*
 	Given independent table, predict the dependent one, on the basis of
 	the canonical correlations.
diff --git a/dwtools/CCA_and_Correlation.cpp b/dwtools/CCA_and_Correlation.cpp
index 9ab4f1d..4ab6115 100644
--- a/dwtools/CCA_and_Correlation.cpp
+++ b/dwtools/CCA_and_Correlation.cpp
@@ -1,20 +1,19 @@
 /* CCA_and_Correlation.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,38 +26,37 @@
 #include "CCA_and_Correlation.h"
 #include "NUM2.h"
 
-TableOfReal CCA_and_Correlation_factorLoadings (CCA me, Correlation thee) {
+autoTableOfReal CCA_and_Correlation_factorLoadings (CCA me, Correlation thee) {
 	try {
 		long ny = my y -> dimension, nx = my x -> dimension;
 
-		if (ny + nx != thy numberOfColumns) Melder_throw (U"The number of columns in the Correlation "
-			        U"must equal the sum of the dimensions in the CCA object");
-
+		if (ny + nx != thy numberOfColumns) {
+			Melder_throw (U"The number of columns in the Correlation must equal the sum of the dimensions in the CCA object");
+		}
 		autoTableOfReal him = TableOfReal_create (2 * my numberOfCoefficients, thy numberOfColumns);
 
 		NUMstrings_copyElements (thy columnLabels, his columnLabels, 1, thy numberOfColumns);
-		TableOfReal_setSequentialRowLabels (him.peek(), 1, my numberOfCoefficients, U"dv", 1, 1);
-		TableOfReal_setSequentialRowLabels (him.peek(), my numberOfCoefficients + 1,
-		                                    2 * my numberOfCoefficients, U"iv", 1, 1);
+		TableOfReal_setSequentialRowLabels (him.get(), 1, my numberOfCoefficients, U"dv", 1, 1);
+		TableOfReal_setSequentialRowLabels (him.get(), my numberOfCoefficients + 1, 2 * my numberOfCoefficients, U"iv", 1, 1);
 
 		double **evecy = my y -> eigenvectors, **evecx = my x -> eigenvectors;
 		for (long i = 1; i <= thy numberOfRows; i++) {
-			for (long j = 1; j <= my numberOfCoefficients; j++) {
-				double t = 0;
-				for (long k = 1; k <= ny; k++) {
-					t += thy data[i][k] * evecy[j][k];
+			for (long j = 1; j <= my numberOfCoefficients; j ++) {
+				double t = 0.0;
+				for (long k = 1; k <= ny; k ++) {
+					t += thy data [i] [k] * evecy [j] [k];
 				}
 				his data[j][i] = t;
 			}
-			for (long j = 1; j <= my numberOfCoefficients; j++) {
-				double t = 0;
-				for (long k = 1; k <= nx; k++) {
-					t += thy data[i][ny + k] * evecx[j][k];
+			for (long j = 1; j <= my numberOfCoefficients; j ++) {
+				double t = 0.0;
+				for (long k = 1; k <= nx; k ++) {
+					t += thy data [i] [ny + k] * evecx [j] [k];
 				}
-				his data[my numberOfCoefficients + j][i] = t;
+				his data [my numberOfCoefficients + j] [i] = t;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not created from CCA & Correlation.");
 	}
@@ -103,12 +101,12 @@ double CCA_and_Correlation_getVarianceFraction (CCA me, Correlation thee, int x_
 		ioffset = 0;
 	}
 
-	double varianceFraction = 0;
+	double varianceFraction = 0.0;
 	for (long icv = canonicalVariate_from; icv <= canonicalVariate_to; icv++) {
-		double variance = 0, varianceScaling = 0;
+		double variance = 0.0, varianceScaling = 0.0;
 
 		for (long i = 1; i <= n; i++) {
-			double si = 0;
+			double si = 0.0;
 			for (long j = 1; j <= n; j++) {
 				si += thy data[ioffset + i][ioffset + j] * evec[icv][j]; /* Rxx.e */
 			}
@@ -124,7 +122,7 @@ double CCA_and_Correlation_getVarianceFraction (CCA me, Correlation thee, int x_
 double CCA_and_Correlation_getRedundancy_sl (CCA me, Correlation thee, int x_or_y, int canonicalVariate_from, int canonicalVariate_to) {
 	_CCA_and_Correlation_check (me, thee, canonicalVariate_from, canonicalVariate_to);
 
-	double redundancy = 0;
+	double redundancy = 0.0;
 	for (long icv = canonicalVariate_from; icv <= canonicalVariate_to; icv++) {
 		double varianceFraction = CCA_and_Correlation_getVarianceFraction (me, thee, x_or_y, icv, icv);
 		if (varianceFraction == NUMundefined) {
diff --git a/dwtools/CCA_and_Correlation.h b/dwtools/CCA_and_Correlation.h
index 44967e6..a2c8d56 100644
--- a/dwtools/CCA_and_Correlation.h
+++ b/dwtools/CCA_and_Correlation.h
@@ -2,21 +2,20 @@
 #define _CCA_and_Correlation_h_
 /* CCA_and_Correlation.h
  * 
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@
 #include "CCA.h"
 #include "SSCP.h"
 
-TableOfReal CCA_and_Correlation_factorLoadings (CCA me, Correlation thee);
+autoTableOfReal CCA_and_Correlation_factorLoadings (CCA me, Correlation thee);
 /*
 	Get the canonical factor loadings (also structure correlation coefficients),
 	the correlation of a canonical variable with an original variable.
diff --git a/dwtools/CCA_def.h b/dwtools/CCA_def.h
index 3423a46..0ad2748 100644
--- a/dwtools/CCA_def.h
+++ b/dwtools/CCA_def.h
@@ -1,20 +1,19 @@
 /* CCA_def.h
  * 
- * Copyright (C) 1993-2008 David Weenink
+ * Copyright (C) 1993-2008, 2015 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,15 +24,16 @@
  djmw 20080122 float -> double
  */
 
+
 #define ooSTRUCT CCA
-oo_DEFINE_CLASS (CCA, Data)
+oo_DEFINE_CLASS (CCA, Daata)
 
 	oo_LONG (numberOfCoefficients)
 	oo_LONG (numberOfObservations)
-	oo_OBJECT (Strings, 0, yLabels)
-	oo_OBJECT (Strings, 0, xLabels)
-	oo_OBJECT(Eigen, 0, y)
-	oo_OBJECT(Eigen, 0, x)
+	oo_AUTO_OBJECT (Strings, 0, yLabels)
+	oo_AUTO_OBJECT (Strings, 0, xLabels)
+	oo_AUTO_OBJECT(Eigen, 0, y)
+	oo_AUTO_OBJECT(Eigen, 0, x)
 
 	#if oo_DECLARING
 		void v_info ()
@@ -43,4 +43,5 @@ oo_DEFINE_CLASS (CCA, Data)
 oo_END_CLASS (CCA)
 #undef ooSTRUCT
 
+
 /* End of file CCA_def.h */
diff --git a/dwtools/CC_def.h b/dwtools/CC_def.h
index 45c49d9..e48dd2f 100644
--- a/dwtools/CC_def.h
+++ b/dwtools/CC_def.h
@@ -2,19 +2,18 @@
  * 
  * Copyright (C) 1993-2013 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/dwtools/CCs_to_DTW.cpp b/dwtools/CCs_to_DTW.cpp
index e85607f..33dabfd 100644
--- a/dwtools/CCs_to_DTW.cpp
+++ b/dwtools/CCs_to_DTW.cpp
@@ -2,21 +2,20 @@
  *
  *	Dynamic Time Warp of two CCs.
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -32,14 +31,14 @@ static void regression (CC me, long frame, double r[], long nr) {
 	// sum(i^2;i=-n..n) = 2n^3/3 + n^2 +n/3 = n (n (2n/3 + 1) + 1/3);
 
 	long nrd2 = nr / 2;
-	double sumsq = nrd2 * (nrd2 * (nr / 3 + 1) + 1 / 3);
+	double sumsq = nrd2 * (nrd2 * (nr / 3.0 + 1.0) + 1.0 / 3.0);
 
 	if (frame <= nrd2 || frame >= my nx - nrd2) {
 		return;
 	}
 
 	for (long i = 0; i <= my maximumNumberOfCoefficients; i++) {
-		r[i] = 0;
+		r[i] = 0.0;
 	}
 
 	long nmin = CC_getMinimumNumberOfCoefficients (me, frame - nrd2, frame + nrd2);
@@ -55,20 +54,20 @@ static void regression (CC me, long frame, double r[], long nr) {
 	}
 }
 
-DTW CCs_to_DTW (CC me, CC thee, double wc, double wle, double wr, double wer, double dtr) {
+autoDTW CCs_to_DTW (CC me, CC thee, double wc, double wle, double wr, double wer, double dtr) {
 	try {
 		if (my maximumNumberOfCoefficients != thy maximumNumberOfCoefficients) {
 			Melder_throw (U"CC orders must be equal.");
 		}
 		long nr = (long) floor (dtr / my dx);
-		if (wr != 0 && nr < 2) {
+		if (wr != 0.0 && nr < 2) {
 			Melder_throw (U"Time window for regression is too small.");
 		}
 
 		if (nr % 2 == 0) {
-			nr++;
+			nr ++;
 		}
-		if (wr != 0) {
+		if (wr != 0.0) {
 			Melder_casual (nr, U" frames used for regression coefficients.");
 		}
 
@@ -76,65 +75,65 @@ DTW CCs_to_DTW (CC me, CC thee, double wc, double wle, double wr, double wer, do
 		autoNUMvector<double> ri (0L, my maximumNumberOfCoefficients);
 		autoNUMvector<double> rj (0L, my maximumNumberOfCoefficients);
 
-		// Calculate distance matrix
+		/* Calculate distance matrix. */
 
 		autoMelderProgress progess (U"CCs_to_DTW");
-		for (long i = 1; i <= my nx; i++) {
-			CC_Frame fi = & my frame[i];
+		for (long i = 1; i <= my nx; i ++) {
+			CC_Frame fi = & my frame [i];
 
 			regression (me, i, ri.peek(), nr);
 
-			for (long j = 1; j <= thy nx; j++) {
-				CC_Frame fj = & thy frame[j];
-				double dist = 0, distr = 0;
+			for (long j = 1; j <= thy nx; j ++) {
+				CC_Frame fj = & thy frame [j];
+				double dist = 0.0, distr = 0.0;
 
-				// Cepstral distance
+				/* Cepstral distance. */
 
-				if (wc != 0) {
-					for (long k = 1; k <= fj -> numberOfCoefficients; k++) {
-						double d = fi -> c[k] - fj -> c[k];
+				if (wc != 0.0) {
+					for (long k = 1; k <= fj -> numberOfCoefficients; k ++) {
+						double d = fi -> c [k] - fj -> c [k];
 						dist += d * d;
 					}
 					dist *= wc;
 				}
 
-				// Log energy distance
+				/* Log energy distance. */
 
-				if (wle != 0) {
+				if (wle != 0.0) {
 					double d = fi -> c0 - fj -> c0;
 					dist += wle * d * d;
 				}
 
-				// Regression distance
+				/* Regression distance. */
 
-				if (wr != 0) {
+				if (wr != 0.0) {
 					regression (thee, j, rj.peek(), nr);
-					for (long k = 1; k <= fj -> numberOfCoefficients; k++) {
-						double d = ri[k] - rj[k];
+					for (long k = 1; k <= fj -> numberOfCoefficients; k ++) {
+						double d = ri [k] - rj [k];
 						distr += d * d;
 					}
 					dist += wr * distr;
 				}
 
-				// Regression on c[0]: log(energy)
+				/* Regression on c[0]: log(energy) */
 
-				if (wer != 0) {
-					if (wr == 0) {
+				if (wer != 0.0) {
+					if (wr == 0.0) {
 						regression (thee, j, rj.peek(), nr);
 					}
-					double d = ri[0] - rj[0];
+					double d = ri [0] - rj [0];
 					dist += wer * d * d;
 				}
 
 				dist /= wc + wle + wr + wer;
-				his z[i][j] = sqrt (dist);	/* prototype along y-direction */
+				his z [i] [j] = sqrt (dist);   // prototype along y-direction
 			}
 
-			if ( (i % 10) == 1) {
+			if (i % 10 == 1) {
 				Melder_progress (0.999 * i / my nx, U"Calculate distances: frame ", i, U" from ", my nx, U".");
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created from CCs.");
 	}
diff --git a/dwtools/CCs_to_DTW.h b/dwtools/CCs_to_DTW.h
index a47f0b6..bd8c147 100644
--- a/dwtools/CCs_to_DTW.h
+++ b/dwtools/CCs_to_DTW.h
@@ -4,21 +4,20 @@
  *
  *	Dynamic Time Warp of two CCs.
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,7 +29,7 @@
 #include "DTW.h"
 
 
-DTW CCs_to_DTW (CC me, CC thee, double wc, double wle, double wr, double wer, double dtr);
+autoDTW CCs_to_DTW (CC me, CC thee, double wc, double wle, double wr, double wer, double dtr);
 /*
 	1. Calculate distances between CCs:
 		Distance between frame i (from me) and j (from thee) is
diff --git a/dwtools/Categories.cpp b/dwtools/Categories.cpp
index 4188058..c2d98ec 100644
--- a/dwtools/Categories.cpp
+++ b/dwtools/Categories.cpp
@@ -1,20 +1,19 @@
 /* Categories.cpp
  *
- * Copyright (C) 1993-2013 David Weenink, 2015 Paul Boersma
+ * Copyright (C) 1993-2013, 2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,24 +26,24 @@
 void structCategories :: v_readText (MelderReadText a_text, int /*formatVersion*/) {
 	long l_size = texgeti4 (a_text);
 	if (l_size == 0) {
-		OrderedOfString_init (this, 1);
+		(void) 0;
 	} else if (l_size < 0) {
 		Melder_throw (U"Size cannot be negative.");
 	} else {
-		OrderedOfString_init (this, l_size);
+		our _grow (l_size);
 	}
 	for (long i = 1; i <= l_size; i ++) {
 		autoSimpleString itemi = Thing_new (SimpleString);
 		itemi -> v_readText (a_text, 0);
-		Ordered_addItemPos (this, itemi.transfer(), i);
+		our addItemAtPosition_move (itemi.move(), i);
 	}
 }
 
 void structCategories :: v_writeText (MelderFile file) {
-	texputi4 (file, size, U"size", 0, 0, 0, 0, 0);
-	for (long i = 1; i <= size; i++) {
-		SimpleString data = (SimpleString) item [i];
-		texputintro (file, U"item" " [", Melder_integer (i), U"]:", NULL, NULL, NULL);
+	texputi4 (file, our size, U"size", nullptr, nullptr, nullptr, nullptr, nullptr);
+	for (long i = 1; i <= our size; i ++) {
+		SimpleString data = our at [i];
+		texputintro (file, U"item [", Melder_integer (i), U"]:", nullptr, nullptr, nullptr);
 		data -> structSimpleString :: v_writeText (file);
 		texexdent (file);
 	}
@@ -52,58 +51,51 @@ void structCategories :: v_writeText (MelderFile file) {
 
 Thing_implement (Categories, OrderedOfString, 0);
 
-void Categories_init (Categories me, long size) {
-	OrderedOfString_init (me, size);
-}
-
-Categories Categories_create () {
+autoCategories Categories_create () {
 	try {
 		autoCategories me = Thing_new (Categories);
-		Categories_init (me.peek(), 10);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Categories not created.");
 	}
 }
 
-Categories Categories_sequentialNumbers (long n) {
+autoCategories Categories_createWithSequentialNumbers (long n) {
 	try {
 		autoCategories me = Thing_new (Categories);
-		OrderedOfString_init (me.peek(), 5);
-		OrderedOfString_sequentialNumbers (me.peek(), n);
-		return me.transfer();
+		OrderedOfString_initWithSequentialNumbers (me.get(), n);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sequential number Categories not created.");
 	}
 }
 
-Categories Categories_selectUniqueItems (Categories me, int sorted) {
+autoCategories Categories_selectUniqueItems (Categories me) {
 	try {
-		autoOrderedOfString s = OrderedOfString_selectUniqueItems (me, sorted);
-		autoCategories thee = OrderedOfString_to_Categories (s.peek());
-		return thee.transfer();
+		autoOrderedOfString s = OrderedOfString_selectUniqueItems (me);
+		autoCategories thee = OrderedOfString_to_Categories (s.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no unique categories created.");
 	}
 }
 
-void Categories_drawItem (Categories me, Graphics g, long position,
-                          double xWC, double yWC) {
+void Categories_drawItem (Categories me, Graphics g, long position, double xWC, double yWC) {
 	if (position < 1 || position > my size) {
 		return;
 	}
-	SimpleString_draw ( (SimpleString) my item[position], g, xWC, yWC);
+	SimpleString_draw (my at [position], g, xWC, yWC);
 }
 
-Categories OrderedOfString_to_Categories (OrderedOfString me) {
+autoCategories OrderedOfString_to_Categories (OrderedOfString me) {
 	try {
 		autoCategories thee = Categories_create();
 
-		for (long i = 1; i <= my size; i++) {
-			autoSimpleString item = Data_copy ( (SimpleString) my item [i]);
-			Collection_addItem (thee.peek(), item.transfer());
+		for (long i = 1; i <= my size; i ++) {
+			autoSimpleString item = Data_copy (my at [i]);
+			thy addItem_move (item.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Categories.");
 	}
@@ -114,33 +106,33 @@ long Categories_getSize (Categories me) {
 }
 
 /* TableOfReal_Rowlabels_to_Categories  ??? */
-Categories TableOfReal_to_CategoriesRow (TableOfReal me) {
+autoCategories TableOfReal_to_CategoriesRow (TableOfReal me) {
 	try {
 		autoCategories thee = Categories_create ();
 
-		for (long i = 1; i <= my numberOfRows; i++) {
+		for (long i = 1; i <= my numberOfRows; i ++) {
 			if (my rowLabels[i]) {
-				autoSimpleString s = SimpleString_create (my rowLabels[i]);
-				Collection_addItem (thee.peek(), s.transfer());
+				autoSimpleString s = SimpleString_create (my rowLabels [i]);
+				thy addItem_move (s.move());
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": row labels not converted to Categories.");
 	}
 }
 
-Categories TableOfReal_to_CategoriesColumn (TableOfReal me) {
+autoCategories TableOfReal_to_CategoriesColumn (TableOfReal me) {
 	try {
 		autoCategories thee = Categories_create ();
 
-		for (long i = 1; i <= my numberOfColumns; i++) {
+		for (long i = 1; i <= my numberOfColumns; i ++) {
 			if (my columnLabels[i]) {
-				autoSimpleString s = SimpleString_create (my columnLabels[i]);
-				Collection_addItem (thee.peek(), s.transfer());
+				autoSimpleString s = SimpleString_create (my columnLabels [i]);
+				thy addItem_move (s.move());
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": columnlabels not converted to Categories.");
 	}
diff --git a/dwtools/Categories.h b/dwtools/Categories.h
index 33f970f..cedfe13 100644
--- a/dwtools/Categories.h
+++ b/dwtools/Categories.h
@@ -2,21 +2,20 @@
 #define _Categories_h_
 /* Categories.h
  *
- * Copyright (C) 1993-2011 David Weenink, 2015 Paul Boersma
+ * Copyright (C) 1993-2011, 2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection_extensions.h"
@@ -31,21 +30,21 @@ Thing_define (Categories, OrderedOfString) {
 		override;
 };
 
-void Categories_init (Categories me, long size);
+autoCategories Categories_create ();
 
-Categories Categories_create ();
-Categories Categories_sequentialNumbers (long n);
+autoCategories Categories_createWithSequentialNumbers (long n);
 
-Categories Categories_selectUniqueItems (Categories me, int sorted);
+autoCategories Categories_selectUniqueItems (Categories me);
 
 void Categories_drawItem (Categories me, Graphics g, long position, double xWC, double yWC);
 
-Categories OrderedOfString_to_Categories (OrderedOfString me);
+autoCategories OrderedOfString_to_Categories (OrderedOfString me);
 
 long Categories_getSize (Categories me);
 /* return my size */
 
-Categories TableOfReal_to_CategoriesRow (TableOfReal me);
-Categories TableOfReal_to_CategoriesColumn (TableOfReal me);
+autoCategories TableOfReal_to_CategoriesRow (TableOfReal me);
+
+autoCategories TableOfReal_to_CategoriesColumn (TableOfReal me);
 
 #endif /* _Categories_h_ */
diff --git a/dwtools/CategoriesEditor.cpp b/dwtools/CategoriesEditor.cpp
index 75b9cb3..9bf96db 100644
--- a/dwtools/CategoriesEditor.cpp
+++ b/dwtools/CategoriesEditor.cpp
@@ -1,20 +1,19 @@
 /* CategoriesEditor.cpp
  *
- * Copyright (C) 1993-2013 David Weenink, 2008,2015 Paul Boersma
+ * Copyright (C) 1993-2013 David Weenink, 2008,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,65 +37,59 @@
 #define CategoriesEditor_TEXTMAXLENGTH 100
 
 #include "CategoriesEditor.h"
-//#include "Preferences.h"
 #include "EditorM.h"
 
 Thing_implement (CategoriesEditor, Editor, 0);
 
-/* forward declarations */
-static void update (I, long from, long to, const long *select, long nSelect);
-static void update_dos (I);
-
 const char32 *CategoriesEditor_EMPTYLABEL = U"(empty)";
 
-static void menu_cb_help (EDITOR_ARGS) {
-	EDITOR_IAM (CategoriesEditor);
+static void menu_cb_help (CategoriesEditor /* me */, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"CategoriesEditor");
 }
 
-/**************** Some methods for Collection  ****************/
+#pragma mark - Collection extensions
 
 /* Preconditions: */
 /*	1 <= (position[i], newpos) <= size; */
 /*	newpos <= position[1] || newpos >= position[npos] */
-static void Ordered_moveItems (I, long position[], long npos, long newpos) {
-	iam (Ordered);
-	long pos, min = position[1], max = position[1];
-
-	for (long i = 2; i <= npos; i++) {
-		if (position[i] > max) {
-			max = position[i];
-		} else if (position[i] < min) {
-			min = position[i];
+static void Ordered_moveItems (Ordered me, long position [], long npos, long newpos) {
+	long pos, min = position [1], max = position [1];
+
+	for (long i = 2; i <= npos; i ++) {
+		if (position [i] > max) {
+			max = position [i];
+		} else if (position [i] < min) {
+			min = position [i];
 		}
 	}
 
 	Melder_assert (min >= 1 && max <= my size && (newpos <= min || newpos >= max));
 
-	autoNUMvector<Data> tmp (1, npos);
-
-	// 'remove'
+	autoNUMvector<Daata> tmp (1, npos);
 
-	for (long i = 1; i <= npos; i++) {
-		tmp[i] = (Data) my item[position[i]];
-		my item[position[i]] = 0;
+	/*
+		Move some data from `me` into `tmp`, in a different order.
+	*/
+	for (long i = 1; i <= npos; i ++) {
+		tmp [i] = (Daata) my at [position [i]];   // dangle
+		my at [position [i]] = nullptr;   // undangle
 	}
 
 	// create a contiguous 'hole'
 
 	if (newpos <= min) {
 		pos = max;
-		for (long i = max; i >= newpos; i--) {
-			if (my item[i]) {
-				my item[pos--] = my item[i];
+		for (long i = max; i >= newpos; i --) {
+			if (my at [i]) {
+				my at [pos --] = my at [i];
 			}
 		}
 		pos = newpos;
 	} else {
 		pos = min;
-		for (long i = min; i <= newpos; i++) {
-			if (my item[i]) {
-				my item[pos++] = my item[i];
+		for (long i = min; i <= newpos; i ++) {
+			if (my at [i]) {
+				my at [pos ++] = my at [i];
 			}
 		}
 		pos = newpos - npos + 1;
@@ -104,23 +97,22 @@ static void Ordered_moveItems (I, long position[], long npos, long newpos) {
 
 	// fill the 'hole'
 
-	for (long i = 1; i <= npos; i++) {
-		my item[pos++] = tmp[i];
+	for (long i = 1; i <= npos; i ++) {
+		my at [pos ++] = tmp [i];
 	}
 }
 
-static void Collection_replaceItemPos (I, Any item, long pos) {
-	iam (Collection);
+/*
+static void OrderedOfString_replaceItemPos (Collection me, autoSimpleString data, long pos) {
 	if (pos < 1 || pos > my size) {
 		return;
 	}
-	forget ( ( (SimpleString *) my item) [pos]);
-	my item[pos] = item;
+	my replaceItem_move (data.move(), pos);
 }
+*/
 
 /* Remove the item at position 'from' and insert it at position 'to'. */
-static void Ordered_moveItem (I, long from, long to) {
-	iam (Ordered);
+static void Ordered_moveItem (Ordered me, long from, long to) {
 	if (from < 1 || from > my size) {
 		from = my size;
 	}
@@ -130,243 +122,416 @@ static void Ordered_moveItem (I, long from, long to) {
 	if (from == to) {
 		return;
 	}
-	Data tmp = (Data) my item[from];
+	Daata tmp = my at [from];
 	if (from > to) {
-		for (long i = from; i > to; i--) {
-			my item[i] = my item[i - 1];
+		for (long i = from; i > to; i --) {
+			my at [i] = my at [i - 1];
 		}
 	} else {
-		for (long i = from; i < to; i++) {
-			my item[i] = my item[i + 1];
+		for (long i = from; i < to; i ++) {
+			my at [i] = my at [i + 1];
 		}
 	}
-	my item[to] = tmp;
+	my at [to] = tmp;
+}
+
+#pragma mark - Widget updates
+
+static void notifyNumberOfSelected (CategoriesEditor me) {
+	autoMelderString tmp;
+	long posCount;
+	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);  // waste
+	if (posCount > 0) {
+		MelderString_append (&tmp, posCount, U" selection", (posCount > 1 ? U"s." : U"."));
+	}
+	if (tmp.string) GuiLabel_setText (my outOfView, tmp.string);
 }
 
-/********************** General Command **********************/
+static void updateUndoAndRedoMenuItems (CategoriesEditor me)
+{
+	const char32 *commandName;
+
+	/*
+	 * Menu item `Undo`.
+	 */
+	bool undoItemIsSensitive = true;
+	if (commandName = CommandHistory_commandName (my history.get(), 0), ! commandName) {
+		commandName = U"nothing";
+		undoItemIsSensitive = false;
+	}
+	GuiButton_setText (my undo, Melder_cat (U"Undo ", U"\"", commandName, U"\""));
+	GuiThing_setSensitive (my undo, undoItemIsSensitive);
+
+	/*
+	 * Menu item `Redo`.
+	 */
+	bool redoItemIsSensitive = true;
+	if (commandName = CommandHistory_commandName (my history.get(), 1), ! commandName) {
+		commandName = U"nothing";
+		redoItemIsSensitive = false;
+	}
+	GuiButton_setText (my redo, Melder_cat (U"Redo ", U"\"", commandName, U"\""));
+	GuiThing_setSensitive (my redo, redoItemIsSensitive);
+}
+
+static void updateWidgets (CategoriesEditor me) {   // all buttons except undo & redo
+	Categories data = (Categories) my data;
+	long size = data->size;
+	bool insert = false, insertAtEnd = true, replace = false, remove = false;
+	bool moveUp = false, moveDown = false;
+	long posCount;
+	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
+	if (posList.peek()) {
+		long firstPos = posList[1], lastPos = posList[posCount];
+		bool contiguous = ( lastPos - firstPos + 1 == posCount );
+		moveUp = contiguous && firstPos > 1;
+		moveDown = contiguous && lastPos < size;
+		my position = firstPos;
+		remove = true;
+		replace = true;
+		//insertAtEnd = false;
+		if (posCount == 1) {
+			insert = true;
+			//if (posList[1] == size) insertAtEnd = true;
+			if (size == 1 && ! str32cmp (CategoriesEditor_EMPTYLABEL,
+			                           OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, 1))) {
+				remove = false;
+			}
+		}
+	}
+	GuiThing_setSensitive (my insert,      insert);
+	GuiThing_setSensitive (my insertAtEnd, insertAtEnd);
+	GuiThing_setSensitive (my replace,     replace);
+	GuiThing_setSensitive (my remove,      remove);
+	GuiThing_setSensitive (my moveUp,      moveUp);
+	GuiThing_setSensitive (my moveDown,    moveDown);
+	if (my history) {
+		updateUndoAndRedoMenuItems (me);
+	}
+	notifyNumberOfSelected (me);
+}
+
+static void update (CategoriesEditor me, long from, long to, const long *select, long nSelect) {
+	Categories data = (Categories) my data;
+	long size = data->size;
+
+	if (size == 0) {
+		autoSimpleString str = SimpleString_create (CategoriesEditor_EMPTYLABEL);
+		data -> addItem_move (str.move());
+		update (me, 0, 0, nullptr, 0);
+		return;
+	}
+	if (from == 0 && from == to) {
+		from = 1; to = size;
+	}
+	if (from < 1 || from > size) {
+		from = size;
+	}
+	if (to < 1 || to > size) {
+		to = size;
+	}
+	if (from > to) {
+		long ti = from; from = to; to = ti;
+	}
+
+	// Begin optimization: add the items from a table instead of separately.
+	try {
+		autostring32vector table (from, to);
+		long itemCount = GuiList_getNumberOfItems (my list);
+		for (long i = from; i <= to; i++) {
+			char wcindex[20];
+			snprintf (wcindex,20, "%5ld ", i);
+			table[i] = Melder_dup_f (Melder_cat (Melder_peek8to32 (wcindex), OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, i)));
+		}
+		if (itemCount > size) { // some items have been removed from Categories?
+			for (long j = itemCount; j > size; j --) {
+				GuiList_deleteItem (my list, j);
+			}
+			itemCount = size;
+		}
+		if (to > itemCount) {
+			for (long j = 1; j <= to - itemCount; j ++) {
+				GuiList_insertItem (my list, table [itemCount + j], 0);
+			}
+		}
+		if (from <= itemCount) {
+			long n = (to < itemCount ? to : itemCount);
+			for (long j = from; j <= n; j++) {
+				GuiList_replaceItem (my list, table[j], j);
+			}
+		}
+	} catch (MelderError) {
+		throw;
+	}
+
+	// End of optimization
+
+	// HIGHLIGHT
+
+	GuiList_deselectAllItems (my list);
+	if (size == 1) { /* the only item is always selected */
+		const char32 *catg = OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, 1);
+		GuiList_selectItem (my list, 1);
+		updateWidgets (me);   // instead of "notify". BUG?
+		GuiText_setString (my text, catg);
+	} else if (nSelect > 0) {
+		// Select but postpone highlighting
+
+		for (long i = 1; i <= nSelect; i++) {
+			GuiList_selectItem (my list, select[i] > size ? size : select[i]);
+		}
+	}
+
+	// VIEWPORT
+
+	{
+		long top = GuiList_getTopPosition (my list), bottom = GuiList_getBottomPosition (my list);
+		long visible = bottom - top + 1;
+		if (nSelect == 0) {
+			top = my position - visible / 2;
+		} else if (select[nSelect] < top) {
+			// selection above visible area
+			top = select[1];
+		} else if (select[1] > bottom) {
+			// selection below visible area
+			top = select[nSelect] - visible + 1;
+		} else {
+			long deltaTopPos = -1, nUpdate = to - from + 1;
+			if ( (from == select[1] && to == select[nSelect]) || // Replace
+			        (nUpdate > 2 && nSelect == 1) /* Inserts */) {
+				deltaTopPos = 0;
+			} else if (nUpdate == nSelect + 1 && select[1] == from + 1) { // down
+				deltaTopPos = 1;
+			}
+			top += deltaTopPos;
+		}
+		if (top + visible > size) {
+			top = size - visible + 1;
+		}
+		if (top < 1) {
+			top = 1;
+		}
+		GuiList_setTopPosition (my list, top);
+	}
+}
+
+#pragma mark - Commands for Undo and Redo
 
 Thing_define (CategoriesEditorCommand, Command) {
-	// new data:
-public:
-	Categories categories;
-	long *selection; long nSelected, newPos;
-	// overridden methods:
-	virtual void v_destroy ();
+	autoCategories categories;
+	long *selection;
+	long nSelected, newPos;
+
+	void v_destroy () noexcept
+		override;
 };
 
 Thing_implement (CategoriesEditorCommand, Command, 0);
 
-void structCategoriesEditorCommand :: v_destroy () {
+void structCategoriesEditorCommand :: v_destroy () noexcept {
 	NUMvector_free (selection, 1);
-	forget (categories);
 	CategoriesEditorCommand_Parent :: v_destroy ();
 }
 
-static void CategoriesEditorCommand_init (I, const char32 *name,  Any data,
-        int (*execute) (Any), int (*undo) (Any), int nCategories, int nSelected) {
-	iam (CategoriesEditorCommand);
-	(void) nCategories;
+static void CategoriesEditorCommand_init (CategoriesEditorCommand me, const char32 *name, Thing boss,
+        Command_Callback execute, Command_Callback undo, int /*nCategories*/, int nSelected) {
 
 	my nSelected = nSelected;
-	Command_init (me, name, data, execute, undo);
+	Command_init (me, name, boss, execute, undo);
 	my categories = Categories_create();
 	my selection = NUMvector<long> (1, nSelected);
 }
 
-/*********************** Insert Command ***********************/
+#pragma mark Insert
 
 Thing_define (CategoriesEditorInsert, CategoriesEditorCommand) {
 };
 
 Thing_implement (CategoriesEditorInsert, CategoriesEditorCommand, 0);
 
-static int CategoriesEditorInsert_execute (I) {
-	iam (CategoriesEditorInsert);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Categories categories = (Categories) editor -> data;
-	autoSimpleString str = Data_copy ( (SimpleString) ( (Categories) my categories)->item[1]);
-	Ordered_addItemPos (categories, str.transfer(), my selection[1]);
-	update (editor, my selection[1], 0, my selection, 1);
+static int CategoriesEditorInsert_execute (CategoriesEditorInsert me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
+	{// scope
+		autoSimpleString str = Data_copy (my categories->at [1]);
+		categories -> addItemAtPosition_move (str.move(), my selection [1]);
+	}
+	update (editor, my selection [1], 0, my selection, 1);
 	return 1;
 }
 
-static int CategoriesEditorInsert_undo (I) {
-	iam (CategoriesEditorInsert);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Categories categories = (Categories) editor -> data;
-	Collection_removeItem (categories, my selection[1]);
-	update (editor, my selection[1], 0, my selection, 1);
+static int CategoriesEditorInsert_undo (CategoriesEditorInsert me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
+
+	categories -> removeItem (my selection [1]);
+	update (editor, my selection [1], 0, my selection, 1);
 	return 1;
 }
 
-static CategoriesEditorInsert CategoriesEditorInsert_create (Any data, Any str, int position) {
+static autoCategoriesEditorInsert CategoriesEditorInsert_create (Thing boss, autoSimpleString str, int position) {
 	try {
 		autoCategoriesEditorInsert me = Thing_new (CategoriesEditorInsert);
-		CategoriesEditorCommand_init (me.peek(), U"Insert", data, CategoriesEditorInsert_execute,
-		                              CategoriesEditorInsert_undo, 1, 1);
-		my selection[1] = position;
-		Collection_addItem (my categories, (SimpleString) str);
-		return me.transfer();
+		CategoriesEditorCommand_init (me.get(), U"Insert", boss, CategoriesEditorInsert_execute, CategoriesEditorInsert_undo, 1, 1);
+		my selection [1] = position;
+		my categories -> addItem_move (str.move());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CategoriesEditorInsert not created.");
 	}
 }
 
-/*********************** Remove Command ***********************/
+#pragma mark Remove
 
 Thing_define (CategoriesEditorRemove, CategoriesEditorCommand) {
 };
 
 Thing_implement (CategoriesEditorRemove, CategoriesEditorCommand, 0);
 
-static int CategoriesEditorRemove_execute (I) {
-	iam (CategoriesEditorRemove);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Categories l_categories = (Categories) editor -> data;   // David, weer link: tweemaal dezelfde naam (categories): is ok, geen conflict. Naam toch maar aangepast
+static int CategoriesEditorRemove_execute (CategoriesEditorRemove me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
 
 	for (long i = my nSelected; i >= 1; i--) {
-		Ordered_addItemPos (my categories, (SimpleString) l_categories -> item[my selection[i]], 1);
-		l_categories -> item[my selection[i]] = 0;
-		Collection_removeItem (l_categories, my selection[i]);
+		autoSimpleString item = Data_copy (categories->at [my selection [i]]);   // FIXME this copy can probably be replaced with a move
+		my categories -> addItemAtPosition_move (item.move(), 1);
+		categories -> removeItem (my selection [i]);
 	}
-	update (editor, my selection[1], 0, 0, 0);
+	update (editor, my selection [1], 0, nullptr, 0);
 	return 1;
 }
 
-static int CategoriesEditorRemove_undo (I) {
-	iam (CategoriesEditorRemove);
-	CategoriesEditor editor = (CategoriesEditor) my data;
+static int CategoriesEditorRemove_undo (CategoriesEditorRemove me) {
+	CategoriesEditor editor = (CategoriesEditor) my boss;
 	Categories categories = (Categories) editor -> data;
 
-	for (long i = 1; i <= my nSelected; i++) {
-		autoSimpleString item = Data_copy ( (SimpleString) my categories -> item[i]);
-		Ordered_addItemPos (categories, item.transfer(), my selection[i]);
+	for (long i = 1; i <= my nSelected; i ++) {
+		autoSimpleString item = Data_copy (my categories->at [i]);
+		categories -> addItemAtPosition_move (item.move(), my selection [i]);
 	}
-	update (editor, my selection[1], 0, my selection, my nSelected);
+	update (editor, my selection [1], 0, my selection, my nSelected);
 	return 1;
 }
 
-static CategoriesEditorRemove CategoriesEditorRemove_create (Any data, long *posList, long posCount) {
+static autoCategoriesEditorRemove CategoriesEditorRemove_create (Thing boss, long *posList, long posCount) {
 	try {
 		autoCategoriesEditorRemove me = Thing_new (CategoriesEditorRemove);
-		CategoriesEditorCommand_init (me.peek(), U"Remove", data, CategoriesEditorRemove_execute,
+		CategoriesEditorCommand_init (me.get(), U"Remove", boss, CategoriesEditorRemove_execute,
 		                              CategoriesEditorRemove_undo, posCount, posCount);
-		for (long i = 1; i <= posCount; i++) {
-			my selection[i] = posList[i];
+		for (long i = 1; i <= posCount; i ++) {
+			my selection [i] = posList [i];
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CategoriesEditorRemove not created.");
 	}
 }
 
-//update (me);
-/*********************** Replace Command ***********************/
+#pragma mark Replace
 
 Thing_define (CategoriesEditorReplace, CategoriesEditorCommand) {
 };
 
 Thing_implement (CategoriesEditorReplace, CategoriesEditorCommand, 0);
 
-static int CategoriesEditorReplace_execute (I) {
-	iam (CategoriesEditorReplace);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Categories categories = (Categories) editor -> data;
+static int CategoriesEditorReplace_execute (CategoriesEditorReplace me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
 
-	for (long i = my nSelected; i >= 1; i--) {
-		autoSimpleString str = Data_copy ( (SimpleString) my categories -> item[1]);
-		Ordered_addItemPos (my categories, (SimpleString) categories -> item[my selection[i]], 2);
-		categories -> item[my selection[i]] =  str.transfer();
+	for (long i = my nSelected; i >= 1; i --) {
+		autoSimpleString str = Data_copy (my categories->at [1]);
+		my categories -> addItemAtPosition_move (autoSimpleString (categories->at [my selection [i]]), 2);   // YUCK
+		categories->at [my selection [i]] = str.releaseToAmbiguousOwner();
 	}
-	update (editor, my selection[1], my selection[my nSelected], my selection, my nSelected);
+	update (editor, my selection [1], my selection [my nSelected], my selection, my nSelected);
 	return 1;
 }
 
-static int CategoriesEditorReplace_undo (I) {
-	iam (CategoriesEditorReplace);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Categories categories = (Categories) editor -> data;
+static int CategoriesEditorReplace_undo (CategoriesEditorReplace me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
 
-	for (long i = 1; i <= my nSelected; i++) {
-		autoSimpleString str = Data_copy ( (SimpleString) my categories -> item[i + 1]);
-		Collection_replaceItemPos (categories, str.transfer(), my selection[i]);
+	for (long i = 1; i <= my nSelected; i ++) {
+		autoSimpleString str = Data_copy (my categories->at [i + 1]);
+		categories -> replaceItem_move (str.move(), my selection [i]);
 	}
-	update (editor, my selection[1], my selection[my nSelected], my selection, my nSelected);
+	update (editor, my selection [1], my selection[my nSelected], my selection, my nSelected);
 	return 1;
 }
 
-static CategoriesEditorReplace CategoriesEditorReplace_create (Any data, Any str, long *posList, long posCount) {
+static autoCategoriesEditorReplace CategoriesEditorReplace_create (Thing boss, autoSimpleString str, long *posList, long posCount) {
 	try {
 		autoCategoriesEditorReplace me = Thing_new (CategoriesEditorReplace);
-		CategoriesEditorCommand_init (me.peek(), U"Replace", data, CategoriesEditorReplace_execute,
+		CategoriesEditorCommand_init (me.get(), U"Replace", boss, CategoriesEditorReplace_execute,
 		                              CategoriesEditorReplace_undo, posCount + 1, posCount);
-		for (long i = 1; i <= posCount; i++) {
-			my selection[i] = posList[i];
+		for (long i = 1; i <= posCount; i ++) {
+			my selection [i] = posList [i];
 		}
-		Collection_addItem (my categories, (SimpleString) str);
-		return me.transfer();
+		my categories -> addItem_move (str.move());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CategoriesEditorReplace not created.");
 	}
 }
 
-/*********************** MoveUp Command ***********************/
+#pragma mark MoveUp
 
 Thing_define (CategoriesEditorMoveUp, CategoriesEditorCommand) {
 };
 
 Thing_implement (CategoriesEditorMoveUp, CategoriesEditorCommand, 0);
 
-static int CategoriesEditorMoveUp_execute (I) {
-	iam (CategoriesEditorMoveUp);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Ordered_moveItems (editor->data, my selection, my nSelected, my newPos);
+static int CategoriesEditorMoveUp_execute (CategoriesEditorMoveUp me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
+
+	Ordered_moveItems ((Ordered) categories, my selection, my nSelected, my newPos);   // FIXME cast
 	autoNUMvector<long> selection (1, my nSelected);
-	for (long i = 1; i <= my nSelected; i++) {
+	for (long i = 1; i <= my nSelected; i ++) {
 		selection[i] = my newPos + i - 1;
 	}
 	update (editor, my newPos, my selection[my nSelected], selection.peek(), my nSelected);
 	return 1;
 }
 
-static int CategoriesEditorMoveUp_undo (I) {
-	iam (CategoriesEditorMoveUp);
-	CategoriesEditor editor = (CategoriesEditor) my data;
+static int CategoriesEditorMoveUp_undo (CategoriesEditorMoveUp me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
 
-	for (long i = 1; i <= my nSelected; i++) {
-		Ordered_moveItem (editor->data, my newPos, my selection[my nSelected]);
+	for (long i = 1; i <= my nSelected; i ++) {
+		Ordered_moveItem ((Ordered) categories, my newPos, my selection [my nSelected]);   // FIXME cast
 	}
 	update (editor, my newPos, my selection[my nSelected], my selection, my nSelected);
 	return 1;
 }
 
-static CategoriesEditorMoveUp CategoriesEditorMoveUp_create (Any data, long *posList,
-        long posCount, long newPos) {
+static autoCategoriesEditorMoveUp CategoriesEditorMoveUp_create (Thing boss, long *posList, long posCount, long newPos) {
+
 	try {
 		autoCategoriesEditorMoveUp me = Thing_new (CategoriesEditorMoveUp);
-		CategoriesEditorCommand_init (me.peek(), U"Move up", data, CategoriesEditorMoveUp_execute,
-		                              CategoriesEditorMoveUp_undo, 0, posCount);
-		for (long i = 1; i <= posCount; i++) {
-			my selection[i] = posList[i];
+		CategoriesEditorCommand_init (me.get(), U"Move up", boss, CategoriesEditorMoveUp_execute, CategoriesEditorMoveUp_undo, 0, posCount);
+		for (long i = 1; i <= posCount; i ++) {
+			my selection [i] = posList [i];
 		}
 		my newPos = newPos;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CategoriesEditorMoveUp not created.");
 	}
 }
 
-/*********************** MoveDown Command ***********************/
+#pragma mark MoveDown
 
 Thing_define (CategoriesEditorMoveDown, CategoriesEditorCommand) {
 };
 
 Thing_implement (CategoriesEditorMoveDown, CategoriesEditorCommand, 0);
 
-static int CategoriesEditorMoveDown_execute (I) {
-	iam (CategoriesEditorMoveDown);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	Ordered_moveItems ( (Ordered) editor -> data, my selection, my nSelected, my newPos);
+static int CategoriesEditorMoveDown_execute (CategoriesEditorMoveDown me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
+
+	Ordered_moveItems ((Ordered) categories, my selection, my nSelected, my newPos);   // FIXME cast
 	autoNUMvector<long> selection (1, my nSelected);
 	for (long i = 1; i <= my nSelected; i++) {
 		selection[i] = my newPos - my nSelected + i;
@@ -375,277 +540,84 @@ static int CategoriesEditorMoveDown_execute (I) {
 	return 1;
 }
 
-static int CategoriesEditorMoveDown_undo (I) {
-	iam (CategoriesEditorMoveDown);
-	CategoriesEditor editor = (CategoriesEditor) my data;
-	for (long i = 1; i <= my nSelected; i++) {
-		Ordered_moveItem (editor -> data, my newPos, my selection[1]); // TODO 1 or i ??
+static int CategoriesEditorMoveDown_undo (CategoriesEditorMoveDown me) {
+	CategoriesEditor editor = static_cast<CategoriesEditor> (my boss);
+	Categories categories = static_cast<Categories> (editor -> data);
+
+	for (long i = 1; i <= my nSelected; i ++) {
+		Ordered_moveItem ((Ordered) categories, my newPos, my selection [1]); // TODO 1 or i ??     // FIXME cast
 	}
 	long from = my selection[1];
-	update (editor, (from > 1 ? from-- : from), my newPos, my selection, my nSelected);
+	update (editor, ( from > 1 ? from -- : from ), my newPos, my selection, my nSelected);
 	return 1;
 }
 
-static CategoriesEditorMoveDown CategoriesEditorMoveDown_create (Any data, long *posList,
+static autoCategoriesEditorMoveDown CategoriesEditorMoveDown_create (Thing boss, long *posList,
         long posCount, long newPos) {
 	try {
 		autoCategoriesEditorMoveDown me = Thing_new (CategoriesEditorMoveDown);
-		CategoriesEditorCommand_init (me.peek(), U"Move down", data, CategoriesEditorMoveDown_execute,
-		                              CategoriesEditorMoveDown_undo, 0, posCount);
+		CategoriesEditorCommand_init (me.get(), U"Move down", boss, CategoriesEditorMoveDown_execute, CategoriesEditorMoveDown_undo, 0, posCount);
 		for (long i = 1; i <= posCount; i++) {
 			my selection[i] = posList[i];
 		}
 		my newPos = newPos;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CategoriesEditorMoveDown not created.");
 	}
 }
 
-/********************* Commands (End)  *************************************/
+#pragma mark - Callbacks
 
-static void notifyOutOfView (I) {
-	iam (CategoriesEditor);
-	autoMelderString tmp;
-	MelderString_copy (&tmp, U"");
+static void gui_button_cb_remove (CategoriesEditor me, GuiButtonEvent /* event */) {
 	long posCount;
 	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
-	if (posList.peek() != 0) {
-		long outOfView = 0, top = GuiList_getTopPosition (my list), bottom = GuiList_getBottomPosition (my list);
-
-		for (long i = posCount; i > 0; i--) {
-			if (posList[i] < top || posList[i] > bottom) {
-				outOfView++;
-			}
-		}
-		if (outOfView > 0) {
-			MelderString_append (&tmp, outOfView, U" selection(s) out of view");
-		}
-	}
-	GuiLabel_setText (my outOfView, tmp.string);
-}
-
-static void update_dos (I) {
-	iam (CategoriesEditor);
-	bool undoSense = true, redoSense = true;
-
-	// undo
-
-	const char32 *name;
-	if (! (name = CommandHistory_commandName (my history, 0))) {
-		name = U"nothing"; undoSense = false;
-	}
-
-	GuiButton_setText (my undo, Melder_cat (U"Undo ", U"\"", name, U"\""));
-	GuiThing_setSensitive (my undo, undoSense);
-
-	// redo
-
-	if (! (name = CommandHistory_commandName (my history, 1))) {
-		name = U"nothing"; redoSense = false;
-	}
-	GuiButton_setText (my redo, Melder_cat (U"Redo ", U"\"", name, U"\""));
-	GuiThing_setSensitive (my redo, redoSense);
-}
-
-static void updateWidgets (I) { /*all buttons except undo & redo */
-	iam (CategoriesEditor);
-	long size = ( (Categories) my data)->size;
-	bool insert = false, insertAtEnd = true, replace = false, remove = false;
-	bool moveUp = false, moveDown = false;
-	long posCount;
-	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
-	if (posList.peek() != 0) {
-		long firstPos = posList[1], lastPos = posList[posCount];
-		bool contiguous = lastPos - firstPos + 1 == posCount;
-		moveUp = contiguous && firstPos > 1;
-		moveDown = contiguous && lastPos < size;
-		my position = firstPos;
-		remove = true; replace = true; //insertAtEnd = False;
-		if (posCount == 1) {
-			insert = true;
-			//if (posList[1] == size) insertAtEnd = True;
-			if (size == 1 && ! str32cmp (CategoriesEditor_EMPTYLABEL,
-			                           OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, 1))) {
-				remove = false;
-			}
-		}
-	}
-	GuiThing_setSensitive (my insert,      insert);
-	GuiThing_setSensitive (my insertAtEnd, insertAtEnd);
-	GuiThing_setSensitive (my replace,     replace);
-	GuiThing_setSensitive (my remove,      remove);
-	GuiThing_setSensitive (my moveUp,      moveUp);
-	GuiThing_setSensitive (my moveDown,    moveDown);
-	if (my history) {
-		update_dos (me);
-	}
-	notifyOutOfView (me);
-}
-
-static void update (I, long from, long to, const long *select, long nSelect) {
-	iam (CategoriesEditor);
-	long size = ((Categories) my data) -> size;
-
-	if (size == 0) {
-		autoSimpleString str = SimpleString_create (CategoriesEditor_EMPTYLABEL);
-		Collection_addItem ( (Categories) my data, str.transfer());
-		update (me, 0, 0, 0, 0);
-		return;
-	}
-	if (from == 0 && from == to) {
-		from = 1; to = size;
-	}
-	if (from < 1 || from > size) {
-		from = size;
-	}
-	if (to < 1 || to > size) {
-		to = size;
-	}
-	if (from > to) {
-		long ti = from; from = to; to = ti;
-	}
-
-	// Begin optimization: add the items from a table instead of separately.
-	try {
-		autostring32vector table (from, to);
-		long itemCount = GuiList_getNumberOfItems (my list);
-		for (long i = from; i <= to; i++) {
-			char wcindex[20];
-			snprintf (wcindex,20, "%5ld ", i);
-			table[i] = Melder_dup_f (Melder_cat (Melder_peek8to32 (wcindex), OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, i)));
-		}
-		if (itemCount > size) { // some items have been removed from Categories?
-			for (long j = itemCount; j > size; j --) {
-				GuiList_deleteItem (my list, j);
-			}
-			itemCount = size;
-		}
-		if (to > itemCount) {
-			for (long j = 1; j <= to - itemCount; j ++) {
-				GuiList_insertItem (my list, table [itemCount + j], 0);
-			}
-		}
-		if (from <= itemCount) {
-			long n = (to < itemCount ? to : itemCount);
-			for (long j = from; j <= n; j++) {
-				GuiList_replaceItem (my list, table[j], j);
-			}
-		}
-	} catch (MelderError) {
-		throw;
-	}
-
-	// End of optimization
-
-	// HIGHLIGHT
-
-	GuiList_deselectAllItems (my list);
-	if (size == 1) { /* the only item is always selected */
-		const char32 *catg = OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, 1);
-		GuiList_selectItem (my list, 1);
-		updateWidgets (me);   // instead of "notify". BUG?
-		GuiText_setString (my text, catg);
-	} else if (nSelect > 0) {
-		// Select but postpone highlighting
-
-		for (long i = 1; i <= nSelect; i++) {
-			GuiList_selectItem (my list, select[i] > size ? size : select[i]);
-		}
-	}
-
-	// VIEWPORT
-
-	{
-		long top = GuiList_getTopPosition (my list), bottom = GuiList_getBottomPosition (my list);
-		long visible = bottom - top + 1;
-		if (nSelect == 0) {
-			top = my position - visible / 2;
-		} else if (select[nSelect] < top) {
-			// selection above visible area
-			top = select[1];
-		} else if (select[1] > bottom) {
-			// selection below visible area
-			top = select[nSelect] - visible + 1;
-		} else {
-			long deltaTopPos = -1, nUpdate = to - from + 1;
-			if ( (from == select[1] && to == select[nSelect]) || // Replace
-			        (nUpdate > 2 && nSelect == 1) /* Inserts */) {
-				deltaTopPos = 0;
-			} else if (nUpdate == nSelect + 1 && select[1] == from + 1) { // down
-				deltaTopPos = 1;
-			}
-			top += deltaTopPos;
-		}
-		if (top + visible > size) {
-			top = size - visible + 1;
-		}
-		if (top < 1) {
-			top = 1;
-		}
-		GuiList_setTopPosition (my list, top);
-	}
-}
-
-static void gui_button_cb_remove (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
-	long posCount;
-	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
-	if (posList.peek() != 0) {
+	if (posList.peek()) {
 		autoCategoriesEditorRemove command = CategoriesEditorRemove_create (me, posList.peek(), posCount);
-		if (! Command_do (command.peek())) {
+		if (! Command_do (command.get())) {
 			return;
 		}
 		if (my history) {
-			CommandHistory_insertItem (my history, command.transfer());
+			CommandHistory_insertItem_move (my history.get(), command.move());
 		}
 		updateWidgets (me);
 	}
 }
 
-static void insert (I, int position) {
-	iam (CategoriesEditor);
+static void insert (CategoriesEditor me, int position) {
 	autostring32 text = GuiText_getString (my text);
 	if (str32len (text.peek()) != 0) {
 		autoSimpleString str = SimpleString_create (text.peek());
-		autoCategoriesEditorInsert command = CategoriesEditorInsert_create (me, str.transfer(), position);
-		Command_do (command.peek());
+		autoCategoriesEditorInsert command = CategoriesEditorInsert_create (me, str.move(), position);
+		Command_do (command.get());
 		if (my history) {
-			CommandHistory_insertItem (my history, command.transfer());
+			CommandHistory_insertItem_move (my history.get(), command.move());
 		}
 		updateWidgets (me);
 	}
 }
 
-static void gui_button_cb_insert (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
+static void gui_button_cb_insert (CategoriesEditor me, GuiButtonEvent /* event */) {
 	insert (me, my position);
 }
 
-static void gui_button_cb_insertAtEnd (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
+static void gui_button_cb_insertAtEnd (CategoriesEditor me, GuiButtonEvent /* event */) {
 	Categories categories = (Categories) my data;
-	insert (me, categories -> size + 1);
-	my position = categories -> size;
+	insert (me, categories->size + 1);
+	my position = categories->size;
 }
 
-static void gui_button_cb_replace (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
+static void gui_button_cb_replace (CategoriesEditor me, GuiButtonEvent /* event */) {
 	long posCount;
 	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
 	if (posCount > 0) {
 		autostring32 text = GuiText_getString (my text);
 		if (str32len (text.peek()) != 0) {
 			autoSimpleString str = SimpleString_create (text.peek());
-			autoCategoriesEditorReplace command = CategoriesEditorReplace_create (me, str.transfer(),
-			                                      posList.peek(), posCount);
-			Command_do (command.peek());
+			autoCategoriesEditorReplace command = CategoriesEditorReplace_create (me, str.move(), posList.peek(), posCount);
+			Command_do (command.get());
 			if (my history) {
-				CommandHistory_insertItem (my history, command.transfer());
+				CommandHistory_insertItem_move (my history.get(), command.move());
 			}
 			updateWidgets (me);
 		}
@@ -653,82 +625,81 @@ static void gui_button_cb_replace (I, GuiButtonEvent event) {
 }
 
 /* Precondition: contiguous selection */
-static void gui_button_cb_moveUp (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
+static void gui_button_cb_moveUp (CategoriesEditor me, GuiButtonEvent /* event */) {
 	long posCount;
 	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
 	if (posCount > 0) {
-		autoCategoriesEditorMoveUp command = CategoriesEditorMoveUp_create
-		                                     (me, posList.peek(), posCount, posList[1] - 1);
-		Command_do (command.peek());
+		autoCategoriesEditorMoveUp command = CategoriesEditorMoveUp_create (me, posList.peek(), posCount, posList[1] - 1);
+		Command_do (command.get());
 		if (my history) {
-			CommandHistory_insertItem (my history, command.transfer());
+			CommandHistory_insertItem_move (my history.get(), command.move());
 		}
 		updateWidgets (me);
 	}
 }
 
 /* Precondition: contiguous selection */
-static void gui_button_cb_moveDown (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
+static void gui_button_cb_moveDown (CategoriesEditor me, GuiButtonEvent /* event */) {
 	long posCount;
 	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
 	if (posCount > 0) {
-		autoCategoriesEditorMoveDown command = CategoriesEditorMoveDown_create
-		                                       (me, posList.peek(), posCount, posList[posCount] + 1);
-		Command_do (command.peek());
+		autoCategoriesEditorMoveDown command = CategoriesEditorMoveDown_create (me, posList.peek(), posCount, posList[posCount] + 1);
+		Command_do (command.get());
 		if (my history) {
-			CommandHistory_insertItem (my history, command.transfer());
+			CommandHistory_insertItem_move (my history.get(), command.move());
 		}
 		updateWidgets (me);
 	}
 }
 
-
-static void gui_cb_scroll (GUI_ARGS) {
-	GUI_IAM (CategoriesEditor);
-	notifyOutOfView (me);
+static void gui_list_cb_selectionChanged (CategoriesEditor me, GuiList_SelectionChangedEvent /* event */) {
+	updateWidgets (me);
 }
 
-static void gui_list_cb_double_click (void *void_me, GuiListEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
-	const char32 *catg = OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, my position);
-	GuiText_setString (my text, catg);
+static void gui_list_cb_doubleClick (CategoriesEditor me, GuiList_DoubleClickEvent event) {
+	Melder_assert (event -> list == my list);
+
+	//  `my position` should just have been updated by the selectionChanged callback.
+
+	long posCount;
+	autoNUMvector<long> posList (GuiList_getSelectedPositions (my list, & posCount), 1);
+	if (posCount == 1   // often or even usually true when double-clicking?
+	    && posList [1] == my position)   // should be true, but we don't crash if it's false
+	{
+		const char32 *catg = OrderedOfString_itemAtIndex_c ((OrderedOfString) my data, my position);
+		if (catg) {   // should be non-null, but we don't crash if not
+			GuiText_setString (my text, catg);
+		}
+	}
 }
 
-static void gui_list_cb_extended (void *void_me, GuiListEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
-	updateWidgets (me);
+static void gui_list_cb_scroll (CategoriesEditor me, GuiList_ScrollEvent /* event */) {
+	notifyNumberOfSelected (me);
 }
 
-static void gui_button_cb_undo (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
-	if (CommandHistory_offleft (my history)) {
+static void gui_button_cb_undo (CategoriesEditor me, GuiButtonEvent /* event */) {
+	if (CommandHistory_offleft (my history.get())) {
 		return;
 	}
-	Command_undo (CommandHistory_getItem (my history));
-	CommandHistory_back (my history);
+	Command command = CommandHistory_getItem (my history.get());
+	Command_undo (command);
+	CommandHistory_back (my history.get());
 	updateWidgets (me);
 }
 
-static void gui_button_cb_redo (I, GuiButtonEvent event) {
-	(void) event;
-	iam (CategoriesEditor);
-	CommandHistory_forth (my history);
-	if (CommandHistory_offright (my history)) {
+static void gui_button_cb_redo (CategoriesEditor me, GuiButtonEvent /* event */) {
+	CommandHistory_forth (my history.get());
+	if (CommandHistory_offright (my history.get())) {
 		return;
 	}
-	Command_do (CommandHistory_getItem (my history));
+	Command command = CommandHistory_getItem (my history.get());
+	Command_do (command);
 	updateWidgets (me);
 }
 
-void structCategoriesEditor :: v_destroy () {
-	forget (history); /* !! Editor */
+#pragma mark - Editor methods
+
+void structCategoriesEditor :: v_destroy () noexcept {
 	CategoriesEditor_Parent :: v_destroy ();
 }
 
@@ -739,23 +710,25 @@ void structCategoriesEditor :: v_createHelpMenuItems (EditorMenu menu) {
 
 // origin is at top left.
 void structCategoriesEditor :: v_createChildren () {
-	double menuBarOffset = 40;
-	double button_width = 90, button_height = menuBarOffset, list_width = 260, list_height = 200, list_bottom;
-	double delta_x = 15, delta_y = menuBarOffset / 2, text_button_height = button_height / 2;
-	double left, right, top, bottom, buttons_left, buttons_top;
+	constexpr int menuBarOffset { 40 };
+	constexpr int button_width { 130 }, button_height { menuBarOffset }, list_width { 260 }, list_height { 420 };
+	constexpr int delta_x { 15 }, delta_y { menuBarOffset / 2 }, text_button_height { button_height / 2 };
 
-	left = 5; right = left + button_width; top = 3 + menuBarOffset; bottom = top + text_button_height;
+	int left = 5, right = left + button_width, top = 3 + menuBarOffset, bottom = top + text_button_height;
 	GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Positions:", 0);
 	left = right + delta_x ; right = left + button_width;
 	GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Values:", 0);
 
-	left = 0; right = left + list_width; buttons_top = (top = bottom + delta_y); list_bottom = bottom = top + list_height;
+	left = 0; right = left + list_width; 
+	// int buttons_top = (top = bottom + delta_y);
+	int list_bottom = bottom = top + list_height;
 	list = GuiList_create (d_windowForm, left, right, top, bottom, true, 0);
-	GuiList_setSelectionChangedCallback (list, gui_list_cb_extended, this);
-	GuiList_setDoubleClickCallback (list, gui_list_cb_double_click, this);
+	GuiList_setSelectionChangedCallback (list, gui_list_cb_selectionChanged, this);
+	GuiList_setDoubleClickCallback (list, gui_list_cb_doubleClick, this);
+	GuiList_setScrollCallback (list, gui_list_cb_scroll, this);
 	GuiThing_show (list);
 
-	buttons_left = left = right + 2 * delta_x; right = left + button_width; bottom = top + button_height;
+	int buttons_left = left = right + 2 * delta_x; right = left + button_width; bottom = top + button_height;
 	GuiLabel_createShown (d_windowForm, left, right, top, bottom, U"Value:", 0);
 	left = right + delta_x; right = left + button_width;
 	text = GuiText_createShown (d_windowForm, left, right, top, bottom, 0);
@@ -765,7 +738,7 @@ void structCategoriesEditor :: v_createChildren () {
 	insert = GuiButton_createShown (d_windowForm, left, right, top, bottom,	U"Insert", gui_button_cb_insert, this, GuiButton_DEFAULT);
 	left = right + delta_x; right = left + button_width;
 	replace = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Replace", gui_button_cb_replace, this, 0);
-	left = buttons_left; right = left + 1.5 * button_width; top = bottom + delta_y; bottom = top + button_height;
+	left = buttons_left; right = left + int (1.5 * button_width); top = bottom + delta_y; bottom = top + button_height;
 	insertAtEnd = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Insert at end", gui_button_cb_insertAtEnd, this, 0);
 	top = bottom + delta_y; bottom = top + button_height;
 	undo = GuiButton_createShown (d_windowForm, left, right, top, bottom, U"Undo", gui_button_cb_undo, this, 0);
@@ -783,18 +756,20 @@ void structCategoriesEditor :: v_createChildren () {
 }
 
 void structCategoriesEditor :: v_dataChanged () {
-	update (this, 0, 0, 0, 0);
+	update (this, 0, 0, nullptr, 0);
 	updateWidgets (this);
 }
 
-CategoriesEditor CategoriesEditor_create (const char32 *title, Categories data) {
+#pragma mark -
+
+autoCategoriesEditor CategoriesEditor_create (const char32 *title, Categories data) {
 	try {
 		autoCategoriesEditor me = Thing_new (CategoriesEditor);
-		Editor_init (me.peek(), 20, 40, 600, 600, title, data);
-		my history = CommandHistory_create (100);
-		update (me.peek(), 0, 0, 0, 0);
-		updateWidgets (me.peek());
-		return me.transfer();
+		Editor_init (me.get(), 20, 40, 600, 600, title, data);
+		my history = CommandHistory_create ();
+		update (me.get(), 0, 0, nullptr, 0);
+		updateWidgets (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Categories window not created.");
 	}
diff --git a/dwtools/CategoriesEditor.h b/dwtools/CategoriesEditor.h
index 2c54c31..ef2613b 100644
--- a/dwtools/CategoriesEditor.h
+++ b/dwtools/CategoriesEditor.h
@@ -2,21 +2,20 @@
 #define _CategoriesEditor_h_
 /* CategoriesEditor.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Command.h"
@@ -24,22 +23,24 @@
 #include "Categories.h"
 
 Thing_define (CategoriesEditor, Editor) {
-	// new data:
-	public:
-		CommandHistory history;
-		int position;
-		GuiList list;
-		GuiText text;
-		GuiButton undo, redo;
-		GuiLabel outOfView;
-		GuiButton remove, insert, insertAtEnd, replace, moveUp, moveDown;
-	// overridden methods:
-		void v_destroy ();
-		void v_createChildren ();
-		void v_createHelpMenuItems (EditorMenu menu);
-		void v_dataChanged ();
+	autoCommandHistory history;
+	int position;
+	GuiList list;
+	GuiText text;
+	GuiButton undo, redo;
+	GuiLabel outOfView;
+	GuiButton remove, insert, insertAtEnd, replace, moveUp, moveDown;
+
+	void v_destroy () noexcept
+		override;
+	void v_createChildren ()
+		override;
+	void v_createHelpMenuItems (EditorMenu menu)
+		override;
+	void v_dataChanged ()
+		override;
 };
 
-CategoriesEditor CategoriesEditor_create (const char32 *title, Categories data);
+autoCategoriesEditor CategoriesEditor_create (const char32 *title, Categories data);
 
-#endif /* _CategoriesEditor_h_ */
\ No newline at end of file
+#endif /* _CategoriesEditor_h_ */
diff --git a/dwtools/Categories_and_Strings.cpp b/dwtools/Categories_and_Strings.cpp
index b7337d3..0ed2f86 100644
--- a/dwtools/Categories_and_Strings.cpp
+++ b/dwtools/Categories_and_Strings.cpp
@@ -1,20 +1,19 @@
 /* Categories_and_Strings.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -24,7 +23,7 @@
 
 #include "Categories_and_Strings.h"
 
-Strings Categories_to_Strings (Categories me) {
+autoStrings Categories_to_Strings (Categories me) {
 	try {
 		if (my size < 1) {
 			Melder_throw (U"No elements.");
@@ -33,29 +32,29 @@ Strings Categories_to_Strings (Categories me) {
 		thy strings = NUMvector<char32 *> (1, my size);
 		thy numberOfStrings = my size;
 
-		for (long i = 1; i <= my size; i++) {
-			SimpleString s = (SimpleString) my item[i];
-			thy strings[i] = Melder_dup (s -> string);
+		for (long i = 1; i <= my size; i ++) {
+			SimpleString s = my at [i];
+			thy strings [i] = Melder_dup (s -> string);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Strings.");
 	}
 }
 
-Categories Strings_to_Categories (Strings me) {
+autoCategories Strings_to_Categories (Strings me) {
 	try {
 		if (my numberOfStrings < 1) {
 			Melder_throw (U"Empty strings.");
 		}
 		autoCategories thee = Thing_new (Categories);
-		Categories_init (thee.peek(), my numberOfStrings);
+		thy _grow (my numberOfStrings);
 
 		for (long i = 1; i <= my numberOfStrings; i++) {
-			autoSimpleString s = SimpleString_create (my strings[i]);
-			Collection_addItem (thee.peek(), s.transfer());
+			autoSimpleString s = SimpleString_create (my strings [i]);
+			thy addItem_move (s.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted.");
 	}
diff --git a/dwtools/Categories_and_Strings.h b/dwtools/Categories_and_Strings.h
index dffd680..2c43bd0 100644
--- a/dwtools/Categories_and_Strings.h
+++ b/dwtools/Categories_and_Strings.h
@@ -2,21 +2,20 @@
 #define _Categories_and_Strings_h_
 /* Categories_and_Strings.h
  *
- * Copyright (C) 2001-2012 David Weenink
+ * Copyright (C) 2001-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,8 +26,8 @@
 #include "Categories.h"
 #include "Strings_.h"
 
-Strings Categories_to_Strings (Categories me);
+autoStrings Categories_to_Strings (Categories me);
 
-Categories Strings_to_Categories (Strings me);
+autoCategories Strings_to_Categories (Strings me);
 
 #endif /* _Categories_and_Strings_h_ */
diff --git a/dwtools/ClassificationTable.cpp b/dwtools/ClassificationTable.cpp
index 07e7ba5..1657194 100644
--- a/dwtools/ClassificationTable.cpp
+++ b/dwtools/ClassificationTable.cpp
@@ -1,20 +1,19 @@
 /* ClassificationTable.cpp
  *
- * Copyright (C) 1993-2011, 2014 David Weenink
+ * Copyright (C) 1993-2011, 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,25 +33,25 @@
 
 Thing_implement (ClassificationTable, TableOfReal, 0);
 
-ClassificationTable ClassificationTable_create (long numberOfRows, long numberOfClasses) {
+autoClassificationTable ClassificationTable_create (long numberOfRows, long numberOfClasses) {
 	try {
 		autoClassificationTable me = Thing_new (ClassificationTable);
-		TableOfReal_init (me.peek(), numberOfRows, numberOfClasses );
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfRows, numberOfClasses);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ClassificationTable not created.");
 	}
 }
 
-Confusion ClassificationTable_to_Confusion (ClassificationTable me, int onlyClassLabels) {
+autoConfusion ClassificationTable_to_Confusion (ClassificationTable me, bool onlyClassLabels) {
 	try {
 		autoStrings responses = TableOfReal_extractColumnLabelsAsStrings (me);
 		autoStrings s2 = TableOfReal_extractRowLabelsAsStrings (me);
-		autoDistributions d2 = Strings_to_Distributions (s2.peek());
-		autoStrings stimuli = TableOfReal_extractRowLabelsAsStrings (d2.peek());
-		autoConfusion thee = Confusion_createFromStringses ((onlyClassLabels ? responses.peek() : stimuli.peek()), responses.peek());
-		Confusion_and_ClassificationTable_increase (thee.peek(), me);
-		return thee.transfer();
+		autoDistributions d2 = Strings_to_Distributions (s2.get());
+		autoStrings stimuli = TableOfReal_extractRowLabelsAsStrings (d2.get());
+		autoConfusion thee = Confusion_createFromStringses (( onlyClassLabels ? responses.get() : stimuli.get() ), responses.get());
+		Confusion_and_ClassificationTable_increase (thee.get(), me);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": confusions cannot be calculated.");
 	}
@@ -62,79 +61,82 @@ void Confusion_and_ClassificationTable_increase (Confusion me, ClassificationTab
 	if (my numberOfColumns != thy numberOfColumns) {
 		Melder_throw (U"The number of columns must be equal.");
 	}
-	for (long irow = 1; irow <= thy numberOfRows; irow++) {
+	for (long irow = 1; irow <= thy numberOfRows; irow ++) {
 		long index = TableOfReal_getColumnIndexAtMaximumInRow (thee, irow);
-		Confusion_increase (me, thy rowLabels[irow], my columnLabels[index]);
+		Confusion_increase (me, thy rowLabels [irow], my columnLabels [index]);
 	}
 }
 
-Strings ClassificationTable_to_Strings_maximumProbability (ClassificationTable me) {
+autoStrings ClassificationTable_to_Strings_maximumProbability (ClassificationTable me) {
 	try {
 		autoStrings thee = Strings_createFixedLength (my numberOfRows);
-
-		for (long i = 1; i <= my numberOfRows; i++) {
-			double max = my data[i][1];
+		Melder_assert (my numberOfColumns > 0);
+		for (long i = 1; i <= my numberOfRows; i ++) {
+			double max = my data [i] [1];
 			long col = 1;
-			for (long j = 2; j <= my numberOfColumns; j++) {
-				if (my data[i][j] > max) {
-					max = my data[i][j]; col = j;
+			for (long j = 2; j <= my numberOfColumns; j ++) {
+				if (my data [i] [j] > max) {
+					max = my data [i] [j];
+					col = j;
 				}
 			}
-			if (my columnLabels[col] != 0) {
-				Strings_replace (thee.peek(), i, my columnLabels[col]);
+			if (my columnLabels [col]) {
+				Strings_replace (thee.get(), i, my columnLabels [col]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": strings cannot be created.");
 	}
 }
 
-Categories ClassificationTable_to_Categories_maximumProbability (ClassificationTable me) {
+autoCategories ClassificationTable_to_Categories_maximumProbability (ClassificationTable me) {
 	try {
 		autoCategories thee = Categories_create ();
-		for (long i = 1; i <= my numberOfRows; i++) {
-			double max = my data[i][1];
+		Melder_assert (my numberOfColumns > 0);
+		for (long i = 1; i <= my numberOfRows; i ++) {
+			double max = my data [i] [1];
 			long col = 1;
-			for (long j = 2; j <= my numberOfColumns; j++) {
-				if (my data[i][j] > max) {
-					max = my data[i][j]; col = j;
+			for (long j = 2; j <= my numberOfColumns; j ++) {
+				if (my data [i] [j] > max) {
+					max = my data [i] [j];
+					col = j;
 				}
 			}
-			OrderedOfString_append (thee.peek(), my columnLabels[col]);
+			OrderedOfString_append (thee.get(), my columnLabels [col]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Categories created.");
 	}
 }
 
-Correlation ClassificationTable_to_Correlation_columns (ClassificationTable me) {
+autoCorrelation ClassificationTable_to_Correlation_columns (ClassificationTable me) {
 	try {
 		autoCorrelation thee = Correlation_create (my numberOfColumns);
-		for (long icol = 1; icol <= thy numberOfColumns; icol++) {
-			char32 *label = my columnLabels[icol];
-			TableOfReal_setRowLabel (thee.peek(), icol, label);
-			TableOfReal_setColumnLabel (thee.peek(), icol, label);
+		for (long icol = 1; icol <= thy numberOfColumns; icol ++) {
+			char32 *label = my columnLabels [icol];
+			TableOfReal_setRowLabel (thee.get(), icol, label);
+			TableOfReal_setColumnLabel (thee.get(), icol, label);
 		}
 
-		for (long irow = 1; irow <= thy numberOfColumns; irow++) {
-			thy data[irow][irow] = 1;
-			for (long icol = irow + 1; icol <= thy numberOfColumns; icol++) {
-				double n11 = 0, n22 = 0, n12 = 0;
-				for (long i = 1; i <= my numberOfRows; i++) {
-					n12 += my data[i][irow] * my data[i][icol];
-					n11 += my data[i][irow] * my data[i][irow];
-					n22 += my data[i][icol] * my data[i][icol];
+		for (long irow = 1; irow <= thy numberOfColumns; irow ++) {
+			thy data [irow] [irow] = 1.0;
+			for (long icol = irow + 1; icol <= thy numberOfColumns; icol ++) {
+				double n11 = 0.0, n22 = 0.0, n12 = 0.0;
+				for (long i = 1; i <= my numberOfRows; i ++) {
+					n12 += my data [i] [irow] * my data [i] [icol];
+					n11 += my data [i] [irow] * my data [i] [irow];
+					n22 += my data [i] [icol] * my data [i] [icol];
 				}
 				// probabilities might be very low!
-				if (n12 > 0 && n22 > 0) {
-					thy data[irow][icol] = thy data[icol][irow] = n12 / sqrt (n11 * n22);
+				if (n12 > 0.0 && n22 > 0.0) {
+					thy data [irow] [icol] = thy data [icol] [irow] = n12 / sqrt (n11 * n22);
 				}
 			}
 		}
 		thy numberOfObservations = my numberOfRows;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no correlation created.");
 	}
diff --git a/dwtools/ClassificationTable.h b/dwtools/ClassificationTable.h
index be25084..3dbd0c7 100644
--- a/dwtools/ClassificationTable.h
+++ b/dwtools/ClassificationTable.h
@@ -2,21 +2,20 @@
 #define _ClassificationTable_h_
 /* ClassificationTable.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TableOfReal.h"
@@ -29,15 +28,16 @@
 Thing_define (ClassificationTable, TableOfReal) {
 };
 
-ClassificationTable ClassificationTable_create (long numberOfRows, long numberOfColumns);
+autoClassificationTable ClassificationTable_create (long numberOfRows, long numberOfColumns);
 
-Categories ClassificationTable_to_Categories_maximumProbability (ClassificationTable me);
-Strings ClassificationTable_to_Strings_maximumProbability (ClassificationTable me);
+autoCategories ClassificationTable_to_Categories_maximumProbability (ClassificationTable me);
 
-Confusion ClassificationTable_to_Confusion (ClassificationTable me, int onlyClassLabels);
+autoStrings ClassificationTable_to_Strings_maximumProbability (ClassificationTable me);
+
+autoConfusion ClassificationTable_to_Confusion (ClassificationTable me, bool onlyClassLabels);
 
 /* Correlations between the classes (columns) */
-Correlation ClassificationTable_to_Correlation_columns (ClassificationTable me);
+autoCorrelation ClassificationTable_to_Correlation_columns (ClassificationTable me);
 
 void Confusion_and_ClassificationTable_increase (Confusion me, ClassificationTable thee);
 
diff --git a/dwtools/ComplexSpectrogram.cpp b/dwtools/ComplexSpectrogram.cpp
index 6ce9fbd..c60448b 100644
--- a/dwtools/ComplexSpectrogram.cpp
+++ b/dwtools/ComplexSpectrogram.cpp
@@ -1,20 +1,19 @@
 /* ComplexSpectrogram.cpp
  * 
- * Copyright (C) 2014 David Weenink
+ * Copyright (C) 2014-2015 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ComplexSpectrogram.h"
@@ -42,19 +41,19 @@
 Thing_implement (ComplexSpectrogram, Matrix, 2);
 
 
-ComplexSpectrogram ComplexSpectrogram_create (double tmin, double tmax, long nt, double dt,
+autoComplexSpectrogram ComplexSpectrogram_create (double tmin, double tmax, long nt, double dt,
 	double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoComplexSpectrogram me = Thing_new (ComplexSpectrogram);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
 		my phase = NUMmatrix <double> (1, my ny, 1, my nx);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ComplexSpectrogram not created.");
 	}
 }
 
-ComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, double timeStep) {
+autoComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, double timeStep) {
 	try {
 		double samplingFrequency = 1.0 / my dx, myDuration = my xmax - my xmin, t1;
 		if (windowLength > myDuration) {
@@ -75,15 +74,14 @@ ComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, d
 		// Compute sampling of the spectrum
 
 		long numberOfFrequencies = halfnsamp_window + 1;
-		long df = (long) floor (samplingFrequency / (numberOfFrequencies - 1));
+		double df = samplingFrequency / (numberOfFrequencies - 1);
 		
-		autoComplexSpectrogram thee = ComplexSpectrogram_create (my xmin, my xmax, numberOfFrames, timeStep, t1,
-			0, 0.5 * samplingFrequency, numberOfFrequencies, df, 0);
+		autoComplexSpectrogram thee = ComplexSpectrogram_create (my xmin, my xmax, numberOfFrames, timeStep, t1, 0.0, 0.5 * samplingFrequency, numberOfFrequencies, df, 0.0);
 		// 
-		autoSound analysisWindow = Sound_create (1, 0, nsamp_window * my dx, nsamp_window, my dx, 0.5 * my dx);
+		autoSound analysisWindow = Sound_create (1, 0.0, nsamp_window * my dx, nsamp_window, my dx, 0.5 * my dx);
 		
 		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
+			double t = Sampled_indexToX (thee.get(), iframe);
 			long leftSample = Sampled_xToLowIndex (me, t), rightSample = leftSample + 1;
 			long startSample = rightSample - halfnsamp_window;
 			long endSample = leftSample + halfnsamp_window;
@@ -94,10 +92,10 @@ ComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, d
 				analysisWindow -> z[1][j] = my z[1][startSample - 1 + j];
 			}
 			// window ?
-			autoSpectrum spec = Sound_to_Spectrum (analysisWindow.peek(), 0);
+			autoSpectrum spec = Sound_to_Spectrum (analysisWindow.get(), 0);
 			
 			thy z[1][iframe] = spec -> z[1][1] * spec -> z[1][1];
-			thy phase[1][iframe] = 0;
+			thy phase[1][iframe] = 0.0;
 			for (long ifreq = 2; ifreq <= numberOfFrequencies - 1; ifreq++) {
 				double x = spec -> z[1][ifreq], y = spec -> z[2][ifreq];
 				thy z[ifreq][iframe] = x * x + y * y; // power
@@ -105,21 +103,21 @@ ComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, d
 			}
 			// even number of samples
 			thy z[numberOfFrequencies][iframe] = spec -> z[1][numberOfFrequencies] * spec -> z[1][numberOfFrequencies];
-			thy phase[numberOfFrequencies][iframe] = 0;
+			thy phase[numberOfFrequencies][iframe] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no ComplexSpectrogram created.");
 	}
 }
 
-Sound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor) {
+autoSound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor) {
 	try {
 		/* original number of samples is odd: imaginary part of last spectral value is zero -> 
 		 * phase is either zero or +/-pi
 		 */
-		double pi = atan2 (0, - 0.5);
-		double samplingFrequency = 2 * my ymax;
+		double pi = atan2 (0.0, - 0.5);
+		double samplingFrequency = 2.0 * my ymax;
 		double lastFrequency = my y1 + (my ny - 1) * my dy, lastPhase = my phase[my ny][1];
 		int originalNumberOfSamplesProbablyOdd = (lastPhase != 0.0 && lastPhase != pi && lastPhase != -pi) || 
 			my ymax - lastFrequency > 0.25 * my dx;
@@ -137,17 +135,18 @@ Sound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor)
 		for (long iframe = 1; iframe <= my nx; iframe++) {
 			// "original" sound :
 			double tmid = Sampled_indexToX (me, iframe);
-			long leftSample = Sampled_xToLowIndex (thee.peek(), tmid), rightSample = leftSample + 1;
+			long leftSample = Sampled_xToLowIndex (thee.get(), tmid);
+			long rightSample = leftSample + 1;
 			long startSample = rightSample - halfnsamp_window;
-			double startTime = Sampled_indexToX (thee.peek(), startSample);
+			double startTime = Sampled_indexToX (thee.get(), startSample);
 			if (iframe == 1) {
-				thyStartTime = Sampled_indexToX (thee.peek(), startSample);
+				thyStartTime = Sampled_indexToX (thee.get(), startSample);
 			}
 			//long endSample = leftSample + halfnsamp_window;
 			// New Sound with stretch
-			long thyStartSample = Sampled_xToLowIndex (thee.peek(),thyStartTime);
+			long thyStartSample = Sampled_xToLowIndex (thee.get(),thyStartTime);
 			double thyEndTime = thyStartTime + my dx * stretchFactor;
-			long thyEndSample = Sampled_xToLowIndex (thee.peek(), thyEndTime);
+			long thyEndSample = Sampled_xToLowIndex (thee.get(), thyEndTime);
 			long stretchedStepSizeSamples = thyEndSample - thyStartSample + 1;
 			//double extraTime = (thyStartSample - startSample + 1) * thy dx;
 			double extraTime = (thyStartTime - startTime);
@@ -156,16 +155,16 @@ Sound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor)
 				double f = my y1 + (ifreq - 1) * my dy;
 				double a = sqrt (my z[ifreq][iframe]);
 				double phi = my phase[ifreq][iframe], intPart;
-				double extraPhase = 2 * pi * modf (extraTime * f, &intPart); // fractional part
+				double extraPhase = 2.0 * pi * modf (extraTime * f, &intPart); // fractional part
 				phi += extraPhase;
 				spectrum -> z[1][ifreq] = a * cos (phi);
 				spectrum -> z[2][ifreq] = a * sin (phi);
 			}
 
-			autoSound synthesis = Spectrum_to_Sound (spectrum.peek());
-			/*
-			 * Where should the sound be placed?
-			 */
+			autoSound synthesis = Spectrum_to_Sound (spectrum.get());
+
+			// Where should the sound be placed?
+
 			long thyEndSampleP = (long) floor (fmin (thyStartSample + synthesis -> nx - 1, thyStartSample + stretchedStepSizeSamples - 1)); // guard against extreme stretches
 			if (iframe == my nx) {
 				thyEndSampleP = (long) floor (fmin (thy nx, thyStartSample + synthesis -> nx - 1));   // ppgb: waarom naar beneden afgerond?
@@ -175,19 +174,20 @@ Sound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor)
 			}
 			thyStartTime += my dx * stretchFactor;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
 
-static Sound ComplexSpectrogram_to_Sound2 (ComplexSpectrogram me, double stretchFactor) {
+#if 0
+static autoSound ComplexSpectrogram_to_Sound2 (ComplexSpectrogram me, double stretchFactor) {
 	try {
 		/* original number of samples is odd: imaginary part of last spectral value is zero -> 
 		 * phase is either zero or pi
 		 */
-		double pi = atan2 (0, - 0.5);
-		double samplingFrequency = 2 * my ymax;
+		double pi = atan2 (0.0, - 0.5);
+		double samplingFrequency = 2.0 * my ymax;
 		double lastFrequency = my y1 + (my ny - 1) * my dy;
 		int originalNumberOfSamplesProbablyOdd = (my phase [my ny][1] != 0.0 && my phase[my ny][1] != pi) || my ymax - lastFrequency > 0.25 * my dx;
 		if (my y1 != 0.0) {
@@ -207,34 +207,35 @@ static Sound ComplexSpectrogram_to_Sound2 (ComplexSpectrogram me, double stretch
 				double f = my y1 + (ifreq - 1) * my dy;
 				double a = sqrt (my z[ifreq][iframe]);
 				double phi = my phase[ifreq][iframe];
-				double extraPhase = 2 * pi * (stretchFactor - 1) * my dx * f;
+				double extraPhase = 2.0 * pi * (stretchFactor - 1.0) * my dx * f;
 				phi += extraPhase;
 				spectrum -> z[1][ifreq] = a * cos (phi);
 				spectrum -> z[2][ifreq] = a * sin (phi);
 			}
-			autoSound synthesis = Spectrum_to_Sound (spectrum.peek());
+			autoSound synthesis = Spectrum_to_Sound (spectrum.get());
 			for (long j = istart; j <= iend; j++) {
 				thy z[1][j] = synthesis -> z[1][j - istart + 1];
 			}
 			istart = iend + 1; iend = istart + stepSizeSamples - 1;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
+#endif
 
-Spectrogram ComplexSpectrogram_to_Spectrogram (ComplexSpectrogram me) {
+autoSpectrogram ComplexSpectrogram_to_Spectrogram (ComplexSpectrogram me) {
 	try {
 		autoSpectrogram thee = Spectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements<double> (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrogram.");
 	}
 }
 
-Spectrum ComplexSpectrogram_to_Spectrum (ComplexSpectrogram me, double time) {
+autoSpectrum ComplexSpectrogram_to_Spectrum (ComplexSpectrogram me, double time) {
 	try {
 		long iframe = Sampled_xToLowIndex (me, time);   // ppgb: geen Sampled_xToIndex gebruiken voor integers (afrondingen altijd expliciet maken)
 		iframe = iframe < 1 ? 1 : (iframe > my nx ? my nx : iframe);
@@ -245,7 +246,7 @@ Spectrum ComplexSpectrogram_to_Spectrum (ComplexSpectrogram me, double time) {
 			thy z[1][ifreq] = a * cos (phi);
 			thy z[2][ifreq] = a * sin (phi);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum created.");
 	}
diff --git a/dwtools/ComplexSpectrogram.h b/dwtools/ComplexSpectrogram.h
index e526a52..a79f588 100644
--- a/dwtools/ComplexSpectrogram.h
+++ b/dwtools/ComplexSpectrogram.h
@@ -5,19 +5,18 @@
  * 
  * Copyright (C) 2014 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -25,19 +24,17 @@
 #include "Spectrogram.h"
 
 #include "ComplexSpectrogram_def.h"
-oo_CLASS_CREATE (ComplexSpectrogram, Matrix);
 
-
-ComplexSpectrogram ComplexSpectrogram_create (double tmin, double tmax, long nt, double dt,
+autoComplexSpectrogram ComplexSpectrogram_create (double tmin, double tmax, long nt, double dt,
 	double t1, double fmin, double fmax, long nf, double df, double f1);
 
-ComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, double timeStep);
+autoComplexSpectrogram Sound_to_ComplexSpectrogram (Sound me, double windowLength, double timeStep);
 /* Hann window because we want to reconstruct */
 
-Sound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor);
+autoSound ComplexSpectrogram_to_Sound (ComplexSpectrogram me, double stretchFactor);
 
-Spectrogram ComplexSpectrogram_to_Spectrogram (ComplexSpectrogram me);
+autoSpectrogram ComplexSpectrogram_to_Spectrogram (ComplexSpectrogram me);
 
-Spectrum ComplexSpectrogram_to_Spectrum (ComplexSpectrogram me, double time);
+autoSpectrum ComplexSpectrogram_to_Spectrum (ComplexSpectrogram me, double time);
 
 #endif  /* _ComplexSpectrogram_h_ */
diff --git a/dwtools/ComplexSpectrogram_def.h b/dwtools/ComplexSpectrogram_def.h
index f334468..225844a 100644
--- a/dwtools/ComplexSpectrogram_def.h
+++ b/dwtools/ComplexSpectrogram_def.h
@@ -2,19 +2,18 @@
  * 
  * Copyright (C) 2014 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/dwtools/Configuration.cpp b/dwtools/Configuration.cpp
index 72af4a6..885154d 100644
--- a/dwtools/Configuration.cpp
+++ b/dwtools/Configuration.cpp
@@ -1,20 +1,19 @@
 /* Configuration.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -24,7 +23,7 @@
  djmw 20030801 Configuration_drawConcentrationEllipses extra argument
  djmw 20040303 Moved containsPrintableCharacter to NUM2.c
  djmw 20041026 Removed non-used code.
- djmw 20050314 Configuration_draw crashed when rowlabel==NULL
+ djmw 20050314 Configuration_draw crashed when rowlabel==nullptr
  djmw 20061021 printf expects %ld for 'long int'
  djmw 20061212 Changed info to Melder_writeLine<x> format.
  djmw 20071009 wchar
@@ -63,25 +62,24 @@
 Thing_implement (Configuration, TableOfReal, 0);
 
 void structConfiguration :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of points: ", numberOfRows);
 	MelderInfo_writeLine (U"Number of dimensions: ", numberOfColumns);
 	MelderInfo_writeLine (U"Metric: ", metric);
 }
 
-Configuration Configuration_create (long numberOfPoints,
-                                    long numberOfDimensions) {
+autoConfiguration Configuration_create (long numberOfPoints, long numberOfDimensions) {
 	try {
 		autoConfiguration me = Thing_new (Configuration);
-		TableOfReal_init (me.peek(), numberOfPoints, numberOfDimensions);
+		TableOfReal_init (me.get(), numberOfPoints, numberOfDimensions);
 		my w = NUMvector<double> (1, numberOfDimensions);
-		TableOfReal_setSequentialRowLabels (me.peek(), 0, 0, NULL, 1, 1);
-		TableOfReal_setSequentialColumnLabels (me.peek(), 0, 0, U"dimension ", 1, 1);
+		TableOfReal_setSequentialRowLabels (me.get(), 0, 0, nullptr, 1, 1);
+		TableOfReal_setSequentialColumnLabels (me.get(), 0, 0, U"dimension ", 1, 1);
 
 		my metric = 2;
-		Configuration_setDefaultWeights (me.peek());
-		Configuration_randomize (me.peek());
-		return me.transfer();
+		Configuration_setDefaultWeights (me.get());
+		Configuration_randomize (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Configuration not created.");
 	}
@@ -103,30 +101,29 @@ void Configuration_setSqWeights (Configuration me, const double weight[]) {
 	}
 }
 
-void Configuration_normalize (Configuration me, double sumsq, int columns) {
+void Configuration_normalize (Configuration me, double sumsq, bool columns) {
 	TableOfReal_centreColumns (me);
 	if (columns) {
-		sumsq = sumsq <= 0 ? 1.0 : sqrt (sumsq);
+		sumsq = sumsq <= 0.0 ? 1.0 : sqrt (sumsq);
 		NUMnormalizeColumns (my data, my numberOfRows, my numberOfColumns, sumsq);
 	} else {
-		if (sumsq <= 0) {
+		if (sumsq <= 0.0) {
 			sumsq = my numberOfRows;
 		}
-		NUMnormalize (my data, my numberOfRows, my numberOfColumns,
-		              sqrt (sumsq));
+		NUMnormalize (my data, my numberOfRows, my numberOfColumns, sqrt (sumsq));
 	}
 }
 
 void Configuration_randomize (Configuration me) {
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			my data[i][j] = NUMrandomUniform (-1, 1);
+			my data[i][j] = NUMrandomUniform (-1.0, 1.0);
 		}
 	}
 }
 
 void Configuration_rotate (Configuration me, long dimension1, long dimension2, double angle_degrees) {
-	double f = NUMpi * (2 - angle_degrees / 180);
+	double f = NUMpi * (2.0 - angle_degrees / 180.0);
 	double cosa = cos (f), sina = sin (f);
 
 	if (dimension1 == dimension2 || angle_degrees == 0) {
@@ -158,10 +155,10 @@ void Configuration_invertDimension (Configuration me, int dimension) {
 
 
 static double NUMsquaredVariance (double **a, long nr, long nc, int rawPowers) {
-	double v4 = 0;
+	double v4 = 0.0;
 
 	for (long j = 1; j <= nc; j++) {
-		double sum4 = 0, mean = 0;
+		double sum4 = 0.0, mean = 0.0;
 		for (long i = 1; i <= nr; i++) {
 			double sq = a[i][j] * a[i][j];
 			sum4 += sq * sq;
@@ -181,8 +178,7 @@ static double NUMsquaredVariance (double **a, long nr, long nc, int rawPowers) {
 		planar rotations: a remedy against nonoptimal varimax rotations",
 		Psychometrika 60, 437-446.
 */
-static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normalizeRows, int quartimax,
-                        long maximumNumberOfIterations, double tolerance) {
+static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normalizeRows, int quartimax, long maximumNumberOfIterations, double tolerance) {
 	Melder_assert (nr > 0 && nc > 0);
 
 	NUMmatrix_copyElements (xm, ym, 1, nr, 1, nc);
@@ -207,7 +203,7 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 			for (long j = 1; j <= nc; j++) {
 				norm[i] += ym[i][j] * ym[i][j];
 			}
-			if (norm[i] <= 0) {
+			if (norm[i] <= 0.0) {
 				continue;
 			}
 			norm[i] = sqrt (norm[i]);
@@ -220,7 +216,7 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 	// Initial squared "variance".
 
 	double varianceSq = NUMsquaredVariance (ym, nr, nc, quartimax);
-	if (varianceSq == 0) {
+	if (varianceSq == 0.0) {
 		return;
 	}
 
@@ -231,17 +227,17 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 	do {
 		for (long c1 = 1; c1 <= nc; c1++) {
 			for (long c2 = c1 + 1; c2 <= nc; c2++) {
-				double um = 0, vm = 0;
+				double um = 0.0, vm = 0.0;
 				for (long i = 1; i <= nr; i++) {
 					double x = ym[i][c1], y = ym[i][c2];
 					u[i] = x * x - y * y;
 					um += u[i];
-					v[i] = 2 * x * y;
+					v[i] = 2.0 * x * y;
 					vm += v[i];
 				}
 				um /= nr; vm /= nr;
 				if (quartimax || nr == 1) {
-					um = vm = 0;
+					um = vm = 0.0;
 				}
 
 				/*
@@ -251,15 +247,15 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 					Tricks: multiplication with n drops out!
 						a's multiplication by 2 outside the loop.
 				*/
-				double a = 0, b = 0;
+				double a = 0.0, b = 0.0;
 				for (long i = 1; i <= nr; i++) {
 					double ui = u[i] - um, vi = v[i] - vm;
 					a += ui * vi;
 					b += ui * ui - vi * vi;
 				}
-				double c = sqrt (4 * a * a + b * b);
-				double w = sqrt ( (c + b) / (2 * c));
-				if (a > 0) {
+				double c = sqrt (4.0 * a * a + b * b);
+				double w = sqrt ( (c + b) / (2.0 * c));
+				if (a > 0.0) {
 					w = -w;
 				}
 				double cost = sqrt (0.5 + 0.5 * w);
@@ -271,7 +267,7 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 
 				// Prevent permutations: when w < 0, i.e., a > 0, swap columns of T:/
 
-				if (w < 0) {
+				if (w < 0.0) {
 					t11 = sint; t12 = t21 = cost; t22 = -sint;
 				}
 
@@ -301,23 +297,22 @@ static void NUMvarimax (double **xm, double **ym, long nr, long nc, int normaliz
 	}
 }
 
-Configuration Configuration_varimax (Configuration me, int normalizeRows,
+autoConfiguration Configuration_varimax (Configuration me, int normalizeRows,
                                      int quartimax, long maximumNumberOfIterations, double tolerance) {
 	try {
 		autoConfiguration thee = Data_copy (me);
-		NUMvarimax (my data, thy data, my numberOfRows, my numberOfColumns, normalizeRows, quartimax,
-		            maximumNumberOfIterations, tolerance);
-		return thee.transfer();
+		NUMvarimax (my data, thy data, my numberOfRows, my numberOfColumns, normalizeRows, quartimax, maximumNumberOfIterations, tolerance);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": varimax rotation not performed.");
 	}
 }
 
-Configuration Configuration_congruenceRotation (Configuration me, Configuration thee, long maximumNumberOfIterations, double tolerance) {
+autoConfiguration Configuration_congruenceRotation (Configuration me, Configuration thee, long maximumNumberOfIterations, double tolerance) {
 	try {
 		autoAffineTransform at = Configurations_to_AffineTransform_congruence (me, thee, maximumNumberOfIterations, tolerance);
-		autoConfiguration him = Configuration_and_AffineTransform_to_Configuration (me, at.peek());
-		return him.transfer();
+		autoConfiguration him = Configuration_and_AffineTransform_to_Configuration (me, at.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": congruence rotation not performed.");
 	}
@@ -337,12 +332,12 @@ void Configuration_rotateToPrincipalDirections (Configuration me) {
 	}
 }
 
-void Configuration_draw (Configuration me, Graphics g, int xCoordinate, int yCoordinate, double xmin, double xmax,
-                         double ymin, double ymax, int labelSize, int useRowLabels, const char32 *label, int garnish) {
+void Configuration_draw (Configuration me, Graphics g, int xCoordinate, int yCoordinate, double xmin, double xmax, double ymin, double ymax,
+	int labelSize, bool useRowLabels, const char32 *label, bool garnish)
+{
 	long nPoints = my numberOfRows, numberOfDimensions = my numberOfColumns;
 
-	if (numberOfDimensions > 1 && (xCoordinate > numberOfDimensions ||
-	                               yCoordinate > numberOfDimensions)) {
+	if (numberOfDimensions > 1 && (xCoordinate > numberOfDimensions || yCoordinate > numberOfDimensions)) {
 		return;
 	}
 	if (numberOfDimensions == 1) {
@@ -355,35 +350,35 @@ void Configuration_draw (Configuration me, Graphics g, int xCoordinate, int yCoo
 	autoNUMvector<double> x (1, nPoints);
 	autoNUMvector<double> y (1, nPoints);
 
-	for (long i = 1; i <= nPoints; i++) {
-		x[i] = my data[i][xCoordinate] * my w[xCoordinate];
-		y[i] = numberOfDimensions > 1 ? my data[i][yCoordinate] * my w[yCoordinate] : 0;
+	for (long i = 1; i <= nPoints; i ++) {
+		x[i] = my data [i] [xCoordinate] * my w [xCoordinate];
+		y[i] = ( numberOfDimensions > 1 ? my data [i] [yCoordinate] * my w [yCoordinate] : 0.0 );
 	}
 	if (xmax <= xmin) {
 		NUMvector_extrema (x.peek(), 1, nPoints, &xmin, &xmax);
 	}
 	if (xmax <= xmin) {
-		xmax += 1;
-		xmin -= 1;
+		xmax += 1.0;
+		xmin -= 1.0;
 	}
 	if (ymax <= ymin) {
 		NUMvector_extrema (y.peek(), 1, nPoints, &ymin, &ymax);
 	}
 	if (ymax <= ymin) {
-		ymax += 1;
-		ymin -= 1;
+		ymax += 1.0;
+		ymin -= 1.0;
 	}
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_setInner (g);
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 	Graphics_setFontSize (g, labelSize);
-	for (long i = 1; i <= my numberOfRows; i++) {
-		if (x[i] >= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) {
-			const char32 *plotLabel = useRowLabels ? my rowLabels[i] : label;
+	for (long i = 1; i <= my numberOfRows; i ++) {
+		if (x [i] >= xmin && x [i] <= xmax && y [i] >= ymin && y [i] <= ymax) {
+			const char32 *plotLabel = ( useRowLabels ? my rowLabels [i] : label );
 			if (NUMstring_containsPrintableCharacter (plotLabel)) {
-				Graphics_text (g, x[i], y[i], plotLabel);
+				Graphics_text (g, x [i], y [i], plotLabel);
 			} else {
-				noLabel++;
+				noLabel ++;
 			}
 		}
 	}
@@ -392,52 +387,49 @@ void Configuration_draw (Configuration me, Graphics g, int xCoordinate, int yCoo
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (numberOfDimensions > 1) {
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 			if (my columnLabels[xCoordinate]) {
-				Graphics_textBottom (g, 1, my columnLabels[xCoordinate]);
+				Graphics_textBottom (g, true, my columnLabels[xCoordinate]);
 			}
 			if (my columnLabels[yCoordinate]) {
-				Graphics_textLeft (g, 1, my columnLabels[yCoordinate]);
+				Graphics_textLeft (g, true, my columnLabels[yCoordinate]);
 			}
 		}
 	}
 
-	if (noLabel > 0) Melder_warning (U"Configuration_draw: ", noLabel, U" from ", my numberOfRows,
-		                                 U" labels are not visible because they are empty or they contain only spaces or they contain only non-printable characters");
+	if (noLabel > 0) {
+		Melder_warning (U"Configuration_draw: ", noLabel, U" from ", my numberOfRows, U" labels are not visible because they are empty or they contain only spaces or they contain only non-printable characters");
+	}
 }
 
-void Configuration_drawConcentrationEllipses (Configuration me, Graphics g,
-        double scale, int confidence, const char32 *label, long d1, long d2, double xmin, double xmax,
-        double ymin, double ymax, int fontSize, int garnish) {
-	autoSSCPs sscps = TableOfReal_to_SSCPs_byLabel (me);
-	SSCPs_drawConcentrationEllipses (sscps.peek(), g, scale, confidence, label,
-	                                 d1, d2, xmin, xmax, ymin, ymax, fontSize, garnish);
+void Configuration_drawConcentrationEllipses (Configuration me, Graphics g, double scale, bool confidence, const char32 *label, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, bool garnish) {
+	autoSSCPList sscps = TableOfReal_to_SSCPList_byLabel (me);
+	SSCPList_drawConcentrationEllipses (sscps.get(), g, scale, confidence, label, d1, d2, xmin, xmax, ymin, ymax, fontSize, garnish);
 }
 
-Configuration TableOfReal_to_Configuration (I) {
-	iam (TableOfReal);
+autoConfiguration TableOfReal_to_Configuration (TableOfReal me) {
 	try {
 		autoConfiguration thee = Configuration_create (my numberOfRows, my numberOfColumns);
 
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
-		return thee.transfer();
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted.");
 	}
 }
 
-Configuration TableOfReal_to_Configuration_pca (TableOfReal me, long numberOfDimensions) {
+autoConfiguration TableOfReal_to_Configuration_pca (TableOfReal me, long numberOfDimensions) {
 	try {
 		if (numberOfDimensions < 1 || numberOfDimensions > my numberOfColumns) {
 			numberOfDimensions = my numberOfColumns;
 		}
 
-		autoPCA pca = TableOfReal_to_PCA (me);
-		autoConfiguration thee = PCA_and_TableOfReal_to_Configuration (pca.peek(), me, numberOfDimensions);
-		return thee.transfer();
+		autoPCA pca = TableOfReal_to_PCA_byRows (me);
+		autoConfiguration thee = PCA_and_TableOfReal_to_Configuration (pca.get(), me, numberOfDimensions);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": pca not performed.");
 	}
@@ -445,69 +437,65 @@ Configuration TableOfReal_to_Configuration_pca (TableOfReal me, long numberOfDim
 
 /********************** Examples *********************************************/
 
-Configuration Configuration_createLetterRExample (int choice) {
+autoConfiguration Configuration_createLetterRExample (int choice) {
 	double x1[33] = { 0,
-	                  -5, -5, -5, -5, -5, -5, -5,   -5, -5, -5,
-	                  -5, -4, -3, -2, -1,  0,  1, 2.25,  3,  3,
-	                  2.25,  1,  0, -1, -2, -3, -4,   -1,  0,  1, 2, 3
-	                };
+		-5, -5, -5, -5, -5, -5, -5,   -5, -5, -5,
+		-5, -4, -3, -2, -1,  0,  1, 2.25,  3,  3,
+		2.25,  1,  0, -1, -2, -3, -4,   -1,  0,  1, 2, 3 };
 	double y1[33] = { 0,
-	                  -6, -5, -4, -3, -2, -1, 0,   1,  2,  3,
-	                  4,  4,  4,  4,  4,  4, 4, 3.5,  2,  1,
-	                  -0.5, -1, -1, -1, -1, -1, -1, -2, -3, -4, -5, -6
-	                };
+		-6, -5, -4, -3, -2, -1, 0,   1,  2,  3,
+		4,  4,  4,  4,  4,  4, 4, 3.5,  2,  1,
+		-0.5, -1, -1, -1, -1, -1, -1, -2, -3, -4, -5, -6 };
 	double x2[33] = {0, 0.94756043346272423, 0.73504466902509913,
-	                 0.4528453515175927,    0.46311499024105723,   0.30345454816993439,
-	                 0.075184942115601547, -0.090010071904764719, -0.19630977381424003,
-	                 -0.36341509807865086,  -0.54216996409132612,  -0.68704678013309872,
-	                 -0.67370169194623086,  -0.69336494336440502,  -0.67809065144478664,
-	                 -0.61382610572366281,  -0.68656530656078996,  -0.57704879646736551,
-	                 -0.63417502349009069,  -0.37153350651419026,  -0.091809666009009777,
-	                 0.054833807442559397,  0.1445593164362155,    0.055587230806920782,
-	                 0.18201798315035453,   0.048445620192953162,  0.081595930742961439,
-	                 0.20063623749033621,   0.28546520751183313,   0.39384438699721991,
-	                 0.62832258520372286,   0.78548335015622228,   1.0610707888793069
-	                };
+		0.4528453515175927,    0.46311499024105723,   0.30345454816993439,
+		0.075184942115601547, -0.090010071904764719, -0.19630977381424003,
+		-0.36341509807865086,  -0.54216996409132612,  -0.68704678013309872,
+		-0.67370169194623086,  -0.69336494336440502,  -0.67809065144478664,
+		-0.61382610572366281,  -0.68656530656078996,  -0.57704879646736551,
+		-0.63417502349009069,  -0.37153350651419026,  -0.091809666009009777,
+		0.054833807442559397,  0.1445593164362155,    0.055587230806920782,
+		0.18201798315035453,   0.048445620192953162,  0.081595930742961439,
+		0.20063623749033621,   0.28546520751183313,   0.39384438699721991,
+		0.62832258520372286,   0.78548335015622228,   1.0610707888793069 };
 	double y2[33] = {0, 0.49630791172076621, 0.53320347382055022,
-	                 0.62384637225470441,  0.47592708487655661,  0.50364353255684202,
-	                 0.55311720162084443,  0.55118713773007066,  0.50007736370068601,
-	                 0.40432332354648709,  0.49817059660482677,  0.49803436631629411,
-	                 0.33213829258059019,  0.14585700576425648, -0.022110500334692869,
-	                 -0.1752555003289698,  -0.29448744336706828, -0.45639468287493545,
-	                 -0.59177815505008013, -0.74980550818568981, -0.78095916436791279,
-	                 -0.64447562732895125, -0.49526830813007033, -0.22443396573313243,
-	                 -0.066378148077667398, -0.03498490725857361,  0.16196028200653381,
-	                 0.30633527000982519, -0.14894460651161745, -0.30808798640907431,
-	                 -0.35920781945385832, -0.62766325578928184, -0.60389363590825562
-	                };
+		0.62384637225470441,  0.47592708487655661,  0.50364353255684202,
+		0.55311720162084443,  0.55118713773007066,  0.50007736370068601,
+		0.40432332354648709,  0.49817059660482677,  0.49803436631629411,
+		0.33213829258059019,  0.14585700576425648, -0.022110500334692869,
+		-0.1752555003289698,  -0.29448744336706828, -0.45639468287493545,
+		-0.59177815505008013, -0.74980550818568981, -0.78095916436791279,
+		-0.64447562732895125, -0.49526830813007033, -0.22443396573313243,
+		-0.066378148077667398, -0.03498490725857361,  0.16196028200653381,
+		0.30633527000982519, -0.14894460651161745, -0.30808798640907431,
+		-0.35920781945385832, -0.62766325578928184, -0.60389363590825562 };
 	try {
 		double *x, *y;
 		autoConfiguration me = Configuration_create (32, 2);
 
 		if (choice == 2) {
 			x = x2; y = y2;
-			Thing_setName (me.peek(), U"R_fit");
+			Thing_setName (me.get(), U"R_fit");
 		} else {
 			x = x1; y = y1;
-			Thing_setName (me.peek(), U"R");
+			Thing_setName (me.get(), U"R");
 		}
 
 		for (long i = 1; i <= 32; i++) {
 			char32 s[20];
 			Melder_sprint (s,20, i);
-			TableOfReal_setRowLabel (me.peek(), i, s);
+			TableOfReal_setRowLabel (me.get(), i, s);
 			my data [i][1] = x[i];
 			my data [i][2] = y[i];
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Letter R Configuration not created.");
 	}
 }
 
-Configuration Configuration_createCarrollWishExample () {
-	double  x[10] = {0, -1, 0, 1, -1, 0, 1, -1,  0,  1};
-	double  y[10] = {0,  1, 1, 1,  0, 0, 0, -1, -1, -1};
+autoConfiguration Configuration_createCarrollWishExample () {
+	double  x[10] = {0.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, -1.0,  0.0,  1.0};
+	double  y[10] = {0.0,  1.0, 1.0, 1.0,  0.0, 0.0, 0.0, -1.0, -1.0, -1.0};
 	char32 const *label[] = { U"", U"A", U"B", U"C", U"D", U"E", U"F", U"G", U"H", U"I"};
 	try {
 		long nObjects = 9;
@@ -515,9 +503,9 @@ Configuration Configuration_createCarrollWishExample () {
 		for (long i = 1; i <= nObjects; i++) {
 			my data[i][1] = x[i];
 			my data[i][2] = y[i];
-			TableOfReal_setRowLabel (me.peek(), i, label[i]);
+			TableOfReal_setRowLabel (me.get(), i, label[i]);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Carroll Wish Configuration not created.");
 	}
@@ -525,16 +513,6 @@ Configuration Configuration_createCarrollWishExample () {
 
 /************ CONFIGURATIONS **************************************/
 
-Thing_implement (Configurations, Ordered, 0);
-
-Configurations Configurations_create () {
-	try {
-		autoConfigurations me = Thing_new (Configurations);
-		Ordered_init (me.peek(), classConfiguration, 10);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Configurations not created.");
-	}
-}
+Thing_implement (ConfigurationList, TableOfRealList, 0);
 
 /* End of file Configuration.cpp */
diff --git a/dwtools/Configuration.h b/dwtools/Configuration.h
index 490787a..0786da3 100644
--- a/dwtools/Configuration.h
+++ b/dwtools/Configuration.h
@@ -2,21 +2,20 @@
 #define _Configuration_h_
 /* Configuration.h
  *
- * Copyright (C) 1992-2011 David Weenink
+ * Copyright (C) 1992-2011,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -24,9 +23,11 @@
 #include "Collection.h"
 
 #include "Configuration_def.h"
-oo_CLASS_CREATE (Configuration, TableOfReal);
 
-Configuration Configuration_create (long numberOfPoints, long numberOfDimensions);
+
+#pragma mark - class Configuration
+
+autoConfiguration Configuration_create (long numberOfPoints, long numberOfDimensions);
 
 void Configuration_setMetric (Configuration me, long metric);
 
@@ -41,7 +42,7 @@ void Configuration_randomize (Configuration me);
 	new x[i][j] = randomUniform (-1,1)
 */
 
-void Configuration_normalize (Configuration me, double variance, int choice);
+void Configuration_normalize (Configuration me, double variance, bool choice);
 /*
 	1. centre columns
 	2.
@@ -64,7 +65,7 @@ void Configuration_invertDimension (Configuration me, int dimension);
 			my data[i][dimension] = - my data[i][dimension];
 */
 
-Configuration Configuration_congruenceRotation (Configuration me, Configuration thee,
+autoConfiguration Configuration_congruenceRotation (Configuration me, Configuration thee,
 	long maximumNumberOfIterations, double tolerance);
 /*
 	Rotate thee for maximum congruence. Algorithm:
@@ -72,8 +73,7 @@ Configuration Configuration_congruenceRotation (Configuration me, Configuration
 		orthogonal congruence rotation", Psychometrika 61, 375-389.
 */
 
-Configuration Configuration_varimax (Configuration me, int normalizeRows,
-	int quartimax, long maximumNumberOfIterations, double tolerance);
+autoConfiguration Configuration_varimax (Configuration me, int normalizeRows, int quartimax, long maximumNumberOfIterations, double tolerance);
 /*
 	Perform varimax rotation. Algorithm with extra security from:
 	Jos Ten Berge (1995), "Suppressing permutations or rigid planar rotations:
@@ -84,16 +84,15 @@ void Configuration_rotateToPrincipalDirections (Configuration me);
 
 void Configuration_draw (Configuration me, Graphics g, int xCoordinate,
 	int yCoordinate, double xmin, double xmax, double ymin, double ymax,
-	int labelSize, int useRowLabels, const char32 *label, int garnish);
+	int labelSize, bool useRowLabels, const char32 *label, bool garnish);
 
 void Configuration_drawConcentrationEllipses (Configuration me, Graphics g,
-	double scale, int confidence, const char32 *label, long d1, long d2, double xmin, double xmax,
-	double ymin, double ymax, int fontSize, int garnish);
+	double scale, bool confidence, const char32 *label, long d1, long d2, double xmin, double xmax,
+	double ymin, double ymax, int fontSize, bool garnish);
 
-Configuration TableOfReal_to_Configuration (I);
+autoConfiguration TableOfReal_to_Configuration (TableOfReal me);
 
-Configuration TableOfReal_to_Configuration_pca (TableOfReal me,
-	long numberOfDimensions);
+autoConfiguration TableOfReal_to_Configuration_pca (TableOfReal me, long numberOfDimensions);
 /*
 	Precondition:
 		numberOfDimensions > 0
@@ -103,21 +102,20 @@ Configuration TableOfReal_to_Configuration_pca (TableOfReal me,
 		(Configuration) numberOfColumns = MIN (my numberOfColumns, numberOfDimensions)
 */
 
-Configuration Configuration_createLetterRExample (int choice);
+autoConfiguration Configuration_createLetterRExample (int choice);
 /*
   	Create a two-dimensional configuartion from the letter R.
   	choice = 1 : undistorted;
   	choice = 2 : result of monotone fit on distorted (d^2 + 5 +32.5*z)
 */
 
-Configuration Configuration_createCarrollWishExample ();
+autoConfiguration Configuration_createCarrollWishExample ();
 
 
-/************************** class Configurations **************************************/
+#pragma mark - class ConfigurationList
 
-Thing_define (Configurations, Ordered) {
+Collection_define (ConfigurationList, OrderedOf, Configuration) {
 };
 
-Configurations Configurations_create ();
-
-#endif /* _Configuration_h_ */
+/* End of file Configuration.h */
+#endif
diff --git a/dwtools/Configuration_AffineTransform.cpp b/dwtools/Configuration_AffineTransform.cpp
index bc38e7c..de711a4 100644
--- a/dwtools/Configuration_AffineTransform.cpp
+++ b/dwtools/Configuration_AffineTransform.cpp
@@ -1,20 +1,19 @@
 /* Configuration_AffineTransform.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,11 +32,11 @@ static void do_steps45 (double **w, double **t, double **c, long n, double *f) {
 	// Step 4 || 10: If W'T has negative diagonal elements, multiply corresponding columns in T by -1.
 
 	for (long i = 1; i <= n; i++) {
-		double d = 0;
+		double d = 0.0;
 		for (long k = 1; k <= n; k++) {
 			d += w[k][i] * t[k][i];
 		}
-		if (d < 0) {
+		if (d < 0.0) {
 			for (long k = 1; k <= n; k++) {
 				t[k][i] = -t[k][i];
 			}
@@ -46,23 +45,22 @@ static void do_steps45 (double **w, double **t, double **c, long n, double *f) {
 
 	// Step 5 & 11: f = tr W'T (Diag (T'CT))^-1/2
 
-	*f = 0;
+	*f = 0.0;
 	for (long i = 1; i <= n; i++) {
-		double d = 0, tct = 0;
+		double d = 0.0, tct = 0.0;
 		for (long k = 1; k <= n; k++) {
 			d += w[k][i] * t[k][i];
 			for (long j = 1; j <= n; j++) {
 				tct += t[k][i] * c[k][j] * t[j][i];
 			}
 		}
-		if (tct > 0) {
+		if (tct > 0.0) {
 			*f += d / sqrt (tct);
 		}
 	}
 }
 
-static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
-                                   double **t, long maximumNumberOfIterations, double tolerance) {
+static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc, double **t, long maximumNumberOfIterations, double tolerance) {
 	long numberOfIterations = 0;
 	Melder_assert (nr > 0 && nc > 0);
 	Melder_assert (t);
@@ -89,19 +87,19 @@ static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
 		}
 	}
 
-	if (checkc == 0 || checkw == 0) {
+	if (checkc == 0.0 || checkw == 0.0) {
 		Melder_throw (U"NUMmaximizeCongruence: we cannot rotate a zero matrix.");
 	}
 
 	// Scale W by (diag(B'B))^-1/2
 
 	for (long j = 1; j <= nc; j++) {
-		double scale = 0;
+		double scale = 0.0;
 		for (long k = 1; k <= nr; k++) {
 			scale += b[k][j] * b[k][j];
 		}
-		if (scale > 0) {
-			scale = 1 / sqrt (scale);
+		if (scale > 0.0) {
+			scale = 1.0 / sqrt (scale);
 		}
 		for (long i = 1; i <= nc; i++) {
 			w[i][j] *= scale;
@@ -110,7 +108,7 @@ static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
 
 	// Step 3: largest eigenvalue of C
 
-	evec[1] = 1;
+	evec[1] = 1.0;
 	double rho, f, f_old;
 	NUMdominantEigenvector (c.peek(), nc, evec.peek(), &rho, 1.0e-6);
 
@@ -119,7 +117,7 @@ static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
 		for (long j = 1; j <= nc; j++) {
 			// Step 7.a
 
-			double p = 0;
+			double p = 0.0;
 			for (long k = 1; k <= nc; k++) {
 				for (long i = 1; i <= nc; i++) {
 					p += t[k][j] * c[k][i] * t[i][j];
@@ -128,41 +126,41 @@ static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
 
 			// Step 7.b
 
-			double q = 0;
+			double q = 0.0;
 			for (long k = 1; k <= nc; k++) {
 				q += w[k][j] * t[k][j];
 			}
 
 			// Step 7.c
 
-			if (q == 0) {
+			if (q == 0.0) {
 				for (long i = 1; i <= nc; i++) {
-					u[i][j] = 0;
+					u[i][j] = 0.0;
 				}
 			} else {
-				double ww = 0;
+				double ww = 0.0;
 				for (long k = 1; k <= nc; k++) {
 					ww += w[k][j] * w[k][j];
 				}
 				for (long i = 1; i <= nc; i++) {
-					double ct = 0;
+					double ct = 0.0;
 					for (long k = 1; k <= nc; k++) {
 						ct += c[i][k] * t[k][j];
 					}
-					u[i][j] = (q * (ct - rho * t[i][j]) / p - 2 * ww * t[i][j] / q - w[i][j]) / sqrt (p);
+					u[i][j] = (q * (ct - rho * t[i][j]) / p - 2.0 * ww * t[i][j] / q - w[i][j]) / sqrt (p);
 				}
 			}
 		}
 
 		// Step 8
 
-		SVD_svd_d (svd.peek(), u.peek());
+		SVD_svd_d (svd.get(), u.peek());
 
 		// Step 9
 
 		for (long i = 1; i <= nc; i++) {
 			for (long j = 1; j <= nc; j++) {
-				t[i][j] = 0;
+				t[i][j] = 0.0;
 				for (long  k = 1; k <= nc; k++) {
 					t[i][j] -= svd -> u[i][k] * svd -> v[j][k];
 				}
@@ -179,36 +177,32 @@ static void NUMmaximizeCongruence (double **b, double **a, long nr, long nc,
 	} while (fabs (f_old - f) / f_old > tolerance && numberOfIterations < maximumNumberOfIterations);
 }
 
-AffineTransform Configurations_to_AffineTransform_congruence (Configuration me,
-        Configuration thee, long maximumNumberOfIterations, double tolerance) {
+autoAffineTransform Configurations_to_AffineTransform_congruence (Configuration me, Configuration thee, long maximumNumberOfIterations, double tolerance) {
 	try {
 		// Use Procrustes transform to obtain starting configuration.
 		// (We only need the transformation matrix T.)
 		autoProcrustes p = Configurations_to_Procrustes (me, thee, 0);
-		NUMmaximizeCongruence (my data, thy data, my numberOfRows,
-		                       p -> n, p -> r, maximumNumberOfIterations, tolerance);
+		NUMmaximizeCongruence (my data, thy data, my numberOfRows, p -> n, p -> r, maximumNumberOfIterations, tolerance);
 
 		autoAffineTransform at = AffineTransform_create (p -> n);
 		NUMmatrix_copyElements (p -> r, at -> r, 1, p -> n, 1, p -> n);
-		return at.transfer();
+		return at;
 	} catch (MelderError) {
 		Melder_throw (me, U": no congruence transformation created.");
 	}
 }
 
-Configuration Configuration_and_AffineTransform_to_Configuration (Configuration me, thou) {
+autoConfiguration Configuration_and_AffineTransform_to_Configuration (Configuration me, AffineTransform thee) {
 	try {
-		thouart (AffineTransform);
-
 		if (my numberOfColumns != thy n) {
 			Melder_throw (U"Dimensions do not agree.");
 		}
-		autoConfiguration him = (Configuration) Data_copy (me);
+		autoConfiguration him = Data_copy (me);
 
 		// Apply transformation YT
 
 		thy v_transform (my data, my numberOfRows, his data);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Configuration not created.");
 	}
diff --git a/dwtools/Configuration_AffineTransform.h b/dwtools/Configuration_AffineTransform.h
index a6e74c1..fe30c26 100644
--- a/dwtools/Configuration_AffineTransform.h
+++ b/dwtools/Configuration_AffineTransform.h
@@ -2,21 +2,20 @@
 #define _Configuration_AffineTransform_h_
 /* Configuration_AffineTransform.c
  * 
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,10 +26,8 @@
 #include "Configuration.h"
 #include "AffineTransform.h"
 
-AffineTransform Configurations_to_AffineTransform_congruence (Configuration me,
-	Configuration thee, long maximumNumberOfIterations, double tolerance);
+autoAffineTransform Configurations_to_AffineTransform_congruence (Configuration me,	Configuration thee, long maximumNumberOfIterations, double tolerance);
 
-Configuration Configuration_and_AffineTransform_to_Configuration 
-	(Configuration me, thou);
+autoConfiguration Configuration_and_AffineTransform_to_Configuration (Configuration me, AffineTransform thee);
 
 #endif /* _Configuration_AffineTransform_h_ */
diff --git a/dwtools/Configuration_and_Procrustes.cpp b/dwtools/Configuration_and_Procrustes.cpp
index 161f503..0c3d8b0 100644
--- a/dwtools/Configuration_and_Procrustes.cpp
+++ b/dwtools/Configuration_and_Procrustes.cpp
@@ -1,20 +1,19 @@
 /* Configuration_and_Procrustes.c
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,7 +25,7 @@
 #include "Configuration_and_Procrustes.h"
 #include "NUM2.h"
 
-Procrustes Configurations_to_Procrustes (Configuration me, Configuration thee, int orthogonal) {
+autoProcrustes Configurations_to_Procrustes (Configuration me, Configuration thee, int orthogonal) {
 	try {
 		if (my numberOfRows != thy numberOfRows || my numberOfColumns != thy numberOfColumns) {
 			Melder_throw (U"Configurations must have the same number of points and the same dimension.");
@@ -39,7 +38,7 @@ Procrustes Configurations_to_Procrustes (Configuration me, Configuration thee, i
 			scale = & (p -> s);
 		}
 		NUMProcrustes (my data, thy data, my numberOfRows, my numberOfColumns, p -> r, translation, scale);
-		return p.transfer();
+		return p;
 	} catch (MelderError) {
 		Melder_throw (U"Procrustes from two Configurations not created.");
 	}
diff --git a/dwtools/Configuration_and_Procrustes.h b/dwtools/Configuration_and_Procrustes.h
index 5cb6a0b..61e1504 100644
--- a/dwtools/Configuration_and_Procrustes.h
+++ b/dwtools/Configuration_and_Procrustes.h
@@ -2,21 +2,20 @@
 #define _Configuration_and_Procrustes_h_
 /* Configuration_and_Procrustes.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,6 +30,6 @@
 	#include "Procrustes.h"
 #endif
 
-Procrustes Configurations_to_Procrustes (Configuration me, Configuration thee, int orthogonal);
+autoProcrustes Configurations_to_Procrustes (Configuration me, Configuration thee, int orthogonal);
 
 #endif /* _Configuration_and_Procrustes_h_ */
diff --git a/dwtools/Configuration_def.h b/dwtools/Configuration_def.h
index 93bf3e5..8da8a71 100644
--- a/dwtools/Configuration_def.h
+++ b/dwtools/Configuration_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/dwtools/Confusion.cpp b/dwtools/Confusion.cpp
index 0f70085..e48095e 100644
--- a/dwtools/Confusion.cpp
+++ b/dwtools/Confusion.cpp
@@ -1,20 +1,19 @@
 /* Confusion.cpp
  *
- * Copyright (C) 1993-2011, 2014 David Weenink
+ * Copyright (C) 1993-2011, 2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -41,8 +40,7 @@ void structConfusion :: v_info () {
 	double h, hx, hy, hygx, hxgy, uygx, uxgy, uxy, frac;
 	long nCorrect;
 
-	Confusion_getEntropies (this, & h, & hx, & hy, & hygx, & hxgy, & uygx,
-	                        & uxgy, & uxy);
+	Confusion_getEntropies (this, & h, & hx, & hy, & hygx, & hxgy, & uygx, & uxgy, & uxy);
 	Confusion_getFractionCorrect (this, & frac, & nCorrect);
 	MelderInfo_writeLine (U"Number of rows: ", numberOfRows);
 	MelderInfo_writeLine (U"Number of colums: ", numberOfColumns);
@@ -59,7 +57,7 @@ void structConfusion :: v_info () {
 	MelderInfo_writeLine (U" Fraction correct: ", frac);
 }
 
-Confusion Confusion_createFromStringses (Strings me, Strings thee) {
+autoConfusion Confusion_createFromStringses (Strings me, Strings thee) {
 	try {
 		if (my numberOfStrings < 1 || thy numberOfStrings < 1) {
 			Melder_throw (U"Empty Strings.");
@@ -67,29 +65,29 @@ Confusion Confusion_createFromStringses (Strings me, Strings thee) {
 		autoConfusion him = Confusion_create (my numberOfStrings, thy numberOfStrings);
 		for (long irow = 1; irow <= my numberOfStrings; irow++) {
 			const char32 *label = my strings[irow];
-			TableOfReal_setRowLabel (him.peek(), irow, label);
+			TableOfReal_setRowLabel (him.get(), irow, label);
 		}
 		for (long icol = 1; icol <= thy numberOfStrings; icol++) {
 			const char32 *label = thy strings[icol];
-			TableOfReal_setColumnLabel (him.peek(), icol, label);
+			TableOfReal_setColumnLabel (him.get(), icol, label);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": could not create Confusion with ", thee);
 	}
 }
 
-Confusion Confusion_create (long numberOfStimuli, long numberOfResponses) {
+autoConfusion Confusion_create (long numberOfStimuli, long numberOfResponses) {
 	try {
 		autoConfusion me = Thing_new (Confusion);
-		TableOfReal_init (me.peek(), numberOfStimuli, numberOfResponses);
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfStimuli, numberOfResponses);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Confusion not created.");
 	}
 }
 
-Confusion Confusion_createSimple (const char32 *labels) {
+autoConfusion Confusion_createSimple (const char32 *labels) {
 	try {
 		long numberOfLabels = Melder_countTokens (labels);
 		if (numberOfLabels < 1) {
@@ -103,39 +101,39 @@ Confusion Confusion_createSimple (const char32 *labels) {
 					Melder_throw (U"Label ", i, U"and ", ilabel, U"may not be equal.");
 				}
 			}
-			TableOfReal_setRowLabel (me.peek(), ilabel, token);
-			TableOfReal_setColumnLabel (me.peek(), ilabel, token);
+			TableOfReal_setRowLabel (me.get(), ilabel, token);
+			TableOfReal_setColumnLabel (me.get(), ilabel, token);
 			ilabel++;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Simple Confusion not created.");
 	}
 }
 
-Confusion Categories_to_Confusion (Categories me, Categories thee) {
+autoConfusion Categories_to_Confusion (Categories me, Categories thee) {
 	try {
 		if (my size != thy size) {
 			Melder_throw (U"Categories_to_Confusion: dimensions do not agree.");
 		}
 
-		autoCategories ul1 = Categories_selectUniqueItems (me, 1);
-		autoCategories ul2 = Categories_selectUniqueItems (thee, 1);
-		autoConfusion him = Confusion_create (ul1 -> size, ul2 -> size);
+		autoCategories ul1 = Categories_selectUniqueItems (me);
+		autoCategories ul2 = Categories_selectUniqueItems (thee);
+		autoConfusion him = Confusion_create (ul1->size, ul2->size);
 
-		for (long i = 1; i <= ul1 -> size; i++) {
-			SimpleString s = (SimpleString) ul1 -> item[i];
-			TableOfReal_setRowLabel (him.peek(), i, s -> string);
+		for (long i = 1; i <= ul1->size; i ++) {
+			SimpleString s = ul1->at [i];
+			TableOfReal_setRowLabel (him.get(), i, s -> string);
 		}
-		for (long i = 1; i <= ul2 -> size; i++) {
-			SimpleString s = (SimpleString) ul2 -> item[i];
-			TableOfReal_setColumnLabel (him.peek(), i, s -> string);
+		for (long i = 1; i <= ul2->size; i ++) {
+			SimpleString s = ul2->at [i];
+			TableOfReal_setColumnLabel (him.get(), i, s -> string);
 		}
-		for (long i = 1; i <= my size; i++) {
-			SimpleString myi = (SimpleString) my item[i], thyi = (SimpleString) thy item[i];
-			Confusion_increase (him.peek(), SimpleString_c (myi), SimpleString_c (thyi));
+		for (long i = 1; i <= my size; i ++) {
+			SimpleString myi = my at [i], thyi = thy at [i];
+			Confusion_increase (him.get(), SimpleString_c (myi), SimpleString_c (thyi));
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Confusion created.");
 	}
@@ -143,9 +141,8 @@ Confusion Categories_to_Confusion (Categories me, Categories thee) {
 
 #define TINY 1.0e-30
 
-void Confusion_getEntropies (Confusion me, double *h, double *hx, double *hy,
-                             double *hygx, double *hxgy, double *uygx, double *uxgy, double *uxy) {
-	*h = *hx = *hy = *hxgy = *hygx = *uygx = *uxgy = *uxy = 0;
+void Confusion_getEntropies (Confusion me, double *p_h, double *p_hx, double *p_hy, double *p_hygx, double *p_hxgy, double *p_uygx, double *p_uxgy, double *p_uxy) {
+	double h = 0.0, hx = 0.0, hy = 0.0, hxgy = 0.0, hygx = 0.0, uygx = 0.0, uxgy = 0.0, uxy = 0.0;
 
 	autoNUMvector<double> rowSum (1, my numberOfRows);
 	autoNUMvector<double> colSum (1, my numberOfColumns);
@@ -159,28 +156,52 @@ void Confusion_getEntropies (Confusion me, double *h, double *hx, double *hy,
 		}
 	}
 	for (long i = 1; i <= my numberOfRows; i++) {
-		if (rowSum[i] > 0) {
-			*hy -= rowSum[i] / sum * NUMlog2 (rowSum[i] / sum);
+		if (rowSum[i] > 0.0) {
+			hy -= rowSum[i] / sum * NUMlog2 (rowSum[i] / sum);
 		}
 	}
 	for (long j = 1; j <= my numberOfColumns; j++) {
-		if (colSum[j] > 0) {
-			*hx -= colSum[j] / sum * NUMlog2 (colSum[j] / sum);
+		if (colSum[j] > 0.0) {
+			hx -= colSum[j] / sum * NUMlog2 (colSum[j] / sum);
 		}
 	}
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (my data[i][j] > 0) {
-				*h -= my data[i][j] / sum * NUMlog2 (my data[i][j] / sum);
+			if (my data[i][j] > 0.0) {
+				h -= my data[i][j] / sum * NUMlog2 (my data[i][j] / sum);
 			}
 		}
 	}
 
-	*hygx = *h - *hx;
-	*hxgy = *h - *hy;
-	*uygx = (*hy - *hygx) / (*hy + TINY);
-	*uxgy = (*hx - *hxgy) / (*hx + TINY);
-	*uxy = 2.0 * (*hx + *hy - *h) / (*hx + *hy + TINY);
+	hygx = h - hx;
+	hxgy = h - hy;
+	uygx = (hy - hygx) / (hy + TINY);
+	uxgy = (hx - hxgy) / (hx + TINY);
+	uxy = 2.0 * (hx + hy - h) / (hx + hy + TINY);
+	if (p_h) {
+		*p_h  = h;
+	}
+	if (p_hx) {
+		*p_hx  = hx;
+	}
+	if (p_hy) {
+		*p_hy  = hy;
+	}
+	if (p_hygx) {
+		*p_hygx  = hygx;
+	}
+	if (p_hxgy) {
+		*p_hxgy  = hxgy;
+	}
+	if (p_uygx) {
+		*p_uygx  = uygx;
+	}
+	if (p_uxgy) {
+		*p_uxgy  = uxgy;
+	}
+	if (p_uxy) {
+		*p_uxy  = uxy;
+	}
 }
 
 void Confusion_increase (Confusion me, const char32 *stim, const char32 *resp) {
@@ -194,7 +215,7 @@ void Confusion_increase (Confusion me, const char32 *stim, const char32 *resp) {
 			Melder_throw (U"Response not valid.");
 		}
 
-		my data[stimIndex][respIndex] += 1;
+		my data[stimIndex][respIndex] += 1.0;
 	} catch (MelderError) {
 		Melder_throw (me, U": not increased.");
 	}
@@ -216,10 +237,10 @@ void Confusion_getFractionCorrect (Confusion me, double *fraction, long *numberO
 	*fraction = NUMundefined;
 	*numberOfCorrect = -1;
 
-	double c = 0, ct = 0;
+	double c = 0.0, ct = 0.0;
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (my rowLabels[i] == 0 || my columnLabels[j] == 0) {
+			if (! my rowLabels[i] || ! my columnLabels[j]) {
 				return;
 			}
 			ct += my data[i][j];
@@ -229,7 +250,7 @@ void Confusion_getFractionCorrect (Confusion me, double *fraction, long *numberO
 		}
 	}
 
-	if (ct != 0) {
+	if (ct != 0.0) {
 		*fraction = c / ct;
 	}
 	*numberOfCorrect = (long) floor (c);
@@ -239,27 +260,25 @@ void Confusion_getFractionCorrect (Confusion me, double *fraction, long *numberO
 
 #define NPOINTS 6
 
-static Polygon Polygon_createPointer () {
+static autoPolygon Polygon_createPointer () {
 	try {
-		double x[NPOINTS + 1] = { 0, 0, 0.9, 1, 0.9, 0, 0 };
-		double y[NPOINTS + 1] = { 0, 0, 0, 0.5,   1, 1, 0 };
+		double x[NPOINTS + 1] = { 0.0, 0.0, 0.9, 1.0, 0.9, 0.0, 0.0 };
+		double y[NPOINTS + 1] = { 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 0.0 };
 		autoPolygon me = Polygon_create (NPOINTS);
 		for (long i = 1; i <= NPOINTS; i++) {
 			my x[i] = x[i]; my y[i] = y[i];
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polygon not created.");
 	}
 }
 
-static void Polygon_drawInside (I, Graphics g) {
-	iam (Polygon);
+static void Polygon_drawInside (Polygon me, Graphics g) {
 	Graphics_polyline (g, my numberOfPoints, & my x[1], & my y[1]);
 }
 
-void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, double lowerPercentage,
-                            double xmin, double xmax, double ymin, double ymax, int garnish) {
+void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, double lowerPercentage, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	long ib = 1, ie = my numberOfRows;
 	if (index > 0 && index <= my numberOfColumns) {
 		ib = ie = index;
@@ -284,7 +303,7 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, d
 	if (ymax <= ymin) {
 		return;
 	}
-	double rmax = fabs (xmax - xmin) / 10;
+	double rmax = fabs (xmax - xmin) / 10.0;
 	double rmin = rmax / 10;
 
 	Graphics_setInner (g);
@@ -294,12 +313,12 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, d
 		Graphics_text (g, thy z[i][1], thy z[i][2], my rowLabels[i]);
 	}
 	for (long i = ib; i <= ie; i++) {
-		double xSum = 0;
+		double xSum = 0.0;
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			xSum += my data[i][j];
 		}
 
-		if (xSum <= 0) {
+		if (xSum <= 0.0) {
 			continue;    /* no confusions */
 		}
 
@@ -311,11 +330,11 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, d
 
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			double x2 = thy z[j][1], y2 = thy z[j][2];
-			double perc =  100 * my data[i][j] / xSum;
+			double perc =  100.0 * my data[i][j] / xSum;
 			double dx = x2 - x1, dy = y2 - y1;
 			double alpha = atan2 (dy, dx);
 
-			if (perc == 0 || perc < lowerPercentage || j == i) {
+			if (perc == 0.0 || perc < lowerPercentage || j == i) {
 				continue;
 			}
 
@@ -329,15 +348,15 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, d
 			}
 			autoPolygon p = Polygon_createPointer();
 			double xs = sqrt (dx * dx + dy * dy) - 2.2 * r;
-			if (xs < 0) {
-				xs = 0;
+			if (xs < 0.0) {
+				xs = 0.0;
 			}
-			double ys = perc * rmax / 100;
-			Polygon_scale (p.peek(), xs, ys);
-			Polygon_translate (p.peek(), x1, y1 - ys / 2);
-			Polygon_rotate (p.peek(), alpha, x1, y1);
-			Polygon_translate (p.peek(), 1.1 * r * cos (alpha), 1.1 * r * sin (alpha));
-			Polygon_drawInside (p.peek(), g);
+			double ys = perc * rmax / 100.0;
+			Polygon_scale (p.get(), xs, ys);
+			Polygon_translate (p.get(), x1, y1 - ys / 2);
+			Polygon_rotate (p.get(), alpha, x1, y1);
+			Polygon_translate (p.get(), 1.1 * r * cos (alpha), 1.1 * r * sin (alpha));
+			Polygon_drawInside (p.get(), g);
 		}
 	}
 
@@ -345,39 +364,39 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g, long index, d
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (ymin * ymax < 0.0) {
-			Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 		}
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (xmin * xmax < 0.0) {
-			Graphics_markBottom (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markBottom (g, 0.0, true, true, true, nullptr);
 		}
 	}
 }
 
-Matrix Confusion_difference (Confusion me, Confusion thee) {
+autoMatrix Confusion_difference (Confusion me, Confusion thee) {
 	try {
 		/* categories must be the same too*/
-		if (my numberOfColumns != thy numberOfColumns || my numberOfRows != thy numberOfRows) Melder_throw
-			(U"Dimensions not equal.");
+		if (my numberOfColumns != thy numberOfColumns || my numberOfRows != thy numberOfRows) {
+			Melder_throw (U"Dimensions not equal.");
+		}
 
-		autoMatrix him = Matrix_create (0.5, my numberOfColumns + 0.5, my numberOfColumns,
-		                                1, 1, 0.5, my numberOfRows + 0.5, my numberOfRows, 1, 1);
+		autoMatrix him = Matrix_create (0.5, my numberOfColumns + 0.5, my numberOfColumns, 1.0, 1.0, 0.5, my numberOfRows + 0.5, my numberOfRows, 1.0, 1.0);
 
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				his z[i][j] = my data[i][j] - thy data[i][j];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix not created from two Confusions.");
 	}
 }
 
 long Confusion_getNumberOfEntries (Confusion me) {
-	double total = 0;
+	double total = 0.0;
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			total += my data[i][j];
@@ -398,7 +417,7 @@ static void create_index (char32 **s, long sb, long se, char32 **ref, long rb, l
 	}
 }
 
-Confusion Confusion_condense (Confusion me, const char32 *search, const char32 *replace,
+autoConfusion Confusion_condense (Confusion me, const char32 *search, const char32 *replace,
 	long maximumNumberOfReplaces, int use_regexp) {
 	try {
 		long nmatches, nstringmatches;
@@ -421,10 +440,10 @@ Confusion Confusion_condense (Confusion me, const char32 *search, const char32 *
 		scol -> strings = columnLabels.transfer();
 
 		/* Find dimension of new Confusion */
-		autoDistributions dcol = Strings_to_Distributions (scol.peek());
+		autoDistributions dcol = Strings_to_Distributions (scol.get());
 		long nresp = dcol -> numberOfRows;
 
-		autoDistributions drow = Strings_to_Distributions (srow.peek());
+		autoDistributions drow = Strings_to_Distributions (srow.get());
 		long nstim = drow -> numberOfRows;
 
 		autoConfusion thee = Confusion_create (nstim, nresp);
@@ -442,36 +461,36 @@ Confusion Confusion_condense (Confusion me, const char32 *search, const char32 *
 				thy data [rowIndex [i]][columnIndex[j]] += my data[i][j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not condensed.");
 	}
 }
 
-Confusion TableOfReal_to_Confusion (TableOfReal me) {
+autoConfusion TableOfReal_to_Confusion (TableOfReal me) {
 	try {
 		if (! TableOfReal_checkPositive (me)) {
 			Melder_throw (U"Elements may not be less than zero.");
 		}
 		autoConfusion thee = Thing_new (Confusion);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Confusion.");
 	}
 }
 
-Confusion Confusion_group (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
+autoConfusion Confusion_group (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
 	try {
 		autoConfusion stim = Confusion_groupStimuli (me, labels, newLabel, newpos);
-		autoConfusion thee = Confusion_groupResponses (stim.peek(), labels, newLabel, newpos);
-		return thee.transfer();
+		autoConfusion thee = Confusion_groupResponses (stim.get(), labels, newLabel, newpos);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not grouped.");
 	}
 }
 
-Confusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
+autoConfusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
 	try {
 		long ncondense = Melder_countTokens (labels);
 		autoNUMvector<long> irow (1, my numberOfRows);
@@ -510,7 +529,7 @@ Confusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char
 		autoConfusion thee = Confusion_create (newnstim, my numberOfColumns);
 		NUMstrings_copyElements (my columnLabels, thy columnLabels, 1, my numberOfColumns);
 
-		TableOfReal_setRowLabel (thee.peek(), newpos, newLabel);
+		TableOfReal_setRowLabel (thee.get(), newpos, newLabel);
 		long inewrow = 1;
 		for (long i = 1; i <= my numberOfRows; i++) {
 			long rowpos = newpos;
@@ -520,19 +539,19 @@ Confusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char
 				}
 				rowpos = inewrow;
 				inewrow++;
-				TableOfReal_setRowLabel (thee.peek(), rowpos, my rowLabels[i]);
+				TableOfReal_setRowLabel (thee.get(), rowpos, my rowLabels[i]);
 			}
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				thy data[rowpos][j] += my data[i][j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": stimuli not grouped.");
 	}
 }
 
-Confusion Confusion_groupResponses (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
+autoConfusion Confusion_groupResponses (Confusion me, const char32 *labels, const char32 *newLabel, long newpos) {
 	try {
 		long ncondense = Melder_countTokens (labels);
 		autoNUMvector<long> icol (1, my numberOfColumns);
@@ -570,7 +589,7 @@ Confusion Confusion_groupResponses (Confusion me, const char32 *labels, const ch
 		}
 		autoConfusion thee = Confusion_create (my numberOfRows, newnresp);
 		NUMstrings_copyElements (my rowLabels, thy rowLabels, 1, my numberOfRows);
-		TableOfReal_setColumnLabel (thee.peek(), newpos, newLabel);
+		TableOfReal_setColumnLabel (thee.get(), newpos, newLabel);
 		long inewcol = 1;
 		for (long i = 1; i <= my numberOfColumns; i++) {
 			long colpos = newpos;
@@ -580,25 +599,25 @@ Confusion Confusion_groupResponses (Confusion me, const char32 *labels, const ch
 				}
 				colpos = inewcol;
 				inewcol++;
-				TableOfReal_setColumnLabel (thee.peek(), colpos, my columnLabels[i]);
+				TableOfReal_setColumnLabel (thee.get(), colpos, my columnLabels[i]);
 			}
 			for (long j = 1; j <= my numberOfRows; j++) {
 				thy data[j][colpos] += my data[j][i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": responses not grouped.");
 	}
 }
 
-TableOfReal Confusion_to_TableOfReal_marginals (Confusion me) {
+autoTableOfReal Confusion_to_TableOfReal_marginals (Confusion me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows + 1, my numberOfColumns + 1);
 
-		double total = 0;
+		double total = 0.0;
 		for (long i = 1; i <= my numberOfRows; i++) {
-			double rowsum = 0;
+			double rowsum = 0.0;
 			for (long j = 1; j <= my numberOfColumns; j++) {
 				thy data[i][j] = my data[i][j];
 				rowsum += my data[i][j];
@@ -619,7 +638,7 @@ TableOfReal Confusion_to_TableOfReal_marginals (Confusion me) {
 
 		NUMstrings_copyElements (my rowLabels, thy rowLabels, 1, my numberOfRows);
 		NUMstrings_copyElements (my columnLabels, thy columnLabels, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": table with marginals not created.");
 	}
@@ -627,10 +646,10 @@ TableOfReal Confusion_to_TableOfReal_marginals (Confusion me) {
 
 void Confusion_drawAsNumbers (Confusion me, Graphics g, int marginals, int iformat, int precision) {
 	TableOfReal thee = me;
-	autoTableOfReal athee = 0;
+	autoTableOfReal athee;
 	if (marginals) {
-		athee.reset (Confusion_to_TableOfReal_marginals (me));
-		thee = athee.peek();
+		athee = Confusion_to_TableOfReal_marginals (me);
+		thee = athee.get();
 	}
 	TableOfReal_drawAsNumbers (thee, g, 1, thy numberOfRows, iformat, precision);
 }
diff --git a/dwtools/Confusion.h b/dwtools/Confusion.h
index 9d0d8d9..6fbb973 100644
--- a/dwtools/Confusion.h
+++ b/dwtools/Confusion.h
@@ -2,21 +2,20 @@
 #define _Confusion_h_
 /* Confusion.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TableOfReal.h"
@@ -33,13 +32,13 @@ Thing_define (Confusion, TableOfReal) {
 	A Confusion matrix has both row and column labels.
 */
 
-Confusion Confusion_create (long numberOfStimuli, long numberOfResponses);
+autoConfusion Confusion_create (long numberOfStimuli, long numberOfResponses);
 
-Confusion Confusion_createSimple (const char32 *labels);
+autoConfusion Confusion_createSimple (const char32 *labels);
 
-Confusion Confusion_createFromStringses (Strings stimulusLabels, Strings responseLabels);
+autoConfusion Confusion_createFromStringses (Strings stimulusLabels, Strings responseLabels);
 
-Confusion Categories_to_Confusion (Categories me, Categories thee);
+autoConfusion Categories_to_Confusion (Categories me, Categories thee);
 
 void Confusion_increase (Confusion me, const char32 *stimulus, const char32 *response);
 /* data['stim']['resp'] += 1; */
@@ -79,24 +78,25 @@ void Confusion_Matrix_draw (Confusion me, Matrix thee, Graphics g,
  *	}
  */
 
-Matrix Confusion_difference (Confusion me, Confusion thee);
+autoMatrix Confusion_difference (Confusion me, Confusion thee);
 /* return matrix with the difference between the two confusion matrices */
 
 long Confusion_getNumberOfEntries (Confusion me);
 
-Confusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
-Confusion Confusion_groupResponses (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
-Confusion Confusion_group (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
+autoConfusion Confusion_groupStimuli (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
 
-Confusion Confusion_condense (Confusion me, const char32 *search, const char32 *replace,
-	long maximumNumberOfReplaces, int use_regexp);
-/*
+autoConfusion Confusion_groupResponses (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
+
+autoConfusion Confusion_group (Confusion me, const char32 *labels, const char32 *newLabel, long newpos);
+
+autoConfusion Confusion_condense (Confusion me, const char32 *search, const char32 *replace, long maximumNumberOfReplaces, int use_regexp);
+/* 
 	Group row and column labels according to search and replace.
 */
 
-Confusion TableOfReal_to_Confusion (TableOfReal me);
+autoConfusion TableOfReal_to_Confusion (TableOfReal me);
 
-TableOfReal Confusion_to_TableOfReal_marginals (Confusion me);
+autoTableOfReal Confusion_to_TableOfReal_marginals (Confusion me);
 /*
 	Create a table with one extra row and one extra column with marginals,
 	i.e., column and row sums.
diff --git a/dwtools/ContingencyTable.cpp b/dwtools/ContingencyTable.cpp
index 6e521da..6dd048e 100644
--- a/dwtools/ContingencyTable.cpp
+++ b/dwtools/ContingencyTable.cpp
@@ -1,20 +1,19 @@
 /* ContingencyTable.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ContingencyTable.h"
@@ -26,9 +25,9 @@ Thing_implement (ContingencyTable, TableOfReal, 0);
 #define TINY 1e-30
 
 void structContingencyTable :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 
-	long ndf;
+	double ndf;
 	double h, hx, hy, hygx, hxgy, uygx, uxgy, uxy, chisq;
 	ContingencyTable_entropies (this, &h, &hx, &hy, &hygx, &hxgy, &uygx, &uxgy, &uxy);
 	ContingencyTable_chisq (this, &chisq, &ndf);
@@ -49,32 +48,31 @@ void structContingencyTable :: v_info () {
 	MelderInfo_writeLine (U"  Probability: ", ContingencyTable_chisqProbability (this));
 }
 
-ContingencyTable ContingencyTable_create (long numberOfRows, long numberOfColumns) {
+autoContingencyTable ContingencyTable_create (long numberOfRows, long numberOfColumns) {
 	try {
 		autoContingencyTable me = Thing_new (ContingencyTable);
-		TableOfReal_init (me.peek(), numberOfRows, numberOfColumns);
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfRows, numberOfColumns);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ContingencyTable not created.");
 	}
 }
 
 double ContingencyTable_chisqProbability (ContingencyTable me) {
-	double chisq;
-	long df;
+	double chisq, df;
 	ContingencyTable_chisq (me, &chisq, &df);
-	if (chisq == 0 && df == 0) {
-		return 0;
+	if (chisq == 0.0 && df == 0.0) {
+		return 0.0;
 	}
 	return NUMchiSquareQ (chisq, df);
 }
 
 double ContingencyTable_cramersStatistic (ContingencyTable me) {
-	double chisq, sum = 0;
-	long df, nr = my numberOfRows, nc = my numberOfColumns, nmin = nr;
+	double chisq, sum = 0.0, df;
+	long nr = my numberOfRows, nc = my numberOfColumns, nmin = nr;
 
 	if (nr == 1 || nc == 1) {
-		return 0;
+		return 0.0;
 	}
 
 	for (long i = 1; i <= nr; i++) {
@@ -89,15 +87,15 @@ double ContingencyTable_cramersStatistic (ContingencyTable me) {
 	nmin--;
 
 	ContingencyTable_chisq (me, &chisq, &df);
-	if (chisq == 0 && df == 0) {
-		return 0;
+	if (chisq == 0.0 && df == 0.0) {
+		return 0.0;
 	}
 	return sqrt (chisq / (sum * nmin));
 }
 
 double ContingencyTable_contingencyCoefficient (ContingencyTable me) {
-	double chisq, sum = 0;
-	long df, nr = my numberOfRows, nc = my numberOfColumns;
+	double chisq, sum = 0.0, df;
+	long nr = my numberOfRows, nc = my numberOfColumns;
 
 	for (long i = 1; i <= nr; i++) {
 		for (long j = 1; j <= nc; j++) {
@@ -106,25 +104,23 @@ double ContingencyTable_contingencyCoefficient (ContingencyTable me) {
 	}
 
 	ContingencyTable_chisq (me, &chisq, &df);
-	if (chisq == 0 && df == 0) {
-		return 0;
+	if (chisq == 0.0 && df == 0.0) {
+		return 0.0;
 	}
 	return sqrt (chisq / (chisq + sum));
 }
 
-void ContingencyTable_chisq (ContingencyTable me, double *chisq, long *df) {
+void ContingencyTable_chisq (ContingencyTable me, double *chisq, double *df) {
 	long nr = my numberOfRows, nc = my numberOfColumns;
 
-	*chisq = 0; *df = 0;
+	*chisq = 0.0; *df = 0.0;
 
 	autoNUMvector<double> rowsum (1, nr);
 	autoNUMvector<double> colsum (1, nc);
 
-	/*
-		row and column marginals
-	*/
+	// row and column marginals
 
-	double sum = 0;
+	double sum = 0.0;
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			rowsum[i] += my data[i][j];
@@ -134,23 +130,23 @@ void ContingencyTable_chisq (ContingencyTable me, double *chisq, long *df) {
 	}
 
 	for (long i = 1; i <= my numberOfRows; i++) {
-		if (rowsum[i] == 0) {
+		if (rowsum[i] == 0.0) {
 			--nr;
 		}
 	}
 	for (long j = 1; j <= my numberOfColumns; j++) {
-		if (colsum[j] == 0) {
+		if (colsum[j] == 0.0) {
 			--nc;
 		}
 	}
 
-	*df = (nr - 1) * (nc - 1);
+	*df = (nr - 1.0) * (nc - 1.0);
 	for (long i = 1; i <= my numberOfRows; i++) {
-		if (rowsum[i] == 0) {
+		if (rowsum[i] == 0.0) {
 			continue;
 		}
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (colsum[j] == 0) {
+			if (colsum[j] == 0.0) {
 				continue;
 			}
 			double expt = rowsum[i] * colsum[j] / sum;
@@ -160,16 +156,13 @@ void ContingencyTable_chisq (ContingencyTable me, double *chisq, long *df) {
 	}
 }
 
-void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, double *hy,
-                                 double *hygx, double *hxgy, double *uygx, double *uxgy, double *uxy) {
+void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, double *hy, double *hygx, double *hxgy, double *uygx, double *uxgy, double *uxy) {
 	*h = *hx = *hy = *hxgy = *hygx = *uygx = *uxgy = *uxy = 0;
 
 	autoNUMvector<double> rowsum (1, my numberOfRows);
 	autoNUMvector<double> colsum (1, my numberOfColumns);
 
-	/*
-		row and column totals
-	*/
+	// row and column totals
 
 	double sum = 0.0;
 	for (long i = 1; i <= my numberOfRows; i++) {
@@ -180,44 +173,36 @@ void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, dou
 		sum += rowsum[i];
 	}
 
-	/*
-		Entropy of x distribution
-	*/
+	// Entropy of x distribution
 
 	for (long j = 1; j <= my numberOfColumns; j++) {
-		if (colsum[j] > 0) {
+		if (colsum[j] > 0.0) {
 			double p = colsum[j] / sum;
 			*hx -= p * NUMlog2 (p);
 		}
 	}
 
-	/*
-		Entropy of y distribution
-	*/
+	// Entropy of y distribution
 
 	for (long i = 1; i <= my numberOfRows; i++) {
-		if (rowsum[i] > 0) {
+		if (rowsum[i] > 0.0) {
 			double p = rowsum[i] / sum;
 			*hy -= p * NUMlog2 (p);
 		}
 	}
 
-	/*
-		Total entropy
-	*/
+	// Total entropy
 
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (my data[i][j] > 0) {
+			if (my data[i][j] > 0.0) {
 				double p = my data[i][j] / sum;
 				*h -= p * NUMlog2 (p);
 			}
 		}
 	}
 
-	/*
-		Conditional entropies
-	*/
+	// Conditional entropies
 
 	*hygx = *h - *hx;
 	*hxgy = *h - *hy;
@@ -227,23 +212,22 @@ void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, dou
 }
 
 
-ContingencyTable Confusion_to_ContingencyTable (Confusion me) {
+autoContingencyTable Confusion_to_ContingencyTable (Confusion me) {
 	try {
 		autoContingencyTable thee = Thing_new (ContingencyTable);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ContingencyTable.");
 	}
 }
 
-ContingencyTable TableOfReal_to_ContingencyTable (I) {
-	iam (TableOfReal);
+autoContingencyTable TableOfReal_to_ContingencyTable (TableOfReal me) {
 	try {
 		TableOfReal_checkPositive (me);
 		autoContingencyTable thee = Thing_new (ContingencyTable);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ContingencyTable.");
 	}
diff --git a/dwtools/ContingencyTable.h b/dwtools/ContingencyTable.h
index ee52671..40c445f 100644
--- a/dwtools/ContingencyTable.h
+++ b/dwtools/ContingencyTable.h
@@ -1,5 +1,22 @@
 #ifndef _ContingencyTable_h_
 #define _ContingencyTable_h_
+/* ContingencyTable.h
+ *
+ * Copyright (C) 1993-2011, 2015 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 #include "TableOfReal.h"
 #include "Confusion.h"
@@ -11,15 +28,20 @@ Thing_define (ContingencyTable, TableOfReal) {
 
 // entries must be nonnegative numbers
 
-ContingencyTable ContingencyTable_create (long numberOfRows, long numberOfColumns);
+autoContingencyTable ContingencyTable_create (long numberOfRows, long numberOfColumns);
 
 double ContingencyTable_chisqProbability (ContingencyTable me);
+
 double ContingencyTable_cramersStatistic (ContingencyTable me);
+
 double ContingencyTable_contingencyCoefficient (ContingencyTable me);
-void ContingencyTable_chisq (ContingencyTable me, double *chisq, long *df);
-void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, double *hy,
-	double *hygx, double *hxgy, double *uygx, double *uxgy, double *uxy);
-ContingencyTable Confusion_to_ContingencyTable (Confusion me);
-ContingencyTable TableOfReal_to_ContingencyTable (I);
+
+void ContingencyTable_chisq (ContingencyTable me, double *chisq, double *df);
+
+void ContingencyTable_entropies (ContingencyTable me, double *h, double *hx, double *hy, double *hygx, double *hxgy, double *uygx, double *uxgy, double *uxy);
+
+autoContingencyTable Confusion_to_ContingencyTable (Confusion me);
+
+autoContingencyTable TableOfReal_to_ContingencyTable (TableOfReal me);
 
 #endif // _ContingencyTable_h_
diff --git a/dwtools/DTW.cpp b/dwtools/DTW.cpp
index 5d21d4d..d6c4fa6 100644
--- a/dwtools/DTW.cpp
+++ b/dwtools/DTW.cpp
@@ -1,20 +1,19 @@
 /* DTW.cpp
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -64,10 +63,10 @@
 
 Thing_implement (DTW, Matrix, 2);
 
-#define DTW_BIG 1e38
+#define DTW_BIG 1e308
 
 void structDTW :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Domain prototype:", ymin, U" to ", ymax, U" (s).");   // ppgb: Wat is een domain prototype?
 	MelderInfo_writeLine (U"Domain candidate:", xmin, U" to ", xmax, U" (s).");   // ppgb: Wat is een domain candidate?
 	MelderInfo_writeLine (U"Number of frames prototype: ", ny);
@@ -86,10 +85,9 @@ void structDTW :: v_info () {
 static void DTW_drawWarpX_raw (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double tx, int garnish, int inset);
 static void DTW_paintDistances_raw (DTW me, Graphics g, double xmin, double xmax, double ymin,
                                     double ymax, double minimum, double maximum, int garnish, int inset);
-static void DTW_drawPath_raw (DTW me, Graphics g, double xmin, double xmax, double ymin,
-                              double ymax, int garnish, int inset);
+static void DTW_drawPath_raw (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish, int inset);
 static double _DTW_and_Sounds_getPartY (Graphics g, double dtw_part_x);
-static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slope, Matrix *cummulativeDists);
+static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slope, autoMatrix *cummulativeDists);
 /*
 	Two 'slope lines, lh and ll, start in the lower left corner, the upper/lower has the maximum/minimum allowed slope.
 	Two other lines, ru and rl, end in the upper-right corner. The upper/lower line have minimum/maximum slope.
@@ -102,10 +100,10 @@ static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slop
 /*
    The actual path will be interpolated as follows:
    The distance matrix has cells of dimensions dx by dy.
-   The optimal path connects these cells with one another in the following ways:
+   The optimal path connects these cells with one another in the following way:
 
    In a diagonal ''path'' segment, i.e. when cells have no side in common,
-   the interplated path runs from the lowerleft corner to the upperright corner.
+   the interpolated path runs from the lowerleft corner to the upperright corner.
    If a path segment is horizontal or vertical the path also runs from lowerleft to upperright.
    It is only when a horizontal and a vertical segment have a cell in common that we have to make
    some adjustments to the path in the common cell.
@@ -134,46 +132,20 @@ static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slop
 
 /* DTW_getXTime (DTW me, (DTW_getYTime (DTW me, double tx)) == tx */
 double DTW_getYTimeFromXTime (DTW me, double tx) {
-	DTW_Path_Query thee = & my pathQuery;
-
+	// Catch cases where tier would give constant extrapolation
 	if (tx < my xmin) {
 		return my ymin - (my xmin - tx);
 	}
 	if (tx > my xmax) {
 		return my ymax + (tx - my xmax);
 	}
+	DTW_Path_Query thee = & my pathQuery;
+	return RealTier_getValueAtTime(thy yfromx.get(), tx);
 
-	if (! NUMfpp) {
-		NUMmachar ();
-	}
-	double eps = 3 * NUMfpp -> eps;
-
-	/* Find in which column is tx */
-
-	long ib, ie;
-	long ix = (long) floor ( (tx - my x1) / my dx + 1.5);
-	if (ix < 1) {
-		ib = 1; ie = 2;
-	} else if (ix > my nx) {
-		ib = thy nxy - 1; ie = thy nxy;
-	} else {
-		ib = thy xindex[ix].ibegin; ie = thy xindex[ix].iend;
-	}
-	if (ie - ib > 1) {
-		long it = ib + 1;
-		while (tx - thy xytimes[it].x > eps) {
-			it++;
-		}
-		ie = it; ib = it - 1;
-	}
-	double a = (thy xytimes[ib].y - thy xytimes[ie].y) / (thy xytimes[ib].x - thy xytimes[ie].x);
-	double b = thy xytimes[ib].y - a * thy xytimes[ib].x;
-	return a * tx + b;
 }
 
 double DTW_getXTimeFromYTime (DTW me, double ty) {
-	DTW_Path_Query thee = & my pathQuery;
-
+	// Catch cases where tier would give constant extrapolation
 	if (ty < my ymin) {
 		return my ymin - (my ymin - ty);
 	}
@@ -181,32 +153,8 @@ double DTW_getXTimeFromYTime (DTW me, double ty) {
 		return my ymax + (ty - my ymax);
 	}
 
-	if (! NUMfpp) {
-		NUMmachar ();
-	}
-	double eps = 3 * NUMfpp -> eps;
-
-	/* Find in which row is ty */
-
-	long ib, ie;
-	long iy = (long) floor ( (ty - my y1) / my dy + 1.5);
-	if (iy < 1) {
-		ib = 1; ie = 2;
-	} else if (iy > my ny) {
-		ib = thy nxy - 1; ie = thy nxy;
-	} else {
-		ib = thy yindex[iy].ibegin; ie = thy yindex[iy].iend;
-	}
-	if (ie - ib > 1) {
-		long it = ib + 1;
-		while (ty - thy xytimes[it].y > eps) {
-			it++;
-		}
-		ie = it; ib = it - 1;
-	}
-	double a = (thy xytimes[ib].y - thy xytimes[ie].y) / (thy xytimes[ib].x - thy xytimes[ie].x);
-	double b = thy xytimes[ib].y - a * thy xytimes[ib].x;
-	return (ty - b) / a;
+	DTW_Path_Query thee = & my pathQuery;
+	return RealTier_getValueAtTime(thy xfromy.get(), ty);
 }
 
 void DTW_Path_Query_init (DTW_Path_Query me, long ny, long nx) {
@@ -214,56 +162,128 @@ void DTW_Path_Query_init (DTW_Path_Query me, long ny, long nx) {
 	my ny = ny;
 	my nx = nx;
 	my nxy = 2 * (ny > nx ? ny : nx) + 2; // maximum number of points
-	my xytimes = NUMvector<structDTW_Path_xytime> (1, my nxy);
-	my yindex = NUMvector<structDTW_Path_Index> (1, my ny);
-	my xindex = NUMvector<structDTW_Path_Index> (1, my nx);
+	my xfromy = Thing_new (RealTier);
+	my yfromx = Thing_new (RealTier);
 }
 
-static void DTW_Path_makeIndex (DTW me, int xory) {
-	DTW_Path_Query thee = & my pathQuery;
-	DTW_Path_Index index;
-	double x1, dx;
-	long nx;
-
-	if (! NUMfpp) {
-		NUMmachar ();
-	}
-	double eps = 3 * NUMfpp -> eps;
-
-	if (xory == DTW_X) {
-		index = thy xindex;
-		nx = my nx;
-		x1 = my x1;
-		dx = my dx;
-	} else {
-		index = thy yindex;
-		nx = my ny;
-		x1 = my y1;
-		dx = my dy;
-	}
-	double xy_x2 = xory == DTW_X ? thy xytimes[3].x : thy xytimes[3].y;
-	long i = 3;
-	for (long j = 1; j <= nx; j++) {
-		double xlow = x1 + (j - 1 - 0.5) * dx;
-		double xhigh = xlow + dx;
-
-		if (xlow - xy_x2 > -eps && i < thy nxy) { // i.e. xlow >= xy_x2
-			i++;
-			xy_x2 = xory == DTW_X ? thy xytimes[i].x : thy xytimes[i].y;
+/* Recode the path from a chain of cells to a piecewise linear path. */
+void DTW_Path_recode (DTW me) {
+	try {
+		DTW_Path_Query thee = & my pathQuery;
+		long nxy;		// current number of elements in recoded path
+		long nsc_x = 1;	// current number of successive horizontal cells in the cells chain
+		long nsc_y = 1;	// current number of successive vertical cells in the cells chain
+		long nd = 0;	// current number of successive diagonal cells in the cells chain
+		bool yDirection = false;	// previous segment in the original path was vertical
+		bool xDirection = false;	// previous segment in the original path was horizontal
+		long ixp = 0, iyp = 0; // previous cell
+		struct structPoint {
+			double x,y;
+		};
+
+		/* 1. Starting point always at origin */
+		long nxymax = thy nx + thy ny + 2;
+		autoNUMvector<struct structPoint> xytimes (1, nxymax);
+		xytimes[1].x = my xmin;
+		xytimes[1].y = my ymin;
+		/* 2. next point lower left of first cell */
+		nsc_x = my path[1].x;
+		ixp = nsc_x - 1;
+		xytimes[2].x = my x1 + (nsc_x - 1 - 0.5) * my dx;
+		nsc_y = my path[1].y;
+		iyp = nsc_y - 1;
+		xytimes[2].y = my y1 + (nsc_y - 1 - 0.5) * my dy;
+		/* 3. follow all cells. implicit: my x1 - 0.5 * my dx > my xmin && my y1 - 0.5 * my dy > my ymin */
+		nxy = 2;
+		for (long j = 1; j <= my pathLength; j++) {
+			long index; // where are we in the new path?
+			long ix = my path[j].x, iy = my path[j].y;
+			double xright = my x1 + (ix - 1 + 0.5) * my dx;
+			double x, y, f, ytop = my y1 + (iy - 1 + 0.5) * my dy;
+
+			if (iy == iyp) { // horizontal path?
+				xDirection = true;
+				if (yDirection) { // we came from vertical direction?
+					// We came from a vertical direction so this is the second horizontal cell in a row.
+					// The statement after this "if" updates nsc_x to 2.
+					nsc_x = 1; yDirection = false;
+				}
+				nsc_x++;
+
+				if (nsc_y > 1 || nd > 1) {
+					// Previous segment was diagonal or vertical: modify intersection
+					// The vh intersection (x,y) = (nsc_x*dx, dy) * (nsc_y-1)/(nsc_x*nsc_y-1)
+					// A diagonal segment has nsc_y = 1.
+					f = (nsc_y - 1.0) / (nsc_x * nsc_y - 1);
+					x = xright - nsc_x * my dx + nsc_x * my dx * f;
+					y = ytop - my dy + my dy * f;
+					index = nxy - 1;
+					if (nsc_x == 2) {
+						index = nxy;
+						nxy++;
+					}
+					xytimes[index].x = x;
+					xytimes[index].y = y;
+				}
+				nd = 0;
+			} else if (ix == ixp) { // vertical
+				yDirection = true;
+				if (xDirection) {
+					nsc_y = 1; xDirection = false;
+				}
+				nsc_y++;
+
+				if (nsc_x > 1 || nd > 1) {
+					// The hv intersection (x,y) = (dx, dy*nsc_y ) * (nsc_x-1)/(nsc_x*nsc_y-1)
+					f = (nsc_x - 1.0) / (nsc_x * nsc_y - 1);
+					x = xright - my dx + my dx * f;
+					y = ytop - nsc_y * my dy + nsc_y * my dy * f;
+					index = nxy - 1;
+					if (nsc_y == 2) {
+						index = nxy;
+						nxy++;
+					}
+					xytimes[index].x = x;
+					xytimes[index].y = y;
+				}
+				nd = 0;
+			} else if (ix == (ixp + 1) && iy == (iyp + 1)) { // diagonal
+				nd++;
+				if (nd == 1) {
+					nxy++;
+				}
+				nsc_x = nsc_y = 1;
+			} else {
+				Melder_throw (U"The path goes back in time.");
+			}
+			// update
+			xytimes[nxy].x = xright;
+			xytimes[nxy].y = ytop;
+			ixp = ix; iyp = iy;
 		}
 
-		index[j].ibegin = i - 1;
-
-		while (xhigh - xy_x2 > eps && i < thy nxy) { // i.e. xhigh > xy_x2
-			i++;
-			xy_x2 = xory == DTW_X ? thy xytimes[i].x : thy xytimes[i].y;
+		if (my xmax > xytimes[nxy].x || my ymax > xytimes[nxy].y) {
+			nxy++;
+			xytimes[nxy].x = my xmax;
+			xytimes[nxy].y = my ymax;
 		}
-
-		index[j].iend = i;
+		Melder_assert (nxy <= 2 * (my ny > my nx ? my ny : my nx) + 2);
+		
+		thy nxy = nxy;
+		thy yfromx = RealTier_create (my xmin, my xmax);
+		thy xfromy = RealTier_create (my ymin, my ymax);
+		for (long i = 1; i <= nxy; i++) {
+			RealTier_addPoint (thy yfromx.get(), xytimes[i].x, xytimes[i].y);
+			RealTier_addPoint (thy xfromy.get(), xytimes[i].y, xytimes[i].x);
+		}
+		//DTW_Path_makeIndex (me, DTW_X);
+		//DTW_Path_makeIndex (me, DTW_Y);
+	} catch (MelderError) {
+		Melder_throw (me, U": not recoded.");
 	}
 }
 
-/* Recode the path from a chain of cells to a piecewise linear path. */
+#if 0
 void DTW_Path_recode (DTW me) {
 	DTW_Path_Query thee = & my pathQuery;
 	long nxy;		// current number of elements in recoded path
@@ -368,6 +388,7 @@ void DTW_Path_recode (DTW me) {
 	DTW_Path_makeIndex (me, DTW_X);
 	DTW_Path_makeIndex (me, DTW_Y);
 }
+#endif
 
 void DTW_pathRemoveRedundantNodes (DTW me) {
 	long i = 1, skip = 0;
@@ -397,15 +418,14 @@ void DTW_pathRemoveRedundantNodes (DTW me) {
 
 /* Prototype must be on y-axis and test on x-axis */
 
-DTW DTW_create (double tminp, double tmaxp, long ntp, double dtp, double t1p,
-                double tminc, double tmaxc, long ntc, double dtc, double t1c) {
+autoDTW DTW_create (double tminp, double tmaxp, long ntp, double dtp, double t1p, double tminc, double tmaxc, long ntc, double dtc, double t1c) {
 	try {
 		autoDTW me = Thing_new (DTW);
-		Matrix_init (me.peek(), tminc, tmaxc, ntc, dtc, t1c, tminp, tmaxp, ntp, dtp, t1p);
+		Matrix_init (me.get(), tminc, tmaxc, ntc, dtc, t1c, tminp, tmaxp, ntp, dtp, t1p);
 		my path = NUMvector<structDTW_Path> (1, ntc + ntp - 1);
 		DTW_Path_Query_init (& my pathQuery, ntp, ntc);
 		my wx = 1; my wy = 1; my wd = 2;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created.");
 	}
@@ -415,7 +435,7 @@ void DTW_setWeights (DTW me, double wx, double wy, double wd) {
 	my wx = wx; my wy = wy; my wd = wd;
 }
 
-DTW DTW_swapAxes (DTW me) {
+autoDTW DTW_swapAxes (DTW me) {
 	try {
 		autoDTW thee = DTW_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 
@@ -429,7 +449,7 @@ DTW DTW_swapAxes (DTW me) {
 			thy path[i].x = my path[i].y;
 			thy path[i].y = my path[i].x;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": axes not swapped.");
 	}
@@ -612,8 +632,8 @@ static void DTW_paintDistances_raw (DTW me, Graphics g, double xmin, double xmax
 		Graphics_unsetInner (g);
 	}
 	if (garnish) {
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
@@ -622,6 +642,14 @@ void DTW_paintDistances (DTW me, Graphics g, double xmin, double xmax, double ym
 	DTW_paintDistances_raw (me, g, xmin, xmax, ymin, ymax, minimum, maximum, garnish, 1);
 }
 
+static double RealTier_getXAtIndex (RealTier me, long point) {
+	double x = NUMundefined;
+	if (point > 0 && point <= my points.size) {
+		x = my points.at [point] -> number;
+	}
+	return x;
+}
+
 static void DTW_drawPath_raw (DTW me, Graphics g, double xmin, double xmax, double ymin,
                               double ymax, int garnish, int inset) {
 	DTW_Path_Query thee = & my pathQuery;
@@ -637,14 +665,17 @@ static void DTW_drawPath_raw (DTW me, Graphics g, double xmin, double xmax, doub
 		Graphics_setInner (g);
 	}
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
-
-	for (long i = 1; i < thy nxy; i++) {
-		double x1, y1, x2, y2;
-		if (NUMclipLineWithinRectangle (thy xytimes[i].x, thy xytimes[i].y,
-            thy xytimes[i + 1].x, thy xytimes[i + 1].y,
-            xmin, ymin, xmax, ymax, &x1, &y1, &x2, &y2)) {
-			Graphics_line (g, x1, y1, x2, y2);
+	double x1 = RealTier_getXAtIndex (thy yfromx.get(), 1);
+	double y1 = RealTier_getValueAtIndex (thy yfromx.get(), 1);
+	for (long i = 2; i <= thy yfromx -> points.size; i++) {
+		double x2 = RealTier_getXAtIndex (thy yfromx.get(), i);
+		double y2 = RealTier_getValueAtIndex (thy yfromx.get(), i);
+		double xc1, yc1, xc2, yc2;
+		if (NUMclipLineWithinRectangle (x1, y1,x2, y2, xmin, ymin, xmax, ymax, &xc1, &yc1, &xc2, &yc2)) {
+			Graphics_line (g, xc1, yc1, xc2, yc2);
 		}
+		x1 = x2; 
+		y1 = y2;
 	}
 
 	if (inset) {
@@ -652,18 +683,18 @@ static void DTW_drawPath_raw (DTW me, Graphics g, double xmin, double xmax, doub
 	}
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-void DTW_drawPath (DTW me, Graphics g, double xmin, double xmax, double ymin,
-                   double ymax, int garnish) {
+void DTW_drawPath (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	DTW_drawPath_raw (me, g, xmin, xmax, ymin, ymax, garnish, 1);
 }
 
-static void DTW_drawWarpX_raw (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double tx, int garnish, int inset) {
-	double ty = DTW_getYTimeFromXTime (me, tx);
+static void DTW_drawWarp_raw (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double t, int garnish, bool inset, bool warpX) {
+	double tx = warpX ? t : DTW_getXTimeFromYTime (me, t);
+	double ty = warpX ? DTW_getYTimeFromXTime (me, t): t;
 	int lineType = Graphics_inqLineType (g);
 
 	if (xmin >= xmax) {
@@ -678,7 +709,6 @@ static void DTW_drawWarpX_raw (DTW me, Graphics g, double xmin, double xmax, dou
 	}
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 
-	ty = DTW_getYTimeFromXTime (me, tx);
 	Graphics_setLineType (g, Graphics_DOTTED);
 	if (ty <= ymax) {
 		Graphics_line (g, tx, ymin, tx, ty);
@@ -694,15 +724,19 @@ static void DTW_drawWarpX_raw (DTW me, Graphics g, double xmin, double xmax, dou
 	}
 
 	if (garnish) {
-		Graphics_markBottom (g, tx, 1, 1, 0, (char32 *)  NULL);
+		Graphics_markBottom (g, tx, true, true, false, nullptr);
 		if (ty <= ymax) {
-			Graphics_markLeft (g, ty, 1, 1, 0, (char32 *)  NULL);
+			Graphics_markLeft (g, ty, true, true, false, nullptr);
 		}
 	}
 }
 
 void DTW_drawWarpX (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double tx, int garnish) {
-	DTW_drawWarpX_raw (me, g, xmin, xmax, ymin, ymax, tx, garnish, 1);
+	DTW_drawWarp_raw (me, g, xmin, xmax, ymin, ymax, tx, garnish, true, true);
+}
+
+void DTW_drawWarpY (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double ty, int garnish) {
+	DTW_drawWarp_raw (me, g, xmin, xmax, ymin, ymax, ty, garnish, true, false);
 }
 
 static void DTW_and_Sounds_checkDomains (DTW me, Sound *y, Sound *x, double *xmin, double *xmax, double *ymin, double *ymax) {
@@ -794,11 +828,11 @@ void DTW_and_Sounds_draw (DTW me, Sound y, Sound x, Graphics g, double xmin, dou
 	Graphics_unsetInner (g);
 
 	if (garnish) {
-		Graphics_markLeft (g, ymin, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ymax, 1, 1, 0, NULL);
+		Graphics_markLeft (g, ymin, true, true, false, nullptr);
+		Graphics_markLeft (g, ymax, true, true, false, nullptr);
 
-		Graphics_markBottom (g, xmin, 1, 1, 0, NULL);
-		Graphics_markBottom (g, xmax, 1, 1, 0, NULL);
+		Graphics_markBottom (g, xmin, true, true, false, nullptr);
+		Graphics_markBottom (g, xmax, true, true, false, nullptr);
 	}
 }
 
@@ -828,16 +862,16 @@ void DTW_and_Sounds_drawWarpX (DTW me, Sound yy, Sound xx, Graphics g, double xm
 	Graphics_unsetInner (g);
 
 	if (garnish) {
-		Graphics_markBottom (g, tx, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ty, 1, 1, 0, NULL);
+		Graphics_markBottom (g, tx, true, true, false, nullptr);
+		Graphics_markLeft (g, ty, true, true, false, nullptr);
 	}
 }
 
-Matrix DTW_to_Matrix_distances (DTW me) {
+autoMatrix DTW_to_Matrix_distances (DTW me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": distances not converted to Matrix.");
 	}
@@ -889,19 +923,17 @@ void DTW_drawDistancesAlongPath (DTW me, Graphics g, double xmin, double xmax, d
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, 1, U"distance");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textLeft (g, true, U"distance");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
 /*
 	metric = 1...n (sum (a_i^n))^(1/n)
 */
-DTW Matrices_to_DTW (I, thou, int matchStart, int matchEnd, int slope, double metric) {
+autoDTW Matrices_to_DTW (Matrix me, Matrix thee, int matchStart, int matchEnd, int slope, double metric) {
 	try {
-		iam (Matrix); thouart (Matrix);
-
 		if (thy ny != my ny) {
 			Melder_throw (U"Columns must have the same dimensions.");
 		}
@@ -935,14 +967,14 @@ DTW Matrices_to_DTW (I, thou, int matchStart, int matchEnd, int slope, double me
 				Melder_progress (0.999 * i / my nx, U"Calculate distances: column ", i, U" from ", my nx, U".");
 			}
 		}
-		DTW_findPath (him.peek(), matchStart, matchEnd, slope);
-		return him.transfer();
+		DTW_findPath (him.get(), matchStart, matchEnd, slope);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created from matrices.");
 	}
 }
 
-DTW Spectrograms_to_DTW (Spectrogram me, Spectrogram thee, int matchStart, int matchEnd, int slope, double metric) {
+autoDTW Spectrograms_to_DTW (Spectrogram me, Spectrogram thee, int matchStart, int matchEnd, int slope, double metric) {
 	try {
 		if (my xmin != thy xmin || my ymax != thy ymax || my ny != thy ny) {
 			Melder_throw (U"The number of frequencies and/or frequency ranges do not match.");
@@ -964,8 +996,8 @@ DTW Spectrograms_to_DTW (Spectrogram me, Spectrogram thee, int matchStart, int m
 			}
 		}
 
-		autoDTW him = Matrices_to_DTW (m1.peek(), m2.peek(), matchStart, matchEnd, slope, metric);
-		return him.transfer();
+		autoDTW him = Matrices_to_DTW (m1.get(), m2.get(), matchStart, matchEnd, slope, metric);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created from Spectrograms.");
 	}
@@ -986,8 +1018,8 @@ static int Pitch_findFirstAndLastVoicedFrame (Pitch me, long *first, long *last)
 	return *first <= my nx && *last >= 1;
 }
 
-DTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope);
-DTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope) { // vuv_costs=24, time_weight=10 ?
+autoDTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope);
+autoDTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope) { // vuv_costs=24, time_weight=10 ?
 	try {
 		if (vuv_costs < 0) {
 			Melder_throw (U"Voiced-unvoiced costs may not be negative.");
@@ -998,7 +1030,7 @@ DTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weig
 
 		long myfirst, mylast, thyfirst, thylast;
 		if (! Pitch_findFirstAndLastVoicedFrame (me, &myfirst, &mylast) ||
-		        ! Pitch_findFirstAndLastVoicedFrame (thee, &thyfirst, &thylast)) {
+			! Pitch_findFirstAndLastVoicedFrame (thee, &thyfirst, &thylast)) {
 			Melder_throw (U"No voiced frames.");
 		}
 		/*
@@ -1033,15 +1065,14 @@ DTW Pitches_to_DTW_sgc (Pitch me, Pitch thee, double vuv_costs, double time_weig
 				his z[i][j] = sqrt (dist_f * dist_f + time_weight * dist_t * dist_t);
 			}
 		}
-		DTW_findPath (him.peek(), matchStart, matchEnd, slope);
-		return him.transfer();
+		DTW_findPath (him.get(), matchStart, matchEnd, slope);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created from Pitches.");
 	}
 }
 
-DTW Pitches_to_DTW (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart,
-                    int matchEnd, int slope) { // vuv_costs=24, time_weight=10 ?
+autoDTW Pitches_to_DTW (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope) { // vuv_costs=24, time_weight=10 ?
 	try {
 		if (vuv_costs < 0) {
 			Melder_throw (U"Voiced-unvoiced costs must not be negative.");
@@ -1077,17 +1108,15 @@ DTW Pitches_to_DTW (Pitch me, Pitch thee, double vuv_costs, double time_weight,
 			}
 		}
 
-		DTW_findPath (him.peek(), matchStart, matchEnd, slope);
-		return him.transfer();
+		DTW_findPath (him.get(), matchStart, matchEnd, slope);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"DTW not created from Pitches.");
 	}
 }
 
-DurationTier DTW_to_DurationTier (DTW me) {
-	(void) me;
-	DurationTier thee = NULL;
-	return thee;
+autoDurationTier DTW_to_DurationTier (DTW /* me */) {
+	return autoDurationTier();
 }
 
 void DTW_and_Matrix_replace (DTW me, Matrix thee) {
@@ -1112,12 +1141,12 @@ void DTW_and_Matrix_replace (DTW me, Matrix thee) {
 /****************** new implementation ********/
 
 void DTW_findPath (DTW me, int matchStart, int matchEnd, int slope) {
-    DTW_findPath_special (me, matchStart, matchEnd, slope, 0);
+    DTW_findPath_special (me, matchStart, matchEnd, slope, nullptr);
 }
 
-Matrix DTW_to_Matrix_cummulativeDistances (DTW me, double sakoeChibaBand, int slope) {
+autoMatrix DTW_to_Matrix_cummulativeDistances (DTW me, double sakoeChibaBand, int slope) {
     try {
-        Matrix cummulativeDistances;
+        autoMatrix cummulativeDistances;
         DTW_findPath_bandAndSlope (me, sakoeChibaBand, slope, &cummulativeDistances);
         return cummulativeDistances;
     } catch (MelderError) {
@@ -1195,12 +1224,12 @@ static void DTW_and_Polygon_setUnreachableParts (DTW me, Polygon thee, long **ps
 }
 
 #define DTW_ISREACHABLE(y,x) ((psi[y][x] != DTW_UNREACHABLE) && (psi[y][x] != DTW_FORBIDDEN))
-static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slope, Matrix *cummulativeDists) {
+static void DTW_findPath_special (DTW me, int matchStart, int matchEnd, int slope, autoMatrix *cummulativeDists) {
     (void) matchStart;
     (void) matchEnd;
 	try {
        autoPolygon thee = DTW_to_Polygon (me, 0.0, slope);
-       DTW_and_Polygon_findPathInside (me, thee.peek(), slope, cummulativeDists);
+       DTW_and_Polygon_findPathInside (me, thee.get(), slope, cummulativeDists);
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot find path.");
 	}
@@ -1213,7 +1242,7 @@ static void getIntersectionPoint (double x1, double y1, double x2, double y2, do
     *y3 = a * *x3 + y1 - a * x1;
 }
 
-Polygon DTW_to_Polygon (DTW me, double band, int slope) {
+autoPolygon DTW_to_Polygon (DTW me, double band, int slope) {
     try {
         DTW_checkSlopeConstraints (me, band, slope);
         double slopes[5] = { DTW_BIG, DTW_BIG, 3, 2, 1.5 } ;
@@ -1224,7 +1253,7 @@ Polygon DTW_to_Polygon (DTW me, double band, int slope) {
                 thy x[2] = my xmin; thy y[2] = my ymax;
                 thy x[3] = my xmax; thy y[3] = my ymax;
                 thy x[4] = my xmax; thy y[4] = my ymin;
-                return thee.transfer();
+                return thee;
             } else {
                 autoPolygon thee = Polygon_create (4);
                 thy x[1] = my xmin; thy y[1] = my ymin;
@@ -1244,7 +1273,7 @@ Polygon DTW_to_Polygon (DTW me, double band, int slope) {
                 if (y > my ymax) y = my ymax;
                 thy x[4] = x;
                 thy y[4] = y;
-                return thee.transfer();
+                return thee;
             }
         } else {
             if (slope == 1) {
@@ -1255,7 +1284,7 @@ Polygon DTW_to_Polygon (DTW me, double band, int slope) {
                 thy x[4] = my xmax; thy y[4] = my ymax;
                 thy x[5] = my xmax; thy y[5] = my ymax - band;
                 thy x[6] = my xmin + band; thy y[6] = my ymin;
-                return thee.transfer();
+                return thee;
             } else {
                 autoPolygon thee = Polygon_create (8);
                 double x, y;
@@ -1279,7 +1308,7 @@ Polygon DTW_to_Polygon (DTW me, double band, int slope) {
                 thy x[7] = x;
                 thy y[7] = y;
                 thy x[8] = my xmin + band; thy y[8] = my ymin;
-                return thee.transfer();
+                return thee;
             }
         }
     } catch (MelderError) {
@@ -1287,9 +1316,9 @@ Polygon DTW_to_Polygon (DTW me, double band, int slope) {
     }
 }
 
-Matrix DTW_and_Polygon_to_Matrix_cummulativeDistances (DTW me, Polygon thee, int localSlope) {
+autoMatrix DTW_and_Polygon_to_Matrix_cummulativeDistances (DTW me, Polygon thee, int localSlope) {
     try {
-        Matrix cummulativeDistances;
+        autoMatrix cummulativeDistances;
         DTW_and_Polygon_findPathInside (me, thee, localSlope, &cummulativeDistances);
         return cummulativeDistances;
     } catch (MelderError) {
@@ -1297,19 +1326,18 @@ Matrix DTW_and_Polygon_to_Matrix_cummulativeDistances (DTW me, Polygon thee, int
     }
 }
 
-void DTW_findPath_bandAndSlope (DTW me, double sakoeChibaBand, int localSlope, Matrix *cummulativeDists) {
+void DTW_findPath_bandAndSlope (DTW me, double sakoeChibaBand, int localSlope, autoMatrix *cummulativeDists) {
     try {
         autoPolygon thee = DTW_to_Polygon (me, sakoeChibaBand, localSlope);
-        DTW_and_Polygon_findPathInside (me, thee.peek(), localSlope, cummulativeDists);
+        DTW_and_Polygon_findPathInside (me, thee.get(), localSlope, cummulativeDists);
     } catch (MelderError) {
         Melder_throw (me, U" cannot determine the path.");
     }
 }
 
-void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matrix *cummulativeDists) {
+void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, autoMatrix *cummulativeDists) {
     try {
         double slopes[5] = { DTW_BIG, DTW_BIG, 3, 2, 1.5 };
-        long pathIndex = my nx + my ny - 1; /* Maximum path length */
         // if localSlope == 1 start of path is within 10% of minimum duration. Starts farther away
         long delta_xy = (my nx < my ny ? my nx : my ny) / 10; // if localSlope == 1 start within 10% of
 
@@ -1338,7 +1366,9 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
 
         // Make begin part of first column reachable
         long rowto = delta_xy;
-        if (localSlope != 1) rowto = (long) floor (slopes[localSlope]) + 1;
+        if (localSlope != 1) {
+			rowto = (long) floor (slopes[localSlope]) + 1;
+		}
         for (long iy = 2; iy <= rowto; iy++) {
             if (localSlope != 1) {
                 delta[iy][1] = delta[iy - 1][1] + my z[iy][1];
@@ -1349,7 +1379,9 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
         }
         // Make begin part of first row reachable
         long colto = delta_xy;
-        if (localSlope != 1) colto = (long) floor (slopes[localSlope]) + 1;
+        if (localSlope != 1) {
+			colto = (long) floor (slopes[localSlope]) + 1;
+		}
         for (long ix = 2; ix <= colto; ix++) {
             if (localSlope != 1) {
                 delta[1][ix] = delta[1][ix -1] + my z[1][ix];
@@ -1477,7 +1509,8 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
                 minimum = delta[iy = i][my nx];
             }
         }
-
+        
+        long pathIndex = my nx + my ny - 1; /* Maximum path length */
         my weightedDistance = minimum / (my nx + my ny);
         my path[pathIndex].y = iy;
         long ix = my path[pathIndex].x = my nx;
@@ -1501,7 +1534,7 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
             my path[pathIndex].y = iy;
         }
 
-        my pathLength = my nx + my ny - pathIndex;
+        my pathLength = my nx + my ny - 1 - pathIndex + 1;
         if (pathIndex > 1) {
             for (long j = 1; j <= my pathLength; j++) {
                 my path[j] = my path[pathIndex++];
@@ -1509,7 +1542,7 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
         }
 
         DTW_Path_recode (me);
-        if (cummulativeDists != 0) {
+        if (cummulativeDists) {
             autoMatrix him = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
                 my ymin, my ymax, my ny, my dy, my y1);
             for (long i = 1; i <= my ny; i++) {
@@ -1517,7 +1550,7 @@ void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matri
                     his z[i][j] = delta[i][j];
                 }
             }
-            *cummulativeDists = him.transfer();
+            *cummulativeDists = him.move();
         }
     } catch (MelderError) {
         Melder_throw (me, U": cannot find path.");
diff --git a/dwtools/DTW.h b/dwtools/DTW.h
index 91f6f0a..98d81ed 100644
--- a/dwtools/DTW.h
+++ b/dwtools/DTW.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,7 +30,6 @@
 #include "Sound.h"
 
 #include "DTW_def.h"
-oo_CLASS_CREATE (DTW, Matrix);
 
 #define DTW_SAKOECHIBA 1
 #define DTW_SLOPES 2
@@ -46,14 +44,15 @@ oo_CLASS_CREATE (DTW, Matrix);
 void DTW_Path_Query_init (DTW_Path_Query me, long ny, long nx);
 
 /* Prototype on y-axis and test on x-axis */
-DTW DTW_create (double tminp, double tmaxp, long ntp, double dtp, double t1p,
+autoDTW DTW_create (double tminp, double tmaxp, long ntp, double dtp, double t1p,
 	double tminc, double tmaxc, long ntc, double dtc, double t1c);
 
 void DTW_setWeights (DTW me, double wx, double wy, double wd);
 
-DTW DTW_swapAxes (DTW me);
+autoDTW DTW_swapAxes (DTW me);
+
+void DTW_findPath_bandAndSlope (DTW me, double sakoeChibaBand, int localSlope, autoMatrix *cummulativeDists);
 
-void DTW_findPath_bandAndSlope (DTW me, double sakoeChibaBand, int localSlope, Matrix *cummulativeDists);
 void DTW_findPath (DTW me, int matchStart, int matchEnd, int slope); // deprecated
 /* Obsolete
 	Function:
@@ -75,11 +74,8 @@ void DTW_findPath (DTW me, int matchStart, int matchEnd, int slope); // deprecat
 
 void DTW_Path_recode (DTW me);
 
-double DTW_getPathY (DTW me, double tx);
-/*
-	Get the time Y-time that corresponds to time t (along X).
-*/
 double DTW_getYTimeFromXTime (DTW me, double tx);
+
 double DTW_getXTimeFromYTime (DTW me, double ty);
 
 long DTW_getMaximumConsecutiveSteps (DTW me, int direction);
@@ -89,33 +85,39 @@ void DTW_paintDistances (DTW me, Graphics g, double xmin, double xmax, double ym
 
 void DTW_drawPath (DTW me, Graphics g, double xmin, double xmax, double ymin,
 	double ymax, int garnish);
+
 void DTW_drawWarpX (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double tx, int garnish);
+void DTW_drawWarpY (DTW me, Graphics g, double xmin, double xmax, double ymin, double ymax, double ty, int garnish);
+
 void DTW_pathRemoveRedundantNodes (DTW me);
+
 void DTW_pathQueryRecode (DTW me);
 
-void DTW_drawDistancesAlongPath (DTW me, Graphics g, double xmin, double xmax,
-	double dmin, double dmax, int garnish);
+void DTW_drawDistancesAlongPath (DTW me, Graphics g, double xmin, double xmax, double dmin, double dmax, int garnish);
 
 void DTW_and_Sounds_draw (DTW me, Sound yy, Sound xx, Graphics g, double xmin, double xmax,
 	double ymin, double ymax, int garnish);
+
 void DTW_and_Sounds_drawWarpX (DTW me, Sound yy, Sound xx, Graphics g, double xmin, double xmax,
 	double ymin, double ymax, double tx, int garnish);
 
-Polygon DTW_to_Polygon (DTW me, double band, int slope);
+autoPolygon DTW_to_Polygon (DTW me, double band, int slope);
+
+void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, autoMatrix *cummulativeDists);
+
+autoMatrix DTW_to_Matrix_distances(DTW me);
 
-void DTW_and_Polygon_findPathInside (DTW me, Polygon thee, int localSlope, Matrix *cummulativeDists);
+autoMatrix DTW_to_Matrix_cummulativeDistances (DTW me, double sakoeChibaBand, int slope);
 
-Matrix DTW_to_Matrix_distances(DTW me);
-Matrix DTW_to_Matrix_cummulativeDistances (DTW me, double sakoeChibaBand, int slope);
-Matrix DTW_and_Polygon_to_Matrix_cummulativeDistances (DTW me, Polygon thee, int localSlope);
+autoMatrix DTW_and_Polygon_to_Matrix_cummulativeDistances (DTW me, Polygon thee, int localSlope);
 
-DTW Matrices_to_DTW (I, thou, int matchStart, int matchEnd, int slope, double metric);
+autoDTW Matrices_to_DTW (Matrix me, Matrix thee, int matchStart, int matchEnd, int slope, double metric);
 
-DTW Spectrograms_to_DTW (Spectrogram me, Spectrogram thee, int matchStart, int matchEnd, int slope, double metric);
+autoDTW Spectrograms_to_DTW (Spectrogram me, Spectrogram thee, int matchStart, int matchEnd, int slope, double metric);
 
-DTW Pitches_to_DTW (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope);
+autoDTW Pitches_to_DTW (Pitch me, Pitch thee, double vuv_costs, double time_weight, int matchStart, int matchEnd, int slope);
 
-DurationTier DTW_to_DurationTier (DTW me);
+autoDurationTier DTW_to_DurationTier (DTW me);
 
 void DTW_and_Matrix_replace (DTW me, Matrix thee);
 
diff --git a/dwtools/DTW_and_TextGrid.cpp b/dwtools/DTW_and_TextGrid.cpp
index 634c55a..be22f70 100644
--- a/dwtools/DTW_and_TextGrid.cpp
+++ b/dwtools/DTW_and_TextGrid.cpp
@@ -1,20 +1,19 @@
 /* DTW_and_TextGrid.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,34 +25,34 @@
 #include "DTW_and_TextGrid.h"
 
 // begin old prototypes for compatibility reasons with the past
-TextGrid DTW_and_TextGrid_to_TextGrid_old (DTW me, TextGrid thee);
-IntervalTier DTW_and_IntervalTier_to_IntervalTier_old (DTW me, IntervalTier thee);
-TextTier DTW_and_TextTier_to_TextTier_old (DTW me, TextTier thee);
+autoTextGrid DTW_and_TextGrid_to_TextGrid_old (DTW me, TextGrid thee);
+autoIntervalTier DTW_and_IntervalTier_to_IntervalTier_old (DTW me, IntervalTier thee);
+autoTextTier DTW_and_TextTier_to_TextTier_old (DTW me, TextTier thee);
 // end old
 
 /* Get times from TextGrid and substitute new time form the y-times of the DTW. */
-TextTier DTW_and_TextTier_to_TextTier (DTW me, TextTier thee, double precision) {
+autoTextTier DTW_and_TextTier_to_TextTier (DTW me, TextTier thee, double precision) {
 	try {
 		if (fabs (my ymin - thy xmin) <= precision && fabs (my ymax - thy xmax) <= precision) { // map from Y to X
 			autoTextTier him = Data_copy (thee);
 			his xmin = my xmin;
 			his xmax = my xmax;
-			for (long i = 1; i <= his points -> size; i++) {
-				TextPoint textpoint = (TextPoint) his points -> item[i];
+			for (long i = 1; i <= his points.size; i++) {
+				TextPoint textpoint = his points.at [i];
 				double time = DTW_getXTimeFromYTime (me, textpoint -> number);
 				textpoint -> number = time;
 			}
-			return him.transfer();
+			return him;
 		} else if (fabs (my xmin - thy xmin) <= precision && fabs (my xmax - thy xmax) <= precision) { // map from X to Y
 			autoTextTier him = Data_copy (thee);
 			his xmin = my ymin;
 			his xmax = my ymax;
-			for (long i = 1; i <= his points -> size; i++) {
-				TextPoint textpoint = (TextPoint) his points -> item[i];
+			for (long i = 1; i <= his points.size; i++) {
+				TextPoint textpoint = his points.at [i];
 				double time = DTW_getYTimeFromXTime (me, textpoint -> number);
 				textpoint -> number = time;
 			}
-			return him.transfer();
+			return him;
 		} else {
 			Melder_throw (U"The domain of the TextTier and one of the domains of the DTW must be equal.");
 		}
@@ -62,32 +61,32 @@ TextTier DTW_and_TextTier_to_TextTier (DTW me, TextTier thee, double precision)
 	}
 }
 
-IntervalTier DTW_and_IntervalTier_to_IntervalTier (DTW me, IntervalTier thee, double precision) {
+autoIntervalTier DTW_and_IntervalTier_to_IntervalTier (DTW me, IntervalTier thee, double precision) {
 	try {
 		if (fabs (my ymin - thy xmin) <= precision && fabs (my ymax - thy xmax) <= precision) { // map from Y to X
 			autoIntervalTier him = Data_copy (thee);
 			his xmin = my xmin;
 			his xmax = my xmax;
-			for (long i = 1; i <= his intervals -> size; i++) {
-				TextInterval textinterval = (TextInterval) his intervals -> item[i];
+			for (long i = 1; i <= his intervals.size; i ++) {
+				TextInterval textinterval = his intervals.at [i];
 				double xmin = DTW_getXTimeFromYTime (me, textinterval -> xmin);
 				textinterval -> xmin = xmin;
 				double xmax = DTW_getXTimeFromYTime (me, textinterval -> xmax);
 				textinterval -> xmax = xmax;
 			}
-			return him.transfer();
+			return him;
 		} else if (fabs (my xmin - thy xmin) <= precision && fabs (my xmax - thy xmax) <= precision) { // map from X to Y
 			autoIntervalTier him = Data_copy (thee);
 			his xmin = my ymin;
 			his xmax = my ymax;
-			for (long i = 1; i <= his intervals -> size; i++) {
-				TextInterval textinterval = (TextInterval) his intervals -> item[i];
+			for (long i = 1; i <= his intervals.size; i ++) {
+				TextInterval textinterval = his intervals.at [i];
 				double xmin = DTW_getYTimeFromXTime (me, textinterval -> xmin);
 				textinterval -> xmin = xmin;
 				double xmax = DTW_getYTimeFromXTime (me, textinterval -> xmax);
 				textinterval -> xmax = xmax;
 			}
-			return him.transfer();
+			return him;
 		} else {
 			Melder_throw (U"The domain of the IntervalTier and one of the domains of the DTW must be equal.");
 		}
@@ -96,7 +95,7 @@ IntervalTier DTW_and_IntervalTier_to_IntervalTier (DTW me, IntervalTier thee, do
 	}
 }
 
-TextGrid DTW_and_TextGrid_to_TextGrid (DTW me, TextGrid thee, double precision) {
+autoTextGrid DTW_and_TextGrid_to_TextGrid (DTW me, TextGrid thee, double precision) {
 	try {
 		double tmin, tmax;
 		if (fabs (my ymin - thy xmin) <= precision && fabs (my ymax - thy xmax) <= precision) {
@@ -111,33 +110,33 @@ TextGrid DTW_and_TextGrid_to_TextGrid (DTW me, TextGrid thee, double precision)
 
 		autoTextGrid him = TextGrid_createWithoutTiers (tmin, tmax);
 
-		for (long i = 1; i <= thy tiers -> size; i++) {
-			Function anyTier = (Function) thy tiers -> item[i];
+		for (long i = 1; i <= thy tiers->size; i ++) {
+			Function anyTier = thy tiers->at [i];
 
 			if (anyTier -> classInfo == classIntervalTier) {
 				autoIntervalTier tier = DTW_and_IntervalTier_to_IntervalTier (me, (IntervalTier) anyTier, precision);
-				TextGrid_addTier (him.peek(), tier.peek());
+				TextGrid_addTier_copy (him.get(), tier.get());
 			} else if (anyTier -> classInfo == classTextTier) {
 				autoTextTier tier = DTW_and_TextTier_to_TextTier (me, (TextTier) anyTier, precision);
-				TextGrid_addTier (him.peek(), tier.peek());
+				TextGrid_addTier_copy (him.get(), tier.get());
 			} else {
 				Melder_throw (U"Unknown tier.");
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not created from DTW & TextGrid.");
 	}
 }
 
-Table DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision) {
+autoTable DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision) {
 	try {
-		long numberOfIntervals = thy intervals -> size;
+		long numberOfIntervals = thy intervals.size;
 		autoTable him = Table_createWithColumnNames (numberOfIntervals, U"tmin tmax label dist");
 		if (fabs (my ymin - thy xmin) <= precision && fabs (my ymax - thy xmax) <= precision) { // map from Y to X
 			long pathIndex = 1;
-			for (long i = 1; i <= numberOfIntervals; i++) {
-				TextInterval textinterval = (TextInterval) thy intervals -> item[i];
+			for (long i = 1; i <= numberOfIntervals; i ++) {
+				TextInterval textinterval = thy intervals.at [i];
 				double xmin = DTW_getXTimeFromYTime (me, textinterval -> xmin);
 				double xmax = DTW_getXTimeFromYTime (me, textinterval -> xmax);
 				long ixmin, ixmax;
@@ -147,15 +146,15 @@ Table DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision
 					sumOfDistances += my z[my path[pathIndex].y][my path[pathIndex].x];
 					pathIndex++;
 				}
-				Table_setNumericValue (him.peek(), i, 1, textinterval -> xmin);
-				Table_setNumericValue (him.peek(), i, 2, textinterval -> xmax);
-				Table_setStringValue  (him.peek(), i, 3, textinterval -> text);
-				Table_setNumericValue (him.peek(), i, 4, sumOfDistances / numberOfFrames);
+				Table_setNumericValue (him.get(), i, 1, textinterval -> xmin);
+				Table_setNumericValue (him.get(), i, 2, textinterval -> xmax);
+				Table_setStringValue  (him.get(), i, 3, textinterval -> text);
+				Table_setNumericValue (him.get(), i, 4, sumOfDistances / numberOfFrames);
 			}
 		} else if (fabs (my xmin - thy xmin) <= precision && fabs (my xmax - thy xmax) <= precision) {  // map from X to Y
 			long pathIndex = 1;
-			for (long i = 1; i <= numberOfIntervals; i++) {
-				TextInterval textinterval = (TextInterval) thy intervals -> item[i];
+			for (long i = 1; i <= numberOfIntervals; i ++) {
+				TextInterval textinterval = thy intervals.at [i];
 				double ymin = DTW_getYTimeFromXTime (me, textinterval -> xmin);
 				double ymax = DTW_getYTimeFromXTime (me, textinterval -> xmax);
 				long iymin, iymax;
@@ -165,15 +164,15 @@ Table DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision
 					sumOfDistances += my z[my path[pathIndex].y][my path[pathIndex].x];
 					pathIndex++;
 				}
-				Table_setNumericValue (him.peek(), i, 1, textinterval -> xmin);
-				Table_setNumericValue (him.peek(), i, 2, textinterval -> xmax);
-				Table_setStringValue  (him.peek(), i, 3, textinterval -> text);
-				Table_setNumericValue (him.peek(), i, 4, sumOfDistances / numberOfFrames);
+				Table_setNumericValue (him.get(), i, 1, textinterval -> xmin);
+				Table_setNumericValue (him.get(), i, 2, textinterval -> xmax);
+				Table_setStringValue  (him.get(), i, 3, textinterval -> text);
+				Table_setNumericValue (him.get(), i, 4, sumOfDistances / numberOfFrames);
 			}
 		} else {
 			Melder_throw (U"The domain of the IntervalTier and one of the domains of the DTW must be equal.");
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Table with distances created.");
 	}
@@ -182,7 +181,7 @@ Table DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision
 }
 
 /* Get times from TextGrid and substitute new time form the y-times of the DTW. */
-TextTier DTW_and_TextTier_to_TextTier_old (DTW me, TextTier thee) {
+autoTextTier DTW_and_TextTier_to_TextTier_old (DTW me, TextTier thee) {
 	try {
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"The domain of the TextTier and the DTW must be equal.");
@@ -191,18 +190,18 @@ TextTier DTW_and_TextTier_to_TextTier_old (DTW me, TextTier thee) {
 		his xmin = my ymin;
 		his xmax = my ymax;
 
-		for (long i = 1; i <= his points -> size; i++) {
-			TextPoint textpoint = (TextPoint) his points -> item[i];
-			double time = DTW_getPathY (me, textpoint -> number);
+		for (long i = 1; i <= his points.size; i ++) {
+			TextPoint textpoint = his points.at [i];
+			double time = DTW_getYTimeFromXTime (me, textpoint -> number);
 			textpoint -> number = time;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TextTier not created.");
 	}
 }
 
-IntervalTier DTW_and_IntervalTier_to_IntervalTier_old (DTW me, IntervalTier thee) {
+autoIntervalTier DTW_and_IntervalTier_to_IntervalTier_old (DTW me, IntervalTier thee) {
 	try {
 		if ( (my xmin != thy xmin) || my xmax != thy xmax) Melder_throw
 			(U"The domain of the IntervalTier and the DTW must be equal.");
@@ -212,20 +211,20 @@ IntervalTier DTW_and_IntervalTier_to_IntervalTier_old (DTW me, IntervalTier thee
 		his xmin = my ymin;
 		his xmax = my ymax;
 
-		for (long i = 1; i <= his intervals -> size; i++) {
-			TextInterval textinterval = (TextInterval) his intervals -> item[i];
-			double xmin = DTW_getPathY (me, textinterval -> xmin);
+		for (long i = 1; i <= his intervals.size; i ++) {
+			TextInterval textinterval = his intervals.at [i];
+			double xmin = DTW_getYTimeFromXTime (me, textinterval -> xmin);
 			textinterval -> xmin = xmin;
-			double xmax = DTW_getPathY (me, textinterval -> xmax);
+			double xmax = DTW_getYTimeFromXTime (me, textinterval -> xmax);
 			textinterval -> xmax = xmax;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"IntervalTier not created.");
 	}
 }
 
-TextGrid DTW_and_TextGrid_to_TextGrid_old (DTW me, TextGrid thee) {
+autoTextGrid DTW_and_TextGrid_to_TextGrid_old (DTW me, TextGrid thee) {
 	try {
 		autoTextGrid him = Thing_new (TextGrid);
 		if (my xmin != thy xmin || my xmax != thy xmax) {
@@ -234,23 +233,23 @@ TextGrid DTW_and_TextGrid_to_TextGrid_old (DTW me, TextGrid thee) {
 
 		his xmin = my ymin;
 		his xmax = my ymax;
-		his tiers = Ordered_create ();
+		his tiers = FunctionList_create ();
 
-		for (long i = 1; i <= thy tiers -> size; i++) {
-			Data anyTier = (Data) thy tiers -> item[i];
+		for (long i = 1; i <= thy tiers->size; i ++) {
+			Daata anyTier = thy tiers->at [i];
 
 			if (anyTier -> classInfo == classIntervalTier) {
 
 				autoIntervalTier tier = DTW_and_IntervalTier_to_IntervalTier_old (me, (IntervalTier) anyTier);
-				TextGrid_addTier (him.peek(), tier.peek());
+				TextGrid_addTier_copy (him.get(), tier.get());
 			} else if (anyTier -> classInfo == classTextTier) {
 				autoTextTier tier = DTW_and_TextTier_to_TextTier_old (me, (TextTier) anyTier);
-				TextGrid_addTier (him.peek(), tier.peek());
+				TextGrid_addTier_copy (him.get(), tier.get());
 			} else {
 				Melder_throw (U"Unknown tier.");
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not created.");
 	}
diff --git a/dwtools/DTW_and_TextGrid.h b/dwtools/DTW_and_TextGrid.h
index e63dcac..aa41b66 100644
--- a/dwtools/DTW_and_TextGrid.h
+++ b/dwtools/DTW_and_TextGrid.h
@@ -3,39 +3,39 @@
 
 /* DTW_and_TextGrid.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  djmw 20060906
- djmw 20120328 Latest modification
 */
 
 #include "DTW.h"
 #include "TextGrid.h"
 #include "Table.h"
 
-TextTier DTW_and_TextTier_to_TextTier (DTW me, TextTier thee, double precision);
-IntervalTier DTW_and_IntervalTier_to_IntervalTier (DTW me, IntervalTier thee, double precision);
-TextGrid DTW_and_TextGrid_to_TextGrid (DTW me, TextGrid thee, double precision);
+autoTextTier DTW_and_TextTier_to_TextTier (DTW me, TextTier thee, double precision);
+
+autoIntervalTier DTW_and_IntervalTier_to_IntervalTier (DTW me, IntervalTier thee, double precision);
+
+autoTextGrid DTW_and_TextGrid_to_TextGrid (DTW me, TextGrid thee, double precision);
 /*
 	Purpose: Create the new TextGrid with all times determined by the DTW.
 */
 
-Table DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision);
+autoTable DTW_and_IntervalTier_to_Table (DTW me, IntervalTier thee, double precision);
 
 #endif /* _DTW_and_TextGrid_h_ */
diff --git a/dwtools/DTW_def.h b/dwtools/DTW_def.h
index 86bcf54..4414ce9 100644
--- a/dwtools/DTW_def.h
+++ b/dwtools/DTW_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,28 +29,13 @@ oo_DEFINE_STRUCT (DTW_Path)
 oo_END_STRUCT (DTW_Path) 
 #undef ooSTRUCT
 
-#define ooSTRUCT DTW_Path_Index
-oo_DEFINE_STRUCT (DTW_Path_Index)
-	oo_LONG (ibegin)
-	oo_LONG (iend)
-oo_END_STRUCT (DTW_Path_Index)
-#undef ooSTRUCT
-
-#define ooSTRUCT DTW_Path_xytime
-oo_DEFINE_STRUCT (DTW_Path_xytime)
-	oo_DOUBLE (x)
-	oo_DOUBLE (y)
-oo_END_STRUCT (DTW_Path_xytime) 
-#undef ooSTRUCT
-
 #define ooSTRUCT DTW_Path_Query
 oo_DEFINE_STRUCT (DTW_Path_Query)
 	oo_LONG (nx)
 	oo_LONG (ny)
 	oo_LONG (nxy)
-	oo_STRUCT_VECTOR (DTW_Path_xytime, xytimes, nxy)
-	oo_STRUCT_VECTOR (DTW_Path_Index, xindex, nx)
-	oo_STRUCT_VECTOR (DTW_Path_Index, yindex, ny)
+	oo_AUTO_OBJECT (RealTier, 0, yfromx)
+	oo_AUTO_OBJECT (RealTier, 0, xfromy)
 oo_END_STRUCT (DTW_Path_Query) 
 #undef ooSTRUCT
 
diff --git a/dwtools/DataModeler.cpp b/dwtools/DataModeler.cpp
index 6d56696..0b401d2 100644
--- a/dwtools/DataModeler.cpp
+++ b/dwtools/DataModeler.cpp
@@ -1,20 +1,19 @@
 /* DataModeler.cpp
  *
- * Copyright (C) 2014-2015 David Weenink
+ * Copyright (C) 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,7 +48,6 @@
 #include "DataModeler_def.h"
 
 extern machar_Table NUMfpp;
-void FormantModeler_getSumOfVariancesBetweenShiftedAndEstimatedTracks (FormantModeler me, int shiftDirection, long *fromFormant, long *toFormant, double var[]);
 
 Thing_implement (DataModeler, Function, 0);
 
@@ -58,7 +56,7 @@ void structDataModeler :: v_info () {
 	MelderInfo_writeLine (U"      Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"      End time: ", xmax, U" seconds");
 	MelderInfo_writeLine (U"      Total duration: ", xmax - xmin, U" seconds");
-	double ndf, rSquared = DataModeler_getCoefficientOfDetermination (this, NULL, NULL);
+	double ndf, rSquared = DataModeler_getCoefficientOfDetermination (this, nullptr, nullptr);
 	double probability, chisq = DataModeler_getChiSquaredQ (this, useSigmaY, &probability, &ndf);
 	MelderInfo_writeLine (U"   Fit:");
 	MelderInfo_writeLine (U"      Number of data points: ", numberOfDataPoints);
@@ -77,11 +75,11 @@ void structDataModeler :: v_info () {
 	}
 }
 
-static double polynome_evaluate (DataModeler me, double xin, double p[])
+static double polynomial_evaluate (DataModeler me, double xin, double p[])
 {
-	double xpi = 1, result = p[1];
+	double xpi = 1.0, result = p[1];
 	// From domain [xmin, xmax] to domain [-(xmax -xmin)/2, (xmax-xmin)/2]
-	double x = (2 * xin - my xmin - my xmax) / 2;
+	double x = (2.0 * xin - my xmin - my xmax) / 2.0;
 	for (long i = 2; i <= my numberOfParameters; i++) {
 		xpi *= x;
 		result += p[i] * xpi;
@@ -89,10 +87,10 @@ static double polynome_evaluate (DataModeler me, double xin, double p[])
 	return result;
 }
 
-static void polynome_evaluateBasisFunctions (DataModeler me, double xin, double term[]) {
-	term[1] = 1;
+static void polynomial_evaluateBasisFunctions (DataModeler me, double xin, double term[]) {
+	term[1] = 1.0;
 	// From domain [xmin, xmax] to domain [-(xmax -xmin)/2, (xmax-xmin)/2]
-	double x = (2 * xin - my xmin - my xmax) / 2;
+	double x = (2.0 * xin - my xmin - my xmax) / 2.0;
 	for (long i = 2; i <= my numberOfParameters; i++) {
 		term[i] = term[i-1] * x;
 	}
@@ -100,27 +98,28 @@ static void polynome_evaluateBasisFunctions (DataModeler me, double xin, double
 
 static double legendre_evaluate (DataModeler me, double xin, double p[]) {
 	// From domain [xmin, xmax] to domain [-1, 1]
-	double x = (2 * xin - my xmin - my xmax) / (my xmax - my xmin);
+	double x = (2.0 * xin - my xmin - my xmax) / (my xmax - my xmin);
 	double pti, ptim1, ptim2 = 1, result = p[1];
 	if (my numberOfParameters > 1) {
-		double twox = 2 * x, f2 = x, d = 1.0;
+		double twox = 2.0 * x, f2 = x, d = 1.0;
 		result += p[2] * (ptim1 = x);
 		for (long i = 3; i <= my numberOfParameters; i++) {
 			double f1 = d++;
 			f2 += twox;
 			result += p[i] * (pti = (f2 * ptim1 - f1 * ptim2) / d);
-			ptim2 = ptim1; ptim1 = pti;
+			ptim2 = ptim1;
+			ptim1 = pti;
 		}
 	}
 	return result;
 }
 
 static void legendre_evaluateBasisFunctions (DataModeler me, double xin, double term[]) {
-	term[1] = 1;
+	term[1] = 1.0;
 	/* transform x from domain [xmin, xmax] to domain [-1, 1] */
-	double x = ( 2 * xin - my xmin - my xmax) / (my xmax - my xmin);
+	double x = (2.0 * xin - my xmin - my xmax) / (my xmax - my xmin);
 	if (my numberOfParameters > 1) {
-		double twox = 2 * x, f2 = term[2] = x, d = 1.0;
+		double twox = 2.0 * x, f2 = term[2] = x, d = 1.0;
 		for (long i = 3; i <= my numberOfParameters; i++) {
 			double f1 = d++;
 			f2 += twox;
@@ -129,32 +128,32 @@ static void legendre_evaluateBasisFunctions (DataModeler me, double xin, double
 	}
 }
 
-static void chisqFromZScores (double *zscores, long numberOfZScores, double *chisq, long *numberOfValidZScores) {
-	long numberOfValid = numberOfZScores;
-	double chisqt = 0;
+static void chisqFromZScores (double *zscores, long numberOfZScores, double *p_chisq, long *p_numberOfValidZScores) {
+	long numberOfValidZScores = numberOfZScores;
+	double chisq = 0.0;
 	for (long i = 1; i <= numberOfZScores; i++) {
 		if (NUMdefined (zscores[i])) {
-			chisqt += zscores[i] * zscores[i];
+			chisq += zscores[i] * zscores[i];
 		} else {
-			numberOfValid--;
+			numberOfValidZScores--;
 		}
 	}
-	if (chisq) {
-		*chisq = chisqt;
+	if (p_chisq) {
+		*p_chisq = chisq;
 	}
-	if (numberOfValidZScores) {
-		*numberOfValidZScores = numberOfValid;
+	if (p_numberOfValidZScores) {
+		*p_numberOfValidZScores = numberOfValidZScores;
 	}
 }
 
-double DataModeler_getDataPointInverseWeight (DataModeler me, long iPoint, int useSigmaY ) {
-	double iweight = 1;
+static double DataModeler_getDataPointInverseWeight (DataModeler me, long iPoint, int useSigmaY ) {
+	double iweight = 1.0;
 	if (iPoint > 0 && iPoint <= my numberOfDataPoints && my dataPointStatus[iPoint] != DataModeler_DATA_INVALID) {
 		if (useSigmaY == DataModeler_DATA_WEIGH_SIGMA) {
 			iweight = my sigmaY[iPoint];
 		} else if (useSigmaY == DataModeler_DATA_WEIGH_RELATIVE) {
 			double q = my y[iPoint] / my sigmaY[iPoint];
-			iweight = 500 / q; //
+			iweight = 500.0 / q; //
 		} else if (useSigmaY == DataModeler_DATA_WEIGH_SQRT) {
 			iweight = 7.071 * sqrt (my sigmaY[iPoint]); // .bw = 50 gives 50
 		}
@@ -178,23 +177,23 @@ double DataModeler_getModelValueAtIndex (DataModeler me, long index) {
 	return f;
 }
 
-void DataModeler_getExtremaY (DataModeler me, double *ymin, double *ymax) {
-	double min = 1e38, max = -min;
+void DataModeler_getExtremaY (DataModeler me, double *p_ymin, double *p_ymax) {
+	double ymin = 1e308, ymax = -ymin;
 	for (long i = 1; i <= my numberOfDataPoints; i++) {
 		if (my dataPointStatus[i] != DataModeler_DATA_INVALID) {
-			if (my y[i] < min) {
-				min = my y[i];
+			if (my y[i] < ymin) {
+				ymin = my y[i];
 			}
-			if (my y[i] > max) {
-				max = my y[i];
+			if (my y[i] > ymax) {
+				ymax = my y[i];
 			}
 		}
 	}
-	if (ymin != NULL) {
-		*ymin = min;
+	if (p_ymin) {
+		*p_ymin = ymin;
 	}
-	if (ymax != NULL) {
-		*ymax = max;
+	if (p_ymax) {
+		*p_ymax = ymax;
 	}
 }
 
@@ -243,7 +242,7 @@ void DataModeler_setDataPointStatus (DataModeler me, long index, int status) {
 	}
 }
 
-void DataModeler_setDataPointValueAndStatus (DataModeler me, long index, double value, int dataStatus) {
+static void DataModeler_setDataPointValueAndStatus (DataModeler me, long index, double value, int dataStatus) {
 	if (index > 0 && index <= my numberOfDataPoints) {
 		my y[index] = value;
 		my dataPointStatus[index] = dataStatus;
@@ -285,23 +284,23 @@ double DataModeler_getParameterStandardDeviation (DataModeler me, long index) {
 	return stdev;
 }
 
-double DataModeler_getVarianceOfParameters (DataModeler me, long fromIndex, long toIndex, long *numberOfFreeParameters) {
+double DataModeler_getVarianceOfParameters (DataModeler me, long fromIndex, long toIndex, long *p_numberOfFreeParameters) {
 	double variance = NUMundefined;
 	if (toIndex < fromIndex || (toIndex == 0 && fromIndex == 0)) {
 		fromIndex = 1; toIndex = my numberOfParameters;
 	}
-	long numberOfParameters = 0;
+	long numberOfFreeParameters = 0;
 	if (fromIndex <= toIndex && fromIndex > 0 && toIndex <= my numberOfParameters) {
 		variance = 0;
 		for (long index = fromIndex; index <= toIndex; index++) {
 			if (my parameterStatus[index] != DataModeler_PARAMETER_FIXED) {
 				variance += my parameterCovariances -> data[index][index];
-				numberOfParameters++;
+				numberOfFreeParameters++;
 			}
 		}
 	}
-	if (numberOfFreeParameters != NULL) {
-		*numberOfFreeParameters = numberOfParameters;
+	if (p_numberOfFreeParameters) {
+		*p_numberOfFreeParameters = numberOfFreeParameters;
 	}
 	return variance;
 }
@@ -324,7 +323,7 @@ void DataModeler_setParameterValuesToZero (DataModeler me, double numberOfSigmas
 			double value = my parameter[i];
 			double sigmas = numberOfSigmas * DataModeler_getParameterStandardDeviation (me, i);
 			if ((value - sigmas) * (value + sigmas) < 0) {
-				DataModeler_setParameterValueFixed (me, i, 0);
+				DataModeler_setParameterValueFixed (me, i, 0.0);
 				numberOfChangedParameters++;
 			}
 		}
@@ -358,7 +357,7 @@ long DataModeler_getNumberOfInvalidDataPoints (DataModeler me) {
 }
 
 void DataModeler_setTolerance (DataModeler me, double tolerance) {
-	my tolerance = tolerance > 0 ? tolerance : my numberOfDataPoints * NUMfpp -> eps;
+	my tolerance = tolerance > 0.0 ? tolerance : my numberOfDataPoints * NUMfpp -> eps;
 }
 
 double DataModeler_getDegreesOfFreedom (DataModeler me) {
@@ -374,7 +373,7 @@ double DataModeler_getDegreesOfFreedom (DataModeler me) {
 
 void DataModeler_getZScores (DataModeler me, int useSigmaY, double zscores[]) {
 	try {
-		Melder_assert (zscores != NULL);
+		Melder_assert (zscores != nullptr);
 		double estimatedSigmaY;
 		if (useSigmaY == DataModeler_DATA_WEIGH_EQUAL) {
 			long numberOfValidDataPoints;
@@ -400,9 +399,9 @@ void DataModeler_getZScores (DataModeler me, int useSigmaY, double zscores[]) {
 
 // chisq and zscores may be the same arrays!
 static void DataModeler_getChisqScoresFromZScores (DataModeler me, double *zscores, bool substituteAverage, double *chisq) {
-	Melder_assert (zscores != NULL && chisq != NULL);
+	Melder_assert (zscores != nullptr && chisq != nullptr);
 	long numberOfDefined = my numberOfDataPoints;
-	double sumchisq = 0;
+	double sumchisq = 0.0;
 	for (long i = 1; i <= my numberOfDataPoints; i++) {
 		if (NUMdefined (zscores[i])) {
 			chisq[i] = zscores[i] * zscores[i];
@@ -421,29 +420,29 @@ static void DataModeler_getChisqScoresFromZScores (DataModeler me, double *zscor
 	}
 }
 
-double DataModeler_getChiSquaredQ (DataModeler me, int useSigmaY, double *probability, double *ndf)
+double DataModeler_getChiSquaredQ (DataModeler me, int useSigmaY, double *p_prob, double *p_df)
 {
-	double chisq; long numberOfValidZScores;
+	double chisq;
+	long numberOfValidZScores;
 	autoNUMvector<double> zscores (1, my numberOfDataPoints);
 	DataModeler_getZScores (me, useSigmaY, zscores.peek());
 	chisqFromZScores (zscores.peek(), my numberOfDataPoints, & chisq, & numberOfValidZScores);
-	double dof = numberOfValidZScores;
-	dof = useSigmaY == DataModeler_DATA_WEIGH_EQUAL ? dof - 1 : dof; // we loose one dof if sigma is estimated from the data
-	if (probability != NULL) {
-		*probability = NUMchiSquareQ (chisq, dof);
+	double df = useSigmaY == DataModeler_DATA_WEIGH_EQUAL ? numberOfValidZScores - 1.0 : numberOfValidZScores; // we loose one df if sigma is estimated from the data
+	if (p_prob) {
+		*p_prob = NUMchiSquareQ (chisq, df);
 	}
-	if (ndf != NULL) {
-		*ndf = dof;
+	if (p_df) {
+		*p_df = df;
 	}
 	return chisq;
 }
 
 double DataModeler_getWeightedMean (DataModeler me) {
-	double ysum = 0, wsum = 0;
+	double ysum = 0.0, wsum = 0.0;
 	for (long i = 1; i <= my numberOfDataPoints; i++) {
 		if (my dataPointStatus[i] != DataModeler_DATA_INVALID) {
 			double s = DataModeler_getDataPointInverseWeight (me, i, my useSigmaY);
-			double weight =  1 / (s * s);
+			double weight = 1.0 / (s * s);
 			ysum += my y[i] * weight;
 			wsum += weight;
 		}
@@ -451,7 +450,7 @@ double DataModeler_getWeightedMean (DataModeler me) {
 	return ysum / wsum;
 }
 
-double DataModeler_getCoefficientOfDetermination (DataModeler me, double *ssreg, double *sstot) {
+double DataModeler_getCoefficientOfDetermination (DataModeler me, double *p_ssreg, double *p_sstot) {
 
 	/* We cannot use the standard expressions for ss_tot, and ss_reg because our data are weighted by 1 / sigma[i].
 	 * We need the weighted mean and we need to weigh all sums-of-squares accordingly;
@@ -460,29 +459,28 @@ double DataModeler_getCoefficientOfDetermination (DataModeler me, double *ssreg,
 	 */
 
 	double ymean = DataModeler_getWeightedMean (me);
-	double ss_tot = 0, ss_reg = 0;
+	double sstot = 0.0, ssreg = 0.0;
 	for (long i = 1; i <= my numberOfDataPoints; i++) {
 		if (my dataPointStatus[i] != DataModeler_DATA_INVALID) {
 			double s = DataModeler_getDataPointInverseWeight (me, i, my useSigmaY);
 			double diff = (my y[i] - ymean) / s;
-			ss_tot += diff * diff; // total sum of squares
+			sstot += diff * diff; // total sum of squares
 			double estimate = my f_evaluate (me, my x[i], my parameter);
 			diff = (estimate - my y[i]) / s;
-			ss_reg += diff * diff; // regression sum of squares
+			ssreg += diff * diff; // regression sum of squares
 		}
 	}
-	double rSquared = ss_tot > 0 ? 1 - ss_reg / ss_tot : 1;
-	if (ssreg != NULL) {
-		*ssreg = ss_tot - ss_reg;
+	double rSquared = sstot > 0.0 ? 1.0 - ssreg / sstot : 1.0;
+	if (p_ssreg) {
+		*p_ssreg = sstot - ssreg;
 	}
-	if (sstot != NULL) {
-		*sstot = ss_tot;
+	if (p_sstot) {
+		*p_sstot = sstot;
 	}
 	return rSquared;
 }
 
-void DataModeler_drawBasisFunction_inside (DataModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax,
- 	long iterm, bool scale, long numberOfPoints) {
+static void DataModeler_drawBasisFunction_inside (DataModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax, long iterm, bool scale, long numberOfPoints) {
 	if (xmax <= xmin) {
 		xmin = my xmin; xmax = my xmax;
 	}
@@ -496,7 +494,7 @@ void DataModeler_drawBasisFunction_inside (DataModeler me, Graphics g, double xm
 		y[i] = scale ? y[i] * my parameter[iterm] : y[i];
 	}
 	if (ymax <= ymin) {
-		ymin = 1e38;ymax = -ymin;
+		ymin = 1e308; ymax = -ymin;
 		for (long i = 1; i <= numberOfPoints; i++) {
 			ymax = y[i] > ymax ? y[i] : ymax;
 			ymin = y[i] < ymin ? y[i] : ymin;
@@ -577,7 +575,7 @@ void DataModeler_draw_inside (DataModeler me, Graphics g, double xmin, double xm
 	
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	double horizontalOffset_wc = Graphics_dxMMtoWC (g, horizontalOffset_mm);
-	double barWidth_wc = barWidth_mm <= 0 ? 0 : Graphics_dxMMtoWC (g, barWidth_mm);
+	double barWidth_wc = barWidth_mm <= 0.0 ? 0.0 : Graphics_dxMMtoWC (g, barWidth_mm);
 	double x1, y1, x2, y2;
 	bool x1defined = false, x2defined = false;
 	for (long idata = ixmin; idata <= ixmax; idata++) {
@@ -614,14 +612,14 @@ void DataModeler_draw_inside (DataModeler me, Graphics g, double xmin, double xm
 				double ym = y1;
 				double yt = ym + 0.5 * sigma, yb = ym - 0.5 * sigma;
 				if (estimated) {
-					yt = (y - y1) > 0 ? y : y1;
-					yb = (y - y1) > 0 ? y1 : y;
+					yt = (y - y1) > 0.0 ? y : y1;
+					yb = (y - y1) > 0.0 ? y1 : y;
 				}
 				int topOutside = yt > ymax, bottomOutside = yb < ymin;
 				yt = topOutside ? ymax : yt;
 				yb = bottomOutside ? ymin : yb;
 				Graphics_line (g, x1 + horizontalOffset_wc, yb, x1 + horizontalOffset_wc, yt);
-				if (barWidth_wc > 0 && ! estimated) {
+				if (barWidth_wc > 0.0 && ! estimated) {
 					double xl = x1 - 0.5 * barWidth_wc + horizontalOffset_wc;
 					double xr = xl + barWidth_wc;
 					if (! topOutside) {
@@ -651,8 +649,8 @@ void DataModeler_drawTrack (DataModeler me, Graphics g, double xmin, double xmax
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
@@ -671,30 +669,30 @@ void DataModeler_speckle (DataModeler me, Graphics g, double xmin, double xmax,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-Table DataModeler_to_Table_zscores (DataModeler me, int useSigmaY) {
+autoTable DataModeler_to_Table_zscores (DataModeler me, int useSigmaY) {
 	try {
 		autoTable ztable = Table_createWithColumnNames (my numberOfDataPoints, U"x z");
 		autoNUMvector<double> zscores (1, my numberOfDataPoints);
 		DataModeler_getZScores (me, useSigmaY, zscores.peek());
 		for (long i = 1; i <= my numberOfDataPoints; i++) {
-			Table_setNumericValue (ztable.peek(), i, 1, my x[i]);
-			Table_setNumericValue (ztable.peek(), i, 2, zscores[i]);
+			Table_setNumericValue (ztable.get(), i, 1, my x[i]);
+			Table_setNumericValue (ztable.get(), i, 2, zscores[i]);
 		}
-		return ztable.transfer();
+		return ztable;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created.");
 	}	
 }
 
-void DataModeler_normalProbabilityPlot (DataModeler me, Graphics g, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, int garnish) {
+static void DataModeler_normalProbabilityPlot (DataModeler me, Graphics g, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, bool garnish) {
 	try {
 		autoTable thee = DataModeler_to_Table_zscores (me, useSigmaY);
-		Table_normalProbabilityPlot (thee.peek(), g, 2, numberOfQuantiles, numberOfSigmas, labelSize, label, garnish);
+		Table_normalProbabilityPlot (thee.get(), g, 2, numberOfQuantiles, numberOfSigmas, labelSize, label, garnish);
 	} catch (MelderError) {
 		// ignore
 	}
@@ -705,14 +703,15 @@ void DataModeler_setBasisFunctions (DataModeler me, int type) {
 		my f_evaluate = legendre_evaluate;
 		my f_evaluateBasisFunctions = legendre_evaluateBasisFunctions;
 	} else {
-		my f_evaluate = polynome_evaluate;
-		my f_evaluateBasisFunctions = polynome_evaluateBasisFunctions;
+		my f_evaluate = polynomial_evaluate;
+		my f_evaluateBasisFunctions = polynomial_evaluateBasisFunctions;
 	}
 	my type = type;
 }
 
-void  DataModeler_init (DataModeler me, double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type) {
-	my xmin = xmin; my xmax = xmax;
+void DataModeler_init (DataModeler me, double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type) {
+	my xmin = xmin;
+	my xmax = xmax;
 	DataModeler_setBasisFunctions (me, type);
 	my numberOfDataPoints = numberOfDataPoints;
 	my x = NUMvector<double> (1, numberOfDataPoints);
@@ -732,18 +731,18 @@ void  DataModeler_init (DataModeler me, double xmin, double xmax, long numberOfD
 	my parameterCovariances = Covariance_create (numberOfParameters);
 }
 
-DataModeler DataModeler_create (double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type) {
+autoDataModeler DataModeler_create (double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type) {
 	try {
 		autoDataModeler me = Thing_new (DataModeler);
-		DataModeler_init (me.peek(), xmin, xmax, numberOfDataPoints, numberOfParameters, type);
+		DataModeler_init (me.get(), xmin, xmax, numberOfDataPoints, numberOfParameters, type);
 		my xmin = xmin; my xmax = xmax;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"DataModeler not created.");
 	}
 }
 
-DataModeler DataModeler_createSimple (double xmin, double xmax, long numberOfDataPoints, char32 *parameters, double gaussianNoiseStd, int type) {
+autoDataModeler DataModeler_createSimple (double xmin, double xmax, long numberOfDataPoints, char32 *parameters, double gaussianNoiseStd, int type) {
 	try {
 		long numberOfParameters;
 		autoNUMvector<double> parameter (NUMstring_to_numbers (parameters, &numberOfParameters), 1);
@@ -760,12 +759,12 @@ DataModeler DataModeler_createSimple (double xmin, double xmax, long numberOfDat
 		// generate the data that belong to the parameter values
 		for (long i = 1; i <= numberOfDataPoints; i++) {
 			my x[i] = xmin + (i - 0.5) * (xmax - xmin) / numberOfDataPoints;
-			double modelY = my f_evaluate (me.peek(), my x[i], my parameter);
-			my y[i] = modelY + NUMrandomGauss (0, gaussianNoiseStd);
+			double modelY = my f_evaluate (me.get(), my x[i], my parameter);
+			my y[i] = modelY + NUMrandomGauss (0.0, gaussianNoiseStd);
 			my sigmaY[i] = NUMundefined;
 		}
 		my useSigmaY = DataModeler_DATA_WEIGH_EQUAL;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"No simple DataModeler created.");
 	}
@@ -787,7 +786,7 @@ void DataModeler_fit (DataModeler me)
 		// For function evaluation with only the FIXED parameters
 
 		for (long ipar = 1; ipar <= my numberOfParameters; ipar++) {
-			parameter[ipar] = my parameterStatus[ipar] == DataModeler_PARAMETER_FIXED ? my parameter[ipar] : 0;
+			parameter[ipar] = my parameterStatus[ipar] == DataModeler_PARAMETER_FIXED ? my parameter[ipar] : 0.0;
 		}
 
 		// estimate sigma if we weigh all datapoint equally. 
@@ -824,11 +823,11 @@ void DataModeler_fit (DataModeler me)
 		if (! NUMfpp) {
 			NUMmachar ();
 		}
-		SVD_zeroSmallSingularValues (thee.peek(), my tolerance > 0 ? my tolerance : numberOfDataPoints * NUMfpp -> eps);
-		SVD_solve (thee.peek(), b.peek(), parameter.peek()); // re-use parameter
+		SVD_zeroSmallSingularValues (thee.get(), my tolerance > 0.0 ? my tolerance : numberOfDataPoints * NUMfpp -> eps);
+		SVD_solve (thee.get(), b.peek(), parameter.peek()); // re-use parameter
 
 		// Put the calculated parameters at the correct position in 'my p'
-		Covariance cov = my parameterCovariances;
+		Covariance cov = my parameterCovariances.get();
 		long ipar = 0;
 		for (long j = 1; j <= my numberOfParameters; j++) {
 			if (my parameterStatus[j] != DataModeler_PARAMETER_FIXED) {
@@ -840,17 +839,18 @@ void DataModeler_fit (DataModeler me)
 		// estimate covariances between parameters
 		if (numberOfParameters < my numberOfParameters) {
 			autoNUMmatrix<double> covtmp (1, numberOfParameters, 1, numberOfParameters);
-			SVD_getSquared (thee.peek(), covtmp.peek(), true);
+			SVD_getSquared (thee.get(), covtmp.peek(), true);
 			// Set fixed parameters variances and covariances to zero.
 			for (long i = 1; i <= my numberOfParameters; i++) {
 				for (long j = i; j <= my numberOfParameters; j++) {
-					cov -> data[i][j] = cov -> data[j][i] = 0;
+					cov -> data[i][j] = cov -> data[j][i] = 0.0;
 				}
 			}
-			long ipar = 0, jpar;
+			ipar = 0;
 			for (long i = 1; i <= my numberOfParameters; i++) {
 				if (my parameterStatus[i] != DataModeler_PARAMETER_FIXED) {
-					jpar = 0; ipar++;
+					long jpar = 0;
+					ipar++;
 					for (long j = 1; j <= my numberOfParameters; j++) {
 						if (my parameterStatus[j] != DataModeler_PARAMETER_FIXED) {
 							jpar++;
@@ -860,7 +860,7 @@ void DataModeler_fit (DataModeler me)
 				}
 			}
 		} else {
-			SVD_getSquared (thee.peek(), cov -> data, true);
+			SVD_getSquared (thee.get(), cov -> data, true);
 		}
 	} catch (MelderError) {
 		Melder_throw (U"DataModeler no fit.");
@@ -874,16 +874,16 @@ void DataModeler_setDataWeighing (DataModeler me, int useSigmaY) {
 	}
 }
 
-Covariance DataModeler_to_Covariance_parameters (DataModeler me) {
+autoCovariance DataModeler_to_Covariance_parameters (DataModeler me) {
 	try {
-		autoCovariance cov = (Covariance) Data_copy (my parameterCovariances);
-		return cov.transfer();
+		autoCovariance cov = Data_copy (my parameterCovariances.get());
+		return cov;
 	} catch (MelderError) {
 		Melder_throw (U"Covariance not created.");
 	}
 }
 
-DataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolumn, long ycolumn, long scolumn, long numberOfParameters, int type) {
+autoDataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolumn, long ycolumn, long scolumn, long numberOfParameters, int type) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, xcolumn);
 		Table_checkSpecifiedColumnNumberWithinRange (me, ycolumn);
@@ -891,7 +891,7 @@ DataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolu
 		if (useSigmaY) {
 			Table_checkSpecifiedColumnNumberWithinRange (me, scolumn);
 		}
-		long numberOfRows = my rows -> size, numberOfData = 0;
+		long numberOfRows = my rows.size, numberOfData = 0;
 		autoNUMvector<double> x (1, numberOfRows), y (1, numberOfRows), sy (1, numberOfRows);
 		for (long i = 1; i <= numberOfRows; i++) {
 			double val = Table_getNumericValue_Assert (me, i, xcolumn);
@@ -940,9 +940,9 @@ DataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolu
 		if (validData < numberOfParameters) {
 			Melder_throw (U"The number of parameters must not exceed the number of data points.");
 		}
-		DataModeler_setDataWeighing (thee.peek(), DataModeler_DATA_WEIGH_SIGMA);
-		DataModeler_fit (thee.peek());
-		return thee.transfer();
+		DataModeler_setDataWeighing (thee.get(), DataModeler_DATA_WEIGH_SIGMA);
+		DataModeler_fit (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Datamodeler not created from Table.");
 	}
@@ -956,8 +956,8 @@ void structFormantModeler :: v_info () {
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
 	MelderInfo_writeLine (U"   Total duration: ", xmax - xmin, U" seconds");
-	for (long iformant = 1; iformant <= trackmodelers -> size; iformant++) {
-		DataModeler ffi = (DataModeler) trackmodelers -> item[iformant];
+	for (long iformant = 1; iformant <= trackmodelers.size; iformant ++) {
+		DataModeler ffi = trackmodelers.at [iformant];
 		MelderInfo_writeLine (U"Formant ", iformant);
 		ffi -> v_info();
 	}
@@ -965,7 +965,7 @@ void structFormantModeler :: v_info () {
 
 double DataModeler_getResidualSumOfSquares (DataModeler me, long *numberOfDataPoints) {
 	long n = 0;
-	double rss = 0;
+	double rss = 0.0;
 	for (long i = 1; i <= my numberOfDataPoints; i++) {
 		if (my dataPointStatus[i] != DataModeler_DATA_INVALID) {
 				++n;
@@ -989,7 +989,7 @@ double DataModeler_estimateSigmaY (DataModeler me) {
 			}
 		}
 		double variance;
-		NUMvector_avevar (y.peek(), numberOfDataPoints, NULL, &variance);
+		NUMvector_avevar (y.peek(), numberOfDataPoints, nullptr, &variance);
 		double sigma = NUMdefined (variance) ? sqrt (variance / (numberOfDataPoints - 1)) : NUMundefined;
 		return sigma;
 	} catch (MelderError) {
@@ -999,8 +999,8 @@ double DataModeler_estimateSigmaY (DataModeler me) {
 
 double FormantModeler_getStandardDeviation (FormantModeler me, long iformant) {
 	double sigma = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		sigma = DataModeler_estimateSigmaY (ff);
 	}
 	return sigma;
@@ -1008,40 +1008,40 @@ double FormantModeler_getStandardDeviation (FormantModeler me, long iformant) {
 
 double FormantModeler_getDataPointValue (FormantModeler me, long iformant, long index) {
 	double value = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		value = DataModeler_getDataPointValue (ff, index);
 	}
 	return value;
 }
 
 void FormantModeler_setDataPointValue (FormantModeler me, long iformant, long index, double value) {
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
  		DataModeler_setDataPointValue (ff, index, value);
 	}
 }
 
 double FormantModeler_getDataPointSigma (FormantModeler me, long iformant, long index) {
 	double sigma = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = (DataModeler) my trackmodelers.at [iformant];
 		sigma = DataModeler_getDataPointSigma (ff, index);
 	}
 	return sigma;
 }
 
 void FormantModeler_setDataPointSigma (FormantModeler me, long iformant, long index, double sigma) {
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
  		DataModeler_setDataPointSigma (ff, index, sigma);
 	}
 }
 
 int FormantModeler_getDataPointStatus (FormantModeler me, long iformant, long index) {
 	int value = DataModeler_DATA_INVALID;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		value = DataModeler_getDataPointStatus (ff, index);
 	}
 	return value;
@@ -1049,44 +1049,45 @@ int FormantModeler_getDataPointStatus (FormantModeler me, long iformant, long in
 
 void FormantModeler_setDataPointStatus (FormantModeler me, long iformant, long index, int status)
 {
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		DataModeler_setDataPointStatus (ff, index, status);
 	}
 }
 
-void FormantModeler_setDataPointValueAndStatus (FormantModeler me, long iformant, long index, double value, int dataStatus)
+static void FormantModeler_setDataPointValueAndStatus (FormantModeler me, long iformant, long index, double value, int dataStatus)
 {
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		DataModeler_setDataPointValueAndStatus (ff, index, value, dataStatus);
 	}
 }
 
 void FormantModeler_setParameterValueFixed (FormantModeler me, long iformant, long index, double value) {
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ffi = my trackmodelers.at [iformant];
 		DataModeler_setParameterValueFixed (ffi, index, value);
 	}
 }
 
 void FormantModeler_setParametersFree (FormantModeler me, long fromFormant, long toFormant, long fromIndex, long toIndex) {
-	long numberOfFormants = my trackmodelers -> size;
+	long numberOfFormants = my trackmodelers.size;
 	if (toFormant < fromFormant || (fromFormant == toFormant && fromFormant == 0)) {
-		fromFormant = 1; toFormant= numberOfFormants;
+		fromFormant = 1;
+		toFormant = numberOfFormants;
 	}
 	if (! (toFormant >= 1 && toFormant <= numberOfFormants && fromFormant >= 1 && fromFormant <= numberOfFormants &&
 		fromFormant <= toFormant)) {
 		Melder_throw (U"Formant number(s) must be in the interval [1, ", numberOfFormants, U"].");
 	}
-	for (long iformant = fromFormant; iformant <= toFormant; iformant++) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+	for (long iformant = fromFormant; iformant <= toFormant; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
 		DataModeler_setParametersFree (ffi, fromIndex, toIndex);
 	}
 }
 
 void FormantModeler_setDataWeighing (FormantModeler me, long fromFormant, long toFormant, int useSigmaY) {
-	long numberOfFormants = my trackmodelers -> size;
+	long numberOfFormants = my trackmodelers.size;
 	if (toFormant < fromFormant || (fromFormant == toFormant && fromFormant == 0)) {
 		fromFormant = 1; toFormant= numberOfFormants;
 	}
@@ -1095,53 +1096,55 @@ void FormantModeler_setDataWeighing (FormantModeler me, long fromFormant, long t
 		Melder_throw (U"Formant number(s) must be in the interval [1, ", numberOfFormants, U"].");
 	}
 	for (long iformant = fromFormant; iformant <= toFormant; iformant++) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+		DataModeler ffi = my trackmodelers.at [iformant];
 		DataModeler_setDataWeighing (ffi, useSigmaY);
 	}
 }
 
 void FormantModeler_fit (FormantModeler me) {
-	for (long iformant = 1; iformant <= my trackmodelers -> size; iformant++) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+	for (long iformant = 1; iformant <= my trackmodelers.size; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
 		DataModeler_fit (ffi);
 	}
 }
 
 void FormantModeler_drawBasisFunction (FormantModeler me, Graphics g, double tmin, double tmax, double fmin, double fmax,
- 	long iformant, long iterm, bool scaled, long numberOfPoints, int garnish) {
+ 	long iformant, long iterm, bool scaled, long numberOfPoints, bool garnish)
+{
 	if (tmax <= tmin) {
 		tmin = my xmin; tmax = my xmax; 
 	}
-	if (iformant < 1 || iformant > my trackmodelers -> size) {
+	if (iformant < 1 || iformant > my trackmodelers.size) {
 		return;
 	}
 	Graphics_setInner (g);
-	DataModeler ffi =  (DataModeler) my trackmodelers -> item[iformant];
+	DataModeler ffi = my trackmodelers.at [iformant];
 	DataModeler_drawBasisFunction_inside (ffi, g, tmin, tmax, fmin, fmax, iterm, scaled, numberOfPoints);
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_inqWindow (g, &tmin, &tmax, &fmin, &fmax);
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, (scaled ? U"Frequency (Hz)" : U"Amplitude"));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_markLeft (g, fmin, 1, 1, 0, U"");
-		Graphics_markLeft (g, fmax, 1, 1, 0, U"");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, (scaled ? U"Frequency (Hz)" : U"Amplitude"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_markLeft (g, fmin, true, true, false, U"");
+		Graphics_markLeft (g, fmax, true, true, false, U"");
 	}
 }
 
 static long FormantModeler_drawingSpecifiers_x (FormantModeler me, double *xmin, double *xmax, long *ixmin, long *ixmax) {
-	DataModeler fm = (DataModeler) my trackmodelers -> item[1];
+	Melder_assert (my trackmodelers.size > 0);
+	DataModeler fm = my trackmodelers.at [1];
 	return DataModeler_drawingSpecifiers_x (fm, xmin, xmax, ixmin, ixmax);
 }
 
-void FormantModeler_getCumulativeChiScores (FormantModeler me, int useSigmaY, double chisq[]) {
+static void FormantModeler_getCumulativeChiScores (FormantModeler me, int useSigmaY, double chisq[]) {
 	try {
 		long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
-		long numberOfFormants = my trackmodelers -> size;
+		long numberOfFormants = my trackmodelers.size;
 		autoNUMvector<double> zscores (1, numberOfDataPoints);
-		for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
-			DataModeler fm = (DataModeler) my trackmodelers -> item[iformant];
+		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
+			DataModeler fm = my trackmodelers.at [iformant];
 			DataModeler_getZScores (fm, useSigmaY, zscores.peek());
 			DataModeler_getChisqScoresFromZScores (fm, zscores.peek(), true, zscores.peek()); // undefined -> average
 			for (long i = 1; i <= numberOfDataPoints; i++) {
@@ -1153,8 +1156,62 @@ void FormantModeler_getCumulativeChiScores (FormantModeler me, int useSigmaY, do
 	}
 }
 
+static void FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (FormantModeler me, long iformant, long estimatedFormant, double var[]) {
+	long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
+	long numberOfFormants = my trackmodelers.size;
+	
+	if (iformant < 1 || iformant > numberOfFormants || estimatedFormant < 1 || estimatedFormant > numberOfFormants) {
+		return;
+	}
+	DataModeler fi = my trackmodelers.at [iformant];
+	DataModeler fe = my trackmodelers.at [estimatedFormant];
+	for (long i = 1; i <= numberOfDataPoints; i ++) {
+		var[i] = NUMundefined;
+		if (fi -> dataPointStatus[i] != DataModeler_DATA_INVALID) {
+			double ye = fe -> f_evaluate (fe, fe -> x[i], fe -> parameter);
+			double diff = ye - fi -> y[i];
+			var[i] = diff * diff;
+		}
+	}
+}
+
+static void FormantModeler_getSumOfVariancesBetweenShiftedAndEstimatedTracks (FormantModeler me, int shiftDirection, long *fromFormant, long *toFormant, double var[]) {
+	try {
+		long numberOfFormants = my trackmodelers.size;
+		if (*fromFormant < 1 || *fromFormant > numberOfFormants || *toFormant < 1 || *toFormant > numberOfFormants || *toFormant < *fromFormant) {
+			*toFormant = 1; *fromFormant = numberOfFormants;
+		}
+
+		long formantTrack = *fromFormant, estimatedFormantTrack = *fromFormant; // FormantModeler_NOSHIFT_TRACKS
+		if (shiftDirection == FormantModeler_DOWNSHIFT_TRACKS) {
+			estimatedFormantTrack = *fromFormant;
+			formantTrack = *fromFormant + 1;
+			*fromFormant = *fromFormant == 1 ? 2 : *fromFormant;
+		} else if (shiftDirection == FormantModeler_UPSHIFT_TRACKS) {
+			formantTrack = *fromFormant;
+			estimatedFormantTrack = *fromFormant + 1;
+			*toFormant = *toFormant == numberOfFormants ? numberOfFormants - 1 : *toFormant;
+		}
+		long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
+		autoNUMvector<double> vari (1, numberOfDataPoints);
+		for (long iformant = *fromFormant; iformant <= *toFormant; iformant++) {
+			FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (me, formantTrack, estimatedFormantTrack, vari.peek());
+			for (long i = 1; i <= numberOfDataPoints; i ++) {
+				if (NUMdefined (vari [i])) {
+					var [i] += vari [i];
+				}
+			}
+			formantTrack ++;
+			estimatedFormantTrack ++;
+		}
+	} catch (MelderError) {
+		Melder_throw (me, U" cannot get variances.");
+	}
+}
+
 void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g, double xmin, double xmax,
-	double ymin, double ymax, int shiftDirection, long fromFormant, long toFormant, int garnish) {
+	double ymin, double ymax, int shiftDirection, long fromFormant, long toFormant, bool garnish)
+{
 	try {
 		long ixmin, ixmax;
 		if (FormantModeler_drawingSpecifiers_x (me, &xmin, &xmax, &ixmin, &ixmax) < 1) {
@@ -1165,9 +1222,9 @@ void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g,
 		autoNUMvector<double> varShifted (1, numberOfDataPoints);
 		FormantModeler_getSumOfVariancesBetweenShiftedAndEstimatedTracks (me, shiftDirection, &fromFormant, &toFormant, varShifted.peek());
 		FormantModeler_getSumOfVariancesBetweenShiftedAndEstimatedTracks (me, 0, &fromFormant, &toFormant, var.peek());
-		for (long i = ixmin + 1; i <= ixmax; i++) {
-			if (NUMdefined (varShifted[i]) && NUMdefined (var[i])) {
-				var[i] -= varShifted[i];
+		for (long i = ixmin + 1; i <= ixmax; i ++) {
+			if (NUMdefined (varShifted [i]) && NUMdefined (var [i])) {
+				var [i] -= varShifted [i];
 			}
 		}
 		if (ymax <= ymin) {
@@ -1175,22 +1232,23 @@ void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g,
 		}
 		Graphics_setInner (g);
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
-		DataModeler thee = (DataModeler) my trackmodelers -> item[1];
-		while (! NUMdefined (var[ixmin]) && ixmin <= ixmax) {
+		DataModeler thee = my trackmodelers.at [1];
+		while (! NUMdefined (var [ixmin]) && ixmin <= ixmax) {
 			ixmin++;
 		}
-		double xp = thy x[ixmin], yp = var[ixmin];
-		for (long i = ixmin + 1; i <= ixmax; i++) {
-			if (NUMdefined (var[i])) {
-				Graphics_line (g, xp, yp, thy x[i], var[i]);
-				xp = thy x[i]; yp = var[i];
+		double xp = thy x [ixmin], yp = var [ixmin];
+		for (long i = ixmin + 1; i <= ixmax; i ++) {
+			if (NUMdefined (var [i])) {
+				Graphics_line (g, xp, yp, thy x [i], var [i]);
+				xp = thy x [i];
+				yp = var [i];
 			}
 		}
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksBottom (g, 2, 1, 1, 0);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksBottom (g, 2, true, true, false);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 
 	} catch (MelderError) {
@@ -1202,7 +1260,7 @@ void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g,
 void FormantModeler_drawCumulativeChiScores (FormantModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax, int useSigmaY, int garnish) {
 	try {
 		long ixmin, ixmax;
-		if (FormantModeler_drawingSpecifiers_x (me, &xmin, &xmax, &ixmin, &ixmax) < 1) {
+		if (FormantModeler_drawingSpecifiers_x (me, & xmin, & xmax, & ixmin, & ixmax) < 1) {
 			Melder_throw (me, U" not enough data points in drawing range.");
 		}
 		long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
@@ -1213,15 +1271,15 @@ void FormantModeler_drawCumulativeChiScores (FormantModeler me, Graphics g, doub
 		}
 		Graphics_setInner (g);
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
-		DataModeler thee = (DataModeler) my trackmodelers -> item[1];
-		for (long i = ixmin + 1; i <= ixmax; i++) {
-			Graphics_line (g, thy x[i-1], chisq[i-1], thy x[i], chisq[i]);
+		DataModeler thee = my trackmodelers.at [1];
+		for (long i = ixmin + 1; i <= ixmax; i ++) {
+			Graphics_line (g, thy x [i - 1], chisq [i - 1], thy x [i], chisq [i]);
 		}
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksBottom (g, 2, 1, 1, 0);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksBottom (g, 2, true, true, false);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		//
@@ -1232,7 +1290,7 @@ void FormantModeler_drawOutliersMarked (FormantModeler me, Graphics g, double tm
 	if (tmax <= tmin) { 
 		tmin = my xmin; tmax = my xmax; 
 	}
-	long maxTrack = my trackmodelers -> size;
+	long maxTrack = my trackmodelers.size;
 	if (toTrack == 0 && fromTrack == 0) {
 		fromTrack = 1; toTrack = maxTrack;
 	}
@@ -1242,34 +1300,34 @@ void FormantModeler_drawOutliersMarked (FormantModeler me, Graphics g, double tm
 	}
 	Graphics_setInner (g);
 	int currectFontSize = Graphics_inqFontSize (g);
-	for (long iformant = fromTrack; iformant <= toTrack; iformant++) {
-		DataModeler ffi =  (DataModeler) my trackmodelers -> item[iformant];
-		double xOffset_mm = (iformant % 2 == 1) ? horizontalOffset_mm : -horizontalOffset_mm;
+	for (long iformant = fromTrack; iformant <= toTrack; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
+		double xOffset_mm = ( iformant % 2 == 1 ? horizontalOffset_mm : -horizontalOffset_mm );
 		DataModeler_drawOutliersMarked_inside (ffi, g, tmin, tmax, 0, fmax, numberOfSigmas, useSigmaY, mark, marksFontSize, xOffset_mm);
 	}
 	Graphics_setFontSize (g, currectFontSize);
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Formant frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 1000.0, true, true, true);
 	}
 }
 
-void FormantModeler_normalProbabilityPlot (FormantModeler me, Graphics g, long iformant, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, int garnish) {
-	if (iformant > 0 || iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers ->item[iformant];
+void FormantModeler_normalProbabilityPlot (FormantModeler me, Graphics g, long iformant, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, bool garnish) {
+	if (iformant > 0 || iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		DataModeler_normalProbabilityPlot (ff, g, useSigmaY, numberOfQuantiles, numberOfSigmas, labelSize, label, garnish);
 	}
 }
 
-void FormantModeler_drawTracks_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
+static void FormantModeler_drawTracks_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
 	long fromTrack, long toTrack, int estimated, long numberOfParameters, double horizontalOffset_mm) {
-	for (long iformant = fromTrack; iformant <= toTrack; iformant++) {
-		DataModeler ffi =  (DataModeler) my trackmodelers -> item[iformant];
-		double xOffset_mm = (iformant % 2 == 1) ? horizontalOffset_mm : -horizontalOffset_mm;
+	for (long iformant = fromTrack; iformant <= toTrack; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
+		double xOffset_mm = ( iformant % 2 == 1 ? horizontalOffset_mm : -horizontalOffset_mm );
 		DataModeler_drawTrack_inside (ffi, g, xmin, xmax, 0, fmax, estimated, numberOfParameters, xOffset_mm);
 	}
 }
@@ -1279,7 +1337,7 @@ void FormantModeler_drawTracks (FormantModeler me, Graphics g, double tmin, doub
 	if (tmax <= tmin) { 
 		tmin = my xmin; tmax = my xmax; 
 	}
-	long maxTrack = my trackmodelers -> size;
+	long maxTrack = my trackmodelers.size;
 	if (toTrack == 0 && fromTrack == 0) {
 		fromTrack = 1; toTrack = maxTrack;
 	}
@@ -1292,18 +1350,18 @@ void FormantModeler_drawTracks (FormantModeler me, Graphics g, double tmin, doub
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Formant frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 1000.0, true, true, true);
 	}
 }
 
-void FormantModeler_speckle_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
+static void FormantModeler_speckle_inside (FormantModeler me, Graphics g, double xmin, double xmax, double fmax,
 	long fromTrack, long toTrack, int estimated, long numberOfParameters, int errorBars, double barWidth_mm, double horizontalOffset_mm) {
-	for (long iformant = fromTrack; iformant <= toTrack; iformant++) {
-		DataModeler ffi =  (DataModeler) my trackmodelers -> item[iformant];
-		double xOffset_mm = (iformant % 2 == 1) ? horizontalOffset_mm : -horizontalOffset_mm;
+	for (long iformant = fromTrack; iformant <= toTrack; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
+		double xOffset_mm = ( iformant % 2 == 1 ? horizontalOffset_mm : -horizontalOffset_mm );
 		DataModeler_speckle_inside (ffi, g, xmin, xmax, 0, fmax, estimated, numberOfParameters, errorBars, barWidth_mm, xOffset_mm);
 	}
 }
@@ -1313,7 +1371,7 @@ void FormantModeler_speckle (FormantModeler me, Graphics g, double tmin, double
 	if (tmax <= tmin) { 
 		tmin = my xmin; tmax = my xmax; 
 	}
-	long maxTrack = my trackmodelers -> size;
+	long maxTrack = my trackmodelers.size;
 	if (toTrack == 0 && fromTrack == 0) {
 		fromTrack = 1; toTrack = maxTrack;
 	}
@@ -1326,23 +1384,22 @@ void FormantModeler_speckle (FormantModeler me, Graphics g, double tmin, double
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Formant frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 1000.0, true, true, true);
 	}
 }
 
-FormantModeler FormantModeler_create (double tmin, double tmax, long numberOfFormants, long numberOfDataPoints, long numberOfParameters) {
+autoFormantModeler FormantModeler_create (double tmin, double tmax, long numberOfFormants, long numberOfDataPoints, long numberOfParameters) {
 	try {
 		autoFormantModeler me = Thing_new (FormantModeler);
 		my xmin = tmin; my xmax = tmax;
-		my trackmodelers = Ordered_create ();
-		for (long itrack = 1; itrack <= numberOfFormants; itrack++) {
+		for (long itrack = 1; itrack <= numberOfFormants; itrack ++) {
 			autoDataModeler ff = DataModeler_create (tmin, tmax, numberOfDataPoints, numberOfParameters,  DataModeler_TYPE_LEGENDRE);
-			Collection_addItem (my trackmodelers, ff.transfer());
+			my trackmodelers. addItem_move (ff.move());
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FormantModeler not created.");
 	}
@@ -1350,51 +1407,40 @@ FormantModeler FormantModeler_create (double tmin, double tmax, long numberOfFor
 
 double FormantModeler_getModelValueAtTime (FormantModeler me, long iformant, double time) {
 	double f = NUMundefined;
-	if (iformant >= 1 && iformant <= my trackmodelers -> size) {
-		DataModeler thee =  (DataModeler) my trackmodelers -> item[iformant];
-		f =  DataModeler_getModelValueAtX (thee, time);
+	if (iformant >= 1 && iformant <= my trackmodelers.size) {
+		DataModeler thee = my trackmodelers.at [iformant];
+		f = DataModeler_getModelValueAtX (thee, time);
 	}
 	return f;
 }
 
 double FormantModeler_getModelValueAtIndex (FormantModeler me, long iformant, long index) {
 	double f = NUMundefined;
-	if (iformant >= 1 && iformant <= my trackmodelers -> size) {
-		DataModeler thee =  (DataModeler) my trackmodelers -> item[iformant];
-		f =  DataModeler_getModelValueAtIndex (thee, index);
+	if (iformant >= 1 && iformant <= my trackmodelers.size) {
+		DataModeler thee = my trackmodelers.at [iformant];
+		f = DataModeler_getModelValueAtIndex (thee, index);
 	}
 	return f;
 }
 
 double FormantModeler_getWeightedMean (FormantModeler me, long iformant) {
 	double f = NUMundefined;
-	if (iformant >= 1 && iformant <= my trackmodelers -> size) {
-		DataModeler thee =  (DataModeler) my trackmodelers -> item[iformant];
-		f =  DataModeler_getWeightedMean (thee);
+	if (iformant >= 1 && iformant <= my trackmodelers.size) {
+		DataModeler thee = my trackmodelers.at [iformant];
+		f = DataModeler_getWeightedMean (thee);
 	}
 	return f;
 	
 }
 
-long FormantModeler_getMaximumNumberOfParameters (FormantModeler me) {
-	long maxnum = 1;
-	for (long i = 1; i <= my trackmodelers -> size; i++) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[i];
-		if (ffi -> numberOfParameters > maxnum) {
-			maxnum = ffi -> numberOfParameters;
-		}
-	}
-	return maxnum;
-}
-
 long FormantModeler_getNumberOfTracks (FormantModeler me) {
-	return my trackmodelers -> size;
+	return my trackmodelers.size;
 }
 
 long FormantModeler_getNumberOfParameters (FormantModeler me, long iformant) {
 	long numberOfParameters = 0;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		numberOfParameters = ff -> numberOfParameters;
 	}
 	return numberOfParameters;
@@ -1402,8 +1448,8 @@ long FormantModeler_getNumberOfParameters (FormantModeler me, long iformant) {
 
 long FormantModeler_getNumberOfFixedParameters (FormantModeler me, long iformant) {
 	long numberOfParameters = 0;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		numberOfParameters = ff -> numberOfParameters;
 		numberOfParameters -= DataModeler_getNumberOfFreeParameters (ff);
 	}
@@ -1413,8 +1459,8 @@ long FormantModeler_getNumberOfFixedParameters (FormantModeler me, long iformant
 
 long FormantModeler_getNumberOfInvalidDataPoints (FormantModeler me, long iformant) {
 	long numberOfInvalidDataPoints = 0;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		numberOfInvalidDataPoints = DataModeler_getNumberOfInvalidDataPoints (ff);
 	}
 	return numberOfInvalidDataPoints;
@@ -1422,8 +1468,8 @@ long FormantModeler_getNumberOfInvalidDataPoints (FormantModeler me, long iforma
 
 double FormantModeler_getParameterValue (FormantModeler me, long iformant, long iparameter) {
 	double value = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		value = DataModeler_getParameterValue (ff, iparameter);
 	}
 	return value;
@@ -1431,8 +1477,8 @@ double FormantModeler_getParameterValue (FormantModeler me, long iformant, long
 
 int FormantModeler_getParameterStatus (FormantModeler me, long iformant, long index) {
 	int status = DataModeler_PARAMETER_UNDEFINED;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		status = DataModeler_getParameterStatus (ff, index);
 	}
 	return status;
@@ -1440,17 +1486,17 @@ int FormantModeler_getParameterStatus (FormantModeler me, long iformant, long in
 
 double FormantModeler_getParameterStandardDeviation ( FormantModeler me, long iformant, long index) {
 	double stdev = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		stdev = DataModeler_getParameterStandardDeviation (ff, index);
 	}
 	return stdev;
 }
 
 double FormantModeler_getDegreesOfFreedom (FormantModeler me, long iformant) {
-	double dof = 0;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+	double dof = 0.0;
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
 		dof = DataModeler_getDegreesOfFreedom (ff);
 	}
 	return dof;
@@ -1458,78 +1504,79 @@ double FormantModeler_getDegreesOfFreedom (FormantModeler me, long iformant) {
 
 double FormantModeler_getVarianceOfParameters (FormantModeler me, long fromFormant, long toFormant, long fromIndex, long toIndex, long *numberOfFreeParameters) {
 	double variance = NUMundefined;
-	long numberOfFormants = my trackmodelers -> size, numberOfParameters = 0, nofp;
+	long numberOfFormants = my trackmodelers.size, numberOfParameters = 0, nofp;
 	if (toFormant < fromFormant || (toFormant == 0 && fromFormant == 0)) {
 		fromFormant = 1; toFormant = numberOfFormants;
 	}
 	if (fromFormant <= toFormant && fromFormant > 0 && toFormant <= numberOfFormants) {
-		variance = 0;
-		for (long iformant = fromFormant; iformant <= toFormant; iformant++) {
-			DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
+		variance = 0.0;
+		for (long iformant = fromFormant; iformant <= toFormant; iformant ++) {
+			DataModeler ff = my trackmodelers.at [iformant];
 			variance += DataModeler_getVarianceOfParameters (ff, fromIndex, toIndex, &nofp);
 			numberOfParameters += nofp;
 		}
 	}
-	if (numberOfFreeParameters != NULL) {
+	if (numberOfFreeParameters) {
 		*numberOfFreeParameters = numberOfParameters;
 	}
 	return variance;
 }
 
 long FormantModeler_getNumberOfDataPoints (FormantModeler me) {
-	DataModeler thee = (DataModeler) my trackmodelers -> item[1];
+	Melder_assert (my trackmodelers.size > 0);
+	DataModeler thee = my trackmodelers.at [1];
 	// all tracks have the same number of data points
 	return thy numberOfDataPoints;
 }
 
-Table FormantModeler_to_Table_zscores (FormantModeler me, int useSigmaY) {
+autoTable FormantModeler_to_Table_zscores (FormantModeler me, int useSigmaY) {
 	try {
-		long icolt = 1, numberOfFormants = my trackmodelers -> size;
+		long icolt = 1, numberOfFormants = my trackmodelers.size;
 		long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
 		autoNUMvector<double> zscores (1, numberOfDataPoints);
 		autoTable ztable = Table_createWithoutColumnNames (numberOfDataPoints, numberOfFormants + 1);
-		Table_setColumnLabel (ztable.peek(), icolt, U"time");
-		for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
+		Table_setColumnLabel (ztable.get(), icolt, U"time");
+		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
 			long icolz = iformant + 1;
-			Table_setColumnLabel (ztable.peek(), icolz, Melder_cat (U"z", iformant));
-			DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+			Table_setColumnLabel (ztable.get(), icolz, Melder_cat (U"z", iformant));
+			DataModeler ffi = my trackmodelers.at [iformant];
 			if (iformant == 1) {
-				for (long i = 1; i <= numberOfDataPoints; i++) { // only once all tracks have same x-values
-				Table_setNumericValue (ztable.peek(), i, icolt, ffi -> x[i]);
+				for (long i = 1; i <= numberOfDataPoints; i ++) { // only once all tracks have same x-values
+				Table_setNumericValue (ztable.get(), i, icolt, ffi -> x [i]);
 				}
 			}
 			DataModeler_getZScores (ffi, useSigmaY, zscores.peek());
-			for (long i = 1; i <= numberOfDataPoints; i++) {
-				Table_setNumericValue (ztable.peek(), i, icolz, zscores[i]);
+			for (long i = 1; i <= numberOfDataPoints; i ++) {
+				Table_setNumericValue (ztable.get(), i, icolz, zscores[i]);
 			}
 		}
-		return ztable.transfer();
+		return ztable;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created.");
 	}	
 }
 
-DataModeler FormantModeler_extractDataModeler (FormantModeler me, long iformant) {
+autoDataModeler FormantModeler_extractDataModeler (FormantModeler me, long iformant) {
 	try {
-		if (! (iformant > 0 && iformant <= my trackmodelers -> size)) {
+		if (iformant < 1 || iformant > my trackmodelers.size) {
 			Melder_throw (U"");
 		}
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
-		autoDataModeler thee = (DataModeler) Data_copy (ff);
-		return thee.transfer();
+		DataModeler ff = my trackmodelers.at [iformant];
+		autoDataModeler thee = Data_copy (ff);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"DataModeler not created.");
 	}	
 }
 
-Covariance FormantModeler_to_Covariance_parameters (FormantModeler me, long iformant) {
+autoCovariance FormantModeler_to_Covariance_parameters (FormantModeler me, long iformant) {
 	try {
-		if (iformant < 1 || iformant > my trackmodelers -> size) {
-			Melder_throw (U"The formant should be greater than zero and smaller than or equal to ", my trackmodelers -> size);
+		if (iformant < 1 || iformant > my trackmodelers.size) {
+			Melder_throw (U"The formant should be greater than zero and smaller than or equal to ", my trackmodelers.size);
 		}
-		DataModeler thee = (DataModeler) my trackmodelers -> item[iformant];
-		autoCovariance cov = (Covariance) Data_copy (thy parameterCovariances);
-		return cov.transfer();
+		DataModeler thee = my trackmodelers.at [iformant];
+		autoCovariance cov = Data_copy (thy parameterCovariances.get());
+		return cov;
 	} catch (MelderError) {
 		Melder_throw (U"Covariance not created.");
 	}
@@ -1537,18 +1584,19 @@ Covariance FormantModeler_to_Covariance_parameters (FormantModeler me, long ifor
 }
 
 void FormantModeler_setTolerance (FormantModeler me, double tolerance) {
-	for (long iformant = 1; iformant <= my trackmodelers -> size; iformant++) {
-		DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+	for (long iformant = 1; iformant <= my trackmodelers.size; iformant ++) {
+		DataModeler ffi = my trackmodelers.at [iformant];
 		DataModeler_setTolerance (ffi, tolerance);
 	}
 }
 
 double FormantModeler_indexToTime (FormantModeler me, long index) {
-	DataModeler thee = (DataModeler) my trackmodelers -> item[1];
+	Melder_assert (my trackmodelers.size > 0);
+	DataModeler thee = my trackmodelers.at [1];
 	return index > 0 && index <= thy numberOfDataPoints ? thy x[index] : NUMundefined;
 }
 
-FormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax, long numberOfFormants, long numberOfParametersPerTrack, int bandwidthEstimatesSigma) {
+autoFormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax, long numberOfFormants, long numberOfParametersPerTrack, int bandwidthEstimatesSigma) {
 	try {
 		long ifmin, ifmax, posInCollection = 0;
 		if (tmax <= tmin) {
@@ -1559,21 +1607,21 @@ FormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax,
 			Melder_throw (U"Not enought data points, extend the selection.");
 		}
 		autoFormantModeler thee = FormantModeler_create (tmin, tmax, numberOfFormants, numberOfDataPoints, numberOfParametersPerTrack);
-		for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
-			posInCollection++;
-			DataModeler ffi = (DataModeler) thy trackmodelers -> item[posInCollection];
+		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
+			posInCollection ++;
+			DataModeler ffi = thy trackmodelers.at [posInCollection];
 			long idata = 0, validData = 0;
-			for (long iframe = ifmin; iframe <= ifmax; iframe++) {
-				Formant_Frame curFrame = & my d_frames[iframe];
-				ffi -> x[++idata] = Sampled_indexToX (me, iframe);
-				ffi -> dataPointStatus[idata] = DataModeler_DATA_INVALID;
+			for (long iframe = ifmin; iframe <= ifmax; iframe ++) {
+				Formant_Frame curFrame = & my d_frames [iframe];
+				ffi -> x [++ idata] = Sampled_indexToX (me, iframe);
+				ffi -> dataPointStatus [idata] = DataModeler_DATA_INVALID;
 				if (iformant <= curFrame -> nFormants) {
-					double frequency = curFrame -> formant[iformant].frequency;
+					double frequency = curFrame -> formant [iformant]. frequency;
 					if (NUMdefined (frequency)) {
-						double bw = curFrame -> formant[iformant].bandwidth;
-						ffi -> y[idata] = curFrame -> formant[iformant].frequency;
-						ffi -> sigmaY[idata] = bw;
-						ffi -> dataPointStatus[idata] = DataModeler_DATA_VALID;
+						double bw = curFrame -> formant [iformant]. bandwidth;
+						ffi -> y [idata] = curFrame -> formant [iformant]. frequency;
+						ffi -> sigmaY [idata] = bw;
+						ffi -> dataPointStatus [idata] = DataModeler_DATA_VALID;
 						validData++;
 					}
 				}
@@ -1582,82 +1630,83 @@ FormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax,
 			ffi -> numberOfDataPoints = idata;
 			ffi -> tolerance = 1e-5;
 			if (validData < numberOfParametersPerTrack) { // remove don't throw exception
-				Collection_removeItem (thy trackmodelers, posInCollection);
-				posInCollection--;
+				thy trackmodelers. removeItem (posInCollection);
+				posInCollection --;
 			}
 		}
 		if (posInCollection == 0) {
 			Melder_throw (U"Not enought data points in all the formants!");
 		}
-		FormantModeler_fit (thee.peek());
-		return thee.transfer();
+		FormantModeler_fit (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"FormantModeler not created.");
 	}
 }
 
-Formant FormantModeler_to_Formant (FormantModeler me, int useEstimates, int estimateUndefineds) {
+autoFormant FormantModeler_to_Formant (FormantModeler me, int useEstimates, int estimateUndefineds) {
 	try {
-		long numberOfFormants = my trackmodelers -> size;
-		DataModeler ff = (DataModeler) my trackmodelers -> item[1];
+		long numberOfFormants = my trackmodelers.size;
+		DataModeler ff = my trackmodelers.at [1];
 		long numberOfFrames = ff -> numberOfDataPoints;
-		double t1 = ff -> x[1], dt = ff -> x[2] -ff -> x[1];
+		double t1 = ff -> x [1], dt = ff -> x [2] - t1;
 		autoFormant thee = Formant_create (my xmin, my xmax, numberOfFrames, dt, t1, numberOfFormants);
 		autoNUMvector<double> sigma (1, numberOfFormants);
 		if (useEstimates || estimateUndefineds) {
-			for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
+			for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
 				sigma[iformant] = FormantModeler_getStandardDeviation (me, iformant);
 			}
 		}
-		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
+		for (long iframe = 1; iframe <= numberOfFrames; iframe ++) {
 			Formant_Frame thyFrame = & thy d_frames [iframe];
-			thyFrame -> intensity = 1; //???
+			thyFrame -> intensity = 1.0; //???
 			thyFrame -> formant = NUMvector <structFormant_Formant> (1, numberOfFormants);
 			
-			for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
-				DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+			for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
+				DataModeler ffi = my trackmodelers.at [iformant];
 				double f = NUMundefined, b = f;
 				if (ffi -> dataPointStatus[iframe] != DataModeler_DATA_INVALID) {
-					f = useEstimates ? DataModeler_getModelValueAtX (ffi, ffi -> x[iframe]) : ffi -> y[iframe];
+					f = ( useEstimates ? DataModeler_getModelValueAtX (ffi, ffi -> x [iframe]) : ffi -> y [iframe]);
 					b = ff -> sigmaY[iframe]; // copy original value
 				} else {
 					if (estimateUndefineds) {
-						f = FormantModeler_getModelValueAtTime (me, iformant, ffi -> x[iframe]);
-						b = sigma[iformant];
+						f = FormantModeler_getModelValueAtTime (me, iformant, ffi -> x [iframe]);
+						b = sigma [iformant];
 					}
 				}
-				thyFrame -> formant[iformant].frequency = f;
-				thyFrame -> formant[iformant].bandwidth = b;
+				thyFrame -> formant [iformant]. frequency = f;
+				thyFrame -> formant [iformant]. bandwidth = b;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Cannot create Formant from FormantModeler.");
 	}
 }
 
 double FormantModeler_getChiSquaredQ (FormantModeler me, long fromFormant, long toFormant, int useSigmaY, double *probability, double *ndf) {
-	double chisq = NUMundefined, ndfTotal = 0;
+	double chisq = NUMundefined, ndfTotal = 0.0;
 	if (toFormant < fromFormant || (fromFormant == 0 && toFormant == 0)) {
-		fromFormant = 1; toFormant = my trackmodelers -> size;
+		fromFormant = 1; toFormant = my trackmodelers.size;
 	}
-	if (fromFormant >= 1 && toFormant <= my trackmodelers -> size) {
-		chisq = 0;
+	if (fromFormant >= 1 && toFormant <= my trackmodelers.size) {
+		chisq = 0.0;
 		long numberOfDefined = 0;
-		for (long iformant= fromFormant; iformant <= toFormant; iformant++) {
-			DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+		for (long iformant= fromFormant; iformant <= toFormant; iformant ++) {
+			DataModeler ffi = my trackmodelers.at [iformant];
 			double p, df, chisqi = DataModeler_getChiSquaredQ (ffi, useSigmaY, &p, &df);
 			if (NUMdefined (chisqi)) {
 				chisq += df * chisqi;
-				ndfTotal += df; numberOfDefined++;
+				ndfTotal += df;
+				numberOfDefined ++;
 			}
 		}
 		if (numberOfDefined == toFormant - fromFormant + 1) { // chisq of all tracks defined
 			chisq /= ndfTotal;
-			if (ndf != NULL) {
+			if (ndf) {
 				*ndf = ndfTotal;
 			}
-			if (probability != NULL) {
+			if (probability) {
 				*probability = NUMchiSquareQ (chisq, ndfTotal);
 			}
 		}
@@ -1668,96 +1717,49 @@ double FormantModeler_getChiSquaredQ (FormantModeler me, long fromFormant, long
 double FormantModeler_getCoefficientOfDetermination (FormantModeler me, long fromFormant, long toFormant) {
 	double rSquared = NUMundefined;
 	if (fromFormant == 0 && toFormant == 0) {
-		fromFormant = 1; toFormant = my trackmodelers -> size;
+		fromFormant = 1; toFormant = my trackmodelers.size;
 	}
-	if (fromFormant >= 1 && toFormant <= my trackmodelers -> size) {
-		double ssreg = 0, sstot = 0, ssregi, sstoti;
-		for (long iformant= fromFormant; iformant <= toFormant; iformant++) {
-			DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
-			DataModeler_getCoefficientOfDetermination (ffi, &ssregi, &sstoti);
-			sstot += sstoti; ssreg += ssregi;
+	if (fromFormant >= 1 && toFormant <= my trackmodelers.size) {
+		double ssreg = 0.0, sstot = 0.0;
+		for (long iformant= fromFormant; iformant <= toFormant; iformant ++) {
+			DataModeler ffi = my trackmodelers.at [iformant];
+			double ssregi, sstoti;
+			DataModeler_getCoefficientOfDetermination (ffi, & ssregi, & sstoti);
+			sstot += sstoti;
+			ssreg += ssregi;
 		}
-		rSquared = sstot > 0 ? ssreg / sstot : 1;
+		rSquared = ( sstot > 0.0 ? ssreg / sstot : 1.0 );
 	}
 	return rSquared;
 }
 
-double FormantModeler_getResidualSumOfSquares (FormantModeler me, long iformant, long *numberOfDataPoints) {
-	double rss = NUMundefined;
-	if (iformant > 0 && iformant <= my trackmodelers -> size) {
-		DataModeler ff = (DataModeler) my trackmodelers -> item[iformant];
-		rss = DataModeler_getResidualSumOfSquares (ff, numberOfDataPoints);
+double FormantModeler_getResidualSumOfSquares (FormantModeler me, long iformant, long *p_numberOfDataPoints) {
+	double rss = NUMundefined; long numberOfDataPoints = -1;
+	if (iformant > 0 && iformant <= my trackmodelers.size) {
+		DataModeler ff = my trackmodelers.at [iformant];
+		rss = DataModeler_getResidualSumOfSquares (ff, & numberOfDataPoints);
+	}
+	if (p_numberOfDataPoints) {
+		*p_numberOfDataPoints = numberOfDataPoints;
 	}
 	return rss;
 }
 
 void FormantModeler_setParameterValuesToZero (FormantModeler me, long fromFormant, long toFormant, double numberOfSigmas) {
 	if (fromFormant == 0 && toFormant == 0) {
-		fromFormant = 1; toFormant = my trackmodelers -> size;
+		fromFormant = 1; toFormant = my trackmodelers.size;
 	}
-	if (fromFormant >= 1 && toFormant <= my trackmodelers -> size) {
-		for (long iformant= fromFormant; iformant <= toFormant; iformant++) {
-			DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+	if (fromFormant >= 1 && toFormant <= my trackmodelers.size) {
+		for (long iformant= fromFormant; iformant <= toFormant; iformant ++) {
+			DataModeler ffi = my trackmodelers.at [iformant];
 			DataModeler_setParameterValuesToZero (ffi, numberOfSigmas);
 		}
 	}
 }
 
-void FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (FormantModeler me, long iformant, long estimatedFormant, double var[]) {
-	long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
-	long numberOfFormants = my trackmodelers -> size;
-	
-	if (iformant < 1 || iformant > numberOfFormants || estimatedFormant < 1 || estimatedFormant > numberOfFormants) {
-		return;
-	}
-	DataModeler fi = (DataModeler) my trackmodelers -> item[iformant];
-	DataModeler fe = (DataModeler) my trackmodelers -> item[estimatedFormant];
-	for (long i = 1; i <= numberOfDataPoints; i++) {
-		var[i] = NUMundefined;
-		if (fi -> dataPointStatus[i] != DataModeler_DATA_INVALID) {
-			double ye = fe -> f_evaluate (fe, fe -> x[i], fe -> parameter);
-			double diff = ye - fi -> y[i];
-			var[i] = diff * diff;
-		}
-	}
-}
-
-void FormantModeler_getSumOfVariancesBetweenShiftedAndEstimatedTracks (FormantModeler me, int shiftDirection, long *fromFormant, long *toFormant, double var[]) {
+autoFormantModeler FormantModeler_processOutliers (FormantModeler me, double numberOfSigmas, int useSigmaY) {
 	try {
-		long numberOfFormants = my trackmodelers -> size;
-		if (*fromFormant < 1 || *fromFormant > numberOfFormants || *toFormant < 1 || *toFormant > numberOfFormants || *toFormant < *fromFormant) {
-			*toFormant = 1; *fromFormant = numberOfFormants;
-		}
-
-		long formantTrack = *fromFormant, estimatedFormantTrack = *fromFormant; // FormantModeler_NOSHIFT_TRACKS
-		if (shiftDirection == FormantModeler_DOWNSHIFT_TRACKS) {
-			estimatedFormantTrack = *fromFormant;
-			formantTrack = *fromFormant + 1;
-			*fromFormant = *fromFormant == 1 ? 2 : *fromFormant;
-		} else if (shiftDirection == FormantModeler_UPSHIFT_TRACKS) {
-			formantTrack = *fromFormant;
-			estimatedFormantTrack = *fromFormant + 1;
-			*toFormant = *toFormant == numberOfFormants ? numberOfFormants - 1 : *toFormant;
-		}
-		long numberOfDataPoints = FormantModeler_getNumberOfDataPoints (me);
-		autoNUMvector<double> vari (1, numberOfDataPoints);
-		for (long iformant = *fromFormant; iformant <= *toFormant; iformant++) {
-			FormantModeler_getVariancesBetweenTrackAndEstimatedTrack (me, formantTrack, estimatedFormantTrack, vari.peek());
-			for (long i = 1; i <= numberOfDataPoints; i++) {
-				if (NUMdefined (vari[i])) {
-					var[i] += vari[i];
-				}
-			}
-			formantTrack++; estimatedFormantTrack++;
-		}
-	} catch (MelderError) {
-		Melder_throw (me, U" cannot get variances.");
-	}
-}
-
-FormantModeler FormantModeler_processOutliers (FormantModeler me, double numberOfSigmas, int useSigmaY) {
-	try {
-		long numberOfFormants = my trackmodelers -> size;
+		long numberOfFormants = my trackmodelers.size;
 		if (numberOfFormants < 3) {
 			Melder_throw (U"We need at least three formants to process outliers.");
 		}
@@ -1767,15 +1769,15 @@ FormantModeler FormantModeler_processOutliers (FormantModeler me, double numberO
 		// maybe some of the formants had NUMundefind's.
 
 		// 1. calculate z-scores for each formant and sort them in descending order
-		DataModeler ff = (DataModeler) my trackmodelers -> item[1];
+		DataModeler ff = my trackmodelers.at [1];
 		NUMvector_copyElements<double> (ff -> x, x.peek(), 1, numberOfDataPoints);
-		for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
-			DataModeler ffi = (DataModeler) my trackmodelers -> item[iformant];
+		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
+			DataModeler ffi = my trackmodelers.at [iformant];
 			DataModeler_getZScores (ffi, useSigmaY, z[iformant]);
 		}
 		// 2. Do the manipulation in a copy
-		autoFormantModeler thee = (FormantModeler) Data_copy (me);
-		for (long i = 1; i <= numberOfDataPoints; i++) {
+		autoFormantModeler thee = Data_copy (me);
+		for (long i = 1; i <= numberOfDataPoints; i ++) {
 			// First the easy one: first formant missing: F1' = F2; F2' = F3
 			if (NUMdefined (z[1][i]) && NUMdefined (z[1][i]) && NUMdefined (z[3][i])) {
 				if (z[1][i] > numberOfSigmas && z[2][i] > numberOfSigmas && z[3][i] > numberOfSigmas) {
@@ -1784,14 +1786,14 @@ FormantModeler FormantModeler_processOutliers (FormantModeler me, double numberO
 					// try if f2 <- F1 and f3 <- F2 reduces chisq
 					double f2 = FormantModeler_getDataPointValue (me, 1, i); // F1
 					double f3 = FormantModeler_getDataPointValue (me, 2, i); // F2
-					FormantModeler_setDataPointStatus (thee.peek(), 1, i, DataModeler_DATA_INVALID);
-					FormantModeler_setDataPointValueAndStatus (thee.peek(), 2, i, f2, FormantModeler_UPSHIFT_TRACKS);
-					FormantModeler_setDataPointValueAndStatus (thee.peek(), 3, i, f3, FormantModeler_UPSHIFT_TRACKS);
+					FormantModeler_setDataPointStatus (thee.get(), 1, i, DataModeler_DATA_INVALID);
+					FormantModeler_setDataPointValueAndStatus (thee.get(), 2, i, f2, FormantModeler_UPSHIFT_TRACKS);
+					FormantModeler_setDataPointValueAndStatus (thee.get(), 3, i, f3, FormantModeler_UPSHIFT_TRACKS);
 				}
 			}
 		}
-		FormantModeler_fit (thee.peek());
-		return thee.transfer();
+		FormantModeler_fit (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Cannot calculate track discontinuities");
 	}
@@ -1800,12 +1802,12 @@ FormantModeler FormantModeler_processOutliers (FormantModeler me, double numberO
 double FormantModeler_getSmoothnessValue (FormantModeler me, long fromFormant, long toFormant, long numberOfParametersPerTrack, double power) {
 	double smoothness = NUMundefined;
 	if (toFormant < fromFormant || (toFormant == 0 && fromFormant == 0)) {
-		fromFormant = 1; toFormant = my trackmodelers -> size;
+		fromFormant = 1; toFormant = my trackmodelers. size;
 	}
-	if (fromFormant > 0 && fromFormant <= toFormant && toFormant <= my trackmodelers -> size) {
+	if (fromFormant > 0 && fromFormant <= toFormant && toFormant <= my trackmodelers. size) {
 		long nofp;
 		double ndof, var = FormantModeler_getVarianceOfParameters (me, fromFormant, toFormant, 1, numberOfParametersPerTrack, &nofp);
-		double chisq = FormantModeler_getChiSquaredQ (me, fromFormant, toFormant, TRUE, NULL, &ndof);
+		double chisq = FormantModeler_getChiSquaredQ (me, fromFormant, toFormant, true, nullptr, &ndof);
 		if (NUMdefined (var) && NUMdefined (chisq) && nofp > 0) {
 			smoothness = log10 (pow (var / nofp, power) * (chisq / ndof));
 		}
@@ -1818,12 +1820,13 @@ double FormantModeler_getAverageDistanceBetweenTracks (FormantModeler me, long t
 	if (track1 == track2) {
 		return 0;
 	}
-	if (track1 <= my trackmodelers -> size && track2 <= my trackmodelers -> size) {
-		DataModeler fi = (DataModeler) my trackmodelers -> item[track1];
-		DataModeler fj = (DataModeler) my trackmodelers -> item[track2];
+	if (track1 <= my trackmodelers. size && track2 <= my trackmodelers.size) {
+		DataModeler fi = my trackmodelers.at [track1];
+		DataModeler fj = my trackmodelers.at [track2];
 		// fi and fj have equal number of data points
-		long numberOfDataPoints = 0; diff = 0;
-		for (long i = 1; i <= fi -> numberOfDataPoints; i++) {
+		long numberOfDataPoints = 0;
+		diff = 0.0;
+		for (long i = 1; i <= fi -> numberOfDataPoints; i ++) {
 			if (type != 0) {
 				double fie = fi -> f_evaluate (fi, fi -> x[i], fi -> parameter);
 				double fje = fj -> f_evaluate (fj, fj -> x[i], fj -> parameter);
@@ -1841,17 +1844,17 @@ double FormantModeler_getAverageDistanceBetweenTracks (FormantModeler me, long t
 
 double FormantModeler_getFormantsConstraintsFactor (FormantModeler me, double minF1, double maxF1, double minF2, double maxF2, double minF3) {
 	double f1 = FormantModeler_getParameterValue (me, 1, 1); // trackmodelers -> item[1] -> parameter[1]
-	double minF1Factor = f1 > minF1 ? 1 : sqrt (minF1 - f1 + 1);
-	double maxF1Factor = f1 < maxF1 ? 1 : sqrt (f1 - maxF1 + 1);
+	double minF1Factor = f1 > minF1 ? 1 : sqrt (minF1 - f1 + 1.0);
+	double maxF1Factor = f1 < maxF1 ? 1 : sqrt (f1 - maxF1 + 1.0);
 	double f2 = FormantModeler_getParameterValue (me, 2, 1); // trackmodelers -> item[2] -> parameter[1]
-	double minF2Factor = f2 > minF2 ? 1 : sqrt (minF2 - f2 + 1);
-	double maxF2Factor = f2 < maxF2 ? 1 : sqrt (f2 - maxF2 + 1);
+	double minF2Factor = f2 > minF2 ? 1 : sqrt (minF2 - f2 + 1.0);
+	double maxF2Factor = f2 < maxF2 ? 1 : sqrt (f2 - maxF2 + 1.0);
 	double f3 = FormantModeler_getParameterValue (me, 3, 1); // trackmodelers -> item[3] -> parameter[1]
-	double minF3Factor = f3 > minF3 ? 1 : sqrt (minF3 - f3 + 1);
+	double minF3Factor = f3 > minF3 ? 1 : sqrt (minF3 - f3 + 1.0);
 	return minF1Factor * maxF1Factor * minF2Factor * maxF2Factor * minF3Factor;
 }
 
-long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,
+long Formants_getSmoothestInInterval (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,
 	int useBandWidthsForTrackEstimation, int useConstraints, double numberOfSigmas, double power,
 	double minF1, double maxF1, double minF2, double maxF2, double minF3)
 {
@@ -1862,19 +1865,19 @@ long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, l
 		}
 		autoNUMvector<long> numberOfFormants (1, numberOfFormantObjects);
 		autoNUMvector<int> invalid (1, numberOfFormantObjects);
-		double tminf = 0, tmaxf = 0;
-		for (long iobject = 1; iobject <= numberOfFormantObjects; iobject++) {
+		double tminf = 0.0, tmaxf = 0.0;
+		for (long iobject = 1; iobject <= numberOfFormantObjects; iobject ++) {
 			// Check that all Formants have the same domain
-			Formant fi = (Formant) my item[iobject];
+			Formant fi = my at [iobject];
 			if (tminf == tmaxf) {
 				tminf = fi -> xmin; tmaxf = fi -> xmax;
 			} else if (fi -> xmin != tminf || fi -> xmax != tmaxf) {
 				Melder_throw (U"All Formant objects must have the same starting and finishing times.");
 			}
 			// Find the one that has least formant tracks
-			numberOfFormants[iobject] = Formant_getMaxNumFormants (fi);
-			if (numberOfFormants[iobject] < minNumberOfFormants) {
-				minNumberOfFormants = numberOfFormants[iobject];
+			numberOfFormants [iobject] = Formant_getMaxNumFormants (fi);
+			if (numberOfFormants [iobject] < minNumberOfFormants) {
+				minNumberOfFormants = numberOfFormants [iobject];
 			}
 		}
 		if (numberOfFormantTracks == 0) { // default
@@ -1883,10 +1886,10 @@ long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, l
 		if (numberOfFormantTracks > minNumberOfFormants) {
 			// make formants with not enough tracks invalid for the competition
 			long numberOfInvalids = 0;
-			for (long iobject = 1; iobject <= numberOfFormantObjects; iobject++) {
-				if (numberOfFormants[iobject] < numberOfFormantTracks) {
-					invalid[iobject] = 1;
-					numberOfInvalids++;
+			for (long iobject = 1; iobject <= numberOfFormantObjects; iobject ++) {
+				if (numberOfFormants [iobject] < numberOfFormantTracks) {
+					invalid [iobject] = 1;
+					numberOfInvalids ++;
 				}
 			}
 			if (numberOfInvalids == numberOfFormantObjects) {
@@ -1904,15 +1907,15 @@ long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, l
 		 * This is not what we want.
 		 * We test therefore the variances of the parameters because if sigma1[i] < sigma2[i] than pvar1 < pvar2.
 		 */
-		double minChiVar = 1e38;
+		double minChiVar = 1e308;
 		long index = 0;
-		for (long iobject = 1; iobject <= numberOfFormantObjects; iobject++) {
-			if (invalid[iobject] != 1) {
-				Formant fi = (Formant) my item[iobject];
+		for (long iobject = 1; iobject <= numberOfFormantObjects; iobject ++) {
+			if (invalid [iobject] != 1) {
+				Formant fi = my at [iobject];
 				autoFormantModeler fs = Formant_to_FormantModeler (fi, tmin, tmax, numberOfFormantTracks, numberOfParametersPerTrack, useBandWidthsForTrackEstimation);
-				FormantModeler_setParameterValuesToZero (fs.peek(), 1, numberOfFormantTracks, numberOfSigmas);
-				double cf = useConstraints ? FormantModeler_getFormantsConstraintsFactor (fs.peek(), minF1, maxF1, minF2, maxF2, minF3) : 1;
-				double chiVar = FormantModeler_getSmoothnessValue (fs.peek(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
+				FormantModeler_setParameterValuesToZero (fs.get(), 1, numberOfFormantTracks, numberOfSigmas);
+				double cf = useConstraints ? FormantModeler_getFormantsConstraintsFactor (fs.get(), minF1, maxF1, minF2, maxF2, minF3) : 1;
+				double chiVar = FormantModeler_getSmoothnessValue (fs.get(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
 				if (NUMdefined (chiVar) && cf * chiVar < minChiVar) {
 					minChiVar = cf * chiVar;
 					index = iobject;
@@ -1925,7 +1928,7 @@ long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, l
 	}
 }
 
-Formant Formant_extractPart (Formant me, double tmin, double tmax) {
+autoFormant Formant_extractPart (Formant me, double tmin, double tmax) {
 	try {
 		if (tmin >= tmax) {
 			tmin = my xmin; tmax = my xmax;
@@ -1942,37 +1945,34 @@ Formant Formant_extractPart (Formant me, double tmin, double tmax) {
 			Formant_Frame thyFrame = & thy d_frames [thyindex];
 			myFrame -> copy (thyFrame);
 		}
-		return thee.transfer();
+		return thee;
 		
 	} catch (MelderError) {
 		Melder_throw (U"Formant part could not be extracted.");
 	}
 }
 
-Formant Formants_extractSmoothestPart (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,
-	int useBandWidthsForTrackEstimation, double numberOfSigmas, double power)
+autoFormant Formants_extractSmoothestPart (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, double numberOfSigmas, double power)
 {
 	try {
 		long index = Formants_getSmoothestInInterval (me, tmin, tmax, numberOfFormantTracks, numberOfParametersPerTrack,
-			useBandWidthsForTrackEstimation, 0, numberOfSigmas, power, 1, 1, 1, 1, 1); // last five are just fillers
-		Formant bestfit = (Formant) my item[index];
+			useBandWidthsForTrackEstimation, 0, numberOfSigmas, power, 1.0, 1.0, 1.0, 1.0, 1.0); // last five are just fillers
+		Formant bestfit = my at [index];
 		autoFormant thee = Formant_extractPart (bestfit, tmin, tmax);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Smoothest Formant part could not be extracted.");
 	}
 }
 
 
-Formant Formants_extractSmoothestPart_withFormantsConstraints (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,
-	int useBandWidthsForTrackEstimation, double numberOfSigmas, double power, double minF1, double maxF1, double minF2, double maxF2, double minF3)
-{
+autoFormant Formants_extractSmoothestPart_withFormantsConstraints (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,	int useBandWidthsForTrackEstimation, double numberOfSigmas, double power, double minF1, double maxF1, double minF2, double maxF2, double minF3) {
 	try {
 		long index = Formants_getSmoothestInInterval (me, tmin, tmax, numberOfFormantTracks, numberOfParametersPerTrack,
 			useBandWidthsForTrackEstimation, 1, numberOfSigmas, power, minF1, maxF1, minF2, maxF2, minF3);
-		Formant bestfit = (Formant) my item[index];
+		Formant bestfit = my at [index];
 		autoFormant thee = Formant_extractPart (bestfit, tmin, tmax);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Smoothest Formant part could not be extracted.");
 	}
@@ -1980,7 +1980,7 @@ Formant Formants_extractSmoothestPart_withFormantsConstraints (Collection me, do
 
 Thing_implement (PitchModeler, DataModeler, 0);
 
-PitchModeler Pitch_to_PitchModeler (Pitch me, double tmin, double tmax, long numberOfParameters) {
+autoPitchModeler Pitch_to_PitchModeler (Pitch me, double tmin, double tmax, long numberOfParameters) {
 	try {
 		long ifmin, ifmax;
 		if (tmax <= tmin) {
@@ -1991,23 +1991,23 @@ PitchModeler Pitch_to_PitchModeler (Pitch me, double tmin, double tmax, long num
 			Melder_throw (U"Not enough data points, extend the selection.");
 		}
 		autoPitchModeler thee = Thing_new (PitchModeler);
-		DataModeler_init (thee.peek(), tmin, tmax, numberOfDataPoints, numberOfParameters, DataModeler_TYPE_LEGENDRE);
+		DataModeler_init (thee.get(), tmin, tmax, numberOfDataPoints, numberOfParameters, DataModeler_TYPE_LEGENDRE);
 		long idata = 0, validData = 0;
-		for (long iframe = ifmin; iframe <= ifmax; iframe++) {
-			thy x[++idata] = Sampled_indexToX (me, iframe);
+		for (long iframe = ifmin; iframe <= ifmax; iframe ++) {
+			thy x [++ idata] = Sampled_indexToX (me, iframe);
 			thy dataPointStatus[idata] = DataModeler_DATA_INVALID;
 			if (Pitch_isVoiced_i (me, iframe)) {
 				thy y[idata] = my frame [iframe]. candidate [1]. frequency;
-				thy dataPointStatus[idata] = DataModeler_DATA_VALID;
-				validData++;
+				thy dataPointStatus [idata] = DataModeler_DATA_VALID;
+				validData ++;
 			}
 		}
 		thy numberOfDataPoints = idata;
 		if (validData < numberOfParameters) { // remove don't throw exception
 			Melder_throw (U"Not enough valid data in interval.");
 		}
-		DataModeler_fit (thee.peek());
-		return thee.transfer();
+		DataModeler_fit (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No PitchModeler could be created.");
 	}
@@ -2019,20 +2019,20 @@ void PitchModeler_draw (PitchModeler me, Graphics g, double tmin, double tmax, d
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 100.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 100.0, true, true, true);
 	}
 }
 
 double Sound_getOptimalFormantCeiling (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power) {
 	double optimalCeiling;
-	autoFormant thee = Sound_to_Formant_interval (me, startTime, endTime, windowLength, timeStep, minFreq, maxFreq,  numberOfFrequencySteps, preemphasisFrequency, numberOfFormantTracks, numberOfParametersPerTrack, weighData,  numberOfSigmas, power, false, 0, 5000, 0, 5000, 0, &optimalCeiling);
+	autoFormant thee = Sound_to_Formant_interval (me, startTime, endTime, windowLength, timeStep, minFreq, maxFreq,  numberOfFrequencySteps, preemphasisFrequency, numberOfFormantTracks, numberOfParametersPerTrack, weighData,  numberOfSigmas, power, false, 0.0, 5000.0, 0.0, 5000.0, 0.0, & optimalCeiling);
 	return optimalCeiling;
 }
 
-Formant Sound_to_Formant_interval (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling) {
+autoFormant Sound_to_Formant_interval (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *p_optimalCeiling) {
 	try {
 		// parameter check
 		if (endTime <= startTime) {
@@ -2042,51 +2042,52 @@ Formant Sound_to_Formant_interval (Sound me, double startTime, double endTime, d
 		if (maxFreq > nyquistFrequency) {
 			Melder_throw (U"The upper value of the maximum frequency range is higher than the Nyquist frequency of the sound.");
 		}
-		double df = 0, ceiling_best, mincriterium = 1e28;
+		double df = 0, mincriterium = 1e28;
 		if (minFreq >= maxFreq) {
 			numberOfFrequencySteps = 1;
 		} else {
 			df = (maxFreq - minFreq) / (numberOfFrequencySteps - 1);
 		}
+		double optimalCeiling = minFreq;
 		long i_best = 0;
 		
 		// extract part +- windowLength because of Gaussian windowing in the formant analysis
 		// +timeStep/2 to have the analysis points maximally spread in the new domain.
 		
-		autoSound part = Sound_extractPart (me, startTime - windowLength + timeStep / 2, endTime + windowLength + timeStep / 2, kSound_windowShape_RECTANGULAR, 1, 1);
+		autoSound part = Sound_extractPart (me, startTime - windowLength + timeStep / 2.0, endTime + windowLength + timeStep / 2.0, kSound_windowShape_RECTANGULAR, 1, 1);
 
 		// Resample to 2*maxFreq to reduce resampling load in Sound_to_Formant
 		
-		autoSound resampled = Sound_resample (part.peek(), 2 * maxFreq, 50);
-		autoOrdered formants = Ordered_create ();
+		autoSound resampled = Sound_resample (part.get(), 2.0 * maxFreq, 50);
+		OrderedOf<structFormant> formants;
 		Melder_progressOff ();
-		for (long i = 1; i <= numberOfFrequencySteps; i++) {
+		for (long i = 1; i <= numberOfFrequencySteps; i ++) {
 			double currentCeiling = minFreq + (i - 1) * df;
-			autoFormant formant = Sound_to_Formant_burg (resampled.peek(), timeStep, 5, currentCeiling, windowLength, preemphasisFrequency);
-			autoFormantModeler fm = Formant_to_FormantModeler (formant.peek(), startTime, endTime, numberOfFormantTracks, numberOfParametersPerTrack, weighData);
-			FormantModeler_setParameterValuesToZero (fm.peek(), 1, numberOfFormantTracks, numberOfSigmas);
-			Collection_addItem (formants.peek(), formant.transfer());
-			double cf = useConstraints ? FormantModeler_getFormantsConstraintsFactor (fm.peek(), minF1, maxF1, minF2, maxF2, minF3) : 1;
-			double chiVar = FormantModeler_getSmoothnessValue (fm.peek(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
+			autoFormant formant = Sound_to_Formant_burg (resampled.get(), timeStep, 5.0, currentCeiling, windowLength, preemphasisFrequency);
+			autoFormantModeler fm = Formant_to_FormantModeler (formant.get(), startTime, endTime, numberOfFormantTracks, numberOfParametersPerTrack, weighData);
+			FormantModeler_setParameterValuesToZero (fm.get(), 1, numberOfFormantTracks, numberOfSigmas);
+			formants. addItem_move (formant.move());
+			double cf = ( useConstraints ? FormantModeler_getFormantsConstraintsFactor (fm.get(), minF1, maxF1, minF2, maxF2, minF3) : 1 );
+			double chiVar = FormantModeler_getSmoothnessValue (fm.get(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
 			double criterium = chiVar * cf;
 			if (NUMdefined (chiVar) && criterium < mincriterium) {
 				mincriterium = criterium;
-				ceiling_best= currentCeiling;
+				optimalCeiling = currentCeiling;
 				i_best = i;
 			}
 		}
-		autoFormant thee = Formant_extractPart ((Formant) formants -> item[i_best], startTime, endTime);
+		autoFormant thee = Formant_extractPart (formants.at [i_best], startTime, endTime);
 		Melder_progressOn ();
-		if (optimalCeiling) {
-			*optimalCeiling = ceiling_best;
+		if (p_optimalCeiling) {
+			*p_optimalCeiling = optimalCeiling;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No Formant object created.");
 	}
 }
 
-Formant Sound_to_Formant_interval_robust (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling) {
+autoFormant Sound_to_Formant_interval_robust (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *p_optimalCeiling) {
 	try {
 		// parameter check
 		if (endTime <= startTime) {
@@ -2096,14 +2097,14 @@ Formant Sound_to_Formant_interval_robust (Sound me, double startTime, double end
 		if (maxFreq > nyquistFrequency) {
 			Melder_throw (U"The upper value of the maximum frequency range is higher than the Nyquist frequency of the sound.");
 		}
-		double df = 0, ceiling_best, mincriterium = 1e28;
+		double df = 0, mincriterium = 1e28;
 		if (minFreq >= maxFreq) {
 			numberOfFrequencySteps = 1;
 		} else {
 			df = (maxFreq - minFreq) / (numberOfFrequencySteps - 1);
 		}
 		long i_best = 0;
-		
+		double optimalCeiling = minFreq;
 		// extract part +- windowLength because of Gaussian windowing in the formant analysis
 		// +timeStep/2 to have the analysis points maximally spread in the new domain.
 		
@@ -2111,78 +2112,68 @@ Formant Sound_to_Formant_interval_robust (Sound me, double startTime, double end
 
 		// Resample to 2*maxFreq to reduce resampling load in Sound_to_Formant
 		
-		autoSound resampled = Sound_resample (part.peek(), 2 * maxFreq, 50);
-		autoOrdered formants = Ordered_create ();
+		autoSound resampled = Sound_resample (part.get(), 2.0 * maxFreq, 50);
+		OrderedOf<structFormant> formants;
 		Melder_progressOff ();
 		for (long i = 1; i <= numberOfFrequencySteps; i++) {
 			double currentCeiling = minFreq + (i - 1) * df;
-			autoFormant formant = Sound_to_Formant_robust (resampled.peek(), timeStep, 5, currentCeiling, windowLength, preemphasisFrequency, 50, 1.5, 3, 0.0000001, 1);
-			autoFormantModeler fm = Formant_to_FormantModeler (formant.peek(), startTime, endTime, numberOfFormantTracks, numberOfParametersPerTrack, weighData);
-			FormantModeler_setParameterValuesToZero (fm.peek(), 1, numberOfFormantTracks, numberOfSigmas);
-			Collection_addItem (formants.peek(), formant.transfer());
-			double cf = useConstraints ? FormantModeler_getFormantsConstraintsFactor (fm.peek(), minF1, maxF1, minF2, maxF2, minF3) : 1;
-			double chiVar = FormantModeler_getSmoothnessValue (fm.peek(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
+			autoFormant formant = Sound_to_Formant_robust (resampled.get(), timeStep, 5.0, currentCeiling, windowLength, preemphasisFrequency, 50.0, 1.5, 3, 0.0000001, 1);
+			autoFormantModeler fm = Formant_to_FormantModeler (formant.get(), startTime, endTime, numberOfFormantTracks, numberOfParametersPerTrack, weighData);
+			FormantModeler_setParameterValuesToZero (fm.get(), 1, numberOfFormantTracks, numberOfSigmas);
+			formants. addItem_move (formant.move());
+			double cf = ( useConstraints ? FormantModeler_getFormantsConstraintsFactor (fm.get(), minF1, maxF1, minF2, maxF2, minF3) : 1 );
+			double chiVar = FormantModeler_getSmoothnessValue (fm.get(), 1, numberOfFormantTracks, numberOfParametersPerTrack, power);
 			double criterium = chiVar * cf;
 			if (NUMdefined (chiVar) && criterium < mincriterium) {
 				mincriterium = criterium;
-				ceiling_best= currentCeiling;
+				optimalCeiling = currentCeiling;
 				i_best = i;
 			}
 		}
-		autoFormant thee = Formant_extractPart ((Formant) formants -> item[i_best], startTime, endTime);
+		autoFormant thee = Formant_extractPart (formants.at [i_best], startTime, endTime);
 		Melder_progressOn ();
-		if (optimalCeiling) {
-			*optimalCeiling = ceiling_best;
+		if (p_optimalCeiling) {
+			*p_optimalCeiling = optimalCeiling;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No Formant object created.");
 	}
 }
 
-void FormantModeler_Formant_correctFormantsProbablyIndexedFalsely (FormantModeler me, Formant thee) {
-	try {
-		(void) thee;
-		autoFormantModeler him = (FormantModeler) Data_copy (me);
-	} catch (MelderError) {
-		Melder_throw (U"Nothing corrected.");
-	}
-}
-
+#if 0
 // If e.g. first formant is obviously "missing" then assign F1 as 
-void FormantModeler_correctFormantsProbablyIndexedFalsely (FormantModeler me) {
-	(void) me;
+static void FormantModeler_correctFormantsProbablyIndexedFalsely (FormantModeler /* me */) {
 	/* if shift down F1 ("correct" F1 missed)
 	 * elsif shift down F2  ("correct" F2 missed)
 	 * else if spurious formant before F1
 	 * else if spurious formant between F1 and F2
 	 * endif
 	 * */
-	
 }
+#endif
 
-OptimalCeilingTier Sound_to_OptimalCeilingTier (Sound me, double windowLength, double timeStep, double minCeiling, double maxCeiling, long numberOfFrequencySteps, double preemphasisFrequency, double smoothingWindow, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power) {
+autoOptimalCeilingTier Sound_to_OptimalCeilingTier (Sound me, double windowLength, double timeStep, double minCeiling, double maxCeiling, long numberOfFrequencySteps, double preemphasisFrequency, double smoothingWindow, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power) {
 	try {
-		autoOrdered formants = Ordered_create ();
+		OrderedOf<structFormant> formants;
 		double frequencyStep = numberOfFrequencySteps > 1 ? (maxCeiling - minCeiling) / (numberOfFrequencySteps - 1) : 0;
 		for (long i = 1; i <= numberOfFrequencySteps; i++) {
 			double ceiling = minCeiling + (i - 1) * frequencyStep;
 			autoFormant formant = Sound_to_Formant_burg (me, timeStep, 5, ceiling, windowLength, preemphasisFrequency);
-			Collection_addItem (formants.peek(), formant.transfer());
+			formants. addItem_move (formant.move());
 		}
 		long numberOfFrames; double firstTime, modelingTimeStep = timeStep;
 		autoOptimalCeilingTier octier = OptimalCeilingTier_create (my xmin, my xmax);
 		Sampled_shortTermAnalysis (me, smoothingWindow, modelingTimeStep, & numberOfFrames, & firstTime);
 		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
 			double time = firstTime + (iframe - 1) * modelingTimeStep;
-			double tmin = time - smoothingWindow / 2;
+			double tmin = time - smoothingWindow / 2.0;
 			double tmax = tmin + smoothingWindow;
-			long index = Formants_getSmoothestInInterval (formants.peek(), tmin, tmax, numberOfFormantTracks, numberOfParametersPerTrack,
-				weighData, 0, numberOfSigmas, power, 200, 1500, 300, 3000, 1000); // min/max values are not used
+			long index = Formants_getSmoothestInInterval (& formants, tmin, tmax, numberOfFormantTracks, numberOfParametersPerTrack,	weighData, 0, numberOfSigmas, power, 200.0, 1500.0, 300.0, 3000.0, 1000.0); // min/max values are not used
 			double ceiling = minCeiling + (index - 1) * frequencyStep;
-			RealTier_addPoint (octier.peek(), time, ceiling);
+			RealTier_addPoint (octier.get(), time, ceiling);
 		}
-		return octier.transfer();
+		return octier;
 	} catch (MelderError) {
 		Melder_throw (me, U" no OptimalCeilingTier calculated.");
 	}
diff --git a/dwtools/DataModeler.h b/dwtools/DataModeler.h
index af24d44..b28d039 100644
--- a/dwtools/DataModeler.h
+++ b/dwtools/DataModeler.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,7 +35,6 @@
 #define DataModeler_DATA_WEIGH_SQRT 3
 #define DataModeler_DATA_WEIGH_SQRT 3
 
-
 #define DataModeler_DATA_VALID 0
 #define DataModeler_DATA_INVALID -1
 #define DataModeler_DATA_FROM_FIT 1
@@ -60,19 +58,17 @@
 #include "Table.h"
 
 #include "DataModeler_def.h"
-oo_CLASS_CREATE (DataModeler, Function);
-oo_CLASS_CREATE (FormantModeler, Function);
 
 Thing_define (PitchModeler, DataModeler) {
 	// void v_info ()
 	//     override;
 };
 
-
 void  DataModeler_init (DataModeler me, double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type);
 
-DataModeler DataModeler_create (double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type);
-DataModeler DataModeler_createSimple (double xmin, double xmax, long numberOfDataPoints, char32 *parameters, double gaussianNoiseStd, int type);
+autoDataModeler DataModeler_create (double xmin, double xmax, long numberOfDataPoints, long numberOfParameters, int type);
+
+autoDataModeler DataModeler_createSimple (double xmin, double xmax, long numberOfDataPoints, char32 *parameters, double gaussianNoiseStd, int type);
 
 void DataModeler_setBasisFunctions (DataModeler me, int type);
 
@@ -96,53 +92,78 @@ void DataModeler_fit (DataModeler me);
 
 // sigmaY used in fit or not.
 void DataModeler_setDataWeighing (DataModeler me, int useSigmaY);
+
 long DataModeler_getNumberOfFixedParameters (DataModeler me);
+
 void DataModeler_setParameterValue (DataModeler me, long index, double value, int status);
+
 void DataModeler_setParameterValueFixed (DataModeler me, long index, double value);
+
 void DataModeler_setParametersFree (DataModeler me, long fromIndex, long toIndex);
+
 double DataModeler_getParameterValue (DataModeler me, long index);
+
 int DataModeler_getParameterStatus (DataModeler me, long index);
+
 double DataModeler_getParameterStandardDeviation (DataModeler me, long index);
+
 double DataModeler_getVarianceOfParameters (DataModeler me, long fromIndex, long toIndex, long *numberOfFreeParameters);
+
 void DataModeler_setParameterValuesToZero (DataModeler me, double numberOfSigmas);
+
 double DataModeler_estimateSigmaY (DataModeler me);
 
 void DataModeler_getExtremaY (DataModeler me, double *ymin, double *ymax);
+
 double DataModeler_getModelValueAtX (DataModeler me, double x);
+
 double DataModeler_getModelValueAtIndex (DataModeler me, long index);
+
 double DataModeler_getWeightedMean (DataModeler me);
 
 long DataModeler_getNumberOfInvalidDataPoints (DataModeler me);
+
 double DataModeler_getDataPointValue (DataModeler me, long index);
+
 void DataModeler_setDataPointValue (DataModeler me, long index, double value);
+
 int DataModeler_getDataPointStatus (DataModeler me, long index);
+
 void DataModeler_setDataPointStatus (DataModeler me, long index, int status);
+
 void DataModeler_setDataPointSigma (DataModeler me, long index, double sigma);
+
 double DataModeler_getDataPointSigma (DataModeler me, long index);
 double DataModeler_getResidualSumOfSquares (DataModeler me, long *numberOfDataPoints);
 
 void DataModeler_getZScores (DataModeler me, int useSigmaY, double zscores[]);
+
 double DataModeler_getDegreesOfFreedom (DataModeler me);
+
 double DataModeler_getChiSquaredQ (DataModeler me, int useSigmaY, double *probability, double *ndf);
+
 double DataModeler_getCoefficientOfDetermination (DataModeler me, double *ssreg, double *sstot);
 
-Formant Formant_extractPart (Formant me, double tmin, double tmax);
+autoFormant Formant_extractPart (Formant me, double tmin, double tmax);
 
-Covariance DataModeler_to_Covariance_parameters (DataModeler me);
-Table DataModeler_to_Table_zscores (DataModeler me, int useSigmaY);
+autoCovariance DataModeler_to_Covariance_parameters (DataModeler me);
 
-FormantModeler FormantModeler_create (double tmin, double tmax, long numberOfFormants, long numberOfDataPoints, long numberOfParameters);
+autoTable DataModeler_to_Table_zscores (DataModeler me, int useSigmaY);
+
+autoFormantModeler FormantModeler_create (double tmin, double tmax, long numberOfFormants, long numberOfDataPoints, long numberOfParameters);
 
 double FormantModeler_indexToTime (FormantModeler me, long index);
 
 void FormantModeler_fit (FormantModeler me);
-void FormantModeler_drawBasisFunction (FormantModeler me, Graphics g, double tmin, double tmax, double fmin, double fmax,
- 	long iformant, long iterm, bool scaled, long numberOfPoints, int garnish);
+
+void FormantModeler_drawBasisFunction (FormantModeler me, Graphics g, double tmin, double tmax, double fmin, double fmax, long iformant, long iterm, bool scaled, long numberOfPoints, bool garnish);
 
 void FormantModeler_setDataWeighing (FormantModeler me, long fromFormant, long toFormant, int useSigmaY);
 
 void FormantModeler_setParameterValueFixed (FormantModeler me, long iformant, long index, double value);
+
 void FormantModeler_setParametersFree (FormantModeler me, long fromFormant, long toFormant, long fromIndex, long toIndex);
+
 void FormantModeler_setParameterValuesToZero (FormantModeler me, long fromFormant, long toFormant, double numberOfSigmas);
 
 void FormantModeler_setTolerance (FormantModeler me, double tolerance);
@@ -150,83 +171,100 @@ void FormantModeler_setTolerance (FormantModeler me, double tolerance);
 void FormantModeler_speckle (FormantModeler me, Graphics g, double tmin, double tmax, double fmax,
 	long fromTrack, long toTrack, int estimated, long numberOfParameters, int errorBars, double barWidth_mm, double horizontalOffset_mm, int garnish);
 
-void FormantModeler_drawTracks (FormantModeler me, Graphics g, double tmin, double tmax, double fmax, long fromTrack, long toTrack, 
-	 int estimated, long numberOfParameters, double horizontalOffset_mm, int garnish);
+void FormantModeler_drawTracks (FormantModeler me, Graphics g, double tmin, double tmax, double fmax, long fromTrack, long toTrack, int estimated, long numberOfParameters, double horizontalOffset_mm, int garnish);
 
 void FormantModeler_drawOutliersMarked (FormantModeler me, Graphics g, double tmin, double tmax, double fmax, long fromTrack, long toTrack, double numberOfSigmas, int useSigmaY, char32 *mark, int marksFontSize, double horizontalOffset_mm, int garnish);
+
 void FormantModeler_drawCumulativeChiScores (FormantModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax, int useSigmaY, int garnish);
 
-void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax, int shiftDirection, long fromFormant, long toFormant, int garnish);
-void FormantModeler_normalProbabilityPlot (FormantModeler me, Graphics g, long iformant, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, int garnish);
+void FormantModeler_drawVariancesOfShiftedTracks (FormantModeler me, Graphics g, double xmin, double xmax, double ymin, double ymax, int shiftDirection, long fromFormant, long toFormant, bool garnish);
+
+void FormantModeler_normalProbabilityPlot (FormantModeler me, Graphics g, long iformant, int useSigmaY, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, bool garnish);
 
-Table FormantModeler_to_Table_zscores (FormantModeler me, int useSigmaY);
+autoTable FormantModeler_to_Table_zscores (FormantModeler me, int useSigmaY);
 
-Covariance FormantModeler_to_Covariance_parameters (FormantModeler me, long iformant);
+autoCovariance FormantModeler_to_Covariance_parameters (FormantModeler me, long iformant);
 
 double FormantModeler_getChiSquaredQ (FormantModeler me, long fromFormant, long toFormant, int useSigmaY, double *probability, double *ndf);
 
 double FormantModeler_getCoefficientOfDetermination (FormantModeler me, long fromFormant, long toFormant);
+
 double FormantModeler_getStandardDeviation (FormantModeler me, long iformant);
+
 double FormantModeler_getResidualSumOfSquares (FormantModeler me, long iformant, long *numberOfDataPoints);
+
 double FormantModeler_getEstimatedValueAtTime (FormantModeler me, long iformant, double time);
 
 long FormantModeler_getNumberOfParameters (FormantModeler me, long iformant);
+
 long FormantModeler_getNumberOfFixedParameters (FormantModeler me, long iformant);
 
 double FormantModeler_getParameterStandardDeviation ( FormantModeler me, long iformant, long index);
+
 double FormantModeler_getVarianceOfParameters (FormantModeler me, long fromFormant, long toFormant, long fromIndex, long toIndex, long *numberOfFreeParameters);
+
 int FormantModeler_getParameterStatus (FormantModeler me, long iformant, long index);
 
 long FormantModeler_getNumberOfDataPoints (FormantModeler me);
+
 long FormantModeler_getNumberOfInvalidDataPoints (FormantModeler me, long iformant);
 
 void FormantModeler_setDataPointStatus (FormantModeler me, long iformant, long index, int status);
+
 int FormantModeler_getDataPointStatus (FormantModeler me, long iformant, long index);
+
 double FormantModeler_getDataPointValue (FormantModeler me, long iformant, long index);
+
 void FormantModeler_setDataPointValue (FormantModeler me, long iformant, long index, double value);
+
 double FormantModeler_getDataPointSigma (FormantModeler me, long iformant, long index);
+
 void FormantModeler_setDataPointSigma (FormantModeler me, long iformant, long index, double sigma);
 
 double FormantModeler_getDegreesOfFreedom (FormantModeler me, long iformant);
+
 long FormantModeler_getNumberOfTracks (FormantModeler me);
 
 double FormantModeler_getModelValueAtTime (FormantModeler me, long iformant, double time);
+
 double FormantModeler_getModelValueAtIndex (FormantModeler me, long iformant, long index);
 
 double FormantModeler_getWeightedMean (FormantModeler me, long iformant);
 
 double FormantModeler_getParameterValue (FormantModeler me, long iformant, long iparameter);
 
-FormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax, long numberOfFormants, long numberOfParametersPerTrack, int bandwidthEstimatesSigma);
-Formant FormantModeler_to_Formant (FormantModeler me, int estimate, int estimateUndefined);
+autoFormantModeler Formant_to_FormantModeler (Formant me, double tmin, double tmax, long numberOfFormants, long numberOfParametersPerTrack, int bandwidthEstimatesSigma);
+
+autoFormant FormantModeler_to_Formant (FormantModeler me, int estimate, int estimateUndefined);
+
+autoFormantModeler FormantModeler_processOutliers (FormantModeler me, double numberOfSigmas, int useSigmaY);
 
-FormantModeler FormantModeler_processOutliers (FormantModeler me, double numberOfSigmas, int useSigmaY);
 double FormantModeler_getSmoothnessValue (FormantModeler me, long fromFormant, long toFormant, long numberOfParametersPerTrack, double power);
+
 double FormantModeler_getAverageDistanceBetweenTracks (FormantModeler me, long track1, long track2, int type);
 
-long Formants_getSmoothestInInterval (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack,
-	int useBandWidthsForTrackEstimation, int useConstraints, double numberOfSigmas, double power,
-	double minF1, double maxF1, double minF2, double maxF2, double minF3);
+long Formants_getSmoothestInInterval (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, int useConstraints, double numberOfSigmas, double power, double minF1, double maxF1, double minF2, double maxF2, double minF3);
 
 double FormantModeler_getFormantsConstraintsFactor (FormantModeler me, double minF1, double maxF1, double minF2, double maxF2, double minF3);
 
-Formant Formants_extractSmoothestPart (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, double numberOfSigmas, double power);
-Formant Formants_extractSmoothestPart_withFormantsConstraints (Collection me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, double numberOfSigmas, double power, double minF1, double maxF1, double minF2, double maxF2, double minF3);
+autoFormant Formants_extractSmoothestPart (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, double numberOfSigmas, double power);
+
+autoFormant Formants_extractSmoothestPart_withFormantsConstraints (CollectionOf<structFormant>* me, double tmin, double tmax, long numberOfFormantTracks, long numberOfParametersPerTrack, int useBandWidthsForTrackEstimation, double numberOfSigmas, double power, double minF1, double maxF1, double minF2, double maxF2, double minF3);
 
-DataModeler FormantModeler_extractDataModeler (FormantModeler me, long iformant);
+autoDataModeler FormantModeler_extractDataModeler (FormantModeler me, long iformant);
 
-PitchModeler Pitch_to_PitchModeler (Pitch me, double tmin, double tmax, long numberOfParameters);
+autoPitchModeler Pitch_to_PitchModeler (Pitch me, double tmin, double tmax, long numberOfParameters);
 
 void PitchModeler_draw (PitchModeler me, Graphics g, double tmin, double tmax, double fmin, double fmax, long numberOfParameters, int garnish);
 
-DataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolumn, long ycolumn, long scolumn, long numberOfParameters, int type);
+autoDataModeler Table_to_DataModeler (Table me, double xmin, double xmax, long xcolumn, long ycolumn, long scolumn, long numberOfParameters, int type);
 
-Formant Sound_to_Formant_interval (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling);
+autoFormant Sound_to_Formant_interval (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling);
 
-Formant Sound_to_Formant_interval_robust (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling);
+autoFormant Sound_to_Formant_interval_robust (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power, bool useConstraints, double minF1, double maxF1, double minF2, double maxF2, double minF3, double *optimalCeiling);
 
 double Sound_getOptimalFormantCeiling (Sound me, double startTime, double endTime, double windowLength, double timeStep, double minFreq, double maxFreq, long numberOfFrequencySteps, double preemphasisFrequency, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power);
 
-OptimalCeilingTier Sound_to_OptimalCeilingTier (Sound me, double windowLength, double timeStep, double minCeiling, double maxCeiling, long numberOfFrequencySteps, double preemphasisFrequency, double smoothingWindow, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power); 
+autoOptimalCeilingTier Sound_to_OptimalCeilingTier (Sound me, double windowLength, double timeStep, double minCeiling, double maxCeiling, long numberOfFrequencySteps, double preemphasisFrequency, double smoothingWindow, long numberOfFormantTracks, long numberOfParametersPerTrack, int weighData, double numberOfSigmas, double power); 
 
 #endif /* _DataModeler_h_ */
diff --git a/dwtools/DataModeler_def.h b/dwtools/DataModeler_def.h
index c62fd66..b7a66cc 100644
--- a/dwtools/DataModeler_def.h
+++ b/dwtools/DataModeler_def.h
@@ -1,8 +1,25 @@
-/* DataModeler_def.h */
-/* David Weenink, 20140216 */
+/* DataModeler_def.h
+ *
+ * Copyright (C) 2014 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
 
 #define ooSTRUCT DataModeler
 oo_DEFINE_CLASS (DataModeler, Function)
+
 	oo_INT (type)	// polynomial, legendre ...
 	oo_LONG (numberOfDataPoints)
 	oo_LONG (numberOfParameters)
@@ -14,8 +31,9 @@ oo_DEFINE_CLASS (DataModeler, Function)
 	oo_INT_VECTOR (parameterStatus, numberOfParameters)
 	oo_DOUBLE (tolerance)
 	oo_INT (useSigmaY)
-	oo_OBJECT (Strings, 0, parameterNames)
-	oo_OBJECT (Covariance, 0, parameterCovariances)
+	oo_AUTO_OBJECT (Strings, 0, parameterNames)
+	oo_AUTO_OBJECT (Covariance, 0, parameterCovariances)
+
 	#if oo_DECLARING
 		double (*f_evaluate) (DataModeler me, double x, double p[]);
 		void (*f_evaluateBasisFunctions) (DataModeler me, double x, double term[]);
@@ -23,23 +41,31 @@ oo_DEFINE_CLASS (DataModeler, Function)
 		void v_info ()
 			override;
 	#endif
+
 	#if oo_COPYING
-			DataModeler_setBasisFunctions (thee, thy type);
+		DataModeler_setBasisFunctions (thee, thy type);
 	#endif
+
 	#if oo_READING
 		 DataModeler_setBasisFunctions (this, type);
 	#endif
+
 oo_END_CLASS (DataModeler)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT FormantModeler
 oo_DEFINE_CLASS (FormantModeler, Function)
-	oo_COLLECTION (Ordered, trackmodelers, DataModeler, 0)
+
+	oo_COLLECTION_OF (OrderedOf, trackmodelers, DataModeler, 0)
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (FormantModeler)
 #undef ooSTRUCT
 
+
 /* End of file DataModeler_def.h */	
diff --git a/dwtools/Discriminant.cpp b/dwtools/Discriminant.cpp
index 34281ee..e3fa3e9 100644
--- a/dwtools/Discriminant.cpp
+++ b/dwtools/Discriminant.cpp
@@ -1,20 +1,19 @@
 /* Discriminant.c
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -68,26 +67,27 @@
 #define MAX(m,n) ((m) > (n) ? (m) : (n))
 #define MIN(m,n) ((m) < (n) ? (m) : (n))
 
-Thing_implement (Discriminant, Eigen, 0);
+Thing_implement (Discriminant, Daata, 1);
 
 void structDiscriminant :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of groups: ", numberOfGroups);
-	MelderInfo_writeLine (U"Number of variables: ", dimension);
+	MelderInfo_writeLine (U"Number of eigenvalues: ", eigen -> numberOfEigenvalues);
+	MelderInfo_writeLine (U"Dimension of eigenvector: ", eigen -> dimension);
 	MelderInfo_writeLine (U"Number of discriminant functions: ", Discriminant_getNumberOfFunctions (this));
 	MelderInfo_writeLine (U"Number of observations (total): ", Discriminant_getNumberOfObservations (this, 0));
 }
 
-Discriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues, long dimension) {
+autoDiscriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues, long dimension) {
 	try {
 		autoDiscriminant me = Thing_new (Discriminant);
+		my eigen = Eigen_create (numberOfEigenvalues, dimension);
 		my numberOfGroups = numberOfGroups;
-		Eigen_init (me.peek(), numberOfEigenvalues, dimension);
-		my groups = SSCPs_create ();
+		my groups = SSCPList_create ();
 		my total = SSCP_create (dimension);
 		my aprioriProbabilities = NUMvector<double> (1, numberOfGroups);
 		my costs = NUMmatrix<double> (1, numberOfGroups, 1, numberOfGroups);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Discriminant not created.");
 	}
@@ -96,8 +96,8 @@ Discriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues,
 long Discriminant_groupLabelToIndex (Discriminant me, const char32 *label) {
 	char32 *name;
 
-	for (long i = 1; i <= my numberOfGroups; i++) {
-		if ( (name = Thing_getName ( (Thing) my groups -> item[i])) && str32equ (name, label)) {
+	for (long i = 1; i <= my numberOfGroups; i ++) {
+		if (!! (name = Thing_getName (my groups -> at [i])) && str32equ (name, label)) {
 			return i;
 		}
 	}
@@ -110,10 +110,9 @@ long Discriminant_getNumberOfGroups (Discriminant me) {
 
 long Discriminant_getNumberOfObservations (Discriminant me, long group) {
 	if (group == 0) {
-		SSCP sscp = (SSCP) my total;
-		return (long) floor (sscp -> numberOfObservations);
+		return (long) floor (my total -> numberOfObservations);
 	} else if (group >= 1 && group <= my numberOfGroups) {
-		SSCP sscp = (SSCP) my groups -> item[group];
+		SSCP sscp = my groups->at [group];
 		return (long) floor (sscp -> numberOfObservations);
 	} else {
 		return -1;
@@ -131,72 +130,73 @@ void Discriminant_setAprioriProbability (Discriminant me, long group, double p)
 }
 
 long Discriminant_getNumberOfFunctions (Discriminant me) {
-	long nf = MIN (my numberOfGroups - 1, my dimension);
-	nf = MIN (nf, my numberOfEigenvalues);
-	return nf;
+	long numberOfFunctions = MIN (my numberOfGroups - 1, my eigen -> dimension);
+	numberOfFunctions = MIN (numberOfFunctions, my eigen ->  numberOfEigenvalues);
+	return numberOfFunctions;
 }
 
 void Discriminant_setGroupLabels (Discriminant me, Strings thee) {
-	if (my numberOfGroups != thy numberOfStrings) Melder_throw
-		(U"The number of strings must equal the number of groups.");
+	if (my numberOfGroups != thy numberOfStrings) {
+		Melder_throw (U"The number of strings must equal the number of groups.");
+	}
 
-	for (long i = 1; i <= my numberOfGroups; i++) {
+	for (long i = 1; i <= my numberOfGroups; i ++) {
 		const char32 *noname = U"", *name;
-		name = thy strings[i];
+		name = thy strings [i];
 		if (name == 0) {
 			name = noname;
 		}
-		Thing_setName ( (Thing) my groups -> item[i], name);
+		Thing_setName (my groups->at [i], name);
 	}
 }
 
-Strings Discriminant_extractGroupLabels (Discriminant me) {
+autoStrings Discriminant_extractGroupLabels (Discriminant me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector<char32 *> (1, my numberOfGroups);
 		thy numberOfStrings = my numberOfGroups;
-		for (long i = 1; i <= my numberOfGroups; i++) {
-			char32 *name = Thing_getName ( (Thing) my groups -> item[i]);
-			thy strings[i] = Melder_dup (name);
+		for (long i = 1; i <= my numberOfGroups; i ++) {
+			char32 *name = Thing_getName (my groups->at [i]);
+			thy strings [i] = Melder_dup (name);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": group labels not extracted.");
 	}
 }
 
-TableOfReal Discriminant_extractGroupCentroids (Discriminant me) {
+autoTableOfReal Discriminant_extractGroupCentroids (Discriminant me) {
 	try {
-		long m = my groups -> size, n = my dimension;
+		long m = my groups -> size, n = my eigen -> dimension;
 		autoTableOfReal thee = TableOfReal_create (m, n);
 
-		for (long i = 1; i <= m; i++) {
-			SSCP sscp = (SSCP) my groups -> item[i];
-			TableOfReal_setRowLabel (thee.peek(), i, Thing_getName (sscp));
-			NUMvector_copyElements (sscp -> centroid, thy data[i], 1, n);
+		for (long i = 1; i <= m; i ++) {
+			SSCP sscp = my groups->at [i];
+			TableOfReal_setRowLabel (thee.get(), i, Thing_getName (sscp));
+			NUMvector_copyElements (sscp -> centroid, thy data [i], 1, n);
 		}
-		NUMstrings_copyElements ( ( (SSCP) my groups -> item[m]) -> columnLabels, thy columnLabels, 1, n);
-		return thee.transfer();
+		NUMstrings_copyElements (my groups->at [m] -> columnLabels, thy columnLabels, 1, n);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": group centroids not extracted.");
 	}
 }
 
-TableOfReal Discriminant_extractGroupStandardDeviations (Discriminant me) {
+autoTableOfReal Discriminant_extractGroupStandardDeviations (Discriminant me) {
 	try {
-		long m = my groups -> size, n = my dimension;
+		long m = my groups->size, n = my eigen -> dimension;
 		autoTableOfReal thee = TableOfReal_create (m, n);
 
-		for (long i = 1; i <= m; i++) {
-			SSCP sscp = (SSCP) my groups -> item[i];
-			TableOfReal_setRowLabel (thee.peek(), i, Thing_getName (sscp));
+		for (long i = 1; i <= m; i ++) {
+			SSCP sscp = my groups->at [i];
+			TableOfReal_setRowLabel (thee.get(), i, Thing_getName (sscp));
 			long numberOfObservationsm1 = (long) floor (sscp -> numberOfObservations) - 1;
-			for (long j = 1; j <= n; j++) {
-				thy data[i][j] = numberOfObservationsm1 > 0 ? sqrt (sscp -> data[j][j] / numberOfObservationsm1) : NUMundefined;
+			for (long j = 1; j <= n; j ++) {
+				thy data [i] [j] = numberOfObservationsm1 > 0 ? sqrt (sscp -> data [j] [j] / numberOfObservationsm1) : NUMundefined;
 			}
 		}
-		NUMstrings_copyElements ( ( (SSCP) my groups -> item[m]) -> columnLabels, thy columnLabels, 1, n);
-		return thee.transfer();
+		NUMstrings_copyElements (my groups->at [m] -> columnLabels, thy columnLabels, 1, n);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": group standard deviations not extracted.");
 	}
@@ -210,7 +210,7 @@ double Discriminant_getWilksLambda (Discriminant me, long from) {
 	if (from < 1) {
 		from = 1;
 	}
-	return NUMwilksLambda (my eigenvalues, 1 + from, numberOfFunctions);
+	return NUMwilksLambda (my eigen -> eigenvalues, 1 + from, numberOfFunctions);
 }
 
 /*
@@ -218,37 +218,37 @@ double Discriminant_getWilksLambda (Discriminant me, long from) {
 	unstandardized u[j]: sqrt(N-g) * r[j]
 	standardized s[j]: u[j] sqrt (w[i][i] / (N-g))
 */
-TableOfReal Discriminant_extractCoefficients (Discriminant me, int choice) {
+autoTableOfReal Discriminant_extractCoefficients (Discriminant me, int choice) {
 	try {
 		int raw = choice == 0, standardized = choice == 2;
-		long nx = my dimension, ny = my numberOfEigenvalues;
+		long nx = my eigen -> dimension, ny = my eigen -> numberOfEigenvalues;
 
-		SSCP total = my total;
+		SSCP total = my total.get();
 		autoTableOfReal thee = TableOfReal_create (ny, nx + 1);
 		NUMstrings_copyElements (my total -> columnLabels, thy columnLabels, 1, nx);
 
-		autoSSCP within = 0;
+		autoSSCP within;
 		if (standardized) {
-			within.reset (Discriminant_extractPooledWithinGroupsSSCP (me));
+			within = Discriminant_extractPooledWithinGroupsSSCP (me);
 		}
 
-		TableOfReal_setColumnLabel (thee.peek(), nx + 1, U"constant");
-		TableOfReal_setSequentialRowLabels (thee.peek(), 1, ny, U"function_", 1, 1);
+		TableOfReal_setColumnLabel (thee.get(), nx + 1, U"constant");
+		TableOfReal_setSequentialRowLabels (thee.get(), 1, ny, U"function_", 1, 1);
 
 		double scale = sqrt (total -> numberOfObservations - my numberOfGroups);
 		double *centroid = my total -> centroid;
 		for (long i = 1; i <= ny; i++) {
-			double u0 = 0, ui;
+			double u0 = 0.0, ui;
 			for (long j = 1; j <= nx; j++) {
 				if (standardized) {
 					scale = sqrt (within -> data[j][j]);
 				}
-				thy data[i][j] = ui = scale * my eigenvectors[i][j];;
+				thy data[i][j] = ui = scale * my eigen -> eigenvectors[i][j];;
 				u0 += ui * centroid[j];
 			}
-			thy data[i][nx + 1] = raw ? 0 : -u0;
+			thy data[i][nx + 1] = raw ? 0.0 : -u0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": coefficients not extracted.");
 	}
@@ -256,40 +256,45 @@ TableOfReal Discriminant_extractCoefficients (Discriminant me, int choice) {
 
 static long Discriminant_getDegreesOfFreedom (Discriminant me) {
 	long ndf = 0;
-	for (long i = 1; i <= my groups -> size; i++) {
-		ndf += SSCP_getDegreesOfFreedom ((SSCP) my groups -> item[i]);
+	for (long i = 1; i <= my groups->size; i ++) {
+		ndf += SSCP_getDegreesOfFreedom (my groups->at [i]);
 	}
 	return ndf;
 }
 
-void Discriminant_getPartialDiscriminationProbability (Discriminant me,
-        long numberOfDimensions, double *probability, double *chisq, long *ndf) {
+void Discriminant_getPartialDiscriminationProbability (Discriminant me, long numberOfDimensions, double *p_prob, double *p_chisq, double *p_df)
+{
 	long g = my numberOfGroups;
-	long p = my dimension, k = numberOfDimensions;
+	long p = my eigen -> dimension, k = numberOfDimensions;
 	long numberOfFunctions = Discriminant_getNumberOfFunctions (me);
 	double degreesOfFreedom = Discriminant_getDegreesOfFreedom (me);
-	double lambda;
 
-	*probability = 1; *chisq = 0; *ndf = 0;
+	double prob = NUMundefined,  chisq = NUMundefined, df = NUMundefined;
 
-	if (k >= numberOfFunctions) {
-		return;
+	if (k < numberOfFunctions) {
+		double lambda = NUMwilksLambda (my eigen -> eigenvalues, k + 1, numberOfFunctions);
+		if (lambda != 1.0) {
+			chisq = - (degreesOfFreedom + (g - p) / 2.0 - 1.0) * log (lambda);
+			df = (p - k) * (g - k - 1);
+			if (p_prob) {
+				prob =  NUMchiSquareQ (chisq, df);
+			}
+		}
 	}
-
-	lambda = NUMwilksLambda (my eigenvalues, k + 1, numberOfFunctions);
-
-	if (lambda == 1) {
-		return;
+	if (p_prob) {
+		*p_prob = prob;
+	}
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_df) {
+		*p_df = df;
 	}
-
-	*chisq = - (degreesOfFreedom + (g - p) / 2 - 1) * log (lambda);
-	*ndf = (p - k) * (g - k - 1);
-	*probability =  NUMchiSquareQ (*chisq, *ndf);
 }
 
 double Discriminant_getConcentrationEllipseArea (Discriminant me, long group,
-        double scale, int confidence, int discriminantDirections, long d1, long d2) {
-	SSCPs groups = my groups;
+        double scale, bool confidence, int discriminantDirections, long d1, long d2)
+{
 	double area = NUMundefined;
 
 	if (group < 1 || group > my numberOfGroups) {
@@ -297,10 +302,10 @@ double Discriminant_getConcentrationEllipseArea (Discriminant me, long group,
 	}
 
 	if (discriminantDirections) {
-		autoSSCP thee = Eigen_and_SSCP_project (me, (SSCP) groups -> item[group]);
-		area = SSCP_getConcentrationEllipseArea (thee.peek(), scale, confidence, d1, d2);
+		autoSSCP thee = Eigen_and_SSCP_project (my eigen.get(), my groups->at [group]);
+		area = SSCP_getConcentrationEllipseArea (thee.get(), scale, confidence, d1, d2);
 	} else {
-		area = SSCP_getConcentrationEllipseArea ((SSCP) groups -> item[group], scale, confidence, d1, d2);
+		area = SSCP_getConcentrationEllipseArea (my groups->at [group], scale, confidence, d1, d2);
 	}
 	return area;
 }
@@ -309,66 +314,62 @@ double Discriminant_getLnDeterminant_group (Discriminant me, long group) {
 	if (group < 1 || group > my numberOfGroups) {
 		return NUMundefined;
 	}
-	autoCovariance c = SSCP_to_Covariance ( (SSCP) my groups -> item[group], 1);
-	double ln_d = SSCP_getLnDeterminant (c.peek());
+	autoCovariance c = SSCP_to_Covariance (my groups->at [group], 1);
+	double ln_d = SSCP_getLnDeterminant (c.get());
 	return ln_d;
 }
 
 double Discriminant_getLnDeterminant_total (Discriminant me) {
-	autoCovariance c = SSCP_to_Covariance (my total, 1);
-	double ln_d = SSCP_getLnDeterminant (c.peek());
+	autoCovariance c = SSCP_to_Covariance (my total.get(), 1);
+	double ln_d = SSCP_getLnDeterminant (c.get());
 	return ln_d;
 }
 
-SSCP Discriminant_extractPooledWithinGroupsSSCP (Discriminant me) {
-	return SSCPs_to_SSCP_pool (my groups);
+autoSSCP Discriminant_extractPooledWithinGroupsSSCP (Discriminant me) {
+	return SSCPList_to_SSCP_pool (my groups.get());
 }
 
-SSCP Discriminant_extractWithinGroupSSCP (Discriminant me, long index) {
+autoSSCP Discriminant_extractWithinGroupSSCP (Discriminant me, long index) {
 	try {
 		if (index < 1 || index > my numberOfGroups) Melder_throw
 			(U"Index must be in interval [1,", my numberOfGroups, U"].");
-		autoSSCP thee = Data_copy ( (SSCP) my groups -> item[index]);
-		return thee.transfer();
+		autoSSCP thee = Data_copy (my groups->at [index]);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": within group SSCP not created.");
 	}
 }
 
-SSCP Discriminant_extractBetweenGroupsSSCP (Discriminant me) {
+autoSSCP Discriminant_extractBetweenGroupsSSCP (Discriminant me) {
 	try {
 		long n = my total -> numberOfRows;
-		autoSSCP b = Data_copy (my total);
-		autoSSCP w = SSCPs_to_SSCP_pool (my groups);
-		for (long i = 1; i <= n; i++) {
-			for (long j = i; j <= n; j++) {
-				b -> data[j][i] = (b -> data[i][j] -= w -> data[i][j]);
+		autoSSCP b = Data_copy (my total.get());
+		autoSSCP w = SSCPList_to_SSCP_pool (my groups.get());
+		for (long i = 1; i <= n; i ++) {
+			for (long j = i; j <= n; j ++) {
+				b -> data [j] [i] = (b -> data [i] [j] -= w -> data [i] [j]);
 			}
 		}
-		return b.transfer();
+		return b;
 	} catch (MelderError) {
 		Melder_throw (me, U": between group SSCP not created.");
 	}
 }
 
-void Discriminant_drawTerritorialMap (Discriminant me, Graphics g,
-                                      int discriminantDirections, long d1, long d2, double xmin, double xmax,
-                                      double ymin, double ymax, int fontSize, int poolCovarianceMatrices,
-                                      int garnish) {
+void Discriminant_drawTerritorialMap (Discriminant me, Graphics g, int discriminantDirections, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, int poolCovarianceMatrices, int garnish) {
 	(void) me; (void) g; (void) discriminantDirections; (void) d1; (void) d2;
 	(void) xmin; (void) xmax; (void) ymin;
 	(void) ymax; (void) fontSize; (void) poolCovarianceMatrices; (void) garnish;
 
 }
 
-void Discriminant_drawConcentrationEllipses (Discriminant me, Graphics g,
-        double scale, int confidence, char32 *label, int discriminantDirections, long d1, long d2,
-        double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
+void Discriminant_drawConcentrationEllipses (Discriminant me, Graphics g, double scale, bool confidence, char32 *label,
+	int discriminantDirections, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish)
+{
 	long numberOfFunctions = Discriminant_getNumberOfFunctions (me);
 
 	if (! discriminantDirections) {
-		SSCPs_drawConcentrationEllipses (my groups, g, scale, confidence, label,
-		                                 d1, d2, xmin, xmax, ymin, ymax, fontSize, garnish);
+		SSCPList_drawConcentrationEllipses (my groups.get(), g, scale, confidence, label, d1, d2, xmin, xmax, ymin, ymax, fontSize, garnish);
 		return;
 	}
 
@@ -387,34 +388,33 @@ void Discriminant_drawConcentrationEllipses (Discriminant me, Graphics g,
 		return;
 	}
 
-	double *v1 = my eigenvectors[d1];
-	double *v2 = my eigenvectors[d2];
+	double *v1 = my eigen -> eigenvectors [d1];
+	double *v2 = my eigen -> eigenvectors [d2];
+
 
-	autoSSCPs thee = SSCPs_toTwoDimensions (my groups, v1, v2);
+	autoSSCPList thee = SSCPList_toTwoDimensions (my groups.get(), v1, v2);
 
-	SSCPs_drawConcentrationEllipses (thee.peek(), g, scale, confidence, label, 1, 2, xmin, xmax, ymin, ymax, fontSize, 0);
+	SSCPList_drawConcentrationEllipses (thee.get(), g, scale, confidence, label, 1, 2, xmin, xmax, ymin, ymax, fontSize, 0);
 
 	if (garnish) {
 		char32 llabel[40];
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 		Melder_sprint (llabel,40, U"function ", d2);
-		Graphics_textLeft (g, 1, llabel);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_textLeft (g, true, llabel);
+		Graphics_marksBottom (g, 2, true, true, false);
 		Melder_sprint (llabel,40, U"function ", d1);
-		Graphics_textBottom (g, 1, llabel);
+		Graphics_textBottom (g, true, llabel);
 	}
 }
 
-Discriminant TableOfReal_to_Discriminant (TableOfReal me) {
+autoDiscriminant TableOfReal_to_Discriminant (TableOfReal me) {
 	try {
 		autoDiscriminant thee = Thing_new (Discriminant);
 		long dimension = my numberOfColumns;
 
-		TableOfReal_areAllCellsDefined (me, 0, 0, 0, 0);
-
-		if (NUMdmatrix_hasInfinities (my data, 1, my numberOfRows, 1, dimension)) {
-			Melder_throw (U"Table contains infinities.");
+		if (! NUMdmatrix_hasFiniteElements(my data, 1, my numberOfRows, 1, my numberOfColumns)) {
+			Melder_throw (U"At least one of the table's elements is not finite or undefined.");
 		}
 
 		if (! TableOfReal_hasRowLabels (me)) {
@@ -422,18 +422,18 @@ Discriminant TableOfReal_to_Discriminant (TableOfReal me) {
 		}
 
 		autoTableOfReal mew = TableOfReal_sortOnlyByRowLabels (me);
-		if (! TableOfReal_hasColumnLabels (mew.peek())) {
-			TableOfReal_setSequentialColumnLabels (mew.peek(), 0, 0, U"c", 1, 1);
+		if (! TableOfReal_hasColumnLabels (mew.get())) {
+			TableOfReal_setSequentialColumnLabels (mew.get(), 0, 0, U"c", 1, 1);
 		}
 
-		thy groups = TableOfReal_to_SSCPs_byLabel (mew.peek());
-		thy total = TableOfReal_to_SSCP (mew.peek(), 0, 0, 0, 0);
+		thy groups = TableOfReal_to_SSCPList_byLabel (mew.get());
+		thy total = TableOfReal_to_SSCP (mew.get(), 0, 0, 0, 0);
 
-		if ( (thy numberOfGroups = thy groups -> size) < 2) {
+		if ((thy numberOfGroups = thy groups -> size) < 2) {
 			Melder_throw (U"Number of groups must be greater than one.");
 		}
 
-		TableOfReal_centreColumns_byRowLabel (mew.peek());
+		TableOfReal_centreColumns_byRowLabel (mew.get());
 
 		// Overall centroid and apriori probabilities and costs.
 
@@ -443,57 +443,57 @@ Discriminant TableOfReal_to_Discriminant (TableOfReal me) {
 		thy costs = NUMmatrix<double> (1, thy numberOfGroups, 1, thy numberOfGroups);
 
 		double sum = 0, scale;
-		for (long k = 1; k <= thy numberOfGroups; k++) {
-			SSCP m = (SSCP) thy groups -> item[k];
+		for (long k = 1; k <= thy numberOfGroups; k ++) {
+			SSCP m = thy groups->at [k];
 			sum += scale = SSCP_getNumberOfObservations (m);
-			for (long j = 1; j <= dimension; j++) {
-				centroid[j] += scale * m -> centroid[j];
+			for (long j = 1; j <= dimension; j ++) {
+				centroid [j] += scale * m -> centroid [j];
 			}
 		}
 
-		for	(long j = 1; j <= dimension; j++) {
-			centroid[j] /= sum;
+		for	(long j = 1; j <= dimension; j ++) {
+			centroid [j] /= sum;
 		}
 
-		for (long k = 1; k <= thy numberOfGroups; k++) {
-			SSCP m = (SSCP) thy groups -> item[k];
+		for (long k = 1; k <= thy numberOfGroups; k ++) {
+			SSCP m = thy groups->at [k];
 			scale = SSCP_getNumberOfObservations (m);
 			thy aprioriProbabilities[k] = scale / my numberOfRows;
-			for (long j = 1; j <= dimension; j++) {
-				between[k][j] = sqrt (scale) * (m -> centroid[j] - centroid[j]);
+			for (long j = 1; j <= dimension; j ++) {
+				between [k] [j] = sqrt (scale) * (m -> centroid [j] - centroid [j]);
 			}
 		}
 
 		// We need to solve B'B.x = lambda W'W.x, where B'B and W'W are the between and within covariance matrices.
 		// We do not calculate these covariance matrices directly from the data but instead use the GSVD to solve for
 		// the eigenvalues and eigenvectors of the equation.
-
-		Eigen_initFromSquareRootPair (thee.peek(), between.peek(), thy numberOfGroups, dimension, mew -> data, my numberOfRows);
+		
+		thy eigen = Thing_new (Eigen);
+		Eigen_initFromSquareRootPair (thy eigen.get(), between.peek(), thy numberOfGroups, dimension, mew -> data, my numberOfRows);
 
 		// Default priors and costs
 
-		for (long k = 1; k <= thy numberOfGroups; k++) {
-			for (long j = k + 1; j <= thy numberOfGroups; j++) {
-				thy costs[k][j] = thy costs[j][k] = 1;
+		for (long igroup = 1; igroup <= thy numberOfGroups; igroup ++) {
+			for (long jgroup = igroup + 1; jgroup <= thy numberOfGroups; jgroup ++) {
+				thy costs [igroup] [jgroup] = thy costs [jgroup] [igroup] = 1.0;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Discriminant not created.");
 	}
 }
 
-Configuration Discriminant_and_TableOfReal_to_Configuration (Discriminant me, TableOfReal thee, long numberOfDimensions) {
+autoConfiguration Discriminant_and_TableOfReal_to_Configuration (Discriminant me, TableOfReal thee, long numberOfDimensions) {
 	try {
 		if (numberOfDimensions == 0) {
 			numberOfDimensions = Discriminant_getNumberOfFunctions (me);
 		}
 		autoConfiguration him = Configuration_create (thy numberOfRows, numberOfDimensions);
-		Configuration thim = him.peek();
-		Eigen_and_TableOfReal_project_into (me, thee, 1, thy numberOfColumns, & thim, 1, numberOfDimensions);
-		TableOfReal_copyLabels (thee, thim, 1, 0);
-		TableOfReal_setSequentialColumnLabels (him.peek(), 0, 0, U"Eigenvector ", 1, 1);
-		return him.transfer();
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (my eigen.get(), thee, 1, him.get(), 1, numberOfDimensions);
+		TableOfReal_copyLabels (thee, him.get(), 1, 0);
+		TableOfReal_setSequentialColumnLabels (him.get(), 0, 0, U"Eigenvector ", 1, 1);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Configuration not created.");
 	}
@@ -504,73 +504,72 @@ Configuration Discriminant_and_TableOfReal_to_Configuration (Discriminant me, Ta
 	Input matrix (li) is the inverse L^-1 of the Cholesky decomposition
 	S = L.L'.
 */
-static double mahalanobisDistanceSq (double **li, long n, double *v, double *m,
-                                     double *buf) {
-	for (long i = 1; i <= n; i++) {
-		buf[i] = v[i] - m[i];
+static double mahalanobisDistanceSq (double **li, long n, double *v, double *m, double *buf) {
+	for (long i = 1; i <= n; i ++) {
+		buf [i] = v [i] - m [i];
 	}
 
-	double chisq = 0;
+	double chisq = 0.0;
 	for (long i = n; i > 0; i--) {
-		double t = 0;
-		for (long j = 1; j <= i; j++) {
-			t += li[i][j] * buf[j];
+		double t = 0.0;
+		for (long j = 1; j <= i; j ++) {
+			t += li [i] [j] * buf [j];
 		}
 		chisq += t * t;
 	}
 	return chisq;
 }
 
-TableOfReal Discriminant_and_TableOfReal_mahalanobis (Discriminant me, TableOfReal thee, long group, bool poolCovarianceMatrices) {
+autoTableOfReal Discriminant_and_TableOfReal_mahalanobis (Discriminant me, TableOfReal thee, long group, bool poolCovarianceMatrices) {
 	try {
 		if (group < 1 || group > my numberOfGroups) {
 			Melder_throw (U"Group does not exist.");
 		}
-		autoSSCP pool = SSCPs_to_SSCP_pool (my groups);
-		autoCovariance covg = SSCP_to_Covariance (pool.peek(), my numberOfGroups);
-		autoCovariance cov = SSCP_to_Covariance ( (SSCP) my groups -> item[group], 1);
-		autoTableOfReal him = 0;
+		autoSSCP pool = SSCPList_to_SSCP_pool (my groups.get());
+		autoCovariance covg = SSCP_to_Covariance (pool.get(), my numberOfGroups);
+		autoCovariance cov = SSCP_to_Covariance (my groups->at [group], 1);
+		autoTableOfReal him;
 		if (poolCovarianceMatrices) { // use group mean instead of overall mean!
 			NUMvector_copyElements (cov -> centroid, covg -> centroid, 1, cov -> numberOfColumns);
-			him.reset (Covariance_and_TableOfReal_mahalanobis (covg.peek(), thee, false));
+			him = Covariance_and_TableOfReal_mahalanobis (covg.get(), thee, false);
 		} else {
-			him.reset (Covariance_and_TableOfReal_mahalanobis (cov.peek(), thee, false));
+			him = Covariance_and_TableOfReal_mahalanobis (cov.get(), thee, false);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not created.");
 	}
 }
 
-ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable (Discriminant me, TableOfReal thee,
+autoClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable (Discriminant me, TableOfReal thee,
         int poolCovarianceMatrices, int useAprioriProbabilities) {
 	try {
-		long g = Discriminant_getNumberOfGroups (me);
-		long p = Eigen_getDimensionOfComponents (me);
-		long m = thy numberOfRows;
-
-		if (p != thy numberOfColumns) Melder_throw
-			(U"The number of columns does not agree with the dimension of the discriminant.");
+		long g = Discriminant_getNumberOfGroups (me);   // ppgb wat betekent g?
+		long p = Eigen_getDimensionOfComponents (my eigen.get());   // ppgb wat betekent p?
+		long m = thy numberOfRows;   // ppgb wat betekent m?
 
+		if (p != thy numberOfColumns) {
+			Melder_throw (U"The number of columns does not agree with the dimension of the discriminant.");
+		}
 		autoNUMvector<double> log_p (1, g);
 		autoNUMvector<double> log_apriori (1, g);
 		autoNUMvector<double> ln_determinant (1, g);
 		autoNUMvector<double> buf (1, p);
 		autoNUMvector<SSCP> sscpvec (1, g);
-		autoSSCP pool = SSCPs_to_SSCP_pool (my groups);
+		autoSSCP pool = SSCPList_to_SSCP_pool (my groups.get());
 		autoClassificationTable him = ClassificationTable_create (m, g);
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, m);
 
 		// Scale the sscp to become a covariance matrix.
 
-		for (long i = 1; i <= p; i++) {
-			for (long k = i; k <= p; k++) {
-				pool -> data[k][i] = (pool -> data[i][k] /= (pool -> numberOfObservations - g));
+		for (long i = 1; i <= p; i ++) {
+			for (long k = i; k <= p; k ++) {
+				pool -> data [k] [i] = pool -> data [i] [k] /= pool -> numberOfObservations - g;
 			}
 		}
 
 		double lnd;
-		autoSSCPs agroups = 0; SSCPs groups;
+		autoSSCPList agroups; SSCPList groups;   // ppgb FIXME dit kan niet goed izjn
 		if (poolCovarianceMatrices) {
 			/*
 				Covariance matrix S can be decomposed as S = L.L'. Calculate L^-1.
@@ -579,39 +578,40 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable (Discrim
 			*/
 
 			NUMlowerCholeskyInverse (pool -> data, p, &lnd);
-			for (long j = 1; j <= g; j++) {
-				ln_determinant[j] = lnd;
-				sscpvec[j] = pool.peek();
+			for (long j = 1; j <= g; j ++) {
+				ln_determinant [j] = lnd;
+				sscpvec [j] = pool.get();
 			}
-			groups = (SSCPs) my groups;
+			groups = my groups.get();
 		} else {
 			// Calculate the inverses of all group covariance matrices.
 			// In case of a singular matrix, substitute inverse of pooled.
 
-			agroups.reset (Data_copy ( (SSCPs) my groups)); groups = agroups.peek();
+			agroups = Data_copy (my groups.get());
+			groups = agroups.get();
 			long npool = 0;
-			for (long j = 1; j <= g; j++) {
-				SSCP t = (SSCP) groups -> item[j];
+			for (long j = 1; j <= g; j ++) {
+				SSCP t = groups->at [j];
 				long no = (long) floor (SSCP_getNumberOfObservations (t));
-				for (long i = 1; i <= p; i++) {
-					for (long k = i; k <= p; k++) {
-						t -> data[k][i] = (t -> data[i][k] /= (no - 1));
+				for (long i = 1; i <= p; i ++) {
+					for (long k = i; k <= p; k ++) {
+						t -> data [k] [i] = t -> data [i] [k] /= no - 1;
 					}
 				}
-				sscpvec[j] = (SSCP) groups -> item[j];
+				sscpvec [j] = groups->at [j];
 				try {
-					NUMlowerCholeskyInverse (t -> data, p, &ln_determinant[j]);
+					NUMlowerCholeskyInverse (t -> data, p, & ln_determinant [j]);
 				} catch (MelderError) {
 					// Try the alternative: the pooled covariance matrix.
 					// Clear the error.
 
 					Melder_clearError ();
 					if (npool == 0) {
-						NUMlowerCholeskyInverse (pool -> data, p, &lnd);
+						NUMlowerCholeskyInverse (pool -> data, p, & lnd);
 					}
-					npool++;
-					sscpvec[j] = pool.peek();
-					ln_determinant[j] = lnd;
+					npool ++;
+					sscpvec [j] = pool.get();
+					ln_determinant [j] = lnd;
 				}
 			}
 			if (npool > 0) {
@@ -621,12 +621,12 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable (Discrim
 
 		// Labels for columns in ClassificationTable
 
-		for (long j = 1; j <= g; j++) {
-			const char32 *name = Thing_getName ( (Thing) my groups -> item[j]);
+		for (long j = 1; j <= g; j ++) {
+			const char32 *name = Thing_getName (my groups->at [j]);
 			if (! name) {
 				name = U"?";
 			}
-			TableOfReal_setColumnLabel (him.peek(), j, name);
+			TableOfReal_setColumnLabel (him.get(), j, name);
 		}
 
 		// Normalize the sum of the apriori probabilities to 1.
@@ -634,42 +634,41 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable (Discrim
 
 		NUMvector_normalize1 (my aprioriProbabilities, g);
 		double logg = log (g);
-		for (long j = 1; j <= g; j++) {
-			log_apriori[j] = useAprioriProbabilities ? log (my aprioriProbabilities[j]) : - logg;
+		for (long j = 1; j <= g; j ++) {
+			log_apriori [j] = useAprioriProbabilities ? log (my aprioriProbabilities [j]) : - logg;
 		}
 
 		// Generalized squared distance function:
 		// D^2(x) = (x - mu)' S^-1 (x - mu) + ln (determinant(S)) - 2 ln (apriori)
 
-		for (long i = 1; i <= m; i++) {
-			double norm = 0, pt_max = -1e38;
-			for (long j = 1; j <= g; j++) {
-				SSCP t = (SSCP) groups -> item[j];
-				double md = mahalanobisDistanceSq (sscpvec[j] -> data, p, thy data[i], t -> centroid, buf.peek());
-				double pt = log_apriori[j] - 0.5 * (ln_determinant[j] + md);
+		for (long i = 1; i <= m; i ++) {
+			double norm = 0.0, pt_max = -1e308;
+			for (long j = 1; j <= g; j ++) {
+				SSCP t = groups->at [j];
+				double md = mahalanobisDistanceSq (sscpvec [j] -> data, p, thy data [i], t -> centroid, buf.peek());
+				double pt = log_apriori [j] - 0.5 * (ln_determinant [j] + md);
 				if (pt > pt_max) {
 					pt_max = pt;
 				}
 				log_p[j] = pt;
 			}
-			for (long j = 1; j <= g; j++) {
-				norm += (log_p[j] = exp (log_p[j] - pt_max));
+			for (long j = 1; j <= g; j ++) {
+				norm += log_p [j] = exp (log_p [j] - pt_max);
 			}
-			for (long j = 1; j <= g; j++) {
-				his data[i][j] = log_p[j] / norm;
+			for (long j = 1; j <= g; j ++) {
+				his data [i] [j] = log_p [j] / norm;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"ClassificationTable from Discriminant & TableOfReal not created.");
 	}
 }
 
-ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw (Discriminant me, TableOfReal thee,
-        int poolCovarianceMatrices, int useAprioriProbabilities, double alpha, double minProb, TableOfReal *displacements) {
+autoClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw (Discriminant me, TableOfReal thee, int poolCovarianceMatrices, int useAprioriProbabilities, double alpha, double minProb, autoTableOfReal *displacements) {
 	try {
 		long g = Discriminant_getNumberOfGroups (me);
-		long p = Eigen_getDimensionOfComponents (me);
+		long p = Eigen_getDimensionOfComponents (my eigen.get());
 		long m = thy numberOfRows;
 
 		if (p != thy numberOfColumns) Melder_throw
@@ -682,60 +681,62 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw (Disc
 		autoNUMvector<double> displacement (1, p);
 		autoNUMvector<double> x (1, p);
 		autoNUMvector<SSCP> sscpvec (1, g);
-		autoSSCP pool = SSCPs_to_SSCP_pool (my groups);
+		autoSSCP pool = SSCPList_to_SSCP_pool (my groups.get());
 		autoClassificationTable him = ClassificationTable_create (m, g);
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, m);
 		autoTableOfReal adisplacements = Data_copy (thee);
 
 		// Scale the sscp to become a covariance matrix.
 
-		for (long i = 1; i <= p; i++) {
-			for (long k = i; k <= p; k++) {
-				pool -> data[k][i] = (pool -> data[i][k] /= (pool -> numberOfObservations - g));
+		for (long i = 1; i <= p; i ++) {
+			for (long k = i; k <= p; k ++) {
+				pool -> data [k] [i] = pool -> data [i] [k] /= pool -> numberOfObservations - g;
 			}
 		}
 
 		double lnd;
-		autoSSCPs agroups = 0; SSCPs groups;
+		autoSSCPList agroups;
+		SSCPList groups;
 		if (poolCovarianceMatrices) {
 			// Covariance matrix S can be decomposed as S = L.L'. Calculate L^-1.
 			// L^-1 will be used later in the Mahalanobis distance calculation:
 			// v'.S^-1.v == v'.L^-1'.L^-1.v == (L^-1.v)'.(L^-1.v).
 
-			NUMlowerCholeskyInverse (pool -> data, p, &lnd);
-			for (long j = 1; j <= g; j++) {
-				ln_determinant[j] = lnd;
-				sscpvec[j] = pool.peek();
+			NUMlowerCholeskyInverse (pool -> data, p, & lnd);
+			for (long j = 1; j <= g; j ++) {
+				ln_determinant [j] = lnd;
+				sscpvec [j] = pool.get();
 			}
-			groups = my groups;
+			groups = my groups.get();
 		} else {
 			//Calculate the inverses of all group covariance matrices.
 			// In case of a singular matrix, substitute inverse of pooled.
 
-			agroups.reset (Data_copy ( (SSCPs) my groups)); groups = agroups.peek();
+			agroups = Data_copy (my groups.get()); 
+			groups = agroups.get();
 			long npool = 0;
-			for (long j = 1; j <= g; j++) {
-				SSCP t = (SSCP) groups -> item[j];
+			for (long j = 1; j <= g; j ++) {
+				SSCP t = groups->at [j];
 				long no = (long) floor (SSCP_getNumberOfObservations (t));
-				for (long i = 1; i <= p; i++) {
-					for (long k = i; k <= p; k++) {
-						t -> data[k][i] = (t -> data[i][k] /= (no - 1));
+				for (long i = 1; i <= p; i ++) {
+					for (long k = i; k <= p; k ++) {
+						t -> data [k] [i] = t -> data [i] [k] /= no - 1;
 					}
 				}
-				sscpvec[j] = (SSCP) groups -> item[j];
+				sscpvec [j] = groups->at [j];
 				try {
-					NUMlowerCholeskyInverse (t -> data, p, &ln_determinant[j]);
+					NUMlowerCholeskyInverse (t -> data, p, & ln_determinant [j]);
 				} catch (MelderError) {
 					// Try the alternative: the pooled covariance matrix.
 					// Clear the error.
 
 					Melder_clearError ();
 					if (npool == 0) {
-						NUMlowerCholeskyInverse (pool -> data, p, &lnd);
+						NUMlowerCholeskyInverse (pool -> data, p, & lnd);
 					}
-					npool++;
-					sscpvec[j] = pool.peek();
-					ln_determinant[j] = lnd;
+					npool ++;
+					sscpvec [j] = pool.get();
+					ln_determinant [j] = lnd;
 				}
 			}
 			if (npool > 0) {
@@ -745,12 +746,12 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw (Disc
 
 		// Labels for columns in ClassificationTable
 
-		for (long j = 1; j <= g; j++) {
-			const char32 *name = Thing_getName ( (Thing) my groups -> item[j]);
+		for (long j = 1; j <= g; j ++) {
+			const char32 *name = Thing_getName (my groups->at [j]);
 			if (! name) {
 				name = U"?";
 			}
-			TableOfReal_setColumnLabel (him.peek(), j, name);
+			TableOfReal_setColumnLabel (him.get(), j, name);
 		}
 
 		// Normalize the sum of the apriori probabilities to 1.
@@ -758,60 +759,61 @@ ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw (Disc
 
 		double logg = log (g);
 		NUMvector_normalize1 (my aprioriProbabilities, g);
-		for (long j = 1; j <= g; j++) {
-			log_apriori[j] = useAprioriProbabilities ? log (my aprioriProbabilities[j]) : - logg;
+		for (long j = 1; j <= g; j ++) {
+			log_apriori[j] = ( useAprioriProbabilities ? log (my aprioriProbabilities[j]) : - logg );
 		}
 
 		// Generalized squared distance function:
 		// D^2(x) = (x - mu)' S^-1 (x - mu) + ln (determinant(S)) - 2 ln (apriori)
 
-		for (long i = 1; i <= m; i++) {
+		for (long i = 1; i <= m; i ++) {
 			SSCP winner;
-			double norm = 0, pt_max = -1e38;
+			double norm = 0, pt_max = -1e308;
 			long iwinner = 1;
-			for (long k = 1; k <= p; k++) {
-				x[k] = thy data[i][k] + displacement[k];
+			for (long k = 1; k <= p; k ++) {
+				x [k] = thy data [i] [k] + displacement [k];
 			}
-			for (long j = 1; j <= g; j++) {
-				SSCP t = (SSCP) groups -> item[j];
-				double md = mahalanobisDistanceSq (sscpvec[j] -> data, p, x.peek(), t -> centroid, buf.peek());
-				double pt = log_apriori[j] - 0.5 * (ln_determinant[j] + md);
+			for (long j = 1; j <= g; j ++) {
+				SSCP t = groups->at [j];
+				double md = mahalanobisDistanceSq (sscpvec [j] -> data, p, x.peek(), t -> centroid, buf.peek());
+				double pt = log_apriori [j] - 0.5 * (ln_determinant [j] + md);
 				if (pt > pt_max) {
-					pt_max = pt; iwinner = j;
+					pt_max = pt;
+					iwinner = j;
 				}
-				log_p[j] = pt;
+				log_p [j] = pt;
 			}
-			for (long j = 1; j <= g; j++) {
-				norm += (log_p[j] = exp (log_p[j] - pt_max));
+			for (long j = 1; j <= g; j ++) {
+				norm += log_p [j] = exp (log_p [j] - pt_max);
 			}
 
-			for (long j = 1; j <= g; j++) {
-				his data[i][j] = log_p[j] / norm;
+			for (long j = 1; j <= g; j ++) {
+				his data [i] [j] = log_p [j] / norm;
 			}
 
 			// Save old displacement, calculate new displacement
 
-			winner = (SSCP) groups -> item[iwinner];
-			for (long k = 1; k <= p; k++) {
-				adisplacements -> data[i][k] = displacement[k];
-				if (his data[i][iwinner] > minProb) {
-					double delta_k = winner -> centroid[k] - x[k];
-					displacement[k] += alpha * delta_k;
+			winner = groups->at [iwinner];
+			for (long k = 1; k <= p; k ++) {
+				adisplacements -> data [i] [k] = displacement [k];
+				if (his data [i] [iwinner] > minProb) {
+					double delta_k = winner -> centroid [k] - x [k];
+					displacement [k] += alpha * delta_k;
 				}
 			}
 		}
-		*displacements = adisplacements.transfer();
-		return him.transfer();
+		*displacements = adisplacements.move();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"ClassificationTable for Weenink procedure not created.");
 	}
 }
 
-Configuration TableOfReal_to_Configuration_lda (TableOfReal me, long numberOfDimensions) {
+autoConfiguration TableOfReal_to_Configuration_lda (TableOfReal me, long numberOfDimensions) {
 	try {
 		autoDiscriminant thee = TableOfReal_to_Discriminant (me);
-		autoConfiguration him = Discriminant_and_TableOfReal_to_Configuration (thee.peek(), me, numberOfDimensions);
-		return him.transfer();
+		autoConfiguration him = Discriminant_and_TableOfReal_to_Configuration (thee.get(), me, numberOfDimensions);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": Configuration with lda data not created.");
 	}
@@ -820,4 +822,4 @@ Configuration TableOfReal_to_Configuration_lda (TableOfReal me, long numberOfDim
 #undef MAX
 #undef MIN
 
-/* End of file Discriminant.c 1043*/
+/* End of file Discriminant.cpp */
diff --git a/dwtools/Discriminant.h b/dwtools/Discriminant.h
index 7f8204b..9d42e18 100644
--- a/dwtools/Discriminant.h
+++ b/dwtools/Discriminant.h
@@ -2,21 +2,20 @@
 #define _Discriminant_h_
 /* Discriminant.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -26,9 +25,8 @@
 #include "SSCP.h"
 
 #include "Discriminant_def.h"
-oo_CLASS_CREATE (Discriminant, Eigen);
 
-Discriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues, long dimension);
+autoDiscriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues, long dimension);
 
 long Discriminant_groupLabelToIndex (Discriminant me, const char32 *label);
 
@@ -43,12 +41,13 @@ long Discriminant_getNumberOfFunctions (Discriminant me);
 double Discriminant_getWilksLambda (Discriminant me, long numberOfDimensions);
 
 void Discriminant_getPartialDiscriminationProbability (Discriminant me,
-	long numberOfDimensions, double *probability, double *chisq, long *ndf);
+	long numberOfDimensions, double *probability, double *chisq, double *df);
 
 double Discriminant_getConcentrationEllipseArea (Discriminant me, long group,
-	double scale, int confidence, int discriminantDirections, long d1, long d2);
+	double scale, bool confidence, int discriminantDirections, long d1, long d2);
 
 double Discriminant_getLnDeterminant_group (Discriminant me, long group);
+
 double Discriminant_getLnDeterminant_total (Discriminant me);
 
 void Discriminant_drawTerritorialMap (Discriminant me, Graphics g, int discriminantDirections,
@@ -56,39 +55,39 @@ void Discriminant_drawTerritorialMap (Discriminant me, Graphics g, int discrimin
 	int poolCovarianceMatrices, int garnish);
 
 void Discriminant_drawConcentrationEllipses (Discriminant me, Graphics g,
-	double scale, int confidence, char32 *label, int discriminantDirections,
+	double scale, bool confidence, char32 *label, int discriminantDirections,
 	long d1, long d2, double xmin, double xmax, double ymin, double ymax,
 	int fontSize, int garnish);
 
-TableOfReal Discriminant_extractCoefficients (Discriminant me, int choice);
+autoTableOfReal Discriminant_extractCoefficients (Discriminant me, int choice);
+
+autoTableOfReal Discriminant_extractGroupCentroids (Discriminant me);
+
+autoTableOfReal Discriminant_extractGroupStandardDeviations (Discriminant me);
+
+autoSSCP Discriminant_extractPooledWithinGroupsSSCP (Discriminant me);
+
+autoSSCP Discriminant_extractWithinGroupSSCP (Discriminant me, long index);
+
+autoSSCP Discriminant_extractBetweenGroupsSSCP (Discriminant me);
 
-TableOfReal Discriminant_extractGroupCentroids (Discriminant me);
-TableOfReal Discriminant_extractGroupStandardDeviations (Discriminant me);
+autoStrings Discriminant_extractGroupLabels (Discriminant me);
 
-SSCP Discriminant_extractPooledWithinGroupsSSCP (Discriminant me);
-SSCP Discriminant_extractWithinGroupSSCP (Discriminant me, long index);
-SSCP Discriminant_extractBetweenGroupsSSCP (Discriminant me);
-Strings Discriminant_extractGroupLabels (Discriminant me);
 void Discriminant_setGroupLabels (Discriminant me, Strings thee);
 
-Configuration Discriminant_and_TableOfReal_to_Configuration
-	(Discriminant me, TableOfReal thee, long numberOfDimensions);
+autoConfiguration Discriminant_and_TableOfReal_to_Configuration	(Discriminant me, TableOfReal thee, long numberOfDimensions);
 
-ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable
-	(Discriminant me, TableOfReal thee, int poolCovarianceMatrices,
-	int useAprioriProbabilities);
+autoClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable
+	(Discriminant me, TableOfReal thee, int poolCovarianceMatrices,	int useAprioriProbabilities);
 
-ClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw
-	(Discriminant me, TableOfReal thee, int poolCovarianceMatrices,
-	int useAprioriProbabilities, double alpha, double minProb,
-	TableOfReal *displacements);
+autoClassificationTable Discriminant_and_TableOfReal_to_ClassificationTable_dw
+	(Discriminant me, TableOfReal thee, int poolCovarianceMatrices,	int useAprioriProbabilities, double alpha, double minProb, autoTableOfReal *displacements);
 
-TableOfReal Discriminant_and_TableOfReal_mahalanobis (Discriminant me, TableOfReal thee, long group, bool poolCovarianceMatrices);
+autoTableOfReal Discriminant_and_TableOfReal_mahalanobis (Discriminant me, TableOfReal thee, long group, bool poolCovarianceMatrices);
 /* Mahalanobis distance with respect to group mean */
 
-Discriminant TableOfReal_to_Discriminant (TableOfReal me);
+autoDiscriminant TableOfReal_to_Discriminant (TableOfReal me);
 
-Configuration TableOfReal_to_Configuration_lda (TableOfReal me,
-	long numberOfDimensions);
+autoConfiguration TableOfReal_to_Configuration_lda (TableOfReal me, long numberOfDimensions);
 
 #endif /* _Discriminant_h_ */
diff --git a/dwtools/Discriminant_Pattern_Categories.cpp b/dwtools/Discriminant_Pattern_Categories.cpp
index 14954cd..328b12e 100644
--- a/dwtools/Discriminant_Pattern_Categories.cpp
+++ b/dwtools/Discriminant_Pattern_Categories.cpp
@@ -1,20 +1,19 @@
 /* Discriminant_Pattern_Categories.cpp
  *
- * Copyright (C) 2004-2011 David Weenink
+ * Copyright (C) 2004-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,24 +24,22 @@
 #include "TableOfReal.h"
 #include "Matrix_Categories.h"
 
-Discriminant Pattern_and_Categories_to_Discriminant (Pattern me, Categories thee) {
+autoDiscriminant Pattern_and_Categories_to_Discriminant (Pattern me, Categories thee) {
 	try {
 		autoTableOfReal t = Matrix_and_Categories_to_TableOfReal (me, thee);
-		autoDiscriminant him = TableOfReal_to_Discriminant (t.peek());
-		return him.transfer();
+		autoDiscriminant him = TableOfReal_to_Discriminant (t.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Discriminant not created from Pattern & Categories.");
 	}
 }
 
-Categories Discriminant_and_Pattern_to_Categories (Discriminant me, Pattern thee,
-        int poolCovarianceMatrices, int useAprioriProbabilities) {
+autoCategories Discriminant_and_Pattern_to_Categories (Discriminant me, Pattern thee, int poolCovarianceMatrices, int useAprioriProbabilities) {
 	try {
 		autoTableOfReal t = Matrix_to_TableOfReal (thee);
-		autoClassificationTable ct = Discriminant_and_TableOfReal_to_ClassificationTable (me, t.peek(),
-		                             poolCovarianceMatrices, useAprioriProbabilities);
-		autoCategories him =  ClassificationTable_to_Categories_maximumProbability (ct.peek());
-		return him.transfer();
+		autoClassificationTable ct = Discriminant_and_TableOfReal_to_ClassificationTable (me, t.get(), poolCovarianceMatrices, useAprioriProbabilities);
+		autoCategories him =  ClassificationTable_to_Categories_maximumProbability (ct.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Categories not created from Pattern & Discriminant.");
 	}
diff --git a/dwtools/Discriminant_Pattern_Categories.h b/dwtools/Discriminant_Pattern_Categories.h
index a6b9738..7103179 100644
--- a/dwtools/Discriminant_Pattern_Categories.h
+++ b/dwtools/Discriminant_Pattern_Categories.h
@@ -2,21 +2,20 @@
 #define _Discriminant_Pattern_Categories_h_
 /* Discriminant_Pattern_Categories.h
  *
- * Copyright (C) 2004-2011 David Weenink
+ * Copyright (C) 2004-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,9 +33,8 @@
 	#include "Categories.h"
 #endif
 
-Discriminant Pattern_and_Categories_to_Discriminant (Pattern me, Categories thee);
+autoDiscriminant Pattern_and_Categories_to_Discriminant (Pattern me, Categories thee);
 
-Categories Discriminant_and_Pattern_to_Categories (Discriminant me, Pattern thee, 
-	int poolCovarianceMatrices,int useAprioriProbabilities);
+autoCategories Discriminant_and_Pattern_to_Categories (Discriminant me, Pattern thee, int poolCovarianceMatrices, int useAprioriProbabilities);
 
 #endif /* _Discriminant_Pattern_Categories_h_ */
diff --git a/dwtools/Discriminant_def.h b/dwtools/Discriminant_def.h
index 6e9d2ef..8e2161a 100644
--- a/dwtools/Discriminant_def.h
+++ b/dwtools/Discriminant_def.h
@@ -2,28 +2,40 @@
  *
  * Copyright (C) 1993-2008 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Discriminant
-oo_DEFINE_CLASS (Discriminant, Eigen)
+oo_DEFINE_CLASS (Discriminant, Daata)
+	oo_FROM (1)
+		oo_AUTO_OBJECT (Eigen, 0, eigen)
+	oo_ENDFROM
+
+	#if oo_READING
+		if (formatVersion < 1) {
+			eigen = Thing_new (Eigen);
+			oo_LONG (eigen -> numberOfEigenvalues)
+			oo_LONG (eigen -> dimension)
+			oo_DOUBLE_VECTOR (eigen -> eigenvalues, eigen -> numberOfEigenvalues)
+			oo_DOUBLE_MATRIX (eigen -> eigenvectors, eigen -> numberOfEigenvalues, eigen -> dimension)
+		}
+	#endif
 	
 	oo_LONG (numberOfGroups)
-	oo_OBJECT (SSCPs, 0, groups)
-	oo_OBJECT (SSCP, 0, total)
+	oo_AUTO_OBJECT (SSCPList, 0, groups)
+	oo_AUTO_OBJECT (SSCP, 0, total)
 	oo_DOUBLE_VECTOR (aprioriProbabilities, numberOfGroups)
 	oo_DOUBLE_MATRIX (costs, numberOfGroups, numberOfGroups)
 
diff --git a/dwtools/Distance.cpp b/dwtools/Distance.cpp
index e35dc94..b06aa56 100644
--- a/dwtools/Distance.cpp
+++ b/dwtools/Distance.cpp
@@ -1,20 +1,19 @@
 /* Distance.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,11 +25,11 @@
 
 Thing_implement (Distance, Proximity, 0);
 
-Distance Distance_create (long numberOfPoints) {
+autoDistance Distance_create (long numberOfPoints) {
 	try {
 		autoDistance me = Thing_new (Distance);
-		Proximity_init (me.peek(), numberOfPoints);
-		return me.transfer();
+		Proximity_init (me.get(), numberOfPoints);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
diff --git a/dwtools/Distance.h b/dwtools/Distance.h
index 727f0a2..479911e 100644
--- a/dwtools/Distance.h
+++ b/dwtools/Distance.h
@@ -2,21 +2,20 @@
 #define _Distance_h_
 /* Distance.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Proximity.h"
@@ -25,7 +24,7 @@
 Thing_define (Distance, Proximity) {
 };
 
-Distance Distance_create (long numberOfPoints);
+autoDistance Distance_create (long numberOfPoints);
 
 void Distance_drawDendogram (Distance me, Graphics g, int method);
 
diff --git a/dwtools/EEG_extensions.cpp b/dwtools/EEG_extensions.cpp
index 96714b5..4c620d9 100644
--- a/dwtools/EEG_extensions.cpp
+++ b/dwtools/EEG_extensions.cpp
@@ -1,20 +1,19 @@
 /* EEG_extensions.cpp
  *
- * Copyright (C) 2012-2014 David Weenink
+ * Copyright (C) 2012-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -26,17 +25,17 @@
 #include "Spectrum_extensions.h"
 #include "Sound_and_Spectrum.h"
 
-static EEG EEG_copyWithoutSound (EEG me) {
+static autoEEG EEG_copyWithoutSound (EEG me) {
 	try {
  		autoEEG thee = EEG_create (my xmin, my xmax);
 		thy numberOfChannels = my numberOfChannels;
-		thy textgrid = (TextGrid) Data_copy (my textgrid);
+		thy textgrid = Data_copy (my textgrid.get());
 		autostring32vector channelNames (1, my numberOfChannels);
 		for (long i = 1; i <= my numberOfChannels; i++) {
 			channelNames[i] = Melder_dup (my channelNames[i]);
 		}
 		thy channelNames = channelNames.transfer();
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not copied.");
 	}
@@ -81,7 +80,7 @@ static void EEG_setChannelNames_selected (EEG me, const char32 *precursor, long
 	}
 }
 
-CrossCorrelationTable EEG_to_CrossCorrelationTable (EEG me, double startTime, double endTime, double lagStep, const char32 *channelRanges)
+autoCrossCorrelationTable EEG_to_CrossCorrelationTable (EEG me, double startTime, double endTime, double lagStep, const char32 *channelRanges)
 {
 	try {
 		// autowindow
@@ -97,36 +96,36 @@ CrossCorrelationTable EEG_to_CrossCorrelationTable (EEG me, double startTime, do
 		}
 		autoEEG thee = EEG_extractPart (me, startTime, endTime, true);
 		long numberOfChannels;
-		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (channelRanges, thy numberOfChannels, & numberOfChannels, NULL, U"channel", true), 1);
-		autoSound soundPart = Sound_copyChannelRanges (thy sound, channelRanges);
-		autoCrossCorrelationTable him = Sound_to_CrossCorrelationTable (soundPart.peek(), startTime, endTime, lagStep);
+		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (channelRanges, thy numberOfChannels, & numberOfChannels, nullptr, U"channel", true), 1);
+		autoSound soundPart = Sound_copyChannelRanges (thy sound.get(), channelRanges);
+		autoCrossCorrelationTable him = Sound_to_CrossCorrelationTable (soundPart.get(), startTime, endTime, lagStep);
 		// assign channel names
 		for (long i = 1; i <= numberOfChannels; i++) {
 			long ichannel = channels[i];
 			char32 *label = my channelNames[ichannel];
-			TableOfReal_setRowLabel (him.peek(), i, label);
-			TableOfReal_setColumnLabel (him.peek(), i, label);
+			TableOfReal_setRowLabel (him.get(), i, label);
+			TableOfReal_setColumnLabel (him.get(), i, label);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no CrossCorrelationTable calculated.");
 	}
 }
 
-Covariance EEG_to_Covariance (EEG me, double startTime, double endTime, const char32 *channelRanges)
+autoCovariance EEG_to_Covariance (EEG me, double startTime, double endTime, const char32 *channelRanges)
 {
 	try {
 		double lagStep = 0.0;
 		autoCrossCorrelationTable thee = EEG_to_CrossCorrelationTable (me, startTime, endTime, lagStep, channelRanges);
         autoCovariance him = Thing_new (Covariance);
-        thy structCrossCorrelationTable :: v_copy (him.peek());
-		return him.transfer();
+        thy structCrossCorrelationTable :: v_copy (him.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Covariance calculated.");
 	}
 }
 
-CrossCorrelationTables EEG_to_CrossCorrelationTables (EEG me, double startTime, double endTime, double lagStep, long ncovars, const char32 *channelRanges) {
+autoCrossCorrelationTableList EEG_to_CrossCorrelationTableList (EEG me, double startTime, double endTime, double lagStep, long ncovars, const char32 *channelRanges) {
 	try {
 		// autowindow
 		if (startTime == endTime) {
@@ -141,54 +140,54 @@ CrossCorrelationTables EEG_to_CrossCorrelationTables (EEG me, double startTime,
 		}
 		autoEEG thee = EEG_extractPart (me, startTime, endTime, true);
 		long numberOfChannels;
-		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (channelRanges, thy numberOfChannels, & numberOfChannels, NULL, U"channel", true), 1);
-		autoSound soundPart = Sound_copyChannelRanges (thy sound, channelRanges);
-		autoCrossCorrelationTables him = Sound_to_CrossCorrelationTables (soundPart.peek(), startTime, endTime, lagStep, ncovars);
-		return him.transfer();
+		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (channelRanges, thy numberOfChannels, & numberOfChannels, nullptr, U"channel", true), 1);
+		autoSound soundPart = Sound_copyChannelRanges (thy sound.get(), channelRanges);
+		autoCrossCorrelationTableList him = Sound_to_CrossCorrelationTableList (soundPart.get(), startTime, endTime, lagStep, ncovars);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no CrossCorrelationTables calculated.");
 	}
 }
 
-PCA EEG_to_PCA (EEG me, double startTime, double endTime, const char32 *channelRanges, int fromCorrelation) {
+autoPCA EEG_to_PCA (EEG me, double startTime, double endTime, const char32 *channelRanges, int fromCorrelation) {
 	try {
 		autoCovariance cov = EEG_to_Covariance (me, startTime, endTime, channelRanges);
+		autoPCA him;
 		if (fromCorrelation) {
-			autoCorrelation cor = SSCP_to_Correlation (cov.peek());
-			autoPCA him = SSCP_to_PCA (cor.peek());
-			return him.transfer();
+			autoCorrelation cor = SSCP_to_Correlation (cov.get());
+			him = SSCP_to_PCA (cor.get());
 		} else {
-			autoPCA him = SSCP_to_PCA (cov.peek());
-			return him.transfer();
+			him = SSCP_to_PCA (cov.get());
 		}
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PCA calculated.");
 	}
 }
 
-EEG EEG_and_PCA_to_EEG_whiten (EEG me, PCA thee, long numberOfComponents) {
+autoEEG EEG_and_PCA_to_EEG_whiten (EEG me, PCA thee, long numberOfComponents) {
 	try {
 		if (numberOfComponents <= 0 || numberOfComponents > thy numberOfEigenvalues) {
 			numberOfComponents = thy numberOfEigenvalues;
 		}
-		numberOfComponents = numberOfComponents > my numberOfChannels ? my numberOfChannels : numberOfComponents;
+		numberOfComponents = ( numberOfComponents > my numberOfChannels ? my numberOfChannels : numberOfComponents );
 
 		autoNUMvector<long> channelNumbers (EEG_channelNames_to_channelNumbers (me, thy labels, thy dimension), 1);
 
-		autoEEG him = (EEG) Data_copy (me);
-		autoSound white = Sound_and_PCA_whitenSelectedChannels (my sound, thee, numberOfComponents, channelNumbers.peek(), thy dimension);
+		autoEEG him = Data_copy (me);
+		autoSound white = Sound_and_PCA_whitenSelectedChannels (my sound.get(), thee, numberOfComponents, channelNumbers.peek(), thy dimension);
 		for (long i = 1; i <= thy dimension; i++) {
 			long ichannel = channelNumbers[i];
 			NUMvector_copyElements<double> (white -> z[i], his sound -> z[ichannel], 1, his sound -> nx);
 		}
-		EEG_setChannelNames_selected (him.peek(), U"wh", channelNumbers.peek(), thy dimension);
-		return him.transfer();
+		EEG_setChannelNames_selected (him.get(), U"wh", channelNumbers.peek(), thy dimension);
+		return him;
 	} catch(MelderError) {
 		Melder_throw (me, U": not whitened with ", thee);
 	}
 }
 
-EEG EEG_and_PCA_to_EEG_principalComponents (EEG me, PCA thee, long numberOfComponents) {
+autoEEG EEG_and_PCA_to_EEG_principalComponents (EEG me, PCA thee, long numberOfComponents) {
 	try {
 		if (numberOfComponents <= 0 || numberOfComponents > thy numberOfEigenvalues) {
 			numberOfComponents = thy numberOfEigenvalues;
@@ -196,20 +195,20 @@ EEG EEG_and_PCA_to_EEG_principalComponents (EEG me, PCA thee, long numberOfCompo
 		numberOfComponents = numberOfComponents > my numberOfChannels ? my numberOfChannels : numberOfComponents;
 
 		autoNUMvector<long> channelNumbers (EEG_channelNames_to_channelNumbers (me, thy labels, thy dimension), 1);
-		autoEEG him = (EEG) Data_copy (me);
-		autoSound pc = Sound_and_PCA_to_Sound_pc_selectedChannels (my sound, thee, numberOfComponents, channelNumbers.peek(), thy dimension);
-		for (long i = 1; i <= thy dimension; i++) {
+		autoEEG him = Data_copy (me);
+		autoSound pc = Sound_and_PCA_to_Sound_pc_selectedChannels (my sound.get(), thee, numberOfComponents, channelNumbers.peek(), thy dimension);
+		for (long i = 1; i <= thy dimension; i ++) {
 			long ichannel = channelNumbers[i];
 			NUMvector_copyElements<double> (pc -> z[i], his sound -> z[ichannel], 1, his sound -> nx);
 		}
-		EEG_setChannelNames_selected (him.peek(), U"pc", channelNumbers.peek(), thy dimension);
-		return him.transfer();
+		EEG_setChannelNames_selected (him.get(), U"pc", channelNumbers.peek(), thy dimension);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not projected.");
 	}
 }
 
-EEG EEG_to_EEG_bss (EEG me, double startTime, double endTime, long ncovars, double lagStep, const char32 *channelRanges, int whiteningMethod, int diagonalizerMethod, long maxNumberOfIterations, double tol) {
+autoEEG EEG_to_EEG_bss (EEG me, double startTime, double endTime, long ncovars, double lagStep, const char32 *channelRanges, int whiteningMethod, int diagonalizerMethod, long maxNumberOfIterations, double tol) {
 	try {
 		// autowindow
 		if (startTime == endTime) {
@@ -223,34 +222,34 @@ EEG EEG_to_EEG_bss (EEG me, double startTime, double endTime, long ncovars, doub
 			endTime = my xmax;
 		}
 		long numberOfChannels;
-		autoNUMvector <long> channelNumbers (NUMstring_getElementsOfRanges (channelRanges, my numberOfChannels, & numberOfChannels, NULL, U"channel", true), 1);
+		autoNUMvector <long> channelNumbers (NUMstring_getElementsOfRanges (channelRanges, my numberOfChannels, & numberOfChannels, nullptr, U"channel", true), 1);
 		autoEEG thee = EEG_extractPart (me, startTime, endTime, true);
 		if (whiteningMethod != 0) {
-			bool fromCorrelation = whiteningMethod == 2;
-			autoPCA pca = EEG_to_PCA (thee.peek(), thy xmin, thy xmax, channelRanges, fromCorrelation);
-			autoEEG white = EEG_and_PCA_to_EEG_whiten (thee.peek(), pca.peek(), 0);
-			thee.reset (white.transfer());
+			bool fromCorrelation = ( whiteningMethod == 2 );
+			autoPCA pca = EEG_to_PCA (thee.get(), thy xmin, thy xmax, channelRanges, fromCorrelation);
+			autoEEG white = EEG_and_PCA_to_EEG_whiten (thee.get(), pca.get(), 0);
+			thee = white.move();
 		}
-		autoMixingMatrix mm = Sound_to_MixingMatrix (thy sound, startTime, endTime, ncovars, lagStep, maxNumberOfIterations, tol, diagonalizerMethod);
+		autoMixingMatrix mm = Sound_to_MixingMatrix (thy sound.get(), startTime, endTime, ncovars, lagStep, maxNumberOfIterations, tol, diagonalizerMethod);
 
 		autoEEG him = EEG_copyWithoutSound (me);
-		his sound = Sound_and_MixingMatrix_unmix (my sound, mm.peek());
-		EEG_setChannelNames_selected (him.peek(), U"ic", channelNumbers.peek(), numberOfChannels);
+		his sound = Sound_and_MixingMatrix_unmix (my sound.get(), mm.get());
+		EEG_setChannelNames_selected (him.get(), U"ic", channelNumbers.peek(), numberOfChannels);
 
 		// Calculate the cross-correlations between eye-channels and the ic's
 
 
-		return him.transfer();
+		return him;
 
 	} catch (MelderError) {
 		Melder_throw (me, U": no independent components determined.");
 	}
 }
 
-Sound EEG_to_Sound_modulated (EEG me, double baseFrequency, double channelBandwidth, const char32 *channelRanges) {
+autoSound EEG_to_Sound_modulated (EEG me, double baseFrequency, double channelBandwidth, const char32 *channelRanges) {
 	try {
 		long numberOfChannels;
-		autoNUMvector <long> channelNumbers (NUMstring_getElementsOfRanges (channelRanges, my numberOfChannels, & numberOfChannels, NULL, U"channel", true), 1);
+		autoNUMvector <long> channelNumbers (NUMstring_getElementsOfRanges (channelRanges, my numberOfChannels, & numberOfChannels, nullptr, U"channel", true), 1);
 		double maxFreq = baseFrequency + my numberOfChannels * channelBandwidth;
 		double samplingFrequency = 2 * maxFreq;
 		samplingFrequency = samplingFrequency < 44100 ? 44100 : samplingFrequency;
@@ -258,35 +257,36 @@ Sound EEG_to_Sound_modulated (EEG me, double baseFrequency, double channelBandwi
 		for (long i = 1; i <= numberOfChannels; i++) {
 			long ichannel = channelNumbers[i];
 			double fbase = baseFrequency;// + (ichannel - 1) * channelBandwidth;
-			autoSound si = Sound_extractChannel (my sound, ichannel);
-			autoSpectrum spi = Sound_to_Spectrum (si.peek(), 1);
-			Spectrum_passHannBand (spi.peek(), 0.5, channelBandwidth - 0.5, 0.5);
-			autoSpectrum spi_shifted = Spectrum_shiftFrequencies (spi.peek(), fbase, samplingFrequency / 2, 30);
-			autoSound resampled = Spectrum_to_Sound (spi_shifted.peek());
+			autoSound si = Sound_extractChannel (my sound.get(), ichannel);
+			autoSpectrum spi = Sound_to_Spectrum (si.get(), 1);
+			Spectrum_passHannBand (spi.get(), 0.5, channelBandwidth - 0.5, 0.5);
+			autoSpectrum spi_shifted = Spectrum_shiftFrequencies (spi.get(), fbase, samplingFrequency / 2.0, 30);
+			autoSound resampled = Spectrum_to_Sound (spi_shifted.get());
 			long nx = resampled -> nx < thy nx ? resampled -> nx : thy nx;
 			for (long j = 1; j <= nx; j++) {
 				thy z[1][j] += resampled -> z[1][j];
 			}
 		}
-		Vector_scale (thee.peek(), 0.99);
-		return thee.transfer();
+		Vector_scale (thee.get(), 0.99);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no playable sound created.");
 	}
 }
 
-Sound EEG_to_Sound_frequencyShifted (EEG me, long channel, double frequencyShift, double samplingFrequency, double maxAmp) {
+autoSound EEG_to_Sound_frequencyShifted (EEG me, long channel, double frequencyShift, double samplingFrequency, double maxAmp) {
 	try {
-		autoSound si = Sound_extractChannel (my sound, channel);
-		autoSpectrum spi = Sound_to_Spectrum (si.peek(), 1);
-		autoSpectrum spi_shifted = Spectrum_shiftFrequencies (spi.peek(), frequencyShift, samplingFrequency / 2, 30);
-		autoSound thee = Spectrum_to_Sound (spi_shifted.peek());
+		autoSound si = Sound_extractChannel (my sound.get(), channel);
+		autoSpectrum spi = Sound_to_Spectrum (si.get(), 1);
+		autoSpectrum spi_shifted = Spectrum_shiftFrequencies (spi.get(), frequencyShift, samplingFrequency / 2.0, 30);
+		autoSound thee = Spectrum_to_Sound (spi_shifted.get());
 		if (maxAmp > 0) {
-			Vector_scale (thee.peek(), maxAmp);
+			Vector_scale (thee.get(), maxAmp);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": channel not converted to sound.");
 	}
 }
+
 /* End of file EEG_extensions.cpp */
diff --git a/dwtools/EEG_extensions.h b/dwtools/EEG_extensions.h
index 46987f2..c75f1e5 100644
--- a/dwtools/EEG_extensions.h
+++ b/dwtools/EEG_extensions.h
@@ -2,46 +2,42 @@
 #define _EEG_extensions_h_
 /* EEG_extensions.h
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20120926 Initial
-*/
-
-
 #include "ICA.h"
 #include "EEG.h"
 
-CrossCorrelationTable EEG_to_CrossCorrelationTable (EEG me, double startTime, double endTime, double lagTime, const char32 *channelRanges);
+autoCrossCorrelationTable EEG_to_CrossCorrelationTable (EEG me, double startTime, double endTime, double lagTime, const char32 *channelRanges);
+
+autoCovariance EEG_to_Covariance (EEG me, double startTime, double endTime, const char32 *channelRanges);
 
-Covariance EEG_to_Covariance (EEG me, double startTime, double endTime, const char32 *channelRanges);
+autoCrossCorrelationTableList EEG_to_CrossCorrelationTableList (EEG me, double startTime, double endTime, double lagTime, long ncovars, const char32 *channelRanges);
 
-CrossCorrelationTables EEG_to_CrossCorrelationTables (EEG me, double startTime, double endTime, double lagTime, long ncovars, const char32 *channelRanges);
+autoPCA EEG_to_PCA (EEG me, double startTime, double endTime, const char32 *channelRanges, int fromCorrelation);
 
-PCA EEG_to_PCA (EEG me, double startTime, double endTime, const char32 *channelRanges, int fromCorrelation);
+autoEEG EEG_and_PCA_to_EEG_whiten (EEG me, PCA thee, long numberOfComponents);
 
-EEG EEG_and_PCA_to_EEG_whiten (EEG me, PCA thee, long numberOfComponents);
+autoEEG EEG_and_PCA_to_EEG_principalComponents (EEG me, PCA thee, long numberOfComponents);
 
-EEG EEG_and_PCA_to_EEG_principalComponents (EEG me, PCA thee, long numberOfComponents);
+autoEEG EEG_to_EEG_bss (EEG me, double startTime, double endTime, long ncovars, double lagTime, const char32 *channelRanges, int whiteningMethod, int diagonalizerMethod, long maxNumberOfIterations, double tol);
 
-EEG EEG_to_EEG_bss (EEG me, double startTime, double endTime, long ncovars, double lagTime, const char32 *channelRanges, int whiteningMethod, int diagonalizerMethod, long maxNumberOfIterations, double tol);
+autoSound EEG_to_Sound_frequencyShifted (EEG me, long channel, double frequencyShift, double samplingFrequency, double maxAmp);
 
-Sound EEG_to_Sound_frequencyShifted (EEG me, long channel, double frequencyShift, double samplingFrequency, double maxAmp);
-Sound EEG_to_Sound_modulated (EEG me, double baseFrequency, double channelBandWidth, const char32 *channelRanges);
+autoSound EEG_to_Sound_modulated (EEG me, double baseFrequency, double channelBandWidth, const char32 *channelRanges);
 
-#endif /* _EEG_extensions_h_ */
+/* End of file EEG_extensions.h */
+#endif
diff --git a/dwtools/EditDistanceTable.cpp b/dwtools/EditDistanceTable.cpp
index 3c36c61..92c8660 100644
--- a/dwtools/EditDistanceTable.cpp
+++ b/dwtools/EditDistanceTable.cpp
@@ -1,20 +1,19 @@
 /* EditDistanceTable.c
  *
- * Copyright (C) 2012, 2014 David Weenink
+ * Copyright (C) 2012, 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -43,7 +42,7 @@
 #include "EditDistanceTable_def.h"
 
 // prototypes
-EditCostsTable EditCostsTable_createDefault ();
+autoEditCostsTable EditCostsTable_createDefault ();
 
 /* The insertion, deletion and substitution costs are specified in a TableOfReal
  * 1..n-2 target symbols/alphabet
@@ -55,14 +54,14 @@ EditCostsTable EditCostsTable_createDefault ();
  * cell [n][m] if nomatch target != nomatch source
  */
 
-Thing_implement (WarpingPath, Data, 0);
+Thing_implement (WarpingPath, Daata, 0);
 
-WarpingPath WarpingPath_create (long length) {
+autoWarpingPath WarpingPath_create (long length) {
 	try {
 		autoWarpingPath me = Thing_new (WarpingPath);
 		my path = NUMvector<structPairOfInteger> (1, length);
 		my _capacity = my pathLength = length;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"WarpPath not created.");
 	}
@@ -106,40 +105,59 @@ static void WarpingPath_shiftPathByOne (WarpingPath me) {
 	}
 }
 
-long WarpingPath_getColumnsFromRowIndex (WarpingPath me, long iy, long *ix1, long *ix2) {
-	if (iy <= 0) {
-		return 0;
-	}
-	*ix1 = 0; *ix2 = 0;
-	for (long i = 1; i <= my pathLength; i++) {
-		if (my path[i].y < iy) {
-			continue;
-		} else if (my path[i].y == iy) {
-			if (*ix1 == 0) *ix1 = my path[i].x;
-			*ix2 = my path[i].x;
-		} else {
-			break;
+long WarpingPath_getColumnsFromRowIndex (WarpingPath me, long iy, long *p_ix1, long *p_ix2) {
+	long ix1 = 0, ix2 = 0, numberOfColumns = 0;
+	if (iy > 0) {
+		for (long i = 1; i <= my pathLength; i++) {
+			if (my path[i].y < iy) {
+				continue;
+			} else if (my path[i].y == iy) {
+				if (ix1 == 0) {
+					ix1 = my path[i].x;
+				}
+				ix2 = my path[i].x;
+			} else {
+				break;
+			}
 		}
+		numberOfColumns = ix2 - ix1 + 1;
+	}
+	if (p_ix1) {
+		*p_ix1 = ix1;
 	}
-	return *ix2 - *ix1 + 1;
+	if (p_ix2) {
+		*p_ix2 = ix2;
+	}
+	return numberOfColumns;
 }
 
-long WarpingPath_getRowsFromColumnIndex (WarpingPath me, long ix, long *iy1, long *iy2) {
+long WarpingPath_getRowsFromColumnIndex (WarpingPath me, long ix, long *p_iy1, long *p_iy2) {
 	if (ix <= 0) {
 		return 0;
 	}
-	*iy1 = 0; *iy2 = 0;
-	for (long i = 1; i <= my pathLength; i++) {
-		if (my path[i].x < ix) {
-			continue;
-		} else if (my path[i].x == ix) {
-			if (*iy1 == 0) *iy1 = my path[i].y;
-			*iy2 = my path[i].y;
-		} else {
-			break;
+	long iy1 = 0, iy2 = 0, numberOfRows = 0;
+	if (ix > 0) {
+		for (long i = 1; i <= my pathLength; i++) {
+			if (my path[i].x < ix) {
+				continue;
+			} else if (my path[i].x == ix) {
+				if (iy1 == 0) {
+					iy1 = my path[i].y;
+				}
+				iy2 = my path[i].y;
+			} else {
+				break;
+			}
 		}
+		numberOfRows = iy2 - iy1 + 1;
+	}
+	if (p_iy1) {
+		*p_iy1 = iy1;
+	}
+	if (p_iy2) {
+		*p_iy2 = iy2;
 	}
-	return *iy2 - *iy1 + 1;
+	return numberOfRows;
 }
 
 Thing_implement (EditCostsTable, TableOfReal, 0);
@@ -162,24 +180,24 @@ bool structEditCostsTable :: v_matchTargetWithSourceSymbol (const char32 *target
 	return Melder_equ (targetSymbol, sourceSymbol);
 }
 
-EditCostsTable EditCostsTable_create (long targetAlphabetSize, long sourceAlphabetSize) {
+autoEditCostsTable EditCostsTable_create (long targetAlphabetSize, long sourceAlphabetSize) {
 	try{
 		autoEditCostsTable me = Thing_new (EditCostsTable);
-		TableOfReal_init (me.peek(), targetAlphabetSize + 2, sourceAlphabetSize + 2);
-		return me.transfer();
+		TableOfReal_init (me.get(), targetAlphabetSize + 2, sourceAlphabetSize + 2);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"EditCostsTable not created.");
 	}
 }
 
-EditCostsTable EditCostsTable_createDefault () {
+autoEditCostsTable EditCostsTable_createDefault () {
 	try {
 		autoEditCostsTable me = EditCostsTable_create (0, 0);
 		my data[1][1] = 0; // default substitution cost (nomatch == nomatch)
 		my data[2][2] = 2; // default substitution cost (nomatch != nomatch)
 		my data[2][1] = 1; // default insertion cost
 		my data[1][2] = 1; // default deletion cost
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Default EditCostsTable not created.");
 	}
@@ -304,7 +322,7 @@ double EditCostsTable_getSubstitutionCost (EditCostsTable me, const char32 *symb
 	return my data[irow][icol];
 }
 
-TableOfReal EditCostsTable_to_TableOfReal (EditCostsTable me) {
+autoTableOfReal EditCostsTable_to_TableOfReal (EditCostsTable me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 		for (long j = 1; j <= my numberOfColumns; j++) {
@@ -314,7 +332,7 @@ TableOfReal EditCostsTable_to_TableOfReal (EditCostsTable me) {
 			thy rowLabels[i] = Melder_dup (my rowLabels[i]);
 		}
 		NUMmatrix_copyElements<double> (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
@@ -329,23 +347,23 @@ void structEditDistanceTable :: v_info () {
 	MelderInfo_writeLine (U"Source:", numberOfColumns, U" symbols.");
 }
 
-EditDistanceTable EditDistanceTable_create (Strings target, Strings source) {
+autoEditDistanceTable EditDistanceTable_create (Strings target, Strings source) {
 	try {
 		autoEditDistanceTable me = Thing_new (EditDistanceTable);
 		long numberOfSourceSymbols = source -> numberOfStrings, numberOfTargetSymbols = target -> numberOfStrings;
-		TableOfReal_init (me.peek(), numberOfTargetSymbols + 1, numberOfSourceSymbols + 1);
-		TableOfReal_setColumnLabel (me.peek(), 1, U"");
+		TableOfReal_init (me.get(), numberOfTargetSymbols + 1, numberOfSourceSymbols + 1);
+		TableOfReal_setColumnLabel (me.get(), 1, U"");
 		for (long j = 1; j <= numberOfSourceSymbols; j++) {
 			my columnLabels[j + 1] = Melder_dup (source -> strings[j]);
 		}
-		TableOfReal_setRowLabel (me.peek(), 1, U"");
+		TableOfReal_setRowLabel (me.get(), 1, U"");
 		for (long i = 1; i <= numberOfTargetSymbols; i++) {
 			my rowLabels[i + 1] = Melder_dup (target -> strings[i]);
 		}
 		my warpingPath = WarpingPath_create (numberOfTargetSymbols + numberOfSourceSymbols + 1);
 		my editCostsTable = EditCostsTable_createDefault ();
-		EditDistanceTable_findPath (me.peek(), 0);
-		return me.transfer();
+		EditDistanceTable_findPath (me.get(), 0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"EditDistanceTable not created.");
 	}
@@ -353,20 +371,18 @@ EditDistanceTable EditDistanceTable_create (Strings target, Strings source) {
 
 void EditDistanceTable_setEditCosts (EditDistanceTable me, EditCostsTable thee) {
 	try {
-		forget (my editCostsTable);
-		autoEditCostsTable ect = (EditCostsTable) Data_copy (thee);
-		my editCostsTable = ect.transfer();
+		my editCostsTable = Data_copy (thee);
 	} catch (MelderError) {
 		Melder_throw (me, U": edit costs not set.");
 	}
 }
 
-EditDistanceTable EditDistanceTable_createFromCharacterStrings (const char32 *chars1, const char32 *chars2) {
+autoEditDistanceTable EditDistanceTable_createFromCharacterStrings (const char32 *chars1, const char32 *chars2) {
 	try {
 		autoStrings s1 = Strings_createAsCharacters (chars1);
 		autoStrings s2 = Strings_createAsCharacters (chars2);
-		autoEditDistanceTable me = EditDistanceTable_create (s1.peek(), s2.peek());
-		return me.transfer();
+		autoEditDistanceTable me = EditDistanceTable_create (s1.get(), s2.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"EditDistanceTable not created from character strings.");
 	}
@@ -413,7 +429,7 @@ static double getMaxRowLabelWidth (TableOfReal me, Graphics graphics, long rowmi
 	if (! my rowLabels) return 0.0;
 	fixRows (me, & rowmin, & rowmax);
 	for (long irow = rowmin; irow <= rowmax; irow ++) if (my rowLabels [irow] && my rowLabels [irow] [0]) {
-		double textWidth = Graphics_textWidth_ps (graphics, my rowLabels [irow], TRUE);   /* SILIPA is bigger than XIPA */
+		double textWidth = Graphics_textWidth_ps (graphics, my rowLabels [irow], true);   /* SILIPA is bigger than XIPA */
 		if (textWidth > maxWidth) maxWidth = textWidth;
 	}
 	return maxWidth;
@@ -510,17 +526,17 @@ void EditDistanceTable_drawEditOperations (EditDistanceTable me, Graphics graphi
 }
 
 void EditDistanceTable_setDefaultCosts (EditDistanceTable me, double insertionCosts, double deletionCosts, double substitutionCosts) {
-	EditCostsTable_setDefaultCosts (my editCostsTable, insertionCosts, deletionCosts, substitutionCosts);
+	EditCostsTable_setDefaultCosts (my editCostsTable.get(), insertionCosts, deletionCosts, substitutionCosts);
 	EditDistanceTable_findPath (me, 0);
 }
 
-TableOfReal EditDistanceTable_to_TableOfReal_directions (EditDistanceTable me) {
-		TableOfReal tor;
+autoTableOfReal EditDistanceTable_to_TableOfReal_directions (EditDistanceTable me) {
+		autoTableOfReal tor;
 		EditDistanceTable_findPath (me, &tor);
 		return tor;
 }
 
-void EditDistanceTable_findPath (EditDistanceTable me, TableOfReal *directions) {
+void EditDistanceTable_findPath (EditDistanceTable me, autoTableOfReal *directions) {
 	try {
 		/* What do we have to do to source to get target?
 		 * Origin [0][0] is at bottom-left corner
@@ -532,19 +548,19 @@ void EditDistanceTable_findPath (EditDistanceTable me, TableOfReal *directions)
 		autoNUMmatrix<double> delta (0, numberOfTargets, 0, numberOfSources);
 
 		for (long j = 1; j <= numberOfSources; j++) {
-			delta[0][j] = delta[0][j - 1] + EditCostsTable_getDeletionCost (my editCostsTable, my columnLabels[j+1]);
+			delta[0][j] = delta[0][j - 1] + EditCostsTable_getDeletionCost (my editCostsTable.get(), my columnLabels[j+1]);
 			psi[0][j] = WARPING_fromLeft;
 		}
 		for (long i = 1; i <= numberOfTargets; i++) {
-			delta[i][0] = delta[i - 1][0] + EditCostsTable_getInsertionCost (my editCostsTable, my rowLabels[i+1]);
+			delta[i][0] = delta[i - 1][0] + EditCostsTable_getInsertionCost (my editCostsTable.get(), my rowLabels[i+1]);
 			psi[i][0] = WARPING_fromBelow;
 		}
 		for (long j = 1; j <= numberOfSources; j++) {
 			for (long i = 1; i <= numberOfTargets; i++) {
 				// the substitution, deletion and insertion costs.
-				double left = delta[i][j - 1] + EditCostsTable_getInsertionCost (my editCostsTable, my rowLabels[i+1]);
-				double bottom = delta[i - 1][j] + EditCostsTable_getDeletionCost (my editCostsTable, my columnLabels[j+1]);
-				double mindist = delta[i - 1][j - 1] + EditCostsTable_getSubstitutionCost (my editCostsTable, my rowLabels[i+1], my columnLabels[j+1]); // diag
+				double left = delta[i][j - 1] + EditCostsTable_getInsertionCost (my editCostsTable.get(), my rowLabels[i+1]);
+				double bottom = delta[i - 1][j] + EditCostsTable_getDeletionCost (my editCostsTable.get(), my columnLabels[j+1]);
+				double mindist = delta[i - 1][j - 1] + EditCostsTable_getSubstitutionCost (my editCostsTable.get(), my rowLabels[i+1], my columnLabels[j+1]); // diag
 				psi[i][j] = WARPING_fromDiag;
 				if (bottom < mindist) {
 					mindist = bottom;
@@ -560,11 +576,11 @@ void EditDistanceTable_findPath (EditDistanceTable me, TableOfReal *directions)
 		// find minimum distance in last column
 		long iy = numberOfTargets, ix = numberOfSources;
 
-		WarpingPath_reset (my warpingPath);
+		WarpingPath_reset (my warpingPath.get());
 
-		WarpingPath_getPath (my warpingPath, psi.peek(), iy, ix);
+		WarpingPath_getPath (my warpingPath.get(), psi.peek(), iy, ix);
 
-		WarpingPath_shiftPathByOne (my warpingPath);
+		WarpingPath_shiftPathByOne (my warpingPath.get());
 
 		for (long i = 0; i <= numberOfTargets; i++) {
 			for (long j = 0; j <= numberOfSources; j++) {
@@ -578,14 +594,14 @@ void EditDistanceTable_findPath (EditDistanceTable me, TableOfReal *directions)
 					his data[i+1][j+1] = psi[i][j];
 				}
 			}
-			*directions = him.transfer();
+			*directions = him.move();
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": minimum path not found.");
 	}
 }
 
-TableOfReal EditDistanceTable_to_TableOfReal (EditDistanceTable me) {
+autoTableOfReal EditDistanceTable_to_TableOfReal (EditDistanceTable me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 		for (long j = 1; j <= my numberOfColumns; j++) {
@@ -595,7 +611,7 @@ TableOfReal EditDistanceTable_to_TableOfReal (EditDistanceTable me) {
 			thy rowLabels[i] = Melder_dup (my rowLabels[i]);
 		}
 		NUMmatrix_copyElements<double> (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TableOfReal created.");
 	}
diff --git a/dwtools/EditDistanceTable.h b/dwtools/EditDistanceTable.h
index 1dd825d..a8f0da9 100644
--- a/dwtools/EditDistanceTable.h
+++ b/dwtools/EditDistanceTable.h
@@ -2,21 +2,20 @@
 #define _EditDistanceTable_h_
 /* EditDistanceTable.h
  *
- * Copyright (C) 2012,2015 David Weenink
+ * Copyright (C) 2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Strings_extensions.h"
@@ -27,19 +26,17 @@
 #define WARPING_fromDiag 4
 
 #include "EditDistanceTable_def.h"
-oo_CLASS_CREATE (WarpingPath, Data);
-oo_CLASS_CREATE (EditCostsTable, TableOfReal);
-oo_CLASS_CREATE (EditDistanceTable, TableOfReal);
 
-WarpingPath WarpingPath_create (long length);
+autoWarpingPath WarpingPath_create (long length);
 
 // Search the path for the corresponding axis value. If path is horizontal/vertical
 //  ivar1 and ivar2 will not be equal. The return value is the length of the path segment (ivar2-ivar1 +1)
 long WarpingPath_getColumnsFromRowIndex (WarpingPath me, long irow, long *icol1, long *icol2);
+
 long WarpingPath_getRowsFromColumnIndex (WarpingPath me, long icol, long *irow1, long *irow2);
 
 
-EditCostsTable EditCostsTable_create (long targetAlphabetSize, long sourceAlphabetSize);
+autoEditCostsTable EditCostsTable_create (long targetAlphabetSize, long sourceAlphabetSize);
 /* The insertion, deletion and substitution costs are specified in this table
  * 1..n-2 target symbols (target alphabet)
  * 1..m-2 source symbols (source alphabet)
@@ -51,30 +48,46 @@ EditCostsTable EditCostsTable_create (long targetAlphabetSize, long sourceAlphab
  */
 
 void EditCostsTable_setDefaultCosts (EditCostsTable me, double insertionCosts, double deletionCosts, double substitutionCosts);
+
 long EditCostsTable_getTargetIndex (EditCostsTable me, const char32 *symbol);
+
 long EditCostsTable_getSourceIndex (EditCostsTable me, const char32 *symbol);
+
 double EditCostsTable_getInsertionCost (EditCostsTable me, const char32 *symbol);
+
 void EditCostsTable_setInsertionCosts (EditCostsTable me, char32 *targets, double cost);
+
 void EditCostsTable_setOthersCosts (EditCostsTable me, double insertionCosts, double deletionCost, double substitutionCost_equal, double substitutionCost_unequal);
+
 double EditCostsTable_getOthersCost (EditCostsTable me, int type);
+
 double EditCostsTable_getDeletionCost (EditCostsTable me, const char32 *symbol);
+
 void EditCostsTable_setDeletionCosts (EditCostsTable me, char32 *sources, double cost);
+
 double EditCostsTable_getSubstitutionCost (EditCostsTable me, const char32 *symbol, const char32 *replacement);
+
 void EditCostsTable_setSubstitutionCosts (EditCostsTable me, char32 *targets, char32 *sources, double cost);
-TableOfReal EditCostsTable_to_TableOfReal (EditCostsTable me);
 
+autoTableOfReal EditCostsTable_to_TableOfReal (EditCostsTable me);
+
+
+autoEditDistanceTable EditDistanceTable_create (Strings target, Strings source);
+
+autoEditDistanceTable EditDistanceTable_createFromCharacterStrings (const char32 *chars1, const char32 *chars2);
 
-EditDistanceTable EditDistanceTable_create (Strings target, Strings source);
-EditDistanceTable EditDistanceTable_createFromCharacterStrings (const char32 *chars1, const char32 *chars2);
 void EditDistanceTable_draw (EditDistanceTable me, Graphics graphics, int iformat, int precision, double angle);
+
 void EditDistanceTable_drawEditOperations (EditDistanceTable me, Graphics graphics);
+
 void EditDistanceTable_setDefaultCosts (EditDistanceTable me, double insertionCosts, double deletionCosts, double substitutionCosts);
-void EditDistanceTable_findPath (EditDistanceTable me, TableOfReal *directions);
+
+void EditDistanceTable_findPath (EditDistanceTable me, autoTableOfReal *directions);
 
 void EditDistanceTable_setEditCosts (EditDistanceTable me, EditCostsTable thee);
 
-TableOfReal EditDistanceTable_to_TableOfReal_directions (EditDistanceTable me);
+autoTableOfReal EditDistanceTable_to_TableOfReal_directions (EditDistanceTable me);
 
-TableOfReal EditDistanceTable_to_TableOfReal (EditDistanceTable me);
+autoTableOfReal EditDistanceTable_to_TableOfReal (EditDistanceTable me);
 
 #endif /* _EditDistanceTable_h_ */
diff --git a/dwtools/EditDistanceTable_def.h b/dwtools/EditDistanceTable_def.h
index 76deec9..e3005c3 100644
--- a/dwtools/EditDistanceTable_def.h
+++ b/dwtools/EditDistanceTable_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2012,2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,7 +28,7 @@ oo_END_STRUCT (PairOfInteger)
 #undef ooSTRUCT
 
 #define ooSTRUCT WarpingPath
-oo_DEFINE_CLASS (WarpingPath, Data)
+oo_DEFINE_CLASS (WarpingPath, Daata)
 	oo_LONG (_capacity)
 	oo_LONG (pathLength)
 	oo_STRUCT_VECTOR (PairOfInteger, path, pathLength)
@@ -50,10 +49,10 @@ oo_END_CLASS (EditCostsTable)
 #undef ooSTRUCT
 
 #define ooSTRUCT EditDistanceTable
-	oo_DEFINE_CLASS (EditDistanceTable, TableOfReal)
-	oo_OBJECT (WarpingPath, 0, warpingPath)
+oo_DEFINE_CLASS (EditDistanceTable, TableOfReal)
+	oo_AUTO_OBJECT (WarpingPath, 0, warpingPath)
 	#if oo_DECLARING
-		oo_OBJECT (EditCostsTable, 0, editCostsTable)
+		oo_AUTO_OBJECT (EditCostsTable, 0, editCostsTable)
 
 		void v_info ()
 			override;
diff --git a/dwtools/Eigen_and_Matrix.cpp b/dwtools/Eigen_and_Matrix.cpp
index 75199d7..f8b2084 100644
--- a/dwtools/Eigen_and_Matrix.cpp
+++ b/dwtools/Eigen_and_Matrix.cpp
@@ -1,20 +1,19 @@
 /* Eigen_and_Matrix.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -23,44 +22,40 @@
 */
 
 #include "Eigen_and_Matrix.h"
+#include "Matrix_extensions.h"
+#include "NUM2.h"
 
-Matrix Eigen_and_Matrix_project (Eigen me, Matrix thee, long numberOfComponents) {
+autoMatrix Eigen_and_Matrix_to_Matrix_projectRows (Eigen me, Matrix thee, long numberOfDimensionsToKeep) {
 	try {
-		if (numberOfComponents == 0) {
-			numberOfComponents = my numberOfEigenvalues;
+		if (numberOfDimensionsToKeep <= 0 || numberOfDimensionsToKeep > my numberOfEigenvalues) {
+			numberOfDimensionsToKeep = my numberOfEigenvalues;
 		}
-
-		autoMatrix him = Matrix_create (thy xmin, thy xmax, thy nx, thy dx, thy x1, 0.5, 0.5 +
-		                                numberOfComponents, numberOfComponents, 1, 1);
-		Matrix thim = him.peek();
-		Eigen_and_Matrix_project_into (me, thee, &thim);
-		return him.transfer();
+		if (thy nx != my dimension) { 
+			Melder_throw (U"The number of columns (", thy nx, U") must equal the size of the eigenvectors (", my dimension, U").");
+		}
+		autoMatrix him = Matrix_create (0.5, 0.5 + numberOfDimensionsToKeep, numberOfDimensionsToKeep, 1.0, 1.0, thy ymin, thy ymax, thy ny, thy dy, thy y1);
+		NUMdmatrix_projectRowsOnEigenspace (thy z, thy ny, 1, my eigenvectors, numberOfDimensionsToKeep, my dimension, his z, 1);
+		//Eigen_and_matrix_into_matrix_principalComponents (me, thy z, thy ny, 1, his z, numberOfDimensionsToKeep, 1);
+		
+		return him;
 	} catch (MelderError) {
-		Melder_throw (U"Projection Matrix not created.");
+		Melder_throw (U"Projection Matrix from ", me, U" and ", thee, U" not created.");
 	}
 }
 
-void Eigen_and_Matrix_project_into (Eigen me, Matrix thee, Matrix *pointer_to_him) {
-	Matrix him = *pointer_to_him;
-
-	if (my dimension != thy ny) Melder_throw
-		(U"The number of rows in the 'from' Matrix must equal the dimension of the eigenvector.");
-	if (his nx != thy nx) {
-		Melder_throw (U"The number of columns in the Matrixes must be equal.");
-	}
-	if (his ny > my numberOfEigenvalues) Melder_throw
-		(U"The number of rows in the 'to' Matrix cannot exceed the number of eigenvectors.");
-
-	for (long i = 1; i <= thy nx; i++) {
-		for (long j = 1; j <= his ny; j++) {
-			double r = 0;
-			for (long k = 1; k <= my dimension; k++) {
-				// eigenvector in row, data in column
-
-				r += my eigenvectors[j][k] * thy z[k][i];
-			}
-			his z[j][i] = r;
+autoMatrix Eigen_and_Matrix_to_Matrix_projectColumns (Eigen me, Matrix thee, long numberOfDimensionsToKeep) {
+	try {
+		if (numberOfDimensionsToKeep <= 0 || numberOfDimensionsToKeep > my numberOfEigenvalues) {
+			numberOfDimensionsToKeep = my numberOfEigenvalues;
 		}
+		if (thy ny != my dimension) { 
+			Melder_throw (U"The number of rows (", thy ny, U") must equal the size of the eigenvectors (", my dimension, U").");
+		}
+		autoMatrix him = Matrix_create (thy xmin, thy xmax, thy nx, thy dx, thy x1, 0.5, 0.5 + numberOfDimensionsToKeep, numberOfDimensionsToKeep, 1.0, 1.0);
+		NUMdmatrix_projectColumnsOnEigenspace (thy z, thy nx, my eigenvectors, numberOfDimensionsToKeep, my dimension, his z);
+		return him;
+	} catch (MelderError) {
+		Melder_throw (U"Projection Matrix from ", me, U" and ", thee, U" not created.");
 	}
 }
 
diff --git a/dwtools/Eigen_and_Matrix.h b/dwtools/Eigen_and_Matrix.h
index 9945640..55b7ed6 100644
--- a/dwtools/Eigen_and_Matrix.h
+++ b/dwtools/Eigen_and_Matrix.h
@@ -3,21 +3,20 @@
 
 /* Eigen_and_Matrix.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,19 +26,17 @@
 */
 
 #include "Eigen.h"
-#include "Matrix.h"
+#include "Pattern.h"
 
-Matrix Eigen_and_Matrix_project (Eigen me, Matrix thee, long numberOfComponents);
+autoMatrix Eigen_and_Matrix_to_Matrix_projectRows (Eigen me, Matrix thee, long numberOfDimensionsToKeep);
 /*
-	Purpose: project the columns of the matrix (thou) on the 
-	eigenspace (me). 
+	Purpose: project the rows of the matrix (thee) on the eigenspace (me). 
 */
 
-void Eigen_and_Matrix_project_into (Eigen me, Matrix thee, Matrix *pointer_to_him);
+autoMatrix Eigen_and_Matrix_to_Matrix_projectColumns (Eigen me, Matrix thee, long numberOfDimensionsToKeep);
 /*
-	Purpose: project the columns of the Matrix (thou) on the 
-	eigenspace (me). Result in existing Matrix (him). 
-
+	Purpose: project the columnss of the matrix (thee) on the eigenspace (me). 
 */
 
+
 #endif /* _Eigen_and_Matrix_h_ */
diff --git a/dwtools/Eigen_and_Procrustes.cpp b/dwtools/Eigen_and_Procrustes.cpp
index b564b94..c37e665 100644
--- a/dwtools/Eigen_and_Procrustes.cpp
+++ b/dwtools/Eigen_and_Procrustes.cpp
@@ -1,19 +1,18 @@
 /* Eigen_and_Procrustes.cpp
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* djmw 2004 Initial version */
@@ -22,9 +21,8 @@
 #include "Configuration_and_Procrustes.h"
 #include "NUM2.h"
 
-Procrustes Eigens_to_Procrustes (I, thou, long evec_from, long evec_to) {
+autoProcrustes Eigens_to_Procrustes (Eigen me, Eigen thee, long evec_from, long evec_to) {
 	try {
-		iam (Eigen); thouart (Eigen);
 		long nvectors = evec_to - evec_from + 1;
 		long nmin = my numberOfEigenvalues < thy numberOfEigenvalues ? my numberOfEigenvalues : thy numberOfEigenvalues;
 
@@ -41,19 +39,18 @@ Procrustes Eigens_to_Procrustes (I, thou, long evec_from, long evec_to) {
 
 		for (long j = 1; j <= nvectors; j++) {
 			for (long i = 1; i <= my dimension; i++) {
-				x[i][j] =  my eigenvectors[evec_from + j - 1][i];
-				y[i][j] = thy eigenvectors[evec_from + j - 1][i];
+				x[i][j] =  my eigenvectors [evec_from + j - 1] [i];
+				y[i][j] = thy eigenvectors [evec_from + j - 1] [i];
 			}
 		}
 
 		autoProcrustes him = Procrustes_create (nvectors);
 
-		NUMProcrustes (x.peek(), y.peek(), my dimension, nvectors, his r, NULL, NULL);
-		return him.transfer();
+		NUMProcrustes (x.peek(), y.peek(), my dimension, nvectors, his r, nullptr, nullptr);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Procrustes not created from Eigens.");
 	}
 }
 
-
 /* End of file Eigen_and_Procrustes.cpp */
diff --git a/dwtools/Eigen_and_Procrustes.h b/dwtools/Eigen_and_Procrustes.h
index 94248b2..cbeba2c 100644
--- a/dwtools/Eigen_and_Procrustes.h
+++ b/dwtools/Eigen_and_Procrustes.h
@@ -2,21 +2,20 @@
 #define _Eigen_and_Procrustes_h_
 
 /* Eigen_and_Procrustes.h
- * Copyright (C) 2004-2011 David Weenink
+ * Copyright (C) 2004-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,6 +26,6 @@
 #include "Eigen.h"
 #include "Procrustes.h"
 
-Procrustes Eigens_to_Procrustes (I, thou, long evec_from, long evec_to);
+autoProcrustes Eigens_to_Procrustes (Eigen me, Eigen thee, long evec_from, long evec_to);
 
 #endif /* _Eigen_and_Procrustes_h_ */
diff --git a/dwtools/Eigen_and_SSCP.cpp b/dwtools/Eigen_and_SSCP.cpp
index 09d35d7..20ca9c7 100644
--- a/dwtools/Eigen_and_SSCP.cpp
+++ b/dwtools/Eigen_and_SSCP.cpp
@@ -1,20 +1,19 @@
 /* Eigen_and_SSCP.c
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,11 +24,7 @@
 
 #include "Eigen_and_SSCP.h"
 
-static void Eigen_and_SSCP_project_ (I, thou, Any sscp) {
-	iam (Eigen);
-	thouart (SSCP);
-	SSCP him = (SSCP) sscp;
-
+static void Eigen_and_SSCP_into_SSCP_project (Eigen me, SSCP thee, SSCP him) {
 	for (long i = 1; i <= my numberOfEigenvalues; i++) {
 		for (long j = i; j <= my numberOfEigenvalues; j++) {
 			double tmp = 0;
@@ -51,29 +46,27 @@ static void Eigen_and_SSCP_project_ (I, thou, Any sscp) {
 }
 
 
-SSCP Eigen_and_SSCP_project (I, SSCP thee) {
+autoSSCP Eigen_and_SSCP_project (Eigen me, SSCP thee) {
 	try {
-		iam (Eigen);
 		if (thy numberOfRows != my dimension) {
 			Melder_throw (U"SSCP_and_Eigen_project: dimensions don't agree.");
 		}
 		autoSSCP him = SSCP_create (my numberOfEigenvalues);
-		Eigen_and_SSCP_project_ (me, thee, him.peek());
-		return him.transfer();
+		Eigen_and_SSCP_into_SSCP_project (me, thee, him.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"SSCP not projected.");
 	}
 }
 
-Covariance Eigen_and_Covariance_project (I, Covariance thee) {
+autoCovariance Eigen_and_Covariance_project (Eigen me, Covariance thee) {
 	try {
-		iam (Eigen);
 		if (thy numberOfRows != my dimension) {
 			Melder_throw (U"Covariance_and_Eigen_project: dimensions don't agree.");
 		}
 		autoCovariance him = Covariance_create (my numberOfEigenvalues);
-		Eigen_and_SSCP_project_ (me, thee, him.peek());
-		return him.transfer();
+		Eigen_and_SSCP_into_SSCP_project (me, thee, him.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Covariance not projected.");
 	}
diff --git a/dwtools/Eigen_and_SSCP.h b/dwtools/Eigen_and_SSCP.h
index 38c7f59..ae27597 100644
--- a/dwtools/Eigen_and_SSCP.h
+++ b/dwtools/Eigen_and_SSCP.h
@@ -2,21 +2,20 @@
 #define _Eigen_and_SSCP_h_
 /* Eigen_and_SSCP.h
  *
- * Copyright (C) 1993-2004 David Weenink
+ * Copyright (C) 1993-2004, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,8 +26,9 @@
 #include "Eigen.h"
 #include "SSCP.h"
 
-SSCP Eigen_and_SSCP_project (I, SSCP thee);
-Covariance Eigen_and_Covariance_project (I, Covariance thee);
+autoSSCP Eigen_and_SSCP_project (Eigen me, SSCP thee);
+
+autoCovariance Eigen_and_Covariance_project (Eigen me, Covariance thee);
 /*
 	Purpose: project the SSCP (thee) on the eigenspace (me): S' = E' S E
 	Returns SSCP-object with square matrix dimension 'my numberOfEigenvalues'
diff --git a/dwtools/Eigen_and_TableOfReal.cpp b/dwtools/Eigen_and_TableOfReal.cpp
index 78ffe38..5355d52 100644
--- a/dwtools/Eigen_and_TableOfReal.cpp
+++ b/dwtools/Eigen_and_TableOfReal.cpp
@@ -1,20 +1,19 @@
 /* Eigen_and_TableOfReal.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,61 +27,46 @@
 #include "Eigen_and_TableOfReal.h"
 #include "NUM2.h"
 
-TableOfReal Eigen_and_TableOfReal_project (Eigen me, TableOfReal thee, long from,
-        long numberOfComponents) {
+autoTableOfReal Eigen_and_TableOfReal_to_TableOfReal_projectRows (Eigen me, TableOfReal thee, long from_col, long numberOfComponents) {
 	try {
-		if (numberOfComponents == 0) {
+		if (numberOfComponents <= 0 || numberOfComponents > my numberOfEigenvalues) {
 			numberOfComponents = my numberOfEigenvalues;
 		}
 
 		autoTableOfReal him = TableOfReal_create (thy numberOfRows, numberOfComponents);
-		TableOfReal thim = him.peek();
-		Eigen_and_TableOfReal_project_into (me, thee, from, thy numberOfColumns, &thim, 1, numberOfComponents);
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (me, thee, from_col, him.get(), 1, numberOfComponents);
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, thy numberOfRows);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not created from projection.");
 	}
 }
 
-void Eigen_and_TableOfReal_project_into (Eigen me, TableOfReal thee, long thee_from, long thee_to,
-        Any void_pointer_to_him, long his_from, long his_to) {
-	TableOfReal him = * ( (TableOfReal *) void_pointer_to_him);
-	long thee_ncols = thee_to - thee_from + 1;
-	long his_ncols = his_to - his_from + 1;
+void Eigen_and_TableOfReal_into_TableOfReal_projectRows (Eigen me, TableOfReal data, long data_startColumn, TableOfReal to, long to_startColumn, long numberOfComponentsToKeep) {
 
-	if (thee_from < 1 || thee_to > thy numberOfColumns || his_from < 1 || his_to > his numberOfColumns) {
-		Melder_throw (U"Column selection not correct.");
+	data_startColumn = data_startColumn <= 0 ? 1 : data_startColumn;
+	to_startColumn = to_startColumn <= 0 ? 1 : to_startColumn;
+	numberOfComponentsToKeep = numberOfComponentsToKeep <= 0 ? my numberOfEigenvalues : numberOfComponentsToKeep;
+	if (data_startColumn + my dimension - 1 > data -> numberOfColumns) {
+		Melder_throw (data, U" Your start column in the table is too large.");
 	}
-	if (thee_ncols != my dimension) {
-		Melder_throw (U"The number of selected columns to project (", thee_ncols, U") must equal the dimension of the eigenvectors (", my dimension, U").");
+	if (to_startColumn + numberOfComponentsToKeep - 1 > to -> numberOfColumns) {
+		Melder_throw (to, U" Your start column in the 'to' matrix is too large.");
 	}
-	if (his_ncols > my numberOfEigenvalues) {
-		Melder_throw (U"The number of selected columns in the result (", his_ncols, U") cannot exceed the number of eigenvectors (", my numberOfEigenvalues, U").");
-	}
-
-	for (long i = 1; i <= thy numberOfRows; i++) { /* row */
-		for (long j = 1; j <= his_ncols; j++) {
-			double r = 0;
-			for (long k = 1; k <= my dimension; k++) {
-				/*
-					eigenvector in row, data in row
-				*/
-				r += my eigenvectors[j][k] * thy data[i][thee_from + k - 1];
-			}
-			his data[i][his_from + j - 1] = r;
-		}
+	if (data -> numberOfRows != to -> numberOfRows) {
+		Melder_throw (U"Both tables must have the same number of rows.");
 	}
+	NUMdmatrix_projectRowsOnEigenspace (data -> data, data -> numberOfRows, data_startColumn, my eigenvectors, numberOfComponentsToKeep, my dimension, to -> data, to_startColumn);
 }
 
-Eigen TablesOfReal_to_Eigen_gsvd (TableOfReal me, TableOfReal thee) {
+autoEigen TablesOfReal_to_Eigen_gsvd (TableOfReal me, TableOfReal thee) {
 	try {
 		if (my numberOfColumns != thy numberOfColumns) {
 			Melder_throw (U"TablesOfReal_to_Eigen: Number of columns must be equal.");
 		}
 		autoEigen him = Thing_new (Eigen);
-		Eigen_initFromSquareRootPair (him.peek(), my data, my numberOfRows, my numberOfColumns, thy data, thy numberOfRows);
-		return him.transfer();
+		Eigen_initFromSquareRootPair (him.get(), my data, my numberOfRows, my numberOfColumns, thy data, thy numberOfRows);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": Eigen not created.");
 	}
diff --git a/dwtools/Eigen_and_TableOfReal.h b/dwtools/Eigen_and_TableOfReal.h
index cae7ad6..2872234 100644
--- a/dwtools/Eigen_and_TableOfReal.h
+++ b/dwtools/Eigen_and_TableOfReal.h
@@ -3,21 +3,20 @@
 
 /* Eigen_and_TableOfReal.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,21 +28,19 @@
 #include "Eigen.h"
 #include "TableOfReal.h"
 
-TableOfReal Eigen_and_TableOfReal_project (Eigen me, TableOfReal thee, long from,
-	long numberOfComponents);
+autoTableOfReal Eigen_and_TableOfReal_to_TableOfReal_projectRows (Eigen me, TableOfReal thee, long from, long numberOfComponents);
 /*
 	Purpose: project the rows of the TableOfReal (thee) starting at index 'from'
 	on the eigenspace (me).
 */
 
-void Eigen_and_TableOfReal_project_into (Eigen me, TableOfReal thee, long thee_from, long thee_to,
-	Any void_pointer_to_him, long his_from, long his_to);
+void Eigen_and_TableOfReal_into_TableOfReal_projectRows (Eigen me, TableOfReal data, long data_startColumn, TableOfReal to, long to_startColumn, long numberOfComponentsToKeep);
 /*
-	Purpose: project the rows of the TableOfReal (thee) on the
-	eigenspace (me). Result in existing TableOfReal (him).
+	Purpose: project vectors of length 'me -> dimension' that start at 'data_startColumn' in 'data' on the
+	eigenspace of 'me'. Results are stored from column 'to_startColumn' on in existing TableOfReal (to).
 */
 
-Eigen TablesOfReal_to_Eigen_gsvd (TableOfReal me, TableOfReal thee);
+autoEigen TablesOfReal_to_Eigen_gsvd (TableOfReal me, TableOfReal thee);
 /*
 	Solve A'A x -lambda B'B x = 0
 */
diff --git a/dwtools/Excitations.cpp b/dwtools/Excitations.cpp
index 59cadb0..43d1712 100644
--- a/dwtools/Excitations.cpp
+++ b/dwtools/Excitations.cpp
@@ -1,20 +1,19 @@
 /* Excitations.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,38 +26,12 @@
 
 #include "Excitations.h"
 
-/*
-static int readText (I, FILE *f)
-{
-	iam (Excitations);
-	my itemClass =  classExcitation;
-	return inherited (Ordered) readText (me, f);
-}
-
-static int readBinary (I, FILE *f)
-{
-	iam (Excitations);
-	my itemClass =  classExcitation;
-	return inherited (Ordered) readBinary (me, f);
-}
-*/
-
-Thing_implement (Excitations, Ordered, 0);
-
-Excitations Excitations_create (long initialCapacity) {
-	try {
-		autoExcitations me = Thing_new (Excitations);
-		Ordered_init (me.peek(), classExcitation, initialCapacity);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Excitations not created.");
-	}
-}
+Thing_implement (ExcitationList, Ordered, 0);
 
-Pattern Excitations_to_Pattern (Excitations me, long join) {
+autoPattern ExcitationList_to_Pattern (ExcitationList me, long join) {
 	try {
 		Melder_assert (my size > 0);
-		Matrix m = (Matrix) my item[1];
+		Matrix m = my at [1];
 		if (join < 1) {
 			join = 1;
 		}
@@ -67,47 +40,47 @@ Pattern Excitations_to_Pattern (Excitations me, long join) {
 		}
 		autoPattern thee = Pattern_create (my size / join, join * m -> nx);
 		long r = 0, c = 1;
-		for (long i = 1; i <= my size; i++) {
-			double *z = ( (Matrix) my item[i])->z[1];
-			if ( (i - 1) % join == 0) {
-				r++;
+		for (long i = 1; i <= my size; i ++) {
+			double *z = my at [i] -> z [1];
+			if ((i - 1) % join == 0) {
+				r ++;
 				c = 1;
 			}
-			for (long j = 1; j <= m -> nx; j++) {
-				thy z[r][c++] = z[j];
+			for (long j = 1; j <= m -> nx; j ++) {
+				thy z [r] [c ++] = z [j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Pattern created.");
 	}
 }
 
-TableOfReal Excitations_to_TableOfReal (Excitations me) {
+autoTableOfReal ExcitationList_to_TableOfReal (ExcitationList me) {
 	try {
 		Melder_assert (my size > 0);
-		Matrix m = (Matrix) my item[1];
+		Matrix m = my at [1];
 		autoTableOfReal thee = TableOfReal_create (my size, m -> nx);
-		for (long i = 1;  i <= my size; i++) {
-			double *z = ( (Matrix) my item[i]) -> z[1];
-			for (long j = 1; j <= m -> nx; j++) {
+		for (long i = 1;  i <= my size; i ++) {
+			double *z = my at [i] -> z [1];
+			for (long j = 1; j <= m -> nx; j ++) {
 				thy data[i][j] = z[j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TableOfReal created.");
 	}
 }
 
-Excitation Excitations_getItem (Excitations me, long item) {
+autoExcitation ExcitationList_getItem (ExcitationList me, long item) {
 	try {
 		if (item < 1 || item > my size) {
 			Melder_throw (U"Not a valid element number.");
 		}
-		autoExcitation thee = Data_copy ( (Excitation) my item[item]);
-		Thing_setName (thee.peek(), Thing_getName ( (Thing) my item[item]));
-		return thee.transfer();
+		autoExcitation thee = Data_copy (my at [item]);
+		Thing_setName (thee.get(), Thing_getName (my at [item]));
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Excitation created.");
 	}
diff --git a/dwtools/Excitations.h b/dwtools/Excitations.h
index 515a220..83e181d 100644
--- a/dwtools/Excitations.h
+++ b/dwtools/Excitations.h
@@ -2,46 +2,41 @@
 #define _Excitations_h_
 /* Excitations.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
- djmw 20110306 Latest modification.
-*/
-
 #include "Collection.h"
 #include "Excitation.h"
 #include "Pattern.h"
 #include "TableOfReal.h"
 
-Thing_define (Excitations, Ordered) {
-};
 
-/* Excitations is a collection of objects of the same class Excitation */
+#pragma mark - class ExcitationList
 
-Excitations Excitations_create (long initialCapacity);
+Collection_define (ExcitationList, OrderedOf, Excitation) {
+};
 
-Pattern Excitations_to_Pattern (Excitations me, long join);
+autoPattern ExcitationList_to_Pattern (ExcitationList me, long join);
 /* Precondition: my size >= 1, all items have same dimension */
 
-TableOfReal Excitations_to_TableOfReal (Excitations me);
+autoTableOfReal ExcitationList_to_TableOfReal (ExcitationList me);
 /* Precondition: my size >= 1, all items have same dimension */
 
-Excitation Excitations_getItem (Excitations m, long item);
+autoExcitation ExcitationList_getItem (ExcitationList m, long item);
+
 
-#endif /* _Excitations_h_ */
+/* End of file Excitations.h */
+#endif
diff --git a/dwtools/FilterBank.cpp b/dwtools/FilterBank.cpp
index eb02f65..c5484fa 100644
--- a/dwtools/FilterBank.cpp
+++ b/dwtools/FilterBank.cpp
@@ -1,20 +1,19 @@
 /* FilterBank.cpp
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -82,9 +81,7 @@ static char32 const *GetFreqScaleText (int scale) {
 	return error;
 }
 
-static int checkLimits (Matrix me, int fromFreqScale, int toFreqScale, int *fromFilter,
-                        int *toFilter, double *zmin, double *zmax, int dbScale,
-                        double *ymin, double *ymax) {
+static int checkLimits (Matrix me, int fromFreqScale, int toFreqScale, int *fromFilter, int *toFilter, double *zmin, double *zmax, int dbScale, double *ymin, double *ymax) {
 
 	if (*fromFilter == 0) {
 		*fromFilter = 1;
@@ -144,7 +141,7 @@ static void setDrawingLimits (double *a, long n, double amin, double amax, long
 	for (long i = 1; i <= n; i++) {
 		if (a[i] == NUMundefined) {
 			if (lower == 0) {
-				/* high frequency part */
+				// high frequency part
 				*iend = i;
 				break;
 			}
@@ -167,40 +164,33 @@ Thing_implement (FilterBank, Matrix, 2);
 
 Thing_implement (BarkFilter, FilterBank, 2);
 
-BarkFilter BarkFilter_create (double tmin, double tmax, long nt, double dt,
-                              double t1, double fmin, double fmax, long nf, double df, double f1) {
+autoBarkFilter BarkFilter_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoBarkFilter me = Thing_new (BarkFilter);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"BarkFilter not created.");
 	}
 }
 
-double FilterBank_getFrequencyInHertz (I, double f, int scale_from) {
-	(void) void_me;
+double FilterBank_getFrequencyInHertz (FilterBank /* me */, double f, int scale_from) {
 	return scaleFrequency (f, scale_from, FilterBank_HERTZ);
 }
 
-double FilterBank_getFrequencyInBark (I, double f, int scale_from) {
-	(void) void_me;
+double FilterBank_getFrequencyInBark (FilterBank /* me */, double f, int scale_from) {
 	return scaleFrequency (f, scale_from, FilterBank_BARK);
 }
 
-double FilterBank_getFrequencyInMel (I, double f, int scale_from) {
-	(void) void_me;
+double FilterBank_getFrequencyInMel (FilterBank /* me */, double f, int scale_from) {
 	return scaleFrequency (f, scale_from, FilterBank_MEL);
 }
 
-int FilterBank_getFrequencyScale (I) {
-	iam (FilterBank);
+int FilterBank_getFrequencyScale (FilterBank me) {
 	return my v_getFrequencyScale ();
 }
 
-void FilterBank_drawFrequencyScales (I, Graphics g, int horizontalScale, double xmin,
-                                     double xmax, int verticalScale, double ymin, double ymax, int garnish) {
-	iam (FilterBank);
+void FilterBank_drawFrequencyScales (FilterBank me, Graphics g, int horizontalScale, double xmin, double xmax, int verticalScale, double ymin, double ymax, int garnish) {
 	int myFreqScale = FilterBank_getFrequencyScale (me);
 
 	if (xmin < 0 || xmax < 0 || ymin < 0 || ymax < 0) {
@@ -248,10 +238,10 @@ void FilterBank_drawFrequencyScales (I, Graphics g, int horizontalScale, double
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, GetFreqScaleText (verticalScale));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, GetFreqScaleText (horizontalScale));
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, GetFreqScaleText (verticalScale));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, GetFreqScaleText (horizontalScale));
 	}
 }
 
@@ -284,18 +274,15 @@ void FilterBank_paint (FilterBank me, Graphics g, double xmin, double xmax, doub
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, GetFreqScaleText (my v_getFrequencyScale ()));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Time (s)");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, GetFreqScaleText (my v_getFrequencyScale ()));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Time (s)");
 	}
 }
 
-void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g,
-        int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
-        int dbScale, double ymin, double ymax, int garnish) {
-	if (! checkLimits (me, FilterBank_BARK, toFreqScale, & fromFilter, & toFilter,
-	                   & zmin, & zmax, dbScale, & ymin, & ymax)) {
+void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g, int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax, int dbScale, double ymin, double ymax, int garnish) {
+	if (! checkLimits (me, FilterBank_BARK, toFreqScale, & fromFilter, & toFilter, & zmin, & zmax, dbScale, & ymin, & ymax)) {
 		return;
 	}
 
@@ -317,9 +304,9 @@ void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g,
 				a[i] = NUMundefined;
 			} else {
 				z -= zMid + 0.215;
-				a[i] = 7 - 7.5 * z - 17.5 * sqrt (0.196 + z * z);
+				a[i] = 7.0 - 7.5 * z - 17.5 * sqrt (0.196 + z * z);
 				if (! dbScale) {
-					a[i] = pow (10, a[i]);
+					a[i] = pow (10.0, a[i]);
 				}
 			}
 		}
@@ -337,24 +324,23 @@ void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g,
 	Graphics_unsetInner (g);
 
 	if (garnish) {
-		double distance = dbScale ? 10 : 1;
+		double distance = dbScale ? 10.0 : 1.0;
 		const char32 *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
-		Graphics_textLeft (g, 1, ytext);
-		Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, distance, true, true, false);
+		Graphics_textLeft (g, true, ytext);
+		Graphics_textBottom (g, true, GetFreqScaleText (toFreqScale));
 	}
 }
 
 Thing_implement (MelFilter, FilterBank, 2);
 
-MelFilter MelFilter_create (double tmin, double tmax, long nt, double dt,
-                            double t1, double fmin, double fmax, long nf, double df, double f1) {
+autoMelFilter MelFilter_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoMelFilter me = Thing_new (MelFilter);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MelFilter not created.");
 	}
@@ -371,25 +357,20 @@ void FilterBank_drawFilters (I, Graphics g, long fromf, long tof,
 
 }*/
 
-void FilterBank_drawTimeSlice (I, Graphics g, double t, double fmin,
-                               double fmax, double min, double max, const char32 *xlabel, int garnish) {
-	iam (Matrix);
+void FilterBank_drawTimeSlice (FilterBank me, Graphics g, double t, double fmin, double fmax, double min, double max, const char32 *xlabel, int garnish) {
 	Matrix_drawSliceY (me, g, t, fmin, fmax, min, max);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (xlabel) {
-			Graphics_textBottom (g, 0, xlabel);
+			Graphics_textBottom (g, false, xlabel);
 		}
 	}
 }
 
-void MelFilter_drawFilterFunctions (MelFilter me, Graphics g,
-                                    int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
-                                    int dbScale, double ymin, double ymax, int garnish) {
-	if (! checkLimits (me, FilterBank_MEL, toFreqScale, & fromFilter, & toFilter,
-	                   & zmin, & zmax, dbScale, & ymin, & ymax)) {
+void MelFilter_drawFilterFunctions (MelFilter me, Graphics g, int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax, int dbScale, double ymin, double ymax, int garnish) {
+	if (! checkLimits (me, FilterBank_MEL, toFreqScale, & fromFilter, & toFilter, & zmin, & zmax, dbScale, & ymin, & ymax)) {
 		return;
 	}
 	long n = 1000;
@@ -418,7 +399,6 @@ void MelFilter_drawFilterFunctions (MelFilter me, Graphics g,
 					a[i] = to_dB (a[i], 10, ymin);
 				}
 			}
-
 		}
 
 		setDrawingLimits (a.peek(), n, ymin, ymax,	&ibegin, &iend);
@@ -433,13 +413,13 @@ void MelFilter_drawFilterFunctions (MelFilter me, Graphics g,
 	Graphics_unsetInner (g);
 
 	if (garnish) {
-		double distance = dbScale ? 10 : 1;
+		double distance = dbScale ? 10.0 : 1.0;
 		char32 const *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
-		Graphics_textLeft (g, 1, ytext);
-		Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, distance, true, true, false);
+		Graphics_textLeft (g, true, ytext);
+		Graphics_textBottom (g, true, GetFreqScaleText (toFreqScale));
 	}
 }
 
@@ -461,7 +441,7 @@ void MelFilter_drawFilters (MelFilter me, Graphics g, long from, long to,
 		from = 1;
 		to = my ny;
 	}
-	Graphics_setWindow (g, my ymin, my ymax, 0, 1);
+	Graphics_setWindow (g, my ymin, my ymax, 0.0, 1.0);
 	Graphics_setInner (g);
 	for (i = from; i <= to; i++)
 	{
@@ -472,43 +452,37 @@ void MelFilter_drawFilters (MelFilter me, Graphics g, long from, long to,
 		*//*
 			Draw triangle
 		*//*
-		Graphics_line (g, fl_hz, 0, fc_hz, 1);
-		Graphics_line (g, fc_hz, 1, fh_hz, 0);
+		Graphics_line (g, fl_hz, 0.0, fc_hz, 1.0);
+		Graphics_line (g, fc_hz, 1.0, fh_hz, 0.0);
 	}
 	Graphics_unsetInner (g);
 }
 */
-Matrix FilterBank_to_Matrix (I) {
-	iam (Matrix);
+autoMatrix FilterBank_to_Matrix (FilterBank me) {
 	try {
-		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
-		                                 my ymin, my ymax, my ny, my dy, my y1);
+		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-BarkFilter Matrix_to_BarkFilter (I) {
-	iam (Matrix);
+autoBarkFilter Matrix_to_BarkFilter (Matrix me) {
 	try {
-		autoBarkFilter thee = BarkFilter_create (my xmin, my xmax, my nx, my dx, my x1,
-		                      my ymin, my ymax, my ny, my dy, my y1);
+		autoBarkFilter thee = BarkFilter_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to BarkFilter.");
 	}
 }
 
-MelFilter Matrix_to_MelFilter (I) {
-	iam (Matrix);
+autoMelFilter Matrix_to_MelFilter (Matrix me) {
 	try {
-		autoMelFilter thee = MelFilter_create (my xmin, my xmax, my nx, my dx, my x1,
-		                                       my ymin, my ymax, my ny, my dy, my y1);
+		autoMelFilter thee = MelFilter_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to MelFilter.");
 	}
@@ -516,22 +490,18 @@ MelFilter Matrix_to_MelFilter (I) {
 
 Thing_implement (FormantFilter, FilterBank, 2);
 
-FormantFilter FormantFilter_create (double tmin, double tmax, long nt,
-                                    double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
+autoFormantFilter FormantFilter_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoFormantFilter me = Thing_new (FormantFilter);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FormantFilter not created.");
 	}
 }
 
-void FormantFilter_drawFilterFunctions (FormantFilter me, Graphics g, double bandwidth,
-                                        int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
-                                        int dbScale, double ymin, double ymax, int garnish) {
-	if (! checkLimits (me, FilterBank_HERTZ, toFreqScale, & fromFilter, & toFilter,
-	                   & zmin, & zmax, dbScale, & ymin, & ymax)) {
+void FormantFilter_drawFilterFunctions (FormantFilter me, Graphics g, double bandwidth, int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax, int dbScale, double ymin, double ymax, int garnish) {
+	if (! checkLimits (me, FilterBank_HERTZ, toFreqScale, & fromFilter, & toFilter, & zmin, & zmax, dbScale, & ymin, & ymax)) {
 		return;
 	}
 
@@ -572,33 +542,31 @@ void FormantFilter_drawFilterFunctions (FormantFilter me, Graphics g, double ban
 		}
 	}
 
-
 	Graphics_unsetInner (g);
 
 	if (garnish) {
 		double distance = dbScale ? 10 : 1;
 		char32 const *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
-		Graphics_textLeft (g, 1, ytext);
-		Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, distance, true, true, false);
+		Graphics_textLeft (g, true, ytext);
+		Graphics_textBottom (g, true, GetFreqScaleText (toFreqScale));
 	}
 }
 
-FormantFilter Matrix_to_FormantFilter (I) {
-	iam (Matrix);
+autoFormantFilter Matrix_to_FormantFilter (Matrix me) {
 	try {
 		autoFormantFilter thee = FormantFilter_create (my xmin, my xmax, my nx, my dx, my x1,
 		                         my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to FormantFilter.");
 	}
 }
 
-Spectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t) {
+autoSpectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t) {
 	try {
 		double sqrtref = sqrt (FilterBank_DBREF);
 		double factor2 = 2 * 10 * FilterBank_DBFAC;
@@ -625,14 +593,13 @@ Spectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t) {
 			thy z[1][i] = sqrtref * pow (10, my z[i][frame] / factor2);
 			thy z[2][i] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Spectral slice not created.");
 	}
 }
 
-Intensity FilterBank_to_Intensity (I) {
-	iam (Matrix);
+autoIntensity FilterBank_to_Intensity (FilterBank me) {
 	try {
 		autoIntensity thee = Intensity_create (my xmin, my xmax, my nx, my dx, my x1);
 
@@ -644,14 +611,13 @@ Intensity FilterBank_to_Intensity (I) {
 			}
 			thy z[1][j] = 10 * log10 (p) - db_ref;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Intensity not created.");
 	}
 }
 
-void FilterBank_equalizeIntensities (I, double intensity_db) {
-	iam (Matrix);
+void FilterBank_equalizeIntensities (FilterBank me, double intensity_db) {
 	for (long j = 1; j <= my nx; j++) {
 		double p = 0;
 		for (long i = 1; i <= my ny; i++) {
@@ -666,27 +632,25 @@ void FilterBank_equalizeIntensities (I, double intensity_db) {
 	}
 }
 
-void FilterBank_and_PCA_drawComponent (I, PCA thee, Graphics g, long component, double dblevel,
-                                       double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) {
-	iam (FilterBank);
+void FilterBank_and_PCA_drawComponent (FilterBank me, PCA thee, Graphics g, long component, double dblevel, double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) {
 	if (component < 1 || component > thy numberOfEigenvalues) {
 		Melder_throw (U"Component too large.");
 	}
 
 	// Scale Intensity
 
-	autoFilterBank fcopy = (FilterBank) Data_copy (me);
-	FilterBank_equalizeIntensities (fcopy.peek(), dblevel);
-	autoMatrix him = Eigen_and_Matrix_project (thee, fcopy.peek(), component);
+	autoFilterBank fcopy = Data_copy (me);
+	FilterBank_equalizeIntensities (fcopy.get(), dblevel);
+	autoMatrix him = Eigen_and_Matrix_to_Matrix_projectColumns (thee, fcopy.get(), component);
 	for (long j = 1; j <= my nx; j++) {
 		fcopy -> z[component][j] = frequencyOffset + scale * fcopy -> z[component][j];
 	}
-	Matrix_drawRows (fcopy.peek(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax);
+	Matrix_drawRows (fcopy.get(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax);
 }
 
 // Convert old types to new types
 
-MelSpectrogram MelFilter_to_MelSpectrogram (MelFilter me) {
+autoMelSpectrogram MelFilter_to_MelSpectrogram (MelFilter me) {
 	try {
 		autoMelSpectrogram thee = MelSpectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		for (long i = 1; i <= my ny; i++) {
@@ -694,13 +658,13 @@ MelSpectrogram MelFilter_to_MelSpectrogram (MelFilter me) {
 				thy z[i][j] = 4e-10 * pow (10, my z[i][j] / 10);
 			}
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"MelSpectrogram not created.");
 	}
 }
 
-BarkSpectrogram BarkFilter_to_BarkSpectrogram (BarkFilter me) {
+autoBarkSpectrogram BarkFilter_to_BarkSpectrogram (BarkFilter me) {
 	try {
 		autoBarkSpectrogram thee = BarkSpectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		for (long i = 1; i <= my ny; i++) {
@@ -708,13 +672,13 @@ BarkSpectrogram BarkFilter_to_BarkSpectrogram (BarkFilter me) {
 				thy z[i][j] = 4e-10 * pow (10, my z[i][j] / 10);
 			}
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"BarkSpectrogram not created.");
 	}
 }
 
-Spectrogram FormantFilter_to_Spectrogram (FormantFilter me) {
+autoSpectrogram FormantFilter_to_Spectrogram (FormantFilter me) {
 	try {
 		autoSpectrogram thee = Spectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		for (long i = 1; i <= my ny; i++) {
@@ -722,7 +686,7 @@ Spectrogram FormantFilter_to_Spectrogram (FormantFilter me) {
 				thy z[i][j] = 4e-10 * pow (10, my z[i][j] / 10);
 			}
 		}
-		return thee.transfer ();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Spectrogram not created.");
 	}
@@ -760,7 +724,7 @@ static void NUMinverseCosineTransform (double *x, double *y, long n, double **co
 		y[j] *= 2.0 / n;
 	}
 }
-
+/*
 static double testCosineTransform (long n) {
 	try {
 		autoNUMvector<double> x (1, n);
@@ -783,8 +747,9 @@ static double testCosineTransform (long n) {
 		Melder_throw (U"Test cosine transform error");
 	}
 }
+*/
 
-MFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients) {
+autoMFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients) {
 	try {
 		autoNUMmatrix<double> cosinesTable (NUMcosinesTable (my ny), 1, 1);
 		autoNUMvector<double> x (1, my ny);
@@ -807,13 +772,13 @@ MFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients) {
 			}
 			cf -> c0 = y[1];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MFCC created.");
 	}
 }
 
-MelFilter MFCC_to_MelFilter (MFCC me, long first, long last) {
+autoMelFilter MFCC_to_MelFilter (MFCC me, long first, long last) {
 	try {
 		long nf = my maximumNumberOfCoefficients + 1;
 		autoNUMmatrix<double> cosinesTable (NUMcosinesTable (nf), 1, 1);
@@ -842,14 +807,14 @@ MelFilter MFCC_to_MelFilter (MFCC me, long first, long last) {
 				thy z[i][frame] = y[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MelFilter created.");
 	}
 }
 
-
-static MelFilter MFCC_to_MelFilter2 (MFCC me, long first_cc, long last_cc, double f1_mel, double df_mel) {
+#if 0
+static autoMelFilter MFCC_to_MelFilter2 (MFCC me, long first_cc, long last_cc, double f1_mel, double df_mel) {
 	try {
 		int use_c0 = 0;
 		long nf = lround ((my fmax - my fmin) / df_mel);
@@ -876,7 +841,7 @@ static MelFilter MFCC_to_MelFilter2 (MFCC me, long first_cc, long last_cc, doubl
 			Melder_throw (U"MFCC_to_MelFilter: coefficients must be in interval [1,", my maximumNumberOfCoefficients, U"].");
 		}
 		autoNUMmatrix<double> dct (NUMcosinesTable (first_cc, last_cc, nf), first_cc, 1); // TODO ??
-		//if ((dct = NUMcosinesTable (first_cc, last_cc, nf)) == NULL) return NULL;
+		//if ((dct = NUMcosinesTable (first_cc, last_cc, nf)) == nullptr) return nullptr;
 
 		autoMelFilter thee = MelFilter_create (my xmin, my xmax, my nx, my dx, my x1, fmin, fmax, nf, df_mel, f1_mel);
 
@@ -898,16 +863,17 @@ static MelFilter MFCC_to_MelFilter2 (MFCC me, long first_cc, long last_cc, doubl
 				thy z[j][frame] = t;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MelFilter created.");
 	}
 }
+#endif
 
 /* Sound_and_FilterBank.cpp */
 
 // prototypes
-Sound FilterBank_as_Sound (FilterBank me);
+autoSound FilterBank_as_Sound (FilterBank me);
 
 /*
 	The gaussian(x) = (exp(-48*((i-(n+1)/2)/(n+1))^2)-exp(-12))/(1-exp(-12));
@@ -931,9 +897,9 @@ static double gaussian_window_squared_correction (long n) {
 	return (p2 - p1 + 24 * (n - 1) * e12 * e12) / denum;
 }
 
-static Matrix Sound_to_spectralpower (Sound me) {
+static autoMatrix Sound_to_spectralpower (Sound me) {
 	try {
-		autoSpectrum s = Sound_to_Spectrum (me, TRUE);
+		autoSpectrum s = Sound_to_Spectrum (me, true);
 		autoMatrix thee = Matrix_create (s -> xmin, s -> xmax, s -> nx, s -> dx, s -> x1, 1, 1, 1, 1, 1);
 		double scale = 2.0 * s -> dx / (my xmax - my xmin);
 
@@ -950,7 +916,7 @@ static Matrix Sound_to_spectralpower (Sound me) {
 
 		z[1] *= 0.5;
 		z[s -> nx] *= 0.5;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Matrix with spectral power created.");
 	}
@@ -982,7 +948,7 @@ static int Sound_into_BarkFilter_frame (Sound me, BarkFilter thee, long frame) {
 	return 1;
 }
 
-BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt, double f1_bark, double fmax_bark, double df_bark) {
+autoBarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt, double f1_bark, double fmax_bark, double df_bark) {
 	try {
 		double t1, nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist;
 		double windowDuration = 2 * analysisWidth; /* gaussian window */
@@ -1017,13 +983,13 @@ BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt, doubl
 		autoMelderProgress progess (U"BarkFilter analysis");
 
 		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (thee.peek(), i);
+			double t = Sampled_indexToX (thee.get(), i);
 
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2);
 
-			Sounds_multiply (sframe.peek(), window.peek());
+			Sounds_multiply (sframe.get(), window.get());
 
-			if (! Sound_into_BarkFilter_frame (sframe.peek(), thee.peek(), i)) {
+			if (! Sound_into_BarkFilter_frame (sframe.get(), thee.get(), i)) {
 				frameErrorCount++;
 			}
 
@@ -1041,7 +1007,7 @@ BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt, doubl
 		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
 
 		NUMdmatrix_to_dBs (thy z, 1, thy ny, 1, thy nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no BarkFilter created.");
 	}
@@ -1073,7 +1039,7 @@ static int Sound_into_MelFilter_frame (Sound me, MelFilter thee, long frame) {
 	return 1;
 }
 
-MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
+autoMelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
 	try {
 		double t1, samplingFrequency = 1 / my dx, nyquist = 0.5 * samplingFrequency;
 		double windowDuration = 2 * analysisWidth; /* gaussian window */
@@ -1109,10 +1075,10 @@ MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt, double
 		autoMelderProgress progress (U"MelFilters analysis");
 
 		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (thee.peek(), i);
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
-			if (! Sound_into_MelFilter_frame (sframe.peek(), thee.peek(), i)) {
+			double t = Sampled_indexToX (thee.get(), i);
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2);
+			Sounds_multiply (sframe.get(), window.get());
+			if (! Sound_into_MelFilter_frame (sframe.get(), thee.get(), i)) {
 				frameErrorCount++;
 			}
 			if ( (i % 10) == 1) {
@@ -1130,7 +1096,7 @@ MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt, double
 		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
 
 		NUMdmatrix_to_dBs (thy z, 1, thy ny, 1, thy nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MelFilter created.");
 	}
@@ -1166,9 +1132,7 @@ static int Sound_into_FormantFilter_frame (Sound me, FormantFilter thee, long fr
 	return 1;
 }
 
-FormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
-                                      double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw,
-                                      double minimumPitch, double maximumPitch) {
+autoFormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw, double minimumPitch, double maximumPitch) {
 	try {
 		double floor = 80, ceiling = 600;
 		if (minimumPitch >= maximumPitch) {
@@ -1182,16 +1146,14 @@ FormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
 		}
 
 		autoPitch thee = Sound_to_Pitch (me, dt, minimumPitch, maximumPitch);
-		autoFormantFilter ff = Sound_and_Pitch_to_FormantFilter (me, thee.peek(), analysisWidth, dt,
-		                       f1_hz, fmax_hz, df_hz, relative_bw);
-		return ff.transfer();
+		autoFormantFilter ff = Sound_and_Pitch_to_FormantFilter (me, thee.get(), analysisWidth, dt, f1_hz, fmax_hz, df_hz, relative_bw);
+		return ff;
 	} catch (MelderError) {
 		Melder_throw (me, U": no FormantFilter created.");
 	}
 }
 
-FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee, double analysisWidth, double dt,
-        double f1_hz, double fmax_hz, double df_hz, double relative_bw) {
+autoFormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw) {
 	try {
 		double t1, windowDuration = 2 * analysisWidth; /* gaussian window */
 		double nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist, fmin_hz = 0;
@@ -1233,17 +1195,17 @@ FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee, double ana
 		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
 		autoMelderProgress progress (U"Sound & Pitch: To FormantFilter");
 		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (him.peek(), i);
+			double t = Sampled_indexToX (him.get(), i);
 			double b, f0 = Pitch_getValueAtTime (thee, t, kPitch_unit_HERTZ, 0);
 
 			if (f0 == NUMundefined || f0 == 0) {
 				f0_undefined++; f0 = f0_median;
 			}
 			b = relative_bw * f0;
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2);
+			Sounds_multiply (sframe.get(), window.get());
 
-			Sound_into_FormantFilter_frame (sframe.peek(), him.peek(), i, b);
+			Sound_into_FormantFilter_frame (sframe.get(), him.get(), i, b);
 
 			if ( (i % 10) == 1) {
 				Melder_progress ( (double) i / nt, U"Frame ", i, U" out of ",
@@ -1253,38 +1215,38 @@ FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee, double ana
 
 		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
 		NUMdmatrix_to_dBs (his z, 1, his ny, 1, his nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"FormantFilter not created from Pitch & FormantFilter.");
 	}
 }
 
-Sound FilterBank_as_Sound (FilterBank me) {
+autoSound FilterBank_as_Sound (FilterBank me) {
 	try {
 		autoSound thee = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
 		for (long i = 1; i <= my ny; i++) {
 			for (long j = 1; j <= my nx; j++)
 				thy z[i][j] = my z[i][j];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
 
-Sound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		autoSound cc = Sounds_crossCorrelate ((Sound) me, (Sound) thee, scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U" and ", thee, U" not cross-correlated.");
 	}
 }
 
-Sound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		autoSound cc = Sounds_convolve ((Sound) me, (Sound) thee, scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U" and ", thee, U" not convolved.");
 	}
diff --git a/dwtools/FilterBank.h b/dwtools/FilterBank.h
index 14930eb..40fb094 100644
--- a/dwtools/FilterBank.h
+++ b/dwtools/FilterBank.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2011, 2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -77,28 +76,27 @@ Interpretation:
     ny the number of filters.
  */
 
-double FilterBank_getFrequencyInHertz (I, double f, int scale_from);
-double FilterBank_getFrequencyInBark (I, double f, int scale_from);
-double FilterBank_getFrequencyInMel (I, double f, int scale_from);
+double FilterBank_getFrequencyInHertz (FilterBank me, double f, int scale_from);
+double FilterBank_getFrequencyInBark (FilterBank me, double f, int scale_from);
+double FilterBank_getFrequencyInMel (FilterBank me, double f, int scale_from);
 
-int FilterBank_getFrequencyScale (I);
+int FilterBank_getFrequencyScale (FilterBank me);
 
-void FilterBank_drawFrequencyScales (I, Graphics g, int horizontalScale, double xmin,
+void FilterBank_drawFrequencyScales (FilterBank me, Graphics g, int horizontalScale, double xmin,
 	double xmax, int verticalScale, double ymin, double ymax, int garnish);
 
 void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g,
 	int freqScale,	int fromFilter, int toFilter, double zmin, double zmax,
 	int dbScale, double ymin, double ymax, int garnish);
 
-void FilterBank_drawTimeSlice (I, Graphics g, double t, double fmin, double fmax,
+void FilterBank_drawTimeSlice (FilterBank me, Graphics g, double t, double fmin, double fmax,
 	double min, double max, const char32 *xlabel, int garnish);
 
 void FilterBank_paint (FilterBank me, Graphics g, double xmin, double xmax, double ymin, double ymax, double minimum, double maximum, int garnish);
 
-BarkFilter BarkFilter_create (double tmin, double tmax, long nt, double dt,
-	double t1, double fmin, double fmax, long nf, double df, double f1);
+autoBarkFilter BarkFilter_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1);
 
-BarkFilter Matrix_to_BarkFilter (I);
+autoBarkFilter Matrix_to_BarkFilter (Matrix me);
 
 Thing_define (MelFilter, FilterBank) {
 	int v_getFrequencyScale ()
@@ -116,23 +114,23 @@ Interpretation:
     ny the number of filters.
  */
 
-MelFilter MelFilter_create (double tmin, double tmax, long nt, double dt,
+autoMelFilter MelFilter_create (double tmin, double tmax, long nt, double dt,
 	double t1, double fmin, double fmax, long nf, double df, double f1);
 
-MelFilter Matrix_to_MelFilter (I);
+autoMelFilter Matrix_to_MelFilter (Matrix);
 
 void MelFilter_drawFilterFunctions (MelFilter me, Graphics g,
 	int freqScale, int fromFilter, int toFilter, double zmin, double zmax,
 	int dbScale, double ymin, double ymax, int garnish);
 
-MFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients);
+autoMFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients);
 
 Thing_define (FormantFilter, FilterBank) {
 	const char32 *v_getFrequencyUnit ()
 		override { return U"Hz"; }
 };
 
-FormantFilter FormantFilter_create (double tmin, double tmax, long nt,
+autoFormantFilter FormantFilter_create (double tmin, double tmax, long nt,
 	double dt, double t1, double fmin, double fmax, long nf, double df,
 	double f1);
 
@@ -140,14 +138,14 @@ void FormantFilter_drawFilterFunctions (FormantFilter me, Graphics g, double ban
 	int freqScale, int fromFilter, int toFilter, double zmin, double zmax,
 	int dbScale, double ymin, double ymax, int garnish);
 
-FormantFilter Matrix_to_FormantFilter (I);
+autoFormantFilter Matrix_to_FormantFilter (Matrix me);
 
-void FilterBank_equalizeIntensities (I, double intensity_db);
+void FilterBank_equalizeIntensities (FilterBank me, double intensity_db);
 
-Matrix FilterBank_to_Matrix (I);
+autoMatrix FilterBank_to_Matrix (FilterBank me);
 /* Generieke ...Filters_to_Matrix */
 
-Spectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t);
+autoSpectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t);
 /*
 	Calculate amplitude spectrum at time t.
 	power[i] = ref * 10 ^ (my z[i][t] / 10)
@@ -155,29 +153,31 @@ Spectrum FormantFilter_to_Spectrum_slice (FormantFilter me, double t);
 	spec->z[2][i] = 0
 */
 
-Intensity FilterBank_to_Intensity (I);
+autoIntensity FilterBank_to_Intensity (FilterBank me);
 
-void FilterBank_and_PCA_drawComponent (I, PCA thee, Graphics g, long component, double dblevel,
+void FilterBank_and_PCA_drawComponent (FilterBank me, PCA thee, Graphics g, long component, double dblevel,
 	double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax);
 
 // Convert old types to new types
 
-MelSpectrogram MelFilter_to_MelSpectrogram (MelFilter me);
-BarkSpectrogram BarkFilter_to_BarkSpectrogram (BarkFilter me);
-Spectrogram FormantFilter_to_Spectrogram (FormantFilter me);
+autoMelSpectrogram MelFilter_to_MelSpectrogram (MelFilter me);
+
+autoBarkSpectrogram BarkFilter_to_BarkSpectrogram (BarkFilter me);
 
+autoSpectrogram FormantFilter_to_Spectrogram (FormantFilter me);
 
-MFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients);
+
+autoMFCC MelFilter_to_MFCC (MelFilter me, long numberOfCoefficients);
 /*
 Calculates the Cosine Transform of the filterbank values.
 */
 
-MelFilter MFCC_to_MelFilter (MFCC me, long firstCoefficient, long lastCoefficient);
+autoMelFilter MFCC_to_MelFilter (MFCC me, long firstCoefficient, long lastCoefficient);
 /*
 Calculates the Inverse CT of cepstral coefficients.
 */
 
-BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt,
+autoBarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt,
 	double f1_bark, double fmax_bark, double df_bark);
 /*
 	Filtering with filters on a Bark scale as defined by
@@ -188,19 +188,20 @@ BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt,
 	10 log F(z) = 15.8 + 7.5(z + 0.5) - 17.5 * sqrt(1 + (z + 0.5)^2)
 */
 
-MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt,
+autoMelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt,
 	double f1_mel, double fmax_mel, double df_mel);
 
-FormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
+autoFormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
 	double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw,
 	double minimumPitch, double maximumPitch);
 
-FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee,
+autoFormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee,
 	double analysisWidth, double dt, double f1_hz, double fmax_hz,
 	double df_hz, double relative_bw);
 
-Sound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-Sound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+
+autoSound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
 
 
 #endif /* _FilterBank_h_ */
diff --git a/dwtools/FormantGrid_extensions.cpp b/dwtools/FormantGrid_extensions.cpp
index a3bcb5a..8ff8741 100644
--- a/dwtools/FormantGrid_extensions.cpp
+++ b/dwtools/FormantGrid_extensions.cpp
@@ -1,43 +1,42 @@
-/* FormantGrid_extensions.c
+/* FormantGrid_extensions.cpp
  *
- * Copyright (C) 2009-2011 David Weenink
+ * Copyright (C) 2009-2011 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20090310
-*/
-
 #include "FormantGrid_extensions.h"
 #include "NUM2.h"
 
-void FormantGrid_draw (FormantGrid me, Graphics g, double xmin, double xmax, double ymin, double ymax, bool bandwidths, bool garnish, const char32 *method) {
-	Ordered tiers = bandwidths ? my bandwidths : my formants;
+void FormantGrid_draw (FormantGrid me, Graphics g, double xmin, double xmax, double ymin, double ymax,
+	bool bandwidths, bool garnish, const char32 *method)
+{
+	OrderedOf<structRealTier>* tiers = bandwidths ? & my bandwidths : & my formants;
 
 	if (xmax <= xmin) {
-		xmin = my xmin; xmax = my xmax;
+		xmin = my xmin;
+		xmax = my xmax;
 	}
 	if (ymax <= ymin) {
-		ymin = 0; ymax = bandwidths ? 1000 : 8000;
+		ymin = 0.0;
+		ymax = bandwidths ? 1000.0 : 8000.0;
 	}
-	for (long iformant = 1; iformant <= my formants -> size; iformant++) {
+	for (long iformant = 1; iformant <= tiers->size; iformant++) {
 		const char32 *quantity = 0;
 		bool garnish2 = false;
-		RealTier tier = (RealTier) tiers -> item[iformant];
-		if (iformant == my formants -> size) {
+		RealTier tier = tiers->at [iformant];
+		if (iformant == my formants.size) {
 			quantity = U"Frequency (Hz)";
 			if (garnish) {
 				garnish2 = true;
@@ -48,17 +47,17 @@ void FormantGrid_draw (FormantGrid me, Graphics g, double xmin, double xmax, dou
 }
 
 static void FormantGrid_removeFormantTier (FormantGrid me, int position) {
-	if (position < 1 || position > my formants -> size) {
+	if (position < 1 || position > my formants.size) {
 		return;
 	}
-	Collection_removeItem (my formants, position);
+	my formants. removeItem (position);
 }
 
 static void FormantGrid_removeBandwidthTier (FormantGrid me, int position) {
-	if (position < 1 || position > my bandwidths -> size) {
+	if (position < 1 || position > my bandwidths.size) {
 		return;
 	}
-	Collection_removeItem (my bandwidths, position);
+	my bandwidths. removeItem (position);
 }
 
 void FormantGrid_removeFormantAndBandwidthTiers (FormantGrid me, int position) {
@@ -67,28 +66,28 @@ void FormantGrid_removeFormantAndBandwidthTiers (FormantGrid me, int position) {
 }
 
 static void FormantGrid_addFormantTier (FormantGrid me, int position) {
-	if (position > my formants -> size || position < 1) {
-		position = my formants -> size + 1;
+	if (position > my formants.size || position < 1) {
+		position = my formants.size + 1;
 	}
 	autoRealTier rt = RealTier_create (my xmin, my xmax);
-	Ordered_addItemPos (my formants, rt.transfer(), position);
+	my formants. addItemAtPosition_move (rt.move(), position);
 }
 
 static void FormantGrid_addBandwidthTier (FormantGrid me, int position) {
-	if (position > my bandwidths -> size || position < 1) {
-		position = my bandwidths -> size + 1;
+	if (position > my bandwidths.size || position < 1) {
+		position = my bandwidths.size + 1;
 	}
 	autoRealTier rt = RealTier_create (my xmin, my xmax);
-	Ordered_addItemPos (my bandwidths, rt.transfer(), position);
+	my bandwidths. addItemAtPosition_move (rt.move(), position);
 }
 
 void FormantGrid_addFormantAndBandwidthTiers (FormantGrid me, int position) {
 	try {
-		if (my formants -> size != my bandwidths -> size) {
+		if (my formants.size != my bandwidths.size) {
 			Melder_throw (U"Number of formants and bandwidths must be equal.");
 		}
-		if (position > my formants -> size || position < 1) {
-			position = my formants -> size + 1;
+		if (position > my formants.size || position < 1) {
+			position = my formants.size + 1;
 		}
 		FormantGrid_addFormantTier (me, position);
 		try {
diff --git a/dwtools/FormantGrid_extensions.h b/dwtools/FormantGrid_extensions.h
index 5f1c42d..4b8ba72 100644
--- a/dwtools/FormantGrid_extensions.h
+++ b/dwtools/FormantGrid_extensions.h
@@ -2,21 +2,20 @@
 #define _FormantGrid_extensions_h_
 /* FormantGrid_extensions.h
  *
- * Copyright (C) 2009-2011 David Weenink
+ * Copyright (C) 2009-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/GaussianMixture.cpp b/dwtools/GaussianMixture.cpp
index 6ed15e9..2d2bb2c 100644
--- a/dwtools/GaussianMixture.cpp
+++ b/dwtools/GaussianMixture.cpp
@@ -1,20 +1,19 @@
 /* GaussianMixture.cpp
  *
- * Copyright (C) 2011-2014 David Weenink
+ * Copyright (C) 2011-2014, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -46,7 +45,7 @@
 #include "oo_DESCRIPTION.h"
 #include "GaussianMixture_def.h"
 
-Thing_implement (GaussianMixture, Data, 0);
+Thing_implement (GaussianMixture, Daata, 0);
 
 const char32 *GaussianMixture_criterionText (int criterion) {
 	const char32 *criterionText[6] =  { U"(1/n)*LLH", U"(1/n)*MML", U"(1/n)*BIC", U"(1/n)*AIC", U"(1/n)*AICc", U"(1/n)*CD_LLH" };
@@ -75,47 +74,47 @@ static void GaussianMixture_updateCovariance (GaussianMixture me, long component
 	if (component < 1 || component > my numberOfComponents) {
 		return;
 	}
-	Covariance thee = (Covariance) my covariances -> item[component];
+	Covariance thee = my covariances->at [component];
 
-	double mixprob = my mixingProbabilities[component];
-	double gsum = p[numberOfRows + 1][component];
+	double mixprob = my mixingProbabilities [component];
+	double gsum = p [numberOfRows + 1] [component];
 	// update the means
 
-	for (long j = 1; j <= thy numberOfColumns; j++) {
-		thy centroid[j] = 0;
-		for (long i = 1; i <= numberOfRows; i++) {
-			double gamma = mixprob * p[i][component] / p[i][my numberOfComponents + 1];
-			thy centroid[j] += gamma * data[i][j] ; // eq. Bishop 9.17
+	for (long j = 1; j <= thy numberOfColumns; j ++) {
+		thy centroid [j] = 0;
+		for (long i = 1; i <= numberOfRows; i ++) {
+			double gamma = mixprob * p [i] [component] / p [i] [my numberOfComponents + 1];
+			thy centroid [j] += gamma * data [i] [j] ; // eq. Bishop 9.17
 		}
-		thy centroid[j] /= gsum;
+		thy centroid [j] /= gsum;
 	}
 
 	// update covariance with the new mean
 
 	if (thy numberOfRows == 1) { // 1xn covariance
-		for (long j = 1; j <= thy numberOfColumns; j++) {
+		for (long j = 1; j <= thy numberOfColumns; j ++) {
 			thy data[1][j] = 0;
 		}
-		for (long i = 1; i <= numberOfRows; i++) {
-			double gamma = mixprob * p[i][component] / p[i][my numberOfComponents + 1];
+		for (long i = 1; i <= numberOfRows; i ++) {
+			double gamma = mixprob * p [i] [component] / p [i] [my numberOfComponents + 1];
 			double gdn = gamma / gsum;
-			for (long j = 1; j <= thy numberOfColumns; j++) {
-				double xj = thy centroid[j] - data[i][j];
-				thy data[1][j] += gdn * xj * xj;
+			for (long j = 1; j <= thy numberOfColumns; j ++) {
+				double xj = thy centroid [j] - data [i] [j];
+				thy data [1] [j] += gdn * xj * xj;
 			}
 		}
 	} else { // nxn covariance
-		for (long j = 1; j <= thy numberOfRows; j++)
-			for (long k = j; k <= thy numberOfColumns; k++) {
-				thy data[k][j] = thy data[j][k] = 0;
+		for (long j = 1; j <= thy numberOfRows; j ++)
+			for (long k = j; k <= thy numberOfColumns; k ++) {
+				thy data [k] [j] = thy data [j] [k] = 0;
 			}
-		for (long i = 1; i <= numberOfRows; i++) {
-			double gamma = mixprob * p[i][component] / p[i][my numberOfComponents + 1];
+		for (long i = 1; i <= numberOfRows; i ++) {
+			double gamma = mixprob * p [i] [component] / p [i] [my numberOfComponents + 1];
 			double gdn = gamma / gsum; // we cannot divide by nk - 1, this could cause instability
-			for (long j = 1; j <= thy numberOfColumns; j++) {
-				double xj = thy centroid[j] - data[i][j];
-				for (long k = j; k <= thy numberOfColumns; k++) {
-					thy data[j][k] = thy data[k][j] += gdn * xj * (thy centroid[k] - data[i][k]);
+			for (long j = 1; j <= thy numberOfColumns; j ++) {
+				double xj = thy centroid [j] - data [i] [j];
+				for (long k = j; k <= thy numberOfColumns; k ++) {
+					thy data [j] [k] = thy data [k] [j] += gdn * xj * (thy centroid [k] - data [i] [k]);
 				}
 			}
 		}
@@ -128,39 +127,39 @@ static void GaussianMixture_addCovarianceFraction (GaussianMixture me, long im,
 		return;
 	}
 
-	Covariance thee = (Covariance) my covariances -> item[im];
+	Covariance thee = my covariances->at [im];
 
 	// prevent instability: add lambda fraction of global covariances
 
 	if (thy numberOfRows == 1) {
-		for (long j = 1; j <= thy numberOfColumns; j++) {
-			thy data[1][j] += fraction * his data[j][j];
+		for (long j = 1; j <= thy numberOfColumns; j ++) {
+			thy data [1] [j] += fraction * his data [j] [j];
 		}
 	} else {
 		for (long j = 1; j <= thy numberOfColumns; j++) {
 			for (long k = j; k <= thy numberOfColumns; k++) {
-				thy data[k][j] = thy data[j][k] += fraction * his data[j][k];
+				thy data [k] [j] = thy data [j] [k] += fraction * his data [j] [k];
 			}
 		}
 	}
 }
 
 void structGaussianMixture :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"Number of components: ", numberOfComponents);
-	MelderInfo_writeLine (U"Dimension of component: ", dimension);
+	our structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of components: ", our numberOfComponents);
+	MelderInfo_writeLine (U"Dimension of component: ", our dimension);
 	MelderInfo_writeLine (U"Mixing probabilities:");
-	for (long im = 1; im <= numberOfComponents; im++) {
-		MelderInfo_writeLine (U"  ", im, U": p = ", mixingProbabilities[im],
-		                       U"  Name =  \"", Thing_getName ( (Thing) covariances -> item[im]), U"\"");
+	for (long im = 1; im <= numberOfComponents; im ++) {
+		MelderInfo_writeLine (U"  ", im, U": p = ", our mixingProbabilities [im],
+		                       U"  Name =  \"", Thing_getName (our covariances->at [im]), U"\"");
 	}
 }
 
 static void GaussianMixture_setLabelsFromTableOfReal (GaussianMixture me, TableOfReal thee) {
-	for (long im = 1; im <= my numberOfComponents; im++) {
-		Covariance cov = (Covariance) my covariances -> item[im];
-		for (long j = 1; j <= my dimension; j++) {
-			TableOfReal_setColumnLabel (cov, j, thy columnLabels[j]);
+	for (long im = 1; im <= my numberOfComponents; im ++) {
+		Covariance cov = my covariances->at [im];
+		for (long j = 1; j <= my dimension; j ++) {
+			TableOfReal_setColumnLabel (cov, j, thy columnLabels [j]);
 		}
 	}
 }
@@ -175,7 +174,7 @@ static void Covariance_into_Covariance (Covariance me, Covariance thee) {
 
 	thy numberOfObservations = my numberOfObservations;
 	// copy centroid & column labels
-	for (long ic = 1; ic <= my numberOfColumns; ic++) {
+	for (long ic = 1; ic <= my numberOfColumns; ic ++) {
 		thy centroid[ic] = my centroid[ic];
 	}
 	NUMstrings_copyElements (my columnLabels, thy columnLabels, 1, thy numberOfColumns);
@@ -185,11 +184,11 @@ static void Covariance_into_Covariance (Covariance me, Covariance thee) {
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
 		return;
 	} else {
-		for (long ir = 1; ir <= my numberOfRows; ir++) {
-			for (long ic = ir; ic <= my numberOfColumns; ic++) {
+		for (long ir = 1; ir <= my numberOfRows; ir ++) {
+			for (long ic = ir; ic <= my numberOfColumns; ic ++) {
 				long dij = ic - ir;
 				if (dij < thy numberOfRows) {
-					thy data[dij + 1][ic] = my data[ir][ic];
+					thy data [dij + 1] [ic] = my data [ir] [ic];
 				}
 			}
 		}
@@ -197,28 +196,28 @@ static void Covariance_into_Covariance (Covariance me, Covariance thee) {
 }
 
 static void GaussianMixture_setDefaultMixtureNames (GaussianMixture me) {
-	for (long im = 1; im <= my numberOfComponents; im++) {
-		Covariance cov = (Covariance) my covariances -> item[im];
+	for (long im = 1; im <= my numberOfComponents; im ++) {
+		Covariance cov = my covariances->at [im];
 		Thing_setName (cov, Melder_cat (U"m", im));
 	}
 }
 
-GaussianMixture GaussianMixture_create (long numberOfComponents, long dimension, long storage) {
+autoGaussianMixture GaussianMixture_create (long numberOfComponents, long dimension, long storage) {
 	try {
 		autoGaussianMixture me = Thing_new (GaussianMixture);
 		my numberOfComponents = numberOfComponents;
 		my dimension = dimension;
 		my mixingProbabilities = NUMvector<double> (1, numberOfComponents);
-		my covariances = Ordered_create ();
-		for (long im = 1; im <= numberOfComponents; im++) {
+		my covariances = CovarianceList_create ();
+		for (long im = 1; im <= numberOfComponents; im ++) {
 			autoCovariance cov = Covariance_create_reduceStorage (dimension, storage);
-			Ordered_addItemPos (my covariances, cov.transfer(), im);
+			my covariances -> addItemAtPosition_move (cov.move(), im);
 		}
-		for (long im = 1; im <= numberOfComponents; im++) {
+		for (long im = 1; im <= numberOfComponents; im ++) {
 			my mixingProbabilities[im] = 1.0 / numberOfComponents;
 		}
-		GaussianMixture_setDefaultMixtureNames (me.peek());
-		return me.transfer();
+		GaussianMixture_setDefaultMixtureNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"GaussianMixture not created.");
 	}
@@ -227,19 +226,19 @@ GaussianMixture GaussianMixture_create (long numberOfComponents, long dimension,
 /* c is double vector 1..dimension !!!!!! */
 int GaussianMixture_generateOneVector (GaussianMixture me, double *c, char32 **covname, double *buf) {
 	try {
-		double p = NUMrandomUniform (0, 1);
+		double p = NUMrandomUniform (0.0, 1.0);
 		long im = NUMgetIndexFromProbability (my mixingProbabilities, my numberOfComponents, p);
-		Covariance thee = (Covariance) my covariances -> item[im];
+		Covariance thee = my covariances->at [im];
 		*covname = thy name;
 		if (thy numberOfRows == 1) { // 1xn reduced form
-			for (long i = 1; i <= my dimension; i++) {
-				c[i] = NUMrandomGauss (thy centroid[i], sqrt (thy data[1][i]));
+			for (long i = 1; i <= my dimension; i ++) {
+				c[i] = NUMrandomGauss (thy centroid [i], sqrt (thy data [1] [i]));
 			}
 		} else { // nxn
-			if (thy pca == 0) {
+			if (! thy pca) {
 				SSCP_expandPCA (thee);    // on demand expanding
 			}
-			Covariance_and_PCA_generateOneVector (thee, thy pca, c, buf);
+			Covariance_and_PCA_generateOneVector (thee, thy pca.get(), c, buf);
 		}
 		return 1;
 	} catch (MelderError) {
@@ -247,102 +246,102 @@ int GaussianMixture_generateOneVector (GaussianMixture me, double *c, char32 **c
 	}
 }
 
-GaussianMixture TableOfReal_to_GaussianMixture_fromRowLabels (TableOfReal me, long storage) {
+autoGaussianMixture TableOfReal_to_GaussianMixture_fromRowLabels (TableOfReal me, long storage) {
 	try {
 		autoStrings rowLabels = TableOfReal_extractRowLabels (me);
-		autoDistributions dist = Strings_to_Distributions (rowLabels.peek());
+		autoDistributions dist = Strings_to_Distributions (rowLabels.get());
 		long numberOfComponents = dist -> numberOfRows;
 
 		autoGaussianMixture thee = GaussianMixture_create (numberOfComponents, my numberOfColumns, storage);
 
-		GaussianMixture_setLabelsFromTableOfReal (thee.peek(), me);
+		GaussianMixture_setLabelsFromTableOfReal (thee.get(), me);
 
-		for (long i = 1; i <= numberOfComponents; i++) {
-			autoTableOfReal tab = TableOfReal_extractRowsWhereLabel (me, kMelder_string_EQUAL_TO, dist->rowLabels[i]);
-			autoCovariance cov = TableOfReal_to_Covariance (tab.peek());
-			Covariance_into_Covariance (cov.peek(), (Covariance) thy covariances -> item[i]);
-			Thing_setName ( (Thing) thy covariances -> item[i], dist -> rowLabels[i]);
+		for (long i = 1; i <= numberOfComponents; i ++) {
+			autoTableOfReal tab = TableOfReal_extractRowsWhereLabel (me, kMelder_string_EQUAL_TO, dist -> rowLabels [i]);
+			autoCovariance cov = TableOfReal_to_Covariance (tab.get());
+			Covariance_into_Covariance (cov.get(), thy covariances->at [i]);
+			Thing_setName (thy covariances->at [i], dist -> rowLabels [i]);
 		}
-		for (long im = 1; im <= numberOfComponents; im++) {
-			thy mixingProbabilities[im] = dist -> data[im][1] / my numberOfRows;
+		for (long im = 1; im <= numberOfComponents; im ++) {
+			thy mixingProbabilities [im] = dist -> data [im] [1] / my numberOfRows;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no GaussianMixture created.");
 	}
 }
 
-Covariance GaussianMixture_to_Covariance_between (GaussianMixture me) {
+autoCovariance GaussianMixture_to_Covariance_between (GaussianMixture me) {
 	try {
 		autoCovariance thee = Covariance_create (my dimension);
 
 		//	First the new centroid, based on the mixture centroids
 
 		double nobs_total = 0;
-		for (long i = 1; i <= my numberOfComponents; i++) {
-			Covariance him = (Covariance) my covariances -> item[i];
+		for (long i = 1; i <= my numberOfComponents; i ++) {
+			Covariance him = my covariances->at [i];
 			double nobs = his numberOfObservations; // the weighting factor
-			for (long ic = 1; ic <= my dimension; ic++) {
-				thy centroid[ic] += nobs * his centroid[ic];
+			for (long ic = 1; ic <= my dimension; ic ++) {
+				thy centroid [ic] += nobs * his centroid [ic];
 			}
 			nobs_total += nobs;
 		}
-		for (long ic = 1; ic <= my dimension; ic++) {
+		for (long ic = 1; ic <= my dimension; ic ++) {
 			thy centroid[ic] /= nobs_total;
 		}
 
-		Covariance cov = (Covariance) my covariances -> item[1];
-		for (long i = 1; i <= thy numberOfColumns; i++) {
-			if (cov -> columnLabels[i]) {
-				TableOfReal_setColumnLabel (thee.peek(), i, cov -> columnLabels[i]);
-				TableOfReal_setRowLabel (thee.peek(), i, cov -> columnLabels[i]); // if diagonal !
+		Covariance cov = my covariances->at [1];
+		for (long i = 1; i <= thy numberOfColumns; i ++) {
+			if (cov -> columnLabels [i]) {
+				TableOfReal_setColumnLabel (thee.get(), i, cov -> columnLabels [i]);
+				TableOfReal_setRowLabel (thee.get(), i, cov -> columnLabels [i]); // if diagonal !
 			}
 		}
 
 		// Between covariance, scale by the number of observations
 
-		for (long i = 1; i <= my numberOfComponents; i++) {
-			Covariance him = (Covariance) my covariances -> item[i];
+		for (long i = 1; i <= my numberOfComponents; i ++) {
+			Covariance him = my covariances->at [i];
 			double nobs = his numberOfObservations - 1; // we loose 1 degree of freedom
-			for (long ir = 1; ir <= my dimension; ir++) {
-				double dir = his centroid[ir] - thy centroid[ir];
-				for (long ic = ir; ic <= my dimension; ic++) {
+			for (long ir = 1; ir <= my dimension; ir ++) {
+				double dir = his centroid [ir] - thy centroid [ir];
+				for (long ic = ir; ic <= my dimension; ic ++) {
 					double dic = his centroid[ic] - thy centroid[ic];
-					thy data[ir][ic] = thy data[ic][ir] += nobs * dir * dic;
+					thy data [ir] [ic] = thy data [ic] [ir] += nobs * dir * dic;
 				}
 			}
 		}
 
 		// Scale back
 
-		for (long ir = 1; ir <= my dimension; ir++) {
-			for (long ic = ir; ic <= my dimension; ic++) {
-				thy data[ir][ic] = thy data[ic][ir] /= nobs_total;
+		for (long ir = 1; ir <= my dimension; ir ++) {
+			for (long ic = ir; ic <= my dimension; ic ++) {
+				thy data [ir] [ic] = thy data [ic] [ir] /= nobs_total;
 			}
 		}
 
 		thy numberOfObservations = nobs_total;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Covariance (between) created.");
 	}
 }
 
-Covariance GaussianMixture_to_Covariance_within (GaussianMixture me) {
+autoCovariance GaussianMixture_to_Covariance_within (GaussianMixture me) {
 	try {
 		autoCovariance thee = Covariance_create (my dimension);
 
-		for (long i = 1; i <= my numberOfComponents; i++) {
-			double p = my mixingProbabilities[i];
-			Covariance him = (Covariance) my covariances -> item[i];
+		for (long i = 1; i <= my numberOfComponents; i ++) {
+			double p = my mixingProbabilities [i];
+			Covariance him = my covariances->at [i];
 			if (his numberOfRows == 1) {
-				for (long ic = 1; ic <= my dimension; ic++) {
-					thy data[ic][ic] += p * his data[1][ic];
+				for (long ic = 1; ic <= my dimension; ic ++) {
+					thy data [ic] [ic] += p * his data [1] [ic];
 				}
 			} else {
-				for (long ir = 1; ir <= my dimension; ir++) {
-					for (long ic = ir; ic <= my dimension; ic++) {
-						thy data[ir][ic] = thy data[ic][ir] += p * his data[ir][ic];
+				for (long ir = 1; ir <= my dimension; ir ++) {
+					for (long ic = ir; ic <= my dimension; ic ++) {
+						thy data [ir] [ic] = thy data [ic] [ir] += p * his data [ir] [ic];
 					}
 				}
 			}
@@ -351,14 +350,14 @@ Covariance GaussianMixture_to_Covariance_within (GaussianMixture me) {
 
 		// Leave centroid at 0 so we can add the within and between covariance nicely
 		// Copy row labels from columns, because covar might be diagonal
-		TableOfReal_copyLabels ((Covariance) my covariances -> item[1], thee.peek(), -1, 1);
-		return thee.transfer();
+		TableOfReal_copyLabels (my covariances->at [1], thee.get(), -1, 1);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Covariance (within) created.");
 	}
 }
 
-Covariance GaussianMixture_to_Covariance_total (GaussianMixture me) {
+autoCovariance GaussianMixture_to_Covariance_total (GaussianMixture me) {
 	try {
 		autoCovariance thee = GaussianMixture_to_Covariance_between (me);
 		autoCovariance within = GaussianMixture_to_Covariance_within (me);
@@ -368,67 +367,68 @@ Covariance GaussianMixture_to_Covariance_total (GaussianMixture me) {
 				thy data[ir][ic] = thy data[ic][ir] += within -> data[ir][ic];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Covariance (total) created.");
 	}
 }
 
-Covariance GaussianMixture_extractComponent (GaussianMixture me, long component) {
+autoCovariance GaussianMixture_extractComponent (GaussianMixture me, long component) {
 	try {
 		if (component < 1 || component > my numberOfComponents) {
 			Melder_throw (U"Illegal component.");
 		}
-		return Data_copy ( (Covariance) my covariances -> item[component]);
+		autoCovariance thee = Data_copy (my covariances->at [component]);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no component extracted.");
 	}
 }
 
-TableOfReal GaussianMixture_extractMixingProbabilities (GaussianMixture me) {
+autoTableOfReal GaussianMixture_extractMixingProbabilities (GaussianMixture me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfComponents, 2);
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"p");
-		TableOfReal_setColumnLabel (thee.peek(), 2, U"n");
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance) my covariances -> item[im];
-			thy data[im][1] = my mixingProbabilities[im];
-			thy data[im][2] = cov -> numberOfObservations;
-			TableOfReal_setRowLabel (thee.peek(), im, Thing_getName (cov));
-		}
-		return thee.transfer();
+		TableOfReal_setColumnLabel (thee.get(), 1, U"p");
+		TableOfReal_setColumnLabel (thee.get(), 2, U"n");
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
+			thy data [im] [1] = my mixingProbabilities [im];
+			thy data [im] [2] = cov -> numberOfObservations;
+			TableOfReal_setRowLabel (thee.get(), im, Thing_getName (cov));
+		}
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no mixing probabilities extracted.");
 	}
 }
 
-TableOfReal GaussianMixture_extractCentroids (GaussianMixture me) {
+autoTableOfReal GaussianMixture_extractCentroids (GaussianMixture me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfComponents, my dimension);
 
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance)  my covariances -> item[im];
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
 			if (im == 1) {
-				for (long j = 1; j <= my dimension; j++) {
-					TableOfReal_setColumnLabel (thee.peek(), j, cov -> columnLabels[j]);
+				for (long j = 1; j <= my dimension; j ++) {
+					TableOfReal_setColumnLabel (thee.get(), j, cov -> columnLabels [j]);
 				}
 			}
-			TableOfReal_setRowLabel (thee.peek(), im, Thing_getName (cov));
-			for (long j = 1; j <= my dimension; j++) {
-				thy data[im][j] = cov -> centroid[j];
+			TableOfReal_setRowLabel (thee.get(), im, Thing_getName (cov));
+			for (long j = 1; j <= my dimension; j ++) {
+				thy data [im] [j] = cov -> centroid [j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no centroid extracted.");
 	}
 }
 
-PCA GaussianMixture_to_PCA (GaussianMixture me) {
+autoPCA GaussianMixture_to_PCA (GaussianMixture me) {
 	try {
 		autoCovariance him = GaussianMixture_to_Covariance_total (me);
-		autoPCA thee = SSCP_to_PCA (him.peek());
-		return thee.transfer();
+		autoPCA thee = SSCP_to_PCA (him.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PCA calculated.");
 	}
@@ -439,8 +439,8 @@ void GaussianMixture_getIntervalsAlongDirections (GaussianMixture me, long d1, l
 	if (d1 < 1 || d1 > my dimension || d2 < 1 || d2 > my dimension) {
 		Melder_throw (U"Incorrect directions.");
 	}
-	autoSSCPs sscps = SSCPs_extractTwoDimensions ((SSCPs) my covariances, d1, d2);
-	SSCPs_getEllipsesBoundingBoxCoordinates (sscps.peek(), -nsigmas, 0, xmin, xmax, ymin, ymax);
+	autoSSCPList sscps = SSCPList_extractTwoDimensions (my covariances->asSSCPList(), d1, d2);
+	SSCPList_getEllipsesBoundingBoxCoordinates (sscps.get(), -nsigmas, 0, xmin, xmax, ymin, ymax);
 }
 
 void GaussianMixture_getIntervalAlongDirection (GaussianMixture me, long d, double nsigmas, double *xmin, double *xmax) {
@@ -449,18 +449,16 @@ void GaussianMixture_getIntervalAlongDirection (GaussianMixture me, long d, doub
 }
 
 void GaussianMixture_and_PCA_getIntervalsAlongDirections (GaussianMixture me, PCA thee, long d1, long d2, double nsigmas, double *xmin, double *xmax, double *ymin, double *ymax) {
-	*xmin = *xmax = *ymin = *ymax = NUMundefined;
 	if (my dimension != thy dimension || d1 < 1 || d1 > my dimension || d2 < 1 || d2 > my dimension) {
 		Melder_throw (U"Incorrect directions.");
 	}
-	autoSSCPs sscps = SSCPs_toTwoDimensions ( (SSCPs) my covariances, thy eigenvectors[d1], thy eigenvectors[d2]);
-	SSCPs_getEllipsesBoundingBoxCoordinates (sscps.peek(), -nsigmas, 0, xmin, xmax, ymin, ymax);
+	autoSSCPList sscps = SSCPList_toTwoDimensions (my covariances->asSSCPList(), thy eigenvectors [d1], thy eigenvectors [d2]);
+	SSCPList_getEllipsesBoundingBoxCoordinates (sscps.get(), -nsigmas, 0, xmin, xmax, ymin, ymax);
 }
 
 
 void GaussianMixture_and_PCA_getIntervalAlongDirection (GaussianMixture me, PCA thee, long d, double nsigmas, double *xmin, double *xmax) {
-	double ymin, ymax;
-	GaussianMixture_and_PCA_getIntervalsAlongDirections (me, thee, d, d, nsigmas, xmin, xmax, &ymin, &ymax);
+	GaussianMixture_and_PCA_getIntervalsAlongDirections (me, thee, d, d, nsigmas, xmin, xmax, nullptr, nullptr);
 }
 
 void GaussianMixture_and_PCA_drawMarginalPdf (GaussianMixture me, PCA thee, Graphics g, long d, double xmin, double xmax, double ymin, double ymax, long npoints, long nbins, int garnish) {
@@ -479,7 +477,7 @@ void GaussianMixture_and_PCA_drawMarginalPdf (GaussianMixture me, PCA thee, Grap
 		GaussianMixture_and_PCA_getIntervalAlongDirection (me, thee, d, nsigmas, &xmin, &xmax);
 	}
 
-	double pmax = 0, dx = (xmax - xmin) / npoints, x1 = xmin + 0.5 * dx;
+	double pmax = 0.0, dx = (xmax - xmin) / npoints, x1 = xmin + 0.5 * dx;
 	double scalef = nbins <= 0 ? 1 : 1; // TODO
 	for (long i = 1; i <= npoints; i++) {
 		double x = x1 + (i - 1) * dx;
@@ -489,7 +487,7 @@ void GaussianMixture_and_PCA_drawMarginalPdf (GaussianMixture me, PCA thee, Grap
 		}
 	}
 	if (ymin >= ymax) {
-		ymin = 0;
+		ymin = 0.0;
 		ymax = pmax;
 	}
 
@@ -500,10 +498,10 @@ void GaussianMixture_and_PCA_drawMarginalPdf (GaussianMixture me, PCA thee, Grap
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_markBottom (g, xmin, 1, 1, 0, NULL);
-		Graphics_markBottom (g, xmax, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ymin, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ymax, 1, 1, 0, NULL);
+		Graphics_markBottom (g, xmin, true, true, false, nullptr);
+		Graphics_markBottom (g, xmax, true, true, false, nullptr);
+		Graphics_markLeft (g, ymin, true, true, false, nullptr);
+		Graphics_markLeft (g, ymax, true, true, false, nullptr);
 	}
 }
 
@@ -547,16 +545,14 @@ void GaussianMixture_drawMarginalPdf (GaussianMixture me, Graphics g, long d, do
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_markBottom (g, xmin, 1, 1, 0, NULL);
-		Graphics_markBottom (g, xmax, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ymin, 1, 1, 0, NULL);
-		Graphics_markLeft (g, ymax, 1, 1, 0, NULL);
+		Graphics_markBottom (g, xmin, true, true, false, nullptr);
+		Graphics_markBottom (g, xmax, true, true, false, nullptr);
+		Graphics_markLeft (g, ymin, true, true, false, nullptr);
+		Graphics_markLeft (g, ymax, true, true, false, nullptr);
 	}
 }
 
-void GaussianMixture_and_PCA_drawConcentrationEllipses (GaussianMixture me, PCA him, Graphics g, double scale,
-        int confidence, char32 *label, long d1, long d2,
-        double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
+void GaussianMixture_and_PCA_drawConcentrationEllipses (GaussianMixture me, PCA him, Graphics g, double scale, int confidence, char32 *label, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
 	if (my dimension != his dimension) {
 		Melder_warning (U"Dimensions don't agree.");
 		return;
@@ -574,7 +570,7 @@ void GaussianMixture_and_PCA_drawConcentrationEllipses (GaussianMixture me, PCA
 		d2_inverted = 1;
 	}
 
-	autoSSCPs thee = SSCPs_toTwoDimensions ( (SSCPs) my covariances, his eigenvectors[d1], his eigenvectors[d2]);
+	autoSSCPList thee = SSCPList_toTwoDimensions (my covariances->asSSCPList(), his eigenvectors [d1], his eigenvectors [d2]);   // FIXME
 
 	if (d1_inverted) {
 		Eigen_invertEigenvector (him, d1);
@@ -583,24 +579,21 @@ void GaussianMixture_and_PCA_drawConcentrationEllipses (GaussianMixture me, PCA
 		Eigen_invertEigenvector (him, d2);
 	}
 
-	SSCPs_drawConcentrationEllipses (thee.peek(), g, -scale, confidence, label, 1, 2,
-	                                 xmin, xmax, ymin, ymax, fontSize, 0);
+	SSCPList_drawConcentrationEllipses (thee.get(), g, -scale, confidence, label, 1, 2, xmin, xmax, ymin, ymax, fontSize, 0);
 
 	if (garnish) {
 		char32 llabel[40];
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 		Melder_sprint (llabel,40, U"pc ", d2);
-		Graphics_textLeft (g, 1, llabel);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_textLeft (g, true, llabel);
+		Graphics_marksBottom (g, 2, true, true, false);
 		Melder_sprint (llabel,40, U"pc ", d1);
-		Graphics_textBottom (g, 1, llabel);
+		Graphics_textBottom (g, true, llabel);
 	}
 }
 
-void GaussianMixture_drawConcentrationEllipses (GaussianMixture me, Graphics g,
-        double scale, int confidence, char32 *label, int pcaDirections, long d1, long d2,
-        double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
+void GaussianMixture_drawConcentrationEllipses (GaussianMixture me, Graphics g, double scale, int confidence, char32 *label, int pcaDirections, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
 	if (d1 == 0 && d2 == 0) {
 		d1 = 1;
 		d2 = 2;
@@ -610,14 +603,14 @@ void GaussianMixture_drawConcentrationEllipses (GaussianMixture me, Graphics g,
 	}
 
 	if (! pcaDirections) {
-		SSCPs_drawConcentrationEllipses ( (SSCPs) my covariances, g, -scale, confidence, label,
+		SSCPList_drawConcentrationEllipses (my covariances->asSSCPList(), g, -scale, confidence, label,
 		                                  labs (d1), labs (d2), xmin, xmax, ymin, ymax, fontSize, garnish);
 		return;
 	}
 
 	autoPCA him = GaussianMixture_to_PCA (me);
 
-	GaussianMixture_and_PCA_drawConcentrationEllipses (me, him.peek(), g, scale, confidence, label, d1, d2,
+	GaussianMixture_and_PCA_drawConcentrationEllipses (me, him.get(), g, scale, confidence, label, d1, d2,
 	        xmin, xmax, ymin, ymax, fontSize, garnish);
 }
 
@@ -630,40 +623,41 @@ void GaussianMixture_initialGuess (GaussianMixture me, TableOfReal thee, double
 		// spread centroids on an ellips in pc1-pc2 plane?
 
 		if (my dimension == 1) {
-			double dm = 2 * sqrt (cov_t -> data[1][1]) / my numberOfComponents;
-			double m1 = cov_t -> centroid[1] - dm;
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				Covariance covi = (Covariance) my covariances -> item[im];
-				covi -> centroid[1] = m1;
-				covi -> data[1][1] = dm * dm;
+			double dm = 2.0 * sqrt (cov_t -> data [1] [1]) / my numberOfComponents;
+			double m1 = cov_t -> centroid [1] - dm;
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				Covariance covi = my covariances->at [im];
+				covi -> centroid [1] = m1;
+				covi -> data [1] [1] = dm * dm;
 				m1 += dm;
 				covi -> numberOfObservations = thy numberOfRows / my numberOfComponents;
 			}
 		} else {
-			autoPCA pca = SSCP_to_PCA (cov_t.peek());
-			autoSSCP s2d = SSCP_toTwoDimensions (cov_t.peek(), pca -> eigenvectors[1], pca -> eigenvectors[2]);
+			autoPCA pca = SSCP_to_PCA (cov_t.get());
+			autoSSCP s2d = SSCP_toTwoDimensions (cov_t.get(), pca -> eigenvectors [1], pca -> eigenvectors [2]);
 			autoConfiguration means2d = Configuration_create (my numberOfComponents, 2);
 
 			double a, b, cs, sn;
-			NUMeigencmp22 (s2d -> data[1][1], s2d -> data[1][2], s2d -> data[2][2], &a, &b, &cs, &sn);
+			NUMeigencmp22 (s2d -> data [1] [1], s2d -> data [1] [2], s2d -> data[2][2], &a, &b, &cs, &sn);
 
-			a = nSigmas * sqrt (a); b = nSigmas * sqrt (b);
-			double angle = 0, angle_inc = NUM2pi / my numberOfComponents;
+			a = nSigmas * sqrt (a);
+			b = nSigmas * sqrt (b);
+			double angle = 0.0, angle_inc = NUM2pi / my numberOfComponents;
 			for (long im = 1; im <= my numberOfComponents; im++, angle += angle_inc) {
-				double xc = a * (1 + NUMrandomUniform (-ru_range, ru_range)) * cos (angle);
-				double yc = b * (1 + NUMrandomUniform (-ru_range, ru_range)) * sin (angle);
-				means2d -> data[im][1] = s2d -> centroid[1] + xc * cs - yc * sn;
-				means2d -> data[im][2] = s2d -> centroid[2] + xc * sn + yc * cs;
+				double xc = a * (1.0 + NUMrandomUniform (-ru_range, ru_range)) * cos (angle);
+				double yc = b * (1.0 + NUMrandomUniform (-ru_range, ru_range)) * sin (angle);
+				means2d -> data [im] [1] = s2d -> centroid [1] + xc * cs - yc * sn;
+				means2d -> data [im] [2] = s2d -> centroid [2] + xc * sn + yc * cs;
 			}
 
 			// reconstruct the n-dimensional means from the 2-d from the eigenvectors
 
-			autoTableOfReal means = PCA_and_Configuration_to_TableOfReal_reconstruct (pca.peek(), means2d.peek());
+			autoTableOfReal means = PCA_and_Configuration_to_TableOfReal_reconstruct (pca.get(), means2d.get());
 
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				Covariance covi = (Covariance) my covariances -> item[im];
-				for (long ic = 1; ic <= my dimension; ic++) {
-					covi -> centroid[ic] = means -> data[im][ic];
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				Covariance covi = my covariances->at [im];
+				for (long ic = 1; ic <= my dimension; ic ++) {
+					covi -> centroid [ic] = means -> data [im] [ic];
 				}
 				covi -> numberOfObservations = thy numberOfRows / my numberOfComponents;
 			}
@@ -672,40 +666,40 @@ void GaussianMixture_initialGuess (GaussianMixture me, TableOfReal thee, double
 			// if there is only one component the cov_b will be zero!
 
 			autoCovariance cov_b = GaussianMixture_to_Covariance_between (me);
-			double var_t = SSCP_getTotalVariance (cov_t.peek());
-			double var_b = SSCP_getTotalVariance (cov_b.peek());
+			double var_t = SSCP_getTotalVariance (cov_t.get());
+			double var_b = SSCP_getTotalVariance (cov_b.get());
 			if (var_b >= var_t) { // we have chosen our initial values too far out
 				double scale = 0.9 * sqrt (var_t / var_b);
-				for (long im = 1; im <= my numberOfComponents; im++) {
-					Covariance covi = (Covariance) my covariances -> item[im];
-					for (long ic = 1; ic <= my dimension; ic++) {
-						covi -> centroid[ic] -= (1 - scale) * (covi -> centroid[ic] - cov_b -> centroid[ic]);
+				for (long im = 1; im <= my numberOfComponents; im ++) {
+					Covariance covi = my covariances->at [im];
+					for (long ic = 1; ic <= my dimension; ic ++) {
+						covi -> centroid [ic] -= (1.0 - scale) * (covi -> centroid [ic] - cov_b -> centroid[ic]);
 					}
 				}
-				cov_b.reset (GaussianMixture_to_Covariance_between (me));
+				cov_b = GaussianMixture_to_Covariance_between (me);
 			}
 
 			// Within variances are now (total - between) / numberOfComponents;
 
-			for (long ir = 1; ir <= my dimension; ir++) {
-				for (long ic = ir; ic <= my dimension; ic++) {
-					double scalef = my numberOfComponents == 1 ? 1 : (var_b / var_t) / my numberOfComponents;
-					cov_t -> data[ic][ir] = cov_t -> data[ir][ic] *= scalef;
+			for (long ir = 1; ir <= my dimension; ir ++) {
+				for (long ic = ir; ic <= my dimension; ic ++) {
+					double scalef = my numberOfComponents == 1 ? 1.0 : (var_b / var_t) / my numberOfComponents;
+					cov_t -> data [ic] [ir] = cov_t -> data [ir] [ic] *= scalef;
 				}
 			}
 
 			// Copy them
 
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				Covariance cov = (Covariance) my covariances -> item[im];
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				Covariance cov = my covariances->at [im];
 				if (cov -> numberOfRows == 1) {
-					for (long ic = 1; ic <= my dimension; ic++) {
-						cov -> data[1][ic] = cov_t -> data[ic][ic];
+					for (long ic = 1; ic <= my dimension; ic ++) {
+						cov -> data [1] [ic] = cov_t -> data [ic] [ic];
 					}
 				} else {
-					for (long ir = 1; ir <= my dimension; ir++) {
-						for (long ic = ir; ic <= my dimension; ic++) {
-							cov -> data[ir][ic] = cov -> data[ic][ir] = cov_t -> data[ir][ic];
+					for (long ir = 1; ir <= my dimension; ir ++) {
+						for (long ic = ir; ic <= my dimension; ic ++) {
+							cov -> data [ir] [ic] = cov -> data [ic] [ir] = cov_t -> data [ir] [ic];
 						}
 					}
 				}
@@ -717,84 +711,88 @@ void GaussianMixture_initialGuess (GaussianMixture me, TableOfReal thee, double
 }
 
 
-ClassificationTable GaussianMixture_and_TableOfReal_to_ClassificationTable (GaussianMixture me, TableOfReal thee) {
+autoClassificationTable GaussianMixture_and_TableOfReal_to_ClassificationTable (GaussianMixture me, TableOfReal thee) {
 	try {
 		autoClassificationTable him = ClassificationTable_create (thy numberOfRows, my numberOfComponents);
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance) my covariances -> item[im];
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
 			SSCP_expandLowerCholesky (cov);
-			TableOfReal_setColumnLabel (him.peek(), im, Thing_getName (cov));
+			TableOfReal_setColumnLabel (him.get(), im, Thing_getName (cov));
 		}
 
-		double ln2pid = - 0.5 * my dimension * log (NUM2pi);
+		double ln2pid = -0.5 * my dimension * log (NUM2pi);
 		autoNUMvector<double> lnN (1, my numberOfComponents);
-		for (long i = 1; i <=  thy numberOfRows; i++) {
-			double psum = 0;
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				Covariance cov = (Covariance) my covariances -> item[im];
-				double dsq = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data[i], cov -> centroid, cov -> numberOfRows, my dimension);
+		for (long i = 1; i <=  thy numberOfRows; i ++) {
+			double psum = 0.0;
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				Covariance cov = my covariances->at [im];
+				double dsq = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data [i], cov -> centroid, cov -> numberOfRows, my dimension);
 				lnN[im] = ln2pid - 0.5 * (cov -> lnd + dsq);
-				psum += his data[i][im] = my mixingProbabilities[im] * exp (lnN[im]);
+				psum += his data[i][im] = my mixingProbabilities[im] * exp (lnN [im]);
 			}
 			if (psum == 0) { // p's might be too small (underflow), make the largest equal to sfmin
-				double lnmax = -INFINITY; long imm = 1;
-				for (long im = 1; im <= my numberOfComponents; im++) {
-					if (lnN[im] > lnmax) {
-						lnmax = lnN[im];
+				double lnmax = -1e308;
+				long imm = 1;
+				for (long im = 1; im <= my numberOfComponents; im ++) {
+					if (lnN [im] > lnmax) {
+						lnmax = lnN [im];
 					} imm = im;
 				}
-				his data[i][imm] = NUMfpp -> sfmin;
+				his data [i] [imm] = NUMfpp -> sfmin;
 			}
 
 			// for (long im = 1; im <= my numberOfComponents; im++) { his data[i][im] /= psum; }
 
-			TableOfReal_setRowLabel (him.peek(), i, thy rowLabels[i]);
+			TableOfReal_setRowLabel (him.get(), i, thy rowLabels [i]);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"No ClassificationTable created from GaussianMixture & TableOfReal.");
 	}
 }
 
-void GaussianMixture_and_TableOfReal_getGammas (GaussianMixture me, TableOfReal thee, double **gamma, double *lnp) {
+void GaussianMixture_and_TableOfReal_getGammas (GaussianMixture me, TableOfReal thee, double **gamma, double *p_lnp) {
 	try {
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance) my covariances -> item[im];
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
 			SSCP_expandLowerCholesky (cov);
 		}
 
 		double *nk = gamma[thy numberOfRows + 1];
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			nk[im] = 0;
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			nk[im] = 0.0;
 		}
 
-		*lnp = 0;
+		double lnp = 0.0;
 		double ln2pid = - 0.5 * my dimension * log (NUM2pi);
 		autoNUMvector<double> lnN (1, my numberOfComponents);
-		for (long i = 1; i <=  thy numberOfRows; i++) {
-			double rowsum = 0;
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				Covariance cov = (Covariance) my covariances -> item[im];
-				double dsq = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data[i], cov -> centroid, cov -> numberOfRows, my dimension);
-				lnN[im] = ln2pid - 0.5 * (cov -> lnd + dsq);
-				gamma[i][im] = my mixingProbabilities[im] * exp (lnN[im]); // eq. Bishop 9.16
-				rowsum += gamma[i][im];
+		for (long i = 1; i <=  thy numberOfRows; i ++) {
+			double rowsum = 0.0;
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				Covariance cov = my covariances->at [im];
+				double dsq = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data [i], cov -> centroid, cov -> numberOfRows, my dimension);
+				lnN [im] = ln2pid - 0.5 * (cov -> lnd + dsq);
+				gamma [i] [im] = my mixingProbabilities[im] * exp (lnN [im]); // eq. Bishop 9.16
+				rowsum += gamma [i] [im];
 			}
 
 			// If the gamma[i]'s are too small, their sum will be zero and the scaling will overflow
 
-			if (rowsum == 0) {
+			if (rowsum == 0.0) {
 				continue;    // This is ok because gamma[i]'s will all be zero
 			}
 
 			// scale gamma and get log(likehood) (Bishop eq. 9.40)
 
-			for (long im = 1; im <= my numberOfComponents; im++) {
-				gamma[i][im] /= rowsum; // eq. Bishop 9.16
-				nk[im] += gamma[i][im]; // eq. Bishop 9.18
-				*lnp += gamma[i][im] * (log (my mixingProbabilities[im])  + lnN[im]); // eq. Bishop 9.40
+			for (long im = 1; im <= my numberOfComponents; im ++) {
+				gamma [i] [im] /= rowsum; // eq. Bishop 9.16
+				nk [im] += gamma [i] [im]; // eq. Bishop 9.18
+				lnp += gamma [i] [im] * (log (my mixingProbabilities [im])  + lnN [im]); // eq. Bishop 9.40
 			}
 		}
+		if (p_lnp) {
+			*p_lnp = lnp;
+		}
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": no gammas.");
 	}
@@ -805,53 +803,57 @@ void GaussianMixture_splitComponent (GaussianMixture me, long component) {
 		if (component < 1 || component > my numberOfComponents) {
 			Melder_throw (U"Illegal component.");
 		}
-		Covariance thee = (Covariance) my covariances -> item[component];
+		Covariance thee = my covariances->at [component];
 		// Always new PCA because we cannot be sure of data unchanged.
 		SSCP_expandPCA (thee);
-		autoCovariance cov1 = Data_copy ( (Covariance) thee);
-		autoCovariance cov2 = Data_copy ( (Covariance) thee);
-		SSCP_unExpandPCA (cov1.peek()); SSCP_unExpandPCA (cov2.peek());
+		autoCovariance cov1 = Data_copy (thee);
+		autoCovariance cov2 = Data_copy (thee);
+		SSCP_unExpandPCA (cov1.get());
+		SSCP_unExpandPCA (cov2.get());
 
 		// Eventually cov1 replaces component, cov2 at end
 
 		autoNUMvector<double> mixingProbabilities (1, my numberOfComponents + 1);
-		for (long i = 1; i <= my numberOfComponents; i++) {
-			mixingProbabilities[i] = my mixingProbabilities[i];
+		for (long i = 1; i <= my numberOfComponents; i ++) {
+			mixingProbabilities [i] = my mixingProbabilities [i];
 		}
 		double gamma = 0.5, lambda = 0.5, eta = 0.5, mu = 0.5;
-		mixingProbabilities[component] = gamma * my mixingProbabilities[component];
-		mixingProbabilities[my numberOfComponents + 1] = (1 - gamma) * my mixingProbabilities[component];
-		double mp12 =  mixingProbabilities[component] / mixingProbabilities[my numberOfComponents + 1];
-		double factor1 = (eta - eta * lambda * lambda - 1) / gamma + 1;
-		double factor2 = (eta * lambda * lambda - eta - lambda * lambda) / (1 - gamma) + 1;
-		double *ev = thy pca -> eigenvectors[1];
-		double d2 = thy pca -> eigenvalues[1];
-
-		for (long i = 1; i <= my dimension; i++) {
-			cov1 -> centroid[i] -= (1 / sqrt (mp12)) * sqrt (d2) * mu * ev[i];
-			cov2 -> centroid[i] +=       sqrt (mp12) * sqrt (d2) * mu * ev[i];
+		mixingProbabilities [component] = gamma * my mixingProbabilities [component];
+		mixingProbabilities [my numberOfComponents + 1] = (1.0 - gamma) * my mixingProbabilities [component];
+		double mp12 =  mixingProbabilities [component] / mixingProbabilities[my numberOfComponents + 1];
+		double factor1 = (eta - eta * lambda * lambda - 1.0) / gamma + 1.0;
+		double factor2 = (eta * lambda * lambda - eta - lambda * lambda) / (1.0 - gamma) + 1.0;
+		double *ev = thy pca -> eigenvectors [1];
+		double d2 = thy pca -> eigenvalues [1];
+
+		for (long i = 1; i <= my dimension; i ++) {
+			cov1 -> centroid [i] -= (1.0 / sqrt (mp12)) * sqrt (d2) * mu * ev [i];
+			cov2 -> centroid [i] +=        sqrt (mp12)  * sqrt (d2) * mu * ev [i];
 
 			if (thy numberOfRows == 1) { // diagonal
-				cov1 -> data[1][i] = cov1 -> data [1][i] / mp12 + factor1 * d2;
-				cov1 -> data[1][i] = cov2 -> data [i][i] * mp12 + factor2 * d2;
+				cov1 -> data [1] [i] = cov1 -> data [1] [i] / mp12 + factor1 * d2;
+				cov1 -> data [1] [i] = cov2 -> data [i] [i] * mp12 + factor2 * d2;
 			} else {
 				for (long j = i; j <= my dimension; j++) {
-					cov1 -> data[j][i] = cov1 -> data[i][j] = cov1 -> data [i][j] / mp12 + factor1 * d2 * ev[i] * ev[j];
-					cov2 -> data[j][i] = cov2 -> data[i][j] = cov2 -> data [i][j] * mp12 + factor2 * d2 * ev[i] * ev[j];
+					cov1 -> data [j] [i] = cov1 -> data [i] [j] = cov1 -> data [i] [j] / mp12 + factor1 * d2 * ev [i] * ev [j];
+					cov2 -> data [j] [i] = cov2 -> data [i] [j] = cov2 -> data [i] [j] * mp12 + factor2 * d2 * ev [i] * ev [j];
 				}
 			}
 		}
-		cov1 -> numberOfObservations *= gamma; cov2 -> numberOfObservations *= 1 - gamma;
+		cov1 -> numberOfObservations *= gamma;
+		cov2 -> numberOfObservations *= 1.0 - gamma;
 
 		// Replace cov1 at component + add cov2. If something goes wrong we must be able to restore original!
 		try {
-			Thing_setName (cov2.peek(), Melder_cat (Thing_getName (cov2.peek()), U"-", my numberOfComponents + 1));
-			Collection_addItem (my covariances, cov2.transfer());
+			Thing_setName (cov2.get(), Melder_cat (Thing_getName (cov2.get()), U"-", my numberOfComponents + 1));
+			my covariances -> addItem_move (cov2.move());
 		} catch (MelderError) {
 			Melder_throw (me, U" cannot add new component.");
 		}
-		my covariances -> item[component] = cov1.transfer();
-		my numberOfComponents++;
+
+		my covariances -> replaceItem_move (cov1.move(), component);
+
+		my numberOfComponents ++;
 		NUMvector_free<double> (my mixingProbabilities, 1);
 		my mixingProbabilities = mixingProbabilities.transfer();
 	} catch (MelderError) {
@@ -870,12 +872,12 @@ int GaussianMixture_and_TableOfReal_getProbabilities (GaussianMixture me, TableO
 			icb = ice = component;
 		}
 
-		for (long ic = icb; ic <= ice; ic++) {
-			Covariance him = (Covariance) my covariances -> item[ic];
+		for (long ic = icb; ic <= ice; ic ++) {
+			Covariance him = my covariances->at [ic];
 			SSCP_expandLowerCholesky (him);
 
 			for (long i = 1; i <= thy numberOfRows; i++) {
-				double dsq = NUMmahalanobisDistance_chi (his lowerCholesky, thy data[i], his centroid, his numberOfRows, my dimension);
+				double dsq = NUMmahalanobisDistance_chi (his lowerCholesky, thy data [i], his centroid, his numberOfRows, my dimension);
 				double prob = exp (- 0.5 * (ln2pid + his lnd + dsq));
 				prob = prob < 1e-300 ? 1e-300 : prob; // prevent p from being zero
 				p[i][ic] = prob;
@@ -890,8 +892,8 @@ int GaussianMixture_and_TableOfReal_getProbabilities (GaussianMixture me, TableO
 }
 
 void GaussianMixture_expandPCA (GaussianMixture me) {
-	for (long im = 1; im <= my numberOfComponents; im++) {
-		Covariance him = (Covariance) my covariances -> item[im];
+	for (long im = 1; im <= my numberOfComponents; im ++) {
+		Covariance him = my covariances->at [im];
 		if (his numberOfRows == 1) {
 			Melder_throw (U"Nothing to expand.");
 		}
@@ -900,14 +902,12 @@ void GaussianMixture_expandPCA (GaussianMixture me) {
 }
 
 void GaussianMixture_unExpandPCA (GaussianMixture me) {
-	for (long im = 1; im <= my numberOfComponents; im++) {
-		SSCP_unExpandPCA ((SSCP) my covariances -> item[im]);
+	for (long im = 1; im <= my numberOfComponents; im ++) {
+		SSCP_unExpandPCA (my covariances->at [im]);
 	}
 }
 
-void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, thou, double delta_lnp,
-        long maxNumberOfIterations, double lambda, int criterion) {
-	thouart (TableOfReal);
+void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, TableOfReal thee, double delta_lnp, long maxNumberOfIterations, double lambda, int criterion) {
 	try {
 		const char32 *criterionText = GaussianMixture_criterionText (criterion);
 
@@ -930,42 +930,43 @@ void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, thou
 				// E-step: get responsabilities (gamma) with current parameters
 				// See C. Bishop (2006), Pattern reconition and machine learning, Springer, page 439...
 
-				lnp_prev = lnp; iter++;
+				lnp_prev = lnp;
+				iter ++;
 				// M-step: 1. new means & covariances
 
-				for (long im = 1; im <= my numberOfComponents; im++) {
+				for (long im = 1; im <= my numberOfComponents; im ++) {
 					GaussianMixture_updateCovariance (me, im, thy data, thy numberOfRows, pp.peek());
-					GaussianMixture_addCovarianceFraction (me, im, covg.peek(), lambda);
+					GaussianMixture_addCovarianceFraction (me, im, covg.get(), lambda);
 				}
 
 				// M-step: 2. new mixingProbabilities
 
-				for (long im = 1; im <= my numberOfComponents; im++) {
+				for (long im = 1; im <= my numberOfComponents; im ++) {
 					my mixingProbabilities[im] = nk[im] / thy numberOfRows;
 				}
 				if (! GaussianMixture_and_TableOfReal_getProbabilities (me, thee, 0, pp.peek())) {
 					break;
 				}
 				lnp = GaussianMixture_getLikelihoodValue (me, pp.peek(), thy numberOfRows, criterion);
-				Melder_progress ((double) iter / double (maxNumberOfIterations), criterionText, U": ", lnp / thy numberOfRows, U", L0: ", lnp_start);
-			} while (fabs ( (lnp - lnp_prev) / lnp_prev) > delta_lnp && iter < maxNumberOfIterations);
+				Melder_progress ((double) iter / (double) maxNumberOfIterations, criterionText, U": ", lnp / thy numberOfRows, U", L0: ", lnp_start);
+			} while (fabs ((lnp - lnp_prev) / lnp_prev) > delta_lnp && iter < maxNumberOfIterations);
 		} catch (MelderError) {
 			Melder_clearError ();
 		}
 
 		// During EM, covariances were underestimated by a factor of (n-1)/n. Correction now.
 
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance) my covariances -> item[im];
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
 			if (cov -> numberOfObservations > 1.5) {
 				if (cov -> numberOfRows == 1) {
-					for (long j = 1; j <= thy numberOfColumns; j++) {
-						cov -> data[1][j] *= cov -> numberOfObservations / (cov -> numberOfObservations - 1);
+					for (long j = 1; j <= thy numberOfColumns; j ++) {
+						cov -> data [1] [j] *= cov -> numberOfObservations / (cov -> numberOfObservations - 1);
 					}
 				} else {
-					for (long j = 1; j <= thy numberOfColumns; j++)
-						for (long k = j; k <= thy numberOfColumns; k++) {
-							cov -> data[j][k] = cov -> data[k][j] *= cov -> numberOfObservations / (cov -> numberOfObservations - 1);
+					for (long j = 1; j <= thy numberOfColumns; j ++)
+						for (long k = j; k <= thy numberOfColumns; k ++) {
+							cov -> data [j] [k] = cov -> data [k] [j] *= cov -> numberOfObservations / (cov -> numberOfObservations - 1.0);
 						}
 				}
 			}
@@ -976,7 +977,8 @@ void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, thou
 }
 
 long GaussianMixture_getNumberOfParametersInComponent (GaussianMixture me) {
-	Covariance thee = (Covariance) my covariances -> item[1];
+	Melder_assert (my covariances->size > 0);
+	Covariance thee = my covariances->at [1];
 	// if diagonal) d (means) + d (stdev)
 	// else  n + n(n+1)/2
 	return thy numberOfRows == 1 ? 2 * thy numberOfColumns : thy numberOfColumns * (thy numberOfColumns + 3) / 2;
@@ -985,17 +987,17 @@ long GaussianMixture_getNumberOfParametersInComponent (GaussianMixture me) {
 void GaussianMixture_updateProbabilityMarginals (GaussianMixture me, double **p, long numberOfRows) {
 	long nocp1 = my numberOfComponents + 1, norp1 = numberOfRows + 1;
 
-	for (long ic = 1; ic <= my numberOfComponents; ic++) {
-		p[norp1][ic] = 0;
+	for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+		p [norp1] [ic] = 0.0;
 	}
-	for (long i = 1; i <= numberOfRows; i++) {
-		double rowsum = 0;
-		for (long ic = 1; ic <= my numberOfComponents; ic++) {
-			rowsum += my mixingProbabilities[ic] * p[i][ic];
+	for (long i = 1; i <= numberOfRows; i ++) {
+		double rowsum = 0.0;
+		for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+			rowsum += my mixingProbabilities [ic] * p [i] [ic];
 		}
-		p[i][nocp1] = rowsum;
-		for (long ic = 1; ic <= my numberOfComponents; ic++) {
-			p[norp1][ic] += my mixingProbabilities[ic] * p[i][ic] / p[i][nocp1];
+		p [i] [nocp1] = rowsum;
+		for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+			p [norp1] [ic] += my mixingProbabilities[ic] * p [i] [ic] / p [i] [nocp1];
 		}
 	}
 }
@@ -1003,9 +1005,9 @@ void GaussianMixture_updateProbabilityMarginals (GaussianMixture me, double **p,
 void GaussianMixture_removeComponent_bookkeeping (GaussianMixture me, long component, double **p, long numberOfRows) {
 	// p is (NumberOfRows+1) by (numberOfComponents+1) !
 
-	for (long i = 1; i <= numberOfRows + 1; i++) {
-		for (long ic = component; ic <= my numberOfComponents; ic++) {
-			p[i][ic] = p[i][ic + 1];
+	for (long i = 1; i <= numberOfRows + 1; i ++) {
+		for (long ic = component; ic <= my numberOfComponents; ic ++) {
+			p [i] [ic] = p [i] [ic + 1];
 		}
 	}
 	GaussianMixture_updateProbabilityMarginals (me, p, numberOfRows);
@@ -1025,11 +1027,11 @@ double GaussianMixture_getLikelihoodValue (GaussianMixture me, double **p, long
 	// Because we try to _maximize_ a criterion, all criteria are negative numbers.
 
 	if (criterion == GaussianMixture_CD_LIKELIHOOD) {
-		double lnpcd = 0;
-		for (long i = 1; i <= numberOfRows; i++) {
+		double lnpcd = 0.0;
+		for (long i = 1; i <= numberOfRows; i ++) {
 			double psum = 0, lnsum = 0;
-			for (long ic = 1; ic <= my numberOfComponents; ic++) {
-				double pp = my mixingProbabilities[ic] * p[i][ic];
+			for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+				double pp = my mixingProbabilities[ic] * p [i] [ic];
 				psum += pp;
 				lnsum += pp * log (pp);
 			}
@@ -1042,13 +1044,13 @@ double GaussianMixture_getLikelihoodValue (GaussianMixture me, double **p, long
 
 	// The common factor for all other criteria is the log(likelihood)
 
-	double lnp = 0;
-	for (long i = 1; i <= numberOfRows; i++) {
-		double psum = 0;
-		for (long ic = 1; ic <= my numberOfComponents; ic++) {
-			psum += my mixingProbabilities[ic] * p[i][ic];
+	double lnp = 0.0;
+	for (long i = 1; i <= numberOfRows; i ++) {
+		double psum = 0.0;
+		for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+			psum += my mixingProbabilities [ic] * p [i] [ic];
 		}
-		if (psum > 0) {
+		if (psum > 0.0) {
 			lnp += log (psum);
 		}
 	}
@@ -1066,86 +1068,88 @@ double GaussianMixture_getLikelihoodValue (GaussianMixture me, double **p, long
 			L(theta,Y)= N/2*sum(m=1..k, log(n*alpha[k]/12)) +k/2*ln(n/12) +k(N+1)/2
 				- log (sum(i=1..n, sum(m=1..k, alpha[k]*p(k))))
 		*/
-		double logmpn = 0;
-		for (long ic = 1; ic <= my numberOfComponents; ic++) {
-			logmpn += log (my mixingProbabilities[ic]);
+		double logmpn = 0.0;
+		for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+			logmpn += log (my mixingProbabilities [ic]);
 		}
 
 		// a rewritten L(theta,Y) is
 
-		return lnp - 0.5 * my numberOfComponents * (npars + 1) * (log (numberOfRows / 12.0) + 1)
+		return lnp - 0.5 * my numberOfComponents * (npars + 1) * (log (numberOfRows / 12.0) + 1.0)
 		       + 0.5 * npars * logmpn;
 	} else if (criterion == GaussianMixture_BIC) {
-		return 2 * lnp - np * log (numberOfRows);
+		return 2.0 * lnp - np * log (numberOfRows);
 	} else if (criterion == GaussianMixture_AIC) {
-		return 2 * (lnp - np);
+		return 2.0 * (lnp - np);
 	} else if (criterion == GaussianMixture_AICC) {
 		np = npars * my numberOfComponents;
-		return 2 * (lnp - np * (numberOfRows / (numberOfRows - np - 1)));
+		return 2.0 * (lnp - np * (numberOfRows / (numberOfRows - np - 1.0)));
 	}
 	return lnp;
 }
 
-GaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (GaussianMixture gm, TableOfReal thee, long minNumberOfComponents, double delta_l, long maxNumberOfIterations, double lambda, int criterion) {
+autoGaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (GaussianMixture gm, TableOfReal thee, long minNumberOfComponents, double delta_l, long maxNumberOfIterations, double lambda, int criterion) {
 	try {
 		const char32 *criterionText = GaussianMixture_criterionText (criterion);
-		int deleteWeakComponents = minNumberOfComponents > 0;
+		bool deleteWeakComponents = ( minNumberOfComponents > 0 );
 		autoGaussianMixture me = Data_copy (gm);
 		autoNUMmatrix<double> p (1, thy numberOfRows + 2, 1, my numberOfComponents + 1);
 
-		double *gsum = p[thy numberOfRows + 1]; // convenience array with sums
+		double *gsum = p [thy numberOfRows + 1]; // convenience array with sums
 
 		autoCovariance covg = TableOfReal_to_Covariance (thee);
 
-		double npars = GaussianMixture_getNumberOfParametersInComponent (me.peek());
-		double nparsd2 = deleteWeakComponents ? npars / 2 : 0;
+		double npars = GaussianMixture_getNumberOfParametersInComponent (me.get());
+		double nparsd2 = ( deleteWeakComponents ? npars / 2.0 : 0.0 );
 
 		// Initial E-step: Update all p's.
 
-		GaussianMixture_and_TableOfReal_getProbabilities (me.peek(), thee, 0, p.peek());
+		GaussianMixture_and_TableOfReal_getProbabilities (me.get(), thee, 0, p.peek());
 
-		double lnew = GaussianMixture_getLikelihoodValue (me.peek(), p.peek(), thy numberOfRows, criterion);
+		double lnew = GaussianMixture_getLikelihoodValue (me.get(), p.peek(), thy numberOfRows, criterion);
 
 		autoMelderProgress progress (U"Gaussian mixture...");
-		autoGaussianMixture best = 0;
+		autoGaussianMixture best;
 		try {
 			double lstart = lnew / thy numberOfRows;
 			long iter = 0, component;
-			double lmax = -INFINITY, lprev;
+			double lmax = -1e308, lprev;
 			while (my numberOfComponents >= minNumberOfComponents) {
 				do {
-					iter++; component = 1; lprev = lnew;
+					iter ++;
+					component = 1;
+					lprev = lnew;
 					while (component <= my numberOfComponents) {
 						// M-step for means and covariances
-						GaussianMixture_updateProbabilityMarginals (me.peek(), p.peek(), thy numberOfRows);
-						GaussianMixture_updateCovariance (me.peek(), component, thy data, thy numberOfRows, p.peek());
+						GaussianMixture_updateProbabilityMarginals (me.get(), p.peek(), thy numberOfRows);
+						GaussianMixture_updateCovariance (me.get(), component, thy data, thy numberOfRows, p.peek());
 						if (lambda > 0) {
-							GaussianMixture_addCovarianceFraction (me.peek(), component, covg.peek(), lambda);
+							GaussianMixture_addCovarianceFraction (me.get(), component, covg.get(), lambda);
 						}
 
 						// Now check if enough support for a component exists
 
-						double support_im = gsum[component] - nparsd2, support = 0;
-						for (long ic = 1; ic <= my numberOfComponents; ic++) {
-							double support_ic = gsum[ic] - nparsd2;
-							if (support_ic > 0) {
+						double support_im = gsum [component] - nparsd2, support = 0.0;
+						for (long ic = 1; ic <= my numberOfComponents; ic ++) {
+							double support_ic = gsum [ic] - nparsd2;
+							if (support_ic > 0.0) {
 								support += support_ic;
 							}
 						}
-						my mixingProbabilities[component] = support_im > 0 ? support_im : 0;
-						if (support > 0) {
-							my mixingProbabilities[component] /= support;
+						my mixingProbabilities [component] = ( support_im > 0.0 ? support_im : 0.0 );
+						if (support > 0.0) {
+							my mixingProbabilities [component] /= support;
 						}
 
 						NUMdvector_scaleAsProbabilities (my mixingProbabilities, my numberOfComponents);
 
-						if (my mixingProbabilities[component] > 0) { // update p for component
-							GaussianMixture_and_TableOfReal_getProbabilities (me.peek(), thee, component, p.peek());
-							component++;
+						if (my mixingProbabilities [component] > 0.0) { // update p for component
+							GaussianMixture_and_TableOfReal_getProbabilities (me.get(), thee, component, p.peek());
+							component ++;
 						} else {
 							// "Remove" the component column from p by shifting row values
 
-							GaussianMixture_removeComponent_bookkeeping (me.peek(), component, p.peek(), thy numberOfRows);
+							GaussianMixture_removeComponent_bookkeeping (me.get(), component, p.peek(), thy numberOfRows);
 
 							// Now numberOfComponents is one less!
 							// MelderInfo_writeLine (U"Removed component ", component);
@@ -1155,14 +1159,13 @@ GaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (Gaussia
 					// L(theta,Y)=N/2 sum(m=1..k, log(n*mixingP[m]/12))+k/2log(n/12)+k/2(N+1)-loglikelihood reduces to:
 					// k/2 (N+1){log(n/12)+1}+N/2sum(m=1..k,mixingP[m]) - loglikelihood
 
-					lnew = GaussianMixture_getLikelihoodValue (me.peek(), p.peek(), thy numberOfRows, criterion);
+					lnew = GaussianMixture_getLikelihoodValue (me.get(), p.peek(), thy numberOfRows, criterion);
 
 					Melder_progress ((double) iter / (double) maxNumberOfIterations, U", ", criterionText, U": ",
-						lnew / thy numberOfRows, U"\nComponents: ", my numberOfComponents,
-						U"\nL0: ", lstart);
-				} while (lnew > lprev && fabs ( (lprev - lnew) / lnew) > delta_l && iter < maxNumberOfIterations);
+						lnew / thy numberOfRows, U"\nComponents: ", my numberOfComponents, U"\nL0: ", lstart);
+				} while (lnew > lprev && fabs ((lprev - lnew) / lnew) > delta_l && iter < maxNumberOfIterations);
 				if (lnew > lmax) {
-					best.reset (Data_copy (me.peek()));
+					best = Data_copy (me.get());
 					lmax = lnew;
 					if (! deleteWeakComponents) {
 						break;    // TODO was got end; is dat hetzelfde?
@@ -1170,15 +1173,15 @@ GaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (Gaussia
 				}
 				if (my numberOfComponents > 1) { // remove smallest component
 					component = 1;
-					double mpmin = my mixingProbabilities[component];
-					for (long ic = 2; ic <= my numberOfComponents; ic++) {
-						if (my mixingProbabilities[ic] < mpmin) {
-							mpmin = my mixingProbabilities[ic];
+					double mpmin = my mixingProbabilities [component];
+					for (long ic = 2; ic <= my numberOfComponents; ic ++) {
+						if (my mixingProbabilities [ic] < mpmin) {
+							mpmin = my mixingProbabilities [ic];
 							component = ic;
 						}
 					}
 
-					GaussianMixture_removeComponent_bookkeeping (me.peek(), component, p.peek(), thy numberOfRows);
+					GaussianMixture_removeComponent_bookkeeping (me.get(), component, p.peek(), thy numberOfRows);
 				} else {
 					break;
 				}
@@ -1186,7 +1189,7 @@ GaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (Gaussia
 		} catch (MelderError) {
 			Melder_clearError ();
 		}
-		return best.transfer();
+		return best;
 	} catch (MelderError) {
 		Melder_throw (U"GaussianMixture not improved.");
 	}
@@ -1198,45 +1201,44 @@ void GaussianMixture_removeComponent (GaussianMixture me, long component) {
 		return;
 	}
 
-	Collection_removeItem (my covariances, component);
+	my covariances -> removeItem (component);
 	my numberOfComponents --;
 
-	for (long ic = component; ic <= my numberOfComponents; ic++) {
-		my mixingProbabilities[ic] = my mixingProbabilities[ic + 1];
+	for (long ic = component; ic <= my numberOfComponents; ic ++) {
+		my mixingProbabilities [ic] = my mixingProbabilities [ic + 1];
 	}
 
 	NUMdvector_scaleAsProbabilities (my mixingProbabilities, my numberOfComponents);
 }
 
-GaussianMixture TableOfReal_to_GaussianMixture (TableOfReal me, long numberOfComponents, double delta_lnp, long maxNumberOfIterations, double lambda, int storage, int criterion) {
+autoGaussianMixture TableOfReal_to_GaussianMixture (TableOfReal me, long numberOfComponents, double delta_lnp, long maxNumberOfIterations, double lambda, int storage, int criterion) {
 	try {
 		if (my numberOfRows < 2 * numberOfComponents) {
 			Melder_throw (U"The number of data points must at least be twice the number of components.");
 		}
 
 		autoGaussianMixture thee = GaussianMixture_create (numberOfComponents, my numberOfColumns, storage);
-		GaussianMixture_setLabelsFromTableOfReal (thee.peek(), me);
-		GaussianMixture_initialGuess (thee.peek(), me, 1, 0.05);
+		GaussianMixture_setLabelsFromTableOfReal (thee.get(), me);
+		GaussianMixture_initialGuess (thee.get(), me, 1.0, 0.05);
 		if (maxNumberOfIterations <= 0) {
-			return thee.transfer();
+			return thee;
 		}
 
-		GaussianMixture_and_TableOfReal_improveLikelihood (thee.peek(), me, delta_lnp, maxNumberOfIterations, lambda, criterion);
-		return thee.transfer();
+		GaussianMixture_and_TableOfReal_improveLikelihood (thee.get(), me, delta_lnp, maxNumberOfIterations, lambda, criterion);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no GaussianMixture created.");
 	}
 }
 
-Correlation GaussianMixture_and_TableOfReal_to_Correlation (GaussianMixture me, thou) {
+autoCorrelation GaussianMixture_and_TableOfReal_to_Correlation (GaussianMixture me, TableOfReal thee) {
 	try {
-		thouart (TableOfReal);
 		if (my dimension != thy numberOfColumns) {
 			Melder_throw (U"Dimensions must be equal.");
 		}
 		autoClassificationTable ct = GaussianMixture_and_TableOfReal_to_ClassificationTable (me, thee);
-		autoCorrelation him = ClassificationTable_to_Correlation_columns (ct.peek());
-		return him.transfer();
+		autoCorrelation him = ClassificationTable_to_Correlation_columns (ct.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Correlation not created from GaussianMixture & TableOfReal.");
 	}
@@ -1246,8 +1248,8 @@ double GaussianMixture_getProbabilityAtPosition_string (GaussianMixture me, cons
 	autoNUMvector<double> v (1, my dimension);
 
 	long i = 0;
-	for (char32 *token = Melder_firstToken (vector); token != NULL; token = Melder_nextToken ()) {
-		v[++i] = Melder_atof (token);
+	for (char32 *token = Melder_firstToken (vector); token != nullptr; token = Melder_nextToken ()) {
+		v [++ i] = Melder_atof (token);
 		if (i == my dimension) {
 			break;
 		}
@@ -1259,22 +1261,22 @@ double GaussianMixture_getProbabilityAtPosition_string (GaussianMixture me, cons
 double GaussianMixture_getMarginalProbabilityAtPosition (GaussianMixture me, double *vector, double x) {
 	double p = 0;
 	for (long im = 1; im <= my numberOfComponents; im++) {
-		double pim = Covariance_getMarginalProbabilityAtPosition ( (Covariance) my covariances -> item[im], vector, x);
-		p += my mixingProbabilities[im] * pim;
+		double pim = Covariance_getMarginalProbabilityAtPosition (my covariances->at [im], vector, x);
+		p += my mixingProbabilities [im] * pim;
 	}
 	return p;
 }
 
 double GaussianMixture_getProbabilityAtPosition (GaussianMixture me, double *xpos) {
-	double p = 0;
-	for (long im = 1; im <= my numberOfComponents; im++) {
-		double pim = Covariance_getProbabilityAtPosition ( (Covariance) my covariances -> item[im], xpos);
-		p += my mixingProbabilities[im] * pim;
+	double p = 0.0;
+	for (long im = 1; im <= my numberOfComponents; im ++) {
+		double pim = Covariance_getProbabilityAtPosition (my covariances->at [im], xpos);
+		p += my mixingProbabilities [im] * pim;
 	}
 	return p;
 }
 
-Matrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA thee, long d1, long d2, double xmin, double xmax, long nx, double ymin, double ymax, long ny) {
+autoMatrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA thee, long d1, long d2, double xmin, double xmax, long nx, double ymin, double ymax, long ny) {
 	try {
 		if (my dimension != thy dimension) {
 			Melder_throw (U"Dimensions must be equal.");
@@ -1285,7 +1287,7 @@ Matrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA thee,
 		autoNUMvector<double> v (1, my dimension);
 
 		if (xmax == xmin || ymax == ymin) {
-			double xmind, xmaxd, ymind, ymaxd, nsigmas = 2;
+			double xmind, xmaxd, ymind, ymaxd, nsigmas = 2.0;
 
 			GaussianMixture_and_PCA_getIntervalsAlongDirections (me, thee, d1, d2, nsigmas, &xmind, &xmaxd, &ymind, &ymaxd);
 			if (xmax == xmin) {
@@ -1304,41 +1306,41 @@ Matrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA thee,
 		double x1 = xmin + 0.5 * dx, y1 = ymin + 0.5 * dy;
 		autoMatrix him = Matrix_create (xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
 
-		for (long i = 1; i <= ny; i++) {
+		for (long i = 1; i <= ny; i ++) {
 			double y = y1 + (i - 1) * dy;
-			for (long j = 1; j <= nx; j++) {
+			for (long j = 1; j <= nx; j ++) {
 				double x = x1 + (j - 1) * dx;
-				for (long k = 1; k <= my dimension; k++) {
-					v[k] = x * thy eigenvectors[d1][k] + y * thy eigenvectors[d2][k];
+				for (long k = 1; k <= my dimension; k ++) {
+					v [k] = x * thy eigenvectors [d1] [k] + y * thy eigenvectors [d2] [k];
 				}
-				his z[i][j] = GaussianMixture_getProbabilityAtPosition (me, v.peek());
+				his z [i] [j] = GaussianMixture_getProbabilityAtPosition (me, v.peek());
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": no Matrix density created.");
 	}
 }
 
-TableOfReal GaussianMixture_to_TableOfReal_randomSampling (GaussianMixture me, long numberOfPoints) {
+autoTableOfReal GaussianMixture_to_TableOfReal_randomSampling (GaussianMixture me, long numberOfPoints) {
 	try {
-		Covariance cov = (Covariance) my covariances -> item[1];
+		Covariance cov = my covariances->at [1];
 		autoTableOfReal thee = TableOfReal_create (numberOfPoints, my dimension);
 		autoNUMvector<double> buf (1, my dimension);
 		NUMstrings_copyElements (cov -> columnLabels, thy columnLabels, 1, my dimension);
-		for (long i = 1; i <= numberOfPoints; i++) {
+		for (long i = 1; i <= numberOfPoints; i ++) {
 			char32 *covname;
 			GaussianMixture_generateOneVector (me, thy data[i], &covname, buf.peek());
-			TableOfReal_setRowLabel (thee.peek(), i, covname);
+			TableOfReal_setRowLabel (thee.get(), i, covname);
 		}
 		GaussianMixture_unExpandPCA (me);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		GaussianMixture_unExpandPCA (me); Melder_throw (U"TableOfReal with random ssampling not created.");
 	}
 }
 
-TableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (GaussianMixture me, TableOfReal thee, double h) {
+autoTableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (GaussianMixture me, TableOfReal thee, double h) {
 	try {
 		long n = thy numberOfRows, d = thy numberOfColumns, nocp1 = my numberOfComponents + 1;
 
@@ -1359,30 +1361,30 @@ TableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (G
 
 		long iprob = 1, ih = 2, itnb = 3, ilnmu = 4, ilnvar = 5, indata = 6, id = 7;
 		const char32 *label[8] = { U"", U"p", U"h", U"tnb", U"lnmu", U"lnvar", U"ndata", U"d" };
-		for (long icol = 1; icol <= 7; icol++) {
-			TableOfReal_setColumnLabel (him.peek(), icol, label[icol]);
+		for (long icol = 1; icol <= 7; icol ++) {
+			TableOfReal_setColumnLabel (him.get(), icol, label [icol]);
 		}
-		for (long irow = 1; irow <= my numberOfComponents; irow++) {
-			Covariance cov = (Covariance) my covariances -> item[irow];
-			TableOfReal_setRowLabel (him.peek(), irow, Thing_getName (cov));
+		for (long irow = 1; irow <= my numberOfComponents; irow ++) {
+			Covariance cov = my covariances->at [irow];
+			TableOfReal_setRowLabel (him.get(), irow, Thing_getName (cov));
 		}
 
-		for (long icol = 1 ; icol <= my numberOfComponents; icol++) {
-			his data[icol][indata] = p[n + 1][icol];
+		for (long icol = 1 ; icol <= my numberOfComponents; icol ++) {
+			his data[icol][indata] = p [n + 1] [icol];
 		}
 
-		for (long im = 1; im <= my numberOfComponents; im++) {
-			Covariance cov = (Covariance) my covariances -> item[im];
-			double mixingP = my mixingProbabilities[im];
-			double nd = his data[im][indata], d2 = d / 2.0;
-			double beta = h > 0 ? NUMsqrt1_2 / h : NUMsqrt1_2 * pow ( (1.0 + 2 * d) / 4, 1.0 / (d + 4)) * pow (nd, 1.0 / (d + 4));
+		for (long im = 1; im <= my numberOfComponents; im ++) {
+			Covariance cov = my covariances->at [im];
+			double mixingP = my mixingProbabilities [im];
+			double nd = his data [im] [indata], d2 = d / 2.0;
+			double beta = h > 0.0 ? NUMsqrt1_2 / h : NUMsqrt1_2 * pow ( (1.0 + 2.0 * d) / 4.0, 1.0 / (d + 4.0)) * pow (nd, 1.0 / (d + 4.0));
 			double beta2 = beta * beta, beta4 = beta2 * beta2, beta8 = beta4 * beta4;
-			double gamma = 1 + 2 * beta2, gamma2 = gamma * gamma, gamma4 = gamma2 * gamma2;
-			double delta = 1.0 + beta2 * (4 + 3 * beta2), delta2 = delta * delta;
-			double mu = 1.0 - pow (gamma, -d2) * (1.0 + d * beta2 / gamma + d * (d + 2) * beta4 / (2 * gamma2));
-			double var = 2.0 * pow (1 + 4 * beta2, -d2)
-			             + 2.0 * pow (gamma,  -d) * (1.0 + 2 * d * beta4 / gamma2  + 3 * d * (d + 2) * beta8 / (4 * gamma4))
-			             - 4.0 * pow (delta, -d2) * (1.0 + 3 * d * beta4 / (2 * delta) + d * (d + 2) * beta8 / (2 * delta2));
+			double gamma = 1.0 + 2.0 * beta2, gamma2 = gamma * gamma, gamma4 = gamma2 * gamma2;
+			double delta = 1.0 + beta2 * (4.0 + 3.0 * beta2), delta2 = delta * delta;
+			double mu = 1.0 - pow (gamma, -d2) * (1.0 + d * beta2 / gamma + d * (d + 2.0) * beta4 / (2.0 * gamma2));
+			double var = 2.0 * pow (1.0 + 4.0 * beta2, -d2)
+			             + 2.0 * pow (gamma,  -d) * (1.0 + 2.0 * d * beta4 / gamma2  + 3.0 * d * (d + 2.0) * beta8 / (4.0 * gamma4))
+			             - 4.0 * pow (delta, -d2) * (1.0 + 3.0 * d * beta4 / (2.0 * delta) + d * (d + 2.0) * beta8 / (2.0 * delta2));
 			double mu2 = mu * mu;
 
 			double prob = NUMundefined, tnb = NUMundefined, lnmu = NUMundefined, lnvar = NUMundefined;
@@ -1390,37 +1392,37 @@ TableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (G
 			try {
 				SSCP_expandLowerCholesky (cov);
 			} catch (MelderError) {
-				tnb = 4 * nd;
+				tnb = 4.0 * nd;
 			}
 
-			double djk, djj, sumjk = 0, sumj = 0;
-			double b1 = beta2 / 2, b2 = b1 / (1.0 + beta2);
+			double djk, djj, sumjk = 0.0, sumj = 0.0;
+			double b1 = beta2 / 2.0, b2 = b1 / (1.0 + beta2);
 
 			/* Heinze & Wagner (1997), page 3
 				We use d[j][k] = ||Y[j]-Y[k]||^2 = (Y[j]-Y[k])'S^(-1)(Y[j]-Y[k])
 				So d[j][k]= d[k][j] and d[j][j] = 0
 			*/
-			for (long j = 1; j <= n; j++) {
-				double wj = p[j][nocp1] > 0 ? mixingP * p[j][im] / p[j][nocp1] : 0;
-				for (long k = 1; k < j; k++) {
-					djk = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data[j], thy data[k], d, d);
-					double w = p[k][nocp1] > 0 ? wj * mixingP * p[k][im] / p[k][nocp1] : 0;
-					sumjk += 2 * w * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
+			for (long j = 1; j <= n; j ++) {
+				double wj = p [j] [nocp1] > 0.0 ? mixingP * p [j] [im] / p [j] [nocp1] : 0.0;
+				for (long k = 1; k < j; k ++) {
+					djk = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data [j], thy data [k], d, d);
+					double w = p [k] [nocp1] > 0.0 ? wj * mixingP * p [k] [im] / p [k] [nocp1] : 0.0;
+					sumjk += 2.0 * w * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
 				}
 				sumjk += wj * wj; // for k == j. Is this ok now for probability weighing ????
-				djj = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data[j], cov -> centroid, d, d);
+				djj = NUMmahalanobisDistance_chi (cov -> lowerCholesky, thy data [j], cov -> centroid, d, d);
 				sumj += wj * exp (-b2 * djj);
 			}
 			tnb = (1.0 / nd) * sumjk - 2.0 * pow (1.0 + beta2, - d2) * sumj + nd * pow (gamma, - d2); // n *
 
-			his data[im][ilnmu] = lnmu = 0.5 * log (mu2 * mu2 / (mu2 + var)); //log (sqrt (mu2 * mu2 /(mu2 + var)));
-			his data[im][ilnvar] = lnvar = sqrt (log ( (mu2 + var) / mu2));
-			his data[im][iprob] = prob = NUMlogNormalQ (tnb, lnmu, lnvar);
-			his data[im][ih] = NUMsqrt1_2 / beta;
-			his data[im][id] = d;
-			his data[im][itnb] = tnb;
+			his data [im] [ilnmu] = lnmu = 0.5 * log (mu2 * mu2 / (mu2 + var)); //log (sqrt (mu2 * mu2 /(mu2 + var)));
+			his data [im] [ilnvar] = lnvar = sqrt (log ( (mu2 + var) / mu2));
+			his data [im] [iprob] = prob = NUMlogNormalQ (tnb, lnmu, lnvar);
+			his data [im] [ih] = NUMsqrt1_2 / beta;
+			his data [im] [id] = d;
+			his data [im] [itnb] = tnb;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal for BHEP not created.");
 	}
diff --git a/dwtools/GaussianMixture.h b/dwtools/GaussianMixture.h
index 0f14b74..72b450e 100644
--- a/dwtools/GaussianMixture.h
+++ b/dwtools/GaussianMixture.h
@@ -2,21 +2,20 @@
 #define _GaussianMixture_h_
 /* GaussianMixture.h
  *
- * Copyright (C) 2010-2011 David Weenink
+ * Copyright (C) 2010-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,27 +29,31 @@
 #include "TableOfReal_extensions.h"
 
 #include "GaussianMixture_def.h"
-oo_CLASS_CREATE (GaussianMixture, Data);
 
 /*
 	Constraints for a Gaussian mixture:
 	 all covariances have the same 'dimension' parameter
 */
-GaussianMixture GaussianMixture_create (long numberOfComponents, long dimension, long storage);
+autoGaussianMixture GaussianMixture_create (long numberOfComponents, long dimension, long storage);
 /* Start each function with expand and end with unExpand */
+
 void GaussianMixture_expandPCA (GaussianMixture me);
+
 void GaussianMixture_unExpandPCA (GaussianMixture me);
 
 void GaussianMixture_drawConcentrationEllipses (GaussianMixture me, Graphics g,
 	double scale, int confidence, char32 *label, int pcaDirections, long d1, long d2,
 	double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish);
+
 void GaussianMixture_and_PCA_drawConcentrationEllipses (GaussianMixture me, PCA him, Graphics g,
 	double scale, int confidence, char32 *label, long d1, long d2,
 	double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish);
+
 void GaussianMixture_drawMarginalPdf (GaussianMixture me, Graphics g, long d, double xmin, double xmax, double ymin, double ymax, long npoints, long nbins, int garnish);
+
 void GaussianMixture_and_PCA_drawMarginalPdf (GaussianMixture me, PCA him, Graphics g, long d, double xmin, double xmax, double ymin, double ymax, long npoints, long nbins, int garnish);
 
-GaussianMixture TableOfReal_to_GaussianMixture_fromRowLabels (TableOfReal me, long storage);
+autoGaussianMixture TableOfReal_to_GaussianMixture_fromRowLabels (TableOfReal me, long storage);
 
 void GaussianMixture_initialGuess (GaussianMixture me, TableOfReal thee, double nSigmas, double ru_range);
 /*
@@ -72,45 +75,57 @@ void GaussianMixture_initialGuess (GaussianMixture me, TableOfReal thee, double
 
 const char32 *GaussianMixture_criterionText (int criterion);
 
-GaussianMixture TableOfReal_to_GaussianMixture (TableOfReal me, long numberOfComponents, double delta_lnp, long maxNumberOfIterations, double lambda, int storage, int criterion);
+autoGaussianMixture TableOfReal_to_GaussianMixture (TableOfReal me, long numberOfComponents, double delta_lnp, long maxNumberOfIterations, double lambda, int storage, int criterion);
 
-void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, thou, double delta_lnp,
-	long maxNumberOfIterations, double lambda, int criterion);
+void GaussianMixture_and_TableOfReal_improveLikelihood (GaussianMixture me, TableOfReal thee, double delta_lnp, long maxNumberOfIterations, double lambda, int criterion);
+
+autoGaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (GaussianMixture me, TableOfReal thee, long minNumberOfComponents, double delta_l, long maxNumberOfIterations, double lambda, int criterion);
 
-GaussianMixture GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (GaussianMixture me, TableOfReal thee, long minNumberOfComponents, double delta_l, long maxNumberOfIterations, double lambda, int criterion);
 void GaussianMixture_splitComponent (GaussianMixture me, long component);
 
-ClassificationTable GaussianMixture_and_TableOfReal_to_ClassificationTable (GaussianMixture me, TableOfReal thee);
-TableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (GaussianMixture me, TableOfReal thee, double h);
+autoClassificationTable GaussianMixture_and_TableOfReal_to_ClassificationTable (GaussianMixture me, TableOfReal thee);
+
+autoTableOfReal GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (GaussianMixture me, TableOfReal thee, double h);
 
 double GaussianMixture_and_TableOfReal_getLikelihoodValue (GaussianMixture me, TableOfReal thee, int criterion);
 
 double GaussianMixture_getProbabilityAtPosition (GaussianMixture me, double *vector);
+
 double GaussianMixture_getProbabilityAtPosition_string (GaussianMixture me, const char32 *vector);
+
 double GaussianMixture_getMarginalProbabilityAtPosition (GaussianMixture me, double *vector, double x);
 
-Correlation GaussianMixture_and_TableOfReal_to_Correlation (GaussianMixture me, thou);
+autoCorrelation GaussianMixture_and_TableOfReal_to_Correlation (GaussianMixture me, TableOfReal thee);
 /* Correlation between components based on the data in the table */
 
-Covariance GaussianMixture_to_Covariance_total (GaussianMixture me);
-Covariance GaussianMixture_to_Covariance_between (GaussianMixture me);
-Covariance GaussianMixture_to_Covariance_within (GaussianMixture me);
+autoCovariance GaussianMixture_to_Covariance_total (GaussianMixture me);
 
+autoCovariance GaussianMixture_to_Covariance_between (GaussianMixture me);
 
-Covariance GaussianMixture_extractComponent(GaussianMixture me, long component);
-TableOfReal GaussianMixture_extractCentroids (GaussianMixture me);
-TableOfReal GaussianMixture_extractMixingProbabilities (GaussianMixture me);
+autoCovariance GaussianMixture_to_Covariance_within (GaussianMixture me);
 
-PCA GaussianMixture_to_PCA (GaussianMixture me);
 
-Matrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA pca, long d1, long d2, double xmin, double xmax, long nx, double ymin, double ymax, long ny);
+autoCovariance GaussianMixture_extractComponent(GaussianMixture me, long component);
+
+autoTableOfReal GaussianMixture_extractCentroids (GaussianMixture me);
+
+autoTableOfReal GaussianMixture_extractMixingProbabilities (GaussianMixture me);
+
+autoPCA GaussianMixture_to_PCA (GaussianMixture me);
+
+autoMatrix GaussianMixture_and_PCA_to_Matrix_density (GaussianMixture me, PCA pca, long d1, long d2, double xmin, double xmax, long nx, double ymin, double ymax, long ny);
+
 void GaussianMixture_and_PCA_getIntervalsAlongDirections (GaussianMixture me, PCA thee, long d1, long d2, double nsigmas, double *xmin, double *xmax, double *ymin, double *ymax);
+
 void GaussianMixture_and_PCA_getIntervalAlongDirection (GaussianMixture me, PCA thee, long d, double nsigmas, double *xmin, double *xmax);
+
 void GaussianMixture_getIntervalAlongDirection (GaussianMixture me, long d, double nsigmas, double *xmin, double *xmax);
+
 void GaussianMixture_getIntervalsAlongDirections (GaussianMixture me, long d1, long d2, double nsigmas, double *xmin, double *xmax, double *ymin, double *ymax);
 
 /* with on demand expand of pca ! */
 int GaussianMixture_generateOneVector (GaussianMixture me, double *c, char32 **covname, double *buf);
-TableOfReal GaussianMixture_to_TableOfReal_randomSampling (GaussianMixture me, long numberOfPoints);
+
+autoTableOfReal GaussianMixture_to_TableOfReal_randomSampling (GaussianMixture me, long numberOfPoints);
 
 #endif /* _GaussianMixture_h_ */
diff --git a/dwtools/GaussianMixture_def.h b/dwtools/GaussianMixture_def.h
index ca15b85..82341c9 100644
--- a/dwtools/GaussianMixture_def.h
+++ b/dwtools/GaussianMixture_def.h
@@ -1,29 +1,28 @@
 /* GaussianMixture_def.h
  *
- * Copyright (C) 2010 David Weenink
+ * Copyright (C) 2010 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT GaussianMixture
-oo_DEFINE_CLASS (GaussianMixture, Data)
+oo_DEFINE_CLASS (GaussianMixture, Daata)
 
 	oo_LONG (numberOfComponents)
 	oo_LONG (dimension)
 	oo_DOUBLE_VECTOR (mixingProbabilities, numberOfComponents)
-	oo_COLLECTION (Ordered, covariances, Covariance, 0)
+	oo_AUTO_OBJECT (CovarianceList, 0, covariances)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/dwtools/HMM.cpp b/dwtools/HMM.cpp
index d71b122..33e4bbb 100644
--- a/dwtools/HMM.cpp
+++ b/dwtools/HMM.cpp
@@ -1,20 +1,19 @@
 /* HMM.cpp
  *
- * Copyright (C) 2010-2012 David Weenink
+ * Copyright (C) 2010-2012,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 /*
  djmw 20110304 Thing_new
@@ -45,6 +44,17 @@
 #include "oo_DESCRIPTION.h"
 #include "HMM_def.h"
 
+Thing_implement (HMM, Daata, 0);
+Thing_implement (HMMState, Daata, 0);
+Thing_implement (HMMStateList, Ordered, 0);
+Thing_implement (HMMObservation, Daata, 0);
+Thing_implement (HMMObservationList, Ordered, 0);
+Thing_implement (HMMBaumWelch, Daata, 0);
+Thing_implement (HMMViterbi, Daata, 0);
+Thing_implement (HMMObservationSequence, Table, 0);
+Thing_implement (HMMObservationSequenceBag, Collection, 0);
+Thing_implement (HMMStateSequence, Strings, 0);
+
 /*
 	Whenever a routine returns ln(p), the result for p=0 is -INFINITY.
 	On IEEE floating point hardware this number behaves reasonably.
@@ -53,39 +63,36 @@
 */
 
 // helpers
-int NUMget_line_intersection_with_circle (double xc, double yc, double r, double a, double b,
-        double *x1, double *y1, double *x2, double *y2);
-void HMM_Observation_init (I, const char32 *label, long numberOfComponents, long dimension, long storage);
-HMM_Observation HMM_Observation_create (const char32 *label, long numberOfComponents, long dimension, long storage);
+int NUMget_line_intersection_with_circle (double xc, double yc, double r, double a, double b, double *x1, double *y1, double *x2, double *y2);
+autoHMMObservation HMMObservation_create (const char32 *label, long numberOfComponents, long dimension, long storage);
 
-long HMM_and_HMM_ObservationSequence_getLongestSequence (HMM me, HMM_ObservationSequence thee, long symbolNumber);
+long HMM_and_HMMObservationSequence_getLongestSequence (HMM me, HMMObservationSequence thee, long symbolNumber);
 long StringsIndex_getLongestSequence (StringsIndex me, long index, long *pos);
 long Strings_getLongestSequence (Strings me, char32 *string, long *pos);
-void HMM_State_init (I, const char32 *label);
-HMM_State HMM_State_create (const char32 *label);
-
-HMM_BaumWelch HMM_BaumWelch_create (long nstates, long nsymbols, long capacity);
-void HMM_BaumWelch_getGamma (HMM_BaumWelch me);
-HMM_BaumWelch HMM_forward (HMM me, long *obs, long nt);
-void HMM_BaumWelch_reInit (HMM_BaumWelch me);
-void HMM_and_HMM_BaumWelch_getXi (HMM me, HMM_BaumWelch thee, long *obs);
-void HMM_and_HMM_BaumWelch_reestimate (HMM me, HMM_BaumWelch thee);
-void HMM_and_HMM_BaumWelch_addEstimate (HMM me, HMM_BaumWelch thee, long *obs);
-void HMM_and_HMM_BaumWelch_forward (HMM me, HMM_BaumWelch thee, long *obs);
-void HMM_and_HMM_BaumWelch_backward (HMM me, HMM_BaumWelch thee, long *obs);
-void HMM_and_HMM_Viterbi_decode (HMM me, HMM_Viterbi thee, long *obs);
+autoHMMState HMMState_create (const char32 *label);
+
+autoHMMBaumWelch HMMBaumWelch_create (long nstates, long nsymbols, long capacity);
+void HMMBaumWelch_getGamma (HMMBaumWelch me);
+autoHMMBaumWelch HMM_forward (HMM me, long *obs, long nt);
+void HMMBaumWelch_reInit (HMMBaumWelch me);
+void HMM_and_HMMBaumWelch_getXi (HMM me, HMMBaumWelch thee, long *obs);
+void HMM_and_HMMBaumWelch_reestimate (HMM me, HMMBaumWelch thee);
+void HMM_and_HMMBaumWelch_addEstimate (HMM me, HMMBaumWelch thee, long *obs);
+void HMM_and_HMMBaumWelch_forward (HMM me, HMMBaumWelch thee, long *obs);
+void HMM_and_HMMBaumWelch_backward (HMM me, HMMBaumWelch thee, long *obs);
+void HMM_and_HMMViterbi_decode (HMM me, HMMViterbi thee, long *obs);
 double HMM_getProbabilityOfObservations (HMM me, long *obs, long numberOfTimes);
-TableOfReal StringsIndex_to_TableOfReal_transitions (StringsIndex me, int probabilities);
-StringsIndex HMM_and_HMM_StateSequence_to_StringsIndex (HMM me, HMM_StateSequence thee);
+autoTableOfReal StringsIndex_to_TableOfReal_transitions (StringsIndex me, int probabilities);
+autoStringsIndex HMM_and_HMMStateSequence_to_StringsIndex (HMM me, HMMStateSequence thee);
 
 
-HMM_Viterbi HMM_Viterbi_create (long nstates, long ntimes);
-HMM_Viterbi HMM_to_HMM_Viterbi (HMM me, long *obs, long ntimes);
+autoHMMViterbi HMMViterbi_create (long nstates, long ntimes);
+autoHMMViterbi HMM_to_HMMViterbi (HMM me, long *obs, long ntimes);
 
 // evaluate the numbers given to probabilities
 static double *NUMwstring_to_probs (char32 *s, long nwanted) {
 	long numbers_found;
-	autoNUMvector<double> numbers (NUMstring_to_numbers (s, &numbers_found), 1);
+	autoNUMvector<double> numbers (NUMstring_to_numbers (s, & numbers_found), 1);
 	if (numbers_found != nwanted) {
 		Melder_throw (U"You supplied ", numbers_found, U", while ", nwanted, U" numbers needed.");
 	}
@@ -94,21 +101,20 @@ static double *NUMwstring_to_probs (char32 *s, long nwanted) {
 		if (numbers[i] < 0) {
 			Melder_throw (U"Numbers have to be positive.");
 		}
-		sum += numbers[i];
+		sum += numbers [i];
 	}
 	if (sum <= 0) {
 		Melder_throw (U"All probabilities cannot be zero.");
 	}
-	for (long i = 1; i <= numbers_found; i++) {
-		numbers[i] /= sum;
+	for (long i = 1; i <= numbers_found; i ++) {
+		numbers [i] /= sum;
 	}
 	return numbers.transfer();
 }
 
-int NUMget_line_intersection_with_circle (double xc, double yc, double r, double a, double b,
-        double *x1, double *y1, double *x2, double *y2) {
-	double ca = a * a + 1, bmyc = (b - yc);
-	double cb = 2 * (a * bmyc - xc);
+int NUMget_line_intersection_with_circle (double xc, double yc, double r, double a, double b, double *x1, double *y1, double *x2, double *y2) {
+	double ca = a * a + 1.0, bmyc = (b - yc);
+	double cb = 2.0 * (a * bmyc - xc);
 	double cc = bmyc * bmyc + xc * xc - r * r;
 	long nroots = NUMsolveQuadraticEquation (ca, cb, cc, x1, x2);
 	if (nroots == 1) {
@@ -128,35 +134,32 @@ int NUMget_line_intersection_with_circle (double xc, double yc, double r, double
 
 // D(l_1,l_2)=1/n( log p(O_2|l_1) - log p(O_2|l_2)
 static double HMM_and_HMM_getCrossEntropy_asym (HMM me, HMM thee, long observationLength) {
-	autoHMM_ObservationSequence os = HMM_to_HMM_ObservationSequence (thee, 0, observationLength);
-	double ce = HMM_and_HMM_ObservationSequence_getCrossEntropy (me, os.peek());
+	autoHMMObservationSequence os = HMM_to_HMMObservationSequence (thee, 0, observationLength);
+	double ce = HMM_and_HMMObservationSequence_getCrossEntropy (me, os.get());
 	if (ce == NUMundefined || ce == INFINITY) {
 		return ce;
 	}
-	double ce2 = HMM_and_HMM_ObservationSequence_getCrossEntropy (thee, os.peek());
+	double ce2 = HMM_and_HMMObservationSequence_getCrossEntropy (thee, os.get());
 	if (ce2 == NUMundefined || ce2 == INFINITY) {
 		return ce2;
 	}
 	return ce - ce2;
 }
 
-/**************** HMM_Observation ******************************/
-
-Thing_implement (HMM_Observation, Data, 0);
+/**************** HMMObservation ******************************/
 
-void HMM_Observation_init (I, const char32 *label, long numberOfComponents, long dimension, long storage) {
-	iam (HMM_Observation);
+static void HMMObservation_init (HMMObservation me, const char32 *label, long numberOfComponents, long dimension, long storage) {
 	my label = Melder_dup (label);
 	my gm = GaussianMixture_create (numberOfComponents, dimension, storage);
 }
 
-HMM_Observation HMM_Observation_create (const char32 *label, long numberOfComponents, long dimension, long storage) {
+autoHMMObservation HMMObservation_create (const char32 *label, long numberOfComponents, long dimension, long storage) {
 	try {
-		autoHMM_Observation me = Thing_new (HMM_Observation);
-		HMM_Observation_init (me.peek(), label, numberOfComponents, dimension, storage);
-		return me.transfer();
+		autoHMMObservation me = Thing_new (HMMObservation);
+		HMMObservation_init (me.get(), label, numberOfComponents, dimension, storage);
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_Observation not created.");
+		Melder_throw (U"HMMObservation not created.");
 	}
 }
 
@@ -200,36 +203,31 @@ long StringsIndex_getLongestSequence (StringsIndex me, long index, long *pos) {
 	return length;
 }
 
-/**************** HMM_State ******************************/
+/**************** HMMState ******************************/
 
-Thing_implement (HMM_State, Data, 0);
-
-void HMM_State_init (I, const char32 *label) {
-	iam (HMM_State);
+static void HMMState_init (HMMState me, const char32 *label) {
 	my label = Melder_dup (label);
 }
 
-HMM_State HMM_State_create (const char32 *label) {
+autoHMMState HMMState_create (const char32 *label) {
 	try {
-		autoHMM_State me = Thing_new (HMM_State);
-		HMM_State_init (me.peek(), label);
-		return me.transfer();
+		autoHMMState me = Thing_new (HMMState);
+		HMMState_init (me.get(), label);
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_State not created.");
+		Melder_throw (U"HMMState not created.");
 	}
 }
 
-void HMM_State_setLabel (HMM_State me, char32 *label) {
+void HMMState_setLabel (HMMState me, char32 *label) {
 	Melder_free (my label);
 	my label = Melder_dup (label);
 }
 
-/**************** HMM_BaumWelch ******************************/
-
-Thing_implement (HMM_BaumWelch, Data, 0);
+/**************** HMMBaumWelch ******************************/
 
-void structHMM_BaumWelch :: v_destroy () {
-	for (long it = 1; it <= numberOfTimes; it++) {
+void structHMMBaumWelch :: v_destroy () noexcept {
+	for (long it = 1; it <= capacity; it ++) {
 		NUMmatrix_free (xi[it], 1, 1);
 	}
 	NUMvector_free (xi, 1);
@@ -237,11 +235,15 @@ void structHMM_BaumWelch :: v_destroy () {
 	NUMmatrix_free (beta, 1, 1);
 	NUMmatrix_free (alpha, 1, 1);
 	NUMmatrix_free (gamma, 1, 1);
+	NUMmatrix_free (aij_num, 0, 1);
+	NUMmatrix_free (aij_denom, 0, 1);
+	NUMmatrix_free (bik_num, 1, 1);
+	NUMmatrix_free (bik_denom, 1, 1);
 }
 
-HMM_BaumWelch HMM_BaumWelch_create (long nstates, long nsymbols, long capacity) {
+autoHMMBaumWelch HMMBaumWelch_create (long nstates, long nsymbols, long capacity) {
 	try {
-		autoHMM_BaumWelch me = Thing_new (HMM_BaumWelch);
+		autoHMMBaumWelch me = Thing_new (HMMBaumWelch);
 		my numberOfTimes = my capacity = capacity;
 		my numberOfStates = nstates;
 		my numberOfSymbols = nsymbols;
@@ -257,150 +259,132 @@ HMM_BaumWelch HMM_BaumWelch_create (long nstates, long nsymbols, long capacity)
 		for (long it = 1; it <= capacity; it++) {
 			my xi[it] = NUMmatrix<double> (1, nstates, 1, nstates);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_BaumWelch not created.");
+		Melder_throw (U"HMMBaumWelch not created.");
 	}
 }
 
-void HMM_BaumWelch_getGamma (HMM_BaumWelch me) {
-	for (long it = 1; it <= my numberOfTimes; it++) {
+void HMMBaumWelch_getGamma (HMMBaumWelch me) {
+	for (long it = 1; it <= my numberOfTimes; it ++) {
 		double sum = 0.0;
-		for (long is = 1; is <= my numberOfStates; is++) {
-			my gamma[is][it] = my alpha[is][it] * my beta[is][it];
-			sum += my gamma[is][it];
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			my gamma [is] [it] = my alpha [is] [it] * my beta [is] [it];
+			sum += my gamma [is] [it];
 		}
 
-		for (long is = 1; is <= my numberOfStates; is++) {
-			my gamma[is][it] /= sum;
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			my gamma [is] [it] /= sum;
 		}
 	}
 }
 
-/**************** HMM_Viterbi ******************************/
-
-Thing_implement (HMM_Viterbi, Data, 0);
+/**************** HMMViterbi ******************************/
 
-HMM_Viterbi HMM_Viterbi_create (long nstates, long ntimes) {
+autoHMMViterbi HMMViterbi_create (long nstates, long ntimes) {
 	try {
-		autoHMM_Viterbi me = Thing_new (HMM_Viterbi);
+		autoHMMViterbi me = Thing_new (HMMViterbi);
 		my numberOfTimes = ntimes;
 		my numberOfStates = nstates;
-		my viterbi = NUMmatrix<double> (1, nstates, 1 , ntimes);
+		my viterbi = NUMmatrix<double> (1, nstates, 1, ntimes);
 		my bp = NUMmatrix<long> (1, nstates, 1 , ntimes);
 		my path = NUMvector<long> (1, ntimes);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_Viterbi not created.");
+		Melder_throw (U"HMMViterbi not created.");
 	}
 }
 
-/******************* HMM_ObservationSequence & HMM_StateSequence ***/
+/******************* HMMObservationSequence & HMMStateSequence ***/
 
-Thing_implement (HMM_ObservationSequence, Table, 0);
-
-HMM_ObservationSequence HMM_ObservationSequence_create (long numberOfItems, long dataLength) {
+autoHMMObservationSequence HMMObservationSequence_create (long numberOfItems, long dataLength) {
 	try {
-		autoHMM_ObservationSequence me = Thing_new (HMM_ObservationSequence);
-		Table_initWithoutColumnNames (me.peek(), numberOfItems, dataLength + 1);
-		return me.transfer();
+		autoHMMObservationSequence me = Thing_new (HMMObservationSequence);
+		Table_initWithoutColumnNames (me.get(), numberOfItems, dataLength + 1);
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_ObservationSequence not created.");
+		Melder_throw (U"HMMObservationSequence not created.");
 	}
 }
 
-long HMM_ObservationSequence_getNumberOfObservations (HMM_ObservationSequence me) {
-	return my rows -> size;
+long HMMObservationSequence_getNumberOfObservations (HMMObservationSequence me) {
+	return my rows.size;
 }
 
-void HMM_ObservationSequence_removeObservation (HMM_ObservationSequence me, long index) {
+void HMMObservationSequence_removeObservation (HMMObservationSequence me, long index) {
 	Table_removeRow ( (Table) me, index);
 }
 
-Strings HMM_ObservationSequence_to_Strings (HMM_ObservationSequence me) {
+autoStrings HMMObservationSequence_to_Strings (HMMObservationSequence me) {
 	try {
-		long numberOfStrings = my rows -> size;
+		long numberOfStrings = my rows.size;
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector<char32 *> (1, numberOfStrings);
 		for (long i = 1; i <= numberOfStrings; i++) {
 			thy strings[i] = Melder_dup_f (Table_getStringValue_Assert ( (Table) me, i, 1));
 			(thy numberOfStrings) ++;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Strings created.");
 	}
 }
 
-HMM_ObservationSequence Strings_to_HMM_ObservationSequence (Strings me) {
+autoHMMObservationSequence Strings_to_HMMObservationSequence (Strings me) {
 	try {
-		autoHMM_ObservationSequence thee = HMM_ObservationSequence_create (my numberOfStrings, 0);
+		autoHMMObservationSequence thee = HMMObservationSequence_create (my numberOfStrings, 0);
 		for (long i = 1; i <= my numberOfStrings; i++) {
-			Table_setStringValue ( (Table) thee.peek(), i, 1, my strings[i]);
+			Table_setStringValue ( (Table) thee.get(), i, 1, my strings[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no HMM_ObservationSequence created.");
+		Melder_throw (me, U": no HMMObservationSequence created.");
 	}
 }
 
-StringsIndex HMM_ObservationSequence_to_StringsIndex (HMM_ObservationSequence me) {
+autoStringsIndex HMMObservationSequence_to_StringsIndex (HMMObservationSequence me) {
 	try {
-		autoStrings s = HMM_ObservationSequence_to_Strings (me);
-		autoStringsIndex thee = Strings_to_StringsIndex (s.peek());
-		return thee.transfer();
+		autoStrings s = HMMObservationSequence_to_Strings (me);
+		autoStringsIndex thee = Strings_to_StringsIndex (s.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no StringsIndex created.");
 	}
 }
 
-long HMM_and_HMM_ObservationSequence_getLongestSequence (HMM me, HMM_ObservationSequence thee, long symbolNumber) {
-	autoStringsIndex si = HMM_and_HMM_ObservationSequence_to_StringsIndex (me, thee);
+long HMM_and_HMMObservationSequence_getLongestSequence (HMM me, HMMObservationSequence thee, long symbolNumber) {
+	autoStringsIndex si = HMM_and_HMMObservationSequence_to_StringsIndex (me, thee);
 	// TODO
 	(void) symbolNumber;
 	return 1;
 }
 
-Thing_implement (HMM_ObservationSequences, Collection, 0);
-
-HMM_ObservationSequences HMM_ObservationSequences_create () {
-	try {
-		autoHMM_ObservationSequences me = Thing_new (HMM_ObservationSequences);
-		Collection_init (me.peek(), classHMM_ObservationSequence, 1000);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"HMM_ObservationSequences not created.");
-	}
-}
-
-long HMM_ObservationSequences_getLongestSequence (HMM_ObservationSequences me) {
+long HMMObservationSequenceBag_getLongestSequence (HMMObservationSequenceBag me) {
 	long longest = 0;
-	for (long i = 1; i <= my size; i++) {
-		HMM_ObservationSequence thee = (HMM_ObservationSequence) my item[i];
-		if (thy rows -> size > longest) {
-			longest = thy rows -> size;
+	for (long i = 1; i <= my size; i ++) {
+		HMMObservationSequence thee = my at [i];
+		if (thy rows.size > longest) {
+			longest = thy rows.size;
 		}
 	}
 	return longest;
 }
 
-Thing_implement (HMM_StateSequence, Strings, 0);
-
-HMM_StateSequence HMM_StateSequence_create (long numberOfItems) {
+autoHMMStateSequence HMMStateSequence_create (long numberOfItems) {
 	try {
-		autoHMM_StateSequence me = Thing_new (HMM_StateSequence);
+		autoHMMStateSequence me = Thing_new (HMMStateSequence);
 		my strings = NUMvector<char32 *> (1, numberOfItems);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"HMM_StateSequence not created.");
+		Melder_throw (U"HMMStateSequence not created.");
 	}
 }
 
-Strings HMM_StateSequence_to_Strings (HMM_StateSequence me) {
+autoStrings HMMStateSequence_to_Strings (HMMStateSequence me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
-		my structStrings :: v_copy (thee.peek());
-		return thee.transfer();
+		my structStrings :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Strings created.");
 	}
@@ -409,18 +393,16 @@ Strings HMM_StateSequence_to_Strings (HMM_StateSequence me) {
 
 /**************** HMM ******************************/
 
-Thing_implement (HMM, Data, 0);
-
 void structHMM :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of states: ", numberOfStates);
-	for (long i = 1; i <= numberOfStates; i++) {
-		HMM_State hmms = (HMM_State) states -> item[i];
+	for (long i = 1; i <= numberOfStates; i ++) {
+		HMMState hmms = our states->at [i];
 		MelderInfo_writeLine (U"  ", hmms -> label);
 	}
 	MelderInfo_writeLine (U"Number of symbols: ", numberOfObservationSymbols);
-	for (long i = 1; i <= numberOfObservationSymbols; i++) {
-		HMM_Observation hmms = (HMM_Observation) observationSymbols -> item[i];
+	for (long i = 1; i <= numberOfObservationSymbols; i ++) {
+		HMMObservation hmms = our observationSymbols->at [i];
 		MelderInfo_writeLine (U"  ", hmms -> label);
 	}
 }
@@ -430,22 +412,22 @@ static void HMM_init (HMM me, long numberOfStates, long numberOfObservationSymbo
 	my numberOfObservationSymbols = numberOfObservationSymbols;
 	my componentStorage = 1;
 	my leftToRight = leftToRight;
-	my states = Ordered_create ();
-	my observationSymbols = Ordered_create ();
+	my states = HMMStateList_create ();
+	my observationSymbols = HMMObservationList_create ();
 	my transitionProbs = NUMmatrix<double> (0, numberOfStates, 1, numberOfStates + 1);
 	my emissionProbs = NUMmatrix<double> (1, numberOfStates, 1, numberOfObservationSymbols);
 }
 
-HMM HMM_create (int leftToRight, long numberOfStates, long numberOfObservationSymbols) {
+autoHMM HMM_create (int leftToRight, long numberOfStates, long numberOfObservationSymbols) {
 	try {
 		autoHMM me = Thing_new (HMM);
-		HMM_init (me.peek(), numberOfStates, numberOfObservationSymbols, leftToRight);
-		HMM_setDefaultStates (me.peek());
-		HMM_setDefaultObservations (me.peek());
-		HMM_setDefaultTransitionProbs (me.peek());
-		HMM_setDefaultStartProbs (me.peek());
-		HMM_setDefaultEmissionProbs (me.peek());
-		return me.transfer();
+		HMM_init (me.get(), numberOfStates, numberOfObservationSymbols, leftToRight);
+		HMM_setDefaultStates (me.get());
+		HMM_setDefaultObservations (me.get());
+		HMM_setDefaultTransitionProbs (me.get());
+		HMM_setDefaultStartProbs (me.get());
+		HMM_setDefaultEmissionProbs (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"HMM not created.");
 	}
@@ -453,50 +435,48 @@ HMM HMM_create (int leftToRight, long numberOfStates, long numberOfObservationSy
 
 void HMM_setDefaultStates (HMM me) {
 	for (long i = 1; i <= my numberOfStates; i++) {
-		autoHMM_State hmms = HMM_State_create (Melder_cat (U"S", i));
-		HMM_addState (me, hmms.transfer());
+		autoHMMState hmms = HMMState_create (Melder_cat (U"S", i));
+		HMM_addState_move (me, hmms.move());
 	}
 }
 
-HMM HMM_createFullContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
-                                   long numberOfFeatureStreams, long *dimensionOfStream, long *numberOfGaussiansforStream) {
+autoHMM HMM_createFullContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols, long numberOfFeatureStreams, long *dimensionOfStream, long *numberOfGaussiansforStream) {
 	(void) leftToRight;
 	(void) numberOfStates;
 	(void) numberOfObservationSymbols;
 	(void) numberOfFeatureStreams;
 	(void) dimensionOfStream;
 	(void) numberOfGaussiansforStream;
-	return NULL;
+	return autoHMM();
 }
 
-HMM HMM_createContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
-                               long numberOfMixtureComponentsPerSymbol, long componentDimension, long componentStorage) {
+autoHMM HMM_createContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols, long numberOfMixtureComponentsPerSymbol, long componentDimension, long componentStorage) {
 	try {
 		autoHMM me = Thing_new (HMM);
-		HMM_init (me.peek(), numberOfStates, numberOfObservationSymbols, leftToRight);
+		HMM_init (me.get(), numberOfStates, numberOfObservationSymbols, leftToRight);
 		my numberOfMixtureComponents = numberOfMixtureComponentsPerSymbol;
 		my componentDimension = componentDimension;
 		my componentStorage = componentStorage;
 		for (long i = 1; i <= numberOfStates; i++) {
-			autoHMM_State state = HMM_State_create (Melder_cat (U"S", i));
-			HMM_addState (me.peek(), state.transfer());
+			autoHMMState state = HMMState_create (Melder_cat (U"S", i));
+			HMM_addState_move (me.get(), state.move());
 		}
 		for (long j = 1; j <= numberOfObservationSymbols; j++) {
-			autoHMM_Observation obs = HMM_Observation_create (Melder_cat (U"s", j), numberOfMixtureComponentsPerSymbol, componentDimension, componentStorage);
-			HMM_addObservation (me.peek(), obs.transfer());
-		}
-		HMM_setDefaultTransitionProbs (me.peek());
-		HMM_setDefaultStartProbs (me.peek());
-		HMM_setDefaultEmissionProbs (me.peek());
-		HMM_setDefaultMixingProbabilities (me.peek());
-		return me.transfer();
+			autoHMMObservation obs = HMMObservation_create (Melder_cat (U"s", j), numberOfMixtureComponentsPerSymbol, componentDimension, componentStorage);
+			HMM_addObservation_move (me.get(), obs.move());
+		}
+		HMM_setDefaultTransitionProbs (me.get());
+		HMM_setDefaultStartProbs (me.get());
+		HMM_setDefaultEmissionProbs (me.get());
+		HMM_setDefaultMixingProbabilities (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Continuous model HMM not created.");
 	}
 }
 
 // for a simple non-hidden model leave either states empty or symbols empty !!!
-HMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32 *symbols_string) {
+autoHMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32 *symbols_string) {
 	try {
 		autoHMM me = Thing_new (HMM);
 		const char32 *states = states_string;
@@ -505,7 +485,7 @@ HMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32
 		long numberOfObservationSymbols = Melder_countTokens (symbols_string);
 
 		if (numberOfStates == 0 and numberOfObservationSymbols == 0) {
-			Melder_throw (U"No states and symbols.");
+			Melder_throw (U"No states and no symbols given.");
 		}
 		if (numberOfStates > 0) {
 			if (numberOfObservationSymbols <= 0) {
@@ -519,20 +499,20 @@ HMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32
 			my notHidden = 1;
 		}
 
-		HMM_init (me.peek(), numberOfStates, numberOfObservationSymbols, leftToRight);
+		HMM_init (me.get(), numberOfStates, numberOfObservationSymbols, leftToRight);
 
 		for (char32 *token = Melder_firstToken (states); token != 0; token = Melder_nextToken ()) {
-			autoHMM_State state = HMM_State_create (token);
-			HMM_addState (me.peek(), state.transfer());
+			autoHMMState state = HMMState_create (token);
+			HMM_addState_move (me.get(), state.move());
 		}
-		for (char32 *token = Melder_firstToken (symbols); token != NULL; token = Melder_nextToken ()) {
-			autoHMM_Observation symbol = HMM_Observation_create (token, 0, 0, 0);
-			HMM_addObservation (me.peek(), symbol.transfer());
+		for (char32 *token = Melder_firstToken (symbols); token != nullptr; token = Melder_nextToken ()) {
+			autoHMMObservation symbol = HMMObservation_create (token, 0, 0, 0);
+			HMM_addObservation_move (me.get(), symbol.move());
 		}
-		HMM_setDefaultTransitionProbs (me.peek());
-		HMM_setDefaultStartProbs (me.peek());
-		HMM_setDefaultEmissionProbs (me.peek());
-		return me.transfer();
+		HMM_setDefaultTransitionProbs (me.get());
+		HMM_setDefaultStartProbs (me.get());
+		HMM_setDefaultEmissionProbs (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Simple HMM not created.");
 	}
@@ -540,45 +520,45 @@ HMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32
 
 void HMM_setDefaultObservations (HMM me) {
 	const char32 *def = my notHidden ? U"S" : U"s";
-	for (long i = 1; i <= my numberOfObservationSymbols; i++) {
-		autoHMM_Observation hmms = HMM_Observation_create (Melder_cat (def, i), 0, 0, 0);
-		HMM_addObservation (me, hmms.transfer());
+	for (long i = 1; i <= my numberOfObservationSymbols; i ++) {
+		autoHMMObservation hmms = HMMObservation_create (Melder_cat (def, i), 0, 0, 0);
+		HMM_addObservation_move (me, hmms.move());
 	}
 }
 
 void HMM_setDefaultTransitionProbs (HMM me) {
-	for (long i = 1; i <= my numberOfStates; i++) {
-		double p = my leftToRight ? 1.0 / (my numberOfStates - i + 1) : 1.0 / my numberOfStates;
+	for (long i = 1; i <= my numberOfStates; i ++) {
+		double p = ( my leftToRight ? 1.0 / (my numberOfStates - i + 1.0) : 1.0 / my numberOfStates );
 		for (long j = 1; j <= my numberOfStates; j++) {
-			my transitionProbs[i][j] = my leftToRight && j < i ? 0 : p;
+			my transitionProbs [i] [j] = ( my leftToRight && j < i ? 0.0 : p );
 		}
 	}
 	// leftToRight must have end state!
-	if (my leftToRight) my transitionProbs[my numberOfStates][my numberOfStates] =
-		    my transitionProbs[my numberOfStates][my numberOfStates + 1] = 0.5;
+	if (my leftToRight) my transitionProbs [my numberOfStates] [my numberOfStates] =
+		    my transitionProbs [my numberOfStates] [my numberOfStates + 1] = 0.5;
 }
 
 void HMM_setDefaultStartProbs (HMM me) {
 	double p = 1.0 / my numberOfStates;
-	for (long j = 1; j <= my numberOfStates; j++) {
-		my transitionProbs[0][j] = p;
+	for (long j = 1; j <= my numberOfStates; j ++) {
+		my transitionProbs [0] [j] = p;
 	}
 }
 
 void HMM_setDefaultEmissionProbs (HMM me) {
 	double p = 1.0 / my numberOfObservationSymbols;
 	for (long i = 1; i <= my numberOfStates; i++)
-		for (long j = 1; j <= my numberOfObservationSymbols; j++) {
-			my emissionProbs[i][j] = my notHidden ? (i == j ? 1 : 0) : p;
+		for (long j = 1; j <= my numberOfObservationSymbols; j ++) {
+			my emissionProbs [i] [j] = my notHidden ? ( i == j ? 1.0 : 0.0 ) : p;
 		}
 }
 
 void HMM_setDefaultMixingProbabilities (HMM me) {
 	double mp = 1.0 / my numberOfMixtureComponents;
-	for (long is = 1; is <= my numberOfObservationSymbols; is++) {
-		HMM_Observation hmmo = (HMM_Observation) my observationSymbols -> item[is];
-		for (long im = 1; im <= my numberOfMixtureComponents; im++) {
-			hmmo -> gm -> mixingProbabilities[im] = mp;
+	for (long is = 1; is <= my numberOfObservationSymbols; is ++) {
+		HMMObservation hmmo = my observationSymbols->at [is];
+		for (long im = 1; im <= my numberOfMixtureComponents; im ++) {
+			hmmo -> gm -> mixingProbabilities [im] = mp;
 		}
 	}
 }
@@ -596,12 +576,12 @@ void HMM_setStartProbabilities (HMM me, char32 *probs) {
 
 void HMM_setTransitionProbabilities (HMM me, long state_number, char32 *state_probs) {
 	try {
-		if (state_number > my states -> size) {
+		if (state_number > my states->size) {
 			Melder_throw (U"State number too large.");
 		}
-		autoNUMvector<double> p (NUMwstring_to_probs (state_probs, my numberOfStates + 1), 1);
-		for (long i = 1; i <= my numberOfStates + 1; i++) {
-			my transitionProbs[state_number][i] = p[i];
+		autoNUMvector<double> p (NUMwstring_to_probs (state_probs, my numberOfStates), 1);
+		for (long i = 1; i <= my numberOfStates + 1; i ++) {
+			my transitionProbs [state_number] [i] = p [i];
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no transition probabilities set.");
@@ -610,7 +590,7 @@ void HMM_setTransitionProbabilities (HMM me, long state_number, char32 *state_pr
 
 void HMM_setEmissionProbabilities (HMM me, long state_number, char32 *emission_probs) {
 	try {
-		if (state_number > my states -> size) {
+		if (state_number > my states->size) {
 			Melder_throw (U"State number too large.");
 		}
 		if (my notHidden) {
@@ -618,7 +598,7 @@ void HMM_setEmissionProbabilities (HMM me, long state_number, char32 *emission_p
 		}
 		autoNUMvector<double> p (NUMwstring_to_probs (emission_probs, my numberOfObservationSymbols), 1);
 		for (long i = 1; i <= my numberOfObservationSymbols; i++) {
-			my emissionProbs[state_number][i] = p[i];
+			my emissionProbs [state_number] [i] = p [i];
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no emission probabilities set.");
@@ -626,62 +606,60 @@ void HMM_setEmissionProbabilities (HMM me, long state_number, char32 *emission_p
 
 }
 
-void HMM_addObservation (HMM me, thou) {
-	thouart (HMM_Observation);
-	long ns = my observationSymbols -> size + 1;
+void HMM_addObservation_move (HMM me, autoHMMObservation thee) {
+	long ns = my observationSymbols->size + 1;
 	if (ns > my numberOfObservationSymbols) {
 		Melder_throw (U"Observation list is full.");
 	}
-	Ordered_addItemPos (my observationSymbols, thee, ns);
+	my observationSymbols -> addItemAtPosition_move (thee.move(), ns);
 }
 
-void HMM_addState (HMM me, thou) {
-	thouart (HMM_State);
-	long ns = my states -> size + 1;
+void HMM_addState_move (HMM me, autoHMMState thee) {
+	long ns = my states->size + 1;
 	if (ns > my numberOfStates) {
 		Melder_throw (U"States list is full.");
 	}
-	Ordered_addItemPos (my states, thee, ns);
+	my states -> addItemAtPosition_move (thee.move(), ns);
 }
 
-TableOfReal HMM_extractTransitionProbabilities (HMM me) {
+autoTableOfReal HMM_extractTransitionProbabilities (HMM me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfStates + 1, my numberOfStates + 1);
-		for (long is = 1; is <= my numberOfStates; is++) {
-			HMM_State hmms = (HMM_State) my states -> item[is];
-			TableOfReal_setRowLabel (thee.peek(), is + 1, hmms -> label);
-			TableOfReal_setColumnLabel (thee.peek(), is, hmms -> label);
-			for (long js = 1; js <= my numberOfStates; js++) {
-				thy data[is + 1][js] = my transitionProbs[is][js];
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			HMMState hmms = my states->at [is];
+			TableOfReal_setRowLabel (thee.get(), is + 1, hmms -> label);
+			TableOfReal_setColumnLabel (thee.get(), is, hmms -> label);
+			for (long js = 1; js <= my numberOfStates; js ++) {
+				thy data [is + 1] [js] = my transitionProbs [is] [js];
 			}
 		}
-		TableOfReal_setRowLabel (thee.peek(), 1, U"START");
-		TableOfReal_setColumnLabel (thee.peek(), my numberOfStates + 1, U"END");
-		for (long is = 1; is <= my numberOfStates; is++) {
-			thy data[1][is] = my transitionProbs[0][is];
-			thy data[is + 1][my numberOfStates + 1] = my transitionProbs[is][my numberOfStates + 1];
+		TableOfReal_setRowLabel (thee.get(), 1, U"START");
+		TableOfReal_setColumnLabel (thee.get(), my numberOfStates + 1, U"END");
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			thy data [1] [is] = my transitionProbs [0] [is];
+			thy data [is + 1] [my numberOfStates + 1] = my transitionProbs [is] [my numberOfStates + 1];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no transition probabilities extracted.");
 	}
 }
 
-TableOfReal HMM_extractEmissionProbabilities (HMM me) {
+autoTableOfReal HMM_extractEmissionProbabilities (HMM me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfStates, my numberOfObservationSymbols);
-		for (long js = 1; js <= my numberOfObservationSymbols; js++) {
-			HMM_Observation hmms = (HMM_Observation) my observationSymbols -> item[js];
-			TableOfReal_setColumnLabel (thee.peek(), js, hmms -> label);
-		}
-		for (long is = 1; is <= my numberOfStates; is++) {
-			HMM_State hmms = (HMM_State) my states -> item[is];
-			TableOfReal_setRowLabel (thee.peek(), is, hmms -> label);
-			for (long js = 1; js <= my numberOfObservationSymbols; js++) {
-				thy data[is][js] = my emissionProbs[is][js];
+		for (long js = 1; js <= my numberOfObservationSymbols; js ++) {
+			HMMObservation hmms = my observationSymbols->at [js];
+			TableOfReal_setColumnLabel (thee.get(), js, hmms -> label);
+		}
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			HMMState hmms = my states->at [is];
+			TableOfReal_setRowLabel (thee.get(), is, hmms -> label);
+			for (long js = 1; js <= my numberOfObservationSymbols; js ++) {
+				thy data [is] [js] = my emissionProbs [is] [js];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no emission probabilities extracted.");
 	};
@@ -691,14 +669,14 @@ double HMM_getExpectedValueOfDurationInState (HMM me, long istate) {
 	if (istate < 0 || istate > my numberOfStates) {
 		return NUMundefined;
 	}
-	return 1 / (1 - my transitionProbs[istate][istate]);
+	return 1.0 / (1.0 - my transitionProbs [istate] [istate]);
 }
 
 double HMM_getProbabilityOfStayingInState (HMM me, long istate, long numberOfTimeUnits) {
 	if (istate < 0 || istate > my numberOfStates) {
 		return NUMundefined;
 	}
-	return pow (my transitionProbs[istate][istate], numberOfTimeUnits - 1) * (1 - my transitionProbs[istate][istate]);
+	return pow (my transitionProbs [istate] [istate], numberOfTimeUnits - 1.0) * (1.0 - my transitionProbs[istate][istate]);
 }
 
 double HMM_and_HMM_getCrossEntropy (HMM me, HMM thee, long observationLength, int symmetric) {
@@ -710,25 +688,25 @@ double HMM_and_HMM_getCrossEntropy (HMM me, HMM thee, long observationLength, in
 	if (ce2 == NUMundefined || ce2 == INFINITY) {
 		return ce2;
 	}
-	return (ce1 + ce2) / 2;
+	return (ce1 + ce2) / 2.0;
 }
 
-double HMM_and_HMM_and_HMM_ObservationSequence_getCrossEntropy (HMM me, HMM thee, HMM_ObservationSequence him) {
-	double ce1 = HMM_and_HMM_ObservationSequence_getCrossEntropy (me, him);
+double HMM_and_HMM_and_HMMObservationSequence_getCrossEntropy (HMM me, HMM thee, HMMObservationSequence him) {
+	double ce1 = HMM_and_HMMObservationSequence_getCrossEntropy (me, him);
 	if (ce1 == NUMundefined || ce1 == INFINITY) {
 		return ce1;
 	}
-	double ce2 = HMM_and_HMM_ObservationSequence_getCrossEntropy (thee, him);
+	double ce2 = HMM_and_HMMObservationSequence_getCrossEntropy (thee, him);
 	if (ce2 == NUMundefined || ce2 == INFINITY) {
 		return ce2;
 	}
-	return (ce1 + ce2) / 2;
+	return (ce1 + ce2) / 2.0;
 }
 
 void HMM_draw (HMM me, Graphics g, int garnish) {
 	double xwidth = sqrt (my numberOfStates);
 	double rstate = 0.3 / xwidth, r = xwidth / 3.0;
-	double xmax = 1.2 * xwidth / 2, xmin = -xmax, ymin = xmin, ymax = xmax;
+	double xmax = 1.2 * xwidth / 2.0, xmin = -xmax, ymin = xmin, ymax = xmax;
 
 	autoNUMvector<double> xs (1, my numberOfStates);
 	autoNUMvector<double> ys (1, my numberOfStates);
@@ -738,7 +716,7 @@ void HMM_draw (HMM me, Graphics g, int garnish) {
 	xs[1] = ys[1] = 0;
 	if (my numberOfStates > 1) {
 		for (long is = 1; is <= my numberOfStates; is++) {
-			double alpha = - NUMpi + NUMpi * 2 * (is - 1) / my numberOfStates;
+			double alpha = - NUMpi + NUMpi * 2.0 * (is - 1) / my numberOfStates;
 			xs[is] = r * cos (alpha); ys[is] = r * sin (alpha);
 		}
 	}
@@ -748,38 +726,38 @@ void HMM_draw (HMM me, Graphics g, int garnish) {
 	// find fontsize
 	int fontSize = Graphics_inqFontSize (g);
 	const char32 *widest_label = U"";
-	double max_width = 0;
-	for (long is = 1; is <= my numberOfStates; is++) {
-		HMM_State hmms = (HMM_State) my states -> item[is];
-		double w = hmms -> label == NULL ? 0 : Graphics_textWidth (g, hmms -> label);
+	double max_width = 0.0;
+	for (long is = 1; is <= my numberOfStates; is ++) {
+		HMMState hmms = my states->at [is];
+		double w = ( hmms -> label == nullptr ? 0.0 : Graphics_textWidth (g, hmms -> label) );
 		if (w > max_width) {
 			widest_label = hmms -> label;
 			max_width = w;
 		}
 	}
 	int new_fontSize = fontSize;
-	while (max_width > 2 * rstate && new_fontSize > 4) {
+	while (max_width > 2.0 * rstate && new_fontSize > 4) {
 		new_fontSize --;
 		Graphics_setFontSize (g, new_fontSize);
 		max_width = Graphics_textWidth (g, widest_label);
 	}
 	Graphics_setFontSize (g, new_fontSize);
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
-	for (long is = 1; is <= my numberOfStates; is++) {
-		HMM_State hmms = (HMM_State) my states -> item[is];
-		Graphics_circle (g, xs[is], ys[is], rstate);
-		Graphics_text (g, xs[is], ys[is], hmms -> label);
+	for (long is = 1; is <= my numberOfStates; is ++) {
+		HMMState hmms = my states->at [is];
+		Graphics_circle (g, xs [is], ys [is], rstate);
+		Graphics_text (g, xs [is], ys [is], hmms -> label);
 	}
 
 	// draw connections from is to js
 	// 1 -> 2 / 2-> : increase / decrease angle between 1 and 2 with pi /10
 	// use cos(a+b) and cos(a -b) rules
-	double cosb = cos (NUMpi / 10), sinb = sin (NUMpi / 10);
-	for (long is = 1; is <= my numberOfStates; is++) {
-		double x1 = xs[is], y1 = ys[is];
-		for (long js = 1; js <= my numberOfStates; js++) {
-			if (my transitionProbs[is][js] > 0 && is != js) {
-				double x2 = xs[js], y2 = ys[js];
+	double cosb = cos (NUMpi / 10.0), sinb = sin (NUMpi / 10.0);
+	for (long is = 1; is <= my numberOfStates; is ++) {
+		double x1 = xs [is], y1 = ys [is];
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			if (my transitionProbs [is] [js] > 0.0 && is != js) {
+				double x2 = xs [js], y2 = ys [js];
 				double dx = x2 - x1, dy = y2 - y1, h = sqrt (dx * dx + dy * dy), cosa = dx / h, sina = dy / h;
 				double cosabp = cosa * cosb - sina * sinb, cosabm = cosa * cosb + sina * sinb;
 				double sinabp = cosa * sinb + sina * cosb, sinabm = -cosa * sinb + sina * cosb;
@@ -800,77 +778,77 @@ void HMM_unExpandPCA (HMM me) {
 	if (my componentDimension <= 0) {
 		return;    // nothing to do
 	}
-	for (long is = 1; is <= my numberOfObservationSymbols; is++) {
-		HMM_Observation s = (HMM_Observation) my observationSymbols -> item[is];
-		GaussianMixture_unExpandPCA (s -> gm);
+	for (long is = 1; is <= my numberOfObservationSymbols; is ++) {
+		HMMObservation s = my observationSymbols->at [is];
+		GaussianMixture_unExpandPCA (s -> gm.get());
 	}
 }
 
-HMM_ObservationSequence HMM_to_HMM_ObservationSequence (HMM me, long startState, long numberOfItems) {
+autoHMMObservationSequence HMM_to_HMMObservationSequence (HMM me, long startState, long numberOfItems) {
 	try {
-		autoHMM_ObservationSequence thee = HMM_ObservationSequence_create (numberOfItems, my componentDimension);
+		autoHMMObservationSequence thee = HMMObservationSequence_create (numberOfItems, my componentDimension);
 		autoNUMvector<double> obs;
 		autoNUMvector<double> buf;
 		if (my componentDimension > 0) {
 			obs.reset (1, my componentDimension);
 			buf.reset (1, my componentDimension);
 		}
-		long istate = startState == 0 ? NUMgetIndexFromProbability (my transitionProbs[0], my numberOfStates, NUMrandomUniform (0, 1)) : startState;
+		long istate = startState == 0 ? NUMgetIndexFromProbability (my transitionProbs[0], my numberOfStates, NUMrandomUniform (0.0, 1.0)) : startState;
 		for (long i = 1; i <= numberOfItems; i++) {
 			// Emit a symbol from istate
 
-			long isymbol = NUMgetIndexFromProbability (my emissionProbs[istate], my numberOfObservationSymbols, NUMrandomUniform (0, 1));
-			HMM_Observation s = (HMM_Observation) my observationSymbols -> item[isymbol];
+			long isymbol = NUMgetIndexFromProbability (my emissionProbs[istate], my numberOfObservationSymbols, NUMrandomUniform (0.0, 1.0));
+			HMMObservation s = my observationSymbols->at [isymbol];
 
 			if (my componentDimension > 0) {
 				char32 *name;
-				GaussianMixture_generateOneVector (s -> gm, obs.peek(), &name, buf.peek());
+				GaussianMixture_generateOneVector (s -> gm.get(), obs.peek(), &name, buf.peek());
 				for (long j = 1; j <= my componentDimension; j++) {
-					Table_setNumericValue ( (Table) thee.peek(), i, 1 + j, obs[j]);
+					Table_setNumericValue ( (Table) thee.get(), i, 1 + j, obs[j]);
 				}
 			}
 
-			Table_setStringValue ( (Table) thee.peek(), i, 1, s -> label);
+			Table_setStringValue (thee.get(), i, 1, s -> label);
 
 			// get next state
 
-			istate = NUMgetIndexFromProbability (my transitionProbs[istate], my numberOfStates + 1, NUMrandomUniform (0, 1));
+			istate = NUMgetIndexFromProbability (my transitionProbs [istate], my numberOfStates + 1, NUMrandomUniform (0.0, 1.0));
 			if (istate == my numberOfStates + 1) { // final state
-				for (long j = numberOfItems; j > i; j--) {
-					HMM_ObservationSequence_removeObservation (thee.peek(), j);
+				for (long j = numberOfItems; j > i; j --) {
+					HMMObservationSequence_removeObservation (thee.get(), j);
 				}
 				break;
 			}
 		}
 		HMM_unExpandPCA (me);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		HMM_unExpandPCA (me);
-		Melder_throw (me, U":no HMM_ObservationSequence created.");
+		Melder_throw (me, U":no HMMObservationSequence created.");
 	}
 }
 
-HMM_BaumWelch HMM_forward (HMM me, long *obs, long nt) {
+autoHMMBaumWelch HMM_forward (HMM me, long *obs, long nt) {
 	try {
-		autoHMM_BaumWelch thee = HMM_BaumWelch_create (my numberOfStates, my numberOfObservationSymbols, nt);
-		HMM_and_HMM_BaumWelch_forward (me, thee.peek(), obs);
-		return thee.transfer();
+		autoHMMBaumWelch thee = HMMBaumWelch_create (my numberOfStates, my numberOfObservationSymbols, nt);
+		HMM_and_HMMBaumWelch_forward (me, thee.get(), obs);
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no HMM_BaumWelch created.");
+		Melder_throw (me, U": no HMMBaumWelch created.");
 	}
 }
 
-HMM_Viterbi HMM_to_HMM_Viterbi (HMM me, long *obs, long ntimes) {
+autoHMMViterbi HMM_to_HMMViterbi (HMM me, long *obs, long ntimes) {
 	try {
-		autoHMM_Viterbi thee = HMM_Viterbi_create (my numberOfStates, ntimes);
-		HMM_and_HMM_Viterbi_decode (me, thee.peek(), obs);
-		return thee.transfer();
+		autoHMMViterbi thee = HMMViterbi_create (my numberOfStates, ntimes);
+		HMM_and_HMMViterbi_decode (me, thee.get(), obs);
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no HMM_Viterbi created.");
+		Melder_throw (me, U": no HMMViterbi created.");
 	}
 }
 
-void HMM_BaumWelch_reInit (HMM_BaumWelch me) {
+void HMMBaumWelch_reInit (HMMBaumWelch me) {
 	my totalNumberOfSequences = 0;
 	my lnProb = 0;
 
@@ -882,33 +860,34 @@ void HMM_BaumWelch_reInit (HMM_BaumWelch me) {
 	*/
 	for (long is = 0; is <= my numberOfStates; is++) {
 		for (long js = 1; js <= my numberOfStates + 1; js++) {
-			my aij_num[is][js] = 0;
-			my aij_denom[is][js] = 0;
+			my aij_num[is][js] = 0.0;
+			my aij_denom[is][js] = 0.0;
 		}
 	}
 	for (long is = 1; is <= my numberOfStates; is++) {
 		for (long js = 1; js <= my numberOfSymbols; js++) {
-			my bik_num[is][js] = 0;
-			my bik_denom[is][js] = 0;
+			my bik_num[is][js] = 0.0;
+			my bik_denom[is][js] = 0.0;
 		}
 	}
 }
 
-void HMM_and_HMM_ObservationSequences_learn (HMM me, HMM_ObservationSequences thee, double delta_lnp, double minProb) {
+void HMM_and_HMMObservationSequenceBag_learn (HMM me, HMMObservationSequenceBag thee, double delta_lnp, double minProb, int info) {
 	try {
 		// act as if all observation sequences are in memory
-		long capacity = HMM_ObservationSequences_getLongestSequence (thee);
-		autoHMM_BaumWelch bw = HMM_BaumWelch_create (my numberOfStates, my numberOfObservationSymbols, capacity);
+		long capacity = HMMObservationSequenceBag_getLongestSequence (thee);
+		autoHMMBaumWelch bw = HMMBaumWelch_create (my numberOfStates, my numberOfObservationSymbols, capacity);
 		bw -> minProb = minProb;
-		MelderInfo_open ();
+		if (info) {
+			MelderInfo_open (); 
+		}
 		long iter = 0; double lnp;
 		do {
 			lnp = bw -> lnProb;
-			HMM_BaumWelch_reInit (bw.peek());
-			for (long ios = 1; ios <= thy size; ios++) {
-				MelderInfo_writeLine (U"Observation sequence: ", ios);
-				HMM_ObservationSequence hmm_os = (HMM_ObservationSequence) thy item[ios];
-				autoStringsIndex si = HMM_and_HMM_ObservationSequence_to_StringsIndex (me, hmm_os);
+			HMMBaumWelch_reInit (bw.get());
+			for (long ios = 1; ios <= thy size; ios ++) {
+				HMMObservationSequence hmm_os = thy at [ios];
+				autoStringsIndex si = HMM_and_HMMObservationSequence_to_StringsIndex (me, hmm_os); // TODO outside the loop or more efficiently
 				long *obs = si -> classIndex, nobs = si -> numberOfElements; // convenience
 
 				// Interpretation of unknowns: end of sequence
@@ -928,25 +907,28 @@ void HMM_and_HMM_ObservationSequences_learn (HMM me, HMM_ObservationSequences th
 					iend --;
 					bw -> numberOfTimes = iend - istart + 1;
 					(bw -> totalNumberOfSequences) ++;
-					MelderInfo_writeLine (U"  sub observation: ", bw -> totalNumberOfSequences);
-					HMM_and_HMM_BaumWelch_forward (me, bw.peek(), obs + istart - 1); // get new alphas
-					HMM_and_HMM_BaumWelch_backward (me, bw.peek(), obs + istart - 1); // get new betas
-					HMM_BaumWelch_getGamma (bw.peek());
-					HMM_and_HMM_BaumWelch_getXi (me, bw.peek(), obs + istart - 1);
-					HMM_and_HMM_BaumWelch_addEstimate (me, bw.peek(), obs + istart - 1);
+					HMM_and_HMMBaumWelch_forward (me, bw.get(), obs + istart - 1); // get new alphas
+					HMM_and_HMMBaumWelch_backward (me, bw.get(), obs + istart - 1); // get new betas
+					HMMBaumWelch_getGamma (bw.get());
+					HMM_and_HMMBaumWelch_getXi (me, bw.get(), obs + istart - 1);
+					HMM_and_HMMBaumWelch_addEstimate (me, bw.get(), obs + istart - 1);
 					istart = iend + 1;
 				}
 			}
-			// we have processed all observation sequences, now it time to estimate new probabilities.
+			// we have processed all observation sequences, now it is time to estimate new probabilities.
 			iter++;
-			HMM_and_HMM_BaumWelch_reestimate (me, bw.peek());
-			MelderInfo_writeLine (U"Iteration: ", iter, U" ln(prob): ", bw -> lnProb);
-		} while (fabs ( (lnp - bw -> lnProb) / bw -> lnProb) > delta_lnp);
-
-		MelderInfo_writeLine (U"******** Learning summary *********");
-		MelderInfo_writeLine (U"  Processed ", thy size, U" sequences,");
-		MelderInfo_writeLine (U"  consisting of ", bw -> totalNumberOfSequences, U" observation sequences.");
-		MelderInfo_writeLine (U"  Longest observation sequence had ", capacity, U" items");
+			HMM_and_HMMBaumWelch_reestimate (me, bw.get());
+			if (info) { 
+				MelderInfo_writeLine (U"Iteration: ", iter, U" ln(prob): ", bw -> lnProb); 
+			}
+		} while (fabs ((lnp - bw -> lnProb) / bw -> lnProb) > delta_lnp);
+		if (info) {
+			MelderInfo_writeLine (U"******** Learning summary *********");
+			MelderInfo_writeLine (U"  Processed ", thy size, U" sequences,");
+			MelderInfo_writeLine (U"  consisting of ", bw -> totalNumberOfSequences, U" observation sequences.");
+			MelderInfo_writeLine (U"  Longest observation sequence had ", capacity, U" items");
+			MelderInfo_close();
+		}
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not learned.");
 	}
@@ -954,10 +936,10 @@ void HMM_and_HMM_ObservationSequences_learn (HMM me, HMM_ObservationSequences th
 
 
 // xc1 < xc2
-void HMM_and_HMM_StateSequence_drawTrellis (HMM me, HMM_StateSequence thee, Graphics g, int connect, int garnish) {
+void HMM_and_HMMStateSequence_drawTrellis (HMM me, HMMStateSequence thee, Graphics g, int connect, int garnish) {
 	long numberOfTimes = thy numberOfStrings;
-	autoStringsIndex si = HMM_and_HMM_StateSequence_to_StringsIndex (me, thee);
-	double xmin = 0, xmax = numberOfTimes + 1, ymin = 0.5, ymax = my numberOfStates + 0.5;
+	autoStringsIndex si = HMM_and_HMMStateSequence_to_StringsIndex (me, thee);
+	double xmin = 0.0, xmax = numberOfTimes + 1.0, ymin = 0.5, ymax = my numberOfStates + 0.5;
 
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -971,7 +953,7 @@ void HMM_and_HMM_StateSequence_drawTrellis (HMM me, HMM_StateSequence thee, Grap
 			if (it > 1) {
 				for (long is = 1; is <= my numberOfStates; is++) {
 					bool indexedConnection = si -> classIndex[it - 1] == is && si -> classIndex[it] == js;
-					Graphics_setLineWidth (g, indexedConnection ? 2 : 1);
+					Graphics_setLineWidth (g, indexedConnection ? 2.0 : 1.0);
 					Graphics_setLineType (g, indexedConnection ? Graphics_DRAWN : Graphics_DOTTED);
 					double x1 = it - 1, y1 = is;
 					if (connect || indexedConnection) {
@@ -987,25 +969,25 @@ void HMM_and_HMM_StateSequence_drawTrellis (HMM me, HMM_StateSequence thee, Grap
 		}
 	}
 	Graphics_unsetInner (g);
-	Graphics_setLineWidth (g, 1);
+	Graphics_setLineWidth (g, 1.0);
 	Graphics_setLineType (g, Graphics_DRAWN);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		for (long js = 1; js <= my numberOfStates; js++) {
-			HMM_State hmms = (HMM_State) my states -> item[js];
-			Graphics_markLeft (g, js, 0, 0, 0, hmms -> label);
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			HMMState hmms = my states->at [js];
+			Graphics_markLeft (g, js, false, false, false, hmms -> label);
 		}
-		Graphics_marksBottomEvery (g, 1, 1, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Time index");
+		Graphics_marksBottomEvery (g, 1.0, 1.0, true, true, false);
+		Graphics_textBottom (g, true, U"Time index");
 	}
 }
 
 void HMM_drawBackwardProbabilitiesIllustration (Graphics g, bool garnish) {
-	double xmin = 0, xmax = 1, ymin = 0, ymax = 1;
+	double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0;
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	double xleft  = 0.1, xright = 0.9, r = 0.03;
 	long np = 6;
-	double dy = (1 - 0.3) / (np - 1);
+	double dy = (1.0 - 0.3) / (np - 1);
 	double x0 = xleft, y0 = 0.5;
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_circle (g, x0, y0, r);
@@ -1049,8 +1031,8 @@ void HMM_drawBackwardProbabilitiesIllustration (Graphics g, bool garnish) {
 		Graphics_text (g, x0 - 1.5 * r, y0, U"%s__%i_");
 
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (g, x0, 0, U"%t");
-		Graphics_text (g, x, 0, U"%t+1");
+		Graphics_text (g, x0, 0.0, U"%t");
+		Graphics_text (g, x, 0.0, U"%t+1");
 
 		double y3 = 0.10;
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
@@ -1060,11 +1042,11 @@ void HMM_drawBackwardProbabilitiesIllustration (Graphics g, bool garnish) {
 }
 
 void HMM_drawForwardProbabilitiesIllustration (Graphics g, bool garnish) {
-	double xmin = 0, xmax = 1, ymin = 0, ymax = 1;
+	double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0;
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
-	double xleft  = 0.1, xright = 0.9, r = 0.03;
+	double xleft = 0.1, xright = 0.9, r = 0.03;
 	long np = 6;
-	double dy = (1 - 0.3) / (np - 1);
+	double dy = (1.0 - 0.3) / (np - 1);
 	double x0 = xright, y0 = 0.5;
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_circle (g, x0, y0, r);
@@ -1077,7 +1059,7 @@ void HMM_drawForwardProbabilitiesIllustration (Graphics g, bool garnish) {
 			double cosa = xx / c, sina = yy / c;
 			Graphics_line (g, x0 - r * cosa, y0 + r * sina, x + r * cosa, y - r * sina);
 		} else if (i == 4) {
-			double ddy = 3*dy/4;
+			double ddy = 3.0 * dy / 4.0;
 			Graphics_fillCircle (g, x, y + dy - ddy, 0.5 * r);
 			Graphics_fillCircle (g, x, y + dy - 2 * ddy, 0.5 * r);
 			Graphics_fillCircle (g, x, y + dy - 3 * ddy, 0.5 * r);
@@ -1108,8 +1090,8 @@ void HMM_drawForwardProbabilitiesIllustration (Graphics g, bool garnish) {
 		Graphics_text (g, x0 + 1.5 * r, y0, U"%s__%j_");
 
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (g, x, 0, U"%t");
-		Graphics_text (g, x0, 0, U"%t+1");
+		Graphics_text (g, x, 0.0, U"%t");
+		Graphics_text (g, x0, 0.0, U"%t+1");
 
 		double y3 = 0.10;
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
@@ -1119,16 +1101,16 @@ void HMM_drawForwardProbabilitiesIllustration (Graphics g, bool garnish) {
 }
 
 void HMM_drawForwardAndBackwardProbabilitiesIllustration (Graphics g, bool garnish) {
-	double xfrac = 0.1, xs =  1 / (0.5 - xfrac), r = 0.03;
-	Graphics_Viewport vp = Graphics_insetViewport (g, 0, 0.5-xfrac, 0, 1);
+	double xfrac = 0.1, xs = 1.0 / (0.5 - xfrac), r = 0.03;
+	Graphics_Viewport vp = Graphics_insetViewport (g, 0.0, 0.5-xfrac, 0.0, 1.0);
 	HMM_drawForwardProbabilitiesIllustration (g, false);
 	Graphics_resetViewport (g, vp);
-	Graphics_insetViewport (g, 0.5 + xfrac, 1, 0, 1);
+	Graphics_insetViewport (g, 0.5 + xfrac, 1.0, 0.0, 1.0);
 	HMM_drawBackwardProbabilitiesIllustration (g, false);
 	Graphics_resetViewport (g, vp);
-	Graphics_setWindow (g, 0, xs, 0, 1);
+	Graphics_setWindow (g, 0.0, xs, 0.0, 1.0);
 	if (garnish) {
-		double rx1 = 1 + xs * 2 * xfrac + 0.1, rx2 = rx1 + 0.9 - 0.1, y1 = 0.1;
+		double rx1 = 1.0 + xs * 2.0 * xfrac + 0.1, rx2 = rx1 + 0.9 - 0.1, y1 = 0.1;
 		Graphics_line (g, 0.9 + r, 0.5, rx1 - r, 0.5);
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
 		Graphics_text (g, 0.9, 0.5 + r, U"%s__%i_");
@@ -1136,14 +1118,14 @@ void HMM_drawForwardAndBackwardProbabilitiesIllustration (Graphics g, bool garni
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_TOP);
 		Graphics_text (g, 1.0 + xfrac * xs, 0.5, U"%a__%%ij%_%b__%j_(O__%t+1_)");
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (g, 0.1, 0, U"%t-1");
-		Graphics_text (g, 0.9, 0, U"%t");
-		Graphics_text (g, rx1, 0, U"%t+1");
-		Graphics_text (g, rx2, 0, U"%t+2");
+		Graphics_text (g, 0.1, 0.0, U"%t-1");
+		Graphics_text (g, 0.9, 0.0, U"%t");
+		Graphics_text (g, rx1, 0.0, U"%t+1");
+		Graphics_text (g, rx2, 0.0, U"%t+2");
 		Graphics_setLineType (g, Graphics_DASHED);
 		double x4 = rx1 - 0.06, x3 = 0.9 + 0.06;
-		Graphics_line (g, x3, 0.7, x3, 0);
-		Graphics_line (g, x4, 0.7, x4, 0);
+		Graphics_line (g, x3, 0.7, x3, 0.0);
+		Graphics_line (g, x4, 0.7, x4, 0.0);
 		Graphics_setLineType (g, Graphics_DRAWN);
 		Graphics_arrow (g, x4, y1, x4 + 0.2, y1);
 		Graphics_arrow (g, x3, y1, x3 - 0.2, y1);
@@ -1154,7 +1136,7 @@ void HMM_drawForwardAndBackwardProbabilitiesIllustration (Graphics g, bool garni
 	}
 }
 
-void HMM_and_HMM_BaumWelch_getXi (HMM me, HMM_BaumWelch thee, long *obs) {
+void HMM_and_HMMBaumWelch_getXi (HMM me, HMMBaumWelch thee, long *obs) {
 
 	for (long it = 1; it <= thy numberOfTimes - 1; it++) {
 		double sum = 0.0;
@@ -1165,39 +1147,38 @@ void HMM_and_HMM_BaumWelch_getXi (HMM me, HMM_BaumWelch thee, long *obs) {
 				sum += thy xi[it][is][js];
 			}
 		}
-		for (long is = 1; is <= my numberOfStates; is++)
+		for (long is = 1; is <= my numberOfStates; is++) {
 			for (long js = 1; js <= my numberOfStates; js++) {
-				thy xi[it][is][js]  /= sum;
+				thy xi[it][is][js] /= sum;
 			}
+		}
 	}
 }
 
-void HMM_and_HMM_BaumWelch_addEstimate (HMM me, HMM_BaumWelch thee, long *obs) {
-	long is; // yes, outside
-
-	for (is = 1; is <= my numberOfStates; is++) {
+void HMM_and_HMMBaumWelch_addEstimate (HMM me, HMMBaumWelch thee, long *obs) {
+	for (long is = 1; is <= my numberOfStates; is ++) {
 		// only for valid start states with p > 0
-		if (my transitionProbs[0][is] > 0) {
-			thy aij_num[0][is] += thy gamma[is][1];
-			thy aij_denom[0][is] += 1;
+		if (my transitionProbs [0] [is] > 0.0) {
+			thy aij_num [0] [is] += thy gamma [is] [1];
+			thy aij_denom [0] [is] += 1.0;
 		}
 	}
 
-	for (is = 1; is <= my numberOfStates; is++) {
+	for (long is = 1; is <= my numberOfStates; is ++) {
 		double gammasum = 0.0;
-		for (long it = 1; it <= thy numberOfTimes - 1; it++) {
-			gammasum += thy gamma[is][it];
+		for (long it = 1; it <= thy numberOfTimes - 1; it ++) {
+			gammasum += thy gamma [is] [it];
 		}
 
-		for (long js = 1; js <= my numberOfStates; js++) {
+		for (long js = 1; js <= my numberOfStates; js ++) {
 			double xisum = 0.0;
-			for (long it = 1; it <= thy numberOfTimes - 1; it++) {
-				xisum += thy xi[it][is][js];
+			for (long it = 1; it <= thy numberOfTimes - 1; it ++) {
+				xisum += thy xi [it] [is] [js];
 			}
 			// zero probs signal invalid connections, don't reestimate
-			if (my transitionProbs[is][js] > 0) {
-				thy aij_num[is][js] += xisum;
-				thy aij_denom[is][js] += gammasum;
+			if (my transitionProbs [is] [js] > 0.0) {
+				thy aij_num [is] [js] += xisum;
+				thy aij_denom [is] [js] += gammasum;
 			}
 		}
 
@@ -1205,31 +1186,31 @@ void HMM_and_HMM_BaumWelch_addEstimate (HMM me, HMM_BaumWelch thee, long *obs) {
 			Only reestimate the emissionProbs for a hidden markov model.
 			A not hidden model is emulated with fixed emissionProbs.
 		*/
-		if (!my notHidden) {
-			gammasum += thy gamma[is][thy numberOfTimes]; // Now sum all, add last term
-			for (long k = 1; k <= my numberOfObservationSymbols; k++) {
+		if (! my notHidden) {
+			gammasum += thy gamma [is] [thy numberOfTimes];   // now sum all, add last term
+			for (long k = 1; k <= my numberOfObservationSymbols; k ++) {
 				double gammasum_k = 0.0;
-				for (long it = 1; it <= thy numberOfTimes; it++) {
-					if (obs[it] == k) {
-						gammasum_k += thy gamma[is][it];
+				for (long it = 1; it <= thy numberOfTimes; it ++) {
+					if (obs [it] == k) {
+						gammasum_k += thy gamma [is] [it];
 					}
 				}
 				// only reestimate probs > 0 !
-				if (my emissionProbs[is][k] > 0) {
-					thy bik_num[is][k] += gammasum_k;
-					thy bik_denom[is][k] += gammasum;
+				if (my emissionProbs [is] [k] > 0.0) {
+					thy bik_num [is] [k] += gammasum_k;
+					thy bik_denom [is] [k] += gammasum;
 				}
 			}
 		}
 		// For a left-to-right model the final state determines the transition prob to go to the END state
 		if (my leftToRight) {
-			thy aij_num[is][my numberOfStates + 1] += thy gamma[is][thy numberOfTimes];
-			thy aij_denom[is][my numberOfStates + 1] += 1;
+			thy aij_num [is] [my numberOfStates + 1] += thy gamma [is] [thy numberOfTimes];
+			thy aij_denom [is] [my numberOfStates + 1] += 1.0;
 		}
 	}
 }
 
-void HMM_and_HMM_BaumWelch_reestimate (HMM me, HMM_BaumWelch thee) {
+void HMM_and_HMMBaumWelch_reestimate (HMM me, HMMBaumWelch thee) {
 	double p;
 	/*
 		If we only have a couple of training sequences and they all happen to start with the same symbol,
@@ -1237,7 +1218,7 @@ void HMM_and_HMM_BaumWelch_reestimate (HMM me, HMM_BaumWelch thee) {
 
 		What to do with the P_k (see Rabiner formulas 109-110)?
 	*/
-	for (long is = 1; is <= my numberOfStates; is++) {
+	for (long is = 1; is <= my numberOfStates; is ++) {
 		/*
 			If we have not enough observation sequences it can happen that some probabilities
 			become zero. This means that for some future observation sequences the probability evaluation
@@ -1245,75 +1226,75 @@ void HMM_and_HMM_BaumWelch_reestimate (HMM me, HMM_BaumWelch thee) {
 			We can prevent this from happening by asumimg a minimal probability for valid transitions
 			i.e. which have initially p > 0.
 		*/
-		if (my transitionProbs[0][is] > 0) {
-			p = thy aij_num[0][is] / thy aij_denom[0][is];
-			my transitionProbs[0][is] = p > 0 ? p : thy minProb;
-		}
-		for (long js = 1; js <= my numberOfStates; js++) {
-			if (my transitionProbs[is][js] > 0) {
-				p = thy aij_num[is][js] / thy aij_denom[is][js];
-				my transitionProbs[is][js] = p > 0 ? p : thy minProb;
+		if (my transitionProbs [0] [is] > 0.0) {
+			p = thy aij_num [0] [is] / thy aij_denom [0] [is];
+			my transitionProbs [0] [is] = p > 0.0 ? p : thy minProb;
+		}
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			if (my transitionProbs [is] [js] > 0.0) {
+				p = thy aij_num [is] [js] / thy aij_denom [is] [js];
+				my transitionProbs [is] [js] = p > 0.0 ? p : thy minProb;
 			}
 		}
 		if (! my notHidden) {
-			for (long k = 1; k <= my numberOfObservationSymbols; k++) {
-				if (my emissionProbs[is][k] > 0) {
-					p = thy bik_num[is][k] / thy bik_denom[is][k];
-					my emissionProbs[is][k] = p > 0 ? p : thy minProb;
+			for (long k = 1; k <= my numberOfObservationSymbols; k ++) {
+				if (my emissionProbs [is] [k] > 0.0) {
+					p = thy bik_num [is] [k] / thy bik_denom [is] [k];
+					my emissionProbs [is] [k] = p > 0.0 ? p : thy minProb;
 				}
 			}
 		}
-		if (my leftToRight && my transitionProbs[is][my numberOfStates + 1] > 0) {
+		if (my leftToRight && my transitionProbs[is][my numberOfStates + 1] > 0.0) {
 			p = thy aij_num[is][my numberOfStates + 1] / thy aij_denom[is][my numberOfStates + 1];
-			my transitionProbs[is][my numberOfStates + 1] = p > 0 ? p : thy minProb;
+			my transitionProbs[is][my numberOfStates + 1] = p > 0.0 ? p : thy minProb;
 		}
 	}
 }
 
-void HMM_and_HMM_BaumWelch_forward (HMM me, HMM_BaumWelch thee, long *obs) {
+void HMM_and_HMMBaumWelch_forward (HMM me, HMMBaumWelch thee, long *obs) {
 	// initialise at t = 1 & scale
-	thy scale[1] = 0;
-	for (long js = 1; js <= my numberOfStates; js++) {
-		thy alpha[js][1] = my transitionProbs[0][js] * my emissionProbs[js][ obs[1] ];
-		thy scale[1] += thy alpha[js][1];
+	thy scale [1] = 0.0;
+	for (long js = 1; js <= my numberOfStates; js ++) {
+		thy alpha [js] [1] = my transitionProbs [0] [js] * my emissionProbs [js] [obs [1]];
+		thy scale [1] += thy alpha [js] [1];
 	}
-	for (long js = 1; js <= my numberOfStates; js++) {
-		thy alpha[js][1] /= thy scale[1];
+	for (long js = 1; js <= my numberOfStates; js ++) {
+		thy alpha [js] [1] /= thy scale [1];
 	}
 	// recursion
-	for (long it = 2; it <= thy numberOfTimes; it++) {
-		thy scale[it] = 0.0;
-		for (long js = 1; js <= my numberOfStates; js++) {
+	for (long it = 2; it <= thy numberOfTimes; it ++) {
+		thy scale [it] = 0.0;
+		for (long js = 1; js <= my numberOfStates; js ++) {
 			double sum = 0.0;
-			for (long is = 1; is <= my numberOfStates; is++) {
-				sum += thy alpha[is][it - 1] * my transitionProbs[is][js];
+			for (long is = 1; is <= my numberOfStates; is ++) {
+				sum += thy alpha [is] [it - 1] * my transitionProbs [is] [js];
 			}
 
-			thy alpha[js][it] = sum * my emissionProbs[js][ obs[it] ];
-			thy scale[it] += thy alpha[js][it];
+			thy alpha [js] [it] = sum * my emissionProbs [js] [obs [it]];
+			thy scale [it] += thy alpha [js] [it];
 		}
 
-		for (long js = 1; js <= my numberOfStates; js++) {
-			thy alpha[js][it] /= thy scale[it];
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			thy alpha [js] [it] /= thy scale [it];
 		}
 	}
 
-	for (long it = 1; it <= thy numberOfTimes; it++) {
-		thy lnProb += log (thy scale[it]);
+	for (long it = 1; it <= thy numberOfTimes; it ++) {
+		thy lnProb += log (thy scale [it]);
 	}
 }
 
-void HMM_and_HMM_BaumWelch_backward (HMM me, HMM_BaumWelch thee, long *obs) {
-	for (long is = 1; is <= my numberOfStates; is++) {
-		thy beta[is][thy numberOfTimes] = 1.0 / thy scale[thy numberOfTimes];
+void HMM_and_HMMBaumWelch_backward (HMM me, HMMBaumWelch thee, long *obs) {
+	for (long is = 1; is <= my numberOfStates; is ++) {
+		thy beta [is] [thy numberOfTimes] = 1.0 / thy scale [thy numberOfTimes];
 	}
-	for (long it = thy numberOfTimes - 1; it >= 1; it--) {
-		for (long is = 1; is <= my numberOfStates; is++) {
+	for (long it = thy numberOfTimes - 1; it >= 1; it --) {
+		for (long is = 1; is <= my numberOfStates; is ++) {
 			double sum = 0.0;
-			for (long js = 1; js <= my numberOfStates; js++) {
-				sum += thy beta[js][it + 1] * my transitionProbs[is][js] * my emissionProbs[js][ obs[it + 1] ];
+			for (long js = 1; js <= my numberOfStates; js ++) {
+				sum += thy beta [js] [it + 1] * my transitionProbs [is] [js] * my emissionProbs [js] [obs [it + 1]];
 			}
-			thy beta[is][it] = sum / thy scale[it];
+			thy beta [is] [it] = sum / thy scale [it];
 		}
 	}
 }
@@ -1321,7 +1302,7 @@ void HMM_and_HMM_BaumWelch_backward (HMM me, HMM_BaumWelch thee, long *obs) {
 /*************************** HMM decoding ***********************************/
 
 // precondition: valid symbols, i.e. 1 <= o[i] <= my numberOfSymbols for i=1..nt
-void HMM_and_HMM_Viterbi_decode (HMM me, HMM_Viterbi thee, long *obs) {
+void HMM_and_HMMViterbi_decode (HMM me, HMMViterbi thee, long *obs) {
 	long ntimes = thy numberOfTimes;
 	// initialisation
 	for (long is = 1; is <= my numberOfStates; is++) {
@@ -1357,35 +1338,34 @@ void HMM_and_HMM_Viterbi_decode (HMM me, HMM_Viterbi thee, long *obs) {
 	}
 }
 
-HMM_StateSequence HMM_and_HMM_ObservationSequence_to_HMM_StateSequence (HMM me, HMM_ObservationSequence thee) {
+autoHMMStateSequence HMM_and_HMMObservationSequence_to_HMMStateSequence (HMM me, HMMObservationSequence thee) {
 	try {
-		autoStringsIndex si = HMM_and_HMM_ObservationSequence_to_StringsIndex (me, thee);
+		autoStringsIndex si = HMM_and_HMMObservationSequence_to_StringsIndex (me, thee);
 		long *obs = si -> classIndex; // convenience
-		long numberOfUnknowns = StringsIndex_countItems (si.peek(), 0);
+		long numberOfUnknowns = StringsIndex_countItems (si.get(), 0);
 
 		if (numberOfUnknowns > 0) {
 			Melder_throw (U"Unknown observation symbol(s) (# = ", numberOfUnknowns, U").");
 		}
 
-
-		long numberOfTimes = thy rows -> size;
-		autoHMM_Viterbi v = HMM_to_HMM_Viterbi (me, obs, numberOfTimes);
-		autoHMM_StateSequence him = HMM_StateSequence_create (numberOfTimes);
+		long numberOfTimes = thy rows.size;
+		autoHMMViterbi v = HMM_to_HMMViterbi (me, obs, numberOfTimes);
+		autoHMMStateSequence him = HMMStateSequence_create (numberOfTimes);
 		// trace the path and get states
-		for (long it = 1; it <= numberOfTimes; it++) {
-			HMM_State hmms = (HMM_State) my states -> item[ v -> path[it] ];
+		for (long it = 1; it <= numberOfTimes; it ++) {
+			HMMState hmms = my states->at [v -> path [it]];
 			his strings [it] = Melder_dup (hmms -> label);
 			his numberOfStrings ++;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
-		Melder_throw (me, U": no HMM_StateSequence created.");
+		Melder_throw (me, U": no HMMStateSequence created.");
 	}
 }
 
-double HMM_and_HMM_StateSequence_getProbability (HMM me, HMM_StateSequence thee) {
-	autoStringsIndex si = HMM_and_HMM_StateSequence_to_StringsIndex (me, thee);
-	long numberOfUnknowns = StringsIndex_countItems (si.peek(), 0);
+double HMM_and_HMMStateSequence_getProbability (HMM me, HMMStateSequence thee) {
+	autoStringsIndex si = HMM_and_HMMStateSequence_to_StringsIndex (me, thee);
+	long numberOfUnknowns = StringsIndex_countItems (si.get(), 0);
 	long *index = si -> classIndex;
 
 	if (index == 0) {
@@ -1395,13 +1375,13 @@ double HMM_and_HMM_StateSequence_getProbability (HMM me, HMM_StateSequence thee)
 		Melder_warning (U"Unknown states (# = ", numberOfUnknowns, U").");
 		return NUMundefined;
 	}
-	double p0 = my transitionProbs [0][ index[1] ];
+	double p0 = my transitionProbs [0] [index [1]];
 	if (p0 == 0) {
 		Melder_throw (U"You cannot start with this state.");
 	}
 	double lnp = log (p0);
-	for (long it = 2; it <= thy numberOfStrings; it++) {
-		lnp += log (my transitionProbs[ index[it - 1] ] [ index[it] ]);
+	for (long it = 2; it <= thy numberOfStrings; it ++) {
+		lnp += log (my transitionProbs [index [it - 1]] [index [it]]);
 	}
 	return lnp;
 }
@@ -1415,39 +1395,39 @@ double HMM_getProbabilityAtTimeBeingInState (HMM me, long itime, long istate) {
 	autoNUMvector<double> alpha_t (1, my numberOfStates);
 	autoNUMvector<double> alpha_tm1 (1, my numberOfStates);
 
-	for (long js = 1; js <= my numberOfStates; js++) {
-		alpha_t[js] = my transitionProbs[0][js];
-		scale[1] += alpha_t[js];
+	for (long js = 1; js <= my numberOfStates; js ++) {
+		alpha_t [js] = my transitionProbs [0] [js];
+		scale [1] += alpha_t [js];
 	}
-	for (long js = 1; js <= my numberOfStates; js++) {
-		alpha_t[js] /= scale[1];
+	for (long js = 1; js <= my numberOfStates; js ++) {
+		alpha_t [js] /= scale [1];
 	}
 	// recursion
-	for (long it = 2; it <= itime; it++) {
-		for (long js = 1; js <= my numberOfStates; js++) {
-			alpha_tm1[js] = alpha_t[js];
+	for (long it = 2; it <= itime; it ++) {
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			alpha_tm1 [js] = alpha_t [js];
 		}
 
-		for (long js = 1; js <= my numberOfStates; js++) {
+		for (long js = 1; js <= my numberOfStates; js ++) {
 			double sum = 0.0;
-			for (long is = 1; is <= my numberOfStates; is++) {
-				sum += alpha_tm1[is] * my transitionProbs[is][js];
+			for (long is = 1; is <= my numberOfStates; is ++) {
+				sum += alpha_tm1 [is] * my transitionProbs [is] [js];
 			}
-			alpha_t[js] = sum;
-			scale[it] += alpha_t[js];
+			alpha_t [js] = sum;
+			scale [it] += alpha_t [js];
 		}
 
-		for (long js = 1; js <= my numberOfStates; js++) {
-			alpha_t[js] /= scale[it];
+		for (long js = 1; js <= my numberOfStates; js ++) {
+			alpha_t [js] /= scale [it];
 		}
 	}
 
 	double lnp = 0.0;
-	for (long it = 1; it <= itime; it++) {
-		lnp += log (scale[it]);
+	for (long it = 1; it <= itime; it ++) {
+		lnp += log (scale [it]);
 	}
 
-	lnp = alpha_t[istate] > 0 ? lnp + log (alpha_t[istate]) : -INFINITY; // p = 0 -> ln(p)=-infinity
+	lnp = alpha_t [istate] > 0 ? lnp + log (alpha_t [istate]) : -INFINITY; // p = 0 -> ln(p)=-infinity  // ppgb FIXME infinity is een laag getal
 	return lnp;
 }
 
@@ -1507,177 +1487,177 @@ double HMM_getProbabilityOfObservations (HMM me, long *obs, long numberOfTimes)
 	return lnp;
 }
 
-double HMM_and_HMM_ObservationSequence_getProbability (HMM me, HMM_ObservationSequence thee) {
-	autoStringsIndex si = HMM_and_HMM_ObservationSequence_to_StringsIndex (me, thee);
+double HMM_and_HMMObservationSequence_getProbability (HMM me, HMMObservationSequence thee) {
+	autoStringsIndex si = HMM_and_HMMObservationSequence_to_StringsIndex (me, thee);
 	long *index = si -> classIndex;
-	long numberOfUnknowns = StringsIndex_countItems (si.peek(), 0);
+	long numberOfUnknowns = StringsIndex_countItems (si.get(), 0);
 	if (numberOfUnknowns > 0) {
 		Melder_throw (U"Unknown observations (# = ", numberOfUnknowns, U").");
 	}
-	return HMM_getProbabilityOfObservations (me, index, thy rows -> size);
+	return HMM_getProbabilityOfObservations (me, index, thy rows.size);
 }
 
-double HMM_and_HMM_ObservationSequence_getCrossEntropy (HMM me, HMM_ObservationSequence thee) {
-	double lnp = HMM_and_HMM_ObservationSequence_getProbability (me, thee);
+double HMM_and_HMMObservationSequence_getCrossEntropy (HMM me, HMMObservationSequence thee) {
+	double lnp = HMM_and_HMMObservationSequence_getProbability (me, thee);
 	return lnp == NUMundefined ? NUMundefined : (lnp == -INFINITY ? INFINITY :
-	        -lnp / (NUMln10 * HMM_ObservationSequence_getNumberOfObservations (thee)));
+	        -lnp / (NUMln10 * HMMObservationSequence_getNumberOfObservations (thee)));
 }
 
-double HMM_and_HMM_ObservationSequence_getPerplexity (HMM me, HMM_ObservationSequence thee) {
-	double ce = HMM_and_HMM_ObservationSequence_getCrossEntropy (me, thee);
+double HMM_and_HMMObservationSequence_getPerplexity (HMM me, HMMObservationSequence thee) {
+	double ce = HMM_and_HMMObservationSequence_getCrossEntropy (me, thee);
 	return ce == NUMundefined ? NUMundefined : (ce == INFINITY ? INFINITY : pow (2, ce));
 }
 
-HMM HMM_createFromHMM_ObservationSequence (HMM_ObservationSequence me, long numberOfStates, int leftToRight) {
+autoHMM HMM_createFromHMMObservationSequence (HMMObservationSequence me, long numberOfStates, int leftToRight) {
 	try {
 		autoHMM thee = Thing_new (HMM);
-		autoStrings s = HMM_ObservationSequence_to_Strings (me);
-		autoDistributions d = Strings_to_Distributions (s.peek());
+		autoStrings s = HMMObservationSequence_to_Strings (me);
+		autoDistributions d = Strings_to_Distributions (s.get());
 
 		long numberOfObservationSymbols = d -> numberOfRows;
 		thy notHidden = numberOfStates < 1;
 		numberOfStates = numberOfStates > 0 ? numberOfStates : numberOfObservationSymbols;
 
-		HMM_init (thee.peek(), numberOfStates, numberOfObservationSymbols, leftToRight);
+		HMM_init (thee.get(), numberOfStates, numberOfObservationSymbols, leftToRight);
 
 		for (long i = 1; i <= numberOfObservationSymbols; i++) {
 			const char32 *label = d -> rowLabels[i];
-			autoHMM_Observation hmmo = HMM_Observation_create (label, 0, 0, 0);
-			HMM_addObservation (thee.peek(), hmmo.transfer());
+			autoHMMObservation hmmo = HMMObservation_create (label, 0, 0, 0);
+			HMM_addObservation_move (thee.get(), hmmo.move());
 			if (thy notHidden) {
-				autoHMM_State hmms = HMM_State_create (label);
-				HMM_addState (thee.peek(), hmms.transfer());
+				autoHMMState hmms = HMMState_create (label);
+				HMM_addState_move (thee.get(), hmms.move());
 			}
 		}
 		if (! thy notHidden) {
-			HMM_setDefaultStates (thee.peek());
+			HMM_setDefaultStates (thee.get());
 		}
-		HMM_setDefaultTransitionProbs (thee.peek());
-		HMM_setDefaultStartProbs (thee.peek());
-		HMM_setDefaultEmissionProbs (thee.peek());
-		return thee.transfer();
+		HMM_setDefaultTransitionProbs (thee.get());
+		HMM_setDefaultStartProbs (thee.get());
+		HMM_setDefaultEmissionProbs (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no HMM created.");
 	}
 }
 
-TableOfReal HMM_ObservationSequence_to_TableOfReal_transitions (HMM_ObservationSequence me, int probabilities) {
+autoTableOfReal HMMObservationSequence_to_TableOfReal_transitions (HMMObservationSequence me, int probabilities) {
 	try {
-		autoStrings thee = HMM_ObservationSequence_to_Strings (me);
-		autoTableOfReal him = Strings_to_TableOfReal_transitions (thee.peek(), probabilities);
-		return him.transfer();
+		autoStrings thee = HMMObservationSequence_to_Strings (me);
+		autoTableOfReal him = Strings_to_TableOfReal_transitions (thee.get(), probabilities);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no transitions created.");
 	}
 }
 
-StringsIndex HMM_and_HMM_ObservationSequence_to_StringsIndex (HMM me, HMM_ObservationSequence thee) {
+autoStringsIndex HMM_and_HMMObservationSequence_to_StringsIndex (HMM me, HMMObservationSequence thee) {
 	try {
 		autoStrings classes = Thing_new (Strings);
 		classes -> strings = NUMvector<char32 *> (1, my numberOfObservationSymbols);
-		for (long is = 1; is <= my numberOfObservationSymbols; is++) {
-			HMM_Observation hmmo = (HMM_Observation) my observationSymbols -> item[is];
-			classes -> strings[is] = Melder_dup (hmmo -> label);
-			(classes -> numberOfStrings) ++;
-		}
-		autoStrings obs = HMM_ObservationSequence_to_Strings (thee);
-		autoStringsIndex him = Stringses_to_StringsIndex (obs.peek(), classes.peek());
-		return him.transfer();
+		for (long is = 1; is <= my numberOfObservationSymbols; is ++) {
+			HMMObservation hmmo = my observationSymbols->at [is];
+			classes -> strings [is] = Melder_dup (hmmo -> label);
+			classes -> numberOfStrings ++;
+		}
+		autoStrings obs = HMMObservationSequence_to_Strings (thee);
+		autoStringsIndex him = Stringses_to_StringsIndex (obs.get(), classes.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no StringsIndex created.");
 	}
 }
 
-StringsIndex HMM_and_HMM_StateSequence_to_StringsIndex (HMM me, HMM_StateSequence thee) {
+autoStringsIndex HMM_and_HMMStateSequence_to_StringsIndex (HMM me, HMMStateSequence thee) {
 	try {
 		autoStrings classes = Thing_new (Strings);
 		classes -> strings = NUMvector<char32 *> (1, my numberOfObservationSymbols);
-		for (long is = 1; is <= my numberOfStates; is++) {
-			HMM_State hmms = (HMM_State) my states -> item[is];
-			classes -> strings[is] = Melder_dup (hmms -> label);
-			(classes -> numberOfStrings) ++;
-		}
-		autoStrings sts = HMM_StateSequence_to_Strings (thee);
-		autoStringsIndex him = Stringses_to_StringsIndex (sts.peek(), classes.peek());
-		return him.transfer();
+		for (long is = 1; is <= my numberOfStates; is ++) {
+			HMMState hmms = my states->at [is];
+			classes -> strings [is] = Melder_dup (hmms -> label);
+			classes -> numberOfStrings ++;
+		}
+		autoStrings sts = HMMStateSequence_to_Strings (thee);
+		autoStringsIndex him = Stringses_to_StringsIndex (sts.get(), classes.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no StringsIndex created.");
 	}
 }
 
-TableOfReal HMM_and_HMM_ObservationSequence_to_TableOfReal_transitions (HMM me, HMM_ObservationSequence thee, int probabilities) {
+autoTableOfReal HMM_and_HMMObservationSequence_to_TableOfReal_transitions (HMM me, HMMObservationSequence thee, int probabilities) {
 	try {
-		autoStringsIndex si = HMM_and_HMM_ObservationSequence_to_StringsIndex (me, thee);
-		autoTableOfReal him = StringsIndex_to_TableOfReal_transitions (si.peek(), probabilities);
-		return him.transfer();
+		autoStringsIndex si = HMM_and_HMMObservationSequence_to_StringsIndex (me, thee);
+		autoTableOfReal him = StringsIndex_to_TableOfReal_transitions (si.get(), probabilities);
+		return him;
 	} catch (MelderError) {
-		Melder_throw (me, U": no transition table created for HMM_ObservationSequence.");
+		Melder_throw (me, U": no transition table created for HMMObservationSequence.");
 	}
 }
 
-TableOfReal HMM_and_HMM_StateSequence_to_TableOfReal_transitions (HMM me, HMM_StateSequence thee, int probabilities) {
+autoTableOfReal HMM_and_HMMStateSequence_to_TableOfReal_transitions (HMM me, HMMStateSequence thee, int probabilities) {
 	try {
-		autoStringsIndex si = HMM_and_HMM_StateSequence_to_StringsIndex (me, thee);
-		autoTableOfReal him = StringsIndex_to_TableOfReal_transitions (si.peek(), probabilities);
-		return him.transfer();
+		autoStringsIndex si = HMM_and_HMMStateSequence_to_StringsIndex (me, thee);
+		autoTableOfReal him = StringsIndex_to_TableOfReal_transitions (si.get(), probabilities);
+		return him;
 	} catch (MelderError) {
-		Melder_throw (me, U": no transition table created for HMM_StateSequence.");
+		Melder_throw (me, U": no transition table created for HMMStateSequence.");
 	}
 }
 
-TableOfReal StringsIndex_to_TableOfReal_transitions (StringsIndex me, int probabilities) {
+autoTableOfReal StringsIndex_to_TableOfReal_transitions (StringsIndex me, int probabilities) {
 	try {
-		long numberOfTypes = my classes -> size;
+		long numberOfTypes = my classes->size;
 
 		autoTableOfReal thee = TableOfReal_create (numberOfTypes + 1, numberOfTypes + 1);
-		for (long i = 1; i <= numberOfTypes; i++) {
-			SimpleString s = (SimpleString) my classes -> item[i];
-			TableOfReal_setRowLabel (thee.peek(), i, s -> string);
-			TableOfReal_setColumnLabel (thee.peek(), i, s -> string);
-		}
-		for (long i = 2; i <= my numberOfElements; i++) {
-			if (my classIndex[i - 1] > 0 && my classIndex[i] > 0) { // a zero is a restart!
-				thy data [my classIndex[i - 1]][my classIndex[i]] ++;
+		for (long i = 1; i <= numberOfTypes; i ++) {
+			SimpleString s = (SimpleString) my classes->at [i];
+			TableOfReal_setRowLabel (thee.get(), i, s -> string);
+			TableOfReal_setColumnLabel (thee.get(), i, s -> string);
+		}
+		for (long i = 2; i <= my numberOfElements; i ++) {
+			if (my classIndex [i - 1] > 0 && my classIndex [i] > 0) { // a zero is a restart!
+				thy data [my classIndex [i-1]] [my classIndex [i]] ++;
 			}
 		}
-		double sum = 0;
-		for (long i = 1; i <= numberOfTypes; i++) {
-			double rowSum = 0, colSum = 0;
-			for (long j = 1; j <= numberOfTypes; j++) {
-				rowSum += thy data[i][j];
+		double sum = 0.0;
+		for (long i = 1; i <= numberOfTypes; i ++) {
+			double rowSum = 0.0, colSum = 0.0;
+			for (long j = 1; j <= numberOfTypes; j ++) {
+				rowSum += thy data [i] [j];
 			}
-			thy data[i][numberOfTypes + 1] = rowSum;
-			for (long j = 1; j <= numberOfTypes; j++) {
-				colSum += thy data[j][i];
+			thy data [i] [numberOfTypes + 1] = rowSum;
+			for (long j = 1; j <= numberOfTypes; j ++) {
+				colSum += thy data [j] [i];
 			}
 			thy data[numberOfTypes + 1][i] = colSum;
 			sum += colSum;
 		}
-		thy data[numberOfTypes + 1][numberOfTypes + 1] = sum;
+		thy data [numberOfTypes + 1] [numberOfTypes + 1] = sum;
 		if (probabilities && sum > 0) {
-			for (long i = 1; i <= numberOfTypes; i++) {
-				if (thy data[i][numberOfTypes + 1] > 0) {
+			for (long i = 1; i <= numberOfTypes; i ++) {
+				if (thy data [i] [numberOfTypes + 1] > 0.0) {
 					for (long j = 1; j <= numberOfTypes; j++) {
-						thy data[i][j] /= thy data[i][numberOfTypes + 1];
+						thy data [i] [j] /= thy data [i] [numberOfTypes + 1];
 					}
 				}
 			}
-			for (long i = 1; i <= numberOfTypes; i++) {
-				thy data[i][numberOfTypes + 1] /= sum;
-				thy data[numberOfTypes + 1][i] /= sum;
+			for (long i = 1; i <= numberOfTypes; i ++) {
+				thy data [i] [numberOfTypes + 1] /= sum;
+				thy data [numberOfTypes + 1] [i] /= sum;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no transition table created.");
 	}
 }
 
-TableOfReal Strings_to_TableOfReal_transitions (Strings me, int probabilities) {
+autoTableOfReal Strings_to_TableOfReal_transitions (Strings me, int probabilities) {
 	try {
 		autoStringsIndex him = Strings_to_StringsIndex (me);
-		autoTableOfReal thee = StringsIndex_to_TableOfReal_transitions (him.peek(), probabilities);
-		return thee.transfer();
+		autoTableOfReal thee = StringsIndex_to_TableOfReal_transitions (him.get(), probabilities);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no transition table created.");
 	}
diff --git a/dwtools/HMM.h b/dwtools/HMM.h
index 35ddc45..e9d89d8 100644
--- a/dwtools/HMM.h
+++ b/dwtools/HMM.h
@@ -2,21 +2,20 @@
 #define _HMM_h_
 /* HMM.h
  *
- * Copyright (C) 2010-2011 David Weenink
+ * Copyright (C) 2010-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Strings_extensions.h"
@@ -26,82 +25,118 @@
 #include "SSCP.h"
 #include "Index.h"
 
+Thing_declare (HMMStateList);
+Thing_declare (HMMObservationList);
+
 #include "HMM_def.h"
-oo_CLASS_CREATE (HMM_State, Data);
-oo_CLASS_CREATE (HMM_Observation, Data);
-oo_CLASS_CREATE (HMM_Viterbi, Data);
-oo_CLASS_CREATE (HMM, Data);
-
-Thing_define (HMM_BaumWelch, Data) {
-	// new data:
-	public:
-		long capacity;
-		long numberOfTimes;
-		long totalNumberOfSequences;
-		long numberOfStates;
-		long numberOfSymbols;
-		double lnProb;
-		double minProb;
-		double **alpha;
-		double **beta;
-		double *scale;
-		double **gamma;
-		double ***xi;
-		double **aij_num, **aij_denom;
-		double **bik_num, **bik_denom;
-	// overridden methods:
-		virtual void v_destroy ();
+
+/********** class HMMStateList **********/
+
+Collection_define (HMMStateList, OrderedOf, HMMState) {
 };
 
-Thing_define (HMM_StateSequence, Strings) {
+/********** class HMMObservationList **********/
+
+Collection_define (HMMObservationList, OrderedOf, HMMObservation) {
 };
 
-Thing_define (HMM_ObservationSequence, Table) {
+/********** class HMMBaumWelch **********/
+
+Thing_define (HMMBaumWelch, Daata) {
+	long capacity;
+	long numberOfTimes;
+	long totalNumberOfSequences;
+	long numberOfStates;
+	long numberOfSymbols;
+	double lnProb;
+	double minProb;
+	double **alpha;
+	double **beta;
+	double *scale;
+	double **gamma;
+	double ***xi;
+	double **aij_num, **aij_denom;
+	double **bik_num, **bik_denom;
+
+	void v_destroy () noexcept
+		override;
+};
+
+Thing_define (HMMStateSequence, Strings) {
+};
+
+Thing_define (HMMObservationSequence, Table) {
 };
 // First column is always a symbol, if only 1 column then symbols only
 
-Thing_define (HMM_ObservationSequences, Collection) {
+Collection_define (HMMObservationSequenceBag, CollectionOf, HMMObservationSequence) {
 };
 
-HMM_ObservationSequence HMM_ObservationSequence_create (long numberOfItems, long dataLength);
-void HMM_ObservationSequence_removeObservation (HMM_ObservationSequence me, long index);
-Strings HMM_ObservationSequence_to_Strings (HMM_ObservationSequence me);
-HMM_ObservationSequence Strings_to_HMM_ObservationSequence (Strings me);
-StringsIndex HMM_ObservationSequence_to_StringsIndex (HMM_ObservationSequence me);
-StringsIndex HMM_and_HMM_ObservationSequence_to_StringsIndex (HMM me, HMM_ObservationSequence thee);
-TableOfReal HMM_ObservationSequence_to_TableOfReal_transitions (HMM_ObservationSequence me, int probabilities);
-TableOfReal HMM_and_HMM_ObservationSequence_to_TableOfReal_transitions (HMM me, HMM_ObservationSequence thee, int probabilities);
+autoHMMObservationSequence HMMObservationSequence_create (long numberOfItems, long dataLength);
+
+void HMMObservationSequence_removeObservation (HMMObservationSequence me, long index);
+
+autoStrings HMMObservationSequence_to_Strings (HMMObservationSequence me);
+
+autoHMMObservationSequence Strings_to_HMMObservationSequence (Strings me);
+
+autoStringsIndex HMMObservationSequence_to_StringsIndex (HMMObservationSequence me);
+
+autoStringsIndex HMM_and_HMMObservationSequence_to_StringsIndex (HMM me, HMMObservationSequence thee);
 
-HMM_ObservationSequences HMM_ObservationSequences_create ();
-long HMM_ObservationSequence_getNumberOfObservations (HMM_ObservationSequence me);
-long HMM_ObservationSequences_getLongestSequence (HMM_ObservationSequences me);
+autoTableOfReal HMMObservationSequence_to_TableOfReal_transitions (HMMObservationSequence me, int probabilities);
 
-TableOfReal HMM_StateSequence_to_TableOfReal_transitions (HMM_StateSequence me);
-TableOfReal HMM_and_HMM_StateSequence_to_TableOfReal_transitions (HMM me, HMM_StateSequence thee, int probabilities);
-HMM_StateSequence HMM_StateSequence_create (long numberOfItems);
-Strings HMM_StateSequence_to_Strings (HMM_StateSequence me);
+autoTableOfReal HMM_and_HMMObservationSequence_to_TableOfReal_transitions (HMM me, HMMObservationSequence thee, int probabilities);
 
-void HMM_State_setLabel (HMM_State me, char32 *label);
+long HMMObservationSequence_getNumberOfObservations (HMMObservationSequence me);
 
+long HMMObservationSequenceBag_getLongestSequence (HMMObservationSequenceBag me);
 
-HMM HMM_create (int leftToRight, long numberOfStates, long numberOfObservationSymbols);
-HMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32 *symbols_string);
-HMM HMM_createContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
+autoTableOfReal HMMStateSequence_to_TableOfReal_transitions (HMMStateSequence me);
+
+autoTableOfReal HMM_and_HMMStateSequence_to_TableOfReal_transitions (HMM me, HMMStateSequence thee, int probabilities);
+
+autoHMMStateSequence HMMStateSequence_create (long numberOfItems);
+
+autoStrings HMMStateSequence_to_Strings (HMMStateSequence me);
+
+void HMMState_setLabel (HMMState me, char32 *label);
+
+
+autoHMM HMM_create (int leftToRight, long numberOfStates, long numberOfObservationSymbols);
+
+autoHMM HMM_createSimple (int leftToRight, const char32 *states_string, const char32 *symbols_string);
+
+autoHMM HMM_createContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
 	long numberOfMixtureComponentsPerSymbol, long componentDimension, long componentStorage);
-HMM HMM_createFullContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
+
+autoHMM HMM_createFullContinuousModel (int leftToRight, long numberOfStates, long numberOfObservationSymbols,
 	long numberOfFeatureStreams, long *dimensionOfStream, long *numberOfGaussiansforStream);
-HMM HMM_createFromHMM_ObservationSequence (HMM_ObservationSequence me, long numberOfStates, int leftToRight);
+
+autoHMM HMM_createFromHMMObservationSequence (HMMObservationSequence me, long numberOfStates, int leftToRight);
+
 void HMM_draw (HMM me, Graphics g, int garnish);
+
 void HMM_drawBackwardProbabilitiesIllustration (Graphics g, bool garnish);
+
 void HMM_drawForwardProbabilitiesIllustration (Graphics g, bool garnish);
+
 void HMM_drawForwardAndBackwardProbabilitiesIllustration (Graphics g, bool garnish);
-void HMM_addObservation (HMM me, thou);
-void HMM_addState (HMM me, thou);
+
+void HMM_addObservation_move (HMM me, autoHMMObservation thee);
+
+void HMM_addState_move (HMM me, autoHMMState thee);
+
 void HMM_setDefaultStates (HMM me);
+
 void HMM_setDefaultObservations (HMM me);
+
 void HMM_setDefaultTransitionProbs (HMM me);
+
 void HMM_setDefaultStartProbs (HMM me);
+
 void HMM_setDefaultEmissionProbs (HMM me);
+
 void HMM_setDefaultMixingProbabilities (HMM me);
 
 void HMM_unExpandPCA (HMM me);
@@ -113,34 +148,48 @@ void HMM_unExpandPCA (HMM me);
 	Set the probabilities. A probability zero value indicates that this p cannot be changed during training/learning.
 */
 void HMM_setTransitionProbabilities (HMM me, long state_number, char32 *state_probs);
+
 void HMM_setEmissionProbabilities (HMM me, long state_number, char32 *emission_probs);
+
 void HMM_setStartProbabilities (HMM me, char32 *probs);
 
+
 double HMM_getProbabilityAtTimeBeingInState (HMM me, long itime, long istate);
+
 double HMM_getProbabilityAtTimeBeingInStateEmittingSymbol (HMM me, long itime, long istate, long isymbol);
+
 double HMM_getExpectedValueOfDurationInState (HMM me, long istate);
+
 double HMM_getProbabilityOfStayingInState (HMM me, long istate, long numberOfTimeUnits);
 
 double HMM_and_HMM_getCrossEntropy (HMM me, HMM thee, long observationLength, int symmetric);
-double HMM_and_HMM_and_HMM_ObservationSequence_getCrossEntropy (HMM me, HMM thee, HMM_ObservationSequence him);
 
+double HMM_and_HMM_and_HMMObservationSequence_getCrossEntropy (HMM me, HMM thee, HMMObservationSequence him);
+
+autoTableOfReal HMM_extractTransitionProbabilities (HMM me);
+
+autoTableOfReal HMM_extractEmissionProbabilities (HMM me);
+
+/* HMM & HMMObservationSequence ****/
+
+autoHMMObservationSequence HMM_to_HMMObservationSequence (HMM me, long initialState, long numberOfItems);
+
+autoHMMStateSequence HMM_and_HMMObservationSequence_to_HMMStateSequence (HMM me, HMMObservationSequence thee);
+
+double HMM_and_HMMStateSequence_getProbability (HMM me, HMMStateSequence thee);
+
+void HMM_and_HMMObservationSequenceBag_learn (HMM me, HMMObservationSequenceBag thee, double delta_lnp, double minProb, int info);
+
+void HMM_and_HMMStateSequence_drawTrellis (HMM me, HMMStateSequence thee, Graphics g, int connect, int garnish);
 
-TableOfReal HMM_extractTransitionProbabilities (HMM me);
-TableOfReal HMM_extractEmissionProbabilities (HMM me);
+double HMM_and_HMMObservationSequence_getProbability (HMM me, HMMObservationSequence thee);
 
-/* HMM & HMM_ObservationSequence ****/
+double HMM_and_HMMObservationSequence_getCrossEntropy (HMM me, HMMObservationSequence thee);
 
-HMM_ObservationSequence HMM_to_HMM_ObservationSequence (HMM me, long initialState, long numberOfItems);
-HMM_StateSequence HMM_and_HMM_ObservationSequence_to_HMM_StateSequence (HMM me, HMM_ObservationSequence thee);
-double HMM_and_HMM_StateSequence_getProbability (HMM me, HMM_StateSequence thee);
-void HMM_and_HMM_ObservationSequences_learn (HMM me, HMM_ObservationSequences thee, double delta_lnp, double minProb);
-void HMM_and_HMM_StateSequence_drawTrellis (HMM me, HMM_StateSequence thee, Graphics g, int connect, int garnish);
-double HMM_and_HMM_ObservationSequence_getProbability (HMM me, HMM_ObservationSequence thee);
-double HMM_and_HMM_ObservationSequence_getCrossEntropy (HMM me, HMM_ObservationSequence thee);
-double HMM_and_HMM_ObservationSequence_getPerplexity (HMM me, HMM_ObservationSequence thee);
+double HMM_and_HMMObservationSequence_getPerplexity (HMM me, HMMObservationSequence thee);
 
 // somewhere else
 void MelderInfo_lnp (double logp);
-TableOfReal Strings_to_TableOfReal_transitions (Strings me, int probabilities);
+autoTableOfReal Strings_to_TableOfReal_transitions (Strings me, int probabilities);
 
 #endif /* _HMM_h_ */
diff --git a/dwtools/HMM_def.h b/dwtools/HMM_def.h
index b0ec3a4..82bd689 100644
--- a/dwtools/HMM_def.h
+++ b/dwtools/HMM_def.h
@@ -1,49 +1,43 @@
 /* HMM_def.h
  *
- * Copyright (C) 2010-2011 David Weenink
+ * Copyright (C) 2010-2011,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- djmw 20100929 Initial definition.
- djmw 20110329 oo_STRINGW -> oo_STRING
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
-#define ooSTRUCT HMM_State
-oo_DEFINE_CLASS (HMM_State, Data)
+#define ooSTRUCT HMMState
+oo_DEFINE_CLASS (HMMState, Daata)
 
 	oo_STRING(label)
 
-oo_END_CLASS(HMM_State)
+oo_END_CLASS(HMMState)
 #undef ooSTRUCT
 
 
-#define ooSTRUCT HMM_Observation
-oo_DEFINE_CLASS (HMM_Observation, Data)
+#define ooSTRUCT HMMObservation
+oo_DEFINE_CLASS (HMMObservation, Daata)
 
 	oo_STRING(label)
-	oo_OBJECT (GaussianMixture, 1, gm)
+	oo_AUTO_OBJECT (GaussianMixture, 1, gm)
 
-oo_END_CLASS(HMM_Observation)
+oo_END_CLASS(HMMObservation)
 #undef ooSTRUCT
 
 
 #define ooSTRUCT HMM
-oo_DEFINE_CLASS (HMM, Data)
+oo_DEFINE_CLASS (HMM, Daata)
 
 	oo_INT (notHidden) // to model a Markov model instead of HMM
 	oo_INT (leftToRight)
@@ -54,8 +48,8 @@ oo_DEFINE_CLASS (HMM, Data)
 	oo_INT (componentStorage)
 	oo_DOUBLE_MATRIX_FROM (transitionProbs, 0, numberOfStates, 1, numberOfStates + 1) // row 0: initial probabilities
 	oo_DOUBLE_MATRIX (emissionProbs, numberOfStates, numberOfObservationSymbols)
-	oo_OBJECT (Ordered, 1, states)
-	oo_OBJECT (Ordered, 1, observationSymbols)
+	oo_AUTO_OBJECT (HMMStateList, 1, states)
+	oo_AUTO_OBJECT (HMMObservationList, 1, observationSymbols)
 
 	#if oo_DECLARING
 		void v_info ()
@@ -66,15 +60,17 @@ oo_END_CLASS(HMM)
 #undef ooSTRUCT
 
 
-#define ooSTRUCT HMM_Viterbi
-oo_DEFINE_CLASS (HMM_Viterbi, Data)
+#define ooSTRUCT HMMViterbi
+oo_DEFINE_CLASS (HMMViterbi, Daata)
+
 	oo_LONG (numberOfTimes)
 	oo_LONG (numberOfStates)
 	oo_DOUBLE (prob)
 	oo_DOUBLE_MATRIX (viterbi, numberOfStates, numberOfTimes)
 	oo_LONG_MATRIX (bp, numberOfStates, numberOfTimes)
 	oo_LONG_VECTOR (path, numberOfTimes)
-oo_END_CLASS(HMM_Viterbi)
+
+oo_END_CLASS(HMMViterbi)
 #undef ooSTRUCT
 
 
diff --git a/dwtools/ICA.cpp b/dwtools/ICA.cpp
index 8e092d4..ae22dde 100644
--- a/dwtools/ICA.cpp
+++ b/dwtools/ICA.cpp
@@ -1,20 +1,19 @@
 /* ICA.c
  *
- * Copyright (C) 2010-2012 David Weenink
+ * Copyright (C) 2010-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -48,6 +47,7 @@ static void NUMdmatrices_multiply_VCVp (double **r, double **v, long nrv, long n
 	}
 }
 
+#if 0
 // matrix multiply R = V'*C*V, V is nrv x ncv, C is ncv x ncv, R is nrv x nrv
 static void NUMdmatrices_multiply_VpCV (double **r, double **v, long nrv, long ncv, double **c, int csym) {
 	for (long i = 1; i <= ncv; i++) {
@@ -67,6 +67,7 @@ static void NUMdmatrices_multiply_VpCV (double **r, double **v, long nrv, long n
 		}
 	}
 }
+#endif
 
 // matrix multiply V*C, V is nrv x ncv, C is ncv x ncc, R is nrv x ncc;
 static void NUMdmatrices_multiply_VC (double **r, double **v, long nrv, long ncv, double **c, long ncc) {
@@ -145,6 +146,7 @@ static double NUMdmatrix_diagonalityMeasure (double **v, long dimension) {
 	return dmsq / (dimension * (dimension - 1));
 }
 
+#if 0
 static double NUMdmatrix_diagonalityIndex (double **v, long dimension) {
 	double dindex = 0;
 	for (long irow = 1; irow <= dimension; irow++) {
@@ -173,18 +175,19 @@ static double NUMdmatrix_diagonalityIndex (double **v, long dimension) {
 	}
 	return dindex;
 }
+#endif
 
 /*
 	This routine is modeled after qdiag.m from Andreas Ziehe, Pavel Laskov, Guido Nolte, Klaus-Robert Müller,
 	A Fast Algorithm for Joint Diagonalization with Non-orthogonal Transformations and its Application to
 	Blind Source Separation, Journal of Machine Learning Research 5 (2004), 777–800.
 */
-static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, CrossCorrelationTables thee, long maxNumberOfIterations, double delta) {
+static void Diagonalizer_and_CrossCorrelationTableList_ffdiag (Diagonalizer me, CrossCorrelationTableList thee, long maxNumberOfIterations, double delta) {
 	try {
 		long iter = 0, dimension = my numberOfRows;
 		double **v = my data;
 
-		autoCrossCorrelationTables ccts = CrossCorrelationTables_and_Diagonalizer_diagonalize (thee, me);
+		autoCrossCorrelationTableList ccts = CrossCorrelationTableList_and_Diagonalizer_diagonalize (thee, me);
 		autoNUMmatrix<double> w (1, dimension, 1, dimension);
 		autoNUMmatrix<double> vnew (1, dimension, 1, dimension);
 		autoNUMmatrix<double> cc (1, dimension, 1, dimension);
@@ -194,21 +197,21 @@ static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, Cro
 		}
 
 		autoMelderProgress progress (U"Simultaneous diagonalization of many CrossCorrelationTables...");
-		double dm_new = CrossCorrelationTables_getDiagonalityMeasure (ccts.peek(), NULL, 0, 0);
+		double dm_new = CrossCorrelationTableList_getDiagonalityMeasure (ccts.get(), nullptr, 0, 0);
 		try {
-			double dm_old, theta = 1, dm_start = dm_new;
+			double dm_old, theta = 1.0, dm_start = dm_new;
 			do {
 				dm_old = dm_new;
 				for (long i = 1; i <= dimension; i++) {
-					for (long j = i + 1; j <= dimension; j++) {
-						double zii = 0, zij = 0, zjj = 0, yij = 0, yji = 0; // zij = zji
-						for (long k = 1; k <= ccts -> size; k++) {
-							CrossCorrelationTable ct = (CrossCorrelationTable) ccts -> item [k];
-							zii += ct -> data[i][i] * ct -> data[i][i];
-							zij += ct -> data[i][i] * ct -> data[j][j];
-							zjj += ct -> data[j][j] * ct -> data[j][j];
-							yij += ct -> data[j][j] * ct -> data[i][j];
-							yji += ct -> data[i][i] * ct -> data[i][j];
+					for (long j = i + 1; j <= dimension; j ++) {
+						double zii = 0.0, zij = 0.0, zjj = 0.0, yij = 0.0, yji = 0.0;   // zij == zji
+						for (long k = 1; k <= ccts->size; k ++) {
+							CrossCorrelationTable ct = ccts->at [k];
+							zii += ct -> data [i] [i] * ct -> data [i] [i];
+							zij += ct -> data [i] [i] * ct -> data [j] [j];
+							zjj += ct -> data [j] [j] * ct -> data [j] [j];
+							yij += ct -> data [j] [j] * ct -> data [i] [j];
+							yji += ct -> data [i] [i] * ct -> data [i] [j];
 						}
 						double denom = zjj * zii - zij * zij;
 						if (denom != 0) {
@@ -217,12 +220,12 @@ static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, Cro
 						}
 					}
 				}
-				double norma = 0;
-				for (long i = 1; i <= dimension; i++) {
-					double normai = 0;
-					for (long j = 1; j <= dimension; j++) {
+				double norma = 0.0;
+				for (long i = 1; i <= dimension; i ++) {
+					double normai = 0.0;
+					for (long j = 1; j <= dimension; j ++) {
 						if (i != j) {
-							normai += fabs (w[i][j]);
+							normai += fabs (w[ i] [j]);
 						}
 					}
 					if (normai > norma) {
@@ -232,16 +235,16 @@ static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, Cro
 				// evaluate the norm
 				if (norma > theta) {
 					double normf = 0;
-					for (long i = 1; i <= dimension; i++)
-						for (long j = 1; j <= dimension; j++)
+					for (long i = 1; i <= dimension; i ++)
+						for (long j = 1; j <= dimension; j ++)
 							if (i != j) {
-								normf += w[i][j] * w[i][j];
+								normf += w [i] [j] * w [i] [j];
 							}
 					double scalef = theta / sqrt (normf);
-					for (long i = 1; i <= dimension; i++) {
-						for (long j = 1; j <= dimension; j++) {
+					for (long i = 1; i <= dimension; i ++) {
+						for (long j = 1; j <= dimension; j ++) {
 							if (i != j) {
-								w[i][j] *= scalef;
+								w [i] [j] *= scalef;
 							}
 						}
 					}
@@ -249,12 +252,12 @@ static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, Cro
 				// update V
 				NUMmatrix_copyElements (v, vnew.peek(), 1, dimension, 1, dimension);
 				NUMdmatrices_multiply_VC (v, w.peek(), dimension, dimension, vnew.peek(), dimension);
-				for (long k = 1; k <= ccts -> size; k++) {
-					CrossCorrelationTable ct = (CrossCorrelationTable) ccts -> item[k];
+				for (long k = 1; k <= ccts->size; k ++) {
+					CrossCorrelationTable ct = ccts->at [k];
 					NUMmatrix_copyElements (ct -> data, cc.peek(), 1, dimension, 1, dimension);
 					NUMdmatrices_multiply_VCVp (ct -> data, w.peek(), dimension, dimension, cc.peek(), 1);
 				}
-				dm_new = CrossCorrelationTables_getDiagonalityMeasure (ccts.peek(), 0, 0, 0);
+				dm_new = CrossCorrelationTableList_getDiagonalityMeasure (ccts.get(), nullptr, 0, 0);
 				iter++;
 				Melder_progress ((double) iter / (double) maxNumberOfIterations, U"Iteration: ", iter, U", measure: ", dm_new, U"\n fractional measure: ", dm_new / dm_start);
 			} while (fabs ((dm_old - dm_new) / dm_new) > delta && iter < maxNumberOfIterations);
@@ -271,11 +274,11 @@ static void Diagonalizer_and_CrossCorrelationTables_ffdiag (Diagonalizer me, Cro
 	R. Vollgraf and K. Obermayer, Quadratic Optimization for Simultaneous
 	Matrix Diagonalization, IEEE Transaction on Signal Processing, 2006,
 */
-static void update_one_column (CrossCorrelationTables me, double **d, double *wp, double *wvec, double scalef, double *work) {
-	long dimension = ( (CrossCorrelationTable) (my item[1])) -> numberOfColumns;
+static void update_one_column (CrossCorrelationTableList me, double **d, double *wp, double *wvec, double scalef, double *work) {
+	long dimension = my at [1] -> numberOfColumns;
 
-	for (long ic = 2; ic <= my size; ic++) { // exclude C0
-		SSCP cov = (SSCP) my item[ic];
+	for (long ic = 2; ic <= my size; ic ++) { // exclude C0
+		SSCP cov = my at [ic];
 		double **c = cov -> data;
 		// m1 = C * wvec
 		for (long i = 1; i <= dimension; i++) {
@@ -294,14 +297,14 @@ static void update_one_column (CrossCorrelationTables me, double **d, double *wp
 	}
 }
 
-static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, CrossCorrelationTables thee, double *cweights, long maxNumberOfIterations, double delta) {
+static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, CrossCorrelationTableList thee, double *cweights, long maxNumberOfIterations, double delta) {
 	try {
-		CrossCorrelationTable c0 = (CrossCorrelationTable) thy item[1];
+		CrossCorrelationTable c0 = thy at [1];
 		double **w = my data;
 		long dimension = c0 -> numberOfColumns;
 
 		autoEigen eigen = Thing_new (Eigen);
-		autoCrossCorrelationTables ccts = Data_copy (thee);
+		autoCrossCorrelationTableList ccts = Data_copy (thee);
 		autoNUMmatrix<double> pinv (1, dimension, 1, dimension);
 		autoNUMmatrix<double> d (1, dimension, 1, dimension);
 		autoNUMmatrix<double> p (1, dimension, 1, dimension);
@@ -325,7 +328,7 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 		// [vb,db] = eig(C0);
 		// P = db^(-1/2)*vb';
 
-		Eigen_initFromSymmetricMatrix (eigen.peek(), c0 -> data, dimension);
+		Eigen_initFromSymmetricMatrix (eigen.get(), c0 -> data, dimension);
 		for (long i = 1; i <= dimension; i++) {
 			if (eigen -> eigenvalues[i] < 0) {
 				Melder_throw (U"Covariance matrix not positive definite, eigenvalue[", i, U"] is negative.");
@@ -338,9 +341,9 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 
 		// P*C[i]*P'
 
-		for (long ic = 1; ic <= thy size; ic++) {
-			CrossCorrelationTable cov1 = (CrossCorrelationTable) thy item[ic];
-			CrossCorrelationTable cov2 = (CrossCorrelationTable) ccts -> item[ic];
+		for (long ic = 1; ic <= thy size; ic ++) {
+			CrossCorrelationTable cov1 = thy at [ic];
+			CrossCorrelationTable cov2 = ccts -> at [ic];
 			NUMdmatrices_multiply_VCVp (cov2 -> data, p.peek(), dimension, dimension, cov1 -> data, 1);
 		}
 
@@ -352,8 +355,8 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 
 		// initialisation for order KN^3
 
-		for (long ic = 2; ic <= thy size; ic++) {
-			CrossCorrelationTable cov = (CrossCorrelationTable) ccts -> item[ic];
+		for (long ic = 2; ic <= thy size; ic ++) {
+			CrossCorrelationTable cov = ccts -> at [ic];
 			// C * W
 			NUMdmatrices_multiply_VC (m1.peek(), cov -> data, dimension, dimension, w, dimension);
 			// D += scalef * M1*M1'
@@ -375,9 +378,9 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 						wvec[i] = w[i][kol];
 					}
 
-					update_one_column (ccts.peek(), d.peek(), cweights, wvec.peek(), -1, mvec.peek());
+					update_one_column (ccts.get(), d.peek(), cweights, wvec.peek(), -1, mvec.peek());
 
-					Eigen_initFromSymmetricMatrix (eigen.peek(), d.peek(), dimension);
+					Eigen_initFromSymmetricMatrix (eigen.get(), d.peek(), dimension);
 
 					// Eigenvalues already sorted; get eigenvector of smallest !
 
@@ -385,7 +388,7 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 						wnew[i] = eigen -> eigenvectors[dimension][i];
 					}
 
-					update_one_column (ccts.peek(), d.peek(), cweights, wnew.peek(), 1, mvec.peek());
+					update_one_column (ccts.get(), d.peek(), cweights, wnew.peek(), 1, mvec.peek());
 					for (long i = 1; i <= dimension; i++) {
 						w[i][kol] = wnew[i];
 					}
@@ -418,16 +421,16 @@ static void Diagonalizer_and_CrossCorrelationTable_qdiag (Diagonalizer me, Cross
 		NUMdmatrices_multiply_VpC (w, wc.peek(), dimension, dimension, p.peek(), dimension); // W = W'*P: final result
 
 		// Calculate the "real" diagonality measure
-	//	double dm = CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure (thee, me, cweights, 1, thy size);
+	//	double dm = CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure (thee, me, cweights, 1, thy size);
 
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": no joint diagonalization (qdiag).");
 	}
 }
 
-void MixingMatrix_and_CrossCorrelationTables_improveUnmixing (MixingMatrix me, CrossCorrelationTables thee, long maxNumberOfIterations, double tol, int method) {
+void MixingMatrix_and_CrossCorrelationTableList_improveUnmixing (MixingMatrix me, CrossCorrelationTableList thee, long maxNumberOfIterations, double tol, int method) {
 	autoDiagonalizer him = MixingMatrix_to_Diagonalizer (me);
-	Diagonalizer_and_CrossCorrelationTables_improveDiagonality (him.peek(), thee, maxNumberOfIterations, tol, method);
+	Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (him.get(), thee, maxNumberOfIterations, tol, method);
 	NUMpseudoInverse (his data, his numberOfRows, his numberOfColumns, my data, 0);
 }
 
@@ -464,7 +467,7 @@ static void NUMcrossCorrelate_rows (double **x, long nrows, long icol1, long ico
 	The cross-correlation between channel i and channel j is defined as
 		sum(k=1..nsamples, (z[i][k] - mean[i])(z[j][k + tau] - mean[j]))*samplingTime
 */
-CrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime, double endTime, double lagStep) {
+autoCrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime, double endTime, double lagStep) {
 	try {
 		if (endTime <= startTime) {
 			startTime = my xmin;
@@ -490,7 +493,7 @@ CrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime
 
 		thy numberOfObservations = nsamples;
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": CrossCorrelationTable not created.");
 	}
@@ -500,7 +503,7 @@ CrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime
  * Both sounds are treated as if their domain runs from 0 to duration.
  * Outside the chosen interval the sounds are assumed to be zero
  */
-CrossCorrelationTable Sounds_to_CrossCorrelationTable_combined (Sound me, Sound thee, double relativeStartTime, double relativeEndTime, double lagStep) {
+autoCrossCorrelationTable Sounds_to_CrossCorrelationTable_combined (Sound me, Sound thee, double relativeStartTime, double relativeEndTime, double lagStep) {
 	try {
 		if (my dx != thy dx) {
 			Melder_throw (U"Sampling frequencies must be equal.");
@@ -536,25 +539,25 @@ CrossCorrelationTable Sounds_to_CrossCorrelationTable_combined (Sound me, Sound
 
 		his numberOfObservations = nsamples;
 
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": CrossCorrelationTable not created.");
 	}
 }
 
-Covariance Sound_to_Covariance_channels (Sound me, double startTime, double endTime) {
+autoCovariance Sound_to_Covariance_channels (Sound me, double startTime, double endTime) {
     try {
         double lagStep = 0.0;
         autoCrossCorrelationTable thee = Sound_to_CrossCorrelationTable (me, startTime, endTime, lagStep);
         autoCovariance him = Thing_new (Covariance);
-        thy structCrossCorrelationTable :: v_copy (him.peek());
-        return him.transfer();
+        thy structCrossCorrelationTable :: v_copy (him.get());
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": no Covariance created.");
     }
 }
 
-CrossCorrelationTables Sound_to_CrossCorrelationTables (Sound me, double startTime, double endTime, double lagStep, long ncovars) {
+autoCrossCorrelationTableList Sound_to_CrossCorrelationTableList (Sound me, double startTime, double endTime, double lagStep, long ncovars) {
 	try {
 		if (lagStep < my dx) {
 			lagStep = my dx;
@@ -566,23 +569,23 @@ CrossCorrelationTables Sound_to_CrossCorrelationTables (Sound me, double startTi
 		if (startTime + ncovars * lagStep >= endTime) {
 			Melder_throw (U"Lag time too large.");
 		}
-		autoCrossCorrelationTables thee = CrossCorrelationTables_create ();
-		for (long i = 1; i <= ncovars; i++) {
+		autoCrossCorrelationTableList thee = CrossCorrelationTableList_create ();
+		for (long i = 1; i <= ncovars; i ++) {
 			double lag = (i - 1) * lagStep;
 			autoCrossCorrelationTable ct = Sound_to_CrossCorrelationTable (me, startTime, endTime, lag);
-			Collection_addItem (thee.peek(), ct.transfer());
+			thy addItem_move (ct.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no CrossCorrelationTables created.");
+		Melder_throw (me, U": no CrossCorrelationTableList created.");
 	}
 }
 
-Sound Sound_to_Sound_BSS (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double tol, int method) {
+autoSound Sound_to_Sound_BSS (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double tol, int method) {
 	try {
 		autoMixingMatrix him = Sound_to_MixingMatrix (me, startTime, endTime, ncovars, lagStep, maxNumberOfIterations, tol, method);
-		autoSound thee = Sound_and_MixingMatrix_unmix (me, him.peek());
-		return thee.transfer();
+		autoSound thee = Sound_and_MixingMatrix_unmix (me, him.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not separated.");
 	}
@@ -592,14 +595,14 @@ Sound Sound_to_Sound_BSS (Sound me, double startTime, double endTime, long ncova
 
 Thing_implement (Diagonalizer, TableOfReal, 0);
 
-Diagonalizer Diagonalizer_create (long dimension) {
+autoDiagonalizer Diagonalizer_create (long dimension) {
 	try {
 		autoDiagonalizer me = Thing_new (Diagonalizer);
-		TableOfReal_init (me.peek(), dimension, dimension);
+		TableOfReal_init (me.get(), dimension, dimension);
 		for (long i = 1; i <= dimension; i++) {
 			my data[i][i] = 1;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Diagonalizer not created.");
 	}
@@ -610,18 +613,18 @@ Diagonalizer Diagonalizer_create (long dimension) {
 
 Thing_implement (MixingMatrix, TableOfReal, 0);
 
-MixingMatrix MixingMatrix_create (long numberOfChannels, long numberOfComponents) {
+autoMixingMatrix MixingMatrix_create (long numberOfChannels, long numberOfComponents) {
 	try {
 		autoMixingMatrix me = Thing_new (MixingMatrix);
-		TableOfReal_init (me.peek(), numberOfChannels, numberOfComponents);
-		MixingMatrix_initializeRandom (me.peek());
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfChannels, numberOfComponents);
+		MixingMatrix_initializeRandom (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MixingMatrix not created.");
 	}
 }
 
-MixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComponents, char32 *elements) {
+autoMixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComponents, char32 *elements) {
 	try {
 		long inum = 1, ntokens = Melder_countTokens (elements);
 		if (ntokens == 0) {
@@ -633,7 +636,7 @@ MixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComp
 
 		// Construct the full matrix from the elements
 		double number;
-		for (char32 *token = Melder_firstToken (elements); token != NULL && inum <= ntokens; token = Melder_nextToken (), inum++) {
+		for (char32 *token = Melder_firstToken (elements); token != nullptr && inum <= ntokens; token = Melder_nextToken (), inum++) {
 			long irow = (inum - 1) / numberOfComponents + 1;
 			long icol = (inum - 1) % numberOfComponents + 1;
 			Interpreter_numericExpression (0, token, &number);
@@ -647,7 +650,7 @@ MixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComp
 				my data[irow][icol] = number; // repeat the last number given!
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MixingMatrix not created.");
 	}
@@ -664,24 +667,24 @@ void MixingMatrix_initializeRandom (MixingMatrix me) {
 /***************** Diagonalizer & MixingMatrix *************************/
 
 
-Diagonalizer MixingMatrix_to_Diagonalizer (MixingMatrix me) {
+autoDiagonalizer MixingMatrix_to_Diagonalizer (MixingMatrix me) {
 	try {
 		if (my numberOfRows != my numberOfColumns) {
 			Melder_throw (U"The number of channels and the number of components must be equal.");
 		}
 		autoDiagonalizer thee = Diagonalizer_create (my numberOfRows);
 		NUMpseudoInverse (my data, my numberOfRows, my numberOfColumns, thy data, 0);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Diagonalizer created.");
 	}
 }
 
-MixingMatrix Diagonalizer_to_MixingMatrix (Diagonalizer me) {
+autoMixingMatrix Diagonalizer_to_MixingMatrix (Diagonalizer me) {
 	try {
 		autoMixingMatrix thee = MixingMatrix_create (my numberOfRows, my numberOfColumns);
 		NUMpseudoInverse (my data, my numberOfRows, my numberOfColumns, thy data, 0);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MixingMatrix created.");
 	}
@@ -689,7 +692,7 @@ MixingMatrix Diagonalizer_to_MixingMatrix (Diagonalizer me) {
 
 /********************* Sound & MixingMatrix ************************************/
 
-Sound Sound_and_MixingMatrix_mix (Sound me, MixingMatrix thee) {
+autoSound Sound_and_MixingMatrix_mix (Sound me, MixingMatrix thee) {
 	try {
 		if (my ny != thy numberOfColumns) {
 			Melder_throw (U"The number of components in the MixingMatrix and the number of channels in the Sound must be equal.");
@@ -704,13 +707,13 @@ Sound Sound_and_MixingMatrix_mix (Sound me, MixingMatrix thee) {
 				his z[i][j] = mix;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not mixed.");
 	}
 }
 
-Sound Sound_and_MixingMatrix_unmix (Sound me, MixingMatrix thee) {
+autoSound Sound_and_MixingMatrix_unmix (Sound me, MixingMatrix thee) {
 	try {
 		if (my ny != thy numberOfRows) {
 			Melder_throw (U"The MixingMatrix and the Sound must have the same number of channels.");
@@ -728,31 +731,31 @@ Sound Sound_and_MixingMatrix_unmix (Sound me, MixingMatrix thee) {
 				his z[i][j] = s;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not unmixed.");
 	}
 }
 
-MixingMatrix Sound_to_MixingMatrix (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double tol, int method) {
+autoMixingMatrix Sound_to_MixingMatrix (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double tol, int method) {
 	try {
-		autoCrossCorrelationTables ccs = Sound_to_CrossCorrelationTables (me, startTime, endTime, lagStep, ncovars);
+		autoCrossCorrelationTableList ccs = Sound_to_CrossCorrelationTableList (me, startTime, endTime, lagStep, ncovars);
 		autoMixingMatrix thee = MixingMatrix_create (my ny, my ny);
-		MixingMatrix_and_CrossCorrelationTables_improveUnmixing (thee.peek(), ccs.peek(), maxNumberOfIterations, tol, method);
-		return thee.transfer();
+		MixingMatrix_and_CrossCorrelationTableList_improveUnmixing (thee.get(), ccs.get(), maxNumberOfIterations, tol, method);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MixingMatrix created.");
 	}
 }
 
-MixingMatrix TableOfReal_to_MixingMatrix (TableOfReal me) {
+autoMixingMatrix TableOfReal_to_MixingMatrix (TableOfReal me) {
 	try {
 		if (my numberOfColumns != my numberOfRows) {
 			Melder_throw (U"Number of rows and columns must be equal.");
 		}
 		autoMixingMatrix thee = Thing_new (MixingMatrix);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to MixingMatrix.");
 	}
@@ -768,17 +771,17 @@ void structCrossCorrelationTable :: v_info () {
 	MelderInfo_writeLine (U"Diagonality measure: ", dm);
 }
 
-CrossCorrelationTable CrossCorrelationTable_create (long dimension) {
+autoCrossCorrelationTable CrossCorrelationTable_create (long dimension) {
 	try {
 		autoCrossCorrelationTable me = Thing_new (CrossCorrelationTable);
-		SSCP_init (me.peek(), dimension, dimension);
-		return me.transfer();
+		SSCP_init (me.get(), dimension, dimension);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CrossCorrelationTable not created.");
 	}
 }
 
-CrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32 *centroid, long numberOfSamples) {
+autoCrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32 *centroid, long numberOfSamples) {
 	try {
 		long dimension = Melder_countTokens (centroid);
 		long ncovars = Melder_countTokens (covars);
@@ -791,13 +794,13 @@ CrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32
 		// Construct the full matrix from the upper-diagonal elements
 
 		long inum = 1, irow = 1;
-		for (char32 *token = Melder_firstToken (covars); token != NULL && inum <= ncovars_wanted; token = Melder_nextToken (), inum++) {
+		for (char32 *token = Melder_firstToken (covars); token != nullptr && inum <= ncovars_wanted; token = Melder_nextToken (), inum++) {
 			double number;
 			long nmissing = (irow - 1) * irow / 2;
 			long inumc = inum + nmissing;
 			irow = (inumc - 1) / dimension + 1;
 			long icol = ( (inumc - 1) % dimension) + 1;
-			Interpreter_numericExpression (NULL, token, &number);
+			Interpreter_numericExpression (nullptr, token, &number);
 			my data[irow][icol] = my data[icol][irow] = number;
 			if (icol == dimension) {
 				irow++;
@@ -805,13 +808,13 @@ CrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32
 		}
 
 		inum = 1;
-		for (char32 *token = Melder_firstToken (centroid); token != NULL && inum <= dimension; token = Melder_nextToken (), inum++) {
+		for (char32 *token = Melder_firstToken (centroid); token != nullptr && inum <= dimension; token = Melder_nextToken (), inum++) {
 			double number;
-			Interpreter_numericExpression (NULL, token, &number);
+			Interpreter_numericExpression (nullptr, token, &number);
 			my centroid[inum] = number;
 		}
 		my numberOfObservations = numberOfSamples;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CrossCorrelationTable not created.");
 	}
@@ -823,29 +826,20 @@ double CrossCorrelationTable_getDiagonalityMeasure (CrossCorrelationTable me) {
 
 /************* CrossCorrelationTables *****************************/
 
-void structCrossCorrelationTables :: v_info () {
-	structOrdered :: v_info ();
-	CrossCorrelationTable thee = (CrossCorrelationTable) item[1];
-	MelderInfo_writeLine (U"  Number of rows and columns: ", thy numberOfRows);
-	for (long i = 1; i <= size; i++) {
-		double dm = CrossCorrelationTable_getDiagonalityMeasure ( (CrossCorrelationTable) item[i]);
-		MelderInfo_writeLine (U"Diagonality measure for item ", i, U": ", dm);
+void structCrossCorrelationTableList :: v_info () {
+	our structThing :: v_info ();
+	MelderInfo_writeLine (U"Contains ", our size, U" CrossCorrelationTable objects");
+	CrossCorrelationTable thee = our at [1];
+	MelderInfo_writeLine (U"Number of rows and columns: ", thy numberOfRows, U" in each CrossCorrelationTable");
+	for (long i = 1; i <= our size; i ++) {
+		double dm = CrossCorrelationTable_getDiagonalityMeasure (our at [i]);
+		MelderInfo_writeLine (U"  Diagonality measure for item ", i, U": ", dm);
 	}
 }
 
-Thing_implement (CrossCorrelationTables, Ordered, 0);
-
-CrossCorrelationTables CrossCorrelationTables_create () {
-	try {
-		autoCrossCorrelationTables me = Thing_new (CrossCorrelationTables);
-		Ordered_init (me.peek(), classCrossCorrelationTable, 30);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"CrossCorrelationTables not created.");
-	}
-}
+Thing_implement (CrossCorrelationTableList, SSCPList, 0);
 
-double CrossCorrelationTables_getDiagonalityMeasure (CrossCorrelationTables me, double *w, long start, long end) {
+double CrossCorrelationTableList_getDiagonalityMeasure (CrossCorrelationTableList me, double *w, long start, long end) {
 	if (start >= end) {
 		start = 1;
 		end = my size;
@@ -857,146 +851,145 @@ double CrossCorrelationTables_getDiagonalityMeasure (CrossCorrelationTables me,
 		end = my size;
 	}
 	long ntables = end - start + 1;
-	long dimension = ( (Covariance) (my item[1]))-> numberOfColumns;
+	long dimension = my at [1] -> numberOfColumns;
 	double dmsq = 0;
-	for (long k = start; k <= end; k++) {
-		CrossCorrelationTable thee = (CrossCorrelationTable) my item[k];
+	for (long k = start; k <= end; k ++) {
+		CrossCorrelationTable thee = my at [k];
 		double dmksq = NUMdmatrix_diagonalityMeasure (thy data, dimension);
-		dmsq += w == NULL ? dmksq / ntables : dmksq * w[k];
+		dmsq += ( w ? dmksq * w [k] : dmksq / ntables );
 	}
 	return dmsq;
 }
 
 /************************** CrossCorrelationTables & Diagonalizer *******************************/
 
-double CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure (CrossCorrelationTables me, Diagonalizer thee, double *w, long start, long end) {
-	autoCrossCorrelationTables him = CrossCorrelationTables_and_Diagonalizer_diagonalize (me, thee);
-	double dm = CrossCorrelationTables_getDiagonalityMeasure (him.peek(), w, start, end);
+double CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure (CrossCorrelationTableList me, Diagonalizer thee, double *w, long start, long end) {
+	autoCrossCorrelationTableList him = CrossCorrelationTableList_and_Diagonalizer_diagonalize (me, thee);
+	double dm = CrossCorrelationTableList_getDiagonalityMeasure (him.get(), w, start, end);
 	return dm;
 }
 
-CrossCorrelationTable CrossCorrelationTable_and_Diagonalizer_diagonalize (CrossCorrelationTable me, Diagonalizer thee) {
+autoCrossCorrelationTable CrossCorrelationTable_and_Diagonalizer_diagonalize (CrossCorrelationTable me, Diagonalizer thee) {
 	try {
 		if (my numberOfRows != thy numberOfRows) {
 			Melder_throw (U"The CrossCorrelationTable and the Diagonalizer matrix dimensions must be equal.");
 		}
 		autoCrossCorrelationTable him = CrossCorrelationTable_create (my numberOfColumns);
 		NUMdmatrices_multiply_VCVp (his data, thy data, my numberOfColumns, my numberOfColumns, my data, 1);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"CrossCorrelationTable not diagonalized.");
 	}
 }
 
-CrossCorrelationTables CrossCorrelationTables_and_Diagonalizer_diagonalize (CrossCorrelationTables me, Diagonalizer thee) {
+autoCrossCorrelationTableList CrossCorrelationTableList_and_Diagonalizer_diagonalize (CrossCorrelationTableList me, Diagonalizer thee) {
 	try {
-		autoCrossCorrelationTables him = CrossCorrelationTables_create ();
-		for (long i = 1; i <= my size; i++) {
-			CrossCorrelationTable item = (CrossCorrelationTable) my item[i];
+		autoCrossCorrelationTableList him = CrossCorrelationTableList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			CrossCorrelationTable item = my at [i];
 			autoCrossCorrelationTable ct = CrossCorrelationTable_and_Diagonalizer_diagonalize (item, thee);
-			Collection_addItem (him.peek(), ct.transfer());
+			his addItem_move (ct.move());
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
-		Melder_throw (U"CrossCorrelationTables not diagonalized.");
+		Melder_throw (U"CrossCorrelationTableList not diagonalized.");
 	}
 }
 
-Diagonalizer CrossCorrelationTables_to_Diagonalizer (CrossCorrelationTables me, long maxNumberOfIterations, double tol, int method) {
+autoDiagonalizer CrossCorrelationTableList_to_Diagonalizer (CrossCorrelationTableList me, long maxNumberOfIterations, double tol, int method) {
 	try {
-		CrossCorrelationTable him = (CrossCorrelationTable) my item[1];
+		Melder_assert (my size > 0);
+		CrossCorrelationTable him = my at [1];
 		autoDiagonalizer thee = Diagonalizer_create (his numberOfColumns);
-		Diagonalizer_and_CrossCorrelationTables_improveDiagonality (thee.peek(), me, maxNumberOfIterations, tol, method);
-		return thee.transfer();
+		Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (thee.get(), me, maxNumberOfIterations, tol, method);
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (U"Diagonalizer not created from CrossCorrelationTables.");
+		Melder_throw (U"Diagonalizer not created from CrossCorrelationTableList.");
 	};
 }
 
-void Diagonalizer_and_CrossCorrelationTables_improveDiagonality (Diagonalizer me, CrossCorrelationTables thee, long maxNumberOfIterations, double tol, int method) {
+void Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (Diagonalizer me, CrossCorrelationTableList thee, long maxNumberOfIterations, double tol, int method) {
 	if (method == 1) {
 		autoNUMvector<double> cweights (1, thy size);
-		for (long i = 1; i <= thy size; i++) {
+		for (long i = 1; i <= thy size; i ++) {
 			cweights[i] = 1.0 / thy size;
 		}
 		Diagonalizer_and_CrossCorrelationTable_qdiag (me, thee, cweights.peek(), maxNumberOfIterations, tol);
 	} else {
-		Diagonalizer_and_CrossCorrelationTables_ffdiag (me, thee, maxNumberOfIterations, tol);
+		Diagonalizer_and_CrossCorrelationTableList_ffdiag (me, thee, maxNumberOfIterations, tol);
 	}
 }
 
-Sound Sound_whitenChannels (Sound me, double varianceFraction) {
+autoSound Sound_whitenChannels (Sound me, double varianceFraction) {
     try {
         autoCovariance cov = Sound_to_Covariance_channels (me, 0.0, 0.0);
-        autoSound thee = Sound_and_Covariance_whitenChannels (me, cov.peek(), varianceFraction);
-        return thee.transfer();
+        autoSound thee = Sound_and_Covariance_whitenChannels (me, cov.get(), varianceFraction);
+        return thee;
     } catch (MelderError) {
         Melder_throw (me, U": not whitened.");
     }
 }
 
-Sound Sound_and_Covariance_whitenChannels (Sound me, Covariance thee, double varianceFraction) {
+autoSound Sound_and_Covariance_whitenChannels (Sound me, Covariance thee, double varianceFraction) {
     try {
         autoPCA pca = SSCP_to_PCA (thee);
-        long numberOfComponents = Eigen_getDimensionOfFraction (pca.peek(), varianceFraction);
-        autoSound him = Sound_and_PCA_whitenChannels (me, pca.peek(), numberOfComponents);
-        return him.transfer ();
+        long numberOfComponents = Eigen_getDimensionOfFraction (pca.get(), varianceFraction);
+        autoSound him = Sound_and_PCA_whitenChannels (me, pca.get(), numberOfComponents);
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": not whitened from ", thee);
     }
 }
 
-
 /*
  * Generate n different cct's that have a common diagonalizer.
  */
-CrossCorrelationTables CrossCorrelationTables_createTestSet (long dimension, long n, int firstPositiveDefinite, double sigma) {
+autoCrossCorrelationTableList CrossCorrelationTableList_createTestSet (long dimension, long n, int firstPositiveDefinite, double sigma) {
 	try {
 		// Start with a square matrix with random gaussian elements and make its singular value decomposition UDV'
 		// The V matrix will be the common diagonalizer matrix that we use.
 
 		autoNUMmatrix<double> d (1, dimension, 1, dimension);
-		for (long i = 1; i <= dimension; i++) { // Generate the rotation matrix
-			for (long j = 1; j <= dimension; j++) {
-				d[i][j] = NUMrandomGauss (0, 1);
+		for (long i = 1; i <= dimension; i ++) { // Generate the rotation matrix
+			for (long j = 1; j <= dimension; j ++) {
+				d [i] [j] = NUMrandomGauss (0.0, 1.0);
 			}
 		}
 		autoNUMmatrix<double> v (1, dimension, 1, dimension);
 		autoSVD svd = SVD_create_d (d.peek(), dimension, dimension);
-		autoCrossCorrelationTables me = CrossCorrelationTables_create ();
+		autoCrossCorrelationTableList me = CrossCorrelationTableList_create ();
 
-		for (long i = 1; i <= dimension; i++) {
-			for (long j = 1; j <= dimension; j++) {
-				d[i][j] = 0;
+		for (long i = 1; i <= dimension; i ++) {
+			for (long j = 1; j <= dimension; j ++) {
+				d [i] [j] = 0.0;
 			}
 		}
 
 		// Start with a diagonal matrix D and calculate V'DV
 
-		for (long k = 1; k <= n; k++) {
+		for (long k = 1; k <= n; k ++) {
 			autoCrossCorrelationTable ct = CrossCorrelationTable_create (dimension);
-			double low = k == 1 && firstPositiveDefinite ? 0.1 : -1;
-			for (long i = 1; i <= dimension; i++) {
-				d[i][i] = NUMrandomUniform (low, 1);
+			double low = ( k == 1 && firstPositiveDefinite ? 0.1 : -1.0 );
+			for (long i = 1; i <= dimension; i ++) {
+				d [i] [i] = NUMrandomUniform (low, 1.0);
 			}
 			for (long i = 1; i <= dimension; i++) {
-				for (long j = 1; j <= dimension; j++) {
-					v[i][j] = NUMrandomGauss (svd -> v[i][j], sigma);
+				for (long j = 1; j <= dimension; j ++) {
+					v [i] [j] = NUMrandomGauss (svd -> v [i] [j], sigma);
 				}
 			}
 			// we need V'DV, however our V has eigenvectors row-wise -> VDV'
 			NUMdmatrices_multiply_VCVp (ct -> data, v.peek(), dimension, dimension, d.peek(), 1);
-            Collection_addItem (me.peek(), ct.transfer());
+            my addItem_move (ct.move());
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"CrossCorrelationTables test set not created.");
+		Melder_throw (U"CrossCorrelationTableList test set not created.");
 	}
 }
 
-static void Sound_and_MixingMatrix_improveUnmixing_fica (Sound me, MixingMatrix thee, long maxNumberOfIterations, double tol, int method) {
-    (void) tol;
-    (void) method;
+#if 0
+static void Sound_and_MixingMatrix_improveUnmixing_fica (Sound me, MixingMatrix thee, long maxNumberOfIterations, double /* tol */, int /* method */) {
 	try {
 		long iter = 0;
 		if (my ny != thy numberOfColumns) {
@@ -1004,10 +997,12 @@ static void Sound_and_MixingMatrix_improveUnmixing_fica (Sound me, MixingMatrix
 		}
 		autoNUMmatrix<double> x (NUMmatrix_copy (my z, 1, my ny, 1, my nx), 1, 1);
 		do {
-			iter++;
+			iter ++;
 		} while (/*fabs((dm_old - dm_new) / dm_new) > tol &&*/ iter < maxNumberOfIterations);
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U" .");
 	}
 }
+#endif
+
 /* End of file ICA.cpp 987*/
diff --git a/dwtools/ICA.h b/dwtools/ICA.h
index f0d2f91..c77f735 100644
--- a/dwtools/ICA.h
+++ b/dwtools/ICA.h
@@ -2,21 +2,20 @@
 #define _ICA_h_
 /* ICA.h
  *
- * Copyright (C) 2010-2014 David Weenink
+ * Copyright (C) 2010-2014,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,13 +37,13 @@ Thing_define (CrossCorrelationTable, SSCP) {
 		override;
 };
 
-Thing_define (CrossCorrelationTables, Ordered) {
+Collection_define (CrossCorrelationTableList, OrderedOf, CrossCorrelationTable) {
 	void v_info ()
 		override;
 };
 
 /*
-	Cell [i,j] of a CrossCorrelationTable contains the cross-correlation between signal i and signal j.
+	Cell [i,j] of a CrossCorrelationTable contains the cross-correlation between signal i and signal j (for one particular lag time).
 	For example, the CrossCorrelation of an n-channel sound is a nxn table where cell [i,j] contains the
 	cross-correlation of channel i with channel j for a particlular lag time tau.
 	In the statistical literature sometimes the cross-correlation between signals is also called "covariance".
@@ -55,66 +54,75 @@ Thing_define (CrossCorrelationTables, Ordered) {
 	2. The elements c[i][j] in a Covariance always satisfy |c[i][j]/sqrt(c[i][i]*c[j][j])| <= 1, this is
 	  in general not the case for cross-correlations.
 */
-CrossCorrelationTable CrossCorrelationTable_create (long dimension);
-CrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32 *centroid, long numberOfSamples);
+
+autoCrossCorrelationTable CrossCorrelationTable_create (long dimension);
+
+autoCrossCorrelationTable CrossCorrelationTable_createSimple (char32 *covars, char32 *centroid, long numberOfSamples);
 
 /* (sum(i,j=1..dimension, i!=j; C[i][j]^2))/(dimension*(dimension-1)) */
 double CrossCorrelationTable_getDiagonalityMeasure (CrossCorrelationTable me);
-CrossCorrelationTable CrossCorrelationTable_and_Diagonalizer_diagonalize (CrossCorrelationTable me, Diagonalizer thee);
 
-CrossCorrelationTables CrossCorrelationTables_create ();
-double CrossCorrelationTables_getDiagonalityMeasure (CrossCorrelationTables me, double *w, long start, long end);
-double CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure (CrossCorrelationTables me, Diagonalizer thee, double *w, long start, long end);
-CrossCorrelationTables CrossCorrelationTables_createTestSet (long dimension, long n, int firstPositiveDefinite, double sigma);
+autoCrossCorrelationTable CrossCorrelationTable_and_Diagonalizer_diagonalize (CrossCorrelationTable me, Diagonalizer thee);
+
+double CrossCorrelationTableList_getDiagonalityMeasure (CrossCorrelationTableList me, double *w, long start, long end);
+
+double CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure (CrossCorrelationTableList me, Diagonalizer thee, double *w, long start, long end);
+
+autoCrossCorrelationTableList CrossCorrelationTableList_createTestSet (long dimension, long n, int firstPositiveDefinite, double sigma);
 
-MixingMatrix MixingMatrix_create (long numberOfChannels, long numberOfComponents);
-MixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComponents, char32 *elements);
+autoMixingMatrix MixingMatrix_create (long numberOfChannels, long numberOfComponents);
+
+autoMixingMatrix MixingMatrix_createSimple (long numberOfChannels, long numberOfComponents, char32 *elements);
 void MixingMatrix_initializeRandom (MixingMatrix me);
 
-Diagonalizer Diagonalizer_create (long dimension);
+autoDiagonalizer Diagonalizer_create (long dimension);
+
+autoSound Sound_and_MixingMatrix_mix (Sound me, MixingMatrix thee);
 
-Sound Sound_and_MixingMatrix_mix (Sound me, MixingMatrix thee);
-Sound Sound_and_MixingMatrix_unmix (Sound me, MixingMatrix thee);
+autoSound Sound_and_MixingMatrix_unmix (Sound me, MixingMatrix thee);
 
-MixingMatrix Sound_to_MixingMatrix (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double delta_w, int method);
+autoMixingMatrix Sound_to_MixingMatrix (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double delta_w, int method);
 
-Sound Sound_to_Sound_BSS (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double delta_w, int method);
+autoSound Sound_to_Sound_BSS (Sound me, double startTime, double endTime, long ncovars, double lagStep, long maxNumberOfIterations, double delta_w, int method);
 
-Sound Sound_whitenChannels (Sound me, double varianceFraction);
-Sound Sound_and_Covariance_whitenChannels (Sound me, Covariance thee, double varianceFraction);
+autoSound Sound_whitenChannels (Sound me, double varianceFraction);
+autoSound Sound_and_Covariance_whitenChannels (Sound me, Covariance thee, double varianceFraction);
 
-void MixingMatrix_and_CrossCorrelationTables_improveUnmixing (MixingMatrix me, CrossCorrelationTables thee, long maxNumberOfIterations, double tol, int method);
+void MixingMatrix_and_CrossCorrelationTableList_improveUnmixing (MixingMatrix me, CrossCorrelationTableList thee, long maxNumberOfIterations, double tol, int method);
 
 /*
 	Determine the matrix that diagonalizes a series of CrossCorrelationTables as well as possible.
 */
-Diagonalizer CrossCorrelationTables_to_Diagonalizer (CrossCorrelationTables me, long maxNumberOfIterations, double tol, int method);
-void Diagonalizer_and_CrossCorrelationTables_improveDiagonality (Diagonalizer me, CrossCorrelationTables thee, long maxNumberOfIterations, double tol, int method);
+autoDiagonalizer CrossCorrelationTableList_to_Diagonalizer (CrossCorrelationTableList me, long maxNumberOfIterations, double tol, int method);
+
+void Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (Diagonalizer me, CrossCorrelationTableList thee, long maxNumberOfIterations, double tol, int method);
 
 /*
 	Determine V*C[k]*V' for k=1..n, where V is the diagonalizer matrix and C[k} the k-th CrossCorrelationTable.
 */
-CrossCorrelationTables CrossCorrelationTables_and_Diagonalizer_diagonalize (CrossCorrelationTables me, Diagonalizer thee);
+autoCrossCorrelationTableList CrossCorrelationTableList_and_Diagonalizer_diagonalize (CrossCorrelationTableList me, Diagonalizer thee);
 
 
-Diagonalizer MixingMatrix_to_Diagonalizer (MixingMatrix me);
-MixingMatrix Diagonalizer_to_MixingMatrix (Diagonalizer me);
+autoDiagonalizer MixingMatrix_to_Diagonalizer (MixingMatrix me);
+
+autoMixingMatrix Diagonalizer_to_MixingMatrix (Diagonalizer me);
 
 /*
 	For multi-channel "sounds" like EEG signals.
 	The cross-correlation between channel i and channel j is defined as
 		sum(k=1..nsamples; (z[i][k] - mean[i])(z[j][k + lag] - mean[j])) / (nsamples - 1).
 */
-CrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime, double endTime, double lagStep);
-CrossCorrelationTable Sounds_to_CrossCorrelationTable_combined (Sound me, Sound thee, double relativeStartTime, double relativeEndTime, double lagStep);
+autoCrossCorrelationTable Sound_to_CrossCorrelationTable (Sound me, double startTime, double endTime, double lagStep);
+
+autoCrossCorrelationTable Sounds_to_CrossCorrelationTable_combined (Sound me, Sound thee, double relativeStartTime, double relativeEndTime, double lagStep);
 
 // The covariance is the cross-correlation with lag 0.
-Covariance Sound_to_Covariance_channels (Sound me, double startTime, double endTime);
+autoCovariance Sound_to_Covariance_channels (Sound me, double startTime, double endTime);
 /*
 	Determine a CrossCorrelationTable for lags (k-1)*lagStep, where k = 1...n.
 */
-CrossCorrelationTables Sound_to_CrossCorrelationTables (Sound me, double startTime, double endTime, double lagStep, long n);
+autoCrossCorrelationTableList Sound_to_CrossCorrelationTableList (Sound me, double startTime, double endTime, double lagStep, long n);
 
-MixingMatrix TableOfReal_to_MixingMatrix (TableOfReal me);
+autoMixingMatrix TableOfReal_to_MixingMatrix (TableOfReal me);
 
 #endif /*_ICA_h_ */
diff --git a/dwtools/Intensity_extensions.cpp b/dwtools/Intensity_extensions.cpp
index e6c4fce..f5f3676 100644
--- a/dwtools/Intensity_extensions.cpp
+++ b/dwtools/Intensity_extensions.cpp
@@ -1,20 +1,19 @@
 /* Intensity_extensions.cpp
  *
- * Copyright (C) 2007-2011 David Weenink
+ * Copyright (C) 2007-2011 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,16 +37,15 @@ static void IntervalTier_addBoundaryUnsorted (IntervalTier me, long iinterval, d
 	}
 
 	// Modify end time of left label
-	TextInterval ti = (TextInterval) my intervals -> item[iinterval];
+	TextInterval ti = my intervals.at [iinterval];
 	ti -> xmax = time;
 	TextInterval_setText (ti, leftLabel);
 
 	autoTextInterval ti_new = TextInterval_create (time, my xmax, U"");
-	Sorted_addItem_unsorted (my intervals, ti_new.transfer());
+	my intervals. addItem_unsorted_move (ti_new.move());
 }
 
-TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThreshold_dB,
-		double minSilenceDuration, double minSoundingDuration, const char32 *silenceLabel, const char32 *soundingLabel) {
+autoTextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThreshold_dB, double minSilenceDuration, double minSoundingDuration, const char32 *silenceLabel, const char32 *soundingLabel) {
 	try {
 		double duration = my xmax - my xmin, time;
 
@@ -56,10 +54,10 @@ TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThres
 		}
 
 		autoTextGrid thee = TextGrid_create (my xmin, my xmax, U"silences", U"");
-		IntervalTier it = (IntervalTier) thy tiers -> item[1];
-		TextInterval_setText ( (TextInterval) it -> intervals -> item[1], soundingLabel);
+		IntervalTier it = (IntervalTier) thy tiers->at [1];
+		TextInterval_setText (it -> intervals.at [1], soundingLabel);
 		if (minSilenceDuration > duration) {
-			return thee.transfer();
+			return thee;
 		}
 
 		double intensity_max_db, intensity_min_db, xOfMaximum, xOfMinimum;
@@ -67,13 +65,13 @@ TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThres
 		Vector_getMinimumAndX (me, 0, 0, 1, NUM_PEAK_INTERPOLATE_PARABOLIC, &intensity_min_db, &xOfMinimum);
 		double intensity_dbRange = intensity_max_db - intensity_min_db;
 
-		if (intensity_dbRange < 10) Melder_warning (U"The loudest and softest part in your sound only differ by ",
-			        intensity_dbRange, U" dB.");
-
+		if (intensity_dbRange < 10) {
+			Melder_warning (U"The loudest and softest part in your sound only differ by ", intensity_dbRange, U" dB.");
+		}
 		double intensityThreshold = intensity_max_db - fabs (silenceThreshold_dB);
 
 		if (minSilenceDuration > duration || intensityThreshold < intensity_min_db) {
-			return thee.transfer();
+			return thee;
 		}
 
 		int inSilenceInterval = my z[1][1] < intensityThreshold;
@@ -105,8 +103,8 @@ TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThres
 		// (re)label last interval */
 
 		label = inSilenceInterval ? silenceLabel : soundingLabel;
-		TextInterval_setText ( (TextInterval) it -> intervals -> item[iinterval], label);
-		Sorted_sort (it -> intervals);
+		TextInterval_setText (it -> intervals.at [iinterval], label);
+		it -> intervals. sort ();
 
 		// First remove short non-silence intervals in-between silence intervals and
 		// then remove the remaining short silence intervals.
@@ -118,13 +116,13 @@ TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThres
 		IntervalTier_cutIntervals_minimumDuration (it, silenceLabel, minSilenceDuration);
 		IntervalTier_cutIntervalsOnLabelMatch (it, soundingLabel);
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": TextGrid not created.");
 	}
 }
 
-Intensity IntensityTier_to_Intensity (IntensityTier me, double dt) {
+autoIntensity IntensityTier_to_Intensity (IntensityTier me, double dt) {
 	try {
 		long nt = (long) floor ((my xmax - my xmin) / dt);
 		double t1 = 0.5 * dt;
@@ -133,18 +131,18 @@ Intensity IntensityTier_to_Intensity (IntensityTier me, double dt) {
 			double time = t1 + (i - 1) * dt;
 			thy z[1][i] = RealTier_getValueAtTime (me, time);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" no Intensity created.");
 	}
 }
 
-TextGrid IntensityTier_to_TextGrid_detectSilences (IntensityTier me, double dt, double silenceThreshold_dB, double minSilenceDuration,
+autoTextGrid IntensityTier_to_TextGrid_detectSilences (IntensityTier me, double dt, double silenceThreshold_dB, double minSilenceDuration,
 	double minSoundingDuration, const char32 *silenceLabel, const char32 *soundingLabel) {
 	try {
 		autoIntensity intensity = IntensityTier_to_Intensity (me, dt);
-		autoTextGrid thee = Intensity_to_TextGrid_detectSilences (intensity.peek(), silenceThreshold_dB, minSilenceDuration, minSoundingDuration, silenceLabel, soundingLabel);
-		return thee.transfer();
+		autoTextGrid thee = Intensity_to_TextGrid_detectSilences (intensity.get(), silenceThreshold_dB, minSilenceDuration, minSoundingDuration, silenceLabel, soundingLabel);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" no TextGrid created.");
 	}
diff --git a/dwtools/Intensity_extensions.h b/dwtools/Intensity_extensions.h
index 3a2d99a..6f55133 100644
--- a/dwtools/Intensity_extensions.h
+++ b/dwtools/Intensity_extensions.h
@@ -2,21 +2,20 @@
 #define _Intensity_extensions_h_
 /* Intensity_extensions.h
  *
- * Copyright (C) 2006-2011 David Weenink
+ * Copyright (C) 2006-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,7 +28,7 @@
 #include "IntensityTier.h"
 #include "TextGrid.h"
 
-TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThreshold_dB, double minSilenceDuration,
+autoTextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThreshold_dB, double minSilenceDuration,
 	double minSoundingDuration, const char32 *silenceLabel, const char32 *soundingLabel);
 /*
 	Marks "silence" intervals in a sound as intervals in a TextGrid.
@@ -42,9 +41,9 @@ TextGrid Intensity_to_TextGrid_detectSilences (Intensity me, double silenceThres
 	as silences in the IntervalTier.
 */
 
-Intensity IntensityTier_to_Intensity (IntensityTier me, double dt);
+autoIntensity IntensityTier_to_Intensity (IntensityTier me, double dt);
 
-TextGrid IntensityTier_to_TextGrid_detectSilences (IntensityTier me, double dt, double silenceThreshold_dB, double minSilenceDuration,
+autoTextGrid IntensityTier_to_TextGrid_detectSilences (IntensityTier me, double dt, double silenceThreshold_dB, double minSilenceDuration,
 	double minSoundingDuration, const char32 *silenceLabel, const char32 *soundingLabel);
 
 #endif /* _Intensity_extensions_h_ */
diff --git a/dwtools/KlattGrid.cpp b/dwtools/KlattGrid.cpp
index 264945a..61d564f 100644
--- a/dwtools/KlattGrid.cpp
+++ b/dwtools/KlattGrid.cpp
@@ -1,20 +1,19 @@
 /* KlattGrid.cpp
  *
- * Copyright (C) 2008-2014 David Weenink
+ * Copyright (C) 2008-2014 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 /*
   djmw 20080917 Initial version
@@ -84,18 +83,6 @@
  * 
  */
 
-// Prototypes
-
-PointProcess PitchTier_to_PointProcess_flutter (PitchTier pitch, RealTier flutter, double maximumPeriod);
-
-void _Sound_FormantGrid_filterWithOneFormant_inline (Sound me, thou, long iformant, int antiformant);
-
-Sound Sound_VocalTractGrid_CouplingGrid_filter_parallel (Sound me, VocalTractGrid thee, CouplingGrid coupling);
-
-Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTier thee, double samplingFrequency);
-
-Sound KlattGrid_to_Sound_aspiration (KlattGrid me, double samplingFrequency);
-
 #undef MIN
 #undef MAX
 #define MIN(x,y) ((x) < (y) ? (x) : (y))
@@ -114,25 +101,24 @@ Sound KlattGrid_to_Sound_aspiration (KlattGrid me, double samplingFrequency);
 }*/
 
 static void rel_to_abs (double *w, double *ws, long n, double d) {
-	double sum = 0;
-	for (long i = 1; i <= n; i++) { // relative
-		sum += w[i];
+	double sum = 0.0;
+	for (long i = 1; i <= n; i ++) { // relative
+		sum += w [i];
 	}
-	if (sum != 0) {
+	if (sum != 0.0) {
 		double dw = d / sum;
-		sum = 0;
-		for (long i = 1; i <= n; i++) { // to absolute
-			w[i] *= dw;
-			sum += w[i];
-			ws[i] = sum;
+		sum = 0.0;
+		for (long i = 1; i <= n; i ++) { // to absolute
+			w [i] *= dw;
+			sum += w [i];
+			ws [i] = sum;
 		}
 	}
 }
 
-static bool RealTier_valuesInRange (I, double min, double max) {
-	iam (RealTier);
-	for (long i = 1; i <= my points -> size; i++) {
-		RealPoint p = (RealPoint) my points -> item[i];
+static bool RealTier_valuesInRange (RealTier me, double min, double max) {
+	for (long i = 1; i <= my points.size; i ++) {
+		RealPoint p = my points.at [i];
 		if (NUMdefined (min) && p -> value < min) {
 			return false;
 		}
@@ -146,14 +132,14 @@ static bool RealTier_valuesInRange (I, double min, double max) {
 static double PointProcess_getPeriodAtIndex (PointProcess me, long it, double maximumPeriod) {
 	double period = NUMundefined;
 	if (it >= 2) {
-		period = my t[it] - my t[it - 1];
+		period = my t [it] - my t [it - 1];
 		if (period > maximumPeriod) {
 			period = NUMundefined;
 		}
 	}
 	if (period == NUMundefined) {
 		if (it < my nt) {
-			period = my t[it + 1] - my t[it];
+			period = my t [it + 1] - my t [it];
 			if (period > maximumPeriod) {
 				period = NUMundefined;
 			}
@@ -163,37 +149,39 @@ static double PointProcess_getPeriodAtIndex (PointProcess me, long it, double ma
 	return period;
 }
 
-#define UPDATE_TIER RealTier_addPoint (thee.peek(), mytime, myvalue); \
-	lasttime=mytime; myindex++; \
-	if (myindex <= numberOfValues)\
-	{\
-	mypoint = (RealPoint) my points -> item [myindex];\
-	mytime = mypoint -> number; myvalue = mypoint -> value;\
-	}\
-	else mytime = my xmax;\
+#define UPDATE_TIER \
+	RealTier_addPoint (thee.get(), mytime, myvalue); \
+	lasttime = mytime; \
+	myindex ++; \
+	if (myindex <= numberOfValues) { \
+		mypoint = my points.at [myindex]; \
+		mytime = mypoint -> number; \
+		myvalue = mypoint -> value;\
+	} else { \
+		mytime = my xmax; \
+	}
 
-static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, PhonationTier glottis, double openglottis_fadeFraction) {
+static autoRealTier RealTier_updateWithDelta (RealTier me, RealTier delta, PhonationTier glottis, double openglottis_fadeFraction) {
 	try {
 		long myindex = 1;
-		RealPoint mypoint = (RealPoint) my points -> item [myindex];
-		long numberOfValues = my points -> size;
+		RealPoint mypoint = my points.at [myindex];
+		long numberOfValues = my points.size;
 		double mytime = mypoint -> number;
 		double myvalue = mypoint -> value;
 		double lasttime = my xmin - 0.001; // sometime before xmin
 		autoRealTier thee = RealTier_create (my xmin, my xmax);
 
-
-		if (openglottis_fadeFraction <= 0) {
+		if (openglottis_fadeFraction <= 0.0) {
 			openglottis_fadeFraction = 0.0001;
 		}
 		if (openglottis_fadeFraction >= 0.5) {
 			openglottis_fadeFraction = 0.4999;
 		}
 
-		for (long ipoint = 1; ipoint <= glottis -> points -> size; ipoint++) {
-			PhonationPoint point = (PhonationPoint) glottis -> points -> item [ipoint];
-			double t4 = point -> time; // glottis closing
-			double openDuration = point -> te ;
+		for (long ipoint = 1; ipoint <= glottis -> points.size; ipoint++) {
+			PhonationPoint point = glottis -> points.at [ipoint];
+			double t4 = point -> number; // glottis closing
+			double openDuration = point -> te;
 			double t1 = t4 - openDuration;
 			double t2 = t1 + openglottis_fadeFraction * openDuration;
 			double t3 = t4 - openglottis_fadeFraction * openDuration;
@@ -206,7 +194,7 @@ static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, Phonation
 			if (t2 > t1) {
 				// Set new value at t1
 				double myvalue1 = RealTier_getValueAtTime (me, t1);
-				RealTier_addPoint (thee.peek(), t1, myvalue1);
+				RealTier_addPoint (thee.get(), t1, myvalue1);
 				// Add my points between t1 and t2
 				while (mytime > lasttime && mytime < t2) {
 					double dvalue = RealTier_getValueAtTime (delta, mytime);
@@ -223,7 +211,7 @@ static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, Phonation
 			if (NUMdefined (dvalue)) {
 				myvalue2 += dvalue;
 			}
-			RealTier_addPoint (thee.peek(), t2, myvalue2);
+			RealTier_addPoint (thee.get(), t2, myvalue2);
 
 			// Add points between t2 and t3
 
@@ -242,7 +230,7 @@ static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, Phonation
 			if (NUMdefined (dvalue)) {
 				myvalue3 += dvalue;
 			}
-			RealTier_addPoint (thee.peek(), t3, myvalue3);
+			RealTier_addPoint (thee.get(), t3, myvalue3);
 
 			if (t4 > t3) {
 				// Add my points between t3 and t4
@@ -257,10 +245,10 @@ static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, Phonation
 
 				// Set new value at t4
 				double myvalue4 = RealTier_getValueAtTime (me, t4);
-				RealTier_addPoint (thee.peek(), t4, myvalue4);
+				RealTier_addPoint (thee.get(), t4, myvalue4);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not updated with delta.");
 	}
@@ -268,18 +256,18 @@ static RealTier RealTier_updateWithDelta (RealTier me, RealTier delta, Phonation
 
 static bool FormantGrid_isFormantDefined (FormantGrid me, long iformant) {
 	// formant and bandwidth are always in sync
-	RealTier ftier = (RealTier) my formants -> item[iformant];
-	RealTier btier = (RealTier) my bandwidths -> item[iformant];
-	return ftier -> points -> size != 0 and btier -> points -> size != 0;
+	RealTier ftier = my formants.at [iformant];
+	RealTier btier = my bandwidths.at [iformant];
+	return ftier -> points.size > 0 and btier -> points.size > 0;
 }
 
-static bool FormantGrid_Intensities_isFormantDefined (FormantGrid me, Ordered thee, long iformant) {
+static bool FormantGrid_Intensities_isFormantDefined (FormantGrid me, OrderedOf<structIntensityTier>* thee, long iformant) {
 	bool exists = false;
-	if (iformant <= my formants -> size && iformant <= my bandwidths -> size && iformant <= thy size) {
-		RealTier ftier = (RealTier) my formants -> item[iformant];
-		RealTier btier = (RealTier) my bandwidths -> item[iformant];
-		RealTier atier = (RealTier) thy item[iformant];
-		exists = ftier -> points -> size != 0 and btier -> points -> size != 0 and atier -> points -> size != 0;
+	if (iformant <= my formants.size && iformant <= my bandwidths.size && iformant <= thee->size) {
+		RealTier ftier = my formants.at [iformant];
+		RealTier btier = my bandwidths.at [iformant];
+		IntensityTier atier = thy at [iformant];
+		exists = ( ftier -> points.size > 0 && btier -> points.size > 0 && atier -> points.size > 0 );
 	}
 	return exists;
 }
@@ -297,54 +285,54 @@ static void check_formants (long numberOfFormants, long *ifb, long *ife) {
 	}
 }
 
-static Sound Sound_createEmptyMono (double xmin, double xmax, double samplingFrequency) {
+static autoSound Sound_createEmptyMono (double xmin, double xmax, double samplingFrequency) {
 	long nt = (long) ceil ( (xmax - xmin) * samplingFrequency);
 	double dt = 1.0 / samplingFrequency;
-	double tmid = (xmin + xmax) / 2;
+	double tmid = (xmin + xmax) / 2.0;
 	double t1 = tmid - 0.5 * (nt - 1) * dt;
 
 	return Sound_create (1, xmin, xmax, nt, dt, t1);
 }
 
 static void _Sounds_add_inline (Sound me, Sound thee) {
-	for (long i = 1; i <= my nx; i++) {
-		my z[1][i] += thy z[1][i];
+	for (long i = 1; i <= my nx; i ++) {
+		my z [1] [i] += thy z [1] [i];
 	}
 }
 
-static Sound _Sound_diff (Sound me, int scale) {
+static autoSound _Sound_diff (Sound me, int scale) {
 	try {
 		autoSound thee = Data_copy (me);
 
 		// extremum
-		double amax1 = -1.0e34, amax2 = amax1, val, pval = 0;
+		double amax1 = -1.0e34, amax2 = amax1, val, pval = 0.0;
 		if (scale) {
-			for (long i = 1; i <= thy nx; i++) {
-				val = fabs (thy z[1][i]);
+			for (long i = 1; i <= thy nx; i ++) {
+				val = fabs (thy z [1] [i]);
 				if (val > amax1) {
 					amax1 = val;
 				}
 			}
 		}
 		// x[n]-x[n-1]
-		for (long i = 1; i <= thy nx; i++) {
-			val =  thy z[1][i];
-			thy z[1][i] -=  pval;
+		for (long i = 1; i <= thy nx; i ++) {
+			val = thy z [1] [i];
+			thy z [1] [i] -=  pval;
 			pval = val;
 		}
 		if (scale) {
-			for (long i = 1; i <= thy nx; i++) {
-				val = fabs (thy z[1][i]);
+			for (long i = 1; i <= thy nx; i ++) {
+				val = fabs (thy z [1] [i]);
 				if (val > amax2) {
 					amax2 = val;
 				}
 			}
 			// scale
-			for (long i = 1; i <= thy nx; i++) {
-				thy z[1][i] *= amax1 / amax2;
+			for (long i = 1; i <= thy nx; i ++) {
+				thy z [1] [i] *= amax1 / amax2;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not differenced.");
 	}
@@ -367,7 +355,7 @@ typedef struct structconnections {
 } *connections;
 
 static void connections_free (connections me) {
-	if (me == NULL) {
+	if (! me) {
 		return;
 	}
 	NUMvector_free (my x, 1);
@@ -402,31 +390,31 @@ static void NUMcircle_radial_intersection_sq (double x, double y, double r, doub
 	}
 }
 
-static void summer_draw (Graphics g, double x, double y, double r, int alternating) {
+static void summer_draw (Graphics g, double x, double y, double r, bool alternating) {
 	Graphics_setLineWidth (g, 2);
 	Graphics_circle (g, x, y, r);
-	double dy = 3 * r / 4;
+	double dy = 3.0 * r / 4.0;
 	// + symbol
 	if (alternating) {
-		y += r / 4;
+		y += r / 4.0;
 	}
-	Graphics_line (g, x, y + r / 2, x, y - r / 2);
-	Graphics_line (g, x - r / 2, y, x + r / 2, y);
+	Graphics_line (g, x, y + r / 2.0, x, y - r / 2.0);
+	Graphics_line (g, x - r / 2.0, y, x + r / 2.0, y);
 	if (alternating) {
-		Graphics_line (g, x - r / 2, y - dy , x + r / 2, y - dy);
+		Graphics_line (g, x - r / 2.0, y - dy , x + r / 2.0, y - dy);
 	}
 }
 
-static void _summer_drawConnections (Graphics g, double x, double y, double r, connections thee, int arrow, int alternating, double horizontalFraction) {
+static void _summer_drawConnections (Graphics g, double x, double y, double r, connections thee, bool arrow, bool alternating, double horizontalFraction) {
 	summer_draw (g, x, y, r, alternating);
 
-	for (long i = 1; i <= thy numberOfConnections; i++) {
-		double xto, yto, xp = thy x[i], yp = thy y[i];
+	for (long i = 1; i <= thy numberOfConnections; i ++) {
+		double xto, yto, xp = thy x [i], yp = thy y [i];
 		if (horizontalFraction > 0) {
 			double dx = x - xp;
 			if (dx > 0) {
 				xp += horizontalFraction * dx;
-				Graphics_line (g, thy x[i], yp, xp, yp);
+				Graphics_line (g, thy x [i], yp, xp, yp);
 			}
 		}
 		NUMcircle_radial_intersection_sq (x, y, r, xp, yp, &xto, &yto);
@@ -441,42 +429,44 @@ static void _summer_drawConnections (Graphics g, double x, double y, double r, c
 	}
 }
 
-static void summer_drawConnections (Graphics g, double x, double y, double r, connections thee, int arrow, double horizontalFraction) {
-	_summer_drawConnections (g, x, y, r, thee, arrow, 0, horizontalFraction);
+static void summer_drawConnections (Graphics g, double x, double y, double r, connections thee, bool arrow, double horizontalFraction) {
+	_summer_drawConnections (g, x, y, r, thee, arrow, false, horizontalFraction);
 }
 
-static void alternatingSummer_drawConnections (Graphics g, double x, double y, double r, connections thee, int arrow, double horizontalFraction) {
-	_summer_drawConnections (g, x, y, r, thee, arrow, 1, horizontalFraction);
+static void alternatingSummer_drawConnections (Graphics g, double x, double y, double r, connections thee, bool arrow, double horizontalFraction) {
+	_summer_drawConnections (g, x, y, r, thee, arrow, true, horizontalFraction);
 }
 
 static void draw_oneSection (Graphics g, double xmin, double xmax, double ymin, double ymax,
-                             const char32 *line1, const char32 *line2, const char32 *line3) {
-	long numberOfTextLines = 0, iline = 0;
+                             const char32 *line1, const char32 *line2, const char32 *line3)
+{
 	Graphics_rectangle (g, xmin, xmax, ymin, ymax);
-	if (line1 != 0) {
-		numberOfTextLines++;
-	}
-	if (line2 != 0) {
-		numberOfTextLines++;
-	}
-	if (line3 != 0) {
-		numberOfTextLines++;
-	}
-	double y = ymax, dy = (ymax - ymin) / (numberOfTextLines + 1), ddy = dy / 10;
-	double x = (xmax + xmin) / 2;
-	if (line1 != 0) {
-		iline++;
-		y -= dy - (numberOfTextLines == 2 ? ddy : 0); // extra spacing for two lines
+	long numberOfTextLines = 0;
+	if (line1) {
+		numberOfTextLines ++;
+	}
+	if (line2) {
+		numberOfTextLines ++;
+	}
+	if (line3) {
+		numberOfTextLines ++;
+	}
+	double y = ymax, dy = (ymax - ymin) / (numberOfTextLines + 1), ddy = dy / 10.0;
+	double x = (xmax + xmin) / 2.0;
+	long iline = 0;
+	if (line1) {
+		iline ++;
+		y -= dy - ( numberOfTextLines == 2 ? ddy : 0.0 ); // extra spacing for two lines
 		Graphics_text (g, x, y, line1);
 	}
-	if (line2 != 0) {
-		iline++;
-		y -= dy - (numberOfTextLines == 2 ? (iline == 1 ? ddy : -iline * ddy) : 0);
+	if (line2) {
+		iline ++;
+		y -= dy - ( numberOfTextLines == 2 ? ( iline == 1 ? ddy : -iline * ddy ) : 0.0 );
 		Graphics_text (g, x, y, line2);
 	}
-	if (line3 != 0) {
-		iline++;
-		y -= dy - (numberOfTextLines == 2 ? -iline * ddy : 0);
+	if (line3) {
+		iline ++;
+		y -= dy - ( numberOfTextLines == 2 ? -iline * ddy : 0.0 );
 		Graphics_text (g, x, y, line3);
 	}
 }
@@ -486,47 +476,160 @@ static void draw_oneSection (Graphics g, double xmin, double xmax, double ymin,
 // Normal dB's
 #define DB_to_A(x) (pow (10.0, x / 20.0))
 
+/************************ Sound & FormantGrid *********************************************/
+
+static void _Sound_FormantGrid_filterWithOneFormant_inline (Sound me, FormantGrid thee, long iformant, int antiformant) {
+	if (iformant < 1 || iformant > thy formants.size) {
+		Melder_warning (U"Formant ", iformant, U" does not exist.");
+		return;
+	}
+
+	RealTier ftier = thy formants.at [iformant];
+	RealTier btier = thy bandwidths.at [iformant];
+
+	if (ftier -> points.size == 0 && btier -> points.size == 0) {
+		return;
+	} else if (ftier -> points.size == 0 || btier -> points.size == 0) {
+		Melder_throw (U"Empty tier");
+	}
+
+	double nyquist = 0.5 / my dx;
+	autoFilter r;
+	if (antiformant != 0) {
+		r = AntiResonator_create (my dx);
+	} else {
+		r = Resonator_create (my dx, Resonator_NORMALISATION_H0);
+	}
+
+	for (long is = 1; is <= my nx; is ++) {
+		double t = my x1 + (is - 1) * my dx;
+		double f = RealTier_getValueAtTime (ftier, t);
+		double b = RealTier_getValueAtTime (btier, t);
+		if (f <= nyquist && NUMdefined (b)) {
+			Filter_setFB (r.get(), f, b);
+		}
+		my z [1] [is] = Filter_getOutput (r.get(), my z[1][is]);
+	}
+}
+
+void Sound_FormantGrid_filterWithOneAntiFormant_inline (Sound me, FormantGrid thee, long iformant) {
+	_Sound_FormantGrid_filterWithOneFormant_inline (me, thee, iformant, 1);
+}
+
+void Sound_FormantGrid_filterWithOneFormant_inline (Sound me, FormantGrid thee, long iformant) {
+	_Sound_FormantGrid_filterWithOneFormant_inline (me, thee, iformant, 0);
+}
+
+void Sound_FormantGrid_Intensities_filterWithOneFormant_inline (Sound me, FormantGrid thee, OrderedOf<structIntensityTier>* amplitudes, long iformant) {
+	try {
+		if (iformant < 1 || iformant > thy formants.size) {
+			Melder_throw (U"Formant ", iformant, U" not defined. \nThis formant will not be used.");
+		}
+		double nyquist = 0.5 / my dx;
+
+		RealTier ftier = thy formants.at [iformant];
+		RealTier btier = thy bandwidths.at [iformant];
+		IntensityTier atier = amplitudes->at [iformant];
+
+		if (ftier -> points.size == 0 || btier -> points.size == 0 || atier -> points.size == 0) {
+			return;    // nothing to do
+		}
+
+		autoResonator r = Resonator_create (my dx, Resonator_NORMALISATION_HMAX);
+
+		for (long is = 1; is <= my nx; is ++) {
+			double t = my x1 + (is - 1) * my dx;
+			double f = RealTier_getValueAtTime (ftier, t);
+			double b = RealTier_getValueAtTime (btier, t);
+			double a;
+			if (f <= nyquist && NUMdefined (b)) {
+				Filter_setFB (r.get(), f, b);
+				a = RealTier_getValueAtTime (atier, t);
+				if (NUMdefined (a)) {
+					r -> a *= DB_to_A (a);
+				}
+			}
+			my z [1] [is] = Filter_getOutput (r.get(), my z[1][is]);
+		}
+	} catch (MelderError) {
+		Melder_throw (me, U": not filtered with one formant filter.");
+	}
+}
+
+autoSound Sound_FormantGrid_Intensities_filter (Sound me, FormantGrid thee, OrderedOf<structIntensityTier>* amplitudes, long iformantb, long iformante, int alternatingSign) {
+	try {
+		if (iformantb > iformante) {
+			iformantb = 1;
+			iformante = thy formants.size;
+		}
+		if (iformantb < 1 || iformantb > thy formants.size ||
+		        iformante < 1 || iformante > thy formants.size) {
+			Melder_throw (U"No such formant number.");
+		}
+
+		autoSound him = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
+
+		for (long iformant = iformantb; iformant <= iformante; iformant ++) {
+			if (FormantGrid_Intensities_isFormantDefined (thee, amplitudes, iformant)) {
+				autoSound tmp = Data_copy (me);
+				Sound_FormantGrid_Intensities_filterWithOneFormant_inline (tmp.get(), thee, amplitudes, iformant);
+				for (long is = 1; is <= my nx; is ++) {
+					his z [1] [is] += ( alternatingSign >= 0 ? tmp -> z [1] [is] : - tmp -> z [1] [is] );
+				}
+				if (alternatingSign != 0) {
+					alternatingSign = - alternatingSign;
+				}
+			}
+		}
+		return him;
+	} catch (MelderError) {
+		Melder_throw (me, U": not filtered.");
+	}
+}
+
 /********************* PhonationTier ************************/
 
-Thing_implement (PhonationPoint, Data, 0);
+Thing_implement (PhonationPoint, AnyPoint, 0);
 
-PhonationPoint PhonationPoint_create (double time, double period, double openPhase, double collisionPhase, double te,
+autoPhonationPoint PhonationPoint_create (double time, double period, double openPhase, double collisionPhase, double te,
                                       double power1, double power2, double pulseScale) {
 	try {
 		autoPhonationPoint me = Thing_new (PhonationPoint);
-		my time = time; my period = period;
+		my number = time;
+		my period = period;
 		my openPhase = openPhase;
-		my collisionPhase = collisionPhase;	my te = te;
-		my power1 = power1; my power2 = power2;
+		my collisionPhase = collisionPhase;
+		my te = te;
+		my power1 = power1;
+		my power2 = power2;
 		my pulseScale = pulseScale;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PhonationPoint not created.");
 	}
 }
 
-Thing_implement (PhonationTier, Function, 0);
+Thing_implement (PhonationTier, AnyTier, 0);
 
-PhonationTier PhonationTier_create (double tmin, double tmax) {
+autoPhonationTier PhonationTier_create (double tmin, double tmax) {
 	try {
 		autoPhonationTier me = Thing_new (PhonationTier);
-		Function_init (me.peek(), tmin, tmax);
-		my points = SortedSetOfDouble_create ();
-		return me.transfer();
+		Function_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PhonationTier not created.");
 	}
 }
 
-PointProcess PhonationTier_to_PointProcess_closures (PhonationTier me) {
+autoPointProcess PhonationTier_to_PointProcess_closures (PhonationTier me) {
 	try {
-		long nt = my points -> size;
+		long nt = my points.size;
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, nt);
-		for (long ip = 1; ip <= nt; ip++) {
-			PhonationPoint fp = (PhonationPoint) my points -> item[ip];
-			PointProcess_addPoint (thee.peek(), fp -> time);
+		for (long ip = 1; ip <= nt; ip ++) {
+			PhonationPoint fp = my points.at [ip];
+			PointProcess_addPoint (thee.get(), fp -> number);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PointProcess with closure times created.");
 	}
@@ -534,7 +637,7 @@ PointProcess PhonationTier_to_PointProcess_closures (PhonationTier me) {
 
 /********************** PhonationGridPlayOptions **********************/
 
-Thing_implement (PhonationGridPlayOptions, Data, 0);
+Thing_implement (PhonationGridPlayOptions, Daata, 0);
 
 static void PhonationGridPlayOptions_setDefaults (PhonationGridPlayOptions me) {
 	my flowDerivative = my voicing = 1;
@@ -545,10 +648,10 @@ static void PhonationGridPlayOptions_setDefaults (PhonationGridPlayOptions me) {
 	my maximumPeriod = 0;
 }
 
-PhonationGridPlayOptions PhonationGridPlayOptions_create () {
+autoPhonationGridPlayOptions PhonationGridPlayOptions_create () {
 	try {
 		autoPhonationGridPlayOptions me = Thing_new (PhonationGridPlayOptions);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PhonationGridPlayOptions not created.");
 	}
@@ -560,44 +663,44 @@ PhonationGridPlayOptions PhonationGridPlayOptions_create () {
 Thing_implement (PhonationGrid, Function, 0);
 
 void structPhonationGrid :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	const char32 *in1 = U"  ", *in2 = U"    ";
 	MelderInfo_writeLine (in1, U"Time domain:");
 	MelderInfo_writeLine (in2, U"Start time:     ", xmin, U" seconds");
 	MelderInfo_writeLine (in2, U"End time:       ", xmax, U" seconds");
 	MelderInfo_writeLine (in2, U"Total duration: ", xmax - xmin, U" seconds");
 	MelderInfo_writeLine (in1, U"\nNumber of points in the PHONATION tiers:");
-	MelderInfo_writeLine (in2, U"pitch:               ", pitch -> points -> size);
-	MelderInfo_writeLine (in2, U"voicingAmplitude:    ", voicingAmplitude -> points -> size);
-	MelderInfo_writeLine (in2, U"openPhase:           ", openPhase -> points -> size);
-	MelderInfo_writeLine (in2, U"collisionPhase:      ", collisionPhase -> points -> size);
-	MelderInfo_writeLine (in2, U"power1:              ", power1 -> points -> size);
-	MelderInfo_writeLine (in2, U"power2:              ", power2 -> points -> size);
-	MelderInfo_writeLine (in2, U"flutter:             ", flutter -> points -> size);
-	MelderInfo_writeLine (in2, U"doublePulsing:       ", doublePulsing -> points -> size);
-	MelderInfo_writeLine (in2, U"spectralTilt:        ", spectralTilt -> points -> size);
-	MelderInfo_writeLine (in2, U"aspirationAmplitude: ", aspirationAmplitude -> points -> size);
-	MelderInfo_writeLine (in2, U"breathinessAmplitude:", breathinessAmplitude -> points -> size);
+	MelderInfo_writeLine (in2, U"pitch:               ", pitch -> points.size);
+	MelderInfo_writeLine (in2, U"voicingAmplitude:    ", voicingAmplitude -> points.size);
+	MelderInfo_writeLine (in2, U"openPhase:           ", openPhase -> points.size);
+	MelderInfo_writeLine (in2, U"collisionPhase:      ", collisionPhase -> points.size);
+	MelderInfo_writeLine (in2, U"power1:              ", power1 -> points.size);
+	MelderInfo_writeLine (in2, U"power2:              ", power2 -> points.size);
+	MelderInfo_writeLine (in2, U"flutter:             ", flutter -> points.size);
+	MelderInfo_writeLine (in2, U"doublePulsing:       ", doublePulsing -> points.size);
+	MelderInfo_writeLine (in2, U"spectralTilt:        ", spectralTilt -> points.size);
+	MelderInfo_writeLine (in2, U"aspirationAmplitude: ", aspirationAmplitude -> points.size);
+	MelderInfo_writeLine (in2, U"breathinessAmplitude:", breathinessAmplitude -> points.size);
 }
 
 void PhonationGrid_setNames (PhonationGrid me) {
-	Thing_setName (my pitch, U"pitch");
-	Thing_setName (my voicingAmplitude, U"voicingAmplitude");
-	Thing_setName (my openPhase, U"openPhase");
-	Thing_setName (my collisionPhase, U"collisionPhase");
-	Thing_setName (my power1, U"power1");
-	Thing_setName (my power2, U"power2");
-	Thing_setName (my flutter, U"flutter");
-	Thing_setName (my doublePulsing, U"doublePulsing");
-	Thing_setName (my spectralTilt, U"spectralTilt");
-	Thing_setName (my aspirationAmplitude, U"aspirationAmplitude");
-	Thing_setName (my breathinessAmplitude, U"breathinessAmplitude");
-}
-
-PhonationGrid PhonationGrid_create (double tmin, double tmax) {
+	Thing_setName (my pitch.get(), U"pitch");
+	Thing_setName (my voicingAmplitude.get(), U"voicingAmplitude");
+	Thing_setName (my openPhase.get(), U"openPhase");
+	Thing_setName (my collisionPhase.get(), U"collisionPhase");
+	Thing_setName (my power1.get(), U"power1");
+	Thing_setName (my power2.get(), U"power2");
+	Thing_setName (my flutter.get(), U"flutter");
+	Thing_setName (my doublePulsing.get(), U"doublePulsing");
+	Thing_setName (my spectralTilt.get(), U"spectralTilt");
+	Thing_setName (my aspirationAmplitude.get(), U"aspirationAmplitude");
+	Thing_setName (my breathinessAmplitude.get(), U"breathinessAmplitude");
+}
+
+autoPhonationGrid PhonationGrid_create (double tmin, double tmax) {
 	try {
 		autoPhonationGrid me = Thing_new (PhonationGrid);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my pitch = PitchTier_create (tmin, tmax);
 		my voicingAmplitude = IntensityTier_create (tmin, tmax);
 		my openPhase = RealTier_create (tmin, tmax);
@@ -610,100 +713,100 @@ PhonationGrid PhonationGrid_create (double tmin, double tmax) {
 		my aspirationAmplitude = IntensityTier_create (tmin, tmax);
 		my breathinessAmplitude = IntensityTier_create (tmin, tmax);
 		my options = PhonationGridPlayOptions_create ();
-		PhonationGrid_setNames (me.peek());
-		return me.transfer();
+		PhonationGrid_setNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PhonationGrid not created.");
 	}
 }
 
 static void PhonationGrid_checkFlowFunction (PhonationGrid me) {
-	int hasPower1Points = my power1 -> points -> size > 0;
-	int hasPower2Points = my power2 -> points -> size > 0;
+	int hasPower1Points = my power1 -> points.size > 0;
+	int hasPower2Points = my power2 -> points.size > 0;
 
 	long ipoint = 1;
 	do {
-		double time = hasPower1Points ? ( (RealPoint) (my power1 -> points -> item[ipoint])) -> number : 0.5 * (my xmin + my xmax);
-		double power1 = RealTier_getValueAtIndex (my power1, ipoint);
+		double time = ( hasPower1Points ? my power1 -> points.at [ipoint] -> number : 0.5 * (my xmin + my xmax) );
+		double power1 = RealTier_getValueAtIndex (my power1.get(), ipoint);
 		if (power1 == NUMundefined) {
 			power1 = KlattGrid_POWER1_DEFAULT;
 		}
 		if (power1 <= 0) {
 			Melder_throw (U"All power1 values must greater than zero.");
 		}
-		double power2 = RealTier_getValueAtTime (my power2, time);
+		double power2 = RealTier_getValueAtTime (my power2.get(), time);
 		if (power2 == NUMundefined) {
 			power2 = KlattGrid_POWER2_DEFAULT;
 		}
 		if (power2 <= power1) {
 			Melder_throw (U"At all times a power1 value must be smaller than the corresponding power2 value.");
 		}
-	} while (++ipoint < my power1 -> points -> size);
+	} while (++ipoint < my power1 -> points.size);
 
 	// Now check power2 values. This is necessary to catch situations where power2 has a valley:
 	// power1(0) = 3; power2(1)= 4; power2(1)= 4; power2(0.5) = 3;
 
 	ipoint = 1;
 	do {
-		double time = hasPower2Points ? ( (RealPoint) (my power2 -> points -> item[ipoint])) -> number : 0.5 * (my xmin + my xmax);
-		double power2 = RealTier_getValueAtIndex (my power2, ipoint);
+		double time = ( hasPower2Points ? my power2 -> points.at [ipoint] -> number : 0.5 * (my xmin + my xmax) );
+		double power2 = RealTier_getValueAtIndex (my power2.get(), ipoint);
 		if (power2 == NUMundefined) {
 			power2 = KlattGrid_POWER2_DEFAULT;
 		}
-		double power1 = RealTier_getValueAtTime (my power1, time);
+		double power1 = RealTier_getValueAtTime (my power1.get(), time);
 		if (power1 == NUMundefined) {
 			power1 = KlattGrid_POWER1_DEFAULT;
 		}
 		if (power2 <= power1) {
 			Melder_throw (U"At all times the power2 value must be greater than the corresponding power1 value.");
 		}
-	} while (++ipoint < my power2 -> points -> size);
+	} while (++ipoint < my power2 -> points.size);
 }
 
 static void PhonationGrid_draw_inside (PhonationGrid me, Graphics g, double xmin, double xmax, double ymin, double ymax, double dy, double *yout) {
 	// dum voicing conn tilt conn summer
 	(void) me;
-	double xw[6] = { 0, 1, 0.5, 1, 0.5, 0.5 }, xws[6];
+	double xw[6] = { 0.0, 1.0, 0.5, 1.0, 0.5, 0.5 }, xws[6];
 
 	connections thee = connections_create (2);
 
 	rel_to_abs (xw, xws, 5, xmax - xmin);
 
-	dy = (ymax - ymin) / (1 + (dy < 0 ? 0 : dy) + 1);
+	dy = (ymax - ymin) / (1.0 + (dy < 0.0 ? 0.0 : dy) + 1.0);
 
 	double x1 = xmin, x2 = x1 + xw[1];
 	double y2 = ymax, y1 = y2 - dy;
-	draw_oneSection (g, x1, x2, y1, y2, NULL, U"Voicing", 0);
+	draw_oneSection (g, x1, x2, y1, y2, nullptr, U"Voicing", nullptr);
 
 	x1 = x2; x2 = x1 + xw[2];
-	double ymid = (y1 + y2) / 2;
+	double ymid = (y1 + y2) / 2.0;
 	Graphics_line (g, x1, ymid, x2, ymid);
 
 	x1 = x2; x2 = x1 + xw[3];
-	draw_oneSection (g, x1, x2, y1, y2, NULL, U"Tilt", 0);
+	draw_oneSection (g, x1, x2, y1, y2, nullptr, U"Tilt", nullptr);
 
 	thy x[1] = x2; thy y[1] = ymid;
 
-	y2 = y1 - 0.5 * dy; y1 = y2 - dy; ymid = (y1 + y2) / 2;
+	y2 = y1 - 0.5 * dy; y1 = y2 - dy; ymid = (y1 + y2) / 2.0;
 	x2 = xmin + xws[3]; x1 = x2 - 1.5 * xw[3]; // some extra space
-	draw_oneSection (g, x1, x2, y1, y2, NULL, U"Aspiration", 0);
+	draw_oneSection (g, x1, x2, y1, y2, nullptr, U"Aspiration", nullptr);
 
 	thy x[2] = x2; thy y[2] = ymid;
 
-	double r = xw[5] / 2;
-	double xs = xmax - r, ys = (ymax + ymin) / 2;
-	int arrow = 1;
+	double r = xw[5] / 2.0;
+	double xs = xmax - r, ys = (ymax + ymin) / 2.0;
+	bool arrow = true;
 
 	summer_drawConnections (g, xs, ys, r, thee, arrow, 0.4);
 	connections_free (thee);
 
-	if (yout != 0) {
+	if (yout) {
 		*yout = ys;
 	}
 }
 
 void PhonationGrid_draw (PhonationGrid me, Graphics g) {
-	double xmin = 0, xmax2 = 0.9, xmax = 1, ymin = 0, ymax = 1, dy = 0.5, yout;
+	double xmin = 0.0, xmax2 = 0.9, xmax = 1.0, ymin = 0.0, ymax = 1.0, dy = 0.5, yout;
 
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -715,63 +818,63 @@ void PhonationGrid_draw (PhonationGrid me, Graphics g) {
 }
 
 double PhonationGrid_getMaximumPeriod (PhonationGrid me) {
-	double minimumPitch = RealTier_getMinimumValue (my pitch);
-	return 2 / ( (minimumPitch == NUMundefined || minimumPitch == 0) ? (my xmax - my xmin) : minimumPitch);
+	double minimumPitch = RealTier_getMinimumValue (my pitch.get());
+	return 2.0 / ( NUMdefined (minimumPitch) && minimumPitch != 0.0 ? minimumPitch : my xmax - my xmin );
 }
 
-PointProcess PitchTier_to_PointProcess_flutter (PitchTier pitch, RealTier flutter, double maximumPeriod) {
+static autoPointProcess PitchTier_to_PointProcess_flutter (PitchTier pitch, RealTier flutter, double maximumPeriod) {
 	try {
 		autoPointProcess thee = PitchTier_to_PointProcess (pitch);
-		if (flutter == 0) {
-			return thee.transfer();
+		if (! flutter) {
+			return thee;
 		}
 		double tsum = 0;
-		for (long it = 2; it <= thy nt; it++) {
-			double t = thy t[it - 1];
-			double period = thy t[it] - thy t[it - 1];
-			if (period < maximumPeriod && flutter -> points -> size > 0) {
+		for (long it = 2; it <= thy nt; it ++) {
+			double t = thy t [it - 1];
+			double period = thy t [it] - thy t [it - 1];
+			if (period < maximumPeriod && flutter -> points.size > 0) {
 				double fltr = RealTier_getValueAtTime (flutter, t);
 				if (NUMdefined (fltr)) {
 					// newF0 = f0 * (1 + (val / 50) * (sin ... + ...));
-					double newPeriod = period / (1 + (fltr / 50) * (sin (2 * NUMpi * 12.7 * t) + sin (2 * NUMpi * 7.1 * t) + sin (2 * NUMpi * 4.7 * t)));
+					double newPeriod = period / (1.0 + (fltr / 50.0) * (sin (2.0 * NUMpi * 12.7 * t) + sin (2.0 * NUMpi * 7.1 * t) + sin (2.0 * NUMpi * 4.7 * t)));
 					tsum += newPeriod - period;
 				}
 			}
-			thy t[it] += tsum;
+			thy t [it] += tsum;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (pitch, U": no flutter PointProcess created.");
 	}
 }
 
-Sound PhonationGrid_to_Sound_aspiration (PhonationGrid me, double samplingFrequency) {
+autoSound PhonationGrid_to_Sound_aspiration (PhonationGrid me, double samplingFrequency) {
 	try {
 		autoSound thee = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
 
 		// Noise spectrum is tilted down by soft low-pass filter having a pole near
 		// the origin in the z-plane, i.e. y[n] = x[n] + (0.75 * y[n-1])
-		double lastval = 0;
-		if (my aspirationAmplitude -> points -> size > 0) {
-			for (long i = 1; i <= thy nx; i++) {
+		double lastval = 0.0;
+		if (my aspirationAmplitude -> points.size > 0) {
+			for (long i = 1; i <= thy nx; i ++) {
 				double t = thy x1 + (i - 1) * thy dx;
-				double val = NUMrandomUniform (-1, 1);
-				double a = DBSPL_to_A (RealTier_getValueAtTime (my aspirationAmplitude, t));
+				double val = NUMrandomUniform (-1.0, 1.0);
+				double a = DBSPL_to_A (RealTier_getValueAtTime (my aspirationAmplitude.get(), t));
 				if (NUMdefined (a)) {
-					thy z[1][i] = lastval = val + 0.75 * lastval;
+					thy z [1] [i] = lastval = val + 0.75 * lastval;
 					lastval = (val += 0.75 * lastval); // soft low-pass
-					thy z[1][i] = val * a;
+					thy z [1] [i] = val * a;
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no aspiration Sound created.");
 	}
 }
 
 static void Sound_PhonationGrid_spectralTilt_inline (Sound thee, PhonationGrid me) {
-	if (my spectralTilt -> points -> size > 0) {
+	if (my spectralTilt -> points.size > 0) {
 		/* Spectral tilt
 			Filter y[n] = a * x[n] + b * y[n-1] => H(z) = a / (1 - bz^(-1)).
 			We need attenuation, i.e. low-pass. Therefore 0 <= b <= 1.
@@ -782,19 +885,19 @@ static void Sound_PhonationGrid_spectralTilt_inline (Sound thee, PhonationGrid m
 				then b = q -sqrt(q^2 - 1)
 		*/
 
-		double cosf = cos (2 * NUMpi * 3000 * thy dx), ynm1 = 0;  // samplingFrequency > 6000 !
+		double cosf = cos (2.0 * NUMpi * 3000.0 * thy dx), ynm1 = 0.0;  // samplingFrequency > 6000.0 !
 
-		for (long i = 1; i <= thy nx; i++) {
+		for (long i = 1; i <= thy nx; i ++) {
 			double t = thy x1 + (i - 1) * thy dx;
-			double tilt_db = RealTier_getValueAtTime (my spectralTilt, t);
+			double tilt_db = RealTier_getValueAtTime (my spectralTilt.get(), t);
 
 			if (tilt_db > 0) {
-				double d = pow (10, -tilt_db / 10);
-				double q = (1 - d * cosf) / (1 - d);
-				double b = q - sqrt (q * q - 1);
-				double a = 1 - b;
-				thy z[1][i] = a * thy z[1][i] + b * ynm1;
-				ynm1 = thy z[1][i];
+				double d = pow (10.0, -tilt_db / 10.0);
+				double q = (1.0 - d * cosf) / (1.0 - d);
+				double b = q - sqrt (q * q - 1.0);
+				double a = 1.0 - b;
+				thy z [1] [i] = a * thy z [1] [i] + b * ynm1;
+				ynm1 = thy z [1] [i];
 			}
 		}
 	}
@@ -827,11 +930,11 @@ static double get_collisionPoint_x (double n, double m, double collisionPhase) {
 	In all other cases we solve with Newton-Raphson. For these cases we also need the derivative:
 		f'(x)= (m - n)x^(m - n - 1)- a(m - n) / (m + a x)^2
 	*/
-	if (collisionPhase <= 0) {
-		return 1;
+	if (collisionPhase <= 0.0) {
+		return 1.0;
 	}
-	double a = 1 / collisionPhase;
-	if (m - n == 1) {
+	double a = 1.0 / collisionPhase;
+	if (m - n == 1.0) {
 		double b = m - a;
 		double c = - n, y1, y2;
 		long nroots = NUMsolveQuadraticEquation (a, b, c, &y1, &y2);
@@ -844,26 +947,27 @@ static double get_collisionPoint_x (double n, double m, double collisionPhase) {
 		// search in the interval from where the flow is a maximum to 1
 		struct nrfunction_struct nrfs = {n, m, a};
 		double root, xmaxFlow = pow (n / m, 1.0 / (m - n));
-		NUMnrbis (&nrfunction, xmaxFlow, 1, &nrfs, &root); y = root;
+		NUMnrbis (& nrfunction, xmaxFlow, 1.0, & nrfs, & root);
+		y = root;
 	}
 	return y;
 }
 
-PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
+autoPhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 	try {
 		long diplophonicPulseIndex = 0;
-		PhonationGridPlayOptions pp = my options;
+		PhonationGridPlayOptions pp = my options.get();
 
 		PhonationGrid_checkFlowFunction (me);
-		if (my pitch -> points -> size == 0) {
+		if (my pitch -> points.size == 0) {
 			Melder_throw (U"Pitch tier is empty.");
 		}
 
-		if (pp -> maximumPeriod == 0) {
+		if (pp -> maximumPeriod == 0.0) {
 			pp -> maximumPeriod = PhonationGrid_getMaximumPeriod (me);
 		}
 
-		autoPointProcess point = PitchTier_to_PointProcess_flutter (my pitch, (pp -> flutter ? my flutter : 0), pp -> maximumPeriod);
+		autoPointProcess point = PitchTier_to_PointProcess_flutter (my pitch.get(), (pp -> flutter ? my flutter.get() : nullptr), pp -> maximumPeriod);
 
 		autoPhonationTier thee = PhonationTier_create (my xmin, my xmax);
 
@@ -878,10 +982,10 @@ PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 
 		for (long it = 1; it <= point -> nt; it++) {
 			double re, t = point -> t[it];		// the glottis "closing" point
-			double pulseDelay = 0;        // For alternate pulses in case of diplophonia
-			double pulseScale = 1;        // For alternate pulses in case of diplophonia
+			double pulseDelay = 0.0;        // For alternate pulses in case of diplophonia
+			double pulseScale = 1.0;        // For alternate pulses in case of diplophonia
 
-			double period = PointProcess_getPeriodAtIndex (point.peek(), it, pp -> maximumPeriod);
+			double period = PointProcess_getPeriodAtIndex (point.get(), it, pp -> maximumPeriod);
 			if (period == NUMundefined) {
 				period = 0.5 * pp -> maximumPeriod; // Some default value
 			}
@@ -891,15 +995,15 @@ PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 
 			double periodStart = t - period; // point where period starts:
 
-			double collisionPhase = pp -> collisionPhase ? RealTier_getValueAtTime (my collisionPhase, periodStart) : 0;
+			double collisionPhase = pp -> collisionPhase ? RealTier_getValueAtTime (my collisionPhase.get(), periodStart) : 0.0;
 			if (collisionPhase == NUMundefined) {
-				collisionPhase = 0;
+				collisionPhase = 0.0;
 			}
-			double power1 = pp -> flowFunction == 1 ? RealTier_getValueAtTime (my power1, periodStart) : pp -> flowFunction;
+			double power1 = pp -> flowFunction == 1 ? RealTier_getValueAtTime (my power1.get(), periodStart) : pp -> flowFunction;
 			if (power1 == NUMundefined) {
 				power1 = KlattGrid_POWER1_DEFAULT;
 			}
-			double power2 = pp -> flowFunction == 1 ? RealTier_getValueAtTime (my power2, periodStart) : pp -> flowFunction + 1;
+			double power2 = pp -> flowFunction == 1 ? RealTier_getValueAtTime (my power2.get(), periodStart) : pp -> flowFunction + 1;
 			if (power2 == NUMundefined) {
 				power2 = KlattGrid_POWER2_DEFAULT;
 			}
@@ -909,7 +1013,7 @@ PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 				Melder_warning (U"Illegal collision point at t = ", t, U" (power1=", power1, U", power2=", power2, U"colPhase=", collisionPhase, U")");
 			}
 
-			double openPhase = RealTier_getValueAtTime (my openPhase, periodStart);
+			double openPhase = RealTier_getValueAtTime (my openPhase.get(), periodStart);
 			if (openPhase == NUMundefined) {
 				openPhase = KlattGrid_OPENPHASE_DEFAULT;
 			}
@@ -921,25 +1025,25 @@ PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 			// This delay scales to maximally equal the closed phase of the next period.
 			// The doublePulsing scales the amplitudes as well as the delay linearly.
 
-			double doublePulsing = pp -> doublePulsing ? RealTier_getValueAtTime (my doublePulsing, periodStart) : 0;
+			double doublePulsing = pp -> doublePulsing ? RealTier_getValueAtTime (my doublePulsing.get(), periodStart) : 0.0;
 			if (doublePulsing == NUMundefined) {
-				doublePulsing = 0;
+				doublePulsing = 0.0;
 			}
 
-			if (doublePulsing > 0) {
-				diplophonicPulseIndex++;
-				if (diplophonicPulseIndex % 2 == 1) { // the odd one
-					double nextPeriod = PointProcess_getPeriodAtIndex (point.peek(), it + 1, pp -> maximumPeriod);
+			if (doublePulsing > 0.0) {
+				diplophonicPulseIndex ++;
+				if (diplophonicPulseIndex % 2 == 1) {   // the odd-numbered one
+					double nextPeriod = PointProcess_getPeriodAtIndex (point.get(), it + 1, pp -> maximumPeriod);
 					if (nextPeriod == NUMundefined) {
 						nextPeriod = period;
 					}
 					double openPhase2 = KlattGrid_OPENPHASE_DEFAULT;
-					if (my openPhase -> points -> size > 0) {
-						openPhase2 = RealTier_getValueAtTime (my openPhase, t);
+					if (my openPhase -> points.size > 0) {
+						openPhase2 = RealTier_getValueAtTime (my openPhase.get(), t);
 					}
-					double maxDelay = period * (1 - openPhase2);
+					double maxDelay = period * (1.0 - openPhase2);
 					pulseDelay = maxDelay * doublePulsing;
-					pulseScale *= (1 - doublePulsing);
+					pulseScale *= 1.0 - doublePulsing;
 				}
 			} else {
 				diplophonicPulseIndex = 0;
@@ -947,27 +1051,27 @@ PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me) {
 
 			t += pulseDelay;
 			autoPhonationPoint phonationPoint = PhonationPoint_create (t, period, openPhase, collisionPhase, te, power1, power2, pulseScale);
-			AnyTier_addPoint (thee.peek(), phonationPoint.transfer());
+			AnyTier_addPoint_move (thee.get()->asAnyTier(), phonationPoint.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PhonationTier created.");
 	}
 }
 
-Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTier thee, double samplingFrequency) {
+static autoSound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTier thee, double samplingFrequency) {
 	try {
-		PhonationGridPlayOptions p = my options;
+		PhonationGridPlayOptions p = my options.get();
 		double lastVal = NUMundefined;
 
-		if (my voicingAmplitude -> points -> size == 0) {
+		if (my voicingAmplitude -> points.size == 0) {
 			Melder_throw (U"Voicing amplitude tier is empty.");
 		}
 
 		autoSound him = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
-		autoSound breathy = 0;
-		if (p -> breathiness && my breathinessAmplitude -> points -> size > 0) {
-			breathy.reset (Sound_createEmptyMono (my xmin, my xmax, samplingFrequency));
+		autoSound breathy;
+		if (p -> breathiness && my breathinessAmplitude -> points.size > 0) {
+			breathy = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
 		}
 		/*
 			Cycle through the points of the PhonationTier. Each will become a period.
@@ -978,9 +1082,9 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 				Generate the period.
 		*/
 		double *sound = his z[1];
-		for (long it = 1; it <= thy points -> size; it++) {
-			PhonationPoint point = (PhonationPoint) thy points -> item[it];
-			double t = point -> time;		// the glottis "closing" point
+		for (long it = 1; it <= thy points.size; it ++) {
+			PhonationPoint point = thy points.at [it];
+			double t = point -> number;		// the glottis "closing" point
 			double te = point -> te;
 			double period = point -> period; // duration of the current period
 			double openPhase = point -> openPhase;
@@ -997,11 +1101,11 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 			//	i.e. (n/m) = x^(m-n), so xmax = (n/m)^(1/(m-n))
 			//	U(xmax) = x^n (1-x^(m-n)) = (n/m)^(n/(m-n))(1-n/m)
 
-			double amplitude = pulseScale / (pow (power1 / power2, 1 / (power2 / power1 - 1)) * (1 - power1 / power2));
+			double amplitude = pulseScale / (pow (power1 / power2, 1.0 / (power2 / power1 - 1.0)) * (1.0 - power1 / power2));
 
 			// Fill in the samples to the left of the current point.
 
-			long midSample = Sampled_xToLowIndex (him.peek(), t), beginSample;
+			long midSample = Sampled_xToLowIndex (him.get(), t), beginSample;
 			beginSample = midSample - (long) floor (te / his dx);
 			if (beginSample < 1) {
 				beginSample = 0;
@@ -1009,7 +1113,7 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 			if (midSample > his nx) {
 				midSample = his nx;
 			}
-			for (long i = beginSample; i <= midSample; i++) {
+			for (long i = beginSample; i <= midSample; i ++) {
 				double tsamp = his x1 + (i - 1) * his dx;
 				phase = (tsamp - (t - te)) / (period * openPhase);
 				if (phase > 0.0) {
@@ -1021,10 +1125,10 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 					sound[i] += flow;
 
 					// Breathiness only during open part modulated by the flow
-					if (breathy.peek() != 0) {
-						double val = flow * NUMrandomUniform (-1, 1);
-						double a = RealTier_getValueAtTime (my breathinessAmplitude, t);
-						breathy -> z[1][i] += val * DBSPL_to_A (a);
+					if (breathy) {
+						double val = flow * NUMrandomUniform (-1.0, 1.0);
+						double a = RealTier_getValueAtTime (my breathinessAmplitude.get(), t);
+						breathy -> z [1] [i] += val * DBSPL_to_A (a);
 					}
 				}
 			}
@@ -1043,7 +1147,7 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 				double ta = collisionPhase * (period * openPhase);
 				double factorPerSample = exp (- his dx / ta);
 				double value = flow * exp (- (his x1 + midSample * his dx - t) / ta);
-				long endSample = midSample + (long) floor (20 * ta / his dx);
+				long endSample = midSample + (long) floor (20.0 * ta / his dx);
 				if (endSample > his nx) {
 					endSample = his nx;
 				}
@@ -1056,80 +1160,77 @@ Sound PhonationGrid_PhonationTier_to_Sound_voiced (PhonationGrid me, PhonationTi
 
 		// Scale voiced part and add breathiness during open phase
 		if (p -> flowDerivative) {
-			double extremum = Vector_getAbsoluteExtremum (him.peek(), 0, 0, Vector_VALUE_INTERPOLATION_CUBIC);
+			double extremum = Vector_getAbsoluteExtremum (him.get(), 0.0, 0.0, Vector_VALUE_INTERPOLATION_CUBIC);
 			if (! NUMdefined (lastVal)) {
-				lastVal = 0;
+				lastVal = 0.0;
 			}
-			for (long i = 1; i <= his nx; i++) {
-				double val = his z[1][i];
-				his z[1][i] -= lastVal;
+			for (long i = 1; i <= his nx; i ++) {
+				double val = his z [1] [i];
+				his z [1] [i] -= lastVal;
 				lastVal = val;
 			}
-			Vector_scale (him.peek(), extremum);
+			Vector_scale (him.get(), extremum);
 		}
 
-		for (long i = 1; i <= his nx; i++) {
+		for (long i = 1; i <= his nx; i ++) {
 			double t = his x1 + (i - 1) * his dx;
-			his z[1][i] *= DBSPL_to_A (RealTier_getValueAtTime (my voicingAmplitude, t));
-			if (breathy.peek() != 0) {
-				his z[1][i] += breathy -> z[1][i];
+			his z [1] [i] *= DBSPL_to_A (RealTier_getValueAtTime (my voicingAmplitude.get(), t));
+			if (breathy) {
+				his z [1] [i] += breathy -> z [1] [i];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
 
-static Sound PhonationGrid_to_Sound_voiced (PhonationGrid me, double samplingFrequency) {
+static autoSound PhonationGrid_to_Sound_voiced (PhonationGrid me, double samplingFrequency) {
 	try {
 		autoPhonationTier thee = PhonationGrid_to_PhonationTier (me);
-		autoSound him = PhonationGrid_PhonationTier_to_Sound_voiced (me, thee.peek(), samplingFrequency);
-		return him.transfer();
+		return PhonationGrid_PhonationTier_to_Sound_voiced (me, thee.get(), samplingFrequency);
 	} catch (MelderError) {
 		Melder_throw (me, U": no voiced Sound created.");
 	}
 }
 
-static Sound PhonationGrid_to_Sound (PhonationGrid me, CouplingGrid him, double samplingFrequency) {
+static autoSound PhonationGrid_to_Sound (PhonationGrid me, CouplingGrid him, double samplingFrequency) {
 	try {
-		PhonationGridPlayOptions pp = my options;
-		autoSound thee = 0;
+		PhonationGridPlayOptions pp = my options.get();
+		autoSound thee;
 		if (pp -> voicing) {
-			if (him != 0 && his glottis -> points -> size > 0) {
-				thee.reset (PhonationGrid_PhonationTier_to_Sound_voiced (me, his glottis, samplingFrequency));
+			if (him && his glottis -> points.size > 0) {
+				thee = PhonationGrid_PhonationTier_to_Sound_voiced (me, his glottis.get(), samplingFrequency);
 			} else {
-				thee.reset (PhonationGrid_to_Sound_voiced (me, samplingFrequency));
+				thee = PhonationGrid_to_Sound_voiced (me, samplingFrequency);
 			}
 			if (pp -> spectralTilt) {
-				Sound_PhonationGrid_spectralTilt_inline (thee.peek(), me);
+				Sound_PhonationGrid_spectralTilt_inline (thee.get(), me);
 			}
 		}
 		if (pp -> aspiration) {
 			autoSound aspiration = PhonationGrid_to_Sound_aspiration (me, samplingFrequency);
-			if (thee.peek() == 0) {
-				thee.reset (aspiration.transfer());
+			if (thee) {
+				_Sounds_add_inline (thee.get(), aspiration.get());
 			} else {
-				_Sounds_add_inline (thee.peek(), aspiration.peek());
+				thee = aspiration.move();
 			}
 		}
-		if (thee.peek() == 0) {
-			thee.reset (Sound_createEmptyMono (my xmin, my xmax, samplingFrequency));
+		if (! thee) {
+			thee = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
 
-static Ordered formantsAmplitudes_create (double tmin, double tmax, long numberOfFormants) {
+static void formantsAmplitudes_create (OrderedOf<structIntensityTier>* me, double tmin, double tmax, long numberOfFormants) {
 	try {
-		autoOrdered me = Ordered_create ();
-		for (long i = 1; i <= numberOfFormants; i++) {
+		for (long i = 1; i <= numberOfFormants; i ++) {
 			autoIntensityTier a = IntensityTier_create (tmin, tmax);
-			Collection_addItem (me.peek(), a.transfer());
+			me -> addItem_move (a.move());
 		}
-		return me.transfer();
 	} catch (MelderError) {
 		Melder_throw (U"No formants amplitudes created.");
 	};
@@ -1137,21 +1238,21 @@ static Ordered formantsAmplitudes_create (double tmin, double tmax, long numberO
 
 /********************** VocalTractGridPlayOptions **********************/
 
-Thing_implement (VocalTractGridPlayOptions, Data, 0);
+Thing_implement (VocalTractGridPlayOptions, Daata, 0);
 
 static void VocalTractGridPlayOptions_setDefaults (VocalTractGridPlayOptions me, VocalTractGrid thee) {
 	my filterModel = KlattGrid_FILTER_CASCADE;
-	my endOralFormant = MIN (thy oral_formants -> formants -> size, thy oral_formants -> bandwidths -> size);
+	my endOralFormant = MIN (thy oral_formants -> formants.size, thy oral_formants -> bandwidths.size);
 	my startOralFormant = 1;
-	my endNasalFormant = MIN (thy nasal_formants -> formants -> size, thy nasal_formants -> bandwidths -> size);
+	my endNasalFormant = MIN (thy nasal_formants -> formants.size, thy nasal_formants -> bandwidths.size);
 	my startNasalFormant = 1;
-	my endNasalAntiFormant = MIN (thy nasal_antiformants -> formants -> size, thy nasal_antiformants -> bandwidths -> size);
+	my endNasalAntiFormant = MIN (thy nasal_antiformants -> formants.size, thy nasal_antiformants -> bandwidths.size);
 	my startNasalAntiFormant = 1;
 }
 
-VocalTractGridPlayOptions VocalTractGridPlayOptions_create () {
+autoVocalTractGridPlayOptions VocalTractGridPlayOptions_create () {
 	try {
-		VocalTractGridPlayOptions me = Thing_new (VocalTractGridPlayOptions);
+		autoVocalTractGridPlayOptions me = Thing_new (VocalTractGridPlayOptions);
 		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VocalTractGridPlayOptions not created.");
@@ -1161,43 +1262,43 @@ VocalTractGridPlayOptions VocalTractGridPlayOptions_create () {
 /********************** VocalTractGrid ***************************************/
 
 static long FormantGrid_getNumberOfFormantPoints (FormantGrid me, long iformant) {
-	if (iformant < 1 || iformant > my formants -> size) {
+	if (iformant < 1 || iformant > my formants.size) {
 		return -1;
 	}
-	RealTier f = (RealTier) my formants -> item[iformant];
-	return f -> points -> size;
+	RealTier f = my formants.at [iformant];
+	return f -> points.size;
 }
 
 static long FormantGrid_getNumberOfBandwidthPoints (FormantGrid me, long iformant) {
-	if (iformant < 1 || iformant > my bandwidths -> size) {
+	if (iformant < 1 || iformant > my bandwidths.size) {
 		return -1;
 	}
-	RealTier b = (RealTier) my bandwidths -> item[iformant];
-	return b -> points -> size;
+	RealTier b = my bandwidths.at [iformant];
+	return b -> points.size;
 }
 
-static long Ordered_getNumberOfAmplitudePoints (Ordered me, long iformant) {
-	if (me == 0 || iformant < 1 || iformant > my size) {
+static long Ordered_getNumberOfAmplitudePoints (OrderedOf<structIntensityTier>* me, long iformant) {
+	if (! me || iformant < 1 || iformant > me->size) {
 		return -1;
 	}
-	RealTier t = (RealTier) my item[iformant];
-	return t -> points -> size;
+	RealTier t = my at [iformant];
+	return t -> points.size;
 }
 
-static void FormantGrid_info (FormantGrid me, Ordered amplitudes, const char32 *in1, const char32 *in2) {
-	long nformants = my formants -> size;
-	long namplitudes = amplitudes != NULL ? amplitudes -> size : 0;
+static void FormantGrid_info (FormantGrid me, OrderedOf<structIntensityTier>* amplitudes, const char32 *in1, const char32 *in2) {
+	long nformants = my formants.size;
+	long namplitudes = ( amplitudes ? amplitudes->size : 0 );
 	long nmax = MAX (nformants, namplitudes);
 
 	for (long iformant = 1; iformant <= nmax; iformant++) {
 		MelderInfo_writeLine (in1, U"Formant ", iformant, U":");
-		if (iformant <= my formants -> size) {
+		if (iformant <= my formants.size) {
 			long nfp = FormantGrid_getNumberOfFormantPoints (me, iformant);
 			long nbp = FormantGrid_getNumberOfBandwidthPoints (me, iformant);
 			MelderInfo_writeLine (in2, U"formants:   ", (nfp >= 0 ? Melder_integer (nfp) : U"--undefined--"));
 			MelderInfo_writeLine (in2, U"bandwidths: ", (nbp >= 0 ? Melder_integer (nbp) : U"--undefined--"));
 		}
-		if (amplitudes != NULL) {
+		if (amplitudes) {
 			long nap = Ordered_getNumberOfAmplitudePoints (amplitudes, iformant);
 			MelderInfo_writeLine (in2, U"amplitudes: ", (nap >= 0 ? Melder_integer (nap) : U"--undefined--"));
 		}
@@ -1205,57 +1306,57 @@ static void FormantGrid_info (FormantGrid me, Ordered amplitudes, const char32 *
 }
 
 void structVocalTractGrid :: v_info () {
-	structData :: v_info ();
+	our structDaata :: v_info ();
 	const char32 *in1 = U"  ", *in2 = U"    ", *in3 = U"      ";
 	MelderInfo_writeLine (in1, U"Time domain:");
-	MelderInfo_writeLine (in2, U"Start time:     ", xmin, U" seconds");
-	MelderInfo_writeLine (in2, U"End time:       ", xmax, U" seconds");
-	MelderInfo_writeLine (in2, U"Total duration: ", xmax - xmin, U" seconds");
+	MelderInfo_writeLine (in2, U"Start time:     ", our xmin, U" seconds");
+	MelderInfo_writeLine (in2, U"End time:       ", our xmax, U" seconds");
+	MelderInfo_writeLine (in2, U"Total duration: ", our xmax - our xmin, U" seconds");
 	MelderInfo_writeLine (in1, U"\nNumber of points in the ORAL FORMANT tiers:");
-	FormantGrid_info (oral_formants, oral_formants_amplitudes, in2, in3);
+	FormantGrid_info (our oral_formants.get(), & our oral_formants_amplitudes, in2, in3);
 	MelderInfo_writeLine (in1, U"\nNumber of points in the NASAL FORMANT tiers:");
-	FormantGrid_info (nasal_formants, nasal_formants_amplitudes, in2, in3);
+	FormantGrid_info (our nasal_formants.get(), & our nasal_formants_amplitudes, in2, in3);
 	MelderInfo_writeLine (in1, U"\nNumber of points in the NASAL ANTIFORMANT tiers:");
-	FormantGrid_info (nasal_antiformants, NULL, in2, in3);
+	FormantGrid_info (our nasal_antiformants.get(), nullptr, in2, in3);
 }
 
 Thing_implement (VocalTractGrid, Function, 0);
 
 void VocalTractGrid_setNames (VocalTractGrid me) {
-	Thing_setName (my oral_formants, U"oral_formants");
-	Thing_setName (my nasal_formants, U"nasal_formants");
-	Thing_setName (my nasal_antiformants, U"nasal_antiformants");
-	Thing_setName (my oral_formants_amplitudes, U"oral_formants_amplitudes");
-	Thing_setName (my nasal_formants_amplitudes, U"nasal_formants_amplitudes");
+	Thing_setName (my oral_formants.get(), U"oral_formants");
+	Thing_setName (my nasal_formants.get(), U"nasal_formants");
+	Thing_setName (my nasal_antiformants.get(), U"nasal_antiformants");
+	//Thing_setName (my oral_formants_amplitudes.get(), U"oral_formants_amplitudes");
+	//Thing_setName (my nasal_formants_amplitudes.get(), U"nasal_formants_amplitudes");
 }
 
-VocalTractGrid VocalTractGrid_create (double tmin, double tmax, long numberOfFormants,
+autoVocalTractGrid VocalTractGrid_create (double tmin, double tmax, long numberOfFormants,
                                       long numberOfNasalFormants,	long numberOfNasalAntiFormants) {
 	try {
 		autoVocalTractGrid me = Thing_new (VocalTractGrid);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my oral_formants = FormantGrid_createEmpty (tmin, tmax, numberOfFormants);
 		my nasal_formants = FormantGrid_createEmpty (tmin, tmax, numberOfNasalFormants);
 		my nasal_antiformants = FormantGrid_createEmpty (tmin, tmax, numberOfNasalAntiFormants);
-		my oral_formants_amplitudes = formantsAmplitudes_create (tmin, tmax, numberOfFormants);
-		my nasal_formants_amplitudes = formantsAmplitudes_create (tmin, tmax, numberOfNasalFormants);
+		formantsAmplitudes_create (& my oral_formants_amplitudes, tmin, tmax, numberOfFormants);
+		formantsAmplitudes_create (& my nasal_formants_amplitudes, tmin, tmax, numberOfNasalFormants);
 		my options = VocalTractGridPlayOptions_create ();
-		VocalTractGrid_setNames (me.peek());
-		return me.transfer();
+		VocalTractGrid_setNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VocalTractGrid not created.");
 	}
 }
 
 static void VocalTractGrid_CouplingGrid_drawCascade_inline (VocalTractGrid me, CouplingGrid thee, Graphics g, double xmin, double xmax, double ymin, double ymax, double *yin, double *yout) {
-	long numberOfOralFormants = my oral_formants -> formants -> size;
-	long numberOfNasalFormants = my nasal_formants -> formants -> size;
-	long numberOfNasalAntiFormants = my nasal_antiformants -> formants -> size;
-	long numberOfTrachealFormants = thee != NULL ? thy tracheal_formants -> formants -> size : 0;
-	long numberOfTrachealAntiFormants = thee != NULL ? thy tracheal_antiformants -> formants -> size : 0;
-	double x1, y1 = ymin, x2, y2 = ymax, dx, ddx = 0.2, ymid = (y1 + y2) / 2;
-	const char32 *text[6] = { 0, U"TF", U"TAF", U"NF", U"NAF", U""};
-	long nf[6] = {0, numberOfTrachealFormants, numberOfTrachealAntiFormants, numberOfNasalFormants, numberOfNasalAntiFormants, numberOfOralFormants};
+	long numberOfOralFormants = my oral_formants -> formants.size;
+	long numberOfNasalFormants = my nasal_formants -> formants.size;
+	long numberOfNasalAntiFormants = my nasal_antiformants -> formants.size;
+	long numberOfTrachealFormants = thee ? thy tracheal_formants -> formants.size : 0;
+	long numberOfTrachealAntiFormants = thee ? thy tracheal_antiformants -> formants.size : 0;
+	double x1, y1 = ymin, x2, y2 = ymax, dx, ddx = 0.2, ymid = (y1 + y2) / 2.0;
+	const char32 *text [6] = { 0, U"TF", U"TAF", U"NF", U"NAF", U""};
+	long nf[6] = { 0, numberOfTrachealFormants, numberOfTrachealAntiFormants, numberOfNasalFormants, numberOfNasalAntiFormants, numberOfOralFormants };
 	long numberOfXSections = 5, nsx = 0;
 	autoMelderString ff, fb;
 
@@ -1267,21 +1368,21 @@ static void VocalTractGrid_CouplingGrid_drawCascade_inline (VocalTractGrid me, C
 		goto end;
 	}
 
-	for (long isection = 1; isection <= numberOfXSections; isection++) if (nf[isection] > 0) {
-			nsx++;
-		}
+	for (long isection = 1; isection <= numberOfXSections; isection ++) if (nf [isection] > 0) {
+		nsx ++;
+	}
 	dx = (xmax - xmin) / (numberOfFilters  + (nsx - 1) * ddx);
 
 	x1 = xmin;
-	for (long isection = 1; isection <= numberOfXSections; isection++) {
-		long numberOfFormants = nf[isection];
+	for (long isection = 1; isection <= numberOfXSections; isection ++) {
+		long numberOfFormants = nf [isection];
 
 		if (numberOfFormants == 0) {
 			continue;
 		}
 
 		x2 = x1 + dx;
-		for (long i = 1; i <= numberOfFormants; i++) {
+		for (long i = 1; i <= numberOfFormants; i ++) {
 			MelderString_copy (&ff, U"F", i);
 			MelderString_copy (&fb, U"B", i);
 				// ppgb: met Melder_cat kan het misschien ook,
@@ -1303,10 +1404,10 @@ static void VocalTractGrid_CouplingGrid_drawCascade_inline (VocalTractGrid me, C
 		}
 	}
 end:
-	if (yin != 0) {
+	if (yin) {
 		*yin = ymid;
 	}
-	if (yout != 0) {
+	if (yout) {
 		*yout = ymid;
 	}
 }
@@ -1314,35 +1415,35 @@ end:
 static void VocalTractGrid_CouplingGrid_drawParallel_inline (VocalTractGrid me, CouplingGrid thee, Graphics g, double xmin, double xmax, double ymin, double ymax, double dy, double *yin, double *yout) {
 	// (0: filler) (1: hor. line to split) (2: split to diff) (3: diff) (4: diff to split)
 	// (5: split to filter) (6: filters) (7: conn to summer) (8: summer)
-	double xw[9] = { 0, 0.3, 0.2, 1.5, 0.5, 0.5, 1, 0.5, 0.5 }, xws[9];
+	double xw [9] = { 0.0, 0.3, 0.2, 1.5, 0.5, 0.5, 1.0, 0.5, 0.5 }, xws [9];
 	long numberOfXSections = 8, ic = 0, numberOfYSections = 4;
-	long numberOfNasalFormants = my nasal_formants -> formants -> size;
-	long numberOfOralFormants = my oral_formants -> formants -> size;
-	long numberOfTrachealFormants = thee != NULL ? thy tracheal_formants -> formants -> size : 0;
+	long numberOfNasalFormants = my nasal_formants -> formants.size;
+	long numberOfOralFormants = my oral_formants -> formants.size;
+	long numberOfTrachealFormants = thee ? thy tracheal_formants -> formants.size : 0;
 	long numberOfFormants = numberOfNasalFormants + numberOfOralFormants + numberOfTrachealFormants;
-	long numberOfUpperPartFormants = numberOfNasalFormants + (numberOfOralFormants > 0 ? 1 : 0);
+	long numberOfUpperPartFormants = numberOfNasalFormants + ( numberOfOralFormants > 0 ? 1 : 0 );
 	long numberOfLowerPartFormants = numberOfFormants - numberOfUpperPartFormants;
 	double ddy = dy < 0 ? 0 : dy, x1, y1, x2, y2, x3, r, ymid;
-	const char32 *text[5] = { 0, U"Nasal", U"", U"", U"Tracheal"};
-	long nffrom[5] = {0, 1, 1, 2, 1};
-	long nfto[5] = {0, numberOfNasalFormants, (numberOfOralFormants > 0 ? 1 : 0), numberOfOralFormants, numberOfTrachealFormants};
+	const char32 *text[5] = { nullptr, U"Nasal", U"", U"", U"Tracheal" };
+	long nffrom [5] = { 0, 1, 1, 2, 1 };
+	long nfto [5] = { 0, numberOfNasalFormants, ( numberOfOralFormants > 0 ? 1 : 0 ), numberOfOralFormants, numberOfTrachealFormants };
 	autoMelderString fba;
 
 	rel_to_abs (xw, xws, numberOfXSections, xmax - xmin);
 
 	if (numberOfFormants == 0) {
-		y1 = y2 = (ymin + ymax) / 2;
+		y1 = y2 = (ymin + ymax) / 2.0;
 		Graphics_line (g, xmin, y1, xmax, y1);
-		if (yin != NULL) {
+		if (yin) {
 			*yin = y1;
 		}
-		if (yout != NULL) {
+		if (yout) {
 			*yout = y2;
 		}
 		return;
 	}
 
-	dy = (ymax - ymin) / (numberOfFormants * (1 + ddy) - ddy);
+	dy = (ymax - ymin) / (numberOfFormants * (1.0 + ddy) - ddy);
 
 	connections local_in = connections_create (numberOfFormants);
 	connections local_out = connections_create (numberOfFormants);
@@ -1355,15 +1456,17 @@ static void VocalTractGrid_CouplingGrid_drawParallel_inline (VocalTractGrid me,
 		if (ito < ifrom) {
 			continue;
 		}
-		for (long i = ifrom; i <= ito; i++) {
-			y1 = y2 - dy; ymid = (y1 + y2) / 2;
+		for (long i = ifrom; i <= ito; i ++) {
+			y1 = y2 - dy;
+			ymid = (y1 + y2) / 2.0;
 			const char32 *fi = Melder_integer (i);
 			MelderString_copy (&fba, U"A", fi, U" F", fi, U" B", fi);
-			draw_oneSection (g, x1, x2, y1, y2, text[isection], fba.string, NULL);
+			draw_oneSection (g, x1, x2, y1, y2, text[isection], fba.string, nullptr);
 			Graphics_line (g, x3, ymid, x1, ymid); // to the left
-			ic++;
-			local_in -> x[ic] = x3; local_out -> x[ic] = x2;
-			local_in -> y[ic] = local_out -> y[ic] = ymid;
+			ic ++;
+			local_in -> x [ic] = x3;
+			local_out -> x [ic] = x2;
+			local_in -> y [ic] = local_out -> y [ic] = ymid;
 			y2 = y1 - 0.5 * dy;
 		}
 	}
@@ -1373,7 +1476,7 @@ static void VocalTractGrid_CouplingGrid_drawParallel_inline (VocalTractGrid me,
 	if (numberOfUpperPartFormants > 0) {
 		x1 = local_in -> x[numberOfUpperPartFormants]; y1 = local_in -> y[numberOfUpperPartFormants];
 		if (numberOfUpperPartFormants > 1) {
-			Graphics_line (g, x1, y1, local_in -> x[1], local_in -> y[1]);    // vertical
+			Graphics_line (g, x1, y1, local_in -> x [1], local_in -> y [1]);    // vertical
 		}
 		x2 = xmin;
 		if (numberOfLowerPartFormants > 0) {
@@ -1383,36 +1486,40 @@ static void VocalTractGrid_CouplingGrid_drawParallel_inline (VocalTractGrid me,
 	}
 	if (numberOfLowerPartFormants > 0) {
 		long ifrom = numberOfUpperPartFormants + 1;
-		x1 = local_in -> x[ifrom]; y1 = local_in -> y[ifrom]; // at the split
+		x1 = local_in -> x [ifrom];
+		y1 = local_in -> y [ifrom];   // at the split
 		if (numberOfLowerPartFormants > 1) {
 			Graphics_line (g, x1, y1, local_in -> x[numberOfFormants], local_in -> y[numberOfFormants]);    // vertical
 		}
 		x2 = xmin + xws[3]; // right of diff
 		Graphics_line (g, x1, y1, x2, y1); // from vertical to diff
 		x1 = xmin + xws[2]; // left of diff
-		draw_oneSection (g, x1, x2, y1 + 0.5 * dy, y1 - 0.5 * dy, U"Pre-emphasis", NULL, NULL);
+		draw_oneSection (g, x1, x2, y1 + 0.5 * dy, y1 - 0.5 * dy, U"Pre-emphasis", nullptr, nullptr);
 		x2 = x1;
 		if (numberOfUpperPartFormants > 0) {
-			x2 = xmin + xw[1]; y2 = y1; // at split
+			x2 = xmin + xw [1];
+			y2 = y1;   // at split
 			Graphics_line (g, x1, y1, x2, y1); // to split
 			y1 += (1 + ddy) * dy;
 			Graphics_line (g, x2, y2, x2, y1); // vertical
-			y1 -= 0.5 * (1 + ddy) * dy;
+			y1 -= 0.5 * (1.0 + ddy) * dy;
 		}
 		Graphics_line (g, xmin, y1, x2, y1);
 	}
 
-	r = xw[8] / 2;
-	x2 = xmax - r; y2 = (ymin + ymax) / 2;
+	r = xw[8] / 2.0;
+	x2 = xmax - r;
+	y2 = (ymin + ymax) / 2.0;
 
-	alternatingSummer_drawConnections (g, x2, y2, r, local_out, 1, 0.4);
+	alternatingSummer_drawConnections (g, x2, y2, r, local_out, true, 0.4);
 
-	connections_free (local_out); connections_free (local_in);
+	connections_free (local_out);
+	connections_free (local_in);
 
-	if (yin != NULL) {
+	if (yin) {
 		*yin = y1;
 	}
-	if (yout != NULL) {
+	if (yout) {
 		*yout = y2;
 	}
 }
@@ -1424,7 +1531,7 @@ static void VocalTractGrid_CouplingGrid_draw_inside (VocalTractGrid me, Coupling
 }
 
 static void VocalTractGrid_CouplingGrid_draw (VocalTractGrid me, CouplingGrid thee, Graphics g, int filterModel) {
-	double xmin = 0, xmin1 = 0.05, xmax1 = 0.95, xmax = 1, ymin = 0, ymax = 1, dy = 0.5, yin, yout;
+	double xmin = 0.0, xmin1 = 0.05, xmax1 = 0.95, xmax = 1.0, ymin = 0.0, ymax = 1.0, dy = 0.5, yin, yout;
 
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -1436,23 +1543,23 @@ static void VocalTractGrid_CouplingGrid_draw (VocalTractGrid me, CouplingGrid th
 	Graphics_unsetInner (g);
 }
 
-static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
+static autoSound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
 	try {
-		VocalTractGridPlayOptions pv = thy options;
-		CouplingGridPlayOptions pc = coupling -> options;
-		int useOpenGlottisInfo = pc -> openglottis && coupling && coupling -> glottis && coupling -> glottis -> points -> size > 0;
-		FormantGrid oral_formants = thy oral_formants;
-		FormantGrid nasal_formants = thy nasal_formants;
-		FormantGrid nasal_antiformants = thy nasal_antiformants;
-		FormantGrid tracheal_formants = coupling -> tracheal_formants;
-		FormantGrid tracheal_antiformants = coupling -> tracheal_antiformants;
+		VocalTractGridPlayOptions pv = thy options.get();
+		CouplingGridPlayOptions pc = coupling -> options.get();
+		bool useOpenGlottisInfo = pc -> openglottis && coupling && coupling -> glottis && coupling -> glottis -> points.size > 0;
+		FormantGrid oral_formants = thy oral_formants.get();
+		FormantGrid nasal_formants = thy nasal_formants.get();
+		FormantGrid nasal_antiformants = thy nasal_antiformants.get();
+		FormantGrid tracheal_formants = coupling -> tracheal_formants.get();
+		FormantGrid tracheal_antiformants = coupling -> tracheal_antiformants.get();
 
 		int antiformants = 0;
-		long numberOfFormants = oral_formants -> formants -> size;
-		long numberOfTrachealFormants = tracheal_formants -> formants -> size;
-		long numberOfTrachealAntiFormants = tracheal_antiformants -> formants -> size;
-		long numberOfNasalFormants = nasal_formants -> formants -> size;
-		long numberOfNasalAntiFormants = nasal_antiformants -> formants -> size;
+		long numberOfFormants = oral_formants -> formants.size;
+		long numberOfTrachealFormants = tracheal_formants -> formants.size;
+		long numberOfTrachealAntiFormants = tracheal_antiformants -> formants.size;
+		long numberOfNasalFormants = nasal_formants -> formants.size;
+		long numberOfNasalAntiFormants = nasal_antiformants -> formants.size;
 		check_formants (numberOfFormants, & (pv -> startOralFormant), & (pv -> endOralFormant));
 		check_formants (numberOfNasalFormants, & (pv -> startNasalFormant), & (pv -> endNasalFormant));
 		check_formants (numberOfTrachealFormants, & (pc -> startTrachealFormant), & (pc -> endTrachealFormant));
@@ -1461,18 +1568,18 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 
 		autoSound him = Data_copy (me);
 
-		autoFormantGrid formants = 0;
+		autoFormantGrid formants;
 		if (useOpenGlottisInfo) {
-			formants.reset (Data_copy (thy oral_formants));
-			FormantGrid_CouplingGrid_updateOpenPhases (formants.peek(), coupling);
+			formants = Data_copy (thy oral_formants.get());
+			FormantGrid_CouplingGrid_updateOpenPhases (formants.get(), coupling);
 		}
 
 		long nasal_formant_warning = 0, any_warning = 0;
-		if (pv -> endNasalFormant > 0) { // Nasal formants
+		if (pv -> endNasalFormant > 0) {   // nasal formants
 			antiformants = 0;
-			for (long iformant = pv -> startNasalFormant; iformant <= pv -> endNasalFormant; iformant++) {
-				if (FormantGrid_isFormantDefined (thy nasal_formants, iformant)) {
-					_Sound_FormantGrid_filterWithOneFormant_inline (him.peek(), thy nasal_formants, iformant, antiformants);
+			for (long iformant = pv -> startNasalFormant; iformant <= pv -> endNasalFormant; iformant ++) {
+				if (FormantGrid_isFormantDefined (thy nasal_formants.get(), iformant)) {
+					_Sound_FormantGrid_filterWithOneFormant_inline (him.get(), thy nasal_formants.get(), iformant, antiformants);
 				} else {
 					// Melder_warning ("Nasal formant", iformant, ": frequency and/or bandwidth missing.");
 					nasal_formant_warning++; any_warning++;
@@ -1481,11 +1588,11 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 		}
 
 		long nasal_antiformant_warning = 0;
-		if (pv -> endNasalAntiFormant > 0) { // Nasal anti formants
+		if (pv -> endNasalAntiFormant > 0) {   // nasal antiformants
 			antiformants = 1;
-			for (long iformant = pv -> startNasalAntiFormant; iformant <= pv -> endNasalAntiFormant; iformant++) {
-				if (FormantGrid_isFormantDefined (thy nasal_antiformants, iformant)) {
-					_Sound_FormantGrid_filterWithOneFormant_inline (him.peek(), thy nasal_antiformants, iformant, antiformants);
+			for (long iformant = pv -> startNasalAntiFormant; iformant <= pv -> endNasalAntiFormant; iformant ++) {
+				if (FormantGrid_isFormantDefined (thy nasal_antiformants.get(), iformant)) {
+					_Sound_FormantGrid_filterWithOneFormant_inline (him.get(), thy nasal_antiformants.get(), iformant, antiformants);
 				} else {
 					// Melder_warning ("Nasal antiformant", iformant, ": frequency and/or bandwidth missing.");
 					nasal_antiformant_warning++; any_warning++;
@@ -1494,11 +1601,11 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 		}
 
 		long tracheal_formant_warning = 0;
-		if (pc -> endTrachealFormant > 0) { // Tracheal formants
+		if (pc -> endTrachealFormant > 0) {   // tracheal formants
 			antiformants = 0;
-			for (long iformant = pc -> startTrachealFormant; iformant <= pc -> endTrachealFormant; iformant++) {
+			for (long iformant = pc -> startTrachealFormant; iformant <= pc -> endTrachealFormant; iformant ++) {
 				if (FormantGrid_isFormantDefined (tracheal_formants, iformant)) {
-					_Sound_FormantGrid_filterWithOneFormant_inline (him.peek(), tracheal_formants, iformant, antiformants);
+					_Sound_FormantGrid_filterWithOneFormant_inline (him.get(), tracheal_formants, iformant, antiformants);
 				} else {
 					// Melder_warning ("Tracheal formant", iformant, ": frequency and/or bandwidth missing.");
 					tracheal_formant_warning++; any_warning++;
@@ -1507,11 +1614,11 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 		}
 
 		long tracheal_antiformant_warning = 0;
-		if (pc -> endTrachealAntiFormant > 0) { // Tracheal anti formants
+		if (pc -> endTrachealAntiFormant > 0) {   // tracheal antiformants
 			antiformants = 1;
-			for (long iformant = pc -> startTrachealAntiFormant; iformant <= pc -> endTrachealAntiFormant; iformant++) {
+			for (long iformant = pc -> startTrachealAntiFormant; iformant <= pc -> endTrachealAntiFormant; iformant ++) {
 				if (FormantGrid_isFormantDefined (tracheal_antiformants, iformant)) {
-					_Sound_FormantGrid_filterWithOneFormant_inline (him.peek(), tracheal_antiformants, iformant, antiformants);
+					_Sound_FormantGrid_filterWithOneFormant_inline (him.get(), tracheal_antiformants, iformant, antiformants);
 				} else {
 					// Melder_warning ("Tracheal antiformant", iformant, ": frequency and/or bandwidth missing.");
 					tracheal_antiformant_warning++; any_warning++;
@@ -1520,14 +1627,14 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 		}
 
 		long oral_formant_warning = 0;
-		if (pv -> endOralFormant > 0) { // Oral formants
+		if (pv -> endOralFormant > 0) {   // oral formants
 			antiformants = 0;
-			if (formants.peek() == 0) {
-				formants.reset (thy oral_formants);
+			if (! formants) {
+				formants = Data_copy (thy oral_formants.get());
 			}
-			for (long iformant = pv -> startOralFormant; iformant <= pv -> endOralFormant; iformant++) {
-				if (FormantGrid_isFormantDefined (formants.peek(), iformant)) {
-					_Sound_FormantGrid_filterWithOneFormant_inline (him.peek(), formants.peek(), iformant, antiformants);
+			for (long iformant = pv -> startOralFormant; iformant <= pv -> endOralFormant; iformant ++) {
+				if (FormantGrid_isFormantDefined (formants.get(), iformant)) {
+					_Sound_FormantGrid_filterWithOneFormant_inline (him.get(), formants.get(), iformant, antiformants);
 				} else {
 					// Melder_warning ("Oral formant", iformant, ": frequency and/or bandwidth missing.");
 					oral_formant_warning++; any_warning++;
@@ -1555,51 +1662,53 @@ static Sound Sound_VocalTractGrid_CouplingGrid_filter_cascade (Sound me, VocalTr
 			MelderInfo_write (U"\nWarning:\n", warning.string);
 			MelderInfo_drain ();
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered by vocaltract and coupling grid.");
 	}
 }
 
-Sound Sound_VocalTractGrid_CouplingGrid_filter_parallel (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
+static autoSound Sound_VocalTractGrid_CouplingGrid_filter_parallel (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
 	try {
-		VocalTractGridPlayOptions pv = thy options;
-		CouplingGridPlayOptions pc = coupling -> options;
-		autoSound him = 0;
-		FormantGrid oral_formants = thy oral_formants; autoFormantGrid aof = 0;
+		VocalTractGridPlayOptions pv = thy options.get();
+		CouplingGridPlayOptions pc = coupling -> options.get();
+		autoSound him;
+		FormantGrid oral_formants = thy oral_formants.get();
+		autoFormantGrid aof;
 		int alternatingSign = 0; // 0: no alternating signs in parallel adding of filter outputs, 1/-1 start sign
-		int useOpenGlottisInfo = pc -> openglottis && coupling -> glottis && coupling -> glottis -> points -> size > 0;
+		bool useOpenGlottisInfo = pc -> openglottis && coupling -> glottis && coupling -> glottis -> points.size > 0;
 		int scale = 1;
-		long numberOfFormants = thy oral_formants -> formants -> size;
-		long numberOfNasalFormants = thy nasal_formants -> formants -> size;
-		long numberOfTrachealFormants = coupling -> tracheal_formants -> formants -> size;
+		long numberOfFormants = thy oral_formants -> formants.size;
+		long numberOfNasalFormants = thy nasal_formants -> formants.size;
+		long numberOfTrachealFormants = coupling -> tracheal_formants -> formants.size;
 
 		check_formants (numberOfFormants, & (pv -> startOralFormant), & (pv -> endOralFormant));
 		check_formants (numberOfNasalFormants, & (pv -> startNasalFormant), & (pv -> endNasalFormant));
 		check_formants (numberOfTrachealFormants, & (pc -> startTrachealFormant), & (pc -> endTrachealFormant));
 
 		if (useOpenGlottisInfo) {
-			aof.reset (Data_copy (thy oral_formants)); oral_formants = aof.peek();
+			aof = Data_copy (thy oral_formants.get());
+			oral_formants = aof.get();
 			FormantGrid_CouplingGrid_updateOpenPhases (oral_formants, coupling);
 		}
 
 		if (pv -> endOralFormant > 0) {
 			if (pv -> startOralFormant == 1) {
-				him.reset (Data_copy (me));
-				if (oral_formants -> formants -> size > 0) {
-					Sound_FormantGrid_Intensities_filterWithOneFormant_inline (him.peek(), oral_formants, thy oral_formants_amplitudes, 1);
+				him = Data_copy (me);
+				if (oral_formants -> formants.size > 0) {
+					Sound_FormantGrid_Intensities_filterWithOneFormant_inline (him.get(), oral_formants, & thy oral_formants_amplitudes, 1);
 				}
 			}
 		}
 
 		if (pv -> endNasalFormant > 0) {
 			alternatingSign = 0;
-			autoSound nasal =  Sound_FormantGrid_Intensities_filter (me, thy nasal_formants, thy nasal_formants_amplitudes, pv -> startNasalFormant, pv -> endNasalFormant, alternatingSign);
+			autoSound nasal = Sound_FormantGrid_Intensities_filter (me, thy nasal_formants.get(), & thy nasal_formants_amplitudes, pv -> startNasalFormant, pv -> endNasalFormant, alternatingSign);
 
-			if (him.peek() == 0) {
-				him.reset (Data_copy (nasal.peek()));
+			if (! him) {
+				him = Data_copy (nasal.get());
 			} else {
-				_Sounds_add_inline (him.peek(), nasal.peek());
+				_Sounds_add_inline (him.get(), nasal.get());
 			}
 		}
 
@@ -1613,40 +1722,40 @@ Sound Sound_VocalTractGrid_CouplingGrid_filter_parallel (Sound me, VocalTractGri
 
 		if (pv -> endOralFormant >= 2) {
 			long startOralFormant2 = pv -> startOralFormant > 2 ? pv -> startOralFormant : 2;
-			alternatingSign = startOralFormant2 % 2 == 0 ? -1 : 1; // 2 starts with negative sign
-			if (startOralFormant2 <= oral_formants -> formants -> size) {
-				autoSound vocalTract = Sound_FormantGrid_Intensities_filter (me_diff.peek(), oral_formants, thy oral_formants_amplitudes, startOralFormant2, pv -> endOralFormant, alternatingSign);
+			alternatingSign = ( startOralFormant2 % 2 == 0 ? -1 : 1 );   // 2 starts with negative sign
+			if (startOralFormant2 <= oral_formants -> formants.size) {
+				autoSound vocalTract = Sound_FormantGrid_Intensities_filter (me_diff.get(), oral_formants, & thy oral_formants_amplitudes, startOralFormant2, pv -> endOralFormant, alternatingSign);
 
-				if (him.peek() == 0) {
-					him.reset (Data_copy (vocalTract.peek()));
+				if (! him) {
+					him = Data_copy (vocalTract.get());
 				} else {
-					_Sounds_add_inline (him.peek(), vocalTract.peek());
+					_Sounds_add_inline (him.get(), vocalTract.get());
 				}
 			}
 		}
 
-		if (pc -> endTrachealFormant > 0) { // Tracheal formants
+		if (pc -> endTrachealFormant > 0) {   // tracheal formants
 			alternatingSign = 0;
-			autoSound trachea =  Sound_FormantGrid_Intensities_filter (me_diff.peek(), coupling -> tracheal_formants, coupling -> tracheal_formants_amplitudes,
-			                     pc -> startTrachealFormant, pc -> endTrachealFormant, alternatingSign);
+			autoSound trachea = Sound_FormantGrid_Intensities_filter (me_diff.get(), coupling -> tracheal_formants.get(), & coupling -> tracheal_formants_amplitudes,
+								pc -> startTrachealFormant, pc -> endTrachealFormant, alternatingSign);
 
-			if (him.peek() == 0) {
-				him.reset (Data_copy (trachea.peek()));
+			if (! him) {
+				him = Data_copy (trachea.get());
 			} else {
-				_Sounds_add_inline (him.peek(), trachea.peek());
+				_Sounds_add_inline (him.get(), trachea.get());
 			}
 		}
 
-		if (him.peek() == 0) {
-			him.reset (Data_copy (me));
+		if (! him) {
+			him = Data_copy (me);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered in parallel.");
 	}
 }
 
-Sound Sound_VocalTractGrid_CouplingGrid_filter (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
+autoSound Sound_VocalTractGrid_CouplingGrid_filter (Sound me, VocalTractGrid thee, CouplingGrid coupling) {
 	return thy options -> filterModel == KlattGrid_FILTER_CASCADE ?
 	       Sound_VocalTractGrid_CouplingGrid_filter_cascade (me, thee, coupling) :
 	       Sound_VocalTractGrid_CouplingGrid_filter_parallel (me, thee, coupling);
@@ -1654,24 +1763,24 @@ Sound Sound_VocalTractGrid_CouplingGrid_filter (Sound me, VocalTractGrid thee, C
 
 /********************** CouplingGridPlayOptions **********************/
 
-Thing_implement (CouplingGridPlayOptions, Data, 0);
+Thing_implement (CouplingGridPlayOptions, Daata, 0);
 
 static void CouplingGridPlayOptions_setDefaults (CouplingGridPlayOptions me, CouplingGrid thee) {
 	my fadeFraction = 0.1;
 	my openglottis = 1;
-	my endTrachealFormant = MIN (thy tracheal_formants -> formants -> size, thy tracheal_formants -> bandwidths -> size);
+	my endTrachealFormant = MIN (thy tracheal_formants -> formants.size, thy tracheal_formants -> bandwidths.size);
 	my startTrachealFormant = 1;
-	my endTrachealAntiFormant = MIN (thy tracheal_antiformants -> formants -> size, thy tracheal_antiformants -> bandwidths -> size);
+	my endTrachealAntiFormant = MIN (thy tracheal_antiformants -> formants.size, thy tracheal_antiformants -> bandwidths.size);
 	my startTrachealAntiFormant = 1;
 	my startDeltaFormant = 1;
-	my endDeltaFormant = thy delta_formants -> formants -> size;
+	my endDeltaFormant = thy delta_formants -> formants.size;
 	my startDeltaBandwidth = 1;
-	my endDeltaBandwidth = thy delta_formants -> bandwidths -> size;
+	my endDeltaBandwidth = thy delta_formants -> bandwidths.size;
 }
 
-CouplingGridPlayOptions CouplingGridPlayOptions_create () {
+autoCouplingGridPlayOptions CouplingGridPlayOptions_create () {
 	try {
-		CouplingGridPlayOptions me = Thing_new (CouplingGridPlayOptions);
+		autoCouplingGridPlayOptions me = Thing_new (CouplingGridPlayOptions);
 		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CouplingGridPlayOptions not created.");
@@ -1683,40 +1792,40 @@ CouplingGridPlayOptions CouplingGridPlayOptions_create () {
 Thing_implement (CouplingGrid, Function, 0);
 
 void structCouplingGrid :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	const char32 *in1 = U"  ", *in2 = U"    ", *in3 = U"      ";
 	MelderInfo_writeLine (in1, U"Time domain:");
 	MelderInfo_writeLine (in2, U"Start time:     ", xmin, U" seconds");
 	MelderInfo_writeLine (in2, U"End time:       ", xmax, U" seconds");
 	MelderInfo_writeLine (in2, U"Total duration: ", xmax - xmin, U" seconds");
 	MelderInfo_writeLine (in1, U"\nNumber of points in the TRACHEAL FORMANT tiers:");
-	FormantGrid_info (tracheal_formants, tracheal_formants_amplitudes, in2, in3);
+	FormantGrid_info (our tracheal_formants.get(), & tracheal_formants_amplitudes, in2, in3);
 	MelderInfo_writeLine (in1, U"\nNumber of points in the TRACHEAL ANTIFORMANT tiers:");
-	FormantGrid_info (tracheal_antiformants, NULL, in2, in3);
+	FormantGrid_info (our tracheal_antiformants.get(), nullptr, in2, in3);
 	MelderInfo_writeLine (in1, U"\nNumber of points in the DELTA FORMANT tiers:");
-	FormantGrid_info (delta_formants, NULL, in2, in3);
+	FormantGrid_info (our delta_formants.get(), nullptr, in2, in3);
 }
 
 void CouplingGrid_setNames (CouplingGrid me) {
-	Thing_setName (my tracheal_formants, U"tracheal_formants");
-	Thing_setName (my tracheal_antiformants, U"tracheal_antiformants");
-	Thing_setName (my tracheal_formants_amplitudes, U"tracheal_formants_amplitudes");
-	Thing_setName (my delta_formants, U"delta_formants");
-	Thing_setName (my glottis, U"glottis");
+	Thing_setName (my tracheal_formants.get(), U"tracheal_formants");
+	Thing_setName (my tracheal_antiformants.get(), U"tracheal_antiformants");
+	//Thing_setName (my tracheal_formants_amplitudes.get(), U"tracheal_formants_amplitudes");
+	Thing_setName (my delta_formants.get(), U"delta_formants");
+	Thing_setName (my glottis.get(), U"glottis");
 }
 
-CouplingGrid CouplingGrid_create (double tmin, double tmax, long numberOfTrachealFormants, long numberOfTrachealAntiFormants, long numberOfDeltaFormants) {
+autoCouplingGrid CouplingGrid_create (double tmin, double tmax, long numberOfTrachealFormants, long numberOfTrachealAntiFormants, long numberOfDeltaFormants) {
 	try {
 		autoCouplingGrid me = Thing_new (CouplingGrid);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my tracheal_formants = FormantGrid_createEmpty (tmin, tmax, numberOfTrachealFormants);
 		my tracheal_antiformants = FormantGrid_createEmpty (tmin, tmax, numberOfTrachealAntiFormants);
-		my tracheal_formants_amplitudes = formantsAmplitudes_create (tmin, tmax, numberOfTrachealFormants);
+		formantsAmplitudes_create (& my tracheal_formants_amplitudes, tmin, tmax, numberOfTrachealFormants);
 		my delta_formants = FormantGrid_createEmpty (tmin, tmax, numberOfDeltaFormants);
 		my glottis = PhonationTier_create (tmin, tmax);
 		my options = CouplingGridPlayOptions_create ();
-		CouplingGrid_setNames (me.peek());
-		return me.transfer();
+		CouplingGrid_setNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"CouplingGrid not created.");
 	}
@@ -1726,28 +1835,26 @@ CouplingGrid CouplingGrid_create (double tmin, double tmax, long numberOfTrachea
 
 void FormantGrid_CouplingGrid_updateOpenPhases (FormantGrid me, CouplingGrid thee) {
 	try {
-		CouplingGridPlayOptions pc = thy options;
-		for (long itier = 1; itier <= thy delta_formants -> formants -> size; itier++) {
-			RealTier delta = (RealTier) thy delta_formants -> formants -> item[itier];
-			if (itier <= my formants -> size) {
-				if (delta -> points -> size > 0) {
-					autoRealTier rt = RealTier_updateWithDelta ( (RealTier) my formants -> item[itier], delta, thy glottis, pc -> fadeFraction);
-					if (! RealTier_valuesInRange (rt.peek(), 0, NUMundefined)) {
+		CouplingGridPlayOptions pc = thy options.get();
+		for (long itier = 1; itier <= thy delta_formants -> formants.size; itier ++) {
+			RealTier delta = thy delta_formants -> formants.at [itier];
+			if (itier <= my formants.size) {
+				if (delta -> points.size > 0) {
+					autoRealTier rt = RealTier_updateWithDelta (my formants.at [itier], delta, thy glottis.get(), pc -> fadeFraction);
+					if (! RealTier_valuesInRange (rt.get(), 0, NUMundefined)) {
 						Melder_throw (U"Formant ", itier, U" coupling gives negative values.");
 					}
-					forget ( ( (Thing *) my formants -> item) [itier]);
-					my formants -> item[itier] = rt.transfer();
+					my formants. replaceItem_move (rt.move(), itier);
 				}
 			}
-			delta = (RealTier) thy delta_formants -> bandwidths -> item[itier];
-			if (itier <= my bandwidths -> size) {
-				if (delta -> points -> size > 0) {
-					autoRealTier rt = RealTier_updateWithDelta ( (RealTier) my bandwidths -> item[itier], delta, thy glottis, pc -> fadeFraction);
-					if (! RealTier_valuesInRange (rt.peek(), 0, NUMundefined)) {
+			delta = thy delta_formants -> bandwidths.at [itier];
+			if (itier <= my bandwidths.size) {
+				if (delta -> points.size > 0) {
+					autoRealTier rt = RealTier_updateWithDelta (my bandwidths.at [itier], delta, thy glottis.get(), pc -> fadeFraction);
+					if (! RealTier_valuesInRange (rt.get(), 0, NUMundefined)) {
 						Melder_throw (U"Bandwidth ", itier, U" coupling gives negative values.");
 					}
-					forget ( ( (Thing *) my bandwidths -> item) [itier]);
-					my bandwidths -> item[itier] = rt.transfer();
+					my bandwidths. replaceItem_move (rt.move(), itier);
 				}
 			}
 		}
@@ -1756,126 +1863,19 @@ void FormantGrid_CouplingGrid_updateOpenPhases (FormantGrid me, CouplingGrid the
 	}
 }
 
-/************************ Sound & FormantGrid *********************************************/
-
-void _Sound_FormantGrid_filterWithOneFormant_inline (Sound me, thou, long iformant, int antiformant) {
-	thouart (FormantGrid);
-	if (iformant < 1 || iformant > thy formants -> size) {
-		Melder_warning (U"Formant ", iformant, U" does not exist.");
-		return;
-	}
-
-	RealTier ftier = (RealTier) thy formants -> item[iformant];
-	RealTier btier = (RealTier) thy bandwidths -> item[iformant];
-
-	if (ftier -> points -> size == 0 && btier -> points -> size == 0) {
-		return;
-	} else if (ftier -> points -> size == 0 || btier -> points -> size == 0) {
-		Melder_throw (U"Empty tier");
-	}
-
-	double nyquist = 0.5 / my dx;
-	autoFilter r =  antiformant != 0 ? (Filter) AntiResonator_create (my dx) : (Filter) Resonator_create (my dx, Resonator_NORMALISATION_H0);
-
-	for (long is = 1; is <= my nx; is++) {
-		double t = my x1 + (is - 1) * my dx;
-		double f = RealTier_getValueAtTime (ftier, t);
-		double b = RealTier_getValueAtTime (btier, t);
-		if (f <= nyquist && NUMdefined (b)) {
-			Filter_setFB (r.peek(), f, b);
-		}
-		my z[1][is] = Filter_getOutput (r.peek(), my z[1][is]);
-	}
-}
-
-void Sound_FormantGrid_filterWithOneAntiFormant_inline (Sound me, FormantGrid thee, long iformant) {
-	_Sound_FormantGrid_filterWithOneFormant_inline (me, thee, iformant, 1);
-}
-
-void Sound_FormantGrid_filterWithOneFormant_inline (Sound me, FormantGrid thee, long iformant) {
-	_Sound_FormantGrid_filterWithOneFormant_inline (me, thee, iformant, 0);
-}
-
-void Sound_FormantGrid_Intensities_filterWithOneFormant_inline (Sound me, FormantGrid thee, Ordered amplitudes, long iformant) {
-	try {
-		if (iformant < 1 || iformant > thy formants -> size) {
-			Melder_throw (U"Formant ", iformant, U" not defined. \nThis formant will not be used.");
-		}
-		double nyquist = 0.5 / my dx;
-
-		RealTier ftier = (RealTier) thy formants -> item[iformant];
-		RealTier btier = (RealTier) thy bandwidths -> item[iformant];
-		RealTier atier = (RealTier) amplitudes -> item[iformant];
-
-		if (ftier -> points -> size == 0 || btier -> points -> size == 0 || atier -> points -> size == 0) {
-			return;    // nothing to do
-		}
-
-		autoResonator r = Resonator_create (my dx, Resonator_NORMALISATION_HMAX);
-
-		for (long is = 1; is <= my nx; is++) {
-			double t = my x1 + (is - 1) * my dx;
-			double f = RealTier_getValueAtTime (ftier, t);
-			double b = RealTier_getValueAtTime (btier, t);
-			double a;
-			if (f <= nyquist && NUMdefined (b)) {
-				Filter_setFB (r.peek(), f, b);
-				a = RealTier_getValueAtTime (atier, t);
-				if (NUMdefined (a)) {
-					r -> a *= DB_to_A (a);
-				}
-			}
-			my z[1][is] = Filter_getOutput (r.peek(), my z[1][is]);
-		}
-	} catch (MelderError) {
-		Melder_throw (me, U": not filtered with one formant filter.");
-	}
-}
-
-Sound Sound_FormantGrid_Intensities_filter (Sound me, FormantGrid thee, Ordered amplitudes, long iformantb, long iformante, int alternatingSign) {
-	try {
-		if (iformantb > iformante) {
-			iformantb = 1;
-			iformante = thy formants -> size;
-		}
-		if (iformantb < 1 || iformantb > thy formants -> size ||
-		        iformante < 1 || iformante > thy formants -> size) {
-			Melder_throw (U"No such formant number.");
-		}
-
-		autoSound him = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
-
-		for (long iformant = iformantb; iformant <= iformante; iformant++) {
-			if (FormantGrid_Intensities_isFormantDefined (thee, amplitudes, iformant)) {
-				autoSound tmp = Data_copy (me);
-				Sound_FormantGrid_Intensities_filterWithOneFormant_inline (tmp.peek(), thee, amplitudes, iformant);
-				for (long is = 1; is <= my nx; is++) {
-					his z[1][is] += alternatingSign >= 0 ? tmp -> z[1][is] : - tmp -> z[1][is];
-				}
-				if (alternatingSign != 0) {
-					alternatingSign = -alternatingSign;
-				}
-			}
-		}
-		return him.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, U": not filtered.");
-	}
-}
-
 /********************** FricationGridPlayOptions **********************/
 
-Thing_implement (FricationGridPlayOptions, Data, 0);
+Thing_implement (FricationGridPlayOptions, Daata, 0);
 
 static void FricationGridPlayOptions_setDefaults (FricationGridPlayOptions me, FricationGrid thee) {
-	my endFricationFormant = MIN (thy frication_formants -> formants -> size, thy frication_formants -> bandwidths -> size);
+	my endFricationFormant = MIN (thy frication_formants -> formants.size, thy frication_formants -> bandwidths.size);
 	my startFricationFormant = 2;
 	my bypass = 1;
 }
 
-FricationGridPlayOptions FricationGridPlayOptions_create () {
+autoFricationGridPlayOptions FricationGridPlayOptions_create () {
 	try {
-		FricationGridPlayOptions me = Thing_new (FricationGridPlayOptions);
+		autoFricationGridPlayOptions me = Thing_new (FricationGridPlayOptions);
 		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FricationGridPlayOptions not created.");
@@ -1885,39 +1885,39 @@ FricationGridPlayOptions FricationGridPlayOptions_create () {
 /************************ FricationGrid (& Sound) *********************************************/
 
 void structFricationGrid :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	const static char32 *in1 = U"  ", *in2 = U"    ", *in3 = U"      ";
 	MelderInfo_writeLine (in1, U"Time domain:");
 	MelderInfo_writeLine (in2, U"Start time:     ", xmin, U" seconds");
 	MelderInfo_writeLine (in2, U"End time:       ", xmax, U" seconds");
 	MelderInfo_writeLine (in2, U"Total duration: ", xmax - xmin, U" seconds");
 	MelderInfo_writeLine (in1, U"\nNumber of points in the FRICATION tiers:");
-	MelderInfo_writeLine (in2, U"fricationAmplitude:  ", fricationAmplitude -> points -> size);
-	MelderInfo_writeLine (in2, U"bypass:              ", bypass -> points -> size);
+	MelderInfo_writeLine (in2, U"fricationAmplitude:  ", fricationAmplitude -> points.size);
+	MelderInfo_writeLine (in2, U"bypass:              ", bypass -> points.size);
 	MelderInfo_writeLine (in1, U"\nNumber of points in the FRICATION FORMANT tiers:");
-	FormantGrid_info (frication_formants, frication_formants_amplitudes, in2, in3);
+	FormantGrid_info (our frication_formants.get(), & our frication_formants_amplitudes, in2, in3);
 }
 
 Thing_implement (FricationGrid, Function, 0);
 
 void FricationGrid_setNames (FricationGrid me) {
-	Thing_setName (my fricationAmplitude, U"fricationAmplitude");
-	Thing_setName (my frication_formants, U"frication_formants");
-	Thing_setName (my bypass, U"bypass");
-	Thing_setName (my frication_formants_amplitudes, U"frication_formants_amplitudes");
+	Thing_setName (my fricationAmplitude.get(), U"fricationAmplitude");
+	Thing_setName (my frication_formants.get(), U"frication_formants");
+	Thing_setName (my bypass.get(), U"bypass");
+	//Thing_setName (my frication_formants_amplitudes.get(), U"frication_formants_amplitudes");
 }
 
-FricationGrid FricationGrid_create (double tmin, double tmax, long numberOfFormants) {
+autoFricationGrid FricationGrid_create (double tmin, double tmax, long numberOfFormants) {
 	try {
 		autoFricationGrid me = Thing_new (FricationGrid);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my fricationAmplitude = IntensityTier_create (tmin, tmax);
 		my frication_formants = FormantGrid_createEmpty (tmin, tmax, numberOfFormants);
 		my bypass = IntensityTier_create (tmin, tmax);
-		my frication_formants_amplitudes = formantsAmplitudes_create (tmin, tmax, numberOfFormants);
+		formantsAmplitudes_create (& my frication_formants_amplitudes, tmin, tmax, numberOfFormants);
 		my options = FricationGridPlayOptions_create ();
-		FricationGrid_setNames (me.peek());
-		return me.transfer();
+		FricationGrid_setNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FricationGrid not created.");
 	}
@@ -1925,16 +1925,16 @@ FricationGrid FricationGrid_create (double tmin, double tmax, long numberOfForma
 
 static void FricationGrid_draw_inside (FricationGrid me, Graphics g, double xmin, double xmax, double ymin, double ymax, double dy, double *yout) {
 	long numberOfXSections = 5;
-	long numberOfFormants = my frication_formants -> formants -> size;
-	long numberOfParts = numberOfFormants + (numberOfFormants > 1 ? 0 : 1) ; // 2..number + bypass
+	long numberOfFormants = my frication_formants -> formants.size;
+	long numberOfParts = numberOfFormants + ( numberOfFormants > 1 ? 0 : 1 ) ;   // 2..number + bypass
 	// dum noise, connections, filter, connections, adder
-	double xw[6] = { 0, 2, 0.6, 1.5, 0.6, 0.5 }, xws[6];
-	double r, x1, y1, x2, y2, x3, xs, ys, ymid = (ymin + ymax) / 2;
+	double xw[6] = { 0.0, 2, 0.6, 1.5, 0.6, 0.5 }, xws[6];
+	double r, x1, y1, x2, y2, x3, xs, ys, ymid = (ymin + ymax) / 2.0;
 
 	rel_to_abs (xw, xws, numberOfXSections, xmax - xmin);
 
-	dy = dy < 0 ? 0 : dy;
-	dy = (ymax - ymin) / (numberOfParts * (1 + dy) - dy);
+	dy = dy < 0.0 ? 0.0 : dy;
+	dy = (ymax - ymin) / (numberOfParts * (1.0 + dy) - dy);
 
 	connections cp = connections_create (numberOfParts);
 	if (cp == 0) {
@@ -1942,16 +1942,22 @@ static void FricationGrid_draw_inside (FricationGrid me, Graphics g, double xmin
 	}
 
 	// section 1
-	x1 = xmin; x2 = x1 + xw[1]; y1 = ymid - 0.5 * dy; y2 = y1 + dy;
-	draw_oneSection (g, x1, x2, y1, y2, U"Frication", U"noise", NULL);
+	x1 = xmin;
+	x2 = x1 + xw [1];
+	y1 = ymid - 0.5 * dy;
+	y2 = y1 + dy;
+	draw_oneSection (g, x1, x2, y1, y2, U"Frication", U"noise", nullptr);
 
 	// section 2, horizontal line halfway, vertical line
-	x1 = x2; x2 = x1 + xw[2] / 2;
+	x1 = x2;
+	x2 = x1 + xw [2] / 2.0;
 	Graphics_line (g, x1, ymid, x2, ymid);
-	Graphics_line (g, x2, ymax - dy / 2, x2, ymin + dy / 2);
+	Graphics_line (g, x2, ymax - dy / 2, x2, ymin + dy / 2.0);
 	x3 = x2;
 	// final connection to section 2 , filters , connections to adder
-	x1 = xmin + xws[2]; x2 = x1 + xw[3]; y2 = ymax;
+	x1 = xmin + xws [2];
+	x2 = x1 + xw [3];
+	y2 = ymax;
 	autoMelderString fba;
 	for (long i = 1; i <= numberOfParts; i++) {
 		const char32 *fi = Melder_integer (i + 1);
@@ -1961,15 +1967,17 @@ static void FricationGrid_draw_inside (FricationGrid me, Graphics g, double xmin
 		} else {
 			MelderString_copy (&fba,  U"Bypass");
 		}
-		draw_oneSection (g, x1, x2, y1, y2, NULL, fba.string, NULL);
-		double ymidi = (y1 + y2) / 2;
+		draw_oneSection (g, x1, x2, y1, y2, nullptr, fba.string, nullptr);
+		double ymidi = (y1 + y2) / 2.0;
 		Graphics_line (g, x3, ymidi, x1, ymidi); // from noise to filter
-		cp -> x[i] = x2; cp -> y[i] = ymidi;
+		cp -> x[i] = x2;
+		cp -> y[i] = ymidi;
 		y2 = y1 - 0.5 * dy;
 	}
 
-	r = xw[5] / 2;
-	xs = xmax - r; ys = ymid;
+	r = xw [5] / 2.0;
+	xs = xmax - r;
+	ys = ymid;
 
 	if (numberOfParts > 1) {
 		alternatingSummer_drawConnections (g, xs, ys, r, cp, 1, 0.4);
@@ -1979,13 +1987,13 @@ static void FricationGrid_draw_inside (FricationGrid me, Graphics g, double xmin
 
 	connections_free (cp);
 
-	if (yout != NULL) {
+	if (yout) {
 		*yout = ys;
 	}
 }
 
 void FricationGrid_draw (FricationGrid me, Graphics g) {
-	double xmin = 0, xmax = 1, xmax2 = 0.9, ymin = 0, ymax = 1, dy = 0.5, yout;
+	double xmin = 0.0, xmax = 1.0, xmax2 = 0.9, ymin = 0.0, ymax = 1.0, dy = 0.5, yout;
 
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -1998,25 +2006,25 @@ void FricationGrid_draw (FricationGrid me, Graphics g) {
 	Graphics_unsetInner (g);
 }
 
-Sound FricationGrid_to_Sound (FricationGrid me, double samplingFrequency) {
+autoSound FricationGrid_to_Sound (FricationGrid me, double samplingFrequency) {
 	try {
 		autoSound thee = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
 
-		double lastval = 0;
-		for (long i = 1; i <= thy nx; i++) {
+		double lastval = 0.0;
+		for (long i = 1; i <= thy nx; i ++) {
 			double t = thy x1 + (i - 1) * thy dx;
-			double val = NUMrandomUniform (-1, 1);
-			double a = 0;
-			if (my fricationAmplitude -> points -> size > 0) {
-				double dba = RealTier_getValueAtTime (my fricationAmplitude, t);
-				a = dba == NUMundefined ? 0 : DBSPL_to_A (dba);
+			double val = NUMrandomUniform (-1.0, 1.0);
+			double a = 0.0;
+			if (my fricationAmplitude -> points.size > 0) {
+				double dba = RealTier_getValueAtTime (my fricationAmplitude.get(), t);
+				a = ( NUMdefined (dba) ? DBSPL_to_A (dba) : 0.0 );
 			}
 			lastval = (val += 0.75 * lastval); // TODO: soft low-pass coefficient must be Fs dependent!
 			thy z[1][i] = val * a;
 		}
 
-		autoSound him = Sound_FricationGrid_filter (thee.peek(), me);
-		return him.transfer();
+		autoSound him = Sound_FricationGrid_filter (thee.get(), me);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no frication Sound created.");
 	}
@@ -2024,36 +2032,36 @@ Sound FricationGrid_to_Sound (FricationGrid me, double samplingFrequency) {
 
 /************************ Sound & FricationGrid *********************************************/
 
-Sound Sound_FricationGrid_filter (Sound me, FricationGrid thee) {
+autoSound Sound_FricationGrid_filter (Sound me, FricationGrid thee) {
 	try {
-		FricationGridPlayOptions pf = thy options;
-		autoSound him = 0;
-		long numberOfFricationFormants = thy frication_formants -> formants -> size;
+		FricationGridPlayOptions pf = thy options.get();
+		autoSound him;
+		long numberOfFricationFormants = thy frication_formants -> formants.size;
 
 		check_formants (numberOfFricationFormants, & (pf -> startFricationFormant), & (pf -> endFricationFormant));
 
 		if (pf -> endFricationFormant > 1) {
 			long startFricationFormant2 = pf -> startFricationFormant > 2 ? pf -> startFricationFormant : 2;
 			int alternatingSign = startFricationFormant2 % 2 == 0 ? 1 : -1; // 2 starts with positive sign
-			him.reset (Sound_FormantGrid_Intensities_filter (me, thy frication_formants, thy frication_formants_amplitudes, startFricationFormant2, pf -> endFricationFormant, alternatingSign));
+			him = Sound_FormantGrid_Intensities_filter (me, thy frication_formants.get(), & thy frication_formants_amplitudes, startFricationFormant2, pf -> endFricationFormant, alternatingSign);
 		}
 
-		if (him.peek() == 0) {
-			him.reset (Data_copy (me));
+		if (! him) {
+			him = Data_copy (me);
 		}
 
 		if (pf -> bypass) {
-			for (long is = 1; is <= his nx; is++) {	// Bypass
+			for (long is = 1; is <= his nx; is ++) {	// Bypass
 				double t = his x1 + (is - 1) * his dx;
 				double ab = 0;
-				if (thy bypass -> points -> size > 0) {
-					double val = RealTier_getValueAtTime (thy bypass, t);
+				if (thy bypass -> points.size > 0) {
+					double val = RealTier_getValueAtTime (thy bypass.get(), t);
 					ab = val == NUMundefined ? 0 : DB_to_A (val);
 				}
-				his z[1][is] += my z[1][is] * ab;
+				his z [1] [is] += my z [1] [is] * ab;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered by frication filter.");
 	}
@@ -2061,18 +2069,18 @@ Sound Sound_FricationGrid_filter (Sound me, FricationGrid thee) {
 
 /********************** KlattGridPlayOptions **********************/
 
-Thing_implement (KlattGridPlayOptions, Data, 0);
+Thing_implement (KlattGridPlayOptions, Daata, 0);
 
 static void KlattGridPlayOptions_setDefaults (KlattGridPlayOptions me, KlattGrid thee) {
-	my samplingFrequency = 44100;
+	my samplingFrequency = 44100.0;
 	my scalePeak = 1;
 	my xmin = thy xmin;
 	my xmax = thy xmax;
 }
 
-KlattGridPlayOptions KlattGridPlayOptions_create () {
+autoKlattGridPlayOptions KlattGridPlayOptions_create () {
 	try {
-		KlattGridPlayOptions me = Thing_new (KlattGridPlayOptions);
+		autoKlattGridPlayOptions me = Thing_new (KlattGridPlayOptions);
 		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGridPlayOptions not created.");
@@ -2080,11 +2088,11 @@ KlattGridPlayOptions KlattGridPlayOptions_create () {
 }
 
 void KlattGrid_setDefaultPlayOptions (KlattGrid me) {
-	KlattGridPlayOptions_setDefaults (my options, me);
-	PhonationGridPlayOptions_setDefaults (my phonation -> options);
-	VocalTractGridPlayOptions_setDefaults (my vocalTract -> options, my vocalTract);
-	CouplingGridPlayOptions_setDefaults (my coupling -> options, my coupling);
-	FricationGridPlayOptions_setDefaults (my frication -> options, my frication);
+	KlattGridPlayOptions_setDefaults (my options.get(), me);
+	PhonationGridPlayOptions_setDefaults (my phonation -> options.get());
+	VocalTractGridPlayOptions_setDefaults (my vocalTract -> options.get(), my vocalTract.get());
+	CouplingGridPlayOptions_setDefaults (my coupling -> options.get(), my coupling.get());
+	FricationGridPlayOptions_setDefaults (my frication -> options.get(), my frication.get());
 }
 
 /************************ KlattGrid *********************************************/
@@ -2092,7 +2100,7 @@ void KlattGrid_setDefaultPlayOptions (KlattGrid me) {
 Thing_implement (KlattGrid, Function, 0);
 
 void structKlattGrid :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time:     ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time:       ", xmax, U" seconds");
@@ -2108,20 +2116,20 @@ void structKlattGrid :: v_info () {
 }
 
 void KlattGrid_setNames (KlattGrid me) {
-	Thing_setName (my phonation, U"phonation");
-	Thing_setName (my vocalTract, U"vocalTract");
-	Thing_setName (my coupling, U"coupling");
-	Thing_setName (my frication, U"frication");
-	Thing_setName (my gain, U"gain");
+	Thing_setName (my phonation.get(), U"phonation");
+	Thing_setName (my vocalTract.get(), U"vocalTract");
+	Thing_setName (my coupling.get(), U"coupling");
+	Thing_setName (my frication.get(), U"frication");
+	Thing_setName (my gain.get(), U"gain");
 }
 
-KlattGrid KlattGrid_create (double tmin, double tmax, long numberOfFormants,
+autoKlattGrid KlattGrid_create (double tmin, double tmax, long numberOfFormants,
                             long numberOfNasalFormants,	long numberOfNasalAntiFormants,
                             long numberOfTrachealFormants, long numberOfTrachealAntiFormants,
                             long numberOfFricationFormants, long numberOfDeltaFormants) {
 	try {
 		autoKlattGrid me = Thing_new (KlattGrid);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my phonation = PhonationGrid_create (tmin, tmax);
 		my vocalTract = VocalTractGrid_create (tmin, tmax, numberOfFormants, numberOfNasalFormants, numberOfNasalAntiFormants);
 		my coupling = CouplingGrid_create (tmin, tmax, numberOfTrachealFormants,  numberOfTrachealAntiFormants, numberOfDeltaFormants);
@@ -2129,34 +2137,36 @@ KlattGrid KlattGrid_create (double tmin, double tmax, long numberOfFormants,
 		my gain = IntensityTier_create (tmin, tmax);
 		my options = KlattGridPlayOptions_create ();
 
-		KlattGrid_setDefaultPlayOptions (me.peek());
-		KlattGrid_setNames (me.peek());
-		return me.transfer();
+		KlattGrid_setDefaultPlayOptions (me.get());
+		KlattGrid_setNames (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid not created.");
 	}
 }
 
-KlattGrid KlattGrid_createExample () {
+autoKlattGrid KlattGrid_createExample () {
 	try {
 		autoKlattTable thee = KlattTable_createExample ();
-		autoKlattGrid me = KlattTable_to_KlattGrid (thee.peek(), 0.005);
-		return me.transfer();
+		autoKlattGrid me = KlattTable_to_KlattGrid (thee.get(), 0.005);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid example not created.");
 	};
 }
 
-// y is the heigth in units of the height of one section,
-// y1 is the heigth from the top to the split between the uppper, non-diffed, and lower diffed part
+// y is the height in units of the height of one section,
+// y1 is the height from the top to the split between the uppper, non-diffed, and lower diffed part
 static void _KlattGrid_queryParallelSplit (KlattGrid me, double dy, double *y, double *y1) {
-	long ny = my vocalTract -> nasal_formants -> formants -> size + my vocalTract -> oral_formants -> formants -> size + my coupling -> tracheal_formants -> formants -> size;
-	long n1 = my vocalTract -> nasal_formants -> formants -> size + (my vocalTract -> oral_formants -> formants -> size > 0 ? 1 : 0);
+	long ny = my vocalTract -> nasal_formants -> formants.size +
+		my vocalTract -> oral_formants -> formants.size + my coupling -> tracheal_formants -> formants.size;
+	long n1 = my vocalTract -> nasal_formants -> formants.size +
+		( my vocalTract -> oral_formants -> formants.size > 0 ? 1 : 0 );
 
 	long n2 = ny - n1;
 	if (ny == 0) {
-		*y = 0;
-		*y1 = 0;
+		*y = 0.0;
+		*y1 = 0.0;
 		return;
 	}
 
@@ -2200,39 +2210,45 @@ static void getYpositions (double h1, double h2, double h3, double h4, double h5
 	     x      x      x      x
 	*/
 	double h; // h12_min = 0.3; not yet
-	double h13 = h1 > h3 ? h1 : h3; // baselines are now equal
+	double h13 = ( h1 > h3 ? h1 : h3 ); // baselines are now equal
 	if (h2 >= h4) {
 		h = h13 + h2 + h5;
 	} else { // h2 < h4
 		double maximumOverlap3 = fractionOverlap * h5;
-		if (maximumOverlap3 < (h1 + h2)) {
-			maximumOverlap3 = 0;
-		} else if (maximumOverlap3 > (h4 - h2)) {
+		if (maximumOverlap3 < h1 + h2) {
+			maximumOverlap3 = 0.0;
+		} else if (maximumOverlap3 > h4 - h2) {
 			maximumOverlap3 = h4 - h2;
 		}
 		h = h13 + h4 + h5 - maximumOverlap3;
 	}
-	*dy = 1 / (1.1 * h);
-	*ymin1 = 1 - (h13 + h2) * *dy; *ymax1 = *ymin1 + (h1 + h2) * *dy;
-	*ymin2 = 1 - (h13 + h4) * *dy; *ymax2 = *ymin2 + (h3 + h4) * *dy;
-	*ymin3 = 0;  *ymax3 = h5 * *dy;
+	*dy = 1.0 / (1.1 * h);
+	*ymin1 = 1.0 - (h13 + h2) * *dy;
+	*ymax1 = *ymin1 + (h1 + h2) * *dy;
+	*ymin2 = 1.0 - (h13 + h4) * *dy;
+	*ymax2 = *ymin2 + (h3 + h4) * *dy;
+	*ymin3 = 0.0;
+	*ymax3 = h5 * *dy;
 }
 
 void KlattGrid_drawVocalTract (KlattGrid me, Graphics g, int filterModel, int withTrachea) {
-	VocalTractGrid_CouplingGrid_draw (my vocalTract, withTrachea ? my coupling : NULL, g, filterModel);
+	VocalTractGrid_CouplingGrid_draw (my vocalTract.get(), withTrachea ? my coupling.get() : nullptr, g, filterModel);
 }
 
 void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 	double xs1, xs2, ys1, ys2, xf1, xf2, yf1, yf2;
 	double xp1, xp2, yp1, yp2, xc1, xc2, yc1, yc2;
 	double dy, r, xs, ys;
-	double xmin = 0, xmax2 = 0.90, xmax3 = 0.95, xmax = 1, ymin = 0, ymax = 1;
+	double xmin = 0.0, xmax2 = 0.90, xmax3 = 0.95, xmax = 1.0, ymin = 0.0, ymax = 1.0;
 	double xws[6];
 	double height_phonation = 0.3;
 	double dy_phonation = 0.5, dy_vocalTract_p = 0.5, dy_frication = 0.5;
 
-	connections tf = connections_create (2);
-	if (tf == 0) {
+	connections tf;
+	try {
+		tf = connections_create (2);
+	} catch (MelderError) {
+		Melder_clearError ();
 		return;
 	}
 
@@ -2242,9 +2258,9 @@ void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 	Graphics_setLineWidth (g, 2);
 
-	long nff = my frication -> frication_formants -> formants -> size - 1 + 1;
-	double yh_frication = nff > 0 ? nff + (nff - 1) * dy_frication : 1;
-	double yh_phonation = 1 + dy_phonation + 1;
+	long nff = my frication -> frication_formants -> formants.size - 1 + 1;
+	double yh_frication = ( nff > 0 ? nff + (nff - 1) * dy_frication : 1.0 );
+	double yh_phonation = 1.0 + dy_phonation + 1.0;
 	double yout_phonation, yout_frication;
 	dy = height_phonation / yh_phonation; // 1 vertical unit in source section height units
 
@@ -2264,27 +2280,36 @@ void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 		}
 		dy = height_phonation / yh_phonation;
 
-		xs1 = xmin; xs2 = xs1 + xw[1]; ys2 = ymax; ys1 = ys2 - height_phonation;
-		PhonationGrid_draw_inside (my phonation, g, xs1, xs2, ys1, ys2, dy_phonation, &yout_phonation);
+		xs1 = xmin;
+		xs2 = xs1 + xw [1];
+		ys2 = ymax;
+		ys1 = ys2 - height_phonation;
+		PhonationGrid_draw_inside (my phonation.get(), g, xs1, xs2, ys1, ys2, dy_phonation, &yout_phonation);
 
 		// units in cascade have same heigth as units in source part.
 
-		xc1 = xmin + xws[2]; xc2 = xc1 + xw[3];
-		yc2 = yout_phonation + dy / 2; yc1 = yc2 - dy;
-		VocalTractGrid_CouplingGrid_drawCascade_inline (my vocalTract, my coupling, g, xc1, xc2, yc1, yc2, &yin_vocalTract_c, &yout_vocalTract_c);
+		xc1 = xmin + xws [2];
+		xc2 = xc1 + xw [3];
+		yc2 = yout_phonation + dy / 2.0;
+		yc1 = yc2 - dy;
+		VocalTractGrid_CouplingGrid_drawCascade_inline (my vocalTract.get(), my coupling.get(), g, xc1, xc2, yc1, yc2, &yin_vocalTract_c, &yout_vocalTract_c);
 
-		tf -> x[1] = xc2; tf -> y[1] = yout_vocalTract_c;
+		tf -> x[1] = xc2;
+		tf -> y[1] = yout_vocalTract_c;
 
 		Graphics_line (g, xs2, yout_phonation, xc1, yin_vocalTract_c);
 
-		xf1 = xmin + xws[2]; xf2 = xf1 + xw[3]; yf2 = ymax - height_phonation; yf1 = 0;
+		xf1 = xmin + xws [2];
+		xf2 = xf1 + xw [3];
+		yf2 = ymax - height_phonation;
+		yf1 = 0.0;
 
-		FricationGrid_draw_inside (my frication, g, xf1, xf2, yf1, yf2, dy_frication, &yout_frication);
+		FricationGrid_draw_inside (my frication.get(), g, xf1, xf2, yf1, yf2, dy_frication, &yout_frication);
 	} else { // Parallel
 		// source connection tract connection, out
 		//     frication
 		double yf_parallel, yh_parallel, yh_overlap = 0.3, yin_vocalTract_p, yout_vocalTract_p;
-		double xw[6] = { 0, 1.75, 0.125, 3, 0.25, 0.125 };
+		double xw[6] = { 0.0, 1.75, 0.125, 3.0, 0.25, 0.125 };
 
 		rel_to_abs (xw, xws, 5, xmax2 - xmin);
 
@@ -2293,9 +2318,9 @@ void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 		// connector line from source to parallel has to be horizontal
 		// determine y's of source and parallel section
 		_KlattGrid_queryParallelSplit (me, dy_vocalTract_p, &yh_parallel, &yf_parallel);
-		if (yh_parallel == 0) {
+		if (yh_parallel == 0.0) {
 			yh_parallel = yh_phonation;
-			yf_parallel = yh_parallel / 2;
+			yf_parallel = yh_parallel / 2.0;
 			yh_overlap = -0.1;
 		}
 
@@ -2313,27 +2338,33 @@ void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 		// source, tract, frication
 		xs1 = xmin; xs2 = xs1 + xw[1];
 
-		double h1 = yh_phonation / 2, h2 = h1, h3 = yf_parallel, h4 = yh_parallel - h3, h5 = yh_frication;
+		double h1 = yh_phonation / 2.0, h2 = h1, h3 = yf_parallel, h4 = yh_parallel - h3, h5 = yh_frication;
 		getYpositions (h1, h2, h3, h4, h5, yh_overlap, &dy, &ys1, &ys2, &yp1, &yp2, &yf1, &yf2);
 
-		PhonationGrid_draw_inside (my phonation, g, xs1, xs2, ys1, ys2, dy_phonation, &yout_phonation);
+		PhonationGrid_draw_inside (my phonation.get(), g, xs1, xs2, ys1, ys2, dy_phonation, &yout_phonation);
 
-		xp1 = xmin + xws[2]; xp2 = xp1 + xw[3];
-		VocalTractGrid_CouplingGrid_drawParallel_inline (my vocalTract, my coupling, g, xp1, xp2, yp1, yp2, dy_vocalTract_p, &yin_vocalTract_p, &yout_vocalTract_p);
+		xp1 = xmin + xws [2];
+		xp2 = xp1 + xw [3];
+		VocalTractGrid_CouplingGrid_drawParallel_inline (my vocalTract.get(), my coupling.get(), g, xp1, xp2, yp1, yp2, dy_vocalTract_p, &yin_vocalTract_p, &yout_vocalTract_p);
 
-		tf -> x[1] = xp2; tf -> y[1] = yout_vocalTract_p;
+		tf -> x[1] = xp2;
+		tf -> y[1] = yout_vocalTract_p;
 
 		Graphics_line (g, xs2, yout_phonation, xp1, yin_vocalTract_p);
 
-		xf1 = xmin /*+ 0.5 * xws[1]*/; xf2 = xf1 + 0.55 * (xw[2] + xws[3]);
+		xf1 = xmin /* + 0.5 * xws [1] */;
+		xf2 = xf1 + 0.55 * (xw [2] + xws [3]);
 
-		FricationGrid_draw_inside (my frication, g, xf1, xf2, yf1, yf2, dy_frication, &yout_frication);
+		FricationGrid_draw_inside (my frication.get(), g, xf1, xf2, yf1, yf2, dy_frication, &yout_frication);
 	}
 
-	tf -> x[2] = xf2; tf -> y[2] = yout_frication;
-	r = (xmax3 - xmax2) / 2; xs = xmax2 + r / 2; ys = (ymax - ymin) / 2;
+	tf -> x[2] = xf2;
+	tf -> y[2] = yout_frication;
+	r = (xmax3 - xmax2) / 2.0;
+	xs = xmax2 + r / 2.0;
+	ys = (ymax - ymin) / 2.0;
 
-	summer_drawConnections (g, xs, ys, r, tf, 1, 0.6);
+	summer_drawConnections (g, xs, ys, r, tf, true, 0.6);
 
 	Graphics_arrow (g, xs + r, ys, xmax, ys);
 
@@ -2345,19 +2376,18 @@ void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel) {
 
 #define PhonationGrid_QUERY_ADD_REMOVE_EXTRACT_REPLACE(Name,name,tierType) \
 double KlattGrid_get##Name##AtTime (KlattGrid me, double t) \
-{ return RealTier_getValueAtTime ((RealTier) my phonation -> name, t); } \
+{ return RealTier_getValueAtTime (my phonation -> name.get(), t); } \
 void KlattGrid_add##Name##Point (KlattGrid me, double t, double value) \
-{ RealTier_addPoint ((RealTier) my phonation -> name, t, value);} \
+{ RealTier_addPoint (my phonation -> name.get(), t, value);} \
 void KlattGrid_remove##Name##Points (KlattGrid me, double t1, double t2) \
-{ AnyTier_removePointsBetween ((RealTier) my phonation -> name, t1, t2); } \
-tierType KlattGrid_extract##Name##Tier (KlattGrid me) \
-{ return Data_copy ((tierType) my phonation -> name); } \
+{ AnyTier_removePointsBetween (my phonation -> name.get()->asAnyTier(), t1, t2); } \
+auto##tierType KlattGrid_extract##Name##Tier (KlattGrid me) \
+{ return Data_copy (my phonation -> name.get()); } \
 void KlattGrid_replace##Name##Tier (KlattGrid me, tierType thee) \
 { try {\
 	if (my xmin != thy xmin || my xmax != thy xmax) Melder_throw (U"Domains must be equal"); \
-	auto##tierType any = Data_copy ((tierType) thee); \
-	forget (my phonation -> name); \
-	my phonation -> name = any.transfer(); \
+	auto##tierType any = Data_copy (thee); \
+	my phonation -> name = any.move(); \
 	} catch (MelderError) { Melder_throw (me, U": tier not replaced."); } \
 }
 
@@ -2374,38 +2404,38 @@ PhonationGrid_QUERY_ADD_REMOVE_EXTRACT_REPLACE (SpectralTilt, spectralTilt, Inte
 PhonationGrid_QUERY_ADD_REMOVE_EXTRACT_REPLACE (AspirationAmplitude, aspirationAmplitude, IntensityTier)
 PhonationGrid_QUERY_ADD_REMOVE_EXTRACT_REPLACE (BreathinessAmplitude, breathinessAmplitude, IntensityTier)
 
-FormantGrid *KlattGrid_getAddressOfFormantGrid (KlattGrid me, int formantType) {
-	return formantType == KlattGrid_ORAL_FORMANTS ? & (my vocalTract -> oral_formants) :
-	       formantType == KlattGrid_NASAL_FORMANTS ? & (my vocalTract -> nasal_formants) :
-	       formantType == KlattGrid_FRICATION_FORMANTS ? & (my frication -> frication_formants) :
-	       formantType == KlattGrid_TRACHEAL_FORMANTS ? & (my coupling -> tracheal_formants) :
-	       formantType == KlattGrid_NASAL_ANTIFORMANTS ? & (my vocalTract -> nasal_antiformants) :
-	       formantType == KlattGrid_TRACHEAL_ANTIFORMANTS ? & (my coupling -> tracheal_antiformants) :
-	       formantType == KlattGrid_DELTA_FORMANTS ? & (my coupling -> delta_formants) : 0;
+autoFormantGrid* KlattGrid_getAddressOfFormantGrid (KlattGrid me, int formantType) {
+	return formantType == KlattGrid_ORAL_FORMANTS ? & my vocalTract -> oral_formants :
+	       formantType == KlattGrid_NASAL_FORMANTS ? & my vocalTract -> nasal_formants :
+	       formantType == KlattGrid_FRICATION_FORMANTS ? & my frication -> frication_formants :
+	       formantType == KlattGrid_TRACHEAL_FORMANTS ? & my coupling -> tracheal_formants :
+	       formantType == KlattGrid_NASAL_ANTIFORMANTS ? & my vocalTract -> nasal_antiformants :
+	       formantType == KlattGrid_TRACHEAL_ANTIFORMANTS ? & my coupling -> tracheal_antiformants :
+	       formantType == KlattGrid_DELTA_FORMANTS ? & my coupling -> delta_formants : nullptr;
 }
 
-Ordered *KlattGrid_getAddressOfAmplitudes (KlattGrid me, int formantType) {
-	return formantType == KlattGrid_ORAL_FORMANTS ? & (my vocalTract -> oral_formants_amplitudes) :
-	       formantType == KlattGrid_NASAL_FORMANTS ? & (my vocalTract -> nasal_formants_amplitudes) :
-	       formantType == KlattGrid_FRICATION_FORMANTS ? & (my frication -> frication_formants_amplitudes) :
-	       formantType == KlattGrid_TRACHEAL_FORMANTS ? & (my coupling -> tracheal_formants_amplitudes) : NULL;
+OrderedOf<structIntensityTier>* KlattGrid_getAddressOfAmplitudes (KlattGrid me, int formantType) {
+	return formantType == KlattGrid_ORAL_FORMANTS ? & my vocalTract -> oral_formants_amplitudes :
+	       formantType == KlattGrid_NASAL_FORMANTS ? & my vocalTract -> nasal_formants_amplitudes :
+	       formantType == KlattGrid_FRICATION_FORMANTS ? & my frication -> frication_formants_amplitudes :
+	       formantType == KlattGrid_TRACHEAL_FORMANTS ? & my coupling -> tracheal_formants_amplitudes : nullptr;
 }
 
 #define KlattGrid_QUERY_ADD_REMOVE(Name) \
 double KlattGrid_get##Name##AtTime (KlattGrid me, int formantType, long iformant, double t) \
 { \
-	FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
-	return FormantGrid_get##Name##AtTime ((FormantGrid) *fg, iformant, t); \
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
+	return FormantGrid_get##Name##AtTime (fg->get(), iformant, t); \
 } \
 void KlattGrid_add##Name##Point (KlattGrid me, int formantType, long iformant, double t, double value) \
 { \
-	FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
-	FormantGrid_add##Name##Point ((FormantGrid) *fg, iformant, t, value); \
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
+	FormantGrid_add##Name##Point (fg->get(), iformant, t, value); \
 } \
 void KlattGrid_remove##Name##Points (KlattGrid me, int formantType, long iformant, double t1, double t2) \
 { \
-	FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
-	FormantGrid_remove##Name##PointsBetween ((FormantGrid) *fg, iformant, t1, t2); \
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType); \
+	FormantGrid_remove##Name##PointsBetween (fg->get(), iformant, t1, t2); \
 }
 
 // 6 functions
@@ -2413,28 +2443,28 @@ KlattGrid_QUERY_ADD_REMOVE (Formant)
 KlattGrid_QUERY_ADD_REMOVE (Bandwidth)
 
 void KlattGrid_formula_frequencies (KlattGrid me, int formantType, const char32 *expression, Interpreter interpreter) {
-	FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
-	FormantGrid_formula_frequencies (*fg, expression, interpreter, 0);
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+	FormantGrid_formula_frequencies (fg->get(), expression, interpreter, nullptr);
 }
 
 void KlattGrid_formula_bandwidths (KlattGrid me, int formantType, const char32 *expression, Interpreter interpreter) {
-	FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
-	FormantGrid_formula_bandwidths (*fg, expression, interpreter, 0);
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+	FormantGrid_formula_bandwidths (fg->get(), expression, interpreter, nullptr);
 }
 
 void KlattGrid_formula_amplitudes (KlattGrid me, int formantType, const char32 *expression, Interpreter interpreter) {
 	try {
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		Formula_compile (interpreter, *ordered, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		for (long irow = 1; irow <= (*ordered) -> size; irow++) {
-			RealTier amplitudes = (RealTier) (*ordered) -> item[irow];
-			for (long icol = 1; icol <= amplitudes -> points -> size; icol++) {
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		for (long irow = 1; irow <= ordered->size; irow ++) {
+			IntensityTier amplitudes = ordered->at [irow];
+			Formula_compile (interpreter, amplitudes, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+			for (long icol = 1; icol <= amplitudes -> points.size; icol ++) {
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
 				if (result. result.numericResult == NUMundefined) {
 					Melder_throw (U"Cannot put an undefined value into the tier.\nFormula not finished.");
 				}
-				( (RealPoint) amplitudes -> points -> item [icol]) -> value = result. result.numericResult;
+				amplitudes -> points.at [icol] -> value = result. result.numericResult;
 			}
 		}
 	} catch (MelderError) {
@@ -2443,37 +2473,37 @@ void KlattGrid_formula_amplitudes (KlattGrid me, int formantType, const char32 *
 }
 
 double KlattGrid_getAmplitudeAtTime (KlattGrid me, int formantType, long iformant, double t) {
-	Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-	if (iformant < 0 || iformant > (*ordered) -> size) {
+	OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+	if (iformant < 0 || iformant > ordered->size) {
 		return NUMundefined;
 	}
-	return RealTier_getValueAtTime ( (RealTier) (*ordered) -> item[iformant], t);
+	return RealTier_getValueAtTime (ordered->at [iformant], t);
 }
 
 void KlattGrid_addAmplitudePoint (KlattGrid me, int formantType, long iformant, double t, double value) {
-	Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-	if (iformant < 0 || iformant > (*ordered) -> size) {
+	OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+	if (iformant < 0 || iformant > ordered->size) {
 		Melder_throw (U"Formant amplitude tier ", iformant, U"does not exist.");
 	}
-	RealTier_addPoint ( (RealTier) (*ordered) -> item[iformant], t, value);
+	RealTier_addPoint (ordered->at [iformant], t, value);
 }
 
 void KlattGrid_removeAmplitudePoints (KlattGrid me, int formantType, long iformant, double t1, double t2) {
-	Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-	if (iformant < 0 || iformant > (*ordered) ->size) {
+	OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+	if (iformant < 0 || iformant > ordered->size) {
 		return;
 	}
-	AnyTier_removePointsBetween ( (*ordered) -> item[iformant], t1, t2);
+	AnyTier_removePointsBetween (ordered->at [iformant]->asAnyTier(), t1, t2);
 }
 
-IntensityTier KlattGrid_extractAmplitudeTier (KlattGrid me, int formantType, long iformant) {
+autoIntensityTier KlattGrid_extractAmplitudeTier (KlattGrid me, int formantType, long iformant) {
 	try {
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		if (iformant < 0 || iformant > (*ordered) ->size) {
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		if (iformant < 0 || iformant > ordered->size) {
 			Melder_throw (U"Formant amplitude tier ", iformant, U" does not exist.");
 		}
-		autoIntensityTier thee = Data_copy ( (IntensityTier) (*ordered) -> item[iformant]);
-		return thee.transfer();
+		autoIntensityTier thee = Data_copy (ordered->at [iformant]);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no IntensityTier extracted.");
 	}
@@ -2484,23 +2514,22 @@ void KlattGrid_replaceAmplitudeTier (KlattGrid me, int formantType, long iforman
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal");
 		}
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		if (iformant < 0 || iformant > (*ordered) -> size) {
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		if (iformant < 0 || iformant > ordered->size) {
 			Melder_throw (U"Formant amplitude tier ", iformant, U" does not exist.");
 		}
 		autoIntensityTier any = Data_copy (thee);
-		forget ( ( (Thing *) (*ordered) -> item) [iformant]);
-		(*ordered) -> item[iformant] = any.transfer();
+		ordered -> replaceItem_move (any.move(), iformant);
 	} catch (MelderError) {
 		Melder_throw (me, U": no ampitude tier replaced.");
 	}
 }
 
-FormantGrid KlattGrid_extractFormantGrid (KlattGrid me, int formantType) {
+autoFormantGrid KlattGrid_extractFormantGrid (KlattGrid me, int formantType) {
 	try {
-		FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-		autoFormantGrid thee = Data_copy (*fg);
-		return thee.transfer();
+		autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+		autoFormantGrid thee = Data_copy (fg->get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no FormantGrid extracted.");
 	}
@@ -2511,10 +2540,8 @@ void KlattGrid_replaceFormantGrid (KlattGrid me, int formantType, FormantGrid th
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal");
 		}
-		FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-		autoFormantGrid any = Data_copy (thee);
-		forget (*fg);
-		*fg = any.transfer();
+		autoFormantGrid *fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+		*fg = Data_copy (thee);
 	} catch (MelderError) {
 		Melder_throw (me, U": no FormantGrid replaced.");
 	}
@@ -2525,13 +2552,13 @@ void KlattGrid_addFormantAmplitudeTier (KlattGrid me, int formantType, long posi
 		if (formantType == KlattGrid_NASAL_ANTIFORMANTS || formantType == KlattGrid_TRACHEAL_ANTIFORMANTS || formantType == KlattGrid_DELTA_FORMANTS) {
 			Melder_throw (U"Cannot add amplitude tier to this formant type.");
 		}
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		long noa = (*ordered) -> size;
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		long noa = ordered->size;
 		if (position > noa || position < 1) {
 			position = noa + 1;
 		}
-		autoIntensityTier it = IntensityTier_create (my xmin, my xmax);
-		Ordered_addItemPos ( (*ordered), it.transfer(), position);
+		autoIntensityTier tier = IntensityTier_create (my xmin, my xmax);
+		ordered -> addItemAtPosition_move (tier.move(), position);
 	} catch (MelderError) {
 		Melder_throw (me, U": no formant amplitude tier added.");
 	}
@@ -2542,9 +2569,9 @@ void KlattGrid_removeFormantAmplitudeTier (KlattGrid me, int formantType, long p
 		if (formantType == KlattGrid_NASAL_ANTIFORMANTS || formantType == KlattGrid_TRACHEAL_ANTIFORMANTS || formantType == KlattGrid_DELTA_FORMANTS) {
 			Melder_throw (U"Cannot remove amplitude tier from this formant type.");
 		}
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		if (position > 0 && position <= (*ordered) -> size) {
-			Collection_removeItem (*ordered, position);
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		if (position > 0 && position <= ordered->size) {
+			ordered -> removeItem (position);
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no formant amplitude tier removed.");
@@ -2552,36 +2579,36 @@ void KlattGrid_removeFormantAmplitudeTier (KlattGrid me, int formantType, long p
 }
 
 // The following two routines are deprecated.
-// We do this intwo separate steps now
+// We do this in two separate steps now
 void KlattGrid_addFormant (KlattGrid me, int formantType, long position) {
 	try {
-		FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-		if (*fg == 0) {
-			Melder_throw (U"Formant type ",  formantType, U" does not exist.");
+		autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+		if (! *fg) {
+			Melder_throw (U"Formant type ", formantType, U" does not exist.");
 		}
 
-		long nof = (*fg) -> formants -> size;
+		long nof = (*fg) -> formants.size;
 		if (position > nof || position < 1) {
 			position = nof + 1;
 		}
 
 		if (formantType == KlattGrid_NASAL_ANTIFORMANTS || formantType == KlattGrid_TRACHEAL_ANTIFORMANTS ||
 		        formantType == KlattGrid_DELTA_FORMANTS) {
-			FormantGrid_addFormantAndBandwidthTiers (*fg, position);
+			FormantGrid_addFormantAndBandwidthTiers (fg->get(), position);
 			return;
 		}
 
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		long noa = (*ordered) -> size;
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		long noa = ordered->size;
 		if (nof != noa) {
 			Melder_throw (U"The number of formants (",  nof, U") and the number of amplitudes (", noa, U") must be equal.");
 		}
-		FormantGrid_addFormantAndBandwidthTiers (*fg, position);
+		FormantGrid_addFormantAndBandwidthTiers (fg->get(), position);
 		try {
-			autoIntensityTier it = IntensityTier_create (my xmin, my xmax);
-			Ordered_addItemPos ( (*ordered), it.transfer(), position);
+			autoIntensityTier tier = IntensityTier_create (my xmin, my xmax);
+			ordered -> addItemAtPosition_move (tier.move(), position);
 		} catch (MelderError) { // restore original
-			FormantGrid_removeFormantAndBandwidthTiers (*fg, position);
+			FormantGrid_removeFormantAndBandwidthTiers (fg->get(), position);
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no formant added.");
@@ -2589,19 +2616,19 @@ void KlattGrid_addFormant (KlattGrid me, int formantType, long position) {
 }
 
 void KlattGrid_removeFormant (KlattGrid me, int formantType, long position) {
-	FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-	long nof = (*fg) -> formants -> size;
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+	long nof = (*fg) -> formants.size;
 	if (formantType == KlattGrid_NASAL_ANTIFORMANTS || formantType == KlattGrid_TRACHEAL_ANTIFORMANTS ||
         formantType == KlattGrid_DELTA_FORMANTS) {
 		if (position < 1 || position > nof) {
 			return;
 		}
-		FormantGrid_removeFormantAndBandwidthTiers (*fg, position);
+		FormantGrid_removeFormantAndBandwidthTiers (fg->get(), position);
 	} else { 
 		// oral & nasal & tracheal formants can have amplitudes
 		// only remove a formant and its amplitude tier if number of formants and amplitudes are the same
-		Ordered *ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
-		long noa = (*ordered) -> size;
+		OrderedOf<structIntensityTier>* ordered = KlattGrid_getAddressOfAmplitudes (me, formantType);
+		long noa = ordered->size;
 		if (position < 1 || position > nof || position > noa) {
 			if (nof != noa) {
 				Melder_warning (U"The number of formant tiers (", nof, U") and the number of amplitude tiers (",
@@ -2609,45 +2636,45 @@ void KlattGrid_removeFormant (KlattGrid me, int formantType, long position) {
 			}
 			return;
 		}
-		FormantGrid_removeFormantAndBandwidthTiers (*fg, position);
-		Collection_removeItem (*ordered, position);
+		FormantGrid_removeFormantAndBandwidthTiers (fg->get(), position);
+		ordered -> removeItem (position);
 	}
 }
 
 void KlattGrid_addFormantFrequencyAndBandwidthTiers (KlattGrid me, int formantType, long position) {
-	FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-	FormantGrid_addFormantAndBandwidthTiers (*fg, position);
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+	FormantGrid_addFormantAndBandwidthTiers (fg->get(), position);
 }
 
 void KlattGrid_removeFormantFrequencyAndBandwidthTiers (KlattGrid me, int formantType, long position) {
-	FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, formantType);
-	FormantGrid_removeFormantAndBandwidthTiers (*fg, position);
+	autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, formantType);
+	FormantGrid_removeFormantAndBandwidthTiers (fg->get(), position);
 }
 
 double KlattGrid_getDeltaFormantAtTime (KlattGrid me, long iformant, double t) {
-	return FormantGrid_getFormantAtTime (my coupling -> delta_formants, iformant, t);
+	return FormantGrid_getFormantAtTime (my coupling -> delta_formants.get(), iformant, t);
 }
 void KlattGrid_addDeltaFormantPoint (KlattGrid me, long iformant, double t, double value) {
-	FormantGrid_addFormantPoint (my coupling -> delta_formants, iformant, t, value);
+	FormantGrid_addFormantPoint (my coupling -> delta_formants.get(), iformant, t, value);
 }
 void KlattGrid_removeDeltaFormantPoints (KlattGrid me, long iformant, double t1, double t2) {
-	FormantGrid_removeFormantPointsBetween (my coupling -> delta_formants, iformant, t1, t2);
+	FormantGrid_removeFormantPointsBetween (my coupling -> delta_formants.get(), iformant, t1, t2);
 }
 double KlattGrid_getDeltaBandwidthAtTime (KlattGrid me, long iformant, double t) {
-	return FormantGrid_getBandwidthAtTime (my coupling -> delta_formants, iformant, t);
+	return FormantGrid_getBandwidthAtTime (my coupling -> delta_formants.get(), iformant, t);
 }
 void KlattGrid_addDeltaBandwidthPoint (KlattGrid me, long iformant, double t, double value) {
-	FormantGrid_addBandwidthPoint (my coupling -> delta_formants, iformant, t, value);
+	FormantGrid_addBandwidthPoint (my coupling -> delta_formants.get(), iformant, t, value);
 }
 void KlattGrid_removeDeltaBandwidthPoints (KlattGrid me, long iformant, double t1, double t2) {
-	FormantGrid_removeBandwidthPointsBetween (my coupling -> delta_formants, iformant, t1, t2);
+	FormantGrid_removeBandwidthPointsBetween (my coupling -> delta_formants.get(), iformant, t1, t2);
 }
 
-FormantGrid KlattGrid_extractDeltaFormantGrid (KlattGrid me) {
+autoFormantGrid KlattGrid_extractDeltaFormantGrid (KlattGrid me) {
 	try {
-		FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, KlattGrid_DELTA_FORMANTS);
-		autoFormantGrid thee = Data_copy (*fg);
-		return thee.transfer();
+		autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, KlattGrid_DELTA_FORMANTS);
+		autoFormantGrid thee = Data_copy (fg->get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no delta FormantGrid extracted.");
 	}
@@ -2658,61 +2685,60 @@ void KlattGrid_replaceDeltaFormantGrid (KlattGrid me, FormantGrid thee) {
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal");
 		}
-		FormantGrid *fg =  KlattGrid_getAddressOfFormantGrid (me, KlattGrid_DELTA_FORMANTS);
+		autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (me, KlattGrid_DELTA_FORMANTS);
 		autoFormantGrid him = Data_copy (thee);
-		forget (*fg);
-		*fg = him.transfer();
+		*fg = him.move();
 	} catch (MelderError) {
 		Melder_throw (me, U": no delta FormantGrid replaced.");
 	}
 }
 
-FormantGrid KlattGrid_to_oralFormantGrid_openPhases (KlattGrid me, double fadeFraction) {
+autoFormantGrid KlattGrid_to_oralFormantGrid_openPhases (KlattGrid me, double fadeFraction) {
 	try {
-		if (my vocalTract -> oral_formants -> formants -> size == 0 && my vocalTract -> oral_formants -> bandwidths -> size == 0) {
+		if (my vocalTract -> oral_formants -> formants.size == 0 && my vocalTract -> oral_formants -> bandwidths.size == 0) {
 			Melder_throw (U"Formant grid is empty.");
 		}
-		if (fadeFraction < 0) {
-			fadeFraction = 0;
+		if (fadeFraction < 0.0) {
+			fadeFraction = 0.0;
 		}
 		if (fadeFraction >= 0.5) {
 			Melder_throw (U"Fade fraction must be smaller than 0.5");
 		}
 		my coupling -> options -> fadeFraction = fadeFraction;
-		autoFormantGrid thee = Data_copy ( (FormantGrid) my vocalTract -> oral_formants);
+		autoFormantGrid thee = Data_copy ( (FormantGrid) my vocalTract -> oral_formants.get());
 		KlattGrid_setGlottisCoupling (me);
-		FormantGrid_CouplingGrid_updateOpenPhases (thee.peek(), my coupling);
-		return thee.transfer();
+		FormantGrid_CouplingGrid_updateOpenPhases (thee.get(), my coupling.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no \"open phase\" oral FormantGrid created.");
 	}
 }
 
-PointProcess KlattGrid_extractPointProcess_glottalClosures (KlattGrid me) {
+autoPointProcess KlattGrid_extractPointProcess_glottalClosures (KlattGrid me) {
 	try {
 		// Update PhonationTier
-		autoPhonationTier pt = PhonationGrid_to_PhonationTier (my phonation);
-		autoPointProcess thee = PhonationTier_to_PointProcess_closures (pt.peek());
-		return thee.transfer();
+		autoPhonationTier pt = PhonationGrid_to_PhonationTier (my phonation.get());
+		autoPointProcess thee = PhonationTier_to_PointProcess_closures (pt.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no glottal closure points extracted.");
 	}
 }
 
 double KlattGrid_getFricationAmplitudeAtTime (KlattGrid me, double t) {
-	return RealTier_getValueAtTime (my frication -> fricationAmplitude, t);
+	return RealTier_getValueAtTime (my frication -> fricationAmplitude.get(), t);
 }
 
 void KlattGrid_addFricationAmplitudePoint (KlattGrid me, double t, double value) {
-	RealTier_addPoint (my frication -> fricationAmplitude, t, value);
+	RealTier_addPoint (my frication -> fricationAmplitude.get(), t, value);
 }
 
 void KlattGrid_removeFricationAmplitudePoints (KlattGrid me, double t1, double t2) {
-	AnyTier_removePointsBetween (my frication -> fricationAmplitude, t1, t2);
+	AnyTier_removePointsBetween (my frication -> fricationAmplitude.get()->asAnyTier(), t1, t2);
 }
 
-IntensityTier KlattGrid_extractFricationAmplitudeTier (KlattGrid me) {
-	return Data_copy (my frication -> fricationAmplitude);
+autoIntensityTier KlattGrid_extractFricationAmplitudeTier (KlattGrid me) {
+	return Data_copy (my frication -> fricationAmplitude.get());
 }
 
 void KlattGrid_replaceFricationAmplitudeTier (KlattGrid me, IntensityTier thee) {
@@ -2720,28 +2746,26 @@ void KlattGrid_replaceFricationAmplitudeTier (KlattGrid me, IntensityTier thee)
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal");
 		}
-		autoIntensityTier him = Data_copy (thee);
-		forget (my frication -> fricationAmplitude);
-		my frication -> fricationAmplitude = him.transfer();
+		my frication -> fricationAmplitude = Data_copy (thee);
 	} catch (MelderError) {
 		Melder_throw (me, U": no frication amplitude tier replaced.");
 	}
 }
 
 double KlattGrid_getFricationBypassAtTime (KlattGrid me, double t) {
-	return RealTier_getValueAtTime (my frication -> bypass, t);
+	return RealTier_getValueAtTime (my frication -> bypass.get(), t);
 }
 
 void KlattGrid_addFricationBypassPoint (KlattGrid me, double t, double value) {
-	RealTier_addPoint (my frication -> bypass, t, value);
+	RealTier_addPoint (my frication -> bypass.get(), t, value);
 }
 
 void KlattGrid_removeFricationBypassPoints (KlattGrid me, double t1, double t2) {
-	AnyTier_removePointsBetween (my frication -> bypass, t1, t2);
+	AnyTier_removePointsBetween (my frication -> bypass.get()->asAnyTier(), t1, t2);
 }
 
-IntensityTier KlattGrid_extractFricationBypassTier (KlattGrid me) {
-	return Data_copy (my frication -> bypass);
+autoIntensityTier KlattGrid_extractFricationBypassTier (KlattGrid me) {
+	return Data_copy (my frication -> bypass.get());
 }
 
 void KlattGrid_replaceFricationBypassTier (KlattGrid me, IntensityTier thee) {
@@ -2749,9 +2773,7 @@ void KlattGrid_replaceFricationBypassTier (KlattGrid me, IntensityTier thee) {
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal");
 		}
-		autoIntensityTier him = Data_copy (thee);
-		forget (my frication -> bypass);
-		my frication -> bypass = him.transfer();
+		my frication -> bypass = Data_copy (thee);
 	} catch (MelderError) {
 		Melder_throw (me, U": no frication bypass tier replaced.");
 	}
@@ -2759,9 +2781,8 @@ void KlattGrid_replaceFricationBypassTier (KlattGrid me, IntensityTier thee) {
 
 void KlattGrid_setGlottisCoupling (KlattGrid me) {
 	try {
-		forget (my coupling -> glottis);
-		my coupling -> glottis = PhonationGrid_to_PhonationTier (my phonation);
-		if (my coupling -> glottis == 0) {
+		my coupling -> glottis = PhonationGrid_to_PhonationTier (my phonation.get());
+		if (! my coupling -> glottis) {
 			Melder_throw (U"Empty phonation tier.");
 		}
 	} catch (MelderError) {
@@ -2769,19 +2790,21 @@ void KlattGrid_setGlottisCoupling (KlattGrid me) {
 	}
 }
 
-Sound KlattGrid_to_Sound_aspiration (KlattGrid me, double samplingFrequency) {
-	return PhonationGrid_to_Sound_aspiration (my phonation, samplingFrequency);
+#if 0
+static autoSound KlattGrid_to_Sound_aspiration (KlattGrid me, double samplingFrequency) {
+	return PhonationGrid_to_Sound_aspiration (my phonation.get(), samplingFrequency);
 }
+#endif
 
-Sound KlattGrid_to_Sound_phonation (KlattGrid me) {
-	return PhonationGrid_to_Sound (my phonation, 0, my options -> samplingFrequency);
+autoSound KlattGrid_to_Sound_phonation (KlattGrid me) {
+	return PhonationGrid_to_Sound (my phonation.get(), 0, my options -> samplingFrequency);
 }
 
-Sound KlattGrid_to_Sound (KlattGrid me) {
+autoSound KlattGrid_to_Sound (KlattGrid me) {
 	try {
-		autoSound thee = 0;
-		PhonationGridPlayOptions pp = my phonation -> options;
-		FricationGridPlayOptions pf = my frication -> options;
+		autoSound thee;
+		PhonationGridPlayOptions pp = my phonation -> options.get();
+		FricationGridPlayOptions pf = my frication -> options.get();
 		double samplingFrequency = my options -> samplingFrequency;
 
 		if (pp -> voicing) {
@@ -2789,26 +2812,25 @@ Sound KlattGrid_to_Sound (KlattGrid me) {
 		}
 
 		if (pp -> aspiration || pp -> voicing) { // No vocal tract filtering if no glottal source signal present
-			autoSound source = PhonationGrid_to_Sound (my phonation, my coupling, samplingFrequency);
-
-			thee.reset (Sound_VocalTractGrid_CouplingGrid_filter (source.peek(), my vocalTract, my coupling));
+			autoSound source = PhonationGrid_to_Sound (my phonation.get(), my coupling.get(), samplingFrequency);
+			thee = Sound_VocalTractGrid_CouplingGrid_filter (source.get(), my vocalTract.get(), my coupling.get());
 		}
 
 		if (pf -> endFricationFormant > 0 || pf -> bypass) {
-			autoSound frication = FricationGrid_to_Sound (my frication, samplingFrequency);
-			if (thee.peek() != 0) {
-				_Sounds_add_inline (thee.peek(), frication.peek());
+			autoSound frication = FricationGrid_to_Sound (my frication.get(), samplingFrequency);
+			if (thee) {
+				_Sounds_add_inline (thee.get(), frication.get());
 			} else {
-				thee.reset (frication.transfer());
+				thee = frication.move();
 			}
 		}
 
-		if (thee.peek() == 0) {
-			thee.reset (Sound_createEmptyMono (my xmin, my xmax, samplingFrequency));
+		if (thee) {
+			Vector_scale (thee.get(), 0.99);
 		} else if (my options -> scalePeak) {
-			Vector_scale (thee.peek(), 0.99);
+			thee = Sound_createEmptyMono (my xmin, my xmax, samplingFrequency);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
@@ -2817,15 +2839,15 @@ Sound KlattGrid_to_Sound (KlattGrid me) {
 void KlattGrid_playSpecial (KlattGrid me) {
 	try {
 		autoSound thee = KlattGrid_to_Sound (me);
-		KlattGridPlayOptions him = my options;
+		KlattGridPlayOptions him = my options.get();
 		if (his scalePeak) {
-			Vector_scale (thee.peek(), 0.99);
+			Vector_scale (thee.get(), 0.99);
 		}
-		if (his xmin == 0 && his xmax == 0) {
+		if (his xmin == 0.0 && his xmax == 0.0) {
 			his xmin = my xmin;
 			his xmax = my xmax;
 		}
-		Sound_playPart (thee.peek(), his xmin, his xmax, 0, 0);
+		Sound_playPart (thee.get(), his xmin, his xmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
@@ -2838,11 +2860,11 @@ void KlattGrid_play (KlattGrid me) {
 
 /************************* Sound(s) & KlattGrid **************************************************/
 
-Sound Sound_KlattGrid_filter_frication (Sound me, KlattGrid thee) {
-	return Sound_FricationGrid_filter (me, thy frication);
+autoSound Sound_KlattGrid_filter_frication (Sound me, KlattGrid thee) {
+	return Sound_FricationGrid_filter (me, thy frication.get());
 }
 
-Sound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterModel) {
+autoSound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterModel) {
 	try {
 		if (my xmin != thy xmin || my xmax != thy xmax) {
 			Melder_throw (U"Domains must be equal.");
@@ -2850,8 +2872,7 @@ Sound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterMo
 		KlattGrid_setDefaultPlayOptions (thee);
 		thy coupling -> options -> openglottis = 0; // don't trust openglottis info!
 		thy vocalTract -> options -> filterModel = filterModel;
-		autoSound him = Sound_VocalTractGrid_CouplingGrid_filter (me, thy vocalTract, thy coupling);
-		return him.transfer();
+		return Sound_VocalTractGrid_CouplingGrid_filter (me, thy vocalTract.get(), thy coupling.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered by KlattGrid.");
 	}
@@ -2859,16 +2880,16 @@ Sound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterMo
 
 /******************* KlattTable to KlattGrid *********************/
 
-KlattGrid KlattTable_to_KlattGrid (KlattTable me, double frameDuration) {
+autoKlattGrid KlattTable_to_KlattGrid (KlattTable me, double frameDuration) {
 	try {
 		Table kt = (Table) me;
 
-		long nrows = my rows -> size;
+		long nrows = my rows.size;
 		double tmin = 0, tmax = nrows * frameDuration;
 		double dBNul = -300;
-		double dB_offset = -20 * log10 (2.0e-5) - 87; // in KlattTable maximum in DB_to_LIN is at 87 dB : 32767
-		double dB_offset_voicing = 20 * log10 (320000 / 32767); // V'[n] in range (-320000,32000)
-		double dB_offset_noise = -20 * log10 (32.767 / 8.192); // noise in range (-8192,8192)
+		double dB_offset = -20.0 * log10 (2.0e-5) - 87.0; // in KlattTable maximum in DB_to_LIN is at 87 dB : 32767
+		double dB_offset_voicing = 20.0 * log10 (320000 / 32767); // V'[n] in range (-320000,32000)
+		double dB_offset_noise = -20.0 * log10 (32.767 / 8.192); // noise in range (-8192,8192)
 		//	double dB_offset_noise = -20 * log10 (320000/32767)  - 20 * log10 (32.767 / 8.192);
 		double ap[7] = {0, 0.4, 0.15, 0.06, 0.04, 0.022, 0.03 };
 		long numberOfFormants = 6;
@@ -2884,110 +2905,126 @@ KlattGrid KlattTable_to_KlattGrid (KlattTable me, double frameDuration) {
 		                                       numberOfFricationFormants, numberOfDeltaFormants);
 		for (long irow = 1; irow <= nrows; irow++) {
 			double t = (irow - 1) * frameDuration;
+
 			long icol = 1;
-			double val = Table_getNumericValue_Assert (kt, irow, icol) / 10; // F0hz10
+			double val = Table_getNumericValue_Assert (kt, irow, icol) / 10.0;   // F0hz10
 			double f0 = val;
-			RealTier_addPoint (thy phonation -> pitch, t, f0);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // AVdb
+			RealTier_addPoint (thy phonation -> pitch.get(), t, f0);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol); // AVdb
 			// dB values below 13 were put to zero in the DBtoLIN function
-			val -= 7;
-			if (val < 13) {
+			val -= 7.0;
+			if (val < 13.0) {
 				val = dBNul;
 			}
 			// RealTier_addPoint (thy source -> voicingAmplitude, t, val);
+
 			for (long kf = 1; kf <= 6; kf++) {
-				icol++;
-				double fk = val = Table_getNumericValue_Assert (kt, irow, icol); // Fhz
-				RealTier_addPoint ( (RealTier) thy vocalTract -> oral_formants -> formants -> item[kf], t, val);
-				RealTier_addPoint ( (RealTier) thy frication -> frication_formants -> formants -> item[kf], t, val); // only amplitudes and bandwidths in frication section
-				icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Bhz
-				if (val <= 0) {
-					val = fk / 10;
+				double fk = val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Fhz
+				RealTier_addPoint (thy vocalTract -> oral_formants -> formants.at [kf], t, val);
+				RealTier_addPoint (thy frication -> frication_formants -> formants.at [kf], t, val);   // only amplitudes and bandwidths in frication section
+				val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Bhz
+				if (val <= 0.0) {
+					val = fk / 10.0;
 				}
-				RealTier_addPoint ( (RealTier) thy vocalTract -> oral_formants -> bandwidths -> item[kf], t, val);
-			}
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // FNZhz
-			RealTier_addPoint ( (RealTier) thy vocalTract -> nasal_antiformants -> formants -> item[1], t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // BNZhz
-			RealTier_addPoint ( (RealTier) thy vocalTract -> nasal_antiformants -> bandwidths -> item[1], t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // FNPhz
-			RealTier_addPoint ( (RealTier) thy vocalTract -> nasal_formants -> formants -> item[1], t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // BNPhz
-			RealTier_addPoint ( (RealTier) thy vocalTract -> nasal_formants -> bandwidths -> item[1], t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // ah
-			if (val < 13) {
+				RealTier_addPoint (thy vocalTract -> oral_formants -> bandwidths.at [kf], t, val);
+			}
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // FNZhz
+			RealTier_addPoint (thy vocalTract -> nasal_antiformants -> formants.at [1], t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // BNZhz
+			RealTier_addPoint (thy vocalTract -> nasal_antiformants -> bandwidths.at [1], t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // FNPhz
+			RealTier_addPoint (thy vocalTract -> nasal_formants -> formants.at [1], t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // BNPhz
+			RealTier_addPoint (thy vocalTract -> nasal_formants -> bandwidths.at [1], t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // ah
+			if (val < 13.0) {
 				val = dBNul;
 			} else {
-				val += 20 * log10 (0.05) + dB_offset_noise;
-			}
-			RealTier_addPoint (thy phonation -> aspirationAmplitude, t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Kopen
-			double openPhase = f0 > 0 ? (val / 16000) * f0 : 0.7;
-			RealTier_addPoint (thy phonation -> openPhase, t, openPhase);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Aturb breathinessAmplitude during voicing (max is 8192)
-			if (val < 13) {
+				val += 20.0 * log10 (0.05) + dB_offset_noise;
+			}
+			RealTier_addPoint (thy phonation -> aspirationAmplitude.get(), t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Kopen
+			double openPhase = ( f0 > 0.0 ? (val / 16000.0) * f0 : 0.7 );
+			RealTier_addPoint (thy phonation -> openPhase.get(), t, openPhase);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Aturb breathinessAmplitude during voicing (max is 8192)
+			if (val < 13.0) {
 				val = dBNul;
 			} else {
-				val += 20 * log10 (0.1) + dB_offset_noise;
+				val += 20.0 * log10 (0.1) + dB_offset_noise;
 			}
-			RealTier_addPoint (thy phonation -> breathinessAmplitude, t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // TLTdb
-			RealTier_addPoint (thy phonation -> spectralTilt, t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // AF
-			if (val < 13) {
+			RealTier_addPoint (thy phonation -> breathinessAmplitude.get(), t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // TLTdb
+			RealTier_addPoint (thy phonation -> spectralTilt.get(), t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // AF
+			if (val < 13.0) {
 				val = dBNul;
 			} else {
-				val += 20 * log10 (0.25) + dB_offset_noise;
+				val += 20.0 * log10 (0.25) + dB_offset_noise;
 			}
-			RealTier_addPoint (thy frication -> fricationAmplitude, t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Kskew ???
+			RealTier_addPoint (thy frication -> fricationAmplitude.get(), t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Kskew ???
 			//RealTier_addPoint (, t, val);
+
 			for (long kf = 1; kf <= 6; kf++) {
-				icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Ap
-				if (val < 13) {
+				val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // Ap
+				if (val < 13.0) {
 					val = dBNul;
 				} else {
-					val += 20 * log10 (ap[kf]) + dB_offset;
+					val += 20.0 * log10 (ap[kf]) + dB_offset;
 				}
-				RealTier_addPoint ( (RealTier) thy vocalTract -> oral_formants_amplitudes -> item[kf], t, val);
-				RealTier_addPoint ( (RealTier) thy frication -> frication_formants_amplitudes -> item[kf], t, val);
-				icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Bhz
-				RealTier_addPoint ( (RealTier) thy frication -> frication_formants -> bandwidths -> item[kf], t, val);
+				RealTier_addPoint (thy vocalTract -> oral_formants_amplitudes.at [kf], t, val);
+				RealTier_addPoint (thy frication -> frication_formants_amplitudes.at [kf], t, val);
+				val = Table_getNumericValue_Assert (kt, irow, ++ icol); // Bhz
+				RealTier_addPoint (thy frication -> frication_formants -> bandwidths.at [kf], t, val);
 			}
 
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // ANP
-			if (val < 13) {
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol);   // ANP
+			if (val < 13.0) {
 				val = dBNul;
 			} else {
-				val += 20 * log10 (0.6) + dB_offset;
+				val += 20.0 * log10 (0.6) + dB_offset;
 			}
-			RealTier_addPoint ( (RealTier) thy vocalTract -> nasal_formants_amplitudes -> item[1], t, val);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // AB
-			if (val < 13) {
+			RealTier_addPoint (thy vocalTract -> nasal_formants_amplitudes.at [1], t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol); // AB
+			if (val < 13.0) {
 				val = dBNul;
 			} else {
-				val += 20 * log10 (0.05) + dB_offset_noise;
+				val += 20.0 * log10 (0.05) + dB_offset_noise;
 			}
-			RealTier_addPoint (thy frication -> bypass, t, val);
+			RealTier_addPoint (thy frication -> bypass.get(), t, val);
+
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol); // AVpdb
+			RealTier_addPoint (thy phonation -> voicingAmplitude.get(), t, val + dB_offset_voicing);
 
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // AVpdb
-			RealTier_addPoint (thy phonation -> voicingAmplitude, t, val + dB_offset_voicing);
-			icol++; val = Table_getNumericValue_Assert (kt, irow, icol); // Gain0
-			val -= 3; if (val <= 0) {
-				val = 57;
+			val = Table_getNumericValue_Assert (kt, irow, ++ icol); // Gain0
+			val -= 3.0;
+			if (val <= 0.0) {
+				val = 57.0;
 			}
-			RealTier_addPoint (thy gain, t, val + dB_offset);
+			RealTier_addPoint (thy gain.get(), t, val + dB_offset);
 		}
 		// We don't need the following low-pass: we do not use oversampling !!
-		//RealTier_addPoint (thy tracheal_formants -> formants -> item[1], 0.5*(tmin+tmax), 0.095*samplingFrequency);
-		//RealTier_addPoint (thy tracheal_formants -> bandwidths -> item[1], 0.5*(tmin+tmax), 0.063*samplingFrequency);
-		return thee.transfer();
+		//RealTier_addPoint (thy tracheal_formants -> formants->at [1], 0.5*(tmin+tmax), 0.095*samplingFrequency);
+		//RealTier_addPoint (thy tracheal_formants -> bandwidths->at [1], 0.5*(tmin+tmax), 0.063*samplingFrequency);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no KlattGrid created.");
 	}
 }
 
-KlattGrid Sound_to_KlattGrid_simple (Sound me, double timeStep, long maximumNumberOfFormants, double maximumFormantFrequency, double windowLength, double preEmphasisFrequency, double minimumPitch, double maximumPitch, double pitchFloorIntensity, int subtractMean) {
+autoKlattGrid Sound_to_KlattGrid_simple (Sound me, double timeStep, long maximumNumberOfFormants, double maximumFormantFrequency, double windowLength, double preEmphasisFrequency, double minimumPitch, double maximumPitch, double pitchFloorIntensity, int subtractMean) {
 	try {
 		long numberOfFormants = maximumNumberOfFormants;
 		long numberOfNasalFormants = 1;
@@ -2997,21 +3034,21 @@ KlattGrid Sound_to_KlattGrid_simple (Sound me, double timeStep, long maximumNumb
 		long numberOfFricationFormants =  maximumNumberOfFormants;
 		long numberOfDeltaFormants = 1;
 		autoSound sound = Data_copy (me);
-		Vector_subtractMean (sound.peek());
-		autoFormant f = Sound_to_Formant_burg (sound.peek(), timeStep, maximumNumberOfFormants,
+		Vector_subtractMean (sound.get());
+		autoFormant f = Sound_to_Formant_burg (sound.get(), timeStep, maximumNumberOfFormants,
 		                                       maximumFormantFrequency, windowLength, preEmphasisFrequency);
-		autoFormantGrid fgrid = Formant_downto_FormantGrid (f.peek());
-		autoPitch p = Sound_to_Pitch (sound.peek(), timeStep, minimumPitch, maximumPitch);
-		autoPitchTier ptier = Pitch_to_PitchTier (p.peek());
-		autoIntensity i = Sound_to_Intensity (sound.peek(), pitchFloorIntensity, timeStep, subtractMean);
-		autoIntensityTier itier = Intensity_downto_IntensityTier (i.peek());
+		autoFormantGrid fgrid = Formant_downto_FormantGrid (f.get());
+		autoPitch p = Sound_to_Pitch (sound.get(), timeStep, minimumPitch, maximumPitch);
+		autoPitchTier ptier = Pitch_to_PitchTier (p.get());
+		autoIntensity i = Sound_to_Intensity (sound.get(), pitchFloorIntensity, timeStep, subtractMean);
+		autoIntensityTier itier = Intensity_downto_IntensityTier (i.get());
 		autoKlattGrid thee = KlattGrid_create (my xmin, my xmax, numberOfFormants, numberOfNasalFormants,
 		                                       numberOfNasalAntiFormants, numberOfTrachealFormants, numberOfTrachealAntiFormants,
 		                                       numberOfFricationFormants, numberOfDeltaFormants);
-		KlattGrid_replacePitchTier (thee.peek(), ptier.peek());
-		KlattGrid_replaceFormantGrid (thee.peek(), KlattGrid_ORAL_FORMANTS, fgrid.peek());
-		KlattGrid_replaceVoicingAmplitudeTier (thee.peek(), itier.peek());
-		return thee.transfer();
+		KlattGrid_replacePitchTier (thee.get(), ptier.get());
+		KlattGrid_replaceFormantGrid (thee.get(), KlattGrid_ORAL_FORMANTS, fgrid.get());
+		KlattGrid_replaceVoicingAmplitudeTier (thee.get(), itier.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no simple KlattGrid created.");
 	}
diff --git a/dwtools/KlattGrid.h b/dwtools/KlattGrid.h
index 87047ad..ce8f80e 100644
--- a/dwtools/KlattGrid.h
+++ b/dwtools/KlattGrid.h
@@ -2,26 +2,20 @@
 #define _KlattGrid_h_
 /* KlattGrid.h
  *
- * Copyright (C) 2008-2014 David Weenink
+ * Copyright (C) 2008-2014 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * djmw 20080917 Initial version
- * djmw 20140113 Latest modification
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
@@ -31,56 +25,44 @@
 #include "PitchTier.h"
 #include "FormantGrid.h"
 #include "KlattTable.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "KlattGrid_def.h"
-oo_CLASS_CREATE (PhonationPoint, Data);
-oo_CLASS_CREATE (PhonationTier, Function);
-oo_CLASS_CREATE (PhonationGridPlayOptions, Data);
-oo_CLASS_CREATE (PhonationGrid, Function);
-oo_CLASS_CREATE (VocalTractGridPlayOptions, Data);
-oo_CLASS_CREATE (VocalTractGrid, Function);
-oo_CLASS_CREATE (CouplingGridPlayOptions, Data);
-oo_CLASS_CREATE (CouplingGrid, Function);
-oo_CLASS_CREATE (FricationGridPlayOptions, Data);
-oo_CLASS_CREATE (FricationGrid, Function);
-oo_CLASS_CREATE (KlattGridPlayOptions, Data);
-oo_CLASS_CREATE (KlattGrid, Function);
 
 /******************** PhonationPoint & Tier ************************************/
 
-PhonationPoint PhonationPoint_create (double time, double period, double openPhase, double collisionPhase, double te,
+autoPhonationPoint PhonationPoint_create (double time, double period, double openPhase, double collisionPhase, double te,
 	double power1, double power2, double pulseScale);
 
-PhonationTier PhonationTier_create (double tmin, double tmax);
-PointProcess PhonationTier_to_PointProcess_closures (PhonationTier me);
+autoPhonationTier PhonationTier_create (double tmin, double tmax);
+autoPointProcess PhonationTier_to_PointProcess_closures (PhonationTier me);
 
 /************************ PhonationGrid *********************************************/
 
-PhonationGrid PhonationGrid_create (double tmin, double tmax);
-PhonationGridPlayOptions PhonationGridPlayOptions_create ();
+autoPhonationGrid PhonationGrid_create (double tmin, double tmax);
+autoPhonationGridPlayOptions PhonationGridPlayOptions_create ();
 void PhonationGrid_setNames (PhonationGrid me);
 
-Sound PhonationGrid_to_Sound_aspiration (PhonationGrid me, double samplingFrequency);
+autoSound PhonationGrid_to_Sound_aspiration (PhonationGrid me, double samplingFrequency);
 
 void PhonationGrid_draw (PhonationGrid me, Graphics g);
 
 double PhonationGrid_getMaximumPeriod (PhonationGrid me);
 
-PhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me);
+autoPhonationTier PhonationGrid_to_PhonationTier (PhonationGrid me);
 
 /************************ VocalTractGrid *********************************************/
 
-VocalTractGrid VocalTractGrid_create (double tmin, double tmax, long numberOfFormants,
+autoVocalTractGrid VocalTractGrid_create (double tmin, double tmax, long numberOfFormants,
 	long numberOfNasalFormants,	long numberOfNasalAntiFormants);
-VocalTractGridPlayOptions VocalTractGridPlayOptions_create ();
+autoVocalTractGridPlayOptions VocalTractGridPlayOptions_create ();
 void VocalTractGrid_setNames (VocalTractGrid me);
 void VocalTractGrid_draw (VocalTractGrid me, Graphics g, int filterModel);
 
 /************************ CouplingGrid *********************************************/
 
-CouplingGrid CouplingGrid_create (double tmin, double tmax, long numberOfTrachealFormants, long numberOfTrachealAntiFormants, long numberOfDeltaFormants);
-CouplingGridPlayOptions CouplingGridPlayOptions_create ();
+autoCouplingGrid CouplingGrid_create (double tmin, double tmax, long numberOfTrachealFormants, long numberOfTrachealAntiFormants, long numberOfDeltaFormants);
+autoCouplingGridPlayOptions CouplingGridPlayOptions_create ();
 void CouplingGrid_setNames (CouplingGrid me);
 double CouplingGrid_getDeltaFormantAtTime (CouplingGrid me, long iformant, double t);
 double CouplingGrid_getDeltaBandwidthAtTime (CouplingGrid me, long iformant, double t);
@@ -93,35 +75,35 @@ void FormantGrid_CouplingGrid_updateOpenPhases (FormantGrid me, CouplingGrid the
 
 void Sound_FormantGrid_filterWithOneFormant_inline (Sound me, FormantGrid thee, long iformant);
 void Sound_FormantGrid_filterWithOneAntiFormant_inline (Sound me, FormantGrid thee, long iformant);
-void Sound_FormantGrid_Intensities_filterWithOneFormant_inline (Sound me, FormantGrid thee, Ordered amplitudes, long iformant);
-Sound Sound_FormantGrid_Intensities_filter (Sound me, FormantGrid thee, Ordered amplitudes, long iformantb, long iformante, int alternatingSign);
+void Sound_FormantGrid_Intensities_filterWithOneFormant_inline (Sound me, FormantGrid thee, OrderedOf<structIntensityTier>* amplitudes, long iformant);
+autoSound Sound_FormantGrid_Intensities_filter (Sound me, FormantGrid thee, OrderedOf<structIntensityTier>* amplitudes, long iformantb, long iformante, int alternatingSign);
 
 /************************ FricationGrid *********************************************/
 
-FricationGrid FricationGrid_create (double tmin, double tmax, long numberOfFormants);
-FricationGridPlayOptions FricationGridPlayOptions_create ();
+autoFricationGrid FricationGrid_create (double tmin, double tmax, long numberOfFormants);
+autoFricationGridPlayOptions FricationGridPlayOptions_create ();
 void FricationGrid_setNames (FricationGrid me);
 void FricationGrid_draw (FricationGrid me, Graphics g);
 
-Sound FricationGrid_to_Sound (FricationGrid me, double samplingFrequency);
+autoSound FricationGrid_to_Sound (FricationGrid me, double samplingFrequency);
 
-Sound Sound_FricationGrid_filter (Sound me, FricationGrid thee);
+autoSound Sound_FricationGrid_filter (Sound me, FricationGrid thee);
 
 /************************ Sound & VocalTractGrid & CouplingGrid *********************************************/
 
-Sound Sound_VocalTractGrid_CouplingGrid_filter (Sound me, VocalTractGrid thee, CouplingGrid coupling);
+autoSound Sound_VocalTractGrid_CouplingGrid_filter (Sound me, VocalTractGrid thee, CouplingGrid coupling);
 
 /************************ KlattGrid *********************************************/
 
-KlattGrid KlattGrid_create (double tmin, double tmax, long numberOfFormants,
+autoKlattGrid KlattGrid_create (double tmin, double tmax, long numberOfFormants,
 	long numberOfNasalFormants, long numberOfNasalAntiFormants,
 	long numberOfTrachealFormants, long numberOfTrachealAntiFormants,
 	long numberOfFricationFormants, long numberOfDeltaFormants);
 
-KlattGrid KlattGrid_createExample ();
-KlattGridPlayOptions KlattGridPlayOptions_create ();
+autoKlattGrid KlattGrid_createExample ();
+autoKlattGridPlayOptions KlattGridPlayOptions_create ();
 void KlattGrid_setNames (KlattGrid me);
-KlattGrid KlattTable_to_KlattGrid (KlattTable me, double frameDuration);
+autoKlattGrid KlattTable_to_KlattGrid (KlattTable me, double frameDuration);
 
 void KlattGrid_draw (KlattGrid me, Graphics g, int filterModel);
 void klattGrid_drawPhonation (KlattGrid me, Graphics g);
@@ -143,7 +125,7 @@ void KlattGrid_drawVocalTract (KlattGrid me, Graphics g, int filterModel, int wi
 double KlattGrid_get##Name##AtTime (KlattGrid me, double t); \
 void KlattGrid_add##Name##Point (KlattGrid me, double t, double value); \
 void KlattGrid_remove##Name##Points (KlattGrid me, double t1, double t2); \
-tierType KlattGrid_extract##Name##Tier (KlattGrid me); \
+auto##tierType KlattGrid_extract##Name##Tier (KlattGrid me); \
 void KlattGrid_replace##Name##Tier (KlattGrid me, tierType thee);
 
 // Generate 55 prototypes
@@ -175,49 +157,57 @@ void KlattGrid_formula_frequencies (KlattGrid me, int formantType, const char32
 void KlattGrid_formula_bandwidths (KlattGrid me, int formantType, const char32 *expression, Interpreter interpreter);
 void KlattGrid_formula_amplitudes (KlattGrid me, int formantType, const char32 *expression, Interpreter interpreter);
 
-FormantGrid KlattGrid_extractFormantGrid (KlattGrid me, int formantType);
+autoFormantGrid KlattGrid_extractFormantGrid (KlattGrid me, int formantType);
 void KlattGrid_replaceFormantGrid (KlattGrid me, int formantType, FormantGrid thee);
 
-FormantGrid KlattGrid_extractDeltaFormantGrid (KlattGrid me);
+autoFormantGrid KlattGrid_extractDeltaFormantGrid (KlattGrid me);
 void KlattGrid_replaceDeltaFormantGrid (KlattGrid me, FormantGrid thee);
 
-FormantGrid KlattGrid_to_oralFormantGrid_openPhases (KlattGrid me, double fadeFraction);
-PointProcess KlattGrid_extractPointProcess_glottalClosures (KlattGrid me);
+autoFormantGrid KlattGrid_to_oralFormantGrid_openPhases (KlattGrid me, double fadeFraction);
+autoPointProcess KlattGrid_extractPointProcess_glottalClosures (KlattGrid me);
 
 double KlattGrid_getAmplitudeAtTime (KlattGrid me, int formantType, long iformant, double t);
 void KlattGrid_addAmplitudePoint (KlattGrid me, int formantType, long iformant, double t, double value);
 void KlattGrid_removeAmplitudePoints (KlattGrid me, int formantType, long iformant, double t1, double t2);
-IntensityTier KlattGrid_extractAmplitudeTier (KlattGrid me, int formantType, long iformant);
+autoIntensityTier KlattGrid_extractAmplitudeTier (KlattGrid me, int formantType, long iformant);
 void KlattGrid_replaceAmplitudeTier (KlattGrid me, int formantType, long iformant, IntensityTier thee);
 
 double KlattGrid_getFricationAmplitudeAtTime (KlattGrid me, double t);
 void KlattGrid_addFricationAmplitudePoint (KlattGrid me, double t, double value);
 void KlattGrid_removeFricationAmplitudePoints (KlattGrid me, double t1, double t2);
-IntensityTier KlattGrid_extractFricationAmplitudeTier (KlattGrid me);
+autoIntensityTier KlattGrid_extractFricationAmplitudeTier (KlattGrid me);
 void KlattGrid_replaceFricationAmplitudeTier (KlattGrid me, IntensityTier thee);
 
 double KlattGrid_getFricationBypassAtTime (KlattGrid me, double t);
 void KlattGrid_addFricationBypassPoint (KlattGrid me, double t, double value);
 void KlattGrid_removeFricationBypassPoints (KlattGrid me, double t1, double t2);
-IntensityTier KlattGrid_extractFricationBypassTier (KlattGrid me);
+autoIntensityTier KlattGrid_extractFricationBypassTier (KlattGrid me);
 void KlattGrid_replaceFricationBypassTier (KlattGrid me, IntensityTier thee);
 
 void KlattGrid_setGlottisCoupling (KlattGrid me);
 
-FormantGrid * KlattGrid_getAddressOfFormantGrid (KlattGrid me, int formantType);
-Ordered * KlattGrid_getAddressOfAmplitudes (KlattGrid me, int formantType);
+autoFormantGrid * KlattGrid_getAddressOfFormantGrid (KlattGrid me, int formantType);
+OrderedOf<structIntensityTier>* KlattGrid_getAddressOfAmplitudes (KlattGrid me, int formantType);
 
-// add/remove frequency + bandwidth (+amplitude) tiers
-void KlattGrid_addFormant (KlattGrid me,int formantType, long position);
-void KlattGrid_removeFormant (KlattGrid me,int formantType, long position);
-
-// add/remove frequency + bandwidth tiers
+/*
+	One can add (or remove) formant frequency tiers, formant bandwidth tiers and formant amplitude tiers.
+	The first two types are handled together, the third type is handled separately.
+*/
 void KlattGrid_addFormantFrequencyAndBandwidthTiers (KlattGrid me, int formantType, long position);
 void KlattGrid_removeFormantFrequencyAndBandwidthTiers (KlattGrid me, int formantType, long position);
-
-
 void KlattGrid_addFormantAmplitudeTier (KlattGrid me, int formantType, long position);
 void KlattGrid_removeFormantAmplitudeTier (KlattGrid me, int formantType, long position);
+
+/*
+	The following two functions are deprecated;
+	they combine the actions of the above functions,
+	i.e. they add (or remove) a formant frequency tier, a formant bandwidth tier,
+	and a formant amplitude tier in one go.
+	Use instead the above division of these actions into two steps.
+*/
+void KlattGrid_addFormant (KlattGrid me, int formantType, long position);
+void KlattGrid_removeFormant (KlattGrid me, int formantType, long position);
+
 /***************** KlattGrid & Sound *************************************/
 
 // reset PlayOptions to defaults
@@ -227,9 +217,9 @@ void KlattGrid_playSpecial (KlattGrid me);
 
 void KlattGrid_setDefaultPlayOptions (KlattGrid me);
 
-Sound KlattGrid_to_Sound (KlattGrid me);
+autoSound KlattGrid_to_Sound (KlattGrid me);
 
-Sound KlattGrid_to_Sound_phonation (KlattGrid me);
+autoSound KlattGrid_to_Sound_phonation (KlattGrid me);
 
 int KlattGrid_synthesize (KlattGrid me, double t1, double t2, double samplingFrequency, double maximumPeriod);
 
@@ -238,10 +228,10 @@ int KlattGrid_synthesize (KlattGrid me, double t1, double t2, double samplingFre
 	frication: noise before entering the parallel frication filter section.
 */
 
-Sound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterModel);
+autoSound Sound_KlattGrid_filterByVocalTract (Sound me, KlattGrid thee, int filterModel);
 
-Sound Sound_KlattGrid_filter_frication (Sound me, KlattGrid thee);
+autoSound Sound_KlattGrid_filter_frication (Sound me, KlattGrid thee);
 
-KlattGrid Sound_to_KlattGrid_simple (Sound me, double timeStep, long maximumNumberOfFormants, double maximumFormantFrequency, double windowLength, double preEmphasisFrequency, double minimumPitch, double maximumPitch, double minimumPitchIntensity, int subtractMean);
+autoKlattGrid Sound_to_KlattGrid_simple (Sound me, double timeStep, long maximumNumberOfFormants, double maximumFormantFrequency, double windowLength, double preEmphasisFrequency, double minimumPitch, double maximumPitch, double minimumPitchIntensity, int subtractMean);
 
 #endif /* _KlattGrid_h_ */
diff --git a/dwtools/KlattGridEditors.cpp b/dwtools/KlattGridEditors.cpp
index 9658eda..02cd233 100644
--- a/dwtools/KlattGridEditors.cpp
+++ b/dwtools/KlattGridEditors.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2009-2011 david Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,299 +33,297 @@ static void KlattGrid_Editor_defaultPlay (KlattGrid me, double tmin, double tmax
 	KlattGrid_playSpecial (me);
 }
 
-/************************** KlattGrid_realTierEditor *********************************/
+/************************** KlattGrid_RealTierEditor *********************************/
 
-Thing_implement (KlattGrid_realTierEditor, RealTierEditor, 0);
+Thing_implement (KlattGrid_RealTierEditor, RealTierEditor, 0);
 
-static void menu_cb_KlattGridHelp (EDITOR_ARGS) {
-	EDITOR_IAM (KlattGrid_realTierEditor);
+static void menu_cb_KlattGridHelp (KlattGrid_RealTierEditor, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"KlattGrid");
 }
 
-void structKlattGrid_realTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
-	KlattGrid_realTierEditor_Parent :: v_createHelpMenuItems (menu);
+void structKlattGrid_RealTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
+	KlattGrid_RealTierEditor_Parent :: v_createHelpMenuItems (menu);
 	EditorMenu_addCommand (menu, U"KlattGrid help", 0, menu_cb_KlattGridHelp);
 }
 
-void structKlattGrid_realTierEditor :: v_play (double ltmin, double ltmax) {
+void structKlattGrid_RealTierEditor :: v_play (double ltmin, double ltmax) {
 	KlattGrid_Editor_defaultPlay (klattgrid, ltmin, ltmax);
 }
 
-void KlattGrid_realTierEditor_init (KlattGrid_realTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier data) {
+void KlattGrid_RealTierEditor_init (KlattGrid_RealTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier data) {
 	my klattgrid = klattgrid;
-	RealTierEditor_init (me, title, data, 0, 0);
+	RealTierEditor_init (me, title, data, nullptr, false);
 }
 
-/************************** KlattGrid_pitchTierEditor *********************************/
+/************************** KlattGrid_PitchTierEditor *********************************/
 
-Thing_implement (KlattGrid_pitchTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_PitchTierEditor, KlattGrid_RealTierEditor, 0);
 
-static void menu_cb_KlattGrid_pitchTierEditorHelp (EDITOR_ARGS) {
-	EDITOR_IAM (KlattGrid_pitchTierEditor); Melder_help (U"PitchTierEditor");
+static void menu_cb_KlattGrid_PitchTierEditorHelp (KlattGrid_PitchTierEditor, EDITOR_ARGS_DIRECT) {
+	Melder_help (U"PitchTierEditor");
 }
 
-static void menu_cb_PitchTierHelp (EDITOR_ARGS) {
-	EDITOR_IAM (KlattGrid_pitchTierEditor); Melder_help (U"PitchTier");
+static void menu_cb_PitchTierHelp (KlattGrid_PitchTierEditor, EDITOR_ARGS_DIRECT) {
+	Melder_help (U"PitchTier");
 }
 
-void structKlattGrid_pitchTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"PitchTierEditor help", 0, menu_cb_KlattGrid_pitchTierEditorHelp);
+void structKlattGrid_PitchTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
+	EditorMenu_addCommand (menu, U"PitchTierEditor help", 0, menu_cb_KlattGrid_PitchTierEditorHelp);
 	EditorMenu_addCommand (menu, U"PitchTier help", 0, menu_cb_PitchTierHelp);
 }
 
-KlattGrid_pitchTierEditor KlattGrid_pitchTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_PitchTierEditor KlattGrid_PitchTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_pitchTierEditor me = Thing_new (KlattGrid_pitchTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> pitch;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_PitchTierEditor me = Thing_new (KlattGrid_PitchTierEditor);
+		RealTier tier = klattgrid -> phonation -> pitch.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid pitch window not created.");
 	}
 }
 
-/************************** KlattGrid_intensityTierEditor *********************************/
+/************************** KlattGrid_IntensityTierEditor *********************************/
 
-Thing_implement (KlattGrid_intensityTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_IntensityTierEditor, KlattGrid_RealTierEditor, 0);
 
-static void menu_cb_IntensityTierHelp (EDITOR_ARGS) {
-	EDITOR_IAM (KlattGrid_intensityTierEditor);
+static void menu_cb_IntensityTierHelp (KlattGrid_IntensityTierEditor, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"IntensityTier");
 }
 
-void structKlattGrid_intensityTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
-	KlattGrid_intensityTierEditor_Parent :: v_createHelpMenuItems (menu);
+void structKlattGrid_IntensityTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
+	KlattGrid_IntensityTierEditor_Parent :: v_createHelpMenuItems (menu);
 	EditorMenu_addCommand (menu, U"IntensityTier help", 0, menu_cb_IntensityTierHelp);
 }
 
-void KlattGrid_intensityTierEditor_init (KlattGrid_intensityTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier tier) {
-	KlattGrid_realTierEditor_init (me, title, klattgrid, tier);
+void KlattGrid_IntensityTierEditor_init (KlattGrid_IntensityTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier tier) {
+	KlattGrid_RealTierEditor_init (me, title, klattgrid, tier);
 }
 
 
 /************************** KlattGrid_DecibelTierEditor *********************************/
 
-Thing_implement (KlattGrid_decibelTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_DecibelTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_decibelTierEditor KlattGrid_decibelTierEditor_create (const char32 *title, KlattGrid klattgrid, RealTier tier) {
+autoKlattGrid_DecibelTierEditor KlattGrid_DecibelTierEditor_create (const char32 *title, KlattGrid klattgrid, RealTier tier) {
 	try {
-		autoKlattGrid_decibelTierEditor me = Thing_new (KlattGrid_decibelTierEditor);
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_DecibelTierEditor me = Thing_new (KlattGrid_DecibelTierEditor);
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid decibel window not created.");
 	}
 }
 
-/************************** KlattGrid_voicingAmplitudeTierEditor *********************************/
+/************************** KlattGrid_VoicingAmplitudeTierEditor *********************************/
 
-Thing_implement (KlattGrid_voicingAmplitudeTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_VoicingAmplitudeTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_voicingAmplitudeTierEditor KlattGrid_voicingAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_VoicingAmplitudeTierEditor KlattGrid_VoicingAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_voicingAmplitudeTierEditor me = Thing_new (KlattGrid_voicingAmplitudeTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> voicingAmplitude;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_VoicingAmplitudeTierEditor me = Thing_new (KlattGrid_VoicingAmplitudeTierEditor);
+		RealTier tier = klattgrid -> phonation -> voicingAmplitude.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid voicing amplitude window not created.");
 	}
 }
 
-/************************** KlattGrid_aspirationAmplitudeTierEditor *********************************/
+/************************** KlattGrid_AspirationAmplitudeTierEditor *********************************/
 
-Thing_implement (KlattGrid_aspirationAmplitudeTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_AspirationAmplitudeTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_aspirationAmplitudeTierEditor KlattGrid_aspirationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_AspirationAmplitudeTierEditor KlattGrid_AspirationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_aspirationAmplitudeTierEditor me = Thing_new (KlattGrid_aspirationAmplitudeTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> aspirationAmplitude;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_AspirationAmplitudeTierEditor me = Thing_new (KlattGrid_AspirationAmplitudeTierEditor);
+		RealTier tier = klattgrid -> phonation -> aspirationAmplitude.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid aspiration amplitude window not created.");
 	}
 }
 
-/************************** KlattGrid_breathinessAmplitudeTierEditor *********************************/
+/************************** KlattGrid_BreathinessAmplitudeTierEditor *********************************/
 
-Thing_implement (KlattGrid_breathinessAmplitudeTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_BreathinessAmplitudeTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_breathinessAmplitudeTierEditor KlattGrid_breathinessAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_BreathinessAmplitudeTierEditor KlattGrid_BreathinessAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_breathinessAmplitudeTierEditor me = Thing_new (KlattGrid_breathinessAmplitudeTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> breathinessAmplitude;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_BreathinessAmplitudeTierEditor me = Thing_new (KlattGrid_BreathinessAmplitudeTierEditor);
+		RealTier tier = klattgrid -> phonation -> breathinessAmplitude.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid breathiness amplitude window not created.");
 	}
 }
 
-/************************** KlattGrid_spectralTiltTierEditor *********************************/
+/************************** KlattGrid_SpectralTiltTierEditor *********************************/
 
-Thing_implement (KlattGrid_spectralTiltTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_SpectralTiltTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_spectralTiltTierEditor KlattGrid_spectralTiltTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_SpectralTiltTierEditor KlattGrid_SpectralTiltTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_spectralTiltTierEditor me = Thing_new (KlattGrid_spectralTiltTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> spectralTilt;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_SpectralTiltTierEditor me = Thing_new (KlattGrid_SpectralTiltTierEditor);
+		RealTier tier = klattgrid -> phonation -> spectralTilt.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid spectral tilt window not created.");
 	}
 }
 
-/************************** KlattGrid_fricationBypassTierEditor *********************************/
+/************************** KlattGrid_FricationBypassTierEditor *********************************/
 
-Thing_implement (KlattGrid_fricationBypassTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_FricationBypassTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_fricationBypassTierEditor KlattGrid_fricationBypassTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_FricationBypassTierEditor KlattGrid_FricationBypassTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_fricationBypassTierEditor me = Thing_new (KlattGrid_fricationBypassTierEditor);
-		RealTier tier = (RealTier) klattgrid -> frication -> bypass;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_FricationBypassTierEditor me = Thing_new (KlattGrid_FricationBypassTierEditor);
+		RealTier tier = klattgrid -> frication -> bypass.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid frication bypass window not created.");
 	}
 }
 
-/************************** KlattGrid_fricationAmplitudeTierEditor *********************************/
+/************************** KlattGrid_FricationAmplitudeTierEditor *********************************/
 
-Thing_implement (KlattGrid_fricationAmplitudeTierEditor, KlattGrid_intensityTierEditor, 0);
+Thing_implement (KlattGrid_FricationAmplitudeTierEditor, KlattGrid_IntensityTierEditor, 0);
 
-KlattGrid_fricationAmplitudeTierEditor KlattGrid_fricationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_FricationAmplitudeTierEditor KlattGrid_FricationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_fricationAmplitudeTierEditor me = Thing_new (KlattGrid_fricationAmplitudeTierEditor);
-		RealTier tier = (RealTier) klattgrid -> frication -> fricationAmplitude;
-		KlattGrid_intensityTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_FricationAmplitudeTierEditor me = Thing_new (KlattGrid_FricationAmplitudeTierEditor);
+		RealTier tier = klattgrid -> frication -> fricationAmplitude.get();
+		KlattGrid_IntensityTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid frication amplitude window not created.");
 	}
 }
 
-/************************** KlattGrid_openPhaseTierEditor *********************************/
+/************************** KlattGrid_OpenPhaseTierEditor *********************************/
 
-Thing_implement (KlattGrid_openPhaseTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_OpenPhaseTierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_openPhaseTierEditor KlattGrid_openPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_OpenPhaseTierEditor KlattGrid_OpenPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_openPhaseTierEditor me = Thing_new (KlattGrid_openPhaseTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> openPhase;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_OpenPhaseTierEditor me = Thing_new (KlattGrid_OpenPhaseTierEditor);
+		RealTier tier = klattgrid -> phonation -> openPhase.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"KlattGrid_openPhaseTierEditor not created.");
+		Melder_throw (U"KlattGrid open phase window not created.");
 	}
 }
 
-/************************** KlattGrid_collisionPhaseTierEditor *********************************/
+/************************** KlattGrid_CollisionPhaseTierEditor *********************************/
 
-Thing_implement (KlattGrid_collisionPhaseTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_CollisionPhaseTierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_collisionPhaseTierEditor KlattGrid_collisionPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_CollisionPhaseTierEditor KlattGrid_CollisionPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_collisionPhaseTierEditor me = Thing_new (KlattGrid_collisionPhaseTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> collisionPhase;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_CollisionPhaseTierEditor me = Thing_new (KlattGrid_CollisionPhaseTierEditor);
+		RealTier tier = klattgrid -> phonation -> collisionPhase.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid collision phase window not created.");
 	}
 }
 
-/************************** KlattGrid_power1TierEditor *********************************/
+/************************** KlattGrid_Power1TierEditor *********************************/
 
-Thing_implement (KlattGrid_power1TierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_Power1TierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_power1TierEditor KlattGrid_power1TierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_Power1TierEditor KlattGrid_Power1TierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_power1TierEditor me = Thing_new (KlattGrid_power1TierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> power1;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_Power1TierEditor me = Thing_new (KlattGrid_Power1TierEditor);
+		RealTier tier = klattgrid -> phonation -> power1.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid power1 window not created.");
 	}
 }
 
-/************************** KlattGrid_power2TierEditor *********************************/
+/************************** KlattGrid_Power2TierEditor *********************************/
 
-Thing_implement (KlattGrid_power2TierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_Power2TierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_power2TierEditor KlattGrid_power2TierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_Power2TierEditor KlattGrid_Power2TierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_power2TierEditor me = Thing_new (KlattGrid_power2TierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> power2;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_Power2TierEditor me = Thing_new (KlattGrid_Power2TierEditor);
+		RealTier tier = klattgrid -> phonation -> power2.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid power2 window not created.");
 	}
 }
 
-/************************** KlattGrid_flutterTierEditor *********************************/
+/************************** KlattGrid_FlutterTierEditor *********************************/
 
-Thing_implement (KlattGrid_flutterTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_FlutterTierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_flutterTierEditor KlattGrid_flutterTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_FlutterTierEditor KlattGrid_FlutterTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_flutterTierEditor me = Thing_new (KlattGrid_flutterTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> flutter;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_FlutterTierEditor me = Thing_new (KlattGrid_FlutterTierEditor);
+		RealTier tier = klattgrid -> phonation -> flutter.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid flutter window not created.");
 	}
 }
 
-/************************** KlattGrid_doublePulsingTierEditor *********************************/
+/************************** KlattGrid_DoublePulsingTierEditor *********************************/
 
-Thing_implement (KlattGrid_doublePulsingTierEditor, KlattGrid_realTierEditor, 0);
+Thing_implement (KlattGrid_DoublePulsingTierEditor, KlattGrid_RealTierEditor, 0);
 
-KlattGrid_doublePulsingTierEditor KlattGrid_doublePulsingTierEditor_create (const char32 *title, KlattGrid klattgrid) {
+autoKlattGrid_DoublePulsingTierEditor KlattGrid_DoublePulsingTierEditor_create (const char32 *title, KlattGrid klattgrid) {
 	try {
-		autoKlattGrid_doublePulsingTierEditor me = Thing_new (KlattGrid_doublePulsingTierEditor);
-		RealTier tier = (RealTier) klattgrid -> phonation -> doublePulsing;
-		KlattGrid_realTierEditor_init (me.peek(), title, klattgrid, tier);
-		return me.transfer();
+		autoKlattGrid_DoublePulsingTierEditor me = Thing_new (KlattGrid_DoublePulsingTierEditor);
+		RealTier tier = klattgrid -> phonation -> doublePulsing.get();
+		KlattGrid_RealTierEditor_init (me.get(), title, klattgrid, tier);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid double pulsing window not created.");
 	}
 }
 
-/************************** KlattGrid_formantGridEditor *********************************/
+/************************** KlattGrid_FormantGridEditor *********************************/
 
-Thing_implement (KlattGrid_formantGridEditor, FormantGridEditor, 0);
+Thing_implement (KlattGrid_FormantGridEditor, FormantGridEditor, 0);
 
 static bool FormantGrid_isEmpty (FormantGrid me) {
-	return my formants -> size == 0 || my bandwidths -> size == 0;
+	return my formants.size == 0 || my bandwidths.size == 0;
 }
 
-void structKlattGrid_formantGridEditor :: v_play (double ltmin, double ltmax) {
+void structKlattGrid_FormantGridEditor :: v_play (double ltmin, double ltmax) {
 	KlattGrid_Editor_defaultPlay (klattgrid, ltmin, ltmax);
 }
 
-KlattGrid_formantGridEditor KlattGrid_formantGridEditor_create (const char32 *title, KlattGrid data, int formantType) {
+autoKlattGrid_FormantGridEditor KlattGrid_FormantGridEditor_create (const char32 *title, KlattGrid data, int formantType) {
 	try {
-		Melder_assert (data != NULL);
-		FormantGrid *fg = KlattGrid_getAddressOfFormantGrid (data, formantType);
-		if (fg == NULL) {
+		Melder_assert (data);
+		autoFormantGrid* fg = KlattGrid_getAddressOfFormantGrid (data, formantType);
+		if (! fg) {
 			Melder_throw (U"Formant type unknown.");
 		}
-		if (FormantGrid_isEmpty (*fg)) {
+		if (FormantGrid_isEmpty (fg -> get())) {
 			Melder_throw (U"Cannot edit an empty formant grid.");
 		}
-		autoKlattGrid_formantGridEditor me = Thing_new (KlattGrid_formantGridEditor);
+		autoKlattGrid_FormantGridEditor me = Thing_new (KlattGrid_FormantGridEditor);
 		my klattgrid = data;
-		FormantGridEditor_init (me.peek(), title, *fg);
-		return me.transfer();
+		FormantGridEditor_init (me.get(), title, fg->get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattGrid formant window not created.");
 	}
 }
 
-/* End of file KlattGridEditors.cpp */
\ No newline at end of file
+/* End of file KlattGridEditors.cpp */
diff --git a/dwtools/KlattGridEditors.h b/dwtools/KlattGridEditors.h
index 87eec4b..fb1620d 100644
--- a/dwtools/KlattGridEditors.h
+++ b/dwtools/KlattGridEditors.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2009-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "KlattGrid.h"
@@ -26,7 +25,7 @@
 #include "FormantGridEditor.h"
 
 
-Thing_define (KlattGrid_realTierEditor, RealTierEditor) {
+Thing_define (KlattGrid_RealTierEditor, RealTierEditor) {
 	KlattGrid klattgrid;
 
 	void v_createHelpMenuItems (EditorMenu menu)
@@ -35,10 +34,10 @@ Thing_define (KlattGrid_realTierEditor, RealTierEditor) {
 		override;
 };
 
-void KlattGrid_realTierEditor_init (KlattGrid_realTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier data);
+void KlattGrid_RealTierEditor_init (KlattGrid_RealTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier data);
 
 
-Thing_define (KlattGrid_openPhaseTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_OpenPhaseTierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	double v_maximumLegalValue ()
@@ -69,10 +68,10 @@ Thing_define (KlattGrid_openPhaseTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_openPhaseTierEditor KlattGrid_openPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_OpenPhaseTierEditor KlattGrid_OpenPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_collisionPhaseTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_CollisionPhaseTierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	double v_maximumLegalValue ()
@@ -103,10 +102,10 @@ Thing_define (KlattGrid_collisionPhaseTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_collisionPhaseTierEditor KlattGrid_collisionPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_CollisionPhaseTierEditor KlattGrid_CollisionPhaseTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_power1TierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_Power1TierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	const char32 * v_quantityText ()
@@ -135,10 +134,10 @@ Thing_define (KlattGrid_power1TierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_power1TierEditor KlattGrid_power1TierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_Power1TierEditor KlattGrid_Power1TierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_power2TierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_Power2TierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	const char32 * v_quantityText ()
@@ -167,10 +166,10 @@ Thing_define (KlattGrid_power2TierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_power2TierEditor KlattGrid_power2TierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_Power2TierEditor KlattGrid_Power2TierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_doublePulsingTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_DoublePulsingTierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	double v_maximumLegalValue ()
@@ -201,10 +200,10 @@ Thing_define (KlattGrid_doublePulsingTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_doublePulsingTierEditor KlattGrid_doublePulsingTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_DoublePulsingTierEditor KlattGrid_DoublePulsingTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_pitchTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_PitchTierEditor, KlattGrid_RealTierEditor) {
 	void v_createHelpMenuItems (EditorMenu menu)
 		override;
 	double v_minimumLegalValue ()
@@ -235,10 +234,10 @@ Thing_define (KlattGrid_pitchTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum frequency"; }
 };
 
-KlattGrid_pitchTierEditor KlattGrid_pitchTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_PitchTierEditor KlattGrid_PitchTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_flutterTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_FlutterTierEditor, KlattGrid_RealTierEditor) {
 	double v_minimumLegalValue ()
 		override { return 0.0; }
 	double v_maximumLegalValue ()
@@ -269,10 +268,10 @@ Thing_define (KlattGrid_flutterTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum"; }
 };
 
-KlattGrid_flutterTierEditor KlattGrid_flutterTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_FlutterTierEditor KlattGrid_FlutterTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_intensityTierEditor, KlattGrid_realTierEditor) {
+Thing_define (KlattGrid_IntensityTierEditor, KlattGrid_RealTierEditor) {
 	void v_createHelpMenuItems (EditorMenu menu)
 		override;
 	const char32 * v_quantityText ()
@@ -301,10 +300,10 @@ Thing_define (KlattGrid_intensityTierEditor, KlattGrid_realTierEditor) {
 		override { return U"Maximum intensity"; }
 };
 
-void KlattGrid_intensityTierEditor_init (KlattGrid_intensityTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier tier);
+void KlattGrid_IntensityTierEditor_init (KlattGrid_IntensityTierEditor me, const char32 *title, KlattGrid klattgrid, RealTier tier);
 
 
-Thing_define (KlattGrid_decibelTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_DecibelTierEditor, KlattGrid_IntensityTierEditor) {
 	const char32 * v_quantityText ()
 		override { return U"Amplitude (dB)"; }
 	const char32 * v_quantityKey ()
@@ -331,28 +330,28 @@ Thing_define (KlattGrid_decibelTierEditor, KlattGrid_intensityTierEditor) {
 		override { return U"Maximum amplitude"; }
 };
 
-KlattGrid_decibelTierEditor KlattGrid_decibelTierEditor_create (const char32 *title, KlattGrid klattgrid, RealTier data);
+autoKlattGrid_DecibelTierEditor KlattGrid_DecibelTierEditor_create (const char32 *title, KlattGrid klattgrid, RealTier data);
 
 
-Thing_define (KlattGrid_voicingAmplitudeTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_VoicingAmplitudeTierEditor, KlattGrid_IntensityTierEditor) {
 };
 
-KlattGrid_voicingAmplitudeTierEditor KlattGrid_voicingAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_VoicingAmplitudeTierEditor KlattGrid_VoicingAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_aspirationAmplitudeTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_AspirationAmplitudeTierEditor, KlattGrid_IntensityTierEditor) {
 };
 
-KlattGrid_aspirationAmplitudeTierEditor KlattGrid_aspirationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_AspirationAmplitudeTierEditor KlattGrid_AspirationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_breathinessAmplitudeTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_BreathinessAmplitudeTierEditor, KlattGrid_IntensityTierEditor) {
 };
 
-KlattGrid_breathinessAmplitudeTierEditor KlattGrid_breathinessAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_BreathinessAmplitudeTierEditor KlattGrid_BreathinessAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_spectralTiltTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_SpectralTiltTierEditor, KlattGrid_IntensityTierEditor) {
 	double v_defaultYmin ()
 		override { return -50.0; }
 	double v_defaultYmax ()
@@ -363,10 +362,10 @@ Thing_define (KlattGrid_spectralTiltTierEditor, KlattGrid_intensityTierEditor) {
 		override { return U"10.0"; }
 };
 
-KlattGrid_spectralTiltTierEditor KlattGrid_spectralTiltTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_SpectralTiltTierEditor KlattGrid_SpectralTiltTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_fricationBypassTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_FricationBypassTierEditor, KlattGrid_IntensityTierEditor) {
 	double v_defaultYmin ()
 		override { return -50.0; }
 	double v_defaultYmax ()
@@ -377,16 +376,16 @@ Thing_define (KlattGrid_fricationBypassTierEditor, KlattGrid_intensityTierEditor
 		override { return U"10.0"; }
 };
 
-KlattGrid_fricationBypassTierEditor KlattGrid_fricationBypassTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_FricationBypassTierEditor KlattGrid_FricationBypassTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_fricationAmplitudeTierEditor, KlattGrid_intensityTierEditor) {
+Thing_define (KlattGrid_FricationAmplitudeTierEditor, KlattGrid_IntensityTierEditor) {
 };
 
-KlattGrid_fricationAmplitudeTierEditor KlattGrid_fricationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
+autoKlattGrid_FricationAmplitudeTierEditor KlattGrid_FricationAmplitudeTierEditor_create (const char32 *title, KlattGrid klattgrid);
 
 
-Thing_define (KlattGrid_formantGridEditor, FormantGridEditor) {
+Thing_define (KlattGrid_FormantGridEditor, FormantGridEditor) {
 	KlattGrid klattgrid;
 
 	void v_play (double tmin, double tmax)
@@ -395,7 +394,7 @@ Thing_define (KlattGrid_formantGridEditor, FormantGridEditor) {
 		override { return false; }
 };
 
-KlattGrid_formantGridEditor KlattGrid_formantGridEditor_create (const char32 *title, KlattGrid data, int formantType);
+autoKlattGrid_FormantGridEditor KlattGrid_FormantGridEditor_create (const char32 *title, KlattGrid data, int formantType);
 
-
-#endif // _KlattGridEditors_h_
\ No newline at end of file
+/* End of file KlattGridEditors.h */
+#endif
diff --git a/dwtools/KlattGrid_def.h b/dwtools/KlattGrid_def.h
index 543708f..9c9e5bd 100644
--- a/dwtools/KlattGrid_def.h
+++ b/dwtools/KlattGrid_def.h
@@ -1,43 +1,52 @@
 /* KlattGrid_def.h
  *
- * Copyright (C) 2008-2011 David Weenink
+ * Copyright (C) 2008-2011 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT PhonationPoint
-oo_DEFINE_CLASS (PhonationPoint, Data)
-	oo_DOUBLE (time)  /* AnyPoint : glottis closing time */
-	oo_DOUBLE (period)  /* 1/F0 */
+oo_DEFINE_CLASS (PhonationPoint, AnyPoint)
+
+	oo_DOUBLE (period)   // 1/F0
 	oo_DOUBLE (openPhase)
 	oo_DOUBLE (collisionPhase)
-	oo_DOUBLE (te) // time from glottis open to exponential decay or closing
-	oo_DOUBLE (power1)  /* flow function */
+	oo_DOUBLE (te)   // time from glottis open to exponential decay or closing
+	oo_DOUBLE (power1)   // flow function
 	oo_DOUBLE (power2)
-	oo_DOUBLE (pulseScale) /* multiplier for diplophonia, shimmer */	
+	oo_DOUBLE (pulseScale)   // multiplier for diplophonia, shimmer
+
 oo_END_CLASS (PhonationPoint)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT PhonationTier
 oo_DEFINE_CLASS (PhonationTier, Function)
-	oo_COLLECTION (SortedSetOfDouble, points, PhonationPoint, 0)
+
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, points, PhonationPoint, 0)
+
+	#if oo_DECLARING
+		AnyTier_METHODS
+	#endif
+
 oo_END_CLASS (PhonationTier)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT PhonationGridPlayOptions
-oo_DEFINE_CLASS (PhonationGridPlayOptions, Data)
+oo_DEFINE_CLASS (PhonationGridPlayOptions, Daata)
+
 	oo_INT (voicing)
 	oo_INT (aspiration)
 	oo_INT (breathiness)
@@ -45,27 +54,30 @@ oo_DEFINE_CLASS (PhonationGridPlayOptions, Data)
 	oo_INT (doublePulsing)
 	oo_INT (collisionPhase)
 	oo_INT (spectralTilt)
-	oo_INT (flowFunction) // 1: User defined with tiers (power1, power2); 2: (2,3); 3: (3,4)
+	oo_INT (flowFunction)   // 1: user-defined with tiers (power1, power2); 2: (2,3); 3: (3,4)
 	oo_INT (flowDerivative)
 	oo_DOUBLE (maximumPeriod)
+
 oo_END_CLASS (PhonationGridPlayOptions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT PhonationGrid
 oo_DEFINE_CLASS (PhonationGrid, Function)
-	oo_OBJECT (PitchTier, 0, pitch)
-	oo_OBJECT (RealTier, 0, flutter) // [0,1]
-	oo_OBJECT (IntensityTier, 0, voicingAmplitude) // dB
-	oo_OBJECT (RealTier, 0, doublePulsing) // [0,1]
-	oo_OBJECT (RealTier, 0, openPhase) // (0,1)
-	oo_OBJECT (RealTier, 0, collisionPhase) //
-	oo_OBJECT (RealTier, 0, power1) // 2,3..
-	oo_OBJECT (RealTier, 0, power2) // 3,4.. power2>power1
-	oo_OBJECT (IntensityTier, 0, spectralTilt) // dB
-	oo_OBJECT (IntensityTier, 0, aspirationAmplitude) // dB
-	oo_OBJECT (IntensityTier, 0, breathinessAmplitude) // dB
+
+	oo_AUTO_OBJECT (PitchTier, 0, pitch)
+	oo_AUTO_OBJECT (RealTier, 0, flutter) // [0,1]
+	oo_AUTO_OBJECT (IntensityTier, 0, voicingAmplitude) // dB
+	oo_AUTO_OBJECT (RealTier, 0, doublePulsing) // [0,1]
+	oo_AUTO_OBJECT (RealTier, 0, openPhase) // (0,1)
+	oo_AUTO_OBJECT (RealTier, 0, collisionPhase) //
+	oo_AUTO_OBJECT (RealTier, 0, power1) // 2,3..
+	oo_AUTO_OBJECT (RealTier, 0, power2) // 3,4.. power2>power1
+	oo_AUTO_OBJECT (IntensityTier, 0, spectralTilt) // dB
+	oo_AUTO_OBJECT (IntensityTier, 0, aspirationAmplitude) // dB
+	oo_AUTO_OBJECT (IntensityTier, 0, breathinessAmplitude) // dB
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (PhonationGridPlayOptions, 0, options)
+		oo_AUTO_OBJECT (PhonationGridPlayOptions, 0, options)
 	#endif
 	#if oo_READING
 		options = PhonationGridPlayOptions_create ();
@@ -75,11 +87,14 @@ oo_DEFINE_CLASS (PhonationGrid, Function)
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (PhonationGrid)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT VocalTractGridPlayOptions
-oo_DEFINE_CLASS (VocalTractGridPlayOptions, Data)
+oo_DEFINE_CLASS (VocalTractGridPlayOptions, Daata)
+
 	oo_INT (filterModel)
 	oo_LONG (startOralFormant)
 	oo_LONG (endOralFormant)
@@ -87,33 +102,42 @@ oo_DEFINE_CLASS (VocalTractGridPlayOptions, Data)
 	oo_LONG (endNasalFormant)
 	oo_LONG (startNasalAntiFormant)
 	oo_LONG (endNasalAntiFormant)
+
 oo_END_CLASS (VocalTractGridPlayOptions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT VocalTractGrid
 oo_DEFINE_CLASS (VocalTractGrid, Function)
-	oo_OBJECT (FormantGrid, 0, oral_formants)
-	oo_OBJECT (FormantGrid, 0, nasal_formants)
-	oo_OBJECT (FormantGrid, 0, nasal_antiformants)
+
+	oo_AUTO_OBJECT (FormantGrid, 0, oral_formants)
+	oo_AUTO_OBJECT (FormantGrid, 0, nasal_formants)
+	oo_AUTO_OBJECT (FormantGrid, 0, nasal_antiformants)
 	// for parallel synthesis
-	oo_COLLECTION (Ordered, oral_formants_amplitudes, IntensityTier, 0)
-	oo_COLLECTION (Ordered, nasal_formants_amplitudes, IntensityTier, 0)
+	oo_COLLECTION_OF (OrderedOf, oral_formants_amplitudes, IntensityTier, 0)
+	oo_COLLECTION_OF (OrderedOf, nasal_formants_amplitudes, IntensityTier, 0)
+
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (VocalTractGridPlayOptions, 0, options)
+		oo_AUTO_OBJECT (VocalTractGridPlayOptions, 0, options)
 	#endif
+
 	#if oo_READING
 		options = VocalTractGridPlayOptions_create ();
 		VocalTractGrid_setNames (this);
 	#endif
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (VocalTractGrid)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT CouplingGridPlayOptions
-oo_DEFINE_CLASS (CouplingGridPlayOptions, Data)
+oo_DEFINE_CLASS (CouplingGridPlayOptions, Daata)
+
 	oo_LONG (startTrachealFormant)
 	oo_LONG (endTrachealFormant)
 	oo_LONG (startTrachealAntiFormant)
@@ -124,85 +148,112 @@ oo_DEFINE_CLASS (CouplingGridPlayOptions, Data)
 	oo_LONG (endDeltaBandwidth)
 	oo_INT (openglottis)
 	oo_DOUBLE (fadeFraction)
+
 oo_END_CLASS (CouplingGridPlayOptions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT CouplingGrid
 oo_DEFINE_CLASS (CouplingGrid, Function)
-	oo_OBJECT (FormantGrid, 0, tracheal_formants)
-	oo_OBJECT (FormantGrid, 0, tracheal_antiformants)
-	oo_COLLECTION (Ordered, tracheal_formants_amplitudes, IntensityTier, 0)
-	oo_OBJECT (FormantGrid, 0, delta_formants)
+
+	oo_AUTO_OBJECT (FormantGrid, 0, tracheal_formants)
+	oo_AUTO_OBJECT (FormantGrid, 0, tracheal_antiformants)
+	oo_COLLECTION_OF (OrderedOf, tracheal_formants_amplitudes, IntensityTier, 0)
+	oo_AUTO_OBJECT (FormantGrid, 0, delta_formants)
+
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (PhonationTier, 0, glottis)
-		oo_OBJECT (CouplingGridPlayOptions, 0, options)
+		oo_AUTO_OBJECT (PhonationTier, 0, glottis)
+		oo_AUTO_OBJECT (CouplingGridPlayOptions, 0, options)
 	#endif
+
 	#if oo_READING
 		options = CouplingGridPlayOptions_create ();
 		glottis = PhonationTier_create (xmin, xmax);
 		CouplingGrid_setNames (this);
 	#endif
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (CouplingGrid)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT FricationGridPlayOptions
-oo_DEFINE_CLASS (FricationGridPlayOptions, Data)
+oo_DEFINE_CLASS (FricationGridPlayOptions, Daata)
+
 	oo_LONG (startFricationFormant)
 	oo_LONG (endFricationFormant)
 	oo_INT (bypass)
+
 oo_END_CLASS (FricationGridPlayOptions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT FricationGrid
 oo_DEFINE_CLASS (FricationGrid, Function)
-	oo_OBJECT (IntensityTier, 0, fricationAmplitude) // dB
-	oo_OBJECT (FormantGrid, 0, frication_formants)
-	oo_COLLECTION (Ordered, frication_formants_amplitudes, RealTier, 0)
-	oo_OBJECT (IntensityTier, 0, bypass) // dB
+
+	oo_AUTO_OBJECT (IntensityTier, 0, fricationAmplitude) // dB
+	oo_AUTO_OBJECT (FormantGrid, 0, frication_formants)
+	oo_COLLECTION_OF (OrderedOf, frication_formants_amplitudes, IntensityTier, 0)
+	oo_AUTO_OBJECT (IntensityTier, 0, bypass) // dB
+
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (FricationGridPlayOptions, 0, options)
+		oo_AUTO_OBJECT (FricationGridPlayOptions, 0, options)
 	#endif
+
 	#if oo_READING
 		options = FricationGridPlayOptions_create ();
 		FricationGrid_setNames (this);
 	#endif
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (FricationGrid)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT KlattGridPlayOptions
-oo_DEFINE_CLASS (KlattGridPlayOptions, Data)
+oo_DEFINE_CLASS (KlattGridPlayOptions, Daata)
+
 	oo_DOUBLE (samplingFrequency)
 	oo_INT (scalePeak)
 	oo_DOUBLE (xmin)
 	oo_DOUBLE (xmax)
+
 oo_END_CLASS (KlattGridPlayOptions)
 #undef ooSTRUCT
 
+
 #define ooSTRUCT KlattGrid
 oo_DEFINE_CLASS (KlattGrid, Function)
-	oo_OBJECT (PhonationGrid, 0, phonation)   // Glottal source
-	oo_OBJECT (VocalTractGrid, 0, vocalTract) // Filter
-	oo_OBJECT (CouplingGrid, 0, coupling)     // Coupling between source and filter
-	oo_OBJECT (FricationGrid, 0, frication)   // Frication source
-	oo_OBJECT (IntensityTier, 0, gain)        // final scaling
+
+	oo_AUTO_OBJECT (PhonationGrid, 0, phonation)   // glottal source
+	oo_AUTO_OBJECT (VocalTractGrid, 0, vocalTract) // filter
+	oo_AUTO_OBJECT (CouplingGrid, 0, coupling)     // coupling between source and filter
+	oo_AUTO_OBJECT (FricationGrid, 0, frication)   // frication source
+	oo_AUTO_OBJECT (IntensityTier, 0, gain)        // final scaling
+
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (KlattGridPlayOptions, 0, options)
+		oo_AUTO_OBJECT (KlattGridPlayOptions, 0, options)
 	#endif
+
 	#if oo_READING
 		options = KlattGridPlayOptions_create ();
 		KlattGrid_setNames (this);
 	#endif
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
 	#endif
+
 oo_END_CLASS (KlattGrid)
 #undef ooSTRUCT
+
+/* End of file KlattGrid_def.h */
diff --git a/dwtools/KlattTable.cpp b/dwtools/KlattTable.cpp
index a099dcd..70492db 100644
--- a/dwtools/KlattTable.cpp
+++ b/dwtools/KlattTable.cpp
@@ -1,20 +1,19 @@
 /* KlattTable.cpp
  *
- * Copyright (C) 2008-2011 David Weenink
+ * Copyright (C) 2008-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* The README file that accompanied the version 3.03 softare:
@@ -292,18 +291,18 @@ sample.
 Notes
 -----
 
-This program is free software; you can redistribute it and/or modify
+This code is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 1, or (at your option)
 any later version.
 
-This program is distributed in the hope that it will be useful,
+This code is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
+along with this work; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 Bug reports, comments etc. to j.p.iles at cs.bham.ac.uk
@@ -362,8 +361,6 @@ Thing_implement (KlattTable, Table, 0);
 #define ALL_PARALLEL     2
 #define KlattTable_NPAR	40        /* Number of control parameters */
 #define MAX_SAM          20000     /* Maximum sample rate */
-#define TRUE             1
-#define FALSE            0
 #define IMPULSIVE        1         /* Type of voicing source */
 #define NATURAL          2
 #define SAMPLED          3
@@ -454,11 +451,11 @@ typedef struct structKlattGlobal {
 	short *natural_samples; /* pointer to an array of glottal samples */
 	long F0hz10; /* Voicing fund freq in units of 0.1 Hz */
 	long original_f0; /* original value of f0 not modified by flutter (kanweg) */
-	Resonator rp[7], rc[9], rnpp, rnpc, rgl, rlp, rout;
-	AntiResonator rnz;
+	autoResonator rp[7], rc[9], rnpp, rnpc, rgl, rlp, rout;
+	autoAntiResonator rnz;
 } *KlattGlobal;
 
-KlattTable KlattTable_readFromRawTextFile (MelderFile fs) {
+autoKlattTable KlattTable_readFromRawTextFile (MelderFile fs) {
 	try {
 		autoMatrix thee = Matrix_readFromRawTextFile (fs);
 
@@ -467,17 +464,17 @@ KlattTable KlattTable_readFromRawTextFile (MelderFile fs) {
 		}
 
 		autoKlattTable me = Thing_new (KlattTable);
-		Table_initWithColumnNames (me.peek(), thy ny, columnNames);
+		Table_initWithColumnNames (me.get(), thy ny, columnNames);
 		for (long irow = 1; irow <= thy ny; irow++) {
 			for (long jcol = 1; jcol <= KlattTable_NPAR; jcol++) {
 				double val = thy z[irow][jcol];
 				if (jcol > 3 && jcol < 13 && (jcol % 2 == 0) && val <= 0) { // bw == 0?
 					val = thy z[irow][jcol - 1] / 10;
 				}
-				Table_setNumericValue ( (Table) me.peek(), irow, jcol, val);
+				Table_setNumericValue ( (Table) me.get(), irow, jcol, val);
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattTable not read from file.");
 	}
@@ -485,17 +482,17 @@ KlattTable KlattTable_readFromRawTextFile (MelderFile fs) {
 
 static void KlattGlobal_free (KlattGlobal me) {
 	for (long i = 1; i <= 8; i++) {
-		Melder_free (my rc[i]);
+		my rc[i].reset();
 		if (i <= 6) {
-			Melder_free (my rp[i]);
+			my rp[i].reset();
 		}
 	}
-	Melder_free (my rnpp);
-	Melder_free (my rnpc);
-	Melder_free (my rnz);
-	Melder_free (my rgl);
-	Melder_free (my rlp);
-	Melder_free (my rout);
+	my rnpp.reset();
+	my rnpc.reset();
+	my rnz.reset();
+	my rgl.reset();
+	my rlp.reset();
+	my rout.reset();
 	Melder_free (me);
 }
 
@@ -550,7 +547,7 @@ static void KlattGlobal_init (KlattGlobal me, int synthesisModel, int numberOfFo
 
 	my FLPhz = (long) floor (0.0950 * my samrate); // depends on samplingFrequency ????
 	my BLPhz = (long) floor (0.0630 * my samrate);
-	Filter_setFB (my rlp, my FLPhz, my BLPhz);
+	Filter_setFB (my rlp.get(), my FLPhz, my BLPhz);
 }
 
 static KlattFrame KlattFrame_create () {
@@ -561,12 +558,12 @@ static void KlattFrame_free (KlattFrame me) {
 	Melder_free (me);
 }
 
-KlattTable KlattTable_create (double frameDuration, double totalDuration) {
+autoKlattTable KlattTable_create (double frameDuration, double totalDuration) {
 	try {
-		autoKlattTable me = (KlattTable) Thing_new (KlattTable);
+		autoKlattTable me = Thing_new (KlattTable);
 		long nrows = (long) floor (totalDuration / frameDuration) + 1;
-		Table_initWithColumnNames (me.peek(), nrows, columnNames);
-		return me.transfer();
+		Table_initWithColumnNames (me.get(), nrows, columnNames);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"KlattTable not created.");
 	}
@@ -603,28 +600,28 @@ static void KlattGlobal_getFrame (KlattGlobal me, KlattFrame thee) {
 
 	for (long i = 8; i > 0; i--) {
 		if (my nfcascade >= i) {
-			Filter_setFB (my rc[i], thy Fhz[i], thy Bhz[i]);
+			Filter_setFB (my rc[i].get(), thy Fhz[i], thy Bhz[i]);
 		}
 	}
 
 	/* Set coefficients of nasal resonator and zero antiresonator */
 
-	Filter_setFB (my rnpc, thy FNPhz, thy BNPhz);
-	Filter_setFB (my rnz, thy FNZhz, thy BNZhz);
+	Filter_setFB (my rnpc.get(), thy FNPhz, thy BNPhz);
+	Filter_setFB (my rnz.get(), thy FNZhz, thy BNZhz);
 
 	/* Set coefficients of parallel resonators, and amplitude of outputs */
 
 	for (long i = 1; i <= 6; i++) {
-		Filter_setFB (my rp[i], thy Fhz[i], thy Bphz[i]);
+		Filter_setFB (my rp[i].get(), thy Fhz[i], thy Bphz[i]);
 		my rp[i] -> a *= amp_parF[i] * DBtoLIN (thy A[i]);
 	}
 
-	Filter_setFB (my rnpp, thy FNPhz, thy BNPhz);
+	Filter_setFB (my rnpp.get(), thy FNPhz, thy BNPhz);
 	my rnpp -> a *= amp_parFNP;
 
 	/* output low-pass filter */
 
-	Filter_setFB (my rout, 0, (long) (my samrate / 2));
+	Filter_setFB (my rout.get(), 0, (long) (my samrate / 2));
 }
 
 /*
@@ -677,7 +674,7 @@ static double KlattGlobal_impulsive_source (KlattGlobal me) {   // ppgb: dit was
 
 	vwave = my nper < 3 ? doublet[my nper] : 0;
 
-	return Filter_getOutput (my rgl, vwave);
+	return Filter_getOutput (my rgl.get(), vwave);
 }
 
 /*
@@ -841,7 +838,7 @@ static void KlattGlobal_pitch_synch_par_reset (KlattGlobal me) {
 
 		long temp = my samrate / my nopen;
 
-		Filter_setFB (my rgl, 0, temp); // Only used for impulsive source.
+		Filter_setFB (my rgl.get(), 0, temp); // Only used for impulsive source.
 
 		/* Make gain at F1 about constant */
 
@@ -944,7 +941,7 @@ static void KlattGlobal_synthesizeFrame (KlattGlobal me, short *output) {
 				to samrate samples/sec.  Resonator f=.09*samrate, bw=.06*samrate
 			*/
 
-			voice = Filter_getOutput (my rlp, voice);
+			voice = Filter_getOutput (my rlp.get(), voice);
 
 			/* Increment counter that keeps track of 4*samrate samples per sec */
 
@@ -988,12 +985,12 @@ static void KlattGlobal_synthesizeFrame (KlattGlobal me, short *output) {
 		*/
 
 		if (my synthesis_model != ALL_PARALLEL) {
-			out = Filter_getOutput (my rnz, glotout); /* anti resonator */
-			out = Filter_getOutput (my rnpc, out);
+			out = Filter_getOutput (my rnz.get(), glotout); /* anti resonator */
+			out = Filter_getOutput (my rnpc.get(), out);
 
 			for (long i = 8; i > 0; i--) {
 				if (my nfcascade >= i) {
-					out = Filter_getOutput (my rc[i], out);
+					out = Filter_getOutput (my rc[i].get(), out);
 				}
 			}
 		} else {
@@ -1022,16 +1019,16 @@ static void KlattGlobal_synthesizeFrame (KlattGlobal me, short *output) {
 		Problem: The source signal is already v'[n], and we are differentiating here again ???
 		*/
 
-		out += Filter_getOutput (my rp[1], sourc);
+		out += Filter_getOutput (my rp[1].get(), sourc);
 
 		sourc = frics + par_glotout - glotlast; // diff
 		glotlast = par_glotout;
 
-		out += Filter_getOutput (my rnpp, sourc);
+		out += Filter_getOutput (my rnpp.get(), sourc);
 
 		for (long i = 6; i >= 2; i--) {
 			if (my nfcascade >= i) {
-				out = Filter_getOutput (my rp[i], sourc) - out;
+				out = Filter_getOutput (my rp[i].get(), sourc) - out;
 			}
 		}
 
@@ -1065,7 +1062,7 @@ static void KlattGlobal_synthesizeFrame (KlattGlobal me, short *output) {
 			}
 		}
 
-		out = Filter_getOutput (my rout, out);
+		out = Filter_getOutput (my rout.get(), out);
 
 		double temp = out * my amp_gain0;  /* Convert back to integer */
 
@@ -1082,50 +1079,49 @@ static void KlattGlobal_synthesizeFrame (KlattGlobal me, short *output) {
 static int KlattTable_checkLimits (KlattTable me) {
 	long nviolations_upper[KlattTable_NPAR + 1] = { 0 }, nviolations_lower[KlattTable_NPAR + 1] = { 0 };
 	long lower[KlattTable_NPAR + 1] = { 0, // dummy
-	                                    10, 0,  // f0, av
-	                                    200, 40, 550, 40, 1200, 40, 1200, 40, 1200, 40, 1200, 40, // f1,b1 -- f6,b6
-	                                    248, 40, 248, 40, // fnz, bnz, fnp, bnp
-	                                    0, 0, 0, 0, 0, 0, // ah, kopen, aturb, tilt, af, skew
-	                                    0, 40, 0, 40, 0, 40, 0, 40, 0, 40, 0, 40, // a1,b1p -- a6,b6p
-	                                    0, 0, 0, 0 // anp, ab, avp, gain
-	                                  };
+		10, 0,  // f0, av
+		200, 40, 550, 40, 1200, 40, 1200, 40, 1200, 40, 1200, 40, // f1,b1 -- f6,b6
+		248, 40, 248, 40, // fnz, bnz, fnp, bnp
+		0, 0, 0, 0, 0, 0, // ah, kopen, aturb, tilt, af, skew
+		0, 40, 0, 40, 0, 40, 0, 40, 0, 40, 0, 40, // a1,b1p -- a6,b6p
+		0, 0, 0, 0 // anp, ab, avp, gain
+	};
 	long upper[KlattTable_NPAR + 1] = { 0, // dummy
-	                                    10000, 70,   // f0, av
-	                                    1300, 1000, 3000, 1000, 4999, 1000, 4999, 1000, 6999, 1000, 7000, 1000,  // f1,b1 -- f6,b6
-	                                    528, 1000, 528, 1000, // fnz, bnz, fnp, bnp
-	                                    70, 60, 80, 24, 80, 40,  // ah, kopen, aturb, tilt, af, skew
-	                                    80, 1000, 80, 1000, 80, 1000, 80, 1000, 80, 1000, 80, 1000, // a1,b1p -- a6,b6p
-	                                    80, 80, 70, 80  // anp, ab, avp, gain
-	                                  };
+		10000, 70,   // f0, av
+		1300, 1000, 3000, 1000, 4999, 1000, 4999, 1000, 6999, 1000, 7000, 1000,  // f1,b1 -- f6,b6
+		528, 1000, 528, 1000, // fnz, bnz, fnp, bnp
+		70, 60, 80, 24, 80, 40,  // ah, kopen, aturb, tilt, af, skew
+		80, 1000, 80, 1000, 80, 1000, 80, 1000, 80, 1000, 80, 1000, // a1,b1p -- a6,b6p
+		80, 80, 70, 80  // anp, ab, avp, gain
+	};
 
 	long nv = 0;
-	for (long irow = 1; irow <= my rows -> size; irow++) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
 		for (long j = 1; j <= KlattTable_NPAR; j++) {
-			long val = Table_getNumericValue_Assert ( (Table) me, irow, j);   // ppgb: truncatie? kan dat kloppen?
-			if (val < lower[j]) {
-				nviolations_lower[j]++; nv++;
+			long val = Table_getNumericValue_Assert (me, irow, j);   // ppgb: truncatie? kan dat kloppen?
+			if (val < lower [j]) {
+				nviolations_lower [j] ++;
+				nv ++;
 			} else if (val > upper[j]) {
-				nviolations_upper[j]++; nv++;
+				nviolations_upper [j] ++;
+				nv ++;
 			}
 		}
 	}
 	if (nv > 0) {
 		MelderInfo_open ();
 		MelderInfo_writeLine (U"Diagnostics for KlattTable \"", Thing_getName (me), U"\":");
-		MelderInfo_writeLine (U"Number of frames: ", my rows -> size);
-		for (long j = 1; j <= KlattTable_NPAR; j++) {
-			if (nviolations_lower[j] > 0) {
-				if (nviolations_upper[j] > 0) {
-					MelderInfo_writeLine (columnNamesA[j], U": ",
-					                       nviolations_lower[j], U" frame(s) < min = ", nviolations_lower[j], U"; ",
-					                       nviolations_upper[j], U" frame(s) > max = ", upper[j]);
+		MelderInfo_writeLine (U"Number of frames: ", my rows.size);
+		for (long j = 1; j <= KlattTable_NPAR; j ++) {
+			if (nviolations_lower [j] > 0) {
+				if (nviolations_upper [j] > 0) {
+					MelderInfo_writeLine (columnNamesA [j], U": ", nviolations_lower [j], U" frame(s) < min = ", nviolations_lower [j], U"; ",
+						nviolations_upper [j], U" frame(s) > max = ", upper [j]);
 				} else {
-					MelderInfo_writeLine (columnNamesA[j], U": ",
-					                       nviolations_lower[j], U" frame(s) < min = ", lower[j]);
+					MelderInfo_writeLine (columnNamesA [j], U": ", nviolations_lower [j], U" frame(s) < min = ", lower [j]);
 				}
 			} else if (nviolations_upper[j] > 0) {
-				MelderInfo_writeLine (columnNamesA[j], U": ",
-				                       nviolations_upper[j], U" frame(s) > max = ", upper[j]);
+				MelderInfo_writeLine (columnNamesA [j], U": ", nviolations_upper [j], U" frame(s) > max = ", upper [j]);
 			}
 		}
 		MelderInfo_close ();
@@ -1134,7 +1130,7 @@ static int KlattTable_checkLimits (KlattTable me) {
 	return 1;
 }
 
-Sound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesisModel, int numberOfFormants, double frameDuration, int glottalSource, double flutter, int outputType) {
+autoSound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesisModel, int numberOfFormants, double frameDuration, int glottalSource, double flutter, int outputType) {
 	KlattGlobal thee = 0;
 	KlattFrame frame = 0;
 	try {
@@ -1150,11 +1146,11 @@ Sound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesi
 
 		KlattGlobal_init (thee, synthesisModel, numberOfFormants, glottalSource, frameDuration, (long) floor (flutter), outputType);
 
-		autoSound him = Sound_createSimple (1, frameDuration * my rows -> size, samplingFrequency);
+		autoSound him = Sound_createSimple (1, frameDuration * my rows.size, samplingFrequency);
 
-		for (long irow = 1 ; irow <= my rows -> size; irow++) {
+		for (long irow = 1 ; irow <= my rows.size; irow++) {
 			for (long col = 1; col <= KlattTable_NPAR; col++) {
-				par[col] = Table_getNumericValue_Assert ( (Table) me, irow, col);   // ppgb: truncatie?
+				par[col] = Table_getNumericValue_Assert (me, irow, col);   // ppgb: truncatie?
 			}
 			long jcol = 1;
 			frame ->  F0hz10 = par[jcol++]; frame ->  AVdb = par[jcol++];
@@ -1189,7 +1185,7 @@ Sound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesi
 			}
 		}
 		KlattGlobal_free (thee); KlattFrame_free (frame);
-		return him.transfer ();
+		return him;
 	} catch (MelderError) {
 		KlattGlobal_free (thee);
 		KlattFrame_free (frame);
@@ -1198,7 +1194,7 @@ Sound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesi
 }
 
 
-KlattTable KlattTable_createExample () {
+autoKlattTable KlattTable_createExample () {
 	long nrows = 1376;
 	struct klatt_params {
 		short p[40];
@@ -2581,41 +2577,41 @@ KlattTable KlattTable_createExample () {
 		{{ 830, 0, 920, 0, 1445, 0, 2804, 0, 3915, 0, 5969, 0, 6256, 0, 0, 0, 200, 30, 0, 60, 0, 0, 0, 0, 0, 87, 0, 62, 0, 103, 0, 105, 0, 80, 0, 80, 0, 0, 0, 60 }}
 	};
 	try {
-		autoKlattTable me = (KlattTable) Thing_new (KlattTable);
-		Table_initWithColumnNames (me.peek(), nrows, columnNames);
+		autoKlattTable me = Thing_new (KlattTable);
+		Table_initWithColumnNames (me.get(), nrows, columnNames);
 		for (long irow = 1; irow <= nrows; irow++) {
 			for (long jcol = 1; jcol <= KlattTable_NPAR; jcol++) {
 				double val = klatt_data[irow - 1].p[jcol - 1];
 				if (jcol > 3 && jcol < 13 && (jcol % 2 == 0) && val <= 0) { // bw == 0?
 					val = klatt_data[irow - 1].p[jcol] / 10;
 				}
-				Table_setNumericValue ( (Table) me.peek(), irow, jcol, val);
+				Table_setNumericValue ( (Table) me.get(), irow, jcol, val);
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U" KlattTable example not created.");
 	}
 }
 
-KlattTable Table_to_KlattTable (Table me) {
+autoKlattTable Table_to_KlattTable (Table me) {
 	try {
 		if (my numberOfColumns != KlattTable_NPAR) {
 			Melder_throw (U"A KlattTable needs ", KlattTable_NPAR, U" columns.");
 		}
 		autoKlattTable thee = Thing_new (KlattTable);
-		my structTable :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTable :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"KlattTable not created from Table.");
 	}
 }
 
-Table KlattTable_to_Table (KlattTable me) {
+autoTable KlattTable_to_Table (KlattTable me) {
 	try {
 		autoTable thee = Thing_new (Table);
-		my structTable :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTable :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created from KlattTable.");
 	}
diff --git a/dwtools/KlattTable.h b/dwtools/KlattTable.h
index 912a2b6..936e342 100644
--- a/dwtools/KlattTable.h
+++ b/dwtools/KlattTable.h
@@ -2,21 +2,20 @@
 #define _KlattTable_h_
 /* KlattTable.h
  *
- * Copyright (C) 2008-2011 David Weenink
+ * Copyright (C) 2008-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,7 +30,7 @@
 Thing_define (KlattTable, Table) {
 };
 
-KlattTable KlattTable_create (double frameDuration, double totalDuration);
+autoKlattTable KlattTable_create (double frameDuration, double totalDuration);
 /*
 f0  (08)	This is the fundamental frequency (pitch) of the utterance.
 		In this case it is specified in steps of 0.1 Hz, hence 100Hz
@@ -94,16 +93,16 @@ gain  	Overall gain in dB range 0-80.
 
 */
 
-Sound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesisModel, int numberOfFormants, double frameDuration, int voicing,
-double flutter, int outputType);
+autoSound KlattTable_to_Sound (KlattTable me, double samplingFrequency, int synthesisModel, int numberOfFormants, double frameDuration, int voicing, double flutter, int outputType);
 
-Sound KlattTable_and_Sound_to_Sound (KlattTable me, Sound thee);
+autoSound KlattTable_and_Sound_to_Sound (KlattTable me, Sound thee);
 
-KlattTable KlattTable_createExample ();
+autoKlattTable KlattTable_createExample ();
 
-KlattTable Table_to_KlattTable (Table me);
-Table KlattTable_to_Table (KlattTable me);
+autoKlattTable Table_to_KlattTable (Table me);
 
-KlattTable KlattTable_readFromRawTextFile (MelderFile fs);
+autoTable KlattTable_to_Table (KlattTable me);
+
+autoKlattTable KlattTable_readFromRawTextFile (MelderFile fs);
 
 #endif /* _KlattTable_h_ */
diff --git a/dwtools/LFCC.cpp b/dwtools/LFCC.cpp
index c1e0f3e..8fa8ac2 100644
--- a/dwtools/LFCC.cpp
+++ b/dwtools/LFCC.cpp
@@ -2,21 +2,20 @@
  *
  *	Linear Frequency Cepstral Coefficients class.
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,12 +28,11 @@
 
 Thing_implement (LFCC, CC, 1);
 
-LFCC LFCC_create (double tmin, double tmax, long nt, double dt, double t1,
-                  long maximumNumberOfCoefficients, double fmin, double fmax) {
+autoLFCC LFCC_create (double tmin, double tmax, long nt, double dt, double t1, long maximumNumberOfCoefficients, double fmin, double fmax) {
 	try {
 		autoLFCC me = Thing_new (LFCC);
-		CC_init (me.peek(), tmin, tmax, nt, dt, t1, maximumNumberOfCoefficients, fmin, fmax);
-		return me.transfer();
+		CC_init (me.get(), tmin, tmax, nt, dt, t1, maximumNumberOfCoefficients, fmin, fmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LFCC not created.");
 	}
diff --git a/dwtools/LFCC.h b/dwtools/LFCC.h
index 40263ef..609ee07 100644
--- a/dwtools/LFCC.h
+++ b/dwtools/LFCC.h
@@ -4,21 +4,20 @@
  *
  * Linear Frequency Cepstral Coefficients class.
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -32,7 +31,7 @@
 Thing_define (LFCC, CC) {
 };
 
-LFCC LFCC_create (double tmin, double tmax, long nt, double dt, double t1,
+autoLFCC LFCC_create (double tmin, double tmax, long nt, double dt, double t1,
 	long maximumNumberOfCoefficients, double fmin, double fmax);
 
 #endif /* _LFCC_h_ */
diff --git a/dwtools/LongSound_extensions.cpp b/dwtools/LongSound_extensions.cpp
index a521e8b..50f9c47 100644
--- a/dwtools/LongSound_extensions.cpp
+++ b/dwtools/LongSound_extensions.cpp
@@ -1,20 +1,19 @@
 /* LongSound_extensions.c
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,8 +48,7 @@
 /*
   Precondition: size (my buffer) >= nbuf
 */
-static void _LongSound_to_multichannel_buffer (LongSound me, short *buffer, long nbuf,
-        int nchannels, int ichannel, long ibuf) {
+static void _LongSound_to_multichannel_buffer (LongSound me, short *buffer, long nbuf, int nchannels, int ichannel, long ibuf) {
 	long numberOfReads = (my nx - 1) / nbuf + 1;
 	long n_to_read = 0;
 
@@ -124,14 +122,13 @@ static void MelderFile_truncate (MelderFile me, long size) {
 	HANDLE hFile;
 	DWORD fdwAccess = GENERIC_READ | GENERIC_WRITE, fPos;
 	DWORD fdwShareMode = 0; /* File cannot be shared */
-	LPSECURITY_ATTRIBUTES lpsa = NULL;
+	LPSECURITY_ATTRIBUTES lpsa = nullptr;
 	DWORD fdwCreate = OPEN_EXISTING;
 	LARGE_INTEGER fileSize;
 
 	MelderFile_close (me);
 
-	hFile = CreateFileW (Melder_peek32toW (my path), fdwAccess, fdwShareMode, lpsa, fdwCreate,
-	                     FILE_ATTRIBUTE_NORMAL, NULL);
+	hFile = CreateFileW (Melder_peek32toW (my path), fdwAccess, fdwShareMode, lpsa, fdwCreate, FILE_ATTRIBUTE_NORMAL, nullptr);
 	if (hFile == INVALID_HANDLE_VALUE) {
 		Melder_throw (U"Can't open file ", me, U".");
 	}
@@ -153,8 +150,9 @@ static void MelderFile_truncate (MelderFile me, long size) {
 #elif defined(linux) || defined(macintosh)
 
 	MelderFile_close (me);
-	if (truncate (Melder_peek32to8 (my path), size) == -1) Melder_throw (U"Truncating failed for file ",
-		        MelderFile_messageName (me), U" (", Melder_peek8to32 (strerror (errno)), U").");
+	if (truncate (Melder_peek32to8 (my path), size) == -1) {
+		Melder_throw (U"Truncating failed for file ", MelderFile_messageName (me), U" (", Melder_peek8to32 (strerror (errno)), U").");
+	}
 #else
 	Melder_throw (U"Don't know what to do.");
 #endif
@@ -169,18 +167,17 @@ static void writePartToOpenFile16 (LongSound me, int audioFileType, long imin, l
 			long numberOfSamplesToCopy = ibuffer < numberOfBuffers ? my nmax : numberOfSamplesInLastBuffer;
 			LongSound_readAudioToShort (me, my buffer, offset, numberOfSamplesToCopy);
 			offset += numberOfSamplesToCopy;
-			MelderFile_writeShortToAudio (file, my numberOfChannels,
-			    Melder_defaultAudioFileEncoding (audioFileType, numberOfBitsPerSamplePoint), my buffer, numberOfSamplesToCopy);
+			MelderFile_writeShortToAudio (file, my numberOfChannels, Melder_defaultAudioFileEncoding (audioFileType, numberOfBitsPerSamplePoint), my buffer, numberOfSamplesToCopy);
 		}
 	}
-	/*
-	 * We "have" no samples any longer.
-	 */
+
+	//  We "have" no samples any longer.
+	
 	my imin = 1;
 	my imax = 0;
 }
 
-void LongSounds_appendToExistingSoundFile (Collection me, MelderFile file) {
+void LongSounds_appendToExistingSoundFile (OrderedOf<structSampled>* me, MelderFile file) {
 	long pre_append_endpos = 0, numberOfBitsPerSamplePoint = 16;
 	try {
 		if (my size < 1) {
@@ -203,8 +200,7 @@ void LongSounds_appendToExistingSoundFile (Collection me, MelderFile file) {
 		long startOfData;
 		int32 numberOfSamples;
 		int numberOfChannels, encoding;
-		int audioFileType = MelderFile_checkSoundFile (file, &numberOfChannels,
-		                    &encoding, &sampleRate_d, &startOfData, &numberOfSamples);
+		int audioFileType = MelderFile_checkSoundFile (file, &numberOfChannels, &encoding, &sampleRate_d, &startOfData, &numberOfSamples);
 
 		if (audioFileType == 0) {
 			Melder_throw (U"Not a sound file.");
@@ -213,9 +209,9 @@ void LongSounds_appendToExistingSoundFile (Collection me, MelderFile file) {
 		// Check whether all the sample rates and channels match.
 
 		long sampleRate = (long) floor (sampleRate_d);
-		for (long i = 1; i <= my size; i++) {
-			int sampleRatesMatch, numbersOfChannelsMatch;
-			Sampled data = (Sampled) my item [i];
+		for (long i = 1; i <= my size; i ++) {
+			bool sampleRatesMatch, numbersOfChannelsMatch;
+			Sampled data = my at [i];
 			if (data -> classInfo == classSound) {
 				Sound sound = (Sound) data;
 				sampleRatesMatch = floor (1.0 / sound -> dx + 0.5) == sampleRate;
@@ -242,8 +238,8 @@ void LongSounds_appendToExistingSoundFile (Collection me, MelderFile file) {
 		pre_append_endpos = MelderFile_tell (file);
 
 		errno = 0;
-		for (long i = 1; i <= my size; i++) {
-			Sampled data = (Sampled) my item [i];
+		for (long i = 1; i <= my size; i ++) {
+			Sampled data = my at [i];
 			if (data -> classInfo == classSound) {
 				Sound sound = (Sound) data;
 				MelderFile_writeFloatToAudio (file, sound -> ny, Melder_defaultAudioFileEncoding
diff --git a/dwtools/LongSound_extensions.h b/dwtools/LongSound_extensions.h
index e57d59c..6767ca4 100644
--- a/dwtools/LongSound_extensions.h
+++ b/dwtools/LongSound_extensions.h
@@ -2,21 +2,20 @@
 #define _LongSound_extensions_h_
 /* LongSound_extensions.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,9 +26,8 @@
 
 #include "LongSound.h"
 
-void LongSounds_writeToStereoAudioFile16 (LongSound me, LongSound thee,
-	int audioFileType, MelderFile file);
+void LongSounds_writeToStereoAudioFile16 (LongSound me, LongSound thee, int audioFileType, MelderFile file);
 
-void LongSounds_appendToExistingSoundFile (Collection me, MelderFile file);
+void LongSounds_appendToExistingSoundFile (OrderedOf<structSampled>* me, MelderFile file);
 
 #endif /* _LongSound_extensions_h_ */
diff --git a/dwtools/Ltas_extensions.cpp b/dwtools/Ltas_extensions.cpp
index 2d4ea57..1ceb77f 100644
--- a/dwtools/Ltas_extensions.cpp
+++ b/dwtools/Ltas_extensions.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2012-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Ltas_extensions.h"
diff --git a/dwtools/Ltas_extensions.h b/dwtools/Ltas_extensions.h
index f9d6173..468d956 100644
--- a/dwtools/Ltas_extensions.h
+++ b/dwtools/Ltas_extensions.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2012-2013 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Ltas.h"
diff --git a/dwtools/MDS.cpp b/dwtools/MDS.cpp
index 140191c..04d7bf4 100644
--- a/dwtools/MDS.cpp
+++ b/dwtools/MDS.cpp
@@ -1,20 +1,19 @@
 /* MDS.cpp
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -40,10 +39,33 @@
 
 #define TINY 1e-30
 
+Thing_implement (Kruskal, Thing, 0);
+
+Thing_implement (Transformator, Thing, 0);
+Thing_implement (RatioTransformator, Transformator, 0);
+Thing_implement (MonotoneTransformator, Transformator, 0);
+Thing_implement (ISplineTransformator, Transformator, 0);
+
+Thing_implement (MDSVec, Daata, 0);
+Thing_implement (MDSVecList, Ordered, 0);
+
+Thing_implement (Weight, TableOfReal, 0);
+Thing_implement (Salience, TableOfReal, 0);
+Thing_implement (ScalarProduct, TableOfReal, 0);
+
+Thing_implement (ConfusionList, TableOfRealList, 0);
+Thing_implement (ProximityList, TableOfRealList, 0);
+Thing_implement (ScalarProductList, TableOfRealList, 0);
+
+Thing_implement (DistanceList, ProximityList, 0);
+Thing_implement (Dissimilarity, Proximity, 0);
+Thing_implement (DissimilarityList, ProximityList, 0);
+Thing_implement (Similarity, Proximity, 0);
+
+
 /********************** NUMERICAL STUFF **************************************/
 
-static void NUMdmatrix_into_vector (double **m, double *v, long r1, long r2,
-                                    long c1, long c2) {
+static void NUMdmatrix_into_vector (double **m, double *v, long r1, long r2, long c1, long c2) {
 	long k = 1;
 
 	for (long i = r1; i <= r2; i++) {
@@ -53,8 +75,7 @@ static void NUMdmatrix_into_vector (double **m, double *v, long r1, long r2,
 	}
 }
 
-static void NUMdvector_into_matrix (const double *v, double **m,
-                                    long r1, long r2, long c1, long c2) {
+static void NUMdvector_into_matrix (const double *v, double **m, long r1, long r2, long c1, long c2) {
 	long k = 1;
 
 	for (long i = r1; i <= r2; i++) {
@@ -66,12 +87,12 @@ static void NUMdvector_into_matrix (const double *v, double **m,
 
 static void NUMdmatrix_normalizeRows (double **m, long nr, long nc) {
 	for (long i = 1; i <= nr; i++) {
-		double rowSum = 0;
+		double rowSum = 0.0;
 		for (long j = 1; j <= nc; j++) {
 			rowSum += m[i][j];
 		}
 
-		if (rowSum != 0) {
+		if (rowSum != 0.0) {
 			for (long j = 1; j <= nc; j++) {
 				m[i][j] /= rowSum;
 			}
@@ -106,10 +127,10 @@ static void NUMsort3 (double *data, long *iPoint, long *jPoint, long ifrom, long
 	//NUMindexx (data + ifrom - 1, n, indx + ifrom - 1);
 	NUMindexx (&data [ifrom - 1], n, &indx [ifrom - 1]);
 	if (! ascending) {
-		for (long j = ifrom; j <= ifrom + n / 2; j++) {
-			long tmp = indx[j];
-			indx[j] = indx[ito - j + ifrom];
-			indx[ito - j + ifrom] = tmp;
+		for (long j = ifrom; j <= ifrom + n / 2; j ++) {
+			long tmp = indx [j];
+			indx [j] = indx [ito - j + ifrom];
+			indx [ito - j + ifrom] = tmp;
 		}
 	}
 	for (long j = ifrom; j <= ito; j++) {
@@ -135,61 +156,61 @@ static void NUMsort3 (double *data, long *iPoint, long *jPoint, long ifrom, long
 	}
 }
 
-/************ Configurations & Similarity **************************/
+/************ ConfigurationList & Similarity **************************/
 
-Distances Configurations_to_Distances (Configurations me) {
+autoDistanceList ConfigurationList_to_DistanceList (ConfigurationList me) {
 	try {
-		autoDistances thee = Distances_create ();
-		for (long i = 1; i <= my size; i++) {
-			Configuration conf = (Configuration) (my item[i]);
+		autoDistanceList thee = DistanceList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			Configuration conf = my at [i];
 			autoDistance d = Configuration_to_Distance (conf);
-			Thing_setName (d.peek(), Thing_getName (conf));
-			Collection_addItem (thee.peek(), d.transfer());
+			Thing_setName (d.get(), Thing_getName (conf));
+			thy addItem_move (d.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Distances not created form Configurations.");
 	}
 }
 
-Similarity Configurations_to_Similarity_cc (Configurations me, Weight weight) {
+autoSimilarity ConfigurationList_to_Similarity_cc (ConfigurationList me, Weight weight) {
 	try {
-		autoDistances d = Configurations_to_Distances (me);
-		autoSimilarity thee = Distances_to_Similarity_cc (d.peek(), weight);
-		return thee.transfer();
+		autoDistanceList d = ConfigurationList_to_DistanceList (me);
+		autoSimilarity thee = DistanceList_to_Similarity_cc (d.get(), weight);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Similarity not created form Configurations.");
 	}
 }
 
-Similarity Distances_to_Similarity_cc (Distances me, Weight w) {
+autoSimilarity DistanceList_to_Similarity_cc (DistanceList me, Weight w) {
 	try {
 		if (my size == 0) {
 			Melder_throw (U"Distances is empty.");
 		}
-		if (! TablesOfReal_checkDimensions (me)) {
+		if (! TableOfRealList_haveIdenticalDimensions (my asTableOfRealList())) {
 			Melder_throw (U"All matrices must have the same dimensions.");
 		}
-		autoWeight aw = 0;
-		if (w == 0) {
-			aw.reset (Weight_create ( ( (Distance) (my item[1])) -> numberOfRows));
-			w = aw.peek();
+		autoWeight aw;
+		if (! w) {
+			aw = Weight_create (my at [1] -> numberOfRows);
+			w = aw.get();
 		}
 
 		autoSimilarity thee = Similarity_create (my size);
 
-		for (long i = 1; i <= my size; i++) {
-			Distance di = (Distance) (my item[i]);
+		for (long i = 1; i <= my size; i ++) {
+			Distance di = my at [i];
 			char32 *name = Thing_getName (di);
-			TableOfReal_setRowLabel (thee.peek(), i, name);
-			TableOfReal_setColumnLabel (thee.peek(), i, name);
+			TableOfReal_setRowLabel (thee.get(), i, name);
+			TableOfReal_setColumnLabel (thee.get(), i, name);
 			thy data[i][i] = 1;
-			for (long j = i + 1; j <= my size; j++) {
-				Distance dj = (Distance) (my item[j]);
-				thy data[i][j] = thy data[j][i] = Distance_Weight_congruenceCoefficient (di, dj, w);
+			for (long j = i + 1; j <= my size; j ++) {
+				Distance dj = my at [j];
+				thy data [i] [j] = thy data [j] [i] = Distance_Weight_congruenceCoefficient (di, dj, w);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Similarity not created form Distancess.");
 	}
@@ -198,47 +219,41 @@ Similarity Distances_to_Similarity_cc (Distances me, Weight w) {
 
 /***************** Transformator **********************************************/
 
-Thing_implement (Transformator, Thing, 0);
-
-Distance structTransformator :: v_transform (MDSVec vec, Distance dist, Weight w) {
+autoDistance structTransformator :: v_transform (MDSVec vec, Distance dist, Weight /* w */) {
 	try {
-		(void) w;
-
 		autoDistance thee = Distance_create (numberOfPoints);
-		TableOfReal_copyLabels (dist, thee.peek(), 1, 1);
-		/*
-			Absolute scaling
-		*/
+		TableOfReal_copyLabels (dist, thee.get(), 1, 1);
+
+		// Absolute scaling
+
 		for (long i = 1; i <= vec -> nProximities; i++) {
 			long ii = vec -> iPoint[i];
 			long jj = vec -> jPoint[i];
 			thy data[ii][jj] = thy data[jj][ii] = vec -> proximity[i];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
 }
 
-void Transformator_init (I, long numberOfPoints) {
-	iam (Transformator);
+void Transformator_init (Transformator me, long numberOfPoints) {
 	my numberOfPoints = numberOfPoints;
 	my normalization = 1;
 }
 
-Transformator Transformator_create (long numberOfPoints) {
+autoTransformator Transformator_create (long numberOfPoints) {
 	try {
 		autoTransformator me = Thing_new (Transformator);
-		Transformator_init (me.peek(), numberOfPoints);
+		Transformator_init (me.get(), numberOfPoints);
 		my normalization = 0;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"No Transformator created.");
 	}
 }
 
-Distance Transformator_transform (I, MDSVec vec, Distance d, Weight w) {
-	iam (Transformator);
+autoDistance Transformator_transform (Transformator me, MDSVec vec, Distance d, Weight w) {
 	try {
 		if (my numberOfPoints != vec -> nPoints ||
 		        my numberOfPoints != d -> numberOfRows ||
@@ -251,99 +266,91 @@ Distance Transformator_transform (I, MDSVec vec, Distance d, Weight w) {
 	}
 }
 
-Thing_implement (RatioTransformator, Transformator, 0);
-
-Distance structRatioTransformator :: v_transform (MDSVec vec, Distance d, Weight w) {
+autoDistance structRatioTransformator :: v_transform (MDSVec vec, Distance d, Weight w) {
 	autoDistance thee = Distance_create (numberOfPoints);
-	TableOfReal_copyLabels (d, thee.peek(), 1, 1);
+	TableOfReal_copyLabels (d, thee.get(), 1, 1);
 
 	// Determine ratio (eq. 9.4)
 
-	double etaSq = 0, rho = 0;
-	for (long i = 1; i <= vec -> nProximities; i++) {
-		long ii = vec -> iPoint[i];
-		long jj = vec -> jPoint[i];
-		double delta_ij = vec -> proximity[i], d_ij = d -> data[ii][jj];
-		double tmp = w -> data[ii][jj] * delta_ij * delta_ij;
+	double etaSq = 0.0, rho = 0.0;
+	for (long i = 1; i <= vec -> nProximities; i ++) {
+		long ii = vec -> iPoint [i];
+		long jj = vec -> jPoint [i];
+		double delta_ij = vec -> proximity[i], d_ij = d -> data [ii] [jj];
+		double tmp = w -> data [ii] [jj] * delta_ij * delta_ij;
 		etaSq += tmp;
 		rho += tmp * d_ij * d_ij;
 	}
 
 	// transform
 
-	if (etaSq == 0) {
+	if (etaSq == 0.0) {
 		Melder_throw (U"Eta squared is zero.");
 	}
-	this -> ratio = rho / etaSq;
-	for (long i = 1; i <= vec -> nProximities; i++) {
-		long ii = vec -> iPoint[i];
-		long jj = vec -> jPoint[i];
-		thy data[ii][jj] = thy data[jj][ii] = this -> ratio * vec -> proximity[i];
+	our ratio = rho / etaSq;
+	for (long i = 1; i <= vec -> nProximities; i ++) {
+		long ii = vec -> iPoint [i];
+		long jj = vec -> jPoint [i];
+		thy data [ii] [jj] = thy data [jj] [ii] = our ratio * vec -> proximity [i];
 	}
 
-	if (normalization) {
-		Distance_Weight_smacofNormalize (thee.peek(), w);
+	if (our normalization) {
+		Distance_Weight_smacofNormalize (thee.get(), w);
 	}
-	return thee.transfer();
+	return thee;
 }
 
-RatioTransformator RatioTransformator_create (long numberOfPoints) {
+autoRatioTransformator RatioTransformator_create (long numberOfPoints) {
 	try {
 		autoRatioTransformator me = Thing_new (RatioTransformator);
-		Transformator_init (me.peek(), numberOfPoints);
-		return me.transfer();
+		Transformator_init (me.get(), numberOfPoints);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"RatioTransformator not created.");
 	}
 }
 
-Thing_implement (MonotoneTransformator, Transformator, 0);
-
-Distance structMonotoneTransformator :: v_transform (MDSVec vec, Distance d, Weight w) {
+autoDistance structMonotoneTransformator :: v_transform (MDSVec vec, Distance d, Weight w) {
 	try {
 		autoDistance thee = MDSVec_Distance_monotoneRegression (vec, d, tiesProcessing);
 		if (normalization) {
-			Distance_Weight_smacofNormalize (thee.peek(), w);
+			Distance_Weight_smacofNormalize (thee.get(), w);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
-
 }
 
-MonotoneTransformator MonotoneTransformator_create (long numberOfPoints) {
+autoMonotoneTransformator MonotoneTransformator_create (long numberOfPoints) {
 	try {
 		autoMonotoneTransformator me = Thing_new (MonotoneTransformator);
-		Transformator_init (me.peek(), numberOfPoints);
+		Transformator_init (me.get(), numberOfPoints);
 		my tiesProcessing = MDS_PRIMARY_APPROACH;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MonotoneTransformator not created.");
 	}
 }
 
-void MonotoneTransformator_setTiesProcessing (MonotoneTransformator me,
-        int tiesProcessing) {
+void MonotoneTransformator_setTiesProcessing (MonotoneTransformator me, int tiesProcessing) {
 	my tiesProcessing = tiesProcessing;
 }
 
-Thing_implement (ISplineTransformator, Transformator, 0);
-
-void structISplineTransformator :: v_destroy () {
+void structISplineTransformator :: v_destroy () noexcept {
 	NUMvector_free<double> (b, 1);
 	NUMvector_free<double> (knot, 1);
 	NUMmatrix_free<double> (m, 1, 1);
 	ISplineTransformator_Parent :: v_destroy ();
 }
 
-Distance structISplineTransformator :: v_transform (MDSVec vec, Distance dist, Weight w) {
+autoDistance structISplineTransformator :: v_transform (MDSVec vec, Distance dist, Weight w) {
 	double tol = 1e-6;
 	long itermax = 20, nx = vec -> nProximities;
 	long nKnots = numberOfInteriorKnots + order + order + 2;
 
 	autoDistance thee = Distance_create (dist -> numberOfRows);
-	TableOfReal_copyLabels (dist, thee.peek(), 1, -1);
+	TableOfReal_copyLabels (dist, thee.get(), 1, -1);
 
 	autoNUMvector<double> d (1, nx);
 
@@ -365,30 +372,27 @@ Distance structISplineTransformator :: v_transform (MDSVec vec, Distance dist, W
 		knot [order + 1 + i] = NUMquantile (nx, vec -> proximity, fraction);
 	}
 
-	/*
-		Calculate data matrix m.
-	*/
+	// Calculate data matrix m.
 
 	for (long i = 1; i <= nx; i++) {
 		double y, x = vec -> proximity [i];
-		m [i] [1] = 1;
+		m[i][1] = 1.0;
 		for (long j = 2; j <= numberOfParameters; j++) {
 			try {
 				NUMispline (knot, nKnots, order, j - 1, x, & y);
 			} catch (MelderError) {
 				Melder_throw (U"I-spline[", j - 1, U"], data[", i, U"d] = ", x);
 			}
-			m [i] [j] = y;
+			m[i][j] = y;
 		}
 	}
 
-	NUMsolveNonNegativeLeastSquaresRegression (m, nx, numberOfParameters,
-	        d.peek(), tol, itermax, b);
+	NUMsolveNonNegativeLeastSquaresRegression (m, nx, numberOfParameters, d.peek(), tol, itermax, b);
 
 	for (long i = 1; i <= nx; i++) {
 		long ii = vec->iPoint[i];
 		long jj = vec->jPoint[i];
-		double r = 0;
+		double r = 0.0;
 
 		for (long j = 1; j <= numberOfParameters; j++) {
 			r += m[i][j] * b[j];
@@ -397,18 +401,17 @@ Distance structISplineTransformator :: v_transform (MDSVec vec, Distance dist, W
 	}
 
 	if (normalization) {
-		Distance_Weight_smacofNormalize (thee.peek(), w);
+		Distance_Weight_smacofNormalize (thee.get(), w);
 	}
-	return thee.transfer();
+	return thee;
 }
 
-ISplineTransformator ISplineTransformator_create (long numberOfPoints,
-        long numberOfInteriorKnots, long order) {
+autoISplineTransformator ISplineTransformator_create (long numberOfPoints, long numberOfInteriorKnots, long order) {
 	try {
 		autoISplineTransformator me = Thing_new (ISplineTransformator);
 		long nData = (numberOfPoints - 1) * numberOfPoints / 2;
 
-		Transformator_init (me.peek(), numberOfPoints);
+		Transformator_init (me.get(), numberOfPoints);
 
 		/*
 			1 extra parameter for the intercept.
@@ -423,12 +426,12 @@ ISplineTransformator ISplineTransformator_create (long numberOfPoints,
 		my m = NUMmatrix<double> (1, nData, 1, my numberOfParameters);
 
 		for (long i = 1; i <= my numberOfParameters; i++) {
-			my b[i] = NUMrandomUniform (0, 1);
+			my b[i] = NUMrandomUniform (0.0, 1.0);
 		}
 
 		my numberOfInteriorKnots = numberOfInteriorKnots;
 		my order = order;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ISplineTransformator not created.");
 	}
@@ -436,7 +439,7 @@ ISplineTransformator ISplineTransformator_create (long numberOfPoints,
 
 /***************** CONTINGENCYTABLE **************************************/
 
-Configuration ContingencyTable_to_Configuration_ca (ContingencyTable me, long numberOfDimensions, int scaling) {
+autoConfiguration ContingencyTable_to_Configuration_ca (ContingencyTable me, long numberOfDimensions, int scaling) {
 	try {
 		long nr = my numberOfRows, nc = my numberOfColumns;
 		long dimmin = nr < nc ? nr : nc;
@@ -453,35 +456,30 @@ Configuration ContingencyTable_to_Configuration_ca (ContingencyTable me, long nu
 			Melder_throw (U"Dimension too high.");
 		}
 
-		/*
-			Ref: A. Gifi (1990), Nonlinear Multivariate Analysis, Wiley & Sons,
-				reprinted 1996,
-				Chapter 8, Multidimensional scaling and Correspondence Analysis.
-			Get row and column marginals
-		*/
+		// Ref: A. Gifi (1990), Nonlinear Multivariate Analysis, Wiley & Sons, reprinted 1996,
+		//		Chapter 8, Multidimensional scaling and Correspondence Analysis.
+		// Get row and column marginals
 
-		double sum = 0;
+		double sum = 0.0;
 		for (long i = 1; i <= nr; i++) {
 			for (long j = 1; j <= nc; j++) {
 				rowsum[i] += my data[i][j];
 				colsum[j] += my data[i][j];
 			}
-			if (rowsum[i] <= 0) {
+			if (rowsum[i] <= 0.0) {
 				Melder_throw (U"Empty row: ", i, U".");
 			}
 			sum += rowsum[i];
 		}
 
 		for (long j = 1; j <= nc; j++) {
-			if (colsum[j] <= 0) {
+			if (colsum[j] <= 0.0) {
 				Melder_throw (U"Empty column: ", j, U".");
 			}
 		}
 
-		/*
-			Remove trivial singular vectors (Eq. 8.24),
-			construct Dr^(-1/2) H Dc^(-1/2) - Dr^(1/2) uu' Dc^(1/2) / N
-		*/
+		// Remove trivial singular vectors (Eq. 8.24),
+		// construct Dr^(-1/2) H Dc^(-1/2) - Dr^(1/2) uu' Dc^(1/2) / N
 
 		for (long i = 1; i <= nr; i++) {
 			for (long j = 1; j <= nc; j++) {
@@ -490,37 +488,31 @@ Configuration ContingencyTable_to_Configuration_ca (ContingencyTable me, long nu
 			}
 		}
 
-		/*
-			Singular value decomposition of h
-		*/
+		// Singular value decomposition of h
 
 		autoSVD svd = SVD_create_d (h.peek(), nr, nc);
-		SVD_zeroSmallSingularValues (svd.peek(), 0);
+		SVD_zeroSmallSingularValues (svd.get(), 0);
 
-		/*
-			Scale row vectors and column vectors to configuration.
-		*/
+		// Scale row vectors and column vectors to configuration.
 
 		for (long j = 1; j <= numberOfDimensions; j++) {
 			double rootsum = sqrt (sum), xfactor, yfactor, lambda = svd -> d[j];
 			if (scaling == 1) {
-				/*
-					Scale row points in the centre of gravity of
-					column points (eq 8.5.a)
-				*/
+
+				// Scale row points in the centre of gravity of column points (eq 8.5.a)
+
 				xfactor = rootsum * lambda;
 				yfactor = rootsum;
 			} else if (scaling == 2) {
-				/*
-					Scale column points in the centre of gravity of
-					row points (8.5.b)
-				*/
+
+				// Scale column points in the centre of gravity of row points (8.5.b)
+
 				xfactor = rootsum;
 				yfactor = rootsum * lambda;
 			} else if (scaling == 3) {
-				/*
-					Treat row and columns symmetrically (8.5.c).
-				*/
+
+				// Treat row and columns symmetrically (8.5.c).
+
 				xfactor = yfactor = rootsum * sqrt (lambda);
 			} else {
 				break;
@@ -533,97 +525,91 @@ Configuration ContingencyTable_to_Configuration_ca (ContingencyTable me, long nu
 			}
 		}
 
-		TableOfReal_setSequentialColumnLabels (thee.peek(), 0, 0, NULL, 1, 1);
+		TableOfReal_setSequentialColumnLabels (thee.get(), 0, 0, nullptr, 1, 1);
 		NUMstrings_copyElements (my rowLabels, thy rowLabels, 1, nr);
 		for (long i = 1; i <= nc; i++) {
 			if (my columnLabels[i]) {
-				TableOfReal_setRowLabel (thee.peek(), nr + i, my columnLabels[i]);
+				TableOfReal_setRowLabel (thee.get(), nr + i, my columnLabels[i]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created.");
 	}
 }
 
-Dissimilarity TableOfReal_to_Dissimilarity (I) {
-	iam (TableOfReal);
+autoDissimilarity TableOfReal_to_Dissimilarity (TableOfReal me) {
 	try {
 		if (my numberOfRows != my numberOfColumns) {
 			Melder_throw (U"TableOfReal must be a square tabel.");
 		}
 		TableOfReal_checkPositive (me);
 		autoDissimilarity thee = Thing_new (Dissimilarity);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Dissimilarity.");
 	}
 }
 
-Similarity TableOfReal_to_Similarity (I) {
-	iam (TableOfReal);
+autoSimilarity TableOfReal_to_Similarity (TableOfReal me) {
 	try {
 		if (my numberOfRows != my numberOfColumns) {
 			Melder_throw (U"TableOfReal must be a square table.");
 		}
 		TableOfReal_checkPositive (me);
 		autoSimilarity thee = Thing_new (Similarity);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Similarity.");
 	}
 }
 
-Distance TableOfReal_to_Distance (I) {
-	iam (TableOfReal);
+autoDistance TableOfReal_to_Distance (TableOfReal me) {
 	try {
 		if (my numberOfRows != my numberOfColumns) {
 			Melder_throw (U"TableOfReal must be a square table.");
 		}
 		TableOfReal_checkPositive (me);
 		autoDistance thee = Thing_new (Distance);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Distance.");
 	}
 }
 
-Salience TableOfReal_to_Salience (I) {
-	iam (TableOfReal);
+autoSalience TableOfReal_to_Salience (TableOfReal me) {
 	try {
 		TableOfReal_checkPositive (me);
 		autoSalience thee = Thing_new (Salience);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Salience.");
 	}
 }
 
-Weight TableOfReal_to_Weight (I) {
-	iam (TableOfReal);
+autoWeight TableOfReal_to_Weight (TableOfReal me) {
 	try {
 		TableOfReal_checkPositive (me);
 		autoWeight thee = Thing_new (Weight);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Weight.");
 	}
 }
 
-ScalarProduct TableOfReal_to_ScalarProduct (I) {
-	iam (TableOfReal);
+autoScalarProduct TableOfReal_to_ScalarProduct (TableOfReal me) {
 	try {
 		if (my numberOfRows != my numberOfColumns) {
 			Melder_throw (U"TableOfReal must be a square table.");
 		}
 		autoScalarProduct thee = Thing_new (ScalarProduct);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ScalarProduct.");
 	}
@@ -631,51 +617,47 @@ ScalarProduct TableOfReal_to_ScalarProduct (I) {
 
 /**************** Covariance & Correlation to Configuration *****************/
 
-Configuration SSCP_to_Configuration (SSCP me, long numberOfDimensions) {
+autoConfiguration SSCP_to_Configuration (SSCP me, long numberOfDimensions) {
 	try {
 		autoConfiguration thee = Configuration_create (my numberOfRows, numberOfDimensions);
 		autoPCA a = SSCP_to_PCA (me);
-		TableOfReal_setSequentialColumnLabels (thee.peek(), 0, 0, NULL, 1, 1);
+		TableOfReal_setSequentialColumnLabels (thee.get(), 0, 0, nullptr, 1, 1);
 
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = 1; j <= numberOfDimensions; j++) {
-				double s = 0;
+				double s = 0.0;
 				for (long k = 1; k <= my numberOfRows; k++) {
 					s += my data[k][i] * a -> eigenvectors[k][j];
 				}
 				thy data[i][j] = s;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created.");
 	}
 }
 
-Configuration Covariance_to_Configuration (Covariance me,
-        long numberOfDimensions) {
+autoConfiguration Covariance_to_Configuration (Covariance me, long numberOfDimensions) {
 	return SSCP_to_Configuration (me, numberOfDimensions);
 }
 
-Configuration Correlation_to_Configuration (Correlation me,
-        long numberOfDimensions) {
+autoConfiguration Correlation_to_Configuration (Correlation me, long numberOfDimensions) {
 	return SSCP_to_Configuration (me, numberOfDimensions);
 }
 
 /**************************** Weight *****************************************/
 
-Thing_implement (Weight, TableOfReal, 0);
-
-Weight Weight_create (long numberOfPoints) {
+autoWeight Weight_create (long numberOfPoints) {
 	try {
 		autoWeight me = Thing_new (Weight);
-		TableOfReal_init (me.peek(), numberOfPoints, numberOfPoints);
+		TableOfReal_init (me.get(), numberOfPoints, numberOfPoints);
 		for (long i = 1; i <= numberOfPoints; i++) {
 			for (long j = 1; j <= numberOfPoints; j++) {
-				my data[i][j] = 1;
+				my data[i][j] = 1.0;
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Weight not created.");
 	}
@@ -684,14 +666,12 @@ Weight Weight_create (long numberOfPoints) {
 
 /**************** Salience *****************************************/
 
-Thing_implement (Salience, TableOfReal, 0);
-
-Salience Salience_create (long numberOfSources, long numberOfDimensions) {
+autoSalience Salience_create (long numberOfSources, long numberOfDimensions) {
 	try {
 		autoSalience me = Thing_new (Salience);
-		TableOfReal_init (me.peek(), numberOfSources, numberOfDimensions);
-		Salience_setDefaults (me.peek());
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfSources, numberOfDimensions);
+		Salience_setDefaults (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Salience not created.");
 	}
@@ -706,7 +686,7 @@ long Salience_correctNegatives (Salience me) {
 	long nNegatives = 0;
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (my data[i][j] < 0) {
+			if (my data[i][j] < 0.0) {
 				nNegatives++;
 				my data[i][j] = - my data[i][j];
 			}
@@ -718,7 +698,7 @@ long Salience_correctNegatives (Salience me) {
 void Salience_setDefaults (Salience me) {
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			my data[i][j] = 1 / sqrt (my numberOfColumns);
+			my data[i][j] = 1.0 / sqrt (my numberOfColumns);
 		}
 	}
 	for (long j = 1; j <= my numberOfColumns; j++) {
@@ -728,10 +708,9 @@ void Salience_setDefaults (Salience me) {
 
 void Salience_draw (Salience me, Graphics g, int ix, int iy, int garnish) {
 	long nc2, nc1 = ix < iy ? (nc2 = iy, ix) : (nc2 = ix, iy);
-	double xmin = 0, xmax = 1, ymin = 0, ymax = 1, wmax = 1;
+	double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0, wmax = 1.0;
 
-	if (ix < 1 || ix > my numberOfColumns ||
-	        iy < 1 || iy > my numberOfColumns) {
+	if (ix < 1 || ix > my numberOfColumns || iy < 1 || iy > my numberOfColumns) {
 		return;
 	}
 
@@ -761,26 +740,24 @@ void Salience_draw (Salience me, Graphics g, int ix, int iy, int garnish) {
 
 	if (garnish) {
 		if (my columnLabels[ix]) {
-			Graphics_textBottom (g, 0, my columnLabels[ix]);
+			Graphics_textBottom (g, false, my columnLabels[ix]);
 		}
 		if (my columnLabels[iy]) {
-			Graphics_textLeft (g, 0, my columnLabels[iy]);
+			Graphics_textLeft (g, false, my columnLabels[iy]);
 		}
 	}
 }
 
 /******** MDSVEC *******************************************/
 
-Thing_implement (MDSVec, Data, 0);
-
-void structMDSVec :: v_destroy () {
+void structMDSVec :: v_destroy () noexcept {
 	NUMvector_free<double> (proximity, 1);
 	NUMvector_free<long> (iPoint, 1);
 	NUMvector_free<long> (jPoint, 1);
 	MDSVec_Parent :: v_destroy ();
 }
 
-MDSVec MDSVec_create (long nPoints) {
+autoMDSVec MDSVec_create (long nPoints) {
 	try {
 		autoMDSVec me = Thing_new (MDSVec);
 		my nPoints = nPoints;
@@ -788,13 +765,13 @@ MDSVec MDSVec_create (long nPoints) {
 		my proximity = NUMvector<double> (1, my nProximities);
 		my iPoint = NUMvector<long> (1, my nProximities);
 		my jPoint = NUMvector<long> (1, my nProximities);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MDSVec not created.");
 	}
 }
 
-MDSVec Dissimilarity_to_MDSVec (Dissimilarity me) {
+autoMDSVec Dissimilarity_to_MDSVec (Dissimilarity me) {
 	try {
 		autoMDSVec thee = MDSVec_create (my numberOfRows);
 
@@ -802,7 +779,7 @@ MDSVec Dissimilarity_to_MDSVec (Dissimilarity me) {
 		for (long i = 1; i <= my numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= my numberOfColumns; j++) {
 				double f = (my data[i][j] + my data[j][i]) / 2;
-				if (f > 0) {
+				if (f > 0.0) {
 					k++;
 					thy proximity[k] = f;
 					thy iPoint[k] = i;
@@ -812,7 +789,7 @@ MDSVec Dissimilarity_to_MDSVec (Dissimilarity me) {
 		}
 		thy nProximities = k;
 		NUMsort3 (thy proximity, thy iPoint, thy jPoint, 1, k, 1);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MDSVec created.");
 	}
@@ -820,28 +797,15 @@ MDSVec Dissimilarity_to_MDSVec (Dissimilarity me) {
 
 /*********************** MDSVECS *******************************************/
 
-
-Thing_implement (MDSVecs, Ordered, 0);
-
-MDSVecs MDSVecs_create () {
+autoMDSVecList DissimilarityList_to_MDSVecList (DissimilarityList me) {
 	try {
-		autoMDSVecs me = Thing_new (MDSVecs);
-		Ordered_init (me.peek(), classMDSVec, 10);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"MDSVecs not created.");
-	}
-}
-
-MDSVecs Dissimilarities_to_MDSVecs (Dissimilarities me) {
-	try {
-		autoMDSVecs thee = MDSVecs_create ();
-		for (long i = 1; i <= my size; i++) {
-			autoMDSVec him = Dissimilarity_to_MDSVec ( (Dissimilarity) (my item[i]));
-			Thing_setName (him.peek(), Thing_getName ( (Thing) my item[i]));
-			Collection_addItem (thee.peek(), him.transfer());
+		autoMDSVecList thee = MDSVecList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			autoMDSVec him = Dissimilarity_to_MDSVec (my at [i]);
+			Thing_setName (him.get(), Thing_getName (my at [i]));
+			thy addItem_move (him.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MDSVecs created.");
 	}
@@ -850,23 +814,11 @@ MDSVecs Dissimilarities_to_MDSVecs (Dissimilarities me) {
 
 /**************************  CONFUSIONS **************************************/
 
-Thing_implement (Confusions, Proximities, 0);
-
-Confusions Confusions_create () {
-	try {
-		autoConfusions me = Thing_new (Confusions);
-		Proximities_init (me.peek(), classConfusion);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Confusions not created.");
-	}
-}
-
-Confusion Confusions_sum (Confusions me) {
+autoConfusion ConfusionList_sum (ConfusionList me) {
 	try {
-		autoTableOfReal sum = TablesOfReal_sum (me);
-		autoConfusion thee = TableOfReal_to_Confusion (sum.peek());
-		return thee.transfer();
+		autoTableOfReal sum = TableOfRealList_sum (my asTableOfRealList());
+		autoConfusion thee = TableOfReal_to_Confusion (sum.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": sum not created.");
 	}
@@ -875,28 +827,14 @@ Confusion Confusions_sum (Confusions me) {
 
 /**************************  DISTANCES **************************************/
 
-Thing_implement (Distances, Proximities, 0);
-
-Distances Distances_create () {
-	try {
-		autoDistances me = Thing_new (Distances);
-		Proximities_init (me.peek(), classDistance);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Distances not created.");
-	}
-}
-
 
 /*****************  SCALARPRODUCT ***************************************/
 
-Thing_implement (ScalarProduct, TableOfReal, 0);
-
-ScalarProduct ScalarProduct_create (long numberOfPoints) {
+autoScalarProduct ScalarProduct_create (long numberOfPoints) {
 	try {
 		autoScalarProduct me = Thing_new (ScalarProduct);
-		TableOfReal_init (me.peek(), numberOfPoints, numberOfPoints);
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfPoints, numberOfPoints);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ScalarProduct not created.");
 	}
@@ -905,103 +843,86 @@ ScalarProduct ScalarProduct_create (long numberOfPoints) {
 
 /************* SCALARPRODUCTS **************************************/
 
-Thing_implement (ScalarProducts, TablesOfReal, 0);
-
-ScalarProducts ScalarProducts_create () {
-	try {
-		autoScalarProducts me = Thing_new (ScalarProducts);
-		TablesOfReal_init (me.peek(), classScalarProduct);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"ScalarProducts not created.");
-	}
-}
 
 /******************  DISSIMILARITY **********************************/
 
-Thing_implement (Dissimilarity, Proximity, 0);
-
-Dissimilarity Dissimilarity_create (long numberOfPoints) {
+autoDissimilarity Dissimilarity_create (long numberOfPoints) {
 	try {
 		autoDissimilarity me = Thing_new (Dissimilarity);
-		Proximity_init (me.peek(), numberOfPoints);
-		return me.transfer();
+		Proximity_init (me.get(), numberOfPoints);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Dissimilarity not created.");
 	}
 }
 
-int Dissimilarity_getAdditiveConstant (I, double *c) { // Why not: double Diss..(I) ???
-	*c = 0;
+static double Dissimilarity_getAverage (Dissimilarity me) {
+	double sum = 0.0;
+	long numberOfPositives = 0;
+	for (long i = 1; i <= my numberOfRows - 1; i++) {
+		for (long j = i + 1; j <= my numberOfRows; j++) {
+			double proximity = (my data[i][j] + my data[j][i]) / 2.0;
+			if (proximity > 0.0) {
+				numberOfPositives++;
+				sum += proximity;
+			}
+		}
+	}
+	return numberOfPositives > 0 ? sum /= numberOfPositives : NUMundefined;
+}
+
+double Dissimilarity_getAdditiveConstant (Dissimilarity me) {
+	double additiveConstant = NUMundefined;
 	try {
-		iam (Dissimilarity);
-		long nProximities = 0, nPoints = my numberOfRows, nPoints2 = 2 * nPoints;
-		double proximity;
+		long nPoints = my numberOfRows, nPoints2 = 2 * nPoints;
+
+		// Return c = average dissimilarity in case of failure
 
-		/*
-			Return c = average dissimilarity in case of failure
-		*/
 		if (nPoints < 1) {
 			Melder_throw (U"Matrix part is empty.");
 		}
 
-		*c = 0;
-		for (long i = 1; i <= nPoints - 1; i++) {
-			for (long j = i + 1; j <= nPoints; j++) {
-				proximity = (my data[i][j] + my data[j][i]) / 2;
-				if (proximity > 0) {
-					nProximities++;
-					*c += proximity;
-				}
-			}
+		additiveConstant = Dissimilarity_getAverage (me);
+		if (additiveConstant == NUMundefined) {
+			Melder_throw (U"There are no positive dissimilarities.");
 		}
-		if (nProximities < 1) {
-			Melder_throw (U"No proximities larger than zero.");
-		}
-		*c /= nProximities;
 
 		autoNUMmatrix<double> wd (1, nPoints, 1, nPoints);
 		autoNUMmatrix<double> wdsqrt (1, nPoints, 1, nPoints);
 		autoNUMmatrix<double> b (1, nPoints2, 1, nPoints2);
 		autoNUMvector<double> eigenvalue (1, nPoints2);
 
-		/*
-			The matrices D & D1/2 with distances (squared and linear)
-		*/
+		// The matrices D & D1/2 with distances (squared and linear)
 
 		for (long i = 1; i <= nPoints - 1; i++) {
 			for (long j = i + 1; j <= nPoints; j++) {
-				proximity = (my data[i][j] + my data[j][i]) / 2;
-				wdsqrt[i][j] = - proximity / 2;
-				wd[i][j] = - proximity * proximity / 2;
+				double proximity = (my data[i][j] + my data[j][i]) / 2.0;
+				wdsqrt[i][j] = - proximity / 2.0;
+				wd[i][j] = - proximity * proximity / 2.0;
 			}
 		}
 
 		NUMdoubleCentre (wdsqrt.peek(), 1, nPoints, 1, nPoints);
 		NUMdoubleCentre (wd.peek(), 1, nPoints, 1, nPoints);
 
-		/*
-			Calculate the B matrix according to eq. 6
-		*/
+		// Calculate the B matrix according to eq. 6
 
 		for (long i = 1; i <= nPoints; i++) {
 			for (long j = 1; j <= nPoints; j++) {
-				b[i][nPoints + j] = 2 * wd[i][j];
-				b[nPoints + i][nPoints + j] = -4 * wdsqrt[i][j];
-				b[nPoints + i][i] = -1;
+				b[i][nPoints + j] = 2.0 * wd[i][j];
+				b[nPoints + i][nPoints + j] = -4.0 * wdsqrt[i][j];
+				b[nPoints + i][i] = -1.0;
 			}
 		}
 
-		/*
-			Get eigenvalues and sort them descending
-		*/
+		// Get eigenvalues and sort them descending
 
-		NUMeigensystem (b.peek(), nPoints2, NULL, eigenvalue.peek());
-		if (eigenvalue[1] <= 0) {
+		NUMeigensystem (b.peek(), nPoints2, nullptr, eigenvalue.peek());
+		if (eigenvalue[1] <= 0.0) {
 			Melder_throw (U"Negative eigenvalue.");
 		}
-		*c = eigenvalue[1];
-		return 1;
+		additiveConstant = eigenvalue[1];
+		return additiveConstant;
 	} catch (MelderError) {
 		Melder_throw (U"Additive constant not calculated.");
 	}
@@ -1010,35 +931,20 @@ int Dissimilarity_getAdditiveConstant (I, double *c) { // Why not: double Diss..
 
 /***************  DISSIMILARITIES **************************************/
 
-Thing_implement (Dissimilarities, Proximities, 0);
-
-Dissimilarities Dissimilarities_create () {
-	try {
-		autoDissimilarities me = Thing_new (Dissimilarities);
-		Proximities_init (me.peek(), classDissimilarity);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Dissimilarities not created.");
-	}
-}
-
 
 /*************  SIMILARITY *****************************************/
 
-Thing_implement (Similarity, Proximity, 0);
-
-Similarity Similarity_create (long numberOfPoints) {
+autoSimilarity Similarity_create (long numberOfPoints) {
 	try {
 		autoSimilarity me = Thing_new (Similarity);
-		Proximity_init (me.peek(), numberOfPoints);
-		return me.transfer();
+		Proximity_init (me.get(), numberOfPoints);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Similarity not created.");
 	}
 }
 
-Similarity Confusion_to_Similarity (Confusion me, int normalize,
-                                    int symmetrizeMethod) {
+autoSimilarity Confusion_to_Similarity (Confusion me, bool normalize, int symmetrizeMethod) {
 	try {
 		if (my numberOfColumns != my numberOfRows) {
 			Melder_throw (U"Confusion must be a square table.");
@@ -1047,7 +953,7 @@ Similarity Confusion_to_Similarity (Confusion me, int normalize,
 		long nxy = my numberOfColumns;
 		autoSimilarity thee = Similarity_create (nxy);
 
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
 
@@ -1055,13 +961,12 @@ Similarity Confusion_to_Similarity (Confusion me, int normalize,
 			NUMdmatrix_normalizeRows (thy data, nxy, nxy);
 		}
 		if (symmetrizeMethod == 1) {
-			return thee.transfer();
+			return thee;
 		}
 		if (symmetrizeMethod == 2) { // Average data
 			for (long i = 1; i <= nxy - 1; i++) {
 				for (long j = i + 1; j <= nxy; j++) {
-					thy data[i][j] = thy data[j][i] =
-					                     (thy data[i][j] + thy data[j][i]) / 2;
+					thy data[i][j] = thy data[j][i] = (thy data[i][j] + thy data[j][i]) / 2;
 				}
 			}
 		} else if (symmetrizeMethod == 3) { // Method Houtgast.
@@ -1076,19 +981,18 @@ Similarity Confusion_to_Similarity (Confusion me, int normalize,
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Similarity created.");
 	}
 }
 
-Dissimilarity Similarity_to_Dissimilarity (Similarity me,
-        double maximumDissimilarity) {
+autoDissimilarity Similarity_to_Dissimilarity (Similarity me, double maximumDissimilarity) {
 	try {
 		long nxy = my numberOfColumns;
 		double max = 0;
 		autoDissimilarity thee = Dissimilarity_create (nxy);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
 
 		for (long i = 1; i <= nxy; i++) {
@@ -1112,23 +1016,22 @@ Dissimilarity Similarity_to_Dissimilarity (Similarity me,
 				thy data[i][j] = d > 0 ? d : 0;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Dissimilarity created.");
 	}
 }
 
-Distance Dissimilarity_to_Distance (Dissimilarity me, int scale) {
+autoDistance Dissimilarity_to_Distance (Dissimilarity me, int scale) {
 	try {
 		double additiveConstant = 0;
 
 		autoDistance thee = Distance_create (my numberOfRows);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
-		if (scale == MDS_ORDINAL &&
-		        ! Dissimilarity_getAdditiveConstant (me, &additiveConstant)) {
-			Melder_warning (U"Dissimilarity_to_Distance: could not determine "
-			                U"\"additive constant\", the average dissimilarity was used as "
-			                U"its value.");
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
+		if (scale == MDS_ORDINAL) {
+			if ((additiveConstant = Dissimilarity_getAdditiveConstant (me)) == NUMundefined) {
+				Melder_warning (U"Dissimilarity_to_Distance: could not determine \"additive constant\", the average dissimilarity was used as its value.");
+			}
 		}
 		for (long i = 1; i <= my numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= my numberOfColumns; j++) {
@@ -1136,48 +1039,46 @@ Distance Dissimilarity_to_Distance (Dissimilarity me, int scale) {
 				thy data[i][j] = thy data[j][i] = d;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Distance created.");
 	}
 }
 
-Weight Dissimilarity_to_Weight (Dissimilarity me) {
+autoWeight Dissimilarity_to_Weight (Dissimilarity me) {
 	try {
 		autoWeight thee = Weight_create (my numberOfRows);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = i; j <= my numberOfRows; j++) {
-				if (my data[i][j] > 0) {
-					thy data[i][j] = 1;
+				if (my data[i][j] > 0.0) {
+					thy data[i][j] = 1.0;
 				}
 			}
-			thy data[i][i] = 0;
+			thy data[i][i] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Weight created.");
 	}
 }
 
 
-Dissimilarity Confusion_to_Dissimilarity_pdf (Confusion me, double minimumConfusionLevel) {
+autoDissimilarity Confusion_to_Dissimilarity_pdf (Confusion me, double minimumConfusionLevel) {
 	try {
 		if (my numberOfColumns != my numberOfRows) {
 			Melder_throw (U"Confusion must be a square table.");
 		}
-		Melder_assert (minimumConfusionLevel > 0);
+		Melder_assert (minimumConfusionLevel > 0.0);
 		autoDissimilarity thee = Dissimilarity_create (my numberOfColumns);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
 
-		/*
-			Correct "zero" responses.
-		*/
+		// Correct "zero" responses.
 
 		for (long i = 1; i <= my numberOfColumns; i++) {
 			for (long j = 1; j <= my numberOfColumns; j++) {
-				if (thy data[i][j] == 0) {
+				if (thy data[i][j] == 0.0) {
 					thy data[i][j] = minimumConfusionLevel;
 				}
 			}
@@ -1186,8 +1087,7 @@ Dissimilarity Confusion_to_Dissimilarity_pdf (Confusion me, double minimumConfus
 		NUMdmatrix_normalizeRows (thy data, my numberOfColumns, my numberOfColumns);
 
 		/*
-			Consider the fraction as the fraction overlap between two gaussians
-			with unequal sigmas (1 & s).
+			Consider the fraction as the fraction overlap between two gaussians with unequal sigmas (1 & s).
 			We have two matrix elements p[i][j] && p[j][i]
 
 			N (x, m, s) = 1 / (s * sqrt(2 pi)) exp(-((x - m) / s)^2 / 2)
@@ -1223,72 +1123,69 @@ Dissimilarity Confusion_to_Dissimilarity_pdf (Confusion me, double minimumConfus
 				double y = thy data[i][j] > thy data[j][i] ? thy data[i][j] : thy data[j][i];
 				x = NUMinvGaussQ (x);
 				y = NUMinvGaussQ (y);
-				double d = x + y * exp ( (y * y - x * x) / 2);
+				double d = x + y * exp ( (y * y - x * x) / 2.0);
 				/* Melder_info ("i, j, x, y, d: %d %d %.17g %.17g %.17g", i, j, x, y, d); */
 				thy data[i][j] = thy data [j][i] = d;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Dissimilarity created from pdf.");
 	}
 }
 
-void Distance_and_Configuration_drawScatterDiagram (Distance me,
-        Configuration him, Graphics g, double xmin, double xmax, double ymin,
-        double ymax, double size_mm, const char32 *mark, int garnish) {
+void Distance_and_Configuration_drawScatterDiagram (Distance me, Configuration him, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	autoDistance dist = Configuration_to_Distance (him);
-	Proximity_Distance_drawScatterDiagram (me, dist.peek(), g, xmin, xmax, ymin,
-	                                       ymax, size_mm, mark, garnish);
+	Proximity_Distance_drawScatterDiagram (me, dist.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-Dissimilarity Distance_to_Dissimilarity (Distance me) {
+autoDissimilarity Distance_to_Dissimilarity (Distance me) {
 	try {
 		autoDissimilarity thee = Dissimilarity_create (my numberOfRows);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Dissimilarity not created from Distance.");
 	}
 }
 
-Configuration Distance_to_Configuration_torsca (Distance me, int numberOfDimensions) {
+autoConfiguration Distance_to_Configuration_torsca (Distance me, int numberOfDimensions) {
 	try {
 		if (numberOfDimensions > my numberOfRows) {
 			Melder_throw (U"Number of dimensions too high.");
 		}
-		autoScalarProduct sp = Distance_to_ScalarProduct (me, 0);
+		autoScalarProduct sp = Distance_to_ScalarProduct (me, false);
 		autoConfiguration thee = Configuration_create (my numberOfRows, numberOfDimensions);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 0);
+		TableOfReal_copyLabels (me, thee.get(), 1, 0);
 		NUMprincipalComponents (sp -> data, my numberOfRows, numberOfDimensions, thy data);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (torsca method).");
 	}
 }
 
-ScalarProduct Distance_to_ScalarProduct (Distance me, int normalize) {
+autoScalarProduct Distance_to_ScalarProduct (Distance me, bool normalize) {
 	try {
 		autoScalarProduct thee = ScalarProduct_create (my numberOfRows);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 		for (long i = 1; i <= my numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= my numberOfColumns; j++) {
-				/*
-					force symmetry by averaging!
-				*/
+
+				// force symmetry by averaging!
+
 				double d = 0.5 * (my data[i][j] + my data[j][i]);
 				thy data[i][j] = thy data[j][i] = - 0.5 * d * d;
 			}
 		}
-		TableOfReal_doubleCentre (thee.peek());
+		TableOfReal_doubleCentre (thee.get());
 		if (my name) {
-			Thing_setName (thee.peek(), my name);
+			Thing_setName (thee.get(), my name);
 		}
 		if (normalize) {
-			TableOfReal_normalizeTable (thee.peek(), 1);
+			TableOfReal_normalizeTable (thee.get(), 1);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no ScalarProduct created.");
 	}
@@ -1297,13 +1194,13 @@ ScalarProduct Distance_to_ScalarProduct (Distance me, int normalize) {
 /**********  Configuration & ..... ***********************************/
 
 
-Distance Configuration_to_Distance (Configuration me) {
+autoDistance Configuration_to_Distance (Configuration me) {
 	try {
 		autoDistance thee = Distance_create (my numberOfRows);
-		TableOfReal_copyLabels (me, thee.peek(), 1, -1);
+		TableOfReal_copyLabels (me, thee.get(), 1, -1);
 		for (long i = 1; i <= thy numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= thy numberOfColumns; j++) {
-				double dmax = 0, d = 0;
+				double dmax = 0.0, d = 0.0;
 
 				/*
 					first divide distance by maximum to prevent overflow when metric is a large number.
@@ -1318,7 +1215,7 @@ Distance Configuration_to_Distance (Configuration me) {
 						dmax = dtmp;
 					}
 				}
-				if (dmax > 0) {
+				if (dmax > 0.0) {
 					for (long k = 1; k <= my numberOfColumns; k++) {
 						double arg = fabs (my data[i][k] - my data[j][k]) / dmax;
 						d += my w[k] * pow (arg, my metric);
@@ -1327,16 +1224,13 @@ Distance Configuration_to_Distance (Configuration me) {
 				thy data[i][j] = thy data[j][i] = dmax * pow (d, 1.0 / my metric);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Distance created.");
 	}
 }
 
-void Proximity_Distance_drawScatterDiagram (I, Distance thee, Graphics g,
-        double xmin, double xmax, double ymin, double ymax, double size_mm,
-        const char32 *mark, int garnish) {
-	iam (Proximity);
+void Proximity_Distance_drawScatterDiagram (Proximity me, Distance thee, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	long n = my numberOfRows * (my numberOfRows - 1) / 2;
 	double **x = my data, **y = thy data;
 
@@ -1374,8 +1268,7 @@ void Proximity_Distance_drawScatterDiagram (I, Distance thee, Graphics g,
 	Graphics_setInner (g);
 	for (long i = 1; i <= thy numberOfRows - 1; i++) {
 		for (long j = i + 1; j <= thy numberOfColumns; j++) {
-			if (x[i][j] >= xmin && x[i][j] <= xmax &&
-			        y[i][j] >= ymin && y[i][j] <= ymax) {
+			if (x[i][j] >= xmin && x[i][j] <= xmax && y[i][j] >= ymin && y[i][j] <= ymax) {
 				Graphics_mark (g, x[i][j], y[i][j], size_mm, mark);
 			}
 		}
@@ -1384,31 +1277,31 @@ void Proximity_Distance_drawScatterDiagram (I, Distance thee, Graphics g,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, 1, U"Distance");
-		Graphics_textBottom (g, 1, U"Dissimilarity");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textLeft (g, true, U"Distance");
+		Graphics_textBottom (g, true, U"Dissimilarity");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-Distances MDSVecs_Distance_monotoneRegression (MDSVecs me, Distance thee, int tiesProcessing) {
+autoDistanceList MDSVecList_Distance_monotoneRegression (MDSVecList me, Distance thee, int tiesProcessing) {
 	try {
-		autoDistances him = Distances_create ();
-		for (long i = 1; i <= my size; i++) {
-			autoMDSVec vec = (MDSVec) my item[i];
+		autoDistanceList him = DistanceList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			MDSVec vec = my at [i];
 			if (vec -> nPoints != thy numberOfRows) {
 				Melder_throw (U"Dimension of MDSVec and Distance must be equal.");
 			}
-			autoDistance fit = MDSVec_Distance_monotoneRegression (vec.peek(), thee, tiesProcessing);
-			Collection_addItem (him.peek(), fit.transfer());
+			autoDistance fit = MDSVec_Distance_monotoneRegression (vec, thee, tiesProcessing);
+			his addItem_move (fit.move());
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"No Distances created from MDSVecs & Distance.");
 	}
 }
 
-Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesProcessing) {
+autoDistance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesProcessing) {
 	try {
 		long nProximities = my nProximities;
 		if (thy numberOfRows != my nPoints) {
@@ -1417,14 +1310,14 @@ Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesP
 		autoNUMvector<double> distance (1, nProximities);
 		autoNUMvector<double> fit (1, nProximities);
 		autoDistance him = Distance_create (thy numberOfRows);
-		TableOfReal_copyLabels (thee, him.peek(), 1, 1);
+		TableOfReal_copyLabels (thee, him.get(), 1, 1);
 
 		long *iPoint = my iPoint, *jPoint = my jPoint;
 		for (long i = 1; i <= nProximities; i++) {
 			distance[i] = thy data[iPoint[i]][jPoint[i]];
 		}
 
-		if (tiesProcessing == MDS_PRIMARY_APPROACH || MDS_SECONDARY_APPROACH) {
+		if (tiesProcessing == MDS_PRIMARY_APPROACH || tiesProcessing == MDS_SECONDARY_APPROACH) {
 			/*
 				Kruskal's primary approach to tie-blocks:
 					Sort corresponding distances, with iPoint, and jPoint.
@@ -1440,7 +1333,7 @@ Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesP
 					if (tiesProcessing == MDS_PRIMARY_APPROACH) {
 						NUMsort3 (distance.peek(), iPoint, jPoint, ib, i - 1, 1); // sort ascending
 					} else if (tiesProcessing == MDS_SECONDARY_APPROACH) {
-						double mean = 0;
+						double mean = 0.0;
 						for (long j = ib; j <= i - 1; j++) {
 							mean += distance[j];
 						}
@@ -1456,18 +1349,14 @@ Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesP
 
 		NUMmonotoneRegression (distance.peek(), nProximities, fit.peek());
 
-		/*
-			Fill Distance with monotone regressed distances
-		*/
+		// Fill Distance with monotone regressed distances
 
 		for (long i = 1; i <= nProximities; i++) {
 			long ip = iPoint[i], jp = jPoint[i];
 			his data[ip][jp] = his data[jp][ip] = fit[i];
 		}
 
-		/*
-			Make rest of distances equal to the maximum fit.
-		*/
+		// Make rest of distances equal to the maximum fit.
 
 		for (long i = 1; i <= his numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= his numberOfColumns; j++) {
@@ -1476,21 +1365,21 @@ Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesP
 				}
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
 }
 
 
-Distance Dissimilarity_Distance_monotoneRegression (Dissimilarity me, Distance thee, int tiesProcessing) {
+autoDistance Dissimilarity_Distance_monotoneRegression (Dissimilarity me, Distance thee, int tiesProcessing) {
 	try {
 		if (thy numberOfRows != my numberOfRows) {
 			Melder_throw (U"Dimensions do not agree.");
 		}
 		autoMDSVec vec = Dissimilarity_to_MDSVec (me);
-		autoDistance him = MDSVec_Distance_monotoneRegression (vec.peek(), thee, tiesProcessing);
-		return him.transfer();
+		autoDistance him = MDSVec_Distance_monotoneRegression (vec.get(), thee, tiesProcessing);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
@@ -1498,58 +1387,37 @@ Distance Dissimilarity_Distance_monotoneRegression (Dissimilarity me, Distance t
 
 /*************** class Proximities **************************************/
 
-Thing_implement (Proximities, TablesOfReal, 0);
-
-void Proximities_init (I, ClassInfo klas) {
-	iam (Proximities);
-	TablesOfReal_init (me, klas);
-}
-
-Proximities Proximities_create () {
+autoScalarProductList DistanceList_to_ScalarProductList (DistanceList me, bool normalize) {
 	try {
-		autoProximities me = Thing_new (Proximities);
-		Proximities_init (me.peek(), classProximity);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Proximities not created.");
-	}
-}
-
-ScalarProducts Distances_to_ScalarProducts (Distances me, int normalize) {
-	try {
-		autoScalarProducts thee = ScalarProducts_create ();
-		for (long i = 1; i <= my size; i++) {
-			autoScalarProduct sp = Distance_to_ScalarProduct ( (Distance) (my item[i]), normalize);
-			Collection_addItem (thee.peek(), sp.transfer());
+		autoScalarProductList thee = ScalarProductList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			autoScalarProduct sp = Distance_to_ScalarProduct (my at [i], normalize);
+			thy addItem_move (sp.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no ScalarProducts created.");
 	}
 }
 
-int Distances_to_Configuration_ytl (Distances me, int numberOfDimensions,
-                                    int normalizeScalarProducts, Configuration *out1, Salience *out2) {
+void DistanceList_to_Configuration_ytl (DistanceList me, int numberOfDimensions, int normalizeScalarProducts, autoConfiguration *out1, autoSalience *out2) {
 	try {
-		*out1 = NULL; *out2 = NULL;
-		autoScalarProducts sp = Distances_to_ScalarProducts (me, normalizeScalarProducts);
-		ScalarProducts_to_Configuration_ytl (sp.peek(), numberOfDimensions, out1, out2);
-		return 1;
+		autoScalarProductList sp = DistanceList_to_ScalarProductList (me, normalizeScalarProducts);
+		ScalarProductList_to_Configuration_ytl (sp.get(), numberOfDimensions, out1, out2);
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (ytl method).");
 	}
 }
 
-void ScalarProducts_to_Configuration_ytl (ScalarProducts me, int numberOfDimensions, Configuration *out1, Salience *out2) {
+void ScalarProductList_to_Configuration_ytl (ScalarProductList me, int numberOfDimensions, autoConfiguration *out1, autoSalience *out2) {
 	long numberOfSources = my size;
 	autoNUMvector<double **> ci (1, numberOfSources);
 	try {
-		long nPoints = ( (ScalarProduct) my item[1]) -> numberOfRows;
-		double **w;
+		long nPoints = my at [1] -> numberOfRows;
 
 		autoConfiguration thee = Configuration_create (nPoints, numberOfDimensions);
 		autoSalience mdsw = Salience_create (numberOfSources, numberOfDimensions);
-		TableOfReal_copyLabels ((TableOfReal) my item[1], thee.peek(), 1, 0);
+		TableOfReal_copyLabels (my at [1], thee.get(), 1, 0);
 		autoNUMvector<double> eval (1, numberOfSources);
 		autoNUMmatrix<double> cl (1, numberOfDimensions, 1, numberOfDimensions);
 		autoNUMmatrix<double> pmean (1, nPoints, 1, nPoints);
@@ -1559,28 +1427,26 @@ void ScalarProducts_to_Configuration_ytl (ScalarProducts me, int numberOfDimensi
 		autoNUMmatrix<double> evec (1, numberOfSources, 1, numberOfSources);
 		autoNUMmatrix<double> K (1, numberOfDimensions, 1, numberOfDimensions);
 
-		*out1 = NULL; *out2 = NULL;
-
-		Thing_setName (mdsw.peek(), U"ytl");
-		Thing_setName (thee.peek(), U"ytl");
-		TableOfReal_labelsFromCollectionItemNames (mdsw.peek(), me, 1, 0);
+		Thing_setName (mdsw.get(), U"ytl");
+		Thing_setName (thee.get(), U"ytl");
+		TableOfReal_labelsFromCollectionItemNames (mdsw.get(), (Collection) me, 1, 0);   // FIXME cast
 
 		// Determine the average scalar product matrix (Pmean) of
 		// dimension [1..nPoints][1..nPoints].
 
-		for (long i = 1; i <= numberOfSources; i++) {
-			ScalarProduct sp = (ScalarProduct) my item[i];
-			for (long j = 1; j <= nPoints; j++) {
-				for (long k = 1; k <= nPoints; k++) {
-					pmean[j][k] += sp->data[j][k];
+		for (long i = 1; i <= numberOfSources; i ++) {
+			ScalarProduct sp = my at [i];
+			for (long j = 1; j <= nPoints; j ++) {
+				for (long k = 1; k <= nPoints; k ++) {
+					pmean [j] [k] += sp -> data [j] [k];
 				}
 			}
 		}
 
 		if (numberOfSources > 1) {
-			for (long j = 1; j <= nPoints; j++) {
-				for (long k = 1; k <= nPoints; k++) {
-					pmean[j][k] /= numberOfSources;
+			for (long j = 1; j <= nPoints; j ++) {
+				for (long k = 1; k <= nPoints; k ++) {
+					pmean [j] [k] /= numberOfSources;
 				}
 			}
 		}
@@ -1603,15 +1469,15 @@ void ScalarProducts_to_Configuration_ytl (ScalarProducts me, int numberOfDimensi
 
 		NUMpseudoInverse (y.peek(), nPoints, numberOfDimensions, yinv.peek(), 1e-14);
 
-		for (long i = 1; i <= numberOfSources; i++) {
-			ScalarProduct sp = (ScalarProduct) my item[i];
-			ci[i] = NUMmatrix<double> (1, numberOfDimensions, 1, numberOfDimensions);
-			for (long j = 1; j <= numberOfDimensions; j++) {
-				for (long k = 1; k <= numberOfDimensions; k++) {
-					for (long l = 1; l <= nPoints; l++) {
-						if (yinv[j][l] != 0) {
-							for (long m = 1; m <= nPoints; m++) {
-								ci[i][j][k] += yinv[j][l] * sp -> data[l][m] * yinv[k][m];
+		for (long i = 1; i <= numberOfSources; i ++) {
+			ScalarProduct sp = my at [i];
+			ci [i] = NUMmatrix<double> (1, numberOfDimensions, 1, numberOfDimensions);
+			for (long j = 1; j <= numberOfDimensions; j ++) {
+				for (long k = 1; k <= numberOfDimensions; k ++) {
+					for (long l = 1; l <= nPoints; l ++) {
+						if (yinv [j] [l] != 0.0) {
+							for (long m = 1; m <= nPoints; m ++) {
+								ci [i] [j] [k] += yinv [j] [l] * sp -> data [l] [m] * yinv [k] [m];
 							}
 						}
 					}
@@ -1623,19 +1489,19 @@ void ScalarProducts_to_Configuration_ytl (ScalarProducts me, int numberOfDimensi
 		// a[i][j] = trace (C[i]*C[j]) - trace (C[i]) * trace (C[j]) / numberOfDimensions;
 		// Get the first eigenvector and form matrix cl from a linear combination of the C[i]'s
 
-		for (long i = 1; i <= numberOfSources; i++) {
-			for (long j = i; j <= numberOfSources; j++) {
-				a[j][i] = a[i][j] =  NUMtrace2 (ci[i], ci[j], numberOfDimensions)
-				                     - NUMtrace (ci[i], numberOfDimensions) * NUMtrace (ci[j], numberOfDimensions) / numberOfDimensions;
+		for (long i = 1; i <= numberOfSources; i ++) {
+			for (long j = i; j <= numberOfSources; j ++) {
+				a [j] [i] = a [i] [j] =  NUMtrace2 (ci [i], ci [j], numberOfDimensions)
+					- NUMtrace (ci [i], numberOfDimensions) * NUMtrace (ci [j], numberOfDimensions) / numberOfDimensions;
 			}
 		}
 
 		NUMeigensystem (a.peek(), numberOfSources, evec.peek(), eval.peek());
 
-		for (long i = 1; i <= numberOfSources; i++) {
-			for (long j = 1; j <= numberOfDimensions; j++) {
-				for (long k = 1; k <= numberOfDimensions; k++) {
-					cl[j][k] += ci[i][j][k] * evec[i][1]; /* eq. (7) */
+		for (long i = 1; i <= numberOfSources; i ++) {
+			for (long j = 1; j <= numberOfDimensions; j ++) {
+				for (long k = 1; k <= numberOfDimensions; k ++) {
+					cl [j] [k] += ci [i] [j] [k] * evec [i] [1]; /* eq. (7) */
 				}
 			}
 		}
@@ -1643,77 +1509,77 @@ void ScalarProducts_to_Configuration_ytl (ScalarProducts me, int numberOfDimensi
 		// The rotation K is obtained from the eigenvectors of cl
 		// Is the following still correct??? eigensystem was not sorted??
 
-		NUMeigensystem (cl.peek(), numberOfDimensions, K.peek(), NULL);
+		NUMeigensystem (cl.peek(), numberOfDimensions, K.peek(), nullptr);
 
 		// Now get the configuration: X = Y.K
 
-		for (long i = 1; i <= nPoints; i++) {
-			for (long j = 1; j <= numberOfDimensions; j++) {
-				double x = 0;
-				for (long k = 1; k <= numberOfDimensions; k++) {
-					x += y[i][k] * K[k][j];
+		for (long i = 1; i <= nPoints; i ++) {
+			for (long j = 1; j <= numberOfDimensions; j ++) {
+				double x = 0.0;
+				for (long k = 1; k <= numberOfDimensions; k ++) {
+					x += y [i] [k] * K [k] [j];
 				}
-				thy data [i][j] = x;
+				thy data [i] [j] = x;
 			}
 		}
 
-		Configuration_normalize (thee.peek(), 0, 1);
+		Configuration_normalize (thee.get(), 0, true);
 
 		// And finally the weights: W[i] = K' C[i] K   (eq. (5)).
 		// We are only interested in the diagonal of the resulting matrix W[i].
 
-		w = mdsw -> data;
-		for (long i = 1; i <= numberOfSources; i++) {
-			for (long j = 1; j <= numberOfDimensions; j++) {
-				double wt = 0;
-				for (long k = 1; k <= numberOfDimensions; k++) {
-					if (K[k][j] != 0) {
-						for (long l = 1; l <= numberOfDimensions; l++) {
-							wt += K[k][j] * ci[i][k][l] * K[l][j];
+		for (long i = 1; i <= numberOfSources; i ++) {
+			for (long j = 1; j <= numberOfDimensions; j ++) {
+				double wt = 0.0;
+				for (long k = 1; k <= numberOfDimensions; k ++) {
+					if (K [k] [j] != 0.0) {
+						for (long l = 1; l <= numberOfDimensions; l ++) {
+							wt += K [k] [j] * ci [i] [k] [l] * K [l] [j];
 						}
 					}
 				}
-				w[i][j] = wt;
+				mdsw -> data [i] [j] = wt;
 			}
 		}
-		*out1 = thee.transfer(); *out2 = mdsw.transfer();
-		for (long i = 1; i <= numberOfSources; i++) {
-			NUMmatrix_free<double> (ci[i], 1, 1);
+		
+		*out1 = thee.move(); *out2 = mdsw.move();
+		for (long i = 1; i <= numberOfSources; i ++) {
+			NUMmatrix_free<double> (ci [i], 1, 1);
 		}
 	} catch (MelderError) {
-		for (long i = 1; i <= numberOfSources; i++) {
-			NUMmatrix_free<double> (ci[i], 1, 1);
-		};
-		Melder_throw (me, U": no Configuration (ytl) crerated.");
+		for (long i = 1; i <= numberOfSources; i ++) {
+			NUMmatrix_free<double> (ci [i], 1, 1);
+		}
+		Melder_throw (me, U": no Configuration (ytl) created.");
 	}
 }
 
-Dissimilarities Distances_to_Dissimilarities (Distances me) {
+autoDissimilarityList DistanceList_to_DissimilarityList (DistanceList me) {
 	try {
-		autoDissimilarities thee = Dissimilarities_create ();
-		for (long i = 1; i <= my size; i++) {
-			char32 *name = Thing_getName ( (Thing) my item[i]);
-			autoDissimilarity him = Distance_to_Dissimilarity ( (Distance) (my item[i]));
-			Thing_setName (him.peek(), name ? name : U"untitled");
-			Collection_addItem (thee.peek(), him.transfer());
+		autoDissimilarityList thee = DissimilarityList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			char32 *name = Thing_getName (my at [i]);
+			autoDissimilarity him = Distance_to_Dissimilarity (my at [i]);
+			Thing_setName (him.get(), name ? name : U"untitled");
+			thy addItem_move (him.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Dissimilarities created.");
 	}
 }
 
-Distances Dissimilarities_to_Distances (Dissimilarities me, int measurementLevel) {
+autoDistanceList DissimilarityList_to_DistanceList (DissimilarityList me, int measurementLevel) {
 	try {
-		autoDistances thee = Distances_create ();
+		autoDistanceList thee = DistanceList_create ();
 
-		for (long i = 1; i <= my size; i++) {
-			autoDistance him = Dissimilarity_to_Distance ( (Dissimilarity) my item[i], measurementLevel == MDS_ORDINAL);
-			char32 *name = Thing_getName ( (Thing) my item[i]);
-			Thing_setName (him.peek(), name ? name : U"untitled");
-			Collection_addItem (thee.peek(), him.transfer());
+		for (long i = 1; i <= my size; i ++) {
+			autoDistance him = Dissimilarity_to_Distance (my at [i], measurementLevel == MDS_ORDINAL);
+			char32 *name = Thing_getName (my at [i]);
+			Thing_setName (him.get(), name ? name : U"untitled");
+			thy addItem_move (him.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Distances created.");
 	}
@@ -1721,8 +1587,7 @@ Distances Dissimilarities_to_Distances (Dissimilarities me, int measurementLevel
 
 /*****************  Kruskal *****************************************/
 
-static void smacof_guttmanTransform (Configuration cx, Configuration cz,
-                                     Distance disp, Weight weight, double **vplus) {
+static void smacof_guttmanTransform (Configuration cx, Configuration cz, Distance disp, Weight weight, double **vplus) {
 	long nPoints = cx -> numberOfRows, nDimensions = cx -> numberOfColumns;
 	double **z = cz -> data;
 
@@ -1732,10 +1597,10 @@ static void smacof_guttmanTransform (Configuration cx, Configuration cz,
 	// compute B(Z) (eq. 8.25)
 
 	for (long i = 1; i <= nPoints; i++) {
-		double sum = 0;
+		double sum = 0.0;
 		for (long j = 1; j <= nPoints; j++) {
 			double dzij = distZ -> data[i][j];
-			if (i == j || dzij == 0) {
+			if (i == j || dzij == 0.0) {
 				continue;
 			}
 			b[i][j] = - weight -> data[i][j] * disp -> data[i][j] / dzij;
@@ -1748,7 +1613,7 @@ static void smacof_guttmanTransform (Configuration cx, Configuration cz,
 
 	for (long i = 1; i <= nPoints; i++) {
 		for (long j = 1; j <= nDimensions; j++) {
-			double xij = 0;
+			double xij = 0.0;
 			for (long k = 1;  k <= nPoints; k++) {
 				for (long l = 1; l <= nPoints; l++) {
 					xij += vplus[i][k] * b[k][l] * z[l][j];
@@ -1769,19 +1634,19 @@ double Distance_Weight_stress (Distance fit, Distance conf, Weight weight, int t
 
 	if (type == MDS_NORMALIZED_STRESS) {
 		denum = eta_fit * eta_conf;
-		if (denum > 0) {
+		if (denum > 0.0) {
 			stress = 1.0 - rho * rho / denum;
 		}
 	} else if (type == MDS_STRESS_1) {
 		denum = eta_fit * eta_conf;
-		if (denum > 0) {
+		if (denum > 0.0) {
 			tmp = 1.0 - rho * rho / denum;
-			if (tmp > 0) {
+			if (tmp > 0.0) {
 				stress = sqrt (tmp);
 			}
 		}
 	} else if (type == MDS_STRESS_2) {
-		double m = 0, wsum = 0, var = 0, **w = weight -> data;
+		double m = 0.0, wsum = 0.0, var = 0.0, **w = weight -> data;
 		double **c = conf -> data;
 		long nPoints = conf -> numberOfRows;
 
@@ -1794,7 +1659,7 @@ double Distance_Weight_stress (Distance fit, Distance conf, Weight weight, int t
 			}
 		}
 		m /= wsum;
-		if (m > 0) {
+		if (m > 0.0) {
 			// Get variance
 
 			for (long i = 1; i <= nPoints - 1; i++) {
@@ -1804,94 +1669,97 @@ double Distance_Weight_stress (Distance fit, Distance conf, Weight weight, int t
 				}
 			}
 			denum = var * eta_fit;
-			if (denum > 0) {
+			if (denum > 0.0) {
 				stress = sqrt ( (eta_fit * eta_conf - rho * rho) / denum);
 			}
 		}
 	} else if (type == MDS_RAW_STRESS) {
-		stress = eta_fit + eta_conf - 2 * rho ;
+		stress = eta_fit + eta_conf - 2.0 * rho ;
 	}
 	return stress;
 }
 
-void Distance_Weight_rawStressComponents (Distance fit, Distance conf,
-        Weight weight, double *eta_fit, double *eta_conf, double *rho) {
+void Distance_Weight_rawStressComponents (Distance fit, Distance conf, Weight weight, double *p_etafit, double *p_etaconf, double *p_rho)
+{
 	long nPoints = conf -> numberOfRows;
 
-	*eta_fit = *eta_conf = *rho = 0;
+	double etafit = 0.0, etaconf = 0.0, rho = 0.0;
 
-	double wsum = 0;
 	for (long i = 1; i <= nPoints - 1; i++) {
 		double *wi = weight -> data[i];
 		double *fiti = fit -> data[i];
 		double *confi = conf -> data[i];
 
 		for (long j = i + 1; j <= nPoints; j++) {
-			*eta_fit += wi[j] * fiti[j] * fiti[j];
-			*eta_conf += wi[j] * confi[j] * confi[j];
-			*rho += wi[j] * fiti[j] * confi[j];
-			wsum += wi[j];
+			etafit += wi[j] * fiti[j] * fiti[j];
+			etaconf += wi[j] * confi[j] * confi[j];
+			rho += wi[j] * fiti[j] * confi[j];
 		}
 	}
+	if (p_etafit) {
+		*p_etafit = etafit;
+	}
+	if (p_etaconf) {
+		*p_etaconf = etaconf;
+	}
+	if (p_rho) {
+		*p_rho = rho;
+	}
 }
 
-double Dissimilarity_Configuration_Transformator_Weight_stress (Dissimilarity d,
-        Configuration c, Any transformator, Weight w, int type) {
-	Transformator t = (Transformator) transformator;
+double Dissimilarity_Configuration_Transformator_Weight_stress (Dissimilarity d, Configuration c, Transformator t, Weight w, int type) {
 	long nPoints = d -> numberOfRows;
 	double stress = NUMundefined;
 
-	if (nPoints < 1 || nPoints != c -> numberOfRows  || nPoints != t -> numberOfPoints ||
-	        (w && nPoints != w -> numberOfRows)) {
+	if (nPoints < 1 || nPoints != c -> numberOfRows  || nPoints != t -> numberOfPoints || (w && nPoints != w -> numberOfRows)) {
 		Melder_throw (U"Incorrect number of points.");
 	}
-	autoWeight aw = 0;
-	if (w == 0) {
-		aw.reset (Weight_create (nPoints));
-		w = aw.peek();
+	autoWeight aw;
+	if (! w) {
+		aw = Weight_create (nPoints);
+		w = aw.get();
 	}
 	autoDistance cdist = Configuration_to_Distance (c);
 	autoMDSVec vec = Dissimilarity_to_MDSVec (d);
-	autoDistance fit = Transformator_transform (t, vec.peek(), cdist.peek(), w);
+	autoDistance fit = Transformator_transform (t, vec.get(), cdist.get(), w);
 
-	stress = Distance_Weight_stress (fit.peek(), cdist.peek(), w, type);
+	stress = Distance_Weight_stress (fit.get(), cdist.get(), w, type);
 	return stress;
 }
 
 double Dissimilarity_Configuration_Weight_absolute_stress (Dissimilarity d, Configuration c, Weight w, int type) {
 	autoTransformator t = Transformator_create (d -> numberOfRows);
-	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.peek(), w, type);
+	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.get(), w, type);
 	return stress;
 }
 
 double Dissimilarity_Configuration_Weight_ratio_stress (Dissimilarity d, Configuration c, Weight w, int type) {
 	autoRatioTransformator t = RatioTransformator_create (d -> numberOfRows);
-	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.peek(), w, type);
+	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.get(), w, type);
 	return stress;
 }
 
 double Dissimilarity_Configuration_Weight_interval_stress (Dissimilarity d, Configuration c, Weight w, int type) {
 	autoISplineTransformator t = ISplineTransformator_create (d -> numberOfRows, 0, 1);
-	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.peek(), w, type);
+	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.get(), w, type);
 	return stress;
 }
 
 double Dissimilarity_Configuration_Weight_monotone_stress (Dissimilarity d, Configuration c, Weight w, int tiesProcessing, int type) {
 	autoMonotoneTransformator t = MonotoneTransformator_create (d -> numberOfRows);
-	MonotoneTransformator_setTiesProcessing (t.peek(), tiesProcessing);
-	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.peek(), w, type);
+	MonotoneTransformator_setTiesProcessing (t.get(), tiesProcessing);
+	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.get(), w, type);
 	return stress;
 }
 
-double Dissimilarity_Configuration_Weight_ispline_stress (Dissimilarity d,
-        Configuration c, Weight w, long numberOfInteriorKnots, long order, int type) {
+double Dissimilarity_Configuration_Weight_ispline_stress (Dissimilarity d, Configuration c, Weight w, long numberOfInteriorKnots, long order, int type) {
 	autoISplineTransformator t = ISplineTransformator_create (d -> numberOfRows, numberOfInteriorKnots, order);
-	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.peek(), w, type);
+	double stress = Dissimilarity_Configuration_Transformator_Weight_stress (d, c, t.get(), w, type);
 	return stress;
 }
 
 void Distance_Weight_smacofNormalize (Distance me, Weight w) {
-	double sumsq = 0;
+	double sumsq = 0.0;
 	for (long i = 1; i <= my numberOfRows - 1; i++) {
 		double *wi = w -> data[i];
 		double *di = my data[i];
@@ -1899,7 +1767,7 @@ void Distance_Weight_smacofNormalize (Distance me, Weight w) {
 			sumsq += wi[j] * di[j] * di[j];
 		}
 	}
-	double scale = sqrt (my numberOfRows * (my numberOfRows - 1) / (2 * sumsq));
+	double scale = sqrt (my numberOfRows * (my numberOfRows - 1) / (2.0 * sumsq));
 	for (long i = 1; i <= my numberOfRows - 1; i++) {
 		for (long j = i + 1; j <= my numberOfRows; j++) {
 			my data[j][i] = (my data[i][j] *= scale);
@@ -1910,10 +1778,10 @@ void Distance_Weight_smacofNormalize (Distance me, Weight w) {
 double Distance_Weight_congruenceCoefficient (Distance x, Distance y, Weight w) {
 	long nPoints = x -> numberOfRows;
 	if (y -> numberOfRows != nPoints || w -> numberOfRows != nPoints) {
-		return 0;
+		return 0.0;
 	}
 
-	double xy = 0, x2 = 0, y2 = 0;
+	double xy = 0.0, x2 = 0.0, y2 = 0.0;
 	for (long i = 1; i <= nPoints - 1; i++) {
 		double *xi = x -> data[i];
 		double *yi = y -> data[i];
@@ -1927,23 +1795,20 @@ double Distance_Weight_congruenceCoefficient (Distance x, Distance y, Weight w)
 	return xy / (sqrt (x2) * sqrt (y2));
 }
 
-Configuration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimilarity me, Configuration conf,
-        Weight weight, Any transformator, double tolerance, long numberOfIterations, int showProgress, double *stress) {
+autoConfiguration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimilarity me, Configuration conf, Weight weight, Transformator t, double tolerance, long numberOfIterations, bool showProgress, double *stress) {
 	try {
-		Transformator t = (Transformator) transformator;
 		long nPoints = conf -> numberOfRows;
 		long nDimensions = conf -> numberOfColumns;
-		double tol = 1e-6, stressp = 1e38;
-		bool no_weight = weight == 0;
+		double tol = 1e-6, stressp = 1e308, stres;
+		bool no_weight = ! weight;
 
-		if (my numberOfRows != nPoints || (!no_weight && weight -> numberOfRows != nPoints) ||
-		        t -> numberOfPoints != nPoints) {
+		if (my numberOfRows != nPoints || (!no_weight && weight -> numberOfRows != nPoints) || t -> numberOfPoints != nPoints) {
 			Melder_throw (U"Dimensions not in concordance.");
 		}
-		autoWeight aw = 0;
+		autoWeight aw;
 		if (no_weight) {
-			aw.reset (Weight_create (nPoints));
-			weight = aw.peek();
+			aw = Weight_create (nPoints);
+			weight = aw.get();
 		}
 		autoNUMmatrix<double> v (1, nPoints, 1, nPoints);
 		autoNUMmatrix<double> vplus (1, nPoints, 1, nPoints);
@@ -1979,21 +1844,21 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimila
 
 			// transform & normalization
 
-			autoDistance fit = Transformator_transform (t, vec.peek(), dist.peek(), weight);
+			autoDistance fit = Transformator_transform (t, vec.get(), dist.get(), weight);
 
 			// Make conf the Guttman transform of z
 
-			smacof_guttmanTransform (conf, z.peek(), fit.peek(), weight, vplus.peek());
+			smacof_guttmanTransform (conf, z.get(), fit.get(), weight, vplus.peek());
 
 			// Compute stress
 
 			autoDistance cdist = Configuration_to_Distance (conf);
 
-			*stress = Distance_Weight_stress (fit.peek(), cdist.peek(), weight, MDS_NORMALIZED_STRESS);
+			stres = Distance_Weight_stress (fit.get(), cdist.get(), weight, MDS_NORMALIZED_STRESS);
 
 			// Check stop criterium
 
-			if (fabs (*stress - stressp) / stressp < tolerance) {
+			if (fabs (stres - stressp) / stressp < tolerance) {
 				break;
 			}
 
@@ -2001,16 +1866,18 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimila
 
 			NUMmatrix_copyElements (conf -> data, z -> data, 1, nPoints, 1, nDimensions);
 
-			stressp = *stress;
+			stressp = stres;
 			if (showProgress) {
-				Melder_progress ( (double) iter / (numberOfIterations + 1), U"kruskal: stress ",
-				                   *stress);
+				Melder_progress ((double) iter / (numberOfIterations + 1), U"kruskal: stress ", stres);
 			}
 		}
 		if (showProgress) {
 			Melder_progress (1.0);
 		}
-		return z.transfer();
+		if (stress) {
+			*stress = stres;
+		}
+		return z;
 	} catch (MelderError) {
 		if (showProgress) {
 			Melder_progress (1.0);
@@ -2019,12 +1886,11 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimila
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Dissimilarity me, Configuration conf,
-        Weight w, Any transformator, double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Dissimilarity me, Configuration conf,  Weight w, Transformator t, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	int showMulti = showProgress && numberOfRepetitions > 1;
 	try {
-		int showSingle = showProgress && numberOfRepetitions == 1;
-		double stress, stressmax = 1e38;
+		bool showSingle = ( showProgress && numberOfRepetitions == 1 );
+		double stress, stressmax = 1e308;
 
 		autoConfiguration cstart = Data_copy (conf);
 		autoConfiguration  cbest = Data_copy (conf);
@@ -2034,14 +1900,13 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Diss
 		}
 
 		for (long i = 1; i <= numberOfRepetitions; i++) {
-			autoConfiguration cresult = Dissimilarity_Configuration_Weight_Transformator_smacof
-			                            (me, cstart.peek(), w, transformator, tolerance, numberOfIterations, showSingle, &stress);
+			autoConfiguration cresult = Dissimilarity_Configuration_Weight_Transformator_smacof (me, cstart.get(), w, t, tolerance, numberOfIterations, showSingle, &stress);
 			if (stress < stressmax) {
 				stressmax = stress;
-				cbest.reset (cresult.transfer());
+				cbest = cresult.move();
 			}
-			Configuration_randomize (cstart.peek());
-			TableOfReal_centreColumns (cstart.peek());
+			Configuration_randomize (cstart.get());
+			TableOfReal_centreColumns (cstart.get());
 
 			if (showMulti) {
 				Melder_progress ( (double) i / (numberOfRepetitions + 1), i, U" from ", numberOfRepetitions);
@@ -2050,7 +1915,7 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Diss
 		if (showMulti) {
 			Melder_progress (1.0);
 		}
-		return cbest.transfer();
+		return cbest;
 	} catch (MelderError) {
 		if (showMulti) {
 			Melder_progress (1.0);
@@ -2059,129 +1924,109 @@ Configuration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Diss
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_absolute_mds (Dissimilarity me, Configuration cstart, Weight w,
-        double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_absolute_mds (Dissimilarity me, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoTransformator t = Transformator_create (my numberOfRows);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof
-		                      (me, cstart, w, t.peek(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.get(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no improved Configuration created (absolute mds method).");
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_ratio_mds (Dissimilarity me, Configuration cstart, Weight w,
-        double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_ratio_mds (Dissimilarity me, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoRatioTransformator t = RatioTransformator_create (my numberOfRows);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof
-		                      (me, cstart, w, t.peek(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.get(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no improved Configuration created (ratio mds method).");
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_interval_mds (Dissimilarity me, Configuration cstart, Weight w,
-        double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_interval_mds (Dissimilarity me, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoISplineTransformator t = ISplineTransformator_create (my numberOfRows, 0, 1);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof
-		                      (me, cstart, w, t.peek(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.get(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no improved Configuration created (interval mds method).");
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_monotone_mds (Dissimilarity me, Configuration cstart, Weight w,
-        int tiesProcessing, double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_monotone_mds (Dissimilarity me, Configuration cstart, Weight w, int tiesProcessing, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoMonotoneTransformator t = MonotoneTransformator_create (my numberOfRows);
-		MonotoneTransformator_setTiesProcessing (t.peek(), tiesProcessing);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof
-		                      (me, cstart, w, t.peek(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		MonotoneTransformator_setTiesProcessing (t.get(), tiesProcessing);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.get(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no improved Configuration created (monotone mds method).");
 	}
 }
 
-Configuration Dissimilarity_Configuration_Weight_ispline_mds (Dissimilarity me, Configuration cstart, Weight w,
-        long numberOfInteriorKnots, long order, double tolerance, long numberOfIterations, long numberOfRepetitions,
-        int showProgress) {
+autoConfiguration Dissimilarity_Configuration_Weight_ispline_mds (Dissimilarity me, Configuration cstart, Weight w, long numberOfInteriorKnots, long order, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoISplineTransformator t = ISplineTransformator_create (my numberOfRows, numberOfInteriorKnots, order);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.peek(),
-		                      tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration c = Dissimilarity_Configuration_Weight_Transformator_multiSmacof (me, cstart, w, t.get(), tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no improved Configuration created (ispline mds method).");
 	}
 }
 
-Configuration Dissimilarity_Weight_absolute_mds (Dissimilarity me, Weight w, long numberOfDimensions,
-        double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Weight_absolute_mds (Dissimilarity me, Weight w, long numberOfDimensions, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoDistance d = Dissimilarity_to_Distance (me, MDS_ABSOLUTE);
-		autoConfiguration cstart = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_absolute_mds
-		                      (me, cstart.peek(), w, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration cstart = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_absolute_mds (me, cstart.get(), w, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (absolute mds method).");
 	}
 }
 
-Configuration Dissimilarity_Weight_interval_mds (Dissimilarity me, Weight w, long numberOfDimensions,
-        double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Weight_interval_mds (Dissimilarity me, Weight w, long numberOfDimensions, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoDistance d = Dissimilarity_to_Distance (me, MDS_RATIO);
-		autoConfiguration cstart = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_interval_mds
-		                      (me, cstart.peek(), w, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration cstart = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_interval_mds (me, cstart.get(), w, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (interval mds method).");
 	}
 }
 
-Configuration Dissimilarity_Weight_monotone_mds (Dissimilarity me, Weight w, long numberOfDimensions,
-        int tiesProcessing, double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Weight_monotone_mds (Dissimilarity me, Weight w, long numberOfDimensions, int tiesProcessing, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoDistance d = Dissimilarity_to_Distance (me, MDS_ORDINAL);
-		autoConfiguration cstart = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_monotone_mds (me, cstart.peek(), w, tiesProcessing,
-		                      tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration cstart = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_monotone_mds (me, cstart.get(), w, tiesProcessing, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (monotone mds method).");
 	}
 }
 
-Configuration Dissimilarity_Weight_ratio_mds (Dissimilarity me, Weight w, long numberOfDimensions, double tolerance,
-        long numberOfIterations, long numberOfRepetitions, int showProgress) {
+autoConfiguration Dissimilarity_Weight_ratio_mds (Dissimilarity me, Weight w, long numberOfDimensions, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoDistance d = Dissimilarity_to_Distance (me, MDS_RATIO);
-		autoConfiguration cstart = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_ratio_mds (me, cstart.peek(), w, tolerance,
-		                      numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration cstart = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_ratio_mds (me, cstart.get(), w, tolerance,
+		    numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (ratio mds method).");
 	}
 }
 
-Configuration Dissimilarity_Weight_ispline_mds (Dissimilarity me, Weight w, long numberOfDimensions,
-        long numberOfInteriorKnots, long order, double tolerance, long numberOfIterations, long numberOfRepetitions,
-        int showProgress) {
+autoConfiguration Dissimilarity_Weight_ispline_mds (Dissimilarity me, Weight w, long numberOfDimensions, long numberOfInteriorKnots, long order, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress) {
 	try {
 		autoDistance d = Dissimilarity_to_Distance (me, MDS_ORDINAL);
-		autoConfiguration cstart = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		autoConfiguration c = Dissimilarity_Configuration_Weight_ispline_mds (me, cstart.peek(), w,
-		                      numberOfInteriorKnots, order, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
-		return c.transfer();
+		autoConfiguration cstart = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		autoConfiguration c = Dissimilarity_Configuration_Weight_ispline_mds (me, cstart.get(), w,
+		    numberOfInteriorKnots, order, tolerance, numberOfIterations, numberOfRepetitions, showProgress);
+		return c;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (ispline mds method).");
 	}
@@ -2189,14 +2034,12 @@ Configuration Dissimilarity_Weight_ispline_mds (Dissimilarity me, Weight w, long
 
 /***** classical **/
 
-static void MDSVec_Distances_getStressValues (MDSVec me, Distance ddist,
-        Distance dfit, int stress_formula, double *stress, double *s, double *t,
-        double *dbar) {
+static void MDSVec_Distances_getStressValues (MDSVec me, Distance ddist, Distance dfit, int stress_formula, double *stress, double *s, double *t, double *dbar) {
 	long nProximities = my nProximities;
 	long *iPoint = my iPoint, *jPoint = my jPoint;
 	double **dist = ddist -> data, **fit = dfit -> data;
 
-	*s = *t = *dbar = 0;
+	*s = *t = *dbar = 0.0;
 
 	if (stress_formula == 2) {
 		for (long i = 1; i <= nProximities; i++) {
@@ -2212,12 +2055,12 @@ static void MDSVec_Distances_getStressValues (MDSVec me, Distance ddist,
 		*s += st * st; *t += tt * tt;
 	}
 
-	*stress = *t > 0 ? sqrt (*s / *t) : 0;
+	*stress = *t > 0.0 ? sqrt (*s / *t) : 0.0;
 }
 
-static double func (Data object, const double p[]) {
+static double func (Daata object, const double p[]) {
 	Kruskal me = (Kruskal) object;
-	MDSVec him = my vec;
+	MDSVec him = my vec.get();
 	double **x = my configuration -> data, s, t, dbar, stress;
 	double metric = my configuration -> metric;
 	long numberOfDimensions = my configuration -> numberOfColumns;
@@ -2231,29 +2074,26 @@ static double func (Data object, const double p[]) {
 
 	// Normalize
 
-	NUMcentreColumns (x, 1, numberOfPoints, 1, numberOfDimensions, NULL);
+	NUMcentreColumns (x, 1, numberOfPoints, 1, numberOfDimensions, nullptr);
 	NUMnormalize (x, numberOfPoints, numberOfDimensions, sqrt (numberOfPoints));
 
 	// Calculate interpoint distances from the configuration
 
-	autoDistance dist = Configuration_to_Distance (my configuration);
-
+	autoDistance dist = Configuration_to_Distance (my configuration.get());
 
 	// Monotone regression
 
-	autoDistance fit = MDSVec_Distance_monotoneRegression (my vec, dist.peek(), tiesProcessing);
-
+	autoDistance fit = MDSVec_Distance_monotoneRegression (my vec.get(), dist.get(), tiesProcessing);
 
 	// Get numerator and denominator of stress
 
-
-	MDSVec_Distances_getStressValues (my vec, dist.peek(), fit.peek(), my stress_formula, &stress, &s, &t, &dbar);
+	MDSVec_Distances_getStressValues (my vec.get(), dist.get(), fit.get(), my stress_formula, &stress, &s, &t, &dbar);
 
 	// Gradient calculation.
 
 	for (long i = 1; i <= numberOfPoints; i++) {
 		for (long j = 1; j <= numberOfDimensions; j++) {
-			my dx[i][j] = 0;
+			my dx[i][j] = 0.0;
 		}
 	}
 
@@ -2265,11 +2105,11 @@ static double func (Data object, const double p[]) {
 
 	for (long i = 1; i <= his nProximities; i++) {
 		long ii = my vec -> iPoint[i], jj = my vec -> jPoint[i];
-		double g1 = stress * ( (dist->data[ii][jj] - fit->data[ii][jj]) / s - (dist->data[ii][jj] - dbar) / t);
+		double g1 = stress * ((dist->data[ii][jj] - fit->data[ii][jj]) / s - (dist->data[ii][jj] - dbar) / t);
 		for (long j = 1; j <= numberOfDimensions; j++) {
 			double dj = x[ii][j] - x[jj][j];
-			double g2 = g1 * pow (fabs (dj) / dist->data[ii][jj], metric - 1);
-			if (dj < 0) {
+			double g2 = g1 * pow (fabs (dj) / dist->data[ii][jj], metric - 1.0);
+			if (dj < 0.0) {
 				g2 = -g2;
 			}
 			my dx[ii][j] += g2; my dx[jj][j] -= g2;
@@ -2283,10 +2123,9 @@ static double func (Data object, const double p[]) {
 }
 
 /* Precondition: configuration was not changed since previous call to func */
-static void dfunc (Data object, const double p[], double dp[]) {
+static void dfunc (Daata object, const double * /* p */, double dp[]) {
 	Kruskal me = (Kruskal) object;
-	Configuration thee = my configuration;
-	(void) p;
+	Configuration thee = my configuration.get();
 
 	long k = 1;
 	for (long i = 1; i <= thy numberOfRows; i++) {
@@ -2296,160 +2135,134 @@ static void dfunc (Data object, const double p[], double dp[]) {
 	}
 }
 
-Thing_implement (Kruskal, Thing, 0);
-
-void structKruskal :: v_destroy () {
+void structKruskal :: v_destroy () noexcept {
 	NUMmatrix_free<double> (dx, 1, 1);
-	forget (configuration);
-	forget (proximities);
-	forget (vec);
-	forget (minimizer);
 	Kruskal_Parent :: v_destroy ();
 }
 
-Kruskal Kruskal_create (long numberOfPoints, long numberOfDimensions) {
+autoKruskal Kruskal_create (long numberOfPoints, long numberOfDimensions) {
 	try {
 		autoKruskal me = Thing_new (Kruskal);
-		my proximities = Proximities_create ();
 		my configuration = Configuration_create (numberOfPoints, numberOfDimensions);
+		my proximities = ProximityList_create ();
 		my dx = NUMmatrix<double> (1, numberOfPoints, 1, numberOfDimensions);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Kruskal not created.");
 	}
 }
 
-Configuration Dissimilarity_kruskal (Dissimilarity me, long numberOfDimensions, long metric, int tiesProcessing,
-                                     int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions) {
+autoConfiguration Dissimilarity_kruskal (Dissimilarity me, long numberOfDimensions, long /* metric */, int tiesProcessing, int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions) {
 	try {
 		int scale = 1;
-		(void) metric;
 		autoDistance d = Dissimilarity_to_Distance (me, scale);
-		autoConfiguration c = Distance_to_Configuration_torsca (d.peek(), numberOfDimensions);
-		Configuration_normalize (c.peek(), 1.0, 0);
-		autoConfiguration thee = Dissimilarity_Configuration_kruskal (me, c.peek(), tiesProcessing,
-		                         stress_formula, tolerance, numberOfIterations, numberOfRepetitions);
-		return thee.transfer();
+		autoConfiguration c = Distance_to_Configuration_torsca (d.get(), numberOfDimensions);
+		Configuration_normalize (c.get(), 1.0, false);
+		autoConfiguration thee = Dissimilarity_Configuration_kruskal (me, c.get(), tiesProcessing, stress_formula, tolerance, numberOfIterations, numberOfRepetitions);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created (kruskal method).");
 	}
 }
 
-void Dissimilarity_Configuration_drawShepardDiagram (Dissimilarity me,
-        Configuration him, Graphics g, double xmin, double xmax, double ymin,
-        double ymax, double size_mm, const char32 *mark, int garnish) {
+void Dissimilarity_Configuration_drawShepardDiagram (Dissimilarity me, Configuration him, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	autoDistance dist = Configuration_to_Distance (him);
-	Proximity_Distance_drawScatterDiagram (me, dist.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+	Proximity_Distance_drawScatterDiagram (me, dist.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-Distance Dissimilarity_Configuration_monotoneRegression (Dissimilarity dissimilarity, Configuration configuration,
-        int tiesProcessing) {
+autoDistance Dissimilarity_Configuration_monotoneRegression (Dissimilarity dissimilarity, Configuration configuration, int tiesProcessing) {
 	try {
 		autoDistance dist = Configuration_to_Distance (configuration);
-		autoDistance result = Dissimilarity_Distance_monotoneRegression (dissimilarity, dist.peek(), tiesProcessing);
-		return result.transfer();
+		autoDistance result = Dissimilarity_Distance_monotoneRegression (dissimilarity, dist.get(), tiesProcessing);
+		return result;
 	} catch (MelderError) {
 		Melder_throw (U"No Distance created (monotone regression).");
 	}
 }
 
-Distances Dissimilarities_Configuration_monotoneRegression (Dissimilarities me, Configuration configuration, int tiesProcessing) {
+autoDistanceList DissimilarityList_Configuration_monotoneRegression (DissimilarityList me, Configuration configuration, int tiesProcessing) {
 	try {
-		autoDistances result = Distances_create ();
+		autoDistanceList thee = DistanceList_create ();
 		autoDistance dist = Configuration_to_Distance (configuration);
-		for (long i = 1; i <= my size; i++) {
-			autoDistance d = Dissimilarity_Distance_monotoneRegression ( (Dissimilarity) my item[i], dist.peek(), tiesProcessing);
-			Collection_addItem (result.peek(), d.transfer());
+		for (long i = 1; i <= my size; i ++) {
+			autoDistance d = Dissimilarity_Distance_monotoneRegression (my at [i], dist.get(), tiesProcessing);
+			thy addItem_move (d.move());
 		}
-		return result.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No Distances created (monotone regression).");
 	}
 }
 
-
-void Dissimilarity_Configuration_drawMonotoneRegression (Dissimilarity me, Configuration him, Graphics g,
-        int tiesProcessing, double xmin, double xmax, double ymin, double ymax, double size_mm,
-        const char32 *mark, int garnish) {
+void Dissimilarity_Configuration_drawMonotoneRegression (Dissimilarity me, Configuration him, Graphics g, int tiesProcessing, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	/* obsolete replace by transformator */
 	autoDistance fit = Dissimilarity_Configuration_monotoneRegression (me, him, tiesProcessing);
-	Proximity_Distance_drawScatterDiagram (me, fit.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+	Proximity_Distance_drawScatterDiagram (me, fit.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-void Dissimilarity_Configuration_Weight_drawAbsoluteRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
-        double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
-	autoTransformator t = Transformator_create (d->numberOfRows);
-	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.peek(), w);
-	Proximity_Distance_drawScatterDiagram (d, fit.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+void Dissimilarity_Configuration_Weight_drawAbsoluteRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
+	autoTransformator t = Transformator_create (d -> numberOfRows);
+	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.get(), w);
+	Proximity_Distance_drawScatterDiagram (d, fit.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-void Dissimilarity_Configuration_Weight_drawRatioRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
-        double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
+void Dissimilarity_Configuration_Weight_drawRatioRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	autoRatioTransformator t = RatioTransformator_create (d -> numberOfRows);
-	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.peek(), w);
-	Proximity_Distance_drawScatterDiagram (d, fit.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.get(), w);
+	Proximity_Distance_drawScatterDiagram (d, fit.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-void Dissimilarity_Configuration_Weight_drawIntervalRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
-        double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
-	Dissimilarity_Configuration_Weight_drawISplineRegression (d, c, w, g,
-	        0, 1, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+void Dissimilarity_Configuration_Weight_drawIntervalRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
+	Dissimilarity_Configuration_Weight_drawISplineRegression (d, c, w, g, 0.0, 1.0, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-void Dissimilarity_Configuration_Weight_drawMonotoneRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
-        int tiesProcessing, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
+void Dissimilarity_Configuration_Weight_drawMonotoneRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, int tiesProcessing, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	autoMonotoneTransformator t = MonotoneTransformator_create (d->numberOfRows);
-	MonotoneTransformator_setTiesProcessing (t.peek(), tiesProcessing);
-	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.peek(), w);
-	Proximity_Distance_drawScatterDiagram (d, fit.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+	MonotoneTransformator_setTiesProcessing (t.get(), tiesProcessing);
+	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.get(), w);
+	Proximity_Distance_drawScatterDiagram (d, fit.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-void Dissimilarity_Configuration_Weight_drawISplineRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
-        long numberOfInternalKnots, long order, double xmin, double xmax, double ymin, double ymax, double size_mm,
-        const char32 *mark, int garnish) {
+void Dissimilarity_Configuration_Weight_drawISplineRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, long numberOfInternalKnots, long order, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	autoISplineTransformator t = ISplineTransformator_create (d->numberOfRows, numberOfInternalKnots, order);
-	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.peek(), w);
-	Proximity_Distance_drawScatterDiagram (d, fit.peek(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
+	autoDistance fit = Dissimilarity_Configuration_Transformator_Weight_transform (d, c, t.get(), w);
+	Proximity_Distance_drawScatterDiagram (d, fit.get(), g, xmin, xmax, ymin, ymax, size_mm, mark, garnish);
 }
 
-Distance Dissimilarity_Configuration_Transformator_Weight_transform (Dissimilarity d, Configuration c, Any t, Weight w) {
+autoDistance Dissimilarity_Configuration_Transformator_Weight_transform (Dissimilarity d, Configuration c, Transformator t, Weight w) {
 	try {
-		autoWeight aw = 0;
-		if (w == 0) {
-			aw.reset (Weight_create (d -> numberOfRows));
-			w = aw.peek();
+		autoWeight aw;
+		if (! w) {
+			aw = Weight_create (d -> numberOfRows);
+			w = aw.get();
 		}
 		autoDistance cdist = Configuration_to_Distance (c);
 		autoMDSVec v = Dissimilarity_to_MDSVec (d);
-		autoDistance thee = Transformator_transform (t, v.peek(), cdist.peek(), w);
-		return thee.transfer();
+		autoDistance thee = Transformator_transform (t, v.get(), cdist.get(), w);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Distance not created.");
 	}
 }
 
-double Dissimilarity_Configuration_Weight_Transformator_normalizedStress
-(Dissimilarity me, Configuration conf, Weight weight, Transformator t) {
+double Dissimilarity_Configuration_Weight_Transformator_normalizedStress (Dissimilarity me, Configuration conf, Weight weight, Transformator t) {
 	autoDistance cdist = Configuration_to_Distance (conf);
 	autoMDSVec vec = Dissimilarity_to_MDSVec (me);
-	autoDistance fdist = Transformator_transform (t, vec.peek(), cdist.peek(), weight);
-	double stress = Distance_Weight_stress (fdist.peek(), cdist.peek(), weight, MDS_NORMALIZED_STRESS);
+	autoDistance fdist = Transformator_transform (t, vec.get(), cdist.get(), weight);
+	double stress = Distance_Weight_stress (fdist.get(), cdist.get(), weight, MDS_NORMALIZED_STRESS);
 	return stress;
 }
 
-double Dissimilarity_Configuration_getStress (Dissimilarity me, Configuration him, int tiesProcessing,
-        int stress_formula) {
+double Dissimilarity_Configuration_getStress (Dissimilarity me, Configuration him, int tiesProcessing, int stress_formula) {
 	autoDistance dist = Configuration_to_Distance (him);
 	autoMDSVec vec = Dissimilarity_to_MDSVec (me);
-	autoDistance fit = MDSVec_Distance_monotoneRegression (vec.peek(), dist.peek(), tiesProcessing);
-	double s, t, dbar;
-	double stress;
-	MDSVec_Distances_getStressValues (vec.peek(), dist.peek(), fit.peek(), stress_formula, &stress, &s, &t, &dbar);
+	autoDistance fit = MDSVec_Distance_monotoneRegression (vec.get(), dist.get(), tiesProcessing);
+	double s, t, dbar, stress;
+	MDSVec_Distances_getStressValues (vec.get(), dist.get(), fit.get(), stress_formula, &stress, &s, &t, &dbar);
 	return stress;
 }
 
-Configuration Dissimilarity_Configuration_kruskal (Dissimilarity me, Configuration him, int tiesProcessing,
-        int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions) {
+autoConfiguration Dissimilarity_Configuration_kruskal (Dissimilarity me, Configuration him, int tiesProcessing, int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions) {
 	try {
 		// The Configuration is normalized: each dimension centred +
 		//	total variance set
@@ -2463,27 +2276,27 @@ Configuration Dissimilarity_Configuration_kruskal (Dissimilarity me, Configurati
 		}
 
 		autoKruskal thee = Kruskal_create (my numberOfRows, his numberOfColumns);
-		TableOfReal_copyLabels (me, thy configuration, 1, 0);
+		TableOfReal_copyLabels (me, thy configuration.get(), 1, 0);
 		autoDissimilarity dissimilarity = Data_copy (me);
-		Collection_addItem (thy proximities, dissimilarity.transfer());
+		thy proximities -> addItem_move (dissimilarity.move());
 		thy vec = Dissimilarity_to_MDSVec (me);
 
-		thy minimizer = (Minimizer) VDSmagtMinimizer_create (numberOfCoordinates, (Data) thee.peek(), func, dfunc);
+		thy minimizer = VDSmagtMinimizer_create (numberOfCoordinates, (Daata) thee.get(), func, dfunc);
 
 		NUMdmatrix_into_vector (his data, thy minimizer -> p, 1, his numberOfRows, 1, his numberOfColumns);
 
 		thy stress_formula = stress_formula;
 		thy process = tiesProcessing;
-		Configuration_setMetric (thy configuration, his metric);
+		Configuration_setMetric (thy configuration.get(), his metric);
 
-		Minimizer_minimizeManyTimes (thy minimizer, numberOfRepetitions, numberOfIterations, tolerance);
+		Minimizer_minimizeManyTimes (thy minimizer.get(), numberOfRepetitions, numberOfIterations, tolerance);
 
-		/* call the function to get the best configuration */
+		// call the function to get the best configuration
 
-		(void) func ( (Data) thee.peek(), ( (Minimizer) (thy minimizer)) -> p);
+		(void) func ((Daata) thee.get(), thy minimizer -> p); 
 
-		autoConfiguration result = Data_copy (thy configuration);
-		return result.transfer();
+		autoConfiguration result = Data_copy (thy configuration.get()); // TODO move from its autoConfiguration
+		return result;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Configuration created.");
 	}
@@ -2491,16 +2304,14 @@ Configuration Dissimilarity_Configuration_kruskal (Dissimilarity me, Configurati
 
 /************************** INDSCAL **************************************/
 
-
 /*
 	Ten Berge, Kiers & Krijnen (1993), Computational Solutions for the
-	Problem of Negative Saliences and Nonsymmetry in INDSCAL,
-	Journal of Classification 10, 115-124.
+	Problem of Negative Saliences and Nonsymmetry in INDSCAL, Journal of Classification 10, 115-124.
 */
 
-static void indscal_iteration_tenBerge (ScalarProducts zc, Configuration xc, Salience weights) {
+static void indscal_iteration_tenBerge (ScalarProductList zc, Configuration xc, Salience weights) {
 	long nPoints = xc -> numberOfRows, nDimensions = xc -> numberOfColumns;
-	long nSources = zc -> size;
+	long nSources = zc->size;
 	double **x = xc -> data, **w = weights -> data, lambda;
 
 	// tolerance = 1e-4 is nearly optimal for dominant eigenvector estimation.
@@ -2509,61 +2320,61 @@ static void indscal_iteration_tenBerge (ScalarProducts zc, Configuration xc, Sal
 	autoNUMmatrix<double> wsih (1, nPoints, 1, nPoints);
 	autoNUMvector<double> solution (1, nPoints);
 
-	for (long h = 1; h <= nDimensions; h++) {
-		autoCollection sprc = Data_copy ( (Collection) zc);
-		for (long k = 1; k <= nPoints; k++) {
-			for (long l = 1; l <= nPoints; l++) {
-				wsih[k][l] = 0;
+	for (long h = 1; h <= nDimensions; h ++) {
+		autoScalarProductList sprc = Data_copy (zc);
+		for (long k = 1; k <= nPoints; k ++) {
+			for (long l = 1; l <= nPoints; l ++) {
+				wsih [k] [l] = 0.0;
 			}
 		}
 
-		for (long i = 1; i <= nSources; i++) {
-			ScalarProduct spr = (ScalarProduct) sprc -> item[i];
+		for (long i = 1; i <= nSources; i ++) {
+			ScalarProduct spr = sprc -> at [i];
 			double **sih = spr -> data;
 
 			// Construct the S[i][h] matrices (eq. 6)
 
-			for (long j = 1; j <= nDimensions; j++) {
+			for (long j = 1; j <= nDimensions; j ++) {
 				if (j == h) {
 					continue;
 				}
-				for (long k = 1; k <= nPoints; k++) {
-					for (long l = 1; l <= nPoints; l++) {
-						sih[k][l] -= x[k][j] * x[l][j] * w[i][j];
+				for (long k = 1; k <= nPoints; k ++) {
+					for (long l = 1; l <= nPoints; l ++) {
+						sih [k] [l] -= x [k] [j] * x [l] [j] * w [i] [j];
 					}
 				}
 			}
 
 			// the weighted S matrix (eq. 8)
 
-			for (long k = 1; k <= nPoints; k++) {
-				for (long l = 1; l <= nPoints; l++) {
-					wsih[k][l] += w[i][h] * sih[k][l];
+			for (long k = 1; k <= nPoints; k ++) {
+				for (long l = 1; l <= nPoints; l ++) {
+					wsih [k] [l] += w [i] [h] * sih [k] [l];
 				}
 			}
 		}
 
 		// largest eigenvalue of m (nonsymmetric matrix!!) is optimal solution for this dimension
 
-		for (long k = 1; k <= nPoints; k++) {
-			solution[k] = x[k][h];
+		for (long k = 1; k <= nPoints; k ++) {
+			solution[k] = x [k] [h];
 		}
 
-		NUMdominantEigenvector (wsih.peek(), nPoints, solution.peek(), &lambda, tolerance);
+		NUMdominantEigenvector (wsih.peek(), nPoints, solution.peek(), & lambda, tolerance);
 
 		// normalize the solution: centre and x'x = 1
 
-		double mean = 0;
+		double mean = 0.0;
 		for (long k = 1; k <= nPoints; k++) {
 			mean += solution[k];
 		}
 		mean /= nPoints;
 
-		if (mean == 0) {
+		if (mean == 0.0) {
 			continue;
 		}
 
-		double scale = 0;
+		double scale = 0.0;
 		for (long k = 1; k <= nPoints; k++) {
 			solution[k] -= mean;
 			scale += solution[k] * solution[k];
@@ -2575,16 +2386,16 @@ static void indscal_iteration_tenBerge (ScalarProducts zc, Configuration xc, Sal
 
 		// update weights. Make negative weights zero.
 
-		for (long i = 1; i <= nSources; i++) {
-			ScalarProduct spr = (ScalarProduct) sprc -> item[i];
-			double **sih = spr -> data, wih = 0;
-			for (long k = 1; k <= nPoints; k++) {
-				for (long l = 1; l <= nPoints; l++) {
-					wih += x[k][h] * sih[k][l] * x[l][h];
+		for (long i = 1; i <= nSources; i ++) {
+			ScalarProduct spr = sprc -> at [i];
+			double **sih = spr -> data, wih = 0.0;
+			for (long k = 1; k <= nPoints; k ++) {
+				for (long l = 1; l <= nPoints; l ++) {
+					wih += x [k] [h] * sih [k] [l] * x [l] [h];
 				}
 			}
-			if (wih < 0) {
-				wih = 0;
+			if (wih < 0.0) {
+				wih = 0.0;
 			}
 			w[i][h] = wih;
 		}
@@ -2592,16 +2403,13 @@ static void indscal_iteration_tenBerge (ScalarProducts zc, Configuration xc, Sal
 }
 
 
-void ScalarProducts_Configuration_Salience_indscal (ScalarProducts sp, Configuration configuration, Salience weights,
-        double tolerance, long numberOfIterations, int showProgress, Configuration *out1, Salience *out2, double *vaf) {
+void ScalarProductList_Configuration_Salience_indscal (ScalarProductList sp, Configuration configuration, Salience weights, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *p_conf, autoSalience *p_sal, double *p_varianceAccountedFor) {
 	try {
-		double tol = 1e-6, vafp = 0;
-		long nZeros = 0, nSources = sp -> size, iter;
-
-		autoConfiguration x = Data_copy (configuration);
-		autoSalience w = Data_copy (weights);
+		double tol = 1e-6, vafp = 0.0, varianceAccountedFor;
+		long nSources = sp->size, iter;
 
-		*out1 = 0; *out2 = 0;
+		autoConfiguration conf = Data_copy (configuration);
+		autoSalience sal = Data_copy (weights);
 
 		if (showProgress) {
 			Melder_progress (0.0, U"INDSCAL analysis");
@@ -2610,45 +2418,47 @@ void ScalarProducts_Configuration_Salience_indscal (ScalarProducts sp, Configura
 		// Solve for X, and W matrix via Alternating Least Squares.
 
 		for (iter = 1; iter <= numberOfIterations; iter++) {
-			indscal_iteration_tenBerge (sp, x.peek(), w.peek());
+			indscal_iteration_tenBerge (sp, conf.get(), sal.get());
 
 			// Goodness of fit and test criterion.
 
-			ScalarProducts_Configuration_Salience_vaf (sp, x.peek(), w.peek(), vaf);
+			ScalarProductList_Configuration_Salience_vaf (sp, conf.get(), sal.get(), & varianceAccountedFor);
 
-			if (*vaf > 1 - tol || fabs (*vaf - vafp) /  vafp < tolerance) {
+			if (varianceAccountedFor > 1.0 - tol || fabs (varianceAccountedFor - vafp) /  vafp < tolerance) {
 				break;
 			}
-			vafp = *vaf;
+			vafp = varianceAccountedFor;
 			if (showProgress) {
-				Melder_progress ( (double) iter / (numberOfIterations + 1),
-				                   U"indscal: vaf ", *vaf);
+				Melder_progress ( (double) iter / (numberOfIterations + 1), U"indscal: varianceAccountedFor ", varianceAccountedFor);
 			}
 		}
 
 		// Count number of zero weights
 
-		nZeros = NUMdmatrix_countZeros (w->data, w->numberOfRows, w->numberOfColumns);
-
-		// Set labels & names.
-
-		Thing_setName (x.peek(), U"indscal");
-		Thing_setName (w.peek(), U"indscal");
-		TableOfReal_labelsFromCollectionItemNames (w.peek(), sp, 1, 0);
-
-		*out1 = x.transfer(); *out2 = w.transfer();
+		long nZeros = NUMdmatrix_countZeros (sal -> data, sal -> numberOfRows, sal -> numberOfColumns);
 
+		if (p_conf) {
+			Thing_setName (conf.get(), U"indscal");
+			*p_conf = conf.move();
+		}
+		if (p_sal) {
+			Thing_setName (sal.get(), U"indscal");
+			TableOfReal_labelsFromCollectionItemNames (sal.get(), (Collection) sp, 1, 0);   // FIXME cast
+			*p_sal = sal.move();
+		}
+		if (p_varianceAccountedFor) {
+			*p_varianceAccountedFor = varianceAccountedFor;
+		}
 		if (showProgress) {
 			MelderInfo_writeLine (U"**************** INDSCAL results on Distances *******************\n\n", 
 				Thing_className (sp), U"number of objects: ", nSources);
-			for (long i = 1; i <= nSources; i++) {
-				MelderInfo_writeLine (U"  ", Thing_getName ( (Thing) sp -> item[i]));
+			for (long i = 1; i <= nSources; i ++) {
+				MelderInfo_writeLine (U"  ", Thing_getName (sp->at [i]));
 			}
 			if (nZeros > 0) {
 				MelderInfo_writeLine (U"WARNING: ", nZeros,  U" zero weight", (nZeros > 1 ? U"s" : U""), U"!");
 			}
-			MelderInfo_writeLine (U"\n\nVariance Accounted For = ", *vaf, U"\nThe optimal configuration was reached in ",
-				(iter > numberOfIterations ? numberOfIterations : iter), U" iterations.");
+			MelderInfo_writeLine (U"\n\nVariance Accounted For = ", varianceAccountedFor, U"\nThe optimal configuration was reached in ", (iter > numberOfIterations ? numberOfIterations : iter), U" iterations.");
 			MelderInfo_drain();
 		}
 		if (showProgress) {
@@ -2662,77 +2472,77 @@ void ScalarProducts_Configuration_Salience_indscal (ScalarProducts sp, Configura
 	}
 }
 
-void Distances_Configuration_Salience_indscal (Distances distances, Configuration configuration, Salience weights,
-        int normalizeScalarProducts, double tolerance, long numberOfIterations, int showProgress,
-        Configuration *out1, Salience *out2, double *vaf) {
+void DistanceList_Configuration_Salience_indscal (DistanceList distances, Configuration configuration, Salience weights, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2, double *vaf) {
 	try {
-		*out1 = 0; *out2 = 0;
-		autoScalarProducts sp = Distances_to_ScalarProducts (distances, normalizeScalarProducts);
-		ScalarProducts_Configuration_Salience_indscal (sp.peek(), configuration, weights, tolerance, numberOfIterations,
-		        showProgress, out1, out2, vaf);
+		autoScalarProductList sp = DistanceList_to_ScalarProductList (distances, normalizeScalarProducts);
+		ScalarProductList_Configuration_Salience_indscal (sp.get(), configuration, weights, tolerance, numberOfIterations, showProgress, out1, out2, vaf);
 	} catch (MelderError) {
 		Melder_throw (U"No indscal configuration calculated.");
 	}
 }
 
-
-void Dissimilarities_Configuration_Salience_indscal (Dissimilarities dissims, Configuration configuration,
-        Salience weights, int tiesProcessing, int normalizeScalarProducts, double tolerance, long numberOfIterations,
-        int showProgress, Configuration *out1, Salience *out2, double *vaf) {
+void DissimilarityList_Configuration_Salience_indscal (DissimilarityList dissims, Configuration conf, Salience weights, int tiesProcessing, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *p_configuration, autoSalience *p_salience, double *varianceAccountedFor) {
 	try {
-		double tol = 1e-6, vafp = 0;
-		long iter, nSources = dissims -> size;;
-		autoConfiguration x = Data_copy (configuration);
-		autoSalience w = Data_copy (weights);
-		autoMDSVecs vecs = Dissimilarities_to_MDSVecs (dissims);
-
-		*out1 = 0; *out2 = 0;
+		double tol = 1e-6, vafp = 0.0, vaf;
+		long iter, nSources = dissims->size;
+		autoConfiguration configuration = Data_copy (conf);
+		autoSalience salience = Data_copy (weights);
+		autoMDSVecList mdsveclist = DissimilarityList_to_MDSVecList (dissims);
 
 		if (showProgress) {
 			Melder_progress (0.0, U"INDSCAL analysis");
 		}
 
 		for (iter = 1; iter <= numberOfIterations; iter++) {
-			autoDistances distances = MDSVecs_Configuration_Salience_monotoneRegression (vecs.peek(), x.peek(), w.peek(), tiesProcessing);
-			autoScalarProducts sp = Distances_to_ScalarProducts (distances.peek(), normalizeScalarProducts);
+			autoDistanceList distances = MDSVecList_Configuration_Salience_monotoneRegression (mdsveclist.get(), configuration.get(), salience.get(), tiesProcessing);
+			autoScalarProductList sp = DistanceList_to_ScalarProductList (distances.get(), normalizeScalarProducts);
 
-			indscal_iteration_tenBerge (sp.peek(), x.peek(), w.peek());
+			indscal_iteration_tenBerge (sp.get(), configuration.get(), salience.get());
 
 			// Goodness of fit and test criterion.
 
-			Distances_Configuration_Salience_vaf (distances.peek(), x.peek(), w.peek(), normalizeScalarProducts, vaf);
+			DistanceList_Configuration_Salience_vaf (distances.get(), configuration.get(), salience.get(), normalizeScalarProducts, &vaf);
 
-			if (*vaf > 1 - tol || fabs (*vaf - vafp) /  vafp < tolerance) {
+			if (vaf > 1.0 - tol || fabs (vaf - vafp) / vafp < tolerance) {
 				break;
 			}
-			vafp = *vaf;
+			vafp = vaf;
 			if (showProgress) {
-				Melder_progress ( (double) iter / (numberOfIterations + 1), U"indscal: vaf ", *vaf);
+				Melder_progress ((double) iter / (numberOfIterations + 1), U"indscal: vaf ", vaf);
 			}
 		}
 
 		// Count number of zero weights
 
-		long nZeros = NUMdmatrix_countZeros (w -> data, w -> numberOfRows, w -> numberOfColumns);
+		long nZeros = NUMdmatrix_countZeros (salience -> data, salience -> numberOfRows, salience -> numberOfColumns);
 
 		// Set labels & names.
 
-		Thing_setName (x.peek(), U"indscal_mr"); Thing_setName (w.peek(), U"indscal_mr");
-		TableOfReal_labelsFromCollectionItemNames (w.peek(), dissims, 1, 0);
+		Thing_setName (configuration.get(), U"indscal_mr");
+		Thing_setName (salience.get(), U"indscal_mr");
+		TableOfReal_labelsFromCollectionItemNames (salience.get(), (Collection) dissims, 1, 0);   // FIXME cast
 
-		*out1 = x.transfer(); *out2 = w.transfer();
+		if (p_configuration) {
+			*p_configuration = configuration.move();
+		}
+		if (p_salience) {
+			*p_salience = salience.move();
+		}
+		if (varianceAccountedFor) {
+			*varianceAccountedFor = vaf;
+		}
 
 		if (showProgress) {
 			MelderInfo_writeLine (U"**************** INDSCAL with monotone regression *******************");
 			MelderInfo_writeLine (Thing_className (dissims));
 			MelderInfo_writeLine (U"Number of objects: ", nSources);
 			for (long i = 1; i <= nSources; i++) {
-				MelderInfo_writeLine (U"  ", Thing_getName ( (Thing) dissims -> item[i]));
+				MelderInfo_writeLine (U"  ", Thing_getName (dissims->at [i]));
 			}
 			if (nZeros > 0) {
 				MelderInfo_writeLine (U"WARNING: ", nZeros, U" zero weight", (nZeros > 1 ? U"s" : U""));
 			}
-			MelderInfo_writeLine (U"Variance Accounted For: ", *vaf);
+			MelderInfo_writeLine (U"Variance Accounted For: ", vaf);
 			MelderInfo_writeLine (U"Based on MONOTONE REGRESSION");
 			MelderInfo_writeLine (U"number of iterations: ", (iter > numberOfIterations ?	numberOfIterations : iter));
 			MelderInfo_drain();
@@ -2748,129 +2558,117 @@ void Dissimilarities_Configuration_Salience_indscal (Dissimilarities dissims, Co
 	}
 }
 
-void Distances_Configuration_indscal (Distances dists, Configuration conf, int normalizeScalarProducts, double tolerance,
-                                      long numberOfIterations, int showProgress, Configuration *out1, Salience *out2) {
+void DistanceList_Configuration_indscal (DistanceList dists, Configuration conf, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2) {
 	try {
-		autoSalience w = Salience_create (dists -> size, conf -> numberOfColumns);
+		autoSalience w = Salience_create (dists->size, conf -> numberOfColumns);
 		double vaf;
-		Distances_Configuration_Salience_indscal (dists, conf, w.peek(), normalizeScalarProducts, tolerance,
-		        numberOfIterations, showProgress, out1, out2, &vaf);
+		DistanceList_Configuration_Salience_indscal (dists, conf, w.get(), normalizeScalarProducts, tolerance, numberOfIterations, showProgress, out1, out2, &vaf);
 	} catch (MelderError) {
 		Melder_throw (U"No indscal performed.");
 	}
 }
 
-Distances MDSVecs_Configuration_Salience_monotoneRegression (MDSVecs vecs,
-        Configuration conf, Salience weights, int tiesProcessing) {
+autoDistanceList MDSVecList_Configuration_Salience_monotoneRegression (MDSVecList vecs, Configuration conf, Salience weights, int tiesProcessing) {
 	try {
 		long nDimensions = conf -> numberOfColumns;
 		autoNUMvector<double> w (NUMvector_copy (conf -> w, 1, nDimensions), 1);
-		autoDistances distances = Distances_create ();
-		for (long i = 1; i <= vecs -> size; i++) {
+		autoDistanceList distances = DistanceList_create ();
+		for (long i = 1; i <= vecs->size; i ++) {
 			NUMvector_copyElements (weights -> data[i], conf -> w, 1, nDimensions);
 			autoDistance dc = Configuration_to_Distance (conf);
-			autoDistance dist = MDSVec_Distance_monotoneRegression ( (MDSVec) vecs -> item[i], dc.peek(), tiesProcessing);
-			Collection_addItem (distances.peek(), dist.transfer());
+			autoDistance dist = MDSVec_Distance_monotoneRegression (vecs->at [i], dc.get(), tiesProcessing);
+			distances -> addItem_move (dist.move());
 		}
 		Configuration_setDefaultWeights (conf);
-		return distances.transfer();
+		return distances;
 	} catch (MelderError) {
 		Melder_throw (U"No Distances created.");
 	}
 }
 
-
-Salience Distances_Configuration_to_Salience (Distances d, Configuration c, int normalize) {
+autoSalience DistanceList_Configuration_to_Salience (DistanceList d, Configuration c, bool normalize) {
 	try {
-		autoScalarProducts sp = Distances_to_ScalarProducts (d, normalize);
-		autoSalience w = ScalarProducts_Configuration_to_Salience (sp.peek(), c);
-		return w.transfer();
+		autoScalarProductList sp = DistanceList_to_ScalarProductList (d, normalize);
+		autoSalience w = ScalarProductList_Configuration_to_Salience (sp.get(), c);
+		return w;
 	} catch (MelderError) {
 		Melder_throw (U"No Salience created.");
 	}
 }
 
-Salience ScalarProducts_Configuration_to_Salience (ScalarProducts me, Configuration him) {
+autoSalience ScalarProductList_Configuration_to_Salience (ScalarProductList me, Configuration him) {
 	try {
 		autoSalience salience = Salience_create (my size, his numberOfColumns);
 		autoConfiguration cx = Data_copy (him);
-		indscal_iteration_tenBerge (me, cx.peek(), salience.peek());
-		return salience.transfer();
+		indscal_iteration_tenBerge (me, cx.get(), salience.get());
+		return salience;
 	} catch (MelderError) {
 		Melder_throw (U"No Salience created.");
 	}
 }
 
-Salience Dissimilarities_Configuration_to_Salience (Dissimilarities me, Configuration him, int tiesProcessing,
-        int normalizeScalarProducts) {
+autoSalience DissimilarityList_Configuration_to_Salience (DissimilarityList me, Configuration him, int tiesProcessing, bool normalizeScalarProducts) {
 	try {
-		autoDistances distances = Dissimilarities_Configuration_monotoneRegression (me, him, tiesProcessing);
-		autoSalience w = Distances_Configuration_to_Salience (distances.peek(), him, normalizeScalarProducts);
-		return w.transfer();
+		autoDistanceList distances = DissimilarityList_Configuration_monotoneRegression (me, him, tiesProcessing);
+		autoSalience w = DistanceList_Configuration_to_Salience (distances.get(), him, normalizeScalarProducts);
+		return w;
 	} catch (MelderError) {
 		Melder_throw (U"No Salience created.");
 	}
 }
 
-void Dissimilarities_Configuration_indscal (Dissimilarities dissims, Configuration conf, int tiesProcessing,
-        int normalizeScalarProducts, double tolerance, long numberOfIterations, int showProgress,
-        Configuration *out1, Salience *out2) {
+void DissimilarityList_Configuration_indscal (DissimilarityList dissims, Configuration conf, int tiesProcessing, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2) {
 	try {
-		*out1 = 0; *out2 = 0;
-		autoDistances distances = Dissimilarities_Configuration_monotoneRegression (dissims, conf, tiesProcessing);
-		autoSalience weights = Distances_Configuration_to_Salience (distances.peek(), conf, normalizeScalarProducts);
+		autoDistanceList distances = DissimilarityList_Configuration_monotoneRegression (dissims, conf, tiesProcessing);
+		autoSalience weights = DistanceList_Configuration_to_Salience (distances.get(), conf, normalizeScalarProducts);
 		double vaf;
-		Dissimilarities_Configuration_Salience_indscal (dissims, conf, weights.peek(), tiesProcessing, normalizeScalarProducts,
-		        tolerance, numberOfIterations, showProgress, out1, out2, &vaf);
+		DissimilarityList_Configuration_Salience_indscal (dissims, conf, weights.get(), tiesProcessing, normalizeScalarProducts, tolerance, numberOfIterations, showProgress, out1, out2, & vaf);
 	} catch (MelderError) {
 		Melder_throw (U"No indscal performed.");
 	}
 }
 
-
-void Dissimilarities_indscal (Dissimilarities me, long numberOfDimensions, int tiesProcessing, int normalizeScalarProducts,
-                              double tolerance, long numberOfIterations, long numberOfRepetitions, int showProgress, Configuration *out1, Salience *out2) {
+void DissimilarityList_indscal (DissimilarityList me, long numberOfDimensions, int tiesProcessing, bool normalizeScalarProducts, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress, autoConfiguration *p_conf, autoSalience *p_sal) {
 	int showMulti = showProgress && numberOfRepetitions > 1;
 	try {
-		int showSingle = showProgress && numberOfRepetitions == 1;
-		double vaf, vafmin = 0;
-
-		*out1 = 0; *out2 = 0;
+		bool showSingle = (showProgress && numberOfRepetitions == 1);
+		double vaf, vafmin = 0.0;
 
-		autoDistances distances = Dissimilarities_to_Distances (me, MDS_ORDINAL);
-		Configuration cstart1 = 0; Salience wstart1 = 0;
-		Distances_to_Configuration_ytl (distances.peek(), numberOfDimensions, normalizeScalarProducts, &cstart1, &wstart1);
-		autoConfiguration cstart = cstart1;
-		autoSalience wstart = wstart1;
-		autoConfiguration cbest = Data_copy ( (Configuration) cstart.peek());
-		autoSalience wbest = Data_copy ( (Salience) wstart.peek());
+		autoDistanceList distances = DissimilarityList_to_DistanceList (me, MDS_ORDINAL);
+		autoConfiguration cstart; autoSalience wstart;
+		DistanceList_to_Configuration_ytl (distances.get(), numberOfDimensions, normalizeScalarProducts, & cstart, & wstart);
+		autoConfiguration conf = Data_copy (cstart.get());
+		autoSalience sal = Data_copy (wstart.get());
 
 		if (showMulti) {
 			Melder_progress (0.0, U"Indscal many times");
 		}
 
-		for (long iter = 1; iter <= numberOfRepetitions; iter++) {
-			Configuration cresult1 = 0; Salience wresult1 = 0;
-			Dissimilarities_Configuration_Salience_indscal (me, cstart.peek(), wstart.peek(), tiesProcessing,
-			        normalizeScalarProducts, tolerance, numberOfIterations, showSingle, &cresult1, &wresult1, &vaf);
-			autoConfiguration cresult = cresult1;
-			autoSalience wresult = wresult1;
+		for (long iter = 1; iter <= numberOfRepetitions; iter ++) {
+			autoConfiguration cresult; 
+			autoSalience wresult;
+			DissimilarityList_Configuration_Salience_indscal (me, cstart.get(), wstart.get(), tiesProcessing,
+				normalizeScalarProducts, tolerance, numberOfIterations, showSingle, & cresult, & wresult, & vaf);
 			if (vaf > vafmin) {
 				vafmin = vaf;
-				cbest.reset (cresult.transfer());
-				wbest.reset (wresult.transfer());
+				conf = cresult.move();
+				sal = wresult.move();
 			}
-			Configuration_randomize (cstart.peek());
-			Configuration_normalize (cstart.peek(), 1.0, 1);
-			Salience_setDefaults (wstart.peek());
+			Configuration_randomize (cstart.get());
+			Configuration_normalize (cstart.get(), 1.0, true);
+			Salience_setDefaults (wstart.get());
 
 			if (showMulti) {
-				Melder_progress ( (double) iter / (numberOfRepetitions + 1),
-				                   iter, U" from ", numberOfRepetitions);
+				Melder_progress ( (double) iter / (numberOfRepetitions + 1), iter, U" from ", numberOfRepetitions);
 			}
 		}
 
-		*out1 = cbest.transfer(); *out2 = wbest.transfer();
+		if (p_conf) {
+			*p_conf = conf.move();
+		}
+		if (p_sal) {
+			*p_sal = sal.move();
+		}
 		if (showMulti) {
 			Melder_progress (1.0);
 		}
@@ -2882,48 +2680,46 @@ void Dissimilarities_indscal (Dissimilarities me, long numberOfDimensions, int t
 	}
 }
 
-
-void Distances_indscal (Distances distances, long numberOfDimensions, int normalizeScalarProducts, double tolerance,
-                        long numberOfIterations, long numberOfRepetitions, int showProgress, Configuration *out1, Salience *out2) {
+void DistanceList_indscal (DistanceList distances, long numberOfDimensions, bool normalizeScalarProducts, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress, autoConfiguration *p_conf, autoSalience *p_sal) {
 	int showMulti = showProgress && numberOfRepetitions > 1;
 	try {
-		int showSingle = showProgress && numberOfRepetitions == 1;
-		double vaf, vafmin = 0;
+		bool showSingle = ( showProgress && numberOfRepetitions == 1 );
+		double vaf, vafmin = 0.0;
 
-		*out1 = 0; *out2 = 0;
-		Configuration cstart1 = 0; Salience wstart1 = 0;
-		Distances_to_Configuration_ytl (distances, numberOfDimensions, normalizeScalarProducts, &cstart1, &wstart1);
-		autoConfiguration cstart = cstart1;
-		autoSalience wstart = wstart1;
-		autoConfiguration cbest = Data_copy (cstart.peek());
-		autoSalience wbest = Data_copy (wstart.peek());
+		autoConfiguration cstart;
+		autoSalience wstart;
+		DistanceList_to_Configuration_ytl (distances, numberOfDimensions, normalizeScalarProducts, & cstart, & wstart);
+		autoConfiguration conf = Data_copy (cstart.get());
+		autoSalience sal = Data_copy (wstart.get());
 
 		if (showMulti) {
 			Melder_progress (0.0, U"Indscal many times");
 		}
 
 		for (long i = 1; i <= numberOfRepetitions; i++) {
-			Configuration cresult1 = 0; Salience wresult1 = 0;
-			Distances_Configuration_Salience_indscal (distances, cstart.peek(), wstart.peek(), normalizeScalarProducts,
-			        tolerance, numberOfIterations, showSingle, &cresult1, &wresult1, &vaf);
-			autoConfiguration cresult = cresult1;
-			autoSalience wresult = wresult1;
+			autoConfiguration cresult;
+			autoSalience wresult;
+			DistanceList_Configuration_Salience_indscal (distances, cstart.get(), wstart.get(), normalizeScalarProducts,  tolerance, numberOfIterations, showSingle, &cresult, &wresult, &vaf);
 			if (vaf > vafmin) {
 				vafmin = vaf;
-				cbest.reset (cresult.transfer());
-				wbest.reset (wresult.transfer());
+				conf = cresult.move();
+				sal = wresult.move();
 			}
-			Configuration_randomize (cstart.peek());
-			Configuration_normalize (cstart.peek(), 1.0, 1);
-			Salience_setDefaults (wstart.peek());
+			Configuration_randomize (cstart.get());
+			Configuration_normalize (cstart.get(), 1.0, true);
+			Salience_setDefaults (wstart.get());
 
 			if (showMulti) {
-				Melder_progress ( (double) i / (numberOfRepetitions + 1),
-				                   i, U" from ", numberOfRepetitions);
+				Melder_progress ((double) i / (numberOfRepetitions + 1), i, U" from ", numberOfRepetitions);
 			}
 		}
 
-		*out1 = cbest.transfer(); *out2 = wbest.transfer();
+		if (p_conf) {
+			*p_conf = conf.move();
+		}
+		if (p_sal) {
+			*p_sal = sal.move();
+		}
 		if (showMulti) {
 			Melder_progress (1.0);
 		}
@@ -2935,74 +2731,83 @@ void Distances_indscal (Distances distances, long numberOfDimensions, int normal
 	}
 }
 
-void Dissimilarities_Configuration_Salience_vaf (Dissimilarities me, Configuration thee, Salience him, int tiesProcessing,
-        int normalizeScalarProducts, double *vaf) {
-	autoDistances distances = Dissimilarities_Configuration_monotoneRegression (me, thee, tiesProcessing);
-	Distances_Configuration_Salience_vaf (distances.peek(), thee, him, normalizeScalarProducts, vaf);
+void DissimilarityList_Configuration_Salience_vaf (DissimilarityList me, Configuration thee, Salience him, int tiesProcessing, bool normalizeScalarProducts, double *vaf) {
+	autoDistanceList distances = DissimilarityList_Configuration_monotoneRegression (me, thee, tiesProcessing);
+	DistanceList_Configuration_Salience_vaf (distances.get(), thee, him, normalizeScalarProducts, vaf);
 }
 
-void Distances_Configuration_vaf (Distances me, Configuration thee, int normalizeScalarProducts, double *vaf) {
-	autoSalience w = Distances_Configuration_to_Salience (me, thee, normalizeScalarProducts);
-	Distances_Configuration_Salience_vaf (me, thee, w.peek(), normalizeScalarProducts, vaf);
+void DistanceList_Configuration_vaf (DistanceList me, Configuration thee, bool normalizeScalarProducts, double *vaf) {
+	autoSalience w = DistanceList_Configuration_to_Salience (me, thee, normalizeScalarProducts);
+	DistanceList_Configuration_Salience_vaf (me, thee, w.get(), normalizeScalarProducts, vaf);
 }
 
-void Dissimilarities_Configuration_vaf (Dissimilarities me, Configuration thee, int tiesProcessing, int normalizeScalarProducts, double *vaf) {
-	autoSalience w = Dissimilarities_Configuration_to_Salience (me, thee, tiesProcessing, normalizeScalarProducts);
-	Dissimilarities_Configuration_Salience_vaf (me, thee, w.peek(), tiesProcessing, normalizeScalarProducts, vaf);
+void DissimilarityList_Configuration_vaf (DissimilarityList me, Configuration thee, int tiesProcessing, bool normalizeScalarProducts, double *vaf) {
+	autoSalience w = DissimilarityList_Configuration_to_Salience (me, thee, tiesProcessing, normalizeScalarProducts);
+	DissimilarityList_Configuration_Salience_vaf (me, thee, w.get(), tiesProcessing, normalizeScalarProducts, vaf);
 }
 
-void Distances_Configuration_Salience_vaf (Distances me, Configuration thee, Salience him, int normalizeScalarProducts, double *vaf) {
-	if (my size != his numberOfRows || thy numberOfColumns != his numberOfColumns) Melder_throw
-		(U"Dimensions must conform.");
+void DistanceList_Configuration_Salience_vaf (DistanceList me, Configuration thee, Salience him, bool normalizeScalarProducts, double *vaf) {
+	if (my size != his numberOfRows || thy numberOfColumns != his numberOfColumns) {
+		Melder_throw (U"Dimensions must conform.");
+	}
 
-	autoScalarProducts sp = Distances_to_ScalarProducts (me, normalizeScalarProducts);
-	ScalarProducts_Configuration_Salience_vaf (sp.peek(), thee, him, vaf);
+	autoScalarProductList sp = DistanceList_to_ScalarProductList (me, normalizeScalarProducts);
+	ScalarProductList_Configuration_Salience_vaf (sp.get(), thee, him, vaf);
 }
 
-void ScalarProduct_Configuration_getVariances (ScalarProduct me,
-        Configuration thee, double *varianceExplained, double *varianceTotal) {
-	*varianceExplained = *varianceTotal = 0;
+void ScalarProduct_Configuration_getVariances (ScalarProduct me, Configuration thee, double *p_varianceExplained, double *p_varianceTotal) {
+	double varianceExplained = 0.0, varianceTotal = 0.0;
 	autoDistance distance = Configuration_to_Distance (thee);
-	autoScalarProduct fit = Distance_to_ScalarProduct (distance.peek(), 0);
-	/*
-		ScalarProduct is double centred, i.e., mean == 0.
-	*/
+	autoScalarProduct fit = Distance_to_ScalarProduct (distance.get(), 0);
+
+	// ScalarProduct is double centred, i.e., mean == 0.
+
 	for (long j = 1; j <= my numberOfRows; j++) {
 		for (long k = 1; k <= my numberOfColumns; k++) {
 			double d2 = my data[j][k] - fit -> data[j][k];
-			*varianceExplained += d2 * d2;
-			*varianceTotal += my data[j][k] * my data[j][k];
+			varianceExplained += d2 * d2;
+			varianceTotal += my data[j][k] * my data[j][k];
 		}
 	}
+	if (p_varianceExplained) {
+		*p_varianceExplained = varianceExplained;
+	}
+	if (p_varianceTotal) {
+		*p_varianceTotal = varianceTotal;
+	}
 }
 
-void ScalarProducts_Configuration_Salience_vaf (ScalarProducts me, Configuration thee, Salience him, double *vaf) {
+void ScalarProductList_Configuration_Salience_vaf (ScalarProductList me, Configuration thee, Salience him, double *vaf) {
 	autoNUMvector<double> w (NUMvector_copy (thy w, 1, thy numberOfColumns), 1); // save weights
 	try {
-		if (my size != his numberOfRows || thy numberOfColumns != his numberOfColumns) Melder_throw
-			(U"Dimensions of input objects must conform.");
+		if (my size != his numberOfRows || thy numberOfColumns != his numberOfColumns) {
+			Melder_throw (U"Dimensions of input objects must conform.");
+		}
 
-		double t = 0, n = 0;
-		for (long i = 1; i <= my size; i++) {
+		double t = 0.0, n = 0.0;
+		for (long i = 1; i <= my size; i ++) {
 
-			ScalarProduct sp = (ScalarProduct) my item[i];
+			ScalarProduct sp = my at [i];
 			if (sp -> numberOfRows != thy numberOfRows) {
 				Melder_throw (U"ScalarProduct ", i, U" does not match Configuration.");
 			}
 
 			// weigh configuration before calculating variances
 
-			for (long j = 1; j <= thy numberOfColumns; j++) {
-				thy w[j] = sqrt (his data[i][j]);
+			for (long j = 1; j <= thy numberOfColumns; j ++) {
+				thy w [j] = sqrt (his data [i] [j]);
 			}
 
 			double vare, vart;
-			ScalarProduct_Configuration_getVariances (sp, thee, &vare, &vart);
+			ScalarProduct_Configuration_getVariances (sp, thee, & vare, & vart);
 
-			t += vare; n += vart;
+			t += vare;
+			n += vart;
 		}
 
-		*vaf = n > 0 ? 1.0 - t / n : 0;
+		if (vaf) {
+			*vaf = (n > 0.0 ? 1.0 - t / n : 0.0);
+		}
 		NUMvector_copyElements (w.peek(), thy w, 1, thy numberOfColumns); // restore weights
 	} catch (MelderError) {
 		NUMvector_copyElements (w.peek(), thy w, 1, thy numberOfColumns);
@@ -3010,76 +2815,73 @@ void ScalarProducts_Configuration_Salience_vaf (ScalarProducts me, Configuration
 	}
 }
 
-
 /********************** Examples *********************************************/
 
-Dissimilarity Dissimilarity_createLetterRExample (double noiseStd) {
+autoDissimilarity Dissimilarity_createLetterRExample (double noiseStd) {
 	try {
 		autoConfiguration r = Configuration_createLetterRExample (1);
-		autoDistance d = Configuration_to_Distance (r.peek());
-		autoDissimilarity me = Distance_to_Dissimilarity (d.peek());
-		Thing_setName (me.peek(), U"R");
+		autoDistance d = Configuration_to_Distance (r.get());
+		autoDissimilarity me = Distance_to_Dissimilarity (d.get());
+		Thing_setName (me.get(), U"R");
 
 		for (long i = 1; i <= my numberOfRows - 1; i++) {
 			for (long j = i + 1; j <= my numberOfRows; j++) {
 				double dis = my data[i][j];
-				my data[j][i] = my data[i][j] = dis * dis + 5 + NUMrandomUniform (0, noiseStd);
+				my data[j][i] = my data[i][j] = dis * dis + 5.0 + NUMrandomUniform (0.0, noiseStd);
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Dissimilarity for letter R example not created.");
 	}
 }
 
-Salience Salience_createCarrollWishExample () {
+autoSalience Salience_createCarrollWishExample () {
 	try {
-		long nSources = 8;
-		double wx[9] = {0,   1, 0.866, 0.707, 0.5,   0.1, 0.5, 0.354, 0.1};
+		long numberOfSources = 8;
+		double wx[9] = {0, 1.0, 0.866, 0.707, 0.5,   0.1, 0.5, 0.354, 0.1};
 		double wy[9] = {0, 0.1, 0.5,   0.707, 0.866,   1, 0.1, 0.354, 0.5};
 		const char32 *name[] = { U"", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8"};
-		autoSalience me = Salience_create (nSources, 2);
+		autoSalience me = Salience_create (numberOfSources, 2);
 
-		for (long i = 1; i <= nSources; i++) {
+		for (long i = 1; i <= numberOfSources; i++) {
 			my data[i][1] = wx[i];
 			my data[i][2] = wy[i];
-			TableOfReal_setRowLabel (me.peek(), i, name[i]);
+			TableOfReal_setRowLabel (me.get(), i, name[i]);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Salience for Carroll Wish example not created.");
 	}
 }
 
-Collection INDSCAL_createCarrollWishExample (double noiseRange) {
+autoCollection INDSCAL_createCarrollWishExample (double noiseRange) {
 	try {
 		autoConfiguration c = Configuration_createCarrollWishExample ();
-		long nObjects = c -> numberOfRows, nSources = 8;
+		long numberOfObjects = c -> numberOfRows, numberOfSources = 8;
 		autoSalience s = Salience_createCarrollWishExample ();
-		autoCollection me = Collection_create (classData, nSources);
-		for (long l = 1; l <= nSources; l++) {
-			c -> w[1] = s -> data[l][1];
-			c -> w[2] = s -> data[l][2];
-			autoDistance d = Configuration_to_Distance (c.peek());
-			autoDissimilarity dissim = Distance_to_Dissimilarity (d.peek());
-			for (long i = 1; i <= nObjects - 1; i++) {
-				for (long j = i + 1; j <= nObjects; j++) {
-					dissim -> data[i][j] = (dissim -> data[j][i] +=
-					                            NUMrandomUniform (0, noiseRange));
+		autoCollection me = Collection_create ();
+		for (long l = 1; l <= numberOfSources; l ++) {
+			c -> w [1] = s -> data [l] [1];
+			c -> w [2] = s -> data [l] [2];
+			autoDistance d = Configuration_to_Distance (c.get());
+			autoDissimilarity dissim = Distance_to_Dissimilarity (d.get());
+			for (long i = 1; i <= numberOfObjects - 1; i ++) {
+				for (long j = i + 1; j <= numberOfObjects; j ++) {
+					dissim -> data [i] [j] = (dissim -> data [j] [i] += NUMrandomUniform (0.0, noiseRange));
 				}
 			}
-			Thing_setName (dissim.peek(), s -> rowLabels[l]);
-			Collection_addItem (me.peek(), dissim.transfer());
+			Thing_setName (dissim.get(), s -> rowLabels [l]);
+			my addItem_move (dissim.move());
 		}
-		Thing_setName (me.peek(), U"CarrollWish");
-		return me.transfer();
+		Thing_setName (me.get(), U"CarrollWish");
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Collection not created.");
 	}
 }
 
-void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
-                  int type, long order, const char32 *interiorKnots, int garnish) {
+void drawSplines (Graphics g, double low, double high, double ymin, double ymax, int type, long order, const char32 *interiorKnots, int garnish) {
 	long k = order, numberOfKnots, numberOfInteriorKnots = 0;
 	long nSplines, n = 1000;
 	double knot[101], y[1001];
@@ -3105,12 +2907,12 @@ void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
 				Melder_warning (U"drawSplines: too many knots (101)");
 				return;
 			}
-			knot[++numberOfKnots] = value;
+			knot [++ numberOfKnots] = value;
 		}
 	}
 
 	numberOfInteriorKnots = numberOfKnots - k;
-	for (long i = 1; i <= k; i++) {
+	for (long i = 1; i <= k; i ++) {
 		knot[++numberOfKnots] = high;
 	}
 
@@ -3122,7 +2924,7 @@ void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
 
 	Graphics_setWindow (g, low, high, ymin, ymax);
 	Graphics_setInner (g);
-	for (long i = 1; i <= nSplines; i++) {
+	for (long i = 1; i <= nSplines; i ++) {
 		double x, yx, dx = (high - low) / (n - 1);
 		for (long j = 1; j <= n; j++) {
 			x = low + dx * (j - 1);
@@ -3140,9 +2942,9 @@ void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
 		static MelderString ts { 0 };
 		long lastKnot = type == MDS_ISPLINE ? numberOfKnots - 2 : numberOfKnots;
 		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, 0, type == MDS_MSPLINE ? U"\\s{M}\\--spline" : U"\\s{I}\\--spline");
-		Graphics_marksTop (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textLeft (g, false, type == MDS_MSPLINE ? U"\\s{M}\\--spline" : U"\\s{I}\\--spline");
+		Graphics_marksTop (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (low <= knot[order]) {
 			if (order == 1) {
 				MelderString_copy (&ts, U"t__1_");
@@ -3151,13 +2953,13 @@ void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
 			} else {
 				MelderString_copy (&ts, U"{t__1_..t__", order, U"_}");
 			}
-			Graphics_markBottom (g, low, 0, 0, 0, ts.string);
+			Graphics_markBottom (g, low, false, false, false, ts.string);
 		}
-		for (long i = 1; i <= numberOfInteriorKnots; i++) {
+		for (long i = 1; i <= numberOfInteriorKnots; i ++) {
 			if (low <= knot[k + i] && knot[k + i] < high) {
 				MelderString_copy (&ts, U"t__", order + i, U"_");
-				Graphics_markBottom (g, knot[k + i], 0, 1, 1, ts.string);
-				Graphics_markTop (g, knot[k + i], 1, 0, 0, NULL);
+				Graphics_markBottom (g, knot[k + i], false, true, true, ts.string);
+				Graphics_markTop (g, knot[k + i], true, false, false, nullptr);
 			}
 		}
 		if (knot[lastKnot - order + 1] <= high) {
@@ -3166,25 +2968,22 @@ void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
 			} else {
 				MelderString_copy (&ts, U"{t__", (order == 2 ? lastKnot - 1 : lastKnot - order + 1), U"_, t__", lastKnot, U"_}");
 			}
-			Graphics_markBottom (g, high, 0, 0, 0, ts.string);
+			Graphics_markBottom (g, high, false, false, false, ts.string);
 		}
 	}
 }
 
 void drawMDSClassRelations (Graphics g) {
 	long nBoxes = 6;
-	double boxWidth = 0.3, boxWidth2 = boxWidth / 2, boxWidth3 = boxWidth / 3;
-	double boxHeight = 0.1, boxHeight2 = boxHeight / 2;
-	double boxHeight3 = boxHeight / 3;
+	double boxWidth = 0.3, boxWidth2 = boxWidth / 2.0, boxWidth3 = boxWidth / 3.0;
+	double boxHeight = 0.1, boxHeight2 = boxHeight / 2.0;
+	double boxHeight3 = boxHeight / 3.0;
 	double r_mm = 3, dxt = 0.025, dyt = 0.03;
-	double dboxx = 1 - 0.2 - 2 * boxWidth, dboxy = (1 - 4 * boxHeight) / 3;
+	double dboxx = 1.0 - 0.2 - 2.0 * boxWidth, dboxy = (1.0 - 4.0 * boxHeight) / 3.0;
 	double x1, x2, xm, x23, x13, y1, y2, ym, y23, y13;
 	double x[7] = {0.0, 0.2, 0.2, 0.7, 0.2, 0.7, 0.2}; /* left */
 	double y[7] = {0.0, 0.9, 0.6, 0.6, 0.3, 0.3, 0.0}; /* bottom */
-	const char32 *text[7] = {U"", U"Confusion", U"Dissimilarity  %\\de__%%ij%_",
-	                          U"Similarity", U"Distance  %d__%%ij%_, %d\\'p__%%ij%_",
-	                          U"ScalarProduct", U"Configuration"
-	                         };
+	const char32 *text[7] = {U"", U"Confusion", U"Dissimilarity  %\\de__%%ij%_",  U"Similarity", U"Distance  %d__%%ij%_, %d\\'p__%%ij%_", U"ScalarProduct", U"Configuration" };
 
 	Graphics_setWindow (g, -0.05, 1.05, -0.05, 1.05);
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
@@ -3299,9 +3098,8 @@ void drawMDSClassRelations (Graphics g) {
 	// Restore settings
 
 	Graphics_setLineType (g, Graphics_DRAWN);
-	Graphics_setLineWidth (g, 1);
+	Graphics_setLineWidth (g, 1.0);
 	Graphics_setTextAlignment (g, Graphics_LEFT, Graphics_BOTTOM);
-
 }
 
 /* End of file MDS.cpp */
diff --git a/dwtools/MDS.h b/dwtools/MDS.h
index 801517b..01899a1 100644
--- a/dwtools/MDS.h
+++ b/dwtools/MDS.h
@@ -4,21 +4,20 @@
  *
  * Multi Dimensional Scaling
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -77,194 +76,194 @@
 Thing_define (Weight, TableOfReal) {
 };
 
-Weight Weight_create (long numberOfPoints);
+autoWeight Weight_create (long numberOfPoints);
 
 /************************** class Salience **************************************/
 
 Thing_define (Salience, TableOfReal) {
 };
 
-Salience Salience_create (long numberOfSources, long numberOfDimensions);
+autoSalience Salience_create (long numberOfSources, long numberOfDimensions);
 
 void Salience_setDefaults (Salience me);
 
 long Salience_correctNegatives (Salience me);
 
-void Salience_draw (Salience me, Graphics g, int xdimension, int ydimension,
-	int garnish);
+void Salience_draw (Salience me, Graphics g, int xdimension, int ydimension, int garnish);
 
 /************************** class MDSVec ******************************/
 
-Thing_define (MDSVec, Data) {
-	// new data:
-	public:
-		long nProximities, nPoints;
-		double *proximity;
-		long *iPoint, *jPoint;
-	// overridden methods:
-	protected:
-		virtual void v_destroy ();
+Thing_define (MDSVec, Daata) {
+	long nProximities, nPoints;
+	double *proximity;
+	long *iPoint, *jPoint;
+
+	void v_destroy () noexcept
+		override;
 };
 
-MDSVec MDSVec_create (long nObjects);
+autoMDSVec MDSVec_create (long nObjects);
 
 /************** class MDSVecs *********************************/
 
-Thing_define (MDSVecs, Ordered) {
+Collection_define (MDSVecList, OrderedOf, MDSVec) {
 };
 
-MDSVecs MDSVecs_create ();
-
-
-Configuration ContingencyTable_to_Configuration_ca (ContingencyTable me,
-	long numberOfDimensions, int scaling);
+autoConfiguration ContingencyTable_to_Configuration_ca (ContingencyTable me, long numberOfDimensions, int scaling);
 
-/********************* class Proximities *******************************/
+/********************* class ProximityList *******************************/
 
-Thing_define (Proximities, TablesOfReal) {
+Collection_define (ProximityList, OrderedOf, Proximity) {
+	TableOfRealList asTableOfRealList () {
+		return reinterpret_cast<TableOfRealList> (this);
+	}
 };
 
-void Proximities_init (I, ClassInfo klas);
 
-Proximities Proximities_create ();
+#pragma mark - class ConfusionList
 
-/****************** class Confusions **********************************/
-
-Thing_define (Confusions, Proximities) {
+Collection_define (ConfusionList, OrderedOf, Confusion) {
+	TableOfRealList asTableOfRealList () {
+		return reinterpret_cast<TableOfRealList> (this);
+	}
 };
 
-Confusions Confusions_create ();
+autoConfusion ConfusionList_sum (ConfusionList me);
 
-Confusion Confusions_sum (Confusions me);
 
-/************* class Distances **************************************/
+#pragma mark - class DistanceList
 
-Thing_define (Distances, Proximities) {
+Collection_define (DistanceList, OrderedOf, Distance) {
+	ProximityList asProximityList () {
+		return reinterpret_cast<ProximityList> (this);
+	}
+	TableOfRealList asTableOfRealList () {
+		return reinterpret_cast<TableOfRealList> (this);
+	}
 };
 
-Distances Distances_create ();
 
-/**************** class ScalarProduct **************************************/
+#pragma mark - class ScalarProduct
 
 Thing_define (ScalarProduct, TableOfReal) {
 };
 
-ScalarProduct ScalarProduct_create (long numberOfPoints);
+autoScalarProduct ScalarProduct_create (long numberOfPoints);
 
-/************** class ScalarProducts ********************************/
 
-Thing_define (ScalarProducts, TablesOfReal) {
-};
+#pragma mark - class ScalarProductList
 
-ScalarProducts ScalarProducts_create ();
+Collection_define (ScalarProductList, OrderedOf, ScalarProduct) {
+	TableOfRealList asTableOfRealList () {
+		return reinterpret_cast<TableOfRealList> (this);
+	}
+};
 
 
-/************* class Dissimilarity *********************************/
+#pragma mark - class Dissimilarity
 
 Thing_define (Dissimilarity, Proximity) {
 };
 
-Dissimilarity Dissimilarity_create (long numberOfPoints);
+autoDissimilarity Dissimilarity_create (long numberOfPoints);
 
-int Dissimilarity_getAdditiveConstant (I, double *c);
+double Dissimilarity_getAdditiveConstant (Dissimilarity me);
 /*
 	Get the best estimate for the additive constant:
 		"distance = dissimilarity + constant"
-	F. Cailliez (1983), The analytical solution of the additive
-		constant problem,
-	Psychometrika 48, 305-308.
+	F. Cailliez (1983), The analytical solution of the additive constant problem, Psychometrika 48, 305-308.
 */
 
-/****************** class Transformator *******************************/
+
+#pragma mark - class Transformator
 
 Thing_define (Transformator, Thing) {
-	// new data:
-	public:
-		long numberOfPoints;
-		int normalization;
-	// new methods:
-		virtual Distance v_transform (MDSVec vec, Distance dist, Weight w);
+	long numberOfPoints;
+	int normalization;
+
+	virtual autoDistance v_transform (MDSVec vec, Distance dist, Weight w);
 };
 
-void Transformator_init (I, long numberOfPoints);
+void Transformator_init (Transformator me, long numberOfPoints);
 
-Transformator Transformator_create (long numberOfPoints);
+autoTransformator Transformator_create (long numberOfPoints);
 
-void Transformator_setNormalization (I, int normalization);
+void Transformator_setNormalization (Transformator me, int normalization);
 
-Distance Transformator_transform (I, MDSVec vec, Distance dist, Weight w);
+autoDistance Transformator_transform (Transformator me, MDSVec vec, Distance dist, Weight w);
 
 Thing_define (ISplineTransformator, Transformator) {
-	// new data:
-	public:
-		long numberOfInteriorKnots, order, numberOfParameters;
-		double **m, *b, *knot;
-	// overridden methods:
-		virtual void v_destroy ();
-		virtual Distance v_transform (MDSVec vec, Distance dist, Weight w);
+	long numberOfInteriorKnots, order, numberOfParameters;
+	double **m, *b, *knot;
+
+	void v_destroy () noexcept
+		override;
+	autoDistance v_transform (MDSVec vec, Distance dist, Weight w)
+		override;
 };
 
-ISplineTransformator ISplineTransformator_create (long numberOfPoints, long numberOfInteriorKnots,
-	long order);
+autoISplineTransformator ISplineTransformator_create (long numberOfPoints, long numberOfInteriorKnots, long order);
 
 Thing_define (RatioTransformator, Transformator) {
-	// new data:
-	public:
-		double ratio;
-	// overridden methods:
-		virtual Distance v_transform (MDSVec vec, Distance dist, Weight w);
+	double ratio;
+
+	autoDistance v_transform (MDSVec vec, Distance dist, Weight w)
+		override;
 };
 
-RatioTransformator RatioTransformator_create (long numberOfPoints);
+autoRatioTransformator RatioTransformator_create (long numberOfPoints);
 
 Thing_define (MonotoneTransformator, Transformator) {
-	// new data:
-	public:
-		int tiesProcessing;
-	// overridden methods:
-		virtual Distance v_transform (MDSVec vec, Distance dist, Weight w);
+	int tiesProcessing;
+
+	autoDistance v_transform (MDSVec vec, Distance dist, Weight w)
+		override;
 };
 
-MonotoneTransformator MonotoneTransformator_create (long numberPoints);
+autoMonotoneTransformator MonotoneTransformator_create (long numberPoints);
 
 void MonotoneTransformator_setTiesProcessing (MonotoneTransformator,
 	int tiesProcessing);
 
 
-/*************** class Dissimilarities ****************************/
+/*************** class DissimilyList ****************************/
 
-Thing_define (Dissimilarities, Proximities) {
+Collection_define (DissimilarityList, OrderedOf, Dissimilarity) {
+	ProximityList asProximityList () {
+		return reinterpret_cast<ProximityList> (this);
+	}
+	TableOfRealList asTableOfRealList () {
+		return reinterpret_cast<TableOfRealList> (this);
+	}
 };
 
-Dissimilarities Dissimilarities_create ();
 
 /**************** class Similarity *****************************/
 
 Thing_define (Similarity, Proximity) {
 };
 
-Similarity Similarity_create (long numberOfPoints);
+autoSimilarity Similarity_create (long numberOfPoints);
 
 
 /************** KRUSKAL *********************************************/
 
 Thing_define (Kruskal, Thing) {
-	// new data:
-	public:
-		int process;
-		int measurementLevel;
-		int conditionality;
-		Configuration configuration;
-		Proximities proximities;
-		int stress_formula;
-		MDSVec vec;
-		double **dx;
-		Minimizer minimizer;
-	// overridden methods:
-		virtual void v_destroy ();
+	int process;
+	int measurementLevel;
+	int conditionality;
+	autoConfiguration configuration;
+	autoProximityList proximities;
+	int stress_formula;
+	autoMDSVec vec;
+	double **dx;
+	autoMinimizer minimizer;
+
+	void v_destroy () noexcept
+		override;
 };
 
-Kruskal Kruskal_create (long numberOfpoints, long numberOfDimensions);
+autoKruskal Kruskal_create (long numberOfpoints, long numberOfDimensions);
 
 double Dissimilarity_Configuration_Weight_Transformator_normalizedStress
 	(Dissimilarity me, Configuration conf, Weight weight, Transformator t);
@@ -281,8 +280,7 @@ double Distance_Weight_congruenceCoefficient (Distance x, Distance y, Weight w);
 	Congruence coefficient B&G page 350.
 */
 
-void Distance_Weight_rawStressComponents (Distance fit, Distance conf,
-	Weight weight, double *eta_fit, double *eta_conf, double *rho);
+void Distance_Weight_rawStressComponents (Distance fit, Distance conf, Weight weight, double *eta_fit, double *eta_conf, double *rho);
 /*
 	Computes
 		eta_fit = sum (i<j,i=1..n; w[i][j] * dfit[i][j]^2)
@@ -293,378 +291,261 @@ void Distance_Weight_rawStressComponents (Distance fit, Distance conf,
 		conf[i][j] = distance between x[i] and x[j] (in the configuration)
 */
 
-double Dissimilarity_Configuration_Transformator_Weight_stress
-	(Dissimilarity d, Configuration c, Any t, Weight w, int type);
+double Dissimilarity_Configuration_Transformator_Weight_stress (Dissimilarity d, Configuration c, Transformator t, Weight w, int type);
 
-double Dissimilarity_Configuration_Weight_absolute_stress
-	(Dissimilarity d, Configuration c, Weight w, int type);
+double Dissimilarity_Configuration_Weight_absolute_stress (Dissimilarity d, Configuration c, Weight w, int type);
 
-double Dissimilarity_Configuration_Weight_ratio_stress
-	(Dissimilarity d, Configuration c, Weight w, int type);
+double Dissimilarity_Configuration_Weight_ratio_stress (Dissimilarity d, Configuration c, Weight w, int type);
 
-double Dissimilarity_Configuration_Weight_interval_stress
-	(Dissimilarity d, Configuration c, Weight w, int type);
+double Dissimilarity_Configuration_Weight_interval_stress (Dissimilarity d, Configuration c, Weight w, int type);
 
-double Dissimilarity_Configuration_Weight_monotone_stress
-	(Dissimilarity d, Configuration c, Weight w, int tiesProcessing, int type);
+double Dissimilarity_Configuration_Weight_monotone_stress (Dissimilarity d, Configuration c, Weight w, int tiesProcessing, int type);
 
-double Dissimilarity_Configuration_Weight_ispline_stress
-	(Dissimilarity d, Configuration c, Weight w, long numberOfInteriorKnots,
-	long order, int type);
+double Dissimilarity_Configuration_Weight_ispline_stress (Dissimilarity d, Configuration c, Weight w, long numberOfInteriorKnots, long order, int type);
 
 void Distance_Weight_smacofNormalize (Distance d, Weight w);
 
-Configuration Dissimilarity_Configuration_Weight_Transformator_smacof
-	(Dissimilarity me, Configuration conf, Weight weight, Any transformator,
-	double tolerance, long numberOfIterations, int showProgress,
-	double *stress);
+autoConfiguration Dissimilarity_Configuration_Weight_Transformator_smacof (Dissimilarity me, Configuration conf, Weight weight, Transformator t, double tolerance, long numberOfIterations, bool showProgress, double *stress);
 
-Configuration Dissimilarity_Configuration_Weight_Transformator_multiSmacof
-	(Dissimilarity me, Configuration conf, Weight w, Any transformator,
-	double tolerance, long numberOfIterations, long numberOfRepetitions,
-	int showProgress);
+autoConfiguration Dissimilarity_Configuration_Weight_Transformator_multiSmacof (Dissimilarity me, Configuration conf, Weight w, Transformator t, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
+autoConfiguration Dissimilarity_Configuration_Weight_absolute_mds (Dissimilarity dis, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Configuration_Weight_absolute_mds
-	(Dissimilarity dis, Configuration cstart, Weight w, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Configuration_Weight_ratio_mds (Dissimilarity dis, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Configuration_Weight_ratio_mds
-	(Dissimilarity dis, Configuration cstart, Weight w, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Configuration_Weight_interval_mds (Dissimilarity dis, Configuration cstart, Weight w, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Configuration_Weight_interval_mds
-	(Dissimilarity dis, Configuration cstart, Weight w, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Configuration_Weight_monotone_mds (Dissimilarity dis, Configuration cstart, Weight w, int tiesProcessing, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Configuration_Weight_monotone_mds
-	(Dissimilarity dis, Configuration cstart, Weight w, int tiesProcessing,
-	double tolerance, long numberOfIterations, long numberOfRepetitions,
-	int showProgress);
-
-Configuration Dissimilarity_Configuration_Weight_ispline_mds
-	(Dissimilarity me, Configuration cstart, Weight w,
+autoConfiguration Dissimilarity_Configuration_Weight_ispline_mds (Dissimilarity me, Configuration cstart, Weight w,
 	long numberOfInteriorKnots, long order, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+	long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Weight_absolute_mds
-	(Dissimilarity me, Weight w, long numberOfDimensions, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Weight_absolute_mds (Dissimilarity me, Weight w, long numberOfDimensions, double tolerance,
+	long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Weight_ratio_mds
-	(Dissimilarity dis, Weight w, long numberOfDimensions, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Weight_ratio_mds (Dissimilarity dis, Weight w, long numberOfDimensions, double tolerance,
+	long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
 
-Configuration Dissimilarity_Weight_interval_mds
-	(Dissimilarity dis, Weight w, long numberOfDimensions, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Weight_interval_mds (Dissimilarity dis, Weight w, long numberOfDimensions, double tolerance,
+	long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Weight_monotone_mds
-	(Dissimilarity me, Weight w, long numberOfDimensions, int tiesProcessing,
-	double tolerance, long numberOfIterations, long numberOfRepetitions,
-	int showProgress);
+autoConfiguration Dissimilarity_Weight_monotone_mds (Dissimilarity me, Weight w, long numberOfDimensions, int tiesProcessing,
+	double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-Configuration Dissimilarity_Weight_ispline_mds
-	(Dissimilarity me, Weight weight, long numberOfDimensions,
-	long numberOfInteriorKnots, long order, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress);
+autoConfiguration Dissimilarity_Weight_ispline_mds (Dissimilarity me, Weight weight, long numberOfDimensions,
+	long numberOfInteriorKnots, long order, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress);
 
-void Dissimilarity_Configuration_Weight_drawAbsoluteRegression
-	(Dissimilarity d, Configuration c, Weight w, Graphics g, double xmin,
-	double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish);
+void Dissimilarity_Configuration_Weight_drawAbsoluteRegression (Dissimilarity d, Configuration c, Weight w, Graphics g, double xmin,
+	double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_Weight_drawRatioRegression
-	(Dissimilarity d, Configuration c, Weight w, Graphics g,
-	double xmin, double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish);
+void Dissimilarity_Configuration_Weight_drawRatioRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
+	double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_Weight_drawIntervalRegression
-	(Dissimilarity d, Configuration c, Weight w, Graphics g,
-	double xmin, double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish);
+void Dissimilarity_Configuration_Weight_drawIntervalRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
+	double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_Weight_drawMonotoneRegression
-	(Dissimilarity d, Configuration c, Weight w, Graphics g,
-	int tiesProcessing, double xmin, double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish);
+void Dissimilarity_Configuration_Weight_drawMonotoneRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
+	int tiesProcessing, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_Weight_drawISplineRegression
-	(Dissimilarity d, Configuration c, Weight w, Graphics g,
-	long numberOfInternalKnots, long order, double xmin, double xmax,
-	double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
+void Dissimilarity_Configuration_Weight_drawISplineRegression (Dissimilarity d, Configuration c, Weight w, Graphics g,
+	long numberOfInternalKnots, long order, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-Distance Dissimilarity_Configuration_Transformator_Weight_transform
-	(Dissimilarity d, Configuration c, Any t, Weight w);
+autoDistance Dissimilarity_Configuration_Transformator_Weight_transform (Dissimilarity d, Configuration c, Transformator t, Weight w);
 
-/******** DISTANCE & SCALARPRODUCT *******************************/
 
+/******** DISTANCE & SCALARPRODUCT *******************************/
 
-ScalarProduct Distance_to_ScalarProduct (Distance me, int normalize);
+autoScalarProduct Distance_to_ScalarProduct (Distance me, bool normalize);
 
 
 /************** DISTANCE & PROXIMITY ********************************/
 
-
-void Proximity_Distance_drawScatterDiagram (I, Distance thee, Graphics g,
-	double xmin, double xmax, double ymin, double ymax, double size_mm,
-	const char32 *mark, int garnish);
+void Proximity_Distance_drawScatterDiagram (Proximity me, Distance thee, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
 
 /********** COVARIANCE & CONFIGURATION ***************************/
 
+autoConfiguration SSCP_to_Configuration (SSCP me, long numberOfDimensions);
 
-Configuration Covariance_to_Configuration (Covariance me,
-	long numberOfDimensions);
+autoConfiguration Covariance_to_Configuration (Covariance me, long numberOfDimensions);
 
 
 /************ CORRELATION & CONFIGURATION ************************/
 
-
-Configuration Correlation_to_Configuration (Correlation me,
-	long numberOfDimensions);
+autoConfiguration Correlation_to_Configuration (Correlation me, long numberOfDimensions);
 
 
 /************** DISTANCE & CONFIGURATION **************************/
 
-
-Distance Configuration_to_Distance (Configuration me);
+autoDistance Configuration_to_Distance (Configuration me);
 /* Calculates distances between the points */
 
-void Distance_and_Configuration_drawScatterDiagram
-	(Distance me, Configuration him, Graphics g, double xmin, double xmax,
-	double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
+void Distance_and_Configuration_drawScatterDiagram (Distance me, Configuration him, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-Configuration Distance_to_Configuration_torsca (Distance me,
-	int numberOfDimensions);
+autoConfiguration Distance_to_Configuration_torsca (Distance me, int numberOfDimensions);
 
 
 /************** DISSIMILARITY & CONFIGURATION ************************/
 
+autoConfiguration Dissimilarity_kruskal (Dissimilarity me, long numberOfDimensions, long metric, int processTies, int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions);
 
-Configuration Dissimilarity_kruskal (Dissimilarity me, long numberOfDimensions,
-	long metric, int processTies, int stress_formula, double tolerance,
-	long numberOfIterations, long numberOfRepetitions);
+autoConfiguration Dissimilarity_Configuration_kruskal (Dissimilarity me, Configuration him, int processTies, int stress_formula, double tolerance, long numberOfIterations, long numberOfRepetitions);
 
-Configuration Dissimilarity_Configuration_kruskal
-	(Dissimilarity me, Configuration him, int processTies, int stress_formula,
-	double tolerance, long numberOfIterations, long numberOfRepetitions);
+double Dissimilarity_Configuration_getStress (Dissimilarity me, Configuration him, int processTies, int stress_formula);
 
-double Dissimilarity_Configuration_getStress
-	(Dissimilarity me, Configuration him, int processTies, int stress_formula);
+void Dissimilarity_Configuration_drawShepardDiagram (Dissimilarity me, Configuration him, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_drawShepardDiagram
-	(Dissimilarity me, Configuration him, Graphics g, double xmin, double xmax,
-	double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
+autoDistance Dissimilarity_Configuration_monotoneRegression (Dissimilarity dis, Configuration conf, int processTies);
 
-Distance Dissimilarity_Configuration_monotoneRegression
-	(Dissimilarity dis, Configuration conf, int processTies);
+autoDistanceList DissimilarityList_Configuration_monotoneRegression (DissimilarityList dissims, Configuration conf, int processTies);
 
-Distances Dissimilarities_Configuration_monotoneRegression
-	(Dissimilarities dissims, Configuration conf, int processTies);
+void Dissimilarity_Configuration_drawMonotoneRegression	(Dissimilarity me, Configuration him, Graphics g, int processTies, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish);
 
-void Dissimilarity_Configuration_drawMonotoneRegression
-	(Dissimilarity me, Configuration him, Graphics g, int processTies,
-	double xmin, double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish);
 
 /************** SIMILARITY & TABLESOFREAL ********************************/
 
+autoSimilarity DistanceList_to_Similarity_cc (DistanceList me, Weight weight);
 
-Similarity Distances_to_Similarity_cc (Distances me, Weight weight);
-
-Similarity Configurations_to_Similarity_cc (Configurations me, Weight weight);
+autoSimilarity ConfigurationList_to_Similarity_cc (ConfigurationList me, Weight weight);
 
 
 /************** DISSIMILARITY & DISTANCE *************************************/
 
-
-Distance Dissimilarity_to_Distance (Dissimilarity me, int scale);
+autoDistance Dissimilarity_to_Distance (Dissimilarity me, int scale);
 /* with optional scaling with "additive constant" */
 
-Dissimilarity Distance_to_Dissimilarity (Distance me);
+autoDissimilarity Distance_to_Dissimilarity (Distance me);
 
-Distance Dissimilarity_Distance_monotoneRegression
-	(Dissimilarity me, Distance thee, int processTies);
+autoDistance Dissimilarity_Distance_monotoneRegression (Dissimilarity me, Distance thee, int tiesProcessingMethod);
 
 
 /************** DISSIMILARITY & CONFUSION ************************************/
 
-
-Dissimilarity Confusion_to_Dissimilarity_pdf
-	(Confusion me, double minimumConfusionLevel);
+autoDissimilarity Confusion_to_Dissimilarity_pdf (Confusion me, double minimumConfusionLevel);
 
 
 /************** DISSIMILARITY & MDSVEC ***************************************/
 
+autoMDSVec Dissimilarity_to_MDSVec (Dissimilarity me);
 
-MDSVec Dissimilarity_to_MDSVec (Dissimilarity me);
-
-MDSVecs Dissimilarities_to_MDSVecs (Dissimilarities me);
+autoMDSVecList DissimilarityList_to_MDSVecList (DissimilarityList me);
 
 
 /************** DISSIMILARITY & SIMILARITY ***********************************/
 
-
-Dissimilarity Similarity_to_Dissimilarity (Similarity me,
-	double maximumDissimilarity);
+autoDissimilarity Similarity_to_Dissimilarity (Similarity me, double maximumDissimilarity);
 
 
 /************** DISSIMILARITY & WEIGHT ***********************************/
 
-
-
-Weight Dissimilarity_to_Weight (Dissimilarity me);
+autoWeight Dissimilarity_to_Weight (Dissimilarity me);
 
 
 /************** CONFUSION & SIMILARITY ***************************************/
 
+autoSimilarity Confusion_to_Similarity (Confusion me, bool normalize, int symmetrizeMethod);
 
-Similarity Confusion_to_Similarity (Confusion me, int normalize,
-	int symmetrizeMethod);
 
+/************** DissimilarityList & DistanceList **********************************/
 
-/************** CONFUSION & DISTANCE *****************************************/
+autoDissimilarityList DistanceList_to_DissimilarityList (DistanceList me);
 
+autoDistanceList DissimilarityList_to_DistanceList (DissimilarityList me, int scale);
 
-Distance Confusion_to_Distance_pdf (Confusion me, int symmetrizeBefore,
-	double maximumDistance);
 
+/************** DistanceList & Configuration ************************************/
 
-/************** DISSIMILARITIES & DISTANCES **********************************/
-
-
-Dissimilarities Distances_to_Dissimilarities (Distances me);
-
-Distances Dissimilarities_to_Distances (Dissimilarities me, int scale);
-
-
-/************** DISTANCES & CONFIGURATION ************************************/
-
-
-int Distances_to_Configuration_ytl (Distances me, int numberOfDimensions,
-	int normalizeScalarProducts, Configuration *out1, Salience *out2);
+void DistanceList_to_Configuration_ytl (DistanceList me, int numberOfDimensions, int normalizeScalarProducts, autoConfiguration *out1, autoSalience *out2);
 /*
 	F.W. Young, Y. Takane & R. Lewyckyj (1978), Three notes on ALSCAL,
 	Psychometrika 43, 433-435.
 
-	 w: numberOfSources x numberOfDimensions or NULL
+	 w: numberOfSources x numberOfDimensions or null
 */
 
-Distances Configurations_to_Distances (Configurations me);
+autoDistanceList ConfigurationList_to_DistanceList (ConfigurationList me);
 
 
-/************** MDSVEC(S) & DISTANCE(S) **********************************/
+/************** MDSVec(Lists)  & Distance(List) **********************************/
 
+autoDistance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee, int tiesProcessingMethod);
 
-Distance MDSVec_Distance_monotoneRegression (MDSVec me, Distance thee,
-	int processTies);
+autoDistanceList MDSVecList_Distance_monotoneRegression (MDSVecList me, Distance thee, int tiesProcessingMethod);
 
-Distances MDSVecs_Distance_monotoneRegression (MDSVecs me, Distance thee,
-	int processTies);
 
+/************** ScalarProduct(List) & ...... **********************************/
 
-/************** SCALARPRODUCT(S) & ...... **********************************/
+void ScalarProduct_Configuration_getVariances (ScalarProduct me, Configuration thee, double *varianceExplained, double *varianceTotal);
 
-void ScalarProduct_Configuration_getVariances (ScalarProduct me,
-	Configuration thee, double *varianceExplained, double *varianceTotal);
+void ScalarProductList_Configuration_Salience_vaf (ScalarProductList me, Configuration thee, Salience him, double *vaf);
 
-void ScalarProducts_Configuration_Salience_vaf (ScalarProducts me,
-	Configuration thee, Salience him, double *vaf);
+autoScalarProductList DistanceList_to_ScalarProductList (DistanceList me, bool normalize);
 
-ScalarProducts Distances_to_ScalarProducts (Distances me, int normalize);
+void ScalarProductList_to_Configuration_ytl (ScalarProductList me, int numberOfDimensions, autoConfiguration *out1, autoSalience *out2);
 
-void ScalarProducts_to_Configuration_ytl (ScalarProducts me,
-	int numberOfDimensions, Configuration *out1, Salience *out2);
+void ScalarProductList_Configuration_Salience_indscal (ScalarProductList sp, Configuration conf, Salience weights, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2, double *vaf);
 
-void ScalarProducts_Configuration_Salience_indscal (ScalarProducts sp,
-	Configuration conf, Salience weights, double tolerance,
-	long numberOfIterations, int showProgress,
-	Configuration *out1, Salience *out2, double *vaf);
 
 /************** INDSCAL & ....... ***********************************/
 
+void DissimilarityList_indscal (DissimilarityList me, long numberOfDimensions, int tiesProcessingMethod, bool normalizeScalarProducts, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress, autoConfiguration *out1, autoSalience *out2);
 
-void Dissimilarities_indscal (Dissimilarities me, long numberOfDimensions,
-	int processTies, int normalizeScalarProducts, double tolerance,
-	long numberOfIterations, long numberOfRepetitions, int showProgress,
-	Configuration *out1, Salience *out2);
+void DistanceList_indscal (DistanceList me, long numberOfDimensions, bool normalizeScalarProducts, double tolerance, long numberOfIterations, long numberOfRepetitions, bool showProgress, autoConfiguration *out1, autoSalience *out2);
 
-void Distances_indscal (Distances me, long numberOfDimensions,
-	int normalizeScalarProducts, double tolerance, long numberOfIterations,
-	long numberOfRepetitions, int showProgress,
-	Configuration *out1, Salience *out2);
+void DissimilarityList_Configuration_indscal (DissimilarityList me, Configuration conf, int tiesProcessingMethod, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2);
 
-void Dissimilarities_Configuration_indscal (Dissimilarities me,
-	Configuration conf, int processTies, int normalizeScalarProducts,
-	double tolerance, long numberOfIterations,
-	int showProgress, Configuration *out1, Salience *out2);
+void DistanceList_Configuration_indscal (DistanceList dists, Configuration conf, bool normalizeScalarProducts, double tolerance, long numberOfIterations,
+	bool showProgress, autoConfiguration *out1, autoSalience *out2);
 
-void Distances_Configuration_indscal (Distances dists, Configuration conf,
-	int normalizeScalarProducts, double tolerance, long numberOfIterations,
-	int showProgress, Configuration *out1, Salience *out2);
+void DissimilarityList_Configuration_Salience_indscal (DissimilarityList dissims, Configuration conf, Salience w, int tiesProcessingMethod,
+	bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2, double *vaf);
 
-void Dissimilarities_Configuration_Salience_indscal (Dissimilarities dissims,
-	Configuration conf, Salience w, int processTies,
-	int normalizeScalarProducts, double tolerance, long numberOfIterations,
-	int showProgress, Configuration *out1, Salience *out2, double *vaf);
+autoDistanceList MDSVecList_Configuration_Salience_monotoneRegression (MDSVecList vecs, Configuration conf, Salience weights, int tiesProcessingMethod);
 
-Distances MDSVecs_Configuration_Salience_monotoneRegression (MDSVecs vecs,
-	Configuration conf, Salience weights, int processTies);
+void DistanceList_Configuration_Salience_indscal (DistanceList dists, Configuration conf, Salience weights, bool normalizeScalarProducts, double tolerance, long numberOfIterations, bool showProgress, autoConfiguration *out1, autoSalience *out2, double *vaf);
 
-void Distances_Configuration_Salience_indscal (Distances dists,
-	Configuration conf, Salience weights,
-	int normalizeScalarProducts, double tolerance, long numberOfIterations,
-	int showProgress, Configuration *out1, Salience *out2, double *vaf);
+void DistanceList_Configuration_Salience_vaf (DistanceList me, Configuration thee, Salience him, bool normalizeScalarProducts, double *vaf);
 
-void Distances_Configuration_Salience_vaf (Distances me, Configuration thee,
-	Salience him, int normalizeScalarProducts, double *vaf);
+void DissimilarityList_Configuration_Salience_vaf (DissimilarityList me, Configuration thee,
+	Salience him, int tiesProcessingMethod, bool normalizeScalarProducts, double *vaf);
 
-void Dissimilarities_Configuration_Salience_vaf (Dissimilarities me, Configuration thee,
-	Salience him, int processTies, int normalizeScalarProducts, double *vaf);
+void DistanceList_Configuration_vaf (DistanceList me, Configuration thee, bool normalizeScalarProducts, double *vaf);
 
-void Distances_Configuration_vaf (Distances me, Configuration thee,
-	int normalizeScalarProducts, double *vaf);
+void DissimilarityList_Configuration_vaf (DissimilarityList me, Configuration thee, int tiesProcessingMethod, bool normalizeScalarProducts, double *vaf);
 
-void Dissimilarities_Configuration_vaf (Dissimilarities me, Configuration thee,
-	int processTies, int normalizeScalarProducts, double *vaf);
+autoSalience ScalarProductList_Configuration_to_Salience (ScalarProductList me, Configuration him);
 
-Salience ScalarProducts_Configuration_to_Salience (ScalarProducts me,
-	Configuration him);
+autoSalience DistanceList_Configuration_to_Salience (DistanceList me, Configuration him, bool normalizeScalarProducts);
 
-Salience Distances_Configuration_to_Salience (Distances me, Configuration him,
-	int normalizeScalarProducts);
+autoSalience DissimilarityList_Configuration_to_Salience (DissimilarityList me, Configuration him, int processTies, bool normalizeScalarProducts);
 
-Salience Dissimilarities_Configuration_to_Salience (Dissimilarities me,
-	Configuration him, int processTies, int normalizeScalarProducts);
 
+/********* Conversions from & to TableOfReal *****************************/
 
-/********* Casts from & to TableOfReal *****************************/
+autoDissimilarity TableOfReal_to_Dissimilarity (TableOfReal me);
 
-Dissimilarity TableOfReal_to_Dissimilarity (I);
+autoSimilarity TableOfReal_to_Similarity (TableOfReal me);
 
-Similarity TableOfReal_to_Similarity (I);
+autoDistance TableOfReal_to_Distance (TableOfReal me);
 
-Distance TableOfReal_to_Distance (I);
+autoSalience TableOfReal_to_Salience (TableOfReal me);
 
-Salience TableOfReal_to_Salience (I);
+autoWeight TableOfReal_to_Weight (TableOfReal me);
 
-Weight TableOfReal_to_Weight (I);
+autoScalarProduct TableOfReal_to_ScalarProduct (TableOfReal me);
 
-ScalarProduct TableOfReal_to_ScalarProduct (I);
 
 /**************  EXAMPLES  ***************************************************/
 
+autoDissimilarity Dissimilarity_createLetterRExample (double noiseRange);
 
-Dissimilarity Dissimilarity_createLetterRExample (double noiseRange);
-
-Collection INDSCAL_createCarrollWishExample (double noiseStd);
+autoCollection INDSCAL_createCarrollWishExample (double noiseStd);
 
-Salience Salience_createCarrollWishExample ();
+autoSalience Salience_createCarrollWishExample ();
 
-void drawSplines (Graphics g, double low, double high, double ymin, double ymax,
-	int type, long order, char32 const *interiorKnots, int garnish);
+void drawSplines (Graphics g, double low, double high, double ymin, double ymax, int type, long order, char32 const *interiorKnots, int garnish);
 
 void drawMDSClassRelations (Graphics g);
 
diff --git a/dwtools/MFCC.cpp b/dwtools/MFCC.cpp
index e2dd651..aa176e7 100644
--- a/dwtools/MFCC.cpp
+++ b/dwtools/MFCC.cpp
@@ -2,21 +2,20 @@
  *
  * Mel Frequency Cepstral Coefficients class.
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,12 +30,11 @@
 
 Thing_implement (MFCC, CC, 1);
 
-MFCC MFCC_create (double tmin, double tmax, long nt, double dt, double t1,
-	  long maximumNumberOfCoefficients, double fmin_mel, double fmax_mel) {
+autoMFCC MFCC_create (double tmin, double tmax, long nt, double dt, double t1, long maximumNumberOfCoefficients, double fmin_mel, double fmax_mel) {
 	try {
 		autoMFCC me = Thing_new (MFCC);
-		CC_init (me.peek(), tmin, tmax, nt, dt, t1, maximumNumberOfCoefficients, fmin_mel, fmax_mel);
-		return me.transfer();
+		CC_init (me.get(), tmin, tmax, nt, dt, t1, maximumNumberOfCoefficients, fmin_mel, fmax_mel);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MFCC not created.");
 	}
@@ -61,12 +59,12 @@ void MFCC_lifter (MFCC me, long lifter) {
 	}
 }
 
-TableOfReal MFCC_to_TableOfReal (MFCC me, bool includeC0) {
+autoTableOfReal MFCC_to_TableOfReal (MFCC me, bool includeC0) {
 	try {
 		long numberOfColumns = my maximumNumberOfCoefficients + (includeC0 ? 1 : 0);
 		autoTableOfReal thee = TableOfReal_create (my nx, numberOfColumns);
 		for (long i = 1; i <= numberOfColumns; i++) {
-			TableOfReal_setColumnLabel (thee.peek(), i, Melder_cat (U"c", includeC0 ? i - 1 : i));
+			TableOfReal_setColumnLabel (thee.get(), i, Melder_cat (U"c", includeC0 ? i - 1 : i));
 		}
 		long offset = includeC0 ? 1 : 0;
 		for (long iframe = 1; iframe <= my nx; iframe++) {
@@ -78,14 +76,14 @@ TableOfReal MFCC_to_TableOfReal (MFCC me, bool includeC0) {
 				thy data[iframe][1] = cf -> c0;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TabelOfReal.");
 	}
 }
 
 // as_Sound not to_Sound
-Sound MFCC_to_Sound (MFCC me) {
+autoSound MFCC_to_Sound (MFCC me) {
 	try {
 		autoSound thee = Sound_create (my maximumNumberOfCoefficients, my xmin, my xmax, my nx, my dx, my x1);
 		for (long iframe = 1; iframe <= my nx; iframe++) {
@@ -94,13 +92,13 @@ Sound MFCC_to_Sound (MFCC me) {
 				thy z[j][iframe] = cf -> c[j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not represented as Sound.");
 	}
 }
 
-Sound MFCCs_crossCorrelate (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound MFCCs_crossCorrelate (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		if (my dx != thy dx) {
 			Melder_throw (U"The samplings of the two MFCC's have to be equal.");
@@ -110,14 +108,14 @@ Sound MFCCs_crossCorrelate (MFCC me, MFCC thee, enum kSounds_convolve_scaling sc
 		}
 		autoSound target = MFCC_to_Sound (me);
 		autoSound source = MFCC_to_Sound (thee);
-		autoSound cc = Sounds_crossCorrelate (target.peek(), source.peek(), scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		autoSound cc = Sounds_crossCorrelate (target.get(), source.get(), scaling, signalOutsideTimeDomain);
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (U"No cross-correlation between ", me, U" and ", thee, U" calculated.");
 	}
 }
 
-Sound MFCCs_convolve (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound MFCCs_convolve (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		if (my dx != thy dx) {
 			Melder_throw (U"The samplings of the two MFCC's have to be equal.");
@@ -127,8 +125,8 @@ Sound MFCCs_convolve (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling,
 		}
 		autoSound target = MFCC_to_Sound (me);
 		autoSound source = MFCC_to_Sound (thee);
-		autoSound cc = Sounds_convolve (target.peek(), source.peek(), scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		autoSound cc = Sounds_convolve (target.get(), source.get(), scaling, signalOutsideTimeDomain);
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U" and ", thee, U" not convolved.");
 	}
@@ -152,7 +150,7 @@ static double CC_Frames_distance (CC_Frame me, CC_Frame thee, bool includeEnergy
  * 3: spectral center of gravity (gs)
  * 4: stable internal duration
  */
-Matrix MFCC_to_Matrix_features (MFCC me, double windowLength, bool includeEnergy) {
+autoMatrix MFCC_to_Matrix_features (MFCC me, double windowLength, bool includeEnergy) {
 	try {
 		long nw = (long) floor (windowLength / my dx / 2);
 		autoMelSpectrogram him = MFCC_to_MelSpectrogram (me, 0, 0, 1);
@@ -209,7 +207,7 @@ Matrix MFCC_to_Matrix_features (MFCC me, double windowLength, bool includeEnergy
 			
 			// 4: stable internal duration
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no features calculated.");
 	}
diff --git a/dwtools/MFCC.h b/dwtools/MFCC.h
index b7b2770..3a7a9b0 100644
--- a/dwtools/MFCC.h
+++ b/dwtools/MFCC.h
@@ -4,21 +4,20 @@
  *
  * Mel Frequency Cepstral Coefficients class.
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -54,8 +53,7 @@ Thing_define (MFCC, CC) {
 	c0 represents the sum of the dB filter outputs.
 */
 
-MFCC MFCC_create (double tmin, double tmax, long nt, double dt, double t1,
-	long maximumNumberOfCoefficients, double fmin_mel, double fmax_mel);
+autoMFCC MFCC_create (double tmin, double tmax, long nt, double dt, double t1, long maximumNumberOfCoefficients, double fmin_mel, double fmax_mel);
 
 void MFCC_lifter (MFCC me, long lifter);
 /*
@@ -63,12 +61,14 @@ void MFCC_lifter (MFCC me, long lifter);
 	c[i] *= (1 + lifter / 2 * sin (NUMpi * i / lifter))
 */
 
-TableOfReal MFCC_to_TableOfReal (MFCC me, bool includeC0);
+autoTableOfReal MFCC_to_TableOfReal (MFCC me, bool includeC0);
 
-Sound MFCC_to_Sound (MFCC me);
-Sound MFCCs_crossCorrelate (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-Sound MFCCs_convolve (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound MFCC_to_Sound (MFCC me);
 
-Matrix MFCC_to_Matrix_features (MFCC me, double windowLength, bool includeEnergy);
+autoSound MFCCs_crossCorrelate (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+
+autoSound MFCCs_convolve (MFCC me, MFCC thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+
+autoMatrix MFCC_to_Matrix_features (MFCC me, double windowLength, bool includeEnergy);
 
 #endif /* _MFCC_h_ */
diff --git a/dwtools/Makefile b/dwtools/Makefile
index caaee23..d6aaf9b 100644
--- a/dwtools/Makefile
+++ b/dwtools/Makefile
@@ -1,6 +1,6 @@
 # Makefile of the library "dwtools"
-# David Weenink, 22 February 2010
-# djmw 20150803 Latest modification
+# David Weenink and Paul Boersma
+# 23 November 2015
 
 include ../makefile.defs
 
@@ -39,7 +39,6 @@ OBJECTS = Activation.o AffineTransform.o \
 	Polygon_extensions.o Procrustes.o \
 	Proximity.o \
 	Resonator.o \
-	Sampled2.o \
 	Sound_and_Spectrogram_extensions.o Sound_and_PCA.o Sound_extensions.o \
 	Sound_to_MFCC.o Sounds_to_DTW.o \
 	Sound_to_Pitch2.o Sound_to_SPINET.o SPINET.o SPINET_to_Pitch.o \
diff --git a/dwtools/Matrix_Categories.cpp b/dwtools/Matrix_Categories.cpp
index 2f8aaa1..ed29a71 100644
--- a/dwtools/Matrix_Categories.cpp
+++ b/dwtools/Matrix_Categories.cpp
@@ -1,47 +1,43 @@
 /* Matrix_Categories.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
-*/
-
 #include "Matrix_Categories.h"
 #include "TableOfReal_extensions.h"
 
-TableOfReal Matrix_and_Categories_to_TableOfReal (Matrix me, Categories thee) {
+autoTableOfReal Matrix_and_Categories_to_TableOfReal (Matrix me, Categories thee) {
 	try {
 		if (thy size != my ny) {
 			Melder_throw (U"Number of rows and number of categories must be equal.");
 		}
 
 		autoTableOfReal him = TableOfReal_create (my ny, my nx);
-		TableOfReal_setSequentialColumnLabels (him.peek(), 0, 0, NULL, 1, 1);
+		TableOfReal_setSequentialColumnLabels (him.get(), 0, 0, nullptr, 1, 1);
 
-		for (long i = 1; i <= my ny; i++) {
-			his rowLabels[i] = Melder_dup (OrderedOfString_itemAtIndex_c (thee, i));
+		for (long i = 1; i <= my ny; i ++) {
+			his rowLabels [i] = Melder_dup (OrderedOfString_itemAtIndex_c (thee, i));
 		}
-		for (long i = 1; i <= my ny; i++) {
-			for (long j = 1; j <= my nx; j++) {
-				his data[i][j] = my z[i][j];
+
+		for (long i = 1; i <= my ny; i ++) {
+			for (long j = 1; j <= my nx; j ++) {
+				his data [i] [j] = my z [i] [j];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not created from Matrix & Categories.");
 	}
diff --git a/dwtools/Matrix_Categories.h b/dwtools/Matrix_Categories.h
index 8c03708..cff7f34 100644
--- a/dwtools/Matrix_Categories.h
+++ b/dwtools/Matrix_Categories.h
@@ -2,21 +2,20 @@
 #define _Matrix_Categories_h_
 /* Matrix_Categories.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,6 +27,6 @@
 #include "Categories.h"
 #include "TableOfReal.h"
 
-TableOfReal Matrix_and_Categories_to_TableOfReal (Matrix me, Categories thee);
+autoTableOfReal Matrix_and_Categories_to_TableOfReal (Matrix me, Categories thee);
 
 #endif /* _Matrix_Categories_h_ */
diff --git a/dwtools/Matrix_extensions.cpp b/dwtools/Matrix_extensions.cpp
index d3ebf5d..b71da24 100644
--- a/dwtools/Matrix_extensions.cpp
+++ b/dwtools/Matrix_extensions.cpp
@@ -1,20 +1,19 @@
 /* Matrix_extensions.cpp
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,9 +29,7 @@
 #include "Eigen.h"
 #include "NUM2.h"
 
-void Matrix_scatterPlot (Matrix me, Graphics g, long icx, long icy, double xmin, double xmax, double ymin, double ymax,
-	double size_mm, const char32 *mark, int garnish)
-{
+void Matrix_scatterPlot (Matrix me, Graphics g, long icx, long icy, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark, int garnish) {
 	long ix = labs (icx), iy = labs (icy);
 
 	if (ix < 1 || ix > my nx || iy < 1 || iy > my nx) {
@@ -63,21 +60,20 @@ void Matrix_scatterPlot (Matrix me, Graphics g, long icx, long icy, double xmin,
 	}
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	for (long i = 1; i <= my ny; i++) {
-		if (my z[i][ix] >= xmin && my z[i][ix] <= xmax &&
-		        my z[i][iy] >= ymin && my z[i][iy] <= ymax) {
+		if (my z[i][ix] >= xmin && my z[i][ix] <= xmax && my z[i][iy] >= ymin && my z[i][iy] <= ymax) {
 			Graphics_mark (g, my z[i][ix], my z[i][iy], size_mm, mark);
 		}
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (ymin * ymax < 0.0) {
-			Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 		}
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (xmin * xmax < 0.0) {
-			Graphics_markBottom (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markBottom (g, 0.0, true, true, true, nullptr);
 		}
 	}
 }
@@ -123,13 +119,13 @@ void Matrix_drawAsSquares (Matrix me, Graphics g, double xmin, double xmax, doub
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (ymin * ymax < 0.0) {
-			Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 		}
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (xmin * xmax < 0.0) {
-			Graphics_markBottom (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markBottom (g, 0.0, true, true, true, nullptr);
 		}
 	}
 }
@@ -179,24 +175,23 @@ void Matrix_scale (Matrix me, int choice) {
 	}
 }
 
-Matrix Matrix_transpose (Matrix me) {
+autoMatrix Matrix_transpose (Matrix me) {
 	try {
-		autoMatrix thee = Matrix_create (my ymin, my ymax, my ny, my dy, my y1,
-		                                 my xmin, my xmax, my nx, my dx, my x1);
+		autoMatrix thee = Matrix_create (my ymin, my ymax, my ny, my dy, my y1, my xmin, my xmax, my nx, my dx, my x1);
 		for (long i = 1; i <= my ny; i++) {
 			for (long j = 1; j <= my nx; j++) {
 				thy z[j][i] = my z[i][j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not transposed.");
 	}
 }
 
-void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
-                              double ymin, double ymax, double minimum, double maximum, long nBins,
-                              double freqMin, double freqMax, int cumulative, int garnish) {
+void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax, double minimum, double maximum,
+	long nBins, double freqMin, double freqMax, bool cumulative, bool garnish)
+{
 	if (nBins <= 0) {
 		return;
 	}
@@ -207,19 +202,18 @@ void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
 		ymin = my ymin; ymax = my ymax;
 	}
 	long ixmin, ixmax, iymin, iymax;
-	if (Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0 ||
-	        Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0) {
+	if ((Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0) || 
+		(Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0)) {
 		return;
 	}
-	if (maximum <= minimum) Matrix_getWindowExtrema (me, ixmin, ixmax, iymin,
-		        iymax, & minimum, & maximum);
+	if (maximum <= minimum) {
+		Matrix_getWindowExtrema (me, ixmin, ixmax, iymin, iymax, & minimum, & maximum);
+	}
 	if (maximum <= minimum) {
 		minimum -= 1.0; maximum += 1.0;
 	}
 
-	/*
-		Count the numbers per bin and the total
-	*/
+	// Count the numbers per bin and the total
 
 	if (nBins < 1) {
 		nBins = 10;
@@ -242,7 +236,7 @@ void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
 		} else {
 			NUMvector_extrema (freq.peek(), 1, nBins, & freqMin, & freqMax);
 			if (freqMax <= freqMin) {
-				freqMin = freqMin > 1 ? freqMin - 1 : 0;
+				freqMin = freqMin > 1.0 ? freqMin - 1.0 : 0.0;
 				freqMax += 1.0;
 			}
 		}
@@ -250,7 +244,7 @@ void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
 
 	Graphics_setInner (g);
 	Graphics_setWindow (g, minimum, maximum, freqMin, freqMax);
-	double fi = 0;
+	double fi = 0.0;
 	for (long i = 1; i <= nBins; i++) {
 		double ftmp = freq[i];
 		fi = cumulative ? fi + freq[i] / nxy : freq[i];
@@ -258,22 +252,22 @@ void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
 		if (ftmp > freqMax) {
 			ftmp = freqMax;
 		}
-		if (ftmp > freqMin) Graphics_rectangle (g, minimum + (i - 1) *
-			                                        binWidth, minimum + i * binWidth, freqMin, ftmp);
+		if (ftmp > freqMin) {
+			Graphics_rectangle (g, minimum + (i - 1) * binWidth, minimum + i * binWidth, freqMin, ftmp);
+		}
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (! cumulative) {
-			Graphics_textLeft (g, 1, U"Number/bin");
+			Graphics_textLeft (g, true, U"Number/bin");
 		}
 	}
 }
 
-void Matrix_drawSliceY (Matrix me, Graphics g, double x, double ymin, double ymax,
-                        double min, double max) {
+void Matrix_drawSliceY (Matrix me, Graphics g, double x, double ymin, double ymax, double min, double max) {
 
 	if (x < my xmin || x > my xmax) {
 		return;
@@ -305,12 +299,11 @@ void Matrix_drawSliceY (Matrix me, Graphics g, double x, double ymin, double yma
 	for (long i = iymin; i <= iymax; i++) {
 		y[i] = my z[i][ix];
 	}
-	Graphics_function (g, y.peek(), iymin, iymax, Matrix_rowToY (me, iymin),
-	                   Matrix_rowToY (me, iymax));
+	Graphics_function (g, y.peek(), iymin, iymax, Matrix_rowToY (me, iymin), Matrix_rowToY (me, iymax));
 	Graphics_unsetInner (g);
 }
 
-Matrix Matrix_solveEquation (Matrix me, double tolerance) {
+autoMatrix Matrix_solveEquation (Matrix me, double /* tolerance */) {
 	try {
 		long nr = my ny, nc = my nx - 1;
 
@@ -337,7 +330,7 @@ Matrix Matrix_solveEquation (Matrix me, double tolerance) {
 		for (long j = 1; j <= nc; j++) {
 			thy z[1][j] = x[j];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix equation not solved.");
 	}
@@ -351,8 +344,8 @@ double Matrix_getMean (Matrix me, double xmin, double xmax, double ymin, double
 		ymin = my ymin; ymax = my ymax;
 	}
 	long ixmin, ixmax, iymin, iymax;
-	if (Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0 ||
-	        Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0) {
+	if ((Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0) ||
+		(Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0)) {
 		return NUMundefined;
 	}
 	double sum = 0.0;
@@ -372,8 +365,8 @@ double Matrix_getStandardDeviation (Matrix me, double xmin, double xmax, double
 		ymin = my ymin; ymax = my ymax;
 	}
 	long ixmin, ixmax, iymin, iymax;
-	if (Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0 ||
-	        Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0) {
+	if ((Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax) == 0) ||
+		(Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax) == 0)) {
 		return NUMundefined;
 	}
 	long nx = ixmax - ixmin + 1, ny = iymax - iymin + 1;
@@ -390,4 +383,146 @@ double Matrix_getStandardDeviation (Matrix me, double xmin, double xmax, double
 	return sqrt (sum / (nx * ny - 1));
 }
 
+autoDaata IDXFormattedMatrixFileRecognizer (int numberOfBytesRead, const char *header, MelderFile file) {
+	unsigned int numberOfDimensions, type, pos = 4;
+	/* 
+	 * 9: minumum size is 4 bytes (magic number) + 4 bytes for 1 dimension + 1 value of 1 byte
+	 */
+	if (numberOfBytesRead < 9 || header[0] != 0 ||  header[1] != 0 || (type = header[2]) < 8 ||
+		numberOfBytesRead < 4 + (numberOfDimensions = header[3]) * 4) { // each dimension occupies 4 bytes
+		return autoDaata ();
+	}
+	trace (U"dimensions = ", numberOfDimensions, U" type = ", type);
+	/*
+	 * Check if the file size (bytes) equals the number of data cells in the matrix times the size of each cell (bytes) plus thee
+	 * offset of the data (4 + numberOfDimensions * 4)
+	 */ 
+	double numberOfCells = 1.0; // double because sizes of the dimensions could turn out to be very large if not an IDX format file
+	for (long i = 1; i <= numberOfDimensions; i ++, pos += 4) {
+		unsigned char b1 = header[pos], b2 = header[pos + 1], b3 = header[pos + 2], b4 = header[pos + 3];
+		long size = ((uint32) b1 << 24) + ((uint32) b2 << 16) + ((uint32) b3 << 8) + (uint32) b4;
+		trace (U"size = ", size, U" ", b1, U" ", b2, U" ", b3, U" ", b4);
+		numberOfCells *= size;
+	}
+	trace (U"Number of cells =", numberOfCells);
+	/*
+	 * Check how many bytes each cell needs
+	 */
+	long cellSizeBytes = (type == 0x08 || type == 0x09) ? 1 : type == 0x0B ? 2 : (type == 0x0C || type == 0x0D) ? 4 : type == 0x0E ? 8 : 0;
+	if (cellSizeBytes == 0) {
+		return autoDaata ();
+	}
+	trace (U"Cell size =", cellSizeBytes);
+	double numberOfBytes = numberOfCells * cellSizeBytes + 4 + numberOfDimensions * 4;
+	trace (U"Number of bytes =", numberOfBytes);
+	long numberOfBytesInFile = MelderFile_length (file);
+	trace (U"File size = ", numberOfBytesInFile);
+	if (numberOfBytes > numberOfBytesInFile || (long) numberOfBytes < numberOfBytesInFile) { // may occur if it is not an IDX file
+		return autoDaata ();
+	}
+	autoMatrix thee = Matrix_readFromIDXFormatFile (file);
+	return thee.move();
+}
+
+
+autoMatrix Matrix_readFromIDXFormatFile (MelderFile file) {
+	/*
+		From: http://yann.lecun.com/exdb/mnist/
+		
+		The IDX file format is a simple format for vectors and multidimensional matrices of various numerical types.
+
+		The basic format is
+
+			magic number
+			size in dimension 0
+			size in dimension 1
+			size in dimension 2
+			....
+			size in dimension N
+		data
+
+		The magic number is an integer (MSB first). The first 2 bytes are always 0.
+
+		The third byte codes the type of the data:
+		0x08: unsigned byte
+		0x09: signed byte
+		0x0B: short (2 bytes)
+		0x0C: int (4 bytes)
+		0x0D: float (4 bytes)
+		0x0E: double (8 bytes)
+
+		The 4-th byte codes the number of dimensions of the vector/matrix: 1 for vectors, 2 for matrices....
+
+		The sizes in each dimension are 4-byte integers (MSB first, big endian, like in most non-Intel processors).
+
+		The data is stored like in a C array, i.e. the index in the last dimension changes the fastest. 
+
+	*/
+	try {
+		autofile f = Melder_fopen (file, "r");
+		unsigned int b1 = bingetu1 (f); // 0
+		unsigned int b2 = bingetu1 (f); // 0
+		if (b1 != 0 || b2 != 0) {
+			Melder_throw (U"Starting two bytes should be zero.");
+		}
+		unsigned int b3 = bingetu1 (f); // data type
+		unsigned int b4 = bingetu1 (f); // number of dimensions
+		long ncols = bingeti32 (f), nrows = 1; // ok if vector 
+		if (b4 > 1) {
+			nrows = ncols;
+			ncols = bingeti32 (f);
+		}
+		while (b4 > 2) { // accumulate all other dimensions in the columns
+			long n2 = bingeti32 (f);
+			ncols *= n2; // put the matrix in one row
+			-- b4;
+		}
+		autoMatrix me = Matrix_create (0.0, ncols, ncols, 1, 0.5, 0, nrows, nrows, 1.0, 0.5);
+		if (b3 == 0x08) { // unsigned byte
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingetu1 (f);
+				}
+			}
+		} else if (b3 == 0x09) { // signed byte
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingeti1 (f);
+				}
+			}
+		} else if (b3 == 0x0B) { // short (2 bytes)
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingeti2 (f);
+				}
+			}
+		} else if (b3 == 0x0C) { // int (4 bytes)
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingeti32 (f);
+				}
+			}
+		} else if (b3 == 0x0D) { // float (4 bytes)
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingetr4 (f);
+				}
+			}
+		} else if (b3 == 0x0E) { // double (8 bytes)
+			for (long irow = 1; irow <= nrows; irow ++) {
+				for (long icol = 1; icol <= ncols; icol ++) {
+					my z [irow] [icol] = bingetr8 (f);
+				}
+			}
+		} else {
+			Melder_throw (U"Not a valid data type.");
+		}
+		f.close (file);
+		return me;
+	} catch (MelderError) {
+		Melder_throw (U"Cannot read from IDX format file ", MelderFile_messageName (file), U".");
+	}
+}
+
+
 /* End of file Matrix_extensions.cpp */
diff --git a/dwtools/Matrix_extensions.h b/dwtools/Matrix_extensions.h
index 86f6c12..a68038e 100644
--- a/dwtools/Matrix_extensions.h
+++ b/dwtools/Matrix_extensions.h
@@ -2,21 +2,20 @@
 #define _Matrix_extensions_h_
 /* Matrix_extensions.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,6 +26,9 @@
 #include "Matrix.h"
 #include "Graphics.h"
 
+autoMatrix Matrix_readFromIDXFormatFile (MelderFile file);
+autoDaata IDXFormattedMatrixFileRecognizer (int numberOfBytesRead, const char *header, MelderFile file);
+
 void Matrix_scatterPlot (Matrix me, Graphics g, long icx, long icy,
     double xmin, double xmax, double ymin, double ymax,
     double size_mm, const char32 *mark, int garnish);
@@ -45,20 +47,21 @@ void Matrix_scale (Matrix me, int choice);
 /* choice = 2 :rows, divide each row elmnt by the maximum (abs) of that row	*/
 /* choice = 3 :columns, divide each col elmnt by the maximum of that col	*/
 
-Matrix Matrix_transpose (Matrix me);
+autoMatrix Matrix_transpose (Matrix me);
 
 void Matrix_drawDistribution (Matrix me, Graphics g, double xmin, double xmax,
 	double ymin, double ymax, double minimum, double maximum, long nBins,
-	double freqMin, double freqmax, int cumulative, int garnish);
+	double freqMin, double freqmax, bool cumulative, bool garnish);
 
 void Matrix_drawSliceY (Matrix me, Graphics g, double x, double ymin, double ymax,
 	double min, double max);
 
 int Matrix_fitPolynomial (Matrix me, long maxDegree);
 
-Matrix Matrix_solveEquation (Matrix me, double tolerance);
+autoMatrix Matrix_solveEquation (Matrix me, double tolerance);
 
 double Matrix_getMean (Matrix me, double xmin, double xmax, double ymin, double ymax);
+
 double Matrix_getStandardDeviation (Matrix me, double xmin, double xmax, double ymin, double ymax);
 
 
diff --git a/dwtools/Minimizers.cpp b/dwtools/Minimizers.cpp
index bc15dd7..96c519d 100644
--- a/dwtools/Minimizers.cpp
+++ b/dwtools/Minimizers.cpp
@@ -1,20 +1,19 @@
 /* Minimizers.cpp
  *
- * Copyright (C) 2001-2013 David Weenink
+ * Copyright (C) 2001-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 /*
  David Weenink, 20011016
@@ -47,54 +46,45 @@
 
 Thing_implement (Minimizer, Thing, 0);
 
-void structMinimizer :: v_destroy () {
-	NUMvector_free (p, 1);
-	NUMvector_free (history, 1);
+void structMinimizer :: v_destroy () noexcept {
+	NUMvector_free<double> (p, 1);
+	NUMvector_free<double> (history, 1);
 	Minimizer_Parent :: v_destroy ();
 }
 
-static void classMinimizer_after (I, Any aclosure) {
-	iam (Minimizer);
-	(void) aclosure;
+static void classMinimizer_afterHook (Minimizer me, Thing /* boss */) {
 
 	if (my success || ! my gmonitor) {
 		return;
 	}
 
 	if (my start == 1) {
-		char32 s[35];
-		Minimizer_drawHistory (me, my gmonitor, 0, my maxNumOfIterations, 0, 1.1 * my history[1], 1);
-		Melder_sprint (s,35, U"Dimension of search space: ", my nParameters);
-		Graphics_textTop (my gmonitor, 0, s);
+		Minimizer_drawHistory (me, my gmonitor, 0, my maxNumOfIterations, 0.0, 1.1 * my history[1], 1);
+		Graphics_textTop (my gmonitor, false, Melder_cat (U"Dimension of search space: ", my nParameters));
 	}
+	Graphics_beginMovieFrame (my gmonitor, nullptr);
 	Graphics_setInner (my gmonitor);
-	Graphics_line (my gmonitor, my iteration, my history[my iteration],
-	               my iteration, my history[my iteration]);
+	Graphics_line (my gmonitor, my iteration, my history[my iteration], my iteration, my history[my iteration]);
 	Graphics_unsetInner (my gmonitor);
-	Melder_monitor ( (double) (my iteration) / my maxNumOfIterations,
-	                  U"Iterations: ", my iteration,
-	                  U", Function calls: ", my funcCalls,
-	                  U", Cost: ", my minimum);
+	Graphics_endMovieFrame (my gmonitor, 0.0);
+	Melder_monitor ((double) (my iteration) / my maxNumOfIterations, U"Iterations: ", my iteration, 
+		U", Function calls: ", my funcCalls, U", Cost: ", my minimum);
 }
 
-void Minimizer_init (I, long nParameters, Data object) {
-	iam (Minimizer);
+void Minimizer_init (Minimizer me, long nParameters, Daata object) {
 	my nParameters = nParameters;
 	my p = NUMvector<double> (1, nParameters);
 	my object = object;
 	my minimum = 1.0e30;
-	my after = classMinimizer_after;
-	Minimizer_reset (me, 0); /* added 27/11/97 */
+	my afterHook = classMinimizer_afterHook;
+	Minimizer_reset (me, nullptr); /* added 27/11/97 */
 }
 
-void Minimizer_setParameters (Minimizer me, Any parameters) {
-	my v_setParameters (parameters);
-}
 static void monitor_off (Minimizer me) {
 	Melder_monitor (1.1);
 	if (my gmonitor) {
 		Graphics_clearWs (my gmonitor); // DON'T forget (my gmonitor)
-		my gmonitor = NULL;
+		my gmonitor = nullptr;
 	}
 }
 
@@ -107,14 +97,12 @@ void Minimizer_minimize (Minimizer me, long maxNumOfIterations, double tolerance
 		}
 
 		if (my iteration + maxNumOfIterations > my maxNumOfIterations) {
-			double *history;
 			my maxNumOfIterations += maxNumOfIterations;
-			if (my history) {
-				my history++;    /* arrays start at 1 !! */
+			if (my history) { // clumsy because vector must have been allocated  before one can append
+				NUMvector_append<double> (& my history, 1, & my maxNumOfIterations);
+			} else {
+				my history = NUMvector<double> (1, my maxNumOfIterations);
 			}
-			history = (double *) Melder_realloc (my history, my maxNumOfIterations *
-			                                     (int64) sizeof (double));
-			my history = --history; /* arrays start at 1 !! */
 		}
 		if (monitor) {
 			my gmonitor = (Graphics) Melder_monitor (0.0, U"Starting...");
@@ -124,11 +112,8 @@ void Minimizer_minimize (Minimizer me, long maxNumOfIterations, double tolerance
 		if (monitor) {
 			monitor_off (me);
 		}
-		if (my success) Melder_casual (U"Minimizer_minimize:",
-		                               U" minimum ", my minimum,
-		                               U" reached \nafter ", my iteration,
-									   U" iterations and ", my funcCalls,
-									   U" function calls.");
+		if (my success) Melder_casual (U"Minimizer_minimize:", U" minimum ", my minimum, U" reached \nafter ", my iteration,
+			U" iterations and ", my funcCalls, U" function calls.");
 	} catch (MelderError) {
 		if (monitor) {
 			monitor_off (me);    // temporarily until better monitor facilities
@@ -154,12 +139,12 @@ void Minimizer_minimizeManyTimes (Minimizer me, long numberOfTimes, long maxIter
 			NUMvector_copyElements (my p, popt.peek(), 1, my nParameters);
 			fopt = my minimum;
 		}
-		Minimizer_reset (me, 0);
+		Minimizer_reset (me, nullptr);
 		if (! monitorSingle) {
 			try {
-				Melder_progress ( (double) i / numberOfTimes, i, U" from ", numberOfTimes);
+				Melder_progress ((double) i / numberOfTimes, i, U" from ", numberOfTimes);
 			} catch (MelderError) {
-				Melder_clearError ();   // interrurpt, no error
+				Melder_clearError ();   // interrupted, no error
 				break;
 			}
 		}
@@ -170,10 +155,14 @@ void Minimizer_minimizeManyTimes (Minimizer me, long numberOfTimes, long maxIter
 	Minimizer_reset (me, popt.peek());
 }
 
-static void Minimizer_setAfterEachIteration (Minimizer me, void (*after) (I, Any aclosure), Any aclosure) {
-	my after = after;
-	my aclosure = aclosure;
+#if 0
+void Minimizer_setAfterEachIteration (Minimizer me, int (*afterHook) (Minimizer me, Thing afterBoss), Thing afterBoss);
+/* set the procedure that is executed after each iteration. */
+void Minimizer_setAfterEachIteration (Minimizer me, void (*afterHook) (Minimizer me, Thing afterBoss), Thing afterBoss) {
+	my afterHook = afterHook;
+	my afterBoss = afterBoss;
 }
+#endif
 
 void Minimizer_reset (Minimizer me, const double guess[]) {
 	if (guess) {
@@ -182,30 +171,21 @@ void Minimizer_reset (Minimizer me, const double guess[]) {
 		}
 	} else {
 		for (long i = 1; i <= my nParameters; i++) {
-			my p[i] = NUMrandomUniform (-1, 1);
+			my p[i] = NUMrandomUniform (-1.0, 1.0);
 		}
 	}
-	/*
-		Don't use NUMdvector_free: realloc in Minimizer_minimize
-	*/
-	if (my history != 0) {
-		my history++;
-		Melder_free (my history);
-	}
+
+	NUMvector_free<double> (my history, 1);
+	my history = nullptr;
 	my maxNumOfIterations = my success = my funcCalls = my iteration = 0;
 	my minimum = 1.0e38;
 	my v_reset ();
 }
 
-void Minimizer_drawHistory (Minimizer me, Graphics g, long iFrom, long iTo, double hmin,
-                            double hmax, int garnish) {
-	if (my history == 0) {
+void Minimizer_drawHistory (Minimizer me, Graphics g, long iFrom, long iTo, double hmin, double hmax, int garnish) {
+	if (! my history) {
 		return;
 	}
-	autoNUMvector<double> history (1, my iteration);
-	for (long i = 1; i <= my iteration; i++) {
-		history[i] = my history[i];
-	}
 	if (iTo <= iFrom) {
 		iFrom = 1; iTo = my iteration;
 	}
@@ -217,7 +197,7 @@ void Minimizer_drawHistory (Minimizer me, Graphics g, long iFrom, long iTo, doub
 		itmax = my iteration;
 	}
 	if (hmax <= hmin) {
-		NUMvector_extrema (history.peek(), itmin, itmax, & hmin, & hmax);
+		NUMvector_extrema (my history, itmin, itmax, & hmin, & hmax);
 	}
 	if (hmax <= hmin) {
 		hmin -= 0.5 * fabs (hmin);
@@ -225,13 +205,13 @@ void Minimizer_drawHistory (Minimizer me, Graphics g, long iFrom, long iTo, doub
 	}
 	Graphics_setInner (g);
 	Graphics_setWindow (g, iFrom, iTo, hmin, hmax);
-	Graphics_function (g, history.peek(), itmin, itmax, itmin, itmax);
+	Graphics_function (g, my history, itmin, itmax, itmin, itmax);
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Number of iterations");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Number of iterations");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
@@ -255,9 +235,9 @@ void structSteepestDescentMinimizer :: v_minimize () {
 		}
 		history[++iteration] = minimum = func (object, p);
 		success = 2.0 * fabs (fret - minimum) < tolerance * (fabs (fret) + fabs (minimum));
-		if (after) {
+		if (our afterHook) {
 			try {
-				after (this, aclosure);
+				our afterHook (this, our afterBoss);
 			} catch (MelderError) {
 				Melder_casual (U"Interrupted after ", iteration, U" iterations.");
 				Melder_clearError ();
@@ -271,25 +251,13 @@ void structSteepestDescentMinimizer :: v_minimize () {
 	}
 }
 
-void structSteepestDescentMinimizer :: v_setParameters (Any parameters) {
-	if (p) {
-		SteepestDescentMinimizer_parameters thee = (SteepestDescentMinimizer_parameters) parameters;
-		eta = thy eta;
-		momentum = thy momentum;
-	} else {
-		eta = 0.1; momentum = 0.9;
-	}
-}
-
-SteepestDescentMinimizer SteepestDescentMinimizer_create (long nParameters, Data object,
-        double (*func) (Data object, const double p[]),
-        void (*dfunc) (Data object, const double p[], double dp[])) {
+autoSteepestDescentMinimizer SteepestDescentMinimizer_create (long nParameters, Daata object, double (*func) (Daata object, const double p[]), void (*dfunc) (Daata object, const double p[], double dp[])) {
 	try {
 		autoSteepestDescentMinimizer me = Thing_new (SteepestDescentMinimizer);
-		Minimizer_init (me.peek(), nParameters, object);
+		Minimizer_init (me.get(), nParameters, object);
 		my func = func;
 		my dfunc = dfunc;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SteepestDescentMinimizer not created.");
 	}
@@ -301,7 +269,7 @@ Thing_implement (VDSmagtMinimizer, Minimizer, 0);
 
 void structVDSmagtMinimizer :: v_minimize () {
 	int decrease_direction_found = 1;
-	int l_iteration = 1;   // David, dat is gevaarlijk: een locale variabele met dezelfde naam als een member; daarom hernoemd, maar is het correct? yes, we can iterate in steps, therefore local and global counter
+	int l_iteration = 1;   // yes, we can iterate in steps, therefore local and global counter
 	double rtemp, rtemp2;
 
 	// df is estimate of function reduction obtainable during line search
@@ -334,7 +302,7 @@ void structVDSmagtMinimizer :: v_minimize () {
 		}
 		if (flag & 2) {
 			restart = 2; /* flag & 1 ??? */
-		} else if (fabs ( (double) gcg0) > 0.2 * gopt_sq) {
+		} else if (fabs ((double) gcg0) > 0.2 * gopt_sq) {
 			restart = 1;
 		}
 		if (restart == 0) {
@@ -431,11 +399,10 @@ void structVDSmagtMinimizer :: v_minimize () {
 				fch = fc - minimum;
 				gr2s = (grc - gropt) / dalpha;
 				temp = (fch + fch) / dalpha - grc - gropt;
-				if ( (fc < minimum) ||
-				        ( (fc == minimum) && (grc / gropt > -1))) {
+				if ((fc < minimum) || ((fc == minimum) && (grc / gropt > -1))) {
 					double *tmp;
 					gopt_sq = gsq;
-					history [this ->iteration] = minimum = fc;
+					history [this -> iteration] = minimum = fc;
 					tmp = p; p = pc; pc = tmp;
 					tmp = dp; dp = gc; gc = tmp;
 					if (grc *gropt <= 0) {
@@ -445,9 +412,9 @@ void structVDSmagtMinimizer :: v_minimize () {
 					gropt = grc;
 					dalpha = - dalpha;
 					success = gsq < tolerance;
-					if (after) {
+					if (our afterHook) {
 						try {
-							after (this, aclosure);
+							our afterHook (this, our afterBoss);
 						} catch (MelderError) {
 							Melder_casual (U"Interrupted after ", this -> iteration, U" iterations.");
 							Melder_clearError ();
@@ -463,8 +430,7 @@ void structVDSmagtMinimizer :: v_minimize () {
 				} else {
 					alplim = alpha;
 				}
-			} while (lineSearch_iteration
-			         <= lineSearchMaxNumOfIterations);
+			} while (lineSearch_iteration <= lineSearchMaxNumOfIterations);
 
 			fc = history [this -> iteration] = minimum;
 			rtemp = 0.0;
@@ -499,14 +465,14 @@ void structVDSmagtMinimizer :: v_minimize () {
 	}
 }
 
-void structVDSmagtMinimizer :: v_destroy () {
-	NUMvector_free (dp, 1);
-	NUMvector_free (pc, 1);
-	NUMvector_free (gc, 1);
-	NUMvector_free (g0, 1);
-	NUMvector_free (s, 1);
-	NUMvector_free (srst, 1);
-	NUMvector_free (grst, 1);
+void structVDSmagtMinimizer :: v_destroy () noexcept {
+	NUMvector_free<double> (dp, 1);
+	NUMvector_free<double> (pc, 1);
+	NUMvector_free<double> (gc, 1);
+	NUMvector_free<double> (g0, 1);
+	NUMvector_free<double> (s, 1);
+	NUMvector_free<double> (srst, 1);
+	NUMvector_free<double> (grst, 1);
 	VDSmagtMinimizer_Parent :: v_destroy ();
 }
 
@@ -514,19 +480,10 @@ void structVDSmagtMinimizer :: v_reset () {
 	restart_flag = 1;
 }
 
-void structVDSmagtMinimizer :: v_setParameters (Any parameters) {
-	if (parameters) {
-		VDSmagtMinimizer_parameters  vdspars = (VDSmagtMinimizer_parameters) parameters;  // David, weer link: dezelfde naam,: Nu niet meer
-		lineSearchGradient = vdspars -> lineSearchGradient;
-		lineSearchMaxNumOfIterations = vdspars -> lineSearchMaxNumOfIterations;
-	}
-}
-
-VDSmagtMinimizer VDSmagtMinimizer_create (long nParameters, Data object, double (*func) (Data object, const double x[]),
-        void (*dfunc) (Data object, const double x[], double dx[])) {
+autoVDSmagtMinimizer VDSmagtMinimizer_create (long nParameters, Daata object, double (*func) (Daata object, const double x[]), void (*dfunc) (Daata object, const double x[], double dx[])) {
 	try {
 		autoVDSmagtMinimizer me = Thing_new (VDSmagtMinimizer);
-		Minimizer_init (me.peek(), nParameters, object);
+		Minimizer_init (me.get(), nParameters, object);
 		my dp = NUMvector<double> (1, nParameters);
 		my pc = NUMvector<double> (1, nParameters);
 		my gc = NUMvector<double> (1, nParameters);
@@ -538,7 +495,7 @@ VDSmagtMinimizer VDSmagtMinimizer_create (long nParameters, Data object, double
 		my dfunc = dfunc;
 		my lineSearchGradient = 0.9;
 		my lineSearchMaxNumOfIterations = 5;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VDSmagtMinimizer not created.");
 	}
@@ -546,7 +503,7 @@ VDSmagtMinimizer VDSmagtMinimizer_create (long nParameters, Data object, double
 
 /************ class LineMinimizer *******************************/
 
-void structLineMinimizer :: v_destroy () {
+void structLineMinimizer :: v_destroy () noexcept {
 	NUMvector_free (ptry, 1);
 	NUMvector_free (direction, 1);
 	LineMinimizer_Parent :: v_destroy ();
@@ -554,8 +511,7 @@ void structLineMinimizer :: v_destroy () {
 
 Thing_implement (LineMinimizer, Minimizer, 0);
 
-void LineMinimizer_init (I, long nParameters, Data object, double (*func) (Data, const double [])) {
-	iam (LineMinimizer);
+void LineMinimizer_init (LineMinimizer me, long nParameters, Daata object, double (*func) (Daata, const double [])) {
 	Minimizer_init (me, nParameters, object);
 	my direction = NUMvector<double> (1, nParameters);
 	my ptry = NUMvector<double> (1, nParameters);
diff --git a/dwtools/Minimizers.h b/dwtools/Minimizers.h
index 953b6f9..f3e7558 100644
--- a/dwtools/Minimizers.h
+++ b/dwtools/Minimizers.h
@@ -2,21 +2,20 @@
 #define _Minimizers_h_
 /* Minimizers.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,27 +35,26 @@ Thing_define (Minimizer, Thing) {
 	double minimum;		/* current minimum */
 	double *history;	/* previous minima */
 	double tolerance;	/* stop criterium */
-	Data object;		/* reference to the object that uses this Minimizer */
+	Daata object;		/* reference to the object that uses this Minimizer */
 	long funcCalls;		/* the number of times 'func' has been called */
 	long success;		/* indicates whether I'm done */
 	long start;			/* start iteration series */
 	long maxNumOfIterations; /* the current maximum number of iterations */
 	long iteration;     /* the total number of iterations */
-	void (*after) (I, Any aclosure); /* to be called after each iteration */
-	Any aclosure;
+	void (*afterHook) (Minimizer me, Thing boss); /* to be called after each iteration */
+	Thing afterBoss;
 	Graphics gmonitor;		/* graphics to monitor the minimization process */
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override { }
 
 	virtual void v_minimize () { }  /* does the work */
 	virtual void v_reset () { } /* reset the minimizer */
-	virtual void v_setParameters (Any parameters) { (void) parameters; }
 };
 
-void Minimizer_init (I, long nParameters, Data object);
+void Minimizer_init (Minimizer me, long nParameters, Daata object);
 /*
 	Preconditions:
 		nParameters > 0;
@@ -75,14 +73,7 @@ void Minimizer_reset (Minimizer me, const double guess[]);
  *    reset (me);
  */
 
-void Minimizer_setAfterEachIteration (Minimizer me, int (*after) (I, Any aclosure),
-	Any aclosure);
-/* set the procedure that is executed after each iteration. */
-
-void Minimizer_setParameters (Minimizer me, Any parameters); /* for inheritors */
-
-void Minimizer_minimize (Minimizer me, long maxNumOfIterations, double tolerance,
-	int monitor);
+void Minimizer_minimize (Minimizer me, long maxNumOfIterations, double tolerance, int monitor);
 /* Minimizes during maximally maxNumOfIterations. The gmonitor is initialized
  * before minimization and cleared afterwards.
  * Preconditions:
@@ -94,33 +85,28 @@ void Minimizer_minimize (Minimizer me, long maxNumOfIterations, double tolerance
  *    after each iteration: iteration++
  */
 
-void Minimizer_minimizeManyTimes (Minimizer me, long numberOfTimes, long maxIterationsPerTime,
-	double tolerance);
+void Minimizer_minimizeManyTimes (Minimizer me, long numberOfTimes, long maxIterationsPerTime, double tolerance);
 
-void Minimizer_drawHistory (Minimizer me, Graphics g, long itmin, long itmax,
-    double minimum, double maximum, int garnish);
+void Minimizer_drawHistory (Minimizer me, Graphics g, long itmin, long itmax, double minimum, double maximum, int garnish);
 
 double Minimizer_getMinimum (Minimizer me);
 
 /********** deferred class LineMinimizer ************************************/
 
 Thing_define (LineMinimizer, Minimizer) {
-	// new data:
-	public:
-		/* the function to be minimized */
-		double (*func) (Data object, const double p[]);
-		double maxLineStep;	/*maximum step in line search direction */
-		double *direction;	/* search direction vector */
-		double *ptry;		/* point in search direction */
-	// overridden methods:
-		virtual void v_destroy ();
-	// new methods:
-		//virtual void v_linmin (double p[], double fp, double direction[], double *fret);	 // David, is dit correct? ja
-};
+	/* the function to be minimized */
+	double (*func) (Daata object, const double p[]);
+	double maxLineStep;	/*maximum step in line search direction */
+	double *direction;	/* search direction vector */
+	double *ptry;		/* point in search direction */
 
-void LineMinimizer_init (I, long nParameters, Data object, double (*func)
-	(Data object, const double p[]));
+	void v_destroy () noexcept
+		override;
 
+	//virtual void v_linmin (double p[], double fp, double direction[], double *fret);	 // David, is dit correct? ja
+};
+
+void LineMinimizer_init (LineMinimizer me, long nParameters, Daata object, double (*func) (Daata object, const double p[]));
 
 /******************  class SteepestDescentMinimizer**************************/
 
@@ -129,20 +115,16 @@ typedef struct structSteepestDescentMinimizer_parameters {
 } *SteepestDescentMinimizer_parameters;
 
 Thing_define (SteepestDescentMinimizer, Minimizer) {
-	// new data:
-	public:
-		double eta, momentum;
-		double (*func) (Data object, const double p[]);
-		void  (*dfunc) (Data object, const double p[], double dp[]);
-		/* calculates gradient at position p */
-	// overridden methods:
-		virtual void v_minimize ();
-		virtual void v_setParameters (Any parameters);
+	double eta, momentum;
+	double (*func) (Daata object, const double p[]);
+	void  (*dfunc) (Daata object, const double p[], double dp[]);
+	/* calculates gradient at position p */
+
+	void v_minimize ()
+		override;
 };
 
-SteepestDescentMinimizer SteepestDescentMinimizer_create (long nParameters, Data object, double (*func)
-	(Data object, const double p[]), void (*dfunc) (Data object, const double p[],
-	double dp[]));
+autoSteepestDescentMinimizer SteepestDescentMinimizer_create (long nParameters, Daata object, double (*func) (Daata object, const double p[]), void (*dfunc) (Daata object, const double p[], double dp[]));
 
 
 /**********  class VDSmagtMinimizer ********************************/
@@ -153,33 +135,31 @@ typedef struct structVDSmagtMinimizer_parameters {
 } *VDSmagtMinimizer_parameters;
 
 Thing_define (VDSmagtMinimizer, Minimizer) {
-	// new data:
-	public:
-		double (*func) (Data object, const double p[]);
-		void  (*dfunc) (Data object, const double p[], double dp[]);
-		double *dp;
-		double lineSearchGradient;
-		long lineSearchMaxNumOfIterations;
-		double gr0, gropt, df, alplim, alpha, dalpha, alphamin;
-		double *pc;	/* position of current point */
-		double *gc;	/* gradient of current point */
-		double *g0;	/* gradient at beginning of line search */
-		double *s;	/* search direction for line search */
-		double *srst;/* search direction for first iteration after restart */
-		double *grst; /* gradient for first iteration after restart */
-		double fc, grc, fch, gr2s, temp, grs, beta, gcg0;
-		double gamma, gamma_in, f0, gsq, gopt_sq;
-		long lineSearch_iteration, flag, again, one_up, restart;
-		long restart_flag;
-	// overridden methods:
-		virtual void v_destroy ();
-		virtual void v_minimize ();
-		virtual void v_reset ();
-		virtual void v_setParameters (Any parameters);
+	double (*func) (Daata object, const double p[]);
+	void  (*dfunc) (Daata object, const double p[], double dp[]);
+	double *dp;
+	double lineSearchGradient;
+	long lineSearchMaxNumOfIterations;
+	double gr0, gropt, df, alplim, alpha, dalpha, alphamin;
+	double *pc;	/* position of current point */
+	double *gc;	/* gradient of current point */
+	double *g0;	/* gradient at beginning of line search */
+	double *s;	/* search direction for line search */
+	double *srst;/* search direction for first iteration after restart */
+	double *grst; /* gradient for first iteration after restart */
+	double fc, grc, fch, gr2s, temp, grs, beta, gcg0;
+	double gamma, gamma_in, f0, gsq, gopt_sq;
+	long lineSearch_iteration, flag, again, one_up, restart;
+	long restart_flag;
+
+	void v_destroy () noexcept
+		override;
+	void v_minimize ()
+		override;
+	void v_reset ()
+		override;
 };
 
-VDSmagtMinimizer VDSmagtMinimizer_create (long dimension, Data object, double (*func)
-	(Data object, const double p[]), void (*dfunc) (Data object, const double p[],
-	double dp[]));
+autoVDSmagtMinimizer VDSmagtMinimizer_create (long dimension, Daata object, double (*func) (Daata object, const double p[]), void (*dfunc) (Daata object, const double p[], double dp[]));
 
 #endif /* _Minimizer_h_ */
diff --git a/dwtools/OptimalCeilingTier.cpp b/dwtools/OptimalCeilingTier.cpp
index 0b96e42..5ab3634 100644
--- a/dwtools/OptimalCeilingTier.cpp
+++ b/dwtools/OptimalCeilingTier.cpp
@@ -2,30 +2,29 @@
  *
  * Copyright (C) 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "OptimalCeilingTier.h"
 
 Thing_implement (OptimalCeilingTier, RealTier, 0);
 
-OptimalCeilingTier OptimalCeilingTier_create (double tmin, double tmax) {
+autoOptimalCeilingTier OptimalCeilingTier_create (double tmin, double tmax) {
 	try {
 		autoOptimalCeilingTier me = Thing_new (OptimalCeilingTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"OptimalCeilingTier not created.");
 	}
@@ -37,8 +36,9 @@ void OptimalCeilingTier_draw (OptimalCeilingTier me, Graphics g, double tmin, do
 	RealTier_draw (me, g, tmin, tmax, ymin, ymax, garnish, method, U"Sound pressure (Pa)");
 }
 
-TableOfReal OptimalCeilingTier_downto_TableOfReal (OptimalCeilingTier me) {
-	return RealTier_downto_TableOfReal (me, U"Time (s)", U"Frequency (Hz)");
+autoTableOfReal OptimalCeilingTier_downto_TableOfReal (OptimalCeilingTier me) {
+	autoTableOfReal thee = RealTier_downto_TableOfReal (me, U"Time (s)", U"Frequency (Hz)");
+	return thee;
 }
 
 /* End of file OptimalCeilingTier.cpp */
diff --git a/dwtools/OptimalCeilingTier.h b/dwtools/OptimalCeilingTier.h
index 7cb61b0..8076397 100644
--- a/dwtools/OptimalCeilingTier.h
+++ b/dwtools/OptimalCeilingTier.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "IntensityTier.h"
@@ -30,12 +29,12 @@ Thing_define (OptimalCeilingTier, RealTier) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-OptimalCeilingTier OptimalCeilingTier_create (double tmin, double tmax);
+autoOptimalCeilingTier OptimalCeilingTier_create (double tmin, double tmax);
 
 void OptimalCeilingTier_draw (OptimalCeilingTier me, Graphics g, double tmin, double tmax,
 	double ymin, double ymax, const char32 *method, int garnish);
 
-TableOfReal OptimalCeilingTier_downto_TableOfReal (OptimalCeilingTier me);
+autoTableOfReal OptimalCeilingTier_downto_TableOfReal (OptimalCeilingTier me);
 
 /* End of file OptimalCeilingTier.h */
 #endif
diff --git a/dwtools/OptimalCeilingTierEditor.cpp b/dwtools/OptimalCeilingTierEditor.cpp
index 843776f..04418f7 100644
--- a/dwtools/OptimalCeilingTierEditor.cpp
+++ b/dwtools/OptimalCeilingTierEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "OptimalCeilingTierEditor.h"
@@ -22,7 +21,7 @@
 
 Thing_implement (OptimalCeilingTierEditor, RealTierEditor, 0);
 
-static void menu_cb_OptimalCeilingTierHelp (EDITOR_ARGS) { EDITOR_IAM (OptimalCeilingTierEditor); Melder_help (U"OptimalCeilingTier"); }
+static void menu_cb_OptimalCeilingTierHelp (OptimalCeilingTierEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"OptimalCeilingTier"); }
 
 void structOptimalCeilingTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	OptimalCeilingTierEditor_Parent :: v_createHelpMenuItems (menu);
@@ -33,15 +32,15 @@ void structOptimalCeilingTierEditor :: v_play (double fromTime, double toTime) {
 	if (our d_sound.data) {
 		Sound_playPart (our d_sound.data, fromTime, toTime, theFunctionEditor_playCallback, this);
 	} else {
-		//OptimalCeilingTier_playPart (data, fromTime, toTime, FALSE);
+		//OptimalCeilingTier_playPart (data, fromTime, toTime, false);
 	}
 }
 
-OptimalCeilingTierEditor OptimalCeilingTierEditor_create (const char32 *title, OptimalCeilingTier octier, Sound sound, bool ownSound) {
+autoOptimalCeilingTierEditor OptimalCeilingTierEditor_create (const char32 *title, OptimalCeilingTier octier, Sound sound, bool ownSound) {
 	try {
 		autoOptimalCeilingTierEditor me = Thing_new (OptimalCeilingTierEditor);
-		RealTierEditor_init (me.peek(), title, (RealTier) octier, sound, ownSound);
-		return me.transfer();
+		RealTierEditor_init (me.get(), title, (RealTier) octier, sound, ownSound);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"OptimalCeilingTier window not created.");
 	}
diff --git a/dwtools/OptimalCeilingTierEditor.h b/dwtools/OptimalCeilingTierEditor.h
index 85fec37..3b20836 100644
--- a/dwtools/OptimalCeilingTierEditor.h
+++ b/dwtools/OptimalCeilingTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -54,9 +53,9 @@ Thing_define (OptimalCeilingTierEditor, RealTierEditor) {
 		override { return U"Maximum frequency"; }
 };
 
-OptimalCeilingTierEditor OptimalCeilingTierEditor_create (const char32 *title,
+autoOptimalCeilingTierEditor OptimalCeilingTierEditor_create (const char32 *title,
 	OptimalCeilingTier amplitude,
-	Sound sound,   // may be NULL
+	Sound sound,   // may be null
 	bool ownSound);
 
 /* End of file OptimalCeilingTierEditor.h */
diff --git a/dwtools/PCA.cpp b/dwtools/PCA.cpp
index 289d2e0..1208dfa 100644
--- a/dwtools/PCA.cpp
+++ b/dwtools/PCA.cpp
@@ -2,21 +2,20 @@
  *
  * Principal Component Analysis
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,13 +32,14 @@
   djmw 20110304 Thing_new
 */
 
-#include "PCA.h"
+#include "Configuration.h"
+#include "Eigen_and_SSCP.h"
+#include "Eigen_and_TableOfReal.h"
+#include "Matrix_extensions.h"
 #include "NUMlapack.h"
 #include "NUM2.h"
+#include "PCA.h"
 #include "TableOfReal_extensions.h"
-#include "Eigen_and_SSCP.h"
-#include "Eigen_and_TableOfReal.h"
-#include "Configuration.h"
 
 #include "oo_DESTROY.h"
 #include "PCA_def.h"
@@ -63,19 +63,19 @@
 Thing_implement (PCA, Eigen, 0);
 
 void structPCA :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of components: ", numberOfEigenvalues);
 	MelderInfo_writeLine (U"Number of dimensions: ", dimension);
 	MelderInfo_writeLine (U"Number of observations: ", numberOfObservations);
 }
 
-PCA PCA_create (long numberOfComponents, long dimension) {
+autoPCA PCA_create (long numberOfComponents, long dimension) {
 	try {
 		autoPCA me = Thing_new (PCA);
-		Eigen_init (me.peek(), numberOfComponents, dimension);
+		Eigen_init (me.get(), numberOfComponents, dimension);
 		my labels = NUMvector<char32 *> (1, dimension);
 		my centroid = NUMvector<double> (1, dimension);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PCA not created");
 	}
@@ -89,82 +89,91 @@ long PCA_getNumberOfObservations (PCA me) {
 	return my numberOfObservations;
 }
 
-void PCA_getEqualityOfEigenvalues (PCA me, long from, long to, int conservative, double *probability, double *chisq, long *ndf) {
+void PCA_getEqualityOfEigenvalues (PCA me, long from, long to, int conservative, double *p_prob, double *p_chisq, double *p_df) {
 	double sum = 0, sumln = 0;
 
-	*probability = 1;
-	*ndf = 0;
-	*chisq = 0;
-
-	if ( (from > 0 && to == from) || to > my numberOfEigenvalues) {
-		return;
+	double prob = NUMundefined, df = NUMundefined, chisq = NUMundefined;
+	
+	if (from == 0 && to == 0) {
+		to = 1; from = my numberOfEigenvalues;
 	}
+	if (from < to && from > 0 && to <= my numberOfEigenvalues) {
+		long i;
+		for (i = from; i <= to; i++) {
+			if (my eigenvalues[i] <= 0) {
+				break;
+			}
+			sum += my eigenvalues[i];
+			sumln += log (my eigenvalues[i]);
+		}
+		if (sum == 0) {
+			return;
+		}
+		long r = i - from;
+		long n = my numberOfObservations - 1;
+		if (conservative) {
+			n -= from + (r * (2 * r + 1) + 2) / (6 * r);
+		}
 
-	if (to <= from) {
-		from = 1;
-		to = my numberOfEigenvalues;
+		df = r * (r + 1) / 2 - 1;
+		chisq = n * (r * log (sum / r) - sumln);
+		prob = NUMchiSquareQ (chisq, df);
 	}
-	long i;
-	for (i = from; i <= to; i++) {
-		if (my eigenvalues[i] <= 0) {
-			break;
-		}
-		sum += my eigenvalues[i];
-		sumln += log (my eigenvalues[i]);
+	if (p_prob) {
+		*p_prob = prob;
 	}
-	if (sum == 0) {
-		return;
+	if (p_chisq) {
+		*p_chisq = chisq;
 	}
-	long r = i - from;
-	long n = my numberOfObservations - 1;
-	if (conservative) {
-		n -= from + (r * (2 * r + 1) + 2) / (6 * r);
+	if (p_df) {
+		*p_df = df;
 	}
-
-	*ndf = r * (r + 1) / 2 - 1;
-	*chisq = n * (r * log (sum / r) - sumln);
-	*probability = NUMchiSquareQ (*chisq, *ndf);
 }
 
-PCA TableOfReal_to_PCA (I) {
-	iam (TableOfReal);
-	try {
-		long m = my numberOfRows, n = my numberOfColumns;
+/* the low level routines 
+ * 
+ * The matrix M[numberOfRows, numberOfColumns] is interpreted as 'numberOfRows' vectors of dimension 'numberOfColumns'
+ * The eigenstructure of the M'M will be calculated
+ * 
+ */
 
-		if (! TableOfReal_areAllCellsDefined (me, 0, 0, 0, 0)) {
-			Melder_throw (U"Undefined cells.");
+static autoPCA NUMdmatrix_to_PCA (double **m, long numberOfRows, long numberOfColumns, bool byColumns) {
+	try {
+		if (! NUMdmatrix_hasFiniteElements(m, 1, numberOfRows, 1, numberOfColumns)) {
+			Melder_throw (U"At least one of the matrix elements is not finite or undefined.");
 		}
-
-		if (m < 2) Melder_throw (U"There is not enough data to perform a PCA.\n"
-			                         "Your table has less than 2 rows.");
-
-		if (m < n) Melder_warning (U"The number of rows in your table is less than the\n"
-			                           "number of columns. ");
-
-		if (NUMfrobeniusnorm (m, n, my data) == 0) {
+		if (NUMfrobeniusnorm (numberOfRows, numberOfColumns, m) == 0.0) {
 			Melder_throw (U"All values in your table are zero.");
 		}
-		autoPCA thee = Thing_new (PCA);
-		autoNUMmatrix<double> a (NUMmatrix_copy (my data, 1, m, 1, n), 1, 1);
-		thy centroid = NUMvector<double> (1, n);
-
-		for (long j = 1; j <= n; j++) {
-			double colmean = a[1][j];
-			for (long i = 2; i <= m; i++) {
-				colmean += a[i][j];
+		autoNUMmatrix<double> mcopy;
+		long numberOfRows2, numberOfColumns2;
+		if (byColumns) {
+			if (numberOfColumns < numberOfRows) {
+				Melder_warning (U"The number of columns in your table is less than the number of rows. ");
 			}
-			colmean /= m;
-			for (long i = 1; i <= m; i++) {
-				a[i][j] -= colmean;
+			numberOfRows2 = numberOfColumns, numberOfColumns2 = numberOfRows;
+			mcopy.reset (1, numberOfRows2, 1, numberOfColumns2);
+			for (long i = 1; i <= numberOfRows2; i ++) { // transpose
+				for (long j = 1; j <= numberOfColumns2; j++) {
+					mcopy [i] [j] = m [j] [i];
+				}
+			}
+		} else {
+			if (numberOfRows < numberOfColumns) {
+				Melder_warning (U"The number of rows in your table is less than the number of columns. ");
 			}
-			thy centroid[j] = colmean;
+			numberOfRows2 = numberOfRows, numberOfColumns2 = numberOfColumns;
+			mcopy.reset (1, numberOfRows2, 1, numberOfColumns2);
+			NUMmatrix_copyElements<double>(m, mcopy.peek(), 1, numberOfRows2, 1, numberOfColumns2);
 		}
-		Eigen_initFromSquareRoot (thee.peek(), a.peek(), m, n);
-		thy labels = NUMvector<char32 *> (1, n);
-
-		NUMstrings_copyElements (my columnLabels, thy labels, 1, n);
+		
+		autoPCA thee = Thing_new (PCA);
+		thy centroid = NUMvector<double> (1, numberOfColumns2);
+		NUMcentreColumns (mcopy.peek(), 1, numberOfRows2, 1, numberOfColumns2, thy centroid);
+		Eigen_initFromSquareRoot (thee.get(), mcopy.peek(), numberOfRows2, numberOfColumns2);
+		thy labels = NUMvector<char32 *> (1, numberOfColumns2);
 
-		PCA_setNumberOfObservations (thee.peek(), m);
+		PCA_setNumberOfObservations (thee.get(), numberOfRows2);
 
 		/*
 			The covariance matrix C = A'A / (N-1). However, we have calculated
@@ -173,15 +182,43 @@ PCA TableOfReal_to_PCA (I) {
 		*/
 
 		for (long i = 1; i <= thy numberOfEigenvalues; i++) {
-			thy eigenvalues[i] /= (m - 1);
+			thy eigenvalues [i] /= (numberOfRows2 - 1);
 		}
-		return thee.transfer();
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (U"No PCA created from ", byColumns ? U"columns." : U"rows.");
+	}	
+}
+
+autoPCA TableOfReal_to_PCA_byRows (TableOfReal me) {
+	try {
+		autoPCA thee = NUMdmatrix_to_PCA (my data, my numberOfRows, my numberOfColumns, false);
+		NUMstrings_copyElements (my columnLabels, thy labels, 1, my numberOfColumns);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": PCA not created.");
 	}
 }
 
-TableOfReal PCA_and_TableOfReal_to_TableOfReal_zscores (PCA me, TableOfReal thee, long numberOfDimensions) {
+autoPCA Matrix_to_PCA_byColumns (Matrix me) {
+	try {
+		autoPCA thee = NUMdmatrix_to_PCA (my z, my ny, my nx, true);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": no PCA created from columns.");
+	}
+}
+
+autoPCA Matrix_to_PCA_byRows (Matrix me) {
+	try {
+		autoPCA thee = NUMdmatrix_to_PCA (my z, my ny, my nx, false);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": no PCA created from rows.");
+	}
+}
+
+autoTableOfReal PCA_and_TableOfReal_to_TableOfReal_zscores (PCA me, TableOfReal thee, long numberOfDimensions) {
 	try {
 		if (numberOfDimensions == 0 || numberOfDimensions > my numberOfEigenvalues) {
 			numberOfDimensions = my numberOfEigenvalues;
@@ -198,35 +235,46 @@ TableOfReal PCA_and_TableOfReal_to_TableOfReal_zscores (PCA me, TableOfReal thee
 			}
 		}
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, thy numberOfRows);
-		TableOfReal_setSequentialColumnLabels (him.peek(), 0, 0, U"pc", 1, 1);
-		return him.transfer();
-
+		TableOfReal_setSequentialColumnLabels (him.get(), 0, 0, U"pc", 1, 1);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal (zscores) not created from PCA & TableOfReal.");
 	}
 }
 
-Configuration PCA_and_TableOfReal_to_Configuration (PCA me, thou, long numberOfDimensions) {
+autoTableOfReal PCA_and_TableOfReal_to_TableOfReal_projectRows (PCA me, TableOfReal thee, long numberOfDimensionsToKeep) {
 	try {
-		thouart (TableOfReal);
-		if (numberOfDimensions == 0 || numberOfDimensions > my numberOfEigenvalues) {
-			numberOfDimensions = my numberOfEigenvalues;
+		if (numberOfDimensionsToKeep == 0 || numberOfDimensionsToKeep > my numberOfEigenvalues) {
+			numberOfDimensionsToKeep = my numberOfEigenvalues;
 		}
 
-		autoConfiguration him = Configuration_create (thy numberOfRows, numberOfDimensions);
-		Configuration thim = him.peek();
-		Eigen_and_TableOfReal_project_into (me, thee, 1, thy numberOfColumns, & thim, 1, numberOfDimensions);
+		autoTableOfReal him = TableOfReal_create (thy numberOfRows, numberOfDimensionsToKeep);
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (me, thee, 1, him.get(), 1, numberOfDimensionsToKeep);
 		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, thy numberOfRows);
-		TableOfReal_setSequentialColumnLabels (him.peek(), 0, 0, U"pc", 1, 1);
-		return him.transfer();
+		TableOfReal_setSequentialColumnLabels (him.get(), 0, 0, U"pc", 1, 1);
+		return him;
+	} catch (MelderError) {
+		Melder_throw (U"TableOfReal not created from PCA & TableOfReal.");
+	}
+}
+
+autoConfiguration PCA_and_TableOfReal_to_Configuration (PCA me, TableOfReal thee, long numberOfDimensionsToKeep) {
+	try {
+		if (numberOfDimensionsToKeep == 0 || numberOfDimensionsToKeep > my numberOfEigenvalues) {
+			numberOfDimensionsToKeep = my numberOfEigenvalues;
+		}
+		autoConfiguration him = Configuration_create (thy numberOfRows, numberOfDimensionsToKeep);
+		Eigen_and_TableOfReal_into_TableOfReal_projectRows (me, thee, 1, him.get(), 1, numberOfDimensionsToKeep);
+		NUMstrings_copyElements (thy rowLabels, his rowLabels, 1, thy numberOfRows);
+		TableOfReal_setSequentialColumnLabels (him.get(), 0, 0, U"pc", 1, 1);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Configuration not created from PCA & TableOfReal.");
 	}
 }
 
-TableOfReal PCA_and_Configuration_to_TableOfReal_reconstruct (PCA me, thou) {
+autoTableOfReal PCA_and_Configuration_to_TableOfReal_reconstruct (PCA me, Configuration thee) {
 	try {
-		thouart (Configuration);
 		long npc = thy numberOfColumns;
 
 		if (thy numberOfColumns > my dimension) {
@@ -250,15 +298,14 @@ TableOfReal PCA_and_Configuration_to_TableOfReal_reconstruct (PCA me, thou) {
 				}
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not reconstructed.");
 	}
 }
 
-double PCA_and_TableOfReal_getFractionVariance (PCA me, thou, long from, long to) {
+double PCA_and_TableOfReal_getFractionVariance (PCA me, TableOfReal thee, long from, long to) {
 	try {
-		thouart (TableOfReal);
 		double fraction = NUMundefined;
 
 		if (from < 1 || from > to || to > thy numberOfColumns) {
@@ -266,15 +313,15 @@ double PCA_and_TableOfReal_getFractionVariance (PCA me, thou, long from, long to
 		}
 
 		autoSSCP s = TableOfReal_to_SSCP (thee, 0, 0, 0, 0);
-		autoSSCP sp = Eigen_and_SSCP_project (me, s.peek());
-		fraction = SSCP_getFractionVariation (sp.peek(), from, to);
+		autoSSCP sp = Eigen_and_SSCP_project (me, s.get());
+		fraction = SSCP_getFractionVariation (sp.get(), from, to);
 		return fraction;
 	} catch (MelderError) {
 		return NUMundefined;
 	}
 }
 
-TableOfReal PCA_to_TableOfReal_reconstruct1 (PCA me, char32 *numstring) {
+autoTableOfReal PCA_to_TableOfReal_reconstruct1 (PCA me, char32 *numstring) {
 	try {
 		long npc;
 		autoNUMvector<double> pc (NUMstring_to_numbers (numstring, & npc), 1);
@@ -283,12 +330,11 @@ TableOfReal PCA_to_TableOfReal_reconstruct1 (PCA me, char32 *numstring) {
 		for (long j = 1; j <= npc; j++) {
 			c -> data [1][j] = pc[j];
 		}
-		autoTableOfReal him = PCA_and_Configuration_to_TableOfReal_reconstruct (me, c.peek());
-		return him.transfer();
+		autoTableOfReal him = PCA_and_Configuration_to_TableOfReal_reconstruct (me, c.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" not reconstructed.");
 	}
 }
 
-
 /* End of file PCA.cpp */
diff --git a/dwtools/PCA.h b/dwtools/PCA.h
index e197162..b3aede7 100644
--- a/dwtools/PCA.h
+++ b/dwtools/PCA.h
@@ -4,21 +4,20 @@
  *
  * Principal Component Analysis
  * 
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,38 +26,45 @@
 */
 
 
+#include "Matrix.h"
 #include "TableOfReal.h"
 #include "Configuration.h"
 #include "Eigen.h"
 
 #include "PCA_def.h"
-oo_CLASS_CREATE (PCA, Eigen);
 
-PCA PCA_create (long numberOfComponents, long dimension);
+autoPCA PCA_create (long numberOfComponents, long dimension);
 
 void PCA_setNumberOfObservations (PCA me, long numberOfObservations);
+
 long PCA_getNumberOfObservations (PCA me);
 
-PCA TableOfReal_to_PCA (I);
+autoPCA TableOfReal_to_PCA_byRows (TableOfReal me);
+
 /* Calculate PCA of M'M */
 
-void PCA_getEqualityOfEigenvalues (PCA me, long from, long to, int conservative,
-	double *probability, double *chisq, long *ndf);
+autoPCA Matrix_to_PCA_byRows (Matrix me);
+autoPCA Matrix_to_PCA_byColumns (Matrix me);
+/* Calculate PCA of M'M */
+
+void PCA_getEqualityOfEigenvalues (PCA me, long from, long to, int conservative, double *prob, double *chisq, double *df);
 /* Morrison, Multivariate statistical methods, page 336 */
 
-Configuration PCA_and_TableOfReal_to_Configuration (PCA me, thou, long numberOfDimensions);
-TableOfReal PCA_and_TableOfReal_to_TableOfReal_zscores (PCA me, TableOfReal thee, long numberOfDimensions);
+autoTableOfReal PCA_and_TableOfReal_to_TableOfReal_projectRows (PCA me, TableOfReal thee, long numberOfDimensionsToKeep);
+autoConfiguration PCA_and_TableOfReal_to_Configuration (PCA me, TableOfReal thee, long numberOfDimensions);
+
+autoTableOfReal PCA_and_TableOfReal_to_TableOfReal_zscores (PCA me, TableOfReal thee, long numberOfDimensions);
 
-double PCA_and_TableOfReal_getFractionVariance (PCA me, thou, long from, long to);
+double PCA_and_TableOfReal_getFractionVariance (PCA me, TableOfReal thee, long from, long to);
 /*	Get fraction variance of the table projected in the pca-space.
 	Shorthand for projecting the Covariance of the TableOfReal on the PCA-space
 	and quering the projected Covariance for 'fraction variance'.
 */
 
-TableOfReal PCA_and_Configuration_to_TableOfReal_reconstruct (PCA me, thou);
+autoTableOfReal PCA_and_Configuration_to_TableOfReal_reconstruct (PCA me, Configuration thee);
 /* Reconstruct the original TableOfReal from the PCA and the Configuration */
 
-TableOfReal PCA_to_TableOfReal_reconstruct1 (PCA me, char32 *numstring);
+autoTableOfReal PCA_to_TableOfReal_reconstruct1 (PCA me, char32 *numstring);
 
 #endif /* _PCA_h_ */
 
diff --git a/dwtools/PCA_def.h b/dwtools/PCA_def.h
index 055ab5e..c6056d3 100644
--- a/dwtools/PCA_def.h
+++ b/dwtools/PCA_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2002 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/Pattern.cpp b/dwtools/Pattern.cpp
index b5ffb6d..af85873 100644
--- a/dwtools/Pattern.cpp
+++ b/dwtools/Pattern.cpp
@@ -1,20 +1,19 @@
 /* Pattern.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -45,11 +44,11 @@ void Pattern_init (Pattern me, long ny, long nx) {
 	Matrix_init (me, 1, nx, nx, 1, 1, 1, ny, ny, 1, 1);
 }
 
-Pattern Pattern_create (long ny, long nx) {
+autoPattern Pattern_create (long ny, long nx) {
 	try {
 		autoPattern me = Thing_new (Pattern);
-		Pattern_init (me.peek(), ny, nx);
-		return me.transfer();
+		Pattern_init (me.get(), ny, nx);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Pattern not created.");
 	}
@@ -86,12 +85,12 @@ void Pattern_draw (Pattern me, Graphics g, long pattern, double xmin, double xma
 	Matrix_drawRows (me, g, xmin, xmax, pattern - 0.5, pattern + 0.5, ymin, ymax);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-Pattern Matrix_to_Pattern (Matrix me, int join) {
+autoPattern Matrix_to_Pattern (Matrix me, int join) {
 	try {
 		if (join < 1) {
 			join = 1;
@@ -112,17 +111,17 @@ Pattern Matrix_to_Pattern (Matrix me, int join) {
 				thy z[r][c++] = my z[i][j];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no Pattern created.");
+		Melder_throw (me, U": not converted to Pattern.");
 	}
 }
 
-Matrix Pattern_to_Matrix (Pattern me) {
+autoMatrix Pattern_to_Matrix (Pattern me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/dwtools/Pattern.h b/dwtools/Pattern.h
index d0c799c..1b226c8 100644
--- a/dwtools/Pattern.h
+++ b/dwtools/Pattern.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
@@ -39,7 +38,7 @@ Thing_define (Pattern, Matrix) {
 
 void Pattern_init (Pattern me, long ny, long nx);
 
-Pattern Pattern_create (long ny, long nx);
+autoPattern Pattern_create (long ny, long nx);
 
 void Pattern_normalize (Pattern me, int choice, double pmin, double pmax);
 /* choice == 1: z[i][j] = (z[i][j]-pmin) / (pmax-pmin);
@@ -49,8 +48,9 @@ void Pattern_normalize (Pattern me, int choice, double pmin, double pmax);
 void Pattern_draw (Pattern me, Graphics g, long pattern, double xmin, double xmax,
 	double ymin, double ymax, int garnish);
 
-Pattern Matrix_to_Pattern (Matrix me, int join);
-Matrix Pattern_to_Matrix (Pattern me);
+autoPattern Matrix_to_Pattern (Matrix me, int join);
+
+autoMatrix Pattern_to_Matrix (Pattern me);
 
 int _Pattern_checkElements (Pattern me);
 /* Return 1 if all elements are in interval [0,1] else 0. */
diff --git a/dwtools/Pitch_extensions.cpp b/dwtools/Pitch_extensions.cpp
index 04dbb48..d803a45 100644
--- a/dwtools/Pitch_extensions.cpp
+++ b/dwtools/Pitch_extensions.cpp
@@ -1,20 +1,19 @@
 /* Pitch_extensions.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,39 +27,45 @@
 
 void Pitch_Frame_addPitch (Pitch_Frame me, double f, double strength, int maxnCandidates) {
 	long pos = 0;
-	double weakest = 1e38;
+	double weakest = 1e308;
 	if (my nCandidates < maxnCandidates) {
 		pos = ++ my nCandidates;
 	} else {
-		/* Find weakest candidate so far (skip the unvoiced one) */
-		for (long i = 1; i <= maxnCandidates; i++) if (my candidate[i].strength < weakest &&
-			        my candidate[i].frequency > 0) {
+		// Find weakest candidate so far (skip the unvoiced one)
+		for (long i = 1; i <= maxnCandidates; i++) {
+			if (my candidate[i].strength < weakest && my candidate[i].frequency > 0) {
 				weakest = my candidate[i].strength;
 				pos = i;
 			}
+		}
 		if (strength < weakest) {
 			pos = 0;
 		}
 	}
-	if (pos) {
+	if (pos > 0) {
 		my candidate[pos].frequency = f;
 		my candidate[pos].strength = strength;
 	}
 }
 
-void Pitch_Frame_getPitch (Pitch_Frame me, double *f, double *strength) {
+void Pitch_Frame_getPitch (Pitch_Frame me, double *f, double *p_strength) {
 	long pos = 1;
-	*strength = -1;
-	for (long i = 1; i <= my nCandidates; i++) if (my candidate[i].strength > *strength &&
-		        my candidate[i].frequency > 0) {
-			*strength = my candidate[i].strength;
+	double strength = -1.0;
+	for (long i = 1; i <= my nCandidates; i++) {
+		if (my candidate[i].strength > strength && my candidate[i].frequency > 0) {
+			strength = my candidate[i].strength;
 			pos = i;
 		}
-	*f = my candidate[pos].frequency;
+	}
+	if (f) {
+		*f = my candidate[pos].frequency;
+	}
+	if (p_strength) {
+		*p_strength = strength;
+	}
 }
 
-void Pitch_Frame_resizeStrengths (Pitch_Frame me, double maxStrength,
-                                  double unvoicedCriterium) {
+void Pitch_Frame_resizeStrengths (Pitch_Frame me, double maxStrength, double unvoicedCriterium) {
 	int pos = 1;
 	double strongest = my candidate[1].strength;
 	for (long i = 2; i <= my nCandidates; i++) {
@@ -75,11 +80,12 @@ void Pitch_Frame_resizeStrengths (Pitch_Frame me, double maxStrength,
 		}
 	}
 	if (maxStrength < unvoicedCriterium) {
-		for (long i = 1; i <= my nCandidates; i++)
+		for (long i = 1; i <= my nCandidates; i++) {
 			if (my candidate[i].frequency == 0) {
 				pos = i;
 				break;
 			}
+		}
 	}
 	if (pos != 1) {
 		double tmp = my candidate[1].frequency;
@@ -91,7 +97,7 @@ void Pitch_Frame_resizeStrengths (Pitch_Frame me, double maxStrength,
 	}
 }
 
-Pitch Pitch_scaleTime (Pitch me, double scaleFactor) {
+autoPitch Pitch_scaleTime (Pitch me, double scaleFactor) {
 	try {
 		double dx = my dx, x1 = my x1, xmax = my xmax;
 		if (scaleFactor != 1) {
@@ -108,7 +114,7 @@ Pitch Pitch_scaleTime (Pitch me, double scaleFactor) {
 				thy frame[i].candidate[1].frequency = f;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not scaled.");
 	}
@@ -116,33 +122,30 @@ Pitch Pitch_scaleTime (Pitch me, double scaleFactor) {
 
 static double HertzToSpecial (double value, int pitchUnit) {
 	return	pitchUnit == kPitch_unit_HERTZ ? value :
-	        pitchUnit == kPitch_unit_HERTZ_LOGARITHMIC ? value <= 0.0 ? NUMundefined : log10 (value) :
-		        pitchUnit == kPitch_unit_MEL ? NUMhertzToMel (value) :
-		        pitchUnit == kPitch_unit_LOG_HERTZ ? value <= 0.0 ? NUMundefined : log10 (value) :
-		        pitchUnit == kPitch_unit_SEMITONES_1 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 1.0) / NUMln2 :
-		        pitchUnit == kPitch_unit_SEMITONES_100 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 100.0) / NUMln2 :
-		        pitchUnit == kPitch_unit_SEMITONES_200 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 200.0) / NUMln2 :
-		        pitchUnit == kPitch_unit_SEMITONES_440 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 440.0) / NUMln2 :
-		        pitchUnit == kPitch_unit_ERB ? NUMhertzToErb (value) :
-		        NUMundefined;
+		pitchUnit == kPitch_unit_HERTZ_LOGARITHMIC ? value <= 0.0 ? NUMundefined : log10 (value) :
+		pitchUnit == kPitch_unit_MEL ? NUMhertzToMel (value) :
+		pitchUnit == kPitch_unit_LOG_HERTZ ? value <= 0.0 ? NUMundefined : log10 (value) :
+		pitchUnit == kPitch_unit_SEMITONES_1 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 1.0) / NUMln2 :
+		pitchUnit == kPitch_unit_SEMITONES_100 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 100.0) / NUMln2 :
+		pitchUnit == kPitch_unit_SEMITONES_200 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 200.0) / NUMln2 :
+		pitchUnit == kPitch_unit_SEMITONES_440 ? value <= 0.0 ? NUMundefined : 12.0 * log (value / 440.0) / NUMln2 :
+		pitchUnit == kPitch_unit_ERB ? NUMhertzToErb (value) : NUMundefined;
 }
 
 static double SpecialToHertz (double value, int pitchUnit) {
 	return	pitchUnit == kPitch_unit_HERTZ ? value :
-	        pitchUnit == kPitch_unit_HERTZ_LOGARITHMIC ? pow (10.0, value) :
-	        pitchUnit == kPitch_unit_MEL ? NUMmelToHertz (value) :
-	        pitchUnit == kPitch_unit_LOG_HERTZ ? pow (10.0, value) :
-	        pitchUnit == kPitch_unit_SEMITONES_1 ? 1.0 * exp (value * (NUMln2 / 12.0)) :
-	        pitchUnit == kPitch_unit_SEMITONES_100 ? 100.0 * exp (value * (NUMln2 / 12.0)) :
-	        pitchUnit == kPitch_unit_SEMITONES_200 ? 200.0 * exp (value * (NUMln2 / 12.0)) :
-	        pitchUnit == kPitch_unit_SEMITONES_440 ? 440.0 * exp (value * (NUMln2 / 12.0)) :
-	        pitchUnit == kPitch_unit_ERB ? NUMerbToHertz (value) : NUMundefined;
+		pitchUnit == kPitch_unit_HERTZ_LOGARITHMIC ? pow (10.0, value) :
+		pitchUnit == kPitch_unit_MEL ? NUMmelToHertz (value) :
+		pitchUnit == kPitch_unit_LOG_HERTZ ? pow (10.0, value) :
+		pitchUnit == kPitch_unit_SEMITONES_1 ? 1.0 * exp (value * (NUMln2 / 12.0)) :
+		pitchUnit == kPitch_unit_SEMITONES_100 ? 100.0 * exp (value * (NUMln2 / 12.0)) :
+		pitchUnit == kPitch_unit_SEMITONES_200 ? 200.0 * exp (value * (NUMln2 / 12.0)) :
+		pitchUnit == kPitch_unit_SEMITONES_440 ? 440.0 * exp (value * (NUMln2 / 12.0)) :
+		pitchUnit == kPitch_unit_ERB ? NUMerbToHertz (value) : NUMundefined;
 }
 
-PitchTier PitchTier_normalizePitchRange (PitchTier me, double pitchMin_ref_Hz, double pitchMax_ref_Hz,
-        double pitchMin_Hz, double pitchMax_Hz, int pitchUnit);
-PitchTier PitchTier_normalizePitchRange (PitchTier me, double pitchMin_ref_Hz, double pitchMax_ref_Hz,
-        double pitchMin_Hz, double pitchMax_Hz, int pitchUnit) {
+autoPitchTier PitchTier_normalizePitchRange (PitchTier me, double pitchMin_ref_Hz, double pitchMax_ref_Hz, double pitchMin_Hz, double pitchMax_Hz, int pitchUnit);
+autoPitchTier PitchTier_normalizePitchRange (PitchTier me, double pitchMin_ref_Hz, double pitchMax_ref_Hz, double pitchMin_Hz, double pitchMax_Hz, int pitchUnit) {
 	try {
 		double fminr = HertzToSpecial (pitchMin_ref_Hz, pitchUnit);
 		double fmaxr = HertzToSpecial (pitchMax_ref_Hz, pitchUnit);
@@ -159,29 +162,29 @@ PitchTier PitchTier_normalizePitchRange (PitchTier me, double pitchMin_ref_Hz, d
 		double fmidr = fminr + ranger / 2;
 		double factor = ranger / range;
 		autoPitchTier thee = Data_copy (me);
-		for (long i = 1; i <= my points -> size; i ++) {
-			RealPoint point = (RealPoint) thy points -> item [i];
+		for (long i = 1; i <= my points.size; i ++) {
+			RealPoint point = thy points.at [i];
 			double f = HertzToSpecial (point -> value, pitchUnit);
 			f = factor * (f - fmidr);
 			f = SpecialToHertz (f, pitchUnit);
 			point -> value = f;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PitchTier created.");
 	}
 }
 
-Pitch PitchTier_to_Pitch (PitchTier me, double dt, double pitchFloor, double pitchCeiling) {
+autoPitch PitchTier_to_Pitch (PitchTier me, double dt, double pitchFloor, double pitchCeiling) {
 	try {
-		if (my points -> size < 1) {
+		if (my points.size < 1) {
 			Melder_throw (U"The PitchTier is empty.");
 		}
 		if (dt <= 0) {
 			Melder_throw (U"The time step should be a positive number.");
 		}
 		if (pitchFloor >= pitchCeiling) {
-			Melder_throw (U"The pitch ceiling must be a higher number than the pitch floor.");
+			Melder_throw (U"The pitch ceiling must be larger than the pitch floor.");
 		}
 		double tmin = my xmin, tmax = my xmax, t1 = my xmin + dt / 2;
 		long nt = (long) floor ((tmax - tmin - t1) / dt);
@@ -202,7 +205,7 @@ Pitch PitchTier_to_Pitch (PitchTier me, double dt, double pitchFloor, double pit
 			}
 			candidate -> frequency = f;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Pitch created.");
 	}
diff --git a/dwtools/Pitch_extensions.h b/dwtools/Pitch_extensions.h
index e466cd2..92d0b2f 100644
--- a/dwtools/Pitch_extensions.h
+++ b/dwtools/Pitch_extensions.h
@@ -2,21 +2,20 @@
 #define _Pitch_extensions_h_
 /* Pitch_extensions.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,16 +28,18 @@
 #include "PitchTier.h"
 
 void Pitch_Frame_addPitch (Pitch_Frame me, double f, double strength, int maxnCandidates);
+
 void Pitch_Frame_getPitch (Pitch_Frame me, double *f, double *strength);
+
 void Pitch_Frame_resizeStrengths (Pitch_Frame me, double maxStrength, double unvoicedCriterium);
 	
-Pitch Pitch_scaleTime (Pitch me, double scaleFactor);
+autoPitch Pitch_scaleTime (Pitch me, double scaleFactor);
 /*  Scale time domain and pitches:
 	xmin' = xmin; dx' = dx * scaleFactor; x1' = xmin + 0.5 * dx'; 
 	xmax' = xmin + nx * dx';
 	pitch[i]' = pitch[i]/scaleFactor;
 */
 
-Pitch PitchTier_to_Pitch (PitchTier me, double dt, double pitchFloor, double pitchCeiling);
+autoPitch PitchTier_to_Pitch (PitchTier me, double dt, double pitchFloor, double pitchCeiling);
 
 #endif /* _Pitch_extensions_h_ */
diff --git a/dwtools/Polygon_extensions.cpp b/dwtools/Polygon_extensions.cpp
index 304802a..0db8752 100644
--- a/dwtools/Polygon_extensions.cpp
+++ b/dwtools/Polygon_extensions.cpp
@@ -1,20 +1,19 @@
 /* Polygon_extensions.c
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@
 #include "NUM2.h"
 #include "Polygon_extensions.h"
 #include "Vector.h"
-#include "DLL.h"
+#include "DoublyLinkedList.h"
 
 // not for self-intesecting polygons!
 static double Polygon_area (Polygon me) {
@@ -42,23 +41,36 @@ static double Polygon_area (Polygon me) {
 	return fabs (area); // area my have negative sign in counter clockwise evaluation of area
 }
 
-void Polygon_getExtrema (Polygon me, double *xmin, double *xmax, double *ymin, double *ymax) {
-    *xmin = my x[1]; *xmax = my x[1];
-    *ymin = my y[1]; *ymax = my y[1];
+void Polygon_getExtrema (Polygon me, double *p_xmin, double *p_xmax, double *p_ymin, double *p_ymax) {
+    double xmin = my x[1], xmax = my x[1];
+    double ymin = my y[1], ymax = my y[1];
     for (long i = 2; i <= my numberOfPoints; i++) {
-        if (my x[i] < *xmin) {
-            *xmin = my x[i];
-        } else if (my x[i] > *xmax) {
-            *xmax = my x[i];
+        if (my x[i] < xmin) {
+            xmin = my x[i];
+        } else if (my x[i] > xmax) {
+            xmax = my x[i];
         }
-        if (my y[i] < *ymin) {
-            *ymin = my y[i];
-        } else if (my y[i] > *ymax) {
-            *ymax = my y[i];
+        if (my y[i] < ymin) {
+            ymin = my y[i];
+        } else if (my y[i] > ymax) {
+            ymax = my y[i];
         }
     }
+    if (p_xmin) {
+		*p_xmin = xmin;
+	}
+    if (p_xmax) {
+		*p_xmax = xmax;
+	}
+    if (p_ymin) {
+		*p_ymin = ymin;
+	}
+    if (p_ymax) {
+		*p_ymax = ymax;
+	}
 }
-Polygon Polygon_createSimple (char32 *xystring) {
+
+autoPolygon Polygon_createSimple (char32 *xystring) {
 	try {
 		long numberOfPoints;
 		autoNUMvector<double> xys (NUMstring_to_numbers (xystring, &numberOfPoints), 1);
@@ -77,20 +89,20 @@ Polygon Polygon_createSimple (char32 *xystring) {
 				Melder_warning (U"Two successives vertices are equal.");
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polygon not created.");
 	}
 }
 
-Polygon Polygon_createFromRandomVertices (long numberOfVertices, double xmin, double xmax, double ymin, double ymax) {
+autoPolygon Polygon_createFromRandomVertices (long numberOfVertices, double xmin, double xmax, double ymin, double ymax) {
 	try {
 		autoPolygon me = Polygon_create (numberOfVertices);
 		for (long i = 1; i <= numberOfVertices; i++) {
 			my x[i] = NUMrandomUniform (xmin, xmax);
 			my y[i] = NUMrandomUniform (ymin, ymax);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polygon not created.");
 	}
@@ -127,19 +139,15 @@ void Polygon_reverseX (Polygon me) {
 	for (long i = 1; i <= my numberOfPoints; i++) {
 		my x[i] = -my x[i];
 	}
-
 }
 
 void Polygon_reverseY (Polygon me) {
 	for (long i = 1; i <= my numberOfPoints; i++) {
 		my y[i] = -my y[i];
 	}
-
 }
 
-void Polygon_Categories_draw (Polygon me, thou, Graphics graphics, double xmin, double xmax,
-                              double ymin, double ymax, int garnish) {
-	thouart (Categories);
+void Polygon_Categories_draw (Polygon me, Categories thee, Graphics graphics, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	double min, max, tmp;
 
 	if (my numberOfPoints != thy size) {
@@ -168,19 +176,18 @@ void Polygon_Categories_draw (Polygon me, thou, Graphics graphics, double xmin,
 	Graphics_unsetInner (graphics);
 	if (garnish) {
 		Graphics_drawInnerBox (graphics);
-		Graphics_marksLeft (graphics, 2, 1, 1, 0);
+		Graphics_marksLeft (graphics, 2, true, true, false);
 		if (ymin * ymax < 0.0) {
-			Graphics_markLeft (graphics, 0.0, 1, 1, 1, NULL);
+			Graphics_markLeft (graphics, 0.0, true, true, true, nullptr);
 		}
-		Graphics_marksBottom (graphics, 2, 1, 1, 0);
+		Graphics_marksBottom (graphics, 2, true, true, false);
 		if (xmin * xmax < 0.0) {
-			Graphics_markBottom (graphics, 0.0, 1, 1, 1, NULL);
+			Graphics_markBottom (graphics, 0.0, true, true, true, nullptr);
 		}
 	}
 }
 
-static void setWindow (Polygon me, Graphics graphics,
-                       double xmin, double xmax, double ymin, double ymax) {
+static void setWindow (Polygon me, Graphics graphics, double xmin, double xmax, double ymin, double ymax) {
 	Melder_assert (me);
 
 	if (xmax <= xmin) { /* Autoscaling along x axis. */
@@ -216,8 +223,7 @@ static void setWindow (Polygon me, Graphics graphics,
 	Graphics_setWindow (graphics, xmin, xmax, ymin, ymax);
 }
 
-void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax,
-                        double ymin, double ymax, double size_mm, const char32 *mark) {
+void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark) {
 	Graphics_setInner (g);
 	setWindow (me, g, xmin, xmax, ymin, ymax);
 	for (long i = 1; i <= my numberOfPoints; i++) {
@@ -228,7 +234,7 @@ void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax,
 
 #define CLIP_Y(y,ymin,ymax) (clip ? ((y) > (ymax) ? (ymax) : (y) < (ymin) ? (ymin) : (y)) : y)
 
-Polygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, double ymin, double ymax, double level) {
+autoPolygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, double ymin, double ymax, double level) {
 	try {
 		bool clip = ymin < ymax;
 		if (channel < 1 || channel > my ny) {
@@ -282,7 +288,7 @@ Polygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, doubl
 		his y[k++] = CLIP_Y (y, ymin, ymax);
 		his x[k] = tmax;
 		his y[k++] = CLIP_Y (level, ymin, ymax);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U":no Polygon created.");
 	}
@@ -290,7 +296,7 @@ Polygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, doubl
 
 /* Area inbetween */
 
-Polygon Sounds_to_Polygon_enclosed (Sound me, Sound thee, int channel, double tmin, double tmax, double ymin, double ymax) {
+autoPolygon Sounds_to_Polygon_enclosed (Sound me, Sound thee, int channel, double tmin, double tmax, double ymin, double ymax) {
 	try {
 		bool clip = ymin < ymax;
 		if (my ny > 1 && thy ny > 1 && my ny != thy ny) {
@@ -377,7 +383,7 @@ Polygon Sounds_to_Polygon_enclosed (Sound me, Sound thee, int channel, double tm
 		his y[k] = y;
 
 		Melder_assert (k == numberOfPoints);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no enclosed Polygon created.");
 	}
@@ -500,25 +506,25 @@ static int LineSegments_getIntersection (double x1, double y1, double x2, double
 	if (fabs (bd) > eps) {
 		*mua = cad / bd;
 		*mub = cab / bd;
-		if (*mua <= eps or * mua > 1 + eps or * mub < eps or * mub > 1 + eps) {
+		if (*mua <= eps || *mua > 1.0 + eps || *mub < eps || *mub > 1.0 + eps) {
 			return INTERSECTION_OUTSIDE;
 		}
-		if (*mua > eps and *mua <= 1 - eps and *mub >= eps and * mub < 1 - eps) {
+		if (*mua > eps && *mua <= 1.0 - eps && *mub >= eps && *mub < 1.0 - eps) {
 			// This occurs most of the cases (hopefully)
 			return INTERSECTION_PROPER;
 		}
 		// Now eps < mua,mub <= 1+eps
 		// and at least one of the mu's is near 1,
 		// the other is in [eps,1]
-		if (fabs (*mua - 1) < eps) {
-			*mua = 1;
+		if (fabs (*mua - 1.0) < eps) {
+			*mua = 1.0;
 		}
-		if (fabs (*mub - 1) < eps) {
-			*mub = 1;
+		if (fabs (*mub - 1.0) < eps) {
+			*mub = 1.0;
 		}
 		// is the intersection at an edge or  at vertex
-		if (*mua == 1) { // end of ab touches cd
-			return *mub == 1 ? INTERSECTION_AT_VERTEX : INTERSECTION_AT_EDGE;
+		if (*mua == 1.0) { // end of ab touches cd
+			return *mub == 1.0 ? INTERSECTION_AT_VERTEX : INTERSECTION_AT_EDGE;
 		} else { // ab crosses a vertex
 			return INTERSECTION_AT_VERTEX;
 		}
@@ -527,13 +533,16 @@ static int LineSegments_getIntersection (double x1, double y1, double x2, double
 			return INTERSECTION_OUTSIDE;
 		}
 		if (x1 == x2) {
-			x1 = y1; x2 = y2; x3 = y3; x4 = y4;
+			x1 = y1;
+			x2 = y2;
+			x3 = y3;
+			x4 = y4;
 		}
 		double xs;
 		int intersection = get_collinearIntersectionPoint (x1, x2, x3, x4, &xs);
 		if (intersection != INTERSECTION_OUTSIDE) {
-			*mua = fabs ( (xs - x1) / (x2 - x1));
-			*mub = fabs ( (xs - x3) / (x4 - x3));
+			*mua = fabs ((xs - x1) / (x2 - x1));
+			*mub = fabs ((xs - x3) / (x4 - x3));
 			intersection += INTERSECTION_COPLANAR;
 		}
 		return intersection;
@@ -544,75 +553,58 @@ static int LineSegments_getIntersection (double x1, double y1, double x2, double
 // first node has prev = 0, last node has next = 0;
 // entry marks the entrance of the OTHER polygon
 
-Thing_define (Vertex, Data) {
-	// new data:
-public:
+Thing_define (Vertex, Daata) {
 	double x, y, alpha;
-	DLLNode neighbour;
+	DoublyLinkedNode neighbour;
 	long poly_npoints, id;
 	int intersect, entry;
 	bool processed;
-	// overridden methods:
-	virtual void v_copy (Any data_to);
+
+	void v_copy (Daata data_to)
+		override;
 };
 
-Thing_implement (Vertex, Data, 0);
-
-void structVertex :: v_copy (thou) {
-	thouart (Vertex);
-	thy x = x;
-	thy y = y;
-	thy alpha = alpha;
-	thy neighbour = neighbour;
-	thy poly_npoints = poly_npoints;
-	thy id = id;
-	thy intersect = intersect;
-	thy entry = entry;
-	thy processed = processed;
+Thing_implement (Vertex, Daata, 0);
+
+void structVertex :: v_copy (Daata thee_Daata) {
+	Vertex thee = static_cast <Vertex> (thee_Daata);
+	thy x = our x;
+	thy y = our y;
+	thy alpha = our alpha;
+	thy neighbour = our neighbour;
+	thy poly_npoints = our poly_npoints;
+	thy id = our id;
+	thy intersect = our intersect;
+	thy entry = our entry;
+	thy processed = our processed;
 }
 
-Vertex Vertex_create ();
-Vertex Vertex_create () {
-	try {
-		autoVertex me = Thing_new (Vertex);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Vertex not created.");
-	}
+static autoVertex Vertex_create () {
+	return Thing_new (Vertex);
 }
 
-Thing_define (Vertices, DLL) {
-	// overridden methods:
-protected:
-	static int s_compare (Any data1, Any data2);
-	virtual Data_CompareFunction v_getCompareFunction () {
-		return s_compare;
-	}
+Thing_define (Vertices, DoublyLinkedList) {
+	static int s_compareHook (DoublyLinkedNode me, DoublyLinkedNode thee) noexcept;
+	Data_CompareHook v_getCompareHook ()
+		override { return s_compareHook; }
 };
-Thing_implement (Vertices, DLL, 0);
-
-#define VERTEX(n) ((Vertex) ((n) -> data))
 
-int structVertices :: s_compare (I, thou) {
-	iam (DLLNode); thouart (DLLNode);
-	return VERTEX (me) -> alpha < VERTEX (thee) -> alpha ? -1 : VERTEX (me) -> alpha > VERTEX (thee) -> alpha ? 1 : 0;
+inline static autoVertices Vertices_create () {
+	return Thing_new (Vertices);
 }
 
-Vertices Vertices_create ();
-Vertices Vertices_create () {
-	try {
-		Vertices me = Thing_new (Vertices);
-		return me;
-	} catch (MelderError) {
-		Melder_throw (U"Vertices not created.");
-	}
+Thing_implement (Vertices, DoublyLinkedList, 0);
+
+#define VERTEX(n) ((Vertex) ((n) -> data.get()))
+
+int structVertices :: s_compareHook (DoublyLinkedNode me, DoublyLinkedNode thee) noexcept {
+	return VERTEX (me) -> alpha < VERTEX (thee) -> alpha ? -1 : VERTEX (me) -> alpha > VERTEX (thee) -> alpha ? 1 : 0;
 }
 
-void Vertices_addCopyBack (Vertices me, DLLNode n);
-void Vertices_addCopyBack (Vertices me, DLLNode n) {
+static void Vertices_addCopyBack (Vertices me, DoublyLinkedNode n) {
 	try {
-		autoDLLNode nc = (DLLNode) Data_copy (n);
-		DLL_addBack ( (DLL) me, nc.transfer());
+		autoDoublyLinkedNode nc = Data_copy (n);
+		DoublyLinkedList_addBack (me, nc.releaseToAmbiguousOwner());
 	} catch (MelderError) {
 		Melder_throw (me, U": no copy added.");
 	}
@@ -621,9 +613,9 @@ void Vertices_addCopyBack (Vertices me, DLLNode n) {
 static bool pointsInsideInterval (double *x, long n, long istart, long iend, long *jstart, long *jend) {
 	double xmax = x[istart], xmin = x[istart];
 	long imax = istart, imin = istart;
-	long iendmod = iend > istart ? iend : iend + n; // circular
+	long iendmod = iend > istart ? iend : iend + n;   // circular
 	for (long i = istart + 1; i <= iendmod; i++) {
-		long index = (i - 1) % n + 1; // make it circular
+		long index = (i - 1) % n + 1;   // make it circular
 		if (x[index] > xmax) {
 			xmax = x[index];
 			imax = index;
@@ -637,66 +629,66 @@ static bool pointsInsideInterval (double *x, long n, long istart, long iend, lon
 		*jstart = imax;
 		*jend = imin;
 	}
-	if (x[istart] == x[*jstart] and x[iend] == x[*jend]) { // if there are duplicates of the extrema
+	if (x[istart] == x[*jstart] and x[iend] == x[*jend]) {   // if there are duplicates of the extrema
 		*jstart = istart; *jend = iend;
 	}
 	return *jstart == istart and * jend == iend;
 }
 
-Polygon Polygon_circularPermutation (Polygon me, long nshift);
-Polygon Polygon_circularPermutation (Polygon me, long nshift) {
+autoPolygon Polygon_circularPermutation (Polygon me, long nshift) {
 	try {
 		autoPolygon thee = Data_copy (me);
 		if (nshift != 0) {
-			for (long i = 1; i <= my numberOfPoints; i++) {
+			for (long i = 1; i <= my numberOfPoints; i ++) {
 				long inew = (i + nshift - 1) % my numberOfPoints + 1;
 				thy x[inew] = my x[i];
 				thy y[inew] = my y[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not circularly permuted.");
 	}
 }
 
-void _Polygons_copyNonCollinearities (Polygon me, Polygon thee, long collstart, long collend);
-void _Polygons_copyNonCollinearities (Polygon me, Polygon thee, long collstart, long collend) {
+static void _Polygons_copyNonCollinearities (Polygon me, Polygon thee, long collstart, long collend) {
 	// Determine if all collinear point are within the interval [colstart,colend]
 	long jstart, jend;
-	bool allPointsInside = my x[collstart] != my x[collend] ?
-	                       pointsInsideInterval (my x, my numberOfPoints, collstart, collend, &jstart, &jend) :
-	                       pointsInsideInterval (my y, my numberOfPoints, collstart, collend, &jstart, &jend);
+	bool allPointsInside = ( my x [collstart] != my x [collend] ?
+	                         pointsInsideInterval (my x, my numberOfPoints, collstart, collend, &jstart, &jend) :
+	                         pointsInsideInterval (my y, my numberOfPoints, collstart, collend, &jstart, &jend) );
 	if (not allPointsInside) {
 		if (collstart != jstart) { // also include the extreme point at start
-			thy numberOfPoints++;
-			thy x[thy numberOfPoints] = my x[jstart]; thy y[thy numberOfPoints] = my y[jstart];
+			thy numberOfPoints ++;
+			thy x [thy numberOfPoints] = my x [jstart];
+			thy y [thy numberOfPoints] = my y [jstart];
 		}
 		if (collend != jend) { // also include the extreme point at end
-			thy numberOfPoints++;
-			thy x[thy numberOfPoints] = my x[jend]; thy y[thy numberOfPoints] = my y[jend];
+			thy numberOfPoints ++;
+			thy x [thy numberOfPoints] = my x [jend];
+			thy y [thy numberOfPoints] = my y [jend];
 		}
 	}
-	thy numberOfPoints++;
+	thy numberOfPoints ++;
 	thy x[thy numberOfPoints] = my x[collend]; thy y[thy numberOfPoints] = my y[collend];
 }
 
 #define AREA(x1,y1,x2,y2,x3,y3) (x1*(y2 - y3)+x2*(y3-y1)+x3*(y1-y2))
-Polygon Polygon_simplify (Polygon me);
-Polygon Polygon_simplify (Polygon me) {
+autoPolygon Polygon_simplify (Polygon me) {
 	try {
 		autoPolygon p1 = Data_copy (me);
 
 		// pass 1: remove doublets
 		long np = 1;
-		for (long i = 2; i <= my numberOfPoints; i++) {
-			if (my x[i] != p1 -> x[np] || my y[i] != p1 -> y[np]) {
-				p1 -> x[++np] = my x[i]; p1 -> y[np] = my y[i];
+		for (long i = 2; i <= my numberOfPoints; i ++) {
+			if (my x [i] != p1 -> x [np] || my y [i] != p1 -> y [np]) {
+				p1 -> x [++ np] = my x [i];
+				p1 -> y [np] = my y [i];
 			}
 		}
 		// last and first points!
-		if (p1 -> x[np] == p1 -> x[1] && p1 -> y[np] == p1 -> y[1]) {
-			np--;
+		if (p1 -> x [np] == p1 -> x [1] && p1 -> y [np] == p1 -> y [1]) {
+			np --;
 		}
 		if (np < 3) {
 			Melder_throw (U"Not enough points left after doublet removal.");
@@ -705,7 +697,7 @@ Polygon Polygon_simplify (Polygon me) {
 
 		// pass 2: remove collinearities
 
-		autoPolygon p = Data_copy (p1.peek());
+		autoPolygon p = Data_copy (p1.get());
 		p -> numberOfPoints = 0;
 		// is there collinearity between the first and the last points of p1?
 		double  eps = 1e-15;
@@ -719,18 +711,20 @@ Polygon Polygon_simplify (Polygon me) {
 		area = AREA (p1 -> x[np - 1], p1 -> y[np - 1], p1 -> x[np], p1 -> y[np], p1 -> x[1], p1 -> y[1]);
 		long collstart = np - 1;
 		while (fabs (area) < eps && collstart > collend) {
-			collstart--;
+			collstart --;
 			area = AREA (p1 -> x[collstart], p1 -> y[collstart], p1 -> x[collstart + 1], p1 -> y[collstart + 1], p1 -> x[collstart + 2], p1 -> y[collstart + 2]);
 		}
-		collstart++;
+		collstart ++;
 		if (collend - collstart + p1 -> numberOfPoints > 1) {
-			_Polygons_copyNonCollinearities (p1.peek(), p.peek(), collstart, collend);
+			_Polygons_copyNonCollinearities (p1.get(), p.get(), collstart, collend);
 		} else {
-			p -> numberOfPoints = 1; p -> x[1] = p1 -> x[1]; p -> y[1] = p1 -> y[1];
+			p -> numberOfPoints = 1;
+			p -> x [1] = p1 -> x [1];
+			p -> y [1] = p1 -> y [1];
 		}
 		bool collinearity = false;
 		long endpos = collstart - 1;
-		for (long i = collend + 1; i <= endpos; i++) { // start was < numberOfPoints
+		for (long i = collend + 1; i <= endpos; i ++) { // start was < numberOfPoints
 			// if i-1, i, i+1 are coplanar, remove i
 			// area = x1*(y2 - y3)+x2*(y3-y1)+x3*(y1-y2)
 			area = AREA (p1 -> x[i - 1], p1 -> y[i - 1], p1 -> x[i], p1 -> y[i], p1 -> x[i + 1], p1 -> y[i + 1]);
@@ -745,26 +739,26 @@ Polygon Polygon_simplify (Polygon me) {
 					continue;
 				}
 			}
-			if (not collinearity) {
-				p -> numberOfPoints++;
-				p -> x[p -> numberOfPoints] = p1 -> x[i];
-				p -> y[p -> numberOfPoints] = p1 -> y[i];
+			if (! collinearity) {
+				p -> numberOfPoints ++;
+				p -> x [p -> numberOfPoints] = p1 -> x [i];
+				p -> y [p -> numberOfPoints] = p1 -> y [i];
 			} else { // end of series of collinearities detected
-				_Polygons_copyNonCollinearities (p1.peek(), p.peek(), collstart, collend);
+				_Polygons_copyNonCollinearities (p1.get(), p.get(), collstart, collend);
 				collinearity = false;
 			}
 		}
 		if (not collinearity and collend != endpos + 1) { // only if previous series was not collinear
-			p -> numberOfPoints++;
-			p -> x[p -> numberOfPoints] = p1 -> x[endpos + 1];
-			p -> y[p -> numberOfPoints] = p1 -> y[endpos + 1];
+			p -> numberOfPoints ++;
+			p -> x [p -> numberOfPoints] = p1 -> x [endpos + 1];
+			p -> y [p -> numberOfPoints] = p1 -> y [endpos + 1];
 		}
 		if (p -> numberOfPoints < 3) {
 			Melder_throw (U"Not enough points left after collinear points removal.");
 		}
 
-		autoPolygon thee = Data_copy (p.peek()); //
-		return thee.transfer();
+		autoPolygon thee = Data_copy (p.get()); //
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not simplified.");
 	}
@@ -772,21 +766,20 @@ Polygon Polygon_simplify (Polygon me) {
 
 #undef AREA
 
-Vertices Polygon_to_Vertices (Polygon me, bool close);
-Vertices Polygon_to_Vertices (Polygon me, bool close) {
+static autoVertices Polygon_to_Vertices (Polygon me, bool close) {
 	try {
 		autoVertices thee = Vertices_create ();
 		for (long i = 1 ; i <= my numberOfPoints; i++) {
 			autoVertex v = Vertex_create ();
 			v -> x = my x[i]; v -> y = my y[i];
-			autoDLLNode n = DLLNode_create ( (Data) v.transfer());
-			DLL_addBack ( (DLL) thee.peek(), n.transfer());
+			autoDoublyLinkedNode n = DoublyLinkedNode_create (v.move());
+			DoublyLinkedList_addBack (thee.get(), n.releaseToAmbiguousOwner());
 		}
 		Melder_assert (thy numberOfNodes == my numberOfPoints);
 		if (close) {
-			Vertices_addCopyBack (thee.peek(), thy front);
+			Vertices_addCopyBack (thee.get(), thy front);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Vertices created.");
 	}
@@ -795,11 +788,10 @@ Vertices Polygon_to_Vertices (Polygon me, bool close) {
 #define SKIP_INTERSECTION_NODES(n) while(VERTEX(n) -> intersect != 0) n = n -> next;
 
 
-void Vertices_print (Vertices me, Vertices thee);
-void Vertices_print (Vertices me, Vertices thee) {
+static void Vertices_print (Vertices me, Vertices thee) {
 	long ns = 0, nc = 0, nt, nt2;
 	//	MelderInfo_open();
-	DLLNode n = my front;
+	DoublyLinkedNode n = my front;
 	MelderInfo_writeLine (U"");
 	while (n != 0) {
 		double x = VERTEX (n) -> x, y = VERTEX (n) -> y, alpha = VERTEX (n) -> alpha;
@@ -832,14 +824,13 @@ void Vertices_print (Vertices me, Vertices thee) {
 	//	MelderInfo_close();
 }
 
-void Vertices_sortIntersections (Vertices me);
-void Vertices_sortIntersections (Vertices me) {
-	DLLNode ni = my front, first;
+static void Vertices_sortIntersections (Vertices me) {
+	DoublyLinkedNode ni = my front, first;
 	bool intersections = false;
 	while (ni != my back) {
 		if (VERTEX (ni) -> intersect == 0) {
 			if (intersections) { // the previous was the last of a series of intersections
-				DLL_sortPart ( (DLL) me, first, ni -> prev);
+				DoublyLinkedList_sortPart ( (DoublyLinkedList) me, first, ni -> prev);
 				// restore myNode pointers
 				intersections = false;
 			}
@@ -853,25 +844,24 @@ void Vertices_sortIntersections (Vertices me) {
 	}
 	// we might have missed the last series of intersections
 	if (intersections) {
-		DLL_sortPart ( (DLL) me, first, ni -> prev);
+		DoublyLinkedList_sortPart ( (DoublyLinkedList) me, first, ni -> prev);
 	}
 }
 
-void Vertices_addIntersections (Vertices me, Vertices thee);
-void Vertices_addIntersections (Vertices me, Vertices thee) {
+static void Vertices_addIntersections (Vertices me, Vertices thee) {
 	try {
 		double eps = 1e-15;
 		long id = 0;
 		if (my numberOfNodes < 4 || thy numberOfNodes < 4) {
 			Melder_throw (U"We need at least three vertices.");
 		}
-		DLLNode ni = my front; // the node index  in me (s)
+		DoublyLinkedNode ni = my front; // the node index  in me (s)
 		while (ni != my back) { // until penultimate
 			double x1 = VERTEX (ni) -> x, y1 =  VERTEX (ni) -> y;
 			double x2 = VERTEX (ni -> next) -> x, y2 = VERTEX (ni -> next) -> y;
-			DLLNode nj = thy front; // the current node index in thee (c)
+			DoublyLinkedNode nj = thy front; // the current node index in thee (c)
 			while (nj != thy back && VERTEX (nj) -> intersect == 0) {
-				DLLNode njn = nj -> next;
+				DoublyLinkedNode njn = nj -> next;
 				SKIP_INTERSECTION_NODES (njn)
 				double x3 = VERTEX (nj) -> x, y3 = VERTEX (nj) -> y;
 				double x4 = VERTEX (njn) -> x, y4 = VERTEX (njn) -> y, mua, mub;
@@ -885,20 +875,20 @@ void Vertices_addIntersections (Vertices me, Vertices thee) {
 					ins -> alpha = mua;
 					ins -> intersect = intersection;
 					ins -> id = id;
-					autoVertex inc = Data_copy (ins.peek());
+					autoVertex inc = Data_copy (ins.get());
 					inc -> alpha = mub;
 					// 2. create the nodes
-					autoDLLNode ns = DLLNode_create (0);
-					autoDLLNode nc = DLLNode_create (0);
+					autoDoublyLinkedNode ns = DoublyLinkedNode_create (autoDaata());
+					autoDoublyLinkedNode nc = DoublyLinkedNode_create (autoDaata());
 					// 3. link the neighbours + copy the links
-					DLLNode njc = ins -> neighbour = nc.peek();
-					DLLNode nic = inc -> neighbour = ns.peek();
+					DoublyLinkedNode njc = ins -> neighbour = nc.get();
+					DoublyLinkedNode nic = inc -> neighbour = ns.get();
 					// 4. transfer the vertices to the nodes
-					ns -> data = (Data) ins.transfer();
-					nc -> data = (Data) inc.transfer();
+					ns -> data = ins.move();
+					nc -> data = inc.move();
 					// 5. add the nodes to the list
-					DLL_addAfter ( (DLL) me, ni, ns.transfer());
-					DLL_addAfter ( (DLL) thee, nj, nc.transfer());
+					DoublyLinkedList_addAfter (me, ni, ns.releaseToAmbiguousOwner());
+					DoublyLinkedList_addAfter (thee, nj, nc.releaseToAmbiguousOwner());
 					// 6. set node pointer to inserted nodes
 					ni = nic; nj = njc;
 				}
@@ -926,11 +916,10 @@ void Vertices_addIntersections (Vertices me, Vertices thee) {
 #define Polygon_ENEX 3
 #define Polygon_EXEN 4
 
-void Vertices_markEntryPoints (Vertices me, int firstLocation);
-void Vertices_markEntryPoints (Vertices me, int firstLocation) {
+static void Vertices_markEntryPoints (Vertices me, int firstLocation) {
 	int entry = (firstLocation == Polygon_INSIDE) ? Polygon_EX : (firstLocation == Polygon_OUTSIDE) ? Polygon_EN : Polygon_ENEX; // problematic when on boundary
 	// my back/front can never be an intersection node
-	for (DLLNode ni = my front -> next; ni != my back; ni = ni -> next) {
+	for (DoublyLinkedNode ni = my front -> next; ni != my back; ni = ni -> next) {
 		if (VERTEX (ni) -> intersect == 0) {
 			continue;
 		}
@@ -939,14 +928,13 @@ void Vertices_markEntryPoints (Vertices me, int firstLocation) {
 	}
 }
 
-Vertices Verticeses_connectClippingPathsUnion (Vertices me, Vertices thee);
-Vertices Verticeses_connectClippingPathsUnion (Vertices me, Vertices thee) {
+static autoVertices Verticeses_connectClippingPathsUnion (Vertices me, Vertices thee) {
 	try {
 		// find my first vertex outside thee, by searching the first intersection entry
 
-		DLLNode firstOutside = my front;
+		DoublyLinkedNode firstOutside = my front;
 		bool firstOutsideSet = true;
-		for (DLLNode ni = my front; ni != 0; ni = ni -> next) {
+		for (DoublyLinkedNode ni = my front; ni != 0; ni = ni -> next) {
 			if (VERTEX (ni) -> intersect == 0) { //
 				if (firstOutsideSet) {
 					continue;
@@ -963,14 +951,14 @@ Vertices Verticeses_connectClippingPathsUnion (Vertices me, Vertices thee) {
 
 		autoVertices him = Vertices_create ();
 		long poly_npoints = 0;
-		DLLNode current = firstOutside;
+		DoublyLinkedNode current = firstOutside;
 		bool inside = false, forward = true;
 		do {
 			if (VERTEX (current) -> intersect == 0) {
-				Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+				Vertices_addCopyBack (him.get(), current); poly_npoints++;
 			} else { // intersection point
 				// store and jump to other polygon
-				Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+				Vertices_addCopyBack (him.get(), current); poly_npoints++;
 				current = VERTEX (current) -> neighbour; inside = not inside;
 				forward = VERTEX (current) ->  entry == Polygon_EX;
 			}
@@ -987,47 +975,47 @@ Vertices Verticeses_connectClippingPathsUnion (Vertices me, Vertices thee) {
 			}
 		} while (current != firstOutside and current != 0 and poly_npoints < my numberOfNodes);
 		VERTEX (his front) -> poly_npoints = poly_npoints;
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no clipping path.");
 	}
 }
 
 //Vertices Verticeses_connectClippingPaths (Vertices me, bool use_myinterior, Vertices thee, bool use_thyinterior);
-static Vertices Verticeses_connectClippingPaths (Vertices me, bool /* use_myinterior */, Vertices thee, bool /* use_thyinterior */) {
+static autoVertices Verticeses_connectClippingPaths (Vertices me, bool /* use_myinterior */, Vertices thee, bool /* use_thyinterior */) {
 	try {
 		autoVertices him = Vertices_create ();
-		DLLNode prevPoly;
+		DoublyLinkedNode prevPoly;
 		long poly_npoints = 0;
-		for (DLLNode ni = my front; ni != 0; ni = ni -> next) {
+		for (DoublyLinkedNode ni = my front; ni != 0; ni = ni -> next) {
 			if ( (VERTEX (ni) -> intersect == 0) || VERTEX (ni) -> processed) {
 				continue;
 			}
 			// Intersection found: start new polygon
-			DLLNode currentPoly = his back;
+			DoublyLinkedNode currentPoly = his back;
 			if (currentPoly == his front) {
-				Vertices_addCopyBack (him.peek(), ni); poly_npoints++;
+				Vertices_addCopyBack (him.get(), ni); poly_npoints++;
 				prevPoly = his front;
 			} else {
-				Vertices_addCopyBack (him.peek(), ni); poly_npoints++;
+				Vertices_addCopyBack (him.get(), ni); poly_npoints++;
 				VERTEX (prevPoly) -> poly_npoints = poly_npoints;
 				poly_npoints = 0;
 				prevPoly = currentPoly;
 			}
-			DLLNode current = ni;
+			DoublyLinkedNode current = ni;
 			VERTEX (current) -> processed = true;
 			long jumps = 0;
 			do {
 				if (VERTEX (current) -> entry == Polygon_EN) {
 					while ( (current = current -> next) != 0 and VERTEX (current) -> intersect == 0) {
-						Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+						Vertices_addCopyBack (him.get(), current); poly_npoints++;
 					}
 					if (current == 0) { // back of list? Goto front
 						current = (jumps % 2 == 0) ? my front : thy front;
 						while ( (current = current -> next) != 0 and VERTEX (current) -> intersect == 0) {
-							Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+							Vertices_addCopyBack (him.get(), current); poly_npoints++;
 						}
-						Vertices_addCopyBack (him.peek(), current); poly_npoints++; // intersection point
+						Vertices_addCopyBack (him.get(), current); poly_npoints++; // intersection point
 					} else if (current == ni) {
 						break;    // done
 					} else {
@@ -1035,14 +1023,14 @@ static Vertices Verticeses_connectClippingPaths (Vertices me, bool /* use_myinte
 					}
 				} else if (VERTEX (current) -> entry == Polygon_EX) {
 					while ( (current = current -> prev) != 0 and VERTEX (current) -> intersect == 0) {
-						Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+						Vertices_addCopyBack (him.get(), current); poly_npoints++;
 					}
 					if (current == 0) { // start of list? Goto end
 						current = (jumps % 2 == 0) ? my back : thy back;
 						while ( (current = current -> prev) != 0 and VERTEX (current) -> intersect == 0) {
-							Vertices_addCopyBack (him.peek(), current); poly_npoints++;
+							Vertices_addCopyBack (him.get(), current); poly_npoints++;
 						}
-						Vertices_addCopyBack (him.peek(), current); poly_npoints++; // intersection point
+						Vertices_addCopyBack (him.get(), current); poly_npoints++; // intersection point
 					} else if (current == ni) {
 						break;    // done
 					} else {
@@ -1057,16 +1045,15 @@ static Vertices Verticeses_connectClippingPaths (Vertices me, bool /* use_myinte
 		}
 		// last polygon:
 		VERTEX (prevPoly) -> poly_npoints = poly_npoints;
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no clipping vertices created.");
 	}
 }
 
 //
-Polygon Vertices_to_Polygon (Vertices me, DLLNode *ni);
-Polygon Vertices_to_Polygon (Vertices me, DLLNode *ni) {
-	DLLNode n = *ni;
+static autoPolygon Vertices_to_Polygon (Vertices /* me */, DoublyLinkedNode *ni) {
+	DoublyLinkedNode n = *ni;
 	try {
 		long i = 1, nPoints = VERTEX (n) -> poly_npoints;
 		if (nPoints == 0) {
@@ -1074,65 +1061,68 @@ Polygon Vertices_to_Polygon (Vertices me, DLLNode *ni) {
 		}
 		autoPolygon thee = Polygon_create (nPoints);
 		thy x[i] = VERTEX (n) -> x; thy y[i] = VERTEX (n) -> y;
-		while ( (n = n -> next) != 0 and VERTEX (n) -> poly_npoints == 0 and i <= nPoints) {
-			i++; thy x[i] = VERTEX (n) -> x; thy y[i] = VERTEX (n) -> y;
+		while ((n = n -> next) != 0 && VERTEX (n) -> poly_npoints == 0 && i <= nPoints) {
+			i ++;
+			thy x[i] = VERTEX (n) -> x;
+			thy y[i] = VERTEX (n) -> y;
 		}
 		*ni =  n;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Polygon not created.");
 	}
 }
 
-Collection Vertices_to_Polygons (Vertices me);
-Collection Vertices_to_Polygons (Vertices me) {
+Thing_implement (PolygonBag, Collection, 0);
+
+static autoPolygonBag Vertices_to_Polygons (Vertices me) {
 	try {
-		autoCollection thee = Collection_create (classPolygon, 10);
-		DLLNode ni = my front;
+		autoPolygonBag thee = PolygonBag_create ();
+		DoublyLinkedNode node = my front;
 		do {
-			autoPolygon p = Vertices_to_Polygon (me, & ni);
-			Collection_addItem (thee.peek(), p.transfer());
-		} while (ni != 0);
-		return thee.transfer();
+			autoPolygon polygon = Vertices_to_Polygon (me, & node);
+			thy addItem_move (polygon.move());
+		} while (node);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no polygon collection created.");
 	}
 }
 
-Collection Polygons_findClippings (Polygon me, bool use_myinterior, Polygon thee, bool use_thyinterior);
-Collection Polygons_findClippings (Polygon me, bool use_myinterior, Polygon thee, bool use_thyinterior) {
+static autoPolygonBag Polygons_findClippings (Polygon me, bool use_myinterior, Polygon thee, bool use_thyinterior) {
 	try {
-		autoVertices s = Polygon_to_Vertices (me, true); // subject
-		long ns = s -> numberOfNodes;
-		autoVertices c = Polygon_to_Vertices (thee, true); // clip
-		long nc = c -> numberOfNodes;
+		autoVertices subject = Polygon_to_Vertices (me, true);
+		long ns = subject -> numberOfNodes;
+		autoVertices clip = Polygon_to_Vertices (thee, true);
+		// long nc = clip -> numberOfNodes;
 		double eps = 1e-15;
 
 		// phase 1: Get all intersections and add them to both lists
 
-		Vertices_addIntersections (s.peek(), c.peek());
-		long nnewnodes = s -> numberOfNodes - ns;
-		int firstLocation = Polygon_getLocationOfPoint (thee, my x[1], my y[1], eps);
-		if (nnewnodes == 0) { // no crossings, either one completely inside the other or separate
-			autoCollection apc;
-			if (not use_myinterior and not use_thyinterior and firstLocation == Polygon_INSIDE) {
-				autoPolygon ap = Data_copy (thee);
-				Collection_addItem (apc.peek(), ap.transfer());
+		Vertices_addIntersections (subject.get(), clip.get());
+		long nnewnodes = subject -> numberOfNodes - ns;
+		int firstLocation = Polygon_getLocationOfPoint (thee, my x [1], my y [1], eps);
+		if (nnewnodes == 0) {   // no crossings, either one completely inside the other or separate
+			autoPolygonBag polygons;
+			if (! use_myinterior && ! use_thyinterior && firstLocation == Polygon_INSIDE) {
+				autoPolygon copy = Data_copy (thee);
+				polygons -> addItem_move (copy.move());
 			} else {
-				autoPolygon ap = Data_copy (me);
-				Collection_addItem (apc.peek(), ap.transfer());
+				autoPolygon copy = Data_copy (me);
+				polygons -> addItem_move (copy.move());
 			}
-			return apc.transfer();
+			return polygons;
 		}
 
 		// phase 2: Determine intersections as entry / exit points
 
-		Vertices_markEntryPoints (s.peek(), firstLocation);
+		Vertices_markEntryPoints (subject.get(), firstLocation);
 
 		firstLocation = Polygon_getLocationOfPoint (me, thy x[1], thy y[1], eps);
-		Vertices_markEntryPoints (c.peek(), firstLocation);
+		Vertices_markEntryPoints (subject.get(), firstLocation);
 		if (Melder_debug == -1) {
-			Vertices_print (s.peek(), c.peek()); MelderInfo_close();
+			Vertices_print (subject.get(), clip.get());
+			MelderInfo_close();
 			Melder_throw (U"Bail out of Polygons_findClippings.");
 		}
 
@@ -1142,37 +1132,36 @@ Collection Polygons_findClippings (Polygon me, bool use_myinterior, Polygon thee
 		//  false        false      union
 		//  true         true       clip
 		//  false        true       diff thee - me
-		autoVertices pgs = 0;
-		if (not use_myinterior and not use_thyinterior) {
-			pgs.reset (Verticeses_connectClippingPathsUnion (s.peek(), c.peek()));
+		autoVertices pgs;
+		if (! use_myinterior && ! use_thyinterior) {
+			pgs = Verticeses_connectClippingPathsUnion (subject.get(), clip.get());
 		} else {
-			pgs.reset (Verticeses_connectClippingPaths (s.peek(), use_myinterior, c.peek(), use_thyinterior));
+			pgs = Verticeses_connectClippingPaths (subject.get(), use_myinterior, clip.get(), use_thyinterior);
 		}
 		// phase 4: to Polygons
 
-		autoCollection pols = Vertices_to_Polygons (pgs.peek());
-		return pols.transfer();
+		autoPolygonBag polygons = Vertices_to_Polygons (pgs.get());
+		return polygons;
 	} catch (MelderError) {
 		Melder_throw (me, U": no union Polygon created.");
 	}
 }
 
-Collection Polygons_clip (Polygon subject, Polygon clipper) {
+autoPolygonBag Polygons_clip (Polygon subject, Polygon clipper) {
 	try {
-		autoCollection him = Polygons_findClippings (subject, true, clipper, true);
-		return him.transfer();
+		autoPolygonBag him = Polygons_findClippings (subject, true, clipper, true);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (subject, U": no union created.");
 	}
 }
 
-Polygon Polygons_union (Polygon me, Polygon thee);
-Polygon Polygons_union (Polygon me, Polygon thee) {
+autoPolygon Polygons_union (Polygon me, Polygon thee) {
 	try {
-		autoCollection him = Polygons_findClippings (me, false, thee, false);
+		autoPolygonBag him = Polygons_findClippings (me, false, thee, false);
 		//Melder_assert (his size == 1);
-		autoPolygon p = (Polygon) Collection_subtractItem (him.peek(), 1);
-		return p.transfer();
+		autoPolygon p = his subtractItem_move (1);
+		return p;
 	} catch (MelderError) {
 		Melder_throw (me, U": no union created.");
 	}
@@ -1183,32 +1172,31 @@ Polygon Polygons_union (Polygon me, Polygon thee) {
 #define RIGHT_CROSSING (a > 0) == (my y[ip1] > my y[i])
 #define MODIFY_CROSSING_NUMBER { if (my y[ip1] > my y[i]) nup++; else nup--; }
 
-int Polygon_getLocationOfPoint (Polygon me, double x0, double y0, double eps);
 int Polygon_getLocationOfPoint (Polygon me, double x0, double y0, double eps) {
 	if (my y[1] == y0 and my x[1] == x0) {
 		return Polygon_VERTEX;
 	}
 
 	long nup = 0;
-	for (long i = 1; i <= my numberOfPoints; i++) {
+	for (long i = 1; i <= my numberOfPoints; i ++) {
 		double a;
 		long ip1 = i < my numberOfPoints ? i + 1 : 1;
-		if (my y[ip1] == y0) {
-			if (my x[ip1] == x0) {
+		if (my y [ip1] == y0) {
+			if (my x [ip1] == x0) {
 				return Polygon_VERTEX;
-			} else if (my y[i] == y0 and (my x[ip1] > x0) == (my x[i] < x0)) {
+			} else if (my y [i] == y0 && ( my x [ip1] > x0 ) == ( my x [i] < x0 )) {
 				return Polygon_EDGE;
 			}
 		}
 		if (CROSSING) {
-			if (my x[i] >= x0) {
-				if (my x[ip1] > x0) MODIFY_CROSSING_NUMBER
+			if (my x [i] >= x0) {
+				if (my x [ip1] > x0) MODIFY_CROSSING_NUMBER
 					else {
 						AREA
 						if (RIGHT_CROSSING) MODIFY_CROSSING_NUMBER
 						}
 			} else {
-				if (my x[ip1] > x0) {
+				if (my x [ip1] > x0) {
 					AREA
 					if (RIGHT_CROSSING) MODIFY_CROSSING_NUMBER
 					}
@@ -1223,10 +1211,10 @@ static inline double cross (double x1, double y1, double x2, double y2, double x
 }
 
 // Code adapted from http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain#C
-Polygon Polygon_convexHull (Polygon me) {
+autoPolygon Polygon_convexHull (Polygon me) {
 	try {
 		if (my numberOfPoints <= 3) {
-			return (Polygon) Data_copy (me);
+			return Data_copy (me);
 		}
 		autoNUMvector<double> x (1, my numberOfPoints), y (1, my numberOfPoints);
 		autoNUMvector<long> hull (1, my numberOfPoints + 2);
@@ -1256,7 +1244,7 @@ Polygon Polygon_convexHull (Polygon me) {
 			thy x[i] = x[hull[i]];
 			thy y[i] = y[hull[i]];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no convex hull polygon created.");
 	}
@@ -1265,7 +1253,7 @@ Polygon Polygon_convexHull (Polygon me) {
 double Polygon_getAreaOfConvexHull (Polygon me) {
 	try {
 		autoPolygon thee = Polygon_convexHull (me);
-		return Polygon_area (thee.peek());
+		return Polygon_area (thee.get());
 	} catch (MelderError) {
 		Melder_clearError ();
 		return NUMundefined;
diff --git a/dwtools/Polygon_extensions.h b/dwtools/Polygon_extensions.h
index cbb9c52..98a9b68 100644
--- a/dwtools/Polygon_extensions.h
+++ b/dwtools/Polygon_extensions.h
@@ -2,21 +2,20 @@
 #define _Polygon_extensions_h_
 /* Polygon_extensions.h
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -37,27 +36,34 @@
 #define Polygon_VERTEX 5
 
 void Polygon_getExtrema (Polygon me, double *xmin, double *xmax, double *ymin, double *ymax);
-Polygon Polygon_createSimple (char32 *xystring);
-Polygon Polygon_createFromRandomVertices (long numberOfVertices, double xmin, double xmax, double ymin, double ymax);
-Polygon Polygon_simplify (Polygon me);
+
+autoPolygon Polygon_createSimple (char32 *xystring);
+
+autoPolygon Polygon_createFromRandomVertices (long numberOfVertices, double xmin, double xmax, double ymin, double ymax);
+
+autoPolygon Polygon_simplify (Polygon me);
+
 void Polygon_translate (Polygon me, double xt, double yt);
+
 void Polygon_rotate (Polygon me, double alpha, double xc, double yc);
+
 void Polygon_scale (Polygon me, double xs, double ys);
+
 void Polygon_reverseX (Polygon me);
+
 void Polygon_reverseY (Polygon me);
-Polygon Polygon_circularPermutation (Polygon me, long nshift);
+
+autoPolygon Polygon_circularPermutation (Polygon me, long nshift);
 
 // Is point (x,y) Inside, Outside, Boundary (Edge or Vertex) ?
 int Polygon_getLocationOfPoint (Polygon me, double x0, double y0, double eps);
 
-void Polygon_Categories_draw (Polygon me, Any categories, Graphics graphics, double xmin, double xmax,
-	double ymin, double ymax, int garnish);
+void Polygon_Categories_draw (Polygon me, Categories thee, Graphics graphics, double xmin, double xmax, double ymin, double ymax, int garnish);
 /* reverse axis when min > max */
 
-void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax,
-	double ymin, double ymax, double size_mm, const char32 *mark);
+void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax, double ymin, double ymax, double size_mm, const char32 *mark);
 
-Polygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, double ymin, double ymax, double level);
+autoPolygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, double ymin, double ymax, double level);
 /*
 	Post-conditions:
 
@@ -83,14 +89,18 @@ Polygon Sound_to_Polygon (Sound me, int channel, double tmin, double tmax, doubl
 	where clip(y) = y < ymin ? ymin : y > ymax ? ymax ; y;
 */
 
-Polygon Sounds_to_Polygon_enclosed (Sound me, Sound thee, int channel, double tmin, double tmax, double ymin, double ymax);
+autoPolygon Sounds_to_Polygon_enclosed (Sound me, Sound thee, int channel, double tmin, double tmax, double ymin, double ymax);
 /* Area enclosed by the sounds */
 
-Polygon Polygons_union (Polygon me, Polygon thee);
+autoPolygon Polygons_union (Polygon me, Polygon thee);
+
+Collection_define (PolygonBag, CollectionOf, Polygon) {
+};
+
+autoPolygonBag Polygons_clip (Polygon me, Polygon thee);
 
-Collection Polygons_clip (Polygon me, Polygon thee);
+autoPolygon Polygon_convexHull (Polygon me);
 
-Polygon Polygon_convexHull (Polygon me);
 double Polygon_getAreaOfConvexHull (Polygon me);
 
 #endif /* _Polygon_extensions_h_ */
diff --git a/dwtools/Polynomial.cpp b/dwtools/Polynomial.cpp
index d25b9b4..a69945c 100644
--- a/dwtools/Polynomial.cpp
+++ b/dwtools/Polynomial.cpp
@@ -1,27 +1,26 @@
 /* Polynomial.cpp
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  djmw 20020813 GPL header
  djmw 20030619 Added SVD_compute before SVD_solve
  djmw 20060510 Polynomial_to_Roots: changed behaviour. All roots found are now saved.
- 	In previous version a NULL pointer was returned. New error messages.
+ 	In previous version a nullptr pointer was returned. New error messages.
  djmw 20061021 printf expects %ld for 'long int'
  djmw 20071012 Added: o_CAN_WRITE_AS_ENCODING.h
  djmw 20071201 Melder_warning<n>
@@ -60,8 +59,7 @@
 /* Evaluate polynomial and derivative jointly
 	c[1..n] -> degree n-1 !!
 */
-static void Polynomial_evaluate2 (I, double x, double *f, double *df) {
-	iam (Polynomial);
+static void Polynomial_evaluate2 (Polynomial me, double x, double *f, double *df) {
 	long double p = my coefficients[my numberOfCoefficients], dp = 0, xc = x;
 
 	for (long i = my numberOfCoefficients - 1; i > 0; i--) {
@@ -72,8 +70,7 @@ static void Polynomial_evaluate2 (I, double x, double *f, double *df) {
 }
 
 /* Get value and derivative */
-static void Polynomial_evaluate2_z (I, dcomplex *z, dcomplex *p, dcomplex *dp) {
-	iam (Polynomial);
+static void Polynomial_evaluate2_z (Polynomial me, dcomplex *z, dcomplex *p, dcomplex *dp) {
 	long double pr = my coefficients[my numberOfCoefficients], pi = 0;
 	long double dpr = 0, dpi = 0, x = z -> re, y = z -> im;
 
@@ -123,9 +120,8 @@ static void polynomial_divide (double *u, long m, double *v, long n, double *q,
 	}
 }
 
-static void Polynomial_polish_realroot (I, double *x, long maxit) {
-	iam (Polynomial);
-	double xbest = *x, pmin = 1e38;
+static void Polynomial_polish_realroot (Polynomial me, double *x, long maxit) {
+	double xbest = *x, pmin = 1e308;
 	if (! NUMfpp) {
 		NUMmachar ();
 	}
@@ -150,10 +146,9 @@ static void Polynomial_polish_realroot (I, double *x, long maxit) {
 	// Melder_throw (U"Maximum number of iterations exceeded.");
 }
 
-static void Polynomial_polish_complexroot_nr (I, dcomplex *z, long maxit) {
-	iam (Polynomial);
+static void Polynomial_polish_complexroot_nr (Polynomial me, dcomplex *z, long maxit) {
 	dcomplex zbest = *z;
-	double pmin = 1e38;
+	double pmin = 1e308;
 	if (! NUMfpp) {
 		NUMmachar ();
 	}
@@ -188,8 +183,7 @@ static void Polynomial_polish_complexroot_nr (I, dcomplex *z, long maxit) {
 		pnm1 : polynomial of degree n - 1
 		pnm2 : polynomial of degree n - 2
 */
-static void NUMpolynomial_recurrence (double *pn, long degree, double a,
-                                      double b, double c, double *pnm1, double *pnm2) {
+static void NUMpolynomial_recurrence (double *pn, long degree, double a, double b, double c, double *pnm1, double *pnm2) {
 	Melder_assert (degree > 1);
 
 	pn[1] = b * pnm1[1] + c * pnm2[1];
@@ -266,43 +260,53 @@ long structFunctionTerms :: v_getDegree () {
 	return numberOfCoefficients - 1;
 }
 
-void structFunctionTerms :: v_getExtrema (double x1, double x2, double *lxmin, double *ymin, double *lxmax, double *ymax) { // David, geen aparte naam hier nodig: ???
+void structFunctionTerms :: v_getExtrema (double x1, double x2, double *p_xmin, double *p_ymin, double *p_xmax, double *p_ymax) { // David, geen aparte naam hier nodig: ???
 	long numberOfPoints = 1000;
 
 	// Melder_warning (L"defaultGetExtrema: extrema calculated by sampling the interval");
 
 	double x = x1, dx = (x2 - x1) / (numberOfPoints - 1);
-	*lxmin = *lxmax = x; *ymin = *ymax = v_evaluate (x);
+	double xmn = x, xmx = xmn, ymn = v_evaluate (x), ymx = ymn; // xmin, xmax .. would shadow  member
 	for (long i = 2; i <= numberOfPoints; i++) {
 		x += dx;
 		double y = v_evaluate (x);
-		if (y > *ymax) {
-			*ymax = y; *lxmax = x;
-		} else if (y < *ymin) {
-			*ymin = y; *lxmin = x;
+		if (y > ymx) {
+			ymx = y; xmx = x;
+		} else if (y < ymn) {
+			ymn = y; xmn = x;
 		}
 	}
+	if (p_xmin) {
+		*p_xmin = xmn;
+	}
+	if (p_xmax) {
+		*p_xmax = xmx;
+	}
+	if (p_ymin) {
+		*p_ymin = ymn;
+	}
+	if (p_ymax) {
+		*p_ymax = ymx;
+	}
 }
 
-void FunctionTerms_init (I, double xmin, double xmax, long numberOfCoefficients) {
-	iam (FunctionTerms);
+void FunctionTerms_init (FunctionTerms me, double xmin, double xmax, long numberOfCoefficients) {
 	my coefficients = NUMvector<double> (1, numberOfCoefficients);
 	my numberOfCoefficients = numberOfCoefficients;
 	my xmin = xmin; my xmax = xmax;
 }
 
-FunctionTerms FunctionTerms_create (double xmin, double xmax, long numberOfCoefficients) {
+autoFunctionTerms FunctionTerms_create (double xmin, double xmax, long numberOfCoefficients) {
 	try {
 		autoFunctionTerms me = Thing_new (FunctionTerms);
-		FunctionTerms_init (me.peek(), xmin, xmax, numberOfCoefficients);
-		return me.transfer();
+		FunctionTerms_init (me.get(), xmin, xmax, numberOfCoefficients);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FunctionTerms not created.");
 	}
 }
 
-void FunctionTerms_initFromString (I, double xmin, double xmax, const char32 *s, int allowTrailingZeros) {
-	iam (FunctionTerms);
+void FunctionTerms_initFromString (FunctionTerms me, double xmin, double xmax, const char32 *s, int allowTrailingZeros) {
 	long numberOfCoefficients;
 	autoNUMvector<double> numbers (NUMstring_to_numbers (s, &numberOfCoefficients), 1);
 	if (! allowTrailingZeros) {
@@ -315,62 +319,52 @@ void FunctionTerms_initFromString (I, double xmin, double xmax, const char32 *s,
 	NUMvector_copyElements (numbers.peek(), my coefficients, 1, numberOfCoefficients);
 }
 
-long FunctionTerms_getDegree (I) {
-	iam (FunctionTerms);
+long FunctionTerms_getDegree (FunctionTerms me) {
 	return my v_getDegree ();
 }
 
-void FunctionTerms_setDomain (I, double xmin, double xmax) {
-	iam (FunctionTerms);
+void FunctionTerms_setDomain (FunctionTerms me, double xmin, double xmax) {
 	my xmin = xmin; my xmax = xmax;
 }
 
-double FunctionTerms_evaluate (I, double x) {
-	iam (FunctionTerms);
+double FunctionTerms_evaluate (FunctionTerms me, double x) {
 	return my v_evaluate (x);
 }
 
-void FunctionTerms_evaluate_z (I, dcomplex *z, dcomplex *p) {
-	iam (FunctionTerms);
+void FunctionTerms_evaluate_z (FunctionTerms me, dcomplex *z, dcomplex *p) {
 	my v_evaluate_z (z, p);
 }
 
-void FunctionTerms_evaluateTerms (I, double x, double terms[]) {
-	iam (FunctionTerms);
+void FunctionTerms_evaluateTerms (FunctionTerms me, double x, double terms[]) {
 	my v_evaluateTerms (x, terms);
 }
 
-void FunctionTerms_getExtrema (I, double x1, double x2, double *xmin, double *ymin, double *xmax, double *ymax) {
-	iam (FunctionTerms);
+void FunctionTerms_getExtrema (FunctionTerms me, double x1, double x2, double *xmin, double *ymin, double *xmax, double *ymax) {
 	if (x2 <= x1) {
 		x1 = my xmin; x2 = my xmax;
 	}
 	my v_getExtrema (x1, x2, xmin, ymin, xmax, ymax);
 }
 
-double FunctionTerms_getMinimum (I, double x1, double x2) {
-	iam (FunctionTerms);
+double FunctionTerms_getMinimum (FunctionTerms me, double x1, double x2) {
 	double xmin, xmax, ymin, ymax;
 	FunctionTerms_getExtrema (me, x1, x2, &xmin, &ymin, &xmax, &ymax);
 	return ymin;
 }
 
-double FunctionTerms_getXOfMinimum (I, double x1, double x2) {
-	iam (FunctionTerms);
+double FunctionTerms_getXOfMinimum (FunctionTerms me, double x1, double x2) {
 	double xmin, xmax, ymin, ymax;
 	FunctionTerms_getExtrema (me, x1, x2, &xmin, &ymin, &xmax, &ymax);
 	return xmin;
 }
 
-double FunctionTerms_getMaximum (I, double x1, double x2) {
-	iam (FunctionTerms);
+double FunctionTerms_getMaximum (FunctionTerms me, double x1, double x2) {
 	double xmin, xmax, ymin, ymax;
 	FunctionTerms_getExtrema (me, x1, x2, &xmin, &ymin, &xmax, &ymax);
 	return ymax;
 }
 
-double FunctionTerms_getXOfMaximum (I, double x1, double x2) {
-	iam (FunctionTerms);
+double FunctionTerms_getXOfMaximum (FunctionTerms me, double x1, double x2) {
 	double xmin, xmax, ymin, ymax;
 	FunctionTerms_getExtrema (me, x1, x2, &xmin, &ymin, &xmax, &ymax);
 	return xmax;
@@ -436,9 +430,7 @@ static void Graphics_polyline_clipTopBottom (Graphics g, double *x, double *y, l
 	}
 }
 
-void FunctionTerms_draw (I, Graphics g, double xmin, double xmax, double ymin,
-                         double ymax, int extrapolate, int garnish) {
-	iam (FunctionTerms);
+void FunctionTerms_draw (FunctionTerms me, Graphics g, double xmin, double xmax, double ymin, double ymax, int extrapolate, int garnish) {
 	long numberOfPoints = 1000;
 
 	autoNUMvector<double> y (1, numberOfPoints + 1);
@@ -482,29 +474,26 @@ void FunctionTerms_draw (I, Graphics g, double xmin, double xmax, double ymin,
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-void FunctionTerms_drawBasisFunction (I, Graphics g, long index, double xmin,
-                                      double xmax, double ymin, double ymax, int extrapolate, int garnish) {
-	iam (FunctionTerms);
+void FunctionTerms_drawBasisFunction (FunctionTerms me, Graphics g, long index, double xmin, double xmax, double ymin, double ymax, int extrapolate, int garnish) {
 	if (index < 1 || index > my numberOfCoefficients) {
 		return;
 	}
-	autoFunctionTerms thee = (FunctionTerms) Data_copy (me);
+	autoFunctionTerms thee = Data_copy (me);
 
 	for (long i = 1; i <= my numberOfCoefficients; i++) {
 		thy coefficients[i] = 0;
 	}
 	thy coefficients[index] = 1;
 	thy numberOfCoefficients = index;
-	FunctionTerms_draw (thee.peek(), g, xmin, xmax, ymin, ymax, extrapolate, garnish);
+	FunctionTerms_draw (thee.get(), g, xmin, xmax, ymin, ymax, extrapolate, garnish);
 }
 
-void FunctionTerms_setCoefficient (I, long index, double value) {
-	iam (FunctionTerms);
+void FunctionTerms_setCoefficient (FunctionTerms me, long index, double value) {
 	if (index < 1 || index > my numberOfCoefficients) {
 		Melder_throw (U"Idex out of range [1, ", my numberOfCoefficients, U"].");
 	}
@@ -547,56 +536,68 @@ void structPolynomial :: v_evaluateTerms (double x, double terms[]) {
 	}
 }
 
-void structPolynomial :: v_getExtrema (double x1, double x2, double *lxmin, double *ymin, double *lxmax, double *ymax) {
+void structPolynomial :: v_getExtrema (double x1, double x2, double *p_xmin, double *p_ymin, double *p_xmax, double *p_ymax) {
 	try {
 		long degree = numberOfCoefficients - 1;
 
-		*lxmin = x1; *ymin = v_evaluate (x1);
-		*lxmax = x2; *ymax = v_evaluate (x2);
-		if (*ymin > *ymax) {
+		double xmn = x1, ymn = v_evaluate (x1);
+		double xmx = x2, ymx = v_evaluate (x2);
+		if (ymn > ymx) {
 			/* Swap */
-			double t = *ymin; *ymin = *ymax; *ymax = t;
-			t = *lxmin; *lxmin = *lxmax; *lxmax = t;
+			double t = ymn; ymn = ymx; ymx = t;
+			t = xmn; xmn = xmx; xmx = t;
 		}
 
 		if (degree < 2) {
 			return;
 		}
 		autoPolynomial d = Polynomial_getDerivative (this);
-		autoRoots r = Polynomial_to_Roots (d.peek());
+		autoRoots r = Polynomial_to_Roots (d.get());
 
 		for (long i = 1; i <= degree - 1; i++) {
 			double x = (r -> v[i]).re;
 			if (x > x1 && x < x2) {
 				double y = v_evaluate (x);
-				if (y > *ymax) {
-					*ymax = y; *lxmax = x;
-				} else if (y < *ymin) {
-					*ymin = y; *lxmin = x;
+				if (y > ymx) {
+					ymx = y; xmx = x;
+				} else if (y < ymn) {
+					ymn = y; xmn = x;
 				}
 			}
 		}
+		if (p_xmin) {
+			*p_xmin = xmn;
+		}
+		if (p_xmax) {
+			*p_xmax = xmx;
+		}
+		if (p_ymin) {
+			*p_ymin = ymn;
+		}
+		if (p_ymax) {
+			*p_ymax = ymx;
+		}
 	} catch (MelderError) {
-		structFunctionTerms :: v_getExtrema (x1, x2, lxmin, ymin, lxmax, ymax);
+		structFunctionTerms :: v_getExtrema (x1, x2, p_xmin, p_ymin, p_xmax, p_ymax);
 		Melder_clearError ();
 	}
 }
 
-Polynomial Polynomial_create (double lxmin, double lxmax, long degree) {
+autoPolynomial Polynomial_create (double lxmin, double lxmax, long degree) {
 	try {
 		autoPolynomial me = Thing_new (Polynomial);
-		FunctionTerms_init (me.peek(), lxmin, lxmax, degree + 1);
-		return me.transfer();
+		FunctionTerms_init (me.get(), lxmin, lxmax, degree + 1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polynomial not created.");
 	}
 }
 
-Polynomial Polynomial_createFromString (double lxmin, double lxmax, const char32 *s) {
+autoPolynomial Polynomial_createFromString (double lxmin, double lxmax, const char32 *s) {
 	try {
 		autoPolynomial me = Thing_new (Polynomial);
-		FunctionTerms_initFromString (me.peek(), lxmin, lxmax, s, 0);
-		return me.transfer();
+		FunctionTerms_initFromString (me.get(), lxmin, lxmax, s, 0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polynomial not created from string.");
 	}
@@ -622,14 +623,14 @@ void Polynomial_scaleCoefficients_monic (Polynomial me) {
 		x' = (2 * x - (xmin + xmax)) / (xmax - xmin)   -1 < x' < x.
 	This procedure transforms x' back to x.
 */
-Polynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax) {
+autoPolynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax) {
 	try {
 		Melder_assert (xmin < xmax);
 
 		autoPolynomial thee = Polynomial_create (xmin, xmax, my numberOfCoefficients - 1);
 		thy coefficients[1] = my coefficients[1];
 		if (my numberOfCoefficients == 1) {
-			return thee.transfer();
+			return thee;
 		}
 
 		// x = a x + b
@@ -642,7 +643,7 @@ Polynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax) {
 		thy coefficients[2] = my coefficients[2] * a;
 		thy coefficients[1] += my coefficients[2] * b;
 		if (my numberOfCoefficients == 2) {
-			return thee.transfer();
+			return thee;
 		}
 		autoNUMvector<double> buf (1, 3 * my numberOfCoefficients);
 		double *pn = buf.peek();
@@ -664,14 +665,13 @@ Polynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax) {
 			pnm2 = t1;
 			pn = t2;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"");
 	}
 }
 
-double Polynomial_evaluate (I, double x) {
-	iam (Polynomial);
+double Polynomial_evaluate (Polynomial me, double x) {
 	return my v_evaluate (x);
 }
 
@@ -695,7 +695,7 @@ static void Polynomial_evaluate_z_cart (Polynomial me, double r, double phi, dou
 }
 
 
-Polynomial Polynomial_getDerivative (Polynomial me) {
+autoPolynomial Polynomial_getDerivative (Polynomial me) {
 	try {
 		if (my numberOfCoefficients == 1) {
 			return Polynomial_create (my xmin, my xmax, 0);
@@ -704,19 +704,19 @@ Polynomial Polynomial_getDerivative (Polynomial me) {
 		for (long i = 1; i <= thy numberOfCoefficients; i++) {
 			thy coefficients[i] = i * my coefficients[i + 1];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no derivative created.");
 	}
 }
 
-Polynomial Polynomial_getPrimitive (Polynomial me) {
+autoPolynomial Polynomial_getPrimitive (Polynomial me) {
 	try {
 		autoPolynomial thee = Polynomial_create (my xmin, my xmax, my numberOfCoefficients);
 		for (long i = 1; i <= my numberOfCoefficients; i++) {
 			thy coefficients[i + 1] = my coefficients[i] / i;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no primitive created.");
 	}
@@ -727,11 +727,11 @@ double Polynomial_getArea (Polynomial me, double xmin, double xmax) {
 		xmin = my xmin; xmax = my xmax;
 	}
 	autoPolynomial p = Polynomial_getPrimitive (me);
-	double area = FunctionTerms_evaluate (p.peek(), xmax) - FunctionTerms_evaluate (p.peek(), xmin);
+	double area = FunctionTerms_evaluate (p.get(), xmax) - FunctionTerms_evaluate (p.get(), xmin);
 	return area;
 }
 
-Polynomial Polynomials_multiply (Polynomial me, Polynomial thee) {
+autoPolynomial Polynomials_multiply (Polynomial me, Polynomial thee) {
 	try {
 		long n1 = my numberOfCoefficients, n2 = thy numberOfCoefficients;
 
@@ -747,30 +747,31 @@ Polynomial Polynomials_multiply (Polynomial me, Polynomial thee) {
 				his coefficients [k] += my coefficients[i] * thy coefficients[j];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Polynomials not multiplied.");
 	}
 }
 
-void Polynomials_divide (Polynomial me, Polynomial thee, Polynomial *q, Polynomial *r) {
+void Polynomials_divide (Polynomial me, Polynomial thee, autoPolynomial *q, autoPolynomial *r) {
 	long degree, m = my numberOfCoefficients, n = thy numberOfCoefficients;
 
-	if (*q == 0 && *r == 0) {
+	if (! q  && ! r) {
 		return;
 	}
 	autoNUMvector<double> qc (1, m);
 	autoNUMvector<double> rc (1, m);
-	autoPolynomial aq = 0, ar = 0;
+	autoPolynomial aq, ar;
 	polynomial_divide (my coefficients, m, thy coefficients, n, qc.peek(), rc.peek());
-	if (*q) {
+	if (q) {
 		degree = MAX (m - n, 0);
-		aq.reset (Polynomial_create (my xmin, my xmax, degree));
+		aq = Polynomial_create (my xmin, my xmax, degree);
 		if (degree >= 0) {
 			NUMvector_copyElements (qc.peek(), aq -> coefficients, 1, degree + 1);
 		}
+		*q = aq.move();
 	}
-	if (*r) {
+	if (r) {
 		degree = n - 2;
 		if (m >= n) {
 			degree --;
@@ -781,11 +782,10 @@ void Polynomials_divide (Polynomial me, Polynomial thee, Polynomial *q, Polynomi
 		while (degree > 1 && rc[degree] == 0) {
 			degree--;
 		}
-		ar.reset (Polynomial_create (my xmin, my xmax, degree));
+		ar = Polynomial_create (my xmin, my xmax, degree);
 		NUMvector_copyElements (rc.peek(), ar -> coefficients, 1, degree + 1);
+		*r = ar.move();
 	}
-	*q = aq.transfer();
-	*r = ar.transfer();
 }
 
 
@@ -842,38 +842,37 @@ void structLegendreSeries :: v_evaluateTerms (double x, double terms[]) {
 	}
 }
 
-void structLegendreSeries :: v_getExtrema (double x1, double x2,
-        double *lxmin, double *ymin, double *lxmax, double *ymax) {
+void structLegendreSeries :: v_getExtrema (double x1, double x2, double *p_xmin, double *p_ymin, double *p_xmax, double *p_ymax) {
 	try {
 		autoPolynomial p = LegendreSeries_to_Polynomial (this);
-		FunctionTerms_getExtrema (p.peek(), x1, x2, lxmin, ymin, lxmax, ymax);
+		FunctionTerms_getExtrema (p.get(), x1, x2, p_xmin, p_ymin, p_xmax, p_ymax);
 	} catch (MelderError) {
-		structFunctionTerms :: v_getExtrema (x1, x2, lxmin, ymin, lxmax, ymax);
+		structFunctionTerms :: v_getExtrema (x1, x2, p_xmin, p_ymin, p_xmax, p_ymax);
 		Melder_clearError ();
 	}
 }
 
-LegendreSeries LegendreSeries_create (double xmin, double xmax, long numberOfPolynomials) {
+autoLegendreSeries LegendreSeries_create (double xmin, double xmax, long numberOfPolynomials) {
 	try {
 		autoLegendreSeries me = Thing_new (LegendreSeries);
-		FunctionTerms_init (me.peek(), xmin, xmax, numberOfPolynomials);
-		return me.transfer();
+		FunctionTerms_init (me.get(), xmin, xmax, numberOfPolynomials);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LegendreSeries not created.");
 	}
 }
 
-LegendreSeries LegendreSeries_createFromString (double xmin, double xmax, const char32 *s) {
+autoLegendreSeries LegendreSeries_createFromString (double xmin, double xmax, const char32 *s) {
 	try {
 		autoLegendreSeries me = Thing_new (LegendreSeries);
-		FunctionTerms_initFromString (me.peek(), xmin, xmax, s, 0);
-		return me.transfer();
+		FunctionTerms_initFromString (me.get(), xmin, xmax, s, 0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LegendreSeries not created from string.");
 	}
 }
 
-LegendreSeries LegendreSeries_getDerivative (LegendreSeries me) {
+autoLegendreSeries LegendreSeries_getDerivative (LegendreSeries me) {
 	try {
 		autoLegendreSeries thee = LegendreSeries_create (my xmin, my xmax, my numberOfCoefficients - 1);
 
@@ -885,20 +884,20 @@ LegendreSeries LegendreSeries_getDerivative (LegendreSeries me) {
 				thy coefficients [n2 + 1] += (2 * n - 4 * k - 1) * my coefficients[n + 1];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no derivative created.");
 	}
 }
 
-Polynomial LegendreSeries_to_Polynomial (LegendreSeries me) {
+autoPolynomial LegendreSeries_to_Polynomial (LegendreSeries me) {
 	try {
 		double xmin = -1, xmax = 1;
 		autoPolynomial thee = Polynomial_create (xmin, xmax, my numberOfCoefficients - 1);
 
 		thy coefficients[1] = my coefficients[1]; /* * p[1] */
 		if (my numberOfCoefficients == 1) {
-			return thee.transfer();
+			return thee;
 		}
 
 		thy coefficients[2] = my coefficients[2]; /* * p[2] */
@@ -926,9 +925,9 @@ Polynomial LegendreSeries_to_Polynomial (LegendreSeries me) {
 			}
 		}
 		if (my xmin != xmin || my xmax != xmax) {
-			thee.reset (Polynomial_scaleX (thee.peek(), my xmin, my xmax));
+			thee = Polynomial_scaleX (thee.get(), my xmin, my xmax);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Polynomial.");
 	}
@@ -938,11 +937,11 @@ Polynomial LegendreSeries_to_Polynomial (LegendreSeries me) {
 
 Thing_implement (Roots, ComplexVector, 0);
 
-Roots Roots_create (long numberOfRoots) {
+autoRoots Roots_create (long numberOfRoots) {
 	try {
 		autoRoots me = Thing_new (Roots);
-		ComplexVector_init (me.peek(), 1, numberOfRoots);
-		return me.transfer();
+		ComplexVector_init (me.get(), 1, numberOfRoots);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Roots not created.");
 	}
@@ -979,8 +978,7 @@ static void NUMdcvector_extrema_im (dcomplex v[], long lo, long hi, double *min,
 	}
 }
 
-void Roots_draw (Roots me, Graphics g, double rmin, double rmax, double imin,
-                 double imax, const char32 *symbol, int fontSize, int garnish) {
+void Roots_draw (Roots me, Graphics g, double rmin, double rmax, double imin, double imax, const char32 *symbol, int fontSize, int garnish) {
 	int oldFontSize = Graphics_inqFontSize (g);
 	double eps = 1e-6;
 
@@ -1019,19 +1017,19 @@ void Roots_draw (Roots me, Graphics g, double rmin, double rmax, double imin,
 	if (garnish) {
 		Graphics_drawInnerBox (g);
 		if (rmin * rmax < 0) {
-			Graphics_markLeft (g, 0, 1, 1, 1, U"0");
+			Graphics_markLeft (g, 0.0, true, true, true, U"0");
 		}
 		if (imin * imax < 0) {
-			Graphics_markBottom (g, 0, 1, 1, 1, U"0");
+			Graphics_markBottom (g, 0.0, true, true, true, U"0");
 		}
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Imaginary part");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Real part");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Imaginary part");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Real part");
 	}
 }
 
-Roots Polynomial_to_Roots (Polynomial me) {
+autoRoots Polynomial_to_Roots (Polynomial me) {
 	try {
 		long np1 = my numberOfCoefficients, n = np1 - 1, n2 = n * n;
 
@@ -1093,8 +1091,8 @@ Roots Polynomial_to_Roots (Polynomial me) {
 			(thy v[i]).re = wr[ioffset + i];
 			(thy v[i]).im = wi[ioffset + i];
 		}
-		Roots_and_Polynomial_polish (thee.peek(), me);
-		return thee.transfer();
+		Roots_and_Polynomial_polish (thee.get(), me);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no roots can be calculated.");
 	}
@@ -1104,9 +1102,7 @@ void Roots_sort (Roots me) {
 	(void) me;
 }
 
-/*
-	Precondition: complex roots occur in pairs (a,bi), (a,-bi) with b>0
-*/
+// Precondition: complex roots occur in pairs (a,bi), (a,-bi) with b>0
 void Roots_and_Polynomial_polish (Roots me, Polynomial thee) {
 	long i = my min, maxit = 80;
 	while (i <= my max) {
@@ -1124,7 +1120,7 @@ void Roots_and_Polynomial_polish (Roots me, Polynomial thee) {
 	}
 }
 
-Polynomial Roots_to_Polynomial (Roots me) {
+autoPolynomial Roots_to_Polynomial (Roots me) {
 	try {
 		(void) me;
 		throw MelderError();
@@ -1150,7 +1146,7 @@ dcomplex Roots_evaluate_z (Roots me, dcomplex z) {
 	return result;
 }
 
-Spectrum Roots_to_Spectrum (Roots me, double nyquistFrequency, long numberOfFrequencies, double radius) {
+autoSpectrum Roots_to_Spectrum (Roots me, double nyquistFrequency, long numberOfFrequencies, double radius) {
 	try {
 		if (numberOfFrequencies < 2) {
 			Melder_throw (U"NumberOfFrequencies must be greater or equal 2.");
@@ -1165,7 +1161,7 @@ Spectrum Roots_to_Spectrum (Roots me, double nyquistFrequency, long numberOfFreq
 			dcomplex s = Roots_evaluate_z (me, z);
 			thy z[1][i] = s.re; thy z[2][i] = s.im;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum calculated.");
 	}
@@ -1183,7 +1179,7 @@ dcomplex Roots_getRoot (Roots me, long index) {
 }
 
 /* Can be speeded up by doing a FFT */
-Spectrum Polynomial_to_Spectrum (Polynomial me, double nyquistFrequency, long numberOfFrequencies, double radius) {
+autoSpectrum Polynomial_to_Spectrum (Polynomial me, double nyquistFrequency, long numberOfFrequencies, double radius) {
 	try {
 		if (numberOfFrequencies < 2) {
 			Melder_throw (U"NumberOfFrequencies must be greater or equal 2.");
@@ -1196,7 +1192,7 @@ Spectrum Polynomial_to_Spectrum (Polynomial me, double nyquistFrequency, long nu
 			Polynomial_evaluate_z_cart (me, radius, (i - 1) * phi, &re, &im);
 			thy z[1][i] = re; thy z[2][i] = im;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum calculated.");
 	}
@@ -1256,37 +1252,36 @@ void structChebyshevSeries :: v_evaluateTerms (double x, double *terms) {
 	}
 }
 
-void structChebyshevSeries :: v_getExtrema (double x1, double x2,
-        double *lxmin, double *ymin, double *lxmax, double *ymax) {
+void structChebyshevSeries :: v_getExtrema (double x1, double x2, double *p_xmin, double *p_ymin, double *p_xmax, double *p_ymax) {
 	try {
 		autoPolynomial p = ChebyshevSeries_to_Polynomial (this);
-		FunctionTerms_getExtrema (p.peek(), x1, x2, lxmin, ymin, lxmax, ymax);
+		FunctionTerms_getExtrema (p.get(), x1, x2, p_xmin, p_ymin, p_xmax, p_ymax);
 	} catch (MelderError) {
 		Melder_throw (this, U"Extrema cannot be calculated");
 	}
 }
 
-ChebyshevSeries ChebyshevSeries_create (double lxmin, double lxmax, long numberOfPolynomials) {
+autoChebyshevSeries ChebyshevSeries_create (double lxmin, double lxmax, long numberOfPolynomials) {
 	try {
 		autoChebyshevSeries me = Thing_new (ChebyshevSeries);
-		FunctionTerms_init (me.peek(), lxmin, lxmax, numberOfPolynomials);
-		return me.transfer();
+		FunctionTerms_init (me.get(), lxmin, lxmax, numberOfPolynomials);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ChebyshevSeries not created.");
 	}
 }
 
-ChebyshevSeries ChebyshevSeries_createFromString (double lxmin, double lxmax, const char32 *s) {
+autoChebyshevSeries ChebyshevSeries_createFromString (double lxmin, double lxmax, const char32 *s) {
 	try {
 		autoChebyshevSeries me = Thing_new (ChebyshevSeries);
-		FunctionTerms_initFromString (me.peek(), lxmin, lxmax, s, 0);
-		return me.transfer();
+		FunctionTerms_initFromString (me.get(), lxmin, lxmax, s, 0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ChebyshevSeries not created from string.");
 	};
 }
 
-Polynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me) {
+autoPolynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me) {
 	try {
 		double xmin = -1, xmax = 1;
 
@@ -1294,7 +1289,7 @@ Polynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me) {
 
 		thy coefficients[1] = my coefficients[1] /* * p[1] */;
 		if (my numberOfCoefficients == 1) {
-			return thee.transfer();
+			return thee;
 		}
 
 		thy coefficients[2] = my coefficients[2];
@@ -1323,19 +1318,18 @@ Polynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me) {
 			}
 		}
 		if (my xmin != xmin || my xmax != xmax) {
-			thee.reset (Polynomial_scaleX (thee.peek(), my xmin, my xmax));
+			thee = Polynomial_scaleX (thee.get(), my xmin, my xmax);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"; not converted to Polynomial.");
 	};
 }
 
 
-void FunctionTerms_and_RealTier_fit (I, thou, int *freeze, double tol, int ic, Covariance *c) {
-	iam (FunctionTerms); thouart (RealTier);
+void FunctionTerms_and_RealTier_fit (FunctionTerms me, RealTier thee, int freeze[], double tol, int ic, autoCovariance *c) {
 	try {
-		long numberOfData = thy points -> size;
+		long numberOfData = thy points.size;
 		long numberOfParameters = my numberOfCoefficients;
 		long numberOfFreeParameters = numberOfParameters;
 
@@ -1347,9 +1341,9 @@ void FunctionTerms_and_RealTier_fit (I, thou, int *freeze, double tol, int ic, C
 		autoNUMvector<double> terms (1, my numberOfCoefficients);
 		autoNUMvector<double> p (1, numberOfParameters);
 		autoNUMvector<double> y_residual (1, numberOfData);
-		autoCovariance ac = 0;
+		autoCovariance ac;
 		if (ic) {
-			ac.reset (Covariance_create (numberOfParameters));
+			ac = (Covariance_create (numberOfParameters));
 		}
 
 		long k = 1;
@@ -1373,14 +1367,16 @@ void FunctionTerms_and_RealTier_fit (I, thou, int *freeze, double tol, int ic, C
 			Melder_throw (U"Not enough data points in fit interval.");
 		}
 
-		for (long i = 1; i <= numberOfData; i++) {
+		for (long i = 1; i <= numberOfData; i ++) {
 			// Only 'residual variance' must be explained by the model
 			// Evaluate only with the frozen parameters
 
-			RealPoint point = (RealPoint) thy points -> item [i];
-			double x = point -> number, y = point -> value, **u = svd -> u;
-			double y_frozen = numberOfFreeParameters == numberOfParameters ? 0 :
-			                  FunctionTerms_evaluate (frozen.peek(), x);
+			RealPoint point = thy points.at [i];
+			double x = point -> number;
+			double y = point -> value;
+			double** u = svd -> u;
+			double y_frozen = ( numberOfFreeParameters == numberOfParameters ? 0.0 :
+			                    FunctionTerms_evaluate (frozen.get(), x));
 
 			y_residual[i] = (y - y_frozen) / sigma;
 
@@ -1388,9 +1384,10 @@ void FunctionTerms_and_RealTier_fit (I, thou, int *freeze, double tol, int ic, C
 
 			FunctionTerms_evaluateTerms (me, x, terms.peek());
 			k = 0;
-			for (long j = 1; j <= my numberOfCoefficients; j++) {
-				if (! freeze || ! freeze[j]) {
-					k++; u[i][k] = terms[j] / sigma;
+			for (long j = 1; j <= my numberOfCoefficients; j ++) {
+				if (! freeze || ! freeze [j]) {
+					k++;
+					u [i] [k] = terms [j] / sigma;
 				}
 			}
 		}
@@ -1398,58 +1395,55 @@ void FunctionTerms_and_RealTier_fit (I, thou, int *freeze, double tol, int ic, C
 		// SVD and evaluation of the singular values
 
 		if (tol > 0) {
-			SVD_setTolerance (svd.peek(), tol);
+			SVD_setTolerance (svd.get(), tol);
 		}
 
-		SVD_compute (svd.peek());
-		SVD_solve (svd.peek(), y_residual.peek(), p.peek());
+		SVD_compute (svd.get());
+		SVD_solve (svd.get(), y_residual.peek(), p.peek());
 
 		// Put fitted values at correct position
 		k = 1;
-		for (long j = 1; j <= my numberOfCoefficients; j++) {
+		for (long j = 1; j <= my numberOfCoefficients; j ++) {
 			if (! freeze || ! freeze[j]) {
-				my coefficients[j] = p[k++];
+				my coefficients [j] = p [k ++];
 			}
 		}
 
 		if (ic) {
 			svdcvm (svd -> v, numberOfFreeParameters, numberOfParameters, freeze, svd -> d, ac -> data);
 		}
-		*c = ac.transfer();
+		*c = ac.move();
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": no fit.");
 	}
 }
 
 
-Polynomial RealTier_to_Polynomial (I, long degree, double tol, int ic, Covariance *cvm) {
-	iam (RealTier);
+autoPolynomial RealTier_to_Polynomial (RealTier me, long degree, double tol, int ic, autoCovariance *cvm) {
 	try {
 		autoPolynomial thee = Polynomial_create (my xmin, my xmax, degree);
-		FunctionTerms_and_RealTier_fit (thee.peek(), me, 0, tol, ic, cvm);
-		return thee.transfer();
+		FunctionTerms_and_RealTier_fit (thee.get(), me, 0, tol, ic, cvm);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Polynomial fitted.");
 	}
 }
 
-LegendreSeries RealTier_to_LegendreSeries (I, long degree, double tol, int ic, Covariance *cvm) {
-	iam (RealTier);
+autoLegendreSeries RealTier_to_LegendreSeries (RealTier me, long degree, double tol, int ic, autoCovariance *cvm) {
 	try {
 		autoLegendreSeries thee = LegendreSeries_create (my xmin, my xmax, degree);
-		FunctionTerms_and_RealTier_fit (thee.peek(), me, 0, tol, ic, cvm);
-		return thee.transfer();
+		FunctionTerms_and_RealTier_fit (thee.get(), me, 0, tol, ic, cvm);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no LegendreSeries fitted.");
 	}
 }
 
-ChebyshevSeries RealTier_to_ChebyshevSeries (I, long degree, double tol, int ic, Covariance *cvm) {
-	iam (RealTier);
+autoChebyshevSeries RealTier_to_ChebyshevSeries (RealTier me, long degree, double tol, int ic, autoCovariance *cvm) {
 	try {
 		autoChebyshevSeries thee = ChebyshevSeries_create (my xmin, my xmax, degree);
-		FunctionTerms_and_RealTier_fit (thee.peek(), me, 0, tol, ic, cvm);
-		return thee.transfer();
+		FunctionTerms_and_RealTier_fit (thee.get(), me, 0, tol, ic, cvm);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U":no ChebyshevSeries fitted.");
 	};
@@ -1581,8 +1575,7 @@ long structSpline :: v_getOrder () {
 }
 
 /* Precondition: FunctionTerms part inited + degree */
-static void Spline_initKnotsFromString (I, long degree, const char32 *interiorKnots) {
-	iam (Spline);
+static void Spline_initKnotsFromString (Spline me, long degree, const char32 *interiorKnots) {
 
 	if (degree > Spline_MAXIMUM_DEGREE) {
 		Melder_throw (U"Degree must be <= 20.");
@@ -1614,8 +1607,7 @@ static void Spline_initKnotsFromString (I, long degree, const char32 *interiorKn
 	my knots[my numberOfKnots] = my xmax;
 }
 
-void Spline_init (I, double xmin, double xmax, long degree, long numberOfCoefficients, long numberOfKnots) {
-	iam (Spline);
+void Spline_init (Spline me, double xmin, double xmax, long degree, long numberOfCoefficients, long numberOfKnots) {
 
 	if (degree > Spline_MAXIMUM_DEGREE) {
 		Melder_throw (U"Spline_init: degree must be <= 20.");
@@ -1628,8 +1620,7 @@ void Spline_init (I, double xmin, double xmax, long degree, long numberOfCoeffic
 	my knots[numberOfKnots] = xmax;
 }
 
-void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish) {
-	iam (Spline);
+void Spline_drawKnots (Spline me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	long order = Spline_getOrder (me);
 
 	if (xmax <= xmin) {
@@ -1648,7 +1639,7 @@ void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, dou
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 
 	if (my knots[1] >= xmin && my knots[1] <= xmax) {
-		Graphics_markTop (g, my knots[1], 0, 1, 1,
+		Graphics_markTop (g, my knots[1], false, true, true,
 				! garnish ? U"" :
 				order == 1 ? U"t__1_" :
 				order == 2 ? U"{t__1_, t__2_}" :
@@ -1657,7 +1648,7 @@ void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, dou
 	}
 	for (long i = 2; i <= my numberOfKnots - 1; i++) {
 		if (my knots[i] >= xmin && my knots[i] <= xmax) {
-			Graphics_markTop (g, my knots[i], 0, 1, 1,
+			Graphics_markTop (g, my knots[i], false, true, true,
 					! garnish ? U"" :
 					Melder_cat (U"t__", i + order - 1, U"_")
 				);
@@ -1665,7 +1656,7 @@ void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, dou
 	}
 	if (my knots[my numberOfKnots] >= xmin && my knots[my numberOfKnots] <= xmax) {
 		long numberOfKnots = ! garnish ? 0 : my numberOfKnots + 2 * (order - 1);
-		Graphics_markTop (g, my knots[my numberOfKnots], 0, 1, 1,
+		Graphics_markTop (g, my knots[my numberOfKnots], false, true, true,
 				! garnish ? U"" :
 				order == 1 ? Melder_cat (U"t__", numberOfKnots, U"_") :
 				order == 2 ? Melder_cat (U"{t__", numberOfKnots - 1, U"_, t__", numberOfKnots, U"_}") :
@@ -1674,14 +1665,12 @@ void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, dou
 	}
 }
 
-long Spline_getOrder (I) {
-	iam (Spline);
+long Spline_getOrder (Spline me) {
 	return my v_getOrder ();
 }
 
-Spline Spline_scaleX (I, double xmin, double xmax) {
+autoSpline Spline_scaleX (Spline me, double xmin, double xmax) {
 	try {
-		iam (Spline);
 		Melder_assert (xmin < xmax);
 
 		autoSpline thee = Data_copy (me);
@@ -1698,7 +1687,7 @@ Spline Spline_scaleX (I, double xmin, double xmax) {
 		for (long i = 1; i <= my numberOfKnots; i++) {
 			thy knots[i] = a * my knots[i] + b;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Scaled Spline not created.");
 	}
@@ -1713,8 +1702,9 @@ double structMSpline :: v_evaluate (double x) {
 
 	double result = 0;
 	for (long i = 1; i <= numberOfCoefficients; i++) {
-		if (coefficients[i] != 0) result += coefficients[i] *
-			                                    NUMmspline2 (knots, numberOfKnots, degree + 1, i, x);
+		if (coefficients[i] != 0) {
+			result += coefficients[i] * NUMmspline2 (knots, numberOfKnots, degree + 1, i, x);
+		}
 	}
 	return result;
 }
@@ -1731,27 +1721,27 @@ void structMSpline :: v_evaluateTerms (double x, double *terms) {
 
 Thing_implement (MSpline, Spline, 0);
 
-MSpline MSpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots) {
+autoMSpline MSpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots) {
 	try {
 		autoMSpline me = Thing_new (MSpline);
 		long numberOfCoefficients = numberOfInteriorKnots + degree + 1;
 		long numberOfKnots = numberOfCoefficients + degree + 1;
-		Spline_init (me.peek(), xmin, xmax, degree, numberOfCoefficients, numberOfKnots);
-		return me.transfer();
+		Spline_init (me.get(), xmin, xmax, degree, numberOfCoefficients, numberOfKnots);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MSpline not created.");
 	}
 }
 
-MSpline MSpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots) {
+autoMSpline MSpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots) {
 	try {
 		if (degree > Spline_MAXIMUM_DEGREE) {
 			Melder_throw (U"Degree should be <= 20.");
 		}
 		autoMSpline me = Thing_new (MSpline);
-		FunctionTerms_initFromString (me.peek(), xmin, xmax, coef, 1);
-		Spline_initKnotsFromString (me.peek(), degree, interiorKnots);
-		return me.transfer();
+		FunctionTerms_initFromString (me.get(), xmin, xmax, coef, 1);
+		Spline_initKnotsFromString (me.get(), degree, interiorKnots);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MSpline not created from strings.");
 	}
@@ -1766,8 +1756,9 @@ double structISpline :: v_evaluate (double x) {
 
 	double result = 0;
 	for (long i = 1; i <= numberOfCoefficients; i++) {
-		if (coefficients[i] != 0) result += coefficients[i] *
-			                                    NUMispline2 (knots, numberOfKnots, degree, i, x);
+		if (coefficients[i] != 0) {
+			result += coefficients[i] * NUMispline2 (knots, numberOfKnots, degree, i, x);
+		}
 	}
 	return result;
 }
@@ -1784,27 +1775,27 @@ long structISpline :: v_getOrder () {
 
 Thing_implement (ISpline, Spline, 0);
 
-ISpline ISpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots) {
+autoISpline ISpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots) {
 	try {
 		autoISpline me = Thing_new (ISpline);
 		long numberOfCoefficients = numberOfInteriorKnots + degree;
 		long numberOfKnots = numberOfCoefficients + degree;
-		Spline_init (me.peek(), xmin, xmax, degree, numberOfCoefficients, numberOfKnots);
-		return me.transfer();
+		Spline_init (me.get(), xmin, xmax, degree, numberOfCoefficients, numberOfKnots);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ISpline not created.");
 	}
 }
 
-ISpline ISpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots) {
+autoISpline ISpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots) {
 	try {
 		if (degree > Spline_MAXIMUM_DEGREE) {
 			Melder_throw (U"Degree should be <= 20.");
 		}
 		autoISpline me = Thing_new (ISpline);
-		FunctionTerms_initFromString (me.peek(), xmin, xmax, coef, 1);
-		Spline_initKnotsFromString (me.peek(), degree, interiorKnots);
-		return me.transfer();
+		FunctionTerms_initFromString (me.get(), xmin, xmax, coef, 1);
+		Spline_initKnotsFromString (me.get(), degree, interiorKnots);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ISpline not created from strings.");
 	};
@@ -1845,10 +1836,9 @@ RationalFunction RationalFunction_createFromString (I, double xmin, double xmax,
 // divide out common roots
 RationalFunction RationalFunction_simplify (RationalFunction me)
 {
-	Roots num = NULL, denum = NULL; RationalFunction thee = NULL;
+	Roots num = nullptr, denum = nullptr; RationalFunction thee = nullptr;
 	if (! (num = Polynomial_to_Roots (my num)) ||
 		! (denum = Polynomial_to_Roots (my denum))) goto end;
-
 }
 
 */
diff --git a/dwtools/Polynomial.h b/dwtools/Polynomial.h
index 161ddc3..0757a4e 100644
--- a/dwtools/Polynomial.h
+++ b/dwtools/Polynomial.h
@@ -2,21 +2,20 @@
 #define _Polynomial_h_
 /* Polynomial.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -39,36 +38,34 @@
 #define Spline_MAXIMUM_DEGREE 20
 
 #include "Polynomial_def.h"
-oo_CLASS_CREATE (FunctionTerms, Function);
 
-void FunctionTerms_init (I, double xmin, double xmax, long numberOfCoefficients);
+void FunctionTerms_init (FunctionTerms me, double xmin, double xmax, long numberOfCoefficients);
 
-void FunctionTerms_initFromString (I, double xmin, double xmax, const char32 *s, int allowTrailingZeros);
+void FunctionTerms_initFromString (FunctionTerms me, double xmin, double xmax, const char32 *s, int allowTrailingZeros);
 
-FunctionTerms FunctionTerms_create (double xmin, double xmax, long numberOfCoefficients);
+autoFunctionTerms FunctionTerms_create (double xmin, double xmax, long numberOfCoefficients);
 
-void FunctionTerms_setDomain (I, double xmin, double xmax);
+void FunctionTerms_setDomain (FunctionTerms me, double xmin, double xmax);
 
-void FunctionTerms_setCoefficient (I, long index, double value);
+void FunctionTerms_setCoefficient (FunctionTerms me, long index, double value);
 
-double FunctionTerms_evaluate (I, double x);
+double FunctionTerms_evaluate (FunctionTerms me, double x);
 
-void FunctionTerms_evaluate_z (I, dcomplex *z, dcomplex *p);
+void FunctionTerms_evaluate_z (FunctionTerms me, dcomplex *z, dcomplex *p);
 
-void FunctionTerms_evaluateTerms (I, double x, double terms[]);
+void FunctionTerms_evaluateTerms (FunctionTerms me, double x, double terms[]);
 
-void FunctionTerms_getExtrema (I, double x1, double x2, double *xmin, double *ymin,
-	double *xmax, double *ymax);
+void FunctionTerms_getExtrema (FunctionTerms me, double x1, double x2, double *xmin, double *ymin, double *xmax, double *ymax);
 
-long FunctionTerms_getDegree (I);
+long FunctionTerms_getDegree (FunctionTerms me);
 
-double FunctionTerms_getMinimum (I, double x1, double x2);
+double FunctionTerms_getMinimum (FunctionTerms me, double x1, double x2);
 
-double FunctionTerms_getXOfMinimum (I, double x1, double x2);
+double FunctionTerms_getXOfMinimum (FunctionTerms me, double x1, double x2);
 
-double FunctionTerms_getMaximum (I, double x1, double x2);
+double FunctionTerms_getMaximum (FunctionTerms me, double x1, double x2);
 
-double FunctionTerms_getXOfMaximum (I, double x1, double x2);
+double FunctionTerms_getXOfMaximum (FunctionTerms me, double x1, double x2);
 /*
 	Returns minimum and maximum function values (ymin, ymax) in
 	interval [x1, x2] and their x-values (xmin, xmax).
@@ -76,14 +73,14 @@ double FunctionTerms_getXOfMaximum (I, double x1, double x2);
 		my xmin <= x1 < x2 <= my xmax
 */
 
-void FunctionTerms_draw (I, Graphics g, double xmin, double xmax, double ymin, double ymax,
+void FunctionTerms_draw (FunctionTerms me, Graphics g, double xmin, double xmax, double ymin, double ymax,
 	int extrapolate, int garnish);
 /*
 	Extrapolate only for functions whose domain is extendable and that can be extrapolated.
 	Polynomials can be extrapolated.
 	LegendreSeries and ChebyshevSeries cannot be extrapolated.
 */
-void FunctionTerms_drawBasisFunction (I, Graphics g, long index, double xmin, double xmax,
+void FunctionTerms_drawBasisFunction (FunctionTerms me, Graphics g, long index, double xmin, double xmax,
 	double ymin, double ymax, int extrapolate, int garnish);
 
 Thing_define (Polynomial, FunctionTerms) {
@@ -96,14 +93,14 @@ Thing_define (Polynomial, FunctionTerms) {
 		//virtual long v_getDegree ();   David, is het OK dat deze niet overschreven wordt? Ja
 };
 
-Polynomial Polynomial_create (double xmin, double xmax, long degree);
+autoPolynomial Polynomial_create (double xmin, double xmax, long degree);
 
-Polynomial Polynomial_createFromString (double xmin, double xmax, const char32 *s);
+autoPolynomial Polynomial_createFromString (double xmin, double xmax, const char32 *s);
 
 void Polynomial_scaleCoefficients_monic (Polynomial me);
 /* Make coefficent of leading term 1.0 */
 
-Polynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax);
+autoPolynomial Polynomial_scaleX (Polynomial me, double xmin, double xmax);
 /* x' = (x-location) / scale */
 
 void Polynomial_evaluate_z (Polynomial me, dcomplex *z, dcomplex *p);
@@ -112,19 +109,19 @@ void Polynomial_evaluate_z (Polynomial me, dcomplex *z, dcomplex *p);
 
 double Polynomial_getArea (Polynomial me, double xmin, double xmax);
 
-Polynomial Polynomial_getDerivative (Polynomial me);
+autoPolynomial Polynomial_getDerivative (Polynomial me);
 
-Polynomial Polynomial_getPrimitive (Polynomial me);
+autoPolynomial Polynomial_getPrimitive (Polynomial me);
 
-void Polynomial_draw (I, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
+void Polynomial_draw (Polynomial me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
 
-double Polynomial_evaluate (I, double x);
+double Polynomial_evaluate (Polynomial me, double x);
 
-void Polynomial_evaluateTerms (I, double x, double terms[]);
+void Polynomial_evaluateTerms (Polynomial me, double x, double terms[]);
 
-Polynomial Polynomials_multiply (Polynomial me, Polynomial thee);
+autoPolynomial Polynomials_multiply (Polynomial me, Polynomial thee);
 
-void Polynomials_divide (Polynomial me, Polynomial thee, Polynomial *q, Polynomial *r);
+void Polynomials_divide (Polynomial me, Polynomial thee, autoPolynomial *q, autoPolynomial *r);
 
 Thing_define (LegendreSeries, FunctionTerms) {
 	// overridden methods:
@@ -134,18 +131,18 @@ Thing_define (LegendreSeries, FunctionTerms) {
 		virtual void v_getExtrema (double x1, double x2, double *xmin, double *ymin, double *xmax, double *ymax);
 };
 
-LegendreSeries LegendreSeries_create (double xmin, double xmax, long numberOfPolynomials);
+autoLegendreSeries LegendreSeries_create (double xmin, double xmax, long numberOfPolynomials);
 
-LegendreSeries LegendreSeries_createFromString (double xmin, double xmax, const char32 *s);
+autoLegendreSeries LegendreSeries_createFromString (double xmin, double xmax, const char32 *s);
 
-LegendreSeries LegendreSeries_getDerivative (LegendreSeries me);
+autoLegendreSeries LegendreSeries_getDerivative (LegendreSeries me);
 
-Polynomial LegendreSeries_to_Polynomial (LegendreSeries me);
+autoPolynomial LegendreSeries_to_Polynomial (LegendreSeries me);
 
 Thing_define (Roots, ComplexVector) {
 };
 
-Roots Roots_create (long numberOfRoots);
+autoRoots Roots_create (long numberOfRoots);
 
 void Roots_fixIntoUnitCircle (Roots me);
 
@@ -154,7 +151,7 @@ void Roots_sort (Roots me);
 
 dcomplex Roots_evaluate_z (Roots me, dcomplex z);
 
-Roots Polynomial_to_Roots_ev (Polynomial me);
+autoRoots Polynomial_to_Roots_ev (Polynomial me);
 
 long Roots_getNumberOfRoots (Roots me);
 
@@ -162,26 +159,23 @@ void Roots_draw (Roots me, Graphics g, double rmin, double rmax, double imin, do
 	const char32 *symbol, int fontSize, int garnish);
 
 dcomplex Roots_getRoot (Roots me, long index);
+
 void Roots_setRoot (Roots me, long index, double re, double im);
 
-Spectrum Roots_to_Spectrum (Roots me, double nyquistFrequency,
-	long numberOfFrequencies, double radius);
+autoSpectrum Roots_to_Spectrum (Roots me, double nyquistFrequency, long numberOfFrequencies, double radius);
 
-Roots Polynomial_to_Roots (Polynomial me);
+autoRoots Polynomial_to_Roots (Polynomial me);
 /* Find roots of polynomial and polish them */
 
 void Roots_and_Polynomial_polish (Roots me, Polynomial thee);
 
-Polynomial Roots_to_Polynomial (Roots me);
+autoPolynomial Roots_to_Polynomial (Roots me);
 
-Polynomial TableOfReal_to_Polynomial (I, long degree, long xcol,
-	long ycol, long scol);
+autoPolynomial TableOfReal_to_Polynomial (TableOfReal me, long degree, long xcol, long ycol, long scol);
 
-LegendreSeries TableOfReal_to_LegendreSeries (I, long numberOfPolynomials,
-	long xcol, long ycol, long scol);
+autoLegendreSeries TableOfReal_to_LegendreSeries (TableOfReal me, long numberOfPolynomials, long xcol, long ycol, long scol);
 
-Spectrum Polynomial_to_Spectrum (Polynomial me, double nyquistFrequency,
-	long numberOfFrequencies, double radius);
+autoSpectrum Polynomial_to_Spectrum (Polynomial me, double nyquistFrequency, long numberOfFrequencies, double radius);
 
 /*
 	A ChebyshevSeries p(x) on a domain [xmin,xmax] is defined as the
@@ -200,21 +194,19 @@ Thing_define (ChebyshevSeries, FunctionTerms) {
 		virtual void v_getExtrema (double x1, double x2, double *xmin, double *ymin, double *xmax, double *ymax);
 };
 
-ChebyshevSeries ChebyshevSeries_create (double xmin, double xmax, long numberOfPolynomials);
-
-ChebyshevSeries ChebyshevSeries_createFromString (double xmin, double xmax, const char32 *s);
+autoChebyshevSeries ChebyshevSeries_create (double xmin, double xmax, long numberOfPolynomials);
 
-Polynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me);
+autoChebyshevSeries ChebyshevSeries_createFromString (double xmin, double xmax, const char32 *s);
 
-oo_CLASS_CREATE (Spline, FunctionTerms);
+autoPolynomial ChebyshevSeries_to_Polynomial (ChebyshevSeries me);
 
-void Spline_init (I, double xmin, double xmax, long degree, long numberOfCoefficients, long numberOfKnots);
+void Spline_init (Spline me, double xmin, double xmax, long degree, long numberOfCoefficients, long numberOfKnots);
 
-long Spline_getOrder (I);
+long Spline_getOrder (Spline me);
 
-void Spline_drawKnots (I, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
+void Spline_drawKnots (Spline me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
 
-Spline Spline_scaleX (I, double xmin, double xmax);
+autoSpline Spline_scaleX (Spline me, double xmin, double xmax);
 /* scale domain and knots to new domain */
 
 Thing_define (MSpline, Spline) {
@@ -224,9 +216,9 @@ Thing_define (MSpline, Spline) {
 		virtual void v_evaluateTerms (double x, double terms[]);
 };
 
-MSpline MSpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots);
+autoMSpline MSpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots);
 
-MSpline MSpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots);
+autoMSpline MSpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots);
 
 Thing_define (ISpline, Spline) {
 	// overridden methods:
@@ -236,17 +228,18 @@ Thing_define (ISpline, Spline) {
 		virtual long v_getOrder ();
 };
 
-ISpline ISpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots);
-ISpline ISpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots);
+autoISpline ISpline_create (double xmin, double xmax, long degree, long numberOfInteriorKnots);
+
+autoISpline ISpline_createFromStrings (double xmin, double xmax, long degree, const char32 *coef, const char32 *interiorKnots);
 
 /****************** fit **********************************************/
 
-void FunctionTerms_and_RealTier_fit (I, thou, int *freezeCoefficients, double tol, int ic, Covariance *c);
+void FunctionTerms_and_RealTier_fit (FunctionTerms me, RealTier thee, int freezeCoefficients[], double tol, int ic, autoCovariance *c);
 
-Polynomial RealTier_to_Polynomial (I, long degree, double tol, int ic, Covariance *cvm);
+autoPolynomial RealTier_to_Polynomial (RealTier me, long degree, double tol, int ic, autoCovariance *cvm);
 
-LegendreSeries RealTier_to_LegendreSeries (I, long degree, double tol, int ic, Covariance *cvm);
+autoLegendreSeries RealTier_to_LegendreSeries (RealTier me, long degree, double tol, int ic, autoCovariance *cvm);
 
-ChebyshevSeries RealTier_to_ChebyshevSeries (I, long degree, double tol, int ic, Covariance *cvm);
+autoChebyshevSeries RealTier_to_ChebyshevSeries (RealTier me, long degree, double tol, int ic, autoCovariance *cvm);
 
 #endif /* _Polynomial_h_ */
diff --git a/dwtools/Polynomial_def.h b/dwtools/Polynomial_def.h
index 74ef361..b68dbc3 100644
--- a/dwtools/Polynomial_def.h
+++ b/dwtools/Polynomial_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2002 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/Procrustes.cpp b/dwtools/Procrustes.cpp
index 53ef214..33d1c77 100644
--- a/dwtools/Procrustes.cpp
+++ b/dwtools/Procrustes.cpp
@@ -1,20 +1,19 @@
 /* Procrustes.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -52,7 +51,7 @@ Thing_implement (Procrustes, AffineTransform, 0);
 void structProcrustes :: v_transform (double **in, long nrows, double **out) {
 	for (long i = 1; i <= nrows; i++) {
 		for (long j = 1; j <= n; j++) {
-			double tmp = 0;
+			double tmp = 0.0;
 			for (long k = 1; k <= n; k++) {
 				tmp += in[i][k] * r[k][j];
 			}
@@ -61,21 +60,21 @@ void structProcrustes :: v_transform (double **in, long nrows, double **out) {
 	}
 }
 
-Any structProcrustes :: v_invert () {
+autoAffineTransform structProcrustes :: v_invert () {
 	autoProcrustes thee = Data_copy (this);
 	/*
 		R is symmetric rotation matrix -->
 		inverse is transpose!
 	*/
 
-	thy s = s == 0 ? 1 : 1 / s;
+	thy s = s == 0.0 ? 1.0 : 1.0 / s;
 
 	for (long i = 1; i <= n; i++) {
 		for (long j = i + 1; j <= n; j++) {
 			thy r[i][j] = r[j][i];
 			thy r[j][i] = r[i][j];
 		}
-		thy t[i] = 0;
+		thy t[i] = 0.0;
 		/*
 		for (j = 1; j <= thy n; j++)
 		{
@@ -88,26 +87,26 @@ Any structProcrustes :: v_invert () {
 
 		thy t[i] *= thy s;
 	}
-	return thee.transfer();
+	return thee.move();   // explicit move() seems to be needed because of the type difference
 }
 
 static void Procrustes_setDefaults (Procrustes me) {
-	my s = 1;
+	my s = 1.0;
 	for (long i = 1; i <= my n; i++) {
-		my t[i] = 0;
-		my r[i][i] = 1;
+		my t[i] = 0.0;
+		my r[i][i] = 1.0;
 		for (long j = i + 1; j <= my n; j++) {
-			my r[i][j] = my r[j][i] = 0;
+			my r[i][j] = my r[j][i] = 0.0;
 		}
 	}
 }
 
-Procrustes Procrustes_create (long n) {
+autoProcrustes Procrustes_create (long n) {
 	try {
-		autoProcrustes me = (Procrustes) Thing_new (Procrustes);
-		AffineTransform_init (me.peek(), n);
-		Procrustes_setDefaults (me.peek());
-		return me.transfer();
+		autoProcrustes me = Thing_new (Procrustes);
+		AffineTransform_init (me.get(), n);
+		Procrustes_setDefaults (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Procrustes not created.");
 	}
diff --git a/dwtools/Procrustes.h b/dwtools/Procrustes.h
index 5995f35..e325aa9 100644
--- a/dwtools/Procrustes.h
+++ b/dwtools/Procrustes.h
@@ -2,21 +2,20 @@
 #define _Procrustes_h_
 /* Procrustes.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,8 +27,7 @@
 #include "AffineTransform.h"
 
 #include "Procrustes_def.h"
-oo_CLASS_CREATE (Procrustes, AffineTransform);
 
-Procrustes Procrustes_create (long n);
+autoProcrustes Procrustes_create (long n);
 
 #endif /* _Procrustes_h_ */
diff --git a/dwtools/Procrustes_def.h b/dwtools/Procrustes_def.h
index 426796f..ff275fd 100644
--- a/dwtools/Procrustes_def.h
+++ b/dwtools/Procrustes_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2005 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -24,9 +23,10 @@ oo_DEFINE_CLASS (Procrustes, AffineTransform)
 	oo_DOUBLE (s)
 
 	#if oo_DECLARING
-		// overridden methods:
-			virtual void v_transform (double **in, long nrows, double **out);
-			virtual Any v_invert ();
+		void v_transform (double **in, long nrows, double **out)
+			override;
+		autoAffineTransform v_invert ()
+			override;
 	#endif
 			
 oo_END_CLASS (Procrustes)	
diff --git a/dwtools/Proximity.cpp b/dwtools/Proximity.cpp
index 7a99aa5..36cc768 100644
--- a/dwtools/Proximity.cpp
+++ b/dwtools/Proximity.cpp
@@ -1,20 +1,19 @@
 /* Proximity.cpp
  *
- * Copyright (C) 1993-2004 David Weenink
+ * Copyright (C) 1993-2004, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,8 +28,8 @@ Thing_implement (Proximity, TableOfReal, 0);
 
 void Proximity_init (Proximity me, long numberOfPoints) {
 	TableOfReal_init (me, numberOfPoints, numberOfPoints);
-	TableOfReal_setSequentialRowLabels (me, 0, 0, NULL, 1, 1);
-	TableOfReal_setSequentialColumnLabels (me, 0, 0, NULL, 1, 1);
+	TableOfReal_setSequentialRowLabels (me, 0, 0, nullptr, 1, 1);
+	TableOfReal_setSequentialColumnLabels (me, 0, 0, nullptr, 1, 1);
 }
 
 /* End of file Proximity.cpp */
diff --git a/dwtools/Proximity.h b/dwtools/Proximity.h
index a6c5477..8f8a67d 100644
--- a/dwtools/Proximity.h
+++ b/dwtools/Proximity.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/Resonator.cpp b/dwtools/Resonator.cpp
index 285edbc..7c8e121 100644
--- a/dwtools/Resonator.cpp
+++ b/dwtools/Resonator.cpp
@@ -1,20 +1,19 @@
 /* Resonator.cpp
  *
- * Copyright (C) 2008-2011 David Weenink
+ * Copyright (C) 2008-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,7 +24,7 @@
 
 #include "Resonator.h"
 
-Thing_implement (Filter, Data, 0);
+Thing_implement (Filter, Daata, 0);
 
 #define SETBC(f,bw) \
 	double r = exp (-NUMpi * dT * bw); \
@@ -55,13 +54,13 @@ void structResonator :: v_setFB (double f, double bw) {
 	a = normalisation == Resonator_NORMALISATION_H0 ? (1.0 - b - c) : (1 + c) * sin (2.0 * NUMpi * f * dT);
 }
 
-Resonator Resonator_create (double dT, int normalisation) {
+autoResonator Resonator_create (double dT, int normalisation) {
 	try {
 		autoResonator me = Thing_new (Resonator);
 		my a = 1; // all-pass
 		my dT = dT;
 		my normalisation = normalisation;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Resonator not created.");
 	}
@@ -110,23 +109,23 @@ double structConstantGainResonator :: v_getOutput (double input) {
 	return output;
 }
 
-ConstantGainResonator ConstantGainResonator_create (double dT) {
+autoConstantGainResonator ConstantGainResonator_create (double dT) {
 	try {
 		autoConstantGainResonator me = Thing_new (ConstantGainResonator);
 		my a = 1; // all-pass
 		my dT = dT;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ConstantGainResonator not created.");
 	}
 }
 
-AntiResonator AntiResonator_create (double dT) {
+autoAntiResonator AntiResonator_create (double dT) {
 	try {
 		autoAntiResonator me = Thing_new (AntiResonator);
 		my a = 1; // all-pass
 		my dT = dT;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"AntiResonator not created.");
 	}
diff --git a/dwtools/Resonator.h b/dwtools/Resonator.h
index 960d630..daa70d4 100644
--- a/dwtools/Resonator.h
+++ b/dwtools/Resonator.h
@@ -2,21 +2,20 @@
 #define _Resonator_h_
 /* Resonator.h
  *
- * Copyright (C) 2008-2011 David Weenink
+ * Copyright (C) 2008-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,7 +25,7 @@
 	
 #include "Sound.h"
 
-Thing_define (Filter, Data) {
+Thing_define (Filter, Daata) {
 	double dT;
 	double a, b, c;
 	double p1, p2;
@@ -66,11 +65,11 @@ Thing_define (ConstantGainResonator, Filter) {
 #define Resonator_NORMALISATION_HMAX 1
 
 
-Resonator Resonator_create (double dT, int normalisation);
+autoResonator Resonator_create (double dT, int normalisation);
 
-ConstantGainResonator ConstantGainResonator_create (double dT);
+autoConstantGainResonator ConstantGainResonator_create (double dT);
 
-AntiResonator AntiResonator_create (double dT);
+autoAntiResonator AntiResonator_create (double dT);
 
 /*
 	Set a,b,c
diff --git a/dwtools/SPINET.cpp b/dwtools/SPINET.cpp
index ad54590..9a938b2 100644
--- a/dwtools/SPINET.cpp
+++ b/dwtools/SPINET.cpp
@@ -1,26 +1,25 @@
 /* SPINET.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  djmw 20020813 GPL header
  djmw 20061212 Changed info to Melder_writeLine<x> format.
- djmw 20071012 Added: o_CAN_WRITE_AS_ENCODING.h
+ djmw 20071012 Added: oo_CAN_WRITE_AS_ENCODING.h
  djmw 20080122 float -> double
   djmw 20110304 Thing_new
 */
@@ -48,13 +47,54 @@
 #include "oo_DESCRIPTION.h"
 #include "SPINET_def.h"
 
-Thing_implement (SPINET, Sampled2, 0);
+Thing_implement (SPINET, SampledXY, 0);
+
+static long SampledXY_getWindowExtrema (SampledXY me, double **z, long ixmin, long ixmax, long iymin, long iymax,
+                                  double *minimum, double *maximum) {
+/*
+	Function:
+		compute the minimum and maximum values of z over all samples inside [ixmin, ixmax] * [iymin, iymax].
+	Arguments:
+		if ixmin = 0, start at first column; if ixmax = 0, end at last column (same for iymin and iymax).
+	Return value:
+		the number of samples inside the window.
+	Postconditions:
+		if result == 0, *minimum and *maximum are not changed;
+*/
+
+	if (ixmin == 0) {
+		ixmin = 1;
+	}
+	if (ixmax == 0) {
+		ixmax = my nx;
+	}
+	if (iymin == 0) {
+		iymin = 1;
+	}
+	if (iymax == 0) {
+		iymax = my ny;
+	}
+	if (ixmin > ixmax || iymin > iymax) {
+		return 0;
+	}
+	*minimum = *maximum = z[iymin][ixmin];
+	for (long iy = iymin; iy <= iymax; iy ++)
+		for (long ix = ixmin; ix <= ixmax; ix ++) {
+			if (z[iy][ix] < *minimum) {
+				*minimum = z[iy][ix];
+			}
+			if (z[iy][ix] > *maximum) {
+				*maximum = z[iy][ix];
+			}
+		}
+	return (ixmax - ixmin + 1) * (iymax - iymin + 1);
+}
 
 void structSPINET :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	double miny, maxy, mins, maxs;
-	if (! Sampled2_getWindowExtrema_d (this, y, 1, nx, 1, ny, & miny, & maxy) ||
-	        ! Sampled2_getWindowExtrema_d (this, s, 1, nx, 1, ny, & mins, & maxs)) {
+	if (! SampledXY_getWindowExtrema (this, y, 1, nx, 1, ny, & miny, & maxy) ||
+	        ! SampledXY_getWindowExtrema (this, s, 1, nx, 1, ny, & mins, & maxs)) {
 		return;
 	}
 	MelderInfo_writeLine (U"Minimum power: ", miny);
@@ -63,53 +103,45 @@ void structSPINET :: v_info () {
 	MelderInfo_writeLine (U"Maximum powerrectified: ", maxs);
 }
 
-SPINET SPINET_create (double tmin, double tmax, long nt, double dt, double t1,
-                      double minimumFrequency, double maximumFrequency, long nFilters,
-                      double excitationErbProportion, double inhibitionErbProportion) {
+autoSPINET SPINET_create (double tmin, double tmax, long nt, double dt, double t1, double minimumFrequency, double maximumFrequency, long nFilters, double excitationErbProportion, double inhibitionErbProportion) {
 	try {
 		autoSPINET me = Thing_new (SPINET);
 		double minErb = NUMhertzToErb (minimumFrequency);
 		double maxErb = NUMhertzToErb (maximumFrequency);
 		double dErb = (maxErb - minErb) / nFilters;
-		Sampled2_init (me.peek(), tmin, tmax, nt, dt, t1,
-		               minErb - dErb / 2, maxErb + dErb / 2, nFilters, dErb, minErb);
+		SampledXY_init (me.get(), tmin, tmax, nt, dt, t1, minErb - dErb / 2.0, maxErb + dErb / 2.0, nFilters, dErb, minErb);
 		my y = NUMmatrix<double> (1, nFilters, 1, nt);
 		my s = NUMmatrix<double> (1, nFilters, 1, nt);
 		my gamma = 4;
 		my excitationErbProportion = excitationErbProportion;
 		my inhibitionErbProportion = inhibitionErbProportion;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SPINET not created.");
 	}
 }
 
-void SPINET_spectralRepresentation (SPINET me, Graphics g, double fromTime, double toTime,
-                                    double fromErb, double toErb, double minimum, double maximum, int enhanced,
-                                    int garnish) {
+void SPINET_spectralRepresentation (SPINET me, Graphics g, double fromTime, double toTime, double fromErb, double toErb, double minimum, double maximum, int enhanced, int garnish) {
 	double **z = enhanced ? my s : my y;
-	autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1,
-	                                 my ymin, my ymax, my ny, my dy, my y1);
+	autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 	for (long j = 1; j <= my ny; j++) {
 		for (long i = 1; i <= my nx; i++) {
 			thy z[j][i] = z[j][i];
 		}
 	}
-	Matrix_paintCells (thee.peek(), g, fromTime, toTime, fromErb, toErb, minimum, maximum);
+	Matrix_paintCells (thee.get(), g, fromTime, toTime, fromErb, toErb, minimum, maximum);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Frequency (ERB)");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textTop (g, 0, enhanced ? U"Cooperative interaction output" :
-		                  U"Gammatone filterbank output");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Frequency (ERB)");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textTop (g, false, enhanced ? U"Cooperative interaction output" : U"Gammatone filterbank output");
 	}
 }
 
-void SPINET_drawSpectrum (SPINET me, Graphics g, double time, double fromErb, double toErb,
-                          double minimum, double maximum, int enhanced, int garnish) {
-	long ifmin, ifmax, icol = Sampled2_xToLowColumn (me, time);   // ppgb: don't use Sampled2_xToColumn for integer rounding
+void SPINET_drawSpectrum (SPINET me, Graphics g, double time, double fromErb, double toErb, double minimum, double maximum, int enhanced, int garnish) {
+	long ifmin, ifmax, icol = Sampled_xToLowIndex (me, time);   // ppgb: don't use Sampled2_xToColumn for integer rounding
 	double **z = enhanced ? my s : my y;
 	if (icol < 1 || icol > my nx) {
 		return;
@@ -118,7 +150,7 @@ void SPINET_drawSpectrum (SPINET me, Graphics g, double time, double fromErb, do
 		fromErb = my ymin;
 		toErb = my ymax;
 	}
-	Sampled2_getWindowSamplesY (me, fromErb, toErb, &ifmin, &ifmax);
+	SampledXY_getWindowSamplesY (me, fromErb, toErb, &ifmin, &ifmax);
 	autoNUMvector<double> spec (1, my ny);
 
 	for (long i = 1; i <= my ny; i++) {
@@ -140,14 +172,14 @@ void SPINET_drawSpectrum (SPINET me, Graphics g, double time, double fromErb, do
 	}
 	Graphics_setInner (g);
 	Graphics_setWindow (g, fromErb, toErb, minimum, maximum);
-	Graphics_function (g, spec.peek(), ifmin, ifmax, Sampled2_rowToY (me, ifmin), Sampled2_rowToY (me, ifmax));
+	Graphics_function (g, spec.peek(), ifmin, ifmax, SampledXY_indexToY (me, ifmin), SampledXY_indexToY (me, ifmax));
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Frequency (ERB)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"strength");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Frequency (ERB)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"strength");
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
diff --git a/dwtools/SPINET.h b/dwtools/SPINET.h
index ce17d2c..e2a4b48 100644
--- a/dwtools/SPINET.h
+++ b/dwtools/SPINET.h
@@ -2,36 +2,33 @@
 #define _SPINET_h_
 /* SPINET.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  djmw 19970408
  djmw 20020813 GPL header
- djmw 20110306 Latest modification.
 */
 
-#include "Sampled2.h"
+#include "SampledXY.h"
 #include "Graphics.h"
 
 #include "SPINET_def.h"
-oo_CLASS_CREATE (SPINET, Sampled2);
 
-SPINET SPINET_create (double tmin, double tmax, long nt, double dt, double t1,
+autoSPINET SPINET_create (double tmin, double tmax, long nt, double dt, double t1,
 	 double minimumFrequency, double maximumFrequency, long nFilters,
 	 double excitationErbProportion, double inhibitionErbProportion);
 
diff --git a/dwtools/SPINET_def.h b/dwtools/SPINET_def.h
index 40706e7..028a667 100644
--- a/dwtools/SPINET_def.h
+++ b/dwtools/SPINET_def.h
@@ -1,8 +1,23 @@
-/* SPINET_def.h */
-/* David Weenink, 6 apr 1997 */
+/* SPINET_def.h
+ *
+ * Copyright (C) 1997 David Weenink
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 #define ooSTRUCT SPINET
-oo_DEFINE_CLASS (SPINET, Sampled2)
+oo_DEFINE_CLASS (SPINET, SampledXY)
 
 	oo_LONG (gamma)						/* filter order */
 	oo_DOUBLE (excitationErbProportion)	/* excitatory bandwidth proportionality factor*/
diff --git a/dwtools/SPINET_to_Pitch.cpp b/dwtools/SPINET_to_Pitch.cpp
index d97681c..459d43b 100644
--- a/dwtools/SPINET_to_Pitch.cpp
+++ b/dwtools/SPINET_to_Pitch.cpp
@@ -1,20 +1,19 @@
 /* SPINET_to_Pitch.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011,2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,17 +30,17 @@
 	from Erb-scale to log2-scale
 */
 
-Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, int maxnCandidates) {
+autoPitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, int maxnCandidates) {
 	try {
 		long nPointsPerOctave = 48;
-		double fmin = NUMerbToHertz (Sampled2_rowToY (me, 1));
-		double fmax = NUMerbToHertz (Sampled2_rowToY (me, my ny));
+		double fmin = NUMerbToHertz (SampledXY_indexToY (me, 1L));
+		double fmax = NUMerbToHertz (SampledXY_indexToY (me, my ny));
 		double fminl2 = NUMlog2 (fmin), fmaxl2 = NUMlog2 (fmax);
 		double points = (fmaxl2 - fminl2) * nPointsPerOctave;
 		double dfl2 = (fmaxl2 - fminl2) / (points - 1);
 		long nFrequencyPoints = (long) floor (points);
 		long maxHarmonic = (long) floor (fmax / fmin);
-		double maxStrength = 0, unvoicedCriterium = 0.45, maxPower = 0;
+		double maxStrength = 0.0, unvoicedCriterium = 0.45, maxPower = 0.0;
 
 		if (nFrequencyPoints < 2) {
 			Melder_throw (U"Frequency range too small.");
@@ -68,7 +67,7 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 		// Determine global maximum power in frame
 
 		for (long j = 1; j <= my nx; j++) {
-			double p = 0;
+			double p = 0.0;
 			for (long i = 1; i <= my ny; i++) {
 				p += my s[i][j];
 			}
@@ -77,7 +76,7 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 			}
 			power[j] = p;
 		}
-		if (maxPower == 0) {
+		if (maxPower == 0.0) {
 			Melder_throw (U"No power");
 		}
 
@@ -92,7 +91,7 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 			for (long k = 1; k <= nFrequencyPoints; k++) {
 				double f = fminl2 + (k - 1) * dfl2;
 				NUMsplint (fl2.peek(), y.peek(), yv2.peek(), my ny, f, & pitch[k]);
-				sumspec[k] = 0;
+				sumspec[k] = 0.0;
 			}
 
 			// Formula (8): weighted harmonic summation.
@@ -101,7 +100,7 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 				double hm = 1 - harmonicFallOffSlope * NUMlog2 (m);
 				long kb = 1 + (long) floor (nPointsPerOctave * NUMlog2 (m));
 				for (long k = kb; k <= nFrequencyPoints; k++) {
-					if (pitch[k] > 0) {
+					if (pitch[k] > 0.0) {
 						sumspec[k - kb + 1] += pitch[k] * hm;
 					}
 				}
@@ -116,10 +115,10 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 			for (long k = 2; k <= nFrequencyPoints - 1; k++) {
 				double y1 = sumspec[k - 1], y2 = sumspec[k], y3 = sumspec[k + 1];
 				if (y2 > y1 && y2 >= y3) {
-					double denum = y1 - 2 * y2 + y3, tmp = y3 - 4 * y2;
+					double denum = y1 - 2.0 * y2 + y3, tmp = y3 - 4.0 * y2;
 					double x = dfl2 * (y1 - y3) / (2 * denum);
-					double f = pow (2, fminl2 + (k - 1) * dfl2 + x);
-					double strength = (2 * y1 * (4 * y2 + y3) - y1 * y1 - tmp * tmp) / (8 * denum);
+					double f = pow (2.0, fminl2 + (k - 1) * dfl2 + x);
+					double strength = (2.0 * y1 * (4.0 * y2 + y3) - y1 * y1 - tmp * tmp) / (8.0 * denum);
 					if (strength > maxStrength) {
 						maxStrength = strength;
 					}
@@ -135,7 +134,7 @@ Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, i
 			Pitch_Frame_getPitch (&thy frame[j], &f0, &localStrength);
 			Pitch_Frame_resizeStrengths (&thy frame[j], localStrength / maxStrength, unvoicedCriterium);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Pitch created.");
 	}
diff --git a/dwtools/SPINET_to_Pitch.h b/dwtools/SPINET_to_Pitch.h
index e198c45..0b52db0 100644
--- a/dwtools/SPINET_to_Pitch.h
+++ b/dwtools/SPINET_to_Pitch.h
@@ -2,21 +2,20 @@
 #define _SPINET_to_Pitch_h_
 /* SPINET_to_Pitch.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,6 @@
 #include "SPINET.h"
 #include "Pitch.h"
 
-Pitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling,
-	int maxnCandidates);
+autoPitch SPINET_to_Pitch (SPINET me, double harmonicFallOffSlope, double ceiling, int maxnCandidates);
 
 #endif /* _SPINET_to_Pitch_h_ */
diff --git a/dwtools/SSCP.cpp b/dwtools/SSCP.cpp
index 637db6a..1e225ad 100644
--- a/dwtools/SSCP.cpp
+++ b/dwtools/SSCP.cpp
@@ -1,20 +1,19 @@
 /* SSCP.cpp
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -91,6 +90,10 @@
 #define TOVEC(x) (&(x) - 1)
 
 Thing_implement (SSCP, TableOfReal, 0);
+Thing_implement (SSCPList, TableOfRealList, 0);
+Thing_implement (Covariance, SSCP, 0);
+Thing_implement (CovarianceList, SSCPList, 0);
+Thing_implement (Correlation, SSCP, 0);
 
 void structSSCP :: v_info () {
 	structTableOfReal :: v_info ();
@@ -104,7 +107,7 @@ void structSSCP :: v_info () {
 	Calculate scale factor by which sqrt(eigenvalue) has to
 	be multiplied to obtain the length of an ellipse axis.
 */
-double SSCP_getEllipseScalefactor (SSCP me, double scale, int confidence) {
+double SSCP_getEllipseScalefactor (SSCP me, double scale, bool confidence) {
 	long n = (long) floor (SSCP_getNumberOfObservations (me));
 
 	if (confidence) {
@@ -112,57 +115,66 @@ double SSCP_getEllipseScalefactor (SSCP me, double scale, int confidence) {
 		double f;
 
 		if (n - p < 1) {
-			return -1;
+			return -1.0;
 		}
 		/* D.E. Johnson (1998), Applied Multivariate methods, page 410 */
-		f = NUMinvFisherQ (1 - scale, p, n - p);
-		scale = 2 * sqrt (f * p * (n - 1) / ( ( (double) n) * (n - p)));
+		f = NUMinvFisherQ (1.0 - scale, p, n - p);
+		scale = 2.0 * sqrt (f * p * (n - 1) / ( ((double) n) * (n - p)));
 	} else {
 		// very ugly, temporary hack
-		scale *= 2 / (scale < 0 ? -1 : sqrt (n - 1));
+		scale *= 2.0 / (scale < 0.0 ? -1.0 : sqrt (n - 1));
 	}
 	return scale;
 }
 
-static void getEllipseBoundingBoxCoordinates (SSCP me, double scale, int confidence,
-        double *xmin, double *xmax, double *ymin, double *ymax) {
+static void getEllipseBoundingBoxCoordinates (SSCP me, double scale, bool confidence, double *xmin, double *xmax, double *ymin, double *ymax) {
 	double a, b, cs, sn, width, height;
 	double lscale = SSCP_getEllipseScalefactor (me, scale, confidence);
 
 	NUMeigencmp22 (my data[1][1], my data[1][2], my data[2][2], &a, &b, &cs, &sn);
 	NUMgetEllipseBoundingBox (sqrt (a), sqrt (b), cs, & width, & height);
 
-	*xmin = my centroid[1] - lscale * width / 2;
+	*xmin = my centroid[1] - lscale * width / 2.0;
 	*xmax = *xmin + lscale * width;
-	*ymin = my centroid[2] - lscale * height / 2;
+	*ymin = my centroid[2] - lscale * height / 2.0;
 	*ymax = *ymin + lscale * height;
 }
 
-void SSCPs_getEllipsesBoundingBoxCoordinates (SSCPs me, double scale, int confidence,
-        double *xmin, double *xmax, double *ymin, double *ymax) {
-	*xmin = *ymin = 1e38;
-	*xmax = *ymax = - *xmin;
+void SSCPList_getEllipsesBoundingBoxCoordinates (SSCPList me, double scale, bool confidence, double *p_xmin, double *p_xmax, double *p_ymin, double *p_ymax) {
+	double xmin = 1e308, xmax = -xmin, ymin = xmin, ymax = -ymin;
 
-	for (long i = 1; i <= my size; i++) {
-		SSCP s = (SSCP) my item[i];
+	for (long i = 1; i <= my size; i ++) {
+		SSCP s = my at [i];
 		double xmn, xmx, ymn, ymx;
 		getEllipseBoundingBoxCoordinates (s, scale, confidence, &xmn, &xmx, &ymn, &ymx);
-		if (xmn < *xmin) {
-			*xmin = xmn;
+		if (xmn < xmin) {
+			xmin = xmn;
 		}
-		if (xmx > *xmax) {
-			*xmax = xmx;
+		if (xmx > xmax) {
+			xmax = xmx;
 		}
-		if (ymn < *ymin) {
-			*ymin = ymn;
+		if (ymn < ymin) {
+			ymin = ymn;
 		}
-		if (ymx > *ymax) {
-			*ymax = ymx;
+		if (ymx > ymax) {
+			ymax = ymx;
 		}
 	}
+	if (p_xmin) {
+		*p_xmin = xmin;
+	}
+	if (p_xmax) {
+		*p_xmax = xmax;
+	}
+	if (p_ymin) {
+		*p_ymin = ymin;
+	}
+	if (p_ymax) {
+		*p_ymax = ymax;
+	}
 }
 
-static SSCP _SSCP_extractTwoDimensions (SSCP me, long d1, long d2) {
+static autoSSCP _SSCP_extractTwoDimensions (SSCP me, long d1, long d2) {
 	autoSSCP thee = SSCP_create (2);
 	if (my numberOfRows == 1) { // diagonal
 		thy data [1][1] = my data [1][d1];
@@ -176,22 +188,22 @@ static SSCP _SSCP_extractTwoDimensions (SSCP me, long d1, long d2) {
 	thy centroid[2] = my centroid[d2];
 	thy numberOfObservations = my numberOfObservations;
 
-	TableOfReal_setColumnLabel (thee.peek(), 1, my columnLabels[d1]);
-	TableOfReal_setColumnLabel (thee.peek(), 2, my columnLabels[d2]);
-	TableOfReal_setRowLabel (thee.peek(), 1, my columnLabels[d1]);
-	TableOfReal_setRowLabel (thee.peek(), 2, my columnLabels[d2]);
-	return thee.transfer();
+	TableOfReal_setColumnLabel (thee.get(), 1, my columnLabels[d1]);
+	TableOfReal_setColumnLabel (thee.get(), 2, my columnLabels[d2]);
+	TableOfReal_setRowLabel (thee.get(), 1, my columnLabels[d1]);
+	TableOfReal_setRowLabel (thee.get(), 2, my columnLabels[d2]);
+	return thee;
 }
 
-SSCPs SSCPs_extractTwoDimensions (SSCPs me, long d1, long d2) {
+autoSSCPList SSCPList_extractTwoDimensions (SSCPList me, long d1, long d2) {
 	try {
-		autoSSCPs thee = SSCPs_create ();
-		for (long i = 1; i <= my size; i++) {
-			autoSSCP t = _SSCP_extractTwoDimensions ( (SSCP) my item[i], d1, d2);
-			Thing_setName (t.peek(), Thing_getName ( (Thing) my item[i]));
-			Collection_addItem (thee.peek(), t.transfer());
+		autoSSCPList thee = SSCPList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			autoSSCP t = _SSCP_extractTwoDimensions (my at [i], d1, d2);
+			Thing_setName (t.get(), Thing_getName (my at [i]));
+			thy addItem_move (t.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot extract two dimensions.");
 	}
@@ -210,11 +222,11 @@ void SSCP_drawTwoDimensionalEllipse_inside  (SSCP me, Graphics g, double scale,
 		NUMeigencmp22 (my data[1][1], my data[1][2], my data[2][2], &a, &b, &cs, &sn);
 		// 1. Take sqrt to get units of 'std_dev'
 
-		a = scale * sqrt (a) / 2;
-		b = scale * sqrt (b) / 2;
+		a = scale * sqrt (a) / 2.0;
+		b = scale * sqrt (b) / 2.0;
 		x[nsteps] = x[0] = my centroid[1] + cs * a;
 		y[nsteps] = y[0] = my centroid[2] + sn * a;
-		double angle = 0;
+		double angle = 0.0;
 		double angle_inc = NUM2pi / nsteps;
 		for (long i = 1; i < nsteps; i++, angle += angle_inc) {
 			double xc = a * cos (angle);
@@ -224,7 +236,7 @@ void SSCP_drawTwoDimensionalEllipse_inside  (SSCP me, Graphics g, double scale,
 			x[i] = my centroid[1] + xt;
 		}
 		Graphics_polyline (g, nsteps + 1, x.peek(), y.peek());
-		if (label != NULL) {
+		if (label) {
 			int oldFontSize = Graphics_inqFontSize (g);
 			Graphics_setFontSize (g, fontSize);
 			Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
@@ -232,7 +244,7 @@ void SSCP_drawTwoDimensionalEllipse_inside  (SSCP me, Graphics g, double scale,
 			Graphics_setFontSize (g, oldFontSize);
 		}
 	} catch (MelderError) {
-		//
+		Melder_clearError ();
 	}
 }
 
@@ -252,11 +264,11 @@ static void _SSCP_drawTwoDimensionalEllipse (SSCP me, Graphics g, double scale,
 
 	// 1. Take sqrt to get units of 'std_dev'
 
-	a = scale * sqrt (a) / 2;
-	b = scale * sqrt (b) / 2;
+	a = scale * sqrt (a) / 2.0;
+	b = scale * sqrt (b) / 2.0;
 	x[nsteps] = x[0] = my centroid[1] + cs * a;
 	y[nsteps] = y[0] = my centroid[2] + sn * a;
-	double angle = 0;
+	double angle = 0.0;
 	double angle_inc = NUM2pi / nsteps;
 	for (long i = 1; i < nsteps; i++, angle += angle_inc) {
 		double xc = a * cos (angle);
@@ -275,7 +287,7 @@ static void _SSCP_drawTwoDimensionalEllipse (SSCP me, Graphics g, double scale,
 	}
 }
 
-SSCP SSCP_toTwoDimensions (SSCP me, double *v1, double *v2) {
+autoSSCP SSCP_toTwoDimensions (SSCP me, double *v1, double *v2) {
 	try {
 		double *vec[3];
 		autoSSCP thee = SSCP_create (2);
@@ -322,7 +334,7 @@ SSCP SSCP_toTwoDimensions (SSCP me, double *v1, double *v2) {
 
 		thy numberOfObservations = SSCP_getNumberOfObservations (me);
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot extract two dimensions.");
 	}
@@ -333,25 +345,25 @@ void SSCP_init (SSCP me, long dimension, long storage) {
 	my centroid = NUMvector<double> (1, dimension);
 }
 
-SSCP SSCP_create (long dimension) {
+autoSSCP SSCP_create (long dimension) {
 	try {
 		autoSSCP me = Thing_new (SSCP);
-		SSCP_init (me.peek(), dimension, dimension);
-		return me.transfer();
+		SSCP_init (me.get(), dimension, dimension);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SSCP not created.");
 	}
 }
 
-double SSCP_getConcentrationEllipseArea (SSCP me, double scale, int confidence, long d1, long d2) {
+double SSCP_getConcentrationEllipseArea (SSCP me, double scale, bool confidence, long d1, long d2) {
 	long p = my numberOfRows;
 
 	if (d1 < 1 || d1 > p || d2 < 1 || d2 > p || d1 == d2) {
 		Melder_throw (U"Incorrect axes.");
 	}
 	autoSSCP thee = _SSCP_extractTwoDimensions (me, d1, d2);
-	scale = SSCP_getEllipseScalefactor (thee.peek(), scale, confidence);
-	if (scale < 0) {
+	scale = SSCP_getEllipseScalefactor (thee.get(), scale, confidence);
+	if (scale < 0.0) {
 		Melder_throw (U"Invalid scale factor.");
 	}
 
@@ -360,7 +372,8 @@ double SSCP_getConcentrationEllipseArea (SSCP me, double scale, int confidence,
 
 	// 1. Take sqrt to get units of 'std_dev'
 
-	a = scale * sqrt (a) / 2; b = scale * sqrt (b) / 2;
+	a = scale * sqrt (a) / 2.0;
+	b = scale * sqrt (b) / 2.0;
 	return NUMpi * a * b;
 }
 
@@ -371,19 +384,17 @@ double SSCP_getFractionVariation (SSCP me, long from, long to) {
 		return NUMundefined;
 	}
 
-	double sum = 0, trace = 0;
+	double sum = 0.0, trace = 0.0;
 	for (long i = 1; i <= n; i++) {
 		trace += my numberOfRows == 1 ? my data[1][i] : my data[i][i];
 		if (i >= from && i <= to) {
 			sum += my numberOfRows == 1 ? my data[1][i] : my data[i][i];
 		}
 	}
-	return trace > 0 ? sum / trace : NUMundefined;
+	return trace > 0.0 ? sum / trace : NUMundefined;
 }
 
-void SSCP_drawConcentrationEllipse (SSCP me, Graphics g, double scale,
-                                    int confidence, long d1, long d2, double xmin, double xmax,
-                                    double ymin, double ymax, int garnish) {
+void SSCP_drawConcentrationEllipse (SSCP me, Graphics g, double scale, int confidence, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int garnish) {
 	long p = my numberOfColumns;
 
 	if (d1 < 1 || d1 > p || d2 < 1 || d2 > p || d1 == d2) {
@@ -393,7 +404,7 @@ void SSCP_drawConcentrationEllipse (SSCP me, Graphics g, double scale,
 	autoSSCP thee = _SSCP_extractTwoDimensions (me, d1, d2);
 
 	double xmn, xmx, ymn, ymx;
-	getEllipseBoundingBoxCoordinates (thee.peek(), scale, confidence, &xmn, &xmx, &ymn, &ymx);
+	getEllipseBoundingBoxCoordinates (thee.get(), scale, confidence, &xmn, &xmx, &ymn, &ymx);
 
 	if (xmax == xmin) {
 		xmin = xmn; xmax = xmx;
@@ -406,17 +417,17 @@ void SSCP_drawConcentrationEllipse (SSCP me, Graphics g, double scale,
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_setInner (g);
 
-	scale = SSCP_getEllipseScalefactor (thee.peek(), scale, confidence);
+	scale = SSCP_getEllipseScalefactor (thee.get(), scale, confidence);
 	if (scale < 0) {
 		Melder_throw (U"Invalid scale factor.");
 	}
-	_SSCP_drawTwoDimensionalEllipse (thee.peek(), g, scale, 0);
+	_SSCP_drawTwoDimensionalEllipse (thee.get(), g, scale, 0);
 
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
@@ -433,7 +444,7 @@ double SSCP_getDegreesOfFreedom (SSCP me) {
 }
 
 double SSCP_getTotalVariance (SSCP me) {
-	double trace = 0;
+	double trace = 0.0;
 	for (long i = 1; i <= my numberOfColumns; i++) {
 		trace += my numberOfRows == 1 ? my data[1][i] : my data[i][i];
 	}
@@ -447,11 +458,11 @@ double SSCP_getCumulativeContributionOfComponents (SSCP me, long from, long to)
 	}
 	if (from > 0 && to <= my numberOfRows && from <= to) {
 		sum = SSCP_getTotalVariance (me);
-		double partial = 0;
+		double partial = 0.0;
 		for (long i = from; i <= to; i++) {
 			partial += my numberOfRows == 1 ? my data[1][i] : my data[i][i];
 		}
-		if (sum > 0) {
+		if (sum > 0.0) {
 			sum = partial / sum;
 		}
 	}
@@ -463,13 +474,13 @@ void Covariance_and_PCA_generateOneVector (Covariance me, PCA thee, double *vec,
 	// Generate the multi-normal vector elements N(0,sigma)
 
 	for (long j = 1; j <= my numberOfColumns; j++) {
-		buf[j] = NUMrandomGauss (0, sqrt (thy eigenvalues[j]));
+		buf[j] = NUMrandomGauss (0.0, sqrt (thy eigenvalues[j]));
 	}
 
 	// Rotate back
 
 	for (long j = 1; j <= my numberOfColumns; j++) {
-		vec[j] = 0;
+		vec[j] = 0.0;
 		for (long k = 1; k <= my numberOfColumns; k++) {
 			vec[j] += buf[k] * thy eigenvectors[k][j];
 		}
@@ -482,7 +493,7 @@ void Covariance_and_PCA_generateOneVector (Covariance me, PCA thee, double *vec,
 	}
 }
 
-TableOfReal Covariance_to_TableOfReal_randomSampling (Covariance me, long numberOfData) {
+autoTableOfReal Covariance_to_TableOfReal_randomSampling (Covariance me, long numberOfData) {
 	try {
 		if (numberOfData <= 0) {
 			numberOfData = (long) floor (my numberOfObservations);
@@ -492,91 +503,94 @@ TableOfReal Covariance_to_TableOfReal_randomSampling (Covariance me, long number
 		autoNUMvector<double> buf (1, my numberOfColumns);
 
 		for (long i = 1; i <= numberOfData; i++) {
-			Covariance_and_PCA_generateOneVector (me, pca.peek(), thy data[i], buf.peek());
+			Covariance_and_PCA_generateOneVector (me, pca.get(), thy data[i], buf.peek());
 		}
 
 		NUMstrings_copyElements (my columnLabels, thy columnLabels, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not random sampled.");
 	}
 }
 
-SSCP TableOfReal_to_SSCP (TableOfReal me, long rowb, long rowe, long colb, long cole) {
+autoSSCP TableOfReal_to_SSCP (TableOfReal me, long rowb, long rowe, long colb, long cole) {
 	try {
-		TableOfReal_areAllCellsDefined (me, rowb, rowe, colb, cole);
+		
+		if (! NUMdmatrix_hasFiniteElements(my data, 1, my numberOfRows, 1, my numberOfColumns)) {
+			Melder_throw (U"At least one of the table's elements is not finite or undefined.");
+		}
 
 		if (rowb == 0 && rowe == 0) {
-			rowb = 1; rowe = my numberOfRows;
+			rowb = 1;
+			rowe = my numberOfRows;
 		} else if (rowe < rowb || rowb < 1 || rowe > my numberOfRows) {
 			Melder_throw (U"Invalid row number.");
 		}
 
 		if (colb == 0 && cole == 0) {
-			colb = 1; cole = my numberOfColumns;
+			colb = 1;
+			cole = my numberOfColumns;
 		} else if (cole < colb || colb < 1 || cole > my numberOfColumns) {
 			Melder_throw (U"Invalid column number.");
 		}
 
-		long m = rowe - rowb + 1; /* # rows */
-		long n = cole - colb + 1; /* # columns */
-
-		if (m < n) Melder_warning (U"The SSCP will not have \n"
-			"full dimensionality. This may be a problem in following analysis steps. \n"
-			"(The number of data points was less than the number of variables.)");
+		long numberOfRows = rowe - rowb + 1; /* m */
+		long numberOfColumns = cole - colb + 1; /* n */
 
-		autoSSCP thee = SSCP_create (n);
-		autoNUMmatrix<double> v (1, m, 1, n);
+		if (numberOfRows < numberOfColumns) {
+			Melder_warning (U"The SSCP will not have \n"
+				"full dimensionality. This may be a problem in following analysis steps. \n"
+				"(The number of data points was less than the number of variables.)");
+		}
+		autoSSCP thee = SSCP_create (numberOfColumns);
+		autoNUMmatrix<double> v (1, numberOfRows, 1, numberOfColumns);
 
 		long nvalidrows = 0;
-		for (long i = 1; i <= m; i++) {
+		for (long i = 1; i <= numberOfRows; i++) {
 			nvalidrows++;
-			for (long j = 1; j <= n; j++) {
+			for (long j = 1; j <= numberOfColumns; j++) {
 				v[i][j] = my data[rowb + i - 1][colb + j - 1];
 			}
 		}
 
-		NUMcentreColumns (v.peek(), 1, m, 1, n, thy centroid);
+		NUMcentreColumns (v.peek(), 1, numberOfRows, 1, numberOfColumns, thy centroid);
 
-		SSCP_setNumberOfObservations (thee.peek(), m);
+		SSCP_setNumberOfObservations (thee.get(), numberOfRows);
 
 		// sum of squares and cross products = T'T
 
-		for (long i = 1; i <= n; i++) {
-			for (long j = i; j <= n; j++) {
-				double t = 0;
-				for (long k = 1; k <= m; k++) {
+		for (long i = 1; i <= numberOfColumns; i++) {
+			for (long j = i; j <= numberOfColumns; j++) {
+				double t = 0.0;
+				for (long k = 1; k <= numberOfRows; k++) {
 					t += v[k][i] * v[k][j];
 				}
 				thy data[i][j] = thy data[j][i] = t;
 			}
 		}
-		for (long j = 1; j <= n; j++) {
+		for (long j = 1; j <= numberOfColumns; j++) {
 			char32 *label = my columnLabels[colb + j - 1];
-			TableOfReal_setColumnLabel (thee.peek(), j, label);
-			TableOfReal_setRowLabel (thee.peek(), j, label);
+			TableOfReal_setColumnLabel (thee.get(), j, label);
+			TableOfReal_setRowLabel (thee.get(), j, label);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": SSCP not created.");
 	}
 }
 
-TableOfReal SSCP_and_TableOfReal_extractDistanceQuantileRange (SSCP me, TableOfReal thee,
-        double qlow, double qhigh) {
+autoTableOfReal SSCP_and_TableOfReal_extractDistanceQuantileRange (SSCP me, TableOfReal thee, double qlow, double qhigh) {
 	try {
 		autoCovariance cov = SSCP_to_Covariance (me, 1);
-		autoTableOfReal him = Covariance_and_TableOfReal_extractDistanceQuantileRange (cov.peek(), thee, qlow, qhigh);
-		return him.transfer();
+		autoTableOfReal him = Covariance_and_TableOfReal_extractDistanceQuantileRange (cov.get(), thee, qlow, qhigh);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no distance quantile ranges created.");
 	}
 }
 
-TableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, thou, bool useTableCentroid) {
+autoTableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, TableOfReal thee, bool useTableCentroid) {
 	try {
-		thouart (TableOfReal);
-
 		autoTableOfReal him = TableOfReal_create (thy numberOfRows, 1);
 		autoNUMvector<double> centroid (NUMvector_copy (my centroid, 1, thy numberOfColumns), 1);
 		autoNUMmatrix<double> covari (NUMmatrix_copy (my data, 1, my numberOfRows, 1, my numberOfRows), 1, 1);
@@ -591,7 +605,7 @@ TableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, thou, bool us
 
 		if (useTableCentroid) {
 			for (long icol = 1; icol <= thy numberOfColumns; icol++) {
-				double mean = 0;
+				double mean = 0.0;
 				for (long irow = 1; irow <= thy numberOfRows; irow++) {
 					mean += thy data[irow][icol];
 				}
@@ -601,24 +615,23 @@ TableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, thou, bool us
 
 		for (long k = 1; k <= thy numberOfRows; k++) {
 			his data[k][1] = sqrt (NUMmahalanobisDistance_chi (covari.peek(), thy data[k], centroid.peek(), my numberOfRows, my numberOfRows));
-			if (thy rowLabels[k] != 0) {
-				TableOfReal_setRowLabel (him.peek(), k, thy rowLabels[k]);
+			if (thy rowLabels[k]) {
+				TableOfReal_setRowLabel (him.get(), k, thy rowLabels[k]);
 			}
 		}
-		TableOfReal_setColumnLabel (him.peek(), 1, U"d");
-		return him.transfer();
+		TableOfReal_setColumnLabel (him.get(), 1, U"d");
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"no Mahalanobis distances created.");
 	}
 }
 
-
-TableOfReal Covariance_and_TableOfReal_extractDistanceQuantileRange (Covariance me, TableOfReal thee, double qlow, double qhigh) {
+autoTableOfReal Covariance_and_TableOfReal_extractDistanceQuantileRange (Covariance me, TableOfReal thee, double qlow, double qhigh) {
 	try {
 		autoTableOfReal him = Covariance_and_TableOfReal_mahalanobis (me, thee, false);
 
-		double low = TableOfReal_getColumnQuantile (him.peek(), 1, qlow);
-		double high = TableOfReal_getColumnQuantile (him.peek(), 1, qhigh);
+		double low = TableOfReal_getColumnQuantile (him.get(), 1, qlow);
+		double high = TableOfReal_getColumnQuantile (him.get(), 1, qhigh);
 
 		// Count the number filtered.
 		// nsel = (qhigh - qlow) * nrows is sometimes one off
@@ -636,105 +649,106 @@ TableOfReal Covariance_and_TableOfReal_extractDistanceQuantileRange (Covariance
 
 		autoTableOfReal r = TableOfReal_create (nsel, thy numberOfColumns);
 		NUMstrings_copyElements (thy columnLabels, r -> columnLabels, 1, thy numberOfColumns);
-		//((r -> columnLabels = NUMstrings_copy (thy columnLabels, 1, thy numberOfColumns)) == NULL)) goto end;
+		//((r -> columnLabels = NUMstrings_copy (thy columnLabels, 1, thy numberOfColumns)) == nullptr)) goto end;
 
 		long k = 0;
 		for (long i = 1; i <= thy numberOfRows; i++) {
 			if (low <= his data[i][1] && his data[i][1] < high) {
 				k++;
-				TableOfReal_copyOneRowWithLabel (thee, r.peek(), i, k);
+				TableOfReal_copyOneRowWithLabel (thee, r.get(), i, k);
 			}
 		}
-		return r.transfer();
+		return r;
 	} catch (MelderError) {
-		Melder_throw (U"TableOfReal with distancequantile range not created.");
+		Melder_throw (U"TableOfReal with distance quantile range not created.");
 	}
 }
 
-
-Covariance TableOfReal_to_Covariance (TableOfReal me) {
+autoCovariance TableOfReal_to_Covariance (TableOfReal me) {
 	try {
 		autoSSCP sscp = TableOfReal_to_SSCP (me, 0, 0, 0, 0);
-		autoCovariance thee = SSCP_to_Covariance (sscp.peek(), 1);
-		return thee.transfer();
+		autoCovariance thee = SSCP_to_Covariance (sscp.get(), 1);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": covariances not created.");
 	}
 }
 
-Correlation TableOfReal_to_Correlation (TableOfReal me) {
+autoCorrelation TableOfReal_to_Correlation (TableOfReal me) {
 	try {
 		autoSSCP sscp = TableOfReal_to_SSCP (me, 0, 0, 0, 0);
-		autoCorrelation thee = SSCP_to_Correlation (sscp.peek());
-		return thee.transfer();
+		autoCorrelation thee = SSCP_to_Correlation (sscp.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": correlations not created.");
 	}
 }
 
-Correlation TableOfReal_to_Correlation_rank (TableOfReal me) {
+autoCorrelation TableOfReal_to_Correlation_rank (TableOfReal me) {
 	try {
 		autoTableOfReal t = TableOfReal_rankColumns (me);
-		autoCorrelation thee = TableOfReal_to_Correlation (t.peek());
-		return thee.transfer();
+		autoCorrelation thee = TableOfReal_to_Correlation (t.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rank correlations not created.");
 	}
 }
 
-SSCPs TableOfReal_to_SSCPs_byLabel (TableOfReal me) {
+autoSSCPList TableOfReal_to_SSCPList_byLabel (TableOfReal me) {
 	try {
-		autoSSCPs thee = SSCPs_create ();
+		autoSSCPList thee = SSCPList_create ();
 		autoTableOfReal mew = TableOfReal_sortOnlyByRowLabels (me);
 
-		const char32 *label = mew -> rowLabels[1];
 		Melder_warningOff ();
-		long numberOfCases = my numberOfRows, ncols = my numberOfColumns;
-		long lastrow = 0, ngroups = 0, nsingular = 0, index = 1;
-		for (long i = 2; i <= numberOfCases; i++) {
-			long nrows = 0;
-			const char32 *li = mew -> rowLabels[i];
-			if (Melder_cmp (li, label) != 0) {
+		long lastrow = 0, numberOfMatrices = 0, numberOfSingularMatrices = 0, index = 1;
+		const char32 *label = mew -> rowLabels[1];
+		for (long i = 2; i <= my numberOfRows; i++) {
+			long numberOfRowsInCurrent = 0;
+			const char32 *currentLabel = mew -> rowLabels[i];
+			if (Melder_cmp (currentLabel, label) != 0) {
 				// current label different from previous one(s)
-				nrows = i - index; lastrow = i - 1;
-			} else if (i == numberOfCases) {
+				numberOfRowsInCurrent = i - index;
+				lastrow = i - 1;
+			} else if (i == my numberOfRows) {
 				// current (last) label is same as previous
-				nrows = i - index + 1; lastrow = i;
+				numberOfRowsInCurrent = i - index + 1;
+				lastrow = i;
 			} else {
 				// next one
 				continue;
 			}
 			// We found a new group
-			ngroups++;
-			if (nrows > 1) { // We need at least two rows for an SSCP
-				if (nrows < ncols) {
-					nsingular++;
+			         numberOfMatrices++;
+			if (numberOfRowsInCurrent > 1) { // We need at least two rows for an SSCP
+				if (numberOfRowsInCurrent < my numberOfColumns) {
+					numberOfSingularMatrices++;
 				}
-				autoSSCP t = TableOfReal_to_SSCP (mew.peek(), index, lastrow, 0, 0);
+				autoSSCP t = TableOfReal_to_SSCP (mew.get(), index, lastrow, 0, 0);
 				if (! (label = mew -> rowLabels[index])) {
 					label = U"?";
 				}
-				Thing_setName (t.peek(), label);
-				Collection_addItem (thee.peek(), t.transfer());
+				Thing_setName (t.get(), label);
+				thy addItem_move (t.move());
 			}
-			label = li; index = i;
+			label = currentLabel;
+			index = i;
 		}
-		if (lastrow != numberOfCases) {
-			ngroups++;
+		if (lastrow != my numberOfRows) {
+			numberOfMatrices++;
 		}
 		Melder_warningOn ();
-		if (nsingular > 0 || thy size != ngroups) {
-			long notIncluded = ngroups - thy size;
-			Melder_warning (ngroups, U" different groups detected: ", nsingular + notIncluded,
-			                U" group(s) with less rows than columns (of which ", notIncluded, U" with only one row).");
+		if (numberOfSingularMatrices > 0 || thy size != numberOfMatrices) {
+			long notIncluded = numberOfMatrices - thy size;
+			Melder_warning (numberOfMatrices, U" different groups detected: ", numberOfSingularMatrices + notIncluded,
+				U" group(s) with less rows than columns (of which ", notIncluded, U" with only one row).");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": SSCP not created from labels.");
 	}
 }
 
-PCA SSCP_to_PCA (SSCP me) {
+autoPCA SSCP_to_PCA (SSCP me) {
 	try {
 		double **data = my data;
 		autoNUMmatrix<double> adata;
@@ -749,10 +763,10 @@ PCA SSCP_to_PCA (SSCP me) {
 			data = adata.peek();
 		}
 		NUMstrings_copyElements (my columnLabels, thy labels, 1, my numberOfColumns);
-		Eigen_initFromSymmetricMatrix (thee.peek(), data, my numberOfColumns);
+		Eigen_initFromSymmetricMatrix (thee.get(), data, my numberOfColumns);
 		NUMvector_copyElements (my centroid, thy centroid, 1, my numberOfColumns);
-		PCA_setNumberOfObservations (thee.peek(), (long) floor (my numberOfObservations));
-		return thee.transfer();
+		PCA_setNumberOfObservations (thee.get(), (long) floor (my numberOfObservations));
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": PCA not created.");
 	}
@@ -787,7 +801,7 @@ void SSCP_setCentroid (SSCP me, long component, double value) {
 	my centroid[component] = value;
 }
 
-CCA SSCP_to_CCA (SSCP me, long ny) {
+autoCCA SSCP_to_CCA (SSCP me, long ny) {
 	try {
 		char upper = 'L', diag = 'N';
 		long info;
@@ -880,7 +894,7 @@ CCA SSCP_to_CCA (SSCP me, long ny) {
 
 		for (long i = 1; i <= ny; i++) {
 			for (long j = 1; j <= nx; j++) {
-				double t = 0;
+				double t = 0.0;
 				for (long k = 1; k <= j; k++) {
 					t += syx[i][k] * sxx[k][j];
 				}
@@ -904,11 +918,11 @@ CCA SSCP_to_CCA (SSCP me, long ny) {
 			double t = gsvd -> d1[i] / gsvd -> d2[i];
 			thy y -> eigenvalues[i] = t * t;
 			for (long j = 1; j <= gsvd -> numberOfColumns; j++) {
-				t = 0;
+				t = 0.0;
 				for (long k = 1; k <= j; k++) {
 					t += gsvd -> q[i][k] * ri[k][j];
 				}
-				thy y ->eigenvectors[j][i] = t;
+				thy y -> eigenvectors[j][i] = t;
 			}
 		}
 
@@ -923,7 +937,7 @@ CCA SSCP_to_CCA (SSCP me, long ny) {
 			double *evecy = thy y -> eigenvectors[i];
 			double *evecx = thy x -> eigenvectors[i];
 			for (long j = 1; j <= nx; j++) {
-				double t = 0;
+				double t = 0.0;
 				for (long k = j; k <= nx; k++) {
 					for (long l = 1; l <= nx; l++) {
 						for (long n = 1; n <= ny; n++) {
@@ -938,308 +952,411 @@ CCA SSCP_to_CCA (SSCP me, long ny) {
 		NUMnormalizeRows (thy x -> eigenvectors, thy x -> numberOfEigenvalues, nx, 1);
 
 		if (ny < nx) {
-			Eigen t = thy x;
-			thy x = thy y; thy y = t;
+			autoEigen t = thy x.move();
+			thy x = thy y.move(); thy y = t.move();
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": CCA not created.");
 	}
 }
 
-/************ SSCPs ***********************************************/
-
-Thing_implement (SSCPs, Ordered, 0);
+/************ SSCPList ***********************************************/
 
-SSCPs SSCPs_create () {
+autoSSCP SSCPList_to_SSCP_pool (SSCPList me) {
 	try {
-		autoSSCPs me = Thing_new (SSCPs);
-		Ordered_init (me.peek(), classSSCP, 10);
-		return me.transfer();
+		autoSSCP thee = Data_copy (my at [1]);
+
+		for (long k = 2; k <= my size; k ++) {
+			SSCP t = my at [k];
+			if (t -> numberOfRows != thy numberOfRows) {
+				Melder_throw (U"The dimension of item ", k, U" does not agree.");
+			}
+
+			thy numberOfObservations += t -> numberOfObservations;
+
+			// Sum the sscp's and weigh the centroid.
+
+			for (long i = 1; i <= thy numberOfRows; i ++) {   // if 1xn
+				for (long j = 1; j <= thy numberOfColumns; j ++) {
+					thy data [i] [j] += t -> data [i] [j];
+				}
+			}
+
+			for (long j = 1; j <= thy numberOfRows; j ++) {
+				thy centroid [j] += t -> numberOfObservations * t -> centroid [j];
+			}
+		}
+
+		for (long i = 1; i <= thy numberOfRows; i ++) {
+			thy centroid [i] /= thy numberOfObservations;
+		}
+		
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (U"SSCPs not created.");
+		Melder_throw (me, U": not pooled.");
 	}
 }
 
-SSCP SSCPs_to_SSCP_pool (SSCPs me) {
+autoCovariance CovarianceList_to_Covariance_pool (CovarianceList me) { // Morrison sec 3.5, page 100
 	try {
-		autoSSCP thee = Data_copy ( (SSCP) my item[1]);
-
-		for (long k = 2; k <= my size; k++) {
-			SSCP t = (SSCP) my item[k];
-			long no = (long) floor (t -> numberOfObservations);
+		autoCovariance thee = Data_copy (my at [1]);
+		double scaleFactor = thy numberOfObservations - 1.0;
+		
+		for (long i = 1; i <= thy numberOfRows; i++) {
+			for (long j = 1; j <= thy numberOfColumns; j++) {
+				thy data[i][j] *= scaleFactor;
+			}
+		}
+		
+		for (long k = 2; k <= my size; k ++) {
+			Covariance t = my at [k];
 			if (t -> numberOfRows != thy numberOfRows) {
-				Melder_throw (U"Unequal dimensions (", k, U").");
+				Melder_throw (U"The dimension of item ", k, U" does not agree.");
 			}
 
-			thy numberOfObservations += no;
+			thy numberOfObservations += t -> numberOfObservations;
 
 			// Sum the sscp's and weigh the centroid.
-
+			scaleFactor = t -> numberOfObservations - 1.0;
 			for (long i = 1; i <= thy numberOfRows; i++) { // if 1xn
 				for (long j = 1; j <= thy numberOfColumns; j++) {
-					thy data[i][j] += t -> data[i][j];
+					thy data[i][j] += scaleFactor * t -> data[i][j];
 				}
 			}
 
 			for (long j = 1; j <= thy numberOfRows; j++) {
-				thy centroid[j] += no * t -> centroid[j];
+				thy centroid[j] += t -> numberOfObservations * t -> centroid[j];
 			}
 		}
 
 		for (long i = 1; i <= thy numberOfRows; i++) {
 			thy centroid[i] /= thy numberOfObservations;
 		}
+		
+		scaleFactor = 1.0 / (thy numberOfObservations - my size);
+		for (long i = 1; i <= thy numberOfRows; i++) { // if 1xn
+			for (long j = 1; j <= thy numberOfColumns; j++) {
+				thy data[i][j] *= scaleFactor;
+			}
+		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not pooled.");
 	}
 }
 
-void SSCPs_getHomegeneityOfCovariances_box (SSCPs me, double *probability, double *chisq, long *ndf) {
-	*probability = 0; *chisq = 0; *ndf = 0;
+void SSCPList_getHomegeneityOfCovariances_box (SSCPList me, double *p_prob, double *p_chisq, double *p_df) {
+	double chisq = 0.0, df = NUMundefined;
 
-	autoSSCP pooled = SSCPs_to_SSCP_pool (me);
+	autoSSCP pooled = SSCPList_to_SSCP_pool (me);
 	long p = pooled -> numberOfColumns;
-	double ln_determinant, inv = 0, sum = 0, g = my size;
-	for (long i = 1; i <= g; i++) {
-		SSCP t = (SSCP) my item[i];
-		double ni = t -> numberOfObservations - 1;
-		NUMdeterminant_cholesky (t -> data, p, &ln_determinant);
+	double ln_determinant, inv = 0.0, sum = 0.0, g = my size;
+	for (long i = 1; i <= g; i ++) {
+		SSCP t = my at [i];
+		double ni = t -> numberOfObservations - 1.0;
+		NUMdeterminant_cholesky (t -> data, p, & ln_determinant);
 
 		// Box-test is for covariance matrices -> scale determinant.
 
 		ln_determinant -= p * log (ni);
-		sum += ni; inv += 1 / ni;
-		*chisq -= ni * ln_determinant;
+		sum += ni;
+		inv += 1.0 / ni;
+		chisq -= ni * ln_determinant;
 	}
 
-	NUMdeterminant_cholesky (pooled -> data, p, &ln_determinant);
+	NUMdeterminant_cholesky (pooled -> data, p, & ln_determinant);
 	ln_determinant -= p * log (pooled -> numberOfObservations - g);
-	*chisq += sum * ln_determinant;
+	chisq += sum * ln_determinant;
 
-	*chisq *= 1.0 - (inv - 1 / sum) * (2 * p * p + 3 * p - 1) / (6 * (p + 1) * (g - 1));
-	*ndf = (long) floor ((g - 1) * p * (p + 1) / 2);   // ppgb deze hele formule wordt in double doorgerekend; is dat de bedoeling?
-	*probability =  NUMchiSquareQ (*chisq, *ndf);
+	chisq *= 1.0 - (inv - 1.0 / sum) * (2.0 * p * p + 3.0 * p - 1.0) / (6.0 * (p + 1) * (g - 1.0));
+	df = (g - 1.0) * p * (p + 1) / 2.0;
+	if (p_prob) {
+		*p_prob = NUMchiSquareQ (chisq, df);
+	}
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_df) {
+		*p_df = df;
+	}
 }
 
-
-SSCPs SSCPs_toTwoDimensions (SSCPs me, double *v1, double *v2) {
+autoSSCPList SSCPList_toTwoDimensions (SSCPList me, double v1[], double v2[]) {
 	try {
-		autoSSCPs thee = SSCPs_create ();
-		for (long i = 1; i <= my size; i++) {
-			autoSSCP t = (SSCP) SSCP_toTwoDimensions ((SSCP) my item[i], v1, v2);
-			Thing_setName (t.peek(), Thing_getName ( (Thing) my item[i]));
-			Collection_addItem (thee.peek(), t.transfer());
+		autoSSCPList thee = SSCPList_create ();
+		for (long i = 1; i <= my size; i ++) {
+			autoSSCP t = SSCP_toTwoDimensions (my at [i], v1, v2);
+			Thing_setName (t.get(), Thing_getName (my at [i]));
+			thy addItem_move (t.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not reduced to two dimensions.");
 	}
 }
 
 
-void SSCPs_drawConcentrationEllipses (SSCPs me, Graphics g, double scale, int confidence, const char32 *label,
-                                      long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, int garnish) {
-	SSCP t = (SSCP) my item[1];
+void SSCPList_drawConcentrationEllipses (SSCPList me, Graphics g, double scale, bool confidence, const char32 *label, long d1, long d2, double xmin, double xmax, double ymin, double ymax, int fontSize, bool garnish) {
+	SSCP t = my at [1];
+
 	long p = t -> numberOfColumns;
 
 	if (d1 < 1 || d1 > p || d2 < 1 || d2 > p || d1 == d2) {
 		Melder_throw (U"Incorrect axes.");
 	}
 
-	autoSSCPs thee = SSCPs_extractTwoDimensions (me, d1, d2);
-	double xmn, xmx, ymn, ymx;
-	SSCPs_getEllipsesBoundingBoxCoordinates (thee.peek(), scale, confidence, &xmn, &xmx, &ymn, &ymx);
-
-	if (xmin == xmax) {
-		xmin = xmn; xmax = xmx;
-	}
+	autoSSCPList thee = SSCPList_extractTwoDimensions (me, d1, d2);
 
-	if (ymin == ymax) {
-		ymin = ymn; ymax = ymx;
+	/*
+		Autowindowing.
+	*/
+	if (xmin == xmax || ymin == ymax) {
+		double boundingBox_xmin, boundingBox_xmax, boundingBox_ymin, boundingBox_ymax;
+		SSCPList_getEllipsesBoundingBoxCoordinates (thee.get(), scale, confidence,
+			& boundingBox_xmin, & boundingBox_xmax, & boundingBox_ymin, & boundingBox_ymax);
+		if (xmin == xmax) {
+			xmin = boundingBox_xmin;
+			xmax = boundingBox_xmax;
+		}
+		if (ymin == ymax) {
+			ymin = boundingBox_ymin;
+			ymax = boundingBox_ymax;
+		}
 	}
 
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_setInner (g);
 
 
-	for (long i = 1; i <= thy size; i++) {
-		t = (SSCP) thy item[i];
+	for (long i = 1; i <= thy size; i ++) {
+		t = thy at [i];
 		double lscale = SSCP_getEllipseScalefactor (t, scale, confidence);
-		if (lscale < 0) {
+		if (lscale < 0.0) {
 			continue;
 		}
-		if (label == 0 || Melder_cmp (label, Thing_getName (t)) == 0) {
+		if (! label || Melder_cmp (label, Thing_getName (t)) == 0) {
 			_SSCP_drawTwoDimensionalEllipse (t, g, lscale, fontSize);
 		}
 	}
 
 	Graphics_unsetInner (g);
 	if (garnish) {
-		t = (SSCP) my item[1];
+		t = my at [1];
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, t -> columnLabels[d2] ? t -> columnLabels[d2] : Melder_cat (U"Dimension ", d2));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, t -> columnLabels[d1] ? t -> columnLabels[d1] : Melder_cat (U"Dimension ", d1));
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, t -> columnLabels[d2] ? t -> columnLabels[d2] : Melder_cat (U"Dimension ", d2));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, t -> columnLabels[d1] ? t -> columnLabels[d1] : Melder_cat (U"Dimension ", d1));
 	}
 }
 
-TableOfReal SSCP_to_TableOfReal (SSCP me) {
+autoTableOfReal SSCP_to_TableOfReal (SSCP me) {
 	try {
 		autoTableOfReal thee = Thing_new (TableOfReal);
-		my structTableOfReal :: v_copy (thee.peek());
-		return thee.transfer();
+		my structTableOfReal :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not copied.");
 	}
 }
 
-TableOfReal SSCP_extractCentroid (SSCP me) {
+autoTableOfReal SSCP_extractCentroid (SSCP me) {
 	try {
 		long n = my numberOfColumns;
 
 		autoTableOfReal thee = TableOfReal_create (1, n);
 		NUMvector_copyElements (my centroid, thy data[1], 1, n);
 		thy columnLabels = NUMstrings_copy (my columnLabels, 1, n);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": centroid not extracted.");
 	}
 }
 
-Thing_implement (Covariance, SSCP, 0);
-
-Thing_implement (Correlation, SSCP, 0);
-
-Covariance Covariance_create (long dimension) {
+autoCovariance Covariance_create (long dimension) {
 	try {
 		autoCovariance me = Thing_new (Covariance);
-		SSCP_init (me.peek(), dimension, dimension);
-		return me.transfer();
+		SSCP_init (me.get(), dimension, dimension);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Covariance not created.");
 	}
 }
 
-Covariance Covariance_create_reduceStorage (long dimension, long storage) {
+autoCovariance Covariance_create_reduceStorage (long dimension, long storage) {
 	try {
 		autoCovariance me = Thing_new (Covariance);
 		if (storage <= 0 || storage >= dimension) {
 			storage = dimension;
 		}
-		SSCP_init (me.peek(), dimension, storage);
-		return me.transfer();
+		SSCP_init (me.get(), dimension, storage);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Reduced storage covariance not created.");
 	}
 }
 
-Covariance Covariance_createSimple (char32 *covariances, char32 *centroid, long numberOfObservations) {
-	try {
-		long dimension, ncovars;
-		autoNUMvector<double> centroids (NUMstring_to_numbers (centroid, &dimension), 1);
-		autoNUMvector<double> covars (NUMstring_to_numbers (covariances, &ncovars), 1);
-		long ncovars_wanted = dimension * (dimension + 1) / 2;
-		if (ncovars != ncovars_wanted) Melder_throw (U"The number of covariance matrix elements and the number of "
-			        U"centroid elements are not in concordance. There should be d(d+1)/2 covariance values and d centroid values.");
 
+
+autoCovariance Covariance_createSimple (char32 *s_covariances, char32 *s_centroid, long numberOfObservations) {
+	try {
+		long dimension, numberOfCovariances;
+		autoNUMvector<double> centroid (NUMstring_to_numbers (s_centroid, & dimension), 1);
+		autoNUMvector<double> covariances (NUMstring_to_numbers (s_covariances, & numberOfCovariances), 1);
+		long numberOfCovariances_wanted = dimension * (dimension + 1) / 2;
+		if (numberOfCovariances != numberOfCovariances_wanted) {
+			Melder_throw (U"The number of covariance matrix elements and the number of centroid elements are not in "
+				" concordance. There should be d(d+1)/2 covariance values and d centroid values.");
+		}
+		
 		autoCovariance me = Covariance_create (dimension);
 
 		// Construct the full covariance matrix from the upper-diagonal elements
 
 		long rowNumber = 1;
-		for (long inum = 1; inum <= ncovars_wanted; inum++) {
+		for (long inum = 1; inum <= numberOfCovariances; inum ++) {
+			long nmissing = (rowNumber - 1) * rowNumber / 2;
+			long inumc = inum + nmissing;
+			rowNumber = (inumc - 1) / dimension + 1;
+			long icol = ((inumc - 1) % dimension) + 1;
+			my data [rowNumber] [icol] = my data [icol] [rowNumber] = covariances [inum];
+			if (icol == dimension) {
+				rowNumber ++;
+			}
+		}
+
+		// Check if a valid covariance, first check variances then covariances
+
+		for (long irow = 1; irow <= dimension; irow ++) {
+			if (my data [irow] [irow] <= 0) {
+				Melder_throw (U"The diagonal matrix elements, must all be positive numbers.");
+			}
+		}
+		for (long irow = 1; irow <= dimension; irow ++) {
+			for (long icol = irow + 1; icol <= dimension; icol ++) {
+				if (fabs (my data [irow] [icol] / sqrt (my data [irow] [irow] * my data [icol] [icol])) > 1) {
+					long nmissing = (irow - 1) * irow / 2;
+					long inum = (irow - 1) * dimension + icol - nmissing;
+					Melder_throw (U"The covariance in cell [", irow, U",", icol, U"], i.e. input item ", inum, U" is too large.");
+				}
+			}
+		}
+		for (long inum = 1; inum <= dimension; inum ++) {
+			my centroid [inum] = centroid [inum];
+		}
+		my numberOfObservations = numberOfObservations;
+		return me;
+	} catch (MelderError) {
+		Melder_throw (U"Simple Covariance not created.");
+	}
+}
+
+autoCorrelation Correlation_createSimple (char32 *s_correlations, char32 *s_centroid, long numberOfObservations) {
+	try {
+		long dimension, numberOfCorrelations;
+		autoNUMvector<double> centroids (NUMstring_to_numbers (s_centroid, & dimension), 1);
+		autoNUMvector<double> correlations (NUMstring_to_numbers (s_correlations, & numberOfCorrelations), 1);
+		long numberOfCorrelations_wanted = dimension * (dimension + 1) / 2;
+		if (numberOfCorrelations != numberOfCorrelations_wanted) {
+			Melder_throw (U"The number of correlation matrix elements and the number of centroid elements are not in "
+				" concordance. There should be d(d+1)/2 correlation values and d centroid values.");
+		}
+		autoCorrelation me = Correlation_create (dimension);
+
+		// Construct the full correlation matrix from the upper-diagonal elements
+
+		long rowNumber = 1;
+		for (long inum = 1; inum <= numberOfCorrelations; inum++) {
 			long nmissing = (rowNumber - 1) * rowNumber / 2;
 			long inumc = inum + nmissing;
 			rowNumber = (inumc - 1) / dimension + 1;
 			long icol = ( (inumc - 1) % dimension) + 1;
-			my data[rowNumber][icol] = my data[icol][rowNumber] = covars[inum];
+			my data [rowNumber][icol] = my data [icol][rowNumber] = correlations [inum];
 			if (icol == dimension) {
 				rowNumber++;
 			}
 		}
 
-		// Check if a valid covariance, first check variances then covariances
+		// Check if a valid correlations, first check variances then covariances
 
 		for (long irow = 1; irow <= dimension; irow++) {
-			if (my data[irow][irow] <= 0) {
-				Melder_throw (U"The variances, i.e. the diagonal matrix elements, must all be positive numbers.");
+			if (my data [irow][irow] != 1.0) {
+				Melder_throw (U"The diagonal matrix elements, must all equal 1.0.");
 			}
 		}
 		for (long irow = 1; irow <= dimension; irow++) {
 			for (long icol = irow + 1; icol <= dimension; icol++) {
-				if (fabs (my data[irow][icol] / sqrt (my data[irow][irow] * my data[icol][icol])) > 1) {
+				if (fabs (my data[irow][icol]) > 1) {
 					long nmissing = (irow - 1) * irow / 2;
 					long inum = (irow - 1) * dimension + icol - nmissing;
-					Melder_throw (U"The covariance in cell [", irow, U",", icol, U"], i.e. input item ", inum, U" is too large.");
+					Melder_throw (U"The correlation in cell [", irow, U",", icol, U"], i.e. input item ", inum, U" is larger then 1.0.");
 				}
 			}
 		}
 		for (long inum = 1; inum <= dimension; inum++) {
-			my centroid[inum] = centroids[inum];
+			my centroid [inum] = centroids [inum];
 		}
 		my numberOfObservations = numberOfObservations;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"Simple Covariance not created.");
+		Melder_throw (U"Simple Correlation not created.");
 	}
 }
 
-Correlation Correlation_create (long dimension) {
+autoCorrelation Correlation_create (long dimension) {
 	try {
 		autoCorrelation me = Thing_new (Correlation);
-		SSCP_init (me.peek(), dimension, dimension);
-		return me.transfer();
+		SSCP_init (me.get(), dimension, dimension);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Correlation not created.");
 	}
 }
 
-Covariance SSCP_to_Covariance (SSCP me, long numberOfConstraints) {
+autoCovariance SSCP_to_Covariance (SSCP me, long numberOfConstraints) {
 	try {
 		Melder_assert (numberOfConstraints >= 0);
 		autoCovariance thee = Thing_new (Covariance);
-		my structSSCP :: v_copy (thee.peek());
+		my structSSCP :: v_copy (thee.get());
 
-		for (long i = 1; i <= my numberOfRows; i++) {
-			for (long j = i; j <= my numberOfColumns; j++) {
-				thy data[j][i] = thy data[i][j] /= (my numberOfObservations - numberOfConstraints);
+		for (long irow = 1; irow <= my numberOfRows; irow ++) {
+			for (long icol = irow; icol <= my numberOfColumns; icol ++) {   // a covariance matrix is symmetric
+				thy data [icol] [irow] = thy data [irow] [icol] /= my numberOfObservations - numberOfConstraints;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"; Covariance not created.");
 	}
 }
 
-SSCP Covariance_to_SSCP (Covariance me) {
+autoSSCP Covariance_to_SSCP (Covariance me) {
 	try {
 		autoSSCP thee = Thing_new (SSCP);
-		my structSSCP :: v_copy (thee.peek());
-		for (long i = 1; i <= my numberOfRows; i++) {
-			for (long j = i; j <= my numberOfColumns; j++) {
-				thy data[j][i] = thy data[i][j] *= (my numberOfObservations - 1);
+		my structSSCP :: v_copy (thee.get());
+		for (long irow = 1; irow <= my numberOfRows; irow ++) {
+			for (long icol = irow; icol <= my numberOfColumns; icol ++) {
+				thy data [icol] [irow] = thy data [irow] [icol] *= my numberOfObservations - 1;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": SSCP not created.");
 	}
 }
 
-Correlation SSCP_to_Correlation (SSCP me) {
+autoCorrelation SSCP_to_Correlation (SSCP me) {
 	try {
 		autoCorrelation thee = Thing_new (Correlation);
-		my structSSCP :: v_copy (thee.peek());
+		my structSSCP :: v_copy (thee.get());
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = i; j <= my numberOfColumns; j++) {
 				thy data[j][i] = thy data[i][j] /= sqrt (my data[i][i] * my data[j][j]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Correlation not created.");
 	}
@@ -1248,25 +1365,25 @@ Correlation SSCP_to_Correlation (SSCP me) {
 double SSCP_getLnDeterminant (SSCP me) {
 	try {
 		double ln_d;
-		NUMdeterminant_cholesky (my data, my numberOfRows, &ln_d);
+		NUMdeterminant_cholesky (my data, my numberOfRows, & ln_d);
 		return ln_d;
 	} catch (MelderError) {
 		return NUMundefined;
 	}
 }
 
-static Covariance Covariances_pool (Covariance me, Covariance thee) {
+static autoCovariance Covariances_pool (Covariance me, Covariance thee) {
 	try {
 		if (my numberOfRows != thy numberOfRows || my numberOfColumns != thy numberOfColumns)  Melder_throw
 			(U"Matrices must have equal dimensions.");
-		autoSSCPs sscps = SSCPs_create ();
+		autoSSCPList sscps = SSCPList_create ();
 		autoSSCP sscp1 = Covariance_to_SSCP (me);
-		Collection_addItem (sscps.peek(), sscp1.transfer());
+		sscps -> addItem_move (sscp1.move());
 		autoSSCP sscp2 = Covariance_to_SSCP (thee);
-		Collection_addItem (sscps.peek(), sscp2.transfer());
-		autoSSCP pool = SSCPs_to_SSCP_pool (sscps.peek());
-		autoCovariance him = SSCP_to_Covariance (pool.peek(), 2);
-		return him.transfer();
+		sscps -> addItem_move (sscp2.move());
+		autoSSCP pool = SSCPList_to_SSCP_pool (sscps.get());
+		autoCovariance him = SSCP_to_Covariance (pool.get(), 2);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"not pooled.");
 	}
@@ -1274,11 +1391,11 @@ static Covariance Covariances_pool (Covariance me, Covariance thee) {
 
 static double **productOfSquareMatrices (double **s1, double **s2, long n) {
 	autoNUMmatrix<double> r (1, n, 1, n);
-	for (long i = 1; i <= n; i++) {
-		for (long j = 1; j <= n; j++) {
+	for (long i = 1; i <= n; i ++) {
+		for (long j = 1; j <= n; j ++) {
 			double sum = 0;
-			for (long k = 1; k <= n; k++) {
-				sum += s1[i][k] * s2[k][j];
+			for (long k = 1; k <= n; k ++) {
+				sum += s1 [i] [k] * s2 [k] [j];
 			}
 			r[i][j] = sum;
 		}
@@ -1296,7 +1413,7 @@ static double traceOfSquaredMatrixProduct (double **s1, double **s2, long n) {
 double Covariance_getProbabilityAtPosition_string (Covariance me, char32 *vector) {
 	autoNUMvector<double> v (1, my numberOfColumns);
 	long i = 0;
-	for (char32 *token = Melder_firstToken (vector); token != NULL; token = Melder_nextToken ()) {
+	for (char32 *token = Melder_firstToken (vector); token != nullptr; token = Melder_nextToken ()) {
 		v[++i] = Melder_atof (token);
 		if (i == my numberOfColumns) {
 			break;
@@ -1306,7 +1423,7 @@ double Covariance_getProbabilityAtPosition_string (Covariance me, char32 *vector
 	return p;
 }
 
-double Covariance_getProbabilityAtPosition (Covariance me, double *x) {
+double Covariance_getProbabilityAtPosition (Covariance me, double x[]) {
 	if (my lowerCholesky == 0) {
 		SSCP_expandLowerCholesky (me);
 	}
@@ -1317,7 +1434,7 @@ double Covariance_getProbabilityAtPosition (Covariance me, double *x) {
 	return p;
 }
 
-double Covariance_getMarginalProbabilityAtPosition (Covariance me, double *vector, double x) {
+double Covariance_getMarginalProbabilityAtPosition (Covariance me, double vector[], double x) {
 	double mu, stdev;
 	Covariance_getMarginalDensityParameters (me, vector, &mu, &stdev);
 	double dx = (x - mu) / stdev;
@@ -1326,34 +1443,40 @@ double Covariance_getMarginalProbabilityAtPosition (Covariance me, double *vecto
 }
 
 /* Precondition ||v|| = 1 */
-void Covariance_getMarginalDensityParameters (Covariance me, double *v, double *mu, double *stdev) {
-	*stdev = *mu = 0;
-	if (my numberOfRows == 1) { // 1xn diagonal matrix
+void Covariance_getMarginalDensityParameters (Covariance me, double v[], double *p_mu, double *p_stdev) {
+	if (p_mu) {
+		double mu = 0.0;
 		for (long m = 1; m <= my numberOfColumns; m++) {
-			*stdev += v[m] * my data[1][m] * v[m];
+			mu += v[m] * my centroid[m];
 		}
-	} else {
-		for (long k = 1; k <= my numberOfRows; k++) {
+		*p_mu = mu;
+	}
+	if (p_stdev) {
+		double stdev = 0;
+		if (my numberOfRows == 1) { // 1xn diagonal matrix
 			for (long m = 1; m <= my numberOfColumns; m++) {
-				*stdev += v[k] * my data[k][m] * v[m];
+				stdev += v[m] * my data[1][m] * v[m];
+			}
+		} else {
+			for (long k = 1; k <= my numberOfRows; k++) {
+				for (long m = 1; m <= my numberOfColumns; m++) {
+					stdev += v[k] * my data[k][m] * v[m];
+				}
 			}
 		}
-	}
-	*stdev = sqrt (*stdev);
-	for (long m = 1; m <= my numberOfColumns; m++) {
-		*mu += v[m] * my centroid[m];
+		*p_stdev = sqrt (stdev);
 	}
 }
 
-double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance thee, int equalCovariances, double *prob, double *fisher, double *df1, double *df2) {
+double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance thee, int equalCovariances, double *p_prob, double *p_fisher, double *p_df1, double *p_df2) {
 	long p = my numberOfRows, N = (long) floor (my numberOfObservations + thy numberOfObservations);
 	long N1 = (long) floor (my numberOfObservations), n1 = N1 - 1;
 	long N2 = (long) floor (thy numberOfObservations), n2 = N2 - 1;
 
-	double dif = *prob = *fisher = NUMundefined;
-	*df1 = p;
-	*df2 = N - p - 1;
-	if (*df2 < 1) {
+	double dif = NUMundefined, fisher = NUMundefined;
+	double df1 = p, df2 = N - p - 1;
+	
+	if (df2 < 1) {
 		Melder_throw (U"Not enough observations (", N, U") for this test.");
 	}
 	if (N1 < p || N2 < p) {
@@ -1376,7 +1499,7 @@ double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance
 
 		double mahalanobis = NUMmahalanobisDistance_chi (s.peek(), my centroid, thy centroid, p, p);
 		double hotelling_tsq = mahalanobis * N1 * N2 / N;
-		*fisher = hotelling_tsq * *df2 / ( (N - 2) * *df1);
+		fisher = hotelling_tsq * df2 / ( (N - 2) * df1);
 	} else {
 		/* Krishnamoorthy-Yu (2004): Modified Nel and Van der Merwe test
 
@@ -1410,115 +1533,129 @@ double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance
 		double tr_s2si = NUMtrace2 (s2.peek(), si.peek(), p);
 
 		double nu = (p + p * p) / ( (tr_s1sisqr + tr_s1si * tr_s1si) / n1 + (tr_s2sisqr + tr_s2si * tr_s2si) / n2);
-		*df2 = nu - p + 1;
-		*fisher =  hotelling_tsq * (nu - p + 1) / (nu * p);
+		df2 = nu - p + 1;
+		fisher =  hotelling_tsq * (nu - p + 1) / (nu * p);
 	}
 
-	*prob = NUMfisherQ (*fisher, *df1, *df2);
+	if (p_prob) {
+		*p_prob = NUMfisherQ (fisher, df1, df2);
+	}
+	if (p_fisher) {
+		*p_fisher = fisher;
+	}
+	if (p_df1) {
+		*p_df1 = df1;
+	}
+	if (p_df2) {
+		*p_df2 = df2;
+	}
 	return dif;
 }
 
 /* Schott 2001 */
-void Covariances_equality (Collection me, int method, double *prob, double *chisq, double *df) {
+void Covariances_equality (CovarianceList me, int method, double *p_prob, double *p_chisq, double *p_df) {
 	try {
-		long nc = my size;
-		double  nsi = 0;
 
-		*prob = *chisq = *df = NUMundefined;
+		long numberOfMatrices = my size;
+		double chisq = NUMundefined, df = NUMundefined;
 
-		if (nc < 2) {
+		if (numberOfMatrices < 2) {
 			Melder_throw (U"We need at least two matrices");
 		}
 
-		long p = 1, ns = 0;
-		for (long i = 1; i <= nc; i++) {
-			Covariance ci = (Covariance) my item[i];
-			double ni = ci -> numberOfObservations - 1;
-			if (i == 1) {
-				p = ci -> numberOfRows;
-			}
-			if (ci -> numberOfRows != p) {
-				Melder_throw (U"The dimensions of matrix ", i, U" differ from the previous one(s).");
-			}
-			if (ni < p) {
-				Melder_throw (U"The number of observations in matrix ", i, U" is less than the number of variables. ");
-			}
-			ns += ni; nsi += 1.0 / ni;
-		}
-
-		autoNUMmatrix<double> s (1, p, 1, p);
-
-		for (long i = 1; i <= nc; i++) { // pool
-			Covariance ci = (Covariance) my item[i];
-			double sf = (ci -> numberOfObservations - 1.0) / ns;
-			for (long j = 1; j <= p; j++) {
-				for (long k = 1; k <= p; k++) {
-					s[j][k] += sf * ci -> data[j][k];
-				}
-			}
-		}
-
-		if (method == 1) { // bartlett
+		autoCovariance pool = CovarianceList_to_Covariance_pool (me); 
+		double ns = pool -> numberOfObservations - my size;
+		long p = pool -> numberOfColumns;
+		
+		if (method == 1) {
+			/* Bartlett (see Morrison page 297)
+			 * The hypothesis H0 : Sigma[1] = .... = Sigma[k] of the equality of the covariance matrices of k p-dimensional
+			 * multinormal populations can be tested against the alternative by a modified generalized likelihood-ratio statistic.
+			 * Let S[i] be the unbiased estimate of Sigma[i] based on n[i] degrees of freedom, where n[i] = N[i]-1 for 
+			 * the usual case of a random sample of N[i] observation vectors from the i-th population. When H0 is true
+			 *     S = 1/(sum(i=1..k, n[i])) sum(i=1..k, n[i]*S[i])
+			 * is the pooled estimate of the common covariance matrix. The test statistic is
+			 *     M = sum(i=1..k,n[i])*ln|S| - sum(i=1..k, n[i]*ln|S[i]|).
+			 * Box (1949), "A general distribution theory for a class of likelihood criteria", 
+			 *  Biomerika, vol 36, pp. 317-346. has shown that if the scale factor
+			 *     C^(-1) = 1 - (2p^2+3p-1)/(6(p+1)(k-1)) * (sum(i=1..k, 1/n[i]) - 1 / sum(i=1..k, n[i])) is introduced,
+			 * the quatity M/C is approximately distributed as a chi-squared variate with (k-1)p(p+1)/2 degrees of freedom 
+			 * as the n[i] become large.
+			 * It is well known that this likelihood ratio test is very sensitive to violations of the normality assumption, 
+			 * and so other more robust procedures have been proposed.
+			 */
 			double lnd;
 			try {
-				NUMdeterminant_cholesky (s.peek(), p, &lnd);
+				NUMdeterminant_cholesky (pool -> data, p, & lnd);
 			} catch (MelderError) {
 				Melder_throw (U"Pooled covariance matrix is singular.");
 			}
 
-			double m = ns * lnd;
-			for (long i = 1; i <= nc; i++) {
-				Covariance ci = (Covariance) my item[i];
+			double nsi = 0.0, m = ns * lnd; // First part of eq (3) page 297
+
+			for (long i = 1; i <= numberOfMatrices; i ++) {
+				Covariance ci = my at [i];
 				try {
-					NUMdeterminant_cholesky (ci -> data, p, &lnd);
+					NUMdeterminant_cholesky (ci -> data, p, & lnd);
 				} catch (MelderError) {
 					Melder_throw (U"Covariance matrix ", i, U" is singular.");
 				}
-				m -= (ci -> numberOfObservations - 1) * lnd;
+				nsi += 1.0 / (ci -> numberOfObservations - 1);
+				m -= (ci -> numberOfObservations - 1) * lnd;  // Last part of eq (3) page 297
 			}
 
-			double c1 = 1.0 - (2.0 * p * p - 3 * p - 1) / (6.0 * (p + 1) * (nc - 1)) * (nsi - 1 / ns);
+			/* Eq (4) page 297 */
+			double c1 = 1.0 - (2.0 * p * p + 3.0 * p - 1.0) / (6.0 * (p + 1) * (numberOfMatrices - 1)) * (nsi - 1.0 / ns);
 
-			*df = (nc - 1) * p * (p + 1) / 2;
-			*chisq = m * c1;
+			df = (numberOfMatrices - 1.0) * p * (p + 1) / 2.0;
+			chisq = m * c1;
 		} else if (method == 2) { // Schott (2001) Wald 1
-			// sum(i, ni/n *tr((si*s^-1)^2)- sum(i,sum(j, (ni/n)*(nj/n) *tr(si*s^-1*sj*s^-1))) =
+			// T1 = sum(i=1..k, n[i]/n *tr((S[i]*S^-1)^2)- sum(i=1..k, sum(j=1..k, (n[i]/n)*(n[j]/n) *tr(S[i]*S^-1*S[j]*sS^-1))) =
 			//	sum(i=1..k, (ni/n -(ni/n)^2) tr((si*s^-1)^2)
 			//	- 2 * sum (i=1..k, sum(j=1..i-1, (ni/n)*(nj/n) *tr(si*s^-1*sj*s^-1)))
 
 			double trace = 0;
-			NUMlowerCholeskyInverse (s.peek(), p, NULL);
-			autoNUMmatrix<double> si (NUMinverseFromLowerCholesky (s.peek(), p), 1, 1);
-			for (long i = 1; i <= nc; i++) {
-				Covariance ci = (Covariance) my item[i];
+			NUMlowerCholeskyInverse (pool -> data, p, nullptr);
+			autoNUMmatrix<double> si (NUMinverseFromLowerCholesky (pool -> data, p), 1, 1);
+			for (long i = 1; i <= numberOfMatrices; i ++) {
+				Covariance ci = my at [i];
 				double ni = ci -> numberOfObservations - 1;
 				autoNUMmatrix<double> s1 (productOfSquareMatrices (ci -> data, si.peek(), p), 1, 1);
 				double trace_ii = NUMtrace2 (s1.peek(), s1.peek(), p);
 				trace += (ni / ns) * (1 - (ni / ns)) * trace_ii;
-				for (long j = i + 1; j <= nc; j++) {
-					Covariance cj = (Covariance) my item[j];
+				for (long j = i + 1; j <= numberOfMatrices; j ++) {
+					Covariance cj = my at [j];
 					double nj = cj -> numberOfObservations - 1;
 					autoNUMmatrix<double> s2 (productOfSquareMatrices (cj -> data, si.peek(), p), 1, 1);
 					double trace_ij = NUMtrace2 (s1.peek(), s2.peek(), p);
-					trace -= 2 * (ni / ns) * (nj / ns) * trace_ij;
+					trace -= 2.0 * (ni / ns) * (nj / ns) * trace_ij;
 				}
 			}
-			*df = (nc - 1) * p * (p + 1) / 2;
-			*chisq = (ns / 2) * trace;
+			df = (numberOfMatrices - 1) * p * (p + 1) / 2.0;
+			chisq = (ns / 2.0) * trace;
 		} else {
 			return;
 		}
-		*prob = NUMchiSquareQ (*chisq, *df);
+		if (p_prob) {
+			*p_prob = NUMchiSquareQ (chisq, df);
+		}
+		if (p_df) {
+			*p_df = df;
+		}
+		if (p_chisq) {
+			*p_chisq = chisq;
+		}
 	} catch (MelderError) {
 		Melder_throw (U"Equality coud not be tested.");
 	}
 }
 
-void Covariance_difference (Covariance me, Covariance thee, double *prob, double *chisq, long *ndf) {
+void Covariance_difference (Covariance me, Covariance thee, double *p_prob, double *p_chisq, double *p_df) {
 	long p = my numberOfRows;
 	long numberOfObservations = (long) floor (my numberOfObservations);
 	double  ln_me, ln_thee;
-
+	double chisq = NUMundefined, df = NUMundefined;
+	
 	if (my numberOfRows != thy numberOfRows) {
 		Melder_throw (U"Matrices must have equal dimensions.");
 	}
@@ -1534,7 +1671,7 @@ void Covariance_difference (Covariance me, Covariance thee, double *prob, double
 
 	autoNUMmatrix<double> linv (NUMmatrix_copy (thy data, 1, p, 1, p), 1, 1);
 	NUMlowerCholeskyInverse (linv.peek(), p, & ln_thee);
-	NUMdeterminant_cholesky (my data, p, &ln_me);
+	NUMdeterminant_cholesky (my data, p, & ln_me);
 
 	/*
 		We need trace (A B^-1). We have A and the inverse L^(-1) of the
@@ -1545,7 +1682,7 @@ void Covariance_difference (Covariance me, Covariance thee, double *prob, double
 		where Lm = L^(-1)
 	*/
 
-	double trace = 0;
+	double trace = 0.0;
 	for (long i = 1; i <= p; i++) {
 		for (long j = 1; j <= p; j++) {
 			long lp = MAX (j, i);
@@ -1556,9 +1693,17 @@ void Covariance_difference (Covariance me, Covariance thee, double *prob, double
 	}
 
 	double l = (numberOfObservations - 1) * fabs (ln_thee - ln_me + trace - p);
-	*chisq = l * fabs (1 - (2 * p + 1 - 2 / (p + 1)) / (numberOfObservations - 1) / 6);  // ppgb CHECK fabs versus labs
-	*ndf = p * (p + 1) / 2;
-	*prob = NUMchiSquareQ (*chisq, *ndf);
+	chisq = l * fabs (1.0 - (2.0 * p + 1.0 - 2.0 / (p + 1)) / (numberOfObservations - 1) / 6.0);
+	df = p * (p + 1) / 2.0;
+	if (p_prob) {
+		*p_prob = NUMchiSquareQ (chisq, df);
+	}
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_df) {
+		*p_df = df;
+	}
 }
 
 static void checkOneIndex (TableOfReal me, long index) {
@@ -1576,118 +1721,144 @@ static void checkTwoIndices (TableOfReal me, long index1, long index2) {
 	}
 }
 
-void Covariance_getSignificanceOfOneMean (Covariance me, long index, double mu,
-        double *probability, double *t, double *ndf) {
-	double var;
-	*probability = *t = NUMundefined;
-	*ndf = my numberOfObservations - 1;
+void Covariance_getSignificanceOfOneMean (Covariance me, long index, double mu, double *p_prob, double *p_t, double *p_df) {
+	double var = my data[index][index];
+	double prob = NUMundefined, t = NUMundefined, df = my numberOfObservations - 1.0;
 
 	checkOneIndex (me, index);
 
-	if ( (var = my data[index][index]) == 0) {
-		return;
+	if (var > 0.0) {
+		t = (my centroid[index] - mu) / sqrt (var / my numberOfObservations);
+		if (p_prob) {
+			prob = 2.0 * NUMstudentQ (fabs (t), df);
+		}
+	}
+	if (p_prob) {
+		*p_prob = prob;
+	}
+	if (p_t) {
+		*p_t = t;
+	}
+	if (p_df) {
+		*p_df = df;
 	}
-
-	*t = (my centroid[index] - mu) / sqrt (var / my numberOfObservations);
-	*probability = 2 * NUMstudentQ (fabs (*t), *ndf);
 }
 
-void Covariance_getSignificanceOfMeansDifference (Covariance me,
-        long index1, long index2, double mu, int paired, int equalVariances,
-        double *probability, double *t, double *ndf) {
+void Covariance_getSignificanceOfMeansDifference (Covariance me, long index1, long index2, double mu, int paired, int equalVariances, double *p_prob, double *p_t, double *p_df) {
 	long n = (long) floor (my numberOfObservations);
-	double df, var1, var2, var_pooled;
 
-	*probability = *t = NUMundefined;
-	*ndf = 2 * (n - 1);
+	double prob = NUMundefined, t = NUMundefined;
+	double df = 2.0 * (n - 1);
 
 	checkTwoIndices (me, index1, index2);
 
-	var1 = my data[index1][index1];
-	var2 = my data[index2][index2];
+	double var1 = my data [index1] [index1];
+	double var2 = my data [index2] [index2];
 
-	var_pooled = var1 + var2;
-	if (var_pooled == 0) {
-		Melder_warning (U"The pooled variance turned out to be zero. Check your data. ");
-		return;
+	double var_pooled = var1 + var2;
+	if (var_pooled == 0.0) {
+		Melder_warning (U"The pooled variance turned out to be zero. Check your data.");
+		goto end;
 	}
 	if (paired) {
-		var_pooled -= 2 * my data[index1][index2];
-		*ndf /= 2;
+		var_pooled -= 2.0 * my data[index1][index2];
+		df /= 2.0;
 	}
 
-	if (var_pooled == 0) {
+	if (var_pooled == 0.0) {
 		Melder_warning (U"The pooled variance with the paired correction turned out to be zero. ");
-		*probability = 0;
-		return;
+		prob = 0.0;
+		goto end;
 	}
 
-	*t = (my centroid[index1] - my centroid[index2] - mu) / sqrt (var_pooled / n);
+	t = (my centroid [index1] - my centroid [index2] - mu) / sqrt (var_pooled / n);
 
 	/*
 		Return two sided probabilty.
 	*/
 
 	if (equalVariances) {
-		*probability = 2 * NUMstudentQ (fabs (*t), *ndf);
+		prob = 2.0 * NUMstudentQ (fabs (t), df);
 	} else {
-		df = (1 + 2 * var1 * var2 / (var1 * var1 + var2 * var2)) * (n - 1);
-		*probability = NUMincompleteBeta (df / 2, 0.5, df / (df + (*t) * (*t)));
-		*ndf = df;
+		df = (1.0 + 2.0 * var1 * var2 / (var1 * var1 + var2 * var2)) * (n - 1);
+		prob = NUMincompleteBeta (df / 2.0, 0.5, df / (df + t * t));
+	}
+end:
+	if (p_prob) {
+		*p_prob = prob;
+	}
+	if (p_t) {
+		*p_t = t;
+	}
+	if (p_df) {
+		*p_df = df;
 	}
 }
 
-void Covariance_getSignificanceOfOneVariance (Covariance me, long index,
-        double sigmasq, double *probability, double *chisq, long *ndf) {
-	double var;
-	*probability = *chisq = NUMundefined;
-	*ndf = (long) floor (my numberOfObservations) - 1;
+void Covariance_getSignificanceOfOneVariance (Covariance me, long index, double sigmasq, double *p_prob, double *p_chisq, long *p_df) {
+	double var = my data [index] [index];
+	double prob = NUMundefined, chisq = NUMundefined;
+	double df = my numberOfObservations - 1.0;
 
 	checkOneIndex (me, index);
 
-	if ( (var = my data[index][index]) == 0) {
-		return;
-	}
+	if (var > 0.0) {
 
-	*chisq = *ndf;
-	if (sigmasq != 0) {
-		*chisq = *ndf * var / sigmasq;
+		chisq = df;
+		if (sigmasq > 0.0) {
+			chisq = df * var / sigmasq;
+		}
+		if (p_prob) {
+			prob = NUMchiSquareQ (chisq, df);
+		}
+	}
+	if (p_prob) {
+		*p_prob = prob;
+	}
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_df) {
+		*p_df = df;
 	}
-	*probability = NUMchiSquareQ (*chisq, *ndf);
 }
 
-void Covariance_getSignificanceOfVariancesRatio (Covariance me,
-        long index1, long index2, double ratio, double *probability,
-        double *f, long *ndf) {
-	long n = (long) floor (my numberOfObservations);
-	double var1, var2, ratio2;
-
-	*ndf = n - 1; *probability = *f = NUMundefined;
+void Covariance_getSignificanceOfVariancesRatio (Covariance me, long index1, long index2, double ratio, double *p_prob, double *p_f, double *p_df) {
+	double df = my numberOfObservations - 1.0, prob = NUMundefined, f = NUMundefined;
 	checkTwoIndices (me, index1, index2);
 
-	var1 = my data[index1][index1];
-	var2 = my data[index2][index2];
+	double var1 = my data [index1] [index1];
+	double var2 = my data [index2] [index2];
 
-	if (var1 == 0 || var2 == 0) {
-		return;
+	if (var1 > 0.0 && var2 > 0.0) {
+		double ratio2 = (var1 / var2) / ratio;
+		f = ratio2;
+		if (var2 > var1) {
+			ratio2 = (var2 / var1) * ratio;
+		}
+		if (p_prob) {
+			prob = 2.0 * NUMfisherQ (ratio2, df, df);
+			if (prob > 1.0) {
+				prob = 2.0 - prob;
+			}
+		}
 	}
-
-	*f = ratio2 = (var1 / var2) / ratio;
-	if (var2 > var1) {
-		ratio2 = (var2 / var1) * ratio;
+	if (p_prob) {
+		*p_prob = prob;
 	}
-
-	*probability = 2 * NUMfisherQ (ratio2, *ndf, *ndf);
-	if (*probability > 1) {
-		*probability = 2 - *probability;
+	if (p_df) {
+		*p_df = df;
+	}
+	if (p_f) {
+		*p_f = f;
 	}
 }
 
-TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLevel, long numberOfTests, int method) {
+autoTableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLevel, long numberOfTests, int method) {
 	try {
 		long m_bonferroni = my numberOfRows * (my numberOfRows - 1) / 2;
 
-		if (confidenceLevel <= 0 || confidenceLevel > 1) {
+		if (confidenceLevel <= 0 || confidenceLevel > 1.0) {
 			Melder_throw (U"Confidence level must be in interval (0-1).");
 		}
 
@@ -1707,7 +1878,7 @@ TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLe
 
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfRows);
 
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
 
 
 		// Obtain large-sample conservative multiple tests and intervals by the
@@ -1716,9 +1887,9 @@ TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLe
 		// values of confidence intervals in lower part of resulting table.
 
 
-		double z = NUMinvGaussQ ( (1 - confidenceLevel) / (2 * numberOfTests));
-		double zf = z / sqrt (my numberOfObservations - 3);
-		double  two_n = 2 * my numberOfObservations;
+		double z = NUMinvGaussQ ( (1 - confidenceLevel) / (2.0 * numberOfTests));
+		double zf = z / sqrt (my numberOfObservations - 3.0);
+		double  two_n = 2.0 * my numberOfObservations;
 
 		for (long i = 1; i <= my numberOfRows; i++) {
 			for (long j = i + 1; j <= my numberOfRows; j++) {
@@ -1732,10 +1903,10 @@ TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLe
 				} else if (method == 1) {
 					// Ruben's approximation
 
-					double rs = rij / sqrt (1 - rij * rij);
-					double a = two_n - 3 - z * z;
-					double b = rs * sqrt ( (two_n - 3) * (two_n - 5));
-					double c = (a - 2) * rs * rs - 2 * z * z;
+					double rs = rij / sqrt (1.0 - rij * rij);
+					double a = two_n - 3.0 - z * z;
+					double b = rs * sqrt ( (two_n - 3.0) * (two_n - 5.0));
+					double c = (a - 2.0) * rs * rs - 2.0 * z * z;
 
 					// Solve:  a y^2 - 2b y + c = 0
 					// q = -0.5((-2b) + sgn(-2b) sqrt((-2b)^2 - 4ac))
@@ -1747,8 +1918,8 @@ TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLe
 						d = - d;
 					}
 					q = b - d;
-					rmin = q / a; rmin /= sqrt (1 + rmin * rmin);
-					rmax = c / q; rmax /= sqrt (1 + rmax * rmax);
+					rmin = q / a; rmin /= sqrt (1.0 + rmin * rmin);
+					rmax = c / q; rmax /= sqrt (1.0 + rmax * rmax);
 					if (rmin > rmax) {
 						double t = rmin; rmin = rmax; rmax = t;
 					}
@@ -1760,21 +1931,21 @@ TableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLe
 			}
 			thy data[i][i] = 1;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": confidence intervals not created.");
 	}
 }
 
-void SSCP_testDiagonality_bartlett (SSCP me, long numberOfContraints, double *chisq, double *probability) {
-	*chisq = *probability = NUMundefined;
+void SSCP_testDiagonality_bartlett (SSCP me, long numberOfContraints, double *chisq, double *prob, double *df) {
 	autoCorrelation c = SSCP_to_Correlation (me);
-	Correlation_testDiagonality_bartlett (c.peek(), numberOfContraints, chisq, probability);
+	Correlation_testDiagonality_bartlett (c.get(), numberOfContraints, chisq, prob, df);
 }
 
 /* Morrison, page 118 */
-void Correlation_testDiagonality_bartlett (Correlation me, long numberOfContraints, double *chisq, double *probability) {
-	*chisq = *probability = NUMundefined;
+void Correlation_testDiagonality_bartlett (Correlation me, long numberOfContraints, double *p_chisq, double *p_prob, double *p_df) {
+	long p = my numberOfRows;
+	double chisq = NUMundefined, prob = NUMundefined, df = p * (p -1) / 2.0;
 
 	if (numberOfContraints <= 0) {
 		numberOfContraints = 1;
@@ -1783,12 +1954,23 @@ void Correlation_testDiagonality_bartlett (Correlation me, long numberOfContrain
 		Melder_warning (U"Correlation_testDiagonality_bartlett: number of constraints cannot exceed the number of observations.");
 		return;
 	}
-	long p = my numberOfRows;
-	double ln_determinant;
-	NUMdeterminant_cholesky (my data, p, &ln_determinant);
-
-	*chisq = - ln_determinant * (my numberOfObservations - numberOfContraints - (2 * p + 5) / 6);
-	*probability = NUMchiSquareQ (*chisq, p * (p - 1) / 2);
+	if (my numberOfObservations >= numberOfContraints) {
+		double ln_determinant;
+		NUMdeterminant_cholesky (my data, p, & ln_determinant);
+		chisq = - ln_determinant * (my numberOfObservations - numberOfContraints - (2.0 * p + 5.0) / 6.0);
+		if (p_prob) {
+			prob = NUMchiSquareQ (chisq, df);
+		}
+	}
+	if (p_chisq) {
+		*p_chisq = chisq;
+	}
+	if (p_prob) {
+		*p_prob = prob;
+	}
+	if (p_df) {
+		*p_df = df;
+	}
 }
 
 void SSCP_expand (SSCP me) {
@@ -1801,7 +1983,7 @@ void SSCP_expand (SSCP me) {
 	// my expansion = my data (before)
 	// No expansion for a standard matrix or if already expanded and data has not changed!
 
-	if ( (my expansionNumberOfRows == 0 && my numberOfRows == my numberOfColumns) ||
+	if ((my expansionNumberOfRows == 0 && my numberOfRows == my numberOfColumns) ||
 	        (my expansionNumberOfRows > 0 && ! my dataChanged)) {
 		return;
 	}
@@ -1811,13 +1993,13 @@ void SSCP_expand (SSCP me) {
 	for (long ir = 1; ir <= my numberOfColumns; ir++) {
 		for (long ic = ir; ic <= my numberOfColumns; ic++) {
 			long dij = labs (ir - ic);
-			my expansion[ir][ic] = my expansion[ic][ir] = dij < my numberOfRows ? my data[dij + 1][ic] : 0;
+			my expansion[ir][ic] = my expansion[ic][ir] = dij < my numberOfRows ? my data[dij + 1][ic] : 0.0;
 		}
 	}
 	// Now make 'my data' point to 'my expansion'
 	double **tmp = my data; my data = my expansion; my expansion = tmp;
 	my expansionNumberOfRows = my numberOfRows;
-	my numberOfRows = my numberOfColumns; // Now forget(me) is save
+	my numberOfRows = my numberOfColumns;
 	my dataChanged = 0;
 }
 
@@ -1827,62 +2009,62 @@ void SSCP_unExpand (SSCP me) {
 	}
 	NUMmatrix_free (my data, 1, 1);
 	my data = my expansion;
-	my expansion = 0;
+	my expansion = nullptr;
 	my numberOfRows = my expansionNumberOfRows;
 	my expansionNumberOfRows = 0;
 	my dataChanged = 0;
 }
 
 void SSCP_expandLowerCholesky (SSCP me) {
-	if (my lowerCholesky == 0) {
+	if (! my lowerCholesky) {
 		my lowerCholesky = NUMmatrix<double> (1, my numberOfRows, 1, my numberOfColumns);
 	}
-	if (my numberOfRows == 1) { // diagonal
-		my lnd = 0;
-		for (long j = 1; j <= my numberOfColumns; j++) {
-			my lowerCholesky[1][j] = 1 / sqrt (my data[1][j]); // inverse is 1/stddev
-			my lnd += log (my data[1][j]); // diagonal elmnt is variance
+	if (my numberOfRows == 1) {   // diagonal
+		my lnd = 0.0;
+		for (long j = 1; j <= my numberOfColumns; j ++) {
+			my lowerCholesky [1] [j] = 1.0 / sqrt (my data[1] [j]);   // inverse is 1/stddev
+			my lnd += log (my data [1] [j]);   // diagonal elmnt is variance
 		}
 	} else {
-		for (long i = 1; i <= my numberOfRows; i++) {
-			for (long j = i; j <= my numberOfColumns; j++) {
-				my lowerCholesky[j][i] = my lowerCholesky[i][j] = my data[i][j];
+		for (long i = 1; i <= my numberOfRows; i ++) {
+			for (long j = i; j <= my numberOfColumns; j ++) {
+				my lowerCholesky [j] [i] = my lowerCholesky [i] [j] = my data [i] [j];
 			}
 		}
 		try {
 			NUMlowerCholeskyInverse (my lowerCholesky, my numberOfColumns, & (my lnd));
 		} catch (MelderError) {
 			// singular matrix: arrange a diagonal only inverse.
-			my lnd = 0;
-			for (long i = 1; i <= my numberOfRows; i++) {
-				for (long j = i; j <= my numberOfColumns; j++) {
-					my lowerCholesky[i][j] =  my lowerCholesky[j][i] = i == j ? 1. / sqrt (my data[i][i]) : 0;
+			my lnd = 0.0;
+			for (long i = 1; i <= my numberOfRows; i ++) {
+				for (long j = i; j <= my numberOfColumns; j ++) {
+					my lowerCholesky [i] [j] = my lowerCholesky [j] [i] = ( i == j ? 1.0 / sqrt (my data [i] [i]) : 0.0 );
 				}
-				my lnd += log (my data[i][i]);
+				my lnd += log (my data [i] [i]);
 			}
-			my lnd *= 2;
+			my lnd *= 2.0;
 		}
 	}
 }
 
 void SSCP_unExpandLowerCholesky (SSCP me) {
 	NUMmatrix_free (my lowerCholesky, 1, 1);
-	my lnd = 0;
+	my lnd = 0.0;
 }
 
 void SSCP_expandPCA (SSCP me) {
-	if (my pca != 0) {
-		forget (my pca);
+	if (my pca) {
+		my pca.reset();
 	}
 	my pca = SSCP_to_PCA (me);
 }
 
 void SSCP_unExpandPCA (SSCP me) {
-	forget (my pca);
+	my pca.reset();
 }
 
 
 #undef MAX
 #undef MIN
 
-/* End of file SSCP.c 2148*/
+/* End of file SSCP.c */
diff --git a/dwtools/SSCP.h b/dwtools/SSCP.h
index 9dcc5e1..70a9562 100644
--- a/dwtools/SSCP.h
+++ b/dwtools/SSCP.h
@@ -2,21 +2,20 @@
 #define _SSCP_h_
 /* SSCP.h
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TableOfReal_extensions.h"
@@ -24,7 +23,6 @@
 #include "CCA.h"
 
 #include "SSCP_def.h"
-oo_CLASS_CREATE (SSCP, TableOfReal);
 
 Thing_define (Covariance, SSCP) {
 };
@@ -36,57 +34,73 @@ Thing_define (Correlation, SSCP) {
 	Ordered collection of SSCP's
 	All SSCP's must have the same dimensions and labels.
 */
-Thing_define (SSCPs, Ordered) {
+Collection_define (SSCPList, OrderedOf, SSCP) {
+};
+
+Collection_define (CovarianceList, OrderedOf, Covariance) {
+	SSCPList asSSCPList () {
+		return reinterpret_cast<SSCPList> (this);
+	}
 };
 
 void SSCP_init (SSCP me, long dimension, long storage);
 
-SSCP SSCP_create (long dimension);
+autoSSCP SSCP_create (long dimension);
 
 void SSCP_drawTwoDimensionalEllipse_inside  (SSCP me, Graphics g, double scale, char32 * label, int fontSize);
-double SSCP_getEllipseScalefactor (SSCP me, double scale, int confidence);
+
+double SSCP_getEllipseScalefactor (SSCP me, double scale, bool confidence);
+
 void SSCP_drawConcentrationEllipse (SSCP me, Graphics g, double scale, int confidence,
 	long d1, long d2, double xmin, double xmax, double ymin, double ymax, int garnish);
 
 void SSCP_setNumberOfObservations (SSCP me, double numberOfObservations);
+
 void SSCP_setCentroid (SSCP me, long component, double value); // only SSCP & Covariance
+
 void SSCP_setValue (SSCP me, long row, long col, double value); // only SSCP & Covariance
 
 double SSCP_getNumberOfObservations (SSCP me);
+
 double SSCP_getDegreesOfFreedom (SSCP me);
+
 double SSCP_getTotalVariance (SSCP me);
+
 double SSCP_getCumulativeContributionOfComponents (SSCP me, long from, long to);
+
 double SSCP_getLnDeterminant (SSCP me);
-double SSCP_getConcentrationEllipseArea(SSCP me, double scale, int confidence, long d1, long d2);
+
+double SSCP_getConcentrationEllipseArea(SSCP me, double scale, bool confidence, long d1, long d2);
+
 double SSCP_getFractionVariation (SSCP me, long from, long to);
 
-SSCP TableOfReal_to_SSCP (TableOfReal me, long rowb, long rowe, long colb, long cole);
+autoSSCP TableOfReal_to_SSCP (TableOfReal me, long rowb, long rowe, long colb, long cole);
+
+autoTableOfReal SSCP_and_TableOfReal_extractDistanceQuantileRange (SSCP me, TableOfReal thee, double qlow, double qhigh);
 
-TableOfReal SSCP_and_TableOfReal_extractDistanceQuantileRange (SSCP me, TableOfReal thee,
-	double qlow, double qhigh);
-TableOfReal Covariance_and_TableOfReal_extractDistanceQuantileRange (Covariance me, TableOfReal thee,
-	double qlow, double qhigh);
+autoTableOfReal Covariance_and_TableOfReal_extractDistanceQuantileRange (Covariance me, TableOfReal thee, double qlow, double qhigh);
 /*
 	Select from a TableOfReal the rows whose Mahalanobis distance to the centroid
 	(from the SSCP) is in the quantile [qlow, qhigh].
 */
 
-TableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, thou, bool useTableCentroid);
+autoTableOfReal Covariance_and_TableOfReal_mahalanobis (Covariance me, TableOfReal thee, bool useTableCentroid);
 /*
 	Calculate the Mahalanobis distance: sqrt ((x-m)'S**-1 (x-m))
 	use the m-vector (centroid) from the covariance unless useTableColumnMeans is true.
 */
 
+autoCovariance TableOfReal_to_Covariance (TableOfReal me);
 
-Covariance TableOfReal_to_Covariance (TableOfReal me);
+autoCorrelation TableOfReal_to_Correlation (TableOfReal me);
 
-Correlation TableOfReal_to_Correlation (TableOfReal me);
-Correlation TableOfReal_to_Correlation_rank (TableOfReal me);
+autoCorrelation TableOfReal_to_Correlation_rank (TableOfReal me);
 
-TableOfReal SSCP_to_TableOfReal (SSCP me);
-TableOfReal SSCP_extractCentroid (SSCP me);
+autoTableOfReal SSCP_to_TableOfReal (SSCP me);
 
-TableOfReal Covariance_to_TableOfReal_randomSampling (Covariance me, long numberOfData);
+autoTableOfReal SSCP_extractCentroid (SSCP me);
+
+autoTableOfReal Covariance_to_TableOfReal_randomSampling (Covariance me, long numberOfData);
 /* Generate a table with data based on the covariance matrix */
 
 void Covariance_and_PCA_generateOneVector (Covariance me, PCA thee, double *vec, double *buf);
@@ -102,18 +116,21 @@ void Covariance_and_PCA_generateOneVector (Covariance me, PCA thee, double *vec,
 		4. buf, a vector of length my numberOfColumns, is needed so the routine cannot fail
 */
 
-SSCPs TableOfReal_to_SSCPs_byLabel (TableOfReal me);
+autoSSCPList TableOfReal_to_SSCPList_byLabel (TableOfReal me);
 
-PCA SSCP_to_PCA (SSCP me);
+autoPCA SSCP_to_PCA (SSCP me);
 
 void SSCP_expandPCA (SSCP me);
+
 void SSCP_unExpandPCA (SSCP me);
 
-CCA SSCP_to_CCA (SSCP me, long ny);
+autoCCA SSCP_to_CCA (SSCP me, long ny);
+
+autoCovariance Covariance_create (long dimension);
+
+autoCovariance Covariance_createSimple (char32 *covars, char32 *centroid, long numberOfObservations);
 
-Covariance Covariance_create (long dimension);
-Covariance Covariance_createSimple (char32 *covars, char32 *centroid, long numberOfObservations);
-Covariance Covariance_create_reduceStorage (long dimension, long storage);
+autoCovariance Covariance_create_reduceStorage (long dimension, long storage);
 /*
 	storage 0 or >= dimension: complete matrix
 	storage 1: only diagonal
@@ -124,10 +141,11 @@ Covariance Covariance_create_reduceStorage (long dimension, long storage);
     See also SSCP_expand () for usage.
 */
 
-Correlation Correlation_create (long dimension);
+autoCorrelation Correlation_create (long dimension);
 
-TableOfReal Correlation_confidenceIntervals (Correlation me,
-	double confidenceLevel, long numberOfTests, int method);
+autoCorrelation Correlation_createSimple (char32 *s_correlations, char32 *s_centroid, long numberOfObservations);
+
+autoTableOfReal Correlation_confidenceIntervals (Correlation me, double confidenceLevel, long numberOfTests, int method);
 /*
 	if (method == 1)
 		Confidence intervals by Ruben's approximation
@@ -142,45 +160,36 @@ TableOfReal Correlation_confidenceIntervals (Correlation me,
 
 /* Precondition ||vector|| = 1 */
 void Covariance_getMarginalDensityParameters (Covariance me, double *vector, double *mu, double *stdev);
-double Covariance_getMarginalProbabilityAtPosition (Covariance me, double *vector, double x);
 
-double Covariance_getProbabilityAtPosition_string (Covariance me, char32 *xpos);
-double Covariance_getProbabilityAtPosition (Covariance me, double *x);
-/* evaluate the pdf(x,mu,Sigma) at x */
+double Covariance_getMarginalProbabilityAtPosition (Covariance me, double vector[], double x);
 
-Covariance SSCP_to_Covariance (SSCP me, long numberOfConstraints);
+double Covariance_getProbabilityAtPosition_string (Covariance me, char32 *xpos);
 
-SSCP Covariance_to_SSCP (Covariance me);
+double Covariance_getProbabilityAtPosition (Covariance me, double x[]);
+/* evaluate the pdf(x,mu,Sigma) at x */
 
-void SSCP_testDiagonality_bartlett (SSCP me, long numberOfContraints,
-	double *chisq, double *probability);
-void Correlation_testDiagonality_bartlett (Correlation me,
-	long numberOfContraints, double *chisq, double *probability);
-/* Test whether matrices are diagonal matrices, Morrison, page 118 */
+autoCovariance SSCP_to_Covariance (SSCP me, long numberOfConstraints);
 
-Correlation SSCP_to_Correlation (SSCP me);
+autoSSCP Covariance_to_SSCP (Covariance me);
 
-Configuration SSCP_to_Configuration (SSCP me, long numberOfDimensions);
+void SSCP_testDiagonality_bartlett (SSCP me, long numberOfContraints, double *chisq, double *prob, double *df);
 
-Configuration Covariance_to_Configuration (Covariance me, long numberOfDimensions);
+void Correlation_testDiagonality_bartlett (Correlation me, long numberOfContraints, double *chisq, double *prob, double *df);
+/* Test if a Correlation matrix is diagonal, Morrison pp. 116-118 */
 
-Configuration Correlation_to_Configuration (Correlation me, long numberOfDimensions);
+autoCorrelation SSCP_to_Correlation (SSCP me);
 
-void Covariance_difference (Covariance me, Covariance thee, double *prob, double *chisq, long *ndf);
+void Covariance_difference (Covariance me, Covariance thee, double *prob, double *chisq, double *df);
 
-void Covariance_getSignificanceOfOneMean (Covariance me, long index, double mu,
-	double *probability, double *t, double *ndf);
+void Covariance_getSignificanceOfOneMean (Covariance me, long index, double mu,	double *probability, double *t, double *df);
 
-void Covariance_getSignificanceOfMeansDifference (Covariance me,
-	long index1, long index2, double mu, int paired, int equalVariances,
+void Covariance_getSignificanceOfMeansDifference (Covariance me, long index1, long index2, double mu, int paired, int equalVariances,
 	double *probability, double *t, double *ndf);
 
-void Covariance_getSignificanceOfOneVariance (Covariance me, long index,
-	double sigmasq, double *probability, double *chisq, long *ndf);
+void Covariance_getSignificanceOfOneVariance (Covariance me, long index, double sigmasq, double *probability, double *chisq, long *ndf);
 
-void Covariance_getSignificanceOfVariancesRatio (Covariance me,
-	long index1, long index2, double ratio, double *probability,
-	double *f, long *ndf);
+void Covariance_getSignificanceOfVariancesRatio (Covariance me, long index1, long index2, double ratio, double *probability,
+	double *f, double *df);
 
 double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance thee, int equalCovariances, double *prob, double *fisher, double *df1, double *df2);
 /* Are the centroids of me and thee different?
@@ -191,36 +200,37 @@ double Covariances_getMultivariateCentroidDifference (Covariance me, Covariance
 	f has Fisher distribution with p and n1+n2-p-1 degrees of freedom.
 */
 
-void Covariances_equality (Collection me, int method, double *prob, double *chisq, double *df);
+void Covariances_equality (CovarianceList me, int method, double *prob, double *chisq, double *df);
 /*
 	Equality of covariance.
 	method = 1 : Bartlett (Morrison, 1990)
 	method = 2 : Wald (Schott, 2001)
 */
 
-SSCPs SSCPs_create ();
+autoCovariance CovarianceList_to_Covariance_pool (CovarianceList me);
 
-SSCPs TableOfReal_to_SSCPs_byLabel (TableOfReal me);
+autoSSCPList TableOfReal_to_SSCPList_byLabel (TableOfReal me);
 
-SSCP SSCPs_to_SSCP_sum (SSCPs me);
+autoSSCP SSCPList_to_SSCP_sum (SSCPList me);
 /* Sum the sscp's and weigh each means with it's numberOfObservations. */
 
-SSCP SSCPs_to_SSCP_pool (SSCPs me);
+autoSSCP SSCPList_to_SSCP_pool (SSCPList me);
 
-void SSCPs_getHomegeneityOfCovariances_box (SSCPs me, double *probability,
-	double *chisq, long *ndf);
+void SSCPList_getHomegeneityOfCovariances_box (SSCPList me, double *probability, double *chisq, double *df);
 
-SSCP SSCP_toTwoDimensions (SSCP me, double *v1, double *v2);
-SSCPs SSCPs_toTwoDimensions (SSCPs me, double *v1, double *v2);
-SSCPs SSCPs_extractTwoDimensions (SSCPs me, long d1, long d2);
+autoSSCP SSCP_toTwoDimensions (SSCP me, double *v1, double *v2);
+
+autoSSCPList SSCPList_toTwoDimensions (SSCPList me, double *v1, double *v2);
+
+autoSSCPList SSCPList_extractTwoDimensions (SSCPList me, long d1, long d2);
 
 /* For inheritors */
 
-void SSCPs_drawConcentrationEllipses (SSCPs me, Graphics g, double scale,
-	int confidence, const char32 *label, long d1, long d2, double xmin, double xmax,
-	double ymin, double ymax, int fontSize, int garnish);
+void SSCPList_drawConcentrationEllipses (SSCPList me, Graphics g, double scale,
+	bool confidence, const char32 *label, long d1, long d2, double xmin, double xmax,
+	double ymin, double ymax, int fontSize, bool garnish);
 
-void SSCPs_getEllipsesBoundingBoxCoordinates (SSCPs me, double scale, int confidence,
+void SSCPList_getEllipsesBoundingBoxCoordinates (SSCPList me, double scale, bool confidence,
 	double *xmin, double *xmax, double *ymin, double *ymax);
 
 void SSCP_expand (SSCP me);
@@ -240,6 +250,8 @@ void SSCP_unExpand (SSCP me);
 /* Use only if the memory is really needed! */
 
 void SSCP_expandLowerCholesky (SSCP me); // create lower square root of covariance matrix
+
 void SSCP_unExpandLowerCholesky (SSCP me);
 
-#endif /* _SSCP_h_ */
+/* End of file SSCP.h */
+#endif
diff --git a/dwtools/SSCP_def.h b/dwtools/SSCP_def.h
index 3c1a1e0..e599a99 100644
--- a/dwtools/SSCP_def.h
+++ b/dwtools/SSCP_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2010 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -23,6 +22,7 @@ oo_DEFINE_CLASS (SSCP, TableOfReal)
 
 	oo_DOUBLE (numberOfObservations)
 	oo_DOUBLE_VECTOR (centroid, numberOfColumns)
+
 	/*
 		The following definitions are only needed when we want to use many big diagonal or
 		almost diagonal matrices like for example in a GaussianMixture,
@@ -34,8 +34,9 @@ oo_DEFINE_CLASS (SSCP, TableOfReal)
 		oo_DOUBLE_MATRIX (expansion, expansionNumberOfRows, numberOfColumns)
 		oo_DOUBLE (lnd)
 		oo_DOUBLE_MATRIX (lowerCholesky, numberOfColumns, numberOfColumns)
-		oo_OBJECT (PCA, 0, pca)
+		oo_AUTO_OBJECT (PCA, 0, pca)
 	#endif
+
 	#if oo_DECLARING
 		void v_info ()
 			override;
diff --git a/dwtools/Sampled2.cpp b/dwtools/Sampled2.cpp
deleted file mode 100644
index 1cc83e9..0000000
--- a/dwtools/Sampled2.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Sampled2.cpp
- *
- * Copyright (C) 1993-2011 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "Sampled2.h"
-#include "NUM2.h"
-
-#include "oo_DESTROY.h"
-#include "Sampled2_def.h"
-#include "oo_COPY.h"
-#include "Sampled2_def.h"
-#include "oo_EQUAL.h"
-#include "Sampled2_def.h"
-#include "oo_CAN_WRITE_AS_ENCODING.h"
-#include "Sampled2_def.h"
-#include "oo_WRITE_TEXT.h"
-#include "Sampled2_def.h"
-#include "oo_WRITE_BINARY.h"
-#include "Sampled2_def.h"
-#include "oo_READ_BINARY.h"
-#include "Sampled2_def.h"
-#include "oo_DESCRIPTION.h"
-#include "Sampled2_def.h"
-
-Thing_implement (Sampled2, Sampled, 0);
-
-void structSampled2 :: v_readText (MelderReadText text, int /*formatVersion*/) {
-	xmin = texgetr8 (text);
-	xmax = texgetr8 (text);
-	nx = texgeti4 (text);
-	dx = texgetr8 (text);
-	x1 = texgetr8 (text);
-	ymin = texgetr8 (text);
-	ymax = texgetr8 (text);
-	ny = texgeti4 (text);
-	dy = texgetr8 (text);
-	y1 = texgetr8 (text);
-	if (xmin > xmax || ymin > ymax) {
-		Melder_throw (U"xmax should be greater than xmax and ymax should be greater than ymin.");
-	}
-	if (nx < 1 || ny < 1) {
-		Melder_throw (U"nx and ny should be at least 1.");
-	}
-	if (dx <= 0 || dy <= 0) {
-		Melder_throw (U"dx and dy should be positive.");
-	}
-}
-
-void Sampled2_init
-(I, double xmin, double xmax, long nx, double dx, double x1,
- double ymin, double ymax, long ny, double dy, double y1) {
-	iam (Sampled2);
-	my xmin = xmin; my xmax = xmax; my nx = nx; my dx = dx; my x1 = x1;
-	my ymin = ymin; my ymax = ymax; my ny = ny; my dy = dy; my y1 = y1;
-}
-
-double Sampled2_columnToX (I, double column) {
-	iam (Sampled2);
-	return my x1 + (column - 1) * my dx;
-}
-
-double Sampled2_rowToY (I, double row) {
-	iam (Sampled2);
-	return my y1 + (row - 1) * my dy;
-}
-
-double Sampled2_xToColumn (I, double x) {
-	iam (Sampled2);
-	return (x - my x1) / my dx + 1;
-}
-
-long Sampled2_xToLowColumn (I, double x) {
-	iam (Sampled2);
-	return (long) floor (Sampled2_xToColumn (me, x));
-}
-
-long Sampled2_xToHighColumn (I, double x) {
-	iam (Sampled2);
-	return (long) ceil (Sampled2_xToColumn (me, x));
-}
-
-long Sampled2_xToNearestColumn (I, double x) {
-	iam (Sampled2);
-	return (long) floor (Sampled2_xToColumn (me, x) + 0.5);
-}
-
-double Sampled2_yToRow (I, double y) {
-	iam (Sampled2);
-	return (y - my y1) / my dy + 1;
-}
-
-long Sampled2_yToLowRow (I, double y) {
-	iam (Sampled2);
-	return (long) floor (Sampled2_yToRow (me, y));
-}
-
-long Sampled2_yToHighRow (I, double y) {
-	iam (Sampled2);
-	return (long) ceil (Sampled2_yToRow (me, y));
-}
-
-long Sampled2_yToNearestRow (I, double y) {
-	iam (Sampled2);
-	return (long) floor (Sampled2_yToRow (me, y) + 0.5);
-}
-
-long Sampled2_getWindowSamplesX (I, double xmin, double xmax, long *ixmin, long *ixmax) {
-	iam (Sampled2);
-	*ixmin = 1 + (long) ceil ( (xmin - my x1) / my dx);
-	*ixmax = 1 + (long) floor ( (xmax - my x1) / my dx);
-	if (*ixmin < 1) {
-		*ixmin = 1;
-	}
-	if (*ixmax > my nx) {
-		*ixmax = my nx;
-	}
-	if (*ixmin > *ixmax) {
-		return 0;
-	}
-	return *ixmax - *ixmin + 1;
-}
-
-long Sampled2_getWindowSamplesY (I, double ymin, double ymax, long *iymin, long *iymax) {
-	iam (Sampled2);
-	*iymin = 1 + (long) ceil ( (ymin - my y1) / my dy);
-	*iymax = 1 + (long) floor ( (ymax - my y1) / my dy);
-	if (*iymin < 1) {
-		*iymin = 1;
-	}
-	if (*iymax > my ny) {
-		*iymax = my ny;
-	}
-	if (*iymin > *iymax) {
-		return 0;
-	}
-	return *iymax - *iymin + 1;
-}
-
-long Sampled2_getWindowExtrema_d (I, double **z, long ixmin, long ixmax, long iymin, long iymax,
-                                  double *minimum, double *maximum) {
-	iam (Sampled2);
-
-	if (ixmin == 0) {
-		ixmin = 1;
-	}
-	if (ixmax == 0) {
-		ixmax = my nx;
-	}
-	if (iymin == 0) {
-		iymin = 1;
-	}
-	if (iymax == 0) {
-		iymax = my ny;
-	}
-	if (ixmin > ixmax || iymin > iymax) {
-		return 0;
-	}
-	*minimum = *maximum = z[iymin][ixmin];
-	for (long iy = iymin; iy <= iymax; iy ++)
-		for (long ix = ixmin; ix <= ixmax; ix ++) {
-			if (z[iy][ix] < *minimum) {
-				*minimum = z[iy][ix];
-			}
-			if (z[iy][ix] > *maximum) {
-				*maximum = z[iy][ix];
-			}
-		}
-	return (ixmax - ixmin + 1) * (iymax - iymin + 1);
-}
-
-long Sampled2_getWindowExtrema_f (I, float **z, long ixmin, long ixmax, long iymin, long iymax,
-                                  double *minimum, double *maximum) {
-	iam (Sampled2);
-	if (ixmin == 0) {
-		ixmin = 1;
-	}
-	if (ixmax == 0) {
-		ixmax = my nx;
-	}
-	if (iymin == 0) {
-		iymin = 1;
-	}
-	if (iymax == 0) {
-		iymax = my ny;
-	}
-	if (ixmin > ixmax || iymin > iymax) {
-		return 0;
-	}
-	*minimum = *maximum = z[iymin] [ixmin];
-	for (long iy = iymin; iy <= iymax; iy ++)
-		for (long ix = ixmin; ix <= ixmax; ix ++) {
-			if (z[iy][ix] < *minimum) {
-				*minimum = z[iy][ix];
-			}
-			if (z[iy][ix] > *maximum) {
-				*maximum = z[iy][ix];
-			}
-		}
-	return (ixmax - ixmin + 1) * (iymax - iymin + 1);
-}
-
-/* End of file Sampled2.cpp */
diff --git a/dwtools/Sampled2.h b/dwtools/Sampled2.h
deleted file mode 100644
index 183fd2d..0000000
--- a/dwtools/Sampled2.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef _Sampled2_h_
-#define _Sampled2_h_
-/* Sampled2.h
- *
- * Copyright (C) 1993-2011 David Weenink & Paul Boersma
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "Sampled.h"
-
-#include "Sampled2_def.h"
-oo_CLASS_CREATE (Sampled2, Sampled);
-
-void Sampled2_init (I, double xmin, double xmax, long nx, double dx, double x1,
-	double ymin, double ymax, long ny, double dy, double y1);
-
-long Sampled2_getWindowSamplesX (I, double xmin, double xmax, long *ixmin, long *ixmax);
-/*
-	Function:
-		return the number of samples with x values in [xmin, xmax].
-		Put the first of these samples in ixmin.
-		Put the last of these samples in ixmax.
-	Postconditions:
-		*ixmin >= 1;
-		*ixmax <= my nx;
-		if (result != 0) *ixmin <= *ixmax; else *ixmin > *ixmax;
-		if (result != 0) result == *ixmax - *ixmin + 1;
-*/
-
-double Sampled2_columnToX (I, double column);   /* Return my x1 + (column - 1) * my dx.	 */
-
-double Sampled2_rowToY (I, double row);   /* Return my y1 + (row - 1) * my dy. */
-
-double Sampled2_xToColumn (I, double x);   /* Return (x - xmin) / my dx + 1. */
-
-long Sampled2_xToLowColumn (I, double x);   /* Return floor (Matrix_xToColumn (me, x)). */
-
-long Sampled2_xToHighColumn (I, double x);   /* Return ceil (Matrix_xToColumn (me, x)). */
-
-long Sampled2_xToNearestColumn (I, double x);   /* Return floor (Matrix_xToColumn (me, x) + 0.5). */
-
-double Sampled2_yToRow (I, double y);   /* Return (y - ymin) / my dy + 1. */
-
-long Sampled2_yToLowRow (I, double y);   /* Return floor (Matrix_yToRow (me, y)). */
-
-long Sampled2_yToHighRow (I, double x);   /* Return ceil (Matrix_yToRow (me, y)). */
-
-long Sampled2_yToNearestRow (I, double y);   /* Return floor (Matrix_yToRow (me, y) + 0.5). */
-
-long Sampled2_getWindowSamplesY (I, double ymin, double ymax, long *iymin, long *iymax);
-
-/**** a little bit dangerous ******/
-
-long Sampled2_getWindowExtrema_d (I, double **z, long ixmin, long ixmax,
-	long iymin, long iymax, double *minimum, double *maximum);
-	
-long Sampled2_getWindowExtrema_f (I, float **z, long ixmin, long ixmax,
-	long iymin, long iymax, double *minimum, double *maximum);
-/*
-	Function:
-		compute the minimum and maximum values of z over all samples inside [ixmin, ixmax] * [iymin, iymax].
-	Arguments:
-		if ixmin = 0, start at first column; if ixmax = 0, end at last column (same for iymin and iymax).
-	Return value:
-		the number of samples inside the window.
-	Postconditions:
-		if result == 0, *minimum and *maximum are not changed;
-*/
-
-#endif /* _Sampled2_h_ */
diff --git a/dwtools/Sampled2_def.h b/dwtools/Sampled2_def.h
deleted file mode 100644
index 217198d..0000000
--- a/dwtools/Sampled2_def.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Sampled2_def.h
- *
- * Copyright (C) 1993-2013 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- djmw 19970408
- djmw 20020813 GPL header
-*/
-
-#define ooSTRUCT Sampled2
-oo_DEFINE_CLASS (Sampled2, Sampled)
-
-	oo_DOUBLE (ymin)
-	oo_DOUBLE (ymax)
-	oo_LONG (ny)
-	oo_DOUBLE (dy)
-	oo_DOUBLE (y1)
-
-oo_END_CLASS (Sampled2)
-#undef ooSTRUCT
-
-/* End of file Sampled2_def.h */
diff --git a/dwtools/Sound_and_FilterBank.cpp b/dwtools/Sound_and_FilterBank.cpp
deleted file mode 100644
index 0bd004a..0000000
--- a/dwtools/Sound_and_FilterBank.cpp
+++ /dev/null
@@ -1,421 +0,0 @@
-/* Sound_and_FilterBank.cpp
- *
- * Copyright (C) 1993-2013 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- djmw 20010718
- djmw 20020813 GPL header.
- djmw 20041124 Changed call to Sound_to_Spectrum.
- djmw 20070103 Sound interface changes
- djmw 20071107 Errors/warnings text changes
- djmw 20071202 Melder_warning<n>
-*/
-
-#include "Sound_and_FilterBank.h"
-#include "Sound_extensions.h"
-#include "Sound_and_Spectrum.h"
-#include "Sound_to_Pitch.h"
-#include "Vector.h"
-#include "NUM2.h"
-
-#define MIN(m,n) ((m) < (n) ? (m) : (n))
-// prototypes
-Sound FilterBank_as_Sound (FilterBank me);
-
-/*
-	The gaussian(x) = (exp(-48*((i-(n+1)/2)/(n+1))^2)-exp(-12))/(1-exp(-12));
-	For power we need the area under the square of this window:
-		Integrate (gaussian(i)^2,i=1..n) =
-
-	(sqrt(Pi)*sqrt(3)*sqrt(2)*erf(2*(n-1)*sqrt(3)*sqrt(2)/(n+1))*(n+1)+
-		24*exp(-24)*(n-1)+
-	-4*sqrt(Pi)*sqrt(3)*exp(-12)*erf(2*(n-1)*sqrt(3)/(n+1))*(n+1))/
-	(24 * (-1+exp(-12))^2)
-	To compare with the rectangular window we need to divide this by the
-	window width (n-1) x 1^2.
-*/
-static double gaussian_window_squared_correction (long n) {
-	double e12 = exp (-12), denum = (e12 - 1) * (e12 - 1) * 24 * (n - 1);
-	double sqrt3 = sqrt (3), sqrt2 = sqrt (2), sqrtpi = sqrt (NUMpi);
-	double arg1 = 2 * sqrt3 * (n - 1) / (n + 1), arg2 = arg1 * sqrt2;
-	double p2 = sqrtpi * sqrt3 * sqrt2 * (1 - NUMerfcc (arg2)) * (n + 1);
-	double p1 = 4 * sqrtpi * sqrt3 * e12 * (1 - NUMerfcc (arg1)) * (n + 1);
-
-	return (p2 - p1 + 24 * (n - 1) * e12 * e12) / denum;
-}
-
-static Matrix Sound_to_spectralpower (Sound me) {
-	try {
-		autoSpectrum s = Sound_to_Spectrum (me, TRUE);
-		autoMatrix thee = Matrix_create (s -> xmin, s -> xmax, s -> nx, s -> dx, s -> x1, 1, 1, 1, 1, 1);
-		double scale = 2.0 * s -> dx / (my xmax - my xmin);
-
-		// factor '2' because of positive and negative frequencies
-		// s -> dx : width of frequency bin
-		// my xmax - my xmin : duration of sound
-
-		double *z = thy z[1], *re = s -> z[1], *im = s -> z[2];
-		for (long i = 1; i <= s -> nx; i++) {
-			z[i] = scale * (re[i] * re[i] + im[i] * im [i]);
-		}
-
-		// Frequency bins at 0 Hz and nyquist don't count for two.
-
-		z[1] *= 0.5;
-		z[s -> nx] *= 0.5;
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, ": no Matrix with spectral power created.");
-	}
-}
-
-static int Sound_into_BarkFilter_frame (Sound me, BarkFilter thee, long frame) {
-	autoMatrix pv = Sound_to_spectralpower (me);
-	long nf = pv -> nx;
-	autoNUMvector<double> z (1, nf);
-
-	for (long j = 1; j <= nf; j++) {
-		z[j] = HZTOBARK (pv -> x1 + (j - 1) * pv -> dx);
-	}
-
-	for (long i = 1; i <= thy ny; i++) {
-		double p = 0;
-		double z0 = thy y1 + (i - 1) * thy dy;
-		double *pow = pv -> z[1]; // TODO ??
-		for (long j = 1; j <= nf; j++) {
-			// Sekey & Hanson filter is defined in the power domain.
-			// We therefore multiply the power with a (and not a^2).
-			// integral (F(z),z=0..25) = 1.58/9
-
-			double a = NUMsekeyhansonfilter_amplitude (z0, z[j]);
-			p += a * pow[j] ;
-		}
-		thy z[i][frame] = p;
-	}
-	return 1;
-}
-
-BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt, double f1_bark, double fmax_bark, double df_bark) {
-	try {
-		double t1, nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist;
-		double windowDuration = 2 * analysisWidth; /* gaussian window */
-		double zmax = NUMhertzToBark2 (nyquist);
-		double fmin_bark = 0;
-		long nt, frameErrorCount = 0;
-
-		// Check defaults.
-
-		if (f1_bark <= 0) {
-			f1_bark = 1;
-		}
-		if (fmax_bark <= 0) {
-			fmax_bark = zmax;
-		}
-		if (df_bark <= 0) {
-			df_bark = 1;
-		}
-
-		fmax_bark = MIN (fmax_bark, zmax);
-		long nf = floor ( (fmax_bark - f1_bark) / df_bark + 0.5);
-		if (nf <= 0) {
-			Melder_throw ("The combination of filter parameters is not valid.");
-		}
-
-		Sampled_shortTermAnalysis (me, windowDuration, dt, & nt, & t1);
-		autoSound sframe = Sound_createSimple (1, windowDuration, samplingFrequency);
-		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
-		autoBarkFilter thee = BarkFilter_create (my xmin, my xmax, nt, dt, t1,
-		                      fmin_bark, fmax_bark, nf, df_bark, f1_bark);
-
-		autoMelderProgress progess (L"BarkFilter analysis");
-
-		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (thee.peek(), i);
-
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-
-			Sounds_multiply (sframe.peek(), window.peek());
-
-			if (! Sound_into_BarkFilter_frame (sframe.peek(), thee.peek(), i)) {
-				frameErrorCount++;
-			}
-
-			if ( (i % 10) == 1) {
-				Melder_progress ( (double) i / nt,  L"BarkFilter analysis: frame ",
-					Melder_integer (i), L" from ", Melder_integer (nt), L".");
-			}
-		}
-
-		if (frameErrorCount > 0) {
-			Melder_warning (L"Analysis results of ", Melder_integer (frameErrorCount), L" frame(s) out of ",
-				Melder_integer (nt), L" will be suspect.");
-		}
-
-		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
-
-		NUMdmatrix_to_dBs (thy z, 1, thy ny, 1, thy nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, ": no BarkFilter created.");
-	}
-}
-
-static int Sound_into_MelFilter_frame (Sound me, MelFilter thee, long frame) {
-	autoMatrix pv = Sound_to_spectralpower (me);
-
-	double z1 = pv -> x1;
-	double dz = pv -> dx;
-	long nf = pv -> nx;
-	double df = thy dy;
-	for (long i = 1; i <= thy ny; i++) {
-		double p = 0;
-		double fc_mel = thy y1 + (i - 1) * df;
-		double fc_hz = MELTOHZ (fc_mel);
-		double fl_hz = MELTOHZ (fc_mel - df);
-		double fh_hz =  MELTOHZ (fc_mel + df);
-		double *pow = pv -> z[1];
-		for (long j = 1; j <= nf; j++) {
-			// Bin with a triangular filter the power (=amplitude-squared)
-
-			double f = z1 + (j - 1) * dz;
-			double a = NUMtriangularfilter_amplitude (fl_hz, fc_hz, fh_hz, f);
-			p += a * pow[j];
-		}
-		thy z[i][frame] = p;
-	}
-	return 1;
-}
-
-MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
-	try {
-		double t1, samplingFrequency = 1 / my dx, nyquist = 0.5 * samplingFrequency;
-		double windowDuration = 2 * analysisWidth; /* gaussian window */
-		double fmin_mel = 0;
-		double fbottom = HZTOMEL (100.0), fceiling = HZTOMEL (nyquist);
-		long nt, frameErrorCount = 0;
-
-		// Check defaults.
-
-		if (fmax_mel <= 0 || fmax_mel > fceiling) {
-			fmax_mel = fceiling;
-		}
-		if (fmax_mel <= f1_mel) {
-			f1_mel = fbottom; fmax_mel = fceiling;
-		}
-		if (f1_mel <= 0) {
-			f1_mel = fbottom;
-		}
-		if (df_mel <= 0) {
-			df_mel = 100.0;
-		}
-
-		// Determine the number of filters.
-
-		long nf = floor ((fmax_mel - f1_mel) / df_mel + 0.5);
-		fmax_mel = f1_mel + nf * df_mel;
-
-		Sampled_shortTermAnalysis (me, windowDuration, dt, &nt, &t1);
-		autoSound sframe = Sound_createSimple (1, windowDuration, samplingFrequency);
-		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
-		autoMelFilter thee = MelFilter_create (my xmin, my xmax, nt, dt, t1, fmin_mel, fmax_mel, nf, df_mel, f1_mel);
-
-		autoMelderProgress progress (L"MelFilters analysis");
-
-		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (thee.peek(), i);
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
-			if (! Sound_into_MelFilter_frame (sframe.peek(), thee.peek(), i)) {
-				frameErrorCount++;
-			}
-			if ( (i % 10) == 1) {
-				Melder_progress ((double) i / nt, L"Frame ", Melder_integer (i), L" out of ", Melder_integer (nt), L".");
-			}
-		}
-
-		if (frameErrorCount) {
-			Melder_warning (L"Analysis results of ", Melder_integer (frameErrorCount),
-			L" frame(s) out of ", Melder_integer (nt), L" will be suspect.");
-		}
-
-		// Window correction.
-
-		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
-
-		NUMdmatrix_to_dBs (thy z, 1, thy ny, 1, thy nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, ": no MelFilter created.");
-	}
-}
-
-/*
-	Analog formant filter response :
-	H(f) = i f B / (f1^2 - f^2 + i f B)
-*/
-static int Sound_into_FormantFilter_frame (Sound me, FormantFilter thee, long frame, double bw) {
-	Melder_assert (bw > 0);
-	autoMatrix pv = Sound_to_spectralpower (me);
-	double z1 = pv -> x1;
-	double dz = pv -> dx;
-	long nf = pv -> nx;
-
-	for (long i = 1; i <= thy ny; i++) {
-		double p = 0;
-		double fc = thy y1 + (i - 1) * thy dy;
-		double *pow = pv -> z[1];
-		for (long j = 1; j <= nf; j++) {
-			// H(f) = ifB / (fc^2 - f^2 + ifB)
-			// H(f)| = fB / sqrt ((fc^2 - f^2)^2 + f^2B^2)
-			//|H(f)|^2 = f^2B^2 / ((fc^2 - f^2)^2 + f^2B^2)
-			//         = 1 / (((fc^2 - f^2) /fB)^2 + 1)
-
-			double f = z1 + (j - 1) * dz;
-			double a = NUMformantfilter_amplitude (fc, bw, f);
-			p += a * pow[j];
-		}
-		thy z[i][frame] = p;
-	}
-	return 1;
-}
-
-FormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
-                                      double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw,
-                                      double minimumPitch, double maximumPitch) {
-	try {
-		double floor = 80, ceiling = 600;
-		if (minimumPitch >= maximumPitch) {
-			minimumPitch = floor; maximumPitch = ceiling;
-		}
-		if (minimumPitch <= 0) {
-			minimumPitch = floor;
-		}
-		if (maximumPitch <= 0) {
-			maximumPitch = ceiling;
-		}
-
-		autoPitch thee = Sound_to_Pitch (me, dt, minimumPitch, maximumPitch);
-		autoFormantFilter ff = Sound_and_Pitch_to_FormantFilter (me, thee.peek(), analysisWidth, dt,
-		                       f1_hz, fmax_hz, df_hz, relative_bw);
-		return ff.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, ": no FormantFilter created.");
-	}
-}
-
-FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee, double analysisWidth, double dt,
-        double f1_hz, double fmax_hz, double df_hz, double relative_bw) {
-	try {
-		double t1, windowDuration = 2 * analysisWidth; /* gaussian window */
-		double nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist, fmin_hz = 0;
-		long nt, f0_undefined = 0;
-
-		if (my xmin > thy xmin || my xmax > thy xmax) Melder_throw
-			("The domain of the Sound is not included in the domain of the Pitch.");
-
-		double f0_median = Pitch_getQuantile (thee, thy xmin, thy xmax, 0.5, kPitch_unit_HERTZ);
-
-		if (f0_median == NUMundefined || f0_median == 0) {
-			f0_median = 100;
-			Melder_warning (L"Pitch values undefined. Bandwith fixed to 100 Hz. ");
-		}
-
-		if (f1_hz <= 0) {
-			f1_hz = 100;
-		}
-		if (fmax_hz <= 0) {
-			fmax_hz = nyquist;
-		}
-		if (df_hz <= 0) {
-			df_hz = f0_median / 2;
-		}
-		if (relative_bw <= 0) {
-			relative_bw = 1.1;
-		}
-
-		fmax_hz = MIN (fmax_hz, nyquist);
-		long nf = floor ( (fmax_hz - f1_hz) / df_hz + 0.5);
-
-		Sampled_shortTermAnalysis (me, windowDuration, dt, &nt, &t1);
-		autoFormantFilter him = FormantFilter_create (my xmin, my xmax, nt, dt, t1,
-		                        fmin_hz, fmax_hz, nf, df_hz, f1_hz);
-
-		// Temporary objects
-
-		autoSound sframe = Sound_createSimple (1, windowDuration, samplingFrequency);
-		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
-		autoMelderProgress progress (L"Sound & Pitch: To FormantFilter");
-		for (long i = 1; i <= nt; i++) {
-			double t = Sampled_indexToX (him.peek(), i);
-			double b, f0 = Pitch_getValueAtTime (thee, t, kPitch_unit_HERTZ, 0);
-
-			if (f0 == NUMundefined || f0 == 0) {
-				f0_undefined++; f0 = f0_median;
-			}
-			b = relative_bw * f0;
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
-
-			Sound_into_FormantFilter_frame (sframe.peek(), him.peek(), i, b);
-
-			if ( (i % 10) == 1) {
-				Melder_progress ( (double) i / nt, L"Frame ", Melder_integer (i), L" out of ",
-				                   Melder_integer (nt), L".");
-			}
-		}
-
-		double ref = FilterBank_DBREF * gaussian_window_squared_correction (window -> nx);
-		NUMdmatrix_to_dBs (his z, 1, his ny, 1, his nx, ref, FilterBank_DBFAC, FilterBank_DBFLOOR);
-		return him.transfer();
-	} catch (MelderError) {
-		Melder_throw ("FormantFilter not created from Pitch & FormantFilter.");
-	}
-}
-
-Sound FilterBank_as_Sound (FilterBank me) {
-	try {
-		autoSound thee = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
-		for (long i = 1; i <= my ny; i++) {
-			for (long j = 1; j <= my nx; j++)
-				thy z[i][j] = my z[i][j];
-		}
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, ": no Sound created.");
-	}
-}
-
-Sound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
-	try {
-		autoSound cc = Sounds_crossCorrelate ((Sound) me, (Sound) thee, scaling, signalOutsideTimeDomain);
-		return cc.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, " and ", thee, " not cross-correlated.");
-	}
-}
-
-Sound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
-	try {
-		autoSound cc = Sounds_convolve ((Sound) me, (Sound) thee, scaling, signalOutsideTimeDomain);
-		return cc.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, " and ", thee, " not convolved.");
-	}
-}
-
-/* End of file Sound_and_FilterBank.cpp */
diff --git a/dwtools/Sound_and_FilterBank.h b/dwtools/Sound_and_FilterBank.h
deleted file mode 100644
index 9e19bdc..0000000
--- a/dwtools/Sound_and_FilterBank.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef _Sound_and_FilterBank_h_
-#define _Sound_and_FilterBank_h_
-/* Sound_and_FilterBank.h
- *
- * Copyright (C) 1993-2012 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- djmw 20010404
- djmw 20020813 GPL header
- djmw 20120508 Latest modification
-*/
-
-#include "FilterBank.h"
-#include "Pitch.h"
-#include "Sound.h"
-
-BarkFilter Sound_to_BarkFilter (Sound me, double analysisWidth, double dt,
-	double f1_bark, double fmax_bark, double df_bark);
-/*
-	Filtering with filters on a Bark scale as defined by
-		Andrew Sekey & Brian Hanson (1984), "Improved 1-Bark bandwidth
-		"auditory filter", Jasa 75, 1902-1904.
-	Although not explicitely stated the filter function is defined in the
-	power domain.
-	10 log F(z) = 15.8 + 7.5(z + 0.5) - 17.5 * sqrt(1 + (z + 0.5)^2)
-*/
-
-MelFilter Sound_to_MelFilter (Sound me, double analysisWidth, double dt,
-	double f1_mel, double fmax_mel, double df_mel);
-
-FormantFilter Sound_to_FormantFilter (Sound me, double analysisWidth,
-	double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw,
-	double minimumPitch, double maximumPitch);
-
-FormantFilter Sound_and_Pitch_to_FormantFilter (Sound me, Pitch thee,
-	double analysisWidth, double dt, double f1_hz, double fmax_hz,
-	double df_hz, double relative_bw);
-
-Sound FilterBanks_crossCorrelate (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-Sound FilterBanks_convolve (FilterBank me, FilterBank thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-
-
-#endif /* _Sound_and_FilterBank_h_ */
diff --git a/dwtools/Sound_and_PCA.cpp b/dwtools/Sound_and_PCA.cpp
index 63ce511..5f0c6c7 100644
--- a/dwtools/Sound_and_PCA.cpp
+++ b/dwtools/Sound_and_PCA.cpp
@@ -1,20 +1,19 @@
 /* Sound_and_PCA.cpp
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,18 +33,18 @@ static void checkChannelsWithinRange (long *channels, long n, long min, long max
 	}
 }
 
-PCA Sound_to_PCA_channels (Sound me, double startTime, double endTime) {
+autoPCA Sound_to_PCA_channels (Sound me, double startTime, double endTime) {
 	try {
 		// covariance is cross-correlation with lag time 0
 		autoCrossCorrelationTable thee = Sound_to_CrossCorrelationTable (me, startTime, endTime, 0);
-		autoPCA him = SSCP_to_PCA (thee.peek());
-		return him.transfer();
+		autoPCA him = SSCP_to_PCA (thee.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PCA created.");
 	}
 }
 
-Sound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels) {
+autoSound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels) {
 	try {
 		bool channelSelection = channels != 0 && numberOfChannels > 0;
 		if (numberOfComponents <= 0 || numberOfComponents > thy numberOfEigenvalues) {
@@ -55,7 +54,7 @@ Sound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numbe
 		if (channelSelection) {
 			checkChannelsWithinRange (channels, numberOfChannels, 1, my ny);
 		}
-		autoSound him = (Sound) Data_copy (me);
+		autoSound him = Data_copy (me);
 		// R['i',j] = E(i,k]*S['k',j]
 		// use kij-variant for faster inner loop
 		for (long k = 1; k <= thy dimension; k++) {
@@ -68,17 +67,17 @@ Sound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numbe
 				}
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no principal components calculated with ", thee);
 	}
 }
 
-Sound Sound_and_PCA_principalComponents (Sound me, PCA thee, long numberOfComponents) {
-	return Sound_and_PCA_to_Sound_pc_selectedChannels (me, thee, numberOfComponents, NULL, 0);
+autoSound Sound_and_PCA_principalComponents (Sound me, PCA thee, long numberOfComponents) {
+	return Sound_and_PCA_to_Sound_pc_selectedChannels (me, thee, numberOfComponents, nullptr, 0);
 }
 
-Sound Sound_and_PCA_whitenSelectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels) {
+autoSound Sound_and_PCA_whitenSelectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels) {
 	try {
 		bool channelSelection = channels != 0 && numberOfChannels > 0;
 		if (numberOfComponents <= 0 || numberOfComponents > thy numberOfEigenvalues) {
@@ -109,14 +108,14 @@ Sound Sound_and_PCA_whitenSelectedChannels (Sound me, PCA thee, long numberOfCom
                 }
             }
         }
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created.");
 	}
 }
 
-Sound Sound_and_PCA_whitenChannels (Sound me, PCA thee, long numberOfComponents) {
-	return Sound_and_PCA_whitenSelectedChannels (me, thee, numberOfComponents, NULL, 0);
+autoSound Sound_and_PCA_whitenChannels (Sound me, PCA thee, long numberOfComponents) {
+	return Sound_and_PCA_whitenSelectedChannels (me, thee, numberOfComponents, nullptr, 0);
 }
 
 /* End of file Sound_and_PCA.cpp */
diff --git a/dwtools/Sound_and_PCA.h b/dwtools/Sound_and_PCA.h
index cb7c0a7..e29196f 100644
--- a/dwtools/Sound_and_PCA.h
+++ b/dwtools/Sound_and_PCA.h
@@ -2,21 +2,20 @@
 #define _Sound_and_PCA_h_
 /* Sound_and_PCA.h
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,14 +25,14 @@
 #include "PCA.h"
 #include "Sound.h"
 
-PCA Sound_to_PCA_channels (Sound me, double startTime, double endTime);
+autoPCA Sound_to_PCA_channels (Sound me, double startTime, double endTime);
 
-Sound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels);
+autoSound Sound_and_PCA_to_Sound_pc_selectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels);
 
-Sound Sound_and_PCA_principalComponents (Sound me, PCA thee, long numberOfComponents);
+autoSound Sound_and_PCA_principalComponents (Sound me, PCA thee, long numberOfComponents);
 
-Sound Sound_and_PCA_whitenSelectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels);
+autoSound Sound_and_PCA_whitenSelectedChannels (Sound me, PCA thee, long numberOfComponents, long *channels, long numberOfChannels);
 
-Sound Sound_and_PCA_whitenChannels (Sound me, PCA thee, long numberOfComponents);
+autoSound Sound_and_PCA_whitenChannels (Sound me, PCA thee, long numberOfComponents);
 
 #endif /* _Sound_and_PCA_h_ */
diff --git a/dwtools/Sound_and_Spectrogram_extensions.cpp b/dwtools/Sound_and_Spectrogram_extensions.cpp
index 858dd96..c395844 100644
--- a/dwtools/Sound_and_Spectrogram_extensions.cpp
+++ b/dwtools/Sound_and_Spectrogram_extensions.cpp
@@ -1,20 +1,19 @@
-/* Sound_and_FilterBank.cpp
+/* Sound_and_Spectrogram_extensions.cpp
  *
  * Copyright (C) 1993-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -35,7 +34,7 @@
 
 #define MIN(m,n) ((m) < (n) ? (m) : (n))
 // prototypes
-Sound BandFilterSpectrogram_as_Sound (BandFilterSpectrogram me, int to_dB);
+autoSound BandFilterSpectrogram_as_Sound (BandFilterSpectrogram me, int to_dB);
 
 /*
 	The gaussian(x) = (exp(-48*((i-(n+1)/2)/(n+1))^2)-exp(-12))/(1-exp(-12));
@@ -64,9 +63,9 @@ static void _Spectrogram_windowCorrection (Spectrogram me, long numberOfSamples_
 	}
 }
 
-static Spectrum Sound_to_Spectrum_power (Sound me) {
+static autoSpectrum Sound_to_Spectrum_power (Sound me) {
 	try {
-		autoSpectrum thee = Sound_to_Spectrum (me, TRUE);
+		autoSpectrum thee = Sound_to_Spectrum (me, true);
 		double scale = 2.0 * thy dx / (my xmax - my xmin);
 
 		// factor '2' because we combine positive and negative frequencies
@@ -82,7 +81,7 @@ static Spectrum Sound_to_Spectrum_power (Sound me) {
 		// Correction of frequency bins at 0 Hz and nyquist: don't count for two.
 
 		re[1] *= 0.5; re[thy nx] *= 0.5;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrum with spectral power created.");
 	}
@@ -114,7 +113,7 @@ static void Sound_into_BarkSpectrogram_frame (Sound me, BarkSpectrogram thee, lo
 	}
 }
 
-BarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double dt, double f1_bark, double fmax_bark, double df_bark) {
+autoBarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double dt, double f1_bark, double fmax_bark, double df_bark) {
 	try {
 		double nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist;
 		double windowDuration = 2 * analysisWidth; /* gaussian window */
@@ -148,21 +147,21 @@ BarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double
 		autoMelderProgress progess (U"BarkSpectrogram analysis");
 
 		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
+			double t = Sampled_indexToX (thee.get(), iframe);
 
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
-			Sound_into_BarkSpectrogram_frame (sframe.peek(), thee.peek(), iframe);
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2.0);
+			Sounds_multiply (sframe.get(), window.get());
+			Sound_into_BarkSpectrogram_frame (sframe.get(), thee.get(), iframe);
 
-			if ((iframe % 10) == 1) {
+			if (iframe % 10 == 1) {
 				Melder_progress ( (double) iframe / numberOfFrames,  U"BarkSpectrogram analysis: frame ",
 					iframe, U" from ", numberOfFrames, U".");
 			}
 		}
 		
-		_Spectrogram_windowCorrection ((Spectrogram) thee.peek(), window -> nx);
+		_Spectrogram_windowCorrection ((Spectrogram) thee.get(), window -> nx);
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no BarkSpectrogram created.");
 	}
@@ -171,14 +170,14 @@ BarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double
 static void Sound_into_MelSpectrogram_frame (Sound me, MelSpectrogram thee, long frame) {
 	autoSpectrum him = Sound_to_Spectrum_power (me);
 
-	for (long ifilter = 1; ifilter <= thy ny; ifilter++) {
+	for (long ifilter = 1; ifilter <= thy ny; ifilter ++) {
 		double power = 0;
 		double fc_mel = thy y1 + (ifilter - 1) * thy dy;
 		double fc_hz = thy v_frequencyToHertz (fc_mel);
 		double fl_hz = thy v_frequencyToHertz (fc_mel - thy dy);
 		double fh_hz =  thy v_frequencyToHertz (fc_mel + thy dy);
 		long ifrom, ito;
-		Sampled_getWindowSamples (him.peek(), fl_hz, fh_hz, &ifrom, &ito);
+		Sampled_getWindowSamples (him.get(), fl_hz, fh_hz, &ifrom, &ito);
 		for (long i = ifrom; i <= ito; i++) {
 			// Bin with a triangular filter the power (=amplitude-squared)
 
@@ -190,26 +189,26 @@ static void Sound_into_MelSpectrogram_frame (Sound me, MelSpectrogram thee, long
 	}
 }
 
-MelSpectrogram Sound_to_MelSpectrogram (Sound me, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
+autoMelSpectrogram Sound_to_MelSpectrogram (Sound me, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
 	try {
-		double t1, samplingFrequency = 1 / my dx, nyquist = 0.5 * samplingFrequency;
-		double windowDuration = 2 * analysisWidth; /* gaussian window */
-		double fmin_mel = 0;
+		double t1, samplingFrequency = 1.0 / my dx, nyquist = 0.5 * samplingFrequency;
+		double windowDuration = 2.0 * analysisWidth;   // gaussian window
+		double fmin_mel = 0.0;
 		double fbottom = NUMhertzToMel2 (100.0), fceiling = NUMhertzToMel2 (nyquist);
 		long numberOfFrames;
 
 		// Check defaults.
 
-		if (fmax_mel <= 0 || fmax_mel > fceiling) {
+		if (fmax_mel <= 0.0 || fmax_mel > fceiling) {
 			fmax_mel = fceiling;
 		}
 		if (fmax_mel <= f1_mel) {
 			f1_mel = fbottom; fmax_mel = fceiling;
 		}
-		if (f1_mel <= 0) {
+		if (f1_mel <= 0.0) {
 			f1_mel = fbottom;
 		}
-		if (df_mel <= 0) {
+		if (df_mel <= 0.0) {
 			df_mel = 100.0;
 		}
 
@@ -226,19 +225,19 @@ MelSpectrogram Sound_to_MelSpectrogram (Sound me, double analysisWidth, double d
 		autoMelderProgress progress (U"MelSpectrograms analysis");
 
 		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
-			Sound_into_MelSpectrogram_frame (sframe.peek(), thee.peek(), iframe);
+			double t = Sampled_indexToX (thee.get(), iframe);
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2.0);
+			Sounds_multiply (sframe.get(), window.get());
+			Sound_into_MelSpectrogram_frame (sframe.get(), thee.get(), iframe);
 			
-			if ((iframe % 10) == 1) {
+			if (iframe % 10 == 1) {
 				Melder_progress ((double) iframe / numberOfFrames, U"Frame ", iframe, U" out of ", numberOfFrames, U".");
 			}
 		}
 		
-		_Spectrogram_windowCorrection ((Spectrogram) thee.peek(), window -> nx);
+		_Spectrogram_windowCorrection ((Spectrogram) thee.get(), window -> nx);
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MelSpectrogram created.");
 	}
@@ -252,11 +251,11 @@ static int Sound_into_Spectrogram_frame (Sound me, Spectrogram thee, long frame,
 	Melder_assert (bw > 0);
 	autoSpectrum him = Sound_to_Spectrum_power (me);
 
-	for (long ifilter = 1; ifilter <= thy ny; ifilter++) {
+	for (long ifilter = 1; ifilter <= thy ny; ifilter ++) {
 		double p = 0;
 		double fc = thy y1 + (ifilter - 1) * thy dy;
-		double *pow = his z[1];
-		for (long ifreq = 1; ifreq <= his nx; ifreq++) {
+		double *pow = his z [1];
+		for (long ifreq = 1; ifreq <= his nx; ifreq ++) {
 			// H(f) = ifB / (fc^2 - f^2 + ifB)
 			// H(f)| = fB / sqrt ((fc^2 - f^2)^2 + f^2B^2)
 			//|H(f)|^2 = f^2B^2 / ((fc^2 - f^2)^2 + f^2B^2)
@@ -271,53 +270,54 @@ static int Sound_into_Spectrogram_frame (Sound me, Spectrogram thee, long frame,
 	return 1;
 }
 
-Spectrogram Sound_to_Spectrogram_pitchDependent (Sound me, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw, double minimumPitch, double maximumPitch) {
+autoSpectrogram Sound_to_Spectrogram_pitchDependent (Sound me, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw, double minimumPitch, double maximumPitch) {
 	try {
-		double floor = 80, ceiling = 600;
+		double floor = 80.0, ceiling = 600.0;
 		if (minimumPitch >= maximumPitch) {
-			minimumPitch = floor; maximumPitch = ceiling;
+			minimumPitch = floor;
+			maximumPitch = ceiling;
 		}
-		if (minimumPitch <= 0) {
+		if (minimumPitch <= 0.0) {
 			minimumPitch = floor;
 		}
-		if (maximumPitch <= 0) {
+		if (maximumPitch <= 0.0) {
 			maximumPitch = ceiling;
 		}
 
 		autoPitch thee = Sound_to_Pitch (me, dt, minimumPitch, maximumPitch);
-		autoSpectrogram ff = Sound_and_Pitch_to_Spectrogram (me, thee.peek(), analysisWidth, dt, f1_hz, fmax_hz, df_hz, relative_bw);
-		return ff.transfer();
+		autoSpectrogram ff = Sound_and_Pitch_to_Spectrogram (me, thee.get(), analysisWidth, dt, f1_hz, fmax_hz, df_hz, relative_bw);
+		return ff;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Spectrogram created.");
 	}
 }
 
-Spectrogram Sound_and_Pitch_to_Spectrogram (Sound me, Pitch thee, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw) {
+autoSpectrogram Sound_and_Pitch_to_Spectrogram (Sound me, Pitch thee, double analysisWidth, double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw) {
 	try {
-		double t1, windowDuration = 2 * analysisWidth; /* gaussian window */
-		double nyquist = 0.5 / my dx, samplingFrequency = 2 * nyquist, fmin_hz = 0;
-		long numberOfFrames, f0_undefined = 0;
+		double t1, windowDuration = 2.0 * analysisWidth; /* gaussian window */
+		double nyquist = 0.5 / my dx, samplingFrequency = 2.0 * nyquist, fmin_hz = 0.0;
+		long numberOfFrames, f0_undefined = 0.0;
 
 		if (my xmin > thy xmin || my xmax > thy xmax) Melder_throw
 			(U"The domain of the Sound is not included in the domain of the Pitch.");
 
 		double f0_median = Pitch_getQuantile (thee, thy xmin, thy xmax, 0.5, kPitch_unit_HERTZ);
 
-		if (f0_median == NUMundefined || f0_median == 0) {
-			f0_median = 100;
+		if (f0_median == NUMundefined || f0_median == 0.0) {
+			f0_median = 100.0;
 			Melder_warning (U"Pitch values undefined. Bandwith fixed to 100 Hz. ");
 		}
 
-		if (f1_hz <= 0) {
-			f1_hz = 100;
+		if (f1_hz <= 0.0) {
+			f1_hz = 100.0;
 		}
-		if (fmax_hz <= 0) {
+		if (fmax_hz <= 0.0) {
 			fmax_hz = nyquist;
 		}
-		if (df_hz <= 0) {
-			df_hz = f0_median / 2;
+		if (df_hz <= 0.0) {
+			df_hz = f0_median / 2.0;
 		}
-		if (relative_bw <= 0) {
+		if (relative_bw <= 0.0) {
 			relative_bw = 1.1;
 		}
 
@@ -333,62 +333,63 @@ Spectrogram Sound_and_Pitch_to_Spectrogram (Sound me, Pitch thee, double analysi
 		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
 		autoMelderProgress progress (U"Sound & Pitch: To FormantFilter");
 		for (long iframe = 1; iframe <= numberOfFrames; iframe++) {
-			double t = Sampled_indexToX (him.peek(), iframe);
+			double t = Sampled_indexToX (him.get(), iframe);
 			double b, f0 = Pitch_getValueAtTime (thee, t, kPitch_unit_HERTZ, 0);
 
-			if (f0 == NUMundefined || f0 == 0) {
-				f0_undefined++; f0 = f0_median;
+			if (f0 == NUMundefined || f0 == 0.0) {
+				f0_undefined ++;
+				f0 = f0_median;
 			}
 			b = relative_bw * f0;
-			Sound_into_Sound (me, sframe.peek(), t - windowDuration / 2);
-			Sounds_multiply (sframe.peek(), window.peek());
+			Sound_into_Sound (me, sframe.get(), t - windowDuration / 2.0);
+			Sounds_multiply (sframe.get(), window.get());
 
-			Sound_into_Spectrogram_frame (sframe.peek(), him.peek(), iframe, b);
+			Sound_into_Spectrogram_frame (sframe.get(), him.get(), iframe, b);
 
-			if ((iframe % 10) == 1) {
+			if (iframe % 10 == 1) {
 				Melder_progress ( (double) iframe / numberOfFrames, U"Frame ", iframe, U" out of ",
 					numberOfFrames, U".");
 			}
 		}
 		
-		_Spectrogram_windowCorrection (him.peek(), window -> nx);
+		_Spectrogram_windowCorrection (him.get(), window -> nx);
 
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"FormantFilter not created from Pitch & FormantFilter.");
 	}
 }
 
-Sound BandFilterSpectrogram_as_Sound (BandFilterSpectrogram me, int unit) {
+autoSound BandFilterSpectrogram_as_Sound (BandFilterSpectrogram me, int unit) {
 	try {
 		autoSound thee = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
-		for (long i = 1; i <= my ny; i++) {
-			for (long j = 1; j <= my nx; j++)
+		for (long i = 1; i <= my ny; i ++) {
+			for (long j = 1; j <= my nx; j ++)
 				thy z[i][j] = my v_getValueAtSample (j, i, unit);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound created.");
 	}
 }
 
-Sound BandFilterSpectrograms_crossCorrelate (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound BandFilterSpectrograms_crossCorrelate (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
-		autoSound sme = BandFilterSpectrogram_as_Sound (me, 1) ; // to dB
-		autoSound sthee = BandFilterSpectrogram_as_Sound (thee, 1) ;
-		autoSound cc = Sounds_crossCorrelate (sme.peek(), sthee.peek(), scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		autoSound sme = BandFilterSpectrogram_as_Sound (me, 1);   // to dB
+		autoSound sthee = BandFilterSpectrogram_as_Sound (thee, 1);
+		autoSound cc = Sounds_crossCorrelate (sme.get(), sthee.get(), scaling, signalOutsideTimeDomain);
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U" and ", thee, U" not cross-correlated.");
 	}
 }
 
-Sound BandFilterSpectrograms_convolve (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound BandFilterSpectrograms_convolve (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
-		autoSound sme = BandFilterSpectrogram_as_Sound (me, 1) ; // to dB
-		autoSound sthee = BandFilterSpectrogram_as_Sound (thee, 1) ;
-		autoSound cc = Sounds_convolve (sme.peek(), sthee.peek(), scaling, signalOutsideTimeDomain);
-		return cc.transfer();
+		autoSound sme = BandFilterSpectrogram_as_Sound (me, 1);   // to dB
+		autoSound sthee = BandFilterSpectrogram_as_Sound (thee, 1);
+		autoSound cc = Sounds_convolve (sme.get(), sthee.get(), scaling, signalOutsideTimeDomain);
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U" and ", thee, U" not convolved.");
 	}
diff --git a/dwtools/Sound_and_Spectrogram_extensions.h b/dwtools/Sound_and_Spectrogram_extensions.h
index a1917e2..0064f44 100644
--- a/dwtools/Sound_and_Spectrogram_extensions.h
+++ b/dwtools/Sound_and_Spectrogram_extensions.h
@@ -2,21 +2,20 @@
 #define _Sound_and_Spectrogram_extensions_h_
 /* Sound_and_Spectrogram_extensions.h
  *
- * Copyright (C) 2014 David Weenink
+ * Copyright (C) 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,7 +26,7 @@
 #include "Pitch.h"
 #include "Sound.h"
 
-BarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double dt,
+autoBarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double dt,
 	double f1_bark, double fmax_bark, double df_bark);
 /*
 	Filtering with filters on a Bark scale as defined by
@@ -38,19 +37,20 @@ BarkSpectrogram Sound_to_BarkSpectrogram (Sound me, double analysisWidth, double
 	10 log F(z) = 15.8 + 7.5(z + 0.5) - 17.5 * sqrt(1 + (z + 0.5)^2)
 */
 
-MelSpectrogram Sound_to_MelSpectrogram (Sound me, double analysisWidth, double dt,
+autoMelSpectrogram Sound_to_MelSpectrogram (Sound me, double analysisWidth, double dt,
 	double f1_mel, double fmax_mel, double df_mel);
 
-Spectrogram Sound_to_Spectrogram_pitchDependent (Sound me, double analysisWidth,
+autoSpectrogram Sound_to_Spectrogram_pitchDependent (Sound me, double analysisWidth,
 	double dt, double f1_hz, double fmax_hz, double df_hz, double relative_bw,
 	double minimumPitch, double maximumPitch);
 
-Spectrogram Sound_and_Pitch_to_Spectrogram (Sound me, Pitch thee,
+autoSpectrogram Sound_and_Pitch_to_Spectrogram (Sound me, Pitch thee,
 	double analysisWidth, double dt, double f1_hz, double fmax_hz,
 	double df_hz, double relative_bw);
 
-Sound BandFilterSpectrograms_crossCorrelate (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-Sound BandFilterSpectrograms_convolve (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound BandFilterSpectrograms_crossCorrelate (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+
+autoSound BandFilterSpectrograms_convolve (BandFilterSpectrogram me, BandFilterSpectrogram thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
 
 
 #endif /* _Sound_and_Spectrogram_extensions_h_ */
diff --git a/dwtools/Sound_extensions.cpp b/dwtools/Sound_extensions.cpp
index b91ccb5..6877ebc 100644
--- a/dwtools/Sound_extensions.cpp
+++ b/dwtools/Sound_extensions.cpp
@@ -1,20 +1,19 @@
 /* Sound_extensions.cpp
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -79,8 +78,8 @@ static void PitchTier_modifyExcursionRange (PitchTier me, double tmin, double tm
 
 	double fref_st = 12.0 * log (fref_Hz / 100.0) / NUMln2;
 
-	for (long i = 1; i <= my points -> size; i++) {
-		RealPoint point = (RealPoint) my points -> item [i];
+	for (long i = 1; i <= my points.size; i++) {
+		RealPoint point = my points.at [i];
 		double f = point -> value;
 		if (point -> number < tmin || point -> number > tmax) {
 			continue;
@@ -273,19 +272,8 @@ static void r4read (Sound me, FILE *f) {
 	}
 }
 
-static long fileLengthBytes (FILE *f) {
-	long begin, end, current;
-	if ( (current = ftell (f)) < 0 ||
-	        fseek (f, 0L, SEEK_SET) || (begin = ftell (f)) < 0 ||
-	        fseek (f, 0L, SEEK_END) || (end = ftell (f)) < 0 ||
-	        fseek (f, current, SEEK_SET)) {
-		end = begin = 0;
-	}
-	return end - begin;
-}
-
 /* Old TIMIT sound-file format */
-Sound Sound_readFromCmuAudioFile (MelderFile file) {
+autoSound Sound_readFromCmuAudioFile (MelderFile file) {
 	try {
 		int littleEndian = 1;
 		autofile f = Melder_fopen (file, "rb");
@@ -308,16 +296,15 @@ Sound Sound_readFromCmuAudioFile (MelderFile file) {
 			Melder_throw (U"Incorrect number of samples.");
 		}
 		autoSound me = Sound_createSimple (1, nSamples / 16000., 16000);
-		i2read (me.peek(), f, littleEndian);
+		i2read (me.get(), f, littleEndian);
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from CMU audio file ", MelderFile_messageName (file), U".");
 	}
 }
 
-Sound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCoding,
-                             int littleEndian, int unSigned, long skipNBytes, double samplingFrequency) {
+autoSound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCoding, int littleEndian, int unSigned, long skipNBytes, double samplingFrequency) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 		if (! format) {
@@ -336,29 +323,29 @@ Sound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCodin
 		if (skipNBytes <= 0) {
 			skipNBytes = 0;
 		}
-		long nSamples = (fileLengthBytes (f) - skipNBytes) / nBytesPerSample;
+		long nSamples = (MelderFile_length (file) - skipNBytes) / nBytesPerSample;
 		if (nSamples < 1) {
 			Melder_throw (U"No samples left to read");
 		}
 		autoSound me = Sound_createSimple (1, nSamples / samplingFrequency, samplingFrequency);
 		fseek (f, skipNBytes, SEEK_SET);
-		if (nBytesPerSample == 1 &&   unSigned) {
-			u1read (me.peek(), f);
+		if (nBytesPerSample == 1 && unSigned) {
+			u1read (me.get(), f);
 		} else if (nBytesPerSample == 1 && ! unSigned) {
-			i1read (me.peek(), f);
-		} else if (nBytesPerSample == 2 &&   unSigned) {
-			u2read (me.peek(), f, littleEndian);
+			i1read (me.get(), f);
+		} else if (nBytesPerSample == 2 && unSigned) {
+			u2read (me.get(), f, littleEndian);
 		} else if (nBytesPerSample == 2 && ! unSigned) {
-			i2read (me.peek(), f, littleEndian);
-		} else if (nBytesPerSample == 4 &&   unSigned) {
-			u4read (me.peek(), f, littleEndian);
+			i2read (me.get(), f, littleEndian);
+		} else if (nBytesPerSample == 4 && unSigned) {
+			u4read (me.get(), f, littleEndian);
 		} else if (nBytesPerSample == 4 && ! unSigned) {
-			i4read (me.peek(), f, littleEndian);
+			i4read (me.get(), f, littleEndian);
 		} else if (nBytesPerSample == 4 && strequ (format, "float")) {
-			r4read (me.peek(), f);
+			r4read (me.get(), f);
 		}
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from raw audio file ", MelderFile_messageName (file), U".");
 	}
@@ -381,24 +368,25 @@ void Sound_writeToRawFile (Sound me, MelderFile file, const char *format, int li
 		if (nBytesPerSample == 3 || nBytesPerSample > 4) {
 			Melder_throw (U"number of bytes per sample should be 1, 2 or 4.");
 		}
-		if (nBytesPerSample == 1 &&   unSigned) {
+		if (nBytesPerSample == 1 && unSigned) {
 			u1write (me, f, & nClip);
 		} else if (nBytesPerSample == 1 && ! unSigned) {
 			i1write (me, f, & nClip);
-		} else if (nBytesPerSample == 2 &&   unSigned) {
+		} else if (nBytesPerSample == 2 && unSigned) {
 			u2write (me, f, littleEndian, & nClip);
 		} else if (nBytesPerSample == 2 && ! unSigned) {
 			i2write (me, f, littleEndian, & nClip);
-		} else if (nBytesPerSample == 4 &&   unSigned) {
+		} else if (nBytesPerSample == 4 && unSigned) {
 			u4write (me, f, littleEndian, & nClip);
 		} else if (nBytesPerSample == 4 && ! unSigned) {
 			i4write (me, f, littleEndian, & nClip);
 		} else if (nBytesPerSample == 4 && strequ (format, "float")) {
 			r4write (me, f);
 		}
-		if (nClip > 0) Melder_warning (nClip, U" from ", my nx,
-			                               U" samples have been clipped.\nAdvice: you could scale the amplitudes or save as a binary file.");
-		if (feof (f) || ferror (f)) {
+		if (nClip > 0) {
+			Melder_warning (nClip, U" from ", my nx, U" samples have been clipped.\nAdvice: you could scale the amplitudes or save as a binary file.");
+		}
+		if (feof ((FILE *) f) || ferror ((FILE *) f)) {
 			Melder_throw (U"Sound_writeToRawFile: not completed");
 		}
 		f.close (file);
@@ -486,7 +474,7 @@ static float dialogic_adpcm_decode (struct dialogic_adpcm *adpcm) {
 	return scale * s;
 }
 
-Sound Sound_readFromDialogicADPCMFile (MelderFile file, double sampleRate) {
+autoSound Sound_readFromDialogicADPCMFile (MelderFile file, double sampleRate) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 
@@ -518,7 +506,7 @@ Sound Sound_readFromDialogicADPCMFile (MelderFile file, double sampleRate) {
 			my z[1][n++] = dialogic_adpcm_decode (& adpcm);
 		}
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from Dialogic ADPCM file", MelderFile_messageName (file), U".");
 	}
@@ -549,7 +537,7 @@ void Sound_deEmphasis (Sound me, double deEmphasisFrequency) {
 	}
 }
 
-Sound Sound_createGaussian (double windowDuration, double samplingFrequency) {
+autoSound Sound_createGaussian (double windowDuration, double samplingFrequency) {
 	try {
 		autoSound me = Sound_createSimple (1, windowDuration, samplingFrequency);
 		double *s = my z[1];
@@ -557,29 +545,29 @@ Sound Sound_createGaussian (double windowDuration, double samplingFrequency) {
 		for (long i = 1; i <= my nx; i++) {
 			s[i] = (exp (-48.0 * (i - imid) * (i - imid) / (my nx + 1) / (my nx + 1)) - edge) / (1 - edge);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Gaussian function.");
 	}
 }
 
-Sound Sound_createHamming (double windowDuration, double samplingFrequency) {
+autoSound Sound_createHamming (double windowDuration, double samplingFrequency) {
 	try {
 		autoSound me = Sound_createSimple (1, windowDuration, samplingFrequency);
 		double *s = my z[1];
-		double p = 2 * NUMpi / (my nx - 1);
+		double p = 2.0 * NUMpi / (my nx - 1);
 		for (long i = 1; i <= my nx; i++) {
 			s[i] = 0.54 - 0.46 * cos ( (i - 1) * p);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Hamming function.");
 	};
 }
 
-static Sound Sound_create2 (double minimumTime, double maximumTime, double samplingFrequency) {
+static autoSound Sound_create2 (double minimumTime, double maximumTime, double samplingFrequency) {
 	return Sound_create (1, minimumTime, maximumTime, lround ( (maximumTime - minimumTime) * samplingFrequency),
-	                     1.0 / samplingFrequency, minimumTime + 0.5 / samplingFrequency);
+		1.0 / samplingFrequency, minimumTime + 0.5 / samplingFrequency);
 }
 
 /*
@@ -594,9 +582,7 @@ static Sound Sound_create2 (double minimumTime, double maximumTime, double sampl
 
 */
 
-static Sound Sound_createToneComplex (double minimumTime, double maximumTime, double samplingFrequency,
-                                      double firstFrequency, long numberOfComponents, double frequencyDistance,
-                                      long mistunedComponent, double mistuningFraction, int scaleAmplitudes) {
+static autoSound Sound_createToneComplex (double minimumTime, double maximumTime, double samplingFrequency, double firstFrequency, long numberOfComponents, double frequencyDistance, long mistunedComponent, double mistuningFraction, int scaleAmplitudes) {
 	try {
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 		for (long j = 1; j <= numberOfComponents; j++) {
@@ -616,17 +602,16 @@ static Sound Sound_createToneComplex (double minimumTime, double maximumTime, do
 			}
 		}
 		if (scaleAmplitudes) {
-			Vector_scale (me.peek(), 0.99996948);
+			Vector_scale (me.get(), 0.99996948);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from tone complex.");
 	}
 }
 
 
-Sound Sound_createSimpleToneComplex (double minimumTime, double maximumTime, double samplingFrequency,
-                                     double firstFrequency, long numberOfComponents, double frequencyDistance, int scaleAmplitudes) {
+autoSound Sound_createSimpleToneComplex (double minimumTime, double maximumTime, double samplingFrequency, double firstFrequency, long numberOfComponents, double frequencyDistance, int scaleAmplitudes) {
 	if (firstFrequency + (numberOfComponents - 1) * frequencyDistance > samplingFrequency / 2) {
 		Melder_warning (U"Sound_createSimpleToneComplex: frequency of (some) components too high.");
 		numberOfComponents = (long) floor (1.0 + (samplingFrequency / 2 - firstFrequency) / frequencyDistance);
@@ -635,9 +620,7 @@ Sound Sound_createSimpleToneComplex (double minimumTime, double maximumTime, dou
 	                                firstFrequency, numberOfComponents, frequencyDistance, 0, 0, scaleAmplitudes);
 }
 
-Sound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTime, double samplingFrequency,
-        double firstFrequency, long numberOfComponents, long mistunedComponent,
-        double mistuningFraction, int scaleAmplitudes) {
+autoSound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTime, double samplingFrequency, double firstFrequency, long numberOfComponents, long mistunedComponent, double mistuningFraction, int scaleAmplitudes) {
 	if (firstFrequency + (numberOfComponents - 1) * firstFrequency > samplingFrequency / 2) {
 		Melder_warning (U"Sound_createMistunedHarmonicComplex: frequency of (some) components too high.");
 		numberOfComponents = (long) floor (1.0 + (samplingFrequency / 2 - firstFrequency) / firstFrequency);
@@ -645,9 +628,7 @@ Sound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTim
 	if (mistunedComponent > numberOfComponents) {
 		Melder_warning (U"Sound_createMistunedHarmonicComplex: mistuned component too high.");
 	}
-	return Sound_createToneComplex (minimumTime, maximumTime, samplingFrequency,
-	                                firstFrequency, numberOfComponents, firstFrequency, mistunedComponent,
-	                                mistuningFraction, scaleAmplitudes);
+	return Sound_createToneComplex (minimumTime, maximumTime, samplingFrequency, firstFrequency, numberOfComponents, firstFrequency, mistunedComponent, mistuningFraction, scaleAmplitudes);
 }
 
 /*
@@ -658,9 +639,7 @@ Sound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTim
 	and so: f = f0 + c /(2 pi t)
 	Irino: bandwidth = (frequency * (6.23e-6 * frequency + 93.39e-3) + 28.52)
 */
-Sound Sound_createGammaTone (double minimumTime, double maximumTime, double samplingFrequency,
-                             long gamma, double frequency, double bandwidth, double initialPhase, double addition,
-                             int scaleAmplitudes) {
+autoSound Sound_createGammaTone (double minimumTime, double maximumTime, double samplingFrequency, long gamma, double frequency, double bandwidth, double initialPhase, double addition, int scaleAmplitudes) {
 	try {
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 		for (long i = 1; i <= my nx; i++) {
@@ -670,21 +649,19 @@ Sound Sound_createGammaTone (double minimumTime, double maximumTime, double samp
 				        exp (- NUM2pi * bandwidth * t) * cos (NUM2pi * frequency * t + addition * log (t) + initialPhase);
 		}
 		if (scaleAmplitudes) {
-			Vector_scale (me.peek(), 0.99996948);
+			Vector_scale (me.get(), 0.99996948);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from gammatone function.");
 	}
 }
 
-static void NUMgammatoneFilter4 (double *x, double *y, long n, double centre_frequency,
-                                 double bandwidth, double samplingFrequency) {
+static void NUMgammatoneFilter4 (double *x, double *y, long n, double centre_frequency, double bandwidth, double samplingFrequency) {
 	double a[5], b[9], dt = 1.0 / samplingFrequency, wt = NUMpi * centre_frequency * dt;
 	double bt = 2 * NUMpi * bandwidth * dt, dt2 = dt * dt, dt4 = dt2 * dt2;
 
-	Melder_assert (n > 0 && centre_frequency > 0 && bandwidth >= 0 &&
-	               samplingFrequency > 0);
+	Melder_assert (n > 0 && centre_frequency > 0 && bandwidth >= 0 && samplingFrequency > 0);
 
 	/*
 		The filter function is:
@@ -712,9 +689,7 @@ static void NUMgammatoneFilter4 (double *x, double *y, long n, double centre_fre
 	b[7] = -8 * cos (2 * wt)                           * exp (-7 * bt);
 	b[8] =                                               exp (-8 * bt);
 
-	/*
-		Calculate gain (= Abs (H(z); f=fc) and scale a[0-4] with it.
-	*/
+	// Calculate gain (= Abs (H(z); f=fc) and scale a[0-4] with it.
 
 	double zr =  cos (2 * wt), zi = -sin (2 * wt);
 	double dr = a[4], di = 0, tr, ti, nr, ni;
@@ -756,11 +731,18 @@ static void NUMgammatoneFilter4 (double *x, double *y, long n, double centre_fre
 			Melder_casual (U"b[", i, U"] = ", b[i]);
 		}
 	}
-	/*
-		Perform the filtering. For the first 8 samples we must do some
-		extra work.
-	*/
 
+	/* Perform the filtering. For the first 8 samples we must do some extra work.
+	y[1] = a[0] * x[1];
+	if (n > 1) {
+		y[2] = a[0] * x[2];
+		y[2] += a[1] * x[1] - b[1] * y[1];
+	}
+	if (n > 2) {
+		y[2] = a[0] * x[2];
+		y[2] += a[2] * x[i - 2] - b[2] * y[i - 2];
+	}
+	*/
 	long n8 = n < 8 ? n : 8;
 	for (long i = 1; i <= n8; i++) {
 		y[i] = a[0] * x[i];
@@ -811,7 +793,7 @@ static void NUMgammatoneFilter4 (double *x, double *y, long n, double centre_fre
 }
 
 
-Sound Sound_filterByGammaToneFilter4 (Sound me, double centre_frequency, double bandwidth) {
+autoSound Sound_filterByGammaToneFilter4 (Sound me, double centre_frequency, double bandwidth) {
 	try {
 		if (centre_frequency <= 0) {
 			Melder_throw (U"Centre frequency must be positive.");
@@ -836,7 +818,7 @@ Sound Sound_filterByGammaToneFilter4 (Sound me, double centre_frequency, double
 				thy z[channel][i] = y[i];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not filtered by gammatone filter4.");
 	}
@@ -851,7 +833,7 @@ Sound Sound_createShepardTone (double minimumTime, double maximumTime, double sa
 	double twoPi = 2.0 * NUMpi, f = baseFrequency * (1 + frequencyShiftFraction);
 	if (nComponents < 2) Melder_warning (U"Sound_createShepardTone: only 1 component.");
 	Melder_casual (U"Sound_createShepardTone: ", nComponents, U" components.");
-	if (! (me = Sound_create2 (minimumTime, maximumTime, samplingFrequency))) return NULL;
+	if (! (me = Sound_create2 (minimumTime, maximumTime, samplingFrequency))) return nullptr;
 
 	for (j=1; j <= nComponents; j++)
 	{
@@ -868,24 +850,25 @@ Sound Sound_createShepardTone (double minimumTime, double maximumTime, double sa
 }
 */
 
-Sound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
-                                      double samplingFrequency, double lowestFrequency, long numberOfComponents,
-                                      double frequencyChange_st, double amplitudeRange, double octaveShiftFraction) {
+autoSound Sound_createShepardToneComplex (double minimumTime, double maximumTime, double samplingFrequency, double lowestFrequency, long numberOfComponents, double frequencyChange_st, double amplitudeRange, double octaveShiftFraction) {
 	try {
 		double highestFrequency = lowestFrequency * pow (2, numberOfComponents);
 		double lmax_db = 0, lmin_db = lmax_db - fabs (amplitudeRange);
 
-		if (highestFrequency > samplingFrequency / 2) Melder_throw (U"The highest frequency you want to generate is "
-			        U"above the Nyquist frequency. Choose a larger value for \"Sampling frequency\", or lower values for "
-			        U"\"Number of components\" or \"Lowest frequency\".");
-		if (octaveShiftFraction < 0 || octaveShiftFraction >= 1) Melder_throw (U"Octave offset fraction "
-			        U"must be greater or equal zero and smaller than one.");
+		if (highestFrequency > samplingFrequency / 2) {
+			Melder_throw (U"The highest frequency you want to generate is "
+				U"above the Nyquist frequency. Choose a larger value for \"Sampling frequency\", or lower values for "
+				U"\"Number of components\" or \"Lowest frequency\".");
+		}
+		if (octaveShiftFraction < 0 || octaveShiftFraction >= 1) {
+			Melder_throw (U"Octave offset fraction must be greater or equal zero and smaller than one.");
+		}
 		double octaveTime, sweeptime;
 		if (frequencyChange_st != 0) {
 			octaveTime = 12 / fabs (frequencyChange_st);
 			sweeptime = numberOfComponents * octaveTime;
 		} else {
-			octaveTime = sweeptime = 1e38;
+			octaveTime = sweeptime = 1e308;
 		}
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 
@@ -921,7 +904,7 @@ Sound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
 				tswitch = b1 * octaveTime;
 			}
 			for (long j = 1; j <= my nx; j++) {
-				double t = Sampled_indexToX (me.peek(), j);
+				double t = Sampled_indexToX (me.get(), j);
 				double tmod = fmod (t, sweeptime);
 				double tone = tmod <= tswitch ? b1 + a * tmod : b2 + a * (tmod - tswitch);
 				double f = lowestFrequency * pow (2, tone);
@@ -937,8 +920,8 @@ Sound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
 				phasejm1 = phasej;
 			}
 		}
-		Vector_scale (me.peek(), 0.99996948);
-		return me.transfer();
+		Vector_scale (me.get(), 0.99996948);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Shepard tone complex.");
 	}
@@ -946,9 +929,7 @@ Sound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
 
 /* can be implemented more efficiently with sin recurrence? */
 /* amplitude(f) = min + (1-min)*(1-cos(2*pi*(ln(f/f1) / ln(fn/f1)))/2 */
-Sound Sound_createShepardTone (double minimumTime, double maximumTime,
-                               double samplingFrequency, double lowestFrequency, long numberOfComponents,
-                               double frequencyChange_st, double amplitudeRange) {
+autoSound Sound_createShepardTone (double minimumTime, double maximumTime, double samplingFrequency, double lowestFrequency, long numberOfComponents, double frequencyChange_st, double amplitudeRange) {
 	try {
 		double scale = pow (2, numberOfComponents);
 		double maximumFrequency = lowestFrequency * scale;
@@ -957,11 +938,12 @@ Sound Sound_createShepardTone (double minimumTime, double maximumTime,
 		double lnf1 = log (lowestFrequency + 1);
 		double amplarg = twoPi / log ( (maximumFrequency + 1) /
 		                               (lowestFrequency + 1));
-
-		if (lowestFrequency > samplingFrequency / 2) Melder_throw
-			(U"Sound_createShepardTone: lowest frequency too high.");
-		if (maximumFrequency > samplingFrequency / 2) Melder_throw
-			(U"Sound_createShepardTone: frequency of highest component too high.");
+		if (lowestFrequency > samplingFrequency / 2) {
+			Melder_throw (U"Sound_createShepardTone: lowest frequency too high.");
+		}
+		if (maximumFrequency > samplingFrequency / 2) {
+			Melder_throw (U"Sound_createShepardTone: frequency of highest component too high.");
+		}
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 
 		for (long i = 1; i <= my nx; i++) {
@@ -984,18 +966,18 @@ Sound Sound_createShepardTone (double minimumTime, double maximumTime,
 				ft *= 2; argt *= 2;
 			}
 		}
-		Vector_scale (me.peek(), 0.99996948);
-		return me.transfer();
+		Vector_scale (me.get(), 0.99996948);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Shepard tone.");
 	}
 }
 
-Sound Sound_createPattersonWightmanTone (double minimumTime, double maximumTime, double samplingFrequency,
-        double baseFrequency, double frequencyShiftRatio, long numberOfComponents) {
+autoSound Sound_createPattersonWightmanTone (double minimumTime, double maximumTime, double samplingFrequency, double baseFrequency, double frequencyShiftRatio, long numberOfComponents) {
 	try {
-		if ( (numberOfComponents - 1 + frequencyShiftRatio) * baseFrequency >  samplingFrequency / 2) Melder_throw
-			(U"Frequency of one or more components too large.");
+		if ( (numberOfComponents - 1 + frequencyShiftRatio) * baseFrequency >  samplingFrequency / 2) {
+			Melder_throw (U"Frequency of one or more components too large.");
+		}
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 		double w0 = NUM2pi * baseFrequency;
 		for (long i = 1; i <= my nx; i++) {
@@ -1005,20 +987,20 @@ Sound Sound_createPattersonWightmanTone (double minimumTime, double maximumTime,
 			}
 			my z[1][i] = a;
 		}
-		Vector_scale (me.peek(), 0.99996948);
-		return me.transfer();
+		Vector_scale (me.get(), 0.99996948);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Patterson Wightman tone.");
 	}
 }
 
-Sound Sound_createPlompTone (double minimumTime, double maximumTime, double samplingFrequency,
-                             double baseFrequency, double frequencyFraction, long m) {
+autoSound Sound_createPlompTone (double minimumTime, double maximumTime, double samplingFrequency, double baseFrequency, double frequencyFraction, long m) {
 	try {
 		double w1 = NUM2pi * (1 - frequencyFraction) * baseFrequency;
 		double w2 = NUM2pi * (1 + frequencyFraction) * baseFrequency;
-		if (12 * (1 + frequencyFraction) * baseFrequency >  samplingFrequency / 2) Melder_throw
-			(U"Sound_createPlompTone: frequency of one or more components too large.");
+		if (12 * (1 + frequencyFraction) * baseFrequency >  samplingFrequency / 2) {
+			Melder_throw (U"Sound_createPlompTone: frequency of one or more components too large.");
+		}
 		autoSound me = Sound_create2 (minimumTime, maximumTime, samplingFrequency);
 		for (long i = 1; i <= my nx; i++) {
 			double a = 0, t = (i - 0.5) * my dx;
@@ -1030,8 +1012,8 @@ Sound Sound_createPlompTone (double minimumTime, double maximumTime, double samp
 			}
 			my z[1][i] = a;
 		}
-		Vector_scale (me.peek(), 0.99996948);
-		return me.transfer();
+		Vector_scale (me.get(), 0.99996948);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Plomp tone.");
 	}
@@ -1094,46 +1076,48 @@ double Sound_correlateParts (Sound me, double tx, double ty, double duration) {
 	return rxy;
 }
 
-void Sound_localMean (Sound me, double fromTime, double toTime, double *mean) {
+void Sound_localMean (Sound me, double fromTime, double toTime, double *p_mean) {
 	long n1 = Sampled_xToNearestIndex (me, fromTime);
 	long n2 = Sampled_xToNearestIndex (me, toTime);
-	double *s = my z[1];
-	*mean = 0;
-	if (fromTime > toTime) {
-		return;
-	}
-	if (n1 < 1) {
-		n1 = 1;
-	}
-	if (n2 > my nx) {
-		n2 = my nx;
+	double *s = my z[1], mean = 0.0;
+	if (fromTime  <= toTime) {
+		if (n1 < 1) {
+			n1 = 1;
+		}
+		if (n2 > my nx) {
+			n2 = my nx;
+		}
+		for (long i = n1; i <= n2; i++) {
+			mean += s[i];
+		}
+		mean /= n2 - n1 + 1;
 	}
-	for (long i = n1; i <= n2; i++) {
-		*mean += s[i];
+	if (p_mean) {
+		*p_mean = mean;
 	}
-	*mean /= n2 - n1 + 1;
 }
 
-void Sound_localPeak (Sound me, double fromTime, double toTime, double ref, double *peak) {
+void Sound_localPeak (Sound me, double fromTime, double toTime, double ref, double *p_peak) {
 	long n1 = Sampled_xToNearestIndex (me, fromTime);
 	long n2 = Sampled_xToNearestIndex (me, toTime);
-	double *s = my z[1];
-	*peak = -1e38;
-	if (fromTime > toTime) {
-		return;
-	}
-	if (n1 < 1) {
-		n1 = 1;
-	}
-	if (n2 > my nx) {
-		n2 = my nx;
-	}
-	for (long i = n1; i <= n2; i++) {
-		double ds = fabs (s[i] - ref);
-		if (ds > *peak) {
-			*peak = ds;
+	double *s = my z[1], peak = -1e308;
+	if (fromTime <= toTime) {
+		if (n1 < 1) {
+			n1 = 1;
+		}
+		if (n2 > my nx) {
+			n2 = my nx;
+		}
+		for (long i = n1; i <= n2; i++) {
+			double ds = fabs (s[i] - ref);
+			if (ds > peak) {
+				peak = ds;
+			}
 		}
 	}
+	if (p_peak) {
+		*p_peak = peak;
+	}
 }
 
 void Sound_into_Sound (Sound me, Sound to, double startTime) {
@@ -1148,30 +1132,23 @@ void Sound_into_Sound (Sound me, Sound to, double startTime) {
 IntervalTier Sound_PointProcess_to_IntervalTier (Sound me, PointProcess thee, double window);
 IntervalTier Sound_PointProcess_to_IntervalTier (Sound me, PointProcess thee, double window)
 {
-	IntervalTier him;
-	TextInterval interval;
-	double t1, t2, t, window2 = window / 2;
-	long i;
-
-	him = IntervalTier_create (my xmin, my xmax);
-	if (him == NULL) return NULL;
-
-	t1 = thy t[1] - window2;
+	double window2 = window / 2;
+	double t1 = thy t[1] - window2;
 	if (t1 < my xmin) t1 = my xmin;
-	t2 = t1 + window2;
+	double t2 = t1 + window2;
 	if (t2 > my xmax) t2 = my xmax;
-	interval = TextInterval_create (t1, t2, "yes");
-	if (interval == NULL ||
-		! Collection_addItem (his intervals, interval)) goto end;
+	autoIntervalTier him = IntervalTier_create (my xmin, my xmax);
+	autoTextInterval interval = TextInterval_create (t1, t2, "yes");
+	Collection_addItem_move (his intervals, interval.move());
 
-	for (i = 2; i <= thy nt; i++)
+	for (long i = 2; i <= thy nt; i++)
 	{
-		t =  thy t[i];
+		double t =  thy t[i];
 
-		if (t  <= t2)
+		if (t <= t2)
 		{
-			long index = his points -> size;
-			RealPoint point = his points -> item[index];
+			long index = his points.size;
+			RealPoint point = his points->at [index];
 			t2 = t + window2;
 			if (t2 > my xmax) t2 = my xmax;
 			point -> value = t2;
@@ -1180,12 +1157,9 @@ IntervalTier Sound_PointProcess_to_IntervalTier (Sound me, PointProcess thee, do
 		{
 			t2 = t + window2;
 			if (t2 > my xmax) t2 = my xmax;
-			if (! RealTier_addPoint (him, t, t2)) goto end;
+			RealTier_addPoint (him, t, t2);
 		}
 	}
-
-end:
-	if (Melder_hasError()) forget (him);
 	return him;
 }
 */
@@ -1227,13 +1201,13 @@ void Sound_overwritePart (Sound me, double t1, double t2, Sound thee, double t3)
 void Sound_filter_part_formula (Sound me, double t1, double t2, const char32 *formula, Interpreter interpreter) {
 	try {
 		autoSound part = Sound_extractPart (me, t1, t2, kSound_windowShape_RECTANGULAR, 1, 1);
-		autoSpectrum spec = Sound_to_Spectrum (part.peek(), TRUE);
-		Matrix_formula ( (Matrix) spec.peek(), formula, interpreter, 0);
-		autoSound filtered = Spectrum_to_Sound (spec.peek());
+		autoSpectrum spec = Sound_to_Spectrum (part.get(), true);
+		Matrix_formula ( (Matrix) spec.get(), formula, interpreter, 0);
+		autoSound filtered = Spectrum_to_Sound (spec.get());
 
 		// Overwrite part between t1 and t2 of original with the filtered signal */
 
-		Sound_overwritePart (me, t1, t2, filtered.peek(), 0);
+		Sound_overwritePart (me, t1, t2, filtered.get(), 0);
 	} catch (MelderError) {
 		Melder_throw (me, U": part not filtered by formula.");
 	}
@@ -1244,7 +1218,7 @@ void Sound_filter_part_formula (Sound me, double t1, double t2, const char32 *fo
    The underlying analog signal still could have jumps undetected by this algorithm.
     We could get a better approximation by first upsampling the signal.
 */
-PointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, double dt) {
+autoPointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, double dt) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
 		long i = 1, dtn = (long) floor (dt / my dx);
@@ -1257,128 +1231,125 @@ PointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, doubl
 			while (j <= i + dtn && j <= my nx) {
 				if (fabs (s[i] - s[j]) > minimumJump) {
 					double t = Sampled_indexToX (me, i);
-					PointProcess_addPoint (thee.peek(), t);
+					PointProcess_addPoint (thee.get(), t);
 					step = j - i + 1; break;
 				}
 				j++;
 			}
 			i += step;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no PointProcess created.");
 	}
 }
 
 /* Internal pitch representation in semitones */
-Sound Sound_and_Pitch_changeSpeaker (Sound me, Pitch him,
-                                     double formantMultiplier, // > 0
-                                     double pitchMultiplier, // > 0
-                                     double pitchRangeMultiplier, // any number
-                                     double durationMultiplier) { // > 0
+autoSound Sound_and_Pitch_changeSpeaker (Sound me, Pitch him, double formantMultiplier, double pitchMultiplier, double pitchRangeMultiplier, double durationMultiplier) {
 	try {
 		double samplingFrequency_old = 1 / my dx;
 
-		if (my xmin != his xmin || my xmax != his xmax) Melder_throw
-			(U"The Pitch and the Sound object must have the same start and end times.");
-
+		if (my xmin != his xmin || my xmax != his xmax) {
+			Melder_throw (U"The Pitch and the Sound object must have the same start and end times.");
+		}
 		autoSound sound = Data_copy (me);
-		Vector_subtractMean (sound.peek());
+		Vector_subtractMean (sound.get());
 
 		if (formantMultiplier != 1) {
 			// Shift all frequencies (inclusive pitch!) */
-			Sound_overrideSamplingFrequency (sound.peek(), samplingFrequency_old * formantMultiplier);
+			Sound_overrideSamplingFrequency (sound.get(), samplingFrequency_old * formantMultiplier);
 		}
 
 		autoPitch pitch = Data_copy (him);
-		Pitch_scaleDuration (pitch.peek(), 1 / formantMultiplier); //
-		Pitch_scalePitch (pitch.peek(), formantMultiplier);
+		Pitch_scaleDuration (pitch.get(), 1 / formantMultiplier); //
+		Pitch_scalePitch (pitch.get(), formantMultiplier);
 
-		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.peek(), pitch.peek());
-		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.peek());
+		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.get(), pitch.get());
+		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.get());
 
-		double median = Pitch_getQuantile (pitch.peek(), 0, 0, 0.5, kPitch_unit_HERTZ);
+		double median = Pitch_getQuantile (pitch.get(), 0, 0, 0.5, kPitch_unit_HERTZ);
 		if (median != 0 && median != NUMundefined) {
 			/* Incorporate pitch shift from overriding the sampling frequency */
-			PitchTier_multiplyFrequencies (pitchTier.peek(), sound -> xmin, sound -> xmax, pitchMultiplier / formantMultiplier);
-			PitchTier_modifyExcursionRange (pitchTier.peek(), sound -> xmin, sound -> xmax, pitchRangeMultiplier, median);
+			PitchTier_multiplyFrequencies (pitchTier.get(), sound -> xmin, sound -> xmax, pitchMultiplier / formantMultiplier);
+			PitchTier_modifyExcursionRange (pitchTier.get(), sound -> xmin, sound -> xmax, pitchRangeMultiplier, median);
 		} else if (pitchMultiplier != 1) {
 			Melder_warning (U"Pitch has not been changed because the sound was entirely voiceless.");
 		}
 		autoDurationTier duration = DurationTier_create (my xmin, my xmax);
-		RealTier_addPoint (duration.peek(), (my xmin + my xmax) / 2, formantMultiplier * durationMultiplier);
+		RealTier_addPoint (duration.get(), (my xmin + my xmax) / 2, formantMultiplier * durationMultiplier);
 
-		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.peek(), pulses.peek(), pitchTier.peek(), duration.peek(), MAX_T);
+		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.get(), pulses.get(), pitchTier.get(), duration.get(), MAX_T);
 
 		// Resample to the original sampling frequency
 
 		if (formantMultiplier != 1) {
-			thee.reset (Sound_resample (thee.peek(), samplingFrequency_old, 10));
+			thee = Sound_resample (thee.get(), samplingFrequency_old, 10);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Pitch & Sound.");
 	}
 }
 
-Sound Sound_changeSpeaker (Sound me, double pitchMin, double pitchMax,
-                           double formantMultiplier, // > 0
-                           double pitchMultiplier, // > 0
-                           double pitchRangeMultiplier, // any number
-                           double durationMultiplier) { // > 0
+autoSound Sound_changeSpeaker (Sound me, double pitchMin, double pitchMax, double formantMultiplier, double pitchMultiplier,  double pitchRangeMultiplier, double durationMultiplier) { // > 0
 	try {
 		autoPitch pitch = Sound_to_Pitch (me, 0.8 / pitchMin, pitchMin, pitchMax);
-		autoSound thee = Sound_and_Pitch_changeSpeaker (me, pitch.peek(), formantMultiplier, pitchMultiplier, pitchRangeMultiplier, durationMultiplier);
-		return thee.transfer();
+		autoSound thee = Sound_and_Pitch_changeSpeaker (me, pitch.get(), formantMultiplier, pitchMultiplier, pitchRangeMultiplier, durationMultiplier);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": speaker not changed.");
 	}
 }
 
-TextGrid Sound_to_TextGrid_detectSilences (Sound me, double minPitch, double timeStep,
+autoTextGrid Sound_to_TextGrid_detectSilences (Sound me, double minPitch, double timeStep,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration,
 	const char32 *silentLabel, const char32 *soundingLabel) {
 	try {
 		int subtractMeanPressure = 1;
-		autoIntensity thee = Sound_to_Intensity (me, minPitch, timeStep, subtractMeanPressure);
-		autoTextGrid him = Intensity_to_TextGrid_detectSilences (thee.peek(), silenceThreshold, minSilenceDuration, minSoundingDuration, silentLabel, soundingLabel);
-		return him.transfer();
+		autoSound filtered = Sound_filter_passHannBand (me, 80.0, 8000.0, 80.0);
+		autoIntensity thee = Sound_to_Intensity (filtered.get(), minPitch, timeStep, subtractMeanPressure);
+		autoTextGrid him = Intensity_to_TextGrid_detectSilences (thee.get(), silenceThreshold, minSilenceDuration, minSoundingDuration, silentLabel, soundingLabel);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TextGrid with silences created.");
 	}
 }
 
-void Sound_getStartAndEndTimesOfSounding (Sound me, double minPitch, double timeStep,
-	double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double *t1, double *t2) {
+void Sound_getStartAndEndTimesOfSounding (Sound me, double minPitch, double timeStep, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double *t1, double *t2) {
 	try {
 		const char32 *silentLabel = U"-", *soundingLabel = U"+";
 		autoTextGrid dbs = Sound_to_TextGrid_detectSilences (me, minPitch, timeStep, silenceThreshold,
 			minSilenceDuration, minSoundingDuration, silentLabel, soundingLabel);
-		IntervalTier itier = (IntervalTier) dbs -> tiers -> item[1];
-		TextInterval ti = (TextInterval) itier -> intervals -> item[1];
-		*t1 = my xmin;
-		if (Melder_equ (ti -> text, silentLabel)) {
-			*t1 = ti -> xmax;
+		IntervalTier tier = (IntervalTier) dbs -> tiers->at [1];
+		Melder_assert (tier -> intervals.size > 0);
+		TextInterval interval = tier -> intervals.at [1];
+		if (t1) {
+			*t1 = my xmin;
+			if (Melder_equ (interval -> text, silentLabel)) {
+				*t1 = interval -> xmax;
+			}
 		}
-		*t2 = my xmax;
-		ti = (TextInterval) itier -> intervals -> item[itier -> intervals -> size];
-		if (Melder_equ (ti -> text, silentLabel)) {
-			*t2 = ti -> xmin;
+		if (t2) {
+			*t2 = my xmax;
+			interval = tier -> intervals.at [tier -> intervals.size];
+			if (Melder_equ (interval -> text, silentLabel)) {
+				*t2 = interval -> xmin;
+			}
 		}
 	} catch (MelderError) {
 		Melder_throw (U"Sounding times not found.");
 	}
 }
 
-Sound Sound_and_IntervalTier_cutPartsMatchingLabel (Sound me, IntervalTier thee, const char32 *match) {
+autoSound Sound_and_IntervalTier_cutPartsMatchingLabel (Sound me, IntervalTier thee, const char32 *match) {
     try {
         // count samples of the trimmed sound
         long ixmin, ixmax, numberOfSamples = 0, previous_ixmax = 0;
 		double xmin = my xmin; // start time of output sound is start time of input sound
-        for (long iint = 1; iint <= thy intervals -> size; iint++) {
-            TextInterval ti = (TextInterval) thy intervals -> item[iint];
-            if (! Melder_equ (ti -> text, match)) {
-                numberOfSamples += Sampled_getWindowSamples (me, ti -> xmin, ti -> xmax, &ixmin, &ixmax);
+        for (long iint = 1; iint <= thy intervals.size; iint ++) {
+            TextInterval interval = thy intervals.at [iint];
+            if (! Melder_equ (interval -> text, match)) {
+                numberOfSamples += Sampled_getWindowSamples (me, interval -> xmin, interval -> xmax, &ixmin, &ixmax);
                 // if two contiguous intervals have to be copied then the last sample of previous interval
                 // and first sample of current interval might sometimes be equal
 				if (ixmin == previous_ixmax) {
@@ -1387,105 +1358,108 @@ Sound Sound_and_IntervalTier_cutPartsMatchingLabel (Sound me, IntervalTier thee,
 				previous_ixmax = ixmax;
 			} else { // matches label
 				if (iint == 1) { // Start time of output sound is end time of first interval
-					xmin = ti -> xmax;
+					xmin = interval -> xmax;
 				}
             }
         }
         // Now copy the parts. The output sound starts at xmin
         autoSound him = Sound_create (my ny, xmin, xmin + numberOfSamples * my dx, numberOfSamples, my dx, xmin + 0.5 * my dx);
-        numberOfSamples = 0; previous_ixmax = 0;
-        for (long iint = 1; iint <= thy intervals -> size; iint++) {
-            TextInterval ti = (TextInterval) thy intervals -> item[iint];
-            if (! Melder_equ (ti -> text, match)) {
+        numberOfSamples = 0;
+		previous_ixmax = 0;
+        for (long iint = 1; iint <= thy intervals.size; iint ++) {
+            TextInterval interval = thy intervals.at [iint];
+            if (! Melder_equ (interval -> text, match)) {
 				long ipos;
-                Sampled_getWindowSamples (me, ti -> xmin, ti -> xmax, &ixmin, &ixmax);
+                Sampled_getWindowSamples (me, interval -> xmin, interval -> xmax, &ixmin, &ixmax);
 				if (ixmin == previous_ixmax) {
 					ixmin++;
 				}
 				previous_ixmax = ixmax;
-                for (long ichan = 1; ichan <= my ny; ichan++) {
+                for (long ichan = 1; ichan <= my ny; ichan ++) {
                     ipos = numberOfSamples + 1;
-                    for (long i = ixmin; i <= ixmax; i++, ipos++) {
-                        his z[ichan][ipos] = my z[ichan][i];
+                    for (long i = ixmin; i <= ixmax; i ++, ipos ++) {
+                        his z [ichan] [ipos] = my z [ichan] [i];
                     }
                 }
-                numberOfSamples = --ipos;
+                numberOfSamples = -- ipos;
             }
         }
         Melder_assert (numberOfSamples == his nx);
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": intervals not trimmed.");
     }
 }
 
-Sound Sound_trimSilences (Sound me, double trimDuration, bool onlyAtStartAndEnd, double minPitch, double timeStep, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, TextGrid *tg, const char32 *trimLabel) {
+autoSound Sound_trimSilences (Sound me, double trimDuration, bool onlyAtStartAndEnd, double minPitch, double timeStep, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, autoTextGrid *p_tg, const char32 *trimLabel) {
     try {
         if (my ny > 1) {
             Melder_throw (U"The sound must be a mono sound.");
         }
         const char32 *silentLabel = U"silent", *soundingLabel = U"sounding";
         const char32 *copyLabel = U"";
-        autoTextGrid dbs = Sound_to_TextGrid_detectSilences (me, minPitch, timeStep, silenceThreshold,
-            minSilenceDuration, minSoundingDuration, silentLabel, soundingLabel);
-        autoIntervalTier itg = (IntervalTier) Data_copy ((IntervalTier) dbs -> tiers -> item[1]);
-        IntervalTier itier = (IntervalTier) dbs -> tiers -> item[1];
-        for (long iint = 1; iint <= itier -> intervals -> size; iint++) {
-            TextInterval ti = (TextInterval) itier -> intervals -> item[iint];
-            TextInterval ati = (TextInterval) itg -> intervals -> item[iint];
+        autoTextGrid tg = Sound_to_TextGrid_detectSilences (me, minPitch, timeStep, silenceThreshold, minSilenceDuration, minSoundingDuration, silentLabel, soundingLabel);
+        autoIntervalTier itg = Data_copy ((IntervalTier) tg -> tiers->at [1]);
+        IntervalTier tier = (IntervalTier) tg -> tiers->at [1];
+        for (long iint = 1; iint <= tier -> intervals.size; iint ++) {
+            TextInterval ti = tier -> intervals.at [iint];
+            TextInterval ati = itg -> intervals.at [iint];
             double duration = ti -> xmax - ti -> xmin;
-            if (duration > trimDuration && Melder_equ (ti -> text, silentLabel)) { // silent
+            if (duration > trimDuration && Melder_equ (ti -> text, silentLabel)) {   // silent
 				const char32 * label = trimLabel;
                 if (iint == 1) { // first is special
                     double trim_t = ti -> xmax - trimDuration;
-                    IntervalTier_moveBoundary (itg.peek(), iint, false, trim_t);
-                } else if (iint == itier -> intervals -> size) { // last is special
+                    IntervalTier_moveBoundary (itg.get(), iint, false, trim_t);
+                } else if (iint == tier -> intervals.size) {   // last is special
                     double trim_t = ti -> xmin + trimDuration;
-                    IntervalTier_moveBoundary (itg.peek(), iint, true, trim_t);
+                    IntervalTier_moveBoundary (itg.get(), iint, true, trim_t);
                 } else {
 					if (onlyAtStartAndEnd) {
 						label = ati -> text;
 					} else {
                     	double trim_t = ti -> xmin + 0.5 * trimDuration;
-						IntervalTier_moveBoundary (itg.peek(), iint, true, trim_t);
+						IntervalTier_moveBoundary (itg.get(), iint, true, trim_t);
                     	trim_t = ti -> xmax - 0.5 * trimDuration;
-                    	IntervalTier_moveBoundary (itg.peek(), iint, false, trim_t);
+                    	IntervalTier_moveBoundary (itg.get(), iint, false, trim_t);
 					}
                 }
                 TextInterval_setText (ati, label);
-            } else { // sounding
+            } else {   // sounding
                 TextInterval_setText (ati, copyLabel);
             }
         }
-        autoSound thee = Sound_and_IntervalTier_cutPartsMatchingLabel (me, itg.peek(), trimLabel);
-        if (tg != NULL) {
-			TextGrid_addTier (dbs.peek(), itg.transfer());
-            *tg = dbs.transfer();
+        autoSound thee = Sound_and_IntervalTier_cutPartsMatchingLabel (me, itg.get(), trimLabel);
+        if (p_tg) {
+			TextGrid_addTier_copy (tg.get(), itg.get());
+            *p_tg = tg.move();
         }
-        return thee.transfer();
+        return thee;
     } catch (MelderError) {
         Melder_throw (me, U": silences not trimmed.");
     }
 }
 
-Sound Sound_trimSilencesAtStartAndEnd (Sound me, double trimDuration, double minPitch, double timeStep,
+autoSound Sound_trimSilencesAtStartAndEnd (Sound me, double trimDuration, double minPitch, double timeStep,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double *t1, double *t2) {
 	try {
-		TextGrid tg;
-		autoSound thee = Sound_trimSilences (me, trimDuration, true, minPitch, timeStep, silenceThreshold, minSilenceDuration, minSoundingDuration, &tg, U"trimmed");
-		autoTextGrid atg = tg;
-		IntervalTier trim = (IntervalTier) tg -> tiers -> item[2];
-		TextInterval ti1 = (TextInterval) trim -> intervals -> item[1];
-		*t1 = my xmin;
-		if (Melder_equ (ti1 -> text, U"trimmed")) {
-			*t1 = ti1 -> xmax;
-		}
-		TextInterval ti2 = (TextInterval) trim -> intervals -> item[trim -> intervals -> size];
-		*t2 = my xmax;
-		if (Melder_equ (ti2 -> text, U"trimmed")) {
-			*t2 = ti2 -> xmin;
-		}
-		return thee.transfer();
+		autoTextGrid tg;
+		autoSound thee = Sound_trimSilences (me, trimDuration, true, minPitch, timeStep, silenceThreshold, minSilenceDuration, minSoundingDuration, & tg, U"trimmed");
+		IntervalTier trim = (IntervalTier) tg -> tiers->at [2];
+		TextInterval ti1 = trim -> intervals.at [1];
+		if (t1) {
+			*t1 = my xmin;
+			if (Melder_equ (ti1 -> text, U"trimmed")) {
+				*t1 = ti1 -> xmax;
+			}
+		}
+		TextInterval ti2 = trim -> intervals.at [trim -> intervals.size];
+		if (t2) {
+			*t2 = my xmax;
+			if (Melder_equ (ti2 -> text, U"trimmed")) {
+				*t2 = ti2 -> xmin;
+			}
+		}
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": silences not trimmed.");
 	}
@@ -1494,8 +1468,8 @@ Sound Sound_trimSilencesAtStartAndEnd (Sound me, double trimDuration, double min
 /*  Compatibility with old Sound(&pitch)_changeGender  ***********************************/
 
 static void PitchTier_modifyRange_old (PitchTier me, double tmin, double tmax, double factor, double fmid) {
-	for (long i = 1; i <= my points -> size; i ++) {
-		RealPoint point = (RealPoint) my points -> item [i];
+	for (long i = 1; i <= my points.size; i ++) {
+		RealPoint point = my points.at [i];
 		double f = point -> value;
 		if (point -> number < tmin || point -> number > tmax) {
 			continue;
@@ -1505,7 +1479,7 @@ static void PitchTier_modifyRange_old (PitchTier me, double tmin, double tmax, d
 	}
 }
 
-static Pitch Pitch_scaleTime_old (Pitch me, double scaleFactor) {
+static autoPitch Pitch_scaleTime_old (Pitch me, double scaleFactor) {
 	try {
 		double dx = my dx, x1 = my x1, xmax = my xmax;
 		if (scaleFactor != 1) {
@@ -1523,73 +1497,73 @@ static Pitch Pitch_scaleTime_old (Pitch me, double scaleFactor) {
 				thy frame[i].candidate[1].frequency = f;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Pitch not scaled.");
 	}
 }
 
-Sound Sound_and_Pitch_changeGender_old (Sound me, Pitch him, double formantRatio, double new_pitch, double pitchRangeFactor, double durationFactor) {
+autoSound Sound_and_Pitch_changeGender_old (Sound me, Pitch him, double formantRatio, double new_pitch, double pitchRangeFactor, double durationFactor) {
 	try {
 		double samplingFrequency_old = 1 / my dx;
 
 		if (my ny > 1) {
 			Melder_throw (U"Change Gender works only on mono sounds.");
 		}
-		if (my xmin != his xmin || my xmax != his xmax) Melder_throw
-			(U"The Pitch and the Sound object must have the same starting times and finishing times.");
+		if (my xmin != his xmin || my xmax != his xmax) {
+			Melder_throw (U"The Pitch and the Sound object must have the same starting times and finishing times.");
+		}
 		if (new_pitch < 0) {
 			Melder_throw (U"The new pitch median must not be negative.");
 		}
 
 		autoSound sound = Data_copy (me);
-		Vector_subtractMean (sound.peek());
+		Vector_subtractMean (sound.get());
 
 		if (formantRatio != 1) {
 			// Shift all frequencies (inclusive pitch!)
-			Sound_overrideSamplingFrequency (sound.peek(), samplingFrequency_old * formantRatio);
+			Sound_overrideSamplingFrequency (sound.get(), samplingFrequency_old * formantRatio);
 		}
 
 		autoPitch pitch = Pitch_scaleTime_old (him, 1 / formantRatio);
-		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.peek(), pitch.peek());
-		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.peek());
+		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.get(), pitch.get());
+		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.get());
 
-		double median = Pitch_getQuantile (pitch.peek(), 0, 0, 0.5, kPitch_unit_HERTZ);
+		double median = Pitch_getQuantile (pitch.get(), 0, 0, 0.5, kPitch_unit_HERTZ);
 		if (median != 0 && median != NUMundefined) {
 			// Incorporate pitch shift from overriding the sampling frequency
 			if (new_pitch == 0) {
 				new_pitch = median / formantRatio;
 			}
 			double factor = new_pitch / median;
-			PitchTier_multiplyFrequencies (pitchTier.peek(), sound -> xmin, sound -> xmax, factor);
-			PitchTier_modifyRange_old (pitchTier.peek(), sound -> xmin, sound -> xmax, pitchRangeFactor, new_pitch);
+			PitchTier_multiplyFrequencies (pitchTier.get(), sound -> xmin, sound -> xmax, factor);
+			PitchTier_modifyRange_old (pitchTier.get(), sound -> xmin, sound -> xmax, pitchRangeFactor, new_pitch);
 		} else {
 			Melder_warning (U"There were no voiced segments found.");
 		}
 		autoDurationTier duration = DurationTier_create (my xmin, my xmax);
-		RealTier_addPoint (duration.peek(), (my xmin + my xmax) / 2, formantRatio * durationFactor);
+		RealTier_addPoint (duration.get(), (my xmin + my xmax) / 2, formantRatio * durationFactor);
 
-		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.peek(), pulses.peek(), pitchTier.peek(),
-		                 duration.peek(), 1.25 / Pitch_getMinimum (pitch.peek(), 0.0, 0.0, kPitch_unit_HERTZ, false));
+		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.get(), pulses.get(), pitchTier.get(),
+		                 duration.get(), 1.25 / Pitch_getMinimum (pitch.get(), 0.0, 0.0, kPitch_unit_HERTZ, false));
 
 		// Resample to the original sampling frequency
 
 		if (formantRatio != 1) {
-			thee.reset (Sound_resample (thee.peek(), samplingFrequency_old, 10));
+			thee = Sound_resample (thee.get(), samplingFrequency_old, 10);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from Pitch & Sound.");
 	}
 }
 
-Sound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio,
-                              double new_pitch, double pitchRangeFactor, double durationFactor) {
+autoSound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio, double new_pitch, double pitchRangeFactor, double durationFactor) {
 	try {
 		autoPitch pitch = Sound_to_Pitch (me, 0.8 / fmin, fmin, fmax);
-		autoSound thee = Sound_and_Pitch_changeGender_old (me, pitch.peek(), formantRatio,
+		autoSound thee = Sound_and_Pitch_changeGender_old (me, pitch.get(), formantRatio,
 		                 new_pitch, pitchRangeFactor, durationFactor);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created for gender change.");
 	}
@@ -1637,20 +1611,20 @@ void Sound_draw_btlr (Sound me, Graphics g, double tmin, double tmax, double ami
 	}
 	if (garnish) {
 		if (direction == FROM_BOTTOM_TO_TOP) {
-			if (amin * amax < 0) {
-				Graphics_markBottom (g, 0, 0, 1, 1, NULL);
+			if (amin * amax < 0.0) {
+				Graphics_markBottom (g, 0.0, false, true, true, nullptr);
 			}
 		} else if (direction == FROM_TOP_TO_BOTTOM) {
-			if (amin * amax < 0) {
-				Graphics_markTop (g, 0, 0, 1, 1, NULL);
+			if (amin * amax < 0.0) {
+				Graphics_markTop (g, 0.0, false, true, true, nullptr);
 			}
 		} else if (direction == FROM_RIGHT_TO_LEFT) {
-			if (amin * amax < 0) {
-				Graphics_markRight (g, 0, 0, 1, 1, NULL);
+			if (amin * amax < 0.0) {
+				Graphics_markRight (g, 0.0, false, true, true, nullptr);
 			}
 		} else { //if (direction == FROM_LEFT_TO_RIGHT)
-			if (amin * amax < 0) {
-				Graphics_markLeft (g, 0, 0, 1, 1, NULL);
+			if (amin * amax < 0.0) {
+				Graphics_markLeft (g, 0.0, false, true, true, nullptr);
 			}
 		}
 		Graphics_rectangle (g, xmin, xmax, ymin, ymax);
@@ -1682,8 +1656,7 @@ void Sound_fade (Sound me, int channel, double t, double fadeTime, int inout, in
 	} else if (fadeTime > 0) {
 		t1 = t; t2 = t + fadeTime;
 	} else {
-		Melder_warning (U"You have given a \"Fade time\" of zero seconds. The fade-", fade_inout,
-		                U"will not happen.");
+		Melder_warning (U"You have given a \"Fade time\" of zero seconds. The fade-", fade_inout, U"will not happen.");
 		return;
 	}
 	long i0 = 0, iystart, iyend;
@@ -1725,16 +1698,16 @@ void Sound_fade (Sound me, int channel, double t, double fadeTime, int inout, in
 			if (inout <= 0) {
 				cosp = -cosp;    // fade-in
 			}
-			my z[ichannel][i] *= 0.5 * (1 + cosp);
+			my z[ichannel][i] *= 0.5 * (1.0 + cosp);
 		}
 		if (fadeGlobal) {
 			if (inout <= 0) {
 				for (long i = 1; i < istart; i++) {
-					my z[ichannel][i] = 0;
+					my z[ichannel][i] = 0.0;
 				}
 			} else {
 				for (long i = iend; i < my nx; i++) {
-					my z[ichannel][i] = 0;
+					my z[ichannel][i] = 0.0;
 				}
 			}
 		}
@@ -1742,7 +1715,7 @@ void Sound_fade (Sound me, int channel, double t, double fadeTime, int inout, in
 }
 
 /* 1; rect 2:hamming 3: bartlet 4: welch 5: hanning 6:gaussian */
-Sound Sound_createFromWindowFunction (double windowDuration, double samplingFrequency, int windowType) {
+autoSound Sound_createFromWindowFunction (double windowDuration, double samplingFrequency, int windowType) {
 	try {
 		autoSound me = Sound_createSimple (1, windowDuration, samplingFrequency);
 
@@ -1777,14 +1750,14 @@ Sound Sound_createFromWindowFunction (double windowDuration, double samplingFreq
 			}
 			my z[1][i] = value;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from window function.");
 	}
 }
 
 /* y[n] = sum(i=-n, i=n, x[n+mi])/(2*n+1) */
-Sound Sound_localAverage (Sound me, double averagingInterval, int windowType) {
+autoSound Sound_localAverage (Sound me, double averagingInterval, int windowType) {
 	try {
 		double windowDuration = windowType == 6 ? 2 * averagingInterval : averagingInterval;
 		autoSound thee = Data_copy (me);
@@ -1793,7 +1766,7 @@ Sound Sound_localAverage (Sound me, double averagingInterval, int windowType) {
 		long nswindow2 = window -> nx / 2;
 		long nswindow2p = (window -> nx - 1) / 2; // nx is odd: one sample less in the forward direction
 		if (nswindow2 < 1) {
-			return thee.transfer();
+			return thee;
 		}
 		double *w = window -> z[1];
 
@@ -1810,7 +1783,7 @@ Sound Sound_localAverage (Sound me, double averagingInterval, int windowType) {
 				thy z[k][i] = sum / wsum;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Sound (local average) created.");
 	}
@@ -1818,20 +1791,20 @@ Sound Sound_localAverage (Sound me, double averagingInterval, int windowType) {
 
 static void _Sound_garnish (Sound me, Graphics g, double tmin, double tmax, double minimum, double maximum) {
 	Graphics_drawInnerBox (g);
-	Graphics_textBottom (g, 1, U"Time (s)");
-	Graphics_marksBottom (g, 2, 1, 1, 0);
+	Graphics_textBottom (g, true, U"Time (s)");
+	Graphics_marksBottom (g, 2, true, true, false);
 	Graphics_setWindow (g, tmin, tmax, minimum - (my ny - 1) * (maximum - minimum), maximum);
-	Graphics_markLeft (g, minimum, 1, 1, 0, NULL);
-	Graphics_markLeft (g, maximum, 1, 1, 0, NULL);
+	Graphics_markLeft (g, minimum, true, true, false, nullptr);
+	Graphics_markLeft (g, maximum, true, true, false, nullptr);
 	if (minimum != 0.0 && maximum != 0.0 && (minimum > 0.0) != (maximum > 0.0)) {
-		Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+		Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 	}
 	if (my ny == 2) {
 		Graphics_setWindow (g, tmin, tmax, minimum, maximum + (my ny - 1) * (maximum - minimum));
-		Graphics_markRight (g, minimum, 1, 1, 0, NULL);
-		Graphics_markRight (g, maximum, 1, 1, 0, NULL);
+		Graphics_markRight (g, minimum, true, true, false, nullptr);
+		Graphics_markRight (g, maximum, true, true, false, nullptr);
 		if (minimum != 0.0 && maximum != 0.0 && (minimum > 0.0) != (maximum > 0.0)) {
-			Graphics_markRight (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markRight (g, 0.0, true, true, true, nullptr);
 		}
 	}
 }
@@ -1887,7 +1860,7 @@ static void Sound_findIntermediatePoint_bs (Sound me, long ichannel, long isampl
 		thy z[channel][1] = my z[channel][isample]; thy z[channel][3] = my z[channel][isample + 1];
 	}
 
-	Formula_compile (interpreter, thee.peek(), formula, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+	Formula_compile (interpreter, thee.get(), formula, kFormula_EXPRESSION_TYPE_NUMERIC, true);
 
 	// bisection to find optimal x and y
 	long istep = 1;
@@ -1945,8 +1918,7 @@ void Sound_drawWhere (Sound me, Graphics g, double tmin, double tmax, double min
 	Graphics_setInner (g);
 	struct Formula_Result result;
 	for (long channel = 1; channel <= my ny; channel ++) {
-		Graphics_setWindow (g, tmin, tmax, minimum - (my ny - channel) * (maximum - minimum),
-			maximum + (channel - 1) * (maximum - minimum));
+		Graphics_setWindow (g, tmin, tmax, minimum - (my ny - channel) * (maximum - minimum), maximum + (channel - 1) * (maximum - minimum));
 		if (str32str (method, U"bars") || str32str (method, U"Bars")) {
 			for (long ix = ixmin; ix <= ixmax; ix ++) {
 				Formula_run (channel, ix, & result);
@@ -2045,8 +2017,7 @@ void Sound_drawWhere (Sound me, Graphics g, double tmin, double tmax, double min
 	}
 }
 
-void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin, double tmax,
-                       double minimum, double maximum, double level, bool garnish, long numberOfBisections, const char32 *formula, Interpreter interpreter) {
+void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin, double tmax, double minimum, double maximum, double level, bool garnish, long numberOfBisections, const char32 *formula, Interpreter interpreter) {
 	try {
 		long ixmin, ixmax;
 		struct Formula_Result result;
@@ -2058,9 +2029,7 @@ void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin
 		Graphics_setColour (g, colour);
 		Graphics_setInner (g);
 		for (long channel = 1; channel <= my ny; channel++) {
-			Graphics_setWindow (g, tmin, tmax,
-			                    minimum - (my ny - channel) * (maximum - minimum),
-			                    maximum + (channel - 1) * (maximum - minimum));
+			Graphics_setWindow (g, tmin, tmax, minimum - (my ny - channel) * (maximum - minimum), maximum + (channel - 1) * (maximum - minimum));
 			bool current, previous = true, fill = false; // fill only when leaving area
 			double tmini = tmin, tmaxi = tmax, xe, ye;
 			long ix = ixmin;
@@ -2105,8 +2074,7 @@ void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin
 	}
 }
 
-void Sounds_paintEnclosed (Sound me, Sound thee, Graphics g, Graphics_Colour colour, double tmin, double tmax,
-                           double minimum, double maximum, bool garnish) {
+void Sounds_paintEnclosed (Sound me, Sound thee, Graphics g, Graphics_Colour colour, double tmin, double tmax, double minimum, double maximum, bool garnish) {
 	try {
 		long ixmin, ixmax, numberOfChannels = my ny > thy ny ? my ny : thy ny;
 		double min1 = minimum, max1 = maximum, tmin1 = tmin, tmax1 = tmax;
@@ -2129,9 +2097,7 @@ void Sounds_paintEnclosed (Sound me, Sound thee, Graphics g, Graphics_Colour col
 		Graphics_setInner (g);
 		for (long channel = 1; channel <= numberOfChannels; channel++) {
 			autoPolygon him = Sounds_to_Polygon_enclosed (me, thee, channel, tmin, tmax, minimum, maximum);
-			Graphics_setWindow (g, tmin, tmax,
-			                    minimum - (numberOfChannels - channel) * (maximum - minimum),
-			                    maximum + (channel - 1) * (maximum - minimum));
+			Graphics_setWindow (g, tmin, tmax, minimum - (numberOfChannels - channel) * (maximum - minimum), maximum + (channel - 1) * (maximum - minimum));
 			Graphics_fillArea (g, his numberOfPoints, &his x[1], &his y[1]);
 		}
 		Graphics_setWindow (g, tmin, tmax, minimum, maximum);
@@ -2147,23 +2113,23 @@ void Sounds_paintEnclosed (Sound me, Sound thee, Graphics g, Graphics_Colour col
 	}
 }
 
-Sound Sound_copyChannelRanges (Sound me, const char32 *ranges) {
+autoSound Sound_copyChannelRanges (Sound me, const char32 *ranges) {
 	try {
 		long numberOfChannels;
-		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (ranges, my ny, & numberOfChannels, NULL, U"channel", true), 1);
+		autoNUMvector <long> channels (NUMstring_getElementsOfRanges (ranges, my ny, & numberOfChannels, nullptr, U"channel", true), 1);
 		autoSound thee = Sound_create (numberOfChannels, my xmin, my xmax, my nx, my dx, my x1);
 		for (long i = 1; i <= numberOfChannels; i++) {
 			double *from = my z[channels[i]], *to = thy z[i];
 			NUMvector_copyElements<double> (from, to, 1, my nx);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": could not extract channels.");
 	}
 }
 
 /* After a script by Ton Wempe */
-static Sound Sound_removeNoiseBySpectralSubtraction_mono (Sound me, Sound noise, double windowLength) {
+static autoSound Sound_removeNoiseBySpectralSubtraction_mono (Sound me, Sound noise, double windowLength) {
 	try {
 		if (my dx != noise -> dx) {
 			Melder_throw (U"The sound and the noise must have the same sampling frequency.");
@@ -2175,10 +2141,10 @@ static Sound Sound_removeNoiseBySpectralSubtraction_mono (Sound me, Sound noise,
 		autoSound denoised = Sound_create (1, my xmin, my xmax, my nx, my dx, my x1);
 		autoSound analysisWindow = Sound_createSimple (1, windowLength, samplingFrequency);
 		long windowSamples = analysisWindow -> nx;
-		autoSound noise_copy = (Sound) Data_copy (noise);
-		Sound_multiplyByWindow (noise_copy.peek(), kSound_windowShape_HANNING);
+		autoSound noise_copy = Data_copy (noise);
+		Sound_multiplyByWindow (noise_copy.get(), kSound_windowShape_HANNING);
 		double bandwidth = samplingFrequency / windowSamples;
-		autoLtas noiseLtas = Sound_to_Ltas (noise_copy.peek(), bandwidth);
+		autoLtas noiseLtas = Sound_to_Ltas (noise_copy.get(), bandwidth);
 		autoNUMvector<double> noiseAmplitudes (1, noiseLtas -> nx);
 		for (long i = 1; i <= noiseLtas -> nx; i++) {
 			noiseAmplitudes[i] = pow (10.0, (noiseLtas -> z[1][i] - 94) / 20);
@@ -2198,7 +2164,7 @@ static Sound Sound_removeNoiseBySpectralSubtraction_mono (Sound me, Sound noise,
 			for (long j = nsamples + 1; j <= windowSamples; j++) {
 				analysisWindow -> z[1][j] = 0;
 			}
-			autoSpectrum analysisSpectrum = Sound_to_Spectrum (analysisWindow.peek(), 0);
+			autoSpectrum analysisSpectrum = Sound_to_Spectrum (analysisWindow.get(), 0);
 
 			// Suppress noise in the analysisSpectrum by subtracting the noise spectrum
 
@@ -2209,13 +2175,13 @@ static Sound Sound_removeNoiseBySpectralSubtraction_mono (Sound me, Sound noise,
 				factor = factor < 1e-6 ? 1e-6 : factor;
 				x[i] *= factor; y[i] *= factor;
 			}
-			autoSound suppressed = Spectrum_to_Sound (analysisSpectrum.peek());
-			Sound_multiplyByWindow (suppressed.peek(), kSound_windowShape_HANNING);
+			autoSound suppressed = Spectrum_to_Sound (analysisSpectrum.get());
+			Sound_multiplyByWindow (suppressed.get(), kSound_windowShape_HANNING);
 			for (long j = 1; j <= nsamples; j++) {
 				denoised -> z[1][istart - 1 + j] += 0.5 * suppressed -> z[1][j]; // 0.5 because of 2-fold oversampling
 			}
 		}
-		return denoised.transfer();
+		return denoised;
 	} catch (MelderError) {
 		Melder_throw (me, U": noise not subtracted.");
 	}
@@ -2225,7 +2191,7 @@ static void Sound_findNoise (Sound me, double minimumNoiseDuration, double *nois
 	try {
 		*noiseStart = NUMundefined; *noiseEnd = NUMundefined;
 		autoIntensity intensity = Sound_to_Intensity (me, 20, 0.005, 1);
-		double tmin = Vector_getXOfMinimum (intensity.peek(), intensity -> xmin, intensity ->  xmax, 1) - minimumNoiseDuration / 2;
+		double tmin = Vector_getXOfMinimum (intensity.get(), intensity -> xmin, intensity ->  xmax, 1) - minimumNoiseDuration / 2;
 		double tmax = tmin + minimumNoiseDuration;
 		if (tmin < my xmin) {
 			tmin = my xmin; tmax = tmin + minimumNoiseDuration;
@@ -2242,24 +2208,24 @@ static void Sound_findNoise (Sound me, double minimumNoiseDuration, double *nois
 	}
 }
 
-Sound Sound_removeNoise (Sound me, double noiseStart, double noiseEnd, double windowLength, double minBandFilterFrequency, double maxBandFilterFrequency, double smoothing, int method) {
+autoSound Sound_removeNoise (Sound me, double noiseStart, double noiseEnd, double windowLength, double minBandFilterFrequency, double maxBandFilterFrequency, double smoothing, int method) {
 	try {
 		autoSound filtered = Sound_filter_passHannBand (me, minBandFilterFrequency, maxBandFilterFrequency, smoothing);
 		autoSound denoised = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
 		bool findNoise = noiseEnd <= noiseStart;
 		double minimumNoiseDuration = 2 * windowLength;
 		for (long ichannel = 1; ichannel <= my ny; ichannel++) {
-			autoSound denoisedi, channeli = Sound_extractChannel (filtered.peek(), ichannel);
+			autoSound denoisedi, channeli = Sound_extractChannel (filtered.get(), ichannel);
 			if (findNoise) {
-				Sound_findNoise (channeli.peek(), minimumNoiseDuration, &noiseStart, &noiseEnd);
+				Sound_findNoise (channeli.get(), minimumNoiseDuration, &noiseStart, &noiseEnd);
 			}
-			autoSound noise = Sound_extractPart (channeli.peek(), noiseStart, noiseEnd, kSound_windowShape_RECTANGULAR, 1.0, false);
+			autoSound noise = Sound_extractPart (channeli.get(), noiseStart, noiseEnd, kSound_windowShape_RECTANGULAR, 1.0, false);
 			if (method == 1) { // spectral subtraction
-				denoisedi.reset (Sound_removeNoiseBySpectralSubtraction_mono (filtered.peek(), noise.peek(), windowLength));
+				denoisedi = Sound_removeNoiseBySpectralSubtraction_mono (filtered.get(), noise.get(), windowLength);
 			}
 			NUMvector_copyElements<double> (denoisedi -> z[1], denoised -> z[ichannel], 1, my nx);
 		}
-		return denoised.transfer();
+		return denoised;
 	} catch (MelderError) {
 		Melder_throw (me, U": not denoised.");
 	}
@@ -2268,9 +2234,9 @@ Sound Sound_removeNoise (Sound me, double noiseStart, double noiseEnd, double wi
 void Sound_playAsFrequencyShifted (Sound me, double shiftBy, double newSamplingFrequency, long precision) {
 	try {
 		autoSpectrum spectrum = Sound_to_Spectrum (me, 1);
-		autoSpectrum shifted = Spectrum_shiftFrequencies (spectrum.peek(), shiftBy, newSamplingFrequency / 2, precision);
-		autoSound thee = Spectrum_to_Sound (shifted.peek());
-		Sound_playPart (thee.peek(), my xmin, my xmax, NULL, NULL);
+		autoSpectrum shifted = Spectrum_shiftFrequencies (spectrum.get(), shiftBy, newSamplingFrequency / 2, precision);
+		autoSound thee = Spectrum_to_Sound (shifted.get());
+		Sound_playPart (thee.get(), my xmin, my xmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U" not played with frequencies shifted.");
 	}
diff --git a/dwtools/Sound_extensions.h b/dwtools/Sound_extensions.h
index 09d8354..abf5a60 100644
--- a/dwtools/Sound_extensions.h
+++ b/dwtools/Sound_extensions.h
@@ -2,42 +2,35 @@
 #define _Sound_extensions_h_
 /* Sound_extensions.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012,2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020813 GPL header
- djmw 20121023 Latest modification
-*/
-
-
 #include "Sound.h"
 #include "Pitch.h"
 #include "Collection.h"
 #include "PointProcess.h"
 #include "TextGrid.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 int Sound_writeToNistAudioFile (Sound me, MelderFile file);
 
-Sound Sound_readFromCmuAudioFile (MelderFile file);
+autoSound Sound_readFromCmuAudioFile (MelderFile file);
 
 /* only 16 bit signed has been tested !! */
-Sound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCoding,
+autoSound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCoding,
 	int littleEndian, int unSigned, long skipNBytes, double samplingFrequency);
 /* Reads a Sound from a raw file:
  *	fileName	: name of the file
@@ -50,12 +43,11 @@ Sound Sound_readFromRawFile (MelderFile file, const char *format, int nBitsCodin
  *	skipNBytes	: start reading after this number of bytes (skipNBytes >= 0 )
  */
 
-Sound Sound_readFromDialogicADPCMFile (MelderFile file, double sampleRate);
+autoSound Sound_readFromDialogicADPCMFile (MelderFile file, double sampleRate);
 /*
 */
 
-void Sound_writeToRawFile (Sound me, MelderFile file, const char *format, int littleEndian,
-	int nBitsCoding, int unSigned);
+void Sound_writeToRawFile (Sound me, MelderFile file, const char *format, int littleEndian, int nBitsCoding, int unSigned);
 
 void Sound_into_Sound (Sound me, Sound to, double startTime);
 /* precondition: my dx == to->dx (equal sampling times */
@@ -73,38 +65,36 @@ void Sound_preEmphasis (Sound me, double preEmphasisFrequency);
 void Sound_deEmphasis (Sound me, double preEmphasisFrequency);
 /*	for (i=2; i <= my nx; i++ ) my z[1][i] += deEmphasis * my z[1][i-1]; */
 
-Sound Sound_createGaussian (double windowDuration, double samplingFrequency);
-Sound Sound_createHamming (double windowDuration, double samplingFrequency);
+autoSound Sound_createGaussian (double windowDuration, double samplingFrequency);
+
+autoSound Sound_createHamming (double windowDuration, double samplingFrequency);
 
-Sound Sound_createSimpleToneComplex (double minimumTime, double maximumTime, double samplingFrequency,
-	double firstFrequency, long numberOfComponents, double frequencyDistance,
-	int scaleAmplitudes);
+autoSound Sound_createSimpleToneComplex (double minimumTime, double maximumTime, double samplingFrequency,
+	double firstFrequency, long numberOfComponents, double frequencyDistance, int scaleAmplitudes);
 
-Sound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTime, double samplingFrequency,
-	double firstFrequency, long numberOfComponents, long mistunedComponent,
-	double mistuningFraction, int scaleAmplitudes);
+autoSound Sound_createMistunedHarmonicComplex (double minimumTime, double maximumTime, double samplingFrequency,
+	double firstFrequency, long numberOfComponents, long mistunedComponent, double mistuningFraction, int scaleAmplitudes);
 
-Sound Sound_createGammaTone (double minimumTime, double maximumTime, double samplingFrequency,
-	long gamma, double frequency, double bandwidth, double initialPhase, double addition,
-	int scaleAmplitudes);
+autoSound Sound_createGammaTone (double minimumTime, double maximumTime, double samplingFrequency,
+	long gamma, double frequency, double bandwidth, double initialPhase, double addition, int scaleAmplitudes);
 
-Sound Sound_createShepardTone (double minimumTime, double maximumTime, double samplingFrequency,
+autoSound Sound_createShepardTone (double minimumTime, double maximumTime, double samplingFrequency,
 	double lowestFrequency, long numberOfComponents, double frequencyChange, double amplitudeRange);
 
-Sound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
+autoSound Sound_createShepardToneComplex (double minimumTime, double maximumTime,
 	double samplingFrequency, double lowestFrequency, long numberOfComponents,
 	double frequencyChange_st, double amplitudeRange, double octaveShiftFraction);
 
-Sound Sound_createPattersonWightmanTone (double minimumTime, double maximumTime, double samplingFrequency,
+autoSound Sound_createPattersonWightmanTone (double minimumTime, double maximumTime, double samplingFrequency,
 	double baseFrequency, double frequencyShiftRatio, long numberOfComponents);
 
-Sound Sound_createPlompTone (double minimumTime, double maximumTime, double samplingFrequency,
+autoSound Sound_createPlompTone (double minimumTime, double maximumTime, double samplingFrequency,
 	double baseFrequency, double frequencyFraction, long m);
 
-Sound Sound_createFromWindowFunction (double effectiveTime, double samplingFrequency, int windowType);
+autoSound Sound_createFromWindowFunction (double effectiveTime, double samplingFrequency, int windowType);
 /* 1; rect 2:hamming 3: bartlet 4: welch 5: hanning 6:gaussian */
 
-Sound Sound_filterByGammaToneFilter4 (Sound me, double centre_frequency, double bandwidth);
+autoSound Sound_filterByGammaToneFilter4 (Sound me, double centre_frequency, double bandwidth);
 
 void Sounds_multiply (Sound me, Sound thee);
 /* precondition: my nx = thy nx */
@@ -117,7 +107,7 @@ double Sound_correlateParts (Sound me, double t1, double t2, double duration);
 void Sound_localMean (Sound me, double fromTime, double toTime, double *mean);
 void Sound_localPeak (Sound me, double fromTime, double toTime, double ref, double *peak);
 
-Sound Sound_localAverage (Sound me, double averaginginterval, int windowType);
+autoSound Sound_localAverage (Sound me, double averaginginterval, int windowType);
 /* y[n] = sum(i=-n, i=n, x[n+i])/(2*n+1) */
 
 double Sound_power (Sound me);
@@ -141,30 +131,26 @@ void Sound_fade (Sound me, int channel, double t, double fadeTime, int inout, in
 #define FROM_BOTTOM_TO_TOP 2
 #define FROM_TOP_TO_BOTTOM 3
 
-void Sound_draw_btlr (Sound me, Graphics g, double tmin, double tmax, double amin, double amax,
-	int direction, int garnish);
+void Sound_draw_btlr (Sound me, Graphics g, double tmin, double tmax, double amin, double amax, int direction, int garnish);
 /* direction is one of the macros's FROM_LEFT_TO_RIGHT... */
 
 void Sound_drawWhere (Sound me, Graphics g, double tmin, double tmax, double minimum, double maximum,
 	bool garnish, const char32 *method, long numberOfBisections, const char32 *formula, Interpreter interpreter);
 
-void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin, double tmax,
-	double minimum, double maximum, double level, bool garnish, long numberOfBisections, const char32 *formula, Interpreter interpreter);
+void Sound_paintWhere (Sound me, Graphics g, Graphics_Colour colour, double tmin, double tmax, double minimum, double maximum, double level, bool garnish, long numberOfBisections, const char32 *formula, Interpreter interpreter);
+
 void Sounds_paintEnclosed (Sound me, Sound thee, Graphics g, Graphics_Colour colour, double tmin, double tmax,
 	double minimum, double maximum, bool garnish);
 
-Sound Sound_changeGender (Sound me, double pitchMin, double pitchMax, double pitchRatio,
-	double formantFrequenciesRatio, double durationRatio);
-Sound Sound_and_Pitch_changeGender (Sound me, Pitch him, double pitchRatio,
-	double formantFrequenciesRatio, double durationRatio);
+autoSound Sound_changeGender (Sound me, double pitchMin, double pitchMax, double pitchRatio, double formantFrequenciesRatio, double durationRatio);
 
-Sound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio,
-	double new_pitch, double pitchRangeFactor, double durationFactor);
+autoSound Sound_and_Pitch_changeGender (Sound me, Pitch him, double pitchRatio, double formantFrequenciesRatio, double durationRatio);
 
-Sound Sound_and_Pitch_changeGender_old (Sound me, Pitch him, double formantRatio,
-	double new_pitch, double pitchRangeFactor, double durationFactor);
+autoSound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio, double new_pitch, double pitchRangeFactor, double durationFactor);
+
+autoSound Sound_and_Pitch_changeGender_old (Sound me, Pitch him, double formantRatio, double new_pitch, double pitchRangeFactor, double durationFactor);
 
-PointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, double dt);
+autoPointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, double dt);
 /*
 	Marks jumps in the signal where the amplitude changes more than 'minimumJump'
 	within time dt
@@ -172,42 +158,44 @@ PointProcess Sound_to_PointProcess_getJumps (Sound me, double minimumJump, doubl
 
 void Sound_filter_part_formula (Sound me, double t1, double t2, const char32 *formula, Interpreter interpreter);
 
-Sound Sound_changeSpeaker (Sound me, double pitchMin, double pitchMax,
+autoSound Sound_changeSpeaker (Sound me, double pitchMin, double pitchMax,
 	double formantMultiplier, // > 0
 	double pitchMultiplier, // > 0
 	double pitchRangeMultiplier, // any number
 	double durationMultiplier); // > 0
 
-Sound Sound_and_Pitch_changeSpeaker (Sound me, Pitch him,
+autoSound Sound_and_Pitch_changeSpeaker (Sound me, Pitch him,
 	double formantMultiplier, // > 0
 	double pitchMultiplier, // > 0
 	double pitchRangeMultiplier, // any number
 	double durationMultiplier); // > 0
 
 /* Outphased */
-Sound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio,
+autoSound Sound_changeGender_old (Sound me, double fmin, double fmax, double formantRatio,
 	double new_pitch, double pitchRangeFactor, double durationFactor);
 
-TextGrid Sound_to_TextGrid_detectSilences (Sound me, double minPitch, double timeStep,
+autoTextGrid Sound_to_TextGrid_detectSilences (Sound me, double minPitch, double timeStep,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration,
 	const char32 *silentLabel, const char32 *soundingLabel);
+
 void Sound_getStartAndEndTimesOfSounding (Sound me, double minPitch, double timeStep,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double *t1, double *t2);
 
-Sound Sound_and_IntervalTier_cutPartsMatchingLabel (Sound me, IntervalTier thee, const char32 *match);
+autoSound Sound_and_IntervalTier_cutPartsMatchingLabel (Sound me, IntervalTier thee, const char32 *match);
 /* Cut intervals that match the label from the sound. The starting time of the new sound is
  * (1) my xmin if the first interval is not matching
  * (2) the end time of the first interval if matching
  */
 
-Sound Sound_trimSilencesAtStartAndEnd (Sound me, double trimDuration, double minPitch, double timeStep,
+autoSound Sound_trimSilencesAtStartAndEnd (Sound me, double trimDuration, double minPitch, double timeStep,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double *t1, double *t2);
-Sound Sound_trimSilences (Sound me, double trimDuration, bool onlyAtStartAndEnd, double minPitch, double timeStep,
-    double silenceThreshold, double minSilenceDuration, double minSoundingDuration, TextGrid *tg, const char32 *trimLabel);
 
-Sound Sound_copyChannelRanges (Sound me, const char32 *ranges);
+autoSound Sound_trimSilences (Sound me, double trimDuration, bool onlyAtStartAndEnd, double minPitch, double timeStep,
+    double silenceThreshold, double minSilenceDuration, double minSoundingDuration, autoTextGrid *tg, const char32 *trimLabel);
+
+autoSound Sound_copyChannelRanges (Sound me, const char32 *ranges);
 
-Sound Sound_removeNoise (Sound me, double noiseStart, double noiseEnd, double windowLength, double minBandFilterFrequency, double maxBandFilterFrequency, double smoothing, int method);
+autoSound Sound_removeNoise (Sound me, double noiseStart, double noiseEnd, double windowLength, double minBandFilterFrequency, double maxBandFilterFrequency, double smoothing, int method);
 
 void Sound_playAsFrequencyShifted (Sound me, double shiftBy, double newSamplingFrequency, long precision);
 
diff --git a/dwtools/Sound_to_DTW.h b/dwtools/Sound_to_DTW.h
deleted file mode 100644
index f664be8..0000000
--- a/dwtools/Sound_to_DTW.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _Sound_to_MFCC_h_
-#define _Sound_to_MFCC_h_
-/* Sound_to_MFCC.h
- *
- * Copyright (C) 1993-2011 David Weenink
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- djmw 20010410
- djmw 20020813 GPL header
- djmw 20110307 Latest modification
-*/
-
-#include "MFCC.h"
-#include "Sound.h"
-
-MFCC Sound_to_MFCC (Sound me, long numberOfCoefficients, double analysisWidth,
-	double dt, double f1_mel, double fmax_mel, double df_mel);
-
-#endif /* _Sound_to_MFCC_h_ */
diff --git a/dwtools/Sound_to_MFCC.cpp b/dwtools/Sound_to_MFCC.cpp
index efd038c..172bd19 100644
--- a/dwtools/Sound_to_MFCC.cpp
+++ b/dwtools/Sound_to_MFCC.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_MFCC.cpp
  *
- * Copyright (C) 1993-2011, 2014 David Weenink
+ * Copyright (C) 1993-2011, 2014-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,11 +24,11 @@
 #include "Sound_to_MFCC.h"
 #include "Sound_and_Spectrogram_extensions.h"
 
-MFCC Sound_to_MFCC (Sound me, long numberOfCoefficients, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
+autoMFCC Sound_to_MFCC (Sound me, long numberOfCoefficients, double analysisWidth, double dt, double f1_mel, double fmax_mel, double df_mel) {
 	try {
 		autoMelSpectrogram mf = Sound_to_MelSpectrogram (me, analysisWidth, dt, f1_mel, fmax_mel, df_mel);
-		autoMFCC mfcc = MelSpectrogram_to_MFCC (mf.peek(), numberOfCoefficients);
-		return mfcc.transfer();
+		autoMFCC mfcc = MelSpectrogram_to_MFCC (mf.get(), numberOfCoefficients);
+		return mfcc;
 	} catch (MelderError) {
 		Melder_throw (me, U": no MFCC created.");
 	}
diff --git a/dwtools/Sound_to_MFCC.h b/dwtools/Sound_to_MFCC.h
index f664be8..016d8d8 100644
--- a/dwtools/Sound_to_MFCC.h
+++ b/dwtools/Sound_to_MFCC.h
@@ -2,21 +2,20 @@
 #define _Sound_to_MFCC_h_
 /* Sound_to_MFCC.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@
 #include "MFCC.h"
 #include "Sound.h"
 
-MFCC Sound_to_MFCC (Sound me, long numberOfCoefficients, double analysisWidth,
+autoMFCC Sound_to_MFCC (Sound me, long numberOfCoefficients, double analysisWidth,
 	double dt, double f1_mel, double fmax_mel, double df_mel);
 
 #endif /* _Sound_to_MFCC_h_ */
diff --git a/dwtools/Sound_to_Pitch2.cpp b/dwtools/Sound_to_Pitch2.cpp
index c790d30..507b7b0 100644
--- a/dwtools/Sound_to_Pitch2.cpp
+++ b/dwtools/Sound_to_Pitch2.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2011 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -70,7 +69,7 @@ static void spec_smoooth_SHS (double a[], long n) {
 	}
 }
 
-Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
+autoPitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
                           double maximumFrequency, double ceiling, long maxnSubharmonics, long maxnCandidates,
                           double compressionFactor, long nPointsPerOctave) {
 	try {
@@ -98,11 +97,10 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 
 		autoSound sound = Sound_resample (me, newSamplingFrequency, 50);
 		long numberOfFrames;
-		Sampled_shortTermAnalysis (sound.peek(), windowDuration, timeStep, &numberOfFrames, &firstTime);
+		Sampled_shortTermAnalysis (sound.get(), windowDuration, timeStep, &numberOfFrames, &firstTime);
 		autoSound frame = Sound_createSimple (1, frameDuration, newSamplingFrequency);
 		autoSound hamming = Sound_createHamming (nx / newSamplingFrequency, newSamplingFrequency);
-		autoPitch thee = Pitch_create (my xmin, my xmax, numberOfFrames, timeStep, firstTime,
-		                               ceiling, maxnCandidates);
+		autoPitch thee = Pitch_create (my xmin, my xmax, numberOfFrames, timeStep, firstTime, ceiling, maxnCandidates);
 		autoNUMvector<double> cc (1, numberOfFrames);
 		autoNUMvector<double> specAmp (1, nfft2);
 		autoNUMvector<double> fl2 (1, nfft2);
@@ -116,8 +114,8 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 		// Compute the absolute value of the globally largest amplitude w.r.t. the global mean.
 
 		double globalMean, globalPeak;
-		Sound_localMean (sound.peek(), sound -> xmin, sound -> xmax, &globalMean);
-		Sound_localPeak (sound.peek(), sound -> xmin, sound -> xmax, globalMean, &globalPeak);
+		Sound_localMean (sound.get(), sound -> xmin, sound -> xmax, &globalMean);
+		Sound_localPeak (sound.get(), sound -> xmin, sound -> xmax, globalMean, &globalPeak);
 
 		/*
 			For the cubic spline interpolation we need the frequencies on an octave
@@ -127,7 +125,7 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 		*/
 
 		for (long i = 2; i <= nfft2; i++) {
-			fl2[i] = NUMlog2 ( (i - 1) * df);
+			fl2[i] = NUMlog2 ((i - 1) * df);
 		}
 		fl2[1] = 2 * fl2[2] - fl2[3];
 
@@ -135,7 +133,7 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 		// the frequency weighting function.
 
 		for (long i = 1; i <= nFrequencyPoints; i++) {
-			arctg[i] = 0.5 + atan (3 * (i - atans) / nPointsPerOctave) / NUMpi;
+			arctg[i] = 0.5 + atan (3.0 * (i - atans) / nPointsPerOctave) / NUMpi;
 		}
 
 		// Perform the analysis on all frames.
@@ -143,23 +141,22 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 		for (long i = 1; i <= numberOfFrames; i++) {
 			Pitch_Frame pitchFrame = &thy frame[i];
 			double hm = 1, f0, pitch_strength, localMean, localPeak;
-			double tmid = Sampled_indexToX (thee.peek(), i); /* The center of this frame */
+			double tmid = Sampled_indexToX (thee.get(), i); /* The center of this frame */
 			long nx_tmp = frame -> nx;
 
 			// Copy a frame from the sound, apply a hamming window. Get local 'intensity'
 
-
 			frame -> nx = nx; /*begin vies */
-			Sound_into_Sound (sound.peek(), frame.peek(), tmid - halfWindow);
-			Sounds_multiply (frame.peek(), hamming.peek());
-			Sound_localMean (sound.peek(), tmid - 3 * halfWindow, tmid + 3 * halfWindow, &localMean);
-			Sound_localPeak (sound.peek(), tmid - halfWindow, tmid + halfWindow, localMean, &localPeak);
+			Sound_into_Sound (sound.get(), frame.get(), tmid - halfWindow);
+			Sounds_multiply (frame.get(), hamming.get());
+			Sound_localMean (sound.get(), tmid - 3 * halfWindow, tmid + 3 * halfWindow, &localMean);
+			Sound_localPeak (sound.get(), tmid - halfWindow, tmid + halfWindow, localMean, &localPeak);
 			pitchFrame -> intensity = localPeak > globalPeak ? 1 : localPeak / globalPeak;
 			frame -> nx = nx_tmp; /* einde vies */
 
 			// Get the Fourier spectrum.
 
-			autoSpectrum spec = Sound_to_Spectrum (frame.peek(), 1);
+			autoSpectrum spec = Sound_to_Spectrum (frame.get(), 1);
 			Melder_assert (spec->nx == nfft2);
 
 			// From complex spectrum to amplitude spectrum.
@@ -245,7 +242,7 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 
 			Pitch_Frame_getPitch (pitchFrame, &f0, &pitch_strength);
 			if (f0 > 0) {
-				cc[i] = Sound_correlateParts (sound.peek(), tmid - 1.0 / f0, tmid, 1.0 / f0);
+				cc[i] = Sound_correlateParts (sound.get(), tmid - 1.0 / f0, tmid, 1.0 / f0);
 			}
 		}
 
@@ -256,20 +253,18 @@ Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 		for (long i = 1; i <= numberOfFrames; i++) {
 			Pitch_Frame_resizeStrengths (& thy frame[i], cc[i], vuvCriterium);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Pitch (shs) created.");
 	}
 }
 
-Pitch Sound_to_Pitch_SPINET (Sound me, double timeStep, double windowDuration,
-                             double minimumFrequencyHz, double maximumFrequencyHz, long nFilters,
-                             double ceiling, int maxnCandidates) {
+autoPitch Sound_to_Pitch_SPINET (Sound me, double timeStep, double windowDuration, double minimumFrequencyHz, double maximumFrequencyHz, long nFilters, double ceiling, int maxnCandidates) {
 	try {
 		autoSPINET him = Sound_to_SPINET (me, timeStep, windowDuration, minimumFrequencyHz,
 		                                  maximumFrequencyHz, nFilters, 0.4, 0.6);
-		autoPitch thee = SPINET_to_Pitch (him.peek(), 0.15, ceiling, maxnCandidates);
-		return thee.transfer();
+		autoPitch thee = SPINET_to_Pitch (him.get(), 0.15, ceiling, maxnCandidates);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Pitch (SPINET) created.");
 	}
diff --git a/dwtools/Sound_to_Pitch2.h b/dwtools/Sound_to_Pitch2.h
index c4d2117..6ed4751 100644
--- a/dwtools/Sound_to_Pitch2.h
+++ b/dwtools/Sound_to_Pitch2.h
@@ -2,21 +2,20 @@
 #define _Sound_to_Pitch2_h_
 /* Sound_to_Pitch2.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,11 +27,11 @@
 #include "Sound_extensions.h"
 #include "Pitch.h"
 
-Pitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
+autoPitch Sound_to_Pitch_shs (Sound me, double timeStep, double minimumPitch,
 	double maximumFrequency, double ceiling, long maxnSubharmonics, long maxnCandidates,
 	double compressionFactor, long nDivisionsPerOctave);
 
-Pitch Sound_to_Pitch_SPINET (Sound me, double timeStep, double windowDuration,
+autoPitch Sound_to_Pitch_SPINET (Sound me, double timeStep, double windowDuration,
 	double minimumFrequencyHz, double maximumFrequencyHz, long nFilters,
 	double ceiling, int maxnCandidates);
 
diff --git a/dwtools/Sound_to_SPINET.cpp b/dwtools/Sound_to_SPINET.cpp
index f38a275..ff2525f 100644
--- a/dwtools/Sound_to_SPINET.cpp
+++ b/dwtools/Sound_to_SPINET.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_SPINET.cpp
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,9 +37,7 @@ static double fgamma (double x, long n) {
 	0 < minimumFrequencyHz < maximumFrequencyHz
 */
 
-SPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
-                        double minimumFrequencyHz, double maximumFrequencyHz, long nFilters,
-                        double excitationErbProportion, double inhibitionErbProportion) {
+autoSPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration, double minimumFrequencyHz, double maximumFrequencyHz, long nFilters, double excitationErbProportion, double inhibitionErbProportion) {
 	try {
 		double firstTime, b = 1.02, samplingFrequency = 1 / my dx;
 
@@ -53,8 +50,7 @@ SPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
 
 		long numberOfFrames;
 		Sampled_shortTermAnalysis (me, windowDuration, timeStep, &numberOfFrames, &firstTime);
-		autoSPINET thee = SPINET_create (my xmin, my xmax, numberOfFrames, timeStep, firstTime,
-		                                 minimumFrequencyHz, maximumFrequencyHz, nFilters, excitationErbProportion, inhibitionErbProportion);
+		autoSPINET thee = SPINET_create (my xmin, my xmax, numberOfFrames, timeStep, firstTime, minimumFrequencyHz, maximumFrequencyHz, nFilters, excitationErbProportion, inhibitionErbProportion);
 		autoSound window = Sound_createGaussian (windowDuration, samplingFrequency);
 		autoSound frame = Sound_createSimple (1, windowDuration, samplingFrequency);
 		autoNUMvector<double> f (1, nFilters);
@@ -77,16 +73,15 @@ SPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
 			double gammaMaxAmplitude = pow ( (thy gamma - 1) / (NUMe * bw[i]), (thy gamma - 1)); // tgammaMax
 			double timeCorrection = tgammaMax - windowDuration / 2;
 
-			autoSound gammaTone = Sound_createGammaTone (0, 0.1, samplingFrequency,
-			                      thy gamma, b, f[i], 0, 0, 0);
-			autoSound filtered = Sounds_convolve (me, gammaTone.peek(), kSounds_convolve_scaling_SUM, kSounds_convolve_signalOutsideTimeDomain_ZERO);
+			autoSound gammaTone = Sound_createGammaTone (0, 0.1, samplingFrequency, thy gamma, b, f[i], 0, 0, 0);
+			autoSound filtered = Sounds_convolve (me, gammaTone.get(), kSounds_convolve_scaling_SUM, kSounds_convolve_signalOutsideTimeDomain_ZERO);
 
 			// To energy measure: weigh with broad-band transfer function
 
 			for (long j = 1; j <= numberOfFrames; j++) {
-				Sound_into_Sound (filtered.peek(), frame.peek(), Sampled_indexToX (thee.peek(), j) + timeCorrection);
-				Sounds_multiply (frame.peek(), window.peek());
-				thy y[i][j] = Sound_power (frame.peek()) * bb / gammaMaxAmplitude;
+				Sound_into_Sound (filtered.get(), frame.get(), Sampled_indexToX (thee.get(), j) + timeCorrection);
+				Sounds_multiply (frame.get(), window.get());
+				thy y[i][j] = Sound_power (frame.get()) * bb / gammaMaxAmplitude;
 			}
 			Melder_progress ( (double) i / nFilters, U"SPINET: filter ", i, U" from ", nFilters, U".");
 		}
@@ -114,7 +109,7 @@ SPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
 				}
 				thy s[i][j] = a > 0 ? a : 0;
 			}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U":  no SPINET created.");
 	}
diff --git a/dwtools/Sound_to_SPINET.h b/dwtools/Sound_to_SPINET.h
index 0e8bca4..d768a4c 100644
--- a/dwtools/Sound_to_SPINET.h
+++ b/dwtools/Sound_to_SPINET.h
@@ -2,21 +2,20 @@
 #define _Sound_to_SPINET_h_
 /* Sound_to_SPINET.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@
 #include "SPINET.h"
 #include "Sound_extensions.h"
 
-SPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
+autoSPINET Sound_to_SPINET (Sound me, double timeStep, double windowDuration,
 	double minimumFrequencyHz, double maximumFrequencyHz, long nFilters,
 	double excitationErbProportion, double inhibitionErbProportion);
 
diff --git a/dwtools/Sounds_to_DTW.cpp b/dwtools/Sounds_to_DTW.cpp
index 5f10a73..3afeb30 100644
--- a/dwtools/Sounds_to_DTW.cpp
+++ b/dwtools/Sounds_to_DTW.cpp
@@ -1,20 +1,19 @@
 /* Sounds_to_DTW.cpp
  *
- * Copyright (C) 2012 David Weenink
+ * Copyright (C) 2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,17 +24,17 @@
 #include "Sounds_to_DTW.h"
 #include "CCs_to_DTW.h"
 
-DTW Sounds_to_DTW (Sound me, Sound thee, double analysisWidth, double dt, double band, int slope) {
+autoDTW Sounds_to_DTW (Sound me, Sound thee, double analysisWidth, double dt, double band, int slope) {
 	try {
         long numberOfCoefficients = 12;
         double fmin_mel = 100, df_mel = 100, fmax_mel = 0.0;
 		autoMFCC mfcc_me = Sound_to_MFCC (me, numberOfCoefficients, analysisWidth, dt, fmin_mel, fmax_mel, df_mel);
 		autoMFCC mfcc_thee = Sound_to_MFCC (thee, numberOfCoefficients, analysisWidth, dt, fmin_mel, fmax_mel, df_mel);
         double wc = 1, wle = 0, wr = 0, wer = 0, dtr = 0;
-        autoDTW him = CCs_to_DTW (mfcc_me.peek(), mfcc_thee.peek(), wc, wle, wr, wer, dtr);
-        autoPolygon p = DTW_to_Polygon (him.peek(), band, slope);
-        DTW_and_Polygon_findPathInside (him.peek(), p.peek(), slope, 0);
-		return him.transfer();
+        autoDTW him = CCs_to_DTW (mfcc_me.get(), mfcc_thee.get(), wc, wle, wr, wer, dtr);
+        autoPolygon p = DTW_to_Polygon (him.get(), band, slope);
+        DTW_and_Polygon_findPathInside (him.get(), p.get(), slope, 0);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no DTW created.");
 	}
diff --git a/dwtools/Sounds_to_DTW.h b/dwtools/Sounds_to_DTW.h
index c3ae5af..f3150e7 100644
--- a/dwtools/Sounds_to_DTW.h
+++ b/dwtools/Sounds_to_DTW.h
@@ -2,21 +2,20 @@
 #define _Sounds_to_DTW_h_
 /* Sounds_to_DTW.h
  *
- * Copyright (C) 2012, 2014 David Weenink
+ * Copyright (C) 2012, 2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,6 +26,6 @@
 #include "Sound.h"
 
 
-DTW Sounds_to_DTW (Sound me, Sound thee, double analysisWidth, double dt, double band, int slope);
+autoDTW Sounds_to_DTW (Sound me, Sound thee, double analysisWidth, double dt, double band, int slope);
 
 #endif /* _Sounds_to_DTW_h_ */
diff --git a/dwtools/Spectrogram_extensions.cpp b/dwtools/Spectrogram_extensions.cpp
index 4b0860e..7f11874 100644
--- a/dwtools/Spectrogram_extensions.cpp
+++ b/dwtools/Spectrogram_extensions.cpp
@@ -1,20 +1,19 @@
 /* Spectrogram_extensions.cpp
  *
- * Copyright (C) 2014 David Weenink
+ * Copyright (C) 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,7 +28,7 @@
 Thing_implement (BandFilterSpectrogram, Matrix, 2);
 
 void structBandFilterSpectrogram :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -79,7 +78,7 @@ Thing_implement (BarkSpectrogram, BandFilterSpectrogram, 1);
 
 // dbs = scaleFactor * log10 (value/reference);
 // if (dbs < floor_db) { dbs = floor_dB }
-Matrix Spectrogram_to_Matrix_dB (Spectrogram me, double reference, double scaleFactor, double floor_dB) {
+autoMatrix Spectrogram_to_Matrix_dB (Spectrogram me, double reference, double scaleFactor, double floor_dB) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		for (long i = 1; i <= my ny; i++) {
@@ -96,7 +95,7 @@ Matrix Spectrogram_to_Matrix_dB (Spectrogram me, double reference, double scaleF
 				thy z[i][j] = val;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix with dB values not created.");
 	}
@@ -147,7 +146,7 @@ void BandFilterSpectrogram_into_CC (BandFilterSpectrogram me, CC thee, long numb
 	autoNUMvector<double> y (1, my ny);
 	numberOfCoefficients = numberOfCoefficients > my ny - 1 ? my ny - 1 : numberOfCoefficients;
 	Melder_assert (numberOfCoefficients > 0);
-	// 20130220 new interpretation of maximumNumberOfCoefficients necessary for inverse transform 
+	// 20130220 new interpretation of maximumNumberOfCoefficients: necessary for the inverse transform 
 	for (long frame = 1; frame <= my nx; frame++) {
 		CC_Frame ccframe = (CC_Frame) & thy frame[frame];
 		for (long i = 1; i <= my ny; i++) {
@@ -183,7 +182,7 @@ void CC_into_BandFilterSpectrogram (CC me, BandFilterSpectrogram thee, long firs
 	}
 }
 
-MelSpectrogram MFCC_to_MelSpectrogram (MFCC me, long first, long last, bool c0) {
+autoMelSpectrogram MFCC_to_MelSpectrogram (MFCC me, long first, long last, bool c0) {
 	try {
 		if (first == 0 && last == 0) { // defaults
 			first = 1; last = my maximumNumberOfCoefficients;
@@ -199,14 +198,14 @@ MelSpectrogram MFCC_to_MelSpectrogram (MFCC me, long first, long last, bool c0)
 		}
 		double df = (my fmax - my fmin) / (my maximumNumberOfCoefficients + 1 + 1);
 		autoMelSpectrogram thee = MelSpectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my fmin, my fmax, my maximumNumberOfCoefficients + 1, df, df);
-		CC_into_BandFilterSpectrogram (me, thee.peek(), first, last, c0);
-		return thee.transfer();
+		CC_into_BandFilterSpectrogram (me, thee.get(), first, last, c0);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"MelSpectrogram not created.");
 	}
 }
 
-MFCC MelSpectrogram_to_MFCC (MelSpectrogram me, long numberOfCoefficients) {
+autoMFCC MelSpectrogram_to_MFCC (MelSpectrogram me, long numberOfCoefficients) {
 	try {
 		if (numberOfCoefficients <= 0) {
 			numberOfCoefficients = my ny - 1;
@@ -214,18 +213,18 @@ MFCC MelSpectrogram_to_MFCC (MelSpectrogram me, long numberOfCoefficients) {
 		numberOfCoefficients = numberOfCoefficients > my ny - 1 ? my ny - 1 : numberOfCoefficients;
 		// 20130220 new interpretation of maximumNumberOfCoefficients necessary for inverse transform 
 		autoMFCC thee = MFCC_create (my xmin, my xmax, my nx, my dx, my x1, my ny - 1, my ymin, my ymax);
-		BandFilterSpectrogram_into_CC (me, thee.peek(), numberOfCoefficients);
-		return thee.transfer();
+		BandFilterSpectrogram_into_CC (me, thee.get(), numberOfCoefficients);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": MFCC not created.");
 	}
 }
 
-BarkSpectrogram BarkSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
+autoBarkSpectrogram BarkSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoBarkSpectrogram me = Thing_new (BarkSpectrogram);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"BarkSpectrogram not created.");
 	}
@@ -274,10 +273,10 @@ void BandFilterSpectrogram_drawFrequencyScale (BandFilterSpectrogram me, Graphic
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Frequency (Hz)");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Frequency (Hz)");
 	}
 }
 
@@ -293,7 +292,7 @@ void BandFilterSpectrogram_paintImage (BandFilterSpectrogram me, Graphics g, dou
 	(void) Matrix_getWindowSamplesY (me, ymin - 0.49999 * my dy, ymax + 0.49999 * my dy, &iymin, &iymax);
 	autoMatrix thee = Spectrogram_to_Matrix_dB ((Spectrogram) me, 4e-10, 10, -100);
 	if (maximum <= minimum) {
-		(void) Matrix_getWindowExtrema (thee.peek(), ixmin, ixmax, iymin, iymax, &minimum, &maximum);
+		(void) Matrix_getWindowExtrema (thee.get(), ixmin, ixmax, iymin, iymax, &minimum, &maximum);
 	}
 	if (maximum <= minimum) { 
 		minimum -= 1.0; maximum += 1.0;
@@ -304,17 +303,17 @@ void BandFilterSpectrogram_paintImage (BandFilterSpectrogram me, Graphics g, dou
 	Graphics_setInner (g);
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 	Graphics_image (g, thy z,
-			ixmin, ixmax, Sampled_indexToX   (thee.peek(), ixmin - 0.5), Sampled_indexToX   (thee.peek(), ixmax + 0.5),
-			iymin, iymax, SampledXY_indexToY (thee.peek(), iymin - 0.5), SampledXY_indexToY (thee.peek(), iymax + 0.5),
+			ixmin, ixmax, Sampled_indexToX   (thee.get(), ixmin - 0.5), Sampled_indexToX   (thee.get(), ixmax + 0.5),
+			iymin, iymax, SampledXY_indexToY (thee.get(), iymin - 0.5), SampledXY_indexToY (thee.get(), iymax + 0.5),
 			minimum, maximum);
 
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textBottom (g, 1, U"Time (s)");
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textBottom (g, true, U"Time (s)");
 	}
 }
 
@@ -367,10 +366,10 @@ void BandFilterSpectrogram_drawSpectrumAtNearestTimeSlice (BandFilterSpectrogram
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Power (dB)");
-		Graphics_textBottom (g, 1, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Power (dB)");
+		Graphics_textBottom (g, true, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
 	}
 }
 
@@ -385,8 +384,8 @@ void BarkSpectrogram_drawSekeyHansonFilterFunctions (BarkSpectrogram me, Graphic
 		zmin = my v_hertzToFrequency (xmin); zmax = my v_hertzToFrequency (xmax);
 	}
 	if (ymin >= ymax) {
-		ymin = yscale_dB ? -60 : 0;
-		ymax = yscale_dB ? 0 : 1;
+		ymin = yscale_dB ? -60 : 0.0;
+		ymax = yscale_dB ? 0.0 : 1.0;
 	}
 	fromFilter = fromFilter <= 0 ? 1 : fromFilter;
 	toFilter = toFilter <= 0 || toFilter > my ny ? my ny : toFilter;
@@ -409,8 +408,8 @@ void BarkSpectrogram_drawSekeyHansonFilterFunctions (BarkSpectrogram me, Graphic
 		double zMid = Matrix_rowToY (me, ifilter);
 		for (long iz = 1; iz <= n; iz++) {
 			double z = xz[iz] - (zMid - 0.215);
-			double amp = 7 - 7.5 * z - 17.5 * sqrt (0.196 + z * z);
-			y[iz] = yscale_dB ? amp : pow (10, amp / 10);
+			double amp = 7.0 - 7.5 * z - 17.5 * sqrt (0.196 + z * z);
+			y[iz] = yscale_dB ? amp : pow (10.0, amp / 10.0);
 		}
 		// the drawing
 		double x1 = xIsHertz ? xhz[1] : xz[1], y1 = y[1];
@@ -428,37 +427,35 @@ void BarkSpectrogram_drawSekeyHansonFilterFunctions (BarkSpectrogram me, Graphic
 	Graphics_unsetInner (g);
 
 	if (garnish) {
-		double distance = yscale_dB ? 10 : 0.5;
+		double distance = yscale_dB ? 10.0 : 0.5;
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
-		Graphics_textLeft (g, 1, yscale_dB ? U"Amplitude (dB)" : U"Amplitude");
-		Graphics_textBottom (g, 1, Melder_cat (U"Frequency (", xIsHertz ? U"Hz" : my v_getFrequencyUnit (), U")"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, distance, true, true, false);
+		Graphics_textLeft (g, true, yscale_dB ? U"Amplitude (dB)" : U"Amplitude");
+		Graphics_textBottom (g, true, Melder_cat (U"Frequency (", xIsHertz ? U"Hz" : my v_getFrequencyUnit (), U")"));
 	}
 }
 
 Thing_implement (MelSpectrogram, BandFilterSpectrogram, 2);
 
-MelSpectrogram MelSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
+autoMelSpectrogram MelSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1) {
 	try {
 		autoMelSpectrogram me = Thing_new (MelSpectrogram);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"MelSpectrogram not created.");
 	}
 }
 
-void BandFilterSpectrogram_drawTimeSlice (I, Graphics g, double t, double fmin,
-                               double fmax, double min, double max, const char32 *xlabel, int garnish) {
-	iam (Matrix);
+void BandFilterSpectrogram_drawTimeSlice (BandFilterSpectrogram me, Graphics g, double t, double fmin, double fmax, double min, double max, const char32 *xlabel, int garnish) {
 	Matrix_drawSliceY (me, g, t, fmin, fmax, min, max);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (xlabel) {
-			Graphics_textBottom (g, 0, xlabel);
+			Graphics_textBottom (g, false, xlabel);
 		}
 	}
 }
@@ -475,8 +472,8 @@ void MelSpectrogram_drawTriangularFilterFunctions (MelSpectrogram me, Graphics g
 	}
 
 	if (ymin >= ymax) {
-		ymin = yscale_dB ? -60 : 0;
-		ymax = yscale_dB ? 0 : 1;
+		ymin = yscale_dB ? -60.0 : 0.0;
+		ymax = yscale_dB ? 0.0 : 1.0;
 	}
 	fromFilter = fromFilter <= 0 ? 1 : fromFilter;
 	toFilter = toFilter <= 0 || toFilter > my ny ? my ny : toFilter;
@@ -504,7 +501,7 @@ void MelSpectrogram_drawTriangularFilterFunctions (MelSpectrogram me, Graphics g
 			for (long iz = 1; iz <= n; iz++) {
 				double z = xz[iz];
 				double amp = NUMtriangularfilter_amplitude (zl, zc, zh, z);
-				y[iz] = yscale_dB ? (amp > 0 ? 20 * log10 (amp) : ymin - 10) : amp;
+				y[iz] = yscale_dB ? (amp > 0.0 ? 20.0 * log10 (amp) : ymin - 10.0) : amp;
 			}
 			double x1 = xIsHertz ? xhz[1] : xz[1], y1 = y[1];
 			if (NUMdefined (y1)) {
@@ -535,14 +532,14 @@ void MelSpectrogram_drawTriangularFilterFunctions (MelSpectrogram me, Graphics g
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, yscale_dB ? 10 : 0.5, 1, 1, 0);
-		Graphics_textLeft (g, 1, yscale_dB ? U"Amplitude (dB)" : U"Amplitude");
-		Graphics_textBottom (g, 1, Melder_cat (U"Frequency (", ( xIsHertz ? U"Hz" : my v_getFrequencyUnit () ), U")"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, yscale_dB ? 10.0 : 0.5, true, true, false);
+		Graphics_textLeft (g, true, yscale_dB ? U"Amplitude (dB)" : U"Amplitude");
+		Graphics_textBottom (g, true, Melder_cat (U"Frequency (", ( xIsHertz ? U"Hz" : my v_getFrequencyUnit () ), U")"));
 	}
 }
 
-Matrix BandFilterSpectrogram_to_Matrix (BandFilterSpectrogram me, int to_dB) {
+autoMatrix BandFilterSpectrogram_to_Matrix (BandFilterSpectrogram me, int to_dB) {
 	try {
 		int units = to_dB ? 1 : 0;
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
@@ -551,34 +548,34 @@ Matrix BandFilterSpectrogram_to_Matrix (BandFilterSpectrogram me, int to_dB) {
 				thy z[i][j] = my v_getValueAtSample (j, i, units);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-BarkSpectrogram Matrix_to_BarkSpectrogram (Matrix me) {
+autoBarkSpectrogram Matrix_to_BarkSpectrogram (Matrix me) {
 	try {
 		autoBarkSpectrogram thee = BarkSpectrogram_create (my xmin, my xmax, my nx, my dx, my x1,
 			my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to BarkSpectrogram.");
 	}
 }
 
-MelSpectrogram Matrix_to_MelSpectrogram (Matrix me) {
+autoMelSpectrogram Matrix_to_MelSpectrogram (Matrix me) {
 	try {
 		autoMelSpectrogram thee = MelSpectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to MelSpectrogram.");
 	}
 }
 
-Intensity BandFilterSpectrogram_to_Intensity (BandFilterSpectrogram me) {
+autoIntensity BandFilterSpectrogram_to_Intensity (BandFilterSpectrogram me) {
 	try {
 		autoIntensity thee = Intensity_create (my xmin, my xmax, my nx, my dx, my x1);
 		for (long j = 1; j <= my nx; j++) {
@@ -588,7 +585,7 @@ Intensity BandFilterSpectrogram_to_Intensity (BandFilterSpectrogram me) {
 			}
 			thy z[1][j] = BandFilterSpectrogram_DBFAC * log10 (p / BandFilterSpectrogram_DBREF);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Intensity not created.");
 	}
@@ -608,22 +605,21 @@ void BandFilterSpectrogram_equalizeIntensities (BandFilterSpectrogram me, double
 	}
 }
 
-void BandFilterSpectrogram_and_PCA_drawComponent (BandFilterSpectrogram me, PCA thee, Graphics g, long component, double dblevel,
-                                       double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) {
+void BandFilterSpectrogram_and_PCA_drawComponent (BandFilterSpectrogram me, PCA thee, Graphics g, long component, double dblevel, double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) {
 	if (component < 1 || component > thy numberOfEigenvalues) {
 		Melder_throw (U"Component too large.");
 	}
 
 	// Scale Intensity
 
-	autoBandFilterSpectrogram fcopy = (BandFilterSpectrogram) Data_copy (me);
-	BandFilterSpectrogram_equalizeIntensities (fcopy.peek(), dblevel);
-	autoMatrix mdb = Spectrogram_to_Matrix_dB ((Spectrogram) fcopy.peek(), BandFilterSpectrogram_DBREF, BandFilterSpectrogram_DBFAC, BandFilterSpectrogram_DBFLOOR);
-	autoMatrix him = Eigen_and_Matrix_project (thee, mdb.peek(), component);
+	autoBandFilterSpectrogram fcopy = Data_copy (me);
+	BandFilterSpectrogram_equalizeIntensities (fcopy.get(), dblevel);
+	autoMatrix mdb = Spectrogram_to_Matrix_dB ((Spectrogram) fcopy.get(), BandFilterSpectrogram_DBREF, BandFilterSpectrogram_DBFAC, BandFilterSpectrogram_DBFLOOR);
+	autoMatrix him = Eigen_and_Matrix_to_Matrix_projectColumns (thee, mdb.get(), component);
 	for (long j = 1; j <= my nx; j++) {
 		his z[component][j] = frequencyOffset + scale * his z[component][j];
 	}
-	Matrix_drawRows (him.peek(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax);
+	Matrix_drawRows (him.get(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax);
 }
 
 /*
diff --git a/dwtools/Spectrogram_extensions.h b/dwtools/Spectrogram_extensions.h
index 20f4556..b4195a5 100644
--- a/dwtools/Spectrogram_extensions.h
+++ b/dwtools/Spectrogram_extensions.h
@@ -2,21 +2,20 @@
 #define _Spectrogram_extensions_h_
 /* Spectrogram_extensions.h
  *
- * Copyright (C) 2014 David Weenink
+ * Copyright (C) 2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -93,14 +92,13 @@ double BandFilterSpectrogram_getFrequencyInHertz (BandFilterSpectrogram me, doub
 
 void BandFilterSpectrogram_equalizeIntensities (BandFilterSpectrogram me, double intensity_db);
 
-Matrix BandFilterSpectrogram_to_Matrix (BandFilterSpectrogram me, int to_dB);
+autoMatrix BandFilterSpectrogram_to_Matrix (BandFilterSpectrogram me, int to_dB);
 
-Intensity BandFilterSpectrogram_to_Intensity (BandFilterSpectrogram me);
+autoIntensity BandFilterSpectrogram_to_Intensity (BandFilterSpectrogram me);
 
 void BandFilterSpectrogram_drawFrequencyScale (BandFilterSpectrogram me, Graphics g, double xmin, double xmax, double ymin, double ymax, int garnish);
 
-void BandFilterSpectrogram_drawTimeSlice (I, Graphics g, double t, double fmin,
-                               double fmax, double min, double max, const char32 *xlabel, int garnish);
+void BandFilterSpectrogram_drawTimeSlice (BandFilterSpectrogram me, Graphics g, double t, double fmin, double fmax, double min, double max, const char32 *xlabel, int garnish);
 
 void BarkSpectrogram_drawSekeyHansonFilterFunctions (BarkSpectrogram me, Graphics g, bool xIsHertz, int fromFilter, int toFilter, double zmin, double zmax, bool yscale_dB, double ymin, double ymax, int garnish);
 
@@ -108,10 +106,9 @@ void BandFilterSpectrogram_drawSpectrumAtNearestTimeSlice (BandFilterSpectrogram
 
 void BandFilterSpectrogram_paintImage (BandFilterSpectrogram me, Graphics g, double xmin, double xmax, double ymin, double ymax, double minimum, double maximum, int garnish);
 
-BarkSpectrogram BarkSpectrogram_create (double tmin, double tmax, long nt, double dt,
-	double t1, double fmin, double fmax, long nf, double df, double f1);
+autoBarkSpectrogram BarkSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1);
 
-BarkSpectrogram Matrix_to_BarkSpectrogram (Matrix me);
+autoBarkSpectrogram Matrix_to_BarkSpectrogram (Matrix me);
 
 /*
 Interpretation:
@@ -122,20 +119,20 @@ Interpretation:
     ny the number of filters.
  */
 
-MelSpectrogram MelSpectrogram_create (double tmin, double tmax, long nt, double dt,
-	double t1, double fmin, double fmax, long nf, double df, double f1);
+autoMelSpectrogram MelSpectrogram_create (double tmin, double tmax, long nt, double dt, double t1, double fmin, double fmax, long nf, double df, double f1);
 
-MelSpectrogram Matrix_to_MelSpectrogram (Matrix me);
+autoMelSpectrogram Matrix_to_MelSpectrogram (Matrix me);
 
 void MelSpectrogram_drawTriangularFilterFunctions (MelSpectrogram me, Graphics g, bool xIsHertz, int fromFilter, int toFilter, double zmin, double zmax, bool yscale_dB, double ymin, double ymax, int garnish);
 
-MFCC MelSpectrogram_to_MFCC (MelSpectrogram me, long numberOfCoefficients);
-MelSpectrogram MFCC_to_MelSpectrogram (MFCC me, long first, long last, bool c0);
+autoMFCC MelSpectrogram_to_MFCC (MelSpectrogram me, long numberOfCoefficients);
+
+autoMelSpectrogram MFCC_to_MelSpectrogram (MFCC me, long first, long last, bool c0);
 
 void BandFilterSpectrogram_and_PCA_drawComponent (BandFilterSpectrogram me, PCA thee, Graphics g, long component, double dblevel,
 	double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax);
 
-Matrix Spectrogram_to_Matrix_dB (Spectrogram me, double reference, double scaleFactor, double floor_dB);
+autoMatrix Spectrogram_to_Matrix_dB (Spectrogram me, double reference, double scaleFactor, double floor_dB);
 // dbs = scaleFactor * log10 (value/reference);
 // if (dbs < floor_db) { dbs = floor_dB }
 
diff --git a/dwtools/Spectrum_extensions.cpp b/dwtools/Spectrum_extensions.cpp
index 4d8b650..60b74f7 100644
--- a/dwtools/Spectrum_extensions.cpp
+++ b/dwtools/Spectrum_extensions.cpp
@@ -1,20 +1,19 @@
 /* Spectrum_extensions.cpp
  *
- * Copyright (C) 1993-2013 David Weenink
+ * Copyright (C) 1993-2013, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -59,8 +58,7 @@ struct tribolet_struct {
 	spectrum of x.
 	Reference: Bonzanigo (1978), IEEE Trans. ASSP, Vol. 26.
 */
-static void getSpectralValues (struct tribolet_struct *tbs, double freq_rad,
-                               double *xr, double *xi, double *nxr, double *nxi) {
+static void getSpectralValues (struct tribolet_struct *tbs, double freq_rad, double *xr, double *xi, double *nxr, double *nxi) {
 	double cosf = cos (freq_rad), sinf = sin (freq_rad);
 	double a = 2 * cosf, b, u1 = 0, u2 = u1, w1 = u1, w2 = u1;
 	double *x = tbs -> x;
@@ -76,9 +74,7 @@ static void getSpectralValues (struct tribolet_struct *tbs, double freq_rad,
 		w1 = w0;
 	}
 
-	/*
-		Bonzanigo's phase correction
-	*/
+	// Bonzanigo's phase correction
 
 	a = freq_rad * (nx - 1);
 	u1 =   cos (a);
@@ -96,10 +92,8 @@ static void getSpectralValues (struct tribolet_struct *tbs, double freq_rad,
 	tbs -> count ++;
 }
 
-/*
-	Find the closest unwrapped phase estimate from the two admissible
-	phase values (a1 & a2).
-*/
+// Find the closest unwrapped phase estimate from the two admissible phase values (a1 & a2).
+
 static int phase_check (double pv, double *phase, double thlcon) {
 	double a0 = (*phase - pv) / NUM2pi;
 	long k = (long) floor (a0);   // ppgb: instead of truncation toward zero
@@ -115,12 +109,9 @@ static int phase_check (double pv, double *phase, double thlcon) {
 	return 1;
 }
 
-/*
-	Phase unwrapping based on Tribolet's adaptive integration method.
-	the unwrapped phase estimate is returned.
-*/
-static double phase_unwrap (struct tribolet_struct *tbs, double pfreq,
-                            double ppv, double pdvt, double *pphase, double *ppdvt) {
+// Phase unwrapping based on Tribolet's adaptive integration method.
+// the unwrapped phase estimate is returned.
+static double phase_unwrap (struct tribolet_struct *tbs, double pfreq, double ppv, double pdvt, double *pphase, double *ppdvt) {
 	double sdvt[25], sppv[25];
 	double freq, phase = 0, phase_inc;
 	double delta, xr, xi, xmsq, nxr, nxi;
@@ -140,7 +131,7 @@ p20:
 		pi in the phase.
 	*/
 
-	if ( (sindex[sp] - pindex) <= 1) {
+	if ((sindex[sp] - pindex) <= 1) {
 		return phase;
 	}
 
@@ -184,9 +175,7 @@ p40:
 		return phase;
 	}
 
-	/*
-		p10: Update previous estimate.
-	*/
+	// p10: Update previous estimate.
 
 	pindex = sindex[sp];
 	*pphase = phase;
@@ -195,7 +184,7 @@ p40:
 	goto p40;
 }
 
-Matrix Spectrum_unwrap (Spectrum me) {
+autoMatrix Spectrum_unwrap (Spectrum me) {
 	try {
 		struct tribolet_struct tbs;
 		int remove_linear_part = 1;
@@ -211,12 +200,12 @@ Matrix Spectrum_unwrap (Spectrum me) {
 		}
 
 		autoSound x = Spectrum_to_Sound (me);
-		autoSound nx = Data_copy (x.peek());
+		autoSound nx = Data_copy (x.get());
 
 		for (long i = 1; i <= x -> nx; i++) {
 			nx -> z[1][i] *= (i - 1);
 		}
-		autoSpectrum snx = Sound_to_Spectrum (nx.peek(), 1);
+		autoSpectrum snx = Sound_to_Spectrum (nx.get(), 1);
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1, 2, 2, 1, 1);
 
 		// Common variables.
@@ -271,36 +260,34 @@ Matrix Spectrum_unwrap (Spectrum me) {
 		}
 		Melder_information (U"Number of spectral values: ", tbs.count);
 		Melder_information (U" iphase = ", iphase);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not unwrapped.");
 	}
 }
 
-void Spectrum_drawPhases (Spectrum me, Graphics g, double fmin, double fmax,
-                          double phase_min, double phase_max, int unwrap, int garnish) {
-	autoMatrix thee = 0;
+void Spectrum_drawPhases (Spectrum me, Graphics g, double fmin, double fmax, double phase_min, double phase_max, int unwrap, int garnish) {
+	autoMatrix thee;
 	int reverse_sign = my z[1][1] < 0;
 
 	if (unwrap) {
-		thee.reset (Spectrum_unwrap (me));
+		thee = Spectrum_unwrap (me);
 	} else {
-		thee.reset (Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1, 2, 2, 1, 1));
+		thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1.0, 2.0, 2, 1.0, 1.0);
 		for (long i = 1; i <= my nx; i ++) {
 			thy z[2][i] = PPVPHA (my z[1][i], my z[2][i], reverse_sign);
 		}
 	}
 
-	Matrix_drawRows (thee.peek(), g, fmin, fmax, 1.9, 2.1, phase_min, phase_max);
+	Matrix_drawRows (thee.get(), g, fmin, fmax, 1.9, 2.1, phase_min, phase_max);
 	if (garnish) {
 
 	}
 }
 
-Spectrum Spectra_multiply (Spectrum me, Spectrum thee) {
+autoSpectrum Spectra_multiply (Spectrum me, Spectrum thee) {
 	try {
-		if (my nx != thy nx || my x1 != thy x1 || my xmax != thy xmax ||
-		        my dx != thy dx) {
+		if (my nx != thy nx || my x1 != thy x1 || my xmax != thy xmax || my dx != thy dx) {
 			Melder_throw (U"Dimensions of both spectra do not conform.");
 		}
 		autoSpectrum him = Data_copy (me);
@@ -309,7 +296,7 @@ Spectrum Spectra_multiply (Spectrum me, Spectrum thee) {
 			his z[1][i] = my z[1][i] * thy z[1][i] - my z[2][i] * thy z[2][i];
 			his z[2][i] = my z[1][i] * thy z[2][i] + my z[2][i] * thy z[1][i];
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not multiplied.");
 	}
@@ -321,20 +308,21 @@ void Spectrum_conjugate (Spectrum me) {
 	}
 }
 
-Spectrum Spectrum_resample (Spectrum me, long numberOfFrequencies) {
+autoSpectrum Spectrum_resample (Spectrum me, long numberOfFrequencies) {
 	try {
 		double newSamplingFrequency = (1 / my dx) * numberOfFrequencies / my nx;
 		// resample real and imaginary part !
 		autoSound thee = Sound_resample ((Sound) me, newSamplingFrequency, 50);
 		autoSpectrum him = Spectrum_create (my xmax, numberOfFrequencies);
 		NUMmatrix_copyElements<double> (thy z, his z, 1, 2, 1, numberOfFrequencies);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not resampled.");
 	}
 }
 
-static Spectrum Spectrum_shiftFrequencies2 (Spectrum me, double shiftBy, bool changeMaximumFrequency) {
+#if 0
+static autoSpectrum Spectrum_shiftFrequencies2 (Spectrum me, double shiftBy, bool changeMaximumFrequency) {
 	try {
 		double xmax = my xmax;
 		long numberOfFrequencies = my nx, interpolationDepth = 50;
@@ -353,13 +341,14 @@ static Spectrum Spectrum_shiftFrequencies2 (Spectrum me, double shiftBy, bool ch
 				thy z[2][i] = NUM_interpolate_sinc (my z[2], my nx, index, interpolationDepth);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not shifted.");
 	}
 }
+#endif
 
-Spectrum Spectrum_shiftFrequencies (Spectrum me, double shiftBy, double newMaximumFrequency, long interpolationDepth) {
+autoSpectrum Spectrum_shiftFrequencies (Spectrum me, double shiftBy, double newMaximumFrequency, long interpolationDepth) {
 	try {
 		double xmax = my xmax;
 		long numberOfFrequencies = my nx;
@@ -384,13 +373,13 @@ Spectrum Spectrum_shiftFrequencies (Spectrum me, double shiftBy, double newMaxim
 		thy z[1][1] = amp; thy z[2][1] = 0;
 		amp = sqrt (thy z[1][thy nx] * thy z[1][thy nx] + thy z[2][thy nx] * thy z[2][thy nx]);
 		thy z[1][thy nx] = amp; thy z[2][thy nx] = 0;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not shifted.");
 	}
 }
 
-Spectrum Spectrum_compressFrequencyDomain (Spectrum me, double fmax, long interpolationDepth, int freqscale, int method) {
+autoSpectrum Spectrum_compressFrequencyDomain (Spectrum me, double fmax, long interpolationDepth, int freqscale, int method) {
 	try {
 		double fdomain = my xmax - my xmin, factor = fdomain / fmax ;
 		//long numberOfFrequencies = 1.0 + fmax / my dx; // keep dx the same, otherwise the "duration" changes
@@ -414,12 +403,13 @@ Spectrum Spectrum_compressFrequencyDomain (Spectrum me, double fmax, long interp
 			}
 			thy z[1][i] = x; thy z[2][i] = y;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not compressed.");
 	}
 }
 
+#if 0
 static void Spectrum_fitTiltLine (Spectrum me, double fmin, double fmax, bool logf, double bandwidth, double *a, double *intercept, int method) {
 	(void) me; (void) fmin; (void) fmax; (void) logf; (void) bandwidth; (void) a; (void) intercept; (void) method;
 	try {
@@ -427,5 +417,6 @@ static void Spectrum_fitTiltLine (Spectrum me, double fmin, double fmax, bool lo
 		Melder_throw (U"Tilt line not fitted.");
 	}
 }
+#endif
 
 /* End of file Spectrum_extensions.cpp */
diff --git a/dwtools/Spectrum_extensions.h b/dwtools/Spectrum_extensions.h
index 54847b4..9705c19 100644
--- a/dwtools/Spectrum_extensions.h
+++ b/dwtools/Spectrum_extensions.h
@@ -2,21 +2,20 @@
 #define _Spectrum_extensions_h_
 /* Spectrum_extensions.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -29,13 +28,14 @@
 #include "Sound.h"
 #include "Graphics.h"
 
-Spectrum Spectrum_resample (Spectrum me, long numberOfFrequencies);
+autoSpectrum Spectrum_resample (Spectrum me, long numberOfFrequencies);
 
-Spectrum Spectrum_compressFrequencyDomain (Spectrum me, double fmax, long interpolationDepth, int freqscale, int method);
-Spectrum Spectrum_shiftFrequencies (Spectrum me, double shiftBy, double newMaximumFrequency, long interpolationDepth);
+autoSpectrum Spectrum_compressFrequencyDomain (Spectrum me, double fmax, long interpolationDepth, int freqscale, int method);
+
+autoSpectrum Spectrum_shiftFrequencies (Spectrum me, double shiftBy, double newMaximumFrequency, long interpolationDepth);
 // Shift will be plusminus dx/2
 
-Matrix Spectrum_unwrap (Spectrum me);
+autoMatrix Spectrum_unwrap (Spectrum me);
 /*
 	Unwrap the phases of the spectrum according to an algorithm by
 	Tribolet as published in:
@@ -52,7 +52,8 @@ Matrix Spectrum_unwrap (Spectrum me);
 void Spectrum_drawPhases (Spectrum me, Graphics g, double fmin, double fmax,
 	double phase_min, double phase_max, int unwrap, int garnish);
 
-Spectrum Spectra_multiply (Spectrum me, Spectrum thee);
+autoSpectrum Spectra_multiply (Spectrum me, Spectrum thee);
+
 void Spectrum_conjugate (Spectrum me);
 
 #endif /* _Spectrum_extensions_h_ */
diff --git a/dwtools/SpeechSynthesizer.cpp b/dwtools/SpeechSynthesizer.cpp
index 3ae4d4b..2d0c48b 100644
--- a/dwtools/SpeechSynthesizer.cpp
+++ b/dwtools/SpeechSynthesizer.cpp
@@ -1,20 +1,19 @@
 /* SpeechSynthesizer.cpp
  *
-//  * Copyright (C) 2011-2013 David Weenink
+//  * Copyright (C) 2011-2013, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -50,9 +49,9 @@
 extern structMelderDir praatDir;
 extern int option_phoneme_events;
 
-Thing_implement (SpeechSynthesizerVoice, Data, 0);
+Thing_implement (SpeechSynthesizerVoice, Daata, 0);
 
-SpeechSynthesizerVoice SpeechSynthesizerVoice_create (long numberOfFormants) {
+autoSpeechSynthesizerVoice SpeechSynthesizerVoice_create (long numberOfFormants) {
 	try {
 		autoSpeechSynthesizerVoice me = Thing_new (SpeechSynthesizerVoice);
 		my d_numberOfFormants = numberOfFormants;
@@ -68,8 +67,8 @@ SpeechSynthesizerVoice SpeechSynthesizerVoice_create (long numberOfFormants) {
 
 		my d_breath = NUMvector<int> (0, my d_numberOfFormants);	// amount of breath for each formant. breath[0] indicates whether any are set.
 		my d_breathw = NUMvector<int> (0, my d_numberOfFormants);	// width of each breath formant
-		SpeechSynthesizerVoice_setDefaults (me.peek());
-		return me.transfer();
+		SpeechSynthesizerVoice_setDefaults (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SpeechSynthesizerVoice not created.");
 	}
@@ -79,46 +78,46 @@ void SpeechSynthesizerVoice_setDefaults (SpeechSynthesizerVoice me) {
 	(void) me;
 }
 
-void SpeechSynthesizerVoice_initFromEspeakVoice (SpeechSynthesizerVoice me, voice_t *voice) {
-	my d_v_name = Melder_dup (Melder_peek8to32 (voice -> v_name));
-
-	my d_phoneme_tab_ix = voice -> phoneme_tab_ix;
-	my d_pitch_base = voice -> pitch_base;
-	my d_pitch_range = voice -> pitch_range;
-
-	my d_speedf1 = voice -> speedf1;
-	my d_speedf2 = voice -> speedf2;
-	my d_speedf3 = voice -> speedf3;
-
-	my d_speed_percent = voice -> speed_percent;
-	my d_flutter = voice -> flutter;
-	my d_roughness = voice -> roughness;
-	my d_echo_delay = voice -> echo_delay;
-	my d_echo_amp = voice -> echo_amp;
-	my d_n_harmonic_peaks = voice -> n_harmonic_peaks;
-	my d_peak_shape = voice -> peak_shape;
-	my d_voicing = voice -> voicing;
-	my d_formant_factor = voice -> formant_factor;
-	my d_consonant_amp = voice -> consonant_amp;
-	my d_consonant_ampv = voice -> consonant_ampv;
-	my d_samplingFrequency = voice -> samplerate;
+void SpeechSynthesizerVoice_initFromEspeakVoice (SpeechSynthesizerVoice me, voice_t *evoice) {
+	my d_v_name = Melder_dup (Melder_peek8to32 (evoice -> v_name));
+
+	my d_phoneme_tab_ix = evoice -> phoneme_tab_ix;
+	my d_pitch_base = evoice -> pitch_base;
+	my d_pitch_range = evoice -> pitch_range;
+
+	my d_speedf1 = evoice -> speedf1;
+	my d_speedf2 = evoice -> speedf2;
+	my d_speedf3 = evoice -> speedf3;
+
+	my d_speed_percent = evoice -> speed_percent;
+	my d_flutter = evoice -> flutter;
+	my d_roughness = evoice -> roughness;
+	my d_echo_delay = evoice -> echo_delay;
+	my d_echo_amp = evoice -> echo_amp;
+	my d_n_harmonic_peaks = evoice -> n_harmonic_peaks;
+	my d_peak_shape = evoice -> peak_shape;
+	my d_voicing = evoice -> voicing;
+	my d_formant_factor = evoice -> formant_factor;
+	my d_consonant_amp = evoice -> consonant_amp;
+	my d_consonant_ampv = evoice -> consonant_ampv;
+	my d_samplingFrequency = evoice -> samplerate;
 	for (long i = 0; i < 7; i++) {
-		my d_klattv[i] = voice -> klattv[i];
+		my d_klattv[i] = evoice -> klattv[i];
 	}
 	for (long i = 0; i <= my d_numberOfFormants; i++) {
-		my d_freq[i] = voice -> freq[i];
-		my d_height[i] = voice -> height[i];
-		my d_width[i] = voice -> width[i];
-		my d_freqadd[i] = voice -> freqadd[i];
-		my d_freq2[i] = voice -> freq2[i];
-		my d_height2[i] = voice -> height2[i];
-		my d_width2[i] = voice -> width2[i];
-		my d_breath[i] = voice -> breath[i];
-		my d_breathw[i] = voice -> breathw[i];
+		my d_freq[i] = evoice -> freq[i];
+		my d_height[i] = evoice -> height[i];
+		my d_width[i] = evoice -> width[i];
+		my d_freqadd[i] = evoice -> freqadd[i];
+		my d_freq2[i] = evoice -> freq2[i];
+		my d_height2[i] = evoice -> height2[i];
+		my d_width2[i] = evoice -> width2[i];
+		my d_breath[i] = evoice -> breath[i];
+		my d_breathw[i] = evoice -> breathw[i];
 	}
 }
 
-Thing_implement (SpeechSynthesizer, Data, 0);
+Thing_implement (SpeechSynthesizer, Daata, 0);
 
 void structSpeechSynthesizer :: v_info () {
 	SpeechSynthesizer_Parent :: v_info ();
@@ -133,13 +132,14 @@ void structSpeechSynthesizer :: v_info () {
 	MelderInfo_writeLine (U"Speeking rate: ", d_wordsPerMinute, U" words per minute", (d_estimateWordsPerMinute ? U" (but estimated from data if possible)" : U" (fixed)"));
 
 	MelderInfo_writeLine (U"Output phoneme coding: ", (d_inputPhonemeCoding == SpeechSynthesizer_PHONEMECODINGS_KIRSHENBAUM ? U"Kirshenbaum" : d_inputPhonemeCoding == SpeechSynthesizer_PHONEMECODINGS_IPA ? U"IPA" : U"???"));
+	MelderInfo_writeLine (U"Text to speech synthesis with eSpeak version 1.48.04");
 }
 
 static void NUMvector_extendNumberOfElements (long elementSize, void **v, long lo, long *hi, long extraDemand)
 {
 	try {
 		char *result;
-		if (*v == NULL) {
+		if (! *v) {
 			long newhi = lo + extraDemand - 1;
 			result = reinterpret_cast <char *> (NUMvector (elementSize, lo, newhi));
 			*hi = newhi;
@@ -147,7 +147,7 @@ static void NUMvector_extendNumberOfElements (long elementSize, void **v, long l
 			long offset = lo * elementSize;
 			for (;;) {   // not very infinite: 99.999 % of the time once, 0.001 % twice
 				result = reinterpret_cast <char *> (Melder_realloc ((char *) *v + offset, (*hi - lo + 1 + extraDemand) * elementSize));
-				if ((result -= offset) != NULL) break;   // this will normally succeed at the first try
+				if ((result -= offset)) break;   // this will normally succeed at the first try
 				(void) Melder_realloc_f (result + offset, 1);   // ??make "sure" that the second try will succeed
 			}
 			(*hi) += extraDemand;
@@ -176,75 +176,75 @@ static int synthCallback (short *wav, int numsamples, espeak_EVENT *events)
 {
 	char phoneme_name[9];
 	if (wav == 0) return 1;
+	
 	// It is essential that the SpeechSynthesizer is identified here by the user_data,
 	// because the espeakEVENT_LIST_TERMINATED event may still be accompanied by
 	// a piece of audio data!!
+	
 	SpeechSynthesizer me = (SpeechSynthesizer) (events -> user_data);
-	while(events -> type != espeakEVENT_LIST_TERMINATED) {
+	while (events -> type != espeakEVENT_LIST_TERMINATED) {
 		if (events -> type == espeakEVENT_SAMPLERATE) {
 			my d_internalSamplingFrequency = events -> id.number;
 		} else {
 			//my events = Table "time type type-t t-pos length a-pos sample id uniq";
 			//                    1    2     3      4     5     6     7      8   9
-			Table_appendRow (my d_events);
-			long irow = my d_events -> rows -> size;
+			Table_appendRow (my d_events.get());
+			long irow = my d_events -> rows.size;
 			double time = events -> audio_position * 0.001;
-			Table_setNumericValue (my d_events, irow, 1, time);
-			Table_setNumericValue (my d_events, irow, 2, events -> type);
+			Table_setNumericValue (my d_events.get(), irow, 1, time);
+			Table_setNumericValue (my d_events.get(), irow, 2, events -> type);
 			// Column 3 will be filled afterwards
-			Table_setNumericValue (my d_events, irow, 4, events -> text_position);
-			Table_setNumericValue (my d_events, irow, 5, events -> length);
-			Table_setNumericValue (my d_events, irow, 6, events -> audio_position);
-			Table_setNumericValue (my d_events, irow, 7, events -> sample);
+			Table_setNumericValue (my d_events.get(), irow, 4, events -> text_position);
+			Table_setNumericValue (my d_events.get(), irow, 5, events -> length);
+			Table_setNumericValue (my d_events.get(), irow, 6, events -> audio_position);
+			Table_setNumericValue (my d_events.get(), irow, 7, events -> sample);
 			if (events -> type == espeakEVENT_MARK || events -> type == espeakEVENT_PLAY) {
-				Table_setStringValue (my d_events, irow, 8, Melder_peek8to32 (events -> id.name));
+				Table_setStringValue (my d_events.get(), irow, 8, Melder_peek8to32 (events -> id.name));
 			} else {
 				// Ugly hack because id.string is not 0-terminated if 8 chars long!
 				memcpy (phoneme_name, events -> id.string, 8);
 				phoneme_name[8] = 0;
-				Table_setStringValue (my d_events, irow, 8, Melder_peek8to32 (phoneme_name));
+				Table_setStringValue (my d_events.get(), irow, 8, Melder_peek8to32 (phoneme_name));
 			}
-			Table_setNumericValue (my d_events, irow, 9, events -> unique_identifier);
+			Table_setNumericValue (my d_events.get(), irow, 9, events -> unique_identifier);
 		}
 		events++;
 	}
-	if (me != 0) {
+	if (me) {
 		NUMvector_supplyStorage<int> (&my d_wav, 1, &my d_wavCapacity, my d_numberOfSamples, numsamples);
 		for (long i = 1; i <= numsamples; i++) {
-			my d_wav[my d_numberOfSamples + i] = wav[i - 1];
+			my d_wav [my d_numberOfSamples + i] = wav [i - 1];
 		}
 		my d_numberOfSamples += numsamples;
 	}
 	return 0;
 }
 
-const char32 *SpeechSynthesizer_getVoiceLanguageCodeFromName (SpeechSynthesizer me, const char32 *voiceLanguageName) {
+const char32 *SpeechSynthesizer_getVoiceLanguageCodeFromName (SpeechSynthesizer /* me */, const char32 *voiceLanguageName) {
 	try {
-		(void) me;
-		long voiceLanguageNameIndex = Strings_findString (espeakdata_voices_names, voiceLanguageName);
+		long voiceLanguageNameIndex = Strings_findString (espeakdata_voices_names.get(), voiceLanguageName);
 		if (voiceLanguageNameIndex == 0) {
 			Melder_throw (U"Cannot find language \"", voiceLanguageName, U"\".");
 		}
-		FileInMemory fim = (FileInMemory) espeakdata_voices -> item[voiceLanguageNameIndex];
+		FileInMemory fim = espeakdata_voices->at [voiceLanguageNameIndex];
 		return fim -> d_id;
 	} catch (MelderError) {
 		Melder_throw (U"Cannot find language code.");
 	}
 }
 
-const char32 *SpeechSynthesizer_getVoiceVariantCodeFromName (SpeechSynthesizer me, const char32 *voiceVariantName) {
+const char32 *SpeechSynthesizer_getVoiceVariantCodeFromName (SpeechSynthesizer /* me */, const char32 *voiceVariantName) {
 	try {
-		(void) me;
 		static const char32 * defaultVariantCode = U"default";
 		// Strings espeakdata_variants_names is one longer than the actual list of variants
-		long voiceVariantIndex = Strings_findString (espeakdata_variants_names, voiceVariantName);
+		long voiceVariantIndex = Strings_findString (espeakdata_variants_names.get(), voiceVariantName);
 		if (voiceVariantIndex == 0) {
 			Melder_throw (U"Cannot find voice variant \"", voiceVariantName, U"\".");
 		}
 		// ... we have to decrease the index
 		if (voiceVariantIndex != 1) { // 1 is default, i.e. no variant
-			voiceVariantIndex--; // !!!
-			FileInMemory vfim = (FileInMemory) espeakdata_variants -> item[voiceVariantIndex];
+			voiceVariantIndex --; // !!!
+			FileInMemory vfim = espeakdata_variants->at [voiceVariantIndex];
 			return vfim -> d_id;
 		} else {
 			return defaultVariantCode; // TODO what is the default?
@@ -254,27 +254,24 @@ const char32 *SpeechSynthesizer_getVoiceVariantCodeFromName (SpeechSynthesizer m
 	}
 }
 
-void SpeechSynthesizer_initSoundBuffer (SpeechSynthesizer me) {
-	my d_wavCapacity = 2 * 22050; // 2 seconds
-	my d_wav = NUMvector<int> (1, my d_wavCapacity);
-	int fsamp = espeak_Initialize (AUDIO_OUTPUT_SYNCHRONOUS, 0, NULL, espeakINITIALIZE_PHONEME_EVENTS); // 4000 ms
+void SpeechSynthesizer_initEspeak () {
+	int fsamp = espeak_Initialize (AUDIO_OUTPUT_SYNCHRONOUS, 0, nullptr, espeakINITIALIZE_PHONEME_EVENTS); // 4000 ms
 	if (fsamp == -1) {
 		Melder_throw (U"Internal espeak error.");
 	}
 }
 
-SpeechSynthesizer SpeechSynthesizer_create (const char32 *voiceLanguageName, const char32 *voiceVariantName) {
+autoSpeechSynthesizer SpeechSynthesizer_create (const char32 *voiceLanguageName, const char32 *voiceVariantName) {
 	try {
 		autoSpeechSynthesizer me = Thing_new (SpeechSynthesizer);
-		// check the languange and voice variant
-		(void) SpeechSynthesizer_getVoiceLanguageCodeFromName (me.peek(), voiceLanguageName);
-		(void) SpeechSynthesizer_getVoiceVariantCodeFromName (me.peek(), voiceVariantName);
+		(void) SpeechSynthesizer_getVoiceLanguageCodeFromName (me.get(), voiceLanguageName);
+		(void) SpeechSynthesizer_getVoiceVariantCodeFromName (me.get(), voiceVariantName);
 		my d_voiceLanguageName = Melder_dup (voiceLanguageName);
 		my d_voiceVariantName = Melder_dup (voiceVariantName);
-		SpeechSynthesizer_setTextInputSettings (me.peek(), SpeechSynthesizer_INPUT_TEXTONLY, SpeechSynthesizer_PHONEMECODINGS_KIRSHENBAUM);
-		SpeechSynthesizer_setSpeechOutputSettings (me.peek(), 44100, 0.01, 50, 50, 175, true, SpeechSynthesizer_PHONEMECODINGS_IPA);
-		SpeechSynthesizer_initSoundBuffer (me.peek());
-		return me.transfer();
+		SpeechSynthesizer_setTextInputSettings (me.get(), SpeechSynthesizer_INPUT_TEXTONLY, SpeechSynthesizer_PHONEMECODINGS_KIRSHENBAUM);
+		SpeechSynthesizer_setSpeechOutputSettings (me.get(), 44100, 0.01, 50, 50, 175, true, SpeechSynthesizer_PHONEMECODINGS_IPA);
+		SpeechSynthesizer_initEspeak ();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SpeechSynthesizer not created.");
 	}
@@ -300,20 +297,20 @@ void SpeechSynthesizer_setSpeechOutputSettings (SpeechSynthesizer me, double sam
 }
 
 void SpeechSynthesizer_playText (SpeechSynthesizer me, const char32 *text) {
-	autoSound thee= SpeechSynthesizer_to_Sound (me, text, 0, 0);
-	Sound_playPart (thee.peek(), thy xmin, thy xmax, 0, 0);
+	autoSound thee = SpeechSynthesizer_to_Sound (me, text, nullptr, nullptr);
+	Sound_playPart (thee.get(), thy xmin, thy xmax, nullptr, nullptr);
 }
 
-static Sound buffer_to_Sound (int *wav, long numberOfSamples, double samplingFrequency)
+static autoSound buffer_to_Sound (int *wav, long numberOfSamples, double samplingFrequency)
 {
 	try {
 		double dx = 1.0 / samplingFrequency;
 		double xmax = numberOfSamples * dx;
-		autoSound thee = Sound_create (1, 0, xmax, numberOfSamples, dx, dx / 2);
+		autoSound thee = Sound_create (1, 0.0, xmax, numberOfSamples, dx, dx / 2.0);
 		for (long i = 1; i <= numberOfSamples; i++) {
 			thy z[1][i] = wav[i] / 32768.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from synthesizer data.");
 	}
@@ -321,7 +318,7 @@ static Sound buffer_to_Sound (int *wav, long numberOfSamples, double samplingFre
 
 static void IntervalTier_addBoundaryUnsorted (IntervalTier me, long iinterval, double time, const char32 *newLabel, bool isNewleftLabel) {
 	if (time <= my xmin || time >= my xmax) {
-		Melder_throw (U"Time is outside interval.");
+		Melder_throw (U"Time is outside interval domains.");
 	}
 
 	// Find interval to split
@@ -330,17 +327,17 @@ static void IntervalTier_addBoundaryUnsorted (IntervalTier me, long iinterval, d
 	}
 
 	// Modify end time of left label
-	TextInterval ti = (TextInterval) my intervals -> item[iinterval];
+	TextInterval ti = my intervals.at [iinterval];
 	ti -> xmax = time;
 	if (isNewleftLabel) TextInterval_setText (ti, newLabel);
 
-	autoTextInterval ti_new = TextInterval_create (time, my xmax, (! isNewleftLabel ? newLabel : U""));
-	Sorted_addItem_unsorted (my intervals, ti_new.transfer());
+	autoTextInterval ti_new = TextInterval_create (time, my xmax, (! isNewleftLabel ? newLabel : U"" ));
+	my intervals. addItem_unsorted_move (ti_new.move());
 }
 
 static void Table_setEventTypeString (Table me) {
 	try {
-		for (long i = 1; i <= my rows -> size; i++) {
+		for (long i = 1; i <= my rows.size; i ++) {
 			int type = Table_getNumericValue_Assert (me, i, 2);
 			const char32 *label = U"0";
 			if (type == espeakEVENT_WORD) {
@@ -366,33 +363,128 @@ static void Table_setEventTypeString (Table me) {
 }
 
 static void MelderString_trimWhiteSpaceAtEnd (MelderString *me) {
-	while (my length > 1 && (my string[my length - 1] == U' ' || my string[my length - 1] == U'\t'
-		|| my string[my length - 1] == U'\r' || my string[my length - 1] == U'\n')) {
-		my string[my length - 1] = U'\0'; my length--;
+	while (my length > 1 && (my string [my length - 1] == U' ' || my string [my length - 1] == U'\t'
+		|| my string [my length - 1] == U'\r' || my string [my length - 1] == U'\n'))
+	{
+		my string [my length - 1] = U'\0';
+		my length--;
+	}
+}
+
+static void IntervalTier_mergeSpecialIntervals (IntervalTier me) {
+	long intervalIndex = my intervals.size;
+	TextInterval right = my intervals.at [intervalIndex];
+	long labelLength_right = TextInterval_labelLength (right);
+	bool isEmptyInterval_right = labelLength_right == 0 || (labelLength_right == 1 && Melder_equ (right -> text, U"\001"));
+	while (intervalIndex > 1) {
+		TextInterval left = my intervals.at [intervalIndex - 1];
+		long labelLength_left = TextInterval_labelLength (left);
+		bool isEmptyInterval_left = labelLength_left == 0 || (labelLength_left == 1 && Melder_equ (left -> text, U"\001"));
+		if (isEmptyInterval_right && isEmptyInterval_left) {
+			// remove right interval and empty left interval
+			left -> xmax = right -> xmax;
+			TextInterval_setText (left, U""); 
+			my intervals. removeItem (intervalIndex);
+		}
+		right = left; 
+		isEmptyInterval_right = isEmptyInterval_left;
+		intervalIndex --;
+	}
+}
+
+/* insert boundary at time t and merge/delete intervals after this time */
+static void IntervalTier_insertBoundaryAndMergeIntervalsAfter (IntervalTier me, double t) {
+	if (t <= my xmin || t >= my xmax) {
+		return;
+	}
+	
+	long intervalNumber = IntervalTier_timeToLowIndex (me, t);
+	while (my intervals.size > intervalNumber + 1) {
+		my intervals. removeItem (my intervals.size);
+	}
+	// there can be maximally one interval left to the right of intervalNumber
+	TextInterval ti = my intervals.at [intervalNumber];
+	if (ti -> xmin == t) {   // if t happens to be on a boundary: remove the next interval if it exists
+		if (my intervals.size > intervalNumber) {
+			my intervals. removeItem (my intervals .size);
+		}
+		ti -> xmax = my xmax;
+		TextInterval_setText (ti, U"");
+	} else {
+		ti -> xmax = t;
+		TextInterval last = my intervals.at [my intervals.size];
+		last -> xmin = t;
+		last -> xmax = my xmax;
+		TextInterval_setText (last, U"");
+	}
+}
+
+
+static bool almost_equal (double t1, double t2) {
+	// the "=" sign is essential for a difference of zero if t1 == 0
+	return fabs (t1 - t2) <= 1e-12 * fabs (t1);
+}
+
+static void IntervalTier_insertEmptyIntervalsFromOtherTier (IntervalTier to, IntervalTier from) {
+	for (long iint = 1; iint <= from -> intervals.size; iint ++) {
+		TextInterval tifrom = from -> intervals.at [iint];
+		if (TextInterval_labelLength (tifrom) == 0) {   // found empty interval
+			double t_left = tifrom -> xmin, t_right = tifrom -> xmax;
+			long intervalIndex_to = IntervalTier_timeToLowIndex (to, t_left);
+			if (intervalIndex_to > 0) {   // insert to the right of intervalIndex_to
+				TextInterval tito = to -> intervals.at [intervalIndex_to];
+				if (! almost_equal (tito -> xmin, t_left)) {   // not on the start boundary of the interval, it cannot be at xmax
+					autoTextInterval newInterval = TextInterval_create (t_left, tito -> xmax, U"");
+					tito -> xmax = t_left;
+					to -> intervals. addItem_move (newInterval.move());
+				}
+			}
+			intervalIndex_to = IntervalTier_timeToHighIndex (to, t_right);
+			TextInterval tito = to -> intervals.at [intervalIndex_to];
+			if (intervalIndex_to > 0) {
+				if (! almost_equal (t_right, tito -> xmax)) {   // insert to the left of intervalIndex_to
+					autoTextInterval newInterval = TextInterval_create (tito -> xmin, t_right, U"");
+					tito -> xmin = t_right;
+					to -> intervals. addItem_move (newInterval.move());
+				}
+			}
+		}
+	}
+}
+
+static void IntervalTier_removeVeryShortIntervals (IntervalTier me) {
+	long iint = 1;
+	while (iint <= my intervals.size) {
+		TextInterval ti = my intervals.at [iint];
+		if (almost_equal (ti -> xmin, ti -> xmax)) {
+			my intervals.removeItem (iint);
+		} else {
+			iint ++;
+		}
 	}
 }
 
-static TextGrid Table_to_TextGrid (Table me, const char32 *text, double xmin, double xmax) {
+static autoTextGrid Table_to_TextGrid (Table me, const char32 *text, double xmin, double xmax) {
 	//Table_createWithColumnNames (0, L"time type type-t t-pos length a-pos sample id uniq");
 	try {
 		long length, textLength = str32len (text);
-		long numberOfRows = my rows -> size;
+		long numberOfRows = my rows.size;
 		long timeColumnIndex = Table_getColumnIndexFromColumnLabel (me, U"time");
 		long typeColumnIndex = Table_getColumnIndexFromColumnLabel (me, U"type");
 		long tposColumnIndex = Table_getColumnIndexFromColumnLabel (me, U"t-pos");
 		long   idColumnIndex = Table_getColumnIndexFromColumnLabel (me, U"id");
 		autoTextGrid thee = TextGrid_create (xmin, xmax, U"sentence clause word phoneme", U"");
 
-		TextGrid_setIntervalText (thee.peek(), 1, 1, text);
+		TextGrid_setIntervalText (thee.get(), 1, 1, text);
 
 		long p1c = 1, p1w = 1;
-		double t1p = xmin;
+		double time_phon_p = xmin;
 		bool wordEnd = false;
 		autoMelderString mark;
 
-		IntervalTier itc = (IntervalTier) thy tiers -> item[2];
-		IntervalTier itw = (IntervalTier) thy tiers -> item[3];
-		IntervalTier itp = (IntervalTier) thy tiers -> item[4];
+		IntervalTier clauses = (IntervalTier) thy tiers->at [2];
+		IntervalTier words = (IntervalTier) thy tiers->at [3];
+		IntervalTier phonemes = (IntervalTier) thy tiers->at [4];
 
 		for (long i = 1; i <= numberOfRows; i++) {
 			double time = Table_getNumericValue_Assert (me, i, timeColumnIndex);
@@ -401,19 +493,19 @@ static TextGrid Table_to_TextGrid (Table me, const char32 *text, double xmin, do
 			if (type == espeakEVENT_SENTENCE) {
 				// Only insert a new boundary, no text
 				// text will be inserted at end sentence event
-				if (time > xmin and time < xmax) {
-					IntervalTier_addBoundaryUnsorted (itc, itc -> intervals -> size, time, U"", true);
+				if (time > xmin && time < xmax) {
+					IntervalTier_addBoundaryUnsorted (clauses, clauses -> intervals.size, time, U"", true);
 				}
 				p1c = pos;
 			} else if (type == espeakEVENT_END) {
 				// End of clause: insert new boundary, and fill left interval with text
 				length = pos - p1c + 1;
 				MelderString_ncopy (&mark, text + p1c - 1, length);
-				MelderString_trimWhiteSpaceAtEnd (&mark);
-				if (time > xmin and time < xmax) {
-					IntervalTier_addBoundaryUnsorted (itc, itc -> intervals -> size, time, mark.string, true);
+				MelderString_trimWhiteSpaceAtEnd (& mark);
+				if (time > xmin && time < xmax) {
+					IntervalTier_addBoundaryUnsorted (clauses, clauses -> intervals.size, time, mark.string, true);
 				} else {
-					TextGrid_setIntervalText (thee.peek(), 2, itc -> intervals -> size, mark.string);
+					TextGrid_setIntervalText (thee.get(), 2, clauses -> intervals.size, mark.string);
 				}
 				p1c = pos;
 
@@ -422,46 +514,61 @@ static TextGrid Table_to_TextGrid (Table me, const char32 *text, double xmin, do
 				if (pos <= textLength) {
 					length = pos - p1w + 1;
 					MelderString_ncopy (&mark, text + p1w - 1, length);
-					MelderString_trimWhiteSpaceAtEnd (&mark);
-					if (time > xmin and time < xmax) {
-						IntervalTier_addBoundaryUnsorted (itw, itw -> intervals -> size, time, mark.string, true);
+					MelderString_trimWhiteSpaceAtEnd (& mark);
+					if (time > xmin && time < xmax) {
+						IntervalTier_addBoundaryUnsorted (words, words -> intervals.size, time, mark.string, true);
 					} else {
-						TextGrid_setIntervalText (thee.peek(), 3, itw -> intervals -> size, mark.string);
+						TextGrid_setIntervalText (thee.get(), 3, words -> intervals.size, mark.string);
 					}
 					// now the next word event should not trigger setting the left interval text
 					wordEnd = false;
 				}
 			} else if (type == espeakEVENT_WORD) {
-				if (pos < p1w) continue;
-				if (time > xmin and time < xmax) {
+				if (pos < p1w) {
+					continue;
+				}
+				if (time > xmin && time < xmax) {
 					length = pos - p1w;
-					if (pos == textLength) length++;
+					if (pos == textLength) {
+						length++;
+					}
 					MelderString_ncopy (&mark, text + p1w - 1, length);
-					MelderString_trimWhiteSpaceAtEnd (&mark);
-					IntervalTier_addBoundaryUnsorted (itw, itw -> intervals -> size, time, (wordEnd ? mark.string : U""), true);
+					MelderString_trimWhiteSpaceAtEnd (& mark);
+					IntervalTier_addBoundaryUnsorted (words, words -> intervals.size, time, ( wordEnd ? mark.string : U"" ), true);
 				}
 				wordEnd = true;
 				p1w = pos;
 			} else if (type == espeakEVENT_PHONEME) {
 				const char32 *id = Table_getStringValue_Assert (me, i, idColumnIndex);
-				if (time > t1p) {
+				if (time > time_phon_p) {
 					// Insert new boudary and label interval with the id
 					// TODO: Translate the id to the correct notation
-					TextInterval ti = (TextInterval) itp -> intervals -> item[itp -> intervals -> size];
-					if (time > ti -> xmin and time < ti -> xmax) {
-						IntervalTier_addBoundaryUnsorted (itp, itp -> intervals -> size, time, id, false);
+					TextInterval ti = phonemes -> intervals.at [phonemes -> intervals.size];
+					if (time > ti -> xmin && time < ti -> xmax) {
+						IntervalTier_addBoundaryUnsorted (phonemes, phonemes -> intervals.size, time, id, false);
 					}
 				} else {
 					// Just in case the phoneme starts at xmin we only need to set interval text
-					TextGrid_setIntervalText (thee.peek(), 4, itp -> intervals -> size, id);
+					TextGrid_setIntervalText (thee.get(), 4, phonemes -> intervals.size, id);
 				}
-				t1p = time;
+				time_phon_p = time;
 			}
 		}
-		Sorted_sort (itc -> intervals);
-		Sorted_sort (itw -> intervals);
-		Sorted_sort (itp -> intervals);
-		return thee.transfer();
+		clauses -> intervals. sort ();
+		words -> intervals. sort ();
+		phonemes -> intervals. sort ();
+		
+		IntervalTier_mergeSpecialIntervals (phonemes); // Merge neighbouring empty U"" and U"\001" intervals
+		
+		IntervalTier_removeVeryShortIntervals (words);
+		IntervalTier_removeVeryShortIntervals (clauses);
+		
+		/* Use empty intervals in phoneme tier for more precision in the word tier */
+		
+		IntervalTier_insertEmptyIntervalsFromOtherTier (words, phonemes);
+		IntervalTier_mergeSpecialIntervals (words); // Merge neighbouring empty U"" and U"\001" intervals
+
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not created from Table with events.");
 	}
@@ -471,25 +578,72 @@ static void espeakdata_SetVoiceByName (const char *name, const char *variantName
 {
 	espeak_VOICE voice_selector;
 
-	memset(&voice_selector, 0, sizeof(voice_selector));
+	memset (& voice_selector, 0, sizeof voice_selector);
 	voice_selector.name = Melder_peek32to8 (Melder_cat (Melder_peek8to32 (name), U"+", Melder_peek8to32 (variantName)));  // include variant name in voice stack ??
 
-	if (LoadVoice (name,1) != NULL)
-	{
-		LoadVoice(variantName, 2);
-		DoVoiceChange(voice);
-		SetVoiceStack (&voice_selector, variantName);
+	if (LoadVoice (name, 1)) {
+		LoadVoice (variantName, 2);
+		DoVoiceChange (voice);
+		SetVoiceStack (& voice_selector, variantName);
+	}
+}
+
+void SpeechSynthesizer_changeLanguageNameToCurrent (SpeechSynthesizer me) {
+	try {
+		struct espeakLanguagestruct { const char32 *oldName, *currentName; } names[] = {
+			{ U"Akan-test", nullptr}, 
+			{ U"Bulgarian-test", U"Bulgarian"}, 
+			{ U"Dari-test", nullptr}, 
+			{ U"Divehi-test", nullptr}, { U"Dutch-test", U"Dutch"}, 
+			{ U"French (Belgium)", U"French-Belgium"},
+			{ U"Georgian-test", U"Georgian"}, 
+			{ U"Haitian", nullptr},
+			{ U"Icelandic-test", U"Icelandic"}, { U"Indonesian-test", U"Indonesian"},
+			{ U"Irish-test", U"Irish-gaeilge"}, 
+			{ U"Kazakh", nullptr}, { U"Kinyarwanda-test", nullptr}, { U"Korean", U"Korean-test"}, 
+			{ U"Lancashire", nullptr},
+			{ U"Macedonian-test", U"Macedonian"}, { U"Maltese-test", nullptr},
+			{ U"Nahuatl - classical", U"Nahuatl-classical"}, { U"Nepali-test", U"Nepali"}, { U"Northern-sotho", nullptr},
+			{ U"Punjabi-test", U"Punjabi"},
+			{ U"Russian_test", U"Russian"}, // yes, underscore
+			{ U"Setswana-test", nullptr}, { U"Sinhala", U"Sinhala-test"},
+			{ U"Spanish-latin-american", U"Spanish-latin-am"}, { U"Tatar-test", nullptr},
+			{ U"Telugu", U"Telugu-test"}, 
+			{ U"Welsh-test", U"Welsh"}, { U"Wolof-test", nullptr},
+			{nullptr,nullptr}};
+		long index = 0;
+		while (const char32 *oldName = names [index]. oldName) {
+			if (Melder_equ (oldName, my d_voiceLanguageName)) {
+				if (names [index]. currentName) {
+					autostring32 newLabel = Melder_dup (names [index]. currentName);
+					Melder_free (my d_voiceLanguageName);
+					my d_voiceLanguageName = newLabel.transfer();
+					break;
+				} else {
+					Melder_throw (U"Language ", oldName, U" is not available any longer.");
+				}
+			}
+			++ index;
+		}
+	} catch (MelderError) {
+		Melder_throw (U"Cannot change language name.");
 	}
 }
 
-Sound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, TextGrid *tg, Table *events) {
+autoSound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, autoTextGrid *tg, autoTable *events) {
 	try {
-		int fsamp = espeak_Initialize (AUDIO_OUTPUT_SYNCHRONOUS, 0, NULL, // 5000ms
+		int fsamp = espeak_Initialize (AUDIO_OUTPUT_SYNCHRONOUS, 0, nullptr, // 5000ms
 			espeakINITIALIZE_PHONEME_EVENTS|espeakINITIALIZE_PHONEME_IPA);
-		if (fsamp == -1) Melder_throw (U"Internal espeak error.");
+		if (fsamp == -1) {
+			Melder_throw (U"Internal espeak error.");
+		}
 		int synth_flags = espeakCHARS_WCHAR;
-		if (my d_inputTextFormat == SpeechSynthesizer_INPUT_TAGGEDTEXT) synth_flags |= espeakSSML;
-		if (my d_inputTextFormat != SpeechSynthesizer_INPUT_TEXTONLY) synth_flags |= espeakPHONEMES;
+		if (my d_inputTextFormat == SpeechSynthesizer_INPUT_TAGGEDTEXT) {
+			synth_flags |= espeakSSML;
+		}
+		if (my d_inputTextFormat != SpeechSynthesizer_INPUT_TEXTONLY) {
+			synth_flags |= espeakPHONEMES;
+		}
 		option_phoneme_events = espeakINITIALIZE_PHONEME_EVENTS; // extern int option_phoneme_events;
 		if (my d_outputPhonemeCoding == SpeechSynthesizer_PHONEMECODINGS_IPA) {
 			option_phoneme_events |= espeakINITIALIZE_PHONEME_IPA;
@@ -500,7 +654,7 @@ Sound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, Text
 		espeak_SetParameter (espeakRANGE, my d_pitchRange, 0);
 		const char32 *voiceLanguageCode = SpeechSynthesizer_getVoiceLanguageCodeFromName (me, my d_voiceLanguageName);
 		const char32 *voiceVariantCode = SpeechSynthesizer_getVoiceVariantCodeFromName (me, my d_voiceVariantName);
-		espeakdata_SetVoiceByName ((const char *) Melder_peek32to8 (voiceLanguageCode),
+		espeakdata_SetVoiceByName ((const char *) Melder_peek32to8 (voiceLanguageCode), 
 			(const char *) Melder_peek32to8 (voiceVariantCode));
 
 		espeak_SetParameter (espeakWORDGAP, my d_wordgap * 100, 0); // espeak wordgap is in units of 10 ms
@@ -510,37 +664,39 @@ Sound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, Text
 		espeak_SetSynthCallback (synthCallback);
 
 		my d_events = Table_createWithColumnNames (0, U"time type type-t t-pos length a-pos sample id uniq");
-		
+
 		#ifdef _WIN32
                 wchar_t *textW = Melder_peek32toW (text);
-                espeak_Synth (textW, wcslen (textW) + 1, 0, POS_CHARACTER, 0, synth_flags, NULL, me);
+                espeak_Synth (textW, wcslen (textW) + 1, 0, POS_CHARACTER, 0, synth_flags, nullptr, me);
 		#else
-                espeak_Synth (text, str32len (text) + 1, 0, POS_CHARACTER, 0, synth_flags, NULL, me);
+                espeak_Synth (text, str32len (text) + 1, 0, POS_CHARACTER, 0, synth_flags, nullptr, me);
 		#endif
-
+				
 		espeak_Terminate ();
 		autoSound thee = buffer_to_Sound (my d_wav, my d_numberOfSamples, my d_internalSamplingFrequency);
 
 		if (my d_samplingFrequency != my d_internalSamplingFrequency) {
-			thee.reset (Sound_resample (thee.peek(), my d_samplingFrequency, 50));
+			thee = Sound_resample (thee.get(), my d_samplingFrequency, 50);
 		}
 		my d_numberOfSamples = 0; // re-use the wav-buffer
-		if (tg != NULL) {
-			double xmin = Table_getNumericValue_Assert (my d_events, 1, 1);
-			if (xmin > thy xmin) xmin = thy xmin;
-			double xmax = Table_getNumericValue_Assert (my d_events, my d_events -> rows -> size, 1);
-			if (xmax < thy xmax) xmax = thy xmax;
-			autoTextGrid atg1 = Table_to_TextGrid (my d_events, text, xmin, xmax);
-			autoTextGrid atg2 =  TextGrid_extractPart (atg1.peek(), thy xmin, thy xmax, 0);
-			*tg = atg2.transfer();
+		if (tg) {
+			double xmin = Table_getNumericValue_Assert (my d_events.get(), 1, 1);
+			if (xmin > thy xmin) {
+				xmin = thy xmin;
+			}
+			double xmax = Table_getNumericValue_Assert (my d_events.get(), my d_events -> rows.size, 1);
+			if (xmax < thy xmax) {
+				xmax = thy xmax;
+			}
+			autoTextGrid tg1 = Table_to_TextGrid (my d_events.get(), text, xmin, xmax);
+			*tg = TextGrid_extractPart (tg1.get(), thy xmin, thy xmax, 0);
 		}
-		if (events != NULL) {
-			Table_setEventTypeString (my d_events);
-			*events = my d_events;
-			my d_events = 0;
+		if (events) {
+			Table_setEventTypeString (my d_events.get());
+			*events = my d_events.move();
 		}
-		forget (my d_events);
-		return thee.transfer();
+		my d_events.reset();
+		return thee;
 	} catch (MelderError) {
 		espeak_Terminate ();
 		Melder_throw (U"Text not played.");
diff --git a/dwtools/SpeechSynthesizer.h b/dwtools/SpeechSynthesizer.h
index 338308e..b2a26b1 100644
--- a/dwtools/SpeechSynthesizer.h
+++ b/dwtools/SpeechSynthesizer.h
@@ -2,21 +2,20 @@
 #define _SpeechSynthesizer_h_
 /* SpeechSynthesizer.h
  *
- * Copyright (C) 2011-2013 David Weenink
+ * Copyright (C) 2011-2013, 2015-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,24 +37,29 @@
 #define SpeechSynthesizer_INPUT_TAGGEDTEXT 3
 
 #include "SpeechSynthesizer_def.h"
-oo_CLASS_CREATE (SpeechSynthesizerVoice, Data);
-oo_CLASS_CREATE (SpeechSynthesizer, Data);
 
-SpeechSynthesizerVoice SpeechSynthesizerVoice_create (long numberOfFormants);
+autoSpeechSynthesizerVoice SpeechSynthesizerVoice_create (long numberOfFormants);
+
 void SpeechSynthesizerVoice_setDefaults (SpeechSynthesizerVoice me);
+
 void SpeechSynthesizerVoice_initFromEspeakVoice (SpeechSynthesizerVoice me, voice_t *voice);
 
 
-void SpeechSynthesizer_initSoundBuffer (SpeechSynthesizer me);
-SpeechSynthesizer SpeechSynthesizer_create (const char32 *voiceLanguageName, const char32 *voiceVariantName);
+void SpeechSynthesizer_initEspeak ();
+
+autoSpeechSynthesizer SpeechSynthesizer_create (const char32 *voiceLanguageName, const char32 *voiceVariantName);
 
 const char32 *SpeechSynthesizer_getVoiceLanguageCodeFromName (SpeechSynthesizer me, const char32 *voiceLanguageName);
+
 const char32 *SpeechSynthesizer_getVoiceVariantCodeFromName (SpeechSynthesizer me, const char32 *voiceVariantName);
 
+void SpeechSynthesizer_changeLanguageNameToCurrent (SpeechSynthesizer me);
+
 void SpeechSynthesizer_setTextInputSettings (SpeechSynthesizer me, int inputTextFormat, int inputPhonemeCoding);
+
 void SpeechSynthesizer_setSpeechOutputSettings (SpeechSynthesizer me, double samplingFrequency, double wordgap, long pitchAdjustment, long pitchRange, long wordsPerMinute, bool estimateWordsPerMinute, int outputPhonemeCodes);
 
-Sound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, TextGrid *tg, Table *events);
+autoSound SpeechSynthesizer_to_Sound (SpeechSynthesizer me, const char32 *text, autoTextGrid *tg, autoTable *events);
 
 void SpeechSynthesizer_playText (SpeechSynthesizer me, const char32 *text);
 
diff --git a/dwtools/SpeechSynthesizer_and_TextGrid.cpp b/dwtools/SpeechSynthesizer_and_TextGrid.cpp
index eba29a9..fa31fb9 100644
--- a/dwtools/SpeechSynthesizer_and_TextGrid.cpp
+++ b/dwtools/SpeechSynthesizer_and_TextGrid.cpp
@@ -1,20 +1,19 @@
 /* SpeechSynthesizer_and_TextGrid.cpp
  *
- * Copyright (C) 2011-2012 David Weenink
+ * Copyright (C) 2011-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -32,49 +31,49 @@
 
 // prototypes
 static void IntervalTier_splitInterval (IntervalTier me, double time, const char32 *leftLabel, long interval, double precision);
-static IntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier me, IntervalTier thee, const char32 *label, double precision);
-static IntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision);
-static TextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align2 (SpeechSynthesizer me, Sound thee, IntervalTier him, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration);
-static Table IntervalTiers_to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs);
+static autoIntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier me, IntervalTier thee, const char32 *label, double precision);
+static autoIntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision);
+static autoTable IntervalTiers_to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs);
 
-Sound SpeechSynthesizer_and_TextInterval_to_Sound (SpeechSynthesizer me, TextInterval thee, TextGrid *tg)
+autoSound SpeechSynthesizer_and_TextInterval_to_Sound (SpeechSynthesizer me, TextInterval thee, autoTextGrid *p_tg)
 {
 	try {
-		if (thy text == NULL || thy text[0] == '\0') {
+		if (! thy text || thy text[0] == U'\0') {
 			Melder_throw (U"No text in TextInterval.");
 		}
-		autoSound him = SpeechSynthesizer_to_Sound (me, thy text, tg, NULL);
-		return him.transfer();
+		autoSound him = SpeechSynthesizer_to_Sound (me, thy text, p_tg, nullptr);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from TextInterval.");
 	}
 }
 
-Sound SpeechSynthesizer_and_TextGrid_to_Sound (SpeechSynthesizer me, TextGrid thee, long tierNumber, long iinterval, TextGrid *tg) {
+autoSound SpeechSynthesizer_and_TextGrid_to_Sound (SpeechSynthesizer me, TextGrid thee, long tierNumber, long iinterval, autoTextGrid *p_tg) {
 	try {
 		TextGrid_checkSpecifiedTierNumberWithinRange (thee, tierNumber);
-		IntervalTier intervalTier = (IntervalTier) thy tiers -> item [tierNumber];
+		IntervalTier intervalTier = (IntervalTier) thy tiers->at [tierNumber];
 		if (intervalTier -> classInfo != classIntervalTier) {
 			Melder_throw (U"Tier ", tierNumber, U" is not an interval tier.");
 		}
-		if (iinterval < 1 || iinterval > intervalTier -> intervals -> size) {
+		if (iinterval < 1 || iinterval > intervalTier -> intervals.size) {
 			Melder_throw (U"Interval ", iinterval, U" does not exist on tier ", tierNumber, U".");
 		}
-		return SpeechSynthesizer_and_TextInterval_to_Sound (me, (TextInterval) intervalTier -> intervals -> item[iinterval], tg);
+		return SpeechSynthesizer_and_TextInterval_to_Sound (me, intervalTier -> intervals.at [iinterval], p_tg);
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from textGrid.");
 	}
 }
 
+#if 0
 static double TextGrid_getStartTimeOfFirstOccurence (TextGrid thee, long tierNumber, const char32 *label) {
 	TextGrid_checkSpecifiedTierNumberWithinRange (thee, tierNumber);
-	IntervalTier intervalTier = (IntervalTier) thy tiers -> item [tierNumber];
+	IntervalTier intervalTier = (IntervalTier) thy tiers->at [tierNumber];
 	if (intervalTier -> classInfo != classIntervalTier) {
-			Melder_throw (U"Tier ", tierNumber, U" is not an interval tier.");
+		Melder_throw (U"Tier ", tierNumber, U" is not an interval tier.");
 	}
 	double start = NUMundefined;
-	for (long iint = 1; iint <= intervalTier -> intervals -> size; iint++) {
-		TextInterval ti = (TextInterval) intervalTier -> intervals -> item[iint];
+	for (long iint = 1; iint <= intervalTier -> intervals.size; iint ++) {
+		TextInterval ti = intervalTier -> intervals.at [iint];
 		if (Melder_cmp (ti -> text, label) == 0) {
 			start = ti -> xmin;
 			break;
@@ -85,26 +84,27 @@ static double TextGrid_getStartTimeOfFirstOccurence (TextGrid thee, long tierNum
 
 static double TextGrid_getEndTimeOfLastOccurence (TextGrid thee, long tierNumber, const char32 *label) {
 	TextGrid_checkSpecifiedTierNumberWithinRange (thee, tierNumber);
-	IntervalTier intervalTier = (IntervalTier) thy tiers -> item [tierNumber];
+	IntervalTier intervalTier = (IntervalTier) thy tiers->at [tierNumber];
 	if (intervalTier -> classInfo != classIntervalTier) {
-			Melder_throw (U"Tier ", tierNumber, U" is not an interval tier.");
+		Melder_throw (U"Tier ", tierNumber, U" is not an interval tier.");
 	}
 	double end = NUMundefined;
-	for (long iint = intervalTier -> intervals -> size; iint > 0; iint--) {
-		TextInterval ti = (TextInterval) intervalTier -> intervals -> item[iint];
-		if (Melder_cmp (ti -> text, label) == 0) {
+	for (long iint = intervalTier -> intervals.size; iint > 0; iint --) {
+		TextInterval ti = intervalTier -> intervals.at [iint];
+		if (Melder_equ (ti -> text, label)) {
 			end = ti -> xmax;
 			break;
 		}
 	}
 	return end;
 }
+#endif
 
 static void IntervalTier_getLabelInfo (IntervalTier me, const char32 *label, double *labelDurations, long *numberOfOccurences) {
     *labelDurations = 0;
     *numberOfOccurences = 0;
-    for (long i = 1; i <= my intervals -> size; i++) {
-        TextInterval ti = (TextInterval) my intervals -> item[i];
+    for (long i = 1; i <= my intervals.size; i ++) {
+        TextInterval ti = my intervals.at [i];
         if (Melder_equ (ti -> text, label)) {
             *labelDurations += ti -> xmax - ti -> xmin;
             (*numberOfOccurences)++;
@@ -115,10 +115,11 @@ static void IntervalTier_getLabelInfo (IntervalTier me, const char32 *label, dou
 #define TIMES_ARE_CLOSE(x,y) (fabs((x)-(y)) < precision)
 void IntervalTier_splitInterval (IntervalTier me, double time, const char32 *leftLabel, long interval, double precision) {
     try {
-
-        long index = 0; TextInterval ti = NULL;
-        for (long i = interval; i <= my intervals -> size; i++) { // interval > 0
-            ti = (TextInterval) my intervals -> item[i];
+		Melder_assert (interval > 0);
+        TextInterval ti = nullptr;
+		long index = 0; 
+        for (long i = interval; i <= my intervals.size; i ++) {
+            ti = my intervals.at [i];
             if (time < ti -> xmax + precision && time > ti -> xmin - precision) {
                 index = i; break;
             }
@@ -130,34 +131,35 @@ void IntervalTier_splitInterval (IntervalTier me, double time, const char32 *lef
         autoTextInterval newInterval = TextInterval_create (ti -> xmin, time, leftLabel);
         // Make start of current and begin of new interval equal
         ti -> xmin = time;
-        Collection_addItem (my intervals, newInterval.transfer());
+        my intervals. addItem_move (newInterval.move());
     } catch (MelderError) {
         Melder_throw (U"Boundary not inserted.");
     }
 
 }
 
-static TextTier TextTier_and_IntervalTier_cutPartsMatchingLabel (TextTier me, IntervalTier thee, const char32 *label, double precision) {
+static autoTextTier TextTier_and_IntervalTier_cutPartsMatchingLabel (TextTier me, IntervalTier thee, const char32 *label, double precision) {
     try {
         if (my xmin != thy xmin || my xmax != thy xmax) {
             Melder_throw (U"Domains must be equal.");
         }
-        long myIndex = 1; double timeCut = 0;
-        autoTextTier him = TextTier_create (0, my xmax - my xmin);
-        for (long j = 1; j <= thy intervals -> size; j++) {
-            TextInterval cut = (TextInterval) thy intervals -> item[j];
+        long myIndex = 1;
+		double timeCut = 0.0;
+        autoTextTier him = TextTier_create (0.0, my xmax - my xmin);
+        for (long j = 1; j <= thy intervals.size; j ++) {
+            TextInterval cut = thy intervals.at [j];
             if (Melder_equ (cut -> text, label)) {
                 timeCut += cut -> xmax - cut -> xmin;
             } else {
-                 while (myIndex <= my points -> size) {
-                    TextPoint tp = (TextPoint) my points -> item[myIndex];
+                 while (myIndex <= my points.size) {
+                    TextPoint tp = my points.at [myIndex];
                     if (tp -> number < cut -> xmin - precision) {
                         // point is left of cut
                         myIndex++;
                     } else if (tp -> number < cut -> xmax + precision) {
                         // point is in (no)cut
                         double time = tp -> number - my xmin - timeCut;
-                        TextTier_addPoint (him.peek(), time, tp -> mark);
+                        TextTier_addPoint (him.get(), time, tp -> mark);
                         myIndex++;
                     } else {
                         break;
@@ -166,30 +168,29 @@ static TextTier TextTier_and_IntervalTier_cutPartsMatchingLabel (TextTier me, In
             }
         }
         his xmax -= timeCut;
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": parts not cut.");
     }
 }
 
-
 // Cut parts from me marked by labels in thee
-IntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier me, IntervalTier thee, const char32 *label, double precision) {
+autoIntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier me, IntervalTier thee, const char32 *label, double precision) {
     try {
         if (my xmin != thy xmin || my xmax != thy xmax) {
             Melder_throw (U"Domains must be equal.");
         }
-        autoNUMvector<double> durations (1, my intervals -> size);
-        for (long i = 1; i <= my intervals -> size; i++) {
-            TextInterval ti = (TextInterval) my intervals -> item[i];
+        autoNUMvector<double> durations (1, my intervals.size);
+        for (long i = 1; i <= my intervals.size; i ++) {
+            TextInterval ti = my intervals.at [i];
             durations[i] = ti -> xmax - ti -> xmin;
         }
         long myInterval = 1;
-        for (long j = 1; j <= thy intervals -> size; j++) {
-            TextInterval cut = (TextInterval) thy intervals -> item[j];
+        for (long j = 1; j <= thy intervals.size; j ++) {
+            TextInterval cut = thy intervals.at [j];
             if (Melder_equ (cut -> text, label)) { // trim
-                while (myInterval <= my intervals -> size) {
-                    TextInterval ti = (TextInterval) my intervals -> item[myInterval];
+                while (myInterval <= my intervals.size) {
+                    TextInterval ti = my intervals.at [myInterval];
                     if (ti -> xmin > cut -> xmin - precision && ti -> xmax < cut -> xmax + precision) {
                         // 1. interval completely within cut
                         durations[myInterval] = 0;
@@ -216,7 +217,7 @@ IntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier m
             }
         }
         double totalDuration = 0;
-        for (long i = 1; i <= my intervals -> size; i++) {
+        for (long i = 1; i <= my intervals.size; i ++) {
             if (durations[i] < precision) {
                 durations[i] = 0;
             }
@@ -224,51 +225,51 @@ IntervalTier IntervalTier_and_IntervalTier_cutPartsMatchingLabel (IntervalTier m
         }
         autoIntervalTier him = IntervalTier_create (0, totalDuration);
         double time = 0; long hisInterval = 1;
-        for (long i = 1; i <= my intervals -> size; i++) {
+        for (long i = 1; i <= my intervals.size; i ++) {
             if (durations[i] <= 0) continue;
-            TextInterval ti = (TextInterval) my intervals -> item[i];
+            TextInterval ti = my intervals.at [i];
             time += durations[i];
             if (fabs (time - totalDuration) > precision) {
-                IntervalTier_splitInterval (him.peek(), time, ti -> text, hisInterval, precision);
+                IntervalTier_splitInterval (him.get(), time, ti -> text, hisInterval, precision);
                 hisInterval++;
             } else { // last interval
-                TextInterval histi = (TextInterval) his intervals -> item[hisInterval];
+                TextInterval histi = his intervals.at [hisInterval];
                 TextInterval_setText (histi, ti -> text);
             }
         }
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": parts not cut.");
     }
 }
 
-TextGrid TextGrid_and_IntervalTier_cutPartsMatchingLabel (TextGrid me, IntervalTier thee, const char32 *label, double precision) {
+autoTextGrid TextGrid_and_IntervalTier_cutPartsMatchingLabel (TextGrid me, IntervalTier thee, const char32 *label, double precision) {
     try {
         if (my xmin != thy xmin || my xmax != thy xmax) {
             Melder_throw (U"Domains must be equal.");
         }
         double cutDurations = 0;
-        for (long i = 1; i <= thy intervals -> size; i++) {
-            TextInterval cut = (TextInterval) thy intervals -> item[i];
+        for (long i = 1; i <= thy intervals.size; i ++) {
+            TextInterval cut = thy intervals.at [i];
             if (Melder_equ (cut -> text, label)) {
                 cutDurations += cut -> xmax - cut -> xmin;
             }
         }
         if (cutDurations <= precision) { // Nothing to patch
-            return (TextGrid) Data_copy (me);
+            return Data_copy (me);
         }
         autoTextGrid him = TextGrid_createWithoutTiers (0, thy xmax - thy xmin - cutDurations);
-        for (long itier = 1; itier <= my tiers -> size; itier++) {
-            Function anyTier = (Function) my tiers -> item[itier];
+        for (long itier = 1; itier <= my tiers->size; itier ++) {
+            Function anyTier = my tiers->at [itier];
             if (anyTier -> classInfo == classIntervalTier) {
-                autoIntervalTier ait = IntervalTier_and_IntervalTier_cutPartsMatchingLabel ((IntervalTier) anyTier, thee, label, precision);
-                Collection_addItem (his tiers, ait.transfer());
+                autoIntervalTier newTier = IntervalTier_and_IntervalTier_cutPartsMatchingLabel ((IntervalTier) anyTier, thee, label, precision);
+                his tiers -> addItem_move (newTier.move());
             } else {
-                autoTextTier att = TextTier_and_IntervalTier_cutPartsMatchingLabel ((TextTier) anyTier, thee, label, precision);
-                Collection_addItem (his tiers, att.transfer());
+                autoTextTier newTier = TextTier_and_IntervalTier_cutPartsMatchingLabel ((TextTier) anyTier, thee, label, precision);
+                his tiers -> addItem_move (newTier.move());
             }
         }
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": no parts cut.");
     }
@@ -276,24 +277,25 @@ TextGrid TextGrid_and_IntervalTier_cutPartsMatchingLabel (TextGrid me, IntervalT
 
 // Patch thy intervals that match patchLabel into my intervals
 // The resulting IntervalTier has thy xmin as starting time and thy xmax as end time
-IntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
+autoIntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
     try {
-		autoNUMvector<double> durations (0L, my intervals -> size + 1);
-		for (long i = 1; i <= my intervals -> size; i++) {
-			TextInterval myti = (TextInterval) my intervals -> item[i];
-			durations[i] = myti -> xmax - myti -> xmin;
+		autoNUMvector<double> durations (0L, my intervals.size + 1);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval myti = my intervals.at [i];
+			durations [i] = myti -> xmax - myti -> xmin;
 		}
-		long myInterval = 1; double xShift = thy xmin - my xmin;
-        for (long j = 1; j <= thy intervals -> size; j++) {
-            TextInterval patch = (TextInterval) thy intervals -> item[j];
+		long myInterval = 1;
+		double xShift = thy xmin - my xmin;
+        for (long j = 1; j <= thy intervals.size; j ++) {
+            TextInterval patch = thy intervals.at [j];
             if (Melder_equ (patch -> text, patchLabel)) {
 				if (j == 1) {
 					xShift += durations[0] = patch -> xmax - patch -> xmin;
-				} else if (j == thy intervals -> size) {
-					durations[my intervals -> size + 1] = patch -> xmax - patch -> xmin;
+				} else if (j == thy intervals.size) {
+					durations [my intervals.size + 1] = patch -> xmax - patch -> xmin;
 				} else {
-					while (myInterval <= my intervals -> size) {
-						TextInterval ti = (TextInterval) my intervals -> item[myInterval];
+					while (myInterval <= my intervals.size) {
+						TextInterval ti = my intervals.at [myInterval];
 						double tixmin = ti -> xmin + xShift;
 						double tixmax = ti -> xmax + xShift;
 						if ((patch -> xmin > tixmin - precision) && (patch -> xmin < tixmax + precision)) {
@@ -304,8 +306,8 @@ IntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier the
 					}
 				}
             } else {
-				while (myInterval <= my intervals -> size) {
-					TextInterval ti = (TextInterval) my intervals -> item[myInterval];
+				while (myInterval <= my intervals.size) {
+					TextInterval ti = my intervals.at [myInterval];
 					double tixmax = ti -> xmax + xShift;
 					if (tixmax < patch -> xmin + precision) {
 						myInterval++;
@@ -319,49 +321,50 @@ IntervalTier IntervalTiers_patch_noBoundaries (IntervalTier me, IntervalTier the
         // first interval
 		double time = thy xmin + durations[0];
 		long hisInterval = 1;
-		if (durations[0] > 0) {
-			IntervalTier_splitInterval (him.peek(), time , U"", hisInterval, precision);
+		if (durations [0] > 0) {
+			IntervalTier_splitInterval (him.get(), time , U"", hisInterval, precision);
 			hisInterval++;
 		}
-		for (long i = 1; i <= my intervals -> size; i++) {
-			TextInterval ti = (TextInterval) my intervals -> item[i];
-			time += durations[i];
-			IntervalTier_splitInterval (him.peek(), time, ti -> text, hisInterval, precision);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval ti = my intervals.at [i];
+			time += durations [i];
+			IntervalTier_splitInterval (him.get(), time, ti -> text, hisInterval, precision);
 			hisInterval++;
 		}
-		if (durations[my intervals -> size + 1] > 0) {
-			time += durations[my intervals -> size + 1];
-			IntervalTier_splitInterval (him.peek(), time , U"", hisInterval, precision);
+		if (durations [my intervals.size + 1] > 0) {
+			time += durations [my intervals.size + 1];
+			IntervalTier_splitInterval (him.get(), time , U"", hisInterval, precision);
 		}
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": not patched.");
     }
 }
 
-static IntervalTier IntervalTiers_patch (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
+#if 0
+static autoIntervalTier IntervalTiers_patch (IntervalTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
     try {
         autoIntervalTier him = IntervalTier_create (thy xmin, thy xmax);
         long myInterval = 1, hisInterval = 1;
         double xmax = thy xmin;
-        for (long i = 1; i <= thy intervals -> size; i++) {
-            TextInterval myti, ti = (TextInterval) thy intervals -> item[i];
+        for (long i = 1; i <= thy intervals.size; i ++) {
+            TextInterval myti, ti = thy intervals.at [i];
             if (Melder_equ (ti -> text, patchLabel)) {
                 bool splitInterval = false; double endtime, split = 0;
                 if (i > 0) {
-                    while (myInterval <= my intervals -> size) {
-                        myti = (TextInterval) my intervals -> item[myInterval];
+                    while (myInterval <= my intervals.size) {
+                        myti = my intervals.at [myInterval];
                         endtime = xmax + myti -> xmax - myti -> xmin;
                         if (endtime <= ti -> xmin + precision) {
                             xmax = endtime;
-                            IntervalTier_splitInterval (him.peek(), xmax, myti -> text, hisInterval, precision);
+                            IntervalTier_splitInterval (him.get(), xmax, myti -> text, hisInterval, precision);
                             hisInterval++;
                         } else {
                             if (xmax < ti -> xmin - precision) { // split interval ???
                                 splitInterval = true;
                                 xmax = ti -> xmin;
                                 split = endtime - xmax;
-                                IntervalTier_splitInterval (him.peek(), xmax, myti -> text, hisInterval, precision);
+                                IntervalTier_splitInterval (him.get(), xmax, myti -> text, hisInterval, precision);
                                 hisInterval ++; myInterval++;
                             }
                             break;
@@ -370,44 +373,45 @@ static IntervalTier IntervalTiers_patch (IntervalTier me, IntervalTier thee, con
                     }
                 }
                 xmax += ti -> xmax - ti -> xmin;
-                IntervalTier_splitInterval (him.peek(), xmax, U"", hisInterval, precision);
+                IntervalTier_splitInterval (him.get(), xmax, U"", hisInterval, precision);
                 hisInterval++;
                 if (splitInterval) {
                     xmax += split;
-                    IntervalTier_splitInterval (him.peek(), xmax, myti -> text, hisInterval, precision);
+                    IntervalTier_splitInterval (him.get(), xmax, myti -> text, hisInterval, precision);
                     hisInterval ++;
                 }
-            } else if (i == thy intervals -> size) { // copy remaining if last interval doesn't match
-                while (myInterval <= my intervals -> size) {
-                    myti = (TextInterval) my intervals -> item[myInterval];
+            } else if (i == thy intervals.size) { // copy remaining if last interval doesn't match
+                while (myInterval <= my intervals.size) {
+                    myti = my intervals.at [myInterval];
                     xmax += myti -> xmax - myti -> xmin;
-                    IntervalTier_splitInterval (him.peek(), xmax, myti -> text, hisInterval, precision);
+                    IntervalTier_splitInterval (him.get(), xmax, myti -> text, hisInterval, precision);
                     hisInterval++;
                     myInterval++;
                 }
             }
         }
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": not patched.");
     }
 }
+#endif
 
-static TextTier TextTier_and_IntervalTier_patch (TextTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
+static autoTextTier TextTier_and_IntervalTier_patch (TextTier me, IntervalTier thee, const char32 *patchLabel, double precision) {
     try {
         long myIndex = 1;
         autoTextTier him = TextTier_create (thy xmin, thy xmax);
         double xShift = thy xmin - my xmin;
-        for (long i = 1; i <= thy intervals -> size; i++) {
-            TextInterval ti = (TextInterval) thy intervals -> item[i];
+        for (long i = 1; i <= thy intervals.size; i ++) {
+            TextInterval ti = thy intervals.at [i];
             if (Melder_equ (ti -> text, patchLabel)) {
                 if (i > 1) {
-                    while (myIndex <= my points -> size) {
-                        TextPoint tp = (TextPoint) my points -> item[myIndex];
+                    while (myIndex <= my points.size) {
+                        TextPoint tp = my points.at [myIndex];
                         double time = tp -> number + xShift;
                         if (time < ti -> xmin + precision) {
-                            autoTextPoint atp = TextPoint_create (time, tp -> mark);
-                            Collection_addItem (his points, atp.transfer());
+                            autoTextPoint newPoint = TextPoint_create (time, tp -> mark);
+                            his points. addItem_move (newPoint.move());
                         } else {
                             break;
                         }
@@ -415,58 +419,57 @@ static TextTier TextTier_and_IntervalTier_patch (TextTier me, IntervalTier thee,
                     }
                 }
                 xShift += ti -> xmax - ti -> xmin;
-           } else if (i == thy intervals -> size) {
-                while (myIndex <= my points -> size) {
-                    TextPoint tp = (TextPoint) my points -> item[myIndex];
+           } else if (i == thy intervals.size) {
+                while (myIndex <= my points.size) {
+                    TextPoint tp = my points.at [myIndex];
                     double time = tp -> number + xShift;
                     if (time < ti -> xmin + precision) {
-                        autoTextPoint atp = TextPoint_create (time, tp -> mark);
-                        Collection_addItem (his points, atp.transfer());
+                        autoTextPoint newPoint = TextPoint_create (time, tp -> mark);
+                        his points. addItem_move (newPoint.move());
                     }
                     myIndex++;
                 }
             }
         }
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": cannot patch TextTier.");
     }
 }
 
-TextGrid TextGrid_and_IntervalTier_patch (TextGrid me, IntervalTier thee, const char32 *patchLabel, double precision) {
+autoTextGrid TextGrid_and_IntervalTier_patch (TextGrid me, IntervalTier thee, const char32 *patchLabel, double precision) {
     try {
         double patchDurations;
         long numberOfPatches;
         IntervalTier_getLabelInfo (thee, patchLabel, &patchDurations, &numberOfPatches);
         if (patchDurations <= 0 || my xmax - my xmin >= thy xmax - thy xmin ) { // Nothing to patch
-            return (TextGrid) Data_copy (me);
+            return Data_copy (me);
         }
         autoTextGrid him = TextGrid_createWithoutTiers (thy xmin, thy xmax);
-        for (long itier = 1; itier <= my tiers -> size; itier++) {
-            Function anyTier = (Function) my tiers -> item[itier];
+        for (long itier = 1; itier <= my tiers->size; itier ++) {
+            Function anyTier = my tiers->at [itier];
             if (anyTier -> classInfo == classIntervalTier) {
 //                autoIntervalTier ait = IntervalTiers_patch ((IntervalTier) anyTier, thee, patchLabel, precision);
-                autoIntervalTier ait = IntervalTiers_patch_noBoundaries ((IntervalTier) anyTier, thee, patchLabel, precision);
-                Collection_addItem (his tiers, ait.transfer());
+                autoIntervalTier newTier = IntervalTiers_patch_noBoundaries ((IntervalTier) anyTier, thee, patchLabel, precision);
+                his tiers -> addItem_move (newTier.move());
             } else {
-                autoTextTier att = TextTier_and_IntervalTier_patch ((TextTier) anyTier, thee, patchLabel, precision);
-                Collection_addItem (his tiers, att.transfer());
+                autoTextTier newTier = TextTier_and_IntervalTier_patch ((TextTier) anyTier, thee, patchLabel, precision);
+                his tiers -> addItem_move (newTier.move());
             }
         }
-        return him.transfer();
+        return him;
     } catch (MelderError) {
         Melder_throw (me, U": not patched.");
     }
 }
 
 // We assume that the Sound and the SpeechSynthesizer have the same samplingFrequency
-// schakel waarschuwingen over stiltedetectie uit
-TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer me, Sound thee, TextInterval him, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer me, Sound thee, TextInterval him, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
 	try {
 		if (thy xmin != his xmin || thy xmax != his xmax) {
 			Melder_throw (U"Domains of Sound and TextGrid must be equal.");
 		}
-		if (fabs (1.0 / thy dx - my d_samplingFrequency) > NUMfpp -> eps) {
+		if (fabs (1.0 / thy dx - my d_samplingFrequency) > 1e-9) {
 			Melder_throw (U"The sampling frequencies of the SpeechSynthesizer and the Sound must be equal.");
 		}
 		long numberOfTokens = Melder_countTokens (his text);
@@ -474,10 +477,9 @@ TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer m
 			Melder_throw (U"The interval has no text.");
 		}
 		// Remove silent intervals from start and end of sounds
-		double minPitch = 200, timeStep = 0.005, precision = thy dx;
+		double minPitch = 200.0, timeStep = 0.005, precision = thy dx;
 		double t1_thee, t2_thee;
-		autoSound s_thee = Sound_trimSilencesAtStartAndEnd (thee, 0.0, minPitch, timeStep,
-			silenceThreshold, minSilenceDuration, minSoundingDuration, &t1_thee, &t2_thee);
+		autoSound s_thee = Sound_trimSilencesAtStartAndEnd (thee, 0.0, minPitch, timeStep, silenceThreshold, minSilenceDuration, minSoundingDuration, & t1_thee, & t2_thee);
 		double s_thee_duration = s_thee -> xmax - s_thee -> xmin;
 		bool hasSilence_thee = fabs (t1_thee - thy xmin) > precision || fabs (t2_thee - thy xmax) > precision;
 
@@ -488,49 +490,59 @@ TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer m
 			double wordsPerMinute_rawText = 60.0 * (str32len (his text) / 5.0) / s_thee_duration;
 			my d_wordsPerMinute =  (long) floor (0.5 * (wordsPerMinute_rawTokens + wordsPerMinute_rawText));
 		}
-		TextGrid tg2 = 0;
-		autoSound s2 = SpeechSynthesizer_and_TextInterval_to_Sound (me, him, &tg2);
-		autoTextGrid atg2 = tg2, s_atg2;
+		autoTextGrid tg2;
+		autoSound synth = SpeechSynthesizer_and_TextInterval_to_Sound (me, him, & tg2);
+		autoTextGrid silentTextGrid;
 		/*
 		 * For the synthesizer the silence threshold has to be < -30 dB, otherwise fricatives will not
-		 * be found as sounding! This is ok since silences are almost at zero amplitudes
+		 * be found as sounding! This is ok since silences are almost at zero amplitudes for synthesized sounds.
 		 * We also have to decrease the minimum silence and minimum sounding duration to catch, for example,
-		 * the final plosive "t" from the word "text"
+		 * the final plosive "t" from the synthesized sound "text"
 		 *
 		 */
-		double s2_silenceThreshold = -40, s2_minSilenceDuration = 0.05, s2_minSoundingDuration = 0.05;
-		double t1_s2, t2_s2;
-		autoSound s_s2 = Sound_trimSilencesAtStartAndEnd (s2.peek(), 0.0, minPitch, timeStep,
-			s2_silenceThreshold, s2_minSilenceDuration, s2_minSoundingDuration, &t1_s2, &t2_s2);
-		double s_s2_duration = s_s2 -> xmax - s_s2 -> xmin;
-		bool hasSilence_s2 = fabs (t1_s2 - s2 -> xmin) > precision || fabs (t2_s2 - s2 -> xmax) > precision;
-		if (hasSilence_s2) {
-			s_atg2.reset (TextGrid_extractPart (atg2.peek(), t1_s2, t2_s2, true));
+		double synth_silenceThreshold = -40.0, synth_minSilenceDuration = 0.05, synth_minSoundingDuration = 0.05;
+		double t1_synth, t2_synth;
+		autoSound synth_trimmed = Sound_trimSilencesAtStartAndEnd (synth.get(), 0.0, minPitch, timeStep,
+			synth_silenceThreshold, synth_minSilenceDuration, synth_minSoundingDuration, & t1_synth, & t2_synth);
+		double synth_trimmed_duration = synth_trimmed -> xmax - synth_trimmed -> xmin;
+		bool hasSilence_synth = fabs (t1_synth - synth -> xmin) > precision || fabs (t2_synth - synth -> xmax) > precision;
+		if (hasSilence_synth) {
+			silentTextGrid = TextGrid_extractPart (tg2.get(), t1_synth, t2_synth, true);
 		}
 		double analysisWidth = 0.02, dt = 0.005, band = 0.0;
 		// compare the durations of the two sounds to get an indication of the slope constraint of the DTW
-		double slope = s_thee_duration / s_s2_duration;
-		slope = slope > 1 ? slope : 1 / slope;
-        int constraint = slope < 1.5 ? 4 : (slope < 2 ? 3 : (slope < 3 ? 2 : 1));
-		//autoMFCC m1 = Sound_to_MFCC ((hasSilence_thee ? s_thee.peek() : thee),
+		double slope = s_thee_duration / synth_trimmed_duration;
+		slope = (slope > 1.0 ? slope : 1.0 / slope);
+        int constraint = (slope < 1.5 ? 4 : slope < 2.0 ? 3 : slope < 3.0 ? 2 : 1);
+		//autoMFCC m1 = Sound_to_MFCC ((hasSilence_thee ? s_thee.get() : thee),
 		//	numberOfCoefficients, analysisWidth, dt, f1_mel, fmax_mel, df_mel);
-		//autoMFCC m2 = Sound_to_MFCC ((hasSilence_s2 ? s_s2.peek() : s2.peek()),
+		//autoMFCC m2 = Sound_to_MFCC ((hasSilence_synth ? synth_trimmed.get() : synth.get()),
 		//	numberOfCoefficients, analysisWidth, dt, f1_mel, fmax_mel, df_mel);
 		//double wc = 1, wle = 0, wr = 0, wer = 0, dtr = 0;
 		//int matchStart = 1, matchEnd = 1, constraint = 4; // no 1/3 1/2 2/3
-		//autoDTW dtw = CCs_to_DTW (m1.peek(), m2.peek(), wc, wle, wr, wer, dtr, matchStart, matchEnd, constraint);
-        autoDTW dtw = Sounds_to_DTW ((hasSilence_thee ? s_thee.peek() : thee), (hasSilence_s2 ? s_s2.peek() : s2.peek()), analysisWidth, dt, band, constraint);
-		autoTextGrid result = DTW_and_TextGrid_to_TextGrid (dtw.peek(),
-			(hasSilence_s2 ? s_atg2.peek() : atg2.peek()), precision);
+		//autoDTW dtw = CCs_to_DTW (m1.get(), m2.get(), wc, wle, wr, wer, dtr, matchStart, matchEnd, constraint);
+        autoDTW dtw = Sounds_to_DTW ((hasSilence_thee ? s_thee.get() : thee), (hasSilence_synth ? synth_trimmed.get() : synth.get()),
+			analysisWidth, dt, band, constraint);
+		autoTextGrid result = DTW_and_TextGrid_to_TextGrid (dtw.get(), (hasSilence_synth ? silentTextGrid.get() : tg2.get()), precision);
 		if (hasSilence_thee) {
 			if (t1_thee > thy xmin) {
-				TextGrid_setEarlierStartTime (result.peek(), thy xmin, U"", U"");
+				TextGrid_setEarlierStartTime (result.get(), thy xmin, U"", U"");
 			}
-			if (t2_thee < thy xmax) {
-				TextGrid_setLaterEndTime (result.peek(), thy xmax, U"", U"");
+			if (result -> xmax > thy xmax) { // one sample or so out of sync
+				result -> xmax = thy xmax;
+				for (long itier = 1; itier <= 4; itier	++) {
+					IntervalTier tier = result -> intervalTier_cast (itier);
+					tier -> xmax = thy xmax;
+					TextInterval textInterval = tier -> intervals.at [tier -> intervals . size];
+					textInterval -> xmax = thy xmax;
+				}
+			} else {	
+				if (t2_thee < thy xmax + thy dx) {
+					TextGrid_setLaterEndTime (result.get(), thy xmax, U"", U"");
+				}
 			}
 		}
-		return result.transfer();
+		return result;
 	} catch (MelderError) {
 		Melder_throw (U"Sound and TextInterval not aligned.");
 	}
@@ -550,8 +562,7 @@ typedef struct structAlignmentOfSoundAndTextStruct {
 	double wordgap; // synthesizer
 } *SpeechSynthesizer_alignmentStruct;*/
 
-TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align2 (SpeechSynthesizer me, Sound thee, TextInterval him, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration);
-TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align2 (SpeechSynthesizer me, Sound thee, TextInterval him, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
+static autoTextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align2 (SpeechSynthesizer me, Sound thee, TextInterval him, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
     try {
         if (thy xmin != his xmin || thy xmax != his xmax) {
             Melder_throw (U"Domains of Sound and TextGrid must be equal.");
@@ -568,205 +579,208 @@ TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align2 (SpeechSynthesizer
          * the final plosive "t" from the word "text"
          *
          */
-        TextGrid tg_tmp = 0;
         double minPitch = 200, timeStep = 0.005, precision = thy dx;
-        autoSound thee_trimmed = Sound_trimSilences (thee, trimDuration, false, minPitch, timeStep, silenceThreshold,  minSilenceDuration, minSoundingDuration, &tg_tmp, trimLabel);
-        autoTextGrid thee_trimmer = tg_tmp;
+        autoTextGrid thee_trimmer;
+        autoSound thee_trimmed = Sound_trimSilences (thee, trimDuration, false, minPitch, timeStep, silenceThreshold,  minSilenceDuration, minSoundingDuration, &thee_trimmer, trimLabel);
 
         // 2. synthesize the sound from the TextInterval
 
-        autoSound synth = SpeechSynthesizer_and_TextInterval_to_Sound (me, him, &tg_tmp);
-        autoTextGrid tg_syn = tg_tmp;
+        autoTextGrid tg_syn;
+        autoSound synth = SpeechSynthesizer_and_TextInterval_to_Sound (me, him, &tg_syn);
 
         // 3. There should be no silences in the synthesized sound except at the start and finish.
-		//    Set the wordwap parameter to a small value like 0.001 s.
+		//    Set the wordwarp parameter to a small value like 0.001 s.
 
         // 4. Get DTW from the two sounds
+		
         double analysisWidth = 0.02, dt = 0.005, band = 0.0;
         int constraint = 4;
-        autoDTW dtw = Sounds_to_DTW (thee_trimmed.peek(), synth.peek(), analysisWidth, dt, band, constraint);
+        autoDTW dtw = Sounds_to_DTW (thee_trimmed.get(), synth.get(), analysisWidth, dt, band, constraint);
 
         // 6. Warp the synthesis TextGrid
-        // first make domain equal, otherwsise the warper protests
+        // first make domains equal, otherwsise the warper protests
 
-        autoTextGrid warp = DTW_and_TextGrid_to_TextGrid (dtw.peek(), tg_syn.peek(), precision);
+        autoTextGrid warp = DTW_and_TextGrid_to_TextGrid (dtw.get(), tg_syn.get(), precision);
 
         // 7. Patch the trimmed intervals back into the warped TextGrid
-        autoTextGrid result = TextGrid_and_IntervalTier_patch (warp.peek(), (IntervalTier) thee_trimmer -> tiers ->item[1], U"trim", 2 * thy dx);
+		
+        autoTextGrid result = TextGrid_and_IntervalTier_patch (warp.get(), (IntervalTier) thee_trimmer -> tiers->at [1], U"trim", 2 * thy dx);
 
-        return result.transfer();
+        return result;
     } catch (MelderError) {
         Melder_throw (thee, U": sound and TextInterval not aligned.");
     }
 }
 
-TextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align (SpeechSynthesizer me, Sound thee, IntervalTier him, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
+autoTextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align (SpeechSynthesizer me, Sound thee, IntervalTier him, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
     try {
-        if (istart < 1 || iend < istart || iend > his intervals -> size) {
+        if (istart < 1 || iend < istart || iend > his intervals.size) {
             Melder_throw (U"Not avalid interval range.");
         }
-        autoCollection textgrids = Ordered_create ();
-        TextInterval tb = (TextInterval) his intervals -> item[istart];
-        TextInterval te = (TextInterval) his intervals -> item[iend];
+        OrderedOf<structTextGrid> textgrids;
+        TextInterval tb = his intervals.at [istart];
+        TextInterval te = his intervals.at [iend];
         autoTextGrid result = TextGrid_create (tb -> xmin, te -> xmax, U"sentence clause word phoneme", U"");
         for (long iint = istart; iint <= iend; iint ++) {
-            TextInterval ti = (TextInterval) his intervals -> item[iint];
-            if (ti -> text != NULL && str32len (ti -> text) > 0) {
+            TextInterval ti = his intervals.at [iint];
+            if (ti -> text && str32len (ti -> text) > 0) {
                 autoSound sound = Sound_extractPart (thee, ti -> xmin, ti -> xmax,  kSound_windowShape_RECTANGULAR, 1, true);
-                autoTextGrid atg = SpeechSynthesizer_and_Sound_and_TextInterval_align (me, sound.peek(), ti, silenceThreshold, minSilenceDuration, minSoundingDuration);
-                Collection_addItem (textgrids.peek(), atg.transfer());
+                autoTextGrid grid = SpeechSynthesizer_and_Sound_and_TextInterval_align (me, sound.get(), ti, silenceThreshold, minSilenceDuration, minSoundingDuration);
+                textgrids. addItem_move (grid.move());
             }
         }
-        if (textgrids -> size == 0) {
+        if (textgrids.size == 0) {
             Melder_throw (U"Nothing could be aligned. Was your IntervalTier empty?");
         }
-        autoTextGrid aligned = TextGrids_to_TextGrid_appendContinuous (textgrids.peek(), true);
-        return aligned.transfer();
+        autoTextGrid aligned = TextGrids_to_TextGrid_appendContinuous (& textgrids, true);
+        return aligned;
     } catch (MelderError) {
         Melder_throw (U"No aligned TextGrid created.");
     }
 }
 
-TextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align2 (SpeechSynthesizer me, Sound thee, IntervalTier him, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
+static autoTextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align2 (SpeechSynthesizer me, Sound thee, IntervalTier him, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
     try {
-        if (istart < 1 || iend < istart || iend > his intervals -> size) {
+        if (istart < 1 || iend < istart || iend > his intervals.size) {
             Melder_throw (U"Not avalid interval range.");
         }
-        autoCollection textgrids = Ordered_create ();
-        TextInterval tb = (TextInterval) his intervals -> item[istart];
-        TextInterval te = (TextInterval) his intervals -> item[iend];
+        OrderedOf<structTextGrid> textgrids;
+        TextInterval tb = his intervals.at [istart];
+        TextInterval te = his intervals.at [iend];
         autoTextGrid result = TextGrid_create (tb -> xmin, te -> xmax, U"sentence clause word phoneme", U"");
         for (long iint = istart; iint <= iend; iint ++) {
-            TextInterval ti = (TextInterval) his intervals -> item[iint];
-            if (ti -> text != NULL && str32len (ti -> text) > 0) {
+            TextInterval ti = his intervals.at [iint];
+            if (ti -> text && str32len (ti -> text) > 0) {
                 autoSound sound = Sound_extractPart (thee, ti -> xmin, ti -> xmax,  kSound_windowShape_RECTANGULAR, 1, true);
-                autoTextGrid atg = SpeechSynthesizer_and_Sound_and_TextInterval_align2 (me, sound.peek(), ti, silenceThreshold, minSilenceDuration, minSoundingDuration, trimDuration);
-                Collection_addItem (textgrids.peek(), atg.transfer());
+                autoTextGrid grid = SpeechSynthesizer_and_Sound_and_TextInterval_align2 (me, sound.get(), ti, silenceThreshold, minSilenceDuration, minSoundingDuration, trimDuration);
+                textgrids. addItem_move (grid.move());
             }
         }
-        if (textgrids -> size == 0) {
+        if (textgrids.size == 0) {
             Melder_throw (U"Nothing could be aligned. Was your IntervalTier empty?");
         }
-        autoTextGrid aligned = TextGrids_to_TextGrid_appendContinuous (textgrids.peek(), true);
-        return aligned.transfer();
+        autoTextGrid aligned = TextGrids_to_TextGrid_appendContinuous (& textgrids, true);
+        return aligned;
     } catch (MelderError) {
         Melder_throw (U"No aligned TextGrid created.");
     }
 }
 
-TextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration) {
 	try {//TODO: check not empty tier
-		IntervalTier iTier = TextGrid_checkSpecifiedTierIsIntervalTier (him, tierNumber);
-		autoTextGrid tg = SpeechSynthesizer_and_Sound_and_IntervalTier_align (me, thee, iTier, istart, iend, silenceThreshold, minSilenceDuration, minSoundingDuration);
-		return tg.transfer();
+		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (him, tierNumber);
+		autoTextGrid grid = SpeechSynthesizer_and_Sound_and_IntervalTier_align (me, thee, tier, istart, iend, silenceThreshold, minSilenceDuration, minSoundingDuration);
+		return grid;
 	} catch (MelderError) {
-		Melder_throw (U"");
+		Melder_throw (me, U", ", thee, U", ", him, U": Cannot align.");
 	}
 }
 
 
-TextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align2 (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align2 (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration) {
     try {//TODO: check not empty tier
-    	IntervalTier iTier = TextGrid_checkSpecifiedTierIsIntervalTier (him, tierNumber);
-        autoTextGrid tg = SpeechSynthesizer_and_Sound_and_IntervalTier_align2 (me, thee, iTier, istart, iend, silenceThreshold, minSilenceDuration, minSoundingDuration, trimDuration);
-        return tg.transfer();
+    	IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (him, tierNumber);
+        autoTextGrid grid = SpeechSynthesizer_and_Sound_and_IntervalTier_align2 (me, thee, tier, istart, iend, silenceThreshold, minSilenceDuration, minSoundingDuration, trimDuration);
+        return grid;
     } catch (MelderError) {
         Melder_throw (U"");
     }
 }
 
-static Strings IntervalTier_to_Strings_withOriginData (IntervalTier me, long *from) {
+static autoStrings IntervalTier_to_Strings_withOriginData (IntervalTier me, long *from) {
 	try {
 		autoStrings thee = Thing_new (Strings);
-		thy strings = NUMvector<char32 *> (1, my intervals -> size);
-		for (long i = 1; i <= my intervals -> size; i++) {
-			TextInterval ti = (TextInterval) my intervals -> item[i];
-			if (ti -> text != 0 && ti -> text[0] != '\0') {
-				thy strings [++(thy numberOfStrings)] = Melder_dup (ti -> text);
-				from[thy numberOfStrings] = i;
+		thy strings = NUMvector<char32 *> (1, my intervals.size);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval ti = my intervals.at [i];
+			if (ti -> text && ti -> text [0] != U'\0') {
+				thy strings [++ thy numberOfStrings] = Melder_dup (ti -> text);
+				if (from) {
+					from [thy numberOfStrings] = i;
+				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Strings created.");
 	}
 }
 
-Table IntervalTiers_to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs) {
+autoTable IntervalTiers_to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs) {
 	try {
-		long numberOfTargetIntervals = target -> intervals -> size;
-		long numberOfSourceIntervals = source -> intervals -> size;
+		long numberOfTargetIntervals = target -> intervals.size;
+		long numberOfSourceIntervals = source -> intervals.size;
 		autoNUMvector<long> targetOrigin (1, numberOfTargetIntervals);
 		autoNUMvector<long> sourceOrigin (1, numberOfSourceIntervals);
 		autoStrings targets = IntervalTier_to_Strings_withOriginData (target, targetOrigin.peek());
 		autoStrings sources = IntervalTier_to_Strings_withOriginData (source, sourceOrigin.peek());
-		autoEditDistanceTable edit = EditDistanceTable_create (targets.peek(), sources.peek());
+		autoEditDistanceTable edit = EditDistanceTable_create (targets.get(), sources.get());
 		if (costs != 0) {
-			EditDistanceTable_setEditCosts (edit.peek(), costs);
-			EditDistanceTable_findPath (edit.peek(), NULL);
+			EditDistanceTable_setEditCosts (edit.get(), costs);
+			EditDistanceTable_findPath (edit.get(), nullptr);
 		}
 		long pathLength = edit -> warpingPath -> pathLength;
 		autoTable thee = Table_createWithColumnNames (pathLength - 1, U"targetInterval targetText targetStart targetEnd sourceInterval sourceText sourceStart sourceEnd operation");
 		for (long i = 2; i <= pathLength; i++) {
 			structPairOfInteger p = edit -> warpingPath -> path[i];
 			structPairOfInteger p1 = edit -> warpingPath -> path[i - 1];
-			double targetStart = NUMundefined, targetEnd =  NUMundefined;
-			double sourceStart = NUMundefined, sourceEnd =  NUMundefined;
+			double targetStart = NUMundefined, targetEnd = NUMundefined;
+			double sourceStart = NUMundefined, sourceEnd = NUMundefined;
 			const char32 * targetText = U"", *sourceText = U"";
 			long targetInterval = p.y > 1 ? targetOrigin[p.y - 1] : 0;
 			long sourceInterval = p.x > 1 ? sourceOrigin[p.x - 1] : 0;
 			if (targetInterval > 0) {
-				TextInterval ti = (TextInterval) target -> intervals -> item[targetInterval];
+				TextInterval ti = target -> intervals.at [targetInterval];
 				targetStart = ti -> xmin;
 				targetEnd =  ti -> xmax;
 				targetText = ti -> text;
 			}
 			if (sourceInterval > 0) {
-				TextInterval ti = (TextInterval) source -> intervals -> item[sourceInterval];
+				TextInterval ti = source -> intervals.at [sourceInterval];
 				sourceStart = ti -> xmin;
 				sourceEnd =  ti -> xmax;
 				sourceText = ti -> text;
 			}
 			long irow = i - 1;
 			if (p.y == p1.y) { // deletion
-				Table_setNumericValue (thee.peek(), irow, 1, 0);
-				Table_setStringValue  (thee.peek(), irow, 2, U"");
-				Table_setNumericValue (thee.peek(), irow, 3, NUMundefined);
-				Table_setNumericValue (thee.peek(), irow, 4, NUMundefined);
-				Table_setNumericValue (thee.peek(), irow, 5, sourceInterval);
-				Table_setStringValue  (thee.peek(), irow, 6, sourceText);
-				Table_setNumericValue (thee.peek(), irow, 7, sourceStart);
-				Table_setNumericValue (thee.peek(), irow, 8, sourceEnd);
-				Table_setStringValue  (thee.peek(), irow, 9, U"d");
+				Table_setNumericValue (thee.get(), irow, 1, 0);
+				Table_setStringValue  (thee.get(), irow, 2, U"");
+				Table_setNumericValue (thee.get(), irow, 3, NUMundefined);
+				Table_setNumericValue (thee.get(), irow, 4, NUMundefined);
+				Table_setNumericValue (thee.get(), irow, 5, sourceInterval);
+				Table_setStringValue  (thee.get(), irow, 6, sourceText);
+				Table_setNumericValue (thee.get(), irow, 7, sourceStart);
+				Table_setNumericValue (thee.get(), irow, 8, sourceEnd);
+				Table_setStringValue  (thee.get(), irow, 9, U"d");
 			} else if (p.x == p1.x) { // insertion
-				Table_setNumericValue (thee.peek(), irow, 1, targetInterval);
-				Table_setStringValue  (thee.peek(), irow, 2, targetText);
-				Table_setNumericValue (thee.peek(), irow, 3, targetStart);
-				Table_setNumericValue (thee.peek(), irow, 4, targetEnd);
-				Table_setNumericValue (thee.peek(), irow, 5, 0);
-				Table_setStringValue  (thee.peek(), irow, 6, U"");
-				Table_setNumericValue (thee.peek(), irow, 7, NUMundefined);
-				Table_setNumericValue (thee.peek(), irow, 8, NUMundefined);
-				Table_setStringValue  (thee.peek(), irow, 9, U"i");
+				Table_setNumericValue (thee.get(), irow, 1, targetInterval);
+				Table_setStringValue  (thee.get(), irow, 2, targetText);
+				Table_setNumericValue (thee.get(), irow, 3, targetStart);
+				Table_setNumericValue (thee.get(), irow, 4, targetEnd);
+				Table_setNumericValue (thee.get(), irow, 5, 0);
+				Table_setStringValue  (thee.get(), irow, 6, U"");
+				Table_setNumericValue (thee.get(), irow, 7, NUMundefined);
+				Table_setNumericValue (thee.get(), irow, 8, NUMundefined);
+				Table_setStringValue  (thee.get(), irow, 9, U"i");
 			} else { // substitution ?
-				Table_setNumericValue (thee.peek(), irow, 1, targetInterval);
-				Table_setStringValue  (thee.peek(), irow, 2, targetText);
-				Table_setNumericValue (thee.peek(), irow, 3, targetStart);
-				Table_setNumericValue (thee.peek(), irow, 4, targetEnd);
-				Table_setNumericValue (thee.peek(), irow, 5, sourceInterval);
-				Table_setStringValue  (thee.peek(), irow, 6, sourceText);
-				Table_setNumericValue (thee.peek(), irow, 7, sourceStart);
-				Table_setNumericValue (thee.peek(), irow, 8, sourceEnd);
-				Table_setStringValue  (thee.peek(), irow, 9, Melder_equ (targetText, sourceText) ? U" " : U"s");
+				Table_setNumericValue (thee.get(), irow, 1, targetInterval);
+				Table_setStringValue  (thee.get(), irow, 2, targetText);
+				Table_setNumericValue (thee.get(), irow, 3, targetStart);
+				Table_setNumericValue (thee.get(), irow, 4, targetEnd);
+				Table_setNumericValue (thee.get(), irow, 5, sourceInterval);
+				Table_setStringValue  (thee.get(), irow, 6, sourceText);
+				Table_setNumericValue (thee.get(), irow, 7, sourceStart);
+				Table_setNumericValue (thee.get(), irow, 8, sourceEnd);
+				Table_setStringValue  (thee.get(), irow, 9, Melder_equ (targetText, sourceText) ? U" " : U"s");
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (target, U" and ", source, U" not aligned.");
 	}
 }
 
-Table TextGrids_to_Table_textAlignmentment (TextGrid target, long ttier, TextGrid source, long stier, EditCostsTable costs) {
+autoTable TextGrids_to_Table_textAlignmentment (TextGrid target, long ttier, TextGrid source, long stier, EditCostsTable costs) {
 	try {
 		IntervalTier targetTier = TextGrid_checkSpecifiedTierIsIntervalTier (target, ttier);
 		IntervalTier sourceTier = TextGrid_checkSpecifiedTierIsIntervalTier (source, stier);
diff --git a/dwtools/SpeechSynthesizer_and_TextGrid.h b/dwtools/SpeechSynthesizer_and_TextGrid.h
index ccf35ad..88f3085 100644
--- a/dwtools/SpeechSynthesizer_and_TextGrid.h
+++ b/dwtools/SpeechSynthesizer_and_TextGrid.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2011-2012 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,23 +26,23 @@
 #include "TextGrid_extensions.h"
 #include "EditDistanceTable.h"
 
-Sound SpeechSynthesizer_and_TextInterval_to_Sound (SpeechSynthesizer me, TextInterval thee, TextGrid *tg);
+autoSound SpeechSynthesizer_and_TextInterval_to_Sound (SpeechSynthesizer me, TextInterval thee, autoTextGrid *tg);
 
-Sound SpeechSynthesizer_and_TextGrid_to_Sound (SpeechSynthesizer me, TextGrid thee, long itier, long iiint, TextGrid *tg);
+autoSound SpeechSynthesizer_and_TextGrid_to_Sound (SpeechSynthesizer me, TextGrid thee, long itier, long iiint, autoTextGrid *tg);
 
-TextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer me, Sound thee, TextInterval him,
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextInterval_align (SpeechSynthesizer me, Sound thee, TextInterval him,
 	double silenceThreshold, double minSilenceDuration, double minSoundingDuration);
-TextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align (SpeechSynthesizer me, Sound thee, IntervalTier him,
+autoTextGrid SpeechSynthesizer_and_Sound_and_IntervalTier_align (SpeechSynthesizer me, Sound thee, IntervalTier him,
 	long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration);
-TextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align (SpeechSynthesizer me, Sound thee, TextGrid him,
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align (SpeechSynthesizer me, Sound thee, TextGrid him,
 	long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration);
-TextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align2 (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration);
+autoTextGrid SpeechSynthesizer_and_Sound_and_TextGrid_align2 (SpeechSynthesizer me, Sound thee, TextGrid him, long tierNumber, long istart, long iend, double silenceThreshold, double minSilenceDuration, double minSoundingDuration, double trimDuration);
 
-Table IntervalTiers__to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs);
-Table TextGrids_to_Table_textAlignmentment (TextGrid target, long ttier, TextGrid source, long stier, EditCostsTable costs);
+autoTable IntervalTiers__to_Table_textAlignmentment (IntervalTier target, IntervalTier source, EditCostsTable costs);
+autoTable TextGrids_to_Table_textAlignmentment (TextGrid target, long ttier, TextGrid source, long stier, EditCostsTable costs);
 
 /* For testing purposes only */
-TextGrid TextGrid_and_IntervalTier_patch (TextGrid me, IntervalTier thee, const char32 *patchLabel, double precision);
-TextGrid TextGrid_and_IntervalTier_cutPartsMatchingLabel (TextGrid me, IntervalTier thee, const char32 *label, double precision);
+autoTextGrid TextGrid_and_IntervalTier_patch (TextGrid me, IntervalTier thee, const char32 *patchLabel, double precision);
+autoTextGrid TextGrid_and_IntervalTier_cutPartsMatchingLabel (TextGrid me, IntervalTier thee, const char32 *label, double precision);
 
 #endif // _SpeechSynthesizer_and_TextGrid_h_
diff --git a/dwtools/SpeechSynthesizer_def.h b/dwtools/SpeechSynthesizer_def.h
index 5bf2165..bccf107 100644
--- a/dwtools/SpeechSynthesizer_def.h
+++ b/dwtools/SpeechSynthesizer_def.h
@@ -1,6 +1,6 @@
 /* SpeechSynthesizer_def.h
  *
- * Copyright (C) 2011-2012 David Weenink
+ * Copyright (C) 2011-2012, 2015-2016 David Weenink
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
  */
 
 #define ooSTRUCT SpeechSynthesizerVoice
-oo_DEFINE_CLASS (SpeechSynthesizerVoice, Data)
+oo_DEFINE_CLASS (SpeechSynthesizerVoice, Daata)
 	oo_STRING (d_v_name)
 
 	oo_LONG (d_phoneme_tab_ix)  // phoneme table number
@@ -63,8 +63,7 @@ oo_END_CLASS (SpeechSynthesizerVoice)
 
 
 #define ooSTRUCT SpeechSynthesizer
-oo_DEFINE_CLASS (SpeechSynthesizer, Data)
-
+oo_DEFINE_CLASS (SpeechSynthesizer, Daata)
 	// sythesizers language /voice
 	oo_STRING (d_voiceLanguageName)
 	oo_STRING (d_voiceVariantName)
@@ -84,19 +83,19 @@ oo_DEFINE_CLASS (SpeechSynthesizer, Data)
 
 	#if !oo_READING && !oo_WRITING
 		// Filled by the call back
-		oo_OBJECT(Table, 0, d_events)
+		oo_AUTO_OBJECT (Table, 0, d_events)
 		oo_DOUBLE (d_internalSamplingFrequency)
 		oo_LONG (d_numberOfSamples)
 		oo_LONG (d_wavCapacity)
 		oo_INT_VECTOR (d_wav, d_wavCapacity)
 	#endif
 	#if oo_READING
-		SpeechSynthesizer_initSoundBuffer (this);
+		SpeechSynthesizer_initEspeak ();
+		SpeechSynthesizer_changeLanguageNameToCurrent (this);
 	#endif
 	#if oo_DECLARING
-		protected:
-		// overridden methods:
-			virtual void v_info ();
+		void v_info ()
+			override;
 	#endif
 
 oo_END_CLASS (SpeechSynthesizer)
diff --git a/dwtools/Strings_extensions.cpp b/dwtools/Strings_extensions.cpp
index 588e928..0b8c907 100644
--- a/dwtools/Strings_extensions.cpp
+++ b/dwtools/Strings_extensions.cpp
@@ -1,20 +1,19 @@
 /* Strings_extensions.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,7 +35,7 @@
 #include "Strings_extensions.h"
 #include "NUM2.h"
 
-Strings Strings_createFixedLength (long numberOfStrings) {
+autoStrings Strings_createFixedLength (long numberOfStrings) {
 	try {
 		if (numberOfStrings <= 0) {
 			Melder_throw (U"The number of strings must be positive.");
@@ -44,13 +43,13 @@ Strings Strings_createFixedLength (long numberOfStrings) {
 		autoStrings me = Thing_new (Strings);
 		my strings = NUMvector<char32 *> (1, numberOfStrings);
 		my numberOfStrings = numberOfStrings;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings not created.");
 	}
 }
 
-Strings Strings_createAsCharacters (const char32 *string) {
+autoStrings Strings_createAsCharacters (const char32 *string) {
 	try {
 		autoStrings me = Thing_new (Strings);
 		my numberOfStrings = str32len (string);
@@ -58,13 +57,13 @@ Strings Strings_createAsCharacters (const char32 *string) {
 		for (long i = 1; i <= my numberOfStrings; i++) {
 			my strings[i] = Melder_dup (Melder_character (*string++));
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings from characters not created.");
 	}
 }
 
-Strings Strings_createAsTokens (const char32 *string) {
+autoStrings Strings_createAsTokens (const char32 *string) {
 	try {
 		autoStrings me = Thing_new (Strings);
 		my numberOfStrings =  Melder_countTokens (string);
@@ -73,7 +72,7 @@ Strings Strings_createAsTokens (const char32 *string) {
 		for (char32 *token = Melder_firstToken (string); token != 0; token = Melder_nextToken ()) {
 			my strings[i++] = Melder_dup (token);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings from characters not created.");
 	}
@@ -88,59 +87,54 @@ long Strings_findString (Strings me, const char32 *string) {
 	return 0;
 }
 
-Strings Strings_append (Collection me) {
+autoStrings Strings_append (OrderedOf<structStrings>* me) {
 	try {
 		long index = 1, numberOfStrings = 0;
 
-		for (long i = 1; i <= my size; i++) {
-			Strings s = (Strings) my item[i];
+		for (long i = 1; i <= my size; i ++) {
+			Strings s = my at [i];
 			numberOfStrings += s -> numberOfStrings;
 		}
 
 		autoStrings thee = Strings_createFixedLength (numberOfStrings);
 
-		for (long i = 1; i <= my size; i++) {
-			Strings s = (Strings) my item[i];
-			for (long j = 1; j <= s -> numberOfStrings; j++, index++) {
-				if (s -> strings[j] == 0) {
-					continue;
-				}
-				thy strings [index] = Melder_dup (s -> strings[j]);
+		for (long i = 1; i <= my size; i ++) {
+			Strings s = my at [i];
+			for (long j = 1; j <= s -> numberOfStrings; j ++, index ++) {
+				thy strings [index] = Melder_dup (s -> strings [j]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not appended.");
 	}
 }
 
-Strings Strings_change (Strings me, const char32 *search, const char32 *replace, int maximumNumberOfReplaces,
-                        long *nmatches, long *nstringmatches, int use_regexp) {
+autoStrings Strings_change (Strings me, const char32 *search, const char32 *replace, int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp) {
 	try {
 		autoStrings thee = Thing_new (Strings);
-		char32 **strings = strs_replace (my strings, 1, my numberOfStrings, search, replace, maximumNumberOfReplaces,
-		                                  nmatches, nstringmatches, use_regexp);
+		char32 **strings = strs_replace (my strings, 1, my numberOfStrings, search, replace, maximumNumberOfReplaces, nmatches, nstringmatches, use_regexp);
 		thy numberOfStrings = my numberOfStrings;
 		thy strings = strings;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not changed.");
 	}
 }
 
-Strings strings_to_Strings (char32 **strings, long from, long to) {
+autoStrings strings_to_Strings (char32 **strings, long from, long to) {
 	try {
 		autoStrings thee = Strings_createFixedLength (to - from + 1);
 		for (long i = from; i <= to; i++) {
 			thy strings[i - from + 1]  = Melder_dup (strings[i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Strings not created.");
 	}
 }
 
-Strings Strings_extractPart (Strings me, long from, long to) {
+autoStrings Strings_extractPart (Strings me, long from, long to) {
 	try {
 		if (from < 1 || to > my numberOfStrings || from > to) Melder_throw
 			(U"Strings_extractPart: begin and end must be in interval [1, ", my numberOfStrings, U"].");
@@ -150,13 +144,13 @@ Strings Strings_extractPart (Strings me, long from, long to) {
 	}
 }
 
-Strings strings_to_Strings_link (char32 **strings, long n) {
+autoStrings strings_to_Strings_link (char32 **strings, long n) {
 	try {
 		autoStrings me = Strings_createFixedLength (n);
 		for (long i = 1; i <= n; i++) {
 			my strings[i] = strings[i];
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings not linked.");
 	}
@@ -164,23 +158,23 @@ Strings strings_to_Strings_link (char32 **strings, long n) {
 
 void Strings_unlink (Strings me) {
 	for (long i = 1; i <= my numberOfStrings; i++) {
-		my strings[i] = 0;
+		my strings[i] = nullptr;
 	}
 }
 
-Permutation Strings_to_Permutation (Strings me, int sort) {
+autoPermutation Strings_to_Permutation (Strings me, int sort) {
 	try {
 		autoPermutation thee = Permutation_create (my numberOfStrings);
 		if (sort != 0) {
 			NUMindexx_s (my strings, my numberOfStrings, thy p);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Permutation created.");
 	}
 }
 
-Strings Strings_and_Permutation_permuteStrings (Strings me, Permutation thee) {
+autoStrings Strings_and_Permutation_permuteStrings (Strings me, Permutation thee) {
 	try {
 		if (my numberOfStrings != thy numberOfElements) Melder_throw (U"Strings_and_Permutation_permuteStrings: "
 			        U"The number of strings and the number of elements in the Permutation must be equal.");
@@ -189,91 +183,91 @@ Strings Strings_and_Permutation_permuteStrings (Strings me, Permutation thee) {
 			long index = thy p[i];
 			his strings[i] = Melder_dup (my strings[index]);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no permuted Strings created.");
 	}
 }
 
-StringsIndex Stringses_to_StringsIndex (Strings me, Strings classes) {
+autoStringsIndex Stringses_to_StringsIndex (Strings me, Strings classes) {
 	try {
 		autoStringsIndex tmp = Strings_to_StringsIndex (classes);
-		long numberOfClasses = tmp -> classes -> size;
+		long numberOfClasses = tmp -> classes->size;
 
 		autoStringsIndex him = StringsIndex_create (my numberOfStrings);
-		for (long i = 1; i <= numberOfClasses; i++) {
-			SimpleString t = (SimpleString) tmp -> classes -> item[i];
+		for (long i = 1; i <= numberOfClasses; i ++) {
+			SimpleString t = (SimpleString) tmp -> classes->at [i];   // FIXME cast
 			autoSimpleString t2 = Data_copy (t);
-			Collection_addItem (his classes, t2.transfer());
+			his classes -> addItem_move (t2.move());
 		}
-		for (long j = 1; j <= my numberOfStrings; j++) {
+		for (long j = 1; j <= my numberOfStrings; j ++) {
 			long index = 0;
-			char32 *stringsj = my strings[j];
-			for (long i = 1; i <= numberOfClasses; i++) {
-				SimpleString ss = (SimpleString) his classes -> item[i];
-				if (Melder_cmp (stringsj, ss -> string) == 0) {
+			char32 *stringsj = my strings [j];
+			for (long i = 1; i <= numberOfClasses; i ++) {
+				SimpleString ss = (SimpleString) his classes->at [i];   // FIXME cast
+				if (Melder_equ (stringsj, ss -> string)) {
 					index = i;
 					break;
 				}
 			}
-			his classIndex[j] = index;
+			his classIndex [j] = index;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no StringsIndex created.");
 	}
 }
 
-StringsIndex Strings_to_StringsIndex (Strings me) {
+autoStringsIndex Strings_to_StringsIndex (Strings me) {
 	try {
 		autoStringsIndex thee = StringsIndex_create (my numberOfStrings);
 		autoPermutation sorted = Strings_to_Permutation (me, 1);
 		long numberOfClasses = 0;
-		char32 *strings = NULL;
-		for (long i = 1; i <= sorted -> numberOfElements; i++) {
-			long index = sorted -> p[i];
-			char32 *stringsi = my strings[index];
+		char32 *strings = nullptr;
+		for (long i = 1; i <= sorted -> numberOfElements; i ++) {
+			long index = sorted -> p [i];
+			char32 *stringsi = my strings [index];
 			if (i == 1 || Melder_cmp (strings, stringsi) != 0) {
-				numberOfClasses++;
+				numberOfClasses ++;
 				autoSimpleString him = SimpleString_create (stringsi);
-				Collection_addItem (thy classes, him.transfer());
+				thy classes -> addItem_move (him.move());
 				strings = stringsi;
 			}
-			thy classIndex[index] = numberOfClasses;
+			thy classIndex [index] = numberOfClasses;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no StringsIndex created.");
 	}
 }
 
-Strings StringsIndex_to_Strings (StringsIndex me) {
+autoStrings StringsIndex_to_Strings (StringsIndex me) {
 	try {
 		autoStrings thee = Strings_createFixedLength (my numberOfElements);
-		for (long i = 1; i <= thy numberOfStrings; i++) {
-			SimpleString s = (SimpleString) my classes -> item[my classIndex[i]];
-			thy strings[i] = Melder_dup (s -> string);
+		for (long i = 1; i <= thy numberOfStrings; i ++) {
+			SimpleString s = (SimpleString) my classes->at [my classIndex [i]];   // FIXME cast, FIXME classIndex
+			thy strings [i] = Melder_dup (s -> string);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Strings created.");
 	}
 }
 
-StringsIndex Table_to_StringsIndex_column (Table me, long column) {
+autoStringsIndex Table_to_StringsIndex_column (Table me, long column) {
 	try {
 		if (column < 1 || column > my numberOfColumns) {
 			Melder_throw (U"Invalid column number.");
 		}
-		long numberOfRows = my rows -> size;
+		long numberOfRows = my rows.size;
 		Table_numericize_Assert (me, column);
 		autoNUMvector<char32 *> groupLabels (1, numberOfRows);
-		for (long irow = 1; irow <= numberOfRows; irow++) {
-			groupLabels[irow] = ((TableRow) my rows -> item [irow]) -> cells [column] .string;
+		for (long irow = 1; irow <= numberOfRows; irow ++) {
+			groupLabels [irow] = my rows.at [irow] -> cells [column] .string;
 		}
 		autoStrings thee = strings_to_Strings (groupLabels.peek(), 1, numberOfRows);
-		autoStringsIndex him = Strings_to_StringsIndex (thee.peek());
-		return him.transfer();
+		autoStringsIndex him = Strings_to_StringsIndex (thee.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"No StringsIndex created from column ", column, U".");
 	}
diff --git a/dwtools/Strings_extensions.h b/dwtools/Strings_extensions.h
index 9447a37..843b09c 100644
--- a/dwtools/Strings_extensions.h
+++ b/dwtools/Strings_extensions.h
@@ -2,21 +2,20 @@
 #define _Strings_extensions_h_
 /* Strings_extensions.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -35,38 +34,42 @@
 #include "Table.h"
 
 
-Strings Strings_createFixedLength (long numberOfStrings);
-Strings Strings_createAsCharacters (const char32 *string);
-Strings Strings_createAsTokens (const char32 *string);
+autoStrings Strings_createFixedLength (long numberOfStrings);
+
+autoStrings Strings_createAsCharacters (const char32 *string);
+
+autoStrings Strings_createAsTokens (const char32 *string);
 
 long Strings_findString (Strings me, const char32 *string);
-Strings Strings_append (Collection me);
 
-Strings Strings_change (Strings me, const char32 *search, const char32 *replace,
-	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches,
-	int use_regexp);
+autoStrings Strings_append (OrderedOf<structStrings>* me);
+
+autoStrings Strings_change (Strings me, const char32 *search, const char32 *replace,
+	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp);
 
-Strings strings_to_Strings (char32 **strings, long from, long to);
+autoStrings strings_to_Strings (char32 **strings, long from, long to);
 
 // If the Strings is only an intermediate object to achieve other goals, use the following two routines to avoid copying.
-Strings strings_to_Strings_link (char32** strings, long n);
+autoStrings strings_to_Strings_link (char32** strings, long n);
 // for (i=1; i<= n; i++) my strings[i] = strings[i];
+
 void Strings_unlink (Strings me);
-// for (i=1; i<= my numberOfStrings; i++) my strings[i] = NULL;
+// for (i=1; i<= my numberOfStrings; i++) my strings[i] = nullptr;
+
+autoStrings Strings_extractPart (Strings me, long start, long end);
 
-Strings Strings_extractPart (Strings me, long start, long end);
 
+autoStringsIndex Strings_to_StringsIndex (Strings me);
 
-StringsIndex Strings_to_StringsIndex (Strings me);
-StringsIndex Stringses_to_StringsIndex (Strings me, Strings classes);
+autoStringsIndex Stringses_to_StringsIndex (Strings me, Strings classes);
 /* Construct the index with strings in classes, index[i]=0 when my strings[i] doesn't occur in classes */
 
-StringsIndex Table_to_StringsIndex_column (Table me, long column);
+autoStringsIndex Table_to_StringsIndex_column (Table me, long column);
 
-Strings StringsIndex_to_Strings (StringsIndex me);
+autoStrings StringsIndex_to_Strings (StringsIndex me);
 
-Permutation Strings_to_Permutation (Strings me, int sort);
+autoPermutation Strings_to_Permutation (Strings me, int sort);
 
-Strings Strings_and_Permutation_permuteStrings (Strings me, Permutation thee);
+autoStrings Strings_and_Permutation_permuteStrings (Strings me, Permutation thee);
 
 #endif /* _Strings_extensions_h_ */
diff --git a/dwtools/TableOfReal_and_Permutation.cpp b/dwtools/TableOfReal_and_Permutation.cpp
index b4a9e12..7557c40 100644
--- a/dwtools/TableOfReal_and_Permutation.cpp
+++ b/dwtools/TableOfReal_and_Permutation.cpp
@@ -1,20 +1,19 @@
 /* TableOfReal_and_Permutation.cpp
  *
- * Copyright (C) 2005-2014 David Weenink
+ * Copyright (C) 2005-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,7 +24,7 @@
 #include "TableOfReal_extensions.h"
 #include "NUM2.h"
 
-TableOfReal TableOfReal_and_Permutation_permuteRows (TableOfReal me, Permutation thee) {
+autoTableOfReal TableOfReal_and_Permutation_permuteRows (TableOfReal me, Permutation thee) {
 	try {
 		if (my numberOfRows != thy numberOfElements) {
 			Melder_throw (U"The number of rows in the table and the number of elements in the Permutation must be equal.");
@@ -33,22 +32,22 @@ TableOfReal TableOfReal_and_Permutation_permuteRows (TableOfReal me, Permutation
 		autoTableOfReal him = TableOfReal_create (my numberOfRows, my numberOfColumns);
 
 		for (long i = 1; i <= thy numberOfElements; i++) {
-			TableOfReal_copyOneRowWithLabel (me, him.peek(), thy p[i], i);
+			TableOfReal_copyOneRowWithLabel (me, him.get(), thy p[i], i);
 		}
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			TableOfReal_setColumnLabel (him.peek(), j, my columnLabels[j]);
+			TableOfReal_setColumnLabel (him.get(), j, my columnLabels[j]);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not permuted.");
 	}
 }
 
-Permutation TableOfReal_to_Permutation_sortRowLabels (TableOfReal me) {
+autoPermutation TableOfReal_to_Permutation_sortRowLabels (TableOfReal me) {
 	try {
 		autoPermutation thee = Permutation_create (my numberOfRows);
 		NUMindexx_s (my rowLabels, my numberOfRows, thy p);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Permutation created.");
 	}
diff --git a/dwtools/TableOfReal_and_Permutation.h b/dwtools/TableOfReal_and_Permutation.h
index 5c14387..d11bbf6 100644
--- a/dwtools/TableOfReal_and_Permutation.h
+++ b/dwtools/TableOfReal_and_Permutation.h
@@ -2,21 +2,20 @@
 #define _TableOfReal_and_Permutation_h_
 /* TableOfReal_and_Permutation.h
  *
- * Copyright (C) 2005-2011 David Weenink
+ * Copyright (C) 2005-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,10 +26,10 @@
 #include "Permutation.h"
 #include "TableOfReal.h"
 
-TableOfReal TableOfReal_and_Permutation_permuteRows (TableOfReal me, Permutation thee);
+autoTableOfReal TableOfReal_and_Permutation_permuteRows (TableOfReal me, Permutation thee);
 /*
 	Permutation (n1,n2,..nn) new his z[1] = my z[n1], his z[2] = my z[n2], ..*/
 
-Permutation TableOfReal_to_Permutation_sortRowLabels (TableOfReal me);
+autoPermutation TableOfReal_to_Permutation_sortRowLabels (TableOfReal me);
 
 #endif /* _TableOfReal_and_Permutation_h_ */
diff --git a/dwtools/TableOfReal_and_SVD.cpp b/dwtools/TableOfReal_and_SVD.cpp
index 127b1f4..9d33f91 100644
--- a/dwtools/TableOfReal_and_SVD.cpp
+++ b/dwtools/TableOfReal_and_SVD.cpp
@@ -1,20 +1,19 @@
 /* TableOfReal_and_SVD.cpp
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,65 +26,65 @@
 
 #define MIN(m,n) ((m) < (n) ? (m) : (n))
 
-TableOfReal SVD_to_TableOfReal (SVD me, long from, long to) {
+autoTableOfReal SVD_to_TableOfReal (SVD me, long from, long to) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 		SVD_synthesize (me, from, to, thy data);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no TableOfReal synthesized.");
 	}
 }
 
-SVD TableOfReal_to_SVD (TableOfReal me) {
+autoSVD TableOfReal_to_SVD (TableOfReal me) {
 	try {
 		autoSVD thee = SVD_create_d (my data, my numberOfRows, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no SVD created.");
 	}
 }
 
-TableOfReal SVD_extractLeftSingularVectors (SVD me) {
+autoTableOfReal SVD_extractLeftSingularVectors (SVD me) {
 	try {
 		long mn_min = MIN (my numberOfRows, my numberOfColumns);
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, mn_min);
 		NUMmatrix_copyElements (my u, thy data, 1, my numberOfRows, 1, mn_min);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": left singular vector not extracted.");
 	}
 }
 
-TableOfReal SVD_extractRightSingularVectors (SVD me) {
+autoTableOfReal SVD_extractRightSingularVectors (SVD me) {
 	try {
 		long mn_min = MIN (my numberOfRows, my numberOfColumns);
 		autoTableOfReal thee = TableOfReal_create (my numberOfColumns, mn_min);
 		NUMmatrix_copyElements (my v, thy data, 1, my numberOfColumns, 1, mn_min);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": right singular vector not extracted.");
 	}
 }
 
-TableOfReal SVD_extractSingularValues (SVD me) {
+autoTableOfReal SVD_extractSingularValues (SVD me) {
 	try {
 		long mn_min = MIN (my numberOfRows, my numberOfColumns);
 		autoTableOfReal thee = TableOfReal_create (1, mn_min);
 		NUMvector_copyElements (my d, thy data[1], 1, mn_min);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": singular values not extracted.");
 	}
 }
 
-GSVD TablesOfReal_to_GSVD (TableOfReal me, TableOfReal thee) {
+autoGSVD TablesOfReal_to_GSVD (TableOfReal me, TableOfReal thee) {
 	try {
 		if (my numberOfColumns != thy numberOfColumns) {
 			Melder_throw (U"Both tables must have the same number of columns.");
 		}
 		autoGSVD him = GSVD_create_d (my data, my numberOfRows, my numberOfColumns, thy data, thy numberOfRows);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"GSVD not constructed from TablesOfReal.");
 	}
diff --git a/dwtools/TableOfReal_and_SVD.h b/dwtools/TableOfReal_and_SVD.h
index eebb0da..4977988 100644
--- a/dwtools/TableOfReal_and_SVD.h
+++ b/dwtools/TableOfReal_and_SVD.h
@@ -1,22 +1,21 @@
 #ifndef _TableOfReal_and_SVD_h_
-#define TableOfReal_and_SVD_h_
+#define _TableOfReal_and_SVD_h_
 /* TableOfReal_and_SVD.h
  *
- * Copyright (C) 1993-2011 David Weenink
+ * Copyright (C) 1993-2011, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,12 +26,16 @@
 #include "SVD.h"
 #include "TableOfReal.h"
 
-SVD TableOfReal_to_SVD (TableOfReal me);
-GSVD TablesOfReal_to_GSVD (TableOfReal me, TableOfReal thee);
+autoSVD TableOfReal_to_SVD (TableOfReal me);
 
-TableOfReal SVD_to_TableOfReal (SVD me, long from, long to);
-TableOfReal SVD_extractLeftSingularVectors (SVD me);
-TableOfReal SVD_extractRightSingularVectors (SVD me);
-TableOfReal SVD_extractSingularValues (SVD me);
+autoGSVD TablesOfReal_to_GSVD (TableOfReal me, TableOfReal thee);
+
+autoTableOfReal SVD_to_TableOfReal (SVD me, long from, long to);
+
+autoTableOfReal SVD_extractLeftSingularVectors (SVD me);
+
+autoTableOfReal SVD_extractRightSingularVectors (SVD me);
+
+autoTableOfReal SVD_extractSingularValues (SVD me);
 
 #endif // _TableOfReal_and_SVD_h_
diff --git a/dwtools/TableOfReal_extensions.cpp b/dwtools/TableOfReal_extensions.cpp
index d0ed34d..f751709 100644
--- a/dwtools/TableOfReal_extensions.cpp
+++ b/dwtools/TableOfReal_extensions.cpp
@@ -1,20 +1,19 @@
 /* TableOfReal_extensions.cpp
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -63,7 +62,7 @@
 #include "regularExp.h"
 #include "Formula.h"
 
-#define EMPTY_STRING(s) ((s) == NULL || s[0] == '\0')
+#define EMPTY_STRING(s) (! (s) || s[0] == '\0')
 #define MAX(m,n) ((m) > (n) ? (m) : (n))
 #define MIN(m,n) ((m) < (n) ? (m) : (n))
 
@@ -71,17 +70,18 @@
 #define Graphics_TWOWAYARROW 2
 #define Graphics_LINE 3
 
-static TableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize);
-static TableOfReal TableOfReal_and_TableOfReal_rowCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize);
+static autoTableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize);
+static autoTableOfReal TableOfReal_and_TableOfReal_rowCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize);
 
 long TableOfReal_getColumnIndexAtMaximumInRow (TableOfReal me, long rowNumber) {
 	long columnNumber = 0;
 	if (rowNumber > 0 && rowNumber <= my numberOfRows) {
-		double max = my data[rowNumber][1];
+		double max = my data [rowNumber] [1];
 		columnNumber = 1;
-		for (long icol = 2; icol <= my numberOfColumns; icol++) {
-			if (my data[rowNumber][icol] > max) {
-				max = my data[rowNumber][icol]; columnNumber = icol;
+		for (long icol = 2; icol <= my numberOfColumns; icol ++) {
+			if (my data [rowNumber] [icol] > max) {
+				max = my data [rowNumber] [icol];
+				columnNumber = icol;
 			}
 		}
 	}
@@ -93,42 +93,6 @@ const char32 *TableOfReal_getColumnLabelAtMaximumInRow (TableOfReal me, long row
 	return my v_getColStr (columnNumber);
 }
 
-
-int TableOfReal_areAllCellsDefined (TableOfReal me, long rb, long re, long cb, long ce) {
-	if (re <= rb || rb < 1 || re > my numberOfRows) {
-		rb = 1; re = my numberOfRows;
-	}
-	if (ce <= cb || cb < 1 || ce > my numberOfColumns) {
-		cb = 1; ce = my numberOfColumns;
-	}
-
-	autoNUMvector<long> invalid_columns (1, my numberOfColumns);
-
-	long numberOfInvalidRows = 0, numberOfInvalidColumns = 0;
-	for (long i = rb; i <= re; i++) {
-		for (long j = cb; j <= ce; j++) {
-			long rowcount = 0;
-			if (my data[i][j] == NUMundefined) {
-				invalid_columns[j]++;
-				rowcount++;
-			}
-			if (rowcount > 0) {
-				numberOfInvalidRows++;
-			}
-		}
-	}
-	if (numberOfInvalidRows != 0) {
-		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (invalid_columns[j] > 0) {
-				numberOfInvalidColumns++;
-			}
-		}
-		Melder_throw (numberOfInvalidRows == 1 ? U"One row contains invalid data." : (numberOfInvalidColumns == 1 ?  U"One column contains invalid data." :
-		              U"Several rows and columns contain invalid data."));
-	}
-	return numberOfInvalidRows == 0 ? 1 : 0;
-}
-
 void TableOfReal_copyOneRowWithLabel (TableOfReal me, TableOfReal thee, long myrow, long thyrow) {
 	try {
 		if (me == thee && myrow == thyrow) {
@@ -151,7 +115,7 @@ void TableOfReal_copyOneRowWithLabel (TableOfReal me, TableOfReal thee, long myr
 }
 
 int TableOfReal_hasRowLabels (TableOfReal me) {
-	if (my rowLabels == NULL) {
+	if (! my rowLabels) {
 		return 0;
 	}
 	for (long i = 1; i <= my numberOfRows; i++) {
@@ -163,7 +127,7 @@ int TableOfReal_hasRowLabels (TableOfReal me) {
 }
 
 int TableOfReal_hasColumnLabels (TableOfReal me) {
-	if (my columnLabels == NULL) {
+	if (! my columnLabels) {
 		return 0;
 	}
 	for (long i = 1; i <= my numberOfColumns; i++) {
@@ -174,7 +138,7 @@ int TableOfReal_hasColumnLabels (TableOfReal me) {
 	return 1;
 }
 
-TableOfReal TableOfReal_createIrisDataset () {
+autoTableOfReal TableOfReal_createIrisDataset () {
 	double iris[150][4] = {
 		{5.1, 3.5, 1.4, 0.2}, {4.9, 3.0, 1.4, 0.2}, {4.7, 3.2, 1.3, 0.2}, {4.6, 3.1, 1.5, 0.2}, {5.0, 3.6, 1.4, 0.2},
 		{5.4, 3.9, 1.7, 0.4}, {4.6, 3.4, 1.4, 0.3}, {5.0, 3.4, 1.5, 0.2}, {4.4, 2.9, 1.4, 0.2}, {4.9, 3.1, 1.5, 0.1},
@@ -211,26 +175,26 @@ TableOfReal TableOfReal_createIrisDataset () {
 	try {
 		autoTableOfReal me = TableOfReal_create (150, 4);
 
-		TableOfReal_setColumnLabel (me.peek(), 1, U"sl");
-		TableOfReal_setColumnLabel (me.peek(), 2, U"sw");
-		TableOfReal_setColumnLabel (me.peek(), 3, U"pl");
-		TableOfReal_setColumnLabel (me.peek(), 4, U"pw");
+		TableOfReal_setColumnLabel (me.get(), 1, U"sl");
+		TableOfReal_setColumnLabel (me.get(), 2, U"sw");
+		TableOfReal_setColumnLabel (me.get(), 3, U"pl");
+		TableOfReal_setColumnLabel (me.get(), 4, U"pw");
 		for (long i = 1; i <= 150; i++) {
 			int kind = (i - 1) / 50 + 1;
 			char32 const *label = kind == 1 ? U"1" : kind == 2 ? U"2" : U"3";
 			for (long j = 1; j <= 4; j++) {
 				my data[i][j] = iris[i - 1][j - 1];
 			}
-			TableOfReal_setRowLabel (me.peek(), i, label);
+			TableOfReal_setRowLabel (me.get(), i, label);
 		}
-		Thing_setName (me.peek(), U"iris");
-		return me.transfer();
+		Thing_setName (me.get(), U"iris");
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal from iris data not created.");
 	}
 }
 
-Strings TableOfReal_extractRowLabels (TableOfReal me) {
+autoStrings TableOfReal_extractRowLabels (TableOfReal me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 
@@ -244,13 +208,13 @@ Strings TableOfReal_extractRowLabels (TableOfReal me) {
 				thy strings[i] = Melder_dup (label);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": row labels not extracted.");
 	}
 }
 
-Strings TableOfReal_extractColumnLabels (TableOfReal me) {
+autoStrings TableOfReal_extractColumnLabels (TableOfReal me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 
@@ -263,13 +227,13 @@ Strings TableOfReal_extractColumnLabels (TableOfReal me) {
 				thy strings[i] = Melder_dup (label);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": column labels not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_transpose (TableOfReal me) {
+autoTableOfReal TableOfReal_transpose (TableOfReal me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfColumns, my numberOfRows);
 
@@ -280,15 +244,15 @@ TableOfReal TableOfReal_transpose (TableOfReal me) {
 		}
 		NUMstrings_copyElements (my rowLabels, thy columnLabels, 1, my numberOfRows);
 		NUMstrings_copyElements (my columnLabels, thy rowLabels, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not transposed.");
 	}
 }
 
-int TableOfReal_to_Pattern_and_Categories (TableOfReal me, long fromrow, long torow, long fromcol, long tocol,
-        Pattern *p, Categories *c) {
-	*p = 0; *c = 0;
+void TableOfReal_to_Pattern_and_Categories (TableOfReal me, long fromrow, long torow, long fromcol, long tocol,
+	autoPattern *p, autoCategories *c)
+{
 	try {
 		long ncol = my numberOfColumns, nrow = my numberOfRows;
 
@@ -313,40 +277,46 @@ int TableOfReal_to_Pattern_and_Categories (TableOfReal me, long fromrow, long to
 		autoCategories ac = Categories_create ();
 
 		long row = 1;
-		for (long i = fromrow; i <= torow; i++, row++) {
-			char32 const *s = my rowLabels[i] ? my rowLabels[i] : U"?";
+		for (long i = fromrow; i <= torow; i ++, row ++) {
+			char32 const *s = my rowLabels [i] ? my rowLabels [i] : U"?";
 			autoSimpleString item = SimpleString_create (s);
-			Collection_addItem (ac.peek(), item.transfer());
+			ac -> addItem_move (item.move());
 			long col = 1;
-			for (long j = fromcol; j <= tocol; j++, col++) {
-				ap -> z[row][col] = my data[i][j];
+			for (long j = fromcol; j <= tocol; j ++, col ++) {
+				ap -> z [row] [col] = my data [i] [j];
 			}
 		}
-		*p = ap.transfer();
-		*c = ac.transfer();
-		return 1;
+		*p = ap.move();
+		*c = ac.move();
 	} catch (MelderError) {
 		Melder_throw (U"Pattern and Categories not created from TableOfReal.");
 	}
 }
 
-void TableOfReal_getColumnExtrema (TableOfReal me, long col, double *min, double *max) {
-	*min = NUMundefined; *max = NUMundefined;
+void TableOfReal_getColumnExtrema (TableOfReal me, long col, double *p_min, double *p_max) {
+	double min = NUMundefined, max = NUMundefined;
 	if (col < 1 || col > my numberOfColumns) {
 		Melder_throw (U"Invalid column number.");
 	}
-	*min = *max = my data[1][col];
+	min = max = my data[1][col];
 	for (long i = 2; i <= my numberOfRows; i++) {
-		if (my data[i][col] > *max) {
-			*max = my data[i][col];
-		} else if (my data[i][col] < *min) {
-			*min = my data[i][col];
+		if (my data[i][col] > max) {
+			max = my data[i][col];
+		} else if (my data[i][col] < min) {
+			min = my data[i][col];
 		}
 	}
+	if (p_min) {
+		*p_min = min;
+	}
+	if (p_max) {
+		*p_max = max;
+	}
 }
 
 void TableOfReal_drawRowsAsHistogram (TableOfReal me, Graphics g, const char32 *rows, long colb, long cole, double ymin,
-                                      double ymax, double xoffsetFraction, double interbarFraction, double interbarsFraction, const char32 *greys, int garnish) {
+	double ymax, double xoffsetFraction, double interbarFraction, double interbarsFraction, const char32 *greys, bool garnish)
+{
 	if (colb >= cole) {
 		colb = 1; cole = my numberOfColumns;
 	}
@@ -379,16 +349,16 @@ void TableOfReal_drawRowsAsHistogram (TableOfReal me, Graphics g, const char32 *
 	long ngreys;
 	autoNUMvector<double> igreys (NUMstring_to_numbers (greys, &ngreys), 1);
 
-	Graphics_setWindow (g, 0, 1, ymin, ymax);
+	Graphics_setWindow (g, 0.0, 1.0, ymin, ymax);
 	Graphics_setInner (g);
 
 	long ncols = cole - colb + 1;
-	double bar_width = 1 / (ncols * nrows + 2 * xoffsetFraction + (ncols - 1) * interbarsFraction + ncols * (nrows - 1) * interbarFraction);
+	double bar_width = 1.0 / (ncols * nrows + 2.0 * xoffsetFraction + (ncols - 1) * interbarsFraction + ncols * (nrows - 1) * interbarFraction);
 	double dx = (interbarsFraction + nrows + (nrows - 1) * interbarFraction) * bar_width;
 
 	for (long i = 1; i <= nrows; i++) {
 		long irow = (long) floor (irows[i]);
-		double xb = xoffsetFraction * bar_width + (i - 1) * (1 + interbarFraction) * bar_width;
+		double xb = xoffsetFraction * bar_width + (i - 1) * (1.0 + interbarFraction) * bar_width;
 
 		double x1 = xb;
 		double grey = i <= ngreys ? igreys[i] : igreys[ngreys];
@@ -401,7 +371,7 @@ void TableOfReal_drawRowsAsHistogram (TableOfReal me, Graphics g, const char32 *
 				}
 				Graphics_setGrey (g, grey);
 				Graphics_fillRectangle (g, x1, x2, y1, y2);
-				Graphics_setGrey (g, 0); /* Black */
+				Graphics_setGrey (g, 0.0);   // black
 				Graphics_rectangle (g, x1, x2, y1, y2);
 			}
 			x1 += dx;
@@ -412,28 +382,28 @@ void TableOfReal_drawRowsAsHistogram (TableOfReal me, Graphics g, const char32 *
 
 	if (garnish) {
 		double xb = (xoffsetFraction + 0.5 * (nrows + (nrows - 1) * interbarFraction)) * bar_width;
-		for (long j = colb; j <= cole; j++) {
-			if (my columnLabels[j]) {
-				Graphics_markBottom (g, xb, 0, 0, 0, my columnLabels[j]);
+		for (long j = colb; j <= cole; j ++) {
+			if (my columnLabels [j]) {
+				Graphics_markBottom (g, xb, false, false, false, my columnLabels [j]);
 			}
 			xb += dx;
 		}
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xmax, double ymin, double ymax, double sv_splitfactor, int labelsize, int garnish) {
+void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xmax, double ymin, double ymax, double sv_splitfactor, int labelsize, bool garnish) {
 	long nr = my numberOfRows, nc = my numberOfColumns, nPoints = nr + nc;
 	int fontsize = Graphics_inqFontSize (g);
 
 	autoSVD svd = SVD_create (nr, nc);
 
 	NUMmatrix_copyElements (my data, svd -> u, 1, nr, 1, nc);
-	NUMcentreColumns (svd -> u, 1, nr, 1, nc, 0);
+	NUMcentreColumns (svd -> u, 1, nr, 1, nc, nullptr);
 
-	SVD_compute (svd.peek());
-	long numberOfZeroed = SVD_zeroSmallSingularValues (svd.peek(), 0);
+	SVD_compute (svd.get());
+	long numberOfZeroed = SVD_zeroSmallSingularValues (svd.get(), 0.0);
 
 	long nmin = MIN (nr, nc) - numberOfZeroed;
 	if (nmin < 2) {
@@ -465,8 +435,8 @@ void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xma
 		NUMvector_extrema (y.peek(), 1, nPoints, &ymin, &ymax);
 	}
 	if (ymax <= ymin) {
-		ymax += 1;
-		ymin -= 1;
+		ymax += 1.0;
+		ymin -= 1.0;
 	}
 
 	Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -476,16 +446,16 @@ void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xma
 	}
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 
-	for (long i = 1; i <= nPoints; i++) {
+	for (long i = 1; i <= nPoints; i ++) {
 		char32 const *label;
 		if (i <= nr) {
-			label = my rowLabels[i];
-			if (label == NULL) {
+			label = my rowLabels [i];
+			if (! label) {
 				label = U"?__r_";
 			}
 		} else {
-			label = my columnLabels[i - nr];
-			if (label == NULL) {
+			label = my columnLabels [i - nr];
+			if (! label) {
 				label = U"?__c_";
 			}
 		}
@@ -496,8 +466,8 @@ void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xma
 
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 
 	if (labelsize > 0) {
@@ -505,7 +475,7 @@ void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xma
 	}
 }
 
-void TableOfReal_drawBoxPlots (TableOfReal me, Graphics g, long rowmin, long rowmax, long colmin, long colmax, double ymin, double ymax, int garnish) {
+void TableOfReal_drawBoxPlots (TableOfReal me, Graphics g, long rowmin, long rowmax, long colmin, long colmax, double ymin, double ymax, bool garnish) {
 	if (rowmax < rowmin || rowmax < 1) {
 		rowmin = 1; rowmax = my numberOfRows;
 	}
@@ -549,10 +519,10 @@ void TableOfReal_drawBoxPlots (TableOfReal me, Graphics g, long rowmin, long row
 		Graphics_drawInnerBox (g);
 		for (long j = colmin; j <= colmax; j++) {
 			if (my columnLabels && my columnLabels[j] && my columnLabels[j][0]) {
-				Graphics_markBottom (g, j, 0, 1, 0, my columnLabels [j]);
+				Graphics_markBottom (g, j, false, true, false, my columnLabels [j]);
 			}
 		}
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
@@ -616,15 +586,15 @@ void TableOfReal_labelsFromCollectionItemNames (TableOfReal me, Collection thee,
 	try {
 		if (row) {
 			Melder_assert (my numberOfRows == thy size);
-			for (long i = 1; i <= my numberOfRows; i++) {
-				const char32 *name = Thing_getName ( (Thing) thy item[i]);
+			for (long i = 1; i <= my numberOfRows; i ++) {
+				const char32 *name = Thing_getName (thy at [i]);
 				TableOfReal_setRowLabel (me, i, name);
 			}
 		}
 		if (column) {
 			Melder_assert (my numberOfColumns == thy size);
-			for (long i = 1; i <= my numberOfColumns; i++) {
-				const char32 *name = Thing_getName ( (Thing) thy item[i]);
+			for (long i = 1; i <= my numberOfColumns; i ++) {
+				const char32 *name = Thing_getName (thy at [i]);
 				TableOfReal_setColumnLabel (me, i, name);
 			}
 		}
@@ -634,7 +604,7 @@ void TableOfReal_labelsFromCollectionItemNames (TableOfReal me, Collection thee,
 }
 
 void TableOfReal_centreColumns (TableOfReal me) {
-	NUMcentreColumns (my data, 1, my numberOfRows, 1, my numberOfColumns, NULL);
+	NUMcentreColumns (my data, 1, my numberOfRows, 1, my numberOfColumns, nullptr);
 }
 
 void TableOfReal_and_Categories_setRowLabels (TableOfReal me, Categories thee) {
@@ -649,13 +619,16 @@ void TableOfReal_and_Categories_setRowLabels (TableOfReal me, Categories thee) {
 				and then delete the newly created categories.
 		*/
 
-		autoCategories c = Data_copy (thee);
+		autoCategories categories_copy = Data_copy (thee);
 
-		for (long i = 1; i <= my numberOfRows; i++) {
-			SimpleString s = (SimpleString) c -> item[i];
-			char32 *t = s -> string;
-			s -> string = my rowLabels[i];
-			my rowLabels[i] = t;
+		for (long i = 1; i <= my numberOfRows; i ++) {
+			/*
+				The modification of my rowLabels is implemented as a swap
+				with the contents of the SimpleStrings in the copied Categories.
+			*/
+			char32 *tmp = categories_copy->at [i] -> string;
+			categories_copy->at [i] -> string = my rowLabels [i];
+			my rowLabels [i] = tmp;
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": row labels not set from categories.");
@@ -663,17 +636,18 @@ void TableOfReal_and_Categories_setRowLabels (TableOfReal me, Categories thee) {
 }
 
 void TableOfReal_centreColumns_byRowLabel (TableOfReal me) {
-	char32 *label = my rowLabels[1];
+	char32 *label = my rowLabels [1];
 	long index = 1;
 
-	for (long i = 2; i <= my numberOfRows; i++) {
-		char32 *li = my rowLabels[i];
-		if (Melder_cmp (li, label) != 0) {
+	for (long i = 2; i <= my numberOfRows; i ++) {
+		char32 *li = my rowLabels [i];
+		if (! Melder_equ (li, label)) {
 			NUMcentreColumns (my data, index, i - 1, 1, my numberOfColumns, 0);
-			label = li; index = i;
+			label = li;
+			index = i;
 		}
 	}
-	NUMcentreColumns (my data, index, my numberOfRows, 1, my numberOfColumns, NULL);
+	NUMcentreColumns (my data, index, my numberOfRows, 1, my numberOfColumns, nullptr);
 }
 
 double TableOfReal_getRowSum (TableOfReal me, long index) {
@@ -681,9 +655,9 @@ double TableOfReal_getRowSum (TableOfReal me, long index) {
 		return NUMundefined;
 	}
 
-	double sum = 0;
-	for (long j = 1; j <= my numberOfColumns; j++) {
-		sum += my data[index][j];
+	double sum = 0.0;
+	for (long j = 1; j <= my numberOfColumns; j ++) {
+		sum += my data [index] [j];
 	}
 	return sum;
 }
@@ -709,18 +683,18 @@ double TableOfReal_getColumnSum (TableOfReal me, long index) {
 		return NUMundefined;
 	}
 
-	double sum = 0;
-	for (long i = 1; i <= my numberOfRows; i++) {
-		sum += my data[i][index];
+	double sum = 0.0;
+	for (long i = 1; i <= my numberOfRows; i ++) {
+		sum += my data [i] [index];
 	}
 	return sum;
 }
 
 double TableOfReal_getGrandSum (TableOfReal me) {
-	double sum = 0;
-	for (long i = 1; i <= my numberOfRows; i++) {
-		for (long j = 1; j <= my numberOfColumns; j++) {
-			sum += my data[i][j];
+	double sum = 0.0;
+	for (long i = 1; i <= my numberOfRows; i ++) {
+		for (long j = 1; j <= my numberOfColumns; j ++) {
+			sum += my data [i] [j];
 		}
 	}
 	return sum;
@@ -755,7 +729,7 @@ void TableOfReal_normalizeTable (TableOfReal me, double norm) {
 }
 
 double TableOfReal_getTableNorm (TableOfReal me) {
-	double sumsq = 0;
+	double sumsq = 0.0;
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			sumsq += my data[i][j] * my data[i][j];
@@ -769,7 +743,7 @@ int TableOfReal_checkPositive (TableOfReal me) {
 
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= my numberOfColumns; j++) {
-			if (my data[i][j] < 0) {
+			if (my data[i][j] < 0.0) {
 				negative ++; break;
 			}
 		}
@@ -827,18 +801,18 @@ void TableOfReal_drawScatterPlotMatrix (TableOfReal me, Graphics g, long colb, l
 		xmin[j] -= extra; xmax[j] += extra;
 	}
 
-	Graphics_setWindow (g, 0, n, 0, n);
+	Graphics_setWindow (g, 0.0, n, 0.0, n);
 	Graphics_setInner (g);
-	Graphics_line (g, 0, n, n, n);
-	Graphics_line (g, 0, 0, 0, n);
+	Graphics_line (g, 0.0, n, n, n);
+	Graphics_line (g, 0.0, 0.0, 0.0, n);
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 
 	for (long i = 1; i <= n; i++) {
 		long xcol, ycol = colb + i - 1;
 		const char32 *mark;
 		char32 label[40];
-		Graphics_line (g, 0, n - i, n, n - i);
-		Graphics_line (g, i, n, i, 0);
+		Graphics_line (g, 0.0, n - i, n, n - i);
+		Graphics_line (g, i, n, i, 0.0);
 		for (long j = 1; j <= n; j++) {
 			xcol = colb + j - 1;
 			if (i == j) {
@@ -861,28 +835,28 @@ void TableOfReal_drawScatterPlotMatrix (TableOfReal me, Graphics g, long colb, l
 	Graphics_unsetInner (g);
 }
 
-void TableOfReal_drawAsSquares_area (TableOfReal me, Graphics g, double zmin, double zmax, double cellSizeFactor, int randomFillOrder, int garnish) {
+void TableOfReal_drawAsSquares_area (TableOfReal me, Graphics g, double zmin, double zmax, double cellSizeFactor, int randomFillOrder, bool garnish) {
 	try {
-		cellSizeFactor = cellSizeFactor <= 0 ? 1 : cellSizeFactor;
+		cellSizeFactor = cellSizeFactor <= 0.0 ? 1.0 : cellSizeFactor;
 		if (zmin == 0 && zmax == 0) {
 			NUMmatrix_extrema<double> (my data, 1, my numberOfRows, 1, my numberOfColumns, &zmin, &zmax);
 		}
-		double xmin = 0, xmax = my numberOfColumns + 1, ymin = 0, ymax = my numberOfRows + 1;
+		double xmin = 0.0, xmax = my numberOfColumns + 1.0, ymin = 0.0, ymax = my numberOfRows + 1.0;
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 		Graphics_setInner (g);
 		Graphics_matrixAsSquares (g, my data, my numberOfRows, my numberOfColumns, zmin, zmax, cellSizeFactor, randomFillOrder);
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksBottomEvery (g, 1, 1, false, true, false);
-			Graphics_marksLeftEvery (g, 1, 1, false, true, false);
+			Graphics_marksBottomEvery (g, 1.0, 1.0, false, true, false);
+			Graphics_marksLeftEvery (g, 1.0, 1.0, false, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
 	}
 }
 
-void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy, long rowb, long rowe, double xmin, double xmax, double ymin, double ymax, int labelSize, int useRowLabels, const char32 *label, int garnish) {
+void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy, long rowb, long rowe, double xmin, double xmax, double ymin, double ymax, int labelSize, bool useRowLabels, const char32 *label, bool garnish) {
 	double m = my numberOfRows, n = my numberOfColumns;
 	int fontSize = Graphics_inqFontSize (g);
 
@@ -901,12 +875,12 @@ void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy
 
 	if (xmax == xmin) {
 		NUMdmatrix_getColumnExtrema (my data, rowb, rowe, icx, & xmin, & xmax);
-		double tmp = xmax - xmin == 0 ? 0.5 : 0.0;
+		double tmp = xmax - xmin == 0.0 ? 0.5 : 0.0;
 		xmin -= tmp; xmax += tmp;
 	}
 	if (ymax == ymin) {
 		NUMdmatrix_getColumnExtrema (my data, rowb, rowe, icy, & ymin, & ymax);
-		double tmp = ymax - ymin == 0 ? 0.5 : 0.0;
+		double tmp = ymax - ymin == 0.0 ? 0.5 : 0.0;
 		ymin -= tmp; ymax += tmp;
 	}
 
@@ -919,8 +893,8 @@ void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy
 	for (long i = rowb; i <= rowe; i++) {
 		double x = my data[i][icx], y = my data[i][icy];
 
-		if ( ( (xmin < xmax && x >= xmin && x <= xmax) || (xmin > xmax && x <= xmin && x >= xmax)) &&
-		        ( (ymin < ymax && y >= ymin && y <= ymax) || (ymin > ymax && y <= ymin && y >= ymax))) {
+		if (((xmin < xmax && x >= xmin && x <= xmax) || (xmin > xmax && x <= xmin && x >= xmax)) &&
+		        ((ymin < ymax && y >= ymin && y <= ymax) || (ymin > ymax && y <= ymin && y >= ymax))) {
 			const char32 *plotLabel = useRowLabels ? my rowLabels[i] : label;
 			if (! NUMstring_containsPrintableCharacter (plotLabel)) {
 				noLabel++;
@@ -937,25 +911,25 @@ void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy
 		Graphics_drawInnerBox (g);
 		if (ymin < ymax) {
 			if (my columnLabels[icx]) {
-				Graphics_textBottom (g, 1, my columnLabels[icx]);
+				Graphics_textBottom (g, true, my columnLabels[icx]);
 			}
-			Graphics_marksBottom (g, 2, 1, 1, 0);
+			Graphics_marksBottom (g, 2, true, true, false);
 		} else {
 			if (my columnLabels[icx]) {
-				Graphics_textTop (g, 1, my columnLabels[icx]);
+				Graphics_textTop (g, true, my columnLabels[icx]);
 			}
-			Graphics_marksTop (g, 2, 1, 1, 0);
+			Graphics_marksTop (g, 2, true, true, false);
 		}
 		if (xmin < xmax) {
 			if (my columnLabels[icy]) {
-				Graphics_textLeft (g, 1, my columnLabels[icy]);
+				Graphics_textLeft (g, true, my columnLabels[icy]);
 			}
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 		} else {
 			if (my columnLabels[icy]) {
-				Graphics_textRight (g, 1, my columnLabels[icy]);
+				Graphics_textRight (g, true, my columnLabels[icy]);
 			}
-			Graphics_marksRight (g, 2, 1, 1, 0);
+			Graphics_marksRight (g, 2, true, true, false);
 		}
 	}
 	if (noLabel > 0) {
@@ -964,61 +938,45 @@ void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy
 	}
 }
 
-/****************  TABLESOFREAL **************************************/
 
-Thing_implement (TablesOfReal, Ordered, 0);
+#pragma mark - class TableOfRealList
 
-void TablesOfReal_init (TablesOfReal me, ClassInfo klas) {
-	Ordered_init (me, klas, 10);
-}
-
-TablesOfReal TablesOfReal_create () {
-	try {
-		autoTablesOfReal me = Thing_new (TablesOfReal);
-		TablesOfReal_init (me.peek(), classTableOfReal);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"TablesOfReal not created.");
-	}
-}
-
-TableOfReal TablesOfReal_sum (TablesOfReal me) {
+autoTableOfReal TableOfRealList_sum (TableOfRealList me) {
 	try {
 		if (my size <= 0) {
-			return 0;
+			return autoTableOfReal();
 		}
-		autoTableOfReal thee = Data_copy ( (TableOfReal) my item[1]);
+		autoTableOfReal thee = Data_copy (my at [1]);
 
-		for (long i = 2; i <= my size; i++) {
-			TableOfReal him = (TableOfReal) my item[i];
-			if (thy numberOfRows != his numberOfRows || thy numberOfColumns != his numberOfColumns || ! TableOfReal_equalLabels (thee.peek(), him, 1, 1)) {
+		for (long i = 2; i <= my size; i ++) {
+			TableOfReal him = my at [i];
+			if (thy numberOfRows != his numberOfRows || thy numberOfColumns != his numberOfColumns || ! TableOfReal_equalLabels (thee.get(), him, 1, 1)) {
 				Melder_throw (U"Dimensions or labels differ for table 1 and ", i, U".");
 			}
-			for (long j = 1; j <= thy numberOfRows; j++) {
-				for (long k = 1; k <= thy numberOfColumns; k++) {
-					thy data[j][k] += his data[j][k];
+			for (long j = 1; j <= thy numberOfRows; j ++) {
+				for (long k = 1; k <= thy numberOfColumns; k ++) {
+					thy data [j] [k] += his data [j] [k];
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": sum not created.");
 	}
 }
 
-int TablesOfReal_checkDimensions (TablesOfReal me) {
+bool TableOfRealList_haveIdenticalDimensions (TableOfRealList me) {
 	if (my size < 2) {
-		return 1;
+		return true;
 	}
-	TableOfReal t1 = (TableOfReal) my item[1];
-	for (long i = 2; i <= my size; i++) {
-		TableOfReal t = (TableOfReal) my item[i];
-		if (t -> numberOfColumns != t1 -> numberOfColumns ||
-		        t -> numberOfRows != t1 -> numberOfRows) {
-			return 0;
+	TableOfReal t1 = my at [1];
+	for (long i = 2; i <= my size; i ++) {
+		TableOfReal t = my at [i];
+		if (t -> numberOfColumns != t1 -> numberOfColumns || t -> numberOfRows != t1 -> numberOfRows) {
+			return false;
 		}
 	}
-	return 1;
+	return true;
 }
 
 double TableOfReal_getColumnQuantile (TableOfReal me, long col, double quantile) {
@@ -1040,7 +998,7 @@ double TableOfReal_getColumnQuantile (TableOfReal me, long col, double quantile)
 	}
 }
 
-static TableOfReal TableOfReal_createPolsVanNieropData (int choice, int include_levels) {
+static autoTableOfReal TableOfReal_createPolsVanNieropData (int choice, bool include_levels) {
 	try {
 		autoTable table = Table_createFromPolsVanNieropData ();
 
@@ -1057,78 +1015,78 @@ static TableOfReal TableOfReal_createPolsVanNieropData (int choice, int include_
 
 		autoTableOfReal thee = TableOfReal_create (nrows, ncols);
 
-		for (long i = 1; i <= nrows; i++) {
-			TableRow row = (TableRow) table -> rows -> item[ib + i - 1];
-			TableOfReal_setRowLabel (thee.peek(), i, row -> cells[4].string);
+		for (long i = 1; i <= nrows; i ++) {
+			TableRow row = table -> rows.at [ib + i - 1];
+			TableOfReal_setRowLabel (thee.get(), i, row -> cells [4]. string);
 			for (long j = 1; j <= 3; j++) {
-				thy data[i][j] = Melder_atof (row -> cells[4 + j].string);
+				thy data [i] [j] = Melder_atof (row -> cells [4 + j]. string);
 				if (include_levels) {
-					thy data[i][3 + j] = Melder_atof (row -> cells[7 + j].string);
+					thy data [i] [3 + j] = Melder_atof (row -> cells [7 + j]. string);
 				}
 			}
 		}
-		for (long j = 1; j <= 3; j++) {
-			const char32 *label = table -> columnHeaders[4 + j].label;
-			TableOfReal_setColumnLabel (thee.peek(), j, label);
+		for (long j = 1; j <= 3; j ++) {
+			const char32 *label = table -> columnHeaders [4 + j]. label;
+			TableOfReal_setColumnLabel (thee.get(), j, label);
 			if (include_levels) {
 				label = table -> columnHeaders[7 + j].label;
-				TableOfReal_setColumnLabel (thee.peek(), 3 + j, label);
+				TableOfReal_setColumnLabel (thee.get(), 3 + j, label);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal from Pols & Van Nierop data not created.");
 	}
 }
 
-TableOfReal TableOfReal_createFromPolsData_50males (int include_levels) {
+autoTableOfReal TableOfReal_createFromPolsData_50males (bool include_levels) {
 	return TableOfReal_createPolsVanNieropData (1, include_levels);
 }
 
-TableOfReal TableOfReal_createFromVanNieropData_25females (int include_levels) {
+autoTableOfReal TableOfReal_createFromVanNieropData_25females (bool include_levels) {
 	return TableOfReal_createPolsVanNieropData (2, include_levels);
 }
 
-TableOfReal TableOfReal_createFromWeeninkData (int option) {
+autoTableOfReal TableOfReal_createFromWeeninkData (int option) {
 	try {
 		long nvowels = 12, ncols = 3, nrows = 10 * nvowels;
 
 		autoTable table = Table_createFromWeeninkData ();
 
-		long ib = option == 1 ? 1 : option == 2 ? 11 : 21; /* m f c*/
+		long ib = ( option == 1 ? 1 : option == 2 ? 11 : 21 ); /* m f c*/
 		ib = (ib - 1) * nvowels + 1;
 
 		autoTableOfReal thee = TableOfReal_create (nrows, ncols);
 
-		for (long i = 1; i <= nrows; i++) {
-			TableRow row = (TableRow) table -> rows -> item[ib + i - 1];
-			TableOfReal_setRowLabel (thee.peek(), i, row -> cells[5].string);
-			for (long j = 1; j <= 3; j++) {
-				thy data[i][j] = Melder_atof (row -> cells[6 + j].string); /* Skip F0 */
+		for (long i = 1; i <= nrows; i ++) {
+			TableRow row = table -> rows.at [ib + i - 1];
+			TableOfReal_setRowLabel (thee.get(), i, row -> cells [5]. string);
+			for (long j = 1; j <= 3; j ++) {
+				thy data [i] [j] = Melder_atof (row -> cells [6 + j]. string); /* Skip F0 */
 			}
 		}
 		for (long j = 1; j <= 3; j++)  {
-			const char32 *label = table -> columnHeaders[6 + j].label;
-			TableOfReal_setColumnLabel (thee.peek(), j, label);
+			const char32 *label = table -> columnHeaders [6 + j]. label;
+			TableOfReal_setColumnLabel (thee.get(), j, label);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal from Weenink data not created.");
 	}
 }
 
-TableOfReal TableOfReal_randomizeRows (TableOfReal me) {
+autoTableOfReal TableOfReal_randomizeRows (TableOfReal me) {
 	try {
 		autoPermutation p = Permutation_create (my numberOfRows);
-		Permutation_permuteRandomly_inline (p.peek(), 0, 0);
-		autoTableOfReal thee = TableOfReal_and_Permutation_permuteRows (me, p.peek());
-		return thee.transfer();
+		Permutation_permuteRandomly_inline (p.get(), 0, 0);
+		autoTableOfReal thee = TableOfReal_and_Permutation_permuteRows (me, p.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": randomized rows not created");
 	}
 }
 
-TableOfReal TableOfReal_bootstrap (TableOfReal me) {
+autoTableOfReal TableOfReal_bootstrap (TableOfReal me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 
@@ -1136,7 +1094,7 @@ TableOfReal TableOfReal_bootstrap (TableOfReal me) {
 
 		for (long i = 1; i <= my numberOfColumns; i++) {
 			if (my columnLabels[i]) {
-				TableOfReal_setColumnLabel (thee.peek(), i, my columnLabels[i]);
+				TableOfReal_setColumnLabel (thee.get(), i, my columnLabels[i]);
 			}
 		}
 
@@ -1150,10 +1108,10 @@ TableOfReal TableOfReal_bootstrap (TableOfReal me) {
 			long p = NUMrandomInteger (1, my numberOfRows);
 			NUMvector_copyElements (my data[p], thy data[i], 1, my numberOfColumns);
 			if (my rowLabels[p]) {
-				TableOfReal_setRowLabel (thee.peek(), i, my rowLabels[p]);
+				TableOfReal_setRowLabel (thee.get(), i, my rowLabels[p]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": bootstrapped data not created.");
 	}
@@ -1182,9 +1140,9 @@ void TableOfReal_changeColumnLabels (TableOfReal me, const char32 *search, const
 long TableOfReal_getNumberOfLabelMatches (TableOfReal me, const char32 *search, int columnLabels, int use_regexp) {
 	long nmatches = 0, numberOfLabels = my numberOfRows;
 	char32 **labels = my rowLabels;
-	regexp *compiled_regexp = 0;
+	regexp *compiled_regexp = nullptr;
 
-	if (search == 0 || str32len (search) == 0) {
+	if (! search || str32len (search) == 0) {
 		return 0;
 	}
 	if (columnLabels) {
@@ -1195,11 +1153,11 @@ long TableOfReal_getNumberOfLabelMatches (TableOfReal me, const char32 *search,
 		compiled_regexp = CompileRE_throwable (search, 0);
 	}
 	for (long i = 1; i <= numberOfLabels; i++) {
-		if (labels[i] == 0) {
+		if (! labels[i]) {
 			continue;
 		}
 		if (use_regexp) {
-			if (ExecRE (compiled_regexp, 0, labels[i], NULL, 0, U'\0', U'\0', 0, 0, 0)) {
+			if (ExecRE (compiled_regexp, 0, labels[i], nullptr, 0, U'\0', U'\0', 0, 0, 0)) {
 				nmatches++;
 			}
 		} else if (str32equ (labels[i], search)) {
@@ -1212,8 +1170,7 @@ long TableOfReal_getNumberOfLabelMatches (TableOfReal me, const char32 *search,
 	return nmatches;
 }
 
-void TableOfReal_drawVectors (TableOfReal me, Graphics g, long colx1, long coly1, long colx2, long coly2, double xmin, double xmax,
-                              double ymin, double ymax, int vectype, int labelsize, int garnish) {
+void TableOfReal_drawVectors (TableOfReal me, Graphics g, long colx1, long coly1, long colx2, long coly2, double xmin, double xmax, double ymin, double ymax, int vectype, int labelsize, bool garnish) {
 	long nx = my numberOfColumns, ny = my numberOfRows;
 	int fontsize = Graphics_inqFontSize (g);
 
@@ -1290,24 +1247,23 @@ void TableOfReal_drawVectors (TableOfReal me, Graphics g, long colx1, long coly1
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
-void TableOfReal_drawColumnAsDistribution (TableOfReal me, Graphics g, int column, double minimum, double maximum, long nBins,
-        double freqMin, double freqMax, int cumulative, int garnish) {
+void TableOfReal_drawColumnAsDistribution (TableOfReal me, Graphics g, int column, double minimum, double maximum, long nBins, double freqMin, double freqMax, bool cumulative, bool garnish) {
 	if (column < 1 || column > my numberOfColumns) {
 		return;
 	}
 	autoMatrix thee = TableOfReal_to_Matrix (me);
-	Matrix_drawDistribution (thee.peek(), g,  column - 0.5, column + 0.5, 0, 0, minimum, maximum, nBins, freqMin,  freqMax,  cumulative,  garnish);
+	Matrix_drawDistribution (thee.get(), g, column - 0.5, column + 0.5, 0.0, 0.0, minimum, maximum, nBins, freqMin, freqMax, cumulative, garnish);
 	if (garnish && my columnLabels[column] != 0) {
-		Graphics_textBottom (g, 1, my columnLabels[column]);
+		Graphics_textBottom (g, true, my columnLabels[column]);
 	}
 }
 
-TableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long *index, int reverse) {
+autoTableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long index[], int reverse) {
 	try {
 		if (my rowLabels == 0) {
 			Melder_throw (U"No labels to sort");
@@ -1321,10 +1277,10 @@ TableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long *index, int revers
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 
 		for (long i = 1; i <= my numberOfRows; i++) {
-			long    myindex = reverse ? i : index[i];
-			long   thyindex = reverse ? index[i] : i;
+			long myindex = reverse ? i : index[i];
+			long thyindex = reverse ? index[i] : i;
 			const char32 *mylabel = my rowLabels[myindex];
-			double  *mydata = my data[myindex];
+			double *mydata = my data[myindex];
 			double *thydata = thy data[thyindex];
 
 			// Copy the row label
@@ -1341,7 +1297,7 @@ TableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long *index, int revers
 		// Copy column labels.
 
 		NUMstrings_copyElements (my columnLabels, thy columnLabels, 1, my numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not sorted by row index.");
 	}
@@ -1357,11 +1313,11 @@ long *TableOfReal_getSortedIndexFromRowLabels (TableOfReal me) {
 	}
 }
 
-TableOfReal TableOfReal_sortOnlyByRowLabels (TableOfReal me) {
+autoTableOfReal TableOfReal_sortOnlyByRowLabels (TableOfReal me) {
 	try {
 		autoPermutation index = TableOfReal_to_Permutation_sortRowLabels (me);
-		autoTableOfReal thee = TableOfReal_and_Permutation_permuteRows (me, index.peek());
-		return thee.transfer();
+		autoTableOfReal thee = TableOfReal_and_Permutation_permuteRows (me, index.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not sorted by row labels.");
 	}
@@ -1395,9 +1351,9 @@ static void NUMstatsColumns (double **a, long rb, long re, long cb, long ce, int
 	}
 }
 
-TableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats) {
+autoTableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats) {
 	try {
-		autoTableOfReal thee = 0;
+		autoTableOfReal thee;
 		autoNUMvector<long> index (TableOfReal_getSortedIndexFromRowLabels (me), 1);
 		autoTableOfReal sorted = TableOfReal_sortRowsByIndex (me, index.peek(), 0);
 
@@ -1410,7 +1366,7 @@ TableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats)
 
 				if (expand == 0) {
 					indexr++;
-					TableOfReal_copyOneRowWithLabel (sorted.peek(), sorted.peek(), indexi, indexr);
+					TableOfReal_copyOneRowWithLabel (sorted.get(), sorted.get(), indexi, indexr);
 				}
 				label = li; indexi = i;
 			}
@@ -1422,28 +1378,28 @@ TableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats)
 			// Now invert the table.
 
 			char32 **tmp = sorted -> rowLabels; sorted -> rowLabels = my rowLabels;
-			thee.reset (TableOfReal_sortRowsByIndex (sorted.peek(), index.peek(), 1));
+			thee = TableOfReal_sortRowsByIndex (sorted.get(), index.peek(), 1);
 			sorted -> rowLabels = tmp;
 		} else {
 			indexr++;
-			TableOfReal_copyOneRowWithLabel (sorted.peek(), sorted.peek(), indexi, indexr);
-			thee.reset (TableOfReal_create (indexr, my numberOfColumns));
+			TableOfReal_copyOneRowWithLabel (sorted.get(), sorted.get(), indexi, indexr);
+			thee = TableOfReal_create (indexr, my numberOfColumns);
 			for (long i = 1; i <= indexr; i++) {
-				TableOfReal_copyOneRowWithLabel (sorted.peek(), thee.peek(), i, i);
+				TableOfReal_copyOneRowWithLabel (sorted.get(), thee.get(), i, i);
 			}
 			NUMstrings_copyElements (sorted -> columnLabels, thy columnLabels, 1, my numberOfColumns);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": means by row labels not created.");
 	}
 }
 
-TableOfReal TableOfReal_rankColumns (TableOfReal me) {
+autoTableOfReal TableOfReal_rankColumns (TableOfReal me) {
 	try {
 		autoTableOfReal thee = Data_copy (me);
 		NUMrankColumns (thy data, 1, thy numberOfRows, 1, thy numberOfColumns);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": column ranks not created.");
 	}
@@ -1476,18 +1432,18 @@ void TableOfReal_setSequentialRowLabels (TableOfReal me, long from, long to, con
 }
 
 /* For the inheritors */
-TableOfReal TableOfReal_to_TableOfReal (TableOfReal me) {
+autoTableOfReal TableOfReal_to_TableOfReal (TableOfReal me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, my numberOfColumns);
 		NUMmatrix_copyElements (my data, thy data, 1, my numberOfRows, 1, my numberOfColumns);
-		TableOfReal_copyLabels (me, thee.peek(), 1, 1);
-		return thee.transfer();
+		TableOfReal_copyLabels (me, thee.get(), 1, 1);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not copied.");
 	}
 }
 
-TableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int inverse) {
+autoTableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int inverse) {
 	try {
 		char diag = 'N';
 		long n = my numberOfColumns, lda = my numberOfRows, info;
@@ -1499,11 +1455,11 @@ TableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int in
 
 		if (upper) {
 			for (long i = 2; i <= n; i++) for (long j = 1; j < i; j++) {
-					thy data[i][j] = 0;
+					thy data[i][j] = 0.0;
 				}
 		} else {
 			for (long i = 1; i < n; i++) for (long j = i + 1; j <= n; j++) {
-					thy data[i][j] = 0;
+					thy data[i][j] = 0.0;
 				}
 		}
 		char uplo = upper ? 'L' : 'U';
@@ -1518,13 +1474,13 @@ TableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int in
 				Melder_throw (U"dtrtri fails");
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Cholesky decomposition not performed.");
 	}
 }
 
-TableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee) {
+autoTableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee) {
 	try {
 		long ncols = my numberOfColumns + thy numberOfColumns;
 		long labeldiffs = 0;
@@ -1537,7 +1493,7 @@ TableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee) {
 			(my rowLabels[i] == thy rowlabels[i], i=1..my numberOfRows) or
 			(my rowLabels[i] == 'empty', i=1..my numberOfRows)  or
 			(thy rowLabels[i] == 'empty', i=1..my numberOfRows);
-			'empty':  NULL or \w*
+			'empty':  nullptr or \w*
 		*/
 		autoTableOfReal him = TableOfReal_create (my numberOfRows, ncols);
 		NUMstrings_copyElements (my rowLabels, his rowLabels, 1, my numberOfRows);
@@ -1553,53 +1509,56 @@ TableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee) {
 		if (labeldiffs > 0) {
 			Melder_warning (labeldiffs, U" row labels differed.");
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal with appended columns not created.");
 	}
 }
 
-TableOfReal TableOfReal_appendColumnsMany (Collection me) {
+autoTableOfReal TableOfRealList_appendColumnsMany (TableOfRealList me) {
 	try {
 		if (my size == 0) {
 			Melder_throw (U"No tables selected.");
 		}
-		TableOfReal thee = (TableOfReal) my item [1];
+		TableOfReal thee = my at [1];
 		long nrow = thy numberOfRows;
 		long ncol = thy numberOfColumns;
-		for (long itab = 2; itab <= my size; itab++) {
-			thee = (TableOfReal) my item [itab];
+		for (long itab = 2; itab <= my size; itab ++) {
+			thee = my at [itab];
 			ncol += thy numberOfColumns;
 			if (thy numberOfRows != nrow) {
 				Melder_throw (U"Numbers of rows in item ", itab, U" differs from previous.");
 			}
 		}
-		autoTableOfReal him = Thing_new (TableOfReal);
-		TableOfReal_init (him.peek(), nrow, ncol);
+		autoTableOfReal him = TableOfReal_create (nrow, ncol);
 		/* Unsafe: new attributes not initialized. */
-		for (long irow = 1; irow <= nrow; irow++) {
-			TableOfReal_setRowLabel (him.peek(), irow, thy rowLabels [irow]);
+		for (long irow = 1; irow <= nrow; irow ++) {
+			TableOfReal_setRowLabel (him.get(), irow, thy rowLabels [irow]);
 		}
 		ncol = 0;
-		for (long itab = 1; itab <= my size; itab++) {
-			thee = (TableOfReal) my item [itab];
-			for (long icol = 1; icol <= thy numberOfColumns; icol++) {
+		for (long itab = 1; itab <= my size; itab ++) {
+			thee = my at [itab];
+			for (long icol = 1; icol <= thy numberOfColumns; icol ++) {
 				ncol++;
-				TableOfReal_setColumnLabel (him.peek(), ncol, thy columnLabels [icol]);
-				for (long irow = 1; irow <= nrow; irow++) {
-					his data[irow][ncol] = thy data[irow][icol];
+				TableOfReal_setColumnLabel (him.get(), ncol, thy columnLabels [icol]);
+				for (long irow = 1; irow <= nrow; irow ++) {
+					his data [irow] [ncol] = thy data [irow] [icol];
 				}
 			}
 		}
 		Melder_assert (ncol == his numberOfColumns);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal with appended columns not created.");
 	}
 }
 
-double TableOfReal_normalityTest_BHEP (TableOfReal me, double *h, double *tnb, double *lnmu, double *lnvar) {
+double TableOfReal_normalityTest_BHEP (TableOfReal me, double *h, double *p_tnb, double *p_lnmu, double *p_lnvar) {
 	try {
+		/* Henze & Wagner (1997), A new approach to the BHEP tests for multivariate normality, 
+		 *  Journal of Multivariate Analysis 62, 1-23.
+		 */
+
 		long n = my numberOfRows, p = my numberOfColumns;
 		double beta = *h > 0 ? NUMsqrt1_2 / *h : NUMsqrt1_2 * pow ( (1.0 + 2 * p) / 4, 1.0 / (p + 4)) * pow (n, 1.0 / (p + 4));
 		double p2 = p / 2.0;
@@ -1612,7 +1571,7 @@ double TableOfReal_normalityTest_BHEP (TableOfReal me, double *h, double *tnb, d
 			*h = NUMsqrt1_2 / beta;
 		}
 
-		*tnb = *lnmu = *lnvar = NUMundefined;
+		double tnb = NUMundefined, lnmu = NUMundefined, lnvar = NUMundefined;
 
 		if (n < 2 || p < 1) {
 			return NUMundefined;
@@ -1620,13 +1579,13 @@ double TableOfReal_normalityTest_BHEP (TableOfReal me, double *h, double *tnb, d
 
 		autoCovariance thee = TableOfReal_to_Covariance (me);
 		try {
-			SSCP_expandLowerCholesky (thee.peek());
+			SSCP_expandLowerCholesky (thee.get());
 		} catch (MelderError) {
-			*tnb = 4 * n;
+			tnb = 4.0 * n;
 		}
 		{
-			double djk, djj, sumjk = 0, sumj = 0;
-			double b1 = beta2 / 2, b2 = b1 / (1.0 + beta2);
+			double djk, djj, sumjk = 0.0, sumj = 0.0;
+			double b1 = beta2 / 2.0, b2 = b1 / (1.0 + beta2);
 			/* Heinze & Wagner (1997), page 3
 				We use d[j][k] = ||Y[j]-Y[k]||^2 = (Y[j]-Y[k])'S^(-1)(Y[j]-Y[k])
 				So d[j][k]= d[k][j] and d[j][j] = 0
@@ -1634,34 +1593,43 @@ double TableOfReal_normalityTest_BHEP (TableOfReal me, double *h, double *tnb, d
 			for (long j = 1; j <= n; j++) {
 				for (long k = 1; k < j; k++) {
 					djk = NUMmahalanobisDistance_chi (thy lowerCholesky, my data[j], my data[k], p, p);
-					sumjk += 2 * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
+					sumjk += 2.0 * exp (-b1 * djk); // factor 2 because d[j][k] == d[k][j]
 				}
 				sumjk += 1; // for k == j
 				djj = NUMmahalanobisDistance_chi (thy lowerCholesky, my data[j], thy centroid, p, p);
 				sumj += exp (-b2 * djj);
 			}
-			*tnb = (1.0 / n) * sumjk - 2.0 * pow (1.0 + beta2, - p2) * sumj + n * pow (gamma, - p2); // n *
+			tnb = (1.0 / n) * sumjk - 2.0 * pow (1.0 + beta2, - p2) * sumj + n * pow (gamma, - p2); // n *
 		}
-		double mu = 1.0 - pow (gamma, -p2) * (1.0 + p * beta2 / gamma + p * (p + 2) * beta4 / (2 * gamma2));
+		double mu = 1.0 - pow (gamma, -p2) * (1.0 + p * beta2 / gamma + p * (p + 2) * beta4 / (2.0 * gamma2));
 		double var = 2.0 * pow (1 + 4 * beta2, -p2)
-		             + 2.0 * pow (gamma,  -p) * (1.0 + 2 * p * beta4 / gamma2  + 3 * p * (p + 2) * beta8 / (4 * gamma4))
-		             - 4.0 * pow (delta, -p2) * (1.0 + 3 * p * beta4 / (2 * delta) + p * (p + 2) * beta8 / (2 * delta2));
+			+ 2.0 * pow (gamma,  -p) * (1.0 + 2 * p * beta4 / gamma2  + 3 * p * (p + 2) * beta8 / (4.0 * gamma4))
+			- 4.0 * pow (delta, -p2) * (1.0 + 3 * p * beta4 / (2 * delta) + p * (p + 2) * beta8 / (2.0 * delta2));
 		double mu2 = mu * mu;
-		*lnmu = 0.5 * log (mu2 * mu2 / (mu2 + var)); //log (sqrt (mu2 * mu2 /(mu2 + var)));
-		*lnvar = sqrt (log ( (mu2 + var) / mu2));
-		prob = NUMlogNormalQ (*tnb, *lnmu, *lnvar);
+		lnmu = 0.5 * log (mu2 * mu2 / (mu2 + var)); //log (sqrt (mu2 * mu2 /(mu2 + var)));
+		lnvar = sqrt (log ( (mu2 + var) / mu2));
+		prob = NUMlogNormalQ (tnb, lnmu, lnvar);
+		if (p_tnb) {
+			*p_tnb = tnb;
+		}
+		if (p_lnmu) {
+			*p_lnmu = lnmu;
+		}
+		if (p_lnvar) {
+			*p_lnvar = lnvar;
+		}
 		return prob;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot determine normality.");
 	}
 }
 
-TableOfReal TableOfReal_and_TableOfReal_crossCorrelations (TableOfReal me, TableOfReal thee, int by_columns, int center, int normalize) {
+autoTableOfReal TableOfReal_and_TableOfReal_crossCorrelations (TableOfReal me, TableOfReal thee, int by_columns, int center, int normalize) {
 	return by_columns ? TableOfReal_and_TableOfReal_columnCorrelations (me, thee, center, normalize) :
 	       TableOfReal_and_TableOfReal_rowCorrelations (me, thee, center, normalize);
 }
 
-TableOfReal TableOfReal_and_TableOfReal_rowCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize) {
+autoTableOfReal TableOfReal_and_TableOfReal_rowCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize) {
 	try {
 		if (my numberOfColumns != thy numberOfColumns) {
 			Melder_throw (U"Both tables must have the same number of columns.");
@@ -1689,13 +1657,13 @@ TableOfReal TableOfReal_and_TableOfReal_rowCorrelations (TableOfReal me, TableOf
 				his data[i][k] = ctmp;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal with row correlations not created.");
 	}
 }
 
-TableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize) {
+autoTableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, TableOfReal thee, int center, int normalize) {
 	try {
 		if (my numberOfRows != thy numberOfRows) {
 			Melder_throw (U"Both tables must have the same number of rows.");
@@ -1705,8 +1673,8 @@ TableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, Tabl
 		autoNUMmatrix<double> my_data (NUMmatrix_copy (my data, 1, my numberOfRows, 1, my numberOfColumns), 1, 1);
 		autoNUMmatrix<double> thy_data (NUMmatrix_copy (thy data, 1, thy numberOfRows, 1, thy numberOfColumns), 1, 1);
 		if (center) {
-			NUMcentreColumns (my_data.peek(), 1, my numberOfRows, 1, my numberOfColumns, NULL);
-			NUMcentreColumns (thy_data.peek(), 1, thy numberOfRows, 1, thy numberOfColumns, NULL);
+			NUMcentreColumns (my_data.peek(), 1, my numberOfRows, 1, my numberOfColumns, nullptr);
+			NUMcentreColumns (thy_data.peek(), 1, thy numberOfRows, 1, thy numberOfColumns, nullptr);
 		}
 		if (normalize) {
 			NUMnormalizeColumns (my_data.peek(), my numberOfRows, my numberOfColumns, 1);
@@ -1717,14 +1685,14 @@ TableOfReal TableOfReal_and_TableOfReal_columnCorrelations (TableOfReal me, Tabl
 
 		for (long j = 1; j <= my numberOfColumns; j++) {
 			for (long k = 1; k <= thy numberOfColumns; k++) {
-				double ctmp = 0;
+				double ctmp = 0.0;
 				for (long i = 1; i <= my numberOfRows; i++) {
 					ctmp += my_data[i][j] * thy_data[i][k];
 				}
 				his data[j][k] = ctmp;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal with column correlations not created.");
 	}
diff --git a/dwtools/TableOfReal_extensions.h b/dwtools/TableOfReal_extensions.h
index 1216e03..ef24335 100644
--- a/dwtools/TableOfReal_extensions.h
+++ b/dwtools/TableOfReal_extensions.h
@@ -2,28 +2,22 @@
 #define _TableOfReal_extensions_h_
 /* TableOfReal_extensions.h
  *
- * Copyright (C) 1993-2012, 2014 David Weenink
+ * Copyright (C) 1993-2012, 2014-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- djmw 20020411 initial GPL
- djmw 20120914 Latest modification.
-*/
-
 #include "TableOfReal.h"
 #include "Collection.h"
 #include "Pattern.h"
@@ -31,64 +25,64 @@
 #include "Strings_.h"
 #include "SSCP.h"
 
-int TableOfReal_to_Pattern_and_Categories(TableOfReal me, long fromrow, long torow, long fromcol, long tocol,
-	Pattern *p, Categories *c);
+void TableOfReal_to_Pattern_and_Categories(TableOfReal me, long fromrow, long torow, long fromcol, long tocol,
+	autoPattern *p, autoCategories *c);
 
-TableOfReal TableOfReal_transpose (TableOfReal me);
+autoTableOfReal TableOfReal_transpose (TableOfReal me);
 
-Strings TableOfReal_extractRowLabels (TableOfReal me);
+autoStrings TableOfReal_extractRowLabels (TableOfReal me);
 
-Strings TableOfReal_extractColumnLabels (TableOfReal me);
+autoStrings TableOfReal_extractColumnLabels (TableOfReal me);
 
 void TableOfReal_and_Categories_setRowLabels (TableOfReal me, Categories thee);
-/* !!! Set rowlabels from categories
-  Because we need a Table-object with string-columns.
-*/
+// !!! Set rowlabels from categories because we need a Table-object with string-columns.
 
-TableOfReal TableOfReal_sortOnlyByRowLabels (TableOfReal me);
+autoTableOfReal TableOfReal_sortOnlyByRowLabels (TableOfReal me);
 
 long *TableOfReal_getSortedIndexFromRowLabels (TableOfReal me);
 
-TableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long *index, int reverse);
-/*
-	thy data[reverse ? i : index[i]][j] = my data[reverse ? index[i] : i]
-*/
+autoTableOfReal TableOfReal_sortRowsByIndex (TableOfReal me, long index[], int reverse);
+// thy data[reverse ? i : index[i]][j] = my data[reverse ? index[i] : i]
+
+autoTableOfReal TableOfReal_createIrisDataset ();
 
-TableOfReal TableOfReal_createIrisDataset ();
-int TableOfReal_areAllCellsDefined (TableOfReal me, long rb, long re, long cb, long ce);
-TableOfReal TableOfReal_createFromPolsData_50males (int include_levels);
-TableOfReal TableOfReal_createFromVanNieropData_25females (int include_levels);
-TableOfReal TableOfReal_createFromWeeninkData (int option); /* M W C */
+autoTableOfReal TableOfReal_createFromPolsData_50males (bool include_levels);
+
+autoTableOfReal TableOfReal_createFromVanNieropData_25females (bool include_levels);
+
+autoTableOfReal TableOfReal_createFromWeeninkData (int option); /* M W C */
 
 void TableOfReal_getColumnExtrema (TableOfReal me, long col, double *min, double *max);
+
 long TableOfReal_getColumnIndexAtMaximumInRow (TableOfReal me, long rowNumber);
+
 const char32 *TableOfReal_getColumnLabelAtMaximumInRow (TableOfReal me, long rowNumber);
 
 void TableOfReal_drawRowsAsHistogram (TableOfReal me, Graphics g, const char32 *rows, long colb, long cole,
 	double ymin, double ymax, double xoffsetFraction, double interbarFraction,
-	double interbarsFraction, const char32 *greys, int garnish);
+	double interbarsFraction, const char32 *greys, bool garnish);
 
 void TableOfReal_drawScatterPlot (TableOfReal me, Graphics g, long icx, long icy, long rowb,
 	long rowe, double xmin, double xmax, double ymin, double ymax,
-	int labelSize, int useRowLabels, const char32 *label, int garnish);
+	int labelSize, bool useRowLabels, const char32 *label, bool garnish);
 
-void TableOfReal_drawAsSquares_area (TableOfReal me, Graphics g, double zmin, double zmax, double cellSizeFactor, int randomFillOrder, int garnish);
+void TableOfReal_drawAsSquares_area (TableOfReal me, Graphics g, double zmin, double zmax, double cellSizeFactor, int randomFillOrder, bool garnish);
 
 void TableOfReal_drawScatterPlotMatrix (TableOfReal me, Graphics g, long colb, long cole, double fractionWhite);
 
 void TableOfReal_drawBoxPlots (TableOfReal me, Graphics g, long rowmin, long rowmax, long colmin, long colmax,
-	double ymin, double ymax, int garnish);
+	double ymin, double ymax, bool garnish);
 
 void TableOfReal_drawVectors (TableOfReal me, Graphics g, long colx1, long coly1,
 	long colx2, long coly2, double xmin, double xmax,
-	double ymin, double ymax, int vectype, int labelsize, int garnish);
+	double ymin, double ymax, int vectype, int labelsize, bool garnish);
 
 void TableOfReal_drawBiplot (TableOfReal me, Graphics g, double xmin, double xmax,
 	double ymin, double ymax, double sv_splitfactor, int labelsize,
-	int garnish);
+	bool garnish);
 
 void TableOfReal_drawColumnAsDistribution (TableOfReal me, Graphics g, int column, double minimum, double maximum, long nBins,
-	double freqMin, double freqMax, int cumulative, int garnish);
+	double freqMin, double freqMax, bool cumulative, bool garnish);
 
 long TableOfReal_getNumberOfLabelMatches (TableOfReal me, const char32 *search, int columnLabels,
 	int use_regexp);
@@ -112,20 +106,19 @@ void TableOfReal_copyLabels (TableOfReal me, TableOfReal thee, int rowOrigin, in
 
 void TableOfReal_labelsFromCollectionItemNames (TableOfReal me, Collection thee, int row, int column);
 
-void TableOfReal_setSequentialColumnLabels (TableOfReal me, long from, long to,
-	const char32 *precursor, long number, long increment);
-void TableOfReal_setSequentialRowLabels (TableOfReal me, long from, long to,
-	const char32 *precursor, long number, long increment);
+void TableOfReal_setSequentialColumnLabels (TableOfReal me, long from, long to, const char32 *precursor, long number, long increment);
+
+void TableOfReal_setSequentialRowLabels (TableOfReal me, long from, long to, const char32 *precursor, long number, long increment);
 
 int TableOfReal_hasRowLabels (TableOfReal me);
+
 int TableOfReal_hasColumnLabels (TableOfReal me);
 
 void TableOfReal_changeRowLabels (TableOfReal me, const char32 *search, const char32 *replace,
-	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches,
-	int use_regexp);
+	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp);
+
 void TableOfReal_changeColumnLabels (TableOfReal me, const char32 *search, const char32 *replace,
-	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches,
-	int use_regexp);
+	int maximumNumberOfReplaces, long *nmatches, long *nstringmatches, int use_regexp);
 /*
 	Change all row/column labels. The 'search' and 'replace' string are
 	interpreted as regular expressions when 'use_regexp' != 0.
@@ -138,15 +131,20 @@ void TableOfReal_changeColumnLabels (TableOfReal me, const char32 *search, const
 */
 
 void TableOfReal_centreColumns (TableOfReal me);
+
 void TableOfReal_centreColumns_byRowLabel (TableOfReal me);
 /* PRECONDITION: Table must be sorted by row labels !! */
 
 double TableOfReal_getColumnQuantile (TableOfReal me, long col, double quantile);
 
 double TableOfReal_getRowSumByLabel (TableOfReal me, const char32 *label);
+
 double TableOfReal_getRowSum (TableOfReal me, long index);
+
 double TableOfReal_getColumnSumByLabel (TableOfReal me, const char32 *label);
+
 double TableOfReal_getColumnSum (TableOfReal me, long index);
+
 double TableOfReal_getGrandSum (TableOfReal me);
 
 void TableOfReal_centreRows (TableOfReal me);
@@ -158,15 +156,18 @@ int TableOfReal_checkPositive (TableOfReal me);
 double TableOfReal_getTableNorm (TableOfReal me);
 
 void TableOfReal_normalizeTable (TableOfReal me, double norm);
+
 void TableOfReal_normalizeColumns (TableOfReal me, double norm);
+
 void TableOfReal_normalizeRows (TableOfReal me, double norm);
 
 void TableOfReal_standardizeColumns (TableOfReal me);
+
 void TableOfReal_standardizeRows (TableOfReal me);
 
-TableOfReal TableOfReal_rankColumns (TableOfReal me);
+autoTableOfReal TableOfReal_rankColumns (TableOfReal me);
 
-TableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats);
+autoTableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats);
 /*
 	stats == 0? averages : medians
 	For a table with n rows and m different labels (m <= n):
@@ -174,37 +175,34 @@ TableOfReal TableOfReal_meansByRowLabels (TableOfReal me, int expand, int stats)
 	else output a table with m rows, the averages for the m labels.
 */
 
-TableOfReal TableOfReal_bootstrap (TableOfReal me);
-/* Produce new table with the same number of entries, but randomly
-selected with replacement. */
-TableOfReal TableOfReal_randomizeRows (TableOfReal me);
+autoTableOfReal TableOfReal_bootstrap (TableOfReal me);
+// Produce new table with the same number of entries, but randomly selected with replacement.
+
+autoTableOfReal TableOfReal_randomizeRows (TableOfReal me);
 /* Produce new table with randomized rows */
 
 /* For the inheritors */
-TableOfReal TableOfReal_to_TableOfReal (TableOfReal me);
+autoTableOfReal TableOfReal_to_TableOfReal (TableOfReal me);
 
-TableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int inverse);
+autoTableOfReal TableOfReal_choleskyDecomposition (TableOfReal me, int upper, int inverse);
 
-TableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee);
-TableOfReal TableOfReal_appendColumnsMany (Collection me);
+autoTableOfReal TableOfReal_appendColumns (TableOfReal me, TableOfReal thee);
 
 void TableOfReal_copyOneRowWithLabel (TableOfReal me, TableOfReal thee, long myrow, long thyrow);
 
-double TableOfReal_normalityTest_BHEP (TableOfReal me, double *beta, double *tnb, double *lnmu, double *lnvar);
+/* Henze & Wagner (1997), A new approach to the BHEP tests for multivariate normality, Journal of Multivariate Analysis 62, 1-23. */
+double TableOfReal_normalityTest_BHEP (TableOfReal me, double *beta /* input and output */, double *tnb, double *lnmu, double *lnvar);
 
-TableOfReal TableOfReal_and_TableOfReal_crossCorrelations (TableOfReal me, TableOfReal thee, int by_columns, int center, int normalize);
+autoTableOfReal TableOfReal_and_TableOfReal_crossCorrelations (TableOfReal me, TableOfReal thee, int by_columns, int center, int normalize);
 
-/********************* class TablesOfReal ******************************/
 
-Thing_define (TablesOfReal, Ordered) {
-};
+#pragma mark - class TableOfRealList
 
-void TablesOfReal_init (TablesOfReal me, ClassInfo klas);
+autoTableOfReal TableOfRealList_sum (TableOfRealList me);
 
-TablesOfReal TablesOfReal_create ();
+bool TableOfRealList_haveIdenticalDimensions (TableOfRealList me);
 
-TableOfReal TablesOfReal_sum (TablesOfReal me);
+autoTableOfReal TableOfRealList_appendColumnsMany (TableOfRealList me);
 
-int TablesOfReal_checkDimensions (TablesOfReal me);
 
 #endif /* _TableOfReal_extensions_h_ */
diff --git a/dwtools/Table_extensions.cpp b/dwtools/Table_extensions.cpp
index 805c40c..10f8a08 100644
--- a/dwtools/Table_extensions.cpp
+++ b/dwtools/Table_extensions.cpp
@@ -1,20 +1,19 @@
 /* Table_extensions.cpp
 	 *
- * Copyright (C) 1997-2015 David Weenink
+ * Copyright (C) 1997-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -53,7 +52,7 @@ static bool Table_selectedColumnPartIsNumeric (Table me, long column, long *sele
 
 // column and selectedRows are valid; *min & *max must be intialized
 static void Table_columnExtremesFromSelectedRows (Table me, long column, long *selectedRows, long numberOfSelectedRows, double *min, double *max) {
-	double cmin = 1e38, cmax = - cmin;
+	double cmin = 1e308, cmax = - cmin;
 	for (long irow = 1; irow <= numberOfSelectedRows; irow++) {
 		double val = Table_getNumericValue_Assert (me, selectedRows[irow], column);
 		if (val < cmin) { cmin = val; }
@@ -89,10 +88,9 @@ Phoneme Number, Phoneme Label, F0, F1, F2 and F3. The speaker types
 are type 1 (men), type 2 (women) and type 3 (children)."
 */
 
-Table Table_createFromPetersonBarneyData () {
+autoTable Table_createFromPetersonBarneyData () {
 	long nrows = 1520, ncols = 9;
-	const char32 *columnLabels[9] =
-	{U"Type", U"Sex", U"Speaker", U"Vowel", U"IPA", U"F0", U"F1", U"F2", U"F3"};
+	const char32 *columnLabels[9] = {U"Type", U"Sex", U"Speaker", U"Vowel", U"IPA", U"F0", U"F1", U"F2", U"F3"};
 	const char32 *type[3] = {U"m", U"w", U"c"};
 	// Wrong order before 20080125
 	//	char32 *vowel[10] = {U"iy", U"ih", U"eh", U"ae", U"aa", U"ao", U"uh", U"uw", U"ah", U"er"};
@@ -1633,8 +1631,8 @@ Table Table_createFromPetersonBarneyData () {
 	try {
 		autoTable me = Table_create (nrows, ncols);
 
-		for (long i = 1; i <= nrows; i++) {
-			TableRow row = (TableRow) my rows -> item[i];
+		for (long i = 1; i <= nrows; i ++) {
+			TableRow row = my rows.at [i];
 			int vowel_id = ( (i - 1) % 20) / 2 + 1;	/* 1 - 10 */
 			int speaker_id = (i - 1) / 20 + 1;		/* 1 - 76 */
 			int speaker_type, speaker_sex;
@@ -1658,26 +1656,23 @@ Table Table_createFromPetersonBarneyData () {
 			row -> cells [4]. string = Melder_dup_f (vowel [vowel_id - 1]);
 			row -> cells [5]. string = Melder_dup_f (ipa [vowel_id - 1]);
 			for (long j = 0; j <= 3; j++) {
-				row -> cells [j + 6].string = Melder_dup_f (Melder_integer (pbdata[i - 1].f[j]));
+				row -> cells [j + 6]. string = Melder_dup_f (Melder_integer (pbdata[i - 1].f[j]));
 			}
 		}
 		for (long j = 1; j <= ncols; j++) {
-			Table_setColumnLabel (me.peek(), j, columnLabels[j - 1]);
-			my columnHeaders [j]. numericized = FALSE;
+			Table_setColumnLabel (me.get(), j, columnLabels[j - 1]);
+			my columnHeaders [j]. numericized = false;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created from Peterson & Barney data.");
 	}
 }
 
-Table Table_createFromPolsVanNieropData () {
+autoTable Table_createFromPolsVanNieropData () {
 	long nrows = 900, ncols = 10;
-	const char32 *columnLabels[10] =
-	{U"Sex", U"Speaker", U"Vowel", U"IPA", U"F1", U"F2", U"F3", U"L1", U"L2", U"L3"};
-	const char32 *vowel[12] = {U"oe", U"aa", U"oo", U"a", U"eu", U"ie", U"uu", U"ee", U"u",
-	                            U"e", U"o", U"i"
-	                           };
+	const char32 *columnLabels[10] = {U"Sex", U"Speaker", U"Vowel", U"IPA", U"F1", U"F2", U"F3", U"L1", U"L2", U"L3"};
+	const char32 *vowel[12] = {U"oe", U"aa", U"oo", U"a", U"eu", U"ie", U"uu", U"ee", U"u", U"e", U"o", U"i"};
 	const char32 *ipa[12] = {U"u", U"a", U"o", U"\\as", U"\\o/", U"i", U"y", U"e", U"\\yc", U"\\ep", U"\\ct", U"\\ic"};
 	const char32 *sex[2] = {U"m", U"f"};
 	struct polsdatum {
@@ -2665,35 +2660,34 @@ Table Table_createFromPolsVanNieropData () {
 	try {
 		autoTable me = Table_create (nrows, ncols);
 
-		for (long i = 1; i <= nrows; i++) {
-			TableRow row = (TableRow) my rows -> item[i];
+		for (long i = 1; i <= nrows; i ++) {
+			TableRow row = my rows.at [i];
 			int vowel_id = ( (i - 1) % 12) + 1;	/* 1 - 12 */
 			int speaker_id = (i - 1) / 12 + 1;  /* 1 - 75 */
-			int speaker_sex = speaker_id <= 50 ? 0 : 1;
+			int speaker_sex = ( speaker_id <= 50 ? 0 : 1 );
 
 			row -> cells [1]. string = Melder_dup_f (sex [speaker_sex]);
 			row -> cells [2]. string = Melder_dup_f (Melder_integer (speaker_id));
 			row -> cells [3]. string = Melder_dup_f (vowel [vowel_id - 1]);
 			row -> cells [4]. string = Melder_dup_f (ipa [vowel_id - 1]);
-			for (long j = 0; j <= 2; j++) {
-				row -> cells [j + 5]. string = Melder_dup_f (Melder_integer (polsdata[i - 1].f[j]));
-				row -> cells [j + 8]. string = Melder_dup_f (Melder_integer (polsdata[i - 1].l[j]));
+			for (long j = 0; j <= 2; j ++) {
+				row -> cells [j + 5]. string = Melder_dup_f (Melder_integer (polsdata [i - 1]. f [j]));
+				row -> cells [j + 8]. string = Melder_dup_f (Melder_integer (polsdata [i - 1]. l [j]));
 			}
 		}
 		for (long j = 1; j <= ncols; j++) {
-			Table_setColumnLabel (me.peek(), j, columnLabels[j - 1]);
+			Table_setColumnLabel (me.get(), j, columnLabels[j - 1]);
 			my columnHeaders [j]. numericized = false;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created from Pols & van Nierop data.");
 	}
 }
 
-Table Table_createFromWeeninkData () {
+autoTable Table_createFromWeeninkData () {
 	long nrows = 360, ncols = 9;
-	const char32 *columnLabels[9] =
-	{U"Type", U"Sex", U"Speaker", U"Vowel", U"IPA", U"F0", U"F1", U"F2", U"F3"};
+	const char32 *columnLabels[9] = {U"Type", U"Sex", U"Speaker", U"Vowel", U"IPA", U"F0", U"F1", U"F2", U"F3"};
 	const char32 *type[3] = {U"m", U"w", U"c"};
 	/* Our order: "oe", "o", "oo", "a", "aa", "u", "eu", "uu", "ie", "i", "ee", "e"
 		to Pols & van Nierop order */
@@ -2702,7 +2696,7 @@ Table Table_createFromWeeninkData () {
 	const char32 *ipa[13] = {U"", U"u", U"a", U"o", U"\\as", U"\\o/", U"i", U"y", U"e", U"\\yc", U"\\ep", U"\\ct", U"\\ic"};
 	const char32 *sex[2] = {U"m", U"f"};
 	struct weeninkdatum {
-		short f[4];	/* f0, f1, f2, f3 */
+		short f[4];	  // f0, f1, f2, f3
 	} weeninkdata [] = {
 		{{182, 335,  748, 2332}},
 		{{170, 435,  669, 2886}},
@@ -3098,20 +3092,19 @@ Table Table_createFromWeeninkData () {
 	try {
 		autoTable me = Table_create (nrows, ncols);
 
-		for (long i = 1; i <= nrows; i++) {
-			TableRow row = (TableRow)  my rows -> item[i];
-			int speaker_id = (i - 1) / 12 + 1;	/* 1 - 30 */
-			int vowel_id = (i - 1) % 12 + 1;	/* 1 - 12 */
+		for (long i = 1; i <= nrows; i ++) {
+			TableRow row = my rows.at [i];
+			int speaker_id = (i - 1) / 12 + 1;	// 1 - 30
+			int vowel_id = (i - 1) % 12 + 1;	// 1 - 12
 			int index_in_data = (speaker_id - 1) * 12 + order[vowel_id] - 1;
 			int speaker_type, speaker_sex;
 
-			if (speaker_id <= 10) { /* 10 men */
+			if (speaker_id <= 10) {   // 10 men
 				speaker_type = 0; speaker_sex = 0;
-			} else if (speaker_id <= 20) { /* 10 women */
+			} else if (speaker_id <= 20) {   // 10 women
 				speaker_type = 1; speaker_sex = 1;
-			} else { /* 10  children */
-				speaker_type = 2; speaker_sex = 0;
-				//  Which children were m/f ?
+			} else {   // 10 children
+				speaker_type = 2; speaker_sex = 0;   // which children were m/f
 			}
 
 			row -> cells [1]. string = Melder_dup_f (type [speaker_type]);
@@ -3120,50 +3113,82 @@ Table Table_createFromWeeninkData () {
 			row -> cells [4]. string = Melder_dup_f (vowel [vowel_id]);
 			row -> cells [5]. string = Melder_dup_f (ipa [vowel_id]);
 
-			for (long j = 0; j <= 3; j++) {
-				row -> cells [j + 6]. string = Melder_dup_f (Melder_integer (weeninkdata[index_in_data].f[j]));
+			for (long j = 0; j <= 3; j ++) {
+				row -> cells [j + 6]. string = Melder_dup_f (Melder_integer (weeninkdata [index_in_data]. f [j]));
 			}
 		}
-		for (long j = 1; j <= ncols; j++) {
-			Table_setColumnLabel (me.peek(), j, columnLabels[j - 1]);
+		for (long j = 1; j <= ncols; j ++) {
+			Table_setColumnLabel (me.get(), j, columnLabels [j - 1]);
 			my columnHeaders [j]. numericized = false;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created from Weenink data.");
 	}
 }
 
 // Keating&Esposito (2006), 
-Table Table_createFromEspositoData () {
+autoTable Table_createFromEspositoData () {
 	try {
 		autoTable me = Table_createWithColumnNames (10, U"Language Modal Breathy");
-		Table_setStringValue (me.peek(), 1, 1, U"Chong");Table_setNumericValue (me.peek(), 1, 2, -1.5);Table_setNumericValue (me.peek(), 1, 3, 5);
-		Table_setStringValue (me.peek(), 2, 1, U"Fuzhou");Table_setNumericValue (me.peek(), 2, 2, -1.5);Table_setNumericValue (me.peek(), 2, 3, 5);
-		Table_setStringValue (me.peek(), 3, 1, U"Green Hmong");Table_setNumericValue (me.peek(), 3, 2, 3);Table_setNumericValue (me.peek(), 3, 3, 12);
-		Table_setStringValue (me.peek(), 4, 1, U"White Hmong");Table_setNumericValue (me.peek(), 4, 2, 2);Table_setNumericValue (me.peek(), 4, 3, 11);
-		Table_setStringValue (me.peek(), 5, 1, U"Mon");Table_setNumericValue (me.peek(), 5, 2, -1.5);Table_setNumericValue (me.peek(), 5, 3, 0);
-		Table_setStringValue (me.peek(), 6, 1, U"SADV Zapotec");Table_setNumericValue (me.peek(), 6, 2, -6);Table_setNumericValue (me.peek(), 6, 3, -4);
-		Table_setStringValue (me.peek(), 7, 1, U"SLQ Zapotec");Table_setNumericValue (me.peek(), 7, 2, 3.5);Table_setNumericValue (me.peek(), 7, 3, 14);
-		Table_setStringValue (me.peek(), 8, 1, U"Tlacolula Zapotec");Table_setNumericValue (me.peek(), 8, 2, 3);Table_setNumericValue (me.peek(), 8, 3, 13);
-		Table_setStringValue (me.peek(), 9, 1, U"Tamang");Table_setNumericValue (me.peek(), 9, 2, 1);Table_setNumericValue (me.peek(), 9, 3, 1);
-		Table_setStringValue (me.peek(), 10, 1, U"!Xoo");Table_setNumericValue (me.peek(), 10, 2, 1);Table_setNumericValue (me.peek(), 10, 3, 14);
-		return me.transfer();
+		Table_setStringValue (me.get(), 1, 1, U"Chong");
+		Table_setNumericValue (me.get(), 1, 2, -1.5);
+		Table_setNumericValue (me.get(), 1, 3, 5);
+		Table_setStringValue (me.get(), 2, 1, U"Fuzhou");
+		Table_setNumericValue (me.get(), 2, 2, -1.5);
+		Table_setNumericValue (me.get(), 2, 3, 5);
+		Table_setStringValue (me.get(), 3, 1, U"Green Hmong");
+		Table_setNumericValue (me.get(), 3, 2, 3);
+		Table_setNumericValue (me.get(), 3, 3, 12);
+		Table_setStringValue (me.get(), 4, 1, U"White Hmong");
+		Table_setNumericValue (me.get(), 4, 2, 2);
+		Table_setNumericValue (me.get(), 4, 3, 11);
+		Table_setStringValue (me.get(), 5, 1, U"Mon");
+		Table_setNumericValue (me.get(), 5, 2, -1.5);
+		Table_setNumericValue (me.get(), 5, 3, 0);
+		Table_setStringValue (me.get(), 6, 1, U"SADV Zapotec");
+		Table_setNumericValue (me.get(), 6, 2, -6);
+		Table_setNumericValue (me.get(), 6, 3, -4);
+		Table_setStringValue (me.get(), 7, 1, U"SLQ Zapotec");
+		Table_setNumericValue (me.get(), 7, 2, 3.5);
+		Table_setNumericValue (me.get(), 7, 3, 14);
+		Table_setStringValue (me.get(), 8, 1, U"Tlacolula Zapotec");
+		Table_setNumericValue (me.get(), 8, 2, 3);
+		Table_setNumericValue (me.get(), 8, 3, 13);
+		Table_setStringValue (me.get(), 9, 1, U"Tamang");
+		Table_setNumericValue (me.get(), 9, 2, 1);
+		Table_setNumericValue (me.get(), 9, 3, 1);
+		Table_setStringValue (me.get(), 10, 1, U"!Xoo");
+		Table_setNumericValue (me.get(), 10, 2, 1);
+		Table_setNumericValue (me.get(), 10, 3, 14);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Keating-Esposito table not created.");
 	}
 }
 
-Table Table_createFromGanongData () {
+autoTable Table_createFromGanongData () {
 	try {
 		autoTable me = Table_createWithColumnNames (6, U"VOT dash-tash dask-task");
-		Table_setNumericValue (me.peek(), 1, 1, -17.5);Table_setNumericValue (me.peek(), 1, 2, 0.98);Table_setNumericValue (me.peek(), 1, 3, 0.92);
-		Table_setNumericValue (me.peek(), 2, 1, -7.5);Table_setNumericValue (me.peek(), 2, 2, 0.95);Table_setNumericValue (me.peek(), 2, 3, 0.83);
-		Table_setNumericValue (me.peek(), 3, 1, -2.5);Table_setNumericValue (me.peek(), 3, 2, 0.71);Table_setNumericValue (me.peek(), 3, 3, 0.33);
-		Table_setNumericValue (me.peek(), 4, 1, 2.5);Table_setNumericValue (me.peek(), 4, 2, 0.29);Table_setNumericValue (me.peek(), 4, 3, 0.10);
-		Table_setNumericValue (me.peek(), 5, 1, 7.5);Table_setNumericValue (me.peek(), 5, 2, 0.12);Table_setNumericValue (me.peek(), 5, 3, 0.02);
-		Table_setNumericValue (me.peek(), 6, 1, 17.5);Table_setNumericValue (me.peek(), 6, 2, 0.10);Table_setNumericValue (me.peek(), 6, 3, 0.02);
-		return me.transfer();
+		Table_setNumericValue (me.get(), 1, 1, -17.5);
+		Table_setNumericValue (me.get(), 1, 2, 0.98);
+		Table_setNumericValue (me.get(), 1, 3, 0.92);
+		Table_setNumericValue (me.get(), 2, 1, -7.5);
+		Table_setNumericValue (me.get(), 2, 2, 0.95);
+		Table_setNumericValue (me.get(), 2, 3, 0.83);
+		Table_setNumericValue (me.get(), 3, 1, -2.5);
+		Table_setNumericValue (me.get(), 3, 2, 0.71);
+		Table_setNumericValue (me.get(), 3, 3, 0.33);
+		Table_setNumericValue (me.get(), 4, 1, 2.5);
+		Table_setNumericValue (me.get(), 4, 2, 0.29);
+		Table_setNumericValue (me.get(), 4, 3, 0.10);
+		Table_setNumericValue (me.get(), 5, 1, 7.5);
+		Table_setNumericValue (me.get(), 5, 2, 0.12);
+		Table_setNumericValue (me.get(), 5, 3, 0.02);
+		Table_setNumericValue (me.get(), 6, 1, 17.5);
+		Table_setNumericValue (me.get(), 6, 2, 0.10);
+		Table_setNumericValue (me.get(), 6, 3, 0.02);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Ganong table not created.");
 	}
@@ -3171,12 +3196,17 @@ Table Table_createFromGanongData () {
 
 static bool intervalsIntersect (double x1, double x2, double xmin, double xmax, double *xc1, double *xc2) {
 	if (x1 > x2) { 
-		double tmp = x1; x1 = x2; x2 = tmp;
+		double tmp = x1;
+		x1 = x2;
+		x2 = tmp;
 	}
 	if (xmin > xmax) {
-		double tmp = xmin; xmin = xmax; xmin = tmp;
+		double tmp = xmin;
+		xmin = xmax;
+		xmin = tmp;
 	}
-	*xc1 = x1; *xc2 = x2;
+	*xc1 = x1;
+	*xc2 = x2;
 	if (x2 <= xmin || x1 >= xmax) {
 		return false;
 	}
@@ -3190,9 +3220,10 @@ static bool intervalsIntersect (double x1, double x2, double xmin, double xmax,
 }
 
 void Table_horizontalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long ycolumn, double xmin, double xmax, 
-	double ymin, double ymax, long xci_min, long xci_max, double bar_mm, int garnish, const char32 *formula, Interpreter interpreter) {
+	double ymin, double ymax, long xci_min, long xci_max, double bar_mm, int garnish, const char32 *formula, Interpreter interpreter)
+{
 	try {
-		long nrows = my rows -> size;
+		long nrows = my rows.size;
 		if (xcolumn < 1 || xcolumn > nrows || ycolumn < 1 || ycolumn > nrows ||
 			(xci_min != 0 && xci_min > nrows) || (xci_max != 0 && xci_max > nrows)) {
 			return;
@@ -3202,7 +3233,8 @@ void Table_horizontalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, lon
 		if (ymin >= ymax) {
 			Table_columnExtremesFromSelectedRows (me, ycolumn, selectedRows.peek(), numberOfSelectedRows, &ymin, &ymax);
 			if (ymin >= ymax) {
-				ymin -= 1; ymax += 1;
+				ymin -= 1.0;
+				ymax += 1.0;
 			}
 		}
 		double x1min, x1max;
@@ -3217,17 +3249,18 @@ void Table_horizontalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, lon
 				xmax += x1max;
 			}
 			if (xmin >= xmax) {
-				xmin -= 1; xmax += 1;
+				xmin -= 1.0;
+				xmax += 1.0;
 			}
 		}
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 		Graphics_setInner (g);
 		double dy = Graphics_dyMMtoWC (g, bar_mm);
 		for (long row = 1; row <= numberOfSelectedRows; row++) {
-			double x  = Table_getNumericValue_Assert (me, selectedRows[row], xcolumn);
-			double y  = Table_getNumericValue_Assert (me, selectedRows[row], ycolumn);
-			double dx1 = xci_min > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], xci_min) : 0;
-			double dx2 = xci_max > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], xci_max) : 0;
+			double x = Table_getNumericValue_Assert (me, selectedRows [row], xcolumn);
+			double y = Table_getNumericValue_Assert (me, selectedRows [row], ycolumn);
+			double dx1 = ( xci_min > 0 ? Table_getNumericValue_Assert (me, selectedRows [row], xci_min) : 0 );
+			double dx2 = ( xci_max > 0 ? Table_getNumericValue_Assert (me, selectedRows [row], xci_max) : 0 );
 			double x1 = x - dx1, x2 = x + dx2, xc1, yc1, xc2, yc2;
 
 			if (x <= xmax && x >= xmin && y <= ymax && y >= ymin) {
@@ -3249,18 +3282,18 @@ void Table_horizontalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, lon
 
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
-			Graphics_marksBottom (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
+			Graphics_marksBottom (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
-		//
+		Melder_clearError ();
 	}
 }
 
 void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long ycolumn, double xmin, double xmax, 
 	double ymin, double ymax, long yci_min, long yci_max, double bar_mm, int garnish, const char32 *formula, Interpreter interpreter) {
 	try {
-		long nrows = my rows -> size;
+		long nrows = my rows.size;
 		if (xcolumn < 1 || xcolumn > nrows || ycolumn < 1 || ycolumn > nrows ||
 			(yci_min != 0 && yci_min > nrows) || (yci_max != 0 && yci_max > nrows)) {
 			return;
@@ -3270,7 +3303,8 @@ void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long
 		if (xmin >= xmax) {
 			Table_columnExtremesFromSelectedRows (me, ycolumn, selectedRows.peek(), numberOfSelectedRows, &ymin, &ymax);
 			if (xmin >= xmax) {
-				xmin -= 1; xmax += 1;
+				xmin -= 1.0;
+				xmax += 1.0;
 			}
 		}
 		double y1min, y1max;
@@ -3285,7 +3319,8 @@ void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long
 				ymax += y1max;
 			}
 			if (ymin >= ymax) {
-				ymin -= 1; ymax += 1;
+				ymin -= 1.0;
+				ymax += 1.0;
 			}
 		}
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -3294,19 +3329,19 @@ void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long
 		for (long row = 1; row <= numberOfSelectedRows; row++) {
 			double x  = Table_getNumericValue_Assert (me, selectedRows[row], xcolumn);
 			double y  = Table_getNumericValue_Assert (me, selectedRows[row], ycolumn);
-			double dy1 = yci_min > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], yci_min) : 0;
-			double dy2 = yci_max > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], yci_max) : 0;
+			double dy1 = yci_min > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], yci_min) : 0.0;
+			double dy2 = yci_max > 0 ? Table_getNumericValue_Assert (me, selectedRows[row], yci_max) : 0.0;
 			double y1 = y - dy1, y2 = y + dy2, xc1, yc1, xc2, yc2;
 
 			if (x <= xmax && x >= xmin && y <= ymax && y >= ymin) {
 				// vertical confidence interval
 				if (intervalsIntersect (y1, y2, ymin, ymax, &yc1, &yc2)) {
 					Graphics_line (g, x, yc1, x, yc2);
-					if (dx > 0 && intervalsIntersect (x - dx / 2, x + dx / 2, xmin, xmax, &xc1, &xc2)) {
-						if (yc1 >= ymin && dy1 > 0) {
+					if (dx > 0 && intervalsIntersect (x - dx / 2.0, x + dx / 2.0, xmin, xmax, &xc1, &xc2)) {
+						if (yc1 >= ymin && dy1 > 0.0) {
 							Graphics_line (g, xc1, yc1, xc2, yc1);
 						}
-						if (yc2 <= ymax && dy2 > 0) {
+						if (yc2 <= ymax && dy2 > 0.0) {
 							Graphics_line (g, xc1, yc2, xc2, yc2);
 						}
 					}
@@ -3317,11 +3352,11 @@ void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long
 
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
-			Graphics_marksBottom (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
+			Graphics_marksBottom (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
-		//
+		Melder_clearError ();
 	}
 }
 
@@ -3329,12 +3364,12 @@ double Table_getMedianAbsoluteDeviation (Table me, long columnNumber)
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_Assert (me, columnNumber);
-		if (my rows -> size < 1) {
+		if (my rows.size < 1) {
 			return NUMundefined;
 		}
-		autoNUMvector<double> data (1, my rows -> size);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		autoNUMvector<double> data (1, my rows.size);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			data[irow] = row -> cells[columnNumber].number;
 			if (data[irow] == NUMundefined) {
 				Melder_throw (me, U": the cell in row ", irow, U" of column \"",
@@ -3342,13 +3377,13 @@ double Table_getMedianAbsoluteDeviation (Table me, long columnNumber)
 			}
 		}
 		double mad, location;
-		NUMmad (data.peek(), my rows -> size, &location, 1, &mad, 0);
+		NUMmad (data.peek(), my rows.size, &location, 1, &mad, nullptr);
 		return mad;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot compute median absolute deviation of column ", columnNumber, U".");
 	}
 
-Table Table_getOneWayKruskalWallis (Table me, long column, long factorColumn, double *degreesOfFreedom, double *kruskalWallis, double *probability) {
+autoTable Table_getOneWayKruskalWallis (Table me, long column, long factorColumn, double *prob, double *p_kruskalWallis, double *p_df) {
 	try {
 		if (column < 1 || column > my numberOfColumns) {
 			Melder_throw (U"Invalid column number.");
@@ -3356,27 +3391,27 @@ Table Table_getOneWayKruskalWallis (Table me, long column, long factorColumn, do
 		if (factorColumn < 1 || factorColumn > my numberOfColumns || factorColumn == column) {
 			Melder_throw (U"Invalid group column number.");
 		}
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		Table_numericize_Assert (me, column);
 		autoNUMvector<double> data (1, numberOfData);
 		autoStringsIndex levels = Table_to_StringsIndex_column (me, factorColumn);
-		long numberOfLevels = levels -> classes -> size;
+		long numberOfLevels = levels -> classes->size;
 		if (numberOfLevels < 2) {
 			Melder_throw (U"There must be at least two levels.");
 		}
 
 		for (long irow = 1; irow <= numberOfData; irow++) {
-			data[irow] = ((TableRow) my rows -> item [irow]) -> cells [column] .number;
+			data [irow] = my rows.at [irow] -> cells [column]. number;
 		}
 		NUMsort2<double, long> (numberOfData, data.peek(), levels -> classIndex);
 		NUMrank<double> (numberOfData, data.peek());
 
 		// Get correctionfactor for ties
 		// Hayes pg. 831
-		double c = 0;
+		double c = 0.0;
 		long jt, j = 1;
 		while (j < numberOfData) {
-        	for (jt = j + 1; jt <= numberOfData && data[jt] == data[j]; jt++) {}
+        	for (jt = j + 1; jt <= numberOfData && data [jt] == data [j]; jt ++) { }
         	double multiplicity = jt - j;
 			if (multiplicity > 1) {
 				c += multiplicity * (multiplicity *multiplicity - 1.0);
@@ -3394,83 +3429,82 @@ Table Table_getOneWayKruskalWallis (Table me, long column, long factorColumn, do
 			factorLevelSums[index] += data[i];
 		}
 
-		double h = 0;
+		double kruskalWallis = 0;
 		for (j = 1; j <= numberOfLevels; j++) {
 			if (factorLevelSizes[j] < 2) {
-				SimpleString ss = (SimpleString) levels -> classes -> item[j];
+				SimpleString ss = (SimpleString) levels -> classes->at [j];   // FIXME cast
 				Melder_throw (U"Group ", ss -> string, U" has fewer than two cases.");
 			}
-			h += factorLevelSums[j] * factorLevelSums[j] / factorLevelSizes[j]; // = factorLevelMeans * groupMean * factorLevelSizes
+			kruskalWallis += factorLevelSums[j] * factorLevelSums[j] / factorLevelSizes[j]; // = factorLevelMeans * groupMean * factorLevelSizes
 		}
-		h = (12.0 / (numberOfData * (numberOfData + 1))) * h - 3 * (numberOfData + 1);
-		h /= tiesCorrection;
-		double dof = numberOfLevels - 1;
-		if (degreesOfFreedom) {
-			*degreesOfFreedom = dof;
+		kruskalWallis = (12.0 / (numberOfData * (numberOfData + 1.0))) * kruskalWallis - 3.0 * (numberOfData + 1);
+		kruskalWallis /= tiesCorrection;
+		double df = numberOfLevels - 1.0;
+		if (p_df) {
+			*p_df = df;
 		}
-		if (kruskalWallis) {
-			*kruskalWallis = h;
+		if (p_kruskalWallis) {
+			*p_kruskalWallis = kruskalWallis;
 		}
-		double p = NUMchiSquareQ (h, dof);
-		if (probability) {
-			*probability = p;
+		if (prob) {
+			*prob = NUMchiSquareQ (kruskalWallis, df);
 		}
 		autoTable him = Table_createWithColumnNames (numberOfLevels, U"Group(R) Sums(R) Cases");
 		for (long irow = 1; irow <= numberOfLevels; irow++) {
-			SimpleString ss = (SimpleString) levels -> classes -> item[irow];
-			Table_setStringValue (him.peek(), irow, 1, ss -> string);
-			Table_setNumericValue (him.peek(), irow, 2, factorLevelSums[irow]);
-			Table_setNumericValue (him.peek(), irow, 3, factorLevelSizes[irow]);
+			SimpleString ss = (SimpleString) levels -> classes->at [irow];
+			Table_setStringValue (him.get(), irow, 1, ss -> string);
+			Table_setNumericValue (him.get(), irow, 2, factorLevelSums[irow]);
+			Table_setNumericValue (him.get(), irow, 3, factorLevelSizes[irow]);
 		}
-		Table_numericize_Assert (him.peek(), 2);
-		Table_numericize_Assert (him.peek(), 3);
-		return him.transfer();
+		Table_numericize_Assert (him.get(), 2);
+		Table_numericize_Assert (him.get(), 3);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": no one-way Kruskal-Wallis performed.");
 	}
 }
 
 // Table with Group Means Cases
-static void _Table_postHocTukeyHSD (Table me, double sumOfSquaresWithin, double degreesOfFreedomWithin, Table *meansDiff, Table *meansDiffProbabilities) {
+static void _Table_postHocTukeyHSD (Table me, double sumOfSquaresWithin, double degreesOfFreedomWithin, autoTable *meansDiff, autoTable *meansDiffProbabilities) {
 	try {
 		Table_numericize_Assert (me, 2);
 		Table_numericize_Assert (me, 3);
-		long numberOfMeans = my rows -> size;
+		long numberOfMeans = my rows.size;
 		autoNUMvector<double> means (1, numberOfMeans);
 		autoNUMvector<double> cases (1, numberOfMeans);
 		autoTable meansD = Table_create (numberOfMeans - 1, numberOfMeans);
 		for (long i = 1; i <= numberOfMeans; i++) {
-			TableRow row = (TableRow) my rows -> item [i];
-			means[i] = row -> cells [2].number;
-			cases[i] = row -> cells [3].number;
+			TableRow row = my rows.at [i];
+			means [i] = row -> cells [2]. number;
+			cases [i] = row -> cells [3]. number;
 		}
-		for (long i = 1; i <= numberOfMeans - 1; i++) {
-			Table_setStringValue (meansD.peek(), i, 1, ((TableRow) my rows -> item [i]) -> cells [1].string);
-			Table_setColumnLabel (meansD.peek(), i + 1, ((TableRow) my rows -> item [i + 1]) -> cells [1].string);
+		for (long i = 1; i <= numberOfMeans - 1; i ++) {
+			Table_setStringValue (meansD.get(), i, 1, my rows.at [i] -> cells [1]. string);
+			Table_setColumnLabel (meansD.get(), i + 1, my rows.at [i + 1] -> cells [1]. string);
 		}
 
-		for (long irow = 1; irow <= numberOfMeans - 1; irow++) {
-			for (long icol = irow + 1; icol <= numberOfMeans; icol++) {
-				double dif = fabs (means[irow] - means[icol]);
-				Table_setNumericValue (meansD.peek(), irow, icol, dif);
+		for (long irow = 1; irow <= numberOfMeans - 1; irow ++) {
+			for (long icol = irow + 1; icol <= numberOfMeans; icol ++) {
+				double dif = fabs (means [irow] - means [icol]);
+				Table_setNumericValue (meansD.get(), irow, icol, dif);
 			}
 		}
-		autoTable meansP = (Table) Data_copy (meansD.peek());
-		for (long irow = 1; irow <= numberOfMeans - 1; irow++) {
-			for (long icol = irow + 1; icol <= numberOfMeans; icol++) {
+		autoTable meansP = Data_copy (meansD.get());
+		for (long irow = 1; irow <= numberOfMeans - 1; irow ++) {
+			for (long icol = irow + 1; icol <= numberOfMeans; icol ++) {
 				// Tukey-Kramer correction for unequal sample sizes
-				double oneOverNstar =  0.5 * (1 / cases[icol] + 1 / cases[irow]);
+				double oneOverNstar =  0.5 * (1.0 / cases [icol] + 1.0 / cases [irow]);
 				double s = sqrt (sumOfSquaresWithin * oneOverNstar);
 				double q = fabs (means[irow] - means[icol]) / s;
 				double p = NUMtukeyQ (q, numberOfMeans, degreesOfFreedomWithin, 1);
-				Table_setNumericValue (meansP.peek(), irow, icol, p);
+				Table_setNumericValue (meansP.get(), irow, icol, p);
 			}
 		}
-		if (meansDiff != NULL) {
-			*meansDiff = meansD.transfer();
+		if (meansDiff) {
+			*meansDiff = meansD.move();
 		}
-		if (meansDiffProbabilities != NULL) {
-			*meansDiffProbabilities = meansP.transfer();
+		if (meansDiffProbabilities) {
+			*meansDiffProbabilities = meansP.move();
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no post-hoc performed.");
@@ -3494,15 +3528,15 @@ void Table_printAsAnovaTable (Table me) {
 		Table_numericize_Assert (me, icol);
 	}
 
-	for (long i = 1; i <= my rows -> size; i++) {
-		TableRow row = (TableRow) my rows -> item[i];
-		MelderString_copy (&s, Melder_padOrTruncate (width[1], row -> cells[1].string), U"\t");
-		for (long j = 2; j <= 6; j++) {
-			double value = row -> cells[j].number;
+	for (long i = 1; i <= my rows.size; i ++) {
+		TableRow row = my rows.at [i];
+		MelderString_copy (&s, Melder_padOrTruncate (width [1], row -> cells [1]. string), U"\t");
+		for (long j = 2; j <= 6; j ++) {
+			double value = row -> cells [j]. number;
 			if (NUMdefined (value)) {
-				MelderString_append (&s, Melder_pad (width[j], Melder_single (value)), j == 6 ? U"" : U"\t");
+				MelderString_append (&s, Melder_pad (width [j], Melder_single (value)), j == 6 ? U"" : U"\t");
 			} else {
-				MelderString_append (&s, Melder_pad (width[j], U""), j == 6 ? U"" : U"\t");
+				MelderString_append (&s, Melder_pad (width [j], U""), j == 6 ? U"" : U"\t");
 			}
 		}
 		MelderInfo_writeLine (s.string);
@@ -3511,18 +3545,18 @@ void Table_printAsAnovaTable (Table me) {
 
 void Table_printAsMeansTable (Table me) {
 	autoMelderString s;
-	for (long icol = 2; icol <= my numberOfColumns; icol++) {
+	for (long icol = 2; icol <= my numberOfColumns; icol ++) {
 		Table_numericize_Assert (me, icol);
 	}
-	for (long j = 1; j <= my numberOfColumns; j++) {
+	for (long j = 1; j <= my numberOfColumns; j ++) {
 		MelderString_append (&s,
-			Melder_padOrTruncate (10, my columnHeaders[j].label == NULL ? U"" : my columnHeaders[j].label),
+			Melder_padOrTruncate (10, ! my columnHeaders [j]. label ? U"" : my columnHeaders [j]. label),
 			j == my numberOfColumns ? U"" : U"\t");
 	}
 	MelderInfo_writeLine (s.string);
-	for (long i = 1; i <= my rows -> size; i++) {
-		TableRow row = (TableRow) my rows -> item[i];
-		MelderString_copy (&s, Melder_padOrTruncate (10, row -> cells[1].string), U"\t");
+	for (long i = 1; i <= my rows.size; i ++) {
+		TableRow row = my rows.at [i];
+		MelderString_copy (&s, Melder_padOrTruncate (10, row -> cells [1]. string), U"\t");
 		for (long j = 2; j <= my numberOfColumns; j++) {
 			double value = row -> cells[j].number;
 			if (value != NUMundefined) {
@@ -3539,7 +3573,7 @@ void Table_printAsMeansTable (Table me) {
 	}
 }
 
-Table Table_getOneWayAnalysisOfVarianceF (Table me, long column, long factorColumn, Table *means, Table *meansDiff, Table *meansDiffProbabilities) {
+autoTable Table_getOneWayAnalysisOfVarianceF (Table me, long column, long factorColumn, autoTable *means, autoTable *meansDiff, autoTable *meansDiffProbabilities) {
 	try {
 		if (column < 1 || column > my numberOfColumns) {
 			Melder_throw (U"Invalid column number.");
@@ -3547,36 +3581,36 @@ Table Table_getOneWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		if (factorColumn < 1 || factorColumn > my numberOfColumns || factorColumn == column) {
 			Melder_throw (U"Invalid group column number.");
 		}
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		Table_numericize_Assert (me, column);
 		autoNUMvector<double> data (1, numberOfData);
 		autoStringsIndex levels = Table_to_StringsIndex_column (me, factorColumn);
 		// copy data from Table
 		for (long irow = 1; irow <= numberOfData; irow++) {
-			data[irow] = ((TableRow) my rows -> item[irow]) -> cells[column].number;
+			data [irow] = my rows.at [irow] -> cells [column]. number;
 		}
-		long numberOfLevels = levels -> classes -> size;
+		long numberOfLevels = levels -> classes->size;
 		if (numberOfLevels < 2) {
 			Melder_throw (U"There must be at least two levels.");
 		}
 		autoNUMvector<long> factorLevelSizes (1, numberOfLevels);
 		autoNUMvector<double> factorLevelMeans (1, numberOfLevels);
 
-		// a, ty, c according to schem of Hayes, 10.14 pg 363
+		// a, ty, c according to scheme of Hayes, 10.14 pg 363
 
-		double a = 0, ty = 0;
-		for (long i = 1; i <= numberOfData; i++) {
-			long index = levels -> classIndex[i];
-			factorLevelSizes[index] ++;
-			factorLevelMeans[index] += data[i];
-			a += data[i] * data[i];
-			ty += data[i];
+		double a = 0.0, ty = 0.0;
+		for (long i = 1; i <= numberOfData; i ++) {
+			long index = levels -> classIndex [i];
+			factorLevelSizes [index] ++;
+			factorLevelMeans [index] += data [i];
+			a += data [i] * data [i];
+			ty += data [i];
 		}
 
-		double c = 0;
+		double c = 0.0;
 		for (long j = 1; j <= numberOfLevels; j++) {
 			if (factorLevelSizes[j] < 2) {
-				SimpleString ss = (SimpleString) levels -> classes -> item[j];
+				SimpleString ss = (SimpleString) levels -> classes->at [j];
 				Melder_throw (U"Level \"", ss -> string, U"\" has less then two members.");
 			}
 			c += factorLevelMeans[j] * factorLevelMeans[j] / factorLevelSizes[j]; // order of these two is important!
@@ -3592,48 +3626,48 @@ Table Table_getOneWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		autoTable anova = Table_createWithColumnNames (3, U"Source SS Df MS F P");
 		long col_s = 1, col_ss = 2, col_df = 3, col_ms = 4, col_f = 5, col_p = 6;
 		long row_b = 1, row_w = 2, row_t = 3;
-		Table_setStringValue (anova.peek(), row_b, col_s, U"Between");
-		Table_setStringValue (anova.peek(), row_w, col_s, U"Within");
-		Table_setStringValue (anova.peek(), row_t, col_s, U"Total");
+		Table_setStringValue (anova.get(), row_b, col_s, U"Between");
+		Table_setStringValue (anova.get(), row_w, col_s, U"Within");
+		Table_setStringValue (anova.get(), row_t, col_s, U"Total");
 
-		Table_setNumericValue (anova.peek(), row_b, col_ss, ss_b);
-		Table_setNumericValue (anova.peek(), row_b, col_df, dof_b);
+		Table_setNumericValue (anova.get(), row_b, col_ss, ss_b);
+		Table_setNumericValue (anova.get(), row_b, col_df, dof_b);
 		double ms_b = ss_b / dof_b;
-		Table_setNumericValue (anova.peek(), row_b, col_ms, ms_b);
+		Table_setNumericValue (anova.get(), row_b, col_ms, ms_b);
 
-		Table_setNumericValue (anova.peek(), row_w, col_ss, ss_w);
-		Table_setNumericValue (anova.peek(), row_w, col_df, dof_w);
+		Table_setNumericValue (anova.get(), row_w, col_ss, ss_w);
+		Table_setNumericValue (anova.get(), row_w, col_df, dof_w);
 		double ms_w = ss_w / dof_w;
-		Table_setNumericValue (anova.peek(), row_w, col_ms, ms_w);
+		Table_setNumericValue (anova.get(), row_w, col_ms, ms_w);
 		double fisherF = ms_b / ms_w;
 		double probability = NUMfisherQ (fisherF, dof_b, dof_w);
 
-		Table_setNumericValue (anova.peek(), row_b, col_f, fisherF);
-		Table_setNumericValue (anova.peek(), row_b, col_p, probability);
+		Table_setNumericValue (anova.get(), row_b, col_f, fisherF);
+		Table_setNumericValue (anova.get(), row_b, col_p, probability);
 
-		Table_setNumericValue (anova.peek(), row_t, col_ss, ss_t);
-		Table_setNumericValue (anova.peek(), row_t, col_df, dof_w + dof_b);
+		Table_setNumericValue (anova.get(), row_t, col_ss, ss_t);
+		Table_setNumericValue (anova.get(), row_t, col_df, dof_w + dof_b);
 
 		autoTable ameans = Table_createWithColumnNames (numberOfLevels, U"Group Mean Cases");
-		for (long irow = 1; irow <= numberOfLevels; irow++) {
-			SimpleString name = (SimpleString) levels -> classes -> item[irow];
-			Table_setStringValue (ameans.peek(), irow, 1, name -> string);
-			Table_setNumericValue (ameans.peek(), irow, 2, factorLevelMeans[irow]);
-			Table_setNumericValue (ameans.peek(), irow, 3, factorLevelSizes[irow]);
+		for (long irow = 1; irow <= numberOfLevels; irow ++) {
+			SimpleString name = (SimpleString) levels -> classes->at [irow];
+			Table_setStringValue (ameans.get(), irow, 1, name -> string);
+			Table_setNumericValue (ameans.get(), irow, 2, factorLevelMeans [irow]);
+			Table_setNumericValue (ameans.get(), irow, 3, factorLevelSizes [irow]);
 		}
-		long columns [1+1] = { 0, 2 };   // sort by column 2
-		Table_sortRows_Assert (ameans.peek(), columns, 1);
-		_Table_postHocTukeyHSD (ameans.peek(), ms_w, dof_w, meansDiff, meansDiffProbabilities);
+		long columns [1+1] { 0, 2 };   // sort by column 2
+		Table_sortRows_Assert (ameans.get(), columns, 1);
+		_Table_postHocTukeyHSD (ameans.get(), ms_w, dof_w, meansDiff, meansDiffProbabilities);
 		if (means) {
-			*means = ameans.transfer();
+			*means = ameans.move();
 		}
-		return anova.transfer();
+		return anova;
 	} catch (MelderError) {
 		Melder_throw (me, U": no one-way anova performed.");
 	}
 }
 
-Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColumnA, long factorColumnB, Table *means, Table *levelSizes) {
+autoTable Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColumnA, long factorColumnB, autoTable *means, autoTable *levelSizes) {
 	try {
 		if (column < 1 || column > my numberOfColumns) {
 			Melder_throw (U"Invalid column number.");
@@ -3647,17 +3681,17 @@ Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		char32 *label_A = my columnHeaders[factorColumnA].label;
 		char32 *label_B = my columnHeaders[factorColumnB].label;
 
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		Table_numericize_Assert (me, column);
 		autoNUMvector<double> data (1, numberOfData);
 		autoStringsIndex levelsA = Table_to_StringsIndex_column (me, factorColumnA);
 		autoStringsIndex levelsB = Table_to_StringsIndex_column (me, factorColumnB);
 		// copy data from Table
-		for (long irow = 1; irow <= numberOfData; irow++) {
-			data[irow] = ((TableRow) my rows -> item [irow]) -> cells [column] .number;
+		for (long irow = 1; irow <= numberOfData; irow ++) {
+			data [irow] = my rows.at [irow] -> cells [column]. number;
 		}
-		long numberOfLevelsA = levelsA -> classes -> size;
-		long numberOfLevelsB = levelsB -> classes -> size;
+		long numberOfLevelsA = levelsA -> classes->size;
+		long numberOfLevelsB = levelsB -> classes->size;
 		if (numberOfLevelsA < 2) {
 			Melder_throw (U"There must be at least two levels in \"", label_A, U"\".");
 		}
@@ -3692,25 +3726,25 @@ Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		// extra column for ystar[i.], extra row for ystar[.j]
 		autoNUMmatrix<double> factorLevelMeans (1, numberOfLevelsA + 1, 1, numberOfLevelsB + 1); // weighted mean + mean
 
-		for (long k = 1; k <= numberOfData; k++) {
-			long indexA = levelsA -> classIndex[k];
-			long indexB = levelsB -> classIndex[k];
-			factorLevelSizes[indexA][indexB] ++;
-			factorLevelMeans[indexA][indexB] += data[k];
+		for (long k = 1; k <= numberOfData; k ++) {
+			long indexA = levelsA -> classIndex [k];
+			long indexB = levelsB -> classIndex [k];
+			factorLevelSizes [indexA] [indexB] ++;
+			factorLevelMeans [indexA] [indexB] += data [k];
 		}
 
 		// check for unfilled cells and calculate cell means
 
 		double nh = 0;
-		for (long i = 1; i <= numberOfLevelsA; i++) {
-			for (long j = 1; j <= numberOfLevelsB; j++) {
-				if (factorLevelSizes[i][j] < 1) {
-					SimpleString li = (SimpleString) levelsA -> classes -> item[i];
-					SimpleString lj = (SimpleString) levelsA -> classes -> item[j];
+		for (long i = 1; i <= numberOfLevelsA; i ++) {
+			for (long j = 1; j <= numberOfLevelsB; j ++) {
+				if (factorLevelSizes [i] [j] < 1) {
+					SimpleString li = (SimpleString) levelsA -> classes->at [i];
+					SimpleString lj = (SimpleString) levelsA -> classes->at [j];
 					Melder_throw (U"Level ", li, U" of ", lj, U" has no data.");
 				}
-				factorLevelMeans[i][j] /= factorLevelSizes[i][j];
-				nh += 1.0 / factorLevelSizes[i][j];
+				factorLevelMeans [i] [j] /= factorLevelSizes [i] [j];
+				nh += 1.0 / factorLevelSizes [i] [j];
 			}
 		}
 		nh = numberOfLevelsA * numberOfLevelsB / nh;
@@ -3718,24 +3752,24 @@ Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		// row marginals (ystar[i.])
 
 		double mean = 0; // ystar[..]
-		for (long i = 1; i <= numberOfLevelsA; i++) {
-			for (long j = 1; j <= numberOfLevelsB; j++) {
-				factorLevelMeans[i][numberOfLevelsB + 1] += factorLevelMeans[i][j];
+		for (long i = 1; i <= numberOfLevelsA; i ++) {
+			for (long j = 1; j <= numberOfLevelsB; j ++) {
+				factorLevelMeans [i] [numberOfLevelsB + 1] += factorLevelMeans [i] [j];
 				mean += factorLevelMeans[i][j];
-				factorLevelSizes[i][numberOfLevelsB + 1] += factorLevelSizes[i][j];
+				factorLevelSizes [i] [numberOfLevelsB + 1] += factorLevelSizes [i] [j];
 			}
 			factorLevelMeans[i][numberOfLevelsB + 1] /= numberOfLevelsB;
 		}
 		mean /= numberOfLevelsA * numberOfLevelsB;
-		factorLevelMeans[numberOfLevelsA + 1][numberOfLevelsB + 1] = mean;
-		factorLevelSizes[numberOfLevelsA + 1][numberOfLevelsB + 1] = numberOfData;
+		factorLevelMeans [numberOfLevelsA + 1] [numberOfLevelsB + 1] = mean;
+		factorLevelSizes [numberOfLevelsA + 1] [numberOfLevelsB + 1] = numberOfData;
 
 		// column marginals (ystar[.j])
 
-		for (long j = 1; j <= numberOfLevelsB; j++) {
-			for (long i = 1; i <= numberOfLevelsA; i++) {
-				factorLevelMeans[numberOfLevelsA + 1][j] += factorLevelMeans[i][j];
-				factorLevelSizes[numberOfLevelsA + 1][j] += factorLevelSizes[i][j];
+		for (long j = 1; j <= numberOfLevelsB; j ++) {
+			for (long i = 1; i <= numberOfLevelsA; i ++) {
+				factorLevelMeans [numberOfLevelsA + 1] [j] += factorLevelMeans [i] [j];
+				factorLevelSizes [numberOfLevelsA + 1] [j] += factorLevelSizes [i] [j];
 			}
 			factorLevelMeans[numberOfLevelsA + 1][j] /= numberOfLevelsA;
 		}
@@ -3743,29 +3777,29 @@ Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		// the sums of squares
 
 		double ss_T = 0;
-		for (long k = 1; k <= numberOfData; k++) {
+		for (long k = 1; k <= numberOfData; k ++) {
 			double dif = data[k] - mean;
 			ss_T += dif * dif;
 		}
 
 		double ss_A = 0;
-		for (long i = 1; i <= numberOfLevelsA; i++) {
-			double dif = factorLevelMeans[i][numberOfLevelsB + 1] - mean;
+		for (long i = 1; i <= numberOfLevelsA; i ++) {
+			double dif = factorLevelMeans [i] [numberOfLevelsB + 1] - mean;
 			ss_A += dif * dif;
 		}
 		ss_A *= nh * numberOfLevelsB;
 
 		double ss_B = 0;
-		for (long j = 1; j <= numberOfLevelsB; j++) {
-			double dif = factorLevelMeans[numberOfLevelsA + 1][j] - mean;
+		for (long j = 1; j <= numberOfLevelsB; j ++) {
+			double dif = factorLevelMeans [numberOfLevelsA + 1] [j] - mean;
 			ss_B += dif * dif;
 		}
 		ss_B *= nh * numberOfLevelsA;
 
 		double ss_AB = 0;
-		for (long i = 1; i <= numberOfLevelsA; i++) {
-			for (long j = 1; j <= numberOfLevelsB; j++) {
-				double dif = factorLevelMeans[i][j] - factorLevelMeans[i][numberOfLevelsB + 1] - factorLevelMeans[numberOfLevelsA + 1][j] + mean;
+		for (long i = 1; i <= numberOfLevelsA; i ++) {
+			for (long j = 1; j <= numberOfLevelsB; j ++) {
+				double dif = factorLevelMeans [i] [j] - factorLevelMeans [i] [numberOfLevelsB + 1] - factorLevelMeans [numberOfLevelsA + 1] [j] + mean;
 				ss_AB += dif * dif;
 			}
 		}
@@ -3776,118 +3810,118 @@ Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long factorColu
 		// are there any replications? if not then the error term is the AB interaction.
 
 		bool replications = true;
-		if (factorLevelSizes[numberOfLevelsA + 1][1] == numberOfLevelsA) {
+		if (factorLevelSizes [numberOfLevelsA + 1] [1] == numberOfLevelsA) {
 			replications = false;
 		}
 
 		// Construct the means Table (numberOfLevelsA+1)x(numberOfLevelsB + 1 + 1)
 
 		autoTable ameans = Table_createWithoutColumnNames (numberOfLevelsA + 1, numberOfLevelsB + 1 + 1);
-		for (long k = 2; k <= numberOfLevelsB + 1; k++) {
-			SimpleString name = (SimpleString) levelsB -> classes -> item[k - 1];
-			Table_setColumnLabel (ameans.peek(), k, name -> string);
+		for (long k = 2; k <= numberOfLevelsB + 1; k ++) {
+			SimpleString name = (SimpleString) levelsB -> classes->at [k - 1];
+			Table_setColumnLabel (ameans.get(), k, name -> string);
 		}
-		Table_setColumnLabel (ameans.peek(), numberOfLevelsB + 1 + 1, U"Mean");
+		Table_setColumnLabel (ameans.get(), numberOfLevelsB + 1 + 1, U"Mean");
 		for (long j = 1; j <= numberOfLevelsA; j++) {
-			SimpleString name = (SimpleString) levelsA -> classes -> item[j];
-			Table_setStringValue (ameans.peek(), j, 1, name -> string);
+			SimpleString name = (SimpleString) levelsA -> classes->at [j];
+			Table_setStringValue (ameans.get(), j, 1, name -> string);
 		}
-		Table_setStringValue (ameans.peek(), numberOfLevelsA + 1, 1, U"Mean");
+		Table_setStringValue (ameans.get(), numberOfLevelsA + 1, 1, U"Mean");
 
-		for (long i = 1; i <= numberOfLevelsA + 1; i++) {
-			for (long j = 1; j <= numberOfLevelsB + 1; j++) {
-				Table_setNumericValue (ameans.peek(), i, j + 1, factorLevelMeans[i][j]);
+		for (long i = 1; i <= numberOfLevelsA + 1; i ++) {
+			for (long j = 1; j <= numberOfLevelsB + 1; j ++) {
+				Table_setNumericValue (ameans.get(), i, j + 1, factorLevelMeans [i] [j]);
 			}
 		}
 
 		if (levelSizes) {
-			autoTable asizes = (Table) Data_copy (ameans.peek());
-			Table_setColumnLabel (asizes.peek(), numberOfLevelsB + 1 + 1, U"Total");
-			Table_setStringValue (asizes.peek(), numberOfLevelsA + 1, 1, U"Total");
-			for (long i = 1; i <= numberOfLevelsA + 1; i++) {
-				for (long j = 1; j <= numberOfLevelsB + 1; j++) {
-					Table_setNumericValue (asizes.peek(), i, j + 1, factorLevelSizes[i][j]);
+			autoTable asizes = Data_copy (ameans.get());
+			Table_setColumnLabel (asizes.get(), numberOfLevelsB + 1 + 1, U"Total");
+			Table_setStringValue (asizes.get(), numberOfLevelsA + 1, 1, U"Total");
+			for (long i = 1; i <= numberOfLevelsA + 1; i ++) {
+				for (long j = 1; j <= numberOfLevelsB + 1; j ++) {
+					Table_setNumericValue (asizes.get(), i, j + 1, factorLevelSizes [i] [j]);
 				}
 			}
-			*levelSizes = asizes.transfer();
+			*levelSizes = asizes.move();
 		}
 
 		autoTable anova = Table_createWithColumnNames (replications ? 5 : 4, U"Source SS Df MS F P");
 		long col_s = 1, col_ss = 2, col_df = 3, col_ms = 4, col_f = 5, col_p = 6;
 		long row_A = 1, row_B = 2, row_AB = 3, row_E = replications ? 4 : 3, row_t = replications ? 5 : 4;
-		Table_setStringValue (anova.peek(), row_A, col_s, label_A);
-		Table_setStringValue (anova.peek(), row_B, col_s, label_B);
-		Table_setStringValue (anova.peek(), row_AB, col_s, Melder_cat (label_A, U" x ", label_B));
+		Table_setStringValue (anova.get(), row_A, col_s, label_A);
+		Table_setStringValue (anova.get(), row_B, col_s, label_B);
+		Table_setStringValue (anova.get(), row_AB, col_s, Melder_cat (label_A, U" x ", label_B));
 		if (replications) {
-			Table_setStringValue (anova.peek(), row_E, col_s, U"Error");
+			Table_setStringValue (anova.get(), row_E, col_s, U"Error");
 		}
-		Table_setStringValue (anova.peek(), row_t, col_s, U"Total");
+		Table_setStringValue (anova.get(), row_t, col_s, U"Total");
 
 		double dof_A = numberOfLevelsA - 1, ms_A = ss_A / dof_A;
-		Table_setNumericValue (anova.peek(), row_A, col_ss, ss_A);
-		Table_setNumericValue (anova.peek(), row_A, col_df, dof_A);
-		Table_setNumericValue (anova.peek(), row_A, col_ms, ms_A);
+		Table_setNumericValue (anova.get(), row_A, col_ss, ss_A);
+		Table_setNumericValue (anova.get(), row_A, col_df, dof_A);
+		Table_setNumericValue (anova.get(), row_A, col_ms, ms_A);
 
 		double dof_B = numberOfLevelsB - 1, ms_B = ss_B / dof_B;
-		Table_setNumericValue (anova.peek(), row_B, col_ss, ss_B);
-		Table_setNumericValue (anova.peek(), row_B, col_df, dof_B);
-		Table_setNumericValue (anova.peek(), row_B, col_ms, ms_B);
+		Table_setNumericValue (anova.get(), row_B, col_ss, ss_B);
+		Table_setNumericValue (anova.get(), row_B, col_df, dof_B);
+		Table_setNumericValue (anova.get(), row_B, col_ms, ms_B);
 
 		double dof_AB = dof_A * dof_B , ms_AB, dof_E, ms_E;
 		if (replications) {
 			ms_AB = ss_AB / dof_AB;
 			dof_E = numberOfData - dof_A - dof_B - dof_AB - 1;
 			ms_E = ss_E / dof_E;
-			Table_setNumericValue (anova.peek(), row_AB, col_ss, ss_AB);
-			Table_setNumericValue (anova.peek(), row_AB, col_df, dof_AB);
-			Table_setNumericValue (anova.peek(), row_AB, col_ms, ms_AB);
+			Table_setNumericValue (anova.get(), row_AB, col_ss, ss_AB);
+			Table_setNumericValue (anova.get(), row_AB, col_df, dof_AB);
+			Table_setNumericValue (anova.get(), row_AB, col_ms, ms_AB);
 		} else {
 			ss_E = ss_AB;
 			dof_E = numberOfData - dof_A - dof_B - 1;
 			ms_E = ss_AB / dof_E;
 		}
-		Table_setNumericValue (anova.peek(), row_E, col_ss, ss_E);
-		Table_setNumericValue (anova.peek(), row_E, col_df, dof_E);
-		Table_setNumericValue (anova.peek(), row_E, col_ms, ms_E);
-		Table_setNumericValue (anova.peek(), row_t, col_ss, ss_T);
-		Table_setNumericValue (anova.peek(), row_t, col_df, numberOfData - 1);
+		Table_setNumericValue (anova.get(), row_E, col_ss, ss_E);
+		Table_setNumericValue (anova.get(), row_E, col_df, dof_E);
+		Table_setNumericValue (anova.get(), row_E, col_ms, ms_E);
+		Table_setNumericValue (anova.get(), row_t, col_ss, ss_T);
+		Table_setNumericValue (anova.get(), row_t, col_df, numberOfData - 1);
 		// get f and p values wrt ms_E
 		double f_A = ms_A / ms_E;
 		double f_B = ms_B / ms_E;
 		double p_A = NUMfisherQ (f_A, dof_A, dof_E);
 		double p_B = NUMfisherQ (f_B, dof_B, dof_E);
-		Table_setNumericValue (anova.peek(), row_A, col_f, f_A);
-		Table_setNumericValue (anova.peek(), row_B, col_f, f_B);
-		Table_setNumericValue (anova.peek(), row_A, col_p, p_A);
-		Table_setNumericValue (anova.peek(), row_B, col_p, p_B);
+		Table_setNumericValue (anova.get(), row_A, col_f, f_A);
+		Table_setNumericValue (anova.get(), row_B, col_f, f_B);
+		Table_setNumericValue (anova.get(), row_A, col_p, p_A);
+		Table_setNumericValue (anova.get(), row_B, col_p, p_B);
 		if (replications) {
 			double f_AB = ms_AB / ms_E;
 			double p_AB = NUMfisherQ (f_AB, dof_AB, dof_E);
-			Table_setNumericValue (anova.peek(), row_AB, col_f, f_AB);
-			Table_setNumericValue (anova.peek(), row_AB, col_p, p_AB);
+			Table_setNumericValue (anova.get(), row_AB, col_f, f_AB);
+			Table_setNumericValue (anova.get(), row_AB, col_p, p_AB);
 		}
 		if (means) {
-			*means = ameans.transfer();
+			*means = ameans.move();
 		}
-		return anova.transfer();
+		return anova;
 	} catch (MelderError) {
 		Melder_throw (me, U": two-way anova not created.");
 	}
 }
 
-void Table_normalProbabilityPlot (Table me, Graphics g, long column, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, int garnish)
+void Table_normalProbabilityPlot (Table me, Graphics g, long column, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, bool garnish)
 {
 	try {
 		if (column < 1 || column > my numberOfColumns) return;
 		Table_numericize_Assert (me, column);
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		autoNUMvector<double> data (1, numberOfData);
-		for (long irow = 1; irow <= numberOfData; irow++) {
-			data[irow] = ((TableRow) my rows -> item [irow]) -> cells [column] . number;
+		for (long irow = 1; irow <= numberOfData; irow ++) {
+			data [irow] = my rows.at [irow] -> cells [column]. number;
 		}
 		double mean, var;
-		NUMvector_avevar (data.peek(), numberOfData, &mean, &var);
-		double xmin = 100, xmax = -xmin, ymin = 1e38, ymax = -ymin, stdev = sqrt (var / (numberOfData - 1));
+		NUMvector_avevar (data.peek(), numberOfData, & mean, & var);
+		double xmin = 100, xmax = -xmin, ymin = 1e308, ymax = -ymin, stdev = sqrt (var / (numberOfData - 1));
 		if (numberOfSigmas != 0) {
 			xmin = -numberOfSigmas; 
 			xmax =  numberOfSigmas;
@@ -3897,11 +3931,11 @@ void Table_normalProbabilityPlot (Table me, Graphics g, long column, long number
 		NUMsort_d (numberOfData, data.peek());
 		numberOfQuantiles = numberOfData < numberOfQuantiles ? numberOfData : numberOfQuantiles;
 		autoTableOfReal thee = TableOfReal_create (numberOfQuantiles, 2);
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"Normal distribution quantiles");
-		TableOfReal_setColumnLabel (thee.peek(), 2, my columnHeaders[column].label);
+		TableOfReal_setColumnLabel (thee.get(), 1, U"Normal distribution quantiles");
+		TableOfReal_setColumnLabel (thee.get(), 2, my columnHeaders[column].label);
 		double un = pow (0.5, 1.0 / numberOfQuantiles);
-		for (long irow = 1; irow <= numberOfQuantiles; irow++) {
-			double ui = irow == 1 ? 1 - un : (irow == numberOfQuantiles ? un : (irow - 0.3175) / (numberOfQuantiles + 0.365));
+		for (long irow = 1; irow <= numberOfQuantiles; irow ++) {
+			double ui = irow == 1 ? 1.0 - un : (irow == numberOfQuantiles ? un : (irow - 0.3175) / (numberOfQuantiles + 0.365));
 			double q = NUMquantile (numberOfData, data.peek(), ui);
 			double zq = - NUMinvGaussQ (ui);
 			thy data[irow][1] = zq; // along x
@@ -3914,7 +3948,7 @@ void Table_normalProbabilityPlot (Table me, Graphics g, long column, long number
 			}
 		}
 
-		TableOfReal_drawScatterPlot (thee.peek(), g, 1, 2, 1, numberOfQuantiles, xmin, xmax, ymin, ymax, labelSize, 0, label, garnish);
+		TableOfReal_drawScatterPlot (thee.get(), g, 1, 2, 1, numberOfQuantiles, xmin, xmax, ymin, ymax, labelSize, 0, label, garnish);
 
 		Graphics_setInner (g);
 		Graphics_setLineType (g, Graphics_DOTTED);
@@ -3927,33 +3961,37 @@ void Table_normalProbabilityPlot (Table me, Graphics g, long column, long number
 	}
 }
 
-void Table_quantileQuantilePlot_betweenLevels (Table me, Graphics g, long dataColumn, long factorColumn, const char32 *xlevel, const char32 *ylevel, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *plotLabel, int garnish) {
+void Table_quantileQuantilePlot_betweenLevels (Table me, Graphics g, long dataColumn, long factorColumn, const char32 *xlevel, const char32 *ylevel, long numberOfQuantiles,
+	double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *plotLabel, bool garnish)
+{
 	try {
 		if (dataColumn < 1 || dataColumn > my numberOfColumns || factorColumn < 1 || factorColumn > my numberOfColumns) return;
 		Table_numericize_Assert (me, dataColumn);
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		autoNUMvector<double> xdata (1, numberOfData);
 		autoNUMvector<double> ydata (1, numberOfData);
 		long xnumberOfData = 0, ynumberOfData = 0;
-		for (long irow = 1; irow <= numberOfData; irow++) {
-			char32 *label = ((TableRow) my rows -> item [irow]) -> cells [factorColumn] . string;
-			double val = ((TableRow) my rows -> item [irow]) -> cells [dataColumn] . number;
+		for (long irow = 1; irow <= numberOfData; irow ++) {
+			char32 *label = my rows.at [irow] -> cells [factorColumn]. string;
+			double val = my rows.at [irow] -> cells [dataColumn]. number;
 			if (Melder_equ (label, xlevel)) {
-				xdata[++xnumberOfData] = val;
+				xdata [++ xnumberOfData] = val;
 			} else if (Melder_equ (label, ylevel)) {
-				ydata[++ynumberOfData] = val;
+				ydata [++ ynumberOfData] = val;
 			}
 		}
 		if (xmin == xmax) {
-			NUMvector_extrema<double> (xdata.peek(), 1, xnumberOfData, &xmin, &xmax);
+			NUMvector_extrema<double> (xdata.peek(), 1, xnumberOfData, & xmin, & xmax);
 			if (xmin == xmax) {
-				xmin -= 1; xmax += 1;
+				xmin -= 1.0;
+				xmax += 1.0;
 			}
 		}
 		if (ymin == ymax) {
-			NUMvector_extrema<double> (ydata.peek(), 1, ynumberOfData, &ymin, &ymax);
+			NUMvector_extrema<double> (ydata.peek(), 1, ynumberOfData, & ymin, & ymax);
 			if (ymin == ymax) {
-				ymin -= 1; ymax += 1;
+				ymin -= 1.0;
+				ymax += 1.0;
 			}
 		}
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -3964,39 +4002,43 @@ void Table_quantileQuantilePlot_betweenLevels (Table me, Graphics g, long dataCo
 		if (garnish) {
 			Graphics_drawInnerBox (g);
 
-			Graphics_textBottom (g, 1, Melder_cat (my columnHeaders [dataColumn].label, U" (", xlevel, U")"));
-			Graphics_marksBottom (g, 2, 1, 1, 0);
+			Graphics_textBottom (g, true, Melder_cat (my columnHeaders [dataColumn].label, U" (", xlevel, U")"));
+			Graphics_marksBottom (g, 2, true, true, false);
 
-			Graphics_textLeft (g, 1, Melder_cat (my columnHeaders [dataColumn].label, U" (", ylevel, U")"));
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_textLeft (g, true, Melder_cat (my columnHeaders [dataColumn].label, U" (", ylevel, U")"));
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
 	}
 }
 
-void Table_quantileQuantilePlot (Table me, Graphics g, long xcolumn, long ycolumn, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *plotLabel, int garnish) {
+void Table_quantileQuantilePlot (Table me, Graphics g, long xcolumn, long ycolumn, long numberOfQuantiles,
+	double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *plotLabel, bool garnish)
+{
 	try {
 		if (xcolumn < 1 || xcolumn > my numberOfColumns || ycolumn < 1 || ycolumn > my numberOfColumns) return;
 		Table_numericize_Assert (me, xcolumn);
 		Table_numericize_Assert (me, ycolumn);
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		autoNUMvector<double> xdata (1, numberOfData);
 		autoNUMvector<double> ydata (1, numberOfData);
 		for (long irow = 1; irow <= numberOfData; irow++) {
-			xdata[irow] = ((TableRow) my rows -> item [irow]) -> cells [xcolumn] . number;
-			ydata[irow] = ((TableRow) my rows -> item [irow]) -> cells [ycolumn] . number;
+			xdata [irow] = my rows.at [irow] -> cells [xcolumn]. number;
+			ydata [irow] = my rows.at [irow] -> cells [ycolumn]. number;
 		}
 		if (xmin == xmax) {
 			NUMvector_extrema<double> (xdata.peek(), 1, numberOfData, &xmin, &xmax);
 			if (xmin == xmax) {
-				xmin -= 1; xmax += 1;
+				xmin -= 1.0;
+				xmax += 1.0;
 			}
 		}
 		if (ymin == ymax) {
 			NUMvector_extrema<double> (ydata.peek(), 1, numberOfData, &ymin, &ymax);
 			if (ymin == ymax) {
-				ymin -= 1; ymax += 1;
+				ymin -= 1.0;
+				ymax += 1.0;
 			}
 		}
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
@@ -4006,14 +4048,14 @@ void Table_quantileQuantilePlot (Table me, Graphics g, long xcolumn, long ycolum
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			if (my columnHeaders [xcolumn].label != NULL) {
-				Graphics_textBottom (g, 1, my columnHeaders [xcolumn].label);
+			if (my columnHeaders [xcolumn].label) {
+				Graphics_textBottom (g, true, my columnHeaders [xcolumn].label);
 			}
-			Graphics_marksBottom (g, 2, 1, 1, 0);
-			if (my columnHeaders [ycolumn].label != NULL) {
-				Graphics_textLeft (g, 1, my columnHeaders [ycolumn].label);
+			Graphics_marksBottom (g, 2, true, true, false);
+			if (my columnHeaders [ycolumn].label) {
+				Graphics_textLeft (g, true, my columnHeaders [ycolumn].label);
 			}
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
@@ -4024,24 +4066,24 @@ void Table_boxPlots (Table me, Graphics g, long dataColumn, long factorColumn, d
 	try {
 		if (dataColumn < 1 || dataColumn > my numberOfColumns || factorColumn < 1 || factorColumn > my numberOfColumns) return;
 		Table_numericize_Assert (me, dataColumn);
-		long numberOfData = my rows -> size;
+		long numberOfData = my rows.size;
 		autoStringsIndex si = Table_to_StringsIndex_column (me, factorColumn);
-		long numberOfLevels = si -> classes -> size;
+		long numberOfLevels = si -> classes->size;
 		if (ymin == ymax) {
 			ymax = Table_getMaximum (me, dataColumn);
 			ymin = Table_getMinimum (me, dataColumn);
 			if (ymax == ymin) {
-				ymax += 1; ymin -= 1;
+				ymax += 1.0; ymin -= 1.0;
 			}
 		}
-		Graphics_setWindow (g, 1 - 0.5, numberOfLevels + 0.5, ymin, ymax);
+		Graphics_setWindow (g, 1.0 - 0.5, numberOfLevels + 0.5, ymin, ymax);
 		Graphics_setInner (g);
 		autoNUMvector<double> data (1, numberOfData);
-		for (long ilevel = 1; ilevel <= numberOfLevels; ilevel++) {
+		for (long ilevel = 1; ilevel <= numberOfLevels; ilevel ++) {
 			long numberOfDataInLevel = 0;
-			for (long k = 1; k <= numberOfData; k++) {
-				if (si -> classIndex[k] == ilevel) {
-					data[++numberOfDataInLevel] = Table_getNumericValue_Assert (me, k, dataColumn);
+			for (long k = 1; k <= numberOfData; k ++) {
+				if (si -> classIndex [k] == ilevel) {
+					data [++ numberOfDataInLevel] = Table_getNumericValue_Assert (me, k, dataColumn);
 				}
 			}
 			Graphics_boxAndWhiskerPlot (g, data.peek(), numberOfDataInLevel, ilevel, 0.2, 0.35, ymin, ymax);
@@ -4049,11 +4091,11 @@ void Table_boxPlots (Table me, Graphics g, long dataColumn, long factorColumn, d
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			for (long ilevel = 1; ilevel <= numberOfLevels; ilevel++) {
-				SimpleString ss = (SimpleString) si -> classes -> item[ilevel];
-				Graphics_markBottom (g, ilevel, 0, 1, 0, ss -> string);
+			for (long ilevel = 1; ilevel <= numberOfLevels; ilevel ++) {
+				SimpleString ss = (SimpleString) si -> classes->at [ilevel];
+				Graphics_markBottom (g, ilevel, false, true, false, ss -> string);
 			}
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
@@ -4063,42 +4105,42 @@ void Table_boxPlots (Table me, Graphics g, long dataColumn, long factorColumn, d
 void Table_boxPlotsWhere (Table me, Graphics g, char32 *dataColumns_string, long factorColumn, double ymin, double ymax, int garnish, const char32 *formula, Interpreter interpreter) {
 	try {
 		long numberOfSelectedColumns;
-		autoNUMvector<long> dataColumns (Table_getColumnIndicesFromColumnLabelString (me, dataColumns_string,  &numberOfSelectedColumns), 1);
+		autoNUMvector<long> dataColumns (Table_getColumnIndicesFromColumnLabelString (me, dataColumns_string, & numberOfSelectedColumns), 1);
 		if (factorColumn < 1 || factorColumn > my numberOfColumns) {
 			return;
 		}
-		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE);
-		long numberOfData = my rows -> size;
+		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, true);
+		long numberOfData = my rows.size;
 		autoStringsIndex si = Table_to_StringsIndex_column (me, factorColumn);
-		long numberOfLevels = si -> classes -> size;
+		long numberOfLevels = si -> classes->size;
 		if (ymin == ymax) {
-			ymin = 1e38, ymax = -ymin;
-			for (long icol = 1; icol <= numberOfSelectedColumns; icol++) {
-				double ymaxi = Table_getMaximum (me, dataColumns[icol]);
-				double ymini = Table_getMinimum (me, dataColumns[icol]);
+			ymin = 1e308, ymax = - ymin;
+			for (long icol = 1; icol <= numberOfSelectedColumns; icol ++) {
+				double ymaxi = Table_getMaximum (me, dataColumns [icol]);
+				double ymini = Table_getMinimum (me, dataColumns [icol]);
 				ymax = ymaxi > ymax ? ymaxi : ymax;
 				ymin = ymini < ymin ? ymini : ymin;
 			}
 			if (ymax == ymin) {
-				ymax += 1; ymin -= 1;
+				ymax += 1.0; ymin -= 1.0;
 			}
 		}
-		Graphics_setWindow (g, 1 - 0.5, numberOfLevels + 0.5, ymin, ymax);
+		Graphics_setWindow (g, 1.0 - 0.5, numberOfLevels + 0.5, ymin, ymax);
 		Graphics_setInner (g);
-		double boxWidth = 4, spaceBetweenBoxesInGroup = 1, barWidth = boxWidth / 3;
-		double spaceBetweenGroupsdiv2 = 3.0 / 2; 
+		double boxWidth = 4.0, spaceBetweenBoxesInGroup = 1.0, barWidth = boxWidth / 3.0;
+		double spaceBetweenGroupsdiv2 = 3.0 / 2.0;
 		double widthUnit = 1.0 / (numberOfSelectedColumns * boxWidth + (numberOfSelectedColumns - 1) * spaceBetweenBoxesInGroup + spaceBetweenGroupsdiv2 + spaceBetweenGroupsdiv2);
 		autoNUMvector<double> data (1, numberOfData);
-		for (long ilevel = 1; ilevel <= numberOfLevels; ilevel++) {
+		for (long ilevel = 1; ilevel <= numberOfLevels; ilevel ++) {
 			double xlevel = ilevel;
-			for (long icol = 1; icol <= numberOfSelectedColumns; icol++) {
+			for (long icol = 1; icol <= numberOfSelectedColumns; icol ++) {
 				long numberOfDataInLevelColumn = 0;
-				for (long irow = 1; irow <= numberOfData; irow++) {
+				for (long irow = 1; irow <= numberOfData; irow ++) {
 					if (si -> classIndex[irow] == ilevel) {
 						struct Formula_Result result;
-						Formula_run (irow, dataColumns[icol], & result);
+						Formula_run (irow, dataColumns [icol], & result);
 						if (result.result.numericResult != 0.0) {
-							data[++numberOfDataInLevelColumn] = Table_getNumericValue_Assert (me, irow, dataColumns[icol]);
+							data [++ numberOfDataInLevelColumn] = Table_getNumericValue_Assert (me, irow, dataColumns [icol]);
 						}
 					}
 				}
@@ -4112,11 +4154,11 @@ void Table_boxPlotsWhere (Table me, Graphics g, char32 *dataColumns_string, long
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			for (long ilevel = 1; ilevel <= numberOfLevels; ilevel++) {
-				SimpleString ss = (SimpleString) si -> classes -> item[ilevel];
-				Graphics_markBottom (g, ilevel, 0, 1, 0, ss -> string);
+			for (long ilevel = 1; ilevel <= numberOfLevels; ilevel ++) {
+				SimpleString ss = (SimpleString) si -> classes->at [ilevel];
+				Graphics_markBottom (g, ilevel, false, true, false, ss -> string);
 			}
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
@@ -4126,24 +4168,24 @@ void Table_boxPlotsWhere (Table me, Graphics g, char32 *dataColumns_string, long
 void Table_distributionPlotWhere (Table me, Graphics g, long dataColumn, double minimum, double maximum, long nBins, double freqMin, double freqMax, int garnish, const char32 *formula, Interpreter interpreter) {
 	try {
 		if (dataColumn < 1 || dataColumn > my numberOfColumns) return;
-		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE);
+		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, true);
 		Table_numericize_Assert (me, dataColumn);
-		long n = my rows -> size, mrow = 0;
-		autoMatrix thee = Matrix_create (1, 1, 1, 1, 1, 0, n + 1, n, 1, 1);
-		for (long irow = 1; irow <= n; irow++) {
+		long n = my rows.size, mrow = 0;
+		autoMatrix thee = Matrix_create (1.0, 1.0, 1, 1.0, 1.0, 0.0, n + 1.0, n, 1.0, 1.0);
+		for (long irow = 1; irow <= n; irow ++) {
 			struct Formula_Result result;
 			Formula_run (irow, dataColumn, & result);
 			if (result.result.numericResult != 0.0) {
 				thy z[1][++mrow] = Table_getNumericValue_Assert (me, irow, dataColumn);
 			}
 		}
-		Matrix_drawDistribution (thee.peek(), g, 0, 1, 0.5, mrow+0.5, minimum, maximum, nBins, freqMin, freqMax, 0, garnish);
+		Matrix_drawDistribution (thee.get(), g, 0, 1, 0.5, mrow + 0.5, minimum, maximum, nBins, freqMin, freqMax, false, garnish);
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
 	}
 }
 
-static Strings itemizeColourString (const char32 *colourString) {
+static autoStrings itemizeColourString (const char32 *colourString) {
 	// remove all spaces within { } so each {1,2,3} can be itemized
 	long nmatches_sub = 0;
 	const char32 *searchRE = U"\\{\\s*([0-9.]+)\\s*,\\s*([0-9.]+)\\s*,\\s*([0-9.]+)\\s*\\}";
@@ -4151,7 +4193,7 @@ static Strings itemizeColourString (const char32 *colourString) {
 	autoMelderString colour;
 	MelderString_append (&colour, str_replace_regexp (colourString, compiledRE, U"{\\1,\\2,\\3}", 0, &nmatches_sub));
 	autoStrings thee = Strings_createAsTokens (colour.string);
-	return thee.transfer();
+	return thee;
 }
 
 static Graphics_Colour Strings_colourToValue  (Strings me, long index) {
@@ -4166,10 +4208,10 @@ static Graphics_Colour Strings_colourToValue  (Strings me, long index) {
 	if (first == U'{') {
 		colourValue.red = Melder_atof (++ p);
 		p = (char32 *) str32chr (p, U',');
-		if (p == NULL) return Graphics_GREY;
+		if (! p) return Graphics_GREY;
 		colourValue.green = Melder_atof (++ p);
 		p = (char32 *) str32chr (p, U',');
-		if (p == NULL) return Graphics_GREY;
+		if (! p) return Graphics_GREY;
 		colourValue.blue = Melder_atof (++ p);
 	} else {
 		*p = (char32) tolower ((int) *p);
@@ -4201,8 +4243,8 @@ static Graphics_Colour Strings_colourToValue  (Strings me, long index) {
 
 long Table_getNumberOfRowsWhere (Table me, const char32 *formula, Interpreter interpreter) {
 	long numberOfRows = 0;
-	Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE);
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
+	Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, true);
+	for (long irow = 1; irow <= my rows.size; irow ++) {
 		struct Formula_Result result;
 		Formula_run (irow, 1, & result);
 		if (result.result.numericResult != 0.0) {
@@ -4212,23 +4254,26 @@ long Table_getNumberOfRowsWhere (Table me, const char32 *formula, Interpreter in
 	return numberOfRows;
 }
 
-long *Table_findRowsMatchingCriterion (Table me, const char32 *formula, Interpreter interpreter, long *numberOfMatches) {
+long *Table_findRowsMatchingCriterion (Table me, const char32 *formula, Interpreter interpreter, long *p_numberOfMatches) {
 	try {
-		*numberOfMatches = Table_getNumberOfRowsWhere (me, formula, interpreter);
-		if (*numberOfMatches < 1) {
+		long numberOfMatches = Table_getNumberOfRowsWhere (me, formula, interpreter);
+		if (numberOfMatches < 1) {
 			Melder_throw (U"No rows selected.");
 		}
-		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE); // again?
-		autoNUMvector<long> selectedRows (1, *numberOfMatches);
+		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, true);   // again?
+		autoNUMvector<long> selectedRows (1, numberOfMatches);
 		long n = 0;
-		for (long irow =1; irow <= my rows -> size; irow++) {
+		for (long irow =1; irow <= my rows.size; irow ++) {
 			struct Formula_Result result;
 			Formula_run (irow, 1, & result);
 			if (result.result.numericResult != 0.0) {
 				selectedRows[++n] = irow;
 			}
 		}
-		Melder_assert (n == *numberOfMatches);
+		Melder_assert (n == numberOfMatches);
+		if (p_numberOfMatches) {
+			*p_numberOfMatches = numberOfMatches;
+		}
 		return selectedRows.transfer();
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot find matches.");
@@ -4245,7 +4290,7 @@ void Table_barPlotWhere (Table me, Graphics g, const char32 *columnLabels, doubl
 		
 		autoNUMvector<long> selectedRows (Table_findRowsMatchingCriterion (me, formula, interpreter, &numberOfRowMatches), 1);
 		if (ymax <= ymin) { // autoscaling
-			ymin = 1e38; ymax= - ymin;
+			ymin = 1e308; ymax= - ymin;
 			for (long icol = 1; icol <= numberOfColumns; icol++) {
 				double cmin, cmax;
 				Table_columnExtremesFromSelectedRows (me, columnIndex[icol], selectedRows.peek(), numberOfRowMatches, &cmin, &cmax);
@@ -4266,7 +4311,7 @@ void Table_barPlotWhere (Table me, Graphics g, const char32 *columnLabels, doubl
 		for (long icol = 1; icol <= groupSize; icol++) {
 			double xb = xoffsetFraction * bar_width + (icol - 1) * (1 + interbarFraction) * bar_width;
 			double x1 = xb;
-			Graphics_Colour color = Strings_colourToValue  (colour.peek(), icol);
+			Graphics_Colour color = Strings_colourToValue  (colour.get(), icol);
 			for (long irow = 1; irow <= numberOfRowMatches; irow++) {
 				double x2 = x1 + bar_width;
 				double y2 = Table_getNumericValue_Assert (me, selectedRows[irow], columnIndex[icol]);
@@ -4306,7 +4351,7 @@ void Table_barPlotWhere (Table me, Graphics g, const char32 *columnLabels, doubl
 				for (long irow = 1; irow <= numberOfGroups; irow++) {
 					const char32 *label = Table_getStringValue_Assert (me, selectedRows[irow], labelIndex);
 					if (label) {
-						//Graphics_markBottom (g, xb, 0, 0, 0, label);
+						//Graphics_markBottom (g, xb, false, false, false, label);
 						Graphics_text (g, xb, ymin - g -> vertTick, label); // was y
 					}
 					xb += dx;
@@ -4318,11 +4363,11 @@ void Table_barPlotWhere (Table me, Graphics g, const char32 *columnLabels, doubl
 		Graphics_unsetInner (g);
 		if (garnish) {
 			if (ymin * ymax < 0) {
-				Graphics_markLeft (g, 0, TRUE,TRUE, TRUE, NULL);
+				Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 			}
 
 			Graphics_drawInnerBox (g);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 		}
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
@@ -4334,10 +4379,10 @@ static int Graphics_getConnectingLine (Graphics g, const char32 *text1, double x
 	double width1 = Graphics_textWidth (g, text1), width2 = Graphics_textWidth (g, text2);
 	double h = Graphics_dyMMtoWC (g, 1.5 * Graphics_inqFontSize (g) * 25.4 / 72) / 1.5;
 	double xi[3], yi[3], xleft = x1 < x2 ? x1 : x2, xright = x2 > x1 ? x2 : x1;
-	int numberOfIntersections = NUMgetIntersectionsWithRectangle (x1, y1, x2, y2, xleft - width1 / 2, y1 - h/2, xleft +width1 / 2, y1 + h/2, xi, yi);
+	int numberOfIntersections = NUMgetIntersectionsWithRectangle (x1, y1, x2, y2, xleft - width1 / 2.0, y1 - h/2, xleft + width1 / 2.0, y1 + h/2, xi, yi);
 	if (numberOfIntersections == 1) {
 		*x3 = xi[1]; *y3 = yi[1];
-		numberOfIntersections = NUMgetIntersectionsWithRectangle (x1, y1, x2, y2, xright - width2 / 2, y2 - h/2, xright + width2 / 2, y2 + h/2, xi, yi);
+		numberOfIntersections = NUMgetIntersectionsWithRectangle (x1, y1, x2, y2, xright - width2 / 2.0, y2 - h/2, xright + width2 / 2.0, y2 + h/2, xi, yi);
 		if (numberOfIntersections == 1) {
 			*x4 = xi[1]; *y4 = yi[1];
 			drawLine = 1;
@@ -4349,7 +4394,7 @@ static int Graphics_getConnectingLine (Graphics g, const char32 *text1, double x
 // take the xcolumn as labels if non-numeric column else as numbers and arrange distances accordingly.
 void Table_lineGraphWhere (Table me, Graphics g, long xcolumn, double xmin, double xmax, long ycolumn, double ymin, double ymax, const char32 *symbol, double angle, int garnish, const char32 *formula, Interpreter interpreter) {
 	try {
-		if (ycolumn < 1 || ycolumn > my rows -> size) return;
+		if (ycolumn < 1 || ycolumn > my numberOfColumns) return;
 		long numberOfSelectedRows = 0;
 		autoNUMvector<long> selectedRows (Table_findRowsMatchingCriterion (me, formula, interpreter, &numberOfSelectedRows), 1);	
 		if (ymax <= ymin) { // autoscaling
@@ -4368,7 +4413,7 @@ void Table_lineGraphWhere (Table me, Graphics g, long xcolumn, double xmin, doub
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 		double x1, y1;
-		double lineSpacing = Graphics_dyMMtoWC (g, 1.5 * Graphics_inqFontSize (g) * 25.4 / 72);
+		double lineSpacing = Graphics_dyMMtoWC (g, 1.5 * Graphics_inqFontSize (g) * 25.4 / 72.0);
 		//double symbolHeight = lineSpacing / 1.5;
 		for (long i = 1; i <= numberOfSelectedRows; i++) {
 			double y2 = Table_getNumericValue_Assert (me, selectedRows[i], ycolumn);
@@ -4415,7 +4460,7 @@ void Table_lineGraphWhere (Table me, Graphics g, long xcolumn, double xmin, doub
 				if (x2 >= xmin && x2 <= xmax) {
 					const char32 *label = Table_getStringValue_Assert (me, selectedRows[i], xcolumn);
 					if (label) {
-						//Graphics_markBottom (g, xb, 0, 0, 0, label);
+						//Graphics_markBottom (g, xb, false, false, false, label);
 						Graphics_text (g, x2 + dx, ymin - g -> vertTick, label); // was y
 					}
 				}
@@ -4427,9 +4472,9 @@ void Table_lineGraphWhere (Table me, Graphics g, long xcolumn, double xmin, doub
 
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksLeft (g, 2, 1, 1, 0);
+			Graphics_marksLeft (g, 2, true, true, false);
 			if (xIsNumeric) {
-				Graphics_marksBottom (g, 2, 1, 1, 0);
+				Graphics_marksBottom (g, 2, true, true, false);
 			}
 		}
 	} catch (MelderError) {
@@ -4439,7 +4484,7 @@ void Table_lineGraphWhere (Table me, Graphics g, long xcolumn, double xmin, doub
 
 void Table_lagPlotWhere (Table me, Graphics g, long column, long lag, double xmin, double xmax, const char32 *symbol, int labelSize, int garnish, const char32 *formula, Interpreter interpreter) {
 	try {
-		if (column < 1 || column > my rows -> size) {
+		if (column < 1 || column > my rows.size) {
 			return;
 		}
 		long numberOfSelectedRows = 0;
@@ -4457,11 +4502,11 @@ void Table_lagPlotWhere (Table me, Graphics g, long column, long lag, double xmi
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-			Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
+			Graphics_marksBottom (g, 2, true, true, false);
+			Graphics_marksLeft (g, 2, true, true, false);
 			if (my columnHeaders [column]. label) {
-				Graphics_textLeft (g, TRUE, my columnHeaders[column].label);
-				Graphics_textBottom (g, TRUE, Melder_cat (my columnHeaders[column].label, U" (lag = ", lag, U")"));
+				Graphics_textLeft (g, true, my columnHeaders[column].label);
+				Graphics_textBottom (g, true, Melder_cat (my columnHeaders[column].label, U" (lag = ", lag, U")"));
 			}
 		}
 	} catch (MelderError) {
@@ -4469,33 +4514,33 @@ void Table_lagPlotWhere (Table me, Graphics g, long column, long lag, double xmi
 	}
 }
 
-Table Table_extractRowsWhere (Table me, const char32 *formula, Interpreter interpreter) {
+autoTable Table_extractRowsWhere (Table me, const char32 *formula, Interpreter interpreter) {
 	try {
-		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE);
+		Formula_compile (interpreter, me, formula, kFormula_EXPRESSION_TYPE_UNKNOWN, true);
 		autoTable thee = Table_create (0, my numberOfColumns);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			autostring32 newLabel = Melder_dup (my columnHeaders [icol]. label);
 			thy columnHeaders [icol]. label = newLabel.transfer();
 		}
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			struct Formula_Result result;
 			Formula_run (irow, 1, & result);
 			if (result.result.numericResult != 0.0) {
-				TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+				TableRow row = my rows.at [irow];
 				autoTableRow newRow = Data_copy (row);
-				Collection_addItem (thy rows, newRow.transfer());
+				thy rows. addItem_move (newRow.move());
 			}
 		}
-		if (thy rows -> size == 0) {
+		if (thy rows.size == 0) {
 			Melder_warning (U"No row matches criterion.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no Table could be extracted.");
 	}
 }
 
-static TableOfReal Table_to_TableOfRealWhere (Table me, const char32 *columnLabels, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
+static autoTableOfReal Table_to_TableOfReal_where (Table me, const char32 *columnLabels, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
 	try {
 		long numberOfColumns, numberOfSelectedRows = 0;
 		long factorColIndex = Table_findColumnIndexFromColumnLabel (me, factorColumn);
@@ -4509,92 +4554,94 @@ static TableOfReal Table_to_TableOfRealWhere (Table me, const char32 *columnLabe
 			}
 			if (factorColIndex > 0) { // if no factorColumn given labels may be empty
 				const char32 *label = Table_getStringValue_Assert (me, selectedRows[i], factorColIndex);
-				TableOfReal_setRowLabel (thee.peek(), i, label);
+				TableOfReal_setRowLabel (thee.get(), i, label);
 			}
 		}
 		for (long icol = 1; icol <= numberOfColumns; icol++) {
-			TableOfReal_setColumnLabel (thee.peek(), icol, my columnHeaders [columnIndex[icol]].label);
+			TableOfReal_setColumnLabel (thee.get(), icol, my columnHeaders [columnIndex[icol]].label);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"No TableOfReal created from Table.");
 	}
 }
 
-static SSCPs Table_to_SSCPsWhere (Table me, const char32 *columnLabels, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
+static autoSSCPList Table_to_SSCPList_where (Table me, const char32 *columnLabels, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
 	try {
-		autoTableOfReal thee = Table_to_TableOfRealWhere (me, columnLabels, factorColumn, formula, interpreter);
-		autoSSCPs him = TableOfReal_to_SSCPs_byLabel (thee.peek());
-		return him.transfer();
+		autoTableOfReal thee = Table_to_TableOfReal_where (me, columnLabels, factorColumn, formula, interpreter);
+		autoSSCPList him = TableOfReal_to_SSCPList_byLabel (thee.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"No Discriminant created from Table.");
 	}
 }
 
-static long SSCPs_findIndexOfGroupLabel (SSCPs me, const char32 *label) {
-	for (long i = 1; i <= my size; i++) {
-		if (Melder_cmp (Thing_getName ((SSCP) my item[i]), label) == 0) {
+static long SSCPList_findIndexOfGroupLabel (SSCPList me, const char32 *label) {
+	for (long i = 1; i <= my size; i ++) {
+		if (Melder_equ (Thing_getName (my at [i]), label)) {
 			return i;
 		}
 	}
 	return 0;
 }
 
-static Table Table_and_SSCPs_extractMahalanobisWhere (Table me, SSCPs thee, double numberOfSigmas, int which_Melder_NUMBER, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
+static autoTable Table_and_SSCPList_extractMahalanobisWhere (Table me, SSCPList thee, double numberOfSigmas, int which_Melder_NUMBER, const char32 *factorColumn, const char32 *formula, Interpreter interpreter) {
 	try {
-		SSCP sscp = (SSCP) thy item[1];
+		long numberOfGroups = thy size;
+		Melder_assert (numberOfGroups > 0);
+
+		SSCP sscp = thy at [1];
 		long numberOfColumns = sscp -> numberOfColumns, numberOfSelectedRows = 0;
 		long factorColIndex = Table_findColumnIndexFromColumnLabel (me, factorColumn); // can be absent
 		autoNUMvector<long> columnIndex (1, numberOfColumns);
 		autoNUMvector<double> vector (1, numberOfColumns);
-		autoNUMvector<long> selectedRows (Table_findRowsMatchingCriterion (me, formula, interpreter, &numberOfSelectedRows), 1);
+		autoNUMvector<long> selectedRows (Table_findRowsMatchingCriterion (me, formula, interpreter, & numberOfSelectedRows), 1);
 		for (long icol = 1; icol <= numberOfColumns; icol++) {
 			columnIndex[icol] = Table_getColumnIndexFromColumnLabel (me, sscp -> columnLabels[icol]); // throw if not present
 		}
-		long numberOfGroups = thy size;
 		autoTable him = Table_create (0, my numberOfColumns);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			autostring32 newLabel = Melder_dup (my columnHeaders[icol].label);
 			his columnHeaders[icol].label = newLabel.transfer();
 		}
-		autoOrdered covs = Ordered_create ();
-		for (long igroup = 1; igroup <= numberOfGroups; igroup++) {
-			autoCovariance cov = SSCP_to_Covariance ((SSCP) thy item[igroup], 1); 
-			SSCP_expandLowerCholesky (cov.peek());
-			Collection_addItem (covs.peek(), cov.transfer());
+		OrderedOf<structCovariance> covs;
+		for (long igroup = 1; igroup <= numberOfGroups; igroup ++) {
+			autoCovariance cov = SSCP_to_Covariance (thy at [igroup], 1);
+			SSCP_expandLowerCholesky (cov.get());
+			covs. addItem_move (cov.move());
 		}
-		for (long i = 1; i <= numberOfSelectedRows; i++) {
-			long irow = selectedRows[i];
+		for (long i = 1; i <= numberOfSelectedRows; i ++) {
+			long irow = selectedRows [i];
 			long igroup = 1; // if factorColIndex == 0 we don't need labels
 			if (factorColIndex > 0) {
 				const char32 *label = Table_getStringValue_Assert (me, irow, factorColIndex);
-				igroup = SSCPs_findIndexOfGroupLabel (thee, label);
+				igroup = SSCPList_findIndexOfGroupLabel (thee, label);
 				if (igroup == 0) {
 					Melder_throw (U"The label \"", label, U"\" in row ", irow, U" is not valid in this context.");
 				}
 			}
-			Covariance covi = (Covariance) covs -> item[igroup];
-			for (long icol = 1; icol <= numberOfColumns; icol++) {
-				vector[icol] = Table_getNumericValue_Assert (me, irow, columnIndex[icol]);
+			Covariance covi = covs.at [igroup];
+			for (long icol = 1; icol <= numberOfColumns; icol ++) {
+				vector [icol] = Table_getNumericValue_Assert (me, irow, columnIndex [icol]);
 			}
 			double dm2 = NUMmahalanobisDistance_chi (covi -> lowerCholesky, vector.peek(), covi -> centroid, numberOfColumns, numberOfColumns);
 			if (Melder_numberMatchesCriterion (sqrt (dm2), which_Melder_NUMBER, numberOfSigmas)) {
-				TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+				TableRow row = my rows.at [irow];
 				autoTableRow newRow = Data_copy (row);
-				Collection_addItem (his rows, newRow.transfer());
+				his rows. addItem_move (newRow.move());
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"Table (mahalanobis) not extracted.");
 	}
 }
 
-Table Table_extractMahalanobisWhere(Table me, const char32 *columnLabels, const char32 *factorColumn, double numberOfSigmas, int which_Melder_NUMBER, const char32 *formula, Interpreter interpreter) {
+autoTable Table_extractMahalanobisWhere(Table me, const char32 *columnLabels, const char32 *factorColumn, double numberOfSigmas, int which_Melder_NUMBER, const char32 *formula, Interpreter interpreter) {
 	try {
-		autoSSCPs thee = Table_to_SSCPsWhere (me, columnLabels, factorColumn, formula, interpreter);
-		autoTable him = Table_and_SSCPs_extractMahalanobisWhere (me, thee.peek(), numberOfSigmas, which_Melder_NUMBER, factorColumn, formula, interpreter);
-		return him.transfer();
+		autoSSCPList thee = Table_to_SSCPList_where (me, columnLabels, factorColumn, formula, interpreter);
+		autoTable him = Table_and_SSCPList_extractMahalanobisWhere (me, thee.get(), numberOfSigmas, which_Melder_NUMBER, factorColumn, formula, interpreter);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U"Table not extracted.");
 	}
@@ -4610,17 +4657,17 @@ void Table_drawEllipsesWhere (Table me, Graphics g, long xcolumn, long ycolumn,
 			double y = Table_getNumericValue_Assert (me, selectedRows[i], ycolumn);
 			const char32 *label = Table_getStringValue_Assert (me, selectedRows[i], factorColumn);
 			thy data[i][1] = x; thy data[i][2] = y;
-			TableOfReal_setRowLabel (thee.peek(), i, label);
+			TableOfReal_setRowLabel (thee.get(), i, label);
 		}
-		autoSSCPs him = TableOfReal_to_SSCPs_byLabel (thee.peek());
-		int confidence = 0;
+		autoSSCPList him = TableOfReal_to_SSCPList_byLabel (thee.get());
+		bool confidence = false;
 		if (ymax == ymin) { // autoscaling
-			SSCPs_getEllipsesBoundingBoxCoordinates (him.peek(), numberOfSigmas, confidence, &xmin, &xmax, &ymin, &ymax);
+			SSCPList_getEllipsesBoundingBoxCoordinates (him.get(), numberOfSigmas, confidence, & xmin, & xmax, & ymin, & ymax);
 		}
 		Graphics_setWindow (g, xmin, xmax, ymin, ymax);
 		Graphics_setInner (g);
-		for (long i = 1; i <= his size; i++) {
-			SSCP sscpi = (SSCP) his item[i];
+		for (long i = 1; i <= his size; i ++) {
+			SSCP sscpi = his at [i];
 			double scalei = SSCP_getEllipseScalefactor (sscpi, numberOfSigmas, confidence);
 			if (scalei > 0) {
 				SSCP_drawTwoDimensionalEllipse_inside  (sscpi, g, scalei, Thing_getName (sscpi), labelSize);
@@ -4630,13 +4677,13 @@ void Table_drawEllipsesWhere (Table me, Graphics g, long xcolumn, long ycolumn,
 
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-			Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
+			Graphics_marksBottom (g, 2, true, true, false);
+			Graphics_marksLeft (g, 2, true, true, false);
 			if (my columnHeaders [xcolumn]. label) {
-				Graphics_textBottom (g, TRUE, my columnHeaders[xcolumn].label);
+				Graphics_textBottom (g, true, my columnHeaders[xcolumn].label);
 			}
 			if (my columnHeaders [ycolumn]. label) {
-				Graphics_textLeft (g, TRUE, my columnHeaders[ycolumn].label);
+				Graphics_textLeft (g, true, my columnHeaders[ycolumn].label);
 			}
 		}
 	} catch (MelderError) {
@@ -4644,22 +4691,22 @@ void Table_drawEllipsesWhere (Table me, Graphics g, long xcolumn, long ycolumn,
 	}
 }
 
-Table Table_extractColumnRanges (Table me, char32 *ranges) {
+autoTable Table_extractColumnRanges (Table me, char32 *ranges) {
 	try {
-		long numberOfSelectedColumns, numberOfRows = my rows -> size;
-		autoNUMvector<long> columnRanges (NUMstring_getElementsOfRanges (ranges, my numberOfColumns, & numberOfSelectedColumns, NULL, U"columnn number", true), 1);
+		long numberOfSelectedColumns, numberOfRows = my rows.size;
+		autoNUMvector<long> columnRanges (NUMstring_getElementsOfRanges (ranges, my numberOfColumns, & numberOfSelectedColumns, nullptr, U"columnn number", true), 1);
 		autoTable thee = Table_createWithoutColumnNames (numberOfRows, numberOfSelectedColumns); 
-		for (long icol = 1; icol <= numberOfSelectedColumns; icol++) {
-			Table_setColumnLabel (thee.peek(), icol, my v_getColStr (columnRanges[icol]));
+		for (long icol = 1; icol <= numberOfSelectedColumns; icol ++) {
+			Table_setColumnLabel (thee.get(), icol, my v_getColStr (columnRanges [icol]));
 		}
-		for (long irow = 1; irow <= numberOfRows; irow++) {
-			//TableRow row = (TableRow)  thy rows -> item[irow];
-			for (long icol = 1; icol <= numberOfSelectedColumns; icol++) {
-				const char32 *value = Table_getStringValue_Assert (me, irow, columnRanges[icol]);
-				Table_setStringValue (thee.peek(), irow, icol, value);
+		for (long irow = 1; irow <= numberOfRows; irow ++) {
+			//TableRow row = thy rows -> items [irow];
+			for (long icol = 1; icol <= numberOfSelectedColumns; icol ++) {
+				const char32 *value = Table_getStringValue_Assert (me, irow, columnRanges [icol]);
+				Table_setStringValue (thee.get(), irow, icol, value);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": no column range extracted.");
 	}
diff --git a/dwtools/Table_extensions.h b/dwtools/Table_extensions.h
index dfa846b..4d483ff 100644
--- a/dwtools/Table_extensions.h
+++ b/dwtools/Table_extensions.h
@@ -2,21 +2,20 @@
 #define _Table_extensions_h_
 /* Table_extensions.h
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,39 +32,49 @@
 #include "Table.h"
 
 long Table_getNumberOfRowsWhere (Table me, const char32 *formula, Interpreter interpreter);
+
 long *Table_findRowsMatchingCriterion (Table me, const char32 *formula, Interpreter interpreter, long *numberOfMatches);
-Table Table_createFromPetersonBarneyData ();
-Table Table_createFromPolsVanNieropData ();
-Table Table_createFromWeeninkData ();
-Table Table_createFromEspositoData ();
-Table Table_createFromGanongData ();
+
+autoTable Table_createFromPetersonBarneyData ();
+
+autoTable Table_createFromPolsVanNieropData ();
+
+autoTable Table_createFromWeeninkData ();
+
+autoTable Table_createFromEspositoData ();
+
+autoTable Table_createFromGanongData ();
 
 double Table_getMedianAbsoluteDeviation (Table me, long columnNumber);
 
 // Two one-way tests for normal and non-normally distributed data, respectively.
-Table Table_getOneWayAnalysisOfVarianceF (Table me, long column, long groupColumn, Table *means, Table *meansDiff, Table *meansDiffProbabilities);
-Table Table_getOneWayKruskalWallis (Table me, long column, long groupColumn, double *degreesOfFreedom, double *kruskalWallis, double *probability);
+autoTable Table_getOneWayAnalysisOfVarianceF (Table me, long column, long groupColumn, autoTable *means, autoTable *meansDiff, autoTable *meansDiffProbabilities);
+
+autoTable Table_getOneWayKruskalWallis (Table me, long column, long factorColumn, double *p_prob, double *p_kruskalWallis, double *p_df);
 
-Table Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long groupColumnA, long groupColumnB, Table *means, Table *factorLevelSizes);
+autoTable Table_getTwoWayAnalysisOfVarianceF (Table me, long column, long groupColumnA, long groupColumnB, autoTable *means, autoTable *factorLevelSizes);
 
 void Table_verticalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long ycolumn, double xmin, double xmax, 
 	double ymin, double ymax, long yci_min, long yci_max, double bar_mm, int garnish, const char32 *formula, Interpreter interpreter);
+
 void Table_horizontalErrorBarsPlotWhere (Table me, Graphics g, long xcolumn, long ycolumn, double xmin, double xmax, 
 	double ymin, double ymax, long xci_min, long xci_max, double bar_mm, int garnish, const char32 *formula, Interpreter interpreter);
 
+void Table_normalProbabilityPlot (Table me, Graphics g, long column, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, bool garnish);
 
-void Table_normalProbabilityPlot (Table me, Graphics g, long column, long numberOfQuantiles, double numberOfSigmas, int labelSize, const char32 *label, int garnish);
-
-void Table_quantileQuantilePlot (Table me, Graphics g, long xcolumn, long ycolumn, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *label, int garnish);
+void Table_quantileQuantilePlot (Table me, Graphics g, long xcolumn, long ycolumn, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *label, bool garnish);
 
-void Table_quantileQuantilePlot_betweenLevels (Table me, Graphics g, long dataColumn, long factorColumn, const char32 *xlevel, const char32 *ylevel, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *label, int garnish);
+void Table_quantileQuantilePlot_betweenLevels (Table me, Graphics g, long dataColumn, long factorColumn, const char32 *xlevel, const char32 *ylevel, long numberOfQuantiles, double xmin, double xmax, double ymin, double ymax, int labelSize, const char32 *label, bool garnish);
 
 void Table_boxPlots (Table me, Graphics g, long dataColumn, long factorColumn, double ymin, double ymax, int garnish);
+
 void Table_boxPlotsWhere (Table me, Graphics g, char32 *dataColumns_string, long factorColumn, double ymin, double ymax, int garnish, const char32 *formula, Interpreter interpreter);
 
-Table Table_extractRowsWhere (Table me, const char32 *formula, Interpreter interpreter);
-Table Table_extractColumnRanges (Table me, char32 *ranges);
-Table Table_extractMahalanobisWhere (Table me, const char32 *columnLabels, const char32 *factorColumn, double numberOfSigmas, int which_Melder_NUMBER, const char32 *formula, Interpreter interpreter);
+autoTable Table_extractRowsWhere (Table me, const char32 *formula, Interpreter interpreter);
+
+autoTable Table_extractColumnRanges (Table me, char32 *ranges);
+
+autoTable Table_extractMahalanobisWhere (Table me, const char32 *columnLabels, const char32 *factorColumn, double numberOfSigmas, int which_Melder_NUMBER, const char32 *formula, Interpreter interpreter);
 
 void Table_distributionPlotWhere (Table me, Graphics g, long dataColumn, double minimum, double maximum, long nBins, double freqMin, double freqMax, int garnish, const char32 *formula, Interpreter interpreter);
 
@@ -78,6 +87,7 @@ void Table_lagPlotWhere (Table me, Graphics g, long column, long lag, double xmi
 void Table_drawEllipsesWhere (Table me, Graphics g, long xcolumn, long ycolumn, long labelcolumn, double xmin, double xmax, double ymin, double ymax, double numberOfSigmas, long labelSize, int garnish, const char32 *formula, Interpreter interpreter);
 
 void Table_printAsAnovaTable (Table me);
+
 void Table_printAsMeansTable (Table me);
 
 #endif // _Table_extensions_h_
diff --git a/dwtools/TextGrid_extensions.cpp b/dwtools/TextGrid_extensions.cpp
index a131171..c11317c 100644
--- a/dwtools/TextGrid_extensions.cpp
+++ b/dwtools/TextGrid_extensions.cpp
@@ -1,20 +1,19 @@
 /* TextGrid_extensions.cpp
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -146,26 +145,26 @@ static int isTimitWord (const char label[]) {
 	return 1;
 }
 
-Any TextGrid_TIMITLabelFileRecognizer (int nread, const char *header, MelderFile file) {
-	long it[5]; int length, phnFile = 0; char hkruis[3] = "h#", label1[512], label2[512];
-	if (nread < 12 ||
-	        sscanf (header, "%ld%ld%s%n\n", &it[1], &it[2], label1, &length) != 3 ||
-	        it[1] < 0 || it[2] <= it[1] ||
-	        sscanf (&header[length], "%ld%ld%s\n", &it[3], &it[4], label2) != 3 ||
-	        // 20120512 djmw removed the extra "it[3] < it[2]" check, because otherwise train/dr7/mdlm0/si1864.wrd cannot be read
-	        it[4] <= it[3]) {
-		return 0;
+autoDaata TextGrid_TIMITLabelFileRecognizer (int nread, const char *header, MelderFile file) {
+	char hkruis[3] = "h#", label1[512], label2[512];
+	int length, phnFile = 0;
+	long it[5]; 
+	if (nread < 12 || sscanf (header, "%ld%ld%s%n\n", &it[1], &it[2], label1, &length) != 3 ||
+		it[1] < 0 || it[2] <= it[1] || sscanf (&header[length], "%ld%ld%s\n", &it[3], &it[4], label2) != 3 || it[4] <= it[3]) {
+		// 20120512 djmw removed the extra "it[3] < it[2]" check, because otherwise train/dr7/mdlm0/si1864.wrd cannot be read
+		return autoDaata ();
 	}
 	if (! strcmp (label1, hkruis)) {
 		if (isTimitPhoneticLabel (label2)) {
 			phnFile = 1;
 		} else if (! isTimitWord (label2)) {
-			return 0;
+			return autoDaata ();
 		}
 	} else if (! isTimitWord (label1) || ! isTimitWord (label2)) {
-		return 0;
+		return autoDaata ();
 	}
-	return TextGrid_readFromTIMITLabelFile (file, phnFile);
+	autoTextGrid thee = TextGrid_readFromTIMITLabelFile (file, phnFile);
+	return thee.move();
 }
 
 static void IntervalTier_add (IntervalTier me, double xmin, double xmax, const char32 *label) {
@@ -175,7 +174,7 @@ static void IntervalTier_add (IntervalTier me, double xmin, double xmax, const c
 	}
 
 	autoTextInterval newti = TextInterval_create (xmin, xmax, label);
-	TextInterval interval = (TextInterval) my intervals -> item[i];
+	TextInterval interval = my intervals.at [i];
 	double xmaxi = interval -> xmax;
 	if (xmax > xmaxi) {
 		Melder_throw (U"Don't know what to do");    // Don't know what to do
@@ -187,19 +186,19 @@ static void IntervalTier_add (IntervalTier me, double xmin, double xmax, const c
 		}
 		// split interval
 		interval -> xmin = xmax;
-		Collection_addItem (my intervals, newti.transfer());
+		my intervals. addItem_move (newti.move());
 		return;
 	}
 	interval -> xmax = xmin;
-	Collection_addItem (my intervals, newti.transfer());
+	my intervals. addItem_move (newti.move());
 	// extra interval when xmax's are not the same
 	if (xmax < xmaxi) {
 		autoTextInterval newti2 = TextInterval_create (xmax, xmaxi, interval -> text);
-		Collection_addItem (my intervals, newti2.transfer());
+		my intervals. addItem_move (newti2.move());
 	}
 }
 
-TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile) {
+autoTextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile) {
 	try {
 		double dt = 1.0 / 16000; /* 1 / (TIMIT samplingFrequency) */
 		double xmax = dt;
@@ -208,8 +207,8 @@ TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile) {
 		// Ending time will only be known after all labels have been read.
 		// We start with a sufficiently long duration (one hour) and correct this later.
 
-		autoTextGrid me = TextGrid_create (0, 3600, U"wrd", 0);
-		IntervalTier timit = (IntervalTier) my tiers -> item[1];
+		autoTextGrid me = TextGrid_create (0.0, 3600.0, U"wrd", 0);
+		IntervalTier timit = (IntervalTier) my tiers->at [1];
 		long linesRead = 0;
 		char line[200], label[200];
 		while (fgets (line, 199, f)) {
@@ -223,18 +222,18 @@ TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile) {
 			}
 			xmax = it2 * dt;
 			double xmin = it1 * dt;
-			long ni = timit -> intervals -> size - 1;
+			long ni = timit -> intervals.size - 1;
 			if (ni < 1) {
 				ni = 1;
 				// Some files do not start with a first line "0 <number2> h#".
 				// Instead they start with "<number1> <number2> h#", where number1 > 0.
 				// We override number1 with 0. */
 
-				if (xmin > 0 && phnFile) {
-					xmin = 0;
+				if (xmin > 0.0 && phnFile) {
+					xmin = 0.0;
 				}
 			}
-			TextInterval interval = (TextInterval) timit -> intervals -> item[ni];
+			TextInterval interval = timit -> intervals.at [ni];
 			if (xmin < interval -> xmax && linesRead > 1) {
 				xmin = interval -> xmax;
 				Melder_warning (U"File \"", MelderFile_messageName (file), U"\": Start time set to previous end "
@@ -248,34 +247,34 @@ TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile) {
 		// Now correct the end times, based on last read interval.
 		// (end time was set to large value!)
 
-		if (timit -> intervals -> size < 2) {
+		if (timit -> intervals.size < 2) {
 			Melder_throw (U"Empty TextGrid");
 		}
-		Collection_removeItem (timit -> intervals, timit -> intervals -> size);
-		TextInterval interval = (TextInterval) timit -> intervals -> item[timit -> intervals -> size];
+		timit -> intervals. removeItem (timit -> intervals.size);
+		TextInterval interval = timit -> intervals.at [timit -> intervals.size];
 		timit -> xmax = interval -> xmax;
 		my xmax = xmax;
 		if (phnFile) { // Create tier 2 with IPA symbols
 			autoIntervalTier ipa = Data_copy (timit);
-			Thing_setName (ipa.peek(), U"ipa");
+			Thing_setName (ipa.get(), U"ipa");
 			// First change the data in ipa
-			for (long i = 1; i <= ipa -> intervals -> size; i++) {
-				interval = (TextInterval) timit -> intervals -> item[i];
+			for (long i = 1; i <= ipa -> intervals.size; i ++) {
+				interval = timit -> intervals.at [i];
 
-				TextInterval_setText ( (TextInterval) ipa -> intervals -> item[i],
-				                       Melder_peek8to32 (timitLabelToIpaLabel (Melder_peek32to8 (interval -> text))));
+				TextInterval_setText (ipa -> intervals.at [i],
+					Melder_peek8to32 (timitLabelToIpaLabel (Melder_peek32to8 (interval -> text))));
 			}
-			Collection_addItem (my tiers, ipa.transfer()); // Then: add to collection
+			my tiers -> addItem_move (ipa.move()); // Then: add to collection
 			Thing_setName (timit, U"phn");  // rename wrd
 		}
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not read from file ", file, U".");
 	}
 }
 
-TextGrid TextGrids_merge (TextGrid me, TextGrid thee) {
+autoTextGrid TextGrids_merge (TextGrid me, TextGrid thee) {
 	try {
 		int at_end = 0, at_start = 1;
 
@@ -289,23 +288,23 @@ TextGrid TextGrids_merge (TextGrid me, TextGrid thee) {
 		double extra_time_start = fabs (g2 -> xmin - g1 -> xmin);
 
 		if (g1 -> xmin > g2 -> xmin) {
-			TextGrid_extendTime (g1.peek(), extra_time_start, at_start);
+			TextGrid_extendTime (g1.get(), extra_time_start, at_start);
 		}
 		if (g1 -> xmax < g2 -> xmax) {
-			TextGrid_extendTime (g1.peek(), extra_time_end, at_end);
+			TextGrid_extendTime (g1.get(), extra_time_end, at_end);
 		}
 		if (g2 -> xmin > g1 -> xmin) {
-			TextGrid_extendTime (g2.peek(), extra_time_start, at_start);
+			TextGrid_extendTime (g2.get(), extra_time_start, at_start);
 		}
 		if (g2 -> xmax < g1 -> xmax) {
-			TextGrid_extendTime (g2.peek(), extra_time_end, at_end);
+			TextGrid_extendTime (g2.get(), extra_time_end, at_end);
 		}
 
-		for (long i = 1; i <= g2 -> tiers -> size; i++) {
-			autoFunction tier = Data_copy ( (Function) g2 -> tiers -> item [i]);
-			Collection_addItem (g1 -> tiers, tier.transfer());
+		for (long i = 1; i <= g2 -> tiers->size; i ++) {
+			autoFunction tier = Data_copy (g2 -> tiers->at [i]);
+			g1 -> tiers -> addItem_move (tier.move());
 		}
-		return g1.transfer();
+		return g1;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not merged.");
 	}
@@ -314,11 +313,12 @@ TextGrid TextGrids_merge (TextGrid me, TextGrid thee) {
 void IntervalTier_setLaterEndTime (IntervalTier me, double xmax, const char32 *mark) {
 	try {
 		if (xmax <= my xmax) return; // nothing to be done
-		TextInterval ti = (TextInterval) my intervals -> item[my intervals -> size];
+		Melder_assert (my intervals.size > 0);
+		TextInterval ti = my intervals.at [my intervals.size];
 		Melder_assert (xmax > ti -> xmax);
-		if (mark != NULL) {
+		if (mark) {
 			autoTextInterval interval = TextInterval_create (ti -> xmax, xmax, mark);
-			Collection_addItem (my intervals, interval.transfer());
+			my intervals. addItem_move (interval.move());
 		} else {
 			// extend last interval
 			ti -> xmax = xmax;
@@ -331,12 +331,15 @@ void IntervalTier_setLaterEndTime (IntervalTier me, double xmax, const char32 *m
 
 void IntervalTier_setEarlierStartTime (IntervalTier me, double xmin, const char32 *mark) {
 	try {
-		if (xmin >= my xmin) return; // nothing to be done
-		TextInterval ti = (TextInterval) my intervals -> item[1];
+		if (xmin >= my xmin) {
+			return;
+		}
+		Melder_assert (my intervals.size > 0);
+		TextInterval ti = my intervals.at [1];
 		Melder_assert (xmin < ti -> xmin);
-		if (mark != NULL) {
+		if (mark) {
 			autoTextInterval interval = TextInterval_create (xmin, ti -> xmin, mark);
-			Collection_addItem (my intervals, interval.transfer());
+			my intervals. addItem_move (interval.move());
 		} else {
 			// extend first interval
 			ti -> xmin = xmin;
@@ -349,21 +352,21 @@ void IntervalTier_setEarlierStartTime (IntervalTier me, double xmin, const char3
 
 void IntervalTier_moveBoundary (IntervalTier me, long iint, bool atStart, double newTime) {
     try {
-        if (iint < 1 or iint > my intervals -> size) {
+        if (iint < 1 or iint > my intervals.size) {
             Melder_throw (U"Interval out of range.");
         }
-        if ((iint == 1 && atStart) or ((iint == my intervals -> size && not atStart))) {
+        if ((iint == 1 && atStart) or (iint == my intervals.size && ! atStart)) {
             Melder_throw (U"Cannot change the domain.");
         }
-        TextInterval interval = (TextInterval) my intervals -> item[iint];
+        TextInterval interval = my intervals.at [iint];
         if (atStart) {
-            TextInterval pinterval = (TextInterval) my intervals -> item[iint-1];
+            TextInterval pinterval = my intervals.at [iint-1];
             if (newTime <= pinterval -> xmin) {
                 Melder_throw (U"Cannot move past the start of previous interval.");
             }
             pinterval -> xmax = interval -> xmin = newTime;
         } else {
-            TextInterval ninterval = (TextInterval) my intervals -> item[iint+1];
+            TextInterval ninterval = my intervals.at [iint+1];
             if (newTime >= ninterval -> xmax) {
                 Melder_throw (U"Cannot move past the end of next interval.");
             }
@@ -377,10 +380,12 @@ void IntervalTier_moveBoundary (IntervalTier me, long iint, bool atStart, double
 
 void TextTier_setLaterEndTime (TextTier me, double xmax, const char32 *mark) {
 	try {
-		if (xmax <= my xmax) return; // nothing to be done
-		if (mark != NULL) {
+		if (xmax <= my xmax) {
+			return;
+		}
+		if (mark) {
 			autoTextPoint textpoint = TextPoint_create (my xmax, mark);
-			Collection_addItem (my points, textpoint.transfer());
+			my points. addItem_move (textpoint.move());
 		}
 		my xmax = xmax;
 	} catch (MelderError) {
@@ -390,10 +395,12 @@ void TextTier_setLaterEndTime (TextTier me, double xmax, const char32 *mark) {
 
 void TextTier_setEarlierStartTime (TextTier me, double xmin, const char32 *mark) {
 	try {
-		if (xmin >= my xmin) return; // nothing to be done
-		if (mark != NULL) {
+		if (xmin >= my xmin) {
+			return;
+		}
+		if (mark) {
 			autoTextPoint textpoint = TextPoint_create (my xmin, mark);
-			Collection_addItem (my points, textpoint.transfer());
+			my points. addItem_move (textpoint.move());
 		}
 		my xmin = xmin;
 	} catch (MelderError) {
@@ -403,12 +410,13 @@ void TextTier_setEarlierStartTime (TextTier me, double xmin, const char32 *mark)
 
 void TextGrid_setEarlierStartTime (TextGrid me, double xmin, const char32 *imark, const char32 *pmark) {
 	try {
-		if (xmin >= my xmin) return;
-		for (long tierNumber = 1 ; tierNumber <= my tiers -> size; tierNumber++) {
-			Function tier = (Function) my tiers -> item [tierNumber];
+		if (xmin >= my xmin) {
+			return;
+		}
+		for (long tierNumber = 1 ; tierNumber <= my tiers->size; tierNumber ++) {
+			Function tier = my tiers->at [tierNumber];
 			if (tier -> classInfo == classIntervalTier) {
 				IntervalTier_setEarlierStartTime ((IntervalTier) tier, xmin, imark);
-
 			} else {
 				TextTier_setEarlierStartTime ((TextTier) tier, xmin, pmark);
 			}
@@ -421,12 +429,13 @@ void TextGrid_setEarlierStartTime (TextGrid me, double xmin, const char32 *imark
 
 void TextGrid_setLaterEndTime (TextGrid me, double xmax, const char32 *imark, const char32 *pmark) {
 	try {
-		if (xmax <= my xmax) return;
-		for (long tierNumber =1 ; tierNumber <= my tiers -> size; tierNumber++) {
-			Function tier = (Function) my tiers -> item [tierNumber];
+		if (xmax <= my xmax) {
+			return;
+		}
+		for (long tierNumber =1 ; tierNumber <= my tiers->size; tierNumber ++) {
+			Function tier = my tiers->at [tierNumber];
 			if (tier -> classInfo == classIntervalTier) {
 				IntervalTier_setLaterEndTime ((IntervalTier) tier, xmax, imark);
-
 			} else {
 				TextTier_setLaterEndTime ((TextTier) tier, xmax, pmark);
 			}
@@ -438,7 +447,7 @@ void TextGrid_setLaterEndTime (TextGrid me, double xmax, const char32 *imark, co
 }
 
 void TextGrid_extendTime (TextGrid me, double extra_time, int position) {
-	autoTextGrid thee = 0;
+	autoTextGrid thee;
 	try {
 		double xmax = my xmax, xmin = my xmin;
 		int at_end = position == 0;
@@ -447,7 +456,7 @@ void TextGrid_extendTime (TextGrid me, double extra_time, int position) {
 			return;
 		}
 		extra_time = fabs (extra_time); // Just in case...
-		thee.reset (Data_copy (me));
+		thee = Data_copy (me);
 
 		if (at_end) {
 			xmax += extra_time;
@@ -455,8 +464,8 @@ void TextGrid_extendTime (TextGrid me, double extra_time, int position) {
 			xmin -= extra_time;
 		}
 
-		for (long i = 1; i <= my tiers -> size; i++) {
-			Function anyTier = (Function) my tiers -> item [i];
+		for (long i = 1; i <= my tiers->size; i ++) {
+			Function anyTier = my tiers->at [i];
 			double tmin = anyTier -> xmin, tmax = anyTier -> xmax;
 
 			if (at_end) {
@@ -471,7 +480,7 @@ void TextGrid_extendTime (TextGrid me, double extra_time, int position) {
 			if (anyTier -> classInfo == classIntervalTier) {
 				IntervalTier tier = (IntervalTier) anyTier;
 				autoTextInterval interval = TextInterval_create (tmin, tmax, U"");
-				Collection_addItem (tier -> intervals, interval.transfer());
+				tier -> intervals. addItem_move (interval.move());
 			}
 		}
 		my xmin = xmin;
@@ -483,40 +492,44 @@ void TextGrid_extendTime (TextGrid me, double extra_time, int position) {
 
 void TextGrid_setTierName (TextGrid me, long itier, const char32 *newName) {
 	try {
-		long ntiers = my tiers -> size;
-
-		if (itier < 1 || itier > ntiers) Melder_throw (U"Tier number (", itier, U") should not be "
-			        U"larger than the number of tiers (", ntiers, U").");
-		Thing_setName ( (Thing) my tiers -> item [itier], newName);
+		long ntiers = my tiers->size;
+		if (itier < 1 || itier > ntiers) {
+			Melder_throw (U"Tier number (", itier, U") should not be larger than the number of tiers (", ntiers, U").");
+		}
+		Thing_setName (my tiers->at [itier], newName);
 	} catch (MelderError) {
 		Melder_throw (me, U": tier name not set.");
 	}
 }
 
 static void IntervalTier_cutInterval (IntervalTier me, long index, int extend_option) {
-	long size_pre = my intervals -> size;
+	long size_pre = my intervals.size;
 
-	/* There always must be at least one interval */
+	// There always must be at least one interval
 	if (size_pre == 1 || index > size_pre || index < 1) {
 		return;
 	}
 
-	TextInterval ti = (TextInterval) my intervals -> item[index];
+	TextInterval ti = my intervals.at [index];
 	double xmin = ti -> xmin;
 	double xmax = ti -> xmax;
-	Collection_removeItem (my intervals, index);
-	if (index == 1) { // Change xmin of the new first interval.
-		ti = (TextInterval) my intervals -> item[index];
+	my intervals. removeItem (index);
+	if (index == 1) { 
+		// Change xmin of the new first interval.
+		ti = my intervals.at [index];
 		ti -> xmin = xmin;
-	} else if (index == size_pre) { // Change xmax of the new last interval.
-		ti = (TextInterval) my intervals -> item[my intervals -> size];
+	} else if (index == size_pre) { 
+		// Change xmax of the new last interval.
+		ti = my intervals.at [my intervals.size];
 		ti -> xmax = xmax;
 	} else {
-		if (extend_option == 0) { // extend earlier interval to the right
-			ti = (TextInterval) my intervals -> item[index - 1];
+		if (extend_option == 0) { 
+			// extend earlier interval to the right
+			ti = my intervals.at [index - 1];
 			ti -> xmax = xmax;
-		} else { // extend next interval to the left
-			ti = (TextInterval) my intervals -> item[index];
+		} else {
+			// extend next interval to the left
+			ti = my intervals.at [index];
 			ti -> xmin = xmin;
 		}
 	}
@@ -524,113 +537,113 @@ static void IntervalTier_cutInterval (IntervalTier me, long index, int extend_op
 
 void IntervalTier_removeBoundariesBetweenIdenticallyLabeledIntervals (IntervalTier me, const char32 *label) {
     try {
-        for (long iint = my intervals -> size; iint > 1; iint--) {
-            TextInterval ti = (TextInterval) my intervals -> item[iint];
-            if (Melder_equ (ti -> text, label)) {
-                TextInterval tim1 = (TextInterval) my intervals -> item[iint - 1];
-                if (Melder_equ (tim1 -> text, label)) {
-                    Melder_free (tim1 -> text);
-                    IntervalTier_removeLeftBoundary (me, iint);
-                }
-            }
-        }
-    } catch (MelderError) {
-        Melder_throw (me, U": boundaries not removed.");
-    }
+		for (long iinterval = my intervals.size; iinterval > 1; iinterval --) {
+			TextInterval thisInterval = my intervals.at [iinterval];
+			if (Melder_equ (thisInterval -> text, label)) {
+				TextInterval previousInterval = my intervals.at [iinterval - 1];
+				if (Melder_equ (previousInterval -> text, label)) {
+					Melder_free (previousInterval -> text);
+					IntervalTier_removeLeftBoundary (me, iinterval);
+				}
+			}
+		}
+	} catch (MelderError) {
+		Melder_throw (me, U": boundaries not removed.");
+	}
 }
 
 void IntervalTier_cutIntervals_minimumDuration (IntervalTier me, const char32 *label, double minimumDuration) {
-	long i = 1;
-	while (i <= my intervals -> size) {
-		TextInterval ti = (TextInterval) my intervals -> item[i];
-		if ( (label == 0 || (ti -> text != 0 && str32equ (ti -> text, label))) &&
-		        ti -> xmax - ti -> xmin < minimumDuration) {
-			IntervalTier_cutInterval (me, i, 0);
+	long iinterval = 1;
+	while (iinterval <= my intervals.size) {
+		TextInterval interval = my intervals.at [iinterval];
+		if ((! label || (interval -> text && str32equ (interval -> text, label))) &&
+			interval -> xmax - interval -> xmin < minimumDuration)
+		{
+			IntervalTier_cutInterval (me, iinterval, 0);
 		} else {
-			i++;
+			iinterval ++;
 		}
 	}
 }
 
 void IntervalTier_cutIntervalsOnLabelMatch (IntervalTier me, const char32 *label) {
-	long i = 1;
-	while (i < my intervals -> size) {
-		TextInterval ti = (TextInterval) my intervals -> item[i];
-		TextInterval tip1 = (TextInterval) my intervals -> item[i + 1];
-		if ( (label == 0 || (ti -> text != 0 && str32equ (ti -> text, label))) &&
-		        (Melder_cmp (ti -> text, tip1 -> text) == 0)) {
-
-			IntervalTier_cutInterval (me, i, 1);
+	long iinterval = 1;
+	while (iinterval < my intervals.size) {
+		TextInterval thisInterval = my intervals.at [iinterval];
+		TextInterval nextInterval = my intervals.at [iinterval + 1];
+		if ( (! label || (thisInterval -> text && str32equ (thisInterval -> text, label))) &&
+			Melder_equ (thisInterval -> text, nextInterval -> text))
+		{
+			IntervalTier_cutInterval (me, iinterval, 1);
 		} else {
-			i++;
+			iinterval ++;
 		}
 	}
 }
 
-void IntervalTier_changeLabels (I, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches) {
-	iam (IntervalTier);
+void IntervalTier_changeLabels (IntervalTier me, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches) {
 	try {
 		if (from == 0) {
 			from = 1;
 		}
 		if (to == 0) {
-			to = my intervals -> size;
+			to = my intervals.size;
 		}
-		if (from > to || from < 1 || to > my intervals -> size) {
+		if (from > to || from < 1 || to > my intervals.size) {
 			Melder_throw (U"Incorrect specification of where to act.");
 		}
-		if (use_regexp && str32len (search) == 0) Melder_throw (U"The regex search string cannot be empty.\n"
-			        U"You may search for an empty string with the expression \"^$\"");
+		if (use_regexp && str32len (search) == 0) {
+			Melder_throw (U"The regex search string cannot be empty.\nYou may search for an empty string with the expression \"^$\"");
+		}
 
 		long nlabels = to - from + 1;
 		autoNUMvector<char32 *> labels (1, nlabels);
 
-		for (long i = from; i <= to; i++) {
-			TextInterval interval = (TextInterval) my intervals -> item[i];
+		for (long i = from; i <= to; i ++) {
+			TextInterval interval = my intervals.at [i];
 			labels[i - from + 1] = interval -> text;   // Shallow copy.
 		}
 		autostring32vector newlabels (strs_replace (labels.peek(), 1, nlabels, search, replace, 0, nmatches, nstringmatches, use_regexp), 1, nlabels);
 
-		for (long i = from; i <= to; i++) {
-			TextInterval interval = (TextInterval) my intervals -> item[i];
+		for (long i = from; i <= to; i ++) {
+			TextInterval interval = my intervals.at [i];
 			Melder_free (interval -> text);
-			interval -> text = newlabels[i - from + 1];   // Transfer of ownership.
-			newlabels[i - from + 1] = 0;
+			interval -> text = newlabels [i - from + 1];   // Transfer of ownership.
+			newlabels [i - from + 1] = nullptr;
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": labels not changed.");
 	}
 }
 
-void TextTier_changeLabels (I, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches) {
-	iam (TextTier);
+void TextTier_changeLabels (TextTier me, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches) {
 	try {
 		if (from == 0) {
 			from = 1;
 		}
 		if (to == 0) {
-			to = my points -> size;
+			to = my points.size;
 		}
-		if (from > to || from < 1 || to > my points -> size) {
+		if (from > to || from < 1 || to > my points.size) {
 			Melder_throw (U"Incorrect specification of where to act.");
 		}
-		if (use_regexp && str32len (search) == 0) Melder_throw (U"The regex search string cannot be empty.\n"
-			        U"You may search for an empty string with the expression \"^$\"");
-
+		if (use_regexp && str32len (search) == 0) {
+			Melder_throw (U"The regex search string cannot be empty.\nYou may search for an empty string with the expression \"^$\"");
+		}
 		long nmarks = to - from + 1;
-		autoNUMvector<char32 *> marks (1, nmarks);
+		autoNUMvector<char32 *> marks (1, nmarks);   // a non-owning vector of strings
 
-		for (long i = from; i <= to; i++) {
-			TextPoint point = (TextPoint) my points -> item[i];
-			marks[i - from + 1] = point -> mark;   // Shallow copy.
+		for (long i = from; i <= to; i ++) {
+			TextPoint point = my points.at [i];
+			marks [i - from + 1] = point -> mark;   // reference copy
 		}
-		autostring32vector newmarks (strs_replace (marks.peek(), 1, nmarks, search, replace, 0, nmatches, nstringmatches, use_regexp), 1, nmarks);
+		autostring32vector newMarks (strs_replace (marks.peek(), 1, nmarks, search, replace, 0, nmatches, nstringmatches, use_regexp), 1, nmarks);
 
-		for (long i = from; i <= to; i++) {
-			TextPoint point = (TextPoint) my points -> item[i];
-			Melder_free (point -> mark);
-			point -> mark = newmarks[i - from + 1];   // Transfer of ownership.
-			newmarks[i - from + 1] = 0;
+		for (long i = from; i <= to; i ++) {
+			TextPoint point = my points.at [i];
+			Melder_free (point -> mark);   // this discards the original mark, and dangles its reference copy in `marks`, which will not be used
+			point -> mark = newMarks [i - from + 1];   // move the new mark; this consists of a copy from A to B...
+			newMarks [i - from + 1] = nullptr;   // ...followed by zeroing A
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": no labels changed.");
@@ -639,17 +652,18 @@ void TextTier_changeLabels (I, long from, long to, const char32 *search, const c
 
 void TextGrid_changeLabels (TextGrid me, int tier, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches) {
 	try {
-		long ntiers = my tiers -> size;
-
-		if (tier < 1 || tier > ntiers) Melder_throw (U"The tier number (", tier, U") should not be "
-			        U"larger than the number of tiers (", ntiers, U").");
-		if (use_regexp && str32len (search) == 0) Melder_throw (U"The regex search string cannot be empty.\n"
-			        U"You may search for an empty string with the expression \"^$\"");
-		Data anyTier = (Data) my tiers -> item [tier];
+		long ntiers = my tiers->size;
+		if (tier < 1 || tier > ntiers) {
+			Melder_throw (U"The tier number (", tier, U") should not be larger than the number of tiers (", ntiers, U").");
+		}
+		if (use_regexp && str32len (search) == 0) {
+			Melder_throw (U"The regex search string cannot be empty.\nYou may search for an empty string with the expression \"^$\"");
+		}
+		Function anyTier = my tiers->at [tier];
 		if (anyTier -> classInfo == classIntervalTier) {
-			IntervalTier_changeLabels (anyTier, from, to, search, replace, use_regexp, nmatches, nstringmatches);
+			IntervalTier_changeLabels ((IntervalTier) anyTier, from, to, search, replace, use_regexp, nmatches, nstringmatches);
 		} else {
-			TextTier_changeLabels (anyTier, from, to, search, replace, use_regexp, nmatches, nstringmatches);
+			TextTier_changeLabels ((TextTier) anyTier, from, to, search, replace, use_regexp, nmatches, nstringmatches);
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": labels not changed.");
@@ -657,11 +671,12 @@ void TextGrid_changeLabels (TextGrid me, int tier, long from, long to, const cha
 }
 
 static void IntervalTier_checkStartAndEndTime (IntervalTier me) {
-	TextInterval ti = (TextInterval) my intervals -> item[1];
+	Melder_assert (my intervals.size > 0);
+	TextInterval ti = my intervals.at [1];
 	if (my xmin != ti -> xmin) {
 		Melder_throw (me, U": start time of first interval doesn't match start time of the tier.");
 	}
-	ti = (TextInterval) my intervals -> item[my intervals -> size];
+	ti = my intervals.at [my intervals.size];
 	if (my xmax != ti -> xmax) {
 		Melder_throw (me, U": end time of last interval doesn't match end time of the tier.");
 	}
@@ -677,12 +692,12 @@ void IntervalTiers_append_inline (IntervalTier me, IntervalTier thee, bool prese
 		if (preserveTimes && my xmax < thy xmin) {
 			autoTextInterval connection = TextInterval_create (my xmax, thy xmin, U"");
             xmax_previous = thy xmin;
-			Collection_addItem (my intervals, connection.transfer());
+			my intervals. addItem_move (connection.move());
 		}
-		for (long iint = 1; iint <= thy intervals -> size; iint++) {
-			autoTextInterval ti = (TextInterval) Data_copy ((Data) thy intervals -> item[iint]);
+		for (long iint = 1; iint <= thy intervals.size; iint ++) {
+			autoTextInterval ti = Data_copy (thy intervals.at [iint]);
 			if (preserveTimes) {
-				Collection_addItem (my intervals, ti.transfer());
+				my intervals. addItem_move (ti.move());
 			} else {
 				/* the interval could be so short that if we test ti -> xmin < ti->xmax it might be true
 				 * but after assigning ti->xmin = xmax_previous and ti->xmax += time_shift the test
@@ -694,7 +709,7 @@ void IntervalTiers_append_inline (IntervalTier me, IntervalTier thee, bool prese
 				volatile double xmax = ti -> xmax + time_shift;
 				if (xmin < xmax) {
 					ti -> xmin = xmin; ti -> xmax = xmax;
-					Collection_addItem (my intervals, ti.transfer());
+					my intervals. addItem_move (ti.move());
 					xmax_previous = xmax;
 				}
 				// else don't include interval
@@ -709,12 +724,12 @@ void IntervalTiers_append_inline (IntervalTier me, IntervalTier thee, bool prese
 // Precondition: if (preserveTimes) { my xmax <= thy xmin }
 void TextTiers_append_inline (TextTier me, TextTier thee, bool preserveTimes) {
 	try {
-		for (long iint = 1; iint <= thy points -> size; iint++) {
-			autoTextPoint tp = (TextPoint) Data_copy ((Data) thy points -> item[iint]);
+		for (long iint = 1; iint <= thy points.size; iint ++) {
+			autoTextPoint tp = Data_copy (thy points.at [iint]);
 			if (not preserveTimes) {
 				tp -> number += my xmax - thy xmin;
 			}
-			Collection_addItem (my points, tp.transfer());
+			my points. addItem_move (tp.move());
 		}
 		my xmax = preserveTimes ? thy xmax : my xmax + (thy xmax - thy xmin);
 	} catch (MelderError) {
@@ -723,8 +738,8 @@ void TextTiers_append_inline (TextTier me, TextTier thee, bool preserveTimes) {
 }
 
 static void TextGrid_checkStartAndEndTimesOfTiers (TextGrid me) {
-	for (long itier = 1; itier <= my tiers -> size; itier++) {
-		Function tier = (Function) my tiers -> item[itier];
+	for (long itier = 1; itier <= my tiers->size; itier ++) {
+		Function tier = my tiers->at [itier];
 		if (tier -> xmin != my xmin) {
 			Melder_throw (me, U": the start time of tier ", itier, U" does not match the start time of its TextGrid.");
 		} else if (tier -> xmax != my xmax) {
@@ -736,8 +751,8 @@ static void TextGrid_checkStartAndEndTimesOfTiers (TextGrid me) {
 void TextGrids_append_inline (TextGrid me, TextGrid thee, bool preserveTimes)
 {
 	try {
-		if (my tiers -> size != thy tiers -> size) {
-			Melder_throw (U"The number of tiers must be equal.");
+		if (my tiers->size != thy tiers->size) {
+			Melder_throw (U"The numbers of tiers must be equal.");
 		}
 		if (preserveTimes && thy xmin < my xmax) {
 			Melder_throw (U"The start time of the second TextGrid can't be earlier than the end time of the first one if you want to preserve times.");
@@ -747,14 +762,14 @@ void TextGrids_append_inline (TextGrid me, TextGrid thee, bool preserveTimes)
 		TextGrid_checkStartAndEndTimesOfTiers (thee);
 		// last intervals must have the same end time
 		double xmax = preserveTimes ? thy xmax : my xmax + (thy xmax - thy xmin);
-		for (long itier = 1; itier <= my tiers -> size; itier++) {
-			Function myTier = my tier (itier), thyTier = thy tier (itier);
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			Function myTier = my tiers->at [itier], thyTier = thy tiers->at [itier];
 			if (myTier -> classInfo == classIntervalTier && thyTier -> classInfo == classIntervalTier) {
 				IntervalTier  myIntervalTier = static_cast <IntervalTier>  (myTier);
 				IntervalTier thyIntervalTier = static_cast <IntervalTier> (thyTier);
 				IntervalTiers_append_inline (myIntervalTier, thyIntervalTier, preserveTimes);
                 // make sure last interval has correct end time
-                TextInterval lastInterval = myIntervalTier -> interval (myIntervalTier -> numberOfIntervals());
+                TextInterval lastInterval = myIntervalTier -> intervals.at [myIntervalTier -> intervals.size];
                 lastInterval -> xmax = xmax;
                 Melder_assert (lastInterval -> xmax > lastInterval -> xmin);
 			} else if (myTier -> classInfo == classTextTier && thyTier -> classInfo == classTextTier) {
@@ -773,16 +788,17 @@ void TextGrids_append_inline (TextGrid me, TextGrid thee, bool preserveTimes)
 	}
 }
 
-TextGrid TextGrids_to_TextGrid_appendContinuous (Collection me, bool preserveTimes) {
+autoTextGrid TextGrids_to_TextGrid_appendContinuous (OrderedOf<structTextGrid>* me, bool preserveTimes) {
 	try {
-		autoTextGrid thee = Data_copy ((TextGrid) my item[1]);
-		for (long igrid = 2; igrid <= my size; igrid++) {
-			TextGrids_append_inline (thee.peek(), (TextGrid) my item[igrid], preserveTimes);
+		Melder_assert (my size > 0);
+		autoTextGrid thee = Data_copy (my at [1]);
+		for (long igrid = 2; igrid <= my size; igrid ++) {
+			TextGrids_append_inline (thee.get(), my at [igrid], preserveTimes);
 		}
 		if (! preserveTimes) {
-			Function_shiftXBy (thee.peek(), -thy xmin);
+			Function_shiftXBy (thee.get(), -thy xmin);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"No aligned TextGrid created from Collection.");
 	}
diff --git a/dwtools/TextGrid_extensions.h b/dwtools/TextGrid_extensions.h
index 7bc953e..e0c26af 100644
--- a/dwtools/TextGrid_extensions.h
+++ b/dwtools/TextGrid_extensions.h
@@ -2,21 +2,20 @@
 #define _TextGrid_extensions_h_
 /* TextGrid_extensions.h
  *
- * Copyright (C) 1993-2012 David Weenink
+ * Copyright (C) 1993-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,7 +25,7 @@
 
 #include "TextGrid.h"
 
-TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile);
+autoTextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile);
 /*
 	Read TIMIT label file with the following structure:
 		samplenumber1 samplenumber2 label1
@@ -41,7 +40,7 @@ TextGrid TextGrid_readFromTIMITLabelFile (MelderFile file, int phnFile);
 	frequency of 16000 Hz is assumed.
 */
 
-Any TextGrid_TIMITLabelFileRecognizer (int nread, const char *header, MelderFile file);
+autoDaata TextGrid_TIMITLabelFileRecognizer (int nread, const char *header, MelderFile file);
 /*
 	There are two types of TIMIT label files. One with phonetic labels, these
 	files have '.phn' as file extension. The other contains word labels and has
@@ -61,7 +60,7 @@ Any TextGrid_TIMITLabelFileRecognizer (int nread, const char *header, MelderFile
 		A valid word is a string with contains the lowercase characters [a-z] and ['].
 */
 
-TextGrid TextGrids_merge (TextGrid grid1, TextGrid grid2);
+autoTextGrid TextGrids_merge (TextGrid grid1, TextGrid grid2);
 /*
 	Merge two textGrids.
 	The new domain will be:
@@ -79,40 +78,47 @@ void TextGrid_extendTime (TextGrid me, double delta_time, int position);
 
 void TextGrid_setTierName (TextGrid me, long itier, const char32 *newName);
 
-void TextTier_changeLabels (I, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches);
+void TextTier_changeLabels (TextTier me, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches);
 
-void IntervalTier_changeLabels (I, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches);
+void IntervalTier_changeLabels (IntervalTier me, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches);
 
 void IntervalTier_removeBoundariesBetweenIdenticallyLabeledIntervals (IntervalTier me, const char32 *label);
 
 void IntervalTier_cutIntervalsOnLabelMatch (IntervalTier me, const char32 *label);
+
 void IntervalTier_cutIntervals_minimumDuration (IntervalTier me, const char32 *label, double minimumDuration);
 
 void TextGrid_changeLabels (TextGrid me, int tier, long from, long to, const char32 *search, const char32 *replace, int use_regexp, long *nmatches, long *nstringmatches);
 
 /* Set the start/end time to a smaller/larger value.
- * If mark is NULL, only times are changed
- * If mark != NULL mark the previous start/end time
+ * If mark is null, only times are changed
+ * If mark != null, mark the previous start/end time
  *    For a TextTier this involves adding a point with the marker
  *    For an IntervalTier this involves adding a new interval
  */
 void IntervalTier_setLaterEndTime (IntervalTier me, double xmax, const char32 *mark);
+
 void IntervalTier_setEarlierStartTime (IntervalTier me, double xmin, const char32 *mark);
 
 void IntervalTier_moveBoundary (IntervalTier me, long interval, bool atStart, double newTime);
+
 void TextTier_setLaterEndTime (TextTier me, double xmax, const char32 *mark);
+
 void TextTier_setEarlierStartTime (TextTier me, double xmin, const char32 *mark);
+
 void TextGrid_setEarlierStartTime (TextGrid me, double xmin, const char32 *imark, const char32 *pmark);
+
 void TextGrid_setLaterEndTime (TextGrid me, double xmax, const char32 *imark, const char32 *pmark);
 
 
 // Precondition: if (preserveTimes) { my xmax <= thy xmin }
 // Postcondition: my xmin preserved
 void IntervalTiers_append_inline (IntervalTier me, IntervalTier thee, bool preserveTimes);
+
 void TextTiers_append_inline (TextTier me, TextTier thee, bool preserveTimes);
+
 void TextGrids_append_inline (TextGrid me, TextGrid thee, bool preserveTimes);
 
-// Postcondition:
-TextGrid TextGrids_to_TextGrid_appendContinuous (Collection me, bool preserveTimes);
+autoTextGrid TextGrids_to_TextGrid_appendContinuous (OrderedOf<structTextGrid>* me, bool preserveTimes);
 
 #endif /* _TextGrid_extensions_h_ */
diff --git a/dwtools/VowelEditor.cpp b/dwtools/VowelEditor.cpp
index cf491b1..41761f7 100644
--- a/dwtools/VowelEditor.cpp
+++ b/dwtools/VowelEditor.cpp
@@ -1,20 +1,19 @@
 /* VowelEditor.cpp
  *
- * Copyright (C) 2008-2013 David Weenink, 2015 Paul Boersma
+ * Copyright (C) 2008-2013, 2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -71,10 +70,10 @@ trajectory --> path ????
 #include <time.h>
 
 #if defined (macintosh)
-#include <sys/time.h>
+	#include <sys/time.h>
 #elif defined (linux)
-#include <sys/time.h>
-#include <signal.h>
+	#include <sys/time.h>
+	#include <signal.h>
 #endif
 
 Thing_implement (VowelEditor, Editor, 0);
@@ -104,57 +103,8 @@ Thing_implement (VowelEditor, Editor, 0);
 // maximum number of marks
 #define VowelEditor_MAXIMUM_MARKERS 30
 
-// prototypes: button callbacks
-static void gui_button_cb_publish (I, GuiButtonEvent event);
-static void gui_button_cb_play (I, GuiButtonEvent event);
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event);
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event);
-static void gui_button_cb_reverse (I, GuiButtonEvent event);
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event);
-//  prototypes: helpers
-static double getRealFromTextWidget (GuiText me);
-static double getCoordinate (double fmin, double fmax, double f);
-static double getF0 (structVowelEditor_F0 *f0p, double time);
-static void checkF1F2 (VowelEditor me, double *f1, double *f2);
-static void checkF0 (structVowelEditor_F0 *f0p, double *f0);
-static void	checkXY (double *x, double *y);
-static void Sound_fadeIn (Sound me, double duration, int fromFirstNonZeroSample);
-static void Sound_fadeOut (Sound me, double duration);
-static void PitchTier_newDuration (PitchTier me, structVowelEditor_F0 *f0p, double newDuration);
-static void FormantTier_newDuration (FormantTier me, double newDuration);
-static void FormantTier_drawF1F2Trajectory (FormantTier me, Graphics g, double f1min, double f1max, double f2min, double f2max, double markTraceEvery, double width);
-static FormantGrid FormantTier_to_FormantGrid (FormantTier me);
-static PitchTier VowelEditor_to_PitchTier (VowelEditor me, double duration);
-static void VowelEditor_updateF0Info (VowelEditor me);
-static void VowelEditor_updateExtendDuration (VowelEditor me);
-static double VowelEditor_updateDurationInfo (VowelEditor me);
-static void VowelEditor_Vowel_updateTiers (VowelEditor me, Vowel thee, double time, double x, double y);
-static void VowelEditor_Vowel_addData (VowelEditor me, Vowel thee, double time, double f1, double f2, double f0);
-static void VowelEditor_getXYFromF1F2 (VowelEditor me, double f1, double f2, double *x, double *y);
-static void VowelEditor_getF1F2FromXY (VowelEditor me, double x, double y, double *f1, double *f2);
-static void VowelEditor_updateVowel (VowelEditor me);
-static Sound VowelEditor_createTarget (VowelEditor me);
-static void VowelEditor_Vowel_reverseFormantTier (VowelEditor me);
-static void VowelEditor_shiftF1F2 (VowelEditor me, double f1_st, double f2_st);
-static void VowelEditor_setSource (VowelEditor me);
-static void VowelEditor_setMarks (VowelEditor me, int marksDataset, int speakerType, int fontSize);
-static void VowelEditor_setF3F4 (VowelEditor me, double f3, double b3, double f4, double b4);
-static void VowelEditor_getF3F4 (VowelEditor me, double f1, double f2, double *f3, double *b3, double *f4, double *b4);
-static void VowelEditor_getVowelMarksFromTableFile (VowelEditor me, MelderFile file);
-static void VowelEditor_createTableFromVowelMarksInPreferences (VowelEditor me);
-static void Table_addColumn_size (Table me, int size);
-static double Matrix_getValue (Matrix me, double x, double y);
-static void VowelEditor_drawBackground (VowelEditor me, Graphics g);
-static void createPersistentVowelMarks ();
-static void copyVowelMarksInPreferences_volatile (Table me);
-static Vowel Vowel_create (double duration);
-static Vowel Vowel_create_twoFormantSchwa (double duration);
-static void Vowel_newDuration (Vowel me, structVowelEditor_F0 *f0p, double newDuration);
-static Sound Vowel_to_Sound_pulses (Vowel me, double samplingFrequency, double adaptFactor, double adaptTime, long interpolationDepth);
-// forward declarations end
-
-static struct structVowelEditor_F0 f0default = { 140.0, 0.0, 40.0, 2000.0, SAMPLING_FREQUENCY, 1, 0.0, 2000 };
-static struct structVowelEditor_F1F2Grid griddefault = { 200, 500, 0, 1, 0, 1, 0.5 };
+static struct structVowelEditor_F0 f0default { 140.0, 0.0, 40.0, 2000.0, SAMPLING_FREQUENCY, 1, 0.0, 2000 };
+static struct structVowelEditor_F1F2Grid griddefault { 200.0, 500.0, 0, 1, 0, 1, 0.5 };
 
 #include "oo_DESTROY.h"
 #include "Vowel_def.h"
@@ -175,7 +125,7 @@ static struct structVowelEditor_F1F2Grid griddefault = { 200, 500, 0, 1, 0, 1, 0
 #include "oo_DESCRIPTION.h"
 #include "Vowel_def.h"
 
-// Preferences structs
+#pragma mark - preferences
 
 struct markInfo {
 	double f1, f2;
@@ -185,7 +135,7 @@ struct markInfo {
 
 static struct {
 	int shellWidth, shellHeight;
-	int soundFollowsMouse;
+	bool soundFollowsMouse;
 	double f1min, f1max, f2min, f2max;
 	double f3, b3, f4, b4;
 	double markTraceEvery, extendDuration;
@@ -195,73 +145,102 @@ static struct {
 	char32 mark[VowelEditor_MAXIMUM_MARKERS][Preferences_STRING_BUFFER_SIZE];
 } prefs;
 
+void VowelEditor_prefs () {
+	Preferences_addInt (U"VowelEditor.shellWidth", &prefs.shellWidth, 500);
+	Preferences_addInt (U"VowelEditor.shellHeight", &prefs.shellHeight, 500);
+	Preferences_addBool (U"VowelEditor.soundFollowsMouse", &prefs.soundFollowsMouse, true);
+	Preferences_addDouble (U"VowelEditor.f1min", &prefs.f1min, 200.0);
+	Preferences_addDouble (U"VowelEditor.f1max", &prefs.f1max, 1200.0);
+	Preferences_addDouble (U"VowelEditor.f2min", &prefs.f2min, 500.0);
+	Preferences_addDouble (U"VowelEditor.f2max", &prefs.f2max, 3500.0);
+	Preferences_addDouble (U"VowelEditor.f3", &prefs.f3, 2500.0);
+	Preferences_addDouble (U"VowelEditor.b3", &prefs.b3, 250.0);
+	Preferences_addDouble (U"VowelEditor.f4", &prefs.f4, 3500.0);
+	Preferences_addDouble (U"VowelEditor.b4", &prefs.b4, 350.0);
+	Preferences_addDouble (U"VowelEditor.markTraceEvery", &prefs.markTraceEvery, 0.05);
+	Preferences_addDouble (U"VowelEditor.extendDuration", &prefs.extendDuration, 0.05);
+	Preferences_addInt (U"VowelEditor.frequencyScale", &prefs.frequencyScale, 0);
+	Preferences_addInt (U"VowelEditor.axisOrientation", &prefs.axisOrientation, 0);
+	Preferences_addInt (U"VowelEditor.speakerType", &prefs.speakerType, 1);
+	Preferences_addInt (U"VowelEditor.marksDataset", &prefs.marksDataset, 2);
+	Preferences_addInt (U"VowelEditor.marksFontsize", &prefs.marksFontSize, 14);
+	Preferences_addInt (U"VowelEditor.numberOfMarks", &prefs.numberOfMarks, 12);   // 12 is the number of vowels in the default (Dutch) marksDataset
+	/*
+	 * We don't know how many markers there will be, so the prefs file needs to have the maximum number.
+	 */
+	for (long i = 1; i <= VowelEditor_MAXIMUM_MARKERS; i++) {
+		Preferences_addString (Melder_cat (U"VowelEditor.mark", (i < 10 ? U"0" : U""), i), & prefs.mark[i-1][0], U"x");
+	}
+}
+
+#pragma mark - class Vowel
 
 Thing_implement (Vowel, Function, 0);
 
-static Vowel Vowel_create (double duration) {
+static autoVowel Vowel_create (double duration) {
 	try {
 		autoVowel me = Thing_new (Vowel);
-		Function_init (me.peek(), 0, duration);
-		my ft = FormantTier_create (0, duration);
-		my pt = PitchTier_create (0, duration);
-		return me.transfer();
+		Function_init (me.get(), 0.0, duration);
+		my ft = FormantTier_create (0.0, duration);
+		my pt = PitchTier_create (0.0, duration);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Vowel not created.");
 	}
 }
 
-static Vowel Vowel_create_twoFormantSchwa (double duration) {
+static autoVowel Vowel_create_twoFormantSchwa (double duration) {
 	try {
 		autoVowel me = Vowel_create (duration);
-		autoFormantPoint fp =  FormantPoint_create (0);
-		fp -> formant [0] = 500;
-		fp -> bandwidth[0] = 50;
-		fp -> formant [1] = 1500;
-		fp -> bandwidth[1] = 150;
+		autoFormantPoint fp = FormantPoint_create (0.0);
+		fp -> formant [0] = 500.0;
+		fp -> bandwidth[0] = 50.0;
+		fp -> formant [1] = 1500.0;
+		fp -> bandwidth[1] = 150.0;
 		fp -> numberOfFormants = 2;
-		Collection_addItem (my ft -> points, fp.transfer());
-		RealTier_addPoint (my pt, 0, 140);
-
-		fp.reset (FormantPoint_create (duration));
-		fp -> formant [0] = 500;
-		fp -> bandwidth[0] = 50;
-		fp -> formant [1] = 1500;
-		fp -> bandwidth[1] = 150;
+		my ft -> points. addItem_move (fp.move());
+		RealTier_addPoint (my pt.get(), 0.0, 140.0);
+
+		fp = FormantPoint_create (duration);
+		fp -> formant [0] = 500.0;
+		fp -> bandwidth[0] = 50.0;
+		fp -> formant [1] = 1500.0;
+		fp -> bandwidth[1] = 150.0;
 		fp -> numberOfFormants = 2;
-		Collection_addItem (my ft -> points, fp.transfer());
-		RealTier_addPoint (my pt, duration, 140);
-		return me.transfer();
+		my ft -> points. addItem_move (fp.move());
+		RealTier_addPoint (my pt.get(), duration, 140.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Schwa Vowel not created");
 	}
 }
 
-static Sound Vowel_to_Sound_pulses (Vowel me, double samplingFrequency, double adaptFactor, double adaptTime, long interpolationDepth) {
+static autoSound Vowel_to_Sound_pulses (Vowel me, double samplingFrequency, double adaptFactor, double adaptTime, long interpolationDepth) {
 	try {
-		autoPointProcess pp = PitchTier_to_PointProcess (my pt);
-		autoSound thee = PointProcess_to_Sound_pulseTrain (pp.peek(), samplingFrequency, adaptFactor, adaptTime, interpolationDepth);
-		Sound_FormantTier_filter_inline (thee.peek(), my ft);
-		return thee.transfer();
+		autoPointProcess pp = PitchTier_to_PointProcess (my pt.get());
+		autoSound thee = PointProcess_to_Sound_pulseTrain (pp.get(), samplingFrequency, adaptFactor, adaptTime, interpolationDepth);
+		Sound_FormantTier_filter_inline (thee.get(), my ft.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Sound with pulses not created.");
 	}
 }
 
-static FormantGrid FormantTier_to_FormantGrid (FormantTier me) {
+static autoFormantGrid FormantTier_to_FormantGrid (FormantTier me) {
 	try {
 		long numberOfFormants = FormantTier_getMaxNumFormants (me);
 		autoFormantGrid thee = FormantGrid_createEmpty (my xmin, my xmax, numberOfFormants);
-		for (long ipoint = 1; ipoint <= my points -> size; ipoint++) {
-			FormantPoint fp = (FormantPoint) my points -> item[ipoint];
-			double t = fp -> time;
+		for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+			FormantPoint fp = my points.at [ipoint];
+			double t = fp -> number;
 			for (long iformant = 1; iformant <= fp -> numberOfFormants; iformant++) {
-				FormantGrid_addFormantPoint (thee.peek(), iformant, t, fp -> formant[iformant - 1]);
-				FormantGrid_addBandwidthPoint (thee.peek(), iformant, t, fp -> bandwidth[iformant - 1]);
+				FormantGrid_addFormantPoint (thee.get(), iformant, t, fp -> formant[iformant - 1]);
+				FormantGrid_addBandwidthPoint (thee.get(), iformant, t, fp -> bandwidth[iformant - 1]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": no FormantGrod created.");
+		Melder_throw (me, U": no FormantGrid created.");
 	}
 }
 
@@ -272,8 +251,8 @@ static void VowelEditor_getXYFromF1F2 (VowelEditor me, double f1, double f2, dou
 
 //Graphics_DCtoWC ????
 static void VowelEditor_getF1F2FromXY (VowelEditor me, double x, double y, double *f1, double *f2) {
-	*f2 = my f2min * pow (my f2max / my f2min, 1 - x);
-	*f1 = my f1min * pow (my f1max / my f1min, 1 - y);
+	*f2 = my f2min * pow (my f2max / my f2min, 1.0 - x);
+	*f1 = my f1min * pow (my f1max / my f1min, 1.0 - y);
 }
 
 #define REPRESENTNUMBER(x,i) (((x) == NUMundefined) ? U" undef" : Melder_pad (6, Melder_fixed (x, 1)))
@@ -285,7 +264,7 @@ static double getRealFromTextWidget (GuiText me) {
 	double value = NUMundefined;
 	char32 *dirty = GuiText_getString (me);
 	try {
-		Interpreter_numericExpression (NULL, dirty, & value);
+		Interpreter_numericExpression (nullptr, dirty, & value);
 	} catch (MelderError) {
 		Melder_clearError (); value = NUMundefined;
 	}
@@ -293,13 +272,64 @@ static double getRealFromTextWidget (GuiText me) {
 	return value;
 }
 
+static void checkF1F2 (VowelEditor me, double *f1, double *f2) {
+	if (*f1 < my f1min) {
+		*f1 = my f1min;
+	}
+	if (*f1 > my f1max) {
+		*f1 = my f1max;
+	}
+	if (*f2 < my f2min) {
+		*f2 = my f2min;
+	}
+	if (*f2 > my f2max) {
+		*f1 = my f2max;
+	}
+}
+
+static void checkF0 (structVowelEditor_F0 *f0p, double *f0) {
+	if (! NUMdefined (*f0)) {
+		*f0 = f0p -> start;
+	}
+	if (*f0 > f0p -> maximum) {
+		*f0 = f0p -> maximum;
+	}
+	if (*f0 < f0p -> minimum) {
+		*f0 = f0p -> minimum;
+	}
+}
+
+static void	checkXY (double *x, double *y) {
+	if (*x < 0.0) {
+		*x = 0.0;
+	} else if (*x > 1.0) {
+		*x = 1.0;
+	}
+	if (*y < 0.0) {
+		*y = 0.0;
+	} else if (*y > 1.0) {
+		*y = 1.0;
+	}
+}
+
+static double Matrix_getValue (Matrix me, double /* x */, double /* y */) {
+	return my z[1][1];
+}
+
+static void VowelEditor_getF3F4 (VowelEditor me, double f1, double f2, double *f3, double *b3, double *f4, double *b4) {
+	*f3 = Matrix_getValue (my f3.get(), f2, f1);
+	*b3 = Matrix_getValue (my b3.get(), f2, f1);
+	*f4 = Matrix_getValue (my f4.get(), f2, f1);
+	*b4 = Matrix_getValue (my b4.get(), f2, f1);
+}
+
 static void VowelEditor_updateF0Info (VowelEditor me) {
 	double f0 = getRealFromTextWidget (my f0TextField);
 	checkF0 (&my f0, &f0);
 	GuiText_setString (my f0TextField, Melder_double (f0));
 	my f0.start = f0;
 	double slopeOctPerSec = getRealFromTextWidget (my f0SlopeTextField);
-	if (slopeOctPerSec == NUMundefined) {
+	if (! NUMdefined (slopeOctPerSec)) {
 		slopeOctPerSec = f0default.slopeOctPerSec;
 	}
 	my f0.slopeOctPerSec = slopeOctPerSec;
@@ -308,7 +338,7 @@ static void VowelEditor_updateF0Info (VowelEditor me) {
 
 static void VowelEditor_updateExtendDuration (VowelEditor me) {
 	double extend = getRealFromTextWidget (my extendTextField);
-	if (extend == NUMundefined || extend <= MINIMUM_SOUND_DURATION || extend > my maximumDuration) {
+	if (! NUMdefined (extend) || extend <= MINIMUM_SOUND_DURATION || extend > my maximumDuration) {
 		extend = MINIMUM_SOUND_DURATION;
 	}
 	GuiText_setString (my extendTextField, Melder_double (extend));
@@ -317,7 +347,7 @@ static void VowelEditor_updateExtendDuration (VowelEditor me) {
 
 static double VowelEditor_updateDurationInfo (VowelEditor me) {
 	double duration = getRealFromTextWidget (my durationTextField);
-	if (duration == NUMundefined || duration < MINIMUM_SOUND_DURATION) {
+	if (! NUMdefined (duration) || duration < MINIMUM_SOUND_DURATION) {
 		duration = MINIMUM_SOUND_DURATION;
 	}
 	GuiText_setString (my durationTextField, Melder_double (MICROSECPRECISION (duration)));
@@ -337,9 +367,9 @@ static void Sound_fadeIn (Sound me, double duration, int fromFirstNonZeroSample)
 		// 1. They have no offset
 		// 2. They are already scaled to a maximum amplitude of 0.99
 		// 3. For 16 bit precision
-		double zmin = 0.5 / pow (2, 16);
+		double zmin = 0.5 / pow (2.0, 16.0);
 		while (fabs (my z[1][istart]) < zmin && istart < my nx) {
-			my z[1][istart] = 0; // To make sure
+			my z[1][istart] = 0.0; // To make sure
 			istart++;
 		}
 	}
@@ -350,7 +380,7 @@ static void Sound_fadeIn (Sound me, double duration, int fromFirstNonZeroSample)
 	for (long i = 1; i <= numberOfSamples; i++) {
 		double phase = NUMpi * (i - 1) / (numberOfSamples - 1);
 
-		my z[1][istart + i - 1] *= 0.5 * (1 - cos (phase));
+		my z[1][istart + i - 1] *= 0.5 * (1.0 - cos (phase));
 	}
 }
 
@@ -368,12 +398,12 @@ static void Sound_fadeOut (Sound me, double duration) {
 	for (long i = 1; i <= numberOfSamples; i++) {
 		double phase = NUMpi * (i - 1) / (numberOfSamples - 1);
 
-		my z[1][istart + i] *= 0.5 * (1 + cos (phase));
+		my z[1][istart + i] *= 0.5 * (1.0 + cos (phase));
 	}
 }
 
 static double getF0 (structVowelEditor_F0 *f0p, double time) {
-	double f0 = f0p -> start * pow (2, f0p -> slopeOctPerSec * time);
+	double f0 = f0p -> start * pow (2.0, f0p -> slopeOctPerSec * time);
 	if (f0 < f0p -> minimum) {
 		f0 = f0p -> minimum;
 	} else if (f0 > f0p -> maximum) {
@@ -383,30 +413,30 @@ static double getF0 (structVowelEditor_F0 *f0p, double time) {
 }
 
 static void VowelEditor_Vowel_reverseFormantTier (VowelEditor me) {
-	FormantTier ft = (FormantTier) my vowel -> ft;
+	FormantTier ft = my vowel -> ft.get();
 	double duration = ft -> xmax;
-	long np = ft -> points -> size, np_2 = np / 2;
+	long np = ft -> points.size, np_2 = np / 2;
 
 	for (long i = 1; i <= np_2; i++) {
-		FormantPoint fpt = (FormantPoint) ft -> points -> item[i];
-		ft -> points -> item[i] =  ft -> points -> item[np - i + 1];
-		ft -> points -> item[np - i + 1] = fpt;
-		fpt = (FormantPoint) ft -> points -> item[i];
-		fpt -> time = duration - fpt -> time;
-		fpt = (FormantPoint) ft -> points -> item[np - i + 1];
-		fpt -> time = duration - fpt -> time;
+		FormantPoint fpt = ft -> points.at [i];
+		ft -> points.at [i] = ft -> points.at [np - i + 1];
+		ft -> points.at [np - i + 1] = fpt;
+		fpt = ft -> points.at [i];
+		fpt -> number = duration - fpt -> number;
+		fpt = ft -> points.at [np - i + 1];
+		fpt -> number = duration - fpt -> number;
 	}
 	if (np % 2 == 1) {
-		FormantPoint fpt = (FormantPoint) ft -> points -> item[np_2 + 1];
-		fpt -> time = duration - fpt -> time;
+		FormantPoint fpt = ft -> points.at [np_2 + 1];
+		fpt -> number = duration - fpt -> number;
 	}
 }
 
 static void VowelEditor_shiftF1F2 (VowelEditor me, double f1_st, double f2_st) {
-	FormantTier ft = my vowel -> ft;
-	for (long i = 1; i <= ft -> points -> size; i++) {
-		FormantPoint fp = (FormantPoint) ft -> points -> item[i];
-		double f1 = fp -> formant[0], f2 = fp -> formant[1];
+	FormantTier ft = my vowel -> ft.get();
+	for (long i = 1; i <= ft -> points.size; i ++) {
+		FormantPoint fp = ft -> points.at [i];
+		double f1 = fp -> formant [0], f2 = fp -> formant [1];
 
 		f1 *= pow (2, f1_st / 12);
 		if (f1 < my f1min) {
@@ -436,23 +466,13 @@ static void VowelEditor_shiftF1F2 (VowelEditor me, double f1_st, double f2_st) {
 	}
 }
 
-static void Vowel_newDuration (Vowel me, structVowelEditor_F0 *f0p, double newDuration) {
-	if (newDuration != my xmax) {
-		double multiplier = newDuration / my xmax;
-		FormantTier_newDuration (my ft, newDuration);
-		my xmax *= multiplier;
-	}
-	PitchTier_newDuration (my pt, f0p, newDuration); // always update
-
-}
-
 static void FormantTier_newDuration (FormantTier me, double newDuration) {
 	if (newDuration != my xmax) {
 		double multiplier = newDuration / my xmax;
 
-		for (long i = 1; i <= my points -> size; i++) {
-			FormantPoint fp = (FormantPoint) my points -> item[i];
-			fp -> time *= multiplier;
+		for (long i = 1; i <= my points.size; i ++) {
+			FormantPoint fp = my points.at [i];
+			fp -> number *= multiplier;
 		}
 		my xmax *= multiplier;
 	}
@@ -461,51 +481,80 @@ static void FormantTier_newDuration (FormantTier me, double newDuration) {
 static void PitchTier_newDuration (PitchTier me, structVowelEditor_F0 *f0p, double newDuration) {
 	// Always update; GuiObject text might have changed
 	double multiplier = newDuration / my xmax;
-	for (long i = 1; i <= my points -> size; i++) {
-		RealPoint pp = (RealPoint) my points -> item[i];
+	for (long i = 1; i <= my points.size; i ++) {
+		RealPoint pp = my points.at [i];
 		pp -> number *= multiplier;
 		pp -> value = getF0 (f0p, pp -> number);
 	}
 	my xmax *= multiplier;
 }
 
+static void Vowel_newDuration (Vowel me, structVowelEditor_F0 *f0p, double newDuration) {
+	if (newDuration != my xmax) {
+		double multiplier = newDuration / my xmax;
+		FormantTier_newDuration (my ft.get(), newDuration);
+		my xmax *= multiplier;
+	}
+	PitchTier_newDuration (my pt.get(), f0p, newDuration);   // always update
+}
+
 static void VowelEditor_updateVowel (VowelEditor me) {
 	double newDuration = VowelEditor_updateDurationInfo (me); // Get new duration from TextWidget
-	VowelEditor_updateF0Info (me); // Get new pitch and slope values from TextWidgets
-	Vowel_newDuration (my vowel, & my f0, newDuration);
+	VowelEditor_updateF0Info (me);   // get new pitch and slope values from TextWidgets
+	Vowel_newDuration (my vowel.get(), & my f0, newDuration);
 }
 
 static double getCoordinate (double fmin, double fmax, double f) {
 	return log (f / fmax) / log (fmin / fmax);
 }
 
+static autoSound VowelEditor_createTarget (VowelEditor me) {
+	try {
+		VowelEditor_updateVowel (me);   // update pitch and duration
+		autoSound thee = Vowel_to_Sound_pulses (my vowel.get(), 44100.0, 0.7, 0.05, 30);
+		Vector_scale (thee.get(), 0.99);
+		Sound_fadeIn (thee.get(), 0.005, 1);
+		Sound_fadeOut (thee.get(), 0.005);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (U"Target Sound not created.");
+	}
+}
+
 #define GETX(x) (getCoordinate (f2min, f2max, x))
 #define GETY(y) (getCoordinate (f1min, f1max, y))
-// Our FormantTiers always have a FormantPoint at t=xmin and t=xmax;
 static void FormantTier_drawF1F2Trajectory (FormantTier me, Graphics g, double f1min, double f1max, double f2min, double f2max, double markTraceEvery, double width) {
+// Our FormantTiers always have a FormantPoint at t=xmin and t=xmax;
+	Melder_assert (my points.size >= 2);
+
 	int it, imark = 1, glt = Graphics_inqLineType (g);
 	double glw = Graphics_inqLineWidth (g), x1, x1p, y1, y1p, t1;
 	Graphics_Colour colour = Graphics_inqColour (g);
-	long nfp = my points -> size;
+	long nfp = my points.size;
 	trace (U"number of points ", nfp);
-	FormantPoint fp = (FormantPoint) my points -> item[1];
-	FormantPoint fpn = (FormantPoint) my points -> item[nfp];
+	FormantPoint fp = my points.at [1];
+	FormantPoint fpn = my points.at [nfp];
 	double tm, markLength = 0.01;
 
 	Graphics_setInner (g);
-	Graphics_setWindow (g, 0, 1, 0, 1);
+	Graphics_setWindow (g, 0.0, 1.0, 0.0, 1.0);
 	Graphics_setLineType (g, Graphics_DRAWN);
 	// Too short too hear ?
 	if ( (my xmax - my xmin) < 0.005) {
 		Graphics_setColour (g, Graphics_RED);
 	}
-	x1p = x1 = GETX (fp->formant[1]); y1p = y1 = GETY (fp->formant[0]); t1 = fp->time;
-	for (it = 2; it <= nfp; it++) {
-		fp = (FormantPoint) my points -> item[it];
-		double x2 = GETX (fp->formant[1]), y2 = GETY (fp->formant[0]), t2 = fp->time;
+	x1p = x1 = GETX (fp -> formant [1]);
+	y1p = y1 = GETY (fp -> formant [0]);
+	t1 = fp -> number;
+	for (it = 2; it <= nfp; it ++) {
+		fp = my points.at [it];
+		double x2 = GETX (fp -> formant [1]);
+		double y2 = GETY (fp -> formant [0]);
+		double t2 = fp -> number;
 		Graphics_setLineWidth (g, 3);
 		if (x1 == x2 && y1 == y2) {
-			x1 = x1p; y1 = y1p;
+			x1 = x1p;
+			y1 = y1p;
 		} else {
 			Graphics_line (g, x1, y1, x2, y2);
 		}
@@ -513,45 +562,50 @@ static void FormantTier_drawF1F2Trajectory (FormantTier me, Graphics g, double f
 			// line orthogonal to y = (y1/x1)*x is y = -(x1/y1)*x
 			double fraction = (tm - t1) / (t2 - t1);
 			double dx = x2 - x1, dy = y2 - y1;
-			double xm = x1 + fraction * dx, ym = y1 + fraction * dy;
+			double xm = x1 + fraction * dx;
+			double ym = y1 + fraction * dy;
 			double d = sqrt (dx * dx + dy * dy);
 			if (d > 0.0) {
 				double xl1 = dy * markLength / d, xl2 = - xl1;
 				double yl1 = dx * markLength / d, yl2 = - yl1;
 
-				if (dx * dy > 0) {
-					xl1 = -fabs (xl1); yl1 = fabs (yl1);
-					xl2 = fabs (xl1); yl2 = -fabs (yl1);
-				} else if (dx * dy < 0) {
-					xl1 = -fabs (xl1); yl1 = -fabs (yl1);
-					xl2 = fabs (xl1); yl2 = fabs (yl1);
+				if (dx * dy > 0.0) {
+					xl1 = -fabs (xl1);
+					yl1 = fabs (yl1);
+					xl2 = fabs (xl1);
+					yl2 = -fabs (yl1);
+				} else if (dx * dy < 0.0) {
+					xl1 = -fabs (xl1);
+					yl1 = -fabs (yl1);
+					xl2 = fabs (xl1);
+					yl2 = fabs (yl1);
 				}
 				Graphics_setLineWidth (g, 1);
 				trace (xm, U" ", ym, U" ", xl1, U" ", xl2, U" ", yl1, U" ", yl2);
 				Graphics_line (g, xm + xl1, ym + yl1, xm + xl2, ym + yl2);
 			}
-			imark++;
+			imark ++;
 		}
 		x1p = x1; y1p = y1;
 		x1 = x2; y1 = y2; t1 = t2;
 	}
 	// Arrow at end
 	{
-		double gas = Graphics_inqArrowSize (g), arrowSize = 1;
+		double gas = Graphics_inqArrowSize (g), arrowSize = 1.0;
 		double size = 10.0 * arrowSize * Graphics_getResolution (g) / 75.0 / width, size2 = size * size;
 		Graphics_setArrowSize (g, arrowSize);
 		it = 1;
 		while (it <= (nfp - 1)) {
-			fp = (FormantPoint) my points -> item[nfp - it];
-			double dx = GETX (fpn->formant[1]) - GETX (fp->formant[1]);
-			double dy = GETY (fpn->formant[0]) - GETY (fp->formant[0]);
+			fp = my points.at [nfp - it];
+			double dx = GETX (fpn -> formant [1]) - GETX (fp -> formant [1]);
+			double dy = GETY (fpn -> formant [0]) - GETY (fp -> formant [0]);
 			double d2 = dx * dx + dy * dy;
 			if (d2 > size2) {
 				break;
 			}
-			it++;
+			it ++;
 		}
-		Graphics_arrow (g, GETX (fp->formant[1]), GETY (fp->formant[0]), GETX (fpn->formant[1]), GETY (fpn->formant[0]));
+		Graphics_arrow (g, GETX (fp -> formant [1]), GETY (fp -> formant [0]), GETX (fpn -> formant [1]), GETY (fpn -> formant [0]));
 		Graphics_setArrowSize (g, gas);
 	}
 	Graphics_unsetInner (g);
@@ -562,55 +616,8 @@ static void FormantTier_drawF1F2Trajectory (FormantTier me, Graphics g, double f
 #undef GETX
 #undef GETY
 
-static PitchTier VowelEditor_to_PitchTier (VowelEditor me, double duration) {
-	try {
-		double t_end = duration;
-		double f0_end = my f0.start * pow (2, my f0.slopeOctPerSec * t_end);
-		autoPitchTier thee = PitchTier_create (0, t_end);
-
-		RealTier_addPoint (thee.peek(), 0, my f0.start);
-		if (my f0.slopeOctPerSec < 0) {
-			if (f0_end < my f0.minimum) {
-				t_end = log2 (my f0.minimum / my f0.start) / my f0.slopeOctPerSec;
-				f0_end = my f0.minimum;
-			}
-		} else if (my f0.slopeOctPerSec > 0) {
-			if (f0_end > my f0.maximum) {
-				t_end = log2 (my f0.maximum / my f0.start) / my f0.slopeOctPerSec;
-				f0_end = my f0.maximum;
-			}
-		}
-		RealTier_addPoint (thee.peek(), t_end, f0_end);
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, U": no PitchTier created.");
-	}
-}
-
-void VowelEditor_prefs () {
-	Preferences_addInt (U"VowelEditor.shellWidth", &prefs.shellWidth, 500);
-	Preferences_addInt (U"VowelEditor.shellHeight", &prefs.shellHeight, 500);
-	Preferences_addInt (U"VowelEditor.soundFollowsMouse", &prefs.soundFollowsMouse, 1);
-	Preferences_addDouble (U"VowelEditor.f1min", &prefs.f1min, 200);
-	Preferences_addDouble (U"VowelEditor.f1max", &prefs.f1max, 1200);
-	Preferences_addDouble (U"VowelEditor.f2min", &prefs.f2min, 500);
-	Preferences_addDouble (U"VowelEditor.f2max", &prefs.f2max, 3500);
-	Preferences_addDouble (U"VowelEditor.f3", &prefs.f3, 2500);
-	Preferences_addDouble (U"VowelEditor.b3", &prefs.b3, 250);
-	Preferences_addDouble (U"VowelEditor.f4", &prefs.f4, 3500);
-	Preferences_addDouble (U"VowelEditor.b4", &prefs.b4, 350);
-	Preferences_addDouble (U"VowelEditor.markTraceEvery", &prefs.markTraceEvery, 0.05);
-	Preferences_addDouble (U"VowelEditor.extendDuration", &prefs.extendDuration, 0.05);
-	Preferences_addInt (U"VowelEditor.frequencyScale", &prefs.frequencyScale, 0);
-	Preferences_addInt (U"VowelEditor.axisOrientation", &prefs.axisOrientation, 0);
-	Preferences_addInt (U"VowelEditor.speakerType", &prefs.speakerType, 1);
-	Preferences_addInt (U"VowelEditor.marksDataset", &prefs.marksDataset, 2);
-	Preferences_addInt (U"VowelEditor.marksFontsize", &prefs.marksFontSize, 14);
-	createPersistentVowelMarks ();
-}
-
 static void copyVowelMarksInPreferences_volatile (Table me) {
-	long numberOfRows = prefs.numberOfMarks = my rows -> size;
+	long numberOfRows = prefs.numberOfMarks = my rows.size;
 	if (numberOfRows > 0) {
 		long col_vowel = Table_getColumnIndexFromColumnLabel (me, U"Vowel");
 		long col_f1 = Table_getColumnIndexFromColumnLabel (me, U"F1");
@@ -624,53 +631,69 @@ static void copyVowelMarksInPreferences_volatile (Table me) {
 					Table_getStringValue_Assert (me, i, col_f2), U"\t",
 					Table_getStringValue_Assert (me, i, col_size));
 				long length = str32len (mark.string);
-				if (length > Preferences_STRING_BUFFER_SIZE) Melder_throw (U"Preference mark", i, U"too many characters");
+				if (length >= Preferences_STRING_BUFFER_SIZE) Melder_throw (U"Preference mark ", i, U" contains too many characters");
 				str32cpy (prefs.mark[i-1], mark.string);
 			} else {
 				str32cpy (prefs.mark[i-1], U"x");
 			}
 		}
-		// The following code removes the superfluous mark preferences,
-		// *if* we had access to the thePreferences set (but we don't)
-		// autoMelderString markID;
-		// for (long i = VowelEditor_MAXIMUM_MARKERS; i > numberOfRows; i--) {
-		//		MelderString_copy (&markID, U"VowelEditor.mark", (i < 10 ? U"0" : U""), i);
-		//		long index = SortedSetOfString_lookUp (thePreferences, markID.string);
-		//		Collection_removeItem (thePreferences, index);
-		// }
 	}
 }
 
-static void createPersistentVowelMarks ()
-{
-	// Deadlock:
-	// This function is executed before the preferences are read from file and before we know how
-	// many vowel marks the user wants.
-	// However, to succesfully read the preferences from file we need the names of the preferences otherwise
-	// they will not be assigned a value.
-	// We therefore create fake names first and later fill them with data.
-	long numberOfMarks = VowelEditor_MAXIMUM_MARKERS;
-	Preferences_addInt (U"VowelEditor.numberOfMarks", &prefs.numberOfMarks, numberOfMarks);
-	for (long i = 1; i <= numberOfMarks; i++) {
-		Preferences_addString (Melder_cat (U"VowelEditor.mark", (i < 10 ? U"0" : U""), i), & prefs.mark[i-1][0], U"x");
+static void Table_addColumn_size (Table me, int size) {
+	long col_size = Table_findColumnIndexFromColumnLabel (me, U"Size");
+	if (col_size == 0) {
+		Table_appendColumn (me, U"Size");
+		for (long i = 1; i <= my rows.size; i ++) {
+			Table_setNumericValue (me, i, my numberOfColumns, size);
+		}
 	}
 }
 
-void VowelEditor_createTableFromVowelMarksInPreferences (VowelEditor me)
+static void VowelEditor_setMarks (VowelEditor me, int marksDataset, int speakerType, int fontSize) {
+	autoTable te;
+	const char32 *Type[4] = { U"", U"m", U"w", U"c" };
+	const char32 *Sex[3] = { U"", U"m", U"f"};
+	if (marksDataset == 1) {   // American-English
+		autoTable thee = Table_createFromPetersonBarneyData ();
+		te = Table_extractRowsWhereColumn_string (thee.get(), 1, kMelder_string_EQUAL_TO, Type[speakerType]);
+	} else if (marksDataset == 2) {   // Dutch
+		if (speakerType == 1 || speakerType == 2) {   // male + female from Pols van Nierop
+			autoTable thee = Table_createFromPolsVanNieropData ();
+			te = Table_extractRowsWhereColumn_string (thee.get(), 1, kMelder_string_EQUAL_TO, Sex[speakerType]);
+		} else {
+			autoTable thee = Table_createFromWeeninkData ();
+			te = Table_extractRowsWhereColumn_string (thee.get(), 1, kMelder_string_EQUAL_TO, Type[speakerType]);
+		}
+	} else if (marksDataset == 3) {   // none
+		my marks.reset();
+		return;
+	} else {   // leave as is
+		return;
+	}
+	autoTable newMarks = Table_collapseRows (te.get(), U"IPA", U"", U"F1 F2", U"", U"", U"");
+	long col_ipa = Table_findColumnIndexFromColumnLabel (newMarks.get(), U"IPA");
+	Table_setColumnLabel (newMarks.get(), col_ipa, U"Vowel");
+	Table_addColumn_size (newMarks.get(), fontSize);
+	my marks = newMarks.move();
+	copyVowelMarksInPreferences_volatile (my marks.get());
+}
+
+static void VowelEditor_createTableFromVowelMarksInPreferences (VowelEditor me)
 {
 	long numberOfRows = VowelEditor_MAXIMUM_MARKERS;
 	try {
-		autoTable marks = Table_createWithColumnNames (0, U"Vowel F1 F2 Size");
+		autoTable newMarks = Table_createWithColumnNames (0, U"Vowel F1 F2 Size");
 		long nmarksFound = 0;
 		for (long i = 1; i <= numberOfRows; i++) {
-			long numberOfTokens;
-			autoMelderTokens rowi (prefs.mark[i-1], &numberOfTokens);
+			autoMelderTokens rowi (prefs.mark[i-1]);
+			long numberOfTokens = rowi.count();
 			if (numberOfTokens < 4) { // we are done
 				break;
 			}
-			Table_appendRow (marks.peek());
+			Table_appendRow (newMarks.get());
 			for (long j = 1; j <= 4; j++) {
-				Table_setStringValue (marks.peek(), i, j, rowi[j]);
+				Table_setStringValue (newMarks.get(), i, j, rowi[j]);
 			}
 			nmarksFound++;
 		}
@@ -679,7 +702,7 @@ void VowelEditor_createTableFromVowelMarksInPreferences (VowelEditor me)
 			my marksDataset = prefs.marksDataset = 1;
 			VowelEditor_setMarks (me, my marksDataset, my speakerType, prefs.marksFontSize);
 		} else {
-			my marks = marks.transfer(); // my marks == NULL;
+			my marks = newMarks.move();
 		}
 	} catch (MelderError) {
 		Melder_throw (U"Cannot create Table from preferences. Default marks set.");
@@ -689,61 +712,22 @@ void VowelEditor_createTableFromVowelMarksInPreferences (VowelEditor me)
 	}
 }
 
-static void Table_addColumn_size (Table me, int size) {
-	long col_size = Table_findColumnIndexFromColumnLabel (me, U"Size");
-	if (col_size == 0) {
-		Table_appendColumn (me, U"Size");
-		for (long i = 1; i <= my rows -> size; i++) {
-			Table_setNumericValue (me, i, my numberOfColumns, size);
-		}
-	}
-}
-
-static void VowelEditor_setMarks (VowelEditor me, int marksDataset, int speakerType, int fontSize) {
-	autoTable te = 0;
-	const char32 *Type[4] = { U"", U"m", U"w", U"c" };
-	const char32 *Sex[3] = { U"", U"m", U"f"};
-	if (marksDataset == 1) { // American-English
-		autoTable thee = Table_createFromPetersonBarneyData ();
-		te.reset (Table_extractRowsWhereColumn_string (thee.peek(), 1, kMelder_string_EQUAL_TO, Type[speakerType]));
-	} else if (marksDataset == 2) { // Dutch
-		if (speakerType == 1 || speakerType == 2) { // male + female from Pols van Nierop
-			autoTable thee = Table_createFromPolsVanNieropData ();
-			te.reset (Table_extractRowsWhereColumn_string (thee.peek(), 1, kMelder_string_EQUAL_TO, Sex[speakerType]));
-		} else {
-			autoTable thee = Table_createFromWeeninkData ();
-			te.reset (Table_extractRowsWhereColumn_string (thee.peek(), 1, kMelder_string_EQUAL_TO, Type[speakerType]));
-		}
-	} else if (marksDataset == 3) { // None
-		forget (my marks);
-		return;
-	} else { // Leave as is
-		return;
-	}
-	autoTable thee = Table_collapseRows (te.peek(), U"IPA", U"", U"F1 F2", U"", U"", U"");
-	long col_ipa = Table_findColumnIndexFromColumnLabel (thee.peek(), U"IPA");
-	Table_setColumnLabel (thee.peek(), col_ipa, U"Vowel");
-	Table_addColumn_size (thee.peek(), fontSize);
-	forget (my marks);
-	my marks = thee.transfer();
-	copyVowelMarksInPreferences_volatile (my marks);
-}
-
 static void VowelEditor_getVowelMarksFromTableFile (VowelEditor me, MelderFile file)
 {
 	try {
-		autoData data =  (Data) Data_readFromFile (file);
-		if (! Thing_isa ((Thing) data.peek(), classTable)) Melder_throw (U"\"", MelderFile_name (file), U"\" is not a Table file");
-		autoTable marks = (Table) data.transfer();
+		autoDaata data = Data_readFromFile (file);
+		if (! Thing_isa (data.get(), classTable)) {
+			Melder_throw (U"\"", MelderFile_name (file), U"\" is not a Table file");
+		}
+		autoTable newMarks = data.static_cast_move <structTable> ();
 		// check if columns Vowel F1 & F2 are present
-		Table_getColumnIndexFromColumnLabel (marks.peek(), U"Vowel");
-		Table_getColumnIndexFromColumnLabel (marks.peek(), U"F1");
-		Table_getColumnIndexFromColumnLabel (marks.peek(), U"F2");
-		Table_addColumn_size (marks.peek(), prefs.marksFontSize);
-		forget (my marks);
-		my marks = marks.transfer();
+		Table_getColumnIndexFromColumnLabel (newMarks.get(), U"Vowel");
+		Table_getColumnIndexFromColumnLabel (newMarks.get(), U"F1");
+		Table_getColumnIndexFromColumnLabel (newMarks.get(), U"F2");
+		Table_addColumn_size (newMarks.get(), prefs.marksFontSize);
+		my marks = newMarks.move();
 		my marksDataset = prefs.marksDataset = 9999;
-		copyVowelMarksInPreferences_volatile (my marks);
+		copyVowelMarksInPreferences_volatile (my marks.get());
 		// our marks preferences are dynamic, save each time
 	} catch (MelderError) {
 		Melder_throw (U"Vowel marks from Table not shown.");
@@ -751,65 +735,54 @@ static void VowelEditor_getVowelMarksFromTableFile (VowelEditor me, MelderFile f
 }
 
 static void VowelEditor_setF3F4 (VowelEditor me, double f3, double b3, double f4, double b4) {
-	double xmin = my f2min, xmax = my f2max, dx = my f2max - my f2min, x1 = dx / 2;
+	double xmin = my f2min, xmax = my f2max, dx = my f2max - my f2min, x1 = dx / 2.0;
 	double dy = my f1max - my f1min, y1 = dy / 2;
 
-	if (my f3 == 0) {
+	if (! my f3) {
 		my f3 = Matrix_create (xmin, xmax, 1, dx, x1, my f1min, my f1max, 1, dy, y1);
 	}
-	if (my b3 == 0) {
+	if (! my b3) {
 		my b3 = Matrix_create (xmin, xmax, 1, dx, x1, my f1min, my f1max, 1, dy, y1);
 	}
-	if (my f4 == 0) {
+	if (! my f4) {
 		my f4 = Matrix_create (xmin, xmax, 1, dx, x1, my f1min, my f1max, 1, dy, y1);
 	}
-	if (my b4 == 0) {
+	if (! my b4) {
 		my b4 = Matrix_create (xmin, xmax, 1, dx, x1, my f1min, my f1max, 1, dy, y1);
 	}
-	my f3 -> z[1][1] = f3; my b3 -> z[1][1] = b3;
-	my f4 -> z[1][1] = f4; my b4 -> z[1][1] = b4;
-}
-
-static double Matrix_getValue (Matrix me, double x, double y) {
-	(void) x;
-	(void) y;
-	return my z[1][1];
-}
-
-static void VowelEditor_getF3F4 (VowelEditor me, double f1, double f2, double *f3, double *b3, double *f4, double *b4) {
-	*f3 = Matrix_getValue (my f3, f2, f1);
-	*b3 = Matrix_getValue (my b3, f2, f1);
-	*f4 = Matrix_getValue (my f4, f2, f1);
-	*b4 = Matrix_getValue (my b4, f2, f1);
+	my f3 -> z[1][1] = f3;
+	my b3 -> z[1][1] = b3;
+	my f4 -> z[1][1] = f4;
+	my b4 -> z[1][1] = b4;
 }
 
 static void VowelEditor_drawBackground (VowelEditor me, Graphics g) {
 	double x1, y1, x2, y2, f1, f2;
 
 	Graphics_setInner (g);
-	Graphics_setWindow (g, 0, 1, 0, 1);
-	Graphics_setGrey (g, 0);
+	Graphics_setWindow (g, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setGrey (g, 0.0);
 	Graphics_setLineType (g, Graphics_DRAWN);
-	Graphics_setLineWidth (g, 2);
-	Graphics_rectangle (g, 0, 1, 0, 1);
-	Graphics_setLineWidth (g, 1);
+	Graphics_setLineWidth (g, 2.0);
+	Graphics_rectangle (g, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setLineWidth (g, 1.0);
 	Graphics_setGrey (g, 0.5);
 	int fontSize = Graphics_inqFontSize (g);
 	// draw the marks
-	if (my marks != 0) {
-		long col_vowel = Table_getColumnIndexFromColumnLabel (my marks, U"Vowel");
-		long col_f1 = Table_getColumnIndexFromColumnLabel (my marks, U"F1");
-		long col_f2 = Table_getColumnIndexFromColumnLabel (my marks, U"F2");
-		long col_fs = Table_findColumnIndexFromColumnLabel (my marks, U"Size");
-		for (long i = 1; i <= my marks -> rows -> size; i++) {
-			const char32 *label = Table_getStringValue_Assert (my marks, i, col_vowel);
-			f1 = Table_getNumericValue_Assert (my marks, i, col_f1);
-			f2 = Table_getNumericValue_Assert (my marks, i, col_f2);
+	if (my marks) {
+		long col_vowel = Table_getColumnIndexFromColumnLabel (my marks.get(), U"Vowel");
+		long col_f1 = Table_getColumnIndexFromColumnLabel (my marks.get(), U"F1");
+		long col_f2 = Table_getColumnIndexFromColumnLabel (my marks.get(), U"F2");
+		long col_fs = Table_findColumnIndexFromColumnLabel (my marks.get(), U"Size");
+		for (long i = 1; i <= my marks -> rows.size; i ++) {
+			const char32 *label = Table_getStringValue_Assert (my marks.get(), i, col_vowel);
+			f1 = Table_getNumericValue_Assert (my marks.get(), i, col_f1);
+			f2 = Table_getNumericValue_Assert (my marks.get(), i, col_f2);
 			if (f1 >= my f1min && f1 <= my f1max && f2 >= my f2min && f2 <= my f2max) {
 				VowelEditor_getXYFromF1F2 (me, f1, f2, &x1, &y1);
 				int size = prefs.marksFontSize;
 				if (col_fs != 0) {
-					size = (int) floor (Table_getNumericValue_Assert (my marks, i, col_fs));
+					size = (int) floor (Table_getNumericValue_Assert (my marks.get(), i, col_fs));
 				}
 				Graphics_setFontSize (g, size);
 				Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
@@ -821,22 +794,21 @@ static void VowelEditor_drawBackground (VowelEditor me, Graphics g) {
 	// Draw the line F1=F2
 	//
 	VowelEditor_getXYFromF1F2 (me, my f2min, my f2min, &x1, &y1);
-	if (y1 >= 0 && y1 <= 1) {
+	if (y1 >= 0.0 && y1 <= 1.0) {
 		VowelEditor_getXYFromF1F2 (me, my f1max, my f1max, &x2, &y2);
-		if (x2 >= 0 && x2 <= 1) {
-			Polygon p = Polygon_create (3);
+		if (x2 >= 0.0 && x2 <= 1.0) {
+			autoPolygon p = Polygon_create (3);
 			p -> x[1] = x1; p -> y[1] = y1;
 			p -> x[2] = x2; p -> y[2] = y2;
 			p -> x[3] =  1; p -> y[3] =  0;
 			Graphics_fillArea (g, p -> numberOfPoints, & p -> x[1], & p -> y[1]);
 			// Polygon_paint does not work because of use of Graphics_setInner.
-			forget (p);
 			Graphics_line (g, x1, y1, x2, y2);
 		}
 	}
 	// Draw the grid
 	if (my grid.df1 < (my f1max - my f1min)) { // Horizontal lines
-		long iline = (my f1min + my grid.df1) / my grid.df1;
+		long iline = (my f1min + my grid.df1) / my grid.df1;   // FIXME: if truncating down is deliberate, then do `floor`
 		Graphics_setGrey (g, 0.5);
 		Graphics_setLineType (g, Graphics_DOTTED);
 		while ( (f1 = iline * my grid.df1) < my f1max) {
@@ -848,10 +820,10 @@ static void VowelEditor_drawBackground (VowelEditor me, Graphics g) {
 			iline++;
 		}
 		Graphics_setLineType (g, Graphics_DRAWN);
-		Graphics_setGrey (g, 0); // black
+		Graphics_setGrey (g, 0.0); // black
 	}
 	if (my grid.df2 < (my f2max - my f2min)) {
-		long iline = (my f2min + my grid.df2) / my grid.df2;
+		long iline = (my f2min + my grid.df2) / my grid.df2;   // FIXME: if truncating down is deliberate, then do `floor`
 		Graphics_setGrey (g, 0.5);
 		Graphics_setLineType (g, Graphics_DOTTED);
 		while ( (f2 = iline * my grid.df2) < my f2max) { // vert line
@@ -863,17 +835,18 @@ static void VowelEditor_drawBackground (VowelEditor me, Graphics g) {
 			iline++;
 		}
 		Graphics_setLineType (g, Graphics_DRAWN);
-		Graphics_setGrey (g, 0); // black
+		Graphics_setGrey (g, 0.0); // black
 	}
 	Graphics_unsetInner (g);
-	Graphics_setGrey (g, 0); // black
-	Graphics_markLeft (g, 0, 0, 1, 0, Melder_double (my f1max));
-	Graphics_markLeft (g, 1, 0, 1, 0, Melder_double (my f1min));
-	Graphics_markTop (g, 0, 0, 1, 0, Melder_double (my f2max));
-	Graphics_markTop (g, 1, 0, 1, 0, Melder_double (my f2min));
+	Graphics_setGrey (g, 0.0); // black
+	Graphics_markLeft (g, 0.0, false, true, false, Melder_double (my f1max));
+	Graphics_markLeft (g, 1.0, false, true, false, Melder_double (my f1min));
+	Graphics_markTop (g, 0.0, false, true, false, Melder_double (my f2max));
+	Graphics_markTop (g, 1.0, false, true, false, Melder_double (my f2min));
 
 }
 
+#if 0
 typedef struct {
 	long some_check_value;
 	long istart;
@@ -884,48 +857,41 @@ typedef struct {
 ** that could mess up the system like calling malloc() or free().
 */
 
-static int paCallback (const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer,
-                       const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, I) {
+static int paCallback (const void* /*inputBuffer*/, void* outputBuffer, unsigned long framesPerBuffer,
+                       const PaStreamCallbackTimeInfo* /*timeInfo*/, PaStreamCallbackFlags /*statusFlags*/, void *void_me) {
 	iam (paVowelData);
-	float *out = (float *) outputBuffer;
-	unsigned int i;
-	(void) inputBuffer; /* Prevent unused variable warning. */
-	(void) timeInfo;
-	(void) statusFlags;
+	float* out = (float*) outputBuffer;
 
-	for (i = 0; i < framesPerBuffer; i++) {
+	for (unsigned int i = 0; i < framesPerBuffer; i++) {
 		*out++ = my z[my istart + i]; /* left */
 		*out++ = my z[my istart + i]; /* right */
 	}
 	my istart += framesPerBuffer;
 	return 0;
 }
+#endif
 
-/********** MENU METHODS **********/
+#pragma mark - menu methods
 
-static void menu_cb_help (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	(void) me;
+static void menu_cb_help (VowelEditor /* me */, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"VowelEditor");
 }
 
-static void menu_cb_prefs (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_prefs (VowelEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Preferences", 0);
-		BOOLEAN (U"Sound-follows-mouse", 1)
+		BOOLEAN (U"Sound-follows-mouse", true)
 	EDITOR_OK
 		SET_INTEGER (U"Sound-follows-mouse", prefs.soundFollowsMouse)
 	EDITOR_DO
 		my frequencyScale = prefs.frequencyScale;
 		my axisOrientation = prefs.axisOrientation;
 		my soundFollowsMouse = prefs.soundFollowsMouse = GET_INTEGER (U"Sound-follows-mouse");
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_ranges_f1f2 (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"F1 (vert) and F2 (hor) view ranges", 0);
+static void menu_cb_ranges_f1f2 (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"F1 (vert) and F2 (hor) view ranges", nullptr);
 		POSITIVE (U"left F1 range (Hz)", U"200.0")
 		POSITIVE (U"right F1 range (Hz)", U"1000.0")
 		POSITIVE (U"left F2 range (Hz)", U"500.0")
@@ -942,46 +908,41 @@ static void menu_cb_ranges_f1f2 (EDITOR_ARGS) {
 		my f1max = prefs.f1max = GET_REAL (U"right F1 range");
 		my f2min = prefs.f2min = GET_REAL (U"left F2 range");
 		my f2max = prefs.f2max = GET_REAL (U"right F2 range");
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_publishSound (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_publishSound (VowelEditor me, EDITOR_ARGS_DIRECT) {
 	autoSound publish = VowelEditor_createTarget (me);
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extract_FormantGrid (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_extract_FormantGrid (VowelEditor me, EDITOR_ARGS_DIRECT) {
 	VowelEditor_updateVowel (me);
-	autoFormantGrid publish = FormantTier_to_FormantGrid (my vowel -> ft);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoFormantGrid publish = FormantTier_to_FormantGrid (my vowel -> ft.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extract_KlattGrid (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_extract_KlattGrid (VowelEditor me, EDITOR_ARGS_DIRECT) {
 	VowelEditor_updateVowel (me);
-	autoFormantGrid fg = FormantTier_to_FormantGrid (my vowel -> ft);
-	autoKlattGrid publish = KlattGrid_create (fg -> xmin, fg -> xmax, fg -> formants -> size, 0, 0, 0, 0, 0, 0);
-	KlattGrid_addVoicingAmplitudePoint (publish.peek(), fg -> xmin, 90);
-	KlattGrid_replacePitchTier (publish.peek(), my vowel -> pt);
-	KlattGrid_replaceFormantGrid (publish.peek(), KlattGrid_ORAL_FORMANTS, fg.peek());
-	Editor_broadcastPublication (me, publish.transfer());
+	autoFormantGrid fg = FormantTier_to_FormantGrid (my vowel -> ft.get());
+	autoKlattGrid publish = KlattGrid_create (fg -> xmin, fg -> xmax, fg -> formants.size, 0, 0, 0, 0, 0, 0);
+	KlattGrid_addVoicingAmplitudePoint (publish.get(), fg -> xmin, 90.0);
+	KlattGrid_replacePitchTier (publish.get(), my vowel -> pt.get());
+	KlattGrid_replaceFormantGrid (publish.get(), KlattGrid_ORAL_FORMANTS, fg.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extract_PitchTier (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_extract_PitchTier (VowelEditor me, EDITOR_ARGS_DIRECT) {
 	VowelEditor_updateVowel (me);
-	autoPitchTier publish = Data_copy (my vowel -> pt);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoPitchTier publish = Data_copy (my vowel -> pt.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_drawTrajectory (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Draw trajectory", 0)
+static void menu_cb_drawTrajectory (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw trajectory", nullptr)
 		my v_form_pictureWindow (cmd);
-		BOOLEAN (U"Garnish", 1)
+		BOOLEAN (U"Garnish", true)
 	EDITOR_OK
 		my v_ok_pictureWindow (cmd);
 	EDITOR_DO
@@ -991,14 +952,13 @@ static void menu_cb_drawTrajectory (EDITOR_ARGS) {
 		if (garnish) {
 			VowelEditor_drawBackground (me, my pictureGraphics);
 		}
-		FormantTier_drawF1F2Trajectory (my vowel -> ft, my pictureGraphics, my f1min, my f1max, my f2min, my f2max, my markTraceEvery, my width);
+		FormantTier_drawF1F2Trajectory (my vowel -> ft.get(), my pictureGraphics, my f1min, my f1max, my f2min, my f2max, my markTraceEvery, my width);
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
-static void menu_cb_showOneVowelMark (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Show one vowel mark", 0);
+static void menu_cb_showOneVowelMark (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Show one vowel mark", nullptr);
 		POSITIVE (U"F1 (Hz)", U"300.0")
 		POSITIVE (U"F2 (Hz)", U"600.0")
 		WORD (U"Mark", U"u")
@@ -1009,23 +969,22 @@ static void menu_cb_showOneVowelMark (EDITOR_ARGS) {
 		char32 *label = GET_STRING (U"Mark");
 		if (f1 >= my f1min && f1 <= my f1max && f2 >= my f2min && f2 <= my f2max) {
 			long irow = 1;
-			if (my marks == NULL) {
+			if (! my marks) {
 				my marks = Table_createWithColumnNames (1, U"IPA F1 F2 Colour");
 			} else {
-				Table_appendRow (my marks);
+				Table_appendRow (my marks.get());
 			}
-			irow = my marks -> rows -> size;
-			Table_setStringValue (my marks, irow, 1, label);
-			Table_setNumericValue (my marks, irow, 2, f1);
-			Table_setNumericValue (my marks, irow, 3, f2);
-			Graphics_updateWs (my g);
+			irow = my marks -> rows.size;
+			Table_setStringValue (my marks.get(), irow, 1, label);
+			Table_setNumericValue (my marks.get(), irow, 2, f1);
+			Table_setNumericValue (my marks.get(), irow, 3, f2);
+			Graphics_updateWs (my graphics.get());
 		}
 	EDITOR_END
 }
 
-static void menu_cb_showVowelMarks (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Show vowel marks", 0);
+static void menu_cb_showVowelMarks (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Show vowel marks", nullptr);
 		LABEL (U"note", U"")
 		OPTIONMENU (U"Data set", 1)
 			OPTION (U"American English")
@@ -1046,22 +1005,22 @@ static void menu_cb_showVowelMarks (EDITOR_ARGS) {
 		my speakerType = prefs.speakerType = GET_INTEGER (U"Speaker");
 		my marksFontSize = prefs.marksFontSize = GET_INTEGER (U"Font size");
 		VowelEditor_setMarks (me, my marksDataset, my speakerType, my marksFontSize);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_showVowelMarksFromTableFile (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_showVowelMarksFromTableFile (VowelEditor me, EDITOR_ARGS_FORM) {
+	(void) narg;
+	(void) interpreter;
 	EDITOR_FORM_READ (U"VowelEditor: Show vowel marks from Table file", U"VowelEditor: Show vowel marks from Table file...");
 	EDITOR_DO_READ
 		VowelEditor_getVowelMarksFromTableFile (me, file);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_setF0 (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Set F0", 0);
+static void menu_cb_setF0 (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Set F0", nullptr);
 		POSITIVE (U"Start F0 (Hz)", U"150.0")
 		REAL (U"Slope (oct/s)", U"0.0")
 	EDITOR_OK
@@ -1070,15 +1029,13 @@ static void menu_cb_setF0 (EDITOR_ARGS) {
 		checkF0 (&my f0, &f0);
 		my f0.start = f0;
 		my f0.slopeOctPerSec = GET_REAL (U"Slope");
-		VowelEditor_setSource (me);
 		GuiText_setString (my f0TextField, Melder_double (my f0.start));
 		GuiText_setString (my f0SlopeTextField, Melder_double (my f0.slopeOctPerSec));
 	EDITOR_END
 }
 
-static void menu_cb_setF3F4 (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Set F3 & F4", 0);
+static void menu_cb_setF3F4 (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Set F3 & F4", nullptr);
 		POSITIVE (U"F3 (Hz)", U"2500.0")
 		POSITIVE (U"B3 (Hz)", U"250.0")
 		POSITIVE (U"F4 (Hz)", U"3500.0")
@@ -1093,19 +1050,18 @@ static void menu_cb_setF3F4 (EDITOR_ARGS) {
 		VowelEditor_setF3F4 (me, f3, b3, f4, b4);
 	EDITOR_END
 }
-static void menu_cb_reverseTrajectory (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
+static void menu_cb_reverseTrajectory (VowelEditor me, EDITOR_ARGS_DIRECT) {
 	VowelEditor_Vowel_reverseFormantTier (me);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 }
 
 static void VowelEditor_Vowel_addData (VowelEditor me, Vowel thee, double time, double f1, double f2, double f0) {
 	autoFormantPoint fp = FormantPoint_create (time);
 	double f3, b3, f4, b4;
 	fp -> formant[0] = f1;
-	fp -> bandwidth[0] = f1 / 10;
+	fp -> bandwidth[0] = f1 / 10.0;
 	fp -> formant[1] = f2;
-	fp -> bandwidth[1] = f2 / 10;
+	fp -> bandwidth[1] = f2 / 10.0;
 	VowelEditor_getF3F4 (me, f1, f2, &f3, &b3, &f4, &b4);
 	fp -> formant[2] = f3;
 	fp -> bandwidth[2] = b3;
@@ -1113,53 +1069,12 @@ static void VowelEditor_Vowel_addData (VowelEditor me, Vowel thee, double time,
 	fp -> bandwidth[3] = b4;
 	fp -> numberOfFormants = 4;
 
-	Collection_addItem (thy ft -> points, fp.transfer());
-	RealTier_addPoint (thy pt, time, f0);
+	thy ft -> points. addItem_move (fp.move());
+	RealTier_addPoint (thy pt.get(), time, f0);
 }
 
-static void checkF1F2 (VowelEditor me, double *f1, double *f2) {
-	if (*f1 < my f1min) {
-		*f1 = my f1min;
-	}
-	if (*f1 > my f1max) {
-		*f1 = my f1max;
-	}
-	if (*f2 < my f2min) {
-		*f2 = my f2min;
-	}
-	if (*f2 > my f2max) {
-		*f1 = my f2max;
-	}
-}
-
-static void checkF0 (structVowelEditor_F0 *f0p, double *f0) {
-	if (*f0 == NUMundefined) {
-		*f0 = f0p -> start;
-	}
-	if (*f0 > f0p -> maximum) {
-		*f0 = f0p -> maximum;
-	}
-	if (*f0 < f0p -> minimum) {
-		*f0 = f0p -> minimum;
-	}
-}
-
-static void	checkXY (double *x, double *y) {
-	if (*x < 0) {
-		*x = 0;
-	} else if (*x > 1) {
-		*x = 1;
-	}
-	if (*y < 0) {
-		*y = 0;
-	} else if (*y > 1) {
-		*y = 1;
-	}
-}
-
-static void menu_cb_newTrajectory (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"New Trajectory", 0);
+static void menu_cb_newTrajectory (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"New Trajectory", nullptr);
 		POSITIVE (U"Start F1 (Hz)", U"700.0")
 		POSITIVE (U"Start F2 (Hz)", U"1200.0")
 		POSITIVE (U"End F1 (Hz)", U"350.0")
@@ -1167,40 +1082,38 @@ static void menu_cb_newTrajectory (EDITOR_ARGS) {
 		POSITIVE (U"Duration (s)", U"0.25")
 	EDITOR_OK
 	EDITOR_DO
-		double f0, f1, f2, time, duration = GET_REAL (U"Duration");
-		autoVowel vowel = Vowel_create (duration);
-		time = 0;
-		f0 =  getF0 (&my f0, time);
-		f1 = GET_REAL (U"Start F1");
-		f2 = GET_REAL (U"Start F2");
+		double duration = GET_REAL (U"Duration");
+		autoVowel newVowel = Vowel_create (duration);
+		double time = 0.0;
+		double f0 = getF0 (&my f0, time);
+		double f1 = GET_REAL (U"Start F1");
+		double f2 = GET_REAL (U"Start F2");
 		checkF1F2 (me, &f1, &f2);
-		VowelEditor_Vowel_addData (me, vowel.peek(), time, f1, f2, f0);
+		VowelEditor_Vowel_addData (me, newVowel.get(), time, f1, f2, f0);
 		time = duration;
-		f0 =  getF0 (&my f0, time);
+		f0 = getF0 (&my f0, time);
 		f1 = GET_REAL (U"End F1");
 		f2 = GET_REAL (U"End F2");
 		checkF1F2 (me, &f1, &f2);
-		VowelEditor_Vowel_addData (me, vowel.peek(), time, f1, f2, f0);
+		VowelEditor_Vowel_addData (me, newVowel.get(), time, f1, f2, f0);
 
 		GuiText_setString (my durationTextField, Melder_double (MICROSECPRECISION (duration)));
-		forget (my vowel);
-		my vowel = vowel.transfer();
+		my vowel = newVowel.move();
 
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_extendTrajectory (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Extend Trajectory", 0);
+static void menu_cb_extendTrajectory (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Extend Trajectory", nullptr);
 		POSITIVE (U"To F1 (Hz)", U"500.0")
 		POSITIVE (U"To F2 (Hz)", U"1500.0")
 		POSITIVE (U"Extra duration (s)", U"0.1")
 	EDITOR_OK
 	EDITOR_DO
-		Vowel thee = my vowel;
+		Vowel thee = my vowel.get();
 		double newDuration = thy xmax + GET_REAL (U"Extra duration");
-		double f0 =  getF0 (&my f0, newDuration);
+		double f0 = getF0 (&my f0, newDuration);
 		double f1 = GET_REAL (U"To F1");
 		double f2 = GET_REAL (U"To F2");
 		thy xmax = thy pt -> xmax = thy ft -> xmax = newDuration;
@@ -1208,13 +1121,12 @@ static void menu_cb_extendTrajectory (EDITOR_ARGS) {
 		VowelEditor_Vowel_addData (me, thee, newDuration, f1, f2, f0);
 
 		GuiText_setString (my durationTextField, Melder_double (MICROSECPRECISION (newDuration)));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_modifyTrajectoryDuration (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Modify duration", 0);
+static void menu_cb_modifyTrajectoryDuration (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Modify duration", nullptr);
 		POSITIVE (U"New duration (s)", U"0.5")
 	EDITOR_OK
 	EDITOR_DO
@@ -1222,21 +1134,19 @@ static void menu_cb_modifyTrajectoryDuration (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_shiftTrajectory (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Shift trajectory", 0);
+static void menu_cb_shiftTrajectory (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Shift trajectory", nullptr);
 		REAL (U"F1 (semitones)", U"0.5")
 		REAL (U"F2 (semitones)", U"0.5")
 	EDITOR_OK
 	EDITOR_DO
 		VowelEditor_shiftF1F2 (me, GET_REAL (U"F1"), GET_REAL (U"F2"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-static void menu_cb_showTrajectoryTimeMarksEvery (EDITOR_ARGS) {
-	EDITOR_IAM (VowelEditor);
-	EDITOR_FORM (U"Show trajectory time marks every", 0);
+static void menu_cb_showTrajectoryTimeMarksEvery (VowelEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Show trajectory time marks every", nullptr);
 		REAL (U"Distance (s)", U"0.05")
 	EDITOR_OK
 		SET_REAL (U"Distance", my markTraceEvery)
@@ -1245,50 +1155,40 @@ static void menu_cb_showTrajectoryTimeMarksEvery (EDITOR_ARGS) {
 		if (my markTraceEvery < 0) {
 			my markTraceEvery = 0;
 		}
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
-/********** BUTTON METHODS **********/
+#pragma mark - button methods
 
-static void gui_button_cb_play (I, GuiButtonEvent event) {
-	(void) event;
-	iam (VowelEditor);
+static void gui_button_cb_play (VowelEditor me, GuiButtonEvent /* event */) {
 	autoSound thee = VowelEditor_createTarget (me);
-	Sound_play (thee.peek(), 0, 0);
-	Graphics_updateWs (my g);
+	Sound_play (thee.get(), nullptr, nullptr);
+	Graphics_updateWs (my graphics.get());
 }
 
-static void gui_button_cb_publish (I, GuiButtonEvent event) {
-	(void) event;
-	iam (VowelEditor);
+static void gui_button_cb_publish (VowelEditor me, GuiButtonEvent /* event */) {
 	autoSound publish = VowelEditor_createTarget (me);
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void gui_button_cb_reverse (I, GuiButtonEvent event) {
-	(void) event;
-	iam (VowelEditor);
-
+static void gui_button_cb_reverse (VowelEditor me, GuiButtonEvent /* event */) {
 	VowelEditor_Vowel_reverseFormantTier (me);
-	struct structGuiButtonEvent play_event = { 0 };
-	gui_button_cb_play (me, &play_event);
+	struct structGuiButtonEvent play_event { 0 };
+	gui_button_cb_play (me, & play_event);
 }
 
-/* Main drawing routine: it's been called after every call to Graphics_updateWs (g) */
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (VowelEditor);
-	Melder_assert (me != NULL);
-	(void) event;
-	Melder_assert (my vowel != NULL);
+static void gui_drawingarea_cb_expose (VowelEditor me, GuiDrawingArea_ExposeEvent /* event */) {
+	Melder_assert (me);
+	Melder_assert (my vowel);
 	double ts = my vowel -> xmin, te = my vowel -> xmax;
-	FormantTier ft = (FormantTier) my vowel -> ft;
-	Melder_assert (ft != NULL);
+	FormantTier ft = my vowel -> ft.get();
+	Melder_assert (ft);
 	static MelderString statusInfo { 0 };
-	if (my g == 0) {
-		return;    // Could be the case in the very beginning.
+	if (! my graphics) {
+		return;   // could be the case in the very beginning
 	}
-	Graphics_clearWs (my g);
+	Graphics_clearWs (my graphics.get());
 
 	appendF1F2F0 (&statusInfo, STATUSINFO_STARTINTR0, FormantTier_getValueAtTime (ft, 1, ts),
 	              FormantTier_getValueAtTime (ft, 2, ts), getF0 (&my f0, ts), STATUSINFO_ENDING);
@@ -1300,49 +1200,33 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 	GuiLabel_setText (my endInfo, statusInfo.string);
 	MelderString_empty (&statusInfo);
 
-	Graphics_setGrey (my g, 0.9);
-	Graphics_fillRectangle (my g, 0, 1, 0, 1);
-	Graphics_setInner (my g);
-	Graphics_setWindow (my g, 0, 1, 0, 1);
-	Graphics_setGrey (my g, 1);
-	Graphics_fillRectangle (my g, 0, 1, 0, 1);
-	Graphics_unsetInner (my g);
-	Graphics_setGrey (my g, 0);
-
-	VowelEditor_drawBackground (me, my g);
-	Melder_assert (me != NULL);
-	Melder_assert (my vowel != NULL);
-	Melder_assert (my vowel -> ft != NULL);
-	FormantTier_drawF1F2Trajectory (my vowel -> ft, my g, my f1min, my f1max, my f2min, my f2max, my markTraceEvery, my width);
-}
-
-static void gui_drawingarea_cb_resize__ (I, GuiDrawingAreaResizeEvent event) {
-	iam (VowelEditor);
-	(void) me;
-	(void) event;
-	if (me == NULL || my g == NULL) {
-		return;
+	Graphics_setGrey (my graphics.get(), 0.9);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setInner (my graphics.get());
+	Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setGrey (my graphics.get(), 1.0);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_unsetInner (my graphics.get());
+	Graphics_setGrey (my graphics.get(), 0.0);
+
+	VowelEditor_drawBackground (me, my graphics.get());
+	Melder_assert (me);
+	Melder_assert (my vowel);
+	Melder_assert (my vowel -> ft);
+	FormantTier_drawF1F2Trajectory (my vowel -> ft.get(), my graphics.get(), my f1min, my f1max, my f2min, my f2max, my markTraceEvery, my width);
+}
+
+static void gui_drawingarea_cb_resize (VowelEditor me, GuiDrawingArea_ResizeEvent event) {
+	Melder_assert (me);
+	if (! my graphics) {
+		return;   // could be the case in the very beginning
 	}
-	my width  = GuiControl_getWidth  (my drawingArea);
-	my height = GuiControl_getHeight (my drawingArea);
-	Graphics_setWsViewport (my g, 0, my width , 0, my height);
-	Graphics_setWsWindow (my g, 0, my width, 0, my height);
-	Graphics_setViewport (my g, 0, my width, 0, my height);
-	Graphics_updateWs (my g);
-}
-
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (VowelEditor);
-	Melder_assert (me != NULL);
-	if (my g == NULL) {
-		return;    // Could be the case in the very beginning.
-	}
-	Graphics_setWsViewport (my g, 0, event -> width, 0, event -> height);
+	Graphics_setWsViewport (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
 	my width = event -> width;
 	my height = event -> height;
-	Graphics_setWsWindow (my g, 0, my width, 0, my height);
-	Graphics_setViewport (my g, 0, my width, 0, my height);
-	Graphics_updateWs (my g);
+	Graphics_setWsWindow (my graphics.get(), 0.0, my width, 0.0, my height);
+	Graphics_setViewport (my graphics.get(), 0.0, my width, 0.0, my height);
+	Graphics_updateWs (my graphics.get());
 
 	/* Save the current shell size as the user's preference for a new VowelEditor. */
 
@@ -1351,7 +1235,6 @@ static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
 }
 
 static void VowelEditor_Vowel_updateTiers (VowelEditor me, Vowel thee, double time, double x, double y) {
-	double f3, b3, f4, b4;
 	if (time > thy xmax) {
 		thy xmax = time;
 		thy ft -> xmax = time;
@@ -1361,52 +1244,51 @@ static void VowelEditor_Vowel_updateTiers (VowelEditor me, Vowel thee, double ti
 	autoFormantPoint point = FormantPoint_create (time);
 
 	VowelEditor_getF1F2FromXY (me, x, y, &f1, &f2);
+	double f3, b3, f4, b4;
 	VowelEditor_getF3F4 (me, f1, f2, &f3, &b3, &f4, &b4);
 
 	point -> formant[0] = f1;
-	point -> bandwidth[0] = f1 / 10;
+	point -> bandwidth[0] = f1 / 10.0;
 	point -> formant[1] = f2;
-	point -> bandwidth[1] = f2 / 10;
+	point -> bandwidth[1] = f2 / 10.0;
 	point -> formant[2] = f3;
 	point -> bandwidth[2] = b3;
 	point -> formant[3] = f4;
 	point -> bandwidth[3] = b4;
 	point -> numberOfFormants = 4;
-	Collection_addItem (thy ft -> points, point.transfer());
-	RealTier_addPoint (thy pt, time, f0);
+	thy ft -> points. addItem_move (point.move());
+	RealTier_addPoint (thy pt.get(), time, f0);
 }
 
 // shift key always extends what already is.
 // Special case : !soundFollowsMouse. The first click just defines the vowel's first f1f2-position,
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (VowelEditor);
-	(void) event;
-	Vowel thee = 0; autoVowel athee = 0;
-	double x, y, xb, yb, tb, t, dt = 0;
+static void gui_drawingarea_cb_click (VowelEditor me, GuiDrawingArea_ClickEvent event) {
+	Vowel thee = nullptr; autoVowel athee;
+	double x, y, xb, yb, tb, t, dt = 0.0;
 	double t0 = Melder_clock ();
 	long iskipped = 0;
-	struct structGuiButtonEvent gb_event = { 0 };
-	Graphics_setInner (my g);
+	struct structGuiButtonEvent gb_event { 0 };
+	Graphics_setInner (my graphics.get());
 
-	Graphics_getMouseLocation (my g, & x, & y);
+	Graphics_getMouseLocation (my graphics.get(), & x, & y);
 	checkXY (&x, &y);
 
 	if (event -> shiftKeyPressed) {
 		VowelEditor_updateExtendDuration (me);
 		(my shiftKeyPressed) ++;
-		thee = my vowel;
+		thee = my vowel.get();
 		dt = thy xmax + my extendDuration;
-		t = 0 + dt;
+		t = 0.0 + dt;
 		VowelEditor_Vowel_updateTiers (me, thee, t, x, y);
 		GuiText_setString (my durationTextField, Melder_double (t));
 		if (! my soundFollowsMouse) {
 			goto end;
 		}
 	} else {
-		t = 0;
+		t = 0.0;
 		my shiftKeyPressed = 0;
-		athee.reset (Vowel_create (MINIMUM_SOUND_DURATION));
-		thee = athee.peek();
+		athee = Vowel_create (MINIMUM_SOUND_DURATION);
+		thee = athee.get();
 		VowelEditor_Vowel_updateTiers (me, thee, t, x, y);
 		GuiText_setString (my durationTextField, Melder_double (t));
 		if (! my soundFollowsMouse) {
@@ -1415,11 +1297,11 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 		}
 	}
 
-	Graphics_xorOn (my g, Graphics_BLUE);
-	while (Graphics_mouseStillDown (my g)) {
+	Graphics_xorOn (my graphics.get(), Graphics_BLUE);
+	while (Graphics_mouseStillDown (my graphics.get())) {
 		xb = x, yb = y, tb = t;
 		t = Melder_clock () - t0 + dt; // Get relative time in seconds from the clock
-		Graphics_getMouseLocation (my g, & x, & y);
+		Graphics_getMouseLocation (my graphics.get(), & x, & y);
 		checkXY (&x, &y);
 		// If the new point equals the previous one: no tier update
 		if (xb == x && yb == y) {
@@ -1431,7 +1313,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 			VowelEditor_Vowel_updateTiers (me, thee, tb, xb, yb);
 		}
 		iskipped = 0;
-		Graphics_line (my g, xb, yb, x, y);
+		Graphics_line (my graphics.get(), xb, yb, x, y);
 
 		VowelEditor_Vowel_updateTiers (me, thee, t, x, y);
 		GuiText_setString (my durationTextField, Melder_double (MICROSECPRECISION (t)));
@@ -1445,48 +1327,38 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	GuiText_setString (my durationTextField, Melder_double (MICROSECPRECISION (t)));
 	VowelEditor_Vowel_updateTiers (me, thee, t, x, y);
 
-	Graphics_xorOff (my g);
+	Graphics_xorOff (my graphics.get());
 
 end:
-	Graphics_unsetInner (my g);
+	Graphics_unsetInner (my graphics.get());
 
-	if (my shiftKeyPressed == 0) {
-		forget (my vowel);
-		my vowel = athee.transfer();
+	if (! my shiftKeyPressed) {
+		my vowel = athee.move();
 	}
+	Melder_assert (! athee);
 	gui_button_cb_play (me, & gb_event);
 }
 
-static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
-	iam (VowelEditor);
-	(void) me;
-	(void) event;
+#if 0
+static void gui_drawingarea_cb_key (VowelEditor /* me */, GuiDrawingArea_KeyEvent /* event */) {
 }
+#endif
 
-static void cb_publish (Editor editor, void *closure, Data publish) {
-	(void) editor;
-	(void) closure;
+static void cb_publish (Editor /*editor*/, autoDaata publish) {
 	try {
-		praat_new (publish, U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		praat_new (publish.move(), U"");
 		praat_updateSelection ();
 	} catch (MelderError) {
 		Melder_flushError ();
 	}
 }
 
-static void updateWidgets (I) {
+static void updateWidgets (void *void_me) {
 	iam (VowelEditor);
 	(void) me;
 }
 
-void structVowelEditor :: v_destroy () {
-	forget (g);
-	forget (marks);
-	forget (source);
-	forget (target);
-	forget (vowel);
-	forget (f3); forget (b3);
-	forget (f4); forget (b4);
+void structVowelEditor :: v_destroy () noexcept {
 	VowelEditor_Parent :: v_destroy ();
 }
 
@@ -1495,30 +1367,30 @@ void structVowelEditor :: v_createMenus () {
 
 	Editor_addMenu (this, U"View", 0);
 	Editor_addCommand (this, U"File", U"Preferences...", 0, menu_cb_prefs);
-	Editor_addCommand (this, U"File", U"-- publish data --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- publish data --", 0, nullptr);
 	Editor_addCommand (this, U"File", U"Publish Sound", 0, menu_cb_publishSound);
 	Editor_addCommand (this, U"File", U"Extract KlattGrid", 0, menu_cb_extract_KlattGrid);
 	Editor_addCommand (this, U"File", U"Extract FormantGrid", 0, menu_cb_extract_FormantGrid);
 	Editor_addCommand (this, U"File", U"Extract PitchTier", 0, menu_cb_extract_PitchTier);
-	Editor_addCommand (this, U"File", U"-- drawing --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- drawing --", 0, nullptr);
 	Editor_addCommand (this, U"File", U"Draw trajectory...", 0, menu_cb_drawTrajectory);
-	Editor_addCommand (this, U"File", U"-- scripting --", 0, NULL);
-	Editor_addCommand (this, U"Edit", U"-- f0 --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- scripting --", 0, nullptr);
+	Editor_addCommand (this, U"Edit", U"-- f0 --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Set F0...", 0, menu_cb_setF0);
 	Editor_addCommand (this, U"Edit", U"Set F3 & F4...", 0, menu_cb_setF3F4);
-	Editor_addCommand (this, U"Edit", U"-- trajectory commands --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- trajectory commands --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Reverse trajectory", 0, menu_cb_reverseTrajectory);
 	Editor_addCommand (this, U"Edit", U"Modify trajectory duration...", 0, menu_cb_modifyTrajectoryDuration);
 	Editor_addCommand (this, U"Edit", U"New trajectory...", 0, menu_cb_newTrajectory);
 	Editor_addCommand (this, U"Edit", U"Extend trajectory...", 0, menu_cb_extendTrajectory);
 	Editor_addCommand (this, U"Edit", U"Shift trajectory...", 0, menu_cb_shiftTrajectory);
 	Editor_addCommand (this, U"View", U"F1 & F2 range...", 0, menu_cb_ranges_f1f2);
-	Editor_addCommand (this, U"View", U"--show vowel marks--", 0, NULL);
+	Editor_addCommand (this, U"View", U"--show vowel marks--", 0, nullptr);
 	Editor_addCommand (this, U"View", U"Show one vowel mark...", Editor_HIDDEN, menu_cb_showOneVowelMark);
 	Editor_addCommand (this, U"View", U"Show vowel marks...", Editor_HIDDEN, menu_cb_showVowelMarks);
 	Editor_addCommand (this, U"View", U"Show vowel marks from fixed set...", 0, menu_cb_showVowelMarks);
 	Editor_addCommand (this, U"View", U"Show vowel marks from Table file...", 0, menu_cb_showVowelMarksFromTableFile);
-	Editor_addCommand (this, U"View", U"--show trajectory time marks--", 0, NULL);
+	Editor_addCommand (this, U"View", U"--show trajectory time marks--", 0, nullptr);
 	Editor_addCommand (this, U"View", U"Show trajectory time marks every...", 0, menu_cb_showTrajectoryTimeMarksEvery);
 }
 
@@ -1578,46 +1450,24 @@ void structVowelEditor :: v_createChildren ()
 	//drawingArea = GuiDrawingArea_createShown (d_windowForm, 0, 0, Machine_getMenuBarHeight (), -MARGIN_BOTTOM,
 	//	gui_drawingarea_cb_expose, gui_drawingarea_cb_click, gui_drawingarea_cb_key, gui_drawingarea_cb_resize, this, 0);
 	drawingArea = GuiDrawingArea_createShown (d_windowForm, 0, 0, Machine_getMenuBarHeight (), -MARGIN_BOTTOM,
-		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, gui_drawingarea_cb_resize, this, 0);
+		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, gui_drawingarea_cb_resize, this, 0);
 	width  = GuiControl_getWidth  (drawingArea);
 	height = GuiControl_getHeight (drawingArea);
 }
 
-static void VowelEditor_setSource (VowelEditor me) {
-	autoPitchTier pt = VowelEditor_to_PitchTier (me, my maximumDuration);
-	autoSound thee = PitchTier_to_Sound_pulseTrain (pt.peek(), my f0.samplingFrequency, my f0.adaptFactor, my f0.adaptTime, my f0.interpolationDepth, 0);
-	if (my source != 0) {
-		forget (my source);
-	}
-	my source = thee.transfer();
-}
-//
-static Sound VowelEditor_createTarget (VowelEditor me) {
-	try {
-		VowelEditor_updateVowel (me); // update pitch and duration
-		autoSound thee = Vowel_to_Sound_pulses (my vowel, 44100, 0.7, 0.05, 30);
-		Vector_scale (thee.peek(), 0.99);
-		Sound_fadeIn (thee.peek(), 0.005, 1);
-		Sound_fadeOut (thee.peek(), 0.005);
-		return thee.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Target Sound not created.");
-	}
-}
-
-VowelEditor VowelEditor_create (const char32 *title, Data data) {
+autoVowelEditor VowelEditor_create (const char32 *title, Daata data) {
 	try {
 		trace (U"enter");
 		autoVowelEditor me = Thing_new (VowelEditor);
-		Melder_assert (me.peek() != NULL);
-		Editor_init (me.peek(), 0, 0, prefs.shellWidth, prefs.shellHeight, title, data);
+		Melder_assert (me.get());
+		Editor_init (me.get(), 0, 0, prefs.shellWidth, prefs.shellHeight, title, data);
 #if motif
 		Melder_assert (XtWindow (my drawingArea -> d_widget));
 #endif
-		my g = Graphics_create_xmdrawingarea (my drawingArea);
-		Melder_assert (my g != NULL);
-		Graphics_setFontSize (my g, 12);
-		Editor_setPublicationCallback (me.peek(), cb_publish, NULL);
+		my graphics = Graphics_create_xmdrawingarea (my drawingArea);
+		Melder_assert (my graphics);
+		Graphics_setFontSize (my graphics.get(), 12);
+		Editor_setPublicationCallback (me.get(), cb_publish);
 
 		my f1min = prefs.f1min;
 		my f1max = prefs.f1max;
@@ -1630,22 +1480,20 @@ VowelEditor VowelEditor_create (const char32 *title, Data data) {
 		my marksFontSize = prefs.marksFontSize;
 		my soundFollowsMouse = prefs.soundFollowsMouse;
 		if (my marksDataset > 3) { // TODO variable??
-			VowelEditor_createTableFromVowelMarksInPreferences (me.peek());
+			VowelEditor_createTableFromVowelMarksInPreferences (me.get());
 		} else {
-			VowelEditor_setMarks (me.peek(), my marksDataset, my speakerType, 14);
+			VowelEditor_setMarks (me.get(), my marksDataset, my speakerType, 14);
 		}
-		VowelEditor_setF3F4 (me.peek(), prefs.f3, prefs.b3, prefs.f4, prefs.b4);
+		VowelEditor_setF3F4 (me.get(), prefs.f3, prefs.b3, prefs.f4, prefs.b4);
 		my maximumDuration = BUFFER_SIZE_SEC;
 		my extendDuration = prefs.extendDuration;
-		if (my data != 0) {
-			my vowel = Data_copy ( (Vowel) data);
+		if (my data) {
+			my vowel = Data_copy (static_cast<Vowel> (data));
 		} else {
 			my vowel = Vowel_create_twoFormantSchwa (0.2);
 		}
 		my markTraceEvery = prefs.markTraceEvery;
 		my f0 = f0default;
-		VowelEditor_setSource (me.peek());
-		my target = Sound_createSimple (1, my maximumDuration, my f0.samplingFrequency);
 		GuiText_setString (my f0TextField, Melder_double (my f0.start));
 		GuiText_setString (my f0SlopeTextField, Melder_double (my f0.slopeOctPerSec));
 		GuiText_setString (my durationTextField, U"0.2"); // Source has been created
@@ -1653,17 +1501,17 @@ VowelEditor VowelEditor_create (const char32 *title, Data data) {
 		my grid = griddefault;
 {
 	// This exdents because it's a hack:
-	struct structGuiDrawingAreaResizeEvent event = { my drawingArea, 0 };
+	struct structGuiDrawingArea_ResizeEvent event { my drawingArea, 0 };
 	event. width  = GuiControl_getWidth  (my drawingArea);
 	event. height = GuiControl_getHeight (my drawingArea);
-	gui_drawingarea_cb_resize (me.peek(), & event);
+	gui_drawingarea_cb_resize (me.get(), & event);
 }
-		//struct structGuiDrawingAreaResizeEvent event = { 0 };
+		//struct structGuiDrawingArea_ResizeEvent event { 0 };
 		//event.widget = my drawingArea;
 		//gui_drawingarea_cb_resize (me, & event);
-		updateWidgets (me.peek());
+		updateWidgets (me.get());
 		trace (U"exit");
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VowelEditor not created.");
 	}
diff --git a/dwtools/VowelEditor.h b/dwtools/VowelEditor.h
index 7b54b33..9427346 100644
--- a/dwtools/VowelEditor.h
+++ b/dwtools/VowelEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2008-2011, 2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,10 +29,8 @@
 #include "Editor.h"
 
 #include "Vowel_def.h"
-oo_CLASS_CREATE (Vowel, Function);
 
-struct structVowelEditor_F0
-{
+struct structVowelEditor_F0 {
 	double start;
 	double slopeOctPerSec;
 	double minimum, maximum;
@@ -41,45 +38,46 @@ struct structVowelEditor_F0
 	long interpolationDepth;
 };
 
-struct structVowelEditor_F1F2Grid
-{
+struct structVowelEditor_F1F2Grid {
 	double df1, df2;
 	int text_left, text_right, text_bottom, text_top;
 	double grey;
 };
 
 Thing_define (VowelEditor, Editor) {
-	// new data:
-	public:
-		int soundFollowsMouse, shiftKeyPressed;
-		double f1min, f1max, f2min, f2max;   // domain of graphics F1-F2 area
-		Matrix f3, b3, f4, b4;
-		int frequencyScale;   // 0: lin, 1: log, 2: bark, 3: mel
-		int axisOrientation;  // 0: origin topright + f1 down + f2 to left, 0: origin lb + f1 right +f2 up
-		int marksDataset, speakerType;   // 1 = male, 2 = female, 3 = child
-		int marksFontSize;
-		Graphics g;   // the drawing
-		short width, height;  // size of drawing area in pixels
-		Table marks;   // Vowel, F1, F2, Colour...
-		Vowel vowel;
-		double markTraceEvery;
-		structVowelEditor_F0 f0;
-		double maximumDuration, extendDuration;
-		Sound source, target;
-		GuiDrawingArea drawingArea;
-		GuiButton playButton, reverseButton, publishButton;
-		GuiText f0TextField, f0SlopeTextField, durationTextField, extendTextField;
-		GuiLabel startInfo, endInfo;
-		structVowelEditor_F1F2Grid grid;
-	// overridden methods:
-		virtual void v_destroy ();
-		virtual bool v_scriptable () { return false; }
-		virtual void v_createChildren ();
-		virtual void v_createMenus ();
-		virtual void v_createHelpMenuItems (EditorMenu menu);
+	int soundFollowsMouse, shiftKeyPressed;
+	double f1min, f1max, f2min, f2max;   // domain of graphics F1-F2 area
+	autoMatrix f3, b3, f4, b4;
+	int frequencyScale;   // 0: lin, 1: log, 2: bark, 3: mel
+	int axisOrientation;  // 0: origin topright + f1 down + f2 to left, 0: origin lb + f1 right +f2 up
+	int marksDataset, speakerType;   // 1 = male, 2 = female, 3 = child
+	int marksFontSize;
+	autoGraphics graphics;   // the drawing
+	short width, height;  // size of drawing area in pixels
+	autoTable marks;   // Vowel, F1, F2, Colour...
+	autoVowel vowel;
+	double markTraceEvery;
+	structVowelEditor_F0 f0;
+	double maximumDuration, extendDuration;
+	GuiDrawingArea drawingArea;
+	GuiButton playButton, reverseButton, publishButton;
+	GuiText f0TextField, f0SlopeTextField, durationTextField, extendTextField;
+	GuiLabel startInfo, endInfo;
+	structVowelEditor_F1F2Grid grid;
+
+	void v_destroy () noexcept
+		override;
+	bool v_scriptable ()
+		override { return false; }
+	void v_createChildren ()
+		override;
+	void v_createMenus ()
+		override;
+	void v_createHelpMenuItems (EditorMenu menu)
+		override;
 };
 
-VowelEditor VowelEditor_create (const char32 *title, Data data);
+autoVowelEditor VowelEditor_create (const char32 *title, Daata data);
 
 void VowelEditor_prefs ();
 
diff --git a/dwtools/Vowel_def.h b/dwtools/Vowel_def.h
index 6021ea5..85df10e 100644
--- a/dwtools/Vowel_def.h
+++ b/dwtools/Vowel_def.h
@@ -1,27 +1,26 @@
 /* Vowel_def.h
  * 
- * Copyright (C) 2011 David Weenink & Paul Boersma
+ * Copyright (C) 2011,2015 David Weenink & Paul Boersma
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Vowel
 oo_DEFINE_CLASS (Vowel, Function)
-	oo_OBJECT (PitchTier, 0, pt)
-	oo_OBJECT (FormantTier, 0, ft)
+	oo_AUTO_OBJECT (PitchTier, 0, pt)
+	oo_AUTO_OBJECT (FormantTier, 0, ft)
 oo_END_CLASS (Vowel)
 #undef ooSTRUCT
 
diff --git a/dwtools/manual_BSS.cpp b/dwtools/manual_BSS.cpp
index 04fa2fc..276cd8b 100644
--- a/dwtools/manual_BSS.cpp
+++ b/dwtools/manual_BSS.cpp
@@ -1,20 +1,19 @@
 /* manual_BSS.cpp
  *
- * Copyright (C) 2010-2014 David Weenink
+ * Copyright (C) 2010-2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -43,15 +42,15 @@ TAG (U"2. The elements %%c__ij_% in a Covariance always satisfy |%%c__ij_%/\\Vr(
 	"generally not the case for cross-correlations.")
 MAN_END
 
-MAN_BEGIN (U"CrossCorrelationTables", U"djmw", 20101227)
-INTRO (U"One of the types of objects in Praat. A CrossCorrelationTables represents a collection of @@CrossCorrelationTable@ objects.")
+MAN_BEGIN (U"CrossCorrelationTableList", U"djmw", 20101227)
+INTRO (U"One of the types of objects in Praat. A CrossCorrelationTableList represents a collection of @@CrossCorrelationTable@ objects.")
 MAN_END
 
-MAN_BEGIN (U"CrossCorrelationTables: Create test set...", U"djmw", 20110212)
+MAN_BEGIN (U"CrossCorrelationTableList: Create test set...", U"djmw", 20110212)
 INTRO (U"Create a collection of @@CrossCorrelationTable at s that are all derived from different diagonal matrices by the same transformation matrix.")
 ENTRY (U"Settings")
 SCRIPT (5.4, Manual_SETTINGS_WINDOW_HEIGHT (4), U""
-	Manual_DRAW_SETTINGS_WINDOW ("CrossCorrelationTables: Create test set", 4)
+	Manual_DRAW_SETTINGS_WINDOW ("CrossCorrelationTableList: Create test set", 4)
 	Manual_DRAW_SETTINGS_WINDOW_FIELD ("Matrix dimension", "5")
 	Manual_DRAW_SETTINGS_WINDOW_FIELD ("Number of matrices", "20")
 	Manual_DRAW_SETTINGS_WINDOW_BOOLEAN("First is positive-definite",1)
@@ -101,7 +100,7 @@ INTRO (U"Detemines the @@Covariance|covariances@ between the channels of a selec
 NORMAL (U"The covariance of a sound is determined by calculating the @@CrossCorrelationTable@ of a multichannel sound for a lag time equal to zero.")
 MAN_END
 
-MAN_BEGIN (U"Sound: To Sound (blind source separation)...", U"djmw", 20140224)
+MAN_BEGIN (U"Sound: To Sound (blind source separation)...", U"djmw", 20151030)
 INTRO (U"Analyze the selected multi-channel sound into its independent components by an iterative method.")
 NORMAL (U"The @@blind source separation@ method to find the independent components tries to simultaneously diagonalize a number of "
 	"@@CrossCorrelationTable at s that are calculated from the multi-channel sound at different lag times.")
@@ -171,7 +170,7 @@ CODE(U"s1 = To Sound: \"This is some text\", \"no\"")
 NORMAL (U"The first speech sound was created from the text \"This is some text\" at a speed of 175 words per minute.")
 CODE(U"selectObject: synth")
 CODE(U"Set speech output settings: 44100, 0.01, 80, 50, 145, \"no\", \"IPA\"")
-CODE(U"s2 = To Sound.: \"Abracadabra, abra\", 0.01, 80, 50, 145, \"yes\", \"no\", \"no\", \"yes\"")
+CODE(U"s2 = To Sound.: \"Abracadabra, abra\", \"no\"")
 NORMAL (U"The second sound \"Abracadabra, abra\" was synthesized at 145 words per minute with a somewhat larger pitch excursion (80) than the previous sound (50).")
 CODE(U"plusObject: s1")
 CODE(U"stereo = Combine to stereo")
@@ -215,6 +214,28 @@ NORMAL (U"The first two panels will not change between different sessions of pra
     "the result of the blind source separation, i.e. unmixing, will not always be the same because of two things. In the first place the unmixing always starts with an initialisation with random values of the parameters that "
     "we have to determine for the blind source separation. Therefore the iteration sequence will never be the same and the final outcomes might differ. In the second place, as was explained in the @@blind source separation@ manual, the unmixing is only "
     "unique up to a scale factor and a permutation. Therefore the channels in the unmixed sound do not necessarily correspond to the corresponding channel in our \"original\" stereo sound.")
+NORMAL (U"The complete script:")
+CODE (U"syn = Create SpeechSynthesizer: \"English\", \"default\"")
+CODE (U"s1 = To Sound: \"This is some text\", \"no\"")
+CODE (U"selectObject: syn")
+CODE (U"Set speech output settings: 44100, 0.01, 80, 50, 145, \"no\", \"IPA\"")
+CODE (U"s2 = To Sound: \"abracadabra, abra\", \"no\"")
+CODE (U"plusObject: s1")
+CODE (U"stereo = Combine to stereo")
+CODE (U"Select inner viewport: 1, 6, 0.1, 1.9")
+CODE (U"Draw: 0, 0, 0, 0, \"no\", \"Curve\"")
+CODE (U"Draw inner box")
+CODE (U"mm = Create simple MixingMatrix: \"mm\", 2, 2, \"1.0 2.0 2.0 1.0\"")
+CODE (U"plusObject: stereo")
+CODE (U"mixed = Mix")
+CODE (U"Select inner viewport: 1, 6, 2.1, 3.9")
+CODE (U"Draw: 0, 0, 0, 0, \"no\", \"Curve\"")
+CODE (U"Draw inner box")
+CODE (U"unmixed = To Sound (bss): 0.1, 1, 20, 0.00021, 100, 0.001, \"ffdiag\"")
+CODE (U"Select inner viewport: 1, 6, 4.1, 5.9")
+CODE (U"Draw: 0, 0, 0, 0, \"no\", \"Curve\"")
+CODE (U"Draw inner box")
+CODE (U"removeObject: unmixed, syn, stereo, s1, s2, mixed, mm")
 MAN_END
 
 MAN_BEGIN (U"Sound: To Sound (whiten channels)...", U"djmw", 20120303)
diff --git a/dwtools/manual_DataModeler.cpp b/dwtools/manual_DataModeler.cpp
index b25f184..3a6bbe8 100644
--- a/dwtools/manual_DataModeler.cpp
+++ b/dwtools/manual_DataModeler.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/manual_HMM.cpp b/dwtools/manual_HMM.cpp
index e3ec9d0..4d48ebf 100644
--- a/dwtools/manual_HMM.cpp
+++ b/dwtools/manual_HMM.cpp
@@ -1,20 +1,19 @@
 /* manual_HMM.cpp
  *
- * Copyright (C) 2011-2014 David Weenink
+ * Copyright (C) 2011-2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -36,7 +35,7 @@ NORMAL (U"Expectation-maximization (EM) is an iterative method used to find maxi
 	"estimates of the parameters by maximizing the expected likelihood found in the E step. The "
 	"parameters found on the M step are then used to start another E step, and the process is "
 	"repeated until some criterion is satisfied. EM is frequently used for data clustering like for example in "
-	"@@TableOfReal: To GaussianMixture...|Gaussian mixtures@ or in the @@HMM & HMM_ObservationSequences: Learn...|Baum-Welch training@ of a Hidden Markov Model.")
+	"@@TableOfReal: To GaussianMixture...|Gaussian mixtures@ or in the @@HMM & HMMObservationSequences: Learn...|Baum-Welch training@ of a Hidden Markov Model.")
 MAN_END
 
 MAN_BEGIN (U"GaussianMixture", U"djmw", 20101026)
@@ -119,8 +118,8 @@ NORMAL (U"2. According to the procedure described in @@Covariance: To TableOfRea
 	"data point will be generated.")
 MAN_END
 
-MAN_BEGIN (U"TableOfReal: To GaussianMixture...", U"djmw", 20111130)
-INTRO (U"Creates a  @@GaussianMixture@ from the selected  @@TableOfReal@ by an @@expectation-maximization|"
+MAN_BEGIN (U"TableOfReal: To GaussianMixture...", U"djmw", 20150930)
+INTRO (U"Creates a  @@GaussianMixture@ from the selected @@TableOfReal@ by an @@expectation-maximization|"
 	"expectation-maximization@ procedure.")
 ENTRY (U"Settings")
 TAG (U"##Number of components")
@@ -137,6 +136,8 @@ DEFINITION (U"defines the fraction of the total covariance that will be added to
 	"covariance matrices during the EM iteration. This may prevent one or more of these matrices to become singular.")
 TAG (U"##Covariance matrices are")
 DEFINITION (U"defines whether the complete covariance matrices in the mixture have to be calculated or only the diagonal.")
+TAG (U"##Criterion based on")
+DEFINITION (U"defines how the @@GaussianMixture & TableOfReal: Get likelihood value...|likelihood of the data given the model is calculated at .")
 ENTRY (U"Expectation\\--Maximization Algorithm")
 NORMAL (U"The Expectation\\--Maximization (EM) algorithm is an iterative procedure to maximize the likelihood of the data given a model. For a "
 	"GaussianMixture, the parameters in the model are the centers and the covariances of all components in the mixture "
@@ -256,13 +257,13 @@ TAG (U"##Covariance matrices are")
 DEFINITION (U"defines whether the complete covariance matrices in the mixture have to be calculated or only the diagonal.")
 MAN_END
 
-MAN_BEGIN (U"HMM_ObservationSequence", U"djmw", 20140117)
-INTRO (U"An HMM_ObservationSequence models a sequence of observations. The observation sequence can be generated "
+MAN_BEGIN (U"HMMObservationSequence", U"djmw", 20140117)
+INTRO (U"An HMMObservationSequence models a sequence of observations. The observation sequence can be generated "
 	"by the @HMM or it can be used to train a model.")
 MAN_END
 
-MAN_BEGIN (U"HMM_StateSequence", U"djmw", 20101010)
-INTRO (U"An HMM_StateSequence models the sequence of states that an @HMM has traversed.")
+MAN_BEGIN (U"HMMStateSequence", U"djmw", 20101010)
+INTRO (U"An HMMStateSequence models the sequence of states that an @HMM has traversed.")
 MAN_END
 
 MAN_BEGIN (U"HMM", U"djmw", 20130410)
@@ -317,19 +318,19 @@ NORMAL (U"The symmetrized version is:")
 FORMULA (U"%D__%s_(\\la__1_,\\la__2_) = (%D(\\la__1_,\\la__2_) + %D(\\la__2_,\\la__1_))/2.")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM_ObservationSequence: Get cross-entropy", U"djmw", 20101017)
-INTRO (U"Calculates the cross-entropy between the selected @@HMM@ model and the @@HMM_ObservationSequence at .")
+MAN_BEGIN (U"HMM & HMMObservationSequence: Get cross-entropy", U"djmw", 20101017)
+INTRO (U"Calculates the cross-entropy between the selected @@HMM@ model and the @@HMMObservationSequence at .")
 NORMAL (U"The cross-entropy is a useful upper bound for the entropy of a model. An approximation to the cross-entropy for a model on a observation sequence  %O of length %N is: ")
 FORMULA (U"%H(%O) = -1/%N log %p(%O),")
 NORMAL (U"where %p(%O) is the probability of the observation sequence given the model.")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM & HMM_ObservationSequence: Get cross-entropy", U"djmw", 20101017)
+MAN_BEGIN (U"HMM & HMM & HMMObservationSequence: Get cross-entropy", U"djmw", 20101017)
 INTRO (U"Get the (symmetric) cross-entropy for the two selected @HMM models and an observation sequence.")
 NORMAL (U"See @@HMM & HMM: Get cross-entropy... at .")
 MAN_END
 
-MAN_BEGIN (U"HMM: To HMM_ObservationSequence...", U"djmw", 20101010)
+MAN_BEGIN (U"HMM: To HMMObservationSequence...", U"djmw", 20101010)
 INTRO (U"Use the selected @HMM as a generator for an observation sequence.")
 ENTRY (U"Settings")
 TAG (U"##Start state")
@@ -371,12 +372,12 @@ MAN_BEGIN (U"HMM: Get expected duration in state...", U"djmw", 20101010)
 INTRO (U"For the selected @HMM get the number of time units that the system is expected to stay in that state.")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM_StateSequence: Get probability", U"djmw", 20101010)
-INTRO (U"Get the natural logarithm of the probability that the selected @@HMM_StateSequence|state sequence@ was generated by the selected @HMM.")
+MAN_BEGIN (U"HMM & HMMStateSequence: Get probability", U"djmw", 20101010)
+INTRO (U"Get the natural logarithm of the probability that the selected @@HMMStateSequence|state sequence@ was generated by the selected @HMM.")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM_ObservationSequence: Get probability", U"djmw", 20101010)
-INTRO (U"Get the natural logarithm of the probability that the selected @@HMM_ObservationSequence|state sequence@ was generated by the selected @HMM.")
+MAN_BEGIN (U"HMM & HMMObservationSequence: Get probability", U"djmw", 20101010)
+INTRO (U"Get the natural logarithm of the probability that the selected @@HMMObservationSequence|state sequence@ was generated by the selected @HMM.")
 ENTRY (U"Algorithm")
 NORMAL (U"Viterbi")
 MAN_END
@@ -403,19 +404,19 @@ INTRO (U"Sets the probabilities that the model starts in the particular states."
 NORMAL (U"The values given will be scaled as probabilities. ")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM_ObservationSequence: To TableOfReal (bigrams)...", U"djmw", 20101019)
-INTRO (U"Get a table with bigrams and marginals form the selected @HMM_ObservationSequence and the @HMM.")
+MAN_BEGIN (U"HMM & HMMObservationSequence: To TableOfReal (bigrams)...", U"djmw", 20101019)
+INTRO (U"Get a table with bigrams and marginals form the selected @HMMObservationSequence and the @HMM.")
 NORMAL (U"The entry at row %i and column %j shows how often the %j-th symbol follows the %i-th symbol in the observation sequence.")
 ENTRY (U"Remark")
 NORMAL (U"The row and colum marginals for the first and the last element in the obsevation sequence will not be equal because there is no transition to the first and no transition from the last one.")
 MAN_END
 
-MAN_BEGIN (U"HMM_ObservationSequence: To TableOfReal (bigrams)...", U"djmw", 20101019)
-INTRO (U"Get a table with bigrams form the selected @HMM_ObservationSequence.")
-NORMAL (U"See also @@HMM & HMM_ObservationSequence: To TableOfReal (bigrams)... at .")
+MAN_BEGIN (U"HMMObservationSequence: To TableOfReal (bigrams)...", U"djmw", 20101019)
+INTRO (U"Get a table with bigrams form the selected @HMMObservationSequence.")
+NORMAL (U"See also @@HMM & HMMObservationSequence: To TableOfReal (bigrams)... at .")
 MAN_END
 
-MAN_BEGIN (U"HMM & HMM_ObservationSequences: Learn...", U"djmw", 20111130)
+MAN_BEGIN (U"HMM & HMMObservationSequences: Learn...", U"djmw", 20111130)
 INTRO (U"Train the transition and emission probabilities of the @HMM from the observations.")
 ENTRY (U"Algorithm")
 NORMAL (U"The Baum-Welch @@expectation-maximization@ procedure. It uses the forward and backward procedures to (re)estimate the parameters until convergence is reached.")
diff --git a/dwtools/manual_KlattGrid.cpp b/dwtools/manual_KlattGrid.cpp
index 213fc24..d09c534 100644
--- a/dwtools/manual_KlattGrid.cpp
+++ b/dwtools/manual_KlattGrid.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2009-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/dwtools/manual_MDS.cpp b/dwtools/manual_MDS.cpp
index bad371d..bed0090 100644
--- a/dwtools/manual_MDS.cpp
+++ b/dwtools/manual_MDS.cpp
@@ -1,20 +1,19 @@
 /* manual_MDS.cpp
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2014, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -35,40 +34,40 @@ static void drawLetterRConfigurationExample (Graphics g)
 {
 	autoConfiguration me = Configuration_createLetterRExample (1);
 	Graphics_setWindow (g, -6, 4, -7, 5);
-	Configuration_draw (me.peek(), g, 1, 2, -6, 4, -7, 5, 0, 1, U"", 1);
+	Configuration_draw (me.get(), g, 1, 2, -6, 4, -7, 5, 0, 1, U"", 1);
 }
 
 static void drawLetterRConfigurationExample2 (Graphics g)
 {
 	autoConfiguration me = Configuration_createLetterRExample (2);
-	Configuration_draw (me.peek(), g, 1, 2, -0.8, 1.2, -0.8, 0.7, 0, 1, U"", 1);
+	Configuration_draw (me.get(), g, 1, 2, -0.8, 1.2, -0.8, 0.7, 0, 1, U"", 1);
 }
 
 static void drawLetterRShepard (Graphics g)
 {
 	autoDissimilarity d = Dissimilarity_createLetterRExample (32.5);
 	autoConfiguration c = Configuration_createLetterRExample (2);
-	Dissimilarity_Configuration_drawShepardDiagram (d.peek(), c.peek(), g, 0, 200, 0, 2.2, 1, U"+", 1);
+	Dissimilarity_Configuration_drawShepardDiagram (d.get(), c.get(), g, 0, 200, 0, 2.2, 1, U"+", 1);
 }
 
 static void drawLetterRRegression (Graphics g)
 {
 	autoDissimilarity d = Dissimilarity_createLetterRExample (32.5);
 	autoConfiguration c = Configuration_createLetterRExample (2);
-	Dissimilarity_Configuration_drawMonotoneRegression (d.peek(), c.peek(), g, MDS_PRIMARY_APPROACH, 0, 200, 0, 2.2, 1, U"+", 1);
+	Dissimilarity_Configuration_drawMonotoneRegression (d.get(), c.get(), g, MDS_PRIMARY_APPROACH, 0, 200, 0, 2.2, 1, U"+", 1);
 }
 
 static void drawCarrollWishConfigurationExample (Graphics g)
 {
 	autoConfiguration me = Configuration_createCarrollWishExample ();
 	Graphics_setWindow (g, -2, 2, -2, 2);
-	Configuration_draw (me.peek(), g, 1, 2, -2, 2, -2, 2, 0, 1, U"", 1);
+	Configuration_draw (me.get(), g, 1, 2, -2, 2, -2, 2, 0, 1, U"", 1);
 }
 
 static void drawCarrollWishSalienceExample (Graphics g)
 {
 	autoSalience me = Salience_createCarrollWishExample ();
-	Salience_draw (me.peek(), g, 1, 2, 1);
+	Salience_draw (me.get(), g, 1, 2, 1);
 }
 
 static void drawMsplineExample (Graphics g)
@@ -98,7 +97,7 @@ NORMAL (U"where %S__%i_ is a known symmetric %numberOfPoints \\xx %numberOfPoint
 	"the diagonal %numberOfDimensions \\xx %numberOfDimensions weight matrix for source %i. The function "
 	"above has no analytical solution for %X and the %W__%i_. It can be solved, however, "
 	"by an iterative procedure which Carroll & Chang have christened CANDECOMP "
-	"(CANonical DECOMPosition).  This method minimizes, instead of the function "
+	"(CANonical DECOMPosition). This method minimizes, instead of the function "
 	"given above, the following function:")
 LIST_ITEM (U"%g(%X, %Y, %W__1_,..., %W__%numberOfSources_) = \\su__%i=1..%numberOfSources_ "
 	"| %S__%i_ \\-- %X%W__%i_%Y\\'p |^2")
@@ -361,7 +360,7 @@ NORMAL (U"Sometimes the criterion used in a @@Procrustes transform@ is too "
 FORMULA (U"%f(#T) = \\su__%i=1..%numberOfDimensions_ #t\\'p__%i_#A\\'p#b__%i_ /"
 	" ((#t\\'p__%i_#A\\'p#A#t__%i_)^^1/2^(#b\\'p__%i_#b__%i_)^^1/2^),")
 NORMAL (U"where #t\\'p__%i_ and #b\\'p__%i_ are the %i^^th^ column of #T and "
-	"#B, respectively.  A direct solution for #T is not available, it can only "
+	"#B, respectively. A direct solution for #T is not available, it can only "
 	"be obtained by an iterative procedure. The implemented algorithm is from "
 	"@@Kiers & Groenen (1996)@ and shows excellent convergence properties.")
 MAN_END
@@ -616,7 +615,7 @@ INTRO (U"Creates a @Dissimilarity object that bears the name %R. The "
 	"transformation of the distances between the 32 two-dimensional points "
 	"that make up the capital letter #R.")
 PICTURE (4.0, 4.0, drawLetterRConfigurationExample)
-NORMAL (U"All 32 \\.c (32-1)/2 interpoint distances  were subjected to the "
+NORMAL (U"All 32 \\.c (32-1)/2 interpoint distances were subjected to the "
 	"transformation: ")
 FORMULA (U"%dissimilarity__%ij_^ = %distance__%ij_^2 + 5 + %noiseRange \\.c #u, ")
 NORMAL (U"where #u is a uniform random variable between 0 and 1.")
@@ -802,7 +801,7 @@ NORMAL (U"There is no feasible way to be certain that you have found the "
 	"on a %linear relation between distance and (dis)similarity, it gives a "
 	"very good approximation of the optimal #Configuration and "
 	"the #Minimizer practically always finds the global minimum from it "
-	"(I guess...).  A way to find out is to try the %numberOfRepetitions "
+	"(I guess...). A way to find out is to try the %numberOfRepetitions "
 	"parameter which gives you the possibility to fit many times and each "
 	"time start with another random initial configuration.")
 ENTRY (U"Algorithm")
@@ -1346,7 +1345,7 @@ ENTRY (U"Representation functions")
 NORMAL (U"In the application of MDS we try to find a configuration #X such that "
 	"the following relations are satisfied as well as possible:")
 FORMULA (U"%f(%\\de__%ij_) \\~~ %d__%ij_(#X)")
-NORMAL (U"The numbers that result from applying  %f on  %\\de__%ij_ are sometimes "
+NORMAL (U"The numbers that result from applying %f on %\\de__%ij_ are sometimes "
 	"called @disparities %d\\'p__%ij_. In most applications of MDS, besides "
 	"the configuration #X, also the function %f is not "
 	"completely specified, i.e., the exact parameters of %f are unknown and "
@@ -1382,7 +1381,7 @@ NORMAL (U"The most important object types used in Praat for MDS and the conversi
 PICTURE (6, 6, drawMDSClassRelations)
 MAN_END
 
-MAN_BEGIN (U"Measurement levels", U"djmw", 19970502)
+MAN_BEGIN (U"Measurement levels", U"djmw", 20151014)
 INTRO (U"According to the measurement theory of @@Stevens (1951)@, there are four measurement levels, namely "
 	"#Nominal, #Ordinal, #Interval and #Ratio. In the light of multidimensional scaling, the first "
 	"two levels, Nominal and Ordinal, are often called %non-%metric. The last two are %metric.")
@@ -1390,7 +1389,7 @@ MAN_END
 
 MAN_BEGIN (U"Multidimensional scaling", U"djmw", 20140117)
 INTRO (U"This tutorial describes how you can use P\\s{RAAT} to "
-	"perform ##M#ulti##D#imensional ##S#caling (MDS) analysis.")
+	"perform ##M#ulti ##D#imensional ##S#caling (MDS) analysis.")
 NORMAL (U"MDS helps us to represent %dissimilarities between objects as "
 	"%distances in a %%Euclidean space%. In effect, the more dissimilar two "
 	"objects are, the larger the distance between the objects in the Euclidean "
@@ -1411,13 +1410,13 @@ NORMAL (U"Let us first create a Dissimilarity object. You can for example "
 	"distortions between the dissimilarities and the distances.")
 NORMAL (U"Now you can do the following, for example:")
 NORMAL (U"Select the Dissimilarity and choose @@Dissimilarity: To Configuration "
-	"(monotone mds)...|To Configuration (monotone mds)...@, and  you perform "
+	"(monotone mds)...|To Configuration (monotone mds)...@, and you perform "
 	"a @@Kruskal analysis|kruskal at -like multidimensional scaling which "
 	"results in a new "
 	"Configuration object. (This Configuration could subsequently be used as "
 	"the starting Configuration for a new MDS-analysis!).")
 NORMAL (U"Select the Configuration and choose @@Configuration: Draw...|Draw...@ "
-	"and the following picture will result")
+	"and the following picture might result.")
 PICTURE (4.0, 4.0, drawLetterRConfigurationExample2)
 NORMAL (U"The following script summarizes:")
 CODE (U"dissimilarity = Create letter R example: 32.5")
@@ -1429,7 +1428,7 @@ NORMAL (U"Select the Dissimilarity and the Configuration together and query for
 	"@@Dissimilarity & Configuration: Get stress (monotone mds)...|"
 	"Get stress (monotone mds)... at . ")
 NORMAL (U"The following script summarizes:")
-CODE (U"selectObject (dissimilarity, configuration)")
+CODE (U"selectObject: dissimilarity, configuration")
 CODE (U"Get stress (monotone mds): \"Primary approach\", \"Kruskals's "
 	"stress-1\"")
 ENTRY (U"The Shepard diagram")
@@ -1438,7 +1437,7 @@ NORMAL (U"Select the Dissimilarity and the Configuration together to "
 	"draw the Shepard diagram at .")
 PICTURE (4.0, 4.0, drawLetterRShepard)
 NORMAL (U"The following script summarizes:")
-CODE (U"selectObject (dissimilarity, configuration)")
+CODE (U"selectObject: dissimilarity, configuration")
 CODE (U"Draw Shepard diagram: 0, 200, 0, 2.2, 1, \"+\", \"yes\"")
 ENTRY (U"The (monotone) regression")
 NORMAL (U"Select the Dissimilarity and the Configuration together to "
@@ -1446,7 +1445,7 @@ NORMAL (U"Select the Dissimilarity and the Configuration together to "
 	"draw the monotone regression@ of distances on dissimilarities.")
 PICTURE (4.0, 4.0, drawLetterRRegression)
 NORMAL (U"The following script summarizes:")
-CODE (U"selectObject (dissimilarity, configuration)")
+CODE (U"selectObject: dissimilarity, configuration")
 CODE (U"Draw monotone regresion: \"Primary approach\", 0, 200, 0, 2.2, 1, \"+\", \"yes\"")
 NORMAL (U"When you enter %noiseRange = 0 in the form for the letter #R, perfect "
 	"reconstruction is possible. The Shepard diagram then will show "
@@ -1460,29 +1459,28 @@ NORMAL (U"When you can't have equal confidence in all the number in the "
 	"individual weights in the Weight object with the @@TableOfReal: Set "
 	"value...| Set value...@ command (remember: make %w__%ij_ = %w__%ji_).")
 NORMAL (U"The following script summarizes:")
-CODE (U"selectObject (dissimilarity)")
+CODE (U"selectObject: dissimilarity")
 CODE (U"weight = To Weight")
 CODE (U"! Change [i][j] and [j][i] cells in the Weight object")
 CODE (U"Set value: i, j, val")
 CODE (U"Set value: j, i, val")
 CODE (U"...")
 CODE (U"! now we can do a weighed analysis.")
-CODE (U"selectObject (dissimilarity, weight)")
+CODE (U"selectObject: dissimilarity, weight")
 CODE (U"To Configuration (monotone mds): 2, \"Primary approach\", 0.00001, 50, 1)")
 NORMAL (U"You can also query the @stress values with three objects selected. "
 	"The following script summarizes:")
-CODE (U"selectObject (dissimilarity, weight, configuration)")
-CODE (U"Get stress (monotone mds): \"Primary approach\", \"Kruskals's "
-	"stress-1\"")
+CODE (U"selectObject: dissimilarity, weight, configuration")
+CODE (U"Get stress (monotone mds): \"Primary approach\", \"Kruskals's stress-1\"")
 ENTRY (U"Using a start Configuration")
 NORMAL (U"You could also use a Configuration object as a starting "
 	"configuration in the minimization process. "
-	"Lets assume that you are not satisfied with the stress value from the "
+	"Let's assume that you are not satisfied with the stress value from the "
 	"Configuration object that you obtained in the previous analysis. "
 	"You can than use this Configuration object as a "
 	"starting point for further analysis:")
 NORMAL (U"The following script summarizes:")
-CODE (U"selectObject (dissimilarity, configuration, weight)")
+CODE (U"selectObject: dissimilarity, configuration, weight")
 CODE (U"To Configuration (monotone mds): 2, \"Primary approach\", 0.00001, 50, 1")
 ENTRY (U"Multiple Dissimilarity's (INDSCAL)")
 NORMAL (U"When you have multiple Dissimilarity objects you can also perform "
diff --git a/dwtools/manual_Permutation.cpp b/dwtools/manual_Permutation.cpp
index d304b7d..8d5ed3e 100644
--- a/dwtools/manual_Permutation.cpp
+++ b/dwtools/manual_Permutation.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2005-2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/dwtools/manual_dwtools.cpp b/dwtools/manual_dwtools.cpp
index 3d8a177..c9a8747 100644
--- a/dwtools/manual_dwtools.cpp
+++ b/dwtools/manual_dwtools.cpp
@@ -1,20 +1,19 @@
 /* manual_dwtools.cpp
  *
- * Copyright (C) 1993-2014 David Weenink
+ * Copyright (C) 1993-2016 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,42 +29,42 @@
 #include "Discriminant.h"
 
 
-static TableOfReal getStandardizedLogFrequencyPolsData (int includeLevels) {
+static autoTableOfReal getStandardizedLogFrequencyPolsData (bool includeLevels) {
 	autoTableOfReal me = TableOfReal_createFromPolsData_50males (includeLevels);
 	for (long i = 1; i <= my numberOfRows; i++) {
 		for (long j = 1; j <= 3; j++) {
 			my data[i][j] = log10 (my data[i][j]);
 		}
 	}
-	TableOfReal_standardizeColumns (me.peek());
-	TableOfReal_setColumnLabel (me.peek(), 1, U"standardized log (%F__1_)");
-	TableOfReal_setColumnLabel (me.peek(), 2, U"standardized log (%F__2_)");
-	TableOfReal_setColumnLabel (me.peek(), 3, U"standardized log (%F__3_)");
+	TableOfReal_standardizeColumns (me.get());
+	TableOfReal_setColumnLabel (me.get(), 1, U"standardized log (%F__1_)");
+	TableOfReal_setColumnLabel (me.get(), 2, U"standardized log (%F__2_)");
+	TableOfReal_setColumnLabel (me.get(), 3, U"standardized log (%F__3_)");
 	if (includeLevels) {
-		TableOfReal_setColumnLabel (me.peek(), 4, U"standardized %L__1_");
-		TableOfReal_setColumnLabel (me.peek(), 5, U"standardized %L__1_");
-		TableOfReal_setColumnLabel (me.peek(), 6, U"standardized %L__3_");
+		TableOfReal_setColumnLabel (me.get(), 4, U"standardized %L__1_");
+		TableOfReal_setColumnLabel (me.get(), 5, U"standardized %L__1_");
+		TableOfReal_setColumnLabel (me.get(), 6, U"standardized %L__3_");
 	}
-	return me.transfer();
+	return me;
 }
 
 static void drawPolsF1F2_log (Graphics g) {
 	autoTableOfReal me = getStandardizedLogFrequencyPolsData (0);
 	Graphics_setWindow (g, -2.9, 2.9, -2.9, 2.9);
-	TableOfReal_drawScatterPlot (me.peek(), g, 1, 2, 0, 0, -2.9, 2.9, -2.9, 2.9, 10, 1, U"+", 1);
+	TableOfReal_drawScatterPlot (me.get(), g, 1, 2, 0, 0, -2.9, 2.9, -2.9, 2.9, 10, 1, U"+", 1);
 }
 
 static void drawPolsF1F2ConcentrationEllipses (Graphics g) {
 	autoTableOfReal me = getStandardizedLogFrequencyPolsData (0);
-	autoDiscriminant d = TableOfReal_to_Discriminant (me.peek());
-	Discriminant_drawConcentrationEllipses (d.peek(), g, 1, 0, NULL, 0, 1, 2, -2.9, 2.9, -2.9, 2.9, 12, 1);
+	autoDiscriminant d = TableOfReal_to_Discriminant (me.get());
+	Discriminant_drawConcentrationEllipses (d.get(), g, 1, 0, nullptr, 0, 1, 2, -2.9, 2.9, -2.9, 2.9, 12, 1);
 }
 
 static void drawPolsDiscriminantConfiguration (Graphics g) {
 	autoTableOfReal me = getStandardizedLogFrequencyPolsData (0);
-	autoDiscriminant d = TableOfReal_to_Discriminant (me.peek());
-	autoConfiguration c = Discriminant_and_TableOfReal_to_Configuration (d.peek(), me.peek(), 2);
-	Configuration_draw (c.peek(), g, 1, 2, -2.9, 2.9, -2.9, 2.9, 0, 1, U"", 1);
+	autoDiscriminant d = TableOfReal_to_Discriminant (me.get());
+	autoConfiguration c = Discriminant_and_TableOfReal_to_Configuration (d.get(), me.get(), 2);
+	Configuration_draw (c.get(), g, 1, 2, -2.9, 2.9, -2.9, 2.9, 0, 1, U"", 1);
 }
 
 static void drawBoxPlot (Graphics g) {
@@ -671,7 +670,7 @@ FORMULA (U"%numberOfSigmas = \\Vr(-2 ln(1-%p/100)).")
 NORMAL (U"For covering 95\\% of the data we calculate %numberOfSigmas = 2.45.")
 MAN_END
 
-MAN_BEGIN (U"confidence interval", U"djmw", 20011105)
+MAN_BEGIN (U"confidence interval", U"djmw", 20151109)
 INTRO (U"The confidence interval gives an estimated range of values which "
 	"is likely to include an unknown population parameter. "
 	"The estimated range is calculated from a given set of observations.")
@@ -687,10 +686,8 @@ NORMAL (U"If the standard deviation is %not known, we have to estimate its value
 FORMULA (U"%%mean% - %t__%%\\al/2;N%_ %s / \\Vr%N \\<_ \\mu \\<_ "
 	"%%mean% + %t__%%\\al/2;N%_ %s / \\Vr%N,")
 NORMAL (U"where %t__%%\\al/2;N%_ = invStudentQ (%\\al/2, %N-1).")
-NORMAL (U"For %\\al=0.05 and %N=20 we get %z__0.025_=1.96 and %t__0.025;20_=2.039. "
-	"This shows that when we have to estimate the standard deviation from the data, "
-	"the confidence interval is wider than when the standard deviation is known "
-	"beforehand.")
+NORMAL (U"For %\\al=0.05 and %N=20 we get %z__0.025_=1.96 and %t__0.025;20_=2.093. "
+	"This shows that for a fixed value of the standard deviation the confidence interval will always be wider if we had to estimate the standard deviation's value from the data instead of its value being known beforehand.")
 MAN_END
 
 MAN_BEGIN (U"confidence level", U"djmw", 20011105)
@@ -981,6 +978,20 @@ NORMAL (U"Since an object of type Covariance contains the mean values (the "
 	"tests on means and variances.")
 MAN_END
 
+MAN_BEGIN (U"Create simple Correlation...", U"djmw", 20151230)
+INTRO (U"Create a @@Correlation@ matrix with its centroid.")
+ENTRY (U"Settings")
+TAG (U"##Correlations")
+DEFINITION (U"define the correlations. Because a correlation matrix is a symmetric matrix, only the upper triangular "
+	"part of the matrix has to be input (row-wise). If your correlation matrix is "
+	"of dimension %d, your input needs %d(%d+1)/2 elements. The first %d input elements are the elements of the first "
+	"row of the correaltion matrix, the next %d-1 input elements are for the second row, then %d-2 for the third row, etc.")
+TAG (U"##Centroid")
+DEFINITION (U"defines the centroid. ")
+TAG (U"##Number of observations")
+DEFINITION (U"defines the number of observations.")
+MAN_END
+
 MAN_BEGIN (U"Create simple Covariance...", U"djmw", 20101125)
 INTRO (U"Create a @@Covariance@ matrix with its centroid.")
 ENTRY (U"Settings")
@@ -1057,7 +1068,7 @@ NORMAL (U"The total variance is the sum of the diagonal elements of the covarian
 FORMULA (U"\\Si__%i=%from..%to_ %%C__ii_% / \\Si__%i=1..%numberOfRows_ %%C__ii_%")
 MAN_END
 
-MAN_BEGIN (U"Covariance: Get significance of means difference...", U"djmw", 20040407)
+MAN_BEGIN (U"Covariance: Get significance of means difference...", U"djmw", 20160102)
 INTRO (U"Gets the level of significance for the %difference of two means "
 	"from the selected @Covariance object being different from a hypothesized "
 	"value.")
@@ -1067,7 +1078,7 @@ DEFINITION (U"the positions of the two elements of the means vector whose "
 	"difference is compared to the hypothesized difference.")
 TAG (U"##Value")
 DEFINITION (U"the hypothesized difference (%\\mu).")
-TAG (U"##Paired samples")
+TAG (U"##Paired")
 DEFINITION (U"determines whether we treat the two means as being dependent. ")
 TAG (U"##Equal variances")
 DEFINITION (U"determines whether the distribution of the difference of the means "
@@ -1075,9 +1086,9 @@ DEFINITION (U"determines whether the distribution of the difference of the means
 ENTRY (U"Behaviour")
 NORMAL (U"This is Student's t-test for the significance of a difference of means. "
 	"The test statistic is:")
-FORMULA (U"%t = (%mean__1_ - %mean__2_ - %\\mu) \\Vr (%N / %s^2) with %ndf "
+FORMULA (U"%t = (%x\\-^__1_ - %x\\-^__2_ - %\\mu) \\Vr (%N / %s^2) with %ndf "
 	"degrees of freedom.")
-NORMAL (U"In the formula above %mean__1_ and %mean__2_ are the elements of the "
+NORMAL (U"In the formula above %x\\-^__1_ and %x\\-^__2_ are the elements of the "
 	"means vector, %\\mu is the hypothesized difference and %N is the number of "
 	"observations. The value that we use for the (combined) variance %s^2 is:")
 FORMULA (U"%s^2 = %var__1_ + %var__2_ - 2 * %covar__12_,")
@@ -1085,7 +1096,7 @@ NORMAL (U"when the samples are %paired, and ")
 FORMULA (U"%s^2 = %var__1_ + %var__2_ ")
 NORMAL (U"when they are not.")
 NORMAL (U"The %var__1_ and %var__2_ are the variance components for "
-	"%mean__1_ and %mean__2_, respectively, and %covar__12_ is their covariance."
+	"%x\\-^__1_ and %x\\-^__2_, respectively, and %covar__12_ is their covariance."
 	" When we have %%paired samples% we assume that the two variances are "
 	"not independent and their covariance is subtracted, otherwise their "
 	"covariance is not taken into account. Degrees of freedom parameter %ndf "
@@ -1100,13 +1111,13 @@ FORMULA (U"%p = 2 * studentQ (%t, %ndf)")
 NORMAL (U"A low probability %p means that the difference is significant.")
 MAN_END
 
-MAN_BEGIN (U"Covariance: Get significance of one variance...", U"djmw", 20040407)
+MAN_BEGIN (U"Covariance: Get significance of one variance...", U"djmw", 20160102)
 INTRO (U"Gets the probability for one variance from the selected "
 	"@Covariance object being different from a hypothesized variance.")
 ENTRY (U"Settings")
 TAG (U"##Index")
-DEFINITION (U"the position of the variance element.")
-TAG (U"##Hypothesized variance")
+DEFINITION (U"the position of the variance element %s^2.")
+TAG (U"##Value")
 DEFINITION (U"the hypothesized variance %\\si^2")
 ENTRY (U"Behaviour")
 NORMAL (U"The test statistic")
@@ -1187,22 +1198,17 @@ NORMAL (U"In case the covariance matrix is diagonal, the algorithm is much simpl
 MAN_END
 
 MAN_BEGIN (U"Covariance & TableOfReal: Extract quantile range...", U"djmw", 20040225)
-INTRO (U"Extract those rows from the selected @TableOfReal object whose Mahalanobis "
-	"distance, with respect to the selected @Covariance object, are within the "
+INTRO (U"Extract those rows from the selected @TableOfReal object whose @@Mahalanobis "
+	"distance@, with respect to the selected @Covariance object, are within the "
 	"quantile range.")
 MAN_END
 
-MAN_BEGIN (U"Covariance & TableOfReal: To TableOfReal (mahalanobis)...", U"djmw", 20140509)
-INTRO (U"Calculate Mahalanobis distance for the selected @TableOfReal with respect to the "
+MAN_BEGIN (U"Covariance & TableOfReal: To TableOfReal (mahalanobis)...", U"djmw", 20151209)
+INTRO (U"Calculate @@Mahalanobis distance@ for the selected @TableOfReal with respect to the "
 	"selected @Covariance object.")
 ENTRY (U"Setting")
 TAG (U"##Use table centroid")
 DEFINITION (U"Use the mean vector calculated from the columns in the selected TableOfReal instead of the means in the selected Covariance.")
-ENTRY (U"Explanation")
-NORMAL (U"The Mahalanobis distance is defined as")
-FORMULA (U"%d = \\Vr((#%x - #mean)\\'p #S^^-1^ (#%x - #mean)),")
-NORMAL (U"where #%x is a vector, #mean is the average and #S is the covariance matrix. ")
-NORMAL (U"It is the multivariate form of the distance measured in units of standard deviation.")
 ENTRY (U"Example")
 NORMAL (U"Count the number of items that are within 1, 2, 3, 4 and 5 standard deviations from the mean.")
 NORMAL (U"We first create a table with only one column and 10000 rows and fill it with numbers drawn from "
@@ -1514,11 +1520,21 @@ NORMAL (U"More details about these data and how they were measured can be found
 	"@@Weenink (1985)@.")
 MAN_END
 
-MAN_BEGIN (U"Discriminant", U"djmw", 19981103)
+MAN_BEGIN (U"Discriminant", U"djmw", 20160128)
 INTRO (U"One of the @@types of objects@ in P\\s{RAAT}.")
 NORMAL (U"An object of type Discriminant represents the discriminant structure of a multivariate "
-	"data set with several groups. This discriminant structure consists of a number of orthogonal "
-	"directions in space, along which maximum separability of the groups can occur.")
+	"data set, i.e. a %%numberOfObservations%\\xx%%dimension% matrix. Each row in this data set belongs to one of %%numberOfGroups% groups (or %%classes% or %categories%, whatever terminology you prefer). " 
+	"A Discriminant can be used as a classifier to discriminate between these %%numberOfGroups% groups.")
+ENTRY (U"##Inside a Discriminant")
+NORMAL (U"With @@Inspect@, you will see that a Discriminant contains the following data:")
+LIST_ITEM (U"##eigen#")
+DEFINITION (U"the @@Eigen|eigen@ structure, i.e. the eigenvalues and eigenvectors.")
+LIST_ITEM (U"##numberOfGroups")
+DEFINITION (U"the number of groups between which we can discriminate.")
+LIST_ITEM (U"##groups")
+DEFINITION (U"a list of %%dimension%\\xx%%dimension% @SSCP matrices, one for each group, %numberOfGroups in total.")
+LIST_ITEM (U"##aprioriProbabilities")
+DEFINITION (U"an array with %numberOfGroups apriori probabilities of group membership")
 ENTRY (U"Commands")
 NORMAL (U"Creation:")
 LIST_ITEM (U"\\bu @@Discriminant analysis@ tutorial")
@@ -1529,7 +1545,7 @@ LIST_ITEM (U"\\bu Draw eigenvector...")
 LIST_ITEM (U"\\bu @@Discriminant: Draw sigma ellipses...|Draw sigma ellipses...@")
 MAN_END
 
-MAN_BEGIN (U"Discriminant analysis", U"djmw", 20150902)
+MAN_BEGIN (U"Discriminant analysis", U"djmw", 20151224)
 INTRO (U"This tutorial will show you how to perform discriminant analysis with P\\s{RAAT}")
 NORMAL (U"As an example, we will use the dataset from @@Pols et al. (1973)@ "
 	"with the frequencies and levels of the first three formants from the 12 "
@@ -1564,7 +1580,7 @@ NORMAL (U"To get an indication of what these data look like, we make a scatter "
 	"first standardized log-formant-frequency against the second standardized "
 	"log-formant-frequency. With the next script fragment you can reproduce the "
 	"following picture.")
-CODE (U"Viewport: 0, 5, 0, 5")
+CODE (U"Select outer viewport: 0, 5, 0, 5")
 CODE (U"selectObject: table")
 CODE (U"Draw scatter plot: 1, 2, 0, 0, -2.9, 2.9, -2.9, 2.9, 10, \"yes\", \"+\", \"yes\"")
 PICTURE (5, 5, drawPolsF1F2_log)
@@ -1588,10 +1604,10 @@ NORMAL (U"You select a TableOfReal and a Discriminant object together and choose
 PICTURE (5, 5, drawPolsDiscriminantConfiguration)
 NORMAL (U"The following script summarizes:")
 CODE (U"selectObject: table, discriminant")
-CODE (U"To Configuration: 0")
-CODE (U"Viewport: 0, 5, 0, 5")
+CODE (U"To Configuration: 2")
+CODE (U"Select outer viewport: 0, 5, 0, 5")
 CODE (U"Draw: 1, 2, -2.9, 2.9, -2.9, 2.9, 12, \"yes\", \"+\", \"yes\"")
-NORMAL (U"If you are only interested in this projection, there also is a short cut "
+NORMAL (U"If you are only interested in this projection, there also is a shortcut "
 	"without an intermediate Discriminant object:  "
 	"select the TableOfReal object and choose @@TableOfReal: To Configuration "
 	"(lda)...|To Configuration (lda)... at .")
@@ -1623,23 +1639,23 @@ NORMAL (U"In general you would separate your data into two independent sets, "
 	"Several possibilities for splitting a dataset into two sets exist. "
 	"We mention the @@jackknife@ (\"leave-one-out\") and the "
 	"@@bootstrap@ methods (\"resampling\").")
-ENTRY (U"5.1 Jacknife classification")
+ENTRY (U"5.1 Jackknife classification")
 NORMAL (U"The following script summarizes #jackknife classification of the dataset:")
 CODE (U"selectObject: table")
 CODE (U"numberOfRows = Get number of rows")
 CODE (U"for irow to numberOfRows")
-CODE (U"  selectObject: table")
-CODE (U"  rowi = Extract rows where: \"row = irow\"")
-CODE (U"  selectObject: table")
-CODE (U"  rest = Extract rows where: \"row <> irow\"")
-CODE (U"  discriminant = To Discriminant")
-CODE (U"  plusObject: rowi")
-CODE (U"  classification = To ClassificationTable: \"yes\", \"yes\"")
-CODE (U"    if irow = 1")
-CODE (U"    confusion = To Confusion: \"yes\"")
-CODE (U"  else")
-CODE (U"    plusObject: confusion")
-CODE (U"    Increase confusion count")
+	CODE1 (U"selectObject: table")
+	CODE1 (U"rowi = Extract rows where: \"row = irow\"")
+	CODE1 (U"selectObject: table")
+	CODE1 (U"rest = Extract rows where: \"row <> irow\"")
+	CODE1 (U"discriminant = To Discriminant")
+	CODE1 (U"plusObject: rowi")
+	CODE1 (U"classification = To ClassificationTable: \"yes\", \"yes\"")
+	CODE1 (U"if irow = 1")
+		CODE2 (U"confusion = To Confusion: \"yes\"")
+	CODE1 (U"else")
+CODE2 (U"    plusObject: confusion")
+CODE2 (U"    Increase confusion count")
 CODE (U"  endif")
 CODE (U"  removeObject: rowi, rest, discriminant, classification")
 CODE (U"endfor")
@@ -1791,29 +1807,27 @@ NORMAL (U"The a priori probabilities normally will have values that are related
 FORMULA (U"%aprioriProbability__%i_ = %n__%i_ / \\Si__%k=1..%numberOfGroups_ %n__%k_")
 MAN_END
 
-MAN_BEGIN (U"Discriminant & TableOfReal: To Configuration...", U"djmw", 20040407)
+MAN_BEGIN (U"Discriminant & TableOfReal: To Configuration...", U"djmw", 20160119)
 INTRO (U"A command to project each row in the selected @TableOfReal onto "
-	"a space spanned by the eigenvectors of the selected @Discriminant. ")
+	"a subspace spanned by the eigenvectors of the selected @Discriminant. ")
 ENTRY (U"Settings")
 TAG (U"##Number of dimensions")
-DEFINITION (U"specifies the number of eigenvectors taken into account, i.e., determines "
-	"the dimension of the resulting @Configuration. When the default value (0) is "
-	"given the resulting Configuration will have the maximum dimension as allowed by "
-	"the number of eigenvectors in the selected Discriminant.")
+DEFINITION (U"specifies the dimension of the resulting @Configuration. This dimension cannot exceed a maximum dimension that is implicitly determined by the selected Discriminant. When the default value (0) is "
+	"given the resulting Configuration will have the maximum dimension as allowed by Discrimininant. "
+	"(Technically speaking: the number of eigenvectors (or eigenvalues) in the selected Discriminant is equal to the maximum allowed dimension.)")
 ENTRY (U"Precondition")
-NORMAL (U"The number of columns in the TableOfReal must equal the dimension of the "
-	"eigenvectors in the Discriminant.")
+NORMAL (U"The dimension of the Discriminant and the Configuration must conform in the sense that the number of columns in the TableOfReal and the length of an eigenvector in the Discriminant must be equal.")
 NORMAL (U"See also @@Eigen & TableOfReal: Project... at .")
 MAN_END
 
 MAN_BEGIN (U"Discriminant & TableOfReal: To TableOfReal (mahalanobis)...", U"djmw", 20140509)
-INTRO (U"Calculate Mahalanobis distances for the selected @TableOfReal with respect to one group in the "
+INTRO (U"Calculate @@Mahalanobis distance at s for the selected @TableOfReal with respect to one group in the "
 	"selected @Discriminant object.")
 ENTRY (U"Settings")
 TAG (U"##Group label")
 DEFINITION (U"defines which group mean to use for the distance calculation.")
 TAG (U"##Pool covariance matrices")
-DEFINITION (U"when on use a pooled covariance matrix instead of the group covariance matrix.")
+DEFINITION (U"when on, use a pooled covariance matrix instead of the group covariance matrix.")
 ENTRY (U"Algorithm")
 NORMAL (U"See @@Covariance & TableOfReal: To TableOfReal (mahalanobis)... at .")
 ENTRY (U"Example")
@@ -2140,7 +2154,7 @@ NORMAL (U"A @@Scree plot|scree@ plot can be obtained if both %%Fraction of eigen
 	"and %%Cumulative% are unchecked.")
 MAN_END
 
-MAN_BEGIN (U"Eigen: Draw eigenvector...", U"djmw", 20040407)
+MAN_BEGIN (U"Eigen: Draw eigenvector...", U"djmw", 20160223)
 INTRO (U"A command to draw an eigenvector from the selected @Eigen.")
 ENTRY (U"Settings")
 TAG (U"##Eigenvector number")
@@ -2152,7 +2166,7 @@ DEFINITION (U"when on, the eigenvector is multiplied with the square root of the
 	"quantitatively the elements in different component loading vectors because "
 	"the %i-th element in the %j-th component loading vector gives the covariance between the %i-th "
 	"original variable and the %j-th principal component.)")
-TAG (U"##Element rang%")
+TAG (U"##Element range#")
 DEFINITION (U"determine the first and last element of the vector that must be drawn.")
 TAG (U"##Minimum# and ##Maximum#")
 DEFINITION (U"determine the lower and upper bounds of the plot (choosing #Maximum smaller than #Minimum "
@@ -2189,22 +2203,40 @@ INTRO (U"A command to query the selected @Eigen for the %j^^th^ element of the "
 	"%i^^th^ eigenvector.")
 MAN_END
 
-MAN_BEGIN (U"Eigen & Matrix: Project...", U"djmw", 20040407)
+MAN_BEGIN (U"Eigen & Matrix: To Matrix (project columns)...", U"djmw", 20160223)
 INTRO (U"A command to project the columns of the @Matrix object onto the "
 	"eigenspace of the @Eigen object.")
 ENTRY (U"Setting")
 TAG (U"##Number of dimensions")
 DEFINITION (U"defines the dimension, i.e., the number of rows, of the "
-	"resulting object.")
+	"resulting Matrix object.")
 ENTRY (U"Algorithm")
 NORMAL (U"Project each column of the Matrix on the coordinate "
 	"system given by the eigenvectors of the Eigen object. This can be done "
 	"as follows:")
-FORMULA (U"%y__%ji_ = \\Si__%k=1..%numberOfColums_ %e__jk_ %x__%ki_, where")
-NORMAL (U"%y__%ji_ is the %j-th element of the %i-th column of the resulting "
-	"(matrix) object, %e__%jk_ is the %k-th element of the %j-th eigenvector "
-	"and, %x__%ki_ is the %k-th element of the %i-th column of the selected "
-	"matrix object.")
+FORMULA (U"%y__%ij_ = \\Si__%k=1..%dimension_ %e__ik_ %z__%kj_, where")
+NORMAL (U"%y__%ij_ is the %j-th element of the %i-th row of the result, "
+	"%e__%ik_ is the %k-th element of the %i-th eigenvector, "
+	"%z__%kj_ is the %k-th element of the %j-th column of the selected "
+	"Matrix object, and %%dimension% is the number of elements in an eigenvector.")
+MAN_END
+
+MAN_BEGIN (U"Eigen & Matrix: To Matrix (project rows)...", U"djmw", 20160223)
+INTRO (U"A command to project the rows of the @Matrix object onto the "
+	"eigenspace of the @Eigen object.")
+ENTRY (U"Setting")
+TAG (U"##Number of dimensions")
+DEFINITION (U"defines the dimension, i.e., the number of columns, of the "
+	"resulting Matrix object.")
+ENTRY (U"Algorithm")
+NORMAL (U"Project each row of the Matrix on the coordinate "
+	"system given by the eigenvectors of the Eigen object. This can be done "
+	"as follows:")
+FORMULA (U"%y__%ij_ = \\Si__%k=1..%dimension_ %e__jk_ %z__%ik_, where")
+NORMAL (U"%y__%ij_ is the %j-th element of the %i-th row of the result, "
+	"%e__%jk_ is the %k-th element of the %j-th eigenvector, "
+	"%z__%ik_ is the %k-th element of the %i-th row of the selected "
+	"Matrix object, and %%dimension% is the number of elements in an eigenvector.")
 MAN_END
 
 MAN_BEGIN (U"Eigen & SSCP: Project", U"djmw", 20020328)
@@ -2361,6 +2393,36 @@ INTRO (U"$$fisherQ$ (%f, %df1, %df2) returns the area under Fisher's F-distribut
 	"from %f to +\\oo.")
 MAN_END
 
+MAN_BEGIN (U"IDX file format", U"djmw", 20160220)
+INTRO (U"The IDX file format is a simple format for vectors and multidimensional matrices of various numerical types. ")
+NORMAL (U"The basic format according to %%http://yann.lecun.com/exdb/mnist/% is:")
+CODE (U"magic number")
+CODE (U"size in dimension 1")
+CODE (U"size in dimension 2")
+CODE (U"size in dimension 3")
+CODE (U"....")
+CODE (U"size in dimension N")
+CODE (U"data")
+NORMAL (U"The magic number is four bytes long. The first 2 bytes are always 0.")
+NORMAL (U"The third byte codes the type of the data:")
+CODE (U"0x08: unsigned byte")
+CODE (U"0x09: signed byte")
+CODE (U"0x0B: short (2 bytes)")
+CODE (U"0x0C: int (4 bytes)")
+CODE (U"0x0D: float (4 bytes)")
+CODE (U"0x0E: double (8 bytes)")
+NORMAL (U"The fouth byte codes the number of dimensions of the vector/matrix: 1 for vectors, 2 for matrices....")
+NORMAL (U"The sizes in each dimension are 4-byte integers (big endian, like in most non-Intel processors).")
+NORMAL (U"The data is stored like in a C array, i.e. the index in the last dimension changes the fastest.")
+ENTRY (U"Behaviour")
+NORMAL (U"If the storage format indicates that there are more than 2 dimensions, the resulting Matrix accumulates dimensions 2 and higher in the columns. For example, with three dimensions of size n1, n2 and n3, respectively, the resulting Matrix object will have n1 rows and %%n2\\xxn3% columns.")
+
+ENTRY (U"Example")
+NORMAL (U"The training and testing data of the MNIST database of handwritten digits at http://yann.lecun.com/exdb/mnist/ is stored in %%compressed% IDX formatted files. ")
+NORMAL (U"Reading the uncompressed file %%train-images-idx3-ubyte% available at http://yann.lecun.com/exdb/mnist/ with 60000 images of 28\\xx28 pixel data, will result in a new Matrix object with 60000 rows and 784 (=28\\xx28) columns. Each cell will contain a number in the interval from 0 to 255.")
+NORMAL (U"Reading the uncompressed file %%train-labels-idx1-ubyte% with 60000 labels will result in a new Matrix object with 1 row and 60000 columns. Each cell will contain a number in the interval from 0 to 9.")
+MAN_END
+
 MAN_BEGIN (U"ISpline", U"djmw", 19990627)
 INTRO (U"One of the @@types of objects@ in P\\s{RAAT}. ")
 NORMAL (U"An object of type ISpline represents a linear combination of basis "
@@ -2413,6 +2475,17 @@ FORMULA (U"\\Si__%k=1..%numberOfCoefficients_ %c__%k_ %x^^%k^ = "
 NORMAL (U"We use the recurrence relation for @@Legendre polynomials@ to calculate these coefficients.")
 MAN_END
 
+MAN_BEGIN (U"Mahalanobis distance", U"djmw", 20160120)
+INTRO (U"The Mahalanobis distance is defined as the distance between a (multidimensional) point and a distribution. "
+	"It is the multivariate form of the distance measured in units of standard deviation and is "
+	"named after the famous Indian statistician R.P. Mahalanobis (1893 \\-- 1972).")
+NORMAL (U"Given a normal distribution with covariance matrix ##S# and mean ##\\mu#, the squared Mahalanobis distance of a point "
+	"##x## to the mean of this distribution is given by %d^^2^(##x#)=(##x#-##\\mu#)##\\'p###S#^^-1^(##x#-##\\mu#), where "
+	"(##x#-##\\mu#)##\\'p# is the transpose of (##x#-##\\mu#).")
+NORMAL (U"The distance formula above says that we have to weigh dimensions according to their covariances. If the covariance matrix ##S# "
+	"happens to be diagonal the formula above reduces to %d^^2^(##x#)=\\Si__%i=1_^^N^ (%x__%i_-%\\mu__%i_)^^2^/%\\si__%i_.")
+MAN_END
+
 MAN_BEGIN (U"Matrix: Draw distribution...", U"djmw", 20041110)
 INTRO (U"A command to draw the distribution histogram of the values in the selected part of a @Matrix.")
 ENTRY (U"Settings")
@@ -2666,7 +2739,7 @@ NORMAL (U"Because the algorithm performs a projection, the resulting Configurati
 NORMAL (U"See also @@Eigen & TableOfReal: Project... at .")
 MAN_END
 
-MAN_BEGIN (U"PCA & TableOfReal: To TableOfReal (z-scores)...", U"djmw", 20120510)
+MAN_BEGIN (U"PCA & TableOfReal: To TableOfReal (z-scores)...", U"djmw", 20151208)
 INTRO (U"A command to construct a @TableOfReal with z-scores from the selected @TableOfReal"
 	" and @PCA.")
 ENTRY (U"Setting")
@@ -2676,8 +2749,8 @@ ENTRY (U"Algorithm")
 NORMAL (U"The values %d__%ij_ in the new TableOfReal are calculated as")
 FORMULA (U"%d__%ij_ = ##eigenvector#__j_\\.c ##z#__%i_,")
 NORMAL (U"which is the inproduct of the %j-th eigenvector and the z-score vector ##z#__%i_ of the %i-th row whose elements %z__%ij_ are defined as")
-FORMULA (U"%z__%ij_ = (data__%ij_ - mean__%j_) / sqrt (eigenvalue__%j_),")
-NORMAL (U"in which data__%ij_ is the data value at row %i and column %j of the selected TableOfReal and mean__%j_ is the "
+FORMULA (U"%z__%ij_ = (%x__%ij_ - x\\-^__%j_) / sqrt (eigenvalue__%j_),")
+NORMAL (U"in which %x__%ij_ is the data value at row %i and column %j of the selected TableOfReal and x\\-^__%j_ is the "
 	"%j-th centroid value of the PCA. The square root of the %j-th eigenvalue is the standard deviation in "
 	" the %j-th principal direction.")
 MAN_END
@@ -2864,7 +2937,7 @@ FORMULA (U"%z__%k_ = %r e^^%i %k %\\fi^, where,")
 FORMULA (U"%\\fi = \\pi / (%numberOfFrequencies \\-- 1) and %r = 1.")
 MAN_END
 
-MAN_BEGIN (U"Principal component analysis", U"djmw", 20120510)
+MAN_BEGIN (U"Principal component analysis", U"djmw", 20160222)
 INTRO (U"This tutorial describes how you can perform principal component "
        "analysis with P\\s{RAAT}.")
 NORMAL (U"Principal component analysis (PCA) involves a mathematical procedure "
@@ -2878,9 +2951,9 @@ LIST_ITEM (U"\\bu To discover or to reduce the dimensionality of the data set.")
 LIST_ITEM (U"\\bu To identify new meaningful underlying variables.")
 ENTRY (U"2. How to start")
 NORMAL (U"We assume that the multi-dimensional data have been collected in a @TableOfReal data matrix, "
-	"in which the rows are associated with the cases and the columns with the variables.")
+	"in which the rows are associated with the cases and the columns with the variables. The TableOfReal is therefore interpreted as %%numberOfRows% data vectors, each data vector has %%numberofColumns% elements.")
 NORMAL (U"Traditionally, principal component analysis is performed on the "
-	"symmetric @@Covariance|Covariance@ matrix or on the symmetric @@correlation|Correlation@ matrix. "
+	"@@Covariance|Covariance@ matrix or on the @@correlation|Correlation@ matrix. "
 	"These matrices can be calculated from the data matrix. "
 	"The covariance matrix contains scaled @@SSCP|sums of squares and cross products at . "
 	"A correlation matrix is like a covariance matrix but first the variables, i.e. the columns, have been standardized.  "
@@ -2888,7 +2961,7 @@ NORMAL (U"Traditionally, principal component analysis is performed on the "
 	"variables differ much, or if the units of measurement of the "
 	"variables differ. You can standardize the data in the TableOfReal by choosing @@TableOfReal: Standardize columns|Standardize columns at .")
 NORMAL (U"To perform the analysis, we select the TabelOfReal data matrix in the list of objects and choose "
-	"@@TableOfReal: To PCA|To PCA at . This results in a new PCA object in the "
+	"@@TableOfReal: To PCA|To PCA at . This will result in a new PCA object in the "
 	"list of objects.")
 NORMAL (U"We can now make a @@Scree plot|scree@ plot of the eigenvalues, @@Eigen: Draw "
 	"eigenvalues...|Draw eigenvalues...@ "
@@ -2899,14 +2972,15 @@ NORMAL (U"We can now make a @@Scree plot|scree@ plot of the eigenvalues, @@Eigen
 	"accounted for... at . You might also check for the equality of a "
 	"number of eigenvalues: @@PCA: Get equality of eigenvalues...|Get equality "
 	"of eigenvalues... at .")
-ENTRY (U"3. Determining the number of components")
-NORMAL (U"There are two methods to help you to choose the number of components. "
+ENTRY (U"3. Determining the number of components to keep")
+NORMAL (U"There are two methods to help you to choose the number of components to keep. "
 	"Both methods are based on relations between the eigenvalues.")
 LIST_ITEM (U"\\bu Plot the eigenvalues, @@Eigen: Draw eigenvalues...|"
 	"Draw eigenvalues... at . If the points on the graph tend to level out (show an \"elbow\"), "
 	"these eigenvalues are usually close enough to zero that they can be "
 	"ignored.")
-LIST_ITEM (U"\\bu Limit the number of components to that number that accounts for a certain fraction of the total variance. For example, if you are satisfied with 95% of the total variance explained then use the number you get by the query ##Get number of components (VAF)... 0.95#.")
+LIST_ITEM (U"\\bu Limit the number of components to that number that accounts for a certain fraction of the total variance. For example, "
+	"if you are satisfied with 95\\%  of the total variance explained, then use the number you get by the query @@PCA: Get number of components (VAF)...|Get number of components (VAF)...@ 0.95#.")
 ENTRY (U"4. Getting the principal components")
 NORMAL (U"Principal components are obtained by projecting the multivariate "
 	"datavectors on the space spanned by the eigenvectors. This can be done "
@@ -3708,13 +3782,15 @@ DEFINITION (U"determines the label for a silent interval in the TextGrid.") \
 TAG (U"##Sounding interval label") \
 DEFINITION (U"determines the label for a sounding interval in the TextGrid.")
 
-MAN_BEGIN (U"Sound: To TextGrid (silences)...", U"djmw", 20061205)
+MAN_BEGIN (U"Sound: To TextGrid (silences)...", U"djmw", 20160406)
 INTRO (U"A command that creates a @TextGrid in which the silent and sounding intervals of the selected @Sound are marked.")
 ENTRY (U"Settings")
 xxx_to_TextGrid_detectSilences_COMMON_PARAMETERS_HELP
 ENTRY (U"Algorithm")
-NORMAL (U"First the intensity is determined according to the @@Sound: To Intensity...@ command. "
-	"Next the silent and sounding intervas are determined as in the @@Intensity: To TextGrid (silences)...@ command.")
+NORMAL (U"First a copy of the sound is @@Sound: Filter (pass Hann band)...|bandpass filtered@ between 80 and 8000 Hz to "
+	"remove especially the low frequency noise that can have a significant influence on the intensity measurement but does not "
+	"really contribute to the sound. Next the @@Sound: To Intensity...|intensity of the filtered sound@ is determined. "
+	"Finally the silent and sounding intervals are determined @@Intensity: To TextGrid (silences)...|from the intensity curve at .")
 MAN_END
 
 MAN_BEGIN (U"Intensity: To TextGrid (silences)...", U"djmw", 20061201)
@@ -4059,8 +4135,8 @@ NORMAL (U"Normally %numberOfConstraints will equal 1. However, when the SSCP was
 MAN_END
 
 MAN_BEGIN (U"SSCP & TableOfReal: Extract quantile range...", U"djmw", 20040225)
-INTRO (U"Extract those rows from the selected @TableOfReal object whose Mahalanobis "
-	"distance, with respect to the selected @SSCP object, are within the "
+INTRO (U"Extract those rows from the selected @TableOfReal object whose @@Mahalanobis "
+	"distance@, with respect to the selected @SSCP object, are within the "
 	"quantile range.")
 MAN_END
 
@@ -4605,7 +4681,7 @@ ENTRY (U"Remark")
 NORMAL (U"The resulting configuration is unique up to reflections along the new principal directions.")
 MAN_END
 
-MAN_BEGIN (U"TableOfReal: To Correlation", U"djmw", 20020105)
+MAN_BEGIN (U"TableOfReal: To Correlation", U"djmw", 20151209)
 INTRO (U"A command that creates a (%Pearson) @Correlation object from every "
 	"selected @TableOfReal object. The correlations are calculated between "
 	"columns.")
@@ -4613,14 +4689,14 @@ ENTRY (U"Algorithm")
 NORMAL (U"The linear correlation coefficient %r__%ij_ (also called the %%product"
 	" moment correlation coefficient% or %%Pearson's correlation coefficient%) "
 	" between the elements of columns %i and %j is calculated as:")
-FORMULA (U"%r__%ij_ = \\Si__%k_ (%x__%ki_ - %mean__%i_)(%x__%kj_ - %mean__%j_)/"
-	"(\\Vr (\\Si__%k_(%x__%ki_ - %mean__%i_)^2) \\Vr (\\Si__%k_(%x__%kj_ -"
-	" %mean__%j_)^2)),")
-NORMAL (U"where %x__%mn_ is the element %m in column %n, and %mean__%n_ "
+FORMULA (U"%r__%ij_ = \\Si__%k_ (%x__%ki_ - %x\\-^__%i_)(%x__%kj_ - %x\\-^__%j_)/"
+	"(\\Vr (\\Si__%k_(%x__%ki_ - %x\\-^__%i_)^2) \\Vr (\\Si__%k_(%x__%kj_ -"
+	" %x\\-^__%j_)^2)),")
+NORMAL (U"where %x__%mn_ is the element %m in column %n, and %x\\-^__%n_ "
 	"is the mean of column %n.")
 MAN_END
 
-MAN_BEGIN (U"TableOfReal: To Correlation (rank)", U"djmw", 20020105)
+MAN_BEGIN (U"TableOfReal: To Correlation (rank)", U"djmw", 20151209)
 INTRO (U"A command that creates a (%%Spearman rank-order%) @Correlation object "
 	"from every selected @TableOfReal object. The correlations are calculated "
 	"between columns.")
@@ -4628,23 +4704,23 @@ ENTRY (U"Algorithm")
 NORMAL (U"The Spearman rank-order correlation coefficient %r__%ij_ between "
 	"the elements of columns %i and %j is calculated as the linear correlation"
 	" of the ranks:")
-FORMULA (U"%r__%ij_ = \\Si__%k_ (%R__%ki_ - %Rmean__%i_) "
-	"(%R__%kj_ - %Rmean__%j_) / (\\Vr (\\Si__%k_(%R__%ki_ - %Rmean__%i_)^2) "
-	"\\Vr (\\Si__%k_(%R__%kj_ - %Rmean__%j_)^2)),")
+FORMULA (U"%r__%ij_ = \\Si__%k_ (%R__%ki_ - %R\\-^__%i_) "
+	"(%R__%kj_ - %R\\-^__%j_) / (\\Vr (\\Si__%k_(%R__%ki_ - %R\\-^__%i_)^2) "
+	"\\Vr (\\Si__%k_(%R__%kj_ - %R\\-^__%j_)^2)),")
 NORMAL (U"where %R__%mn_ is the rank of element %m in column %n, "
-	"and %Rmean__%n_ is the mean of the ranks in column %n.")
+	"and %R\\-^__%n_ is the mean of the ranks in column %n.")
 MAN_END
 
-MAN_BEGIN (U"TableOfReal: To Covariance", U"djmw", 20020117)
+MAN_BEGIN (U"TableOfReal: To Covariance", U"djmw", 20151209)
 INTRO (U"A command that creates a @Covariance object from every "
 	"selected @TableOfReal object. The covariances are calculated between "
 	"columns.")
 ENTRY (U"Algorithm")
 NORMAL (U"The covariance coefficients %s__%ij_ "
 	" between the elements of columns %i and %j are defined as:")
-FORMULA (U"%s__%ij_ = \\Si__%k_ (%x__%ki_ - %mean__%i_)(%x__%kj_ - %mean__%j_)/"
+FORMULA (U"%s__%ij_ = \\Si__%k_ (%x__%ki_ - %x\\-^__%i_)(%x__%kj_ - %x\\-^__%j_)/"
 	"(%numberOfObservations - %numberOfConstraints),")
-NORMAL (U"where %x__%ki_ is the element %k in column %i, %mean__%i_ "
+NORMAL (U"where %x__%ki_ is the element %k in column %i, %x\\-^__%i_ "
 	"is the mean of column %i, %numberOfObservations equals the number of rows in "
 	"the table, and %numberOfConstraints equals 1.")
 NORMAL (U"The actual calculation goes as follows")
@@ -4674,9 +4750,10 @@ NORMAL (U"The a priori probabilities in the Discriminant will be calculated from
 FORMULA (U"%aprioriProbability__%i_ = %n__%i_ / \\Si__%k=1..%numberOfGroups_ %n__%k_")
 MAN_END
 
-MAN_BEGIN (U"TableOfReal: To PCA", U"djmw", 19980106)
+MAN_BEGIN (U"TableOfReal: To PCA", U"djmw", 20160223)
 INTRO (U"A command that creates a @PCA object from every selected "
-	"@TableOfReal object.")
+	"@TableOfReal object, where the TableOfReal object is interpreted as row-oriented, i.e. %%numberOfRows% data vectors, each data vector has %%numberofColumns% elements.")
+NORMAL (U"In @@Principal component analysis|the tutorial on PCA@ you will find more info on principal component analysis.")
 MAN_END
 
 MAN_BEGIN (U"TableOfReal: To SSCP...", U"djmw", 19990218)
@@ -4684,8 +4761,8 @@ INTRO (U"Calculates Sums of Squares and Cross Products (@SSCP) from the selected
 ENTRY (U"Algorithm")
 NORMAL (U"The sums of squares and cross products %s__%ij_ "
 	" between the elements of columns %i and %j are calculated as:")
-FORMULA (U"%s__%ij_ = \\Si__%k_ (%x__%ki_ - %mean__%i_)(%x__%kj_ - %mean__%j_),")
-NORMAL (U"where %x__%mn_ is the element %m in column %n and %mean__%n_ "
+FORMULA (U"%s__%ij_ = \\Si__%k_ (%x__%ki_ - %x\\-^__%i_)(%x__%kj_ - %x\\-^__%j_),")
+NORMAL (U"where %x__%mn_ is the element %m in column %n and %x\\-^__%n_ "
 	"is the mean of column %n.")
 MAN_END
 
diff --git a/dwtools/praat_BSS_init.cpp b/dwtools/praat_BSS_init.cpp
index c377d51..17770d6 100644
--- a/dwtools/praat_BSS_init.cpp
+++ b/dwtools/praat_BSS_init.cpp
@@ -1,20 +1,19 @@
-/* praat_BSS_init.c
+/* praat_BSS_init.cpp
  *
- * Copyright (C) 2010-2014 David Weenink
+ * Copyright (C) 2010-2014,2015 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -52,7 +51,7 @@ DO
 	LOOP {
 		iam (EEG);
 		autoCrossCorrelationTable cct = EEG_to_CrossCorrelationTable (me, startTime, endTime, lagTime, channelRanges);
-		praat_new (cct.transfer(), my name, U"_", (long) floor (lagTime*1000)); // lagTime to ms   ppgb: geeft afrondingsfouten; waarom niet round?
+		praat_new (cct.move(), my name, U"_", (long) floor (lagTime*1000)); // lagTime to ms   ppgb: geeft afrondingsfouten; waarom niet round?
 	}
 END
 
@@ -68,11 +67,11 @@ DO
 	LOOP {
 		iam (EEG);
 		autoCovariance cov = EEG_to_Covariance (me, startTime, endTime, channelRanges);
-		praat_new (cov.transfer(), my name);
+		praat_new (cov.move(), my name);
 	}
 END
 
-FORM (EEG_to_CrossCorrelationTables, U"EEG: To CrossCorrelationTables", U"EEG: To CrossCorrelationTables...")
+FORM (EEG_to_CrossCorrelationTableList, U"EEG: To CrossCorrelationTableList", U"EEG: To CrossCorrelationTableList...")
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"10.0")
 	POSITIVE (U"Lag step (s)", U"0.02")
@@ -83,9 +82,9 @@ FORM (EEG_to_CrossCorrelationTables, U"EEG: To CrossCorrelationTables", U"EEG: T
 DO
 	LOOP {
 		iam (EEG);
-		autoCrossCorrelationTables thee = EEG_to_CrossCorrelationTables (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
+		autoCrossCorrelationTableList thee = EEG_to_CrossCorrelationTableList (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 			GET_REAL (U"Lag step"), GET_INTEGER (U"Number of cross-correlations"), GET_STRING (U"Channel ranges"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -116,7 +115,7 @@ DO
 			GET_INTEGER (U"Number of cross-correlations"), GET_REAL (U"Lag step"), GET_STRING (U"Channel ranges"),
 			whiteningMethod, GET_INTEGER (U"Diagonalization method"),
 			GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance"));
-		praat_new (thee.transfer(), my name, U"_bss");
+		praat_new (thee.move(), my name, U"_bss");
 	}
 END
 
@@ -136,7 +135,7 @@ DO
 	LOOP {
 		iam (EEG);
 		autoPCA pca = EEG_to_PCA (me, startTime, endTime, channelRanges, useCorrelation);
-		praat_new (pca.transfer(), my name);
+		praat_new (pca.move(), my name);
 	}
 END
 
@@ -147,7 +146,7 @@ DO
 	EEG me = FIRST (EEG);
 	PCA thee = FIRST (PCA);
 	autoEEG him = EEG_and_PCA_to_EEG_principalComponents (me, thee, GET_INTEGER (U"Number of components"));
-	praat_new (him.transfer(), my name, U"_pc");
+	praat_new (him.move(), my name, U"_pc");
 END
 
 FORM (EEG_and_PCA_to_EEG_whiten, U"EEG & PCA: To EEG (whiten)", U"EEG & PCA: To EEG (whiten)...")
@@ -157,7 +156,7 @@ DO
 	EEG me = FIRST (EEG);
 	PCA thee = FIRST (PCA);
 	autoEEG him = EEG_and_PCA_to_EEG_whiten (me, thee, GET_INTEGER (U"Number of components"));
-	praat_new (him.transfer(), my name, U"_white");
+	praat_new (him.move(), my name, U"_white");
 END
 
 FORM (EEG_to_Sound_modulated, U"EEG: To Sound (modulated)", 0)
@@ -171,7 +170,7 @@ DO
 		iam (EEG);
 		autoSound thee = EEG_to_Sound_modulated (me, GET_REAL (U"Start frequency"), GET_REAL (U"Channel bandwidth"),
 			GET_STRING (U"Channel ranges"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -187,13 +186,13 @@ DO
 		iam (EEG);
 		autoSound thee = EEG_to_Sound_frequencyShifted (me, channel, GET_REAL (U"Frequency shift"),
 			GET_REAL (U"Sampling frequecy"), GET_REAL (U"Maximum amplitude"));
-		praat_new (thee.transfer(), my name, U"_ch", channel);
+		praat_new (thee.move(), my name, U"_ch", channel);
 	}
 END
 
 /********************** CrossCorrelationTable(s) ******************/
 
-FORM (CrossCorrelationTables_createTestSet, U"CrossCorrelationTables: Create test set", U"CrossCorrelationTables: Create test set...")
+FORM (CrossCorrelationTableList_createTestSet, U"CrossCorrelationTableList: Create test set", U"CrossCorrelationTableList: Create test set...")
 	WORD (U"Name", U"5x5")
 	NATURAL (U"Matrix dimension", U"5")
 	NATURAL (U"Number of matrices", U"20")
@@ -201,8 +200,9 @@ FORM (CrossCorrelationTables_createTestSet, U"CrossCorrelationTables: Create tes
 	REAL (U"Sigma", U"0.02")
 	OK
 DO
-	praat_new (CrossCorrelationTables_createTestSet (GET_INTEGER (U"Matrix dimension"),
-		GET_INTEGER (U"Number of matrices"), GET_INTEGER (U"First is positive definite"), GET_REAL (U"Sigma")), GET_STRING (U"Name"));
+	autoCrossCorrelationTableList thee = CrossCorrelationTableList_createTestSet (GET_INTEGER (U"Matrix dimension"),
+		GET_INTEGER (U"Number of matrices"), GET_INTEGER (U"First is positive definite"), GET_REAL (U"Sigma"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (CrossCorrelationTable_createSimple, U"Create simple CrossCorrelationTable", 0)
@@ -212,8 +212,9 @@ FORM (CrossCorrelationTable_createSimple, U"Create simple CrossCorrelationTable"
 	NATURAL (U"Number of samples", U"100")
 	OK
 DO
-	praat_new (CrossCorrelationTable_createSimple (GET_STRING (U"Cross correlations"), GET_STRING (U"Centroid"),
-		GET_INTEGER (U"Number of samples")), GET_STRING (U"Name"));
+	autoCrossCorrelationTable thee = CrossCorrelationTable_createSimple (GET_STRING (U"Cross correlations"), GET_STRING (U"Centroid"),
+		GET_INTEGER (U"Number of samples"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (MixingMatrix_createSimple, U"Create simple MixingMatrix", 0)
@@ -223,8 +224,9 @@ FORM (MixingMatrix_createSimple, U"Create simple MixingMatrix", 0)
 	SENTENCE (U"Mixing coefficients", U"1.0 1.0 1.0 1.0")
 	OK
 DO
-	praat_new (MixingMatrix_createSimple (GET_INTEGER (U"Number of channels"), GET_INTEGER (U"Number of components"),
-		GET_STRING (U"Mixing coefficients")), GET_STRING (U"Name"));
+	autoMixingMatrix thee = MixingMatrix_createSimple (GET_INTEGER (U"Number of channels"), GET_INTEGER (U"Number of components"),
+		GET_STRING (U"Mixing coefficients"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 DIRECT (CrossCorrelationTable_help)
@@ -237,7 +239,8 @@ FORM (Sound_and_PCA_principalComponents, U"Sound & PCA: To Sound (principal comp
 DO
 	Sound me = FIRST (Sound);
 	PCA thee = FIRST (PCA);
-	praat_new (Sound_and_PCA_principalComponents (me, thee, GET_INTEGER (U"Number of components")), Thing_getName (me), U"_pc");
+	autoSound him = Sound_and_PCA_principalComponents (me, thee, GET_INTEGER (U"Number of components"));
+	praat_new (him.move(), my name, U"_pc");
 END
 
 FORM (Sound_and_PCA_whitenChannels, U"Sound & PCA: To Sound (white channels)", 0)
@@ -246,14 +249,16 @@ FORM (Sound_and_PCA_whitenChannels, U"Sound & PCA: To Sound (white channels)", 0
 DO
 	Sound me = FIRST (Sound);
 	PCA thee = FIRST (PCA);
-	praat_new (Sound_and_PCA_whitenChannels (me, thee, GET_INTEGER (U"Number of components")), Thing_getName (me), U"_white");
+	autoSound him = Sound_and_PCA_whitenChannels (me, thee, GET_INTEGER (U"Number of components"));
+	praat_new (him.move(), my name, U"_white");
 END
 
-DIRECT (CrossCorrelationTable_to_CrossCorrelationTables)
-	autoCrossCorrelationTables thee = CrossCorrelationTables_create ();
+DIRECT (CrossCorrelationTable_to_CrossCorrelationTableList)
+	autoCrossCorrelationTableList thee = CrossCorrelationTableList_create ();
 	long nrows = 0, ncols = 0, nselected = 0;
 	LOOP {
-		iam (CrossCorrelationTable); nselected++;
+		iam (CrossCorrelationTable);
+		nselected++;
 		if (nselected == 1) {
 			nrows = my numberOfRows;
 			ncols = my numberOfColumns;
@@ -262,9 +267,9 @@ DIRECT (CrossCorrelationTable_to_CrossCorrelationTables)
 			Melder_throw (U"Dimensions of table ", IOBJECT, U" differs from the rest.");
 		}
 		autoCrossCorrelationTable myc = Data_copy (me);
-		Collection_addItem (thee.peek(), myc.transfer());
+		thy addItem_move (myc.move());
 	}
-	praat_new (thee.transfer(), U"ct_", nselected);
+	praat_new (thee.move(), U"ct_", nselected);
 END
 
 FORM (Sound_to_Covariance_channels, U"Sound: To Covariance (channels)", U"Sound: To Covariance (channels)...")
@@ -274,7 +279,8 @@ FORM (Sound_to_Covariance_channels, U"Sound: To Covariance (channels)", U"Sound:
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_Covariance_channels (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range")), my name);
+		autoCovariance thee = Sound_to_Covariance_channels (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -287,8 +293,9 @@ DO
 	double lagTime = fabs (GET_REAL (U"Lag step"));
     LOOP {
         iam (Sound);
-        praat_new (Sound_to_CrossCorrelationTable (me, GET_REAL (U"left Time range"),
-        GET_REAL (U"right Time range"), lagTime), my name);
+		autoCrossCorrelationTable thee = Sound_to_CrossCorrelationTable (me, GET_REAL (U"left Time range"),
+        GET_REAL (U"right Time range"), lagTime);
+        praat_new (thee.move(), my name);
     }
 END
 
@@ -298,50 +305,50 @@ FORM (Sounds_to_CrossCorrelationTable_combined, U"Sound: To CrossCorrelationTabl
 	REAL (U"Lag step (s)", U"0.0")
 	OK
 DO
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		(s1 ? s2 : s1) = me;
 	}
-	Melder_assert (s1 != NULL && s2 != NULL);
+	Melder_assert (s1 && s2);
 	autoCrossCorrelationTable thee = Sounds_to_CrossCorrelationTable_combined (s1, s2, GET_REAL (U"left Time range"),
 		GET_REAL (U"right Time range"), GET_REAL (U"Lag step"));
-	praat_new (thee.transfer(), s1 -> name, U"_", s2 -> name, U"_cc");
+	praat_new (thee.move(), s1 -> name, U"_", s2 -> name, U"_cc");
 END
 
-DIRECT (CrossCorrelationTables_help)
-Melder_help (U"CrossCorrelationTables");
+DIRECT (CrossCorrelationTableList_help)
+Melder_help (U"CrossCorrelationTableList");
 	END
 
-FORM (CrossCorrelationTables_getDiagonalityMeasure, U"CrossCorrelationTables: Get diagonality measure", U"CrossCorrelationTables: Get diagonality measure...")
+FORM (CrossCorrelationTableList_getDiagonalityMeasure, U"CrossCorrelationTableList: Get diagonality measure", U"CrossCorrelationTableList: Get diagonality measure...")
 	NATURAL (U"First table", U"1")
 	NATURAL (U"Last table", U"100")
 	OK
 DO
 	LOOP {
-		iam (CrossCorrelationTables);
-		double dm = CrossCorrelationTables_getDiagonalityMeasure (me, 0, GET_INTEGER (U"First table"),
+		iam (CrossCorrelationTableList);
+		double dm = CrossCorrelationTableList_getDiagonalityMeasure (me, 0, GET_INTEGER (U"First table"),
 		GET_INTEGER (U"Last table"));
 		Melder_information (dm, U" (= average sum of squared off-diagonal elements)");
 	}
 END
 
-FORM (CrossCorrelationTables_extractCrossCorrelationTable, U"CrossCorrelationTables: Extract one CrossCorrelationTable", 0)
+FORM (CrossCorrelationTableList_extractCrossCorrelationTable, U"CrossCorrelationTableList: Extract one CrossCorrelationTable", nullptr)
 	NATURAL (U"Index", U"1")
 	OK
 DO
 	long index = GET_INTEGER (U"Index");
 	LOOP {
-		iam (CrossCorrelationTables);
+		iam (CrossCorrelationTableList);
 		if (index > my size) {
 			Melder_throw (U"Index too large.");
 		}
-		autoCrossCorrelationTable thee = Data_copy ( (CrossCorrelationTable) my item[index]);
-		praat_new (thee.transfer(), Thing_getName (me), U"_", index);
+		autoCrossCorrelationTable thee = Data_copy (my at [index]);
+		praat_new (thee.move(), Thing_getName (me), U"_", index);
 	}
 END
 
-FORM (CrossCorrelationTables_to_Diagonalizer, U"CrossCorrelationTables: To Diagonalizer", 0)
+FORM (CrossCorrelationTableList_to_Diagonalizer, U"CrossCorrelationTableList: To Diagonalizer", nullptr)
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
 	OPTIONMENU (U"Diagonalization method", 2)
@@ -350,13 +357,14 @@ FORM (CrossCorrelationTables_to_Diagonalizer, U"CrossCorrelationTables: To Diago
 	OK
 DO
 	LOOP {
-		iam (CrossCorrelationTables);
-		praat_new (CrossCorrelationTables_to_Diagonalizer (me, GET_INTEGER (U"Maximum number of iterations"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Diagonalization method")), my name);
+		iam (CrossCorrelationTableList);
+		autoDiagonalizer thee = CrossCorrelationTableList_to_Diagonalizer (me, GET_INTEGER (U"Maximum number of iterations"),
+		GET_REAL (U"Tolerance"), GET_INTEGER (U"Diagonalization method"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Diagonalizer_and_CrossCorrelationTables_improveDiagonality, U"Diagonalizer & CrossCorrelationTables: Improve diagonality", 0)
+FORM (Diagonalizer_and_CrossCorrelationTableList_improveDiagonality, U"Diagonalizer & CrossCorrelationTableList: Improve diagonality", nullptr)
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
 	OPTIONMENU (U"Diagonalization method", 2)
@@ -365,19 +373,19 @@ FORM (Diagonalizer_and_CrossCorrelationTables_improveDiagonality, U"Diagonalizer
 	OK
 DO
 	Diagonalizer d = FIRST (Diagonalizer);
-	CrossCorrelationTables ccts = FIRST (CrossCorrelationTables);
-	Diagonalizer_and_CrossCorrelationTables_improveDiagonality (d, ccts, GET_INTEGER (U"Maximum number of iterations"),
+	CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList);
+	Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (d, ccts, GET_INTEGER (U"Maximum number of iterations"),
 		GET_REAL (U"Tolerance"), GET_INTEGER (U"Diagonalization method"));
 END
 
-FORM (CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure, U"CrossCorrelationTables & Diagonalizer: Get diagonality measure", 0)
+FORM (CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure, U"CrossCorrelationTableList & Diagonalizer: Get diagonality measure", nullptr)
 	NATURAL (U"First table", U"1")
 	NATURAL (U"Last table", U"100")
 	OK
 DO
-	CrossCorrelationTables ccts = FIRST (CrossCorrelationTables);
+	CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList);
 	Diagonalizer d = FIRST (Diagonalizer);
-	double dm = CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure (ccts, d, 0, GET_INTEGER (U"First table"),
+	double dm = CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure (ccts, d, 0, GET_INTEGER (U"First table"),
 		GET_INTEGER (U"Last table"));
 	Melder_information (dm, U" (= average sum of squared off-diagonal elements)");
 END
@@ -385,16 +393,18 @@ END
 DIRECT (CrossCorrelationTable_and_Diagonalizer_diagonalize)
 	CrossCorrelationTable cct = FIRST (CrossCorrelationTable);
 	Diagonalizer d = FIRST (Diagonalizer);
-	praat_new (CrossCorrelationTable_and_Diagonalizer_diagonalize (cct, d), cct->name, U"_", d->name);
+	autoCrossCorrelationTable thee = CrossCorrelationTable_and_Diagonalizer_diagonalize (cct, d);
+	praat_new (thee.move(), cct -> name, U"_", d -> name);
 END
 
-DIRECT (CrossCorrelationTables_and_Diagonalizer_diagonalize)
-	CrossCorrelationTables ccts = FIRST (CrossCorrelationTables);
+DIRECT (CrossCorrelationTableList_and_Diagonalizer_diagonalize)
+	CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList);
 	Diagonalizer d = FIRST (Diagonalizer);
-	praat_new (CrossCorrelationTables_and_Diagonalizer_diagonalize (ccts, d), ccts->name, U"_", d->name);
+	autoCrossCorrelationTableList thee = CrossCorrelationTableList_and_Diagonalizer_diagonalize (ccts, d);
+	praat_new (thee.move(), ccts->name, U"_", d->name);
 END
 
-FORM (CrossCorrelationTables_and_MixingMatrix_improveUnmixing, U"", 0)
+FORM (CrossCorrelationTableList_and_MixingMatrix_improveUnmixing, U"", nullptr)
 	LABEL (U"", U"Iteration parameters")
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
@@ -404,19 +414,20 @@ FORM (CrossCorrelationTables_and_MixingMatrix_improveUnmixing, U"", 0)
 	OK
 DO
 	MixingMatrix mm = FIRST (MixingMatrix);
-	CrossCorrelationTables ccts = FIRST (CrossCorrelationTables);
-	MixingMatrix_and_CrossCorrelationTables_improveUnmixing (mm, ccts,
+	CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList);
+	MixingMatrix_and_CrossCorrelationTableList_improveUnmixing (mm, ccts,
 		GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance"), GET_INTEGER (U"Diagonalization method"));
 END
 
 DIRECT (Diagonalizer_to_MixingMatrix)
 	LOOP {
 		iam (Diagonalizer);
-		praat_new (Diagonalizer_to_MixingMatrix (me), my name);
+		autoMixingMatrix thee = Diagonalizer_to_MixingMatrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Sound_to_MixingMatrix, U"Sound: To MixingMatrix", 0)
+FORM (Sound_to_MixingMatrix, U"Sound: To MixingMatrix", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"10.0")
 	NATURAL (U"Number of cross-correlations", U"40")
@@ -425,20 +436,20 @@ FORM (Sound_to_MixingMatrix, U"Sound: To MixingMatrix", 0)
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
 	OPTIONMENU (U"Diagonalization method", 2)
-	OPTION (U"qdiag")
-	OPTION (U"ffdiag")
+		OPTION (U"qdiag")
+		OPTION (U"ffdiag")
 	OK
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_MixingMatrix (me,
-			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_INTEGER (U"Number of cross-correlations"),
-			GET_REAL (U"Lag step"), GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance"),
-			GET_INTEGER (U"Diagonalization method")), my name);
+		autoMixingMatrix thee = Sound_to_MixingMatrix (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), 
+			GET_INTEGER (U"Number of cross-correlations"), GET_REAL (U"Lag step"), GET_INTEGER (U"Maximum number of iterations"),
+			GET_REAL (U"Tolerance"), GET_INTEGER (U"Diagonalization method"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Sound_to_CrossCorrelationTables, U"Sound: To CrossCorrelationTables", 0)
+FORM (Sound_to_CrossCorrelationTableList, U"Sound: To CrossCorrelationTableList", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"10.0")
 	NATURAL (U"Number of cross-correlations", U"40")
@@ -447,7 +458,8 @@ FORM (Sound_to_CrossCorrelationTables, U"Sound: To CrossCorrelationTables", 0)
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_CrossCorrelationTables (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_REAL (U"Lag step"), GET_INTEGER (U"Number of cross-correlations")), my name);
+		autoCrossCorrelationTableList thee = Sound_to_CrossCorrelationTableList (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_REAL (U"Lag step"), GET_INTEGER (U"Number of cross-correlations"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -460,16 +472,17 @@ FORM (Sound_to_Sound_bss, U"Sound: To Sound (blind source separation)", U"Sound:
 	NATURAL (U"Maximum number of iterations", U"100")
 	POSITIVE (U"Tolerance", U"0.001")
 	OPTIONMENU (U"Diagonalization method", 2)
-	OPTION (U"qdiag")
-	OPTION (U"ffdiag")
+		OPTION (U"qdiag")
+		OPTION (U"ffdiag")
 	OK
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_Sound_BSS (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
+		autoSound thee = Sound_to_Sound_BSS (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 			GET_INTEGER (U"Number of cross-correlations"), GET_REAL (U"Lag step"),
 			GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance"),
-			GET_INTEGER (U"Diagonalization method")), my name, U"_bss");
+			GET_INTEGER (U"Diagonalization method"));
+		praat_new (thee.move(), my name, U"_bss");
 	}
 END
 
@@ -482,47 +495,51 @@ DO
     long permille = (long) floor (varianceFraction * 1000.0);
     LOOP {
         iam (Sound);
-        praat_new (Sound_whitenChannels (me, varianceFraction), my name, U"_", permille);
+		autoSound thee = Sound_whitenChannels (me, varianceFraction);
+        praat_new (thee.move(), my name, U"_", permille);
     }
 END
 
 DIRECT (Sound_and_MixingMatrix_mix)
 	Sound s = FIRST (Sound);
 	MixingMatrix mm = FIRST (MixingMatrix);
-	praat_new (Sound_and_MixingMatrix_mix (s, mm), Thing_getName (s), U"_mixed");
+	autoSound thee = Sound_and_MixingMatrix_mix (s, mm);
+	praat_new (thee.move(), Thing_getName (s), U"_mixed");
 END
 
 DIRECT (Sound_and_MixingMatrix_unmix)
 	Sound s = FIRST (Sound);
 	MixingMatrix mm = FIRST (MixingMatrix);
-	praat_new (Sound_and_MixingMatrix_unmix (s, mm), Thing_getName (s), U"_unmixed");
+	autoSound thee = Sound_and_MixingMatrix_unmix (s, mm);
+	praat_new (thee.move(), Thing_getName (s), U"_unmixed");
 END
 
 DIRECT (TableOfReal_to_MixingMatrix)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_MixingMatrix (me), my name);
+		autoMixingMatrix thee = TableOfReal_to_MixingMatrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 FORM (TableOfReal_and_TableOfReal_crossCorrelations, U"TableOfReal & TableOfReal: Cross-correlations", 0)
 	OPTIONMENU (U"Correlations between", 1)
-	OPTION (U"Rows")
-	OPTION (U"Columns")
-	BOOLEAN (U"Center", 0)
-	BOOLEAN (U"Normalize", 0)
+		OPTION (U"Rows")
+		OPTION (U"Columns")
+	BOOLEAN (U"Center", false)
+	BOOLEAN (U"Normalize", false)
 	OK
 DO
-	TableOfReal t1 = 0, t2 = 0;
+	TableOfReal t1 = nullptr, t2 = nullptr;
 	LOOP {
 		iam (TableOfReal);
 		(t1 ? t2 : t1) = me;
 	}
-	Melder_assert (t1 != NULL && t2 != NULL);
+	Melder_assert (t1 && t2);
 	int by_columns = GET_INTEGER (U"Correlations between") - 1;
-	praat_new (TableOfReal_and_TableOfReal_crossCorrelations (t1, t2, by_columns,
-		GET_INTEGER (U"Center"), GET_INTEGER (U"Normalize")),
-		(by_columns ? U"by_columns" : U"by_rows"));
+	autoTableOfReal thee = TableOfReal_and_TableOfReal_crossCorrelations (t1, t2, by_columns,
+		GET_INTEGER (U"Center"), GET_INTEGER (U"Normalize"));
+	praat_new (thee.move(), ( by_columns ? U"by_columns" : U"by_rows" ));
 END
 
 void praat_TableOfReal_init3 (ClassInfo klas) {
@@ -530,23 +547,25 @@ void praat_TableOfReal_init3 (ClassInfo klas) {
 	praat_addAction1 (klas, 2, U"To TableOfReal (cross-correlations)...", 0, 0, DO_TableOfReal_and_TableOfReal_crossCorrelations);
 }
 
-void praat_BSS_init (void);
-void praat_BSS_init (void) {
-	Thing_recognizeClassesByName (classDiagonalizer, classMixingMatrix, classCrossCorrelationTable, classCrossCorrelationTables, NULL);
+void praat_BSS_init ();
+void praat_BSS_init () {
+	Thing_recognizeClassesByName (classDiagonalizer, classMixingMatrix, classCrossCorrelationTable, classCrossCorrelationTableList, nullptr);
+	Thing_recognizeClassByOtherName (classCrossCorrelationTableList, U"CrossCorrelationTables");
 
 	praat_addMenuCommand (U"Objects", U"New", U"Create simple CrossCorrelationTable...", U"Create simple Covariance...", praat_HIDDEN + praat_DEPTH_1, DO_CrossCorrelationTable_createSimple);
-	praat_addMenuCommand (U"Objects", U"New", U"Create test CrossCorrelationTables...", U"Create simple CrossCorrelationTable...", praat_HIDDEN + praat_DEPTH_1, DO_CrossCorrelationTables_createTestSet);
-	praat_addMenuCommand (U"Objects", U"New", U"Create simple MixingMatrix...", U"Create test CrossCorrelationTables...", praat_HIDDEN + praat_DEPTH_1, DO_MixingMatrix_createSimple);
+	praat_addMenuCommand (U"Objects", U"New", U"Create test CrossCorrelationTableList...", U"Create simple CrossCorrelationTable...", praat_HIDDEN + praat_DEPTH_1, DO_CrossCorrelationTableList_createTestSet);
+	praat_addMenuCommand (U"Objects", U"New", U"Create simple MixingMatrix...", U"Create test CrossCorrelationTableList...", praat_HIDDEN + praat_DEPTH_1, DO_MixingMatrix_createSimple);
 
 	praat_addAction1 (classCrossCorrelationTable, 0, U"CrossCorrelationTable help", 0, 0, DO_CrossCorrelationTable_help);
 	praat_SSCP_as_TableOfReal_init (classCrossCorrelationTable);
 
-	praat_addAction1 (classCrossCorrelationTable, 0, U"To CrossCorrelationTables", 0, 0, DO_CrossCorrelationTable_to_CrossCorrelationTables);
+	praat_addAction1 (classCrossCorrelationTable, 0, U"To CrossCorrelationTableList", nullptr, 0, DO_CrossCorrelationTable_to_CrossCorrelationTableList);
+	praat_addAction1 (classCrossCorrelationTable, 0, U"To CrossCorrelationTables", nullptr, praat_HIDDEN, DO_CrossCorrelationTable_to_CrossCorrelationTableList);
 
-	praat_addAction1 (classCrossCorrelationTables, 0, U"CrossCorrelationTables help", 0, 0, DO_CrossCorrelationTables_help);
-	praat_addAction1 (classCrossCorrelationTables, 1, U"Extract CrossCorrelationTable...", 0, 0, DO_CrossCorrelationTables_extractCrossCorrelationTable);
-	praat_addAction1 (classCrossCorrelationTables, 1, U"Get diagonality measure...", 0, 0, DO_CrossCorrelationTables_getDiagonalityMeasure);
-	praat_addAction1 (classCrossCorrelationTables, 0, U"To Diagonalizer...", 0, 0, DO_CrossCorrelationTables_to_Diagonalizer);
+	praat_addAction1 (classCrossCorrelationTableList, 0, U"CrossCorrelationTableList help", 0, 0, DO_CrossCorrelationTableList_help);
+	praat_addAction1 (classCrossCorrelationTableList, 1, U"Extract CrossCorrelationTable...", 0, 0, DO_CrossCorrelationTableList_extractCrossCorrelationTable);
+	praat_addAction1 (classCrossCorrelationTableList, 1, U"Get diagonality measure...", 0, 0, DO_CrossCorrelationTableList_getDiagonalityMeasure);
+	praat_addAction1 (classCrossCorrelationTableList, 0, U"To Diagonalizer...", 0, 0, DO_CrossCorrelationTableList_to_Diagonalizer);
 
 	praat_TableOfReal_init3 (classDiagonalizer);
 	praat_addAction1 (classDiagonalizer, 0, U"To MixingMatrix", 0, 0, DO_Diagonalizer_to_MixingMatrix);
@@ -555,7 +574,8 @@ void praat_BSS_init (void) {
 	praat_addAction1 (classEEG, 0, U"To Sound (frequency shifted)...", U"To ERPTier...", 0, DO_EEG_to_Sound_frequencyShifted);
 	praat_addAction1 (classEEG, 0, U"To PCA...", U"To ERPTier...", 0, DO_EEG_to_PCA);
 	praat_addAction1 (classEEG, 0, U"To CrossCorrelationTable...", U"To PCA...", praat_HIDDEN, DO_EEG_to_CrossCorrelationTable);
-	praat_addAction1 (classEEG, 0, U"To CrossCorrelationTables...", U"To PCA...", praat_HIDDEN, DO_EEG_to_CrossCorrelationTables);
+	praat_addAction1 (classEEG, 0, U"To CrossCorrelationTables...", U"To PCA...", praat_HIDDEN, DO_EEG_to_CrossCorrelationTableList);
+	praat_addAction1 (classEEG, 0, U"To CrossCorrelationTableList...", U"To PCA...", praat_HIDDEN, DO_EEG_to_CrossCorrelationTableList);
 
 	praat_addAction1 (classEEG, 0, U"To Covariance...", U"To CrossCorrelationTable...", praat_HIDDEN, DO_EEG_to_Covariance);
 	praat_addAction1 (classEEG, 0, U"To EEG (bss)...", U"To CrossCorrelationTable...", praat_HIDDEN, DO_EEG_to_EEG_bss);
@@ -569,7 +589,8 @@ void praat_BSS_init (void) {
 	praat_addAction1 (classSound, 0, U"To MixingMatrix...",  U"Resample...", praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_MixingMatrix);
     praat_addAction1 (classSound, 0, U"To CrossCorrelationTable...",  U"Resample...", 1, DO_Sound_to_CrossCorrelationTable);
     praat_addAction1 (classSound, 0, U"To Covariance (channels)...",  U"Resample...", praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_Covariance_channels);
-	praat_addAction1 (classSound, 0, U"To CrossCorrelationTables...",  U"Resample...", praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_CrossCorrelationTables);
+	praat_addAction1 (classSound, 0, U"To CrossCorrelationTables...",  U"Resample...", praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_CrossCorrelationTableList);
+	praat_addAction1 (classSound, 0, U"To CrossCorrelationTableList...",  U"Resample...", praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_CrossCorrelationTableList);
 
 	praat_addAction1 (classSound, 0, U"To Sound (bss)...", U"Resample...", 1, DO_Sound_to_Sound_bss);
     praat_addAction1 (classSound, 0, U"To Sound (white channels)...", U"Resample...", 1, DO_Sound_to_Sound_whiteChannels);
@@ -585,13 +606,13 @@ void praat_BSS_init (void) {
 
 	praat_addAction2 (classCrossCorrelationTable, 1, classDiagonalizer, 1, U"Diagonalize", 0 , 0, DO_CrossCorrelationTable_and_Diagonalizer_diagonalize);
 
-	praat_addAction2 (classCrossCorrelationTables, 1, classDiagonalizer, 1, U"Get diagonality measure...", 0 , 0, DO_CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure);
-	praat_addAction2 (classCrossCorrelationTables, 1, classDiagonalizer, 1, U"Diagonalize", 0 , 0, DO_CrossCorrelationTables_and_Diagonalizer_diagonalize);
-	praat_addAction2 (classCrossCorrelationTables, 1, classDiagonalizer, 1, U"Improve diagonality...", 0 , 0, DO_Diagonalizer_and_CrossCorrelationTables_improveDiagonality);
+	praat_addAction2 (classCrossCorrelationTableList, 1, classDiagonalizer, 1, U"Get diagonality measure...", 0 , 0, DO_CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure);
+	praat_addAction2 (classCrossCorrelationTableList, 1, classDiagonalizer, 1, U"Diagonalize", 0 , 0, DO_CrossCorrelationTableList_and_Diagonalizer_diagonalize);
+	praat_addAction2 (classCrossCorrelationTableList, 1, classDiagonalizer, 1, U"Improve diagonality...", 0 , 0, DO_Diagonalizer_and_CrossCorrelationTableList_improveDiagonality);
 
-	praat_addAction2 (classCrossCorrelationTables, 1, classMixingMatrix, 1, U"Improve unmixing...", 0 , 0, DO_CrossCorrelationTables_and_MixingMatrix_improveUnmixing);
+	praat_addAction2 (classCrossCorrelationTableList, 1, classMixingMatrix, 1, U"Improve unmixing...", 0 , 0, DO_CrossCorrelationTableList_and_MixingMatrix_improveUnmixing);
 
 	INCLUDE_MANPAGES (manual_BSS)
 }
 
-/* End of file praat_BSS_init.c */
+/* End of file praat_BSS_init.cpp */
diff --git a/dwtools/praat_DataModeler_init.cpp b/dwtools/praat_DataModeler_init.cpp
index 2286ba3..4a7ab11 100644
--- a/dwtools/praat_DataModeler_init.cpp
+++ b/dwtools/praat_DataModeler_init.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2014 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praatP.h"
@@ -38,12 +37,15 @@ FORM (DataModeler_createSimple, U"Create simple DataModeler", 0)
 	SENTENCE (U"Parameters", U"0.0 1.0 1.0")
 	POSITIVE (U"Gaussian noise stdev", U"0.2")
 	OPTIONMENU (U"Basis functions", 2)
-		OPTION (U"Polynome")
+		OPTION (U"Polynomial")
 		OPTION (U"Legendre")
+		
 	OK
 DO
-	praat_new (DataModeler_createSimple (GET_REAL (U"left X range"), GET_REAL (U"right X range"), GET_INTEGER (U"Number of data points"),
-		GET_STRING (U"Parameters"), GET_REAL (U"Gaussian noise stdev"), GET_INTEGER (U"Basis functions") - 1), GET_STRING (U"Name"));
+	autoDataModeler thee = DataModeler_createSimple (GET_REAL (U"left X range"), GET_REAL (U"right X range"),
+		GET_INTEGER (U"Number of data points"), GET_STRING (U"Parameters"), GET_REAL (U"Gaussian noise stdev"),
+		GET_INTEGER (U"Basis functions") - 1);
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (DataModeler_speckle, U"DataModeler: Speckle", 0)
@@ -174,7 +176,7 @@ DO
 	LOOP {
 		iam (DataModeler);
 		double y = DataModeler_getModelValueAtX (me, GET_REAL (U"X"));
-		Melder_informationReal (y, NULL);
+		Melder_informationReal (y, nullptr);
 	}
 END
 
@@ -234,7 +236,7 @@ END
 DIRECT (DataModeler_getCoefficientOfDetermination)
 	LOOP {
 		iam (DataModeler);
-		double rSquared = DataModeler_getCoefficientOfDetermination (me, NULL, NULL);
+		double rSquared = DataModeler_getCoefficientOfDetermination (me, nullptr, nullptr);
 		Melder_informationReal (rSquared, U" (= R^2)");
 	}
 END
@@ -379,7 +381,7 @@ DIRECT (DataModeler_to_Covariance_parameters)
 	LOOP {
 		iam (DataModeler);
 		autoCovariance thee = DataModeler_to_Covariance_parameters (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -390,7 +392,7 @@ DO
 	LOOP {
 		iam (DataModeler);
 		autoTable thee = DataModeler_to_Table_zscores (me, GET_INTEGER (U"Use sigmas on y-values"));
-		praat_new (thee.transfer(), my name, U"_z");
+		praat_new (thee.move(), my name, U"_z");
 	}
 END
 
@@ -411,9 +413,9 @@ DO
 	REQUIRE (order >= 0, U"The order must be greater than or equal to zero.")
 	LOOP {
 		iam (Formant);
-		autoFormantModeler thee = Formant_to_FormantModeler (me, GET_REAL (U"left Start time"), GET_REAL (U"right End time"),
-			GET_INTEGER (U"Number of formants"), order + 1, GET_INTEGER (U"Weigh data") - 1);
-		praat_new (thee.transfer(), my name, U"_o", order);
+		autoFormantModeler thee = Formant_to_FormantModeler (me, GET_REAL (U"left Start time"), 
+			GET_REAL (U"right End time"), GET_INTEGER (U"Number of formants"), order + 1, GET_INTEGER (U"Weigh data") - 1);
+		praat_new (thee.move(), my name, U"_o", order);
 	}
 END
 
@@ -433,25 +435,28 @@ FORM (Formants_extractSmoothestPart, U"Formants: Extract smoothest part", U"Form
 	REAL (U"Parameter variance power", U"1.5")
 	OK
 DO
-	autoCollection set = praat_getSelectedObjects ();
+	OrderedOf<structFormant> formants;
+	LOOP {
+		iam (Formant);
+		formants. addItem_ref (me);
+	}
 	double tmin = GET_REAL (U"left Time range"), tmax = GET_REAL (U"right Time range");
-	long index = Formants_getSmoothestInInterval (set.peek(), tmin, tmax, GET_INTEGER (U"Number of formant tracks"), GET_INTEGER (U"Order of polynomials") + 1,
-		GET_INTEGER (U"Weigh data") - 1, 0, GET_REAL (U"Number of sigmas"), GET_REAL (U"Parameter variance power"), 1, 1, 1, 1, 1);
+	long index = Formants_getSmoothestInInterval (& formants, tmin, tmax, GET_INTEGER (U"Number of formant tracks"), GET_INTEGER (U"Order of polynomials") + 1,
+		GET_INTEGER (U"Weigh data") - 1, 0, GET_REAL (U"Number of sigmas"), GET_REAL (U"Parameter variance power"), 1.0, 1.0, 1.0, 1.0, 1.0);
 	// next code is necessary to get the Formant at postion index selected and to get its name
 	long iselected = 0;
-	Formant him = NULL;
+	Formant him = nullptr;
 	LOOP {
 		iselected ++;
 		if (iselected == index) {
 			him = static_cast<Formant> (OBJECT);
 		}
 	}
-	Melder_assert (him != NULL);
+	Melder_assert (him);
 	autoFormant thee = Formant_extractPart (him, tmin, tmax);
-	praat_new (thee.transfer(), his name, U"_part");
+	praat_new (thee.move(), his name, U"_part");
 END
 
-
 FORM (Formants_extractSmoothestPart_constrained, U"Formants: Extract smoothest part (constrained)", U"Formants: Extract smoothest part (constrained)...")
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
@@ -474,28 +479,32 @@ FORM (Formants_extractSmoothestPart_constrained, U"Formants: Extract smoothest p
 	POSITIVE (U"Minimum F3 (Hz)", U"1500.0")
 	OK
 DO
-	autoCollection set = praat_getSelectedObjects ();
+	OrderedOf<structFormant> formants;
+	LOOP {
+		iam (Formant);
+		formants. addItem_ref (me);
+	}
 	double tmin = GET_REAL (U"left Time range"), tmax = GET_REAL (U"right Time range");
-	long index = Formants_getSmoothestInInterval (set.peek(), tmin, tmax, GET_INTEGER (U"Number of formant tracks"), GET_INTEGER (U"Order of polynomials") + 1,
+	long index = Formants_getSmoothestInInterval (& formants, tmin, tmax, GET_INTEGER (U"Number of formant tracks"), GET_INTEGER (U"Order of polynomials") + 1,
 		GET_INTEGER (U"Weigh data") - 1, 1, GET_REAL (U"Number of sigmas"), GET_REAL (U"Parameter variance power"),
 		GET_REAL (U"Minimum F1"), GET_REAL (U"Maximum F1"), GET_REAL (U"Minimum F2"), GET_REAL (U"Maximum F2"), GET_REAL (U"Minimum F3"));
 	// next code is necessary to get the Formant at postion index selected and to get its name
 	long iselected = 0;
-	Formant him = NULL;
+	Formant him = nullptr;
 	LOOP {
 		iselected ++;
 		if (iselected == index) {
 			him = static_cast<Formant> (OBJECT);
 		}
 	}
-	Melder_assert (him != NULL);
+	Melder_assert (him);
 	autoFormant thee = Formant_extractPart (him, tmin, tmax);
-	praat_new (thee.transfer(), his name, U"_part");
+	praat_new (thee.move(), his name, U"_part");
 END
 
 /********************** FormantModeler ******************************/
 
-FORM (FormantModeler_drawEstimatedTracks, U"FormantModeler: Draw estimated tracks", 0)
+FORM (FormantModeler_drawEstimatedTracks, U"FormantModeler: Draw estimated tracks", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"Maximum frequency (Hz)", U"5500.0")
@@ -503,7 +512,7 @@ FORM (FormantModeler_drawEstimatedTracks, U"FormantModeler: Draw estimated track
 	NATURAL (U"right Formant range", U"3")
 	INTEGER (U"Order of polynomials for estimation", U"3")
 	REAL (U"Horizontal offset (mm)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -517,14 +526,14 @@ DO
 	}
 END
 
-FORM (FormantModeler_drawTracks, U"FormantModeler: Draw tracks", 0)
+FORM (FormantModeler_drawTracks, U"FormantModeler: Draw tracks", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"Maximum frequency (Hz)", U"5500.0")
 	NATURAL (U"left Formant range", U"1")
 	NATURAL (U"right Formant range", U"3")
 	REAL (U"Horizontal offset (mm)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -537,16 +546,16 @@ DO
 	}
 END
 
-FORM (FormantModeler_speckle, U"FormantModeler: Speckle", 0)
+FORM (FormantModeler_speckle, U"FormantModeler: Speckle", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"Maximum frequency (Hz)", U"5500.0")
 	NATURAL (U"left Formant range", U"1")
 	NATURAL (U"right Formant range", U"3")
-	BOOLEAN (U"Draw error bars", 1)
+	BOOLEAN (U"Draw error bars", true)
 	REAL (U"Bar width (mm)", U"1.0")
 	REAL (U"Horizontal offset (mm)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -559,7 +568,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_drawOutliersMarked, U"FormantModeler: Draw outliers marked", 0)
+FORM (FormantModeler_drawOutliersMarked, U"FormantModeler: Draw outliers marked", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"Maximum frequency (Hz)", U"5500.0")
@@ -574,7 +583,7 @@ FORM (FormantModeler_drawOutliersMarked, U"FormantModeler: Draw outliers marked"
 	WORD (U"Mark", U"o")
 	NATURAL (U"Mark font size", U"12")
 	REAL (U"Horizontal offset (mm)", U"0.0")
-	BOOLEAN (U"Garnish", 0)
+	BOOLEAN (U"Garnish", false)
 	OK
 DO
 	autoPraatPicture picture;
@@ -587,7 +596,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_drawVariancesOfShiftedTracks, U"FormantModeler: Draw variances of shifted tracks", 0)
+FORM (FormantModeler_drawVariancesOfShiftedTracks, U"FormantModeler: Draw variances of shifted tracks", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range", U"0.0")
 	REAL (U"left Variance range", U"0.0")
@@ -598,7 +607,7 @@ FORM (FormantModeler_drawVariancesOfShiftedTracks, U"FormantModeler: Draw varian
 		OPTION (U"Down")
 	NATURAL (U"left Formant range", U"1")
 	NATURAL (U"right Formant range", U"4")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -610,7 +619,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_drawCumulativeChiScores, U"FormantModeler: Draw cumulative chi scores", 0)
+FORM (FormantModeler_drawCumulativeChiScores, U"FormantModeler: Draw cumulative chi scores", nullptr)
 	REAL (U"left Time range", U"0.0")
 	REAL (U"right Time range", U"0.0")
 	REAL (U"left Chisq range", U"0.0")
@@ -620,7 +629,7 @@ FORM (FormantModeler_drawCumulativeChiScores, U"FormantModeler: Draw cumulative
 		OPTION (U"Bandwidth")
 		OPTION (U"Bandwidth / frequency")
 		OPTION (U"Sqrt bandwidth")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -632,7 +641,7 @@ DO
 END
 
 
-FORM (FormantModeler_normalProbabilityPlot, U"FormantModeler: Normal probability plot", 0)
+FORM (FormantModeler_normalProbabilityPlot, U"FormantModeler: Normal probability plot", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OPTIONMENU (U"Weigh data", 2)
 		OPTION (U"Equally")
@@ -643,7 +652,7 @@ FORM (FormantModeler_normalProbabilityPlot, U"FormantModeler: Normal probability
 	REAL (U"Number of sigmas", U"0.0")
 	NATURAL (U"Label size", U"12")
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -655,7 +664,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_drawBasisFunction, U"FormantModeler: Draw basis function", 0)
+FORM (FormantModeler_drawBasisFunction, U"FormantModeler: Draw basis function", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Amplitude range (Hz)", U"0.0")
@@ -663,9 +672,9 @@ FORM (FormantModeler_drawBasisFunction, U"FormantModeler: Draw basis function",
 	//long iterm, bool scaled, long numberOfPoints, int garnish
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Basis function", U"2")
-	BOOLEAN (U"Scale function with parameter value", 0)
+	BOOLEAN (U"Scale function with parameter value", false)
 	NATURAL (U"Number of points", U"200")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -678,7 +687,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getModelValueAtTime, U"", 0)
+FORM (FormantModeler_getModelValueAtTime, U"", nullptr)
 	NATURAL (U"Formant number", U"1")
 	REAL (U"Time (s)", U"0.1")
 	OK
@@ -690,7 +699,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getDataPointValue, U"FormantModeler: Get data point value", 0)
+FORM (FormantModeler_getDataPointValue, U"FormantModeler: Get data point value", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Index", U"1")
 	OK
@@ -704,7 +713,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getDataPointSigma, U"FormantModeler: Get data point sigma", 0)
+FORM (FormantModeler_getDataPointSigma, U"FormantModeler: Get data point sigma", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Index", U"1")
 	OK
@@ -718,7 +727,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getDataPointStatus, U"FormantModeler: Get data point status", 0)
+FORM (FormantModeler_getDataPointStatus, U"FormantModeler: Get data point status", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Index", U"1")
 	OK
@@ -740,7 +749,7 @@ DIRECT (FormantModeler_getNumberOfTracks)
 	}
 END
 
-FORM (FormantModeler_getNumberOfParameters, U"FormantModeler: Get number of parameters", 0)
+FORM (FormantModeler_getNumberOfParameters, U"FormantModeler: Get number of parameters", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -752,7 +761,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getNumberOfFixedParameters, U"FormantModeler: Get number of fixed parameters", 0)
+FORM (FormantModeler_getNumberOfFixedParameters, U"FormantModeler: Get number of fixed parameters", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -772,7 +781,7 @@ DIRECT (FormantModeler_getNumberOfDataPoints)
 	}
 END
 
-FORM (FormantModeler_getNumberOfInvalidDataPoints, U"FormantModeler: Get number of invalid data points", 0)
+FORM (FormantModeler_getNumberOfInvalidDataPoints, U"FormantModeler: Get number of invalid data points", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -784,7 +793,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getParameterValue, U"FormantModeler: Get parameter value", 0)
+FORM (FormantModeler_getParameterValue, U"FormantModeler: Get parameter value", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Parameter number", U"1")
 	OK
@@ -797,7 +806,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getParameterStatus, U"FormantModeler: Get parameter status", 0)
+FORM (FormantModeler_getParameterStatus, U"FormantModeler: Get parameter status", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Parameter number", U"1")
 	OK
@@ -811,7 +820,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getParameterStandardDeviation, U"FormantModeler: Get parameter standard deviatio", 0)
+FORM (FormantModeler_getParameterStandardDeviation, U"FormantModeler: Get parameter standard deviatio", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Parameter number", U"1")
 	OK
@@ -824,7 +833,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getVarianceOfParameters, U"FormantModeler: Get variance of parameters", 0)
+FORM (FormantModeler_getVarianceOfParameters, U"FormantModeler: Get variance of parameters", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	INTEGER (U"left Parameter range", U"0")
@@ -840,7 +849,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getCoefficientOfDetermination, U"FormantModeler: Get coefficient of determination", 0)
+FORM (FormantModeler_getCoefficientOfDetermination, U"FormantModeler: Get coefficient of determination", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	OK
@@ -865,7 +874,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getStandardDeviation, U"FormantModeler: Get formant standard deviation", 0)
+FORM (FormantModeler_getStandardDeviation, U"FormantModeler: Get formant standard deviation", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -877,7 +886,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_reportChiSquared, U"FormantModeler: Report chi squared", 0)
+FORM (FormantModeler_reportChiSquared, U"FormantModeler: Report chi squared", nullptr)
 	OPTIONMENU (U"Weigh data", 2)
 		OPTION (U"Equally")
 		OPTION (U"Bandwidth")
@@ -887,7 +896,7 @@ FORM (FormantModeler_reportChiSquared, U"FormantModeler: Report chi squared", 0)
 DO
 	LOOP {
 		iam (FormantModeler);
-		long numberOfFormants = my trackmodelers -> size;
+		long numberOfFormants = my trackmodelers.size;
 		int useSigmaY = GET_INTEGER (U"Weigh data") - 1;
 		double chisq = 0, ndf = 0, probability;
 		MelderInfo_open ();
@@ -896,14 +905,14 @@ DO
 			useSigmaY == DataModeler_DATA_WEIGH_SIGMA ? U"\tBandwidths are used as estimate for local standard deviations." : 
 			useSigmaY == DataModeler_DATA_WEIGH_RELATIVE ? U"\t1/Q's are used as estimate for local standard deviations." :
 			U"\tSqrt bandwidths are used as estimate for local standard deviations.");
-		for (long iformant = 1; iformant <= numberOfFormants; iformant++) {
+		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
 			chisq = FormantModeler_getChiSquaredQ (me, iformant, iformant, useSigmaY, &probability, &ndf);
 			MelderInfo_writeLine (U"Formant track ", iformant, U":");
 			MelderInfo_writeLine (U"\tChi squared (F", iformant, U") = ", chisq);
 			MelderInfo_writeLine (U"\tProbability (F", iformant, U") = ", probability);
 			MelderInfo_writeLine (U"\tNumber of degrees of freedom (F", iformant, U") = ", ndf);
 		}
-		chisq = FormantModeler_getChiSquaredQ (me, 1, numberOfFormants, useSigmaY, &probability, &ndf);
+		chisq = FormantModeler_getChiSquaredQ (me, 1, numberOfFormants, useSigmaY, & probability, & ndf);
 		MelderInfo_writeLine (U"Chi squared test for the complete model with ", numberOfFormants, U" formants:");
 		MelderInfo_writeLine (U"\tChi squared = ", chisq);
 		MelderInfo_writeLine (U"\tProbability = ", probability);
@@ -912,7 +921,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getDegreesOfFreedom, U"FormantModeler: Get degrees of freedom", 0)
+FORM (FormantModeler_getDegreesOfFreedom, U"FormantModeler: Get degrees of freedom", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -924,7 +933,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getSmoothnessValue, U"FormantModeler: Get smoothness value", 0)
+FORM (FormantModeler_getSmoothnessValue, U"FormantModeler: Get smoothness value", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	INTEGER (U"Order of polynomials", U"3")
@@ -939,7 +948,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getAverageDistanceBetweenTracks, U"FormantModeler: Get average distance between tracks", 0)
+FORM (FormantModeler_getAverageDistanceBetweenTracks, U"FormantModeler: Get average distance between tracks", nullptr)
 	NATURAL (U"Track 1", U"2")
 	NATURAL (U"Track 2", U"3")
 	OPTIONMENU (U"Type of data", 1)
@@ -955,7 +964,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_getFormantsConstraintsFactor, U"FormantModeler: Get formants constraints factor", 0)
+FORM (FormantModeler_getFormantsConstraintsFactor, U"FormantModeler: Get formants constraints factor", nullptr)
 	REAL (U"Minimum F1 (Hz)", U"100.0")
 	REAL (U"Maximum F1 (Hz)", U"1200.0")
 	REAL (U"Minimum F2 (Hz)", U"0.0")
@@ -971,7 +980,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setDataWeighing, U"FormantModeler: Set data weighing", 0)
+FORM (FormantModeler_setDataWeighing, U"FormantModeler: Set data weighing", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	OPTIONMENU (U"Weigh data", 2)
@@ -988,7 +997,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setTolerance, U"FormantModeler: Set tolerance", 0)
+FORM (FormantModeler_setTolerance, U"FormantModeler: Set tolerance", nullptr)
 	REAL (U"Tolerance", U"1e-5")
 	OK
 DO
@@ -998,7 +1007,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setParameterValueFixed, U"FormantModeler: Set parameter value fixed", 0)
+FORM (FormantModeler_setParameterValueFixed, U"FormantModeler: Set parameter value fixed", nullptr)
 	NATURAL (U"Formant number", U"1")
 	NATURAL (U"Parameter number", U"1")
 	REAL (U"Value", U"0.0")
@@ -1011,7 +1020,7 @@ DO
 END
 
 
-FORM (FormantModeler_setParameterFree, U"FormantModeler: Set parameter free", 0)
+FORM (FormantModeler_setParameterFree, U"FormantModeler: Set parameter free", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	INTEGER (U"left Parameter range", U"0")
@@ -1025,7 +1034,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setParameterValuesToZero, U"FormantModeler: Set parameter values to zero", 0)
+FORM (FormantModeler_setParameterValuesToZero, U"FormantModeler: Set parameter values to zero", nullptr)
 	INTEGER (U"left Formant range", U"0")
 	INTEGER (U"right Formant range", U"0")
 	REAL (U"Number of sigmas", U"1.0")
@@ -1038,7 +1047,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setDataPointValue, U"FormantModeler: Set data point value", 0)
+FORM (FormantModeler_setDataPointValue, U"FormantModeler: Set data point value", nullptr)
 	NATURAL (U"Formant index", U"1")
 	NATURAL (U"Data index", U"1")
 	REAL (U"Value", U"1.0")
@@ -1051,7 +1060,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setDataPointSigma, U"FormantModeler: Set data point sigma", 0)
+FORM (FormantModeler_setDataPointSigma, U"FormantModeler: Set data point sigma", nullptr)
 	NATURAL (U"Formant index", U"1")
 	NATURAL (U"Data index", U"1")
 	REAL (U"Sigma", U"10.0")
@@ -1064,7 +1073,7 @@ DO
 	}
 END
 
-FORM (FormantModeler_setDataPointStatus, U"FormantModeler: Set data point status", 0)
+FORM (FormantModeler_setDataPointStatus, U"FormantModeler: Set data point status", nullptr)
 	NATURAL (U"Formant index", U"1")
 	NATURAL (U"Data index", U"1")
 	OPTIONMENU (U"Status", 1)
@@ -1087,7 +1096,7 @@ DIRECT (FormantModeler_fitModel)
 	}
 END
 
-FORM (FormantModeler_to_Covariance_parameters, U"", 0)
+FORM (FormantModeler_to_Covariance_parameters, U"", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -1095,11 +1104,11 @@ DO
 	LOOP {
 		iam (FormantModeler);
 		autoCovariance thee = FormantModeler_to_Covariance_parameters (me, iformant);
-		praat_new (thee.transfer(), my name, U"_", iformant);
+		praat_new (thee.move(), my name, U"_", iformant);
 	}
 END
 
-FORM (FormantModeler_extractDataModeler, U"FormantModeler: Extract DataModeler", 0)
+FORM (FormantModeler_extractDataModeler, U"FormantModeler: Extract DataModeler", nullptr)
 	NATURAL (U"Formant number", U"1")
 	OK
 DO
@@ -1107,51 +1116,54 @@ DO
 	LOOP {
 		iam (FormantModeler);
 		autoDataModeler thee = FormantModeler_extractDataModeler (me, iformant);
-		praat_new (thee.transfer(), my name, U"_", iformant);
+		praat_new (thee.move(), my name, U"_", iformant);
 	}
 END
 
-FORM (FormantModeler_to_Table_zscores, U"", 0)
-	BOOLEAN (U"Bandwidths as standard deviation", 1)
+FORM (FormantModeler_to_Table_zscores, U"", nullptr)
+	BOOLEAN (U"Bandwidths as standard deviation", true)
 	OK
 DO
 	LOOP {
 		iam (FormantModeler);
 		autoTable thee = FormantModeler_to_Table_zscores (me, GET_INTEGER (U"Bandwidths as standard deviation"));
-		praat_new (thee.transfer(), my name, U"_z");
+		praat_new (thee.move(), my name, U"_z");
 	}
 END
 
-FORM (FormantModeler_processOutliers, U"", 0)
+FORM (FormantModeler_processOutliers, U"", nullptr)
 	POSITIVE (U"Number of sigmas", U"3.0")
-	BOOLEAN (U"Bandwidths as standard deviation", 1)
+	BOOLEAN (U"Bandwidths as standard deviation", true)
 	OK
 DO
 	LOOP {
 		iam (FormantModeler);
 		autoFormantModeler thee = FormantModeler_processOutliers (me, GET_REAL (U"Number of sigmas"), GET_INTEGER (U"Bandwidths as standard deviation"));
-		praat_new (thee.transfer(), my name, U"_outliers");
+		praat_new (thee.move(), my name, U"_outliers");
 	}
 END
 
 
 DIRECT (OptimalCeilingTier_edit)
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit an OptimalCeilingTier from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) {
+			sound = (Sound) OBJECT;   // may stay nullptr
+		}
 	}
 	LOOP if (CLASS == classOptimalCeilingTier) {
 		iam (OptimalCeilingTier);
-		autoOptimalCeilingTierEditor editor = OptimalCeilingTierEditor_create (ID_AND_FULL_NAME, me, sound, TRUE);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoOptimalCeilingTierEditor editor = OptimalCeilingTierEditor_create (ID_AND_FULL_NAME, me, sound, true);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END
 
 
 /*************************** PitchModeler *************************************/
 
-FORM (Pitch_to_PitchModeler, U"Pitch: To PitchModeler", 0)
+FORM (Pitch_to_PitchModeler, U"Pitch: To PitchModeler", nullptr)
 	REAL (U"left Start time (s)", U"0.0")
 	REAL (U"right End time (s)", U"0.1")
 	INTEGER (U"Order of polynomials", U"2")
@@ -1161,17 +1173,17 @@ DO
 		iam (Pitch);
 		autoPitchModeler thee = Pitch_to_PitchModeler (me, GET_REAL (U"left Start time"), GET_REAL (U"right End time"), 
 			GET_INTEGER (U"Order of polynomials") + 1);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (PitchModeler_draw, U"PitchModeler: Draw", 0)
+FORM (PitchModeler_draw, U"PitchModeler: Draw", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"500.0")
 	INTEGER (U"Order of polynomial for estimation", U"2")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -1182,7 +1194,7 @@ DO
 	}
 END
 
-FORM (Sound_getOptimalFormantCeiling, U"Sound: Get optimal formant ceiling", 0)
+FORM (Sound_getOptimalFormantCeiling, U"Sound: Get optimal formant ceiling", nullptr)
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range (s)", U"0.15")
 	POSITIVE (U"Window length (s)", U"0.015")
@@ -1216,7 +1228,7 @@ DO
 	}
 END
 
-FORM (Sound_to_Formant_interval, U"Sound: To Formant (interval)", 0)
+FORM (Sound_to_Formant_interval, U"Sound: To Formant (interval)", nullptr)
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range (s)", U"0.15")
 	POSITIVE (U"Window length (s)", U"0.015")
@@ -1247,11 +1259,11 @@ DO
 			GET_INTEGER (U"Number of formant tracks in model"), GET_INTEGER (U"Order of polynomials") + 1,
 			GET_INTEGER (U"Weigh data") - 1, GET_REAL (U"Number of sigmas"), GET_REAL (U"Parameter variance power"),
 			0, 1, 1, 1, 1, 1, &ceiling);
-		praat_new (formant.transfer(), my name, U"_", Melder_fixed (ceiling, 0));
+		praat_new (formant.move(), my name, U"_", Melder_fixed (ceiling, 0));
 	}
 END
 
-FORM (Sound_to_Formant_interval_constrained, U"Sound: To Formant (interval, constrained)", 0)
+FORM (Sound_to_Formant_interval_constrained, U"Sound: To Formant (interval, constrained)", nullptr)
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range (s)", U"0.15")
 	POSITIVE (U"Window length (s)", U"0.015")
@@ -1289,11 +1301,11 @@ DO
 			GET_REAL (U"Parameter variance power"), 1,
 			GET_REAL (U"Minimum F1"), GET_REAL (U"Maximum F1"), GET_REAL (U"Minimum F2"), 
 			GET_REAL (U"Maximum F2"), GET_REAL (U"Minimum F3"), &ceiling);
-		praat_new (formant.transfer(), my name, U"_", Melder_fixed (ceiling, 0));
+		praat_new (formant.move(), my name, U"_", Melder_fixed (ceiling, 0));
 	}
 END
 
-FORM (Sound_to_Formant_interval_constrained_robust, U"Sound: To Formant (interval, constrained, robust)", 0)
+FORM (Sound_to_Formant_interval_constrained_robust, U"Sound: To Formant (interval, constrained, robust)", nullptr)
 	REAL (U"left Time range (s)", U"0.1")
 	REAL (U"right Time range (s)", U"0.15")
 	POSITIVE (U"Window length (s)", U"0.015")
@@ -1331,11 +1343,11 @@ DO
 			GET_REAL (U"Parameter variance power"), 1,
 			GET_REAL (U"Minimum F1"), GET_REAL (U"Maximum F1"), GET_REAL (U"Minimum F2"), 
 			GET_REAL (U"Maximum F2"), GET_REAL (U"Minimum F3"), &ceiling);
-		praat_new (formant.transfer(), my name, U"_", Melder_fixed (ceiling, 0));
+		praat_new (formant.move(), my name, U"_", Melder_fixed (ceiling, 0));
 	}
 END
 
-FORM (Sound_to_OptimalCeilingTier, U"", 0)
+FORM (Sound_to_OptimalCeilingTier, U"", nullptr)
 	POSITIVE (U"Window length (s)", U"0.015")
 	POSITIVE (U"Time step (s)", U"0.0025")
 	POSITIVE (U"left Maximum frequency range (Hz)", U"4500.0")
@@ -1361,11 +1373,11 @@ DO
 			GET_REAL (U"left Maximum frequency range"), GET_REAL (U"right Maximum frequency range"), GET_INTEGER (U"Number of frequency steps"),
 			GET_REAL (U"Pre-emphasis from"), GET_REAL (U"Formant smoothing window"), GET_INTEGER (U"Number of formant tracks in model"),
 			GET_INTEGER (U"Order of polynomials") + 1, GET_INTEGER (U"Weigh data") - 1, GET_REAL (U"Number of sigmas"), GET_REAL (U"Parameter variance power"));
-		praat_new (octier.transfer(), my name);
+		praat_new (octier.move(), my name);
 	}
 END
 
-FORM (Table_to_DataModeler, U"", 0)
+FORM (Table_to_DataModeler, U"", nullptr)
 	REAL (U"left X range", U"0.0")
 	REAL (U"right X range", U"0.0 (=auto)")
 	WORD (U"Column with X data", U"")
@@ -1383,13 +1395,13 @@ DO
 		long scolumn = Table_findColumnIndexFromColumnLabel (me, GET_STRING (U"Column with sigmas"));
 		autoDataModeler thee = Table_to_DataModeler (me, GET_REAL (U"left X range"), GET_REAL (U"right X range"),
 			xcolumn, ycolumn, scolumn, GET_INTEGER (U"Maximum order") + 1, GET_INTEGER (U"Model functions"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
-void praat_DataModeler_init (void);
-void praat_DataModeler_init (void) {
-	Thing_recognizeClassesByName (classDataModeler, classFormantModeler, classOptimalCeilingTier, classOptimalCeilingTierEditor, classPitchModeler, NULL);
+void praat_DataModeler_init ();
+void praat_DataModeler_init () {
+	Thing_recognizeClassesByName (classDataModeler, classFormantModeler, classOptimalCeilingTier, classOptimalCeilingTierEditor, classPitchModeler, nullptr);
 
 	praat_addMenuCommand (U"Objects", U"New", U"Create simple DataModeler...", U"Create ISpline...", praat_HIDDEN + praat_DEPTH_1, DO_DataModeler_createSimple);
 
@@ -1435,9 +1447,9 @@ void praat_DataModeler_init (void) {
 	praat_addAction1 (classDataModeler, 0, U"To Covariance (parameters)...", 0, 0, DO_DataModeler_to_Covariance_parameters);
 	praat_addAction1 (classDataModeler, 0, U"To Table (z-scores)...", 0, 0, DO_DataModeler_to_Table_zscores);
 
-	praat_addAction1 (classFormant, 0, U"To FormantModeler...", U"To LPC...", 0, DO_Formant_to_FormantModeler);
-	praat_addAction1 (classFormant, 0, U"Extract smoothest part...", 0, 0, DO_Formants_extractSmoothestPart);
-	praat_addAction1 (classFormant, 0, U"Extract smoothest part (constrained)...", 0, 0, DO_Formants_extractSmoothestPart_constrained);
+	praat_addAction1 (classFormant, 0, U"To FormantModeler...", U"To LPC...", praat_HIDDEN, DO_Formant_to_FormantModeler);
+	praat_addAction1 (classFormant, 0, U"Extract smoothest part...", 0, praat_HIDDEN, DO_Formants_extractSmoothestPart);
+	praat_addAction1 (classFormant, 0, U"Extract smoothest part (constrained)...", 0, praat_HIDDEN, DO_Formants_extractSmoothestPart_constrained);
 
 	praat_addAction1 (classFormantModeler, 0, U"Draw -", 0, 0, 0);
 	praat_addAction1 (classFormantModeler, 0, U"Speckle...", 0, 1, DO_FormantModeler_speckle);
diff --git a/dwtools/praat_David_init.cpp b/dwtools/praat_David_init.cpp
index 8f0f7a7..8dbe857 100644
--- a/dwtools/praat_David_init.cpp
+++ b/dwtools/praat_David_init.cpp
@@ -1,20 +1,19 @@
 /* praat_David_init.cpp
  *
- * Copyright (C) 1993-2015 David Weenink
+ * Copyright (C) 1993-2016 David Weenink, 2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -55,7 +54,7 @@
  djmw 20090109 KlattGrid formulas for formant
  djmw 20090708 KlattTable <-> Table
  djmw 20090822 Thing_recognizeClassesByName: added classCepstrum, classIndex, classKlattTable
- djmw 20090914 Excitation to Excitations crashed because of NULL reference
+ djmw 20090914 Excitation to Excitations crashed because of nullptr reference
  djmw 20090927 TableOfReal_drawRow(s)asHistogram
  djmw 20091023 Sound_draw_selectedIntervals
  djmw 20091230 Covariance_and_TableOfReal_mahalanobis
@@ -148,8 +147,8 @@ void praat_TableOfReal_init2 (ClassInfo klas);
 void praat_SSCP_as_TableOfReal_init (ClassInfo klas);
 
 void praat_CC_init (ClassInfo klas);
-void DTW_constraints_addCommonFields (void *dia);
-void DTW_constraints_getCommonFields (void *dia, int *begin, int *end, int *slope);
+void DTW_constraints_addCommonFields (UiForm dia);
+void DTW_constraints_getCommonFields (UiForm dia, int *begin, int *end, int *slope);
 void praat_BandFilterSpectrogram_query_init (ClassInfo klas);
 int praat_Fon_formula (UiForm dia, Interpreter interpreter);
 void praat_EditDistanceTable_as_TableOfReal_init (ClassInfo klas);
@@ -158,7 +157,7 @@ void praat_EditDistanceTable_as_TableOfReal_init (ClassInfo klas);
 
 /********************** Activation *******************************************/
 
-FORM (Activation_formula, U"Activation: Formula", 0)
+FORM (Activation_formula, U"Activation: Formula", nullptr)
 	LABEL (U"label", U"for col := 1 to ncol do { self [row, col] := `formula' ; x := x + dx } y := y + dy }}")
 	TEXTFIELD (U"formula", U"self")
 	OK
@@ -169,7 +168,8 @@ END
 DIRECT (Activation_to_Matrix)
 	LOOP {
 		iam (Activation);
-		praat_new (Activation_to_Matrix (me), my name);
+		autoMatrix thee = Activation_to_Matrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -180,7 +180,7 @@ FORM (BandFilterSpectrogram_drawFrequencyScale, U"", U"")
 	REAL (U"right Horizontal frequency range (Hz)", U"0.0")
 	REAL (U"left Vertical frequency range (mel)", U"0.0")
 	REAL (U"right Vertical frequency range (mel)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -209,7 +209,7 @@ FORM (BarkFilter_drawSpectrum, U"BarkFilter: Draw spectrum (slice)", U"FilterBan
 	REAL (U"right Frequency range (Bark)", U"0.0")
 	REAL (U"left Amplitude range (dB)", U"0.0")
 	REAL (U"right Amplitude range (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -225,15 +225,15 @@ FORM (BarkFilter_drawSekeyHansonFilterFunctions, U"BarkFilter: Draw filter funct
 	INTEGER (U"left Filter range", U"0")
 	INTEGER (U"right Filter range", U"0")
 	RADIO (U"Frequency scale", 1)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	REAL (U"left Frequency range", U"0.0")
 	REAL (U"right Frequency range", U"0.0")
-	BOOLEAN (U"Amplitude scale in dB", 1)
+	BOOLEAN (U"Amplitude scale in dB", true)
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -251,20 +251,20 @@ FORM (BarkSpectrogram_drawSekeyHansonAuditoryFilters, U"BarkSpectrogram: Draw Se
 	INTEGER (U"left Filter range", U"0")
 	INTEGER (U"right Filter range", U"0")
 	RADIO (U"Frequency scale", 2)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
 	REAL (U"left Frequency range", U"0.0")
 	REAL (U"right Frequency range", U"0.0")
 	BOOLEAN (U"Amplitude scale in dB", 1)
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (BarkSpectrogram);
-		bool xIsHertz = GET_INTEGER (U"Frequency scale") == 1;
+		bool xIsHertz = ( GET_INTEGER (U"Frequency scale") == 1 );
 		BarkSpectrogram_drawSekeyHansonFilterFunctions (me, GRAPHICS, xIsHertz,
 			GET_INTEGER (U"left Filter range"), GET_INTEGER (U"right Filter range"),
 			GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
@@ -273,14 +273,14 @@ DO
 	}
 END
 
-FORM (BarkFilter_paint, U"FilterBank: Paint", 0)
+FORM (BarkFilter_paint, U"FilterBank: Paint", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range (bark)", U"0.0")
 	REAL (U"right Frequency range (bark)", U"0.0")
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Garnish", 0)
+	BOOLEAN (U"Garnish", false)
 	OK
 DO
 	autoPraatPicture picture;
@@ -331,8 +331,9 @@ DIRECT (Categories_edit)
 	} else {
 		LOOP {
 			iam (Categories);
-			praat_installEditor (CategoriesEditor_create (
-				my name, me), IOBJECT);
+			autoCategoriesEditor editor = CategoriesEditor_create (my name, me);
+			praat_installEditor (editor.get(), IOBJECT);
+			editor.releaseToUser();
 		}
 	}
 END
@@ -345,7 +346,7 @@ DIRECT (Categories_getNumberOfCategories)
 END
 
 DIRECT (Categories_getNumberOfDifferences)
-	Categories c1 = 0, c2 = 0;
+	Categories c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Categories);
 		(c1 ? c2 : c1) = me;
@@ -361,7 +362,7 @@ DIRECT (Categories_getNumberOfDifferences)
 END
 
 DIRECT (Categories_getFractionDifferent)
-	Categories c1 = 0, c2 = 0;
+	Categories c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Categories);
 		(c1 ? c2 : c1) = me;
@@ -371,13 +372,14 @@ DIRECT (Categories_getFractionDifferent)
 END
 
 DIRECT (Categories_difference)
-	Categories c1 = 0, c2 = 0;
+	Categories c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Categories);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
-	double fraction; long n;
+	long n;
+	double fraction;
 	OrderedOfString_difference (c1, c2, &n, &fraction);
 	Melder_information (n, U" differences");
 END
@@ -385,47 +387,52 @@ END
 DIRECT (Categories_selectUniqueItems)
 	LOOP {
 		iam (Categories);
-		praat_new (Categories_selectUniqueItems (me, 1), my name, U"_uniq");
+		autoCategories thee = Categories_selectUniqueItems (me);
+		praat_new (thee.move(), my name, U"_uniq");
 	}
 END
 
 DIRECT (Categories_to_Confusion)
-	Categories c1 = 0, c2 = 0;
+	Categories c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Categories);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
-	praat_new (Categories_to_Confusion (c1, c2), Thing_getName (c1), U"_", Thing_getName (c2));
+	autoConfusion thee = Categories_to_Confusion (c1, c2);
+	praat_new (thee.move(), Thing_getName (c1), U"_", Thing_getName (c2));
 END
 
 DIRECT (Categories_to_Strings)
 	LOOP {
 		iam (Categories);
-		praat_new (Categories_to_Strings (me), my name);
+		autoStrings thee = Categories_to_Strings (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Categories_join)
-	Categories c1 = 0, c2 = 0;
+	Categories c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Categories);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
-	praat_new (OrderedOfString_joinItems (c1, c2), 0);
+	autoOrderedOfString thee = OrderedOfString_joinItems (c1, c2);
+	praat_new (thee.move(), c1 -> name, U"_", c2 -> name);
 END
 
 DIRECT (Categories_permuteItems)
 	LOOP {
 		iam (Collection);
-		praat_new (Collection_permuteItems (me), my name, U"_perm");
+		autoCollection thee = Collection_permuteItems (me);
+		praat_new (thee.move(), my name, U"_perm");
 	}
 END
 
 /***************** CC ****************************************/
 
-FORM (CC_getNumberOfCoefficients, U"Get number of coefficients", 0)
+FORM (CC_getNumberOfCoefficients, U"Get number of coefficients", nullptr)
 	NATURAL (U"Frame number", U"1")
 	OK
 DO
@@ -443,7 +450,7 @@ FORM (CC_getValue, U"CC: Get value", U"CC: Get value...")
 DO
 	LOOP {
 		iam (CC); // ?? generic
-		Melder_informationReal (CC_getValue (me, GET_REAL (U"Time"), GET_INTEGER (U"Index")), 0);
+		Melder_informationReal (CC_getValue (me, GET_REAL (U"Time"), GET_INTEGER (U"Index")), nullptr);
 	}
 END
 
@@ -454,7 +461,7 @@ FORM (CC_getValueInFrame, U"CC: Get value in frame", U"CC: Get value in frame...
 DO
 	LOOP {
 		iam (CC); // ?? generic
-		Melder_informationReal (CC_getValueInFrame (me, GET_INTEGER (U"Frame number"), GET_INTEGER (U"Index")), 0);
+		Melder_informationReal (CC_getValueInFrame (me, GET_INTEGER (U"Frame number"), GET_INTEGER (U"Index")), nullptr);
 	}
 END
 
@@ -464,7 +471,7 @@ FORM (CC_getC0ValueInFrame, U"CC: Get c0 value in frame", U"CC: Get c0 value in
 DO
 	LOOP {
 		iam (CC); // ?? generic
-		Melder_informationReal (CC_getC0ValueInFrame (me, GET_INTEGER (U"Frame number")), 0);
+		Melder_informationReal (CC_getC0ValueInFrame (me, GET_INTEGER (U"Frame number")), nullptr);
 	}
 END
 
@@ -475,7 +482,7 @@ FORM (CC_paint, U"CC: Paint", U"CC: Paint...")
 	INTEGER (U"To coefficient", U"0")
 	REAL (U"Minimum", U"0.0")
 	REAL (U"Maximum", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -492,7 +499,7 @@ FORM (CC_drawC0, U"CC: Draw c0", U"CC: Draw c0...")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -513,7 +520,7 @@ FORM (CCs_to_DTW, U"CC: To DTW", U"CC: To DTW...")
 	DTW_constraints_addCommonFields (dia);
 	OK
 DO
-	CC c1 = 0, c2 = 0;
+	CC c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (CC);
 		(c1 ? c2 : c1) = me;
@@ -524,14 +531,15 @@ DO
     autoDTW thee = CCs_to_DTW (c1, c2, GET_REAL (U"Cepstral weight"), GET_REAL (U"Log energy weight"),
         GET_REAL (U"Regression weight"), GET_REAL (U"Regression weight log energy"),
         GET_REAL (U"Regression coefficients window"));
-    DTW_findPath (thee.peek(), begin, end, slope);
-	praat_new (thee.transfer(), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+    DTW_findPath (thee.get(), begin, end, slope);
+	praat_new (thee.move(), U"");
 END
 
 DIRECT (CC_to_Matrix)
 	LOOP {
 		iam (CC);
-		praat_new (CC_to_Matrix (me), my name);
+		autoMatrix thee = CC_to_Matrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -539,11 +547,11 @@ END
 
 FORM (CCA_drawEigenvector, U"CCA: Draw eigenvector", U"Eigen: Draw eigenvector...")
 	OPTIONMENU (U"X or Y", 1)
-	OPTION (U"y")
-	OPTION (U"x")
+		OPTION (U"y")
+		OPTION (U"x")
 	INTEGER (U"Eigenvector number", U"1")
 	LABEL (U"", U"Multiply by eigenvalue?")
-	BOOLEAN (U"Component loadings", 0)
+	BOOLEAN (U"Component loadings", false)
 	LABEL (U"", U"Select part of the eigenvector:")
 	INTEGER (U"left Element range", U"0")
 	INTEGER (U"right Element range", U"0")
@@ -551,8 +559,8 @@ FORM (CCA_drawEigenvector, U"CCA: Draw eigenvector", U"Eigen: Draw eigenvector..
 	REAL (U"right Amplitude range", U"1.0")
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Connect points", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Connect points", true)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -585,8 +593,8 @@ END
 
 FORM (CCA_getEigenvectorElement, U"CCA: Get eigenvector element", U"Eigen: Get eigenvector element...")
 	OPTIONMENU (U"X or Y", 1)
-	OPTION (U"y")
-	OPTION (U"x")
+		OPTION (U"y")
+		OPTION (U"x")
 	NATURAL (U"Eigenvector number", U"1")
 	NATURAL (U"Element number", U"1")
 	OK
@@ -594,7 +602,7 @@ DO
 	LOOP {
 		iam (CCA);
 		Melder_information (CCA_getEigenvectorElement (me, GET_INTEGER (U"X or Y"),
-		GET_INTEGER (U"Eigenvector number"), GET_INTEGER (U"Element number")));
+			GET_INTEGER (U"Eigenvector number"), GET_INTEGER (U"Element number")));
 	}
 END
 
@@ -604,35 +612,36 @@ FORM (CCA_getZeroCorrelationProbability, U"CCA: Get zero correlation probability
 DO
 	LOOP {
 		iam (CCA);
-		double p, chisq; long ndf;
-		CCA_getZeroCorrelationProbability (me, GET_INTEGER (U"Coefficient number"), &chisq, &ndf, &p);
+		double p, chisq, df;
+		CCA_getZeroCorrelationProbability (me, GET_INTEGER (U"Coefficient number"), & p, & chisq, & df);
 		Melder_information (p, U" (=probability for chisq = ", chisq,
-		U" and ndf = ", ndf, U")");
+			U" and ndf = ", df, U")");
 	}
 END
 
 DIRECT (CCA_and_Correlation_factorLoadings)
-	CCA cca = FIRST (CCA);
-	Correlation c = FIRST (Correlation);
-	praat_new (CCA_and_Correlation_factorLoadings (cca, c), Thing_getName (cca), U"_loadings");
+	CCA me = FIRST (CCA);
+	Correlation thee = FIRST (Correlation);
+	autoTableOfReal result = CCA_and_Correlation_factorLoadings (me, thee);
+	praat_new (result.move(), Thing_getName (me), U"_loadings");
 END
 
 FORM (CCA_and_Correlation_getVarianceFraction, U"CCA & Correlation: Get variance fraction", U"CCA & Correlation: Get variance fraction...")
 	LABEL (U"", U"Get the fraction of variance from the data in set...")
 	OPTIONMENU (U"X or Y", 1)
-	OPTION (U"y")
-	OPTION (U"x")
+		OPTION (U"y")
+		OPTION (U"x")
 	LABEL (U"", U"extracted by...")
 	NATURAL (U"left Canonical variate range", U"1")
 	NATURAL (U"right Canonical variate range", U"1")
 	OK
 DO
-	CCA cca = FIRST (CCA);
-	Correlation c = FIRST (Correlation);
+	CCA me = FIRST (CCA);
+	Correlation thee = FIRST (Correlation);
 	int x_or_y = GET_INTEGER (U"X or Y");
 	int cv_from = GET_INTEGER (U"left Canonical variate range");
 	int cv_to = GET_INTEGER (U"right Canonical variate range");
-	Melder_information (CCA_and_Correlation_getVarianceFraction (cca, c, x_or_y, cv_from, cv_to),
+	Melder_information (CCA_and_Correlation_getVarianceFraction (me, thee, x_or_y, cv_from, cv_to),
 		U" (fraction variance from ", (x_or_y == 1 ? U"y" : U"x"), U", extracted by canonical variates ",
 		cv_from, U" to ", cv_to, U")");
 END
@@ -640,38 +649,39 @@ END
 FORM (CCA_and_Correlation_getRedundancy_sl, U"CCA & Correlation: Get Stewart-Love redundancy", U"CCA & Correlation: Get redundancy (sl)...")
 	LABEL (U"", U"Get the redundancy of the data in set...")
 	OPTIONMENU (U"X or Y", 1)
-	OPTION (U"y")
-	OPTION (U"x")
+		OPTION (U"y")
+		OPTION (U"x")
 	LABEL (U"", U"extracted by...")
 	NATURAL (U"left Canonical variate range", U"1")
 	NATURAL (U"right Canonical variate range", U"1")
 	LABEL (U"", U"...given the availability of the data in the other set.")
 	OK
 DO
-	CCA cca = FIRST (CCA);
-	Correlation c = FIRST (Correlation);
+	CCA me = FIRST (CCA);
+	Correlation thee = FIRST (Correlation);
 	int x_or_y = GET_INTEGER (U"X or Y");
 	int cv_from = GET_INTEGER (U"left Canonical variate range");
 	int cv_to = GET_INTEGER (U"right Canonical variate range");
-	Melder_information (CCA_and_Correlation_getRedundancy_sl (cca, c, x_or_y, cv_from, cv_to),
+	Melder_information (CCA_and_Correlation_getRedundancy_sl (me, thee, x_or_y, cv_from, cv_to),
 		U" (redundancy from ", (x_or_y == 1 ? U"y" : U"x"), U" extracted by canonical variates ",
 		cv_from, U" to ", cv_to, U")");
 END
 
 DIRECT (CCA_and_TableOfReal_factorLoadings)
-	CCA cca = FIRST (CCA);
-	TableOfReal tr = FIRST (TableOfReal);
-	praat_new (CCA_and_TableOfReal_factorLoadings (cca, tr), Thing_getName (cca), U"_loadings");
+	CCA me = FIRST (CCA);
+	TableOfReal thee = FIRST (TableOfReal);
+	autoTableOfReal result = CCA_and_TableOfReal_factorLoadings (me, thee);
+	praat_new (result.move(), Thing_getName (me), U"_loadings");
 END
 
 FORM (CCA_and_TableOfReal_scores, U"CCA & TableOfReal: To TableOfReal (scores)", U"CCA & TableOfReal: To TableOfReal (scores)...")
 	INTEGER (U"Number of canonical correlations", U"0 (=all)")
 	OK
 DO
-	CCA cca = FIRST (CCA);
-	TableOfReal tr = FIRST (TableOfReal);
-	praat_new (CCA_and_TableOfReal_scores (cca, tr, GET_INTEGER (U"Number of canonical correlations")),
-		Thing_getName (cca), U"_scores");
+	CCA me = FIRST (CCA);
+	TableOfReal thee = FIRST (TableOfReal);
+	autoTableOfReal result = CCA_and_TableOfReal_scores (me, thee, GET_INTEGER (U"Number of canonical correlations"));
+	praat_new (result.move(), Thing_getName (me), U"_scores");
 END
 
 FORM (CCA_and_TableOfReal_predict, U"CCA & TableOfReal: Predict", U"CCA & TableOfReal: Predict...")
@@ -679,9 +689,10 @@ FORM (CCA_and_TableOfReal_predict, U"CCA & TableOfReal: Predict", U"CCA & TableO
 	INTEGER (U"Column number", U"1")
 	OK
 DO
-	CCA cca = FIRST (CCA);
-	TableOfReal tr = FIRST (TableOfReal);
-	praat_new (CCA_and_TableOfReal_predict (cca, tr, GET_INTEGER (U"Column number")), tr->name, U"_", cca->name);
+	CCA me = FIRST (CCA);
+	TableOfReal thee = FIRST (TableOfReal);
+	autoTableOfReal result = CCA_and_TableOfReal_predict (me, thee, GET_INTEGER (U"Column number"));
+	praat_new (result.move(), thy name, U"_", my name);
 END
 
 /***************** ChebyshevSeries ****************************************/
@@ -702,13 +713,15 @@ FORM (ChebyshevSeries_create, U"Create ChebyshevSeries", U"Create ChebyshevSerie
 DO
 	double xmin = GET_REAL (U"Xmin"), xmax = GET_REAL (U"Xmax");
 	REQUIRE (xmin < xmax, U"Xmin must be smaller than Xmax.")
-	praat_new (ChebyshevSeries_createFromString (xmin, xmax, GET_STRING (U"Coefficients")), GET_STRING (U"Name"));
+	autoChebyshevSeries me = ChebyshevSeries_createFromString (xmin, xmax, GET_STRING (U"Coefficients"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END
 
 DIRECT (ChebyshevSeries_to_Polynomial)
 	LOOP {
 		iam (ChebyshevSeries);
-		praat_new (ChebyshevSeries_to_Polynomial (me), my name);
+		autoPolynomial thee = ChebyshevSeries_to_Polynomial (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -718,7 +731,7 @@ DIRECT (ClassificationTable_help)
 	Melder_help (U"ClassificationTable");
 END
 
-FORM (ClassificationTable_getClassIndexAtMaximumInRow, U"ClassificationTable: Get class index at maximum in row", 0)
+FORM (ClassificationTable_getClassIndexAtMaximumInRow, U"ClassificationTable: Get class index at maximum in row", nullptr)
 	NATURAL (U"Row number", U"1")
 	OK
 DO
@@ -729,7 +742,7 @@ DO
 	}
 END
 
-FORM (ClassificationTable_getClassLabelAtMaximumInRow, U"ClassificationTable: Get class label at maximum in row", 0)
+FORM (ClassificationTable_getClassLabelAtMaximumInRow, U"ClassificationTable: Get class label at maximum in row", nullptr)
 	NATURAL (U"Row number", U"1")
 	OK
 DO
@@ -744,31 +757,35 @@ END
 DIRECT (ClassificationTable_to_Confusion_old)
 	LOOP {
 		iam (ClassificationTable);
-		praat_new (ClassificationTable_to_Confusion (me, 0), my name);
+		autoConfusion thee = ClassificationTable_to_Confusion (me, false);
+		praat_new (thee.move(), my name);
 	}
 END
 
 FORM (ClassificationTable_to_Confusion, U"ClassificationTable: To Confusion", U"ClassificationTable: To Confusion...")
-	BOOLEAN (U"Only class labels", 1)
+	BOOLEAN (U"Only class labels", true)
 	OK
 DO
 	LOOP {
 		iam (ClassificationTable);
-		praat_new (ClassificationTable_to_Confusion (me, GET_INTEGER (U"Only class labels")), my name);
+		autoConfusion thee = ClassificationTable_to_Confusion (me, GET_INTEGER (U"Only class labels"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (ClassificationTable_to_Correlation_columns)
 	LOOP {
 		iam (ClassificationTable);
-		praat_new (ClassificationTable_to_Correlation_columns (me), my name, U"_col");
+		autoCorrelation thee = ClassificationTable_to_Correlation_columns (me);
+		praat_new (thee.move(), my name, U"_col");
 	}
 END
 
 DIRECT (ClassificationTable_to_Strings_maximumProbability)
 	LOOP {
 		iam (ClassificationTable);
-		praat_new (ClassificationTable_to_Strings_maximumProbability (me), my name);
+		autoStrings thee = ClassificationTable_to_Strings_maximumProbability (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -783,7 +800,8 @@ FORM (Confusion_createSimple, U"Create simple Confusion", U"Create simple Confus
 	SENTENCE (U"Labels", U"u i a")
 	OK
 DO
-	praat_new (Confusion_createSimple (GET_STRING (U"Labels")), GET_STRING (U"Name"));
+	autoConfusion thee = Confusion_createSimple (GET_STRING (U"Labels"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (Confusion_increase, U"Confusion: Increase", U"Confusion: Increase...")
@@ -798,7 +816,7 @@ DO
 	}
 END
 
-FORM (Confusion_getValue, U"Confusion: Get value", 0)
+FORM (Confusion_getValue, U"Confusion: Get value", nullptr)
 	WORD (U"Stimulus", U"u")
 	WORD (U"Response", U"i")
 	OK
@@ -835,18 +853,20 @@ END
 DIRECT (Confusion_to_TableOfReal_marginals)
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_to_TableOfReal_marginals (me), my name);
+		autoTableOfReal thee = Confusion_to_TableOfReal_marginals (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Confusion_difference)
-	Confusion c1 = 0, c2 = 0;
+	Confusion c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Confusion);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
-	praat_new (Confusion_difference (c1, c2), U"diffs");
+	autoMatrix thee = Confusion_difference (c1, c2);
+	praat_new (thee.move(), U"diffs");
 END
 
 FORM (Confusion_condense, U"Confusion: Condense", U"Confusion: Condense...")
@@ -860,8 +880,9 @@ FORM (Confusion_condense, U"Confusion: Condense", U"Confusion: Condense...")
 DO
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_condense (me, GET_STRING (U"Search"), GET_STRING (U"Replace"),
-		GET_INTEGER (U"Replace limit"), GET_INTEGER (U"Search and replace are") - 1), my name, U"_cnd");
+		autoConfusion thee = Confusion_condense (me, GET_STRING (U"Search"), GET_STRING (U"Replace"),
+			GET_INTEGER (U"Replace limit"), GET_INTEGER (U"Search and replace are") - 1);
+		praat_new (thee.move(), my name, U"_cnd");
 	}
 END
 
@@ -874,8 +895,9 @@ DO
 	const char32 *newlabel = GET_STRING (U"New label");
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_group (me, GET_STRING (U"Stimuli & Responses"), newlabel,
-		GET_INTEGER (U"New label position")), Thing_getName (me), U"_sr", newlabel);
+		autoConfusion thee = Confusion_group (me, GET_STRING (U"Stimuli & Responses"), newlabel,
+			GET_INTEGER (U"New label position"));
+		praat_new (thee.move(), my name, U"_sr", newlabel);
 	}
 END
 
@@ -888,8 +910,9 @@ DO
 	const char32 *newlabel = GET_STRING (U"New label");
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_groupStimuli (me, GET_STRING (U"Stimuli"), newlabel,
-		GET_INTEGER (U"New label position")), Thing_getName (me), U"_s", newlabel);
+		autoConfusion thee = Confusion_groupStimuli (me, GET_STRING (U"Stimuli"), newlabel,
+			GET_INTEGER (U"New label position"));
+		praat_new (thee.move(), my name, U"_s", newlabel);
 	}
 END
 
@@ -902,18 +925,19 @@ DO
 	const char32 *newlabel = GET_STRING (U"New label");
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_groupResponses (me, GET_STRING (U"Responses"), newlabel,
-		GET_INTEGER (U"New label position")), Thing_getName (me), U"_s", newlabel);
+		autoConfusion thee = Confusion_groupResponses (me, GET_STRING (U"Responses"), newlabel,
+			GET_INTEGER (U"New label position"));
+		praat_new (thee.move(), my name, U"_s", newlabel);
 	}
 END
 
 FORM (Confusion_drawAsNumbers, U"", U"")
-	BOOLEAN (U"Draw marginals", 1)
+	BOOLEAN (U"Draw marginals", true)
 	RADIO (U"Format", 3)
-	RADIOBUTTON (U"decimal")
-	RADIOBUTTON (U"exponential")
-	RADIOBUTTON (U"free")
-	RADIOBUTTON (U"rational")
+		RADIOBUTTON (U"decimal")
+		RADIOBUTTON (U"exponential")
+		RADIOBUTTON (U"free")
+		RADIOBUTTON (U"rational")
 	NATURAL (U"Precision", U"5")
 	OK
 DO
@@ -921,14 +945,15 @@ DO
 	LOOP {
 		iam (Confusion);
 		Confusion_drawAsNumbers (me, GRAPHICS, GET_INTEGER (U"Draw marginals"),
-		GET_INTEGER (U"Format"), GET_INTEGER (U"Precision"));
+			GET_INTEGER (U"Format"), GET_INTEGER (U"Precision"));
 	}
 END
 
 DIRECT (Confusion_getFractionCorrect)
 	LOOP {
 		iam (Confusion);
-		double f; long n;
+		double f;
+		long n;
 		Confusion_getFractionCorrect (me, &f, &n);
 		Melder_information (f, U" (fraction correct)");
 	}
@@ -942,14 +967,14 @@ END
 
 /******************* Confusion & Matrix *************************************/
 
-FORM (Confusion_Matrix_draw, U"Confusion & Matrix: Draw confusions with arrows", 0)
+FORM (Confusion_Matrix_draw, U"Confusion & Matrix: Draw confusions with arrows", nullptr)
 	INTEGER (U"Category position", U"0 (=all)")
 	REAL (U"Lower level (%)", U"0")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	long categoryPosition = GET_INTEGER (U"Category position");
@@ -961,41 +986,55 @@ DO
 		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
 END
 
-/**********************ComplexSpectrogram *******************************************/
+/********************** ComplexSpectrogram *******************************************/
 
 DIRECT (ComplexSpectrogram_help)
 	Melder_help (U"ComplexSpectrogram_help");
 END
 
-FORM (ComplexSpectrogram_to_Sound, U"ComplexSpectrogram: To Sound", 0)
+FORM (ComplexSpectrogram_to_Sound, U"ComplexSpectrogram: To Sound", nullptr)
 	POSITIVE (U"Duration factor", U"1.0")
 	OK
 DO
 	LOOP {
 		iam (ComplexSpectrogram);
-		praat_new (ComplexSpectrogram_to_Sound (me, GET_REAL (U"Duration factor")), my name);
+		autoSound thee = ComplexSpectrogram_to_Sound (me, GET_REAL (U"Duration factor"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (ComplexSpectrogram_to_Spectrogram)
 	LOOP {
 		iam (ComplexSpectrogram);
-		praat_new (ComplexSpectrogram_to_Spectrogram (me), my name);
+		autoSpectrogram thee = ComplexSpectrogram_to_Spectrogram (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (ComplexSpectrogram_to_Spectrum, U"ComplexSpectrogram: To Spectrum (slice)", 0)
+FORM (ComplexSpectrogram_to_Spectrum, U"ComplexSpectrogram: To Spectrum (slice)", nullptr)
 	REAL (U"Time (s)", U"0.0")
 	OK
 DO
 	LOOP {
 		iam (ComplexSpectrogram);
 		autoSpectrum thee = ComplexSpectrogram_to_Spectrum (me, GET_REAL (U"Time"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
-/**********************Correlation *******************************************/
+/********************** Correlation *******************************************/
+
+FORM (Correlation_createSimple, U"Create simple Correlation", U"Create simple Correlation...")
+	WORD (U"Name", U"correlation")
+	SENTENCE (U"Correlations", U"1.0 0.5 1.0")
+	SENTENCE (U"Centroid", U"0.0 0.0")
+	NATURAL (U"Number of observations", U"100")
+	OK
+DO
+	autoCorrelation me = Correlation_createSimple (GET_STRING (U"Correlations"), GET_STRING (U"Centroid"),
+		GET_INTEGER (U"Number of observations"));
+	praat_new (me.move(), GET_STRING (U"Name"));
+END
 
 DIRECT (Correlation_help)
 	Melder_help (U"Correlation");
@@ -1005,15 +1044,16 @@ FORM (Correlation_confidenceIntervals, U"Correlation: Confidence intervals...",
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
 	INTEGER (U"Number of tests (Bonferroni correction)", U"0")
 	RADIO (U"Approximation", 1)
-	RADIOBUTTON (U"Ruben")
-	RADIOBUTTON (U"Fisher")
+		RADIOBUTTON (U"Ruben")
+		RADIOBUTTON (U"Fisher")
 	OK
 DO
 	double cl = GET_REAL (U"Confidence level");
 	long numberOfTests = GET_INTEGER (U"Number of tests");
 	LOOP {
 		iam (Correlation);
-		praat_new (Correlation_confidenceIntervals (me, cl, numberOfTests, GET_INTEGER (U"Approximation")), U"conf_intervals");
+		autoTableOfReal thee = Correlation_confidenceIntervals (me, cl, numberOfTests, GET_INTEGER (U"Approximation"));
+		praat_new (thee.move(), U"conf_intervals");
 	}
 END
 
@@ -1021,24 +1061,24 @@ FORM (Correlation_testDiagonality_bartlett, U"Correlation: Get diagonality (bart
 	NATURAL (U"Number of contraints", U"1")
 	OK
 DO
-	double chisq, p;
 	long nc = GET_INTEGER (U"Number of contraints");
 	LOOP {
 		iam (Correlation);
-		Correlation_testDiagonality_bartlett (me, nc, &chisq, &p);
-		Melder_information (p, U" (=probability, based on chisq = ",
-			chisq, U"and ndf = ", my numberOfRows * (my numberOfRows - 1) / 2);
+		double chisq, p, df;
+		Correlation_testDiagonality_bartlett (me, nc, & chisq, & p, & df);
+		Melder_information (p, U" (=probability, based on chisq = ", chisq, U" and ndf = ", df, U")");
 	}
 END
 
 DIRECT (Correlation_to_PCA)
 	LOOP {
 		iam (Correlation);
-		praat_new (SSCP_to_PCA (me), my name);
+		autoPCA thee = SSCP_to_PCA (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-/**********************Covariance *******************************************/
+/********************** Covariance *******************************************/
 
 DIRECT (Covariance_help)
 	Melder_help (U"Covariance");
@@ -1051,11 +1091,12 @@ FORM (Covariance_createSimple, U"Create simple Covariance", U"Create simple Cova
 	NATURAL (U"Number of observations", U"100")
 	OK
 DO
-	praat_new (Covariance_createSimple (GET_STRING (U"Covariances"), GET_STRING (U"Centroid"),
-		GET_INTEGER (U"Number of observations")), GET_STRING (U"Name"));
+	autoCovariance me = Covariance_createSimple (GET_STRING (U"Covariances"), GET_STRING (U"Centroid"),
+		GET_INTEGER (U"Number of observations"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END
 
-FORM (Covariance_getProbabilityAtPosition, U"Covariance: Get probability at position", 0)
+FORM (Covariance_getProbabilityAtPosition, U"Covariance: Get probability at position", nullptr)
 	SENTENCE (U"Position", U"10.0 20.0")
 	OK
 DO
@@ -1068,72 +1109,75 @@ DO
 END
 
 FORM (Covariance_getSignificanceOfOneMean, U"Covariance: Get significance of one mean", U"Covariance: Get significance of one mean...")
-	LABEL (U"", U"Get probability that the mean with")
+	LABEL (U"", U"Get probability that the estimated mean for")
 	NATURAL (U"Index", U"1")
-	LABEL (U"", U"differs from")
+	LABEL (U"", U"(or an estimated mean even further away)")
+	LABEL (U"", U"could arise if the true mean were")
 	REAL (U"Value", U"0.0")
-	LABEL (U"", U"(Null hypothesis: the observed difference is due to chance.)")
 	OK
 DO
 	LOOP {
 		iam (Covariance);
-		double t, p; double ndf;
-		Covariance_getSignificanceOfOneMean (me, GET_INTEGER (U"Index"), GET_REAL (U"Value"), &p, &t , &ndf);
+		double p, t, ndf;
+		Covariance_getSignificanceOfOneMean (me, GET_INTEGER (U"Index"), GET_REAL (U"Value"), & p, & t, & ndf);
 		Melder_information (p, U" (=probability, based on t = ", t, U" and ndf = ", ndf);
 	}
 END
 
 FORM (Covariance_getSignificanceOfMeansDifference, U"Covariance: Get significance of means difference", U"Covariance: Get significance of means difference...")
-	LABEL (U"", U"Get probability that the difference between means")
+	LABEL (U"", U"Get probability that the estimated difference between the means for")
 	NATURAL (U"Index1", U"1")
 	NATURAL (U"Index2", U"2")
-	LABEL (U"", U"differs from")
+	LABEL (U"", U"could arise if the true mean were")
 	REAL (U"Value", U"0.0")
-	LABEL (U"", U"when the means are")
-	BOOLEAN (U"Paired", 1)
+	LABEL (U"", U"Assume the means are ")
+	BOOLEAN (U"Paired", true)
 	LABEL (U"", U"and have")
-	BOOLEAN (U"Equal variances", 1)
+	BOOLEAN (U"Equal variances", true)
 	OK
 DO
 	LOOP {
 		iam (Covariance);
-		double t, p; double ndf;
+		double p, t, ndf;
 		Covariance_getSignificanceOfMeansDifference (me, GET_INTEGER (U"Index1"), GET_INTEGER (U"Index2"),
-		GET_REAL (U"Value"), GET_INTEGER (U"Paired"), GET_INTEGER (U"Equal variances"), &p, &t , &ndf);
+			GET_REAL (U"Value"), GET_INTEGER (U"Paired"), GET_INTEGER (U"Equal variances"), & p, & t, & ndf);
 		Melder_information (p, U" (=probability, based on t = ",
 			t, U"and ndf = ", ndf, U")");
 	}
 END
 
 FORM (Covariance_getSignificanceOfOneVariance, U"Covariance: Get significance of one variance", U"Covariance: Get significance of one variance...")
-	LABEL (U"", U"Get probability that the variance with")
+	LABEL (U"", U"Get the probability that the estimated variance for")
 	NATURAL (U"Index", U"1")
-	LABEL (U"", U"differs from")
+	LABEL (U"", U"(or an even larger estimated variance)")
+	LABEL (U"", U"could arise if the true variance were")
 	REAL (U"Value", U"0.0")
-	LABEL (U"", U"(Null hypothesis: the observed difference is due to chance.)")
 	OK
 DO
 	LOOP {
 		iam (Covariance);
-		double chisq, p; long ndf;
-		Covariance_getSignificanceOfOneVariance (me, GET_INTEGER (U"Index"), GET_REAL (U"Value"), &p, &chisq , &ndf);
-		Melder_information (p, U" (=probability, based on chisq = ", chisq, U"and ndf = ", ndf);
+		double p, chisq; long ndf;
+		Covariance_getSignificanceOfOneVariance (me, GET_INTEGER (U"Index"), GET_REAL (U"Value"), & p, & chisq, & ndf);
+		Melder_information (p, U" (=probability, based on chisq = ", chisq, U" and ndf = ", ndf);
 	}
 END
 
-FORM (Covariance_getSignificanceOfVariancesRatio, U"Covariance: Get significance of variances ratio", U"Covariance: Get significance of variances ratio...")
+FORM (Covariance_getSignificanceOfVariancesRatio, U"Covariance: Get significance of variances ratio", nullptr)
+	LABEL (U"", U"Get the probability that the estimated variance ratio observed for")
 	NATURAL (U"Index1", U"1")
 	NATURAL (U"Index2", U"2")
-	REAL (U"Hypothesized ratio", U"1.0")
+	LABEL (U"", U"(or an estimated ratio even further away)")
+	LABEL (U"", U"could arise if the true ratio were")
+	REAL (U"Value", U"1.0")
 	OK
 DO
 	LOOP {
 		iam (Covariance);
-		double f, p; long ndf;
+		double p, f, df;
 		Covariance_getSignificanceOfVariancesRatio (me, GET_INTEGER (U"Index1"), GET_INTEGER (U"Index2"),
-		GET_REAL (U"Hypothesized ratio"), &p, &f , &ndf);
-		Melder_information (p, U" (=probability, based on F = ", f,
-		U"and ndf1 = ", ndf, U" and ndf2 = ", ndf);
+			GET_REAL (U"Value"), & p, & f , & df);
+		Melder_information (p, U" (=probability, based on F = ", f, U" and ndf1 = ", df, U" and ndf2 = ", df);
+
 	}
 END
 
@@ -1148,28 +1192,30 @@ DO
 	}
 END
 
-FORM (Covariances_reportMultivariateMeanDifference, U"Covariances: Report multivariate mean difference",
-      U"Covariances: Report multivariate mean difference...")
-	BOOLEAN (U"Covariances are equal", 1)
+FORM (Covariances_reportMultivariateMeanDifference, U"Covariances: Report multivariate mean difference", U"Covariances: Report multivariate mean difference...")
+	LABEL (U"", U"Get probability that the estimated multivariate means difference could arise ")
+	LABEL (U"", U"if the actual means were equal.")
+	LABEL (U"", U"")
+	LABEL (U"", U"Assume for both means we have")
+	BOOLEAN (U"Equal covariances", true)
 	OK
 DO
-	Covariance c1 = 0, c2 = 0;
+	Covariance c1 = nullptr, c2 = nullptr;
 	LOOP {
 		iam (Covariance);
 		(c1 ? c2 : c1) = me;
 	}
 	Melder_assert (c1 && c2);
 	double prob, fisher, df1, df2, difference;
-	int equalCovariances = GET_INTEGER (U"Covariances are equal");
+	bool equalCovariances = GET_INTEGER (U"Equal covariances");
 	MelderInfo_open ();
-	difference = Covariances_getMultivariateCentroidDifference (c1, c2, equalCovariances, &prob, &fisher, &df1, &df2);
+	difference = Covariances_getMultivariateCentroidDifference (c1, c2, equalCovariances, & prob, & fisher, & df1, & df2);
 	MelderInfo_writeLine (U"Under the assumption that the two covariances are", (equalCovariances ? U" " : U" not "), U"equal:");
 	MelderInfo_writeLine (U"Difference between multivariate means = ", difference);
 	MelderInfo_writeLine (U"Fisher's F = ", fisher);
 	MelderInfo_writeLine (U"Significance from zero = ", prob);
 	MelderInfo_writeLine (U"Degrees of freedom = ", df1, U", ", df2);
-	MelderInfo_writeLine (U"(Number of observations = ", c1->numberOfObservations, U", ",
-		c2->numberOfObservations);
+	MelderInfo_writeLine (U"(Number of observations = ", c1->numberOfObservations, U", ", c2->numberOfObservations);
 	MelderInfo_writeLine (U"Dimension of covariance matrices = ", c1-> numberOfRows, U")");
 	MelderInfo_close ();
 END
@@ -1180,49 +1226,65 @@ FORM (Covariance_to_TableOfReal_randomSampling, U"Covariance: To TableOfReal (ra
 DO
 	LOOP {
 		iam (Covariance);
-		praat_new (Covariance_to_TableOfReal_randomSampling (me, GET_INTEGER (U"Number of data points")), my name);
+		autoTableOfReal thee = Covariance_to_TableOfReal_randomSampling (me, GET_INTEGER (U"Number of data points"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Covariances_reportEquality)
-	autoCollection set = praat_getSelectedObjects ();
-	MelderInfo_open ();
-	{
-		double chisq, p, df;
-		Covariances_equality (set.peek(), 1, &p, &chisq, &df);
-		MelderInfo_writeLine (U"Difference between covariance matrices:");
-		MelderInfo_writeLine (U"Significance of difference (bartlett) = ", p);
-		MelderInfo_writeLine (U"Chi-squared = ", chisq);
-		MelderInfo_writeLine (U"Degrees of freedom = ", df);
-		Covariances_equality (set.peek(), 2, &p, &chisq, &df);
-		MelderInfo_writeLine (U"Significance of difference (wald) = ", p);
-		MelderInfo_writeLine (U"Chi-squared = ", chisq);
-		MelderInfo_writeLine (U"Degrees of freedom = ", df);
+	autoCovarianceList covariances = CovarianceList_create ();
+	LOOP {
+		iam (Covariance);
+		covariances -> addItem_ref (me);
 	}
+	MelderInfo_open ();
+	double p, chisq, df;
+	Covariances_equality (covariances.get(), 1, & p, & chisq, & df);
+	MelderInfo_writeLine (U"Difference between covariance matrices:");
+	MelderInfo_writeLine (U"Significance of difference (bartlett) = ", p);
+	MelderInfo_writeLine (U"Chi-squared (bartlett) = ", chisq);
+	MelderInfo_writeLine (U"Degrees of freedom (bartlett) = ", df);
+	
+	Covariances_equality (covariances.get(), 2, &p, &chisq, &df);
+	MelderInfo_writeLine (U"Significance of difference (wald) = ", p);
+	MelderInfo_writeLine (U"Chi-squared (wald) = ", chisq);
+	MelderInfo_writeLine (U"Degrees of freedom (wald) = ", df);
 	MelderInfo_close ();
 END
 
 DIRECT (Covariance_to_Correlation)
 	LOOP {
 		iam (Covariance);
-		praat_new (SSCP_to_Correlation (me), my name);
+		autoCorrelation thee = SSCP_to_Correlation (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Covariance_to_PCA)
 	LOOP {
 		iam (Covariance);
-		praat_new (SSCP_to_PCA (me), my name);
+		autoPCA thee = SSCP_to_PCA (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
+DIRECT (Covariances_pool)
+	autoCovarianceList covariances = CovarianceList_create ();
+	LOOP {
+		iam (Covariance);
+		covariances -> addItem_ref (me);
+	}
+	autoCovariance thee = CovarianceList_to_Covariance_pool (covariances.get());
+	praat_new (thee.move(), U"pool");
+END
+
 FORM (Covariance_and_TableOfReal_mahalanobis, U"Covariance & TableOfReal: To TableOfReal (mahalanobis)", U"Covariance & TableOfReal: To TableOfReal (mahalanobis)...")
 	BOOLEAN (U"Centroid from table", 0)
 	OK
 DO
-	Covariance cov = FIRST (Covariance);
-	TableOfReal tr = FIRST (TableOfReal);
-	praat_new (Covariance_and_TableOfReal_mahalanobis (cov, tr, GET_INTEGER (U"Centroid from table")), U"mahalanobis");
+	Covariance me = FIRST (Covariance);
+	TableOfReal thee = FIRST (TableOfReal);
+	praat_new (Covariance_and_TableOfReal_mahalanobis (me, thee, GET_INTEGER (U"Centroid from table")), U"mahalanobis");
 END
 
 /********************** Discriminant **********************************/
@@ -1239,14 +1301,14 @@ DIRECT (Discriminant_setGroupLabels)
 END
 
 FORM (Discriminant_and_Pattern_to_Categories, U"Discriminant & Pattern: To Categories", U"Discriminant & Pattern: To Categories...")
-	BOOLEAN (U"Pool covariance matrices", 1)
-	BOOLEAN (U"Use apriori probabilities", 1)
+	BOOLEAN (U"Pool covariance matrices", true)
+	BOOLEAN (U"Use apriori probabilities", true)
 	OK
 DO
 	Discriminant me = FIRST (Discriminant);
 	Pattern pat = FIRST (Pattern);
-	praat_new (Discriminant_and_Pattern_to_Categories (me, pat, GET_INTEGER (U"Pool covariance matrices"),
-		GET_INTEGER (U"Use apriori probabilities")), my name, U"_", pat->name);
+	autoCategories thee = Discriminant_and_Pattern_to_Categories (me, pat, GET_INTEGER (U"Pool covariance matrices"), GET_INTEGER (U"Use apriori probabilities"));
+	praat_new (thee.move(), my name, U"_", pat->name);
 END
 
 FORM (Discriminant_and_TableOfReal_to_Configuration, U"Discriminant & TableOfReal: To Configuration", U"Discriminant & TableOfReal: To Configuration...")
@@ -1257,7 +1319,8 @@ DO
 	REQUIRE (dimension >= 0, U"Number of dimensions must be greater equal zero.")
 	Discriminant me = FIRST (Discriminant);
 	TableOfReal tr = FIRST_GENERIC (TableOfReal);
-	praat_new (Discriminant_and_TableOfReal_to_Configuration (me, tr, dimension), my name, U"_", tr->name);
+	autoConfiguration thee = Discriminant_and_TableOfReal_to_Configuration (me, tr, dimension);
+	praat_new (thee.move(), my name, U"_", tr->name);
 END
 
 DIRECT (hint_Discriminant_and_TableOfReal_to_ClassificationTable)
@@ -1265,27 +1328,78 @@ DIRECT (hint_Discriminant_and_TableOfReal_to_ClassificationTable)
 END
 
 FORM (Discriminant_and_TableOfReal_to_ClassificationTable, U"Discriminant & TableOfReal: To ClassificationTable", U"Discriminant & TableOfReal: To ClassificationTable...")
-	BOOLEAN (U"Pool covariance matrices", 1)
-	BOOLEAN (U"Use apriori probabilities", 1)
+	BOOLEAN (U"Pool covariance matrices", true)
+	BOOLEAN (U"Use apriori probabilities", true)
 	OK
 DO
 	Discriminant me = FIRST (Discriminant);
 	TableOfReal tr = FIRST_GENERIC (TableOfReal);
-	praat_new (Discriminant_and_TableOfReal_to_ClassificationTable (me, tr,
-		GET_INTEGER (U"Pool covariance matrices"), GET_INTEGER (U"Use apriori probabilities")),
-		my name, U"_", tr->name);
+	autoClassificationTable thee = Discriminant_and_TableOfReal_to_ClassificationTable (me, tr,
+		GET_INTEGER (U"Pool covariance matrices"), GET_INTEGER (U"Use apriori probabilities"));
+	praat_new (thee.move(), my name, U"_", tr->name);
 END
 
 FORM (Discriminant_and_TableOfReal_mahalanobis, U"Discriminant & TableOfReal: To TableOfReal (mahalanobis)", U"Discriminant & TableOfReal: To TableOfReal (mahalanobis)...")
 	SENTENCE (U"Group label", U"")
-	BOOLEAN (U"Pool covariance matrices", 0)
+	BOOLEAN (U"Pool covariance matrices", false)
 	OK
 DO
 	Discriminant me = FIRST (Discriminant);
 	TableOfReal tr = FIRST (TableOfReal);
 	long group = Discriminant_groupLabelToIndex (me, GET_STRING (U"Group label"));
 	REQUIRE (group > 0, U"Group label does not exist.")
-	praat_new (Discriminant_and_TableOfReal_mahalanobis (me, tr, group, GET_INTEGER (U"Pool covariance matrices")), U"mahalanobis");
+	autoTableOfReal thee = Discriminant_and_TableOfReal_mahalanobis (me, tr, group, GET_INTEGER (U"Pool covariance matrices"));
+	praat_new (thee.move(), U"mahalanobis");
+END
+
+DIRECT (Discriminant_getNumberOfEigenvalues)
+	LOOP {
+		iam (Discriminant);
+		Melder_information (my eigen -> numberOfEigenvalues);
+	}
+END
+
+DIRECT (Discriminant_getDimension)
+	LOOP {
+		iam (Discriminant);
+		Melder_information (my eigen -> dimension);
+	}
+END
+
+FORM (Discriminant_getEigenvalue, U"Discriminant: Get eigenvalue", U"Eigen: Get eigenvalue...")
+	NATURAL (U"Eigenvalue number", U"1")
+	OK
+DO
+	LOOP {
+		iam (Discriminant);
+		long number = GET_INTEGER (U"Eigenvalue number");
+		if (number > my eigen -> numberOfEigenvalues) {
+			Melder_throw (U"Eigenvalue number must be smaller than ", my eigen -> numberOfEigenvalues + 1);
+		}
+		Melder_information (my eigen -> eigenvalues[number]);
+	}
+END
+
+FORM (Discriminant_getSumOfEigenvalues, U"Discriminant:Get sum of eigenvalues", U"Eigen: Get sum of eigenvalues...")
+	INTEGER (U"left Eigenvalue range",  U"0")
+	INTEGER (U"right Eigenvalue range", U"0")
+	OK
+DO
+	LOOP {
+		iam (Discriminant);
+		Melder_information (Eigen_getSumOfEigenvalues (my eigen.get(), GET_INTEGER (U"left Eigenvalue range"), GET_INTEGER (U"right Eigenvalue range")));
+	}
+END
+
+FORM (Discriminant_getEigenvectorElement, U"Discriminant: Get eigenvector element", U"Eigen: Get eigenvector element...")
+	NATURAL (U"Eigenvector number", U"1")
+	NATURAL (U"Element number", U"1")
+	OK
+DO
+	LOOP {
+		iam (Discriminant);
+		Melder_information (Eigen_getEigenvectorElement (my eigen.get(), GET_INTEGER (U"Eigenvector number"), GET_INTEGER (U"Element number")));
+	}
 END
 
 FORM (Discriminant_getWilksLambda, U"Discriminant: Get Wilks' lambda", U"Discriminant: Get Wilks' lambda...")
@@ -1308,8 +1422,8 @@ FORM (Discriminant_getCumulativeContributionOfComponents, U"Discriminant: Get cu
 DO
 	LOOP {
 		iam (Discriminant);
-		Melder_information (Eigen_getCumulativeContributionOfComponents (me,
-		GET_INTEGER (U"From component"), GET_INTEGER (U"To component")));
+		Melder_information (Eigen_getCumulativeContributionOfComponents (my eigen.get(),
+			GET_INTEGER (U"From component"), GET_INTEGER (U"To component")));
 	}
 END
 
@@ -1318,23 +1432,23 @@ FORM (Discriminant_getPartialDiscriminationProbability, U"Discriminant: Get part
 	INTEGER (U"Number of dimensions", U"1")
 	OK
 DO
-	long ndf, n = GET_INTEGER (U"Number of dimensions");
-	double chisq, p;
+	long n = GET_INTEGER (U"Number of dimensions");
 	REQUIRE (n >= 0, U"Number of dimensions must be greater than or equal to zero.")
 	LOOP {
 		iam (Discriminant);
-		Discriminant_getPartialDiscriminationProbability (me, n, &p, &chisq, &ndf);
-		Melder_information (p, U" (=probability, based on chisq = ", chisq, U"and ndf = ", ndf);
+		double p, chisq, df;
+		Discriminant_getPartialDiscriminationProbability (me, n, & p, & chisq, & df);
+		Melder_information (p, U" (=probability, based on chisq = ", chisq, U"and ndf = ", df, U")");
 	}
 END
 
 DIRECT (Discriminant_getHomegeneityOfCovariances_box)
 	LOOP {
 		iam (Discriminant);
-		double chisq, p; long ndf;
-		SSCPs_getHomegeneityOfCovariances_box ( (SSCPs) my groups, &p, &chisq, &ndf);
+		double chisq, p; double ndf;
+		SSCPList_getHomegeneityOfCovariances_box (my groups.get(), &p, &chisq, &ndf);
 		Melder_information (p, U" (=probability, based on chisq = ",
-		chisq, U"and ndf = ", ndf);
+			chisq, U"and ndf = ", ndf, U")");
 	}
 END
 
@@ -1342,13 +1456,19 @@ DIRECT (Discriminant_reportEqualityOfCovariances_wald)
 	MelderInfo_open ();
 	LOOP {
 		iam (Discriminant);
+		structCovarianceList list;
+		for (long i = 1; i <= my groups->size; i ++) {
+			SSCP sscp = my groups->at [i];
+			autoCovariance covariance = SSCP_to_Covariance (sscp, 1);   // FIXME numberOfConstraints shouldn't be 1, should it?
+			list. addItem_move (covariance.move());
+		}
 		double chisq, prob, df;
-		Covariances_equality ( (Collection) my groups, 2, &prob, &chisq, &df);
+		Covariances_equality (& list, 2, & prob, & chisq, & df);
 		MelderInfo_writeLine (U"Wald test for equality of covariance matrices:");
 		MelderInfo_writeLine (U"Chi squared: ", chisq);
 		MelderInfo_writeLine (U"Significance: ", prob);
 		MelderInfo_writeLine (U"Degrees of freedom: ", df);
-		MelderInfo_writeLine (U"Number of matrices: ", my groups -> size);
+		MelderInfo_writeLine (U"Number of matrices: ", list.size);
 	}
 	MelderInfo_close ();
 END
@@ -1356,7 +1476,7 @@ END
 FORM (Discriminant_getConcentrationEllipseArea, U"Discriminant: Get concentration ellipse area", U"Discriminant: Get concentration ellipse area...")
 	SENTENCE (U"Group label", U"")
 	POSITIVE (U"Number of sigmas", U"1.0")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	OK
@@ -1365,16 +1485,20 @@ DO
 		iam (Discriminant);
 		long group = Discriminant_groupLabelToIndex (me, GET_STRING (U"Group label"));
 		REQUIRE (group > 0, U"Group label does not exist.")
-		Melder_information (Discriminant_getConcentrationEllipseArea (me, group,
-		GET_REAL (U"Number of sigmas"), 0, GET_INTEGER (U"Discriminant plane"),
-		GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension")));
+		Melder_information (Discriminant_getConcentrationEllipseArea (me,
+			group,
+			GET_REAL (U"Number of sigmas"),
+			false,   // confidence
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension")));
 	}
 END
 
 FORM (Discriminant_getConfidenceEllipseArea, U"Discriminant: Get confidence ellipse area", U"Discriminant: Get confidence ellipse area...")
 	SENTENCE (U"Group label", U"")
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	OK
@@ -1383,9 +1507,13 @@ DO
 		iam (Discriminant);
 		long group = Discriminant_groupLabelToIndex (me, GET_STRING (U"Group label"));
 		REQUIRE (group > 0, U"Group label does not exist.")
-		Melder_information (Discriminant_getConcentrationEllipseArea (me, group,
-		GET_REAL (U"Confidence level"), 1, GET_INTEGER (U"Discriminant plane"),
-		GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension")));
+		Melder_information (Discriminant_getConcentrationEllipseArea (me,
+			group,
+			GET_REAL (U"Confidence level"),
+			true,    //confidence
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension")));
 	}
 END
 
@@ -1408,20 +1536,80 @@ DIRECT (Discriminant_getLnDeterminant_total)
 	}
 END
 
-FORM (Discriminant_invertEigenvector, U"Discriminant: Invert eigenvector", 0)
+FORM (Discriminant_invertEigenvector, U"Discriminant: Invert eigenvector", nullptr)
 	NATURAL (U"Index of eigenvector", U"1")
 	OK
 DO
 	LOOP {
 		iam (Discriminant);
-		Eigen_invertEigenvector (me, GET_INTEGER (U"Index of eigenvector"));
+		Eigen_invertEigenvector (my eigen.get(), GET_INTEGER (U"Index of eigenvector"));
 		praat_dataChanged (me);
 	}
 END
 
+FORM (Discriminant_drawEigenvalues, U"Discriminant: Draw eigenvalues", U"Eigen: Draw eigenvalues...")
+	INTEGER (U"left Eigenvalue range", U"0")
+	INTEGER (U"right Eigenvalue range", U"0")
+	REAL (U"left Amplitude range", U"0.0")
+	REAL (U"right Amplitude range", U"0.0")
+	BOOLEAN (U"Fraction of eigenvalues summed", false)
+	BOOLEAN (U"Cumulative", false)
+	POSITIVE (U"Mark size (mm)", U"1.0")
+	SENTENCE (U"Mark string (+xo.)", U"+")
+	BOOLEAN (U"Garnish", true)
+	OK
+DO
+	autoPraatPicture picture;
+	LOOP {
+		iam (Discriminant);
+		Eigen_drawEigenvalues (my eigen.get(), GRAPHICS,
+			GET_INTEGER (U"left Eigenvalue range"),
+			GET_INTEGER (U"right Eigenvalue range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Fraction of eigenvalues summed"),
+			GET_INTEGER (U"Cumulative"),
+			GET_REAL (U"Mark size"),
+			GET_STRING (U"Mark string"),
+			GET_INTEGER (U"Garnish"));
+	}
+END
+
+FORM (Discriminant_drawEigenvector, U"Discriminant: Draw eigenvector", U"Eigen: Draw eigenvector...")
+	INTEGER (U"Eigenvector number", U"1")
+	BOOLEAN (U"Component loadings", false)
+	INTEGER (U"left Element range", U"0")
+	INTEGER (U"right Element range", U"0")
+	REAL (U"left Amplitude range", U"-1.0")
+	REAL (U"right Amplitude range", U"1.0")
+	POSITIVE (U"Mark size (mm)", U"1.0")
+	SENTENCE (U"Mark string (+xo.)", U"+")
+	BOOLEAN (U"Connect points", true)
+	BOOLEAN (U"Garnish", true)
+	OK
+DO
+	autoPraatPicture picture;
+	LOOP {
+		iam (Discriminant);
+		Eigen_drawEigenvector (my eigen.get(), GRAPHICS,
+			GET_INTEGER (U"Eigenvector number"),
+			GET_INTEGER (U"left Element range"),
+			GET_INTEGER (U"right Element range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Component loadings"),
+			GET_REAL (U"Mark size"),
+			GET_STRING (U"Mark string"),
+			GET_INTEGER (U"Connect points"),
+			nullptr,   // rowLabels
+			GET_INTEGER (U"Garnish"));
+	}
+END
+
+
 FORM (Discriminant_drawSigmaEllipses, U"Discriminant: Draw sigma ellipses", U"Discriminant: Draw sigma ellipses...")
 	POSITIVE (U"Number of sigmas", U"1.0")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -1429,24 +1617,32 @@ FORM (Discriminant_drawSigmaEllipses, U"Discriminant: Draw sigma ellipses", U"Di
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Discriminant);
-		Discriminant_drawConcentrationEllipses (me, GRAPHICS, GET_REAL (U"Number of sigmas"), 0, 0,
-		GET_INTEGER (U"Discriminant plane"), GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+		Discriminant_drawConcentrationEllipses (me, GRAPHICS,
+			GET_REAL (U"Number of sigmas"),
+			false,   // confidence
+			nullptr,   // label
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 FORM (Discriminant_drawOneSigmaEllipse, U"Discriminant: Draw one sigma ellipse", U"Discriminant: Draw one sigma ellipse...")
 	SENTENCE (U"Label", U"")
 	POSITIVE (U"Number of sigmas", U"1.0")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -1454,24 +1650,31 @@ FORM (Discriminant_drawOneSigmaEllipse, U"Discriminant: Draw one sigma ellipse",
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Discriminant);
-		Discriminant_drawConcentrationEllipses (me, GRAPHICS, GET_REAL (U"Number of sigmas"), 0,
-		GET_STRING (U"Label"), GET_INTEGER (U"Discriminant plane"),
-		GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+		Discriminant_drawConcentrationEllipses (me, GRAPHICS,
+			GET_REAL (U"Number of sigmas"),
+			false,   // confidence
+			GET_STRING (U"Label"),
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (Discriminant_drawConfidenceEllipses, U"Discriminant: Draw confidence ellipses", 0)
+FORM (Discriminant_drawConfidenceEllipses, U"Discriminant: Draw confidence ellipses", nullptr)
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -1479,26 +1682,33 @@ FORM (Discriminant_drawConfidenceEllipses, U"Discriminant: Draw confidence ellip
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Discriminant);
 		Discriminant_drawConcentrationEllipses (me, GRAPHICS,
-		GET_REAL (U"Confidence level"), 1, NULL, GET_INTEGER (U"Discriminant plane"),
-		GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"Confidence level"),
+			true,   // confidence
+			nullptr,   // label
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 
-FORM (Discriminant_drawOneConfidenceEllipse, U"Discriminant: Draw one confidence ellipse", 0)
+FORM (Discriminant_drawOneConfidenceEllipse, U"Discriminant: Draw one confidence ellipse", nullptr)
 	SENTENCE (U"Label", U"")
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
-	BOOLEAN (U"Discriminant plane", 1)
+	BOOLEAN (U"Discriminant plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -1506,53 +1716,65 @@ FORM (Discriminant_drawOneConfidenceEllipse, U"Discriminant: Draw one confidence
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Discriminant);
 		Discriminant_drawConcentrationEllipses (me, GRAPHICS,
-		GET_REAL (U"Confidence level"), 1, GET_STRING (U"Label"), GET_INTEGER (U"Discriminant plane"),
-		GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"Confidence level"),
+			true,   // confidence
+			GET_STRING (U"Label"),
+			GET_INTEGER (U"Discriminant plane"),
+			GET_INTEGER (U"X-dimension"),
+			GET_INTEGER (U"Y-dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 DIRECT (Discriminant_extractBetweenGroupsSSCP)
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractBetweenGroupsSSCP (me), 0);
+		autoSSCP thee = Discriminant_extractBetweenGroupsSSCP (me);
+		praat_new (thee.move());
 	}
 END
 
 DIRECT (Discriminant_extractGroupCentroids)
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractGroupCentroids (me), U"centroids");
+		autoTableOfReal thee = Discriminant_extractGroupCentroids (me);
+		praat_new (thee.move(), U"centroids");
 	}
 END
 
 DIRECT (Discriminant_extractGroupStandardDeviations)
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractGroupStandardDeviations (me), U"group_stddevs");
+		autoTableOfReal thee = Discriminant_extractGroupStandardDeviations (me);
+		praat_new (thee.move(), U"group_stddevs");
 	}
 END
 
 DIRECT (Discriminant_extractGroupLabels)
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractGroupLabels (me), U"group_labels");
+		autoStrings thee = Discriminant_extractGroupLabels (me);
+		praat_new (thee.move(), U"group_labels");
 	}
 END
 
 DIRECT (Discriminant_extractPooledWithinGroupsSSCP)
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractPooledWithinGroupsSSCP (me), U"pooled_within");
+		autoSSCP thee = Discriminant_extractPooledWithinGroupsSSCP (me);
+		praat_new (thee.move(), U"pooled_within");
 	}
 END
 
@@ -1563,7 +1785,8 @@ DO
 	long index = GET_INTEGER (U"Group index");
 	LOOP {
 		iam (Discriminant);
-		praat_new (Discriminant_extractWithinGroupSSCP (me, index), my name, U"_g", index);
+		autoSSCP thee = Discriminant_extractWithinGroupSSCP (me, index);
+		praat_new (thee.move(), my name, U"_g", index);
 	}
 END
 
@@ -1577,7 +1800,7 @@ END
 DIRECT (Discriminant_getDimensionOfFunctions)
 	LOOP {
 		iam (Discriminant);
-		Melder_information (Eigen_getDimensionOfComponents (me));
+		Melder_information (Eigen_getDimensionOfComponents (my eigen.get()));
 	}
 END
 
@@ -1601,12 +1824,12 @@ END
 
 /********************** DTW *******************************************/
 
-FORM (DTW_and_Polygon_findPathInside, U"DTW & Polygon: Find path inside", 0)
+FORM (DTW_and_Polygon_findPathInside, U"DTW & Polygon: Find path inside", nullptr)
     RADIO (U"Slope constraint", 1)
-    RADIOBUTTON (U"no restriction")
-    RADIOBUTTON (U"1/3 < slope < 3")
-    RADIOBUTTON (U"1/2 < slope < 2")
-    RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
     OK
 DO
     int localSlope = GET_INTEGER (U"Slope constraint");
@@ -1616,19 +1839,19 @@ DO
 
 END
 
-FORM (DTW_and_Polygon_to_Matrix_cummulativeDistances, U"DTW & Polygon: To Matrix (cumm. distances)", 0)
+FORM (DTW_and_Polygon_to_Matrix_cummulativeDistances, U"DTW & Polygon: To Matrix (cumm. distances)", nullptr)
     RADIO (U"Slope constraint", 1)
-    RADIOBUTTON (U"no restriction")
-    RADIOBUTTON (U"1/3 < slope < 3")
-    RADIOBUTTON (U"1/2 < slope < 2")
-    RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
     OK
 DO
     int localSlope = GET_INTEGER (U"Slope constraint");
     DTW me = FIRST (DTW);
     Polygon thee = FIRST (Polygon);
     autoMatrix him = DTW_and_Polygon_to_Matrix_cummulativeDistances (me, thee, localSlope);
-    praat_new (him.transfer(), my name, U"_", localSlope);
+    praat_new (him.move(), my name, U"_", localSlope);
 END
 
 FORM (DTW_and_Sounds_draw, U"DTW & Sounds: Draw", U"DTW & Sounds: Draw...")
@@ -1636,12 +1859,13 @@ FORM (DTW_and_Sounds_draw, U"DTW & Sounds: Draw", U"DTW & Sounds: Draw...")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
-	Sound s1 = 0, s2 = 0; DTW dtw = 0;
+	Sound s1 = nullptr, s2 = nullptr;
+	DTW dtw = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classSound) {
 			(s1 ? s2 : s1) = (Sound) me;
 		} else if (CLASS == classDTW) {
@@ -1661,10 +1885,10 @@ FORM (DTW_and_Sounds_drawWarpX, U"DTW & Sounds: Draw warp (x)", U"DTW & Sounds:
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	REAL (U"Time (s)", U"0.1")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
-	Sound s1 = 0, s2 = 0;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		(s1 ? s2 : s1) = me;
@@ -1678,19 +1902,19 @@ DO
 		GET_REAL (U"Time"), GET_INTEGER (U"Garnish"));
 END
 
-void DTW_constraints_addCommonFields (void *dia) {
-	Any radio;
+void DTW_constraints_addCommonFields (UiForm dia) {
+	UiField radio;
 	LABEL (U"", U"Boundary conditions")
-	BOOLEAN (U"Match begin positions", 0)
-	BOOLEAN (U"Match end positions", 0)
+	BOOLEAN (U"Match begin positions", false)
+	BOOLEAN (U"Match end positions", false)
 	RADIO (U"Slope constraint", 1)
-	RADIOBUTTON (U"no restriction")
-	RADIOBUTTON (U"1/3 < slope < 3")
-	RADIOBUTTON (U"1/2 < slope < 2")
-	RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
 }
 
-void DTW_constraints_getCommonFields (void *dia, int *begin, int *end, int *slope) {
+void DTW_constraints_getCommonFields (UiForm dia, int *begin, int *end, int *slope) {
 	*begin = GET_INTEGER (U"Match begin positions");
 	*end = GET_INTEGER (U"Match end positions");
 	*slope = GET_INTEGER (U"Slope constraint");
@@ -1698,54 +1922,67 @@ void DTW_constraints_getCommonFields (void *dia, int *begin, int *end, int *slop
 
 DIRECT (DTW_help) Melder_help (U"DTW"); END
 
-FORM (DTW_drawPath, U"DTW: Draw path", 0)
+FORM (DTW_drawPath, U"DTW: Draw path", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 0);
+	BOOLEAN (U"Garnish", false);
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (DTW);
-		DTW_drawPath (me, GRAPHICS, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
+		DTW_drawPath (me, GRAPHICS,
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (DTW_drawDistancesAlongPath, U"DTW: Draw distances along path", 0)
+FORM (DTW_drawDistancesAlongPath, U"DTW: Draw distances along path", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 0);
+	BOOLEAN (U"Garnish", false);
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (DTW);
-		DTW_drawDistancesAlongPath (me, GRAPHICS, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
+		DTW_drawDistancesAlongPath (me,
+			GRAPHICS, GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (DTW_paintDistances, U"DTW: Paint distances", 0)
+FORM (DTW_paintDistances, U"DTW: Paint distances", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	REAL (U"Minimum", U"0.0")
 	REAL (U"Maximum", U"0.0")
-	BOOLEAN (U"Garnish", 0);
+	BOOLEAN (U"Garnish", false);
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (DTW);
-		DTW_paintDistances (me, GRAPHICS, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_REAL (U"Minimum"), GET_REAL (U"Maximum"), GET_INTEGER (U"Garnish"));
+		DTW_paintDistances (me, GRAPHICS,
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_REAL (U"Minimum"),
+			GET_REAL (U"Maximum"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -1755,15 +1992,42 @@ FORM (DTW_drawWarpX, U"DTW: Draw warp (x)", U"DTW: Draw warp (x)...")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	REAL (U"Time (s)", U"0.1")
-	BOOLEAN (U"Garnish", 0);
+	BOOLEAN (U"Garnish", false);
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (DTW);
-		DTW_drawWarpX (me, GRAPHICS, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_REAL (U"Time"), GET_INTEGER (U"Garnish"));
+		DTW_drawWarpX (me, GRAPHICS,
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_REAL (U"Time"),
+			GET_INTEGER (U"Garnish"));
+	}
+END
+
+
+FORM (DTW_drawWarpY, U"DTW: Draw warp (y)", U"DTW: Draw warp (y)...")
+	REAL (U"left Horizontal range", U"0.0")
+	REAL (U"right Horizontal range", U"0.0")
+	REAL (U"left Vertical range", U"0.0")
+	REAL (U"right Vertical range", U"0.0")
+	REAL (U"Time (s)", U"0.1")
+	BOOLEAN (U"Garnish", false);
+	OK
+DO
+	autoPraatPicture picture;
+	LOOP {
+		iam (DTW);
+		DTW_drawWarpY (me, GRAPHICS,
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_REAL (U"Time"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -1896,7 +2160,7 @@ FORM (DTW_getPathY, U"DTW: Get time along path", U"DTW: Get time along path...")
 DO
 	LOOP {
 		iam (DTW);
-		Melder_information (DTW_getPathY (me, GET_REAL (U"Time")));
+		Melder_information (DTW_getYTimeFromXTime (me, GET_REAL (U"Time")));
 	}
 END
 
@@ -1907,7 +2171,7 @@ DO
 	double time = GET_REAL (U"Time at x");
 	LOOP {
 		iam (DTW);
-		Melder_information (DTW_getYTimeFromXTime (me, time), U" s (= y time at z time ", time, U")");
+		Melder_information (DTW_getYTimeFromXTime (me, time), U" s (= y time at x time ", time, U")");
 	}
 END
 
@@ -1924,18 +2188,18 @@ END
 
 FORM (DTW_getMaximumConsecutiveSteps, U"DTW: Get maximum consecutive steps", U"DTW: Get maximum consecutive steps...")
 	OPTIONMENU (U"Direction", 1)
-	OPTION (U"X")
-	OPTION (U"Y")
-	OPTION (U"Diagonaal")
+		OPTION (U"X")
+		OPTION (U"Y")
+		OPTION (U"Diagonaal")
 	OK
 DO
-	int direction[] = {DTW_START, DTW_X, DTW_Y, DTW_XANDY};
-	const char32 *string[] = {U"", U"x", U"y", U"diagonal"};
+	int direction [] = { DTW_START, DTW_X, DTW_Y, DTW_XANDY };
+	const char32 *string [] = { U"", U"x", U"y", U"diagonal" };
 	int d = GET_INTEGER (U"Direction");
 	LOOP {
 		iam (DTW);
-		Melder_information (DTW_getMaximumConsecutiveSteps (me, direction[d]),
-		U" (= maximum number of consecutive steps in ", string[d], U" direction)");
+		Melder_information (DTW_getMaximumConsecutiveSteps (me, direction [d]),
+			U" (= maximum number of consecutive steps in ", string [d], U" direction)");
 	}
 END
 
@@ -1946,7 +2210,7 @@ DIRECT (DTW_getWeightedDistance)
 	}
 END
 
-FORM (DTW_getDistanceValue, U"DTW: Get distance value", 0)
+FORM (DTW_getDistanceValue, U"DTW: Get distance value", nullptr)
 	REAL (U"Time at x (s)", U"0.1")
 	REAL (U"Time at y (s)", U"0.1")
 	OK
@@ -2000,7 +2264,7 @@ DO
 			double minimum, maximum;
 			Matrix_getWindowExtrema (me, 0, 0, 0, 0, & minimum, & maximum);
 			if (minimum < 0) {
-				DTW_and_Matrix_replace (me, cp.peek()); // restore original
+				DTW_and_Matrix_replace (me, cp.get()); // restore original
 				Melder_throw (U"Execution of the formula has made some distance(s) negative which is not allowed.");
 			}
 			praat_dataChanged (me);
@@ -2011,7 +2275,7 @@ DO
 	}
 END
 
-FORM (DTW_setDistanceValue, U"DTW: Set distance value", 0)
+FORM (DTW_setDistanceValue, U"DTW: Set distance value", nullptr)
 	REAL (U"Time at x (s)", U"0.1")
 	REAL (U"Time at y (s)", U"0.1")
 	REAL (U"New value", U"0.0")
@@ -2038,42 +2302,42 @@ DO
 	}
 END
 
-FORM (DTW_findPath, U"DTW: Find path", 0)
+FORM (DTW_findPath, U"DTW: Find path", nullptr)
 	DTW_constraints_addCommonFields (dia);
 	OK
 DO
 	int begin, end, slope;
-	DTW_constraints_getCommonFields (dia, &begin, &end, &slope);
+	DTW_constraints_getCommonFields (dia, & begin, & end, & slope);
 	LOOP {
 		iam (DTW);
 		DTW_findPath (me, begin, end, slope);
 	}
 END
 
-FORM (DTW_findPath_bandAndSlope, U"DTW: find path (band & slope)", 0)
+FORM (DTW_findPath_bandAndSlope, U"DTW: find path (band & slope)", nullptr)
     REAL (U"Sakoe-Chiba band (s)", U"0.05")
     RADIO (U"Slope constraint", 1)
-    RADIOBUTTON (U"no restriction")
-    RADIOBUTTON (U"1/3 < slope < 3")
-    RADIOBUTTON (U"1/2 < slope < 2")
-    RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
     OK
 DO
     double band = GET_REAL (U"Sakoe-Chiba band");
     int slope = GET_INTEGER (U"Slope constraint");
     LOOP {
         iam (DTW);
-        DTW_findPath_bandAndSlope (me, band, slope, 0);
+        DTW_findPath_bandAndSlope (me, band, slope, nullptr);
     }
 END
 
-FORM (DTW_to_Matrix_cummulativeDistances, U"DTW: To Matrix", 0)
+FORM (DTW_to_Matrix_cummulativeDistances, U"DTW: To Matrix", nullptr)
     REAL (U"Sakoe-Chiba band (s)", U"0.05")
     RADIO (U"Slope constraint", 1)
-    RADIOBUTTON (U"no restriction")
-    RADIOBUTTON (U"1/3 < slope < 3")
-    RADIOBUTTON (U"1/2 < slope < 2")
-    RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
     OK
 DO
     double band = GET_REAL (U"Sakoe-Chiba band");
@@ -2081,17 +2345,17 @@ DO
     LOOP {
         iam (DTW);
         autoMatrix thee = DTW_to_Matrix_cummulativeDistances (me, band, slope);
-        praat_new (thee.transfer(), my name, U"_cd");
+        praat_new (thee.move(), my name, U"_cd");
     }
 END
 
 FORM (DTW_to_Polygon, U"DTW: To Polygon...", 0)
     REAL (U"Sakoe-Chiba band (s)", U"0.1")
     RADIO (U"Slope constraint", 1)
-    RADIOBUTTON (U"no restriction")
-    RADIOBUTTON (U"1/3 < slope < 3")
-    RADIOBUTTON (U"1/2 < slope < 2")
-    RADIOBUTTON (U"2/3 < slope < 3/2")
+		RADIOBUTTON (U"no restriction")
+		RADIOBUTTON (U"1/3 < slope < 3")
+		RADIOBUTTON (U"1/2 < slope < 2")
+		RADIOBUTTON (U"2/3 < slope < 3/2")
     OK
 DO
     double band = GET_REAL (U"Sakoe-Chiba band");
@@ -2099,21 +2363,23 @@ DO
     LOOP {
         iam (DTW);
         autoPolygon thee = DTW_to_Polygon (me, band, slope);
-        praat_new (thee.transfer(), my name);
+        praat_new (thee.move(), my name);
     }
 END
 
 DIRECT (DTW_to_Matrix_distances)
 	LOOP {
 		iam (DTW);
-		praat_new (DTW_to_Matrix_distances (me), my name);
+		autoMatrix thee = DTW_to_Matrix_distances (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (DTW_swapAxes)
 	LOOP {
 		iam (DTW);
-		praat_new (DTW_swapAxes (me), my name, U"_axesSwapped");
+		autoDTW thee = DTW_swapAxes (me);
+		praat_new (thee.move(), my name, U"_axesSwapped");
 	}
 END
 
@@ -2127,13 +2393,15 @@ END
 DIRECT (DTW_and_TextGrid_to_TextGrid)
 	DTW me = FIRST (DTW);
 	TextGrid tg = FIRST (TextGrid);
-	praat_new (DTW_and_TextGrid_to_TextGrid (me, tg, 0), 0);
+	autoTextGrid thee = DTW_and_TextGrid_to_TextGrid (me, tg, 0);
+	praat_new (thee.move(), tg -> name, U"_", my name);
 END
 
 DIRECT (DTW_and_IntervalTier_to_Table)
 	DTW me = FIRST (DTW);
 	IntervalTier ti = FIRST (IntervalTier);
-	praat_new (DTW_and_IntervalTier_to_Table (me, ti, 1.0/44100), my name);
+	autoTable thee = DTW_and_IntervalTier_to_Table (me, ti, 1.0/44100);
+	praat_new (thee.move(), my name);
 END
 
 /******************** EditDistanceTable & EditCostsTable ********************************************/
@@ -2145,7 +2413,8 @@ END
 DIRECT (EditDistanceTable_to_TableOfReal_directions)
 	LOOP {
 		iam (EditDistanceTable);
-		praat_new (EditDistanceTable_to_TableOfReal_directions (me), my name);
+		autoTableOfReal thee = EditDistanceTable_to_TableOfReal_directions (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -2155,7 +2424,7 @@ DIRECT (EditDistanceTable_setEditCosts)
 	EditDistanceTable_setEditCosts (me, thee);
 END
 
-FORM (EditDistanceTable_setDefaultCosts, U"", 0)
+FORM (EditDistanceTable_setDefaultCosts, U"", nullptr)
 	REAL (U"Insertion costs", U"1.0")
 	REAL (U"Deletion costs", U"1.0")
 	REAL (U"Substitution costs", U"2.0")
@@ -2179,7 +2448,7 @@ DO
 	}
 END
 
-FORM (EditDistanceTable_draw, U"EditDistanceTable_draw", 0)
+FORM (EditDistanceTable_draw, U"EditDistanceTable_draw", nullptr)
 	RADIO (U"Format", 3)
 		RADIOBUTTON (U"decimal")
 		RADIOBUTTON (U"exponential")
@@ -2192,7 +2461,10 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (EditDistanceTable);
-		EditDistanceTable_draw (me, GRAPHICS, GET_INTEGER (U"Format"), GET_INTEGER (U"Precision"), GET_REAL (U"Rotate source labels by"));
+		EditDistanceTable_draw (me, GRAPHICS,
+			GET_INTEGER (U"Format"),
+			GET_INTEGER (U"Precision"),
+			GET_REAL (U"Rotate source labels by"));
 	}
 END
 
@@ -2208,116 +2480,131 @@ DIRECT (EditCostsTable_help)
 	Melder_help (U"EditCostsTable");
 END
 
-FORM (EditCostsTable_getTargetIndex, U"EditCostsTable: Get target index", 0)
+FORM (EditCostsTable_getTargetIndex, U"EditCostsTable: Get target index", nullptr)
 	SENTENCE (U"Target", U"")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getTargetIndex (me, GET_STRING (U"Target")), NULL);
+		Melder_informationReal (EditCostsTable_getTargetIndex (me,
+			GET_STRING (U"Target")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_getSourceIndex, U"EditCostsTable: Get source index", 0)
+FORM (EditCostsTable_getSourceIndex, U"EditCostsTable: Get source index", nullptr)
 	SENTENCE (U"Source", U"")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getSourceIndex (me, GET_STRING (U"Source")), NULL);
+		Melder_informationReal (EditCostsTable_getSourceIndex (me,
+			GET_STRING (U"Source")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_getInsertionCost, U"EditCostsTable: Get insertion cost", 0)
+FORM (EditCostsTable_getInsertionCost, U"EditCostsTable: Get insertion cost", nullptr)
 	SENTENCE (U"Target", U"")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getInsertionCost (me, GET_STRING (U"Target")), NULL);
+		Melder_informationReal (EditCostsTable_getInsertionCost (me,
+			GET_STRING (U"Target")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_getDeletionCost, U"EditCostsTable: Get deletion cost", 0)
+FORM (EditCostsTable_getDeletionCost, U"EditCostsTable: Get deletion cost", nullptr)
 	SENTENCE (U"Source", U"")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getDeletionCost (me, GET_STRING (U"Source")), NULL);
+		Melder_informationReal (EditCostsTable_getDeletionCost (me,
+			GET_STRING (U"Source")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_getSubstitutionCost, U"EditCostsTable: Get substitution cost", 0)
+FORM (EditCostsTable_getSubstitutionCost, U"EditCostsTable: Get substitution cost", nullptr)
 	SENTENCE (U"Target", U"")
 	SENTENCE (U"Source", U"")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getSubstitutionCost (me, GET_STRING (U"Target"), GET_STRING (U"Source")), NULL);
+		Melder_informationReal (EditCostsTable_getSubstitutionCost (me,
+			GET_STRING (U"Target"),
+			GET_STRING (U"Source")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_getOthersCost, U"EditCostsTable: Get cost (others)", 0)
+FORM (EditCostsTable_getOthersCost, U"EditCostsTable: Get cost (others)", nullptr)
 	RADIO (U"Others cost type", 1)
-	RADIOBUTTON (U"Insertion")
-	RADIOBUTTON (U"Deletion")
-	RADIOBUTTON (U"Equality")
-	RADIOBUTTON (U"Inequality")
+		RADIOBUTTON (U"Insertion")
+		RADIOBUTTON (U"Deletion")
+		RADIOBUTTON (U"Equality")
+		RADIOBUTTON (U"Inequality")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		Melder_informationReal (EditCostsTable_getOthersCost (me, GET_INTEGER (U"Others cost type")), NULL);
+		Melder_informationReal (EditCostsTable_getOthersCost (me,
+			GET_INTEGER (U"Others cost type")), nullptr);
 	}
 END
 
-FORM (EditCostsTable_setTargetSymbol_index, U"EditCostsTable: Set target symbol (index)", 0)
+FORM (EditCostsTable_setTargetSymbol_index, U"EditCostsTable: Set target symbol (index)", nullptr)
 	NATURAL (U"Index", U"1")
 	SENTENCE (U"Target", U"a")
 	OK
 DO
 	LOOP {
 		iam (TableOfReal);
-		TableOfReal_setRowLabel (me, GET_INTEGER (U"Index"), GET_STRING (U"Target"));
+		TableOfReal_setRowLabel (me,
+			GET_INTEGER (U"Index"),
+			GET_STRING (U"Target"));
 	}
 END
 
-FORM (EditCostsTable_setSourceSymbol_index, U"EditCostsTable: Set source symbol (index)", 0)
+FORM (EditCostsTable_setSourceSymbol_index, U"EditCostsTable: Set source symbol (index)", nullptr)
 	NATURAL (U"Index", U"1")
 	SENTENCE (U"Source", U"a")
 	OK
 DO
 	LOOP {
 		iam (TableOfReal);
-		TableOfReal_setColumnLabel (me, GET_INTEGER (U"Index"), GET_STRING (U"Source"));
+		TableOfReal_setColumnLabel (me,
+			GET_INTEGER (U"Index"),
+			GET_STRING (U"Source"));
 	}
 END
 
-FORM (EditCostsTable_setInsertionCosts, U"EditCostsTable: Set insertion costs", 0)
+FORM (EditCostsTable_setInsertionCosts, U"EditCostsTable: Set insertion costs", nullptr)
 	SENTENCE (U"Targets", U"")
 	REAL (U"Cost", U"2.0")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		EditCostsTable_setInsertionCosts (me, GET_STRING (U"Targets"), GET_REAL (U"Cost"));
+		EditCostsTable_setInsertionCosts (me,
+			GET_STRING (U"Targets"),
+			GET_REAL (U"Cost"));
 	}
 END
 
-FORM (EditCostsTable_setDeletionCosts, U"EditCostsTable: Set deletion costs", 0)
+FORM (EditCostsTable_setDeletionCosts, U"EditCostsTable: Set deletion costs", nullptr)
 	SENTENCE (U"Sources", U"")
 	REAL (U"Cost", U"2.0")
 	OK
 DO
 	LOOP {
 		iam (EditCostsTable);
-		EditCostsTable_setDeletionCosts (me, GET_STRING (U"Sources"), GET_REAL (U"Cost"));
+		EditCostsTable_setDeletionCosts (me,
+			GET_STRING (U"Sources"),
+			GET_REAL (U"Cost"));
 	}
 END
 
-FORM (EditCostsTable_setSubstitutionCosts, U"EditCostsTable: Set substitution costs", 0)
+FORM (EditCostsTable_setSubstitutionCosts, U"EditCostsTable: Set substitution costs", nullptr)
 	SENTENCE (U"Targets", U"a i u")
 	SENTENCE (U"Sources", U"a i u")
 	REAL (U"Cost", U"2.0")
@@ -2325,11 +2612,14 @@ FORM (EditCostsTable_setSubstitutionCosts, U"EditCostsTable: Set substitution co
 DO
 	LOOP {
 		iam (EditCostsTable);
-		EditCostsTable_setSubstitutionCosts (me, GET_STRING (U"Targets"), GET_STRING (U"Sources"), GET_REAL (U"Cost"));
+		EditCostsTable_setSubstitutionCosts (me,
+			GET_STRING (U"Targets"),
+			GET_STRING (U"Sources"),
+			GET_REAL (U"Cost"));
 	}
 END
 
-FORM (EditCostsTable_setOthersCosts, U"EditCostsTable: Set costs (others)", 0)
+FORM (EditCostsTable_setOthersCosts, U"EditCostsTable: Set costs (others)", nullptr)
 	LABEL (U"", U"Others costs")
 	REAL (U"Insertion", U"1.0")
 	REAL (U"Deletion", U"1.0")
@@ -2340,14 +2630,19 @@ FORM (EditCostsTable_setOthersCosts, U"EditCostsTable: Set costs (others)", 0)
 DO
 	LOOP {
 		iam (EditCostsTable);
-		EditCostsTable_setOthersCosts (me, GET_REAL (U"Insertion"), GET_REAL (U"Deletion"), GET_REAL (U"Equality"), GET_REAL (U"Inequality"));
+		EditCostsTable_setOthersCosts (me,
+			GET_REAL (U"Insertion"),
+			GET_REAL (U"Deletion"),
+			GET_REAL (U"Equality"),
+			GET_REAL (U"Inequality"));
 	}
 END
 
 DIRECT (EditCostsTable_to_TableOfReal)
 	LOOP {
 		iam (EditCostsTable);
-		praat_new (EditCostsTable_to_TableOfReal (me), my name);
+		autoTableOfReal result = EditCostsTable_to_TableOfReal (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -2361,7 +2656,8 @@ DO
 	numberOfTargetSymbols = numberOfTargetSymbols < 0 ? 0 : numberOfTargetSymbols;
 	long numberOfSourceSymbols = GET_INTEGER (U"Number of source symbols");
 	numberOfSourceSymbols = numberOfSourceSymbols < 0 ? 0 : numberOfSourceSymbols;
-	praat_new (EditCostsTable_create (numberOfTargetSymbols, numberOfSourceSymbols), GET_STRING (U"Name"));
+	autoEditCostsTable result = EditCostsTable_create (numberOfTargetSymbols, numberOfSourceSymbols);
+	praat_new (result.move(), GET_STRING (U"Name"));
 END
 
 /******************** Eigen ********************************************/
@@ -2377,45 +2673,57 @@ FORM (Eigen_drawEigenvalues, U"Eigen: Draw eigenvalues", U"Eigen: Draw eigenvalu
 	INTEGER (U"right Eigenvalue range", U"0")
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Fraction of eigenvalues summed", 0)
-	BOOLEAN (U"Cumulative", 0)
+	BOOLEAN (U"Fraction of eigenvalues summed", false)
+	BOOLEAN (U"Cumulative", false)
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Eigen);
-		Eigen_drawEigenvalues (me, GRAPHICS, GET_INTEGER (U"left Eigenvalue range"),
-		GET_INTEGER (U"right Eigenvalue range"), GET_REAL (U"left Amplitude range"),
-		GET_REAL (U"right Amplitude range"), GET_INTEGER (U"Fraction of eigenvalues summed"),
-		GET_INTEGER (U"Cumulative"), GET_REAL (U"Mark size"), GET_STRING (U"Mark string"),
-		GET_INTEGER (U"Garnish"));
+		Eigen_drawEigenvalues (me, GRAPHICS,
+			GET_INTEGER (U"left Eigenvalue range"),
+			GET_INTEGER (U"right Eigenvalue range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Fraction of eigenvalues summed"),
+			GET_INTEGER (U"Cumulative"),
+			GET_REAL (U"Mark size"),
+			GET_STRING (U"Mark string"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 FORM (Eigen_drawEigenvector, U"Eigen: Draw eigenvector", U"Eigen: Draw eigenvector...")
 	INTEGER (U"Eigenvector number", U"1")
-	BOOLEAN (U"Component loadings", 0)
+	BOOLEAN (U"Component loadings", false)
 	INTEGER (U"left Element range", U"0")
 	INTEGER (U"right Element range", U"0")
 	REAL (U"left Amplitude range", U"-1.0")
 	REAL (U"right Amplitude range", U"1.0")
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Connect points", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Connect points", true)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Eigen);
-		Eigen_drawEigenvector (me, GRAPHICS, GET_INTEGER (U"Eigenvector number"),
-		GET_INTEGER (U"left Element range"), GET_INTEGER (U"right Element range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"),
-		GET_INTEGER (U"Component loadings"), GET_REAL (U"Mark size"),
-		GET_STRING (U"Mark string"), GET_INTEGER (U"Connect points"), 0, GET_INTEGER (U"Garnish"));
+		Eigen_drawEigenvector (me, GRAPHICS,
+			GET_INTEGER (U"Eigenvector number"),
+			GET_INTEGER (U"left Element range"),
+			GET_INTEGER (U"right Element range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Component loadings"),
+			GET_REAL (U"Mark size"),
+			GET_STRING (U"Mark string"),
+			GET_INTEGER (U"Connect points"),
+			nullptr,   // rowLabels
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -2470,29 +2778,36 @@ DO
 END
 
 DIRECT (Eigens_alignEigenvectors)
-	autoCollection set = praat_getSelectedObjects ();
-	Eigens_alignEigenvectors (set.peek());
+	OrderedOf<structEigen> list;
+	LOOP {
+		iam (Eigen);
+		list. addItem_ref (me);
+	}
+	Eigens_alignEigenvectors (& list);
 END
 
-FORM (Eigen_and_Matrix_project, U"Eigen & Matrix: Project", U"Eigen & Matrix: Project...")
+FORM (Eigen_and_Matrix_projectColumns, U"Eigen & Matrix: Project columns", U"Eigen & Matrix: Project...")
 	INTEGER (U"Number of dimensions", U"0")
 	OK
 DO
 	Eigen me = FIRST_GENERIC (Eigen);
 	Matrix thee = FIRST_GENERIC (Matrix);
-	praat_new (Eigen_and_Matrix_project (me, thee, GET_INTEGER (U"Number of dimensions")), my name, U"_", thy name);
+	autoMatrix him = Eigen_and_Matrix_to_Matrix_projectColumns (me, thee, GET_INTEGER (U"Number of dimensions"));
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 DIRECT (Eigen_and_SSCP_project)
 	Eigen me = FIRST_GENERIC (Eigen);
 	SSCP cp = FIRST (SSCP);
-	praat_new (Eigen_and_SSCP_project (me, cp), my name, U"_", cp->name);
+	autoSSCP thee = Eigen_and_SSCP_project (me, cp);
+	praat_new (thee.move(), my name, U"_", cp->name);
 END
 
 DIRECT (Eigen_and_Covariance_project)
 	Eigen me = FIRST_GENERIC (Eigen);
 	Covariance cv = FIRST (Covariance);
-	praat_new (Eigen_and_Covariance_project (me, cv), my name, U"_", cv->name);
+	autoCovariance thee = Eigen_and_Covariance_project (me, cv);
+	praat_new (thee.move(), my name, U"_", cv->name);
 END
 
 /******************** Index ********************************************/
@@ -2504,7 +2819,7 @@ END
 DIRECT (Index_getNumberOfClasses)
 	LOOP {
 		iam (Index);
-		Melder_information (my classes -> size);
+		Melder_information (my classes->size);
 	}
 END
 
@@ -2515,11 +2830,11 @@ DO
 	long klas = GET_INTEGER (U"Class index");
 	LOOP {
 		iam (StringsIndex);
-		long numberOfClasses = my classes -> size;
+		long numberOfClasses = my classes->size;
 		if (klas > numberOfClasses) {
 			Melder_throw (U"Index must be less than or equal ", numberOfClasses, U".");
 		}
-		SimpleString ss = (SimpleString) my classes -> item[klas];
+		SimpleString ss = (SimpleString) my classes->at [klas];   // FIXME cast
 		Melder_information (ss -> string);
 	}
 END
@@ -2534,8 +2849,8 @@ DO
 		if (index > my numberOfElements) {
 			Melder_throw (U"Index must be less than or equal ", my numberOfElements, U".");
 		}
-		long klas = my classIndex[index];
-		SimpleString ss = (SimpleString) my classes -> item [klas];
+		long klas = my classIndex [index];
+		SimpleString ss = (SimpleString) my classes->at [klas];   // FIXME cast
 		Melder_information (ss -> string);
 	}
 END
@@ -2550,7 +2865,7 @@ DO
 		if (index > my numberOfElements) {
 			Melder_throw (U"Index must be less than or equal ", my numberOfElements, U".");
 		}
-		Melder_information (my classIndex[index]);
+		Melder_information (my classIndex [index]);
 	}
 END
 
@@ -2573,99 +2888,110 @@ FORM (Index_extractPart, U"Index: Extract part", U"Index: Extract part...")
 DO
 	LOOP {
 		iam (Index);
-		praat_new (Index_extractPart (me, GET_INTEGER (U"left Range"), GET_INTEGER (U"right Range")),
-		Thing_getName (me), U"_part");
+		autoIndex thee = Index_extractPart (me,
+			GET_INTEGER (U"left Range"),
+			GET_INTEGER (U"right Range"));
+		praat_new (thee.move(), Thing_getName (me), U"_part");
 	}
 END
 
 FORM (Index_to_Permutation, U"Index: To Permutation", U"Index: To Permutation...")
-	BOOLEAN (U"Permute within classes", 1)
+	BOOLEAN (U"Permute within classes", true)
 	OK
 DO
 	LOOP {
 		iam (Index);
-		praat_new (Index_to_Permutation_permuteRandomly (me, GET_INTEGER (U"Permute within classes")), my name);
+		autoPermutation result = Index_to_Permutation_permuteRandomly (me,
+			GET_INTEGER (U"Permute within classes"));
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (StringsIndex_to_Strings)
 	LOOP {
 		iam (StringsIndex);
-		praat_new (StringsIndex_to_Strings (me), my name);
+		autoStrings result = StringsIndex_to_Strings (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 /******************** Excitation ********************************************/
 
-DIRECT (Excitation_to_Excitations)
-	autoExcitations e = Excitations_create (100);
+DIRECT (Excitations_to_ExcitationList)
+	autoExcitationList result = ExcitationList_create ();
 	LOOP {
 		iam (Excitation);
-		autoExcitation thee = Data_copy (me);
-		Collection_addItem (e.peek(), thee.transfer());
+		autoExcitation copy = Data_copy (me);
+		result -> addItem_move (copy.move());
 	}
-	praat_new (e.transfer(), U"appended");
+	praat_new (result.move(), U"appended");
 END
 
 /******************** Excitations ********************************************/
 
-FORM (Excitations_formula, U"Excitations: Formula", 0)
-	LABEL (U"label", U"for all objects in Excitations do { for col := 1 to ncol do { self [col] := `formula' ; x := x + dx } }")
+FORM (ExcitationList_formula, U"ExcitationList: Formula", 0)
+	LABEL (U"label", U"for all objects in ExcitationList do { for col := 1 to ncol do { self [col] := `formula' ; x := x + dx } }")
 	TEXTFIELD (U"formula", U"self")
 	OK
 DO
 	LOOP {
-		iam (Excitations);
-		for (long j = 1; j <= my size; j++) {
-			Matrix_formula ( (Matrix) my item[j], GET_STRING (U"formula"), interpreter, 0);
+		iam (ExcitationList);
+		for (long j = 1; j <= my size; j ++) {
+			Matrix_formula (my at [j], GET_STRING (U"formula"), interpreter, nullptr);
 		}
 		praat_dataChanged (me);
 	}
 END
 
-DIRECT (Excitations_addItem)
-	Excitations e = FIRST (Excitations);
+DIRECT (ExcitationList_addItem)
+	ExcitationList list = FIRST (ExcitationList);
 	WHERE_DOWN (SELECTED && CLASS == classExcitation) {
 		iam (Excitation);
-		autoExcitation thee = Data_copy (me);
-		Collection_addItem (e, thee.transfer());
+		autoExcitation copy = Data_copy (me);
+		list -> addItem_move (copy.move());
 	}
 END
 
-FORM (Excitations_getItem, U"Excitations: Get item", 0)
+FORM (ExcitationList_getItem, U"ExcitationList: Get item", nullptr)
 	NATURAL (U"Item number", U"1")
 	OK
 DO
 	LOOP {
-		iam (Excitations);
-		praat_new (Excitations_getItem (me, GET_INTEGER (U"Item number")), my name, U"_item");
+		iam (ExcitationList);
+		autoExcitation result = ExcitationList_getItem (me,
+			GET_INTEGER (U"Item number"));
+		praat_new (result.move(), my name, U"_item");
 	}
 END
 
-DIRECT (Excitations_append)
-	Excitations e1 = 0, e2 = 0;
+DIRECT (ExcitationList_append)
+	ExcitationList e1 = nullptr, e2 = nullptr;
 	LOOP {
-		iam (Excitations);
+		iam (ExcitationList);
 		(e1 ? e2 : e1) = me;
 	}
 	Melder_assert (e1 && e2);
-	praat_new ( (Excitations) Collections_merge (e1, e2), U"appended");
+	autoExcitationList result = Data_copy (e1);
+	result -> merge (e2);
+	praat_new (result.move(), U"appended");
 END
 
-FORM (Excitations_to_Pattern, U"Excitations: To Pattern", 0)
+FORM (ExcitationList_to_Pattern, U"Excitations: To Pattern", nullptr)
 	NATURAL (U"Join", U"1")
 	OK
 DO
 	LOOP {
-		iam (Excitations);
-		praat_new (Excitations_to_Pattern (me, GET_INTEGER (U"Join")), my name);
+		iam (ExcitationList);
+		autoPattern result = ExcitationList_to_Pattern (me, GET_INTEGER (U"Join"));
+		praat_new (result.move(), my name);
 	}
 END
 
-DIRECT (Excitations_to_TableOfReal)
+DIRECT (ExcitationList_to_TableOfReal)
 	LOOP {
-		iam (Excitations);
-		praat_new (Excitations_to_TableOfReal (me), my name);
+		iam (ExcitationList);
+		autoTableOfReal result = ExcitationList_to_TableOfReal (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -2673,12 +2999,12 @@ END
 /************************* FileInMemory ***********************************/
 
 
-FORM_READ2 (FileInMemory_create, U"Create file in memory", 0, true) {
+FORM_READ2 (FileInMemory_create, U"Create file in memory", nullptr, true) {
 	autoFileInMemory me = FileInMemory_create (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-FORM (FileInMemory_setId, U"FileInMemory: Set id", 0)
+FORM (FileInMemory_setId, U"FileInMemory: Set id", nullptr)
 	SENTENCE (U"New id", U"New id")
 	OK
 DO
@@ -2689,7 +3015,7 @@ DO
 	}
 END
 
-FORM (FileInMemory_showAsCode, U"FileInMemory: Show as code", 0)
+FORM (FileInMemory_showAsCode, U"FileInMemory: Show as code", nullptr)
 	WORD (U"Name", U"example")
 	INTEGER (U"Number of bytes per line", U"20")
 	OK
@@ -2703,122 +3029,129 @@ DO
 	}
 END
 
-/************************* FilesInMemory ***********************************/
+/************************* FileInMemorySet ***********************************/
 
-FORM (FilesInMemory_createFromDirectoryContents, U"Create files in memory from directory contents", 0)
+FORM (FileInMemorySet_createFromDirectoryContents, U"Create files in memory from directory contents", nullptr)
 	SENTENCE (U"Name", U"list")
 	LABEL (U"", U"Directory:")
 	TEXTFIELD (U"Directory", U"/home/david/praat/src/espeak-work/espeak-1.46.13/espeak-data")
 	WORD (U"Only files that match pattern", U"*.txt")
 	OK
 DO
-	autoFilesInMemory me = FilesInMemory_createFromDirectoryContents (GET_STRING (U"Directory"), GET_STRING (U"Only files that match pattern"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	autoFileInMemorySet me = FileInMemorySet_createFromDirectoryContents (
+		GET_STRING (U"Directory"),
+		GET_STRING (U"Only files that match pattern"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END
 
-FORM (FilesInMemory_createCopyFromFilesInMemory, U"", 0)
+FORM (FileInMemorySet_createCopyFromFileInMemorySet, U"", nullptr)
 	OPTIONMENU (U"Espeakdata", 5)
-	OPTION (U"phons")
-	OPTION (U"dicts")
-	OPTION (U"voices")
-	OPTION (U"variants")
-	OPTION (U"voices_names")
-	OPTION (U"variants_names")
+		OPTION (U"phons")
+		OPTION (U"dicts")
+		OPTION (U"voices")
+		OPTION (U"variants")
+		OPTION (U"voices_names")
+		OPTION (U"variants_names")
 	OK
 DO
 	long choice = GET_INTEGER (U"Espeakdata");
 	if (choice == 1) {
-		autoFilesInMemory f = (FilesInMemory) Data_copy (espeakdata_phons);
-		praat_new (f.transfer(), U"espeakdata_phons");
+		autoFileInMemorySet f = Data_copy (espeakdata_phons.get());
+		praat_new (f.move(), U"espeakdata_phons");
 	}
 	else if (choice == 2) {
-		autoFilesInMemory f = (FilesInMemory) Data_copy (espeakdata_dicts);
-		praat_new (f.transfer(), U"espeakdata_dicts");
+		autoFileInMemorySet f = Data_copy (espeakdata_dicts.get());
+		praat_new (f.move(), U"espeakdata_dicts");
 	}
 	else if (choice == 3) {
-		autoFilesInMemory f = (FilesInMemory) Data_copy (espeakdata_voices);
-		praat_new (f.transfer(), U"espeakdata_voices");
+		autoFileInMemorySet f = Data_copy (espeakdata_voices.get());
+		praat_new (f.move(), U"espeakdata_voices");
 	}
 	else if (choice == 4) {
-		autoFilesInMemory f = (FilesInMemory) Data_copy (espeakdata_variants);
-		praat_new (f.transfer(), U"espeakdata_variants");
+		autoFileInMemorySet f = Data_copy (espeakdata_variants.get());
+		praat_new (f.move(), U"espeakdata_variants");
 	}
 	else if (choice == 5) {
-		autoStrings s = (Strings) Data_copy (espeakdata_voices_names);
-		praat_new (s.transfer(), U"espeakdata_voices_names");
+		autoStrings s = Data_copy (espeakdata_voices_names.get());
+		praat_new (s.move(), U"espeakdata_voices_names");
 	}
 	else if (choice == 6) {
-		autoStrings s = (Strings) Data_copy (espeakdata_variants_names);
-		praat_new (s.transfer(), U"espeakdata_variants_names");
+		autoStrings s = Data_copy (espeakdata_variants_names.get());
+		praat_new (s.move(), U"espeakdata_variants_names");
 	}
 END
 
-FORM (FilesInMemory_showAsCode, U"FilesInMemory: Show as code", 0)
+FORM (FileInMemorySet_showAsCode, U"FileInMemorySet: Show as code", nullptr)
 	WORD (U"Name", U"example")
 	INTEGER (U"Number of bytes per line", U"20")
 	OK
 DO
 	LOOP {
-		iam (FilesInMemory);
+		iam (FileInMemorySet);
 		MelderInfo_open ();
-		FilesInMemory_showAsCode (me, GET_STRING (U"Name"), GET_INTEGER (U"Number of bytes per line"));
+		FileInMemorySet_showAsCode (me, GET_STRING (U"Name"), GET_INTEGER (U"Number of bytes per line"));
 		MelderInfo_close ();
 	}
 END
 
-FORM (FilesInMemory_showOneFileAsCode, U"FilesInMemory: Show one file as code", 0)
+FORM (FileInMemorySet_showOneFileAsCode, U"FileInMemorySet: Show one file as code", nullptr)
 	NATURAL (U"Index", U"1")
 	WORD (U"Name", U"example")
 	INTEGER (U"Number of bytes per line", U"20")
 	OK
 DO
 	LOOP {
-		iam (FilesInMemory);
+		iam (FileInMemorySet);
 		MelderInfo_open ();
-		FilesInMemory_showOneFileAsCode (me, GET_INTEGER (U"Index"), GET_STRING (U"Name"), GET_INTEGER (U"Number of bytes per line"));
+		FileInMemorySet_showOneFileAsCode (me, GET_INTEGER (U"Index"), GET_STRING (U"Name"), GET_INTEGER (U"Number of bytes per line"));
 		MelderInfo_close ();
 	}
 END
 
-DIRECT (FileInMemory_to_FilesInMemory)
-	autoFilesInMemory thee = FilesInMemory_create ();
+DIRECT (FileInMemory_to_FileInMemorySet)
+	autoFileInMemorySet thee = FileInMemorySet_create ();
 	LOOP {
 		iam (FileInMemory);
-		FileInMemory him = Data_copy (me);
-		Collection_addItem (thee.peek(), him);
+		autoFileInMemory him = Data_copy (me);
+		thy addItem_move (him.move());
 	}
-	praat_new (thee.transfer(), U"files");
+	praat_new (thee.move(), U"files");
 END
 
-DIRECT (FilesInMemory_addItems)
-	FilesInMemory thee = FIRST (FilesInMemory);
+DIRECT (FileInMemorySet_addItems)
+	FileInMemorySet thee = FIRST (FileInMemorySet);
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classFileInMemory) {
-			FileInMemory t1 = (FileInMemory) Data_copy (me);
-			Collection_addItem (thee, t1);
+			autoFileInMemory him = Data_copy ((FileInMemory) me);
+			thy addItem_move (him.move());
 		}
 	}
 END
 
-DIRECT (FilesInMemory_merge)
-	FilesInMemory f1 = 0, f2 = 0;
-	LOOP { iam (FilesInMemory); (f1 ? f2 : f1) = me; }
-	Melder_assert (f1 != 0 && f2 != 0);
-	autoFilesInMemory fim = (FilesInMemory) Collections_merge (f1, f2);
-	praat_new (fim.transfer(), f1 -> name, U"_", f2 -> name);
+DIRECT (FileInMemorySets_merge)
+	FileInMemorySet f1 = nullptr, f2 = nullptr;
+	LOOP { 
+		iam (FileInMemorySet);
+		(f1 ? f2 : f1) = me;
+	}
+	Melder_assert (f1 && f2);
+	autoFileInMemorySet result = Data_copy (f1);
+	result -> merge (f2);
+	praat_new (result.move(), f1 -> name, U"_", f2 -> name);
 END
 
-DIRECT (FilesInMemory_to_Strings_id)
+DIRECT (FileInMemorySet_to_Strings_id)
 	LOOP {
-		iam (FilesInMemory);
-		praat_new (FilesInMemory_to_Strings_id (me), my name);
+		iam (FileInMemorySet);
+		autoStrings result = FileInMemorySet_to_Strings_id (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 /************************* FilterBank ***********************************/
 
-FORM (FilterBank_drawFilters, U"FilterBank: Draw filters", 0)
+FORM (FilterBank_drawFilters, U"FilterBank: Draw filters", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2830,13 +3163,17 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_drawRows (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
+		Matrix_drawRows (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"));
 	}
 END
 
-FORM (FilterBank_drawOneContour, U"FilterBank: Draw one contour", 0)
+FORM (FilterBank_drawOneContour, U"FilterBank: Draw one contour", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2847,12 +3184,16 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_drawOneContour (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"), GET_REAL (U"Height"));
+		Matrix_drawOneContour (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"Height"));
 	}
 END
 
-FORM (FilterBank_drawContours, U"FilterBank: Draw contours", 0)
+FORM (FilterBank_drawContours, U"FilterBank: Draw contours", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2864,23 +3205,27 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_drawContours (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
+		Matrix_drawContours (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"));
 	}
 END
 
 FORM (FilterBank_drawFrequencyScales, U"FilterBank: Draw frequency scales", U"FilterBank: Draw frequency scales...")
 	RADIO (U"Horizontal frequency scale", 1)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	REAL (U"left Horizontal frequency range", U"0.0")
 	REAL (U"right Horizontal frequency range", U"0.0")
 	RADIO (U"Vertical frequency scale", 1)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	REAL (U"left Vertical frequency range", U"0.0")
 	REAL (U"right Vertical frequency range", U"0.0")
 	BOOLEAN (U"Garnish", 1)
@@ -2890,9 +3235,9 @@ DO
 	LOOP {
 		iam (FilterBank);
 		FilterBank_drawFrequencyScales (me, GRAPHICS, GET_INTEGER (U"Horizontal frequency scale"),
-		GET_REAL (U"left Horizontal frequency range"), GET_REAL (U"right Horizontal frequency range"),
-		GET_INTEGER (U"Vertical frequency scale"), GET_REAL (U"left Vertical frequency range"),
-		GET_REAL (U"right Vertical frequency range"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"left Horizontal frequency range"), GET_REAL (U"right Horizontal frequency range"),
+			GET_INTEGER (U"Vertical frequency scale"), GET_REAL (U"left Vertical frequency range"),
+			GET_REAL (U"right Vertical frequency range"), GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -2903,15 +3248,16 @@ FORM (MelSpectrogram_paintImage, U"MelSpectrogram: Paint image", U"MelSpectrogra
 	REAL (U"right Frequency range (mel)", U"0.0")
 	REAL (U"left Amplitude range (dB)", U"0.0")
 	REAL (U"right Amplitude range (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (MelSpectrogram);
 		BandFilterSpectrogram_paintImage (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -2922,19 +3268,20 @@ FORM (BarkSpectrogram_paintImage, U"BarkSpectrogram: Paint image", U"BarkSpectro
 	REAL (U"right Frequency range (bark)", U"0.0")
 	REAL (U"left Amplitude range (dB)", U"0.0")
 	REAL (U"right Amplitude range (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (BarkSpectrogram);
 		BandFilterSpectrogram_paintImage (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (FilterBank_paintImage, U"FilterBank: Paint image", 0)
+FORM (FilterBank_paintImage, U"FilterBank: Paint image", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2947,12 +3294,12 @@ DO
 	LOOP {
 		iam (Matrix);
 		Matrix_paintImage (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
+			GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
 	}
 END
 
-FORM (FilterBank_paintContours, U"FilterBank: Paint contours", 0)
+FORM (FilterBank_paintContours, U"FilterBank: Paint contours", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2964,14 +3311,18 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_paintContours (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
+		Matrix_paintContours (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"));
 	}
 END
 
 
-FORM (FilterBank_paintCells, U"FilterBank: Paint cells", 0)
+FORM (FilterBank_paintCells, U"FilterBank: Paint cells", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -2983,13 +3334,17 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_paintCells (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-		GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"));
+		Matrix_paintCells (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"));
 	}
 END
 
-FORM (FilterBank_paintSurface, U"FilterBank: Paint surface", 0)
+FORM (FilterBank_paintSurface, U"FilterBank: Paint surface", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range", U"0.0")
@@ -3001,23 +3356,31 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Matrix);
-		Matrix_paintSurface (me, GRAPHICS, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-			GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-			GET_REAL (U"left Amplitude range"), GET_REAL (U"right Amplitude range"), 30, 45);
+		Matrix_paintSurface (me, GRAPHICS,
+			GET_REAL (U"left Time range"),
+			GET_REAL (U"right Time range"),
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Amplitude range"),
+			GET_REAL (U"right Amplitude range"),
+			30,   // elevation in degrees
+			45);   // azimuth in degrees
 	}
 END
 
 FORM (FilterBank_getFrequencyInHertz, U"FilterBank: Get frequency in Hertz", U"FilterBank: Get frequency in Hertz...")
 	REAL (U"Frequency", U"10.0")
 	RADIO (U"Unit", 2)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	OK
 DO
 	LOOP {
 		iam (FilterBank);
-		double f = FilterBank_getFrequencyInHertz (me, GET_REAL (U"Frequency"), GET_INTEGER (U"Unit"));
+		double f = FilterBank_getFrequencyInHertz (me,
+			GET_REAL (U"Frequency"),
+			GET_INTEGER (U"Unit"));
 		Melder_informationReal (f, U"Hertz");
 	}
 END
@@ -3025,14 +3388,16 @@ END
 FORM (FilterBank_getFrequencyInBark, U"FilterBank: Get frequency in Bark", U"FilterBank: Get frequency in Bark...")
 	REAL (U"Frequency", U"93.17")
 	RADIO (U"Unit", 1)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	OK
 DO
 	LOOP {
 		iam (FilterBank);
-		double f = FilterBank_getFrequencyInBark (me, GET_REAL (U"Frequency"), GET_INTEGER (U"Unit"));
+		double f = FilterBank_getFrequencyInBark (me,
+			GET_REAL (U"Frequency"),
+			GET_INTEGER (U"Unit"));
 		Melder_informationReal (f, U"Bark");
 	}
 END
@@ -3040,36 +3405,40 @@ END
 FORM (FilterBank_getFrequencyInMel, U"FilterBank: Get frequency in mel", U"FilterBank: Get frequency in mel...")
 	REAL (U"Frequency", U"1000.0")
 	RADIO (U"Unit", 1)
-	RADIOBUTTON (U"Hertz")
-	RADIOBUTTON (U"Bark")
-	RADIOBUTTON (U"mel")
+		RADIOBUTTON (U"Hertz")
+		RADIOBUTTON (U"Bark")
+		RADIOBUTTON (U"mel")
 	OK
 DO
 	LOOP {
 		iam (FilterBank);
-		double f = FilterBank_getFrequencyInMel (me, GET_REAL (U"Frequency"), GET_INTEGER (U"Unit"));
+		double f = FilterBank_getFrequencyInMel (me,
+			GET_REAL (U"Frequency"),
+			GET_INTEGER (U"Unit"));
 		Melder_informationReal (f, U"mel");
 	}
 END
 
-FORM (FilterBank_equalizeIntensities, U"FilterBank: Equalize intensities", U"")
+FORM (FilterBank_equalizeIntensities, U"FilterBank: Equalize intensities", nullptr)
 	REAL (U"Intensity (dB)", U"80.0")
 	OK
 DO
 	LOOP {
 		iam (FilterBank);
-		FilterBank_equalizeIntensities (me, GET_REAL (U"Intensity"));
+		FilterBank_equalizeIntensities (me,
+			GET_REAL (U"Intensity"));
 		praat_dataChanged (me);
 	}
 END
 
-FORM (BandFilterSpectrogram_equalizeIntensities, U"BandFilterSpectrogram: Equalize intensities", U"")
+FORM (BandFilterSpectrogram_equalizeIntensities, U"BandFilterSpectrogram: Equalize intensities", nullptr)
 	REAL (U"Intensity (dB)", U"80.0")
 	OK
 DO
 	LOOP {
 		iam (BandFilterSpectrogram);
-		BandFilterSpectrogram_equalizeIntensities (me, GET_REAL (U"Intensity"));
+		BandFilterSpectrogram_equalizeIntensities (me,
+			GET_REAL (U"Intensity"));
 		praat_dataChanged (me);
 	}
 END
@@ -3077,89 +3446,101 @@ END
 DIRECT (FilterBank_to_Matrix)
 	LOOP {
 		iam (FilterBank);
-		praat_new (FilterBank_to_Matrix (me), my name);
+		autoMatrix thee = FilterBank_to_Matrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (BandFilterSpectrogram_to_Matrix, U"(BandFilterSpectrogram: To Matrix", 0)
+FORM (BandFilterSpectrogram_to_Matrix, U"BandFilterSpectrogram: To Matrix", nullptr)
 	BOOLEAN (U"Convert to dB values", 1)
 	OK
 DO
 	LOOP {
 		iam (BandFilterSpectrogram);
-		praat_new (BandFilterSpectrogram_to_Matrix (me, GET_INTEGER (U"Convert to dB values")), my name);
+		autoMatrix thee = BandFilterSpectrogram_to_Matrix (me,
+			GET_INTEGER (U"Convert to dB values"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (FilterBanks_crossCorrelate, U"FilterBanks: Cross-correlate", 0)
+FORM (FilterBanks_crossCorrelate, U"FilterBanks: Cross-correlate", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	FilterBank f1 = 0, f2 = 0;
-	LOOP { iam (FilterBank); (f1 ? f2 : f1) = me; }
-	Melder_assert (f1 != 0 && f2 != 0);
-	praat_new (FilterBanks_crossCorrelate (f1, f2, GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
-		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is...")),
-		f1 -> name, U"_", f2 -> name);
+	FilterBank f1 = nullptr, f2 = nullptr;
+	LOOP {
+		iam (FilterBank);
+		(f1 ? f2 : f1) = me;
+	}
+	Melder_assert (f1 && f2);
+	autoSound result = FilterBanks_crossCorrelate (f1, f2,
+		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
+		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
+	praat_new (result.move(), f1 -> name, U"_", f2 -> name);
 END
 
-FORM (BandFilterSpectrograms_crossCorrelate, U"BandFilterSpectrograms: Cross-correlate", 0)
+FORM (BandFilterSpectrograms_crossCorrelate, U"BandFilterSpectrograms: Cross-correlate", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	BandFilterSpectrogram f1 = 0, f2 = 0;
+	BandFilterSpectrogram f1 = nullptr, f2 = nullptr;
 	LOOP {
 		iam (BandFilterSpectrogram); 
 		(f1 ? f2 : f1) = me;
 	}
-	Melder_assert (f1 != 0 && f2 != 0);
-	praat_new (BandFilterSpectrograms_crossCorrelate (f1, f2, GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
-		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is...")),
-		f1 -> name, U"_", f2 -> name);
+	Melder_assert (f1 && f2);
+	autoSound result = BandFilterSpectrograms_crossCorrelate (f1, f2,
+		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
+		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
+	praat_new (result.move(), f1 -> name, U"_", f2 -> name);
 END
 
-FORM (FilterBanks_convolve, U"FilterBanks: Convolve", 0)
+FORM (FilterBanks_convolve, U"FilterBanks: Convolve", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	FilterBank f1 = 0, f2 = 0;
+	FilterBank f1 = nullptr, f2 = nullptr;
 	LOOP { iam (FilterBank); (f1 ? f2 : f1) = me; }
-	Melder_assert (f1 != 0 && f2 != 0);
-	praat_new (FilterBanks_convolve (f1, f2, GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
-		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is...")),
-		f1 -> name, U"_", f2 -> name);
+	Melder_assert (f1 && f2);
+	autoSound result = FilterBanks_convolve (f1, f2,
+		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
+		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
+	praat_new (result.move(), f1 -> name, U"_", f2 -> name);
 END
 
-FORM (BandFilterSpectrograms_convolve, U"BandFilterSpectrograms: Convolve", 0)
+FORM (BandFilterSpectrograms_convolve, U"BandFilterSpectrograms: Convolve", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	BandFilterSpectrogram f1 = 0, f2 = 0;
+	BandFilterSpectrogram f1 = nullptr, f2 = nullptr;
 	LOOP {
 		iam (BandFilterSpectrogram);
 		(f1 ? f2 : f1) = me;
 	}
-	Melder_assert (f1 != 0 && f2 != 0);
-	praat_new (BandFilterSpectrograms_convolve (f1, f2, GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
-		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is...")),
-		f1 -> name, U"_", f2 -> name);
+	Melder_assert (f1 && f2);
+	autoSound result = BandFilterSpectrograms_convolve (f1, f2,
+		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
+		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
+	praat_new (result.move(), f1 -> name, U"_", f2 -> name);
 END
 
 DIRECT (FilterBank_to_Intensity)
 	LOOP {
 		iam (FilterBank);
-		praat_new (FilterBank_to_Intensity (me), my name);
+		autoIntensity result = FilterBank_to_Intensity (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (BandFilterSpectrogram_to_Intensity)
 	LOOP {
 		iam (BandFilterSpectrogram);
-		praat_new (BandFilterSpectrogram_to_Intensity (me), my name);
+		autoIntensity result = BandFilterSpectrogram_to_Intensity (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -3234,7 +3615,7 @@ DO
 	}
 END
 
-FORM (FormantGrid_draw, U"FormantGrid: Draw", 0)
+FORM (FormantGrid_draw, U"FormantGrid: Draw", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0 (=all)")
 	REAL (U"left Frequency range (Hz)", U"0.0")
@@ -3259,13 +3640,13 @@ END
 
 /****************** FunctionTerms  *********************************/
 
-FORM (FunctionTerms_draw, U"FunctionTerms: Draw", 0)
+FORM (FunctionTerms_draw, U"FunctionTerms: Draw", nullptr)
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Extrapolate", 0)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Extrapolate", false)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -3277,14 +3658,14 @@ DO
 	}
 END
 
-FORM (FunctionTerms_drawBasisFunction, U"FunctionTerms: Draw basis function", 0)
+FORM (FunctionTerms_drawBasisFunction, U"FunctionTerms: Draw basis function", nullptr)
 	NATURAL (U"Index", U"1")
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Extrapolate", 0)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Extrapolate", false)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -3296,7 +3677,7 @@ DO
 	}
 END
 
-FORM (FunctionTerms_evaluate, U"FunctionTerms: Evaluate", 0)
+FORM (FunctionTerms_evaluate, U"FunctionTerms: Evaluate", nullptr)
 	REAL (U"X", U"0.0")
 	OK
 DO
@@ -3313,7 +3694,7 @@ DIRECT (FunctionTerms_getNumberOfCoefficients)
 	}
 END
 
-FORM (FunctionTerms_getCoefficient, U"FunctionTerms: Get coefficient", 0)
+FORM (FunctionTerms_getCoefficient, U"FunctionTerms: Get coefficient", nullptr)
 	LABEL (U"", U"p(x) = c[1] + c[2] x + ... c[n+1] x^n")
 	NATURAL (U"Index", U"1")
 	OK
@@ -3387,7 +3768,7 @@ DO
 	}
 END
 
-FORM (FunctionTerms_setCoefficient, U"FunctionTerms: Set coefficient", 0)
+FORM (FunctionTerms_setCoefficient, U"FunctionTerms: Set coefficient", nullptr)
 	LABEL (U"", U"p(x) = c[1]F[0] + c[2]F[1] + ... c[n+1]F[n]")
 	LABEL (U"", U"F[k] is of degree k")
 	NATURAL (U"Index", U"1")
@@ -3400,7 +3781,7 @@ DO
 	}
 END
 
-FORM (FunctionTerms_setDomain, U"FunctionTerms: Set domain", 0)
+FORM (FunctionTerms_setDomain, U"FunctionTerms: Set domain", nullptr)
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"2.0")
 	OK
@@ -3427,9 +3808,10 @@ FORM (Intensity_to_TextGrid_detectSilences, U"Intensity: To TextGrid (silences)"
 DO
 	LOOP {
 		iam (Intensity);
-		praat_new (Intensity_to_TextGrid_detectSilences (me, GET_REAL (U"Silence threshold"),
+		autoTextGrid thee = Intensity_to_TextGrid_detectSilences (me, GET_REAL (U"Silence threshold"),
 			GET_REAL (U"Minimum silent interval duration"), GET_REAL (U"Minimum sounding interval duration"),
-			GET_STRING (U"Silent interval label"), GET_STRING (U"Sounding interval label")), my name);
+			GET_STRING (U"Silent interval label"), GET_STRING (U"Sounding interval label"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -3446,20 +3828,21 @@ FORM (IntensityTier_to_TextGrid_detectSilences, U"IntensityTier: To TextGrid (si
 DO
 	LOOP {
 		iam (IntensityTier);
-		praat_new (IntensityTier_to_TextGrid_detectSilences (me, GET_REAL (U"Time step"), GET_REAL (U"Silence threshold"),
+		autoTextGrid thee = IntensityTier_to_TextGrid_detectSilences (me, GET_REAL (U"Time step"), GET_REAL (U"Silence threshold"),
 			GET_REAL (U"Minimum silent interval duration"), GET_REAL (U"Minimum sounding interval duration"),
-			GET_STRING (U"Silent interval label"), GET_STRING (U"Sounding interval label")), my name);
+			GET_STRING (U"Silent interval label"), GET_STRING (U"Sounding interval label"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (IntensityTier_to_Intensity, U"", 0)
+FORM (IntensityTier_to_Intensity, U"", nullptr)
 	POSITIVE (U"Time step (s)", U"0.001")
 	OK
 DO
 	LOOP {
 		iam (IntensityTier);
 		autoIntensity thee = IntensityTier_to_Intensity (me, GET_REAL (U"Time step"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -3485,8 +3868,9 @@ DO
 	if (xmax <= xmin) {
 		Melder_throw (U"Xmin should be smaller than Xmax.");
 	}
-	praat_new (ISpline_createFromStrings (xmin, xmax, degree,
-		GET_STRING (U"Coefficients"), GET_STRING (U"Interior knots")), GET_STRING (U"Name"));
+	autoISpline me = ISpline_createFromStrings (xmin, xmax, degree,
+		GET_STRING (U"Coefficients"), GET_STRING (U"Interior knots"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END
 
 /******************* KlattTable  *********************************/
@@ -3494,7 +3878,8 @@ END
 DIRECT (KlattTable_help) Melder_help (U"KlattTable"); END
 
 DIRECT (KlattTable_createExample)
-	praat_new (KlattTable_createExample (), U"example");
+	autoKlattTable thee = KlattTable_createExample ();
+	praat_new (thee.move(), U"example");
 END
 
 FORM (KlattTable_to_Sound, U"KlattTable: To Sound", U"KlattTable: To Sound...")
@@ -3521,18 +3906,19 @@ FORM (KlattTable_to_Sound, U"KlattTable: To Sound", U"KlattTable: To Sound...")
 DO
 	double flutter = GET_REAL (U"Flutter percentage");
 	int outputType = GET_INTEGER (U"Output type") - 1;
-	if (flutter < 0 || flutter > 100) {
+	if (flutter < 0.0 || flutter > 100.0) {
 		Melder_throw (U"Flutter should be between 0 and 100%.");
 	}
 	LOOP {
 		iam (KlattTable);
-		praat_new (KlattTable_to_Sound (me, GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Synthesis model"),
+		autoSound thee = KlattTable_to_Sound (me, GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Synthesis model"),
 			GET_INTEGER (U"Number of formants"), GET_REAL (U"Frame duration"), GET_INTEGER (U"Voicing source"),
-			GET_REAL (U"Flutter percentage"), outputType), my name);
+			GET_REAL (U"Flutter percentage"), outputType);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (KlattTable_to_KlattGrid, U"KlattTable: To KlattGrid", 0)
+FORM (KlattTable_to_KlattGrid, U"KlattTable: To KlattGrid", nullptr)
 	POSITIVE (U"Frame duration (s)", U"0.002")
 	OK
 DO
@@ -3545,14 +3931,16 @@ END
 DIRECT (KlattTable_to_Table)
 	LOOP {
 		iam (KlattTable);
-		praat_new (KlattTable_to_Table (me), my name);
+		autoTable thee = KlattTable_to_Table (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Table_to_KlattTable)
 	LOOP {
 		iam (Table);
-		praat_new (Table_to_KlattTable (me), my name);
+		autoKlattTable thee = Table_to_KlattTable (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -3580,8 +3968,8 @@ static void print_means (Table me) {
 		Melder_padOrTruncate (15, my columnHeaders[1].label), U"\t",
 		Melder_padOrTruncate (15, my columnHeaders[2].label), U"\t",
 		Melder_padOrTruncate (15, my columnHeaders[3].label));
-	for (long irow = 1; irow <= my rows -> size; irow++) {
-		TableRow row = (TableRow) my rows -> item [irow];
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
 		MelderInfo_writeLine (
 			Melder_padOrTruncate (15, row -> cells[1].string), U"\t",
 			Melder_padOrTruncate (15, Melder_double (row -> cells[2].number)), U"\t",
@@ -3589,7 +3977,7 @@ static void print_means (Table me) {
 	}
 }
 
-FORM (Table_getNumberOfRowsWhere, U"", 0)
+FORM (Table_getNumberOfRowsWhere, U"", nullptr)
 	LABEL (U"", U"Count only rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"M\"")
 	OK
@@ -3604,9 +3992,9 @@ END
 FORM (Table_reportOneWayAnova, U"Table: Report one-way anova",  U"Table: Report one-way anova...")
 	SENTENCE (U"Column with data", U"F0")
 	SENTENCE (U"Factor", U"Vowel")
-	BOOLEAN (U"Table with means", 0);
-	BOOLEAN (U"Table with differences between means", 0)
-	BOOLEAN (U"Table with Tukey's post-hoc HSD test", 0)
+	BOOLEAN (U"Table with means", false);
+	BOOLEAN (U"Table with differences between means", false)
+	BOOLEAN (U"Table with Tukey's post-hoc HSD test", false)
 	OK
 DO
 	char32 *factor = GET_STRING (U"Factor");
@@ -3618,24 +4006,22 @@ DO
 		iam (Table);
 		long factorColumn = Table_getColumnIndexFromColumnLabel (me, factor);
 		long dataColumn = Table_getColumnIndexFromColumnLabel (me, dataLabel);
-		Table tmeans = 0, tmeansDiff = 0, tmeansDiffProbabilities = 0;
-		autoTable anova = Table_getOneWayAnalysisOfVarianceF (me, dataColumn, factorColumn, &tmeans,
-			&tmeansDiff, & tmeansDiffProbabilities);
-		autoTable means = tmeans, meansDiff = tmeansDiff, meansDiffProbabilities = tmeansDiffProbabilities;
+		autoTable means, meansDiff, meansDiffProbabilities;
+		autoTable anova = Table_getOneWayAnalysisOfVarianceF (me, dataColumn, factorColumn, &means, &meansDiff, & meansDiffProbabilities);
 		MelderInfo_open ();
 		MelderInfo_writeLine (U"One-way analysis of \"", dataLabel, U"\" by \"", factor, U"\".\n");
-		Table_printAsAnovaTable (anova.peek());
+		Table_printAsAnovaTable (anova.get());
 		MelderInfo_writeLine (U"\nMeans:\n");
-		print_means (means.peek());
+		print_means (means.get());
 		MelderInfo_close ();
 		if (getMeans) {
-			praat_new (means.transfer(), my name, U"_groupMeans");
+			praat_new (means.move(), my name, U"_groupMeans");
 		}
 		if (getMeansDiff) {
-			praat_new (meansDiff.transfer(), my name, U"_meansDiff");
+			praat_new (meansDiff.move(), my name, U"_meansDiff");
 		}
 		if (getMeansDiffProbabilities) {
-			praat_new (meansDiffProbabilities.transfer(), my name, U"_meansDiffP");
+			praat_new (meansDiffProbabilities.move(), my name, U"_meansDiffP");
 		}
 	}
 END
@@ -3656,19 +4042,18 @@ DO
 		long factorColumnA = Table_getColumnIndexFromColumnLabel (me, factorA);
 		long factorColumnB = Table_getColumnIndexFromColumnLabel (me, factorB);
 		long dataColumn = Table_getColumnIndexFromColumnLabel (me, dataLabel);
-		Table tmeans = 0, tsizes = 0;
-		autoTable anova = Table_getTwoWayAnalysisOfVarianceF (me, dataColumn, factorColumnA, factorColumnB, &tmeans, &tsizes);
-		autoTable means = tmeans, sizes = tsizes;
+		autoTable means, sizes;
+		autoTable anova = Table_getTwoWayAnalysisOfVarianceF (me, dataColumn, factorColumnA, factorColumnB, &means, &sizes);
 		MelderInfo_open ();
 		MelderInfo_writeLine (U"Two-way analysis of \"", dataLabel, U"\" by \"", factorA, U"\" and \"", factorB, U".\n");
-		Table_printAsAnovaTable (anova.peek());
+		Table_printAsAnovaTable (anova.get());
 		MelderInfo_writeLine (U"\nMeans:\n");
-		Table_printAsMeansTable (means.peek());
+		Table_printAsMeansTable (means.get());
 		MelderInfo_writeLine (U"\nCell sizes:\n");
-		Table_printAsMeansTable (sizes.peek());
+		Table_printAsMeansTable (sizes.get());
 		MelderInfo_close ();
 		if (getMeans) {
-			praat_new (means.transfer(), my name, U"_groupMeans");
+			praat_new (means.move(), my name, U"_groupMeans");
 		}
 	}
 END
@@ -3684,21 +4069,21 @@ DO
 		iam (Table);
 		long factorColumn = Table_getColumnIndexFromColumnLabel (me, factor);
 		long dataColumn = Table_getColumnIndexFromColumnLabel (me, dataLabel);
-		double degreesOfFreedom, kruskalWallis, probability;
-		autoTable thee = Table_getOneWayKruskalWallis (me, dataColumn, factorColumn, &degreesOfFreedom, &kruskalWallis, &probability);
+		double df, kruskalWallis, prob;
+		autoTable thee = Table_getOneWayKruskalWallis (me, dataColumn, factorColumn, & prob, & kruskalWallis, & df);
 		MelderInfo_open ();
 		MelderInfo_writeLine (U"One-way Kruskal-Wallis of \"", dataLabel, U"\" by \"", factor, U"\".\n");
 		MelderInfo_writeLine (U"Chi squared: ", kruskalWallis);
-		MelderInfo_writeLine (U"Degrees of freedom: ", degreesOfFreedom);
-		MelderInfo_writeLine (U"Probability: ", probability);
+		MelderInfo_writeLine (U"Degrees of freedom: ", df);
+		MelderInfo_writeLine (U"Probability: ", prob);
 		MelderInfo_writeLine (U"\nMeans:\n");
-		print_means (thee.peek());
+		print_means (thee.get());
 		MelderInfo_close ();
-		//praat_new (thee.transfer(), my name, U"_groupMeans");
+		//praat_new (move(), my name, U"_groupMeans");
 	}
 END
 
-FORM (Table_to_StringsIndex_column, U"Table: To StringsIndex (column)", 0)
+FORM (Table_to_StringsIndex_column, U"Table: To StringsIndex (column)", nullptr)
 	SENTENCE (U"Column label", U"")
 	OK
 DO
@@ -3707,7 +4092,7 @@ DO
 		iam (Table);
 		long icol = Table_getColumnIndexFromColumnLabel (me, columnLabel);
 		autoStringsIndex thee = Table_to_StringsIndex_column (me, icol);
-		praat_new (thee.transfer(), my name, U"_", columnLabel);
+		praat_new (thee.move(), my name, U"_", columnLabel);
 	}
 END
 
@@ -3741,8 +4126,12 @@ END
 /********************* LongSound **************************************/
 
 FORM_READ2 (LongSounds_appendToExistingSoundFile, U"LongSound: Append to existing sound file", 0, false) {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSounds_appendToExistingSoundFile (set.peek(), file);
+	OrderedOf<structSampled> list;
+	LOOP {
+		iam (Sampled);
+		list. addItem_ref (me);
+	}
+	LongSounds_appendToExistingSoundFile (& list, file);
 END2 }
 
 FORM_WRITE (LongSounds_writeToStereoAiffFile, U"LongSound: Save as AIFF file", 0, U"aiff")
@@ -3787,7 +4176,7 @@ FORM (Matrix_drawAsSquares, U"Matrix: Draw as squares", U"Matrix: Draw as square
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -3812,7 +4201,7 @@ FORM (Matrix_drawDistribution, U"Matrix: Draw distribution", U"Matrix: Draw dist
 	NATURAL (U"Number of bins", U"10")
 	REAL (U"Minimum frequency", U"0.0")
 	REAL (U"Maximum frequency", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -3821,7 +4210,7 @@ DO
 		Matrix_drawDistribution (me, GRAPHICS, GET_REAL (U"left Horizontal range"),
 			GET_REAL (U"right Horizontal range"), GET_REAL (U"left Vertical range"),
 			GET_REAL (U"right Vertical range"), GET_REAL (U"Minimum value"), GET_REAL (U"Maximum value"),
-			GET_INTEGER (U"Number of bins"), GET_REAL (U"Minimum frequency"), GET_REAL (U"Maximum frequency"), 0,
+			GET_INTEGER (U"Number of bins"), GET_REAL (U"Minimum frequency"), GET_REAL (U"Maximum frequency"), false,
 			GET_INTEGER (U"Garnish"));
 	}
 END
@@ -3839,7 +4228,7 @@ FORM (Matrix_drawCumulativeDistribution, U"Matrix: Draw cumulative distribution"
 	NATURAL (U"Number of bins", U"10")
 	REAL (U"Minimum", U"0.0")
 	REAL (U"Maximum", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -3848,11 +4237,11 @@ DO
 		Matrix_drawDistribution (me, GRAPHICS, GET_REAL (U"left Horizontal range"),
 			GET_REAL (U"right Horizontal range"), GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
 			GET_REAL (U"Minimum value"), GET_REAL (U"Maximum value"), GET_INTEGER (U"Number of bins"),
-			GET_REAL (U"Minimum"), GET_REAL (U"Maximum"), 1, GET_INTEGER (U"Garnish"));
+			GET_REAL (U"Minimum"), GET_REAL (U"Maximum"), true, GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (Matrix_getMean, U"Matrix: Get mean", 0)
+FORM (Matrix_getMean, U"Matrix: Get mean", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
@@ -3862,10 +4251,10 @@ DO
 	Matrix me = FIRST_ANY (Matrix);
 	double mean = Matrix_getMean (me, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"));
-	Melder_informationReal (mean, NULL);
+	Melder_informationReal (mean, nullptr);
 END
 
-FORM (Matrix_getStandardDeviation, U"Matrix: Get standard deviation", 0)
+FORM (Matrix_getStandardDeviation, U"Matrix: Get standard deviation", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
@@ -3875,10 +4264,10 @@ DO
 	Matrix me = FIRST_ANY (Matrix);
 	double stdev = Matrix_getStandardDeviation (me, GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"));
-	Melder_informationReal (stdev, NULL);
+	Melder_informationReal (stdev, nullptr);
 END
 
-FORM (Matrix_scale, U"Matrix: Scale", 0)
+FORM (Matrix_scale, U"Matrix: Scale", nullptr)
 	LABEL (U"", U"self[row, col] := self[row, col] / `Scale factor'")
 	RADIO (U"Scale factor", 1)
 	RADIOBUTTON (U"Extremum in matrix")
@@ -3901,7 +4290,23 @@ END
 DIRECT (Matrix_transpose)
 	LOOP {
 		iam (Matrix);
-		praat_new (Matrix_transpose (me), my name, U"_transposed");
+		autoMatrix thee = Matrix_transpose (me);
+		praat_new (thee.move(), my name, U"_transposed");
+	}
+END
+
+DIRECT (Matrix_to_PCA_byColumns)
+	LOOP {
+		iam (Matrix);
+		autoPCA thee = Matrix_to_PCA_byColumns (me);
+		praat_new (thee.move(), my name, U"_columns");
+	}
+END
+DIRECT (Matrix_to_PCA_byRows)
+	LOOP {
+		iam (Matrix);
+		autoPCA thee = Matrix_to_PCA_byRows (me);
+		praat_new (thee.move(), my name, U"_rows");
 	}
 END
 
@@ -3911,17 +4316,19 @@ FORM (Matrix_solveEquation, U"Matrix: Solve equation", U"Matrix: Solve equation.
 DO
 	LOOP {
 		iam (Matrix);
-		praat_new (Matrix_solveEquation (me, GET_REAL (U"Tolerance")), Thing_getName (me), U"_solution");
+		autoMatrix thee = Matrix_solveEquation (me, GET_REAL (U"Tolerance"));
+		praat_new (thee.move(), Thing_getName (me), U"_solution");
 	}
 END
 
 DIRECT (Matrix_Categories_to_TableOfReal)
-	Matrix me = FIRST (Matrix);
+	Matrix me = FIRST_GENERIC (Matrix);
 	Categories cat = FIRST (Categories);
-	praat_new (Matrix_and_Categories_to_TableOfReal (me, cat), my name, U"_", cat->name);
+	autoTableOfReal thee = Matrix_and_Categories_to_TableOfReal (me, cat);
+	praat_new (thee.move(), my name, U"_", cat -> name);
 END
 
-FORM (Matrix_scatterPlot, U"Matrix: Scatter plot", 0)
+FORM (Matrix_scatterPlot, U"Matrix: Scatter plot", nullptr)
 	NATURAL (U"Column for X-axis", U"1")
 	NATURAL (U"Column for Y-axis", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -3950,7 +4357,8 @@ END
 DIRECT (Matrix_to_Activation)
 	LOOP {
 		iam (Matrix);
-		praat_new (Matrix_to_Activation (me), my name);
+		autoActivation thee = Matrix_to_Activation (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -3968,10 +4376,11 @@ DO
 		(m1 ? m2 : m1) = me;
 	}
 	Melder_assert (m1 && m2);
-	praat_new (Matrices_to_DTW (m1, m2, begin, end, slope, GET_REAL (U"Distance metric")), m1->name, U"_", m2->name);
+	autoDTW thee = Matrices_to_DTW (m1, m2, begin, end, slope, GET_REAL (U"Distance metric"));
+	praat_new (thee.move(), m1->name, U"_", m2->name);
 END
 
-FORM (Matrix_to_Pattern, U"Matrix: To Pattern", 0)
+FORM (Matrix_to_Pattern, U"Matrix: To Pattern", nullptr)
 	NATURAL (U"Join", U"1")
 	OK
 DO
@@ -4011,7 +4420,7 @@ DIRECT (FilterBank_getFrequencyDistance)
 	}
 END
 
-FORM (FilterBank_getXofColumn, U"Get time of column", 0)
+FORM (FilterBank_getXofColumn, U"Get time of column", nullptr)
 	NATURAL (U"Column number", U"1")
 	OK
 DO
@@ -4021,7 +4430,7 @@ DO
 	}
 END
 
-FORM (FilterBank_getFrequencyOfRow, U"Get frequency of row", 0)
+FORM (FilterBank_getFrequencyOfRow, U"Get frequency of row", nullptr)
 	NATURAL (U"Row number", U"1")
 	OK
 DO
@@ -4031,7 +4440,7 @@ DO
 	}
 END
 
-FORM (FilterBank_getValueInCell, U"Get value in cell", 0)
+FORM (FilterBank_getValueInCell, U"Get value in cell", nullptr)
 	POSITIVE (U"Time (s)", U"0.5")
 	POSITIVE (U"Frequency", U"1")
 	OK
@@ -4097,7 +4506,7 @@ DIRECT (BandFilterSpectrogram_getFrequencyDistance)
 	}
 END
 
-FORM (BandFilterSpectrogram_getFrequencyOfRow, U"Get frequency of row", 0)
+FORM (BandFilterSpectrogram_getFrequencyOfRow, U"Get frequency of row", nullptr)
 	NATURAL (U"Row number", U"1")
 	OK
 DO
@@ -4107,7 +4516,7 @@ DO
 	}
 END
 
-FORM (BandFilterSpectrogram_getXofColumn, U"Get time of column", 0)
+FORM (BandFilterSpectrogram_getXofColumn, U"Get time of column", nullptr)
 	NATURAL (U"Column number", U"1")
 	OK
 DO
@@ -4117,7 +4526,7 @@ DO
 	}
 END
 
-FORM (BandFilterSpectrogram_getValueInCell, U"Get value in cell", 0)
+FORM (BandFilterSpectrogram_getValueInCell, U"Get value in cell", nullptr)
 	POSITIVE (U"Time (s)", U"0.5")
 	POSITIVE (U"Frequency", U"1")
 	OK
@@ -4259,7 +4668,7 @@ FORM (BarkSpectrogram_drawSpectrumAtNearestTimeSlice, U"BarkSpectrogram: Draw sp
 	REAL (U"right Frequency range (bark)", U"0.0")
 	REAL (U"left Amplitude range (dB)", U"0.0")
 	REAL (U"right Amplitude range (dB)", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -4271,14 +4680,14 @@ DO
 	}
 END
 
-FORM (MelFilter_paint, U"FilterBank: Paint", 0)
+FORM (MelFilter_paint, U"FilterBank: Paint", nullptr)
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Frequency range (mel)", U"0.0")
 	REAL (U"right Frequency range (mel)", U"0.0")
 	REAL (U"left Amplitude range", U"0.0")
 	REAL (U"right Amplitude range", U"0.0")
-	BOOLEAN (U"Garnish", 0)
+	BOOLEAN (U"Garnish", false)
 	OK
 DO
 	autoPraatPicture picture;
@@ -4306,14 +4715,15 @@ FORM (MelSpectrogram_to_MFCC, U"MelSpectrogram: To MFCC", U"MelSpectrogram: To M
 DO
 	LOOP {
 		iam (MelSpectrogram);
-		praat_new (MelSpectrogram_to_MFCC (me, GET_INTEGER (U"Number of coefficients")), my name);
+		autoMFCC thee = MelSpectrogram_to_MFCC (me, GET_INTEGER (U"Number of coefficients"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 /**************** Ltas *******************************************/
 
 #include "UnicodeData.h"
-FORM (Ltas_reportSpectralTilt, U"Ltas: Report spectral tilt", 0)
+FORM (Ltas_reportSpectralTilt, U"Ltas: Report spectral tilt", nullptr)
 	POSITIVE (U"left Frequency range (Hz)", U"100.0")
 	POSITIVE (U"right Frequency range (Hz)", U"5000.0")
 	OPTIONMENU (U"Frequency scale", 1)
@@ -4345,7 +4755,7 @@ DIRECT (MFCC_help)
 	Melder_help (U"MFCC");
 END
 
-FORM (MFCC_to_MelFilter, U"MFCC: To MelFilter", 0)
+FORM (MFCC_to_MelFilter, U"MFCC: To MelFilter", nullptr)
 	INTEGER (U"From coefficient", U"0")
 	INTEGER (U"To coefficient", U"0")
 	OK
@@ -4359,18 +4769,19 @@ END
 FORM (MFCC_to_MelSpectrogram, U"MFCC: MelSpectrogram", U"MFCC: To MelSpectrogram...")
 	INTEGER (U"From coefficient", U"0")
 	INTEGER (U"To coefficient", U"0")
-	BOOLEAN (U"Include constant term", 1)
+	BOOLEAN (U"Include constant term", true)
 	OK
 DO
 	LOOP {
 		iam (MFCC);
-		praat_new (MFCC_to_MelSpectrogram (me, GET_INTEGER (U"From coefficient"), GET_INTEGER (U"To coefficient"),
-			GET_INTEGER (U"Include constant term")), my name);
+		autoMelSpectrogram thee = MFCC_to_MelSpectrogram (me, GET_INTEGER (U"From coefficient"), GET_INTEGER (U"To coefficient"),
+			GET_INTEGER (U"Include constant term"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 FORM (MFCC_to_TableOfReal, U"MFCC: To TableOfReal", U"MFCC: To TableOfReal...")
-	BOOLEAN (U"Include energy", 0)
+	BOOLEAN (U"Include energy", false)
 	OK
 DO
 	LOOP {
@@ -4379,9 +4790,9 @@ DO
 	}
 END
 
-FORM (MFCC_to_Matrix_features, U"MFCC: To Matrix (features)", U"")
+FORM (MFCC_to_Matrix_features, U"MFCC: To Matrix (features)", nullptr)
 	POSITIVE (U"Window length (s)", U"0.025")
-	BOOLEAN (U"Include energy", 0)
+	BOOLEAN (U"Include energy", false)
 	OK
 DO
 	LOOP {
@@ -4390,12 +4801,12 @@ DO
 	}
 END
 
-FORM (MFCCs_crossCorrelate, U"MFCC & MFCC: Cross-correlate", 0)
+FORM (MFCCs_crossCorrelate, U"MFCC & MFCC: Cross-correlate", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	MFCC m1 = 0, m2 = 0;
+	MFCC m1 = nullptr, m2 = nullptr;
 	LOOP {
 		iam (MFCC);
 		(m1 ? m2 : m1) = me;
@@ -4407,12 +4818,12 @@ DO
 		m1 -> name, U"_", m2 -> name);
 END
 
-FORM (MFCCs_convolve, U"MFCC & MFCC: Convolve", 0)
+FORM (MFCCs_convolve, U"MFCC & MFCC: Convolve", nullptr)
 	RADIO_ENUM (U"Amplitude scaling", kSounds_convolve_scaling, DEFAULT)
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK
 DO
-	MFCC m1 = 0, m2 = 0;
+	MFCC m1 = nullptr, m2 = nullptr;
 	LOOP {
 		iam (MFCC);
 		(m1 ? m2 : m1) = me;
@@ -4462,10 +4873,11 @@ DIRECT (MSpline_help) Melder_help (U"MSpline"); END
 DIRECT (Pattern_and_Categories_to_Discriminant)
 	Pattern me = FIRST (Pattern);
 	Categories cat = FIRST (Categories);
-	praat_new (Pattern_and_Categories_to_Discriminant (me, cat), Thing_getName (me), U"_", Thing_getName (cat));
-	END
+	autoDiscriminant thee = Pattern_and_Categories_to_Discriminant (me, cat);
+	praat_new (thee.move(), my name, U"_", cat -> name);
+END
 
-	FORM (Pattern_draw, U"Pattern: Draw", 0)
+FORM (Pattern_draw, U"Pattern: Draw", 0)
 	NATURAL (U"Pattern number", U"1")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
@@ -4483,7 +4895,7 @@ DO
 	}
 END
 
-FORM (Pattern_formula, U"Pattern: Formula", 0)
+FORM (Pattern_formula, U"Pattern: Formula", nullptr)
 	LABEL (U"label", U"        y := 1; for row := 1 to nrow do { x := 1; "
 		"for col := 1 to ncol do { self [row, col] := `formula' ; x := x + 1 } "
 		"y := y + 1 }}")
@@ -4520,6 +4932,7 @@ DIRECT (Pattern_to_Matrix)
 	}
 END
 
+
 /******************* PCA ******************************/
 
 DIRECT (PCA_help)
@@ -4555,7 +4968,22 @@ END
 DIRECT (PCA_and_Configuration_to_TableOfReal_reconstruct)
 	PCA me = FIRST (PCA);
 	Configuration conf = FIRST (Configuration);
-	praat_new (PCA_and_Configuration_to_TableOfReal_reconstruct (me, conf), my name, U"_", conf->name);
+	autoTableOfReal thee = PCA_and_Configuration_to_TableOfReal_reconstruct (me, conf);
+	praat_new (thee.move(), my name, U"_", conf->name);
+END
+
+FORM (PCA_and_TableOfReal_to_TableOfReal_projectRows, U"PCA & TableOfReal: To TableOfReal (project rows)", U"PCA & TableOfReal: To Configuration...")
+	INTEGER (U"Number of dimensions to keep", U"0 (=all)")
+	OK
+DO
+	long dimension = GET_INTEGER (U"Number of dimensions to keep");
+	if (dimension < 0) {
+		Melder_throw (U"Number of dimensions must be greater equal zero.");
+	}
+	PCA me = FIRST (PCA);
+	TableOfReal tor = FIRST_GENERIC (TableOfReal);
+	autoTableOfReal thee = PCA_and_TableOfReal_to_TableOfReal_projectRows (me, tor, dimension);
+	praat_new (thee.move(), my name, U"_", tor -> name);
 END
 
 FORM (PCA_and_TableOfReal_to_Configuration, U"PCA & TableOfReal: To Configuration", U"PCA & TableOfReal: To Configuration...")
@@ -4568,7 +4996,8 @@ DO
 	}
 	PCA me = FIRST (PCA);
 	TableOfReal tab = FIRST_GENERIC (TableOfReal);
-	praat_new (PCA_and_TableOfReal_to_Configuration (me, tab, dimension), my name, U"_", tab->name);
+	autoConfiguration thee = PCA_and_TableOfReal_to_Configuration (me, tab, dimension);
+	praat_new (thee.move(), my name, U"_", tab->name);
 END
 
 FORM (PCA_and_TableOfReal_to_TableOfReal_zscores, U"PCA & TableOfReal: To TableOfReal (z-scores)", U"PCA & TableOfReal: To TableOfReal (z-scores)...")
@@ -4581,10 +5010,39 @@ DO
 	}
 	PCA me = FIRST (PCA);
 	TableOfReal thee = FIRST_GENERIC (TableOfReal);
-	praat_new (PCA_and_TableOfReal_to_TableOfReal_zscores (me, thee, dimension), my name, U"_", thy name, U"_zscores");
+	autoTableOfReal him = PCA_and_TableOfReal_to_TableOfReal_zscores (me, thee, dimension);
+	praat_new (him.move(), my name, U"_", thy name, U"_zscores");
 END
 
-FORM (PCA_getCentroidElement, U"PCA: Get centroid element...", 0)
+FORM (PCA_and_Matrix_to_Matrix_projectRows, U"PCA & Matrix: To Matrix (project rows)", U"")
+	INTEGER (U"Number of dimensions", U"0 (=all)")
+	OK
+DO
+	long dimension = GET_INTEGER (U"Number of dimensions");
+	if (dimension < 0) {
+		Melder_throw (U"Number of dimensions must be greater than or equal to zero.");
+	}
+	PCA me = FIRST (PCA);
+	Matrix m = FIRST_GENERIC (Matrix);
+	autoMatrix thee = Eigen_and_Matrix_to_Matrix_projectRows (me, m, dimension);
+	praat_new (thee.move(), my name, U"_", m -> name);
+END
+
+FORM (PCA_and_Matrix_to_Matrix_projectColumns, U"PCA & Matrix: To Matrix (project columns)", U"")
+	INTEGER (U"Number of dimensions", U"0 (=all)")
+	OK
+DO
+	long dimension = GET_INTEGER (U"Number of dimensions");
+	if (dimension < 0) {
+		Melder_throw (U"Number of dimensions must be greater than or equal to zero.");
+	}
+	PCA me = FIRST (PCA);
+	Matrix m = FIRST_GENERIC (Matrix);
+	autoMatrix thee = Eigen_and_Matrix_to_Matrix_projectColumns (me, m, dimension);
+	praat_new (thee.move(), my name, U"_", m -> name);
+END
+
+FORM (PCA_getCentroidElement, U"PCA: Get centroid element...", nullptr)
 	NATURAL (U"Number", U"1")
 	OK
 DO
@@ -4601,16 +5059,16 @@ END
 FORM (PCA_getEqualityOfEigenvalues, U"PCA: Get equality of eigenvalues", U"PCA: Get equality of eigenvalues...")
 	INTEGER (U"left Eigenvalue range", U"0")
 	INTEGER (U"right Eigenvalue range", U"0")
-	BOOLEAN (U"Conservative test", 0)
+	BOOLEAN (U"Conservative test", false)
 	OK
 DO
 	LOOP {
 		iam (PCA);
-		long ndf; double p, chisq;
+		double p, chisq, df;
 		PCA_getEqualityOfEigenvalues (me, GET_INTEGER (U"left Eigenvalue range"),
-		GET_INTEGER (U"right Eigenvalue range"), GET_INTEGER (U"Conservative test"), &p, &chisq, &ndf);
+		GET_INTEGER (U"right Eigenvalue range"), GET_INTEGER (U"Conservative test"), & p, & chisq, & df);
 		Melder_information (p, U" (=probability, based on chisq = ",
-		chisq, U"and ndf = ", ndf);
+		chisq, U" and df = ", df);
 	}
 END
 
@@ -4647,7 +5105,7 @@ DO
 	}
 END
 
-FORM (PCA_invertEigenvector, U"PCA: Invert eigenvector", 0)
+FORM (PCA_invertEigenvector, U"PCA: Invert eigenvector", nullptr)
 	NATURAL (U"Eigenvector number", U"1")
 	OK
 DO
@@ -4664,7 +5122,8 @@ FORM (PCA_to_TableOfReal_reconstruct1, U"PCA: To TableOfReal (reconstruct)", U"P
 DO
 	LOOP {
 		iam (PCA);
-		praat_new (PCA_to_TableOfReal_reconstruct1 (me, GET_STRING (U"Coefficients")), my name, U"_reconstructed");
+		autoTableOfReal thee = PCA_to_TableOfReal_reconstruct1 (me, GET_STRING (U"Coefficients"));
+		praat_new (thee.move(), my name, U"_reconstructed");
 	}
 END
 
@@ -4681,12 +5140,13 @@ DO
 		(p1 ? p2 : p1) = me;
 	}
 	Melder_assert (p1 && p2);
-	praat_new (Eigens_to_Procrustes (p1, p2, from, to), Thing_getName (p1), U"_", Thing_getName (p2));
+	autoProcrustes thee = Eigens_to_Procrustes (p1, p2, from, to);
+	praat_new (thee.move(), Thing_getName (p1), U"_", Thing_getName (p2));
 END
 
 
 DIRECT (PCAs_getAngleBetweenPc1Pc2Plane_degrees)
-	PCA p1 = 0, p2 = 0;
+	PCA p1 = nullptr, p2 = nullptr;
 	LOOP {
 		iam (PCA);
 		(p1 ? p2 : p1) = me;
@@ -4705,15 +5165,15 @@ END
 FORM (Permutation_create, U"Create Permutation", U"Create Permutation...")
 	WORD (U"Name", U"p")
 	NATURAL (U"Number of elements", U"10")
-	BOOLEAN (U"Identity Permutation", 1)
+	BOOLEAN (U"Identity Permutation", true)
 	OK
 DO
-	Permutation p = Permutation_create (GET_INTEGER (U"Number of elements"));
+	autoPermutation p = Permutation_create (GET_INTEGER (U"Number of elements"));
 	int identity = GET_INTEGER (U"Identity Permutation");
 	if (! identity) {
-		Permutation_permuteRandomly_inline (p, 0, 0);
+		Permutation_permuteRandomly_inline (p.get(), 0, 0);
 	}
-	praat_new (p, GET_STRING (U"Name"));
+	praat_new (p.move(), GET_STRING (U"Name"));
 END
 
 DIRECT (Permutation_getNumberOfElements)
@@ -4884,9 +5344,15 @@ DIRECT (Permutation_invert)
 		praat_new (Permutation_invert (me), Thing_getName (me), U"_inv");
 	}
 END
+
 DIRECT (Permutations_multiply)
-	autoCollection set = praat_getSelectedObjects ();
-	praat_new (Permutations_multiply (set.peek()), U"mul_", set -> size);
+	OrderedOf<structPermutation> list;
+	LOOP {
+		iam (Permutation);
+		list. addItem_ref (me);
+	}
+	autoPermutation result = Permutations_multiply (& list);
+	praat_new (result.move(), U"mul_", list.size);
 END
 
 DIRECT (Permutations_next)
@@ -4919,7 +5385,8 @@ DO
 		(p1 ? p2 : p1) = me;
 	}
 	Melder_assert (p1 && p2);
-	praat_new (Pitches_to_DTW (p1, p2, GET_REAL (U"Voiced-unvoiced costs"), GET_REAL (U"Time costs weight"), begin, end, slope), U"dtw_", Thing_getName (p1), U"_", Thing_getName (p2));
+	autoDTW thee = Pitches_to_DTW (p1, p2, GET_REAL (U"Voiced-unvoiced costs"), GET_REAL (U"Time costs weight"), begin, end, slope);
+	praat_new (thee.move(), U"dtw_", Thing_getName (p1), U"_", Thing_getName (p2));
 END
 
 FORM (PitchTier_to_Pitch, U"PitchTier: To Pitch", U"PitchTier: To Pitch...")
@@ -4930,8 +5397,9 @@ FORM (PitchTier_to_Pitch, U"PitchTier: To Pitch", U"PitchTier: To Pitch...")
 DO
 	LOOP {
 		iam (PitchTier);
-		praat_new (PitchTier_to_Pitch (me, GET_REAL (U"Step size"),
-		GET_REAL (U"Pitch floor"), GET_REAL (U"Pitch ceiling")), my name);
+		autoPitch thee = PitchTier_to_Pitch (me, GET_REAL (U"Step size"),
+		GET_REAL (U"Pitch floor"), GET_REAL (U"Pitch ceiling"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -4942,10 +5410,11 @@ FORM (Polygon_createSimple, U"Create simple Polygon", U"Create simple Polygon...
 	SENTENCE (U"Vertices as X-Y pairs", U"0.0 0.0  0.0 1.0  1.0 0.0")
 	OK
 DO
-	praat_new (Polygon_createSimple (GET_STRING (U"Vertices as X-Y pairs")), GET_STRING (U"Name"));
+	autoPolygon thee = Polygon_createSimple (GET_STRING (U"Vertices as X-Y pairs"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
-FORM (Polygon_createFromRandomVertices, U"", 0)
+FORM (Polygon_createFromRandomVertices, U"", nullptr)
 	WORD (U"Name", U"p")
 	NATURAL (U"Number of vertices", U"10")
 	REAL (U"left X range", U"0.0")
@@ -4954,9 +5423,10 @@ FORM (Polygon_createFromRandomVertices, U"", 0)
 	REAL (U"right Y range", U"1.0")
 	OK
 DO
-	praat_new (Polygon_createFromRandomVertices (GET_INTEGER (U"Number of vertices"),
+	autoPolygon thee = Polygon_createFromRandomVertices (GET_INTEGER (U"Number of vertices"),
 		GET_REAL (U"left X range"), GET_REAL (U"right X range"),
-		GET_REAL (U"left Y range"), GET_REAL (U"right Y range")), GET_STRING (U"Name"));
+		GET_REAL (U"left Y range"), GET_REAL (U"right Y range"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 DIRECT (Polygon_getNumberOfPoints)
@@ -4966,7 +5436,7 @@ DIRECT (Polygon_getNumberOfPoints)
 	}
 END
 
-FORM (Polygon_getPointX, U"Polygon: Get point (x)", 0)
+FORM (Polygon_getPointX, U"Polygon: Get point (x)", nullptr)
 	NATURAL (U"Point number", U"1")
 	OK
 DO
@@ -4980,7 +5450,7 @@ DO
 	}
 END
 
-FORM (Polygon_getPointY, U"Polygon: Get point (y)", 0)
+FORM (Polygon_getPointY, U"Polygon: Get point (y)", nullptr)
 	NATURAL (U"Point number", U"1")
 	OK
 DO
@@ -5014,32 +5484,35 @@ END
 DIRECT (Polygon_getAreaOfConvexHull)
 	LOOP {
 		iam (Polygon);
-		Melder_informationReal (Polygon_getAreaOfConvexHull (me), NULL);
+		Melder_informationReal (Polygon_getAreaOfConvexHull (me), nullptr);
 	}
 END
 
-FORM (Polygon_circularPermutation, U"Polygon: Circular permutation", 0)
+FORM (Polygon_circularPermutation, U"Polygon: Circular permutation", nullptr)
 	INTEGER (U"Shift", U"1")
 	OK
 DO
 	long shift = GET_INTEGER (U"Shift");
 	LOOP {
 		iam (Polygon);
-		praat_new (Polygon_circularPermutation (me, shift), my name, U"_", shift);
+		autoPolygon thee = Polygon_circularPermutation (me, shift);
+		praat_new (thee.move(), my name, U"_", shift);
 	}
 END
 
 DIRECT (Polygon_simplify)
 	LOOP {
 		iam (Polygon);
-		praat_new (Polygon_simplify (me), my name, U"_s");
+		autoPolygon thee = Polygon_simplify (me);
+		praat_new (thee.move(), my name, U"_s");
 	}
 END
 
 DIRECT (Polygon_convexHull)
 	LOOP {
 		iam (Polygon);
-		praat_new (Polygon_convexHull (me), my name, U"_hull");
+		autoPolygon thee = Polygon_convexHull (me);
+		praat_new (thee.move(), my name, U"_hull");
 	}
 END
 
@@ -5049,8 +5522,9 @@ FORM (Polygon_translate, U"Polygon: Translate", U"Polygon: Translate...")
 	OK
 DO
 	LOOP {
-		iam (Polygon);
+		iam (Polygon); 
 		Polygon_translate (me, GET_REAL (U"X"), GET_REAL (U"Y"));
+		praat_dataChanged (me);
 	}
 END
 
@@ -5069,7 +5543,7 @@ DO
 	}
 END
 
-FORM (Polygon_scale, U"Polygon: Scale polygon", 0)
+FORM (Polygon_scale, U"Polygon: Scale polygon", nullptr)
 	REAL (U"X", U"0.0")
 	REAL (U"Y", U"0.0")
 	OK
@@ -5081,12 +5555,12 @@ DO
 	}
 END
 
-FORM (Polygon_Categories_draw, U"Polygon & Categories: Draw", 0)
+FORM (Polygon_Categories_draw, U"Polygon & Categories: Draw", nullptr)
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	Polygon me = FIRST (Polygon);
@@ -5198,7 +5672,7 @@ DO
 	dcomplex p, z = dcomplex_create (GET_REAL (U"Real part"), GET_REAL (U"Imaginary part"));
 	LOOP {
 		iam (Polynomial);
-		Polynomial_evaluate_z (me, &z, &p);
+		Polynomial_evaluate_z (me, & z, & p);
 		Melder_information (p.re, U" + ", p.im, U" i");
 	}
 END
@@ -5217,7 +5691,7 @@ DO
 END
 
 DIRECT (Polynomials_multiply)
-	Polynomial p1 = 0, p2 = 0;
+	Polynomial p1 = nullptr, p2 = nullptr;
 	LOOP {
 		iam (Polynomial);
 		(p1 ? p2 : p1) = me;
@@ -5227,13 +5701,13 @@ DIRECT (Polynomials_multiply)
 END
 
 FORM (Polynomials_divide, U"Polynomials: Divide", U"Polynomials: Divide...")
-	BOOLEAN (U"Want quotient", 1)
-	BOOLEAN (U"Want remainder", 1)
+	BOOLEAN (U"Want quotient", true)
+	BOOLEAN (U"Want remainder", true)
 	OK
 DO
 /* With gcc (GCC) 3.2.2 20030217 (Red Hat Linux 8.0 3.2.2-2)
-	The following line initiates pq = NULL and I don't know why
-Polynomial p1 = NULL, p2 = NULL, pq, pr;
+	The following line initiates pq = nullptr and I don't know why
+Polynomial p1 = nullptr, p2 = nullptr, pq, pr;
 */
 
 	bool wantq = GET_INTEGER (U"Want quotient");
@@ -5241,26 +5715,20 @@ Polynomial p1 = NULL, p2 = NULL, pq, pr;
 	if (! wantq && ! wantr) {
 		Melder_throw (U"Either \'Want quotient\' or \'Want remainder\' should be chosen");
 	}
-	Polynomial p1 = 0, p2 = 0;
+	Polynomial p1 = nullptr, p2 = nullptr;
 	LOOP {
 		iam (Polynomial);
 		(p1 ? p2 : p1) = me;
 	}
 	Melder_assert (p1 && p2);
-	Polynomial q, r;
-	if (! wantq) {
-		q = 0;
-	}
-	if (! wantr) {
-		r = 0;
-	}
-	Polynomials_divide (p1, p2, &q, &r);
-	autoPolynomial aq = q, ar = r;
+	autoPolynomial aq, ar;
+	Polynomials_divide (p1, p2, wantq ? & aq : nullptr, wantr ? & ar : nullptr);
+//	autoPolynomial aq = q, ar = r;
 	if (wantq) {
-		praat_new (aq.transfer(), Thing_getName (p1), U"_q");
+		praat_new (aq.move(), Thing_getName (p1), U"_q");
 	}
 	if (wantr) {
-		praat_new (ar.transfer(), Thing_getName (p1), U"_r");
+		praat_new (ar.move(), Thing_getName (p1), U"_r");
 	}
 END
 
@@ -5268,14 +5736,14 @@ END
 
 DIRECT (Roots_help) Melder_help (U"Roots"); END
 
-FORM (Roots_draw, U"Roots: Draw", 0)
+FORM (Roots_draw, U"Roots: Draw", nullptr)
 	REAL (U"Minimum of real axis", U"0.0")
 	REAL (U"Maximum of real axis", U"0.0")
 	REAL (U"Minimum of imaginary axis", U"0.0")
 	REAL (U"Maximum of imaginary axis", U"0.0")
 	SENTENCE (U"Mark string (+x0...)", U"o")
 	NATURAL (U"Mark size", U"12")
-	BOOLEAN (U"Garnish", 0)
+	BOOLEAN (U"Garnish", false)
 	OK
 DO
 	autoPraatPicture picture;
@@ -5294,7 +5762,7 @@ DIRECT (Roots_getNumberOfRoots)
 	}
 END
 
-FORM (Roots_getRoot, U"Roots: Get root", 0)
+FORM (Roots_getRoot, U"Roots: Get root", nullptr)
 	NATURAL (U"Root number", U"1")
 	OK
 DO
@@ -5305,7 +5773,7 @@ DO
 	}
 END
 
-FORM (Roots_getRealPartOfRoot, U"Roots: Get real part", 0)
+FORM (Roots_getRealPartOfRoot, U"Roots: Get real part", nullptr)
 	NATURAL (U"Root number", U"1")
 	OK
 DO
@@ -5316,7 +5784,7 @@ DO
 	}
 END
 
-FORM (Roots_getImaginaryPartOfRoot, U"Roots: Get imaginary part", 0)
+FORM (Roots_getImaginaryPartOfRoot, U"Roots: Get imaginary part", nullptr)
 	NATURAL (U"Root number", U"1")
 	OK
 DO
@@ -5327,7 +5795,7 @@ DO
 	}
 END
 
-FORM (Roots_setRoot, U"Roots: Set root", 0)
+FORM (Roots_setRoot, U"Roots: Set root", nullptr)
 	NATURAL (U"Root number", U"1")
 	REAL (U"Real part", U"1.0/sqrt(2)")
 	REAL (U"Imaginary part", U"1.0/sqrt(2)")
@@ -5381,8 +5849,8 @@ DIRECT (Praat_ReportFloatingPointProperties)
 	MelderInfo_close ();
 END
 /*
-#ifdef USE_PULSEAUDIO
-void pulseAudioServer_report (void);
+#ifdef HAVE_PULSEAUDIO
+void pulseAudioServer_report ();
 DIRECT (Praat_ReportSoundServerProperties)
 	pulseAudioServer_report ();
 END
@@ -5398,7 +5866,7 @@ DO
 	double q = GET_REAL (U"Critical value");
 	REQUIRE (q > 0 , U"Critical value must be > 0.")
 	double val = NUMtukeyQ (q, GET_INTEGER (U"Number of means"), GET_REAL (U"Degrees of freedom"), GET_INTEGER (U"Number of rows") );
-	Melder_informationReal (val, NULL);
+	Melder_informationReal (val, nullptr);
 END
 
 FORM (Praat_getInvTukeyQ, U"Get invTukeyQ", 0)
@@ -5411,18 +5879,18 @@ DO
 	double p = GET_REAL (U"Probability");
 	REQUIRE (p >= 0 && p <= 1, U"Probability must be in (0,1).")
 	double val = NUMinvTukeyQ (p, GET_INTEGER (U"Number of means"), GET_REAL (U"Degrees of freedom"), GET_INTEGER (U"Number of rows"));
-	Melder_informationReal (val, NULL);
+	Melder_informationReal (val, nullptr);
 END
 
 /******************** Sound ****************************************/
 
-static void Sound_create_addCommonFields (void *dia, const char32 *endTime) {
+static void Sound_create_addCommonFields (UiForm dia, const char32 *endTime) {
 	REAL (U"Starting time (s)", U"0.0")
 	REAL (U"Finishing time (s)", endTime)
 	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 }
 
-static void Sound_create_checkCommonFields (void *dia, double *startingTime, double *finishingTime,
+static void Sound_create_checkCommonFields (UiForm dia, double *startingTime, double *finishingTime,
         double *samplingFrequency) {
 	double numberOfSamples_real;
 	*startingTime = GET_REAL (U"Starting time");
@@ -5495,10 +5963,11 @@ FORM (Sound_and_Pitch_to_Spectrogram, U"Sound & Pitch: To Spectrogram", U"Sound
 DO
 	Sound me = FIRST (Sound);
 	Pitch thee = FIRST (Pitch);
-	praat_new (Sound_and_Pitch_to_Spectrogram (me, thee, GET_REAL (U"Analysis window duration"),
+	autoSpectrogram him = Sound_and_Pitch_to_Spectrogram (me, thee, GET_REAL (U"Analysis window duration"),
 		GET_REAL (U"Time step"), GET_REAL (U"Position of first filter"),
 		GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"),
-		GET_REAL (U"Relative bandwidth")), my name, U"_", thy name);
+		GET_REAL (U"Relative bandwidth"));
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 FORM (Sound_and_Pitch_changeGender, U"Sound & Pitch: Change gender", U"Sound & Pitch: Change gender...")
@@ -5510,9 +5979,9 @@ FORM (Sound_and_Pitch_changeGender, U"Sound & Pitch: Change gender", U"Sound & P
 DO
 	Sound me = FIRST (Sound);
 	Pitch p = FIRST (Pitch);
-	praat_new (Sound_and_Pitch_changeGender_old (me, p, GET_REAL (U"Formant shift ratio"),
-			GET_REAL (U"New pitch median"), GET_REAL (U"Pitch range factor"), GET_REAL (U"Duration factor")),
-			my name, U"_", p->name);
+	autoSound thee = Sound_and_Pitch_changeGender_old (me, p, GET_REAL (U"Formant shift ratio"),
+		GET_REAL (U"New pitch median"), GET_REAL (U"Pitch range factor"), GET_REAL (U"Duration factor"));
+	praat_new (thee.move(), my name, U"_", p->name);
 END
 
 FORM (Sound_and_Pitch_changeSpeaker, U"Sound & Pitch: Change speaker", U"Sound & Pitch: Change speaker...")
@@ -5524,18 +5993,20 @@ FORM (Sound_and_Pitch_changeSpeaker, U"Sound & Pitch: Change speaker", U"Sound &
 DO
 	Sound me = FIRST (Sound);
 	Pitch p = FIRST (Pitch);
-	praat_new (Sound_and_Pitch_changeSpeaker (me, p, GET_REAL (U"Multiply formants by"),
-		GET_REAL (U"Multiply pitch by"), GET_REAL (U"Multiply pitch range by"), GET_REAL (U"Multiply duration")), my name, U"_", p->name);
+	autoSound thee = Sound_and_Pitch_changeSpeaker (me, p, GET_REAL (U"Multiply formants by"),
+		GET_REAL (U"Multiply pitch by"), GET_REAL (U"Multiply pitch range by"), GET_REAL (U"Multiply duration"));
+	praat_new (thee.move(), my name, U"_", p -> name);
 END
 
-FORM (Sound_and_IntervalTier_cutPartsMatchingLabel, U"Sound & IntervalTier: Cut parts matching label", 0)
+FORM (Sound_and_IntervalTier_cutPartsMatchingLabel, U"Sound & IntervalTier: Cut parts matching label", nullptr)
 	SENTENCE (U"Label", U"cut")
 	OK
 DO
 	const char32 *label = GET_STRING (U"Label");
 	Sound me = FIRST (Sound);
 	IntervalTier thee = FIRST (IntervalTier);
-	praat_new (Sound_and_IntervalTier_cutPartsMatchingLabel (me, thee, label), my name, U"_cut");
+	autoSound him = Sound_and_IntervalTier_cutPartsMatchingLabel (me, thee, label);
+	praat_new (him.move(), my name, U"_cut");
 END
 
 FORM (Sound_createFromGammaTone, U"Create a gammatone", U"Create Sound from gammatone...")
@@ -5564,9 +6035,9 @@ DO
 		Melder_throw (U"Bandwidth cannot be negative.\nPlease use a positive or zero bandwidth.");
 	}
 	autoSound sound = Sound_createGammaTone (startingTime, finishingTime, samplingFrequency, gamma, f, bandwidth,
-					GET_REAL (U"Initial phase"), GET_REAL (U"Addition factor"), GET_INTEGER (U"Scale amplitudes"));
-	//Sound_create_check (sound.peek(), startingTime, finishingTime, samplingFrequency);//TODO
-	praat_new (sound.transfer(), GET_STRING (U"Name"));
+		GET_REAL (U"Initial phase"), GET_REAL (U"Addition factor"), GET_INTEGER (U"Scale amplitudes"));
+	//Sound_create_check (sound.get(), startingTime, finishingTime, samplingFrequency);//TODO
+	praat_new (sound.move(), GET_STRING (U"Name"));
 END
 
 FORM (Sound_createFromShepardTone, U"Create a Shepard tone", U"Create Sound from Shepard tone...")
@@ -5582,15 +6053,15 @@ DO
 	double startingTime, finishingTime, samplingFrequency;
 	double amplitudeRange = GET_REAL (U"Amplitude range");
 	double octaveShiftFraction = GET_REAL (U"Octave shift fraction");
-	Sound_create_checkCommonFields (dia, &startingTime, &finishingTime, &samplingFrequency);
+	Sound_create_checkCommonFields (dia, & startingTime, & finishingTime, & samplingFrequency);
 	if (amplitudeRange < 0) {
 		Melder_throw (U"Amplitude range cannot be negative.\nPlease use a positive or zero amplitude range.");
 	}
 	autoSound sound = Sound_createShepardToneComplex (startingTime, finishingTime, samplingFrequency,
-					GET_REAL (U"Lowest frequency"), GET_INTEGER (U"Number of components"),
-					GET_REAL (U"Frequency change"), GET_REAL (U"Amplitude range"), octaveShiftFraction);
+		GET_REAL (U"Lowest frequency"), GET_INTEGER (U"Number of components"),
+		GET_REAL (U"Frequency change"), GET_REAL (U"Amplitude range"), octaveShiftFraction);
 	// Sound_create_check (sound, startingTime, finishingTime, samplingFrequency); //TODO
-	praat_new (sound.transfer(), GET_STRING (U"Name"));
+	praat_new (sound.move(), GET_STRING (U"Name"));
 END
 
 FORM (Sound_drawWhere, U"Sound: Draw where", U"Sound: Draw where...")
@@ -5598,7 +6069,7 @@ FORM (Sound_drawWhere, U"Sound: Draw where", U"Sound: Draw where...")
 	REAL (U"right Time range", U"0.0 (= all)")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 1)
 	OPTION (U"Curve")
@@ -5619,7 +6090,7 @@ DO
 	}
 END
 
-FORM (Sound_playOneChannel, U"Sound: Play one channel", 0)
+FORM (Sound_playOneChannel, U"Sound: Play one channel", nullptr)
     NATURAL (U"Channel", U"1")
     OK
 DO
@@ -5631,7 +6102,7 @@ DO
 				  (my ny > 1 ? U"s." : U"."));
         }
         autoSound thee = Sound_extractChannel (me, ichannel);
-        Sound_play (thee.peek(), 0, 0);
+        Sound_play (thee.get(), 0, 0);
     }
 END
 
@@ -5650,7 +6121,7 @@ DO
 	}
 END
 
-FORM (Sounds_to_DTW, U"Sounds: To DTW", 0)
+FORM (Sounds_to_DTW, U"Sounds: To DTW", nullptr)
     POSITIVE (U"Window length (s)", U"0.015")
     POSITIVE (U"Time step (s)", U"0.005")
     LABEL (U"", U"")
@@ -5672,7 +6143,8 @@ DO
         (s1 ? s2 : s1) = me;
     }
     Melder_assert (s1 && s2);
-    praat_new (Sounds_to_DTW (s1, s2, analysisWidth, dt, band, slope), s1 -> name, U"_", s2 -> name);
+	autoDTW thee = Sounds_to_DTW (s1, s2, analysisWidth, dt, band, slope);
+    praat_new (thee.move(), s1 -> name, U"_", s2 -> name);
 END
 
 FORM (Sound_to_TextGrid_detectSilences, U"Sound: To TextGrid (silences)", U"Sound: To TextGrid (silences)...")
@@ -5689,14 +6161,15 @@ FORM (Sound_to_TextGrid_detectSilences, U"Sound: To TextGrid (silences)", U"Soun
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_TextGrid_detectSilences (me, GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"),
-		GET_REAL (U"Silence threshold"), GET_REAL (U"Minimum silent interval duration"),
-		GET_REAL (U"Minimum sounding interval duration"), GET_STRING (U"Silent interval label"),
-		GET_STRING (U"Sounding interval label")), my name);
+		autoTextGrid thee = Sound_to_TextGrid_detectSilences (me, GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"),
+			GET_REAL (U"Silence threshold"), GET_REAL (U"Minimum silent interval duration"),
+			GET_REAL (U"Minimum sounding interval duration"), GET_STRING (U"Silent interval label"),
+			GET_STRING (U"Sounding interval label"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Sound_copyChannelRanges, U"Sound: Copy channel ranges", 0)
+FORM (Sound_copyChannelRanges, U"Sound: Copy channel ranges", nullptr)
 	LABEL (U"", U"Create a new Sound from the following channels:")
 	TEXTFIELD (U"Ranges", U"1:64")
 	LABEL (U"", U"To supply rising or falling ranges, use e.g. 2:6 or 5:3.")
@@ -5705,13 +6178,13 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_copyChannelRanges (me, GET_STRING (U"Ranges"));
-		praat_new (thee.transfer(), my name, U"_channels");
+		praat_new (thee.move(), my name, U"_channels");
 	}
 END
 
 FORM (Sound_trimSilences, U"Sound: Trim silences", U"Sound: Trim silences...")
     REAL (U"Trim duration (s)", U"0.08")
-	BOOLEAN (U"Only at start and end", 1);
+	BOOLEAN (U"Only at start and end", true);
 	LABEL (U"", U"Parameters for the intensity analysis")
 	POSITIVE (U"Minimum pitch (Hz)", U"100")
 	REAL (U"Time step (s)", U"0.0 (= auto)")
@@ -5719,13 +6192,13 @@ FORM (Sound_trimSilences, U"Sound: Trim silences", U"Sound: Trim silences...")
 	REAL (U"Silence threshold (dB)", U"-35.0")
 	POSITIVE (U"Minimum silent interval duration (s)", U"0.1")
 	POSITIVE (U"Minimum sounding interval duration (s)", U"0.05")
-    BOOLEAN (U"Save trimming info as TextGrid", 0)
+    BOOLEAN (U"Save trimming info as TextGrid", false)
     WORD (U"Trim label", U"trimmed")
 	OK
 DO
     double trimDuration = GET_REAL (U"Trim duration");
-    if (trimDuration < 0) {
-        trimDuration = 0;
+    if (trimDuration < 0.0) {
+        trimDuration = 0.0;
     }
 	bool onlyAtStartAndEnd = GET_INTEGER (U"Only at start and end");
 	double minPitch = GET_REAL (U"Minimum pitch");
@@ -5737,14 +6210,13 @@ DO
     const char32 *trimlabel = GET_STRING (U"Trim label");
 	LOOP {
 		iam (Sound);
-        TextGrid tg = NULL;
+        autoTextGrid tg;
 		autoSound thee = Sound_trimSilences (me, trimDuration, onlyAtStartAndEnd, minPitch, timeStep, silenceThreshold,
-			minSilenceDuration, minSoundingDuration, (saveTextGrid ? &tg : 0), trimlabel);
-        autoTextGrid atg = tg;
+			minSilenceDuration, minSoundingDuration, ( saveTextGrid ? &tg : nullptr ), trimlabel);
         if (saveTextGrid) {
-            praat_new (atg.transfer(), my name, U"_trimmed");
+            praat_new (tg.move(), my name, U"_trimmed");
         }
-		praat_new (thee.transfer(), my name, U"_trimmed");
+		praat_new (thee.move(), my name, U"_trimmed");
 	}
 END
 
@@ -5755,7 +6227,7 @@ FORM (Sound_to_BarkFilter, U"Sound: To BarkFilter", U"Sound: To BarkSpectrogram.
 	LABEL (U"", U"Filter bank parameters")
 	POSITIVE (U"Position of first filter (bark)", U"1.0")
 	POSITIVE (U"Distance between filters (bark)", U"1.0")
-	REAL (U"Maximum frequency (bark)", U"0");
+	REAL (U"Maximum frequency (bark)", U"0.0");
 	OK
 DO
 	LOOP {
@@ -5772,14 +6244,15 @@ FORM (Sound_to_BarkSpectrogram, U"Sound: To BarkSpectrogram", U"Sound: To BarkSp
 	LABEL (U"", U"Filter bank parameters")
 	POSITIVE (U"Position of first filter (bark)", U"1.0")
 	POSITIVE (U"Distance between filters (bark)", U"1.0")
-	REAL (U"Maximum frequency (bark)", U"0");
+	REAL (U"Maximum frequency (bark)", U"0.0");
 	OK
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_BarkSpectrogram (me, GET_REAL (U"Window length"),
+		autoBarkSpectrogram thee = Sound_to_BarkSpectrogram (me, GET_REAL (U"Window length"),
 			GET_REAL (U"Time step"), GET_REAL (U"Position of first filter"),
-			GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters")), my name);
+			GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5790,7 +6263,7 @@ FORM (Sound_to_FormantFilter, U"Sound: To FormantFilter", U"Sound: To FormantFil
 	LABEL (U"", U"Filter bank parameters")
 	POSITIVE (U"Position of first filter (Hz)", U"100.0")
 	POSITIVE (U"Distance between filters (Hz)", U"50.0")
-	REAL (U"Maximum frequency", U"0");
+	REAL (U"Maximum frequency", U"0.0");
 	POSITIVE (U"Relative bandwidth", U"1.1")
 	LABEL (U"", U"Pitch analysis")
 	REAL (U"Minimum pitch (Hz)", U"75.0")
@@ -5813,7 +6286,7 @@ FORM (Sound_to_Spectrogram_pitchDependent, U"Sound: To Spectrogram (pitch-depend
 	LABEL (U"", U"Filter bank parameters")
 	POSITIVE (U"Position of first filter (Hz)", U"100.0")
 	POSITIVE (U"Distance between filters (Hz)", U"50.0")
-	REAL (U"Maximum frequency", U"0");
+	REAL (U"Maximum frequency", U"0.0");
 	POSITIVE (U"Relative bandwidth", U"1.1")
 	LABEL (U"", U"Pitch analysis")
 	REAL (U"Minimum pitch (Hz)", U"75.0")
@@ -5822,11 +6295,10 @@ FORM (Sound_to_Spectrogram_pitchDependent, U"Sound: To Spectrogram (pitch-depend
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_Spectrogram_pitchDependent (me, GET_REAL (U"Window length"),
-		GET_REAL (U"Time step"), GET_REAL (U"Position of first filter"),
-		GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"),
-		GET_REAL (U"Relative bandwidth"), GET_REAL (U"Minimum pitch"),
-		GET_REAL (U"Maximum pitch")), my name);
+		autoSpectrogram thee = Sound_to_Spectrogram_pitchDependent (me, GET_REAL (U"Window length"), GET_REAL (U"Time step"), 
+			GET_REAL (U"Position of first filter"), GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"),
+			GET_REAL (U"Relative bandwidth"), GET_REAL (U"Minimum pitch"), GET_REAL (U"Maximum pitch"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5842,9 +6314,9 @@ FORM (Sound_to_MelFilter, U"Sound: To MelFilter", U"Sound: To MelFilter...")
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_MelFilter (me, GET_REAL (U"Window length"),
-		GET_REAL (U"Time step"), GET_REAL (U"Position of first filter"),
-		GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters")), my name);
+		autoMelFilter thee = Sound_to_MelFilter (me, GET_REAL (U"Window length"), GET_REAL (U"Time step"), 
+			GET_REAL (U"Position of first filter"), GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5859,20 +6331,21 @@ FORM (Sound_to_MelSpectrogram, U"Sound: To MelSpectrogram", U"Sound: To MelSpect
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_MelSpectrogram (me, GET_REAL (U"Window length"),
-		GET_REAL (U"Time step"), GET_REAL (U"Position of first filter"),
-		GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters")), my name);
+		autoMelSpectrogram thee = Sound_to_MelSpectrogram (me, GET_REAL (U"Window length"), GET_REAL (U"Time step"), 
+			GET_REAL (U"Position of first filter"), GET_REAL (U"Maximum frequency"), GET_REAL (U"Distance between filters"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (Sound_to_ComplexSpectrogram, U"Sound: To ComplexSpectrogram", 0)
+FORM (Sound_to_ComplexSpectrogram, U"Sound: To ComplexSpectrogram", nullptr)
 	POSITIVE (U"Window length (s)", U"0.015")
 	POSITIVE (U"Time step", U"0.005")
 	OK
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_ComplexSpectrogram (me, GET_REAL (U"Window length"), GET_REAL (U"Time step")), my name);
+		autoComplexSpectrogram thee = Sound_to_ComplexSpectrogram (me, GET_REAL (U"Window length"), GET_REAL (U"Time step"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5899,9 +6372,10 @@ DO
 	}
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_Pitch_shs (me, GET_REAL (U"Time step"), minimumPitch, fmax, ceiling,
+		autoPitch thee = Sound_to_Pitch_shs (me, GET_REAL (U"Time step"), minimumPitch, fmax, ceiling,
 		GET_INTEGER (U"Max. number of subharmonics"), GET_INTEGER (U"Max. number of candidates"),
-		GET_REAL (U"Compression factor"), GET_INTEGER (U"Number of points per octave")), my name);
+		GET_REAL (U"Compression factor"), GET_INTEGER (U"Number of points per octave"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5909,7 +6383,7 @@ FORM (Sound_fadeIn, U"Sound: Fade in", U"Sound: Fade in...")
 	CHANNEL (U"Channel (number, 0 = (all))", U"1")
 	REAL (U"Time (s)", U"-10000.0")
 	REAL (U"Fade time (s)", U"0.005")
-	BOOLEAN (U"Silent from start", 0)
+	BOOLEAN (U"Silent from start", false)
 	OK
 DO
 	long channel = GET_INTEGER (U"Channel");
@@ -5924,7 +6398,7 @@ FORM (Sound_fadeOut, U"Sound: Fade out", U"Sound: Fade out...")
 	CHANNEL (U"Channel (number, 0 = (all))", U"1")
 	REAL (U"Time (s)", U"10000.0")
 	REAL (U"Fade time (s)", U"-0.005")
-	BOOLEAN (U"Silent to end", 0)
+	BOOLEAN (U"Silent to end", false)
 	OK
 DO
 	long channel = GET_INTEGER (U"Channel");
@@ -5947,16 +6421,16 @@ FORM (Sound_to_KlattGrid_simple, U"Sound: To KlattGrid (simple)", U"Sound: To Kl
 	POSITIVE (U"Pitch ceiling (Hz)", U"600.0")
 	LABEL (U"", U"Intensity determination")
 	POSITIVE (U"Minimum pitch (Hz)", U"100.0")
-	BOOLEAN (U"Subtract mean", 1)
+	BOOLEAN (U"Subtract mean", true)
 	OK
 DO
 	LOOP {
 		iam (Sound);
 		praat_new (Sound_to_KlattGrid_simple (me, GET_REAL (U"Time step"),
-		GET_INTEGER (U"Max. number of formants"), GET_REAL (U"Maximum formant"),
-		GET_REAL (U"Window length"), GET_REAL (U"Pre-emphasis from"),
-		GET_REAL (U"Pitch floor"), GET_REAL (U"Pitch ceiling"),
-		GET_REAL (U"Minimum pitch"), GET_INTEGER (U"Subtract mean")), my name);
+			GET_INTEGER (U"Max. number of formants"), GET_REAL (U"Maximum formant"),
+			GET_REAL (U"Window length"), GET_REAL (U"Pre-emphasis from"),
+			GET_REAL (U"Pitch floor"), GET_REAL (U"Pitch ceiling"),
+			GET_REAL (U"Minimum pitch"), GET_INTEGER (U"Subtract mean")), my name);
 	}
 END
 
@@ -5978,9 +6452,9 @@ DO
 	}
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_to_Pitch_SPINET (me, GET_REAL (U"Time step"), GET_REAL (U"Window length"),
-		fmin, fmax, GET_INTEGER (U"Number of filters"),
-		GET_REAL (U"Ceiling"), GET_INTEGER (U"Max. number of candidates")), my name);
+		autoPitch thee = Sound_to_Pitch_SPINET (me, GET_REAL (U"Time step"), GET_REAL (U"Window length"), fmin, fmax, 
+			GET_INTEGER (U"Number of filters"), GET_REAL (U"Ceiling"), GET_INTEGER (U"Max. number of candidates"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -5999,8 +6473,9 @@ DO
 		if (channel > my ny) {
 			channel = 1;
 		}
-		praat_new (Sound_to_Polygon (me, channel, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_REAL (U"Connection y-value")), my name);
+		autoPolygon thee = Sound_to_Polygon (me, channel, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
+		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_REAL (U"Connection y-value"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -6015,14 +6490,15 @@ FORM (Sounds_to_Polygon_enclosed, U"Sounds: To Polygon (enclosed)", U"Sounds: To
 	OK
 DO
 	long channel = GET_INTEGER (U"Channel");
-	Sound s1 = 0, s2 = 0;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		(s1 ? s2 : s1) = me;
 	}
 	Melder_assert (s1 && s2);
-	praat_new (Sounds_to_Polygon_enclosed (s1, s2, channel, GET_REAL (U"left Time range"),
-		GET_REAL (U"right Time range"), GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range")), s1->name, U"_", s2->name);
+	autoPolygon thee = Sounds_to_Polygon_enclosed (s1, s2, channel, GET_REAL (U"left Time range"),
+		GET_REAL (U"right Time range"), GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"));
+	praat_new (thee.move(), s1->name, U"_", s2->name);
 END
 
 FORM (Sound_filterByGammaToneFilter4, U"Sound: Filter (gammatone)", U"Sound: Filter (gammatone)...")
@@ -6032,7 +6508,8 @@ FORM (Sound_filterByGammaToneFilter4, U"Sound: Filter (gammatone)", U"Sound: Fil
 DO
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_filterByGammaToneFilter4 (me, GET_REAL (U"Centre frequency"), GET_REAL (U"Bandwidth")), my name, U"_filtered");
+		autoSound thee = Sound_filterByGammaToneFilter4 (me, GET_REAL (U"Centre frequency"), GET_REAL (U"Bandwidth"));
+		praat_new (thee.move(), my name, U"_filtered");
 	}
 END
 
@@ -6053,7 +6530,7 @@ DO
 		autoSound thee = Sound_removeNoise (me, GET_REAL (U"left Noise time range"), GET_REAL (U"right Noise time range"),
 			GET_REAL (U"Window length"), GET_REAL (U"left Filter frequency range"),
 			GET_REAL (U"right Filter frequency range"), GET_REAL (U"Smoothing"), GET_INTEGER (U"Noise reduction method"));
-		praat_new (thee.transfer(), my name, U"_denoised");
+		praat_new (thee.move(), my name, U"_denoised");
 	}
 END
 
@@ -6075,9 +6552,9 @@ DO
 	}
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_changeSpeaker (me, minimumPitch, maximumPitch,
-		GET_REAL (U"Multiply formants by"), GET_REAL (U"Multiply pitch by"),
-		GET_REAL (U"Multiply pitch range by"), GET_REAL (U"Multiply duration by")), my name, U"_changeSpeaker");
+		autoSound thee = Sound_changeSpeaker (me, minimumPitch, maximumPitch, GET_REAL (U"Multiply formants by"), 
+			GET_REAL (U"Multiply pitch by"), GET_REAL (U"Multiply pitch range by"), GET_REAL (U"Multiply duration by"));
+		praat_new (thee.move(), my name, U"_changeSpeaker");
 	}
 END
 
@@ -6103,9 +6580,9 @@ DO
 	}
 	LOOP {
 		iam (Sound);
-		praat_new (Sound_changeGender_old (me, minimumPitch, maximumPitch,
-		GET_REAL (U"Formant shift ratio"), GET_REAL (U"New pitch median"),
-		pitchrf, GET_REAL (U"Duration factor")), my name, U"_changeGender");
+		autoSound thee = Sound_changeGender_old (me, minimumPitch, maximumPitch, GET_REAL (U"Formant shift ratio"), 
+			GET_REAL (U"New pitch median"), pitchrf, GET_REAL (U"Duration factor"));
+		praat_new (thee.move(), my name, U"_changeGender");
 	}
 END
 
@@ -6116,7 +6593,7 @@ FORM (Sound_paintWhere, U"Sound paint where", U"Sound: Paint where...")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	REAL (U"Fill from level", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Paint only those parts where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; always")
 	OK
@@ -6138,10 +6615,10 @@ FORM (Sounds_paintEnclosed, U"Sounds paint enclosed", U"Sounds: Paint enclosed..
 	REAL (U"right Time range (s)", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
-	Sound s1 = 0, s2 = 0;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		(s1 ? s2 : s1) = me;
@@ -6153,33 +6630,37 @@ DO
 		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
 END
 
-FORM_READ2 (Sound_readFromRawFileLE, U"Read Sound from raw Little Endian file", 0, true) {
-	praat_new (Sound_readFromRawFile (file, NULL, 16, 1, 0, 0, 16000), MelderFile_name (file));
+FORM_READ2 (Sound_readFromRawFileLE, U"Read Sound from raw Little Endian file", nullptr, true) {
+	autoSound thee = Sound_readFromRawFile (file, nullptr, 16, 1, 0, 0, 16000.0);
+	praat_new (thee.move(), MelderFile_name (file));
 END2 }
 
-FORM_READ2 (Sound_readFromRawFileBE, U"Read Sound from raw 16-bit Little Endian file", 0, true) {
-	praat_new (Sound_readFromRawFile (file, NULL, 16, 0, 0, 0, 16000), MelderFile_name (file));
+FORM_READ2 (Sound_readFromRawFileBE, U"Read Sound from raw 16-bit Little Endian file", nullptr, true) {
+	autoSound thee = Sound_readFromRawFile (file, nullptr, 16, 0, 0, 0, 16000.0);
+	praat_new (thee.move(), MelderFile_name (file));
 END2 }
 
-FORM_READ2 (KlattTable_readFromRawTextFile, U"KlattTable_readFromRawTextFile", 0, true) {
-	praat_new (KlattTable_readFromRawTextFile (file), MelderFile_name (file));
+FORM_READ2 (KlattTable_readFromRawTextFile, U"KlattTable_readFromRawTextFile", nullptr, true) {
+	autoKlattTable thee = KlattTable_readFromRawTextFile (file);
+	praat_new (thee.move(), MelderFile_name (file));
 END2 }
 
 /************ Spectrograms *********************************************/
 
-FORM (Spectrograms_to_DTW, U"Spectrograms: To DTW", 0)
+FORM (Spectrograms_to_DTW, U"Spectrograms: To DTW", nullptr)
 	DTW_constraints_addCommonFields (dia);
 	OK
 DO
 	int begin, end, slope;
 	DTW_constraints_getCommonFields (dia, &begin, &end, &slope);
-	Spectrogram s1 = 0, s2 = 0;
+	Spectrogram s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Spectrogram);
 		(s1 ? s2 : s1) = me;
 	}
 	Melder_assert (s1 && s2);
-	praat_new (Spectrograms_to_DTW (s1, s2, begin, end, slope, 1), s1->name, U"_", s2->name);
+	autoDTW thee = Spectrograms_to_DTW (s1, s2, begin, end, slope, 1.0);
+	praat_new (thee.move(), s1->name, U"_", s2->name);
 END
 
 /**************** Spectrum *******************************************/
@@ -6202,7 +6683,7 @@ DO
 	}
 END
 
-FORM (Spectrum_setRealValueInBin, U"Spectrum: Set real value in bin", 0)
+FORM (Spectrum_setRealValueInBin, U"Spectrum: Set real value in bin", nullptr)
 	NATURAL (U"Bin number", U"100")
 	REAL (U"Value", U"0.0")
 	OK
@@ -6215,7 +6696,7 @@ DO
 	}
 END
 
-FORM (Spectrum_setImaginaryValueInBin, U"Spectrum: Set imaginary value in bin", 0)
+FORM (Spectrum_setImaginaryValueInBin, U"Spectrum: Set imaginary value in bin", nullptr)
 	NATURAL (U"Bin number", U"100")
 	REAL (U"Value", U"0.0")
 	OK
@@ -6248,12 +6729,12 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoSpectrum thee = Spectrum_shiftFrequencies (me, shiftBy, newMaximumFrequency, precision);
-		praat_new (thee.transfer(), my name, (shiftBy < 0 ? U"_m" : U"_"), (long) floor (shiftBy));
+		praat_new (thee.move(), my name, (shiftBy < 0 ? U"_m" : U"_"), (long) floor (shiftBy));
 	}
 END
 
 DIRECT (Spectra_multiply)
-	Spectrum s1 = 0, s2 = 0;
+	Spectrum s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Spectrum);
 		(s1 ? s2 : s1) = me;
@@ -6262,7 +6743,7 @@ DIRECT (Spectra_multiply)
 	praat_new (Spectra_multiply (s1, s2), Thing_getName (s1), U"_x_", Thing_getName (s2));
 END
 
-FORM (Spectrum_resample, U"Spectrum: Resample", 0)
+FORM (Spectrum_resample, U"Spectrum: Resample", nullptr)
 	NATURAL (U"New number of frequencies", U"256")
 	OK
 DO
@@ -6270,16 +6751,16 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoSpectrum thee = Spectrum_resample (me, numberOfFrequencies);
-		praat_new (thee.transfer(), my name, U"_", numberOfFrequencies);
+		praat_new (thee.move(), my name, U"_", numberOfFrequencies);
 	}
 END
 
-FORM (Spectrum_compressFrequencyDomain, U"Spectrum: Compress frequency domain", 0)
+FORM (Spectrum_compressFrequencyDomain, U"Spectrum: Compress frequency domain", nullptr)
 	POSITIVE (U"Maximum frequency (Hz)", U"5000.0")
 	INTEGER (U"Interpolation depth", U"50")
 	RADIO (U"Interpolation scale", 1)
-	RADIOBUTTON (U"Linear")
-	RADIOBUTTON (U"Logarithmic")
+		RADIOBUTTON (U"Linear")
+		RADIOBUTTON (U"Logarithmic")
 	OK
 DO
 	double maximumFrequency = GET_REAL (U"Maximum frequency");
@@ -6288,7 +6769,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoSpectrum thee = Spectrum_compressFrequencyDomain (me, maximumFrequency, interpolationDepth, freqScale, 1);
-		praat_new (thee.transfer(), my name, U"_", (long) floor (maximumFrequency));
+		praat_new (thee.move(), my name, U"_", (long) floor (maximumFrequency));
 	}
 END
 
@@ -6302,14 +6783,16 @@ END
 DIRECT (Spectrum_to_PowerCepstrum)
 	LOOP {
 		iam (Spectrum);
-		praat_new (Spectrum_to_PowerCepstrum (me), my name);
+		autoPowerCepstrum thee = Spectrum_to_PowerCepstrum (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Spectrum_to_Cepstrum)
 	LOOP {
 		iam (Spectrum);
-		praat_new (Spectrum_to_Cepstrum (me), my name);
+		autoCepstrum thee = Spectrum_to_Cepstrum (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -6320,12 +6803,12 @@ DIRECT (SpeechSynthesizer_help)
 END
 
 FORM (SpeechSynthesizer_create, U"Create SpeechSynthesizer", U"Create SpeechSynthesizer...")
-	long prefVoice = Strings_findString (espeakdata_voices_names, U"English");
+	long prefVoice = Strings_findString (espeakdata_voices_names.get(), U"English");
 	if (prefVoice == 0) {
 		prefVoice = 1;
 	}
 	LIST (U"Language", espeakdata_voices_names -> numberOfStrings, (const char32 **) espeakdata_voices_names -> strings, prefVoice)
-	long prefVariant = Strings_findString (espeakdata_variants_names, U"default");
+	long prefVariant = Strings_findString (espeakdata_variants_names.get(), U"default");
 	LIST (U"Voice variant", espeakdata_variants_names -> numberOfStrings,
 		(const char32 **) espeakdata_variants_names -> strings, prefVariant)
 	OK
@@ -6334,7 +6817,7 @@ DO
 	long variantIndex = GET_INTEGER (U"Voice variant"); // default is not in the list!
 	autoSpeechSynthesizer me = SpeechSynthesizer_create (espeakdata_voices_names -> strings[voiceIndex],
 		espeakdata_variants_names -> strings[variantIndex]);
-    praat_new (me.transfer(),  espeakdata_voices_names -> strings[voiceIndex], U"_",
+    praat_new (me.move(),  espeakdata_voices_names -> strings[voiceIndex], U"_",
         espeakdata_variants_names -> strings[variantIndex]);
 END
 
@@ -6351,22 +6834,22 @@ END
 
 FORM (SpeechSynthesizer_to_Sound, U"SpeechSynthesizer: To Sound", U"SpeechSynthesizer: To Sound...")
 	TEXTFIELD (U"Text", U"This is some text.")
-	BOOLEAN (U"Create TextGrid with annotations", 0);
+	BOOLEAN (U"Create TextGrid with annotations", false);
 	OK
 DO
 	const char32 *text = GET_STRING (U"Text");
 	bool createTextGrid = GET_INTEGER (U"Create TextGrid with annotations");
 	LOOP {
 		iam (SpeechSynthesizer);
-		TextGrid tg = 0; Table t = 0;
-		autoSound thee = SpeechSynthesizer_to_Sound (me, text, (createTextGrid ? &tg : NULL), (Melder_debug == -2 ? &t : NULL));
-		autoTextGrid atg = tg; autoTable atr = t;
-		praat_new (thee.transfer(), my name);
+		autoTextGrid tg;
+		autoTable t;
+		autoSound thee = SpeechSynthesizer_to_Sound (me, text, (createTextGrid ? & tg : nullptr), (Melder_debug == -2 ? & t : nullptr ));
+		praat_new (thee.move(), my name);
 		if (createTextGrid) {
-			praat_new (atg.transfer(), my name);
+			praat_new (tg.move(), my name);
 		}
 		if (Melder_debug == -2) {
-			praat_new (atr.transfer(), my name);
+			praat_new (t.move(), my name);
 		}
 	}
 END
@@ -6387,11 +6870,11 @@ END
 
 FORM (SpeechSynthesizer_setTextInputSettings, U"SpeechSynthesizer: Set text input settings", U"SpeechSynthesizer: Set text input settings...")
 	OPTIONMENU (U"Input text format is", 1)
-	OPTION (U"Text only")
-	OPTION (U"Phoneme codes only")
-	OPTION (U"Mixed with tags")
+		OPTION (U"Text only")
+		OPTION (U"Phoneme codes only")
+		OPTION (U"Mixed with tags")
 	OPTIONMENU (U"Input phoneme codes are", 1)
-	OPTION (U"Kirshenbaum_espeak")
+		OPTION (U"Kirshenbaum_espeak")
 	OK
 DO
 	int inputTextFormat = GET_INTEGER (U"Input text format is");
@@ -6403,15 +6886,15 @@ DO
 END
 
 FORM (SpeechSynthesizer_setSpeechOutputSettings, U"SpeechSynthesizer: Set speech output settings", U"SpeechSynthesizer: Set speech output settings...")
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	REAL (U"Gap between words (s)", U"0.01")
 	INTEGER (U"Pitch adjustment (0-99)", U"50")
 	INTEGER (U"Pitch range (0-99)", U"50");
 	NATURAL (U"Words per minute (80-450)", U"175");
-	BOOLEAN (U"Estimate rate from data", 1);
+	BOOLEAN (U"Estimate rate from data", true);
 	OPTIONMENU (U"Output phoneme codes are", 2)
-	OPTION (U"Kirshenbaum_espeak")
-	OPTION (U"IPA")
+		OPTION (U"Kirshenbaum_espeak")
+		OPTION (U"IPA")
 	OK
 DO
 	double samplingFrequency = GET_REAL (U"Sampling frequency");
@@ -6435,25 +6918,25 @@ END
 
 /************* SpeechSynthesizer and TextGrid ************************/
 
-FORM (SpeechSynthesizer_and_TextGrid_to_Sound, U"SpeechSynthesizer & TextGrid: To Sound", 0)
+FORM (SpeechSynthesizer_and_TextGrid_to_Sound, U"SpeechSynthesizer & TextGrid: To Sound", nullptr)
 	NATURAL (U"Tier number", U"1")
 	NATURAL (U"Interval number", U"1")
-	BOOLEAN (U"Create TextGrid with annotations", 0);
+	BOOLEAN (U"Create TextGrid with annotations", false);
 	OK
 DO
-	bool createTextGrid = GET_INTEGER (U"Create TextGrid with annotations");
+	bool createAnnotations = GET_INTEGER (U"Create TextGrid with annotations");
 	SpeechSynthesizer me = FIRST (SpeechSynthesizer);
-	TextGrid thee = FIRST (TextGrid), tg = 0;
+	TextGrid thee = FIRST (TextGrid);
+	autoTextGrid annotations;
 	autoSound him = SpeechSynthesizer_and_TextGrid_to_Sound (me, thee, GET_INTEGER (U"Tier number"),
-		GET_INTEGER (U"Interval number"), (createTextGrid ? &tg : NULL));
-	autoTextGrid atg = tg;
-	praat_new (him.transfer(), my name);
-	if (createTextGrid) {
-		praat_new (atg.transfer(), my name);
+		GET_INTEGER (U"Interval number"), ( createAnnotations ? & annotations : nullptr ));
+	praat_new (him.move(), my name);
+	if (createAnnotations) {
+		praat_new (annotations.move(), my name);
 	}
 END
 
-FORM (SpeechSynthesizer_and_Sound_and_TextGrid_align, U"SpeechSynthesizer & Sound & TextGrid: To TextGrid (align)", 0)
+FORM (SpeechSynthesizer_and_Sound_and_TextGrid_align, U"SpeechSynthesizer & Sound & TextGrid: To TextGrid (align)", nullptr)
 	NATURAL (U"Tier number", U"1")
 	NATURAL (U"From interval number", U"1")
 	NATURAL (U"To interval number", U"1")
@@ -6471,10 +6954,10 @@ DO
 	autoTextGrid thee = SpeechSynthesizer_and_Sound_and_TextGrid_align (synth, s, tg,
 		GET_INTEGER (U"Tier number"), GET_INTEGER (U"From interval number"),
 		GET_INTEGER (U"To interval number"), silenceThreshold, minSilenceDuration, minSoundingDuration);
-	praat_new (thee.transfer(), s -> name, U"_aligned");
+	praat_new (thee.move(), s -> name, U"_aligned");
 END
 
-FORM (SpeechSynthesizer_and_Sound_and_TextGrid_align2, U"SpeechSynthesizer & Sound & TextGrid: To TextGrid (align, trim)", 0)
+FORM (SpeechSynthesizer_and_Sound_and_TextGrid_align2, U"SpeechSynthesizer & Sound & TextGrid: To TextGrid (align, trim)", nullptr)
     NATURAL (U"Tier number", U"1")
     NATURAL (U"From interval number", U"1")
     NATURAL (U"To interval number", U"1")
@@ -6488,8 +6971,8 @@ DO
     double minSilenceDuration = GET_REAL (U"Minimum silent interval duration");
     double minSoundingDuration = GET_REAL (U"Minimum sounding interval duration");
     double trimDuration = GET_REAL (U"Silence trim duration");
-    if (trimDuration < 0) {
-        trimDuration = 0;
+    if (trimDuration < 0.0) {
+        trimDuration = 0.0;
     }
     SpeechSynthesizer synth = FIRST (SpeechSynthesizer);
     Sound s = FIRST (Sound);
@@ -6497,17 +6980,17 @@ DO
     autoTextGrid thee = SpeechSynthesizer_and_Sound_and_TextGrid_align2 (synth, s, tg,
         GET_INTEGER (U"Tier number"), GET_INTEGER (U"From interval number"),
         GET_INTEGER (U"To interval number"), silenceThreshold, minSilenceDuration, minSoundingDuration, trimDuration);
-    praat_new (thee.transfer(), s -> name, U"_aligned");
+    praat_new (thee.move(), s -> name, U"_aligned");
 END
 
 /************* Spline *************************************************/
 
-FORM (Spline_drawKnots, U"Spline: Draw knots", 0)
+FORM (Spline_drawKnots, U"Spline: Draw knots", nullptr)
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	LOOP {
@@ -6545,7 +7028,7 @@ END
 
 DIRECT (SSCP_help) Melder_help (U"SSCP"); END
 
-FORM (SSCP_drawConfidenceEllipse, U"SSCP: Draw confidence ellipse", 0)
+FORM (SSCP_drawConfidenceEllipse, U"SSCP: Draw confidence ellipse", nullptr)
 	POSITIVE (U"Confidence level", U"0.95")
 	NATURAL (U"Index for X-axis", U"1")
 	NATURAL (U"Index for Y-axis", U"2")
@@ -6553,16 +7036,16 @@ FORM (SSCP_drawConfidenceEllipse, U"SSCP: Draw confidence ellipse", 0)
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (SSCP);
 		SSCP_drawConcentrationEllipse (me, GRAPHICS, GET_REAL (U"Confidence level"), 1,
-		GET_INTEGER (U"Index for X-axis"), GET_INTEGER (U"Index for Y-axis"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
+			GET_INTEGER (U"Index for X-axis"), GET_INTEGER (U"Index for Y-axis"),
+			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -6574,16 +7057,16 @@ FORM (SSCP_drawSigmaEllipse, U"SSCP: Draw sigma ellipse", U"SSCP: Draw sigma ell
 	REAL (U"right Horizontal range", U"0.0")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (SSCP);
 		SSCP_drawConcentrationEllipse (me, GRAPHICS, GET_REAL (U"Number of sigmas"), 0,
-		GET_INTEGER (U"Index for X-axis"), GET_INTEGER (U"Index for Y-axis"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
+			GET_INTEGER (U"Index for X-axis"), GET_INTEGER (U"Index for Y-axis"),
+			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -6617,7 +7100,7 @@ DO
 	LOOP {
 		iam (SSCP);
 		Melder_information (SSCP_getFractionVariation (me,
-		GET_INTEGER (U"From dimension"), GET_INTEGER (U"To dimension")));
+			GET_INTEGER (U"From dimension"), GET_INTEGER (U"To dimension")));
 	}
 END
 
@@ -6683,20 +7166,19 @@ FORM (SSCP_testDiagonality_bartlett, U"SSCP: Get diagonality (bartlett)", U"SSCP
 	NATURAL (U"Number of contraints", U"1")
 	OK
 DO
-	double chisq, p;
+	double chisq, p, df;
 	long nc = GET_INTEGER (U"Number of contraints");
 	LOOP {
 		iam (SSCP);
-		SSCP_testDiagonality_bartlett (me, nc, &chisq, &p);
-		Melder_information (p, U" (=probability for chisq = ", chisq,
-		U" and ndf = ", my numberOfRows * (my numberOfRows - 1) / 2, U")");
+		SSCP_testDiagonality_bartlett (me, nc, & chisq, & p, & df);
+		Melder_information (p, U" (=probability for chisq = ", chisq, U" and ndf = ", df, U")");
 	}
 END
 
 DIRECT (SSCP_to_Correlation)
 	LOOP {
 		iam (SSCP);
-		praat_new (SSCP_to_Correlation (me), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		praat_new (SSCP_to_Correlation (me), U"");
 	}
 END
 
@@ -6707,45 +7189,53 @@ DO
 	long noc = GET_INTEGER (U"Number of constraints");
 	LOOP {
 		iam (SSCP);
-		praat_new (SSCP_to_Covariance (me, noc), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		praat_new (SSCP_to_Covariance (me, noc), U"");
 	}
 END
 
 DIRECT (SSCP_to_PCA)
 	LOOP {
 		iam (SSCP);
-		praat_new (SSCP_to_PCA (me), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		praat_new (SSCP_to_PCA (me), U"");
 	}
 END
 
 /******************* Strings ****************************/
 DIRECT (Strings_createFromEspeakVoices)
-	praat_new (NULL, U"voices");
+	//praat_new (nullptr, U"voices"); // TODO ??
 END
 
-FORM (Strings_createAsCharacters, U"Strings: Create as characters", 0)
+FORM (Strings_createAsCharacters, U"Strings: Create as characters", nullptr)
 	SENTENCE (U"Text", U"intention")
 	OK
 DO
-	praat_new (Strings_createAsCharacters (GET_STRING (U"Text")), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+	autoStrings thee = Strings_createAsCharacters (GET_STRING (U"Text"));
+	praat_new (thee.move(), U"");
 END
 
-FORM (Strings_createAsTokens, U"Strings: Create as tokens", 0)
+FORM (Strings_createAsTokens, U"Strings: Create as tokens", nullptr)
 	SENTENCE (U"Text", U"There are seven tokens in this text")
 	OK
 DO
-	praat_new (Strings_createAsTokens (GET_STRING (U"Text")), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+	autoStrings thee = Strings_createAsTokens (GET_STRING (U"Text"));
+	praat_new (thee.move(), U"");
 END
 
 DIRECT (Strings_append)
-	autoCollection set = praat_getSelectedObjects ();
-	praat_new (Strings_append (set.transfer()), U"appended");
+	OrderedOf<structStrings> list;
+	LOOP {
+		iam (Strings);
+		list. addItem_ref (me);
+	}
+	autoStrings thee = Strings_append (& list);
+	praat_new (thee.move(), U"appended");
 END
 
 DIRECT (Strings_to_Categories)
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_to_Categories (me), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+		autoCategories thee = Strings_to_Categories (me);
+		praat_new (thee.move(), U"");
 	}
 END
 
@@ -6761,47 +7251,51 @@ DO
 	long nmatches, nstringmatches;
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_change (me, GET_STRING (U"Search"), GET_STRING (U"Replace"),
-		GET_INTEGER (U"Replace limit"), &nmatches, &nstringmatches, GET_INTEGER (U"Search and replace are") - 1), 0);
+		autoStrings thee = Strings_change (me, GET_STRING (U"Search"), GET_STRING (U"Replace"),
+		GET_INTEGER (U"Replace limit"), &nmatches, &nstringmatches, GET_INTEGER (U"Search and replace are") - 1);
+		praat_new (thee.move());
 	}
 END
 
-FORM (Strings_extractPart, U"Strings: Extract part", U"")
+FORM (Strings_extractPart, U"Strings: Extract part", nullptr)
 	NATURAL (U"From index", U"1")
 	NATURAL (U"To index", U"1")
 	OK
 DO
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_extractPart (me, GET_INTEGER (U"From index"), GET_INTEGER (U"To index")), my name, U"_part");
+		autoStrings thee = Strings_extractPart (me, GET_INTEGER (U"From index"), GET_INTEGER (U"To index"));
+		praat_new (thee.move(), my name, U"_part");
 	}
 END
 
 DIRECT (Strings_to_EditDistanceTable)
-	Strings s1 = NULL, s2 = NULL;
+	Strings s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam(Strings);
 		(s1 ? s2 : s1) = me;
 	}
-	Melder_assert (s1 != NULL && s2 != NULL);
+	Melder_assert (s1 && s2);
 	autoEditDistanceTable table = EditDistanceTable_create (s1, s2);
-	praat_new (table.transfer(), s1 -> name, U"_", s2 -> name);
+	praat_new (table.move(), s1 -> name, U"_", s2 -> name);
 END
 
 FORM (Strings_to_Permutation, U"Strings: To Permutation", U"Strings: To Permutation...")
-	BOOLEAN (U"Sort", 1)
+	BOOLEAN (U"Sort", true)
 	OK
 DO
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_to_Permutation (me, GET_INTEGER (U"Sort")), my name);
+		autoPermutation thee = Strings_to_Permutation (me, GET_INTEGER (U"Sort"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (Strings_and_Permutation_permuteStrings)
 	Strings me = FIRST (Strings);
 	Permutation p = FIRST (Permutation);
-	praat_new (Strings_and_Permutation_permuteStrings (me, p), my name, U"_", p->name);
+	autoStrings thee = Strings_and_Permutation_permuteStrings (me, p);
+	praat_new (thee.move(), my name, U"_", p->name);
 END
 
 FORM (SVD_to_TableOfReal, U"SVD: To TableOfReal", U"SVD: To TableOfReal...")
@@ -6811,28 +7305,32 @@ FORM (SVD_to_TableOfReal, U"SVD: To TableOfReal", U"SVD: To TableOfReal...")
 DO
 	LOOP {
 		iam (SVD);
-		praat_new (SVD_to_TableOfReal (me, GET_INTEGER (U"First component"), GET_INTEGER (U"Last component")), my name);
+		autoTableOfReal thee = SVD_to_TableOfReal (me, GET_INTEGER (U"First component"), GET_INTEGER (U"Last component"));
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (SVD_extractLeftSingularVectors)
 	LOOP {
 		iam (SVD);
-		praat_new (SVD_extractLeftSingularVectors (me), Thing_getName (me), U"_lsv");
+		autoTableOfReal thee = SVD_extractLeftSingularVectors (me);
+		praat_new (thee.move(), my name, U"_lsv");
 	}
 END
 
 DIRECT (SVD_extractRightSingularVectors)
 	LOOP {
 		iam (SVD);
-		praat_new (SVD_extractRightSingularVectors (me), Thing_getName (me), U"_rsv");
+		autoTableOfReal thee = SVD_extractRightSingularVectors (me);
+		praat_new (thee.move(), my name, U"_rsv");
 	}
 END
 
 DIRECT (SVD_extractSingularValues)
 	LOOP {
 		iam (SVD);
-		praat_new (SVD_extractSingularValues (me), Thing_getName (me), U"_sv");
+		autoTableOfReal thee = SVD_extractSingularValues (me);
+		praat_new (thee.move(), my name, U"_sv");
 	}
 END
 
@@ -6850,7 +7348,7 @@ DIRECT (Table_createFromWeeninkData)
 	praat_new (Table_createFromWeeninkData (), U"m10w10c10");
 END
 
-FORM (Table_scatterPlotWhere, U"Table: Scatter plot where", 0)
+FORM (Table_scatterPlotWhere, U"Table: Scatter plot where", nullptr)
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -6859,7 +7357,7 @@ FORM (Table_scatterPlotWhere, U"Table: Scatter plot where", 0)
 	REAL (U"right Vertical range", U"0.0 (= auto)")
 	WORD (U"Column with marks", U"")
 	NATURAL (U"Font size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Use only data from rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
 	OK
@@ -6871,14 +7369,14 @@ DO
 		long ycolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Vertical column"));
 		long markColumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Column with marks"));
 		autoTable thee = Table_extractRowsWhere (me,  GET_STRING (U"Formula"), interpreter);
-		Table_scatterPlot (thee.peek(), GRAPHICS, xcolumn, ycolumn,
+		Table_scatterPlot (thee.get(), GRAPHICS, xcolumn, ycolumn,
 			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
 			markColumn, GET_INTEGER (U"Font size"), GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (Table_scatterPlotMarkWhere, U"Scatter plot where (marks)", 0)
+FORM (Table_scatterPlotMarkWhere, U"Scatter plot where (marks)", nullptr)
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -6886,7 +7384,7 @@ FORM (Table_scatterPlotMarkWhere, U"Scatter plot where (marks)", 0)
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
 	POSITIVE (U"Mark size (mm)", U"1.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	SENTENCE (U"Mark string (+xo.)", U"+")
 	LABEL (U"", U"Use only data from rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
@@ -6898,7 +7396,7 @@ DO
 		long xcolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Horizontal column"));
 		long ycolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Vertical column"));
 		autoTable thee = Table_extractRowsWhere (me,  GET_STRING (U"Formula"), interpreter);
-		Table_scatterPlot_mark (thee.peek(), GRAPHICS, xcolumn, ycolumn,
+		Table_scatterPlot_mark (thee.get(), GRAPHICS, xcolumn, ycolumn,
 			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
 			GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
@@ -6916,7 +7414,7 @@ FORM (Table_barPlotWhere, U"Table: Bar plot where", U"Table: Bar plot where...")
 	REAL (U"Distance between bars within group", U"0.0")
 	SENTENCE (U"Colours", U"Grey")
 	REAL (U"Label text angle (degrees)", U"0.0");
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Use only data from rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"row >= 1 and row <= 8")
 	OK
@@ -6940,7 +7438,7 @@ FORM (Table_LineGraphWhere, U"Table: Line graph where", U"Table: Line graph wher
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
 	WORD (U"Text", U"+")
 	REAL (U"Label text angle (degrees)", U"0.0");
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Use only data from rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; (= everything)")
 	OK
@@ -6957,12 +7455,12 @@ DO
 	}
 END
 
-FORM (Table_boxPlots, U"Table: Box plots", 0)
+FORM (Table_boxPlots, U"Table: Box plots", nullptr)
 	WORD (U"Data columns", U"")
 	WORD (U"Factor column", U"")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -6981,7 +7479,7 @@ FORM (Table_boxPlotsWhere, U"Table: Box plots where", U"Table: Box plots where..
 	WORD (U"Factor column", U"")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	LABEL (U"", U"Use only data in rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
 	OK
@@ -6998,7 +7496,7 @@ DO
 	}
 END
 
-FORM (Table_drawEllipseWhere, U"Draw ellipse (standard deviation)", 0)
+FORM (Table_drawEllipseWhere, U"Draw ellipse (standard deviation)", nullptr)
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -7006,7 +7504,7 @@ FORM (Table_drawEllipseWhere, U"Draw ellipse (standard deviation)", 0)
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
 	POSITIVE (U"Number of sigmas", U"2.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Use only data in rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
 	OK
@@ -7017,14 +7515,14 @@ DO
 		long xcolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Horizontal column"));
 		long ycolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Vertical column"));
 		autoTable thee = Table_extractRowsWhere (me, GET_STRING (U"Formula"), interpreter);
-		Table_drawEllipse_e (thee.peek(), GRAPHICS, xcolumn, ycolumn,
+		Table_drawEllipse_e (thee.get(), GRAPHICS, xcolumn, ycolumn,
 			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
 			GET_REAL (U"Number of sigmas"), GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (Table_drawEllipses, U"Table: Draw ellipses", 0)
+FORM (Table_drawEllipses, U"Table: Draw ellipses", nullptr)
 	WORD (U"Horizontal column", U"F2")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -7034,7 +7532,7 @@ FORM (Table_drawEllipses, U"Table: Draw ellipses", 0)
 	WORD (U"Factor column", U"Vowel")
 	POSITIVE (U"Number of sigmas", U"1.0")
 	NATURAL (U"Font size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -7049,7 +7547,7 @@ DO
 	}
 END
 
-FORM (Table_drawEllipsesWhere, U"Table: Draw ellipses where", 0)
+FORM (Table_drawEllipsesWhere, U"Table: Draw ellipses where", nullptr)
 	WORD (U"Horizontal column", U"F2")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -7059,7 +7557,7 @@ FORM (Table_drawEllipsesWhere, U"Table: Draw ellipses where", 0)
 	WORD (U"Factor column", U"Vowel")
 	POSITIVE (U"Number of sigmas", U"1.0")
 	NATURAL (U"Font size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"Use only data in rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
 	
@@ -7084,7 +7582,7 @@ FORM (Table_normalProbabilityPlot, U"Table: Normal probability plot", U"Table: N
 	REAL (U"Number of sigmas", U"0.0")
 	NATURAL (U"Label size", U"12")
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -7103,7 +7601,7 @@ FORM (Table_normalProbabilityPlotWhere, U"Table: Normal probability plot where",
 	REAL (U"Number of sigmas", U"0.0")
 	NATURAL (U"Label size", U"12")
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	LABEL (U"", U"Use only data in rows where the following condition holds:")
 	TEXTFIELD (U"Formula", U"1; self$[\"gender\"]=\"male\"")
 	OK
@@ -7113,7 +7611,7 @@ DO
 		iam (Table);
 		long column = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Column"));
 		autoTable thee = Table_extractRowsWhere (me, GET_STRING (U"Formula"), interpreter);
-		Table_normalProbabilityPlot (thee.peek(), GRAPHICS, column,
+		Table_normalProbabilityPlot (thee.get(), GRAPHICS, column,
 			GET_INTEGER (U"Number of quantiles"), GET_REAL (U"Number of sigmas"),
 			GET_INTEGER (U"Label size"), GET_STRING (U"Label"), GET_INTEGER (U"Garnish"));
 	}
@@ -7129,7 +7627,7 @@ FORM (Table_quantileQuantilePlot, U"Table: Quantile-quantile plot", U"Table: Qua
 	REAL (U"right Vertical range", U"0.0")
 	NATURAL (U"Label size", U"12")
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -7138,9 +7636,9 @@ DO
 		long xcolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Horizontal axis column"));
 		long ycolumn = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Vertical axis column"));
 		Table_quantileQuantilePlot (me, GRAPHICS, xcolumn, ycolumn, GET_INTEGER (U"Number of quantiles"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_STRING (U"Label"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"), GET_STRING (U"Label"), GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7385,7 +7883,7 @@ DO
 	LOOP {
 		iam (Table);
 		autoTable thee = Table_extractRowsWhere (me, GET_STRING (U"Formula"), interpreter);
-		praat_new (thee.transfer(), my name, U"_formula");
+		praat_new (thee.move(), my name, U"_formula");
 	}
 END
 
@@ -7404,7 +7902,7 @@ DO
 		autoTable thee = Table_extractMahalanobisWhere(me, GET_STRING (U"Extract all rows where columns..."), 
 		   GET_STRING (U"Factor column"), numberOfSigmas, GET_ENUM (kMelder_number, U"...have a mahalanobis distance..."),
 		   GET_STRING (U"Formula"), interpreter);
-		praat_new (thee.transfer(), my name, U"_mahalanobis");
+		praat_new (thee.move(), my name, U"_mahalanobis");
 	}
 END
 
@@ -7417,14 +7915,14 @@ DO
 	LOOP {
 		iam (Table);
 		autoTable thee = Table_extractColumnRanges (me, GET_STRING (U"Ranges"));
-		praat_new (thee.transfer(), my name, U"_columns");
+		praat_new (thee.move(), my name, U"_columns");
 	}
 END
 
 /******************* TableOfReal ****************************/
 
 DIRECT (New_CreateIrisDataset)
-	praat_new (TableOfReal_createIrisDataset (), U"");   // ppgb: geen expliciete NULL meer meegeven (dan krijg je "0" i.p.v. "iris")
+	praat_new (TableOfReal_createIrisDataset (), U"");
 END
 
 FORM (TableOfReal_reportMultivariateNormality, U"TableOfReal: Report multivariate normality (BHEP)", U"TableOfReal: Report multivariate normality (BHEP)...")
@@ -7465,15 +7963,22 @@ DIRECT (TableOfReal_to_Permutation_sortRowlabels)
 END
 
 DIRECT (TableOfReal_appendColumns)
-	autoCollection set = praat_getSelectedObjects ();
-	praat_new (TableOfReal_appendColumnsMany (set.peek()), U"columns_appended");
+	autoTableOfRealList list = TableOfRealList_create ();
+	LOOP {
+		iam (TableOfReal);
+		list -> addItem_ref (me);
+	}
+	autoTableOfReal result = TableOfRealList_appendColumnsMany (list.get());
+	praat_new (result.move(), U"columns_appended");
 END
 
 FORM (TableOfReal_createFromPolsData_50males, U"Create TableOfReal (Pols 1973)", U"Create TableOfReal (Pols 1973)...")
-	BOOLEAN (U"Include formant levels", 0)
+	BOOLEAN (U"Include formant levels", false)
 	OK
 DO
-	praat_new (TableOfReal_createFromPolsData_50males (GET_INTEGER (U"Include formant levels")), U"pols_50males");
+	autoTableOfReal result = TableOfReal_createFromPolsData_50males (
+		GET_INTEGER (U"Include formant levels"));
+	praat_new (result.move(), U"pols_50males");
 END
 
 DIRECT (Table_createFromEspositoData)
@@ -7485,7 +7990,7 @@ DIRECT (Table_createFromGanongData)
 END
 
 FORM (TableOfReal_createFromVanNieropData_25females, U"Create TableOfReal (Van Nierop 1973)...", U"Create TableOfReal (Van Nierop 1973)...")
-	BOOLEAN (U"Include formant levels", 0)
+	BOOLEAN (U"Include formant levels", false)
 	OK
 DO
 	praat_new (TableOfReal_createFromVanNieropData_25females (GET_INTEGER (U"Include formant levels")), U"vannierop_25females");
@@ -7493,9 +7998,9 @@ END
 
 FORM (TableOfReal_createFromWeeninkData, U"Create TableOfReal (Weenink 1985)...", U"Create TableOfReal (Weenink 1985)...")
 	RADIO (U"Speakers group", 1)
-	RADIOBUTTON (U"Men")
-	RADIOBUTTON (U"Women")
-	RADIOBUTTON (U"Children")
+		RADIOBUTTON (U"Men")
+		RADIOBUTTON (U"Women")
+		RADIOBUTTON (U"Children")
 	OK
 DO
 	int type = GET_INTEGER (U"Speakers group");
@@ -7515,21 +8020,27 @@ FORM (TableOfReal_drawScatterPlot, U"TableOfReal: Draw scatter plot", U"TableOfR
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	NATURAL (U"Label size", U"12")
-	BOOLEAN (U"Use row labels", 0)
+	BOOLEAN (U"Use row labels", false)
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (TableOfReal);
 		TableOfReal_drawScatterPlot (me, GRAPHICS,
-		GET_INTEGER (U"Horizontal axis column number"), GET_INTEGER (U"Vertical axis column number"),
-		GET_INTEGER (U"left Row number range"), GET_INTEGER (U"right Row number range"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Use row labels"),
-		GET_STRING (U"Label"), GET_INTEGER (U"Garnish"));
+			GET_INTEGER (U"Horizontal axis column number"),
+			GET_INTEGER (U"Vertical axis column number"),
+			GET_INTEGER (U"left Row number range"),
+			GET_INTEGER (U"right Row number range"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Use row labels"),
+			GET_STRING (U"Label"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7542,8 +8053,10 @@ DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (TableOfReal);
-		TableOfReal_drawScatterPlotMatrix (me, GRAPHICS, GET_INTEGER (U"From column"), GET_INTEGER (U"To column"),
-		GET_REAL (U"Fraction white"));
+		TableOfReal_drawScatterPlotMatrix (me, GRAPHICS,
+			GET_INTEGER (U"From column"),
+			GET_INTEGER (U"To column"),
+			GET_REAL (U"Fraction white"));
 	}
 END
 
@@ -7562,9 +8075,13 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		TableOfReal_drawBiplot (me, GRAPHICS,
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_REAL (U"Split factor"),
-		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_REAL (U"Split factor"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7591,12 +8108,17 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		TableOfReal_drawVectors (me, GRAPHICS,
-		GET_INTEGER (U"left From columns"), GET_INTEGER (U"right From columns"),
-		GET_INTEGER (U"left To columns"), GET_INTEGER (U"right To columns"),
-		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Vector type"), GET_INTEGER (U"Label size"),
-		GET_INTEGER (U"Garnish"));
+			GET_INTEGER (U"left From columns"),
+			GET_INTEGER (U"right From columns"),
+			GET_INTEGER (U"left To columns"),
+			GET_INTEGER (U"right To columns"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Vector type"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7619,11 +8141,15 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		TableOfReal_drawRowsAsHistogram (me, GRAPHICS, GET_STRING (U"Row number"),
-		GET_INTEGER (U"left Column range"), GET_INTEGER (U"right Column range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_REAL (U"Horizontal offset"), 0,
-		GET_REAL (U"Distance between bars"), GET_STRING (U"Grey value"),
-		GET_INTEGER (U"Garnish"));
+			GET_INTEGER (U"left Column range"),
+			GET_INTEGER (U"right Column range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_REAL (U"Horizontal offset"),
+			0,
+			GET_REAL (U"Distance between bars"),
+			GET_STRING (U"Grey value"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7682,7 +8208,7 @@ FORM (TableOfReal_drawColumnAsDistribution, U"TableOfReal: Draw column as distri
 	REAL (U"left Frequency range", U"0.0")
 	REAL (U"right frequency range", U"0.0")
 	NATURAL (U"Number of bins", U"10")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -7690,7 +8216,7 @@ DO
 		iam (TableOfReal);
 		TableOfReal_drawColumnAsDistribution (me, GRAPHICS, GET_INTEGER (U"Column number"),
 		GET_REAL (U"left Value range"), GET_REAL (U"right Value range"), GET_INTEGER (U"Number of bins"),
-		GET_REAL (U"left Frequency range"), GET_REAL (U"right frequency range"), 0, GET_INTEGER (U"Garnish"));
+		GET_REAL (U"left Frequency range"), GET_REAL (U"right frequency range"), false, GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -7704,7 +8230,8 @@ DO
 	}
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_Configuration_lda (me, dimension), my name, U"_lda");
+		autoConfiguration thee = TableOfReal_to_Configuration_lda (me, dimension);
+		praat_new (thee.move(), my name, U"_lda");
 	}
 END
 
@@ -7714,7 +8241,8 @@ FORM (TableOfReal_to_CCA, U"TableOfReal: To CCA", U"TableOfReal: To CCA...")
 DO
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_CCA (me, GET_INTEGER (U"Dimension of dependent variate")), my name);
+		autoCCA thee = TableOfReal_to_CCA (me, GET_INTEGER (U"Dimension of dependent variate"));
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -7724,21 +8252,24 @@ FORM (TableOfReal_to_Configuration_pca, U"TableOfReal: To Configuration (pca)",
 DO
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_Configuration_pca (me, GET_INTEGER (U"Number of dimensions")), my name, U"_pca");
+		autoConfiguration thee = TableOfReal_to_Configuration_pca (me, GET_INTEGER (U"Number of dimensions"));
+		praat_new (thee.move(), my name, U"_pca");
 	}
 END
 
 DIRECT (TableOfReal_to_Discriminant)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_Discriminant (me), my name);
+		autoDiscriminant thee = TableOfReal_to_Discriminant (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-DIRECT (TableOfReal_to_PCA)
+DIRECT (TableOfReal_to_PCA_byRows)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_PCA (me), my name);
+		autoPCA thee = TableOfReal_to_PCA_byRows (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -7793,13 +8324,14 @@ DIRECT (TableOfReal_to_SVD)
 END
 
 DIRECT (TablesOfReal_to_Eigen_gsvd)
-	TableOfReal t1 = 0, t2 = 0;
+	TableOfReal t1 = nullptr, t2 = nullptr;
 	LOOP {
 		iam (TableOfReal);
 		(t1 ? t2 : t1) = me;
 	}
 	Melder_assert (t1 && t2);
-	praat_new (TablesOfReal_to_Eigen_gsvd (t1, t2), U"");
+	autoEigen thee = TablesOfReal_to_Eigen_gsvd (t1, t2);
+	praat_new (thee.move(), U"");
 END
 
 FORM (TableOfReal_and_TableOfReal_crossCorrelations, U"TableOfReal & TableOfReal: Cross-correlations", 0)
@@ -7851,13 +8383,13 @@ FORM (TableOfReal_to_Pattern_and_Categories, U"TableOfReal: To Pattern and Categ
 	DO
 	LOOP {
 		iam (TableOfReal);
-		Pattern p = 0; Categories c = 0;
+		autoPattern ap; 
+		autoCategories ac;
 		TableOfReal_to_Pattern_and_Categories (me, GET_INTEGER (U"left Row range"),
 		GET_INTEGER (U"right Row range"), GET_INTEGER (U"left Column range"),
-		GET_INTEGER (U"right Column range"), &p, &c);
-		autoPattern ap = p; autoCategories ac = c;
-		praat_new (ap.transfer(), Thing_getName (me));
-		praat_new (ac.transfer(), Thing_getName (me));
+		GET_INTEGER (U"right Column range"), & ap, & ac);
+		praat_new (ap.move(), Thing_getName (me));
+		praat_new (ac.move(), Thing_getName (me));
 	}
 END
 
@@ -8020,128 +8552,130 @@ DIRECT (VowelEditor_create)
 	if (theCurrentPraatApplication -> batch) {
 		Melder_throw (U"Cannot edit from batch.");
 	}
-	autoVowelEditor vowelEditor = VowelEditor_create (U"VowelEditor", NULL);
-	vowelEditor.transfer(); // user becomes the owner
+	autoVowelEditor vowelEditor = VowelEditor_create (U"VowelEditor", nullptr);
+	vowelEditor.releaseToUser();
 END
 
-static Any cmuAudioFileRecognizer (int nread, const char *header, MelderFile fs) {
+static autoDaata cmuAudioFileRecognizer (int nread, const char *header, MelderFile file) {
 	return nread < 12 || header [0] != 6 || header [1] != 0 ?
-	       NULL : Sound_readFromCmuAudioFile (fs);
+	       autoSound () : Sound_readFromCmuAudioFile (file);
 }
 
 void praat_CC_init (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"Paint...", 0, 1, DO_CC_paint);
-	praat_addAction1 (klas, 1, U"Draw...", 0, 1, DO_CC_drawC0);
-	praat_addAction1 (klas, 1, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (klas, 1, U"Paint...", nullptr, 1, DO_CC_paint);
+	praat_addAction1 (klas, 1, U"Draw...", nullptr, 1, DO_CC_drawC0);
+	praat_addAction1 (klas, 1, QUERY_BUTTON, nullptr, 0, 0);
 	praat_TimeFrameSampled_query_init (klas);
-	praat_addAction1 (klas, 1, U"Get number of coefficients...", 0, 1, DO_CC_getNumberOfCoefficients);
-	praat_addAction1 (klas, 1, U"Get value in frame...", 0, 1, DO_CC_getValueInFrame);
-	praat_addAction1 (klas, 1, U"Get c0 value in frame...", 0, 1, DO_CC_getC0ValueInFrame);
-	praat_addAction1 (klas, 1, U"Get value...", 0, praat_HIDDEN + praat_DEPTH_1, DO_CC_getValue);
-	praat_addAction1 (klas, 0, U"To Matrix", 0, 0, DO_CC_to_Matrix);
-	praat_addAction1 (klas, 2, U"To DTW...", 0, 0, DO_CCs_to_DTW);
+	praat_addAction1 (klas, 1, U"Get number of coefficients...", nullptr, 1, DO_CC_getNumberOfCoefficients);
+	praat_addAction1 (klas, 1, U"Get value in frame...", nullptr, 1, DO_CC_getValueInFrame);
+	praat_addAction1 (klas, 1, U"Get c0 value in frame...", nullptr, 1, DO_CC_getC0ValueInFrame);
+	praat_addAction1 (klas, 1, U"Get value...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_CC_getValue);
+	praat_addAction1 (klas, 0, U"To Matrix", nullptr, 0, DO_CC_to_Matrix);
+	praat_addAction1 (klas, 2, U"To DTW...", nullptr, 0, DO_CCs_to_DTW);
 }
 
 static void praat_Eigen_Matrix_project (ClassInfo klase, ClassInfo klasm); // deprecated 2014
 static void praat_Eigen_Matrix_project (ClassInfo klase, ClassInfo klasm) {
-	praat_addAction2 (klase, 1, klasm, 1, U"Project...", 0, praat_HIDDEN, DO_Eigen_and_Matrix_project);
+	praat_addAction2 (klase, 1, klasm, 1, U"Project...", nullptr, praat_HIDDEN, DO_Eigen_and_Matrix_projectColumns);
+	praat_addAction2 (klase, 1, klasm, 1, U"To Matrix (project columns)...", nullptr, praat_HIDDEN, DO_Eigen_and_Matrix_projectColumns);
 }
 
 static void praat_Eigen_Spectrogram_project (ClassInfo klase, ClassInfo klasm);
 static void praat_Eigen_Spectrogram_project (ClassInfo klase, ClassInfo klasm) {
-	praat_addAction2 (klase, 1, klasm, 1, U"Project...", 0, 0, DO_Eigen_and_Matrix_project);
+	praat_addAction2 (klase, 1, klasm, 1, U"Project...", nullptr, praat_HIDDEN, DO_Eigen_and_Matrix_projectColumns);
+	praat_addAction2 (klase, 1, klasm, 1, U"To Matrix (project columns)...", nullptr, 0, DO_Eigen_and_Matrix_projectColumns);
 }
 
 static void praat_Eigen_query_init (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"Get eigenvalue...", 0, 1, DO_Eigen_getEigenvalue);
-	praat_addAction1 (klas, 1, U"Get sum of eigenvalues...", 0, 1, DO_Eigen_getSumOfEigenvalues);
-	praat_addAction1 (klas, 1, U"Get number of eigenvectors", 0, 1, DO_Eigen_getNumberOfEigenvalues);
-	praat_addAction1 (klas, 1, U"Get eigenvector dimension", 0, 1, DO_Eigen_getDimension);
-	praat_addAction1 (klas, 1, U"Get eigenvector element...", 0, 1, DO_Eigen_getEigenvectorElement);
+	praat_addAction1 (klas, 1, U"Get eigenvalue...", nullptr, 1, DO_Eigen_getEigenvalue);
+	praat_addAction1 (klas, 1, U"Get sum of eigenvalues...", nullptr, 1, DO_Eigen_getSumOfEigenvalues);
+	praat_addAction1 (klas, 1, U"Get number of eigenvectors", nullptr, 1, DO_Eigen_getNumberOfEigenvalues);
+	praat_addAction1 (klas, 1, U"Get eigenvector dimension", nullptr, 1, DO_Eigen_getDimension);
+	praat_addAction1 (klas, 1, U"Get eigenvector element...", nullptr, 1, DO_Eigen_getEigenvectorElement);
 }
 
 static void praat_Eigen_draw_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, U"Draw eigenvalues...", 0, 1, DO_Eigen_drawEigenvalues);
-	praat_addAction1 (klas, 0, U"Draw eigenvalues (scree)...", 0, praat_DEPTH_1 | praat_HIDDEN, DO_Eigen_drawEigenvalues_scree);
-	praat_addAction1 (klas, 0, U"Draw eigenvector...", 0, 1, DO_Eigen_drawEigenvector);
+	praat_addAction1 (klas, 0, U"Draw eigenvalues...", nullptr, 1, DO_Eigen_drawEigenvalues);
+	praat_addAction1 (klas, 0, U"Draw eigenvalues (scree)...", nullptr, praat_DEPTH_1 | praat_HIDDEN, DO_Eigen_drawEigenvalues_scree);
+	praat_addAction1 (klas, 0, U"Draw eigenvector...", nullptr, 1, DO_Eigen_drawEigenvector);
 }
 
 static void praat_Index_init (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"Get number of classes", 0, 0, DO_Index_getNumberOfClasses);
-	praat_addAction1 (klas, 1, U"To Permutation...", 0, 0, DO_Index_to_Permutation);
-	praat_addAction1 (klas, 1, U"Extract part...", 0, 0, DO_Index_extractPart);
+	praat_addAction1 (klas, 1, U"Get number of classes", nullptr, 0, DO_Index_getNumberOfClasses);
+	praat_addAction1 (klas, 1, U"To Permutation...", nullptr, 0, DO_Index_to_Permutation);
+	praat_addAction1 (klas, 1, U"Extract part...", nullptr, 0, DO_Index_extractPart);
 }
 
 static void praat_BandFilterSpectrogram_draw_init (ClassInfo klas);
 static void praat_BandFilterSpectrogram_draw_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, DRAW_BUTTON, 0, 0, 0);
-//	praat_addAction1 (klas, 0, U"Paint image...", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_paintImage);
-//	praat_addAction1 (klas, 0, U"Draw filters...", 0, 1, DO_FilterBank_drawFilters);
-//	praat_addAction1 (klas, 0, U"Draw one contour...", 0, 1, DO_FilterBank_drawOneContour);
-//	praat_addAction1 (klas, 0, U"Draw contours...", 0, 1, DO_FilterBank_drawContours);
-//	praat_addAction1 (klas, 0, U"Paint contours...", 0, 1, DO_FilterBank_paintContours);
-//	praat_addAction1 (klas, 0, U"Paint cells...", 0, 1, DO_FilterBank_paintCells);
-//	praat_addAction1 (klas, 0, U"Paint surface...", 0, 1, DO_FilterBank_paintSurface);
-	praat_addAction1 (klas, 0, U"-- frequency scales --", 0, 1, 0);
-	praat_addAction1 (klas, 0, U"Draw frequency scale...", 0, 1, DO_BandFilterSpectrogram_drawFrequencyScale);
+	praat_addAction1 (klas, 0, DRAW_BUTTON, nullptr, 0, nullptr);
+//	praat_addAction1 (klas, 0, U"Paint image...", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_paintImage);
+//	praat_addAction1 (klas, 0, U"Draw filters...", nullptr, 1, DO_FilterBank_drawFilters);
+//	praat_addAction1 (klas, 0, U"Draw one contour...", nullptr, 1, DO_FilterBank_drawOneContour);
+//	praat_addAction1 (klas, 0, U"Draw contours...", nullptr, 1, DO_FilterBank_drawContours);
+//	praat_addAction1 (klas, 0, U"Paint contours...", nullptr, 1, DO_FilterBank_paintContours);
+//	praat_addAction1 (klas, 0, U"Paint cells...", nullptr, 1, DO_FilterBank_paintCells);
+//	praat_addAction1 (klas, 0, U"Paint surface...", nullptr, 1, DO_FilterBank_paintSurface);
+	praat_addAction1 (klas, 0, U"-- frequency scales --", nullptr, 1, nullptr);
+	praat_addAction1 (klas, 0, U"Draw frequency scale...", nullptr, 1, DO_BandFilterSpectrogram_drawFrequencyScale);
 }
 
 void praat_Matrixft_query_init (ClassInfo klas);
 void praat_Matrixft_query_init (ClassInfo klas) {
 	praat_TimeFrameSampled_query_init (klas);
-	praat_addAction1 (klas, 1, U"Get time from column...", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getXofColumn);
-	praat_addAction1 (klas, 1, U"-- frequencies --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 1, U"Get lowest frequency", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getLowestFrequency);
-	praat_addAction1 (klas, 1, U"Get highest frequency", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getHighestFrequency);
-	praat_addAction1 (klas, 1, U"Get number of frequencies", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getNumberOfFrequencies);
-	praat_addAction1 (klas, 1, U"Get frequency distance", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getFrequencyDistance);
-	praat_addAction1 (klas, 1, U"Get frequency from row...", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getFrequencyOfRow);
-	praat_addAction1 (klas, 1, U"-- get value --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 1, U"Get value in cell...", 0, praat_DEPTH_1, DO_BandFilterSpectrogram_getValueInCell);
+	praat_addAction1 (klas, 1, U"Get time from column...", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getXofColumn);
+	praat_addAction1 (klas, 1, U"-- frequencies --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 1, U"Get lowest frequency", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getLowestFrequency);
+	praat_addAction1 (klas, 1, U"Get highest frequency", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getHighestFrequency);
+	praat_addAction1 (klas, 1, U"Get number of frequencies", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getNumberOfFrequencies);
+	praat_addAction1 (klas, 1, U"Get frequency distance", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getFrequencyDistance);
+	praat_addAction1 (klas, 1, U"Get frequency from row...", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getFrequencyOfRow);
+	praat_addAction1 (klas, 1, U"-- get value --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 1, U"Get value in cell...", nullptr, praat_DEPTH_1, DO_BandFilterSpectrogram_getValueInCell);
 }
 
 void praat_Matrixtype_query_init (ClassInfo klas);
 void praat_Matrixtype_query_init (ClassInfo klas) {
 	praat_TimeFrameSampled_query_init (klas);
-	praat_addAction1 (klas, 1, U"Get time from column...", 0, praat_DEPTH_1, DO_FilterBank_getXofColumn);
-	praat_addAction1 (klas, 1, U"-- frequencies --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 1, U"Get lowest frequency", 0, praat_DEPTH_1, DO_FilterBank_getLowestFrequency);
-	praat_addAction1 (klas, 1, U"Get highest frequency", 0, praat_DEPTH_1, DO_FilterBank_getHighestFrequency);
-	praat_addAction1 (klas, 1, U"Get number of frequencies", 0, praat_DEPTH_1, DO_FilterBank_getNumberOfFrequencies);
-	praat_addAction1 (klas, 1, U"Get frequency distance", 0, praat_DEPTH_1, DO_FilterBank_getFrequencyDistance);
-	praat_addAction1 (klas, 1, U"Get frequency from row...", 0, praat_DEPTH_1, DO_FilterBank_getFrequencyOfRow);
-	praat_addAction1 (klas, 1, U"-- get value --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 1, U"Get value in cell...", 0, praat_DEPTH_1, DO_FilterBank_getValueInCell);
+	praat_addAction1 (klas, 1, U"Get time from column...", nullptr, praat_DEPTH_1, DO_FilterBank_getXofColumn);
+	praat_addAction1 (klas, 1, U"-- frequencies --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 1, U"Get lowest frequency", nullptr, praat_DEPTH_1, DO_FilterBank_getLowestFrequency);
+	praat_addAction1 (klas, 1, U"Get highest frequency", nullptr, praat_DEPTH_1, DO_FilterBank_getHighestFrequency);
+	praat_addAction1 (klas, 1, U"Get number of frequencies", nullptr, praat_DEPTH_1, DO_FilterBank_getNumberOfFrequencies);
+	praat_addAction1 (klas, 1, U"Get frequency distance", nullptr, praat_DEPTH_1, DO_FilterBank_getFrequencyDistance);
+	praat_addAction1 (klas, 1, U"Get frequency from row...", nullptr, praat_DEPTH_1, DO_FilterBank_getFrequencyOfRow);
+	praat_addAction1 (klas, 1, U"-- get value --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 1, U"Get value in cell...", nullptr, praat_DEPTH_1, DO_FilterBank_getValueInCell);
 }
 
 static void praat_FilterBank_query_init (ClassInfo klas);
 static void praat_FilterBank_query_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (klas, 0, QUERY_BUTTON, nullptr, 0, 0);
 	praat_Matrixtype_query_init (klas);
-	praat_addAction1 (klas, 0, U"-- frequency scales --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 1, U"Get frequency in Hertz...", 0, praat_DEPTH_1, DO_FilterBank_getFrequencyInHertz);
-	praat_addAction1 (klas, 1, U"Get frequency in Bark...", 0, praat_DEPTH_1, DO_FilterBank_getFrequencyInBark);
-	praat_addAction1 (klas, 1, U"Get frequency in mel...", 0, praat_DEPTH_1, DO_FilterBank_getFrequencyInMel);
+	praat_addAction1 (klas, 0, U"-- frequency scales --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 1, U"Get frequency in Hertz...", nullptr, praat_DEPTH_1, DO_FilterBank_getFrequencyInHertz);
+	praat_addAction1 (klas, 1, U"Get frequency in Bark...", nullptr, praat_DEPTH_1, DO_FilterBank_getFrequencyInBark);
+	praat_addAction1 (klas, 1, U"Get frequency in mel...", nullptr, praat_DEPTH_1, DO_FilterBank_getFrequencyInMel);
 }
 
 static void praat_FilterBank_modify_init (ClassInfo klas);
 static void praat_FilterBank_modify_init (ClassInfo klas) {
-	// praat_addAction1 (klas, 0, MODIFY_BUTTON, 0, 0, 0); 
-	praat_addAction1 (klas, 0, U"Equalize intensities...", 0, praat_DEPTH_1, DO_FilterBank_equalizeIntensities);
+	// praat_addAction1 (klas, 0, MODIFY_BUTTON, nullptr, 0, 0); 
+	praat_addAction1 (klas, 0, U"Equalize intensities...", nullptr, praat_DEPTH_1, DO_FilterBank_equalizeIntensities);
 }
 
 static void praat_FilterBank_draw_init (ClassInfo klas);
 static void praat_FilterBank_draw_init (ClassInfo klas) {
 	// praat_addAction1 (klas, 0, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction1 (klas, 0, U"Draw filters...", 0, praat_DEPTH_1, DO_FilterBank_drawFilters);
-	praat_addAction1 (klas, 0, U"Draw one contour...", 0, praat_DEPTH_1, DO_FilterBank_drawOneContour);
-	praat_addAction1 (klas, 0, U"Draw contours...", 0, praat_DEPTH_1, DO_FilterBank_drawContours);
-	praat_addAction1 (klas, 0, U"Paint image...", 0, praat_DEPTH_1, DO_FilterBank_paintImage);
-	praat_addAction1 (klas, 0, U"Paint contours...", 0, praat_DEPTH_1, DO_FilterBank_paintContours);
-	praat_addAction1 (klas, 0, U"Paint cells...", 0, praat_DEPTH_1, DO_FilterBank_paintCells);
-	praat_addAction1 (klas, 0, U"Paint surface...", 0, praat_DEPTH_1, DO_FilterBank_paintSurface);
-	praat_addAction1 (klas, 0, U"-- frequency scales --", 0, praat_DEPTH_1, 0);
-	praat_addAction1 (klas, 0, U"Draw frequency scales...", 0, praat_DEPTH_1, DO_FilterBank_drawFrequencyScales);
+	praat_addAction1 (klas, 0, U"Draw filters...", nullptr, praat_DEPTH_1, DO_FilterBank_drawFilters);
+	praat_addAction1 (klas, 0, U"Draw one contour...", nullptr, praat_DEPTH_1, DO_FilterBank_drawOneContour);
+	praat_addAction1 (klas, 0, U"Draw contours...", nullptr, praat_DEPTH_1, DO_FilterBank_drawContours);
+	praat_addAction1 (klas, 0, U"Paint image...", nullptr, praat_DEPTH_1, DO_FilterBank_paintImage);
+	praat_addAction1 (klas, 0, U"Paint contours...", nullptr, praat_DEPTH_1, DO_FilterBank_paintContours);
+	praat_addAction1 (klas, 0, U"Paint cells...", nullptr, praat_DEPTH_1, DO_FilterBank_paintCells);
+	praat_addAction1 (klas, 0, U"Paint surface...", nullptr, praat_DEPTH_1, DO_FilterBank_paintSurface);
+	praat_addAction1 (klas, 0, U"-- frequency scales --", nullptr, praat_DEPTH_1, 0);
+	praat_addAction1 (klas, 0, U"Draw frequency scales...", nullptr, praat_DEPTH_1, DO_FilterBank_drawFrequencyScales);
 }
 
 static void praat_FilterBank_all_init (ClassInfo klas);
@@ -8149,45 +8683,45 @@ static void praat_FilterBank_all_init (ClassInfo klas) {
 	praat_FilterBank_draw_init (klas);
 	praat_FilterBank_query_init (klas);
 	praat_FilterBank_modify_init (klas);
-	praat_addAction1 (klas, 0, U"To Intensity", 0, praat_HIDDEN, DO_FilterBank_to_Intensity);
-	praat_addAction1 (klas, 0, U"To Matrix", 0, praat_HIDDEN, DO_FilterBank_to_Matrix);
-	praat_addAction1 (klas, 2, U"Cross-correlate...", 0, praat_HIDDEN, DO_FilterBanks_crossCorrelate);
-	praat_addAction1 (klas, 2, U"Convolve...", 0, praat_HIDDEN, DO_FilterBanks_convolve);
+	praat_addAction1 (klas, 0, U"To Intensity", nullptr, praat_HIDDEN, DO_FilterBank_to_Intensity);
+	praat_addAction1 (klas, 0, U"To Matrix", nullptr, praat_HIDDEN, DO_FilterBank_to_Matrix);
+	praat_addAction1 (klas, 2, U"Cross-correlate...", nullptr, praat_HIDDEN, DO_FilterBanks_crossCorrelate);
+	praat_addAction1 (klas, 2, U"Convolve...", nullptr, praat_HIDDEN, DO_FilterBanks_convolve);
 }
 
 static void praat_FunctionTerms_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction1 (klas, 0, U"Draw...", 0, 1, DO_FunctionTerms_draw);
-	praat_addAction1 (klas, 0, U"Draw basis function...", 0, 1, DO_FunctionTerms_drawBasisFunction);
-	praat_addAction1 (klas, 0, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (klas, 1, U"Get number of coefficients", 0, 1, DO_FunctionTerms_getNumberOfCoefficients);
-	praat_addAction1 (klas, 1, U"Get coefficient...", 0, 1, DO_FunctionTerms_getCoefficient);
-	praat_addAction1 (klas, 1, U"Get degree", 0, 1, DO_FunctionTerms_getDegree);
-	praat_addAction1 (klas, 0, U"-- function specifics --", 0, 1, 0);
-	praat_addAction1 (klas, 1, U"Get value...", 0, 1, DO_FunctionTerms_evaluate);
-	praat_addAction1 (klas, 1, U"Get minimum...", 0, 1, DO_FunctionTerms_getMinimum);
-	praat_addAction1 (klas, 1, U"Get x of minimum...", 0, 1, DO_FunctionTerms_getXOfMinimum);
-	praat_addAction1 (klas, 1, U"Get maximum...", 0, 1, DO_FunctionTerms_getMaximum);
-	praat_addAction1 (klas, 1, U"Get x of maximum...", 0, 1, DO_FunctionTerms_getXOfMaximum);
-	praat_addAction1 (klas, 0, U"Modify -", 0, 0, 0);
-	praat_addAction1 (klas, 1, U"Set domain...", 0, 1, DO_FunctionTerms_setDomain);
-	praat_addAction1 (klas, 1, U"Set coefficient...", 0, 1, DO_FunctionTerms_setCoefficient);
-	praat_addAction1 (klas, 0, U"Analyse", 0, 0, 0);
+	praat_addAction1 (klas, 0, DRAW_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (klas, 0, U"Draw...", nullptr, 1, DO_FunctionTerms_draw);
+	praat_addAction1 (klas, 0, U"Draw basis function...", nullptr, 1, DO_FunctionTerms_drawBasisFunction);
+	praat_addAction1 (klas, 0, QUERY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (klas, 1, U"Get number of coefficients", nullptr, 1, DO_FunctionTerms_getNumberOfCoefficients);
+	praat_addAction1 (klas, 1, U"Get coefficient...", nullptr, 1, DO_FunctionTerms_getCoefficient);
+	praat_addAction1 (klas, 1, U"Get degree", nullptr, 1, DO_FunctionTerms_getDegree);
+	praat_addAction1 (klas, 0, U"-- function specifics --", nullptr, 1, 0);
+	praat_addAction1 (klas, 1, U"Get value...", nullptr, 1, DO_FunctionTerms_evaluate);
+	praat_addAction1 (klas, 1, U"Get minimum...", nullptr, 1, DO_FunctionTerms_getMinimum);
+	praat_addAction1 (klas, 1, U"Get x of minimum...", nullptr, 1, DO_FunctionTerms_getXOfMinimum);
+	praat_addAction1 (klas, 1, U"Get maximum...", nullptr, 1, DO_FunctionTerms_getMaximum);
+	praat_addAction1 (klas, 1, U"Get x of maximum...", nullptr, 1, DO_FunctionTerms_getXOfMaximum);
+	praat_addAction1 (klas, 0, U"Modify -", nullptr, 0, 0);
+	praat_addAction1 (klas, 1, U"Set domain...", nullptr, 1, DO_FunctionTerms_setDomain);
+	praat_addAction1 (klas, 1, U"Set coefficient...", nullptr, 1, DO_FunctionTerms_setCoefficient);
+	praat_addAction1 (klas, 0, U"Analyse", nullptr, 0, 0);
 }
 
 /* Query buttons for frame-based frequency x time subclasses of matrix. */
 
 void praat_BandFilterSpectrogram_query_init (ClassInfo klas) {
 	praat_TimeFrameSampled_query_init (klas);
-	praat_addAction1 (klas, 1, U"Get time from column...", 0, 1, DO_BandFilterSpectrogram_getXofColumn);
-	praat_addAction1 (klas, 1, U"-- frequencies --", 0, 1, 0);
-	praat_addAction1 (klas, 1, U"Get lowest frequency", 0, 1, DO_BandFilterSpectrogram_getLowestFrequency);
-	praat_addAction1 (klas, 1, U"Get highest frequency", 0, 1, DO_BandFilterSpectrogram_getHighestFrequency);
-	praat_addAction1 (klas, 1, U"Get number of frequencies", 0, 1, DO_BandFilterSpectrogram_getNumberOfFrequencies);
-	praat_addAction1 (klas, 1, U"Get frequency distance", 0, 1, DO_BandFilterSpectrogram_getFrequencyDistance);
-	praat_addAction1 (klas, 1, U"Get frequency from row...", 0, 1, DO_BandFilterSpectrogram_getFrequencyOfRow);
-	praat_addAction1 (klas, 1, U"-- get value --", 0, 1, 0);
-	praat_addAction1 (klas, 1, U"Get value in cell...", 0, 1, DO_BandFilterSpectrogram_getValueInCell);
+	praat_addAction1 (klas, 1, U"Get time from column...", nullptr, 1, DO_BandFilterSpectrogram_getXofColumn);
+	praat_addAction1 (klas, 1, U"-- frequencies --", nullptr, 1, 0);
+	praat_addAction1 (klas, 1, U"Get lowest frequency", nullptr, 1, DO_BandFilterSpectrogram_getLowestFrequency);
+	praat_addAction1 (klas, 1, U"Get highest frequency", nullptr, 1, DO_BandFilterSpectrogram_getHighestFrequency);
+	praat_addAction1 (klas, 1, U"Get number of frequencies", nullptr, 1, DO_BandFilterSpectrogram_getNumberOfFrequencies);
+	praat_addAction1 (klas, 1, U"Get frequency distance", nullptr, 1, DO_BandFilterSpectrogram_getFrequencyDistance);
+	praat_addAction1 (klas, 1, U"Get frequency from row...", nullptr, 1, DO_BandFilterSpectrogram_getFrequencyOfRow);
+	praat_addAction1 (klas, 1, U"-- get value --", nullptr, 1, 0);
+	praat_addAction1 (klas, 1, U"Get value in cell...", nullptr, 1, DO_BandFilterSpectrogram_getValueInCell);
 }
 
 static void praat_Spline_init (ClassInfo klas) {
@@ -8234,7 +8768,7 @@ END
 
 void praat_SSCP_as_TableOfReal_init (ClassInfo klas) {
 	praat_TableOfReal_init (klas);
-	praat_removeAction (klas, NULL, NULL, U"Set value...");
+	praat_removeAction (klas, nullptr, nullptr, U"Set value...");
 	praat_addAction1 (klas, 1, U"Set centroid...", U"Formula...", 1, DO_SSCP_setCentroid);
 	praat_addAction1 (klas, 1, U"Set value...", U"Formula...", 1, DO_SSCP_setValue);
 	praat_addAction1 (klas, 0, U"To TableOfReal", U"To Matrix", 1, DO_TableOfReal_to_TableOfReal);
@@ -8249,34 +8783,36 @@ void praat_TableOfReal_init2 (ClassInfo klas) {
 void praat_EditDistanceTable_as_TableOfReal_init (ClassInfo klas) {
 	praat_TableOfReal_init (klas);
 	praat_addAction1 (klas, 0, U"Set default costs...", U"Formula...", 1, DO_EditDistanceTable_setDefaultCosts);
-	praat_removeAction (klas, NULL, NULL, U"Draw as numbers...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw as numbers...");
 	praat_addAction1 (klas, 0, U"Draw...", U"Draw -", 1, DO_EditDistanceTable_draw);
 	praat_addAction1 (klas, 0, U"Draw edit operations", U"Draw...", 1, DO_EditDistanceTable_drawEditOperations);
-	praat_removeAction (klas, NULL, NULL, U"Draw as numbers if...");
-	praat_removeAction (klas, NULL, NULL, U"Draw as squares...");
-	praat_removeAction (klas, NULL, NULL, U"Draw vertical lines...");
-	praat_removeAction (klas, NULL, NULL, U"Draw horizontal lines...");
-	praat_removeAction (klas, NULL, NULL, U"Draw left and right lines...");
-	praat_removeAction (klas, NULL, NULL, U"Draw top and bottom lines...");
-	praat_removeAction (klas, NULL, NULL, U"-- draw lines --");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw as numbers if...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw as squares...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw vertical lines...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw horizontal lines...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw left and right lines...");
+	praat_removeAction (klas, nullptr, nullptr, U"Draw top and bottom lines...");
+	praat_removeAction (klas, nullptr, nullptr, U"-- draw lines --");
 }
 
 void praat_uvafon_David_init ();
 void praat_uvafon_David_init () {
 	Data_recognizeFileType (TextGrid_TIMITLabelFileRecognizer);
 	Data_recognizeFileType (cmuAudioFileRecognizer);
-
+	
 	Thing_recognizeClassesByName (classActivation, classBarkFilter, classBarkSpectrogram,
 		classCategories, classCepstrum, classCCA,
 		classChebyshevSeries, classClassificationTable, classComplexSpectrogram, classConfusion,
 		classCorrelation, classCovariance, classDiscriminant, classDTW,
-		classEigen, classExcitations, classEditCostsTable, classEditDistanceTable,
-		classFileInMemory, classFilesInMemory, classFormantFilter,
+		classEigen, classExcitationList, classEditCostsTable, classEditDistanceTable,
+		classFileInMemory, classFileInMemorySet, classFormantFilter,
 		classIndex, classKlattTable,
 		classPermutation, classISpline, classLegendreSeries,
 		classMelFilter, classMelSpectrogram, classMSpline, classPattern, classPCA, classPolynomial, classRoots,
 		classSimpleString, classStringsIndex, classSpeechSynthesizer, classSPINET, classSSCP,
-		classSVD, NULL);
+		classSVD, nullptr);
+	Thing_recognizeClassByOtherName (classExcitationList, U"Excitations");
+	Thing_recognizeClassByOtherName (classFileInMemorySet, U"FilesInMemory");
 
 	VowelEditor_prefs ();
 
@@ -8287,13 +8823,13 @@ void praat_uvafon_David_init () {
 	praat_addMenuCommand (U"Objects", U"Goodies", U"Get invTukeyQ...", 0, praat_HIDDEN, DO_Praat_getInvTukeyQ);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Strings from espeak voices", U"Create Strings as directory list...", praat_DEPTH_1 + praat_HIDDEN, DO_Strings_createFromEspeakVoices);
 	praat_addMenuCommand (U"Objects", U"New", U"Create iris data set", U"Create TableOfReal...", 1, DO_New_CreateIrisDataset);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Permutation...", 0, 0, DO_Permutation_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Polynomial", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Polynomial...", 0, 1, DO_Polynomial_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create LegendreSeries...", 0, 1, DO_LegendreSeries_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create ChebyshevSeries...", 0, 1, DO_ChebyshevSeries_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create MSpline...", 0, 1, DO_MSpline_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create ISpline...", 0, 1, DO_ISpline_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Permutation...", nullptr, 0, DO_Permutation_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Polynomial", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Polynomial...", nullptr, 1, DO_Polynomial_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create LegendreSeries...", nullptr, 1, DO_LegendreSeries_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create ChebyshevSeries...", nullptr, 1, DO_ChebyshevSeries_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create MSpline...", nullptr, 1, DO_MSpline_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create ISpline...", nullptr, 1, DO_ISpline_create);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Sound from gammatone...", U"Create Sound from tone complex...", 1, DO_Sound_createFromGammaTone);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Sound from gamma-tone...", U"Create Sound from tone complex...", praat_DEPTH_1 | praat_HIDDEN, DO_Sound_createFromGammaTone);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Sound from Shepard tone...", U"Create Sound from gammatone...", 1, DO_Sound_createFromShepardTone);
@@ -8309,118 +8845,104 @@ void praat_uvafon_David_init () {
 	praat_addMenuCommand (U"Objects", U"New", U"Create TableOfReal (Weenink 1985)...", U"Create TableOfReal (Van Nierop 1973)...", 1, DO_TableOfReal_createFromWeeninkData);
 	praat_addMenuCommand (U"Objects", U"New", U"Create simple Confusion...", U"Create TableOfReal (Weenink 1985)...", 1, DO_Confusion_createSimple);
 	praat_addMenuCommand (U"Objects", U"New", U"Create simple Covariance...", U"Create simple Confusion...", 1, DO_Covariance_createSimple);
+	praat_addMenuCommand (U"Objects", U"New", U"Create simple Correlation...", U"Create simple Covariance...", 1, DO_Correlation_createSimple);
 	praat_addMenuCommand (U"Objects", U"New", U"Create empty EditCostsTable...", U"Create simple Covariance...", 1, DO_EditCostsTable_createEmpty);
 
 	praat_addMenuCommand (U"Objects", U"New", U"Create KlattTable example", U"Create TableOfReal (Weenink 1985)...", praat_DEPTH_1 + praat_HIDDEN, DO_KlattTable_createExample);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as characters...", U"Create TextGrid...", praat_HIDDEN, DO_Strings_createAsCharacters);
 	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as tokens...", U"Create TextGrid...", praat_HIDDEN, DO_Strings_createAsTokens);
 
-	praat_addMenuCommand (U"Objects", U"New", U"Create simple Polygon...", 0, praat_HIDDEN, DO_Polygon_createSimple);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Polygon (random vertices)...", 0, praat_HIDDEN, DO_Polygon_createFromRandomVertices);
-	praat_addMenuCommand (U"Objects", U"New", U"FilesInMemory", 0, praat_HIDDEN, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create FileInMemory...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_FileInMemory_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create copy from FilesInMemory...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_FilesInMemory_createCopyFromFilesInMemory);
-		praat_addMenuCommand (U"Objects", U"New", U"Create FilesInMemory from directory contents...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_FilesInMemory_createFromDirectoryContents);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Sound from raw 16-bit Little Endian file...", U"Read from special sound file", 1,
-	                      DO_Sound_readFromRawFileLE);
+	praat_addMenuCommand (U"Objects", U"New", U"Create simple Polygon...", nullptr, praat_HIDDEN, DO_Polygon_createSimple);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Polygon (random vertices)...", nullptr, praat_HIDDEN, DO_Polygon_createFromRandomVertices);
+	praat_addMenuCommand (U"Objects", U"New", U"FileInMemory", nullptr, praat_HIDDEN, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create FileInMemory...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_FileInMemory_create);
+		//praat_addMenuCommand (U"Objects", U"New", U"Create copy from FilesInMemory...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_FileInMemorySet_createCopyFromFileInMemorySet);
+		praat_addMenuCommand (U"Objects", U"New", U"Create copy from FileInMemorySet...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_FileInMemorySet_createCopyFromFileInMemorySet);
+		praat_addMenuCommand (U"Objects", U"New", U"Create FileInMemorySet from directory contents...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_FileInMemorySet_createFromDirectoryContents);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Sound from raw 16-bit Little Endian file...", U"Read from special sound file", 1, DO_Sound_readFromRawFileLE);
 	praat_addMenuCommand (U"Objects", U"Open", U"Read Sound from raw 16-bit Big Endian file...", U"Read Sound from raw 16-bit Little Endian file...", 1, DO_Sound_readFromRawFileBE);
 	praat_addMenuCommand (U"Objects", U"Open", U"Read KlattTable from raw text file...", U"Read Matrix from raw text file...", praat_HIDDEN, DO_KlattTable_readFromRawTextFile);
 
-	praat_addAction1 (classActivation, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classActivation, 0, U"Formula...", 0, 0,
-	                  DO_Activation_formula);
-	praat_addAction1 (classActivation, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classActivation, 0, U"To Matrix", 0, 0,
-	                  DO_Activation_to_Matrix);
+	praat_addAction1 (classActivation, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classActivation, 0, U"Formula...", nullptr, 0, DO_Activation_formula);
+	praat_addAction1 (classActivation, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classActivation, 0, U"To Matrix", nullptr, 0, DO_Activation_to_Matrix);
 
-	praat_addAction2 (classActivation, 1, classCategories, 1, U"To TableOfReal", 0, 0, DO_Matrix_Categories_to_TableOfReal);
+	praat_addAction2 (classActivation, 1, classCategories, 1, U"To TableOfReal", nullptr, 0, DO_Matrix_Categories_to_TableOfReal);
 
-	praat_addAction1 (classBarkFilter, 0, U"BarkFilter help", 0, 0, DO_BarkFilter_help);
+	praat_addAction1 (classBarkFilter, 0, U"BarkFilter help", nullptr, 0, DO_BarkFilter_help);
 	praat_FilterBank_all_init (classBarkFilter);	// deprecated 2014
 	praat_addAction1 (classBarkFilter, 0, U"Draw spectrum (slice)...", U"Draw filters...", praat_DEPTH_1, DO_BarkFilter_drawSpectrum);	// deprecated 2014
 	praat_addAction1 (classBarkFilter, 1, U"Draw filter functions...", U"Draw filters...", praat_DEPTH_1, DO_BarkFilter_drawSekeyHansonFilterFunctions);	// deprecated 2014
 	praat_addAction1 (classBarkFilter, 0, U"Paint...", U"Draw filters...", praat_DEPTH_1, DO_BarkFilter_paint);	// deprecated 2014
-	praat_addAction1 (classBarkFilter, 0, U"To BarkSpectrogram", 0, 0, DO_BarkFilter_to_BarkSpectrogram);
+	praat_addAction1 (classBarkFilter, 0, U"To BarkSpectrogram", nullptr, 0, DO_BarkFilter_to_BarkSpectrogram);
 
-	praat_addAction1 (classBarkSpectrogram, 0, U"BarkSpectrogram help", 0, 0, DO_BarkSpectrogram_help);
+	praat_addAction1 (classBarkSpectrogram, 0, U"BarkSpectrogram help", nullptr, 0, DO_BarkSpectrogram_help);
 	praat_BandFilterSpectrogram_draw_init (classBarkSpectrogram);
-	praat_addAction1 (classBarkSpectrogram, 0, U"Paint image...", 0, 1, DO_BarkSpectrogram_paintImage);
-	praat_addAction1 (classBarkSpectrogram, 0, U"Draw Sekey-Hanson auditory filters...", 0, 1, DO_BarkSpectrogram_drawSekeyHansonAuditoryFilters);
-	praat_addAction1 (classBarkSpectrogram, 0, U"Draw spectrum at nearest time slice...", 0, 1, DO_BarkSpectrogram_drawSpectrumAtNearestTimeSlice);
-	praat_addAction1 (classBarkSpectrogram, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (classBarkSpectrogram, 0, U"Paint image...", nullptr, 1, DO_BarkSpectrogram_paintImage);
+	praat_addAction1 (classBarkSpectrogram, 0, U"Draw Sekey-Hanson auditory filters...", nullptr, 1, DO_BarkSpectrogram_drawSekeyHansonAuditoryFilters);
+	praat_addAction1 (classBarkSpectrogram, 0, U"Draw spectrum at nearest time slice...", nullptr, 1, DO_BarkSpectrogram_drawSpectrumAtNearestTimeSlice);
+	praat_addAction1 (classBarkSpectrogram, 0, QUERY_BUTTON, nullptr, 0, nullptr);
 	praat_BandFilterSpectrogram_query_init (classBarkSpectrogram);
-	praat_addAction1 (classBarkSpectrogram, 0, U"Equalize intensities...", 0, 0, DO_BandFilterSpectrogram_equalizeIntensities);
-	praat_addAction1 (classBarkSpectrogram, 0, U"To Intensity", 0, 0, DO_BandFilterSpectrogram_to_Intensity);
-	praat_addAction1 (classBarkSpectrogram, 0, U"To Matrix...", 0, 0, DO_BandFilterSpectrogram_to_Matrix);
-	praat_addAction1 (classBarkSpectrogram, 2, U"Cross-correlate...", 0, 0, DO_BandFilterSpectrograms_crossCorrelate);
-	praat_addAction1 (classBarkSpectrogram, 2, U"Convolve...", 0, 0, DO_BandFilterSpectrograms_convolve);
+	praat_addAction1 (classBarkSpectrogram, 0, U"Equalize intensities...", nullptr, 0, DO_BandFilterSpectrogram_equalizeIntensities);
+	praat_addAction1 (classBarkSpectrogram, 0, U"To Intensity", nullptr, 0, DO_BandFilterSpectrogram_to_Intensity);
+	praat_addAction1 (classBarkSpectrogram, 0, U"To Matrix...", nullptr, 0, DO_BandFilterSpectrogram_to_Matrix);
+	praat_addAction1 (classBarkSpectrogram, 2, U"Cross-correlate...", nullptr, 0, DO_BandFilterSpectrograms_crossCorrelate);
+	praat_addAction1 (classBarkSpectrogram, 2, U"Convolve...", nullptr, 0, DO_BandFilterSpectrograms_convolve);
 	
 	
-	praat_addAction1 (classCategories, 0, U"Edit", 0, 0, DO_Categories_edit);
-	praat_addAction1 (classCategories, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (classCategories, 0, U"View & Edit", nullptr, 0, DO_Categories_edit);
+	praat_addAction1 (classCategories, 0, U"Edit", nullptr, praat_HIDDEN, DO_Categories_edit); // deprecated 2015
+	praat_addAction1 (classCategories, 0, QUERY_BUTTON, nullptr, 0, nullptr);
 	praat_addAction1 (classCategories, 1, U"Get number of categories", QUERY_BUTTON, 1, DO_Categories_getNumberOfCategories);
 	praat_addAction1 (classCategories, 2, U"Get difference", QUERY_BUTTON, praat_HIDDEN | praat_DEPTH_1, DO_Categories_difference);
 	praat_addAction1 (classCategories, 2, U"Get number of differences", QUERY_BUTTON, 1, DO_Categories_getNumberOfDifferences);
 	praat_addAction1 (classCategories, 2, U"Get fraction different", QUERY_BUTTON, 1, DO_Categories_getFractionDifferent);
-	praat_addAction1 (classCategories, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classCategories, 1, U"Append 1 category...", MODIFY_BUTTON,
-	                  1, DO_Categories_append);
-	praat_addAction1 (classCategories, 0, U"Extract", 0, 0, 0);
-	praat_addAction1 (classCategories, 0, U"To unique Categories", 0, 0,
-	                  DO_Categories_selectUniqueItems);
-	praat_addAction1 (classCategories, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classCategories, 2, U"To Confusion", 0, 0,
-	                  DO_Categories_to_Confusion);
-	praat_addAction1 (classCategories, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classCategories, 2, U"Join", 0, 0, DO_Categories_join);
-	praat_addAction1 (classCategories, 0, U"Permute items", 0, 0, DO_Categories_permuteItems);
-	praat_addAction1 (classCategories, 0, U"To Strings", 0, 0,
-	                  DO_Categories_to_Strings);
-
-	praat_addAction1 (classChebyshevSeries, 0, U"ChebyshevSeries help", 0, 0,
-	                  DO_ChebyshevSeries_help);
+	praat_addAction1 (classCategories, 0, MODIFY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction1 (classCategories, 1, U"Append category...", MODIFY_BUTTON, 1, DO_Categories_append);
+	praat_addAction1 (classCategories, 1, U"Append 1 category...", U"Append category...", praat_HIDDEN | praat_DEPTH_1, DO_Categories_append);
+	praat_addAction1 (classCategories, 0, U"Extract", nullptr, 0, nullptr);
+	praat_addAction1 (classCategories, 0, U"To unique Categories", nullptr, 0, DO_Categories_selectUniqueItems);
+	praat_addAction1 (classCategories, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classCategories, 2, U"To Confusion", nullptr, 0, DO_Categories_to_Confusion);
+	praat_addAction1 (classCategories, 0, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction1 (classCategories, 2, U"Join", nullptr, 0, DO_Categories_join);
+	praat_addAction1 (classCategories, 0, U"Permute items", nullptr, 0, DO_Categories_permuteItems);
+	praat_addAction1 (classCategories, 0, U"To Strings", nullptr, 0, DO_Categories_to_Strings);
+
+	praat_addAction1 (classChebyshevSeries, 0, U"ChebyshevSeries help", nullptr, 0, DO_ChebyshevSeries_help);
 	praat_FunctionTerms_init (classChebyshevSeries);
-	praat_addAction1 (classChebyshevSeries, 0, U"To Polynomial", U"Analyse",
-	                  0, DO_ChebyshevSeries_to_Polynomial);
-
-	praat_addAction1 (classCCA, 1, U"Draw eigenvector...", 0, 0,
-	                  DO_CCA_drawEigenvector);
-	praat_addAction1 (classCCA, 1, U"Get number of correlations", 0, 0,
-	                  DO_CCA_getNumberOfCorrelations);
-	praat_addAction1 (classCCA, 1, U"Get correlation...", 0, 0,
-	                  DO_CCA_getCorrelationCoefficient);
-	praat_addAction1 (classCCA, 1, U"Get eigenvector element...", 0, 0, DO_CCA_getEigenvectorElement);
-	praat_addAction1 (classCCA, 1, U"Get zero correlation probability...", 0, 0, DO_CCA_getZeroCorrelationProbability);
-
-	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"To TableOfReal (scores)...",
-	                  0, 0, DO_CCA_and_TableOfReal_scores);
-	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"To TableOfReal (loadings)",
-	                  0, 0, DO_CCA_and_TableOfReal_factorLoadings);
-	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"Predict...", 0, 0,
-	                  DO_CCA_and_TableOfReal_predict);
-	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"To TableOfReal (loadings)",
-	                  0, 0, DO_CCA_and_Correlation_factorLoadings);
-	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"Get variance fraction...",
-	                  0, 0, DO_CCA_and_Correlation_getVarianceFraction);
-	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"Get redundancy (sl)...",
-	                  0, 0, DO_CCA_and_Correlation_getRedundancy_sl);
+	praat_addAction1 (classChebyshevSeries, 0, U"To Polynomial", U"Analyse", 0, DO_ChebyshevSeries_to_Polynomial);
+
+	praat_addAction1 (classCCA, 1, U"Draw eigenvector...", nullptr, 0, DO_CCA_drawEigenvector);
+	praat_addAction1 (classCCA, 1, U"Get number of correlations", nullptr, 0, DO_CCA_getNumberOfCorrelations);
+	praat_addAction1 (classCCA, 1, U"Get correlation...", nullptr, 0, DO_CCA_getCorrelationCoefficient);
+	praat_addAction1 (classCCA, 1, U"Get eigenvector element...", nullptr, 0, DO_CCA_getEigenvectorElement);
+	praat_addAction1 (classCCA, 1, U"Get zero correlation probability...", nullptr, 0, DO_CCA_getZeroCorrelationProbability);
+
+	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"To TableOfReal (scores)...", nullptr, 0, DO_CCA_and_TableOfReal_scores);
+	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"To TableOfReal (loadings)", nullptr, 0, DO_CCA_and_TableOfReal_factorLoadings);
+	praat_addAction2 (classCCA, 1, classTableOfReal, 1, U"Predict...", nullptr, 0, DO_CCA_and_TableOfReal_predict);
+	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"To TableOfReal (loadings)", nullptr, 0, DO_CCA_and_Correlation_factorLoadings);
+	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"Get variance fraction...", nullptr, 0, DO_CCA_and_Correlation_getVarianceFraction);
+	praat_addAction2 (classCCA, 1, classCorrelation, 1, U"Get redundancy (sl)...", nullptr, 0, DO_CCA_and_Correlation_getRedundancy_sl);
 	
 	
-	praat_addAction1 (classComplexSpectrogram, 0, U"ComplexSpectrogram help", 0, 0, DO_ComplexSpectrogram_help);
-	praat_addAction1 (classComplexSpectrogram, 0, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction1 (classComplexSpectrogram, 0, U"To Sound...", 0, 0, DO_ComplexSpectrogram_to_Sound);
-	praat_addAction1 (classComplexSpectrogram, 0, U"Down to Spectrogram", 0, 0, DO_ComplexSpectrogram_to_Spectrogram);
-	praat_addAction1 (classComplexSpectrogram, 0, U"To Spectrum (slice)...", 0, 0, DO_ComplexSpectrogram_to_Spectrum);
+	praat_addAction1 (classComplexSpectrogram, 0, U"ComplexSpectrogram help", nullptr, 0, DO_ComplexSpectrogram_help);
+	praat_addAction1 (classComplexSpectrogram, 0, DRAW_BUTTON, nullptr, 0, nullptr);
+	praat_addAction1 (classComplexSpectrogram, 0, U"To Sound...", nullptr, 0, DO_ComplexSpectrogram_to_Sound);
+	praat_addAction1 (classComplexSpectrogram, 0, U"Down to Spectrogram", nullptr, 0, DO_ComplexSpectrogram_to_Spectrogram);
+	praat_addAction1 (classComplexSpectrogram, 0, U"To Spectrum (slice)...", nullptr, 0, DO_ComplexSpectrogram_to_Spectrum);
 	//praat_addAction1 (classComplexSpectrogram, 0, U"Paint...", 0, 1, DO_Spectrogram_paint);
 
-	praat_addAction1 (classConfusion, 0, U"Confusion help", 0, 0, DO_Confusion_help);
+	praat_addAction1 (classConfusion, 0, U"Confusion help", nullptr, 0, DO_Confusion_help);
 	praat_TableOfReal_init2 (classConfusion);
-	praat_removeAction (classConfusion, NULL, NULL, U"Draw as numbers...");
-	praat_removeAction (classConfusion, NULL, NULL, U"Sort by label...");
-	praat_removeAction (classConfusion, NULL, NULL, U"Sort by column...");
+	praat_removeAction (classConfusion, nullptr, nullptr, U"Draw as numbers...");
+	praat_removeAction (classConfusion, nullptr, nullptr, U"Sort by label...");
+	praat_removeAction (classConfusion, nullptr, nullptr, U"Sort by column...");
 	praat_addAction1 (classConfusion, 0, U"Draw as numbers...", U"Draw -", 1, DO_Confusion_drawAsNumbers);
 	praat_addAction1 (classConfusion, 1, U"Get value (labels)...", U"Get value...", 1, DO_Confusion_getValue);
-	praat_addAction1 (classConfusion, 0, U"-- confusion statistics --", U"Get value (labels)...", 1, 0);
+	praat_addAction1 (classConfusion, 0, U"-- confusion statistics --", U"Get value (labels)...", 1, nullptr);
 	praat_addAction1 (classConfusion, 1, U"Get fraction correct", U"-- confusion statistics --", 1, DO_Confusion_getFractionCorrect);
 	praat_addAction1 (classConfusion, 1, U"Get stimulus sum...", U"Get fraction correct", 1, DO_Confusion_getStimulusSum);
 	praat_addAction1 (classConfusion, 1, U"Get row sum...", U"Get fraction correct", praat_DEPTH_1 | praat_HIDDEN, DO_TableOfReal_getRowSum);
@@ -8429,22 +8951,19 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classConfusion, 1, U"Get grand sum", U"Get response sum...", 1, DO_TableOfReal_getGrandSum);
 	praat_addAction1 (classConfusion, 0, U"Increase...", U"Formula...", 1, DO_Confusion_increase);
 	praat_addAction1 (classConfusion, 0, U"To TableOfReal (marginals)", U"To TableOfReal", 0, DO_Confusion_to_TableOfReal_marginals);
-	praat_addAction1 (classConfusion, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classConfusion, 0, U"Condense...", 0, praat_HIDDEN, DO_Confusion_condense);
-	praat_addAction1 (classConfusion, 0, U"Group...", 0, 0, DO_Confusion_group);
-	praat_addAction1 (classConfusion, 0, U"Group stimuli...", 0, 0, DO_Confusion_groupStimuli);
-	praat_addAction1 (classConfusion, 0, U"Group responses...", 0, 0, DO_Confusion_groupResponses);
-	praat_addAction1 (classConfusion, 2, U"To difference matrix", 0, 0,
-	                  DO_Confusion_difference);
+	praat_addAction1 (classConfusion, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classConfusion, 0, U"Condense...", nullptr, praat_HIDDEN, DO_Confusion_condense);
+	praat_addAction1 (classConfusion, 0, U"Group...", nullptr, 0, DO_Confusion_group);
+	praat_addAction1 (classConfusion, 0, U"Group stimuli...", nullptr, 0, DO_Confusion_groupStimuli);
+	praat_addAction1 (classConfusion, 0, U"Group responses...", nullptr, 0, DO_Confusion_groupResponses);
+	praat_addAction1 (classConfusion, 2, U"To difference matrix", nullptr, 0, DO_Confusion_difference);
 	
-	praat_addAction2 (classConfusion, 1, classClassificationTable, 1, U"Increase confusion count", 0, 0, DO_Confusion_and_ClassificationTable_increase);
+	praat_addAction2 (classConfusion, 1, classClassificationTable, 1, U"Increase confusion count", nullptr, 0, DO_Confusion_and_ClassificationTable_increase);
 
-	praat_addAction2 (classConfusion, 1, classMatrix, 1, U"Draw", 0, 0, 0);
-	praat_addAction2 (classConfusion, 1, classMatrix, 1, U"Draw confusion...",
-	                  0, 0, DO_Confusion_Matrix_draw);
+	praat_addAction2 (classConfusion, 1, classMatrix, 1, U"Draw", nullptr, 0, nullptr);
+	praat_addAction2 (classConfusion, 1, classMatrix, 1, U"Draw confusion...", nullptr, 0, DO_Confusion_Matrix_draw);
 
-	praat_addAction1 (classCovariance, 0, U"Covariance help", 0, 0,
-	                  DO_Covariance_help);
+	praat_addAction1 (classCovariance, 0, U"Covariance help", nullptr, 0, DO_Covariance_help);
 	praat_SSCP_as_TableOfReal_init (classCovariance);
 	praat_SSCP_query_init (classCovariance);
 	praat_SSCP_extract_init (classCovariance);
@@ -8459,41 +8978,51 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classCovariance, 2, U"Difference", U"Report multivariate mean difference...", praat_DEPTH_1 | praat_HIDDEN, DO_Covariances_reportEquality);
 	praat_addAction1 (classCovariance, 0, U"Report equality of covariances", U"Report multivariate mean difference...", praat_DEPTH_1 | praat_HIDDEN, DO_Covariances_reportEquality);
 
-	praat_addAction1 (classCovariance, 0, U"To TableOfReal (random sampling)...", 0, 0, DO_Covariance_to_TableOfReal_randomSampling);
+	praat_addAction1 (classCovariance, 0, U"To TableOfReal (random sampling)...", nullptr, 0, DO_Covariance_to_TableOfReal_randomSampling);
 
-	praat_addAction1 (classCovariance, 0, U"To Correlation", 0, 0, DO_Covariance_to_Correlation);
-	praat_addAction1 (classCovariance, 0, U"To PCA", 0, 0, DO_Covariance_to_PCA);
+	praat_addAction1 (classCovariance, 0, U"To Correlation", nullptr, 0, DO_Covariance_to_Correlation);
+	praat_addAction1 (classCovariance, 0, U"To PCA", nullptr, 0, DO_Covariance_to_PCA);
+	
+	praat_addAction1 (classCovariance, 0, U"Pool", nullptr, 0, DO_Covariances_pool);
 
-	praat_addAction2 (classCovariance, 1, classTableOfReal, 1, U"To TableOfReal (mahalanobis)...", 0, 0, DO_Covariance_and_TableOfReal_mahalanobis);
+	praat_addAction2 (classCovariance, 1, classTableOfReal, 1, U"To TableOfReal (mahalanobis)...", nullptr, 0, DO_Covariance_and_TableOfReal_mahalanobis);
 
-	praat_addAction1 (classClassificationTable, 0, U"ClassificationTable help", 0, 0, DO_ClassificationTable_help);
+	praat_addAction1 (classClassificationTable, 0, U"ClassificationTable help", nullptr, 0, DO_ClassificationTable_help);
 	praat_TableOfReal_init (classClassificationTable);
 	praat_addAction1 (classClassificationTable, 0, U"Get class index at maximum in row...", U"Get column index...", 1, DO_ClassificationTable_getClassIndexAtMaximumInRow);
 	praat_addAction1 (classClassificationTable, 0, U"Get class label at maximum in row...", U"Get class index at maximum in row...", 1, DO_ClassificationTable_getClassLabelAtMaximumInRow);
-	praat_addAction1 (classClassificationTable, 0, U"To Confusion", 0, praat_HIDDEN, DO_ClassificationTable_to_Confusion_old); // deprecated 2014
-	praat_addAction1 (classClassificationTable, 0, U"To Confusion...", 0, 0, DO_ClassificationTable_to_Confusion);
-	praat_addAction1 (classClassificationTable, 0, U"To Correlation (columns)", 0, 0, DO_ClassificationTable_to_Correlation_columns);
-	praat_addAction1 (classClassificationTable, 0, U"To Strings (max. prob.)", 0, 0, DO_ClassificationTable_to_Strings_maximumProbability);
+	praat_addAction1 (classClassificationTable, 0, U"To Confusion", nullptr, praat_HIDDEN, DO_ClassificationTable_to_Confusion_old); // deprecated 2014
+	praat_addAction1 (classClassificationTable, 0, U"To Confusion...", nullptr, 0, DO_ClassificationTable_to_Confusion);
+	praat_addAction1 (classClassificationTable, 0, U"To Correlation (columns)", nullptr, 0, DO_ClassificationTable_to_Correlation_columns);
+	praat_addAction1 (classClassificationTable, 0, U"To Strings (max. prob.)", nullptr, 0, DO_ClassificationTable_to_Strings_maximumProbability);
 
-	praat_addAction1 (classCorrelation, 0, U"Correlation help", 0, 0, DO_Correlation_help);
+	praat_addAction1 (classCorrelation, 0, U"Correlation help", nullptr, 0, DO_Correlation_help);
 	praat_TableOfReal_init2 (classCorrelation);
 	praat_SSCP_query_init (classCorrelation);
 	praat_SSCP_extract_init (classCorrelation);
 	praat_addAction1 (classCorrelation, 1, U"Get diagonality (bartlett)...", U"Get ln(determinant)", 1, DO_Correlation_testDiagonality_bartlett);
-	praat_addAction1 (classCorrelation, 0, U"Confidence intervals...", 0, 0, DO_Correlation_confidenceIntervals);
-	praat_addAction1 (classCorrelation, 0, U"To PCA", 0, 0, DO_Correlation_to_PCA);
+	praat_addAction1 (classCorrelation, 0, U"Confidence intervals...", nullptr, 0, DO_Correlation_confidenceIntervals);
+	praat_addAction1 (classCorrelation, 0, U"To PCA", nullptr, 0, DO_Correlation_to_PCA);
 
 	praat_addAction1 (classDiscriminant, 0, U"Discriminant help", 0, 0, DO_Discriminant_help);
-	praat_addAction1 (classDiscriminant, 0, DRAW_BUTTON, 0, 0, 0);
-	praat_Eigen_draw_init (classDiscriminant);
+	praat_addAction1 (classDiscriminant, 0, DRAW_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDiscriminant, 0, U"Draw eigenvalues...", nullptr, 1, DO_Discriminant_drawEigenvalues);
+	praat_addAction1 (classDiscriminant, 0, U"Draw eigenvalues (scree)...", nullptr, praat_DEPTH_1 | praat_HIDDEN, DO_Eigen_drawEigenvalues_scree);
+	praat_addAction1 (classDiscriminant, 0, U"Draw eigenvector...", nullptr, 1, DO_Discriminant_drawEigenvector);
+
 	praat_addAction1 (classDiscriminant, 0, U"-- sscps --", 0, 1, 0);
 	praat_addAction1 (classDiscriminant, 0, U"Draw sigma ellipses...", 0, 1, DO_Discriminant_drawSigmaEllipses);
 	praat_addAction1 (classDiscriminant, 0, U"Draw one sigma ellipse...", 0, 1, DO_Discriminant_drawOneSigmaEllipse);
 	praat_addAction1 (classDiscriminant, 0, U"Draw confidence ellipses...", 0, 1, DO_Discriminant_drawConfidenceEllipses);
 
-	praat_addAction1 (classDiscriminant, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDiscriminant, 1, U"-- eigen structure --", 0, 1, 0);
-	praat_Eigen_query_init (classDiscriminant);
+	praat_addAction1 (classDiscriminant, 1, QUERY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDiscriminant, 1, U"-- eigen structure --", nullptr, 1, 0);
+	praat_addAction1 (classDiscriminant, 1, U"Get eigenvalue...", nullptr, 1, DO_Discriminant_getEigenvalue);
+	praat_addAction1 (classDiscriminant, 1, U"Get sum of eigenvalues...", nullptr, 1, DO_Discriminant_getSumOfEigenvalues);
+	praat_addAction1 (classDiscriminant, 1, U"Get number of eigenvectors", nullptr, 1, DO_Discriminant_getNumberOfEigenvalues);
+	praat_addAction1 (classDiscriminant, 1, U"Get eigenvector dimension", nullptr, 1, DO_Discriminant_getDimension);
+	praat_addAction1 (classDiscriminant, 1, U"Get eigenvector element...", nullptr, 1, DO_Discriminant_getEigenvectorElement);
+
 	praat_addAction1 (classDiscriminant, 1, U"-- discriminant --", 0, 1, 0);
 	praat_addAction1 (classDiscriminant, 1, U"Get number of functions", 0, 1, DO_Discriminant_getNumberOfFunctions);
 	praat_addAction1 (classDiscriminant, 1, U"Get dimension of functions", 0, 1, DO_Discriminant_getDimensionOfFunctions);
@@ -8514,23 +9043,24 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classDiscriminant, 1, U"Get ln(determinant_group)...", 0, 1, DO_Discriminant_getLnDeterminant_group);
 	praat_addAction1 (classDiscriminant, 1, U"Get ln(determinant_total)", 0, 1, DO_Discriminant_getLnDeterminant_total);
 
-	praat_addAction1 (classDiscriminant, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDiscriminant, 1, U"Invert eigenvector...", 0, 1, DO_Discriminant_invertEigenvector);
-	praat_addAction1 (classDiscriminant, 0, U"Align eigenvectors", 0, 1, DO_Eigens_alignEigenvectors);
+	praat_addAction1 (classDiscriminant, 0, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDiscriminant, 1, U"Invert eigenvector...", nullptr, 1, DO_Discriminant_invertEigenvector);
+	praat_addAction1 (classDiscriminant, 0, U"Align eigenvectors", nullptr, 1, DO_Eigens_alignEigenvectors);
 
-	praat_addAction1 (classDiscriminant, 0, EXTRACT_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDiscriminant, 1, U"Extract pooled within-groups SSCP", 0, 1,
+	praat_addAction1 (classDiscriminant, 0, EXTRACT_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDiscriminant, 1, U"Extract pooled within-groups SSCP", nullptr, 1,
 	                  DO_Discriminant_extractPooledWithinGroupsSSCP);
-	praat_addAction1 (classDiscriminant, 1, U"Extract within-group SSCP...", 0, 1, DO_Discriminant_extractWithinGroupSSCP);
-	praat_addAction1 (classDiscriminant, 1, U"Extract between-groups SSCP", 0, 1, DO_Discriminant_extractBetweenGroupsSSCP);
-	praat_addAction1 (classDiscriminant, 1, U"Extract group centroids", 0, 1, DO_Discriminant_extractGroupCentroids);
-	praat_addAction1 (classDiscriminant, 1, U"Extract group standard deviations", 0, 1, DO_Discriminant_extractGroupStandardDeviations);
-	praat_addAction1 (classDiscriminant, 1, U"Extract group labels", 0, 1, DO_Discriminant_extractGroupLabels);
+	praat_addAction1 (classDiscriminant, 1, U"Extract within-group SSCP...", nullptr, 1, DO_Discriminant_extractWithinGroupSSCP);
+	praat_addAction1 (classDiscriminant, 1, U"Extract between-groups SSCP", nullptr, 1, DO_Discriminant_extractBetweenGroupsSSCP);
+	praat_addAction1 (classDiscriminant, 1, U"Extract group centroids", nullptr, 1, DO_Discriminant_extractGroupCentroids);
+	praat_addAction1 (classDiscriminant, 1, U"Extract group standard deviations", nullptr, 1, DO_Discriminant_extractGroupStandardDeviations);
+	praat_addAction1 (classDiscriminant, 1, U"Extract group labels", nullptr, 1, DO_Discriminant_extractGroupLabels);
 
-	praat_addAction1 (classDiscriminant , 0, U"& TableOfReal: To ClassificationTable?", 0, 0, DO_hint_Discriminant_and_TableOfReal_to_ClassificationTable);
+	praat_addAction1 (classDiscriminant , 0, U"& TableOfReal: To ClassificationTable?", nullptr, 0, DO_hint_Discriminant_and_TableOfReal_to_ClassificationTable);
 
-	/*		praat_addAction1 (classDiscriminant, 1, U"Extract coefficients...", 0, 1, DO_Discriminant_extractCoefficients);*/
+	/*		praat_addAction1 (classDiscriminant, 1, U"Extract coefficients...", nullptr, 1, DO_Discriminant_extractCoefficients);*/
 
+	//praat_addAction2 (classDiscriminant, 1, classMatrix, 1, U"To Matrix (pc)...", nullptr, 0, DO_Discriminant_and_Matrix_to_Matrix_pc);
 
 	praat_Eigen_Spectrogram_project (classDiscriminant, classSpectrogram);
 	praat_Eigen_Spectrogram_project (classDiscriminant, classBarkSpectrogram);
@@ -8540,159 +9070,161 @@ void praat_uvafon_David_init () {
 	praat_Eigen_Matrix_project (classDiscriminant, classBarkFilter); // deprecated 2014
 	praat_Eigen_Matrix_project (classDiscriminant, classMelFilter); // deprecated 2014
 
-	praat_addAction2 (classDiscriminant, 1, classPattern, 1, U"To Categories...", 0, 0, DO_Discriminant_and_Pattern_to_Categories);
-	praat_addAction2 (classDiscriminant, 1, classSSCP, 1, U"Project", 0, 0, DO_Eigen_and_SSCP_project);
-	praat_addAction2 (classDiscriminant, 1, classStrings, 1, U"Modify Discriminant", 0, 0, 0);
-	praat_addAction2 (classDiscriminant, 1, classStrings, 1, U"Set group labels", 0, 0, DO_Discriminant_setGroupLabels);
+	praat_addAction2 (classDiscriminant, 1, classPattern, 1, U"To Categories...", nullptr, 0, DO_Discriminant_and_Pattern_to_Categories);
+	praat_addAction2 (classDiscriminant, 1, classSSCP, 1, U"Project", nullptr, 0, DO_Eigen_and_SSCP_project);
+	praat_addAction2 (classDiscriminant, 1, classStrings, 1, U"Modify Discriminant", nullptr, 0, 0);
+	praat_addAction2 (classDiscriminant, 1, classStrings, 1, U"Set group labels", nullptr, 0, DO_Discriminant_setGroupLabels);
 
-	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To Configuration...", 0, 0, DO_Discriminant_and_TableOfReal_to_Configuration);
-	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To ClassificationTable...", 0, 0,
+	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To Configuration...", nullptr, 0, DO_Discriminant_and_TableOfReal_to_Configuration);
+	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To ClassificationTable...", nullptr, 0,
 	                  DO_Discriminant_and_TableOfReal_to_ClassificationTable);
-	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To TableOfReal (mahalanobis)...", 0, 0, DO_Discriminant_and_TableOfReal_mahalanobis);
-
-
-	praat_addAction1 (classDTW, 0, U"DTW help", 0, 0, DO_DTW_help);
-	praat_addAction1 (classDTW, 0, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDTW, 0, U"Draw path...", 0, 1, DO_DTW_drawPath);
-	praat_addAction1 (classDTW, 0, U"Paint distances...", 0, 1, DO_DTW_paintDistances);
-	praat_addAction1 (classDTW, 0, U"Draw warp (x)...", 0, 1, DO_DTW_drawWarpX);
-	praat_addAction1 (classDTW, 0, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDTW, 1, U"Query time domains", 0, 1, 0);
-	praat_addAction1 (classDTW, 1, U"Get start time (x)", 0, 2, DO_DTW_getStartTimeX);
-	praat_addAction1 (classDTW, 1, U"Get end time (x)", 0, 2, DO_DTW_getEndTimeX);
-	praat_addAction1 (classDTW, 1, U"Get total duration (x)", 0, 2, DO_DTW_getTotalDurationX);
-	praat_addAction1 (classDTW, 1, U"-- time domain x from y separator --", 0, 2, 0);
-	praat_addAction1 (classDTW, 1, U"Get start time (y)", 0, 2, DO_DTW_getStartTimeY);
-	praat_addAction1 (classDTW, 1, U"Get end time (y)", 0, 2, DO_DTW_getEndTimeY);
-	praat_addAction1 (classDTW, 1, U"Get total duration (y)", 0, 2, DO_DTW_getTotalDurationY);
-	praat_addAction1 (classDTW, 1, U"Query time samplings", 0, 1, 0);
-	praat_addAction1 (classDTW, 1, U"Get number of frames (x)", 0, 2, DO_DTW_getNumberOfFramesX);
-	praat_addAction1 (classDTW, 1, U"Get time step (x)", 0, 2, DO_DTW_getTimeStepX);
-	praat_addAction1 (classDTW, 1, U"Get time from frame number (x)...", 0, 2, DO_DTW_getTimeFromFrameNumberX);
-	praat_addAction1 (classDTW, 1, U"Get frame number from time (x)...", 0, 2, DO_DTW_getFrameNumberFromTimeX);
-	praat_addAction1 (classDTW, 1, U"-- time sampling x from y separator --", 0, 2, 0);
-	praat_addAction1 (classDTW, 1, U"Get number of frames (y)", 0, 2, DO_DTW_getNumberOfFramesY);
-	praat_addAction1 (classDTW, 1, U"Get time step (y)", 0, 2, DO_DTW_getTimeStepY);
-	praat_addAction1 (classDTW, 1, U"Get time from frame number (y)...", 0, 2, DO_DTW_getTimeFromFrameNumberY);
-	praat_addAction1 (classDTW, 1, U"Get frame number from time (y)...", 0, 2, DO_DTW_getFrameNumberFromTimeY);
-
-	praat_addAction1 (classDTW, 1, U"Get y time from x time...", 0, 1, DO_DTW_getYTimeFromXTime);
-	praat_addAction1 (classDTW, 1, U"Get x time from y time...", 0, 1, DO_DTW_getXTimeFromYTime);
-	praat_addAction1 (classDTW, 1, U"Get y time...", 0, praat_HIDDEN + praat_DEPTH_1, DO_DTW_getYTimeFromXTime);
-	praat_addAction1 (classDTW, 1, U"Get x time...", 0, praat_HIDDEN + praat_DEPTH_1, DO_DTW_getXTimeFromYTime);
-	praat_addAction1 (classDTW, 1, U"Get maximum consecutive steps...", 0, 1, DO_DTW_getMaximumConsecutiveSteps);
-	praat_addAction1 (classDTW, 1, U"Get time along path...", 0, praat_DEPTH_1 | praat_HIDDEN, DO_DTW_getPathY);
-	praat_addAction1 (classDTW, 1, U"-- distance queries --", 0, 1, 0);
-	praat_addAction1 (classDTW, 1, U"Get distance value...", 0, 1, DO_DTW_getDistanceValue);
-	praat_addAction1 (classDTW, 1, U"Get minimum distance", 0, 1, DO_DTW_getMinimumDistance);
-	praat_addAction1 (classDTW, 1, U"Get maximum distance", 0, 1, DO_DTW_getMaximumDistance);
-	praat_addAction1 (classDTW, 1, U"Get distance (weighted)", 0, 1, DO_DTW_getWeightedDistance);
-	praat_addAction1 (classDTW, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDTW, 0, U"Formula (distances)...", 0, 1, DO_DTW_formulaDistances);
-	praat_addAction1 (classDTW, 0, U"Set distance value...", 0, 1, DO_DTW_setDistanceValue);
-
-	praat_addAction1 (classDTW, 0, U"Analyse", 0, 0, 0);
-    praat_addAction1 (classDTW, 0, U"Find path...", 0, praat_HIDDEN, DO_DTW_findPath);
-    praat_addAction1 (classDTW, 0, U"Find path (band & slope)...", 0, 0, DO_DTW_findPath_bandAndSlope);
-    praat_addAction1 (classDTW, 0, U"To Polygon...", 0, 1, DO_DTW_to_Polygon);
-	praat_addAction1 (classDTW, 0, U"To Matrix (distances)", 0, 0, DO_DTW_to_Matrix_distances);
-    praat_addAction1 (classDTW, 0, U"To Matrix (cumm. distances)...", 0, 0, DO_DTW_to_Matrix_cummulativeDistances);
-	praat_addAction1 (classDTW, 0, U"Swap axes", 0, 0, DO_DTW_swapAxes);
-
-	praat_addAction2 (classDTW, 1, classMatrix, 1, U"Replace matrix", 0, 0, DO_DTW_and_Matrix_replace);
-	praat_addAction2 (classDTW, 1, classTextGrid, 1, U"To TextGrid (warp times)", 0, 0, DO_DTW_and_TextGrid_to_TextGrid);
-	praat_addAction2 (classDTW, 1, classIntervalTier, 1, U"To Table (distances)", 0, 0, DO_DTW_and_IntervalTier_to_Table);
-
-    praat_addAction2 (classDTW, 1, classPolygon, 1, U"Find path inside...", 0, 0, DO_DTW_and_Polygon_findPathInside);
-    praat_addAction2 (classDTW, 1, classPolygon, 1, U"To Matrix (cumm. distances)...", 0, 0, DO_DTW_and_Polygon_to_Matrix_cummulativeDistances);
-	praat_addAction2 (classDTW, 1, classSound, 2, U"Draw...", 0, 0, DO_DTW_and_Sounds_draw);
-	praat_addAction2 (classDTW, 1, classSound, 2, U"Draw warp (x)...", 0, 0, DO_DTW_and_Sounds_drawWarpX);
-
-	praat_addAction1 (classEditDistanceTable, 1, U"EditDistanceTable help", 0, 0, DO_EditDistanceTable_help);
+	praat_addAction2 (classDiscriminant, 1, classTableOfReal, 1, U"To TableOfReal (mahalanobis)...", nullptr, 0, DO_Discriminant_and_TableOfReal_mahalanobis);
+
+
+	praat_addAction1 (classDTW, 0, U"DTW help", nullptr, 0, DO_DTW_help);
+	praat_addAction1 (classDTW, 0, DRAW_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDTW, 0, U"Draw path...", nullptr, 1, DO_DTW_drawPath);
+	praat_addAction1 (classDTW, 0, U"Paint distances...", nullptr, 1, DO_DTW_paintDistances);
+	praat_addAction1 (classDTW, 0, U"Draw warp (x)...", nullptr, 1, DO_DTW_drawWarpX);
+	praat_addAction1 (classDTW, 0, U"Draw warp (y)...", nullptr, 1, DO_DTW_drawWarpY);
+	praat_addAction1 (classDTW, 0, QUERY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDTW, 1, U"Query time domains", nullptr, 1, 0);
+	praat_addAction1 (classDTW, 1, U"Get start time (x)", nullptr, 2, DO_DTW_getStartTimeX);
+	praat_addAction1 (classDTW, 1, U"Get end time (x)", nullptr, 2, DO_DTW_getEndTimeX);
+	praat_addAction1 (classDTW, 1, U"Get total duration (x)", nullptr, 2, DO_DTW_getTotalDurationX);
+	praat_addAction1 (classDTW, 1, U"-- time domain x from y separator --", nullptr, 2, 0);
+	praat_addAction1 (classDTW, 1, U"Get start time (y)", nullptr, 2, DO_DTW_getStartTimeY);
+	praat_addAction1 (classDTW, 1, U"Get end time (y)", nullptr, 2, DO_DTW_getEndTimeY);
+	praat_addAction1 (classDTW, 1, U"Get total duration (y)", nullptr, 2, DO_DTW_getTotalDurationY);
+	praat_addAction1 (classDTW, 1, U"Query time samplings", nullptr, 1, 0);
+	praat_addAction1 (classDTW, 1, U"Get number of frames (x)", nullptr, 2, DO_DTW_getNumberOfFramesX);
+	praat_addAction1 (classDTW, 1, U"Get time step (x)", nullptr, 2, DO_DTW_getTimeStepX);
+	praat_addAction1 (classDTW, 1, U"Get time from frame number (x)...", nullptr, 2, DO_DTW_getTimeFromFrameNumberX);
+	praat_addAction1 (classDTW, 1, U"Get frame number from time (x)...", nullptr, 2, DO_DTW_getFrameNumberFromTimeX);
+	praat_addAction1 (classDTW, 1, U"-- time sampling x from y separator --", nullptr, 2, 0);
+	praat_addAction1 (classDTW, 1, U"Get number of frames (y)", nullptr, 2, DO_DTW_getNumberOfFramesY);
+	praat_addAction1 (classDTW, 1, U"Get time step (y)", nullptr, 2, DO_DTW_getTimeStepY);
+	praat_addAction1 (classDTW, 1, U"Get time from frame number (y)...", nullptr, 2, DO_DTW_getTimeFromFrameNumberY);
+	praat_addAction1 (classDTW, 1, U"Get frame number from time (y)...", nullptr, 2, DO_DTW_getFrameNumberFromTimeY);
+
+	praat_addAction1 (classDTW, 1, U"Get y time from x time...", nullptr, 1, DO_DTW_getYTimeFromXTime);
+	praat_addAction1 (classDTW, 1, U"Get x time from y time...", nullptr, 1, DO_DTW_getXTimeFromYTime);
+	praat_addAction1 (classDTW, 1, U"Get y time...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_DTW_getYTimeFromXTime);
+	praat_addAction1 (classDTW, 1, U"Get x time...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_DTW_getXTimeFromYTime);
+	praat_addAction1 (classDTW, 1, U"Get maximum consecutive steps...", nullptr, 1, DO_DTW_getMaximumConsecutiveSteps);
+	praat_addAction1 (classDTW, 1, U"Get time along path...", nullptr, praat_DEPTH_1 | praat_HIDDEN, DO_DTW_getPathY);
+	praat_addAction1 (classDTW, 1, U"-- distance queries --", nullptr, 1, 0);
+	praat_addAction1 (classDTW, 1, U"Get distance value...", nullptr, 1, DO_DTW_getDistanceValue);
+	praat_addAction1 (classDTW, 1, U"Get minimum distance", nullptr, 1, DO_DTW_getMinimumDistance);
+	praat_addAction1 (classDTW, 1, U"Get maximum distance", nullptr, 1, DO_DTW_getMaximumDistance);
+	praat_addAction1 (classDTW, 1, U"Get distance (weighted)", nullptr, 1, DO_DTW_getWeightedDistance);
+	praat_addAction1 (classDTW, 0, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classDTW, 0, U"Formula (distances)...", nullptr, 1, DO_DTW_formulaDistances);
+	praat_addAction1 (classDTW, 0, U"Set distance value...", nullptr, 1, DO_DTW_setDistanceValue);
+
+	praat_addAction1 (classDTW, 0, U"Analyse", nullptr, 0, 0);
+    praat_addAction1 (classDTW, 0, U"Find path...", nullptr, praat_HIDDEN, DO_DTW_findPath);
+    praat_addAction1 (classDTW, 0, U"Find path (band & slope)...", nullptr, 0, DO_DTW_findPath_bandAndSlope);
+    praat_addAction1 (classDTW, 0, U"To Polygon...", nullptr, 1, DO_DTW_to_Polygon);
+	praat_addAction1 (classDTW, 0, U"To Matrix (distances)", nullptr, 0, DO_DTW_to_Matrix_distances);
+    praat_addAction1 (classDTW, 0, U"To Matrix (cumm. distances)...", nullptr, 0, DO_DTW_to_Matrix_cummulativeDistances);
+	praat_addAction1 (classDTW, 0, U"Swap axes", nullptr, 0, DO_DTW_swapAxes);
+
+	praat_addAction2 (classDTW, 1, classMatrix, 1, U"Replace matrix", nullptr, 0, DO_DTW_and_Matrix_replace);
+	praat_addAction2 (classDTW, 1, classTextGrid, 1, U"To TextGrid (warp times)", nullptr, 0, DO_DTW_and_TextGrid_to_TextGrid);
+	praat_addAction2 (classDTW, 1, classIntervalTier, 1, U"To Table (distances)", nullptr, 0, DO_DTW_and_IntervalTier_to_Table);
+
+    praat_addAction2 (classDTW, 1, classPolygon, 1, U"Find path inside...", nullptr, 0, DO_DTW_and_Polygon_findPathInside);
+    praat_addAction2 (classDTW, 1, classPolygon, 1, U"To Matrix (cumm. distances)...", nullptr, 0, DO_DTW_and_Polygon_to_Matrix_cummulativeDistances);
+	praat_addAction2 (classDTW, 1, classSound, 2, U"Draw...", nullptr, 0, DO_DTW_and_Sounds_draw);
+	praat_addAction2 (classDTW, 1, classSound, 2, U"Draw warp (x)...", nullptr, 0, DO_DTW_and_Sounds_drawWarpX);
+
+	praat_addAction1 (classEditDistanceTable, 1, U"EditDistanceTable help", nullptr, 0, DO_EditDistanceTable_help);
 	praat_EditDistanceTable_as_TableOfReal_init (classEditDistanceTable);
-	praat_addAction1 (classEditDistanceTable, 1, U"To TableOfReal (directions)...", 0, praat_HIDDEN, DO_EditDistanceTable_to_TableOfReal_directions);
-	praat_addAction2 (classEditDistanceTable, 1, classEditCostsTable, 1, U"Set new edit costs", 0, 0, DO_EditDistanceTable_setEditCosts);
-
-	praat_addAction1 (classEditCostsTable, 1, U"EditCostsTable help", 0, 0, DO_EditCostsTable_help);
-	praat_addAction1 (classEditCostsTable, 0, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classEditCostsTable, 1, U"Get target index...", 0, 1, DO_EditCostsTable_getTargetIndex);
-	praat_addAction1 (classEditCostsTable, 1, U"Get source index...", 0, 1, DO_EditCostsTable_getSourceIndex);
-	praat_addAction1 (classEditCostsTable, 1, U"Get insertion cost...", 0, 1, DO_EditCostsTable_getInsertionCost);
-	praat_addAction1 (classEditCostsTable, 1, U"Get deletion cost...", 0, 1, DO_EditCostsTable_getDeletionCost);
-	praat_addAction1 (classEditCostsTable, 1, U"Get substitution cost...", 0, 1, DO_EditCostsTable_getSubstitutionCost);
-	praat_addAction1 (classEditCostsTable, 1, U"Get cost (others)...", 0, 1, DO_EditCostsTable_getOthersCost);
-	praat_addAction1 (classEditCostsTable, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classEditCostsTable, 1, U"Set target symbol (index)...", 0, 1, DO_EditCostsTable_setTargetSymbol_index);
-	praat_addAction1 (classEditCostsTable, 1, U"Set source symbol (index)...", 0, 1, DO_EditCostsTable_setSourceSymbol_index);
-	praat_addAction1 (classEditCostsTable, 1, U"Set insertion costs...", 0, 1, DO_EditCostsTable_setInsertionCosts);
-	praat_addAction1 (classEditCostsTable, 1, U"Set deletion costs...", 0, 1, DO_EditCostsTable_setDeletionCosts);
-	praat_addAction1 (classEditCostsTable, 1, U"Set substitution costs...", 0, 1, DO_EditCostsTable_setSubstitutionCosts);
-	praat_addAction1 (classEditCostsTable, 1, U"Set costs (others)...", 0, 1, DO_EditCostsTable_setOthersCosts);
-	praat_addAction1 (classEditCostsTable, 1, U"To TableOfReal", 0, 0, DO_EditCostsTable_to_TableOfReal);
+	praat_addAction1 (classEditDistanceTable, 1, U"To TableOfReal (directions)...", nullptr, praat_HIDDEN, DO_EditDistanceTable_to_TableOfReal_directions);
+	praat_addAction2 (classEditDistanceTable, 1, classEditCostsTable, 1, U"Set new edit costs", nullptr, 0, DO_EditDistanceTable_setEditCosts);
+
+	praat_addAction1 (classEditCostsTable, 1, U"EditCostsTable help", nullptr, 0, DO_EditCostsTable_help);
+	praat_addAction1 (classEditCostsTable, 0, QUERY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classEditCostsTable, 1, U"Get target index...", nullptr, 1, DO_EditCostsTable_getTargetIndex);
+	praat_addAction1 (classEditCostsTable, 1, U"Get source index...", nullptr, 1, DO_EditCostsTable_getSourceIndex);
+	praat_addAction1 (classEditCostsTable, 1, U"Get insertion cost...", nullptr, 1, DO_EditCostsTable_getInsertionCost);
+	praat_addAction1 (classEditCostsTable, 1, U"Get deletion cost...", nullptr, 1, DO_EditCostsTable_getDeletionCost);
+	praat_addAction1 (classEditCostsTable, 1, U"Get substitution cost...", nullptr, 1, DO_EditCostsTable_getSubstitutionCost);
+	praat_addAction1 (classEditCostsTable, 1, U"Get cost (others)...", nullptr, 1, DO_EditCostsTable_getOthersCost);
+	praat_addAction1 (classEditCostsTable, 0, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classEditCostsTable, 1, U"Set target symbol (index)...", nullptr, 1, DO_EditCostsTable_setTargetSymbol_index);
+	praat_addAction1 (classEditCostsTable, 1, U"Set source symbol (index)...", nullptr, 1, DO_EditCostsTable_setSourceSymbol_index);
+	praat_addAction1 (classEditCostsTable, 1, U"Set insertion costs...", nullptr, 1, DO_EditCostsTable_setInsertionCosts);
+	praat_addAction1 (classEditCostsTable, 1, U"Set deletion costs...", nullptr, 1, DO_EditCostsTable_setDeletionCosts);
+	praat_addAction1 (classEditCostsTable, 1, U"Set substitution costs...", nullptr, 1, DO_EditCostsTable_setSubstitutionCosts);
+	praat_addAction1 (classEditCostsTable, 1, U"Set costs (others)...", nullptr, 1, DO_EditCostsTable_setOthersCosts);
+	praat_addAction1 (classEditCostsTable, 1, U"To TableOfReal", nullptr, 0, DO_EditCostsTable_to_TableOfReal);
 
 	praat_Index_init (classStringsIndex);
-	praat_addAction1 (classIndex, 0, U"Index help", 0, 0, DO_Index_help);
-	praat_addAction1 (classStringsIndex, 1, U"Get class label...", 0, 0, DO_StringsIndex_getClassLabel);
-	praat_addAction1 (classStringsIndex, 1, U"Get class index...", 0, 0, DO_StringsIndex_getClassIndex);
-	praat_addAction1 (classStringsIndex, 1, U"Get label...", 0, 0, DO_StringsIndex_getLabel);
-	praat_addAction1 (classIndex, 1, U"Get index...", 0, 0, DO_Index_getIndex);
-	praat_addAction1 (classStringsIndex, 1, U"To Strings", 0, 0, DO_StringsIndex_to_Strings);
+	praat_addAction1 (classIndex, 0, U"Index help", nullptr, 0, DO_Index_help);
+	praat_addAction1 (classStringsIndex, 1, U"Get class label...", nullptr, 0, DO_StringsIndex_getClassLabel);
+	praat_addAction1 (classStringsIndex, 1, U"Get class index...", nullptr, 0, DO_StringsIndex_getClassIndex);
+	praat_addAction1 (classStringsIndex, 1, U"Get label...", nullptr, 0, DO_StringsIndex_getLabel);
+	praat_addAction1 (classIndex, 1, U"Get index...", nullptr, 0, DO_Index_getIndex);
+	praat_addAction1 (classStringsIndex, 1, U"To Strings", nullptr, 0, DO_StringsIndex_to_Strings);
 
 	praat_addAction1 (classExcitation, 0, U"Synthesize", U"To Formant...", 0, 0);
-	praat_addAction1 (classExcitation, 0, U"To Excitations", U"Synthesize", 0, DO_Excitation_to_Excitations);
-
-	praat_addAction1 (classExcitations, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classExcitations, 0, U"Formula...", 0, 0, DO_Excitations_formula);
-	praat_addAction1 (classExcitations, 0, U"Extract", 0, 0, 0);
-	praat_addAction1 (classExcitations, 0, U"Extract Excitation...", 0, 0, DO_Excitations_getItem);
-	praat_addAction1 (classExcitations, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classExcitations, 0, U"Append", 0, 0, DO_Excitations_append);
-	praat_addAction1 (classExcitations, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classExcitations, 0, U"To Pattern...", 0, 0, DO_Excitations_to_Pattern);
-	praat_addAction1 (classExcitations, 0, U"To TableOfReal", 0, 0, DO_Excitations_to_TableOfReal);
-
-	praat_addAction2 (classExcitations, 1, classExcitation, 0, U"Add to Excitations", 0, 0, DO_Excitations_addItem);
-
-	praat_addAction1 (classFileInMemory, 1, U"Show as code...", 0, 0, DO_FileInMemory_showAsCode);
-	praat_addAction1 (classFileInMemory, 1, U"Set id...", 0, 0, DO_FileInMemory_setId);
-	praat_addAction1 (classFileInMemory, 0, U"To FilesInMemory", 0, 0, DO_FileInMemory_to_FilesInMemory);
-
-	praat_addAction1 (classFilesInMemory, 1, U"Show as code...", 0, 0, DO_FilesInMemory_showAsCode);
-	praat_addAction1 (classFilesInMemory, 1, U"Show one file as code...", 0, 0, DO_FilesInMemory_showOneFileAsCode);
-	praat_addAction1 (classFilesInMemory, 0, U"Merge", 0, 0, DO_FilesInMemory_merge);
-	praat_addAction1 (classFilesInMemory, 0, U"To Strings (id)", 0, 0, DO_FilesInMemory_to_Strings_id);
-
-	praat_addAction2 (classFilesInMemory, 1, classFileInMemory, 0, U"Add items to Collection", 0, 0, DO_FilesInMemory_addItems);
-
-	praat_addAction1 (classFormantFilter, 0, U"FormantFilter help", 0, 0, DO_FormantFilter_help);
+	praat_addAction1 (classExcitation, 0, U"To ExcitationList", U"Synthesize", 0, DO_Excitations_to_ExcitationList);
+	praat_addAction1 (classExcitation, 0, U"To Excitations", U"Synthesize", praat_HIDDEN, DO_Excitations_to_ExcitationList);
+
+	praat_addAction1 (classExcitationList, 0, U"Modify", nullptr, 0, 0);
+	praat_addAction1 (classExcitationList, 0, U"Formula...", nullptr, 0, DO_ExcitationList_formula);
+	praat_addAction1 (classExcitationList, 0, U"Extract", nullptr, 0, 0);
+	praat_addAction1 (classExcitationList, 0, U"Extract Excitation...", nullptr, 0, DO_ExcitationList_getItem);
+	praat_addAction1 (classExcitationList, 0, U"Synthesize", nullptr, 0, 0);
+	praat_addAction1 (classExcitationList, 2, U"Append", nullptr, 0, DO_ExcitationList_append);
+	praat_addAction1 (classExcitationList, 0, U"Convert", nullptr, 0, 0);
+	praat_addAction1 (classExcitationList, 0, U"To Pattern...", nullptr, 0, DO_ExcitationList_to_Pattern);
+	praat_addAction1 (classExcitationList, 0, U"To TableOfReal", nullptr, 0, DO_ExcitationList_to_TableOfReal);
+
+	praat_addAction2 (classExcitationList, 1, classExcitation, 0, U"Add to ExcitationList", nullptr, 0, DO_ExcitationList_addItem);
+	praat_addAction2 (classExcitationList, 1, classExcitation, 0, U"Add to Excitations", nullptr, praat_HIDDEN, DO_ExcitationList_addItem);
+
+	praat_addAction1 (classFileInMemory, 1, U"Show as code...", nullptr, 0, DO_FileInMemory_showAsCode);
+	praat_addAction1 (classFileInMemory, 1, U"Set id...", nullptr, 0, DO_FileInMemory_setId);
+	praat_addAction1 (classFileInMemory, 0, U"To FileInMemorySet", nullptr, 0, DO_FileInMemory_to_FileInMemorySet);
+	praat_addAction1 (classFileInMemory, 0, U"To FilesInMemory", nullptr, praat_HIDDEN, DO_FileInMemory_to_FileInMemorySet); // Deprecated since 2015
+
+	praat_addAction1 (classFileInMemorySet, 1, U"Show as code...", nullptr, 0, DO_FileInMemorySet_showAsCode);
+	praat_addAction1 (classFileInMemorySet, 1, U"Show one file as code...", nullptr, 0, DO_FileInMemorySet_showOneFileAsCode);
+	praat_addAction1 (classFileInMemorySet, 2, U"Merge", nullptr, 0, DO_FileInMemorySets_merge);
+	praat_addAction1 (classFileInMemorySet, 0, U"To Strings (id)", nullptr, 0, DO_FileInMemorySet_to_Strings_id);
+
+	praat_addAction2 (classFileInMemorySet, 1, classFileInMemory, 0, U"Add items to Collection", nullptr, 0, DO_FileInMemorySet_addItems);
+
+	praat_addAction1 (classFormantFilter, 0, U"FormantFilter help", nullptr, 0, DO_FormantFilter_help);
 	praat_FilterBank_all_init (classFormantFilter);
 	praat_addAction1 (classFormantFilter, 0, U"Draw spectrum (slice)...", U"Draw filters...", praat_DEPTH_1 + praat_HIDDEN, DO_FormantFilter_drawSpectrum);
 	praat_addAction1 (classFormantFilter, 0, U"Draw filter functions...", U"Draw filters...",  praat_DEPTH_1 + praat_HIDDEN, DO_FormantFilter_drawFilterFunctions);
-	praat_addAction1 (classFormantFilter, 0, U"To Spectrogram", 0, 0, DO_FormantFilter_to_Spectrogram);
-	
-	
-	praat_addAction1 (classFormantGrid, 0, U"Draw...", U"Edit", praat_DEPTH_1 + praat_HIDDEN, DO_FormantGrid_draw);
+	praat_addAction1 (classFormantFilter, 0, U"To Spectrogram", nullptr, 0, DO_FormantFilter_to_Spectrogram);
 
+	praat_addAction1 (classFormantGrid, 0, U"Draw...", U"Edit", praat_DEPTH_1 + praat_HIDDEN, DO_FormantGrid_draw);
 
 	praat_addAction1 (classIntensity, 0, U"To TextGrid (silences)...", U"To IntensityTier (valleys)", 0, DO_Intensity_to_TextGrid_detectSilences);
-	praat_addAction1 (classIntensityTier, 0, U"To TextGrid (silences)...", 0, 0, DO_IntensityTier_to_TextGrid_detectSilences);
-	praat_addAction1 (classIntensityTier, 0, U"To Intensity...", 0, praat_HIDDEN, DO_IntensityTier_to_Intensity);
+	praat_addAction1 (classIntensityTier, 0, U"To TextGrid (silences)...", nullptr, 0, DO_IntensityTier_to_TextGrid_detectSilences);
+	praat_addAction1 (classIntensityTier, 0, U"To Intensity...", nullptr, praat_HIDDEN, DO_IntensityTier_to_Intensity);
 
-	praat_addAction1 (classISpline, 0, U"ISpline help", 0, 0, DO_ISpline_help);
+	praat_addAction1 (classISpline, 0, U"ISpline help", nullptr, 0, DO_ISpline_help);
 	praat_Spline_init (classISpline);
 
-	praat_addAction1 (classKlattTable, 0, U"KlattTable help", 0, 0, DO_KlattTable_help);
-	praat_addAction1 (classKlattTable, 0, U"To Sound...", 0, 0, DO_KlattTable_to_Sound);
-	praat_addAction1 (classKlattTable, 0, U"To KlattGrid...", 0, 0, DO_KlattTable_to_KlattGrid);
-	praat_addAction1 (classKlattTable, 0, U"To Table", 0, 0, DO_KlattTable_to_Table);
+	praat_addAction1 (classKlattTable, 0, U"KlattTable help", nullptr, 0, DO_KlattTable_help);
+	praat_addAction1 (classKlattTable, 0, U"To Sound...", nullptr, 0, DO_KlattTable_to_Sound);
+	praat_addAction1 (classKlattTable, 0, U"To KlattGrid...", nullptr, 0, DO_KlattTable_to_KlattGrid);
+	praat_addAction1 (classKlattTable, 0, U"To Table", nullptr, 0, DO_KlattTable_to_Table);
 
-	praat_addAction1 (classLegendreSeries, 0, U"LegendreSeries help", 0, 0, DO_LegendreSeries_help);
+	praat_addAction1 (classLegendreSeries, 0, U"LegendreSeries help", nullptr, 0, DO_LegendreSeries_help);
 	praat_FunctionTerms_init (classLegendreSeries);
 	praat_addAction1 (classLegendreSeries, 0, U"To Polynomial", U"Analyse", 0, DO_LegendreSeries_to_Polynomial);
 
-	praat_addAction1 (classLongSound, 0, U"Append to existing sound file...", 0, 0, DO_LongSounds_appendToExistingSoundFile);
-	praat_addAction1 (classSound, 0, U"Append to existing sound file...", 0, 0, DO_LongSounds_appendToExistingSoundFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Append to existing sound file...", 0, 0, DO_LongSounds_appendToExistingSoundFile);
+	praat_addAction1 (classLongSound, 0, U"Append to existing sound file...", nullptr, 0, DO_LongSounds_appendToExistingSoundFile);
+	praat_addAction1 (classSound, 0, U"Append to existing sound file...", nullptr, 0, DO_LongSounds_appendToExistingSoundFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Append to existing sound file...", nullptr, 0, DO_LongSounds_appendToExistingSoundFile);
 
 	praat_addAction1 (classLongSound, 2, U"Save as stereo AIFF file...", U"Save as NIST file...", 1, DO_LongSounds_writeToStereoAiffFile);
 	praat_addAction1 (classLongSound, 2, U"Write to stereo AIFF file...", U"Write to NIST file...", praat_HIDDEN + praat_DEPTH_1, DO_LongSounds_writeToStereoAiffFile);
@@ -8715,86 +9247,91 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classMatrix, 0, U"Get standard deviation...", U"Get mean...", 1, DO_Matrix_getStandardDeviation);
 	praat_addAction1 (classMatrix, 0, U"Transpose", U"Synthesize", 0, DO_Matrix_transpose);
 	praat_addAction1 (classMatrix, 0, U"Solve equation...", U"Analyse", 0, DO_Matrix_solveEquation);
+	praat_addAction1 (classMatrix, 0, U"To PCA (by rows)", U"Solve equation...", 0, DO_Matrix_to_PCA_byRows);
+	praat_addAction1 (classMatrix, 0, U"To PCA (by columns)", U"To PCA (by rows)", 0, DO_Matrix_to_PCA_byColumns);
 	praat_addAction1 (classMatrix, 0, U"To Pattern...", U"To VocalTract", 1, DO_Matrix_to_Pattern);
 	praat_addAction1 (classMatrix, 0, U"To Activation", U"To Pattern...", 1, DO_Matrix_to_Activation);
 	praat_addAction1 (classMatrix, 2, U"To DTW...", U"To ParamCurve", 1, DO_Matrices_to_DTW);
 
-	praat_addAction2 (classMatrix, 1, classCategories, 1, U"To TableOfReal", 0, 0, DO_Matrix_Categories_to_TableOfReal);
+	praat_addAction2 (classMatrix, 1, classCategories, 1, U"To TableOfReal", nullptr, 0, DO_Matrix_Categories_to_TableOfReal);
 
-	
-	praat_addAction1 (classMelSpectrogram, 0, U"MelSpectrogram help", 0, 0, DO_MelSpectrogram_help);
+	praat_addAction1 (classMelSpectrogram, 0, U"MelSpectrogram help", nullptr, 0, DO_MelSpectrogram_help);
 	praat_BandFilterSpectrogram_draw_init (classMelSpectrogram);
-	praat_addAction1 (classMelSpectrogram, 0, U"Paint image...", 0, 1, DO_MelSpectrogram_paintImage);
-	praat_addAction1 (classMelSpectrogram, 0, U"Draw triangular filter functions...", 0, 1, DO_MelSpectrogram_drawTriangularFilterFunctions);
-	praat_addAction1 (classMelSpectrogram, 0, U"Draw spectrum at nearest time slice...", 0, 1, DO_MelSpectrogram_drawSpectrumAtNearestTimeSlice);
-	praat_addAction1 (classMelSpectrogram, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (classMelSpectrogram, 0, U"Paint image...", nullptr, 1, DO_MelSpectrogram_paintImage);
+	praat_addAction1 (classMelSpectrogram, 0, U"Draw triangular filter functions...", nullptr, 1, DO_MelSpectrogram_drawTriangularFilterFunctions);
+	praat_addAction1 (classMelSpectrogram, 0, U"Draw spectrum at nearest time slice...", nullptr, 1, DO_MelSpectrogram_drawSpectrumAtNearestTimeSlice);
+	praat_addAction1 (classMelSpectrogram, 0, QUERY_BUTTON, nullptr, 0, 0);
 	praat_BandFilterSpectrogram_query_init (classMelSpectrogram);
 
-	praat_addAction1 (classMelSpectrogram, 0, U"Equalize intensities...", 0, 0, DO_BandFilterSpectrogram_equalizeIntensities);
-	praat_addAction1 (classMelSpectrogram, 0, U"To MFCC...", 0, 0, DO_MelSpectrogram_to_MFCC);
-	praat_addAction1 (classMelSpectrogram, 0, U"To Intensity", 0, 0, DO_BandFilterSpectrogram_to_Intensity);
-	praat_addAction1 (classMelSpectrogram, 0, U"To Matrix...", 0, 0, DO_BandFilterSpectrogram_to_Matrix);
-	praat_addAction1 (classMelSpectrogram, 2, U"Cross-correlate...", 0, 0, DO_BandFilterSpectrograms_crossCorrelate);
-	praat_addAction1 (classMelSpectrogram, 2, U"Convolve...", 0, 0, DO_BandFilterSpectrograms_convolve);
+	praat_addAction1 (classMelSpectrogram, 0, U"Equalize intensities...", nullptr, 0, DO_BandFilterSpectrogram_equalizeIntensities);
+	praat_addAction1 (classMelSpectrogram, 0, U"To MFCC...", nullptr, 0, DO_MelSpectrogram_to_MFCC);
+	praat_addAction1 (classMelSpectrogram, 0, U"To Intensity", nullptr, 0, DO_BandFilterSpectrogram_to_Intensity);
+	praat_addAction1 (classMelSpectrogram, 0, U"To Matrix...", nullptr, 0, DO_BandFilterSpectrogram_to_Matrix);
+	praat_addAction1 (classMelSpectrogram, 2, U"Cross-correlate...", nullptr, 0, DO_BandFilterSpectrograms_crossCorrelate);
+	praat_addAction1 (classMelSpectrogram, 2, U"Convolve...", nullptr, 0, DO_BandFilterSpectrograms_convolve);
 	
-	praat_addAction1 (classMelFilter, 0, U"MelFilter help", 0, 0, DO_MelFilter_help); // deprecated 2014
+	praat_addAction1 (classMelFilter, 0, U"MelFilter help", nullptr, 0, DO_MelFilter_help); // deprecated 2014
 	praat_FilterBank_all_init (classMelFilter); // deprecated 2014
 	praat_addAction1 (classMelFilter, 0, U"Draw spectrum (slice)...", U"Draw filters...", praat_DEPTH_1 + praat_HIDDEN, DO_MelFilter_drawSpectrum); // deprecated 2014
 	praat_addAction1 (classMelFilter, 0, U"Draw filter functions...", U"Draw filters...", praat_DEPTH_1 + praat_HIDDEN, DO_MelFilter_drawFilterFunctions); // deprecated 2014
 	praat_addAction1 (classMelFilter, 0, U"Paint...", U"Draw filter functions...", praat_DEPTH_1 + praat_HIDDEN, DO_MelFilter_paint); // deprecated 2014
-	praat_addAction1 (classMelFilter, 0, U"To MFCC...", 0, praat_HIDDEN, DO_MelFilter_to_MFCC); // deprecated 2014
-	praat_addAction1 (classMelFilter, 0, U"To MelSpectrogram", 0, 0, DO_MelFilter_to_MelSpectrogram);
-
+	praat_addAction1 (classMelFilter, 0, U"To MFCC...", nullptr, praat_HIDDEN, DO_MelFilter_to_MFCC); // deprecated 2014
+	praat_addAction1 (classMelFilter, 0, U"To MelSpectrogram", nullptr, 0, DO_MelFilter_to_MelSpectrogram);
 	
-	praat_addAction1 (classMFCC, 0, U"MFCC help", 0, 0, DO_MFCC_help);
+	praat_addAction1 (classMFCC, 0, U"MFCC help", nullptr, 0, DO_MFCC_help);
 	praat_CC_init (classMFCC);
-	praat_addAction1 (classMFCC, 0, U"To MelFilter...", 0, praat_HIDDEN, DO_MFCC_to_MelFilter);
-	praat_addAction1 (classMFCC, 0, U"To MelSpectrogram...", 0, 0, DO_MFCC_to_MelSpectrogram);
-	praat_addAction1 (classMFCC, 0, U"To TableOfReal...", 0, 0, DO_MFCC_to_TableOfReal);
-	praat_addAction1 (classMFCC, 0, U"To Matrix (features)...", 0, praat_HIDDEN, DO_MFCC_to_Matrix_features);
-	praat_addAction1 (classMFCC, 0, U"To Sound", 0, praat_HIDDEN, DO_MFCC_to_Sound);
-	praat_addAction1 (classMFCC, 2, U"Cross-correlate...", 0, 0, DO_MFCCs_crossCorrelate);
-	praat_addAction1 (classMFCC, 2, U"Convolve...", 0, 0, DO_MFCCs_convolve);
-
-	praat_addAction1 (classMSpline, 0, U"MSpline help", 0, 0, DO_MSpline_help);
+	praat_addAction1 (classMFCC, 0, U"To MelFilter...", nullptr, praat_HIDDEN, DO_MFCC_to_MelFilter);
+	praat_addAction1 (classMFCC, 0, U"To MelSpectrogram...", nullptr, 0, DO_MFCC_to_MelSpectrogram);
+	praat_addAction1 (classMFCC, 0, U"To TableOfReal...", nullptr, 0, DO_MFCC_to_TableOfReal);
+	praat_addAction1 (classMFCC, 0, U"To Matrix (features)...", nullptr, praat_HIDDEN, DO_MFCC_to_Matrix_features);
+	praat_addAction1 (classMFCC, 0, U"To Sound", nullptr, praat_HIDDEN, DO_MFCC_to_Sound);
+	praat_addAction1 (classMFCC, 2, U"Cross-correlate...", nullptr, 0, DO_MFCCs_crossCorrelate);
+	praat_addAction1 (classMFCC, 2, U"Convolve...", nullptr, 0, DO_MFCCs_convolve);
+
+	praat_addAction1 (classMSpline, 0, U"MSpline help", nullptr, 0, DO_MSpline_help);
 	praat_Spline_init (classMSpline);
 
-	praat_addAction1 (classPattern, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classPattern, 0, U"Draw...", 0, 0, DO_Pattern_draw);
-	praat_addAction1 (classPattern, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classPattern, 0, U"Formula...", 0, 1, DO_Pattern_formula);
-	praat_addAction1 (classPattern, 0, U"Set value...", 0, 1, DO_Pattern_setValue);
-	praat_addAction1 (classPattern, 0, U"To Matrix", 0, 0, DO_Pattern_to_Matrix);
+	praat_addAction1 (classPattern, 0, U"Draw", nullptr, 0, 0);
+	praat_addAction1 (classPattern, 0, U"Draw...", nullptr, 0, DO_Pattern_draw);
+	praat_addAction1 (classPattern, 0, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classPattern, 0, U"Formula...", nullptr, 1, DO_Pattern_formula);
+	praat_addAction1 (classPattern, 0, U"Set value...", nullptr, 1, DO_Pattern_setValue);
+	praat_addAction1 (classPattern, 0, U"To Matrix", nullptr, 0, DO_Pattern_to_Matrix);
 
-	praat_addAction2 (classPattern, 1, classCategories, 1, U"To TableOfReal", 0, 0, DO_Matrix_Categories_to_TableOfReal);
+	praat_addAction2 (classPattern, 1, classCategories, 1, U"To TableOfReal", nullptr, 0, DO_Matrix_Categories_to_TableOfReal);
+	praat_addAction2 (classPattern, 1, classCategories, 1, U"To Discriminant", nullptr, 0, DO_Pattern_and_Categories_to_Discriminant);
 
-	praat_addAction2 (classPattern, 1, classCategories, 1, U"To Discriminant", 0, 0, DO_Pattern_and_Categories_to_Discriminant);
-
-	praat_addAction1 (classPCA, 0, U"PCA help", 0, 0, DO_PCA_help);
-	praat_addAction1 (classPCA, 0, DRAW_BUTTON, 0, 0, 0);
+	praat_addAction1 (classPCA, 0, U"PCA help", nullptr, 0, DO_PCA_help);
+	praat_addAction1 (classPCA, 0, DRAW_BUTTON, nullptr, 0, 0);
 	praat_Eigen_draw_init (classPCA);
-	praat_addAction1 (classPCA, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (classPCA, 0, QUERY_BUTTON, nullptr, 0, 0);
 	praat_Eigen_query_init (classPCA);
-	praat_addAction1 (classPCA, 1, U"-- pca --", 0, 1, 0);
-	praat_addAction1 (classPCA, 1, U"Get centroid element...", 0, 1, DO_PCA_getCentroidElement);
-	praat_addAction1 (classPCA, 1, U"Get equality of eigenvalues...", 0, 1, DO_PCA_getEqualityOfEigenvalues);
-	praat_addAction1 (classPCA, 1, U"Get fraction variance accounted for...", 0, 1, DO_PCA_getFractionVAF);
-	praat_addAction1 (classPCA, 1, U"Get number of components (VAF)...", 0, 1, DO_PCA_getNumberOfComponentsVAF);
-	praat_addAction1 (classPCA, 2, U"Get angle between pc1-pc2 planes", 0, 1, DO_PCAs_getAngleBetweenPc1Pc2Plane_degrees);
-	praat_addAction1 (classPCA, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classPCA, 1, U"Invert eigenvector...", 0, 1, DO_PCA_invertEigenvector);
-	praat_addAction1 (classPCA, 0, U"Align eigenvectors", 0, 1, DO_Eigens_alignEigenvectors);
-	praat_addAction1 (classPCA, 2, U"To Procrustes...", 0, 0, DO_PCAs_to_Procrustes);
-	praat_addAction1 (classPCA, 0, U"To TableOfReal (reconstruct 1)...", 0, 0, DO_PCA_to_TableOfReal_reconstruct1);
-	praat_addAction1 (classPCA, 0, U"& TableOfReal: To Configuration?", 0, 0, DO_hint_PCA_and_TableOfReal_to_Configuration);
-	praat_addAction1 (classPCA, 0, U"& Configuration (reconstruct)?", 0, 0, DO_hint_PCA_and_Configuration_to_TableOfReal_reconstruct);
-	praat_addAction1 (classPCA, 0, U"& Covariance: Project?", 0, 0, DO_hint_PCA_and_Covariance_Project);
-	praat_addAction2 (classPCA, 1, classConfiguration, 1, U"To TableOfReal (reconstruct)", 0, 0, DO_PCA_and_Configuration_to_TableOfReal_reconstruct);
-	praat_addAction2 (classPCA, 1, classSSCP, 1, U"Project", 0, 0, DO_Eigen_and_SSCP_project);
-	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To Configuration...", 0, 0, DO_PCA_and_TableOfReal_to_Configuration);
-	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To TableOfReal (z-scores)...", 0, 0, DO_PCA_and_TableOfReal_to_TableOfReal_zscores);
-	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"Get fraction variance...", 0, 0, DO_PCA_and_TableOfReal_getFractionVariance);
-	praat_addAction2 (classPCA, 1, classCovariance, 1, U"Project", 0, 0, DO_Eigen_and_Covariance_project);
+	praat_addAction1 (classPCA, 1, U"-- pca --", nullptr, 1, 0);
+	praat_addAction1 (classPCA, 1, U"Get centroid element...", nullptr, 1, DO_PCA_getCentroidElement);
+	praat_addAction1 (classPCA, 1, U"Get equality of eigenvalues...", nullptr, 1, DO_PCA_getEqualityOfEigenvalues);
+	praat_addAction1 (classPCA, 1, U"Get fraction variance accounted for...", nullptr, 1, DO_PCA_getFractionVAF);
+	praat_addAction1 (classPCA, 1, U"Get number of components (VAF)...", nullptr, 1, DO_PCA_getNumberOfComponentsVAF);
+	praat_addAction1 (classPCA, 2, U"Get angle between pc1-pc2 planes", nullptr, 1, DO_PCAs_getAngleBetweenPc1Pc2Plane_degrees);
+	praat_addAction1 (classPCA, 0, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classPCA, 1, U"Invert eigenvector...", nullptr, 1, DO_PCA_invertEigenvector);
+	praat_addAction1 (classPCA, 0, U"Align eigenvectors", nullptr, 1, DO_Eigens_alignEigenvectors);
+	praat_addAction1 (classPCA, 2, U"To Procrustes...", nullptr, 0, DO_PCAs_to_Procrustes);
+	praat_addAction1 (classPCA, 0, U"To TableOfReal (reconstruct 1)...", nullptr, 0, DO_PCA_to_TableOfReal_reconstruct1);
+	praat_addAction1 (classPCA, 0, U"& TableOfReal: To Configuration?", nullptr, 0, DO_hint_PCA_and_TableOfReal_to_Configuration);
+	praat_addAction1 (classPCA, 0, U"& Configuration (reconstruct)?", nullptr, 0, DO_hint_PCA_and_Configuration_to_TableOfReal_reconstruct);
+	praat_addAction1 (classPCA, 0, U"& Covariance: Project?", nullptr, 0, DO_hint_PCA_and_Covariance_Project);
+	praat_addAction2 (classPCA, 1, classConfiguration, 1, U"To TableOfReal (reconstruct)", nullptr, 0, DO_PCA_and_Configuration_to_TableOfReal_reconstruct);
+	praat_addAction2 (classPCA, 1, classMatrix, 1, U"To Matrix (pc)...", nullptr, praat_HIDDEN, DO_PCA_and_Matrix_to_Matrix_projectColumns);
+	praat_addAction2 (classPCA, 1, classMatrix, 1, U"To Matrix (project rows)...", nullptr, 0, DO_PCA_and_Matrix_to_Matrix_projectRows);
+	praat_addAction2 (classPCA, 1, classMatrix, 1, U"To Matrix (project columns)...", nullptr, 0, DO_PCA_and_Matrix_to_Matrix_projectColumns);
+	praat_addAction2 (classPCA, 1, classPattern, 1, U"To Matrix (project rows)...", nullptr, 0, DO_PCA_and_Matrix_to_Matrix_projectRows);
+	praat_addAction2 (classPCA, 1, classSSCP, 1, U"Project", nullptr, 0, DO_Eigen_and_SSCP_project);
+	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To TableOfReal...", nullptr, 0, DO_PCA_and_TableOfReal_to_TableOfReal_projectRows);
+	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To TableOfReal (project rows)...", nullptr, 0, DO_PCA_and_TableOfReal_to_TableOfReal_projectRows);
+	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To Configuration...", nullptr, 0, DO_PCA_and_TableOfReal_to_Configuration);
+	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"To TableOfReal (z-scores)...", nullptr, 0, DO_PCA_and_TableOfReal_to_TableOfReal_zscores);
+	praat_addAction2 (classPCA, 1, classTableOfReal, 1, U"Get fraction variance...", nullptr, 0, DO_PCA_and_TableOfReal_getFractionVariance);
+	praat_addAction2 (classPCA, 1, classCovariance, 1, U"Project", nullptr, 0, DO_Eigen_and_Covariance_project);
 
 	praat_Eigen_Spectrogram_project (classPCA, classSpectrogram);
 	praat_Eigen_Spectrogram_project (classPCA, classBarkSpectrogram);
@@ -8804,27 +9341,27 @@ void praat_uvafon_David_init () {
 	praat_Eigen_Matrix_project (classPCA, classBarkFilter); // deprecated 2014
 	praat_Eigen_Matrix_project (classPCA, classMelFilter); // deprecated 2014
 
-	praat_addAction1 (classPermutation, 0, U"Permutation help", 0, 0, DO_Permutation_help);
+	praat_addAction1 (classPermutation, 0, U"Permutation help", nullptr, 0, DO_Permutation_help);
 	praat_addAction1 (classPermutation, 0, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classPermutation, 1, U"Get number of elements", 0, 1, DO_Permutation_getNumberOfElements);
-	praat_addAction1 (classPermutation, 1, U"Get value...", 0, 1, DO_Permutation_getValueAtIndex);
-	praat_addAction1 (classPermutation, 1, U"Get index...", 0, 1, DO_Permutation_getIndexAtValue);
+	praat_addAction1 (classPermutation, 1, U"Get number of elements", nullptr, 1, DO_Permutation_getNumberOfElements);
+	praat_addAction1 (classPermutation, 1, U"Get value...", nullptr, 1, DO_Permutation_getValueAtIndex);
+	praat_addAction1 (classPermutation, 1, U"Get index...", nullptr, 1, DO_Permutation_getIndexAtValue);
 	praat_addAction1 (classPermutation, 0, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classPermutation, 1, U"Sort", 0, 1, DO_Permutation_sort);
-	praat_addAction1 (classPermutation, 1, U"Swap blocks...", 0, 1, DO_Permutation_swapBlocks);
-	praat_addAction1 (classPermutation, 1, U"Swap numbers...", 0, 1, DO_Permutation_swapNumbers);
-	praat_addAction1 (classPermutation, 1, U"Swap positions...", 0, 1, DO_Permutation_swapPositions);
-	praat_addAction1 (classPermutation, 1, U"Swap one from range...", 0, 1, DO_Permutation_swapOneFromRange);
-	praat_addAction1 (classPermutation, 0, U"-- sequential permutations --", 0, 1, 0);
-	praat_addAction1 (classPermutation, 0, U"Next", 0, 1, DO_Permutations_next);
-	praat_addAction1 (classPermutation, 0, U"Previous", 0, 1, DO_Permutations_previous);
-	praat_addAction1 (classPermutation, 1, U"Permute randomly...", 0, 0, DO_Permutation_permuteRandomly);
-	praat_addAction1 (classPermutation, 1, U"Permute randomly (blocks)...", 0, 0, DO_Permutation_permuteBlocksRandomly);
-	praat_addAction1 (classPermutation, 1, U"Interleave...", 0, 0, DO_Permutation_interleave);
-	praat_addAction1 (classPermutation, 1, U"Rotate...", 0, 0, DO_Permutation_rotate);
-	praat_addAction1 (classPermutation, 1, U"Reverse...", 0, 0, DO_Permutation_reverse);
-	praat_addAction1 (classPermutation, 1, U"Invert", 0, 0, DO_Permutation_invert);
-	praat_addAction1 (classPermutation, 0, U"Multiply", 0, 0, DO_Permutations_multiply);
+	praat_addAction1 (classPermutation, 1, U"Sort", nullptr, 1, DO_Permutation_sort);
+	praat_addAction1 (classPermutation, 1, U"Swap blocks...", nullptr, 1, DO_Permutation_swapBlocks);
+	praat_addAction1 (classPermutation, 1, U"Swap numbers...", nullptr, 1, DO_Permutation_swapNumbers);
+	praat_addAction1 (classPermutation, 1, U"Swap positions...", nullptr, 1, DO_Permutation_swapPositions);
+	praat_addAction1 (classPermutation, 1, U"Swap one from range...", nullptr, 1, DO_Permutation_swapOneFromRange);
+	praat_addAction1 (classPermutation, 0, U"-- sequential permutations --", nullptr, 1, 0);
+	praat_addAction1 (classPermutation, 0, U"Next", nullptr, 1, DO_Permutations_next);
+	praat_addAction1 (classPermutation, 0, U"Previous", nullptr, 1, DO_Permutations_previous);
+	praat_addAction1 (classPermutation, 1, U"Permute randomly...", nullptr, 0, DO_Permutation_permuteRandomly);
+	praat_addAction1 (classPermutation, 1, U"Permute randomly (blocks)...", nullptr, 0, DO_Permutation_permuteBlocksRandomly);
+	praat_addAction1 (classPermutation, 1, U"Interleave...", nullptr, 0, DO_Permutation_interleave);
+	praat_addAction1 (classPermutation, 1, U"Rotate...", nullptr, 0, DO_Permutation_rotate);
+	praat_addAction1 (classPermutation, 1, U"Reverse...", nullptr, 0, DO_Permutation_reverse);
+	praat_addAction1 (classPermutation, 1, U"Invert", nullptr, 0, DO_Permutation_invert);
+	praat_addAction1 (classPermutation, 0, U"Multiply", nullptr, 0, DO_Permutations_multiply);
 
 	praat_addAction1 (classPitch, 2, U"To DTW...", U"To PointProcess", praat_HIDDEN, DO_Pitches_to_DTW);
 
@@ -8842,13 +9379,13 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classPolygon, 0, U"Scale...", U"Rotate...", 1, DO_Polygon_scale);
 	praat_addAction1 (classPolygon, 0, U"Reverse X", U"Scale...", 1, DO_Polygon_reverseX);
 	praat_addAction1 (classPolygon, 0, U"Reverse Y", U"Reverse X", 1, DO_Polygon_reverseY);
-	praat_addAction1 (classPolygon, 0, U"Simplify", 0, praat_HIDDEN, DO_Polygon_simplify);
-	praat_addAction1 (classPolygon, 0, U"Convex hull", 0, 0, DO_Polygon_convexHull);
-	praat_addAction1 (classPolygon, 0, U"Circular permutation...", 0, praat_HIDDEN, DO_Polygon_circularPermutation);
+	praat_addAction1 (classPolygon, 0, U"Simplify", nullptr, praat_HIDDEN, DO_Polygon_simplify);
+	praat_addAction1 (classPolygon, 0, U"Convex hull", nullptr, 0, DO_Polygon_convexHull);
+	praat_addAction1 (classPolygon, 0, U"Circular permutation...", nullptr, praat_HIDDEN, DO_Polygon_circularPermutation);
 
-	praat_addAction2 (classPolygon, 1, classCategories, 1, U"Draw...", 0, 0, DO_Polygon_Categories_draw);
+	praat_addAction2 (classPolygon, 1, classCategories, 1, U"Draw...", nullptr, 0, DO_Polygon_Categories_draw);
 
-	praat_addAction1 (classPolynomial, 0, U"Polynomial help", 0, 0, DO_Polynomial_help);
+	praat_addAction1 (classPolynomial, 0, U"Polynomial help", nullptr, 0, DO_Polynomial_help);
 	praat_FunctionTerms_init (classPolynomial);
 	praat_addAction1 (classPolynomial, 0, U"-- area --", U"Get x of maximum...", 1, 0);
 	praat_addAction1 (classPolynomial, 1, U"Get area...", U"-- area --", 1, DO_Polynomial_getArea);
@@ -8856,27 +9393,27 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classPolynomial, 0, U"Scale coefficients (monic)", U"-- monic --", 1, DO_Polynomial_scaleCoefficients_monic);
 	praat_addAction1 (classPolynomial, 1, U"Get value (complex)...", U"Get value...", 1, DO_Polynomial_evaluate_z);
 	praat_addAction1 (classPolynomial, 0, U"To Spectrum...", U"Analyse", 0, DO_Polynomial_to_Spectrum);
-	praat_addAction1 (classPolynomial, 0, U"To Roots", 0, 0, DO_Polynomial_to_Roots);
-	praat_addAction1 (classPolynomial, 0, U"To Polynomial (derivative)", 0, 0, DO_Polynomial_getDerivative);
-	praat_addAction1 (classPolynomial, 0, U"To Polynomial (primitive)", 0, 0, DO_Polynomial_getPrimitive);
-	praat_addAction1 (classPolynomial, 0, U"Scale x...", 0, 0, DO_Polynomial_scaleX);
-	praat_addAction1 (classPolynomial, 2, U"Multiply", 0, 0, DO_Polynomials_multiply);
-	praat_addAction1 (classPolynomial, 2, U"Divide...", 0, 0, DO_Polynomials_divide);
-
-	praat_addAction1 (classRoots, 1, U"Roots help", 0, 0, DO_Roots_help);
-	praat_addAction1 (classRoots, 1, U"Draw...", 0, 0, DO_Roots_draw);
-	praat_addAction1 (classRoots, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classRoots, 1, U"Get number of roots", 0, 1, DO_Roots_getNumberOfRoots);
-	praat_addAction1 (classRoots, 1, U"-- roots --", 0, 1, 0);
-	praat_addAction1 (classRoots, 1, U"Get root...", 0, 1, DO_Roots_getRoot);
-	praat_addAction1 (classRoots, 1, U"Get real part of root...", 0, 1, DO_Roots_getRealPartOfRoot);
-	praat_addAction1 (classRoots, 1, U"Get imaginary part of root...", 0, 1, DO_Roots_getImaginaryPartOfRoot);
-	praat_addAction1 (classRoots, 1, MODIFY_BUTTON, 0, 0, 0);
-	praat_addAction1 (classRoots, 1, U"Set root...", 0, 1, DO_Roots_setRoot);
-	praat_addAction1 (classRoots, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classRoots, 0, U"To Spectrum...", 0, 0, DO_Roots_to_Spectrum);
-
-	praat_addAction2 (classRoots, 1, classPolynomial, 1, U"Polish roots", 0, 0, DO_Roots_and_Polynomial_polish);
+	praat_addAction1 (classPolynomial, 0, U"To Roots", nullptr, 0, DO_Polynomial_to_Roots);
+	praat_addAction1 (classPolynomial, 0, U"To Polynomial (derivative)", nullptr, 0, DO_Polynomial_getDerivative);
+	praat_addAction1 (classPolynomial, 0, U"To Polynomial (primitive)", nullptr, 0, DO_Polynomial_getPrimitive);
+	praat_addAction1 (classPolynomial, 0, U"Scale x...", nullptr, 0, DO_Polynomial_scaleX);
+	praat_addAction1 (classPolynomial, 2, U"Multiply", nullptr, 0, DO_Polynomials_multiply);
+	praat_addAction1 (classPolynomial, 2, U"Divide...", nullptr, 0, DO_Polynomials_divide);
+
+	praat_addAction1 (classRoots, 1, U"Roots help", nullptr, 0, DO_Roots_help);
+	praat_addAction1 (classRoots, 1, U"Draw...", nullptr, 0, DO_Roots_draw);
+	praat_addAction1 (classRoots, 1, QUERY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classRoots, 1, U"Get number of roots", nullptr, 1, DO_Roots_getNumberOfRoots);
+	praat_addAction1 (classRoots, 1, U"-- roots --", nullptr, 1, 0);
+	praat_addAction1 (classRoots, 1, U"Get root...", nullptr, 1, DO_Roots_getRoot);
+	praat_addAction1 (classRoots, 1, U"Get real part of root...", nullptr, 1, DO_Roots_getRealPartOfRoot);
+	praat_addAction1 (classRoots, 1, U"Get imaginary part of root...", nullptr, 1, DO_Roots_getImaginaryPartOfRoot);
+	praat_addAction1 (classRoots, 1, MODIFY_BUTTON, nullptr, 0, 0);
+	praat_addAction1 (classRoots, 1, U"Set root...", nullptr, 1, DO_Roots_setRoot);
+	praat_addAction1 (classRoots, 0, U"Analyse", nullptr, 0, 0);
+	praat_addAction1 (classRoots, 0, U"To Spectrum...", nullptr, 0, DO_Roots_to_Spectrum);
+
+	praat_addAction2 (classRoots, 1, classPolynomial, 1, U"Polish roots", nullptr, 0, DO_Roots_and_Polynomial_polish);
 
 	praat_addAction1 (classSound, 0, U"To TextGrid (silences)...", U"To IntervalTier", 1, DO_Sound_to_TextGrid_detectSilences);
     praat_addAction1 (classSound, 0, U"Play one channel...", U"Play", praat_HIDDEN, DO_Sound_playOneChannel);
@@ -8915,13 +9452,13 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classSound, 0, U"Copy channel ranges...", U"Extract all channels", praat_DEPTH_1 | praat_HIDDEN, DO_Sound_copyChannelRanges);
 	praat_addAction1 (classSound, 0, U"Trim silences...", U"Resample...", praat_DEPTH_1 | praat_HIDDEN, DO_Sound_trimSilences);
 	praat_addAction1 (classSound, 0, U"To KlattGrid (simple)...", U"To Manipulation...", 1, DO_Sound_to_KlattGrid_simple);
-	praat_addAction2 (classSound, 1, classPitch, 1, U"To FormantFilter...", 0, praat_HIDDEN, DO_Sound_and_Pitch_to_FormantFilter);
-	praat_addAction2 (classSound, 1, classPitch, 1, U"To Spectrogram (pitch-dependent)...", 0, 0, DO_Sound_and_Pitch_to_Spectrogram);
+	praat_addAction2 (classSound, 1, classPitch, 1, U"To FormantFilter...", nullptr, praat_HIDDEN, DO_Sound_and_Pitch_to_FormantFilter);
+	praat_addAction2 (classSound, 1, classPitch, 1, U"To Spectrogram (pitch-dependent)...", nullptr, 0, DO_Sound_and_Pitch_to_Spectrogram);
 
-	praat_addAction2 (classSound, 1, classPitch, 1, U"Change gender...", 0, 0, DO_Sound_and_Pitch_changeGender);
-	praat_addAction2 (classSound, 1, classPitch, 1, U"Change speaker...", 0, praat_HIDDEN, DO_Sound_and_Pitch_changeSpeaker);
-	praat_addAction2 (classSound, 1, classIntervalTier, 1, U"Cut parts matching label...", 0, 0, DO_Sound_and_IntervalTier_cutPartsMatchingLabel);
-	praat_addAction1 (classSpectrogram, 2, U"To DTW...", U"To Spectrum (slice)...", 0, DO_Spectrograms_to_DTW);
+	praat_addAction2 (classSound, 1, classPitch, 1, U"Change gender...", nullptr, 0, DO_Sound_and_Pitch_changeGender);
+	praat_addAction2 (classSound, 1, classPitch, 1, U"Change speaker...", nullptr, praat_HIDDEN, DO_Sound_and_Pitch_changeSpeaker);
+	praat_addAction2 (classSound, 1, classIntervalTier, 1, U"Cut parts matching label...", nullptr, 0, DO_Sound_and_IntervalTier_cutPartsMatchingLabel);
+	praat_addAction1 (classSpectrogram, 2, U"To DTW...", U"To Spectrum (slice)...", 1, DO_Spectrograms_to_DTW);
 	praat_addAction1 (classSpectrum, 0, U"Draw phases...", U"Draw (log freq)...", praat_DEPTH_1 | praat_HIDDEN, DO_Spectrum_drawPhases);
 	praat_addAction1 (classSpectrum, 0, U"Set real value in bin...", U"Formula...", praat_HIDDEN | praat_DEPTH_1, DO_Spectrum_setRealValueInBin);
 	praat_addAction1 (classSpectrum, 0, U"Set imaginary value in bin...", U"Formula...", praat_HIDDEN | praat_DEPTH_1, DO_Spectrum_setImaginaryValueInBin);
@@ -8934,23 +9471,23 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classSpectrum, 0, U"To Cepstrum", U"To Spectrogram", 1, DO_Spectrum_to_Cepstrum);
 	praat_addAction1 (classSpectrum, 0, U"To PowerCepstrum", U"To Cepstrum", 1, DO_Spectrum_to_PowerCepstrum);
 
-	praat_addAction1 (classSpeechSynthesizer, 0, U"SpeechSynthesizer help", 0, 0, DO_SpeechSynthesizer_help);
-	praat_addAction1 (classSpeechSynthesizer, 0, U"Play text...", 0, 0, DO_SpeechSynthesizer_playText);
-	praat_addAction1 (classSpeechSynthesizer, 0, U"To Sound...", 0, 0, DO_SpeechSynthesizer_to_Sound);
-	praat_addAction1 (classSpeechSynthesizer, 0, QUERY_BUTTON, 0, 0, 0);
-		praat_addAction1 (classSpeechSynthesizer, 1, U"Get voice name", 0, 1, DO_SpeechSynthesizer_getVoiceName);
-		praat_addAction1 (classSpeechSynthesizer, 1, U"Get voice variant", 0, 1, DO_SpeechSynthesizer_getVoiceVariant);
-	praat_addAction1 (classSpeechSynthesizer, 0, MODIFY_BUTTON, 0, 0, 0);
-		praat_addAction1 (classSpeechSynthesizer, 0, U"Set text input settings...", 0, 1, DO_SpeechSynthesizer_setTextInputSettings);
-		praat_addAction1 (classSpeechSynthesizer, 0, U"Set speech output settings...", 0, 1, DO_SpeechSynthesizer_setSpeechOutputSettings);
-	praat_addAction2 (classSpeechSynthesizer, 1, classTextGrid, 1, U"To Sound...", 0, 0, DO_SpeechSynthesizer_and_TextGrid_to_Sound);
-
-	praat_addAction3 (classSpeechSynthesizer, 1, classSound, 1, classTextGrid, 1, U"To TextGrid (align)...", 0, 0, DO_SpeechSynthesizer_and_Sound_and_TextGrid_align);
-    praat_addAction3 (classSpeechSynthesizer, 1, classSound, 1, classTextGrid, 1, U"To TextGrid (align,trim)...", 0, 0, DO_SpeechSynthesizer_and_Sound_and_TextGrid_align2);
-
-	praat_addAction1 (classSSCP, 0, U"SSCP help", 0, 0, DO_SSCP_help);
+	praat_addAction1 (classSpeechSynthesizer, 0, U"SpeechSynthesizer help", nullptr, 0, DO_SpeechSynthesizer_help);
+	praat_addAction1 (classSpeechSynthesizer, 0, U"Play text...", nullptr, 0, DO_SpeechSynthesizer_playText);
+	praat_addAction1 (classSpeechSynthesizer, 0, U"To Sound...", nullptr, 0, DO_SpeechSynthesizer_to_Sound);
+	praat_addAction1 (classSpeechSynthesizer, 0, QUERY_BUTTON, nullptr, 0, 0);
+		praat_addAction1 (classSpeechSynthesizer, 1, U"Get voice name", nullptr, 1, DO_SpeechSynthesizer_getVoiceName);
+		praat_addAction1 (classSpeechSynthesizer, 1, U"Get voice variant", nullptr, 1, DO_SpeechSynthesizer_getVoiceVariant);
+	praat_addAction1 (classSpeechSynthesizer, 0, MODIFY_BUTTON, nullptr, 0, 0);
+		praat_addAction1 (classSpeechSynthesizer, 0, U"Set text input settings...", nullptr, 1, DO_SpeechSynthesizer_setTextInputSettings);
+		praat_addAction1 (classSpeechSynthesizer, 0, U"Set speech output settings...", nullptr, 1, DO_SpeechSynthesizer_setSpeechOutputSettings);
+	praat_addAction2 (classSpeechSynthesizer, 1, classTextGrid, 1, U"To Sound...", nullptr, 0, DO_SpeechSynthesizer_and_TextGrid_to_Sound);
+
+	praat_addAction3 (classSpeechSynthesizer, 1, classSound, 1, classTextGrid, 1, U"To TextGrid (align)...", nullptr, 0, DO_SpeechSynthesizer_and_Sound_and_TextGrid_align);
+    praat_addAction3 (classSpeechSynthesizer, 1, classSound, 1, classTextGrid, 1, U"To TextGrid (align,trim)...", nullptr, 0, DO_SpeechSynthesizer_and_Sound_and_TextGrid_align2);
+
+	praat_addAction1 (classSSCP, 0, U"SSCP help", nullptr, 0, DO_SSCP_help);
 	praat_TableOfReal_init2 (classSSCP);
-	praat_removeAction (classSSCP, NULL, NULL, U"Append");
+	praat_removeAction (classSSCP, nullptr, nullptr, U"Append");
 	praat_addAction1 (classSSCP, 0, U"Draw sigma ellipse...", DRAW_BUTTON, 1, DO_SSCP_drawSigmaEllipse);
 	praat_addAction1 (classSSCP, 0, U"Draw confidence ellipse...", DRAW_BUTTON, 1, DO_SSCP_drawConfidenceEllipse);
 	praat_SSCP_query_init (classSSCP);
@@ -8960,21 +9497,21 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classSSCP, 1, U"Get confidence ellipse area...", U"Get sigma ellipse area...", 1, DO_SSCP_getConfidenceEllipseArea);
 	praat_addAction1 (classSSCP, 1, U"Get fraction variation...", U"Get confidence ellipse area...", 1, DO_SSCP_getFractionVariation);
 	praat_SSCP_extract_init (classSSCP);
-	praat_addAction1 (classSSCP, 0, U"To PCA", 0, 0, DO_SSCP_to_PCA);
-	praat_addAction1 (classSSCP, 0, U"To Correlation", 0, 0, DO_SSCP_to_Correlation);
-	praat_addAction1 (classSSCP, 0, U"To Covariance...", 0, 0, DO_SSCP_to_Covariance);
+	praat_addAction1 (classSSCP, 0, U"To PCA", nullptr, 0, DO_SSCP_to_PCA);
+	praat_addAction1 (classSSCP, 0, U"To Correlation", nullptr, 0, DO_SSCP_to_Correlation);
+	praat_addAction1 (classSSCP, 0, U"To Covariance...", nullptr, 0, DO_SSCP_to_Covariance);
 
-	praat_addAction1 (classStrings, 0, U"To Categories", 0, 0, DO_Strings_to_Categories);
-	praat_addAction1 (classStrings, 0, U"Append", 0, 0, DO_Strings_append);
+	praat_addAction1 (classStrings, 0, U"To Categories", nullptr, 0, DO_Strings_to_Categories);
+	praat_addAction1 (classStrings, 0, U"Append", nullptr, 0, DO_Strings_append);
 	praat_addAction1 (classStrings, 0, U"Change...", U"Replace all...", praat_HIDDEN, DO_Strings_change);
 	praat_addAction1 (classStrings, 0, U"Extract part...", U"Replace all...", 0, DO_Strings_extractPart);
 	praat_addAction1 (classStrings, 0, U"To Permutation...", U"To Distributions", 0, DO_Strings_to_Permutation);
 	praat_addAction1 (classStrings, 2, U"To EditDistanceTable", U"To Distributions", 0, DO_Strings_to_EditDistanceTable);
 
-	praat_addAction1 (classSVD, 0, U"To TableOfReal...", 0, 0, DO_SVD_to_TableOfReal);
-	praat_addAction1 (classSVD, 0, U"Extract left singular vectors", 0, 0, DO_SVD_extractLeftSingularVectors);
-	praat_addAction1 (classSVD, 0, U"Extract right singular vectors", 0, 0, DO_SVD_extractRightSingularVectors);
-	praat_addAction1 (classSVD, 0, U"Extract singular values", 0, 0, DO_SVD_extractSingularValues);
+	praat_addAction1 (classSVD, 0, U"To TableOfReal...", nullptr, 0, DO_SVD_to_TableOfReal);
+	praat_addAction1 (classSVD, 0, U"Extract left singular vectors", nullptr, 0, DO_SVD_extractLeftSingularVectors);
+	praat_addAction1 (classSVD, 0, U"Extract right singular vectors", nullptr, 0, DO_SVD_extractRightSingularVectors);
+	praat_addAction1 (classSVD, 0, U"Extract singular values", nullptr, 0, DO_SVD_extractSingularValues);
 		praat_addAction1 (classTable, 0, U"Draw ellipses...", U"Draw ellipse (standard deviation)...", praat_DEPTH_1, DO_Table_drawEllipses);
 		praat_addAction1 (classTable, 0, U"Box plots...", U"Draw ellipses...", praat_DEPTH_1 | praat_HIDDEN, DO_Table_boxPlots);
 		praat_addAction1 (classTable, 0, U"Normal probability plot...", U"Box plots...", praat_DEPTH_1 | praat_HIDDEN, DO_Table_normalProbabilityPlot);
@@ -9007,42 +9544,40 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classTable, 0, U"Extract rows where (mahalanobis)...", U"Extract rows where...", praat_DEPTH_1| praat_HIDDEN, DO_Table_extractRowsMahalanobisWhere);
 	praat_addAction1 (classTable, 0, U"-- Extract columns ----", U"Extract rows where (mahalanobis)...", praat_DEPTH_1| praat_HIDDEN, 0);
 	praat_addAction1 (classTable, 0, U"Extract column ranges...", U"-- Extract columns ----", praat_DEPTH_1| praat_HIDDEN, DO_Table_extractColumnRanges);
-	
 
-	praat_addAction1 (classTable, 0, U"To KlattTable", 0, praat_HIDDEN, DO_Table_to_KlattTable);
+	praat_addAction1 (classTable, 0, U"To KlattTable", nullptr, praat_HIDDEN, DO_Table_to_KlattTable);
 	praat_addAction1 (classTable, 1, U"Get median absolute deviation...", U"Get standard deviation...", 1, DO_Table_getMedianAbsoluteDeviation);
-	praat_addAction1 (classTable, 0, U"To StringsIndex (column)...", 0, praat_HIDDEN, DO_Table_to_StringsIndex_column);
+	praat_addAction1 (classTable, 0, U"To StringsIndex (column)...", nullptr, praat_HIDDEN, DO_Table_to_StringsIndex_column);
 
 	praat_addAction1 (classTableOfReal, 1, U"Report multivariate normality...", U"Get column stdev (label)...",
 		praat_DEPTH_1 | praat_HIDDEN, DO_TableOfReal_reportMultivariateNormality);
 	praat_addAction1 (classTableOfReal, 0, U"Append columns", U"Append", 1, DO_TableOfReal_appendColumns);
-	praat_addAction1 (classTableOfReal, 0, U"Multivariate statistics -", 0, 0, 0);
-	praat_addAction1 (classTableOfReal, 0, U"To Discriminant", 0, 1, DO_TableOfReal_to_Discriminant);
-	praat_addAction1 (classTableOfReal, 0, U"To PCA", 0, 1, DO_TableOfReal_to_PCA);
-	praat_addAction1 (classTableOfReal, 0, U"To SSCP...", 0, 1, DO_TableOfReal_to_SSCP);
-	praat_addAction1 (classTableOfReal, 0, U"To Covariance", 0, 1, DO_TableOfReal_to_Covariance);
-	praat_addAction1 (classTableOfReal, 0, U"To Correlation", 0, 1, DO_TableOfReal_to_Correlation);
-	praat_addAction1 (classTableOfReal, 0, U"To Correlation (rank)", 0, 1, DO_TableOfReal_to_Correlation_rank);
-	praat_addAction1 (classTableOfReal, 0, U"To CCA...", 0, 1, DO_TableOfReal_to_CCA);
-	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (means by row labels)...", 0, 1, DO_TableOfReal_meansByRowLabels);
-	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (medians by row labels)...", 0, 1, DO_TableOfReal_mediansByRowLabels);
-
-	praat_addAction1 (classTableOfReal, 0, U"-- configurations --", 0, 1, 0);
-	praat_addAction1 (classTableOfReal, 0, U"To Configuration (pca)...",	0, 1, DO_TableOfReal_to_Configuration_pca);
-	praat_addAction1 (classTableOfReal, 0, U"To Configuration (lda)...", 0, 1, DO_TableOfReal_to_Configuration_lda);
+	praat_addAction1 (classTableOfReal, 0, U"Multivariate statistics -", nullptr, 0, 0);
+	praat_addAction1 (classTableOfReal, 0, U"To Discriminant", nullptr, 1, DO_TableOfReal_to_Discriminant);
+	praat_addAction1 (classTableOfReal, 0, U"To PCA", nullptr, 1, DO_TableOfReal_to_PCA_byRows);
+	praat_addAction1 (classTableOfReal, 0, U"To SSCP...", nullptr, 1, DO_TableOfReal_to_SSCP);
+	praat_addAction1 (classTableOfReal, 0, U"To Covariance", nullptr, 1, DO_TableOfReal_to_Covariance);
+	praat_addAction1 (classTableOfReal, 0, U"To Correlation", nullptr, 1, DO_TableOfReal_to_Correlation);
+	praat_addAction1 (classTableOfReal, 0, U"To Correlation (rank)", nullptr, 1, DO_TableOfReal_to_Correlation_rank);
+	praat_addAction1 (classTableOfReal, 0, U"To CCA...", nullptr, 1, DO_TableOfReal_to_CCA);
+	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (means by row labels)...", nullptr, 1, DO_TableOfReal_meansByRowLabels);
+	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (medians by row labels)...", nullptr, 1, DO_TableOfReal_mediansByRowLabels);
+
+	praat_addAction1 (classTableOfReal, 0, U"-- configurations --", nullptr, 1, 0);
+	praat_addAction1 (classTableOfReal, 0, U"To Configuration (pca)...", nullptr, 1, DO_TableOfReal_to_Configuration_pca);
+	praat_addAction1 (classTableOfReal, 0, U"To Configuration (lda)...", nullptr, 1, DO_TableOfReal_to_Configuration_lda);
 	praat_addAction1 (classTableOfReal, 2, U"-- between tables --", U"To Configuration (lda)...", 1, 0);
-	praat_addAction1 (classTableOfReal, 2, U"To TableOfReal (cross-correlations)...", 0, praat_HIDDEN + praat_DEPTH_1, DO_TableOfReal_and_TableOfReal_crossCorrelations);
-
+	praat_addAction1 (classTableOfReal, 2, U"To TableOfReal (cross-correlations)...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_TableOfReal_and_TableOfReal_crossCorrelations);
 
 	praat_addAction1 (classTableOfReal, 1, U"To Pattern and Categories...", U"To Matrix", 1, DO_TableOfReal_to_Pattern_and_Categories);
 	praat_addAction1 (classTableOfReal, 1, U"Split into Pattern and Categories...", U"To Pattern and Categories...", praat_DEPTH_1 | praat_HIDDEN, DO_TableOfReal_to_Pattern_and_Categories);
 	praat_addAction1 (classTableOfReal, 0, U"To Permutation (sort row labels)", U"To Matrix", 1, DO_TableOfReal_to_Permutation_sortRowlabels);
 
-	praat_addAction1 (classTableOfReal, 1, U"To SVD", 0, praat_HIDDEN, DO_TableOfReal_to_SVD);
-	praat_addAction1 (classTableOfReal, 2, U"To GSVD", 0, praat_HIDDEN, DO_TablesOfReal_to_GSVD);
-	praat_addAction1 (classTableOfReal, 2, U"To Eigen (gsvd)", 0, praat_HIDDEN, DO_TablesOfReal_to_Eigen_gsvd);
+	praat_addAction1 (classTableOfReal, 1, U"To SVD", nullptr, praat_HIDDEN, DO_TableOfReal_to_SVD);
+	praat_addAction1 (classTableOfReal, 2, U"To GSVD", nullptr, praat_HIDDEN, DO_TablesOfReal_to_GSVD);
+	praat_addAction1 (classTableOfReal, 2, U"To Eigen (gsvd)", nullptr, praat_HIDDEN, DO_TablesOfReal_to_Eigen_gsvd);
 
-	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (cholesky)...", 0, praat_HIDDEN, DO_TableOfReal_choleskyDecomposition);
+	praat_addAction1 (classTableOfReal, 0, U"To TableOfReal (cholesky)...", nullptr, praat_HIDDEN, DO_TableOfReal_choleskyDecomposition);
 
 	praat_addAction1 (classTableOfReal, 0, U"-- scatter plots --", U"Draw top and bottom lines...", 1, 0);
 	praat_addAction1 (classTableOfReal, 0, U"Draw scatter plot...", U"-- scatter plots --", 1, DO_TableOfReal_drawScatterPlot);
@@ -9054,16 +9589,16 @@ void praat_uvafon_David_init () {
 	praat_addAction1 (classTableOfReal, 1, U"Draw rows as histogram...", U"Draw row as histogram...", praat_DEPTH_1 | praat_HIDDEN, DO_TableOfReal_drawRowsAsHistogram);
 	praat_addAction1 (classTableOfReal, 1, U"Draw column as distribution...", U"Draw rows as histogram...", praat_DEPTH_1, DO_TableOfReal_drawColumnAsDistribution);
 
-	praat_addAction2 (classStrings, 1, classPermutation, 1, U"Permute strings", 0, 0, DO_Strings_and_Permutation_permuteStrings);
+	praat_addAction2 (classStrings, 1, classPermutation, 1, U"Permute strings", nullptr, 0, DO_Strings_and_Permutation_permuteStrings);
 
-	praat_addAction2 (classTableOfReal, 1, classPermutation, 1, U"Permute rows",	0, 0, DO_TableOfReal_and_Permutation_permuteRows);
+	praat_addAction2 (classTableOfReal, 1, classPermutation, 1, U"Permute rows", nullptr, 0, DO_TableOfReal_and_Permutation_permuteRows);
 
 	praat_addAction1 (classTextGrid, 0, U"Extend time...", U"Scale times...", 2, DO_TextGrid_extendTime);
 	praat_addAction1 (classTextGrid, 1, U"Set tier name...", U"Remove tier...", 1, DO_TextGrid_setTierName);
 	praat_addAction1 (classTextGrid, 0, U"Replace interval text...", U"Set interval text...", 2, DO_TextGrid_replaceIntervalTexts);
 	praat_addAction1 (classTextGrid, 0, U"Replace point text...", U"Set point text...", 2, DO_TextGrid_replacePointTexts);
 	praat_addAction1 (classTextGrid, 2, U"To Table (text alignment)...", U"Extract part...", 0, DO_TextGrids_to_Table_textAlignmentment);
-	praat_addAction2 (classTextGrid, 2, classEditCostsTable, 1, U"To Table (text alignment)...", 0, 0, DO_TextGrids_and_EditCostsTable_to_Table_textAlignmentment);
+	praat_addAction2 (classTextGrid, 2, classEditCostsTable, 1, U"To Table (text alignment)...", nullptr, 0, DO_TextGrids_and_EditCostsTable_to_Table_textAlignmentment);
 
 	INCLUDE_MANPAGES (manual_dwtools_init)
 	INCLUDE_MANPAGES (manual_Permutation_init)
diff --git a/dwtools/praat_HMM_init.cpp b/dwtools/praat_HMM_init.cpp
index a00873e..b08e64f 100644
--- a/dwtools/praat_HMM_init.cpp
+++ b/dwtools/praat_HMM_init.cpp
@@ -1,26 +1,21 @@
 /* praat_HMM_init.cpp
  *
- * Copyright (C) 2010-2011 David Weenink
+ * Copyright (C) 2010-2011,2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
-	djmw 20101003
-*/
-
 #include "praat.h"
 #include "GaussianMixture.h"
 #include "HMM.h"
@@ -35,23 +30,20 @@
 
 #define GaussianMixture_OPTION_MENU_CRITERIA \
 	OPTIONMENU (U"Criterion based on", 1) \
-	OPTION (U"Likelihood") \
-	OPTION (U"Message length") \
-	OPTION (U"Bayes information") \
-	OPTION (U"Akaike information") \
-	OPTION (U"Akaike corrected") \
-	OPTION (U"Complete-data ML")
-
-Correlation GaussianMixture_and_TableOfReal_to_Correlation2 (GaussianMixture me, thou);
+		OPTION (U"Likelihood") \
+		OPTION (U"Message length") \
+		OPTION (U"Bayes information") \
+		OPTION (U"Akaike information") \
+		OPTION (U"Akaike corrected") \
+		OPTION (U"Complete-data ML")
 
 DIRECT (GaussianMixture_help)
 	Melder_help (U"GaussianMixture");
 END
 
-FORM (GaussianMixture_drawConcentrationEllipses, U"GaussianMixture: Draw concentration ellipses",
-      U"GaussianMixture: Draw concentration ellipses...")
+FORM (GaussianMixture_drawConcentrationEllipses, U"GaussianMixture: Draw concentration ellipses", U"GaussianMixture: Draw concentration ellipses...")
 	POSITIVE (U"Number of sigmas", U"1.0")
-	BOOLEAN (U"Principal component plane", 1)
+	BOOLEAN (U"Principal component plane", true)
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -59,7 +51,7 @@ FORM (GaussianMixture_drawConcentrationEllipses, U"GaussianMixture: Draw concent
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -74,8 +66,7 @@ DO
 	}
 END
 
-FORM (GaussianMixture_and_PCA_drawConcentrationEllipses, U"GaussianMixture & PCA: Draw concentration ellipses",
-      U"GaussianMixture & PCA: Draw concentration ellipses...")
+FORM (GaussianMixture_and_PCA_drawConcentrationEllipses, U"GaussianMixture & PCA: Draw concentration ellipses", U"GaussianMixture & PCA: Draw concentration ellipses...")
 	POSITIVE (U"Number of sigmas", U"1.0")
 	INTEGER (U"X-dimension", U"1")
 	INTEGER (U"Y-dimension", U"2")
@@ -84,13 +75,13 @@ FORM (GaussianMixture_and_PCA_drawConcentrationEllipses, U"GaussianMixture & PCA
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0")
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	GaussianMixture me = FIRST (GaussianMixture);
 	PCA pca = FIRST (PCA);
 	GaussianMixture_and_PCA_drawConcentrationEllipses (me, pca, GRAPHICS,
-		GET_REAL (U"Number of sigmas"), 0, NULL, GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
+		GET_REAL (U"Number of sigmas"), 0, nullptr, GET_INTEGER (U"X-dimension"), GET_INTEGER (U"Y-dimension"),
 		GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
 		GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
@@ -104,7 +95,7 @@ FORM (GaussianMixture_drawMarginalPdf, U"GaussianMixture: Draw marginal pdf", U"
 	REAL (U"right Vertical range", U"0.0")
 	NATURAL (U"Number of points", U"500")
 	INTEGER (U"Number of bins", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -131,7 +122,7 @@ DIRECT (GaussianMixture_getDimensionOfComponent)
 	}
 END
 
-FORM (GaussianMixture_getProbabilityAtPosition, U"GaussianMixture: Get probability at position", 0)
+FORM (GaussianMixture_getProbabilityAtPosition, U"GaussianMixture: Get probability at position", nullptr)
 	SENTENCE (U"Position", U"100.0 300.0")
 	OK
 DO
@@ -161,16 +152,21 @@ FORM (GaussianMixture_and_PCA_drawMarginalPdf, U"GaussianMixture & PCA: Draw pdf
 	REAL (U"right Vertical range", U"0.0")
 	NATURAL (U"Number of points", U"500")
 	INTEGER (U"Number of bins", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	GaussianMixture me = FIRST (GaussianMixture);
-	PCA pca = FIRST (PCA);
-	GaussianMixture_and_PCA_drawMarginalPdf (me, pca, GRAPHICS,
-		GET_INTEGER (U"X-dimension"), GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-		GET_INTEGER (U"Number of points"), GET_INTEGER (U"Number of bins"), GET_INTEGER (U"Garnish"));
+	PCA thee = FIRST (PCA);
+	GaussianMixture_and_PCA_drawMarginalPdf (me, thee, GRAPHICS,
+		GET_INTEGER (U"X-dimension"),
+		GET_REAL (U"left Horizontal range"),
+		GET_REAL (U"right Horizontal range"),
+		GET_REAL (U"left Vertical range"),
+		GET_REAL (U"right Vertical range"),
+		GET_INTEGER (U"Number of points"),
+		GET_INTEGER (U"Number of bins"),
+		GET_INTEGER (U"Garnish"));
 END
 
 FORM (GaussianMixture_and_PCA_to_Matrix_density, U"GaussianMixture & PCA: To Matrix density", U"GaussianMixture & PCA: To Matrix (density)...")
@@ -185,42 +181,52 @@ FORM (GaussianMixture_and_PCA_to_Matrix_density, U"GaussianMixture & PCA: To Mat
 	OK
 DO
 	GaussianMixture me = FIRST (GaussianMixture);
-	PCA pca = FIRST (PCA);
-	praat_new (GaussianMixture_and_PCA_to_Matrix_density (me, pca, GET_INTEGER (U"X-dimension"),
-		GET_INTEGER (U"Y-dimension"), GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-		GET_INTEGER (U"Number of columns"), GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"), GET_INTEGER (U"Number of rows")), my name, U"_", pca->name);
-END
-
-FORM (GaussianMixture_extractComponent, U"GaussianMixture: Extract component", 0)
+	PCA thee = FIRST (PCA);
+	autoMatrix result = GaussianMixture_and_PCA_to_Matrix_density (me, thee,
+		GET_INTEGER (U"X-dimension"),
+		GET_INTEGER (U"Y-dimension"),
+		GET_REAL (U"left Horizontal range"),
+		GET_REAL (U"right Horizontal range"),
+		GET_INTEGER (U"Number of columns"),
+		GET_REAL (U"left Vertical range"),
+		GET_REAL (U"right Vertical range"),
+		GET_INTEGER (U"Number of rows"));
+	praat_new (result.move(), my name, U"_", thy name);
+END
+
+FORM (GaussianMixture_extractComponent, U"GaussianMixture: Extract component", nullptr)
 	NATURAL (U"Component", U"1")
 	OK
 DO
-	long component = GET_INTEGER (U"Component");
 	LOOP {
 		iam (GaussianMixture);
-		Covariance cov = GaussianMixture_extractComponent (me, component);
-		praat_new (cov, my name, U"_", cov->name);
+		autoCovariance result = GaussianMixture_extractComponent (me,
+			GET_INTEGER (U"Component"));
+		praat_new (result.move(), my name, U"_", result -> name);
 	}
 END
 
 DIRECT (GaussianMixture_extractCentroids)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_extractCentroids (me), my name);
+		autoTableOfReal result = GaussianMixture_extractCentroids (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (GaussianMixture_extractMixingProbabilities)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_extractMixingProbabilities (me), my name);
+		autoTableOfReal result = GaussianMixture_extractMixingProbabilities (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (GaussianMixture_to_PCA)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_to_PCA (me), my name);
+		autoPCA result = GaussianMixture_to_PCA (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -231,28 +237,32 @@ DO
 	long numberOfpoints = GET_INTEGER (U"Number of data points");
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_to_TableOfReal_randomSampling (me, numberOfpoints), my name);
+		autoTableOfReal result = GaussianMixture_to_TableOfReal_randomSampling (me, numberOfpoints);
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (GaussianMixture_to_Covariance_between)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_to_Covariance_between (me), my name, U"_b");
+		autoCovariance result = GaussianMixture_to_Covariance_between (me);
+		praat_new (result.move(), my name, U"_b");
 	}
 END
 
 DIRECT (GaussianMixture_to_Covariance_within)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_to_Covariance_within (me), my name, U"_w");
+		autoCovariance result = GaussianMixture_to_Covariance_within (me);
+		praat_new (result.move(), my name, U"_w");
 	}
 END
 
 DIRECT (GaussianMixture_to_Covariance_total)
 	LOOP {
 		iam (GaussianMixture);
-		praat_new (GaussianMixture_to_Covariance_total (me), my name, U"_t");
+		autoCovariance result = GaussianMixture_to_Covariance_total (me);
+		praat_new (result.move(), my name, U"_t");
 	}
 END
 
@@ -274,84 +284,96 @@ DIRECT (HMM_help)
 	Melder_help (U"HMM");
 END
 
-FORM (HMM_create, U"Create HMM", U"")
+FORM (HMM_create, U"Create HMM", nullptr)
 	WORD (U"Name", U"hmm")
-	BOOLEAN (U"Left to right model", 0)
+	BOOLEAN (U"Left to right model", false)
 	NATURAL (U"Number of states", U"3")
 	NATURAL (U"Number of observations", U"3")
 	OK
 DO
-	praat_new (HMM_create (GET_INTEGER (U"Left to right model"), GET_INTEGER (U"Number of states"),
-		GET_INTEGER (U"Number of observations")), GET_STRING (U"Name"));
+	autoHMM thee = HMM_create (
+		GET_INTEGER (U"Left to right model"),
+		GET_INTEGER (U"Number of states"),
+		GET_INTEGER (U"Number of observations"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
 FORM (HMM_createSimple, U"HMM: Create simple", U"HMM: Create simple HMM...")
 	WORD (U"Name", U"weather")
-	BOOLEAN (U"Left to right model", 0)
+	BOOLEAN (U"Left to right model", false)
 	SENTENCE (U"States", U"Rainy Sunny")
 	SENTENCE (U"Observations", U"Walk Shop Clean")
 	OK
 DO
-	praat_new (HMM_createSimple (GET_INTEGER (U"Left to right model"), GET_STRING (U"States"),
-		GET_STRING (U"Observations")), GET_STRING (U"Name"));
+	autoHMM thee = HMM_createSimple (GET_INTEGER (U"Left to right model"), GET_STRING (U"States"), GET_STRING (U"Observations"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
-FORM (HMM_createContinuousModel, U"HMM: Create continuous model", 0)
+FORM (HMM_createContinuousModel, U"HMM: Create continuous model", nullptr)
 	WORD (U"Name", U"cm")
-	BOOLEAN (U"Left to right model", 0)
+	BOOLEAN (U"Left to right model", false)
 	NATURAL (U"Number of states", U"3")
 	NATURAL (U"Number of symbols", U"10")
 	LABEL (U"", U"For the Gaussian mixtures:")
 	NATURAL (U"Number of components", U"3")
 	NATURAL (U"Dimension of component", U"39")
 	OPTIONMENU (U"Covariance matrices are", 1)
-	OPTION (U"Complete")
-	OPTION (U"Diagonal")
+		OPTION (U"Complete")
+		OPTION (U"Diagonal")
 	OK
 DO
 	long componentStorage = GET_INTEGER (U"Covariance matrices are") - 1;
 	long dimension = GET_INTEGER (U"Dimension of component");
 	REQUIRE (componentStorage >= 0 && componentStorage <= dimension, U"Not a valid covariance matrix type")
-	praat_new (HMM_createContinuousModel (GET_INTEGER (U"Left to right model"),
-		GET_INTEGER (U"Number of states"), GET_INTEGER (U"Number of symbols"),
-		GET_INTEGER (U"Number of components"), dimension, componentStorage),
-		GET_STRING (U"Name"));
+	autoHMM thee = HMM_createContinuousModel (
+		GET_INTEGER (U"Left to right model"),
+		GET_INTEGER (U"Number of states"),
+		GET_INTEGER (U"Number of symbols"),
+		GET_INTEGER (U"Number of components"),
+		dimension,
+		componentStorage);
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END
 
-FORM (HMM_ObservationSequence_to_HMM, U"HMM_ObservationSequence: To HMM", 0)
+FORM (HMMObservationSequence_to_HMM, U"HMMObservationSequence: To HMM", nullptr)
 	LABEL (U"", U"(0 states gives a non-hidden model) ")
 	INTEGER (U"Number of states", U"2")
-	BOOLEAN (U"Left to right model", 0)
+	BOOLEAN (U"Left to right model", false)
 	OK
 DO
 	long numberOfStates = GET_INTEGER (U"Number of states");
 	LOOP {
-		iam (HMM_ObservationSequence);
-		praat_new (HMM_createFromHMM_ObservationSequence (me, numberOfStates, GET_INTEGER (U"Left to right model")),
-			my name, U"_", numberOfStates);
+		iam (HMMObservationSequence);
+		autoHMM result = HMM_createFromHMMObservationSequence (me,
+			numberOfStates,
+			GET_INTEGER (U"Left to right model"));
+		praat_new (result.move(), my name, U"_", numberOfStates);
 	}
 END
 
-FORM (HMM_draw, U"HMM: Draw", 0)
-	BOOLEAN (U"Garnish", 0)
+FORM (HMM_draw, U"HMM: Draw", nullptr)
+	BOOLEAN (U"Garnish", false)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (HMM);
-		HMM_draw (me, GRAPHICS, GET_INTEGER (U"Garnish"));
+		HMM_draw (me, GRAPHICS,
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (HMM_and_HMM_StateSequence_drawTrellis, U"HMM & Strings: Draw trellis", 0)
-	BOOLEAN (U"Connect", 1);
-	BOOLEAN (U"Garnish", 1);
+FORM (HMM_and_HMMStateSequence_drawTrellis, U"HMM & Strings: Draw trellis", nullptr)
+	BOOLEAN (U"Connect", true);
+	BOOLEAN (U"Garnish", true);
 	OK
 DO
 	autoPraatPicture picture;
 	HMM me = FIRST (HMM);
-	HMM_StateSequence hmm_ss = FIRST (HMM_StateSequence);
-	HMM_and_HMM_StateSequence_drawTrellis (me, hmm_ss, GRAPHICS, GET_INTEGER (U"Connect"), GET_INTEGER (U"Garnish"));
+	HMMStateSequence hmmStateSequence = FIRST (HMMStateSequence);
+	HMM_and_HMMStateSequence_drawTrellis (me, hmmStateSequence, GRAPHICS,
+		GET_INTEGER (U"Connect"),
+		GET_INTEGER (U"Garnish"));
 END
 
 DIRECT (HMM_drawForwardProbabilitiesIllustration)
@@ -435,22 +457,25 @@ DO
 	long isymbol = GET_INTEGER (U"Symbol number");
 	LOOP {
 		iam (HMM);
-		double lnp = HMM_getProbabilityAtTimeBeingInStateEmittingSymbol (me, itime, istate, isymbol);
+		double lnp = HMM_getProbabilityAtTimeBeingInStateEmittingSymbol (me,
+			itime,
+			istate,
+			isymbol);
 		Melder_information (lnp, U" (=ln(p), p = ", Melder_naturalLogarithm (lnp), U") Being in state ",
 			istate, U" emitting symbol ", isymbol, U" at time ", itime);
 	}
 END
 
-FORM (HMM_getProbabilityOfStayingInState, U"HMM: Get probability of staying in state",
-      U"HMM: Get probability staying in state...")
+FORM (HMM_getProbabilityOfStayingInState, U"HMM: Get probability of staying in state", U"HMM: Get probability staying in state...")
 	NATURAL (U"State number", U"1")
 	NATURAL (U"Number of times", U"2")
 	OK
 DO
 	LOOP {
 		iam (HMM);
-		Melder_informationReal (HMM_getProbabilityOfStayingInState (me, GET_INTEGER (U"State number"),
-			GET_INTEGER (U"Number of times")), 0);
+		Melder_informationReal (HMM_getProbabilityOfStayingInState (me,
+			GET_INTEGER (U"State number"),
+			GET_INTEGER (U"Number of times")), nullptr);
 	}
 END
 
@@ -461,11 +486,12 @@ FORM (HMM_getExpectedValueOfDurationInState, U"HMM: Get expected value of durati
 DO
 	LOOP {
 		iam (HMM);
-		Melder_informationReal (HMM_getExpectedValueOfDurationInState (me, GET_INTEGER (U"State number")), U" time units");
+		Melder_informationReal (HMM_getExpectedValueOfDurationInState (me,
+			GET_INTEGER (U"State number")), U" time units");
 	}
 END
 
-FORM (HMM_getSymbolLabel, U"HMM: Get symbol label", 0)
+FORM (HMM_getSymbolLabel, U"HMM: Get symbol label", nullptr)
 	NATURAL (U"Symbol number", U"1")
 	OK
 DO
@@ -473,32 +499,32 @@ DO
 	LOOP {
 		iam (HMM);
 		REQUIRE (is <= my numberOfObservationSymbols, U"Symbol number too high.")
-		HMM_Observation s = (HMM_Observation) my observationSymbols -> item[is];
+		HMMObservation s = my observationSymbols->at [is];
 		Melder_information (s -> label);
 	}
 END
 
-FORM (HMM_getStateLabel, U"HMM: Get state label", 0)
+FORM (HMM_getStateLabel, U"HMM: Get state label", nullptr)
 	NATURAL (U"State number", U"1")
 	OK
 DO
-	long is = GET_INTEGER (U"State number");
+	long stateNumber = GET_INTEGER (U"State number");
 	LOOP {
 		iam (HMM);
-		REQUIRE (is <= my numberOfStates, U"State number too high.")
-		HMM_State s = (HMM_State) my states -> item[is];
-		Melder_information (s -> label);
+		REQUIRE (stateNumber <= my numberOfStates, U"State number too high.")
+		HMMState state = my states->at [stateNumber];
+		Melder_information (state -> label);
 	}
 END
 
 FORM (HMM_and_HMM_getCrossEntropy, U"HMM & HMM: Get cross-entropy...", U"HMM & HMM: Get cross-entropy...")
 	NATURAL (U"Observation length", U"2000")
-	BOOLEAN (U"Symmetric", 1)
+	BOOLEAN (U"Symmetric", true)
 	OK
 DO
 	long n = GET_INTEGER (U"Observation length");
 	int sym = GET_INTEGER (U"Symmetric");
-	HMM m1 = 0, m2 = 0;
+	HMM m1 = nullptr, m2 = nullptr;
 	LOOP {
 		iam (HMM);
 		(m1 ? m2 : m1) = me;
@@ -509,80 +535,88 @@ DO
 		U" cross-entropy between models for observation length = ", n, U")");
 END
 
-DIRECT (HMM_and_HMM_and_HMM_ObservationSequence_getCrossEntropy)
-	HMM m1 = 0, m2 = 0; HMM_ObservationSequence hmm_os = 0;
+DIRECT (HMM_and_HMM_and_HMMObservationSequence_getCrossEntropy)
+	HMM m1 = nullptr, m2 = nullptr;
+	HMMObservationSequence hmm_os = nullptr;
 	LOOP {
-		if (CLASS == classHMM_ObservationSequence) {
-			hmm_os = (HMM_ObservationSequence) OBJECT;
+		if (CLASS == classHMMObservationSequence) {
+			hmm_os = (HMMObservationSequence) OBJECT;
 		} else { (m1 ? m2 : m1) = (HMM) OBJECT; }
 	}
 	Melder_assert (m1 && m2 && hmm_os);
-	double ce = HMM_and_HMM_and_HMM_ObservationSequence_getCrossEntropy (m1, m2, hmm_os);
+	double ce = HMM_and_HMM_and_HMMObservationSequence_getCrossEntropy (m1, m2, hmm_os);
 	Melder_information (ce, U" (=symmetric cross-entropy between models)");
 END
 
-FORM (HMM_to_HMM_ObservationSequence, U"HMM: To HMM_ObservationSequence (generate observations)", U"HMM: To HMM_ObservationSequence...")
+FORM (HMM_to_HMMObservationSequence, U"HMM: To HMMObservationSequence (generate observations)", U"HMM: To HMMObservationSequence...")
 	INTEGER (U"Start state", U"0")
 	NATURAL (U"Number of observations", U"20")
 	OK
 DO
 	LOOP {
 		iam (HMM);
-		praat_new (HMM_to_HMM_ObservationSequence (me, GET_INTEGER (U"Start state"),
-			GET_INTEGER (U"Number of observations")), my name);
+		autoHMMObservationSequence thee = HMM_to_HMMObservationSequence (me, GET_INTEGER (U"Start state"), GET_INTEGER (U"Number of observations"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-DIRECT (HMM_and_HMM_StateSequence_getProbability)
+DIRECT (HMM_and_HMMStateSequence_getProbability)
 	HMM me = FIRST (HMM);
-	HMM_StateSequence hmm_ss = FIRST (HMM_StateSequence);
-	double lnp = HMM_and_HMM_StateSequence_getProbability (me, hmm_ss);
+	HMMStateSequence hmm_ss = FIRST (HMMStateSequence);
+	double lnp = HMM_and_HMMStateSequence_getProbability (me, hmm_ss);
 	Melder_information (lnp, U" (=ln(p), p = ", Melder_naturalLogarithm (lnp), U")");
 END
 
-DIRECT (HMM_and_HMM_ObservationSequence_getProbability)
+DIRECT (HMM_and_HMMObservationSequence_getProbability)
 	HMM me = FIRST (HMM);
-	HMM_ObservationSequence hmm_os = FIRST (HMM_ObservationSequence);
-	double lnp = HMM_and_HMM_ObservationSequence_getProbability (me, hmm_os);
+	HMMObservationSequence hmm_os = FIRST (HMMObservationSequence);
+	double lnp = HMM_and_HMMObservationSequence_getProbability (me, hmm_os);
 	Melder_information (lnp, U" (=ln(p), p = ", Melder_naturalLogarithm (lnp), U")");
 END
 
-DIRECT (HMM_and_HMM_ObservationSequence_getCrossEntropy)
+DIRECT (HMM_and_HMMObservationSequence_getCrossEntropy)
 	HMM me = FIRST (HMM);
-	HMM_ObservationSequence hmm_os = FIRST (HMM_ObservationSequence);
-	double ce = HMM_and_HMM_ObservationSequence_getCrossEntropy (me, hmm_os);
+	HMMObservationSequence hmm_os = FIRST (HMMObservationSequence);
+	double ce = HMM_and_HMMObservationSequence_getCrossEntropy (me, hmm_os);
 	Melder_information (ce, U" (= cross-entropy)");
 END
 
-DIRECT (HMM_and_HMM_ObservationSequence_getPerplexity)
+DIRECT (HMM_and_HMMObservationSequence_getPerplexity)
 	HMM me = FIRST (HMM);
-	HMM_ObservationSequence hmm_os = FIRST (HMM_ObservationSequence);
-	double py = HMM_and_HMM_ObservationSequence_getPerplexity (me, hmm_os);
+	HMMObservationSequence hmm_os = FIRST (HMMObservationSequence);
+	double py = HMM_and_HMMObservationSequence_getPerplexity (me, hmm_os);
 	Melder_information (py, U" (= perplexity)");
 END
 
-DIRECT (HMM_and_HMM_ObservationSequence_to_HMM_StateSequence)
+DIRECT (HMM_and_HMMObservationSequence_to_HMMStateSequence)
 	HMM me = FIRST (HMM);
-	HMM_ObservationSequence thee = FIRST (HMM_ObservationSequence);
-	praat_new (HMM_and_HMM_ObservationSequence_to_HMM_StateSequence (me, thee), my name, U"_", thy name, U"_states");
+	HMMObservationSequence thee = FIRST (HMMObservationSequence);
+	autoHMMStateSequence result = HMM_and_HMMObservationSequence_to_HMMStateSequence (me, thee);
+	praat_new (result.move(), my name, U"_", thy name, U"_states");
 END
 
-FORM (HMM_and_HMM_ObservationSequence_learn, U"HMM & HMM_ObservationSequence: Learn", U"HMM & HMM_ObservationSequences: Learn...")
+FORM (HMM_and_HMMObservationSequence_learn, U"HMM & HMMObservationSequence: Learn", U"HMM & HMMObservationSequences: Learn...")
 	POSITIVE (U"Relative precision in log(p)", U"0.001")
 	REAL (U"Minimum probability", U"0.00000000001")
+	BOOLEAN (U"Learning history in Info window", false)
 	OK
 DO
 	double minProb = GET_REAL (U"Minimum probability");
 	REQUIRE (minProb >= 0 && minProb < 1, U"A probabilty must be >= 0 and < 1!")
-	autoHMM_ObservationSequences hmm_oss = HMM_ObservationSequences_create (); HMM hmm = 0;
-	Collection_dontOwnItems (hmm_oss.peek());
+	autoHMMObservationSequenceBag hmmObservationSequences = HMMObservationSequenceBag_create ();
+	HMM hmm = nullptr;
 	LOOP {
-		iam (Data);
-		if (CLASS == classHMM_ObservationSequence) {
-			Collection_addItem (hmm_oss.peek(), me);
-		} else { hmm = (HMM) me; }
+		iam (Daata);
+		if (CLASS == classHMMObservationSequence) {
+			hmmObservationSequences -> addItem_ref ((HMMObservationSequence) me);
+		} else {
+			hmm = (HMM) me;
+		}
 	}
-	HMM_and_HMM_ObservationSequences_learn (hmm, hmm_oss.peek(), GET_REAL (U"Relative precision in log"), minProb);
+	HMM_and_HMMObservationSequenceBag_learn (hmm, hmmObservationSequences.get(),
+		GET_REAL (U"Relative precision in log"),
+		minProb,
+		GET_INTEGER (U"Learning history in Info window"));
 END
 
 FORM (HMM_setTransitionProbabilities, U"HMM: Set transition probabilities", U"HMM: Set transition probabilities...")
@@ -592,7 +626,9 @@ FORM (HMM_setTransitionProbabilities, U"HMM: Set transition probabilities", U"HM
 DO
 	LOOP {
 		iam (HMM);
-		HMM_setTransitionProbabilities (me, GET_INTEGER (U"State number"), GET_STRING (U"Probabilities"));
+		HMM_setTransitionProbabilities (me,
+			GET_INTEGER (U"State number"),
+			GET_STRING (U"Probabilities"));
 	}
 END
 
@@ -603,7 +639,9 @@ FORM (HMM_setEmissionProbabilities, U"HMM: Set emission probabilities", U"HMM: S
 DO
 	LOOP {
 		iam (HMM);
-		HMM_setEmissionProbabilities (me, GET_INTEGER (U"State number"), GET_STRING (U"Probabilities"));
+		HMM_setEmissionProbabilities (me,
+			GET_INTEGER (U"State number"),
+			GET_STRING (U"Probabilities"));
 	}
 END
 
@@ -613,140 +651,152 @@ FORM (HMM_setStartProbabilities, U"HMM: Set start probabilities", U"HMM: Set sta
 DO
 	LOOP {
 		iam (HMM);
-		HMM_setStartProbabilities (me, GET_STRING (U"Probabilities"));
+		HMM_setStartProbabilities (me,
+			GET_STRING (U"Probabilities"));
 	}
 END
 
 DIRECT (HMM_extractTransitionProbabilities)
 	LOOP {
 		iam (HMM);
-		praat_new (HMM_extractTransitionProbabilities (me), my name, U"_t");
+		autoTableOfReal result = HMM_extractTransitionProbabilities (me);
+		praat_new (result.move(), my name, U"_t");
 	}
 END
 
 DIRECT (HMM_extractEmissionProbabilities)
 	LOOP {
 		iam (HMM);
-		praat_new (HMM_extractEmissionProbabilities (me), my name, U"_e");
+		autoTableOfReal result = HMM_extractEmissionProbabilities (me);
+		praat_new (result.move(), my name, U"_e");
 	}
 END
 
-FORM (HMM_ObservationSequence_to_TableOfReal, U"HMM_ObservationSequence: To TableOfReal ",
-      U"HMM_ObservationSequence: To TableOfReal (bigrams)...")
-	BOOLEAN (U"As probabilities", 1)
+FORM (HMMObservationSequence_to_TableOfReal, U"HMMObservationSequence: To TableOfReal ", U"HMMObservationSequence: To TableOfReal (bigrams)...")
+	BOOLEAN (U"As probabilities", true)
 	OK
 DO
 	LOOP {
-		iam (HMM_ObservationSequence);
-		praat_new (HMM_ObservationSequence_to_TableOfReal_transitions (me, GET_INTEGER (U"As probabilities")), my name);
+		iam (HMMObservationSequence);
+		autoTableOfReal result = HMMObservationSequence_to_TableOfReal_transitions (me,
+			GET_INTEGER (U"As probabilities"));
+		praat_new (result.move(), my name);
 	}
 END
 
-FORM (HMM_and_HMM_ObservationSequence_to_TableOfReal, U"HMM & HMM_ObservationSequence: To TableOfReal", U"HMM & HMM_ObservationSequence: To TableOfReal (bigrams)...")
-	BOOLEAN (U"As probabilities", 1)
+FORM (HMM_and_HMMObservationSequence_to_TableOfReal, U"HMM & HMMObservationSequence: To TableOfReal", U"HMM & HMMObservationSequence: To TableOfReal (bigrams)...")
+	BOOLEAN (U"As probabilities", true)
 	OK
 DO
 	HMM me = FIRST (HMM);
-	HMM_ObservationSequence hmm_os = FIRST (HMM_ObservationSequence);
-	praat_new (HMM_and_HMM_ObservationSequence_to_TableOfReal_transitions (me, hmm_os,
-		GET_INTEGER (U"As probabilities")), hmm_os -> name, U"_m");
+	HMMObservationSequence hmm_os = FIRST (HMMObservationSequence);
+	autoTableOfReal thee = HMM_and_HMMObservationSequence_to_TableOfReal_transitions (me, hmm_os,GET_INTEGER (U"As probabilities"));
+	praat_new (thee.move(), hmm_os -> name, U"_m");
 END
 
-FORM (HMM_and_HMM_StateSequence_to_TableOfReal, U"HMM & HMM_StateSequence: To TableOfReal", 0)
-	BOOLEAN (U"As probabilities", 1)
+FORM (HMM_and_HMMStateSequence_to_TableOfReal, U"HMM & HMMStateSequence: To TableOfReal", nullptr)
+	BOOLEAN (U"As probabilities", true)
 	OK
 DO
 	HMM me = FIRST (HMM);
-	HMM_StateSequence hmm_ss = FIRST (HMM_StateSequence);
-	praat_new (HMM_and_HMM_StateSequence_to_TableOfReal_transitions (me, hmm_ss, GET_INTEGER (U"As probabilities")),
-		Thing_getName (hmm_ss), U"_m");
+	HMMStateSequence hmm_ss = FIRST (HMMStateSequence);
+	autoTableOfReal thee = HMM_and_HMMStateSequence_to_TableOfReal_transitions (me, hmm_ss, GET_INTEGER (U"As probabilities"));
+	praat_new (thee.move(), Thing_getName (hmm_ss), U"_m");
 END
 
-FORM (HMM_StateSequence_to_TableOfReal, U"HMM_StateSequence: To TableOfReal", 0)
-	BOOLEAN (U"As probabilities", 1)
+FORM (HMMStateSequence_to_TableOfReal, U"HMMStateSequence: To TableOfReal", nullptr)
+	BOOLEAN (U"As probabilities", true)
 	OK
 DO
 	LOOP {
-		iam (HMM_StateSequence);
-		praat_new (Strings_to_TableOfReal_transitions ( (Strings) me, GET_INTEGER (U"As probabilities")), my name);
+		iam (HMMStateSequence);
+		autoTableOfReal thee = Strings_to_TableOfReal_transitions (me, GET_INTEGER (U"As probabilities"));
+		praat_new (thee.move(), my name);
 	}
 END
 
-DIRECT (HMM_ObservationSequence_to_Strings)
+DIRECT (HMMObservationSequence_to_Strings)
 	LOOP {
-		iam (HMM_ObservationSequence);
-		praat_new (HMM_ObservationSequence_to_Strings (me), my name);
+		iam (HMMObservationSequence);
+		autoStrings thee = HMMObservationSequence_to_Strings (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-DIRECT (Strings_to_HMM_ObservationSequence)
+DIRECT (Strings_to_HMMObservationSequence)
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_to_HMM_ObservationSequence (me), my name);
+		autoHMMObservationSequence thee = Strings_to_HMMObservationSequence (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-DIRECT (HMM_StateSequence_to_Strings)
+DIRECT (HMMStateSequence_to_Strings)
 	LOOP {
-		iam (HMM_StateSequence);
-		praat_new (HMM_StateSequence_to_Strings (me), my name);
+		iam (HMMStateSequence);
+		autoStrings thee = HMMStateSequence_to_Strings (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (TableOfReal_to_GaussianMixture_fromRowlabels, U"TableOfReal: To GaussianMixture from row labels",
-      U"TableOfReal: To GaussianMixture (row labels)...")
+FORM (TableOfReal_to_GaussianMixture_fromRowlabels, U"TableOfReal: To GaussianMixture from row labels", U"TableOfReal: To GaussianMixture (row labels)...")
 	OPTIONMENU (U"Covariance matrices are", 1)
-	OPTION (U"Complete")
-	OPTION (U"Diagonal")
+		OPTION (U"Complete")
+		OPTION (U"Diagonal")
 	OK
 DO
 	long storage = GET_INTEGER (U"Covariance matrices are") - 1;
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_GaussianMixture_fromRowLabels (me, storage), my name);
+		autoGaussianMixture thee = TableOfReal_to_GaussianMixture_fromRowLabels (me, storage);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (TableOfReal_to_GaussianMixture, U"TableOfReal: To GaussianMixture (no labels)",
-      U"TableOfReal: To GaussianMixture...")
+FORM (TableOfReal_to_GaussianMixture, U"TableOfReal: To GaussianMixture (no labels)", U"TableOfReal: To GaussianMixture...")
 	NATURAL (U"Number of components", U"2")
 	POSITIVE (U"Tolerance of minimizer", U"0.001")
 	INTEGER (U"Maximum number of iterations", U"200")
 	REAL (U"Stability coefficient lambda", U"0.001")
 	OPTIONMENU (U"Covariance matrices are", 1)
-	OPTION (U"Complete")
-	OPTION (U"Diagonal")
+		OPTION (U"Complete")
+		OPTION (U"Diagonal")
 	GaussianMixture_OPTION_MENU_CRITERIA
 	OK
 DO
-	int criterion = GET_INTEGER (U"Criterion based on") - 1;
 	double lambda = GET_REAL (U"Stability coefficient lambda");
-	REQUIRE (lambda >= 0 && lambda < 1, U"Lambda must be in interval [0,1).")
-	long storage = GET_INTEGER (U"Covariance matrices are") - 1;
+	REQUIRE (lambda >= 0.0 && lambda < 1.0, U"Lambda must be in interval [0,1).")
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_GaussianMixture (me, GET_INTEGER (U"Number of components"),
-			GET_REAL (U"Tolerance of minimizer"), GET_INTEGER (U"Maximum number of iterations"),
-			lambda, storage, criterion), my name);
+		autoGaussianMixture thee = TableOfReal_to_GaussianMixture (me,
+			GET_INTEGER (U"Number of components"),
+			GET_REAL (U"Tolerance of minimizer"),
+			GET_INTEGER (U"Maximum number of iterations"),
+			lambda,
+			GET_INTEGER (U"Covariance matrices are") - 1,
+			GET_INTEGER (U"Criterion based on") - 1);
+		praat_new (thee.move(), my name);
 	}
 END
 
-FORM (GaussianMixture_and_TableOfReal_improveLikelihood, U"GaussianMixture & TableOfReal: Improve likelihood",
-      U"GaussianMixture & TableOfReal: Improve likelihood...")
+FORM (GaussianMixture_and_TableOfReal_improveLikelihood, U"GaussianMixture & TableOfReal: Improve likelihood", U"GaussianMixture & TableOfReal: Improve likelihood...")
 	POSITIVE (U"Tolerance of minimizer", U"0.001")
 	NATURAL (U"Maximum number of iterations", U"200")
 	REAL (U"Stability coefficient lambda", U"0.001")
 	GaussianMixture_OPTION_MENU_CRITERIA
 	OK
 DO
-	long criterion = GET_INTEGER (U"Criterion based on") - 1;
 	double lambda = GET_REAL (U"Stability coefficient lambda");
+	REQUIRE (lambda >= 0.0 && lambda < 1.0, U"Lambda must be in interval [0,1).")
 	GaussianMixture me = FIRST (GaussianMixture);
 	TableOfReal thee = FIRST (TableOfReal);
-	REQUIRE (lambda >= 0 && lambda < 1, U"Lambda must be in interval [0,1).")
 	REQUIRE (thy numberOfColumns == my dimension, U"The number of columns and the dimension of the model do not agree.");
 	REQUIRE (my numberOfComponents < thy numberOfRows / 2, U"Not enough data points.")
-	GaussianMixture_and_TableOfReal_improveLikelihood (me, thee, GET_REAL (U"Tolerance of minimizer"), GET_INTEGER (U"Maximum number of iterations"), lambda, criterion);
+	GaussianMixture_and_TableOfReal_improveLikelihood (me, thee,
+		GET_REAL (U"Tolerance of minimizer"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		lambda,
+		GET_INTEGER (U"Criterion based on") - 1);
 END
 
 FORM (GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM, U"GaussianMixture & TableOfReal: To GaussianMixture (CEMM)", U"GaussianMixture & TableOfReal: To GaussianMixture (CEMM)...")
@@ -758,29 +808,32 @@ FORM (GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM, U"GaussianMixture
 	OK
 DO
 	double lambda = GET_REAL (U"Stability coefficient lambda");
-	int criterion = GET_INTEGER (U"Criterion based on") - 1;
+	REQUIRE (lambda >= 0.0 && lambda < 1.0, U"Lambda must be in interval [0,1).")
 	GaussianMixture me = FIRST (GaussianMixture);
 	TableOfReal thee = FIRST (TableOfReal);
-	REQUIRE (lambda >= 0 && lambda < 1, U"Lambda must be in interval [0,1).")
 	REQUIRE (thy numberOfColumns == my dimension, U"The number of columns and the dimension of the model do not agree.");
 	REQUIRE (my numberOfComponents < thy numberOfRows / 2, U"Not enough data points.")
-	praat_new (GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (me, thee,
-		GET_INTEGER (U"Minimum number of components"), GET_REAL (U"Tolerance of minimizer"),
-		GET_INTEGER (U"Maximum number of iterations"), lambda, criterion), my name);
+	autoGaussianMixture him = GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM (me, thee,
+		GET_INTEGER (U"Minimum number of components"),
+		GET_REAL (U"Tolerance of minimizer"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		lambda,
+		GET_INTEGER (U"Criterion based on") - 1);
+	praat_new (him.move(), my name);
 END
 
 DIRECT (GaussianMixture_and_TableOfReal_to_ClassificationTable)
 	GaussianMixture me = FIRST (GaussianMixture);
 	TableOfReal thee = FIRST (TableOfReal);
-	praat_new (GaussianMixture_and_TableOfReal_to_ClassificationTable (me, thee),
-		my name, U"_", thy name);
+	autoClassificationTable him = GaussianMixture_and_TableOfReal_to_ClassificationTable (me, thee);
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 DIRECT (GaussianMixture_and_TableOfReal_to_Correlation)
 	GaussianMixture me = FIRST (GaussianMixture);
 	TableOfReal thee = FIRST (TableOfReal);
-	praat_new (GaussianMixture_and_TableOfReal_to_Correlation (me, thee),
-		my name, U"_", thy name);
+	autoCorrelation him = GaussianMixture_and_TableOfReal_to_Correlation (me, thee);
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 FORM (GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests, U"GaussianMixture & TableOfReal: To TableOfReal BHEP normality tests", U"GaussianMixture & TableOfReal: To TableOfReal (BHEP normality tests)...")
@@ -790,102 +843,100 @@ DO
 	GaussianMixture me = FIRST (GaussianMixture);
 	TableOfReal thee = FIRST (TableOfReal);
 	double h = GET_REAL (U"Smoothing parameter");
-	praat_new (GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (me, thee, h),
-		my name, U"_", thy name);
+	autoTableOfReal him = GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests (me, thee, h);
+	praat_new (him.move(), my name, U"_", thy name);
 END
 
 void praat_HMM_init ();
 void praat_HMM_init () {
-	Thing_recognizeClassesByName (classHMM, classHMM_State, classHMM_Observation,
-	                              classHMM_ObservationSequence, classHMM_StateSequence, classGaussianMixture, NULL);
-
-	praat_addMenuCommand (U"Objects", U"New", U"Markov models", 0, praat_HIDDEN, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create HMM...", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create simple HMM...", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_createSimple);
-	praat_addMenuCommand (U"Objects", U"New", U"Create continuous HMM...", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_createContinuousModel);
-	praat_addMenuCommand (U"Objects", U"New", U"--drawings--", 0, praat_HIDDEN + praat_DEPTH_1, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Draw forward probabilities illustration", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawForwardProbabilitiesIllustration);
-	praat_addMenuCommand (U"Objects", U"New", U"Draw backward probabilities illustration", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawBackwardProbabilitiesIllustration);
-	praat_addMenuCommand (U"Objects", U"New", U"Draw forward and backward probabilities illustration", 0, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawForwardAndBackwardProbabilitiesIllustration);
-
-	praat_addAction1 (classGaussianMixture, 0, U"GaussianMixture help", 0, 0, DO_GaussianMixture_help);
-	praat_addAction1 (classGaussianMixture, 0, U"Draw concentration ellipses...", 0, 0, DO_GaussianMixture_drawConcentrationEllipses);
-	praat_addAction1 (classGaussianMixture, 0, U"Draw marginal pdf...", 0, 0, DO_GaussianMixture_drawMarginalPdf);
-	praat_addAction1 (classGaussianMixture, 0, U"Query -", 0, 0, 0);
-	praat_addAction1 (classGaussianMixture, 1, U"Get number of components", 0, 1, DO_GaussianMixture_getNumberOfComponents);
-	praat_addAction1 (classGaussianMixture, 1, U"Get dimension of component", 0, 1, DO_GaussianMixture_getDimensionOfComponent);
-	praat_addAction1 (classGaussianMixture, 1, U"Get probability at position...", 0, 1, DO_GaussianMixture_getProbabilityAtPosition);
-	praat_addAction1 (classGaussianMixture, 0, U"Modify -", 0, 0, 0);
-	praat_addAction1 (classGaussianMixture, 1, U"Split component...", 0, 1, DO_GaussianMixture_splitComponent);
-	praat_addAction1 (classGaussianMixture, 0, U"Extract -", 0, 0, 0);
-	praat_addAction1 (classGaussianMixture, 0, U"Extract mixing probabilities", 0, 1, DO_GaussianMixture_extractMixingProbabilities);
-	praat_addAction1 (classGaussianMixture, 0, U"Extract component...", 0, 1, DO_GaussianMixture_extractComponent);
-	praat_addAction1 (classGaussianMixture, 0, U"Extract centroids", 0, 1, DO_GaussianMixture_extractCentroids);
-	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (between)", 0, 0, DO_GaussianMixture_to_Covariance_between);
-	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (within)", 0, 0, DO_GaussianMixture_to_Covariance_within);
-	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (total)", 0, 0, DO_GaussianMixture_to_Covariance_total);
-	praat_addAction1 (classGaussianMixture, 0, U"To PCA", 0, 0, DO_GaussianMixture_to_PCA);
-	praat_addAction1 (classGaussianMixture, 0, U"To TableOfReal (random sampling)...", 0, 0, DO_GaussianMixture_to_TableOfReal_randomSampling);
-
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"Get likelihood value...", 0, 0, DO_GaussianMixture_and_TableOfReal_getLikelihoodValue);
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"Improve likelihood...", 0, 0, DO_GaussianMixture_and_TableOfReal_improveLikelihood);
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To GaussianMixture (CEMM)...", 0, 0, DO_GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM);
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To ClassificationTable", 0, 0, DO_GaussianMixture_and_TableOfReal_to_ClassificationTable);
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To Correlation", 0, 0, DO_GaussianMixture_and_TableOfReal_to_Correlation);
-	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To TableOfReal (BHEP normality tests)...", 0, 0, DO_GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests);
-
-	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"Draw concentration ellipses...", 0, 0, DO_GaussianMixture_and_PCA_drawConcentrationEllipses);
-	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"Draw marginal pdf...", 0, 0, DO_GaussianMixture_and_PCA_drawMarginalPdf);
-	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"To Matrix (density)...", 0, 0, DO_GaussianMixture_and_PCA_to_Matrix_density);
-
-
-	praat_addAction1 (classHMM, 0, U"HMM help ", 0, 0, DO_HMM_help);
-	praat_addAction1 (classHMM, 0, U"Draw...", 0, 0, DO_HMM_draw);
-	praat_addAction1 (classHMM, 0, U"Query -", 0, 0, 0);
-	praat_addAction1 (classHMM, 1, U"Get transition probability...", 0, 1, DO_HMM_getTransitionProbability);
-	praat_addAction1 (classHMM, 1, U"Get emission probability...", 0, 1, DO_HMM_getEmissionProbability);
-	praat_addAction1 (classHMM, 1, U"Get start probability...", 0, 1, DO_HMM_getStartProbability);
-	praat_addAction1 (classHMM, 1, U"Get p (time, state)...", 0, 1, DO_HMM_getProbabilityAtTimeBeingInState);
-	praat_addAction1 (classHMM, 1, U"Get p (time, state, symbol)...", 0, 1, DO_HMM_getProbabilityAtTimeBeingInStateEmittingSymbol);
-	praat_addAction1 (classHMM, 1, U"Get probability staying in state...", 0, 1, DO_HMM_getProbabilityOfStayingInState);
-	praat_addAction1 (classHMM, 1, U"Get expected duration in state...", 0, 1, DO_HMM_getExpectedValueOfDurationInState);
-	praat_addAction1 (classHMM, 1, U"---- states / symbols -----", 0, 1, 0);
-	praat_addAction1 (classHMM, 1, U"Get state label...", 0, 1, DO_HMM_getStateLabel);
-	praat_addAction1 (classHMM, 1, U"Get symbol label...", 0, 1, DO_HMM_getSymbolLabel);
-	praat_addAction1 (classHMM, 0, U"--- multiple HMMs ----", 0, 1, 0);
-	praat_addAction1 (classHMM, 2, U"Get cross-entropy...", 0, 1, DO_HMM_and_HMM_getCrossEntropy);
-
-	praat_addAction1 (classHMM, 0, U"Modify -", 0, 0, 0);
-	praat_addAction1 (classHMM, 1, U"Set transition probabilities...", 0, 1, DO_HMM_setTransitionProbabilities);
-	praat_addAction1 (classHMM, 1, U"Set emission probabilities...", 0, 1, DO_HMM_setEmissionProbabilities);
-	praat_addAction1 (classHMM, 1, U"Set start probabilities...", 0, 1, DO_HMM_setStartProbabilities);
-
-	praat_addAction1 (classHMM, 0, U"Extract -", 0, 0, 0);
-	praat_addAction1 (classHMM, 0, U"Extract transition probabilities", 0, 1, DO_HMM_extractTransitionProbabilities);
-	praat_addAction1 (classHMM, 0, U"Extract emission probabilities", 0, 1, DO_HMM_extractEmissionProbabilities);
-
-	praat_addAction1 (classHMM, 0, U"To HMM_ObservationSequence...", 0, 0, DO_HMM_to_HMM_ObservationSequence);
-	praat_addAction2 (classHMM, 1, classHMM_StateSequence, 1, U"Draw trellis...", 0, 0, DO_HMM_and_HMM_StateSequence_drawTrellis);
-	praat_addAction2 (classHMM, 1, classHMM_StateSequence, 1, U"Get probability", 0, 0, DO_HMM_and_HMM_StateSequence_getProbability);
-	praat_addAction2 (classHMM, 1, classHMM_StateSequence, 1, U"To TableOfReal (bigrams)...", 0, 0, DO_HMM_and_HMM_StateSequence_to_TableOfReal);
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 1, U"Get probability", 0, 0, DO_HMM_and_HMM_ObservationSequence_getProbability);
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 1, U"Get cross-entropy", 0, 0, DO_HMM_and_HMM_ObservationSequence_getCrossEntropy);
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 1, U"Get perplexity", 0, 0, DO_HMM_and_HMM_ObservationSequence_getPerplexity);
-
-
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 1, U"To HMM_StateSequence", 0, 0, DO_HMM_and_HMM_ObservationSequence_to_HMM_StateSequence);
-	praat_addAction2 (classHMM, 2, classHMM_ObservationSequence, 1, U"Get cross-entropy", 0, 0, DO_HMM_and_HMM_and_HMM_ObservationSequence_getCrossEntropy);
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 1, U"To TableOfReal (bigrams)...", 0, 0, DO_HMM_and_HMM_ObservationSequence_to_TableOfReal);
-	praat_addAction2 (classHMM, 1, classHMM_ObservationSequence, 0, U"Learn...", 0, 0, DO_HMM_and_HMM_ObservationSequence_learn);
-
-	praat_addAction1 (classHMM_ObservationSequence, 0, U"To TableOfReal (bigrams)...", 0, 0, DO_HMM_ObservationSequence_to_TableOfReal);
-	praat_addAction1 (classHMM_ObservationSequence, 0, U"To Strings", 0, 0, DO_HMM_ObservationSequence_to_Strings);
-	praat_addAction1 (classHMM_StateSequence, 0, U"To TableOfReal (bigrams)...", 0, 0, DO_HMM_StateSequence_to_TableOfReal);
-	praat_addAction1 (classHMM_StateSequence, 0, U"To Strings", 0, 0, DO_HMM_StateSequence_to_Strings);
-
-	praat_addAction1 (classHMM_ObservationSequence, 0, U"To HMM...", 0, 1, DO_HMM_ObservationSequence_to_HMM);
-
-	praat_addAction1 (classStrings, 0, U"To HMM_ObservationSequence", 0, praat_HIDDEN, DO_Strings_to_HMM_ObservationSequence);
+	Thing_recognizeClassesByName (classHMM, classHMMState, classHMMObservation, classHMMObservationSequence, classHMMStateSequence, classGaussianMixture, nullptr);
+
+	praat_addMenuCommand (U"Objects", U"New", U"Markov models", nullptr, praat_HIDDEN, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create HMM...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create simple HMM...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_createSimple);
+	praat_addMenuCommand (U"Objects", U"New", U"Create continuous HMM...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_createContinuousModel);
+	praat_addMenuCommand (U"Objects", U"New", U"--drawings--", nullptr, praat_HIDDEN + praat_DEPTH_1, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Draw forward probabilities illustration", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawForwardProbabilitiesIllustration);
+	praat_addMenuCommand (U"Objects", U"New", U"Draw backward probabilities illustration", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawBackwardProbabilitiesIllustration);
+	praat_addMenuCommand (U"Objects", U"New", U"Draw forward and backward probabilities illustration", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_HMM_drawForwardAndBackwardProbabilitiesIllustration);
+
+	praat_addAction1 (classGaussianMixture, 0, U"GaussianMixture help", nullptr, 0, DO_GaussianMixture_help);
+	praat_addAction1 (classGaussianMixture, 0, U"Draw concentration ellipses...", nullptr, 0, DO_GaussianMixture_drawConcentrationEllipses);
+	praat_addAction1 (classGaussianMixture, 0, U"Draw marginal pdf...", nullptr, 0, DO_GaussianMixture_drawMarginalPdf);
+	praat_addAction1 (classGaussianMixture, 0, U"Query -", nullptr, 0, nullptr);
+	praat_addAction1 (classGaussianMixture, 1, U"Get number of components", nullptr, 1, DO_GaussianMixture_getNumberOfComponents);
+	praat_addAction1 (classGaussianMixture, 1, U"Get dimension of component", nullptr, 1, DO_GaussianMixture_getDimensionOfComponent);
+	praat_addAction1 (classGaussianMixture, 1, U"Get probability at position...", nullptr, 1, DO_GaussianMixture_getProbabilityAtPosition);
+	praat_addAction1 (classGaussianMixture, 0, U"Modify -", nullptr, 0, nullptr);
+	praat_addAction1 (classGaussianMixture, 1, U"Split component...", nullptr, 1, DO_GaussianMixture_splitComponent);
+	praat_addAction1 (classGaussianMixture, 0, U"Extract -", nullptr, 0, nullptr);
+	praat_addAction1 (classGaussianMixture, 0, U"Extract mixing probabilities", nullptr, 1, DO_GaussianMixture_extractMixingProbabilities);
+	praat_addAction1 (classGaussianMixture, 0, U"Extract component...", nullptr, 1, DO_GaussianMixture_extractComponent);
+	praat_addAction1 (classGaussianMixture, 0, U"Extract centroids", nullptr, 1, DO_GaussianMixture_extractCentroids);
+	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (between)", nullptr, 0, DO_GaussianMixture_to_Covariance_between);
+	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (within)", nullptr, 0, DO_GaussianMixture_to_Covariance_within);
+	praat_addAction1 (classGaussianMixture, 0, U"To Covariance (total)", nullptr, 0, DO_GaussianMixture_to_Covariance_total);
+	praat_addAction1 (classGaussianMixture, 0, U"To PCA", nullptr, 0, DO_GaussianMixture_to_PCA);
+	praat_addAction1 (classGaussianMixture, 0, U"To TableOfReal (random sampling)...", nullptr, 0, DO_GaussianMixture_to_TableOfReal_randomSampling);
+
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"Get likelihood value...", nullptr, 0, DO_GaussianMixture_and_TableOfReal_getLikelihoodValue);
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"Improve likelihood...", nullptr, 0, DO_GaussianMixture_and_TableOfReal_improveLikelihood);
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To GaussianMixture (CEMM)...", nullptr, 0, DO_GaussianMixture_and_TableOfReal_to_GaussianMixture_CEMM);
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To ClassificationTable", nullptr, 0, DO_GaussianMixture_and_TableOfReal_to_ClassificationTable);
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To Correlation", nullptr, 0, DO_GaussianMixture_and_TableOfReal_to_Correlation);
+	praat_addAction2 (classGaussianMixture, 1, classTableOfReal, 1, U"To TableOfReal (BHEP normality tests)...", nullptr, 0, DO_GaussianMixture_and_TableOfReal_to_TableOfReal_BHEPNormalityTests);
+
+	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"Draw concentration ellipses...", nullptr, 0, DO_GaussianMixture_and_PCA_drawConcentrationEllipses);
+	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"Draw marginal pdf...", nullptr, 0, DO_GaussianMixture_and_PCA_drawMarginalPdf);
+	praat_addAction2 (classGaussianMixture, 1, classPCA, 1, U"To Matrix (density)...", nullptr, 0, DO_GaussianMixture_and_PCA_to_Matrix_density);
+
+	praat_addAction1 (classHMM, 0, U"HMM help ", nullptr, 0, DO_HMM_help);
+	praat_addAction1 (classHMM, 0, U"Draw...", nullptr, 0, DO_HMM_draw);
+	praat_addAction1 (classHMM, 0, U"Query -", nullptr, 0, nullptr);
+	praat_addAction1 (classHMM, 1, U"Get transition probability...", nullptr, 1, DO_HMM_getTransitionProbability);
+	praat_addAction1 (classHMM, 1, U"Get emission probability...", nullptr, 1, DO_HMM_getEmissionProbability);
+	praat_addAction1 (classHMM, 1, U"Get start probability...", nullptr, 1, DO_HMM_getStartProbability);
+	praat_addAction1 (classHMM, 1, U"Get p (time, state)...", nullptr, 1, DO_HMM_getProbabilityAtTimeBeingInState);
+	praat_addAction1 (classHMM, 1, U"Get p (time, state, symbol)...", nullptr, 1, DO_HMM_getProbabilityAtTimeBeingInStateEmittingSymbol);
+	praat_addAction1 (classHMM, 1, U"Get probability staying in state...", nullptr, 1, DO_HMM_getProbabilityOfStayingInState);
+	praat_addAction1 (classHMM, 1, U"Get expected duration in state...", nullptr, 1, DO_HMM_getExpectedValueOfDurationInState);
+	praat_addAction1 (classHMM, 1, U"---- states / symbols -----", nullptr, 1, nullptr);
+	praat_addAction1 (classHMM, 1, U"Get state label...", nullptr, 1, DO_HMM_getStateLabel);
+	praat_addAction1 (classHMM, 1, U"Get symbol label...", nullptr, 1, DO_HMM_getSymbolLabel);
+	praat_addAction1 (classHMM, 0, U"--- multiple HMMs ----", nullptr, 1, nullptr);
+	praat_addAction1 (classHMM, 2, U"Get cross-entropy...", nullptr, 1, DO_HMM_and_HMM_getCrossEntropy);
+
+	praat_addAction1 (classHMM, 0, U"Modify -", nullptr, 0, nullptr);
+	praat_addAction1 (classHMM, 1, U"Set transition probabilities...", nullptr, 1, DO_HMM_setTransitionProbabilities);
+	praat_addAction1 (classHMM, 1, U"Set emission probabilities...", nullptr, 1, DO_HMM_setEmissionProbabilities);
+	praat_addAction1 (classHMM, 1, U"Set start probabilities...", nullptr, 1, DO_HMM_setStartProbabilities);
+
+	praat_addAction1 (classHMM, 0, U"Extract -", nullptr, 0, nullptr);
+	praat_addAction1 (classHMM, 0, U"Extract transition probabilities", nullptr, 1, DO_HMM_extractTransitionProbabilities);
+	praat_addAction1 (classHMM, 0, U"Extract emission probabilities", nullptr, 1, DO_HMM_extractEmissionProbabilities);
+
+	praat_addAction1 (classHMM, 0, U"To HMMObservationSequence...", nullptr, 0, DO_HMM_to_HMMObservationSequence);
+	praat_addAction2 (classHMM, 1, classHMMStateSequence, 1, U"Draw trellis...", nullptr, 0, DO_HMM_and_HMMStateSequence_drawTrellis);
+	praat_addAction2 (classHMM, 1, classHMMStateSequence, 1, U"Get probability", nullptr, 0, DO_HMM_and_HMMStateSequence_getProbability);
+	praat_addAction2 (classHMM, 1, classHMMStateSequence, 1, U"To TableOfReal (bigrams)...", nullptr, 0, DO_HMM_and_HMMStateSequence_to_TableOfReal);
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 1, U"Get probability", nullptr, 0, DO_HMM_and_HMMObservationSequence_getProbability);
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 1, U"Get cross-entropy", nullptr, 0, DO_HMM_and_HMMObservationSequence_getCrossEntropy);
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 1, U"Get perplexity", nullptr, 0, DO_HMM_and_HMMObservationSequence_getPerplexity);
+
+
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 1, U"To HMMStateSequence", nullptr, 0, DO_HMM_and_HMMObservationSequence_to_HMMStateSequence);
+	praat_addAction2 (classHMM, 2, classHMMObservationSequence, 1, U"Get cross-entropy", nullptr, 0, DO_HMM_and_HMM_and_HMMObservationSequence_getCrossEntropy);
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 1, U"To TableOfReal (bigrams)...", nullptr, 0, DO_HMM_and_HMMObservationSequence_to_TableOfReal);
+	praat_addAction2 (classHMM, 1, classHMMObservationSequence, 0, U"Learn...", nullptr, 0, DO_HMM_and_HMMObservationSequence_learn);
+
+	praat_addAction1 (classHMMObservationSequence, 0, U"To TableOfReal (bigrams)...", nullptr, 0, DO_HMMObservationSequence_to_TableOfReal);
+	praat_addAction1 (classHMMObservationSequence, 0, U"To Strings", nullptr, 0, DO_HMMObservationSequence_to_Strings);
+	praat_addAction1 (classHMMStateSequence, 0, U"To TableOfReal (bigrams)...", nullptr, 0, DO_HMMStateSequence_to_TableOfReal);
+	praat_addAction1 (classHMMStateSequence, 0, U"To Strings", nullptr, 0, DO_HMMStateSequence_to_Strings);
+
+	praat_addAction1 (classHMMObservationSequence, 0, U"To HMM...", nullptr, 1, DO_HMMObservationSequence_to_HMM);
+
+	praat_addAction1 (classStrings, 0, U"To HMMObservationSequence", nullptr, praat_HIDDEN, DO_Strings_to_HMMObservationSequence);
 	praat_addAction1 (classTableOfReal, 0, U"To GaussianMixture (row labels)...", U"To Covariance", praat_HIDDEN + praat_DEPTH_1, DO_TableOfReal_to_GaussianMixture_fromRowlabels);
 	praat_addAction1 (classTableOfReal, 0, U"To GaussianMixture...", U"To Covariance", praat_HIDDEN + praat_DEPTH_1, DO_TableOfReal_to_GaussianMixture);
 
diff --git a/dwtools/praat_KlattGrid_init.cpp b/dwtools/praat_KlattGrid_init.cpp
index 80cf477..92e983d 100644
--- a/dwtools/praat_KlattGrid_init.cpp
+++ b/dwtools/praat_KlattGrid_init.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2009-2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -35,58 +34,58 @@
 
 static const char32 *formant_names[] = { U"", U"oral ", U"nasal ", U"frication ", U"tracheal ", U"nasal anti", U"tracheal anti", U"delta "};
 
-static void KlattGrid_4formants_addCommonField (void *dia) {
-	Any radio;
+static void KlattGrid_4formants_addCommonField (UiForm dia) {
+	UiField radio;
 	OPTIONMENU (U"Formant type", 1)
-	OPTION (U"Normal formant")
-	OPTION (U"Nasal formant")
-	OPTION (U"Frication formant")
-	OPTION (U"Tracheal formant")
+		OPTION (U"Normal formant")
+		OPTION (U"Nasal formant")
+		OPTION (U"Frication formant")
+		OPTION (U"Tracheal formant")
 }
 
-static void KlattGrid_6formants_addCommonField (void *dia) {
-	Any radio;
+static void KlattGrid_6formants_addCommonField (UiForm dia) {
+	UiField radio;
 	OPTIONMENU (U"Formant type", 1)
-	OPTION (U"Normal formant")
-	OPTION (U"Nasal formant")
-	OPTION (U"Frication formant")
-	OPTION (U"Tracheal formant")
-	OPTION (U"Nasal antiformant")
-	OPTION (U"Tracheal antiformant")
-	//	OPTION (U"Delta formant")
+		OPTION (U"Normal formant")
+		OPTION (U"Nasal formant")
+		OPTION (U"Frication formant")
+		OPTION (U"Tracheal formant")
+		OPTION (U"Nasal antiformant")
+		OPTION (U"Tracheal antiformant")
+		//	OPTION (U"Delta formant")
 }
 
-static void KlattGrid_7formants_addCommonField (void *dia) {
-	Any radio;
+static void KlattGrid_7formants_addCommonField (UiForm dia) {
+	UiField radio;
 	OPTIONMENU (U"Formant type", 1)
-	OPTION (U"Normal formant")
-	OPTION (U"Nasal formant")
-	OPTION (U"Frication formant")
-	OPTION (U"Tracheal formant")
-	OPTION (U"Nasal antiformant")
-	OPTION (U"Tracheal antiformant")
-	OPTION (U"Delta formant")
+		OPTION (U"Normal formant")
+		OPTION (U"Nasal formant")
+		OPTION (U"Frication formant")
+		OPTION (U"Tracheal formant")
+		OPTION (U"Nasal antiformant")
+		OPTION (U"Tracheal antiformant")
+		OPTION (U"Delta formant")
 }
 
-static void KlattGrid_PhonationGridPlayOptions_addCommonFields (void *dia) {
-	Any radio;
+static void KlattGrid_PhonationGridPlayOptions_addCommonFields (UiForm dia) {
+	UiField radio;
 	//LABEL (U"", U"Phonation options")
-	BOOLEAN (U"Voicing", 1)
-	BOOLEAN (U"Flutter", 1)
-	BOOLEAN (U"Double pulsing", 1)
-	BOOLEAN (U"Collision phase", 1)
-	BOOLEAN (U"Spectral tilt", 1)
+	BOOLEAN (U"Voicing", true)
+	BOOLEAN (U"Flutter", true)
+	BOOLEAN (U"Double pulsing", true)
+	BOOLEAN (U"Collision phase", true)
+	BOOLEAN (U"Spectral tilt", true)
 	OPTIONMENU (U"Flow function", 1)
-	OPTION (U"Powers in tiers")
-	OPTION (U"t^2-t^3")
-	OPTION (U"t^3-t^4")
-	BOOLEAN (U"Flow derivative", 1)
-	BOOLEAN (U"Aspiration", 1)
-	BOOLEAN (U"Breathiness", 1)
+		OPTION (U"Powers in tiers")
+		OPTION (U"t^2-t^3")
+		OPTION (U"t^3-t^4")
+	BOOLEAN (U"Flow derivative", true)
+	BOOLEAN (U"Aspiration", true)
+	BOOLEAN (U"Breathiness", true)
 }
 
-static void KlattGrid_PhonationGridPlayOptions_getCommonFields (void *dia, KlattGrid thee) {
-	PhonationGridPlayOptions pp = thy phonation -> options;
+static void KlattGrid_PhonationGridPlayOptions_getCommonFields (UiForm dia, KlattGrid thee) {
+	PhonationGridPlayOptions pp = thy phonation -> options.get();
 	pp -> voicing = GET_INTEGER (U"Voicing");
 	pp -> flutter = GET_INTEGER (U"Flutter");
 	pp -> doublePulsing = GET_INTEGER (U"Double pulsing");
@@ -98,17 +97,19 @@ static void KlattGrid_PhonationGridPlayOptions_getCommonFields (void *dia, Klatt
 	pp -> breathiness = GET_INTEGER (U"Breathiness");
 }
 
-static void KlattGrid_PlayOptions_addCommonFields (void *dia, int sound) {
-	Any radio;
+static void KlattGrid_PlayOptions_addCommonFields (UiForm dia, bool hasSound) {
+	UiField radio;
 	//LABEL (U"", U"Time domain")
 	REAL (U"left Time range (s)", U"0")
 	REAL (U"right Time range (s)", U"0")
-	if (sound) POSITIVE (U"Sampling frequency (Hz)", U"44100")
-		BOOLEAN (U"Scale peak", 1)
-		KlattGrid_PhonationGridPlayOptions_addCommonFields (dia);
+	if (hasSound) {
+		POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
+	}
+	BOOLEAN (U"Scale peak", true)
+	KlattGrid_PhonationGridPlayOptions_addCommonFields (dia);
 	OPTIONMENU (U"Filter options", 1)
-	OPTION (U"Cascade")
-	OPTION (U"Parallel")
+		OPTION (U"Cascade")
+		OPTION (U"Parallel")
 	INTEGER (U"left Oral formant range", U"1")
 	INTEGER (U"right Oral formant range", U"5")
 	INTEGER (U"left Nasal formant range", U"1")
@@ -127,29 +128,29 @@ static void KlattGrid_PlayOptions_addCommonFields (void *dia, int sound) {
 	//LABEL (U"", U"Frication options")
 	INTEGER (U"left Frication formant range", U"1")
 	INTEGER (U"right Frication formant range", U"6")
-	BOOLEAN (U"Frication bypass", 1)
+	BOOLEAN (U"Frication bypass", true)
 }
 
-static void KlattGrid_PlayOptions_getCommonFields (void *dia, int sound, KlattGrid thee) {
+static void KlattGrid_PlayOptions_getCommonFields (UiForm dia, bool hasSound, KlattGrid thee) {
 	KlattGrid_setDefaultPlayOptions (thee);
-	KlattGridPlayOptions pk = thy options;
+	KlattGridPlayOptions pk = thy options.get();
 	pk -> scalePeak = GET_INTEGER (U"Scale peak");
 	pk -> xmin = GET_REAL (U"left Time range");
 	pk -> xmax = GET_REAL (U"right Time range");
-	if (sound) {
+	if (hasSound) {
 		pk -> samplingFrequency = GET_REAL (U"Sampling frequency");
 	}
 	pk -> scalePeak = GET_INTEGER (U"Scale peak");
 	KlattGrid_PhonationGridPlayOptions_getCommonFields (dia, thee);
-	VocalTractGridPlayOptions pv = thy vocalTract -> options;
-	pv -> filterModel = GET_INTEGER (U"Filter options") == 1 ? KlattGrid_FILTER_CASCADE : KlattGrid_FILTER_PARALLEL;
+	VocalTractGridPlayOptions pv = thy vocalTract -> options.get();
+	pv -> filterModel = ( GET_INTEGER (U"Filter options") == 1 ? KlattGrid_FILTER_CASCADE : KlattGrid_FILTER_PARALLEL );
 	pv -> startOralFormant = GET_INTEGER (U"left Oral formant range");
 	pv -> endOralFormant  = GET_INTEGER (U"right Oral formant range");
 	pv -> startNasalFormant = GET_INTEGER (U"left Nasal formant range");
 	pv -> endNasalFormant = GET_INTEGER (U"right Nasal formant range");
 	pv -> startNasalAntiFormant = GET_INTEGER (U"left Nasal antiformant range");
 	pv -> endNasalAntiFormant = GET_INTEGER (U"right Nasal antiformant range");
-	CouplingGridPlayOptions pc = thy coupling -> options;
+	CouplingGridPlayOptions pc = thy coupling -> options.get();
 	pc -> startTrachealFormant = GET_INTEGER (U"left Tracheal formant range");
 	pc -> endTrachealFormant = GET_INTEGER (U"right Tracheal formant range");
 	pc -> startTrachealAntiFormant = GET_INTEGER (U"left Tracheal antiformant range");
@@ -158,14 +159,14 @@ static void KlattGrid_PlayOptions_getCommonFields (void *dia, int sound, KlattGr
 	pc -> endDeltaFormant = GET_INTEGER (U"right Delta formant range");
 	pc -> startDeltaBandwidth = GET_INTEGER (U"left Delta bandwidth range");
 	pc -> endDeltaFormant = GET_INTEGER (U"right Delta bandwidth range");
-	FricationGridPlayOptions pf = thy frication -> options;
+	FricationGridPlayOptions pf = thy frication -> options.get();
 	pf -> startFricationFormant = GET_INTEGER (U"left Frication formant range");
 	pf -> endFricationFormant = GET_INTEGER (U"right Frication formant range");
 	pf -> bypass = GET_INTEGER (U"Frication bypass");
 }
 
 DIRECT (KlattGrid_createExample)
-praat_new (KlattGrid_createExample(), U"example");
+	praat_new (KlattGrid_createExample(), U"example");
 END
 
 FORM (KlattGrid_create, U"Create KlattGrid", U"Create KlattGrid...")
@@ -204,30 +205,31 @@ DO
 END
 
 
-#define KlattGrid_INSTALL_TIER_EDITOR(Name,name) \
+#define KlattGrid_INSTALL_TIER_EDITOR(Name) \
 DIRECT (KlattGrid_edit##Name##Tier) \
 	if (theCurrentPraatApplication -> batch) { Melder_throw (U"Cannot edit a KlattGrid from batch."); } \
 	LOOP {\
 		iam (KlattGrid); \
-		auto##KlattGrid_##name##TierEditor editor = KlattGrid_##name##TierEditor_create (ID_AND_FULL_NAME, me); \
-		praat_installEditor (editor.transfer(), IOBJECT); \
+		auto##KlattGrid_##Name##TierEditor editor = KlattGrid_##Name##TierEditor_create (ID_AND_FULL_NAME, me); \
+		praat_installEditor (editor.get(), IOBJECT); \
+		editor.releaseToUser(); \
 	}\
 END
 
-KlattGrid_INSTALL_TIER_EDITOR (Pitch, pitch)
-KlattGrid_INSTALL_TIER_EDITOR (VoicingAmplitude, voicingAmplitude)
-KlattGrid_INSTALL_TIER_EDITOR (Flutter, flutter)
-KlattGrid_INSTALL_TIER_EDITOR (Power1, power1)
-KlattGrid_INSTALL_TIER_EDITOR (Power2, power2)
-KlattGrid_INSTALL_TIER_EDITOR (OpenPhase, openPhase)
-KlattGrid_INSTALL_TIER_EDITOR (CollisionPhase, collisionPhase)
-KlattGrid_INSTALL_TIER_EDITOR (DoublePulsing, doublePulsing)
-KlattGrid_INSTALL_TIER_EDITOR (AspirationAmplitude, aspirationAmplitude)
-KlattGrid_INSTALL_TIER_EDITOR (BreathinessAmplitude, breathinessAmplitude)
-KlattGrid_INSTALL_TIER_EDITOR (SpectralTilt, spectralTilt)
-
-KlattGrid_INSTALL_TIER_EDITOR (FricationBypass, fricationBypass)
-KlattGrid_INSTALL_TIER_EDITOR (FricationAmplitude, fricationAmplitude)
+KlattGrid_INSTALL_TIER_EDITOR (Pitch)
+KlattGrid_INSTALL_TIER_EDITOR (VoicingAmplitude)
+KlattGrid_INSTALL_TIER_EDITOR (Flutter)
+KlattGrid_INSTALL_TIER_EDITOR (Power1)
+KlattGrid_INSTALL_TIER_EDITOR (Power2)
+KlattGrid_INSTALL_TIER_EDITOR (OpenPhase)
+KlattGrid_INSTALL_TIER_EDITOR (CollisionPhase)
+KlattGrid_INSTALL_TIER_EDITOR (DoublePulsing)
+KlattGrid_INSTALL_TIER_EDITOR (AspirationAmplitude)
+KlattGrid_INSTALL_TIER_EDITOR (BreathinessAmplitude)
+KlattGrid_INSTALL_TIER_EDITOR (SpectralTilt)
+
+KlattGrid_INSTALL_TIER_EDITOR (FricationBypass)
+KlattGrid_INSTALL_TIER_EDITOR (FricationAmplitude)
 
 #undef KlattGrid_INSTALL_TIER_EDITOR
 
@@ -237,8 +239,9 @@ DIRECT (KlattGrid_edit##Name##FormantGrid) \
 	LOOP {\
 		iam (KlattGrid); \
 		const char32 *id_and_name = Melder_cat (ID, U". ", formant_names[formantType], U"formant grid"); \
-		autoKlattGrid_formantGridEditor editor = KlattGrid_formantGridEditor_create (id_and_name, me, formantType); \
-		praat_installEditor (editor.transfer(), IOBJECT); \
+		autoKlattGrid_FormantGridEditor editor = KlattGrid_FormantGridEditor_create (id_and_name, me, formantType); \
+		praat_installEditor (editor.get(), IOBJECT); \
+		editor.releaseToUser(); \
 	} \
 END
 
@@ -253,7 +256,7 @@ KlattGRID_EDIT_FORMANTGRID (Frication, KlattGrid_FRICATION_FORMANTS)
 #undef KlattGRID_EDIT_FORMANTGRID
 
 #define KlattGrid_EDIT_FORMANT_AMPLITUDE_TIER(Name,name,formantType) \
-FORM (KlattGrid_edit##Name##FormantAmplitudeTier, U"KlattGrid: View & Edit " #name "formant amplitude tier", 0) \
+FORM (KlattGrid_edit##Name##FormantAmplitudeTier, U"KlattGrid: View & Edit " #name "formant amplitude tier", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	OK \
 DO \
@@ -261,12 +264,13 @@ DO \
 	if (theCurrentPraatApplication -> batch) { Melder_throw (U"Cannot edit a KlattGrid from batch."); } \
 	LOOP { \
 		iam (KlattGrid); \
-		Ordered *amp = KlattGrid_getAddressOfAmplitudes (me, formantType); \
-		if (amp == NULL) Melder_throw (U"Unknown formant type"); \
-		if (formantNumber > (*amp) -> size) Melder_throw (U"Formant number does not exist."); \
+		OrderedOf<structIntensityTier>* amp = KlattGrid_getAddressOfAmplitudes (me, formantType); \
+		if (! amp) Melder_throw (U"Unknown formant type"); \
+		if (formantNumber > amp->size) Melder_throw (U"Formant number does not exist."); \
 		const char32 *id_and_name = Melder_cat (ID, U". ", formant_names[formantType], U"formant amplitude tier"); \
-		autoKlattGrid_decibelTierEditor editor = KlattGrid_decibelTierEditor_create (id_and_name, me, (RealTier) (*amp)->item[formantNumber]); \
-		praat_installEditor (editor.transfer(), IOBJECT); \
+		autoKlattGrid_DecibelTierEditor editor = KlattGrid_DecibelTierEditor_create (id_and_name, me, amp->at [formantNumber]); \
+		praat_installEditor (editor.get(), IOBJECT); \
+		editor.releaseToUser(); \
 	} \
 END
 
@@ -277,8 +281,8 @@ KlattGrid_EDIT_FORMANT_AMPLITUDE_TIER (Frication, frication, KlattGrid_FRICATION
 
 #undef KlattGrid_EDIT_FORMANT_AMPLITUDE_TIER
 
-#define KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE(Name,name,unit,default,require, requiremessage,newname,tiertype) \
-FORM(KlattGrid_get##Name##AtTime, U"KlattGrid: Get " #name " at time", 0) \
+#define KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE(Name,name,unit,default,require,requiremessage,newname,tiertype) \
+FORM (KlattGrid_get##Name##AtTime, U"KlattGrid: Get " #name " at time", nullptr) \
 	REAL (U"Time", U"0.5") \
 	OK \
 DO \
@@ -286,7 +290,7 @@ DO \
 	Melder_informationReal (KlattGrid_get##Name##AtTime (me, GET_REAL (U"Time")), unit); \
 	}\
 END \
-FORM (KlattGrid_add##Name##Point, U"KlattGrid: Add " #name " point", 0) \
+FORM (KlattGrid_add##Name##Point, U"KlattGrid: Add " #name " point", nullptr) \
 	REAL (U"Time (s)", U"0.5") \
 	REAL (U"Value" unit, default) \
 	OK \
@@ -298,7 +302,7 @@ DO \
 		praat_dataChanged (me); \
 	} \
 END \
-FORM (KlattGrid_remove##Name##Points, U"Remove " #name " points", 0) \
+FORM (KlattGrid_remove##Name##Points, U"Remove " #name " points", nullptr) \
 	REAL (U"From time (s)", U"0.3")\
 	REAL (U"To time (s)", U"0.7") \
 	OK \
@@ -322,32 +326,32 @@ END
 
 // 55 DO_KlattGrid... functions
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (Pitch, pitch, U" (Hz)", (U"100.0"),
-        (value >= 0), (U"Pitch must be greater equal zero."), U"f0", PitchTier)
+        (value >= 0.0), (U"Pitch must be greater equal zero."), U"f0", PitchTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (VoicingAmplitude, voicing amplitude, U" (dB SPL)", U"90.0",
         (1), U"", U"voicing", IntensityTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (Flutter, flutter, U" (0..1)", (U"0.0"),
-        (value >= 0 && value <= 1), (U"Flutter must be in [0,1]."), U"flutter", RealTier)
+        (value >= 0.0 && value <= 1.0), (U"Flutter must be in [0,1]."), U"flutter", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (Power1, power1, U"", U"3",
-        (value > 0), U"Power1 needs to be positive.", U"power1", RealTier)
+        (value > 0.0), U"Power1 needs to be positive.", U"power1", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (Power2, power2, U"", U"4",
-        (value > 0), U"Power2 needs to be positive.", U"power2", RealTier)
+        (value > 0.0), U"Power2 needs to be positive.", U"power2", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (OpenPhase, open phase, U"", U"0.7",
-        (value >= 0 && value <= 1), U"Open phase must be greater than zero and smaller equal one.", U"openPhase", RealTier)
+        (value >= 0.0 && value <= 1.0), U"Open phase must be greater than zero and smaller equal one.", U"openPhase", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (CollisionPhase, collision phase, U"", U"0.03",
-        (value >= 0 && value < 1), U"Collision phase must be greater equal zero and smaller than one.", U"collisionPhase", RealTier)
+        (value >= 0.0 && value < 1.0), U"Collision phase must be greater equal zero and smaller than one.", U"collisionPhase", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (DoublePulsing, double pulsing, U" (0..1)", U"0.0",
-        (value >= 0 && value <= 1), U"Double pulsing must be greater equal zero and smaller equal one.", U"doublePulsing", RealTier)
+        (value >= 0.0 && value <= 1.0), U"Double pulsing must be greater equal zero and smaller equal one.", U"doublePulsing", RealTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (SpectralTilt, spectral tilt, U" (dB)", U"0.0",
-        (value >= 0), U"Spectral tilt must be greater equal zero.", U"spectralTilt", IntensityTier)
+        (value >= 0.0), U"Spectral tilt must be greater equal zero.", U"spectralTilt", IntensityTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (AspirationAmplitude, aspiration amplitude, U" (dB SPL)", U"0.0",
-        (1), U"", U"aspiration", IntensityTier)
+        (true), U"", U"aspiration", IntensityTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (BreathinessAmplitude, breathiness amplitude, U" (dB SPL)", U"30.0",
-        (1), U"", U"breathiness", IntensityTier)
+        (true), U"", U"breathiness", IntensityTier)
 
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (FricationAmplitude, frication amplitude, U" (dB SPL)", U"30.0",
-        (1), U"", U"frication", IntensityTier)
+        (true), U"", U"frication", IntensityTier)
 KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE (FricationBypass, frication bypass, U" (dB)", U"30.0",
-        (1), U"", U"bypass", IntensityTier)
+        (true), U"", U"bypass", IntensityTier)
 
 #undef KlattGrid_PHONATION_GET_ADD_REMOVE_EXTRACT_REPLACE
 
@@ -365,7 +369,7 @@ DO \
 END
 
 #define KlattGrid_ADD_FBA_VALUE(Name,namef,Form,FBA,fba,formantType,default,unit,require,requiremessage) \
-FORM (KlattGrid_add##Name##Formant##FBA##Point, U"KlattGrid: Add " #namef "ormant " #fba " point", 0) \
+FORM (KlattGrid_add##Name##Formant##FBA##Point, U"KlattGrid: Add " #namef "ormant " #fba " point", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
 	REAL (U"Value " #unit, default) \
@@ -380,7 +384,7 @@ DO \
 END
 
 #define KlattGrid_REMOVE_FBA_VALUE(Name,namef,Form,FBA,fba,formantType) \
-FORM (KlattGrid_remove##Name##Formant##FBA##Points, U"KlattGrid: Remove " #namef "ormant " #fba " points", 0) \
+FORM (KlattGrid_remove##Name##Formant##FBA##Points, U"KlattGrid: Remove " #namef "ormant " #fba " points", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"From time (s)", U"0.3")\
 	REAL (U"To time (s)", U"0.7") \
@@ -393,7 +397,7 @@ DO \
 END
 
 #define KlattGrid_ADD_FORMANT(Name,namef,formantType) \
-FORM (KlattGrid_add##Name##Formant, U"KlattGrid: Add " #namef "ormant", 0) \
+FORM (KlattGrid_add##Name##Formant, U"KlattGrid: Add " #namef "ormant", nullptr) \
 	INTEGER (U"Position", U"0 (=at end)") \
 	OK \
 DO \
@@ -404,7 +408,7 @@ DO \
 END
 
 #define KlattGrid_REMOVE_FORMANT(Name,namef,formantType) \
-FORM (KlattGrid_remove##Name##Formant, U"KlattGrid: Remove " #namef "ormant", 0) \
+FORM (KlattGrid_remove##Name##Formant, U"KlattGrid: Remove " #namef "ormant", nullptr) \
 	INTEGER (U"Position", U"0 (=do nothing)") \
 	OK \
 DO \
@@ -415,7 +419,7 @@ DO \
 END
 
 #define KlattGrid_ADD_FORMANT_FREQUENCYANDBANDWIDTHTIERS(Name,namef,formantType) \
-FORM (KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers, U"KlattGrid: Add " #namef "ormant", 0) \
+FORM (KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers, U"KlattGrid: Add " #namef "ormant", nullptr) \
 	INTEGER (U"Position", U"0 (=at end)") \
 	OK \
 DO \
@@ -426,7 +430,7 @@ DO \
 END
 
 #define KlattGrid_REMOVE_FORMANT_FREQUENCYANDBANDWIDTHTIERS(Name,namef,formantType) \
-FORM (KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers, U"KlattGrid: Remove " #namef "ormant", 0) \
+FORM (KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers, U"KlattGrid: Remove " #namef "ormant", nullptr) \
 	INTEGER (U"Position", U"0 (=do nothing)") \
 	OK \
 DO \
@@ -437,7 +441,7 @@ DO \
 END
 
 #define KlattGrid_ADD_FORMANT_AMPLITUDETIER(Name,namef,formantType) \
-FORM (KlattGrid_add##Name##FormantAmplitudeTier, U"KlattGrid: Add " #namef "ormant amplitude tier", 0) \
+FORM (KlattGrid_add##Name##FormantAmplitudeTier, U"KlattGrid: Add " #namef "ormant amplitude tier", nullptr) \
 	INTEGER (U"Position", U"0 (=at end)") \
 	OK \
 DO \
@@ -448,7 +452,7 @@ DO \
 END
 
 #define KlattGrid_REMOVE_FORMANT_AMPLITUDETIER(Name,namef,formantType) \
-FORM (KlattGrid_remove##Name##FormantAmplitudeTier, U"KlattGrid: Remove " #namef "ormant amplitude tier", 0) \
+FORM (KlattGrid_remove##Name##FormantAmplitudeTier, U"KlattGrid: Remove " #namef "ormant amplitude tier", nullptr) \
 	INTEGER (U"Position", U"0 (=do nothing)") \
 	OK \
 DO \
@@ -551,7 +555,7 @@ DO
 END
 
 #define KlattGrid_FORMANT_GET_FB_VALUE(Name,name,ForB,forb,FormB,formantType) \
-FORM (KlattGrid_get##Name##Formant##ForB##AtTime, U"KlattGrid: Get " #name " " #forb " at time", 0) \
+FORM (KlattGrid_get##Name##Formant##ForB##AtTime, U"KlattGrid: Get " #name " " #forb " at time", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
 	OK \
@@ -562,7 +566,7 @@ DO \
 END
 
 #define KlattGrid_FORMANT_GET_A_VALUE(Name,name,formantType) \
-FORM (KlattGrid_get##Name##FormantAmplitudeAtTime, U"KlattGrid: Get " #name " formant amplitude at time", 0) \
+FORM (KlattGrid_get##Name##FormantAmplitudeAtTime, U"KlattGrid: Get " #name " formant amplitude at time", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
 	OK \
@@ -599,7 +603,7 @@ DIRECT (KlattGrid_extract##Name##FormantGrid) \
 END
 
 #define KlattGrid_EXTRACT_FORMANT_AMPLITUDE(Name,name,formantType) \
-FORM (KlattGrid_extract##Name##FormantAmplitudeTier, U"KlattGrid: Extract " #name " formant amplitude tier", 0) \
+FORM (KlattGrid_extract##Name##FormantAmplitudeTier, U"KlattGrid: Extract " #name " formant amplitude tier", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	OK \
 DO \
@@ -608,7 +612,6 @@ DO \
 	} \
 END
 
-
 KlattGrid_EXTRACT_FORMANT_GRID (Oral, KlattGrid_ORAL_FORMANTS)
 KlattGrid_EXTRACT_FORMANT_AMPLITUDE (Oral, oral, KlattGrid_ORAL_FORMANTS)
 KlattGrid_EXTRACT_FORMANT_GRID (Nasal, KlattGrid_NASAL_FORMANTS)
@@ -632,7 +635,7 @@ DIRECT (KlattGrid_replace##Name##FormantGrid) \
 END
 
 #define KlattGrid_REPLACE_FORMANT_AMPLITUDE(Name,name,formantType) \
-FORM (KlattGrid_replace##Name##FormantAmplitudeTier, U"KlattGrid: Replace " #name " formant amplitude tier", 0) \
+FORM (KlattGrid_replace##Name##FormantAmplitudeTier, U"KlattGrid: Replace " #name " formant amplitude tier", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	OK \
 DO \
@@ -658,7 +661,7 @@ KlattGrid_REPLACE_FORMANT_AMPLITUDE (Frication, frication, KlattGrid_FRICATION_F
 #undef KlattGrid_REPLACE_FORMANTGRID
 
 #define KlattGrid_FORMANT_GET_ADD_REMOVE(Name,name,unit,default,require,requiremessage) \
-FORM (KlattGrid_get##Name##AtTime, U"KlattGrid: Get " #name " at time", 0) \
+FORM (KlattGrid_get##Name##AtTime, U"KlattGrid: Get " #name " at time", nullptr) \
 	KlattGrid_6formants_addCommonField (dia); \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
@@ -669,7 +672,7 @@ DO \
 		Melder_informationReal (KlattGrid_get##Name##AtTime (me, formantType, GET_INTEGER (U"Formant number"), GET_REAL (U"Time")), U" (Hz)"); \
 	} \
 END \
-FORM (KlattGrid_getDelta##Name##AtTime, U"KlattGrid: Get delta " #name " at time", 0) \
+FORM (KlattGrid_getDelta##Name##AtTime, U"KlattGrid: Get delta " #name " at time", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
 	OK \
@@ -678,7 +681,7 @@ DO \
 		Melder_informationReal (KlattGrid_getDelta##Name##AtTime (me, GET_INTEGER (U"Formant number"), GET_REAL (U"Time")), U" (Hz)"); \
 	} \
 END \
-FORM (KlattGrid_add##Name##Point, U"KlattGrid: Add " #name " point", 0) \
+FORM (KlattGrid_add##Name##Point, U"KlattGrid: Add " #name " point", nullptr) \
 	KlattGrid_6formants_addCommonField (dia); \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
@@ -693,7 +696,7 @@ DO \
 		praat_dataChanged (me); \
 	} \
 END \
-FORM (KlattGrid_addDelta##Name##Point, U"KlattGrid: Add delta " #name " point", 0) \
+FORM (KlattGrid_addDelta##Name##Point, U"KlattGrid: Add delta " #name " point", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"Time (s)", U"0.5") \
 	REAL (U"Value" unit, default) \
@@ -706,7 +709,7 @@ DO \
 		praat_dataChanged (me); \
 	} \
 END \
-FORM (KlattGrid_remove##Name##Points, U"Remove " #name " points", 0) \
+FORM (KlattGrid_remove##Name##Points, U"Remove " #name " points", nullptr) \
 	KlattGrid_6formants_addCommonField (dia); \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"From time (s)", U"0.3")\
@@ -719,7 +722,7 @@ DO \
 		praat_dataChanged (me);\
 	} \
 END \
-FORM (KlattGrid_removeDelta##Name##Points, U"Remove delta " #name " points", 0) \
+FORM (KlattGrid_removeDelta##Name##Points, U"Remove delta " #name " points", nullptr) \
 	NATURAL (U"Formant number", U"1") \
 	REAL (U"From time (s)", U"0.3")\
 	REAL (U"To time (s)", U"0.7") \
@@ -736,7 +739,7 @@ KlattGrid_FORMANT_GET_ADD_REMOVE (Bandwidth, bandwidth, U" (Hz)", U"50.0", (valu
 
 #undef KlattGrid_FORMANT_GET_ADD_REMOVE
 
-FORM (KlattGrid_addFormantAndBandwidthTier, U"", 0)
+FORM (KlattGrid_addFormantAndBandwidthTier, U"", nullptr)
 	KlattGrid_7formants_addCommonField (dia);
 	INTEGER (U"Position", U"0 (=at end)")
 	OK
@@ -749,7 +752,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_extractFormantGrid, U"KlattGrid: Extract formant grid", 0)
+FORM (KlattGrid_extractFormantGrid, U"KlattGrid: Extract formant grid", nullptr)
 	KlattGrid_6formants_addCommonField (dia);
 	OK
 DO
@@ -760,7 +763,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_replaceFormantGrid, U"KlattGrid: Replace formant grid", 0)
+FORM (KlattGrid_replaceFormantGrid, U"KlattGrid: Replace formant grid", nullptr)
 	KlattGrid_6formants_addCommonField (dia);
 	OK
 DO
@@ -770,7 +773,7 @@ DO
 	praat_dataChanged (OBJECT);
 END
 
-FORM (KlattGrid_getAmplitudeAtTime, U"KlattGrid: Get amplitude at time", 0) \
+FORM (KlattGrid_getAmplitudeAtTime, U"KlattGrid: Get amplitude at time", nullptr)
 	KlattGrid_4formants_addCommonField (dia);
 	NATURAL (U"Formant number", U"1")
 	REAL (U"Time (s)", U"0.5")
@@ -783,7 +786,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_addAmplitudePoint, U"KlattGrid: Add amplitude point", 0)
+FORM (KlattGrid_addAmplitudePoint, U"KlattGrid: Add amplitude point", nullptr)
 	KlattGrid_4formants_addCommonField (dia);
 	NATURAL (U"Formant number", U"1")
 	REAL (U"Time (s)", U"0.5")
@@ -799,7 +802,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_removeAmplitudePoints, U"Remove amplitude points", 0) \
+FORM (KlattGrid_removeAmplitudePoints, U"Remove amplitude points", nullptr)
 	KlattGrid_4formants_addCommonField (dia);
 	NATURAL (U"Formant number", U"1")
 	REAL (U"From time (s)", U"0.3")
@@ -814,7 +817,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_extractAmplitudeTier, U"", 0)
+FORM (KlattGrid_extractAmplitudeTier, U"", nullptr)
 	KlattGrid_4formants_addCommonField (dia);
 	NATURAL (U"Formant number", U"1")
 	OK
@@ -826,7 +829,7 @@ DO
 	}
 END
 
-FORM (KlattGrid_replaceAmplitudeTier, U"KlattGrid: Replace amplitude tier", 0)
+FORM (KlattGrid_replaceAmplitudeTier, U"KlattGrid: Replace amplitude tier", nullptr)
 	KlattGrid_4formants_addCommonField (dia);
 	NATURAL (U"Formant number", U"1")
 	OK
@@ -839,13 +842,13 @@ DO
 END
 
 FORM (KlattGrid_to_Sound_special, U"KlattGrid: To Sound (special)", U"KlattGrid: To Sound (special)...")
-	KlattGrid_PlayOptions_addCommonFields (dia, 1);
+	KlattGrid_PlayOptions_addCommonFields (dia, true);
 	OK
 DO
 	LOOP {
 		iam (KlattGrid);
 		KlattGrid_setDefaultPlayOptions (me);
-		KlattGrid_PlayOptions_getCommonFields (dia, 1, me);
+		KlattGrid_PlayOptions_getCommonFields (dia, true, me);
 		praat_new (KlattGrid_to_Sound (me), my name);
 	}
 END
@@ -859,19 +862,19 @@ DIRECT (KlattGrid_to_Sound)
 END
 
 FORM (KlattGrid_playSpecial, U"KlattGrid: Play special", U"KlattGrid: Play special...")
-	KlattGrid_PlayOptions_addCommonFields (dia, 0);
+	KlattGrid_PlayOptions_addCommonFields (dia, false);
 	OK
 DO
 	LOOP {
 		iam (KlattGrid);
 		KlattGrid_setDefaultPlayOptions (me);
-		KlattGrid_PlayOptions_getCommonFields (dia, 0, me);
+		KlattGrid_PlayOptions_getCommonFields (dia, false, me);
 		KlattGrid_playSpecial (me);
 	}
 END
 
 FORM (KlattGrid_to_Sound_phonation, U"KlattGrid: To Sound (phonation)", U"KlattGrid: To Sound (phonation)...")
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	KlattGrid_PhonationGridPlayOptions_addCommonFields (dia);
 	OK
 DO
@@ -892,10 +895,10 @@ DIRECT (KlattGrid_play)
 	}
 END
 
-FORM (KlattGrid_draw, U"KlattGrid: Draw", 0)
+FORM (KlattGrid_draw, U"KlattGrid: Draw", nullptr)
 	RADIO (U"Synthesis model", 1)
-	RADIOBUTTON (U"Cascade")
-	RADIOBUTTON (U"Parallel")
+		RADIOBUTTON (U"Cascade")
+		RADIOBUTTON (U"Parallel")
 	OK
 DO
 	autoPraatPicture picture;
@@ -905,11 +908,11 @@ DO
 	}
 END
 
-FORM (KlattGrid_drawVocalTract, U"KlattGrid: Draw vocal tract", 0)
+FORM (KlattGrid_drawVocalTract, U"KlattGrid: Draw vocal tract", nullptr)
 	RADIO (U"Synthesis model", 1)
-	RADIOBUTTON (U"Cascade")
-	RADIOBUTTON (U"Parallel")
-	BOOLEAN (U"Include tracheal formants", 1);
+		RADIOBUTTON (U"Cascade")
+		RADIOBUTTON (U"Parallel")
+	BOOLEAN (U"Include tracheal formants", true);
 	OK
 DO
 	autoPraatPicture picture;
@@ -923,7 +926,7 @@ DIRECT (KlattGrid_drawPhonation)
 	autoPraatPicture picture;
 	LOOP {
 		iam (KlattGrid);
-		PhonationGrid_draw (my phonation, GRAPHICS);
+		PhonationGrid_draw (my phonation.get(), GRAPHICS);
 	}
 END
 
@@ -931,7 +934,7 @@ DIRECT (KlattGrid_drawFrication)
 	autoPraatPicture picture;
 	LOOP {
 		iam (KlattGrid);
-		FricationGrid_draw (my frication, GRAPHICS);
+		FricationGrid_draw (my frication.get(), GRAPHICS);
 	}
 END
 
@@ -949,8 +952,8 @@ END
 
 FORM (Sound_KlattGrid_filterByVocalTract, U"Sound & KlattGrid: Filter by vocal tract", U"Sound & KlattGrid: Filter by vocal tract...")
 	RADIO (U"Vocal tract filter model", 1)
-	RADIOBUTTON (U"Cascade")
-	RADIOBUTTON (U"Parallel")
+		RADIOBUTTON (U"Cascade")
+		RADIOBUTTON (U"Parallel")
 	OK
 DO
 	Sound me = FIRST (Sound);
@@ -962,13 +965,13 @@ END
 void praat_KlattGrid_init ();
 void praat_KlattGrid_init () {
 
-	Thing_recognizeClassesByName (classKlattGrid, NULL);
+	Thing_recognizeClassesByName (classKlattGrid, nullptr);
 
-	praat_addMenuCommand (U"Objects", U"New", U"Acoustic synthesis (Klatt)", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"KlattGrid help", 0, 1, DO_KlattGrid_help);
-	praat_addMenuCommand (U"Objects", U"New", U"-- the synthesizer grid --", 0, 1, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create KlattGrid...", 0, 1, DO_KlattGrid_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create KlattGrid example", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_createExample);
+	praat_addMenuCommand (U"Objects", U"New", U"Acoustic synthesis (Klatt)", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"KlattGrid help", nullptr, 1, DO_KlattGrid_help);
+	praat_addMenuCommand (U"Objects", U"New", U"-- the synthesizer grid --", nullptr, 1, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create KlattGrid...", nullptr, 1, DO_KlattGrid_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create KlattGrid example", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_createExample);
 
 	/*
 	Edit oral/nasal/tracheal/frication/delta formant grid
@@ -1006,76 +1009,76 @@ void praat_KlattGrid_init () {
 	#define KlattGrid_TRACHEAL_ANTIFORMANTS 6
 	#define KlattGrid_DELTA_FORMANTS 7
 	*/
-	praat_addAction1 (classKlattGrid, 0, U"KlattGrid help", 0, 0, DO_KlattGrid_help);
-	praat_addAction1 (classKlattGrid, 0, U"Edit phonation -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Edit pitch tier", 0, 1, DO_KlattGrid_editPitchTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit voicing amplitude tier", 0, 1, DO_KlattGrid_editVoicingAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit flutter tier", 0, 1, DO_KlattGrid_editFlutterTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit power1 tier", 0, 1, DO_KlattGrid_editPower1Tier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit power2 tier", 0, 1, DO_KlattGrid_editPower2Tier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit open phase tier", 0, 1, DO_KlattGrid_editOpenPhaseTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit collision phase tier", 0, 1, DO_KlattGrid_editCollisionPhaseTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit double pulsing tier", 0, 1, DO_KlattGrid_editDoublePulsingTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit spectral tilt tier", 0, 1, DO_KlattGrid_editSpectralTiltTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit aspiration amplitude tier", 0, 1, DO_KlattGrid_editAspirationAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit breathiness amplitude tier", 0, 1, DO_KlattGrid_editBreathinessAmplitudeTier);
-
-	praat_addAction1 (classKlattGrid, 0, U"Edit filters -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Edit oral formant grid", 0, 1, DO_KlattGrid_editOralFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit nasal formant grid", 0, 1, DO_KlattGrid_editNasalFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit nasal antiformant grid", 0, 1, DO_KlattGrid_editNasalAntiFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit oral formant amplitude tier...", 0, 1, DO_KlattGrid_editOralFormantAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit nasal formant amplitude tier...", 0, 1, DO_KlattGrid_editNasalFormantAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"-- edit delta formant grid --", 0, 1, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Edit delta formant grid", 0, 1, DO_KlattGrid_editDeltaFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal formant grid", 0, 1, DO_KlattGrid_editTrachealFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal antiformant grid", 0, 1, DO_KlattGrid_editTrachealAntiFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal formant amplitude tier...", 0, 1, DO_KlattGrid_editTrachealFormantAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"-- edit frication tiers --", 0, 1, 0);
-	praat_addAction1 (classKlattGrid, 1, U"Edit frication amplitude tier", 0, 1, DO_KlattGrid_editFricationAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit frication formant grid", 0, 1, DO_KlattGrid_editFricationFormantGrid);
-	praat_addAction1 (classKlattGrid, 0, U"Edit frication formant amplitude tier...", 0, 1, DO_KlattGrid_editFricationFormantAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Edit frication bypass tier", 0, 1, DO_KlattGrid_editFricationBypassTier);
-	praat_addAction1 (classKlattGrid, 1, U"Edit frication amplitude tier", 0, 1, DO_KlattGrid_editFricationAmplitudeTier);
-
-	praat_addAction1 (classKlattGrid, 0, U"Play", 0, 0, DO_KlattGrid_play);
-	praat_addAction1 (classKlattGrid, 0, U"Play special...", 0, 0, DO_KlattGrid_playSpecial);
-	praat_addAction1 (classKlattGrid, 0, U"To Sound", 0, 0, DO_KlattGrid_to_Sound);
-	praat_addAction1 (classKlattGrid, 0, U"To Sound (special)...", 0, 0, DO_KlattGrid_to_Sound_special);
-	praat_addAction1 (classKlattGrid, 0, U"To Sound (phonation)...", 0, 0, DO_KlattGrid_to_Sound_phonation);
-
-	praat_addAction1 (classKlattGrid, 0, U"Draw -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Draw synthesizer...", 0, 1, DO_KlattGrid_draw);
-	praat_addAction1 (classKlattGrid, 0, U"Draw vocal tract...", 0, 1, DO_KlattGrid_drawVocalTract);
-	praat_addAction1 (classKlattGrid, 0, U"Draw phonation", 0, 1, DO_KlattGrid_drawPhonation);
-	praat_addAction1 (classKlattGrid, 0, U"Draw frication", 0, 1, DO_KlattGrid_drawFrication);
-
-	praat_addAction1 (classKlattGrid, 0, U"Query phonation -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 1, U"Get pitch at time...", 0, 1, DO_KlattGrid_getPitchAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get voicing amplitude at time...", 0, 1, DO_KlattGrid_getVoicingAmplitudeAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get flutter at time...", 0, 1, DO_KlattGrid_getFlutterAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get power1 at time...", 0, 1, DO_KlattGrid_getPower1AtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get power2 at time...", 0, 1, DO_KlattGrid_getPower2AtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get open phase at time...", 0, 1, DO_KlattGrid_getOpenPhaseAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get collision phase at time...", 0, 1, DO_KlattGrid_getCollisionPhaseAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get double pulsing at time...", 0, 1, DO_KlattGrid_getDoublePulsingAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get spectral tilt at time...", 0, 1, DO_KlattGrid_getSpectralTiltAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get aspiration amplitude at time...", 0, 1, DO_KlattGrid_getAspirationAmplitudeAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get breathiness amplitude at time...", 0, 1, DO_KlattGrid_getBreathinessAmplitudeAtTime);
-
-	praat_addAction1 (classKlattGrid, 0, U"Query filters -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 1, U"Get formant at time...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getFormantAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get bandwidth at time...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getBandwidthAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get amplitude at time...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getAmplitudeAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get delta formant at time...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getDeltaFormantAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get delta bandwidth at time...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getDeltaBandwidthAtTime);
+	praat_addAction1 (classKlattGrid, 0, U"KlattGrid help", nullptr, 0, DO_KlattGrid_help);
+	praat_addAction1 (classKlattGrid, 0, U"Edit phonation -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Edit pitch tier", nullptr, 1, DO_KlattGrid_editPitchTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit voicing amplitude tier", nullptr, 1, DO_KlattGrid_editVoicingAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit flutter tier", nullptr, 1, DO_KlattGrid_editFlutterTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit power1 tier", nullptr, 1, DO_KlattGrid_editPower1Tier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit power2 tier", nullptr, 1, DO_KlattGrid_editPower2Tier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit open phase tier", nullptr, 1, DO_KlattGrid_editOpenPhaseTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit collision phase tier", nullptr, 1, DO_KlattGrid_editCollisionPhaseTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit double pulsing tier", nullptr, 1, DO_KlattGrid_editDoublePulsingTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit spectral tilt tier", nullptr, 1, DO_KlattGrid_editSpectralTiltTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit aspiration amplitude tier", nullptr, 1, DO_KlattGrid_editAspirationAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit breathiness amplitude tier", nullptr, 1, DO_KlattGrid_editBreathinessAmplitudeTier);
+
+	praat_addAction1 (classKlattGrid, 0, U"Edit filters -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Edit oral formant grid", nullptr, 1, DO_KlattGrid_editOralFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit nasal formant grid", nullptr, 1, DO_KlattGrid_editNasalFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit nasal antiformant grid", nullptr, 1, DO_KlattGrid_editNasalAntiFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit oral formant amplitude tier...", nullptr, 1, DO_KlattGrid_editOralFormantAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit nasal formant amplitude tier...", nullptr, 1, DO_KlattGrid_editNasalFormantAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"-- edit delta formant grid --", nullptr, 1, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Edit delta formant grid", nullptr, 1, DO_KlattGrid_editDeltaFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal formant grid", nullptr, 1, DO_KlattGrid_editTrachealFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal antiformant grid", nullptr, 1, DO_KlattGrid_editTrachealAntiFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit tracheal formant amplitude tier...", nullptr, 1, DO_KlattGrid_editTrachealFormantAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"-- edit frication tiers --", nullptr, 1, nullptr);
+	praat_addAction1 (classKlattGrid, 1, U"Edit frication amplitude tier", nullptr, 1, DO_KlattGrid_editFricationAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit frication formant grid", nullptr, 1, DO_KlattGrid_editFricationFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Edit frication formant amplitude tier...", nullptr, 1, DO_KlattGrid_editFricationFormantAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Edit frication bypass tier", nullptr, 1, DO_KlattGrid_editFricationBypassTier);
+	praat_addAction1 (classKlattGrid, 1, U"Edit frication amplitude tier", nullptr, 1, DO_KlattGrid_editFricationAmplitudeTier);
+
+	praat_addAction1 (classKlattGrid, 0, U"Play", nullptr, 0, DO_KlattGrid_play);
+	praat_addAction1 (classKlattGrid, 0, U"Play special...", nullptr, 0, DO_KlattGrid_playSpecial);
+	praat_addAction1 (classKlattGrid, 0, U"To Sound", nullptr, 0, DO_KlattGrid_to_Sound);
+	praat_addAction1 (classKlattGrid, 0, U"To Sound (special)...", nullptr, 0, DO_KlattGrid_to_Sound_special);
+	praat_addAction1 (classKlattGrid, 0, U"To Sound (phonation)...", nullptr, 0, DO_KlattGrid_to_Sound_phonation);
+
+	praat_addAction1 (classKlattGrid, 0, U"Draw -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Draw synthesizer...", nullptr, 1, DO_KlattGrid_draw);
+	praat_addAction1 (classKlattGrid, 0, U"Draw vocal tract...", nullptr, 1, DO_KlattGrid_drawVocalTract);
+	praat_addAction1 (classKlattGrid, 0, U"Draw phonation", nullptr, 1, DO_KlattGrid_drawPhonation);
+	praat_addAction1 (classKlattGrid, 0, U"Draw frication", nullptr, 1, DO_KlattGrid_drawFrication);
+
+	praat_addAction1 (classKlattGrid, 0, U"Query phonation -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 1, U"Get pitch at time...", nullptr, 1, DO_KlattGrid_getPitchAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get voicing amplitude at time...", nullptr, 1, DO_KlattGrid_getVoicingAmplitudeAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get flutter at time...", nullptr, 1, DO_KlattGrid_getFlutterAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get power1 at time...", nullptr, 1, DO_KlattGrid_getPower1AtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get power2 at time...", nullptr, 1, DO_KlattGrid_getPower2AtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get open phase at time...", nullptr, 1, DO_KlattGrid_getOpenPhaseAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get collision phase at time...", nullptr, 1, DO_KlattGrid_getCollisionPhaseAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get double pulsing at time...", nullptr, 1, DO_KlattGrid_getDoublePulsingAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get spectral tilt at time...", nullptr, 1, DO_KlattGrid_getSpectralTiltAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get aspiration amplitude at time...", nullptr, 1, DO_KlattGrid_getAspirationAmplitudeAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get breathiness amplitude at time...", nullptr, 1, DO_KlattGrid_getBreathinessAmplitudeAtTime);
+
+	praat_addAction1 (classKlattGrid, 0, U"Query filters -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 1, U"Get formant at time...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getFormantAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get bandwidth at time...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getBandwidthAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get amplitude at time...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getAmplitudeAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get delta formant at time...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getDeltaFormantAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get delta bandwidth at time...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_getDeltaBandwidthAtTime);
 
 #define KlattGRID_GET_FORMANT_FB_VALUES_ACTION(Name, formantname) \
-	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " frequency at time...", 0, 1, DO_KlattGrid_get##Name##FormantFrequencyAtTime); \
-	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " bandwidth at time...", 0, 1, DO_KlattGrid_get##Name##FormantBandwidthAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " frequency at time...", nullptr, 1, DO_KlattGrid_get##Name##FormantFrequencyAtTime); \
+	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " bandwidth at time...", nullptr, 1, DO_KlattGrid_get##Name##FormantBandwidthAtTime);
 
 #define KlattGRID_GET_FORMANT_A_VALUES_ACTION(Name,formantname) \
-	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " amplitude at time...", 0, 1, DO_KlattGrid_get##Name##FormantAmplitudeAtTime); \
+	praat_addAction1 (classKlattGrid, 1, U"Get " #formantname " amplitude at time...", nullptr, 1, DO_KlattGrid_get##Name##FormantAmplitudeAtTime); \
 
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (Oral, oral formant)
 	KlattGRID_GET_FORMANT_A_VALUES_ACTION (Oral, oral formant)
@@ -1083,37 +1086,37 @@ void praat_KlattGrid_init () {
 	KlattGRID_GET_FORMANT_A_VALUES_ACTION (Nasal, nasal formant)
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (NasalAnti, nasal antiformant)
 
-	praat_addAction1 (classKlattGrid, 1, U"-- query delta characteristics", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 1, U"-- query delta characteristics", nullptr, 1, nullptr);
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (Delta, delta formant)
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (Tracheal, tracheal formant)
 	KlattGRID_GET_FORMANT_A_VALUES_ACTION (Tracheal, tracheal formant)
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (TrachealAnti, tracheal antiformant)
-	praat_addAction1 (classKlattGrid, 1, U"-- query frication characteristics", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 1, U"-- query frication characteristics", nullptr, 1, nullptr);
 	KlattGRID_GET_FORMANT_FB_VALUES_ACTION (Frication, frication formant)
 	KlattGRID_GET_FORMANT_A_VALUES_ACTION (Frication, frication formant)
 
 #undef KlattGRID_GET_FORMANT_A_VALUES_ACTION
 #undef KlattGRID_GET_FORMANT_A_VALUES_ACTION
 
-	praat_addAction1 (classKlattGrid, 1, U"Get frication bypass at time...", 0, 1, DO_KlattGrid_getFricationBypassAtTime);
-	praat_addAction1 (classKlattGrid, 1, U"Get frication amplitude at time...", 0, 1, DO_KlattGrid_getFricationAmplitudeAtTime);
-
-	praat_addAction1 (classKlattGrid, 0, U"Modify phonation -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Add pitch point...", 0, 1, DO_KlattGrid_addPitchPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add voicing amplitude point...", 0, 1, DO_KlattGrid_addVoicingAmplitudePoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add flutter point...", 0, 1, DO_KlattGrid_addFlutterPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add power1 point...", 0, 1, DO_KlattGrid_addPower1Point);
-	praat_addAction1 (classKlattGrid, 0, U"Add power2 point...", 0, 1, DO_KlattGrid_addPower2Point);
-	praat_addAction1 (classKlattGrid, 0, U"Add open phase point...", 0, 1, DO_KlattGrid_addOpenPhasePoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add collision phase point...", 0, 1, DO_KlattGrid_addCollisionPhasePoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add double pulsing point...", 0, 1, DO_KlattGrid_addDoublePulsingPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add spectral tilt point...", 0, 1, DO_KlattGrid_addSpectralTiltPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add aspiration amplitude point...", 0, 1, DO_KlattGrid_addAspirationAmplitudePoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add breathiness amplitude point...", 0, 1, DO_KlattGrid_addBreathinessAmplitudePoint);
+	praat_addAction1 (classKlattGrid, 1, U"Get frication bypass at time...", nullptr, 1, DO_KlattGrid_getFricationBypassAtTime);
+	praat_addAction1 (classKlattGrid, 1, U"Get frication amplitude at time...", nullptr, 1, DO_KlattGrid_getFricationAmplitudeAtTime);
+
+	praat_addAction1 (classKlattGrid, 0, U"Modify phonation -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Add pitch point...", nullptr, 1, DO_KlattGrid_addPitchPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add voicing amplitude point...", nullptr, 1, DO_KlattGrid_addVoicingAmplitudePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add flutter point...", nullptr, 1, DO_KlattGrid_addFlutterPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add power1 point...", nullptr, 1, DO_KlattGrid_addPower1Point);
+	praat_addAction1 (classKlattGrid, 0, U"Add power2 point...", nullptr, 1, DO_KlattGrid_addPower2Point);
+	praat_addAction1 (classKlattGrid, 0, U"Add open phase point...", nullptr, 1, DO_KlattGrid_addOpenPhasePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add collision phase point...", nullptr, 1, DO_KlattGrid_addCollisionPhasePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add double pulsing point...", nullptr, 1, DO_KlattGrid_addDoublePulsingPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add spectral tilt point...", nullptr, 1, DO_KlattGrid_addSpectralTiltPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add aspiration amplitude point...", nullptr, 1, DO_KlattGrid_addAspirationAmplitudePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add breathiness amplitude point...", nullptr, 1, DO_KlattGrid_addBreathinessAmplitudePoint);
 
 #define KlattGrid_REMOVE_POINTS_ACTION(Name,name) \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #name " points between...", 0, praat_DEPTH_1+praat_HIDDEN, DO_KlattGrid_remove##Name##Points); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #name " points...", 0, 1, DO_KlattGrid_remove##Name##Points);
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #name " points between...", nullptr, praat_DEPTH_1+praat_HIDDEN, DO_KlattGrid_remove##Name##Points); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #name " points...", nullptr, 1, DO_KlattGrid_remove##Name##Points);
 
 	KlattGrid_REMOVE_POINTS_ACTION (Pitch, pitch)
 	KlattGrid_REMOVE_POINTS_ACTION (VoicingAmplitude, voicing amplitude)
@@ -1127,168 +1130,166 @@ void praat_KlattGrid_init () {
 	KlattGrid_REMOVE_POINTS_ACTION (AspirationAmplitude, aspiration amplitude)
 	KlattGrid_REMOVE_POINTS_ACTION (BreathinessAmplitude, breathiness amplitude)
 
-	praat_addAction1 (classKlattGrid, 0, U"Modify vocal tract -", 0, 0, 0);
+	praat_addAction1 (classKlattGrid, 0, U"Modify vocal tract -", nullptr, 0, nullptr);
 
 #define KlattGrid_MODIFY_ACTIONS_FBA(Name,formantname) \
-	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " frequencies)...", 0, 1, DO_KlattGrid_formula##Name##FormantFrequencies); \
-	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " bandwidths)...", 0, 1, DO_KlattGrid_formula##Name##FormantBandwidths); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency point...", 0, 1, DO_KlattGrid_add##Name##FormantFrequencyPoint); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " bandwidth point...", 0, 1, DO_KlattGrid_add##Name##FormantBandwidthPoint); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " amplitude point...", 0, 1, DO_KlattGrid_add##Name##FormantAmplitudePoint); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency points...", 0, 1, DO_KlattGrid_remove##Name##FormantFrequencyPoints); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " bandwidth points...", 0, 1, DO_KlattGrid_remove##Name##FormantBandwidthPoints); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " amplitude points...", 0, 1, DO_KlattGrid_remove##Name##FormantAmplitudePoints); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency and bandwidth tiers...", 0, 1, DO_KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency and bandwidth tiers...", 0, 1, DO_KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " amplitude tier...", 0, 1, DO_KlattGrid_add##Name##FormantAmplitudeTier); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " amplitude tier...", 0, 1, DO_KlattGrid_remove##Name##FormantAmplitudeTier); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname "...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_add##Name##Formant); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname "...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_remove##Name##Formant);
+	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " frequencies)...", nullptr, 1, DO_KlattGrid_formula##Name##FormantFrequencies); \
+	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " bandwidths)...", nullptr, 1, DO_KlattGrid_formula##Name##FormantBandwidths); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency point...", nullptr, 1, DO_KlattGrid_add##Name##FormantFrequencyPoint); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " bandwidth point...", nullptr, 1, DO_KlattGrid_add##Name##FormantBandwidthPoint); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " amplitude point...", nullptr, 1, DO_KlattGrid_add##Name##FormantAmplitudePoint); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency points...", nullptr, 1, DO_KlattGrid_remove##Name##FormantFrequencyPoints); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " bandwidth points...", nullptr, 1, DO_KlattGrid_remove##Name##FormantBandwidthPoints); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " amplitude points...", nullptr, 1, DO_KlattGrid_remove##Name##FormantAmplitudePoints); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency and bandwidth tiers...", nullptr, 1, DO_KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency and bandwidth tiers...", nullptr, 1, DO_KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " amplitude tier...", nullptr, 1, DO_KlattGrid_add##Name##FormantAmplitudeTier); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " amplitude tier...", nullptr, 1, DO_KlattGrid_remove##Name##FormantAmplitudeTier); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname "...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_add##Name##Formant); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname "...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_remove##Name##Formant);
 
 #define KlattGrid_MODIFY_ACTIONS_FB(Name,formantname) \
-	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " frequencies)...", 0, 1, DO_KlattGrid_formula##Name##FormantFrequencies); \
-	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " bandwidths)...", 0, 1, DO_KlattGrid_formula##Name##FormantBandwidths); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency point...", 0, 1, DO_KlattGrid_add##Name##FormantFrequencyPoint); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " bandwidth point...", 0, 1, DO_KlattGrid_add##Name##FormantBandwidthPoint); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency points...", 0, 1, DO_KlattGrid_remove##Name##FormantFrequencyPoints); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " bandwidth points...", 0, 1, DO_KlattGrid_remove##Name##FormantBandwidthPoints); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency and bandwidth tiers...", 0, 1, DO_KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency and bandwidth tiers...", 0, 1, DO_KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers); \
-	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname "...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_add##Name##Formant); \
-	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname "...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_remove##Name##Formant);
+	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " frequencies)...", nullptr, 1, DO_KlattGrid_formula##Name##FormantFrequencies); \
+	praat_addAction1 (classKlattGrid, 0, U"Formula (" #formantname " bandwidths)...", nullptr, 1, DO_KlattGrid_formula##Name##FormantBandwidths); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency point...", nullptr, 1, DO_KlattGrid_add##Name##FormantFrequencyPoint); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " bandwidth point...", nullptr, 1, DO_KlattGrid_add##Name##FormantBandwidthPoint); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency points...", nullptr, 1, DO_KlattGrid_remove##Name##FormantFrequencyPoints); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " bandwidth points...", nullptr, 1, DO_KlattGrid_remove##Name##FormantBandwidthPoints); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname " frequency and bandwidth tiers...", nullptr, 1, DO_KlattGrid_add##Name##FormantFrequencyAndBandwidthTiers); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname " frequency and bandwidth tiers...", nullptr, 1, DO_KlattGrid_remove##Name##FormantFrequencyAndBandwidthTiers); \
+	praat_addAction1 (classKlattGrid, 0, U"Add " #formantname "...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_add##Name##Formant); \
+	praat_addAction1 (classKlattGrid, 0, U"Remove " #formantname "...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_remove##Name##Formant);
 
 	KlattGrid_MODIFY_ACTIONS_FBA (Oral, oral formant)
-	praat_addAction1 (classKlattGrid, 0, U"-- oral modify separator --", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- oral modify separator --", nullptr, 1, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FBA (Nasal, nasal formant)
-	praat_addAction1 (classKlattGrid, 0, U"-- nasal modify separator --", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- nasal modify separator --", nullptr, 1, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FB (NasalAnti, nasal antiformant)
 
-	praat_addAction1 (classKlattGrid, 0, U"Formula (frequencies)...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_formula_frequencies);
-	praat_addAction1 (classKlattGrid, 0, U"Formula (bandwidths)...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_formula_bandwidths);
-	praat_addAction1 (classKlattGrid, 0, U"Add formant point...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addFormantPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add bandwidth point...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addBandwidthPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add amplitude point...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addAmplitudePoint);
-	praat_addAction1 (classKlattGrid, 0, U"Remove formant points between...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeFormantPoints);
-	praat_addAction1 (classKlattGrid, 0, U"Remove bandwidth points between...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeBandwidthPoints);
-	praat_addAction1 (classKlattGrid, 0, U"Remove amplitude points between...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeAmplitudePoints);
-	praat_addAction1 (classKlattGrid, 0, U"Modify coupling - ", 0, 0, 0);
+	praat_addAction1 (classKlattGrid, 0, U"Formula (frequencies)...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_formula_frequencies);
+	praat_addAction1 (classKlattGrid, 0, U"Formula (bandwidths)...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_formula_bandwidths);
+	praat_addAction1 (classKlattGrid, 0, U"Add formant point...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addFormantPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add bandwidth point...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addBandwidthPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add amplitude point...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addAmplitudePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Remove formant points between...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeFormantPoints);
+	praat_addAction1 (classKlattGrid, 0, U"Remove bandwidth points between...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeBandwidthPoints);
+	praat_addAction1 (classKlattGrid, 0, U"Remove amplitude points between...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeAmplitudePoints);
+	praat_addAction1 (classKlattGrid, 0, U"Modify coupling - ", nullptr, 0, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FB (Delta, delta formant)
-	praat_addAction1 (classKlattGrid, 0, U"-- delta modify separator --", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- delta modify separator --", nullptr, 1, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FBA (Tracheal, tracheal formant)
-	praat_addAction1 (classKlattGrid, 0, U"-- nasal modify separator --", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- nasal modify separator --", nullptr, 1, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FB (TrachealAnti, tracheal antiformant)
 
-	praat_addAction1 (classKlattGrid, 0, U"Add delta formant point...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addDeltaFormantPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add delta bandwidth point...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addDeltaBandwidthPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Remove delta formant points between...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeDeltaFormantPoints);
-	praat_addAction1 (classKlattGrid, 0, U"Remove delta bandwidth points between...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeDeltaBandwidthPoints);
+	praat_addAction1 (classKlattGrid, 0, U"Add delta formant point...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addDeltaFormantPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add delta bandwidth point...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addDeltaBandwidthPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Remove delta formant points between...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeDeltaFormantPoints);
+	praat_addAction1 (classKlattGrid, 0, U"Remove delta bandwidth points between...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_removeDeltaBandwidthPoints);
 
-	praat_addAction1 (classKlattGrid, 0, U"Modify frication -", 0, 0, 0);
+	praat_addAction1 (classKlattGrid, 0, U"Modify frication -", nullptr, 0, nullptr);
 	KlattGrid_MODIFY_ACTIONS_FBA (Frication, frication formant)
-	praat_addAction1 (classKlattGrid, 0, U"-- frication modify separator --", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- frication modify separator --", nullptr, 1, nullptr);
 
-	praat_addAction1 (classKlattGrid, 0, U"Add frication bypass point...", 0, 1, DO_KlattGrid_addFricationBypassPoint);
-	praat_addAction1 (classKlattGrid, 0, U"Add frication amplitude point...", 0, 1, DO_KlattGrid_addFricationAmplitudePoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add frication bypass point...", nullptr, 1, DO_KlattGrid_addFricationBypassPoint);
+	praat_addAction1 (classKlattGrid, 0, U"Add frication amplitude point...", nullptr, 1, DO_KlattGrid_addFricationAmplitudePoint);
 	KlattGrid_REMOVE_POINTS_ACTION (FricationBypass, frication bypass)
 	KlattGrid_REMOVE_POINTS_ACTION (FricationAmplitude, frication amplitude)
-	praat_addAction1 (classKlattGrid, 0, U"Add formant and bandwidth tier...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addFormantAndBandwidthTier);
+	praat_addAction1 (classKlattGrid, 0, U"Add formant and bandwidth tier...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_addFormantAndBandwidthTier);
 
 #undef KlattGrid_REMOVE_POINTS_ACTION
 #undef KlattGrid_MODIFY_ACTION_FB
 #undef KlattGrid_MODIFY_ACTION_FBA
 
-	praat_addAction1 (classKlattGrid, 0, U"Extract phonation -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Extract pitch tier", 0, 1, DO_KlattGrid_extractPitchTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract voicing amplitude tier", 0, 1, DO_KlattGrid_extractVoicingAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract flutter tier", 0, 1, DO_KlattGrid_extractFlutterTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract power1 tier", 0, 1, DO_KlattGrid_extractPower1Tier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract power2 tier", 0, 1, DO_KlattGrid_extractPower2Tier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract open phase tier", 0, 1, DO_KlattGrid_extractOpenPhaseTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract collision phase tier", 0, 1, DO_KlattGrid_extractCollisionPhaseTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract double pulsing tier", 0, 1, DO_KlattGrid_extractDoublePulsingTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract spectral tilt tier", 0, 1, DO_KlattGrid_extractSpectralTiltTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract aspiration amplitude tier", 0, 1, DO_KlattGrid_extractAspirationAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract breathiness amplitude tier", 0, 1, DO_KlattGrid_extractBreathinessAmplitudeTier);
-	praat_addAction1 (classKlattGrid, 0, U"-- extract glottal events--", 0, 1, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Extract PointProcess (glottal closures)", 0, 1, DO_KlattGrid_extractPointProcess_glottalClosures);
+	praat_addAction1 (classKlattGrid, 0, U"Extract phonation -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Extract pitch tier", nullptr, 1, DO_KlattGrid_extractPitchTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract voicing amplitude tier", nullptr, 1, DO_KlattGrid_extractVoicingAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract flutter tier", nullptr, 1, DO_KlattGrid_extractFlutterTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract power1 tier", nullptr, 1, DO_KlattGrid_extractPower1Tier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract power2 tier", nullptr, 1, DO_KlattGrid_extractPower2Tier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract open phase tier", nullptr, 1, DO_KlattGrid_extractOpenPhaseTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract collision phase tier", nullptr, 1, DO_KlattGrid_extractCollisionPhaseTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract double pulsing tier", nullptr, 1, DO_KlattGrid_extractDoublePulsingTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract spectral tilt tier", nullptr, 1, DO_KlattGrid_extractSpectralTiltTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract aspiration amplitude tier", nullptr, 1, DO_KlattGrid_extractAspirationAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract breathiness amplitude tier", nullptr, 1, DO_KlattGrid_extractBreathinessAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"-- extract glottal events--", nullptr, 1, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Extract PointProcess (glottal closures)", nullptr, 1, DO_KlattGrid_extractPointProcess_glottalClosures);
 
 #define KlattGRID_EXTRACT_FORMANT_GRID_ACTION(Name,namef) \
-	praat_addAction1 (classKlattGrid, 0, U"Extract " #namef "ormant grid", 0, 1, DO_KlattGrid_extract##Name##FormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"Extract " #namef "ormant grid", nullptr, 1, DO_KlattGrid_extract##Name##FormantGrid);
 #define KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION(Name,name) \
-	praat_addAction1 (classKlattGrid, 0, U"Extract " #name " formant amplitude tier...", 0, 1, DO_KlattGrid_extract##Name##FormantAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract " #name " formant amplitude tier...", nullptr, 1, DO_KlattGrid_extract##Name##FormantAmplitudeTier);
 
-	praat_addAction1 (classKlattGrid, 0, U"Extract filters -", 0, 0, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Extract formant grid...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_extractFormantGrid); // deprecated
+	praat_addAction1 (classKlattGrid, 0, U"Extract filters -", nullptr, 0, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Extract formant grid...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_extractFormantGrid); // deprecated
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (Oral, oral f)
-	praat_addAction1 (classKlattGrid, 0, U"Extract amplitude tier...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_extractAmplitudeTier); // deprecated
-	praat_addAction1 (classKlattGrid, 0, U"Extract formant grid (open phases)...", 0, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_to_oralFormantGrid_openPhases);
-	praat_addAction1 (classKlattGrid, 0, U"Extract oral formant grid (open phases)...", 0, 1, DO_KlattGrid_to_oralFormantGrid_openPhases);
+	praat_addAction1 (classKlattGrid, 0, U"Extract amplitude tier...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_KlattGrid_extractAmplitudeTier); // deprecated
+	praat_addAction1 (classKlattGrid, 0, U"Extract formant grid (open phases)...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_to_oralFormantGrid_openPhases);
+	praat_addAction1 (classKlattGrid, 0, U"Extract oral formant grid (open phases)...", nullptr, 1, DO_KlattGrid_to_oralFormantGrid_openPhases);
 	KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION (Oral, oral)
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (Nasal, nasal f)
 	KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION (Nasal, nasal)
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (NasalAnti, nasal antif)
 
-	praat_addAction1 (classKlattGrid, 0, U"-- extract delta characteristics", 0, 1, 0);
-	praat_addAction1 (classKlattGrid, 0, U"Extract delta formant grid", 0, 1, DO_KlattGrid_extractDeltaFormantGrid);
+	praat_addAction1 (classKlattGrid, 0, U"-- extract delta characteristics", nullptr, 1, nullptr);
+	praat_addAction1 (classKlattGrid, 0, U"Extract delta formant grid", nullptr, 1, DO_KlattGrid_extractDeltaFormantGrid);
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (Tracheal, tracheal f)
 	KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION (Tracheal, tracheal)
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (TrachealAnti, tracheal antif)
-	praat_addAction1 (classKlattGrid, 0, U"-- extract frication characteristics", 0, 1, 0);
+	praat_addAction1 (classKlattGrid, 0, U"-- extract frication characteristics", nullptr, 1, nullptr);
 	KlattGRID_EXTRACT_FORMANT_GRID_ACTION (Frication, frication f)
 	KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION (Frication, frication)
-	praat_addAction1 (classKlattGrid, 0, U"Extract frication bypass tier", 0, 1, DO_KlattGrid_extractFricationBypassTier);
-	praat_addAction1 (classKlattGrid, 0, U"Extract frication amplitude tier", 0, 1, DO_KlattGrid_extractFricationAmplitudeTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract frication bypass tier", nullptr, 1, DO_KlattGrid_extractFricationBypassTier);
+	praat_addAction1 (classKlattGrid, 0, U"Extract frication amplitude tier", nullptr, 1, DO_KlattGrid_extractFricationAmplitudeTier);
 
 #undef KlattGRID_EXTRACT_FORMANT_AMPLITUDE_ACTION
 #undef KlattGRID_EXTRACT_FORMANT_GRID_ACTION
 
-	praat_addAction2 (classKlattGrid, 1, classPitchTier, 1, U"Replace pitch tier", 0, 1, DO_KlattGrid_replacePitchTier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace flutter tier", 0, 1, DO_KlattGrid_replaceFlutterTier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace power1 tier", 0, 1, DO_KlattGrid_replacePower1Tier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace power2 tier", 0, 1, DO_KlattGrid_replacePower2Tier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace open phase tier", 0, 1, DO_KlattGrid_replaceOpenPhaseTier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace collision phase tier", 0, 1, DO_KlattGrid_replaceCollisionPhaseTier);
-	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace double pulsing tier", 0, 1, DO_KlattGrid_replaceDoublePulsingTier);
+	praat_addAction2 (classKlattGrid, 1, classPitchTier, 1, U"Replace pitch tier", nullptr, 1, DO_KlattGrid_replacePitchTier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace flutter tier", nullptr, 1, DO_KlattGrid_replaceFlutterTier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace power1 tier", nullptr, 1, DO_KlattGrid_replacePower1Tier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace power2 tier", nullptr, 1, DO_KlattGrid_replacePower2Tier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace open phase tier", nullptr, 1, DO_KlattGrid_replaceOpenPhaseTier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace collision phase tier", nullptr, 1, DO_KlattGrid_replaceCollisionPhaseTier);
+	praat_addAction2 (classKlattGrid, 1, classRealTier, 1, U"Replace double pulsing tier", nullptr, 1, DO_KlattGrid_replaceDoublePulsingTier);
 
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"-- replace formant amplitudes --", 0, 1, 0);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"-- replace formant amplitudes --", nullptr, 1, nullptr);
 
 #define KlattGrid_REPLACE_FORMANTGRID_ACTION(Name,namef) \
-	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"Replace " #namef "ormant grid", 0, 1, DO_KlattGrid_replace##Name##FormantGrid);
+	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"Replace " #namef "ormant grid", nullptr, 1, DO_KlattGrid_replace##Name##FormantGrid);
 #define KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION(Name,namef) \
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace " #namef "ormant amplitude tier...", 0, 1, DO_KlattGrid_replace##Name##FormantAmplitudeTier);
-
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace " #namef "ormant amplitude tier...", nullptr, 1, DO_KlattGrid_replace##Name##FormantAmplitudeTier);
 
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (Oral, oral f)
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (Nasal, nasal f)
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (NasalAnti, nasal antif)
-	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"-- replace coupling --", 0, 1, 0);
+	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"-- replace coupling --", nullptr, 1, nullptr);
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (Tracheal, tracheal f)
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (TrachealAnti, tracheal antif)
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (Delta, delta f)
-	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"-- replace frication --", 0, 1, 0);
+	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"-- replace frication --", nullptr, 1, nullptr);
 	KlattGrid_REPLACE_FORMANTGRID_ACTION (Frication, frication f)
-	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"Replace formant grid...", 0, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_replaceFormantGrid);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace voicing amplitude tier", 0, 1, DO_KlattGrid_replaceVoicingAmplitudeTier);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace spectral tilt tier", 0, 1, DO_KlattGrid_replaceSpectralTiltTier);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace aspiration amplitude tier", 0, 1,
+	praat_addAction2 (classKlattGrid, 1, classFormantGrid, 1, U"Replace formant grid...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_replaceFormantGrid);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace voicing amplitude tier", nullptr, 1, DO_KlattGrid_replaceVoicingAmplitudeTier);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace spectral tilt tier", nullptr, 1, DO_KlattGrid_replaceSpectralTiltTier);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace aspiration amplitude tier", nullptr, 1,
 	                  DO_KlattGrid_replaceAspirationAmplitudeTier);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace breathiness amplitude tier", 0, 1,
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace breathiness amplitude tier", nullptr, 1,
 	                  DO_KlattGrid_replaceBreathinessAmplitudeTier);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace amplitude tier...", 0, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_replaceAmplitudeTier);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace amplitude tier...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_KlattGrid_replaceAmplitudeTier);
 	KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION (Oral, oral f)
 	KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION (Nasal, nasal f)
 	KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION (Tracheal, tracheal f)
 	KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION (Frication, frication f)
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace frication amplitude tier", 0, 1, DO_KlattGrid_replaceFricationAmplitudeTier);
-	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace frication bypass tier", 0, 1, DO_KlattGrid_replaceFricationBypassTier);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace frication amplitude tier", nullptr, 1, DO_KlattGrid_replaceFricationAmplitudeTier);
+	praat_addAction2 (classKlattGrid, 1, classIntensityTier, 1, U"Replace frication bypass tier", nullptr, 1, DO_KlattGrid_replaceFricationBypassTier);
 
 #undef KlattGrid_REPLACE_FORMANT_AMPLITUDE_ACTION
 #undef KlattGrid_REPLACE_FORMANTGRID_ACTION
 
-	praat_addAction2 (classKlattGrid, 1, classSound, 1, U"Filter by vocal tract...", 0, 1, DO_Sound_KlattGrid_filterByVocalTract);
+	praat_addAction2 (classKlattGrid, 1, classSound, 1, U"Filter by vocal tract...", nullptr, 1, DO_Sound_KlattGrid_filterByVocalTract);
 
 	INCLUDE_MANPAGES (manual_KlattGrid)
 }
 
-
 /* End of file praat_KlattGrid_init.cpp */
diff --git a/dwtools/praat_MDS_init.cpp b/dwtools/praat_MDS_init.cpp
index 0a41b29..a9e9b3f 100644
--- a/dwtools/praat_MDS_init.cpp
+++ b/dwtools/praat_MDS_init.cpp
@@ -1,20 +1,19 @@
 /* praat_MDS_init.cpp
  *
- * Copyright (C) 1992-2012 David Weenink
+ * Copyright (C) 1992-2012, 2015 David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -59,8 +58,7 @@ static const char32 *CONFIGURATION_BUTTON = U"To Configuration -";
 	Sort row 1 and move row 2 along and store in rows 4 and 5 respectively
 	Make an index for row 1 and store in row 6
 */
-static void TabelOfReal_testSorting (I, long rowtoindex) {
-	iam (TableOfReal);
+static void TabelOfReal_testSorting (TableOfReal me, long rowtoindex) {
 	try {
 		long  nc = my numberOfColumns;
 
@@ -110,7 +108,7 @@ FORM (Dissimilarity_createLetterRExample, U"Create letter R example", U"Create l
 	REAL (U"Noise range", U"32.5")
 	OK
 DO
-	praat_new (Dissimilarity_createLetterRExample (GET_REAL (U"Noise range")), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+	praat_new (Dissimilarity_createLetterRExample (GET_REAL (U"Noise range")), U"");
 END
 
 FORM (INDSCAL_createCarrollWishExample,
@@ -119,7 +117,7 @@ FORM (INDSCAL_createCarrollWishExample,
 	REAL (U"Noise standard deviation", U"0.0")
 OK
 	DO
-	praat_new (INDSCAL_createCarrollWishExample (GET_REAL (U"Noise standard deviation")), U"");   // ppgb: geen expliciete NULL meer meegeven als naam (dat wordt "0")
+	praat_new (INDSCAL_createCarrollWishExample (GET_REAL (U"Noise standard deviation")), U""); 
 END
 
 FORM (Configuration_create, U"Create Configuration", U"Create Configuration...")
@@ -131,8 +129,8 @@ FORM (Configuration_create, U"Create Configuration", U"Create Configuration...")
 	OK
 DO
 	autoConfiguration me = Configuration_create (GET_INTEGER (U"Number of points"), GET_INTEGER (U"Number of dimensions"));
-	TableOfReal_formula (me.peek(), GET_STRING (U"formula"), interpreter, 0);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	TableOfReal_formula (me.get(), GET_STRING (U"formula"), interpreter, nullptr);
+	praat_new (me.move(), GET_STRING (U"Name"));
 END
 
 FORM (drawSplines, U"Draw splines", U"spline")
@@ -141,11 +139,11 @@ FORM (drawSplines, U"Draw splines", U"spline")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"20.0")
 	RADIO (U"Spline type", 1)
-	RADIOBUTTON (U"M-spline")
-	RADIOBUTTON (U"I-spline")
+		RADIOBUTTON (U"M-spline")
+		RADIOBUTTON (U"I-spline")
 	INTEGER (U"Order", U"3")
 	SENTENCE (U"Interior knots", U"0.3 0.5 0.6")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	double xmin = GET_REAL (U"left Horizontal range"), xmax = GET_REAL (U"right Horizontal range");
@@ -154,8 +152,11 @@ DO
 		Melder_throw (U"Required: xmin < xmax and ymin < ymax.");
 	}
 	autoPraatPicture picture;
-	drawSplines (GRAPHICS, xmin, xmax, ymin, ymax, GET_INTEGER (U"Spline type"),
-		GET_INTEGER (U"Order"), GET_STRING (U"Interior knots"), GET_INTEGER (U"Garnish"));
+	drawSplines (GRAPHICS, xmin, xmax, ymin, ymax,
+		GET_INTEGER (U"Spline type"),
+		GET_INTEGER (U"Order"),
+		GET_STRING (U"Interior knots"),
+		GET_INTEGER (U"Garnish"));
 END
 
 DIRECT (drawMDSClassRelations)
@@ -174,7 +175,7 @@ END
 DIRECT (AffineTransform_invert)
 	LOOP {
 		iam (AffineTransform);
-		praat_new ( (AffineTransform) AffineTransform_invert (me), NAME, U"_inv");
+		praat_new (AffineTransform_invert (me), NAME, U"_inv");
 	}
 END
 
@@ -214,14 +215,16 @@ END
 DIRECT (AffineTransform_extractMatrix)
 	LOOP {
 		iam (AffineTransform);
-		praat_new (AffineTransform_extractMatrix (me), my name);
+		autoTableOfReal thee = AffineTransform_extractMatrix (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
 DIRECT (AffineTransform_extractTranslationVector)
 	LOOP {
 		iam (AffineTransform);
-		praat_new (AffineTransform_extractTranslationVector (me), my name);
+		autoTableOfReal thee = AffineTransform_extractTranslationVector (me);
+		praat_new (thee.move(), my name);
 	}
 END
 
@@ -231,7 +234,7 @@ DIRECT (Configuration_help)
 	Melder_help (U"Configuration");
 END
 
-static void Configuration_draw_addCommonFields (void *dia) {
+static void Configuration_draw_addCommonFields (UiForm dia) {
 	NATURAL (U"Horizontal dimension", U"1")
 	NATURAL (U"Vertical dimension", U"2")
 	REAL (U"left Horizontal range", U"0.0")
@@ -243,9 +246,9 @@ static void Configuration_draw_addCommonFields (void *dia) {
 FORM (Configuration_draw, U"Configuration: Draw", U"Configuration: Draw...")
 	Configuration_draw_addCommonFields (dia);
 	NATURAL (U"Label size", U"12")
-	BOOLEAN (U"Use row labels", 0)
+	BOOLEAN (U"Use row labels", false)
 	WORD (U"Label", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
@@ -262,13 +265,16 @@ FORM (Configuration_drawSigmaEllipses, U"Configuration: Draw sigma ellipses", U"
 	POSITIVE (U"Number of sigmas", U"1.0")
 	Configuration_draw_addCommonFields (dia);
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Configuration);
-		Configuration_drawConcentrationEllipses (me, GRAPHICS, GET_REAL (U"Number of sigmas"), 0, 0,
+		Configuration_drawConcentrationEllipses (me, GRAPHICS,
+			GET_REAL (U"Number of sigmas"),
+			false,   // confidence (i.e. the previous argument is a number of sigmas, not a confidence level)
+			nullptr,
 			GET_INTEGER (U"Horizontal dimension"), GET_INTEGER (U"Vertical dimension"),
 			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
 			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
@@ -281,56 +287,76 @@ FORM (Configuration_drawOneSigmaEllipse, U"Configuration: Draw one sigma ellipse
 	POSITIVE (U"Number of sigmas", U"1.0")
 	Configuration_draw_addCommonFields (dia);
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Configuration);
-		Configuration_drawConcentrationEllipses (me, GRAPHICS, GET_REAL (U"Number of sigmas"), 0, GET_STRING (U"Label"),
-			GET_INTEGER (U"Horizontal dimension"), GET_INTEGER (U"Vertical dimension"),
-			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-			GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+		Configuration_drawConcentrationEllipses (me, GRAPHICS,
+			GET_REAL (U"Number of sigmas"),
+			false,   // confidence
+			GET_STRING (U"Label"),
+			GET_INTEGER (U"Horizontal dimension"),
+			GET_INTEGER (U"Vertical dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 
-FORM (Configuration_drawConfidenceEllipses, U"Configuration: Draw confidence ellipses", 0)
+FORM (Configuration_drawConfidenceEllipses, U"Configuration: Draw confidence ellipses", nullptr)
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
 	Configuration_draw_addCommonFields (dia);
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Configuration);
-		Configuration_drawConcentrationEllipses (me, GRAPHICS, GET_REAL (U"Confidence level"), 1, 0,
-			GET_INTEGER (U"Horizontal dimension"), GET_INTEGER (U"Vertical dimension"),
-			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-			GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+		Configuration_drawConcentrationEllipses (me, GRAPHICS,
+			GET_REAL (U"Confidence level"),
+			true,   // confidence (i.e. the previous argument is a confidence level, not a number of sigmas)
+			nullptr,   // label
+			GET_INTEGER (U"Horizontal dimension"),
+			GET_INTEGER (U"Vertical dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
-FORM (Configuration_drawOneConfidenceEllipse, U"Configuration: Draw one confidence ellipse", 0)
+FORM (Configuration_drawOneConfidenceEllipse, U"Configuration: Draw one confidence ellipse", nullptr)
 	SENTENCE (U"Label", U"")
 	POSITIVE (U"Confidence level (0-1)", U"0.95")
 	Configuration_draw_addCommonFields (dia);
 	INTEGER (U"Label size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (Configuration);
 		Configuration_drawConcentrationEllipses (me, GRAPHICS,
-			GET_REAL (U"Confidence level"), 1, GET_STRING (U"Label"),
-			GET_INTEGER (U"Horizontal dimension"), GET_INTEGER (U"Vertical dimension"),
-			GET_REAL (U"left Horizontal range"), GET_REAL (U"right Horizontal range"),
-			GET_REAL (U"left Vertical range"), GET_REAL (U"right Vertical range"),
-			GET_INTEGER (U"Label size"), GET_INTEGER (U"Garnish"));
+			GET_REAL (U"Confidence level"),
+			true,   // confidence
+			GET_STRING (U"Label"),
+			GET_INTEGER (U"Horizontal dimension"),
+			GET_INTEGER (U"Vertical dimension"),
+			GET_REAL (U"left Horizontal range"),
+			GET_REAL (U"right Horizontal range"),
+			GET_REAL (U"left Vertical range"),
+			GET_REAL (U"right Vertical range"),
+			GET_INTEGER (U"Label size"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
@@ -344,12 +370,14 @@ END
 FORM (Configuration_normalize, U"Configuration: Normalize", U"Configuration: Normalize...")
 	REAL (U"Sum of squares", U"0.0")
 	LABEL (U"", U"On (INDSCAL), Off (Kruskal)")
-	BOOLEAN (U"Each dimension separately", 1)
+	BOOLEAN (U"Each dimension separately", true)
 	OK
 DO
 	LOOP {
 		iam (Configuration);
-		Configuration_normalize (me, GET_REAL (U"Sum of squares"), GET_INTEGER (U"Each dimension separately"));
+		Configuration_normalize (me,
+			GET_REAL (U"Sum of squares"),
+			GET_INTEGER (U"Each dimension separately"));
 	}
 END
 
@@ -368,7 +396,10 @@ FORM (Configuration_rotate, U"Configuration: Rotate", U"Configuration: Rotate...
 DO
 	LOOP {
 		iam (Configuration);
-		Configuration_rotate (me, GET_INTEGER (U"Dimension 1"), GET_INTEGER (U"Dimension 2"), GET_REAL (U"Angle"));
+		Configuration_rotate (me,
+			GET_INTEGER (U"Dimension 1"),
+			GET_INTEGER (U"Dimension 2"),
+			GET_REAL (U"Angle"));
 	}
 END
 
@@ -385,7 +416,8 @@ FORM (Configuration_invertDimension, U"Configuration: Invert dimension", U"Confi
 DO
 	LOOP {
 		iam (Configuration);
-		Configuration_invertDimension (me, GET_INTEGER (U"Dimension"));
+		Configuration_invertDimension (me,
+			GET_INTEGER (U"Dimension"));
 	}
 END
 
@@ -397,36 +429,48 @@ DIRECT (Configuration_to_Distance)
 END
 
 FORM (Configuration_varimax, U"Configuration: To Configuration (varimax)", U"Configuration: To Configuration (varimax)...")
-	BOOLEAN (U"Normalize rows", 1)
-	BOOLEAN (U"Quartimax", 0)
+	BOOLEAN (U"Normalize rows", true)
+	BOOLEAN (U"Quartimax", false)
 	NATURAL (U"Maximum number of iterations", U"50")
 	POSITIVE (U"Tolerance", U"1e-6")
 	OK
 DO
 	LOOP {
 		iam (Configuration);
-		praat_new (Configuration_varimax (me, GET_INTEGER (U"Normalize rows"), GET_INTEGER (U"Quartimax"),
-			GET_INTEGER (U"Maximum number of iterations"), GET_REAL (U"Tolerance")), my name, U"_varimax");
+		autoConfiguration result = Configuration_varimax (me,
+			GET_INTEGER (U"Normalize rows"),
+			GET_INTEGER (U"Quartimax"),
+			GET_INTEGER (U"Maximum number of iterations"),
+			GET_REAL (U"Tolerance"));
+		praat_new (result.move(), my name, U"_varimax");
 	}
 END
 
 DIRECT (Configurations_to_Similarity_cc)
-	autoConfigurations set = (Configurations) praat_getSelectedObjects ();
-	praat_new (Configurations_to_Similarity_cc (set.peek(), 0), U"congruence");
+	autoConfigurationList list = ConfigurationList_create ();
+	LOOP {
+		iam (Configuration);
+		list -> addItem_ref (me);
+	}
+	Weight nullWeight = nullptr;
+	autoSimilarity result = ConfigurationList_to_Similarity_cc (list.get(), nullWeight);
+	praat_new (result.move(), U"congruence");
 END
 
 FORM (Configurations_to_Procrustes, U"Configuration & Configuration: To Procrustes", U"Configuration & Configuration: To Procrustes...")
-	BOOLEAN (U"Orthogonal transform", 0)
+	BOOLEAN (U"Orthogonal transform", false)
 	OK
 DO
-	Configuration c1 = 0, c2 = 0;
+	Configuration configuration1 = nullptr;
+	Configuration configuration2 = nullptr;
 	LOOP {
 		iam (Configuration);
-		(c1 ? c2 : c1) = me;
+		( configuration1 ? configuration2 : configuration1 ) = me;
 	}
-	Melder_assert (c1 && c2);
-	praat_new (Configurations_to_Procrustes (c1, c2, GET_INTEGER (U"Orthogonal transform")),
-		Thing_getName (c2), U"_to_", Thing_getName (c1));
+	Melder_assert (configuration1 && configuration2);
+	autoProcrustes result = Configurations_to_Procrustes (configuration1, configuration2,
+		GET_INTEGER (U"Orthogonal transform"));
+	praat_new (result.move(), Thing_getName (configuration2), U"_to_", Thing_getName (configuration1));
 END
 
 FORM (Configurations_to_AffineTransform_congruence, U"Configurations: To AffineTransform (congruence)", U"Configurations: To AffineTransform (congruence)...")
@@ -434,36 +478,40 @@ FORM (Configurations_to_AffineTransform_congruence, U"Configurations: To AffineT
 	POSITIVE (U"Tolerance", U"1e-6")
 	OK
 DO
-	Configuration c1 = 0, c2 = 0;
+	Configuration configuration1 = nullptr;
+	Configuration configuration2 = nullptr;
 	LOOP {
 		iam (Configuration);
-		(c1 ? c2 : c1) = me;
+		( configuration1 ? configuration2 : configuration1 ) = me;
 	}
-	Melder_assert (c1 && c2);
-	praat_new (Configurations_to_AffineTransform_congruence (c1, c2, GET_INTEGER (U"Maximum number of iterations"),
-		GET_REAL (U"Tolerance")), c1 -> name, U"_", c2 -> name);
+	Melder_assert (configuration1 && configuration2);
+	autoAffineTransform result = Configurations_to_AffineTransform_congruence (configuration1, configuration2,
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_REAL (U"Tolerance"));
+	praat_new (result.move(), configuration1 -> name, U"_", configuration2 -> name);
 END
 
 DIRECT (Configuration_Weight_to_Similarity_cc)
-	autoConfigurations thee = Configurations_create ();
-	Collection_dontOwnItems (thee.peek());
-	Weight w = 0;
+	autoConfigurationList configurations = ConfigurationList_create ();
+	Weight weight = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classConfiguration) {
-			Collection_addItem (thee.peek(), me);
+			configurations -> addItem_ref ((Configuration) me);
 		} else if (CLASS == classWeight) {
-			w = (Weight) me;
+			weight = (Weight) me;
 		}
 	}
-	Melder_assert (thy size > 0 && w);
-	praat_new (Configurations_to_Similarity_cc (thee.peek(), w), U"congruence");
+	Melder_assert (configurations->size > 0 && weight);
+	autoSimilarity result = ConfigurationList_to_Similarity_cc (configurations.get(), weight);
+	praat_new (result.move(), U"congruence");
 END
 
 DIRECT (Configuration_and_AffineTransform_to_Configuration)
 	Configuration me = FIRST (Configuration);
-	AffineTransform at = FIRST_GENERIC (AffineTransform);
-	praat_new (Configuration_and_AffineTransform_to_Configuration (me, at), my name, U"_", at -> name);
+	AffineTransform thee = FIRST_GENERIC (AffineTransform);
+	autoConfiguration result = Configuration_and_AffineTransform_to_Configuration (me, thee);
+	praat_new (result.move(), my name, U"_", thy name);
 END
 
 /*************** Confusion *********************************/
@@ -474,33 +522,44 @@ FORM (Confusion_to_Dissimilarity_pdf, U"Confusion: To Dissimilarity (pdf)", U"Co
 DO
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_to_Dissimilarity_pdf (me, GET_REAL (U"Minimum confusion level")), my name, U"_pdf");
+		autoDissimilarity result = Confusion_to_Dissimilarity_pdf (me,
+			GET_REAL (U"Minimum confusion level"));
+		praat_new (result.move(), my name, U"_pdf");
 	}
 END
 
 FORM (Confusion_to_Similarity, U"Confusion: To Similarity", U"Confusion: To Similarity...")
-	BOOLEAN (U"Normalize", 1)
+	BOOLEAN (U"Normalize", true)
 	RADIO (U"Symmetrization", 1)
-	RADIOBUTTON (U"No symmetrization")
-	RADIOBUTTON (U"Average (s[i][j] = (c[i][j]+c[j][i])/2)")
-	RADIOBUTTON (U"Houtgast (s[i][j]= sum (min(c[i][k],c[j][k])))")
+		RADIOBUTTON (U"No symmetrization")
+		RADIOBUTTON (U"Average (s[i][j] = (c[i][j]+c[j][i])/2)")
+		RADIOBUTTON (U"Houtgast (s[i][j]= sum (min(c[i][k],c[j][k])))")
 	OK
 DO
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_to_Similarity (me, GET_INTEGER (U"Normalize"), GET_INTEGER (U"Symmetrization")), my name);
+		autoSimilarity result = Confusion_to_Similarity (me,
+			GET_INTEGER (U"Normalize"),
+			GET_INTEGER (U"Symmetrization"));
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (Confusions_sum)
-	autoConfusions me = (Confusions) praat_getSelectedObjects ();
-	praat_new (Confusions_sum (me.peek()), U"sum");
+	autoConfusionList confusions = ConfusionList_create ();
+	LOOP {
+		iam (Confusion);
+		confusions -> addItem_ref (me);
+	}
+	autoConfusion result = ConfusionList_sum (confusions.get());
+	praat_new (result.move(), U"sum");
 END
 
 DIRECT (Confusion_to_ContingencyTable)
 	LOOP {
 		iam (Confusion);
-		praat_new (Confusion_to_ContingencyTable (me), my name);
+		autoContingencyTable result = Confusion_to_ContingencyTable (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -510,9 +569,9 @@ END
 FORM (ContingencyTable_to_Configuration_ca, U"ContingencyTable: To Configuration (ca)", U"ContingencyTable: To Configuration (ca)...")
 	NATURAL (U"Number of dimensions", U"2")
 	RADIO (U"Scaling of final configuration", 3)
-	RADIOBUTTON (U"Row points in centre of gravity of column points")
-	RADIOBUTTON (U"Column points in centre of gravity of row points")
-	RADIOBUTTON (U"Row points and column points symmetric")
+		RADIOBUTTON (U"Row points in centre of gravity of column points")
+		RADIOBUTTON (U"Column points in centre of gravity of row points")
+		RADIOBUTTON (U"Row points and column points symmetric")
 	OK
 DO
 	LOOP {
@@ -551,7 +610,9 @@ FORM (Correlation_to_Configuration, U"Correlation: To Configuration", 0)
 DO
 	LOOP {
 		iam (Correlation);
-		praat_new (Correlation_to_Configuration (me, GET_INTEGER (U"Number of dimensions")), my name);
+		autoConfiguration result = Correlation_to_Configuration (me,
+			GET_INTEGER (U"Number of dimensions"));
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -568,35 +629,37 @@ FORM (Similarity_to_Dissimilarity, U"Similarity: To Dissimilarity", U"Similarity
 DO
 	LOOP {
 		iam (Similarity);
-		praat_new (Similarity_to_Dissimilarity (me, GET_REAL (U"Maximum dissimilarity")), my name);
+		autoDissimilarity result = Similarity_to_Dissimilarity (me,
+			GET_REAL (U"Maximum dissimilarity"));
+		praat_new (result.move(), my name);
 	}
 END
 
 /**************** Dissimilarity ***************************************/
 
-static void Dissimilarity_to_Configuration_addCommonFields (void *dia) {
+static void Dissimilarity_to_Configuration_addCommonFields (UiForm dia) {
 	LABEL (U"", U"Minimization parameters")
 	REAL (U"Tolerance", U"1e-5")
 	NATURAL (U"Maximum number of iterations", U"50 (= each repetition)")
 	NATURAL (U"Number of repetitions", U"1")
 }
 
-static void Dissimilarity_and_Configuration_getStress_addCommonFields (void *dia, void *radio) {
+static void Dissimilarity_and_Configuration_getStress_addCommonFields (UiForm dia, UiField radio) {
 	RADIO (U"Stress measure", 1)
-	RADIOBUTTON (U"Normalized")
-	RADIOBUTTON (U"Kruskal's stress-1")
-	RADIOBUTTON (U"Kruskal's stress-2")
-	RADIOBUTTON (U"Raw")
+		RADIOBUTTON (U"Normalized")
+		RADIOBUTTON (U"Kruskal's stress-1")
+		RADIOBUTTON (U"Kruskal's stress-2")
+		RADIOBUTTON (U"Raw")
 }
 
-static void Dissimilarity_Configuration_drawDiagram_addCommonFields (void *dia) {
+static void Dissimilarity_Configuration_drawDiagram_addCommonFields (UiForm dia) {
 	REAL (U"left Proximity range", U"0.0")
 	REAL (U"right Proximity range", U"0.0")
 	REAL (U"left Distance range", U"0.0")
 	REAL (U"right Distance range", U"0.0")
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 }
 
 DIRECT (Dissimilarity_help)
@@ -606,27 +669,30 @@ END
 DIRECT (Dissimilarity_getAdditiveConstant)
 	LOOP {
 		iam (Dissimilarity);
-		double c;
-		Dissimilarity_getAdditiveConstant (me, &c);
+		double c = Dissimilarity_getAdditiveConstant (me);
 		Melder_information (c);
 	}
 END
 
 FORM (Dissimilarity_Configuration_kruskal, U"Dissimilarity & Configuration: To Configuration (kruskal)", U"Dissimilarity & Configuration: To Configuration (kruskal)...")
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach")
-	RADIOBUTTON (U"Secondary approach")
+		RADIOBUTTON (U"Primary approach")
+		RADIOBUTTON (U"Secondary approach")
 	RADIO (U"Stress calculation", 1)
-	RADIOBUTTON (U"Formula1")
-	RADIOBUTTON (U"Formula2")
+		RADIOBUTTON (U"Formula1")
+		RADIOBUTTON (U"Formula2")
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	praat_new (Dissimilarity_Configuration_kruskal (me, c, GET_INTEGER (U"Handling of ties"), GET_INTEGER (U"Stress calculation"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions")), my name, U"_kruskal");
+	Configuration thee = FIRST (Configuration);
+	autoConfiguration result = Dissimilarity_Configuration_kruskal (me, thee,
+		GET_INTEGER (U"Handling of ties"),
+		GET_INTEGER (U"Stress calculation"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"));
+	praat_new (result.move(), my name, U"_kruskal");
 END
 
 FORM (Dissimilarity_Configuration_absolute_mds, U"Dissimilarity & Configuration: To Configuration (absolute mds)", U"Dissimilarity & Configuration: To Configuration (absolute mds)...")
@@ -634,11 +700,14 @@ FORM (Dissimilarity_Configuration_absolute_mds, U"Dissimilarity & Configuration:
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_absolute_mds (me, c, 0,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_absolute");
+	Configuration thee = FIRST (Configuration);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_absolute_mds (me, thee, nullptr,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), my name, U"_absolute");
 END
 
 FORM (Dissimilarity_Configuration_ratio_mds, U"Dissimilarity & Configuration: To Configuration (ratio mds)", U"Dissimilarity & Configuration: To Configuration (ratio mds)...")
@@ -646,11 +715,14 @@ FORM (Dissimilarity_Configuration_ratio_mds, U"Dissimilarity & Configuration: To
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_ratio_mds (me, c, 0,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_ratio");
+	Configuration thee = FIRST (Configuration);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_ratio_mds (me, thee, nullptr,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), my name, U"_ratio");
 END
 
 FORM (Dissimilarity_Configuration_interval_mds, U"Dissimilarity & Configuration: To Configuration (interval mds)", U"Dissimilarity & Configuration: To Configuration (interval mds)...")
@@ -658,11 +730,14 @@ FORM (Dissimilarity_Configuration_interval_mds, U"Dissimilarity & Configuration:
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_interval_mds (me, c, 0,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_interval");
+	Configuration thee = FIRST (Configuration);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_interval_mds (me, thee, nullptr,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), my name, U"_interval");
 END
 
 FORM (Dissimilarity_Configuration_monotone_mds, U"Dissimilarity & Configuration: To Configuration (monotone mds)", U"Dissimilarity & Configuration: To Configuration (monotone mds)...")
@@ -673,11 +748,15 @@ FORM (Dissimilarity_Configuration_monotone_mds, U"Dissimilarity & Configuration:
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_monotone_mds (me, c, 0,
-		GET_INTEGER (U"Handling of ties"), GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_monotone");
+	Configuration thee = FIRST (Configuration);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_monotone_mds (me, thee, nullptr,
+		GET_INTEGER (U"Handling of ties"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), my name, U"_monotone");
 END
 
 FORM (Dissimilarity_Configuration_ispline_mds, U"Dissimilarity & Configuration: To Configuration (i-spline mds)", U"Dissimilarity & Configuration: To Configuration (i-spline mds)...")
@@ -688,51 +767,64 @@ FORM (Dissimilarity_Configuration_ispline_mds, U"Dissimilarity & Configuration:
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_ispline_mds (me, c, 0,
-		GET_INTEGER (U"Number of interior knots"), GET_INTEGER (U"Order of I-spline"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_ispline");
+	Configuration thee = FIRST (Configuration);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_ispline_mds (me, thee, nullptr,
+		GET_INTEGER (U"Number of interior knots"),
+		GET_INTEGER (U"Order of I-spline"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), my name, U"_ispline");
 END
 
 FORM (Dissimilarity_Configuration_Weight_absolute_mds, U"Dissimilarity & Configuration & Weight: To Configuration (absolute mds)", U"Dissimilarity & Configuration & Weight: To Configuration...")
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_absolute_mds (me, c, w,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_w_absolute");
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_absolute_mds (dissimilarity, configuration, weight,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), dissimilarity -> name, U"_w_absolute");
 END
 
 FORM (Dissimilarity_Configuration_Weight_ratio_mds, U"Dissimilarity & Configuration & Weight: To Configuration (ratio mds)", U"Dissimilarity & Configuration & Weight: To Configuration...")
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_ratio_mds (me, c, w,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_w_ratio");
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_ratio_mds (dissimilarity, configuration, weight,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), dissimilarity -> name, U"_w_ratio");
 END
 
 FORM (Dissimilarity_Configuration_Weight_interval_mds, U"Dissimilarity & Configuration & Weight: To Configuration (interval mds)", U"Dissimilarity & Configuration & Weight: To Configuration...")
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_interval_mds (me, c, w,
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_w_interval");
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	bool showProgress = true;
+	autoConfiguration result = Dissimilarity_Configuration_Weight_interval_mds (dissimilarity, configuration, weight,
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		showProgress);
+	praat_new (result.move(), dissimilarity -> name, U"_w_interval");
 END
 
 FORM (Dissimilarity_Configuration_Weight_monotone_mds,
@@ -744,14 +836,17 @@ FORM (Dissimilarity_Configuration_Weight_monotone_mds,
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_monotone_mds (me, c, w,
-		GET_INTEGER (U"Handling of ties"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_sw_monotone");
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	bool showProgress = true;
+	praat_new (Dissimilarity_Configuration_Weight_monotone_mds (dissimilarity, configuration, weight,
+			GET_INTEGER (U"Handling of ties"),
+			GET_REAL (U"Tolerance"),
+			GET_INTEGER (U"Maximum number of iterations"),
+			GET_INTEGER (U"Number of repetitions"),
+			showProgress),
+		dissimilarity -> name, U"_sw_monotone");
 END
 
 FORM (Dissimilarity_Configuration_Weight_ispline_mds,
@@ -763,14 +858,18 @@ FORM (Dissimilarity_Configuration_Weight_ispline_mds,
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	int showProgress = 1;
-	praat_new (Dissimilarity_Configuration_Weight_ispline_mds (me, c, w,
-		GET_INTEGER (U"Number of interior knots"), GET_INTEGER (U"Order of I-spline"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
-		GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_sw_ispline");
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	bool showProgress = true;
+	praat_new (Dissimilarity_Configuration_Weight_ispline_mds (dissimilarity, configuration, weight,
+			GET_INTEGER (U"Number of interior knots"),
+			GET_INTEGER (U"Order of I-spline"),
+			GET_REAL (U"Tolerance"),
+			GET_INTEGER (U"Maximum number of iterations"),
+			GET_INTEGER (U"Number of repetitions"),
+			showProgress),
+		dissimilarity -> name, U"_sw_ispline");
 END
 
 FORM (Dissimilarity_Configuration_getStress, U"Dissimilarity & Configuration: Get stress",
@@ -784,8 +883,8 @@ FORM (Dissimilarity_Configuration_getStress, U"Dissimilarity & Configuration: Ge
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_getStress (me, c,
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_getStress (me, thee,
 		GET_INTEGER (U"Handling of ties"), GET_INTEGER (U"Stress calculation")));
 END
 
@@ -796,8 +895,8 @@ FORM (Dissimilarity_Configuration_absolute_stress,
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_Weight_absolute_stress (me, c, 0,
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_Weight_absolute_stress (me, thee, nullptr,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -807,8 +906,8 @@ FORM (Dissimilarity_Configuration_ratio_stress, U"Dissimilarity & Configuration:
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_Weight_ratio_stress (me, c, 0,
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_Weight_ratio_stress (me, thee, nullptr,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -819,8 +918,8 @@ FORM (Dissimilarity_Configuration_interval_stress,
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_Weight_interval_stress (me, c, 0,
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_Weight_interval_stress (me, thee, nullptr,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -834,9 +933,10 @@ FORM (Dissimilarity_Configuration_monotone_stress,
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_Weight_monotone_stress (me, c, 0,
-		GET_INTEGER (U"Handling of ties"), GET_INTEGER (U"Stress measure")));
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_Weight_monotone_stress (me, thee, nullptr,
+		GET_INTEGER (U"Handling of ties"),
+		GET_INTEGER (U"Stress measure")));
 END
 
 FORM (Dissimilarity_Configuration_ispline_stress,
@@ -848,9 +948,11 @@ FORM (Dissimilarity_Configuration_ispline_stress,
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Melder_information (Dissimilarity_Configuration_Weight_ispline_stress (me, c, 0,
-		GET_INTEGER (U"Number of interior knots"), GET_INTEGER (U"Order of I-spline"), GET_INTEGER (U"Stress measure")));
+	Configuration thee = FIRST (Configuration);
+	Melder_information (Dissimilarity_Configuration_Weight_ispline_stress (me, thee, nullptr,
+		GET_INTEGER (U"Number of interior knots"),
+		GET_INTEGER (U"Order of I-spline"),
+		GET_INTEGER (U"Stress measure")));
 END
 
 FORM (Dissimilarity_Configuration_Weight_absolute_stress,
@@ -859,10 +961,10 @@ FORM (Dissimilarity_Configuration_Weight_absolute_stress,
 	Dissimilarity_and_Configuration_getStress_addCommonFields (dia, radio);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	Melder_information (Dissimilarity_Configuration_Weight_absolute_stress (me, c, w,
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	Melder_information (Dissimilarity_Configuration_Weight_absolute_stress (dissimilarity, configuration, weight,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -872,10 +974,10 @@ FORM (Dissimilarity_Configuration_Weight_ratio_stress,
 	Dissimilarity_and_Configuration_getStress_addCommonFields (dia, radio);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	Melder_information (Dissimilarity_Configuration_Weight_ratio_stress (me, c, w,
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	Melder_information (Dissimilarity_Configuration_Weight_ratio_stress (dissimilarity, configuration, weight,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -885,10 +987,10 @@ FORM (Dissimilarity_Configuration_Weight_interval_stress,
 	Dissimilarity_and_Configuration_getStress_addCommonFields (dia, radio);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	Melder_information (Dissimilarity_Configuration_Weight_interval_stress (me, c, w,
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	Melder_information (Dissimilarity_Configuration_Weight_interval_stress (dissimilarity, configuration, weight,
 		GET_INTEGER (U"Stress measure")));
 END
 
@@ -896,16 +998,17 @@ FORM (Dissimilarity_Configuration_Weight_monotone_stress,
       U"Dissimilarity & Configuration & Weight: Get stress (monotone mds)",
       U"Dissimilarity & Configuration & Weight: Get stress (monotone mds)...")
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach)")
-	RADIOBUTTON (U"Secondary approach")
+		RADIOBUTTON (U"Primary approach)")
+		RADIOBUTTON (U"Secondary approach")
 	Dissimilarity_and_Configuration_getStress_addCommonFields (dia, radio);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	Melder_information (Dissimilarity_Configuration_Weight_monotone_stress (me, c, w,
-		GET_INTEGER (U"Handling of ties"), GET_INTEGER (U"Stress measure")));
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	Melder_information (Dissimilarity_Configuration_Weight_monotone_stress (dissimilarity, configuration, weight,
+		GET_INTEGER (U"Handling of ties"),
+		GET_INTEGER (U"Stress measure")));
 END
 
 FORM (Dissimilarity_Configuration_Weight_ispline_stress,
@@ -916,11 +1019,13 @@ FORM (Dissimilarity_Configuration_Weight_ispline_stress,
 	Dissimilarity_and_Configuration_getStress_addCommonFields (dia, radio);
 	OK
 DO
-	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Weight w = FIRST (Weight);
-	Melder_information (Dissimilarity_Configuration_Weight_ispline_stress (me, c, w,
-		GET_INTEGER (U"Number of interior knots"), GET_INTEGER (U"Order of I-spline"), GET_INTEGER (U"Stress measure")));
+	Dissimilarity dissimilarity = FIRST (Dissimilarity);
+	Configuration configuration = FIRST (Configuration);
+	Weight weight = FIRST (Weight);
+	Melder_information (Dissimilarity_Configuration_Weight_ispline_stress (dissimilarity, configuration, weight,
+		GET_INTEGER (U"Number of interior knots"),
+		GET_INTEGER (U"Order of I-spline"),
+		GET_INTEGER (U"Stress measure")));
 END
 
 FORM (Dissimilarity_Configuration_drawShepardDiagram, U"Dissimilarity & Configuration: Draw Shepard diagram",
@@ -930,11 +1035,14 @@ FORM (Dissimilarity_Configuration_drawShepardDiagram, U"Dissimilarity & Configur
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_drawShepardDiagram (me, c, GRAPHICS,
-		GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"),
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_drawShepardDiagram (me, thee, GRAPHICS,
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
 		GET_INTEGER (U"Garnish"));
 END
 
@@ -946,11 +1054,14 @@ FORM (Dissimilarity_Configuration_drawAbsoluteRegression,
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_Weight_drawAbsoluteRegression (me, c, 0, GRAPHICS,
-		GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"),
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_Weight_drawAbsoluteRegression (me, thee, nullptr, GRAPHICS,
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
 		GET_INTEGER (U"Garnish"));
 END
 
@@ -962,11 +1073,15 @@ FORM (Dissimilarity_Configuration_drawRatioRegression,
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_Weight_drawRatioRegression (me, c, 0, GRAPHICS,
-		GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_Weight_drawRatioRegression (me, thee, nullptr, GRAPHICS,
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
+		GET_INTEGER (U"Garnish"));
 END
 
 FORM (Dissimilarity_Configuration_drawIntervalRegression,
@@ -977,29 +1092,38 @@ FORM (Dissimilarity_Configuration_drawIntervalRegression,
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_Weight_drawIntervalRegression (me, c, 0, GRAPHICS,
-		GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_Weight_drawIntervalRegression (me, thee, nullptr, GRAPHICS,
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
+		GET_INTEGER (U"Garnish"));
 END
 
 FORM (Dissimilarity_Configuration_drawMonotoneRegression,
       U"Dissimilarity & Configuration: Draw regression (monotone mds)",
       U"Dissimilarity & Configuration: Draw regression (monotone mds)...")
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach)")
-	RADIOBUTTON (U"Secondary approach")
+		RADIOBUTTON (U"Primary approach)")
+		RADIOBUTTON (U"Secondary approach")
 	Dissimilarity_Configuration_drawDiagram_addCommonFields (dia);
 	OK
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_Weight_drawMonotoneRegression (me, c, 0, GRAPHICS,
-		GET_INTEGER (U"Handling of ties"), GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_Weight_drawMonotoneRegression (me, thee, nullptr, GRAPHICS,
+		GET_INTEGER (U"Handling of ties"),
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
+		GET_INTEGER (U"Garnish"));
 END
 
 FORM (Dissimilarity_Configuration_drawISplineRegression,
@@ -1012,12 +1136,17 @@ FORM (Dissimilarity_Configuration_drawISplineRegression,
 DO
 	autoPraatPicture picture;
 	Dissimilarity me = FIRST (Dissimilarity);
-	Configuration c = FIRST (Configuration);
-	Dissimilarity_Configuration_Weight_drawISplineRegression (me, c, 0, GRAPHICS,
-		GET_INTEGER (U"Number of interior knots"), GET_INTEGER (U"Order of I-spline"),
-		GET_REAL (U"left Proximity range"), GET_REAL (U"right Proximity range"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
+	Configuration thee = FIRST (Configuration);
+	Dissimilarity_Configuration_Weight_drawISplineRegression (me, thee, nullptr, GRAPHICS,
+		GET_INTEGER (U"Number of interior knots"),
+		GET_INTEGER (U"Order of I-spline"),
+		GET_REAL (U"left Proximity range"),
+		GET_REAL (U"right Proximity range"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
+		GET_INTEGER (U"Garnish"));
 END
 
 FORM (Dissimilarity_kruskal, U"Dissimilarity: To Configuration (kruskal)", U"Dissimilarity: To Configuration (kruskal)...")
@@ -1035,10 +1164,14 @@ FORM (Dissimilarity_kruskal, U"Dissimilarity: To Configuration (kruskal)", U"Dis
 DO
 	LOOP {
 		iam (Dissimilarity);
-		praat_new (Dissimilarity_kruskal (me, GET_INTEGER (U"Number of dimensions"),
-			GET_INTEGER (U"Distance metric"), GET_INTEGER (U"Handling of ties"),
-			GET_INTEGER (U"Stress calculation"), GET_REAL (U"Tolerance"),
-			GET_INTEGER (U"Maximum number of iterations"), GET_INTEGER (U"Number of repetitions")), my name);
+		praat_new (Dissimilarity_kruskal (me,
+			GET_INTEGER (U"Number of dimensions"),
+			GET_INTEGER (U"Distance metric"),
+			GET_INTEGER (U"Handling of ties"),
+			GET_INTEGER (U"Stress calculation"),
+			GET_REAL (U"Tolerance"),
+			GET_INTEGER (U"Maximum number of iterations"),
+			GET_INTEGER (U"Number of repetitions")), my name);
 	}
 END
 
@@ -1052,7 +1185,7 @@ DO
 	LOOP {
 		iam (Dissimilarity);
 		int showProgress = 1;
-		praat_new (Dissimilarity_Weight_absolute_mds (me, NULL, GET_INTEGER (U"Number of dimensions"),
+		praat_new (Dissimilarity_Weight_absolute_mds (me, nullptr, GET_INTEGER (U"Number of dimensions"),
 			GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"),
 			GET_INTEGER (U"Number of repetitions"), showProgress), my name, U"_absolute");
 	}
@@ -1207,8 +1340,8 @@ FORM (Dissimilarity_Weight_monotone_mds, U"Dissimilarity & Weight: To Configurat
 	LABEL (U"", U"Configuration")
 	NATURAL (U"Number of dimensions", U"2")
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach")
-	RADIOBUTTON (U"Secondary approach")
+		RADIOBUTTON (U"Primary approach")
+		RADIOBUTTON (U"Secondary approach")
 	Dissimilarity_to_Configuration_addCommonFields (dia);
 	OK
 DO
@@ -1221,7 +1354,7 @@ DO
 END
 
 FORM (Dissimilarity_to_Distance, U"Dissimilarity: To Distance", U"Dissimilarity: To Distance...")
-	BOOLEAN (U"Scale (additive constant)", 1)
+	BOOLEAN (U"Scale (additive constant)", true)
 	OK
 DO
 	LOOP {
@@ -1240,7 +1373,7 @@ END
 /************************* Distance(s) ***************************************/
 
 FORM (Distance_to_ScalarProduct, U"Distance: To ScalarProduct", U"Distance: To ScalarProduct...")
-	BOOLEAN (U"Make sum of squares equal 1.0", 1)
+	BOOLEAN (U"Make sum of squares equal 1.0", true)
 	OK
 DO
 	LOOP {
@@ -1258,220 +1391,250 @@ END
 
 FORM (Distances_indscal, U"Distance: To Configuration (indscal)", U"Distance: To Configuration (indscal)...")
 	NATURAL (U"Number of dimensions", U"2")
-	BOOLEAN (U"Normalize scalar products", 1)
+	BOOLEAN (U"Normalize scalar products", true)
 	LABEL (U"", U"Minimization parameters")
 	REAL (U"Tolerance", U"1e-5")
 	NATURAL (U"Maximum number of iterations", U"100 (= each repetition)")
 	NATURAL (U"Number of repetitions", U"1")
 	OK
 DO
-	autoDistances me = (Distances) praat_getSelectedObjects ();
-	Configuration c; Salience s;
-	Distances_indscal (me.peek(), GET_INTEGER (U"Number of dimensions"), GET_INTEGER (U"Normalize scalar products"),
-		GET_REAL (U"Tolerance"), GET_INTEGER (U"Maximum number of iterations"), GET_INTEGER (U"Number of repetitions"),
-		1, &c, &s);
-	autoConfiguration ac = c; autoSalience as = s;
-	praat_new (ac.transfer(), U"indscal");
-	praat_new (as.transfer(), U"indscal");
-END
-
-FORM (Distance_and_Configuration_drawScatterDiagram, U"Distance & Configuration: Draw scatter diagram",
-      U"Distance & Configuration: Draw scatter diagram...")
+	autoDistanceList distances = DistanceList_create ();
+	LOOP {
+		iam (Distance);
+		distances -> addItem_ref (me);
+	}
+	autoConfiguration configurationResult;
+	autoSalience salienceResult;
+	DistanceList_indscal (distances.get(),
+		GET_INTEGER (U"Number of dimensions"),
+		GET_INTEGER (U"Normalize scalar products"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		GET_INTEGER (U"Number of repetitions"),
+		true,   // showProgress
+		& configurationResult, & salienceResult);
+	praat_new (configurationResult.move(), U"indscal");
+	praat_new (salienceResult.move(), U"indscal");
+END
+
+FORM (Distance_and_Configuration_drawScatterDiagram, U"Distance & Configuration: Draw scatter diagram", U"Distance & Configuration: Draw scatter diagram...")
 	REAL (U"Minimum x-distance", U"0.0")
 	REAL (U"Maximum x-distance", U"0.0")
 	REAL (U"Minimum y-distance", U"0.0")
 	REAL (U"Maximum y-distance", U"0.0")
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	autoPraatPicture picture;
 	Distance me = FIRST (Distance);
-	Configuration c = FIRST (Configuration);
-	Distance_and_Configuration_drawScatterDiagram (me, c, GRAPHICS, GET_REAL (U"Minimum x-distance"),
-		GET_REAL (U"Maximum x-distance"), GET_REAL (U"Minimum y-distance"), GET_REAL (U"Maximum y-distance"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"), GET_INTEGER (U"Garnish"));
+	Configuration thee = FIRST (Configuration);
+	Distance_and_Configuration_drawScatterDiagram (me, thee, GRAPHICS,
+		GET_REAL (U"Minimum x-distance"),
+		GET_REAL (U"Maximum x-distance"),
+		GET_REAL (U"Minimum y-distance"),
+		GET_REAL (U"Maximum y-distance"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
+		GET_INTEGER (U"Garnish"));
 END
 
-FORM (Distance_Configuration_indscal, U"Distance & Configuration: To Configuration (indscal)",
-      U"Distance & Configuration: To Configuration (indscal)...")
-	BOOLEAN (U"Normalize scalar products", 1)
+FORM (Distance_Configuration_indscal, U"Distance & Configuration: To Configuration (indscal)", U"Distance & Configuration: To Configuration (indscal)...")
+	BOOLEAN (U"Normalize scalar products", true)
 	LABEL (U"", U"Minimization parameters")
 	REAL (U"Tolerance", U"1e-5")
 	NATURAL (U"Maximum number of iterations", U"100 (= each repetition)")
 	OK
 DO
-	autoDistances thee = Distances_create ();
-	Collection_dontOwnItems (thee.peek());
-	Configuration c = 0;
+	autoDistanceList distances = DistanceList_create ();
+	Configuration configuration = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classDistance) {
-			Collection_addItem (thee.peek(), me);
+			distances -> addItem_ref ((Distance) me);
 		} else if (CLASS == classConfiguration) {
-			c = (Configuration) me;
+			configuration = (Configuration) me;
 		}
 	}
-	Melder_assert (thy size > 0 && c);
-	Configuration cr; Salience sr;
-	Distances_Configuration_indscal (thee.peek(), c,
-		GET_INTEGER (U"Normalize scalar products"), GET_REAL (U"Tolerance"),
-		GET_INTEGER (U"Maximum number of iterations"), 1, &cr, &sr);
-	autoConfiguration ac = cr; autoSalience as = sr;
-	praat_new (ac.transfer(), U"indscal");
-	praat_new (as.transfer(), U"indscal");
+	Melder_assert (distances->size > 0 && configuration);
+	autoConfiguration configurationResult;
+	autoSalience salienceResult;
+	DistanceList_Configuration_indscal (distances.get(), configuration,
+		GET_INTEGER (U"Normalize scalar products"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		true,   // showProgress
+		& configurationResult, & salienceResult);
+	praat_new (configurationResult.move(), U"indscal");
+	praat_new (salienceResult.move(), U"indscal");
 END
 
 FORM (Distance_Configuration_vaf, U"Distance & Configuration: Get VAF", U"Distance & Configuration: Get VAF...")
-	BOOLEAN (U"Normalize scalar products", 1)
+	BOOLEAN (U"Normalize scalar products", true)
 	OK
 DO
-	autoDistances thee = Distances_create ();
-	Collection_dontOwnItems (thee.peek());
-	Configuration c = 0;
+	autoDistanceList distances = DistanceList_create ();
+	Configuration configuration = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classDistance) {
-			Collection_addItem (thee.peek(), me);
+			distances -> addItem_ref ((Distance) me);
 		} else if (CLASS == classConfiguration) {
-			c = (Configuration) me;
+			configuration = (Configuration) me;
 		}
 	}
-	Melder_assert (thy size > 0 && c);
-	double vaf;
-	Distances_Configuration_vaf (thee.peek(), c, GET_INTEGER (U"Normalize scalar products"), &vaf);
-	Melder_information (vaf);
+	Melder_assert (distances->size > 0 && configuration);
+	double varianceAccountedFor;
+	DistanceList_Configuration_vaf (distances.get(), configuration,
+		GET_INTEGER (U"Normalize scalar products"),
+		& varianceAccountedFor);
+	Melder_information (varianceAccountedFor);
 END
 
 FORM (Distance_Configuration_Salience_vaf, U"Distance & Configuration & Salience: Get VAF", U"Distance & Configuration & Salience: Get VAF...")
-	BOOLEAN (U"Normalize scalar products", 1)
+	BOOLEAN (U"Normalize scalar products", true)
 	OK
 DO
-	autoDistances thee = Distances_create ();
-	Collection_dontOwnItems (thee.peek());
-	Configuration c = 0; Salience s = 0;
+	autoDistanceList distances = DistanceList_create ();
+	Configuration configuration = nullptr;
+	Salience salience = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classDistance) {
-			Collection_addItem (thee.peek(), me);
+			distances -> addItem_ref ((Distance) me);
 		} else if (CLASS == classConfiguration) {
-			c = (Configuration) me;
+			configuration = (Configuration) me;
 		} else if (CLASS == classSalience) {
-			s = (Salience) me;
+			salience = (Salience) me;
 		}
 	}
-	Melder_assert (thy size > 0 && c && s);
-	double vaf;
-	Distances_Configuration_Salience_vaf (thee.peek(), c, s, GET_INTEGER (U"Normalize scalar products"), &vaf);
-	Melder_information (vaf);
+	Melder_assert (distances->size > 0 && configuration && salience);
+	double varianceAccountedFor;
+	DistanceList_Configuration_Salience_vaf (distances.get(), configuration, salience,
+		GET_INTEGER (U"Normalize scalar products"),
+		& varianceAccountedFor);
+	Melder_information (varianceAccountedFor);
 END
 
 FORM (Dissimilarity_Configuration_Salience_vaf, U"Dissimilarity & Configuration & Salience: Get VAF",
       U"Dissimilarity & Configuration & Salience: Get VAF...")
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach")
-	RADIOBUTTON (U"Secondary approach")
-	BOOLEAN (U"Normalize scalar products", 1)
+		RADIOBUTTON (U"Primary approach")
+		RADIOBUTTON (U"Secondary approach")
+	BOOLEAN (U"Normalize scalar products", true)
 	OK
 DO
-	autoDissimilarities thee = Dissimilarities_create ();
-	Collection_dontOwnItems (thee.peek());
-	Configuration c = 0; Salience s = 0;
+	autoDissimilarityList dissimilarities = DissimilarityList_create ();
+	Configuration configuration = nullptr;
+	Salience salience = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classDissimilarity) {
-			Collection_addItem (thee.peek(), me);
+			dissimilarities -> addItem_ref ((Dissimilarity) me);
 		} else if (CLASS == classConfiguration) {
-			c = (Configuration) me;
+			configuration = (Configuration) me;
 		} else if (CLASS == classSalience) {
-			s = (Salience) me;
+			salience = (Salience) me;
 		}
 	}
-	Melder_assert (thy size > 0 && c && s);
-	double vaf;
-	Dissimilarities_Configuration_Salience_vaf (thee.peek(), c, s, GET_INTEGER (U"Handling of ties"),
-		GET_INTEGER (U"Normalize scalar products"), &vaf);
-	Melder_information (vaf);
+	Melder_assert (dissimilarities->size > 0 && configuration && salience);
+	double varianceAccountedFor;
+	DissimilarityList_Configuration_Salience_vaf (dissimilarities.get(), configuration, salience,
+		GET_INTEGER (U"Handling of ties"),
+		GET_INTEGER (U"Normalize scalar products"),
+		& varianceAccountedFor);
+	Melder_information (varianceAccountedFor);
 END
 
 FORM (Distance_Configuration_Salience_indscal,
       U"Distance & Configuration & Salience: To Configuration (indscal)",
       U"Distance & Configuration & Salience: To Configuration (indscal)...")
-	BOOLEAN (U"Normalize scalar products", 1)
+	BOOLEAN (U"Normalize scalar products", true)
 	LABEL (U"", U"Minimization parameters")
 	REAL (U"Tolerance", U"1e-5")
 	NATURAL (U"Maximum number of iterations", U"100")
 	OK
 DO
-	autoDistances thee = Distances_create ();
-	Collection_dontOwnItems (thee.peek());
-	Configuration c = 0; Salience s = 0;
+	autoDistanceList thee = DistanceList_create ();
+	Configuration configuration = nullptr;
+	Salience salience = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classDistance) {
-			Collection_addItem (thee.peek(), me);
+			thy addItem_ref ((Distance) me);
 		} else if (CLASS == classConfiguration) {
-			c = (Configuration) me;
+			configuration = (Configuration) me;
 		} else if (CLASS == classSalience) {
-			s = (Salience) me;
+			salience = (Salience) me;
 		}
 	}
-	Melder_assert (thy size > 0 && c && s);
-	double vaf;
-	Configuration cr; Salience sr;
-	Distances_Configuration_Salience_indscal (thee.peek(), c, s,
-		GET_INTEGER (U"Normalize scalar products"), GET_REAL (U"Tolerance"),
-		GET_INTEGER (U"Maximum number of iterations"), 1, &cr, &sr, &vaf);
-	autoConfiguration ac = cr; autoSalience as = sr;
-	praat_new (ac.transfer(), U"indscal");
-	praat_new (as.transfer(), U"indscal");
+	Melder_assert (thy size > 0 && configuration && salience);
+	double varianceAccountedFor;
+	autoConfiguration configurationResult;
+	autoSalience salienceResult;
+	DistanceList_Configuration_Salience_indscal (thee.get(), configuration, salience,
+		GET_INTEGER (U"Normalize scalar products"),
+		GET_REAL (U"Tolerance"),
+		GET_INTEGER (U"Maximum number of iterations"),
+		true,   // showProgress
+		& configurationResult, & salienceResult, & varianceAccountedFor);
+	praat_new (configurationResult.move(), U"indscal");
+	praat_new (salienceResult.move(), U"indscal");
 END
 
 FORM (Distances_to_Configuration_ytl, U"Distance: To Configuration (ytl)", U"Distance: To Configuration (ytl)...")
 	NATURAL (U"Number of dimensions", U"2")
-	BOOLEAN (U"Normalize scalar products", 1)
-	BOOLEAN (U"Salience object", 0)
+	BOOLEAN (U"Normalize scalar products", true)
+	BOOLEAN (U"Salience object", false)
 	OK
 DO
-	autoDistances me = (Distances) praat_getSelectedObjects ();
-	Configuration cr; Salience sr;
-	Distances_to_Configuration_ytl (me.peek(), GET_INTEGER (U"Number of dimensions"),
-		GET_INTEGER (U"Normalize scalar products"), &cr, &sr);
-	autoConfiguration ac = cr; autoSalience as = sr;
-	praat_new (ac.transfer(), U"ytl");
+	autoDistanceList distances = DistanceList_create ();
+	LOOP {
+		iam (Distance);
+		distances -> addItem_ref (me);
+	}
+	autoConfiguration configurationResult;
+	autoSalience salienceResult;
+	DistanceList_to_Configuration_ytl (distances.get(), GET_INTEGER (U"Number of dimensions"),
+		GET_INTEGER (U"Normalize scalar products"), & configurationResult, & salienceResult);
+	praat_new (configurationResult.move(), U"ytl");
 	if (GET_INTEGER (U"Salience object")) {
-		praat_new (as.transfer(), U"ytl");
+		praat_new (salienceResult.move(), U"ytl");
 	}
 END
 
-FORM (Dissimilarity_Distance_monotoneRegression, U"Dissimilarity & Distance: Monotone regression", 0)
+FORM (Dissimilarity_Distance_monotoneRegression, U"Dissimilarity & Distance: Monotone regression", nullptr)
 	RADIO (U"Handling of ties", 1)
-	RADIOBUTTON (U"Primary approach")
-	RADIOBUTTON (U"Secondary approach")
+		RADIOBUTTON (U"Primary approach")
+		RADIOBUTTON (U"Secondary approach")
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Distance d = FIRST (Distance);
-	praat_new (Dissimilarity_Distance_monotoneRegression (me, d, GET_INTEGER (U"Handling of ties")), my name);
+	Distance thee = FIRST (Distance);
+	praat_new (Dissimilarity_Distance_monotoneRegression (me, thee,
+		GET_INTEGER (U"Handling of ties")), my name);
 END
 
-FORM (Distance_Dissimilarity_drawShepardDiagram, U"Distance & Dissimilarity: Draw Shepard diagram", U"")
+FORM (Distance_Dissimilarity_drawShepardDiagram, U"Distance & Dissimilarity: Draw Shepard diagram", nullptr)
 	REAL (U"Minimum dissimilarity", U"0.0")
 	REAL (U"Maximum dissimilarity", U"0.0")
 	REAL (U"left Distance range", U"0.0")
 	REAL (U"right Distance range", U"0.0")
 	POSITIVE (U"Mark size (mm)", U"1.0")
 	SENTENCE (U"Mark string (+xo.)", U"+")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	Dissimilarity me = FIRST (Dissimilarity);
-	Distance d = FIRST (Distance);
-	Proximity_Distance_drawScatterDiagram (me, d, GRAPHICS,
-		GET_REAL (U"Minimum dissimilarity"), GET_REAL (U"Maximum dissimilarity"),
-		GET_REAL (U"left Distance range"), GET_REAL (U"right Distance range"),
-		GET_REAL (U"Mark size"), GET_STRING (U"Mark string"),
+	Distance thee = FIRST (Distance);
+	Proximity_Distance_drawScatterDiagram (me, thee, GRAPHICS,
+		GET_REAL (U"Minimum dissimilarity"),
+		GET_REAL (U"Maximum dissimilarity"),
+		GET_REAL (U"left Distance range"),
+		GET_REAL (U"right Distance range"),
+		GET_REAL (U"Mark size"),
+		GET_STRING (U"Mark string"),
 		GET_INTEGER (U"Garnish"));
 END
 
@@ -1483,28 +1646,32 @@ END
 /************************* Salience ***************************************/
 
 
-FORM (Salience_draw, U"Salience: Draw", 0)
+FORM (Salience_draw, U"Salience: Draw", nullptr)
 	NATURAL (U"Horizontal dimension", U"1")
 	NATURAL (U"Vertical dimension", U"2")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK
 DO
 	LOOP {
 		iam (Salience);
-		Salience_draw (me, GRAPHICS, GET_INTEGER (U"Horizontal dimension"), GET_INTEGER (U"Vertical dimension"),
-		GET_INTEGER (U"Garnish"));
+		Salience_draw (me, GRAPHICS,
+			GET_INTEGER (U"Horizontal dimension"),
+			GET_INTEGER (U"Vertical dimension"),
+			GET_INTEGER (U"Garnish"));
 	}
 END
 
 /************************* COVARIANCE & CONFIGURATION  ********************/
 
-FORM (Covariance_to_Configuration, U"Covariance: To Configuration", 0)
+FORM (Covariance_to_Configuration, U"Covariance: To Configuration", nullptr)
 	NATURAL (U"Number of dimensions", U"2")
 	OK
 DO
 	LOOP {
 		iam (Covariance);
-		praat_new (Covariance_to_Configuration (me, GET_INTEGER (U"Number of dimensions")), my name);
+		autoConfiguration result = Covariance_to_Configuration (me,
+			GET_INTEGER (U"Number of dimensions"));
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -1568,14 +1735,16 @@ END
 DIRECT (TableOfReal_to_Configuration)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_Configuration (me), my name);
+		autoConfiguration result = TableOfReal_to_Configuration (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 DIRECT (TableOfReal_to_ContingencyTable)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_ContingencyTable (me), my name);
+		autoContingencyTable result = TableOfReal_to_ContingencyTable (me);
+		praat_new (result.move(), my name);
 	}
 END
 
@@ -1656,26 +1825,27 @@ END
 DIRECT (TableOfReal_to_Confusion)
 	LOOP {
 		iam (TableOfReal);
-		praat_new (TableOfReal_to_Confusion (me), my name);
+		autoConfusion result = TableOfReal_to_Confusion (me);
+		praat_new (result.move(), my name);
 	}
 END
 
 static void praat_AffineTransform_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, QUERY_BUTTON, 0, 0, 0);
+	praat_addAction1 (klas, 0, QUERY_BUTTON, nullptr, 0, nullptr);
 	praat_addAction1 (klas, 1, U"Get transformation element...", QUERY_BUTTON, 1, DO_AffineTransform_getTransformationElement);
 	praat_addAction1 (klas, 1, U"Get translation element...", QUERY_BUTTON, 1, DO_AffineTransform_getTranslationElement);
-	praat_addAction1 (klas, 0, U"Invert", 0, 0, DO_AffineTransform_invert);
+	praat_addAction1 (klas, 0, U"Invert", nullptr, 0, DO_AffineTransform_invert);
 }
 
 static void praat_Configuration_and_AffineTransform_init (ClassInfo transform) {
-	praat_addAction2 (classConfiguration, 1, transform, 1, U"To Configuration", 0, 0, DO_Configuration_and_AffineTransform_to_Configuration);
+	praat_addAction2 (classConfiguration, 1, transform, 1, U"To Configuration", nullptr, 0, DO_Configuration_and_AffineTransform_to_Configuration);
 }
 
 void praat_TableOfReal_extras (ClassInfo klas);
 void praat_TableOfReal_extras (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"-- get additional --", U"Get value...", 1, 0);
+	praat_addAction1 (klas, 1, U"-- get additional --", U"Get value...", 1, nullptr);
 	praat_addAction1 (klas, 1, U"Get table norm", U"-- get additional --", 1, DO_TableOfReal_getTableNorm);
-	praat_addAction1 (klas, 1, U"-- set additional --", U"Set column label (label)...", 1, 0);
+	praat_addAction1 (klas, 1, U"-- set additional --", U"Set column label (label)...", 1, nullptr);
 	praat_addAction1 (klas, 1, U"Normalize rows...", U"-- set additional --", 1, DO_TableOfReal_normalizeRows);
 	praat_addAction1 (klas, 1, U"Normalize columns...", U"Normalize rows...", 1, DO_TableOfReal_normalizeColumns);
 	praat_addAction1 (klas, 1, U"Normalize table...", U"Normalize columns...", 1, DO_TableOfReal_normalizeTable);
@@ -1686,33 +1856,31 @@ void praat_TableOfReal_extras (ClassInfo klas) {
 
 void praat_uvafon_MDS_init ();
 void praat_uvafon_MDS_init () {
-	Thing_recognizeClassesByName (classAffineTransform, classProcrustes,
-	                              classContingencyTable, classDissimilarity,
-	                              classSimilarity, classConfiguration, classDistance,
-	                              classSalience, classScalarProduct, classWeight, NULL);
+	Thing_recognizeClassesByName (classAffineTransform, classProcrustes, classContingencyTable, classDissimilarity,
+		classSimilarity, classConfiguration, classDistance, classSalience, classScalarProduct, classWeight, nullptr);
 	Thing_recognizeClassByOtherName (classProcrustes, U"Procrustus");
 
-	praat_addMenuCommand (U"Objects", U"New", U"Multidimensional scaling", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"MDS tutorial", 0, 1, DO_MDS_help);
-	praat_addMenuCommand (U"Objects", U"New", U"-- MDS --", 0, 1, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create letter R example...", 0, 1, DO_Dissimilarity_createLetterRExample);
-	praat_addMenuCommand (U"Objects", U"New", U"Create INDSCAL Carroll Wish example...", 0, 1, DO_INDSCAL_createCarrollWishExample);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Configuration...", 0, 1, DO_Configuration_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Draw splines...", 0, 1, DO_drawSplines);
-	praat_addMenuCommand (U"Objects", U"New", U"Draw MDS class relations", 0, 1, DO_drawMDSClassRelations);
+	praat_addMenuCommand (U"Objects", U"New", U"Multidimensional scaling", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"MDS tutorial", nullptr, 1, DO_MDS_help);
+	praat_addMenuCommand (U"Objects", U"New", U"-- MDS --", nullptr, 1, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create letter R example...", nullptr, 1, DO_Dissimilarity_createLetterRExample);
+	praat_addMenuCommand (U"Objects", U"New", U"Create INDSCAL Carroll Wish example...", nullptr, 1, DO_INDSCAL_createCarrollWishExample);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Configuration...", nullptr, 1, DO_Configuration_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Draw splines...", nullptr, 1, DO_drawSplines);
+	praat_addMenuCommand (U"Objects", U"New", U"Draw MDS class relations", nullptr, 1, DO_drawMDSClassRelations);
 
 	/****** 1 class ********************************************************/
 
-	praat_addAction1 (classAffineTransform, 0, U"AffineTransform help", 0, 0, DO_AffineTransform_help);
+	praat_addAction1 (classAffineTransform, 0, U"AffineTransform help", nullptr, 0, DO_AffineTransform_help);
 	praat_AffineTransform_init (classAffineTransform);
 
 
-	praat_addAction1 (classConfiguration, 0, U"Configuration help", 0, 0, DO_Configuration_help);
+	praat_addAction1 (classConfiguration, 0, U"Configuration help", nullptr, 0, DO_Configuration_help);
 	praat_TableOfReal_init2 (classConfiguration);
 	praat_TableOfReal_extras (classConfiguration);
-	(void) praat_removeAction (classConfiguration, NULL, NULL, U"Insert column (index)...");
-	(void) praat_removeAction (classConfiguration, NULL, NULL, U"Remove column (index)...");
-	(void) praat_removeAction (classConfiguration, NULL, NULL, U"Append");
+	(void) praat_removeAction (classConfiguration, nullptr, nullptr, U"Insert column (index)...");
+	(void) praat_removeAction (classConfiguration, nullptr, nullptr, U"Remove column (index)...");
+	(void) praat_removeAction (classConfiguration, nullptr, nullptr, U"Append");
 	praat_addAction1 (classConfiguration, 0, U"Draw...", DRAW_BUTTON, 1, DO_Configuration_draw);
 	praat_addAction1 (classConfiguration, 0, U"Draw sigma ellipses...", U"Draw...", 1, DO_Configuration_drawSigmaEllipses);
 	praat_addAction1 (classConfiguration, 0, U"Draw one sigma ellipse...", U"Draw...", 1, DO_Configuration_drawOneSigmaEllipse);
@@ -1722,84 +1890,84 @@ void praat_uvafon_MDS_init () {
 	praat_addAction1 (classConfiguration, 0, U"Randomize", U"Normalize table...", 1, DO_Configuration_randomize);
 	praat_addAction1 (classConfiguration, 0, U"Normalize...", U"Randomize", 1, DO_Configuration_normalize);
 	praat_addAction1 (classConfiguration, 0, U"Centralize", U"Randomize", 1, DO_Configuration_centralize);
-	praat_addAction1 (classConfiguration, 1, U"-- set rotations & reflections --", U"Centralize", 1, 0);
+	praat_addAction1 (classConfiguration, 1, U"-- set rotations & reflections --", U"Centralize", 1, nullptr);
 
 	praat_addAction1 (classConfiguration, 0, U"Rotate...", U"-- set rotations & reflections --", 1, DO_Configuration_rotate);
 	praat_addAction1 (classConfiguration, 0, U"Rotate (pc)", U"Rotate...", 1, DO_Configuration_rotateToPrincipalDirections);
 	praat_addAction1 (classConfiguration, 0, U"Invert dimension...", U"Rotate (pc)", 1, DO_Configuration_invertDimension);
-	praat_addAction1 (classConfiguration, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classConfiguration, 0, U"To Distance", 0, 0, DO_Configuration_to_Distance);
-	praat_addAction1 (classConfiguration, 0, U"To Configuration (varimax)...", 0, 0, DO_Configuration_varimax);
-	praat_addAction1 (classConfiguration, 0, U"To Similarity (cc)", 0, 0, DO_Configurations_to_Similarity_cc);
+	praat_addAction1 (classConfiguration, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classConfiguration, 0, U"To Distance", nullptr, 0, DO_Configuration_to_Distance);
+	praat_addAction1 (classConfiguration, 0, U"To Configuration (varimax)...", nullptr, 0, DO_Configuration_varimax);
+	praat_addAction1 (classConfiguration, 0, U"To Similarity (cc)", nullptr, 0, DO_Configurations_to_Similarity_cc);
 
-	praat_addAction1 (classConfiguration, 0, U"Match configurations -", 0, 0, 0);
-	praat_addAction1 (classConfiguration, 2, U"To Procrustes...", 0, 1, DO_Configurations_to_Procrustes);
-	praat_addAction1 (classConfiguration, 2, U"To AffineTransform (congruence)...", 0, 1, DO_Configurations_to_AffineTransform_congruence);
+	praat_addAction1 (classConfiguration, 0, U"Match configurations -", nullptr, 0, nullptr);
+	praat_addAction1 (classConfiguration, 2, U"To Procrustes...", nullptr, 1, DO_Configurations_to_Procrustes);
+	praat_addAction1 (classConfiguration, 2, U"To AffineTransform (congruence)...", nullptr, 1, DO_Configurations_to_AffineTransform_congruence);
 
 	praat_addAction1 (classConfusion, 0, U"To ContingencyTable", U"To Matrix", 0, DO_Confusion_to_ContingencyTable);
-	praat_addAction1 (classConfusion, 0, U"To Proximity -", U"Analyse", 0, 0);
+	praat_addAction1 (classConfusion, 0, U"To Proximity -", U"Analyse", 0, nullptr);
 	praat_addAction1 (classConfusion, 0, U"To Dissimilarity (pdf)...", U"To Proximity -", 1, DO_Confusion_to_Dissimilarity_pdf);
 	praat_addAction1 (classConfusion, 0, U"To Similarity...", U"To Proximity -", 1, DO_Confusion_to_Similarity);
 	praat_addAction1 (classConfusion, 0, U"Sum", U"Synthesize -", 1, DO_Confusions_sum);
 
 
 	praat_TableOfReal_init2 (classContingencyTable);
-	praat_addAction1 (classContingencyTable, 1, U"-- statistics --", U"Get value...", 1, 0);
+	praat_addAction1 (classContingencyTable, 1, U"-- statistics --", U"Get value...", 1, nullptr);
 	praat_addAction1 (classContingencyTable, 1, U"Get chi squared probability", U"-- statistics --", 1, DO_ContingencyTable_chisqProbability);
 	praat_addAction1 (classContingencyTable, 1, U"Get Cramer's statistic", U"Get chi squared probability", 1, DO_ContingencyTable_cramersStatistic);
 	praat_addAction1 (classContingencyTable, 1, U"Get contingency coefficient", U"Get Cramer's statistic", 1,
 	                  DO_ContingencyTable_contingencyCoefficient);
-	praat_addAction1 (classContingencyTable, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classContingencyTable, 1, U"To Configuration (ca)...", 0, 0, DO_ContingencyTable_to_Configuration_ca);
+	praat_addAction1 (classContingencyTable, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classContingencyTable, 1, U"To Configuration (ca)...", nullptr, 0, DO_ContingencyTable_to_Configuration_ca);
 
 
-	praat_addAction1 (classCorrelation, 0, U"To Configuration...", 0, 0, DO_Correlation_to_Configuration);
+	praat_addAction1 (classCorrelation, 0, U"To Configuration...", nullptr, 0, DO_Correlation_to_Configuration);
 
-	praat_addAction1 (classDissimilarity, 0, U"Dissimilarity help", 0, 0, DO_Dissimilarity_help);
+	praat_addAction1 (classDissimilarity, 0, U"Dissimilarity help", nullptr, 0, DO_Dissimilarity_help);
 	praat_TableOfReal_init2 (classDissimilarity);
 	praat_TableOfReal_extras (classDissimilarity);
 	praat_addAction1 (classDissimilarity, 0, U"Get additive constant", U"Get table norm", 1, DO_Dissimilarity_getAdditiveConstant);
-	praat_addAction1 (classDissimilarity, 0, CONFIGURATION_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (monotone mds)...", 0, 1, DO_Dissimilarity_monotone_mds);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (i-spline mds)...", 0, 1, DO_Dissimilarity_ispline_mds);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (interval mds)...", 0, 1, DO_Dissimilarity_interval_mds);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (ratio mds)...", 0, 1, DO_Dissimilarity_ratio_mds);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (absolute mds)...", 0, 1, DO_Dissimilarity_absolute_mds);
-	praat_addAction1 (classDissimilarity, 1, U"To Configuration (kruskal)...", 0, 1, DO_Dissimilarity_kruskal);
-	praat_addAction1 (classDissimilarity, 0, U"To Distance...", 0, 0, DO_Dissimilarity_to_Distance);
-	praat_addAction1 (classDissimilarity, 0, U"To Weight", 0, 0, DO_Dissimilarity_to_Weight);
+	praat_addAction1 (classDissimilarity, 0, CONFIGURATION_BUTTON, nullptr, 0, nullptr);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (monotone mds)...", nullptr, 1, DO_Dissimilarity_monotone_mds);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (i-spline mds)...", nullptr, 1, DO_Dissimilarity_ispline_mds);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (interval mds)...", nullptr, 1, DO_Dissimilarity_interval_mds);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (ratio mds)...", nullptr, 1, DO_Dissimilarity_ratio_mds);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (absolute mds)...", nullptr, 1, DO_Dissimilarity_absolute_mds);
+	praat_addAction1 (classDissimilarity, 1, U"To Configuration (kruskal)...", nullptr, 1, DO_Dissimilarity_kruskal);
+	praat_addAction1 (classDissimilarity, 0, U"To Distance...", nullptr, 0, DO_Dissimilarity_to_Distance);
+	praat_addAction1 (classDissimilarity, 0, U"To Weight", nullptr, 0, DO_Dissimilarity_to_Weight);
 
 
-	praat_addAction1 (classCovariance, 0, U"To Configuration...", 0, 0, DO_Covariance_to_Configuration);
+	praat_addAction1 (classCovariance, 0, U"To Configuration...", nullptr, 0, DO_Covariance_to_Configuration);
 
 
 	praat_TableOfReal_init2 (classDistance);
 	praat_TableOfReal_extras (classDistance);
-	praat_addAction1 (classDistance, 0, U"Analyse -", 0, 0, 0);
-	praat_addAction1 (classDistance, 0, CONFIGURATION_BUTTON, 0, 0, 0);
-	praat_addAction1 (classDistance, 0, U"To Configuration (indscal)...", 0, 1, DO_Distances_indscal);
-	praat_addAction1 (classDistance, 0, U"-- linear scaling --", 0, 1, 0);
-	praat_addAction1 (classDistance, 0, U"To Configuration (ytl)...", 0, 1, DO_Distances_to_Configuration_ytl);
-	praat_addAction1 (classDistance, 0, U"To Dissimilarity", 0, 0, DO_Distance_to_Dissimilarity);
-	praat_addAction1 (classDistance, 0, U"To ScalarProduct...", 0, 0, DO_Distance_to_ScalarProduct);
+	praat_addAction1 (classDistance, 0, U"Analyse -", nullptr, 0, nullptr);
+	praat_addAction1 (classDistance, 0, CONFIGURATION_BUTTON, nullptr, 0, nullptr);
+	praat_addAction1 (classDistance, 0, U"To Configuration (indscal)...", nullptr, 1, DO_Distances_indscal);
+	praat_addAction1 (classDistance, 0, U"-- linear scaling --", nullptr, 1, 0);
+	praat_addAction1 (classDistance, 0, U"To Configuration (ytl)...", nullptr, 1, DO_Distances_to_Configuration_ytl);
+	praat_addAction1 (classDistance, 0, U"To Dissimilarity", nullptr, 0, DO_Distance_to_Dissimilarity);
+	praat_addAction1 (classDistance, 0, U"To ScalarProduct...", nullptr, 0, DO_Distance_to_ScalarProduct);
 
 
-	praat_addAction1 (classProcrustes, 0, U"Procrustes help", 0, 0, DO_Procrustes_help);
+	praat_addAction1 (classProcrustes, 0, U"Procrustes help", nullptr, 0, DO_Procrustes_help);
 	praat_AffineTransform_init (classProcrustes);
 	praat_addAction1 (classProcrustes, 1, U"Get scale", QUERY_BUTTON, 1, DO_Procrustes_getScale);
-	praat_addAction1 (classProcrustes, 0, U"Extract transformation matrix", 0, 0, DO_AffineTransform_extractMatrix);
-	praat_addAction1 (classProcrustes, 0, U"Extract translation vector", 0, 0, DO_AffineTransform_extractTranslationVector);
+	praat_addAction1 (classProcrustes, 0, U"Extract transformation matrix", nullptr, 0, DO_AffineTransform_extractMatrix);
+	praat_addAction1 (classProcrustes, 0, U"Extract translation vector", nullptr, 0, DO_AffineTransform_extractTranslationVector);
 
 	praat_TableOfReal_init2 (classSalience);
 	praat_TableOfReal_extras (classSalience);
 	praat_addAction1 (classSalience, 0, U"Draw...", DRAW_BUTTON, 1, DO_Salience_draw);
 
 
-	praat_addAction1 (classSimilarity, 0, U"Similarity help", 0, 0, DO_Similarity_help);
+	praat_addAction1 (classSimilarity, 0, U"Similarity help", nullptr, 0, DO_Similarity_help);
 	praat_TableOfReal_init2 (classSimilarity);
 	praat_TableOfReal_extras (classSimilarity);
-	praat_addAction1 (classSimilarity, 0, U"Analyse -", 0, 0, 0);
-	praat_addAction1 (classSimilarity, 0, U"To Dissimilarity...", 0, 0, DO_Similarity_to_Dissimilarity);
+	praat_addAction1 (classSimilarity, 0, U"Analyse -", nullptr, 0, nullptr);
+	praat_addAction1 (classSimilarity, 0, U"To Dissimilarity...", nullptr, 0, DO_Similarity_to_Dissimilarity);
 
 
 	praat_TableOfReal_init2 (classScalarProduct);
@@ -1809,93 +1977,91 @@ void praat_uvafon_MDS_init () {
 	praat_addAction1 (classTableOfReal, 1, U"Centre rows", U"Normalize table...", 1, DO_TableOfReal_centreRows);
 	praat_addAction1 (classTableOfReal, 1, U"Centre columns", U"Centre rows", 1, DO_TableOfReal_centreColumns);
 	praat_addAction1 (classTableOfReal, 1, U"Double centre", U"Centre columns", 1, DO_TableOfReal_doubleCentre);
-	praat_addAction1 (classTableOfReal, 0, U"Cast -", 0, 0, 0);
-	praat_addAction1 (classTableOfReal, 0, U"To Confusion", 0, 1, DO_TableOfReal_to_Confusion);
-	praat_addAction1 (classTableOfReal, 0, U"To Dissimilarity", 0, 1, DO_TableOfReal_to_Dissimilarity);
-	praat_addAction1 (classTableOfReal, 0, U"To Similarity", 0, 1, DO_TableOfReal_to_Similarity);
-	praat_addAction1 (classTableOfReal, 0, U"To Distance", 0, 1, DO_TableOfReal_to_Distance);
-	praat_addAction1 (classTableOfReal, 0, U"To Salience", 0, 1, DO_TableOfReal_to_Salience);
-	praat_addAction1 (classTableOfReal, 0, U"To Weight", 0, 1, DO_TableOfReal_to_Weight);
-	praat_addAction1 (classTableOfReal, 0, U"To ScalarProduct", 0, 1, DO_TableOfReal_to_ScalarProduct);
-	praat_addAction1 (classTableOfReal, 0, U"To Configuration", 0, 1, DO_TableOfReal_to_Configuration);
-	praat_addAction1 (classTableOfReal, 0, U"To ContingencyTable", 0, 1, DO_TableOfReal_to_ContingencyTable);
+	praat_addAction1 (classTableOfReal, 0, U"Cast -", nullptr, 0, nullptr);
+	praat_addAction1 (classTableOfReal, 0, U"To Confusion", nullptr, 1, DO_TableOfReal_to_Confusion);
+	praat_addAction1 (classTableOfReal, 0, U"To Dissimilarity", nullptr, 1, DO_TableOfReal_to_Dissimilarity);
+	praat_addAction1 (classTableOfReal, 0, U"To Similarity", nullptr, 1, DO_TableOfReal_to_Similarity);
+	praat_addAction1 (classTableOfReal, 0, U"To Distance", nullptr, 1, DO_TableOfReal_to_Distance);
+	praat_addAction1 (classTableOfReal, 0, U"To Salience", nullptr, 1, DO_TableOfReal_to_Salience);
+	praat_addAction1 (classTableOfReal, 0, U"To Weight", nullptr, 1, DO_TableOfReal_to_Weight);
+	praat_addAction1 (classTableOfReal, 0, U"To ScalarProduct", nullptr, 1, DO_TableOfReal_to_ScalarProduct);
+	praat_addAction1 (classTableOfReal, 0, U"To Configuration", nullptr, 1, DO_TableOfReal_to_Configuration);
+	praat_addAction1 (classTableOfReal, 0, U"To ContingencyTable", nullptr, 1, DO_TableOfReal_to_ContingencyTable);
 
 	praat_TableOfReal_init2 (classWeight);
 
-
 	/****** 2 classes ********************************************************/
 
 	praat_Configuration_and_AffineTransform_init (classAffineTransform);
 	praat_Configuration_and_AffineTransform_init (classProcrustes);
 
-	praat_addAction2 (classConfiguration, 0, classWeight, 1, U"Analyse", 0, 0, 0);
-	praat_addAction2 (classConfiguration, 0, classWeight, 1, U"To Similarity (cc)", 0, 0, DO_Configuration_Weight_to_Similarity_cc);
-
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, ANALYSE_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (monotone mds)...", 0, 1, DO_Dissimilarity_Weight_monotone_mds);
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (i-spline mds)...", 0, 1, DO_Dissimilarity_Weight_ispline_mds);
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (interval mds)...", 0, 1, DO_Dissimilarity_Weight_interval_mds);
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (ratio mds)...", 0, 1, DO_Dissimilarity_Weight_ratio_mds);
-	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (absolute mds)...", 0, 1, DO_Dissimilarity_Weight_absolute_mds);
-
-
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw Shepard diagram...", 0, 1, DO_Dissimilarity_Configuration_drawShepardDiagram);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"-- draw regressions --", 0, 1, 0);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw monotone regression...", 0, 1, DO_Dissimilarity_Configuration_drawMonotoneRegression);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw i-spline regression...", 0, 1, DO_Dissimilarity_Configuration_drawISplineRegression);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw interval regression...", 0, 1, DO_Dissimilarity_Configuration_drawIntervalRegression);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw ratio regression...", 0, 1, DO_Dissimilarity_Configuration_drawRatioRegression);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw absolute regression...", 0, 1, DO_Dissimilarity_Configuration_drawAbsoluteRegression);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress...", 0, 1, DO_Dissimilarity_Configuration_getStress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (monotone mds)...", 0, 1, DO_Dissimilarity_Configuration_monotone_stress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (i-spline mds)...", 0, 1, DO_Dissimilarity_Configuration_ispline_stress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (interval mds)...", 0, 1, DO_Dissimilarity_Configuration_interval_stress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (ratio mds)...", 0, 1, DO_Dissimilarity_Configuration_ratio_stress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (absolute mds)...", 0, 1, DO_Dissimilarity_Configuration_absolute_stress);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, ANALYSE_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (monotone mds)...", 0, 1, DO_Dissimilarity_Configuration_monotone_mds);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (i-spline mds)...", 0, 1, DO_Dissimilarity_Configuration_ispline_mds);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (interval mds)...", 0, 1, DO_Dissimilarity_Configuration_interval_mds);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (ratio mds)...", 0, 1, DO_Dissimilarity_Configuration_ratio_mds);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (absolute mds)...", 0, 1, DO_Dissimilarity_Configuration_absolute_mds);
-	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (kruskal)...", 0, 1, DO_Dissimilarity_Configuration_kruskal);
-
-	praat_addAction2 (classDistance, 1, classConfiguration, 1, DRAW_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDistance, 1, classConfiguration, 1, U"Draw scatter diagram...", 0, 0, DO_Distance_and_Configuration_drawScatterDiagram);
-	praat_addAction2 (classDistance, 1, classConfiguration, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDistance, 0, classConfiguration, 1, U"Get VAF...", 0, 0, DO_Distance_Configuration_vaf);
-	praat_addAction2 (classDistance, 1, classConfiguration, 1, ANALYSE_BUTTON, 0, 0, 0);
-	praat_addAction2 (classDistance, 0, classConfiguration, 1, U"To Configuration (indscal)...", 0, 1, DO_Distance_Configuration_indscal);
-
-	praat_addAction2 (classDistance, 1, classDissimilarity, 1, U"Draw Shepard diagram...", 0, 0, DO_Distance_Dissimilarity_drawShepardDiagram);
-	praat_addAction2 (classDissimilarity, 1, classDistance, 1, U"Monotone regression...", 0, 0, DO_Dissimilarity_Distance_monotoneRegression);
+	praat_addAction2 (classConfiguration, 0, classWeight, 1, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction2 (classConfiguration, 0, classWeight, 1, U"To Similarity (cc)", nullptr, 0, DO_Configuration_Weight_to_Similarity_cc);
+
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, ANALYSE_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (monotone mds)...", nullptr, 1, DO_Dissimilarity_Weight_monotone_mds);
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (i-spline mds)...", nullptr, 1, DO_Dissimilarity_Weight_ispline_mds);
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (interval mds)...", nullptr, 1, DO_Dissimilarity_Weight_interval_mds);
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (ratio mds)...", nullptr, 1, DO_Dissimilarity_Weight_ratio_mds);
+	praat_addAction2 (classDissimilarity, 1, classWeight, 1, U"To Configuration (absolute mds)...", nullptr, 1, DO_Dissimilarity_Weight_absolute_mds);
+
+
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, DRAW_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw Shepard diagram...", nullptr, 1, DO_Dissimilarity_Configuration_drawShepardDiagram);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"-- draw regressions --", nullptr, 1, nullptr);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw monotone regression...", nullptr, 1, DO_Dissimilarity_Configuration_drawMonotoneRegression);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw i-spline regression...", nullptr, 1, DO_Dissimilarity_Configuration_drawISplineRegression);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw interval regression...", nullptr, 1, DO_Dissimilarity_Configuration_drawIntervalRegression);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw ratio regression...", nullptr, 1, DO_Dissimilarity_Configuration_drawRatioRegression);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Draw absolute regression...", nullptr, 1, DO_Dissimilarity_Configuration_drawAbsoluteRegression);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, QUERY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress...", nullptr, 1, DO_Dissimilarity_Configuration_getStress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (monotone mds)...", nullptr, 1, DO_Dissimilarity_Configuration_monotone_stress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (i-spline mds)...", nullptr, 1, DO_Dissimilarity_Configuration_ispline_stress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (interval mds)...", nullptr, 1, DO_Dissimilarity_Configuration_interval_stress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (ratio mds)...", nullptr, 1, DO_Dissimilarity_Configuration_ratio_stress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"Get stress (absolute mds)...", nullptr, 1, DO_Dissimilarity_Configuration_absolute_stress);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, ANALYSE_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (monotone mds)...", nullptr, 1, DO_Dissimilarity_Configuration_monotone_mds);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (i-spline mds)...", nullptr, 1, DO_Dissimilarity_Configuration_ispline_mds);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (interval mds)...", nullptr, 1, DO_Dissimilarity_Configuration_interval_mds);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (ratio mds)...", nullptr, 1, DO_Dissimilarity_Configuration_ratio_mds);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (absolute mds)...", nullptr, 1, DO_Dissimilarity_Configuration_absolute_mds);
+	praat_addAction2 (classDissimilarity, 1, classConfiguration, 1, U"To Configuration (kruskal)...", nullptr, 1, DO_Dissimilarity_Configuration_kruskal);
+
+	praat_addAction2 (classDistance, 1, classConfiguration, 1, DRAW_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDistance, 1, classConfiguration, 1, U"Draw scatter diagram...", nullptr, 0, DO_Distance_and_Configuration_drawScatterDiagram);
+	praat_addAction2 (classDistance, 1, classConfiguration, 1, QUERY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDistance, 0, classConfiguration, 1, U"Get VAF...", nullptr, 0, DO_Distance_Configuration_vaf);
+	praat_addAction2 (classDistance, 1, classConfiguration, 1, ANALYSE_BUTTON, nullptr, 0, nullptr);
+	praat_addAction2 (classDistance, 0, classConfiguration, 1, U"To Configuration (indscal)...", nullptr, 1, DO_Distance_Configuration_indscal);
+
+	praat_addAction2 (classDistance, 1, classDissimilarity, 1, U"Draw Shepard diagram...", nullptr, 0, DO_Distance_Dissimilarity_drawShepardDiagram);
+	praat_addAction2 (classDissimilarity, 1, classDistance, 1, U"Monotone regression...", nullptr, 0, DO_Dissimilarity_Distance_monotoneRegression);
 
 	/****** 3 classes ********************************************************/
 
-
-	praat_addAction3 (classDissimilarity, 0, classConfiguration, 1, classSalience, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction3 (classDissimilarity, 0, classConfiguration, 1, classSalience, 1, U"Get VAF...", 0, 1, DO_Dissimilarity_Configuration_Salience_vaf);
-
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (monotone mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_monotone_stress);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (i-spline mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_ispline_stress);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (interval mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_interval_stress);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (ratio mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_ratio_stress);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (absolute mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_absolute_stress);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, ANALYSE_BUTTON, 0, 0, 0);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (monotone mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_monotone_mds);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (i-spline mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_ispline_mds);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (interval mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_interval_mds);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (ratio mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_ratio_mds);
-	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (absolute mds)...", 0, 1, DO_Dissimilarity_Configuration_Weight_absolute_mds);
-
-
-	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, QUERY_BUTTON, 0, 0, 0);
-	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"Get VAF...", 0, 1, DO_Distance_Configuration_Salience_vaf);
-	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"Analyse", 0, 0, 0);
-	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"To Configuration (indscal)...", 0, 0, DO_Distance_Configuration_Salience_indscal);
+	praat_addAction3 (classDissimilarity, 0, classConfiguration, 1, classSalience, 1, QUERY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction3 (classDissimilarity, 0, classConfiguration, 1, classSalience, 1, U"Get VAF...", nullptr, 1, DO_Dissimilarity_Configuration_Salience_vaf);
+
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, QUERY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (monotone mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_monotone_stress);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (i-spline mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_ispline_stress);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (interval mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_interval_stress);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (ratio mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_ratio_stress);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"Get stress (absolute mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_absolute_stress);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, ANALYSE_BUTTON, nullptr, 0, nullptr);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (monotone mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_monotone_mds);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (i-spline mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_ispline_mds);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (interval mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_interval_mds);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (ratio mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_ratio_mds);
+	praat_addAction3 (classDissimilarity, 1, classConfiguration, 1, classWeight, 1, U"To Configuration (absolute mds)...", nullptr, 1, DO_Dissimilarity_Configuration_Weight_absolute_mds);
+
+
+	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, QUERY_BUTTON, nullptr, 0, nullptr);
+	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"Get VAF...", nullptr, 1, DO_Distance_Configuration_Salience_vaf);
+	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction3 (classDistance, 0, classConfiguration, 1, classSalience, 1, U"To Configuration (indscal)...", nullptr, 0, DO_Distance_Configuration_Salience_indscal);
 
 
 	INCLUDE_MANPAGES (manual_MDS_init)
diff --git a/external/espeak/READ_ME.TXT b/external/espeak/READ_ME.TXT
index 7a38c38..9b46bf2 100644
--- a/external/espeak/READ_ME.TXT
+++ b/external/espeak/READ_ME.TXT
@@ -1,8 +1,8 @@
 READ_ME.TXT
 
-djmw 20120130
+djmw 20151203
 
-Espeak Version 1.46
+Espeak Version 1.48.04
 
 The Espeak program and its library use the espeak-data directory as a supply for the data the
 synthesizer needs. The synthesizer needs the location of this directory to work correctly. The synthesizer's
@@ -38,7 +38,7 @@ Use the (private) script "espeakdata_to_code.praat to
 #undef PLATFORM_WINDOWS
 #undef USE_NANOSLEEP
 #define DATA_FROM_SOURCECODE_FILES
-
+char32 *eSpeak_version = U"1.48.04" // the current espeak version
 #ifdef _WIN32
 	wchar_t * Melder_peekUtf8ToWcs (const char *string);
 	const uint16_t * Melder_peekWcsToUtf16 (const wchar_t *string);
@@ -118,9 +118,10 @@ static void init_path(const char *path)
 {//====================================
 #ifdef PLATFORM_WINDOWS
 
-near line 464: sleep is not a WIN64 function, but luckily we don't need it.
+near line 115 and 465: sleep is not a WIN64 function, but luckily we don't need it.
 // sleep(1)
 
+
 >> dictionary.cpp
 
 #ifdef DATA_FROM_SOURCECODE_FILES
@@ -197,7 +198,7 @@ static double gen_noise(double noisedummy) // repaired ppgb 20111223
         return(noise);
 }
 
-???
+//in speech.h
 template <size_t _align_to, typename T> T *align_address (T *p)
 {
 	union {
@@ -210,3 +211,10 @@ template <size_t _align_to, typename T> T *align_address (T *p)
 	integer &= bit_mask;
 	return ptr;
 }
+
+// tr_languages
+replace 
+const char string_ordinal[] = {0xc2,0xba,0};  // masculine ordinal character, UTF-8
+by
+const char string_ordinal[] = {static_cast<char>(0xc2),static_cast<char>(0xba),0};  // masculine ordinal character, UTF-8
+to compile on 32 bit systems
diff --git a/external/espeak/StdAfx.h b/external/espeak/StdAfx.h
old mode 100644
new mode 100755
diff --git a/external/espeak/compiledict.cpp b/external/espeak/compiledict.cpp
old mode 100644
new mode 100755
index 7f9e34c..41c3e20
--- a/external/espeak/compiledict.cpp
+++ b/external/espeak/compiledict.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2010 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -32,7 +32,6 @@
 #include "translate.h"
 
 extern void Write4Bytes(FILE *f, int value);
-int HashDictionary(const char *string);
 
 static FILE *f_log = NULL;
 extern char *dir_dictionary;
@@ -50,14 +49,27 @@ static char *hash_chains[N_HASH_DICT];
 static char letterGroupsDefined[N_LETTER_GROUPS];
 
 MNEM_TAB mnem_rules[] = {
-	{"unpr",   0x01},
+	{"unpr",   DOLLAR_UNPR},
+	{"noprefix", DOLLAR_NOPREFIX},  // rule fails if a prefix has been removed
+	{"list",   DOLLAR_LIST},    // a pronunciation is given in the *_list file
+
+	{"w_alt1", 0x11},
 	{"w_alt2", 0x12},
 	{"w_alt3", 0x13},
+	{"w_alt4", 0x14},
+	{"w_alt5", 0x15},
+	{"w_alt6", 0x16},
 	{"w_alt", 0x11},   // note: put longer names before their sub-strings
+
+	{"p_alt1", 0x21},
 	{"p_alt2", 0x22},
 	{"p_alt3", 0x23},
+	{"p_alt4", 0x24},
+	{"p_alt5", 0x25},
+	{"p_alt6", 0x26},
 	{"p_alt", 0x21},
-	{NULL, -1} };
+	{NULL, -1}
+};
 
 MNEM_TAB mnem_flags[] = {
 	// these in the first group put a value in bits0-3 of dictionary_flags
@@ -79,24 +91,22 @@ MNEM_TAB mnem_flags[] = {
 
 
 	// these set the corresponding numbered bit if dictionary_flags
-	{"$pause",     8},    /* ensure pause before this word */
-	{"$only",      9},    /* only match on this word without suffix */
-	{"$onlys",     10},    /* only match with none, or with 's' suffix */
-	{"$strend",    11},    /* full stress if at end of clause */
-	{"$strend2",   12},    /* full stress if at end of clause, or only followed by unstressed */
-	{"$unstressend",13},   /* reduce stress at end of clause */
-	{"$atend",     14},    /* use this pronunciation if at end of clause */
-	{"$atstart",   15},   // use this pronunciation at start of clause
-
-	{"$abbrev",    17},    /* use this pronuciation rather than split into letters */
-	{"$stem",      18},   // must have a suffix
+	{"$pause",     8},    // ensure pause before this word
+	{"$strend",    9},   // full stress if at end of clause
+	{"$strend2",   10},   // full stress if at end of clause, or only followed by unstressed
+	{"$unstressend",11},  // reduce stress at end of clause
+	{"$abbrev",    13},   // use this pronuciation rather than split into letters
 
 // language specific
-	{"$double",    19},   // IT double the initial consonant of next word
-	{"$alt",       20},   // use alternative pronunciation
-	{"$alt1",      20},   // synonym for $alt
-	{"$alt2",      21},
-	{"$alt3",      22},
+	{"$double",    14},   // IT double the initial consonant of next word
+	{"$alt",       15},   // use alternative pronunciation
+	{"$alt1",      15},   // synonym for $alt
+	{"$alt2",      16},
+	{"$alt3",      17},
+	{"$alt4",      18},
+	{"$alt5",      19},
+	{"$alt6",      20},
+
 	{"$combine",   23},   // Combine with the next word
 
 	{"$dot",       24},   // ignore '.' after this word (abbreviation)
@@ -107,18 +117,24 @@ MNEM_TAB mnem_flags[] = {
 	{"$text",      29},   // word translates to replcement text, not phonemes
 
 // flags in dictionary word 2
-	{"$verbf",   0x20},    /* verb follows */
-	{"$verbsf",  0x21},    /* verb follows, allow -s suffix */
-	{"$nounf",   0x22},    /* noun follows */
-	{"$pastf",   0x23},   /* past tense follows */
-	{"$verb",    0x24},   /* use this pronunciation when its a verb */
-	{"$noun",    0x25},   /* use this pronunciation when its a noun */
-	{"$past",    0x26},   /* use this pronunciation when its past tense */
-	{"$verbextend",0x28},   /* extend influence of 'verb follows' */
-	{"$capital", 0x29},   /* use this pronunciation if initial letter is upper case */
-	{"$allcaps", 0x2a},   /* use this pronunciation if initial letter is upper case */
+	{"$verbf",   0x20},   // verb follows
+	{"$verbsf",  0x21},   // verb follows, allow -s suffix
+	{"$nounf",   0x22},   // noun follows
+	{"$pastf",   0x23},   // past tense follows
+	{"$verb",    0x24},   // use this pronunciation when its a verb
+	{"$noun",    0x25},   // use this pronunciation when its a noun
+	{"$past",    0x26},   // use this pronunciation when its past tense
+	{"$verbextend",0x28}, // extend influence of 'verb follows'
+	{"$capital", 0x29},   // use this pronunciation if initial letter is upper case
+	{"$allcaps", 0x2a},   // use this pronunciation if initial letter is upper case
 	{"$accent",  0x2b},   // character name is base-character name + accent name
 	{"$sentence",0x2d},   // only if this clause is a sentence (i.e. terminator is {. ? !} not {, ; :}
+	{"$only",    0x2e},   // only match on this word without suffix
+	{"$onlys",   0x2f},   // only match with none, or with 's' suffix
+	{"$stem",    0x30},   // must have a suffix
+	{"$atend",   0x31},   // use this pronunciation if at end of clause
+	{"$atstart", 0x32},   // use this pronunciation at start of clause
+	{"$native",  0x33},   // not if we've switched translators
 
 	// doesn't set dictionary_flags
 	{"$?",        100},   // conditional rule, followed by byte giving the condition number
@@ -165,26 +181,49 @@ static FILE *fopen_log(const char *fname,const char *access)
 }
 
 
-const char *LookupMnemName(MNEM_TAB *table, const int value)
+static const char *LookupMnemName(MNEM_TAB *table, const int value)
 //==========================================================
 /* Lookup a mnemonic string in a table, return its name */
 {
-   while(table->mnem != NULL)
-   {
-      if(table->value==value)
-         return(table->mnem);
-      table++;
-   }
-   return("");   /* not found */
+	while(table->mnem != NULL)
+	{
+		if(table->value==value)
+			return(table->mnem);
+		table++;
+	}
+	return("");   /* not found */
 }   /* end of LookupMnemValue */
 
 
-char *print_dictionary_flags(unsigned int *flags)
-{//==============================================
-	static char buf[20];
+void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len)
+{//========================================================================
+	int stress;
+	int ix;
+	const char *name;
+	int len;
+	int total = 0;
+
+	buf[0] = 0;
+	if((stress = flags[0] & 0xf) != 0)
+	{
+		sprintf(buf, "%s", LookupMnemName(mnem_flags, stress + 0x40));
+		total = strlen(buf);
+		buf += total;
+	}
 
-	sprintf(buf,"%s  0x%x/%x",LookupMnemName(mnem_flags,(flags[0] & 0xf)+0x40), flags[0], flags[1]);
-	return(buf);
+	for(ix=8; ix<64; ix++)
+	{
+		if(((ix < 30) && (flags[0] & (1 << ix))) || ((ix >= 0x20) && (flags[1] & (1 << (ix-0x20)))))
+		{
+			name = LookupMnemName(mnem_flags, ix);
+			len = strlen(name) + 1;
+			total += len;
+			if(total >= buf_len)
+				continue;
+			sprintf(buf, " %s", name);
+			buf += len;
+		}
+	}
 }
 
 
@@ -192,12 +231,13 @@ char *print_dictionary_flags(unsigned int *flags)
 
 char *DecodeRule(const char *group_chars, int group_length, char *rule, int control)
 {//=================================================================================
-/* Convert compiled match template to ascii */
+	/* Convert compiled match template to ascii */
 
-   unsigned char rb;
+	unsigned char rb;
 	unsigned char c;
 	char *p;
-   int  ix;
+	char *p_end;
+	int  ix;
 	int  match_type;
 	int  finished=0;
 	int  value;
@@ -207,18 +247,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 	int  condition_num=0;
 	int  at_start = 0;
 	const char *name;
-   char buf[60];
-   char buf_pre[60];
+	char buf[200];
+	char buf_pre[200];
 	char suffix[20];
-	static char output[60];
+	static char output[80];
 
-	static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
-		'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'};
+	static char symbols[] =
+		{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
+		'&','%','+','#','S','D','Z','A','L','!',' ','@','?','J','N','K','V','?','T','X','?','W'
+		};
 
 	static char symbols_lg[] = {'A','B','C','H','F','G','Y'};
 
 	match_type = 0;
-   buf_pre[0] = 0;
+	buf_pre[0] = 0;
 
 	for(ix=0; ix<group_length; ix++)
 	{
@@ -227,8 +269,8 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 	buf[ix] = 0;
 
 	p = &buf[strlen(buf)];
-   while(!finished)
-   {
+	while(!finished)
+	{
 		rb = *rule++;
 
 		if(rb <= RULE_LINENUM)
@@ -272,6 +314,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 			value = *rule++ & 0xff;
 			if((value != 0x01) || (control & FLAG_UNPRON_TEST))
 			{
+				// TODO write the string backwards if in RULE_PRE
 				p[0] = '$';
 				name = LookupMnemName(mnem_rules, value);
 				strcpy(&p[1],name);
@@ -279,8 +322,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 			}
 			c = ' ';
 		}
-		else
-		if(rb == RULE_ENDING)
+		else if(rb == RULE_ENDING)
 		{
 			static const char *flag_chars = "eipvdfq tba ";
 			flags = ((rule[0] & 0x7f)<< 8) + (rule[1] & 0x7f);
@@ -289,7 +331,7 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 				suffix_char = 'P';
 			sprintf(suffix,"%c%d",suffix_char,rule[2] & 0x7f);
 			rule += 3;
-			for(ix=0;ix<9;ix++)
+			for(ix=0; ix<9; ix++)
 			{
 				if(flags & 1)
 					sprintf(&suffix[strlen(suffix)],"%c",flag_chars[ix]);
@@ -299,13 +341,11 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 			p += strlen(suffix);
 			c = ' ';
 		}
-		else
-		if(rb == RULE_LETTERGP)
+		else if(rb == RULE_LETTERGP)
 		{
 			c = symbols_lg[*rule++ - 'A'];
 		}
-		else
-		if(rb == RULE_LETTERGP2)
+		else if(rb == RULE_LETTERGP2)
 		{
 			value = *rule++ - 'A';
 			p[0] = 'L';
@@ -319,11 +359,9 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 			}
 			p+=2;
 		}
-		else
-		if(rb <= RULE_LAST_RULE)
+		else if(rb <= RULE_LAST_RULE)
 			c = symbols[rb];
-		else
-		if(rb == RULE_SPACE)
+		else if(rb == RULE_SPACE)
 			c = '_';
 		else
 			c = rb;
@@ -332,6 +370,8 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 	*p = 0;
 
 	p = output;
+	p_end = p + sizeof(output) - 1;
+
 	if(linenum > 0)
 	{
 		sprintf(p,"%5d:\t",linenum);
@@ -346,18 +386,20 @@ char *DecodeRule(const char *group_chars, int group_length, char *rule, int cont
 	{
 		if(at_start)
 			*p++ = '_';
-		while(--ix >= 0)
+		while((--ix >= 0) && (p < p_end-3))
 			*p++ = buf_pre[ix];
 		*p++ = ')';
 		*p++ = ' ';
 	}
 	*p = 0;
+
+	buf[p_end - p] = 0;  // prevent overflow in output[]
 	strcat(p,buf);
 	ix = strlen(output);
 	while(ix < 8)
 		output[ix++]=' ';
 	output[ix]=0;
-   return(output);
+	return(output);
 }   /* end of DecodeRule */
 
 
@@ -390,8 +432,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
 	char *mnemptr;
 	unsigned char flag_codes[100];
 	char encoded_ph[200];
-	unsigned char bad_phoneme[4];
-static char nullstring[] = {0};
+	char bad_phoneme_str[4];
+	int bad_phoneme;
+	static char nullstring[] = {0};
 
 	text_not_phonemes = 0;
 	phonetic = word = nullstring;
@@ -436,12 +479,12 @@ static char nullstring[] = {0};
 			}
 
 			ix = 0;
-			if(isdigit(*p))
+			if(IsDigit09(*p))
 			{
 				ix += (*p-'0');
 				p++;
 			}
-			if(isdigit(*p))
+			if(IsDigit09(*p))
 			{
 				ix = ix*10 + (*p-'0');
 				p++;
@@ -464,13 +507,11 @@ static char nullstring[] = {0};
 				{
 					text_mode = 1;
 				}
-				else
-				if(flagnum == 201)
+				else if(flagnum == 201)
 				{
 					text_mode = 0;
 				}
-				else
-				if(flagnum == BITNUM_FLAG_TEXTMODE)
+				else if(flagnum == BITNUM_FLAG_TEXTMODE)
 				{
 					text_not_phonemes = 1;
 				}
@@ -500,8 +541,7 @@ static char nullstring[] = {0};
 				word = p+1;
 				step = 1;
 			}
-			else
-			if(!isspace2(c))
+			else if(!isspace2(c))
 			{
 				word = p;
 				step = 1;
@@ -511,7 +551,7 @@ static char nullstring[] = {0};
 		case 1:
 			if((c == '-') && multiple_words)
 			{
-				if(isdigit(word[0]))
+				if(IsDigit09(word[0]))
 				{
 					multiple_numeric_hyphen = 1;
 				}
@@ -535,8 +575,7 @@ static char nullstring[] = {0};
 					step = 3;
 				}
 			}
-			else
-			if(c == ')')
+			else if(c == ')')
 			{
 				if(multiple_words)
 				{
@@ -544,8 +583,7 @@ static char nullstring[] = {0};
 					multiple_words = 0;
 					step = 3;
 				}
-				else
-				if(word[0] != '_')
+				else if(word[0] != '_')
 				{
 					fprintf(f_log, "%5d: Missing '('\n", linenum);
 					error_count++;
@@ -559,8 +597,7 @@ static char nullstring[] = {0};
 			{
 				multiple_words++;
 			}
-			else
-			if(c == ')')
+			else if(c == ')')
 			{
 				p[0] = ' ';   // terminate extra string
 				multiple_string_end = p+1;
@@ -605,9 +642,9 @@ static char nullstring[] = {0};
 			// This is a special word, used by eSpeak.  Translate this into phonemes now
 			strcat(phonetic, " ");     // need a space to indicate word-boundary
 
-	// PROBLEM  vowel reductions are not applied to the translated phonemes
-	// condition rules are not applied
-			TranslateWord(translator,phonetic,0,NULL);
+			// PROBLEM  vowel reductions are not applied to the translated phonemes
+			// condition rules are not applied
+			TranslateWord(translator,phonetic,0,NULL,NULL);
 			text_not_phonemes = 0;
 			strncpy0(encoded_ph, word_phonemes, N_WORD_BYTES-4);
 
@@ -617,11 +654,11 @@ static char nullstring[] = {0};
 				error_need_dictionary++;
 				fprintf(f_log,"%5d: Need to compile dictionary again\n",linenum);
 			}
-{
+			{
 //char decoded_phonemes[128];
 //DecodePhonemes(word_phonemes,decoded_phonemes);
 //printf("Translator %x  %s  [%s] [%s]\n",translator->translator_name,word,phonetic,decoded_phonemes);
-}
+			}
 		}
 		else
 		{
@@ -631,17 +668,18 @@ static char nullstring[] = {0};
 	}
 	else
 	{
-		EncodePhonemes(phonetic,encoded_ph,bad_phoneme);
+		EncodePhonemes(phonetic,encoded_ph,&bad_phoneme);
 		if(strchr(encoded_ph,phonSWITCH) != 0)
 		{
 			flag_codes[n_flag_codes++] = BITNUM_FLAG_ONLY_S;  // don't match on suffixes (except 's') when switching languages
 		}
 
 		// check for errors in the phonemes codes
-		if(bad_phoneme[0] != 0)
+		if(bad_phoneme != 0)
 		{
 			// unrecognised phoneme, report error
-			fprintf(f_log,"%5d: Bad phoneme [%c] (0x%x) in: %s  %s\n",linenum,bad_phoneme[0],bad_phoneme[0],word,phonetic);
+			bad_phoneme_str[utf8_out(bad_phoneme, bad_phoneme_str)] = 0;
+			fprintf(f_log,"%5d: Bad phoneme [%s] (U+%x) in: %s  %s\n",linenum,bad_phoneme_str,bad_phoneme,word,phonetic);
 			error_count++;
 		}
 	}
@@ -658,8 +696,7 @@ static char nullstring[] = {0};
 		ix = utf8_out(wc, word);
 		word[ix] = 0;
 	}
-	else
-	if(word[0] != '_')
+	else if(word[0] != '_')
 	{
 		// convert to lower case, and note if the word is all-capitals
 		int c2;
@@ -673,9 +710,9 @@ static char nullstring[] = {0};
 			ix = utf8_in(&c2,p);
 			if(c2 == 0)
 				break;
-			if(iswupper(c2))
+			if(iswupper2(c2))
 			{
-				utf8_out(towlower(c2),p);
+				utf8_out(towlower2(c2),p);
 			}
 			else
 			{
@@ -879,7 +916,7 @@ static int group3_ix;
 
 
 
-int isHexDigit(int c)
+static int isHexDigit(int c)
 {
 	if((c >= '0') && (c <= '9'))
 		return(c - '0');
@@ -891,8 +928,8 @@ int isHexDigit(int c)
 }
 
 
-static void copy_rule_string(char *string, int &state)
-{//===================================================
+static void copy_rule_string(char *string, int *state_out)
+{//=======================================================
 // state 0: conditional, 1=pre, 2=match, 3=post, 4=phonemes
 	static char *outbuf[5] = {rule_cond, rule_pre, rule_match, rule_post, rule_phonemes};
 	static int next_state[5] = {2,2,4,4,4};
@@ -906,6 +943,7 @@ static void copy_rule_string(char *string, int &state)
 	int  value;
 	int  literal;
 	int  hexdigit_input = 0;
+	int state = *state_out;
 	MNEM_TAB *mr;
 
 	if(string[0] == 0) return;
@@ -1046,8 +1084,7 @@ static void copy_rule_string(char *string, int &state)
 						fprintf(f_log,"%5d: Expected 2 digits after 'L'\n",linenum);
 						error_count++;
 					}
-					else
-					if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
+					else if((c <= 0) || (c >= N_LETTER_GROUPS) || (letterGroupsDefined[(int)c] == 0))
 					{
 						fprintf(f_log,"%5d: Letter group L%.2d not defined\n",linenum,c);
 						error_count++;
@@ -1066,21 +1103,33 @@ static void copy_rule_string(char *string, int &state)
 					break;
 
 				case '$':
-					output[ix++] = RULE_DOLLAR;
-					c = 0;
+					value = 0;
 					mr = mnem_rules;
 					while(mr->mnem != NULL)
 					{
 						len = strlen(mr->mnem);
 						if(memcmp(p, mr->mnem, len) == 0)
 						{
-							c = mr->value;
+							value = mr->value;
 							p += len;
 							break;
 						}
 						mr++;
 					}
-					if(c == 0)
+
+					if(state == 1)
+					{
+						// pre-rule, put the number before the RULE_DOLLAR
+						output[ix++] = value;
+						c = RULE_DOLLAR;
+					}
+					else
+					{
+						output[ix++] = RULE_DOLLAR;
+						c = value;
+					}
+
+					if(value == 0)
 					{
 						fprintf(f_log,"%5d: $ command not recognized\n",linenum);
 						error_count++;
@@ -1126,8 +1175,11 @@ static void copy_rule_string(char *string, int &state)
 						case 'a':
 							sxflags |= SUFX_A;
 							break;
+						case 'm':
+							sxflags |= SUFX_M;
+							break;
 						default:
-							if(isdigit(c))
+							if(IsDigit09(c))
 								value = (value*10) + (c - '0');
 							break;
 						}
@@ -1144,7 +1196,7 @@ static void copy_rule_string(char *string, int &state)
 		if(c == 0) break;
 	}
 
-	state = next_state[state];
+	*state_out = next_state[state];
 }  //  end of copy_rule_string
 
 
@@ -1163,7 +1215,8 @@ static char *compile_rule(char *input)
 	int finish=0;
 	char buf[80];
 	char output[150];
-	unsigned char bad_phoneme[4];
+	int bad_phoneme;
+	char bad_phoneme_str[4];
 
 	buf[0]=0;
 	rule_cond[0]=0;
@@ -1183,14 +1236,14 @@ static char *compile_rule(char *input)
 		case ')':		// end of prefix section
 			*p = 0;
 			state = 1;
-			copy_rule_string(buf,state);
+			copy_rule_string(buf,&state);
 			p = buf;
 			break;
 
 		case '(':		// start of suffix section
 			*p = 0;
 			state = 2;
-			copy_rule_string(buf,state);
+			copy_rule_string(buf,&state);
 			state = 3;
 			p = buf;
 			if(input[ix+1] == ' ')
@@ -1204,14 +1257,14 @@ static char *compile_rule(char *input)
 		case '\r':
 		case 0:			// end of line
 			*p = 0;
-			copy_rule_string(buf,state);
+			copy_rule_string(buf,&state);
 			finish=1;
 			break;
 
 		case '\t':		// end of section section
 		case ' ':
 			*p = 0;
-			copy_rule_string(buf,state);
+			copy_rule_string(buf,&state);
 			p = buf;
 			break;
 
@@ -1241,10 +1294,11 @@ static char *compile_rule(char *input)
 		return(NULL);
 	}
 
-	EncodePhonemes(rule_phonemes,buf,bad_phoneme);
-	if(bad_phoneme[0] != 0)
+	EncodePhonemes(rule_phonemes,buf,&bad_phoneme);
+	if(bad_phoneme != 0)
 	{
-		fprintf(f_log,"%5d: Bad phoneme [%c] in %s\n",linenum,bad_phoneme[0],input);
+		bad_phoneme_str[utf8_out(bad_phoneme, bad_phoneme_str)] = 0;
+		fprintf(f_log,"%5d: Bad phoneme [%s] (U+%x) in: %s\n",linenum,bad_phoneme_str,bad_phoneme,input);
 		error_count++;
 	}
 	strcpy(output,buf);
@@ -1332,16 +1386,16 @@ static char *compile_rule(char *input)
 }  //  end of compile_rule
 
 
-int  string_sorter(char **a, char **b)
+static int string_sorter(char **a, char **b)
 {//===========================================
 	char *pa, *pb;
 	int ix;
 
-   if((ix = strcmp(pa = *a,pb = *b)) != 0)
-	   return(ix);
+	if((ix = strcmp(pa = *a,pb = *b)) != 0)
+		return(ix);
 	pa += (strlen(pa)+1);
 	pb += (strlen(pb)+1);
-   return(strcmp(pa,pb));
+	return(strcmp(pa,pb));
 }   /* end of string_sorter */
 
 
@@ -1432,12 +1486,12 @@ static void print_rule_group(FILE *f_out, int n_rules, char **rules, char *name)
 		if(rule_pre[0] != 0)
 		{
 			p = buf;
-			for(ix=strlen(rule_pre)-1;ix>=0;ix--)
+			for(ix=strlen(rule_pre)-1; ix>=0; ix--)
 				*p++ = rule_pre[ix];
 			sprintf(p,") ");
 			spaces -= strlen(buf);
 			for(ix=0; ix<spaces; ix++)
-			   fputc(' ',f_out);
+				fputc(' ',f_out);
 			fprintf(f_out,"%s",buf);
 			spaces = 0;
 		}
@@ -1541,12 +1595,12 @@ static int compile_lettergroup(char *input, FILE *f_out)
 	int length;
 	int max_length = 0;
 
-	#define N_LETTERGP_ITEMS 200
+#define N_LETTERGP_ITEMS 200
 	char *items[N_LETTERGP_ITEMS];
 	char item_length[N_LETTERGP_ITEMS];
 
 	p = input;
-	if(!isdigit(p[0]) || !isdigit(p[1]))
+	if(!IsDigit09(p[0]) || !IsDigit09(p[1]))
 	{
 		fprintf(f_log,"%5d: Expected 2 digits after '.L'\n",linenum);
 		error_count++;
@@ -1583,6 +1637,7 @@ static int compile_lettergroup(char *input, FILE *f_out)
 		items[n_items] = p_start = p;
 		while((*p & 0xff) > ' ')
 		{
+			if (*p == '_') *p = ' ';   // allow '_' for word break
 			p++;
 		}
 		*p++ = 0;
@@ -1757,37 +1812,37 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
 			break;
 
 		case 2:   //  .replace
+		{
+			int replace1;
+			int replace2;
+			char *p;
+
+			p = buf;
+			replace1 = 0;
+			replace2 = 0;
+			while(isspace2(*p)) p++;
+			ix = 0;
+			while((unsigned char)(*p) > 0x20)   // not space or zero-byte
 			{
-				int replace1;
-				int replace2;
-				char *p;
-
-				p = buf;
-				replace1 = 0;
-				replace2 = 0;
-				while(isspace2(*p)) p++;
-				ix = 0;
-				while((unsigned char)(*p) > 0x20)   // not space or zero-byte
-				{
-					p += utf8_in(&c,p);
-					replace1 += (c << ix);
-					ix += 16;
-				}
-				while(isspace2(*p)) p++;
-				ix = 0;
-				while((unsigned char)(*p) > 0x20)
-				{
-					p += utf8_in(&c,p);
-					replace2 += (c << ix);
-					ix += 16;
-				}
-				if(replace1 != 0)
-				{
-					Write4Bytes(f_out,replace1);   // write as little-endian
-					Write4Bytes(f_out,replace2);   // if big-endian, reverse the bytes in LoadDictionary()
-				}
+				p += utf8_in(&c,p);
+				replace1 += (c << ix);
+				ix += 16;
 			}
-			break;
+			while(isspace2(*p)) p++;
+			ix = 0;
+			while((unsigned char)(*p) > 0x20)
+			{
+				p += utf8_in(&c,p);
+				replace2 += (c << ix);
+				ix += 16;
+			}
+			if(replace1 != 0)
+			{
+				Write4Bytes(f_out,replace1);   // write as little-endian
+				Write4Bytes(f_out,replace2);   // if big-endian, reverse the bytes in LoadDictionary()
+			}
+		}
+		break;
 		}
 	}
 	fclose(f_temp);
@@ -1891,7 +1946,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
 	if((f_out = fopen_log(fname_out,"wb+")) == NULL)
 	{
 		if(fname_err)
-			strcpy(fname_err,fname_in);
+			strcpy(fname_err,fname_out);
 		return(-1);
 	}
 	sprintf(fname_temp,"%s%ctemp",path_home,PATHSEP);
@@ -1927,6 +1982,7 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha
 	fseek(f_out,4,SEEK_SET);
 	Write4Bytes(f_out,offset_rules);
 	fclose(f_out);
+	fflush(f_log);
 
 	LoadDictionary(translator, dict_name, 0);
 
diff --git a/external/espeak/debug.h b/external/espeak/debug.h
old mode 100644
new mode 100755
diff --git a/external/espeak/dictionary.cpp b/external/espeak/dictionary.cpp
old mode 100644
new mode 100755
index d1c88da..255ab5f
--- a/external/espeak/dictionary.cpp
+++ b/external/espeak/dictionary.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -37,8 +37,9 @@
 int dictionary_skipwords;
 char dictionary_name[40];
 
-extern char *print_dictionary_flags(unsigned int *flags);
+extern void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len);
 extern char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
+int HashDictionary(const char *string);
 
 // accented characters which indicate (in some languages) the start of a separate syllable
 //static const unsigned short diereses_list[7] = {L'ä',L'ë',L'ï',L'ö',L'ü',L'ÿ',0};
@@ -48,50 +49,51 @@ static const unsigned short diereses_list[7] = {0xe4,0xeb,0xef,0xf6,0xfc,0xff,0}
 // used for checking for vowels (up to 0x259=schwa)
 #define N_REMOVE_ACCENT  0x25e
 static unsigned char remove_accent[N_REMOVE_ACCENT] = {
-'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i',  // 0c0
-'d','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s',  // 0d0
-'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i',  // 0e0
-'d','n','o','o','o','o','o', 0 ,'o','u','u','u','u','y','t','y',  // 0f0
-
-'a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d',  // 100
-'d','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g',  // 110
-'g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i',  // 120
-'i','i','i','i','j','j','k','k','k','l','l','l','l','l','l','l',  // 130
-'l','l','l','n','n','n','n','n','n','n','n','n','o','o','o','o',  // 140
-'o','o','o','o','r','r','r','r','r','r','s','s','s','s','s','s',  // 150
-'s','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u',  // 160
-'u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s',  // 170
-'b','b','b','b', 0,  0, 'o','c','c','d','d','d','d','d','e','e',  // 180
-'e','f','f','g','g','h','i','i','k','k','l','l','m','n','n','o',  // 190
-'o','o','o','o','p','p','y', 0,  0, 's','s','t','t','t','t','u',  // 1a0
-'u','u','v','y','y','z','z','z','z','z','z','z', 0,  0,  0, 'w',  // 1b0
-'t','t','t','k','d','d','d','l','l','l','n','n','n','a','a','i',  // 1c0
-'i','o','o','u','u','u','u','u','u','u','u','u','u','e','a','a',  // 1d0
-'a','a','a','a','g','g','g','g','k','k','o','o','o','o','z','z',  // 1e0
-'j','d','d','d','g','g','w','w','n','n','a','a','a','a','o','o',  // 1f0
-
-'a','a','a','a','e','e','e','e','i','i','i','i','o','o','o','o',  // 200
-'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h',  // 210
-'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o',  // 220
-'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s',  // 230
-'z', 0,  0, 'b','u','v','e','e','j','j','q','q','r','r','y','y',  // 240
-'a','a','a','b','o','c','d','d','e','e','e','e','e','e' };
+	'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i',  // 0c0
+	'd','n','o','o','o','o','o', 0, 'o','u','u','u','u','y','t','s',  // 0d0
+	'a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i',  // 0e0
+	'd','n','o','o','o','o','o', 0 ,'o','u','u','u','u','y','t','y',  // 0f0
+
+	'a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d',  // 100
+	'd','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g',  // 110
+	'g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i',  // 120
+	'i','i','i','i','j','j','k','k','k','l','l','l','l','l','l','l',  // 130
+	'l','l','l','n','n','n','n','n','n','n','n','n','o','o','o','o',  // 140
+	'o','o','o','o','r','r','r','r','r','r','s','s','s','s','s','s',  // 150
+	's','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u',  // 160
+	'u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s',  // 170
+	'b','b','b','b', 0,  0, 'o','c','c','d','d','d','d','d','e','e',  // 180
+	'e','f','f','g','g','h','i','i','k','k','l','l','m','n','n','o',  // 190
+	'o','o','o','o','p','p','y', 0,  0, 's','s','t','t','t','t','u',  // 1a0
+	'u','u','v','y','y','z','z','z','z','z','z','z', 0,  0,  0, 'w',  // 1b0
+	't','t','t','k','d','d','d','l','l','l','n','n','n','a','a','i',  // 1c0
+	'i','o','o','u','u','u','u','u','u','u','u','u','u','e','a','a',  // 1d0
+	'a','a','a','a','g','g','g','g','k','k','o','o','o','o','z','z',  // 1e0
+	'j','d','d','d','g','g','w','w','n','n','a','a','a','a','o','o',  // 1f0
+
+	'a','a','a','a','e','e','e','e','i','i','i','i','o','o','o','o',  // 200
+	'r','r','r','r','u','u','u','u','s','s','t','t','y','y','h','h',  // 210
+	'n','d','o','o','z','z','a','a','e','e','o','o','o','o','o','o',  // 220
+	'o','o','y','y','l','n','t','j','d','q','a','c','c','l','t','s',  // 230
+	'z', 0,  0, 'b','u','v','e','e','j','j','q','q','r','r','y','y',  // 240
+	'a','a','a','b','o','c','d','d','e','e','e','e','e','e'
+};
 
 
 
 
 
 void strncpy0(char *to,const char *from, int size)
-{//===============================================
-	// strcpy with limit, ensures a zero terminator
+{//===================================================
+// strcpy with limit, ensures a zero terminator
 	strncpy(to,from,size);
 	to[size-1] = 0;
 }
 
 
 int Reverse4Bytes(int word)
-{//========================
-	// reverse the order of bytes from little-endian to big-endian
+{//==========================
+// reverse the order of bytes from little-endian to big-endian
 #ifdef ARCH_BIG
 	int ix;
 	int word2 = 0;
@@ -109,7 +111,7 @@ int Reverse4Bytes(int word)
 
 
 int LookupMnem(MNEM_TAB *table, const char *string)
-{//================================================
+{//==================================================
 	while(table->mnem != NULL)
 	{
 		if(strcmp(string,table->mnem)==0)
@@ -128,9 +130,9 @@ int LookupMnem(MNEM_TAB *table, const char *string)
 
 static void InitGroups(Translator *tr)
 {//===================================
-/* Called after dictionary 1 is loaded, to set up table of entry points for translation rule chains
-	for single-letters and two-letter combinations
-*/
+// Called after dictionary 1 is loaded, to set up table of entry points for translation rule chains
+//	for single-letters and two-letter combinations
+
 
 	int  ix;
 	char *p;
@@ -204,13 +206,11 @@ static void InitGroups(Translator *tr)
 			{
 				tr->groups1[c] = p;
 			}
-			else
-			if(len == 0)
+			else if(len == 0)
 			{
 				tr->groups1[0] = p;
 			}
-			else
-			if(c == 1)
+			else if(c == 1)
 			{
 				// index by offset from letter base
 				tr->groups3[c2 - 1] = p;
@@ -237,7 +237,7 @@ static void InitGroups(Translator *tr)
 }  //  end of InitGroups
 
 #ifdef DATA_FROM_SOURCECODE_FILES
-int LoadDictionary(Translator *tr, const char *name, int no_error)
+int LoadDictionary(Translator *tr, const char *name, int /* no_error */)
 {
 	strcpy (dictionary_name, name);   // currently loaded dictionary name
 	strcpy (tr -> dictionary_name, name);
@@ -285,6 +285,10 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
 		}
 		p++;   // skip over the zero which terminates the list for this hash value
 	}
+	if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size))
+	{
+		Melder_appendError (U"Full dictionary is not installed for '", Melder_peek8to32 (name), U"'");
+	}
 
 	return (0);
 }  //  end of LoadDictionary
@@ -340,7 +344,7 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
 	}
 
 	if((Reverse4Bytes(pw[0]) != N_HASH_DICT) ||
-	   (length <= 0) || (length > 0x8000000))
+			(length <= 0) || (length > 0x8000000))
 	{
 		fprintf(stderr,"Bad data: '%s' (%x length=%x)\n",fname,Reverse4Bytes(pw[0]),length);
 		return(2);
@@ -349,10 +353,6 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
 
 	// set up indices into data_dictrules
 	InitGroups(tr);
-	if(tr->groups1[0] == NULL)
-	{
-		fprintf(stderr,"Error in %s_rules, no default rule group\n",name);
-	}
 
 	// set up hash table for data_dictlist
 	p = &(tr->data_dictlist[8]);
@@ -367,6 +367,11 @@ int LoadDictionary(Translator *tr, const char *name, int no_error)
 		p++;   // skip over the zero which terminates the list for this hash value
 	}
 
+	if((tr->dict_min_size > 0) && (size < (unsigned int)tr->dict_min_size))
+	{
+		fprintf(stderr, "Full dictionary is not installed for '%s'\n", name);
+	}
+
 	return(0);
 }  //  end of LoadDictionary
 
@@ -378,18 +383,18 @@ int HashDictionary(const char *string)
 	This is used to access the dictionary_2 word-lookup dictionary
 */
 {
-   int  c;
+	int  c;
 	int  chars=0;
-   int  hash=0;
+	int  hash=0;
 
-   while((c = (*string++ & 0xff)) != 0)
-   {
-      hash = hash * 8 + c;
-      hash = (hash & 0x3ff) ^ (hash >> 8);    /* exclusive or */
+	while((c = (*string++ & 0xff)) != 0)
+	{
+		hash = hash * 8 + c;
+		hash = (hash & 0x3ff) ^ (hash >> 8);    /* exclusive or */
 		chars++;
-   }
+	}
 
-   return((hash+chars) & 0x3ff);  // a 10 bit hash code
+	return((hash+chars) & 0x3ff);  // a 10 bit hash code
 }   //  end of HashDictionary
 
 
@@ -401,8 +406,8 @@ int HashDictionary(const char *string)
 
 
 
-const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phoneme)
-/***************************************************************************/
+const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme)
+/******************************************************************/
 /* Translate a phoneme string from ascii mnemonics to internal phoneme numbers,
    from 'p' up to next blank .
    Returns advanced 'p'
@@ -419,7 +424,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
 	unsigned int  mnemonic_word;
 
 	if(bad_phoneme != NULL)
-		bad_phoneme[0] = 0;
+		*bad_phoneme = 0;
 
 	// skip initial blanks
 	while(isspace(*p))
@@ -440,7 +445,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
 			if((c = p[1]) == '|')
 			{
 				// treat double || as a word-break symbol, drop through
-            // to the default case with c = '|'
+				// to the default case with c = '|'
 			}
 			else
 			{
@@ -465,11 +470,11 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
 				mnemonic_word = phoneme_tab[ix]->mnemonic;
 
 				while(((c = p[count]) > ' ') && (count < 4) &&
-										(c == ((mnemonic_word >> (count*8)) & 0xff)))
+						(c == ((mnemonic_word >> (count*8)) & 0xff)))
 					count++;
 
 				if((count > max) &&
-					((count == 4) || (((mnemonic_word >> (count*8)) & 0xff)==0)))
+						((count == 4) || (((mnemonic_word >> (count*8)) & 0xff)==0)))
 				{
 					max = count;
 					max_ph = phoneme_tab[ix]->code;
@@ -481,8 +486,7 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
 				// not recognised, report and ignore
 				if(bad_phoneme != NULL)
 				{
-					bad_phoneme[0] = *p;
-					bad_phoneme[1] = 0;
+					utf8_in(bad_phoneme, p);
 				}
 				*outptr++ = 0;
 				return(p+1);
@@ -527,16 +531,15 @@ const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phone
 
 
 void DecodePhonemes(const char *inptr, char *outptr)
-//==================================================
+{//==================================================
 // Translate from internal phoneme codes into phoneme mnemonics
-{
 	unsigned char phcode;
 	unsigned char c;
 	unsigned int  mnem;
 	PHONEME_TAB *ph;
 	static const char *stress_chars = "==,,'*  ";
 
-sprintf(outptr,"* ");
+	sprintf(outptr,"* ");
 	while((phcode = *inptr++) > 0)
 	{
 		if(phcode == 255)
@@ -573,24 +576,27 @@ sprintf(outptr,"* ");
 
 // using Kirschenbaum to IPA translation, ascii 0x20 to 0x7f
 unsigned short ipa1[96] = {
-0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f,
-0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
-0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254,
-0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
-0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
-0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f
+	0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x29,0x27e,0x2b,0x2cc,0x2d,0x2e,0x2f,
+	0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
+	0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254,
+	0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
+	0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
+	0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f
 };
 
+#define N_PHON_OUT  500  // realloc increment
+static char *phon_out_buf = NULL;   // passes the result of GetTranslatedPhonemeString()
+static int phon_out_size = 0;
+
 
-char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa)
-{//=====================================================================================
+char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags)
+{//===================================================================================================
 	int c;
 	int mnem;
 	int len;
 	int first;
 	int ix = 0;
 	char *p;
-	unsigned int ipa_control=0;  // first byte of ipa string may control the phoneme name interpretation. 0x20 = ignore this phoneme
 	PHONEME_DATA phdata;
 
 	if(ph->code == phonEND_WORD)
@@ -622,20 +628,28 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
 			InterpretPhoneme(NULL, 0, plist, &phdata, NULL);
 		}
 
-		len = strlen(phdata.ipa_string);
+		p = phdata.ipa_string;
+		if(*p == 0x20)
+		{
+			// indicates no name for this phoneme
+			*phon_out = 0;
+			return(phon_out);
+		}
+		if((*p != 0) && ((*p & 0xff) < 0x20))
+		{
+			// name starts with a flags byte
+			if(flags != NULL)
+				*flags = *p;
+			p++;
+		}
+
+		len = strlen(p);
 		if(len > 0)
 		{
-			if((ipa_control = phdata.ipa_string[0]) > 0x20)
-			{
-				strcpy(&phon_out[ix], phdata.ipa_string);
-				ix += len;
-			}
-			if(ipa_control >= 0x20)
-			{
-				phon_out = &phon_out[ix];
-				*phon_out = 0;
-				return(phon_out);  // 0x20 = ignore phoneme
-			}
+			strcpy(phon_out, p);
+			phon_out += len;
+			*phon_out = 0;
+			return(phon_out);
 		}
 	}
 
@@ -655,7 +669,7 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
 				break;   // # is subscript-h, but only for consonants
 
 			// ignore digits after the first character
-			if(!first && isdigit(c))
+			if(!first && IsDigit09(c))
 				continue;
 
 			if((c >= 0x20) && (c < 128))
@@ -677,96 +691,156 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
 
 
 
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
-{//=========================================================================
-/* Can be called after a clause has been translated into phonemes, in order
-   to display the clause in phoneme mnemonic form.
-*/
+const char *GetTranslatedPhonemeString(int phoneme_mode)
+{//=======================================================
+	/* Called after a clause has been translated into phonemes, in order
+	   to display the clause in phoneme mnemonic form.
+
+	   phoneme_mode  bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+	                 bit  4:   0=eSpeak phoneme names, 1=IPA
+	*/
 
 	int  ix;
 	unsigned int  len;
-	unsigned int  max_len;
 	int  phon_out_ix=0;
 	int  stress;
-	unsigned int c;
+	int c;
+	char *p;
 	char *buf;
+	int count;
+	int flags;
+	int use_ipa;
+	int use_tie;
+	int separate_phonemes = 0;
 	char phon_buf[30];
+	char phon_buf2[30];
 	PHONEME_LIST *plist;
 
 	static const char *stress_chars = "==,,''";
+	static const int char_tie[] = {0x0361, 0x200d};  // combining-double-inverted-breve, zero-width-joiner
 
-	if(phon_out != NULL)
+	use_ipa = phoneme_mode & 0x10;
+	use_tie = phoneme_mode & 0x0f;
+
+	if(phon_out_buf == NULL)
 	{
-		for(ix=1; ix<(n_phoneme_list-2); ix++)
+		phon_out_size = N_PHON_OUT;
+		if((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL)
 		{
-			buf = phon_buf;
+			phon_out_size = 0;
+			return("");
+		}
+	}
 
-			plist = &phoneme_list[ix];
-			if(plist->newword)
-				*buf++ = ' ';
+	if(use_tie >= 3)
+	{
+		// separate individual phonemes with underscores
+		separate_phonemes = '_';
+		use_tie = 0;
+	}
 
-			if(plist->synthflags & SFLAG_SYLLABLE)
-			{
-				if((stress = plist->stresslevel) > 1)
-				{
-					c = 0;
-					if(stress > 5) stress = 5;
 
-					if(use_ipa)
-					{
-						c = 0x2cc;  // ipa, secondary stress
-						if(stress > 3)
-							c = 0x02c8;  // ipa, primary stress
-					}
-					else
-					{
-						c = stress_chars[stress];
-					}
+	for(ix=1; ix<(n_phoneme_list-2); ix++)
+	{
+		buf = phon_buf;
 
-					if(c != 0)
-					{
-						buf += utf8_out(c, buf);
-					}
+		plist = &phoneme_list[ix];
+
+		WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
+		if(plist->newword)
+			*buf++ = ' ';
+		else
+		{
+			if((separate_phonemes != 0) && (ix > 1))
+			{
+				utf8_in(&c, phon_buf2);
+				if((c < 0x2b0) || (c > 0x36f))  // not if the phoneme starts with a superscript letter
+				{
+					*buf++ = separate_phonemes;
 				}
 			}
+		}
 
-			buf = WritePhMnemonic(buf, plist->ph, plist, use_ipa);
-
-			if(plist->ph->code != phonSWITCH)
+		if(plist->synthflags & SFLAG_SYLLABLE)
+		{
+			if((stress = plist->stresslevel) > 1)
 			{
-				if(plist->synthflags & SFLAG_LENGTHEN)
+				c = 0;
+				if(stress > 5) stress = 5;
+
+				if(use_ipa)
 				{
-					buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa);
+					c = 0x2cc;  // ipa, secondary stress
+					if(stress > 3)
+						c = 0x02c8;  // ipa, primary stress
 				}
-				if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
+				else
 				{
-					// syllablic consonant
-					buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa);
+					c = stress_chars[stress];
 				}
-				if(plist->tone_ph > 0)
+
+				if(c != 0)
 				{
-					buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa);
+					buf += utf8_out(c, buf);
+//						if(separate_phonemes)
+//							*buf++ = separate_phonemes;
 				}
 			}
+		}
 
-			len = buf - phon_buf;
-			max_len = (n_phon_out - phon_out_ix - 5);   // allow for " ..." and zero byte terminator
-			if(len > max_len)
+		flags = 0;
+		count = 0;
+		for(p=phon_buf2; *p != 0;)
+		{
+			p += utf8_in(&c, p);
+			if(use_tie > 0)
 			{
-				strcpy(&phon_buf[max_len], " ...");
-				len = max_len + 4;
+				// look for non-inital alphabetic character, but not diacritic, superscript etc.
+				if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c))
+				{
+					buf += utf8_out(char_tie[use_tie-1], buf);
+				}
 			}
-			phon_buf[len] = 0;
-			strcpy(&phon_out[phon_out_ix], phon_buf);
-			phon_out_ix += len;
+			buf += utf8_out(c, buf);
+			count++;
+		}
 
-			if(len > max_len)
+		if(plist->ph->code != phonSWITCH)
+		{
+			if(plist->synthflags & SFLAG_LENGTHEN)
 			{
-				break;
+				buf = WritePhMnemonic(buf, phoneme_tab[phonLENGTHEN], NULL, use_ipa, NULL);
+			}
+			if((plist->synthflags & SFLAG_SYLLABLE) && (plist->type != phVOWEL))
+			{
+				// syllablic consonant
+				buf = WritePhMnemonic(buf, phoneme_tab[phonSYLLABIC], NULL, use_ipa, NULL);
+			}
+			if(plist->tone_ph > 0)
+			{
+				buf = WritePhMnemonic(buf, phoneme_tab[plist->tone_ph], NULL, use_ipa, NULL);
 			}
 		}
-		phon_out[phon_out_ix] = 0;
+
+		len = buf - phon_buf;
+		if((phon_out_ix + len) >= phon_out_size)
+		{
+			// enlarge the phoneme buffer
+			phon_out_size = phon_out_ix + len + N_PHON_OUT;
+			if((phon_out_buf = (char *)realloc(phon_out_buf, phon_out_size)) == NULL)
+			{
+				phon_out_size = 0;
+				return("");
+			}
+		}
+
+		phon_buf[len] = 0;
+		strcpy(&phon_out_buf[phon_out_ix], phon_buf);
+		phon_out_ix += len;
 	}
+	phon_out_buf[phon_out_ix] = 0;
+
+	return(phon_out_buf);
 }  // end of GetTranslatedPhonemeString
 
 
@@ -780,7 +854,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
 
 static int IsLetterGroup(Translator *tr, char *word, int group, int pre)
 {//=====================================================================
-	// match the word against a list of utf-8 strings
+// match the word against a list of utf-8 strings
 	char *p;
 	char *w;
 	int  len=0;
@@ -800,7 +874,7 @@ static int IsLetterGroup(Translator *tr, char *word, int group, int pre)
 		{
 			w = word;
 		}
-		while(*p == *w)
+		while((*p == *w) && (*w != 0))
 		{
 			w++;
 			p++;
@@ -835,7 +909,7 @@ static int IsLetter(Translator *tr, int letter, int group)
 	if(tr->letter_bits_offset > 0)
 	{
 		if(((letter2 = (letter - tr->letter_bits_offset)) > 0) && (letter2 < 0x100))
-				letter = letter2;
+			letter = letter2;
 		else
 			return(0);
 	}
@@ -879,17 +953,18 @@ static int Unpronouncable2(Translator *tr, char *word)
 
 int Unpronouncable(Translator *tr, char *word, int posn)
 {//=====================================================
-/* Determines whether a word in 'unpronouncable', i.e. whether it should
-	be spoken as individual letters.
+	/* Determines whether a word in 'unpronouncable', i.e. whether it should
+		be spoken as individual letters.
 
-	This function may be language specific. This is a generic version.
-*/
+		This function may be language specific. This is a generic version.
+	*/
 
 	int  c;
 	int  c1=0;
 	int  vowel_posn=9;
 	int  index;
 	int  count;
+	ALPHABET *alphabet;
 
 	utf8_in(&c,word);
 	if((tr->letter_bits_offset > 0) && (c < 0x241))
@@ -898,6 +973,12 @@ int Unpronouncable(Translator *tr, char *word, int posn)
 		return(0);  // so we can re-translate the word as English
 	}
 
+	if(((alphabet = AlphabetFromChar(c)) != NULL)  && (alphabet->offset != tr->letter_bits_offset))
+	{
+		// Character is not in our alphabet
+		return(0);
+	}
+
 	if(tr->langopts.param[LOPT_UNPRONOUNCABLE] == 1)
 		return(0);
 
@@ -917,7 +998,13 @@ int Unpronouncable(Translator *tr, char *word, int posn)
 
 		if(count==0)
 			c1 = c;
-		count++;
+
+		if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3))
+		{
+			// don't count apostrophe
+		}
+		else
+			count++;
 
 		if(IsVowel(tr, c))
 		{
@@ -925,7 +1012,7 @@ int Unpronouncable(Translator *tr, char *word, int posn)
 			break;
 		}
 
-		if((c != '\'') && !iswalpha(c))
+		if((c != '\'') && !iswalpha2(c))
 			return(0);
 	}
 
@@ -941,7 +1028,7 @@ int Unpronouncable(Translator *tr, char *word, int posn)
 	if(vowel_posn > (tr->langopts.max_initial_consonants+1))
 		return(1);  // no vowel, or no vowel in first few letters
 
-return(0);
+	return(0);
 
 }   /* end of Unpronounceable */
 
@@ -954,7 +1041,7 @@ return(0);
 
 
 
-static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int &vowel_count, int &stressed_syllable, int control)
+static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *vowel_stress, int *vowel_count, int *stressed_syllable, int control)
 {//=================================================================================================================================================
 // control = 1, set stress to 1 for forced unstressed vowels
 	unsigned char phcode;
@@ -981,7 +1068,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 			{
 				/* primary stress on preceeding vowel */
 				j = count - 1;
-				while((j > 0) && (stressed_syllable == 0) && (vowel_stress[j] < 4))
+				while((j > 0) && (*stressed_syllable == 0) && (vowel_stress[j] < 4))
 				{
 					if((vowel_stress[j] != 0) && (vowel_stress[j] != 1))
 					{
@@ -1007,7 +1094,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 			}
 			else
 			{
-				if((ph->std_length < 4) || (stressed_syllable == 0))
+				if((ph->std_length < 4) || (*stressed_syllable == 0))
 				{
 					stress = ph->std_length;
 
@@ -1033,8 +1120,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 			count++;
 			stress = -1;
 		}
-		else
-		if(phcode == phonSYLLABIC)
+		else if(phcode == phonSYLLABIC)
 		{
 			// previous consonant phoneme is syllablic
 			vowel_stress[count] = (char)stress;
@@ -1048,14 +1134,14 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 	*ph_out = 0;
 
 	/* has the position of the primary stress been specified by $1, $2, etc? */
-	if(stressed_syllable > 0)
+	if(*stressed_syllable > 0)
 	{
-		if(stressed_syllable >= count)
-			stressed_syllable = count-1;   // the final syllable
+		if(*stressed_syllable >= count)
+			*stressed_syllable = count-1;   // the final syllable
 
-		vowel_stress[stressed_syllable] = 4;
+		vowel_stress[*stressed_syllable] = 4;
 		max_stress = 4;
-		primary_posn = stressed_syllable;
+		primary_posn = *stressed_syllable;
 	}
 
 	if(max_stress == 5)
@@ -1065,7 +1151,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 		{
 			if(vowel_stress[ix] == 4)
 			{
-				if(tr->langopts.stress_flags & 0x20000)
+				if(tr->langopts.stress_flags & S_PRIORITY_STRESS)
 					vowel_stress[ix] = 1;
 				else
 					vowel_stress[ix] = 3;
@@ -1080,15 +1166,16 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, signed char *
 		max_stress = 4;
 	}
 
-	stressed_syllable = primary_posn;
-	vowel_count = count;
+	*stressed_syllable = primary_posn;
+	*vowel_count = count;
 	return(max_stress);
 }  // end of GetVowelStress
 
 
 
 static char stress_phonemes[] = {phonSTRESS_D, phonSTRESS_U, phonSTRESS_2, phonSTRESS_3,
-		phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC};
+								 phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC
+								};
 
 
 void ChangeWordStress(Translator *tr, char *word, int new_stress)
@@ -1102,7 +1189,7 @@ void ChangeWordStress(Translator *tr, char *word, int new_stress)
 	signed char vowel_stress[N_WORD_PHONEMES/2];
 
 	strcpy((char *)phonetic,word);
-	max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 0);
+	max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 0);
 
 	if(new_stress >= 4)
 	{
@@ -1152,8 +1239,8 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
    'output' is used for input and output
 
    'dictionary_flags' has bits 0-3   position of stressed vowel (if > 0)
-                                     or unstressed (if == 7) or syllables 1 and 2 (if == 6)
-                          bits 8...  dictionary flags
+									 or unstressed (if == 7) or syllables 1 and 2 (if == 6)
+						  bits 8...  dictionary flags
 
    If 'tonic' is set (>= 0), replace highest stress by this value.
 
@@ -1176,13 +1263,13 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 	int final_ph;
 	int final_ph2;
 	int mnem;
-	int mnem2;
 	int post_tonic;   // currently not used
 	int opt_length;
 	int done;
 	int stressflags;
 	int dflags = 0;
 	int first_primary;
+	int long_vowel;
 
 	signed char vowel_stress[N_WORD_PHONEMES/2];
 	char syllable_weight[N_WORD_PHONEMES/2];
@@ -1229,15 +1316,9 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		unstressed_word = 1;
 	}
 
-	max_stress = GetVowelStress(tr, phonetic, vowel_stress, vowel_count, stressed_syllable, 1);
+	max_stress = GetVowelStress(tr, phonetic, vowel_stress, &vowel_count, &stressed_syllable, 1);
 	if((max_stress < 0) && dictionary_flags)
 	{
-		if((tr->langopts.stress_flags & 1) && (vowel_count == 2))
-		{
-			// lang=fr: don't stress monosyllables except at end-of-clause
-			vowel_stress[1] = 0;
-			dictionary_flags[0] |= FLAG_STRESS_END2;
-		}
 		max_stress = 0;
 	}
 
@@ -1272,6 +1353,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		}
 	}
 
+
 	switch(tr->langopts.stress_rule)
 	{
 	case 8:
@@ -1315,33 +1397,40 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 			{
 				stressed_syllable = vowel_count - 2;
 
-				if(stressflags & 0x300)
+				if(stressflags & (S_FINAL_SPANISH | S_FINAL_STRESS_C))
 				{
 					// LANG=Spanish, stress on last vowel if the word ends in a consonant other than 'n' or 's'
 					if(phoneme_tab[final_ph]->type != phVOWEL)
 					{
-						if(stressflags & 0x100)
+						if(stressflags & S_FINAL_STRESS_C)
 						{
 							stressed_syllable = vowel_count - 1;
 						}
 						else
 						{
 							mnem = phoneme_tab[final_ph]->mnemonic;
-							mnem2 = phoneme_tab[final_ph2]->mnemonic;
 
-							if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL))
+							if(tr->translator_name == L('a','n'))
 							{
-								// -ns  stress remains on penultimate syllable
+								if(((mnem != 's') && (mnem !='n')) || phoneme_tab[final_ph2]->type != phVOWEL)
+									stressed_syllable = vowel_count - 1;   // stress on last syllable
 							}
 							else
-							if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL))
 							{
-								stressed_syllable = vowel_count - 1;
+								if((mnem == 's') && (phoneme_tab[final_ph2]->type == phNASAL))
+								{
+									// -ns  stress remains on penultimate syllable
+								}
+								else if(((phoneme_tab[final_ph]->type != phNASAL) && (mnem != 's')) || (phoneme_tab[final_ph2]->type != phVOWEL))
+								{
+									stressed_syllable = vowel_count - 1;
+								}
 							}
 						}
 					}
 				}
-				if(stressflags & 0x80000)
+
+				if(stressflags & S_FINAL_LONG)
 				{
 					// stress on last syllable if it has a long vowel, but previous syllable has a short vowel
 					if(vowel_length[vowel_count - 1] > vowel_length[vowel_count - 2])
@@ -1374,7 +1463,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		}
 		break;
 
-   case 3:
+	case 3:
 		// stress on last vowel
 		if(stressed_syllable == 0)
 		{
@@ -1425,8 +1514,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 			{
 				if(phoneme_tab[final_ph]->type == phVOWEL)
 					stressed_syllable = guess_ru_v[vowel_count];
-				else
-				if(phoneme_tab[final_ph]->type == phSTOP)
+				else if(phoneme_tab[final_ph]->type == phSTOP)
 					stressed_syllable = guess_ru_t[vowel_count];
 				else
 					stressed_syllable = guess_ru[vowel_count];
@@ -1462,8 +1550,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 				// the only double=heavy syllable is the final syllable, so stress this
 				stressed_syllable = vowel_count-1;
 			}
-			else
-			if(max_weight <= 0)
+			else if(max_weight <= 0)
 			{
 				// all syllables, exclusing the last, are light. Stress the first syllable
 				stressed_syllable = 1;
@@ -1498,6 +1585,50 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 				vowel_stress[ix] = 4;
 		}
 		break;
+
+	case 12:  // LANG=kl (Greenlandic)
+		long_vowel = 0;
+		for(ix=1; ix < vowel_count; ix++)
+		{
+			if(vowel_stress[ix] == 4)
+				vowel_stress[ix] = 3;    // change marked stress (consonant clusters) to secondary (except the last)
+
+			if(vowel_length[ix] > 0)
+			{
+				long_vowel = ix;
+				vowel_stress[ix] = 3;    // give secondary stress to all long vowels
+			}
+		}
+
+		// 'stressed_syllable' gives the last marked stress
+		if(stressed_syllable == 0)
+		{
+			// no marked stress, choose the last long vowel
+			if(long_vowel > 0)
+				stressed_syllable = long_vowel;
+			else
+			{
+				// no long vowels or consonant clusters
+				if(vowel_count > 5)
+					stressed_syllable = vowel_count - 3;  // more than 4 syllables
+				else
+					stressed_syllable = vowel_count - 1;
+			}
+		}
+		vowel_stress[stressed_syllable] = 4;
+		max_stress = 4;
+		break;
+
+	case 13:  // LANG=ml, 1st unless 1st vowel is short and 2nd is long
+		if(stressed_syllable == 0)
+		{
+			stressed_syllable = 1;
+			if((vowel_length[1] == 0) && (vowel_count > 2) && (vowel_length[2] > 0))
+				stressed_syllable = 2;
+			vowel_stress[stressed_syllable] = 4;
+			max_stress = 4;
+		}
+		break;
 	}
 
 	/* now guess the complete stress pattern */
@@ -1507,21 +1638,24 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		stress = 3;
 
 
-	if((stressflags & 0x1000) && (vowel_count == 2))
+	if(unstressed_word == 0)
 	{
-		// Two syllable word, if one syllable has primary stress, then give the other secondary stress
-		if(vowel_stress[1] == 4)
-			vowel_stress[2] = 3;
-		if(vowel_stress[2] == 4)
-			vowel_stress[1] = 3;
-	}
+		if((stressflags & S_2_SYL_2) && (vowel_count == 3))
+		{
+			// Two syllable word, if one syllable has primary stress, then give the other secondary stress
+			if(vowel_stress[1] == 4)
+				vowel_stress[2] = 3;
+			if(vowel_stress[2] == 4)
+				vowel_stress[1] = 3;
+		}
 
-	if((stressflags & 0x2000) && (vowel_stress[1] < 0))
-	{
-		// If there is only one syllable before the primary stress, give it a secondary stress
-		if((vowel_count > 2) && (vowel_stress[2] >= 4))
+		if((stressflags & S_INITIAL_2) && (vowel_stress[1] < 0))
 		{
-			vowel_stress[1] = 3;
+			// If there is only one syllable before the primary stress, give it a secondary stress
+			if((vowel_count > 3) && (vowel_stress[2] >= 4))
+			{
+				vowel_stress[1] = 3;
+			}
 		}
 	}
 
@@ -1531,26 +1665,24 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 	{
 		if(vowel_stress[v] < 0)
 		{
-			if((stressflags & 0x10) && (stress < 4) && (v == vowel_count-1))
+			if((stressflags & S_FINAL_NO_2) && (stress < 4) && (v == vowel_count-1))
 			{
 				// flag: don't give secondary stress to final vowel
 			}
-			else
-			if((stressflags & 0x8000) && (done == 0))
+			else if((stressflags & 0x8000) && (done == 0))
 			{
 				vowel_stress[v] = (char)stress;
 				done =1;
 				stress = 3;  /* use secondary stress for remaining syllables */
 			}
-			else
-			if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2))))
+			else if((vowel_stress[v-1] <= 1) && ((vowel_stress[v+1] <= 1) || ((stress == 4) && (vowel_stress[v+1] <= 2))))
 			{
 				/* trochaic: give stress to vowel surrounded by unstressed vowels */
 
-				if((stress == 3) && (stressflags & 0x20))
+				if((stress == 3) && (stressflags & S_NO_AUTO_2))
 					continue;      // don't use secondary stress
 
-				if((v > 1) && (stressflags & 0x40) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0))
+				if((v > 1) && (stressflags & S_2_TO_HEAVY) && (syllable_weight[v]==0) && (syllable_weight[v+1]>0))
 				{
 					// don't put secondary stress on a light syllable which is followed by a heavy syllable
 					continue;
@@ -1568,8 +1700,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		{
 			if(first_primary == 0)
 				first_primary = v;
-			else
-			if(stressflags & S_FIRST_PRIMARY)
+			else if(stressflags & S_FIRST_PRIMARY)
 			{
 				// reduce primary stresses after the first to secondary
 				vowel_stress[v] = 3;
@@ -1614,8 +1745,11 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 	if(!(control & 1) && ((ph = phoneme_tab[*p]) != NULL))
 	{
 
-		if(ph->type == phSTRESS)
-			ph = phoneme_tab[p[1]];
+		while((ph->type == phSTRESS) || (*p == phonEND_WORD))
+		{
+			p++;
+			ph = phoneme_tab[p[0]];
+		}
 
 #ifdef deleted
 		int gap = tr->langopts.word_gap & 0x700;
@@ -1626,19 +1760,19 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		}
 		else
 #endif
-		if((tr->langopts.vowel_pause & 0x30) && (ph->type == phVOWEL))
-		{
-			// word starts with a vowel
-
-			if((tr->langopts.vowel_pause & 0x20) && (vowel_stress[1] >= 4))
+			if((tr->langopts.vowel_pause & 0x30) && (ph->type == phVOWEL))
 			{
+				// word starts with a vowel
+
+				if((tr->langopts.vowel_pause & 0x20) && (vowel_stress[1] >= 4))
+				{
 					*output++ = phonPAUSE_NOLINK;   // not to be replaced by link
+				}
+				else
+				{
+					*output++ = phonPAUSE_VSHORT;     // break, but no pause
+				}
 			}
-			else
-			{
-				*output++ = phonPAUSE_VSHORT;     // break, but no pause
-			}
-		}
 	}
 
 	p = phonetic;
@@ -1655,8 +1789,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 		{
 			tr->prev_last_stress = 0;
 		}
-		else
-		if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC))
+		else if(((ph->type == phVOWEL) && !(ph->phflags & phNONSYLLABIC)) || (*p == phonSYLLABIC))
 		{
 			// a vowel, or a consonant followed by a syllabic consonant marker
 
@@ -1668,19 +1801,17 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 
 			if(v_stress <= 1)
 			{
-				if((v > 1) && (max_stress >= 2) && (stressflags & 4) && (v == (vowel_count-1)))
+				if((v > 1) && (max_stress >= 2) && (stressflags & S_FINAL_DIM) && (v == (vowel_count-1)))
 				{
 					// option: mark unstressed final syllable as diminished
 					v_stress = 0;
 				}
-				else
-				if((stressflags & 2) || (v == 1) || (v == (vowel_count-1)))
+				else if((stressflags & S_NO_DIM) || (v == 1) || (v == (vowel_count-1)))
 				{
 					// first or last syllable, or option 'don't set diminished stress'
 					v_stress = 1;
 				}
-				else
-				if((v == (vowel_count-2)) && (vowel_stress[vowel_count-1] <= 1))
+				else if((v == (vowel_count-2)) && (vowel_stress[vowel_count-1] <= 1))
 				{
 					// penultimate syllable, followed by an unstressed final syllable
 					v_stress = 1;
@@ -1688,7 +1819,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 				else
 				{
 					// unstressed syllable within a word
-					if((vowel_stress[v-1] < 0) || ((stressflags & 0x10000) == 0))
+					if((vowel_stress[v-1] < 0) || ((stressflags & S_MID_DIM) == 0))
 					{
 						v_stress = 0;      /* change to 0 (diminished stress) */
 						vowel_stress[v] = v_stress;
@@ -1716,8 +1847,7 @@ void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags,
 					if(v != max_stress_posn)
 						shorten = 1;
 				}
-				else
-				if(v_stress < 4)
+				else if(v_stress < 4)
 				{
 					// only allow lengthen indicator if stress >= 4.
 					shorten = 1;
@@ -1793,7 +1923,7 @@ void AppendPhonemes(Translator *tr, char *string, int size, const char *ph)
 			if(phoneme_tab[c]->type == phVOWEL)
 			{
 				if(((phoneme_tab[c]->phflags & phUNSTRESSED) == 0) &&
-					(unstress_mark == 0))
+						(unstress_mark == 0))
 				{
 					tr->word_stressed_count++;
 				}
@@ -1853,6 +1983,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 	int add_points;
 	int command;
 	int check_atstart;
+	unsigned int *flags;
 
 	MatchRecord match;
 	static MatchRecord best;
@@ -2061,8 +2192,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 						add_points = (20-distance_right);
 						post_ptr += letter_xbytes;
 					}
-					else
-					if(tr->langopts.tone_numbers)
+					else if(tr->langopts.tone_numbers)
 					{
 						// also match if there is no digit
 						add_points = (20-distance_right);
@@ -2073,7 +2203,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 					break;
 
 				case RULE_NONALPHA:
-					if(!iswalpha(letter_w))
+					if(!iswalpha2(letter_w))
 					{
 						add_points = (21-distance_right);
 						post_ptr += letter_xbytes;
@@ -2091,12 +2221,18 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 
 				case RULE_DOLLAR:
 					command = *rule++;
-					if(command == 0x01)
+					if(command == DOLLAR_UNPR)
 					{
 						match.end_type = SUFX_UNPRON;    // $unpron
 					}
-					else
-					if((command & 0xf0) == 0x10)
+					else if(command == DOLLAR_NOPREFIX)   // $noprefix
+					{
+						if(word_flags & FLAG_PREFIX_REMOVED)
+							failed = 1;             // a prefix has been removed
+						else
+							add_points = 1;
+					}
+					else if((command & 0xf0) == 0x10)
 					{
 						// $w_alt
 						if(dict_flags & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
@@ -2104,17 +2240,20 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 						else
 							failed = 1;
 					}
-					else
-					if((command & 0xf0) == 0x20)
+					else if(((command & 0xf0) == 0x20) || (command == DOLLAR_LIST))
 					{
-						// $p_alt
+						// $list or $p_alt
 						// make a copy of the word up to the post-match characters
 						ix = *word - word_start + consumed + group_length + 1;
 						memcpy(word_buf, word_start-1, ix);
 						word_buf[ix] = ' ';
 						word_buf[ix+1] = 0;
+						LookupFlags(tr, &word_buf[1], &flags);
 
-						if(LookupFlags(tr, &word_buf[1]) & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
+						if((command == DOLLAR_LIST) && (flags[0] & FLAG_FOUND) && !(flags[1] & FLAG_ONLY))
+							add_points = 23;
+						else
+						if(flags[0] & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
 							add_points = 23;
 						else
 							failed = 1;
@@ -2131,72 +2270,72 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 					break;
 
 				case RULE_SYLLABLE:
-					{
-						/* more than specified number of vowel letters to the right */
-						char *p = post_ptr + letter_xbytes;
-						int vowel_count=0;
+				{
+					/* more than specified number of vowel letters to the right */
+					char *p = post_ptr + letter_xbytes;
+					int vowel_count=0;
 
-						syllable_count = 1;
-						while(*rule == RULE_SYLLABLE)
-						{
-							rule++;
-							syllable_count+=1;   /* number of syllables to match */
-						}
-						vowel = 0;
-						while(letter_w != RULE_SPACE)
+					syllable_count = 1;
+					while(*rule == RULE_SYLLABLE)
+					{
+						rule++;
+						syllable_count+=1;   /* number of syllables to match */
+					}
+					vowel = 0;
+					while(letter_w != RULE_SPACE)
+					{
+						if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2))
 						{
-							if((vowel==0) && IsLetter(tr, letter_w,LETTERGP_VOWEL2))
-							{
-								// this is counting vowels which are separated by non-vowel letters
-								vowel_count++;
-							}
-							vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2);
-							p += utf8_in(&letter_w,p);
+							// this is counting vowels which are separated by non-vowel letters
+							vowel_count++;
 						}
-						if(syllable_count <= vowel_count)
-							add_points = (18+syllable_count-distance_right);
-						else
-							failed = 1;
+						vowel = IsLetter(tr, letter_w,LETTERGP_VOWEL2);
+						p += utf8_in(&letter_w,p);
 					}
-					break;
+					if(syllable_count <= vowel_count)
+						add_points = (18+syllable_count-distance_right);
+					else
+						failed = 1;
+				}
+				break;
 
 				case RULE_NOVOWELS:
+				{
+					char *p = post_ptr + letter_xbytes;
+					while(letter_w != RULE_SPACE)
 					{
-						char *p = post_ptr + letter_xbytes;
-						while(letter_w != RULE_SPACE)
+						if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
 						{
-							if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
-							{
-								failed = 1;
-								break;
-							}
-							p += utf8_in(&letter_w,p);
+							failed = 1;
+							break;
 						}
-						if(!failed)
-							add_points = (19-distance_right);
+						p += utf8_in(&letter_w,p);
 					}
-					break;
+					if(!failed)
+						add_points = (19-distance_right);
+				}
+				break;
 
 				case RULE_SKIPCHARS:
+				{
+					// Used for lang=Tamil, used to match on the next word after an unknown word ending
+					// only look until the end of the word (including the end-of-word marker)
+					// Jx  means 'skip characters until x', where 'x' may be '_' for 'end of word'
+					char *p = post_ptr + letter_xbytes;
+					char *p2 = p;
+					int rule_w;            // skip characters until this
+					utf8_in(&rule_w,rule);
+					while((letter_w != rule_w) && (letter_w != RULE_SPACE))
 					{
-						// Used for lang=Tamil, used to match on the next word after an unknown word ending
-						// only look until the end of the word (including the end-of-word marker)
-						// Jx  means 'skip characters until x', where 'x' may be '_' for 'end of word'
-						char *p = post_ptr + letter_xbytes;
-						char *p2 = p;
-						int rule_w;            // skip characters until this
-						utf8_in(&rule_w,rule);
-						while((letter_w != rule_w) && (letter_w != RULE_SPACE))
-						{
-							p2 = p;
-							p += utf8_in(&letter_w,p);
-						}
-						if(letter_w == rule_w)
-						{
-							post_ptr = p2;
-						}
+						p2 = p;
+						p += utf8_in(&letter_w,p);
 					}
-					break;
+					if(letter_w == rule_w)
+					{
+						post_ptr = p2;
+					}
+				}
+				break;
 
 				case RULE_INC_SCORE:
 					add_points = 20;      // force an increase in points
@@ -2215,20 +2354,20 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 					break;
 
 				case RULE_ENDING:
-					{
-						int end_type;
-						// next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length
-						end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f);
+				{
+					int end_type;
+					// next 3 bytes are a (non-zero) ending type. 2 bytes of flags + suffix length
+					end_type = (rule[0] << 16) + ((rule[1] & 0x7f) << 8) + (rule[2] & 0x7f);
 
-						if((tr->word_vowel_count == 0) && !(end_type & SUFX_P) && (tr->langopts.param[LOPT_SUFFIX] & 1))
-							failed = 1;	// don't match a suffix rule if there are no previous syllables (needed for lang=tr).
-						else
-						{
-							match.end_type = end_type;
-							rule += 3;
-						}
+					if((tr->word_vowel_count == 0) && !(end_type & SUFX_P) && (tr->langopts.param[LOPT_SUFFIX] & 1))
+						failed = 1;	// don't match a suffix rule if there are no previous syllables (needed for lang=tr).
+					else
+					{
+						match.end_type = end_type;
+						rule += 3;
 					}
-					break;
+				}
+				break;
 
 				case RULE_NO_SUFFIX:
 					if(word_flags & FLAG_SUFFIX_REMOVED)
@@ -2319,7 +2458,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 					break;
 
 				case RULE_NONALPHA:
-					if(!iswalpha(letter_w))
+					if(!iswalpha2(letter_w))
 					{
 						add_points = (21-distance_right);
 						pre_ptr -= letter_xbytes;
@@ -2328,6 +2467,28 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 						failed = 1;
 					break;
 
+				case RULE_DOLLAR:
+					command = *rule++;
+					if((command==DOLLAR_LIST) || ((command & 0xf0) == 0x20))
+					{
+						// $list or $p_alt
+						// make a copy of the word up to the current character
+						ix = *word - word_start + 1;
+						memcpy(word_buf, word_start-1, ix);
+						word_buf[ix] = ' ';
+						word_buf[ix+1] = 0;
+						LookupFlags(tr, &word_buf[1], &flags);
+
+						if((command==DOLLAR_LIST) && (flags[0] & FLAG_FOUND) && !(flags[1] & FLAG_ONLY))
+							add_points = 23;
+						else
+						if(flags[0] & (1 << (BITNUM_FLAG_ALT + (command & 0xf))))
+							add_points = 23;
+						else
+							failed = 1;
+					}
+					break;
+
 				case RULE_SYLLABLE:
 					/* more than specified number of vowels to the left */
 					syllable_count = 1;
@@ -2350,21 +2511,21 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 					break;
 
 				case RULE_NOVOWELS:
+				{
+					char *p = pre_ptr - letter_xbytes - 1;
+					while(letter_w != RULE_SPACE)
 					{
-						char *p = pre_ptr - letter_xbytes - 1;
-						while(letter_w != RULE_SPACE)
+						if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
 						{
-							if(IsLetter(tr, letter_w,LETTERGP_VOWEL2))
-							{
-								failed = 1;
-								break;
-							}
-							p -= utf8_in2(&letter_w,p,1);
+							failed = 1;
+							break;
 						}
-						if(!failed)
-							add_points = 3;
+						p -= utf8_in2(&letter_w,p,1);
 					}
-					break;
+					if(!failed)
+						add_points = 3;
+				}
+				break;
 
 				case RULE_IFVERB:
 					if(tr->expect_verb)
@@ -2485,8 +2646,8 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
 
 int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, char *end_phonemes, int word_flags, unsigned int *dict_flags)
 {//=====================================================================================================================================
-/* Translate a word bounded by space characters
-   Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */
+	/* Translate a word bounded by space characters
+	   Append the result to 'phonemes' and any standard prefix/suffix in 'end_phonemes' */
 
 	unsigned char  c, c2;
 	unsigned int  c12;
@@ -2502,6 +2663,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 	int  ix;
 	unsigned int  digit_count=0;
 	char *p;
+	ALPHABET *alphabet;
 	int  dict_flags0=0;
 	MatchRecord match1;
 	MatchRecord match2;
@@ -2558,8 +2720,8 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 		if(IsDigit(wc) && ((tr->langopts.tone_numbers == 0) || !any_alpha))
 		{
 			// lookup the number in *_list not *_rules
-	char string[8];
-	char buf[40];
+			char string[8];
+			char buf[40];
 			string[0] = '_';
 			memcpy(&string[1],p,wc_bytes);
 			string[1+wc_bytes] = 0;
@@ -2631,10 +2793,11 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 					if((match1.points == 0) && ((option_sayas & 0x10) == 0))
 					{
 						n = utf8_in(&letter,p-1)-1;
+
 						if(tr->letter_bits_offset > 0)
 						{
 							// not a Latin alphabet, switch to the default Latin alphabet language
-							if((letter <= 0x241) && iswalpha(letter))
+							if((letter <= 0x241) && iswalpha2(letter))
 							{
 								sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language);
 								return(0);
@@ -2688,15 +2851,20 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 								continue;  // start again at the beginning of the word
 							}
 						}
-						else
-						if((letter >= 0x3200) && (letter < 0xa700) && (end_phonemes != NULL))
+
+						if(((alphabet = AlphabetFromChar(letter)) != NULL)  && (alphabet->offset != tr->letter_bits_offset))
 						{
-							// ideograms
-							// outside the range of the accent table, speak the unknown symbol sound
-							Lookup(tr, "_??", ph_buf);
-							match1.phonemes = ph_buf;
-							match1.points = 1;
-							p += (wc_bytes-1);
+							if(tr->langopts.alt_alphabet == alphabet->offset)
+							{
+								sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(tr->langopts.alt_alphabet_lang));
+								return(0);
+							}
+							if(alphabet->flags & AL_WORDS)
+							{
+								// switch to the nominated language for this alphabet
+								sprintf(phonemes,"%c%s",phonSWITCH, WordToString2(alphabet->language));
+								return(0);
+							}
 						}
 					}
 				}
@@ -2707,8 +2875,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 					{
 						// combining accent inside a word, ignore
 					}
-					else
-					if(IsAlpha(wc))
+					else if(IsAlpha(wc))
 					{
 						if((any_alpha > 1) || (p[wc_bytes-1] > ' '))
 						{
@@ -2745,6 +2912,12 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 			if(word_flags & FLAG_UNPRON_TEST)
 				return(match1.end_type | 1);
 
+#ifdef deleted
+// ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST
+			if((match1.end_type & SUFX_UNPRON) && !(word_flags & FLAG_SUFFIX_REMOVED))
+				return(match1.end_type);
+#endif
+
 			if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0))
 			{
 				// an instruction to switch language, return immediately so we can re-translate
@@ -2779,8 +2952,6 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 		}
 	}
 
-	// any language specific changes ?
-	ApplySpecialAttribute(tr,phonemes,dict_flags0);
 	memcpy(p_start,word_copy,strlen(word_copy));
 
 	return(0);
@@ -2789,7 +2960,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
 
 void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags)
 {//========================================================================
-	// apply after the translation is complete
+// apply after the translation is complete
 	int ix;
 	int len;
 	char *p;
@@ -2824,46 +2995,6 @@ void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags)
 }  // end of ApplySpecialAttribute2
 
 
-void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags)
-{//=======================================================================
-// Amend the translated phonemes according to an attribute which is specific for the language.
-	int len;
-	char *p_end;
-
-	if((dict_flags & (FLAG_ALT_TRANS | FLAG_ALT2_TRANS)) == 0)
-		return;
-
-	len = strlen(phonemes);
-	p_end = &phonemes[len-1];
-
-	switch(tr->translator_name)
-	{
-#ifdef deleted
-// this is now done in de_rules
-	case L('d','e'):
-		if(p_end[0] == PhonemeCode2('i',':'))
-		{
-			// words ends in ['i:], change to [=I@]
-			p_end[-1] = phonSTRESS_PREV;
-			p_end[0] = PhonemeCode('I');
-			p_end[1] = phonSCHWA;
-			p_end[2] = 0;
-		}
-		break;
-#endif
-
-	case L('r','o'):
-		if(p_end[0] == PhonemeCode('j'))
-		{
-			// word end in [j], change to ['i]
-			p_end[0] = phonSTRESS_P;
-			p_end[1] = PhonemeCode('i');
-			p_end[2] = 0;
-		}
-		break;
-	}
-}  // end of ApplySpecialAttribute
-
 
 
 //=============================================================================================
@@ -2883,34 +3014,58 @@ int TransposeAlphabet(Translator *tr, char *text)
 	int offset;
 	int min;
 	int max;
+	const char *map;
 	char *p = text;
-	char *p2 = text;
+	char *p2;
 	int all_alpha=1;
 	int bits;
 	int acc;
 	int pairs_start;
 	const short *pairs_list;
+	int bufix;
+	char buf[N_WORD_BYTES+1];
+
 
 	offset = tr->transpose_min - 1;
 	min = tr->transpose_min;
 	max = tr->transpose_max;
+	map = tr->transpose_map;
 
 	pairs_start = max - min + 2;
 
+	bufix = 0;
 	do {
 		p += utf8_in(&c,p);
-		if((c >= min) && (c <= max))
-		{
-			*p2++ = c - offset;
-		}
-		else
 		if(c != 0)
 		{
-			p2 += utf8_out(c,p2);
-			all_alpha=0;
+			if((c >= min) && (c <= max))
+			{
+				if(map == NULL)
+				{
+					buf[bufix++] = c - offset;
+				}
+				else
+				{
+					// get the code from the transpose map
+					if(map[c - min] > 0)
+					{
+						buf[bufix++] = map[c - min];
+					}
+					else
+					{
+						all_alpha=0;
+						break;
+					}
+				}
+			}
+			else
+			{
+				all_alpha=0;
+				break;
+			}
 		}
-	} while (c != 0);
-	*p2 = 0;
+	} while ((c != 0) && (bufix < N_WORD_BYTES));
+	buf[bufix] = 0;
 
 	if(all_alpha)
 	{
@@ -2918,8 +3073,8 @@ int TransposeAlphabet(Translator *tr, char *text)
 		acc=0;
 		bits=0;
 
-		p = text;
-		p2 = text;
+		p = buf;
+		p2 = buf;
 		while((c = *p++) != 0)
 		{
 			if((pairs_list = tr->frequent_pairs) != NULL)
@@ -2950,16 +3105,21 @@ int TransposeAlphabet(Translator *tr, char *text)
 			*p2++ = (acc << (8-bits));
 		}
 		*p2 = 0;
-		return((p2 - text) | 0x40);  // bit 6 indicates compressed characters
+		ix = p2 - buf;
+		memcpy(text, buf, ix);
+		return(ix | 0x40);  // bit 6 indicates compressed characters
+	}
+	else
+	{
+		return(strlen(text));
 	}
-	return(p2 - text);
 }  // end of TransposeAlphabet
 
 
 
 
 static const char *LookupDict2(Translator *tr, const char *word, const char *word2,
-		char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab)
+							   char *phonetic, unsigned int *flags, int end_flags, WORD_TAB *wtab)
 //=====================================================================================
 /* Find an entry in the word_dict file for a specified word.
    Returns NULL if no match, else returns 'word_end'
@@ -2985,22 +3145,25 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 	int  no_phonemes;
 	int  skipwords;
 	int  ix;
+	int  c;
 	const char *word_end;
 	const char *word1;
 	int wflags = 0;
-//	int wflags2;
+	int lookup_symbol;
 	char word_buf[N_WORD_BYTES+1];
+	char dict_flags_buf[80];
 
 	if(wtab != NULL)
 	{
 		wflags = wtab->flags;
 	}
 
+	lookup_symbol = flags[1] & FLAG_LOOKUP_SYMBOL;
 	word1 = word;
 	if(tr->transpose_min > 0)
 	{
 		strncpy0(word_buf,word, N_WORD_BYTES);
-		wlen = TransposeAlphabet(tr, word_buf);
+		wlen = TransposeAlphabet(tr, word_buf);  // bit 6 indicates compressed characters
 		word = word_buf;
 	}
 	else
@@ -3074,8 +3237,7 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 						condition_failed = 1;
 				}
 			}
-			else
-			if(flag > 80)
+			else if(flag > 80)
 			{
 				// flags 81 to 90  match more than one word
 				// This comes after the other flags
@@ -3110,16 +3272,14 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 				p = next;
 				word_end = word2 + n_chars;
 			}
-			else
-			if(flag > 64)
+			else if(flag > 64)
 			{
 				// stressed syllable information, put in bits 0-3
 				dictionary_flags = (dictionary_flags & ~0xf) | (flag & 0xf);
 				if((flag & 0xc) == 0xc)
 					dictionary_flags |= FLAG_STRESS_END;
 			}
-			else
-			if(flag >= 32)
+			else if(flag >= 32)
 			{
 				dictionary_flags2 |= (1L << (flag-32));
 			}
@@ -3138,20 +3298,20 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 		if((end_flags & FLAG_SUFX)==0)
 		{
 			// no suffix has been removed
-			if(dictionary_flags & FLAG_STEM)
+			if(dictionary_flags2 & FLAG_STEM)
 				continue;   // this word must have a suffix
 		}
 
-		if((end_flags & SUFX_P) && (dictionary_flags & (FLAG_ONLY | FLAG_ONLY_S)))
+		if((end_flags & SUFX_P) && (dictionary_flags2 & (FLAG_ONLY | FLAG_ONLY_S)))
 			continue;    // $only or $onlys, don't match if a prefix has been removed
 
 		if(end_flags & FLAG_SUFX)
 		{
 			// a suffix was removed from the word
-			if(dictionary_flags & FLAG_ONLY)
+			if(dictionary_flags2 & FLAG_ONLY)
 				continue;        // no match if any suffix
 
-			if((dictionary_flags & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0))
+			if((dictionary_flags2 & FLAG_ONLY_S) && ((end_flags & FLAG_SUFX_S)==0))
 			{
 				// only a 's' suffix allowed, but the suffix wasn't 's'
 				continue;
@@ -3185,21 +3345,21 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 				continue;
 		}
 
-		if((dictionary_flags & FLAG_ATEND) && (word_end < tr->clause_end))
+		if((dictionary_flags2 & FLAG_ATEND) && (word_end < translator->clause_end) && (lookup_symbol==0))
 		{
-			// only use this pronunciation if it's the last word of the clause
+			// only use this pronunciation if it's the last word of the clause, or called from Lookup()
 			continue;
 		}
 
-		if((dictionary_flags & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD))
+		if((dictionary_flags2 & FLAG_ATSTART) && !(wtab->flags & FLAG_FIRST_WORD))
 		{
 			// only use this pronunciation if it's the first word of a clause
 			continue;
 		}
 
-		if((dictionary_flags2 & FLAG_SENTENCE) && !(tr->clause_terminator & CLAUSE_BIT_SENTENCE))
+		if((dictionary_flags2 & FLAG_SENTENCE) && !(translator->clause_terminator & CLAUSE_BIT_SENTENCE))
 		{
-			// only uis this clause is a sentence , i.e. terminator is {. ? !} not {, : :}
+			// only if this clause is a sentence , i.e. terminator is {. ? !} not {, : :}
 			continue;
 		}
 
@@ -3210,6 +3370,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 			if(tr->expect_verb || (tr->expect_verb_s && (end_flags & FLAG_SUFX_S)))
 			{
 				// OK, we are expecting a verb
+				if((tr->translator_name == L('e','n')) && (tr->prev_dict_flags[0] & FLAG_ALT6_TRANS) && (end_flags & FLAG_SUFX_S))
+				{
+					// lang=en, don't use verb form after 'to' if the word has 's' suffix
+					continue;
+				}
 			}
 			else
 			{
@@ -3236,10 +3401,15 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 				continue;
 			}
 		}
+		if(dictionary_flags2 & FLAG_NATIVE)
+		{
+			if(tr != translator)
+				continue;    // don't use if we've switched translators
+		}
 		if(dictionary_flags & FLAG_ALT2_TRANS)
 		{
 			// language specific
-			if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags & FLAG_ALT_TRANS))
+			if((tr->translator_name == L('h','u')) && !(tr->prev_dict_flags[0] & FLAG_ALT_TRANS))
 				continue;
 		}
 
@@ -3253,7 +3423,8 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 		{
 			if(option_phonemes == 2)
 			{
-				fprintf(f_trans,"Flags:  %s  %s\n",word1,print_dictionary_flags(flags));
+				print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf));
+				fprintf(f_trans,"Flags:  %s  %s\n", word1, dict_flags_buf);
 			}
 			return(0);    // no phoneme translation found here, only flags. So use rules
 		}
@@ -3276,21 +3447,28 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
 			if(textmode == translator->langopts.textmode)
 			{
 				// only show this line if the word translates to phonemes, not replacement text
-				if((dictionary_skipwords) && (wtab != NULL))
+				if((dictionary_flags & FLAG_SKIPWORDS) && (wtab != NULL))
 				{
 					// matched more than one word
 					// (check for wtab prevents showing RULE_SPELLING byte when speaking individual letters)
 					memcpy(word_buf,word2,word_end-word2);
 					word_buf[word_end-word2-1] = 0;
-					fprintf(f_trans,"Found: '%s %s",word1,word_buf);
+					fprintf(f_trans,"Found: '%s %s\n",word1,word_buf);
 				}
 				else
 				{
 					fprintf(f_trans,"Found: '%s",word1);
 				}
-				fprintf(f_trans,"' [%s]  %s\n",ph_decoded,print_dictionary_flags(flags));
+				print_dictionary_flags(flags, dict_flags_buf, sizeof(dict_flags_buf));
+				fprintf(f_trans,"' [%s]  %s\n", ph_decoded,dict_flags_buf);
 			}
 		}
+
+		ix = utf8_in(&c, word);
+		if((word[ix] == 0) && !IsAlpha(c))
+		{
+			flags[0] |= FLAG_MAX3;
+		}
 		return(word_end);
 
 	}
@@ -3354,7 +3532,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
 		if(((c = *word1++)==0) || (c == ' '))
 			break;
 
-		if((c=='.') && (length > 0) && (isdigit(word[length-1])))
+		if((c=='.') && (length > 0) && (IsDigit09(word[length-1])))
 			break;  // needed for lang=hu, eg. "december 2.-ig"
 
 		word[length] = c;
@@ -3363,6 +3541,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
 
 	found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);
 
+
 	if(flags[0] & FLAG_MAX3)
 	{
 		if(strcmp(ph_out, tr->phonemes_repeat) == 0)
@@ -3407,8 +3586,7 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
 			word[length-1] = 0;
 			found = LookupDict2(tr, word, word1, ph_out, flags, end_flags, wtab);
 		}
-		else
-		if((end_flags & SUFX_D) && (word[length-1] == word[length-2]))
+		else if((end_flags & SUFX_D) && (word[length-1] == word[length-2]))
 		{
 			// try removing a double letter
 			word[length-1] = 0;
@@ -3461,23 +3639,43 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
 }   //  end of LookupDictList
 
 
+extern char word_phonemes[N_WORD_PHONEMES];    // a word translated into phoneme codes
 
 int Lookup(Translator *tr, const char *word, char *ph_out)
 {//===================================================
+	int found;
 	unsigned int flags[2];
-	flags[0] = flags[1] = 0;
+	int say_as;
 	char *word1 = (char *)word;
-	return(LookupDictList(tr, &word1, ph_out, flags, 0, NULL));
+	char text[80];
+
+	flags[0] = 0;
+	flags[1] = FLAG_LOOKUP_SYMBOL;
+	found = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL);
+
+	if(flags[0] & FLAG_TEXTMODE)
+	{
+		say_as = option_sayas;
+		option_sayas = 0;   // don't speak replacement word as letter names
+		text[0] = 0;
+		strncpy0(&text[1], word1, sizeof(text));
+		found = TranslateWord(tr, &text[1], 0, NULL, NULL);
+		strcpy(ph_out, word_phonemes);
+		option_sayas = say_as;
+	}
+	return(found);
 }
 
-int LookupFlags(Translator *tr, const char *word)
-{//==============================================
+
+int LookupFlags(Translator *tr, const char *word, unsigned int **flags_out)
+{//===========================================================================
 	char buf[100];
 	static unsigned int flags[2];
+	char *word1 = (char *)word;
 
 	flags[0] = flags[1] = 0;
-	char *word1 = (char *)word;
 	LookupDictList(tr, &word1, buf, flags, 0, NULL);
+	*flags_out = flags;
 	return(flags[0]);
 }
 
@@ -3487,7 +3685,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 {//========================================================================
 /* Removes a standard suffix from a word, once it has been indicated by the dictionary rules.
    end_type: bits 0-6  number of letters
-             bits 8-14  suffix flags
+			 bits 8-14  suffix flags
 
 	word_copy: make a copy of the original word
 	This routine is language specific.  In English it deals with reversing y->i and e-dropping
@@ -3500,15 +3698,17 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 	int end_flags;
 	const char *p;
 	int  len;
-	static char ending[12];
+	char ending[50];
 
 	// these lists are language specific, but are only relevent if the 'e' suffix flag is used
 	static const char *add_e_exceptions[] = {
-		"ion", NULL };
+		"ion", NULL
+	};
 
 	static const char *add_e_additions[] = {
 //		"c", "rs", "ir", "ur", "ath", "ns", "lu", NULL };
-		"c", "rs", "ir", "ur", "ath", "ns", "u", NULL };
+		"c", "rs", "ir", "ur", "ath", "ns", "u", NULL
+	};
 
 	for(word_end = word; *word_end != ' '; word_end++)
 	{
@@ -3517,11 +3717,15 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 			*word_end = 'e';
 	}
 	i = word_end - word;
-	memcpy(word_copy,word,i);
-	word_copy[i] = 0;
+
+	if(word_copy != NULL)
+	{
+		memcpy(word_copy,word,i);
+		word_copy[i] = 0;
+	}
 
 	// look for multibyte characters to increase the number of bytes to remove
-	for(len_ending = i = (end_type & 0x3f); i>0 ;i--)   // num.of characters of the suffix
+	for(len_ending = i = (end_type & 0x3f); i>0 ; i--)  // num.of characters of the suffix
 	{
 		word_end--;
 		while((*word_end & 0xc0) == 0x80)
@@ -3532,7 +3736,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 	}
 
 	// remove bytes from the end of the word and replace them by spaces
-	for(i=0; i<len_ending; i++)
+	for(i=0; (i<len_ending) && (i < (int)sizeof(ending)-1); i++)
 	{
 		ending[i] = word_end[i];
 		word_end[i] = ' ';
@@ -3564,8 +3768,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 				word_end[2] = ' ';
 			}
 		}
-		else
-		if(tr->translator_name == L('e','n'))
+		else if(tr->translator_name == L('e','n'))
 		{
 			// add 'e' to end of stem
 			if(IsLetter(tr, word_end[-1],LETTERGP_VOWEL2) && IsLetter(tr, word_end[0],1))
@@ -3596,8 +3799,7 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 				}
 			}
 		}
-		else
-		if(tr->langopts.suffix_add_e != 0)
+		else if(tr->langopts.suffix_add_e != 0)
 		{
 			end_flags |= FLAG_SUFX_E_ADDED;
 		}
@@ -3606,10 +3808,10 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 		{
 			utf8_out(tr->langopts.suffix_add_e, &word_end[1]);
 
-		if(option_phonemes == 2)
-		{
-			fprintf(f_trans,"add e\n");
-		}
+			if(option_phonemes == 2)
+			{
+				fprintf(f_trans,"add e\n");
+			}
 		}
 	}
 
@@ -3628,3 +3830,4 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy)
 }   /* end of RemoveEnding */
 
 
+
diff --git a/external/espeak/espeak_command.h b/external/espeak/espeak_command.h
old mode 100644
new mode 100755
diff --git a/external/espeak/espeakdata_FileInMemory.cpp b/external/espeak/espeakdata_FileInMemory.cpp
index cfea83a..649a540 100644
--- a/external/espeak/espeakdata_FileInMemory.cpp
+++ b/external/espeak/espeakdata_FileInMemory.cpp
@@ -1,6 +1,6 @@
-/* espeakdata_FileInMemory.c
+/* espeakdata_FileInMemory.cpp
  *
- * Copyright (C) David Weenink 2012
+ * Copyright (C) David Weenink 2012, 2015
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,43 +22,43 @@
 #include "speech.h"
 #include <wctype.h>
 
-FilesInMemory espeakdata_variants;
-FilesInMemory espeakdata_dicts;
-FilesInMemory espeakdata_phons;
-FilesInMemory espeakdata_voices;
-Strings espeakdata_voices_names;
-Strings espeakdata_voices_names_short;
-Strings espeakdata_variants_names;
+autoFileInMemorySet espeakdata_variants;
+autoFileInMemorySet espeakdata_dicts;
+autoFileInMemorySet espeakdata_phons;
+autoFileInMemorySet espeakdata_voices;
+autoStrings espeakdata_voices_names;
+autoStrings espeakdata_voices_names_short;
+autoStrings espeakdata_variants_names;
 
-static void FilesInMemory_and_Strings_changeIds (FilesInMemory me, Strings thee) {
+static void FileInMemorySet_and_Strings_changeIds (FileInMemorySet me, Strings thee) {
 	try {
 		if (my size != thy numberOfStrings) return; // do nothing
-		for (long i = 1; i <= my size; i++) {
-			FileInMemory_setId ((FileInMemory) my item[i], thy strings[i]);
+		for (long i = 1; i <= my size; i ++) {
+			FileInMemory_setId (my at [i], thy strings [i]);
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U"Ids not changed.");
 	}
 }
 
-static Strings espeak_voices_sort () {
+static autoStrings espeak_voices_sort () {
 	try {
-		autoTable names = espeakdata_voices_to_Table (espeakdata_voices);
-		autoStrings fullnames = espeakdata_voices_getNames (names.peek(), 2);
-		FilesInMemory_and_Strings_changeIds (espeakdata_voices, fullnames.peek());
-		espeakdata_voices -> d_sortKey = 1; // sort id's
-		Sorted_sort (espeakdata_voices);
-		Table_sortRows_string (names.peek(), U"name"); //They hopefully sort the same way
-		autoStrings neworder = espeakdata_voices_getNames (names.peek(), 2);
-		autoStrings names_short = espeakdata_voices_getNames (names.peek(), 1);
-		FilesInMemory_and_Strings_changeIds (espeakdata_voices, names_short.peek());
-		return neworder.transfer();
+		autoTable names = espeakdata_voices_to_Table (espeakdata_voices.get());
+		autoStrings fullnames = espeakdata_voices_getNames (names.get(), 2);
+		FileInMemorySet_and_Strings_changeIds (espeakdata_voices.get(), fullnames.get());
+		espeakdata_voices -> d_sortKey = 1;   // sort id's
+		espeakdata_voices -> sort ();
+		Table_sortRows_string (names.get(), U"name"); //They hopefully sort the same way
+		autoStrings neworder = espeakdata_voices_getNames (names.get(), 2);
+		autoStrings names_short = espeakdata_voices_getNames (names.get(), 1);
+		FileInMemorySet_and_Strings_changeIds (espeakdata_voices.get(), names_short.get());
+		return neworder;
 	} catch (MelderError) {
 		Melder_throw (U"Espeak voices not sorted.");
 	}
 }
 
-static Strings Strings_insertAndExpand (Strings me, long position, const char32 *newstring) {
+static autoStrings Strings_insertAndExpand (Strings me, long position, const char32 *newstring) {
 	try {
 		if (position == 0) position = my numberOfStrings + 1;
 		Melder_assert (position >= 1);
@@ -73,7 +73,7 @@ static Strings Strings_insertAndExpand (Strings me, long position, const char32
 			thy strings[i] = Melder_dup (to_copy);
 		}
 		thy numberOfStrings = my numberOfStrings + 1;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" not expanded.");
 	}
@@ -82,13 +82,13 @@ static Strings Strings_insertAndExpand (Strings me, long position, const char32
 void espeakdata_praat_init () {
 	try {
 		espeakdata_variants = create_espeakdata_variants ();
-		autoStrings vnames = FilesInMemory_to_Strings_id (espeakdata_variants);
-		espeakdata_variants_names = Strings_insertAndExpand (vnames.peek(), 1, U"default");
+		autoStrings vnames = FileInMemorySet_to_Strings_id (espeakdata_variants.get());
+		espeakdata_variants_names = Strings_insertAndExpand (vnames.get(), 1, U"default");
 		espeakdata_dicts = create_espeakdata_dicts ();
 		espeakdata_phons = create_espeakdata_phons ();
 		espeakdata_voices = create_espeakdata_voices ();
 		espeakdata_voices_names = espeak_voices_sort ();
-		autoTable names_table = espeakdata_voices_to_Table (espeakdata_voices);
+		autoTable names_table = espeakdata_voices_to_Table (espeakdata_voices.get());
 	} catch (MelderError) {
 		Melder_throw (U"Espeakdata initialization not performed.");
 	}
@@ -102,9 +102,11 @@ const char * espeakdata_get_voicedata (const char *data, long ndata, char *buf,
 		return 0;
 	}
 	long i = 0;
-	while (i < nbuf && *index < ndata && ((buf[i] = data[i]) != '\n')) {
-		i++; (*index)++;
+	while (i < nbuf && *index < ndata && ((buf [i] = data [i]) != '\n')) {
+		i ++;
+		(*index) ++;
 	}
+	(*index) ++;   // ppgb 20151020 fix
 	long idata = i + 1;
 	buf[i] = '\0';
 	while (--i >= 0 && ESPEAK_ISSPACE (buf[i])) {
@@ -114,53 +116,54 @@ const char * espeakdata_get_voicedata (const char *data, long ndata, char *buf,
 	if (p != 0) {
 		*p = 0;
 	}
-	return &data[idata];
+	return & data[idata];
 }
 
-Table espeakdata_voices_to_Table (FilesInMemory me) {
+autoTable espeakdata_voices_to_Table (FileInMemorySet me) {
 	try {
 		autoTable thee = Table_createWithColumnNames (my size, U"id name");
-		for (long ifile = 1; ifile <= my size; ifile++) {
-			FileInMemory fim = (FileInMemory) my item[ifile];
-			Table_setStringValue (thee.peek(), ifile, 1, fim -> d_id);
+		for (long ifile = 1; ifile <= my size; ifile ++) {
+			FileInMemory fim = my at [ifile];
+			Table_setStringValue (thee.get(), ifile, 1, fim -> d_id);
 			const char *p = strstr (fim -> d_data, "name");
-			if (p == NULL) continue;
+			if (! p) continue;
 			// copy the name part to the following new line
-			char buf[40], *bufp = buf;
+			char buf [40], *bufp = buf;
 			long len = 0;
-			while ((*bufp++ = *p++) != '\n' && len < 39) { len++; }
+			while ((*bufp ++ = *p ++) != '\n' && len < 39) { len ++; }
 			// remove trailing white space
 			*bufp = 0;
 			while (ESPEAK_ISSPACE (buf[len]) && len > 0) {
-				buf[len] = 0; len--;
+				buf [len] = 0;
+				len --;
 			}
 			// skip leading white space
 			bufp = & buf[4];
-			while (ESPEAK_ISSPACE (*bufp)) { *bufp++; }
-			Table_setStringValue (thee.peek(), ifile, 2, Melder_peek8to32 (bufp));
-			TableRow row = static_cast <TableRow> (thy rows -> item [ifile]);
-			wint_t c0 = row -> cells [2]. string[0];
-			row -> cells [2]. string[0] = towupper (c0);
+			while (ESPEAK_ISSPACE (*bufp)) { bufp ++; }
+			Table_setStringValue (thee.get(), ifile, 2, Melder_peek8to32 (bufp));
+			TableRow row = thy rows.at [ifile];
+			wint_t c0 = row -> cells [2]. string [0];
+			row -> cells [2]. string [0] = towupper (c0);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Espeakdata: voice table not initialized.");
 	}
 }
 
-Strings espeakdata_voices_getNames (Table me, long column) {
+autoStrings espeakdata_voices_getNames (Table me, long column) {
 	try {
 		if (column < 0 || column > 2) {
 			Melder_throw (U"Illegal columnn.");
 		}
 		autoStrings thee = Thing_new (Strings);
-		thy strings = NUMvector <char32 *> (1, my rows -> size);
+		thy strings = NUMvector <char32 *> (1, my rows.size);
 		thy numberOfStrings = 0;
-		for (long irow = 1; irow <= my rows -> size; irow++) {
-			thy strings[irow] = Melder_dup (Table_getStringValue_Assert (me, irow, column));
-			thy numberOfStrings++;
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			thy strings [irow] = Melder_dup (Table_getStringValue_Assert (me, irow, column));
+			thy numberOfStrings ++;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Espeakdata: voices not initialized.");
 	}
@@ -168,21 +171,20 @@ Strings espeakdata_voices_getNames (Table me, long column) {
 
 char * espeakdata_get_dict_data (const char *name, unsigned int *size) {
 	long lsize;
-	char *data = FilesInMemory_getCopyOfData (espeakdata_dicts, Melder_peek8to32 (name), &lsize);
+	char *data = FileInMemorySet_getCopyOfData (espeakdata_dicts.get(), Melder_peek8to32 (name), &lsize);
 	*size = (unsigned int) lsize;
 	return data;
 }
 
 
 const char * espeakdata_get_voice (const char *vname, long *numberOfBytes) {
-	return FilesInMemory_getData (espeakdata_voices, Melder_peek8to32 (vname), numberOfBytes);
+	return FileInMemorySet_getData (espeakdata_voices.get(), Melder_peek8to32 (vname), numberOfBytes);
 }
 
 const char * espeakdata_get_voiceVariant (const char *vname, long *numberOfBytes) {
 	char *plus = strstr ((char *) vname, "+"); // prototype says: strstr (const char *, const char *)
-	const char *name = plus != NULL ? ++plus : vname;
-	return FilesInMemory_getData (espeakdata_variants, Melder_peek8to32 (name), numberOfBytes);;
+	const char *name = ( plus ? ++ plus : vname );
+	return FileInMemorySet_getData (espeakdata_variants.get(), Melder_peek8to32 (name), numberOfBytes);;
 }
 
-
 /* End of file espeakdata_FileInMemory.cpp */
diff --git a/external/espeak/espeakdata_FileInMemory.h b/external/espeak/espeakdata_FileInMemory.h
index 9fcb953..5cc886a 100644
--- a/external/espeak/espeakdata_FileInMemory.h
+++ b/external/espeak/espeakdata_FileInMemory.h
@@ -22,24 +22,39 @@
 #include "FileInMemory.h"
 #include "Table.h"
 
-extern FilesInMemory espeakdata_phons;
-extern FilesInMemory espeakdata_dicts;
-extern FilesInMemory espeakdata_voices;
-extern FilesInMemory espeakdata_variants;
-FilesInMemory create_espeakdata_phons ();
-FilesInMemory create_espeakdata_dicts ();
-FilesInMemory create_espeakdata_voices ();
-FilesInMemory create_espeakdata_variants ();
-extern Strings espeakdata_voices_names;
-extern Strings espeakdata_variants_names;
+extern autoFileInMemorySet espeakdata_phons;
+
+extern autoFileInMemorySet espeakdata_dicts;
+
+extern autoFileInMemorySet espeakdata_voices;
+
+extern autoFileInMemorySet espeakdata_variants;
+
+autoFileInMemorySet create_espeakdata_phons ();
+
+autoFileInMemorySet create_espeakdata_dicts ();
+
+autoFileInMemorySet create_espeakdata_voices ();
+
+autoFileInMemorySet create_espeakdata_variants ();
+
+extern autoStrings espeakdata_voices_names;
+
+extern autoStrings espeakdata_variants_names;
 
 void espeakdata_praat_init ();
+
 const char * espeakdata_get_voicedata (const char *data, long ndata, char *buf, long nbuf, long *index);
-Table espeakdata_voices_to_Table (FilesInMemory me);
-Strings espeakdata_voices_getNames (Table me, long column);
+
+autoTable espeakdata_voices_to_Table (FileInMemorySet me);
+
+autoStrings espeakdata_voices_getNames (Table me, long column);
+
 // mask the char / char32
 char * espeakdata_get_dict_data (const char *name, unsigned int *size);
+
 const char * espeakdata_get_voice (const char *vname, long *numberOfBytes);
+
 const char * espeakdata_get_voiceVariant (const char *vname, long *numberOfBytes);
 
 #endif
diff --git a/external/espeak/espeakdata_dicts.cpp b/external/espeak/espeakdata_dicts.cpp
index 9c61886..ce85c13 100644
--- a/external/espeak/espeakdata_dicts.cpp
+++ b/external/espeak/espeakdata_dicts.cpp
@@ -1,2343 +1,2377 @@
-/* File espeakdata_dicts.cpp was generated on Sun Nov  4 17:43:38 2012 from all espeak-data/*_dict files:  */
+/* File espeakdata_dicts.cpp (version 1.48.04) was automatically generated on Thu Dec  3 15:21:15 2015 from all espeak-data/*_dict files:  */
 
 #include "espeakdata_FileInMemory.h"
 #include "Collection.h"
 #include "FileInMemory.h"
 #include "melder.h"
 
-FilesInMemory create_espeakdata_dicts () {
+autoFileInMemorySet create_espeakdata_dicts () {
 	try {
-		autoFilesInMemory me = FilesInMemory_create ();
-		static unsigned char espeakdata_dicts1_data[81298] = {
-			0, 4, 0, 0, 213, 80, 0, 0, 14, 69, 80, 245, 9, 85, 48, 47, 117, 91, 37, 111, 89, 0, 0, 0, 0, 0, 0, 10, 198, 88,
-			243, 210, 44, 243, 64, 66, 9, 9, 198, 80, 244, 142, 4, 67, 192, 66, 24, 74, 44, 243, 134, 101, 69, 5, 73, 66, 137, 20, 49, 110,
-			50, 83, 6, 123, 47, 113, 34, 80, 37, 0, 23, 65, 4, 35, 15, 49, 35, 48, 6, 112, 55, 35, 0, 81, 99, 97, 112, 112, 101, 108,
-			108, 97, 32, 0, 18, 71, 32, 81, 76, 80, 83, 65, 48, 107, 116, 55, 47, 13, 65, 35, 55, 0, 10, 199, 5, 69, 18, 4, 180, 201,
-			20, 66, 9, 198, 80, 241, 82, 36, 83, 128, 66, 0, 20, 72, 88, 243, 210, 56, 83, 69, 57, 48, 83, 117, 34, 50, 116, 65, 13, 50,
-			89, 0, 6, 195, 92, 19, 148, 8, 0, 11, 68, 88, 19, 142, 20, 83, 35, 50, 13, 0, 13, 68, 61, 1, 78, 16, 110, 48, 10, 108,
-			50, 47, 0, 12, 4, 1, 19, 39, 20, 35, 89, 13, 47, 0, 72, 10, 67, 80, 243, 153, 47, 120, 50, 37, 0, 0, 6, 65, 8, 71,
-			116, 0, 0, 10, 198, 92, 19, 142, 20, 84, 128, 65, 8, 6, 195, 76, 16, 131, 17, 0, 6, 195, 89, 48, 64, 17, 14, 67, 52, 82,
-			128, 65, 13, 57, 111, 83, 34, 120, 0, 24, 0, 0, 6, 65, 12, 89, 116, 0, 0, 0, 17, 10, 2, 18, 195, 188, 14, 8, 9, 12,
-			4, 5, 21, 100, 101, 0, 10, 13, 4, 95, 8, 1, 3, 49, 6, 115, 34, 110, 50, 0, 0, 0, 13, 69, 56, 81, 197, 21, 32, 50,
-			13, 136, 116, 34, 0, 10, 69, 32, 85, 201, 81, 64, 21, 0, 10, 6, 65, 16, 72, 116, 0, 0, 0, 0, 11, 68, 88, 144, 203, 76,
-			84, 37, 49, 89, 0, 0, 5, 65, 20, 116, 0, 0, 12, 201, 16, 85, 82, 77, 68, 129, 4, 193, 5, 66, 15, 70, 92, 18, 204, 60,
-			241, 128, 84, 115, 49, 55, 117, 83, 0, 0, 10, 67, 64, 243, 132, 48, 135, 50, 47, 0, 17, 4, 95, 48, 67, 15, 107, 6, 110, 50,
-			13, 34, 47, 89, 47, 13, 0, 0, 26, 73, 52, 244, 133, 48, 85, 1, 64, 20, 139, 65, 110, 34, 13, 55, 4, 108, 47, 35, 48, 6,
-			35, 34, 49, 0, 0, 8, 197, 60, 244, 140, 20, 112, 66, 14, 69, 36, 225, 129, 52, 80, 13, 50, 83, 115, 65, 13, 0, 22, 73, 48,
-			19, 135, 20, 226, 15, 88, 83, 128, 55, 35, 68, 13, 50, 107, 117, 83, 13, 50, 0, 6, 65, 24, 108, 83, 0, 0, 6, 195, 76, 21,
-			75, 17, 0, 0, 0, 8, 197, 28, 83, 129, 16, 80, 66, 21, 10, 13, 1, 20, 20, 8, 195, 169, 195, 188, 19, 65, 35, 47, 6, 37,
-			12, 111, 89, 0, 14, 69, 8, 83, 129, 16, 80, 71, 13, 50, 115, 72, 37, 0, 15, 69, 52, 243, 129, 12, 240, 65, 110, 50, 6, 115,
-			49, 40, 0, 6, 65, 28, 136, 116, 0, 0, 0, 8, 195, 44, 19, 128, 72, 11, 32, 18, 71, 12, 243, 5, 76, 33, 82, 28, 49, 117,
-			55, 89, 71, 112, 34, 136, 0, 0, 19, 72, 80, 84, 130, 48, 19, 131, 32, 80, 47, 13, 34, 71, 55, 115, 50, 91, 0, 0, 6, 65,
-			32, 107, 115, 0, 0, 13, 70, 24, 192, 85, 8, 84, 148, 21, 102, 114, 0, 10, 0, 8, 67, 48, 244, 132, 21, 0, 10, 0, 15, 70,
-			60, 211, 69, 44, 81, 82, 110, 65, 13, 49, 116, 34, 0, 10, 198, 36, 229, 21, 77, 49, 78, 8, 32, 10, 1, 35, 50, 110, 65, 13,
-			34, 0, 27, 0, 10, 69, 28, 21, 19, 9, 144, 21, 0, 10, 5, 65, 36, 37, 0, 6, 195, 5, 66, 214, 17, 0, 13, 6, 4, 195,
-			169, 10, 195, 160, 21, 102, 114, 0, 10, 13, 1, 37, 48, 13, 34, 89, 6, 108, 50, 47, 0, 27, 0, 14, 1, 38, 23, 35, 65, 48,
-			112, 34, 89, 35, 50, 47, 0, 0, 0, 18, 70, 77, 68, 153, 17, 35, 211, 89, 47, 34, 123, 47, 10, 34, 110, 89, 0, 16, 69, 20,
-			180, 197, 48, 96, 2, 112, 49, 89, 6, 112, 55, 83, 0, 6, 65, 40, 57, 116, 0, 0, 16, 70, 44, 21, 137, 4, 20, 128, 49, 35,
-			84, 37, 6, 115, 34, 0, 0, 8, 67, 76, 148, 128, 21, 0, 10, 10, 67, 12, 20, 140, 49, 115, 34, 114, 0, 9, 1, 42, 89, 47,
-			112, 34, 0, 27, 0, 20, 72, 52, 84, 133, 28, 80, 137, 20, 64, 65, 116, 34, 13, 136, 13, 71, 37, 47, 0, 16, 70, 4, 50, 197,
-			72, 208, 78, 35, 49, 13, 34, 65, 35, 50, 0, 10, 1, 43, 48, 55, 6, 111, 89, 0, 27, 0, 6, 65, 44, 49, 115, 0, 0, 0,
-			12, 71, 28, 83, 148, 48, 83, 65, 56, 21, 0, 10, 9, 1, 46, 48, 111, 50, 47, 0, 27, 0, 12, 68, 80, 19, 137, 4, 47, 35,
-			50, 57, 35, 0, 10, 1, 47, 89, 47, 34, 116, 48, 0, 27, 0, 14, 69, 17, 84, 214, 21, 32, 72, 111, 89, 83, 112, 34, 0, 6,
-			65, 48, 112, 55, 0, 0, 0, 12, 67, 52, 85, 128, 65, 13, 83, 34, 120, 0, 24, 0, 0, 6, 65, 52, 108, 65, 0, 0, 24, 11,
-			22, 5, 18, 1, 6, 7, 5, 12, 5, 195, 171, 83, 112, 34, 35, 83, 136, 13, 55, 116, 13, 0, 9, 198, 60, 244, 140, 20, 81, 128,
-			66, 0, 17, 70, 12, 128, 82, 37, 51, 65, 49, 35, 34, 6, 109, 89, 65, 35, 0, 0, 22, 72, 65, 35, 205, 21, 66, 5, 85, 48,
-			48, 34, 40, 65, 6, 116, 47, 37, 38, 111, 89, 0, 21, 72, 52, 20, 135, 5, 33, 84, 32, 16, 65, 35, 34, 136, 35, 34, 6, 116,
-			47, 35, 0, 0, 8, 197, 64, 20, 139, 36, 80, 65, 14, 69, 80, 19, 139, 92, 16, 47, 35, 68, 49, 58, 35, 0, 11, 5, 95, 48,
-			1, 14, 4, 11, 108, 50, 0, 6, 65, 56, 108, 50, 0, 0, 9, 198, 60, 225, 5, 73, 118, 76, 67, 0, 10, 199, 4, 19, 135, 4,
-			19, 132, 20, 66, 0, 21, 72, 44, 243, 15, 77, 49, 78, 76, 80, 49, 110, 55, 13, 89, 6, 134, 50, 89, 13, 0, 0, 9, 198, 60,
-			225, 5, 73, 113, 71, 67, 9, 197, 16, 16, 82, 60, 208, 8, 32, 5, 65, 60, 117, 0, 0, 17, 70, 21, 113, 78, 81, 114, 76, 116,
-			84, 13, 50, 47, 84, 13, 55, 0, 6, 194, 61, 0, 72, 12, 15, 70, 48, 82, 80, 60, 193, 20, 55, 122, 48, 110, 55, 47, 0, 13,
-			1, 61, 10, 136, 13, 55, 6, 123, 49, 10, 0, 27, 0, 12, 71, 16, 243, 129, 48, 68, 207, 56, 21, 0, 10, 16, 70, 12, 128, 82,
-			48, 83, 133, 91, 115, 55, 6, 37, 12, 50, 0, 0, 12, 68, 61, 32, 65, 48, 117, 34, 6, 115, 55, 0, 20, 72, 36, 224, 71, 56,
-			83, 73, 56, 112, 13, 50, 35, 136, 50, 116, 65, 13, 68, 0, 0, 7, 1, 64, 71, 123, 9, 0, 6, 65, 64, 48, 116, 0, 0, 16,
-			70, 4, 227, 129, 48, 85, 0, 35, 50, 35, 55, 6, 108, 47, 0, 0, 0, 0, 6, 65, 68, 49, 118, 0, 0, 16, 70, 32, 244, 193,
-			56, 224, 64, 107, 40, 89, 6, 35, 50, 35, 0, 0, 10, 199, 5, 52, 197, 77, 51, 210, 20, 67, 12, 199, 28, 85, 143, 48, 115, 9,
-			44, 66, 8, 32, 0, 0, 8, 197, 60, 209, 197, 20, 96, 66, 0, 8, 67, 80, 129, 79, 47, 119, 0, 11, 70, 12, 128, 82, 48, 84,
-			192, 21, 0, 10, 0, 15, 6, 1, 14, 4, 18, 195, 169, 6, 35, 50, 72, 34, 123, 0, 0, 0, 17, 70, 28, 85, 197, 48, 198, 83,
-			136, 116, 84, 13, 55, 55, 123, 89, 0, 6, 65, 76, 108, 89, 0, 0, 19, 71, 77, 0, 71, 32, 85, 20, 36, 89, 48, 2, 35, 81,
-			108, 47, 2, 37, 0, 0, 11, 136, 20, 21, 14, 9, 19, 9, 195, 171, 66, 18, 71, 44, 147, 66, 21, 35, 5, 100, 49, 37, 65, 71,
-			13, 34, 55, 37, 0, 17, 70, 16, 160, 75, 5, 37, 1, 75, 35, 49, 6, 35, 34, 47, 35, 0, 0, 0, 6, 65, 80, 47, 116, 0,
-			0, 17, 70, 48, 20, 193, 28, 225, 64, 55, 35, 89, 6, 35, 50, 57, 13, 0, 16, 70, 4, 33, 21, 48, 192, 72, 35, 71, 72, 6,
-			40, 55, 35, 0, 0, 0, 7, 196, 88, 243, 20, 20, 65, 0, 9, 198, 60, 225, 197, 92, 83, 147, 65, 5, 193, 84, 72, 32, 14, 69,
-			76, 19, 132, 72, 16, 89, 35, 50, 72, 34, 35, 0, 9, 198, 52, 20, 148, 36, 83, 147, 66, 15, 69, 84, 112, 78, 16, 16, 40, 81,
-			6, 35, 50, 72, 35, 0, 0, 14, 70, 64, 85, 71, 20, 245, 0, 48, 111, 12, 90, 120, 0, 0, 0, 22, 72, 76, 244, 200, 4, 225,
-			213, 88, 80, 89, 110, 91, 35, 68, 81, 6, 40, 12, 84, 108, 0, 0, 24, 73, 48, 19, 66, 61, 33, 200, 36, 226, 64, 55, 35, 65,
-			71, 110, 34, 81, 6, 37, 12, 50, 37, 0, 6, 65, 88, 83, 116, 0, 0, 9, 66, 5, 48, 4, 35, 89, 0, 8, 0, 0, 9, 68,
-			52, 16, 133, 48, 21, 0, 10, 11, 200, 12, 243, 147, 80, 19, 148, 36, 16, 66, 0, 13, 69, 64, 85, 9, 80, 80, 48, 13, 47, 37,
-			47, 0, 14, 69, 64, 85, 18, 85, 48, 48, 116, 47, 34, 111, 89, 0, 12, 1, 92, 47, 34, 118, 89, 47, 34, 116, 48, 0, 6, 65,
-			92, 84, 116, 0, 0, 16, 70, 56, 85, 10, 36, 84, 192, 50, 108, 12, 37, 80, 37, 89, 0, 16, 70, 36, 66, 76, 48, 84, 192, 37,
-			72, 6, 109, 55, 13, 89, 0, 0, 11, 67, 64, 244, 148, 48, 110, 34, 47, 0, 65, 24, 73, 29, 35, 194, 48, 84, 147, 16, 19, 0,
-			136, 34, 110, 71, 55, 13, 34, 89, 72, 6, 35, 55, 0, 0, 12, 68, 44, 17, 133, 20, 49, 35, 83, 6, 116, 0, 0, 7, 65, 96,
-			108, 49, 89, 0, 0, 17, 70, 64, 19, 5, 72, 211, 192, 48, 35, 55, 6, 112, 34, 65, 40, 0, 0, 16, 70, 56, 85, 10, 36, 84,
-			197, 50, 108, 37, 80, 37, 89, 13, 0, 0, 12, 68, 49, 80, 193, 76, 55, 40, 49, 35, 89, 0, 0, 17, 70, 76, 243, 132, 20, 225,
-			83, 89, 110, 50, 72, 13, 50, 108, 89, 0, 5, 65, 100, 123, 0, 0, 11, 67, 4, 211, 211, 6, 115, 65, 110, 89, 0, 9, 67, 80,
-			134, 83, 47, 123, 89, 0, 17, 70, 56, 21, 1, 76, 128, 64, 50, 2, 35, 47, 6, 35, 91, 35, 0, 0, 10, 199, 48, 85, 137, 80,
-			146, 213, 76, 66, 12, 71, 72, 240, 133, 73, 68, 207, 56, 21, 0, 10, 28, 67, 48, 244, 192, 55, 110, 89, 10, 6, 35, 50, 75, 13,
-			55, 37, 12, 88, 0, 81, 97, 110, 103, 101, 108, 101, 115, 32, 0, 10, 67, 8, 197, 77, 71, 55, 40, 65, 0, 0, 10, 69, 44, 83,
-			22, 36, 224, 21, 0, 10, 7, 65, 104, 88, 108, 72, 0, 0, 16, 70, 56, 148, 150, 4, 224, 64, 50, 13, 34, 84, 115, 50, 35, 0,
-			16, 70, 28, 20, 129, 28, 84, 192, 81, 13, 34, 115, 75, 13, 89, 0, 9, 67, 21, 84, 143, 128, 34, 40, 0, 17, 70, 76, 16, 146,
-			36, 224, 64, 89, 35, 71, 34, 6, 37, 50, 35, 0, 0, 19, 71, 88, 84, 132, 21, 32, 65, 56, 83, 113, 34, 72, 13, 34, 10, 115,
-			50, 0, 0, 11, 68, 64, 147, 143, 80, 48, 37, 50, 40, 0, 9, 198, 60, 225, 197, 48, 243, 198, 65, 19, 72, 29, 32, 72, 4, 212,
-			212, 4, 64, 136, 34, 115, 65, 89, 47, 35, 47, 0, 0, 14, 69, 44, 244, 1, 5, 32, 49, 110, 48, 10, 115, 34, 0, 0, 0, 18,
-			71, 72, 147, 80, 20, 194, 78, 28, 34, 109, 65, 48, 13, 55, 13, 68, 0, 0, 0, 8, 197, 76, 81, 5, 73, 64, 8, 0, 14, 70,
-			21, 66, 69, 56, 225, 64, 108, 47, 37, 13, 50, 0, 0, 0, 13, 68, 61, 32, 76, 20, 117, 34, 6, 115, 55, 13, 0, 0, 14, 69,
-			16, 19, 5, 56, 80, 72, 35, 55, 6, 116, 50, 0, 10, 69, 12, 192, 73, 72, 80, 21, 0, 10, 0, 18, 70, 52, 20, 148, 36, 226,
-			64, 65, 35, 34, 47, 6, 37, 12, 50, 37, 0, 17, 70, 88, 149, 129, 48, 66, 64, 84, 37, 84, 6, 35, 55, 72, 37, 0, 0, 0,
-			16, 70, 40, 84, 197, 8, 83, 0, 57, 116, 89, 13, 71, 112, 55, 0, 0, 0, 17, 70, 40, 19, 148, 92, 18, 192, 57, 35, 50, 47,
-			58, 6, 35, 49, 0, 16, 70, 16, 17, 5, 48, 146, 192, 72, 115, 72, 13, 55, 109, 49, 0, 17, 66, 5, 80, 120, 15, 48, 6, 113,
-			34, 0, 81, 112, 97, 105, 114, 32, 0, 10, 199, 16, 85, 82, 77, 64, 65, 56, 66, 0, 7, 196, 76, 19, 146, 8, 17, 0, 8, 197,
-			60, 225, 213, 57, 48, 65, 14, 69, 56, 19, 69, 57, 48, 50, 115, 65, 13, 50, 89, 0, 8, 197, 20, 180, 205, 4, 224, 65, 13, 69,
-			17, 83, 142, 21, 48, 72, 111, 50, 13, 89, 0, 0, 9, 198, 60, 225, 197, 52, 18, 192, 65, 0, 10, 1, 126, 47, 109, 55, 72, 13,
-			0, 27, 0, 0, 0, 11, 70, 12, 130, 67, 4, 115, 192, 21, 0, 10, 0, 0, 12, 68, 21, 33, 197, 72, 112, 34, 81, 13, 34, 0,
-			0, 0, 0, 15, 70, 92, 243, 19, 20, 193, 89, 58, 40, 55, 89, 55, 37, 0, 0, 0, 18, 70, 20, 193, 15, 72, 17, 15, 112, 55,
-			72, 110, 34, 6, 115, 72, 120, 0, 0, 15, 70, 16, 145, 134, 85, 84, 192, 72, 13, 83, 118, 12, 89, 0, 15, 70, 85, 68, 133, 12,
-			133, 0, 118, 47, 34, 112, 136, 47, 0, 0, 0, 14, 7, 3, 18, 195, 168, 3, 8, 5, 49, 34, 108, 91, 0, 0, 8, 197, 92, 16,
-			82, 60, 208, 8, 0, 9, 198, 76, 82, 212, 61, 33, 64, 66, 9, 198, 16, 242, 212, 61, 33, 64, 66, 14, 70, 72, 83, 133, 81, 65,
-			64, 34, 13, 50, 108, 47, 0, 0, 0, 11, 200, 88, 243, 19, 92, 19, 135, 21, 32, 65, 0, 0, 21, 66, 16, 16, 72, 35, 15, 84,
-			6, 37, 50, 76, 37, 0, 81, 118, 105, 110, 99, 105, 32, 0, 11, 70, 20, 20, 212, 28, 21, 5, 21, 0, 10, 0, 0, 14, 69, 88,
-			244, 137, 28, 80, 83, 117, 34, 13, 136, 13, 0, 16, 69, 76, 145, 83, 80, 16, 89, 37, 38, 6, 108, 89, 47, 35, 0, 14, 69, 29,
-			32, 78, 28, 80, 136, 34, 115, 50, 89, 37, 0, 14, 69, 20, 196, 193, 8, 80, 112, 55, 89, 13, 71, 37, 0, 0, 0, 7, 195, 16,
-			21, 0, 72, 11, 0, 7, 196, 44, 243, 148, 20, 65, 23, 72, 53, 5, 77, 4, 192, 78, 28, 16, 65, 48, 40, 12, 65, 35, 55, 6,
-			35, 68, 81, 35, 0, 8, 67, 48, 17, 25, 21, 0, 10, 0, 14, 69, 16, 80, 143, 72, 16, 72, 13, 71, 117, 34, 35, 0, 0, 17,
-			70, 32, 16, 129, 45, 82, 192, 107, 6, 35, 71, 35, 49, 111, 49, 0, 0, 18, 7, 4, 1, 14, 9, 195, 171, 12, 72, 6, 115, 50,
-			37, 12, 13, 55, 0, 0, 22, 72, 88, 84, 147, 36, 225, 1, 8, 16, 83, 113, 34, 89, 10, 13, 50, 72, 115, 71, 35, 0, 11, 200,
-			52, 148, 194, 73, 82, 75, 80, 80, 66, 12, 68, 88, 243, 22, 60, 84, 110, 55, 84, 40, 0, 0, 0, 15, 70, 44, 194, 77, 20, 145,
-			0, 49, 55, 109, 65, 123, 47, 0, 0, 0, 0, 0, 16, 70, 64, 144, 193, 77, 51, 192, 48, 37, 49, 6, 35, 89, 40, 0, 11, 70,
-			52, 20, 135, 5, 33, 84, 21, 0, 10, 0, 0, 16, 7, 19, 195, 169, 1, 14, 3, 5, 89, 2, 116, 133, 50, 89, 0, 0, 16, 70,
-			80, 84, 207, 85, 37, 83, 47, 13, 89, 120, 34, 111, 89, 0, 0, 0, 13, 67, 52, 228, 128, 65, 109, 50, 6, 116, 34, 0, 24, 0,
-			9, 68, 60, 113, 5, 56, 21, 0, 10, 0, 9, 198, 77, 64, 67, 12, 21, 15, 66, 0, 17, 70, 48, 20, 193, 73, 84, 192, 55, 115,
-			89, 13, 34, 2, 111, 89, 0, 15, 70, 13, 84, 211, 60, 228, 192, 49, 35, 89, 13, 50, 89, 0, 13, 66, 17, 32, 72, 6, 110, 49,
-			47, 13, 34, 0, 24, 16, 66, 9, 96, 71, 123, 83, 6, 117, 34, 71, 116, 55, 47, 0, 24, 0, 0, 12, 200, 36, 229, 5, 20, 225,
-			5, 20, 192, 66, 8, 13, 68, 40, 244, 213, 4, 57, 6, 117, 91, 37, 35, 0, 12, 68, 45, 34, 71, 20, 49, 34, 37, 136, 13, 0,
-			0, 12, 69, 76, 50, 15, 61, 32, 89, 49, 117, 34, 0, 0, 17, 70, 52, 244, 212, 21, 37, 0, 65, 6, 110, 89, 47, 13, 34, 47,
-			0, 0, 0, 11, 67, 8, 85, 1, 71, 116, 47, 35, 0, 9, 13, 68, 44, 83, 137, 4, 49, 37, 12, 50, 37, 35, 0, 0, 0, 9,
-			198, 65, 34, 77, 5, 65, 64, 66, 0, 0, 8, 196, 60, 225, 5, 72, 72, 12, 0, 13, 69, 24, 245, 82, 36, 80, 83, 40, 34, 6,
-			37, 0, 0, 0, 17, 71, 81, 34, 67, 32, 20, 132, 80, 47, 34, 37, 136, 115, 34, 47, 0, 0, 16, 70, 76, 83, 133, 44, 19, 0,
-			89, 116, 50, 13, 49, 35, 55, 0, 0, 14, 69, 28, 195, 210, 36, 16, 81, 55, 131, 34, 37, 35, 0, 12, 201, 4, 208, 78, 104, 147,
-			84, 61, 66, 64, 68, 0, 0, 11, 70, 88, 144, 212, 61, 34, 65, 21, 0, 10, 0, 11, 200, 60, 225, 197, 92, 83, 147, 16, 80, 67,
-			0, 0, 0, 9, 198, 84, 226, 70, 61, 35, 69, 67, 0, 7, 196, 76, 241, 1, 80, 8, 7, 196, 60, 209, 1, 80, 8, 0, 0, 0,
-			6, 195, 4, 224, 192, 17, 0, 12, 68, 29, 34, 69, 28, 81, 34, 37, 12, 81, 0, 0, 0, 10, 198, 56, 241, 212, 4, 228, 192, 8,
-			32, 0, 17, 70, 48, 243, 132, 20, 228, 197, 55, 110, 50, 72, 13, 50, 89, 13, 0, 11, 67, 8, 80, 64, 71, 37, 12, 57, 35, 0,
-			0, 0, 0, 0, 6, 195, 16, 145, 64, 72, 0, 10, 67, 105, 83, 21, 88, 40, 55, 40, 0, 0, 14, 69, 72, 243, 132, 21, 32, 34,
-			110, 50, 72, 13, 34, 0, 14, 69, 17, 83, 131, 4, 224, 72, 35, 68, 49, 14, 50, 0, 12, 69, 8, 245, 87, 21, 32, 71, 120, 13,
-			34, 0, 0, 0, 19, 71, 28, 83, 4, 20, 194, 75, 20, 136, 112, 55, 72, 13, 55, 13, 49, 13, 0, 0, 10, 67, 73, 81, 1, 34,
-			40, 72, 35, 0, 0, 14, 69, 49, 82, 68, 61, 0, 55, 127, 47, 10, 110, 48, 0, 10, 69, 72, 240, 133, 73, 64, 21, 0, 10, 15,
-			69, 8, 84, 212, 21, 32, 71, 6, 108, 89, 47, 13, 34, 0, 0, 12, 201, 60, 244, 133, 20, 226, 207, 53, 53, 5, 66, 19, 8, 5,
-			6, 5, 19, 9, 195, 171, 18, 37, 83, 6, 116, 89, 37, 13, 34, 0, 17, 8, 3, 9, 20, 18, 15, 195, 170, 14, 89, 13, 47, 34,
-			40, 50, 0, 15, 66, 16, 80, 72, 13, 15, 55, 35, 0, 72, 81, 108, 97, 32, 8, 66, 16, 80, 72, 13, 0, 9, 16, 70, 28, 243,
-			149, 8, 145, 64, 81, 13, 50, 40, 12, 71, 37, 0, 0, 0, 12, 68, 32, 147, 4, 20, 107, 37, 55, 72, 13, 0, 0, 8, 195, 32,
-			16, 82, 72, 9, 32, 16, 69, 76, 243, 1, 56, 176, 89, 2, 117, 55, 35, 68, 49, 0, 8, 16, 7, 11, 1, 14, 1, 195, 164, 14,
-			49, 115, 50, 115, 35, 50, 0, 0, 0, 18, 71, 64, 148, 143, 84, 85, 20, 20, 48, 13, 34, 40, 12, 6, 108, 47, 0, 20, 71, 4,
-			112, 77, 20, 211, 143, 56, 35, 136, 35, 65, 6, 108, 65, 50, 110, 50, 0, 0, 13, 68, 92, 83, 1, 24, 84, 112, 55, 10, 35, 83,
-			0, 9, 68, 9, 34, 65, 56, 21, 0, 10, 12, 4, 95, 4, 16, 20, 6, 48, 111, 50, 47, 0, 0, 0, 5, 194, 9, 144, 72, 16,
-			66, 17, 80, 72, 13, 15, 47, 125, 0, 81, 116, 111, 105, 116, 32, 19, 66, 17, 80, 72, 13, 15, 48, 34, 6, 116, 0, 81, 112, 114,
-			101, 101, 122, 32, 18, 66, 17, 80, 72, 13, 15, 48, 55, 125, 0, 81, 112, 108, 111, 111, 121, 32, 23, 66, 17, 80, 72, 40, 15, 48,
-			55, 13, 89, 6, 37, 0, 81, 112, 108, 101, 115, 115, 105, 115, 32, 24, 66, 17, 80, 72, 40, 15, 48, 37, 89, 6, 115, 50, 37, 0,
-			81, 112, 105, 115, 97, 110, 105, 101, 32, 5, 194, 17, 80, 72, 0, 10, 199, 80, 83, 141, 36, 228, 212, 20, 66, 0, 13, 68, 32, 19,
-			12, 60, 107, 6, 109, 55, 4, 120, 0, 11, 200, 20, 65, 76, 4, 112, 129, 72, 80, 67, 15, 7, 5, 21, 7, 195, 168, 14, 5, 118,
-			90, 6, 108, 50, 0, 0, 10, 67, 40, 80, 78, 90, 133, 50, 0, 41, 0, 0, 8, 67, 56, 82, 76, 21, 0, 10, 0, 12, 68, 80,
-			19, 135, 4, 47, 35, 68, 81, 35, 0, 8, 196, 80, 83, 147, 100, 66, 8, 7, 196, 56, 17, 1, 80, 8, 0, 8, 197, 24, 195, 210,
-			37, 48, 65, 19, 70, 4, 229, 15, 56, 149, 83, 35, 50, 47, 6, 117, 50, 37, 57, 111, 89, 0, 0, 6, 194, 4, 192, 8, 32, 17,
-			70, 40, 240, 67, 32, 147, 64, 57, 40, 58, 6, 115, 136, 13, 65, 0, 0, 0, 12, 68, 49, 82, 193, 76, 55, 40, 49, 35, 89, 0,
-			12, 68, 29, 33, 84, 4, 81, 34, 116, 47, 35, 0, 13, 4, 95, 20, 12, 4, 47, 6, 109, 55, 72, 13, 0, 0, 10, 69, 92, 21,
-			19, 60, 224, 21, 0, 10, 14, 69, 37, 48, 66, 20, 192, 37, 89, 13, 71, 112, 55, 0, 0, 9, 198, 4, 196, 133, 20, 68, 192, 66,
-			0, 16, 67, 20, 228, 192, 108, 50, 89, 117, 83, 117, 34, 47, 89, 0, 24, 0, 12, 68, 88, 83, 132, 4, 84, 108, 50, 72, 35, 0,
-			9, 68, 12, 242, 5, 56, 21, 0, 10, 0, 13, 69, 12, 131, 208, 36, 224, 91, 2, 110, 48, 133, 0, 0, 17, 70, 60, 213, 18, 20,
-			229, 0, 110, 65, 47, 34, 6, 108, 50, 47, 0, 22, 66, 21, 64, 108, 47, 89, 6, 108, 47, 13, 34, 35, 0, 81, 99, 101, 116, 101,
-			114, 97, 32, 9, 198, 4, 194, 66, 4, 208, 64, 67, 0, 0, 9, 198, 92, 16, 82, 32, 81, 78, 8, 16, 70, 85, 2, 78, 29, 67,
-			206, 35, 48, 37, 68, 47, 13, 50, 0, 0, 0, 17, 70, 52, 242, 1, 52, 209, 68, 65, 40, 107, 6, 35, 65, 13, 47, 0, 0, 0,
-			12, 137, 1, 7, 20, 5, 18, 23, 5, 195, 171, 67, 0, 0, 16, 70, 8, 147, 208, 76, 145, 64, 71, 37, 6, 110, 48, 89, 37, 0,
-			16, 70, 52, 243, 148, 4, 117, 64, 65, 110, 50, 47, 13, 49, 118, 0, 0, 0, 0, 0, 9, 198, 60, 244, 151, 4, 18, 64, 65, 0,
-			0, 9, 198, 72, 243, 132, 20, 83, 0, 66, 9, 68, 48, 245, 73, 76, 55, 126, 0, 0, 8, 197, 60, 244, 139, 60, 208, 66, 14, 69,
-			20, 97, 129, 80, 16, 108, 83, 6, 115, 47, 35, 0, 0, 0, 10, 67, 52, 241, 84, 65, 40, 47, 0, 32, 0, 9, 198, 88, 243, 210,
-			92, 16, 82, 66, 13, 68, 76, 243, 143, 64, 89, 110, 50, 10, 110, 48, 0, 11, 200, 60, 225, 197, 72, 145, 70, 36, 80, 65, 0, 16,
-			70, 24, 85, 1, 44, 16, 83, 83, 108, 47, 35, 49, 115, 89, 0, 13, 69, 76, 128, 82, 60, 224, 91, 112, 34, 14, 50, 0, 10, 69,
-			8, 244, 212, 60, 224, 21, 0, 10, 0, 11, 70, 92, 147, 12, 36, 19, 64, 21, 0, 10, 0, 0, 24, 72, 16, 84, 207, 56, 64, 78,
-			45, 48, 72, 108, 89, 19, 110, 50, 72, 35, 68, 49, 89, 0, 8, 32, 16, 70, 20, 147, 147, 80, 82, 78, 121, 50, 89, 47, 121, 12,
-			50, 0, 20, 9, 23, 1, 12, 12, 15, 14, 9, 195, 171, 84, 35, 55, 6, 117, 50, 37, 13, 0, 0, 14, 69, 8, 84, 212, 21, 48,
-			71, 108, 89, 47, 13, 89, 0, 23, 73, 12, 192, 78, 92, 147, 12, 36, 19, 64, 49, 55, 113, 50, 58, 6, 37, 55, 37, 13, 65, 0,
-			0, 10, 67, 52, 241, 83, 65, 40, 89, 0, 32, 15, 70, 44, 128, 89, 100, 19, 64, 49, 35, 57, 6, 35, 65, 0, 18, 5, 19, 13,
-			19, 39, 5, 108, 89, 10, 108, 65, 10, 6, 108, 89, 13, 0, 0, 0, 0, 11, 68, 8, 245, 8, 4, 71, 117, 47, 35, 0, 0, 14,
-			6, 14, 1, 21, 4, 195, 169, 50, 110, 72, 6, 116, 0, 0, 0, 16, 71, 76, 50, 18, 20, 147, 133, 72, 91, 34, 121, 50, 13, 34,
-			0, 0, 12, 68, 80, 19, 135, 60, 47, 35, 68, 136, 40, 0, 12, 68, 12, 147, 132, 100, 89, 109, 50, 72, 37, 0, 9, 68, 4, 115,
-			133, 76, 21, 0, 10, 12, 68, 44, 243, 135, 60, 49, 110, 68, 81, 40, 0, 0, 0, 17, 70, 56, 85, 19, 61, 113, 76, 50, 108, 47,
-			89, 117, 84, 112, 55, 0, 11, 70, 12, 128, 85, 12, 84, 128, 21, 0, 10, 0, 18, 71, 9, 82, 84, 21, 1, 82, 16, 71, 127, 47,
-			13, 48, 113, 34, 47, 0, 23, 10, 13, 1, 3, 5, 4, 15, 14, 9, 195, 171, 65, 35, 89, 13, 72, 6, 117, 50, 37, 13, 0, 24,
-			10, 2, 1, 2, 9, 12, 15, 14, 9, 195, 171, 71, 35, 71, 37, 55, 6, 117, 50, 37, 38, 13, 0, 0, 11, 68, 4, 195, 1, 32,
-			2, 35, 55, 115, 0, 18, 7, 9, 20, 1, 12, 9, 195, 171, 37, 47, 6, 115, 55, 37, 38, 13, 0, 22, 72, 4, 97, 193, 56, 148,
-			212, 4, 224, 35, 83, 81, 6, 35, 50, 37, 89, 47, 35, 50, 0, 0, 18, 70, 12, 20, 193, 56, 245, 129, 49, 35, 89, 35, 50, 6,
-			117, 84, 35, 0, 0, 0, 0, 11, 68, 32, 19, 143, 84, 107, 115, 50, 120, 0, 0, 18, 70, 76, 241, 15, 20, 225, 5, 89, 6, 117,
-			72, 4, 40, 50, 72, 13, 0, 0, 17, 70, 52, 20, 140, 20, 225, 64, 65, 35, 34, 55, 6, 116, 12, 50, 0, 21, 9, 1, 2, 9,
-			13, 195, 169, 12, 5, 7, 35, 71, 37, 50, 6, 116, 55, 108, 136, 0, 0, 17, 67, 36, 228, 208, 109, 50, 89, 48, 108, 49, 47, 6,
-			128, 34, 0, 24, 0, 13, 68, 88, 84, 129, 24, 83, 112, 34, 10, 35, 83, 0, 12, 68, 88, 19, 129, 24, 83, 35, 50, 35, 83, 0,
-			15, 70, 76, 50, 15, 20, 208, 78, 89, 49, 40, 65, 35, 50, 0, 0, 14, 69, 64, 19, 1, 92, 16, 48, 13, 55, 115, 84, 35, 0,
-			16, 69, 21, 52, 5, 4, 176, 37, 12, 38, 89, 48, 37, 12, 49, 0, 7, 195, 16, 149, 0, 72, 32, 0, 0, 19, 71, 76, 181, 76,
-			16, 83, 1, 76, 89, 49, 111, 55, 72, 13, 55, 35, 89, 0, 20, 71, 56, 20, 193, 72, 83, 133, 72, 50, 35, 89, 35, 34, 6, 116,
-			50, 13, 34, 0, 16, 70, 48, 148, 19, 80, 145, 75, 55, 109, 48, 89, 47, 37, 49, 0, 15, 70, 12, 129, 67, 44, 84, 147, 76, 108,
-			49, 13, 34, 89, 0, 15, 70, 53, 144, 149, 72, 114, 0, 65, 123, 71, 111, 34, 136, 0, 0, 13, 68, 52, 19, 1, 56, 65, 35, 55,
-			6, 35, 50, 0, 0, 14, 69, 52, 17, 1, 52, 80, 65, 35, 72, 6, 115, 65, 0, 13, 69, 52, 20, 148, 32, 16, 65, 35, 34, 47,
-			35, 0, 13, 69, 8, 84, 148, 32, 16, 71, 112, 34, 47, 35, 0, 0, 6, 195, 20, 243, 133, 66, 10, 67, 8, 83, 133, 71, 116, 50,
-			13, 0, 0, 0, 11, 200, 44, 192, 65, 77, 96, 75, 36, 80, 66, 15, 6, 10, 21, 14, 195, 173, 14, 136, 40, 50, 6, 37, 50, 0,
-			0, 10, 67, 41, 80, 78, 136, 58, 35, 50, 0, 16, 70, 28, 83, 210, 28, 147, 129, 75, 131, 75, 6, 37, 50, 35, 0, 17, 70, 16,
-			19, 137, 20, 195, 5, 72, 35, 50, 37, 38, 6, 112, 55, 0, 0, 11, 67, 105, 83, 65, 88, 40, 12, 65, 35, 0, 16, 70, 48, 21,
-			5, 28, 19, 128, 55, 115, 47, 13, 136, 35, 50, 0, 11, 70, 12, 194, 70, 80, 243, 128, 21, 0, 10, 0, 16, 70, 72, 145, 83, 48,
-			147, 135, 34, 37, 12, 89, 55, 37, 68, 0, 7, 195, 16, 19, 128, 8, 32, 20, 71, 52, 85, 21, 76, 19, 5, 52, 65, 13, 47, 6,
-			118, 89, 35, 55, 108, 65, 0, 19, 71, 64, 146, 197, 80, 33, 82, 28, 48, 13, 49, 108, 47, 71, 112, 34, 136, 0, 0, 0, 9, 198,
-			4, 100, 137, 12, 19, 129, 67, 0, 10, 67, 88, 84, 129, 84, 116, 34, 35, 0, 11, 70, 77, 65, 80, 32, 83, 128, 21, 0, 10, 0,
-			10, 67, 88, 84, 128, 83, 6, 113, 34, 0, 10, 199, 16, 85, 82, 28, 16, 78, 76, 65, 0, 16, 73, 52, 17, 1, 52, 242, 83, 20,
-			195, 5, 21, 102, 114, 0, 10, 0, 13, 69, 80, 129, 82, 60, 224, 47, 34, 6, 110, 50, 0, 10, 69, 48, 147, 9, 4, 224, 21, 0,
-			10, 0, 17, 70, 56, 146, 211, 92, 84, 132, 50, 109, 49, 89, 84, 113, 34, 47, 0, 15, 70, 88, 149, 137, 21, 36, 192, 84, 13, 84,
-			13, 57, 116, 0, 0, 0, 10, 67, 88, 84, 135, 83, 112, 34, 136, 0, 9, 68, 32, 83, 5, 56, 21, 0, 10, 0, 14, 69, 52, 244,
-			139, 20, 192, 65, 110, 34, 49, 13, 55, 0, 0, 0, 0, 19, 72, 12, 132, 137, 77, 66, 65, 4, 224, 49, 34, 109, 89, 47, 37, 115,
-			50, 0, 0, 23, 73, 8, 83, 1, 56, 116, 137, 44, 84, 128, 71, 13, 55, 35, 68, 34, 13, 49, 4, 109, 34, 0, 0, 0, 0, 0,
-			14, 69, 77, 80, 137, 21, 64, 89, 111, 71, 6, 37, 47, 0, 9, 198, 4, 193, 193, 4, 225, 5, 66, 0, 6, 194, 8, 240, 72, 12,
-			0, 18, 71, 13, 33, 83, 12, 83, 132, 60, 49, 34, 13, 91, 108, 50, 72, 40, 0, 23, 73, 72, 16, 200, 52, 19, 137, 56, 241, 134,
-			34, 35, 136, 65, 6, 35, 50, 37, 50, 110, 83, 0, 19, 71, 16, 83, 133, 52, 20, 139, 20, 72, 116, 50, 13, 65, 35, 34, 49, 13,
-			0, 18, 71, 8, 241, 75, 5, 33, 83, 80, 71, 40, 49, 35, 34, 108, 89, 47, 0, 0, 0, 16, 69, 36, 225, 21, 56, 16, 37, 50,
-			72, 6, 40, 12, 50, 35, 0, 15, 6, 13, 15, 18, 14, 195, 169, 65, 110, 34, 50, 6, 123, 0, 14, 69, 52, 243, 137, 12, 16, 65,
-			110, 50, 37, 49, 35, 0, 15, 69, 32, 83, 5, 56, 16, 107, 37, 55, 6, 116, 50, 35, 0, 13, 69, 8, 85, 19, 36, 80, 71, 108,
-			47, 89, 37, 0, 0, 0, 0, 0, 15, 69, 80, 245, 1, 48, 80, 47, 40, 47, 6, 115, 55, 13, 0, 14, 69, 56, 17, 5, 48, 80,
-			50, 115, 72, 116, 55, 13, 0, 18, 70, 52, 16, 193, 72, 243, 137, 65, 35, 49, 35, 34, 6, 117, 50, 37, 0, 21, 73, 12, 132, 137,
-			77, 67, 198, 24, 83, 0, 49, 34, 13, 89, 47, 110, 83, 13, 55, 0, 17, 69, 4, 209, 76, 36, 16, 35, 65, 6, 37, 12, 55, 37,
-			57, 35, 0, 14, 69, 28, 17, 1, 72, 16, 136, 13, 72, 115, 34, 35, 0, 0, 0, 17, 3, 226, 133, 148, 47, 58, 4, 116, 72, 6,
-			113, 34, 72, 13, 89, 0, 0, 13, 68, 72, 243, 133, 48, 34, 40, 50, 6, 112, 55, 0, 0, 18, 70, 40, 18, 207, 52, 147, 129, 57,
-			35, 49, 40, 65, 6, 37, 50, 35, 0, 0, 9, 198, 20, 180, 212, 20, 83, 128, 65, 16, 70, 45, 84, 149, 52, 19, 128, 49, 40, 34,
-			40, 65, 35, 50, 0, 0, 16, 70, 21, 33, 197, 72, 147, 135, 112, 34, 81, 13, 34, 13, 68, 0, 0, 12, 68, 16, 20, 133, 52, 72,
-			35, 34, 13, 65, 0, 14, 70, 12, 147, 147, 5, 85, 0, 89, 13, 50, 89, 117, 0, 11, 3, 226, 133, 147, 72, 113, 34, 72, 13, 0,
-			0, 15, 69, 36, 229, 5, 57, 48, 13, 50, 47, 6, 108, 50, 89, 0, 14, 69, 20, 193, 5, 73, 48, 112, 55, 72, 13, 34, 89, 0,
-			14, 73, 77, 4, 137, 56, 116, 212, 20, 83, 128, 21, 0, 10, 0, 10, 198, 60, 100, 203, 60, 243, 128, 66, 8, 9, 198, 88, 147, 10,
-			60, 83, 128, 66, 13, 70, 5, 98, 71, 56, 243, 128, 21, 102, 114, 0, 10, 0, 0, 9, 68, 20, 197, 137, 76, 21, 0, 10, 0, 19,
-			70, 5, 3, 212, 20, 244, 197, 35, 48, 110, 47, 37, 38, 6, 117, 89, 13, 0, 14, 69, 52, 245, 84, 60, 224, 65, 40, 47, 6, 110,
-			50, 0, 0, 9, 198, 8, 244, 203, 4, 20, 192, 66, 11, 70, 8, 80, 84, 48, 84, 192, 21, 0, 10, 16, 70, 52, 84, 211, 36, 20,
-			192, 65, 13, 89, 37, 57, 35, 89, 0, 15, 70, 8, 244, 12, 4, 20, 192, 71, 117, 48, 55, 115, 89, 0, 0, 10, 67, 4, 128, 64,
-			115, 107, 26, 115, 0, 19, 71, 52, 21, 82, 37, 66, 85, 76, 65, 110, 34, 6, 37, 91, 57, 111, 89, 0, 0, 9, 68, 92, 83, 132,
-			100, 21, 0, 10, 10, 3, 95, 49, 15, 10, 6, 116, 34, 0, 0, 0, 10, 3, 95, 49, 1, 10, 6, 116, 50, 0, 0, 14, 71, 8,
-			245, 82, 28, 83, 201, 76, 21, 102, 114, 0, 10, 9, 3, 226, 130, 172, 128, 34, 40, 0, 0, 19, 8, 22, 15, 195, 171, 12, 5, 14,
-			20, 83, 117, 13, 55, 10, 108, 50, 47, 0, 0, 0, 17, 70, 56, 244, 141, 4, 193, 64, 50, 110, 34, 65, 6, 115, 55, 13, 0, 0,
-			0, 24, 67, 64, 144, 203, 48, 4, 37, 49, 15, 13, 50, 15, 48, 6, 123, 0, 82, 110, 32, 112, 97, 121, 32, 10, 3, 95, 50, 15,
-			47, 58, 6, 116, 0, 0, 0, 9, 66, 20, 176, 112, 49, 0, 72, 32, 0, 0, 10, 67, 88, 84, 147, 83, 113, 34, 89, 0, 12, 68,
-			28, 83, 133, 72, 136, 116, 50, 13, 34, 0, 13, 68, 5, 51, 207, 44, 2, 35, 89, 10, 117, 49, 0, 0, 15, 69, 76, 19, 1, 52,
-			144, 89, 35, 55, 6, 115, 65, 37, 0, 7, 195, 32, 85, 0, 72, 32, 16, 69, 17, 99, 210, 4, 176, 72, 14, 84, 6, 131, 90, 35,
-			49, 0, 0, 16, 70, 81, 32, 71, 36, 82, 192, 47, 34, 35, 136, 6, 37, 49, 0, 17, 70, 9, 33, 89, 4, 226, 64, 71, 34, 37,
-			57, 6, 115, 50, 37, 0, 16, 70, 65, 33, 83, 80, 146, 192, 48, 34, 108, 89, 47, 37, 49, 0, 24, 74, 64, 245, 3, 32, 81, 147,
-			81, 35, 207, 52, 48, 110, 76, 109, 83, 89, 47, 34, 6, 117, 65, 0, 0, 11, 199, 60, 225, 5, 73, 113, 82, 64, 67, 36, 10, 199,
-			28, 84, 136, 5, 33, 21, 76, 66, 0, 9, 68, 40, 243, 133, 76, 21, 0, 10, 10, 3, 95, 51, 15, 72, 6, 113, 34, 0, 0, 15,
-			69, 76, 243, 149, 72, 80, 89, 110, 50, 10, 118, 34, 13, 0, 0, 6, 194, 37, 48, 72, 32, 0, 12, 71, 92, 147, 66, 48, 81, 15,
-			56, 21, 0, 10, 0, 20, 72, 5, 36, 143, 28, 19, 147, 36, 80, 35, 34, 40, 136, 6, 35, 50, 89, 37, 0, 12, 68, 76, 245, 8,
-			60, 89, 40, 12, 47, 40, 0, 9, 67, 41, 83, 135, 57, 40, 68, 0, 0, 0, 0, 9, 198, 32, 84, 139, 84, 193, 83, 65, 17, 70,
-			44, 19, 1, 24, 243, 135, 49, 35, 55, 35, 83, 6, 110, 68, 0, 0, 0, 0, 20, 9, 6, 18, 1, 14, 195, 167, 15, 9, 19, 83,
-			34, 133, 50, 89, 58, 6, 115, 0, 0, 6, 195, 16, 148, 192, 72, 14, 71, 12, 129, 86, 72, 243, 5, 80, 21, 102, 114, 0, 10, 0,
-			0, 15, 70, 56, 245, 83, 20, 64, 69, 50, 120, 89, 13, 72, 115, 0, 0, 16, 70, 80, 84, 85, 36, 192, 64, 47, 13, 49, 37, 12,
-			55, 35, 0, 16, 70, 44, 19, 9, 20, 96, 64, 49, 35, 55, 6, 37, 83, 35, 0, 17, 70, 56, 21, 1, 76, 160, 64, 50, 2, 35,
-			47, 6, 35, 91, 35, 0, 18, 70, 52, 21, 8, 36, 20, 192, 65, 35, 47, 6, 37, 12, 57, 35, 89, 0, 9, 198, 8, 84, 141, 84,
-			64, 64, 66, 0, 19, 71, 65, 33, 84, 61, 34, 85, 76, 48, 34, 13, 47, 117, 34, 37, 111, 89, 0, 0, 20, 72, 29, 34, 69, 44,
-			83, 1, 56, 64, 136, 34, 37, 49, 13, 55, 35, 50, 47, 0, 0, 9, 197, 60, 244, 150, 4, 192, 66, 36, 10, 69, 56, 83, 19, 60,
-			224, 21, 0, 10, 0, 25, 74, 76, 225, 69, 84, 32, 76, 20, 97, 133, 44, 89, 50, 119, 71, 35, 55, 10, 37, 83, 4, 108, 49, 0,
-			10, 67, 8, 85, 197, 71, 116, 84, 13, 0, 17, 70, 76, 81, 129, 56, 160, 64, 89, 13, 83, 6, 35, 50, 57, 35, 0, 14, 4, 95,
-			13, 3, 14, 65, 6, 35, 49, 34, 110, 50, 0, 0, 20, 71, 28, 192, 68, 36, 21, 15, 72, 136, 55, 35, 72, 37, 6, 115, 47, 110,
-			34, 0, 0, 15, 70, 72, 145, 75, 21, 37, 0, 34, 37, 49, 13, 34, 47, 0, 0, 0, 0, 20, 71, 52, 20, 203, 21, 34, 78, 28,
-			65, 35, 89, 49, 6, 116, 34, 13, 68, 0, 9, 15, 69, 32, 20, 132, 61, 0, 107, 35, 34, 47, 19, 110, 48, 0, 16, 6, 11, 1,
-			195, 175, 18, 15, 49, 35, 10, 6, 37, 34, 40, 0, 0, 12, 68, 64, 20, 139, 20, 48, 35, 34, 49, 13, 0, 14, 70, 8, 83, 142,
-			21, 69, 0, 71, 108, 50, 13, 47, 0, 0, 17, 70, 76, 147, 129, 28, 241, 197, 89, 13, 50, 13, 136, 117, 136, 13, 0, 25, 73, 28,
-			241, 1, 48, 208, 71, 80, 145, 192, 136, 110, 47, 10, 35, 55, 65, 6, 35, 136, 47, 13, 136, 0, 10, 69, 77, 69, 65, 73, 64, 21,
-			0, 10, 14, 69, 29, 84, 212, 5, 96, 81, 40, 89, 47, 35, 83, 0, 0, 9, 198, 52, 20, 211, 4, 193, 64, 66, 15, 70, 12, 81,
-			9, 48, 193, 64, 89, 13, 72, 109, 55, 13, 0, 14, 70, 64, 244, 147, 12, 129, 64, 48, 110, 34, 91, 13, 0, 15, 70, 21, 53, 5,
-			48, 193, 64, 2, 37, 89, 47, 112, 55, 0, 0, 0, 7, 196, 76, 244, 1, 76, 66, 13, 68, 16, 149, 129, 56, 72, 37, 84, 6, 35,
-			50, 0, 9, 198, 4, 197, 5, 52, 149, 0, 67, 12, 5, 10, 15, 19, 195, 169, 21, 101, 115, 0, 10, 0, 18, 70, 36, 228, 207, 52,
-			226, 65, 13, 50, 89, 110, 65, 50, 37, 57, 35, 0, 16, 69, 32, 83, 5, 56, 80, 107, 37, 12, 55, 6, 37, 12, 50, 0, 0, 0,
-			20, 71, 92, 83, 9, 77, 112, 65, 72, 84, 6, 112, 55, 14, 89, 84, 115, 34, 0, 8, 11, 70, 56, 144, 200, 60, 192, 83, 21, 0,
-			10, 18, 71, 76, 147, 135, 5, 3, 197, 72, 89, 37, 68, 81, 35, 48, 40, 34, 0, 0, 21, 72, 88, 243, 210, 52, 19, 9, 28, 80,
-			83, 117, 34, 65, 6, 115, 55, 13, 136, 13, 0, 12, 68, 88, 84, 130, 100, 83, 13, 34, 71, 123, 0, 11, 68, 60, 244, 140, 20, 117,
-			34, 55, 13, 0, 27, 13, 19, 20, 15, 3, 11, 5, 14, 19, 20, 18, 195, 182, 13, 89, 47, 110, 49, 13, 50, 89, 47, 34, 117, 65,
-			0, 11, 68, 24, 20, 129, 60, 83, 115, 34, 117, 0, 12, 68, 12, 84, 133, 76, 89, 116, 34, 13, 89, 0, 12, 3, 95, 55, 15, 89,
-			6, 116, 84, 13, 50, 0, 0, 19, 70, 77, 80, 149, 72, 34, 65, 89, 111, 71, 6, 111, 34, 71, 37, 57, 35, 0, 12, 201, 32, 243,
-			198, 76, 16, 75, 48, 146, 192, 66, 0, 9, 198, 60, 224, 146, 84, 146, 192, 65, 0, 12, 71, 77, 83, 142, 101, 50, 68, 20, 21, 0,
-			10, 0, 11, 68, 4, 68, 137, 20, 115, 72, 34, 37, 0, 24, 73, 64, 130, 76, 4, 65, 76, 64, 130, 65, 83, 13, 55, 13, 72, 6,
-			112, 55, 83, 37, 38, 35, 0, 17, 6, 95, 18, 15, 13, 1, 14, 34, 40, 65, 6, 123, 50, 89, 13, 0, 0, 0, 0, 10, 199, 4,
-			113, 210, 21, 52, 201, 20, 66, 9, 198, 32, 84, 131, 84, 193, 83, 65, 0, 16, 70, 12, 132, 137, 76, 160, 78, 49, 34, 109, 89, 57,
-			35, 50, 0, 0, 0, 7, 194, 20, 224, 72, 8, 32, 0, 10, 199, 16, 148, 204, 20, 180, 201, 20, 66, 13, 3, 95, 51, 88, 6, 72,
-			112, 34, 47, 109, 136, 0, 0, 21, 9, 8, 5, 12, 12, 15, 195, 175, 19, 5, 107, 108, 55, 40, 58, 6, 37, 12, 88, 0, 13, 3,
-			95, 48, 67, 6, 107, 110, 50, 13, 34, 47, 0, 0, 8, 197, 60, 228, 129, 4, 64, 65, 27, 69, 29, 32, 65, 24, 96, 136, 34, 115,
-			83, 15, 34, 13, 50, 6, 108, 47, 0, 81, 114, 101, 105, 110, 101, 116, 32, 13, 69, 12, 86, 76, 60, 224, 89, 13, 55, 110, 50, 0,
-			0, 14, 70, 77, 68, 129, 85, 52, 192, 89, 47, 34, 129, 89, 0, 0, 19, 71, 52, 145, 23, 36, 229, 5, 72, 65, 109, 72, 84, 13,
-			50, 47, 13, 34, 0, 0, 13, 72, 92, 20, 200, 36, 225, 212, 60, 224, 21, 0, 10, 11, 3, 95, 57, 15, 50, 116, 136, 13, 50, 0,
-			0, 14, 69, 76, 19, 85, 20, 192, 89, 115, 65, 118, 13, 55, 0, 0, 17, 70, 29, 35, 206, 17, 148, 192, 136, 34, 131, 50, 47, 10,
-			123, 89, 0, 9, 198, 21, 32, 83, 53, 84, 192, 66, 0, 10, 199, 28, 84, 148, 73, 82, 68, 4, 66, 0, 9, 68, 12, 20, 143, 48,
-			21, 0, 10, 0, 0, 14, 70, 76, 50, 21, 81, 65, 64, 89, 49, 111, 47, 13, 0, 14, 70, 4, 227, 133, 81, 65, 64, 35, 50, 6,
-			108, 47, 0, 0, 0, 0, 0, 16, 70, 88, 84, 135, 21, 65, 64, 83, 13, 34, 136, 116, 47, 13, 0, 16, 70, 69, 82, 74, 61, 65,
-			64, 49, 37, 136, 6, 110, 47, 108, 0, 15, 3, 95, 49, 57, 6, 50, 116, 136, 13, 50, 47, 37, 50, 0, 0, 13, 3, 95, 49, 56,
-			10, 6, 35, 136, 47, 37, 50, 0, 0, 0, 14, 69, 57, 83, 69, 72, 144, 50, 111, 65, 13, 34, 37, 0, 13, 69, 20, 224, 207, 72,
-			80, 133, 68, 49, 131, 34, 0, 15, 69, 52, 18, 149, 8, 16, 65, 35, 57, 6, 40, 71, 35, 0, 0, 0, 0, 20, 72, 88, 84, 140,
-			4, 225, 211, 80, 80, 83, 13, 34, 55, 35, 68, 89, 47, 13, 0, 8, 196, 4, 117, 5, 72, 72, 12, 0, 15, 69, 4, 97, 193, 56,
-			80, 35, 83, 81, 6, 115, 50, 13, 0, 8, 197, 80, 246, 79, 80, 16, 66, 11, 3, 226, 136, 146, 65, 37, 50, 111, 89, 0, 0, 6,
-			194, 33, 144, 72, 32, 11, 70, 29, 33, 71, 61, 38, 64, 21, 0, 10, 11, 3, 95, 49, 49, 10, 6, 112, 55, 83, 0, 0, 10, 3,
-			95, 49, 48, 6, 47, 37, 50, 0, 0, 11, 200, 12, 19, 142, 20, 195, 15, 56, 144, 67, 13, 3, 95, 49, 51, 6, 72, 112, 34, 47,
-			37, 50, 0, 0, 13, 3, 95, 49, 50, 6, 47, 58, 6, 115, 55, 83, 0, 0, 13, 3, 95, 49, 53, 6, 83, 123, 83, 47, 37, 50,
-			0, 0, 9, 67, 40, 242, 12, 57, 117, 55, 0, 13, 3, 95, 49, 52, 6, 83, 116, 34, 47, 37, 50, 0, 0, 15, 3, 95, 49, 55,
-			6, 89, 116, 84, 13, 50, 47, 37, 50, 0, 0, 17, 70, 72, 81, 5, 16, 83, 5, 34, 116, 72, 13, 72, 116, 55, 13, 0, 13, 3,
-			95, 49, 54, 6, 89, 108, 89, 47, 37, 50, 0, 0, 0, 9, 198, 52, 84, 131, 20, 65, 83, 66, 15, 3, 95, 55, 88, 6, 89, 116,
-			84, 13, 50, 47, 109, 136, 0, 0, 12, 68, 76, 245, 133, 72, 89, 117, 83, 112, 34, 0, 11, 68, 12, 132, 137, 76, 49, 34, 109, 89,
-			0, 0, 0, 9, 198, 60, 224, 133, 29, 34, 80, 65, 0, 0, 0, 0, 16, 70, 89, 32, 80, 73, 148, 192, 83, 34, 115, 48, 34, 123,
-			89, 0, 0, 18, 71, 77, 65, 80, 32, 19, 149, 76, 89, 47, 13, 83, 115, 50, 111, 89, 0, 0, 0, 0, 17, 70, 76, 243, 66, 21,
-			33, 64, 89, 6, 110, 65, 71, 13, 34, 13, 0, 16, 70, 69, 82, 88, 61, 65, 64, 49, 37, 136, 6, 110, 47, 108, 0, 0, 20, 8,
-			3, 5, 19, 1, 18, 195, 169, 1, 89, 13, 89, 13, 34, 37, 12, 57, 35, 0, 0, 0, 0, 9, 198, 45, 83, 20, 85, 33, 64, 66,
-			0, 0, 22, 72, 48, 148, 197, 57, 50, 65, 5, 64, 55, 13, 89, 134, 50, 89, 37, 38, 6, 115, 47, 0, 0, 16, 70, 52, 148, 212,
-			21, 34, 69, 65, 13, 89, 47, 116, 34, 37, 0, 9, 198, 24, 16, 212, 61, 69, 77, 66, 15, 69, 84, 197, 78, 16, 144, 40, 55, 6,
-			40, 50, 72, 37, 0, 0, 17, 70, 64, 20, 16, 21, 33, 76, 48, 35, 48, 13, 34, 6, 112, 55, 0, 0, 17, 70, 60, 225, 5, 73,
-			34, 71, 110, 50, 13, 34, 6, 109, 136, 0, 36, 10, 199, 4, 19, 135, 21, 50, 69, 56, 8, 0, 12, 68, 24, 244, 148, 20, 83, 110,
-			34, 47, 13, 0, 24, 68, 12, 20, 144, 20, 49, 35, 34, 48, 108, 15, 72, 37, 12, 108, 65, 0, 81, 100, 105, 101, 109, 32, 7, 196,
-			40, 244, 137, 76, 65, 9, 68, 32, 83, 146, 100, 21, 0, 10, 0, 15, 69, 56, 17, 193, 56, 16, 50, 35, 81, 6, 115, 50, 35, 0,
-			0, 9, 198, 60, 225, 197, 49, 146, 192, 65, 17, 70, 44, 20, 9, 81, 65, 76, 49, 35, 48, 6, 109, 47, 13, 55, 0, 20, 9, 13,
-			1, 20, 20, 8, 5, 195, 188, 19, 65, 35, 47, 6, 37, 12, 111, 89, 0, 16, 7, 7, 5, 14, 195, 168, 22, 5, 90, 13, 50, 108,
-			12, 84, 0, 0, 14, 3, 95, 50, 88, 6, 47, 58, 109, 50, 47, 109, 136, 0, 0, 9, 68, 16, 21, 137, 16, 21, 0, 10, 17, 67,
-			65, 33, 83, 48, 34, 13, 89, 13, 72, 6, 108, 50, 47, 0, 24, 0, 0, 0, 0, 26, 12, 11, 14, 1, 16, 19, 5, 11, 195, 170,
-			18, 5, 12, 49, 50, 35, 48, 89, 13, 49, 113, 34, 13, 55, 0, 10, 3, 95, 56, 15, 10, 6, 35, 136, 0, 0, 14, 69, 48, 242,
-			193, 5, 48, 55, 110, 49, 10, 115, 89, 0, 9, 197, 4, 225, 5, 73, 48, 8, 32, 0, 0, 0, 0, 0, 0, 16, 70, 25, 32, 78,
-			12, 242, 83, 83, 34, 35, 50, 91, 58, 35, 0, 0, 14, 68, 37, 53, 90, 84, 37, 89, 6, 40, 12, 88, 40, 0, 13, 3, 95, 63,
-			63, 89, 13, 65, 71, 6, 117, 55, 0, 0, 19, 8, 9, 18, 15, 14, 9, 5, 195, 171, 37, 34, 40, 50, 6, 37, 12, 13, 0, 14,
-			69, 36, 225, 9, 20, 224, 109, 50, 72, 37, 50, 0, 36, 9, 67, 28, 81, 78, 136, 116, 50, 0, 17, 70, 4, 97, 193, 4, 228, 197,
-			35, 83, 81, 6, 115, 50, 89, 13, 0, 20, 8, 1, 12, 7, 5, 18, 9, 195, 171, 35, 55, 136, 6, 116, 34, 116, 12, 14, 0, 0,
-			11, 70, 13, 147, 148, 32, 144, 64, 21, 0, 10, 0, 8, 67, 28, 81, 64, 136, 116, 0, 18, 71, 12, 132, 137, 77, 66, 65, 56, 49,
-			34, 109, 89, 47, 37, 35, 50, 0, 20, 71, 48, 17, 25, 9, 32, 78, 16, 55, 123, 72, 37, 71, 34, 6, 35, 50, 47, 0, 13, 3,
-			95, 52, 88, 6, 83, 116, 34, 47, 109, 136, 0, 0, 0, 16, 69, 88, 84, 132, 21, 32, 83, 6, 112, 34, 72, 13, 34, 0, 8, 10,
-			69, 21, 35, 133, 77, 64, 21, 0, 10, 20, 70, 104, 147, 66, 4, 37, 197, 88, 109, 12, 65, 71, 6, 35, 71, 10, 58, 108, 0, 0,
-			15, 70, 77, 86, 133, 81, 65, 64, 89, 40, 88, 6, 108, 47, 0, 10, 67, 60, 193, 193, 110, 55, 81, 35, 0, 15, 70, 52, 83, 1,
-			56, 145, 64, 65, 13, 55, 115, 50, 37, 0, 0, 0, 0, 14, 69, 72, 82, 197, 57, 64, 34, 116, 49, 13, 50, 47, 0, 8, 67, 40,
-			240, 78, 21, 0, 10, 10, 69, 32, 19, 76, 21, 64, 21, 0, 10, 0, 25, 74, 64, 81, 1, 48, 81, 5, 53, 2, 78, 28, 48, 13,
-			72, 115, 55, 13, 72, 108, 65, 48, 13, 68, 0, 5, 194, 56, 16, 72, 8, 66, 48, 80, 55, 13, 0, 9, 17, 70, 64, 244, 148, 84,
-			112, 76, 48, 110, 34, 47, 118, 136, 35, 55, 0, 0, 10, 199, 60, 244, 147, 81, 35, 207, 52, 66, 13, 3, 95, 53, 88, 6, 83, 123,
-			83, 47, 109, 136, 0, 0, 13, 68, 76, 241, 18, 4, 89, 117, 72, 34, 6, 115, 0, 7, 196, 76, 241, 18, 4, 8, 9, 68, 72, 245,
-			133, 72, 21, 0, 10, 0, 16, 73, 8, 245, 82, 28, 83, 201, 76, 145, 64, 21, 102, 114, 0, 10, 12, 69, 64, 145, 82, 72, 80, 48,
-			6, 116, 34, 0, 14, 69, 21, 35, 69, 48, 240, 112, 34, 65, 13, 55, 117, 0, 0, 25, 74, 76, 19, 135, 20, 209, 69, 57, 50, 193,
-			64, 89, 35, 50, 136, 13, 65, 116, 50, 89, 49, 35, 48, 0, 0, 17, 71, 76, 86, 67, 32, 83, 12, 20, 89, 123, 91, 6, 112, 55,
-			13, 0, 0, 0, 8, 197, 60, 244, 147, 20, 80, 66, 0, 6, 194, 41, 144, 72, 32, 9, 198, 16, 241, 66, 4, 18, 64, 66, 0, 20,
-			71, 72, 245, 5, 72, 83, 132, 20, 34, 40, 47, 6, 116, 34, 13, 50, 72, 13, 0, 13, 3, 95, 54, 88, 6, 89, 108, 89, 47, 109,
-			136, 0, 0, 23, 73, 60, 33, 82, 4, 211, 69, 72, 112, 85, 117, 71, 13, 34, 6, 35, 65, 13, 34, 81, 129, 0, 0, 24, 73, 16,
-			244, 212, 60, 161, 87, 76, 178, 64, 72, 110, 89, 47, 110, 57, 6, 108, 84, 89, 49, 37, 0, 22, 73, 28, 244, 132, 60, 228, 194, 4,
-			18, 64, 81, 131, 34, 72, 13, 50, 89, 71, 6, 122, 0, 0, 16, 70, 44, 133, 77, 4, 195, 192, 49, 40, 65, 6, 115, 55, 40, 0,
-			17, 7, 2, 15, 7, 15, 20, 195, 161, 71, 110, 81, 110, 47, 6, 115, 0, 0, 19, 71, 16, 85, 82, 20, 229, 25, 16, 72, 118, 13,
-			34, 13, 50, 47, 123, 47, 0, 18, 71, 8, 85, 8, 48, 82, 5, 52, 71, 108, 47, 10, 55, 37, 108, 65, 0, 0, 13, 70, 52, 243,
-			147, 36, 85, 82, 21, 102, 114, 0, 10, 21, 72, 32, 84, 146, 101, 49, 78, 37, 48, 107, 112, 34, 6, 123, 89, 13, 50, 13, 89, 0,
-			17, 70, 32, 20, 148, 77, 65, 82, 107, 35, 34, 47, 89, 47, 112, 34, 0, 0, 14, 69, 73, 84, 208, 21, 48, 34, 111, 89, 48, 13,
-			89, 0, 8, 197, 5, 52, 18, 37, 48, 66, 0, 9, 67, 40, 241, 89, 75, 120, 37, 0, 0, 0, 0, 17, 70, 81, 51, 197, 56, 19,
-			73, 47, 89, 40, 50, 6, 115, 65, 37, 0, 17, 70, 52, 19, 8, 21, 32, 133, 65, 35, 55, 6, 112, 34, 71, 13, 0, 0, 16, 70,
-			16, 146, 215, 20, 196, 192, 72, 109, 49, 84, 13, 55, 89, 0, 17, 70, 76, 17, 193, 72, 144, 64, 89, 35, 136, 35, 34, 6, 37, 35,
-			0, 11, 70, 40, 84, 211, 36, 48, 64, 21, 0, 10, 18, 70, 28, 19, 9, 48, 80, 64, 136, 35, 55, 13, 55, 6, 37, 12, 35, 0,
-			0, 0, 0, 10, 69, 17, 84, 212, 36, 224, 21, 0, 10, 0, 0, 20, 71, 5, 48, 70, 77, 64, 78, 16, 35, 89, 10, 35, 83, 89,
-			47, 35, 50, 47, 0, 8, 195, 40, 245, 64, 72, 9, 32, 9, 67, 52, 21, 68, 65, 131, 72, 0, 13, 3, 95, 56, 88, 6, 47, 35,
-			136, 47, 109, 136, 0, 0, 0, 20, 8, 1, 12, 2, 1, 14, 9, 195, 171, 35, 55, 71, 6, 115, 50, 116, 12, 14, 0, 0, 0, 0,
-			21, 73, 72, 144, 200, 5, 33, 19, 8, 16, 73, 34, 37, 76, 13, 72, 89, 71, 6, 122, 0, 0, 23, 73, 44, 19, 69, 72, 17, 5,
-			72, 145, 64, 49, 35, 65, 13, 34, 115, 72, 13, 34, 6, 37, 0, 0, 13, 70, 12, 128, 82, 48, 145, 64, 76, 115, 55, 37, 0, 0,
-			15, 3, 95, 57, 88, 6, 50, 116, 136, 13, 50, 47, 109, 136, 0, 0, 0, 13, 69, 12, 241, 206, 4, 48, 49, 110, 67, 35, 49, 0,
-			6, 195, 52, 85, 0, 72, 0, 0, 15, 70, 64, 130, 76, 48, 148, 19, 83, 109, 55, 13, 48, 89, 0, 20, 71, 44, 193, 79, 64, 21,
-			18, 4, 49, 55, 119, 12, 48, 6, 115, 47, 34, 35, 0, 0, 19, 72, 4, 229, 15, 36, 225, 84, 80, 80, 35, 50, 47, 40, 50, 6,
-			108, 47, 0, 0, 14, 69, 12, 20, 9, 80, 16, 49, 35, 48, 37, 47, 35, 0, 13, 69, 4, 209, 76, 20, 80, 35, 65, 13, 55, 116,
-			0, 20, 8, 2, 15, 12, 9, 22, 9, 195, 171, 71, 40, 55, 6, 109, 84, 37, 12, 13, 0, 0, 9, 198, 52, 19, 5, 4, 114, 64,
-			67, 15, 70, 76, 50, 15, 49, 70, 128, 89, 49, 131, 55, 47, 89, 0, 12, 3, 95, 63, 65, 55, 6, 108, 47, 13, 34, 0, 0, 23,
-			73, 76, 197, 73, 80, 85, 197, 56, 16, 82, 89, 55, 127, 47, 10, 116, 84, 13, 50, 115, 34, 0, 10, 199, 60, 227, 205, 92, 243, 132,
-			20, 67, 19, 71, 76, 80, 129, 77, 66, 65, 56, 89, 13, 71, 35, 89, 47, 37, 35, 50, 0, 0, 17, 70, 44, 19, 69, 72, 241, 78,
-			49, 35, 65, 13, 34, 6, 40, 50, 0, 0, 0, 0, 0, 0, 18, 70, 77, 84, 137, 56, 19, 69, 89, 118, 34, 37, 50, 6, 115, 65,
-			13, 0, 0, 10, 3, 19, 39, 14, 89, 13, 50, 0, 72, 0, 5, 194, 36, 224, 72, 10, 3, 226, 153, 175, 49, 34, 127, 89, 0, 0,
-			0, 9, 68, 72, 240, 137, 56, 21, 0, 10, 9, 3, 226, 153, 173, 65, 110, 55, 0, 0, 0, 17, 70, 44, 21, 5, 80, 84, 128, 49,
-			35, 47, 6, 116, 47, 13, 34, 0, 0, 10, 199, 76, 48, 82, 48, 21, 20, 36, 66, 14, 4, 95, 15, 7, 15, 117, 136, 117, 50, 4,
-			112, 49, 0, 0, 0, 15, 69, 52, 20, 148, 36, 224, 65, 6, 115, 34, 47, 13, 50, 0, 10, 69, 8, 83, 147, 60, 224, 21, 0, 10,
-			8, 197, 8, 20, 211, 60, 224, 66, 0, 15, 70, 64, 85, 15, 61, 36, 192, 48, 13, 47, 117, 34, 89, 0, 15, 70, 48, 245, 66, 76,
-			84, 128, 55, 120, 48, 91, 13, 34, 0, 15, 70, 8, 244, 132, 20, 21, 88, 71, 110, 34, 72, 6, 120, 0, 0, 20, 71, 28, 84, 141,
-			60, 193, 78, 20, 75, 109, 12, 65, 13, 55, 6, 37, 12, 50, 0, 15, 70, 24, 84, 146, 20, 148, 129, 83, 13, 34, 113, 34, 13, 0,
-			0, 0, 17, 70, 77, 65, 82, 92, 83, 147, 89, 47, 112, 34, 84, 13, 50, 89, 0, 10, 198, 52, 148, 194, 73, 82, 75, 66, 36, 21,
-			73, 20, 225, 197, 48, 36, 133, 12, 133, 0, 108, 68, 13, 55, 71, 34, 112, 136, 47, 0, 0, 0, 18, 70, 64, 192, 83, 20, 229, 1,
-			48, 55, 35, 89, 6, 108, 50, 47, 35, 0, 10, 199, 36, 225, 197, 88, 243, 7, 20, 67, 0, 19, 8, 13, 1, 2, 1, 12, 195, 170,
-			12, 65, 35, 71, 35, 55, 6, 112, 55, 0, 0, 0, 0, 13, 6, 18, 5, 14, 195, 169, 5, 34, 13, 50, 123, 0, 17, 70, 52, 21,
-			8, 36, 193, 1, 65, 35, 47, 6, 109, 55, 72, 35, 0, 21, 67, 77, 84, 20, 89, 40, 48, 34, 108, 50, 47, 108, 50, 72, 6, 108,
-			50, 47, 0, 24, 0, 33, 68, 52, 241, 21, 76, 65, 4, 117, 72, 111, 89, 15, 117, 48, 13, 34, 6, 35, 50, 72, 37, 0, 81, 111,
-			112, 101, 114, 97, 110, 100, 105, 32, 0, 8, 197, 60, 212, 133, 16, 80, 66, 13, 69, 60, 85, 86, 72, 80, 111, 12, 84, 34, 13, 0,
-			15, 69, 56, 21, 21, 72, 80, 50, 35, 47, 6, 118, 34, 13, 0, 0, 0, 11, 199, 60, 225, 5, 73, 51, 197, 44, 67, 36, 10, 199,
-			16, 85, 82, 45, 37, 73, 76, 66, 20, 71, 52, 19, 148, 61, 96, 78, 36, 65, 35, 50, 47, 110, 84, 6, 115, 50, 37, 0, 13, 67,
-			28, 83, 140, 136, 13, 50, 13, 34, 115, 55, 0, 0, 9, 198, 52, 20, 211, 4, 19, 0, 66, 21, 72, 12, 20, 16, 84, 48, 201, 56,
-			240, 49, 35, 48, 40, 76, 6, 37, 12, 50, 40, 0, 22, 68, 80, 128, 66, 4, 47, 35, 71, 6, 115, 15, 50, 76, 40, 0, 81, 110,
-			99, 104, 117, 32, 13, 72, 8, 243, 142, 36, 85, 129, 48, 80, 21, 0, 10, 0, 16, 69, 12, 20, 201, 56, 240, 49, 35, 89, 6, 37,
-			12, 50, 120, 0, 14, 69, 48, 83, 206, 36, 80, 55, 37, 6, 117, 50, 37, 0, 0, 9, 198, 88, 243, 8, 20, 145, 0, 65, 0, 22,
-			73, 77, 112, 78, 28, 84, 147, 92, 16, 82, 89, 58, 35, 68, 13, 34, 89, 58, 115, 34, 0, 23, 67, 65, 35, 192, 48, 34, 117, 15,
-			83, 6, 110, 34, 65, 35, 0, 81, 102, 111, 114, 109, 97, 32, 19, 71, 8, 244, 212, 4, 19, 132, 20, 71, 6, 117, 89, 47, 115, 50,
-			72, 13, 0, 7, 195, 4, 19, 128, 72, 12, 20, 71, 64, 83, 9, 56, 64, 66, 4, 48, 112, 55, 13, 50, 72, 6, 115, 71, 35, 0,
-			0, 22, 72, 20, 193, 77, 20, 229, 1, 48, 80, 108, 55, 13, 65, 108, 50, 47, 6, 115, 55, 13, 0, 0, 13, 69, 16, 85, 82, 73,
-			144, 72, 128, 34, 34, 123, 0, 16, 67, 65, 35, 198, 48, 34, 40, 83, 6, 108, 89, 13, 34, 0, 24, 0, 21, 9, 13, 9, 12, 9,
-			20, 195, 170, 18, 5, 65, 109, 55, 13, 47, 6, 113, 34, 13, 0, 8, 3, 195, 161, 19, 35, 89, 0, 11, 70, 52, 21, 82, 20, 83,
-			128, 21, 0, 10, 9, 198, 40, 244, 132, 4, 19, 128, 66, 11, 70, 12, 19, 69, 72, 243, 128, 21, 0, 10, 14, 4, 95, 48, 77, 50,
-			65, 109, 55, 57, 6, 40, 50, 0, 0, 15, 4, 95, 48, 77, 51, 65, 109, 55, 57, 6, 35, 34, 47, 0, 0, 11, 68, 52, 20, 137,
-			20, 65, 115, 34, 37, 0, 0, 15, 4, 95, 48, 77, 49, 6, 72, 6, 127, 89, 13, 50, 47, 0, 0, 17, 70, 24, 147, 5, 52, 243,
-			128, 83, 6, 37, 55, 13, 65, 110, 50, 0, 16, 4, 95, 2, 18, 22, 49, 6, 110, 34, 47, 116, 49, 13, 50, 0, 0, 9, 198, 92,
-			19, 8, 4, 195, 1, 66, 0, 0, 0, 15, 70, 52, 83, 9, 77, 48, 64, 65, 13, 55, 109, 89, 35, 0, 14, 70, 24, 148, 195, 32,
-			84, 128, 83, 37, 91, 13, 34, 0, 11, 70, 8, 83, 3, 32, 84, 128, 21, 0, 10, 0, 18, 70, 76, 83, 129, 80, 244, 133, 89, 13,
-			50, 35, 47, 6, 117, 34, 13, 0, 14, 71, 13, 35, 201, 77, 48, 78, 80, 21, 102, 114, 0, 10, 0, 10, 67, 52, 20, 129, 65, 115,
-			34, 35, 0, 0, 9, 198, 45, 112, 78, 77, 82, 83, 66, 17, 70, 44, 21, 19, 92, 147, 139, 49, 35, 47, 89, 84, 13, 50, 49, 0,
-			13, 69, 72, 85, 9, 20, 96, 34, 13, 47, 37, 83, 0, 0, 9, 198, 20, 83, 139, 20, 84, 128, 65, 16, 70, 16, 17, 211, 80, 84,
-			128, 72, 35, 136, 89, 47, 112, 34, 0, 0, 19, 71, 8, 84, 206, 20, 65, 78, 20, 71, 13, 89, 50, 116, 72, 13, 50, 13, 0, 10,
-			199, 9, 34, 84, 80, 19, 138, 20, 66, 0, 0, 16, 70, 88, 84, 146, 21, 113, 71, 83, 112, 34, 13, 84, 112, 136, 0, 0, 11, 70,
-			28, 147, 2, 21, 37, 0, 21, 0, 10, 0, 18, 71, 64, 243, 137, 21, 1, 82, 76, 48, 117, 50, 37, 48, 112, 34, 89, 0, 0, 0,
-			0, 9, 198, 60, 244, 147, 21, 49, 64, 66, 0, 10, 67, 24, 244, 148, 83, 110, 34, 47, 0, 8, 67, 29, 86, 64, 21, 0, 10, 18,
-			71, 8, 241, 68, 5, 1, 83, 80, 71, 40, 72, 35, 48, 108, 89, 47, 0, 0, 21, 72, 8, 17, 5, 56, 131, 210, 77, 64, 71, 115,
-			72, 13, 50, 107, 110, 34, 89, 47, 0, 0, 8, 197, 40, 84, 193, 40, 16, 66, 10, 69, 8, 241, 73, 56, 112, 21, 0, 10, 0, 0,
-			0, 12, 68, 8, 244, 137, 76, 71, 110, 34, 13, 89, 0, 0, 21, 73, 88, 241, 76, 20, 229, 8, 20, 145, 0, 83, 40, 55, 13, 50,
-			47, 107, 123, 47, 0, 15, 70, 72, 243, 201, 64, 84, 147, 34, 125, 48, 113, 34, 89, 0, 8, 197, 44, 147, 79, 56, 240, 66, 13, 69,
-			76, 20, 16, 32, 240, 89, 35, 48, 83, 40, 0, 14, 69, 12, 80, 201, 48, 80, 89, 13, 89, 37, 12, 55, 0, 0, 6, 194, 53, 144,
-			72, 32, 0, 9, 198, 77, 66, 76, 77, 118, 69, 65, 20, 71, 76, 19, 136, 20, 68, 137, 56, 89, 35, 50, 107, 6, 116, 72, 34, 13,
-			50, 0, 0, 22, 72, 12, 132, 137, 77, 66, 65, 56, 16, 49, 34, 13, 89, 47, 37, 57, 6, 115, 50, 35, 0, 0, 16, 70, 56, 81,
-			197, 72, 147, 135, 50, 13, 136, 116, 34, 13, 68, 0, 16, 70, 8, 85, 197, 72, 147, 135, 71, 13, 84, 116, 34, 109, 68, 0, 18, 70,
-			88, 84, 213, 88, 149, 83, 84, 13, 89, 40, 12, 84, 37, 111, 89, 0, 0, 0, 17, 71, 76, 50, 5, 21, 1, 82, 76, 89, 49, 116,
-			48, 13, 34, 89, 0, 0, 19, 72, 52, 19, 13, 21, 48, 149, 73, 144, 65, 115, 65, 89, 71, 13, 34, 37, 0, 0, 15, 69, 29, 32,
-			84, 37, 48, 136, 34, 6, 115, 47, 13, 89, 0, 14, 69, 4, 226, 77, 85, 48, 35, 50, 37, 65, 40, 89, 0, 0, 6, 194, 60, 96,
-			72, 8, 16, 70, 8, 16, 137, 48, 243, 128, 71, 35, 71, 37, 55, 110, 50, 0, 0, 20, 71, 92, 81, 199, 21, 113, 78, 76, 84, 112,
-			136, 13, 84, 6, 108, 12, 50, 89, 0, 17, 70, 52, 17, 5, 48, 83, 133, 65, 35, 72, 13, 55, 6, 116, 50, 0, 17, 70, 52, 17,
-			5, 48, 83, 133, 65, 35, 72, 13, 55, 6, 116, 50, 0, 12, 71, 5, 35, 83, 81, 35, 206, 28, 21, 0, 10, 0, 0, 0, 11, 70,
-			72, 22, 77, 60, 225, 0, 21, 0, 10, 12, 70, 77, 4, 137, 56, 116, 192, 21, 0, 41, 10, 0, 16, 70, 28, 83, 133, 72, 193, 73,
-			136, 116, 50, 13, 34, 55, 123, 0, 20, 71, 56, 81, 133, 73, 66, 84, 36, 50, 108, 83, 13, 34, 47, 6, 37, 47, 37, 0, 0, 0,
-			9, 198, 88, 244, 133, 56, 64, 71, 67, 24, 73, 5, 34, 83, 80, 245, 5, 48, 84, 192, 35, 34, 37, 89, 47, 6, 117, 47, 13, 55,
-			108, 89, 0, 19, 70, 76, 19, 148, 36, 17, 207, 89, 35, 50, 47, 37, 38, 6, 115, 81, 40, 0, 0, 18, 70, 60, 225, 1, 56, 180,
-			192, 6, 110, 50, 72, 35, 68, 49, 89, 0, 8, 0, 11, 70, 88, 84, 143, 56, 144, 193, 21, 0, 10, 0, 11, 67, 52, 145, 193, 65,
-			6, 37, 136, 35, 0, 17, 7, 3, 18, 15, 14, 10, 195, 169, 49, 34, 110, 50, 57, 6, 116, 0, 0, 0, 13, 202, 44, 83, 142, 37,
-			53, 129, 5, 33, 9, 28, 65, 15, 70, 40, 21, 207, 61, 33, 0, 57, 115, 84, 117, 34, 47, 0, 16, 70, 8, 244, 135, 20, 225, 64,
-			71, 110, 34, 136, 13, 50, 13, 0, 0, 10, 67, 52, 17, 192, 65, 35, 136, 0, 32, 0, 8, 67, 52, 20, 153, 21, 0, 10, 0, 0,
-			15, 70, 28, 84, 136, 5, 33, 0, 136, 112, 34, 35, 34, 47, 0, 0, 14, 70, 72, 82, 78, 21, 69, 5, 34, 13, 50, 108, 47, 0,
-			19, 70, 16, 244, 143, 80, 129, 65, 72, 110, 34, 13, 47, 6, 37, 12, 57, 35, 0, 0, 21, 72, 28, 80, 146, 60, 177, 78, 21, 32,
-			136, 13, 71, 34, 117, 49, 13, 50, 13, 34, 0, 0, 13, 69, 80, 84, 193, 4, 208, 47, 13, 89, 115, 65, 0, 0, 0, 16, 70, 4,
-			229, 8, 60, 226, 69, 35, 50, 47, 6, 117, 50, 37, 0, 12, 5, 16, 5, 18, 195, 186, 48, 13, 34, 40, 0, 0, 8, 67, 52, 146,
-			197, 21, 0, 10, 0, 9, 197, 60, 225, 5, 84, 112, 65, 9, 22, 73, 56, 19, 1, 80, 145, 200, 20, 145, 0, 50, 115, 55, 6, 115,
-			47, 13, 136, 123, 47, 0, 10, 69, 32, 148, 16, 36, 80, 21, 0, 10, 0, 0, 10, 199, 88, 243, 210, 48, 83, 148, 20, 65, 11, 70,
-			88, 148, 135, 36, 226, 65, 21, 0, 10, 19, 71, 40, 244, 197, 64, 130, 78, 4, 57, 117, 89, 13, 83, 6, 37, 50, 35, 0, 17, 71,
-			8, 194, 71, 56, 21, 76, 80, 71, 55, 109, 136, 50, 120, 47, 0, 13, 6, 18, 8, 195, 180, 14, 5, 21, 102, 114, 0, 10, 0, 22,
-			72, 45, 83, 147, 52, 21, 9, 28, 80, 49, 111, 50, 89, 65, 6, 115, 47, 13, 136, 13, 0, 0, 21, 73, 25, 32, 78, 76, 50, 8,
-			60, 82, 192, 83, 34, 133, 50, 89, 107, 6, 40, 49, 0, 0, 12, 4, 95, 3, 9, 18, 49, 6, 35, 48, 37, 0, 0, 0, 20, 72,
-			76, 179, 204, 48, 145, 78, 21, 48, 89, 49, 110, 55, 37, 50, 4, 108, 89, 0, 16, 70, 12, 132, 153, 76, 193, 82, 49, 34, 121, 89,
-			55, 13, 34, 0, 13, 68, 52, 33, 75, 36, 65, 71, 108, 12, 49, 37, 0, 0, 13, 69, 56, 20, 211, 5, 80, 50, 35, 89, 6, 120,
-			0, 14, 69, 8, 82, 197, 73, 48, 71, 116, 49, 13, 34, 89, 0, 0, 6, 195, 36, 34, 83, 65, 0, 21, 71, 81, 32, 80, 21, 50,
-			85, 52, 47, 34, 35, 48, 6, 116, 89, 37, 12, 111, 65, 0, 0, 7, 196, 60, 227, 73, 56, 65, 0, 0, 9, 198, 36, 226, 204, 84,
-			148, 192, 66, 16, 70, 28, 83, 133, 76, 148, 192, 136, 116, 50, 13, 89, 13, 89, 0, 16, 70, 76, 80, 213, 56, 64, 64, 89, 13, 49,
-			40, 50, 72, 35, 0, 0, 19, 71, 12, 132, 137, 77, 66, 78, 20, 49, 34, 13, 89, 47, 6, 37, 12, 50, 0, 0, 0, 23, 73, 17,
-			34, 78, 44, 80, 146, 60, 84, 128, 72, 34, 109, 50, 49, 13, 71, 34, 40, 12, 34, 0, 0, 16, 70, 24, 195, 210, 36, 64, 64, 83,
-			55, 110, 34, 37, 72, 35, 0, 0, 13, 4, 95, 19, 20, 11, 89, 47, 34, 6, 116, 48, 0, 0, 20, 72, 48, 145, 70, 16, 84, 208,
-			20, 192, 55, 37, 83, 72, 13, 89, 48, 112, 55, 0, 0, 9, 198, 80, 245, 19, 36, 83, 147, 66, 20, 73, 52, 245, 73, 48, 193, 80,
-			84, 229, 0, 65, 40, 55, 37, 48, 111, 50, 47, 0, 12, 4, 95, 1, 3, 21, 35, 49, 6, 118, 47, 0, 0, 18, 70, 37, 50, 193,
-			72, 147, 212, 37, 89, 49, 6, 35, 34, 37, 110, 47, 0, 0, 12, 201, 4, 117, 5, 73, 53, 5, 88, 243, 210, 68, 17, 70, 17, 85,
-			133, 56, 17, 197, 72, 118, 84, 13, 50, 115, 136, 13, 0, 0, 0, 8, 197, 88, 19, 132, 5, 64, 65, 7, 195, 76, 19, 0, 72, 32,
-			0, 17, 70, 16, 17, 207, 72, 65, 64, 72, 35, 136, 10, 110, 34, 72, 13, 0, 0, 0, 0, 13, 69, 32, 81, 76, 8, 240, 107, 116,
-			55, 71, 117, 0, 15, 69, 60, 32, 68, 40, 16, 117, 71, 6, 35, 47, 57, 35, 0, 18, 70, 48, 83, 206, 5, 33, 15, 55, 119, 12,
-			50, 6, 35, 34, 72, 40, 0, 0, 0, 18, 71, 12, 132, 137, 77, 66, 78, 4, 49, 34, 13, 89, 47, 37, 50, 35, 0, 13, 4, 95,
-			18, 14, 7, 6, 115, 50, 71, 112, 55, 0, 0, 16, 70, 60, 101, 5, 92, 83, 0, 110, 83, 47, 13, 84, 112, 55, 0, 9, 198, 32,
-			241, 86, 20, 83, 0, 8, 0, 13, 69, 28, 84, 148, 36, 80, 81, 109, 12, 47, 37, 0, 0, 17, 70, 9, 84, 149, 56, 66, 64, 71,
-			40, 34, 6, 40, 50, 72, 37, 0, 0, 20, 71, 4, 229, 8, 60, 226, 85, 76, 35, 50, 47, 6, 117, 50, 37, 38, 111, 89, 0, 21,
-			67, 33, 69, 16, 107, 115, 47, 116, 47, 116, 48, 6, 116, 10, 0, 81, 58, 47, 47, 32, 0, 0, 0, 17, 70, 92, 147, 8, 20, 195,
-			64, 84, 13, 55, 107, 112, 55, 14, 65, 0, 0, 19, 71, 44, 243, 80, 84, 196, 201, 20, 49, 110, 65, 48, 6, 111, 55, 89, 37, 0,
-			0, 0, 14, 69, 32, 83, 1, 5, 48, 107, 116, 55, 6, 115, 89, 0, 0, 0, 0, 0, 8, 197, 32, 84, 141, 60, 224, 65, 0, 17,
-			70, 36, 227, 133, 77, 65, 76, 109, 50, 50, 108, 89, 47, 13, 55, 0, 0, 9, 67, 21, 32, 64, 116, 34, 35, 0, 9, 67, 72, 19,
-			12, 34, 115, 55, 0, 15, 6, 7, 18, 15, 22, 195, 169, 136, 34, 40, 84, 6, 116, 0, 0, 16, 7, 5, 12, 19, 1, 2, 195, 169,
-			112, 55, 89, 13, 71, 37, 0, 0, 0, 15, 70, 60, 81, 9, 65, 84, 192, 117, 72, 37, 48, 111, 89, 0, 15, 70, 8, 20, 130, 5,
-			32, 64, 71, 115, 71, 13, 34, 35, 0, 0, 19, 71, 52, 20, 148, 32, 147, 149, 76, 65, 35, 34, 47, 6, 37, 50, 111, 89, 0, 0,
-			9, 68, 52, 144, 77, 36, 21, 0, 10, 0, 0, 17, 70, 28, 195, 194, 4, 193, 64, 136, 55, 117, 71, 6, 115, 55, 13, 0, 17, 4,
-			95, 1, 3, 50, 72, 6, 111, 71, 13, 55, 35, 49, 118, 47, 0, 0, 0, 0, 24, 73, 64, 21, 18, 36, 245, 9, 76, 209, 64, 48,
-			35, 47, 34, 37, 40, 47, 6, 109, 89, 65, 13, 0, 13, 69, 8, 243, 65, 5, 64, 71, 117, 65, 115, 47, 0, 0, 16, 70, 88, 84,
-			132, 21, 33, 64, 83, 112, 34, 72, 13, 34, 13, 0, 9, 198, 24, 18, 212, 85, 33, 64, 66, 0, 0, 11, 68, 8, 82, 68, 20, 71,
-			123, 72, 13, 0, 8, 196, 41, 83, 12, 20, 72, 32, 11, 70, 52, 144, 200, 4, 83, 0, 21, 0, 10, 0, 0, 16, 70, 52, 245, 15,
-			73, 38, 64, 65, 117, 47, 13, 34, 34, 123, 0, 0, 17, 71, 72, 80, 133, 48, 193, 69, 72, 34, 13, 71, 13, 55, 116, 34, 0, 0,
-			16, 70, 44, 244, 147, 92, 83, 0, 49, 110, 34, 89, 84, 13, 55, 0, 0, 13, 69, 28, 19, 132, 32, 144, 81, 35, 50, 72, 37, 0,
-			0, 0, 0, 17, 70, 76, 243, 143, 56, 65, 82, 89, 110, 50, 10, 110, 50, 13, 34, 0, 19, 72, 48, 18, 78, 29, 48, 149, 72, 112,
-			55, 123, 50, 89, 71, 111, 34, 136, 0, 0, 14, 69, 52, 20, 129, 37, 48, 65, 35, 34, 6, 108, 12, 0, 0, 0, 16, 71, 84, 149,
-			4, 4, 114, 78, 28, 127, 72, 115, 136, 13, 68, 0, 18, 70, 4, 193, 197, 32, 83, 5, 35, 55, 136, 13, 107, 4, 116, 55, 13, 0,
-			13, 70, 76, 244, 130, 60, 227, 133, 21, 102, 114, 0, 10, 0, 0, 0, 0, 0, 12, 68, 92, 147, 80, 100, 58, 109, 65, 48, 37, 0,
-			11, 68, 72, 85, 8, 4, 34, 116, 47, 35, 0, 15, 70, 52, 16, 199, 36, 195, 0, 65, 13, 81, 57, 37, 55, 0, 0, 14, 69, 37,
-			52, 129, 20, 192, 109, 89, 34, 121, 12, 55, 0, 0, 15, 70, 28, 243, 79, 73, 32, 64, 136, 13, 65, 110, 34, 35, 0, 16, 70, 76,
-			145, 205, 84, 225, 0, 89, 37, 81, 65, 40, 50, 47, 0, 17, 70, 48, 80, 78, 17, 32, 64, 55, 37, 6, 35, 50, 72, 34, 35, 0,
-			0, 10, 199, 4, 195, 5, 72, 113, 78, 20, 67, 0, 11, 68, 88, 84, 146, 20, 83, 113, 34, 13, 0, 13, 72, 52, 16, 203, 36, 229,
-			15, 76, 128, 21, 0, 10, 11, 68, 80, 242, 201, 60, 47, 117, 49, 119, 0, 0, 14, 69, 8, 84, 215, 36, 192, 71, 108, 89, 84, 13,
-			55, 0, 8, 2, 195, 151, 65, 115, 55, 0, 0, 10, 66, 77, 64, 89, 13, 50, 47, 0, 24, 0, 0, 9, 68, 41, 83, 9, 4, 21,
-			0, 10, 0, 0, 0, 19, 71, 33, 83, 12, 21, 49, 76, 24, 107, 111, 55, 13, 89, 112, 55, 83, 0, 32, 0, 12, 68, 88, 84, 147,
-			20, 83, 113, 34, 89, 13, 0, 12, 68, 20, 226, 71, 20, 116, 50, 109, 136, 13, 0, 14, 68, 56, 19, 205, 36, 50, 35, 10, 6, 117,
-			65, 37, 0, 0, 12, 2, 194, 167, 35, 83, 72, 116, 55, 13, 68, 0, 0, 17, 70, 88, 18, 193, 57, 65, 64, 83, 2, 35, 49, 35,
-			50, 47, 13, 0, 10, 66, 76, 80, 108, 89, 13, 0, 41, 9, 6, 194, 60, 208, 72, 12, 13, 2, 194, 164, 65, 111, 50, 47, 116, 49,
-			13, 50, 0, 0, 10, 198, 60, 225, 5, 84, 113, 5, 65, 9, 8, 2, 194, 165, 57, 108, 50, 0, 0, 13, 68, 60, 225, 69, 72, 110,
-			50, 10, 116, 34, 0, 9, 12, 68, 8, 82, 193, 24, 71, 112, 49, 35, 83, 0, 16, 3, 5, 46, 1, 9, 108, 50, 10, 6, 35, 50,
-			72, 13, 34, 0, 0, 12, 69, 52, 81, 71, 20, 80, 65, 116, 136, 116, 0, 13, 69, 44, 230, 83, 56, 16, 50, 123, 89, 50, 35, 0,
-			9, 2, 194, 163, 48, 131, 50, 47, 0, 0, 0, 12, 201, 77, 113, 84, 80, 84, 138, 60, 83, 0, 67, 18, 71, 5, 52, 197, 8, 194,
-			69, 24, 35, 89, 13, 71, 55, 6, 37, 83, 0, 19, 70, 49, 80, 210, 21, 66, 65, 55, 40, 49, 34, 6, 37, 12, 91, 57, 35, 0,
-			20, 71, 8, 20, 131, 20, 195, 206, 4, 71, 35, 34, 89, 13, 55, 6, 117, 50, 35, 0, 0, 12, 68, 88, 84, 148, 20, 83, 112, 34,
-			47, 13, 0, 12, 68, 80, 84, 149, 28, 47, 14, 34, 111, 136, 0, 7, 196, 64, 20, 148, 20, 65, 17, 7, 3, 12, 9, 3, 8, 195,
-			169, 49, 55, 37, 91, 6, 123, 12, 0, 0, 0, 15, 70, 24, 84, 146, 5, 34, 64, 83, 13, 34, 115, 34, 37, 0, 5, 130, 195, 164,
-			43, 0, 19, 71, 16, 21, 201, 17, 53, 5, 72, 72, 115, 84, 13, 47, 89, 47, 112, 34, 0, 20, 71, 81, 32, 70, 4, 193, 193, 72,
-			47, 34, 35, 83, 6, 35, 55, 81, 35, 34, 0, 0, 21, 72, 64, 85, 18, 60, 225, 76, 48, 16, 48, 116, 47, 34, 40, 50, 6, 112,
-			55, 35, 0, 15, 7, 6, 15, 21, 3, 8, 195, 169, 83, 40, 91, 6, 116, 0, 12, 68, 12, 80, 201, 48, 89, 108, 89, 13, 55, 0,
-			9, 68, 56, 145, 197, 48, 21, 0, 10, 0, 0, 18, 70, 76, 192, 80, 5, 35, 64, 89, 55, 35, 48, 10, 35, 34, 14, 65, 0, 25,
-			2, 195, 160, 35, 15, 55, 35, 15, 49, 6, 35, 34, 47, 0, 82, 108, 97, 32, 99, 97, 114, 116, 101, 32, 6, 130, 195, 160, 43, 14,
-			0, 13, 2, 194, 169, 49, 40, 48, 6, 37, 34, 112, 136, 0, 5, 130, 195, 161, 43, 0, 18, 70, 32, 245, 1, 29, 65, 82, 107, 110,
-			47, 10, 35, 136, 47, 13, 34, 0, 18, 70, 16, 85, 133, 57, 65, 82, 72, 6, 116, 84, 13, 50, 47, 13, 34, 0, 13, 2, 194, 182,
-			48, 35, 34, 35, 136, 34, 115, 83, 0, 0, 5, 130, 195, 175, 43, 0, 5, 130, 195, 172, 43, 0, 9, 67, 88, 144, 64, 84, 37, 35,
-			0, 10, 2, 194, 181, 65, 37, 49, 34, 40, 0, 5, 130, 195, 173, 43, 0, 12, 68, 8, 82, 197, 72, 71, 116, 49, 13, 34, 0, 10,
-			68, 12, 128, 82, 48, 91, 115, 55, 0, 18, 72, 76, 86, 67, 32, 83, 12, 21, 48, 89, 123, 91, 6, 112, 55, 88, 0, 5, 130, 195,
-			170, 43, 0, 5, 130, 195, 171, 43, 0, 10, 2, 194, 176, 136, 34, 115, 72, 13, 0, 5, 130, 195, 168, 43, 0, 17, 2, 194, 177, 48,
-			55, 111, 89, 10, 110, 83, 65, 37, 50, 111, 89, 0, 5, 130, 195, 169, 43, 0, 13, 2, 194, 190, 72, 34, 37, 49, 58, 35, 34, 47,
-			0, 5, 130, 195, 182, 43, 0, 10, 69, 32, 245, 193, 72, 64, 21, 0, 10, 8, 197, 20, 195, 73, 20, 224, 66, 10, 69, 16, 20, 151,
-			36, 224, 21, 0, 10, 13, 2, 195, 183, 136, 13, 72, 116, 55, 72, 128, 34, 0, 0, 16, 70, 56, 241, 197, 20, 228, 192, 50, 110, 136,
-			10, 116, 50, 89, 0, 15, 70, 72, 80, 133, 44, 176, 64, 34, 13, 71, 108, 49, 35, 0, 11, 2, 194, 188, 13, 49, 58, 35, 34, 47,
-			0, 5, 130, 195, 180, 43, 0, 28, 67, 56, 145, 64, 50, 4, 37, 15, 84, 4, 115, 34, 15, 50, 6, 37, 0, 82, 119, 97, 97, 114,
-			32, 110, 105, 101, 32, 7, 195, 56, 145, 64, 13, 40, 11, 2, 194, 189, 13, 107, 35, 55, 84, 13, 0, 0, 11, 200, 76, 81, 5, 73,
-			65, 9, 20, 224, 67, 13, 4, 95, 3, 5, 4, 89, 13, 72, 109, 55, 35, 0, 5, 130, 195, 178, 43, 0, 13, 70, 28, 241, 66, 8,
-			83, 19, 21, 100, 101, 0, 10, 5, 130, 195, 179, 43, 0, 16, 70, 5, 97, 82, 76, 145, 64, 35, 84, 6, 112, 34, 89, 37, 0, 16,
-			70, 88, 148, 193, 28, 145, 64, 83, 37, 89, 6, 115, 136, 37, 0, 15, 70, 52, 20, 133, 48, 145, 64, 65, 35, 34, 13, 55, 37, 0,
-			0, 18, 4, 95, 12, 9, 7, 72, 6, 111, 71, 13, 55, 55, 108, 47, 13, 34, 0, 0, 9, 68, 12, 192, 82, 44, 21, 0, 10, 17,
-			70, 76, 19, 22, 4, 67, 210, 89, 35, 55, 84, 35, 72, 131, 34, 0, 0, 21, 67, 80, 83, 0, 47, 112, 55, 15, 35, 84, 6, 37,
-			84, 0, 81, 97, 118, 105, 118, 32, 0, 14, 70, 88, 243, 210, 28, 81, 64, 83, 117, 34, 136, 116, 0, 8, 66, 80, 80, 47, 13, 0,
-			32, 15, 70, 12, 241, 84, 104, 81, 64, 49, 40, 47, 89, 6, 116, 0, 21, 73, 40, 81, 134, 72, 86, 83, 8, 16, 73, 75, 108, 83,
-			34, 37, 89, 71, 6, 122, 0, 5, 130, 195, 188, 43, 0, 5, 130, 195, 189, 43, 0, 8, 196, 33, 83, 12, 20, 72, 32, 9, 68, 72,
-			241, 197, 72, 21, 0, 10, 13, 68, 48, 80, 78, 4, 55, 37, 6, 115, 50, 35, 0, 5, 130, 195, 186, 43, 0, 21, 73, 72, 83, 129,
-			37, 52, 193, 56, 49, 64, 34, 108, 50, 13, 89, 6, 133, 50, 89, 0, 8, 197, 60, 225, 197, 4, 112, 65, 14, 69, 32, 145, 82, 76,
-			240, 107, 37, 12, 34, 89, 110, 0, 15, 69, 12, 194, 86, 36, 16, 49, 55, 109, 84, 37, 57, 35, 0, 10, 69, 28, 83, 210, 28, 80,
-			21, 0, 10, 12, 69, 9, 32, 72, 4, 208, 71, 34, 115, 65, 0, 14, 69, 56, 147, 133, 88, 80, 50, 109, 50, 13, 83, 37, 0, 5,
-			130, 195, 187, 43, 0, 15, 70, 85, 37, 71, 84, 22, 64, 40, 34, 40, 81, 58, 121, 0, 0, 5, 130, 195, 185, 43, 0, 7, 196, 92,
-			18, 201, 76, 65, 12, 68, 12, 130, 78, 4, 91, 6, 37, 50, 35, 0, 0, 14, 69, 40, 19, 137, 56, 80, 75, 13, 50, 37, 12, 50,
-			0, 13, 69, 8, 85, 10, 36, 80, 71, 108, 37, 80, 37, 0, 15, 69, 4, 192, 83, 44, 16, 35, 55, 6, 35, 89, 49, 35, 0, 0,
-			9, 198, 72, 147, 139, 36, 226, 192, 66, 0, 18, 71, 17, 80, 130, 20, 194, 197, 56, 72, 111, 71, 13, 55, 49, 108, 50, 0, 0, 0,
-			16, 69, 21, 131, 196, 85, 48, 108, 49, 89, 6, 117, 72, 111, 89, 0, 0, 0, 18, 70, 60, 179, 1, 32, 243, 65, 120, 49, 55, 13,
-			107, 6, 120, 65, 35, 0, 0, 0, 18, 70, 64, 147, 143, 44, 178, 79, 48, 37, 50, 6, 110, 49, 37, 38, 40, 0, 0, 0, 0, 12,
-			68, 92, 21, 23, 60, 84, 35, 47, 84, 117, 0, 10, 67, 4, 36, 193, 35, 71, 89, 35, 0, 0, 9, 4, 95, 35, 4, 5, 72, 13,
-			0, 0, 0, 11, 67, 60, 228, 192, 135, 50, 89, 0, 72, 32, 0, 12, 68, 52, 245, 15, 72, 65, 117, 47, 13, 34, 0, 19, 72, 8,
-			18, 78, 76, 179, 15, 60, 96, 71, 123, 50, 89, 49, 55, 117, 83, 0, 0, 17, 70, 72, 85, 15, 72, 145, 75, 34, 13, 47, 40, 34,
-			6, 37, 49, 0, 25, 73, 52, 83, 79, 72, 16, 137, 48, 144, 64, 65, 108, 65, 110, 34, 35, 71, 6, 37, 55, 37, 57, 35, 0, 0,
-			10, 66, 81, 96, 47, 116, 83, 116, 10, 0, 0, 7, 195, 76, 245, 64, 72, 32, 0, 10, 67, 49, 83, 21, 55, 40, 55, 40, 0, 9,
-			68, 40, 147, 77, 100, 21, 0, 10, 0, 14, 69, 73, 84, 5, 73, 64, 34, 40, 48, 13, 34, 47, 0, 0, 9, 198, 88, 243, 19, 64,
-			241, 68, 65, 0, 7, 195, 92, 245, 64, 72, 32, 0, 9, 198, 60, 225, 197, 72, 145, 70, 65, 12, 68, 20, 97, 83, 20, 116, 83, 13,
-			89, 13, 0, 0, 20, 73, 32, 19, 132, 80, 84, 148, 40, 145, 64, 107, 35, 50, 47, 113, 34, 80, 37, 0, 11, 69, 88, 147, 204, 21,
-			64, 21, 0, 41, 10, 13, 69, 12, 17, 83, 5, 32, 89, 37, 88, 13, 34, 0, 0, 17, 70, 76, 147, 135, 20, 227, 212, 89, 109, 50,
-			136, 13, 50, 110, 47, 0, 9, 198, 56, 17, 5, 56, 177, 64, 65, 0, 0, 20, 9, 22, 18, 15, 5, 195, 171, 18, 9, 7, 83, 34,
-			40, 12, 13, 34, 13, 136, 0, 7, 196, 60, 228, 149, 76, 65, 12, 68, 32, 241, 82, 4, 107, 40, 34, 6, 115, 0, 14, 68, 16, 144,
-			78, 4, 72, 37, 57, 6, 115, 50, 35, 0, 0, 8, 197, 32, 241, 75, 60, 208, 8, 0, 0, 6, 195, 92, 21, 0, 8, 0, 20, 72,
-			64, 146, 193, 56, 145, 78, 36, 80, 48, 37, 49, 35, 50, 6, 37, 50, 37, 0, 13, 68, 4, 224, 76, 20, 35, 50, 6, 115, 55, 13,
-			0, 13, 68, 20, 192, 78, 4, 37, 55, 6, 115, 50, 35, 0, 0, 14, 69, 88, 84, 151, 20, 112, 83, 113, 34, 84, 112, 136, 0, 16,
-			70, 8, 16, 133, 48, 16, 83, 71, 35, 71, 13, 55, 115, 89, 0, 12, 69, 52, 84, 129, 4, 144, 65, 13, 34, 122, 0, 0, 23, 66,
-			77, 144, 89, 4, 123, 15, 35, 50, 15, 89, 6, 123, 0, 82, 97, 97, 110, 32, 115, 121, 32, 6, 194, 77, 144, 72, 32, 15, 70, 65,
-			33, 83, 48, 86, 64, 48, 34, 108, 89, 55, 37, 0, 0, 18, 71, 72, 17, 5, 52, 86, 69, 72, 34, 115, 72, 13, 65, 123, 13, 34,
-			0, 6, 2, 95, 1, 115, 0, 0, 9, 198, 88, 243, 210, 44, 81, 82, 65, 19, 72, 88, 84, 133, 17, 82, 70, 36, 80, 83, 116, 34,
-			13, 72, 127, 83, 37, 0, 11, 200, 77, 113, 76, 48, 83, 132, 4, 208, 67, 0, 23, 73, 28, 83, 5, 72, 83, 132, 32, 82, 68, 136,
-			13, 55, 116, 34, 13, 50, 47, 107, 123, 47, 0, 0, 0, 18, 71, 8, 244, 132, 20, 115, 197, 16, 71, 131, 34, 72, 13, 136, 40, 47,
-			0, 27, 12, 13, 5, 19, 15, 16, 15, 20, 1, 13, 9, 195, 171, 65, 108, 89, 40, 48, 40, 47, 6, 115, 65, 37, 13, 0, 0, 0,
-			13, 69, 8, 86, 69, 73, 48, 71, 123, 13, 34, 89, 0, 0, 9, 198, 60, 225, 197, 17, 83, 4, 65, 17, 70, 76, 84, 207, 80, 131,
-			192, 89, 13, 89, 6, 40, 12, 47, 40, 0, 0, 0, 0, 12, 68, 64, 21, 15, 76, 48, 115, 47, 110, 89, 0, 0, 9, 3, 7, 39,
-			14, 136, 109, 50, 0, 0, 9, 198, 60, 244, 130, 60, 244, 132, 66, 0, 19, 71, 20, 194, 83, 4, 33, 84, 32, 37, 55, 6, 37, 89,
-			35, 71, 108, 47, 0, 11, 67, 45, 112, 64, 49, 58, 35, 0, 72, 9, 0, 7, 196, 60, 227, 65, 28, 65, 0, 14, 69, 32, 241, 87,
-			20, 192, 107, 40, 84, 6, 112, 55, 0, 0, 21, 9, 22, 5, 18, 7, 5, 12, 5, 195, 171, 83, 113, 34, 136, 13, 55, 4, 116, 13,
-			0, 16, 70, 56, 20, 208, 21, 36, 192, 50, 35, 89, 48, 112, 34, 89, 0, 0, 19, 71, 80, 147, 79, 80, 129, 85, 76, 47, 13, 65,
-			6, 117, 47, 37, 111, 89, 0, 14, 71, 8, 240, 195, 4, 48, 201, 60, 21, 105, 116, 0, 10, 0, 0, 13, 69, 24, 145, 213, 85, 32,
-			83, 13, 136, 118, 34, 0, 6, 2, 95, 21, 118, 0, 0, 17, 70, 64, 83, 143, 72, 83, 148, 48, 108, 50, 117, 34, 108, 50, 47, 0,
-			17, 70, 44, 243, 139, 5, 113, 64, 49, 110, 50, 49, 6, 115, 84, 13, 0, 31, 76, 72, 149, 137, 21, 36, 207, 56, 65, 82, 20, 225,
-			0, 34, 13, 83, 37, 12, 34, 89, 110, 50, 13, 34, 10, 6, 108, 50, 47, 0, 0, 18, 70, 4, 48, 80, 84, 192, 207, 35, 49, 35,
-			48, 6, 40, 55, 49, 120, 0, 0, 0, 9, 198, 88, 243, 16, 84, 229, 5, 65, 0, 0, 9, 198, 32, 84, 139, 48, 16, 83, 65, 19,
-			70, 8, 80, 84, 72, 150, 0, 71, 37, 38, 6, 115, 47, 34, 13, 49, 89, 0, 12, 67, 9, 2, 192, 71, 13, 48, 112, 34, 49, 0,
-			0, 16, 70, 80, 241, 82, 20, 177, 78, 47, 40, 34, 116, 49, 13, 50, 0, 30, 76, 80, 129, 83, 76, 19, 15, 56, 144, 197, 57, 49,
-			64, 47, 108, 89, 35, 55, 117, 50, 37, 89, 6, 108, 12, 50, 89, 13, 0, 0, 15, 69, 64, 20, 129, 80, 80, 48, 35, 34, 6, 115,
-			47, 13, 0, 12, 69, 32, 242, 193, 4, 144, 107, 110, 49, 122, 0, 0, 17, 70, 16, 80, 149, 77, 54, 64, 72, 13, 71, 40, 89, 6,
-			37, 12, 0, 0, 0, 10, 135, 20, 5, 18, 4, 5, 195, 171, 66, 10, 68, 60, 244, 146, 100, 117, 34, 123, 0, 11, 2, 95, 34, 107,
-			115, 55, 23, 115, 50, 0, 0, 14, 69, 52, 147, 149, 80, 80, 65, 13, 50, 118, 47, 13, 0, 14, 69, 4, 98, 197, 72, 80, 35, 83,
-			49, 116, 34, 13, 0, 13, 69, 101, 99, 206, 56, 80, 37, 84, 6, 110, 50, 0, 13, 69, 64, 131, 197, 8, 80, 83, 37, 12, 71, 37,
-			0, 13, 69, 60, 229, 15, 56, 112, 110, 50, 47, 110, 68, 0, 24, 73, 88, 19, 146, 33, 147, 147, 16, 244, 144, 83, 35, 50, 34, 6,
-			123, 50, 89, 72, 110, 34, 48, 0, 0, 9, 66, 89, 80, 21, 102, 114, 0, 10, 0, 8, 195, 44, 243, 128, 72, 11, 32, 17, 70, 16,
-			19, 65, 76, 181, 83, 72, 13, 65, 35, 89, 49, 111, 89, 0, 8, 2, 95, 39, 47, 37, 49, 0, 0, 21, 72, 76, 19, 69, 48, 85,
-			201, 56, 112, 89, 115, 65, 13, 55, 4, 116, 84, 13, 68, 0, 20, 72, 64, 242, 78, 76, 85, 20, 36, 16, 48, 124, 50, 89, 6, 108,
-			47, 37, 35, 0, 20, 72, 52, 20, 135, 84, 84, 137, 80, 80, 65, 115, 81, 13, 34, 6, 37, 12, 47, 0, 0, 0, 15, 70, 77, 65,
-			80, 32, 19, 128, 89, 47, 116, 83, 35, 50, 0, 8, 67, 40, 19, 133, 21, 0, 10, 16, 70, 4, 68, 137, 4, 19, 128, 115, 72, 34,
-			37, 57, 35, 50, 0, 0, 6, 195, 88, 19, 128, 72, 0, 17, 70, 36, 115, 143, 72, 81, 82, 37, 136, 50, 117, 34, 6, 116, 34, 0,
-			6, 195, 37, 50, 83, 65, 16, 4, 95, 3, 1, 16, 107, 6, 117, 83, 55, 108, 47, 13, 34, 0, 0, 14, 69, 80, 19, 135, 5, 48,
-			47, 35, 68, 81, 35, 89, 0, 13, 69, 88, 84, 151, 21, 144, 83, 13, 34, 84, 123, 0, 27, 69, 9, 81, 78, 61, 48, 71, 58, 108,
-			50, 110, 89, 10, 6, 121, 34, 108, 89, 0, 81, 97, 105, 114, 101, 115, 32, 13, 2, 95, 41, 34, 112, 136, 89, 107, 35, 49, 37, 0,
-			0, 16, 70, 48, 147, 80, 61, 3, 192, 55, 13, 65, 48, 117, 48, 117, 0, 16, 70, 12, 19, 5, 16, 243, 128, 49, 35, 55, 37, 72,
-			110, 50, 0, 13, 2, 95, 40, 55, 109, 68, 89, 107, 35, 49, 37, 0, 0, 10, 67, 64, 84, 128, 48, 13, 34, 0, 9, 6, 195, 88,
-			148, 128, 72, 7, 195, 92, 244, 132, 72, 32, 0, 16, 70, 80, 83, 5, 52, 19, 142, 47, 116, 55, 13, 65, 35, 50, 0, 0, 24, 73,
-			64, 19, 132, 20, 211, 206, 37, 83, 64, 48, 35, 50, 72, 13, 65, 6, 117, 50, 37, 111, 65, 0, 15, 2, 95, 45, 49, 110, 48, 13,
-			55, 47, 116, 49, 13, 50, 0, 0, 10, 67, 32, 84, 133, 107, 116, 34, 13, 0, 10, 67, 48, 85, 137, 55, 116, 83, 37, 0, 9, 2,
-			95, 44, 49, 110, 65, 35, 0, 0, 19, 71, 12, 19, 69, 52, 33, 82, 80, 49, 35, 65, 13, 65, 71, 6, 113, 34, 0, 9, 67, 16,
-			84, 128, 72, 13, 34, 0, 9, 2, 95, 51, 6, 72, 34, 37, 0, 0, 12, 68, 80, 133, 76, 4, 47, 40, 12, 55, 35, 0, 12, 68,
-			76, 18, 78, 80, 89, 109, 50, 47, 0, 72, 9, 2, 95, 50, 6, 47, 58, 116, 0, 0, 13, 69, 44, 243, 65, 4, 224, 49, 110, 65,
-			115, 50, 0, 8, 197, 52, 147, 1, 4, 224, 66, 9, 2, 95, 49, 10, 6, 116, 50, 0, 0, 10, 67, 88, 149, 129, 84, 37, 84, 35,
-			0, 16, 70, 41, 84, 9, 80, 84, 128, 57, 40, 48, 37, 47, 13, 34, 0, 9, 2, 95, 48, 6, 50, 111, 55, 0, 0, 18, 71, 28,
-			85, 129, 48, 193, 78, 20, 136, 13, 83, 35, 55, 13, 50, 13, 0, 10, 2, 95, 55, 6, 89, 116, 84, 13, 0, 0, 21, 72, 8, 19,
-			135, 48, 17, 5, 76, 160, 71, 35, 68, 81, 55, 35, 72, 6, 108, 91, 0, 9, 2, 95, 54, 6, 89, 108, 89, 0, 0, 14, 69, 52,
-			84, 140, 61, 64, 65, 112, 34, 55, 6, 117, 0, 9, 2, 95, 53, 6, 83, 123, 83, 0, 0, 15, 70, 20, 97, 133, 57, 49, 64, 108,
-			83, 13, 50, 89, 13, 0, 17, 70, 52, 20, 140, 37, 49, 64, 65, 35, 34, 55, 6, 37, 12, 89, 0, 24, 11, 7, 5, 20, 19, 195,
-			169, 13, 1, 14, 195, 169, 136, 108, 47, 89, 6, 116, 65, 35, 50, 37, 0, 10, 2, 95, 52, 6, 83, 37, 12, 34, 0, 0, 13, 2,
-			95, 59, 49, 110, 65, 35, 48, 111, 50, 47, 0, 0, 15, 70, 40, 245, 66, 21, 37, 0, 57, 40, 71, 6, 113, 34, 0, 14, 2, 95,
-			58, 72, 111, 71, 13, 55, 48, 111, 50, 47, 0, 0, 13, 69, 52, 147, 149, 85, 64, 65, 13, 50, 118, 47, 0, 10, 2, 95, 57, 6,
-			50, 116, 136, 13, 0, 0, 10, 2, 95, 56, 10, 6, 35, 136, 47, 0, 0, 15, 70, 12, 147, 12, 36, 84, 147, 89, 109, 55, 57, 6,
-			116, 0, 15, 70, 12, 83, 12, 36, 84, 147, 89, 109, 55, 57, 6, 116, 0, 16, 70, 88, 147, 12, 36, 84, 147, 84, 109, 55, 37, 13,
-			34, 89, 0, 14, 2, 95, 63, 83, 34, 115, 136, 47, 116, 49, 13, 50, 0, 0, 14, 2, 95, 62, 136, 34, 117, 47, 13, 34, 23, 35,
-			89, 0, 0, 14, 69, 76, 19, 15, 52, 240, 89, 115, 55, 13, 65, 117, 0, 14, 69, 52, 148, 137, 4, 208, 65, 109, 34, 37, 13, 65,
-			0, 15, 69, 28, 64, 78, 76, 176, 81, 14, 72, 35, 50, 89, 49, 0, 0, 14, 2, 95, 60, 49, 55, 123, 50, 13, 34, 23, 35, 89,
-			0, 0, 18, 71, 9, 34, 69, 92, 83, 69, 76, 71, 34, 37, 84, 13, 65, 108, 89, 0, 0, 21, 72, 88, 84, 139, 20, 84, 132, 60,
-			208, 83, 13, 34, 49, 116, 34, 47, 10, 110, 65, 0, 9, 198, 88, 243, 210, 16, 21, 0, 8, 18, 8, 5, 19, 5, 7, 9, 195, 171,
-			12, 37, 89, 6, 116, 136, 37, 12, 0, 21, 72, 20, 211, 65, 72, 83, 148, 36, 16, 108, 65, 35, 34, 6, 134, 50, 91, 57, 35, 0,
-			0, 15, 69, 76, 19, 21, 80, 80, 89, 35, 55, 6, 118, 47, 13, 0, 14, 69, 48, 81, 193, 80, 80, 55, 13, 136, 115, 47, 13, 0,
-			15, 69, 16, 82, 193, 16, 80, 72, 108, 49, 6, 115, 72, 13, 0, 16, 69, 76, 244, 8, 36, 16, 89, 40, 83, 6, 37, 12, 57, 35,
-			0, 17, 70, 76, 19, 4, 4, 226, 1, 89, 35, 55, 72, 6, 35, 50, 35, 0, 0, 0, 17, 70, 17, 82, 84, 77, 113, 83, 72, 127,
-			47, 89, 84, 6, 108, 89, 0, 0, 21, 72, 16, 148, 12, 60, 208, 83, 36, 80, 72, 13, 48, 55, 117, 65, 35, 89, 6, 37, 0, 9,
-			68, 13, 148, 137, 48, 21, 0, 10, 0, 14, 69, 52, 20, 137, 85, 48, 65, 115, 34, 37, 111, 89, 0, 13, 69, 48, 85, 201, 21, 48,
-			55, 13, 84, 37, 89, 0, 0, 9, 198, 52, 148, 203, 36, 83, 128, 66, 15, 70, 12, 132, 137, 77, 67, 192, 49, 34, 109, 89, 47, 40,
-			0, 0, 0, 11, 68, 52, 16, 200, 60, 65, 35, 76, 120, 0, 16, 70, 12, 132, 137, 77, 67, 198, 49, 34, 109, 89, 47, 110, 83, 0,
-			0, 18, 70, 73, 147, 69, 48, 20, 153, 34, 123, 65, 13, 55, 35, 34, 6, 123, 0, 15, 70, 52, 144, 200, 20, 195, 5, 65, 37, 91,
-			6, 112, 55, 0, 18, 70, 12, 20, 143, 48, 147, 129, 49, 35, 34, 40, 55, 6, 37, 50, 35, 0, 0, 16, 70, 4, 195, 5, 29, 35,
-			192, 35, 55, 6, 108, 81, 34, 40, 0, 17, 70, 8, 244, 143, 16, 147, 128, 71, 110, 34, 40, 72, 6, 37, 50, 0, 16, 4, 194, 182,
-			194, 182, 48, 35, 34, 35, 136, 34, 115, 84, 13, 0, 0, 0, 11, 70, 88, 147, 131, 20, 229, 0, 21, 0, 10, 12, 5, 18, 5, 14,
-			195, 169, 34, 13, 50, 123, 0, 12, 68, 40, 244, 197, 24, 57, 117, 89, 13, 83, 0, 0, 15, 204, 92, 81, 82, 88, 243, 210, 77, 1,
-			76, 48, 147, 135, 65, 9, 198, 12, 243, 134, 21, 69, 9, 66, 10, 69, 28, 244, 132, 60, 224, 21, 0, 10, 0, 12, 137, 15, 14, 22,
-			5, 18, 13, 15, 195, 171, 65, 15, 70, 56, 146, 204, 4, 20, 192, 50, 37, 49, 55, 115, 89, 0, 0, 19, 71, 4, 229, 23, 21, 36,
-			5, 56, 35, 50, 47, 84, 112, 34, 48, 13, 50, 0, 0, 6, 195, 76, 243, 211, 72, 6, 195, 76, 243, 211, 8, 18, 8, 7, 1, 2,
-			18, 9, 195, 171, 12, 136, 115, 71, 34, 37, 13, 55, 0, 11, 5, 95, 35, 19, 20, 5, 89, 47, 13, 0, 0, 10, 69, 9, 84, 148,
-			60, 224, 21, 0, 10, 10, 69, 4, 193, 146, 20, 64, 21, 0, 10, 17, 70, 44, 147, 147, 32, 20, 193, 49, 37, 50, 91, 6, 115, 89,
-			35, 0, 0, 9, 198, 4, 229, 1, 72, 84, 192, 66, 15, 70, 76, 84, 150, 4, 20, 192, 89, 13, 34, 83, 115, 89, 0, 22, 73, 52,
-			243, 210, 72, 81, 83, 9, 84, 135, 65, 40, 34, 6, 116, 89, 71, 111, 34, 136, 0, 0, 0, 11, 70, 72, 144, 200, 5, 33, 0, 21,
-			0, 10, 12, 4, 95, 4, 15, 20, 48, 6, 111, 50, 47, 0, 0, 14, 69, 80, 245, 4, 5, 64, 47, 110, 72, 35, 47, 0, 8, 0,
-			9, 198, 60, 226, 213, 56, 65, 64, 65, 6, 195, 36, 65, 69, 66, 17, 70, 100, 243, 1, 56, 65, 64, 57, 40, 55, 6, 35, 50, 72,
-			13, 0, 10, 67, 4, 64, 77, 35, 72, 35, 65, 0, 0, 17, 71, 64, 192, 65, 76, 160, 65, 64, 48, 55, 115, 89, 57, 115, 48, 0,
-			18, 2, 95, 91, 55, 109, 68, 89, 15, 71, 55, 110, 49, 107, 35, 49, 37, 0, 0, 7, 196, 88, 84, 141, 100, 66, 11, 68, 32, 82,
-			203, 20, 107, 112, 49, 13, 0, 0, 17, 70, 64, 147, 143, 80, 17, 197, 48, 37, 50, 40, 47, 6, 115, 90, 0, 13, 69, 72, 82, 78,
-			21, 64, 34, 13, 50, 108, 47, 0, 15, 69, 52, 246, 129, 73, 64, 65, 117, 47, 89, 35, 34, 47, 0, 0, 17, 70, 45, 112, 90, 84,
-			197, 64, 49, 58, 35, 88, 6, 40, 55, 40, 0, 0, 9, 67, 32, 82, 192, 107, 112, 49, 0, 8, 2, 95, 95, 55, 123, 50, 0, 0,
-			9, 68, 40, 19, 69, 76, 21, 0, 10, 0, 22, 73, 88, 84, 146, 20, 112, 65, 56, 65, 64, 83, 112, 34, 13, 136, 6, 115, 50, 72,
-			13, 0, 15, 69, 76, 240, 133, 72, 80, 89, 6, 117, 71, 13, 34, 13, 0, 8, 197, 56, 19, 65, 80, 80, 66, 13, 69, 81, 37, 68,
-			36, 80, 47, 34, 40, 72, 37, 0, 9, 198, 12, 243, 146, 4, 66, 69, 66, 18, 2, 95, 93, 34, 112, 136, 89, 15, 71, 55, 110, 49,
-			107, 35, 49, 37, 0, 0, 16, 70, 45, 34, 84, 36, 82, 192, 49, 34, 109, 47, 6, 37, 49, 0, 8, 67, 28, 243, 201, 136, 124, 0,
-			18, 70, 4, 194, 15, 21, 113, 76, 35, 55, 107, 40, 84, 6, 112, 55, 0, 8, 0, 10, 199, 8, 20, 146, 36, 176, 68, 20, 67, 6,
-			195, 24, 18, 192, 17, 0, 12, 201, 92, 16, 82, 76, 182, 78, 48, 146, 197, 66, 13, 68, 20, 194, 84, 20, 37, 55, 6, 37, 12, 47,
-			0, 0, 8, 197, 81, 84, 139, 100, 80, 66, 0, 15, 70, 49, 146, 215, 4, 18, 192, 55, 123, 49, 84, 115, 49, 0, 9, 198, 28, 245,
-			68, 36, 226, 64, 66, 0, 12, 201, 36, 229, 5, 57, 50, 84, 20, 149, 0, 68, 18, 71, 28, 16, 78, 16, 85, 197, 28, 136, 115, 50,
-			72, 13, 84, 112, 136, 0, 0, 22, 72, 76, 241, 197, 56, 16, 77, 16, 80, 89, 6, 117, 136, 13, 50, 4, 115, 65, 72, 13, 0, 10,
-			67, 40, 16, 207, 57, 35, 49, 40, 0, 0, 12, 201, 92, 16, 82, 76, 182, 78, 48, 146, 192, 66, 6, 195, 37, 48, 142, 17, 0, 0,
-			20, 9, 195, 170, 18, 5, 14, 19, 20, 5, 18, 113, 34, 13, 50, 89, 47, 13, 34, 0, 0, 22, 72, 61, 32, 78, 40, 84, 5, 73,
-			48, 117, 34, 6, 35, 50, 57, 13, 48, 113, 34, 89, 0, 0, 0, 26, 74, 16, 85, 84, 21, 35, 206, 60, 210, 85, 52, 72, 128, 47,
-			13, 34, 117, 50, 6, 117, 65, 37, 111, 65, 0, 14, 4, 95, 7, 18, 22, 136, 34, 35, 83, 6, 109, 89, 0, 0, 9, 67, 20, 180,
-			192, 108, 49, 89, 0, 0, 0, 0, 16, 70, 36, 226, 193, 80, 128, 64, 37, 68, 49, 6, 115, 47, 35, 0, 9, 198, 24, 147, 129, 48,
-			148, 192, 67, 0, 0, 9, 68, 48, 85, 201, 76, 21, 0, 10, 12, 68, 36, 36, 197, 56, 37, 71, 89, 13, 50, 0, 0, 0, 0, 0,
-			13, 67, 20, 67, 83, 123, 13, 50, 72, 110, 65, 89, 0, 0, 0, 16, 70, 80, 85, 146, 20, 65, 64, 47, 13, 83, 34, 116, 72, 13,
-			0, 0, 9, 195, 92, 147, 0, 72, 11, 9, 32, 18, 2, 95, 123, 55, 109, 68, 89, 15, 49, 34, 111, 55, 107, 35, 49, 37, 0, 16,
-			4, 95, 4, 9, 1, 72, 6, 116, 55, 47, 116, 49, 13, 50, 0, 0, 7, 196, 4, 226, 77, 4, 65, 0, 15, 69, 9, 37, 87, 21,
-			32, 71, 34, 40, 58, 6, 113, 34, 0, 0, 16, 70, 77, 69, 75, 72, 17, 192, 89, 47, 118, 49, 34, 35, 136, 0, 15, 70, 77, 86,
-			129, 56, 225, 64, 89, 40, 88, 6, 115, 50, 0, 11, 70, 12, 20, 140, 100, 193, 64, 21, 0, 10, 0, 19, 71, 32, 148, 143, 76, 162,
-			77, 4, 107, 37, 34, 40, 91, 6, 37, 65, 35, 0, 0, 0, 23, 73, 48, 16, 149, 76, 50, 1, 28, 225, 64, 55, 35, 71, 111, 89,
-			49, 6, 35, 136, 50, 37, 0, 15, 69, 21, 81, 197, 56, 80, 57, 40, 75, 6, 37, 12, 50, 0, 18, 2, 95, 125, 34, 112, 136, 89,
-			15, 49, 34, 111, 55, 107, 35, 49, 37, 0, 0, 12, 2, 95, 124, 35, 83, 89, 47, 34, 116, 48, 0, 0, 0, 11, 200, 92, 83, 148,
-			4, 181, 9, 20, 176, 65, 0, 8, 197, 60, 225, 9, 56, 112, 65, 10, 69, 76, 244, 8, 36, 80, 21, 0, 10, 0, 11, 70, 64, 21,
-			18, 36, 50, 192, 21, 0, 10, 0, 0, 11, 70, 9, 35, 207, 44, 198, 78, 21, 0, 10, 0, 0, 0, 17, 71, 52, 245, 15, 73, 66,
-			137, 20, 65, 117, 47, 13, 34, 49, 37, 0, 12, 71, 48, 240, 203, 21, 32, 137, 20, 21, 0, 10, 0, 0, 13, 69, 92, 21, 23, 61,
-			80, 84, 35, 47, 84, 120, 0, 0, 17, 70, 12, 16, 133, 72, 225, 84, 49, 35, 71, 13, 34, 50, 6, 123, 0, 0, 18, 71, 16, 82,
-			210, 20, 194, 78, 28, 72, 108, 49, 34, 116, 55, 13, 68, 0, 0, 13, 70, 76, 50, 13, 36, 69, 0, 91, 65, 37, 47, 0, 0, 0,
-			18, 70, 52, 19, 132, 20, 192, 64, 65, 35, 50, 72, 6, 108, 12, 55, 35, 0, 0, 0, 0, 0, 17, 70, 52, 21, 20, 21, 84, 192,
-			65, 35, 47, 6, 37, 12, 111, 89, 0, 0, 17, 70, 44, 244, 9, 21, 33, 71, 49, 40, 48, 6, 37, 34, 112, 136, 0, 19, 8, 22,
-			9, 195, 171, 20, 14, 1, 13, 84, 57, 6, 108, 47, 50, 35, 65, 0, 12, 71, 52, 83, 2, 61, 84, 142, 20, 21, 0, 10, 0, 0,
-			14, 69, 88, 243, 21, 37, 64, 83, 110, 55, 10, 127, 47, 0, 13, 69, 32, 82, 77, 5, 64, 107, 121, 65, 35, 47, 0, 0, 16, 70,
-			93, 148, 199, 21, 33, 64, 84, 123, 89, 136, 116, 34, 13, 0, 0, 0, 0, 10, 69, 88, 144, 212, 61, 32, 21, 0, 10, 14, 73, 76,
-			128, 75, 21, 52, 5, 5, 33, 64, 21, 0, 10, 0, 13, 70, 72, 244, 211, 61, 85, 192, 34, 13, 89, 120, 0, 9, 198, 52, 144, 200,
-			36, 83, 0, 66, 0, 10, 199, 92, 81, 82, 44, 194, 78, 44, 66, 10, 199, 60, 225, 197, 92, 243, 206, 76, 65, 0, 11, 200, 60, 225,
-			5, 73, 118, 83, 21, 32, 67, 15, 70, 48, 145, 83, 8, 85, 0, 55, 37, 89, 71, 108, 47, 0, 13, 68, 20, 210, 76, 20, 108, 65,
-			6, 37, 12, 55, 0, 0, 15, 69, 32, 21, 129, 56, 16, 107, 35, 84, 6, 35, 50, 35, 0, 0, 0, 16, 70, 73, 82, 203, 21, 34,
-			71, 34, 111, 49, 13, 34, 13, 136, 0, 0, 11, 200, 4, 19, 147, 80, 16, 78, 16, 80, 66, 0, 15, 69, 52, 245, 15, 72, 80, 65,
-			117, 47, 6, 117, 34, 13, 0, 9, 197, 16, 16, 82, 56, 16, 8, 32, 14, 69, 76, 50, 1, 48, 176, 89, 49, 6, 35, 55, 49, 0,
-			0, 0, 16, 70, 72, 245, 20, 20, 225, 83, 34, 110, 47, 13, 50, 108, 89, 0, 13, 71, 32, 243, 199, 20, 65, 76, 20, 107, 117, 136,
-			0, 18, 71, 17, 35, 207, 53, 53, 5, 72, 72, 34, 117, 65, 89, 47, 112, 34, 0, 10, 199, 52, 17, 196, 4, 193, 78, 4, 67, 0,
-			11, 68, 16, 18, 83, 100, 72, 123, 88, 37, 0, 0, 10, 67, 5, 51, 198, 35, 89, 110, 83, 0, 0, 18, 70, 12, 243, 5, 57, 51,
-			192, 49, 40, 55, 6, 108, 12, 50, 89, 120, 0, 0, 13, 70, 21, 52, 18, 21, 52, 207, 21, 105, 116, 0, 10, 18, 70, 8, 195, 205,
-			21, 37, 83, 71, 55, 40, 65, 6, 116, 34, 111, 89, 0, 0, 0, 17, 70, 76, 177, 80, 76, 83, 5, 89, 49, 108, 48, 89, 13, 55,
-			13, 0, 11, 70, 44, 83, 148, 84, 50, 217, 21, 0, 10, 0, 25, 73, 52, 81, 137, 77, 67, 198, 20, 193, 83, 65, 108, 83, 37, 89,
-			47, 6, 117, 83, 13, 55, 13, 89, 0, 0, 0, 0, 0, 0, 7, 195, 17, 84, 192, 8, 32, 0, 0, 0, 11, 70, 76, 147, 129, 81,
-			32, 64, 21, 0, 10, 17, 70, 41, 80, 78, 37, 64, 64, 57, 40, 35, 50, 6, 37, 47, 35, 0, 0, 19, 71, 84, 149, 5, 72, 16,
-			82, 16, 127, 47, 13, 34, 10, 6, 115, 34, 47, 0, 14, 67, 4, 69, 128, 35, 47, 83, 40, 49, 6, 115, 47, 0, 0, 0, 13, 69,
-			48, 81, 193, 5, 64, 55, 13, 136, 115, 47, 0, 16, 70, 8, 83, 12, 21, 101, 69, 71, 112, 55, 84, 57, 40, 12, 0, 0, 0, 21,
-			71, 36, 225, 215, 5, 101, 77, 4, 37, 68, 81, 58, 35, 84, 6, 40, 12, 65, 35, 0, 0, 0, 8, 197, 92, 21, 20, 21, 32, 8,
-			0, 9, 198, 5, 53, 1, 73, 65, 64, 66, 0, 0, 10, 67, 89, 33, 75, 83, 34, 112, 49, 0, 0, 9, 198, 92, 81, 82, 28, 19,
-			13, 66, 12, 69, 80, 241, 71, 20, 80, 47, 40, 136, 116, 0, 14, 69, 48, 144, 137, 16, 240, 55, 13, 71, 37, 72, 40, 0, 0, 16,
-			70, 88, 16, 82, 92, 83, 0, 83, 115, 34, 84, 6, 112, 55, 0, 0, 10, 199, 84, 149, 5, 72, 208, 84, 20, 67, 14, 67, 44, 20,
-			20, 49, 35, 48, 47, 6, 123, 50, 0, 24, 0, 20, 72, 61, 85, 5, 56, 145, 75, 92, 16, 120, 47, 13, 50, 6, 37, 49, 58, 35,
-			0, 0, 14, 69, 88, 84, 147, 80, 80, 83, 112, 34, 89, 47, 13, 0, 17, 70, 56, 80, 146, 5, 50, 193, 50, 13, 71, 34, 35, 89,
-			49, 35, 0, 0, 0, 0, 17, 70, 56, 81, 197, 77, 65, 82, 50, 116, 136, 13, 89, 47, 112, 34, 0, 20, 72, 24, 147, 9, 65, 1,
-			78, 76, 80, 83, 13, 55, 13, 48, 108, 50, 89, 13, 0, 13, 68, 76, 245, 197, 48, 89, 117, 84, 6, 112, 55, 0, 21, 72, 25, 32,
-			83, 21, 32, 149, 72, 112, 83, 34, 123, 88, 13, 34, 71, 111, 34, 136, 0, 0, 0, 0, 0, 12, 68, 72, 81, 201, 20, 34, 13, 90,
-			37, 12, 0, 17, 70, 52, 147, 137, 77, 65, 82, 65, 13, 50, 109, 89, 47, 13, 34, 0, 21, 72, 65, 149, 8, 4, 115, 210, 5, 48,
-			48, 37, 47, 6, 115, 136, 117, 34, 35, 89, 0, 0, 8, 197, 61, 3, 1, 5, 48, 66, 0, 17, 70, 88, 84, 147, 24, 83, 4, 83,
-			112, 34, 89, 83, 112, 55, 47, 0, 0, 24, 73, 8, 85, 12, 20, 129, 77, 77, 65, 82, 71, 108, 47, 55, 37, 12, 108, 65, 89, 47,
-			112, 34, 0, 0, 9, 68, 92, 22, 78, 20, 21, 0, 10, 0, 14, 69, 8, 85, 197, 56, 64, 71, 116, 84, 13, 50, 47, 0, 14, 69,
-			12, 20, 141, 20, 224, 49, 35, 34, 65, 108, 50, 0, 0, 15, 70, 92, 147, 12, 20, 228, 192, 84, 109, 55, 13, 50, 89, 0, 18, 70,
-			40, 84, 133, 52, 144, 64, 57, 2, 116, 34, 13, 65, 6, 37, 35, 0, 0, 0, 13, 68, 20, 194, 90, 20, 37, 55, 6, 37, 12, 88,
-			0, 0, 8, 195, 28, 16, 78, 72, 9, 32, 14, 69, 36, 225, 210, 36, 64, 37, 68, 81, 34, 13, 72, 0, 0, 10, 67, 4, 193, 197,
-			35, 55, 136, 13, 0, 11, 70, 77, 65, 86, 20, 228, 192, 21, 0, 10, 11, 70, 12, 243, 12, 36, 228, 192, 21, 0, 10, 0, 6, 195,
-			92, 145, 64, 8, 7, 195, 80, 241, 64, 72, 32, 18, 71, 76, 50, 1, 48, 181, 217, 44, 89, 49, 35, 55, 49, 84, 123, 49, 0, 12,
-			71, 28, 84, 141, 37, 53, 15, 56, 21, 0, 10, 0, 19, 72, 92, 83, 12, 36, 225, 212, 60, 224, 58, 108, 55, 37, 68, 47, 13, 50,
-			0, 0, 0, 0, 6, 195, 32, 241, 64, 8, 0, 0, 16, 69, 88, 18, 193, 57, 64, 83, 2, 35, 49, 6, 35, 50, 47, 0, 10, 67,
-			4, 209, 78, 115, 65, 108, 50, 0, 10, 69, 5, 37, 8, 85, 32, 21, 0, 10, 0, 0, 0, 0, 9, 198, 4, 195, 73, 76, 178, 69,
-			67, 13, 69, 16, 84, 137, 12, 176, 72, 108, 34, 37, 49, 0, 0, 0, 9, 67, 105, 147, 0, 89, 123, 55, 0, 0, 0, 15, 69, 76,
-			243, 143, 72, 80, 89, 40, 50, 6, 117, 34, 13, 0, 17, 70, 29, 32, 70, 24, 149, 9, 81, 34, 35, 83, 6, 37, 47, 37, 0, 13,
-			70, 72, 245, 83, 76, 80, 85, 34, 13, 89, 120, 0, 16, 69, 76, 245, 197, 80, 240, 89, 40, 58, 6, 108, 12, 47, 40, 0, 16, 69,
-			52, 20, 21, 80, 240, 65, 35, 48, 6, 40, 12, 47, 40, 0, 15, 69, 44, 19, 129, 16, 16, 49, 35, 50, 35, 72, 2, 35, 0, 0,
-			0, 18, 70, 65, 35, 198, 21, 65, 83, 48, 34, 110, 83, 13, 47, 6, 108, 89, 0, 18, 71, 64, 245, 16, 61, 84, 146, 36, 48, 110,
-			47, 48, 40, 34, 6, 37, 0, 20, 71, 36, 212, 18, 60, 212, 20, 84, 37, 65, 48, 34, 6, 110, 65, 48, 47, 40, 0, 10, 199, 24,
-			147, 129, 48, 148, 212, 20, 67, 18, 70, 4, 192, 133, 73, 69, 83, 35, 55, 71, 6, 112, 34, 47, 111, 89, 0, 0, 11, 70, 29, 83,
-			12, 37, 97, 82, 21, 0, 10, 0, 10, 69, 8, 20, 139, 49, 144, 21, 0, 10, 0, 21, 72, 9, 33, 68, 20, 226, 193, 53, 0, 71,
-			34, 116, 72, 13, 50, 49, 35, 65, 48, 0, 14, 70, 4, 36, 129, 32, 19, 64, 115, 71, 34, 35, 65, 0, 0, 20, 71, 44, 245, 9,
-			48, 163, 206, 76, 49, 110, 47, 13, 55, 57, 6, 135, 50, 89, 0, 7, 195, 32, 243, 64, 72, 32, 9, 67, 44, 147, 64, 21, 0, 41,
-			10, 0, 12, 68, 32, 22, 68, 56, 107, 122, 72, 13, 50, 0, 17, 70, 8, 83, 138, 4, 210, 78, 71, 108, 50, 75, 13, 65, 13, 50,
-			0, 21, 72, 5, 32, 200, 36, 209, 68, 21, 48, 35, 34, 136, 37, 65, 6, 116, 72, 108, 89, 0, 0, 10, 69, 72, 131, 196, 21, 48,
-			21, 0, 10, 8, 197, 48, 17, 146, 5, 48, 66, 0, 12, 201, 81, 32, 80, 77, 85, 84, 40, 145, 83, 66, 12, 67, 4, 195, 205, 35,
-			55, 10, 6, 110, 65, 0, 11, 67, 36, 196, 197, 6, 37, 55, 88, 13, 0, 15, 70, 48, 84, 207, 80, 131, 192, 55, 13, 89, 40, 47,
-			40, 0, 0, 18, 71, 88, 243, 19, 12, 129, 78, 44, 83, 110, 55, 89, 49, 108, 68, 49, 0, 0, 0, 10, 69, 92, 147, 19, 60, 224,
-			21, 0, 10, 0, 15, 70, 61, 81, 19, 32, 84, 128, 120, 47, 89, 107, 112, 34, 0, 17, 70, 12, 80, 201, 48, 144, 64, 89, 13, 89,
-			37, 12, 55, 37, 35, 0, 0, 17, 71, 12, 128, 82, 52, 18, 78, 20, 91, 115, 65, 6, 123, 12, 50, 0, 0, 11, 68, 28, 86, 69,
-			72, 136, 123, 13, 34, 0, 0, 10, 69, 61, 129, 143, 72, 64, 21, 0, 10, 0, 16, 70, 32, 21, 133, 56, 112, 64, 107, 115, 83, 13,
-			68, 136, 35, 0, 0, 12, 71, 92, 147, 12, 37, 53, 15, 56, 21, 0, 10, 12, 71, 77, 65, 86, 20, 228, 207, 56, 21, 0, 10, 0,
-			0, 0, 14, 70, 52, 21, 20, 32, 81, 64, 65, 35, 47, 6, 116, 0, 0, 0, 18, 8, 2, 195, 170, 18, 5, 20, 25, 4, 71, 113,
-			34, 13, 47, 123, 47, 0, 14, 68, 32, 244, 197, 4, 107, 40, 89, 6, 37, 12, 35, 0, 0, 15, 69, 92, 83, 5, 21, 32, 84, 112,
-			55, 10, 6, 116, 34, 0, 0, 0, 20, 71, 88, 19, 141, 20, 193, 87, 20, 83, 35, 50, 65, 13, 55, 6, 116, 84, 13, 0, 11, 70,
-			16, 83, 9, 48, 18, 0, 21, 0, 10, 0, 11, 200, 56, 147, 77, 21, 35, 69, 21, 32, 65, 22, 72, 52, 17, 1, 28, 20, 203, 5,
-			32, 65, 35, 72, 35, 136, 6, 35, 89, 49, 35, 34, 0, 0, 16, 69, 32, 84, 133, 72, 240, 107, 108, 34, 6, 108, 12, 34, 40, 0,
-			17, 69, 4, 64, 71, 36, 240, 35, 72, 6, 115, 75, 37, 38, 2, 120, 0, 6, 195, 92, 16, 82, 8, 14, 69, 16, 83, 9, 48, 16,
-			72, 13, 55, 109, 55, 35, 0, 14, 69, 21, 84, 143, 64, 16, 128, 34, 6, 117, 48, 35, 0, 0, 0, 0, 13, 68, 16, 246, 69, 56,
-			72, 131, 57, 6, 108, 50, 0, 18, 72, 12, 132, 137, 77, 65, 76, 48, 80, 49, 34, 13, 89, 47, 112, 55, 0, 0, 13, 69, 76, 129,
-			73, 48, 16, 91, 37, 12, 55, 35, 0, 15, 69, 48, 245, 73, 76, 80, 55, 40, 58, 6, 37, 12, 88, 0, 14, 69, 5, 66, 5, 56,
-			80, 35, 47, 6, 116, 50, 13, 0, 0, 0, 0, 21, 72, 13, 34, 77, 64, 83, 5, 56, 80, 49, 34, 13, 65, 48, 13, 55, 37, 12,
-			50, 0, 20, 72, 12, 19, 79, 84, 99, 1, 28, 80, 49, 35, 65, 40, 83, 55, 6, 115, 90, 0, 0, 6, 97, 97, 0, 4, 110, 2,
-			98, 105, 100, 3, 2, 115, 50, 0, 110, 2, 103, 114, 101, 110, 115, 101, 110, 0, 110, 2, 103, 114, 121, 112, 101, 110, 100, 0, 110, 2,
-			104, 97, 110, 103, 105, 103, 0, 110, 2, 104, 97, 110, 107, 0, 110, 2, 104, 111, 117, 100, 101, 110, 0, 110, 2, 108, 111, 107, 0, 110,
-			2, 109, 101, 108, 100, 98, 97, 0, 110, 2, 112, 97, 115, 98, 97, 0, 110, 2, 115, 105, 101, 110, 0, 110, 2, 115, 112, 114, 101, 101,
-			107, 0, 110, 2, 115, 116, 17, 65, 17, 65, 17, 67, 0, 110, 2, 116, 97, 115, 98, 0, 110, 2, 118, 97, 97, 114, 0, 110, 2, 118,
-			97, 108, 108, 17, 65, 17, 67, 0, 110, 2, 118, 101, 103, 98, 97, 0, 110, 2, 118, 117, 108, 108, 101, 110, 100, 0, 110, 2, 119, 101,
-			115, 105, 103, 0, 110, 2, 119, 121, 115, 101, 110, 100, 101, 32, 118, 111, 111, 114, 110, 0, 110, 2, 101, 101, 110, 3, 2, 115, 50, 19,
-			0, 110, 116, 114, 101, 107, 108, 105, 107, 3, 2, 115, 50, 47, 34, 112, 49, 55, 13, 49, 0, 110, 100, 111, 101, 110, 108, 105, 107, 3,
-			2, 115, 50, 72, 40, 50, 55, 13, 49, 0, 110, 110, 101, 101, 109, 108, 105, 107, 3, 2, 115, 50, 116, 65, 55, 13, 49, 0, 109, 2,
-			98, 111, 114, 115, 3, 2, 115, 65, 0, 110, 2, 115, 105, 101, 110, 32, 24, 3, 6, 115, 50, 0, 4, 110, 119, 101, 110, 2, 32, 3,
-			6, 115, 50, 84, 108, 50, 0, 110, 119, 101, 110, 2, 100, 0, 110, 115, 116, 101, 114, 107, 3, 6, 115, 50, 89, 47, 112, 34, 49, 0,
-			110, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 115, 50, 136, 13, 0, 110, 103, 101, 101, 2, 12, 3, 6, 115, 50, 136, 116, 0,
-			110, 115, 2, 32, 3, 6, 133, 50, 89, 0, 110, 115, 101, 2, 32, 3, 6, 133, 50, 89, 13, 0, 3, 115, 0, 114, 100, 8, 2, 114,
-			3, 115, 34, 47, 0, 114, 100, 8, 2, 111, 3, 115, 34, 47, 10, 0, 4, 110, 2, 103, 3, 115, 50, 0, 110, 2, 108, 111, 107, 32,
-			24, 0, 110, 2, 115, 112, 114, 101, 101, 107, 32, 24, 0, 110, 2, 115, 116, 17, 65, 17, 65, 17, 67, 32, 24, 0, 110, 2, 116, 114,
-			101, 107, 32, 24, 0, 110, 2, 118, 97, 108, 108, 101, 114, 0, 4, 110, 2, 115, 107, 111, 117, 3, 115, 50, 6, 0, 110, 2, 118, 97,
-			110, 107, 0, 4, 110, 100, 2, 114, 111, 107, 3, 115, 50, 47, 10, 0, 110, 100, 2, 114, 117, 115, 0, 110, 116, 101, 108, 8, 3, 115,
-			50, 47, 112, 55, 0, 110, 100, 101, 108, 101, 3, 115, 50, 72, 116, 55, 13, 10, 0, 110, 115, 116, 101, 2, 108, 108, 101, 114, 105, 103,
-			3, 115, 50, 89, 47, 6, 112, 0, 110, 110, 101, 109, 2, 17, 65, 3, 115, 50, 116, 65, 0, 105, 3, 122, 0, 4, 110, 2, 100, 106,
-			105, 101, 3, 122, 68, 0, 110, 2, 116, 106, 105, 101, 0, 4, 100, 106, 105, 101, 3, 122, 80, 37, 0, 116, 106, 105, 101, 0, 7, 6,
-			97, 110, 0, 4, 1, 17, 67, 2, 107, 101, 101, 114, 3, 2, 35, 50, 0, 8, 2, 17, 65, 0, 8, 2, 101, 109, 105, 101, 0, 110,
-			8, 2, 97, 21, 0, 97, 116, 111, 2, 109, 105, 101, 3, 2, 35, 50, 2, 35, 47, 2, 40, 0, 97, 116, 111, 109, 105, 101, 115, 3,
-			2, 35, 50, 2, 35, 47, 117, 65, 2, 37, 89, 0, 111, 2, 114, 101, 107, 17, 67, 3, 2, 35, 50, 2, 40, 0, 111, 109, 97, 2,
-			108, 105, 101, 3, 2, 35, 50, 2, 40, 65, 2, 35, 0, 111, 109, 97, 108, 105, 101, 115, 3, 2, 35, 50, 2, 40, 65, 115, 55, 37,
-			89, 0, 101, 107, 2, 100, 111, 116, 3, 2, 35, 50, 2, 108, 49, 0, 101, 2, 109, 111, 3, 2, 35, 50, 13, 0, 116, 105, 8, 2,
-			17, 67, 14, 128, 132, 132, 3, 2, 35, 50, 47, 2, 37, 0, 116, 114, 97, 2, 115, 105, 101, 116, 3, 2, 35, 50, 47, 34, 2, 35,
-			0, 116, 101, 2, 110, 110, 17, 65, 3, 2, 35, 50, 47, 108, 0, 101, 116, 116, 101, 1, 17, 67, 2, 32, 3, 2, 35, 50, 108, 47,
-			0, 2, 103, 105, 110, 97, 3, 2, 35, 68, 0, 103, 101, 2, 108, 105, 101, 114, 3, 2, 35, 68, 13, 0, 103, 111, 114, 97, 3, 2,
-			35, 68, 81, 131, 34, 2, 35, 0, 103, 111, 108, 2, 101, 3, 2, 133, 68, 136, 2, 40, 55, 0, 103, 108, 8, 2, 17, 65, 3, 2,
-			133, 68, 136, 55, 2, 0, 97, 8, 2, 17, 67, 3, 4, 35, 50, 35, 0, 1, 103, 2, 32, 3, 21, 0, 111, 2, 114, 97, 107, 3,
-			35, 50, 2, 40, 0, 116, 114, 111, 111, 112, 1, 21, 3, 35, 50, 47, 34, 6, 117, 48, 0, 116, 114, 111, 112, 101, 1, 21, 2, 32,
-			3, 35, 50, 47, 34, 6, 117, 48, 13, 0, 116, 114, 111, 112, 105, 101, 1, 21, 3, 35, 50, 47, 34, 6, 117, 48, 37, 0, 116, 114,
-			111, 112, 105, 101, 1, 21, 2, 32, 24, 3, 35, 50, 47, 34, 40, 48, 6, 37, 0, 115, 106, 111, 118, 105, 3, 35, 50, 91, 7, 117,
-			83, 13, 0, 103, 108, 101, 101, 114, 3, 35, 68, 55, 116, 34, 0, 4, 2, 100, 106, 105, 101, 12, 3, 121, 68, 0, 2, 116, 106, 105,
-			101, 0, 4, 115, 1, 100, 3, 133, 50, 89, 0, 115, 1, 104, 0, 115, 1, 107, 0, 115, 1, 108, 0, 115, 1, 114, 102, 0, 115, 1,
-			114, 107, 0, 103, 111, 108, 97, 3, 133, 68, 136, 6, 117, 55, 35, 0, 7, 6, 98, 97, 0, 4, 2, 108, 97, 110, 115, 3, 71, 2,
-			35, 0, 2, 108, 100, 97, 100, 105, 103, 0, 2, 108, 106, 97, 97, 114, 0, 2, 108, 107, 111, 110, 0, 2, 108, 108, 111, 110, 0, 2,
-			110, 97, 108, 17, 65, 0, 2, 110, 105, 101, 114, 0, 2, 114, 101, 116, 25, 0, 2, 114, 111, 110, 0, 2, 115, 105, 101, 108, 105, 0,
-			2, 116, 105, 107, 0, 8, 2, 115, 97, 0, 114, 2, 98, 17, 65, 3, 71, 2, 35, 34, 0, 116, 97, 108, 2, 106, 111, 110, 3, 71,
-			2, 35, 47, 2, 35, 55, 0, 116, 116, 101, 2, 114, 121, 3, 71, 2, 35, 47, 13, 0, 107, 97, 116, 101, 2, 108, 3, 71, 2, 35,
-			49, 13, 47, 112, 0, 107, 116, 101, 2, 114, 105, 3, 71, 2, 35, 49, 47, 116, 0, 110, 100, 2, 105, 101, 116, 3, 71, 2, 35, 50,
-			72, 0, 4, 108, 97, 107, 108, 97, 118, 97, 3, 71, 2, 35, 55, 2, 35, 49, 55, 115, 84, 2, 35, 0, 108, 97, 107, 108, 97, 119,
-			97, 0, 108, 97, 110, 2, 115, 101, 101, 114, 3, 71, 2, 35, 55, 2, 35, 50, 0, 108, 108, 101, 114, 2, 105, 110, 17, 65, 3, 71,
-			2, 35, 55, 13, 34, 0, 108, 106, 117, 3, 71, 2, 35, 55, 57, 118, 0, 108, 104, 111, 114, 3, 71, 2, 35, 55, 107, 117, 34, 0,
-			108, 108, 101, 2, 116, 3, 71, 2, 35, 55, 108, 0, 108, 108, 97, 100, 101, 3, 71, 2, 35, 55, 115, 72, 13, 0, 106, 111, 110, 101,
-			2, 116, 3, 71, 2, 35, 57, 2, 40, 50, 108, 0, 109, 8, 2, 98, 111, 101, 115, 3, 71, 2, 35, 65, 0, 4, 110, 2, 107, 101,
-			116, 3, 71, 2, 35, 68, 0, 110, 2, 107, 105, 101, 114, 0, 110, 2, 107, 114, 111, 116, 0, 115, 105, 2, 108, 105, 115, 107, 3, 71,
-			2, 35, 89, 13, 0, 115, 111, 116, 104, 111, 3, 71, 2, 35, 89, 40, 47, 2, 40, 0, 115, 116, 105, 108, 108, 101, 3, 71, 2, 35,
-			89, 47, 37, 12, 55, 0, 104, 97, 109, 97, 3, 71, 2, 35, 107, 115, 65, 2, 35, 0, 110, 100, 2, 17, 65, 108, 105, 101, 114, 3,
-			71, 4, 35, 50, 72, 0, 108, 108, 111, 2, 116, 3, 71, 4, 35, 55, 110, 0, 1, 21, 2, 114, 101, 110, 3, 71, 6, 115, 0, 97,
-			114, 108, 105, 107, 1, 21, 3, 71, 6, 115, 34, 55, 13, 49, 0, 116, 101, 8, 3, 71, 7, 115, 47, 13, 0, 107, 108, 101, 105, 3,
-			71, 13, 49, 55, 123, 0, 103, 97, 115, 105, 101, 3, 71, 13, 136, 115, 89, 37, 0, 2, 114, 105, 116, 111, 110, 3, 71, 35, 0, 114,
-			111, 2, 109, 101, 116, 101, 114, 3, 71, 35, 34, 2, 40, 0, 114, 97, 2, 107, 3, 71, 35, 34, 6, 35, 0, 114, 111, 107, 3, 71,
-			35, 34, 7, 110, 49, 10, 0, 100, 2, 114, 3, 71, 35, 47, 0, 100, 8, 2, 17, 65, 3, 71, 35, 47, 10, 0, 107, 8, 2, 111,
-			3, 71, 35, 49, 10, 0, 110, 100, 2, 17, 65, 3, 71, 35, 50, 47, 0, 110, 100, 2, 101, 3, 71, 35, 50, 72, 0, 108, 108, 2,
-			101, 116, 106, 105, 101, 12, 3, 71, 35, 55, 0, 108, 115, 101, 109, 3, 71, 35, 55, 89, 13, 65, 0, 115, 116, 105, 111, 110, 3, 71,
-			35, 89, 47, 37, 110, 50, 0, 107, 101, 110, 3, 71, 115, 49, 13, 50, 0, 114, 98, 101, 114, 116, 111, 110, 3, 71, 115, 71, 13, 34,
-			47, 2, 110, 50, 0, 98, 97, 3, 71, 115, 71, 35, 0, 98, 97, 2, 116, 106, 105, 101, 3, 71, 115, 71, 121, 0, 115, 105, 2, 115,
-			3, 71, 115, 89, 13, 0, 100, 106, 105, 101, 3, 71, 121, 80, 37, 0, 7, 6, 98, 101, 0, 115, 101, 114, 105, 110, 103, 3, 8, 71,
-			13, 89, 116, 34, 13, 68, 0, 110, 8, 2, 17, 67, 105, 101, 110, 3, 71, 2, 108, 50, 0, 110, 8, 2, 103, 97, 3, 71, 2, 108,
-			68, 0, 114, 2, 108, 121, 110, 3, 71, 2, 112, 34, 0, 110, 101, 2, 100, 121, 3, 71, 2, 116, 50, 13, 0, 1, 17, 67, 2, 114,
-			115, 105, 101, 3, 71, 6, 113, 0, 101, 114, 1, 21, 2, 32, 3, 71, 6, 116, 34, 0, 4, 114, 105, 110, 103, 3, 71, 6, 116, 34,
-			13, 68, 0, 114, 105, 110, 103, 1, 98, 111, 114, 107, 115, 0, 116, 101, 114, 3, 71, 6, 116, 47, 13, 34, 0, 101, 108, 100, 105, 103,
-			1, 21, 3, 71, 6, 116, 55, 72, 13, 136, 0, 107, 101, 114, 8, 2, 17, 67, 21, 3, 71, 7, 116, 49, 13, 34, 0, 4, 1, 21,
-			2, 17, 67, 3, 71, 13, 0, 1, 98, 17, 65, 17, 67, 2, 108, 0, 1, 117, 106, 2, 108, 108, 17, 65, 0, 2, 100, 114, 21, 0,
-			2, 119, 101, 103, 105, 110, 103, 0, 8, 2, 17, 67, 121, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 32, 0, 2, 97, 109, 112,
-			3, 71, 13, 19, 0, 114, 2, 115, 101, 114, 107, 3, 71, 13, 34, 0, 4, 114, 105, 110, 103, 1, 17, 67, 3, 71, 13, 34, 13, 68,
-			0, 114, 105, 110, 103, 1, 111, 0, 107, 101, 110, 3, 71, 13, 49, 108, 50, 0, 110, 100, 101, 1, 98, 10, 3, 71, 13, 50, 72, 13,
-			0, 100, 119, 2, 21, 3, 71, 13, 72, 58, 0, 100, 101, 2, 17, 67, 102, 3, 71, 13, 72, 112, 0, 100, 101, 108, 105, 110, 103, 3,
-			71, 13, 72, 116, 55, 13, 68, 0, 119, 121, 115, 1, 21, 3, 71, 13, 84, 123, 89, 0, 115, 116, 101, 2, 107, 3, 71, 13, 89, 47,
-			112, 0, 115, 105, 103, 2, 116, 105, 103, 3, 71, 13, 89, 109, 136, 0, 104, 101, 112, 3, 71, 13, 107, 108, 48, 0, 103, 101, 114, 2,
-			17, 65, 3, 71, 13, 136, 116, 34, 0, 4, 2, 17, 67, 11, 12, 3, 71, 108, 0, 100, 2, 116, 0, 100, 106, 105, 101, 3, 71, 108,
-			12, 37, 80, 37, 0, 4, 100, 1, 21, 2, 32, 3, 71, 108, 47, 0, 100, 2, 17, 67, 0, 100, 2, 114, 97, 110, 100, 0, 100, 2,
-			119, 97, 114, 109, 0, 100, 2, 119, 111, 111, 114, 100, 0, 116, 108, 101, 104, 101, 2, 109, 3, 71, 108, 47, 55, 2, 37, 2, 108, 0,
-			100, 119, 2, 105, 101, 103, 3, 71, 108, 47, 84, 0, 110, 100, 101, 3, 71, 108, 50, 72, 13, 0, 110, 103, 101, 108, 3, 71, 108, 68,
-			13, 55, 0, 115, 115, 105, 101, 3, 71, 108, 89, 37, 0, 115, 116, 101, 2, 32, 3, 71, 108, 89, 47, 13, 0, 1, 101, 114, 2, 108,
-			25, 12, 3, 71, 112, 0, 114, 8, 2, 17, 67, 3, 71, 112, 34, 0, 114, 107, 101, 8, 3, 71, 112, 34, 49, 13, 0, 114, 103, 101,
-			3, 71, 112, 34, 81, 13, 0, 114, 103, 3, 71, 112, 34, 136, 0, 4, 107, 2, 32, 3, 71, 112, 49, 0, 107, 2, 100, 0, 107, 2,
-			102, 0, 107, 2, 104, 0, 107, 2, 109, 0, 107, 2, 115, 0, 107, 107, 2, 12, 0, 4, 1, 114, 2, 108, 25, 3, 71, 112, 55, 0,
-			108, 1, 17, 67, 2, 32, 0, 108, 8, 2, 17, 67, 0, 108, 108, 2, 12, 0, 4, 1, 110, 111, 115, 2, 115, 105, 101, 3, 71, 116,
-			0, 2, 100, 101, 32, 0, 101, 2, 12, 0, 4, 101, 114, 1, 97, 17, 67, 11, 3, 71, 116, 34, 0, 101, 114, 1, 101, 105, 100, 100,
-			101, 116, 0, 101, 114, 1, 115, 121, 0, 114, 101, 2, 32, 3, 71, 116, 34, 13, 0, 114, 105, 110, 103, 1, 116, 110, 111, 3, 71, 116,
-			34, 13, 68, 0, 116, 101, 2, 32, 3, 71, 116, 47, 13, 0, 116, 101, 115, 1, 97, 105, 100, 2, 21, 3, 71, 116, 47, 13, 89, 0,
-			116, 105, 101, 115, 3, 71, 116, 47, 37, 89, 0, 4, 107, 101, 114, 1, 21, 2, 32, 3, 71, 116, 49, 13, 34, 0, 107, 101, 114, 1,
-			21, 2, 116, 106, 105, 101, 0, 107, 101, 114, 2, 17, 67, 21, 0, 107, 101, 114, 2, 17, 65, 17, 65, 3, 71, 116, 49, 13, 34, 10,
-			0, 4, 110, 101, 1, 21, 2, 32, 3, 71, 116, 50, 13, 0, 110, 101, 2, 114, 0, 110, 105, 2, 103, 0, 100, 101, 2, 115, 116, 114,
-			3, 71, 116, 72, 13, 0, 100, 101, 108, 3, 71, 116, 72, 13, 55, 0, 100, 101, 118, 3, 71, 116, 72, 13, 83, 0, 100, 101, 115, 2,
-			32, 3, 71, 116, 72, 13, 89, 0, 4, 119, 101, 2, 107, 110, 105, 101, 3, 71, 116, 84, 13, 0, 119, 101, 2, 108, 105, 112, 0, 119,
-			101, 2, 114, 97, 115, 105, 101, 0, 119, 101, 2, 114, 105, 103, 0, 119, 101, 110, 100, 101, 3, 71, 116, 84, 13, 50, 72, 13, 0, 119,
-			105, 110, 103, 3, 71, 116, 84, 13, 68, 0, 4, 115, 2, 105, 101, 32, 3, 71, 116, 89, 0, 115, 2, 105, 101, 115, 32, 0, 115, 101,
-			109, 3, 71, 116, 89, 13, 65, 0, 115, 105, 103, 3, 71, 116, 89, 13, 136, 0, 97, 117, 3, 71, 120, 0, 105, 2, 12, 3, 71, 123,
-			0, 105, 103, 101, 3, 71, 123, 12, 90, 0, 117, 2, 17, 67, 3, 71, 128, 0, 117, 101, 108, 3, 71, 128, 13, 55, 0, 7, 6, 100,
-			101, 0, 1, 21, 2, 114, 111, 115, 105, 101, 3, 47, 10, 2, 116, 0, 4, 2, 109, 111, 111, 110, 3, 72, 2, 37, 0, 2, 112, 114,
-			101, 115, 115, 0, 111, 100, 111, 2, 114, 97, 110, 116, 3, 72, 2, 37, 2, 40, 72, 2, 40, 0, 116, 97, 105, 2, 108, 108, 101, 101,
-			114, 3, 72, 2, 37, 12, 47, 2, 123, 0, 109, 111, 110, 101, 3, 72, 2, 37, 65, 117, 50, 13, 0, 4, 2, 107, 108, 105, 110, 17,
-			65, 3, 72, 2, 108, 0, 2, 109, 111, 17, 67, 114, 0, 2, 112, 117, 116, 97, 0, 2, 115, 107, 117, 110, 0, 116, 111, 2, 110, 17,
-			65, 3, 72, 2, 108, 47, 2, 40, 0, 110, 8, 2, 100, 114, 105, 3, 72, 2, 108, 50, 0, 108, 105, 8, 2, 107, 97, 3, 72, 2,
-			108, 55, 2, 37, 0, 108, 105, 107, 97, 2, 116, 101, 115, 115, 3, 72, 2, 108, 55, 2, 37, 49, 2, 35, 0, 98, 105, 2, 116, 101,
-			3, 72, 2, 108, 71, 2, 37, 0, 4, 98, 117, 2, 116, 97, 3, 72, 2, 108, 71, 2, 118, 0, 98, 117, 2, 116, 101, 21, 0, 115,
-			8, 2, 112, 111, 3, 72, 2, 108, 89, 0, 114, 8, 2, 100, 117, 105, 17, 67, 3, 72, 2, 112, 34, 0, 108, 112, 104, 105, 110, 105,
-			117, 109, 3, 72, 2, 112, 55, 83, 37, 50, 37, 38, 111, 65, 0, 4, 2, 102, 108, 97, 115, 105, 3, 72, 2, 116, 0, 2, 104, 105,
-			100, 114, 0, 2, 107, 114, 105, 109, 105, 110, 97, 0, 2, 115, 116, 114, 117, 107, 116, 0, 101, 2, 109, 111, 101, 100, 105, 103, 0, 115,
-			116, 97, 98, 105, 108, 105, 8, 2, 115, 3, 72, 2, 116, 89, 47, 2, 35, 71, 2, 37, 55, 2, 37, 0, 115, 101, 109, 98, 101, 114,
-			3, 72, 2, 116, 89, 108, 65, 71, 13, 34, 0, 4, 117, 114, 2, 100, 114, 101, 110, 107, 3, 72, 2, 118, 13, 34, 0, 117, 114, 2,
-			100, 114, 105, 110, 103, 21, 0, 117, 114, 2, 103, 114, 111, 110, 100, 0, 117, 114, 2, 108, 101, 101, 102, 0, 117, 114, 2, 108, 111, 112,
-			21, 0, 117, 114, 2, 108, 117, 103, 116, 0, 117, 114, 2, 115, 105, 103, 116, 0, 117, 114, 2, 116, 114, 97, 112, 116, 0, 117, 114, 2,
-			119, 101, 101, 17, 67, 0, 117, 114, 2, 119, 105, 110, 116, 101, 114, 0, 117, 114, 2, 97, 97, 114, 3, 72, 2, 118, 13, 34, 10, 0,
-			117, 114, 115, 112, 101, 107, 3, 72, 2, 118, 13, 34, 89, 48, 108, 49, 0, 4, 117, 114, 2, 98, 111, 3, 72, 2, 128, 34, 0, 117,
-			114, 2, 100, 97, 103, 0, 117, 114, 2, 112, 114, 105, 101, 109, 0, 117, 114, 2, 114, 101, 105, 115, 0, 117, 114, 2, 115, 107, 121, 110,
-			17, 65, 0, 117, 114, 2, 115, 107, 121, 110, 100, 101, 0, 117, 114, 2, 115, 111, 101, 107, 0, 117, 114, 2, 119, 97, 97, 105, 100, 0,
-			2, 103, 114, 97, 100, 17, 65, 3, 72, 4, 116, 0, 116, 97, 105, 108, 3, 72, 6, 37, 12, 47, 123, 55, 0, 110, 105, 109, 8, 3,
-			72, 7, 108, 50, 13, 65, 0, 110, 107, 101, 110, 2, 100, 3, 72, 7, 108, 68, 49, 13, 50, 0, 4, 1, 10, 2, 110, 101, 32, 3,
-			72, 13, 0, 1, 21, 2, 107, 111, 110, 116, 114, 97, 107, 0, 1, 21, 2, 109, 101, 110, 116, 0, 2, 98, 17, 65, 0, 2, 107, 97,
-			97, 110, 0, 2, 107, 97, 110, 101, 0, 2, 107, 114, 101, 0, 2, 108, 97, 97, 110, 0, 114, 100, 1, 21, 2, 32, 3, 72, 13, 34,
-			47, 0, 112, 97, 114, 116, 101, 2, 109, 101, 110, 116, 3, 72, 13, 48, 2, 35, 34, 47, 13, 0, 112, 111, 115, 105, 116, 111, 3, 72,
-			13, 48, 117, 89, 37, 47, 40, 0, 107, 97, 110, 116, 2, 32, 3, 72, 13, 49, 35, 50, 47, 0, 110, 105, 115, 1, 10, 3, 72, 13,
-			50, 13, 89, 0, 110, 100, 1, 21, 2, 115, 116, 101, 3, 72, 13, 50, 47, 0, 110, 100, 1, 21, 2, 101, 114, 3, 72, 13, 50, 72,
-			0, 108, 101, 8, 2, 103, 17, 65, 3, 72, 13, 55, 13, 0, 108, 101, 1, 110, 117, 107, 2, 25, 3, 72, 13, 55, 108, 0, 108, 105,
-			2, 114, 105, 117, 109, 3, 72, 13, 55, 109, 0, 4, 108, 111, 111, 115, 3, 72, 13, 55, 117, 89, 0, 108, 111, 115, 0, 98, 97, 2,
-			116, 116, 101, 101, 114, 3, 72, 13, 71, 2, 35, 0, 98, 117, 117, 116, 3, 72, 13, 71, 118, 47, 0, 119, 101, 2, 116, 25, 3, 72,
-			13, 84, 108, 0, 112, 111, 116, 2, 32, 3, 72, 108, 48, 2, 40, 0, 107, 97, 100, 101, 2, 115, 3, 72, 108, 49, 6, 115, 72, 13,
-			0, 107, 97, 100, 101, 2, 110, 3, 72, 108, 49, 35, 72, 6, 108, 0, 110, 116, 101, 1, 21, 2, 21, 3, 72, 108, 50, 47, 13, 0,
-			110, 107, 3, 72, 108, 68, 49, 0, 115, 105, 98, 101, 108, 3, 72, 108, 89, 37, 71, 112, 55, 0, 114, 109, 1, 17, 67, 21, 2, 25,
-			3, 72, 112, 34, 14, 65, 0, 114, 103, 101, 8, 3, 72, 112, 34, 136, 13, 0, 4, 114, 100, 101, 1, 101, 101, 119, 116, 3, 72, 113,
-			34, 72, 13, 0, 114, 100, 101, 8, 2, 25, 0, 8, 2, 107, 108, 97, 115, 115, 3, 72, 116, 0, 4, 108, 101, 1, 114, 101, 100, 110,
-			111, 2, 21, 3, 72, 116, 55, 13, 10, 0, 108, 101, 1, 114, 111, 111, 118, 2, 21, 0, 7, 6, 101, 101, 0, 114, 98, 105, 101, 100,
-			119, 3, 2, 116, 34, 71, 2, 37, 47, 84, 0, 114, 119, 8, 3, 2, 116, 34, 84, 0, 4, 110, 2, 100, 114, 97, 103, 21, 3, 2,
-			116, 50, 0, 110, 2, 109, 97, 108, 105, 103, 0, 110, 2, 112, 97, 114, 105, 103, 0, 110, 2, 118, 111, 114, 109, 0, 110, 8, 2, 115,
-			116, 101, 109, 109, 0, 110, 8, 2, 115, 121, 0, 110, 8, 2, 116, 111, 110, 0, 110, 8, 2, 118, 111, 117, 100, 21, 0, 4, 114, 1,
-			21, 2, 24, 3, 6, 116, 34, 0, 114, 1, 107, 105, 0, 114, 1, 108, 111, 17, 65, 0, 114, 1, 109, 109, 0, 114, 1, 109, 114, 0,
-			114, 1, 115, 107, 0, 114, 1, 115, 115, 0, 114, 1, 117, 0, 114, 100, 104, 101, 105, 100, 1, 21, 3, 6, 116, 34, 47, 107, 123, 47,
-			0, 108, 1, 117, 3, 6, 116, 55, 0, 3, 116, 0, 2, 117, 117, 3, 116, 10, 0, 110, 2, 17, 67, 106, 105, 101, 3, 116, 12, 37,
-			68, 0, 4, 114, 1, 102, 115, 3, 116, 34, 0, 114, 1, 104, 0, 114, 1, 107, 21, 0, 114, 1, 107, 115, 0, 114, 1, 108, 17, 65,
-			17, 65, 0, 114, 1, 108, 17, 67, 17, 65, 17, 65, 0, 114, 1, 108, 17, 67, 21, 0, 114, 1, 108, 101, 103, 0, 114, 1, 108, 103,
-			0, 114, 1, 108, 107, 0, 114, 1, 108, 110, 0, 114, 1, 108, 114, 0, 114, 1, 108, 115, 0, 114, 1, 109, 17, 67, 0, 114, 1, 112,
-			101, 0, 114, 1, 115, 17, 67, 0, 114, 1, 116, 110, 171, 195, 105, 114, 111, 0, 114, 1, 118, 17, 65, 17, 65, 0, 114, 1, 118, 17,
-			67, 0, 114, 1, 118, 101, 17, 67, 0, 114, 1, 119, 0, 114, 98, 105, 101, 100, 2, 17, 65, 3, 116, 34, 71, 6, 37, 72, 0, 4,
-			100, 106, 105, 101, 3, 116, 37, 80, 37, 0, 116, 106, 105, 101, 0, 117, 3, 119, 12, 0, 117, 101, 3, 119, 12, 13, 0, 7, 6, 101,
-			110, 0, 101, 109, 109, 101, 108, 3, 2, 37, 50, 112, 65, 13, 55, 0, 4, 1, 17, 67, 17, 65, 17, 67, 2, 115, 105, 101, 101, 17,
-			67, 3, 2, 108, 50, 0, 1, 17, 67, 17, 65, 17, 67, 2, 115, 105, 195, 171, 17, 67, 0, 8, 2, 116, 111, 112, 116, 105, 101, 0,
-			101, 114, 2, 103, 105, 3, 2, 108, 50, 13, 34, 0, 116, 111, 101, 115, 105, 97, 3, 2, 108, 50, 47, 2, 40, 89, 2, 37, 35, 0,
-			107, 101, 108, 2, 118, 111, 117, 100, 105, 3, 2, 108, 50, 49, 13, 55, 0, 115, 105, 107, 108, 111, 112, 101, 3, 2, 108, 50, 89, 2,
-			37, 49, 55, 2, 40, 48, 13, 0, 105, 103, 8, 2, 109, 97, 3, 2, 108, 50, 109, 136, 0, 111, 114, 109, 8, 2, 17, 65, 3, 2,
-			116, 50, 110, 34, 65, 0, 116, 114, 101, 112, 114, 101, 2, 110, 101, 3, 2, 133, 50, 47, 34, 13, 48, 34, 13, 0, 4, 116, 1, 17,
-			67, 21, 2, 25, 3, 6, 108, 50, 47, 0, 116, 1, 17, 67, 21, 2, 101, 32, 0, 115, 105, 101, 1, 17, 67, 2, 25, 3, 6, 108,
-			50, 89, 37, 0, 115, 105, 101, 115, 1, 17, 67, 3, 6, 108, 50, 89, 37, 89, 0, 105, 8, 2, 103, 3, 6, 116, 50, 13, 0, 8,
-			107, 2, 100, 104, 3, 8, 108, 50, 0, 4, 115, 105, 101, 109, 2, 32, 3, 10, 2, 108, 50, 89, 37, 65, 0, 115, 105, 101, 109, 2,
-			101, 32, 0, 115, 101, 109, 98, 108, 101, 3, 10, 2, 133, 50, 89, 133, 65, 71, 114, 0, 4, 1, 10, 2, 17, 67, 32, 3, 13, 50,
-			0, 1, 10, 2, 32, 0, 1, 10, 2, 100, 101, 17, 67, 32, 0, 1, 10, 2, 100, 101, 32, 0, 1, 17, 67, 10, 2, 98, 17, 65,
-			114, 103, 0, 1, 100, 114, 111, 111, 98, 2, 115, 0, 1, 102, 21, 2, 105, 115, 0, 1, 103, 110, 2, 100, 0, 1, 105, 111, 111, 2,
-			115, 0, 1, 107, 17, 67, 97, 118, 2, 17, 67, 0, 1, 107, 21, 2, 115, 107, 97, 112, 0, 1, 109, 2, 105, 115, 0, 105, 101, 114,
-			1, 17, 67, 3, 13, 50, 6, 37, 12, 34, 0, 121, 1, 17, 67, 21, 2, 32, 3, 13, 50, 6, 123, 0, 4, 101, 1, 107, 10, 2,
-			32, 3, 13, 50, 13, 0, 101, 1, 115, 10, 2, 32, 0, 4, 115, 1, 108, 17, 65, 17, 65, 2, 32, 3, 13, 50, 89, 0, 115, 1,
-			108, 101, 118, 2, 32, 0, 115, 1, 108, 108, 117, 118, 2, 32, 0, 115, 1, 112, 112, 111, 17, 67, 0, 115, 119, 97, 97, 114, 1, 21,
-			2, 100, 105, 103, 3, 13, 50, 89, 84, 6, 115, 34, 0, 104, 101, 105, 100, 1, 17, 67, 3, 13, 50, 107, 123, 47, 0, 97, 97, 114,
-			1, 17, 67, 3, 13, 50, 115, 34, 0, 97, 114, 101, 1, 17, 67, 2, 32, 3, 13, 50, 115, 34, 13, 0, 99, 101, 2, 25, 12, 3,
-			21, 0, 116, 106, 105, 101, 1, 107, 10, 3, 37, 68, 80, 37, 0, 116, 106, 105, 101, 1, 114, 112, 3, 108, 12, 37, 68, 49, 2, 37,
-			0, 115, 1, 108, 2, 32, 3, 108, 12, 50, 89, 0, 115, 101, 1, 108, 2, 32, 3, 108, 12, 50, 89, 13, 0, 116, 106, 105, 101, 2,
-			12, 3, 108, 37, 68, 80, 37, 0, 4, 1, 107, 115, 2, 100, 3, 108, 50, 0, 1, 112, 17, 67, 21, 2, 32, 0, 1, 112, 105, 101,
-			114, 98, 0, 1, 116, 111, 112, 2, 17, 67, 0, 110, 1, 112, 17, 67, 21, 2, 101, 0, 4, 116, 1, 110, 101, 2, 12, 12, 3, 108,
-			50, 47, 0, 116, 1, 114, 112, 2, 12, 12, 0, 116, 1, 115, 21, 2, 114, 17, 65, 0, 106, 105, 110, 3, 108, 50, 57, 13, 50, 0,
-			100, 101, 108, 2, 32, 3, 108, 50, 72, 13, 55, 0, 115, 1, 112, 17, 67, 2, 12, 3, 108, 50, 89, 0, 115, 101, 1, 112, 17, 67,
-			2, 108, 101, 32, 3, 108, 50, 89, 116, 0, 4, 1, 10, 2, 107, 32, 3, 108, 68, 0, 103, 1, 10, 2, 32, 0, 103, 101, 2, 108,
-			3, 108, 68, 13, 0, 107, 101, 108, 8, 3, 108, 68, 49, 13, 55, 0, 111, 114, 109, 8, 3, 116, 50, 6, 110, 34, 13, 10, 65, 0,
-			101, 1, 107, 115, 2, 32, 3, 116, 50, 13, 0, 101, 114, 115, 3, 116, 50, 13, 34, 89, 0, 4, 115, 1, 109, 2, 12, 12, 3, 134,
-			50, 89, 0, 115, 1, 114, 103, 0, 115, 1, 119, 0, 115, 105, 101, 1, 109, 2, 25, 3, 134, 50, 89, 2, 37, 0, 7, 6, 103, 101,
-			0, 103, 101, 101, 1, 21, 3, 8, 136, 13, 136, 116, 0, 1, 17, 67, 2, 32, 3, 81, 13, 0, 114, 1, 114, 117, 98, 3, 81, 13,
-			34, 0, 110, 114, 101, 3, 90, 6, 133, 50, 34, 13, 0, 110, 105, 101, 2, 32, 3, 90, 13, 50, 37, 12, 0, 111, 8, 2, 115, 3,
-			136, 2, 37, 2, 40, 0, 114, 8, 2, 109, 97, 3, 136, 2, 112, 34, 0, 114, 117, 2, 98, 121, 110, 3, 136, 2, 116, 34, 2, 111,
-			0, 110, 101, 2, 97, 108, 111, 3, 136, 2, 116, 50, 2, 37, 0, 101, 115, 2, 100, 114, 105, 102, 116, 105, 3, 136, 2, 116, 89, 0,
-			109, 109, 101, 114, 3, 136, 6, 108, 65, 13, 34, 0, 1, 105, 110, 2, 114, 105, 3, 136, 6, 116, 0, 119, 101, 2, 32, 3, 136, 6,
-			116, 84, 13, 0, 4, 119, 101, 110, 100, 1, 21, 2, 32, 3, 136, 6, 116, 84, 13, 50, 47, 0, 119, 101, 110, 100, 1, 21, 2, 115,
-			116, 101, 0, 119, 101, 110, 100, 101, 1, 21, 2, 32, 3, 136, 6, 116, 84, 13, 50, 72, 13, 0, 115, 101, 2, 32, 3, 136, 6, 116,
-			89, 13, 0, 4, 3, 136, 13, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 111, 115, 115, 14, 128, 132, 130, 0, 107, 108, 101, 100,
-			101, 3, 136, 13, 49, 55, 116, 72, 13, 0, 110, 101, 2, 114, 17, 65, 3, 136, 13, 50, 13, 0, 110, 97, 100, 2, 101, 116, 106, 105,
-			101, 3, 136, 13, 50, 115, 72, 0, 110, 97, 100, 101, 3, 136, 13, 50, 115, 72, 13, 0, 110, 101, 2, 114, 105, 101, 25, 3, 136, 13,
-			50, 116, 0, 108, 121, 107, 101, 110, 105, 8, 2, 115, 3, 136, 13, 55, 6, 123, 49, 13, 50, 13, 0, 109, 101, 108, 2, 100, 3, 136,
-			13, 65, 112, 55, 0, 98, 101, 100, 101, 8, 3, 136, 13, 71, 116, 72, 13, 0, 118, 101, 115, 2, 32, 3, 136, 13, 83, 108, 89, 0,
-			119, 101, 108, 2, 119, 3, 136, 13, 84, 6, 112, 55, 0, 4, 119, 101, 108, 2, 100, 3, 136, 13, 84, 112, 55, 0, 119, 101, 108, 2,
-			102, 0, 119, 101, 101, 114, 3, 136, 13, 84, 116, 34, 0, 119, 101, 110, 115, 1, 17, 67, 21, 3, 136, 13, 84, 134, 50, 89, 0, 115,
-			101, 108, 2, 32, 3, 136, 13, 89, 112, 55, 0, 115, 101, 108, 108, 101, 2, 32, 3, 136, 13, 89, 112, 55, 13, 0, 115, 101, 108, 115,
-			3, 136, 13, 89, 112, 55, 89, 0, 103, 101, 119, 101, 110, 115, 3, 136, 13, 136, 116, 84, 13, 50, 89, 0, 4, 1, 17, 65, 2, 116,
-			106, 105, 101, 3, 136, 37, 0, 2, 111, 103, 114, 97, 0, 2, 111, 108, 111, 0, 2, 111, 109, 101, 0, 110, 115, 8, 2, 17, 67, 3,
-			136, 108, 12, 50, 89, 0, 109, 115, 3, 136, 108, 65, 89, 0, 115, 112, 101, 2, 32, 3, 136, 108, 89, 48, 13, 0, 115, 112, 101, 115,
-			2, 32, 3, 136, 108, 89, 48, 13, 89, 0, 4, 2, 107, 32, 3, 136, 112, 0, 2, 107, 103, 0, 2, 107, 104, 0, 2, 107, 107, 0,
-			2, 107, 115, 107, 101, 101, 114, 0, 2, 107, 116, 0, 8, 2, 114, 17, 67, 0, 114, 102, 1, 17, 67, 3, 136, 112, 34, 83, 0, 114,
-			119, 101, 1, 17, 67, 2, 32, 3, 136, 112, 34, 84, 13, 0, 107, 119, 2, 111, 114, 100, 3, 136, 112, 49, 84, 0, 108, 100, 3, 136,
-			112, 55, 47, 0, 108, 100, 2, 105, 110, 17, 67, 3, 136, 112, 55, 47, 10, 0, 108, 100, 2, 105, 110, 103, 3, 136, 112, 55, 72, 0,
-			4, 108, 100, 101, 2, 25, 3, 136, 112, 55, 72, 13, 0, 108, 100, 105, 0, 108, 100, 106, 105, 101, 3, 136, 112, 55, 80, 37, 0, 4,
-			1, 107, 114, 101, 119, 2, 119, 101, 114, 3, 136, 116, 0, 101, 2, 12, 0, 195, 171, 114, 2, 32, 3, 136, 116, 13, 34, 0, 110, 101,
-			2, 32, 3, 136, 116, 50, 13, 0, 110, 105, 116, 2, 105, 101, 17, 67, 3, 136, 116, 50, 13, 47, 0, 110, 117, 115, 3, 136, 116, 50,
-			111, 89, 0, 108, 101, 1, 25, 2, 32, 3, 136, 116, 55, 13, 0, 108, 101, 114, 8, 3, 136, 116, 55, 13, 34, 0, 4, 119, 101, 114,
-			1, 103, 97, 108, 115, 3, 136, 116, 84, 13, 34, 0, 119, 101, 114, 1, 116, 101, 119, 0, 119, 101, 114, 2, 32, 0, 119, 101, 114, 115,
-			2, 32, 3, 136, 116, 84, 13, 34, 89, 0, 119, 101, 110, 115, 2, 103, 3, 136, 116, 84, 13, 50, 89, 0, 119, 101, 108, 3, 136, 116,
-			84, 13, 55, 0, 119, 105, 110, 103, 3, 136, 116, 84, 13, 68, 0, 105, 2, 12, 3, 136, 123, 0, 117, 2, 17, 67, 3, 136, 128, 0,
-			7, 6, 104, 101, 0, 2, 98, 114, 101, 3, 107, 2, 37, 0, 116, 101, 114, 111, 2, 21, 21, 14, 128, 132, 134, 3, 107, 2, 108, 47,
-			14, 34, 2, 40, 0, 107, 8, 2, 116, 97, 3, 107, 2, 108, 49, 0, 114, 8, 2, 21, 14, 128, 132, 131, 3, 107, 2, 112, 34, 0,
-			114, 97, 108, 2, 100, 105, 101, 107, 3, 107, 2, 112, 34, 2, 35, 55, 0, 114, 2, 101, 110, 105, 3, 107, 2, 112, 34, 19, 0, 114,
-			97, 108, 2, 100, 3, 107, 2, 112, 34, 35, 55, 0, 114, 116, 111, 103, 2, 105, 110, 3, 107, 2, 112, 34, 47, 2, 110, 136, 0, 114,
-			109, 97, 102, 114, 111, 2, 100, 105, 3, 107, 2, 112, 34, 65, 2, 35, 83, 34, 2, 40, 0, 114, 109, 101, 2, 108, 121, 110, 3, 107,
-			2, 112, 34, 65, 13, 0, 114, 98, 101, 114, 103, 2, 105, 3, 107, 2, 112, 34, 71, 2, 112, 34, 136, 0, 114, 98, 101, 114, 103, 2,
-			115, 97, 21, 3, 107, 2, 112, 34, 71, 112, 34, 136, 0, 114, 105, 110, 110, 101, 114, 3, 107, 2, 112, 34, 109, 50, 13, 34, 0, 108,
-			2, 100, 105, 110, 3, 107, 2, 112, 55, 0, 108, 105, 2, 107, 111, 112, 3, 107, 2, 112, 55, 2, 37, 0, 108, 100, 2, 104, 97, 102,
-			116, 3, 107, 2, 112, 55, 47, 0, 2, 114, 111, 195, 175, 101, 3, 107, 2, 116, 0, 114, 111, 2, 195, 175, 101, 110, 3, 107, 2, 116,
-			34, 2, 40, 58, 0, 101, 116, 2, 104, 111, 111, 102, 100, 105, 3, 107, 2, 116, 47, 0, 4, 114, 8, 2, 98, 101, 17, 67, 14, 128,
-			132, 131, 3, 107, 6, 112, 34, 0, 114, 8, 2, 118, 101, 114, 14, 128, 132, 131, 0, 114, 100, 101, 114, 3, 107, 6, 112, 34, 72, 13,
-			34, 0, 108, 100, 101, 8, 3, 107, 6, 112, 55, 72, 13, 0, 114, 8, 2, 119, 97, 97, 3, 107, 7, 112, 34, 0, 4, 114, 2, 101,
-			107, 115, 97, 109, 17, 65, 3, 107, 7, 112, 34, 10, 0, 114, 8, 2, 117, 105, 116, 0, 1, 21, 2, 110, 25, 3, 107, 108, 0, 120,
-			2, 17, 67, 3, 107, 108, 49, 89, 0, 107, 115, 101, 2, 17, 67, 3, 107, 108, 49, 89, 13, 0, 109, 2, 17, 67, 3, 107, 108, 65,
-			0, 4, 2, 103, 3, 107, 112, 0, 2, 114, 114, 105, 101, 0, 4, 114, 2, 98, 101, 114, 103, 3, 107, 112, 34, 0, 114, 2, 107, 111,
-			109, 115, 0, 114, 8, 2, 109, 97, 110, 25, 0, 114, 8, 114, 111, 111, 2, 17, 67, 0, 114, 2, 101, 118, 97, 3, 107, 112, 34, 19,
-			0, 114, 116, 122, 111, 103, 3, 107, 112, 34, 47, 89, 110, 136, 0, 114, 116, 111, 103, 3, 107, 112, 34, 47, 110, 136, 0, 114, 102, 115,
-			3, 107, 112, 34, 83, 89, 0, 114, 115, 101, 110, 3, 107, 112, 34, 89, 13, 50, 0, 108, 3, 107, 112, 55, 0, 2, 108, 105, 3, 107,
-			116, 0, 114, 2, 101, 25, 3, 107, 116, 34, 0, 4, 114, 101, 2, 114, 101, 103, 3, 107, 116, 34, 13, 0, 114, 101, 2, 119, 0, 114,
-			101, 8, 2, 108, 0, 101, 114, 101, 110, 2, 103, 114, 97, 99, 3, 107, 116, 34, 13, 50, 0, 101, 114, 115, 101, 114, 3, 107, 116, 34,
-			89, 13, 34, 0, 108, 101, 8, 2, 25, 3, 107, 116, 55, 13, 0, 109, 101, 108, 3, 107, 116, 65, 13, 55, 0, 100, 101, 1, 10, 2,
-			32, 3, 107, 116, 72, 13, 0, 105, 100, 2, 32, 14, 128, 128, 132, 3, 107, 123, 47, 0, 105, 100, 101, 2, 17, 67, 3, 107, 123, 72,
-			13, 0, 7, 6, 105, 110, 0, 4, 105, 115, 105, 2, 17, 65, 3, 2, 37, 50, 2, 37, 91, 2, 37, 0, 105, 115, 105, 2, 101, 17,
-			65, 0, 2, 102, 111, 114, 109, 101, 14, 128, 132, 130, 3, 6, 109, 50, 0, 8, 2, 97, 17, 67, 101, 109, 14, 128, 132, 130, 3, 6,
-			109, 50, 10, 0, 103, 8, 2, 21, 3, 6, 109, 50, 136, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 109, 50, 136, 13, 0,
-			4, 103, 101, 2, 119, 105, 110, 103, 3, 6, 109, 50, 136, 116, 0, 103, 101, 101, 8, 2, 12, 0, 8, 2, 115, 116, 117, 100, 101, 14,
-			128, 132, 130, 3, 7, 109, 50, 0, 8, 2, 101, 110, 116, 3, 7, 109, 50, 10, 0, 4, 1, 17, 67, 2, 97, 115, 101, 109, 3, 10,
-			13, 50, 0, 1, 102, 108, 101, 115, 2, 17, 67, 21, 0, 103, 97, 110, 103, 3, 10, 109, 50, 136, 35, 68, 0, 4, 1, 21, 2, 103,
-			114, 121, 112, 3, 13, 50, 0, 2, 100, 105, 101, 110, 0, 2, 100, 111, 101, 110, 97, 0, 2, 101, 101, 110, 0, 2, 102, 101, 107, 0,
-			2, 104, 97, 108, 105, 103, 0, 2, 104, 101, 101, 109, 115, 0, 2, 104, 101, 103, 116, 101, 110, 0, 2, 107, 101, 110, 110, 0, 2, 115,
-			107, 105, 107, 0, 2, 115, 107, 114, 105, 112, 0, 2, 115, 112, 101, 107, 0, 2, 115, 116, 97, 110, 0, 2, 116, 105, 101, 109, 0, 2,
-			119, 101, 114, 107, 105, 110, 103, 17, 67, 17, 67, 0, 8, 2, 101, 114, 17, 67, 0, 105, 115, 105, 101, 3, 13, 50, 6, 37, 89, 2,
-			37, 0, 116, 117, 195, 175, 3, 13, 50, 47, 2, 40, 12, 37, 0, 116, 101, 2, 103, 114, 101, 3, 13, 50, 47, 13, 0, 4, 116, 101,
-			114, 2, 110, 97, 115, 105, 111, 3, 13, 50, 47, 13, 34, 0, 116, 101, 114, 2, 110, 101, 114, 105, 110, 0, 116, 101, 114, 2, 110, 105,
-			25, 0, 116, 105, 109, 105, 2, 100, 17, 65, 3, 13, 50, 47, 13, 65, 13, 0, 116, 114, 105, 103, 2, 101, 21, 3, 13, 50, 47, 34,
-			2, 37, 136, 0, 116, 114, 111, 8, 2, 17, 67, 3, 13, 50, 47, 34, 2, 40, 0, 116, 114, 105, 103, 101, 3, 13, 50, 47, 34, 37,
-			136, 13, 0, 116, 101, 103, 2, 114, 105, 3, 13, 50, 47, 112, 136, 0, 100, 105, 2, 97, 21, 3, 13, 50, 72, 2, 37, 0, 100, 111,
-			110, 101, 2, 115, 105, 3, 13, 50, 72, 2, 40, 50, 37, 12, 0, 100, 101, 114, 8, 2, 17, 67, 3, 13, 50, 72, 13, 34, 0, 4,
-			100, 105, 118, 105, 3, 13, 50, 72, 13, 84, 13, 0, 100, 105, 119, 105, 0, 100, 105, 115, 2, 107, 114, 3, 13, 50, 72, 13, 89, 0,
-			102, 97, 110, 2, 116, 105, 3, 13, 50, 83, 2, 35, 50, 0, 102, 111, 114, 2, 109, 97, 3, 13, 50, 83, 2, 110, 34, 0, 118, 97,
-			108, 105, 100, 101, 3, 13, 50, 84, 2, 35, 55, 37, 72, 13, 0, 118, 101, 115, 116, 2, 101, 101, 114, 3, 13, 50, 84, 2, 108, 89,
-			47, 0, 118, 101, 115, 116, 101, 2, 114, 21, 3, 13, 50, 84, 2, 108, 89, 47, 116, 0, 115, 105, 2, 100, 101, 110, 116, 3, 13, 50,
-			89, 13, 0, 115, 101, 107, 2, 117, 3, 13, 50, 89, 13, 49, 0, 115, 116, 105, 2, 116, 117, 3, 13, 50, 89, 47, 13, 0, 115, 116,
-			114, 117, 107, 116, 3, 13, 50, 89, 47, 34, 2, 111, 49, 47, 0, 115, 116, 114, 117, 107, 115, 3, 13, 50, 89, 47, 34, 6, 111, 49,
-			89, 0, 110, 101, 109, 101, 110, 3, 13, 50, 116, 65, 13, 50, 0, 110, 117, 101, 110, 100, 111, 3, 13, 50, 118, 12, 6, 108, 50, 72,
-			120, 0, 103, 114, 121, 112, 101, 110, 3, 13, 50, 136, 34, 123, 48, 13, 50, 0, 103, 1, 10, 2, 32, 3, 13, 68, 0, 103, 101, 1,
-			17, 67, 21, 2, 32, 3, 13, 68, 13, 0, 4, 100, 106, 105, 101, 3, 109, 37, 68, 80, 37, 0, 116, 106, 105, 101, 0, 8, 2, 97,
-			21, 14, 128, 132, 130, 3, 109, 50, 0, 8, 2, 111, 101, 3, 109, 50, 10, 0, 98, 101, 8, 2, 108, 17, 67, 3, 109, 50, 71, 2,
-			112, 0, 100, 119, 105, 110, 103, 3, 109, 50, 72, 58, 13, 68, 0, 100, 101, 108, 8, 2, 17, 67, 3, 109, 50, 72, 112, 55, 0, 115,
-			101, 107, 2, 17, 65, 3, 109, 50, 89, 108, 49, 10, 0, 103, 2, 115, 3, 109, 68, 0, 7, 6, 107, 97, 0, 116, 97, 8, 3, 4,
-			49, 35, 47, 35, 0, 4, 1, 21, 2, 110, 111, 110, 3, 49, 2, 35, 0, 2, 106, 97, 107, 0, 2, 109, 97, 115, 0, 2, 110, 97,
-			108, 101, 0, 2, 112, 97, 17, 67, 101, 17, 67, 0, 2, 114, 111, 115, 0, 2, 115, 97, 114, 109, 0, 2, 115, 116, 114, 111, 108, 0,
-			2, 115, 116, 121, 0, 2, 116, 97, 114, 115, 105, 0, 8, 2, 100, 21, 0, 8, 2, 108, 17, 65, 110, 17, 67, 0, 8, 2, 114, 105,
-			101, 110, 0, 8, 2, 115, 116, 97, 0, 8, 2, 115, 116, 101, 21, 0, 8, 2, 116, 111, 0, 8, 2, 116, 114, 0, 4, 114, 2, 100,
-			111, 101, 115, 3, 49, 2, 35, 34, 0, 114, 2, 110, 117, 102, 102, 101, 108, 0, 114, 2, 116, 111, 110, 0, 114, 2, 119, 97, 116, 115,
-			0, 114, 2, 119, 101, 105, 0, 114, 2, 119, 121, 0, 114, 8, 2, 98, 0, 114, 8, 2, 118, 101, 0, 4, 114, 97, 2, 98, 121, 110,
-			3, 49, 2, 35, 34, 2, 35, 0, 114, 97, 2, 107, 111, 101, 108, 0, 114, 97, 109, 101, 108, 3, 49, 2, 35, 34, 2, 35, 65, 112,
-			55, 0, 114, 105, 107, 97, 2, 116, 117, 3, 49, 2, 35, 34, 2, 37, 49, 2, 35, 0, 114, 97, 2, 118, 97, 3, 49, 2, 35, 34,
-			13, 0, 114, 116, 101, 116, 115, 3, 49, 2, 35, 34, 47, 108, 47, 89, 0, 114, 110, 97, 2, 118, 97, 108, 3, 49, 2, 35, 34, 50,
-			2, 35, 0, 114, 109, 111, 115, 121, 110, 3, 49, 2, 35, 34, 65, 2, 40, 89, 123, 50, 0, 114, 109, 101, 2, 110, 97, 97, 100, 106,
-			3, 49, 2, 35, 34, 65, 13, 0, 114, 97, 116, 101, 3, 49, 2, 35, 34, 115, 47, 2, 37, 0, 4, 116, 101, 2, 100, 114, 3, 49,
-			2, 35, 47, 13, 0, 116, 101, 2, 103, 17, 65, 0, 116, 97, 108, 111, 2, 103, 17, 65, 3, 49, 2, 35, 47, 35, 55, 2, 40, 0,
-			116, 107, 105, 2, 115, 17, 65, 3, 49, 2, 35, 47, 49, 13, 0, 112, 2, 116, 101, 105, 110, 3, 49, 2, 35, 48, 0, 112, 97, 2,
-			115, 105, 116, 101, 105, 116, 3, 49, 2, 35, 48, 2, 35, 0, 112, 105, 2, 116, 97, 3, 49, 2, 35, 48, 2, 37, 0, 112, 101, 2,
-			108, 97, 21, 3, 49, 2, 35, 48, 13, 0, 112, 101, 114, 2, 106, 111, 108, 3, 49, 2, 35, 48, 13, 34, 0, 112, 115, 117, 108, 101,
-			3, 49, 2, 35, 48, 89, 118, 55, 13, 0, 112, 111, 8, 2, 17, 67, 3, 49, 2, 35, 48, 110, 0, 112, 101, 2, 108, 3, 49, 2,
-			35, 48, 112, 0, 4, 110, 2, 116, 105, 101, 110, 3, 49, 2, 35, 50, 0, 110, 8, 2, 116, 111, 21, 0, 4, 110, 100, 105, 2, 100,
-			17, 65, 3, 49, 2, 35, 50, 2, 37, 0, 110, 110, 105, 2, 98, 97, 0, 110, 115, 101, 2, 108, 108, 101, 3, 49, 2, 35, 50, 89,
-			13, 0, 4, 110, 111, 2, 32, 3, 49, 2, 35, 50, 117, 0, 110, 111, 8, 2, 118, 97, 97, 114, 0, 4, 108, 2, 98, 97, 115, 3,
-			49, 2, 35, 55, 0, 108, 2, 107, 111, 101, 110, 0, 108, 105, 2, 98, 3, 49, 2, 35, 55, 37, 0, 108, 101, 110, 100, 101, 114, 3,
-			49, 2, 35, 55, 108, 50, 72, 13, 34, 0, 109, 111, 101, 2, 102, 108, 3, 49, 2, 35, 65, 2, 40, 0, 109, 111, 101, 102, 108, 97,
-			103, 101, 3, 49, 2, 35, 65, 2, 40, 83, 55, 115, 90, 0, 109, 101, 114, 97, 100, 101, 3, 49, 2, 35, 65, 13, 34, 115, 72, 13,
-			0, 98, 97, 114, 101, 2, 116, 3, 49, 2, 35, 71, 2, 35, 34, 108, 0, 98, 105, 110, 101, 2, 116, 3, 49, 2, 35, 71, 2, 37,
-			50, 108, 0, 102, 101, 2, 195, 175, 3, 49, 2, 35, 83, 2, 37, 0, 102, 101, 2, 116, 101, 3, 49, 2, 35, 83, 13, 0, 115, 116,
-			97, 2, 110, 106, 101, 116, 3, 49, 2, 35, 89, 47, 2, 35, 0, 115, 107, 101, 2, 110, 97, 100, 101, 3, 49, 2, 35, 89, 49, 13,
-			0, 115, 115, 101, 2, 116, 3, 49, 2, 35, 89, 108, 0, 115, 101, 114, 110, 101, 3, 49, 2, 35, 89, 112, 34, 50, 13, 0, 116, 106,
-			105, 101, 2, 112, 105, 101, 3, 49, 2, 121, 80, 2, 37, 0, 110, 102, 101, 114, 2, 102, 111, 101, 108, 3, 49, 2, 133, 50, 83, 13,
-			34, 0, 116, 101, 103, 111, 114, 105, 101, 115, 3, 49, 4, 35, 47, 13, 136, 6, 117, 34, 37, 89, 0, 116, 101, 103, 111, 114, 105, 101,
-			3, 49, 4, 35, 47, 13, 136, 40, 34, 6, 37, 0, 97, 1, 17, 65, 21, 2, 116, 3, 49, 6, 115, 0, 116, 101, 1, 21, 2, 32,
-			3, 49, 6, 115, 47, 13, 0, 110, 101, 114, 1, 17, 65, 21, 2, 32, 3, 49, 6, 115, 50, 13, 34, 0, 4, 114, 2, 98, 101, 3,
-			49, 35, 34, 0, 114, 2, 118, 101, 110, 0, 114, 2, 118, 101, 114, 0, 116, 101, 103, 111, 114, 2, 105, 115, 17, 65, 3, 49, 35, 47,
-			13, 136, 40, 34, 0, 110, 116, 2, 111, 110, 100, 101, 114, 3, 49, 35, 50, 47, 10, 0, 110, 115, 101, 2, 108, 25, 3, 49, 35, 50,
-			89, 13, 0, 108, 97, 104, 97, 114, 105, 3, 49, 35, 55, 35, 107, 6, 115, 34, 37, 0, 4, 108, 109, 101, 101, 114, 3, 49, 35, 55,
-			65, 6, 116, 34, 0, 108, 109, 101, 114, 2, 17, 65, 0, 108, 119, 101, 114, 3, 49, 35, 55, 84, 13, 34, 10, 0, 109, 101, 114, 2,
-			97, 116, 106, 105, 101, 3, 49, 35, 65, 13, 34, 0, 109, 101, 114, 97, 97, 3, 49, 35, 65, 13, 34, 6, 115, 0, 109, 101, 114, 97,
-			3, 49, 35, 65, 13, 34, 35, 0, 98, 101, 108, 106, 111, 117, 3, 49, 35, 71, 13, 55, 57, 6, 120, 0, 100, 2, 109, 105, 117, 109,
-			3, 49, 35, 72, 0, 115, 116, 101, 114, 2, 111, 108, 105, 101, 3, 49, 35, 89, 47, 13, 34, 10, 0, 2, 100, 101, 114, 3, 49, 115,
-			0, 116, 101, 108, 1, 25, 3, 49, 115, 47, 13, 55, 0, 107, 101, 2, 17, 67, 3, 49, 115, 49, 13, 0, 4, 109, 101, 114, 3, 49,
-			115, 65, 13, 34, 0, 109, 101, 114, 2, 17, 67, 0, 98, 101, 108, 3, 49, 115, 71, 13, 55, 0, 110, 102, 101, 114, 3, 49, 133, 50,
-			83, 13, 34, 10, 0, 7, 6, 107, 111, 0, 4, 2, 107, 101, 116, 25, 3, 49, 2, 40, 0, 2, 107, 111, 110, 0, 2, 108, 111, 109,
-			0, 2, 108, 111, 110, 105, 0, 2, 109, 101, 100, 105, 0, 2, 109, 101, 116, 101, 0, 2, 114, 97, 0, 2, 114, 105, 110, 116, 0, 2,
-			114, 114, 117, 112, 0, 2, 195, 182, 0, 8, 2, 109, 105, 101, 107, 0, 8, 2, 109, 109, 111, 0, 8, 2, 112, 105, 101, 21, 0, 101,
-			2, 106, 97, 119, 101, 108, 0, 101, 2, 112, 108, 101, 116, 0, 101, 2, 112, 111, 110, 0, 101, 2, 114, 17, 65, 0, 114, 114, 101, 107,
-			3, 49, 2, 40, 34, 108, 49, 0, 114, 101, 110, 2, 116, 3, 49, 2, 40, 34, 108, 50, 0, 117, 107, 97, 2, 115, 105, 195, 171, 3,
-			49, 2, 40, 49, 115, 0, 110, 110, 101, 107, 3, 49, 2, 40, 50, 108, 49, 0, 101, 108, 2, 98, 108, 111, 101, 3, 49, 2, 40, 55,
-			0, 108, 108, 101, 2, 107, 116, 17, 65, 3, 49, 2, 40, 55, 2, 108, 0, 108, 108, 101, 2, 107, 116, 101, 25, 3, 49, 2, 40, 55,
-			108, 0, 108, 108, 101, 107, 2, 115, 3, 49, 2, 40, 55, 108, 49, 0, 108, 111, 2, 115, 25, 3, 49, 2, 40, 55, 110, 0, 108, 111,
-			110, 110, 101, 3, 49, 2, 40, 55, 110, 50, 13, 0, 108, 108, 101, 103, 97, 3, 49, 2, 40, 55, 116, 136, 2, 35, 0, 109, 101, 100,
-			105, 2, 97, 110, 116, 3, 49, 2, 40, 65, 2, 37, 72, 2, 37, 0, 109, 109, 97, 110, 100, 111, 3, 49, 2, 40, 65, 35, 50, 72,
-			40, 0, 109, 109, 105, 115, 115, 105, 101, 3, 49, 2, 40, 65, 37, 89, 2, 37, 0, 109, 97, 116, 105, 2, 25, 3, 49, 2, 40, 65,
-			115, 47, 2, 37, 0, 101, 118, 101, 114, 2, 116, 3, 49, 2, 40, 83, 112, 34, 0, 4, 114, 2, 115, 101, 116, 3, 49, 2, 110, 34,
-			0, 114, 8, 2, 100, 17, 65, 0, 114, 114, 101, 107, 116, 105, 101, 119, 101, 3, 49, 2, 110, 34, 2, 108, 49, 47, 37, 84, 13, 0,
-			114, 114, 105, 103, 2, 101, 3, 49, 2, 110, 34, 13, 136, 0, 4, 114, 116, 2, 115, 105, 103, 116, 105, 103, 3, 49, 2, 110, 34, 47,
-			0, 114, 116, 2, 115, 116, 111, 110, 100, 0, 114, 112, 111, 2, 114, 97, 97, 108, 3, 49, 2, 110, 34, 48, 13, 0, 112, 117, 2, 108,
-			17, 65, 3, 49, 2, 110, 48, 2, 118, 0, 107, 107, 101, 8, 2, 17, 67, 3, 49, 2, 110, 49, 13, 0, 110, 8, 2, 17, 67, 21,
-			14, 128, 132, 131, 3, 49, 2, 110, 50, 0, 110, 116, 114, 97, 2, 100, 105, 107, 115, 3, 49, 2, 110, 50, 47, 34, 2, 35, 0, 110,
-			116, 114, 97, 115, 101, 112, 3, 49, 2, 110, 50, 47, 34, 2, 35, 89, 108, 48, 0, 110, 116, 114, 111, 118, 101, 114, 2, 115, 3, 49,
-			2, 110, 50, 47, 34, 2, 40, 84, 112, 34, 0, 110, 116, 114, 97, 112, 2, 115, 105, 101, 3, 49, 2, 110, 50, 47, 34, 35, 48, 0,
-			110, 116, 114, 97, 107, 8, 3, 49, 2, 110, 50, 47, 34, 35, 49, 0, 110, 116, 114, 97, 115, 8, 3, 49, 2, 110, 50, 47, 34, 35,
-			89, 0, 110, 116, 97, 107, 2, 17, 65, 3, 49, 2, 110, 50, 47, 35, 49, 10, 0, 110, 100, 101, 110, 2, 115, 101, 3, 49, 2, 110,
-			50, 72, 2, 108, 50, 0, 110, 102, 101, 114, 2, 101, 3, 49, 2, 110, 50, 83, 13, 34, 0, 110, 102, 101, 114, 101, 110, 3, 49, 2,
-			110, 50, 83, 13, 34, 108, 50, 0, 4, 110, 115, 117, 108, 2, 17, 65, 3, 49, 2, 110, 50, 89, 2, 111, 55, 0, 110, 115, 117, 108,
-			2, 116, 97, 110, 116, 0, 110, 115, 101, 110, 2, 116, 114, 105, 101, 3, 49, 2, 110, 50, 89, 7, 108, 50, 0, 110, 115, 101, 2, 107,
-			119, 101, 110, 3, 49, 2, 110, 50, 89, 13, 0, 110, 115, 101, 114, 116, 105, 110, 97, 3, 49, 2, 110, 50, 89, 13, 34, 47, 37, 50,
-			2, 35, 0, 110, 115, 101, 114, 118, 3, 49, 2, 110, 50, 89, 13, 34, 84, 0, 110, 115, 101, 110, 2, 116, 114, 3, 49, 2, 110, 50,
-			89, 13, 50, 0, 110, 115, 105, 100, 101, 2, 114, 17, 65, 3, 49, 2, 110, 50, 89, 13, 72, 13, 0, 110, 115, 105, 115, 116, 3, 49,
-			2, 110, 50, 89, 13, 89, 47, 0, 110, 115, 116, 105, 2, 116, 117, 115, 105, 3, 49, 2, 110, 50, 89, 47, 13, 0, 110, 115, 116, 97,
-			98, 101, 108, 3, 49, 2, 110, 50, 89, 47, 115, 71, 13, 55, 0, 110, 115, 101, 112, 2, 17, 65, 3, 49, 2, 110, 50, 89, 108, 48,
-			10, 0, 4, 108, 2, 106, 97, 110, 3, 49, 2, 110, 55, 0, 108, 2, 119, 121, 110, 0, 4, 109, 2, 112, 108, 17, 65, 3, 49, 2,
-			110, 65, 0, 109, 2, 112, 111, 115, 105, 115, 105, 101, 0, 109, 109, 97, 110, 2, 100, 17, 65, 3, 49, 2, 110, 65, 2, 35, 50, 0,
-			109, 109, 101, 114, 2, 115, 105, 3, 49, 2, 110, 65, 2, 112, 34, 0, 109, 109, 117, 2, 110, 97, 3, 49, 2, 110, 65, 2, 118, 0,
-			109, 105, 2, 116, 101, 101, 3, 49, 2, 110, 65, 13, 0, 109, 109, 101, 110, 2, 116, 97, 3, 49, 2, 110, 65, 13, 50, 0, 109, 109,
-			105, 115, 115, 97, 114, 105, 2, 97, 3, 49, 2, 110, 65, 13, 89, 2, 35, 34, 2, 37, 0, 109, 112, 97, 110, 2, 106, 105, 101, 3,
-			49, 2, 110, 65, 48, 2, 35, 50, 0, 109, 112, 114, 111, 2, 109, 105, 101, 3, 49, 2, 110, 65, 48, 34, 2, 40, 0, 109, 107, 111,
-			109, 109, 101, 114, 3, 49, 2, 110, 65, 49, 110, 65, 13, 34, 0, 109, 98, 101, 114, 115, 3, 49, 2, 110, 65, 71, 113, 34, 89, 0,
-			109, 98, 117, 105, 115, 3, 49, 2, 110, 65, 71, 127, 89, 0, 110, 103, 2, 111, 116, 111, 109, 105, 101, 3, 49, 2, 110, 68, 81, 0,
-			4, 115, 2, 109, 101, 116, 3, 49, 2, 110, 89, 0, 115, 2, 116, 117, 0, 115, 109, 111, 2, 112, 111, 108, 105, 3, 49, 2, 110, 89,
-			65, 2, 40, 0, 115, 109, 101, 2, 116, 105, 101, 107, 3, 49, 2, 110, 89, 65, 13, 0, 107, 97, 2, 195, 175, 3, 49, 2, 117, 49,
-			2, 35, 0, 110, 105, 110, 103, 2, 105, 110, 3, 49, 2, 117, 50, 13, 68, 0, 100, 101, 2, 114, 105, 110, 103, 3, 49, 2, 117, 72,
-			116, 0, 117, 2, 115, 97, 21, 3, 49, 2, 120, 0, 108, 111, 2, 115, 115, 97, 3, 49, 4, 110, 55, 40, 0, 110, 103, 111, 2, 25,
-			3, 49, 4, 110, 68, 81, 40, 0, 110, 8, 2, 100, 105, 103, 3, 49, 6, 110, 50, 0, 110, 116, 114, 97, 8, 2, 25, 14, 128, 132,
-			134, 3, 49, 6, 110, 50, 47, 34, 35, 0, 108, 108, 101, 103, 101, 115, 2, 32, 3, 49, 6, 110, 55, 37, 75, 13, 89, 0, 101, 2,
-			114, 101, 110, 100, 3, 49, 40, 0, 101, 195, 171, 108, 3, 49, 40, 12, 55, 0, 112, 2, 111, 3, 49, 110, 48, 19, 0, 110, 2, 115,
-			117, 108, 3, 49, 110, 50, 0, 110, 110, 101, 107, 116, 101, 101, 114, 3, 49, 110, 50, 108, 49, 47, 6, 116, 34, 0, 108, 111, 110, 101,
-			108, 3, 49, 110, 55, 13, 50, 6, 112, 55, 0, 108, 108, 101, 103, 101, 3, 49, 110, 55, 37, 75, 0, 110, 107, 101, 108, 3, 49, 110,
-			68, 49, 13, 55, 0, 110, 107, 97, 8, 2, 25, 3, 49, 110, 68, 49, 35, 0, 115, 2, 116, 101, 114, 109, 3, 49, 110, 89, 0, 115,
-			116, 101, 3, 49, 110, 89, 47, 13, 0, 98, 114, 97, 3, 49, 117, 71, 34, 35, 0, 7, 6, 109, 97, 0, 110, 117, 2, 115, 107, 3,
-			4, 65, 35, 50, 118, 0, 4, 2, 103, 105, 115, 116, 101, 114, 3, 65, 2, 35, 0, 2, 103, 114, 105, 101, 116, 0, 2, 104, 17, 65,
-			0, 2, 107, 97, 115, 115, 97, 114, 0, 2, 107, 105, 101, 116, 105, 101, 0, 2, 107, 114, 105, 101, 108, 0, 2, 116, 101, 115, 105, 115,
-			0, 2, 116, 114, 0, 8, 2, 100, 0, 8, 2, 114, 17, 65, 0, 2, 114, 105, 116, 122, 3, 65, 2, 35, 6, 0, 114, 2, 115, 106,
-			101, 3, 65, 2, 35, 34, 0, 114, 105, 111, 2, 110, 101, 116, 3, 65, 2, 35, 34, 2, 37, 2, 40, 0, 114, 105, 101, 1, 21, 2,
-			32, 3, 65, 2, 35, 34, 6, 37, 0, 114, 105, 2, 116, 105, 101, 109, 3, 65, 2, 35, 34, 13, 0, 114, 105, 110, 101, 2, 25, 3,
-			65, 2, 35, 34, 37, 50, 13, 0, 114, 109, 111, 2, 115, 101, 116, 3, 65, 2, 35, 34, 65, 2, 40, 0, 114, 109, 101, 108, 97, 100,
-			101, 3, 65, 2, 35, 34, 65, 13, 55, 115, 72, 13, 0, 114, 103, 97, 2, 114, 105, 3, 65, 2, 35, 34, 136, 2, 35, 0, 116, 101,
-			114, 105, 2, 17, 65, 21, 3, 65, 2, 35, 47, 2, 116, 34, 2, 37, 0, 116, 101, 2, 109, 97, 116, 105, 3, 65, 2, 35, 47, 13,
-			0, 116, 101, 114, 105, 101, 2, 12, 3, 65, 2, 35, 47, 116, 34, 2, 37, 0, 107, 97, 2, 112, 97, 97, 110, 3, 65, 2, 35, 49,
-			2, 35, 0, 99, 97, 100, 97, 109, 105, 97, 3, 65, 2, 35, 49, 2, 35, 72, 115, 65, 2, 37, 38, 2, 35, 0, 99, 104, 105, 97,
-			118, 101, 3, 65, 2, 35, 49, 2, 37, 2, 35, 84, 108, 0, 107, 115, 105, 2, 109, 97, 21, 3, 65, 2, 35, 49, 89, 2, 37, 0,
-			107, 97, 98, 101, 114, 3, 65, 2, 35, 49, 115, 71, 13, 34, 0, 4, 110, 2, 100, 97, 3, 65, 2, 35, 50, 0, 110, 2, 104, 97,
-			102, 116, 0, 110, 2, 109, 111, 101, 0, 110, 2, 115, 106, 101, 116, 0, 110, 105, 2, 107, 117, 3, 65, 2, 35, 50, 2, 37, 0, 110,
-			105, 112, 117, 3, 65, 2, 35, 50, 2, 37, 48, 2, 118, 0, 4, 110, 101, 2, 119, 97, 108, 101, 3, 65, 2, 35, 50, 13, 0, 110,
-			110, 101, 2, 107, 121, 110, 0, 110, 106, 105, 2, 102, 105, 101, 3, 65, 2, 35, 50, 57, 13, 0, 110, 100, 111, 2, 108, 105, 101, 110,
-			3, 65, 2, 35, 50, 72, 2, 40, 0, 110, 101, 2, 108, 3, 65, 2, 35, 50, 112, 0, 108, 2, 103, 97, 115, 3, 65, 2, 35, 55,
-			0, 108, 97, 2, 103, 105, 101, 116, 3, 65, 2, 35, 55, 2, 35, 0, 108, 116, 101, 8, 2, 115, 17, 65, 3, 65, 2, 35, 55, 47,
-			116, 0, 109, 2, 112, 111, 101, 114, 3, 65, 2, 35, 65, 0, 115, 111, 2, 99, 104, 105, 115, 3, 65, 2, 35, 89, 2, 40, 0, 99,
-			101, 100, 111, 2, 110, 17, 65, 3, 65, 2, 35, 89, 13, 72, 117, 0, 115, 116, 101, 107, 116, 111, 2, 109, 3, 65, 2, 35, 89, 47,
-			108, 49, 47, 2, 40, 0, 115, 107, 101, 114, 2, 97, 100, 101, 3, 65, 2, 35, 89, 49, 13, 34, 0, 115, 107, 97, 114, 97, 3, 65,
-			2, 35, 89, 49, 115, 34, 2, 35, 0, 115, 106, 105, 2, 110, 97, 21, 3, 65, 2, 35, 91, 2, 37, 0, 103, 2, 110, 17, 65, 21,
-			3, 65, 2, 35, 136, 0, 103, 97, 2, 115, 121, 110, 3, 65, 2, 35, 136, 2, 35, 0, 103, 105, 115, 2, 116, 114, 97, 3, 65, 2,
-			35, 136, 2, 37, 89, 0, 103, 97, 2, 108, 105, 101, 3, 65, 2, 35, 136, 35, 0, 110, 105, 97, 2, 107, 3, 65, 2, 115, 50, 2,
-			37, 38, 2, 35, 0, 106, 101, 115, 116, 117, 3, 65, 2, 115, 57, 13, 89, 47, 2, 118, 0, 106, 101, 115, 116, 101, 105, 116, 108, 105,
-			3, 65, 2, 115, 57, 13, 89, 47, 123, 47, 55, 13, 0, 100, 101, 2, 108, 105, 101, 3, 65, 2, 115, 72, 13, 0, 121, 111, 110, 110,
-			97, 105, 115, 101, 3, 65, 2, 123, 57, 2, 40, 50, 123, 12, 88, 0, 116, 105, 103, 1, 21, 3, 65, 6, 115, 47, 13, 136, 0, 116,
-			105, 101, 115, 3, 65, 6, 115, 47, 37, 89, 0, 110, 105, 101, 114, 3, 65, 13, 50, 37, 12, 34, 0, 115, 106, 105, 101, 110, 3, 65,
-			13, 91, 37, 50, 0, 114, 97, 116, 2, 111, 110, 3, 65, 35, 34, 2, 35, 47, 0, 114, 97, 116, 104, 111, 110, 3, 65, 35, 34, 2,
-			35, 47, 2, 110, 50, 10, 0, 114, 109, 101, 114, 3, 65, 35, 34, 65, 13, 34, 10, 0, 107, 105, 101, 1, 21, 2, 115, 105, 101, 3,
-			65, 35, 49, 6, 37, 0, 107, 114, 97, 110, 107, 97, 1, 21, 3, 65, 35, 49, 34, 6, 35, 50, 49, 35, 0, 110, 105, 102, 101, 115,
-			3, 65, 35, 50, 37, 83, 108, 89, 0, 108, 1, 10, 2, 32, 14, 128, 128, 131, 3, 65, 35, 55, 0, 108, 97, 114, 105, 97, 3, 65,
-			35, 55, 6, 115, 34, 37, 35, 0, 108, 108, 101, 115, 2, 32, 3, 65, 35, 55, 13, 89, 0, 108, 118, 97, 2, 25, 3, 65, 35, 55,
-			83, 2, 35, 0, 110, 103, 111, 8, 3, 65, 35, 68, 81, 2, 40, 0, 115, 107, 101, 114, 3, 65, 35, 89, 49, 13, 34, 0, 2, 116,
-			114, 105, 107, 25, 3, 65, 115, 0, 110, 105, 2, 97, 107, 25, 3, 65, 115, 50, 2, 37, 0, 2, 98, 105, 101, 107, 3, 89, 0, 7,
-			6, 109, 101, 0, 116, 101, 2, 111, 3, 65, 2, 37, 47, 2, 37, 0, 116, 101, 111, 2, 114, 105, 101, 116, 3, 65, 2, 37, 47, 2,
-			37, 2, 40, 0, 116, 97, 8, 2, 17, 67, 3, 65, 2, 108, 47, 2, 35, 0, 110, 2, 116, 97, 115, 105, 101, 3, 65, 2, 108, 50,
-			0, 110, 111, 112, 111, 117, 2, 115, 97, 3, 65, 2, 108, 50, 2, 40, 48, 2, 120, 0, 110, 117, 101, 2, 116, 3, 65, 2, 108, 50,
-			2, 118, 12, 38, 108, 0, 110, 116, 97, 108, 105, 2, 116, 101, 105, 116, 3, 65, 2, 108, 50, 47, 2, 35, 55, 2, 37, 0, 110, 115,
-			116, 114, 117, 3, 65, 2, 108, 50, 89, 47, 34, 2, 118, 0, 4, 108, 97, 110, 99, 104, 3, 65, 2, 108, 55, 2, 35, 68, 49, 0,
-			108, 97, 110, 107, 0, 4, 108, 97, 110, 99, 104, 111, 108, 105, 101, 2, 32, 24, 3, 65, 2, 108, 55, 2, 35, 68, 49, 2, 117, 55,
-			37, 0, 108, 97, 110, 107, 111, 108, 105, 101, 2, 32, 24, 0, 108, 111, 100, 105, 8, 2, 101, 117, 3, 65, 2, 108, 55, 2, 40, 72,
-			2, 37, 0, 109, 2, 98, 114, 97, 3, 65, 2, 108, 65, 0, 109, 111, 2, 114, 17, 65, 3, 65, 2, 108, 65, 2, 40, 0, 109, 111,
-			114, 97, 2, 98, 105, 108, 105, 3, 65, 2, 108, 65, 2, 110, 34, 2, 35, 0, 109, 111, 2, 114, 105, 17, 65, 3, 65, 2, 108, 65,
-			117, 0, 100, 105, 2, 116, 17, 65, 3, 65, 2, 108, 72, 2, 37, 0, 100, 105, 116, 101, 2, 114, 114, 101, 3, 65, 2, 108, 72, 2,
-			37, 47, 13, 0, 100, 105, 115, 105, 2, 110, 97, 21, 3, 65, 2, 108, 72, 13, 89, 2, 37, 0, 4, 101, 2, 100, 111, 195, 171, 3,
-			65, 2, 116, 0, 101, 2, 119, 97, 114, 0, 101, 114, 2, 118, 111, 117, 100, 105, 103, 3, 65, 2, 116, 34, 0, 101, 114, 100, 101, 114,
-			2, 106, 97, 114, 3, 65, 2, 116, 34, 72, 13, 34, 0, 4, 100, 101, 2, 100, 111, 195, 171, 3, 65, 2, 116, 72, 13, 0, 100, 101,
-			2, 112, 108, 105, 103, 0, 100, 101, 8, 2, 108, 121, 0, 101, 115, 116, 101, 114, 101, 3, 65, 2, 116, 89, 47, 13, 34, 108, 0, 110,
-			116, 106, 105, 101, 3, 65, 6, 108, 37, 68, 80, 37, 0, 110, 116, 3, 65, 6, 108, 50, 47, 0, 108, 111, 8, 2, 100, 114, 3, 65,
-			6, 108, 55, 40, 0, 110, 105, 110, 103, 3, 65, 6, 116, 50, 13, 68, 0, 100, 101, 8, 2, 21, 14, 128, 132, 132, 3, 65, 6, 116,
-			72, 13, 0, 101, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 65, 6, 116, 136, 13, 0, 4, 2, 106, 117, 102, 3, 65, 13, 0, 2,
-			108, 97, 97, 116, 115, 0, 2, 114, 105, 101, 116, 101, 0, 2, 116, 111, 100, 0, 8, 2, 100, 117, 17, 67, 0, 114, 105, 110, 111, 3,
-			65, 13, 34, 37, 50, 2, 40, 0, 116, 97, 108, 101, 3, 65, 13, 47, 6, 115, 55, 13, 0, 116, 111, 100, 101, 3, 65, 13, 47, 6,
-			117, 72, 13, 0, 116, 97, 97, 2, 17, 67, 3, 65, 13, 47, 115, 0, 107, 97, 97, 114, 3, 65, 13, 49, 6, 115, 34, 0, 107, 97,
-			97, 114, 103, 101, 3, 65, 13, 49, 6, 115, 34, 136, 13, 0, 110, 101, 101, 114, 3, 65, 13, 50, 6, 116, 34, 0, 110, 101, 114, 101,
-			3, 65, 13, 50, 6, 116, 34, 13, 0, 108, 111, 100, 105, 101, 115, 8, 3, 65, 13, 55, 6, 117, 72, 37, 89, 0, 100, 97, 108, 2,
-			106, 111, 110, 3, 65, 13, 72, 2, 35, 55, 0, 100, 105, 115, 121, 110, 101, 3, 65, 13, 72, 13, 89, 123, 50, 13, 0, 100, 97, 108,
-			106, 101, 3, 65, 13, 72, 35, 55, 57, 13, 0, 118, 114, 111, 117, 3, 65, 13, 83, 34, 6, 120, 0, 103, 97, 110, 105, 101, 115, 3,
-			65, 13, 136, 6, 115, 50, 37, 89, 0, 2, 100, 105, 117, 109, 3, 65, 37, 12, 0, 100, 105, 97, 3, 65, 37, 12, 72, 37, 12, 57,
-			35, 4, 0, 2, 114, 114, 105, 101, 3, 65, 108, 0, 116, 101, 101, 110, 3, 65, 108, 47, 10, 6, 116, 50, 0, 116, 111, 100, 105, 115,
-			3, 65, 108, 47, 40, 72, 6, 109, 89, 0, 110, 105, 110, 103, 2, 105, 116, 105, 115, 3, 65, 108, 50, 13, 68, 136, 0, 110, 116, 101,
-			101, 2, 17, 67, 3, 65, 108, 50, 47, 6, 116, 0, 110, 116, 101, 114, 105, 110, 103, 3, 65, 108, 50, 47, 6, 116, 34, 13, 68, 0,
-			110, 116, 101, 108, 101, 2, 25, 3, 65, 108, 50, 47, 6, 116, 55, 13, 0, 108, 111, 100, 105, 101, 8, 3, 65, 108, 55, 40, 72, 6,
-			37, 0, 110, 103, 2, 115, 101, 108, 3, 65, 108, 68, 0, 4, 115, 1, 102, 101, 104, 2, 32, 3, 65, 108, 89, 0, 115, 1, 108, 101,
-			102, 97, 116, 2, 32, 0, 115, 1, 115, 17, 65, 17, 65, 2, 32, 0, 115, 1, 115, 17, 67, 2, 32, 0, 115, 1, 121, 110, 115, 2,
-			32, 0, 115, 8, 2, 97, 97, 110, 3, 65, 108, 89, 10, 0, 4, 114, 107, 1, 101, 116, 3, 65, 112, 34, 49, 0, 114, 107, 2, 32,
-			0, 114, 107, 101, 2, 32, 3, 65, 112, 34, 49, 13, 0, 2, 116, 114, 117, 109, 3, 65, 116, 0, 114, 101, 1, 17, 67, 21, 2, 32,
-			3, 65, 116, 12, 34, 13, 0, 116, 101, 108, 8, 3, 65, 116, 47, 13, 55, 0, 7, 6, 109, 105, 0, 2, 110, 101, 117, 114, 3, 65,
-			2, 37, 0, 114, 97, 107, 117, 2, 108, 101, 117, 115, 3, 65, 2, 37, 34, 2, 35, 49, 2, 118, 0, 107, 114, 111, 98, 101, 3, 65,
-			2, 37, 49, 34, 117, 71, 13, 0, 110, 105, 2, 109, 97, 21, 3, 65, 2, 37, 50, 2, 37, 0, 97, 97, 117, 3, 65, 2, 37, 129,
-			12, 0, 110, 97, 103, 3, 65, 6, 109, 50, 35, 136, 0, 100, 100, 97, 103, 101, 116, 101, 3, 65, 6, 109, 72, 35, 136, 10, 116, 47,
-			13, 0, 115, 2, 108, 105, 107, 3, 65, 6, 109, 89, 0, 4, 2, 109, 105, 101, 107, 3, 65, 13, 0, 2, 109, 111, 115, 97, 0, 2,
-			115, 115, 105, 101, 108, 0, 114, 97, 107, 101, 108, 3, 65, 13, 34, 115, 49, 13, 55, 0, 110, 97, 114, 101, 2, 116, 3, 65, 13, 50,
-			2, 35, 34, 108, 0, 110, 105, 115, 116, 101, 114, 115, 3, 65, 13, 50, 6, 109, 89, 47, 13, 34, 89, 0, 110, 117, 2, 115, 107, 117,
-			3, 65, 13, 50, 13, 0, 4, 110, 100, 101, 114, 2, 106, 97, 114, 3, 65, 13, 50, 13, 34, 0, 110, 101, 114, 2, 17, 65, 0, 110,
-			105, 115, 116, 101, 114, 105, 3, 65, 13, 50, 13, 89, 47, 2, 116, 34, 2, 37, 0, 110, 105, 115, 116, 101, 2, 114, 105, 101, 25, 3,
-			65, 13, 50, 13, 89, 47, 116, 0, 108, 2, 106, 17, 65, 3, 65, 13, 55, 0, 108, 105, 116, 3, 65, 13, 55, 13, 47, 0, 108, 105,
-			101, 117, 3, 65, 13, 55, 57, 118, 0, 108, 108, 101, 2, 110, 110, 105, 17, 65, 3, 65, 13, 55, 108, 0, 100, 100, 101, 108, 2, 106,
-			97, 114, 105, 3, 65, 13, 72, 13, 55, 0, 4, 115, 2, 103, 105, 115, 3, 65, 13, 89, 0, 115, 2, 103, 117, 110, 0, 115, 2, 104,
-			97, 0, 115, 2, 108, 0, 115, 2, 110, 111, 101, 103, 0, 115, 2, 112, 108, 97, 97, 115, 0, 115, 2, 114, 97, 98, 101, 108, 0, 115,
-			2, 114, 101, 107, 101, 110, 0, 115, 2, 116, 105, 101, 107, 0, 115, 2, 116, 114, 111, 111, 115, 0, 115, 2, 118, 111, 114, 109, 0, 115,
-			8, 2, 105, 110, 14, 128, 132, 131, 0, 115, 8, 2, 109, 0, 115, 101, 2, 114, 97, 0, 115, 116, 101, 114, 2, 105, 101, 117, 115, 3,
-			65, 13, 89, 47, 116, 34, 0, 115, 107, 101, 2, 110, 3, 65, 13, 89, 49, 108, 0, 2, 115, 115, 105, 101, 3, 65, 37, 0, 107, 114,
-			2, 111, 3, 65, 37, 49, 34, 0, 100, 100, 101, 2, 108, 3, 65, 109, 72, 13, 0, 100, 100, 101, 108, 108, 105, 2, 107, 3, 65, 109,
-			72, 13, 55, 13, 0, 4, 115, 2, 108, 97, 109, 112, 3, 65, 109, 89, 0, 115, 2, 108, 111, 111, 112, 0, 115, 2, 111, 0, 7, 6,
-			109, 111, 0, 4, 2, 112, 97, 110, 105, 3, 65, 2, 40, 0, 101, 2, 114, 97, 115, 0, 116, 111, 114, 2, 105, 101, 3, 65, 2, 40,
-			47, 117, 34, 0, 4, 108, 101, 115, 2, 25, 3, 65, 2, 40, 55, 108, 89, 0, 108, 101, 115, 2, 116, 101, 32, 0, 100, 101, 114, 110,
-			3, 65, 2, 40, 72, 112, 34, 14, 50, 0, 104, 97, 109, 109, 101, 100, 2, 97, 3, 65, 2, 40, 107, 2, 35, 65, 13, 72, 0, 4,
-			2, 100, 117, 108, 17, 65, 3, 65, 2, 110, 0, 2, 115, 107, 101, 101, 0, 4, 114, 2, 102, 111, 115, 101, 3, 65, 2, 110, 34, 0,
-			114, 8, 2, 17, 67, 21, 0, 114, 102, 2, 111, 116, 111, 109, 105, 101, 3, 65, 2, 110, 34, 83, 0, 122, 122, 97, 114, 101, 108, 108,
-			97, 3, 65, 2, 110, 47, 89, 2, 35, 34, 112, 55, 2, 35, 0, 110, 2, 116, 101, 117, 114, 3, 65, 2, 110, 50, 0, 110, 105, 116,
-			2, 101, 3, 65, 2, 110, 50, 2, 37, 47, 0, 110, 117, 2, 109, 101, 110, 116, 3, 65, 2, 110, 50, 2, 118, 0, 110, 101, 2, 116,
-			195, 170, 114, 3, 65, 2, 110, 50, 13, 0, 110, 100, 101, 114, 2, 17, 65, 3, 65, 2, 110, 50, 72, 116, 34, 0, 108, 101, 115, 2,
-			116, 17, 65, 3, 65, 2, 110, 55, 13, 89, 0, 110, 8, 2, 103, 111, 21, 3, 65, 2, 110, 68, 0, 100, 101, 2, 108, 108, 101, 21,
-			3, 65, 2, 110, 72, 13, 0, 100, 101, 114, 97, 2, 116, 17, 65, 3, 65, 2, 110, 72, 13, 34, 2, 35, 0, 100, 101, 114, 97, 2,
-			116, 111, 114, 25, 3, 65, 2, 110, 72, 13, 34, 115, 0, 2, 110, 97, 114, 103, 3, 65, 2, 117, 0, 116, 105, 101, 2, 17, 67, 3,
-			65, 2, 117, 47, 37, 0, 110, 97, 114, 103, 105, 101, 2, 32, 24, 3, 65, 2, 117, 50, 2, 35, 34, 136, 37, 0, 110, 111, 2, 103,
-			97, 3, 65, 2, 117, 50, 2, 117, 0, 110, 111, 112, 111, 2, 108, 105, 3, 65, 2, 117, 50, 2, 117, 48, 2, 40, 0, 100, 101, 2,
-			108, 3, 65, 2, 117, 72, 112, 0, 115, 97, 2, 195, 175, 101, 107, 3, 65, 2, 117, 89, 2, 35, 0, 115, 97, 109, 2, 98, 105, 101,
-			107, 3, 65, 2, 117, 89, 2, 35, 65, 0, 101, 105, 116, 101, 3, 65, 6, 126, 47, 13, 0, 100, 101, 8, 3, 65, 7, 117, 72, 13,
-			0, 101, 100, 115, 119, 105, 108, 108, 105, 103, 3, 65, 40, 47, 89, 84, 6, 109, 55, 13, 136, 0, 114, 114, 8, 2, 105, 3, 65, 110,
-			34, 0, 114, 115, 8, 2, 21, 3, 65, 110, 34, 89, 0, 110, 110, 105, 107, 101, 3, 65, 110, 50, 13, 49, 13, 0, 110, 105, 116, 111,
-			114, 2, 25, 3, 65, 110, 50, 37, 47, 110, 34, 0, 2, 98, 105, 101, 108, 3, 65, 117, 6, 0, 116, 111, 114, 3, 65, 117, 47, 13,
-			34, 0, 7, 6, 111, 110, 0, 4, 2, 114, 101, 103, 118, 12, 12, 3, 2, 110, 50, 0, 2, 116, 111, 101, 0, 2, 116, 117, 103, 116,
-			105, 103, 0, 2, 116, 119, 121, 102, 101, 108, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 116, 97, 97, 108, 0, 8, 2, 116, 97,
-			107, 116, 0, 8, 2, 116, 97, 115, 98, 97, 0, 8, 2, 116, 111, 111, 17, 67, 17, 67, 0, 8, 2, 116, 121, 100, 0, 8, 2, 119,
-			101, 115, 101, 110, 0, 116, 2, 100, 21, 0, 111, 109, 2, 115, 116, 111, 111, 116, 3, 2, 110, 50, 2, 110, 65, 0, 4, 97, 102, 8,
-			2, 115, 107, 101, 105, 17, 67, 3, 2, 110, 50, 10, 2, 35, 83, 0, 97, 102, 8, 2, 119, 101, 110, 100, 0, 4, 100, 101, 114, 2,
-			98, 114, 101, 3, 2, 110, 50, 13, 34, 0, 100, 101, 114, 2, 98, 114, 111, 107, 101, 0, 100, 101, 114, 2, 100, 97, 110, 105, 103, 0,
-			100, 101, 114, 2, 100, 114, 117, 107, 0, 100, 101, 114, 2, 100, 117, 105, 109, 0, 100, 101, 114, 2, 104, 97, 110, 100, 101, 0, 100, 101,
-			114, 2, 104, 101, 119, 0, 100, 101, 114, 2, 104, 111, 114, 0, 100, 101, 114, 2, 104, 111, 117, 0, 100, 101, 114, 2, 108, 101, 103, 0,
-			100, 101, 114, 2, 109, 121, 110, 0, 100, 101, 114, 2, 110, 101, 0, 100, 101, 114, 2, 115, 107, 114, 121, 17, 67, 0, 100, 101, 114, 2,
-			115, 111, 101, 107, 101, 110, 0, 100, 101, 114, 2, 115, 116, 101, 117, 0, 100, 101, 114, 2, 115, 116, 114, 101, 0, 100, 101, 114, 2, 116,
-			101, 107, 101, 110, 0, 100, 101, 114, 2, 116, 114, 111, 117, 0, 100, 101, 114, 2, 118, 97, 110, 103, 0, 100, 101, 114, 2, 118, 105, 110,
-			0, 100, 101, 114, 2, 118, 114, 97, 0, 100, 101, 114, 2, 119, 101, 114, 112, 105, 110, 103, 0, 100, 101, 114, 2, 119, 111, 114, 112, 0,
-			100, 101, 114, 8, 2, 115, 107, 17, 65, 0, 100, 101, 114, 111, 110, 115, 105, 101, 3, 2, 110, 50, 13, 34, 19, 135, 50, 89, 37, 0,
-			100, 101, 114, 115, 116, 101, 98, 111, 3, 2, 110, 50, 13, 34, 89, 47, 13, 71, 117, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 2,
-			110, 50, 47, 0, 116, 101, 109, 2, 98, 97, 3, 2, 110, 50, 47, 108, 65, 0, 116, 101, 108, 8, 3, 2, 110, 50, 47, 112, 55, 0,
-			116, 101, 114, 105, 110, 103, 3, 2, 110, 50, 47, 116, 34, 13, 68, 0, 100, 101, 117, 114, 3, 2, 110, 50, 72, 2, 118, 13, 34, 0,
-			118, 111, 111, 114, 2, 115, 3, 2, 110, 50, 83, 2, 117, 34, 0, 4, 119, 101, 101, 114, 8, 2, 108, 3, 2, 110, 50, 84, 2, 116,
-			34, 0, 119, 101, 101, 114, 8, 2, 115, 112, 114, 0, 119, 101, 101, 114, 8, 2, 115, 116, 97, 97, 110, 0, 104, 101, 105, 108, 2, 115,
-			112, 101, 108, 3, 2, 110, 50, 107, 2, 123, 55, 0, 104, 101, 105, 108, 2, 105, 103, 3, 2, 110, 50, 107, 6, 123, 55, 0, 103, 101,
-			101, 115, 8, 3, 2, 110, 50, 136, 2, 116, 89, 0, 103, 101, 108, 2, 100, 105, 103, 3, 2, 110, 50, 136, 112, 55, 0, 103, 114, 101,
-			115, 1, 107, 3, 2, 110, 68, 136, 34, 108, 89, 0, 4, 2, 115, 107, 117, 108, 100, 32, 24, 3, 6, 110, 50, 0, 8, 2, 119, 17,
-			65, 115, 0, 100, 101, 114, 103, 101, 8, 2, 21, 14, 128, 132, 135, 3, 6, 110, 50, 13, 34, 136, 13, 0, 105, 101, 115, 1, 21, 3,
-			6, 117, 50, 37, 89, 0, 4, 100, 101, 114, 2, 115, 101, 107, 114, 3, 7, 110, 50, 13, 34, 0, 100, 101, 114, 2, 119, 121, 115, 17,
-			67, 21, 0, 100, 101, 114, 8, 2, 101, 110, 17, 67, 3, 7, 110, 50, 13, 34, 10, 0, 104, 101, 105, 108, 3, 7, 110, 50, 107, 123,
-			55, 0, 121, 1, 21, 2, 32, 3, 21, 0, 111, 111, 109, 3, 40, 50, 6, 117, 65, 0, 111, 109, 101, 3, 40, 50, 6, 117, 65, 13,
-			0, 111, 109, 105, 101, 115, 3, 40, 50, 6, 117, 65, 37, 89, 0, 111, 109, 105, 101, 3, 40, 50, 40, 65, 6, 37, 0, 4, 2, 100,
-			105, 101, 114, 3, 110, 50, 0, 2, 108, 97, 110, 103, 115, 0, 2, 115, 105, 110, 32, 24, 0, 2, 116, 117, 103, 0, 8, 2, 102, 105,
-			107, 115, 0, 8, 2, 107, 97, 110, 116, 0, 8, 2, 107, 111, 115, 116, 101, 0, 8, 2, 107, 114, 117, 105, 100, 0, 8, 2, 108, 117,
-			115, 0, 8, 2, 112, 97, 97, 114, 0, 8, 2, 116, 117, 105, 17, 67, 0, 8, 2, 117, 105, 116, 103, 101, 21, 12, 12, 14, 128, 132,
-			130, 3, 110, 50, 10, 0, 117, 105, 116, 8, 2, 21, 14, 128, 132, 133, 3, 110, 50, 10, 127, 47, 0, 4, 100, 101, 114, 3, 110, 50,
-			13, 34, 0, 100, 101, 114, 2, 104, 111, 117, 100, 25, 0, 100, 101, 114, 2, 104, 111, 117, 100, 101, 32, 0, 100, 101, 114, 2, 115, 107,
-			101, 105, 100, 32, 24, 0, 100, 101, 114, 119, 121, 115, 101, 114, 2, 97, 3, 110, 50, 13, 34, 84, 6, 123, 89, 13, 34, 10, 0, 114,
-			101, 103, 2, 25, 3, 110, 50, 34, 112, 136, 0, 110, 105, 101, 8, 3, 110, 50, 37, 0, 116, 101, 118, 114, 101, 100, 101, 3, 110, 50,
-			47, 13, 83, 34, 6, 116, 72, 13, 0, 116, 101, 101, 110, 115, 101, 103, 3, 110, 50, 47, 116, 50, 89, 6, 112, 136, 0, 119, 101, 101,
-			114, 8, 3, 110, 50, 84, 116, 34, 0, 4, 103, 101, 2, 100, 105, 101, 114, 116, 3, 110, 50, 136, 13, 0, 103, 101, 8, 2, 21, 14,
-			128, 132, 132, 0, 103, 101, 114, 105, 101, 102, 108, 105, 2, 107, 3, 110, 50, 136, 13, 34, 6, 37, 83, 55, 13, 0, 103, 101, 108, 111,
-			111, 102, 108, 105, 8, 2, 107, 3, 110, 50, 136, 13, 55, 6, 117, 83, 55, 13, 0, 103, 101, 109, 97, 107, 108, 105, 2, 107, 3, 110,
-			50, 136, 13, 65, 6, 35, 49, 55, 13, 0, 105, 107, 115, 3, 117, 50, 13, 49, 89, 0, 4, 105, 101, 1, 108, 111, 107, 3, 117, 50,
-			37, 0, 105, 101, 1, 109, 101, 114, 101, 115, 2, 25, 0, 105, 101, 115, 1, 112, 21, 3, 117, 50, 37, 89, 0, 117, 115, 8, 3, 117,
-			50, 111, 89, 0, 4, 100, 106, 105, 101, 3, 124, 68, 80, 37, 0, 116, 106, 105, 101, 0, 4, 115, 1, 98, 3, 135, 50, 89, 0, 115,
-			1, 100, 0, 115, 1, 103, 0, 115, 1, 114, 102, 0, 4, 103, 101, 1, 21, 2, 108, 117, 107, 21, 3, 135, 68, 136, 13, 0, 103, 101,
-			2, 108, 117, 107, 32, 0, 103, 101, 2, 108, 117, 107, 107, 101, 32, 0, 103, 101, 2, 108, 117, 107, 107, 105, 101, 0, 103, 101, 2, 108,
-			117, 107, 115, 0, 103, 101, 118, 97, 2, 108, 3, 135, 68, 136, 13, 83, 35, 0, 7, 6, 111, 111, 0, 4, 114, 2, 98, 108, 121, 119,
-			3, 2, 117, 34, 0, 114, 2, 98, 114, 117, 103, 0, 114, 2, 100, 105, 110, 107, 0, 114, 2, 100, 111, 110, 100, 101, 114, 0, 114, 2,
-			100, 114, 97, 97, 103, 0, 114, 2, 103, 97, 110, 107, 0, 114, 2, 104, 101, 101, 114, 115, 0, 114, 2, 107, 111, 111, 109, 0, 114, 2,
-			108, 97, 97, 105, 100, 0, 114, 2, 108, 97, 109, 115, 0, 114, 2, 109, 101, 101, 115, 116, 101, 114, 0, 114, 2, 114, 101, 101, 100, 0,
-			114, 2, 114, 111, 109, 112, 101, 108, 0, 114, 2, 115, 105, 103, 116, 0, 114, 2, 115, 107, 114, 121, 0, 114, 2, 115, 112, 114, 111, 110,
-			107, 0, 114, 2, 115, 116, 117, 114, 0, 114, 2, 116, 114, 0, 114, 2, 116, 117, 105, 103, 0, 114, 8, 2, 100, 97, 103, 0, 114, 8,
-			2, 100, 101, 110, 107, 0, 114, 8, 2, 100, 111, 101, 110, 0, 114, 8, 2, 100, 114, 121, 17, 67, 0, 114, 8, 2, 103, 114, 111, 101,
-			105, 0, 114, 8, 2, 104, 97, 97, 115, 0, 114, 8, 2, 104, 111, 111, 102, 115, 0, 114, 8, 2, 112, 101, 105, 110, 115, 0, 114, 8,
-			2, 115, 107, 97, 100, 117, 0, 114, 8, 2, 115, 107, 97, 116, 0, 114, 8, 2, 115, 116, 101, 108, 112, 0, 114, 8, 2, 115, 116, 114,
-			111, 109, 105, 0, 114, 8, 2, 118, 108, 101, 117, 101, 108, 0, 114, 8, 2, 118, 108, 111, 101, 100, 105, 103, 0, 114, 8, 2, 119, 0,
-			4, 114, 2, 101, 101, 110, 3, 2, 117, 34, 10, 0, 114, 2, 101, 101, 110, 103, 101, 0, 114, 2, 101, 101, 110, 115, 21, 0, 114, 2,
-			101, 101, 116, 0, 114, 2, 101, 105, 115, 0, 114, 101, 114, 102, 108, 105, 107, 3, 2, 117, 34, 10, 112, 34, 83, 55, 13, 49, 0, 114,
-			100, 119, 97, 114, 115, 8, 3, 2, 117, 34, 72, 58, 35, 34, 89, 0, 114, 100, 101, 8, 2, 107, 3, 2, 117, 34, 72, 112, 0, 114,
-			115, 116, 117, 117, 114, 115, 8, 3, 2, 117, 34, 89, 47, 118, 12, 34, 89, 0, 114, 115, 97, 97, 107, 108, 105, 107, 3, 2, 117, 34,
-			89, 115, 49, 55, 13, 49, 0, 114, 114, 101, 2, 100, 17, 65, 3, 2, 117, 34, 116, 0, 116, 2, 109, 111, 101, 100, 105, 103, 3, 2,
-			117, 47, 0, 4, 103, 2, 108, 111, 112, 3, 2, 117, 136, 0, 103, 2, 108, 117, 105, 107, 0, 114, 2, 101, 101, 110, 21, 21, 3, 4,
-			117, 34, 10, 0, 114, 2, 119, 105, 103, 3, 6, 117, 34, 0, 112, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 117, 48, 136, 13,
-			0, 3, 117, 0, 4, 114, 2, 115, 105, 103, 116, 121, 100, 3, 117, 34, 0, 114, 2, 116, 114, 101, 107, 0, 114, 8, 2, 116, 114, 111,
-			109, 0, 114, 8, 2, 104, 97, 110, 100, 21, 3, 117, 34, 6, 0, 114, 107, 111, 101, 112, 101, 108, 3, 117, 34, 49, 6, 40, 48, 13,
-			55, 0, 114, 108, 101, 100, 101, 8, 3, 117, 34, 55, 6, 116, 72, 13, 0, 114, 108, 101, 2, 119, 17, 65, 110, 3, 117, 34, 55, 7,
-			116, 0, 114, 108, 101, 2, 108, 25, 3, 117, 34, 55, 112, 0, 114, 98, 111, 100, 105, 103, 3, 117, 34, 71, 6, 117, 72, 13, 136, 0,
-			114, 98, 108, 117, 102, 3, 117, 34, 71, 55, 6, 111, 83, 0, 114, 100, 114, 101, 119, 101, 3, 117, 34, 72, 34, 6, 116, 84, 13, 0,
-			109, 98, 108, 105, 107, 108, 105, 107, 3, 117, 65, 71, 55, 6, 109, 49, 55, 13, 49, 0, 4, 105, 3, 125, 0, 121, 0, 4, 110, 100,
-			106, 105, 101, 3, 125, 68, 49, 37, 0, 110, 116, 106, 105, 101, 0, 4, 100, 106, 105, 101, 3, 125, 80, 37, 0, 116, 106, 105, 101, 0,
-			7, 6, 111, 112, 0, 4, 2, 104, 111, 117, 100, 101, 3, 2, 110, 48, 0, 2, 108, 101, 116, 116, 0, 2, 110, 117, 117, 116, 0, 2,
-			114, 111, 101, 114, 105, 103, 0, 2, 114, 117, 105, 101, 110, 0, 2, 115, 105, 101, 110, 98, 0, 2, 115, 105, 111, 110, 101, 21, 0, 2,
-			115, 116, 97, 110, 100, 105, 103, 0, 2, 119, 105, 110, 100, 101, 0, 8, 2, 114, 101, 103, 0, 8, 2, 115, 121, 0, 8, 2, 118, 97,
-			108, 108, 0, 8, 2, 118, 108, 105, 101, 195, 171, 0, 112, 111, 114, 2, 116, 117, 3, 2, 110, 48, 2, 110, 34, 0, 112, 101, 114, 2,
-			118, 108, 97, 107, 107, 105, 3, 2, 110, 48, 13, 34, 0, 112, 111, 110, 2, 17, 65, 3, 2, 110, 48, 13, 50, 0, 112, 111, 115, 2,
-			105, 115, 105, 101, 3, 2, 110, 48, 13, 88, 0, 116, 105, 2, 109, 17, 65, 3, 2, 110, 48, 47, 2, 37, 0, 109, 101, 114, 107, 108,
-			105, 8, 2, 107, 3, 2, 110, 48, 65, 112, 34, 49, 55, 13, 0, 115, 101, 116, 108, 105, 107, 3, 2, 110, 48, 89, 108, 47, 55, 13,
-			49, 0, 115, 105, 103, 116, 101, 108, 105, 8, 2, 107, 3, 2, 110, 48, 89, 109, 136, 47, 13, 55, 13, 0, 101, 114, 8, 2, 17, 65,
-			3, 2, 117, 48, 13, 34, 0, 101, 114, 97, 115, 105, 101, 3, 2, 117, 48, 13, 34, 115, 89, 37, 0, 101, 110, 2, 98, 3, 2, 117,
-			48, 13, 50, 0, 8, 2, 21, 14, 128, 132, 130, 3, 6, 110, 48, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 110, 48, 136,
-			13, 0, 103, 101, 101, 2, 12, 3, 6, 110, 48, 136, 116, 0, 1, 17, 67, 10, 2, 105, 103, 3, 6, 117, 48, 0, 101, 101, 110, 1,
-			25, 3, 10, 2, 110, 48, 10, 116, 50, 0, 97, 97, 116, 3, 40, 48, 6, 115, 47, 0, 4, 97, 116, 105, 101, 115, 3, 40, 48, 6,
-			115, 47, 37, 89, 0, 97, 116, 105, 101, 115, 0, 97, 116, 105, 101, 3, 40, 48, 35, 47, 6, 37, 0, 2, 111, 102, 102, 101, 114, 3,
-			110, 48, 0, 112, 101, 114, 3, 110, 48, 13, 34, 0, 116, 101, 108, 3, 110, 48, 47, 112, 55, 0, 115, 112, 114, 97, 97, 107, 3, 110,
-			48, 89, 48, 34, 115, 49, 0, 105, 110, 105, 101, 3, 117, 48, 6, 37, 50, 37, 0, 4, 101, 2, 108, 3, 117, 48, 13, 0, 101, 8,
-			2, 25, 0, 101, 8, 2, 114, 105, 103, 0, 101, 114, 97, 2, 25, 3, 117, 48, 13, 34, 2, 35, 0, 101, 110, 2, 12, 3, 117, 48,
-			13, 50, 0, 105, 117, 109, 3, 117, 48, 37, 111, 65, 0, 117, 8, 2, 115, 3, 117, 48, 111, 0, 7, 6, 112, 97, 0, 114, 97, 2,
-			17, 67, 3, 4, 48, 35, 34, 35, 0, 4, 2, 103, 111, 100, 17, 65, 3, 48, 2, 35, 0, 2, 110, 101, 108, 101, 0, 2, 110, 105,
-			101, 107, 0, 2, 112, 105, 101, 114, 0, 2, 112, 105, 114, 117, 115, 0, 2, 115, 105, 102, 105, 0, 2, 115, 116, 101, 108, 0, 2, 116,
-			114, 17, 65, 0, 8, 2, 107, 107, 97, 0, 8, 2, 115, 116, 101, 105, 0, 8, 2, 115, 116, 111, 0, 8, 2, 116, 17, 65, 0, 112,
-			2, 98, 114, 111, 101, 107, 17, 65, 17, 67, 0, 114, 8, 2, 17, 67, 17, 65, 3, 48, 2, 35, 34, 0, 114, 111, 2, 100, 105, 3,
-			48, 2, 35, 34, 2, 40, 0, 114, 116, 105, 2, 115, 97, 3, 48, 2, 35, 34, 47, 2, 37, 0, 114, 116, 105, 2, 116, 117, 3, 48,
-			2, 35, 34, 47, 13, 0, 114, 108, 101, 2, 109, 101, 110, 116, 3, 48, 2, 35, 34, 55, 13, 0, 114, 109, 101, 2, 115, 97, 97, 110,
-			3, 48, 2, 35, 34, 65, 13, 0, 116, 105, 101, 2, 25, 24, 3, 48, 2, 35, 47, 6, 37, 0, 116, 114, 105, 2, 21, 3, 48, 2,
-			35, 47, 34, 2, 37, 0, 116, 114, 105, 97, 114, 2, 103, 97, 3, 48, 2, 35, 47, 34, 2, 37, 2, 35, 34, 0, 116, 114, 111, 2,
-			108, 108, 101, 3, 48, 2, 35, 47, 34, 2, 40, 0, 116, 195, 169, 3, 48, 2, 35, 47, 116, 0, 112, 97, 106, 97, 3, 48, 2, 35,
-			48, 6, 115, 37, 35, 0, 4, 112, 101, 2, 103, 97, 97, 105, 3, 48, 2, 35, 48, 13, 0, 112, 112, 101, 2, 114, 121, 0, 112, 97,
-			119, 101, 114, 3, 48, 2, 35, 48, 115, 84, 13, 34, 0, 107, 105, 115, 116, 97, 110, 3, 48, 2, 35, 49, 2, 37, 89, 47, 35, 50,
-			0, 107, 107, 101, 2, 116, 3, 48, 2, 35, 49, 108, 0, 4, 110, 8, 2, 100, 111, 3, 48, 2, 35, 50, 0, 110, 8, 2, 116, 111,
-			0, 110, 111, 2, 114, 97, 109, 3, 48, 2, 35, 50, 2, 40, 0, 110, 100, 101, 2, 109, 105, 101, 3, 48, 2, 35, 50, 72, 116, 0,
-			108, 2, 109, 105, 101, 116, 3, 48, 2, 35, 55, 0, 108, 101, 2, 115, 116, 17, 65, 3, 48, 2, 35, 55, 13, 0, 108, 105, 110, 2,
-			100, 114, 111, 3, 48, 2, 35, 55, 13, 50, 0, 108, 101, 2, 116, 3, 48, 2, 35, 55, 108, 0, 109, 2, 17, 67, 3, 48, 2, 35,
-			65, 0, 109, 112, 101, 114, 2, 108, 3, 48, 2, 35, 65, 48, 13, 34, 0, 4, 118, 105, 108, 2, 106, 111, 101, 3, 48, 2, 35, 84,
-			13, 55, 0, 119, 105, 108, 2, 106, 111, 101, 0, 115, 2, 111, 112, 3, 48, 2, 35, 89, 0, 115, 115, 97, 2, 115, 105, 101, 114, 3,
-			48, 2, 35, 89, 2, 35, 0, 115, 116, 111, 8, 2, 114, 17, 65, 21, 3, 48, 2, 35, 89, 47, 2, 40, 0, 115, 101, 2, 108, 108,
-			97, 3, 48, 2, 35, 89, 112, 0, 116, 105, 101, 115, 1, 21, 3, 48, 6, 115, 47, 37, 89, 0, 100, 100, 97, 8, 2, 17, 67, 17,
-			65, 3, 48, 7, 35, 72, 35, 0, 2, 116, 97, 116, 3, 48, 13, 0, 114, 97, 100, 101, 2, 25, 3, 48, 13, 34, 115, 72, 13, 0,
-			110, 97, 100, 111, 3, 48, 13, 50, 115, 72, 120, 12, 0, 106, 97, 109, 97, 3, 48, 13, 75, 115, 65, 2, 35, 0, 114, 107, 97, 2,
-			98, 97, 97, 100, 106, 3, 48, 35, 34, 49, 2, 35, 0, 114, 107, 101, 2, 114, 97, 97, 100, 3, 48, 35, 34, 49, 13, 0, 107, 2,
-			17, 65, 3, 48, 35, 49, 19, 0, 110, 8, 2, 103, 101, 17, 67, 3, 48, 35, 50, 0, 110, 97, 109, 97, 3, 48, 35, 50, 13, 65,
-			35, 0, 110, 116, 115, 101, 114, 3, 48, 35, 50, 47, 89, 13, 34, 0, 108, 106, 97, 8, 2, 25, 3, 48, 35, 55, 57, 7, 35, 0,
-			109, 2, 112, 97, 3, 48, 35, 65, 0, 110, 107, 114, 101, 97, 3, 48, 35, 68, 49, 34, 2, 37, 2, 35, 0, 110, 103, 97, 3, 48,
-			35, 68, 81, 35, 0, 115, 8, 2, 17, 65, 17, 65, 3, 48, 35, 89, 0, 97, 114, 108, 8, 3, 48, 113, 34, 114, 0, 116, 105, 111,
-			3, 48, 115, 47, 37, 38, 40, 0, 7, 6, 112, 101, 0, 2, 110, 97, 108, 105, 3, 48, 2, 108, 0, 114, 105, 2, 115, 17, 67, 17,
-			65, 3, 48, 2, 108, 34, 13, 0, 114, 105, 102, 101, 2, 114, 17, 65, 21, 3, 48, 2, 108, 34, 13, 83, 13, 0, 110, 2, 100, 117,
-			108, 101, 3, 48, 2, 108, 50, 0, 110, 101, 2, 116, 114, 17, 65, 3, 48, 2, 108, 50, 13, 0, 110, 105, 115, 105, 2, 108, 108, 105,
-			3, 48, 2, 108, 50, 13, 89, 13, 0, 110, 115, 105, 2, 111, 101, 110, 3, 48, 2, 108, 50, 91, 2, 37, 0, 108, 105, 8, 2, 107,
-			97, 3, 48, 2, 108, 55, 2, 37, 0, 108, 111, 116, 111, 110, 3, 48, 2, 108, 55, 13, 47, 110, 50, 0, 100, 8, 2, 111, 102, 3,
-			48, 2, 108, 72, 0, 100, 97, 8, 2, 103, 3, 48, 2, 108, 72, 2, 35, 0, 100, 105, 8, 3, 48, 2, 108, 72, 2, 37, 0, 114,
-			2, 115, 101, 101, 108, 3, 48, 2, 112, 34, 0, 114, 108, 101, 2, 109, 111, 101, 3, 48, 2, 112, 34, 55, 13, 0, 114, 115, 111, 2,
-			110, 101, 101, 108, 3, 48, 2, 112, 34, 89, 2, 40, 0, 114, 103, 111, 108, 97, 3, 48, 2, 112, 34, 136, 117, 55, 2, 35, 0, 4,
-			108, 101, 2, 116, 111, 110, 3, 48, 2, 112, 55, 13, 0, 108, 101, 2, 116, 111, 110, 0, 114, 105, 2, 111, 3, 48, 2, 116, 34, 2,
-			37, 0, 114, 100, 101, 8, 3, 48, 6, 113, 34, 72, 13, 0, 4, 1, 17, 67, 21, 2, 100, 97, 3, 48, 13, 0, 2, 110, 97, 114,
-			105, 101, 0, 2, 114, 114, 111, 110, 0, 2, 116, 105, 101, 116, 101, 114, 0, 2, 116, 105, 115, 105, 0, 2, 116, 117, 110, 105, 97, 0,
-			8, 2, 100, 17, 65, 0, 4, 114, 2, 107, 117, 115, 115, 105, 101, 3, 48, 13, 34, 0, 114, 2, 115, 101, 112, 115, 105, 0, 114, 2,
-			115, 111, 0, 4, 114, 101, 1, 109, 97, 107, 115, 2, 32, 3, 48, 13, 34, 13, 0, 114, 101, 1, 112, 2, 32, 0, 114, 101, 1, 121,
-			114, 2, 32, 0, 114, 109, 105, 116, 3, 48, 13, 34, 65, 6, 109, 47, 0, 4, 114, 100, 101, 1, 101, 112, 2, 32, 3, 48, 13, 34,
-			72, 13, 0, 114, 100, 101, 1, 109, 101, 116, 2, 32, 0, 114, 100, 101, 1, 112, 105, 110, 115, 2, 32, 0, 114, 100, 101, 1, 114, 117,
-			112, 2, 32, 0, 114, 100, 101, 1, 115, 97, 114, 2, 32, 0, 114, 102, 101, 107, 3, 48, 13, 34, 83, 108, 49, 0, 114, 118, 101, 114,
-			116, 3, 48, 13, 34, 83, 112, 34, 47, 0, 114, 118, 101, 114, 115, 3, 48, 13, 34, 83, 112, 34, 89, 0, 114, 115, 101, 110, 116, 3,
-			48, 13, 34, 89, 108, 50, 47, 0, 114, 115, 101, 110, 116, 97, 1, 21, 2, 115, 105, 3, 48, 13, 34, 89, 108, 50, 47, 115, 0, 116,
-			114, 111, 108, 2, 101, 117, 109, 3, 48, 13, 47, 34, 117, 55, 0, 110, 101, 2, 32, 3, 48, 13, 50, 13, 0, 108, 105, 110, 103, 1,
-			114, 2, 32, 3, 48, 13, 55, 13, 68, 0, 114, 105, 112, 97, 2, 116, 3, 48, 108, 34, 37, 48, 35, 7, 0, 116, 114, 111, 108, 3,
-			48, 108, 47, 34, 13, 55, 10, 0, 100, 111, 8, 2, 109, 3, 48, 108, 72, 2, 40, 0, 115, 1, 114, 101, 100, 110, 117, 114, 3, 48,
-			108, 89, 0, 114, 107, 101, 1, 21, 2, 32, 3, 48, 112, 34, 49, 13, 0, 114, 107, 101, 114, 1, 21, 2, 25, 3, 48, 112, 34, 49,
-			13, 34, 0, 114, 107, 105, 110, 103, 1, 21, 3, 48, 112, 34, 49, 13, 68, 0, 114, 109, 97, 110, 101, 110, 3, 48, 112, 34, 65, 35,
-			50, 6, 108, 50, 0, 114, 115, 2, 111, 109, 3, 48, 112, 34, 89, 10, 0, 114, 115, 107, 101, 3, 48, 112, 34, 89, 49, 13, 0, 114,
-			1, 121, 114, 2, 100, 3, 48, 113, 34, 0, 114, 100, 8, 2, 114, 3, 48, 113, 34, 47, 0, 4, 114, 100, 101, 1, 21, 2, 32, 3,
-			48, 113, 34, 72, 13, 0, 114, 100, 101, 2, 107, 97, 114, 0, 8, 2, 116, 114, 17, 65, 32, 3, 48, 116, 0, 114, 101, 1, 21, 2,
-			32, 3, 48, 116, 34, 13, 0, 7, 6, 112, 114, 0, 111, 116, 101, 115, 116, 3, 4, 48, 34, 110, 47, 13, 89, 47, 0, 111, 112, 97,
-			103, 3, 4, 48, 34, 110, 48, 35, 136, 0, 97, 107, 8, 2, 116, 121, 107, 3, 48, 34, 2, 35, 49, 0, 97, 107, 116, 105, 2, 115,
-			121, 110, 3, 48, 34, 2, 35, 49, 47, 2, 37, 0, 105, 2, 109, 97, 97, 116, 3, 48, 34, 2, 37, 0, 101, 116, 111, 114, 105, 3,
-			48, 34, 2, 37, 47, 2, 117, 34, 2, 37, 0, 101, 116, 111, 114, 105, 97, 2, 110, 3, 48, 34, 2, 37, 47, 2, 117, 34, 2, 37,
-			6, 115, 0, 101, 116, 111, 114, 105, 97, 2, 32, 3, 48, 34, 2, 37, 47, 6, 117, 34, 37, 35, 0, 101, 109, 105, 195, 168, 114, 101,
-			3, 48, 34, 2, 37, 65, 57, 113, 34, 0, 105, 118, 2, 97, 21, 3, 48, 34, 2, 37, 83, 0, 105, 101, 115, 116, 101, 114, 101, 2,
-			25, 3, 48, 34, 2, 37, 89, 47, 13, 34, 108, 0, 4, 111, 2, 17, 67, 17, 65, 3, 48, 34, 2, 40, 0, 111, 2, 98, 108, 17,
-			65, 0, 111, 2, 103, 114, 97, 109, 0, 111, 116, 101, 115, 2, 116, 101, 32, 24, 3, 48, 34, 2, 40, 47, 108, 89, 0, 111, 106, 101,
-			107, 3, 48, 34, 2, 40, 57, 108, 49, 0, 111, 100, 117, 107, 2, 17, 65, 3, 48, 34, 2, 40, 72, 111, 49, 10, 0, 111, 102, 101,
-			115, 115, 105, 111, 2, 110, 3, 48, 34, 2, 40, 83, 2, 108, 91, 2, 37, 2, 40, 0, 111, 118, 105, 116, 97, 3, 48, 34, 2, 40,
-			84, 37, 47, 2, 35, 0, 111, 115, 101, 115, 3, 48, 34, 2, 40, 89, 108, 89, 0, 111, 103, 114, 97, 109, 109, 101, 2, 114, 105, 110,
-			103, 3, 48, 34, 2, 40, 136, 34, 2, 35, 65, 116, 0, 101, 112, 97, 2, 114, 97, 3, 48, 34, 2, 108, 48, 13, 0, 101, 115, 116,
-			105, 103, 101, 3, 48, 34, 2, 108, 89, 47, 37, 12, 90, 0, 101, 115, 98, 105, 116, 101, 114, 105, 2, 97, 3, 48, 34, 2, 108, 89,
-			71, 13, 47, 2, 116, 34, 2, 37, 0, 101, 103, 2, 110, 97, 110, 17, 67, 3, 48, 34, 2, 108, 136, 0, 111, 112, 111, 115, 105, 3,
-			48, 34, 2, 110, 48, 13, 88, 37, 0, 111, 107, 117, 2, 114, 17, 65, 3, 48, 34, 2, 110, 49, 2, 118, 0, 111, 108, 101, 116, 97,
-			114, 105, 2, 97, 3, 48, 34, 2, 110, 55, 13, 47, 2, 35, 34, 2, 37, 0, 111, 109, 117, 108, 103, 2, 101, 3, 48, 34, 2, 110,
-			65, 2, 111, 55, 136, 0, 111, 109, 101, 110, 97, 100, 101, 3, 48, 34, 2, 110, 65, 13, 50, 115, 72, 13, 0, 111, 109, 105, 115, 107,
-			117, 3, 48, 34, 2, 110, 65, 13, 89, 49, 118, 0, 111, 98, 108, 101, 2, 109, 97, 116, 105, 3, 48, 34, 2, 110, 71, 55, 13, 0,
-			111, 102, 105, 116, 2, 101, 3, 48, 34, 2, 110, 83, 13, 47, 0, 111, 115, 101, 2, 100, 117, 114, 101, 3, 48, 34, 2, 110, 89, 13,
-			0, 111, 115, 116, 105, 2, 116, 117, 3, 48, 34, 2, 110, 89, 47, 13, 0, 101, 100, 105, 2, 107, 97, 110, 116, 3, 48, 34, 2, 116,
-			72, 13, 0, 111, 2, 103, 114, 101, 115, 115, 3, 48, 34, 2, 117, 0, 111, 116, 101, 2, 195, 175, 3, 48, 34, 2, 117, 47, 13, 0,
-			111, 106, 101, 107, 2, 116, 105, 101, 108, 3, 48, 34, 2, 117, 57, 2, 108, 49, 0, 111, 118, 105, 2, 97, 110, 100, 3, 48, 34, 2,
-			117, 84, 2, 37, 0, 111, 115, 97, 2, 195, 175, 101, 3, 48, 34, 2, 117, 89, 115, 0, 111, 103, 101, 115, 116, 101, 114, 2, 111, 3,
-			48, 34, 2, 117, 136, 2, 108, 89, 47, 13, 34, 0, 101, 2, 110, 97, 116, 97, 3, 48, 34, 4, 116, 0, 4, 101, 2, 108, 117, 100,
-			3, 48, 34, 13, 0, 101, 2, 109, 105, 101, 114, 0, 101, 2, 115, 17, 65, 0, 101, 116, 101, 110, 2, 115, 105, 3, 48, 34, 13, 47,
-			134, 50, 0, 105, 110, 115, 105, 2, 112, 17, 65, 3, 48, 34, 13, 50, 89, 13, 0, 105, 110, 115, 105, 112, 101, 2, 25, 3, 48, 34,
-			13, 50, 89, 37, 48, 13, 0, 105, 110, 115, 101, 2, 115, 3, 48, 34, 13, 50, 89, 108, 0, 105, 110, 115, 101, 115, 1, 21, 2, 32,
-			3, 48, 34, 13, 50, 89, 108, 89, 0, 105, 109, 105, 2, 116, 3, 48, 34, 13, 65, 13, 0, 4, 101, 115, 101, 2, 100, 101, 110, 116,
-			3, 48, 34, 13, 89, 13, 0, 105, 115, 111, 2, 110, 105, 101, 114, 0, 101, 115, 105, 100, 101, 110, 2, 17, 67, 3, 48, 34, 13, 89,
-			13, 72, 108, 50, 0, 101, 115, 116, 97, 2, 115, 105, 101, 3, 48, 34, 13, 89, 47, 115, 0, 101, 115, 116, 101, 2, 114, 101, 110, 100,
-			3, 48, 34, 13, 89, 47, 116, 0, 101, 115, 116, 101, 101, 114, 3, 48, 34, 13, 89, 47, 116, 34, 0, 101, 115, 101, 110, 116, 1, 21,
-			3, 48, 34, 13, 89, 108, 50, 47, 0, 101, 116, 111, 114, 105, 97, 2, 17, 67, 3, 48, 34, 37, 47, 6, 117, 34, 37, 35, 0, 101,
-			102, 101, 107, 3, 48, 34, 37, 83, 108, 49, 0, 111, 116, 101, 115, 3, 48, 34, 40, 47, 6, 108, 89, 0, 111, 109, 105, 110, 101, 110,
-			3, 48, 34, 110, 65, 37, 50, 6, 108, 50, 0, 111, 110, 107, 101, 114, 2, 116, 106, 105, 3, 48, 34, 110, 68, 49, 10, 112, 34, 0,
-			111, 102, 101, 115, 105, 101, 3, 48, 34, 110, 83, 13, 89, 6, 37, 0, 4, 101, 2, 104, 105, 115, 116, 111, 3, 48, 34, 116, 0, 101,
-			2, 115, 101, 32, 0, 101, 100, 105, 107, 101, 114, 3, 48, 34, 116, 72, 13, 49, 13, 34, 0, 111, 116, 2, 111, 110, 12, 3, 48, 34,
-			117, 47, 0, 111, 116, 111, 2, 17, 67, 3, 48, 34, 117, 47, 40, 0, 111, 107, 105, 101, 3, 48, 34, 117, 49, 2, 37, 0, 111, 115,
-			97, 3, 48, 34, 117, 89, 2, 35, 0, 111, 115, 101, 1, 21, 2, 32, 3, 48, 34, 117, 89, 13, 0, 7, 6, 114, 101, 0, 2, 97,
-			103, 101, 114, 101, 110, 3, 34, 2, 37, 0, 97, 2, 17, 67, 3, 34, 2, 37, 2, 35, 0, 104, 97, 98, 105, 108, 105, 116, 3, 34,
-			2, 37, 2, 35, 71, 2, 37, 55, 2, 37, 47, 0, 2, 195, 188, 3, 34, 2, 37, 10, 0, 97, 2, 107, 115, 3, 34, 2, 37, 35,
-			0, 102, 108, 101, 107, 2, 17, 67, 3, 34, 2, 37, 83, 55, 108, 49, 0, 116, 114, 111, 8, 2, 21, 14, 128, 132, 133, 3, 34, 2,
-			108, 47, 34, 2, 40, 0, 112, 2, 116, 105, 101, 108, 3, 34, 2, 108, 48, 0, 112, 101, 114, 116, 111, 105, 114, 101, 3, 34, 2, 108,
-			48, 13, 34, 47, 58, 115, 34, 0, 112, 117, 2, 116, 3, 34, 2, 108, 48, 118, 0, 100, 105, 103, 8, 2, 17, 65, 3, 34, 2, 108,
-			72, 2, 37, 136, 0, 102, 101, 114, 2, 97, 3, 34, 2, 108, 83, 13, 34, 0, 119, 111, 108, 2, 117, 3, 34, 2, 108, 84, 2, 111,
-			55, 0, 115, 111, 2, 110, 17, 65, 3, 34, 2, 108, 89, 2, 40, 0, 115, 111, 2, 108, 117, 115, 105, 101, 3, 34, 2, 108, 89, 2,
-			110, 0, 115, 116, 97, 117, 114, 3, 34, 2, 108, 89, 47, 2, 40, 34, 0, 115, 116, 101, 8, 2, 114, 101, 110, 100, 3, 34, 2, 108,
-			89, 47, 116, 0, 103, 105, 109, 101, 110, 2, 116, 97, 21, 3, 34, 2, 108, 136, 2, 37, 65, 2, 108, 50, 0, 103, 117, 2, 108, 17,
-			65, 3, 34, 2, 108, 136, 2, 118, 0, 103, 2, 104, 111, 101, 107, 105, 103, 3, 34, 2, 112, 136, 0, 2, 112, 114, 111, 100, 117, 3,
-			34, 2, 116, 0, 112, 101, 114, 2, 107, 117, 115, 3, 34, 2, 116, 48, 13, 34, 0, 108, 105, 195, 171, 102, 3, 34, 2, 116, 55, 2,
-			37, 108, 83, 0, 100, 101, 2, 114, 121, 3, 34, 2, 116, 72, 13, 0, 101, 108, 1, 17, 65, 10, 2, 32, 3, 34, 6, 116, 55, 0,
-			108, 101, 1, 10, 2, 32, 3, 34, 6, 116, 55, 13, 0, 4, 1, 17, 67, 2, 103, 97, 116, 3, 34, 13, 0, 2, 98, 101, 108, 0,
-			2, 100, 97, 107, 17, 67, 0, 2, 102, 114, 101, 105, 110, 0, 2, 103, 101, 101, 114, 0, 2, 103, 114, 101, 115, 25, 0, 2, 103, 114,
-			111, 101, 112, 0, 2, 107, 114, 117, 0, 2, 108, 105, 101, 107, 0, 2, 110, 17, 65, 0, 2, 112, 108, 105, 101, 107, 0, 2, 115, 101,
-			110, 115, 17, 65, 0, 2, 115, 101, 115, 115, 105, 101, 0, 2, 115, 112, 111, 110, 0, 2, 116, 111, 0, 8, 2, 108, 97, 0, 8, 2,
-			115, 112, 121, 116, 0, 8, 2, 115, 116, 97, 110, 116, 0, 116, 105, 2, 114, 101, 3, 34, 13, 47, 13, 0, 112, 117, 98, 108, 105, 2,
-			107, 3, 34, 13, 48, 2, 111, 71, 55, 2, 37, 0, 112, 117, 98, 108, 105, 101, 107, 3, 34, 13, 48, 2, 111, 71, 55, 37, 49, 0,
-			4, 107, 108, 97, 2, 109, 17, 65, 3, 34, 13, 49, 55, 35, 0, 107, 108, 97, 2, 109, 101, 101, 114, 0, 107, 108, 97, 109, 101, 3,
-			34, 13, 49, 55, 115, 65, 13, 0, 110, 101, 1, 111, 3, 34, 13, 50, 13, 0, 110, 111, 110, 115, 3, 34, 13, 50, 135, 50, 89, 0,
-			4, 108, 101, 2, 103, 17, 65, 3, 34, 13, 55, 13, 0, 108, 101, 2, 118, 97, 110, 0, 108, 105, 2, 103, 105, 0, 108, 97, 115, 101,
-			3, 34, 13, 55, 115, 89, 13, 0, 100, 101, 110, 2, 17, 65, 17, 67, 17, 65, 3, 34, 13, 72, 13, 50, 6, 0, 100, 101, 110, 101,
-			101, 114, 3, 34, 13, 72, 13, 50, 6, 116, 34, 0, 102, 111, 114, 2, 109, 3, 34, 13, 83, 2, 110, 34, 0, 102, 101, 114, 101, 110,
-			2, 100, 17, 65, 3, 34, 13, 83, 13, 34, 108, 50, 0, 119, 111, 108, 119, 101, 114, 3, 34, 13, 84, 6, 110, 55, 84, 13, 34, 0,
-			115, 101, 114, 119, 101, 3, 34, 13, 88, 6, 112, 34, 84, 13, 0, 4, 115, 105, 2, 100, 101, 110, 3, 34, 13, 89, 13, 0, 115, 105,
-			2, 116, 17, 65, 0, 115, 101, 114, 2, 118, 3, 34, 13, 89, 13, 34, 0, 115, 112, 101, 107, 2, 116, 101, 101, 114, 3, 34, 13, 89,
-			48, 2, 108, 49, 0, 115, 112, 101, 107, 3, 34, 13, 89, 48, 108, 49, 0, 115, 101, 112, 3, 34, 13, 89, 108, 48, 0, 115, 101, 115,
-			2, 32, 3, 34, 13, 89, 108, 89, 0, 115, 117, 108, 2, 116, 17, 65, 3, 34, 13, 89, 111, 55, 6, 0, 103, 105, 109, 101, 2, 32,
-			3, 34, 13, 90, 37, 12, 65, 0, 103, 2, 105, 115, 116, 3, 34, 13, 136, 0, 4, 103, 105, 2, 109, 101, 110, 116, 3, 34, 13, 136,
-			13, 0, 103, 105, 2, 115, 115, 101, 117, 17, 67, 0, 103, 108, 101, 2, 109, 101, 110, 116, 3, 34, 13, 136, 55, 13, 0, 103, 101, 114,
-			2, 17, 65, 3, 34, 13, 136, 116, 34, 0, 4, 1, 17, 67, 2, 110, 32, 3, 34, 108, 0, 1, 17, 67, 2, 110, 110, 101, 32, 0,
-			1, 101, 100, 114, 101, 112, 2, 110, 0, 116, 105, 110, 97, 3, 34, 108, 47, 37, 50, 35, 0, 112, 101, 116, 3, 34, 108, 48, 13, 47,
-			0, 107, 111, 114, 100, 3, 34, 108, 49, 2, 110, 34, 47, 0, 99, 99, 101, 3, 34, 108, 49, 37, 0, 109, 2, 32, 3, 34, 108, 65,
-			0, 103, 103, 97, 101, 3, 34, 108, 81, 123, 0, 103, 3, 34, 112, 136, 0, 103, 118, 101, 114, 100, 105, 103, 3, 34, 112, 136, 83, 6,
-			112, 34, 72, 13, 136, 0, 114, 105, 110, 103, 1, 10, 2, 32, 3, 34, 116, 34, 13, 68, 0, 107, 101, 2, 110, 17, 65, 3, 34, 116,
-			49, 13, 0, 4, 100, 101, 1, 115, 3, 34, 116, 72, 13, 0, 100, 101, 8, 2, 17, 67, 0, 100, 101, 108, 8, 3, 34, 116, 72, 13,
-			55, 0, 7, 6, 115, 101, 0, 110, 105, 111, 114, 2, 105, 116, 101, 105, 3, 89, 2, 37, 12, 50, 2, 37, 2, 110, 34, 0, 4, 114,
-			101, 2, 109, 111, 110, 105, 3, 89, 2, 108, 34, 13, 0, 114, 101, 2, 110, 97, 100, 101, 0, 114, 111, 116, 111, 2, 110, 105, 3, 89,
-			2, 108, 34, 13, 47, 2, 40, 0, 107, 117, 2, 108, 3, 89, 2, 108, 49, 2, 118, 0, 107, 119, 101, 2, 115, 116, 114, 17, 65, 3,
-			89, 2, 108, 49, 58, 13, 0, 107, 115, 2, 116, 97, 110, 116, 3, 89, 2, 108, 49, 89, 0, 107, 115, 116, 101, 2, 116, 3, 89, 2,
-			108, 49, 89, 47, 108, 0, 4, 110, 2, 115, 111, 114, 105, 101, 3, 89, 2, 108, 50, 0, 110, 2, 115, 117, 117, 114, 0, 110, 8, 2,
-			116, 114, 97, 21, 0, 110, 116, 105, 2, 109, 101, 110, 116, 3, 89, 2, 108, 50, 47, 2, 37, 0, 108, 105, 2, 98, 97, 3, 89, 2,
-			108, 55, 2, 37, 0, 109, 105, 2, 110, 97, 3, 89, 2, 108, 65, 2, 37, 0, 2, 108, 108, 105, 110, 3, 89, 2, 112, 6, 0, 108,
-			108, 111, 2, 102, 97, 3, 89, 2, 112, 55, 13, 0, 108, 100, 101, 114, 2, 121, 3, 89, 2, 112, 55, 72, 13, 34, 0, 108, 102, 2,
-			115, 116, 97, 110, 3, 89, 2, 112, 55, 83, 0, 108, 97, 2, 107, 97, 110, 116, 3, 89, 2, 116, 55, 13, 0, 105, 2, 115, 111, 101,
-			110, 3, 89, 2, 123, 0, 108, 1, 21, 2, 119, 105, 103, 3, 89, 6, 112, 55, 0, 108, 108, 105, 103, 1, 21, 3, 89, 6, 112, 55,
-			13, 136, 0, 108, 101, 1, 10, 2, 32, 3, 89, 6, 116, 55, 13, 0, 110, 105, 111, 114, 8, 3, 89, 7, 37, 12, 50, 37, 13, 34,
-			0, 107, 111, 1, 21, 2, 110, 111, 21, 3, 89, 10, 2, 108, 49, 2, 40, 0, 4, 2, 32, 3, 89, 13, 0, 2, 100, 117, 107, 0,
-			2, 107, 111, 0, 2, 107, 117, 0, 2, 114, 111, 101, 116, 0, 8, 2, 100, 101, 110, 116, 0, 8, 2, 100, 111, 111, 115, 0, 8, 2,
-			107, 114, 101, 0, 8, 2, 110, 105, 21, 0, 8, 2, 114, 105, 110, 103, 0, 8, 32, 2, 32, 0, 4, 114, 2, 115, 97, 110, 116, 3,
-			89, 13, 34, 0, 114, 2, 118, 101, 116, 0, 114, 8, 2, 101, 21, 0, 107, 114, 101, 2, 116, 97, 3, 89, 13, 49, 34, 13, 0, 107,
-			114, 101, 116, 97, 114, 105, 2, 17, 65, 3, 89, 13, 49, 34, 13, 47, 2, 35, 34, 2, 37, 0, 108, 101, 1, 111, 110, 2, 32, 3,
-			89, 13, 55, 13, 0, 108, 101, 107, 2, 17, 67, 17, 65, 3, 89, 13, 55, 108, 49, 0, 108, 111, 110, 8, 2, 115, 17, 67, 3, 89,
-			13, 55, 135, 50, 0, 109, 101, 8, 2, 17, 67, 116, 3, 89, 13, 65, 108, 0, 100, 97, 110, 8, 3, 89, 13, 72, 35, 50, 0, 100,
-			101, 2, 114, 105, 110, 103, 3, 89, 13, 72, 116, 0, 100, 101, 101, 114, 3, 89, 13, 72, 116, 34, 0, 107, 115, 1, 21, 2, 32, 3,
-			89, 108, 49, 89, 0, 110, 116, 101, 114, 3, 89, 108, 50, 47, 13, 34, 0, 110, 100, 105, 110, 103, 2, 32, 3, 89, 108, 50, 72, 13,
-			68, 0, 4, 109, 105, 8, 2, 17, 67, 3, 89, 108, 65, 37, 0, 109, 105, 8, 2, 32, 0, 115, 2, 117, 117, 114, 3, 89, 108, 89,
-			10, 0, 4, 1, 100, 101, 111, 108, 98, 2, 108, 3, 89, 112, 0, 1, 101, 105, 115, 105, 108, 111, 112, 2, 108, 25, 0, 1, 101, 108,
-			108, 105, 97, 114, 98, 2, 108, 0, 1, 103, 110, 105, 110, 117, 101, 104, 2, 108, 25, 0, 1, 109, 97, 97, 103, 103, 105, 108, 2, 108,
-			25, 0, 1, 109, 97, 116, 115, 2, 108, 0, 2, 103, 103, 17, 65, 0, 108, 108, 101, 2, 116, 106, 105, 101, 3, 89, 112, 55, 37, 0,
-			1, 17, 67, 21, 2, 114, 101, 32, 3, 89, 116, 0, 116, 101, 2, 110, 101, 32, 3, 89, 116, 47, 13, 0, 116, 101, 108, 2, 25, 3,
-			89, 116, 47, 13, 55, 0, 107, 101, 114, 3, 89, 116, 49, 13, 34, 0, 110, 105, 110, 103, 3, 89, 116, 50, 13, 68, 0, 110, 117, 8,
-			2, 17, 67, 17, 67, 3, 89, 116, 50, 118, 0, 109, 101, 108, 2, 21, 3, 89, 116, 65, 13, 55, 0, 98, 114, 97, 8, 3, 89, 116,
-			71, 34, 35, 0, 100, 101, 8, 3, 89, 116, 72, 13, 0, 7, 6, 115, 116, 0, 105, 101, 115, 1, 21, 3, 8, 89, 47, 2, 37, 89,
-			0, 101, 109, 112, 101, 114, 97, 109, 101, 1, 21, 3, 89, 10, 47, 108, 65, 48, 14, 34, 2, 35, 65, 108, 0, 4, 97, 2, 116, 117,
-			116, 17, 65, 3, 89, 47, 2, 35, 0, 97, 8, 2, 98, 105, 21, 0, 97, 110, 2, 100, 97, 3, 89, 47, 2, 35, 50, 0, 4, 97,
-			110, 100, 2, 104, 111, 117, 100, 101, 3, 89, 47, 2, 35, 50, 47, 0, 97, 110, 100, 2, 118, 97, 115, 116, 105, 0, 97, 110, 100, 101,
-			114, 100, 2, 21, 3, 89, 47, 2, 35, 50, 72, 13, 34, 47, 0, 97, 108, 97, 103, 2, 17, 67, 105, 101, 116, 3, 89, 47, 2, 35,
-			55, 2, 35, 136, 0, 105, 101, 2, 98, 101, 117, 3, 89, 47, 2, 37, 0, 105, 108, 101, 2, 116, 3, 89, 47, 2, 37, 55, 108, 0,
-			101, 8, 2, 114, 105, 3, 89, 47, 2, 108, 0, 101, 108, 108, 101, 110, 2, 98, 111, 115, 3, 89, 47, 2, 112, 55, 13, 65, 0, 101,
-			114, 101, 111, 2, 116, 105, 3, 89, 47, 2, 116, 34, 2, 37, 2, 40, 0, 101, 114, 111, 2, 195, 175, 101, 100, 3, 89, 47, 2, 116,
-			34, 2, 40, 38, 0, 117, 2, 100, 101, 3, 89, 47, 2, 118, 0, 117, 100, 101, 110, 2, 116, 3, 89, 47, 2, 118, 72, 108, 50, 0,
-			111, 117, 116, 2, 109, 111, 101, 100, 105, 3, 89, 47, 2, 120, 47, 0, 105, 101, 107, 1, 26, 21, 3, 89, 47, 6, 37, 49, 0, 101,
-			1, 21, 2, 108, 108, 101, 110, 3, 89, 47, 6, 112, 0, 101, 114, 114, 101, 116, 106, 105, 101, 3, 89, 47, 6, 112, 34, 37, 80, 37,
-			0, 97, 116, 105, 101, 115, 3, 89, 47, 6, 115, 47, 37, 89, 0, 121, 102, 103, 101, 2, 21, 14, 128, 132, 134, 3, 89, 47, 6, 123,
-			83, 136, 13, 0, 97, 97, 116, 8, 2, 115, 3, 89, 47, 7, 115, 47, 0, 4, 101, 1, 17, 67, 21, 2, 109, 97, 110, 3, 89, 47,
-			13, 0, 101, 1, 21, 2, 108, 121, 25, 0, 101, 1, 32, 15, 0, 101, 1, 114, 170, 195, 2, 32, 14, 128, 128, 131, 0, 101, 2, 108,
-			97, 97, 110, 0, 101, 2, 108, 97, 110, 100, 0, 101, 2, 108, 108, 97, 115, 105, 101, 0, 101, 2, 109, 97, 97, 116, 0, 101, 2, 109,
-			97, 114, 107, 0, 101, 8, 2, 102, 97, 97, 110, 0, 105, 2, 112, 117, 108, 17, 65, 0, 101, 114, 114, 101, 105, 3, 89, 47, 13, 34,
-			6, 123, 0, 101, 110, 101, 1, 105, 114, 104, 99, 2, 32, 3, 89, 47, 13, 50, 13, 0, 4, 101, 108, 1, 21, 2, 105, 17, 67, 3,
-			89, 47, 13, 55, 0, 101, 108, 1, 21, 2, 111, 0, 101, 108, 1, 110, 117, 107, 2, 100, 0, 101, 108, 1, 111, 112, 97, 0, 101, 108,
-			1, 114, 111, 119, 0, 101, 108, 8, 101, 110, 0, 105, 108, 2, 115, 119, 121, 0, 101, 108, 105, 107, 1, 21, 3, 89, 47, 13, 55, 13,
-			49, 0, 105, 109, 117, 2, 108, 17, 65, 3, 89, 47, 13, 65, 2, 118, 0, 114, 97, 116, 101, 103, 105, 101, 3, 89, 47, 34, 2, 35,
-			47, 13, 136, 37, 0, 114, 97, 116, 101, 103, 105, 101, 115, 3, 89, 47, 34, 2, 35, 47, 116, 136, 37, 89, 0, 114, 97, 98, 2, 111,
-			116, 111, 109, 105, 3, 89, 47, 34, 2, 35, 71, 0, 114, 97, 102, 2, 114, 101, 103, 116, 101, 3, 89, 47, 34, 2, 35, 83, 0, 114,
-			117, 107, 116, 2, 117, 3, 89, 47, 34, 2, 111, 49, 47, 0, 114, 117, 107, 116, 117, 2, 114, 101, 114, 17, 65, 110, 3, 89, 47, 34,
-			2, 111, 49, 47, 2, 118, 0, 114, 105, 103, 2, 110, 105, 101, 110, 3, 89, 47, 34, 13, 136, 0, 4, 114, 97, 110, 100, 2, 111, 3,
-			89, 47, 34, 35, 50, 47, 10, 0, 114, 97, 110, 100, 8, 2, 101, 114, 17, 67, 0, 114, 101, 115, 2, 32, 3, 89, 47, 34, 108, 89,
-			0, 114, 97, 97, 116, 1, 21, 2, 32, 14, 129, 128, 134, 3, 89, 47, 34, 115, 47, 0, 114, 101, 107, 101, 3, 89, 47, 34, 116, 49,
-			13, 0, 97, 112, 8, 2, 17, 65, 3, 89, 47, 35, 48, 10, 0, 97, 109, 105, 110, 97, 3, 89, 47, 35, 65, 2, 37, 50, 2, 35,
-			0, 101, 2, 109, 3, 89, 47, 108, 0, 101, 110, 2, 115, 105, 108, 3, 89, 47, 108, 50, 0, 101, 109, 112, 101, 108, 3, 89, 47, 108,
-			65, 48, 13, 55, 0, 111, 114, 109, 3, 89, 47, 110, 34, 14, 65, 0, 111, 107, 2, 17, 65, 3, 89, 47, 110, 49, 19, 0, 111, 102,
-			2, 111, 3, 89, 47, 110, 83, 19, 0, 4, 101, 1, 100, 110, 2, 114, 3, 89, 47, 112, 0, 101, 1, 101, 101, 115, 2, 114, 0, 101,
-			1, 101, 105, 112, 101, 115, 2, 114, 0, 101, 1, 101, 105, 115, 105, 118, 2, 114, 0, 101, 1, 101, 114, 17, 65, 109, 2, 114, 0, 101,
-			1, 101, 119, 101, 115, 2, 114, 0, 101, 1, 103, 114, 101, 119, 100, 2, 114, 0, 101, 1, 107, 99, 111, 114, 2, 114, 0, 101, 1, 108,
-			97, 97, 119, 100, 2, 114, 0, 101, 1, 108, 101, 17, 67, 11, 2, 114, 0, 101, 1, 108, 111, 111, 112, 2, 114, 0, 101, 1, 109, 97,
-			97, 115, 2, 108, 108, 101, 110, 0, 101, 1, 109, 108, 105, 102, 2, 114, 0, 101, 1, 110, 101, 101, 116, 2, 108, 108, 101, 110, 0, 101,
-			1, 112, 111, 112, 2, 114, 0, 101, 1, 114, 101, 112, 117, 115, 2, 114, 0, 101, 1, 116, 101, 17, 67, 2, 114, 25, 0, 101, 1, 116,
-			110, 101, 114, 112, 2, 114, 0, 101, 2, 108, 0, 4, 101, 114, 1, 103, 101, 119, 2, 119, 101, 3, 89, 47, 112, 34, 0, 101, 114, 2,
-			45, 104, 111, 116, 101, 108, 0, 101, 114, 2, 104, 111, 116, 101, 108, 0, 101, 114, 2, 119, 101, 110, 100, 0, 101, 114, 8, 0, 101, 114,
-			114, 101, 3, 89, 47, 112, 34, 13, 0, 101, 114, 107, 2, 32, 3, 89, 47, 112, 34, 49, 0, 101, 114, 107, 116, 1, 21, 3, 89, 47,
-			112, 34, 49, 47, 0, 101, 114, 102, 2, 25, 3, 89, 47, 112, 34, 83, 0, 101, 114, 119, 101, 110, 115, 2, 21, 3, 89, 47, 112, 34,
-			84, 13, 50, 89, 10, 0, 101, 108, 101, 1, 10, 2, 102, 111, 3, 89, 47, 112, 55, 13, 0, 4, 101, 114, 1, 107, 105, 119, 107, 3,
-			89, 47, 113, 34, 0, 101, 114, 1, 107, 111, 98, 2, 116, 0, 101, 114, 1, 107, 114, 97, 118, 2, 116, 106, 105, 101, 0, 101, 114, 1,
-			112, 97, 97, 107, 115, 2, 116, 106, 105, 101, 0, 97, 2, 100, 105, 111, 110, 3, 89, 47, 115, 0, 97, 112, 101, 108, 3, 89, 47, 115,
-			48, 13, 55, 0, 101, 2, 107, 101, 32, 3, 89, 47, 116, 0, 101, 107, 101, 2, 108, 105, 103, 3, 89, 47, 116, 49, 13, 0, 101, 107,
-			101, 114, 1, 17, 67, 3, 89, 47, 116, 49, 13, 34, 0, 101, 110, 101, 2, 32, 3, 89, 47, 116, 50, 13, 0, 101, 108, 101, 2, 32,
-			3, 89, 47, 116, 55, 13, 0, 101, 108, 101, 114, 3, 89, 47, 116, 55, 13, 34, 0, 4, 101, 100, 101, 2, 17, 67, 3, 89, 47, 116,
-			72, 13, 0, 101, 100, 101, 2, 32, 0, 101, 100, 105, 110, 103, 3, 89, 47, 116, 72, 13, 68, 0, 101, 119, 101, 108, 3, 89, 47, 116,
-			84, 13, 55, 0, 111, 116, 101, 110, 101, 3, 89, 47, 117, 47, 13, 50, 13, 0, 111, 107, 2, 101, 3, 89, 47, 117, 49, 0, 7, 6,
-			116, 101, 0, 109, 112, 101, 114, 97, 3, 4, 47, 108, 65, 48, 14, 34, 2, 35, 0, 2, 111, 17, 67, 3, 47, 2, 37, 2, 0, 97,
-			2, 116, 114, 97, 3, 47, 2, 37, 2, 35, 0, 97, 116, 101, 114, 3, 47, 2, 37, 115, 47, 13, 34, 0, 114, 97, 2, 112, 17, 65,
-			3, 47, 2, 108, 34, 2, 35, 0, 114, 97, 1, 111, 2, 112, 17, 65, 3, 47, 2, 108, 34, 2, 35, 6, 0, 114, 114, 111, 114, 2,
-			105, 115, 3, 47, 2, 108, 34, 2, 40, 34, 0, 4, 107, 115, 2, 116, 105, 101, 108, 3, 47, 2, 108, 49, 89, 0, 107, 115, 8, 2,
-			116, 117, 0, 4, 110, 2, 111, 116, 111, 109, 105, 101, 3, 47, 2, 108, 50, 0, 110, 2, 116, 97, 107, 101, 108, 0, 110, 2, 116, 111,
-			111, 110, 0, 110, 100, 101, 110, 115, 3, 47, 2, 108, 50, 72, 134, 50, 89, 0, 115, 111, 117, 2, 114, 105, 101, 3, 47, 2, 108, 89,
-			2, 40, 0, 4, 114, 2, 109, 105, 101, 116, 3, 47, 2, 112, 34, 0, 114, 2, 109, 121, 110, 0, 114, 8, 2, 115, 0, 114, 97, 97,
-			114, 100, 101, 8, 3, 47, 2, 112, 34, 19, 115, 34, 72, 13, 0, 114, 112, 101, 110, 2, 116, 121, 110, 3, 47, 2, 112, 34, 48, 13,
-			50, 0, 114, 109, 105, 2, 110, 97, 21, 3, 47, 2, 112, 34, 65, 2, 37, 0, 108, 101, 8, 2, 17, 67, 3, 47, 2, 112, 55, 13,
-			0, 4, 101, 110, 2, 115, 116, 114, 121, 100, 3, 47, 2, 116, 50, 0, 101, 110, 2, 119, 111, 111, 114, 0, 101, 110, 2, 111, 111, 114,
-			103, 101, 115, 3, 47, 2, 116, 50, 10, 0, 101, 110, 115, 2, 119, 111, 111, 114, 3, 47, 2, 116, 50, 89, 0, 4, 1, 17, 67, 21,
-			2, 114, 103, 101, 110, 100, 3, 47, 6, 112, 0, 2, 114, 103, 101, 110, 100, 0, 114, 110, 2, 101, 32, 3, 47, 6, 112, 34, 50, 0,
-			114, 110, 2, 25, 3, 47, 6, 113, 34, 14, 50, 0, 4, 1, 97, 17, 67, 2, 114, 105, 110, 103, 3, 47, 6, 116, 0, 1, 107, 2,
-			114, 105, 110, 103, 0, 4, 114, 101, 110, 100, 101, 1, 101, 112, 2, 32, 3, 47, 6, 116, 34, 13, 50, 72, 13, 0, 114, 101, 110, 100,
-			101, 1, 105, 2, 32, 0, 114, 101, 110, 100, 101, 1, 107, 101, 2, 32, 0, 114, 101, 110, 100, 101, 1, 108, 117, 2, 32, 0, 114, 101,
-			110, 100, 101, 1, 114, 101, 118, 2, 32, 0, 114, 101, 110, 100, 101, 1, 115, 97, 2, 32, 0, 108, 101, 1, 21, 2, 32, 3, 47, 6,
-			116, 55, 13, 0, 115, 101, 2, 32, 3, 47, 6, 116, 89, 13, 0, 115, 101, 115, 2, 32, 3, 47, 6, 116, 89, 13, 89, 0, 4, 117,
-			114, 1, 17, 65, 3, 47, 6, 128, 34, 0, 117, 114, 1, 107, 0, 101, 110, 2, 97, 114, 103, 117, 3, 47, 7, 116, 50, 0, 4, 1,
-			17, 65, 2, 108, 105, 110, 103, 3, 47, 13, 0, 1, 17, 65, 10, 2, 108, 112, 0, 1, 17, 65, 17, 67, 2, 108, 101, 110, 100, 0,
-			1, 17, 65, 21, 2, 103, 101, 17, 67, 0, 1, 17, 67, 21, 2, 17, 67, 0, 1, 17, 67, 21, 2, 109, 97, 114, 107, 0, 1, 21,
-			2, 111, 112, 0, 1, 97, 119, 2, 114, 105, 110, 103, 0, 1, 101, 105, 110, 2, 109, 105, 110, 0, 2, 32, 0, 2, 97, 97, 0, 2,
-			100, 111, 109, 0, 2, 111, 110, 100, 101, 114, 0, 2, 111, 111, 0, 2, 114, 114, 17, 65, 0, 8, 2, 98, 111, 119, 101, 0, 8, 2,
-			110, 111, 0, 8, 2, 119, 101, 0, 4, 114, 1, 10, 2, 116, 17, 65, 21, 3, 47, 13, 34, 0, 114, 1, 21, 2, 116, 121, 100, 0,
-			114, 1, 97, 119, 2, 116, 0, 114, 8, 2, 108, 0, 114, 8, 2, 110, 17, 65, 0, 114, 8, 2, 119, 0, 114, 105, 101, 1, 110, 3,
-			47, 13, 34, 6, 37, 0, 114, 117, 103, 103, 101, 101, 2, 12, 3, 47, 13, 34, 6, 111, 136, 116, 0, 4, 114, 100, 1, 10, 2, 32,
-			3, 47, 13, 34, 47, 0, 114, 116, 1, 10, 2, 114, 0, 114, 116, 106, 105, 101, 1, 10, 3, 47, 13, 34, 49, 37, 0, 114, 109, 101,
-			115, 1, 10, 3, 47, 13, 34, 65, 108, 89, 0, 114, 101, 103, 8, 3, 47, 13, 34, 112, 136, 0, 107, 111, 114, 3, 47, 13, 49, 110,
-			34, 0, 107, 101, 114, 101, 8, 3, 47, 13, 49, 116, 34, 13, 0, 4, 110, 1, 21, 2, 98, 97, 99, 104, 3, 47, 13, 50, 0, 110,
-			1, 21, 2, 100, 101, 114, 119, 121, 25, 0, 110, 105, 115, 3, 47, 13, 50, 109, 89, 0, 110, 97, 97, 114, 3, 47, 13, 50, 115, 34,
-			0, 4, 108, 1, 10, 2, 32, 3, 47, 13, 55, 0, 108, 1, 21, 2, 111, 0, 108, 1, 117, 101, 108, 115, 0, 108, 116, 106, 105, 101,
-			3, 47, 13, 55, 49, 37, 0, 108, 115, 1, 10, 2, 32, 3, 47, 13, 55, 89, 0, 108, 101, 117, 114, 3, 47, 13, 55, 128, 34, 0,
-			118, 111, 114, 101, 3, 47, 13, 83, 6, 117, 34, 13, 0, 118, 101, 114, 8, 2, 21, 3, 47, 13, 83, 13, 34, 0, 115, 97, 109, 101,
-			3, 47, 13, 89, 115, 65, 13, 0, 103, 101, 8, 2, 17, 67, 17, 65, 3, 47, 13, 136, 13, 0, 114, 117, 103, 8, 2, 14, 128, 132,
-			133, 3, 47, 14, 34, 6, 111, 136, 0, 114, 117, 103, 103, 101, 8, 2, 21, 14, 128, 132, 135, 3, 47, 14, 34, 6, 111, 136, 13, 0,
-			1, 17, 67, 2, 116, 106, 105, 101, 3, 47, 37, 0, 2, 107, 107, 105, 101, 12, 3, 47, 108, 0, 114, 114, 105, 195, 171, 114, 3, 47,
-			108, 34, 37, 13, 34, 0, 107, 115, 2, 12, 3, 47, 108, 49, 89, 0, 110, 2, 100, 101, 114, 3, 47, 108, 50, 0, 110, 110, 105, 115,
-			3, 47, 108, 50, 13, 89, 0, 110, 116, 2, 32, 3, 47, 108, 50, 47, 0, 110, 116, 101, 2, 32, 3, 47, 108, 50, 47, 13, 0, 109,
-			112, 111, 2, 32, 3, 47, 108, 65, 48, 2, 40, 0, 109, 112, 101, 114, 3, 47, 108, 65, 48, 13, 34, 0, 109, 112, 101, 108, 3, 47,
-			108, 65, 48, 13, 55, 0, 4, 1, 17, 67, 21, 2, 103, 110, 3, 47, 112, 0, 1, 17, 67, 21, 2, 107, 32, 0, 1, 17, 67, 21,
-			2, 108, 98, 111, 114, 100, 0, 1, 17, 67, 21, 2, 108, 108, 0, 1, 17, 67, 21, 2, 110, 107, 0, 2, 108, 0, 114, 109, 1, 21,
-			2, 32, 3, 47, 112, 34, 13, 65, 0, 114, 114, 97, 2, 99, 3, 47, 112, 34, 35, 0, 114, 116, 1, 10, 3, 47, 112, 34, 47, 0,
-			114, 109, 101, 1, 21, 2, 32, 3, 47, 112, 34, 65, 13, 0, 114, 116, 105, 8, 2, 17, 65, 25, 3, 47, 112, 34, 91, 57, 0, 108,
-			1, 101, 103, 2, 32, 3, 47, 112, 55, 0, 4, 108, 101, 1, 21, 2, 102, 111, 3, 47, 112, 55, 13, 0, 108, 101, 1, 21, 2, 103,
-			114, 97, 0, 108, 101, 107, 115, 3, 47, 112, 55, 108, 49, 89, 0, 4, 114, 116, 1, 115, 10, 2, 97, 97, 110, 3, 47, 113, 34, 47,
-			0, 114, 116, 1, 115, 10, 2, 101, 32, 0, 4, 1, 21, 2, 102, 105, 101, 32, 3, 47, 116, 0, 1, 21, 2, 108, 101, 114, 0, 1,
-			110, 105, 115, 2, 116, 105, 0, 1, 110, 121, 109, 2, 114, 105, 110, 103, 0, 1, 115, 2, 107, 105, 110, 103, 0, 4, 114, 105, 110, 103,
-			1, 115, 101, 108, 111, 109, 3, 47, 116, 34, 13, 68, 0, 114, 105, 110, 103, 8, 0, 4, 107, 1, 21, 2, 101, 110, 3, 47, 116, 49,
-			0, 107, 1, 112, 97, 2, 17, 65, 0, 107, 101, 110, 2, 17, 65, 3, 47, 116, 49, 13, 50, 0, 108, 101, 114, 8, 3, 47, 116, 55,
-			13, 34, 0, 119, 101, 2, 32, 3, 47, 116, 84, 13, 0, 119, 101, 110, 115, 8, 3, 47, 116, 84, 13, 50, 89, 0, 115, 105, 2, 115,
-			3, 47, 116, 89, 13, 0, 105, 107, 101, 110, 3, 47, 123, 49, 13, 50, 0, 7, 6, 116, 114, 0, 101, 107, 101, 110, 3, 47, 10, 34,
-			116, 49, 13, 50, 0, 97, 2, 106, 101, 107, 3, 47, 34, 2, 35, 0, 97, 112, 2, 115, 111, 101, 3, 47, 34, 2, 35, 48, 0, 97,
-			107, 8, 2, 116, 97, 3, 47, 34, 2, 35, 49, 0, 4, 97, 110, 115, 8, 2, 21, 14, 128, 132, 133, 3, 47, 34, 2, 35, 50, 89,
-			0, 97, 110, 115, 8, 2, 97, 107, 115, 105, 101, 0, 97, 110, 115, 101, 110, 100, 101, 110, 116, 2, 17, 65, 3, 47, 34, 2, 35, 50,
-			89, 2, 108, 50, 72, 2, 108, 50, 47, 0, 97, 110, 115, 105, 116, 111, 3, 47, 34, 2, 35, 50, 89, 37, 47, 2, 40, 0, 97, 110,
-			115, 112, 97, 2, 114, 97, 110, 116, 3, 47, 34, 2, 35, 50, 89, 48, 13, 0, 97, 110, 115, 112, 111, 114, 116, 3, 47, 34, 2, 35,
-			50, 89, 48, 110, 34, 47, 0, 97, 110, 115, 105, 115, 116, 111, 114, 3, 47, 34, 2, 35, 50, 89, 109, 89, 47, 13, 34, 0, 97, 100,
-			105, 2, 115, 105, 3, 47, 34, 2, 35, 72, 37, 0, 97, 103, 2, 101, 100, 3, 47, 34, 2, 35, 136, 0, 105, 2, 111, 109, 102, 3,
-			47, 34, 2, 37, 0, 105, 111, 109, 102, 2, 97, 110, 116, 3, 47, 34, 2, 37, 2, 110, 65, 83, 0, 4, 111, 2, 116, 115, 101, 101,
-			114, 3, 47, 34, 2, 110, 0, 111, 2, 116, 115, 101, 114, 105, 110, 103, 0, 4, 111, 109, 8, 2, 98, 3, 47, 34, 2, 110, 65, 0,
-			111, 109, 8, 2, 112, 101, 116, 0, 111, 103, 108, 111, 2, 100, 105, 101, 3, 47, 34, 2, 110, 136, 55, 2, 40, 0, 117, 2, 115, 116,
-			101, 101, 3, 47, 34, 2, 111, 0, 97, 103, 101, 2, 111, 116, 111, 109, 105, 3, 47, 34, 2, 115, 136, 2, 37, 0, 105, 115, 101, 1,
-			21, 2, 32, 3, 47, 34, 6, 37, 89, 13, 0, 105, 115, 101, 115, 1, 21, 2, 32, 3, 47, 34, 6, 37, 89, 13, 89, 0, 101, 101,
-			114, 1, 21, 3, 47, 34, 6, 116, 34, 0, 111, 117, 115, 115, 101, 97, 117, 3, 47, 34, 7, 40, 12, 89, 120, 0, 105, 8, 2, 98,
-			117, 3, 47, 34, 13, 0, 105, 108, 2, 106, 111, 101, 110, 3, 47, 34, 13, 55, 0, 105, 98, 117, 8, 2, 110, 97, 3, 47, 34, 13,
-			71, 2, 118, 0, 97, 112, 2, 111, 114, 114, 3, 47, 34, 35, 48, 10, 0, 97, 119, 2, 97, 3, 47, 34, 35, 84, 6, 0, 105, 111,
-			2, 32, 3, 47, 34, 37, 12, 40, 0, 101, 102, 2, 97, 102, 115, 3, 47, 34, 108, 83, 10, 0, 105, 118, 105, 97, 3, 47, 34, 109,
-			84, 37, 57, 2, 35, 0, 101, 2, 107, 3, 47, 34, 112, 0, 101, 107, 107, 101, 114, 3, 47, 34, 112, 49, 13, 34, 0, 97, 110, 115,
-			8, 2, 100, 97, 110, 115, 3, 47, 34, 115, 50, 89, 0, 101, 101, 114, 1, 21, 2, 17, 65, 3, 47, 34, 116, 34, 0, 101, 100, 105,
-			110, 103, 1, 10, 3, 47, 34, 116, 72, 13, 68, 0, 4, 117, 2, 112, 114, 111, 106, 101, 107, 3, 47, 34, 118, 0, 117, 2, 115, 112,
-			105, 101, 195, 171, 0, 117, 107, 2, 97, 97, 116, 115, 3, 47, 34, 118, 49, 0, 101, 110, 115, 2, 32, 3, 47, 34, 134, 50, 89, 0,
-			7, 6, 117, 105, 0, 116, 2, 100, 97, 103, 101, 110, 3, 2, 127, 0, 4, 116, 2, 98, 117, 110, 100, 3, 2, 127, 47, 0, 116, 2,
-			100, 114, 117, 107, 0, 116, 2, 104, 117, 105, 115, 105, 103, 0, 116, 2, 109, 117, 110, 116, 101, 110, 0, 116, 2, 115, 108, 117, 105, 116,
-			101, 110, 0, 116, 2, 115, 112, 97, 116, 116, 0, 116, 2, 115, 116, 101, 107, 101, 110, 0, 116, 2, 118, 111, 101, 114, 98, 97, 0, 116,
-			2, 118, 111, 101, 114, 105, 103, 0, 116, 2, 119, 105, 115, 98, 97, 0, 116, 2, 101, 101, 110, 3, 2, 127, 47, 10, 0, 116, 101, 101,
-			110, 2, 108, 111, 112, 3, 2, 127, 47, 10, 2, 116, 50, 0, 116, 109, 101, 2, 107, 97, 97, 114, 3, 2, 127, 47, 65, 13, 0, 116,
-			115, 116, 97, 97, 110, 2, 17, 67, 3, 2, 127, 47, 89, 47, 115, 50, 0, 116, 115, 112, 114, 101, 101, 107, 108, 3, 2, 127, 47, 89,
-			48, 34, 116, 49, 55, 0, 116, 115, 112, 97, 116, 108, 105, 107, 3, 2, 127, 47, 89, 48, 35, 47, 55, 13, 49, 0, 116, 115, 108, 117,
-			105, 116, 108, 105, 107, 3, 2, 127, 47, 89, 55, 127, 47, 55, 13, 49, 0, 116, 115, 111, 110, 100, 101, 114, 108, 105, 2, 107, 3, 2,
-			127, 47, 89, 110, 50, 13, 34, 55, 13, 0, 116, 101, 105, 110, 100, 101, 108, 105, 3, 2, 127, 47, 123, 50, 72, 13, 55, 13, 0, 116,
-			8, 2, 21, 14, 128, 132, 131, 3, 6, 127, 47, 0, 116, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 127, 47, 136, 13, 0, 116,
-			103, 101, 101, 2, 12, 3, 6, 127, 47, 136, 116, 0, 4, 3, 127, 0, 2, 116, 106, 105, 101, 0, 101, 2, 17, 67, 3, 127, 13, 0,
-			4, 116, 2, 100, 114, 117, 107, 32, 24, 3, 127, 47, 0, 116, 2, 100, 114, 117, 107, 107, 105, 110, 103, 32, 0, 116, 2, 100, 114, 117,
-			107, 107, 105, 110, 103, 115, 0, 116, 2, 101, 101, 110, 108, 111, 111, 112, 3, 127, 47, 10, 0, 116, 101, 114, 3, 127, 47, 13, 34, 0,
-			116, 105, 110, 103, 3, 127, 47, 13, 68, 0, 116, 107, 101, 2, 110, 3, 127, 47, 49, 108, 0, 116, 115, 116, 97, 97, 110, 2, 114, 3,
-			127, 47, 89, 47, 115, 50, 0, 116, 103, 101, 119, 101, 114, 3, 127, 47, 136, 2, 116, 84, 13, 34, 0, 116, 103, 101, 119, 101, 114, 112,
-			3, 127, 47, 136, 13, 84, 112, 34, 48, 0, 116, 103, 101, 119, 101, 114, 107, 3, 127, 47, 136, 13, 84, 112, 34, 49, 0, 7, 6, 118,
-			101, 0, 4, 1, 21, 2, 32, 3, 21, 0, 115, 1, 17, 65, 2, 32, 0, 116, 101, 2, 114, 97, 3, 83, 2, 108, 47, 13, 0, 114,
-			116, 105, 2, 107, 97, 3, 83, 2, 112, 34, 47, 2, 37, 0, 4, 101, 108, 2, 100, 117, 105, 100, 3, 83, 2, 116, 55, 0, 101, 108,
-			2, 106, 97, 114, 0, 101, 108, 2, 115, 21, 21, 0, 114, 2, 107, 121, 107, 101, 114, 3, 83, 6, 113, 34, 0, 114, 103, 101, 115, 111,
-			103, 8, 3, 83, 6, 113, 34, 38, 136, 13, 89, 110, 136, 0, 114, 101, 110, 100, 2, 32, 3, 83, 6, 116, 34, 13, 50, 47, 0, 114,
-			101, 110, 100, 101, 3, 83, 6, 116, 34, 13, 50, 72, 13, 0, 114, 105, 110, 103, 3, 83, 6, 116, 34, 13, 68, 0, 108, 101, 3, 83,
-			6, 116, 55, 13, 0, 114, 115, 102, 8, 3, 83, 7, 112, 34, 89, 83, 0, 114, 2, 115, 112, 114, 105, 110, 103, 3, 83, 7, 113, 34,
-			0, 4, 114, 3, 83, 13, 34, 0, 114, 2, 102, 108, 101, 110, 17, 67, 0, 114, 2, 102, 114, 105, 115, 0, 114, 2, 118, 101, 108, 17,
-			65, 0, 114, 8, 2, 21, 14, 128, 132, 131, 0, 114, 97, 110, 116, 2, 119, 3, 83, 13, 34, 2, 35, 50, 47, 0, 114, 111, 110, 103,
-			101, 8, 2, 21, 14, 128, 132, 135, 3, 83, 13, 34, 6, 131, 68, 136, 13, 0, 4, 114, 97, 110, 116, 2, 119, 111, 111, 114, 100, 32,
-			3, 83, 13, 34, 10, 35, 50, 47, 0, 114, 97, 110, 116, 2, 119, 111, 111, 114, 100, 101, 32, 24, 0, 114, 101, 114, 2, 105, 110, 103,
-			3, 83, 13, 34, 10, 116, 34, 0, 114, 116, 101, 2, 108, 3, 83, 13, 34, 47, 112, 0, 114, 116, 101, 114, 2, 17, 65, 3, 83, 13,
-			34, 47, 116, 34, 0, 114, 108, 97, 110, 103, 115, 2, 97, 3, 83, 13, 34, 55, 6, 35, 68, 89, 0, 114, 98, 101, 116, 101, 3, 83,
-			13, 34, 71, 6, 116, 47, 13, 0, 114, 98, 121, 3, 83, 13, 34, 71, 123, 0, 4, 114, 102, 2, 105, 3, 83, 13, 34, 83, 0, 114,
-			102, 2, 114, 111, 109, 0, 114, 102, 8, 2, 108, 111, 117, 0, 114, 102, 8, 2, 111, 0, 114, 118, 101, 114, 115, 105, 110, 103, 3, 83,
-			13, 34, 83, 6, 112, 34, 89, 13, 68, 0, 114, 102, 121, 110, 3, 83, 13, 34, 83, 6, 123, 50, 0, 114, 115, 116, 101, 114, 1, 21,
-			2, 107, 3, 83, 13, 34, 89, 47, 112, 34, 0, 114, 111, 110, 100, 101, 114, 115, 116, 101, 2, 108, 3, 83, 13, 34, 110, 50, 13, 34,
-			89, 47, 6, 112, 0, 114, 103, 101, 116, 101, 3, 83, 13, 34, 136, 6, 116, 47, 13, 0, 114, 103, 101, 119, 101, 8, 3, 83, 13, 34,
-			136, 116, 84, 13, 0, 4, 110, 2, 100, 117, 115, 105, 101, 3, 83, 13, 50, 0, 110, 2, 121, 110, 0, 2, 115, 116, 3, 83, 108, 0,
-			116, 8, 2, 17, 65, 3, 83, 108, 47, 10, 0, 2, 108, 3, 83, 112, 0, 114, 2, 103, 101, 115, 105, 103, 3, 83, 112, 34, 0, 4,
-			114, 102, 3, 83, 112, 34, 83, 0, 114, 102, 2, 21, 0, 114, 119, 101, 2, 32, 3, 83, 112, 34, 84, 13, 0, 114, 119, 101, 114, 2,
-			32, 3, 83, 112, 34, 84, 13, 34, 0, 114, 119, 101, 114, 121, 3, 83, 112, 34, 84, 13, 34, 2, 123, 0, 114, 119, 101, 114, 115, 3,
-			83, 112, 34, 84, 13, 34, 89, 0, 4, 114, 115, 1, 21, 2, 32, 3, 83, 112, 34, 89, 0, 114, 115, 1, 21, 2, 101, 32, 0, 114,
-			115, 2, 100, 0, 114, 115, 2, 107, 117, 110, 115, 0, 114, 115, 2, 114, 0, 114, 115, 2, 118, 0, 114, 115, 8, 2, 98, 0, 114, 115,
-			101, 1, 17, 67, 2, 32, 3, 83, 112, 34, 89, 13, 0, 108, 100, 2, 17, 67, 3, 83, 112, 55, 47, 0, 4, 108, 100, 2, 101, 107,
-			115, 3, 83, 112, 55, 47, 10, 0, 108, 100, 2, 111, 0, 4, 103, 2, 101, 101, 110, 3, 83, 112, 136, 10, 0, 103, 2, 111, 0, 4,
-			114, 1, 17, 67, 21, 2, 32, 3, 83, 113, 34, 0, 114, 2, 114, 101, 105, 107, 0, 114, 2, 115, 105, 101, 32, 0, 114, 2, 115, 105,
-			101, 115, 32, 0, 114, 108, 97, 110, 103, 115, 8, 3, 83, 113, 34, 55, 35, 68, 89, 0, 4, 114, 115, 2, 107, 97, 108, 17, 67, 3,
-			83, 113, 34, 89, 0, 114, 115, 2, 112, 97, 110, 111, 114, 0, 114, 115, 2, 97, 108, 98, 117, 109, 3, 83, 113, 34, 89, 10, 0, 114,
-			115, 101, 2, 98, 3, 83, 113, 34, 89, 13, 0, 114, 103, 101, 2, 115, 116, 114, 101, 107, 3, 83, 113, 34, 136, 13, 0, 4, 114, 101,
-			2, 32, 3, 83, 116, 34, 13, 0, 114, 101, 2, 98, 0, 114, 101, 2, 100, 111, 0, 114, 101, 2, 104, 0, 114, 101, 2, 107, 0, 114,
-			101, 2, 109, 0, 114, 101, 2, 115, 116, 111, 0, 114, 101, 2, 118, 0, 4, 116, 111, 8, 2, 114, 101, 103, 3, 83, 116, 47, 2, 40,
-			0, 116, 111, 8, 2, 115, 116, 101, 109, 0, 116, 101, 2, 29, 3, 83, 116, 47, 13, 0, 116, 101, 114, 2, 25, 3, 83, 116, 47, 13,
-			34, 0, 108, 1, 21, 2, 17, 65, 3, 83, 116, 55, 0, 110, 2, 115, 116, 101, 114, 3, 83, 134, 50, 0, 114, 105, 102, 105, 2, 21,
-			3, 84, 2, 108, 34, 2, 37, 83, 2, 37, 0, 110, 2, 100, 101, 116, 116, 97, 3, 84, 2, 108, 50, 0, 4, 114, 2, 98, 97, 97,
-			108, 3, 84, 2, 112, 34, 0, 114, 2, 98, 97, 108, 17, 65, 0, 114, 115, 105, 102, 105, 2, 17, 67, 3, 84, 2, 112, 34, 89, 2,
-			37, 83, 2, 37, 0, 114, 115, 101, 1, 17, 65, 25, 2, 32, 3, 84, 6, 112, 34, 89, 13, 0, 114, 97, 110, 100, 97, 3, 84, 13,
-			34, 35, 50, 72, 35, 0, 114, 98, 101, 110, 97, 3, 84, 13, 34, 71, 116, 50, 2, 35, 0, 110, 101, 2, 115, 105, 17, 65, 3, 84,
-			13, 50, 37, 12, 0, 114, 1, 111, 114, 116, 2, 25, 3, 84, 112, 34, 0, 2, 110, 117, 115, 3, 84, 116, 0, 7, 6, 118, 111, 0,
-			114, 2, 32, 3, 21, 0, 4, 2, 107, 97, 3, 83, 2, 40, 0, 8, 2, 109, 101, 0, 2, 108, 17, 67, 3, 83, 2, 110, 0, 4,
-			108, 2, 98, 114, 105, 110, 103, 3, 83, 2, 110, 55, 0, 108, 2, 103, 114, 111, 101, 105, 0, 108, 2, 107, 111, 109, 101, 0, 108, 2,
-			101, 105, 110, 100, 105, 103, 3, 83, 2, 110, 55, 10, 0, 108, 108, 101, 2, 100, 105, 103, 3, 83, 2, 110, 55, 116, 0, 4, 111, 114,
-			2, 107, 111, 109, 98, 97, 3, 83, 2, 117, 34, 0, 111, 114, 2, 115, 105, 101, 0, 111, 114, 2, 115, 112, 111, 101, 100, 105, 0, 111,
-			114, 8, 2, 100, 101, 108, 105, 103, 0, 111, 114, 8, 2, 107, 111, 109, 17, 65, 0, 4, 111, 114, 2, 97, 102, 103, 97, 97, 110, 3,
-			83, 2, 117, 34, 10, 0, 111, 114, 116, 2, 100, 117, 114, 101, 110, 0, 111, 114, 116, 2, 118, 21, 21, 3, 83, 2, 117, 34, 47, 0,
-			111, 114, 119, 97, 97, 114, 100, 101, 2, 32, 3, 83, 2, 117, 34, 84, 115, 34, 72, 13, 0, 111, 114, 115, 116, 101, 100, 101, 108, 105,
-			2, 107, 3, 83, 2, 117, 34, 89, 47, 116, 72, 13, 55, 13, 0, 111, 114, 115, 107, 114, 105, 102, 116, 101, 108, 105, 2, 107, 3, 83,
-			2, 117, 34, 89, 49, 34, 109, 83, 47, 13, 55, 13, 0, 111, 103, 2, 100, 121, 3, 83, 2, 117, 136, 0, 101, 114, 105, 103, 1, 21,
-			3, 83, 6, 40, 34, 13, 136, 0, 108, 111, 112, 3, 83, 6, 110, 55, 10, 110, 48, 0, 114, 101, 110, 3, 83, 6, 117, 34, 13, 50,
-			0, 111, 114, 98, 101, 8, 2, 21, 14, 128, 132, 134, 3, 83, 6, 117, 34, 71, 13, 0, 111, 114, 103, 101, 8, 2, 21, 14, 128, 132,
-			134, 3, 83, 6, 117, 34, 136, 13, 0, 108, 2, 109, 97, 103, 3, 83, 7, 110, 55, 0, 4, 2, 108, 108, 17, 65, 32, 3, 83, 110,
-			0, 2, 108, 108, 101, 114, 0, 114, 109, 3, 83, 110, 34, 13, 65, 0, 114, 115, 116, 105, 2, 110, 3, 83, 110, 34, 89, 47, 6, 109,
-			0, 4, 108, 2, 98, 3, 83, 110, 55, 0, 108, 2, 103, 0, 108, 2, 104, 111, 117, 32, 0, 108, 2, 109, 97, 97, 110, 0, 108, 2,
-			109, 97, 110, 101, 0, 108, 2, 112, 114, 111, 112, 0, 108, 2, 114, 0, 108, 2, 115, 105, 17, 67, 0, 108, 2, 115, 116, 101, 32, 0,
-			108, 2, 115, 116, 111, 0, 108, 8, 2, 115, 107, 0, 108, 108, 101, 115, 2, 32, 3, 83, 110, 55, 13, 89, 0, 108, 116, 121, 100, 115,
-			3, 83, 110, 55, 47, 123, 47, 89, 0, 108, 107, 3, 83, 110, 55, 49, 0, 108, 107, 101, 3, 83, 110, 55, 49, 13, 0, 108, 119, 97,
-			115, 115, 101, 3, 83, 110, 55, 84, 6, 35, 89, 13, 0, 108, 108, 2, 101, 110, 103, 116, 101, 3, 83, 110, 55, 108, 0, 4, 111, 114,
-			2, 115, 107, 3, 83, 117, 34, 0, 111, 114, 2, 116, 114, 97, 112, 0, 111, 114, 2, 116, 114, 101, 107, 0, 111, 114, 8, 2, 98, 101,
-			101, 12, 0, 111, 114, 2, 17, 65, 3, 83, 117, 34, 10, 0, 111, 114, 117, 105, 116, 8, 3, 83, 117, 34, 10, 6, 127, 47, 0, 111,
-			114, 98, 97, 114, 3, 83, 117, 34, 71, 6, 115, 34, 0, 111, 114, 119, 97, 97, 114, 100, 101, 2, 32, 24, 3, 83, 117, 34, 84, 115,
-			34, 72, 13, 0, 111, 114, 115, 112, 101, 2, 108, 25, 3, 83, 117, 34, 89, 48, 6, 112, 0, 111, 114, 117, 105, 116, 2, 115, 116, 114,
-			101, 119, 3, 83, 117, 34, 127, 47, 6, 0, 108, 117, 109, 101, 3, 84, 2, 110, 55, 118, 65, 13, 0, 100, 107, 97, 3, 84, 110, 47,
-			49, 35, 0, 7, 6, 119, 101, 0, 8, 2, 108, 108, 21, 21, 3, 84, 2, 112, 0, 114, 107, 2, 115, 116, 101, 108, 108, 105, 3, 84,
-			2, 112, 34, 49, 0, 4, 108, 2, 115, 107, 97, 112, 101, 3, 84, 2, 112, 55, 0, 108, 2, 115, 112, 114, 101, 107, 101, 110, 0, 108,
-			2, 119, 105, 108, 0, 108, 8, 2, 114, 0, 108, 8, 2, 118, 0, 108, 8, 2, 101, 100, 101, 108, 3, 84, 2, 112, 55, 10, 0, 108,
-			98, 101, 104, 97, 97, 103, 108, 105, 107, 3, 84, 2, 112, 55, 71, 13, 107, 115, 136, 55, 13, 49, 0, 101, 2, 109, 111, 101, 100, 105,
-			3, 84, 2, 116, 0, 4, 101, 114, 2, 98, 97, 114, 115, 116, 3, 84, 2, 116, 34, 0, 101, 114, 2, 104, 111, 117, 0, 101, 114, 2,
-			107, 97, 97, 116, 115, 0, 101, 114, 2, 108, 101, 103, 0, 101, 114, 2, 108, 195, 170, 0, 101, 114, 2, 115, 116, 97, 97, 110, 0, 101,
-			114, 2, 115, 116, 114, 101, 119, 0, 101, 116, 2, 103, 105, 101, 114, 105, 103, 3, 84, 2, 116, 47, 0, 100, 101, 114, 2, 118, 97, 3,
-			84, 2, 116, 72, 13, 34, 0, 107, 107, 101, 110, 100, 1, 21, 3, 84, 6, 108, 49, 13, 50, 47, 0, 107, 107, 101, 110, 100, 101, 1,
-			21, 3, 84, 6, 108, 49, 13, 50, 72, 13, 0, 110, 100, 105, 103, 1, 21, 3, 84, 6, 108, 50, 72, 13, 136, 0, 103, 103, 101, 8,
-			2, 17, 67, 21, 14, 128, 132, 133, 3, 84, 6, 112, 136, 13, 0, 115, 105, 103, 104, 101, 105, 100, 1, 21, 3, 84, 6, 116, 89, 13,
-			136, 123, 47, 0, 114, 1, 17, 65, 2, 17, 65, 17, 65, 3, 84, 13, 34, 0, 110, 101, 1, 10, 2, 32, 3, 84, 13, 50, 13, 0,
-			110, 115, 1, 101, 110, 3, 84, 13, 50, 89, 0, 1, 17, 67, 21, 2, 116, 25, 3, 84, 108, 0, 4, 100, 1, 21, 2, 115, 116, 114,
-			3, 84, 108, 47, 0, 100, 1, 115, 2, 17, 67, 0, 100, 121, 119, 101, 114, 3, 84, 108, 47, 123, 84, 13, 34, 0, 110, 8, 2, 97,
-			17, 67, 3, 84, 108, 50, 19, 0, 98, 8, 3, 84, 108, 71, 0, 100, 100, 1, 115, 2, 21, 3, 84, 108, 72, 0, 114, 112, 3, 84,
-			112, 34, 48, 0, 114, 107, 1, 116, 3, 84, 112, 34, 49, 0, 114, 119, 101, 108, 3, 84, 112, 34, 84, 13, 55, 0, 108, 2, 118, 97,
-			97, 114, 116, 3, 84, 112, 55, 0, 108, 102, 2, 32, 3, 84, 112, 55, 83, 0, 4, 103, 1, 21, 2, 32, 3, 84, 112, 136, 0, 103,
-			1, 114, 111, 111, 112, 115, 0, 103, 1, 25, 2, 111, 3, 84, 112, 136, 10, 0, 101, 114, 1, 115, 17, 65, 2, 32, 3, 84, 116, 34,
-			0, 101, 114, 8, 2, 115, 112, 3, 84, 116, 34, 6, 0, 114, 101, 1, 101, 103, 3, 84, 116, 34, 13, 0, 114, 105, 110, 103, 1, 17,
-			67, 21, 2, 32, 3, 84, 116, 34, 13, 68, 0, 116, 101, 110, 2, 17, 67, 3, 84, 116, 47, 13, 50, 0, 107, 101, 8, 2, 17, 67,
-			3, 84, 116, 49, 13, 0, 101, 115, 1, 21, 2, 32, 3, 84, 116, 89, 0, 105, 102, 101, 2, 108, 3, 84, 123, 83, 13, 0, 110, 115,
-			1, 115, 101, 101, 102, 3, 84, 134, 50, 89, 0, 7, 6, 97, 0, 4, 1, 17, 67, 2, 17, 67, 115, 105, 101, 114, 3, 2, 35, 0,
-			1, 17, 67, 2, 114, 105, 110, 97, 0, 1, 17, 67, 2, 116, 101, 114, 105, 110, 103, 0, 1, 17, 67, 11, 2, 32, 0, 1, 17, 67,
-			17, 65, 2, 32, 0, 1, 17, 67, 21, 2, 116, 105, 101, 102, 0, 1, 17, 67, 21, 2, 116, 105, 101, 119, 101, 0, 1, 21, 2, 17,
-			67, 105, 115, 97, 115, 105, 101, 0, 1, 21, 2, 17, 67, 105, 115, 101, 101, 114, 0, 1, 21, 2, 17, 67, 105, 115, 101, 114, 105, 110,
-			103, 0, 1, 98, 10, 2, 32, 0, 1, 100, 2, 103, 111, 103, 103, 101, 110, 0, 1, 100, 10, 2, 32, 0, 1, 105, 2, 32, 0, 1,
-			105, 2, 116, 105, 101, 17, 67, 0, 1, 106, 2, 112, 97, 110, 0, 1, 109, 21, 2, 116, 105, 101, 107, 0, 1, 109, 114, 10, 2, 32,
-			0, 1, 114, 10, 2, 32, 0, 1, 116, 10, 2, 32, 24, 0, 2, 17, 67, 17, 65, 17, 65, 0, 2, 17, 67, 121, 0, 2, 102, 102,
-			108, 105, 107, 0, 2, 103, 105, 116, 17, 65, 0, 2, 103, 111, 110, 105, 101, 0, 2, 103, 117, 114, 107, 105, 101, 0, 2, 107, 107, 111,
-			111, 114, 100, 0, 2, 108, 97, 114, 109, 0, 2, 108, 105, 115, 109, 101, 0, 2, 108, 105, 116, 101, 105, 116, 0, 2, 109, 101, 110, 116,
-			0, 2, 114, 105, 115, 116, 111, 107, 114, 0, 2, 115, 105, 101, 108, 0, 2, 115, 112, 101, 114, 115, 105, 101, 0, 2, 116, 111, 109, 17,
-			65, 0, 8, 2, 98, 17, 67, 0, 8, 2, 102, 102, 17, 65, 0, 8, 2, 107, 117, 0, 8, 2, 107, 119, 97, 116, 0, 8, 2, 108,
-			17, 65, 0, 8, 2, 108, 108, 111, 111, 105, 0, 8, 2, 108, 108, 117, 0, 8, 2, 112, 17, 67, 0, 8, 2, 112, 111, 0, 8, 2,
-			115, 116, 114, 17, 65, 0, 8, 107, 2, 110, 17, 65, 0, 102, 2, 118, 97, 108, 108, 105, 103, 0, 4, 114, 1, 25, 2, 112, 117, 105,
-			115, 3, 2, 35, 34, 0, 114, 2, 103, 97, 195, 175, 0, 114, 2, 109, 111, 101, 100, 105, 103, 0, 114, 2, 115, 101, 101, 110, 0, 114,
-			2, 116, 105, 107, 101, 108, 0, 114, 8, 2, 103, 105, 0, 114, 8, 2, 111, 109, 0, 114, 97, 2, 98, 105, 101, 114, 3, 2, 35, 34,
-			2, 35, 0, 114, 97, 98, 101, 2, 115, 107, 3, 2, 35, 34, 2, 35, 71, 108, 0, 114, 101, 2, 111, 108, 17, 65, 3, 2, 35, 34,
-			2, 37, 0, 114, 114, 111, 2, 103, 3, 2, 35, 34, 2, 40, 0, 114, 121, 1, 108, 101, 107, 107, 111, 109, 115, 21, 21, 21, 3, 2,
-			35, 34, 2, 123, 0, 114, 114, 101, 2, 115, 116, 17, 65, 3, 2, 35, 34, 13, 0, 4, 114, 109, 2, 108, 97, 115, 116, 3, 2, 35,
-			34, 14, 65, 0, 114, 109, 2, 115, 97, 108, 105, 103, 0, 114, 116, 105, 107, 117, 3, 2, 35, 34, 47, 2, 37, 49, 2, 118, 0, 114,
-			116, 101, 2, 102, 97, 107, 3, 2, 35, 34, 47, 13, 0, 114, 116, 105, 108, 108, 101, 2, 114, 105, 101, 3, 2, 35, 34, 47, 13, 55,
-			13, 0, 114, 116, 101, 8, 2, 114, 105, 3, 2, 35, 34, 47, 116, 0, 114, 115, 101, 2, 110, 97, 3, 2, 35, 34, 89, 13, 0, 114,
-			114, 101, 115, 2, 32, 3, 2, 35, 34, 108, 89, 0, 114, 97, 2, 98, 105, 3, 2, 35, 34, 115, 0, 114, 101, 110, 97, 2, 25, 12,
-			3, 2, 35, 34, 116, 50, 2, 35, 0, 114, 103, 2, 108, 105, 115, 116, 3, 2, 35, 34, 136, 0, 114, 103, 105, 116, 101, 107, 3, 2,
-			35, 34, 136, 2, 37, 47, 108, 49, 0, 114, 103, 101, 2, 116, 105, 112, 3, 2, 35, 34, 136, 13, 0, 114, 103, 101, 110, 2, 116, 17,
-			65, 3, 2, 35, 34, 136, 13, 50, 0, 4, 100, 2, 118, 105, 101, 115, 3, 2, 35, 47, 0, 116, 2, 108, 97, 110, 116, 0, 116, 2,
-			108, 101, 0, 116, 116, 101, 115, 116, 2, 17, 65, 3, 2, 35, 47, 2, 108, 89, 47, 0, 116, 111, 114, 105, 101, 115, 1, 21, 3, 2,
-			35, 47, 6, 117, 34, 37, 89, 0, 4, 116, 101, 1, 115, 2, 108, 3, 2, 35, 47, 13, 0, 116, 104, 101, 1, 17, 67, 2, 114, 105,
-			110, 97, 0, 116, 114, 111, 2, 102, 105, 101, 3, 2, 35, 47, 34, 2, 40, 0, 116, 116, 114, 105, 98, 2, 117, 3, 2, 35, 47, 34,
-			13, 71, 0, 116, 108, 101, 2, 116, 105, 101, 107, 3, 2, 35, 47, 55, 13, 0, 100, 109, 105, 2, 114, 3, 2, 35, 47, 65, 2, 37,
-			0, 116, 109, 111, 2, 115, 102, 101, 3, 2, 35, 47, 65, 2, 110, 0, 100, 109, 105, 110, 105, 3, 2, 35, 47, 65, 13, 50, 13, 0,
-			100, 109, 105, 2, 115, 115, 105, 101, 3, 2, 35, 47, 65, 37, 0, 116, 101, 108, 2, 106, 101, 101, 3, 2, 35, 47, 114, 0, 112, 111,
-			2, 107, 114, 105, 101, 17, 67, 3, 2, 35, 48, 2, 40, 0, 112, 111, 107, 97, 2, 108, 3, 2, 35, 48, 2, 110, 49, 2, 35, 0,
-			112, 111, 108, 111, 103, 2, 17, 65, 3, 2, 35, 48, 2, 110, 55, 2, 40, 136, 0, 112, 112, 101, 2, 108, 108, 17, 65, 3, 2, 35,
-			48, 13, 0, 112, 112, 97, 114, 2, 17, 65, 3, 2, 35, 48, 13, 34, 0, 112, 112, 101, 108, 8, 2, 107, 111, 21, 3, 2, 35, 48,
-			13, 55, 0, 112, 111, 115, 116, 111, 2, 108, 105, 101, 3, 2, 35, 48, 13, 89, 47, 117, 0, 112, 112, 114, 111, 112, 114, 105, 2, 17,
-			65, 3, 2, 35, 48, 34, 2, 117, 48, 34, 2, 37, 0, 112, 97, 114, 116, 3, 2, 35, 48, 35, 34, 47, 0, 112, 112, 108, 105, 2,
-			107, 97, 110, 116, 3, 2, 35, 48, 55, 2, 37, 0, 98, 115, 111, 2, 108, 117, 3, 2, 35, 48, 89, 2, 40, 0, 98, 115, 101, 2,
-			115, 3, 2, 35, 48, 89, 108, 0, 112, 112, 101, 110, 2, 100, 105, 17, 67, 3, 2, 35, 48, 108, 50, 0, 107, 2, 115, 121, 110, 3,
-			2, 35, 49, 0, 107, 111, 2, 17, 67, 105, 101, 116, 3, 2, 35, 49, 2, 40, 0, 107, 107, 111, 109, 109, 111, 2, 100, 3, 2, 35,
-			49, 2, 110, 65, 13, 0, 107, 107, 117, 2, 114, 97, 3, 2, 35, 49, 2, 118, 0, 107, 97, 2, 100, 101, 21, 3, 2, 35, 49, 13,
-			0, 107, 107, 101, 100, 105, 3, 2, 35, 49, 13, 72, 109, 0, 107, 114, 111, 2, 98, 97, 3, 2, 35, 49, 34, 2, 40, 0, 107, 116,
-			117, 97, 114, 105, 2, 17, 65, 3, 2, 35, 49, 47, 2, 118, 2, 35, 34, 2, 37, 0, 107, 119, 97, 114, 101, 2, 108, 3, 2, 35,
-			49, 58, 2, 35, 34, 112, 0, 107, 119, 97, 109, 97, 2, 114, 121, 110, 3, 2, 35, 49, 58, 2, 35, 65, 2, 35, 0, 107, 97, 2,
-			115, 105, 97, 3, 2, 35, 49, 115, 0, 110, 111, 2, 110, 105, 21, 3, 2, 35, 50, 2, 40, 0, 110, 116, 101, 114, 105, 110, 103, 3,
-			2, 35, 50, 47, 116, 34, 13, 68, 0, 4, 108, 2, 98, 97, 115, 116, 101, 114, 3, 2, 35, 55, 0, 108, 2, 98, 105, 110, 111, 0,
-			108, 2, 106, 97, 110, 100, 101, 114, 0, 108, 8, 2, 119, 101, 0, 108, 117, 2, 109, 105, 110, 105, 117, 109, 3, 2, 35, 55, 2, 40,
-			0, 108, 101, 120, 2, 97, 3, 2, 35, 55, 2, 108, 49, 88, 0, 108, 101, 107, 115, 97, 110, 100, 2, 114, 121, 3, 2, 35, 55, 2,
-			108, 49, 89, 2, 35, 50, 72, 0, 4, 108, 105, 8, 17, 67, 2, 102, 111, 114, 110, 105, 3, 2, 35, 55, 13, 0, 108, 108, 101, 2,
-			109, 105, 110, 116, 0, 108, 108, 101, 114, 2, 103, 105, 101, 32, 24, 3, 2, 35, 55, 13, 34, 0, 108, 8, 2, 101, 119, 105, 103, 3,
-			2, 35, 55, 38, 0, 108, 107, 111, 104, 111, 108, 2, 105, 101, 25, 3, 2, 35, 55, 49, 2, 40, 107, 117, 55, 0, 108, 109, 97, 2,
-			110, 97, 107, 3, 2, 35, 55, 65, 2, 35, 0, 108, 102, 97, 98, 101, 2, 116, 17, 65, 3, 2, 35, 55, 83, 2, 35, 71, 116, 0,
-			108, 108, 101, 114, 2, 103, 105, 101, 3, 2, 35, 55, 112, 34, 0, 108, 108, 101, 2, 110, 17, 65, 3, 2, 35, 55, 116, 0, 108, 108,
-			101, 101, 110, 3, 2, 35, 55, 116, 50, 0, 108, 99, 104, 101, 2, 109, 105, 3, 2, 35, 55, 136, 2, 116, 0, 108, 103, 101, 2, 114,
-			121, 110, 3, 2, 35, 55, 136, 13, 0, 4, 109, 8, 2, 17, 65, 3, 2, 35, 65, 0, 109, 8, 2, 110, 17, 65, 0, 109, 97, 114,
-			117, 108, 97, 3, 2, 35, 65, 2, 35, 34, 40, 55, 2, 35, 0, 109, 97, 115, 111, 110, 101, 3, 2, 35, 65, 2, 35, 89, 117, 50,
-			13, 0, 109, 117, 2, 17, 67, 17, 65, 3, 2, 35, 65, 2, 118, 0, 109, 112, 105, 2, 111, 101, 110, 3, 2, 35, 65, 48, 2, 37,
-			0, 109, 98, 97, 115, 115, 2, 97, 100, 101, 3, 2, 35, 65, 71, 2, 35, 89, 0, 109, 98, 97, 115, 115, 97, 2, 100, 101, 117, 3,
-			2, 35, 65, 71, 2, 35, 89, 2, 35, 0, 109, 98, 117, 2, 108, 3, 2, 35, 65, 71, 2, 118, 0, 109, 101, 114, 2, 105, 107, 3,
-			2, 35, 65, 116, 34, 0, 109, 109, 111, 2, 110, 105, 17, 65, 3, 2, 35, 65, 117, 0, 98, 111, 8, 2, 17, 67, 3, 2, 35, 71,
-			110, 0, 4, 98, 101, 108, 1, 116, 3, 2, 35, 71, 112, 55, 0, 98, 101, 108, 108, 1, 116, 0, 100, 111, 108, 101, 115, 115, 101, 110,
-			3, 2, 35, 72, 2, 117, 55, 13, 89, 108, 50, 0, 100, 114, 101, 110, 97, 2, 108, 105, 3, 2, 35, 72, 34, 13, 50, 2, 35, 0,
-			100, 114, 101, 2, 25, 3, 2, 35, 72, 34, 108, 0, 103, 97, 2, 112, 97, 110, 116, 3, 2, 35, 81, 2, 35, 0, 4, 102, 2, 103,
-			117, 110, 115, 116, 105, 103, 3, 2, 35, 83, 0, 102, 2, 104, 97, 110, 107, 0, 102, 2, 115, 105, 103, 116, 101, 0, 102, 2, 115, 107,
-			117, 119, 0, 102, 2, 115, 121, 100, 105, 103, 0, 102, 2, 119, 97, 103, 116, 101, 110, 0, 102, 8, 2, 107, 101, 114, 105, 103, 0, 102,
-			8, 2, 107, 111, 109, 115, 116, 105, 103, 0, 102, 102, 111, 2, 100, 105, 108, 3, 2, 35, 83, 2, 40, 0, 118, 111, 107, 97, 100, 101,
-			3, 2, 35, 83, 2, 40, 49, 115, 72, 13, 0, 118, 111, 107, 97, 100, 111, 3, 2, 35, 83, 2, 40, 49, 115, 72, 40, 0, 102, 114,
-			105, 107, 2, 97, 97, 110, 3, 2, 35, 83, 34, 2, 37, 49, 0, 102, 114, 105, 107, 97, 110, 101, 2, 25, 3, 2, 35, 83, 34, 2,
-			37, 49, 115, 50, 13, 0, 4, 102, 114, 111, 2, 100, 105, 116, 3, 2, 35, 83, 34, 2, 40, 0, 112, 104, 114, 111, 2, 100, 105, 116,
-			0, 102, 102, 114, 111, 2, 110, 116, 3, 2, 35, 83, 34, 2, 110, 0, 102, 119, 101, 115, 105, 103, 3, 2, 35, 83, 84, 116, 89, 13,
-			136, 0, 102, 115, 116, 111, 111, 116, 108, 3, 2, 35, 83, 89, 47, 117, 47, 55, 0, 102, 115, 111, 110, 100, 101, 114, 108, 3, 2, 35,
-			83, 89, 110, 50, 13, 34, 55, 0, 102, 103, 114, 121, 115, 108, 105, 107, 3, 2, 35, 83, 136, 34, 123, 89, 55, 13, 49, 0, 118, 111,
-			110, 116, 117, 2, 114, 105, 101, 114, 3, 2, 35, 84, 2, 110, 50, 47, 2, 118, 0, 115, 8, 2, 107, 101, 3, 2, 35, 89, 0, 115,
-			115, 117, 2, 114, 97, 110, 3, 2, 35, 89, 2, 111, 0, 115, 115, 111, 115, 105, 2, 17, 65, 3, 2, 35, 89, 2, 117, 91, 2, 37,
-			0, 115, 115, 101, 2, 103, 97, 97, 105, 3, 2, 35, 89, 13, 0, 115, 115, 105, 115, 116, 3, 2, 35, 89, 13, 89, 47, 0, 115, 112,
-			105, 8, 2, 114, 17, 65, 3, 2, 35, 89, 48, 2, 37, 0, 115, 112, 101, 107, 3, 2, 35, 89, 48, 108, 49, 0, 115, 107, 105, 116,
-			101, 8, 3, 2, 35, 89, 49, 37, 47, 13, 0, 115, 107, 97, 114, 105, 3, 2, 35, 89, 49, 115, 34, 2, 37, 0, 115, 98, 101, 115,
-			8, 3, 2, 35, 89, 71, 108, 89, 0, 115, 115, 101, 2, 115, 115, 111, 114, 3, 2, 35, 89, 108, 0, 115, 115, 105, 115, 1, 114, 2,
-			25, 3, 2, 35, 89, 109, 89, 0, 103, 111, 110, 105, 101, 2, 32, 24, 3, 2, 35, 136, 2, 40, 50, 37, 0, 103, 116, 101, 2, 108,
-			111, 115, 105, 103, 3, 2, 35, 136, 47, 13, 0, 4, 103, 116, 101, 114, 2, 98, 97, 107, 3, 2, 35, 136, 47, 13, 34, 0, 103, 116,
-			101, 114, 2, 100, 111, 103, 116, 0, 103, 116, 101, 114, 2, 108, 111, 115, 105, 103, 0, 103, 116, 101, 114, 2, 109, 105, 100, 100, 97, 0,
-			103, 116, 101, 114, 2, 115, 116, 97, 108, 108, 0, 103, 116, 101, 114, 2, 118, 111, 108, 103, 0, 103, 116, 101, 114, 2, 111, 111, 114, 3,
-			2, 35, 136, 47, 13, 34, 10, 0, 103, 116, 101, 114, 101, 101, 110, 2, 118, 111, 108, 103, 3, 2, 35, 136, 47, 13, 34, 10, 2, 116,
-			50, 0, 103, 116, 101, 114, 2, 117, 105, 116, 3, 2, 35, 136, 47, 13, 34, 19, 0, 103, 101, 110, 116, 3, 2, 35, 136, 108, 50, 47,
-			0, 103, 101, 110, 100, 97, 3, 2, 35, 136, 108, 50, 72, 2, 35, 0, 103, 101, 2, 114, 101, 110, 100, 3, 2, 35, 136, 116, 0, 117,
-			103, 117, 115, 116, 117, 115, 3, 2, 110, 136, 111, 89, 47, 111, 89, 0, 2, 112, 111, 108, 105, 116, 105, 3, 2, 115, 0, 117, 115, 116,
-			114, 97, 3, 2, 117, 89, 47, 34, 115, 0, 195, 171, 2, 114, 111, 98, 105, 3, 2, 121, 0, 118, 111, 110, 2, 116, 3, 4, 35, 84,
-			110, 50, 0, 108, 103, 101, 109, 101, 101, 110, 3, 6, 35, 55, 136, 13, 65, 4, 116, 50, 0, 102, 8, 2, 21, 14, 128, 132, 130, 3,
-			6, 35, 83, 0, 102, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 35, 83, 136, 13, 0, 102, 103, 101, 101, 2, 12, 3, 6, 35,
-			83, 136, 116, 0, 103, 116, 101, 114, 103, 101, 8, 2, 21, 14, 128, 132, 135, 3, 6, 35, 136, 47, 13, 34, 136, 13, 0, 103, 116, 105,
-			103, 1, 10, 3, 6, 35, 136, 47, 13, 136, 0, 4, 1, 105, 2, 116, 105, 101, 115, 3, 6, 115, 0, 2, 114, 105, 17, 65, 0, 8,
-			17, 67, 2, 17, 67, 105, 101, 32, 0, 116, 111, 114, 1, 21, 2, 25, 3, 6, 115, 47, 110, 34, 0, 98, 101, 108, 1, 116, 107, 101,
-			112, 115, 3, 6, 115, 71, 13, 55, 0, 98, 105, 101, 1, 17, 67, 3, 6, 115, 71, 37, 0, 100, 8, 17, 67, 114, 97, 2, 17, 65,
-			3, 6, 115, 72, 0, 100, 105, 103, 1, 21, 3, 6, 115, 72, 13, 136, 0, 100, 105, 101, 115, 1, 17, 67, 17, 65, 3, 6, 115, 72,
-			37, 89, 0, 115, 105, 101, 1, 17, 67, 3, 6, 115, 89, 37, 0, 103, 116, 101, 114, 8, 2, 101, 110, 3, 7, 35, 136, 47, 13, 34,
-			10, 0, 116, 116, 97, 99, 104, 195, 169, 3, 10, 2, 35, 47, 2, 35, 91, 116, 0, 4, 99, 107, 2, 32, 3, 21, 0, 121, 2, 32,
-			0, 121, 115, 2, 32, 0, 4, 105, 110, 101, 2, 32, 3, 21, 102, 114, 0, 105, 114, 101, 1, 21, 2, 32, 0, 4, 1, 17, 67, 2,
-			120, 17, 65, 12, 3, 35, 0, 1, 107, 10, 2, 32, 0, 1, 116, 115, 2, 116, 105, 115, 116, 0, 2, 17, 67, 0, 8, 2, 98, 98,
-			97, 0, 2, 100, 114, 101, 115, 3, 35, 6, 0, 114, 121, 1, 108, 101, 17, 67, 3, 35, 34, 6, 123, 0, 114, 109, 101, 115, 8, 3,
-			35, 34, 19, 65, 13, 89, 0, 100, 8, 112, 2, 17, 65, 3, 35, 47, 0, 116, 116, 101, 110, 2, 17, 67, 3, 35, 47, 6, 108, 50,
-			0, 116, 111, 114, 101, 1, 21, 2, 32, 3, 35, 47, 6, 117, 34, 13, 0, 116, 116, 101, 110, 2, 100, 3, 35, 47, 13, 50, 0, 112,
-			112, 8, 2, 17, 65, 3, 35, 48, 0, 112, 112, 195, 168, 108, 3, 35, 48, 6, 112, 55, 0, 4, 112, 1, 17, 67, 2, 111, 111, 114,
-			3, 35, 48, 10, 0, 112, 1, 17, 67, 2, 111, 114, 101, 32, 0, 108, 105, 8, 2, 107, 114, 17, 65, 3, 35, 55, 2, 37, 0, 108,
-			111, 195, 171, 3, 35, 55, 6, 40, 13, 0, 108, 111, 111, 103, 3, 35, 55, 6, 117, 136, 0, 108, 111, 103, 105, 101, 115, 3, 35, 55,
-			6, 117, 136, 37, 89, 0, 108, 108, 101, 8, 2, 17, 67, 3, 35, 55, 13, 0, 108, 111, 109, 8, 2, 21, 3, 35, 55, 19, 110, 65,
-			0, 108, 111, 103, 105, 101, 3, 35, 55, 40, 136, 6, 37, 0, 108, 107, 111, 104, 111, 108, 3, 35, 55, 49, 2, 40, 2, 110, 55, 0,
-			108, 109, 101, 2, 108, 101, 3, 35, 55, 65, 13, 0, 108, 102, 97, 98, 101, 2, 116, 25, 3, 35, 55, 83, 35, 71, 108, 0, 109, 97,
-			110, 100, 101, 108, 3, 35, 65, 6, 35, 50, 72, 13, 55, 0, 109, 112, 101, 114, 8, 3, 35, 65, 48, 13, 34, 0, 100, 106, 117, 110,
-			107, 3, 35, 72, 57, 6, 111, 68, 49, 0, 115, 1, 17, 67, 21, 2, 32, 3, 35, 89, 0, 103, 116, 8, 2, 117, 117, 114, 3, 35,
-			136, 47, 0, 103, 116, 101, 114, 110, 97, 3, 35, 136, 47, 13, 34, 50, 6, 115, 0, 4, 3, 115, 0, 1, 17, 67, 2, 17, 67, 105,
-			97, 32, 0, 1, 109, 97, 116, 2, 116, 105, 101, 107, 0, 1, 114, 98, 17, 67, 2, 32, 0, 1, 114, 100, 10, 2, 32, 0, 1, 114,
-			118, 10, 2, 32, 0, 1, 119, 2, 116, 101, 114, 105, 110, 103, 0, 2, 17, 67, 17, 65, 0, 2, 17, 67, 105, 101, 0, 2, 104, 108,
-			101, 32, 0, 8, 2, 115, 105, 195, 171, 0, 101, 0, 104, 2, 17, 67, 0, 114, 101, 1, 17, 67, 2, 17, 67, 17, 65, 3, 115, 34,
-			13, 0, 114, 101, 110, 100, 115, 3, 115, 34, 13, 50, 47, 89, 10, 0, 114, 101, 97, 3, 115, 34, 37, 35, 0, 116, 114, 105, 117, 109,
-			3, 115, 47, 34, 37, 111, 65, 0, 108, 105, 97, 3, 115, 55, 2, 37, 2, 35, 0, 100, 101, 109, 8, 3, 115, 72, 13, 65, 0, 100,
-			105, 117, 1, 17, 67, 2, 25, 3, 115, 72, 37, 111, 0, 102, 101, 108, 1, 17, 67, 2, 21, 3, 115, 83, 13, 55, 0, 102, 114, 105,
-			107, 97, 3, 115, 83, 34, 37, 49, 35, 0, 4, 115, 105, 101, 1, 21, 21, 21, 21, 3, 115, 89, 2, 37, 0, 115, 105, 101, 1, 108,
-			112, 0, 115, 105, 101, 1, 112, 115, 21, 0, 115, 101, 109, 3, 115, 89, 13, 65, 0, 4, 115, 105, 101, 1, 17, 67, 11, 17, 67, 3,
-			115, 89, 37, 0, 115, 105, 101, 1, 98, 117, 111, 0, 115, 105, 101, 1, 108, 103, 0, 115, 105, 101, 1, 109, 114, 111, 102, 21, 0, 115,
-			105, 101, 1, 116, 115, 17, 65, 17, 65, 0, 115, 105, 101, 1, 116, 115, 17, 67, 0, 103, 105, 101, 1, 17, 67, 3, 115, 136, 37, 0,
-			117, 1, 25, 3, 120, 0, 4, 2, 100, 106, 105, 101, 3, 121, 0, 105, 0, 116, 106, 105, 101, 3, 121, 80, 37, 0, 101, 110, 2, 116,
-			106, 105, 101, 3, 122, 68, 0, 100, 106, 105, 101, 3, 122, 80, 37, 0, 117, 3, 129, 0, 117, 101, 114, 3, 129, 13, 34, 0, 7, 6,
-			98, 0, 2, 98, 3, 0, 117, 114, 121, 1, 21, 2, 32, 3, 21, 0, 2, 32, 24, 3, 48, 0, 4, 3, 71, 0, 2, 101, 101, 110,
-			116, 106, 105, 101, 12, 12, 0, 4, 105, 2, 115, 97, 114, 3, 71, 2, 37, 0, 105, 2, 122, 97, 0, 105, 8, 2, 103, 97, 0, 105,
-			115, 97, 110, 2, 116, 121, 110, 3, 71, 2, 37, 89, 2, 35, 50, 0, 4, 111, 2, 98, 111, 116, 105, 101, 3, 71, 2, 40, 0, 111,
-			2, 104, 97, 97, 105, 0, 111, 2, 104, 101, 0, 111, 101, 2, 100, 100, 104, 105, 0, 111, 101, 2, 116, 115, 101, 101, 114, 0, 4, 111,
-			101, 114, 2, 103, 111, 110, 100, 3, 71, 2, 40, 34, 0, 111, 101, 114, 2, 105, 110, 0, 111, 101, 107, 101, 2, 116, 25, 3, 71, 2,
-			40, 49, 108, 0, 117, 108, 2, 103, 97, 3, 71, 2, 40, 55, 0, 117, 108, 108, 101, 2, 116, 105, 110, 3, 71, 2, 40, 55, 13, 0,
-			111, 114, 8, 2, 100, 17, 65, 21, 3, 71, 2, 110, 34, 0, 111, 107, 109, 97, 2, 107, 105, 101, 114, 3, 71, 2, 110, 49, 65, 2,
-			35, 0, 111, 110, 115, 109, 97, 114, 97, 3, 71, 2, 110, 50, 89, 65, 115, 34, 2, 35, 0, 111, 98, 98, 101, 2, 106, 3, 71, 2,
-			110, 71, 13, 0, 117, 114, 2, 108, 101, 115, 107, 3, 71, 2, 111, 34, 0, 117, 102, 102, 101, 2, 116, 3, 71, 2, 111, 83, 108, 0,
-			111, 2, 116, 97, 110, 105, 101, 3, 71, 2, 117, 0, 111, 116, 97, 2, 110, 105, 101, 32, 24, 3, 71, 2, 117, 47, 2, 35, 0, 111,
-			111, 115, 2, 97, 97, 114, 100, 105, 103, 3, 71, 2, 117, 89, 10, 0, 117, 114, 2, 111, 107, 114, 97, 3, 71, 2, 118, 34, 0, 117,
-			114, 111, 3, 71, 2, 118, 34, 117, 0, 4, 121, 2, 107, 111, 109, 21, 3, 71, 2, 123, 0, 121, 2, 118, 111, 111, 114, 98, 0, 121,
-			2, 101, 101, 110, 3, 71, 2, 123, 10, 0, 121, 100, 101, 114, 2, 17, 67, 21, 3, 71, 2, 123, 72, 13, 34, 0, 121, 119, 111, 111,
-			114, 100, 101, 108, 105, 3, 71, 2, 123, 84, 117, 34, 72, 13, 55, 13, 0, 121, 103, 101, 2, 108, 111, 119, 105, 3, 71, 2, 123, 136,
-			13, 0, 121, 8, 2, 116, 101, 108, 14, 128, 132, 130, 3, 71, 6, 123, 0, 121, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 71, 6,
-			123, 136, 13, 0, 117, 105, 116, 101, 110, 2, 103, 101, 3, 71, 6, 127, 47, 13, 50, 0, 111, 101, 112, 101, 110, 115, 3, 71, 7, 40,
-			48, 134, 50, 89, 0, 111, 119, 101, 8, 3, 71, 7, 117, 84, 13, 0, 98, 101, 2, 114, 114, 3, 71, 13, 0, 105, 107, 105, 110, 105,
-			3, 71, 13, 49, 37, 50, 37, 0, 105, 108, 2, 106, 3, 71, 13, 55, 0, 105, 98, 108, 105, 2, 111, 17, 67, 3, 71, 13, 71, 55,
-			2, 37, 12, 2, 0, 114, 97, 118, 2, 17, 65, 3, 71, 34, 2, 35, 84, 0, 114, 97, 115, 105, 2, 108, 105, 3, 71, 34, 2, 35,
-			89, 109, 0, 114, 111, 2, 115, 106, 117, 3, 71, 34, 2, 110, 0, 114, 111, 2, 109, 105, 3, 71, 34, 2, 117, 0, 114, 117, 2, 116,
-			97, 3, 71, 34, 2, 118, 0, 114, 105, 101, 119, 101, 8, 2, 17, 67, 3, 71, 34, 7, 37, 84, 13, 0, 114, 105, 108, 2, 106, 97,
-			110, 116, 3, 71, 34, 13, 55, 0, 114, 101, 100, 97, 8, 3, 71, 34, 13, 72, 115, 0, 114, 97, 110, 100, 2, 114, 3, 71, 34, 35,
-			50, 47, 0, 114, 97, 110, 100, 2, 97, 3, 71, 34, 35, 50, 47, 10, 0, 114, 97, 110, 100, 2, 111, 3, 71, 34, 35, 50, 47, 19,
-			0, 114, 111, 110, 2, 17, 65, 21, 3, 71, 34, 110, 50, 10, 0, 114, 97, 105, 108, 108, 101, 3, 71, 34, 123, 12, 55, 10, 0, 114,
-			101, 105, 100, 101, 108, 3, 71, 34, 123, 72, 13, 55, 0, 111, 101, 114, 101, 3, 71, 40, 12, 34, 13, 0, 111, 117, 108, 101, 118, 97,
-			114, 100, 3, 71, 40, 55, 13, 84, 35, 34, 72, 0, 4, 108, 97, 2, 116, 97, 110, 116, 3, 71, 55, 2, 35, 0, 108, 97, 8, 2,
-			109, 101, 0, 108, 111, 101, 2, 100, 100, 111, 114, 115, 21, 3, 71, 55, 2, 40, 0, 4, 108, 111, 101, 100, 2, 115, 107, 101, 110, 100,
-			105, 103, 3, 71, 55, 2, 40, 47, 0, 108, 111, 101, 100, 2, 115, 116, 111, 108, 0, 4, 108, 111, 8, 2, 107, 107, 97, 3, 71, 55,
-			2, 110, 0, 108, 111, 8, 2, 107, 107, 101, 101, 114, 0, 108, 111, 110, 2, 100, 105, 110, 101, 3, 71, 55, 2, 110, 50, 0, 108, 121,
-			2, 109, 111, 101, 100, 3, 71, 55, 2, 123, 0, 108, 97, 100, 2, 17, 65, 3, 71, 55, 35, 47, 10, 0, 108, 105, 107, 8, 2, 17,
-			65, 3, 71, 55, 109, 49, 10, 0, 108, 111, 109, 2, 97, 107, 107, 101, 114, 3, 71, 55, 110, 65, 10, 0, 105, 100, 8, 3, 71, 109,
-			47, 10, 0, 105, 110, 110, 101, 3, 71, 109, 50, 13, 0, 105, 108, 108, 105, 2, 107, 3, 71, 109, 55, 13, 0, 105, 100, 100, 3, 71,
-			109, 72, 0, 111, 114, 100, 101, 2, 114, 3, 71, 110, 34, 72, 13, 0, 111, 107, 2, 111, 111, 105, 3, 71, 110, 49, 10, 0, 111, 110,
-			100, 101, 2, 17, 67, 3, 71, 110, 50, 72, 13, 0, 111, 109, 2, 17, 65, 17, 65, 3, 71, 110, 65, 10, 0, 111, 110, 103, 111, 8,
-			3, 71, 110, 68, 81, 40, 0, 111, 115, 99, 104, 2, 32, 3, 71, 110, 89, 0, 111, 115, 2, 17, 65, 21, 3, 71, 110, 89, 19, 0,
-			4, 111, 2, 103, 114, 111, 110, 100, 3, 71, 117, 0, 111, 2, 115, 107, 114, 105, 102, 0, 111, 2, 118, 0, 111, 8, 2, 107, 108, 101,
-			0, 111, 116, 97, 8, 2, 110, 105, 17, 67, 17, 65, 3, 71, 117, 47, 7, 115, 0, 111, 109, 97, 97, 110, 115, 3, 71, 117, 65, 115,
-			50, 89, 0, 111, 119, 101, 110, 3, 71, 117, 84, 13, 50, 6, 0, 121, 98, 101, 108, 3, 71, 123, 71, 13, 55, 0, 117, 105, 116, 101,
-			3, 71, 127, 47, 13, 0, 4, 117, 105, 116, 101, 110, 2, 115, 116, 101, 3, 71, 127, 47, 13, 50, 0, 117, 105, 116, 101, 110, 2, 116,
-			0, 117, 105, 116, 101, 110, 3, 71, 127, 47, 13, 50, 6, 0, 7, 6, 99, 0, 2, 99, 3, 0, 4, 101, 2, 32, 3, 21, 0, 101,
-			108, 1, 21, 2, 32, 0, 104, 97, 116, 0, 108, 101, 1, 21, 2, 32, 0, 121, 2, 32, 0, 4, 3, 49, 0, 104, 2, 108, 0, 104,
-			2, 114, 111, 0, 107, 0, 104, 97, 2, 114, 105, 115, 109, 97, 3, 49, 2, 35, 0, 97, 108, 2, 118, 17, 65, 3, 49, 2, 35, 55,
-			0, 97, 108, 97, 109, 97, 114, 105, 3, 49, 2, 35, 55, 2, 35, 65, 115, 34, 2, 37, 0, 104, 111, 114, 101, 2, 111, 103, 114, 97,
-			3, 49, 2, 110, 34, 2, 37, 0, 111, 108, 111, 109, 98, 105, 2, 97, 21, 3, 49, 2, 110, 55, 2, 110, 65, 71, 2, 37, 0, 104,
-			111, 108, 101, 115, 116, 101, 114, 111, 108, 3, 49, 2, 110, 55, 108, 89, 47, 14, 34, 2, 110, 55, 0, 108, 105, 99, 104, 195, 169, 3,
-			49, 55, 2, 37, 91, 116, 0, 111, 114, 110, 101, 2, 108, 105, 3, 49, 110, 34, 50, 7, 116, 0, 104, 111, 108, 101, 114, 97, 3, 49,
-			117, 55, 13, 34, 35, 10, 0, 111, 107, 101, 3, 49, 120, 49, 0, 104, 101, 100, 100, 97, 114, 3, 76, 108, 72, 13, 34, 0, 4, 2,
-			101, 3, 89, 0, 2, 105, 0, 2, 121, 0, 101, 110, 2, 116, 97, 117, 114, 17, 65, 3, 89, 2, 108, 50, 0, 105, 1, 21, 2, 32,
-			3, 89, 6, 37, 0, 121, 2, 114, 105, 108, 108, 105, 101, 3, 89, 13, 0, 105, 8, 2, 112, 114, 17, 65, 3, 89, 37, 0, 104, 97,
-			108, 101, 116, 3, 91, 2, 35, 55, 123, 0, 104, 105, 110, 2, 101, 3, 91, 2, 37, 50, 0, 104, 97, 117, 2, 17, 67, 3, 91, 2,
-			120, 0, 104, 105, 114, 117, 114, 103, 2, 105, 101, 32, 24, 3, 91, 13, 34, 2, 111, 34, 136, 0, 104, 105, 114, 117, 114, 103, 3, 91,
-			13, 34, 111, 34, 136, 0, 4, 104, 3, 136, 0, 104, 8, 0, 104, 101, 109, 105, 107, 97, 2, 108, 105, 3, 136, 2, 116, 65, 2, 37,
-			49, 115, 0, 7, 6, 100, 0, 4, 1, 21, 2, 116, 3, 0, 4, 2, 32, 100, 24, 3, 0, 2, 100, 3, 0, 4, 103, 101, 1, 21,
-			2, 32, 3, 21, 0, 103, 101, 2, 32, 0, 4, 1, 21, 2, 17, 67, 3, 47, 0, 1, 21, 2, 101, 116, 101, 17, 67, 32, 0, 1,
-			21, 2, 114, 97, 97, 109, 0, 1, 21, 2, 114, 111, 111, 115, 0, 1, 21, 2, 114, 111, 115, 101, 32, 0, 1, 21, 2, 114, 111, 115,
-			105, 101, 0, 1, 21, 2, 114, 117, 105, 109, 0, 1, 101, 111, 2, 114, 0, 1, 110, 21, 2, 101, 116, 101, 32, 0, 1, 110, 97, 104,
-			2, 114, 0, 1, 110, 97, 115, 2, 114, 0, 1, 110, 105, 119, 2, 114, 0, 1, 110, 111, 104, 2, 17, 67, 0, 1, 111, 111, 2, 114,
-			0, 2, 32, 0, 2, 114, 105, 101, 109, 32, 0, 4, 1, 17, 65, 2, 97, 103, 116, 105, 103, 3, 47, 10, 0, 1, 21, 2, 101, 105,
-			101, 110, 0, 1, 21, 2, 101, 105, 110, 100, 101, 32, 0, 1, 21, 2, 101, 105, 115, 0, 1, 21, 2, 105, 110, 104, 111, 117, 0, 1,
-			110, 21, 2, 117, 105, 116, 0, 1, 111, 111, 2, 17, 65, 3, 47, 19, 0, 119, 101, 115, 1, 21, 3, 47, 84, 6, 108, 89, 0, 119,
-			105, 108, 108, 105, 103, 1, 21, 3, 47, 84, 6, 109, 55, 13, 136, 0, 119, 101, 115, 101, 1, 21, 3, 47, 84, 116, 89, 13, 0, 115,
-			1, 21, 2, 32, 3, 47, 89, 0, 4, 3, 72, 0, 1, 21, 2, 114, 0, 1, 101, 111, 116, 2, 114, 0, 1, 111, 111, 114, 97, 107,
-			0, 1, 112, 2, 17, 67, 0, 1, 114, 101, 118, 2, 17, 67, 0, 100, 0, 100, 1, 21, 0, 100, 104, 0, 105, 2, 110, 97, 109, 105,
-			101, 3, 72, 2, 37, 0, 105, 97, 2, 17, 67, 3, 72, 2, 37, 2, 35, 0, 105, 97, 107, 111, 2, 110, 105, 101, 3, 72, 2, 37,
-			2, 35, 49, 2, 40, 0, 105, 114, 101, 107, 3, 72, 2, 37, 34, 108, 49, 0, 4, 105, 110, 97, 2, 109, 105, 101, 107, 3, 72, 2,
-			37, 50, 2, 35, 0, 105, 110, 97, 2, 109, 105, 101, 116, 0, 105, 110, 97, 2, 115, 116, 105, 101, 0, 105, 110, 111, 2, 115, 111, 117,
-			3, 72, 2, 37, 50, 2, 40, 0, 105, 101, 110, 115, 2, 119, 105, 108, 108, 105, 3, 72, 2, 37, 50, 89, 0, 105, 97, 107, 101, 110,
-			3, 72, 2, 37, 115, 49, 13, 50, 0, 105, 103, 105, 2, 116, 97, 3, 72, 2, 37, 136, 2, 37, 0, 117, 2, 101, 116, 3, 72, 2,
-			40, 12, 58, 0, 111, 101, 108, 2, 116, 114, 101, 102, 3, 72, 2, 40, 55, 0, 117, 118, 101, 116, 3, 72, 2, 40, 84, 123, 12, 0,
-			111, 101, 97, 110, 101, 3, 72, 2, 40, 115, 50, 13, 0, 111, 2, 115, 115, 105, 101, 114, 3, 72, 2, 110, 0, 111, 108, 2, 102, 121,
-			110, 3, 72, 2, 110, 55, 0, 111, 108, 111, 2, 109, 105, 101, 116, 3, 72, 2, 110, 55, 13, 0, 111, 109, 105, 110, 2, 17, 65, 3,
-			72, 2, 110, 65, 2, 37, 50, 0, 111, 109, 105, 110, 105, 2, 107, 97, 3, 72, 2, 110, 65, 2, 37, 50, 2, 37, 0, 97, 97, 114,
-			111, 112, 2, 118, 3, 72, 2, 115, 34, 2, 110, 48, 0, 97, 97, 114, 101, 110, 2, 116, 101, 3, 72, 2, 115, 34, 13, 50, 0, 97,
-			97, 100, 2, 119, 101, 114, 107, 3, 72, 2, 115, 47, 0, 111, 112, 97, 2, 109, 105, 3, 72, 2, 117, 48, 2, 35, 0, 97, 110, 116,
-			1, 21, 3, 72, 6, 35, 50, 47, 0, 97, 103, 1, 110, 97, 97, 2, 116, 105, 103, 3, 72, 6, 35, 136, 0, 97, 110, 105, 2, 103,
-			104, 3, 72, 6, 115, 50, 13, 0, 97, 109, 101, 115, 8, 3, 72, 6, 115, 65, 13, 89, 0, 111, 109, 105, 110, 101, 101, 2, 32, 3,
-			72, 6, 117, 65, 13, 50, 37, 0, 111, 100, 101, 8, 3, 72, 6, 117, 72, 13, 0, 4, 105, 2, 110, 101, 101, 3, 72, 13, 0, 105,
-			2, 112, 108, 111, 109, 97, 0, 105, 2, 115, 115, 105, 0, 105, 2, 118, 105, 115, 105, 101, 0, 105, 114, 105, 103, 2, 101, 3, 72, 13,
-			34, 13, 136, 0, 100, 101, 114, 100, 1, 21, 2, 32, 3, 72, 13, 34, 47, 0, 105, 112, 108, 111, 2, 109, 97, 116, 3, 72, 13, 48,
-			55, 2, 40, 0, 105, 107, 2, 118, 101, 108, 108, 3, 72, 13, 49, 0, 105, 110, 97, 1, 110, 97, 107, 115, 3, 72, 13, 50, 6, 115,
-			0, 105, 108, 101, 109, 109, 97, 3, 72, 13, 55, 108, 65, 35, 0, 105, 109, 101, 110, 2, 115, 105, 3, 72, 13, 65, 108, 50, 0, 105,
-			110, 103, 97, 97, 110, 3, 72, 13, 68, 81, 115, 50, 0, 105, 118, 105, 100, 101, 2, 110, 100, 3, 72, 13, 84, 13, 72, 108, 0, 4,
-			105, 115, 2, 107, 111, 101, 114, 115, 3, 72, 13, 89, 0, 105, 115, 2, 108, 111, 106, 97, 0, 105, 115, 2, 112, 117, 0, 105, 115, 8,
-			2, 105, 110, 14, 128, 132, 131, 0, 105, 115, 8, 2, 107, 114, 101, 0, 105, 115, 8, 2, 107, 117, 115, 115, 17, 65, 0, 105, 115, 8,
-			2, 111, 14, 128, 132, 131, 0, 105, 115, 8, 2, 116, 0, 105, 115, 115, 105, 112, 101, 108, 2, 105, 110, 3, 72, 13, 89, 2, 37, 48,
-			13, 55, 0, 105, 115, 115, 105, 112, 108, 105, 110, 101, 2, 25, 3, 72, 13, 89, 13, 48, 55, 37, 50, 13, 0, 105, 115, 116, 114, 111,
-			2, 102, 105, 101, 3, 72, 13, 89, 47, 34, 2, 40, 0, 105, 115, 116, 114, 105, 2, 98, 117, 3, 72, 13, 89, 47, 34, 13, 0, 105,
-			115, 107, 114, 101, 2, 115, 3, 72, 13, 89, 49, 34, 108, 0, 105, 103, 101, 114, 115, 3, 72, 13, 136, 13, 34, 89, 0, 105, 103, 116,
-			101, 114, 101, 2, 25, 3, 72, 13, 136, 47, 13, 34, 108, 0, 114, 111, 101, 102, 2, 103, 101, 101, 115, 3, 72, 34, 2, 40, 83, 0,
-			114, 117, 107, 107, 101, 8, 2, 114, 121, 3, 72, 34, 2, 111, 49, 13, 0, 114, 97, 109, 97, 2, 116, 117, 114, 103, 3, 72, 34, 2,
-			115, 65, 2, 35, 0, 114, 97, 2, 115, 116, 105, 101, 3, 72, 34, 35, 0, 114, 105, 108, 2, 17, 65, 3, 72, 34, 109, 55, 0, 114,
-			97, 8, 2, 115, 116, 3, 72, 34, 115, 0, 105, 101, 112, 101, 114, 2, 21, 3, 72, 37, 48, 13, 34, 0, 117, 2, 112, 108, 105, 17,
-			67, 3, 72, 40, 0, 4, 119, 1, 101, 103, 3, 72, 58, 0, 119, 1, 109, 0, 119, 1, 121, 98, 114, 101, 118, 0, 119, 2, 101, 114,
-			103, 0, 119, 101, 108, 109, 2, 32, 3, 72, 58, 112, 55, 14, 65, 0, 105, 2, 103, 25, 3, 72, 109, 0, 105, 115, 116, 101, 108, 3,
-			72, 109, 89, 47, 13, 55, 0, 111, 107, 116, 111, 114, 2, 25, 3, 72, 110, 49, 47, 13, 34, 0, 111, 107, 117, 3, 72, 110, 49, 118,
-			0, 111, 108, 2, 111, 115, 3, 72, 110, 55, 0, 111, 109, 8, 2, 17, 65, 17, 67, 17, 67, 3, 72, 110, 65, 0, 111, 110, 103, 97,
-			3, 72, 110, 68, 81, 35, 0, 97, 116, 101, 1, 105, 100, 110, 97, 107, 2, 17, 67, 3, 72, 115, 47, 13, 0, 97, 110, 105, 195, 171,
-			108, 3, 72, 115, 50, 37, 13, 55, 0, 111, 115, 105, 2, 115, 3, 72, 117, 89, 13, 0, 106, 8, 3, 75, 0, 106, 3, 80, 0, 106,
-			105, 101, 3, 80, 37, 0, 7, 6, 101, 0, 1, 105, 111, 111, 2, 110, 116, 106, 105, 101, 3, 0, 4, 2, 102, 101, 115, 105, 3, 2,
-			37, 0, 2, 109, 111, 115, 105, 0, 8, 2, 108, 108, 105, 112, 25, 0, 8, 108, 101, 105, 115, 2, 116, 106, 105, 101, 0, 108, 101, 107,
-			2, 116, 114, 111, 100, 101, 3, 2, 37, 55, 2, 108, 49, 0, 108, 101, 107, 116, 114, 3, 2, 37, 55, 108, 49, 47, 34, 0, 102, 102,
-			101, 107, 2, 25, 3, 2, 37, 83, 108, 49, 0, 118, 2, 101, 110, 116, 117, 101, 3, 2, 37, 84, 0, 118, 97, 108, 2, 117, 3, 2,
-			37, 84, 2, 35, 55, 0, 115, 115, 101, 110, 2, 115, 105, 3, 2, 37, 89, 108, 50, 0, 4, 1, 108, 108, 101, 116, 110, 105, 2, 107,
-			3, 2, 108, 0, 2, 107, 111, 110, 111, 21, 0, 8, 2, 107, 115, 0, 8, 2, 109, 105, 0, 116, 105, 2, 107, 101, 116, 3, 2, 108,
-			47, 2, 37, 0, 116, 105, 107, 101, 116, 116, 101, 2, 114, 17, 65, 3, 2, 108, 47, 2, 37, 49, 2, 108, 47, 116, 0, 4, 112, 105,
-			2, 100, 101, 17, 67, 3, 2, 108, 48, 2, 37, 0, 112, 105, 8, 2, 17, 67, 0, 112, 111, 117, 2, 108, 101, 116, 3, 2, 108, 48,
-			2, 40, 0, 107, 117, 2, 109, 101, 110, 105, 101, 3, 2, 108, 49, 2, 118, 0, 107, 119, 105, 2, 108, 105, 98, 114, 105, 3, 2, 108,
-			49, 58, 2, 37, 0, 120, 1, 108, 97, 2, 97, 110, 100, 3, 2, 108, 49, 88, 0, 107, 115, 97, 109, 105, 110, 2, 17, 65, 3, 2,
-			108, 49, 89, 2, 35, 65, 2, 37, 50, 0, 107, 115, 101, 2, 108, 108, 101, 110, 17, 67, 3, 2, 108, 49, 89, 13, 0, 107, 115, 101,
-			103, 101, 2, 17, 67, 17, 65, 3, 2, 108, 49, 89, 13, 136, 116, 0, 107, 115, 116, 114, 111, 2, 118, 101, 114, 3, 2, 108, 49, 89,
-			47, 34, 2, 40, 0, 107, 115, 116, 114, 101, 2, 109, 105, 115, 3, 2, 108, 49, 89, 47, 34, 13, 0, 107, 115, 116, 101, 114, 110, 8,
-			3, 2, 108, 49, 89, 47, 112, 34, 14, 50, 0, 107, 115, 112, 108, 105, 2, 115, 105, 101, 116, 3, 2, 108, 49, 89, 48, 55, 13, 0,
-			4, 108, 101, 2, 103, 97, 110, 17, 67, 3, 2, 108, 55, 13, 0, 108, 101, 2, 103, 105, 101, 0, 108, 101, 109, 101, 110, 116, 3, 2,
-			108, 55, 13, 65, 108, 50, 47, 0, 4, 109, 2, 112, 105, 114, 3, 2, 108, 65, 0, 109, 8, 2, 98, 108, 101, 0, 109, 102, 105, 2,
-			115, 101, 101, 109, 3, 2, 108, 65, 83, 2, 37, 0, 119, 111, 2, 108, 117, 115, 105, 3, 2, 108, 84, 2, 110, 0, 115, 8, 2, 107,
-			97, 114, 112, 3, 2, 108, 89, 0, 115, 105, 1, 100, 21, 2, 109, 97, 3, 2, 108, 89, 2, 37, 0, 115, 116, 114, 111, 2, 103, 101,
-			3, 2, 108, 89, 47, 34, 2, 40, 0, 115, 116, 101, 8, 2, 116, 3, 2, 108, 89, 47, 116, 0, 115, 107, 97, 2, 112, 97, 100, 101,
-			3, 2, 108, 89, 49, 13, 0, 115, 107, 97, 100, 101, 114, 3, 2, 108, 89, 49, 115, 72, 13, 34, 0, 114, 107, 101, 2, 110, 12, 3,
-			2, 112, 34, 49, 108, 0, 4, 2, 107, 108, 105, 112, 25, 3, 2, 116, 0, 8, 2, 103, 105, 112, 116, 0, 8, 2, 114, 111, 115, 105,
-			101, 0, 114, 101, 2, 107, 115, 105, 17, 65, 3, 2, 116, 34, 108, 0, 109, 97, 108, 106, 101, 3, 2, 116, 65, 35, 55, 57, 13, 0,
-			119, 101, 8, 2, 114, 101, 100, 3, 2, 116, 84, 13, 0, 119, 101, 119, 105, 103, 2, 116, 105, 103, 3, 2, 116, 84, 13, 84, 109, 136,
-			0, 119, 105, 103, 2, 100, 117, 3, 2, 116, 84, 13, 136, 0, 115, 111, 116, 101, 2, 114, 105, 101, 3, 2, 116, 89, 2, 40, 47, 116,
-			0, 103, 111, 115, 101, 110, 116, 114, 105, 101, 3, 2, 116, 136, 2, 40, 89, 108, 50, 47, 34, 37, 0, 103, 97, 8, 2, 108, 3, 2,
-			116, 136, 115, 0, 105, 101, 110, 97, 97, 114, 100, 105, 103, 3, 2, 123, 13, 50, 115, 34, 72, 13, 136, 0, 117, 2, 102, 111, 114, 105,
-			101, 3, 2, 128, 0, 117, 114, 111, 8, 2, 112, 101, 3, 2, 128, 34, 2, 117, 0, 117, 102, 111, 2, 114, 105, 101, 32, 24, 3, 2,
-			128, 83, 2, 117, 0, 118, 97, 110, 103, 8, 3, 4, 116, 83, 35, 68, 136, 0, 8, 17, 67, 2, 111, 110, 32, 3, 6, 37, 0, 4,
-			1, 17, 67, 2, 115, 107, 32, 12, 12, 3, 6, 108, 0, 1, 17, 67, 2, 115, 107, 101, 32, 12, 12, 0, 1, 17, 67, 21, 2, 115,
-			107, 101, 114, 32, 0, 1, 114, 97, 2, 115, 115, 101, 32, 0, 100, 106, 105, 101, 3, 6, 108, 12, 37, 80, 37, 0, 107, 116, 111, 109,
-			105, 101, 1, 17, 67, 3, 6, 108, 49, 47, 40, 65, 37, 0, 1, 115, 21, 2, 108, 102, 100, 101, 3, 6, 112, 0, 4, 1, 100, 21,
-			2, 115, 101, 32, 12, 3, 6, 116, 0, 1, 112, 2, 114, 105, 110, 103, 0, 1, 112, 101, 111, 114, 2, 114, 105, 110, 103, 0, 4, 114,
-			1, 102, 102, 111, 116, 115, 2, 17, 65, 3, 6, 116, 34, 0, 114, 1, 110, 105, 2, 17, 65, 0, 114, 105, 110, 103, 1, 117, 3, 6,
-			116, 34, 13, 68, 0, 116, 101, 110, 115, 8, 3, 6, 116, 47, 13, 50, 89, 0, 108, 101, 1, 117, 17, 67, 2, 25, 12, 3, 6, 116,
-			55, 13, 0, 105, 1, 114, 2, 115, 101, 110, 3, 6, 123, 0, 105, 107, 101, 8, 3, 6, 123, 49, 13, 0, 105, 110, 1, 21, 2, 100,
-			105, 103, 3, 6, 123, 50, 0, 108, 119, 101, 114, 115, 1, 17, 67, 3, 7, 112, 55, 84, 13, 34, 89, 0, 1, 17, 67, 2, 110, 100,
-			104, 3, 8, 13, 0, 107, 111, 110, 1, 10, 2, 111, 21, 3, 10, 2, 108, 49, 2, 40, 50, 0, 105, 1, 17, 67, 21, 2, 108, 97,
-			110, 100, 3, 10, 4, 123, 0, 105, 1, 21, 2, 115, 101, 110, 3, 10, 6, 123, 0, 114, 116, 115, 1, 21, 2, 32, 3, 10, 112, 34,
-			47, 89, 0, 114, 107, 101, 1, 100, 108, 117, 107, 115, 3, 10, 112, 34, 49, 108, 0, 114, 103, 8, 114, 101, 108, 108, 97, 3, 10, 112,
-			34, 136, 0, 116, 101, 114, 1, 114, 101, 105, 109, 3, 10, 116, 47, 13, 34, 0, 4, 1, 10, 2, 32, 3, 13, 0, 1, 10, 2, 108,
-			17, 67, 32, 0, 1, 10, 2, 108, 32, 0, 1, 10, 2, 109, 32, 0, 1, 10, 2, 114, 32, 0, 1, 17, 67, 2, 104, 0, 1, 17,
-			67, 2, 107, 97, 109, 112, 12, 0, 1, 17, 67, 2, 107, 97, 110, 116, 12, 0, 1, 17, 67, 2, 108, 116, 106, 105, 101, 0, 1, 17,
-			67, 2, 109, 97, 97, 116, 0, 1, 17, 67, 2, 109, 97, 110, 0, 1, 17, 67, 2, 109, 97, 114, 105, 101, 0, 1, 17, 67, 2, 112,
-			97, 100, 0, 1, 17, 67, 2, 112, 97, 110, 0, 1, 17, 67, 2, 116, 111, 101, 32, 0, 1, 17, 67, 2, 118, 0, 1, 17, 67, 2,
-			119, 97, 97, 114, 0, 1, 17, 67, 2, 119, 105, 110, 107, 101, 108, 0, 1, 17, 67, 10, 2, 103, 97, 110, 103, 101, 114, 0, 1, 17,
-			67, 10, 2, 108, 114, 17, 65, 0, 1, 17, 67, 10, 2, 115, 107, 21, 0, 1, 17, 67, 11, 2, 17, 67, 0, 1, 17, 67, 17, 65,
-			2, 108, 104, 0, 1, 17, 67, 17, 65, 17, 67, 2, 17, 67, 17, 67, 0, 1, 17, 67, 17, 65, 17, 67, 2, 114, 114, 0, 1, 17,
-			67, 21, 2, 98, 111, 0, 1, 17, 67, 21, 2, 98, 117, 0, 1, 17, 67, 21, 2, 98, 121, 0, 1, 17, 67, 21, 2, 100, 105, 101,
-			110, 0, 1, 17, 67, 21, 2, 103, 101, 17, 67, 21, 0, 1, 17, 67, 21, 2, 103, 114, 111, 101, 112, 0, 1, 17, 67, 21, 2, 106,
-			0, 1, 17, 67, 21, 2, 107, 111, 100, 101, 25, 0, 1, 17, 67, 21, 2, 107, 111, 109, 21, 0, 1, 17, 67, 21, 2, 109, 97, 97,
-			108, 32, 0, 1, 17, 67, 21, 2, 109, 97, 108, 101, 32, 0, 1, 17, 67, 21, 2, 114, 101, 101, 107, 25, 0, 1, 17, 67, 21, 2,
-			114, 101, 195, 171, 0, 1, 17, 67, 21, 2, 114, 104, 0, 1, 17, 67, 21, 2, 116, 97, 97, 108, 0, 1, 17, 67, 21, 2, 119, 97,
-			32, 0, 1, 17, 67, 21, 2, 119, 97, 101, 110, 0, 1, 17, 67, 101, 111, 17, 67, 2, 17, 67, 12, 0, 1, 17, 67, 105, 117, 2,
-			25, 12, 0, 1, 17, 67, 117, 101, 25, 2, 108, 17, 67, 21, 0, 1, 21, 2, 115, 112, 101, 108, 32, 0, 1, 25, 2, 112, 111, 111,
-			114, 116, 0, 1, 98, 10, 2, 115, 21, 0, 1, 98, 17, 65, 2, 119, 97, 0, 1, 100, 10, 2, 114, 21, 12, 12, 0, 1, 100, 17,
-			67, 2, 116, 114, 0, 1, 100, 21, 2, 98, 108, 0, 1, 100, 21, 2, 107, 108, 97, 115, 0, 1, 100, 21, 2, 107, 114, 0, 1, 100,
-			21, 2, 115, 21, 0, 1, 100, 97, 114, 114, 111, 111, 118, 2, 17, 67, 0, 1, 100, 100, 17, 65, 2, 108, 101, 32, 0, 1, 100, 100,
-			105, 109, 2, 21, 0, 1, 100, 102, 101, 105, 108, 2, 17, 67, 0, 1, 100, 103, 117, 101, 114, 118, 2, 17, 67, 0, 1, 100, 108, 97,
-			97, 110, 2, 17, 67, 0, 1, 100, 108, 101, 101, 119, 2, 119, 17, 65, 0, 1, 100, 108, 101, 112, 115, 2, 17, 67, 0, 1, 100, 108,
-			105, 119, 0, 1, 100, 108, 105, 119, 2, 107, 17, 65, 0, 1, 100, 110, 2, 108, 105, 110, 103, 0, 1, 100, 110, 17, 65, 2, 108, 17,
-			67, 0, 1, 100, 110, 97, 17, 67, 2, 17, 67, 0, 1, 100, 110, 97, 97, 109, 2, 108, 17, 65, 0, 1, 100, 110, 101, 105, 114, 118,
-			2, 17, 67, 0, 1, 100, 110, 105, 108, 98, 2, 17, 67, 21, 0, 1, 100, 110, 105, 108, 98, 2, 108, 105, 110, 103, 0, 1, 100, 110,
-			111, 17, 67, 2, 17, 67, 17, 65, 0, 1, 100, 110, 117, 107, 2, 21, 0, 1, 100, 111, 107, 2, 17, 67, 0, 1, 100, 114, 111, 111,
-			110, 2, 17, 67, 0, 1, 100, 121, 2, 108, 0, 1, 102, 108, 105, 107, 115, 2, 114, 0, 1, 102, 121, 115, 2, 114, 0, 1, 103, 110,
-			97, 108, 115, 2, 17, 67, 0, 1, 103, 110, 105, 17, 67, 2, 108, 17, 65, 0, 1, 103, 110, 105, 17, 67, 2, 108, 17, 67, 21, 0,
-			1, 103, 110, 105, 110, 101, 107, 2, 21, 0, 1, 105, 97, 97, 2, 17, 67, 0, 1, 105, 101, 0, 1, 105, 111, 111, 2, 17, 67, 0,
-			1, 107, 21, 2, 108, 100, 101, 32, 0, 1, 107, 21, 2, 114, 97, 97, 100, 0, 1, 107, 97, 108, 98, 2, 114, 0, 1, 107, 101, 111,
-			2, 17, 67, 0, 1, 107, 110, 2, 108, 17, 67, 0, 1, 107, 110, 17, 65, 2, 114, 21, 0, 1, 107, 110, 105, 119, 2, 108, 0, 1,
-			107, 111, 112, 115, 2, 17, 67, 0, 1, 107, 114, 101, 119, 2, 114, 115, 0, 1, 107, 114, 105, 115, 2, 108, 0, 1, 108, 2, 109, 111,
-			101, 110, 0, 1, 108, 97, 104, 2, 114, 17, 67, 21, 0, 1, 108, 97, 109, 2, 100, 121, 0, 1, 108, 97, 114, 101, 110, 105, 109, 2,
-			17, 67, 0, 1, 108, 101, 119, 117, 106, 2, 17, 67, 0, 1, 108, 105, 101, 114, 116, 2, 114, 17, 67, 0, 1, 108, 108, 105, 119, 2,
-			17, 67, 0, 1, 108, 111, 114, 116, 2, 17, 67, 21, 0, 1, 109, 2, 108, 101, 110, 100, 0, 1, 109, 2, 108, 105, 110, 103, 0, 1,
-			109, 97, 115, 0, 1, 109, 97, 115, 21, 2, 110, 115, 32, 0, 1, 109, 101, 110, 21, 2, 110, 115, 32, 0, 1, 109, 108, 101, 17, 67,
-			2, 116, 25, 0, 1, 109, 111, 107, 21, 2, 110, 115, 32, 0, 1, 109, 111, 115, 2, 114, 0, 1, 109, 114, 2, 114, 116, 106, 105, 101,
-			0, 1, 110, 97, 17, 67, 17, 67, 2, 17, 67, 17, 65, 0, 1, 110, 101, 105, 17, 67, 2, 114, 17, 67, 21, 0, 1, 110, 110, 17,
-			65, 17, 67, 2, 17, 67, 17, 65, 0, 1, 110, 110, 97, 112, 2, 17, 67, 0, 1, 110, 117, 101, 2, 114, 21, 0, 1, 112, 2, 116,
-			97, 108, 106, 101, 0, 1, 112, 2, 116, 97, 108, 106, 101, 0, 1, 112, 17, 65, 2, 108, 105, 110, 103, 0, 1, 112, 17, 65, 17, 67,
-			2, 114, 107, 17, 67, 0, 1, 112, 17, 67, 17, 65, 17, 67, 2, 114, 108, 0, 1, 112, 21, 2, 108, 104, 0, 1, 112, 21, 2, 114,
-			116, 106, 105, 101, 0, 1, 112, 105, 104, 2, 114, 0, 1, 112, 109, 2, 108, 100, 101, 32, 0, 1, 112, 109, 21, 2, 108, 17, 67, 21,
-			0, 1, 112, 109, 111, 107, 2, 116, 21, 0, 1, 112, 112, 2, 17, 67, 21, 12, 0, 1, 112, 114, 2, 114, 17, 67, 17, 67, 0, 1,
-			112, 114, 101, 119, 2, 114, 115, 17, 65, 0, 1, 112, 114, 117, 112, 2, 114, 0, 1, 112, 115, 2, 100, 0, 1, 112, 115, 2, 108, 111,
-			110, 107, 0, 1, 114, 101, 100, 101, 111, 103, 2, 21, 0, 1, 114, 101, 105, 17, 67, 29, 2, 21, 0, 1, 114, 114, 111, 2, 108, 0,
-			1, 115, 10, 2, 108, 21, 0, 1, 115, 25, 2, 110, 97, 0, 1, 115, 100, 110, 97, 104, 101, 100, 2, 17, 67, 21, 0, 1, 115, 101,
-			105, 2, 98, 0, 1, 115, 101, 105, 2, 102, 0, 1, 115, 105, 101, 2, 98, 101, 0, 1, 115, 105, 101, 2, 115, 116, 0, 1, 115, 107,
-			21, 2, 109, 17, 67, 0, 1, 115, 107, 117, 117, 108, 0, 1, 115, 111, 107, 114, 97, 110, 2, 17, 67, 0, 1, 115, 111, 108, 2, 115,
-			0, 1, 115, 111, 114, 2, 17, 67, 17, 65, 0, 1, 115, 117, 101, 114, 2, 21, 0, 1, 115, 117, 111, 112, 2, 17, 67, 0, 1, 116,
-			10, 2, 114, 21, 0, 1, 116, 17, 65, 10, 2, 98, 17, 65, 21, 0, 1, 117, 111, 2, 17, 67, 0, 1, 118, 2, 110, 110, 111, 21,
-			12, 0, 1, 119, 2, 108, 105, 110, 103, 0, 1, 119, 10, 2, 102, 0, 1, 119, 17, 65, 2, 98, 17, 65, 0, 1, 119, 97, 2, 17,
-			67, 21, 0, 1, 119, 101, 107, 115, 2, 17, 67, 0, 1, 119, 101, 108, 2, 110, 115, 0, 1, 119, 108, 97, 104, 2, 25, 0, 1, 119,
-			108, 111, 17, 67, 2, 17, 67, 0, 1, 119, 114, 2, 115, 0, 1, 119, 117, 101, 17, 67, 2, 108, 0, 1, 119, 121, 2, 114, 17, 65,
-			0, 1, 119, 121, 116, 115, 2, 17, 67, 0, 1, 121, 17, 67, 2, 17, 67, 12, 0, 1, 121, 17, 67, 2, 17, 67, 17, 67, 0, 2,
-			17, 67, 111, 117, 120, 0, 2, 110, 97, 114, 101, 115, 32, 0, 8, 100, 97, 2, 108, 17, 67, 0, 8, 100, 105, 101, 109, 2, 17, 67,
-			0, 8, 100, 110, 101, 101, 2, 17, 67, 17, 65, 0, 8, 108, 101, 105, 115, 2, 21, 0, 8, 112, 111, 2, 110, 0, 8, 112, 115, 97,
-			114, 2, 114, 0, 8, 115, 110, 101, 109, 0, 8, 115, 110, 101, 109, 2, 107, 0, 8, 119, 101, 2, 12, 12, 0, 4, 1, 17, 67, 2,
-			114, 106, 3, 13, 6, 0, 1, 114, 112, 114, 101, 116, 110, 105, 2, 116, 17, 65, 0, 4, 1, 17, 67, 2, 117, 105, 116, 3, 13, 10,
-			0, 1, 17, 67, 10, 2, 117, 117, 0, 1, 17, 67, 21, 2, 97, 17, 67, 17, 67, 0, 1, 17, 67, 21, 2, 111, 111, 114, 0, 1,
-			100, 110, 111, 104, 2, 21, 0, 1, 110, 105, 101, 116, 110, 111, 102, 2, 17, 67, 0, 1, 117, 111, 2, 97, 0, 4, 114, 1, 17, 67,
-			21, 2, 116, 121, 100, 3, 13, 34, 0, 114, 1, 102, 102, 2, 21, 0, 114, 1, 105, 17, 65, 2, 17, 65, 0, 114, 1, 105, 101, 108,
-			2, 115, 0, 114, 105, 101, 1, 110, 2, 32, 3, 13, 34, 6, 37, 0, 4, 114, 101, 115, 1, 17, 67, 3, 13, 34, 6, 108, 89, 0,
-			114, 101, 115, 115, 1, 17, 67, 0, 114, 105, 1, 110, 117, 101, 2, 110, 3, 13, 34, 6, 109, 0, 114, 1, 112, 111, 108, 2, 17, 65,
-			3, 13, 34, 10, 0, 114, 101, 1, 10, 2, 32, 3, 13, 34, 13, 0, 114, 101, 115, 1, 116, 97, 108, 3, 13, 34, 13, 89, 0, 4,
-			114, 115, 1, 10, 2, 32, 3, 13, 34, 89, 0, 114, 115, 1, 112, 108, 101, 104, 2, 32, 0, 114, 115, 1, 112, 114, 101, 119, 2, 32,
-			0, 114, 115, 1, 112, 114, 111, 100, 2, 32, 0, 114, 115, 1, 119, 101, 105, 2, 116, 101, 114, 0, 114, 115, 121, 100, 115, 1, 17, 67,
-			3, 13, 34, 89, 123, 47, 89, 0, 114, 101, 1, 115, 110, 97, 100, 21, 2, 25, 3, 13, 34, 108, 0, 114, 105, 103, 1, 25, 10, 3,
-			13, 34, 109, 136, 0, 4, 114, 105, 103, 101, 1, 17, 65, 17, 65, 3, 13, 34, 109, 136, 13, 0, 114, 105, 103, 101, 1, 25, 10, 0,
-			4, 114, 101, 105, 1, 10, 2, 32, 3, 13, 34, 123, 0, 114, 121, 1, 21, 2, 32, 12, 0, 114, 121, 1, 21, 2, 101, 32, 0, 107,
-			101, 1, 110, 2, 32, 3, 13, 49, 13, 0, 108, 1, 102, 102, 2, 21, 3, 13, 55, 0, 108, 97, 103, 116, 105, 103, 3, 13, 55, 6,
-			35, 136, 47, 13, 136, 0, 108, 1, 103, 110, 97, 109, 2, 17, 65, 3, 13, 55, 10, 0, 108, 101, 1, 10, 2, 32, 3, 13, 55, 13,
-			0, 108, 105, 107, 1, 10, 2, 105, 110, 103, 3, 13, 55, 13, 49, 0, 108, 105, 107, 104, 101, 105, 100, 1, 10, 3, 13, 55, 13, 49,
-			123, 47, 0, 108, 105, 103, 97, 1, 21, 2, 32, 3, 13, 55, 37, 136, 35, 0, 108, 97, 97, 114, 3, 13, 55, 115, 34, 0, 108, 111,
-			111, 115, 1, 17, 67, 3, 13, 55, 117, 89, 0, 108, 111, 115, 101, 1, 17, 67, 3, 13, 55, 117, 89, 13, 0, 100, 101, 114, 109, 1,
-			17, 67, 21, 3, 13, 72, 112, 34, 14, 65, 10, 0, 100, 97, 110, 115, 1, 17, 67, 21, 3, 13, 72, 133, 50, 89, 0, 119, 101, 114,
-			107, 1, 17, 67, 21, 3, 13, 84, 112, 34, 49, 0, 119, 121, 1, 17, 67, 2, 17, 67, 3, 13, 84, 123, 0, 4, 115, 1, 17, 67,
-			17, 65, 17, 65, 17, 67, 29, 2, 32, 3, 13, 89, 0, 115, 1, 17, 67, 17, 65, 29, 2, 32, 0, 115, 1, 100, 17, 65, 17, 65,
-			17, 65, 17, 67, 29, 2, 32, 0, 115, 1, 100, 17, 67, 10, 2, 32, 0, 115, 1, 105, 17, 65, 17, 65, 2, 32, 0, 115, 1, 107,
-			2, 32, 0, 4, 115, 115, 1, 17, 67, 21, 2, 32, 3, 21, 0, 120, 2, 12, 0, 121, 2, 32, 0, 4, 1, 17, 67, 101, 111, 17,
-			67, 2, 116, 106, 105, 101, 3, 37, 0, 1, 110, 110, 97, 112, 2, 116, 106, 105, 101, 0, 116, 106, 105, 101, 1, 10, 2, 12, 3, 37,
-			80, 37, 0, 116, 106, 105, 101, 115, 1, 110, 110, 3, 37, 80, 37, 89, 0, 4, 1, 17, 67, 2, 107, 115, 12, 12, 3, 108, 0, 1,
-			17, 67, 2, 107, 116, 21, 12, 12, 0, 1, 17, 67, 2, 109, 109, 12, 12, 0, 1, 17, 67, 11, 2, 116, 116, 12, 0, 1, 17, 67,
-			17, 65, 17, 67, 2, 17, 67, 11, 0, 1, 100, 2, 102, 105, 0, 1, 100, 101, 114, 112, 2, 115, 116, 105, 0, 1, 106, 2, 107, 0,
-			1, 107, 21, 2, 116, 116, 21, 12, 0, 1, 108, 10, 2, 109, 32, 0, 1, 114, 2, 100, 105, 103, 101, 114, 105, 110, 103, 0, 2, 17,
-			67, 0, 8, 119, 2, 115, 107, 117, 115, 0, 1, 100, 2, 109, 111, 110, 115, 3, 108, 2, 0, 1, 17, 67, 2, 104, 108, 101, 32, 12,
-			3, 108, 12, 0, 116, 106, 105, 101, 115, 1, 110, 17, 67, 3, 108, 37, 80, 37, 89, 0, 112, 105, 108, 101, 112, 8, 3, 108, 48, 13,
-			55, 6, 108, 48, 0, 112, 115, 1, 17, 67, 21, 2, 12, 3, 108, 48, 89, 0, 120, 105, 107, 1, 109, 3, 108, 49, 89, 2, 37, 49,
-			0, 120, 97, 115, 1, 116, 3, 108, 49, 89, 13, 89, 0, 107, 115, 116, 97, 115, 101, 3, 108, 49, 89, 47, 6, 115, 89, 13, 0, 107,
-			115, 116, 101, 114, 8, 2, 25, 3, 108, 49, 89, 47, 13, 34, 0, 107, 115, 116, 114, 97, 2, 25, 3, 108, 49, 89, 47, 34, 35, 0,
-			118, 111, 108, 117, 115, 3, 108, 84, 110, 55, 6, 118, 89, 0, 4, 1, 17, 67, 2, 107, 3, 112, 0, 1, 17, 67, 2, 107, 107, 21,
-			12, 0, 1, 17, 67, 11, 2, 103, 103, 0, 1, 17, 67, 17, 65, 17, 67, 2, 103, 103, 0, 1, 17, 67, 21, 2, 103, 100, 12, 0,
-			1, 17, 67, 21, 2, 108, 107, 32, 12, 0, 1, 17, 67, 21, 2, 108, 107, 101, 32, 0, 1, 100, 21, 2, 114, 110, 115, 116, 12, 12,
-			0, 1, 100, 100, 108, 2, 108, 103, 17, 65, 17, 67, 0, 1, 107, 115, 21, 2, 108, 0, 1, 108, 108, 2, 108, 25, 0, 1, 109, 21,
-			2, 108, 100, 0, 1, 110, 107, 2, 108, 0, 1, 112, 115, 17, 67, 2, 108, 100, 0, 1, 112, 115, 17, 67, 2, 108, 115, 0, 1, 112,
-			115, 101, 103, 2, 108, 100, 0, 1, 112, 115, 117, 111, 107, 115, 2, 108, 32, 0, 1, 112, 115, 121, 108, 98, 2, 108, 25, 0, 1, 115,
-			17, 67, 2, 108, 102, 0, 1, 115, 17, 67, 2, 108, 108, 101, 32, 0, 1, 115, 107, 110, 111, 114, 116, 2, 108, 0, 1, 115, 114, 101,
-			105, 101, 2, 108, 0, 1, 116, 17, 65, 17, 67, 2, 103, 110, 0, 1, 118, 101, 17, 67, 2, 103, 25, 0, 1, 119, 17, 65, 17, 67,
-			2, 114, 107, 17, 65, 0, 1, 119, 17, 65, 17, 67, 2, 114, 107, 25, 0, 1, 119, 21, 2, 108, 115, 121, 110, 0, 1, 119, 108, 111,
-			98, 2, 114, 107, 32, 0, 2, 103, 25, 0, 2, 108, 25, 0, 2, 114, 0, 4, 114, 8, 2, 98, 3, 112, 34, 6, 0, 114, 8, 2,
-			118, 0, 114, 112, 1, 17, 67, 21, 2, 32, 3, 112, 34, 48, 0, 114, 112, 101, 1, 17, 67, 21, 2, 32, 3, 112, 34, 48, 13, 0,
-			114, 112, 105, 101, 1, 17, 67, 21, 2, 32, 3, 112, 34, 48, 37, 0, 4, 114, 107, 101, 1, 109, 2, 110, 100, 3, 112, 34, 49, 13,
-			0, 114, 107, 101, 1, 112, 2, 110, 100, 0, 114, 107, 101, 1, 119, 2, 110, 100, 0, 114, 100, 101, 8, 2, 17, 67, 3, 112, 34, 72,
-			13, 0, 114, 102, 1, 17, 67, 21, 2, 32, 3, 112, 34, 83, 0, 114, 119, 101, 1, 17, 67, 21, 2, 32, 3, 112, 34, 84, 13, 0,
-			4, 114, 115, 1, 112, 102, 2, 32, 3, 112, 34, 89, 0, 114, 115, 1, 112, 103, 2, 32, 0, 114, 115, 1, 112, 107, 2, 32, 0, 114,
-			115, 1, 112, 108, 2, 32, 0, 114, 115, 1, 112, 110, 2, 32, 0, 114, 115, 1, 112, 114, 2, 32, 0, 108, 112, 101, 8, 3, 112, 55,
-			48, 13, 0, 4, 114, 115, 1, 107, 103, 3, 113, 34, 89, 0, 114, 115, 1, 107, 116, 0, 114, 115, 1, 112, 117, 111, 108, 98, 0, 4,
-			3, 116, 0, 1, 17, 67, 2, 107, 17, 65, 12, 0, 1, 100, 17, 67, 17, 65, 2, 108, 101, 32, 0, 1, 100, 100, 17, 67, 2, 108,
-			101, 32, 0, 1, 100, 101, 111, 116, 2, 108, 105, 110, 103, 0, 1, 100, 110, 105, 2, 108, 105, 110, 103, 0, 1, 100, 115, 17, 67, 2,
-			108, 101, 32, 0, 1, 108, 108, 2, 115, 101, 114, 0, 1, 116, 105, 17, 67, 2, 114, 105, 110, 103, 0, 1, 116, 110, 171, 195, 105, 2,
-			114, 21, 110, 0, 1, 119, 21, 2, 103, 101, 110, 100, 101, 0, 1, 119, 114, 2, 115, 101, 32, 0, 2, 17, 67, 17, 65, 0, 8, 100,
-			110, 101, 101, 2, 108, 105, 103, 0, 195, 171, 0, 114, 101, 1, 119, 115, 2, 32, 3, 116, 12, 34, 13, 0, 4, 114, 101, 1, 108, 21,
-			2, 32, 3, 116, 34, 13, 0, 114, 101, 8, 0, 108, 108, 101, 110, 100, 101, 8, 3, 116, 55, 6, 108, 50, 72, 13, 0, 108, 108, 101,
-			110, 100, 105, 103, 8, 3, 116, 55, 6, 108, 50, 72, 13, 136, 0, 108, 97, 97, 114, 1, 100, 114, 111, 111, 3, 116, 55, 115, 34, 0,
-			109, 97, 1, 17, 67, 2, 32, 3, 116, 65, 35, 0, 100, 101, 1, 17, 67, 2, 32, 3, 116, 72, 13, 0, 100, 101, 108, 8, 3, 116,
-			72, 13, 55, 0, 100, 101, 115, 1, 17, 67, 2, 32, 3, 116, 72, 13, 89, 0, 119, 101, 108, 1, 17, 67, 2, 17, 65, 3, 116, 84,
-			13, 55, 0, 119, 105, 103, 104, 101, 105, 2, 100, 3, 116, 84, 13, 136, 4, 123, 0, 4, 105, 3, 123, 0, 121, 0, 105, 101, 114, 3,
-			123, 13, 34, 0, 105, 110, 100, 2, 101, 107, 115, 3, 123, 50, 47, 10, 0, 117, 3, 128, 0, 117, 101, 1, 17, 67, 3, 128, 13, 0,
-			117, 110, 116, 106, 105, 101, 3, 128, 37, 68, 80, 37, 0, 7, 6, 102, 0, 2, 102, 3, 0, 4, 105, 101, 108, 100, 3, 21, 0, 105,
-			116, 122, 8, 0, 117, 108, 1, 21, 2, 32, 0, 3, 83, 0, 4, 97, 2, 98, 114, 105, 101, 107, 3, 83, 2, 35, 0, 97, 2, 110,
-			97, 116, 105, 0, 97, 2, 116, 97, 21, 0, 97, 114, 105, 2, 115, 101, 195, 171, 114, 3, 83, 2, 35, 34, 2, 37, 0, 97, 114, 109,
-			97, 2, 115, 101, 117, 116, 3, 83, 2, 35, 34, 65, 2, 35, 0, 97, 116, 2, 115, 111, 101, 110, 3, 83, 2, 35, 47, 0, 97, 107,
-			2, 116, 111, 114, 101, 3, 83, 2, 35, 49, 0, 97, 107, 117, 108, 2, 116, 101, 105, 116, 3, 83, 2, 35, 49, 2, 111, 55, 0, 97,
-			107, 116, 117, 2, 114, 101, 114, 105, 3, 83, 2, 35, 49, 47, 2, 118, 0, 4, 97, 110, 2, 102, 97, 114, 101, 3, 83, 2, 35, 50,
-			0, 97, 110, 8, 2, 116, 111, 0, 97, 110, 116, 97, 2, 115, 17, 65, 3, 83, 2, 35, 50, 47, 2, 35, 0, 97, 109, 105, 2, 108,
-			105, 17, 65, 3, 83, 2, 35, 65, 37, 0, 97, 98, 114, 105, 2, 17, 67, 17, 65, 3, 83, 2, 35, 71, 34, 2, 37, 0, 97, 115,
-			105, 108, 105, 3, 83, 2, 35, 89, 13, 55, 2, 37, 0, 97, 115, 101, 2, 116, 25, 3, 83, 2, 35, 89, 108, 0, 97, 115, 97, 100,
-			101, 3, 83, 2, 35, 89, 115, 72, 13, 0, 4, 105, 2, 115, 97, 110, 116, 3, 83, 2, 37, 0, 105, 8, 2, 110, 97, 21, 0, 105,
-			97, 115, 107, 111, 3, 83, 2, 37, 35, 89, 49, 2, 40, 0, 111, 114, 101, 2, 108, 3, 83, 2, 40, 34, 112, 0, 111, 110, 101, 2,
-			116, 105, 101, 3, 83, 2, 40, 50, 116, 0, 101, 2, 109, 105, 110, 17, 65, 3, 83, 2, 108, 0, 101, 114, 111, 2, 109, 111, 3, 83,
-			2, 108, 34, 2, 40, 0, 101, 100, 101, 2, 114, 97, 3, 83, 2, 108, 72, 13, 0, 101, 115, 115, 111, 114, 2, 97, 21, 3, 83, 2,
-			108, 89, 13, 34, 0, 111, 2, 115, 115, 105, 101, 108, 3, 83, 2, 110, 0, 111, 114, 8, 2, 17, 67, 21, 3, 83, 2, 110, 34, 0,
-			111, 114, 109, 97, 2, 108, 105, 101, 110, 3, 83, 2, 110, 34, 65, 2, 35, 0, 111, 114, 109, 105, 2, 100, 97, 3, 83, 2, 110, 34,
-			65, 2, 37, 0, 111, 114, 109, 117, 2, 108, 105, 101, 114, 3, 83, 2, 110, 34, 65, 2, 118, 0, 111, 110, 2, 116, 101, 105, 110, 3,
-			83, 2, 110, 50, 0, 111, 110, 100, 117, 101, 3, 83, 2, 110, 50, 72, 118, 0, 111, 115, 2, 102, 97, 3, 83, 2, 110, 89, 0, 117,
-			110, 103, 2, 101, 3, 83, 2, 111, 68, 136, 0, 101, 8, 2, 116, 97, 21, 3, 83, 2, 116, 0, 111, 116, 111, 2, 115, 116, 97, 3,
-			83, 2, 117, 47, 2, 40, 0, 111, 116, 111, 103, 101, 2, 110, 105, 101, 3, 83, 2, 117, 47, 2, 40, 136, 116, 0, 111, 110, 101, 2,
-			116, 105, 101, 107, 3, 83, 2, 117, 50, 13, 0, 117, 8, 2, 116, 105, 3, 83, 2, 118, 0, 117, 115, 105, 2, 108, 108, 17, 65, 3,
-			83, 2, 118, 89, 13, 0, 121, 110, 103, 101, 2, 118, 111, 101, 108, 105, 3, 83, 2, 123, 50, 136, 13, 0, 111, 114, 8, 2, 115, 101,
-			32, 3, 83, 6, 110, 34, 0, 111, 110, 105, 101, 115, 1, 21, 3, 83, 6, 117, 50, 37, 89, 0, 4, 105, 2, 115, 105, 101, 107, 3,
-			83, 13, 0, 105, 2, 115, 107, 17, 65, 0, 101, 114, 2, 119, 101, 101, 108, 3, 83, 13, 34, 0, 101, 110, 111, 109, 2, 101, 3, 83,
-			13, 50, 2, 110, 65, 0, 101, 110, 111, 109, 101, 110, 2, 17, 65, 21, 3, 83, 13, 50, 2, 110, 65, 13, 50, 0, 4, 101, 108, 1,
-			21, 2, 101, 110, 100, 3, 83, 13, 55, 0, 101, 108, 1, 21, 2, 105, 110, 103, 0, 105, 108, 105, 2, 112, 112, 17, 65, 3, 83, 13,
-			55, 13, 0, 105, 108, 105, 115, 116, 121, 110, 3, 83, 13, 55, 13, 89, 47, 6, 123, 50, 0, 105, 108, 108, 101, 2, 116, 3, 83, 13,
-			55, 108, 0, 101, 115, 115, 111, 114, 101, 2, 32, 3, 83, 13, 89, 117, 34, 13, 0, 114, 97, 2, 103, 105, 101, 108, 3, 83, 34, 2,
-			35, 0, 4, 114, 97, 110, 2, 17, 67, 105, 110, 97, 3, 83, 34, 2, 35, 50, 0, 114, 97, 110, 8, 2, 17, 67, 105, 115, 17, 67,
-			17, 65, 0, 114, 97, 110, 103, 105, 2, 112, 97, 110, 105, 3, 83, 34, 2, 35, 68, 2, 37, 0, 114, 101, 2, 107, 119, 101, 110, 3,
-			83, 34, 2, 37, 0, 114, 111, 110, 116, 2, 17, 65, 21, 3, 83, 34, 2, 110, 50, 47, 0, 114, 117, 2, 115, 116, 114, 3, 83, 34,
-			2, 111, 0, 114, 105, 107, 107, 97, 100, 101, 2, 108, 3, 83, 34, 13, 49, 13, 72, 112, 0, 114, 101, 117, 100, 3, 83, 34, 124, 72,
-			0, 97, 2, 108, 97, 110, 107, 115, 3, 83, 35, 0, 105, 110, 101, 1, 114, 111, 109, 2, 21, 3, 83, 37, 50, 13, 10, 0, 4, 111,
-			110, 105, 101, 1, 21, 3, 83, 40, 50, 6, 37, 0, 111, 110, 105, 101, 1, 21, 2, 115, 21, 21, 0, 4, 108, 97, 2, 103, 114, 97,
-			110, 116, 3, 83, 55, 2, 35, 0, 108, 97, 2, 109, 105, 0, 108, 97, 109, 98, 111, 2, 106, 97, 110, 116, 3, 83, 55, 2, 35, 65,
-			71, 2, 40, 0, 108, 111, 2, 114, 101, 3, 83, 55, 2, 40, 0, 108, 101, 98, 2, 111, 116, 111, 109, 105, 101, 3, 83, 55, 2, 108,
-			71, 0, 108, 111, 114, 105, 2, 115, 115, 17, 65, 3, 83, 55, 2, 117, 34, 13, 0, 108, 117, 2, 119, 101, 3, 83, 55, 2, 118, 0,
-			108, 105, 107, 116, 8, 2, 101, 114, 17, 65, 3, 83, 55, 13, 49, 47, 0, 101, 115, 115, 111, 114, 3, 83, 108, 89, 13, 34, 0, 111,
-			107, 8, 2, 111, 3, 83, 110, 49, 10, 0, 117, 110, 103, 117, 115, 3, 83, 111, 68, 81, 111, 89, 10, 0, 101, 98, 114, 117, 97, 114,
-			105, 101, 3, 83, 116, 71, 34, 118, 4, 115, 34, 37, 0, 111, 2, 116, 111, 103, 114, 97, 3, 83, 117, 0, 111, 116, 111, 3, 83, 117,
-			47, 40, 0, 111, 108, 105, 111, 3, 83, 117, 55, 37, 10, 40, 0, 101, 105, 116, 101, 3, 83, 123, 47, 13, 0, 121, 110, 103, 101, 2,
-			17, 67, 3, 83, 123, 50, 136, 13, 0, 7, 6, 103, 0, 2, 103, 3, 0, 4, 104, 116, 3, 21, 0, 110, 1, 21, 2, 32, 0, 110,
-			111, 110, 1, 21, 2, 32, 3, 21, 102, 114, 0, 104, 2, 32, 3, 49, 0, 104, 8, 3, 81, 0, 104, 105, 2, 116, 97, 3, 81, 2,
-			37, 0, 117, 105, 108, 108, 111, 116, 105, 110, 101, 3, 81, 2, 37, 55, 2, 40, 47, 37, 50, 0, 111, 2, 114, 105, 108, 108, 97, 3,
-			81, 2, 40, 0, 117, 101, 114, 114, 105, 108, 108, 97, 3, 81, 13, 34, 6, 109, 55, 35, 0, 97, 114, 97, 103, 101, 3, 81, 13, 34,
-			6, 115, 75, 0, 108, 105, 115, 101, 2, 114, 105, 101, 110, 3, 81, 55, 13, 89, 13, 0, 97, 108, 97, 2, 32, 3, 81, 115, 55, 2,
-			35, 0, 111, 117, 114, 109, 101, 116, 3, 81, 117, 34, 65, 123, 12, 0, 3, 136, 0, 4, 97, 2, 108, 17, 65, 17, 67, 3, 136, 2,
-			35, 0, 97, 2, 114, 105, 101, 112, 0, 97, 114, 2, 110, 3, 136, 2, 35, 34, 0, 97, 114, 121, 101, 1, 17, 67, 21, 3, 136, 2,
-			35, 34, 6, 123, 13, 0, 97, 114, 110, 105, 2, 115, 111, 101, 110, 3, 136, 2, 35, 34, 50, 2, 37, 0, 97, 108, 2, 106, 111, 101,
-			110, 3, 136, 2, 35, 55, 0, 97, 108, 97, 2, 115, 105, 3, 136, 2, 35, 55, 115, 0, 111, 101, 100, 2, 103, 117, 110, 115, 116, 3,
-			136, 2, 40, 47, 0, 111, 101, 100, 101, 114, 2, 116, 105, 101, 3, 136, 2, 40, 72, 13, 34, 0, 111, 101, 119, 101, 114, 8, 3, 136,
-			2, 40, 84, 13, 34, 0, 111, 114, 2, 100, 121, 110, 3, 136, 2, 110, 34, 0, 4, 111, 100, 2, 115, 97, 108, 105, 103, 3, 136, 2,
-			110, 47, 0, 111, 100, 2, 118, 114, 0, 4, 111, 100, 115, 2, 100, 105, 101, 110, 115, 116, 105, 103, 3, 136, 2, 110, 47, 89, 0, 111,
-			100, 115, 2, 108, 97, 115, 116, 101, 114, 0, 111, 100, 100, 101, 2, 108, 111, 3, 136, 2, 110, 72, 13, 0, 117, 116, 116, 117, 2, 114,
-			97, 3, 136, 2, 111, 47, 2, 111, 0, 111, 2, 100, 105, 110, 3, 136, 2, 117, 0, 97, 117, 116, 101, 110, 103, 3, 136, 2, 129, 47,
-			108, 68, 0, 111, 195, 171, 1, 17, 65, 3, 136, 6, 40, 13, 0, 97, 109, 105, 101, 115, 3, 136, 6, 115, 65, 37, 89, 0, 111, 111,
-			103, 1, 17, 65, 2, 32, 3, 136, 6, 117, 136, 0, 111, 103, 105, 101, 115, 1, 17, 65, 3, 136, 6, 117, 136, 37, 89, 0, 97, 115,
-			8, 2, 17, 65, 3, 136, 7, 35, 89, 10, 0, 103, 101, 1, 21, 2, 32, 3, 136, 13, 0, 105, 109, 2, 110, 97, 25, 3, 136, 13,
-			65, 0, 105, 109, 110, 97, 2, 115, 105, 17, 65, 3, 136, 13, 65, 50, 115, 0, 4, 114, 97, 2, 102, 105, 101, 107, 3, 136, 34, 2,
-			35, 0, 114, 97, 2, 102, 105, 101, 116, 0, 114, 97, 2, 110, 105, 101, 116, 0, 114, 97, 2, 115, 105, 101, 117, 0, 114, 97, 8, 2,
-			118, 17, 65, 0, 114, 97, 110, 100, 105, 2, 111, 3, 136, 34, 2, 35, 50, 72, 2, 37, 0, 114, 97, 109, 97, 2, 100, 111, 101, 3,
-			136, 34, 2, 35, 65, 2, 35, 0, 114, 97, 109, 109, 97, 2, 116, 105, 107, 3, 136, 34, 2, 35, 65, 35, 0, 114, 97, 100, 101, 2,
-			114, 105, 110, 103, 3, 136, 34, 2, 35, 72, 116, 0, 114, 111, 110, 100, 119, 101, 116, 108, 105, 107, 3, 136, 34, 2, 110, 50, 47, 84,
-			108, 47, 55, 13, 49, 0, 114, 97, 97, 100, 8, 2, 116, 3, 136, 34, 2, 115, 0, 4, 114, 97, 97, 100, 8, 2, 110, 101, 103, 101,
-			3, 136, 34, 2, 115, 47, 0, 114, 97, 97, 100, 8, 2, 118, 121, 102, 0, 114, 97, 97, 100, 8, 2, 101, 3, 136, 34, 2, 115, 47,
-			10, 0, 114, 97, 97, 100, 115, 101, 8, 2, 115, 3, 136, 34, 2, 115, 47, 89, 108, 0, 114, 1, 97, 17, 67, 117, 111, 2, 111, 111,
-			116, 106, 105, 101, 3, 136, 34, 6, 0, 4, 114, 97, 8, 2, 110, 97, 3, 136, 34, 13, 0, 114, 105, 2, 102, 102, 105, 101, 114, 0,
-			114, 105, 8, 2, 109, 17, 65, 0, 114, 97, 115, 8, 2, 17, 65, 3, 136, 34, 35, 89, 10, 0, 114, 105, 101, 107, 119, 97, 3, 136,
-			34, 37, 49, 58, 35, 0, 114, 111, 110, 100, 119, 101, 2, 116, 25, 3, 136, 34, 110, 50, 47, 84, 108, 0, 114, 111, 110, 100, 119, 101,
-			116, 2, 97, 3, 136, 34, 110, 50, 47, 84, 108, 47, 10, 0, 114, 97, 8, 2, 115, 105, 101, 3, 136, 34, 115, 0, 114, 97, 100, 101,
-			2, 17, 67, 3, 136, 34, 115, 72, 13, 0, 114, 111, 116, 101, 114, 101, 3, 136, 34, 117, 47, 13, 34, 13, 0, 4, 114, 111, 110, 100,
-			1, 114, 101, 116, 103, 97, 2, 105, 3, 136, 34, 131, 50, 47, 10, 0, 114, 111, 110, 100, 2, 111, 0, 97, 116, 8, 2, 111, 3, 136,
-			35, 47, 10, 0, 97, 109, 105, 101, 2, 32, 3, 136, 35, 65, 6, 37, 0, 111, 103, 105, 101, 1, 17, 65, 2, 32, 3, 136, 40, 136,
-			6, 37, 0, 108, 101, 116, 115, 101, 114, 3, 136, 55, 7, 108, 47, 89, 13, 34, 0, 108, 97, 110, 115, 3, 136, 55, 35, 50, 89, 0,
-			4, 108, 97, 115, 2, 97, 3, 136, 55, 35, 89, 10, 0, 108, 97, 115, 2, 111, 0, 105, 102, 8, 2, 17, 65, 3, 136, 109, 83, 10,
-			0, 111, 109, 97, 103, 2, 116, 105, 103, 3, 136, 110, 65, 10, 2, 35, 136, 0, 117, 115, 2, 111, 111, 105, 3, 136, 111, 89, 10, 0,
-			97, 100, 101, 8, 3, 136, 115, 72, 13, 0, 4, 97, 115, 2, 101, 114, 105, 103, 3, 136, 115, 89, 0, 97, 115, 2, 105, 101, 0, 97,
-			115, 2, 105, 103, 0, 195, 169, 115, 101, 108, 3, 136, 116, 89, 13, 55, 0, 4, 111, 117, 100, 2, 97, 21, 3, 136, 120, 47, 10, 0,
-			111, 117, 100, 2, 111, 0, 104, 101, 105, 100, 1, 21, 3, 136, 123, 47, 0, 4, 97, 110, 115, 1, 21, 3, 136, 133, 50, 89, 0, 97,
-			110, 115, 2, 17, 67, 0, 7, 6, 104, 0, 4, 1, 17, 65, 21, 2, 32, 3, 0, 2, 104, 3, 0, 108, 101, 1, 17, 65, 2, 32,
-			3, 8, 105, 108, 0, 3, 107, 0, 97, 114, 2, 112, 111, 101, 110, 3, 107, 2, 35, 34, 0, 4, 97, 114, 100, 2, 17, 67, 21, 3,
-			107, 2, 35, 34, 47, 0, 97, 114, 116, 2, 114, 111, 101, 114, 0, 97, 114, 116, 2, 115, 116, 111, 103, 116, 101, 32, 0, 97, 114, 108,
-			101, 2, 107, 121, 110, 3, 107, 2, 35, 34, 55, 13, 0, 97, 114, 109, 111, 2, 110, 105, 101, 3, 107, 2, 35, 34, 65, 2, 40, 0,
-			4, 97, 108, 2, 115, 115, 116, 97, 114, 3, 107, 2, 35, 55, 0, 97, 108, 2, 118, 101, 21, 0, 97, 108, 102, 2, 118, 105, 101, 114,
-			0, 97, 108, 102, 2, 118, 121, 102, 0, 97, 108, 111, 2, 103, 101, 3, 107, 2, 35, 55, 2, 40, 0, 97, 108, 108, 101, 108, 117, 106,
-			97, 3, 107, 2, 35, 55, 13, 55, 118, 57, 2, 35, 0, 4, 97, 108, 102, 2, 100, 114, 105, 101, 3, 107, 2, 35, 55, 83, 0, 97,
-			108, 102, 2, 107, 114, 111, 21, 0, 97, 108, 102, 2, 110, 101, 103, 101, 0, 97, 108, 102, 2, 115, 101, 119, 101, 0, 97, 108, 102, 2,
-			116, 105, 101, 110, 0, 97, 108, 102, 2, 116, 119, 97, 97, 108, 102, 0, 97, 108, 102, 2, 116, 119, 101, 101, 0, 4, 97, 108, 102, 2,
-			101, 101, 110, 3, 107, 2, 35, 55, 83, 10, 0, 97, 108, 102, 2, 101, 108, 102, 0, 97, 108, 102, 8, 2, 97, 103, 25, 0, 97, 108,
-			102, 115, 101, 2, 115, 3, 107, 2, 35, 55, 83, 89, 108, 0, 4, 105, 2, 115, 116, 111, 3, 107, 2, 37, 0, 105, 8, 2, 98, 105,
-			115, 0, 105, 101, 114, 110, 97, 2, 109, 97, 97, 108, 3, 107, 2, 37, 12, 34, 50, 115, 0, 105, 195, 171, 114, 2, 97, 114, 103, 105,
-			101, 3, 107, 2, 37, 13, 34, 0, 105, 195, 171, 114, 97, 114, 2, 103, 105, 101, 32, 24, 3, 107, 2, 37, 13, 34, 2, 35, 34, 0,
-			105, 195, 171, 114, 111, 2, 103, 108, 105, 101, 3, 107, 2, 37, 13, 34, 2, 40, 0, 105, 112, 2, 110, 111, 17, 67, 17, 65, 3, 107,
-			2, 37, 48, 0, 105, 112, 101, 114, 2, 98, 111, 3, 107, 2, 37, 48, 13, 34, 0, 105, 97, 2, 115, 105, 110, 116, 3, 107, 2, 37,
-			57, 2, 35, 0, 105, 115, 116, 114, 105, 2, 111, 110, 3, 107, 2, 37, 89, 47, 34, 2, 37, 0, 105, 195, 171, 110, 97, 3, 107, 2,
-			37, 116, 12, 50, 35, 0, 105, 103, 105, 195, 171, 2, 110, 17, 65, 3, 107, 2, 37, 136, 2, 37, 116, 0, 111, 116, 101, 2, 108, 3,
-			107, 2, 40, 47, 112, 0, 111, 101, 118, 101, 2, 114, 3, 107, 2, 40, 83, 112, 0, 111, 101, 118, 101, 101, 108, 104, 2, 101, 3, 107,
-			2, 40, 83, 116, 55, 107, 0, 111, 2, 110, 110, 101, 117, 114, 3, 107, 2, 110, 0, 4, 111, 114, 2, 108, 111, 115, 3, 107, 2, 110,
-			34, 0, 111, 114, 2, 109, 111, 0, 111, 114, 114, 105, 2, 98, 17, 65, 3, 107, 2, 110, 34, 2, 37, 0, 111, 110, 103, 2, 97, 3,
-			107, 2, 110, 68, 136, 0, 111, 114, 105, 115, 111, 110, 2, 116, 97, 3, 107, 2, 117, 34, 2, 37, 89, 2, 110, 50, 0, 4, 111, 111,
-			103, 2, 100, 114, 97, 3, 107, 2, 117, 136, 0, 111, 111, 103, 2, 109, 111, 101, 100, 105, 103, 0, 117, 2, 109, 101, 117, 114, 3, 107,
-			2, 118, 0, 117, 105, 115, 2, 104, 111, 117, 100, 32, 3, 107, 2, 127, 89, 0, 97, 114, 116, 105, 103, 1, 21, 3, 107, 6, 35, 34,
-			47, 13, 136, 0, 97, 108, 1, 17, 67, 21, 2, 115, 17, 65, 3, 107, 6, 35, 55, 0, 97, 108, 102, 8, 2, 103, 101, 14, 128, 132,
-			132, 3, 107, 6, 35, 55, 83, 0, 105, 110, 107, 101, 2, 112, 105, 110, 107, 3, 107, 13, 68, 49, 13, 0, 4, 97, 114, 100, 2, 104,
-			101, 105, 100, 3, 107, 35, 34, 47, 0, 97, 114, 100, 2, 108, 111, 0, 97, 114, 100, 2, 115, 116, 101, 0, 97, 114, 116, 2, 115, 116,
-			111, 103, 116, 101, 32, 24, 0, 97, 114, 100, 103, 101, 2, 17, 67, 3, 107, 35, 34, 47, 136, 13, 0, 97, 114, 109, 111, 110, 105, 101,
-			115, 3, 107, 35, 34, 65, 6, 117, 50, 37, 89, 0, 97, 114, 100, 101, 3, 107, 35, 34, 72, 13, 0, 97, 110, 100, 2, 111, 3, 107,
-			35, 50, 47, 19, 0, 105, 116, 108, 101, 114, 3, 107, 37, 47, 55, 13, 34, 0, 105, 112, 111, 8, 2, 21, 14, 128, 132, 132, 3, 107,
-			37, 48, 40, 0, 105, 110, 2, 100, 111, 101, 3, 107, 37, 50, 0, 105, 109, 110, 101, 3, 107, 37, 65, 50, 13, 0, 105, 115, 116, 101,
-			114, 2, 105, 3, 107, 37, 89, 47, 6, 116, 34, 0, 105, 115, 116, 101, 114, 2, 101, 3, 107, 37, 89, 47, 13, 34, 0, 111, 101, 110,
-			100, 101, 114, 3, 107, 40, 50, 13, 34, 0, 111, 102, 2, 17, 65, 3, 107, 110, 83, 10, 0, 97, 2, 119, 101, 3, 107, 115, 0, 97,
-			112, 101, 114, 3, 107, 115, 48, 13, 34, 0, 97, 110, 101, 8, 2, 17, 67, 3, 107, 115, 50, 13, 0, 97, 109, 101, 114, 3, 107, 115,
-			65, 13, 34, 0, 111, 98, 111, 8, 3, 107, 117, 71, 40, 0, 111, 102, 2, 105, 101, 3, 107, 117, 83, 0, 7, 6, 105, 0, 4, 1,
-			17, 67, 2, 195, 171, 115, 116, 97, 3, 2, 37, 0, 1, 104, 2, 100, 114, 17, 65, 0, 1, 112, 115, 2, 111, 101, 110, 0, 1, 120,
-			97, 116, 2, 21, 0, 1, 180, 195, 2, 25, 0, 2, 114, 111, 110, 105, 101, 0, 2, 118, 111, 111, 114, 0, 8, 2, 107, 111, 0, 8,
-			2, 109, 109, 117, 0, 8, 2, 114, 114, 0, 195, 171, 116, 101, 105, 116, 3, 2, 37, 13, 47, 6, 123, 47, 0, 114, 97, 8, 2, 17,
-			67, 3, 2, 37, 34, 35, 0, 116, 97, 108, 105, 2, 97, 3, 2, 37, 47, 2, 35, 55, 2, 37, 0, 101, 116, 101, 114, 109, 97, 2,
-			103, 3, 2, 37, 47, 13, 34, 65, 2, 35, 0, 112, 101, 2, 107, 111, 110, 3, 2, 37, 48, 13, 0, 108, 108, 117, 109, 105, 2, 110,
-			17, 65, 3, 2, 37, 55, 2, 40, 65, 2, 37, 0, 108, 108, 117, 2, 115, 116, 114, 17, 65, 3, 2, 37, 55, 2, 111, 0, 108, 108,
-			117, 2, 115, 105, 3, 2, 37, 55, 118, 0, 109, 112, 97, 108, 97, 3, 2, 37, 65, 48, 115, 55, 35, 0, 98, 101, 114, 2, 105, 21,
-			3, 2, 37, 71, 116, 34, 0, 100, 8, 2, 17, 65, 3, 2, 37, 72, 0, 4, 100, 101, 2, 97, 3, 2, 37, 72, 2, 37, 0, 100,
-			101, 2, 195, 171, 0, 100, 105, 8, 2, 111, 0, 115, 108, 97, 109, 8, 2, 105, 3, 2, 37, 89, 55, 2, 35, 65, 0, 101, 115, 101,
-			8, 2, 17, 67, 3, 4, 37, 89, 13, 0, 101, 1, 114, 116, 2, 32, 24, 3, 6, 37, 0, 116, 105, 115, 1, 17, 67, 21, 2, 32,
-			3, 6, 37, 47, 13, 89, 0, 4, 101, 107, 1, 110, 21, 2, 32, 3, 6, 37, 49, 0, 101, 107, 1, 110, 21, 2, 101, 32, 0, 101,
-			107, 1, 114, 116, 21, 2, 32, 0, 101, 107, 1, 114, 116, 21, 2, 101, 25, 0, 101, 107, 1, 116, 21, 2, 32, 0, 101, 107, 1, 116,
-			21, 2, 101, 32, 0, 101, 102, 1, 115, 115, 2, 32, 3, 6, 37, 83, 0, 4, 101, 119, 101, 1, 115, 110, 2, 25, 3, 6, 37, 84,
-			13, 0, 101, 119, 101, 1, 115, 115, 2, 32, 0, 115, 105, 101, 1, 17, 67, 3, 6, 37, 89, 37, 0, 1, 17, 67, 114, 97, 110, 2,
-			115, 115, 117, 115, 3, 6, 109, 0, 109, 109, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 6, 109, 65, 13, 34, 10, 0, 4, 115, 1,
-			17, 67, 17, 65, 2, 32, 3, 6, 109, 89, 0, 115, 1, 109, 101, 111, 108, 98, 0, 115, 1, 114, 97, 116, 105, 108, 2, 12, 0, 115,
-			116, 101, 1, 17, 67, 17, 65, 2, 32, 3, 6, 109, 89, 47, 13, 0, 115, 116, 105, 101, 115, 1, 17, 67, 21, 3, 6, 109, 89, 47,
-			37, 89, 0, 4, 115, 107, 1, 17, 67, 2, 32, 3, 6, 109, 89, 49, 0, 115, 107, 1, 17, 67, 2, 101, 32, 0, 115, 109, 101, 1,
-			21, 2, 25, 3, 6, 109, 89, 65, 13, 0, 107, 97, 1, 21, 2, 32, 3, 8, 2, 37, 49, 2, 35, 0, 115, 1, 114, 97, 21, 2,
-			25, 3, 8, 13, 89, 0, 4, 1, 17, 67, 2, 103, 3, 13, 0, 1, 102, 101, 100, 2, 110, 0, 1, 109, 2, 110, 105, 115, 116, 101,
-			114, 0, 1, 115, 105, 114, 107, 2, 25, 0, 2, 110, 110, 101, 101, 109, 98, 97, 0, 2, 116, 105, 101, 102, 0, 2, 116, 105, 101, 119,
-			0, 8, 109, 101, 2, 114, 0, 103, 101, 114, 1, 10, 2, 32, 14, 128, 128, 130, 3, 13, 34, 0, 103, 101, 114, 115, 1, 10, 2, 32,
-			14, 128, 128, 131, 3, 13, 34, 89, 0, 107, 101, 1, 10, 2, 32, 14, 128, 128, 131, 3, 13, 49, 13, 0, 107, 101, 114, 1, 108, 10,
-			2, 17, 67, 3, 13, 49, 13, 34, 0, 107, 101, 110, 100, 1, 17, 67, 10, 3, 13, 49, 13, 50, 47, 0, 107, 101, 110, 100, 101, 1,
-			17, 67, 10, 3, 13, 49, 13, 50, 72, 13, 0, 107, 105, 110, 103, 1, 17, 67, 3, 13, 49, 13, 68, 0, 110, 2, 116, 117, 115, 115,
-			101, 110, 3, 13, 50, 0, 110, 116, 101, 110, 2, 115, 3, 13, 50, 47, 108, 50, 0, 110, 115, 117, 114, 103, 101, 110, 2, 17, 67, 3,
-			13, 50, 89, 2, 111, 34, 136, 108, 50, 0, 110, 103, 101, 110, 105, 101, 117, 114, 3, 13, 50, 136, 13, 50, 6, 118, 13, 34, 0, 109,
-			109, 105, 8, 2, 103, 114, 17, 65, 3, 13, 65, 13, 0, 4, 109, 112, 111, 2, 115, 97, 110, 116, 3, 13, 65, 48, 2, 40, 0, 109,
-			112, 111, 2, 116, 101, 0, 109, 112, 101, 114, 97, 2, 116, 17, 65, 21, 3, 13, 65, 48, 2, 108, 34, 2, 35, 0, 109, 98, 101, 2,
-			115, 3, 13, 65, 71, 13, 0, 4, 115, 1, 98, 117, 112, 2, 32, 3, 13, 89, 0, 115, 1, 108, 105, 117, 118, 0, 115, 1, 108, 111,
-			112, 2, 32, 0, 115, 1, 109, 17, 65, 17, 65, 2, 32, 0, 115, 1, 110, 101, 2, 25, 0, 4, 115, 1, 110, 102, 2, 17, 65, 3,
-			13, 89, 10, 0, 115, 1, 110, 110, 2, 17, 65, 0, 115, 114, 97, 101, 2, 108, 105, 21, 3, 13, 89, 34, 2, 121, 0, 115, 114, 97,
-			101, 2, 108, 105, 3, 13, 89, 34, 122, 0, 103, 101, 114, 1, 17, 67, 21, 2, 17, 67, 17, 65, 3, 13, 136, 13, 34, 0, 103, 101,
-			110, 100, 1, 17, 67, 21, 2, 32, 3, 13, 136, 13, 50, 47, 0, 103, 101, 110, 100, 101, 1, 17, 67, 21, 3, 13, 136, 13, 50, 72,
-			13, 0, 103, 105, 110, 103, 1, 17, 67, 3, 13, 136, 13, 68, 0, 103, 104, 101, 105, 2, 100, 3, 13, 136, 123, 0, 4, 99, 1, 21,
-			2, 32, 3, 21, 0, 108, 101, 115, 2, 32, 0, 116, 121, 2, 32, 24, 0, 195, 169, 3, 26, 37, 0, 4, 3, 37, 0, 1, 21, 2,
-			115, 101, 114, 105, 110, 103, 0, 1, 104, 2, 100, 114, 111, 0, 1, 115, 112, 2, 103, 17, 65, 0, 2, 17, 67, 17, 65, 0, 8, 116,
-			110, 97, 2, 17, 67, 0, 101, 0, 101, 1, 103, 2, 114, 105, 103, 0, 101, 1, 104, 2, 114, 100, 105, 101, 0, 101, 1, 107, 2, 114,
-			97, 110, 17, 67, 0, 101, 1, 107, 2, 114, 105, 101, 0, 101, 1, 107, 2, 114, 116, 115, 0, 101, 1, 107, 115, 2, 114, 105, 103, 0,
-			101, 1, 112, 2, 114, 101, 119, 0, 101, 1, 112, 2, 114, 105, 110, 103, 0, 101, 1, 119, 2, 114, 111, 111, 107, 0, 101, 2, 117, 117,
-			0, 195, 171, 110, 3, 37, 6, 108, 50, 0, 97, 116, 101, 114, 1, 17, 67, 3, 37, 6, 115, 47, 13, 34, 0, 97, 116, 114, 105, 101,
-			115, 1, 17, 67, 3, 37, 6, 115, 47, 34, 37, 89, 0, 97, 110, 97, 3, 37, 6, 115, 50, 35, 0, 97, 97, 108, 2, 32, 25, 3,
-			37, 6, 115, 55, 0, 97, 108, 101, 2, 32, 3, 37, 6, 115, 55, 13, 0, 101, 101, 2, 17, 67, 3, 37, 6, 116, 0, 195, 171, 114,
-			2, 17, 65, 3, 37, 6, 116, 34, 0, 195, 171, 108, 101, 3, 37, 6, 116, 55, 13, 0, 101, 117, 115, 3, 37, 6, 128, 89, 0, 101,
-			1, 17, 67, 2, 114, 3, 37, 12, 0, 101, 195, 171, 2, 25, 3, 37, 12, 13, 0, 114, 105, 8, 2, 115, 3, 37, 34, 13, 0, 114,
-			114, 105, 116, 101, 114, 2, 21, 3, 37, 34, 13, 47, 6, 116, 34, 0, 114, 111, 110, 105, 101, 2, 32, 24, 3, 37, 34, 40, 50, 6,
-			37, 0, 97, 116, 114, 105, 101, 1, 17, 67, 3, 37, 35, 47, 34, 6, 37, 0, 116, 101, 105, 116, 1, 21, 3, 37, 47, 6, 123, 47,
-			0, 116, 101, 109, 3, 37, 47, 108, 65, 0, 4, 101, 107, 1, 110, 107, 21, 2, 32, 3, 37, 49, 0, 101, 107, 1, 116, 105, 114, 107,
-			0, 109, 112, 105, 8, 2, 16, 3, 37, 65, 48, 37, 0, 103, 8, 2, 108, 111, 3, 37, 81, 0, 4, 118, 101, 101, 114, 1, 17, 67,
-			3, 37, 83, 6, 116, 34, 0, 118, 101, 114, 1, 17, 67, 2, 17, 65, 0, 115, 101, 101, 114, 1, 21, 3, 37, 89, 6, 116, 34, 0,
-			115, 101, 114, 101, 110, 1, 21, 2, 100, 3, 37, 89, 6, 116, 34, 13, 50, 0, 115, 101, 117, 114, 1, 21, 3, 37, 89, 6, 128, 34,
-			0, 115, 105, 101, 1, 17, 67, 21, 21, 21, 3, 37, 89, 37, 0, 115, 105, 101, 117, 115, 1, 17, 67, 3, 37, 89, 37, 6, 128, 89,
-			0, 115, 108, 97, 109, 8, 3, 37, 89, 55, 35, 65, 0, 103, 101, 114, 105, 110, 103, 1, 21, 3, 37, 136, 6, 116, 34, 13, 68, 0,
-			4, 1, 29, 2, 103, 25, 12, 3, 109, 0, 1, 115, 2, 103, 17, 67, 0, 1, 119, 115, 2, 103, 0, 2, 17, 67, 0, 4, 100, 106,
-			105, 101, 3, 109, 37, 80, 37, 0, 116, 106, 105, 101, 0, 116, 1, 119, 2, 17, 65, 3, 109, 47, 0, 115, 1, 109, 101, 17, 67, 21,
-			2, 32, 3, 109, 89, 0, 115, 112, 101, 108, 1, 17, 67, 3, 109, 89, 48, 13, 55, 0, 103, 101, 1, 10, 2, 32, 3, 109, 136, 13,
-			0, 103, 101, 115, 1, 10, 2, 32, 3, 109, 136, 13, 89, 0, 195, 171, 3, 116, 12, 14, 0, 101, 117, 3, 119, 0, 106, 2, 17, 67,
-			3, 123, 0, 7, 6, 106, 0, 2, 106, 3, 0, 4, 97, 99, 107, 8, 3, 21, 0, 101, 97, 110, 0, 101, 101, 112, 0, 111, 104, 110,
-			0, 4, 3, 57, 0, 8, 2, 97, 110, 116, 106, 105, 101, 25, 12, 12, 0, 97, 8, 2, 17, 67, 111, 98, 17, 65, 3, 57, 2, 35,
-			0, 97, 112, 111, 2, 110, 3, 57, 2, 35, 48, 110, 0, 4, 97, 99, 97, 114, 97, 110, 100, 97, 3, 57, 2, 35, 49, 2, 35, 34,
-			6, 35, 50, 72, 35, 0, 97, 107, 97, 114, 97, 110, 100, 97, 0, 97, 107, 111, 112, 101, 119, 101, 114, 3, 57, 2, 35, 49, 2, 110,
-			48, 116, 84, 13, 34, 10, 0, 97, 110, 8, 2, 17, 67, 21, 3, 57, 2, 35, 50, 0, 97, 108, 111, 101, 2, 115, 105, 101, 3, 57,
-			2, 35, 55, 2, 40, 0, 97, 115, 2, 109, 121, 110, 3, 57, 2, 35, 89, 0, 117, 2, 114, 105, 100, 3, 57, 2, 40, 0, 111, 101,
-			114, 2, 110, 97, 3, 57, 2, 40, 34, 0, 117, 114, 105, 115, 2, 100, 105, 107, 3, 57, 2, 40, 34, 13, 89, 0, 111, 104, 97, 2,
-			110, 3, 57, 2, 40, 107, 35, 0, 111, 114, 100, 97, 8, 2, 110, 105, 17, 65, 3, 57, 2, 110, 34, 72, 115, 0, 97, 107, 111, 98,
-			2, 114, 101, 103, 111, 112, 3, 57, 2, 115, 49, 2, 110, 48, 0, 117, 2, 119, 101, 3, 57, 2, 118, 0, 117, 119, 101, 2, 108, 105,
-			101, 114, 3, 57, 2, 118, 84, 13, 0, 117, 119, 101, 108, 101, 3, 57, 2, 118, 84, 116, 55, 13, 0, 117, 110, 103, 105, 8, 2, 97,
-			3, 57, 4, 40, 68, 2, 37, 0, 97, 103, 8, 2, 17, 65, 3, 57, 7, 35, 136, 10, 0, 101, 114, 117, 115, 97, 108, 101, 109, 3,
-			57, 13, 34, 118, 89, 2, 35, 55, 2, 108, 65, 0, 101, 110, 101, 119, 101, 114, 3, 57, 13, 50, 116, 84, 13, 34, 0, 97, 8, 2,
-			110, 110, 17, 65, 12, 3, 57, 35, 0, 97, 110, 8, 2, 115, 17, 65, 110, 25, 3, 57, 35, 50, 0, 97, 110, 117, 97, 114, 105, 101,
-			3, 57, 35, 50, 118, 4, 115, 34, 37, 0, 97, 103, 117, 97, 114, 3, 57, 35, 81, 58, 35, 34, 0, 101, 115, 117, 115, 3, 57, 37,
-			12, 89, 111, 89, 0, 117, 110, 105, 101, 3, 57, 40, 50, 37, 0, 117, 108, 105, 101, 3, 57, 40, 55, 37, 0, 111, 110, 103, 2, 101,
-			116, 106, 105, 101, 3, 57, 110, 68, 0, 111, 110, 103, 101, 3, 57, 110, 68, 13, 0, 97, 2, 98, 114, 111, 101, 114, 3, 57, 115, 0,
-			4, 97, 103, 2, 101, 110, 100, 3, 57, 115, 136, 0, 97, 103, 2, 101, 114, 0, 97, 103, 2, 105, 110, 103, 0, 101, 108, 108, 105, 101,
-			3, 75, 6, 108, 55, 37, 0, 111, 117, 108, 101, 3, 75, 40, 12, 55, 0, 97, 122, 122, 3, 75, 113, 88, 0, 7, 6, 107, 0, 2,
-			107, 3, 0, 107, 108, 101, 114, 101, 3, 8, 49, 55, 6, 116, 34, 13, 0, 3, 49, 0, 97, 114, 97, 107, 116, 101, 114, 3, 49, 2,
-			35, 34, 35, 49, 47, 13, 34, 0, 4, 105, 2, 110, 101, 116, 105, 101, 3, 49, 2, 37, 0, 105, 8, 2, 116, 97, 0, 105, 97, 97,
-			116, 3, 49, 2, 37, 38, 115, 47, 0, 105, 107, 111, 101, 2, 106, 111, 101, 3, 49, 2, 37, 49, 40, 12, 0, 105, 108, 105, 109, 97,
-			110, 100, 106, 97, 114, 111, 3, 49, 2, 37, 55, 13, 65, 2, 35, 50, 75, 115, 34, 40, 0, 101, 110, 2, 109, 101, 114, 107, 101, 110,
-			3, 49, 2, 108, 50, 0, 117, 108, 105, 110, 3, 49, 2, 111, 55, 2, 37, 50, 0, 101, 114, 97, 2, 109, 105, 101, 107, 3, 49, 2,
-			112, 34, 2, 35, 0, 101, 108, 107, 105, 101, 2, 119, 121, 110, 3, 49, 2, 112, 55, 49, 2, 37, 0, 101, 108, 110, 101, 114, 2, 105,
-			110, 3, 49, 2, 112, 55, 50, 13, 34, 0, 4, 117, 2, 98, 97, 21, 3, 49, 2, 118, 0, 117, 2, 98, 105, 101, 107, 0, 101, 105,
-			115, 101, 114, 2, 105, 110, 3, 49, 2, 123, 88, 13, 34, 0, 117, 110, 100, 105, 1, 21, 2, 103, 3, 49, 6, 111, 50, 72, 13, 0,
-			117, 115, 1, 105, 3, 49, 6, 111, 89, 0, 101, 114, 1, 114, 101, 100, 101, 119, 2, 17, 65, 3, 49, 6, 116, 34, 0, 101, 117, 114,
-			105, 103, 1, 21, 3, 49, 6, 128, 34, 13, 136, 0, 101, 117, 115, 101, 8, 3, 49, 7, 128, 89, 13, 0, 4, 101, 114, 1, 21, 2,
-			116, 106, 105, 101, 3, 49, 13, 34, 0, 107, 101, 114, 2, 17, 65, 0, 101, 114, 101, 110, 100, 1, 110, 2, 32, 3, 49, 13, 34, 13,
-			50, 47, 0, 101, 114, 101, 110, 100, 101, 1, 110, 2, 32, 3, 49, 13, 34, 13, 50, 72, 13, 0, 101, 114, 107, 101, 114, 115, 1, 107,
-			105, 108, 102, 3, 49, 13, 34, 49, 113, 34, 89, 0, 4, 101, 108, 101, 110, 100, 2, 32, 3, 49, 13, 55, 13, 50, 47, 0, 107, 101,
-			108, 101, 110, 100, 2, 32, 0, 4, 101, 108, 101, 110, 100, 101, 2, 32, 3, 49, 13, 55, 13, 50, 72, 13, 0, 107, 101, 108, 101, 110,
-			100, 101, 2, 32, 0, 4, 101, 108, 105, 110, 103, 3, 49, 13, 55, 13, 68, 0, 107, 101, 108, 105, 110, 103, 0, 114, 97, 2, 119, 97,
-			116, 3, 49, 34, 2, 35, 0, 4, 114, 101, 8, 2, 111, 3, 49, 34, 2, 37, 0, 114, 105, 2, 111, 101, 108, 0, 114, 101, 2, 100,
-			105, 116, 3, 49, 34, 2, 108, 0, 114, 111, 107, 111, 100, 105, 2, 108, 3, 49, 34, 2, 110, 49, 13, 72, 109, 0, 114, 117, 103, 101,
-			114, 3, 49, 34, 6, 128, 13, 34, 0, 114, 97, 103, 8, 2, 17, 65, 3, 49, 34, 7, 35, 136, 10, 0, 4, 114, 101, 2, 100, 105,
-			101, 116, 3, 49, 34, 13, 0, 114, 101, 8, 2, 112, 101, 21, 0, 114, 105, 2, 115, 97, 110, 116, 0, 114, 105, 116, 2, 17, 65, 3,
-			49, 34, 13, 47, 0, 114, 101, 109, 101, 2, 116, 97, 114, 116, 3, 49, 34, 13, 65, 13, 0, 114, 105, 109, 105, 2, 110, 17, 65, 3,
-			49, 34, 13, 65, 13, 6, 0, 114, 105, 115, 116, 97, 2, 108, 3, 49, 34, 13, 89, 47, 35, 0, 114, 105, 116, 105, 101, 115, 3, 49,
-			34, 37, 47, 37, 89, 0, 114, 105, 101, 107, 101, 116, 3, 49, 34, 37, 49, 13, 47, 0, 114, 105, 101, 107, 101, 116, 119, 3, 49, 34,
-			37, 49, 13, 47, 84, 0, 114, 105, 101, 119, 101, 2, 108, 3, 49, 34, 37, 84, 13, 0, 114, 97, 2, 103, 105, 101, 3, 49, 34, 115,
-			0, 97, 109, 101, 108, 101, 8, 3, 49, 35, 65, 6, 116, 55, 13, 0, 105, 108, 111, 8, 3, 49, 37, 55, 2, 40, 0, 105, 101, 115,
-			101, 114, 2, 21, 3, 49, 37, 89, 13, 34, 0, 110, 105, 112, 2, 17, 65, 3, 49, 50, 109, 48, 19, 0, 110, 101, 114, 115, 2, 32,
-			3, 49, 50, 112, 34, 89, 0, 4, 108, 97, 2, 115, 115, 105, 101, 107, 3, 49, 55, 2, 35, 0, 108, 97, 2, 118, 105, 101, 114, 0,
-			108, 97, 114, 105, 110, 101, 2, 116, 3, 49, 55, 2, 35, 34, 2, 37, 50, 108, 0, 108, 97, 110, 100, 101, 2, 115, 116, 105, 3, 49,
-			55, 2, 35, 50, 72, 13, 0, 4, 108, 97, 119, 101, 114, 2, 98, 111, 101, 114, 3, 49, 55, 2, 115, 84, 13, 34, 0, 108, 97, 119,
-			101, 114, 2, 100, 114, 0, 108, 97, 119, 101, 114, 2, 104, 101, 101, 114, 0, 108, 97, 119, 101, 114, 2, 106, 97, 115, 0, 108, 97, 119,
-			101, 114, 2, 110, 101, 103, 101, 0, 108, 97, 119, 101, 114, 2, 115, 101, 119, 0, 108, 97, 119, 101, 114, 2, 116, 0, 108, 97, 119, 101,
-			114, 2, 118, 0, 108, 97, 119, 101, 114, 2, 97, 3, 49, 55, 2, 115, 84, 13, 34, 10, 0, 108, 97, 119, 101, 114, 115, 101, 115, 3,
-			49, 55, 2, 115, 84, 13, 34, 89, 108, 89, 0, 108, 111, 117, 2, 115, 117, 108, 101, 3, 49, 55, 2, 120, 0, 108, 101, 105, 110, 2,
-			115, 105, 101, 108, 105, 3, 49, 55, 2, 123, 50, 0, 108, 101, 105, 110, 115, 101, 2, 114, 105, 103, 3, 49, 55, 2, 123, 50, 89, 116,
-			0, 4, 108, 105, 2, 109, 97, 97, 116, 3, 49, 55, 13, 0, 108, 105, 2, 110, 105, 101, 107, 0, 108, 97, 8, 2, 115, 17, 65, 21,
-			21, 3, 49, 55, 35, 0, 108, 105, 2, 109, 111, 112, 3, 49, 55, 109, 0, 108, 105, 112, 2, 17, 65, 3, 49, 55, 109, 48, 10, 0,
-			108, 105, 109, 1, 103, 114, 101, 98, 2, 17, 65, 3, 49, 55, 109, 65, 10, 0, 108, 97, 2, 107, 111, 117, 115, 3, 49, 55, 115, 0,
-			108, 97, 97, 114, 98, 108, 121, 107, 108, 105, 107, 3, 49, 55, 115, 34, 71, 55, 6, 123, 49, 55, 13, 49, 0, 4, 108, 97, 119, 101,
-			114, 3, 49, 55, 115, 84, 13, 34, 0, 108, 97, 119, 101, 114, 2, 118, 101, 108, 100, 0, 108, 97, 118, 101, 115, 105, 109, 98, 101, 108,
-			3, 49, 55, 115, 84, 13, 89, 13, 65, 71, 13, 55, 0, 108, 101, 114, 101, 3, 49, 55, 116, 34, 13, 0, 108, 101, 117, 114, 2, 101,
-			102, 102, 101, 107, 3, 49, 55, 128, 34, 0, 108, 101, 117, 114, 101, 3, 49, 55, 128, 34, 13, 0, 119, 8, 3, 49, 58, 0, 4, 119,
-			97, 2, 100, 114, 97, 3, 49, 58, 2, 35, 0, 119, 97, 2, 116, 114, 121, 110, 0, 119, 97, 114, 8, 2, 116, 17, 65, 3, 49, 58,
-			2, 35, 34, 0, 119, 97, 114, 97, 110, 2, 116, 3, 49, 58, 2, 35, 34, 13, 50, 0, 119, 97, 114, 116, 101, 2, 116, 3, 49, 58,
-			2, 35, 34, 47, 108, 0, 119, 97, 108, 105, 2, 17, 67, 21, 3, 49, 58, 2, 35, 55, 2, 37, 0, 119, 97, 97, 100, 2, 97, 97,
-			114, 100, 105, 3, 49, 58, 2, 115, 47, 10, 0, 119, 105, 2, 116, 97, 110, 115, 3, 49, 58, 13, 0, 119, 105, 110, 116, 101, 2, 116,
-			3, 49, 58, 13, 50, 47, 108, 0, 119, 97, 114, 116, 2, 101, 101, 117, 3, 49, 58, 35, 34, 47, 10, 0, 119, 97, 114, 116, 101, 105,
-			110, 100, 8, 3, 49, 58, 35, 34, 47, 10, 123, 50, 47, 0, 119, 97, 114, 116, 101, 108, 3, 49, 58, 35, 34, 47, 13, 55, 10, 0,
-			119, 101, 108, 97, 3, 49, 58, 108, 12, 55, 35, 0, 119, 105, 107, 8, 2, 17, 65, 3, 49, 58, 109, 49, 10, 0, 101, 2, 110, 110,
-			17, 65, 25, 3, 49, 108, 0, 117, 114, 119, 101, 3, 49, 111, 34, 84, 13, 0, 101, 114, 1, 21, 2, 115, 105, 101, 32, 3, 49, 112,
-			34, 0, 101, 114, 107, 2, 32, 3, 49, 112, 34, 49, 0, 101, 114, 107, 101, 2, 32, 3, 49, 112, 34, 49, 13, 0, 101, 114, 107, 101,
-			114, 3, 49, 112, 34, 49, 13, 34, 0, 101, 114, 107, 105, 101, 2, 25, 3, 49, 112, 34, 49, 37, 0, 101, 108, 110, 101, 114, 3, 49,
-			112, 55, 50, 13, 34, 0, 4, 101, 114, 115, 1, 108, 101, 116, 116, 111, 98, 3, 49, 113, 34, 89, 0, 101, 114, 115, 1, 115, 101, 101,
-			102, 0, 101, 116, 101, 2, 108, 3, 49, 116, 47, 13, 0, 101, 105, 115, 101, 114, 3, 49, 123, 88, 13, 34, 0, 7, 6, 108, 0, 2,
-			108, 3, 0, 111, 107, 111, 109, 111, 3, 4, 55, 40, 49, 40, 65, 40, 6, 0, 4, 97, 110, 100, 8, 2, 32, 114, 111, 118, 101, 114,
-			3, 21, 0, 101, 1, 17, 67, 2, 32, 0, 101, 115, 115, 1, 21, 2, 32, 0, 108, 1, 21, 2, 32, 24, 0, 3, 55, 0, 4, 97,
-			2, 116, 101, 110, 116, 3, 55, 2, 35, 0, 97, 8, 2, 107, 111, 110, 0, 97, 116, 114, 105, 110, 101, 3, 55, 2, 35, 47, 34, 37,
-			50, 13, 0, 97, 112, 97, 114, 2, 111, 116, 111, 109, 105, 3, 55, 2, 35, 48, 2, 35, 34, 0, 97, 112, 101, 108, 2, 32, 3, 55,
-			2, 35, 48, 6, 112, 55, 0, 97, 112, 101, 2, 108, 25, 3, 55, 2, 35, 48, 112, 0, 97, 110, 8, 2, 115, 17, 65, 3, 55, 2,
-			35, 50, 0, 97, 110, 111, 2, 108, 105, 101, 110, 3, 55, 2, 35, 50, 2, 40, 0, 97, 110, 100, 101, 2, 114, 121, 3, 55, 2, 35,
-			50, 72, 13, 0, 97, 109, 2, 108, 101, 110, 3, 55, 2, 35, 65, 0, 97, 109, 112, 101, 2, 116, 3, 55, 2, 35, 65, 48, 108, 0,
-			4, 97, 110, 103, 2, 119, 101, 114, 112, 3, 55, 2, 35, 68, 0, 97, 110, 103, 8, 2, 100, 21, 21, 0, 97, 110, 107, 2, 109, 111,
-			101, 3, 55, 2, 35, 68, 49, 0, 97, 98, 105, 2, 114, 105, 110, 116, 3, 55, 2, 35, 71, 13, 0, 97, 98, 111, 114, 97, 116, 111,
-			114, 3, 55, 2, 35, 71, 14, 34, 2, 35, 47, 6, 117, 34, 0, 97, 118, 101, 110, 116, 101, 108, 3, 55, 2, 35, 83, 108, 50, 47,
-			13, 55, 0, 97, 103, 117, 110, 101, 3, 55, 2, 35, 136, 118, 50, 13, 0, 105, 2, 107, 119, 105, 100, 3, 55, 2, 37, 0, 4, 105,
-			116, 2, 111, 116, 111, 109, 105, 101, 3, 55, 2, 37, 47, 0, 105, 116, 8, 2, 111, 103, 114, 97, 102, 0, 105, 116, 111, 8, 2, 17,
-			67, 3, 55, 2, 37, 47, 2, 40, 0, 105, 110, 103, 117, 2, 105, 3, 55, 2, 37, 68, 81, 58, 0, 105, 101, 102, 2, 116, 97, 108,
-			108, 3, 55, 2, 37, 83, 0, 4, 111, 2, 106, 97, 3, 55, 2, 40, 0, 111, 2, 107, 97, 108, 17, 65, 0, 117, 112, 105, 110, 101,
-			3, 55, 2, 40, 48, 37, 50, 13, 0, 111, 98, 111, 116, 111, 2, 109, 105, 101, 3, 55, 2, 40, 71, 2, 110, 47, 2, 40, 0, 111,
-			115, 105, 101, 115, 8, 3, 55, 2, 40, 89, 6, 37, 89, 0, 117, 115, 101, 114, 110, 3, 55, 2, 40, 89, 113, 34, 13, 50, 0, 101,
-			103, 105, 2, 111, 101, 110, 3, 55, 2, 108, 136, 2, 37, 0, 111, 109, 2, 98, 97, 114, 100, 17, 65, 3, 55, 2, 110, 65, 0, 111,
-			98, 111, 108, 97, 3, 55, 2, 110, 71, 131, 55, 35, 0, 111, 115, 98, 97, 110, 100, 105, 2, 103, 3, 55, 2, 110, 89, 71, 35, 50,
-			72, 13, 0, 117, 2, 109, 105, 101, 114, 3, 55, 2, 111, 0, 117, 107, 115, 97, 2, 108, 105, 103, 3, 55, 2, 111, 49, 89, 6, 115,
-			0, 101, 100, 101, 2, 107, 97, 110, 116, 3, 55, 2, 116, 72, 13, 0, 101, 118, 105, 2, 97, 116, 97, 110, 3, 55, 2, 116, 84, 2,
-			37, 0, 111, 117, 2, 114, 105, 101, 114, 3, 55, 2, 120, 0, 4, 121, 107, 2, 109, 111, 101, 100, 3, 55, 2, 123, 49, 0, 121, 107,
-			2, 110, 97, 109, 0, 117, 105, 116, 101, 2, 110, 97, 110, 116, 3, 55, 2, 127, 47, 13, 0, 117, 105, 100, 2, 114, 117, 103, 116, 3,
-			55, 2, 127, 72, 0, 111, 115, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 55, 6, 110, 89, 136, 13, 0, 117, 115, 116, 105, 1, 21,
-			2, 103, 3, 55, 6, 111, 89, 47, 13, 0, 101, 101, 114, 1, 105, 17, 67, 3, 55, 6, 116, 34, 0, 101, 114, 105, 110, 103, 2, 32,
-			3, 55, 6, 116, 34, 13, 68, 0, 117, 103, 8, 2, 17, 67, 3, 55, 7, 111, 136, 0, 4, 101, 1, 108, 2, 32, 3, 55, 13, 0,
-			101, 1, 108, 21, 2, 115, 17, 67, 21, 0, 105, 2, 107, 101, 117, 114, 0, 105, 2, 114, 105, 101, 107, 0, 105, 2, 116, 117, 114, 103,
-			105, 101, 0, 105, 8, 2, 109, 105, 0, 105, 116, 101, 114, 2, 17, 65, 3, 55, 13, 47, 13, 34, 0, 105, 116, 101, 114, 97, 2, 116,
-			3, 55, 13, 47, 13, 34, 2, 35, 0, 105, 107, 1, 10, 2, 32, 14, 128, 128, 131, 3, 55, 13, 49, 0, 4, 105, 107, 101, 1, 10,
-			2, 17, 67, 21, 3, 55, 13, 49, 13, 0, 105, 107, 101, 1, 10, 2, 32, 14, 128, 128, 132, 0, 105, 107, 107, 101, 2, 119, 97, 0,
-			105, 107, 101, 114, 1, 10, 2, 32, 14, 128, 128, 133, 3, 55, 13, 49, 13, 34, 0, 105, 107, 101, 115, 1, 10, 2, 32, 14, 128, 128,
-			133, 3, 55, 13, 49, 13, 89, 0, 105, 107, 115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 134, 3, 55, 13, 49, 89, 47, 13, 0, 105,
-			110, 105, 2, 97, 97, 108, 3, 55, 13, 50, 2, 37, 0, 105, 110, 111, 2, 108, 101, 117, 109, 3, 55, 13, 50, 117, 0, 105, 109, 111,
-			117, 115, 105, 110, 101, 3, 55, 13, 65, 2, 40, 88, 37, 12, 50, 0, 105, 98, 101, 2, 114, 17, 65, 3, 55, 13, 71, 13, 0, 105,
-			98, 101, 8, 2, 114, 105, 21, 3, 55, 13, 71, 116, 0, 101, 118, 8, 2, 105, 3, 55, 13, 83, 0, 101, 119, 101, 114, 107, 1, 17,
-			65, 3, 55, 13, 84, 112, 34, 49, 0, 105, 115, 101, 110, 115, 105, 2, 101, 101, 114, 3, 55, 13, 89, 2, 108, 50, 89, 2, 37, 0,
-			105, 115, 101, 110, 115, 105, 101, 3, 55, 13, 89, 108, 12, 50, 89, 2, 37, 0, 105, 103, 2, 104, 111, 111, 102, 100, 3, 55, 13, 136,
-			0, 105, 103, 101, 110, 3, 55, 13, 136, 6, 108, 50, 0, 101, 103, 101, 110, 2, 100, 97, 3, 55, 13, 136, 13, 50, 0, 101, 103, 101,
-			110, 100, 101, 3, 55, 13, 136, 108, 50, 72, 13, 0, 105, 103, 103, 97, 97, 109, 108, 105, 107, 3, 55, 13, 136, 115, 65, 55, 13, 49,
-			0, 109, 1, 10, 2, 25, 3, 55, 14, 65, 0, 97, 110, 103, 101, 8, 2, 17, 67, 17, 65, 3, 55, 35, 68, 13, 0, 97, 102, 2,
-			97, 97, 114, 3, 55, 35, 83, 0, 4, 105, 2, 103, 97, 32, 3, 55, 37, 0, 105, 8, 2, 103, 97, 17, 67, 0, 105, 101, 102, 100,
-			101, 115, 3, 55, 37, 83, 72, 13, 89, 0, 101, 110, 100, 101, 8, 3, 55, 108, 50, 72, 13, 0, 4, 101, 115, 1, 17, 67, 21, 2,
-			25, 3, 55, 108, 89, 0, 101, 115, 1, 101, 105, 2, 32, 0, 101, 115, 115, 101, 1, 17, 67, 21, 2, 32, 3, 55, 108, 89, 13, 0,
-			105, 8, 2, 103, 3, 55, 109, 0, 105, 110, 107, 101, 114, 3, 55, 109, 68, 49, 13, 34, 0, 117, 115, 2, 111, 3, 55, 111, 89, 10,
-			0, 117, 103, 2, 17, 65, 3, 55, 111, 136, 19, 0, 101, 2, 107, 107, 101, 114, 3, 55, 112, 0, 97, 112, 97, 8, 2, 25, 3, 55,
-			115, 48, 35, 0, 101, 112, 101, 2, 108, 108, 3, 55, 116, 48, 13, 0, 101, 110, 105, 110, 103, 3, 55, 116, 50, 13, 68, 0, 101, 108,
-			105, 2, 107, 3, 55, 116, 55, 13, 0, 4, 101, 100, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 116, 72, 13, 0, 101, 100, 101,
-			1, 114, 101, 118, 2, 25, 0, 101, 100, 101, 2, 17, 67, 0, 101, 100, 105, 110, 103, 2, 32, 3, 55, 116, 72, 13, 68, 0, 101, 119,
-			101, 2, 25, 3, 55, 116, 84, 13, 0, 101, 119, 101, 2, 116, 106, 105, 101, 3, 55, 116, 84, 37, 0, 111, 114, 101, 8, 2, 17, 67,
-			21, 3, 55, 117, 34, 13, 0, 117, 2, 107, 119, 97, 114, 116, 3, 55, 118, 0, 117, 116, 104, 101, 114, 3, 55, 118, 47, 13, 34, 0,
-			101, 117, 101, 110, 2, 116, 106, 105, 101, 3, 55, 128, 37, 68, 0, 4, 97, 109, 102, 101, 114, 3, 55, 133, 65, 83, 13, 34, 0, 97,
-			110, 102, 101, 114, 0, 7, 6, 109, 0, 2, 109, 3, 0, 110, 1, 21, 2, 32, 3, 21, 0, 3, 65, 0, 117, 115, 105, 101, 107, 3,
-			65, 2, 111, 89, 37, 49, 0, 117, 115, 107, 97, 100, 101, 108, 3, 65, 2, 111, 89, 49, 2, 35, 72, 112, 55, 0, 117, 115, 107, 101,
-			2, 116, 105, 101, 114, 3, 65, 2, 111, 89, 49, 13, 0, 117, 115, 107, 101, 108, 2, 106, 97, 97, 116, 3, 65, 2, 111, 89, 49, 13,
-			55, 0, 117, 115, 101, 117, 109, 3, 65, 2, 118, 89, 128, 65, 0, 109, 101, 1, 17, 65, 17, 67, 2, 17, 67, 3, 65, 13, 0, 109,
-			101, 1, 17, 65, 17, 67, 2, 116, 106, 105, 101, 3, 65, 37, 0, 112, 101, 108, 1, 21, 2, 17, 65, 3, 65, 48, 13, 55, 0, 117,
-			114, 109, 101, 108, 3, 65, 111, 34, 65, 13, 55, 0, 117, 115, 105, 2, 17, 67, 3, 65, 118, 89, 37, 6, 0, 121, 109, 101, 114, 3,
-			65, 123, 65, 13, 34, 0, 195, 180, 114, 101, 2, 21, 3, 65, 131, 34, 13, 0, 7, 6, 110, 0, 4, 2, 32, 110, 3, 0, 2, 110,
-			3, 0, 97, 2, 116, 97, 108, 3, 4, 50, 35, 6, 0, 4, 3, 50, 0, 1, 10, 2, 103, 97, 116, 0, 1, 97, 97, 2, 103, 97,
-			115, 0, 1, 101, 2, 103, 111, 101, 17, 67, 0, 1, 101, 101, 2, 103, 0, 1, 101, 111, 2, 103, 0, 1, 101, 119, 2, 103, 21, 12,
-			12, 0, 1, 105, 101, 2, 103, 0, 1, 105, 112, 115, 2, 103, 101, 0, 1, 105, 117, 17, 67, 2, 103, 0, 1, 111, 111, 2, 103, 0,
-			1, 117, 101, 2, 103, 0, 1, 121, 2, 103, 0, 1, 171, 195, 2, 103, 0, 2, 32, 110, 32, 0, 8, 2, 17, 65, 17, 65, 0, 4,
-			97, 1, 21, 2, 108, 105, 115, 3, 50, 2, 35, 0, 97, 2, 116, 117, 117, 114, 0, 97, 2, 118, 114, 97, 110, 116, 0, 97, 8, 2,
-			114, 107, 0, 97, 2, 195, 175, 3, 50, 2, 35, 10, 0, 97, 2, 195, 175, 3, 50, 2, 35, 19, 0, 97, 114, 101, 115, 2, 32, 3,
-			50, 2, 35, 34, 6, 108, 89, 0, 97, 116, 117, 114, 101, 2, 108, 25, 3, 50, 2, 35, 47, 2, 118, 34, 112, 0, 97, 112, 111, 108,
-			101, 2, 111, 110, 116, 3, 50, 2, 35, 48, 2, 117, 55, 2, 37, 0, 97, 112, 111, 2, 108, 101, 111, 110, 3, 50, 2, 35, 48, 117,
-			0, 97, 109, 97, 107, 119, 97, 3, 50, 2, 35, 65, 35, 49, 58, 2, 35, 0, 97, 109, 105, 2, 98, 105, 3, 50, 2, 35, 65, 109,
-			0, 97, 118, 105, 103, 3, 50, 2, 35, 84, 2, 37, 136, 0, 97, 115, 105, 111, 2, 110, 97, 3, 50, 2, 35, 91, 2, 37, 2, 40,
-			0, 101, 2, 97, 110, 100, 101, 114, 17, 67, 97, 3, 50, 2, 37, 0, 101, 111, 2, 108, 105, 3, 50, 2, 37, 2, 40, 0, 4, 105,
-			107, 111, 2, 116, 105, 3, 50, 2, 37, 49, 2, 40, 0, 105, 107, 111, 2, 116, 105, 101, 110, 0, 111, 116, 2, 101, 114, 105, 110, 103,
-			3, 50, 2, 40, 47, 0, 111, 116, 117, 108, 101, 2, 25, 3, 50, 2, 40, 47, 118, 55, 13, 0, 111, 118, 101, 108, 108, 101, 3, 50,
-			2, 40, 83, 112, 55, 13, 0, 101, 107, 116, 97, 2, 114, 105, 101, 110, 3, 50, 2, 108, 49, 47, 2, 35, 0, 111, 2, 115, 116, 97,
-			108, 103, 105, 101, 3, 50, 2, 110, 0, 111, 114, 2, 109, 97, 21, 3, 50, 2, 110, 34, 0, 111, 107, 116, 117, 114, 110, 101, 3, 50,
-			2, 110, 49, 47, 111, 34, 50, 13, 0, 111, 110, 99, 104, 97, 2, 108, 97, 3, 50, 2, 110, 50, 91, 2, 35, 0, 111, 109, 105, 2,
-			110, 17, 65, 3, 50, 2, 110, 65, 2, 37, 0, 111, 109, 109, 101, 114, 2, 101, 101, 110, 3, 50, 2, 110, 65, 13, 34, 19, 0, 111,
-			115, 116, 97, 108, 2, 103, 105, 101, 32, 24, 3, 50, 2, 110, 89, 47, 2, 35, 55, 0, 101, 114, 2, 118, 101, 117, 3, 50, 2, 112,
-			34, 0, 4, 97, 2, 98, 117, 114, 105, 103, 3, 50, 2, 115, 0, 97, 2, 98, 121, 103, 101, 0, 97, 8, 2, 98, 121, 21, 0, 97,
-			8, 2, 100, 101, 108, 105, 103, 0, 97, 8, 2, 108, 97, 116, 105, 103, 0, 97, 8, 2, 115, 112, 101, 117, 114, 0, 97, 2, 121, 119,
-			101, 114, 105, 103, 3, 50, 2, 115, 10, 0, 97, 97, 114, 115, 116, 105, 103, 116, 101, 3, 50, 2, 115, 34, 89, 47, 109, 136, 47, 13,
-			0, 97, 98, 121, 104, 2, 101, 3, 50, 2, 115, 71, 123, 107, 0, 4, 101, 101, 114, 2, 100, 114, 117, 107, 107, 3, 50, 2, 116, 34,
-			0, 101, 101, 114, 2, 104, 97, 108, 101, 110, 100, 0, 101, 103, 101, 114, 2, 105, 110, 3, 50, 2, 116, 136, 13, 34, 0, 111, 2, 109,
-			97, 100, 3, 50, 2, 117, 0, 111, 111, 114, 100, 2, 111, 111, 115, 3, 50, 2, 117, 34, 47, 10, 0, 4, 111, 111, 100, 2, 108, 111,
-			116, 116, 105, 3, 50, 2, 117, 47, 0, 111, 111, 100, 2, 115, 97, 97, 107, 0, 111, 116, 97, 114, 105, 2, 17, 65, 3, 50, 2, 117,
-			47, 2, 35, 34, 2, 37, 38, 0, 111, 98, 101, 108, 8, 3, 50, 2, 117, 71, 112, 55, 0, 111, 118, 101, 109, 98, 101, 114, 3, 50,
-			2, 117, 83, 108, 65, 71, 13, 34, 0, 117, 97, 110, 2, 115, 101, 101, 114, 3, 50, 2, 118, 2, 35, 50, 0, 117, 97, 110, 115, 101,
-			2, 114, 105, 110, 103, 3, 50, 2, 118, 2, 35, 50, 89, 116, 0, 117, 97, 110, 115, 101, 2, 25, 3, 50, 2, 118, 35, 50, 89, 13,
-			0, 117, 119, 101, 114, 2, 119, 101, 116, 3, 50, 2, 118, 84, 13, 34, 0, 117, 117, 115, 2, 107, 105, 101, 114, 105, 103, 3, 50, 2,
-			118, 89, 0, 101, 117, 2, 116, 114, 3, 50, 2, 128, 0, 101, 117, 114, 111, 2, 17, 67, 17, 65, 3, 50, 2, 128, 34, 117, 0, 97,
-			8, 2, 17, 67, 32, 3, 50, 6, 35, 0, 97, 103, 8, 2, 17, 67, 3, 50, 6, 35, 136, 0, 97, 8, 3, 50, 6, 115, 0, 97,
-			103, 8, 2, 114, 97, 97, 100, 3, 50, 6, 115, 136, 0, 97, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 50, 6, 115, 136, 13, 0,
-			101, 108, 101, 1, 10, 2, 32, 3, 50, 6, 116, 55, 13, 0, 101, 101, 115, 1, 21, 2, 32, 3, 50, 6, 116, 89, 0, 101, 115, 101,
-			2, 32, 3, 50, 6, 116, 89, 13, 0, 4, 121, 1, 114, 101, 17, 67, 21, 2, 32, 3, 50, 6, 123, 0, 121, 1, 114, 101, 17, 67,
-			21, 2, 101, 0, 97, 8, 2, 115, 107, 101, 101, 114, 3, 50, 7, 115, 0, 101, 101, 114, 103, 101, 8, 2, 17, 67, 21, 14, 128, 132,
-			134, 3, 50, 7, 116, 34, 136, 13, 0, 101, 2, 103, 111, 115, 105, 101, 3, 50, 13, 0, 110, 105, 110, 103, 3, 50, 13, 68, 0, 110,
-			101, 115, 1, 97, 104, 3, 50, 13, 89, 0, 4, 97, 1, 21, 2, 32, 3, 50, 35, 0, 97, 8, 2, 114, 17, 67, 0, 97, 8, 2,
-			116, 17, 67, 0, 97, 115, 116, 101, 114, 2, 103, 3, 50, 35, 89, 47, 13, 34, 0, 4, 97, 103, 2, 97, 100, 100, 101, 114, 3, 50,
-			35, 136, 10, 0, 97, 103, 2, 117, 105, 108, 0, 97, 103, 8, 2, 97, 97, 112, 0, 97, 103, 8, 2, 97, 112, 17, 65, 0, 105, 116,
-			114, 111, 3, 50, 37, 47, 34, 2, 40, 0, 116, 101, 114, 101, 2, 115, 115, 3, 50, 47, 34, 13, 6, 0, 101, 116, 2, 119, 101, 114,
-			107, 3, 50, 108, 47, 0, 101, 116, 116, 111, 8, 3, 50, 108, 47, 2, 40, 0, 4, 101, 116, 2, 97, 103, 116, 105, 103, 3, 50, 108,
-			47, 10, 0, 101, 116, 8, 2, 111, 0, 4, 101, 115, 1, 17, 67, 21, 2, 32, 3, 50, 108, 89, 0, 101, 115, 1, 101, 121, 98, 0,
-			101, 115, 1, 115, 2, 25, 0, 101, 115, 1, 121, 98, 0, 101, 115, 8, 2, 101, 105, 3, 50, 108, 89, 10, 0, 105, 2, 103, 103, 105,
-			101, 3, 50, 109, 0, 111, 103, 97, 108, 3, 50, 110, 136, 35, 55, 0, 101, 107, 2, 111, 109, 3, 50, 112, 49, 10, 0, 4, 97, 1,
-			114, 2, 32, 3, 50, 115, 0, 97, 2, 98, 111, 111, 116, 115, 0, 97, 2, 116, 114, 105, 117, 109, 0, 97, 2, 116, 114, 111, 115, 25,
-			0, 97, 2, 118, 114, 97, 0, 97, 8, 2, 103, 108, 111, 101, 0, 97, 8, 2, 115, 112, 101, 117, 114, 32, 24, 0, 97, 8, 2, 116,
-			114, 101, 107, 25, 0, 97, 1, 10, 2, 119, 101, 3, 50, 115, 2, 0, 97, 122, 105, 3, 50, 115, 47, 89, 37, 0, 97, 109, 101, 115,
-			3, 50, 115, 65, 13, 89, 0, 97, 100, 114, 117, 107, 108, 105, 107, 3, 50, 115, 72, 34, 6, 111, 49, 55, 13, 49, 0, 101, 116, 101,
-			108, 3, 50, 116, 47, 13, 55, 0, 111, 111, 100, 2, 115, 97, 97, 107, 32, 24, 3, 50, 117, 47, 0, 111, 116, 101, 2, 98, 3, 50,
-			117, 47, 13, 0, 121, 108, 111, 110, 3, 50, 122, 55, 110, 50, 0, 101, 117, 116, 101, 3, 50, 128, 47, 13, 0, 103, 101, 101, 115, 3,
-			50, 136, 116, 89, 0, 4, 2, 32, 103, 3, 68, 0, 2, 99, 0, 2, 107, 0, 2, 113, 0, 2, 116, 106, 105, 101, 0, 2, 120, 0,
-			103, 0, 103, 101, 114, 1, 17, 65, 17, 67, 3, 68, 13, 34, 0, 103, 101, 115, 1, 21, 2, 32, 3, 68, 13, 89, 0, 103, 117, 110,
-			105, 8, 3, 68, 81, 40, 12, 50, 37, 0, 4, 103, 1, 21, 2, 105, 116, 105, 115, 32, 3, 68, 136, 0, 103, 2, 101, 101, 82, 0,
-			103, 2, 101, 110, 116, 0, 7, 6, 111, 0, 4, 1, 17, 67, 2, 17, 67, 17, 65, 17, 65, 3, 2, 40, 0, 1, 17, 67, 2, 17,
-			67, 121, 0, 1, 17, 67, 10, 2, 32, 24, 0, 1, 107, 105, 115, 105, 114, 0, 2, 108, 105, 101, 110, 0, 97, 115, 101, 3, 2, 40,
-			10, 115, 89, 13, 0, 8, 105, 100, 117, 17, 65, 3, 2, 40, 12, 0, 114, 97, 110, 103, 2, 111, 101, 116, 3, 2, 40, 34, 2, 35,
-			68, 10, 0, 107, 114, 97, 116, 2, 105, 115, 17, 65, 3, 2, 40, 49, 34, 2, 35, 47, 0, 4, 2, 114, 97, 107, 101, 108, 3, 2,
-			110, 0, 2, 115, 111, 111, 110, 0, 8, 2, 109, 97, 114, 109, 0, 4, 114, 8, 2, 103, 97, 3, 2, 110, 34, 0, 114, 8, 2, 107,
-			97, 0, 4, 114, 116, 2, 111, 103, 114, 97, 3, 2, 110, 34, 47, 0, 114, 116, 2, 111, 108, 111, 0, 114, 116, 2, 111, 109, 101, 116,
-			114, 0, 114, 116, 2, 111, 115, 107, 111, 0, 114, 116, 111, 8, 2, 21, 3, 2, 110, 34, 47, 2, 40, 0, 114, 107, 101, 115, 3, 2,
-			110, 34, 49, 108, 89, 0, 114, 100, 111, 2, 110, 110, 97, 110, 3, 2, 110, 34, 72, 13, 0, 114, 100, 101, 110, 116, 8, 3, 2, 110,
-			34, 72, 108, 50, 47, 0, 114, 103, 97, 110, 105, 2, 115, 17, 65, 3, 2, 110, 34, 136, 2, 35, 50, 37, 0, 114, 103, 105, 2, 100,
-			101, 3, 2, 110, 34, 136, 13, 0, 98, 8, 2, 115, 3, 2, 110, 48, 0, 98, 115, 101, 114, 2, 118, 101, 101, 114, 3, 2, 110, 48,
-			89, 2, 112, 34, 0, 98, 115, 116, 105, 2, 110, 97, 3, 2, 110, 48, 89, 47, 13, 0, 107, 8, 2, 116, 17, 65, 3, 2, 110, 49,
-			0, 107, 107, 101, 114, 2, 110, 101, 117, 116, 3, 2, 110, 49, 13, 34, 0, 4, 109, 2, 108, 121, 3, 2, 110, 65, 0, 109, 2, 114,
-			105, 110, 103, 0, 109, 2, 115, 101, 105, 108, 0, 109, 2, 115, 105, 103, 0, 109, 2, 115, 119, 101, 114, 17, 67, 0, 109, 2, 118, 97,
-			116, 116, 0, 109, 2, 119, 101, 110, 116, 101, 108, 105, 0, 109, 8, 2, 103, 111, 114, 100, 0, 109, 8, 2, 104, 0, 109, 8, 2, 107,
-			108, 101, 109, 0, 109, 8, 2, 108, 97, 97, 103, 0, 109, 8, 2, 109, 117, 117, 114, 0, 109, 8, 2, 114, 97, 97, 109, 0, 109, 8,
-			2, 115, 105, 114, 107, 101, 108, 0, 109, 8, 2, 115, 107, 101, 112, 0, 109, 8, 2, 115, 107, 114, 0, 109, 8, 2, 115, 108, 117, 105,
-			101, 114, 0, 109, 8, 2, 115, 108, 117, 105, 116, 0, 109, 8, 2, 115, 116, 114, 101, 100, 101, 0, 109, 8, 2, 119, 97, 108, 0, 109,
-			8, 2, 119, 101, 108, 17, 67, 0, 109, 101, 108, 101, 2, 116, 3, 2, 110, 65, 13, 55, 108, 0, 109, 108, 105, 8, 2, 103, 103, 3,
-			2, 110, 65, 55, 109, 0, 109, 118, 101, 114, 8, 3, 2, 110, 65, 83, 112, 34, 0, 109, 115, 116, 97, 110, 100, 105, 103, 104, 3, 2,
-			110, 65, 89, 47, 35, 50, 72, 13, 136, 0, 109, 115, 107, 97, 110, 115, 8, 3, 2, 110, 65, 89, 49, 35, 50, 89, 0, 109, 115, 105,
-			110, 103, 101, 108, 3, 2, 110, 65, 89, 109, 68, 13, 55, 0, 109, 103, 101, 119, 105, 110, 103, 3, 2, 110, 65, 136, 116, 84, 13, 68,
-			0, 102, 102, 105, 115, 105, 3, 2, 110, 83, 2, 37, 91, 2, 37, 38, 0, 102, 102, 105, 2, 115, 105, 101, 114, 3, 2, 110, 83, 13,
-			0, 118, 117, 3, 2, 110, 84, 2, 118, 0, 115, 8, 2, 109, 111, 17, 67, 3, 2, 110, 89, 0, 115, 115, 105, 108, 108, 2, 101, 3,
-			2, 110, 89, 13, 55, 0, 115, 115, 105, 108, 108, 101, 2, 17, 67, 17, 65, 3, 2, 110, 89, 13, 55, 116, 0, 4, 1, 17, 67, 2,
-			17, 67, 105, 101, 101, 3, 2, 117, 0, 2, 108, 105, 109, 0, 2, 108, 121, 17, 67, 0, 2, 112, 97, 97, 108, 0, 2, 112, 97, 108,
-			101, 0, 8, 2, 118, 97, 21, 0, 114, 105, 195, 171, 110, 116, 2, 21, 3, 2, 117, 34, 2, 37, 57, 2, 108, 50, 47, 0, 114, 97,
-			110, 106, 101, 3, 2, 117, 34, 35, 50, 57, 13, 0, 114, 101, 110, 116, 2, 25, 3, 2, 117, 34, 108, 50, 47, 0, 116, 111, 109, 105,
-			101, 1, 21, 2, 32, 24, 3, 2, 117, 47, 2, 40, 65, 6, 37, 0, 116, 111, 109, 105, 101, 1, 21, 2, 195, 171, 3, 2, 117, 47,
-			2, 40, 65, 6, 37, 12, 0, 107, 97, 112, 105, 3, 2, 117, 49, 115, 48, 2, 37, 0, 108, 101, 2, 97, 110, 100, 101, 114, 3, 2,
-			117, 55, 2, 37, 0, 108, 121, 109, 2, 112, 3, 2, 117, 55, 109, 65, 0, 109, 105, 8, 2, 115, 115, 105, 101, 3, 2, 117, 65, 37,
-			0, 109, 101, 103, 97, 3, 2, 117, 65, 116, 136, 35, 0, 118, 97, 114, 105, 2, 111, 116, 111, 109, 105, 3, 2, 117, 84, 2, 115, 34,
-			2, 37, 0, 119, 101, 114, 2, 115, 112, 101, 108, 105, 103, 3, 2, 117, 84, 13, 34, 0, 115, 101, 2, 97, 3, 2, 117, 91, 2, 37,
-			0, 117, 116, 2, 111, 107, 114, 97, 3, 2, 120, 47, 0, 117, 100, 101, 114, 2, 119, 101, 116, 3, 2, 120, 72, 13, 34, 0, 1, 114,
+		autoFileInMemorySet me = FileInMemorySet_create ();
+		static unsigned char espeakdata_dicts1_data[82373] = {
+			0, 4, 0, 0, 31, 84, 0, 0, 0, 25, 74, 64, 81, 1, 48, 81, 5, 53, 2, 78, 28, 48, 13, 72, 115, 55, 13, 72, 108, 65,
+			48, 13, 68, 0, 0, 13, 68, 16, 149, 129, 56, 72, 37, 84, 6, 35, 50, 0, 0, 20, 71, 88, 19, 141, 20, 193, 87, 20, 83, 35,
+			50, 65, 13, 55, 6, 116, 84, 13, 0, 0, 0, 23, 65, 4, 35, 15, 49, 35, 48, 6, 112, 55, 35, 0, 81, 99, 97, 112, 112, 101,
+			108, 108, 97, 32, 0, 11, 68, 60, 244, 140, 20, 117, 34, 55, 13, 0, 24, 65, 108, 35, 15, 55, 35, 15, 49, 6, 35, 34, 47, 0,
+			82, 108, 97, 32, 99, 97, 114, 116, 101, 32, 5, 193, 108, 43, 49, 0, 15, 69, 56, 82, 193, 72, 80, 50, 112, 49, 10, 115, 34, 13,
+			0, 10, 69, 76, 244, 8, 36, 80, 21, 0, 47, 12, 69, 52, 84, 129, 4, 144, 65, 13, 34, 122, 0, 13, 69, 28, 84, 148, 36, 80,
+			81, 109, 12, 47, 37, 0, 0, 9, 198, 52, 19, 5, 4, 114, 64, 67, 0, 8, 197, 60, 225, 9, 56, 112, 65, 12, 201, 4, 208, 78,
+			104, 147, 84, 61, 66, 64, 68, 6, 65, 8, 71, 116, 0, 0, 21, 71, 81, 32, 80, 21, 50, 85, 52, 47, 34, 35, 48, 6, 116, 89,
+			37, 12, 111, 65, 0, 0, 8, 197, 60, 244, 139, 60, 208, 66, 13, 68, 16, 246, 69, 56, 72, 131, 57, 6, 108, 50, 0, 6, 195, 89,
+			48, 64, 13, 14, 67, 52, 82, 128, 65, 13, 57, 111, 83, 34, 120, 0, 24, 0, 24, 73, 64, 19, 132, 20, 211, 206, 37, 83, 64, 48,
+			35, 50, 72, 13, 65, 6, 117, 50, 37, 111, 65, 0, 17, 70, 52, 16, 129, 50, 51, 0, 65, 35, 71, 35, 55, 6, 112, 55, 0, 0,
+			22, 72, 65, 35, 205, 21, 66, 5, 85, 48, 48, 34, 40, 65, 6, 116, 47, 37, 38, 111, 89, 0, 9, 198, 92, 19, 8, 4, 195, 1,
+			66, 6, 65, 12, 89, 116, 0, 0, 13, 68, 20, 192, 78, 4, 37, 55, 6, 115, 50, 35, 0, 0, 14, 69, 20, 97, 129, 80, 16, 108,
+			83, 6, 115, 47, 35, 0, 0, 0, 6, 65, 16, 72, 116, 0, 0, 13, 68, 4, 224, 76, 20, 35, 50, 6, 115, 55, 13, 0, 0, 0,
+			18, 70, 88, 84, 135, 20, 193, 100, 83, 113, 34, 136, 13, 55, 4, 116, 13, 0, 9, 198, 4, 117, 5, 73, 113, 100, 67, 13, 70, 88,
+			149, 133, 56, 66, 64, 21, 108, 97, 0, 47, 17, 70, 9, 84, 149, 56, 66, 64, 71, 40, 34, 6, 40, 50, 72, 37, 0, 12, 4, 95,
+			100, 112, 116, 6, 48, 111, 50, 47, 0, 0, 14, 69, 88, 84, 151, 20, 112, 83, 113, 34, 84, 112, 136, 0, 5, 65, 20, 116, 0, 0,
+			17, 70, 40, 19, 148, 92, 18, 192, 57, 35, 50, 47, 58, 6, 35, 49, 0, 16, 70, 16, 17, 5, 48, 146, 192, 72, 115, 72, 13, 55,
+			109, 49, 0, 0, 0, 0, 16, 70, 88, 243, 210, 8, 83, 133, 83, 117, 34, 71, 116, 50, 13, 0, 17, 70, 12, 128, 82, 37, 51, 65,
+			49, 35, 34, 6, 109, 89, 65, 35, 0, 17, 70, 52, 17, 5, 48, 83, 133, 65, 35, 72, 13, 55, 6, 116, 50, 0, 17, 70, 52, 17,
+			5, 48, 83, 133, 65, 35, 72, 13, 55, 6, 116, 50, 0, 6, 65, 24, 108, 83, 0, 0, 0, 0, 11, 68, 88, 149, 143, 76, 21, 108,
+			97, 0, 47, 12, 68, 12, 84, 133, 76, 89, 116, 34, 13, 89, 0, 0, 18, 71, 8, 241, 68, 5, 1, 83, 80, 71, 40, 72, 35, 48,
+			108, 89, 47, 0, 6, 65, 28, 136, 116, 0, 0, 21, 72, 8, 17, 5, 56, 131, 210, 77, 64, 71, 115, 72, 13, 50, 107, 110, 34, 89,
+			47, 0, 0, 17, 70, 60, 225, 5, 73, 34, 71, 110, 50, 13, 34, 6, 109, 136, 0, 36, 14, 69, 12, 20, 9, 80, 16, 49, 35, 48,
+			37, 47, 35, 0, 8, 195, 44, 19, 128, 72, 9, 32, 0, 7, 196, 60, 228, 149, 76, 65, 9, 68, 48, 245, 73, 76, 55, 126, 0, 11,
+			68, 24, 20, 129, 60, 83, 115, 34, 117, 0, 0, 6, 65, 32, 107, 115, 0, 0, 0, 13, 69, 4, 209, 76, 20, 80, 35, 65, 13, 55,
+			116, 0, 0, 10, 1, 35, 50, 110, 65, 13, 34, 0, 27, 0, 5, 65, 36, 37, 0, 0, 16, 70, 80, 241, 82, 20, 177, 78, 47, 40,
+			34, 116, 49, 13, 50, 0, 9, 198, 60, 224, 146, 84, 146, 192, 65, 12, 201, 32, 243, 198, 76, 16, 75, 48, 146, 192, 66, 11, 68, 4,
+			68, 137, 20, 115, 72, 34, 37, 0, 13, 1, 37, 48, 13, 34, 89, 6, 108, 50, 47, 0, 27, 0, 13, 70, 21, 133, 18, 20, 210, 83,
+			21, 108, 97, 0, 47, 22, 72, 76, 244, 200, 4, 225, 213, 88, 80, 89, 110, 91, 35, 68, 81, 6, 40, 12, 84, 108, 0, 14, 1, 38,
+			23, 35, 65, 48, 112, 34, 89, 35, 50, 47, 0, 4, 193, 112, 43, 0, 17, 70, 88, 84, 147, 24, 83, 4, 83, 112, 34, 89, 83, 112,
+			55, 47, 0, 17, 70, 25, 32, 78, 128, 242, 83, 83, 34, 133, 50, 89, 58, 6, 115, 0, 0, 15, 72, 85, 53, 70, 73, 80, 212, 85,
+			48, 21, 108, 97, 0, 47, 6, 65, 40, 57, 116, 0, 0, 0, 8, 67, 76, 148, 128, 21, 0, 47, 9, 1, 42, 89, 47, 112, 34, 0,
+			27, 7, 196, 76, 19, 146, 8, 13, 0, 11, 70, 92, 147, 12, 36, 19, 64, 21, 0, 47, 13, 69, 76, 128, 82, 60, 224, 91, 112, 34,
+			14, 50, 0, 10, 69, 8, 244, 212, 60, 224, 21, 0, 47, 10, 1, 43, 48, 55, 6, 111, 89, 0, 27, 0, 16, 69, 32, 84, 133, 72,
+			240, 107, 108, 34, 6, 108, 12, 34, 40, 0, 17, 69, 4, 64, 71, 36, 240, 35, 72, 6, 115, 75, 37, 38, 2, 120, 0, 6, 65, 44,
+			49, 115, 0, 0, 0, 9, 1, 46, 48, 111, 50, 47, 0, 27, 0, 8, 197, 20, 180, 205, 4, 224, 65, 17, 70, 92, 147, 8, 20, 195,
+			64, 84, 13, 55, 107, 112, 55, 14, 65, 0, 10, 1, 47, 89, 47, 34, 116, 48, 0, 27, 0, 16, 4, 95, 100, 105, 97, 72, 6, 116,
+			55, 47, 116, 49, 13, 50, 0, 6, 65, 48, 112, 55, 0, 0, 12, 68, 88, 84, 130, 100, 83, 13, 34, 71, 123, 0, 20, 71, 44, 193,
+			79, 64, 21, 18, 4, 49, 55, 119, 12, 48, 6, 115, 47, 34, 35, 0, 0, 18, 70, 20, 193, 15, 72, 17, 15, 112, 55, 72, 110, 34,
+			6, 115, 72, 120, 0, 12, 67, 52, 85, 128, 65, 13, 83, 34, 120, 0, 24, 0, 14, 69, 28, 83, 161, 88, 80, 90, 13, 50, 108, 12,
+			84, 0, 0, 18, 70, 73, 147, 69, 48, 20, 153, 34, 123, 65, 13, 55, 35, 34, 6, 123, 0, 17, 70, 8, 81, 5, 92, 85, 5, 71,
+			116, 72, 13, 84, 116, 47, 13, 0, 6, 65, 52, 108, 65, 0, 0, 9, 198, 60, 225, 197, 52, 18, 192, 65, 24, 74, 44, 243, 134, 101,
+			69, 5, 73, 66, 137, 20, 49, 110, 50, 83, 6, 123, 47, 113, 34, 80, 37, 0, 17, 71, 76, 86, 67, 32, 83, 12, 20, 89, 123, 91,
+			6, 112, 55, 13, 0, 0, 0, 18, 71, 88, 243, 19, 12, 129, 78, 44, 83, 110, 55, 89, 49, 108, 68, 49, 0, 15, 70, 65, 33, 83,
+			48, 86, 64, 48, 34, 108, 89, 55, 37, 0, 0, 18, 71, 32, 81, 76, 80, 83, 65, 48, 107, 116, 55, 47, 13, 65, 35, 55, 0, 15,
+			70, 76, 50, 15, 49, 70, 128, 89, 49, 131, 55, 47, 89, 0, 6, 65, 56, 108, 50, 0, 0, 0, 9, 198, 32, 84, 139, 48, 16, 83,
+			65, 0, 10, 199, 92, 81, 82, 44, 194, 78, 44, 66, 18, 71, 16, 82, 210, 20, 194, 78, 28, 72, 108, 49, 34, 116, 55, 13, 68, 0,
+			10, 199, 28, 84, 136, 5, 33, 21, 76, 66, 16, 70, 21, 49, 71, 38, 67, 0, 37, 89, 6, 116, 136, 37, 12, 0, 0, 13, 68, 76,
+			243, 143, 64, 89, 110, 50, 10, 110, 48, 0, 8, 197, 60, 225, 213, 57, 48, 65, 14, 69, 56, 19, 69, 57, 48, 50, 115, 65, 13, 50,
+			89, 0, 13, 69, 17, 83, 142, 21, 48, 72, 111, 50, 13, 89, 0, 5, 65, 60, 117, 0, 0, 6, 194, 61, 0, 72, 10, 6, 195, 92,
+			16, 82, 8, 13, 1, 61, 10, 136, 13, 55, 6, 123, 49, 10, 0, 27, 0, 13, 69, 76, 129, 73, 48, 16, 91, 37, 12, 55, 35, 0,
+			0, 10, 67, 52, 241, 84, 65, 40, 47, 0, 32, 0, 19, 70, 5, 3, 212, 20, 244, 197, 35, 48, 110, 47, 37, 38, 6, 117, 89, 13,
+			0, 7, 1, 64, 71, 123, 9, 0, 6, 65, 64, 48, 116, 0, 0, 9, 66, 4, 32, 21, 108, 97, 0, 47, 16, 70, 4, 227, 129, 48,
+			85, 0, 35, 50, 35, 55, 6, 108, 47, 0, 18, 70, 4, 192, 129, 56, 153, 0, 35, 55, 71, 6, 115, 50, 116, 12, 14, 0, 0, 15,
+			69, 48, 245, 73, 76, 80, 55, 40, 58, 6, 37, 12, 88, 0, 14, 69, 5, 66, 5, 56, 80, 35, 47, 6, 116, 50, 13, 0, 0, 13,
+			70, 53, 85, 1, 56, 66, 64, 21, 108, 97, 0, 47, 0, 9, 198, 24, 16, 212, 61, 69, 77, 66, 6, 65, 68, 49, 118, 0, 0, 11,
+			70, 64, 21, 18, 36, 50, 192, 21, 0, 47, 0, 16, 70, 25, 32, 78, 12, 242, 83, 83, 34, 35, 50, 91, 58, 35, 0, 0, 10, 199,
+			48, 85, 137, 80, 146, 213, 76, 66, 19, 71, 65, 33, 84, 61, 34, 85, 76, 48, 34, 13, 47, 117, 34, 37, 111, 89, 0, 19, 71, 52,
+			21, 82, 37, 66, 85, 76, 65, 110, 34, 6, 37, 91, 57, 111, 89, 0, 0, 0, 0, 0, 10, 198, 88, 243, 210, 44, 243, 64, 66, 46,
+			14, 71, 32, 16, 137, 80, 21, 9, 60, 21, 108, 97, 0, 47, 15, 70, 44, 128, 89, 100, 19, 64, 49, 35, 57, 6, 35, 65, 0, 13,
+			72, 92, 20, 200, 36, 225, 212, 60, 224, 21, 0, 47, 12, 4, 95, 100, 111, 116, 48, 6, 111, 50, 47, 0, 0, 6, 65, 76, 108, 89,
+			0, 0, 9, 198, 80, 244, 142, 4, 67, 192, 66, 19, 71, 77, 0, 71, 32, 85, 20, 36, 89, 48, 2, 35, 81, 108, 47, 2, 37, 0,
+			17, 70, 76, 84, 207, 80, 131, 192, 89, 13, 89, 6, 40, 12, 47, 40, 0, 0, 18, 70, 48, 83, 206, 5, 33, 15, 55, 119, 12, 50,
+			6, 35, 34, 72, 40, 0, 0, 0, 6, 65, 80, 47, 116, 0, 0, 11, 70, 12, 130, 67, 4, 115, 192, 21, 0, 47, 0, 0, 10, 199,
+			60, 225, 197, 92, 243, 206, 76, 65, 0, 9, 198, 88, 243, 16, 84, 229, 5, 65, 5, 193, 84, 72, 32, 14, 70, 72, 82, 78, 21, 69,
+			5, 34, 13, 50, 108, 47, 0, 0, 14, 70, 64, 85, 71, 20, 245, 0, 48, 111, 12, 90, 120, 0, 0, 0, 21, 67, 33, 69, 16, 107,
+			115, 47, 116, 47, 116, 48, 6, 116, 10, 0, 81, 58, 47, 47, 32, 0, 6, 65, 88, 83, 116, 0, 0, 9, 66, 5, 48, 4, 35, 89,
+			0, 8, 20, 72, 29, 34, 69, 44, 83, 1, 56, 64, 136, 34, 37, 49, 13, 55, 35, 50, 47, 0, 0, 0, 0, 12, 1, 92, 47, 34,
+			118, 89, 47, 34, 116, 48, 0, 6, 65, 92, 84, 116, 0, 0, 0, 24, 73, 29, 35, 194, 48, 84, 147, 16, 19, 0, 136, 34, 110, 71,
+			55, 13, 34, 89, 72, 6, 35, 55, 0, 0, 0, 17, 70, 48, 243, 132, 20, 228, 197, 55, 110, 50, 72, 13, 50, 89, 13, 0, 14, 69,
+			8, 84, 212, 21, 48, 71, 108, 89, 47, 13, 89, 0, 7, 65, 96, 108, 49, 89, 0, 0, 9, 66, 4, 64, 21, 108, 97, 0, 47, 0,
+			16, 70, 48, 148, 19, 80, 145, 75, 55, 109, 48, 89, 47, 37, 49, 0, 0, 9, 198, 60, 224, 133, 29, 34, 80, 65, 0, 5, 65, 100,
+			123, 0, 0, 8, 197, 60, 228, 129, 4, 64, 65, 11, 68, 8, 245, 8, 4, 71, 117, 47, 35, 0, 0, 10, 67, 52, 241, 83, 65, 40,
+			89, 0, 32, 28, 67, 48, 244, 192, 55, 110, 89, 10, 6, 35, 50, 75, 13, 55, 37, 12, 88, 0, 81, 97, 110, 103, 101, 108, 101, 115,
+			32, 0, 27, 69, 29, 32, 65, 24, 96, 136, 34, 115, 83, 15, 34, 13, 50, 6, 108, 47, 0, 81, 114, 101, 105, 110, 101, 116, 32, 0,
+			7, 65, 104, 88, 108, 72, 0, 0, 12, 200, 36, 229, 5, 20, 225, 5, 20, 192, 66, 8, 18, 5, 115, 109, 115, 39, 101, 108, 89, 10,
+			108, 65, 10, 6, 108, 89, 13, 0, 0, 19, 71, 88, 84, 132, 21, 32, 65, 56, 83, 113, 34, 72, 13, 34, 10, 115, 50, 0, 11, 70,
+			56, 144, 200, 60, 192, 83, 21, 0, 47, 22, 73, 52, 243, 210, 72, 81, 83, 9, 84, 135, 65, 40, 34, 6, 116, 89, 71, 111, 34, 136,
+			0, 0, 18, 70, 52, 19, 132, 20, 192, 64, 65, 35, 50, 72, 6, 108, 12, 55, 35, 0, 19, 72, 12, 132, 137, 77, 66, 65, 4, 224,
+			49, 34, 109, 89, 47, 37, 115, 50, 0, 0, 0, 20, 71, 72, 245, 5, 72, 83, 132, 20, 34, 40, 47, 6, 116, 34, 13, 50, 72, 13,
+			0, 10, 199, 28, 84, 148, 73, 82, 68, 4, 66, 12, 71, 77, 83, 142, 101, 50, 68, 20, 21, 0, 47, 0, 11, 200, 60, 225, 197, 92,
+			83, 147, 16, 80, 67, 18, 71, 17, 80, 130, 20, 194, 197, 56, 72, 111, 71, 13, 55, 49, 108, 50, 0, 0, 8, 197, 32, 84, 141, 60,
+			224, 65, 0, 12, 201, 16, 85, 82, 77, 68, 129, 4, 193, 5, 66, 14, 69, 80, 245, 9, 85, 48, 47, 117, 91, 37, 111, 89, 0, 0,
+			19, 72, 29, 32, 72, 4, 212, 212, 4, 64, 136, 34, 115, 65, 89, 47, 35, 47, 0, 0, 15, 72, 21, 129, 67, 85, 64, 78, 16, 144,
+			21, 108, 97, 0, 47, 9, 68, 72, 240, 137, 56, 21, 0, 47, 0, 18, 70, 4, 34, 77, 136, 193, 71, 35, 71, 37, 50, 6, 116, 55,
+			108, 136, 0, 0, 9, 198, 80, 241, 82, 36, 83, 128, 66, 0, 0, 13, 69, 92, 21, 23, 61, 80, 84, 35, 47, 84, 120, 0, 19, 72,
+			88, 84, 133, 17, 82, 70, 36, 80, 83, 116, 34, 13, 72, 127, 83, 37, 0, 11, 200, 60, 225, 197, 72, 145, 70, 36, 80, 65, 17, 4,
+			95, 48, 67, 111, 107, 6, 110, 50, 13, 34, 47, 89, 47, 13, 0, 0, 12, 4, 97, 115, 39, 116, 35, 89, 13, 47, 0, 72, 23, 73,
+			48, 16, 149, 76, 50, 1, 28, 225, 64, 55, 35, 71, 111, 89, 49, 6, 35, 136, 50, 37, 0, 16, 70, 40, 84, 197, 8, 83, 0, 57,
+			116, 89, 13, 71, 112, 55, 0, 0, 0, 17, 66, 5, 80, 120, 15, 48, 6, 113, 34, 0, 81, 112, 97, 105, 114, 32, 20, 71, 64, 83,
+			9, 56, 64, 66, 4, 48, 112, 55, 13, 50, 72, 6, 115, 71, 35, 0, 19, 71, 32, 148, 143, 76, 162, 77, 4, 107, 37, 34, 40, 91,
+			6, 37, 65, 35, 0, 0, 12, 68, 21, 33, 197, 72, 112, 34, 81, 13, 34, 0, 0, 22, 72, 4, 97, 193, 56, 148, 212, 4, 224, 35,
+			83, 81, 6, 35, 50, 37, 89, 47, 35, 50, 0, 0, 14, 69, 32, 83, 1, 5, 48, 107, 116, 55, 6, 115, 89, 0, 0, 14, 70, 77,
+			68, 129, 85, 52, 192, 89, 47, 34, 129, 89, 0, 0, 10, 1, 126, 47, 109, 55, 72, 13, 0, 27, 0, 13, 69, 12, 86, 76, 60, 224,
+			89, 13, 55, 110, 50, 0, 13, 4, 95, 116, 108, 100, 47, 6, 109, 55, 72, 13, 0, 0, 13, 69, 8, 86, 69, 73, 48, 71, 123, 13,
+			34, 89, 0, 0, 0, 18, 71, 17, 35, 207, 53, 53, 5, 72, 72, 34, 117, 65, 89, 47, 112, 34, 0, 0, 0, 0, 0, 9, 198, 45,
+			112, 78, 77, 82, 83, 66, 0, 0, 13, 68, 61, 1, 78, 16, 110, 48, 10, 108, 50, 47, 0, 0, 11, 68, 88, 19, 142, 20, 83, 35,
+			50, 13, 0, 20, 72, 48, 145, 70, 16, 84, 208, 20, 192, 55, 37, 83, 72, 13, 89, 48, 112, 55, 0, 15, 70, 85, 68, 133, 12, 133,
+			0, 118, 47, 34, 112, 136, 47, 0, 0, 0, 7, 196, 60, 227, 65, 28, 65, 15, 69, 12, 194, 67, 34, 32, 49, 55, 37, 91, 6, 123,
+			12, 0, 9, 67, 72, 19, 12, 34, 115, 55, 0, 15, 70, 8, 20, 130, 5, 32, 64, 71, 115, 71, 13, 34, 35, 0, 22, 73, 28, 244,
+			132, 60, 228, 194, 4, 18, 64, 81, 131, 34, 72, 13, 50, 89, 71, 6, 122, 0, 0, 0, 19, 71, 8, 244, 212, 4, 19, 132, 20, 71,
+			6, 117, 89, 47, 115, 50, 72, 13, 0, 10, 199, 4, 19, 135, 4, 19, 132, 20, 66, 21, 73, 25, 32, 78, 76, 50, 8, 60, 82, 192,
+			83, 34, 133, 50, 89, 107, 6, 40, 49, 0, 0, 22, 72, 76, 241, 197, 56, 16, 77, 16, 80, 89, 6, 117, 136, 13, 50, 4, 115, 65,
+			72, 13, 0, 0, 0, 19, 70, 77, 80, 149, 72, 34, 65, 89, 111, 71, 6, 111, 34, 71, 37, 57, 35, 0, 0, 20, 72, 52, 84, 133,
+			28, 80, 137, 20, 64, 65, 116, 34, 13, 136, 13, 71, 37, 47, 0, 21, 66, 16, 16, 72, 35, 15, 84, 6, 37, 50, 76, 37, 0, 81,
+			118, 105, 110, 99, 105, 32, 0, 0, 15, 69, 52, 20, 148, 36, 224, 65, 6, 115, 34, 47, 13, 50, 0, 10, 69, 8, 83, 147, 60, 224,
+			21, 0, 47, 8, 197, 8, 20, 211, 60, 224, 66, 0, 0, 0, 7, 195, 16, 21, 0, 72, 9, 0, 12, 68, 64, 21, 15, 76, 48, 115,
+			47, 110, 89, 0, 17, 70, 56, 85, 19, 61, 113, 76, 50, 108, 47, 89, 117, 84, 112, 55, 0, 18, 71, 28, 16, 78, 16, 85, 197, 28,
+			136, 115, 50, 72, 13, 84, 112, 136, 0, 6, 195, 92, 19, 148, 8, 9, 68, 4, 115, 133, 76, 21, 0, 47, 0, 17, 70, 44, 21, 5,
+			80, 84, 128, 49, 35, 47, 6, 116, 47, 13, 34, 0, 10, 198, 92, 19, 142, 20, 84, 128, 65, 8, 11, 70, 12, 128, 85, 12, 84, 128,
+			21, 0, 47, 0, 0, 22, 72, 88, 84, 147, 36, 225, 1, 8, 16, 83, 113, 34, 89, 10, 13, 50, 72, 115, 71, 35, 0, 0, 11, 200,
+			76, 81, 5, 73, 65, 9, 20, 224, 67, 17, 70, 44, 20, 9, 81, 65, 76, 49, 35, 48, 6, 109, 47, 13, 55, 0, 0, 17, 70, 52,
+			21, 20, 34, 42, 211, 65, 35, 47, 6, 37, 12, 111, 89, 0, 0, 15, 70, 44, 194, 77, 20, 145, 0, 49, 55, 109, 65, 123, 47, 0,
+			17, 70, 29, 35, 206, 17, 148, 192, 136, 34, 131, 50, 47, 10, 123, 89, 0, 15, 70, 16, 145, 134, 85, 84, 192, 72, 13, 83, 118, 12,
+			89, 0, 14, 69, 76, 19, 85, 20, 192, 89, 115, 65, 118, 13, 55, 0, 9, 198, 21, 32, 83, 53, 84, 192, 66, 0, 10, 199, 16, 85,
+			82, 77, 64, 65, 56, 66, 21, 72, 13, 34, 77, 64, 83, 5, 56, 80, 49, 34, 13, 65, 48, 13, 55, 37, 12, 50, 0, 6, 195, 76,
+			16, 131, 13, 0, 0, 18, 70, 52, 16, 193, 72, 243, 137, 65, 35, 49, 35, 34, 6, 117, 50, 37, 0, 17, 70, 56, 80, 146, 5, 50,
+			193, 50, 13, 71, 34, 35, 89, 49, 35, 0, 0, 0, 19, 71, 16, 21, 201, 17, 53, 5, 72, 72, 115, 84, 13, 47, 89, 47, 112, 34,
+			0, 0, 12, 68, 80, 19, 135, 60, 47, 35, 68, 136, 40, 0, 12, 68, 44, 243, 135, 60, 49, 110, 68, 81, 40, 0, 0, 10, 67, 80,
+			243, 153, 47, 120, 50, 37, 0, 0, 0, 22, 72, 45, 83, 147, 52, 21, 9, 28, 80, 49, 111, 50, 89, 65, 6, 115, 47, 13, 136, 13,
+			0, 13, 70, 64, 21, 80, 21, 34, 83, 21, 108, 97, 0, 47, 13, 67, 52, 228, 128, 65, 109, 50, 6, 116, 34, 0, 24, 0, 16, 70,
+			93, 148, 199, 21, 33, 64, 84, 123, 89, 136, 116, 34, 13, 0, 9, 198, 76, 82, 212, 61, 33, 64, 66, 17, 70, 28, 195, 194, 4, 193,
+			64, 136, 55, 117, 71, 6, 115, 55, 13, 0, 9, 198, 16, 242, 212, 61, 33, 64, 66, 14, 70, 76, 50, 21, 81, 65, 64, 89, 49, 111,
+			47, 13, 0, 14, 70, 72, 83, 133, 81, 65, 64, 34, 13, 50, 108, 47, 0, 14, 70, 4, 227, 133, 81, 65, 64, 35, 50, 6, 108, 47,
+			0, 0, 23, 73, 8, 83, 1, 56, 116, 137, 44, 84, 128, 71, 13, 55, 35, 68, 34, 13, 49, 4, 109, 34, 0, 0, 12, 68, 49, 145,
+			9, 4, 55, 109, 72, 37, 35, 0, 13, 66, 17, 32, 72, 6, 110, 49, 47, 13, 34, 0, 24, 16, 66, 9, 96, 71, 123, 83, 6, 117,
+			34, 71, 116, 55, 47, 0, 24, 0, 15, 70, 72, 243, 201, 64, 84, 147, 34, 125, 48, 113, 34, 89, 0, 21, 72, 64, 85, 18, 60, 225,
+			76, 48, 16, 48, 116, 47, 34, 40, 50, 6, 112, 55, 35, 0, 0, 17, 70, 44, 243, 139, 5, 113, 64, 49, 110, 50, 49, 6, 115, 84,
+			13, 0, 0, 0, 17, 70, 52, 244, 212, 21, 37, 0, 65, 6, 110, 89, 47, 13, 34, 47, 0, 12, 68, 12, 147, 132, 100, 89, 109, 50,
+			72, 37, 0, 0, 8, 197, 92, 16, 82, 60, 208, 8, 0, 0, 0, 9, 68, 52, 144, 77, 36, 21, 0, 47, 0, 11, 200, 12, 243, 147,
+			80, 19, 148, 36, 16, 66, 0, 0, 0, 14, 4, 95, 109, 99, 110, 65, 6, 35, 49, 34, 110, 50, 0, 0, 18, 70, 77, 68, 153, 17,
+			35, 211, 89, 47, 34, 123, 47, 10, 34, 110, 89, 0, 17, 70, 44, 21, 19, 92, 147, 139, 49, 35, 47, 89, 84, 13, 50, 49, 0, 13,
+			68, 29, 35, 214, 136, 136, 34, 40, 84, 6, 116, 0, 0, 16, 70, 76, 83, 133, 44, 19, 0, 89, 116, 50, 13, 49, 35, 55, 0, 0,
+			15, 70, 48, 245, 66, 76, 84, 128, 55, 120, 48, 91, 13, 34, 0, 24, 73, 64, 130, 76, 4, 65, 76, 64, 130, 65, 83, 13, 55, 13,
+			72, 6, 112, 55, 83, 37, 38, 35, 0, 0, 16, 70, 56, 20, 208, 21, 36, 192, 50, 35, 89, 48, 112, 34, 89, 0, 15, 70, 64, 85,
+			15, 61, 36, 192, 48, 13, 47, 117, 34, 89, 0, 10, 199, 9, 34, 84, 80, 19, 138, 20, 66, 0, 18, 71, 12, 132, 137, 77, 66, 65,
+			56, 49, 34, 109, 89, 47, 37, 35, 50, 0, 13, 68, 4, 225, 18, 136, 6, 35, 50, 72, 34, 123, 0, 0, 0, 9, 68, 12, 20, 143,
+			48, 21, 0, 47, 11, 68, 4, 195, 1, 32, 2, 35, 55, 115, 0, 0, 15, 70, 60, 81, 9, 65, 84, 192, 117, 72, 37, 48, 111, 89,
+			0, 17, 70, 52, 21, 20, 21, 84, 192, 65, 35, 47, 6, 37, 12, 111, 89, 0, 0, 11, 200, 77, 113, 76, 48, 83, 132, 4, 208, 67,
+			0, 0, 16, 6, 107, 97, 195, 175, 114, 111, 49, 35, 10, 6, 37, 34, 40, 0, 0, 14, 69, 32, 241, 87, 20, 192, 107, 40, 84, 6,
+			112, 55, 0, 0, 9, 198, 77, 64, 67, 12, 21, 15, 66, 20, 71, 81, 32, 70, 4, 193, 193, 72, 47, 34, 35, 83, 6, 35, 55, 81,
+			35, 34, 0, 6, 195, 4, 224, 192, 13, 0, 0, 11, 70, 88, 84, 143, 56, 144, 193, 21, 0, 47, 0, 0, 11, 67, 8, 80, 64, 71,
+			37, 12, 57, 35, 0, 0, 16, 70, 88, 84, 135, 21, 65, 64, 83, 13, 34, 136, 116, 47, 13, 0, 16, 70, 88, 84, 132, 21, 33, 64,
+			83, 112, 34, 72, 13, 34, 13, 0, 9, 198, 24, 18, 212, 85, 33, 64, 66, 16, 70, 69, 82, 74, 61, 65, 64, 49, 37, 136, 6, 110,
+			47, 108, 0, 0, 0, 0, 6, 195, 16, 145, 64, 72, 15, 70, 12, 129, 67, 44, 84, 147, 76, 108, 49, 13, 34, 89, 0, 0, 17, 70,
+			52, 20, 140, 20, 225, 64, 65, 35, 34, 55, 6, 116, 12, 50, 0, 0, 10, 67, 24, 145, 5, 21, 108, 97, 0, 47, 0, 4, 193, 132,
+			43, 0, 22, 72, 20, 193, 77, 20, 229, 1, 48, 80, 108, 55, 13, 65, 108, 50, 47, 6, 115, 55, 13, 0, 0, 0, 14, 69, 49, 82,
+			68, 61, 0, 55, 127, 47, 10, 110, 48, 0, 0, 15, 66, 16, 80, 21, 108, 97, 0, 47, 81, 106, 117, 114, 101, 32, 16, 66, 16, 80,
+			21, 108, 97, 0, 47, 81, 102, 97, 99, 116, 111, 32, 15, 66, 16, 80, 72, 13, 15, 55, 35, 0, 72, 81, 108, 97, 32, 8, 66, 16,
+			80, 72, 13, 0, 46, 0, 0, 0, 0, 14, 69, 88, 243, 21, 37, 64, 83, 110, 55, 10, 127, 47, 0, 13, 69, 32, 82, 77, 5, 64,
+			107, 121, 65, 35, 47, 0, 0, 0, 13, 69, 56, 81, 197, 21, 32, 50, 13, 136, 116, 34, 0, 13, 202, 44, 83, 142, 37, 53, 129, 5,
+			33, 9, 28, 65, 13, 69, 24, 145, 213, 85, 32, 83, 13, 136, 118, 34, 0, 0, 0, 11, 68, 32, 19, 143, 84, 107, 115, 50, 120, 0,
+			20, 71, 28, 84, 141, 60, 193, 78, 20, 75, 109, 12, 65, 13, 55, 6, 37, 12, 50, 0, 19, 71, 8, 84, 206, 20, 65, 78, 20, 71,
+			13, 89, 50, 116, 72, 13, 50, 13, 0, 5, 194, 9, 144, 72, 19, 71, 40, 244, 197, 64, 130, 78, 4, 57, 117, 89, 13, 83, 6, 37,
+			50, 35, 0, 10, 69, 32, 85, 201, 81, 64, 21, 0, 47, 16, 66, 17, 80, 72, 13, 15, 47, 125, 0, 81, 116, 111, 105, 116, 32, 19,
+			66, 17, 80, 72, 13, 15, 48, 34, 6, 116, 0, 81, 112, 114, 101, 101, 122, 32, 18, 66, 17, 80, 72, 13, 15, 48, 55, 125, 0, 81,
+			112, 108, 111, 111, 121, 32, 23, 66, 17, 80, 72, 40, 15, 48, 55, 13, 89, 6, 37, 0, 81, 112, 108, 101, 115, 115, 105, 115, 32, 24,
+			66, 17, 80, 72, 40, 15, 48, 37, 89, 6, 115, 50, 37, 0, 81, 112, 105, 115, 97, 110, 105, 101, 32, 5, 194, 17, 80, 72, 0, 22,
+			72, 12, 132, 137, 77, 66, 65, 56, 16, 49, 34, 13, 89, 47, 37, 57, 6, 115, 50, 35, 0, 0, 14, 69, 56, 82, 193, 5, 32, 50,
+			112, 49, 10, 115, 34, 0, 0, 0, 17, 70, 44, 19, 69, 72, 241, 78, 49, 35, 65, 13, 34, 6, 40, 50, 0, 0, 20, 71, 76, 19,
+			136, 20, 68, 137, 56, 89, 35, 50, 107, 6, 116, 72, 34, 13, 50, 0, 0, 0, 0, 6, 194, 4, 192, 8, 32, 18, 70, 4, 193, 197,
+			72, 153, 0, 35, 55, 136, 6, 116, 34, 116, 12, 14, 0, 0, 18, 71, 72, 17, 5, 52, 86, 69, 72, 34, 115, 72, 13, 65, 123, 13,
+			34, 0, 0, 0, 0, 11, 68, 8, 82, 68, 20, 71, 123, 72, 13, 0, 8, 196, 41, 83, 12, 20, 72, 32, 13, 68, 20, 210, 76, 20,
+			108, 65, 6, 37, 12, 55, 0, 0, 14, 69, 88, 244, 137, 28, 80, 83, 117, 34, 13, 136, 13, 0, 14, 69, 64, 19, 1, 92, 16, 48,
+			13, 55, 115, 84, 35, 0, 13, 69, 20, 224, 207, 72, 80, 133, 68, 49, 131, 34, 0, 10, 69, 64, 19, 69, 48, 16, 21, 0, 47, 14,
+			69, 29, 32, 78, 28, 80, 136, 34, 115, 50, 89, 37, 0, 14, 69, 20, 196, 193, 8, 80, 112, 55, 89, 13, 71, 37, 0, 16, 67, 20,
+			228, 192, 108, 50, 89, 117, 83, 117, 34, 47, 89, 0, 24, 0, 0, 0, 17, 70, 60, 213, 18, 20, 229, 0, 110, 65, 47, 34, 6, 108,
+			50, 47, 0, 22, 66, 21, 64, 108, 47, 89, 6, 108, 47, 13, 34, 35, 0, 81, 99, 101, 116, 101, 114, 97, 32, 9, 198, 92, 16, 82,
+			32, 81, 78, 8, 16, 70, 4, 50, 197, 72, 208, 78, 35, 49, 13, 34, 65, 35, 50, 0, 0, 13, 68, 92, 81, 197, 8, 84, 112, 136,
+			10, 108, 71, 0, 13, 68, 88, 84, 129, 24, 83, 112, 34, 10, 35, 83, 0, 12, 68, 88, 19, 129, 24, 83, 35, 50, 35, 83, 0, 16,
+			69, 76, 145, 83, 80, 16, 89, 37, 38, 6, 108, 89, 47, 35, 0, 15, 69, 64, 20, 129, 80, 80, 48, 35, 34, 6, 115, 47, 13, 0,
+			8, 197, 60, 212, 133, 16, 80, 66, 13, 69, 60, 85, 86, 72, 80, 111, 12, 84, 34, 13, 0, 15, 69, 56, 21, 21, 72, 80, 50, 35,
+			47, 6, 118, 34, 13, 0, 15, 69, 52, 18, 149, 8, 16, 65, 35, 57, 6, 40, 71, 35, 0, 15, 69, 32, 21, 129, 56, 16, 107, 35,
+			84, 6, 35, 50, 35, 0, 0, 0, 15, 70, 92, 18, 204, 60, 241, 128, 84, 115, 49, 55, 117, 83, 0, 21, 71, 8, 16, 137, 48, 243,
+			137, 144, 71, 35, 71, 37, 55, 6, 117, 50, 37, 38, 13, 0, 0, 10, 199, 84, 149, 5, 72, 208, 84, 20, 67, 10, 199, 80, 83, 141,
+			36, 228, 212, 20, 66, 0, 11, 200, 52, 148, 194, 73, 82, 75, 80, 80, 66, 4, 193, 136, 43, 0, 0, 0, 0, 0, 17, 67, 36, 228,
+			208, 109, 50, 89, 48, 108, 49, 47, 6, 128, 34, 0, 24, 0, 16, 70, 4, 229, 8, 60, 226, 69, 35, 50, 47, 6, 117, 50, 37, 0,
+			0, 13, 69, 8, 243, 65, 5, 64, 71, 117, 65, 115, 47, 0, 0, 0, 9, 198, 72, 243, 132, 20, 83, 0, 66, 9, 198, 60, 244, 130,
+			60, 244, 132, 66, 11, 68, 88, 144, 203, 76, 84, 37, 49, 89, 0, 0, 18, 71, 9, 82, 84, 21, 1, 82, 16, 71, 127, 47, 13, 48,
+			113, 34, 47, 0, 0, 13, 70, 72, 244, 211, 61, 85, 192, 34, 13, 89, 120, 0, 0, 15, 70, 64, 130, 76, 48, 148, 19, 83, 109, 55,
+			13, 48, 89, 0, 0, 10, 69, 88, 144, 212, 61, 32, 21, 0, 47, 0, 17, 71, 8, 194, 71, 56, 21, 76, 80, 71, 55, 109, 136, 50,
+			120, 47, 0, 0, 0, 0, 0, 16, 69, 21, 52, 5, 4, 176, 37, 12, 38, 89, 48, 37, 12, 49, 0, 0, 0, 14, 69, 57, 83, 69,
+			72, 144, 50, 111, 65, 13, 34, 37, 0, 16, 70, 24, 85, 1, 44, 16, 83, 83, 108, 47, 35, 49, 115, 89, 0, 16, 70, 8, 16, 133,
+			48, 16, 83, 71, 35, 71, 13, 55, 115, 89, 0, 20, 72, 61, 85, 5, 56, 145, 75, 92, 16, 120, 47, 13, 50, 6, 37, 49, 58, 35,
+			0, 0, 0, 7, 196, 44, 243, 148, 20, 65, 13, 70, 72, 245, 83, 76, 80, 85, 34, 13, 89, 120, 0, 22, 68, 80, 128, 66, 4, 47,
+			35, 71, 6, 115, 15, 50, 76, 40, 0, 81, 110, 99, 104, 117, 32, 0, 15, 69, 52, 245, 15, 72, 80, 65, 117, 47, 6, 117, 34, 13,
+			0, 15, 69, 4, 97, 193, 56, 80, 35, 83, 81, 6, 115, 50, 13, 0, 13, 69, 52, 20, 148, 32, 16, 65, 35, 34, 47, 35, 0, 13,
+			69, 8, 84, 148, 32, 16, 71, 112, 34, 47, 35, 0, 0, 12, 201, 81, 32, 80, 77, 85, 84, 40, 145, 83, 66, 21, 72, 44, 243, 15,
+			77, 49, 78, 76, 80, 49, 110, 55, 13, 89, 6, 134, 50, 89, 13, 0, 0, 18, 71, 77, 65, 80, 32, 19, 149, 76, 89, 47, 13, 83,
+			115, 50, 111, 89, 0, 0, 10, 67, 64, 243, 132, 48, 135, 50, 47, 0, 0, 14, 69, 52, 147, 149, 80, 80, 65, 13, 50, 118, 47, 13,
+			0, 14, 69, 52, 17, 1, 52, 80, 65, 35, 72, 6, 115, 65, 0, 14, 69, 36, 225, 129, 52, 80, 13, 50, 83, 115, 65, 13, 0, 19,
+			71, 12, 19, 69, 52, 33, 82, 80, 49, 35, 65, 13, 65, 71, 6, 113, 34, 0, 14, 69, 4, 98, 197, 72, 80, 35, 83, 49, 116, 34,
+			13, 0, 10, 67, 8, 243, 143, 21, 108, 97, 0, 47, 9, 197, 16, 16, 82, 56, 16, 8, 32, 8, 197, 80, 246, 79, 80, 16, 66, 13,
+			69, 101, 99, 206, 56, 80, 37, 84, 6, 110, 50, 0, 13, 69, 64, 131, 197, 8, 80, 83, 37, 12, 71, 37, 0, 14, 69, 48, 83, 206,
+			36, 80, 55, 37, 6, 117, 50, 37, 0, 14, 69, 16, 80, 143, 72, 16, 72, 13, 71, 117, 34, 35, 0, 0, 0, 8, 197, 60, 244, 140,
+			20, 112, 66, 13, 69, 60, 229, 15, 56, 112, 110, 50, 47, 110, 68, 0, 0, 0, 0, 17, 70, 16, 80, 149, 77, 54, 64, 72, 13, 71,
+			40, 89, 6, 37, 12, 0, 0, 10, 67, 76, 147, 133, 21, 108, 97, 0, 47, 11, 70, 88, 144, 212, 61, 34, 65, 21, 0, 47, 19, 70,
+			49, 80, 210, 21, 66, 65, 55, 40, 49, 34, 6, 37, 12, 91, 57, 35, 0, 0, 4, 193, 140, 43, 13, 67, 28, 83, 140, 136, 13, 50,
+			13, 34, 115, 55, 0, 0, 13, 69, 28, 19, 132, 32, 144, 81, 35, 50, 72, 37, 0, 0, 25, 74, 76, 225, 69, 84, 32, 76, 20, 97,
+			133, 44, 89, 50, 119, 71, 35, 55, 10, 37, 83, 4, 108, 49, 0, 13, 70, 16, 83, 9, 13, 66, 64, 21, 108, 97, 0, 47, 0, 16,
+			69, 12, 20, 201, 56, 240, 49, 35, 89, 6, 37, 12, 50, 120, 0, 0, 17, 70, 32, 16, 129, 45, 82, 192, 107, 6, 35, 71, 35, 49,
+			111, 49, 0, 10, 199, 76, 48, 82, 48, 21, 20, 36, 66, 20, 71, 56, 81, 133, 73, 66, 84, 36, 50, 108, 83, 13, 34, 47, 6, 37,
+			47, 37, 0, 0, 16, 70, 73, 82, 203, 21, 34, 71, 34, 111, 49, 13, 34, 13, 136, 0, 7, 195, 16, 149, 0, 72, 32, 19, 71, 20,
+			194, 83, 4, 33, 84, 32, 37, 55, 6, 37, 89, 35, 71, 108, 47, 0, 0, 33, 68, 52, 241, 21, 76, 65, 4, 117, 72, 111, 89, 15,
+			117, 48, 13, 34, 6, 35, 50, 72, 37, 0, 81, 111, 112, 101, 114, 97, 110, 100, 105, 32, 0, 15, 70, 53, 144, 149, 72, 114, 0, 65,
+			123, 71, 111, 34, 136, 0, 0, 21, 67, 77, 84, 20, 89, 40, 48, 34, 108, 50, 47, 108, 50, 72, 6, 108, 50, 47, 0, 24, 0, 0,
+			0, 8, 196, 4, 117, 5, 72, 72, 10, 0, 0, 12, 69, 32, 242, 193, 4, 144, 107, 110, 49, 122, 0, 11, 200, 20, 65, 76, 4, 112,
+			129, 72, 80, 67, 15, 72, 16, 243, 73, 12, 147, 9, 84, 208, 21, 108, 97, 0, 47, 0, 13, 72, 52, 16, 203, 36, 229, 15, 76, 128,
+			21, 0, 47, 0, 7, 195, 16, 19, 128, 8, 32, 0, 0, 0, 16, 70, 52, 245, 15, 73, 38, 64, 65, 117, 47, 13, 34, 34, 123, 0,
+			0, 12, 201, 92, 16, 82, 76, 182, 78, 48, 146, 197, 66, 10, 67, 88, 84, 128, 83, 6, 113, 34, 0, 13, 68, 52, 19, 1, 56, 65,
+			35, 55, 6, 35, 50, 0, 0, 0, 6, 195, 76, 21, 75, 13, 0, 0, 10, 67, 64, 84, 170, 48, 13, 34, 40, 0, 8, 67, 48, 17,
+			25, 21, 0, 47, 0, 0, 8, 197, 28, 83, 129, 16, 80, 66, 14, 69, 8, 83, 129, 16, 80, 71, 13, 50, 115, 72, 37, 0, 0, 12,
+			69, 13, 40, 67, 32, 80, 49, 34, 108, 91, 0, 0, 10, 67, 8, 243, 129, 21, 108, 97, 0, 47, 0, 10, 68, 60, 244, 146, 100, 117,
+			34, 123, 0, 0, 17, 70, 72, 85, 15, 72, 145, 75, 34, 13, 47, 40, 34, 6, 37, 49, 0, 12, 69, 24, 16, 212, 84, 208, 21, 108,
+			97, 0, 47, 0, 12, 68, 88, 243, 22, 60, 84, 110, 55, 84, 40, 0, 0, 6, 195, 20, 243, 133, 66, 10, 67, 8, 83, 133, 71, 116,
+			50, 13, 0, 4, 193, 144, 43, 0, 0, 9, 198, 88, 244, 133, 56, 64, 71, 67, 21, 72, 20, 211, 65, 72, 83, 148, 36, 16, 108, 65,
+			35, 34, 6, 134, 50, 91, 57, 35, 0, 0, 6, 194, 8, 240, 72, 10, 11, 70, 29, 33, 71, 61, 38, 64, 21, 0, 47, 0, 15, 69,
+			52, 243, 129, 12, 240, 65, 110, 50, 6, 115, 49, 40, 0, 0, 0, 11, 200, 44, 192, 65, 77, 96, 75, 36, 80, 66, 20, 72, 5, 36,
+			143, 28, 19, 147, 36, 80, 35, 34, 40, 136, 6, 35, 50, 89, 37, 0, 11, 70, 52, 21, 82, 20, 83, 128, 21, 0, 47, 9, 198, 40,
+			244, 132, 4, 19, 128, 66, 11, 70, 12, 19, 69, 72, 243, 128, 21, 0, 47, 0, 0, 18, 70, 76, 83, 129, 80, 244, 133, 89, 13, 50,
+			35, 47, 6, 117, 34, 13, 0, 0, 17, 71, 12, 128, 82, 52, 18, 78, 20, 91, 115, 65, 6, 123, 12, 50, 0, 0, 20, 71, 5, 48,
+			70, 77, 64, 78, 16, 35, 89, 10, 35, 83, 89, 47, 35, 50, 47, 0, 21, 73, 12, 132, 137, 77, 67, 198, 24, 83, 0, 49, 34, 13,
+			89, 47, 110, 83, 13, 55, 0, 20, 71, 48, 17, 25, 9, 32, 78, 16, 55, 123, 72, 37, 71, 34, 6, 35, 50, 47, 0, 0, 16, 70,
+			85, 2, 78, 29, 67, 206, 35, 48, 37, 68, 47, 13, 50, 0, 0, 17, 3, 226, 133, 148, 47, 58, 4, 116, 72, 6, 113, 34, 72, 13,
+			89, 0, 0, 0, 0, 0, 19, 71, 76, 80, 129, 77, 66, 65, 56, 89, 13, 71, 35, 89, 47, 37, 35, 50, 0, 0, 14, 70, 12, 147,
+			147, 5, 85, 0, 89, 13, 50, 89, 117, 0, 11, 3, 226, 133, 147, 72, 113, 34, 72, 13, 0, 0, 0, 9, 198, 88, 243, 210, 92, 16,
+			82, 66, 0, 14, 69, 76, 50, 1, 48, 176, 89, 49, 6, 35, 55, 49, 0, 0, 0, 16, 70, 48, 21, 5, 28, 19, 128, 55, 115, 47,
+			13, 136, 35, 50, 0, 11, 70, 12, 194, 70, 80, 243, 128, 21, 0, 47, 0, 0, 10, 67, 4, 128, 64, 115, 107, 26, 115, 0, 0, 11,
+			68, 52, 20, 137, 20, 65, 115, 34, 37, 0, 0, 19, 70, 76, 19, 148, 36, 17, 207, 89, 35, 50, 47, 37, 38, 6, 115, 81, 40, 0,
+			4, 193, 148, 43, 0, 0, 16, 73, 52, 17, 1, 52, 242, 83, 20, 195, 5, 21, 102, 114, 0, 47, 11, 67, 105, 83, 65, 88, 40, 12,
+			65, 35, 0, 9, 3, 226, 130, 172, 128, 34, 40, 0, 0, 10, 199, 60, 227, 205, 92, 243, 132, 20, 67, 0, 21, 72, 88, 84, 139, 20,
+			84, 132, 60, 208, 83, 13, 34, 49, 116, 34, 47, 10, 110, 65, 0, 0, 0, 8, 67, 40, 19, 133, 21, 0, 47, 0, 11, 68, 16, 18,
+			83, 100, 72, 123, 88, 37, 0, 16, 70, 64, 144, 193, 77, 51, 192, 48, 37, 49, 6, 35, 89, 40, 0, 0, 11, 200, 12, 19, 142, 20,
+			195, 15, 56, 144, 67, 0, 9, 66, 20, 176, 112, 49, 0, 72, 32, 10, 67, 41, 80, 78, 136, 58, 35, 50, 0, 0, 9, 198, 12, 243,
+			134, 21, 69, 9, 66, 0, 0, 9, 198, 60, 225, 5, 73, 113, 71, 67, 7, 195, 32, 85, 0, 72, 32, 17, 70, 24, 147, 5, 52, 243,
+			128, 83, 6, 37, 55, 13, 65, 110, 50, 0, 14, 4, 95, 111, 103, 111, 117, 136, 117, 50, 4, 112, 49, 0, 0, 10, 67, 5, 51, 198,
+			35, 89, 110, 83, 0, 0, 20, 71, 28, 192, 68, 36, 21, 15, 72, 136, 55, 35, 72, 37, 6, 115, 47, 110, 34, 0, 0, 0, 0, 6,
+			194, 37, 48, 72, 32, 24, 73, 16, 244, 212, 60, 161, 87, 76, 178, 64, 72, 110, 89, 47, 110, 57, 6, 108, 84, 89, 49, 37, 0, 16,
+			67, 65, 35, 198, 48, 34, 40, 83, 6, 108, 89, 13, 34, 0, 24, 0, 14, 69, 52, 20, 129, 37, 48, 65, 35, 34, 6, 108, 12, 0,
+			0, 9, 198, 60, 225, 5, 73, 118, 76, 67, 9, 67, 40, 242, 12, 57, 117, 55, 0, 0, 13, 69, 16, 85, 82, 73, 144, 72, 128, 34,
+			34, 123, 0, 0, 17, 70, 52, 21, 20, 32, 90, 211, 65, 35, 47, 6, 37, 12, 111, 89, 0, 0, 17, 70, 4, 97, 193, 4, 228, 197,
+			35, 83, 81, 6, 115, 50, 89, 13, 0, 12, 71, 92, 147, 66, 48, 81, 15, 56, 21, 0, 47, 0, 18, 70, 12, 243, 5, 57, 51, 192,
+			49, 40, 55, 6, 108, 12, 50, 89, 120, 0, 0, 0, 9, 198, 60, 225, 197, 48, 243, 198, 65, 0, 6, 195, 16, 148, 192, 72, 0, 0,
+			11, 70, 77, 65, 80, 32, 83, 128, 21, 0, 47, 15, 70, 77, 65, 80, 32, 19, 128, 89, 47, 116, 83, 35, 50, 0, 16, 70, 4, 68,
+			137, 4, 19, 128, 115, 72, 34, 37, 57, 35, 50, 0, 0, 14, 71, 8, 245, 82, 28, 83, 201, 76, 21, 102, 114, 0, 47, 15, 70, 52,
+			83, 9, 77, 48, 64, 65, 13, 55, 109, 89, 35, 0, 0, 0, 17, 70, 88, 249, 12, 20, 229, 0, 83, 117, 13, 55, 10, 108, 50, 47,
+			0, 8, 67, 48, 244, 132, 21, 0, 47, 11, 68, 29, 32, 84, 4, 21, 108, 97, 0, 47, 16, 73, 21, 128, 213, 77, 50, 79, 56, 148,
+			192, 21, 108, 97, 0, 47, 7, 195, 92, 244, 132, 72, 32, 11, 68, 72, 85, 8, 4, 34, 116, 47, 35, 0, 0, 14, 71, 9, 42, 206,
+			32, 147, 4, 20, 21, 100, 101, 0, 47, 0, 9, 198, 60, 229, 133, 72, 211, 228, 65, 15, 70, 28, 243, 79, 73, 32, 64, 136, 13, 65,
+			110, 34, 35, 0, 17, 70, 48, 80, 78, 17, 32, 64, 55, 37, 6, 35, 50, 72, 34, 35, 0, 16, 4, 95, 98, 114, 118, 49, 6, 110,
+			34, 47, 116, 49, 13, 50, 0, 0, 12, 71, 28, 83, 148, 48, 83, 65, 56, 21, 0, 47, 10, 67, 37, 4, 193, 21, 108, 97, 0, 47,
+			10, 67, 88, 84, 129, 84, 116, 34, 35, 0, 0, 15, 70, 72, 145, 75, 21, 37, 0, 34, 37, 49, 13, 34, 47, 0, 18, 71, 8, 85,
+			8, 48, 82, 5, 52, 71, 108, 47, 10, 55, 37, 108, 65, 0, 0, 13, 69, 88, 84, 151, 21, 144, 83, 13, 34, 84, 123, 0, 6, 195,
+			37, 50, 83, 65, 0, 14, 69, 37, 52, 129, 20, 192, 109, 89, 34, 121, 12, 55, 0, 17, 4, 95, 97, 99, 50, 72, 6, 111, 71, 13,
+			55, 35, 49, 118, 47, 0, 0, 15, 69, 32, 20, 132, 61, 0, 107, 35, 34, 47, 19, 110, 48, 0, 0, 9, 198, 88, 243, 19, 64, 241,
+			68, 65, 17, 70, 52, 242, 1, 52, 209, 68, 65, 40, 107, 6, 35, 65, 13, 47, 0, 14, 70, 8, 83, 142, 21, 69, 0, 71, 108, 50,
+			13, 47, 0, 0, 0, 0, 9, 198, 77, 66, 76, 77, 118, 69, 65, 0, 9, 198, 4, 197, 5, 52, 149, 0, 67, 0, 0, 0, 14, 69,
+			80, 19, 135, 5, 48, 47, 35, 68, 81, 35, 89, 0, 27, 69, 9, 81, 78, 61, 48, 71, 58, 108, 50, 110, 89, 10, 6, 121, 34, 108,
+			89, 0, 81, 97, 105, 114, 101, 115, 32, 0, 15, 70, 88, 149, 137, 21, 36, 192, 84, 13, 84, 13, 57, 116, 0, 0, 0, 11, 68, 16,
+			243, 21, 76, 21, 108, 97, 0, 47, 11, 68, 12, 132, 137, 76, 49, 34, 109, 89, 0, 0, 12, 68, 76, 245, 133, 72, 89, 117, 83, 112,
+			34, 0, 12, 69, 4, 210, 67, 85, 48, 21, 108, 97, 0, 47, 0, 0, 10, 198, 52, 148, 194, 73, 82, 75, 66, 36, 10, 69, 28, 21,
+			19, 9, 144, 21, 0, 47, 0, 0, 0, 0, 0, 7, 194, 20, 224, 72, 8, 32, 0, 15, 72, 16, 149, 137, 76, 147, 206, 37, 48, 21,
+			108, 97, 0, 47, 10, 67, 48, 85, 137, 55, 116, 83, 37, 0, 13, 3, 95, 51, 88, 6, 72, 112, 34, 47, 109, 136, 0, 0, 11, 68,
+			88, 84, 146, 20, 83, 113, 34, 13, 0, 12, 68, 80, 133, 76, 4, 47, 40, 12, 55, 35, 0, 13, 70, 16, 83, 9, 13, 67, 192, 21,
+			108, 97, 0, 47, 13, 69, 80, 129, 82, 60, 224, 47, 34, 6, 110, 50, 0, 10, 69, 48, 147, 9, 4, 224, 21, 0, 47, 16, 70, 48,
+			147, 80, 61, 3, 192, 55, 13, 65, 48, 117, 48, 117, 0, 13, 3, 95, 48, 67, 6, 107, 110, 50, 13, 34, 47, 0, 0, 13, 68, 52,
+			244, 142, 136, 65, 110, 34, 50, 6, 123, 0, 16, 7, 107, 97, 110, 97, 195, 164, 110, 49, 115, 50, 115, 35, 50, 0, 16, 70, 12, 19,
+			5, 16, 243, 128, 49, 35, 55, 37, 72, 110, 50, 0, 0, 0, 0, 11, 200, 88, 243, 19, 92, 19, 135, 21, 32, 65, 0, 0, 11, 70,
+			76, 147, 129, 81, 32, 64, 21, 0, 47, 17, 70, 41, 80, 78, 37, 64, 64, 57, 40, 35, 50, 6, 37, 47, 35, 0, 6, 195, 5, 66,
+			214, 13, 0, 10, 67, 52, 20, 129, 65, 115, 34, 35, 0, 17, 70, 16, 19, 137, 20, 195, 5, 72, 35, 50, 37, 38, 6, 112, 55, 0,
+			0, 16, 69, 20, 180, 197, 48, 96, 2, 112, 49, 89, 6, 112, 55, 83, 0, 13, 69, 72, 85, 9, 20, 96, 34, 13, 47, 37, 83, 0,
+			20, 71, 52, 85, 21, 76, 19, 5, 52, 65, 13, 47, 6, 118, 89, 35, 55, 108, 65, 0, 0, 9, 198, 80, 245, 19, 36, 83, 147, 66,
+			18, 72, 12, 132, 137, 77, 65, 76, 48, 80, 49, 34, 13, 89, 47, 112, 55, 0, 0, 14, 69, 8, 84, 215, 36, 192, 71, 108, 89, 84,
+			13, 55, 0, 11, 68, 80, 242, 201, 60, 47, 117, 49, 119, 0, 0, 10, 67, 32, 84, 133, 107, 116, 34, 13, 0, 9, 68, 60, 113, 5,
+			56, 21, 0, 47, 0, 0, 0, 15, 3, 95, 49, 57, 6, 50, 116, 136, 13, 50, 47, 37, 50, 0, 0, 24, 72, 16, 84, 207, 56, 64,
+			78, 45, 48, 72, 108, 89, 19, 110, 50, 72, 35, 68, 49, 89, 0, 8, 32, 13, 3, 95, 49, 56, 10, 6, 35, 136, 47, 37, 50, 0,
+			0, 0, 0, 0, 18, 70, 40, 18, 207, 52, 147, 129, 57, 35, 49, 40, 65, 6, 37, 50, 35, 0, 16, 70, 28, 83, 210, 28, 147, 129,
+			75, 131, 75, 6, 37, 50, 35, 0, 4, 193, 156, 43, 0, 18, 70, 52, 147, 9, 82, 52, 133, 65, 109, 55, 13, 47, 6, 113, 34, 13,
+			0, 0, 16, 70, 44, 21, 137, 4, 20, 128, 49, 35, 84, 37, 6, 115, 34, 0, 14, 70, 24, 148, 195, 32, 84, 128, 83, 37, 91, 13,
+			34, 0, 11, 70, 8, 83, 3, 32, 84, 128, 21, 0, 47, 11, 3, 226, 136, 146, 65, 37, 50, 111, 89, 0, 0, 6, 194, 33, 144, 72,
+			32, 11, 3, 95, 49, 49, 10, 6, 112, 55, 83, 0, 0, 10, 3, 95, 49, 48, 6, 47, 37, 50, 0, 0, 16, 70, 89, 32, 80, 73,
+			148, 192, 83, 34, 115, 48, 34, 123, 89, 0, 16, 70, 45, 113, 69, 45, 112, 76, 49, 58, 116, 49, 84, 35, 55, 0, 17, 70, 48, 20,
+			193, 73, 84, 192, 55, 115, 89, 13, 34, 2, 111, 89, 0, 15, 70, 13, 84, 211, 60, 228, 192, 49, 35, 89, 13, 50, 89, 0, 13, 3,
+			95, 49, 51, 6, 72, 112, 34, 47, 37, 50, 0, 0, 16, 70, 56, 81, 197, 72, 147, 135, 50, 13, 136, 116, 34, 13, 68, 0, 16, 70,
+			8, 85, 197, 72, 147, 135, 71, 13, 84, 116, 34, 109, 68, 0, 13, 70, 28, 241, 66, 8, 83, 19, 21, 100, 101, 0, 47, 13, 3, 95,
+			49, 50, 6, 47, 58, 6, 115, 55, 83, 0, 0, 13, 3, 95, 49, 53, 6, 83, 123, 83, 47, 37, 50, 0, 0, 13, 3, 95, 49, 52,
+			6, 83, 116, 34, 47, 37, 50, 0, 0, 10, 199, 36, 225, 197, 88, 243, 7, 20, 67, 12, 68, 92, 147, 80, 100, 58, 109, 65, 48, 37,
+			0, 15, 3, 95, 49, 55, 6, 89, 116, 84, 13, 50, 47, 37, 50, 0, 0, 15, 204, 92, 81, 82, 88, 243, 210, 77, 1, 76, 48, 147,
+			135, 65, 10, 67, 88, 84, 135, 83, 112, 34, 136, 0, 13, 3, 95, 49, 54, 6, 89, 108, 89, 47, 37, 50, 0, 0, 14, 69, 52, 244,
+			139, 20, 192, 65, 110, 34, 49, 13, 55, 0, 0, 9, 68, 32, 83, 5, 56, 21, 0, 47, 21, 72, 5, 32, 200, 36, 209, 68, 21, 48,
+			35, 34, 136, 37, 65, 6, 116, 72, 108, 89, 0, 15, 3, 95, 55, 88, 6, 89, 116, 84, 13, 50, 47, 109, 136, 0, 0, 12, 68, 45,
+			34, 71, 20, 49, 34, 37, 136, 13, 0, 0, 17, 71, 64, 192, 65, 76, 160, 65, 64, 48, 55, 115, 89, 57, 115, 48, 0, 0, 17, 70,
+			76, 243, 66, 21, 33, 64, 89, 6, 110, 65, 71, 13, 34, 13, 0, 16, 70, 69, 82, 88, 61, 65, 64, 49, 37, 136, 6, 110, 47, 108,
+			0, 0, 10, 67, 41, 84, 192, 21, 108, 97, 0, 47, 0, 13, 68, 40, 244, 213, 4, 57, 6, 117, 91, 37, 35, 0, 9, 68, 41, 83,
+			9, 4, 21, 0, 47, 10, 3, 95, 49, 111, 10, 6, 116, 34, 0, 0, 0, 15, 70, 20, 97, 133, 57, 49, 64, 108, 83, 13, 50, 89,
+			13, 0, 17, 70, 52, 20, 140, 37, 49, 64, 65, 35, 34, 55, 6, 37, 12, 89, 0, 10, 3, 95, 49, 97, 10, 6, 116, 50, 0, 0,
+			10, 67, 88, 149, 129, 84, 37, 84, 35, 0, 19, 71, 33, 83, 12, 21, 49, 76, 24, 107, 111, 55, 13, 89, 112, 55, 83, 0, 32, 0,
+			18, 71, 44, 147, 66, 21, 35, 5, 100, 49, 37, 65, 71, 13, 34, 55, 37, 0, 0, 17, 70, 77, 65, 82, 92, 83, 147, 89, 47, 112,
+			34, 84, 13, 50, 89, 0, 19, 72, 80, 84, 130, 48, 19, 131, 32, 80, 47, 13, 34, 71, 55, 115, 50, 91, 0, 0, 0, 12, 4, 95,
+			97, 99, 117, 35, 49, 6, 118, 47, 0, 0, 10, 67, 12, 20, 140, 49, 115, 34, 114, 0, 10, 3, 95, 50, 111, 47, 58, 6, 116, 0,
+			0, 0, 24, 73, 64, 21, 18, 36, 245, 9, 76, 209, 64, 48, 35, 47, 34, 37, 40, 47, 6, 109, 89, 65, 13, 0, 0, 0, 4, 193,
+			160, 43, 0, 13, 6, 114, 104, 195, 180, 110, 101, 21, 102, 114, 0, 47, 0, 17, 70, 20, 97, 83, 38, 68, 128, 37, 83, 6, 116, 89,
+			37, 13, 34, 0, 0, 0, 10, 3, 95, 51, 111, 72, 6, 113, 34, 0, 0, 12, 68, 76, 18, 78, 80, 89, 109, 50, 47, 0, 72, 16,
+			70, 41, 84, 9, 80, 84, 128, 57, 40, 48, 37, 47, 13, 34, 0, 9, 198, 20, 83, 139, 20, 84, 128, 65, 16, 70, 16, 17, 211, 80,
+			84, 128, 72, 35, 136, 89, 47, 112, 34, 0, 0, 0, 14, 3, 95, 50, 88, 6, 47, 58, 109, 50, 47, 109, 136, 0, 0, 12, 69, 76,
+			50, 15, 61, 32, 89, 49, 117, 34, 0, 15, 70, 48, 82, 80, 60, 193, 20, 55, 122, 48, 110, 55, 47, 0, 0, 0, 16, 71, 84, 149,
+			4, 4, 114, 78, 28, 127, 72, 115, 136, 13, 68, 0, 23, 73, 12, 192, 78, 92, 147, 12, 36, 19, 64, 49, 55, 113, 50, 58, 6, 37,
+			55, 37, 13, 65, 0, 15, 69, 8, 241, 207, 81, 192, 71, 110, 81, 110, 47, 6, 115, 0, 0, 0, 21, 9, 104, 101, 108, 108, 111, 195,
+			175, 115, 101, 107, 108, 55, 40, 58, 6, 37, 12, 88, 0, 0, 14, 73, 77, 4, 137, 56, 116, 212, 20, 83, 128, 21, 0, 47, 0, 0,
+			20, 72, 76, 179, 204, 48, 145, 78, 21, 48, 89, 49, 110, 55, 37, 50, 4, 108, 89, 0, 21, 72, 65, 149, 8, 4, 115, 210, 5, 48,
+			48, 37, 47, 6, 115, 136, 117, 34, 35, 89, 0, 0, 12, 68, 88, 84, 147, 20, 83, 113, 34, 89, 13, 0, 13, 69, 44, 243, 65, 4,
+			224, 49, 110, 65, 115, 50, 0, 12, 68, 20, 226, 71, 20, 116, 50, 109, 136, 13, 0, 12, 68, 80, 19, 137, 4, 47, 35, 50, 57, 35,
+			0, 8, 197, 52, 147, 1, 4, 224, 66, 0, 0, 17, 70, 88, 18, 193, 57, 65, 64, 83, 2, 35, 49, 35, 50, 47, 13, 0, 9, 198,
+			65, 34, 77, 5, 65, 64, 66, 9, 198, 45, 83, 20, 85, 33, 64, 66, 9, 198, 5, 53, 1, 73, 65, 64, 66, 0, 0, 13, 68, 44,
+			83, 137, 4, 49, 37, 12, 50, 37, 35, 0, 13, 3, 95, 63, 63, 89, 13, 65, 71, 6, 117, 55, 0, 0, 0, 9, 198, 60, 244, 147,
+			21, 49, 64, 66, 0, 8, 67, 28, 81, 64, 136, 116, 0, 13, 3, 95, 52, 88, 6, 83, 116, 34, 47, 109, 136, 0, 0, 0, 0, 0,
+			11, 67, 8, 85, 1, 71, 116, 47, 35, 0, 46, 12, 71, 16, 243, 129, 48, 68, 207, 56, 21, 0, 47, 0, 14, 68, 56, 19, 205, 36,
+			50, 35, 10, 6, 117, 65, 37, 0, 18, 70, 37, 50, 193, 72, 147, 212, 37, 89, 49, 6, 35, 34, 37, 110, 47, 0, 17, 70, 8, 21,
+			1, 88, 153, 0, 71, 35, 47, 6, 115, 84, 37, 13, 0, 0, 0, 20, 73, 32, 19, 132, 80, 84, 148, 40, 145, 64, 107, 35, 50, 47,
+			113, 34, 80, 37, 0, 5, 194, 56, 16, 72, 8, 66, 48, 80, 55, 13, 0, 46, 0, 13, 3, 95, 53, 88, 6, 83, 123, 83, 47, 109,
+			136, 0, 0, 19, 71, 44, 243, 80, 84, 196, 201, 20, 49, 110, 65, 48, 6, 111, 55, 89, 37, 0, 0, 18, 71, 8, 244, 132, 20, 115,
+			197, 16, 71, 131, 34, 72, 13, 136, 40, 47, 0, 12, 68, 56, 21, 68, 136, 50, 110, 72, 6, 116, 0, 13, 4, 95, 114, 110, 103, 6,
+			115, 50, 71, 112, 55, 0, 0, 13, 69, 48, 81, 193, 5, 64, 55, 13, 136, 115, 47, 0, 0, 0, 14, 69, 17, 84, 214, 21, 32, 72,
+			111, 89, 83, 112, 34, 0, 12, 3, 95, 55, 111, 89, 6, 116, 84, 13, 50, 0, 0, 0, 14, 69, 77, 80, 137, 21, 64, 89, 111, 71,
+			6, 37, 47, 0, 18, 71, 72, 147, 80, 20, 194, 78, 28, 34, 109, 65, 48, 13, 55, 13, 68, 0, 14, 69, 52, 84, 140, 61, 64, 65,
+			112, 34, 55, 6, 117, 0, 6, 194, 41, 144, 72, 32, 0, 13, 3, 95, 54, 88, 6, 89, 108, 89, 47, 109, 136, 0, 0, 17, 70, 21,
+			113, 78, 81, 114, 76, 116, 84, 13, 50, 47, 84, 13, 55, 0, 0, 0, 16, 70, 8, 85, 197, 8, 81, 78, 71, 116, 84, 13, 71, 116,
+			50, 0, 0, 20, 72, 36, 224, 71, 56, 83, 73, 56, 112, 13, 50, 35, 136, 50, 116, 65, 13, 68, 0, 17, 70, 17, 85, 133, 56, 17,
+			197, 72, 118, 84, 13, 50, 115, 136, 13, 0, 0, 19, 71, 28, 83, 4, 20, 194, 75, 20, 136, 112, 55, 72, 13, 55, 13, 49, 13, 0,
+			0, 13, 70, 16, 148, 133, 13, 69, 83, 21, 108, 97, 0, 47, 18, 70, 4, 192, 133, 73, 69, 83, 35, 55, 71, 6, 112, 34, 47, 111,
+			89, 0, 17, 70, 16, 19, 65, 76, 181, 83, 72, 13, 65, 35, 89, 49, 111, 89, 0, 0, 0, 0, 0, 12, 69, 80, 241, 71, 20, 80,
+			47, 40, 136, 116, 0, 12, 69, 52, 81, 71, 20, 80, 65, 116, 136, 116, 0, 16, 69, 36, 225, 21, 56, 16, 37, 50, 72, 6, 40, 12,
+			50, 35, 0, 8, 197, 40, 84, 193, 40, 16, 66, 14, 69, 52, 243, 137, 12, 16, 65, 110, 50, 37, 49, 35, 0, 15, 69, 32, 83, 5,
+			56, 16, 107, 37, 55, 6, 116, 50, 35, 0, 13, 69, 24, 245, 82, 36, 80, 83, 40, 34, 6, 37, 0, 0, 0, 12, 68, 8, 82, 193,
+			24, 71, 112, 49, 35, 83, 0, 0, 11, 3, 95, 57, 111, 50, 116, 136, 13, 50, 0, 0, 13, 69, 8, 85, 19, 36, 80, 71, 108, 47,
+			89, 37, 0, 13, 69, 44, 230, 83, 56, 16, 50, 123, 89, 50, 35, 0, 0, 0, 8, 195, 40, 245, 64, 72, 46, 32, 10, 69, 8, 241,
+			73, 56, 112, 21, 0, 47, 20, 71, 52, 16, 197, 16, 243, 137, 144, 65, 35, 89, 13, 72, 6, 117, 50, 37, 13, 0, 13, 3, 95, 56,
+			88, 6, 47, 35, 136, 47, 109, 136, 0, 0, 10, 199, 24, 147, 129, 48, 148, 212, 20, 67, 0, 9, 198, 60, 244, 140, 20, 81, 128, 66,
+			13, 70, 21, 128, 204, 85, 50, 79, 21, 108, 97, 0, 47, 0, 0, 11, 70, 88, 148, 135, 36, 226, 65, 21, 0, 47, 0, 0, 0, 0,
+			9, 198, 84, 226, 70, 61, 35, 69, 67, 15, 3, 95, 57, 88, 6, 50, 116, 136, 13, 50, 47, 109, 136, 0, 0, 0, 6, 195, 52, 85,
+			0, 72, 0, 0, 0, 0, 0, 13, 69, 52, 147, 149, 85, 64, 65, 13, 50, 118, 47, 0, 12, 3, 95, 63, 65, 55, 6, 108, 47, 13,
+			34, 0, 0, 11, 68, 36, 229, 5, 72, 21, 108, 97, 0, 47, 8, 196, 60, 225, 5, 72, 72, 10, 0, 8, 197, 92, 21, 20, 21, 32,
+			8, 0, 0, 18, 71, 76, 50, 1, 48, 181, 217, 44, 89, 49, 35, 55, 49, 84, 123, 49, 0, 16, 70, 20, 147, 147, 80, 82, 78, 121,
+			50, 89, 47, 121, 12, 50, 0, 17, 70, 92, 19, 12, 60, 226, 100, 84, 35, 55, 6, 117, 50, 37, 13, 0, 19, 71, 64, 146, 197, 80,
+			33, 82, 28, 48, 13, 49, 108, 47, 71, 112, 34, 136, 0, 18, 71, 12, 243, 5, 76, 33, 82, 28, 49, 117, 55, 89, 71, 112, 34, 136,
+			0, 0, 0, 21, 72, 8, 19, 135, 48, 17, 5, 76, 160, 71, 35, 68, 81, 55, 35, 72, 6, 108, 91, 0, 4, 193, 168, 43, 0, 18,
+			70, 88, 84, 213, 88, 149, 83, 84, 13, 89, 40, 12, 84, 37, 111, 89, 0, 15, 69, 84, 197, 78, 16, 144, 40, 55, 6, 40, 50, 72,
+			37, 0, 13, 4, 95, 115, 116, 107, 89, 47, 34, 6, 116, 48, 0, 0, 17, 70, 76, 243, 143, 56, 65, 82, 89, 110, 50, 10, 110, 50,
+			13, 34, 0, 20, 71, 4, 229, 8, 60, 226, 85, 76, 35, 50, 47, 6, 117, 50, 37, 38, 111, 89, 0, 0, 19, 66, 36, 224, 21, 108,
+			97, 0, 47, 81, 101, 120, 116, 114, 101, 109, 105, 115, 32, 19, 66, 36, 224, 21, 108, 97, 0, 47, 81, 97, 98, 115, 101, 110, 116, 105,
+			97, 32, 17, 66, 36, 224, 21, 108, 97, 0, 47, 81, 100, 101, 98, 105, 116, 105, 32, 5, 194, 36, 224, 72, 10, 3, 226, 153, 175, 49,
+			34, 127, 89, 0, 0, 0, 12, 68, 80, 84, 149, 28, 47, 14, 34, 111, 136, 0, 9, 3, 226, 153, 173, 65, 110, 55, 0, 0, 23, 73,
+			76, 197, 73, 80, 85, 197, 56, 16, 82, 89, 55, 127, 47, 10, 116, 84, 13, 50, 115, 34, 0, 19, 71, 52, 20, 148, 32, 147, 149, 76,
+			65, 35, 34, 47, 6, 37, 50, 111, 89, 0, 0, 12, 68, 88, 84, 148, 20, 83, 112, 34, 47, 13, 0, 7, 196, 64, 20, 148, 20, 65,
+			12, 68, 24, 244, 148, 20, 83, 110, 34, 47, 13, 0, 24, 68, 12, 20, 144, 20, 49, 35, 34, 48, 108, 15, 72, 37, 12, 108, 65, 0,
+			81, 100, 105, 101, 109, 32, 0, 14, 69, 88, 84, 147, 80, 80, 83, 112, 34, 89, 47, 13, 0, 16, 69, 76, 244, 8, 36, 16, 89, 40,
+			83, 6, 37, 12, 57, 35, 0, 17, 69, 4, 209, 76, 36, 16, 35, 65, 6, 37, 12, 55, 37, 57, 35, 0, 14, 69, 80, 19, 139, 92,
+			16, 47, 35, 68, 49, 58, 35, 0, 14, 69, 28, 17, 1, 72, 16, 136, 13, 72, 115, 34, 35, 0, 0, 0, 0, 0, 15, 69, 80, 245,
+			1, 48, 80, 47, 40, 47, 6, 115, 55, 13, 0, 15, 69, 76, 19, 21, 80, 80, 89, 35, 55, 6, 118, 47, 13, 0, 8, 197, 64, 20,
+			139, 36, 80, 65, 15, 69, 56, 17, 193, 56, 16, 50, 35, 81, 6, 115, 50, 35, 0, 14, 69, 56, 17, 5, 48, 80, 50, 115, 72, 116,
+			55, 13, 0, 14, 69, 48, 81, 193, 80, 80, 55, 13, 136, 115, 47, 13, 0, 15, 69, 16, 82, 193, 16, 80, 72, 108, 49, 6, 115, 72,
+			13, 0, 14, 69, 28, 195, 210, 36, 16, 81, 55, 131, 34, 37, 35, 0, 14, 69, 12, 80, 201, 48, 80, 89, 13, 89, 37, 12, 55, 0,
+			0, 0, 21, 73, 20, 225, 197, 48, 36, 133, 12, 133, 0, 108, 68, 13, 55, 71, 34, 112, 136, 47, 0, 0, 10, 199, 88, 243, 210, 48,
+			83, 148, 20, 65, 0, 20, 72, 52, 20, 135, 84, 84, 137, 80, 80, 65, 115, 81, 13, 34, 6, 37, 12, 47, 0, 0, 0, 8, 197, 44,
+			147, 79, 56, 240, 66, 13, 69, 76, 20, 16, 32, 240, 89, 35, 48, 83, 40, 0, 0, 18, 71, 64, 245, 16, 61, 84, 146, 36, 48, 110,
+			47, 48, 40, 34, 6, 37, 0, 0, 0, 15, 70, 24, 84, 146, 5, 34, 64, 83, 13, 34, 115, 34, 37, 0, 0, 0, 0, 10, 67, 89,
+			33, 75, 83, 34, 112, 49, 0, 13, 68, 60, 225, 69, 72, 110, 50, 10, 116, 34, 0, 46, 13, 70, 36, 224, 204, 85, 50, 79, 21, 108,
+			97, 0, 47, 0, 9, 198, 52, 20, 211, 4, 19, 0, 66, 10, 67, 24, 244, 148, 83, 110, 34, 47, 0, 7, 196, 40, 244, 137, 76, 65,
+			0, 19, 71, 84, 149, 5, 72, 16, 82, 16, 127, 47, 13, 34, 10, 6, 115, 34, 47, 0, 0, 9, 198, 88, 243, 8, 20, 145, 0, 65,
+			16, 70, 12, 132, 137, 76, 160, 78, 49, 34, 109, 89, 57, 35, 50, 0, 12, 4, 95, 99, 105, 114, 49, 6, 35, 48, 37, 0, 4, 193,
+			172, 43, 0, 16, 70, 72, 145, 83, 48, 147, 135, 34, 37, 12, 89, 55, 37, 68, 0, 23, 67, 65, 35, 192, 48, 34, 117, 15, 83, 6,
+			110, 34, 65, 35, 0, 81, 102, 111, 114, 109, 97, 32, 16, 70, 21, 33, 197, 72, 147, 135, 112, 34, 81, 13, 34, 13, 68, 0, 7, 195,
+			4, 19, 128, 72, 10, 17, 70, 44, 19, 1, 24, 243, 135, 49, 35, 55, 35, 83, 6, 110, 68, 0, 0, 0, 14, 69, 48, 144, 137, 16,
+			240, 55, 13, 71, 37, 72, 40, 0, 16, 70, 12, 128, 82, 48, 83, 133, 91, 115, 55, 6, 37, 12, 50, 0, 19, 72, 48, 18, 78, 29,
+			48, 149, 72, 112, 55, 123, 50, 89, 71, 111, 34, 136, 0, 15, 69, 28, 64, 78, 76, 176, 81, 14, 72, 35, 50, 89, 49, 0, 21, 72,
+			25, 32, 83, 21, 32, 149, 72, 112, 83, 34, 123, 88, 13, 34, 71, 111, 34, 136, 0, 0, 17, 70, 56, 81, 197, 77, 65, 82, 50, 116,
+			136, 13, 89, 47, 112, 34, 0, 20, 71, 36, 212, 18, 60, 212, 20, 84, 37, 65, 48, 34, 6, 110, 65, 48, 47, 40, 0, 17, 70, 32,
+			20, 148, 77, 65, 82, 107, 35, 34, 47, 89, 47, 112, 34, 0, 11, 70, 29, 83, 12, 37, 97, 82, 21, 0, 47, 10, 3, 95, 56, 111,
+			10, 6, 35, 136, 0, 14, 4, 95, 48, 77, 50, 65, 109, 55, 57, 6, 40, 50, 0, 0, 10, 67, 13, 83, 64, 21, 108, 97, 0, 47,
+			15, 4, 95, 48, 77, 51, 65, 109, 55, 57, 6, 35, 34, 47, 0, 0, 0, 12, 69, 36, 226, 84, 36, 240, 21, 108, 97, 0, 47, 14,
+			69, 76, 19, 15, 52, 240, 89, 115, 55, 13, 65, 117, 0, 15, 4, 95, 48, 77, 49, 6, 72, 6, 127, 89, 13, 50, 47, 0, 0, 9,
+			198, 60, 225, 197, 49, 146, 192, 65, 0, 17, 70, 28, 85, 197, 48, 198, 83, 136, 116, 84, 13, 55, 55, 123, 89, 0, 14, 69, 52, 148,
+			137, 4, 208, 65, 109, 34, 37, 13, 65, 0, 0, 19, 71, 80, 147, 79, 80, 129, 85, 76, 47, 13, 65, 6, 117, 47, 37, 111, 89, 0,
+			0, 9, 68, 16, 21, 137, 16, 21, 0, 47, 0, 0, 20, 72, 24, 147, 9, 65, 1, 78, 76, 80, 83, 13, 55, 13, 48, 108, 50, 89,
+			13, 0, 12, 71, 28, 84, 141, 37, 53, 15, 56, 21, 0, 47, 0, 19, 72, 92, 83, 12, 36, 225, 212, 60, 224, 58, 108, 55, 37, 68,
+			47, 13, 50, 0, 0, 0, 12, 201, 92, 16, 82, 76, 182, 78, 48, 146, 192, 66, 10, 67, 72, 83, 162, 34, 13, 50, 123, 0, 0, 18,
+			4, 95, 108, 105, 103, 72, 6, 111, 71, 13, 55, 55, 108, 47, 13, 34, 0, 0, 15, 70, 8, 244, 132, 20, 21, 88, 71, 110, 34, 72,
+			6, 120, 0, 0, 12, 68, 12, 80, 201, 48, 89, 108, 89, 13, 55, 0, 9, 68, 56, 145, 197, 48, 21, 0, 47, 0, 13, 71, 32, 243,
+			199, 20, 65, 76, 20, 107, 117, 136, 0, 11, 70, 28, 147, 2, 21, 37, 0, 21, 0, 47, 0, 17, 70, 44, 244, 9, 21, 33, 71, 49,
+			40, 48, 6, 37, 34, 112, 136, 0, 0, 18, 70, 76, 192, 80, 5, 35, 64, 89, 55, 35, 48, 10, 35, 34, 14, 65, 0, 0, 0, 25,
+			73, 28, 241, 1, 48, 208, 71, 80, 145, 192, 136, 110, 47, 10, 35, 55, 65, 6, 35, 136, 47, 13, 136, 0, 9, 68, 32, 83, 146, 100,
+			21, 0, 47, 0, 20, 72, 64, 242, 78, 76, 85, 20, 36, 16, 48, 124, 50, 89, 6, 108, 47, 37, 35, 0, 9, 197, 16, 16, 82, 60,
+			208, 8, 32, 8, 67, 29, 86, 64, 21, 0, 47, 0, 12, 68, 8, 244, 137, 76, 71, 110, 34, 13, 89, 0, 14, 67, 44, 20, 20, 49,
+			35, 48, 47, 6, 123, 50, 0, 24, 0, 0, 0, 21, 72, 16, 148, 12, 60, 208, 83, 36, 80, 72, 13, 48, 55, 117, 65, 35, 89, 6,
+			37, 0, 12, 71, 92, 147, 12, 37, 53, 15, 56, 21, 0, 47, 12, 71, 77, 65, 86, 20, 228, 207, 56, 21, 0, 47, 0, 14, 71, 8,
+			240, 195, 4, 48, 201, 60, 21, 105, 116, 0, 47, 0, 21, 73, 88, 241, 76, 20, 229, 8, 20, 145, 0, 83, 40, 55, 13, 50, 47, 107,
+			123, 47, 0, 0, 6, 194, 53, 144, 72, 32, 10, 199, 52, 17, 196, 4, 193, 78, 4, 67, 12, 71, 52, 83, 2, 61, 84, 142, 20, 21,
+			0, 47, 0, 0, 0, 15, 70, 24, 84, 146, 20, 148, 129, 83, 13, 34, 113, 34, 13, 0, 0, 0, 16, 70, 72, 245, 20, 20, 225, 83,
+			34, 110, 47, 13, 50, 108, 89, 0, 9, 198, 32, 84, 131, 84, 193, 83, 65, 0, 0, 13, 68, 72, 243, 133, 48, 34, 40, 50, 6, 112,
+			55, 0, 9, 198, 20, 180, 212, 20, 83, 128, 65, 20, 70, 104, 147, 66, 4, 37, 197, 88, 109, 12, 65, 71, 6, 35, 71, 10, 58, 108,
+			0, 16, 70, 45, 84, 149, 52, 19, 128, 49, 40, 34, 40, 65, 35, 50, 0, 0, 6, 194, 60, 96, 72, 8, 0, 0, 0, 23, 73, 60,
+			33, 82, 4, 211, 69, 72, 112, 85, 117, 71, 13, 34, 6, 35, 65, 13, 34, 81, 129, 0, 17, 70, 44, 147, 147, 32, 20, 193, 49, 37,
+			50, 91, 6, 115, 89, 35, 0, 0, 12, 68, 72, 81, 201, 20, 34, 13, 90, 37, 12, 0, 11, 70, 72, 22, 77, 60, 225, 0, 21, 0,
+			47, 0, 0, 0, 9, 4, 95, 35, 100, 101, 72, 13, 0, 0, 0, 0, 0, 17, 70, 16, 160, 75, 5, 37, 1, 75, 35, 49, 6, 35,
+			34, 47, 35, 0, 0, 15, 70, 40, 21, 207, 61, 33, 0, 57, 115, 84, 117, 34, 47, 0, 0, 16, 70, 88, 84, 146, 21, 113, 71, 83,
+			112, 34, 13, 84, 112, 136, 0, 10, 67, 52, 17, 192, 65, 35, 136, 0, 32, 17, 67, 65, 33, 83, 48, 34, 13, 89, 13, 72, 6, 108,
+			50, 47, 0, 24, 0, 13, 4, 95, 99, 101, 100, 89, 13, 72, 109, 55, 35, 0, 0, 10, 3, 115, 39, 110, 89, 13, 50, 0, 72, 12,
+			68, 61, 32, 65, 48, 117, 34, 6, 115, 55, 0, 16, 70, 8, 16, 137, 48, 243, 128, 71, 35, 71, 37, 55, 110, 50, 0, 0, 15, 70,
+			28, 84, 136, 5, 33, 0, 136, 112, 34, 35, 34, 47, 0, 0, 26, 73, 52, 244, 133, 48, 85, 1, 64, 20, 139, 65, 110, 34, 13, 55,
+			4, 108, 47, 35, 48, 6, 35, 34, 49, 0, 0, 23, 73, 44, 19, 69, 72, 17, 5, 72, 145, 64, 49, 35, 65, 13, 34, 115, 72, 13,
+			34, 6, 37, 0, 0, 15, 69, 36, 229, 5, 57, 48, 13, 50, 47, 6, 108, 50, 89, 0, 14, 69, 20, 193, 5, 73, 48, 112, 55, 72,
+			13, 34, 89, 0, 7, 196, 76, 241, 1, 80, 8, 7, 196, 60, 209, 1, 80, 8, 14, 69, 52, 20, 137, 85, 48, 65, 115, 34, 37, 111,
+			89, 0, 13, 69, 48, 85, 201, 21, 48, 55, 13, 84, 37, 89, 0, 0, 10, 199, 4, 113, 210, 21, 52, 201, 20, 66, 7, 66, 113, 48,
+			35, 89, 0, 0, 0, 20, 71, 52, 20, 203, 21, 34, 78, 28, 65, 35, 89, 49, 6, 116, 34, 13, 68, 0, 46, 0, 22, 73, 56, 19,
+			1, 80, 145, 200, 20, 145, 0, 50, 115, 55, 6, 115, 47, 13, 136, 123, 47, 0, 14, 69, 48, 242, 193, 5, 48, 55, 110, 49, 10, 115,
+			89, 0, 9, 197, 4, 225, 5, 73, 48, 8, 32, 0, 18, 71, 28, 85, 129, 48, 193, 78, 20, 136, 13, 83, 35, 55, 13, 50, 13, 0,
+			0, 0, 16, 4, 95, 99, 97, 112, 107, 6, 117, 83, 55, 108, 47, 13, 34, 0, 0, 21, 72, 76, 19, 69, 48, 85, 201, 56, 112, 89,
+			115, 65, 13, 55, 4, 116, 84, 13, 68, 0, 13, 68, 76, 245, 197, 48, 89, 117, 84, 6, 112, 55, 0, 18, 70, 12, 20, 193, 56, 245,
+			129, 49, 35, 89, 35, 50, 6, 117, 84, 35, 0, 0, 9, 198, 88, 243, 210, 44, 81, 82, 65, 0, 18, 70, 65, 35, 198, 21, 65, 83,
+			48, 34, 110, 83, 13, 47, 6, 108, 89, 0, 0, 0, 9, 198, 52, 148, 203, 36, 83, 128, 66, 17, 70, 29, 32, 70, 24, 149, 9, 81,
+			34, 35, 83, 6, 37, 47, 37, 0, 10, 198, 60, 100, 203, 60, 243, 128, 66, 8, 9, 198, 88, 147, 10, 60, 83, 128, 66, 9, 68, 13,
+			148, 137, 48, 21, 0, 47, 13, 70, 5, 98, 71, 56, 243, 128, 21, 102, 114, 0, 47, 0, 12, 68, 16, 20, 133, 52, 72, 35, 34, 13,
+			65, 0, 15, 70, 12, 132, 137, 77, 67, 192, 49, 34, 109, 89, 47, 40, 0, 0, 0, 12, 68, 29, 34, 69, 28, 81, 34, 37, 12, 81,
+			0, 0, 24, 73, 52, 84, 207, 64, 245, 1, 52, 153, 0, 65, 108, 89, 40, 48, 40, 47, 6, 115, 65, 37, 13, 0, 0, 14, 69, 8,
+			85, 197, 56, 64, 71, 116, 84, 13, 50, 47, 0, 9, 68, 92, 22, 78, 20, 21, 0, 47, 0, 20, 72, 12, 19, 79, 84, 99, 1, 28,
+			80, 49, 35, 65, 40, 83, 55, 6, 115, 90, 0, 12, 68, 40, 244, 197, 24, 57, 117, 89, 13, 83, 0, 0, 16, 70, 32, 244, 193, 56,
+			224, 64, 107, 40, 89, 6, 35, 50, 35, 0, 0, 0, 0, 0, 11, 68, 4, 210, 67, 60, 21, 108, 97, 0, 47, 18, 70, 40, 84, 133,
+			52, 144, 64, 57, 2, 116, 34, 13, 65, 6, 37, 35, 0, 0, 17, 70, 76, 177, 80, 76, 83, 5, 89, 49, 108, 48, 89, 13, 55, 13,
+			0, 17, 70, 72, 81, 5, 16, 83, 5, 34, 116, 72, 13, 72, 116, 55, 13, 0, 10, 68, 12, 128, 82, 48, 91, 115, 55, 0, 20, 73,
+			52, 245, 73, 48, 193, 80, 84, 229, 0, 65, 40, 55, 37, 48, 111, 50, 47, 0, 0, 15, 70, 12, 149, 18, 62, 51, 128, 89, 13, 47,
+			34, 40, 50, 0, 0, 0, 0, 7, 195, 76, 19, 0, 72, 32, 0, 0, 0, 9, 68, 20, 197, 137, 76, 21, 0, 47, 0, 15, 69, 29,
+			32, 84, 37, 48, 136, 34, 6, 115, 47, 13, 89, 0, 14, 69, 4, 226, 77, 85, 48, 35, 50, 37, 65, 40, 89, 0, 0, 9, 198, 8,
+			244, 203, 4, 20, 192, 66, 10, 199, 5, 69, 18, 4, 180, 201, 20, 66, 11, 70, 8, 80, 84, 48, 84, 192, 21, 0, 47, 16, 70, 52,
+			84, 211, 36, 20, 192, 65, 13, 89, 37, 57, 35, 89, 0, 15, 70, 8, 244, 12, 4, 20, 192, 71, 117, 48, 55, 115, 89, 0, 0, 0,
+			16, 70, 60, 101, 5, 92, 83, 0, 110, 83, 47, 13, 84, 112, 55, 0, 9, 198, 32, 241, 86, 20, 83, 0, 8, 0, 8, 197, 61, 3,
+			1, 5, 48, 66, 0, 10, 198, 56, 241, 212, 4, 228, 192, 8, 32, 0, 0, 11, 68, 4, 53, 9, 60, 21, 108, 97, 0, 47, 0, 0,
+			0, 9, 198, 32, 84, 139, 84, 193, 83, 65, 17, 70, 17, 82, 84, 77, 113, 83, 72, 127, 47, 89, 84, 6, 108, 89, 0, 0, 11, 68,
+			52, 16, 200, 60, 65, 35, 76, 120, 0, 14, 69, 52, 245, 84, 60, 224, 65, 40, 47, 6, 110, 50, 0, 0, 21, 72, 32, 84, 146, 101,
+			49, 78, 37, 48, 107, 112, 34, 6, 123, 89, 13, 50, 13, 89, 0, 17, 70, 8, 244, 143, 16, 147, 128, 71, 110, 34, 40, 72, 6, 37,
+			50, 0, 0, 16, 70, 4, 195, 5, 29, 35, 192, 35, 55, 6, 108, 81, 34, 40, 0, 24, 74, 64, 245, 3, 32, 81, 147, 81, 35, 207,
+			52, 48, 110, 76, 109, 83, 89, 47, 34, 6, 117, 65, 0, 0, 0, 11, 200, 60, 225, 5, 73, 118, 83, 21, 32, 67, 17, 70, 12, 16,
+			133, 72, 225, 84, 49, 35, 71, 13, 34, 50, 6, 123, 0, 11, 70, 52, 20, 135, 5, 33, 84, 21, 0, 47, 0, 0, 14, 69, 36, 225,
+			210, 36, 64, 37, 68, 81, 34, 13, 72, 0, 10, 69, 32, 245, 193, 72, 64, 21, 0, 47, 13, 68, 20, 194, 90, 20, 37, 55, 6, 37,
+			12, 88, 0, 0, 9, 67, 21, 32, 64, 116, 34, 35, 0, 0, 8, 197, 60, 209, 197, 20, 96, 66, 0, 0, 10, 69, 4, 193, 146, 20,
+			64, 21, 0, 47, 0, 18, 70, 64, 147, 143, 44, 178, 79, 48, 37, 50, 6, 110, 49, 37, 38, 40, 0, 0, 22, 73, 88, 84, 146, 20,
+			112, 65, 56, 65, 64, 83, 112, 34, 13, 136, 6, 115, 50, 72, 13, 0, 9, 198, 60, 225, 197, 17, 83, 4, 65, 15, 70, 72, 80, 133,
+			44, 176, 64, 34, 13, 71, 108, 49, 35, 0, 8, 197, 20, 195, 73, 20, 224, 66, 10, 69, 16, 20, 151, 36, 224, 21, 0, 47, 11, 70,
+			13, 147, 148, 32, 144, 64, 21, 0, 47, 0, 15, 70, 52, 144, 200, 20, 195, 5, 65, 37, 91, 6, 112, 55, 0, 17, 70, 88, 153, 20,
+			56, 19, 64, 84, 57, 6, 108, 47, 50, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 52, 144, 200, 4, 83, 0, 21, 0, 47,
+			0, 0, 13, 70, 53, 85, 1, 80, 148, 192, 21, 108, 97, 0, 47, 14, 68, 37, 53, 90, 84, 37, 89, 6, 40, 12, 88, 40, 0, 15,
+			70, 56, 146, 204, 4, 20, 192, 50, 37, 49, 55, 115, 89, 0, 11, 70, 12, 128, 82, 48, 84, 192, 21, 0, 47, 12, 70, 77, 4, 137,
+			56, 116, 192, 21, 0, 41, 47, 0, 12, 68, 8, 82, 197, 72, 71, 116, 49, 13, 34, 0, 0, 16, 70, 44, 244, 147, 92, 83, 0, 49,
+			110, 34, 89, 84, 13, 55, 0, 0, 9, 198, 4, 100, 137, 12, 19, 129, 67, 18, 70, 12, 20, 143, 48, 147, 129, 49, 35, 34, 40, 55,
+			6, 37, 50, 35, 0, 0, 15, 70, 92, 147, 12, 20, 228, 192, 84, 109, 55, 13, 50, 89, 0, 0, 16, 70, 28, 84, 197, 48, 147, 135,
+			136, 116, 89, 13, 55, 13, 68, 0, 0, 14, 69, 36, 225, 9, 20, 224, 109, 50, 72, 37, 50, 0, 36, 14, 69, 12, 20, 141, 20, 224,
+			49, 35, 34, 65, 108, 50, 0, 16, 70, 4, 33, 21, 48, 192, 72, 35, 71, 72, 6, 40, 55, 35, 0, 0, 0, 13, 70, 52, 243, 147,
+			36, 85, 82, 21, 102, 114, 0, 47, 0, 0, 18, 71, 13, 33, 83, 12, 83, 132, 60, 49, 34, 13, 91, 108, 50, 72, 40, 0, 10, 69,
+			28, 244, 132, 60, 224, 21, 0, 47, 0, 18, 72, 76, 86, 67, 32, 83, 12, 21, 48, 89, 123, 91, 6, 112, 55, 88, 0, 0, 22, 72,
+			48, 148, 197, 57, 50, 65, 5, 64, 55, 13, 89, 134, 50, 89, 37, 38, 6, 115, 47, 0, 0, 0, 21, 73, 72, 83, 129, 37, 52, 193,
+			56, 49, 64, 34, 108, 50, 13, 89, 6, 133, 50, 89, 0, 11, 200, 56, 147, 77, 21, 35, 69, 21, 32, 65, 15, 70, 52, 16, 199, 36,
+			195, 0, 65, 13, 81, 57, 37, 55, 0, 0, 0, 16, 70, 76, 145, 205, 84, 225, 0, 89, 37, 81, 65, 40, 50, 47, 0, 14, 4, 95,
+			103, 114, 118, 136, 34, 35, 83, 6, 109, 89, 0, 0, 8, 67, 80, 129, 79, 47, 119, 0, 0, 16, 70, 5, 97, 82, 76, 145, 64, 35,
+			84, 6, 112, 34, 89, 37, 0, 16, 70, 88, 148, 193, 28, 145, 64, 83, 37, 89, 6, 115, 136, 37, 0, 15, 70, 77, 86, 133, 81, 65,
+			64, 89, 40, 88, 6, 108, 47, 0, 15, 70, 52, 83, 1, 56, 145, 64, 65, 13, 55, 115, 50, 37, 0, 15, 70, 52, 20, 133, 48, 145,
+			64, 65, 35, 34, 13, 55, 37, 0, 0, 20, 72, 88, 243, 210, 56, 83, 69, 57, 48, 83, 117, 34, 50, 116, 65, 13, 50, 89, 0, 10,
+			198, 60, 225, 5, 84, 113, 5, 65, 46, 11, 70, 44, 83, 148, 84, 50, 217, 21, 0, 47, 8, 2, 195, 151, 65, 115, 55, 0, 0, 9,
+			67, 28, 81, 78, 136, 116, 50, 0, 8, 195, 28, 16, 78, 72, 46, 32, 10, 66, 77, 64, 89, 13, 50, 47, 0, 24, 0, 6, 195, 76,
+			243, 211, 72, 6, 195, 76, 243, 211, 8, 0, 9, 198, 60, 226, 213, 56, 65, 64, 65, 17, 70, 56, 244, 141, 4, 193, 64, 50, 110, 34,
+			65, 6, 115, 55, 13, 0, 16, 70, 8, 244, 135, 20, 225, 64, 71, 110, 34, 136, 13, 50, 13, 0, 17, 70, 100, 243, 1, 56, 65, 64,
+			57, 40, 55, 6, 35, 50, 72, 13, 0, 14, 69, 17, 83, 131, 4, 224, 72, 35, 68, 49, 14, 50, 0, 0, 10, 67, 4, 193, 197, 35,
+			55, 136, 13, 0, 11, 67, 52, 145, 193, 65, 6, 37, 136, 35, 0, 0, 9, 68, 92, 83, 132, 100, 21, 0, 47, 0, 11, 68, 72, 83,
+			162, 20, 34, 13, 50, 123, 0, 0, 17, 70, 76, 147, 135, 20, 227, 212, 89, 109, 50, 136, 13, 50, 110, 47, 0, 0, 12, 201, 60, 244,
+			133, 20, 226, 207, 53, 53, 5, 66, 12, 2, 194, 167, 35, 83, 72, 116, 55, 13, 68, 0, 0, 10, 66, 76, 80, 108, 89, 13, 0, 41,
+			46, 6, 194, 60, 208, 72, 10, 13, 2, 194, 164, 65, 111, 50, 47, 116, 49, 13, 50, 0, 0, 8, 2, 194, 165, 57, 108, 50, 0, 0,
+			0, 9, 2, 194, 163, 48, 131, 50, 47, 0, 0, 18, 70, 60, 225, 1, 56, 180, 192, 6, 110, 50, 72, 35, 68, 49, 89, 0, 8, 9,
+			198, 4, 229, 1, 72, 84, 192, 66, 15, 70, 76, 84, 150, 4, 20, 192, 89, 13, 34, 83, 115, 89, 0, 10, 69, 21, 35, 133, 77, 64,
+			21, 0, 47, 16, 69, 37, 64, 76, 38, 64, 37, 47, 6, 115, 55, 37, 38, 13, 0, 0, 12, 201, 77, 113, 84, 80, 84, 138, 60, 83,
+			0, 67, 0, 14, 69, 72, 243, 132, 21, 32, 34, 110, 50, 72, 13, 34, 0, 16, 69, 88, 84, 132, 21, 32, 83, 6, 112, 34, 72, 13,
+			34, 0, 8, 14, 69, 20, 196, 193, 10, 32, 112, 55, 89, 13, 71, 37, 0, 12, 69, 8, 245, 87, 21, 32, 71, 120, 13, 34, 0, 17,
+			70, 64, 244, 148, 84, 112, 76, 48, 110, 34, 47, 118, 136, 35, 55, 0, 0, 0, 16, 70, 56, 241, 197, 20, 228, 192, 50, 110, 136, 10,
+			116, 50, 89, 0, 11, 70, 77, 65, 86, 20, 228, 192, 21, 0, 47, 11, 70, 12, 243, 12, 36, 228, 192, 21, 0, 47, 5, 130, 195, 164,
+			43, 0, 0, 0, 10, 67, 105, 83, 21, 88, 40, 55, 40, 0, 0, 0, 18, 70, 8, 195, 205, 21, 37, 83, 71, 55, 40, 65, 6, 116,
+			34, 111, 89, 0, 13, 2, 194, 169, 49, 40, 48, 6, 37, 34, 112, 136, 0, 0, 10, 69, 9, 84, 148, 60, 224, 21, 0, 47, 13, 2,
+			194, 182, 48, 35, 34, 35, 136, 34, 115, 83, 0, 0, 5, 130, 195, 175, 43, 0, 5, 130, 195, 172, 43, 0, 9, 67, 88, 144, 64, 84,
+			37, 35, 0, 10, 2, 194, 181, 65, 37, 49, 34, 40, 0, 0, 21, 72, 28, 80, 146, 60, 177, 78, 21, 32, 136, 13, 71, 34, 117, 49,
+			13, 50, 13, 34, 0, 22, 72, 52, 17, 1, 28, 20, 203, 5, 32, 65, 35, 72, 35, 136, 6, 35, 89, 49, 35, 34, 0, 0, 14, 71,
+			12, 129, 86, 72, 243, 5, 80, 21, 102, 114, 0, 47, 0, 11, 5, 95, 35, 115, 116, 101, 89, 47, 13, 0, 10, 2, 194, 176, 136, 34,
+			115, 72, 13, 0, 0, 17, 2, 194, 177, 48, 55, 111, 89, 10, 110, 83, 65, 37, 50, 111, 89, 0, 0, 20, 71, 92, 81, 199, 21, 113,
+			78, 76, 84, 112, 136, 13, 84, 6, 108, 12, 50, 89, 0, 14, 70, 88, 243, 210, 28, 81, 64, 83, 117, 34, 136, 116, 0, 15, 70, 12,
+			241, 84, 104, 81, 64, 49, 40, 47, 89, 6, 116, 0, 16, 70, 28, 243, 149, 8, 145, 64, 81, 13, 50, 40, 12, 71, 37, 0, 13, 2,
+			194, 190, 72, 34, 37, 49, 58, 35, 34, 47, 0, 0, 18, 70, 76, 241, 15, 20, 225, 5, 89, 6, 117, 72, 4, 40, 50, 72, 13, 0,
+			9, 198, 4, 193, 193, 4, 225, 5, 66, 10, 67, 4, 64, 77, 35, 72, 35, 65, 0, 13, 2, 195, 183, 136, 13, 72, 116, 55, 72, 128,
+			34, 0, 0, 11, 68, 32, 82, 203, 20, 107, 112, 49, 13, 0, 11, 68, 24, 244, 141, 4, 21, 108, 97, 0, 47, 17, 70, 8, 83, 138,
+			4, 210, 78, 71, 108, 50, 75, 13, 65, 13, 50, 0, 11, 2, 194, 188, 13, 49, 58, 35, 34, 47, 0, 5, 130, 195, 180, 43, 0, 28,
+			67, 56, 145, 64, 50, 4, 37, 15, 84, 4, 115, 34, 15, 50, 6, 37, 0, 82, 119, 97, 97, 114, 32, 110, 105, 101, 32, 7, 195, 56,
+			145, 64, 11, 40, 11, 2, 194, 189, 13, 107, 35, 55, 84, 13, 0, 0, 17, 70, 48, 20, 193, 28, 225, 64, 55, 35, 89, 6, 35, 50,
+			57, 13, 0, 11, 68, 24, 16, 212, 60, 21, 108, 97, 0, 47, 5, 130, 195, 178, 43, 0, 17, 70, 52, 21, 8, 36, 193, 1, 65, 35,
+			47, 6, 109, 55, 72, 35, 0, 0, 0, 0, 9, 68, 12, 192, 82, 44, 21, 0, 47, 0, 6, 195, 36, 65, 69, 66, 10, 67, 73, 81,
+			1, 34, 40, 72, 35, 0, 10, 67, 60, 193, 193, 110, 55, 81, 35, 0, 21, 67, 80, 83, 0, 47, 112, 55, 15, 35, 84, 6, 37, 84,
+			0, 81, 97, 118, 105, 118, 32, 21, 73, 72, 144, 200, 5, 33, 19, 8, 16, 73, 34, 37, 76, 13, 72, 89, 71, 6, 122, 0, 21, 73,
+			40, 81, 134, 72, 86, 83, 8, 16, 73, 75, 108, 83, 34, 37, 89, 71, 6, 122, 0, 0, 8, 66, 80, 80, 47, 13, 0, 32, 0, 24,
+			67, 64, 144, 203, 48, 4, 37, 49, 15, 13, 50, 15, 48, 6, 123, 0, 82, 110, 32, 112, 97, 121, 32, 5, 130, 195, 189, 43, 0, 0,
+			19, 71, 16, 85, 82, 20, 229, 25, 16, 72, 118, 13, 34, 13, 50, 47, 123, 47, 0, 19, 70, 16, 244, 143, 80, 129, 65, 72, 110, 34,
+			13, 47, 6, 37, 12, 57, 35, 0, 5, 130, 195, 187, 43, 0, 14, 69, 72, 82, 197, 57, 64, 34, 116, 49, 13, 50, 47, 0, 10, 69,
+			72, 240, 133, 73, 64, 21, 0, 47, 10, 69, 32, 19, 76, 21, 64, 21, 0, 47, 0, 5, 130, 195, 185, 43, 0, 15, 69, 8, 84, 212,
+			21, 32, 71, 6, 108, 89, 47, 13, 34, 0, 0, 0, 14, 69, 80, 245, 4, 5, 64, 47, 110, 72, 35, 47, 0, 8, 0, 13, 70, 21,
+			52, 18, 21, 52, 207, 21, 105, 116, 0, 47, 0, 12, 71, 5, 35, 83, 81, 35, 206, 28, 21, 0, 47, 0, 0, 0, 19, 70, 4, 229,
+			15, 56, 149, 83, 35, 50, 47, 6, 117, 50, 37, 57, 111, 89, 0, 0, 0, 17, 70, 76, 147, 129, 28, 241, 197, 89, 13, 50, 13, 136,
+			117, 136, 13, 0, 17, 70, 64, 147, 143, 80, 17, 197, 48, 37, 50, 40, 47, 6, 115, 90, 0, 0, 16, 70, 12, 132, 137, 77, 67, 198,
+			49, 34, 109, 89, 47, 110, 83, 0, 0, 0, 0, 8, 197, 60, 225, 197, 4, 112, 65, 8, 67, 52, 20, 153, 21, 0, 47, 0, 8, 196,
+			33, 83, 12, 20, 72, 32, 12, 68, 32, 147, 4, 20, 107, 37, 55, 72, 13, 0, 0, 12, 69, 13, 84, 137, 4, 80, 21, 108, 97, 0,
+			47, 11, 67, 60, 228, 192, 135, 50, 89, 0, 72, 32, 14, 69, 76, 19, 132, 72, 16, 89, 35, 50, 72, 34, 35, 0, 12, 69, 64, 145,
+			82, 72, 80, 48, 6, 116, 34, 0, 10, 69, 28, 83, 210, 28, 80, 21, 0, 47, 16, 69, 16, 19, 137, 144, 192, 72, 6, 115, 50, 37,
+			12, 13, 55, 0, 15, 69, 84, 112, 78, 16, 16, 40, 81, 6, 35, 50, 72, 35, 0, 14, 69, 56, 147, 133, 88, 80, 50, 109, 50, 13,
+			83, 37, 0, 0, 17, 71, 76, 50, 5, 21, 1, 82, 76, 89, 49, 116, 48, 13, 34, 89, 0, 15, 69, 13, 35, 206, 42, 32, 49, 34,
+			110, 50, 57, 6, 116, 0, 0, 22, 72, 61, 32, 78, 40, 84, 5, 73, 48, 117, 34, 6, 35, 50, 57, 13, 48, 113, 34, 89, 0, 0,
+			7, 196, 88, 243, 20, 20, 65, 13, 68, 76, 241, 18, 4, 89, 117, 72, 34, 6, 115, 0, 10, 67, 4, 209, 78, 115, 65, 108, 50, 0,
+			11, 68, 48, 21, 68, 20, 21, 108, 97, 0, 47, 7, 196, 76, 241, 18, 4, 8, 13, 68, 48, 80, 78, 4, 55, 37, 6, 115, 50, 35,
+			0, 8, 67, 40, 240, 78, 21, 0, 47, 10, 66, 81, 96, 47, 116, 83, 116, 10, 0, 0, 15, 69, 76, 240, 133, 72, 80, 89, 6, 117,
+			71, 13, 34, 13, 0, 8, 197, 56, 19, 65, 80, 80, 66, 15, 69, 12, 194, 86, 36, 16, 49, 55, 109, 84, 37, 57, 35, 0, 7, 195,
+			76, 245, 64, 72, 32, 13, 69, 81, 37, 68, 36, 80, 47, 34, 40, 72, 37, 0, 0, 0, 14, 69, 32, 145, 82, 76, 240, 107, 37, 12,
+			34, 89, 110, 0, 18, 70, 4, 193, 197, 32, 83, 5, 35, 55, 136, 13, 107, 4, 116, 55, 13, 0, 0, 7, 196, 88, 84, 141, 100, 66,
+			9, 198, 60, 225, 197, 72, 145, 70, 65, 0, 7, 195, 92, 245, 64, 72, 32, 12, 69, 9, 32, 72, 4, 208, 71, 34, 115, 65, 0, 0,
+			0, 16, 69, 76, 243, 1, 56, 176, 89, 2, 117, 55, 35, 68, 49, 0, 8, 18, 70, 60, 179, 1, 32, 243, 65, 120, 49, 55, 13, 107,
+			6, 120, 65, 35, 0, 0, 12, 201, 4, 117, 5, 73, 53, 5, 88, 243, 210, 68, 0, 13, 69, 80, 84, 193, 4, 208, 47, 13, 89, 115,
+			65, 0, 12, 68, 28, 83, 133, 72, 136, 116, 50, 13, 34, 0, 19, 72, 52, 19, 13, 21, 48, 149, 73, 144, 65, 115, 65, 89, 71, 13,
+			34, 37, 0, 0, 23, 73, 28, 83, 5, 72, 83, 132, 32, 82, 68, 136, 13, 55, 116, 34, 13, 50, 47, 107, 123, 47, 0, 0, 0, 16,
+			69, 88, 18, 193, 57, 64, 83, 2, 35, 49, 6, 35, 50, 47, 0, 15, 70, 76, 50, 15, 20, 208, 78, 89, 49, 40, 65, 35, 50, 0,
+			0, 6, 195, 92, 21, 0, 8, 9, 68, 72, 245, 133, 72, 21, 0, 47, 0, 11, 68, 24, 145, 5, 76, 21, 108, 97, 0, 47, 10, 69,
+			5, 37, 8, 85, 32, 21, 0, 47, 0, 0, 23, 66, 77, 144, 89, 4, 123, 15, 35, 50, 15, 89, 6, 123, 0, 82, 97, 97, 110, 32,
+			115, 121, 32, 6, 194, 77, 144, 72, 32, 13, 69, 72, 82, 78, 21, 64, 34, 13, 50, 108, 47, 0, 15, 69, 52, 246, 129, 73, 64, 65,
+			117, 47, 89, 35, 34, 47, 0, 0, 0, 13, 68, 5, 51, 207, 44, 2, 35, 89, 10, 117, 49, 0, 17, 70, 45, 112, 90, 84, 197, 64,
+			49, 58, 35, 88, 6, 40, 55, 40, 0, 0, 13, 70, 76, 244, 130, 60, 227, 133, 21, 102, 114, 0, 47, 16, 69, 17, 99, 210, 4, 176,
+			72, 14, 84, 6, 131, 90, 35, 49, 0, 14, 69, 21, 35, 69, 48, 240, 112, 34, 65, 13, 55, 117, 0, 0, 16, 70, 81, 32, 71, 36,
+			82, 192, 47, 34, 35, 136, 6, 37, 49, 0, 16, 70, 65, 33, 83, 80, 146, 192, 48, 34, 108, 89, 47, 37, 49, 0, 0, 15, 69, 76,
+			19, 1, 52, 144, 89, 35, 55, 6, 115, 65, 37, 0, 0, 17, 70, 9, 33, 89, 4, 226, 64, 71, 34, 37, 57, 6, 115, 50, 37, 0,
+			0, 0, 17, 70, 37, 35, 206, 36, 89, 0, 37, 34, 40, 50, 6, 37, 12, 13, 0, 0, 0, 13, 68, 92, 83, 1, 24, 84, 112, 55,
+			10, 35, 83, 0, 8, 67, 28, 243, 201, 136, 124, 0, 0, 0, 15, 69, 76, 243, 143, 72, 80, 89, 40, 50, 6, 117, 34, 13, 0, 8,
+			197, 60, 244, 147, 20, 80, 66, 14, 69, 40, 19, 137, 56, 80, 75, 13, 50, 37, 12, 50, 0, 13, 69, 8, 85, 10, 36, 80, 71, 108,
+			37, 80, 37, 0, 0, 8, 195, 32, 16, 82, 72, 46, 32, 0, 9, 197, 60, 225, 5, 84, 112, 65, 46, 11, 67, 45, 112, 64, 49, 58,
+			35, 0, 72, 46, 0, 13, 68, 20, 194, 84, 20, 37, 55, 6, 37, 12, 47, 0, 12, 68, 12, 130, 78, 4, 91, 6, 37, 50, 35, 0,
+			0, 10, 67, 88, 84, 147, 83, 113, 34, 89, 0, 15, 69, 76, 243, 149, 72, 80, 89, 110, 50, 10, 118, 34, 13, 0, 10, 69, 32, 148,
+			16, 36, 80, 21, 0, 47, 8, 197, 81, 84, 139, 100, 80, 66, 15, 69, 44, 19, 129, 16, 16, 49, 35, 50, 35, 72, 2, 35, 0, 15,
+			69, 4, 192, 83, 44, 16, 35, 55, 6, 35, 89, 49, 35, 0, 0, 18, 71, 64, 243, 137, 21, 1, 82, 76, 48, 117, 50, 37, 48, 112,
+			34, 89, 0, 10, 198, 36, 229, 21, 77, 49, 78, 8, 32, 0, 9, 68, 9, 34, 65, 56, 21, 0, 47, 0, 21, 72, 88, 84, 129, 24,
+			113, 76, 22, 64, 83, 112, 34, 35, 83, 136, 13, 55, 116, 13, 0, 13, 70, 24, 192, 85, 8, 84, 148, 21, 102, 114, 0, 47, 0, 0,
+			31, 76, 72, 149, 137, 21, 36, 207, 56, 65, 82, 20, 225, 0, 34, 13, 83, 37, 12, 34, 89, 110, 50, 13, 34, 10, 6, 108, 50, 47,
+			0, 0, 8, 67, 52, 146, 197, 21, 0, 47, 0, 9, 198, 72, 147, 139, 36, 226, 192, 66, 0, 18, 71, 8, 241, 75, 5, 33, 83, 80,
+			71, 40, 49, 35, 34, 108, 89, 47, 0, 0, 9, 68, 40, 243, 133, 76, 21, 0, 47, 9, 68, 40, 19, 69, 76, 21, 0, 47, 16, 3,
+			101, 46, 97, 9, 108, 50, 10, 6, 35, 50, 72, 13, 34, 0, 0, 19, 70, 8, 80, 84, 72, 150, 0, 71, 37, 38, 6, 115, 47, 34,
+			13, 49, 89, 0, 12, 67, 9, 2, 192, 71, 13, 48, 112, 34, 49, 0, 0, 0, 0, 11, 68, 48, 149, 9, 76, 21, 108, 97, 0, 47,
+			0, 9, 68, 72, 241, 197, 72, 21, 0, 47, 0, 11, 2, 95, 34, 107, 115, 55, 23, 115, 50, 0, 0, 0, 9, 66, 89, 80, 21, 102,
+			114, 0, 47, 14, 73, 76, 128, 75, 21, 52, 5, 5, 33, 64, 21, 0, 47, 0, 8, 195, 44, 243, 128, 72, 9, 32, 8, 2, 95, 39,
+			47, 37, 49, 0, 0, 16, 70, 45, 34, 84, 36, 82, 192, 49, 34, 109, 47, 6, 37, 49, 0, 0, 0, 15, 70, 60, 211, 69, 44, 81,
+			82, 110, 65, 13, 49, 116, 34, 0, 17, 70, 52, 147, 137, 77, 65, 82, 65, 13, 50, 109, 89, 47, 13, 34, 0, 17, 70, 36, 115, 143,
+			72, 81, 82, 37, 136, 50, 117, 34, 6, 116, 34, 0, 18, 70, 32, 245, 1, 29, 65, 82, 107, 110, 47, 10, 35, 136, 47, 13, 34, 0,
+			9, 198, 29, 35, 197, 64, 81, 82, 66, 18, 70, 16, 85, 133, 57, 65, 82, 72, 6, 116, 84, 13, 50, 47, 13, 34, 0, 0, 6, 195,
+			88, 19, 128, 72, 13, 69, 16, 84, 137, 12, 176, 72, 108, 34, 37, 49, 0, 0, 0, 13, 2, 95, 41, 34, 112, 136, 89, 107, 35, 49,
+			37, 0, 0, 15, 70, 85, 37, 71, 84, 22, 64, 40, 34, 40, 81, 58, 121, 0, 9, 198, 16, 241, 66, 4, 18, 64, 66, 13, 2, 95,
+			40, 55, 109, 68, 89, 107, 35, 49, 37, 0, 0, 10, 67, 64, 84, 128, 48, 13, 34, 0, 46, 6, 195, 88, 148, 128, 72, 0, 0, 15,
+			2, 95, 45, 49, 110, 48, 13, 55, 47, 116, 49, 13, 50, 0, 0, 20, 71, 44, 245, 9, 48, 163, 206, 76, 49, 110, 47, 13, 55, 57,
+			6, 135, 50, 89, 0, 9, 2, 95, 44, 49, 110, 65, 35, 0, 0, 9, 67, 16, 84, 128, 72, 13, 34, 0, 11, 70, 20, 20, 212, 28,
+			21, 5, 21, 0, 47, 9, 2, 95, 51, 6, 72, 34, 37, 0, 0, 10, 199, 60, 244, 147, 81, 35, 207, 52, 66, 9, 2, 95, 50, 6,
+			47, 58, 116, 0, 0, 13, 69, 64, 85, 9, 80, 80, 48, 13, 47, 37, 47, 0, 9, 2, 95, 49, 10, 6, 116, 50, 0, 0, 13, 68,
+			32, 19, 12, 60, 107, 6, 109, 55, 4, 120, 0, 9, 2, 95, 48, 6, 50, 111, 55, 0, 0, 10, 2, 95, 55, 6, 89, 116, 84, 13,
+			0, 0, 9, 2, 95, 54, 6, 89, 108, 89, 0, 0, 9, 2, 95, 53, 6, 83, 123, 83, 0, 0, 10, 2, 95, 52, 6, 83, 37, 12,
+			34, 0, 0, 16, 70, 8, 83, 12, 21, 101, 69, 71, 112, 55, 84, 57, 40, 12, 0, 13, 2, 95, 59, 49, 110, 65, 35, 48, 111, 50,
+			47, 0, 0, 15, 70, 40, 245, 66, 21, 37, 0, 57, 40, 71, 6, 113, 34, 0, 14, 2, 95, 58, 72, 111, 71, 13, 55, 48, 111, 50,
+			47, 0, 0, 9, 68, 52, 16, 133, 48, 21, 0, 47, 10, 2, 95, 57, 6, 50, 116, 136, 13, 0, 0, 11, 68, 84, 226, 85, 76, 21,
+			108, 97, 0, 47, 17, 70, 76, 19, 22, 4, 67, 210, 89, 35, 55, 84, 35, 72, 131, 34, 0, 10, 2, 95, 56, 10, 6, 35, 136, 47,
+			0, 0, 14, 69, 64, 85, 18, 85, 48, 48, 116, 47, 34, 111, 89, 0, 14, 2, 95, 63, 83, 34, 115, 136, 47, 116, 49, 13, 50, 0,
+			0, 16, 70, 56, 85, 10, 36, 84, 192, 50, 108, 12, 37, 80, 37, 89, 0, 16, 70, 36, 66, 76, 48, 84, 192, 37, 72, 6, 109, 55,
+			13, 89, 0, 21, 71, 36, 225, 215, 5, 101, 77, 4, 37, 68, 81, 58, 35, 84, 6, 40, 12, 65, 35, 0, 14, 2, 95, 62, 136, 34,
+			117, 47, 13, 34, 23, 35, 89, 0, 0, 0, 7, 196, 92, 18, 201, 76, 65, 14, 2, 95, 60, 49, 55, 123, 50, 13, 34, 23, 35, 89,
+			0, 0, 0, 9, 198, 88, 243, 210, 16, 21, 0, 8, 0, 0, 23, 73, 72, 16, 200, 52, 19, 137, 56, 241, 134, 34, 35, 136, 65, 6,
+			35, 50, 37, 50, 110, 83, 0, 10, 67, 40, 80, 78, 90, 133, 50, 0, 41, 0, 16, 69, 76, 245, 197, 80, 240, 89, 40, 58, 6, 108,
+			12, 47, 40, 0, 16, 69, 52, 20, 21, 80, 240, 65, 35, 48, 6, 40, 12, 47, 40, 0, 0, 15, 70, 49, 146, 215, 4, 18, 192, 55,
+			123, 49, 84, 115, 49, 0, 16, 70, 44, 133, 77, 4, 195, 192, 49, 40, 65, 6, 115, 55, 40, 0, 0, 9, 198, 52, 84, 131, 20, 65,
+			83, 66, 9, 67, 41, 83, 135, 57, 40, 68, 0, 0, 12, 68, 76, 245, 8, 60, 89, 40, 12, 47, 40, 0, 16, 70, 12, 132, 153, 76,
+			193, 82, 49, 34, 121, 89, 55, 13, 34, 0, 9, 198, 28, 245, 68, 36, 226, 64, 66, 0, 0, 19, 71, 16, 83, 133, 52, 20, 139, 20,
+			72, 116, 50, 13, 65, 35, 34, 49, 13, 0, 18, 70, 8, 243, 9, 88, 153, 0, 71, 40, 55, 6, 109, 84, 37, 12, 13, 0, 0, 0,
+			16, 4, 194, 182, 194, 182, 48, 35, 34, 35, 136, 34, 115, 84, 13, 0, 0, 16, 70, 56, 85, 10, 36, 84, 197, 50, 108, 37, 80, 37,
+			89, 13, 0, 0, 11, 70, 88, 147, 131, 20, 229, 0, 21, 0, 47, 0, 18, 70, 4, 48, 80, 84, 192, 207, 35, 49, 35, 48, 6, 40,
+			55, 49, 120, 0, 0, 0, 0, 12, 68, 80, 19, 135, 4, 47, 35, 68, 81, 35, 0, 12, 68, 44, 17, 133, 20, 49, 35, 83, 6, 116,
+			0, 0, 10, 67, 85, 53, 83, 21, 108, 97, 0, 47, 0, 0, 18, 70, 64, 192, 83, 20, 229, 1, 48, 55, 35, 89, 6, 108, 50, 47,
+			35, 0, 10, 67, 49, 83, 129, 21, 108, 97, 0, 47, 0, 11, 70, 72, 144, 200, 5, 33, 0, 21, 0, 47, 8, 67, 56, 82, 76, 21,
+			0, 47, 13, 68, 52, 33, 75, 36, 65, 71, 108, 12, 49, 37, 0, 0, 0, 17, 70, 89, 35, 197, 145, 34, 71, 83, 34, 40, 12, 13,
+			34, 13, 136, 0, 17, 70, 40, 240, 67, 32, 147, 64, 57, 40, 58, 6, 115, 136, 13, 65, 0, 6, 195, 37, 48, 142, 13, 0, 18, 2,
+			95, 91, 55, 109, 68, 89, 15, 71, 55, 110, 49, 107, 35, 49, 37, 0, 0, 26, 74, 16, 85, 84, 21, 35, 206, 60, 210, 85, 52, 72,
+			128, 47, 13, 34, 117, 50, 6, 117, 65, 37, 111, 65, 0, 17, 70, 64, 19, 5, 72, 211, 192, 48, 35, 55, 6, 112, 34, 65, 40, 0,
+			0, 10, 69, 8, 20, 139, 49, 144, 21, 0, 47, 0, 16, 73, 8, 245, 82, 28, 83, 201, 76, 145, 64, 21, 102, 114, 0, 47, 0, 9,
+			67, 32, 82, 192, 107, 112, 49, 0, 18, 70, 77, 84, 137, 56, 19, 69, 89, 118, 34, 37, 50, 6, 115, 65, 13, 0, 18, 70, 12, 84,
+			193, 74, 32, 64, 89, 13, 89, 13, 34, 37, 12, 57, 35, 0, 8, 2, 95, 95, 55, 123, 50, 0, 0, 17, 71, 52, 245, 15, 73, 66,
+			137, 20, 65, 117, 47, 13, 34, 49, 37, 0, 10, 199, 16, 148, 204, 20, 180, 201, 20, 66, 12, 71, 48, 240, 203, 21, 32, 137, 20, 21,
+			0, 47, 0, 9, 3, 103, 39, 110, 136, 109, 50, 0, 7, 196, 56, 17, 1, 80, 8, 10, 67, 40, 16, 207, 57, 35, 49, 40, 0, 18,
+			2, 95, 93, 34, 112, 136, 89, 15, 71, 55, 110, 49, 107, 35, 49, 37, 0, 0, 0, 14, 69, 73, 84, 208, 21, 48, 34, 111, 89, 48,
+			13, 89, 0, 16, 69, 21, 131, 196, 85, 48, 108, 49, 89, 6, 117, 72, 111, 89, 0, 8, 197, 5, 52, 18, 37, 48, 66, 8, 197, 24,
+			195, 210, 37, 48, 65, 15, 69, 4, 67, 206, 37, 48, 35, 72, 6, 117, 50, 13, 89, 0, 6, 195, 24, 18, 192, 13, 0, 11, 67, 64,
+			244, 148, 48, 110, 34, 47, 0, 65, 0, 6, 2, 95, 97, 115, 0, 0, 20, 71, 28, 85, 19, 136, 208, 78, 136, 136, 108, 47, 89, 6,
+			116, 65, 35, 50, 37, 0, 11, 70, 9, 35, 207, 44, 198, 78, 21, 0, 47, 0, 12, 201, 36, 229, 5, 57, 50, 84, 20, 149, 0, 68,
+			0, 16, 73, 12, 243, 148, 21, 53, 1, 80, 147, 192, 21, 108, 97, 0, 47, 0, 0, 14, 70, 4, 36, 129, 32, 19, 64, 115, 71, 34,
+			35, 65, 0, 0, 15, 72, 21, 97, 78, 81, 80, 76, 37, 48, 21, 108, 97, 0, 47, 10, 67, 16, 83, 192, 21, 108, 97, 0, 47, 0,
+			8, 196, 80, 83, 147, 100, 66, 8, 0, 0, 10, 67, 18, 34, 155, 21, 102, 114, 0, 47, 0, 9, 67, 20, 180, 192, 108, 49, 89, 0,
+			12, 67, 4, 195, 205, 35, 55, 10, 6, 110, 65, 0, 0, 0, 0, 16, 70, 80, 84, 85, 36, 192, 64, 47, 13, 49, 37, 12, 55, 35,
+			0, 16, 70, 44, 19, 9, 20, 96, 64, 49, 35, 55, 6, 37, 83, 35, 0, 16, 70, 36, 226, 193, 80, 128, 64, 37, 68, 49, 6, 115,
+			47, 35, 0, 10, 199, 16, 85, 82, 28, 16, 78, 76, 65, 13, 70, 64, 84, 147, 60, 224, 64, 21, 108, 97, 0, 47, 17, 70, 56, 21,
+			1, 76, 160, 64, 50, 2, 35, 47, 6, 35, 91, 35, 0, 17, 70, 56, 21, 1, 76, 128, 64, 50, 2, 35, 47, 6, 35, 91, 35, 0,
+			16, 70, 76, 80, 213, 56, 64, 64, 89, 13, 49, 40, 50, 72, 35, 0, 9, 198, 8, 84, 141, 84, 64, 64, 66, 0, 17, 70, 81, 51,
+			197, 56, 19, 73, 47, 89, 40, 50, 6, 115, 65, 37, 0, 10, 199, 4, 19, 135, 21, 50, 69, 56, 8, 0, 17, 70, 64, 83, 143, 72,
+			83, 148, 48, 108, 50, 117, 34, 108, 50, 47, 0, 17, 70, 64, 20, 16, 21, 33, 76, 48, 35, 48, 13, 34, 6, 112, 55, 0, 10, 67,
+			40, 244, 226, 21, 101, 115, 0, 47, 12, 68, 29, 33, 84, 4, 81, 34, 116, 47, 35, 0, 0, 6, 195, 36, 34, 83, 65, 11, 200, 4,
+			19, 147, 80, 16, 78, 16, 80, 66, 13, 4, 95, 104, 97, 99, 49, 6, 115, 34, 110, 50, 0, 0, 12, 68, 92, 21, 23, 60, 84, 35,
+			47, 84, 117, 0, 13, 70, 65, 80, 140, 36, 48, 64, 21, 108, 97, 0, 47, 17, 70, 76, 17, 193, 72, 144, 64, 89, 35, 136, 35, 34,
+			6, 37, 35, 0, 11, 70, 40, 84, 211, 36, 48, 64, 21, 0, 47, 17, 70, 12, 80, 201, 48, 144, 64, 89, 13, 89, 37, 12, 55, 37,
+			35, 0, 18, 70, 28, 19, 9, 48, 80, 64, 136, 35, 55, 13, 55, 6, 37, 12, 35, 0, 0, 11, 67, 36, 196, 197, 6, 37, 55, 88,
+			13, 0, 0, 10, 69, 92, 21, 19, 60, 224, 21, 0, 47, 0, 6, 2, 95, 117, 118, 0, 0, 14, 69, 37, 48, 66, 20, 192, 37, 89,
+			13, 71, 112, 55, 0, 0, 7, 196, 60, 227, 73, 56, 65, 18, 71, 5, 52, 197, 8, 194, 69, 24, 35, 89, 13, 71, 55, 6, 37, 83,
+			0, 9, 195, 92, 147, 0, 72, 9, 46, 32, 10, 67, 4, 36, 193, 35, 71, 89, 35, 0, 9, 198, 12, 243, 146, 4, 66, 69, 66, 18,
+			2, 95, 123, 55, 109, 68, 89, 15, 49, 34, 111, 55, 107, 35, 49, 37, 0, 0, 0, 0, 12, 68, 49, 80, 193, 76, 55, 40, 49, 35,
+			89, 0, 0, 18, 70, 36, 228, 207, 52, 226, 65, 13, 50, 89, 110, 65, 50, 37, 57, 35, 0, 14, 69, 8, 82, 197, 73, 48, 71, 116,
+			49, 13, 34, 89, 0, 0, 18, 70, 52, 21, 8, 36, 20, 192, 65, 35, 47, 6, 37, 12, 57, 35, 89, 0, 0, 18, 2, 95, 125, 34,
+			112, 136, 89, 15, 49, 34, 111, 55, 107, 35, 49, 37, 0, 0, 12, 68, 49, 82, 193, 76, 55, 40, 49, 35, 89, 0, 12, 2, 95, 124,
+			35, 83, 89, 47, 34, 116, 48, 0, 0, 10, 69, 72, 131, 196, 21, 48, 21, 0, 47, 8, 197, 48, 17, 146, 5, 48, 66, 9, 67, 40,
+			241, 89, 75, 120, 37, 0, 0, 16, 70, 16, 146, 215, 20, 196, 192, 72, 109, 49, 84, 13, 55, 89, 0, 9, 198, 4, 196, 133, 20, 68,
+			192, 66, 0, 13, 69, 56, 20, 211, 5, 80, 50, 35, 89, 6, 120, 0, 17, 71, 81, 34, 67, 32, 20, 132, 80, 47, 34, 37, 136, 115,
+			34, 47, 0, 11, 5, 95, 48, 97, 110, 100, 11, 108, 50, 0, 0, 0, 18, 71, 52, 19, 129, 48, 193, 69, 56, 65, 35, 50, 10, 35,
+			55, 116, 50, 0, 12, 68, 32, 22, 68, 56, 107, 122, 72, 13, 50, 0, 0, 17, 70, 36, 227, 133, 77, 65, 76, 109, 50, 50, 108, 89,
+			47, 13, 55, 0, 16, 70, 10, 52, 133, 81, 145, 0, 71, 113, 34, 13, 47, 123, 47, 0, 15, 70, 48, 84, 207, 80, 131, 192, 55, 13,
+			89, 40, 47, 40, 0, 0, 17, 70, 76, 243, 132, 20, 225, 83, 89, 110, 50, 72, 13, 50, 108, 89, 0, 16, 70, 4, 50, 9, 48, 193,
+			83, 35, 49, 6, 37, 55, 13, 89, 0, 0, 14, 69, 78, 32, 78, 12, 80, 89, 2, 116, 133, 50, 89, 0, 13, 70, 48, 244, 85, 37,
+			69, 82, 21, 108, 97, 0, 47, 0, 9, 198, 92, 81, 82, 28, 19, 13, 66, 19, 71, 52, 145, 23, 36, 229, 5, 72, 65, 109, 72, 84,
+			13, 50, 47, 13, 34, 0, 0, 0, 0, 19, 71, 76, 181, 76, 16, 83, 1, 76, 89, 49, 111, 55, 72, 13, 55, 35, 89, 0, 0, 17,
+			71, 72, 80, 133, 48, 193, 69, 72, 34, 13, 71, 13, 55, 116, 34, 0, 0, 8, 197, 80, 84, 132, 22, 64, 66, 13, 70, 76, 50, 13,
+			36, 69, 0, 91, 65, 37, 47, 0, 0, 25, 74, 76, 19, 135, 20, 209, 69, 57, 50, 193, 64, 89, 35, 50, 136, 13, 65, 116, 50, 89,
+			49, 35, 48, 0, 23, 72, 53, 5, 77, 4, 192, 78, 28, 16, 65, 48, 40, 12, 65, 35, 55, 6, 35, 68, 81, 35, 0, 0, 16, 70,
+			56, 148, 150, 4, 224, 64, 50, 13, 34, 84, 115, 50, 35, 0, 17, 70, 76, 81, 129, 56, 160, 64, 89, 13, 83, 6, 35, 50, 57, 35,
+			0, 17, 70, 76, 16, 146, 36, 224, 64, 89, 35, 71, 34, 6, 37, 50, 35, 0, 10, 69, 61, 129, 143, 72, 64, 21, 0, 47, 16, 70,
+			24, 195, 210, 36, 64, 64, 83, 55, 110, 34, 37, 72, 35, 0, 0, 0, 10, 199, 8, 20, 146, 36, 176, 68, 20, 67, 12, 68, 88, 83,
+			132, 4, 84, 108, 50, 72, 35, 0, 0, 9, 198, 60, 225, 197, 92, 83, 147, 65, 11, 67, 4, 211, 211, 6, 115, 65, 110, 89, 0, 9,
+			67, 80, 134, 83, 47, 123, 89, 0, 9, 198, 52, 20, 148, 36, 83, 147, 66, 0, 9, 198, 4, 194, 66, 4, 208, 64, 67, 16, 70, 32,
+			21, 133, 56, 112, 64, 107, 115, 83, 13, 68, 136, 35, 0, 0, 11, 200, 92, 83, 148, 4, 181, 9, 20, 176, 65, 9, 68, 12, 242, 5,
+			56, 21, 0, 47, 0, 13, 69, 12, 131, 208, 36, 224, 91, 2, 110, 48, 133, 0, 0, 0, 0, 16, 70, 52, 148, 212, 21, 34, 69, 65,
+			13, 89, 47, 116, 34, 37, 0, 9, 198, 4, 195, 73, 76, 178, 69, 67, 0, 10, 69, 44, 83, 22, 36, 224, 21, 0, 47, 0, 0, 9,
+			198, 52, 144, 200, 36, 83, 0, 66, 0, 0, 9, 198, 36, 226, 204, 84, 148, 192, 66, 16, 70, 28, 83, 133, 76, 148, 192, 136, 116, 50,
+			13, 89, 13, 89, 0, 16, 70, 28, 20, 129, 28, 84, 192, 81, 13, 34, 115, 75, 13, 89, 0, 9, 198, 24, 147, 129, 48, 148, 192, 67,
+			15, 70, 48, 145, 83, 8, 85, 0, 55, 37, 89, 71, 108, 47, 0, 0, 0, 0, 10, 67, 8, 197, 77, 71, 55, 40, 65, 0, 0, 13,
+			68, 41, 83, 165, 56, 136, 40, 50, 6, 37, 50, 0, 0, 15, 70, 61, 81, 19, 32, 84, 128, 120, 47, 89, 107, 112, 34, 0, 22, 73,
+			48, 19, 135, 20, 226, 15, 88, 83, 128, 55, 35, 68, 13, 50, 107, 117, 83, 13, 50, 0, 0, 11, 199, 60, 225, 5, 73, 51, 197, 44,
+			67, 36, 0, 0, 10, 69, 92, 147, 19, 60, 224, 21, 0, 47, 10, 69, 17, 84, 212, 36, 224, 21, 0, 47, 0, 0, 0, 16, 71, 76,
+			50, 18, 20, 147, 133, 72, 91, 34, 121, 50, 13, 34, 0, 0, 10, 69, 56, 83, 19, 60, 224, 21, 0, 47, 0, 21, 72, 88, 243, 210,
+			52, 19, 9, 28, 80, 83, 117, 34, 65, 6, 115, 55, 13, 136, 13, 0, 0, 9, 197, 60, 244, 150, 4, 192, 66, 36, 18, 71, 9, 34,
+			69, 92, 83, 69, 76, 71, 34, 37, 84, 13, 65, 108, 89, 0, 0, 20, 71, 56, 20, 193, 72, 83, 133, 72, 50, 35, 89, 35, 34, 6,
+			116, 50, 13, 34, 0, 10, 67, 56, 148, 201, 21, 108, 97, 0, 47, 20, 71, 92, 83, 9, 77, 112, 65, 72, 84, 6, 112, 55, 14, 89,
+			84, 115, 34, 0, 8, 0, 9, 67, 52, 21, 68, 65, 131, 72, 0, 0, 9, 67, 21, 84, 143, 128, 34, 40, 0, 0, 14, 70, 52, 21,
+			20, 32, 81, 64, 65, 35, 47, 6, 116, 0, 0, 20, 71, 4, 112, 77, 20, 211, 143, 56, 35, 136, 35, 65, 6, 108, 65, 50, 110, 50,
+			0, 7, 195, 17, 84, 192, 8, 32, 0, 0, 0, 16, 70, 88, 84, 147, 20, 225, 64, 83, 112, 34, 89, 13, 50, 13, 0, 16, 70, 80,
+			85, 146, 20, 65, 64, 47, 13, 83, 34, 116, 72, 13, 0, 30, 76, 80, 129, 83, 76, 19, 15, 56, 144, 197, 57, 49, 64, 47, 108, 89,
+			35, 55, 117, 50, 37, 89, 6, 108, 12, 50, 89, 13, 0, 0, 14, 67, 4, 69, 128, 35, 47, 83, 40, 49, 6, 115, 47, 0, 0, 0,
+			21, 72, 52, 20, 135, 5, 33, 84, 32, 16, 65, 35, 34, 136, 35, 34, 6, 116, 47, 35, 0, 0, 0, 10, 67, 8, 85, 197, 71, 116,
+			84, 13, 0, 0, 13, 70, 85, 53, 70, 73, 80, 212, 21, 108, 97, 0, 47, 0, 0, 9, 68, 48, 85, 201, 76, 21, 0, 47, 0, 15,
+			70, 56, 245, 83, 20, 64, 69, 50, 120, 89, 13, 72, 115, 0, 0, 14, 69, 44, 244, 1, 5, 32, 49, 110, 48, 10, 115, 34, 0, 0,
+			0, 16, 70, 88, 16, 82, 92, 83, 0, 83, 115, 34, 84, 6, 112, 55, 0, 13, 69, 24, 245, 67, 34, 32, 83, 40, 91, 6, 116, 0,
+			0, 12, 68, 52, 245, 15, 72, 65, 117, 47, 13, 34, 0, 11, 68, 28, 86, 69, 72, 136, 123, 13, 34, 0, 0, 18, 70, 4, 194, 15,
+			21, 113, 76, 35, 55, 107, 40, 84, 6, 112, 55, 0, 8, 0, 11, 68, 64, 147, 143, 80, 48, 37, 50, 40, 0, 0, 0, 19, 71, 4,
+			229, 23, 21, 36, 5, 56, 35, 50, 47, 84, 112, 34, 48, 13, 50, 0, 0, 10, 199, 4, 195, 5, 72, 113, 78, 20, 67, 20, 71, 8,
+			20, 131, 20, 195, 206, 4, 71, 35, 34, 89, 13, 55, 6, 117, 50, 35, 0, 0, 16, 70, 80, 84, 207, 85, 37, 83, 47, 13, 89, 120,
+			34, 111, 89, 0, 14, 71, 52, 84, 131, 5, 68, 137, 96, 21, 108, 97, 0, 47, 0, 0, 17, 70, 141, 33, 78, 77, 65, 82, 113, 34,
+			13, 50, 89, 47, 13, 34, 0, 12, 68, 36, 36, 197, 56, 37, 71, 89, 13, 50, 0, 0, 24, 73, 5, 34, 83, 80, 245, 5, 48, 84,
+			192, 35, 34, 37, 89, 47, 6, 117, 47, 13, 55, 108, 89, 0, 0, 23, 73, 17, 34, 78, 44, 80, 146, 60, 84, 128, 72, 34, 109, 50,
+			49, 13, 71, 34, 40, 12, 34, 0, 0, 10, 199, 16, 85, 82, 45, 37, 73, 76, 66, 24, 73, 8, 85, 12, 20, 129, 77, 77, 65, 82,
+			71, 108, 47, 55, 37, 12, 108, 65, 89, 47, 112, 34, 0, 0, 18, 71, 76, 147, 135, 5, 3, 197, 72, 89, 37, 68, 81, 35, 48, 40,
+			34, 0, 0, 7, 196, 4, 226, 77, 4, 65, 12, 68, 20, 97, 83, 20, 116, 83, 13, 89, 13, 0, 19, 72, 8, 18, 78, 76, 179, 15,
+			60, 96, 71, 123, 50, 89, 49, 55, 117, 83, 0, 0, 25, 73, 52, 81, 137, 77, 67, 198, 20, 193, 83, 65, 108, 83, 37, 89, 47, 6,
+			117, 83, 13, 55, 13, 89, 0, 0, 22, 73, 77, 112, 78, 28, 84, 147, 92, 16, 82, 89, 58, 35, 68, 13, 34, 89, 58, 115, 34, 0,
+			9, 198, 56, 17, 5, 56, 177, 64, 65, 16, 70, 8, 147, 208, 76, 145, 64, 71, 37, 6, 110, 48, 89, 37, 0, 13, 70, 12, 128, 82,
+			48, 145, 64, 76, 115, 55, 37, 0, 0, 15, 72, 72, 84, 212, 37, 69, 84, 36, 240, 21, 108, 97, 0, 47, 15, 70, 92, 243, 19, 20,
+			193, 89, 58, 40, 55, 89, 55, 37, 0, 0, 16, 70, 77, 69, 75, 72, 17, 192, 89, 47, 118, 49, 34, 35, 136, 0, 12, 68, 64, 20,
+			139, 20, 48, 35, 34, 49, 13, 0, 14, 68, 32, 244, 197, 4, 107, 40, 89, 6, 37, 12, 35, 0, 0, 15, 70, 12, 147, 12, 36, 84,
+			147, 89, 109, 55, 57, 6, 116, 0, 15, 70, 12, 83, 12, 36, 84, 147, 89, 109, 55, 57, 6, 116, 0, 16, 70, 88, 147, 12, 36, 84,
+			147, 84, 109, 55, 37, 13, 34, 89, 0, 13, 72, 8, 243, 142, 36, 85, 129, 48, 80, 21, 0, 47, 13, 67, 20, 67, 83, 123, 13, 50,
+			72, 110, 65, 89, 0, 0, 9, 198, 52, 20, 211, 4, 193, 64, 66, 17, 70, 16, 17, 207, 72, 65, 64, 72, 35, 136, 10, 110, 34, 72,
+			13, 0, 15, 70, 12, 81, 9, 48, 193, 64, 89, 13, 72, 109, 55, 13, 0, 14, 70, 64, 244, 147, 12, 129, 64, 48, 110, 34, 91, 13,
+			0, 15, 70, 77, 86, 129, 56, 225, 64, 89, 40, 88, 6, 115, 50, 0, 14, 70, 21, 66, 69, 56, 225, 64, 108, 47, 37, 13, 50, 0,
+			15, 70, 21, 53, 5, 48, 193, 64, 2, 37, 89, 47, 112, 55, 0, 11, 70, 12, 20, 140, 100, 193, 64, 21, 0, 47, 0, 6, 195, 92,
+			145, 64, 8, 7, 195, 80, 241, 64, 72, 32, 0, 24, 73, 88, 19, 146, 33, 147, 147, 16, 244, 144, 83, 35, 50, 34, 6, 123, 50, 89,
+			72, 110, 34, 48, 0, 0, 0, 0, 6, 195, 32, 241, 64, 8, 0, 0, 20, 72, 64, 146, 193, 56, 145, 78, 36, 80, 48, 37, 49, 35,
+			50, 6, 37, 50, 37, 0, 0, 25, 73, 52, 83, 79, 72, 16, 137, 48, 144, 64, 65, 108, 65, 110, 34, 35, 71, 6, 37, 55, 37, 57,
+			35, 0, 0, 0, 0, 0, 12, 199, 28, 85, 143, 48, 115, 9, 44, 66, 8, 32, 14, 69, 73, 84, 5, 73, 64, 34, 40, 48, 13, 34,
+			47, 0, 13, 69, 21, 81, 225, 56, 80, 118, 90, 6, 108, 50, 0, 16, 70, 52, 243, 148, 4, 117, 64, 65, 110, 50, 47, 13, 49, 118,
+			0, 0, 9, 67, 105, 147, 0, 89, 123, 55, 0, 0, 23, 73, 77, 67, 195, 44, 83, 147, 81, 42, 13, 89, 47, 110, 49, 13, 50, 89,
+			47, 34, 117, 65, 0, 14, 69, 29, 84, 212, 5, 96, 81, 40, 89, 47, 35, 83, 0, 0, 0, 8, 197, 76, 81, 5, 73, 64, 8, 10,
+			69, 77, 69, 65, 73, 64, 21, 0, 47, 0, 17, 70, 52, 19, 8, 21, 32, 133, 65, 35, 55, 6, 112, 34, 71, 13, 0, 10, 67, 49,
+			83, 21, 55, 40, 55, 40, 0, 12, 71, 72, 240, 133, 73, 68, 207, 56, 21, 0, 47, 0, 19, 71, 12, 132, 137, 77, 66, 78, 20, 49,
+			34, 13, 89, 47, 6, 37, 12, 50, 0, 18, 71, 12, 132, 137, 77, 66, 78, 4, 49, 34, 13, 89, 47, 37, 50, 35, 0, 9, 198, 81,
+			83, 137, 76, 153, 0, 66, 0, 13, 70, 4, 197, 5, 72, 149, 83, 21, 108, 97, 0, 47, 0, 21, 72, 9, 33, 68, 20, 226, 193, 53,
+			0, 71, 34, 116, 72, 13, 50, 49, 35, 65, 48, 0, 0, 21, 72, 12, 20, 16, 84, 48, 201, 56, 240, 49, 35, 48, 40, 76, 6, 37,
+			12, 50, 40, 0, 7, 195, 32, 243, 64, 72, 32, 9, 67, 44, 147, 64, 21, 0, 41, 47, 0, 9, 68, 40, 147, 77, 100, 21, 0, 47,
+			0, 0, 0, 0, 20, 71, 52, 19, 148, 61, 96, 78, 36, 65, 35, 50, 47, 110, 84, 6, 115, 50, 37, 0, 0, 15, 69, 60, 32, 68,
+			40, 16, 117, 71, 6, 35, 47, 57, 35, 0, 0, 24, 73, 48, 19, 66, 61, 33, 200, 36, 226, 64, 55, 35, 65, 71, 110, 34, 81, 6,
+			37, 12, 50, 37, 0, 0, 13, 69, 12, 241, 206, 4, 48, 49, 110, 67, 35, 49, 0, 0, 18, 71, 64, 148, 143, 84, 85, 20, 20, 48,
+			13, 34, 40, 12, 6, 108, 47, 0, 13, 68, 61, 32, 76, 20, 117, 34, 6, 115, 55, 13, 0, 12, 68, 32, 241, 82, 4, 107, 40, 34,
+			6, 115, 0, 14, 68, 16, 144, 78, 4, 72, 37, 57, 6, 115, 50, 35, 0, 0, 20, 72, 88, 84, 140, 4, 225, 211, 80, 80, 83, 13,
+			34, 55, 35, 68, 89, 47, 13, 0, 15, 69, 16, 17, 213, 72, 80, 72, 35, 136, 10, 118, 34, 13, 0, 16, 69, 32, 83, 5, 56, 80,
+			107, 37, 12, 55, 6, 37, 12, 50, 0, 15, 69, 21, 81, 197, 56, 80, 57, 40, 75, 6, 37, 12, 50, 0, 14, 69, 16, 83, 9, 48,
+			16, 72, 13, 55, 109, 55, 35, 0, 14, 69, 16, 19, 5, 56, 80, 72, 35, 55, 6, 116, 50, 0, 10, 69, 12, 192, 73, 72, 80, 21,
+			0, 47, 19, 72, 4, 229, 15, 36, 225, 84, 80, 80, 35, 50, 47, 40, 50, 6, 108, 47, 0, 14, 69, 21, 84, 143, 64, 16, 128, 34,
+			6, 117, 48, 35, 0, 0, 0, 0, 0, 11, 199, 60, 225, 5, 73, 113, 82, 64, 67, 36, 14, 71, 13, 35, 201, 77, 48, 78, 80, 21,
+			102, 114, 0, 47, 8, 197, 32, 241, 75, 60, 208, 8, 0, 18, 70, 52, 20, 148, 36, 226, 64, 65, 35, 34, 47, 6, 37, 12, 50, 37,
+			0, 17, 70, 88, 149, 129, 48, 66, 64, 84, 37, 84, 6, 35, 55, 72, 37, 0, 0, 13, 69, 32, 81, 76, 8, 240, 107, 116, 55, 71,
+			117, 0, 0, 0, 0, 7, 196, 76, 244, 1, 76, 66, 9, 198, 60, 244, 151, 4, 18, 64, 65, 16, 70, 80, 83, 5, 52, 19, 142, 47,
+			116, 55, 13, 65, 35, 50, 0, 0, 11, 70, 16, 83, 9, 48, 18, 0, 21, 0, 47, 0, 15, 69, 9, 37, 87, 21, 32, 71, 34, 40,
+			58, 6, 113, 34, 0, 17, 6, 95, 114, 111, 109, 97, 110, 34, 40, 65, 6, 123, 50, 89, 13, 0, 0, 0, 11, 69, 88, 147, 204, 21,
+			64, 21, 0, 41, 47, 16, 70, 28, 16, 146, 38, 67, 0, 136, 115, 71, 34, 37, 13, 55, 0, 0, 16, 70, 28, 83, 133, 72, 193, 73,
+			136, 116, 50, 13, 34, 55, 123, 0, 0, 15, 69, 92, 83, 5, 21, 32, 84, 112, 55, 10, 6, 116, 34, 0, 13, 69, 12, 17, 83, 5,
+			32, 89, 37, 88, 13, 34, 0, 0, 23, 73, 44, 224, 80, 76, 82, 227, 72, 83, 0, 49, 50, 35, 48, 89, 13, 49, 113, 34, 13, 55,
+			0, 15, 72, 8, 83, 133, 24, 144, 201, 84, 208, 21, 108, 97, 0, 47, 0, 8, 197, 88, 19, 132, 5, 64, 65, 0, 0, 17, 70, 56,
+			146, 211, 92, 84, 132, 50, 109, 49, 89, 84, 113, 34, 47, 0, 10, 199, 5, 52, 197, 77, 51, 210, 20, 67, 0, 6, 97, 97, 0, 4,
+			110, 2, 98, 105, 100, 3, 2, 115, 50, 0, 110, 2, 103, 114, 101, 110, 115, 101, 110, 0, 110, 2, 103, 114, 121, 112, 101, 110, 100, 0,
+			110, 2, 104, 97, 110, 103, 105, 103, 0, 110, 2, 104, 97, 110, 107, 0, 110, 2, 104, 111, 117, 100, 101, 110, 0, 110, 2, 108, 111, 107,
+			0, 110, 2, 109, 101, 108, 100, 98, 97, 0, 110, 2, 112, 97, 115, 98, 97, 0, 110, 2, 115, 105, 101, 110, 0, 110, 2, 115, 112, 114,
+			101, 101, 107, 0, 110, 2, 115, 116, 17, 65, 17, 65, 17, 67, 0, 110, 2, 116, 97, 115, 98, 0, 110, 2, 118, 97, 97, 114, 0, 110,
+			2, 118, 97, 108, 108, 17, 65, 17, 67, 0, 110, 2, 118, 101, 103, 98, 97, 0, 110, 2, 118, 117, 108, 108, 101, 110, 100, 0, 110, 2,
+			119, 101, 115, 105, 103, 0, 110, 2, 119, 121, 115, 101, 110, 100, 101, 32, 118, 111, 111, 114, 110, 0, 110, 2, 101, 101, 110, 3, 2, 115,
+			50, 19, 0, 110, 116, 114, 101, 107, 108, 105, 107, 3, 2, 115, 50, 47, 34, 112, 49, 55, 13, 49, 0, 110, 100, 111, 101, 110, 108, 105,
+			107, 3, 2, 115, 50, 72, 40, 50, 55, 13, 49, 0, 110, 110, 101, 101, 109, 108, 105, 107, 3, 2, 115, 50, 116, 65, 55, 13, 49, 0,
+			109, 2, 98, 111, 114, 115, 3, 2, 115, 65, 0, 110, 2, 115, 105, 101, 110, 32, 24, 3, 6, 115, 50, 0, 4, 110, 119, 101, 110, 2,
+			32, 3, 6, 115, 50, 84, 108, 50, 0, 110, 119, 101, 110, 2, 100, 0, 110, 115, 116, 101, 114, 107, 3, 6, 115, 50, 89, 47, 112, 34,
+			49, 0, 110, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 115, 50, 136, 13, 0, 110, 103, 101, 101, 2, 12, 3, 6, 115, 50, 136,
+			116, 0, 110, 115, 2, 32, 3, 6, 133, 50, 89, 0, 110, 115, 101, 2, 32, 3, 6, 133, 50, 89, 13, 0, 3, 115, 0, 114, 100, 8,
+			2, 114, 3, 115, 34, 47, 0, 114, 100, 8, 2, 111, 3, 115, 34, 47, 10, 0, 4, 110, 2, 103, 3, 115, 50, 0, 110, 2, 108, 111,
+			107, 32, 24, 0, 110, 2, 115, 112, 114, 101, 101, 107, 32, 24, 0, 110, 2, 115, 116, 17, 65, 17, 65, 17, 67, 32, 24, 0, 110, 2,
+			116, 114, 101, 107, 32, 24, 0, 110, 2, 118, 97, 108, 108, 101, 114, 0, 4, 110, 2, 115, 107, 111, 117, 3, 115, 50, 6, 0, 110, 2,
+			118, 97, 110, 107, 0, 4, 110, 100, 2, 114, 111, 107, 3, 115, 50, 47, 10, 0, 110, 100, 2, 114, 117, 115, 0, 110, 116, 101, 108, 8,
+			3, 115, 50, 47, 112, 55, 0, 110, 100, 101, 108, 101, 3, 115, 50, 72, 116, 55, 13, 10, 0, 110, 115, 116, 101, 2, 108, 108, 101, 114,
+			105, 103, 3, 115, 50, 89, 47, 6, 112, 0, 110, 110, 101, 109, 2, 17, 65, 3, 115, 50, 116, 65, 0, 105, 3, 122, 0, 4, 110, 2,
+			100, 106, 105, 101, 3, 122, 68, 0, 110, 2, 116, 106, 105, 101, 0, 4, 100, 106, 105, 101, 3, 122, 80, 37, 0, 116, 106, 105, 101, 0,
+			7, 6, 97, 110, 0, 4, 1, 17, 67, 2, 107, 101, 101, 114, 3, 2, 35, 50, 0, 8, 2, 17, 65, 0, 8, 2, 101, 109, 105, 101,
+			0, 110, 8, 2, 97, 21, 0, 97, 116, 111, 2, 109, 105, 101, 3, 2, 35, 50, 2, 35, 47, 2, 40, 0, 97, 116, 111, 109, 105, 101,
+			115, 3, 2, 35, 50, 2, 35, 47, 117, 65, 2, 37, 89, 0, 111, 2, 114, 101, 107, 17, 67, 3, 2, 35, 50, 2, 40, 0, 111, 109,
+			97, 2, 108, 105, 101, 3, 2, 35, 50, 2, 40, 65, 2, 35, 0, 111, 109, 97, 108, 105, 101, 115, 3, 2, 35, 50, 2, 40, 65, 115,
+			55, 37, 89, 0, 101, 107, 2, 100, 111, 116, 3, 2, 35, 50, 2, 108, 49, 0, 101, 2, 109, 111, 3, 2, 35, 50, 13, 0, 116, 105,
+			8, 2, 17, 67, 14, 128, 132, 132, 3, 2, 35, 50, 47, 2, 37, 0, 116, 114, 97, 2, 115, 105, 101, 116, 3, 2, 35, 50, 47, 34,
+			2, 35, 0, 116, 101, 2, 110, 110, 17, 65, 3, 2, 35, 50, 47, 108, 0, 101, 116, 116, 101, 1, 17, 67, 2, 32, 3, 2, 35, 50,
+			108, 47, 0, 2, 103, 105, 110, 97, 3, 2, 35, 68, 0, 103, 101, 2, 108, 105, 101, 114, 3, 2, 35, 68, 13, 0, 103, 111, 114, 97,
+			3, 2, 35, 68, 81, 131, 34, 2, 35, 0, 103, 111, 108, 2, 101, 3, 2, 133, 68, 136, 2, 40, 55, 0, 103, 108, 8, 2, 17, 65,
+			3, 2, 133, 68, 136, 55, 2, 0, 97, 8, 2, 17, 67, 3, 4, 35, 50, 35, 0, 1, 103, 2, 32, 3, 21, 0, 111, 2, 114, 97,
+			107, 3, 35, 50, 2, 40, 0, 116, 114, 111, 111, 112, 1, 21, 3, 35, 50, 47, 34, 6, 117, 48, 0, 116, 114, 111, 112, 101, 1, 21,
+			2, 32, 3, 35, 50, 47, 34, 6, 117, 48, 13, 0, 116, 114, 111, 112, 105, 101, 1, 21, 3, 35, 50, 47, 34, 6, 117, 48, 37, 0,
+			116, 114, 111, 112, 105, 101, 1, 21, 2, 32, 24, 3, 35, 50, 47, 34, 40, 48, 6, 37, 0, 115, 106, 111, 118, 105, 3, 35, 50, 91,
+			7, 117, 83, 13, 0, 103, 108, 101, 101, 114, 3, 35, 68, 55, 116, 34, 0, 4, 2, 100, 106, 105, 101, 12, 3, 121, 68, 0, 2, 116,
+			106, 105, 101, 0, 4, 115, 1, 100, 3, 133, 50, 89, 0, 115, 1, 104, 0, 115, 1, 107, 0, 115, 1, 108, 0, 115, 1, 114, 102, 0,
+			115, 1, 114, 107, 0, 103, 111, 108, 97, 3, 133, 68, 136, 6, 117, 55, 35, 0, 7, 6, 98, 97, 0, 4, 2, 108, 97, 110, 115, 3,
+			71, 2, 35, 0, 2, 108, 100, 97, 100, 105, 103, 0, 2, 108, 106, 97, 97, 114, 0, 2, 108, 107, 111, 110, 0, 2, 108, 108, 111, 110,
+			0, 2, 110, 97, 108, 17, 65, 0, 2, 110, 105, 101, 114, 0, 2, 114, 101, 116, 25, 0, 2, 114, 111, 110, 0, 2, 115, 105, 101, 108,
+			105, 0, 2, 116, 105, 107, 0, 8, 2, 115, 97, 0, 114, 2, 98, 17, 65, 3, 71, 2, 35, 34, 0, 116, 97, 108, 2, 106, 111, 110,
+			3, 71, 2, 35, 47, 2, 35, 55, 0, 116, 116, 101, 2, 114, 121, 3, 71, 2, 35, 47, 13, 0, 107, 97, 116, 101, 2, 108, 3, 71,
+			2, 35, 49, 13, 47, 112, 0, 107, 116, 101, 2, 114, 105, 3, 71, 2, 35, 49, 47, 116, 0, 110, 100, 2, 105, 101, 116, 3, 71, 2,
+			35, 50, 72, 0, 4, 108, 97, 107, 108, 97, 118, 97, 3, 71, 2, 35, 55, 2, 35, 49, 55, 115, 84, 2, 35, 0, 108, 97, 107, 108,
+			97, 119, 97, 0, 108, 97, 110, 2, 115, 101, 101, 114, 3, 71, 2, 35, 55, 2, 35, 50, 0, 108, 108, 101, 114, 2, 105, 110, 17, 65,
+			3, 71, 2, 35, 55, 13, 34, 0, 108, 106, 117, 3, 71, 2, 35, 55, 57, 118, 0, 108, 104, 111, 114, 3, 71, 2, 35, 55, 107, 117,
+			34, 0, 108, 108, 101, 2, 116, 3, 71, 2, 35, 55, 108, 0, 108, 108, 97, 100, 101, 3, 71, 2, 35, 55, 115, 72, 13, 0, 106, 111,
+			110, 101, 2, 116, 3, 71, 2, 35, 57, 2, 40, 50, 108, 0, 109, 8, 2, 98, 111, 101, 115, 3, 71, 2, 35, 65, 0, 4, 110, 2,
+			107, 101, 116, 3, 71, 2, 35, 68, 0, 110, 2, 107, 105, 101, 114, 0, 110, 2, 107, 114, 111, 116, 0, 115, 105, 2, 108, 105, 115, 107,
+			3, 71, 2, 35, 89, 13, 0, 115, 111, 116, 104, 111, 3, 71, 2, 35, 89, 40, 47, 2, 40, 0, 115, 116, 105, 108, 108, 101, 3, 71,
+			2, 35, 89, 47, 37, 12, 55, 0, 104, 97, 109, 97, 3, 71, 2, 35, 107, 115, 65, 2, 35, 0, 110, 100, 2, 17, 65, 108, 105, 101,
+			114, 3, 71, 4, 35, 50, 72, 0, 108, 108, 111, 2, 116, 3, 71, 4, 35, 55, 110, 0, 1, 21, 2, 114, 101, 110, 3, 71, 6, 115,
+			0, 97, 114, 108, 105, 107, 1, 21, 3, 71, 6, 115, 34, 55, 13, 49, 0, 116, 101, 8, 3, 71, 7, 115, 47, 13, 0, 107, 108, 101,
+			105, 3, 71, 13, 49, 55, 123, 0, 103, 97, 115, 105, 101, 3, 71, 13, 136, 115, 89, 37, 0, 2, 114, 105, 116, 111, 110, 3, 71, 35,
+			0, 114, 111, 2, 109, 101, 116, 101, 114, 3, 71, 35, 34, 2, 40, 0, 114, 97, 2, 107, 3, 71, 35, 34, 6, 35, 0, 114, 111, 107,
+			3, 71, 35, 34, 7, 110, 49, 10, 0, 100, 2, 114, 3, 71, 35, 47, 0, 100, 8, 2, 17, 65, 3, 71, 35, 47, 10, 0, 107, 8,
+			2, 111, 3, 71, 35, 49, 10, 0, 110, 100, 2, 17, 65, 3, 71, 35, 50, 47, 0, 110, 100, 2, 101, 3, 71, 35, 50, 72, 0, 108,
+			108, 2, 101, 116, 106, 105, 101, 12, 3, 71, 35, 55, 0, 108, 115, 101, 109, 3, 71, 35, 55, 89, 13, 65, 0, 115, 116, 105, 111, 110,
+			3, 71, 35, 89, 47, 37, 110, 50, 0, 107, 101, 110, 3, 71, 115, 49, 13, 50, 0, 114, 98, 101, 114, 116, 111, 110, 3, 71, 115, 71,
+			13, 34, 47, 2, 110, 50, 0, 98, 97, 3, 71, 115, 71, 35, 0, 98, 97, 2, 116, 106, 105, 101, 3, 71, 115, 71, 121, 0, 115, 105,
+			2, 115, 3, 71, 115, 89, 13, 0, 100, 106, 105, 101, 3, 71, 121, 80, 37, 0, 7, 6, 98, 101, 0, 115, 101, 114, 105, 110, 103, 3,
+			8, 71, 13, 89, 116, 34, 13, 68, 0, 110, 8, 2, 17, 67, 105, 101, 110, 3, 71, 2, 108, 50, 0, 110, 8, 2, 103, 97, 3, 71,
+			2, 108, 68, 0, 114, 2, 108, 121, 110, 3, 71, 2, 112, 34, 0, 110, 101, 2, 100, 121, 3, 71, 2, 116, 50, 13, 0, 1, 17, 67,
+			2, 114, 115, 105, 101, 3, 71, 6, 113, 0, 101, 114, 1, 21, 2, 32, 3, 71, 6, 116, 34, 0, 4, 114, 105, 110, 103, 3, 71, 6,
+			116, 34, 13, 68, 0, 114, 105, 110, 103, 1, 98, 111, 114, 107, 115, 0, 116, 101, 114, 3, 71, 6, 116, 47, 13, 34, 0, 101, 108, 100,
+			105, 103, 1, 21, 3, 71, 6, 116, 55, 72, 13, 136, 0, 107, 101, 114, 8, 2, 17, 67, 21, 3, 71, 7, 116, 49, 13, 34, 0, 4,
+			1, 21, 2, 17, 67, 3, 71, 13, 0, 1, 98, 17, 65, 17, 67, 2, 108, 0, 1, 117, 106, 2, 108, 108, 17, 65, 0, 2, 100, 114,
+			21, 0, 2, 119, 101, 103, 105, 110, 103, 0, 8, 2, 17, 67, 121, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 32, 0, 2, 97,
+			109, 112, 3, 71, 13, 19, 0, 114, 2, 115, 101, 114, 107, 3, 71, 13, 34, 0, 4, 114, 105, 110, 103, 1, 17, 67, 3, 71, 13, 34,
+			13, 68, 0, 114, 105, 110, 103, 1, 111, 0, 107, 101, 110, 3, 71, 13, 49, 108, 50, 0, 110, 100, 101, 1, 98, 10, 3, 71, 13, 50,
+			72, 13, 0, 100, 119, 2, 21, 3, 71, 13, 72, 58, 0, 100, 101, 2, 17, 67, 102, 3, 71, 13, 72, 112, 0, 100, 101, 108, 105, 110,
+			103, 3, 71, 13, 72, 116, 55, 13, 68, 0, 119, 121, 115, 1, 21, 3, 71, 13, 84, 123, 89, 0, 115, 116, 101, 2, 107, 3, 71, 13,
+			89, 47, 112, 0, 115, 105, 103, 2, 116, 105, 103, 3, 71, 13, 89, 109, 136, 0, 104, 101, 112, 3, 71, 13, 107, 108, 48, 0, 103, 101,
+			114, 2, 17, 65, 3, 71, 13, 136, 116, 34, 0, 4, 2, 17, 67, 11, 12, 3, 71, 108, 0, 100, 2, 116, 0, 100, 106, 105, 101, 3,
+			71, 108, 12, 37, 80, 37, 0, 4, 100, 1, 21, 2, 32, 3, 71, 108, 47, 0, 100, 2, 17, 67, 0, 100, 2, 114, 97, 110, 100, 0,
+			100, 2, 119, 97, 114, 109, 0, 100, 2, 119, 111, 111, 114, 100, 0, 116, 108, 101, 104, 101, 2, 109, 3, 71, 108, 47, 55, 2, 37, 2,
+			108, 0, 100, 119, 2, 105, 101, 103, 3, 71, 108, 47, 84, 0, 110, 100, 101, 3, 71, 108, 50, 72, 13, 0, 110, 103, 101, 108, 3, 71,
+			108, 68, 13, 55, 0, 115, 115, 105, 101, 3, 71, 108, 89, 37, 0, 115, 116, 101, 2, 32, 3, 71, 108, 89, 47, 13, 0, 1, 101, 114,
+			2, 108, 25, 12, 3, 71, 112, 0, 114, 8, 2, 17, 67, 3, 71, 112, 34, 0, 114, 107, 101, 8, 3, 71, 112, 34, 49, 13, 0, 114,
+			103, 101, 3, 71, 112, 34, 81, 13, 0, 114, 103, 3, 71, 112, 34, 136, 0, 4, 107, 2, 32, 3, 71, 112, 49, 0, 107, 2, 100, 0,
+			107, 2, 102, 0, 107, 2, 104, 0, 107, 2, 109, 0, 107, 2, 115, 0, 107, 107, 2, 12, 0, 4, 1, 114, 2, 108, 25, 3, 71, 112,
+			55, 0, 108, 1, 17, 67, 2, 32, 0, 108, 8, 2, 17, 67, 0, 108, 108, 2, 12, 0, 4, 1, 110, 111, 115, 2, 115, 105, 101, 3,
+			71, 116, 0, 2, 100, 101, 32, 0, 101, 2, 12, 0, 4, 101, 114, 1, 97, 17, 67, 11, 3, 71, 116, 34, 0, 101, 114, 1, 101, 105,
+			100, 100, 101, 116, 0, 101, 114, 1, 115, 121, 0, 114, 101, 2, 32, 3, 71, 116, 34, 13, 0, 114, 105, 110, 103, 1, 116, 110, 111, 3,
+			71, 116, 34, 13, 68, 0, 116, 101, 2, 32, 3, 71, 116, 47, 13, 0, 116, 101, 115, 1, 97, 105, 100, 2, 21, 3, 71, 116, 47, 13,
+			89, 0, 116, 105, 101, 115, 3, 71, 116, 47, 37, 89, 0, 4, 107, 101, 114, 1, 21, 2, 32, 3, 71, 116, 49, 13, 34, 0, 107, 101,
+			114, 1, 21, 2, 116, 106, 105, 101, 0, 107, 101, 114, 2, 17, 67, 21, 0, 107, 101, 114, 2, 17, 65, 17, 65, 3, 71, 116, 49, 13,
+			34, 10, 0, 4, 110, 101, 1, 21, 2, 32, 3, 71, 116, 50, 13, 0, 110, 101, 2, 114, 0, 110, 105, 2, 103, 0, 100, 101, 2, 115,
+			116, 114, 3, 71, 116, 72, 13, 0, 100, 101, 108, 3, 71, 116, 72, 13, 55, 0, 100, 101, 118, 3, 71, 116, 72, 13, 83, 0, 100, 101,
+			115, 2, 32, 3, 71, 116, 72, 13, 89, 0, 4, 119, 101, 2, 107, 110, 105, 101, 3, 71, 116, 84, 13, 0, 119, 101, 2, 108, 105, 112,
+			0, 119, 101, 2, 114, 97, 115, 105, 101, 0, 119, 101, 2, 114, 105, 103, 0, 119, 101, 110, 100, 101, 3, 71, 116, 84, 13, 50, 72, 13,
+			0, 119, 105, 110, 103, 3, 71, 116, 84, 13, 68, 0, 4, 115, 2, 105, 101, 32, 3, 71, 116, 89, 0, 115, 2, 105, 101, 115, 32, 0,
+			115, 101, 109, 3, 71, 116, 89, 13, 65, 0, 115, 105, 103, 3, 71, 116, 89, 13, 136, 0, 97, 117, 3, 71, 120, 0, 105, 2, 12, 3,
+			71, 123, 0, 105, 103, 101, 3, 71, 123, 12, 90, 0, 117, 2, 17, 67, 3, 71, 128, 0, 117, 101, 108, 3, 71, 128, 13, 55, 0, 7,
+			6, 100, 101, 0, 1, 21, 2, 114, 111, 115, 105, 101, 3, 47, 10, 2, 116, 0, 4, 2, 109, 111, 111, 110, 3, 72, 2, 37, 0, 2,
+			112, 114, 101, 115, 115, 0, 111, 100, 111, 2, 114, 97, 110, 116, 3, 72, 2, 37, 2, 40, 72, 2, 40, 0, 116, 97, 105, 2, 108, 108,
+			101, 101, 114, 3, 72, 2, 37, 12, 47, 2, 123, 0, 109, 111, 110, 101, 3, 72, 2, 37, 65, 117, 50, 13, 0, 4, 2, 107, 108, 105,
+			110, 17, 65, 3, 72, 2, 108, 0, 2, 109, 111, 17, 67, 114, 0, 2, 112, 117, 116, 97, 0, 2, 115, 107, 117, 110, 0, 116, 111, 2,
+			110, 17, 65, 3, 72, 2, 108, 47, 2, 40, 0, 110, 8, 2, 100, 114, 105, 3, 72, 2, 108, 50, 0, 108, 105, 8, 2, 107, 97, 3,
+			72, 2, 108, 55, 2, 37, 0, 108, 105, 107, 97, 2, 116, 101, 115, 115, 3, 72, 2, 108, 55, 2, 37, 49, 2, 35, 0, 98, 105, 2,
+			116, 101, 3, 72, 2, 108, 71, 2, 37, 0, 4, 98, 117, 2, 116, 97, 3, 72, 2, 108, 71, 2, 118, 0, 98, 117, 2, 116, 101, 21,
+			0, 115, 8, 2, 112, 111, 3, 72, 2, 108, 89, 0, 114, 8, 2, 100, 117, 105, 17, 67, 3, 72, 2, 112, 34, 0, 108, 112, 104, 105,
+			110, 105, 117, 109, 3, 72, 2, 112, 55, 83, 37, 50, 37, 38, 111, 65, 0, 4, 2, 102, 108, 97, 115, 105, 3, 72, 2, 116, 0, 2,
+			104, 105, 100, 114, 0, 2, 107, 114, 105, 109, 105, 110, 97, 0, 2, 115, 116, 114, 117, 107, 116, 0, 101, 2, 109, 111, 101, 100, 105, 103,
+			0, 115, 116, 97, 98, 105, 108, 105, 8, 2, 115, 3, 72, 2, 116, 89, 47, 2, 35, 71, 2, 37, 55, 2, 37, 0, 115, 101, 109, 98,
+			101, 114, 3, 72, 2, 116, 89, 108, 65, 71, 13, 34, 0, 4, 117, 114, 2, 100, 114, 101, 110, 107, 3, 72, 2, 118, 13, 34, 0, 117,
+			114, 2, 100, 114, 105, 110, 103, 21, 0, 117, 114, 2, 103, 114, 111, 110, 100, 0, 117, 114, 2, 108, 101, 101, 102, 0, 117, 114, 2, 108,
+			111, 112, 21, 0, 117, 114, 2, 108, 117, 103, 116, 0, 117, 114, 2, 115, 105, 103, 116, 0, 117, 114, 2, 116, 114, 97, 112, 116, 0, 117,
+			114, 2, 119, 101, 101, 17, 67, 0, 117, 114, 2, 119, 105, 110, 116, 101, 114, 0, 117, 114, 2, 97, 97, 114, 3, 72, 2, 118, 13, 34,
+			10, 0, 117, 114, 115, 112, 101, 107, 3, 72, 2, 118, 13, 34, 89, 48, 108, 49, 0, 4, 117, 114, 2, 98, 111, 3, 72, 2, 128, 34,
+			0, 117, 114, 2, 100, 97, 103, 0, 117, 114, 2, 112, 114, 105, 101, 109, 0, 117, 114, 2, 114, 101, 105, 115, 0, 117, 114, 2, 115, 107,
+			121, 110, 17, 65, 0, 117, 114, 2, 115, 107, 121, 110, 100, 101, 0, 117, 114, 2, 115, 111, 101, 107, 0, 117, 114, 2, 119, 97, 97, 105,
+			100, 0, 2, 103, 114, 97, 100, 17, 65, 3, 72, 4, 116, 0, 116, 97, 105, 108, 3, 72, 6, 37, 12, 47, 123, 55, 0, 110, 105, 109,
+			8, 3, 72, 7, 108, 50, 13, 65, 0, 110, 107, 101, 110, 2, 100, 3, 72, 7, 108, 68, 49, 13, 50, 0, 4, 1, 10, 2, 110, 101,
+			32, 3, 72, 13, 0, 1, 21, 2, 107, 111, 110, 116, 114, 97, 107, 0, 1, 21, 2, 109, 101, 110, 116, 0, 2, 98, 17, 65, 0, 2,
+			107, 97, 97, 110, 0, 2, 107, 97, 110, 101, 0, 2, 107, 114, 101, 0, 2, 108, 97, 97, 110, 0, 114, 100, 1, 21, 2, 32, 3, 72,
+			13, 34, 47, 0, 112, 97, 114, 116, 101, 2, 109, 101, 110, 116, 3, 72, 13, 48, 2, 35, 34, 47, 13, 0, 112, 111, 115, 105, 116, 111,
+			3, 72, 13, 48, 117, 89, 37, 47, 40, 0, 107, 97, 110, 116, 2, 32, 3, 72, 13, 49, 35, 50, 47, 0, 110, 105, 115, 1, 10, 3,
+			72, 13, 50, 13, 89, 0, 110, 100, 1, 21, 2, 115, 116, 101, 3, 72, 13, 50, 47, 0, 110, 100, 1, 21, 2, 101, 114, 3, 72, 13,
+			50, 72, 0, 108, 101, 8, 2, 103, 17, 65, 3, 72, 13, 55, 13, 0, 108, 101, 1, 110, 117, 107, 2, 25, 3, 72, 13, 55, 108, 0,
+			108, 105, 2, 114, 105, 117, 109, 3, 72, 13, 55, 109, 0, 4, 108, 111, 111, 115, 3, 72, 13, 55, 117, 89, 0, 108, 111, 115, 0, 98,
+			97, 2, 116, 116, 101, 101, 114, 3, 72, 13, 71, 2, 35, 0, 98, 117, 117, 116, 3, 72, 13, 71, 118, 47, 0, 119, 101, 2, 116, 25,
+			3, 72, 13, 84, 108, 0, 112, 111, 116, 2, 32, 3, 72, 108, 48, 2, 40, 0, 107, 97, 100, 101, 2, 115, 3, 72, 108, 49, 6, 115,
+			72, 13, 0, 107, 97, 100, 101, 2, 110, 3, 72, 108, 49, 35, 72, 6, 108, 0, 110, 116, 101, 1, 21, 2, 21, 3, 72, 108, 50, 47,
+			13, 0, 110, 107, 3, 72, 108, 68, 49, 0, 115, 105, 98, 101, 108, 3, 72, 108, 89, 37, 71, 112, 55, 0, 114, 109, 1, 17, 67, 21,
+			2, 25, 3, 72, 112, 34, 14, 65, 0, 114, 103, 101, 8, 3, 72, 112, 34, 136, 13, 0, 4, 114, 100, 101, 1, 101, 101, 119, 116, 3,
+			72, 113, 34, 72, 13, 0, 114, 100, 101, 8, 2, 25, 0, 8, 2, 107, 108, 97, 115, 115, 3, 72, 116, 0, 4, 108, 101, 1, 114, 101,
+			100, 110, 111, 2, 21, 3, 72, 116, 55, 13, 10, 0, 108, 101, 1, 114, 111, 111, 118, 2, 21, 0, 7, 6, 101, 101, 0, 114, 98, 105,
+			101, 100, 119, 3, 2, 116, 34, 71, 2, 37, 47, 84, 0, 114, 119, 8, 3, 2, 116, 34, 84, 0, 4, 110, 2, 100, 114, 97, 103, 21,
+			3, 2, 116, 50, 0, 110, 2, 109, 97, 108, 105, 103, 0, 110, 2, 112, 97, 114, 105, 103, 0, 110, 2, 118, 111, 114, 109, 0, 110, 8,
+			2, 115, 116, 101, 109, 109, 0, 110, 8, 2, 115, 121, 0, 110, 8, 2, 116, 111, 110, 0, 110, 8, 2, 118, 111, 117, 100, 21, 0, 4,
+			114, 1, 21, 2, 24, 3, 6, 116, 34, 0, 114, 1, 107, 105, 0, 114, 1, 108, 111, 17, 65, 0, 114, 1, 109, 109, 0, 114, 1, 109,
+			114, 0, 114, 1, 115, 107, 0, 114, 1, 115, 115, 0, 114, 1, 117, 0, 114, 100, 104, 101, 105, 100, 1, 21, 3, 6, 116, 34, 47, 107,
+			123, 47, 0, 108, 1, 117, 3, 6, 116, 55, 0, 3, 116, 0, 2, 117, 117, 3, 116, 10, 0, 110, 2, 17, 67, 106, 105, 101, 3, 116,
+			12, 37, 68, 0, 4, 114, 1, 102, 115, 3, 116, 34, 0, 114, 1, 104, 0, 114, 1, 107, 21, 0, 114, 1, 107, 115, 0, 114, 1, 108,
+			17, 65, 17, 65, 0, 114, 1, 108, 17, 67, 17, 65, 17, 65, 0, 114, 1, 108, 17, 67, 21, 0, 114, 1, 108, 101, 103, 0, 114, 1,
+			108, 103, 0, 114, 1, 108, 107, 0, 114, 1, 108, 110, 0, 114, 1, 108, 114, 0, 114, 1, 108, 115, 0, 114, 1, 109, 17, 67, 0, 114,
+			1, 112, 101, 17, 67, 0, 114, 1, 115, 17, 67, 0, 114, 1, 116, 110, 171, 195, 105, 114, 111, 0, 114, 1, 118, 17, 65, 17, 65, 0,
+			114, 1, 118, 17, 67, 0, 114, 1, 118, 101, 17, 67, 0, 114, 1, 119, 0, 114, 98, 105, 101, 100, 2, 17, 65, 3, 116, 34, 71, 6,
+			37, 72, 0, 4, 100, 106, 105, 101, 3, 116, 37, 80, 37, 0, 116, 106, 105, 101, 0, 117, 3, 119, 12, 0, 117, 101, 3, 119, 12, 13,
+			0, 7, 6, 101, 110, 0, 101, 109, 109, 101, 108, 3, 2, 37, 50, 112, 65, 13, 55, 0, 4, 1, 17, 67, 17, 65, 17, 67, 2, 115,
+			105, 101, 101, 17, 67, 3, 2, 108, 50, 0, 1, 17, 67, 17, 65, 17, 67, 2, 115, 105, 195, 171, 17, 67, 0, 8, 2, 116, 111, 112,
+			116, 105, 101, 0, 101, 114, 2, 103, 105, 3, 2, 108, 50, 13, 34, 0, 116, 111, 101, 115, 105, 97, 3, 2, 108, 50, 47, 2, 40, 89,
+			2, 37, 35, 0, 107, 101, 108, 2, 118, 111, 117, 100, 105, 3, 2, 108, 50, 49, 13, 55, 0, 115, 105, 107, 108, 111, 112, 101, 3, 2,
+			108, 50, 89, 2, 37, 49, 55, 2, 40, 48, 13, 0, 105, 103, 8, 2, 109, 97, 3, 2, 108, 50, 109, 136, 0, 111, 114, 109, 8, 2,
+			17, 65, 3, 2, 116, 50, 110, 34, 65, 0, 116, 114, 101, 112, 114, 101, 2, 110, 101, 3, 2, 133, 50, 47, 34, 13, 48, 34, 13, 0,
+			4, 116, 1, 17, 67, 21, 2, 25, 3, 6, 108, 50, 47, 0, 116, 1, 17, 67, 21, 2, 101, 32, 0, 115, 105, 101, 1, 17, 67, 2,
+			25, 3, 6, 108, 50, 89, 37, 0, 115, 105, 101, 115, 1, 17, 67, 3, 6, 108, 50, 89, 37, 89, 0, 105, 8, 2, 103, 3, 6, 116,
+			50, 13, 0, 8, 107, 2, 100, 104, 3, 8, 108, 50, 0, 4, 115, 105, 101, 109, 2, 32, 3, 10, 2, 108, 50, 89, 37, 65, 0, 115,
+			105, 101, 109, 2, 101, 32, 0, 115, 101, 109, 98, 108, 101, 3, 10, 2, 133, 50, 89, 133, 65, 71, 114, 0, 4, 1, 10, 2, 17, 67,
+			32, 3, 13, 50, 0, 1, 10, 2, 32, 0, 1, 10, 2, 100, 101, 17, 67, 32, 0, 1, 10, 2, 100, 101, 32, 0, 1, 17, 67, 10,
+			2, 98, 17, 65, 114, 103, 0, 1, 100, 114, 111, 111, 98, 2, 115, 0, 1, 102, 21, 2, 105, 115, 0, 1, 103, 110, 2, 100, 0, 1,
+			105, 111, 111, 2, 115, 0, 1, 107, 17, 67, 97, 118, 2, 17, 67, 0, 1, 107, 21, 2, 115, 107, 97, 112, 0, 1, 109, 2, 105, 115,
+			0, 105, 101, 114, 1, 17, 67, 3, 13, 50, 6, 37, 12, 34, 0, 121, 1, 17, 67, 21, 2, 32, 3, 13, 50, 6, 123, 0, 4, 101,
+			1, 107, 10, 2, 32, 3, 13, 50, 13, 0, 101, 1, 115, 10, 2, 32, 0, 4, 115, 1, 108, 17, 65, 17, 65, 2, 32, 3, 13, 50,
+			89, 0, 115, 1, 108, 101, 118, 2, 32, 0, 115, 1, 108, 108, 117, 118, 2, 32, 0, 115, 1, 112, 112, 111, 17, 67, 0, 115, 119, 97,
+			97, 114, 1, 21, 2, 100, 105, 103, 3, 13, 50, 89, 84, 6, 115, 34, 0, 104, 101, 105, 100, 1, 17, 67, 3, 13, 50, 107, 123, 47,
+			0, 97, 97, 114, 1, 17, 67, 3, 13, 50, 115, 34, 0, 97, 114, 101, 1, 17, 67, 2, 32, 3, 13, 50, 115, 34, 13, 0, 99, 101,
+			2, 25, 12, 3, 21, 0, 116, 106, 105, 101, 1, 107, 10, 3, 37, 68, 80, 37, 0, 116, 106, 105, 101, 1, 114, 112, 3, 108, 12, 37,
+			68, 49, 2, 37, 0, 115, 1, 108, 2, 32, 3, 108, 12, 50, 89, 0, 115, 101, 1, 108, 2, 32, 3, 108, 12, 50, 89, 13, 0, 116,
+			106, 105, 101, 2, 12, 3, 108, 37, 68, 80, 37, 0, 4, 1, 107, 115, 2, 100, 3, 108, 50, 0, 1, 112, 17, 67, 21, 2, 32, 0,
+			1, 112, 105, 101, 114, 98, 0, 1, 116, 111, 112, 2, 17, 67, 0, 110, 1, 112, 17, 67, 21, 2, 101, 0, 4, 116, 1, 110, 101, 2,
+			12, 12, 3, 108, 50, 47, 0, 116, 1, 114, 112, 2, 12, 12, 0, 116, 1, 115, 21, 2, 114, 17, 65, 0, 106, 105, 110, 3, 108, 50,
+			57, 13, 50, 0, 100, 101, 108, 2, 32, 3, 108, 50, 72, 13, 55, 0, 115, 1, 112, 17, 67, 2, 12, 3, 108, 50, 89, 0, 115, 101,
+			1, 112, 17, 67, 2, 108, 101, 32, 3, 108, 50, 89, 116, 0, 4, 1, 10, 2, 107, 32, 3, 108, 68, 0, 103, 1, 10, 2, 32, 0,
+			103, 101, 2, 108, 3, 108, 68, 13, 0, 107, 101, 108, 8, 3, 108, 68, 49, 13, 55, 0, 111, 114, 109, 8, 3, 116, 50, 6, 110, 34,
+			13, 10, 65, 0, 101, 1, 107, 115, 2, 32, 3, 116, 50, 13, 0, 101, 114, 115, 3, 116, 50, 13, 34, 89, 0, 4, 115, 1, 109, 2,
+			12, 12, 3, 134, 50, 89, 0, 115, 1, 114, 103, 0, 115, 1, 119, 0, 115, 105, 101, 1, 109, 2, 25, 3, 134, 50, 89, 2, 37, 0,
+			7, 6, 103, 101, 0, 103, 101, 101, 1, 21, 3, 8, 136, 13, 136, 116, 0, 1, 17, 67, 2, 32, 3, 81, 13, 0, 114, 1, 114, 117,
+			98, 3, 81, 13, 34, 0, 110, 114, 101, 3, 90, 6, 133, 50, 34, 13, 0, 110, 105, 101, 2, 32, 3, 90, 13, 50, 37, 12, 0, 111,
+			8, 2, 115, 3, 136, 2, 37, 2, 40, 0, 114, 8, 2, 109, 97, 3, 136, 2, 112, 34, 0, 114, 117, 2, 98, 121, 110, 3, 136, 2,
+			116, 34, 2, 111, 0, 110, 101, 2, 97, 108, 111, 3, 136, 2, 116, 50, 2, 37, 0, 101, 115, 2, 100, 114, 105, 102, 116, 105, 3, 136,
+			2, 116, 89, 0, 109, 109, 101, 114, 3, 136, 6, 108, 65, 13, 34, 0, 1, 105, 110, 2, 114, 105, 3, 136, 6, 116, 0, 119, 101, 2,
+			32, 3, 136, 6, 116, 84, 13, 0, 4, 119, 101, 110, 100, 1, 21, 2, 32, 3, 136, 6, 116, 84, 13, 50, 47, 0, 119, 101, 110, 100,
+			1, 21, 2, 115, 116, 101, 0, 119, 101, 110, 100, 101, 1, 21, 2, 32, 3, 136, 6, 116, 84, 13, 50, 72, 13, 0, 115, 101, 2, 32,
+			3, 136, 6, 116, 89, 13, 0, 4, 3, 136, 13, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 111, 115, 115, 14, 128, 132, 130, 0,
+			107, 108, 101, 100, 101, 3, 136, 13, 49, 55, 116, 72, 13, 0, 110, 101, 2, 114, 17, 65, 3, 136, 13, 50, 13, 0, 110, 97, 100, 2,
+			101, 116, 106, 105, 101, 3, 136, 13, 50, 115, 72, 0, 110, 97, 100, 101, 3, 136, 13, 50, 115, 72, 13, 0, 110, 101, 2, 114, 105, 101,
+			25, 3, 136, 13, 50, 116, 0, 108, 121, 107, 101, 110, 105, 8, 2, 115, 3, 136, 13, 55, 6, 123, 49, 13, 50, 13, 0, 109, 101, 108,
+			2, 100, 3, 136, 13, 65, 112, 55, 0, 98, 101, 100, 101, 8, 3, 136, 13, 71, 116, 72, 13, 0, 118, 101, 115, 2, 32, 3, 136, 13,
+			83, 108, 89, 0, 119, 101, 108, 2, 119, 3, 136, 13, 84, 6, 112, 55, 0, 4, 119, 101, 108, 2, 100, 3, 136, 13, 84, 112, 55, 0,
+			119, 101, 108, 2, 102, 0, 119, 101, 101, 114, 3, 136, 13, 84, 116, 34, 0, 119, 101, 110, 115, 1, 17, 67, 21, 3, 136, 13, 84, 134,
+			50, 89, 0, 115, 101, 108, 2, 32, 3, 136, 13, 89, 112, 55, 0, 115, 101, 108, 108, 101, 2, 32, 3, 136, 13, 89, 112, 55, 13, 0,
+			115, 101, 108, 115, 3, 136, 13, 89, 112, 55, 89, 0, 103, 101, 119, 101, 110, 115, 3, 136, 13, 136, 116, 84, 13, 50, 89, 0, 103, 101,
+			115, 101, 108, 3, 136, 13, 136, 116, 89, 13, 55, 0, 4, 1, 17, 65, 2, 116, 106, 105, 101, 3, 136, 37, 0, 2, 111, 103, 114, 97,
+			0, 2, 111, 108, 111, 0, 2, 111, 109, 101, 0, 110, 115, 8, 2, 17, 67, 3, 136, 108, 12, 50, 89, 0, 109, 115, 3, 136, 108, 65,
+			89, 0, 115, 112, 101, 2, 32, 3, 136, 108, 89, 48, 13, 0, 115, 112, 101, 115, 2, 32, 3, 136, 108, 89, 48, 13, 89, 0, 4, 2,
+			107, 32, 3, 136, 112, 0, 2, 107, 103, 0, 2, 107, 104, 0, 2, 107, 107, 0, 2, 107, 115, 107, 101, 101, 114, 0, 2, 107, 116, 0,
+			8, 2, 114, 17, 67, 0, 114, 102, 1, 17, 67, 3, 136, 112, 34, 83, 0, 114, 119, 101, 1, 17, 67, 2, 32, 3, 136, 112, 34, 84,
+			13, 0, 107, 119, 2, 111, 114, 100, 3, 136, 112, 49, 84, 0, 108, 100, 3, 136, 112, 55, 47, 0, 108, 100, 2, 105, 110, 17, 67, 3,
+			136, 112, 55, 47, 10, 0, 108, 100, 2, 105, 110, 103, 3, 136, 112, 55, 72, 0, 4, 108, 100, 101, 2, 25, 3, 136, 112, 55, 72, 13,
+			0, 108, 100, 105, 0, 108, 100, 106, 105, 101, 3, 136, 112, 55, 80, 37, 0, 4, 1, 107, 114, 101, 119, 2, 119, 101, 114, 3, 136, 116,
+			0, 101, 2, 12, 0, 195, 171, 114, 2, 32, 3, 136, 116, 13, 34, 0, 110, 101, 2, 32, 3, 136, 116, 50, 13, 0, 110, 105, 116, 2,
+			105, 101, 17, 67, 3, 136, 116, 50, 13, 47, 0, 110, 117, 115, 3, 136, 116, 50, 111, 89, 0, 108, 101, 1, 25, 2, 32, 3, 136, 116,
+			55, 13, 0, 108, 101, 114, 8, 3, 136, 116, 55, 13, 34, 0, 4, 119, 101, 114, 1, 103, 97, 108, 115, 3, 136, 116, 84, 13, 34, 0,
+			119, 101, 114, 1, 116, 101, 119, 0, 119, 101, 114, 2, 32, 0, 119, 101, 114, 115, 2, 32, 3, 136, 116, 84, 13, 34, 89, 0, 119, 101,
+			110, 115, 2, 103, 3, 136, 116, 84, 13, 50, 89, 0, 119, 101, 108, 3, 136, 116, 84, 13, 55, 0, 119, 105, 110, 103, 3, 136, 116, 84,
+			13, 68, 0, 105, 2, 12, 3, 136, 123, 0, 117, 2, 17, 67, 3, 136, 128, 0, 7, 6, 104, 101, 0, 2, 98, 114, 101, 3, 107, 2,
+			37, 0, 116, 101, 114, 111, 2, 21, 21, 14, 128, 132, 134, 3, 107, 2, 108, 47, 14, 34, 2, 40, 0, 107, 8, 2, 116, 97, 3, 107,
+			2, 108, 49, 0, 114, 8, 2, 21, 14, 128, 132, 131, 3, 107, 2, 112, 34, 0, 114, 97, 108, 2, 100, 105, 101, 107, 3, 107, 2, 112,
+			34, 2, 35, 55, 0, 114, 2, 101, 110, 105, 3, 107, 2, 112, 34, 19, 0, 114, 97, 108, 2, 100, 3, 107, 2, 112, 34, 35, 55, 0,
+			114, 116, 111, 103, 2, 105, 110, 3, 107, 2, 112, 34, 47, 2, 110, 136, 0, 114, 109, 97, 102, 114, 111, 2, 100, 105, 3, 107, 2, 112,
+			34, 65, 2, 35, 83, 34, 2, 40, 0, 114, 109, 101, 2, 108, 121, 110, 3, 107, 2, 112, 34, 65, 13, 0, 114, 98, 101, 114, 103, 2,
+			105, 3, 107, 2, 112, 34, 71, 2, 112, 34, 136, 0, 114, 98, 101, 114, 103, 2, 115, 97, 21, 3, 107, 2, 112, 34, 71, 112, 34, 136,
+			0, 114, 105, 110, 110, 101, 114, 3, 107, 2, 112, 34, 109, 50, 13, 34, 0, 108, 2, 100, 105, 110, 3, 107, 2, 112, 55, 0, 108, 105,
+			2, 107, 111, 112, 3, 107, 2, 112, 55, 2, 37, 0, 108, 100, 2, 104, 97, 102, 116, 3, 107, 2, 112, 55, 47, 0, 2, 114, 111, 195,
+			175, 101, 3, 107, 2, 116, 0, 114, 111, 2, 195, 175, 101, 110, 3, 107, 2, 116, 34, 2, 40, 58, 0, 101, 116, 2, 104, 111, 111, 102,
+			100, 105, 3, 107, 2, 116, 47, 0, 4, 114, 8, 2, 98, 101, 17, 67, 14, 128, 132, 131, 3, 107, 6, 112, 34, 0, 114, 8, 2, 118,
+			101, 114, 14, 128, 132, 131, 0, 114, 100, 101, 114, 3, 107, 6, 112, 34, 72, 13, 34, 0, 108, 100, 101, 8, 3, 107, 6, 112, 55, 72,
+			13, 0, 114, 8, 2, 119, 97, 97, 3, 107, 7, 112, 34, 0, 4, 114, 2, 101, 107, 115, 97, 109, 17, 65, 3, 107, 7, 112, 34, 10,
+			0, 114, 8, 2, 117, 105, 116, 0, 1, 21, 2, 110, 25, 3, 107, 108, 0, 120, 2, 17, 67, 3, 107, 108, 49, 89, 0, 107, 115, 101,
+			2, 17, 67, 3, 107, 108, 49, 89, 13, 0, 109, 2, 17, 67, 3, 107, 108, 65, 0, 4, 2, 103, 3, 107, 112, 0, 2, 114, 114, 105,
+			101, 0, 4, 114, 2, 98, 101, 114, 103, 3, 107, 112, 34, 0, 114, 2, 107, 111, 109, 115, 0, 114, 8, 2, 109, 97, 110, 25, 0, 114,
+			8, 114, 111, 111, 2, 17, 67, 0, 114, 2, 101, 118, 97, 3, 107, 112, 34, 19, 0, 114, 116, 122, 111, 103, 3, 107, 112, 34, 47, 89,
+			110, 136, 0, 114, 116, 111, 103, 3, 107, 112, 34, 47, 110, 136, 0, 114, 102, 115, 3, 107, 112, 34, 83, 89, 0, 114, 115, 101, 110, 3,
+			107, 112, 34, 89, 13, 50, 0, 108, 3, 107, 112, 55, 0, 2, 108, 105, 3, 107, 116, 0, 114, 2, 101, 25, 3, 107, 116, 34, 0, 4,
+			114, 101, 2, 114, 101, 103, 3, 107, 116, 34, 13, 0, 114, 101, 2, 119, 0, 114, 101, 8, 2, 108, 0, 101, 114, 101, 110, 2, 103, 114,
+			97, 99, 3, 107, 116, 34, 13, 50, 0, 101, 114, 115, 101, 114, 3, 107, 116, 34, 89, 13, 34, 0, 108, 101, 8, 2, 25, 3, 107, 116,
+			55, 13, 0, 109, 101, 108, 3, 107, 116, 65, 13, 55, 0, 100, 101, 1, 10, 2, 32, 3, 107, 116, 72, 13, 0, 105, 100, 2, 32, 14,
+			128, 128, 132, 3, 107, 123, 47, 0, 105, 100, 101, 2, 17, 67, 3, 107, 123, 72, 13, 0, 7, 6, 105, 110, 0, 4, 105, 115, 105, 2,
+			17, 65, 3, 2, 37, 50, 2, 37, 91, 2, 37, 0, 105, 115, 105, 2, 101, 17, 65, 0, 2, 102, 111, 114, 109, 101, 14, 128, 132, 130,
+			3, 6, 109, 50, 0, 8, 2, 97, 17, 67, 101, 109, 14, 128, 132, 130, 3, 6, 109, 50, 10, 0, 103, 8, 2, 21, 3, 6, 109, 50,
+			136, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 109, 50, 136, 13, 0, 4, 103, 101, 2, 119, 105, 110, 103, 3, 6, 109, 50,
+			136, 116, 0, 103, 101, 101, 8, 2, 12, 0, 8, 2, 115, 116, 117, 100, 101, 14, 128, 132, 130, 3, 7, 109, 50, 0, 8, 2, 101, 110,
+			116, 3, 7, 109, 50, 10, 0, 4, 1, 17, 67, 2, 97, 115, 101, 109, 3, 10, 13, 50, 0, 1, 102, 108, 101, 115, 2, 17, 67, 21,
+			0, 103, 97, 110, 103, 3, 10, 109, 50, 136, 35, 68, 0, 4, 1, 21, 2, 103, 114, 121, 112, 3, 13, 50, 0, 2, 100, 105, 101, 110,
+			0, 2, 100, 111, 101, 110, 97, 0, 2, 101, 101, 110, 0, 2, 102, 101, 107, 0, 2, 104, 97, 108, 105, 103, 0, 2, 104, 101, 101, 109,
+			115, 0, 2, 104, 101, 103, 116, 101, 110, 0, 2, 107, 101, 110, 110, 0, 2, 115, 107, 105, 107, 0, 2, 115, 107, 114, 105, 112, 0, 2,
+			115, 112, 101, 107, 0, 2, 115, 116, 97, 110, 0, 2, 116, 105, 101, 109, 0, 2, 119, 101, 114, 107, 105, 110, 103, 17, 67, 17, 67, 0,
+			8, 2, 101, 114, 17, 67, 0, 105, 115, 105, 101, 3, 13, 50, 6, 37, 89, 2, 37, 0, 116, 117, 195, 175, 3, 13, 50, 47, 2, 40,
+			12, 37, 0, 116, 101, 2, 103, 114, 101, 3, 13, 50, 47, 13, 0, 4, 116, 101, 114, 2, 110, 97, 115, 105, 111, 3, 13, 50, 47, 13,
+			34, 0, 116, 101, 114, 2, 110, 101, 114, 105, 110, 0, 116, 101, 114, 2, 110, 105, 25, 0, 116, 105, 109, 105, 2, 100, 17, 65, 3, 13,
+			50, 47, 13, 65, 13, 0, 116, 114, 105, 103, 2, 101, 21, 3, 13, 50, 47, 34, 2, 37, 136, 0, 116, 114, 111, 8, 2, 17, 67, 3,
+			13, 50, 47, 34, 2, 40, 0, 116, 114, 105, 103, 101, 3, 13, 50, 47, 34, 37, 136, 13, 0, 116, 101, 103, 2, 114, 105, 3, 13, 50,
+			47, 112, 136, 0, 100, 105, 2, 97, 21, 3, 13, 50, 72, 2, 37, 0, 100, 111, 110, 101, 2, 115, 105, 3, 13, 50, 72, 2, 40, 50,
+			37, 12, 0, 100, 101, 114, 8, 2, 17, 67, 3, 13, 50, 72, 13, 34, 0, 4, 100, 105, 118, 105, 3, 13, 50, 72, 13, 84, 13, 0,
+			100, 105, 119, 105, 0, 100, 105, 115, 2, 107, 114, 3, 13, 50, 72, 13, 89, 0, 102, 97, 110, 2, 116, 105, 3, 13, 50, 83, 2, 35,
+			50, 0, 102, 111, 114, 2, 109, 97, 3, 13, 50, 83, 2, 110, 34, 0, 118, 97, 108, 105, 100, 101, 3, 13, 50, 84, 2, 35, 55, 37,
+			72, 13, 0, 118, 101, 115, 116, 2, 101, 101, 114, 3, 13, 50, 84, 2, 108, 89, 47, 0, 118, 101, 115, 116, 101, 2, 114, 21, 3, 13,
+			50, 84, 2, 108, 89, 47, 116, 0, 115, 105, 2, 100, 101, 110, 116, 3, 13, 50, 89, 13, 0, 115, 101, 107, 2, 117, 3, 13, 50, 89,
+			13, 49, 0, 115, 116, 105, 2, 116, 117, 3, 13, 50, 89, 47, 13, 0, 115, 116, 114, 117, 107, 116, 3, 13, 50, 89, 47, 34, 2, 111,
+			49, 47, 0, 115, 116, 114, 117, 107, 115, 3, 13, 50, 89, 47, 34, 6, 111, 49, 89, 0, 110, 101, 109, 101, 110, 3, 13, 50, 116, 65,
+			13, 50, 0, 110, 117, 101, 110, 100, 111, 3, 13, 50, 118, 12, 6, 108, 50, 72, 120, 0, 103, 114, 121, 112, 101, 110, 3, 13, 50, 136,
+			34, 123, 48, 13, 50, 0, 103, 1, 10, 2, 32, 3, 13, 68, 0, 103, 101, 1, 17, 67, 21, 2, 32, 3, 13, 68, 13, 0, 4, 100,
+			106, 105, 101, 3, 109, 37, 68, 80, 37, 0, 116, 106, 105, 101, 0, 8, 2, 97, 21, 14, 128, 132, 130, 3, 109, 50, 0, 8, 2, 111,
+			101, 3, 109, 50, 10, 0, 98, 101, 8, 2, 108, 17, 67, 3, 109, 50, 71, 2, 112, 0, 100, 119, 105, 110, 103, 3, 109, 50, 72, 58,
+			13, 68, 0, 100, 101, 108, 8, 2, 17, 67, 3, 109, 50, 72, 112, 55, 0, 115, 101, 107, 2, 17, 65, 3, 109, 50, 89, 108, 49, 10,
+			0, 103, 2, 115, 3, 109, 68, 0, 7, 6, 107, 97, 0, 116, 97, 8, 3, 4, 49, 35, 47, 35, 0, 116, 101, 1, 111, 118, 100, 97,
+			2, 17, 67, 3, 6, 49, 115, 47, 13, 0, 4, 1, 21, 2, 110, 111, 110, 3, 49, 2, 35, 0, 2, 106, 97, 107, 0, 2, 109, 97,
+			115, 0, 2, 110, 97, 108, 101, 0, 2, 112, 97, 17, 67, 101, 17, 67, 0, 2, 114, 111, 115, 0, 2, 115, 97, 114, 109, 0, 2, 115,
+			116, 114, 111, 108, 0, 2, 115, 116, 121, 0, 2, 116, 97, 114, 115, 105, 0, 8, 2, 100, 21, 0, 8, 2, 108, 17, 65, 110, 17, 67,
+			0, 8, 2, 114, 105, 101, 110, 0, 8, 2, 115, 116, 97, 0, 8, 2, 115, 116, 101, 21, 0, 8, 2, 116, 111, 0, 8, 2, 116, 114,
+			0, 4, 114, 2, 100, 111, 101, 115, 3, 49, 2, 35, 34, 0, 114, 2, 110, 117, 102, 102, 101, 108, 0, 114, 2, 116, 111, 110, 0, 114,
+			2, 119, 97, 116, 115, 0, 114, 2, 119, 101, 105, 0, 114, 2, 119, 121, 0, 114, 8, 2, 98, 0, 114, 8, 2, 118, 101, 0, 4, 114,
+			97, 2, 98, 121, 110, 3, 49, 2, 35, 34, 2, 35, 0, 114, 97, 2, 107, 111, 101, 108, 0, 114, 97, 109, 101, 108, 3, 49, 2, 35,
+			34, 2, 35, 65, 112, 55, 0, 114, 105, 107, 97, 2, 116, 117, 3, 49, 2, 35, 34, 2, 37, 49, 2, 35, 0, 114, 97, 2, 118, 97,
+			3, 49, 2, 35, 34, 13, 0, 114, 116, 101, 116, 115, 3, 49, 2, 35, 34, 47, 108, 47, 89, 0, 114, 110, 97, 2, 118, 97, 108, 3,
+			49, 2, 35, 34, 50, 2, 35, 0, 114, 109, 111, 115, 121, 110, 3, 49, 2, 35, 34, 65, 2, 40, 89, 123, 50, 0, 114, 109, 101, 2,
+			110, 97, 97, 100, 106, 3, 49, 2, 35, 34, 65, 13, 0, 114, 97, 116, 101, 3, 49, 2, 35, 34, 115, 47, 2, 37, 0, 4, 116, 101,
+			2, 100, 114, 3, 49, 2, 35, 47, 13, 0, 116, 101, 2, 103, 17, 65, 0, 116, 97, 108, 111, 2, 103, 17, 65, 3, 49, 2, 35, 47,
+			35, 55, 2, 40, 0, 116, 107, 105, 2, 115, 17, 65, 3, 49, 2, 35, 47, 49, 13, 0, 112, 2, 116, 101, 105, 110, 3, 49, 2, 35,
+			48, 0, 112, 97, 2, 115, 105, 116, 101, 105, 116, 3, 49, 2, 35, 48, 2, 35, 0, 112, 105, 2, 116, 97, 3, 49, 2, 35, 48, 2,
+			37, 0, 112, 101, 2, 108, 97, 21, 3, 49, 2, 35, 48, 13, 0, 112, 101, 114, 2, 106, 111, 108, 3, 49, 2, 35, 48, 13, 34, 0,
+			112, 115, 117, 108, 101, 3, 49, 2, 35, 48, 89, 118, 55, 13, 0, 112, 111, 8, 2, 17, 67, 3, 49, 2, 35, 48, 110, 0, 112, 101,
+			2, 108, 3, 49, 2, 35, 48, 112, 0, 4, 110, 2, 116, 105, 101, 110, 3, 49, 2, 35, 50, 0, 110, 8, 2, 116, 111, 21, 0, 4,
+			110, 100, 105, 2, 100, 17, 65, 3, 49, 2, 35, 50, 2, 37, 0, 110, 110, 105, 2, 98, 97, 0, 110, 115, 101, 2, 108, 108, 101, 3,
+			49, 2, 35, 50, 89, 13, 0, 4, 110, 111, 2, 32, 3, 49, 2, 35, 50, 117, 0, 110, 111, 8, 2, 118, 97, 97, 114, 0, 4, 108,
+			2, 98, 97, 115, 3, 49, 2, 35, 55, 0, 108, 2, 107, 111, 101, 110, 0, 108, 105, 2, 98, 3, 49, 2, 35, 55, 37, 0, 108, 101,
+			110, 100, 101, 114, 3, 49, 2, 35, 55, 108, 50, 72, 13, 34, 0, 109, 111, 101, 2, 102, 108, 3, 49, 2, 35, 65, 2, 40, 0, 109,
+			111, 101, 102, 108, 97, 103, 101, 3, 49, 2, 35, 65, 2, 40, 83, 55, 115, 90, 0, 109, 101, 114, 97, 100, 101, 3, 49, 2, 35, 65,
+			13, 34, 115, 72, 13, 0, 98, 97, 114, 101, 2, 116, 3, 49, 2, 35, 71, 2, 35, 34, 108, 0, 98, 105, 110, 101, 2, 116, 3, 49,
+			2, 35, 71, 2, 37, 50, 108, 0, 102, 101, 2, 195, 175, 3, 49, 2, 35, 83, 2, 37, 0, 102, 101, 2, 116, 101, 3, 49, 2, 35,
+			83, 13, 0, 115, 116, 97, 2, 110, 106, 101, 116, 3, 49, 2, 35, 89, 47, 2, 35, 0, 115, 107, 101, 2, 110, 97, 100, 101, 3, 49,
+			2, 35, 89, 49, 13, 0, 115, 115, 101, 2, 116, 3, 49, 2, 35, 89, 108, 0, 115, 101, 114, 110, 101, 3, 49, 2, 35, 89, 112, 34,
+			50, 13, 0, 116, 106, 105, 101, 2, 112, 105, 101, 3, 49, 2, 121, 80, 2, 37, 0, 110, 102, 101, 114, 2, 102, 111, 101, 108, 3, 49,
+			2, 133, 50, 83, 13, 34, 0, 116, 101, 103, 111, 114, 105, 101, 115, 3, 49, 4, 35, 47, 13, 136, 6, 117, 34, 37, 89, 0, 116, 101,
+			103, 111, 114, 105, 101, 3, 49, 4, 35, 47, 13, 136, 40, 34, 6, 37, 0, 97, 1, 17, 65, 21, 2, 116, 3, 49, 6, 115, 0, 116,
+			101, 1, 21, 2, 32, 3, 49, 6, 115, 47, 13, 0, 110, 101, 114, 1, 17, 65, 21, 2, 32, 3, 49, 6, 115, 50, 13, 34, 0, 4,
+			114, 2, 98, 101, 3, 49, 35, 34, 0, 114, 2, 118, 101, 110, 0, 114, 2, 118, 101, 114, 0, 116, 101, 103, 111, 114, 2, 105, 115, 17,
+			65, 3, 49, 35, 47, 13, 136, 40, 34, 0, 110, 116, 2, 111, 110, 100, 101, 114, 3, 49, 35, 50, 47, 10, 0, 110, 115, 101, 2, 108,
+			25, 3, 49, 35, 50, 89, 13, 0, 108, 97, 104, 97, 114, 105, 3, 49, 35, 55, 35, 107, 6, 115, 34, 37, 0, 4, 108, 109, 101, 101,
+			114, 3, 49, 35, 55, 65, 6, 116, 34, 0, 108, 109, 101, 114, 2, 17, 65, 0, 108, 119, 101, 114, 3, 49, 35, 55, 84, 13, 34, 10,
+			0, 109, 101, 114, 2, 97, 116, 106, 105, 101, 3, 49, 35, 65, 13, 34, 0, 109, 101, 114, 97, 97, 3, 49, 35, 65, 13, 34, 6, 115,
+			0, 109, 101, 114, 97, 3, 49, 35, 65, 13, 34, 35, 0, 98, 101, 108, 106, 111, 117, 3, 49, 35, 71, 13, 55, 57, 6, 120, 0, 100,
+			2, 109, 105, 117, 109, 3, 49, 35, 72, 0, 115, 116, 101, 114, 2, 111, 108, 105, 101, 3, 49, 35, 89, 47, 13, 34, 10, 0, 2, 100,
+			101, 114, 3, 49, 115, 0, 116, 101, 108, 1, 25, 3, 49, 115, 47, 13, 55, 0, 107, 101, 2, 17, 67, 3, 49, 115, 49, 13, 0, 4,
+			109, 101, 114, 3, 49, 115, 65, 13, 34, 0, 109, 101, 114, 2, 17, 67, 0, 98, 101, 108, 3, 49, 115, 71, 13, 55, 0, 110, 102, 101,
+			114, 3, 49, 133, 50, 83, 13, 34, 10, 0, 7, 6, 107, 111, 0, 4, 2, 107, 101, 116, 25, 3, 49, 2, 40, 0, 2, 107, 111, 110,
+			0, 2, 108, 111, 109, 0, 2, 108, 111, 110, 105, 0, 2, 109, 101, 100, 105, 0, 2, 109, 101, 116, 101, 0, 2, 114, 97, 0, 2, 114,
+			105, 110, 116, 0, 2, 114, 114, 117, 112, 0, 2, 195, 182, 0, 8, 2, 109, 105, 101, 107, 0, 8, 2, 109, 109, 111, 0, 8, 2, 112,
+			105, 101, 21, 0, 101, 2, 106, 97, 119, 101, 108, 0, 101, 2, 112, 108, 101, 116, 0, 101, 2, 112, 111, 110, 0, 101, 2, 114, 17, 65,
+			0, 114, 114, 101, 107, 3, 49, 2, 40, 34, 108, 49, 0, 114, 101, 110, 2, 116, 3, 49, 2, 40, 34, 108, 50, 0, 117, 107, 97, 2,
+			115, 105, 195, 171, 3, 49, 2, 40, 49, 115, 0, 110, 110, 101, 107, 3, 49, 2, 40, 50, 108, 49, 0, 101, 108, 2, 98, 108, 111, 101,
+			3, 49, 2, 40, 55, 0, 108, 108, 101, 2, 107, 116, 17, 65, 3, 49, 2, 40, 55, 2, 108, 0, 108, 108, 101, 2, 107, 116, 101, 25,
+			3, 49, 2, 40, 55, 108, 0, 108, 108, 101, 107, 2, 115, 3, 49, 2, 40, 55, 108, 49, 0, 108, 111, 2, 115, 25, 3, 49, 2, 40,
+			55, 110, 0, 108, 111, 110, 110, 101, 3, 49, 2, 40, 55, 110, 50, 13, 0, 108, 108, 101, 103, 97, 3, 49, 2, 40, 55, 116, 136, 2,
+			35, 0, 109, 101, 100, 105, 2, 97, 110, 116, 3, 49, 2, 40, 65, 2, 37, 72, 2, 37, 0, 109, 109, 97, 110, 100, 111, 3, 49, 2,
+			40, 65, 35, 50, 72, 40, 0, 109, 109, 105, 115, 115, 105, 101, 3, 49, 2, 40, 65, 37, 89, 2, 37, 0, 109, 97, 116, 105, 2, 25,
+			3, 49, 2, 40, 65, 115, 47, 2, 37, 0, 101, 118, 101, 114, 2, 116, 3, 49, 2, 40, 83, 112, 34, 0, 4, 114, 2, 115, 101, 116,
+			3, 49, 2, 110, 34, 0, 114, 8, 2, 100, 17, 65, 0, 114, 114, 101, 107, 116, 105, 101, 119, 101, 3, 49, 2, 110, 34, 2, 108, 49,
+			47, 37, 84, 13, 0, 114, 114, 105, 103, 2, 101, 3, 49, 2, 110, 34, 13, 136, 0, 4, 114, 116, 2, 115, 105, 103, 116, 105, 103, 3,
+			49, 2, 110, 34, 47, 0, 114, 116, 2, 115, 116, 111, 110, 100, 0, 114, 112, 111, 2, 114, 97, 97, 108, 3, 49, 2, 110, 34, 48, 13,
+			0, 112, 117, 2, 108, 17, 65, 3, 49, 2, 110, 48, 2, 118, 0, 107, 107, 101, 8, 2, 17, 67, 3, 49, 2, 110, 49, 13, 0, 110,
+			8, 2, 17, 67, 21, 14, 128, 132, 131, 3, 49, 2, 110, 50, 0, 110, 116, 114, 97, 2, 100, 105, 107, 115, 3, 49, 2, 110, 50, 47,
+			34, 2, 35, 0, 110, 116, 114, 97, 115, 101, 112, 3, 49, 2, 110, 50, 47, 34, 2, 35, 89, 108, 48, 0, 110, 116, 114, 111, 118, 101,
+			114, 2, 115, 3, 49, 2, 110, 50, 47, 34, 2, 40, 84, 112, 34, 0, 110, 116, 114, 97, 112, 2, 115, 105, 101, 3, 49, 2, 110, 50,
+			47, 34, 35, 48, 0, 110, 116, 114, 97, 107, 8, 3, 49, 2, 110, 50, 47, 34, 35, 49, 0, 110, 116, 114, 97, 115, 8, 3, 49, 2,
+			110, 50, 47, 34, 35, 89, 0, 110, 116, 97, 107, 2, 17, 65, 3, 49, 2, 110, 50, 47, 35, 49, 10, 0, 110, 100, 101, 110, 2, 115,
+			101, 3, 49, 2, 110, 50, 72, 2, 108, 50, 0, 110, 102, 101, 114, 2, 101, 3, 49, 2, 110, 50, 83, 13, 34, 0, 110, 102, 101, 114,
+			101, 110, 3, 49, 2, 110, 50, 83, 13, 34, 108, 50, 0, 4, 110, 115, 117, 108, 2, 17, 65, 3, 49, 2, 110, 50, 89, 2, 111, 55,
+			0, 110, 115, 117, 108, 2, 116, 97, 110, 116, 0, 110, 115, 101, 110, 2, 116, 114, 105, 101, 3, 49, 2, 110, 50, 89, 7, 108, 50, 0,
+			110, 115, 101, 2, 107, 119, 101, 110, 3, 49, 2, 110, 50, 89, 13, 0, 110, 115, 101, 114, 116, 105, 110, 97, 3, 49, 2, 110, 50, 89,
+			13, 34, 47, 37, 50, 2, 35, 0, 110, 115, 101, 114, 118, 3, 49, 2, 110, 50, 89, 13, 34, 84, 0, 110, 115, 101, 110, 2, 116, 114,
+			3, 49, 2, 110, 50, 89, 13, 50, 0, 110, 115, 105, 100, 101, 2, 114, 17, 65, 3, 49, 2, 110, 50, 89, 13, 72, 13, 0, 110, 115,
+			105, 115, 116, 3, 49, 2, 110, 50, 89, 13, 89, 47, 0, 110, 115, 116, 105, 2, 116, 117, 115, 105, 3, 49, 2, 110, 50, 89, 47, 13,
+			0, 110, 115, 116, 97, 98, 101, 108, 3, 49, 2, 110, 50, 89, 47, 115, 71, 13, 55, 0, 110, 115, 101, 112, 2, 17, 65, 3, 49, 2,
+			110, 50, 89, 108, 48, 10, 0, 4, 108, 2, 106, 97, 110, 3, 49, 2, 110, 55, 0, 108, 2, 119, 121, 110, 0, 4, 109, 2, 112, 108,
+			17, 65, 3, 49, 2, 110, 65, 0, 109, 2, 112, 111, 115, 105, 115, 105, 101, 0, 109, 109, 97, 110, 2, 100, 17, 65, 3, 49, 2, 110,
+			65, 2, 35, 50, 0, 109, 109, 101, 114, 2, 115, 105, 3, 49, 2, 110, 65, 2, 112, 34, 0, 109, 109, 117, 2, 110, 97, 3, 49, 2,
+			110, 65, 2, 118, 0, 109, 105, 2, 116, 101, 101, 3, 49, 2, 110, 65, 13, 0, 109, 109, 101, 110, 2, 116, 97, 3, 49, 2, 110, 65,
+			13, 50, 0, 109, 109, 105, 115, 115, 97, 114, 105, 2, 97, 3, 49, 2, 110, 65, 13, 89, 2, 35, 34, 2, 37, 0, 109, 112, 97, 110,
+			2, 106, 105, 101, 3, 49, 2, 110, 65, 48, 2, 35, 50, 0, 109, 112, 114, 111, 2, 109, 105, 101, 3, 49, 2, 110, 65, 48, 34, 2,
+			40, 0, 109, 107, 111, 109, 109, 101, 114, 3, 49, 2, 110, 65, 49, 110, 65, 13, 34, 0, 109, 98, 101, 114, 115, 3, 49, 2, 110, 65,
+			71, 113, 34, 89, 0, 109, 98, 117, 105, 115, 3, 49, 2, 110, 65, 71, 127, 89, 0, 110, 103, 2, 111, 116, 111, 109, 105, 101, 3, 49,
+			2, 110, 68, 81, 0, 4, 115, 2, 109, 101, 116, 3, 49, 2, 110, 89, 0, 115, 2, 116, 117, 0, 115, 109, 111, 2, 112, 111, 108, 105,
+			3, 49, 2, 110, 89, 65, 2, 40, 0, 115, 109, 101, 2, 116, 105, 101, 107, 3, 49, 2, 110, 89, 65, 13, 0, 107, 97, 2, 195, 175,
+			3, 49, 2, 117, 49, 2, 35, 0, 110, 105, 110, 103, 2, 105, 110, 3, 49, 2, 117, 50, 13, 68, 0, 100, 101, 2, 114, 105, 110, 103,
+			3, 49, 2, 117, 72, 116, 0, 117, 2, 115, 97, 21, 3, 49, 2, 120, 0, 108, 111, 2, 115, 115, 97, 3, 49, 4, 110, 55, 40, 0,
+			110, 103, 111, 2, 25, 3, 49, 4, 110, 68, 81, 40, 0, 110, 8, 2, 100, 105, 103, 3, 49, 6, 110, 50, 0, 110, 116, 114, 97, 8,
+			2, 25, 14, 128, 132, 134, 3, 49, 6, 110, 50, 47, 34, 35, 0, 108, 108, 101, 103, 101, 115, 2, 32, 3, 49, 6, 110, 55, 37, 75,
+			13, 89, 0, 101, 2, 114, 101, 110, 100, 3, 49, 40, 0, 101, 195, 171, 108, 3, 49, 40, 12, 55, 0, 112, 2, 111, 3, 49, 110, 48,
+			19, 0, 110, 2, 115, 117, 108, 3, 49, 110, 50, 0, 110, 110, 101, 107, 116, 101, 101, 114, 3, 49, 110, 50, 108, 49, 47, 6, 116, 34,
+			0, 108, 111, 110, 101, 108, 3, 49, 110, 55, 13, 50, 6, 112, 55, 0, 108, 108, 101, 103, 101, 3, 49, 110, 55, 37, 75, 0, 110, 107,
+			101, 108, 3, 49, 110, 68, 49, 13, 55, 0, 110, 107, 97, 8, 2, 25, 3, 49, 110, 68, 49, 35, 0, 115, 2, 116, 101, 114, 109, 3,
+			49, 110, 89, 0, 115, 116, 101, 3, 49, 110, 89, 47, 13, 0, 98, 114, 97, 3, 49, 117, 71, 34, 35, 0, 7, 6, 109, 97, 0, 110,
+			117, 2, 115, 107, 3, 4, 65, 35, 50, 118, 0, 4, 2, 103, 105, 115, 116, 101, 114, 3, 65, 2, 35, 0, 2, 103, 114, 105, 101, 116,
+			0, 2, 104, 17, 65, 0, 2, 107, 97, 115, 115, 97, 114, 0, 2, 107, 105, 101, 116, 105, 101, 0, 2, 107, 114, 105, 101, 108, 0, 2,
+			116, 101, 115, 105, 115, 0, 2, 116, 114, 0, 8, 2, 100, 0, 8, 2, 114, 17, 65, 0, 2, 114, 105, 116, 122, 3, 65, 2, 35, 6,
+			0, 114, 2, 115, 106, 101, 3, 65, 2, 35, 34, 0, 114, 105, 111, 2, 110, 101, 116, 3, 65, 2, 35, 34, 2, 37, 2, 40, 0, 114,
+			105, 101, 1, 21, 2, 32, 3, 65, 2, 35, 34, 6, 37, 0, 114, 105, 2, 116, 105, 101, 109, 3, 65, 2, 35, 34, 13, 0, 114, 105,
+			110, 101, 2, 25, 3, 65, 2, 35, 34, 37, 50, 13, 0, 114, 109, 111, 2, 115, 101, 116, 3, 65, 2, 35, 34, 65, 2, 40, 0, 114,
+			109, 101, 108, 97, 100, 101, 3, 65, 2, 35, 34, 65, 13, 55, 115, 72, 13, 0, 114, 103, 97, 2, 114, 105, 3, 65, 2, 35, 34, 136,
+			2, 35, 0, 116, 101, 114, 105, 2, 17, 65, 21, 3, 65, 2, 35, 47, 2, 116, 34, 2, 37, 0, 116, 101, 2, 109, 97, 116, 105, 3,
+			65, 2, 35, 47, 13, 0, 116, 101, 114, 105, 101, 2, 12, 3, 65, 2, 35, 47, 116, 34, 2, 37, 0, 107, 97, 2, 112, 97, 97, 110,
+			3, 65, 2, 35, 49, 2, 35, 0, 99, 97, 100, 97, 109, 105, 97, 3, 65, 2, 35, 49, 2, 35, 72, 115, 65, 2, 37, 38, 2, 35,
+			0, 99, 104, 105, 97, 118, 101, 3, 65, 2, 35, 49, 2, 37, 2, 35, 84, 108, 0, 107, 115, 105, 2, 109, 97, 21, 3, 65, 2, 35,
+			49, 89, 2, 37, 0, 107, 97, 98, 101, 114, 3, 65, 2, 35, 49, 115, 71, 13, 34, 0, 4, 110, 2, 100, 97, 3, 65, 2, 35, 50,
+			0, 110, 2, 104, 97, 102, 116, 0, 110, 2, 109, 111, 101, 0, 110, 2, 115, 106, 101, 116, 0, 110, 105, 2, 107, 117, 3, 65, 2, 35,
+			50, 2, 37, 0, 110, 105, 112, 117, 3, 65, 2, 35, 50, 2, 37, 48, 2, 118, 0, 4, 110, 101, 2, 119, 97, 108, 101, 3, 65, 2,
+			35, 50, 13, 0, 110, 110, 101, 2, 107, 121, 110, 0, 110, 106, 105, 2, 102, 105, 101, 3, 65, 2, 35, 50, 57, 13, 0, 110, 100, 111,
+			2, 108, 105, 101, 110, 3, 65, 2, 35, 50, 72, 2, 40, 0, 110, 105, 108, 108, 97, 2, 17, 67, 3, 65, 2, 35, 50, 109, 55, 2,
+			35, 0, 110, 101, 2, 108, 3, 65, 2, 35, 50, 112, 0, 108, 2, 103, 97, 115, 3, 65, 2, 35, 55, 0, 108, 97, 2, 103, 105, 101,
+			116, 3, 65, 2, 35, 55, 2, 35, 0, 108, 116, 101, 8, 2, 115, 17, 65, 3, 65, 2, 35, 55, 47, 116, 0, 109, 2, 112, 111, 101,
+			114, 3, 65, 2, 35, 65, 0, 115, 111, 2, 99, 104, 105, 115, 3, 65, 2, 35, 89, 2, 40, 0, 99, 101, 100, 111, 2, 110, 17, 65,
+			3, 65, 2, 35, 89, 13, 72, 117, 0, 115, 116, 101, 107, 116, 111, 2, 109, 3, 65, 2, 35, 89, 47, 108, 49, 47, 2, 40, 0, 115,
+			107, 101, 114, 2, 97, 100, 101, 3, 65, 2, 35, 89, 49, 13, 34, 0, 115, 107, 97, 114, 97, 3, 65, 2, 35, 89, 49, 115, 34, 2,
+			35, 0, 115, 106, 105, 2, 110, 97, 21, 3, 65, 2, 35, 91, 2, 37, 0, 103, 2, 110, 17, 65, 21, 3, 65, 2, 35, 136, 0, 103,
+			97, 2, 115, 121, 110, 3, 65, 2, 35, 136, 2, 35, 0, 103, 105, 115, 2, 116, 114, 97, 3, 65, 2, 35, 136, 2, 37, 89, 0, 103,
+			97, 2, 108, 105, 101, 3, 65, 2, 35, 136, 35, 0, 110, 105, 97, 2, 107, 3, 65, 2, 115, 50, 2, 37, 38, 2, 35, 0, 106, 101,
+			115, 116, 117, 3, 65, 2, 115, 57, 13, 89, 47, 2, 118, 0, 106, 101, 115, 116, 101, 105, 116, 108, 105, 3, 65, 2, 115, 57, 13, 89,
+			47, 123, 47, 55, 13, 0, 100, 101, 2, 108, 105, 101, 3, 65, 2, 115, 72, 13, 0, 121, 111, 110, 110, 97, 105, 115, 101, 3, 65, 2,
+			123, 57, 2, 40, 50, 123, 12, 88, 0, 116, 105, 103, 1, 21, 3, 65, 6, 115, 47, 13, 136, 0, 116, 105, 101, 115, 3, 65, 6, 115,
+			47, 37, 89, 0, 110, 105, 101, 114, 3, 65, 13, 50, 37, 12, 34, 0, 115, 106, 105, 101, 110, 3, 65, 13, 91, 37, 50, 0, 114, 97,
+			116, 2, 111, 110, 3, 65, 35, 34, 2, 35, 47, 0, 114, 97, 116, 104, 111, 110, 3, 65, 35, 34, 2, 35, 47, 2, 110, 50, 10, 0,
+			114, 109, 101, 114, 3, 65, 35, 34, 65, 13, 34, 10, 0, 107, 105, 101, 1, 21, 2, 115, 105, 101, 3, 65, 35, 49, 6, 37, 0, 107,
+			114, 97, 110, 107, 97, 1, 21, 3, 65, 35, 49, 34, 6, 35, 50, 49, 35, 0, 110, 105, 102, 101, 115, 3, 65, 35, 50, 37, 83, 108,
+			89, 0, 108, 1, 10, 2, 32, 14, 128, 128, 131, 3, 65, 35, 55, 0, 108, 97, 114, 105, 97, 3, 65, 35, 55, 6, 115, 34, 37, 35,
+			0, 108, 108, 101, 115, 2, 32, 3, 65, 35, 55, 13, 89, 0, 108, 118, 97, 2, 25, 3, 65, 35, 55, 83, 2, 35, 0, 110, 103, 111,
+			8, 3, 65, 35, 68, 81, 2, 40, 0, 115, 107, 101, 114, 3, 65, 35, 89, 49, 13, 34, 0, 2, 116, 114, 105, 107, 25, 3, 65, 115,
+			0, 110, 105, 2, 97, 107, 25, 3, 65, 115, 50, 2, 37, 0, 2, 98, 105, 101, 107, 3, 89, 0, 7, 6, 109, 101, 0, 116, 101, 2,
+			111, 3, 65, 2, 37, 47, 2, 37, 0, 116, 101, 111, 2, 114, 105, 101, 116, 3, 65, 2, 37, 47, 2, 37, 2, 40, 0, 116, 97, 8,
+			2, 17, 67, 3, 65, 2, 108, 47, 2, 35, 0, 110, 2, 116, 97, 115, 105, 101, 3, 65, 2, 108, 50, 0, 110, 111, 112, 111, 117, 2,
+			115, 97, 3, 65, 2, 108, 50, 2, 40, 48, 2, 120, 0, 110, 117, 101, 2, 116, 3, 65, 2, 108, 50, 2, 118, 12, 38, 108, 0, 110,
+			116, 97, 108, 105, 2, 116, 101, 105, 116, 3, 65, 2, 108, 50, 47, 2, 35, 55, 2, 37, 0, 110, 115, 116, 114, 117, 3, 65, 2, 108,
+			50, 89, 47, 34, 2, 118, 0, 4, 108, 97, 110, 99, 104, 3, 65, 2, 108, 55, 2, 35, 68, 49, 0, 108, 97, 110, 107, 0, 4, 108,
+			97, 110, 99, 104, 111, 108, 105, 101, 2, 32, 24, 3, 65, 2, 108, 55, 2, 35, 68, 49, 2, 117, 55, 37, 0, 108, 97, 110, 107, 111,
+			108, 105, 101, 2, 32, 24, 0, 108, 111, 100, 105, 8, 2, 101, 117, 3, 65, 2, 108, 55, 2, 40, 72, 2, 37, 0, 109, 2, 98, 114,
+			97, 3, 65, 2, 108, 65, 0, 109, 111, 2, 114, 17, 65, 3, 65, 2, 108, 65, 2, 40, 0, 109, 111, 114, 97, 2, 98, 105, 108, 105,
+			3, 65, 2, 108, 65, 2, 110, 34, 2, 35, 0, 109, 111, 2, 114, 105, 17, 65, 3, 65, 2, 108, 65, 117, 0, 100, 105, 2, 116, 17,
+			65, 3, 65, 2, 108, 72, 2, 37, 0, 100, 105, 116, 101, 2, 114, 114, 101, 3, 65, 2, 108, 72, 2, 37, 47, 13, 0, 100, 105, 115,
+			105, 2, 110, 97, 21, 3, 65, 2, 108, 72, 13, 89, 2, 37, 0, 4, 101, 2, 100, 111, 195, 171, 3, 65, 2, 116, 0, 101, 2, 119,
+			97, 114, 0, 101, 114, 2, 118, 111, 117, 100, 105, 103, 3, 65, 2, 116, 34, 0, 101, 114, 100, 101, 114, 2, 106, 97, 114, 3, 65, 2,
+			116, 34, 72, 13, 34, 0, 4, 100, 101, 2, 100, 111, 195, 171, 3, 65, 2, 116, 72, 13, 0, 100, 101, 2, 112, 108, 105, 103, 0, 100,
+			101, 8, 2, 108, 121, 0, 101, 115, 116, 101, 114, 101, 3, 65, 2, 116, 89, 47, 13, 34, 108, 0, 110, 116, 106, 105, 101, 3, 65, 6,
+			108, 37, 68, 80, 37, 0, 110, 116, 3, 65, 6, 108, 50, 47, 0, 108, 111, 8, 2, 100, 114, 3, 65, 6, 108, 55, 40, 0, 110, 105,
+			110, 103, 3, 65, 6, 116, 50, 13, 68, 0, 100, 101, 8, 2, 21, 14, 128, 132, 132, 3, 65, 6, 116, 72, 13, 0, 101, 103, 101, 8,
+			2, 21, 14, 128, 132, 133, 3, 65, 6, 116, 136, 13, 0, 4, 2, 106, 117, 102, 3, 65, 13, 0, 2, 108, 97, 97, 116, 115, 0, 2,
+			114, 105, 101, 116, 101, 0, 2, 116, 111, 100, 0, 8, 2, 100, 117, 17, 67, 0, 114, 105, 110, 111, 3, 65, 13, 34, 37, 50, 2, 40,
+			0, 116, 97, 108, 101, 3, 65, 13, 47, 6, 115, 55, 13, 0, 116, 111, 100, 101, 3, 65, 13, 47, 6, 117, 72, 13, 0, 116, 97, 97,
+			2, 17, 67, 3, 65, 13, 47, 115, 0, 107, 97, 97, 114, 3, 65, 13, 49, 6, 115, 34, 0, 107, 97, 97, 114, 103, 101, 3, 65, 13,
+			49, 6, 115, 34, 136, 13, 0, 110, 101, 101, 114, 3, 65, 13, 50, 6, 116, 34, 0, 110, 101, 114, 101, 3, 65, 13, 50, 6, 116, 34,
+			13, 0, 108, 111, 100, 105, 101, 115, 8, 3, 65, 13, 55, 6, 117, 72, 37, 89, 0, 100, 97, 108, 2, 106, 111, 110, 3, 65, 13, 72,
+			2, 35, 55, 0, 100, 105, 115, 121, 110, 101, 3, 65, 13, 72, 13, 89, 123, 50, 13, 0, 100, 97, 108, 106, 101, 3, 65, 13, 72, 35,
+			55, 57, 13, 0, 118, 114, 111, 117, 3, 65, 13, 83, 34, 6, 120, 0, 103, 97, 110, 105, 101, 115, 3, 65, 13, 136, 6, 115, 50, 37,
+			89, 0, 2, 100, 105, 117, 109, 3, 65, 37, 12, 0, 100, 105, 97, 3, 65, 37, 12, 72, 37, 12, 57, 35, 4, 0, 2, 114, 114, 105,
+			101, 3, 65, 108, 0, 116, 101, 101, 110, 3, 65, 108, 47, 10, 6, 116, 50, 0, 116, 111, 100, 105, 115, 3, 65, 108, 47, 40, 72, 6,
+			109, 89, 0, 110, 105, 110, 103, 2, 105, 116, 105, 115, 3, 65, 108, 50, 13, 68, 136, 0, 110, 116, 101, 101, 2, 17, 67, 3, 65, 108,
+			50, 47, 6, 116, 0, 110, 116, 101, 114, 105, 110, 103, 3, 65, 108, 50, 47, 6, 116, 34, 13, 68, 0, 110, 116, 101, 108, 101, 2, 25,
+			3, 65, 108, 50, 47, 6, 116, 55, 13, 0, 108, 111, 100, 105, 101, 8, 3, 65, 108, 55, 40, 72, 6, 37, 0, 110, 103, 2, 115, 101,
+			108, 3, 65, 108, 68, 0, 4, 115, 1, 102, 101, 104, 2, 32, 3, 65, 108, 89, 0, 115, 1, 108, 101, 102, 97, 116, 2, 32, 0, 115,
+			1, 115, 17, 65, 17, 65, 2, 32, 0, 115, 1, 115, 17, 67, 2, 32, 0, 115, 1, 121, 110, 115, 2, 32, 0, 115, 8, 2, 97, 97,
+			110, 3, 65, 108, 89, 10, 0, 4, 114, 107, 1, 101, 116, 3, 65, 112, 34, 49, 0, 114, 107, 2, 32, 0, 114, 107, 101, 2, 32, 3,
+			65, 112, 34, 49, 13, 0, 2, 116, 114, 117, 109, 3, 65, 116, 0, 114, 101, 1, 17, 67, 21, 2, 32, 3, 65, 116, 12, 34, 13, 0,
+			116, 101, 108, 8, 3, 65, 116, 47, 13, 55, 0, 7, 6, 109, 105, 0, 2, 110, 101, 117, 114, 3, 65, 2, 37, 0, 114, 97, 107, 117,
+			2, 108, 101, 117, 115, 3, 65, 2, 37, 34, 2, 35, 49, 2, 118, 0, 107, 114, 111, 98, 101, 3, 65, 2, 37, 49, 34, 117, 71, 13,
+			0, 110, 105, 2, 109, 97, 21, 3, 65, 2, 37, 50, 2, 37, 0, 97, 97, 117, 3, 65, 2, 37, 129, 12, 0, 110, 97, 103, 3, 65,
+			6, 109, 50, 35, 136, 0, 100, 100, 97, 103, 101, 116, 101, 3, 65, 6, 109, 72, 35, 136, 10, 116, 47, 13, 0, 115, 2, 108, 105, 107,
+			3, 65, 6, 109, 89, 0, 4, 2, 109, 105, 101, 107, 3, 65, 13, 0, 2, 109, 111, 115, 97, 0, 2, 115, 115, 105, 101, 108, 0, 114,
+			97, 107, 101, 108, 3, 65, 13, 34, 115, 49, 13, 55, 0, 110, 97, 114, 101, 2, 116, 3, 65, 13, 50, 2, 35, 34, 108, 0, 110, 105,
+			115, 116, 101, 114, 115, 3, 65, 13, 50, 6, 109, 89, 47, 13, 34, 89, 0, 110, 117, 2, 115, 107, 117, 3, 65, 13, 50, 13, 0, 4,
+			110, 100, 101, 114, 2, 106, 97, 114, 3, 65, 13, 50, 13, 34, 0, 110, 101, 114, 2, 17, 65, 0, 110, 105, 115, 116, 101, 114, 105, 3,
+			65, 13, 50, 13, 89, 47, 2, 116, 34, 2, 37, 0, 110, 105, 115, 116, 101, 2, 114, 105, 101, 25, 3, 65, 13, 50, 13, 89, 47, 116,
+			0, 108, 2, 106, 17, 65, 3, 65, 13, 55, 0, 108, 105, 116, 3, 65, 13, 55, 13, 47, 0, 108, 105, 101, 117, 3, 65, 13, 55, 57,
+			118, 0, 108, 108, 101, 2, 110, 110, 105, 17, 65, 3, 65, 13, 55, 108, 0, 100, 100, 101, 108, 2, 106, 97, 114, 105, 3, 65, 13, 72,
+			13, 55, 0, 4, 115, 2, 103, 105, 115, 3, 65, 13, 89, 0, 115, 2, 103, 117, 110, 0, 115, 2, 104, 97, 0, 115, 2, 108, 0, 115,
+			2, 110, 111, 101, 103, 0, 115, 2, 112, 108, 97, 97, 115, 0, 115, 2, 114, 97, 98, 101, 108, 0, 115, 2, 114, 101, 107, 101, 110, 0,
+			115, 2, 116, 105, 101, 107, 0, 115, 2, 116, 114, 111, 111, 115, 0, 115, 2, 118, 111, 114, 109, 0, 115, 8, 2, 105, 110, 14, 128, 132,
+			131, 0, 115, 8, 2, 109, 0, 115, 101, 2, 114, 97, 0, 115, 116, 101, 114, 2, 105, 101, 117, 115, 3, 65, 13, 89, 47, 116, 34, 0,
+			115, 107, 101, 2, 110, 3, 65, 13, 89, 49, 108, 0, 2, 115, 115, 105, 101, 3, 65, 37, 0, 107, 114, 2, 111, 3, 65, 37, 49, 34,
+			0, 100, 100, 101, 2, 108, 3, 65, 109, 72, 13, 0, 100, 100, 101, 108, 108, 105, 2, 107, 3, 65, 109, 72, 13, 55, 13, 0, 4, 115,
+			2, 108, 97, 109, 112, 3, 65, 109, 89, 0, 115, 2, 108, 111, 111, 112, 0, 115, 2, 111, 0, 7, 6, 109, 111, 0, 4, 2, 112, 97,
+			110, 105, 3, 65, 2, 40, 0, 101, 2, 114, 97, 115, 0, 116, 111, 114, 2, 105, 101, 3, 65, 2, 40, 47, 117, 34, 0, 4, 108, 101,
+			115, 2, 25, 3, 65, 2, 40, 55, 108, 89, 0, 108, 101, 115, 2, 116, 101, 32, 0, 100, 101, 114, 110, 3, 65, 2, 40, 72, 112, 34,
+			14, 50, 0, 104, 97, 109, 109, 101, 100, 2, 97, 3, 65, 2, 40, 107, 2, 35, 65, 13, 72, 0, 4, 2, 100, 117, 108, 17, 65, 3,
+			65, 2, 110, 0, 2, 115, 107, 101, 101, 0, 4, 114, 2, 102, 111, 115, 101, 3, 65, 2, 110, 34, 0, 114, 8, 2, 17, 67, 21, 0,
+			114, 102, 2, 111, 116, 111, 109, 105, 101, 3, 65, 2, 110, 34, 83, 0, 122, 122, 97, 114, 101, 108, 108, 97, 3, 65, 2, 110, 47, 89,
+			2, 35, 34, 112, 55, 2, 35, 0, 110, 2, 116, 101, 117, 114, 3, 65, 2, 110, 50, 0, 110, 105, 116, 2, 101, 3, 65, 2, 110, 50,
+			2, 37, 47, 0, 110, 117, 2, 109, 101, 110, 116, 3, 65, 2, 110, 50, 2, 118, 0, 110, 101, 2, 116, 195, 170, 114, 3, 65, 2, 110,
+			50, 13, 0, 110, 100, 101, 114, 2, 17, 65, 3, 65, 2, 110, 50, 72, 116, 34, 0, 108, 101, 115, 2, 116, 17, 65, 3, 65, 2, 110,
+			55, 13, 89, 0, 110, 8, 2, 103, 111, 21, 3, 65, 2, 110, 68, 0, 100, 101, 2, 108, 108, 101, 21, 3, 65, 2, 110, 72, 13, 0,
+			100, 101, 114, 97, 2, 116, 17, 65, 3, 65, 2, 110, 72, 13, 34, 2, 35, 0, 100, 101, 114, 97, 2, 116, 111, 114, 25, 3, 65, 2,
+			110, 72, 13, 34, 115, 0, 2, 110, 97, 114, 103, 3, 65, 2, 117, 0, 116, 105, 101, 2, 17, 67, 3, 65, 2, 117, 47, 37, 0, 110,
+			97, 114, 103, 105, 101, 2, 32, 24, 3, 65, 2, 117, 50, 2, 35, 34, 136, 37, 0, 110, 111, 2, 103, 97, 3, 65, 2, 117, 50, 2,
+			117, 0, 110, 111, 112, 111, 2, 108, 105, 3, 65, 2, 117, 50, 2, 117, 48, 2, 40, 0, 100, 101, 2, 108, 3, 65, 2, 117, 72, 112,
+			0, 115, 97, 2, 195, 175, 101, 107, 3, 65, 2, 117, 89, 2, 35, 0, 115, 97, 109, 2, 98, 105, 101, 107, 3, 65, 2, 117, 89, 2,
+			35, 65, 0, 101, 105, 116, 101, 3, 65, 6, 126, 47, 13, 0, 100, 101, 8, 3, 65, 7, 117, 72, 13, 0, 101, 100, 115, 119, 105, 108,
+			108, 105, 103, 3, 65, 40, 47, 89, 84, 6, 109, 55, 13, 136, 0, 114, 114, 8, 2, 105, 3, 65, 110, 34, 0, 114, 115, 8, 2, 21,
+			3, 65, 110, 34, 89, 0, 110, 110, 105, 107, 101, 3, 65, 110, 50, 13, 49, 13, 0, 110, 105, 116, 111, 114, 2, 25, 3, 65, 110, 50,
+			37, 47, 110, 34, 0, 2, 98, 105, 101, 108, 3, 65, 117, 6, 0, 116, 111, 114, 3, 65, 117, 47, 13, 34, 0, 7, 6, 111, 110, 0,
+			4, 2, 114, 101, 103, 118, 12, 12, 3, 2, 110, 50, 0, 2, 116, 111, 101, 0, 2, 116, 117, 103, 116, 105, 103, 0, 2, 116, 119, 121,
+			102, 101, 108, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 116, 97, 97, 108, 0, 8, 2, 116, 97, 107, 116, 0, 8, 2, 116, 97,
+			115, 98, 97, 0, 8, 2, 116, 111, 111, 17, 67, 17, 67, 0, 8, 2, 116, 121, 100, 0, 8, 2, 119, 101, 115, 101, 110, 0, 116, 2,
+			100, 21, 0, 111, 109, 2, 115, 116, 111, 111, 116, 3, 2, 110, 50, 2, 110, 65, 0, 4, 97, 102, 8, 2, 115, 107, 101, 105, 17, 67,
+			3, 2, 110, 50, 10, 2, 35, 83, 0, 97, 102, 8, 2, 119, 101, 110, 100, 0, 4, 100, 101, 114, 2, 98, 114, 101, 3, 2, 110, 50,
+			13, 34, 0, 100, 101, 114, 2, 98, 114, 111, 107, 101, 0, 100, 101, 114, 2, 100, 97, 110, 105, 103, 0, 100, 101, 114, 2, 100, 114, 117,
+			107, 0, 100, 101, 114, 2, 100, 117, 105, 109, 0, 100, 101, 114, 2, 104, 97, 110, 100, 101, 0, 100, 101, 114, 2, 104, 101, 119, 0, 100,
+			101, 114, 2, 104, 111, 114, 0, 100, 101, 114, 2, 104, 111, 117, 0, 100, 101, 114, 2, 108, 101, 103, 0, 100, 101, 114, 2, 109, 121, 110,
+			0, 100, 101, 114, 2, 110, 101, 0, 100, 101, 114, 2, 115, 107, 114, 121, 17, 67, 0, 100, 101, 114, 2, 115, 111, 101, 107, 101, 110, 0,
+			100, 101, 114, 2, 115, 116, 101, 117, 0, 100, 101, 114, 2, 115, 116, 114, 101, 0, 100, 101, 114, 2, 116, 101, 107, 101, 110, 0, 100, 101,
+			114, 2, 116, 114, 111, 117, 0, 100, 101, 114, 2, 118, 97, 110, 103, 0, 100, 101, 114, 2, 118, 105, 110, 0, 100, 101, 114, 2, 118, 114,
+			97, 0, 100, 101, 114, 2, 119, 101, 114, 112, 105, 110, 103, 0, 100, 101, 114, 2, 119, 111, 114, 112, 0, 100, 101, 114, 8, 2, 115, 107,
+			17, 65, 0, 100, 101, 114, 111, 110, 115, 105, 101, 3, 2, 110, 50, 13, 34, 19, 135, 50, 89, 37, 0, 100, 101, 114, 115, 116, 101, 98,
+			111, 3, 2, 110, 50, 13, 34, 89, 47, 13, 71, 117, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 2, 110, 50, 47, 0, 116, 101, 109,
+			2, 98, 97, 3, 2, 110, 50, 47, 108, 65, 0, 116, 101, 108, 8, 3, 2, 110, 50, 47, 112, 55, 0, 116, 101, 114, 105, 110, 103, 3,
+			2, 110, 50, 47, 116, 34, 13, 68, 0, 100, 101, 117, 114, 3, 2, 110, 50, 72, 2, 118, 13, 34, 0, 118, 111, 111, 114, 2, 115, 3,
+			2, 110, 50, 83, 2, 117, 34, 0, 4, 119, 101, 101, 114, 8, 2, 108, 3, 2, 110, 50, 84, 2, 116, 34, 0, 119, 101, 101, 114, 8,
+			2, 115, 112, 114, 0, 119, 101, 101, 114, 8, 2, 115, 116, 97, 97, 110, 0, 104, 101, 105, 108, 2, 115, 112, 101, 108, 3, 2, 110, 50,
+			107, 2, 123, 55, 0, 104, 101, 105, 108, 2, 105, 103, 3, 2, 110, 50, 107, 6, 123, 55, 0, 103, 101, 101, 115, 8, 3, 2, 110, 50,
+			136, 2, 116, 89, 0, 103, 101, 108, 2, 100, 105, 103, 3, 2, 110, 50, 136, 112, 55, 0, 103, 114, 101, 115, 1, 107, 3, 2, 110, 68,
+			136, 34, 108, 89, 0, 4, 2, 115, 107, 117, 108, 100, 32, 24, 3, 6, 110, 50, 0, 8, 2, 119, 17, 65, 115, 0, 100, 101, 114, 103,
+			101, 8, 2, 21, 14, 128, 132, 135, 3, 6, 110, 50, 13, 34, 136, 13, 0, 105, 101, 115, 1, 21, 3, 6, 117, 50, 37, 89, 0, 4,
+			100, 101, 114, 2, 115, 101, 107, 114, 3, 7, 110, 50, 13, 34, 0, 100, 101, 114, 2, 119, 121, 115, 17, 67, 21, 0, 100, 101, 114, 8,
+			2, 101, 110, 17, 67, 3, 7, 110, 50, 13, 34, 10, 0, 104, 101, 105, 108, 3, 7, 110, 50, 107, 123, 55, 0, 121, 1, 21, 2, 32,
+			3, 21, 0, 111, 111, 109, 3, 40, 50, 6, 117, 65, 0, 111, 109, 101, 3, 40, 50, 6, 117, 65, 13, 0, 111, 109, 105, 101, 115, 3,
+			40, 50, 6, 117, 65, 37, 89, 0, 111, 109, 105, 101, 3, 40, 50, 40, 65, 6, 37, 0, 4, 2, 100, 105, 101, 114, 3, 110, 50, 0,
+			2, 108, 97, 110, 103, 115, 0, 2, 115, 105, 110, 32, 24, 0, 2, 116, 117, 103, 0, 8, 2, 102, 105, 107, 115, 0, 8, 2, 107, 97,
+			110, 116, 0, 8, 2, 107, 111, 115, 116, 101, 0, 8, 2, 107, 114, 117, 105, 100, 0, 8, 2, 108, 117, 115, 0, 8, 2, 112, 97, 97,
+			114, 0, 8, 2, 116, 117, 105, 17, 67, 0, 8, 2, 117, 105, 116, 103, 101, 21, 12, 12, 14, 128, 132, 130, 3, 110, 50, 10, 0, 117,
+			105, 116, 8, 2, 21, 14, 128, 132, 133, 3, 110, 50, 10, 127, 47, 0, 4, 100, 101, 114, 3, 110, 50, 13, 34, 0, 100, 101, 114, 2,
+			104, 111, 117, 100, 25, 0, 100, 101, 114, 2, 104, 111, 117, 100, 101, 32, 0, 100, 101, 114, 2, 115, 107, 101, 105, 100, 32, 24, 0, 100,
+			101, 114, 119, 121, 115, 101, 114, 2, 97, 3, 110, 50, 13, 34, 84, 6, 123, 89, 13, 34, 10, 0, 114, 101, 103, 2, 25, 3, 110, 50,
+			34, 112, 136, 0, 110, 105, 101, 8, 3, 110, 50, 37, 0, 116, 101, 118, 114, 101, 100, 101, 3, 110, 50, 47, 13, 83, 34, 6, 116, 72,
+			13, 0, 116, 101, 101, 110, 115, 101, 103, 3, 110, 50, 47, 116, 50, 89, 6, 112, 136, 0, 119, 101, 101, 114, 8, 3, 110, 50, 84, 116,
+			34, 0, 4, 103, 101, 2, 100, 105, 101, 114, 116, 3, 110, 50, 136, 13, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 0, 103, 101, 114,
+			105, 101, 102, 108, 105, 2, 107, 3, 110, 50, 136, 13, 34, 6, 37, 83, 55, 13, 0, 103, 101, 108, 111, 111, 102, 108, 105, 8, 2, 107,
+			3, 110, 50, 136, 13, 55, 6, 117, 83, 55, 13, 0, 103, 101, 109, 97, 107, 108, 105, 2, 107, 3, 110, 50, 136, 13, 65, 6, 35, 49,
+			55, 13, 0, 105, 107, 115, 3, 117, 50, 13, 49, 89, 0, 4, 105, 101, 1, 108, 111, 107, 3, 117, 50, 37, 0, 105, 101, 1, 109, 101,
+			114, 101, 115, 2, 25, 0, 105, 101, 115, 1, 112, 21, 3, 117, 50, 37, 89, 0, 117, 115, 8, 3, 117, 50, 111, 89, 0, 4, 100, 106,
+			105, 101, 3, 124, 68, 80, 37, 0, 116, 106, 105, 101, 0, 4, 115, 1, 98, 3, 135, 50, 89, 0, 115, 1, 100, 0, 115, 1, 103, 0,
+			115, 1, 114, 102, 0, 4, 103, 101, 1, 21, 2, 108, 117, 107, 21, 3, 135, 68, 136, 13, 0, 103, 101, 2, 108, 117, 107, 32, 0, 103,
+			101, 2, 108, 117, 107, 107, 101, 32, 0, 103, 101, 2, 108, 117, 107, 107, 105, 101, 0, 103, 101, 2, 108, 117, 107, 115, 0, 103, 101, 118,
+			97, 2, 108, 3, 135, 68, 136, 13, 83, 35, 0, 7, 6, 111, 111, 0, 4, 114, 2, 98, 108, 121, 119, 3, 2, 117, 34, 0, 114, 2,
+			98, 114, 117, 103, 0, 114, 2, 100, 105, 110, 107, 0, 114, 2, 100, 111, 110, 100, 101, 114, 0, 114, 2, 100, 114, 97, 97, 103, 0, 114,
+			2, 103, 97, 110, 107, 0, 114, 2, 104, 101, 101, 114, 115, 0, 114, 2, 107, 111, 111, 109, 0, 114, 2, 108, 97, 97, 105, 100, 0, 114,
+			2, 108, 97, 109, 115, 0, 114, 2, 109, 101, 101, 115, 116, 101, 114, 0, 114, 2, 114, 101, 101, 100, 0, 114, 2, 114, 111, 109, 112, 101,
+			108, 0, 114, 2, 115, 105, 103, 116, 0, 114, 2, 115, 107, 114, 121, 0, 114, 2, 115, 112, 114, 111, 110, 107, 0, 114, 2, 115, 116, 117,
+			114, 0, 114, 2, 116, 114, 0, 114, 2, 116, 117, 105, 103, 0, 114, 8, 2, 100, 97, 103, 0, 114, 8, 2, 100, 101, 110, 107, 0, 114,
+			8, 2, 100, 111, 101, 110, 0, 114, 8, 2, 100, 114, 121, 17, 67, 0, 114, 8, 2, 103, 114, 111, 101, 105, 0, 114, 8, 2, 104, 97,
+			97, 115, 0, 114, 8, 2, 104, 111, 111, 102, 115, 0, 114, 8, 2, 112, 101, 105, 110, 115, 0, 114, 8, 2, 115, 107, 97, 100, 117, 0,
+			114, 8, 2, 115, 107, 97, 116, 0, 114, 8, 2, 115, 116, 101, 108, 112, 0, 114, 8, 2, 115, 116, 114, 111, 109, 105, 0, 114, 8, 2,
+			118, 108, 101, 117, 101, 108, 0, 114, 8, 2, 118, 108, 111, 101, 100, 105, 103, 0, 114, 8, 2, 119, 0, 4, 114, 2, 101, 101, 110, 3,
+			2, 117, 34, 10, 0, 114, 2, 101, 101, 110, 103, 101, 0, 114, 2, 101, 101, 110, 115, 21, 0, 114, 2, 101, 101, 116, 0, 114, 2, 101,
+			105, 115, 0, 114, 101, 114, 102, 108, 105, 107, 3, 2, 117, 34, 10, 112, 34, 83, 55, 13, 49, 0, 114, 100, 119, 97, 114, 115, 8, 3,
+			2, 117, 34, 72, 58, 35, 34, 89, 0, 114, 100, 101, 8, 2, 107, 3, 2, 117, 34, 72, 112, 0, 114, 115, 116, 117, 117, 114, 115, 8,
+			3, 2, 117, 34, 89, 47, 118, 12, 34, 89, 0, 114, 115, 97, 97, 107, 108, 105, 107, 3, 2, 117, 34, 89, 115, 49, 55, 13, 49, 0,
+			114, 114, 101, 2, 100, 17, 65, 3, 2, 117, 34, 116, 0, 116, 2, 109, 111, 101, 100, 105, 103, 3, 2, 117, 47, 0, 4, 103, 2, 108,
+			111, 112, 3, 2, 117, 136, 0, 103, 2, 108, 117, 105, 107, 0, 114, 2, 101, 101, 110, 21, 21, 3, 4, 117, 34, 10, 0, 114, 2, 119,
+			105, 103, 3, 6, 117, 34, 0, 112, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 117, 48, 136, 13, 0, 3, 117, 0, 4, 114, 2,
+			115, 105, 103, 116, 121, 100, 3, 117, 34, 0, 114, 2, 116, 114, 101, 107, 0, 114, 8, 2, 116, 114, 111, 109, 0, 114, 8, 2, 104, 97,
+			110, 100, 21, 3, 117, 34, 6, 0, 114, 107, 111, 101, 112, 101, 108, 3, 117, 34, 49, 6, 40, 48, 13, 55, 0, 114, 108, 101, 100, 101,
+			8, 3, 117, 34, 55, 6, 116, 72, 13, 0, 114, 108, 101, 2, 119, 17, 65, 110, 3, 117, 34, 55, 7, 116, 0, 114, 108, 101, 2, 108,
+			25, 3, 117, 34, 55, 112, 0, 114, 98, 111, 100, 105, 103, 3, 117, 34, 71, 6, 117, 72, 13, 136, 0, 114, 98, 108, 117, 102, 3, 117,
+			34, 71, 55, 6, 111, 83, 0, 114, 100, 114, 101, 119, 101, 3, 117, 34, 72, 34, 6, 116, 84, 13, 0, 109, 98, 108, 105, 107, 108, 105,
+			107, 3, 117, 65, 71, 55, 6, 109, 49, 55, 13, 49, 0, 4, 105, 3, 125, 0, 121, 0, 4, 110, 100, 106, 105, 101, 3, 125, 68, 49,
+			37, 0, 110, 116, 106, 105, 101, 0, 4, 100, 106, 105, 101, 3, 125, 80, 37, 0, 116, 106, 105, 101, 0, 7, 6, 111, 112, 0, 4, 2,
+			104, 111, 117, 100, 101, 3, 2, 110, 48, 0, 2, 108, 101, 116, 116, 0, 2, 110, 117, 117, 116, 0, 2, 114, 111, 101, 114, 105, 103, 0,
+			2, 114, 117, 105, 101, 110, 0, 2, 115, 105, 101, 110, 98, 0, 2, 115, 105, 111, 110, 101, 21, 0, 2, 115, 116, 97, 110, 100, 105, 103,
+			0, 2, 119, 105, 110, 100, 101, 0, 8, 2, 114, 101, 103, 0, 8, 2, 115, 121, 0, 8, 2, 118, 97, 108, 108, 0, 8, 2, 118, 108,
+			105, 101, 195, 171, 0, 112, 111, 114, 2, 116, 117, 3, 2, 110, 48, 2, 110, 34, 0, 112, 101, 114, 2, 118, 108, 97, 107, 107, 105, 3,
+			2, 110, 48, 13, 34, 0, 112, 111, 110, 2, 17, 65, 3, 2, 110, 48, 13, 50, 0, 112, 111, 115, 2, 105, 115, 105, 101, 3, 2, 110,
+			48, 13, 88, 0, 116, 105, 2, 109, 17, 65, 3, 2, 110, 48, 47, 2, 37, 0, 109, 101, 114, 107, 108, 105, 8, 2, 107, 3, 2, 110,
+			48, 65, 112, 34, 49, 55, 13, 0, 115, 101, 116, 108, 105, 107, 3, 2, 110, 48, 89, 108, 47, 55, 13, 49, 0, 115, 105, 103, 116, 101,
+			108, 105, 8, 2, 107, 3, 2, 110, 48, 89, 109, 136, 47, 13, 55, 13, 0, 101, 114, 8, 2, 17, 65, 3, 2, 117, 48, 13, 34, 0,
+			101, 114, 97, 115, 105, 101, 3, 2, 117, 48, 13, 34, 115, 89, 37, 0, 101, 110, 2, 98, 3, 2, 117, 48, 13, 50, 0, 8, 2, 21,
+			14, 128, 132, 130, 3, 6, 110, 48, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 110, 48, 136, 13, 0, 103, 101, 101, 2, 12,
+			3, 6, 110, 48, 136, 116, 0, 1, 17, 67, 10, 2, 105, 103, 3, 6, 117, 48, 0, 101, 101, 110, 1, 25, 3, 10, 2, 110, 48, 10,
+			116, 50, 0, 97, 97, 116, 3, 40, 48, 6, 115, 47, 0, 4, 97, 116, 105, 101, 115, 3, 40, 48, 6, 115, 47, 37, 89, 0, 97, 116,
+			105, 101, 115, 0, 97, 116, 105, 101, 3, 40, 48, 35, 47, 6, 37, 0, 2, 111, 102, 102, 101, 114, 3, 110, 48, 0, 112, 101, 114, 3,
+			110, 48, 13, 34, 0, 116, 101, 108, 3, 110, 48, 47, 112, 55, 0, 115, 112, 114, 97, 97, 107, 3, 110, 48, 89, 48, 34, 115, 49, 0,
+			105, 110, 105, 101, 3, 117, 48, 6, 37, 50, 37, 0, 4, 101, 2, 108, 3, 117, 48, 13, 0, 101, 8, 2, 25, 0, 101, 8, 2, 114,
+			105, 103, 0, 101, 114, 97, 2, 25, 3, 117, 48, 13, 34, 2, 35, 0, 101, 110, 2, 12, 3, 117, 48, 13, 50, 0, 105, 117, 109, 3,
+			117, 48, 37, 111, 65, 0, 117, 8, 2, 115, 3, 117, 48, 111, 0, 7, 6, 112, 97, 0, 114, 97, 2, 17, 67, 3, 4, 48, 35, 34,
+			35, 0, 4, 2, 103, 111, 100, 17, 65, 3, 48, 2, 35, 0, 2, 110, 101, 108, 101, 0, 2, 110, 105, 101, 107, 0, 2, 112, 105, 101,
+			114, 0, 2, 112, 105, 114, 117, 115, 0, 2, 115, 105, 102, 105, 0, 2, 115, 116, 101, 108, 0, 2, 116, 114, 17, 65, 0, 8, 2, 107,
+			107, 97, 0, 8, 2, 115, 116, 101, 105, 0, 8, 2, 115, 116, 111, 0, 8, 2, 116, 17, 65, 0, 112, 2, 98, 114, 111, 101, 107, 17,
+			65, 17, 67, 0, 114, 8, 2, 17, 67, 17, 65, 3, 48, 2, 35, 34, 0, 114, 111, 2, 100, 105, 3, 48, 2, 35, 34, 2, 40, 0,
+			114, 116, 105, 2, 115, 97, 3, 48, 2, 35, 34, 47, 2, 37, 0, 114, 116, 105, 2, 116, 117, 3, 48, 2, 35, 34, 47, 13, 0, 114,
+			108, 101, 2, 109, 101, 110, 116, 3, 48, 2, 35, 34, 55, 13, 0, 114, 109, 101, 2, 115, 97, 97, 110, 3, 48, 2, 35, 34, 65, 13,
+			0, 116, 105, 101, 2, 25, 24, 3, 48, 2, 35, 47, 6, 37, 0, 116, 114, 105, 2, 21, 3, 48, 2, 35, 47, 34, 2, 37, 0, 116,
+			114, 105, 97, 114, 2, 103, 97, 3, 48, 2, 35, 47, 34, 2, 37, 2, 35, 34, 0, 116, 114, 111, 2, 108, 108, 101, 3, 48, 2, 35,
+			47, 34, 2, 40, 0, 116, 195, 169, 3, 48, 2, 35, 47, 116, 0, 112, 97, 106, 97, 3, 48, 2, 35, 48, 6, 115, 37, 35, 0, 4,
+			112, 101, 2, 103, 97, 97, 105, 3, 48, 2, 35, 48, 13, 0, 112, 112, 101, 2, 114, 121, 0, 112, 97, 119, 101, 114, 3, 48, 2, 35,
+			48, 115, 84, 13, 34, 0, 107, 105, 115, 116, 97, 110, 3, 48, 2, 35, 49, 2, 37, 89, 47, 35, 50, 0, 107, 107, 101, 2, 116, 3,
+			48, 2, 35, 49, 108, 0, 4, 110, 8, 2, 100, 111, 3, 48, 2, 35, 50, 0, 110, 8, 2, 116, 111, 0, 110, 111, 2, 114, 97, 109,
+			3, 48, 2, 35, 50, 2, 40, 0, 110, 100, 101, 2, 109, 105, 101, 3, 48, 2, 35, 50, 72, 116, 0, 108, 2, 109, 105, 101, 116, 3,
+			48, 2, 35, 55, 0, 108, 105, 115, 115, 97, 100, 101, 3, 48, 2, 35, 55, 2, 37, 89, 115, 72, 13, 0, 108, 101, 2, 115, 116, 17,
+			65, 3, 48, 2, 35, 55, 13, 0, 108, 105, 110, 2, 100, 114, 111, 3, 48, 2, 35, 55, 13, 50, 0, 108, 101, 2, 116, 3, 48, 2,
+			35, 55, 108, 0, 109, 2, 17, 67, 3, 48, 2, 35, 65, 0, 109, 112, 101, 114, 2, 108, 3, 48, 2, 35, 65, 48, 13, 34, 0, 4,
+			118, 105, 108, 2, 106, 111, 101, 3, 48, 2, 35, 84, 13, 55, 0, 119, 105, 108, 2, 106, 111, 101, 0, 115, 2, 111, 112, 3, 48, 2,
+			35, 89, 0, 115, 115, 97, 2, 115, 105, 101, 114, 3, 48, 2, 35, 89, 2, 35, 0, 115, 116, 111, 8, 2, 114, 17, 65, 21, 3, 48,
+			2, 35, 89, 47, 2, 40, 0, 115, 101, 2, 108, 108, 97, 3, 48, 2, 35, 89, 112, 0, 116, 105, 101, 115, 1, 21, 3, 48, 6, 115,
+			47, 37, 89, 0, 100, 100, 97, 8, 2, 17, 67, 17, 65, 3, 48, 7, 35, 72, 35, 0, 2, 116, 97, 116, 3, 48, 13, 0, 114, 97,
+			100, 101, 2, 25, 3, 48, 13, 34, 115, 72, 13, 0, 110, 97, 100, 111, 3, 48, 13, 50, 115, 72, 120, 12, 0, 106, 97, 109, 97, 3,
+			48, 13, 75, 115, 65, 2, 35, 0, 114, 107, 97, 2, 98, 97, 97, 100, 106, 3, 48, 35, 34, 49, 2, 35, 0, 114, 107, 101, 2, 114,
+			97, 97, 100, 3, 48, 35, 34, 49, 13, 0, 107, 2, 17, 65, 3, 48, 35, 49, 19, 0, 110, 8, 2, 103, 101, 17, 67, 3, 48, 35,
+			50, 0, 110, 97, 109, 97, 3, 48, 35, 50, 13, 65, 35, 0, 110, 116, 115, 101, 114, 3, 48, 35, 50, 47, 89, 13, 34, 0, 108, 106,
+			97, 8, 2, 25, 3, 48, 35, 55, 57, 7, 35, 0, 109, 2, 112, 97, 3, 48, 35, 65, 0, 110, 107, 114, 101, 97, 3, 48, 35, 68,
+			49, 34, 2, 37, 2, 35, 0, 110, 103, 97, 3, 48, 35, 68, 81, 35, 0, 115, 8, 2, 17, 65, 17, 65, 3, 48, 35, 89, 0, 97,
+			114, 108, 8, 3, 48, 113, 34, 114, 0, 116, 105, 111, 3, 48, 115, 47, 37, 38, 40, 0, 7, 6, 112, 101, 0, 2, 110, 97, 108, 105,
+			3, 48, 2, 108, 0, 114, 105, 2, 115, 17, 67, 17, 65, 3, 48, 2, 108, 34, 13, 0, 114, 105, 102, 101, 2, 114, 17, 65, 21, 3,
+			48, 2, 108, 34, 13, 83, 13, 0, 110, 2, 100, 117, 108, 101, 3, 48, 2, 108, 50, 0, 110, 101, 2, 116, 114, 17, 65, 3, 48, 2,
+			108, 50, 13, 0, 110, 105, 115, 105, 2, 108, 108, 105, 3, 48, 2, 108, 50, 13, 89, 13, 0, 110, 115, 105, 2, 111, 101, 110, 3, 48,
+			2, 108, 50, 91, 2, 37, 0, 108, 105, 8, 2, 107, 97, 3, 48, 2, 108, 55, 2, 37, 0, 108, 111, 116, 111, 110, 3, 48, 2, 108,
+			55, 13, 47, 110, 50, 0, 100, 8, 2, 111, 102, 3, 48, 2, 108, 72, 0, 100, 97, 8, 2, 103, 3, 48, 2, 108, 72, 2, 35, 0,
+			100, 105, 8, 3, 48, 2, 108, 72, 2, 37, 0, 114, 2, 115, 101, 101, 108, 3, 48, 2, 112, 34, 0, 114, 108, 101, 2, 109, 111, 101,
+			3, 48, 2, 112, 34, 55, 13, 0, 114, 115, 111, 2, 110, 101, 101, 108, 3, 48, 2, 112, 34, 89, 2, 40, 0, 114, 103, 111, 108, 97,
+			3, 48, 2, 112, 34, 136, 117, 55, 2, 35, 0, 4, 108, 101, 2, 116, 111, 110, 3, 48, 2, 112, 55, 13, 0, 108, 101, 2, 116, 111,
+			110, 0, 114, 105, 2, 111, 3, 48, 2, 116, 34, 2, 37, 0, 114, 100, 101, 8, 3, 48, 6, 113, 34, 72, 13, 0, 4, 1, 17, 67,
+			21, 2, 100, 97, 3, 48, 13, 0, 2, 110, 97, 114, 105, 101, 0, 2, 114, 114, 111, 110, 0, 2, 116, 105, 101, 116, 101, 114, 0, 2,
+			116, 105, 115, 105, 0, 2, 116, 117, 110, 105, 97, 0, 8, 2, 100, 17, 65, 0, 4, 114, 2, 107, 117, 115, 115, 105, 101, 3, 48, 13,
+			34, 0, 114, 2, 115, 101, 112, 115, 105, 0, 114, 2, 115, 111, 0, 4, 114, 101, 1, 109, 97, 107, 115, 2, 32, 3, 48, 13, 34, 13,
+			0, 114, 101, 1, 112, 2, 32, 0, 114, 101, 1, 121, 114, 2, 32, 0, 114, 109, 105, 116, 3, 48, 13, 34, 65, 6, 109, 47, 0, 4,
+			114, 100, 101, 1, 101, 112, 2, 32, 3, 48, 13, 34, 72, 13, 0, 114, 100, 101, 1, 109, 101, 116, 2, 32, 0, 114, 100, 101, 1, 112,
+			105, 110, 115, 2, 32, 0, 114, 100, 101, 1, 114, 117, 112, 2, 32, 0, 114, 100, 101, 1, 115, 97, 114, 2, 32, 0, 114, 102, 101, 107,
+			3, 48, 13, 34, 83, 108, 49, 0, 114, 118, 101, 114, 116, 3, 48, 13, 34, 83, 112, 34, 47, 0, 114, 118, 101, 114, 115, 3, 48, 13,
+			34, 83, 112, 34, 89, 0, 114, 115, 101, 110, 116, 3, 48, 13, 34, 89, 108, 50, 47, 0, 114, 115, 101, 110, 116, 97, 1, 21, 2, 115,
+			105, 3, 48, 13, 34, 89, 108, 50, 47, 115, 0, 116, 114, 111, 108, 2, 101, 117, 109, 3, 48, 13, 47, 34, 117, 55, 0, 110, 101, 2,
+			32, 3, 48, 13, 50, 13, 0, 108, 105, 110, 103, 1, 114, 2, 32, 3, 48, 13, 55, 13, 68, 0, 114, 105, 112, 97, 2, 116, 3, 48,
+			108, 34, 37, 48, 35, 7, 0, 116, 114, 111, 108, 3, 48, 108, 47, 34, 13, 55, 10, 0, 100, 111, 8, 2, 109, 3, 48, 108, 72, 2,
+			40, 0, 115, 1, 114, 101, 100, 110, 117, 114, 3, 48, 108, 89, 0, 114, 115, 112, 101, 120, 3, 48, 109, 34, 89, 48, 108, 49, 89, 0,
+			114, 107, 101, 1, 21, 2, 32, 3, 48, 112, 34, 49, 13, 0, 114, 107, 101, 114, 1, 21, 2, 25, 3, 48, 112, 34, 49, 13, 34, 0,
+			114, 107, 105, 110, 103, 1, 21, 3, 48, 112, 34, 49, 13, 68, 0, 114, 109, 97, 110, 101, 110, 3, 48, 112, 34, 65, 35, 50, 6, 108,
+			50, 0, 114, 115, 2, 111, 109, 3, 48, 112, 34, 89, 10, 0, 114, 115, 107, 101, 3, 48, 112, 34, 89, 49, 13, 0, 114, 1, 121, 114,
+			2, 100, 3, 48, 113, 34, 0, 114, 100, 8, 2, 114, 3, 48, 113, 34, 47, 0, 4, 114, 100, 101, 1, 21, 2, 32, 3, 48, 113, 34,
+			72, 13, 0, 114, 100, 101, 2, 107, 97, 114, 0, 8, 2, 116, 114, 17, 65, 32, 3, 48, 116, 0, 114, 101, 1, 21, 2, 32, 3, 48,
+			116, 34, 13, 0, 7, 6, 112, 114, 0, 111, 116, 101, 115, 116, 3, 4, 48, 34, 110, 47, 13, 89, 47, 0, 111, 112, 97, 103, 3, 4,
+			48, 34, 110, 48, 35, 136, 0, 97, 107, 8, 2, 116, 121, 107, 3, 48, 34, 2, 35, 49, 0, 97, 107, 116, 105, 2, 115, 121, 110, 3,
+			48, 34, 2, 35, 49, 47, 2, 37, 0, 105, 2, 109, 97, 97, 116, 3, 48, 34, 2, 37, 0, 101, 116, 111, 114, 105, 3, 48, 34, 2,
+			37, 47, 2, 117, 34, 2, 37, 0, 101, 116, 111, 114, 105, 97, 2, 110, 3, 48, 34, 2, 37, 47, 2, 117, 34, 2, 37, 6, 115, 0,
+			101, 116, 111, 114, 105, 97, 2, 32, 3, 48, 34, 2, 37, 47, 6, 117, 34, 37, 35, 0, 101, 109, 105, 195, 168, 114, 101, 3, 48, 34,
+			2, 37, 65, 57, 113, 34, 0, 105, 118, 2, 97, 21, 3, 48, 34, 2, 37, 83, 0, 105, 101, 115, 116, 101, 114, 101, 2, 25, 3, 48,
+			34, 2, 37, 89, 47, 13, 34, 108, 0, 4, 111, 2, 17, 67, 17, 65, 3, 48, 34, 2, 40, 0, 111, 2, 98, 108, 17, 65, 0, 111,
+			2, 103, 114, 97, 109, 0, 111, 116, 101, 115, 2, 116, 101, 32, 24, 3, 48, 34, 2, 40, 47, 108, 89, 0, 111, 106, 101, 107, 3, 48,
+			34, 2, 40, 57, 108, 49, 0, 111, 100, 117, 107, 2, 17, 65, 3, 48, 34, 2, 40, 72, 111, 49, 10, 0, 111, 102, 101, 115, 115, 105,
+			111, 2, 110, 3, 48, 34, 2, 40, 83, 2, 108, 91, 2, 37, 2, 40, 0, 111, 118, 105, 116, 97, 3, 48, 34, 2, 40, 84, 37, 47,
+			2, 35, 0, 111, 115, 101, 115, 3, 48, 34, 2, 40, 89, 108, 89, 0, 111, 103, 114, 97, 109, 109, 101, 2, 114, 105, 110, 103, 3, 48,
+			34, 2, 40, 136, 34, 2, 35, 65, 116, 0, 101, 112, 97, 2, 114, 97, 3, 48, 34, 2, 108, 48, 13, 0, 101, 115, 116, 105, 103, 101,
+			3, 48, 34, 2, 108, 89, 47, 37, 12, 90, 0, 101, 115, 98, 105, 116, 101, 114, 105, 2, 97, 3, 48, 34, 2, 108, 89, 71, 13, 47,
+			2, 116, 34, 2, 37, 0, 101, 103, 2, 110, 97, 110, 17, 67, 3, 48, 34, 2, 108, 136, 0, 111, 112, 111, 115, 105, 3, 48, 34, 2,
+			110, 48, 13, 88, 37, 0, 111, 107, 117, 2, 114, 17, 65, 3, 48, 34, 2, 110, 49, 2, 118, 0, 111, 108, 101, 116, 97, 114, 105, 2,
+			97, 3, 48, 34, 2, 110, 55, 13, 47, 2, 35, 34, 2, 37, 0, 111, 109, 117, 108, 103, 2, 101, 3, 48, 34, 2, 110, 65, 2, 111,
+			55, 136, 0, 111, 109, 101, 110, 97, 100, 101, 3, 48, 34, 2, 110, 65, 13, 50, 115, 72, 13, 0, 111, 109, 105, 115, 107, 117, 3, 48,
+			34, 2, 110, 65, 13, 89, 49, 118, 0, 111, 98, 108, 101, 2, 109, 97, 116, 105, 3, 48, 34, 2, 110, 71, 55, 13, 0, 111, 102, 105,
+			116, 2, 101, 3, 48, 34, 2, 110, 83, 13, 47, 0, 111, 115, 101, 2, 100, 117, 114, 101, 3, 48, 34, 2, 110, 89, 13, 0, 111, 115,
+			116, 105, 2, 116, 117, 3, 48, 34, 2, 110, 89, 47, 13, 0, 101, 100, 105, 2, 107, 97, 110, 116, 3, 48, 34, 2, 116, 72, 13, 0,
+			111, 2, 103, 114, 101, 115, 115, 3, 48, 34, 2, 117, 0, 111, 116, 101, 2, 195, 175, 3, 48, 34, 2, 117, 47, 13, 0, 111, 106, 101,
+			107, 2, 116, 105, 101, 108, 3, 48, 34, 2, 117, 57, 2, 108, 49, 0, 111, 118, 105, 2, 97, 110, 100, 3, 48, 34, 2, 117, 84, 2,
+			37, 0, 111, 115, 97, 2, 195, 175, 101, 3, 48, 34, 2, 117, 89, 115, 0, 111, 103, 101, 115, 116, 101, 114, 2, 111, 3, 48, 34, 2,
+			117, 136, 2, 108, 89, 47, 13, 34, 0, 101, 2, 110, 97, 116, 97, 3, 48, 34, 4, 116, 0, 4, 101, 2, 108, 117, 100, 3, 48, 34,
+			13, 0, 101, 2, 109, 105, 101, 114, 0, 101, 2, 115, 17, 65, 0, 101, 116, 101, 110, 2, 115, 105, 3, 48, 34, 13, 47, 134, 50, 0,
+			105, 110, 115, 105, 2, 112, 17, 65, 3, 48, 34, 13, 50, 89, 13, 0, 105, 110, 115, 105, 112, 101, 2, 25, 3, 48, 34, 13, 50, 89,
+			37, 48, 13, 0, 105, 110, 115, 101, 2, 115, 3, 48, 34, 13, 50, 89, 108, 0, 105, 110, 115, 101, 115, 1, 21, 2, 32, 3, 48, 34,
+			13, 50, 89, 108, 89, 0, 105, 109, 105, 2, 116, 3, 48, 34, 13, 65, 13, 0, 4, 101, 115, 101, 2, 100, 101, 110, 116, 3, 48, 34,
+			13, 89, 13, 0, 105, 115, 111, 2, 110, 105, 101, 114, 0, 101, 115, 105, 100, 101, 110, 2, 17, 67, 3, 48, 34, 13, 89, 13, 72, 108,
+			50, 0, 101, 115, 116, 97, 2, 115, 105, 101, 3, 48, 34, 13, 89, 47, 115, 0, 101, 115, 116, 101, 2, 114, 101, 110, 100, 3, 48, 34,
+			13, 89, 47, 116, 0, 101, 115, 116, 101, 101, 114, 3, 48, 34, 13, 89, 47, 116, 34, 0, 101, 115, 101, 110, 116, 1, 21, 3, 48, 34,
+			13, 89, 108, 50, 47, 0, 101, 116, 111, 114, 105, 97, 2, 17, 67, 3, 48, 34, 37, 47, 6, 117, 34, 37, 35, 0, 101, 102, 101, 107,
+			3, 48, 34, 37, 83, 108, 49, 0, 111, 116, 101, 115, 3, 48, 34, 40, 47, 6, 108, 89, 0, 111, 109, 105, 110, 101, 110, 3, 48, 34,
+			110, 65, 37, 50, 6, 108, 50, 0, 111, 110, 107, 101, 114, 2, 116, 106, 105, 3, 48, 34, 110, 68, 49, 10, 112, 34, 0, 111, 102, 101,
+			115, 105, 101, 3, 48, 34, 110, 83, 13, 89, 6, 37, 0, 4, 101, 2, 104, 105, 115, 116, 111, 3, 48, 34, 116, 0, 101, 2, 115, 101,
+			32, 0, 101, 100, 105, 107, 101, 114, 3, 48, 34, 116, 72, 13, 49, 13, 34, 0, 111, 116, 2, 111, 110, 12, 3, 48, 34, 117, 47, 0,
+			111, 116, 111, 2, 17, 67, 3, 48, 34, 117, 47, 40, 0, 111, 107, 105, 101, 3, 48, 34, 117, 49, 2, 37, 0, 111, 115, 97, 3, 48,
+			34, 117, 89, 2, 35, 0, 111, 115, 101, 1, 21, 2, 32, 3, 48, 34, 117, 89, 13, 0, 7, 6, 114, 101, 0, 2, 97, 103, 101, 114,
+			101, 110, 3, 34, 2, 37, 0, 97, 2, 17, 67, 3, 34, 2, 37, 2, 35, 0, 104, 97, 98, 105, 108, 105, 116, 3, 34, 2, 37, 2,
+			35, 71, 2, 37, 55, 2, 37, 47, 0, 2, 195, 188, 3, 34, 2, 37, 10, 0, 97, 2, 107, 115, 3, 34, 2, 37, 35, 0, 102, 108,
+			101, 107, 2, 17, 67, 3, 34, 2, 37, 83, 55, 108, 49, 0, 116, 114, 111, 8, 2, 21, 14, 128, 132, 133, 3, 34, 2, 108, 47, 34,
+			2, 40, 0, 112, 2, 116, 105, 101, 108, 3, 34, 2, 108, 48, 0, 112, 101, 114, 116, 111, 105, 114, 101, 3, 34, 2, 108, 48, 13, 34,
+			47, 58, 115, 34, 0, 112, 117, 2, 116, 3, 34, 2, 108, 48, 118, 0, 100, 105, 103, 8, 2, 17, 65, 3, 34, 2, 108, 72, 2, 37,
+			136, 0, 102, 101, 114, 2, 97, 3, 34, 2, 108, 83, 13, 34, 0, 119, 111, 108, 2, 117, 3, 34, 2, 108, 84, 2, 111, 55, 0, 115,
+			111, 2, 110, 17, 65, 3, 34, 2, 108, 89, 2, 40, 0, 115, 111, 2, 108, 117, 115, 105, 101, 3, 34, 2, 108, 89, 2, 110, 0, 115,
+			116, 97, 117, 114, 3, 34, 2, 108, 89, 47, 2, 40, 34, 0, 115, 116, 101, 8, 2, 114, 101, 110, 100, 3, 34, 2, 108, 89, 47, 116,
+			0, 103, 105, 109, 101, 110, 2, 116, 97, 21, 3, 34, 2, 108, 136, 2, 37, 65, 2, 108, 50, 0, 103, 117, 2, 108, 17, 65, 3, 34,
+			2, 108, 136, 2, 118, 0, 103, 2, 104, 111, 101, 107, 105, 103, 3, 34, 2, 112, 136, 0, 2, 112, 114, 111, 100, 117, 3, 34, 2, 116,
+			0, 112, 101, 114, 2, 107, 117, 115, 3, 34, 2, 116, 48, 13, 34, 0, 108, 105, 195, 171, 102, 3, 34, 2, 116, 55, 2, 37, 108, 83,
+			0, 100, 101, 2, 114, 121, 3, 34, 2, 116, 72, 13, 0, 101, 108, 1, 17, 65, 10, 2, 32, 3, 34, 6, 116, 55, 0, 108, 101, 1,
+			10, 2, 32, 3, 34, 6, 116, 55, 13, 0, 4, 1, 17, 67, 2, 103, 97, 116, 3, 34, 13, 0, 2, 98, 101, 108, 0, 2, 100, 97,
+			107, 17, 67, 0, 2, 102, 114, 101, 105, 110, 0, 2, 103, 101, 101, 114, 0, 2, 103, 114, 101, 115, 25, 0, 2, 103, 114, 111, 101, 112,
+			0, 2, 107, 114, 117, 0, 2, 108, 105, 101, 107, 0, 2, 110, 17, 65, 0, 2, 112, 108, 105, 101, 107, 0, 2, 115, 101, 110, 115, 17,
+			65, 0, 2, 115, 101, 115, 115, 105, 101, 0, 2, 115, 112, 111, 110, 0, 2, 116, 111, 0, 8, 2, 108, 97, 0, 8, 2, 115, 112, 121,
+			116, 0, 8, 2, 115, 116, 97, 110, 116, 0, 116, 105, 2, 114, 101, 3, 34, 13, 47, 13, 0, 112, 117, 98, 108, 105, 2, 107, 3, 34,
+			13, 48, 2, 111, 71, 55, 2, 37, 0, 112, 117, 98, 108, 105, 101, 107, 3, 34, 13, 48, 2, 111, 71, 55, 37, 49, 0, 4, 107, 108,
+			97, 2, 109, 17, 65, 3, 34, 13, 49, 55, 35, 0, 107, 108, 97, 2, 109, 101, 101, 114, 0, 107, 108, 97, 109, 101, 3, 34, 13, 49,
+			55, 115, 65, 13, 0, 110, 101, 1, 111, 3, 34, 13, 50, 13, 0, 110, 111, 110, 115, 3, 34, 13, 50, 135, 50, 89, 0, 4, 108, 101,
+			2, 103, 17, 65, 3, 34, 13, 55, 13, 0, 108, 101, 2, 118, 97, 110, 0, 108, 105, 2, 103, 105, 0, 108, 97, 115, 101, 3, 34, 13,
+			55, 115, 89, 13, 0, 100, 101, 110, 2, 17, 65, 17, 67, 17, 65, 3, 34, 13, 72, 13, 50, 6, 0, 100, 101, 110, 101, 101, 114, 3,
+			34, 13, 72, 13, 50, 6, 116, 34, 0, 102, 111, 114, 2, 109, 3, 34, 13, 83, 2, 110, 34, 0, 102, 101, 114, 101, 110, 2, 100, 17,
+			65, 3, 34, 13, 83, 13, 34, 108, 50, 0, 119, 111, 108, 119, 101, 114, 3, 34, 13, 84, 6, 110, 55, 84, 13, 34, 0, 115, 101, 114,
+			119, 101, 3, 34, 13, 88, 6, 112, 34, 84, 13, 0, 4, 115, 105, 2, 100, 101, 110, 3, 34, 13, 89, 13, 0, 115, 105, 2, 116, 17,
+			65, 0, 115, 101, 114, 2, 118, 3, 34, 13, 89, 13, 34, 0, 115, 112, 101, 107, 2, 116, 101, 101, 114, 3, 34, 13, 89, 48, 2, 108,
+			49, 0, 115, 112, 101, 107, 3, 34, 13, 89, 48, 108, 49, 0, 115, 101, 112, 3, 34, 13, 89, 108, 48, 0, 115, 101, 115, 2, 32, 3,
+			34, 13, 89, 108, 89, 0, 115, 117, 108, 2, 116, 17, 65, 3, 34, 13, 89, 111, 55, 6, 0, 103, 105, 109, 101, 2, 32, 3, 34, 13,
+			90, 37, 12, 65, 0, 103, 2, 105, 115, 116, 3, 34, 13, 136, 0, 4, 103, 105, 2, 109, 101, 110, 116, 3, 34, 13, 136, 13, 0, 103,
+			105, 2, 115, 115, 101, 117, 17, 67, 0, 103, 108, 101, 2, 109, 101, 110, 116, 3, 34, 13, 136, 55, 13, 0, 103, 101, 114, 2, 17, 65,
+			3, 34, 13, 136, 116, 34, 0, 4, 1, 17, 67, 2, 110, 32, 3, 34, 108, 0, 1, 17, 67, 2, 110, 110, 101, 32, 0, 1, 101, 100,
+			114, 101, 112, 2, 110, 0, 116, 105, 110, 97, 3, 34, 108, 47, 37, 50, 35, 0, 112, 101, 116, 3, 34, 108, 48, 13, 47, 0, 107, 111,
+			114, 100, 3, 34, 108, 49, 2, 110, 34, 47, 0, 99, 99, 101, 3, 34, 108, 49, 37, 0, 109, 2, 32, 3, 34, 108, 65, 0, 103, 103,
+			97, 101, 3, 34, 108, 81, 123, 0, 103, 3, 34, 112, 136, 0, 103, 118, 101, 114, 100, 105, 103, 3, 34, 112, 136, 83, 6, 112, 34, 72,
+			13, 136, 0, 114, 105, 110, 103, 1, 10, 2, 32, 3, 34, 116, 34, 13, 68, 0, 107, 101, 2, 110, 17, 65, 3, 34, 116, 49, 13, 0,
+			4, 100, 101, 1, 115, 3, 34, 116, 72, 13, 0, 100, 101, 8, 2, 17, 67, 0, 100, 101, 108, 8, 3, 34, 116, 72, 13, 55, 0, 7,
+			6, 115, 101, 0, 110, 105, 111, 114, 2, 105, 116, 101, 105, 3, 89, 2, 37, 12, 50, 2, 37, 2, 110, 34, 0, 4, 114, 101, 2, 109,
+			111, 110, 105, 3, 89, 2, 108, 34, 13, 0, 114, 101, 2, 110, 97, 100, 101, 0, 114, 111, 116, 111, 2, 110, 105, 3, 89, 2, 108, 34,
+			13, 47, 2, 40, 0, 107, 117, 2, 108, 3, 89, 2, 108, 49, 2, 118, 0, 107, 119, 101, 2, 115, 116, 114, 17, 65, 3, 89, 2, 108,
+			49, 58, 13, 0, 107, 115, 2, 116, 97, 110, 116, 3, 89, 2, 108, 49, 89, 0, 107, 115, 116, 101, 2, 116, 3, 89, 2, 108, 49, 89,
+			47, 108, 0, 4, 110, 2, 115, 111, 114, 105, 101, 3, 89, 2, 108, 50, 0, 110, 2, 115, 117, 117, 114, 0, 110, 8, 2, 116, 114, 97,
+			21, 0, 110, 116, 105, 2, 109, 101, 110, 116, 3, 89, 2, 108, 50, 47, 2, 37, 0, 108, 105, 2, 98, 97, 3, 89, 2, 108, 55, 2,
+			37, 0, 109, 105, 2, 110, 97, 3, 89, 2, 108, 65, 2, 37, 0, 2, 108, 108, 105, 110, 3, 89, 2, 112, 6, 0, 108, 108, 111, 2,
+			102, 97, 3, 89, 2, 112, 55, 13, 0, 108, 100, 101, 114, 2, 121, 3, 89, 2, 112, 55, 72, 13, 34, 0, 108, 102, 2, 115, 116, 97,
+			110, 3, 89, 2, 112, 55, 83, 0, 108, 97, 2, 107, 97, 110, 116, 3, 89, 2, 116, 55, 13, 0, 105, 2, 115, 111, 101, 110, 3, 89,
+			2, 123, 0, 108, 1, 21, 2, 119, 105, 103, 3, 89, 6, 112, 55, 0, 108, 108, 105, 103, 1, 21, 3, 89, 6, 112, 55, 13, 136, 0,
+			108, 101, 1, 10, 2, 32, 3, 89, 6, 116, 55, 13, 0, 110, 105, 111, 114, 8, 3, 89, 7, 37, 12, 50, 37, 13, 34, 0, 107, 111,
+			1, 21, 2, 110, 111, 21, 3, 89, 10, 2, 108, 49, 2, 40, 0, 4, 2, 32, 3, 89, 13, 0, 2, 100, 117, 107, 0, 2, 107, 111,
+			0, 2, 107, 117, 0, 2, 114, 111, 101, 116, 0, 8, 2, 100, 101, 110, 116, 0, 8, 2, 100, 111, 111, 115, 0, 8, 2, 107, 114, 101,
+			0, 8, 2, 110, 105, 21, 0, 8, 2, 114, 105, 110, 103, 0, 8, 32, 2, 32, 0, 4, 114, 2, 115, 97, 110, 116, 3, 89, 13, 34,
+			0, 114, 2, 118, 101, 116, 0, 114, 8, 2, 101, 21, 0, 107, 114, 101, 2, 116, 97, 3, 89, 13, 49, 34, 13, 0, 107, 114, 101, 116,
+			97, 114, 105, 2, 17, 65, 3, 89, 13, 49, 34, 13, 47, 2, 35, 34, 2, 37, 0, 108, 101, 1, 111, 110, 2, 32, 3, 89, 13, 55,
+			13, 0, 108, 101, 107, 2, 17, 67, 17, 65, 3, 89, 13, 55, 108, 49, 0, 108, 111, 110, 8, 2, 115, 17, 67, 3, 89, 13, 55, 135,
+			50, 0, 109, 101, 8, 2, 17, 67, 116, 3, 89, 13, 65, 108, 0, 100, 97, 110, 8, 3, 89, 13, 72, 35, 50, 0, 100, 101, 2, 114,
+			105, 110, 103, 3, 89, 13, 72, 116, 0, 100, 101, 101, 114, 3, 89, 13, 72, 116, 34, 0, 107, 115, 1, 21, 2, 32, 3, 89, 108, 49,
+			89, 0, 110, 116, 101, 114, 3, 89, 108, 50, 47, 13, 34, 0, 110, 100, 105, 110, 103, 2, 32, 3, 89, 108, 50, 72, 13, 68, 0, 4,
+			109, 105, 8, 2, 17, 67, 3, 89, 108, 65, 37, 0, 109, 105, 8, 2, 32, 0, 115, 2, 117, 117, 114, 3, 89, 108, 89, 10, 0, 4,
+			1, 100, 101, 111, 108, 98, 2, 108, 3, 89, 112, 0, 1, 101, 105, 115, 105, 108, 111, 112, 2, 108, 25, 0, 1, 101, 108, 108, 105, 97,
+			114, 98, 2, 108, 0, 1, 103, 110, 105, 110, 117, 101, 104, 2, 108, 25, 0, 1, 109, 97, 97, 103, 103, 105, 108, 2, 108, 25, 0, 1,
+			109, 97, 116, 115, 2, 108, 0, 2, 103, 103, 17, 65, 0, 108, 108, 101, 2, 116, 106, 105, 101, 3, 89, 112, 55, 37, 0, 1, 17, 67,
+			21, 2, 114, 101, 32, 3, 89, 116, 0, 116, 101, 2, 110, 101, 32, 3, 89, 116, 47, 13, 0, 116, 101, 108, 2, 25, 3, 89, 116, 47,
+			13, 55, 0, 107, 101, 114, 3, 89, 116, 49, 13, 34, 0, 110, 105, 110, 103, 3, 89, 116, 50, 13, 68, 0, 110, 117, 8, 2, 17, 67,
+			17, 67, 3, 89, 116, 50, 118, 0, 109, 101, 108, 2, 21, 3, 89, 116, 65, 13, 55, 0, 98, 114, 97, 8, 3, 89, 116, 71, 34, 35,
+			0, 100, 101, 8, 3, 89, 116, 72, 13, 0, 7, 6, 115, 116, 0, 105, 101, 115, 1, 21, 3, 8, 89, 47, 2, 37, 89, 0, 101, 109,
+			112, 101, 114, 97, 109, 101, 1, 21, 3, 89, 10, 47, 108, 65, 48, 14, 34, 2, 35, 65, 108, 0, 4, 97, 2, 116, 117, 116, 17, 65,
+			3, 89, 47, 2, 35, 0, 97, 8, 2, 98, 105, 21, 0, 97, 110, 2, 100, 97, 3, 89, 47, 2, 35, 50, 0, 4, 97, 110, 100, 2,
+			104, 111, 117, 100, 101, 3, 89, 47, 2, 35, 50, 47, 0, 97, 110, 100, 2, 118, 97, 115, 116, 105, 0, 97, 110, 100, 101, 114, 100, 2,
+			21, 3, 89, 47, 2, 35, 50, 72, 13, 34, 47, 0, 97, 108, 97, 103, 2, 17, 67, 105, 101, 116, 3, 89, 47, 2, 35, 55, 2, 35,
+			136, 0, 105, 101, 2, 98, 101, 117, 3, 89, 47, 2, 37, 0, 105, 108, 101, 2, 116, 3, 89, 47, 2, 37, 55, 108, 0, 101, 8, 2,
+			114, 105, 3, 89, 47, 2, 108, 0, 101, 108, 108, 101, 110, 2, 98, 111, 115, 3, 89, 47, 2, 112, 55, 13, 65, 0, 101, 114, 101, 111,
+			2, 116, 105, 3, 89, 47, 2, 116, 34, 2, 37, 2, 40, 0, 101, 114, 111, 2, 195, 175, 101, 100, 3, 89, 47, 2, 116, 34, 2, 40,
+			38, 0, 117, 2, 100, 101, 3, 89, 47, 2, 118, 0, 117, 117, 114, 100, 101, 114, 101, 8, 2, 25, 25, 3, 89, 47, 2, 118, 34, 72,
+			13, 34, 108, 0, 117, 100, 101, 110, 2, 116, 3, 89, 47, 2, 118, 72, 108, 50, 0, 111, 117, 116, 2, 109, 111, 101, 100, 105, 3, 89,
+			47, 2, 120, 47, 0, 105, 101, 107, 1, 26, 21, 3, 89, 47, 6, 37, 49, 0, 101, 1, 21, 2, 108, 108, 101, 110, 3, 89, 47, 6,
+			112, 0, 101, 114, 114, 101, 116, 106, 105, 101, 3, 89, 47, 6, 112, 34, 37, 80, 37, 0, 97, 116, 105, 101, 115, 3, 89, 47, 6, 115,
+			47, 37, 89, 0, 121, 102, 103, 101, 2, 21, 14, 128, 132, 134, 3, 89, 47, 6, 123, 83, 136, 13, 0, 97, 97, 116, 8, 2, 115, 3,
+			89, 47, 7, 115, 47, 0, 4, 101, 1, 17, 67, 21, 2, 109, 97, 110, 3, 89, 47, 13, 0, 101, 1, 21, 2, 108, 121, 25, 0, 101,
+			1, 32, 15, 0, 101, 1, 114, 170, 195, 2, 32, 14, 128, 128, 131, 0, 101, 2, 108, 97, 97, 110, 0, 101, 2, 108, 97, 110, 100, 0,
+			101, 2, 108, 108, 97, 115, 105, 101, 0, 101, 2, 109, 97, 97, 116, 0, 101, 2, 109, 97, 114, 107, 0, 101, 8, 2, 102, 97, 97, 110,
+			0, 105, 2, 112, 117, 108, 17, 65, 0, 101, 114, 114, 101, 105, 3, 89, 47, 13, 34, 6, 123, 0, 101, 110, 101, 1, 105, 114, 104, 99,
+			2, 32, 3, 89, 47, 13, 50, 13, 0, 4, 101, 108, 1, 21, 2, 105, 17, 67, 3, 89, 47, 13, 55, 0, 101, 108, 1, 21, 2, 111,
+			0, 101, 108, 1, 110, 117, 107, 2, 100, 0, 101, 108, 1, 111, 112, 97, 0, 101, 108, 1, 114, 111, 119, 0, 101, 108, 8, 101, 110, 0,
+			105, 108, 2, 115, 119, 121, 0, 101, 108, 105, 107, 1, 21, 3, 89, 47, 13, 55, 13, 49, 0, 105, 109, 117, 2, 108, 17, 65, 3, 89,
+			47, 13, 65, 2, 118, 0, 114, 97, 116, 101, 103, 105, 101, 3, 89, 47, 34, 2, 35, 47, 13, 136, 37, 0, 114, 97, 116, 101, 103, 105,
+			101, 115, 3, 89, 47, 34, 2, 35, 47, 116, 136, 37, 89, 0, 114, 97, 98, 2, 111, 116, 111, 109, 105, 3, 89, 47, 34, 2, 35, 71,
+			0, 114, 97, 102, 2, 114, 101, 103, 116, 101, 3, 89, 47, 34, 2, 35, 83, 0, 114, 117, 107, 116, 2, 117, 3, 89, 47, 34, 2, 111,
+			49, 47, 0, 114, 117, 107, 116, 117, 2, 114, 101, 114, 17, 65, 110, 3, 89, 47, 34, 2, 111, 49, 47, 2, 118, 0, 114, 105, 103, 2,
+			110, 105, 101, 110, 3, 89, 47, 34, 13, 136, 0, 4, 114, 97, 110, 100, 2, 111, 3, 89, 47, 34, 35, 50, 47, 10, 0, 114, 97, 110,
+			100, 8, 2, 101, 114, 17, 67, 0, 114, 101, 115, 2, 32, 3, 89, 47, 34, 108, 89, 0, 114, 97, 97, 116, 1, 21, 2, 32, 14, 129,
+			128, 134, 3, 89, 47, 34, 115, 47, 0, 114, 101, 107, 101, 3, 89, 47, 34, 116, 49, 13, 0, 97, 112, 8, 2, 17, 65, 3, 89, 47,
+			35, 48, 10, 0, 97, 109, 105, 110, 97, 3, 89, 47, 35, 65, 2, 37, 50, 2, 35, 0, 101, 2, 109, 3, 89, 47, 108, 0, 101, 110,
+			2, 115, 105, 108, 3, 89, 47, 108, 50, 0, 101, 109, 112, 101, 108, 3, 89, 47, 108, 65, 48, 13, 55, 0, 111, 114, 109, 3, 89, 47,
+			110, 34, 14, 65, 0, 111, 107, 2, 17, 65, 3, 89, 47, 110, 49, 19, 0, 111, 102, 2, 111, 3, 89, 47, 110, 83, 19, 0, 4, 101,
+			1, 100, 110, 2, 114, 3, 89, 47, 112, 0, 101, 1, 101, 101, 115, 2, 114, 0, 101, 1, 101, 105, 112, 101, 115, 2, 114, 0, 101, 1,
+			101, 105, 115, 105, 118, 2, 114, 0, 101, 1, 101, 114, 17, 65, 109, 2, 114, 0, 101, 1, 101, 119, 101, 115, 2, 114, 0, 101, 1, 103,
+			114, 101, 119, 100, 2, 114, 0, 101, 1, 107, 99, 111, 114, 2, 114, 0, 101, 1, 108, 97, 97, 119, 100, 2, 114, 0, 101, 1, 108, 101,
+			17, 67, 11, 2, 114, 0, 101, 1, 108, 111, 111, 112, 2, 114, 0, 101, 1, 109, 97, 97, 115, 2, 108, 108, 101, 110, 0, 101, 1, 109,
+			108, 105, 102, 2, 114, 0, 101, 1, 110, 101, 101, 116, 2, 108, 108, 101, 110, 0, 101, 1, 112, 111, 112, 2, 114, 0, 101, 1, 114, 101,
+			112, 117, 115, 2, 114, 0, 101, 1, 116, 101, 17, 67, 2, 114, 25, 0, 101, 1, 116, 110, 101, 114, 112, 2, 114, 0, 101, 2, 108, 0,
+			4, 101, 114, 1, 103, 101, 119, 2, 119, 101, 3, 89, 47, 112, 34, 0, 101, 114, 2, 45, 104, 111, 116, 101, 108, 0, 101, 114, 2, 104,
+			111, 116, 101, 108, 0, 101, 114, 2, 119, 101, 110, 100, 0, 101, 114, 8, 0, 101, 114, 114, 101, 3, 89, 47, 112, 34, 13, 0, 101, 114,
+			107, 2, 32, 3, 89, 47, 112, 34, 49, 0, 101, 114, 107, 116, 1, 21, 3, 89, 47, 112, 34, 49, 47, 0, 101, 114, 102, 2, 25, 3,
+			89, 47, 112, 34, 83, 0, 101, 114, 119, 101, 110, 115, 2, 21, 3, 89, 47, 112, 34, 84, 13, 50, 89, 10, 0, 101, 108, 101, 1, 10,
+			2, 102, 111, 3, 89, 47, 112, 55, 13, 0, 4, 101, 114, 1, 107, 105, 119, 107, 3, 89, 47, 113, 34, 0, 101, 114, 1, 107, 111, 98,
+			2, 116, 0, 101, 114, 1, 107, 114, 97, 118, 2, 116, 106, 105, 101, 0, 101, 114, 1, 112, 97, 97, 107, 115, 2, 116, 106, 105, 101, 0,
+			97, 2, 100, 105, 111, 110, 3, 89, 47, 115, 0, 97, 112, 101, 108, 3, 89, 47, 115, 48, 13, 55, 0, 101, 2, 107, 101, 32, 3, 89,
+			47, 116, 0, 101, 107, 101, 2, 108, 105, 103, 3, 89, 47, 116, 49, 13, 0, 101, 107, 101, 114, 1, 17, 67, 3, 89, 47, 116, 49, 13,
+			34, 0, 101, 110, 101, 2, 32, 3, 89, 47, 116, 50, 13, 0, 101, 108, 101, 2, 32, 3, 89, 47, 116, 55, 13, 0, 101, 108, 101, 114,
+			3, 89, 47, 116, 55, 13, 34, 0, 4, 101, 100, 101, 2, 17, 67, 3, 89, 47, 116, 72, 13, 0, 101, 100, 101, 2, 32, 0, 101, 100,
+			105, 110, 103, 3, 89, 47, 116, 72, 13, 68, 0, 101, 119, 101, 108, 3, 89, 47, 116, 84, 13, 55, 0, 111, 116, 101, 110, 101, 3, 89,
+			47, 117, 47, 13, 50, 13, 0, 111, 107, 2, 101, 3, 89, 47, 117, 49, 0, 7, 6, 116, 101, 0, 109, 112, 101, 114, 97, 3, 4, 47,
+			108, 65, 48, 14, 34, 2, 35, 0, 2, 111, 17, 67, 3, 47, 2, 37, 2, 0, 97, 2, 116, 114, 97, 3, 47, 2, 37, 2, 35, 0,
+			97, 116, 101, 114, 3, 47, 2, 37, 115, 47, 13, 34, 0, 114, 97, 2, 112, 17, 65, 3, 47, 2, 108, 34, 2, 35, 0, 114, 97, 1,
+			111, 2, 112, 17, 65, 3, 47, 2, 108, 34, 2, 35, 6, 0, 114, 114, 111, 114, 2, 105, 115, 3, 47, 2, 108, 34, 2, 40, 34, 0,
+			4, 107, 115, 2, 116, 105, 101, 108, 3, 47, 2, 108, 49, 89, 0, 107, 115, 8, 2, 116, 117, 0, 4, 110, 2, 111, 116, 111, 109, 105,
+			101, 3, 47, 2, 108, 50, 0, 110, 2, 116, 97, 107, 101, 108, 0, 110, 2, 116, 111, 111, 110, 0, 110, 100, 101, 110, 115, 3, 47, 2,
+			108, 50, 72, 134, 50, 89, 0, 115, 111, 117, 2, 114, 105, 101, 3, 47, 2, 108, 89, 2, 40, 0, 4, 114, 2, 109, 105, 101, 116, 3,
+			47, 2, 112, 34, 0, 114, 2, 109, 121, 110, 0, 114, 8, 2, 115, 0, 114, 97, 97, 114, 100, 101, 8, 3, 47, 2, 112, 34, 19, 115,
+			34, 72, 13, 0, 114, 112, 101, 110, 2, 116, 121, 110, 3, 47, 2, 112, 34, 48, 13, 50, 0, 114, 109, 105, 2, 110, 97, 21, 3, 47,
+			2, 112, 34, 65, 2, 37, 0, 108, 101, 8, 2, 17, 67, 3, 47, 2, 112, 55, 13, 0, 4, 101, 110, 2, 115, 116, 114, 121, 100, 3,
+			47, 2, 116, 50, 0, 101, 110, 2, 119, 111, 111, 114, 0, 101, 110, 2, 111, 111, 114, 103, 101, 115, 3, 47, 2, 116, 50, 10, 0, 101,
+			110, 115, 2, 119, 111, 111, 114, 3, 47, 2, 116, 50, 89, 0, 4, 1, 17, 67, 21, 2, 114, 103, 101, 110, 100, 3, 47, 6, 112, 0,
+			2, 114, 103, 101, 110, 100, 0, 114, 110, 2, 101, 32, 3, 47, 6, 112, 34, 50, 0, 114, 110, 2, 25, 3, 47, 6, 113, 34, 14, 50,
+			0, 4, 1, 97, 17, 67, 2, 114, 105, 110, 103, 3, 47, 6, 116, 0, 1, 107, 2, 114, 105, 110, 103, 0, 4, 114, 101, 110, 100, 101,
+			1, 101, 112, 2, 32, 3, 47, 6, 116, 34, 13, 50, 72, 13, 0, 114, 101, 110, 100, 101, 1, 105, 2, 32, 0, 114, 101, 110, 100, 101,
+			1, 107, 101, 2, 32, 0, 114, 101, 110, 100, 101, 1, 108, 117, 2, 32, 0, 114, 101, 110, 100, 101, 1, 114, 101, 118, 2, 32, 0, 114,
+			101, 110, 100, 101, 1, 115, 97, 2, 32, 0, 108, 101, 1, 21, 2, 32, 3, 47, 6, 116, 55, 13, 0, 115, 101, 2, 32, 3, 47, 6,
+			116, 89, 13, 0, 115, 101, 115, 2, 32, 3, 47, 6, 116, 89, 13, 89, 0, 4, 117, 114, 1, 17, 65, 3, 47, 6, 128, 34, 0, 117,
+			114, 1, 107, 0, 101, 110, 2, 97, 114, 103, 117, 3, 47, 7, 116, 50, 0, 4, 1, 17, 65, 2, 108, 105, 110, 103, 3, 47, 13, 0,
+			1, 17, 65, 10, 2, 108, 112, 0, 1, 17, 65, 17, 67, 2, 108, 101, 110, 100, 0, 1, 17, 65, 21, 2, 103, 101, 17, 67, 0, 1,
+			17, 67, 21, 2, 17, 67, 0, 1, 17, 67, 21, 2, 109, 97, 114, 107, 0, 1, 21, 2, 111, 112, 0, 1, 97, 119, 2, 114, 105, 110,
+			103, 0, 1, 101, 105, 110, 2, 109, 105, 110, 0, 2, 32, 0, 2, 97, 97, 0, 2, 100, 111, 109, 0, 2, 111, 110, 100, 101, 114, 0,
+			2, 111, 111, 0, 2, 114, 114, 17, 65, 0, 8, 2, 98, 111, 119, 101, 0, 8, 2, 110, 111, 0, 8, 2, 119, 101, 0, 4, 114, 1,
+			10, 2, 116, 17, 65, 21, 3, 47, 13, 34, 0, 114, 1, 21, 2, 116, 121, 100, 0, 114, 1, 97, 119, 2, 116, 0, 114, 8, 2, 108,
+			0, 114, 8, 2, 110, 17, 65, 0, 114, 8, 2, 119, 0, 114, 105, 101, 1, 110, 3, 47, 13, 34, 6, 37, 0, 114, 117, 103, 103, 101,
+			101, 2, 12, 3, 47, 13, 34, 6, 111, 136, 116, 0, 4, 114, 100, 1, 10, 2, 32, 3, 47, 13, 34, 47, 0, 114, 116, 1, 10, 2,
+			114, 0, 114, 116, 106, 105, 101, 1, 10, 3, 47, 13, 34, 49, 37, 0, 114, 109, 101, 115, 1, 10, 3, 47, 13, 34, 65, 108, 89, 0,
+			114, 101, 103, 8, 3, 47, 13, 34, 112, 136, 0, 107, 111, 114, 3, 47, 13, 49, 110, 34, 0, 107, 101, 114, 101, 8, 3, 47, 13, 49,
+			116, 34, 13, 0, 4, 110, 1, 21, 2, 98, 97, 99, 104, 3, 47, 13, 50, 0, 110, 1, 21, 2, 100, 101, 114, 119, 121, 25, 0, 110,
+			105, 115, 3, 47, 13, 50, 109, 89, 0, 110, 97, 97, 114, 3, 47, 13, 50, 115, 34, 0, 4, 108, 1, 10, 2, 32, 3, 47, 13, 55,
+			0, 108, 1, 21, 2, 111, 0, 108, 1, 117, 101, 108, 115, 0, 108, 116, 106, 105, 101, 3, 47, 13, 55, 49, 37, 0, 108, 115, 1, 10,
+			2, 32, 3, 47, 13, 55, 89, 0, 108, 101, 117, 114, 3, 47, 13, 55, 128, 34, 0, 118, 111, 114, 101, 3, 47, 13, 83, 6, 117, 34,
+			13, 0, 118, 101, 114, 8, 2, 21, 3, 47, 13, 83, 13, 34, 0, 115, 97, 109, 101, 3, 47, 13, 89, 115, 65, 13, 0, 103, 101, 8,
+			2, 17, 67, 17, 65, 3, 47, 13, 136, 13, 0, 114, 117, 103, 8, 2, 14, 128, 132, 133, 3, 47, 14, 34, 6, 111, 136, 0, 114, 117,
+			103, 103, 101, 8, 2, 21, 14, 128, 132, 135, 3, 47, 14, 34, 6, 111, 136, 13, 0, 1, 17, 67, 2, 116, 106, 105, 101, 3, 47, 37,
+			0, 2, 107, 107, 105, 101, 12, 3, 47, 108, 0, 114, 114, 105, 195, 171, 114, 3, 47, 108, 34, 37, 13, 34, 0, 107, 115, 2, 12, 3,
+			47, 108, 49, 89, 0, 110, 2, 100, 101, 114, 3, 47, 108, 50, 0, 110, 110, 105, 115, 3, 47, 108, 50, 13, 89, 0, 110, 116, 2, 32,
+			3, 47, 108, 50, 47, 0, 110, 116, 101, 2, 32, 3, 47, 108, 50, 47, 13, 0, 109, 112, 111, 2, 32, 3, 47, 108, 65, 48, 2, 40,
+			0, 109, 112, 101, 114, 3, 47, 108, 65, 48, 13, 34, 0, 109, 112, 101, 108, 3, 47, 108, 65, 48, 13, 55, 0, 4, 1, 17, 67, 21,
+			2, 103, 110, 3, 47, 112, 0, 1, 17, 67, 21, 2, 107, 32, 0, 1, 17, 67, 21, 2, 108, 98, 111, 114, 100, 0, 1, 17, 67, 21,
+			2, 108, 108, 0, 1, 17, 67, 21, 2, 110, 107, 0, 2, 108, 0, 114, 109, 1, 21, 2, 32, 3, 47, 112, 34, 13, 65, 0, 114, 114,
+			97, 2, 99, 3, 47, 112, 34, 35, 0, 114, 116, 1, 10, 3, 47, 112, 34, 47, 0, 114, 109, 101, 1, 21, 2, 32, 3, 47, 112, 34,
+			65, 13, 0, 114, 116, 105, 8, 2, 17, 65, 25, 3, 47, 112, 34, 91, 57, 0, 108, 1, 101, 103, 2, 32, 3, 47, 112, 55, 0, 4,
+			108, 101, 1, 21, 2, 102, 111, 3, 47, 112, 55, 13, 0, 108, 101, 1, 21, 2, 103, 114, 97, 0, 108, 101, 107, 115, 3, 47, 112, 55,
+			108, 49, 89, 0, 4, 114, 116, 1, 115, 10, 2, 97, 97, 110, 3, 47, 113, 34, 47, 0, 114, 116, 1, 115, 10, 2, 101, 32, 0, 4,
+			1, 21, 2, 102, 105, 101, 32, 3, 47, 116, 0, 1, 21, 2, 108, 101, 114, 0, 1, 110, 105, 115, 2, 116, 105, 0, 1, 110, 121, 109,
+			2, 114, 105, 110, 103, 0, 1, 115, 2, 107, 105, 110, 103, 0, 4, 114, 105, 110, 103, 1, 115, 101, 108, 111, 109, 3, 47, 116, 34, 13,
+			68, 0, 114, 105, 110, 103, 8, 0, 4, 107, 1, 21, 2, 101, 110, 3, 47, 116, 49, 0, 107, 1, 112, 97, 2, 17, 65, 0, 107, 101,
+			110, 2, 17, 65, 3, 47, 116, 49, 13, 50, 0, 108, 101, 114, 8, 3, 47, 116, 55, 13, 34, 0, 119, 101, 2, 32, 3, 47, 116, 84,
+			13, 0, 119, 101, 110, 115, 8, 3, 47, 116, 84, 13, 50, 89, 0, 115, 105, 2, 115, 3, 47, 116, 89, 13, 0, 105, 107, 101, 110, 3,
+			47, 123, 49, 13, 50, 0, 7, 6, 116, 114, 0, 101, 107, 101, 110, 3, 47, 10, 34, 116, 49, 13, 50, 0, 97, 2, 106, 101, 107, 3,
+			47, 34, 2, 35, 0, 97, 112, 2, 115, 111, 101, 3, 47, 34, 2, 35, 48, 0, 97, 107, 8, 2, 116, 97, 3, 47, 34, 2, 35, 49,
+			0, 4, 97, 110, 115, 8, 2, 21, 14, 128, 132, 133, 3, 47, 34, 2, 35, 50, 89, 0, 97, 110, 115, 8, 2, 97, 107, 115, 105, 101,
+			0, 97, 110, 115, 101, 110, 100, 101, 110, 116, 2, 17, 65, 3, 47, 34, 2, 35, 50, 89, 2, 108, 50, 72, 2, 108, 50, 47, 0, 97,
+			110, 115, 105, 116, 111, 3, 47, 34, 2, 35, 50, 89, 37, 47, 2, 40, 0, 97, 110, 115, 112, 97, 2, 114, 97, 110, 116, 3, 47, 34,
+			2, 35, 50, 89, 48, 13, 0, 97, 110, 115, 112, 111, 114, 116, 3, 47, 34, 2, 35, 50, 89, 48, 110, 34, 47, 0, 97, 110, 115, 105,
+			115, 116, 111, 114, 3, 47, 34, 2, 35, 50, 89, 109, 89, 47, 13, 34, 0, 97, 100, 105, 2, 115, 105, 3, 47, 34, 2, 35, 72, 37,
+			0, 97, 103, 2, 101, 100, 3, 47, 34, 2, 35, 136, 0, 105, 2, 111, 109, 102, 3, 47, 34, 2, 37, 0, 105, 111, 109, 102, 2, 97,
+			110, 116, 3, 47, 34, 2, 37, 2, 110, 65, 83, 0, 4, 111, 2, 116, 115, 101, 101, 114, 3, 47, 34, 2, 110, 0, 111, 2, 116, 115,
+			101, 114, 105, 110, 103, 0, 4, 111, 109, 8, 2, 98, 3, 47, 34, 2, 110, 65, 0, 111, 109, 8, 2, 112, 101, 116, 0, 111, 103, 108,
+			111, 2, 100, 105, 101, 3, 47, 34, 2, 110, 136, 55, 2, 40, 0, 117, 2, 115, 116, 101, 101, 3, 47, 34, 2, 111, 0, 97, 103, 101,
+			2, 111, 116, 111, 109, 105, 3, 47, 34, 2, 115, 136, 2, 37, 0, 105, 115, 101, 1, 21, 2, 32, 3, 47, 34, 6, 37, 89, 13, 0,
+			105, 115, 101, 115, 1, 21, 2, 32, 3, 47, 34, 6, 37, 89, 13, 89, 0, 101, 101, 114, 1, 21, 3, 47, 34, 6, 116, 34, 0, 111,
+			117, 115, 115, 101, 97, 117, 3, 47, 34, 7, 40, 12, 89, 120, 0, 105, 8, 2, 98, 117, 3, 47, 34, 13, 0, 105, 108, 2, 106, 111,
+			101, 110, 3, 47, 34, 13, 55, 0, 105, 98, 117, 8, 2, 110, 97, 3, 47, 34, 13, 71, 2, 118, 0, 97, 112, 2, 111, 114, 114, 3,
+			47, 34, 35, 48, 10, 0, 97, 119, 2, 97, 3, 47, 34, 35, 84, 6, 0, 105, 111, 2, 32, 3, 47, 34, 37, 12, 40, 0, 101, 102,
+			2, 97, 102, 115, 3, 47, 34, 108, 83, 10, 0, 105, 118, 105, 97, 3, 47, 34, 109, 84, 37, 57, 2, 35, 0, 101, 2, 107, 3, 47,
+			34, 112, 0, 101, 107, 107, 101, 114, 3, 47, 34, 112, 49, 13, 34, 0, 97, 110, 115, 8, 2, 100, 97, 110, 115, 3, 47, 34, 115, 50,
+			89, 0, 101, 101, 114, 1, 21, 2, 17, 65, 3, 47, 34, 116, 34, 0, 101, 100, 105, 110, 103, 1, 10, 3, 47, 34, 116, 72, 13, 68,
+			0, 4, 117, 2, 112, 114, 111, 106, 101, 107, 3, 47, 34, 118, 0, 117, 2, 115, 112, 105, 101, 195, 171, 0, 117, 107, 2, 97, 97, 116,
+			115, 3, 47, 34, 118, 49, 0, 101, 110, 115, 2, 32, 3, 47, 34, 134, 50, 89, 0, 7, 6, 117, 105, 0, 116, 2, 100, 97, 103, 101,
+			110, 3, 2, 127, 0, 4, 116, 2, 98, 117, 110, 100, 3, 2, 127, 47, 0, 116, 2, 100, 114, 117, 107, 0, 116, 2, 104, 117, 105, 115,
+			105, 103, 0, 116, 2, 109, 117, 110, 116, 101, 110, 0, 116, 2, 115, 108, 117, 105, 116, 101, 110, 0, 116, 2, 115, 112, 97, 116, 116, 0,
+			116, 2, 115, 116, 101, 107, 101, 110, 0, 116, 2, 118, 111, 101, 114, 98, 97, 0, 116, 2, 118, 111, 101, 114, 105, 103, 0, 116, 2, 119,
+			105, 115, 98, 97, 0, 116, 2, 101, 101, 110, 3, 2, 127, 47, 10, 0, 116, 101, 101, 110, 2, 108, 111, 112, 3, 2, 127, 47, 10, 2,
+			116, 50, 0, 116, 109, 101, 2, 107, 97, 97, 114, 3, 2, 127, 47, 65, 13, 0, 116, 115, 116, 97, 97, 110, 2, 17, 67, 3, 2, 127,
+			47, 89, 47, 115, 50, 0, 116, 115, 112, 114, 101, 101, 107, 108, 3, 2, 127, 47, 89, 48, 34, 116, 49, 55, 0, 116, 115, 112, 97, 116,
+			108, 105, 107, 3, 2, 127, 47, 89, 48, 35, 47, 55, 13, 49, 0, 116, 115, 108, 117, 105, 116, 108, 105, 107, 3, 2, 127, 47, 89, 55,
+			127, 47, 55, 13, 49, 0, 116, 115, 111, 110, 100, 101, 114, 108, 105, 2, 107, 3, 2, 127, 47, 89, 110, 50, 13, 34, 55, 13, 0, 116,
+			101, 105, 110, 100, 101, 108, 105, 3, 2, 127, 47, 123, 50, 72, 13, 55, 13, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 6, 127, 47,
+			0, 116, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 6, 127, 47, 136, 13, 0, 116, 103, 101, 101, 2, 12, 3, 6, 127, 47, 136, 116,
+			0, 4, 3, 127, 0, 2, 116, 106, 105, 101, 0, 101, 2, 17, 67, 3, 127, 13, 0, 4, 116, 2, 100, 114, 117, 107, 32, 24, 3, 127,
+			47, 0, 116, 2, 100, 114, 117, 107, 107, 105, 110, 103, 32, 0, 116, 2, 100, 114, 117, 107, 107, 105, 110, 103, 115, 0, 116, 2, 101, 101,
+			110, 108, 111, 111, 112, 3, 127, 47, 10, 0, 116, 101, 114, 3, 127, 47, 13, 34, 0, 116, 105, 110, 103, 3, 127, 47, 13, 68, 0, 116,
+			107, 101, 2, 110, 3, 127, 47, 49, 108, 0, 116, 115, 116, 97, 97, 110, 2, 114, 3, 127, 47, 89, 47, 115, 50, 0, 116, 103, 101, 119,
+			101, 114, 3, 127, 47, 136, 2, 116, 84, 13, 34, 0, 116, 103, 101, 119, 101, 114, 112, 3, 127, 47, 136, 13, 84, 112, 34, 48, 0, 116,
+			103, 101, 119, 101, 114, 107, 3, 127, 47, 136, 13, 84, 112, 34, 49, 0, 7, 6, 118, 101, 0, 4, 1, 21, 2, 32, 3, 21, 0, 115,
+			1, 17, 65, 2, 32, 0, 116, 101, 2, 114, 97, 3, 83, 2, 108, 47, 13, 0, 114, 116, 105, 2, 107, 97, 3, 83, 2, 112, 34, 47,
+			2, 37, 0, 4, 101, 108, 2, 100, 117, 105, 100, 3, 83, 2, 116, 55, 0, 101, 108, 2, 106, 97, 114, 0, 101, 108, 2, 115, 21, 21,
+			0, 114, 2, 107, 121, 107, 101, 114, 3, 83, 6, 113, 34, 0, 114, 103, 101, 115, 111, 103, 8, 3, 83, 6, 113, 34, 38, 136, 13, 89,
+			110, 136, 0, 114, 101, 110, 100, 2, 32, 3, 83, 6, 116, 34, 13, 50, 47, 0, 114, 101, 110, 100, 101, 3, 83, 6, 116, 34, 13, 50,
+			72, 13, 0, 114, 105, 110, 103, 3, 83, 6, 116, 34, 13, 68, 0, 108, 101, 3, 83, 6, 116, 55, 13, 0, 114, 115, 102, 8, 3, 83,
+			7, 112, 34, 89, 83, 0, 114, 2, 115, 112, 114, 105, 110, 103, 3, 83, 7, 113, 34, 0, 4, 114, 3, 83, 13, 34, 0, 114, 2, 102,
+			108, 101, 110, 17, 67, 0, 114, 2, 102, 114, 105, 115, 0, 114, 2, 118, 101, 108, 17, 65, 0, 114, 8, 2, 21, 14, 128, 132, 131, 0,
+			114, 97, 110, 116, 2, 119, 3, 83, 13, 34, 2, 35, 50, 47, 0, 114, 111, 110, 103, 101, 8, 2, 21, 14, 128, 132, 135, 3, 83, 13,
+			34, 6, 131, 68, 136, 13, 0, 4, 114, 97, 110, 116, 2, 119, 111, 111, 114, 100, 32, 3, 83, 13, 34, 10, 35, 50, 47, 0, 114, 97,
+			110, 116, 2, 119, 111, 111, 114, 100, 101, 32, 24, 0, 114, 101, 114, 2, 105, 110, 103, 3, 83, 13, 34, 10, 116, 34, 0, 114, 116, 101,
+			2, 108, 3, 83, 13, 34, 47, 112, 0, 114, 116, 101, 114, 2, 17, 65, 3, 83, 13, 34, 47, 116, 34, 0, 114, 108, 97, 110, 103, 115,
+			2, 97, 3, 83, 13, 34, 55, 6, 35, 68, 89, 0, 114, 98, 101, 116, 101, 3, 83, 13, 34, 71, 6, 116, 47, 13, 0, 114, 98, 121,
+			3, 83, 13, 34, 71, 123, 0, 4, 114, 102, 2, 105, 3, 83, 13, 34, 83, 0, 114, 102, 2, 114, 97, 97, 105, 0, 114, 102, 2, 114,
+			111, 109, 0, 114, 102, 8, 2, 108, 111, 117, 0, 114, 102, 8, 2, 111, 0, 114, 118, 101, 114, 115, 105, 110, 103, 3, 83, 13, 34, 83,
+			6, 112, 34, 89, 13, 68, 0, 114, 102, 121, 110, 3, 83, 13, 34, 83, 6, 123, 50, 0, 114, 115, 116, 101, 114, 1, 21, 2, 107, 3,
+			83, 13, 34, 89, 47, 112, 34, 0, 114, 111, 110, 100, 101, 114, 115, 116, 101, 2, 108, 3, 83, 13, 34, 110, 50, 13, 34, 89, 47, 6,
+			112, 0, 114, 103, 101, 116, 101, 3, 83, 13, 34, 136, 6, 116, 47, 13, 0, 114, 103, 101, 119, 101, 8, 3, 83, 13, 34, 136, 116, 84,
+			13, 0, 4, 110, 2, 100, 117, 115, 105, 101, 3, 83, 13, 50, 0, 110, 2, 121, 110, 0, 2, 115, 116, 3, 83, 108, 0, 116, 8, 2,
+			17, 65, 3, 83, 108, 47, 10, 0, 2, 108, 3, 83, 112, 0, 114, 2, 103, 101, 115, 105, 103, 3, 83, 112, 34, 0, 4, 114, 102, 3,
+			83, 112, 34, 83, 0, 114, 102, 2, 21, 0, 114, 119, 101, 2, 32, 3, 83, 112, 34, 84, 13, 0, 114, 119, 101, 114, 2, 32, 3, 83,
+			112, 34, 84, 13, 34, 0, 114, 119, 101, 114, 121, 3, 83, 112, 34, 84, 13, 34, 2, 123, 0, 114, 119, 101, 114, 115, 3, 83, 112, 34,
+			84, 13, 34, 89, 0, 4, 114, 115, 1, 21, 2, 32, 3, 83, 112, 34, 89, 0, 114, 115, 1, 21, 2, 101, 32, 0, 114, 115, 2, 100,
+			0, 114, 115, 2, 107, 117, 110, 115, 0, 114, 115, 2, 114, 0, 114, 115, 2, 118, 0, 114, 115, 8, 2, 98, 0, 114, 115, 101, 1, 17,
+			67, 2, 32, 3, 83, 112, 34, 89, 13, 0, 108, 100, 2, 17, 67, 3, 83, 112, 55, 47, 0, 4, 108, 100, 2, 101, 107, 115, 3, 83,
+			112, 55, 47, 10, 0, 108, 100, 2, 111, 0, 4, 103, 2, 101, 101, 110, 3, 83, 112, 136, 10, 0, 103, 2, 111, 0, 4, 114, 1, 17,
+			67, 21, 2, 32, 3, 83, 113, 34, 0, 114, 2, 114, 101, 105, 107, 0, 114, 2, 115, 105, 101, 32, 0, 114, 2, 115, 105, 101, 115, 32,
+			0, 114, 108, 97, 110, 103, 115, 8, 3, 83, 113, 34, 55, 35, 68, 89, 0, 4, 114, 115, 2, 107, 97, 108, 17, 67, 3, 83, 113, 34,
+			89, 0, 114, 115, 2, 112, 97, 110, 111, 114, 0, 114, 115, 2, 97, 108, 98, 117, 109, 3, 83, 113, 34, 89, 10, 0, 114, 115, 101, 2,
+			98, 3, 83, 113, 34, 89, 13, 0, 114, 103, 101, 2, 115, 116, 114, 101, 107, 3, 83, 113, 34, 136, 13, 0, 4, 114, 101, 2, 32, 3,
+			83, 116, 34, 13, 0, 114, 101, 2, 98, 0, 114, 101, 2, 100, 111, 0, 114, 101, 2, 104, 0, 114, 101, 2, 107, 0, 114, 101, 2, 109,
+			0, 114, 101, 2, 115, 116, 111, 0, 114, 101, 2, 118, 0, 4, 116, 111, 8, 2, 114, 101, 103, 3, 83, 116, 47, 2, 40, 0, 116, 111,
+			8, 2, 115, 116, 101, 109, 0, 116, 101, 2, 29, 3, 83, 116, 47, 13, 0, 116, 101, 114, 2, 25, 3, 83, 116, 47, 13, 34, 0, 108,
+			1, 21, 2, 17, 65, 3, 83, 116, 55, 0, 110, 2, 115, 116, 101, 114, 3, 83, 134, 50, 0, 114, 105, 102, 105, 2, 21, 3, 84, 2,
+			108, 34, 2, 37, 83, 2, 37, 0, 110, 2, 100, 101, 116, 116, 97, 3, 84, 2, 108, 50, 0, 4, 114, 2, 98, 97, 97, 108, 3, 84,
+			2, 112, 34, 0, 114, 2, 98, 97, 108, 17, 65, 0, 114, 115, 105, 102, 105, 2, 17, 67, 3, 84, 2, 112, 34, 89, 2, 37, 83, 2,
+			37, 0, 114, 115, 101, 1, 17, 65, 25, 2, 32, 3, 84, 6, 112, 34, 89, 13, 0, 114, 97, 110, 100, 97, 3, 84, 13, 34, 35, 50,
+			72, 35, 0, 114, 98, 101, 110, 97, 3, 84, 13, 34, 71, 116, 50, 2, 35, 0, 110, 101, 2, 115, 105, 17, 65, 3, 84, 13, 50, 37,
+			12, 0, 114, 1, 111, 114, 116, 2, 25, 3, 84, 112, 34, 0, 2, 110, 117, 115, 3, 84, 116, 0, 7, 6, 118, 111, 0, 114, 2, 32,
+			3, 21, 0, 4, 2, 107, 97, 3, 83, 2, 40, 0, 8, 2, 109, 101, 0, 2, 108, 17, 67, 3, 83, 2, 110, 0, 4, 108, 2, 98,
+			114, 105, 110, 103, 3, 83, 2, 110, 55, 0, 108, 2, 103, 114, 111, 101, 105, 0, 108, 2, 107, 111, 109, 101, 0, 108, 2, 101, 105, 110,
+			100, 105, 103, 3, 83, 2, 110, 55, 10, 0, 108, 108, 101, 2, 100, 105, 103, 3, 83, 2, 110, 55, 116, 0, 4, 111, 114, 2, 107, 111,
+			109, 98, 97, 3, 83, 2, 117, 34, 0, 111, 114, 2, 115, 105, 101, 0, 111, 114, 2, 115, 112, 111, 101, 100, 105, 0, 111, 114, 8, 2,
+			100, 101, 108, 105, 103, 0, 111, 114, 8, 2, 107, 111, 109, 17, 65, 0, 4, 111, 114, 2, 97, 102, 103, 97, 97, 110, 3, 83, 2, 117,
+			34, 10, 0, 111, 114, 116, 2, 100, 117, 114, 101, 110, 0, 111, 114, 116, 2, 118, 21, 21, 3, 83, 2, 117, 34, 47, 0, 111, 114, 119,
+			97, 97, 114, 100, 101, 2, 32, 3, 83, 2, 117, 34, 84, 115, 34, 72, 13, 0, 111, 114, 115, 116, 101, 100, 101, 108, 105, 2, 107, 3,
+			83, 2, 117, 34, 89, 47, 116, 72, 13, 55, 13, 0, 111, 114, 115, 107, 114, 105, 102, 116, 101, 108, 105, 2, 107, 3, 83, 2, 117, 34,
+			89, 49, 34, 109, 83, 47, 13, 55, 13, 0, 111, 103, 2, 100, 121, 3, 83, 2, 117, 136, 0, 101, 114, 105, 103, 1, 21, 3, 83, 6,
+			40, 34, 13, 136, 0, 108, 111, 112, 3, 83, 6, 110, 55, 10, 110, 48, 0, 114, 101, 110, 3, 83, 6, 117, 34, 13, 50, 0, 111, 114,
+			98, 101, 8, 2, 21, 14, 128, 132, 134, 3, 83, 6, 117, 34, 71, 13, 0, 111, 114, 103, 101, 8, 2, 21, 14, 128, 132, 134, 3, 83,
+			6, 117, 34, 136, 13, 0, 108, 2, 109, 97, 103, 3, 83, 7, 110, 55, 0, 4, 2, 108, 108, 17, 65, 32, 3, 83, 110, 0, 2, 108,
+			108, 101, 114, 0, 114, 109, 3, 83, 110, 34, 13, 65, 0, 114, 115, 116, 105, 2, 110, 3, 83, 110, 34, 89, 47, 6, 109, 0, 4, 108,
+			2, 98, 3, 83, 110, 55, 0, 108, 2, 103, 0, 108, 2, 104, 111, 117, 32, 0, 108, 2, 109, 97, 97, 110, 0, 108, 2, 109, 97, 110,
+			101, 0, 108, 2, 112, 114, 111, 112, 0, 108, 2, 114, 0, 108, 2, 115, 105, 17, 67, 0, 108, 2, 115, 116, 101, 32, 0, 108, 2, 115,
+			116, 111, 0, 108, 8, 2, 115, 107, 0, 108, 108, 101, 115, 2, 32, 3, 83, 110, 55, 13, 89, 0, 108, 116, 121, 100, 115, 3, 83, 110,
+			55, 47, 123, 47, 89, 0, 108, 107, 3, 83, 110, 55, 49, 0, 108, 107, 101, 3, 83, 110, 55, 49, 13, 0, 108, 119, 97, 115, 115, 101,
+			3, 83, 110, 55, 84, 6, 35, 89, 13, 0, 108, 108, 2, 101, 110, 103, 116, 101, 3, 83, 110, 55, 108, 0, 4, 111, 114, 2, 115, 107,
+			3, 83, 117, 34, 0, 111, 114, 2, 116, 114, 97, 112, 0, 111, 114, 2, 116, 114, 101, 107, 0, 111, 114, 8, 2, 98, 101, 101, 12, 0,
+			111, 114, 2, 17, 65, 3, 83, 117, 34, 10, 0, 111, 114, 117, 105, 116, 8, 3, 83, 117, 34, 10, 6, 127, 47, 0, 111, 114, 98, 97,
+			114, 3, 83, 117, 34, 71, 6, 115, 34, 0, 111, 114, 119, 97, 97, 114, 100, 101, 2, 32, 24, 3, 83, 117, 34, 84, 115, 34, 72, 13,
+			0, 111, 114, 115, 112, 101, 2, 108, 25, 3, 83, 117, 34, 89, 48, 6, 112, 0, 111, 114, 117, 105, 116, 2, 115, 116, 114, 101, 119, 3,
+			83, 117, 34, 127, 47, 6, 0, 108, 117, 109, 101, 3, 84, 2, 110, 55, 118, 65, 13, 0, 100, 107, 97, 3, 84, 110, 47, 49, 35, 0,
+			7, 6, 119, 101, 0, 8, 2, 108, 108, 21, 21, 3, 84, 2, 112, 0, 114, 107, 2, 115, 116, 101, 108, 108, 105, 3, 84, 2, 112, 34,
+			49, 0, 4, 108, 2, 115, 107, 97, 112, 101, 3, 84, 2, 112, 55, 0, 108, 2, 115, 112, 114, 101, 107, 101, 110, 0, 108, 2, 119, 105,
+			108, 0, 108, 8, 2, 114, 0, 108, 8, 2, 118, 0, 108, 8, 2, 101, 100, 101, 108, 3, 84, 2, 112, 55, 10, 0, 108, 98, 101, 104,
+			97, 97, 103, 108, 105, 107, 3, 84, 2, 112, 55, 71, 13, 107, 115, 136, 55, 13, 49, 0, 101, 2, 109, 111, 101, 100, 105, 3, 84, 2,
+			116, 0, 4, 101, 114, 2, 98, 97, 114, 115, 116, 3, 84, 2, 116, 34, 0, 101, 114, 2, 104, 111, 117, 0, 101, 114, 2, 107, 97, 97,
+			116, 115, 0, 101, 114, 2, 108, 101, 103, 0, 101, 114, 2, 108, 195, 170, 0, 101, 114, 2, 115, 116, 97, 97, 110, 0, 101, 114, 2, 115,
+			116, 114, 101, 119, 0, 101, 116, 2, 103, 105, 101, 114, 105, 103, 3, 84, 2, 116, 47, 0, 100, 101, 114, 2, 118, 97, 3, 84, 2, 116,
+			72, 13, 34, 0, 107, 107, 101, 110, 100, 1, 21, 3, 84, 6, 108, 49, 13, 50, 47, 0, 107, 107, 101, 110, 100, 101, 1, 21, 3, 84,
+			6, 108, 49, 13, 50, 72, 13, 0, 110, 100, 105, 103, 1, 21, 3, 84, 6, 108, 50, 72, 13, 136, 0, 103, 103, 101, 8, 2, 17, 67,
+			21, 14, 128, 132, 133, 3, 84, 6, 112, 136, 13, 0, 115, 105, 103, 104, 101, 105, 100, 1, 21, 3, 84, 6, 116, 89, 13, 136, 123, 47,
+			0, 114, 1, 17, 65, 2, 17, 65, 17, 65, 3, 84, 13, 34, 0, 110, 101, 1, 10, 2, 32, 3, 84, 13, 50, 13, 0, 110, 115, 1,
+			101, 110, 3, 84, 13, 50, 89, 0, 1, 17, 67, 21, 2, 116, 25, 3, 84, 108, 0, 4, 100, 1, 21, 2, 115, 116, 114, 3, 84, 108,
+			47, 0, 100, 1, 115, 2, 17, 67, 0, 100, 121, 119, 101, 114, 3, 84, 108, 47, 123, 84, 13, 34, 0, 110, 8, 2, 97, 17, 67, 3,
+			84, 108, 50, 19, 0, 98, 8, 3, 84, 108, 71, 0, 100, 100, 1, 115, 2, 21, 3, 84, 108, 72, 0, 114, 112, 3, 84, 112, 34, 48,
+			0, 114, 107, 1, 116, 3, 84, 112, 34, 49, 0, 114, 119, 101, 108, 3, 84, 112, 34, 84, 13, 55, 0, 108, 2, 118, 97, 97, 114, 116,
+			3, 84, 112, 55, 0, 108, 8, 2, 111, 112, 3, 84, 112, 55, 10, 0, 108, 102, 2, 32, 3, 84, 112, 55, 83, 0, 4, 103, 1, 21,
+			2, 32, 3, 84, 112, 136, 0, 103, 1, 114, 111, 111, 112, 115, 0, 103, 1, 25, 2, 111, 3, 84, 112, 136, 10, 0, 101, 114, 1, 115,
+			17, 65, 2, 32, 3, 84, 116, 34, 0, 101, 114, 8, 2, 115, 112, 3, 84, 116, 34, 6, 0, 114, 101, 1, 101, 103, 3, 84, 116, 34,
+			13, 0, 114, 105, 110, 103, 1, 17, 67, 21, 2, 32, 3, 84, 116, 34, 13, 68, 0, 116, 101, 110, 2, 17, 67, 3, 84, 116, 47, 13,
+			50, 0, 107, 101, 8, 2, 17, 67, 3, 84, 116, 49, 13, 0, 101, 115, 1, 21, 2, 32, 3, 84, 116, 89, 0, 105, 102, 101, 2, 108,
+			3, 84, 123, 83, 13, 0, 4, 110, 115, 1, 107, 117, 108, 3, 84, 134, 50, 89, 0, 110, 115, 1, 115, 101, 101, 102, 0, 7, 6, 97,
+			0, 4, 1, 17, 67, 2, 17, 67, 115, 105, 101, 114, 3, 2, 35, 0, 1, 17, 67, 2, 114, 105, 110, 97, 0, 1, 17, 67, 2, 116,
+			101, 114, 105, 110, 103, 0, 1, 17, 67, 11, 2, 32, 0, 1, 17, 67, 17, 65, 2, 32, 0, 1, 17, 67, 21, 2, 116, 105, 101, 102,
+			0, 1, 17, 67, 21, 2, 116, 105, 101, 119, 101, 0, 1, 21, 2, 17, 67, 105, 115, 97, 115, 105, 101, 0, 1, 21, 2, 17, 67, 105,
+			115, 101, 101, 114, 0, 1, 21, 2, 17, 67, 105, 115, 101, 114, 105, 110, 103, 0, 1, 98, 10, 2, 32, 0, 1, 100, 2, 103, 111, 103,
+			103, 101, 110, 0, 1, 100, 10, 2, 32, 0, 1, 105, 2, 32, 0, 1, 105, 2, 116, 105, 101, 17, 67, 0, 1, 106, 2, 112, 97, 110,
+			0, 1, 109, 21, 2, 116, 105, 101, 107, 0, 1, 109, 114, 10, 2, 32, 0, 1, 114, 10, 2, 32, 0, 1, 116, 10, 2, 32, 24, 0,
+			2, 17, 67, 17, 65, 17, 65, 0, 2, 17, 67, 121, 0, 2, 102, 102, 108, 105, 107, 0, 2, 103, 105, 116, 17, 65, 0, 2, 103, 111,
+			110, 105, 101, 0, 2, 103, 117, 114, 107, 105, 101, 0, 2, 107, 107, 111, 111, 114, 100, 0, 2, 108, 97, 114, 109, 0, 2, 108, 105, 115,
+			109, 101, 0, 2, 108, 105, 116, 101, 105, 116, 0, 2, 109, 101, 110, 116, 0, 2, 114, 105, 115, 116, 111, 107, 114, 0, 2, 115, 105, 101,
+			108, 0, 2, 115, 112, 101, 114, 115, 105, 101, 0, 2, 116, 111, 109, 17, 65, 0, 8, 2, 98, 17, 67, 0, 8, 2, 102, 102, 17, 65,
+			0, 8, 2, 107, 117, 0, 8, 2, 107, 119, 97, 116, 0, 8, 2, 108, 17, 65, 0, 8, 2, 108, 108, 111, 111, 105, 0, 8, 2, 108,
+			108, 117, 0, 8, 2, 112, 17, 67, 0, 8, 2, 112, 111, 0, 8, 2, 115, 116, 114, 17, 65, 0, 8, 107, 2, 110, 17, 65, 0, 102,
+			2, 118, 97, 108, 108, 105, 103, 0, 4, 114, 1, 25, 2, 112, 117, 105, 115, 3, 2, 35, 34, 0, 114, 2, 103, 97, 195, 175, 0, 114,
+			2, 109, 111, 101, 100, 105, 103, 0, 114, 2, 115, 101, 101, 110, 0, 114, 2, 116, 105, 107, 101, 108, 0, 114, 8, 2, 103, 105, 0, 114,
+			8, 2, 111, 109, 0, 114, 97, 2, 98, 105, 101, 114, 3, 2, 35, 34, 2, 35, 0, 114, 97, 98, 101, 2, 115, 107, 3, 2, 35, 34,
+			2, 35, 71, 108, 0, 114, 101, 2, 111, 108, 17, 65, 3, 2, 35, 34, 2, 37, 0, 114, 114, 111, 2, 103, 3, 2, 35, 34, 2, 40,
+			0, 114, 121, 1, 108, 101, 107, 107, 111, 109, 115, 21, 21, 21, 3, 2, 35, 34, 2, 123, 0, 114, 114, 101, 2, 115, 116, 17, 65, 3,
+			2, 35, 34, 13, 0, 4, 114, 109, 2, 108, 97, 115, 116, 3, 2, 35, 34, 14, 65, 0, 114, 109, 2, 115, 97, 108, 105, 103, 0, 114,
+			116, 105, 107, 117, 3, 2, 35, 34, 47, 2, 37, 49, 2, 118, 0, 114, 116, 101, 2, 102, 97, 107, 3, 2, 35, 34, 47, 13, 0, 114,
+			116, 105, 108, 108, 101, 2, 114, 105, 101, 3, 2, 35, 34, 47, 13, 55, 13, 0, 114, 116, 101, 8, 2, 114, 105, 3, 2, 35, 34, 47,
+			116, 0, 114, 115, 101, 2, 110, 97, 3, 2, 35, 34, 89, 13, 0, 114, 114, 101, 115, 2, 32, 3, 2, 35, 34, 108, 89, 0, 114, 97,
+			2, 98, 105, 3, 2, 35, 34, 115, 0, 114, 101, 110, 97, 2, 25, 12, 3, 2, 35, 34, 116, 50, 2, 35, 0, 114, 103, 2, 108, 105,
+			115, 116, 3, 2, 35, 34, 136, 0, 114, 103, 105, 116, 101, 107, 3, 2, 35, 34, 136, 2, 37, 47, 108, 49, 0, 114, 103, 101, 2, 116,
+			105, 112, 3, 2, 35, 34, 136, 13, 0, 114, 103, 101, 110, 2, 116, 17, 65, 3, 2, 35, 34, 136, 13, 50, 0, 4, 100, 2, 118, 105,
+			101, 115, 3, 2, 35, 47, 0, 116, 2, 108, 97, 110, 116, 0, 116, 2, 108, 101, 0, 116, 116, 101, 115, 116, 2, 17, 65, 3, 2, 35,
+			47, 2, 108, 89, 47, 0, 116, 111, 114, 105, 101, 115, 1, 21, 3, 2, 35, 47, 6, 117, 34, 37, 89, 0, 4, 116, 101, 1, 115, 2,
+			108, 3, 2, 35, 47, 13, 0, 116, 104, 101, 1, 17, 67, 2, 114, 105, 110, 97, 0, 116, 114, 111, 2, 102, 105, 101, 3, 2, 35, 47,
+			34, 2, 40, 0, 116, 116, 114, 105, 98, 2, 117, 3, 2, 35, 47, 34, 13, 71, 0, 116, 108, 101, 2, 116, 105, 101, 107, 3, 2, 35,
+			47, 55, 13, 0, 100, 109, 105, 2, 114, 3, 2, 35, 47, 65, 2, 37, 0, 116, 109, 111, 2, 115, 102, 101, 3, 2, 35, 47, 65, 2,
+			110, 0, 100, 109, 105, 110, 105, 3, 2, 35, 47, 65, 13, 50, 13, 0, 100, 109, 105, 2, 115, 115, 105, 101, 3, 2, 35, 47, 65, 37,
+			0, 116, 101, 108, 2, 106, 101, 101, 3, 2, 35, 47, 114, 0, 112, 111, 2, 107, 114, 105, 101, 17, 67, 3, 2, 35, 48, 2, 40, 0,
+			112, 111, 107, 97, 2, 108, 3, 2, 35, 48, 2, 110, 49, 2, 35, 0, 112, 111, 108, 111, 103, 2, 17, 65, 3, 2, 35, 48, 2, 110,
+			55, 2, 40, 136, 0, 112, 112, 101, 2, 108, 108, 17, 65, 3, 2, 35, 48, 13, 0, 112, 112, 97, 114, 2, 17, 65, 3, 2, 35, 48,
+			13, 34, 0, 112, 112, 101, 108, 8, 2, 107, 111, 21, 3, 2, 35, 48, 13, 55, 0, 112, 111, 115, 116, 111, 2, 108, 105, 101, 3, 2,
+			35, 48, 13, 89, 47, 117, 0, 112, 112, 114, 111, 112, 114, 105, 2, 17, 65, 3, 2, 35, 48, 34, 2, 117, 48, 34, 2, 37, 0, 112,
+			97, 114, 116, 3, 2, 35, 48, 35, 34, 47, 0, 112, 112, 108, 105, 2, 107, 97, 110, 116, 3, 2, 35, 48, 55, 2, 37, 0, 98, 115,
+			111, 2, 108, 117, 3, 2, 35, 48, 89, 2, 40, 0, 98, 115, 101, 2, 115, 3, 2, 35, 48, 89, 108, 0, 112, 112, 101, 110, 2, 100,
+			105, 17, 67, 3, 2, 35, 48, 108, 50, 0, 107, 2, 115, 121, 110, 3, 2, 35, 49, 0, 107, 111, 2, 17, 67, 105, 101, 116, 3, 2,
+			35, 49, 2, 40, 0, 107, 107, 111, 109, 109, 111, 2, 100, 3, 2, 35, 49, 2, 110, 65, 13, 0, 107, 107, 117, 2, 114, 97, 3, 2,
+			35, 49, 2, 118, 0, 107, 97, 2, 100, 101, 21, 3, 2, 35, 49, 13, 0, 107, 107, 101, 100, 105, 3, 2, 35, 49, 13, 72, 109, 0,
+			107, 114, 111, 2, 98, 97, 3, 2, 35, 49, 34, 2, 40, 0, 107, 116, 117, 97, 114, 105, 2, 17, 65, 3, 2, 35, 49, 47, 2, 118,
+			2, 35, 34, 2, 37, 0, 107, 119, 97, 114, 101, 2, 108, 3, 2, 35, 49, 58, 2, 35, 34, 112, 0, 107, 119, 97, 109, 97, 2, 114,
+			121, 110, 3, 2, 35, 49, 58, 2, 35, 65, 2, 35, 0, 107, 97, 2, 115, 105, 97, 3, 2, 35, 49, 115, 0, 110, 111, 2, 110, 105,
+			21, 3, 2, 35, 50, 2, 40, 0, 110, 116, 101, 114, 105, 110, 103, 3, 2, 35, 50, 47, 116, 34, 13, 68, 0, 4, 108, 2, 98, 97,
+			115, 116, 101, 114, 3, 2, 35, 55, 0, 108, 2, 98, 105, 110, 111, 0, 108, 2, 106, 97, 110, 100, 101, 114, 0, 108, 8, 2, 119, 101,
+			0, 108, 117, 2, 109, 105, 110, 105, 117, 109, 3, 2, 35, 55, 2, 40, 0, 108, 101, 120, 2, 97, 3, 2, 35, 55, 2, 108, 49, 88,
+			0, 108, 101, 107, 115, 97, 110, 100, 2, 114, 121, 3, 2, 35, 55, 2, 108, 49, 89, 2, 35, 50, 72, 0, 4, 108, 105, 8, 17, 67,
+			2, 102, 111, 114, 110, 105, 3, 2, 35, 55, 13, 0, 108, 108, 101, 2, 109, 105, 110, 116, 0, 108, 108, 101, 114, 2, 103, 105, 101, 32,
+			24, 3, 2, 35, 55, 13, 34, 0, 108, 8, 2, 101, 119, 105, 103, 3, 2, 35, 55, 38, 0, 108, 107, 111, 104, 111, 108, 2, 105, 101,
+			25, 3, 2, 35, 55, 49, 2, 40, 107, 117, 55, 0, 108, 109, 97, 2, 110, 97, 107, 3, 2, 35, 55, 65, 2, 35, 0, 108, 102, 97,
+			98, 101, 2, 116, 17, 65, 3, 2, 35, 55, 83, 2, 35, 71, 116, 0, 108, 108, 101, 114, 2, 103, 105, 101, 3, 2, 35, 55, 112, 34,
+			0, 108, 108, 101, 2, 110, 17, 65, 3, 2, 35, 55, 116, 0, 108, 108, 101, 101, 110, 3, 2, 35, 55, 116, 50, 0, 108, 99, 104, 101,
+			2, 109, 105, 3, 2, 35, 55, 136, 2, 116, 0, 108, 103, 101, 2, 114, 121, 110, 3, 2, 35, 55, 136, 13, 0, 4, 109, 8, 2, 17,
+			65, 3, 2, 35, 65, 0, 109, 8, 2, 110, 17, 65, 0, 109, 97, 114, 117, 108, 97, 3, 2, 35, 65, 2, 35, 34, 40, 55, 2, 35,
+			0, 109, 97, 115, 111, 110, 101, 3, 2, 35, 65, 2, 35, 89, 117, 50, 13, 0, 109, 117, 2, 17, 67, 17, 65, 3, 2, 35, 65, 2,
+			118, 0, 109, 112, 105, 2, 111, 101, 110, 3, 2, 35, 65, 48, 2, 37, 0, 109, 98, 97, 115, 115, 2, 97, 100, 101, 3, 2, 35, 65,
+			71, 2, 35, 89, 0, 109, 98, 97, 115, 115, 97, 2, 100, 101, 117, 3, 2, 35, 65, 71, 2, 35, 89, 2, 35, 0, 109, 98, 117, 2,
+			108, 3, 2, 35, 65, 71, 2, 118, 0, 109, 101, 114, 2, 105, 107, 3, 2, 35, 65, 116, 34, 0, 109, 109, 111, 2, 110, 105, 17, 65,
+			3, 2, 35, 65, 117, 0, 98, 111, 8, 2, 17, 67, 3, 2, 35, 71, 110, 0, 4, 98, 101, 108, 1, 116, 3, 2, 35, 71, 112, 55,
+			0, 98, 101, 108, 108, 1, 116, 0, 100, 111, 108, 101, 115, 115, 101, 110, 3, 2, 35, 72, 2, 117, 55, 13, 89, 108, 50, 0, 100, 114,
+			101, 110, 97, 2, 108, 105, 3, 2, 35, 72, 34, 13, 50, 2, 35, 0, 100, 114, 101, 2, 25, 3, 2, 35, 72, 34, 108, 0, 103, 97,
+			2, 112, 97, 110, 116, 3, 2, 35, 81, 2, 35, 0, 4, 102, 2, 103, 117, 110, 115, 116, 105, 103, 3, 2, 35, 83, 0, 102, 2, 104,
+			97, 110, 107, 0, 102, 2, 115, 105, 103, 116, 101, 0, 102, 2, 115, 107, 117, 119, 0, 102, 2, 115, 121, 100, 105, 103, 0, 102, 2, 119,
+			97, 103, 116, 101, 110, 0, 102, 8, 2, 107, 101, 114, 105, 103, 0, 102, 8, 2, 107, 111, 109, 115, 116, 105, 103, 0, 102, 102, 111, 2,
+			100, 105, 108, 3, 2, 35, 83, 2, 40, 0, 118, 111, 107, 97, 100, 101, 3, 2, 35, 83, 2, 40, 49, 115, 72, 13, 0, 118, 111, 107,
+			97, 100, 111, 3, 2, 35, 83, 2, 40, 49, 115, 72, 40, 0, 102, 114, 105, 107, 2, 97, 97, 110, 3, 2, 35, 83, 34, 2, 37, 49,
+			0, 102, 114, 105, 107, 97, 110, 101, 2, 25, 3, 2, 35, 83, 34, 2, 37, 49, 115, 50, 13, 0, 4, 102, 114, 111, 2, 100, 105, 116,
+			3, 2, 35, 83, 34, 2, 40, 0, 112, 104, 114, 111, 2, 100, 105, 116, 0, 102, 102, 114, 111, 2, 110, 116, 3, 2, 35, 83, 34, 2,
+			110, 0, 102, 119, 101, 115, 105, 103, 3, 2, 35, 83, 84, 116, 89, 13, 136, 0, 102, 115, 116, 111, 111, 116, 108, 3, 2, 35, 83, 89,
+			47, 117, 47, 55, 0, 102, 115, 111, 110, 100, 101, 114, 108, 3, 2, 35, 83, 89, 110, 50, 13, 34, 55, 0, 102, 103, 114, 121, 115, 108,
+			105, 107, 3, 2, 35, 83, 136, 34, 123, 89, 55, 13, 49, 0, 118, 111, 110, 116, 117, 2, 114, 105, 101, 114, 3, 2, 35, 84, 2, 110,
+			50, 47, 2, 118, 0, 115, 8, 2, 107, 101, 3, 2, 35, 89, 0, 115, 115, 117, 2, 114, 97, 110, 3, 2, 35, 89, 2, 111, 0, 115,
+			115, 111, 115, 105, 2, 17, 65, 3, 2, 35, 89, 2, 117, 91, 2, 37, 0, 115, 115, 101, 2, 103, 97, 97, 105, 3, 2, 35, 89, 13,
+			0, 115, 115, 105, 115, 116, 3, 2, 35, 89, 13, 89, 47, 0, 115, 112, 105, 8, 2, 114, 17, 65, 3, 2, 35, 89, 48, 2, 37, 0,
+			115, 112, 101, 107, 3, 2, 35, 89, 48, 108, 49, 0, 115, 107, 105, 116, 101, 8, 3, 2, 35, 89, 49, 37, 47, 13, 0, 115, 107, 97,
+			114, 105, 3, 2, 35, 89, 49, 115, 34, 2, 37, 0, 115, 98, 101, 115, 8, 3, 2, 35, 89, 71, 108, 89, 0, 115, 115, 101, 2, 115,
+			115, 111, 114, 3, 2, 35, 89, 108, 0, 115, 115, 105, 115, 1, 114, 2, 25, 3, 2, 35, 89, 109, 89, 0, 103, 111, 110, 105, 101, 2,
+			32, 24, 3, 2, 35, 136, 2, 40, 50, 37, 0, 103, 116, 101, 2, 108, 111, 115, 105, 103, 3, 2, 35, 136, 47, 13, 0, 4, 103, 116,
+			101, 114, 2, 98, 97, 107, 3, 2, 35, 136, 47, 13, 34, 0, 103, 116, 101, 114, 2, 100, 111, 103, 116, 0, 103, 116, 101, 114, 2, 108,
+			111, 115, 105, 103, 0, 103, 116, 101, 114, 2, 109, 105, 100, 100, 97, 0, 103, 116, 101, 114, 2, 115, 116, 97, 108, 108, 0, 103, 116, 101,
+			114, 2, 118, 111, 108, 103, 0, 103, 116, 101, 114, 2, 111, 111, 114, 3, 2, 35, 136, 47, 13, 34, 10, 0, 103, 116, 101, 114, 101, 101,
+			110, 2, 118, 111, 108, 103, 3, 2, 35, 136, 47, 13, 34, 10, 2, 116, 50, 0, 103, 116, 101, 114, 2, 117, 105, 116, 3, 2, 35, 136,
+			47, 13, 34, 19, 0, 103, 101, 110, 116, 3, 2, 35, 136, 108, 50, 47, 0, 103, 101, 110, 100, 97, 3, 2, 35, 136, 108, 50, 72, 2,
+			35, 0, 103, 101, 2, 114, 101, 110, 100, 3, 2, 35, 136, 116, 0, 117, 103, 117, 115, 116, 117, 115, 3, 2, 110, 136, 111, 89, 47, 111,
+			89, 0, 2, 112, 111, 108, 105, 116, 105, 3, 2, 115, 0, 117, 115, 116, 114, 97, 3, 2, 117, 89, 47, 34, 115, 0, 195, 171, 2, 114,
+			111, 98, 105, 3, 2, 121, 0, 118, 111, 110, 2, 116, 3, 4, 35, 84, 110, 50, 0, 108, 103, 101, 109, 101, 101, 110, 3, 6, 35, 55,
+			136, 13, 65, 4, 116, 50, 0, 102, 8, 2, 21, 14, 128, 132, 130, 3, 6, 35, 83, 0, 102, 103, 101, 8, 2, 21, 14, 128, 132, 132,
+			3, 6, 35, 83, 136, 13, 0, 102, 103, 101, 101, 2, 12, 3, 6, 35, 83, 136, 116, 0, 103, 116, 101, 114, 103, 101, 8, 2, 21, 14,
+			128, 132, 135, 3, 6, 35, 136, 47, 13, 34, 136, 13, 0, 103, 116, 105, 103, 1, 10, 3, 6, 35, 136, 47, 13, 136, 0, 4, 1, 105,
+			2, 116, 105, 101, 115, 3, 6, 115, 0, 2, 114, 105, 17, 65, 0, 8, 17, 67, 2, 17, 67, 105, 101, 32, 0, 116, 111, 114, 1, 21,
+			2, 25, 3, 6, 115, 47, 110, 34, 0, 98, 101, 108, 1, 116, 107, 101, 112, 115, 3, 6, 115, 71, 13, 55, 0, 98, 105, 101, 1, 17,
+			67, 3, 6, 115, 71, 37, 0, 100, 8, 17, 67, 114, 97, 2, 17, 65, 3, 6, 115, 72, 0, 100, 105, 103, 1, 21, 3, 6, 115, 72,
+			13, 136, 0, 100, 105, 101, 115, 1, 17, 67, 17, 65, 3, 6, 115, 72, 37, 89, 0, 115, 105, 101, 1, 17, 67, 3, 6, 115, 89, 37,
+			0, 103, 116, 101, 114, 8, 2, 101, 110, 3, 7, 35, 136, 47, 13, 34, 10, 0, 116, 116, 97, 99, 104, 195, 169, 3, 10, 2, 35, 47,
+			2, 35, 91, 116, 0, 4, 99, 107, 2, 32, 3, 21, 0, 121, 2, 32, 0, 121, 115, 2, 32, 0, 4, 105, 110, 101, 2, 32, 3, 21,
+			102, 114, 0, 105, 114, 101, 1, 21, 2, 32, 0, 4, 1, 17, 67, 2, 120, 17, 65, 12, 3, 35, 0, 1, 107, 10, 2, 32, 0, 1,
+			116, 115, 2, 116, 105, 115, 116, 0, 2, 17, 67, 0, 8, 2, 98, 98, 97, 0, 2, 100, 114, 101, 115, 3, 35, 6, 0, 114, 121, 1,
+			108, 101, 17, 67, 3, 35, 34, 6, 123, 0, 114, 109, 101, 115, 8, 3, 35, 34, 19, 65, 13, 89, 0, 100, 8, 112, 2, 17, 65, 3,
+			35, 47, 0, 116, 116, 101, 110, 2, 17, 67, 3, 35, 47, 6, 108, 50, 0, 116, 111, 114, 101, 1, 21, 2, 32, 3, 35, 47, 6, 117,
+			34, 13, 0, 116, 116, 101, 110, 2, 100, 3, 35, 47, 13, 50, 0, 112, 112, 8, 2, 17, 65, 3, 35, 48, 0, 112, 112, 195, 168, 108,
+			3, 35, 48, 6, 112, 55, 0, 4, 112, 1, 17, 67, 2, 111, 111, 114, 3, 35, 48, 10, 0, 112, 1, 17, 67, 2, 111, 114, 101, 32,
+			0, 108, 105, 8, 2, 107, 114, 17, 65, 3, 35, 55, 2, 37, 0, 108, 111, 195, 171, 3, 35, 55, 6, 40, 13, 0, 108, 111, 111, 103,
+			3, 35, 55, 6, 117, 136, 0, 108, 111, 103, 105, 101, 115, 3, 35, 55, 6, 117, 136, 37, 89, 0, 108, 108, 101, 8, 2, 17, 67, 3,
+			35, 55, 13, 0, 108, 111, 109, 8, 2, 21, 3, 35, 55, 19, 110, 65, 0, 108, 111, 103, 105, 101, 3, 35, 55, 40, 136, 6, 37, 0,
+			108, 107, 111, 104, 111, 108, 3, 35, 55, 49, 2, 40, 2, 110, 55, 0, 108, 109, 101, 2, 108, 101, 3, 35, 55, 65, 13, 0, 108, 102,
+			97, 98, 101, 2, 116, 25, 3, 35, 55, 83, 35, 71, 108, 0, 109, 97, 110, 100, 101, 108, 3, 35, 65, 6, 35, 50, 72, 13, 55, 0,
+			109, 112, 101, 114, 8, 3, 35, 65, 48, 13, 34, 0, 100, 106, 117, 110, 107, 3, 35, 72, 57, 6, 111, 68, 49, 0, 115, 1, 17, 67,
+			21, 2, 32, 3, 35, 89, 0, 103, 116, 8, 2, 117, 117, 114, 3, 35, 136, 47, 0, 103, 116, 101, 114, 110, 97, 3, 35, 136, 47, 13,
+			34, 50, 6, 115, 0, 4, 3, 115, 0, 1, 17, 67, 2, 17, 67, 105, 97, 32, 0, 1, 109, 97, 116, 2, 116, 105, 101, 107, 0, 1,
+			114, 98, 17, 67, 2, 32, 0, 1, 114, 100, 10, 2, 32, 0, 1, 114, 118, 10, 2, 32, 0, 1, 119, 2, 116, 101, 114, 105, 110, 103,
+			0, 2, 17, 67, 17, 65, 0, 2, 17, 67, 105, 101, 0, 2, 104, 108, 101, 32, 0, 8, 2, 115, 105, 195, 171, 0, 101, 0, 104, 2,
+			17, 67, 0, 114, 101, 1, 17, 67, 2, 17, 67, 17, 65, 3, 115, 34, 13, 0, 114, 101, 110, 100, 115, 3, 115, 34, 13, 50, 47, 89,
+			10, 0, 114, 101, 97, 3, 115, 34, 37, 35, 0, 116, 114, 105, 117, 109, 3, 115, 47, 34, 37, 111, 65, 0, 108, 105, 97, 3, 115, 55,
+			2, 37, 2, 35, 0, 100, 101, 109, 8, 3, 115, 72, 13, 65, 0, 100, 105, 117, 1, 17, 67, 2, 25, 3, 115, 72, 37, 111, 0, 102,
+			101, 108, 1, 17, 67, 2, 21, 3, 115, 83, 13, 55, 0, 102, 114, 105, 107, 97, 3, 115, 83, 34, 37, 49, 35, 0, 4, 115, 105, 101,
+			1, 21, 21, 21, 21, 3, 115, 89, 2, 37, 0, 115, 105, 101, 1, 108, 112, 0, 115, 105, 101, 1, 112, 115, 21, 0, 115, 101, 109, 3,
+			115, 89, 13, 65, 0, 4, 115, 105, 101, 1, 17, 67, 11, 17, 67, 3, 115, 89, 37, 0, 115, 105, 101, 1, 98, 117, 111, 0, 115, 105,
+			101, 1, 108, 103, 0, 115, 105, 101, 1, 109, 114, 111, 102, 21, 0, 115, 105, 101, 1, 116, 115, 17, 65, 17, 65, 0, 115, 105, 101, 1,
+			116, 115, 17, 67, 0, 103, 105, 101, 1, 17, 67, 3, 115, 136, 37, 0, 117, 1, 25, 3, 120, 0, 4, 2, 100, 106, 105, 101, 3, 121,
+			0, 105, 0, 116, 106, 105, 101, 3, 121, 80, 37, 0, 101, 110, 2, 116, 106, 105, 101, 3, 122, 68, 0, 100, 106, 105, 101, 3, 122, 80,
+			37, 0, 117, 3, 129, 0, 117, 101, 114, 3, 129, 13, 34, 0, 7, 6, 98, 0, 2, 98, 3, 0, 117, 114, 121, 1, 21, 2, 32, 3,
+			21, 0, 2, 32, 24, 3, 48, 0, 4, 3, 71, 0, 2, 101, 101, 110, 116, 106, 105, 101, 12, 12, 0, 4, 105, 2, 115, 97, 114, 3,
+			71, 2, 37, 0, 105, 2, 122, 97, 0, 105, 8, 2, 103, 97, 0, 105, 115, 97, 110, 2, 116, 121, 110, 3, 71, 2, 37, 89, 2, 35,
+			50, 0, 4, 111, 2, 98, 111, 116, 105, 101, 3, 71, 2, 40, 0, 111, 2, 104, 97, 97, 105, 0, 111, 2, 104, 101, 0, 111, 101, 2,
+			100, 100, 104, 105, 0, 111, 101, 2, 116, 115, 101, 101, 114, 0, 4, 111, 101, 114, 2, 103, 111, 110, 100, 3, 71, 2, 40, 34, 0, 111,
+			101, 114, 2, 105, 110, 0, 111, 101, 107, 101, 2, 116, 25, 3, 71, 2, 40, 49, 108, 0, 117, 108, 2, 103, 97, 3, 71, 2, 40, 55,
+			0, 117, 108, 108, 101, 2, 116, 105, 110, 3, 71, 2, 40, 55, 13, 0, 111, 114, 8, 2, 100, 17, 65, 21, 3, 71, 2, 110, 34, 0,
+			111, 107, 109, 97, 2, 107, 105, 101, 114, 3, 71, 2, 110, 49, 65, 2, 35, 0, 111, 110, 115, 109, 97, 114, 97, 3, 71, 2, 110, 50,
+			89, 65, 115, 34, 2, 35, 0, 111, 98, 98, 101, 2, 106, 3, 71, 2, 110, 71, 13, 0, 117, 114, 2, 108, 101, 115, 107, 3, 71, 2,
+			111, 34, 0, 117, 102, 102, 101, 2, 116, 3, 71, 2, 111, 83, 108, 0, 111, 2, 116, 97, 110, 105, 101, 3, 71, 2, 117, 0, 111, 116,
+			97, 2, 110, 105, 101, 32, 24, 3, 71, 2, 117, 47, 2, 35, 0, 111, 111, 115, 2, 97, 97, 114, 100, 105, 103, 3, 71, 2, 117, 89,
+			10, 0, 117, 114, 2, 111, 107, 114, 97, 3, 71, 2, 118, 34, 0, 117, 114, 111, 3, 71, 2, 118, 34, 117, 0, 4, 121, 2, 107, 111,
+			109, 21, 3, 71, 2, 123, 0, 121, 2, 118, 111, 111, 114, 98, 0, 121, 2, 101, 101, 110, 3, 71, 2, 123, 10, 0, 121, 100, 101, 114,
+			2, 17, 67, 21, 3, 71, 2, 123, 72, 13, 34, 0, 121, 119, 111, 111, 114, 100, 101, 108, 105, 3, 71, 2, 123, 84, 117, 34, 72, 13,
+			55, 13, 0, 121, 103, 101, 2, 108, 111, 119, 105, 3, 71, 2, 123, 136, 13, 0, 121, 8, 2, 116, 101, 108, 14, 128, 132, 130, 3, 71,
+			6, 123, 0, 121, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 71, 6, 123, 136, 13, 0, 117, 105, 116, 101, 110, 2, 103, 101, 3, 71,
+			6, 127, 47, 13, 50, 0, 111, 101, 112, 101, 110, 115, 3, 71, 7, 40, 48, 134, 50, 89, 0, 111, 119, 101, 8, 3, 71, 7, 117, 84,
+			13, 0, 98, 101, 2, 114, 114, 3, 71, 13, 0, 105, 107, 105, 110, 105, 3, 71, 13, 49, 37, 50, 37, 0, 105, 108, 2, 106, 3, 71,
+			13, 55, 0, 105, 98, 108, 105, 2, 111, 17, 67, 3, 71, 13, 71, 55, 2, 37, 12, 2, 0, 114, 97, 118, 2, 17, 65, 3, 71, 34,
+			2, 35, 84, 0, 114, 97, 115, 105, 2, 108, 105, 3, 71, 34, 2, 35, 89, 109, 0, 114, 111, 2, 115, 106, 117, 3, 71, 34, 2, 110,
+			0, 114, 111, 2, 109, 105, 3, 71, 34, 2, 117, 0, 114, 117, 2, 116, 97, 3, 71, 34, 2, 118, 0, 114, 105, 101, 119, 101, 8, 2,
+			17, 67, 3, 71, 34, 7, 37, 84, 13, 0, 114, 105, 108, 2, 106, 97, 110, 116, 3, 71, 34, 13, 55, 0, 114, 101, 100, 97, 8, 3,
+			71, 34, 13, 72, 115, 0, 114, 97, 110, 100, 2, 114, 3, 71, 34, 35, 50, 47, 0, 114, 97, 110, 100, 2, 97, 3, 71, 34, 35, 50,
+			47, 10, 0, 114, 97, 110, 100, 2, 111, 3, 71, 34, 35, 50, 47, 19, 0, 114, 111, 110, 2, 17, 65, 21, 3, 71, 34, 110, 50, 10,
+			0, 114, 97, 105, 108, 108, 101, 3, 71, 34, 123, 12, 55, 10, 0, 114, 101, 105, 100, 101, 108, 3, 71, 34, 123, 72, 13, 55, 0, 111,
+			101, 114, 101, 3, 71, 40, 12, 34, 13, 0, 111, 117, 108, 101, 118, 97, 114, 100, 3, 71, 40, 55, 13, 84, 35, 34, 72, 0, 4, 108,
+			97, 2, 116, 97, 110, 116, 3, 71, 55, 2, 35, 0, 108, 97, 8, 2, 109, 101, 0, 108, 111, 101, 2, 100, 100, 111, 114, 115, 21, 3,
+			71, 55, 2, 40, 0, 4, 108, 111, 101, 100, 2, 115, 107, 101, 110, 100, 105, 103, 3, 71, 55, 2, 40, 47, 0, 108, 111, 101, 100, 2,
+			115, 116, 111, 108, 0, 4, 108, 111, 8, 2, 107, 107, 97, 3, 71, 55, 2, 110, 0, 108, 111, 8, 2, 107, 107, 101, 101, 114, 0, 108,
+			111, 110, 2, 100, 105, 110, 101, 3, 71, 55, 2, 110, 50, 0, 108, 121, 2, 109, 111, 101, 100, 3, 71, 55, 2, 123, 0, 108, 97, 100,
+			2, 17, 65, 3, 71, 55, 35, 47, 10, 0, 108, 105, 107, 8, 2, 17, 65, 3, 71, 55, 109, 49, 10, 0, 108, 111, 109, 2, 97, 107,
+			107, 101, 114, 3, 71, 55, 110, 65, 10, 0, 105, 100, 8, 3, 71, 109, 47, 10, 0, 105, 110, 110, 101, 3, 71, 109, 50, 13, 0, 105,
+			108, 108, 105, 2, 107, 3, 71, 109, 55, 13, 0, 105, 100, 100, 3, 71, 109, 72, 0, 111, 114, 100, 101, 2, 114, 3, 71, 110, 34, 72,
+			13, 0, 111, 107, 2, 111, 111, 105, 3, 71, 110, 49, 10, 0, 111, 110, 100, 101, 2, 17, 67, 3, 71, 110, 50, 72, 13, 0, 111, 109,
+			2, 17, 65, 17, 65, 3, 71, 110, 65, 10, 0, 111, 110, 103, 111, 8, 3, 71, 110, 68, 81, 40, 0, 111, 115, 99, 104, 2, 32, 3,
+			71, 110, 89, 0, 111, 115, 2, 17, 65, 21, 3, 71, 110, 89, 19, 0, 4, 111, 2, 103, 114, 111, 110, 100, 3, 71, 117, 0, 111, 2,
+			115, 107, 114, 105, 102, 0, 111, 2, 118, 0, 111, 8, 2, 107, 108, 101, 0, 111, 116, 97, 8, 2, 110, 105, 17, 67, 17, 65, 3, 71,
+			117, 47, 7, 115, 0, 111, 109, 97, 97, 110, 115, 3, 71, 117, 65, 115, 50, 89, 0, 111, 119, 101, 110, 3, 71, 117, 84, 13, 50, 6,
+			0, 121, 98, 101, 108, 3, 71, 123, 71, 13, 55, 0, 117, 105, 116, 101, 3, 71, 127, 47, 13, 0, 4, 117, 105, 116, 101, 110, 2, 115,
+			116, 101, 3, 71, 127, 47, 13, 50, 0, 117, 105, 116, 101, 110, 2, 116, 0, 117, 105, 116, 101, 110, 3, 71, 127, 47, 13, 50, 6, 0,
+			7, 6, 99, 0, 2, 99, 3, 0, 4, 101, 2, 32, 3, 21, 0, 101, 108, 1, 21, 2, 32, 0, 104, 97, 116, 0, 108, 101, 1, 21,
+			2, 32, 0, 121, 2, 32, 0, 4, 3, 49, 0, 104, 2, 108, 0, 104, 2, 114, 111, 0, 107, 0, 104, 97, 2, 114, 105, 115, 109, 97,
+			3, 49, 2, 35, 0, 97, 108, 2, 118, 17, 65, 3, 49, 2, 35, 55, 0, 97, 108, 97, 109, 97, 114, 105, 3, 49, 2, 35, 55, 2,
+			35, 65, 115, 34, 2, 37, 0, 104, 111, 114, 101, 2, 111, 103, 114, 97, 3, 49, 2, 110, 34, 2, 37, 0, 111, 108, 111, 109, 98, 105,
+			2, 97, 21, 3, 49, 2, 110, 55, 2, 110, 65, 71, 2, 37, 0, 104, 111, 108, 101, 115, 116, 101, 114, 111, 108, 3, 49, 2, 110, 55,
+			108, 89, 47, 14, 34, 2, 110, 55, 0, 108, 105, 99, 104, 195, 169, 3, 49, 55, 2, 37, 91, 116, 0, 111, 114, 110, 101, 2, 108, 105,
+			3, 49, 110, 34, 50, 7, 116, 0, 104, 111, 108, 101, 114, 97, 3, 49, 117, 55, 13, 34, 35, 10, 0, 111, 107, 101, 3, 49, 120, 49,
+			0, 104, 101, 100, 100, 97, 114, 3, 76, 108, 72, 13, 34, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2, 121, 0, 101, 110, 2, 116,
+			97, 117, 114, 17, 65, 3, 89, 2, 108, 50, 0, 105, 1, 21, 2, 32, 3, 89, 6, 37, 0, 121, 2, 114, 105, 108, 108, 105, 101, 3,
+			89, 13, 0, 105, 8, 2, 112, 114, 17, 65, 3, 89, 37, 0, 104, 97, 108, 101, 116, 3, 91, 2, 35, 55, 123, 0, 104, 105, 110, 2,
+			101, 3, 91, 2, 37, 50, 0, 104, 97, 117, 2, 17, 67, 3, 91, 2, 120, 0, 104, 105, 114, 117, 114, 103, 2, 105, 101, 32, 24, 3,
+			91, 13, 34, 2, 111, 34, 136, 0, 104, 105, 114, 117, 114, 103, 3, 91, 13, 34, 111, 34, 136, 0, 4, 104, 3, 136, 0, 104, 8, 0,
+			104, 101, 109, 105, 107, 97, 2, 108, 105, 3, 136, 2, 116, 65, 2, 37, 49, 115, 0, 7, 6, 100, 0, 4, 1, 21, 2, 116, 3, 0,
+			4, 2, 32, 100, 24, 3, 0, 2, 100, 3, 0, 4, 103, 101, 1, 21, 2, 32, 3, 21, 0, 103, 101, 2, 32, 0, 4, 1, 21, 2,
+			17, 67, 3, 47, 0, 1, 21, 2, 101, 116, 101, 17, 67, 32, 0, 1, 21, 2, 114, 97, 97, 109, 0, 1, 21, 2, 114, 111, 111, 115,
+			0, 1, 21, 2, 114, 111, 115, 101, 32, 0, 1, 21, 2, 114, 111, 115, 105, 101, 0, 1, 21, 2, 114, 117, 105, 109, 0, 1, 101, 111,
+			2, 114, 0, 1, 110, 21, 2, 101, 116, 101, 32, 0, 1, 110, 97, 104, 2, 114, 0, 1, 110, 97, 115, 2, 114, 0, 1, 110, 105, 119,
+			2, 114, 0, 1, 110, 111, 104, 2, 17, 67, 0, 1, 111, 111, 2, 114, 0, 2, 32, 0, 2, 114, 105, 101, 109, 32, 0, 4, 1, 17,
+			65, 2, 97, 103, 116, 105, 103, 3, 47, 10, 0, 1, 21, 2, 101, 105, 101, 110, 0, 1, 21, 2, 101, 105, 110, 100, 101, 32, 0, 1,
+			21, 2, 101, 105, 115, 0, 1, 21, 2, 105, 110, 104, 111, 117, 0, 1, 21, 2, 121, 115, 116, 101, 114, 0, 1, 110, 21, 2, 117, 105,
+			116, 0, 1, 111, 111, 2, 17, 65, 3, 47, 19, 0, 119, 101, 115, 1, 21, 3, 47, 84, 6, 108, 89, 0, 119, 105, 108, 108, 105, 103,
+			1, 21, 3, 47, 84, 6, 109, 55, 13, 136, 0, 119, 101, 115, 101, 1, 21, 3, 47, 84, 116, 89, 13, 0, 115, 1, 21, 2, 32, 3,
+			47, 89, 0, 4, 3, 72, 0, 1, 21, 2, 114, 0, 1, 101, 111, 116, 2, 114, 0, 1, 111, 111, 114, 97, 107, 0, 1, 112, 2, 17,
+			67, 0, 1, 114, 101, 118, 2, 17, 67, 0, 100, 0, 100, 1, 21, 0, 100, 104, 0, 105, 2, 110, 97, 109, 105, 101, 3, 72, 2, 37,
+			0, 105, 97, 2, 17, 67, 3, 72, 2, 37, 2, 35, 0, 105, 97, 107, 111, 2, 110, 105, 101, 3, 72, 2, 37, 2, 35, 49, 2, 40,
+			0, 105, 114, 101, 107, 3, 72, 2, 37, 34, 108, 49, 0, 4, 105, 110, 97, 2, 109, 105, 101, 107, 3, 72, 2, 37, 50, 2, 35, 0,
+			105, 110, 97, 2, 109, 105, 101, 116, 0, 105, 110, 97, 2, 115, 116, 105, 101, 0, 105, 110, 111, 2, 115, 111, 117, 3, 72, 2, 37, 50,
+			2, 40, 0, 105, 101, 110, 115, 2, 119, 105, 108, 108, 105, 3, 72, 2, 37, 50, 89, 0, 105, 97, 107, 101, 110, 3, 72, 2, 37, 115,
+			49, 13, 50, 0, 105, 103, 105, 2, 116, 97, 3, 72, 2, 37, 136, 2, 37, 0, 117, 2, 101, 116, 3, 72, 2, 40, 12, 58, 0, 111,
+			101, 108, 2, 116, 114, 101, 102, 3, 72, 2, 40, 55, 0, 117, 118, 101, 116, 3, 72, 2, 40, 84, 123, 12, 0, 111, 101, 97, 110, 101,
+			3, 72, 2, 40, 115, 50, 13, 0, 111, 2, 115, 115, 105, 101, 114, 3, 72, 2, 110, 0, 111, 108, 2, 102, 121, 110, 3, 72, 2, 110,
+			55, 0, 111, 108, 111, 2, 109, 105, 101, 116, 3, 72, 2, 110, 55, 13, 0, 111, 109, 105, 110, 2, 17, 65, 3, 72, 2, 110, 65, 2,
+			37, 50, 0, 111, 109, 105, 110, 105, 2, 107, 97, 3, 72, 2, 110, 65, 2, 37, 50, 2, 37, 0, 97, 97, 114, 111, 112, 2, 118, 3,
+			72, 2, 115, 34, 2, 110, 48, 0, 97, 97, 114, 101, 110, 2, 116, 101, 3, 72, 2, 115, 34, 13, 50, 0, 97, 97, 100, 2, 119, 101,
+			114, 107, 3, 72, 2, 115, 47, 0, 111, 112, 97, 2, 109, 105, 3, 72, 2, 117, 48, 2, 35, 0, 97, 110, 116, 1, 21, 3, 72, 6,
+			35, 50, 47, 0, 97, 103, 1, 110, 97, 97, 2, 116, 105, 103, 3, 72, 6, 35, 136, 0, 97, 110, 105, 2, 103, 104, 3, 72, 6, 115,
+			50, 13, 0, 97, 109, 101, 115, 8, 3, 72, 6, 115, 65, 13, 89, 0, 111, 109, 105, 110, 101, 101, 2, 32, 3, 72, 6, 117, 65, 13,
+			50, 37, 0, 111, 100, 101, 8, 3, 72, 6, 117, 72, 13, 0, 4, 105, 2, 110, 101, 101, 3, 72, 13, 0, 105, 2, 112, 108, 111, 109,
+			97, 0, 105, 2, 115, 115, 105, 0, 105, 2, 118, 105, 115, 105, 101, 0, 105, 114, 105, 103, 2, 101, 3, 72, 13, 34, 13, 136, 0, 100,
+			101, 114, 100, 1, 21, 2, 32, 3, 72, 13, 34, 47, 0, 105, 112, 108, 111, 2, 109, 97, 116, 3, 72, 13, 48, 55, 2, 40, 0, 105,
+			107, 2, 118, 101, 108, 108, 3, 72, 13, 49, 0, 105, 110, 97, 1, 110, 97, 107, 115, 3, 72, 13, 50, 6, 115, 0, 105, 108, 101, 109,
+			109, 97, 3, 72, 13, 55, 108, 65, 35, 0, 105, 109, 101, 110, 2, 115, 105, 3, 72, 13, 65, 108, 50, 0, 105, 110, 103, 97, 97, 110,
+			3, 72, 13, 68, 81, 115, 50, 0, 105, 118, 105, 100, 101, 2, 110, 100, 3, 72, 13, 84, 13, 72, 108, 0, 4, 105, 115, 2, 107, 111,
+			101, 114, 115, 3, 72, 13, 89, 0, 105, 115, 2, 108, 111, 106, 97, 0, 105, 115, 2, 112, 117, 0, 105, 115, 8, 2, 105, 110, 14, 128,
+			132, 131, 0, 105, 115, 8, 2, 107, 114, 101, 0, 105, 115, 8, 2, 107, 117, 115, 115, 17, 65, 0, 105, 115, 8, 2, 111, 14, 128, 132,
+			131, 0, 105, 115, 8, 2, 116, 0, 105, 115, 115, 105, 112, 101, 108, 2, 105, 110, 3, 72, 13, 89, 2, 37, 48, 13, 55, 0, 105, 115,
+			115, 105, 112, 108, 105, 110, 101, 2, 25, 3, 72, 13, 89, 13, 48, 55, 37, 50, 13, 0, 105, 115, 116, 114, 111, 2, 102, 105, 101, 3,
+			72, 13, 89, 47, 34, 2, 40, 0, 105, 115, 116, 114, 105, 2, 98, 117, 3, 72, 13, 89, 47, 34, 13, 0, 105, 115, 107, 114, 101, 2,
+			115, 3, 72, 13, 89, 49, 34, 108, 0, 105, 103, 101, 114, 115, 3, 72, 13, 136, 13, 34, 89, 0, 105, 103, 116, 101, 114, 101, 2, 25,
+			3, 72, 13, 136, 47, 13, 34, 108, 0, 114, 111, 101, 102, 2, 103, 101, 101, 115, 3, 72, 34, 2, 40, 83, 0, 114, 117, 107, 107, 101,
+			8, 2, 114, 121, 3, 72, 34, 2, 111, 49, 13, 0, 114, 97, 109, 97, 2, 116, 117, 114, 103, 3, 72, 34, 2, 115, 65, 2, 35, 0,
+			114, 97, 2, 115, 116, 105, 101, 3, 72, 34, 35, 0, 114, 105, 108, 2, 17, 65, 3, 72, 34, 109, 55, 0, 114, 97, 8, 2, 115, 116,
+			3, 72, 34, 115, 0, 105, 101, 112, 101, 114, 2, 21, 3, 72, 37, 48, 13, 34, 0, 117, 2, 112, 108, 105, 17, 67, 3, 72, 40, 0,
+			4, 119, 1, 101, 103, 3, 72, 58, 0, 119, 1, 109, 0, 119, 1, 121, 98, 114, 101, 118, 0, 119, 2, 101, 114, 103, 0, 119, 101, 108,
+			109, 2, 32, 3, 72, 58, 112, 55, 14, 65, 0, 105, 2, 103, 25, 3, 72, 109, 0, 105, 115, 116, 101, 108, 3, 72, 109, 89, 47, 13,
+			55, 0, 111, 107, 116, 111, 114, 2, 25, 3, 72, 110, 49, 47, 13, 34, 0, 111, 107, 117, 3, 72, 110, 49, 118, 0, 111, 108, 2, 111,
+			115, 3, 72, 110, 55, 0, 111, 109, 8, 2, 17, 65, 17, 67, 17, 67, 3, 72, 110, 65, 0, 111, 110, 103, 97, 3, 72, 110, 68, 81,
+			35, 0, 97, 116, 101, 1, 105, 100, 110, 97, 107, 2, 17, 67, 3, 72, 115, 47, 13, 0, 97, 110, 105, 195, 171, 108, 3, 72, 115, 50,
+			37, 13, 55, 0, 111, 115, 105, 2, 115, 3, 72, 117, 89, 13, 0, 106, 8, 3, 75, 0, 106, 3, 80, 0, 106, 105, 101, 3, 80, 37,
+			0, 7, 6, 101, 0, 1, 105, 111, 111, 2, 110, 116, 106, 105, 101, 3, 0, 4, 2, 102, 101, 115, 105, 3, 2, 37, 0, 2, 109, 111,
+			115, 105, 0, 8, 2, 108, 108, 105, 112, 25, 0, 8, 108, 101, 105, 115, 2, 116, 106, 105, 101, 0, 108, 101, 107, 2, 116, 114, 111, 100,
+			101, 3, 2, 37, 55, 2, 108, 49, 0, 108, 101, 107, 116, 114, 3, 2, 37, 55, 108, 49, 47, 34, 0, 102, 102, 101, 107, 2, 25, 3,
+			2, 37, 83, 108, 49, 0, 118, 2, 101, 110, 116, 117, 101, 3, 2, 37, 84, 0, 118, 97, 108, 2, 117, 3, 2, 37, 84, 2, 35, 55,
+			0, 115, 115, 101, 110, 2, 115, 105, 3, 2, 37, 89, 108, 50, 0, 4, 1, 108, 108, 101, 116, 110, 105, 2, 107, 3, 2, 108, 0, 2,
+			107, 111, 110, 111, 21, 0, 8, 2, 107, 115, 0, 8, 2, 109, 105, 0, 116, 105, 2, 107, 101, 116, 3, 2, 108, 47, 2, 37, 0, 116,
+			105, 107, 101, 116, 116, 101, 2, 114, 17, 65, 3, 2, 108, 47, 2, 37, 49, 2, 108, 47, 116, 0, 4, 112, 105, 2, 100, 101, 17, 67,
+			3, 2, 108, 48, 2, 37, 0, 112, 105, 8, 2, 17, 67, 0, 112, 111, 117, 2, 108, 101, 116, 3, 2, 108, 48, 2, 40, 0, 107, 117,
+			2, 109, 101, 110, 105, 101, 3, 2, 108, 49, 2, 118, 0, 107, 119, 105, 2, 108, 105, 98, 114, 105, 3, 2, 108, 49, 58, 2, 37, 0,
+			120, 1, 108, 97, 2, 97, 110, 100, 3, 2, 108, 49, 88, 0, 107, 115, 97, 109, 105, 110, 2, 17, 65, 3, 2, 108, 49, 89, 2, 35,
+			65, 2, 37, 50, 0, 107, 115, 101, 2, 108, 108, 101, 110, 17, 67, 3, 2, 108, 49, 89, 13, 0, 107, 115, 101, 103, 101, 2, 17, 67,
+			17, 65, 3, 2, 108, 49, 89, 13, 136, 116, 0, 107, 115, 116, 114, 111, 2, 118, 101, 114, 3, 2, 108, 49, 89, 47, 34, 2, 40, 0,
+			107, 115, 116, 114, 101, 2, 109, 105, 115, 3, 2, 108, 49, 89, 47, 34, 13, 0, 107, 115, 116, 101, 114, 110, 8, 3, 2, 108, 49, 89,
+			47, 112, 34, 14, 50, 0, 107, 115, 112, 108, 105, 2, 115, 105, 101, 116, 3, 2, 108, 49, 89, 48, 55, 13, 0, 4, 108, 101, 2, 103,
+			97, 110, 17, 67, 3, 2, 108, 55, 13, 0, 108, 101, 2, 103, 105, 101, 0, 108, 101, 109, 101, 110, 116, 3, 2, 108, 55, 13, 65, 108,
+			50, 47, 0, 4, 109, 2, 112, 105, 114, 3, 2, 108, 65, 0, 109, 8, 2, 98, 108, 101, 0, 109, 102, 105, 2, 115, 101, 101, 109, 3,
+			2, 108, 65, 83, 2, 37, 0, 119, 111, 2, 108, 117, 115, 105, 3, 2, 108, 84, 2, 110, 0, 115, 8, 2, 107, 97, 114, 112, 3, 2,
+			108, 89, 0, 115, 105, 1, 100, 21, 2, 109, 97, 3, 2, 108, 89, 2, 37, 0, 115, 116, 114, 111, 2, 103, 101, 3, 2, 108, 89, 47,
+			34, 2, 40, 0, 115, 116, 101, 8, 2, 116, 3, 2, 108, 89, 47, 116, 0, 115, 107, 97, 2, 112, 97, 100, 101, 3, 2, 108, 89, 49,
+			13, 0, 115, 107, 97, 100, 101, 114, 3, 2, 108, 89, 49, 115, 72, 13, 34, 0, 114, 107, 101, 2, 110, 12, 3, 2, 112, 34, 49, 108,
+			0, 4, 2, 107, 108, 105, 112, 25, 3, 2, 116, 0, 8, 2, 103, 105, 112, 116, 0, 8, 2, 114, 111, 115, 105, 101, 0, 114, 101, 2,
+			107, 115, 105, 17, 65, 3, 2, 116, 34, 108, 0, 109, 97, 108, 106, 101, 3, 2, 116, 65, 35, 55, 57, 13, 0, 119, 101, 8, 2, 114,
+			101, 100, 3, 2, 116, 84, 13, 0, 119, 101, 119, 105, 103, 2, 116, 105, 103, 3, 2, 116, 84, 13, 84, 109, 136, 0, 119, 105, 103, 2,
+			100, 117, 3, 2, 116, 84, 13, 136, 0, 115, 111, 116, 101, 2, 114, 105, 101, 3, 2, 116, 89, 2, 40, 47, 116, 0, 103, 111, 115, 101,
+			110, 116, 114, 105, 101, 3, 2, 116, 136, 2, 40, 89, 108, 50, 47, 34, 37, 0, 103, 97, 8, 2, 108, 3, 2, 116, 136, 115, 0, 105,
+			101, 110, 97, 97, 114, 100, 105, 103, 3, 2, 123, 13, 50, 115, 34, 72, 13, 136, 0, 117, 2, 102, 111, 114, 105, 101, 3, 2, 128, 0,
+			117, 114, 111, 8, 2, 112, 101, 3, 2, 128, 34, 2, 117, 0, 117, 102, 111, 2, 114, 105, 101, 32, 24, 3, 2, 128, 83, 2, 117, 0,
+			118, 97, 110, 103, 8, 3, 4, 116, 83, 35, 68, 136, 0, 8, 17, 67, 2, 111, 110, 32, 3, 6, 37, 0, 4, 1, 17, 67, 2, 115,
+			107, 32, 12, 12, 3, 6, 108, 0, 1, 17, 67, 2, 115, 107, 101, 32, 12, 12, 0, 1, 17, 67, 21, 2, 115, 107, 101, 114, 32, 0,
+			1, 114, 97, 2, 115, 115, 101, 32, 0, 100, 106, 105, 101, 3, 6, 108, 12, 37, 80, 37, 0, 107, 116, 111, 109, 105, 101, 1, 17, 67,
+			3, 6, 108, 49, 47, 40, 65, 37, 0, 1, 115, 21, 2, 108, 102, 100, 101, 3, 6, 112, 0, 4, 1, 100, 21, 2, 115, 101, 32, 12,
+			3, 6, 116, 0, 1, 112, 2, 114, 105, 110, 103, 0, 1, 112, 101, 111, 114, 2, 114, 105, 110, 103, 0, 4, 114, 1, 102, 102, 111, 116,
+			115, 2, 17, 65, 3, 6, 116, 34, 0, 114, 1, 110, 105, 2, 17, 65, 0, 114, 105, 110, 103, 1, 117, 3, 6, 116, 34, 13, 68, 0,
+			116, 101, 110, 115, 8, 3, 6, 116, 47, 13, 50, 89, 0, 108, 101, 1, 117, 17, 67, 2, 25, 12, 3, 6, 116, 55, 13, 0, 105, 1,
+			114, 2, 115, 101, 110, 3, 6, 123, 0, 105, 107, 101, 8, 3, 6, 123, 49, 13, 0, 105, 110, 1, 21, 2, 100, 105, 103, 3, 6, 123,
+			50, 0, 108, 119, 101, 114, 115, 1, 17, 67, 3, 7, 112, 55, 84, 13, 34, 89, 0, 1, 17, 67, 2, 110, 100, 104, 3, 8, 13, 0,
+			107, 111, 110, 1, 10, 2, 111, 21, 3, 10, 2, 108, 49, 2, 40, 50, 0, 105, 1, 17, 67, 21, 2, 108, 97, 110, 100, 3, 10, 4,
+			123, 0, 105, 1, 21, 2, 115, 101, 110, 3, 10, 6, 123, 0, 114, 116, 115, 1, 21, 2, 32, 3, 10, 112, 34, 47, 89, 0, 114, 107,
+			101, 1, 100, 108, 117, 107, 115, 3, 10, 112, 34, 49, 108, 0, 114, 103, 8, 114, 101, 108, 108, 97, 3, 10, 112, 34, 136, 0, 116, 101,
+			114, 1, 114, 101, 105, 109, 3, 10, 116, 47, 13, 34, 0, 4, 1, 10, 2, 32, 3, 13, 0, 1, 10, 2, 108, 17, 67, 32, 0, 1,
+			10, 2, 108, 32, 0, 1, 10, 2, 109, 32, 0, 1, 10, 2, 114, 32, 0, 1, 17, 67, 2, 104, 0, 1, 17, 67, 2, 107, 97, 109,
+			112, 12, 0, 1, 17, 67, 2, 107, 97, 110, 116, 12, 0, 1, 17, 67, 2, 108, 116, 106, 105, 101, 0, 1, 17, 67, 2, 109, 97, 97,
+			116, 0, 1, 17, 67, 2, 109, 97, 110, 0, 1, 17, 67, 2, 109, 97, 114, 105, 101, 0, 1, 17, 67, 2, 112, 97, 100, 0, 1, 17,
+			67, 2, 112, 97, 110, 0, 1, 17, 67, 2, 116, 111, 101, 32, 0, 1, 17, 67, 2, 118, 0, 1, 17, 67, 2, 119, 97, 97, 114, 0,
+			1, 17, 67, 2, 119, 105, 110, 107, 101, 108, 0, 1, 17, 67, 10, 2, 103, 97, 110, 103, 101, 114, 0, 1, 17, 67, 10, 2, 108, 114,
+			17, 65, 0, 1, 17, 67, 10, 2, 115, 107, 21, 0, 1, 17, 67, 11, 2, 17, 67, 0, 1, 17, 67, 17, 65, 2, 108, 104, 0, 1,
+			17, 67, 17, 65, 17, 67, 2, 17, 67, 17, 67, 0, 1, 17, 67, 17, 65, 17, 67, 2, 114, 114, 0, 1, 17, 67, 21, 2, 98, 111,
+			0, 1, 17, 67, 21, 2, 98, 117, 0, 1, 17, 67, 21, 2, 98, 121, 0, 1, 17, 67, 21, 2, 100, 105, 101, 110, 0, 1, 17, 67,
+			21, 2, 103, 101, 17, 67, 21, 0, 1, 17, 67, 21, 2, 103, 114, 111, 101, 112, 0, 1, 17, 67, 21, 2, 106, 0, 1, 17, 67, 21,
+			2, 107, 111, 100, 101, 25, 0, 1, 17, 67, 21, 2, 107, 111, 109, 21, 0, 1, 17, 67, 21, 2, 109, 97, 97, 108, 32, 0, 1, 17,
+			67, 21, 2, 109, 97, 108, 101, 32, 0, 1, 17, 67, 21, 2, 114, 101, 101, 107, 25, 0, 1, 17, 67, 21, 2, 114, 101, 195, 171, 0,
+			1, 17, 67, 21, 2, 114, 104, 0, 1, 17, 67, 21, 2, 116, 97, 97, 108, 0, 1, 17, 67, 21, 2, 119, 97, 32, 0, 1, 17, 67,
+			21, 2, 119, 97, 101, 110, 0, 1, 17, 67, 101, 111, 17, 67, 2, 17, 67, 12, 0, 1, 17, 67, 105, 117, 2, 25, 12, 0, 1, 17,
+			67, 117, 101, 25, 2, 108, 17, 67, 21, 0, 1, 21, 2, 115, 112, 101, 108, 32, 0, 1, 25, 2, 112, 111, 111, 114, 116, 0, 1, 98,
+			10, 2, 115, 21, 0, 1, 98, 17, 65, 2, 119, 97, 0, 1, 100, 10, 2, 114, 21, 12, 12, 0, 1, 100, 17, 67, 2, 116, 114, 0,
+			1, 100, 21, 2, 98, 108, 0, 1, 100, 21, 2, 107, 108, 97, 115, 0, 1, 100, 21, 2, 107, 114, 0, 1, 100, 21, 2, 115, 21, 0,
+			1, 100, 97, 114, 114, 111, 111, 118, 2, 17, 67, 0, 1, 100, 100, 17, 65, 2, 108, 101, 32, 0, 1, 100, 100, 105, 109, 2, 21, 0,
+			1, 100, 102, 101, 105, 108, 2, 17, 67, 0, 1, 100, 103, 117, 101, 114, 118, 2, 17, 67, 0, 1, 100, 108, 97, 97, 110, 2, 17, 67,
+			0, 1, 100, 108, 101, 101, 119, 2, 119, 17, 65, 0, 1, 100, 108, 101, 112, 115, 2, 17, 67, 0, 1, 100, 108, 105, 119, 0, 1, 100,
+			108, 105, 119, 2, 107, 17, 65, 0, 1, 100, 110, 2, 108, 105, 110, 103, 0, 1, 100, 110, 17, 65, 2, 108, 17, 67, 0, 1, 100, 110,
+			97, 17, 67, 2, 17, 67, 0, 1, 100, 110, 97, 97, 109, 2, 108, 17, 65, 0, 1, 100, 110, 101, 105, 114, 118, 2, 17, 67, 0, 1,
+			100, 110, 105, 108, 98, 2, 17, 67, 21, 0, 1, 100, 110, 105, 108, 98, 2, 108, 105, 110, 103, 0, 1, 100, 110, 111, 17, 67, 2, 17,
+			67, 17, 65, 0, 1, 100, 110, 117, 107, 2, 21, 0, 1, 100, 111, 107, 2, 17, 67, 0, 1, 100, 114, 111, 111, 110, 2, 17, 67, 0,
+			1, 100, 121, 2, 108, 0, 1, 102, 108, 105, 107, 115, 2, 114, 0, 1, 102, 121, 115, 2, 114, 0, 1, 103, 110, 97, 108, 115, 2, 17,
+			67, 0, 1, 103, 110, 105, 17, 67, 2, 108, 17, 65, 0, 1, 103, 110, 105, 17, 67, 2, 108, 17, 67, 21, 0, 1, 103, 110, 105, 110,
+			101, 107, 2, 21, 0, 1, 105, 97, 97, 2, 17, 67, 0, 1, 105, 101, 0, 1, 105, 111, 111, 2, 17, 67, 0, 1, 107, 21, 2, 108,
+			100, 101, 32, 0, 1, 107, 21, 2, 114, 97, 97, 100, 0, 1, 107, 97, 108, 98, 2, 114, 0, 1, 107, 101, 111, 2, 17, 67, 0, 1,
+			107, 110, 2, 108, 17, 67, 0, 1, 107, 110, 17, 65, 2, 114, 21, 0, 1, 107, 110, 105, 119, 2, 108, 0, 1, 107, 111, 112, 115, 2,
+			17, 67, 0, 1, 107, 114, 101, 119, 2, 114, 115, 0, 1, 107, 114, 105, 115, 2, 108, 0, 1, 108, 2, 109, 111, 101, 110, 0, 1, 108,
+			97, 104, 2, 114, 17, 67, 21, 0, 1, 108, 97, 109, 2, 100, 121, 0, 1, 108, 97, 114, 101, 110, 105, 109, 2, 17, 67, 0, 1, 108,
+			101, 119, 117, 106, 2, 17, 67, 0, 1, 108, 105, 101, 114, 116, 2, 114, 17, 67, 0, 1, 108, 108, 105, 119, 2, 17, 67, 0, 1, 108,
+			111, 114, 116, 2, 17, 67, 21, 0, 1, 109, 2, 108, 101, 110, 100, 0, 1, 109, 2, 108, 105, 110, 103, 0, 1, 109, 97, 115, 0, 1,
+			109, 97, 115, 21, 2, 110, 115, 32, 0, 1, 109, 101, 110, 21, 2, 110, 115, 32, 0, 1, 109, 108, 101, 17, 67, 2, 116, 25, 0, 1,
+			109, 111, 107, 21, 2, 110, 115, 32, 0, 1, 109, 111, 115, 2, 114, 0, 1, 109, 114, 2, 114, 116, 106, 105, 101, 0, 1, 110, 97, 17,
+			67, 17, 67, 2, 17, 67, 17, 65, 0, 1, 110, 101, 105, 17, 67, 2, 114, 17, 67, 21, 0, 1, 110, 110, 17, 65, 17, 67, 2, 17,
+			67, 17, 65, 0, 1, 110, 110, 97, 112, 2, 17, 67, 0, 1, 110, 117, 101, 2, 114, 21, 0, 1, 112, 2, 116, 97, 108, 106, 101, 0,
+			1, 112, 2, 116, 97, 108, 106, 101, 0, 1, 112, 17, 65, 2, 108, 105, 110, 103, 0, 1, 112, 17, 65, 17, 67, 2, 114, 107, 17, 67,
+			0, 1, 112, 17, 67, 17, 65, 17, 67, 2, 114, 108, 0, 1, 112, 21, 2, 108, 104, 0, 1, 112, 21, 2, 114, 116, 106, 105, 101, 0,
+			1, 112, 105, 104, 2, 114, 0, 1, 112, 109, 2, 108, 100, 101, 32, 0, 1, 112, 109, 21, 2, 108, 17, 67, 21, 0, 1, 112, 109, 111,
+			107, 2, 116, 21, 0, 1, 112, 112, 2, 17, 67, 21, 12, 0, 1, 112, 114, 2, 114, 17, 67, 17, 67, 0, 1, 112, 114, 101, 119, 2,
+			114, 115, 17, 65, 0, 1, 112, 114, 117, 112, 2, 114, 0, 1, 112, 115, 2, 100, 0, 1, 112, 115, 2, 108, 111, 110, 107, 0, 1, 114,
+			101, 100, 101, 111, 103, 2, 21, 0, 1, 114, 101, 105, 17, 67, 29, 2, 21, 0, 1, 114, 114, 111, 2, 108, 0, 1, 115, 10, 2, 108,
+			21, 0, 1, 115, 25, 2, 110, 97, 0, 1, 115, 100, 110, 97, 104, 101, 100, 2, 17, 67, 21, 0, 1, 115, 101, 105, 2, 98, 0, 1,
+			115, 101, 105, 2, 102, 0, 1, 115, 105, 101, 2, 98, 101, 0, 1, 115, 105, 101, 2, 115, 116, 0, 1, 115, 107, 21, 2, 109, 17, 67,
+			0, 1, 115, 107, 117, 117, 108, 0, 1, 115, 111, 107, 114, 97, 110, 2, 17, 67, 0, 1, 115, 111, 108, 2, 115, 0, 1, 115, 111, 114,
+			2, 17, 67, 17, 65, 0, 1, 115, 117, 101, 114, 2, 21, 0, 1, 115, 117, 111, 112, 2, 17, 67, 0, 1, 116, 10, 2, 114, 21, 0,
+			1, 116, 17, 65, 10, 2, 98, 17, 65, 21, 0, 1, 117, 111, 2, 17, 67, 0, 1, 118, 2, 110, 110, 111, 21, 12, 0, 1, 119, 2,
+			108, 105, 110, 103, 0, 1, 119, 10, 2, 102, 0, 1, 119, 17, 65, 2, 98, 17, 65, 0, 1, 119, 97, 2, 17, 67, 21, 0, 1, 119,
+			101, 107, 115, 2, 17, 67, 0, 1, 119, 101, 108, 2, 110, 115, 0, 1, 119, 108, 97, 104, 2, 25, 0, 1, 119, 108, 111, 17, 67, 2,
+			17, 67, 0, 1, 119, 114, 2, 115, 0, 1, 119, 117, 101, 17, 67, 2, 108, 0, 1, 119, 121, 2, 114, 17, 65, 0, 1, 119, 121, 116,
+			115, 2, 17, 67, 0, 1, 121, 17, 67, 2, 17, 67, 12, 0, 1, 121, 17, 67, 2, 17, 67, 17, 67, 0, 2, 17, 67, 111, 117, 120,
+			0, 2, 110, 97, 114, 101, 115, 32, 0, 8, 100, 97, 2, 108, 17, 67, 0, 8, 100, 105, 101, 109, 2, 17, 67, 0, 8, 100, 110, 101,
+			101, 2, 17, 67, 17, 65, 0, 8, 108, 101, 105, 115, 2, 21, 0, 8, 112, 111, 2, 110, 0, 8, 112, 115, 97, 114, 2, 114, 0, 8,
+			115, 110, 101, 109, 0, 8, 115, 110, 101, 109, 2, 107, 0, 8, 119, 101, 2, 12, 12, 0, 4, 1, 17, 67, 2, 114, 106, 3, 13, 6,
+			0, 1, 114, 112, 114, 101, 116, 110, 105, 2, 116, 17, 65, 0, 4, 1, 17, 67, 2, 117, 105, 116, 3, 13, 10, 0, 1, 17, 67, 10,
+			2, 117, 117, 0, 1, 17, 67, 21, 2, 97, 17, 67, 17, 67, 0, 1, 17, 67, 21, 2, 111, 111, 114, 0, 1, 100, 110, 111, 104, 2,
+			21, 0, 1, 110, 105, 101, 116, 110, 111, 102, 2, 17, 67, 0, 1, 117, 111, 2, 97, 0, 4, 114, 1, 17, 67, 21, 2, 116, 121, 100,
+			3, 13, 34, 0, 114, 1, 102, 102, 2, 21, 0, 114, 1, 105, 17, 65, 2, 17, 65, 0, 114, 1, 105, 101, 108, 2, 115, 0, 114, 105,
+			101, 1, 110, 2, 32, 3, 13, 34, 6, 37, 0, 4, 114, 101, 115, 1, 17, 67, 3, 13, 34, 6, 108, 89, 0, 114, 101, 115, 115, 1,
+			17, 67, 0, 114, 105, 1, 110, 117, 101, 2, 110, 3, 13, 34, 6, 109, 0, 114, 1, 112, 111, 108, 2, 17, 65, 3, 13, 34, 10, 0,
+			114, 101, 1, 10, 2, 32, 3, 13, 34, 13, 0, 114, 101, 115, 1, 116, 97, 108, 3, 13, 34, 13, 89, 0, 4, 114, 115, 1, 10, 2,
+			32, 3, 13, 34, 89, 0, 114, 115, 1, 112, 108, 101, 104, 2, 32, 0, 114, 115, 1, 112, 114, 101, 119, 2, 32, 0, 114, 115, 1, 112,
+			114, 111, 100, 2, 32, 0, 114, 115, 1, 119, 101, 105, 2, 116, 101, 114, 0, 114, 115, 121, 100, 115, 1, 17, 67, 3, 13, 34, 89, 123,
+			47, 89, 0, 114, 101, 1, 115, 110, 97, 100, 21, 2, 25, 3, 13, 34, 108, 0, 114, 105, 103, 1, 25, 10, 3, 13, 34, 109, 136, 0,
+			4, 114, 105, 103, 101, 1, 17, 65, 17, 65, 3, 13, 34, 109, 136, 13, 0, 114, 105, 103, 101, 1, 25, 10, 0, 4, 114, 101, 105, 1,
+			10, 2, 32, 3, 13, 34, 123, 0, 114, 121, 1, 21, 2, 32, 12, 0, 114, 121, 1, 21, 2, 101, 32, 0, 107, 101, 1, 110, 2, 32,
+			3, 13, 49, 13, 0, 108, 1, 102, 102, 2, 21, 3, 13, 55, 0, 108, 97, 103, 116, 105, 103, 3, 13, 55, 6, 35, 136, 47, 13, 136,
+			0, 108, 1, 103, 110, 97, 109, 2, 17, 65, 3, 13, 55, 10, 0, 108, 101, 1, 10, 2, 32, 3, 13, 55, 13, 0, 108, 105, 107, 1,
+			10, 2, 105, 110, 103, 3, 13, 55, 13, 49, 0, 108, 105, 107, 104, 101, 105, 100, 1, 10, 3, 13, 55, 13, 49, 123, 47, 0, 108, 105,
+			103, 97, 1, 21, 2, 32, 3, 13, 55, 37, 136, 35, 0, 108, 97, 97, 114, 3, 13, 55, 115, 34, 0, 108, 111, 111, 115, 1, 17, 67,
+			3, 13, 55, 117, 89, 0, 108, 111, 115, 101, 1, 17, 67, 3, 13, 55, 117, 89, 13, 0, 108, 121, 115, 1, 17, 67, 21, 3, 13, 55,
+			123, 89, 0, 100, 101, 114, 109, 1, 17, 67, 21, 3, 13, 72, 112, 34, 14, 65, 10, 0, 100, 97, 110, 115, 1, 17, 67, 21, 3, 13,
+			72, 133, 50, 89, 0, 119, 101, 114, 107, 1, 17, 67, 21, 3, 13, 84, 112, 34, 49, 0, 119, 121, 1, 17, 67, 2, 17, 67, 3, 13,
+			84, 123, 0, 4, 115, 1, 17, 67, 17, 65, 17, 65, 17, 67, 29, 2, 32, 3, 13, 89, 0, 115, 1, 17, 67, 17, 65, 29, 2, 32,
+			0, 115, 1, 100, 17, 65, 17, 65, 17, 65, 17, 67, 29, 2, 32, 0, 115, 1, 100, 17, 67, 10, 2, 32, 0, 115, 1, 105, 17, 65,
+			17, 65, 2, 32, 0, 115, 1, 107, 2, 32, 0, 4, 115, 115, 1, 17, 67, 21, 2, 32, 3, 21, 0, 120, 2, 12, 0, 121, 2, 32,
+			0, 4, 1, 17, 67, 101, 111, 17, 67, 2, 116, 106, 105, 101, 3, 37, 0, 1, 110, 110, 97, 112, 2, 116, 106, 105, 101, 0, 116, 106,
+			105, 101, 1, 10, 2, 12, 3, 37, 80, 37, 0, 116, 106, 105, 101, 115, 1, 110, 110, 3, 37, 80, 37, 89, 0, 4, 1, 17, 67, 2,
+			107, 115, 12, 12, 3, 108, 0, 1, 17, 67, 2, 107, 116, 21, 12, 12, 0, 1, 17, 67, 2, 109, 109, 12, 12, 0, 1, 17, 67, 11,
+			2, 116, 116, 12, 0, 1, 17, 67, 17, 65, 17, 67, 2, 17, 67, 11, 0, 1, 100, 2, 102, 105, 0, 1, 100, 101, 114, 112, 2, 115,
+			116, 105, 0, 1, 106, 2, 107, 0, 1, 107, 21, 2, 116, 116, 21, 12, 0, 1, 108, 10, 2, 109, 32, 0, 1, 114, 2, 100, 105, 103,
+			101, 114, 105, 110, 103, 0, 2, 17, 67, 0, 8, 119, 2, 115, 107, 117, 115, 0, 1, 100, 2, 109, 111, 110, 115, 3, 108, 2, 0, 1,
+			17, 67, 2, 104, 108, 101, 32, 12, 3, 108, 12, 0, 116, 106, 105, 101, 115, 1, 110, 17, 67, 3, 108, 37, 80, 37, 89, 0, 112, 105,
+			108, 101, 112, 8, 3, 108, 48, 13, 55, 6, 108, 48, 0, 112, 115, 1, 17, 67, 21, 2, 12, 3, 108, 48, 89, 0, 120, 105, 107, 1,
+			109, 3, 108, 49, 89, 2, 37, 49, 0, 120, 97, 115, 1, 116, 3, 108, 49, 89, 13, 89, 0, 107, 115, 116, 97, 115, 101, 3, 108, 49,
+			89, 47, 6, 115, 89, 13, 0, 107, 115, 116, 101, 114, 8, 2, 25, 3, 108, 49, 89, 47, 13, 34, 0, 107, 115, 116, 114, 97, 2, 25,
+			3, 108, 49, 89, 47, 34, 35, 0, 118, 111, 108, 117, 115, 3, 108, 84, 110, 55, 6, 118, 89, 0, 4, 1, 17, 67, 2, 107, 3, 112,
+			0, 1, 17, 67, 2, 107, 107, 21, 12, 0, 1, 17, 67, 11, 2, 103, 103, 0, 1, 17, 67, 17, 65, 17, 67, 2, 103, 103, 0, 1,
+			17, 67, 21, 2, 103, 100, 12, 0, 1, 17, 67, 21, 2, 108, 107, 32, 12, 0, 1, 17, 67, 21, 2, 108, 107, 101, 32, 0, 1, 100,
+			21, 2, 114, 110, 115, 116, 12, 12, 0, 1, 100, 100, 108, 2, 108, 103, 17, 65, 17, 67, 0, 1, 107, 115, 21, 2, 108, 0, 1, 108,
+			108, 2, 108, 25, 0, 1, 109, 21, 2, 108, 100, 0, 1, 110, 107, 2, 108, 0, 1, 112, 115, 17, 67, 2, 108, 100, 0, 1, 112, 115,
+			17, 67, 2, 108, 115, 0, 1, 112, 115, 101, 103, 2, 108, 100, 0, 1, 112, 115, 117, 111, 107, 115, 2, 108, 32, 0, 1, 112, 115, 121,
+			108, 98, 2, 108, 25, 0, 1, 115, 17, 67, 2, 108, 102, 0, 1, 115, 17, 67, 2, 108, 108, 101, 32, 0, 1, 115, 107, 110, 111, 114,
+			116, 2, 108, 0, 1, 115, 114, 101, 105, 101, 2, 108, 0, 1, 116, 17, 65, 17, 67, 2, 103, 110, 0, 1, 118, 101, 17, 67, 2, 103,
+			25, 0, 1, 119, 17, 65, 17, 67, 2, 114, 107, 17, 65, 0, 1, 119, 17, 65, 17, 67, 2, 114, 107, 25, 0, 1, 119, 21, 2, 108,
+			115, 121, 110, 0, 1, 119, 108, 111, 98, 2, 114, 107, 32, 0, 2, 103, 25, 0, 2, 108, 25, 0, 2, 114, 0, 4, 114, 8, 2, 98,
+			3, 112, 34, 6, 0, 114, 8, 2, 118, 0, 114, 112, 1, 17, 67, 21, 2, 32, 3, 112, 34, 48, 0, 114, 112, 101, 1, 17, 67, 21,
+			2, 32, 3, 112, 34, 48, 13, 0, 114, 112, 105, 101, 1, 17, 67, 21, 2, 32, 3, 112, 34, 48, 37, 0, 4, 114, 107, 101, 1, 109,
+			2, 110, 100, 3, 112, 34, 49, 13, 0, 114, 107, 101, 1, 112, 2, 110, 100, 0, 114, 107, 101, 1, 119, 2, 110, 100, 0, 114, 100, 101,
+			8, 2, 17, 67, 3, 112, 34, 72, 13, 0, 114, 102, 1, 17, 67, 21, 2, 32, 3, 112, 34, 83, 0, 114, 119, 101, 1, 17, 67, 21,
+			2, 32, 3, 112, 34, 84, 13, 0, 4, 114, 115, 1, 112, 102, 2, 32, 3, 112, 34, 89, 0, 114, 115, 1, 112, 103, 2, 32, 0, 114,
+			115, 1, 112, 107, 2, 32, 0, 114, 115, 1, 112, 108, 2, 32, 0, 114, 115, 1, 112, 110, 2, 32, 0, 114, 115, 1, 112, 114, 2, 32,
+			0, 108, 112, 101, 8, 3, 112, 55, 48, 13, 0, 4, 114, 115, 1, 107, 103, 3, 113, 34, 89, 0, 114, 115, 1, 107, 116, 0, 114, 115,
+			1, 112, 117, 111, 108, 98, 0, 4, 3, 116, 0, 1, 17, 67, 2, 107, 17, 65, 12, 0, 1, 100, 17, 67, 17, 65, 2, 108, 101, 32,
+			0, 1, 100, 100, 17, 67, 2, 108, 101, 32, 0, 1, 100, 101, 111, 116, 2, 108, 105, 110, 103, 0, 1, 100, 110, 105, 2, 108, 105, 110,
+			103, 0, 1, 100, 115, 17, 67, 2, 108, 101, 32, 0, 1, 108, 108, 2, 115, 101, 114, 0, 1, 116, 105, 17, 67, 2, 114, 105, 110, 103,
+			0, 1, 116, 110, 171, 195, 105, 2, 114, 21, 110, 0, 1, 119, 21, 2, 103, 101, 110, 100, 101, 0, 1, 119, 114, 2, 115, 101, 32, 0,
+			2, 17, 67, 17, 65, 0, 8, 100, 110, 101, 101, 2, 108, 105, 103, 0, 195, 171, 0, 114, 101, 1, 119, 115, 2, 32, 3, 116, 12, 34,
+			13, 0, 4, 114, 101, 1, 108, 21, 2, 32, 3, 116, 34, 13, 0, 114, 101, 8, 0, 108, 108, 101, 110, 100, 101, 8, 3, 116, 55, 6,
+			108, 50, 72, 13, 0, 108, 108, 101, 110, 100, 105, 103, 8, 3, 116, 55, 6, 108, 50, 72, 13, 136, 0, 108, 97, 97, 114, 1, 100, 114,
+			111, 111, 3, 116, 55, 115, 34, 0, 109, 97, 1, 17, 67, 2, 32, 3, 116, 65, 35, 0, 100, 101, 1, 17, 67, 2, 32, 3, 116, 72,
+			13, 0, 100, 101, 108, 8, 3, 116, 72, 13, 55, 0, 100, 101, 115, 1, 17, 67, 2, 32, 3, 116, 72, 13, 89, 0, 119, 101, 108, 1,
+			17, 67, 2, 17, 65, 3, 116, 84, 13, 55, 0, 119, 105, 103, 104, 101, 105, 2, 100, 3, 116, 84, 13, 136, 4, 123, 0, 4, 105, 3,
+			123, 0, 121, 0, 105, 101, 114, 3, 123, 13, 34, 0, 105, 110, 100, 2, 101, 107, 115, 3, 123, 50, 47, 10, 0, 117, 3, 128, 0, 117,
+			101, 1, 17, 67, 3, 128, 13, 0, 117, 110, 116, 106, 105, 101, 3, 128, 37, 68, 80, 37, 0, 7, 6, 102, 0, 2, 102, 3, 0, 4,
+			105, 101, 108, 100, 3, 21, 0, 105, 116, 122, 8, 0, 117, 108, 1, 21, 2, 32, 0, 3, 83, 0, 4, 97, 2, 98, 114, 105, 101, 107,
+			3, 83, 2, 35, 0, 97, 2, 110, 97, 116, 105, 0, 97, 2, 116, 97, 21, 0, 97, 114, 105, 2, 115, 101, 195, 171, 114, 3, 83, 2,
+			35, 34, 2, 37, 0, 97, 114, 109, 97, 2, 115, 101, 117, 116, 3, 83, 2, 35, 34, 65, 2, 35, 0, 97, 116, 2, 115, 111, 101, 110,
+			3, 83, 2, 35, 47, 0, 97, 107, 2, 116, 111, 114, 101, 3, 83, 2, 35, 49, 0, 97, 107, 117, 108, 2, 116, 101, 105, 116, 3, 83,
+			2, 35, 49, 2, 111, 55, 0, 97, 107, 116, 117, 2, 114, 101, 114, 105, 3, 83, 2, 35, 49, 47, 2, 118, 0, 4, 97, 110, 2, 102,
+			97, 114, 101, 3, 83, 2, 35, 50, 0, 97, 110, 8, 2, 116, 111, 0, 97, 110, 116, 97, 2, 115, 17, 65, 3, 83, 2, 35, 50, 47,
+			2, 35, 0, 97, 109, 105, 2, 108, 105, 17, 65, 3, 83, 2, 35, 65, 37, 0, 97, 98, 114, 105, 2, 17, 67, 17, 65, 3, 83, 2,
+			35, 71, 34, 2, 37, 0, 97, 115, 105, 108, 105, 3, 83, 2, 35, 89, 13, 55, 2, 37, 0, 97, 115, 101, 2, 116, 25, 3, 83, 2,
+			35, 89, 108, 0, 97, 115, 97, 100, 101, 3, 83, 2, 35, 89, 115, 72, 13, 0, 4, 105, 2, 115, 97, 110, 116, 3, 83, 2, 37, 0,
+			105, 8, 2, 110, 97, 21, 0, 105, 97, 115, 107, 111, 3, 83, 2, 37, 35, 89, 49, 2, 40, 0, 111, 114, 101, 2, 108, 3, 83, 2,
+			40, 34, 112, 0, 111, 110, 101, 2, 116, 105, 101, 3, 83, 2, 40, 50, 116, 0, 101, 2, 109, 105, 110, 17, 65, 3, 83, 2, 108, 0,
+			101, 114, 111, 2, 109, 111, 3, 83, 2, 108, 34, 2, 40, 0, 101, 100, 101, 2, 114, 97, 3, 83, 2, 108, 72, 13, 0, 101, 115, 115,
+			111, 114, 2, 97, 21, 3, 83, 2, 108, 89, 13, 34, 0, 111, 2, 115, 115, 105, 101, 108, 3, 83, 2, 110, 0, 111, 114, 8, 2, 17,
+			67, 21, 3, 83, 2, 110, 34, 0, 111, 114, 109, 97, 2, 108, 105, 101, 110, 3, 83, 2, 110, 34, 65, 2, 35, 0, 111, 114, 109, 105,
+			2, 100, 97, 3, 83, 2, 110, 34, 65, 2, 37, 0, 111, 114, 109, 117, 2, 108, 105, 101, 114, 3, 83, 2, 110, 34, 65, 2, 118, 0,
+			111, 110, 2, 116, 101, 105, 110, 3, 83, 2, 110, 50, 0, 111, 110, 100, 117, 101, 3, 83, 2, 110, 50, 72, 118, 0, 111, 115, 2, 102,
+			97, 3, 83, 2, 110, 89, 0, 117, 110, 103, 2, 101, 3, 83, 2, 111, 68, 136, 0, 101, 8, 2, 116, 97, 21, 3, 83, 2, 116, 0,
+			111, 116, 111, 2, 115, 116, 97, 3, 83, 2, 117, 47, 2, 40, 0, 111, 116, 111, 103, 101, 2, 110, 105, 101, 3, 83, 2, 117, 47, 2,
+			40, 136, 116, 0, 111, 110, 101, 2, 116, 105, 101, 107, 3, 83, 2, 117, 50, 13, 0, 117, 8, 2, 116, 105, 3, 83, 2, 118, 0, 117,
+			115, 105, 2, 108, 108, 17, 65, 3, 83, 2, 118, 89, 13, 0, 121, 110, 103, 101, 2, 118, 111, 101, 108, 105, 3, 83, 2, 123, 50, 136,
+			13, 0, 111, 114, 8, 2, 115, 101, 32, 3, 83, 6, 110, 34, 0, 111, 110, 105, 101, 115, 1, 21, 3, 83, 6, 117, 50, 37, 89, 0,
+			4, 105, 2, 115, 105, 101, 107, 3, 83, 13, 0, 105, 2, 115, 107, 17, 65, 0, 101, 114, 2, 119, 101, 101, 108, 3, 83, 13, 34, 0,
+			101, 110, 111, 109, 2, 101, 3, 83, 13, 50, 2, 110, 65, 0, 101, 110, 111, 109, 101, 110, 2, 17, 65, 21, 3, 83, 13, 50, 2, 110,
+			65, 13, 50, 0, 4, 101, 108, 1, 21, 2, 101, 110, 100, 3, 83, 13, 55, 0, 101, 108, 1, 21, 2, 105, 110, 103, 0, 105, 108, 105,
+			2, 112, 112, 17, 65, 3, 83, 13, 55, 13, 0, 105, 108, 105, 115, 116, 121, 110, 3, 83, 13, 55, 13, 89, 47, 6, 123, 50, 0, 105,
+			108, 108, 101, 2, 116, 3, 83, 13, 55, 108, 0, 101, 115, 115, 111, 114, 101, 2, 32, 3, 83, 13, 89, 117, 34, 13, 0, 114, 97, 2,
+			103, 105, 101, 108, 3, 83, 34, 2, 35, 0, 4, 114, 97, 110, 2, 17, 67, 105, 110, 97, 3, 83, 34, 2, 35, 50, 0, 114, 97, 110,
+			8, 2, 17, 67, 105, 115, 17, 67, 17, 65, 0, 114, 97, 110, 103, 105, 2, 112, 97, 110, 105, 3, 83, 34, 2, 35, 68, 2, 37, 0,
+			114, 101, 2, 107, 119, 101, 110, 3, 83, 34, 2, 37, 0, 114, 111, 110, 116, 2, 17, 65, 21, 3, 83, 34, 2, 110, 50, 47, 0, 114,
+			117, 2, 115, 116, 114, 3, 83, 34, 2, 111, 0, 114, 105, 107, 107, 97, 100, 101, 2, 108, 3, 83, 34, 13, 49, 13, 72, 112, 0, 114,
+			101, 117, 100, 3, 83, 34, 124, 72, 0, 97, 2, 108, 97, 110, 107, 115, 3, 83, 35, 0, 105, 110, 101, 1, 114, 111, 109, 2, 21, 3,
+			83, 37, 50, 13, 10, 0, 4, 111, 110, 105, 101, 1, 21, 3, 83, 40, 50, 6, 37, 0, 111, 110, 105, 101, 1, 21, 2, 115, 21, 21,
+			0, 4, 108, 97, 2, 103, 114, 97, 110, 116, 3, 83, 55, 2, 35, 0, 108, 97, 2, 109, 105, 0, 108, 97, 109, 98, 111, 2, 106, 97,
+			110, 116, 3, 83, 55, 2, 35, 65, 71, 2, 40, 0, 108, 111, 2, 114, 101, 3, 83, 55, 2, 40, 0, 108, 101, 98, 2, 111, 116, 111,
+			109, 105, 101, 3, 83, 55, 2, 108, 71, 0, 108, 111, 114, 105, 2, 115, 115, 17, 65, 3, 83, 55, 2, 117, 34, 13, 0, 108, 117, 2,
+			119, 101, 3, 83, 55, 2, 118, 0, 108, 105, 107, 116, 8, 2, 101, 114, 17, 65, 3, 83, 55, 13, 49, 47, 0, 101, 115, 115, 111, 114,
+			3, 83, 108, 89, 13, 34, 0, 111, 107, 8, 2, 111, 3, 83, 110, 49, 10, 0, 117, 110, 103, 117, 115, 3, 83, 111, 68, 81, 111, 89,
+			10, 0, 101, 98, 114, 117, 97, 114, 105, 101, 3, 83, 116, 71, 34, 118, 4, 115, 34, 37, 0, 111, 2, 116, 111, 103, 114, 97, 3, 83,
+			117, 0, 111, 116, 111, 3, 83, 117, 47, 40, 0, 111, 108, 105, 111, 3, 83, 117, 55, 37, 10, 40, 0, 101, 105, 116, 101, 3, 83, 123,
+			47, 13, 0, 121, 110, 103, 101, 2, 17, 67, 3, 83, 123, 50, 136, 13, 0, 7, 6, 103, 0, 2, 103, 3, 0, 4, 104, 116, 3, 21,
+			0, 110, 1, 21, 2, 32, 0, 110, 111, 110, 1, 21, 2, 32, 3, 21, 102, 114, 0, 104, 8, 3, 81, 0, 104, 105, 2, 116, 97, 3,
+			81, 2, 37, 0, 117, 105, 108, 108, 111, 116, 105, 110, 101, 3, 81, 2, 37, 55, 2, 40, 47, 37, 50, 0, 111, 2, 114, 105, 108, 108,
+			97, 3, 81, 2, 40, 0, 117, 101, 114, 114, 105, 108, 108, 97, 3, 81, 13, 34, 6, 109, 55, 35, 0, 97, 114, 97, 103, 101, 3, 81,
+			13, 34, 6, 115, 75, 0, 108, 105, 115, 101, 2, 114, 105, 101, 110, 3, 81, 55, 13, 89, 13, 0, 97, 108, 97, 2, 32, 3, 81, 115,
+			55, 2, 35, 0, 111, 117, 114, 109, 101, 116, 3, 81, 117, 34, 65, 123, 12, 0, 4, 3, 136, 0, 104, 2, 32, 0, 4, 97, 2, 108,
+			17, 65, 17, 67, 3, 136, 2, 35, 0, 97, 2, 114, 105, 101, 112, 0, 97, 114, 2, 110, 3, 136, 2, 35, 34, 0, 97, 114, 121, 101,
+			1, 17, 67, 21, 3, 136, 2, 35, 34, 6, 123, 13, 0, 97, 114, 110, 105, 2, 115, 111, 101, 110, 3, 136, 2, 35, 34, 50, 2, 37,
+			0, 97, 108, 2, 106, 111, 101, 110, 3, 136, 2, 35, 55, 0, 97, 108, 97, 2, 115, 105, 3, 136, 2, 35, 55, 115, 0, 111, 101, 100,
+			2, 103, 117, 110, 115, 116, 3, 136, 2, 40, 47, 0, 111, 101, 100, 101, 114, 2, 116, 105, 101, 3, 136, 2, 40, 72, 13, 34, 0, 111,
+			101, 119, 101, 114, 8, 3, 136, 2, 40, 84, 13, 34, 0, 111, 114, 2, 100, 121, 110, 3, 136, 2, 110, 34, 0, 4, 111, 100, 2, 115,
+			97, 108, 105, 103, 3, 136, 2, 110, 47, 0, 111, 100, 2, 118, 114, 0, 4, 111, 100, 115, 2, 100, 105, 101, 110, 115, 116, 105, 103, 3,
+			136, 2, 110, 47, 89, 0, 111, 100, 115, 2, 108, 97, 115, 116, 101, 114, 0, 111, 100, 100, 101, 2, 108, 111, 3, 136, 2, 110, 72, 13,
+			0, 117, 116, 116, 117, 2, 114, 97, 3, 136, 2, 111, 47, 2, 111, 0, 111, 2, 100, 105, 110, 3, 136, 2, 117, 0, 97, 117, 116, 101,
+			110, 103, 3, 136, 2, 129, 47, 108, 68, 0, 111, 195, 171, 1, 17, 65, 3, 136, 6, 40, 13, 0, 97, 109, 105, 101, 115, 3, 136, 6,
+			115, 65, 37, 89, 0, 111, 111, 103, 1, 17, 65, 2, 32, 3, 136, 6, 117, 136, 0, 111, 103, 105, 101, 115, 1, 17, 65, 3, 136, 6,
+			117, 136, 37, 89, 0, 97, 115, 8, 2, 17, 65, 3, 136, 7, 35, 89, 10, 0, 103, 101, 1, 21, 2, 32, 3, 136, 13, 0, 105, 109,
+			2, 110, 97, 25, 3, 136, 13, 65, 0, 105, 109, 110, 97, 2, 115, 105, 17, 65, 3, 136, 13, 65, 50, 115, 0, 4, 114, 97, 2, 102,
+			105, 101, 107, 3, 136, 34, 2, 35, 0, 114, 97, 2, 102, 105, 101, 116, 0, 114, 97, 2, 110, 105, 101, 116, 0, 114, 97, 2, 115, 105,
+			101, 117, 0, 114, 97, 8, 2, 118, 17, 65, 0, 114, 97, 110, 100, 105, 2, 111, 3, 136, 34, 2, 35, 50, 72, 2, 37, 0, 114, 97,
+			109, 97, 2, 100, 111, 101, 3, 136, 34, 2, 35, 65, 2, 35, 0, 114, 97, 109, 109, 97, 2, 116, 105, 107, 3, 136, 34, 2, 35, 65,
+			35, 0, 114, 97, 100, 101, 2, 114, 105, 110, 103, 3, 136, 34, 2, 35, 72, 116, 0, 114, 111, 110, 100, 119, 101, 116, 108, 105, 107, 3,
+			136, 34, 2, 110, 50, 47, 84, 108, 47, 55, 13, 49, 0, 114, 97, 97, 100, 8, 2, 116, 3, 136, 34, 2, 115, 0, 4, 114, 97, 97,
+			100, 8, 2, 110, 101, 103, 101, 3, 136, 34, 2, 115, 47, 0, 114, 97, 97, 100, 8, 2, 118, 121, 102, 0, 114, 97, 97, 100, 8, 2,
+			101, 3, 136, 34, 2, 115, 47, 10, 0, 114, 97, 97, 100, 115, 101, 8, 2, 115, 3, 136, 34, 2, 115, 47, 89, 108, 0, 114, 1, 97,
+			17, 67, 117, 111, 2, 111, 111, 116, 106, 105, 101, 3, 136, 34, 6, 0, 4, 114, 97, 8, 2, 110, 97, 3, 136, 34, 13, 0, 114, 105,
+			2, 102, 102, 105, 101, 114, 0, 114, 105, 8, 2, 109, 17, 65, 0, 114, 97, 115, 8, 2, 17, 65, 3, 136, 34, 35, 89, 10, 0, 114,
+			105, 101, 107, 119, 97, 3, 136, 34, 37, 49, 58, 35, 0, 114, 111, 110, 100, 119, 101, 2, 116, 25, 3, 136, 34, 110, 50, 47, 84, 108,
+			0, 114, 111, 110, 100, 119, 101, 116, 2, 97, 3, 136, 34, 110, 50, 47, 84, 108, 47, 10, 0, 114, 97, 8, 2, 115, 105, 101, 3, 136,
+			34, 115, 0, 114, 97, 100, 101, 2, 17, 67, 3, 136, 34, 115, 72, 13, 0, 114, 111, 116, 101, 114, 101, 3, 136, 34, 117, 47, 13, 34,
+			13, 0, 4, 114, 111, 110, 100, 1, 114, 101, 116, 103, 97, 2, 105, 3, 136, 34, 131, 50, 47, 10, 0, 114, 111, 110, 100, 2, 111, 0,
+			97, 116, 8, 2, 111, 3, 136, 35, 47, 10, 0, 97, 109, 105, 101, 2, 32, 3, 136, 35, 65, 6, 37, 0, 111, 103, 105, 101, 1, 17,
+			65, 2, 32, 3, 136, 40, 136, 6, 37, 0, 108, 101, 116, 115, 101, 114, 3, 136, 55, 7, 108, 47, 89, 13, 34, 0, 108, 97, 110, 115,
+			3, 136, 55, 35, 50, 89, 0, 4, 108, 97, 115, 2, 97, 3, 136, 55, 35, 89, 10, 0, 108, 97, 115, 2, 111, 0, 105, 102, 8, 2,
+			17, 65, 3, 136, 109, 83, 10, 0, 111, 109, 97, 103, 2, 116, 105, 103, 3, 136, 110, 65, 10, 2, 35, 136, 0, 117, 115, 2, 111, 111,
+			105, 3, 136, 111, 89, 10, 0, 97, 100, 101, 8, 3, 136, 115, 72, 13, 0, 4, 97, 115, 2, 101, 114, 105, 103, 3, 136, 115, 89, 0,
+			97, 115, 2, 105, 101, 0, 97, 115, 2, 105, 103, 0, 195, 169, 115, 101, 108, 3, 136, 116, 89, 13, 55, 0, 4, 111, 117, 100, 2, 97,
+			21, 3, 136, 120, 47, 10, 0, 111, 117, 100, 2, 111, 0, 104, 101, 105, 100, 1, 21, 3, 136, 123, 47, 0, 4, 97, 110, 115, 1, 21,
+			3, 136, 133, 50, 89, 0, 97, 110, 115, 2, 17, 67, 0, 7, 6, 104, 0, 4, 1, 17, 65, 21, 2, 32, 3, 0, 2, 104, 3, 0,
+			108, 101, 1, 17, 65, 2, 32, 3, 8, 105, 108, 0, 3, 107, 0, 97, 114, 2, 112, 111, 101, 110, 3, 107, 2, 35, 34, 0, 4, 97,
+			114, 100, 2, 17, 67, 21, 3, 107, 2, 35, 34, 47, 0, 97, 114, 116, 2, 114, 111, 101, 114, 0, 97, 114, 116, 2, 115, 116, 111, 103,
+			116, 101, 32, 0, 97, 114, 108, 101, 2, 107, 121, 110, 3, 107, 2, 35, 34, 55, 13, 0, 97, 114, 109, 111, 2, 110, 105, 101, 3, 107,
+			2, 35, 34, 65, 2, 40, 0, 4, 97, 108, 2, 115, 115, 116, 97, 114, 3, 107, 2, 35, 55, 0, 97, 108, 2, 118, 101, 21, 0, 97,
+			108, 102, 2, 118, 105, 101, 114, 0, 97, 108, 102, 2, 118, 121, 102, 0, 97, 108, 111, 2, 103, 101, 3, 107, 2, 35, 55, 2, 40, 0,
+			97, 108, 108, 101, 108, 117, 106, 97, 3, 107, 2, 35, 55, 13, 55, 118, 57, 2, 35, 0, 4, 97, 108, 102, 2, 100, 114, 105, 101, 3,
+			107, 2, 35, 55, 83, 0, 97, 108, 102, 2, 107, 114, 111, 21, 0, 97, 108, 102, 2, 110, 101, 103, 101, 0, 97, 108, 102, 2, 115, 101,
+			119, 101, 0, 97, 108, 102, 2, 116, 105, 101, 110, 0, 97, 108, 102, 2, 116, 119, 97, 97, 108, 102, 0, 97, 108, 102, 2, 116, 119, 101,
+			101, 0, 4, 97, 108, 102, 2, 101, 101, 110, 3, 107, 2, 35, 55, 83, 10, 0, 97, 108, 102, 2, 101, 108, 102, 0, 97, 108, 102, 8,
+			2, 97, 103, 25, 0, 97, 108, 102, 115, 101, 2, 115, 3, 107, 2, 35, 55, 83, 89, 108, 0, 4, 105, 2, 115, 116, 111, 3, 107, 2,
+			37, 0, 105, 8, 2, 98, 105, 115, 0, 105, 101, 114, 110, 97, 2, 109, 97, 97, 108, 3, 107, 2, 37, 12, 34, 50, 115, 0, 105, 195,
+			171, 114, 2, 97, 114, 103, 105, 101, 3, 107, 2, 37, 13, 34, 0, 105, 195, 171, 114, 97, 114, 2, 103, 105, 101, 32, 24, 3, 107, 2,
+			37, 13, 34, 2, 35, 34, 0, 105, 195, 171, 114, 111, 2, 103, 108, 105, 101, 3, 107, 2, 37, 13, 34, 2, 40, 0, 105, 112, 2, 110,
+			111, 17, 67, 17, 65, 3, 107, 2, 37, 48, 0, 105, 112, 101, 114, 2, 98, 111, 3, 107, 2, 37, 48, 13, 34, 0, 105, 97, 2, 115,
+			105, 110, 116, 3, 107, 2, 37, 57, 2, 35, 0, 105, 115, 116, 114, 105, 2, 111, 110, 3, 107, 2, 37, 89, 47, 34, 2, 37, 0, 105,
+			195, 171, 110, 97, 3, 107, 2, 37, 116, 12, 50, 35, 0, 105, 103, 105, 195, 171, 2, 110, 17, 65, 3, 107, 2, 37, 136, 2, 37, 116,
+			0, 111, 116, 101, 2, 108, 3, 107, 2, 40, 47, 112, 0, 111, 101, 118, 101, 2, 114, 3, 107, 2, 40, 83, 112, 0, 111, 101, 118, 101,
+			101, 108, 104, 2, 101, 3, 107, 2, 40, 83, 116, 55, 107, 0, 111, 2, 110, 110, 101, 117, 114, 3, 107, 2, 110, 0, 4, 111, 114, 2,
+			108, 111, 115, 3, 107, 2, 110, 34, 0, 111, 114, 2, 109, 111, 0, 111, 114, 114, 105, 2, 98, 17, 65, 3, 107, 2, 110, 34, 2, 37,
+			0, 111, 110, 103, 2, 97, 3, 107, 2, 110, 68, 136, 0, 111, 114, 105, 115, 111, 110, 2, 116, 97, 3, 107, 2, 117, 34, 2, 37, 89,
+			2, 110, 50, 0, 4, 111, 111, 103, 2, 100, 114, 97, 3, 107, 2, 117, 136, 0, 111, 111, 103, 2, 109, 111, 101, 100, 105, 103, 0, 117,
+			2, 109, 101, 117, 114, 3, 107, 2, 118, 0, 117, 105, 115, 2, 104, 111, 117, 100, 32, 3, 107, 2, 127, 89, 0, 97, 114, 116, 105, 103,
+			1, 21, 3, 107, 6, 35, 34, 47, 13, 136, 0, 97, 108, 1, 17, 67, 21, 2, 115, 17, 65, 3, 107, 6, 35, 55, 0, 97, 108, 102,
+			8, 2, 103, 101, 14, 128, 132, 132, 3, 107, 6, 35, 55, 83, 0, 105, 110, 107, 101, 2, 112, 105, 110, 107, 3, 107, 13, 68, 49, 13,
+			0, 4, 97, 114, 100, 2, 104, 101, 105, 100, 3, 107, 35, 34, 47, 0, 97, 114, 100, 2, 108, 111, 0, 97, 114, 100, 2, 115, 116, 101,
+			0, 97, 114, 116, 2, 115, 116, 111, 103, 116, 101, 32, 24, 0, 97, 114, 100, 103, 101, 2, 17, 67, 3, 107, 35, 34, 47, 136, 13, 0,
+			97, 114, 109, 111, 110, 105, 101, 115, 3, 107, 35, 34, 65, 6, 117, 50, 37, 89, 0, 97, 114, 100, 101, 3, 107, 35, 34, 72, 13, 0,
+			97, 110, 100, 2, 111, 3, 107, 35, 50, 47, 19, 0, 105, 116, 108, 101, 114, 3, 107, 37, 47, 55, 13, 34, 0, 105, 112, 111, 8, 2,
+			21, 14, 128, 132, 132, 3, 107, 37, 48, 40, 0, 105, 110, 2, 100, 111, 101, 3, 107, 37, 50, 0, 105, 109, 110, 101, 3, 107, 37, 65,
+			50, 13, 0, 105, 115, 116, 101, 114, 2, 105, 3, 107, 37, 89, 47, 6, 116, 34, 0, 105, 115, 116, 101, 114, 2, 101, 3, 107, 37, 89,
+			47, 13, 34, 0, 111, 101, 110, 100, 101, 114, 3, 107, 40, 50, 13, 34, 0, 111, 102, 2, 17, 65, 3, 107, 110, 83, 10, 0, 97, 2,
+			119, 101, 3, 107, 115, 0, 97, 112, 101, 114, 3, 107, 115, 48, 13, 34, 0, 97, 110, 101, 8, 2, 17, 67, 3, 107, 115, 50, 13, 0,
+			97, 109, 101, 114, 3, 107, 115, 65, 13, 34, 0, 111, 98, 111, 8, 3, 107, 117, 71, 40, 0, 111, 102, 2, 105, 101, 3, 107, 117, 83,
+			0, 7, 6, 105, 0, 4, 1, 17, 67, 2, 195, 171, 115, 116, 97, 3, 2, 37, 0, 1, 104, 2, 100, 114, 17, 65, 0, 1, 112, 115,
+			2, 111, 101, 110, 0, 1, 120, 97, 116, 2, 21, 0, 1, 180, 195, 2, 25, 0, 2, 114, 111, 110, 105, 101, 0, 2, 118, 111, 111, 114,
+			0, 8, 2, 107, 111, 0, 8, 2, 109, 109, 117, 0, 8, 2, 114, 114, 0, 195, 171, 116, 101, 105, 116, 3, 2, 37, 13, 47, 6, 123,
+			47, 0, 114, 97, 8, 2, 17, 67, 3, 2, 37, 34, 35, 0, 116, 97, 108, 105, 2, 97, 3, 2, 37, 47, 2, 35, 55, 2, 37, 0,
+			101, 116, 101, 114, 109, 97, 2, 103, 3, 2, 37, 47, 13, 34, 65, 2, 35, 0, 112, 101, 2, 107, 111, 110, 3, 2, 37, 48, 13, 0,
+			108, 108, 117, 109, 105, 2, 110, 17, 65, 3, 2, 37, 55, 2, 40, 65, 2, 37, 0, 108, 108, 117, 2, 115, 116, 114, 17, 65, 3, 2,
+			37, 55, 2, 111, 0, 108, 108, 117, 2, 115, 105, 3, 2, 37, 55, 118, 0, 109, 112, 97, 108, 97, 3, 2, 37, 65, 48, 115, 55, 35,
+			0, 98, 101, 114, 2, 105, 21, 3, 2, 37, 71, 116, 34, 0, 100, 8, 2, 17, 65, 3, 2, 37, 72, 0, 4, 100, 101, 2, 97, 3,
+			2, 37, 72, 2, 37, 0, 100, 101, 2, 195, 171, 0, 100, 105, 8, 2, 111, 0, 115, 108, 97, 109, 8, 2, 105, 3, 2, 37, 89, 55,
+			2, 35, 65, 0, 101, 115, 101, 8, 2, 17, 67, 3, 4, 37, 89, 13, 0, 101, 1, 114, 116, 2, 32, 24, 3, 6, 37, 0, 116, 105,
+			115, 1, 17, 67, 21, 2, 32, 3, 6, 37, 47, 13, 89, 0, 4, 101, 107, 1, 110, 21, 2, 32, 3, 6, 37, 49, 0, 101, 107, 1,
+			110, 21, 2, 101, 32, 0, 101, 107, 1, 114, 116, 21, 2, 32, 0, 101, 107, 1, 114, 116, 21, 2, 101, 25, 0, 101, 107, 1, 116, 21,
+			2, 32, 0, 101, 107, 1, 116, 21, 2, 101, 32, 0, 101, 102, 1, 115, 115, 2, 32, 3, 6, 37, 83, 0, 4, 101, 119, 101, 1, 115,
+			110, 2, 25, 3, 6, 37, 84, 13, 0, 101, 119, 101, 1, 115, 115, 2, 32, 0, 115, 105, 101, 1, 17, 67, 3, 6, 37, 89, 37, 0,
+			1, 17, 67, 114, 97, 110, 2, 115, 115, 117, 115, 3, 6, 109, 0, 109, 109, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 6, 109, 65,
+			13, 34, 10, 0, 4, 115, 1, 17, 67, 17, 65, 2, 32, 3, 6, 109, 89, 0, 115, 1, 109, 101, 111, 108, 98, 0, 115, 1, 114, 97,
+			116, 105, 108, 2, 12, 0, 115, 116, 101, 1, 17, 67, 17, 65, 2, 32, 3, 6, 109, 89, 47, 13, 0, 115, 116, 105, 101, 115, 1, 17,
+			67, 21, 3, 6, 109, 89, 47, 37, 89, 0, 4, 115, 107, 1, 17, 67, 2, 32, 3, 6, 109, 89, 49, 0, 115, 107, 1, 17, 67, 2,
+			101, 32, 0, 115, 109, 101, 1, 21, 2, 25, 3, 6, 109, 89, 65, 13, 0, 107, 97, 1, 21, 2, 32, 3, 8, 2, 37, 49, 2, 35,
+			0, 115, 1, 114, 97, 21, 2, 25, 3, 8, 13, 89, 0, 4, 1, 17, 67, 2, 103, 3, 13, 0, 1, 102, 101, 100, 2, 110, 0, 1,
+			109, 2, 110, 105, 115, 116, 101, 114, 0, 1, 115, 105, 114, 107, 2, 25, 0, 2, 110, 110, 101, 101, 109, 98, 97, 0, 2, 116, 105, 101,
+			102, 0, 2, 116, 105, 101, 119, 0, 8, 109, 101, 2, 114, 0, 103, 101, 114, 1, 10, 2, 32, 14, 128, 128, 130, 3, 13, 34, 0, 103,
+			101, 114, 115, 1, 10, 2, 32, 14, 128, 128, 131, 3, 13, 34, 89, 0, 107, 101, 1, 10, 2, 32, 14, 128, 128, 131, 3, 13, 49, 13,
+			0, 107, 101, 114, 1, 108, 10, 2, 17, 67, 3, 13, 49, 13, 34, 0, 107, 101, 110, 100, 1, 17, 67, 10, 3, 13, 49, 13, 50, 47,
+			0, 107, 101, 110, 100, 101, 1, 17, 67, 10, 3, 13, 49, 13, 50, 72, 13, 0, 107, 105, 110, 103, 1, 17, 67, 3, 13, 49, 13, 68,
+			0, 107, 101, 115, 1, 17, 67, 10, 2, 32, 3, 13, 49, 13, 89, 0, 110, 2, 116, 117, 115, 115, 101, 110, 3, 13, 50, 0, 110, 116,
+			101, 110, 2, 115, 3, 13, 50, 47, 108, 50, 0, 110, 115, 117, 114, 103, 101, 110, 2, 17, 67, 3, 13, 50, 89, 2, 111, 34, 136, 108,
+			50, 0, 110, 103, 101, 110, 105, 101, 117, 114, 3, 13, 50, 136, 13, 50, 6, 118, 13, 34, 0, 109, 109, 105, 8, 2, 103, 114, 17, 65,
+			3, 13, 65, 13, 0, 4, 109, 112, 111, 2, 115, 97, 110, 116, 3, 13, 65, 48, 2, 40, 0, 109, 112, 111, 2, 116, 101, 0, 109, 112,
+			101, 114, 97, 2, 116, 17, 65, 21, 3, 13, 65, 48, 2, 108, 34, 2, 35, 0, 109, 98, 101, 2, 115, 3, 13, 65, 71, 13, 0, 4,
+			115, 1, 98, 117, 112, 2, 32, 3, 13, 89, 0, 115, 1, 108, 105, 117, 118, 0, 115, 1, 108, 111, 112, 2, 32, 0, 115, 1, 109, 17,
+			65, 17, 65, 2, 32, 0, 115, 1, 110, 101, 2, 25, 0, 4, 115, 1, 110, 102, 2, 17, 65, 3, 13, 89, 10, 0, 115, 1, 110, 110,
+			2, 17, 65, 0, 115, 114, 97, 101, 2, 108, 105, 21, 3, 13, 89, 34, 2, 121, 0, 115, 114, 97, 101, 2, 108, 105, 3, 13, 89, 34,
+			122, 0, 103, 101, 114, 1, 17, 67, 21, 2, 17, 67, 17, 65, 3, 13, 136, 13, 34, 0, 103, 101, 110, 100, 1, 17, 67, 21, 2, 32,
+			3, 13, 136, 13, 50, 47, 0, 103, 101, 110, 100, 101, 1, 17, 67, 21, 3, 13, 136, 13, 50, 72, 13, 0, 103, 105, 110, 103, 1, 17,
+			67, 3, 13, 136, 13, 68, 0, 103, 104, 101, 105, 2, 100, 3, 13, 136, 123, 0, 4, 99, 1, 21, 2, 32, 3, 21, 0, 108, 101, 115,
+			2, 32, 0, 116, 121, 2, 32, 24, 0, 195, 169, 3, 26, 37, 0, 4, 3, 37, 0, 1, 21, 2, 115, 101, 114, 105, 110, 103, 0, 1,
+			104, 2, 100, 114, 111, 0, 1, 115, 112, 2, 103, 17, 65, 0, 2, 17, 67, 17, 65, 0, 8, 116, 110, 97, 2, 17, 67, 0, 101, 0,
+			101, 1, 103, 2, 114, 105, 103, 0, 101, 1, 104, 2, 114, 100, 105, 101, 0, 101, 1, 107, 2, 114, 97, 110, 17, 67, 0, 101, 1, 107,
+			2, 114, 105, 101, 0, 101, 1, 107, 2, 114, 116, 115, 0, 101, 1, 107, 115, 2, 114, 105, 103, 0, 101, 1, 112, 2, 114, 101, 119, 0,
+			101, 1, 112, 2, 114, 105, 110, 103, 0, 101, 1, 119, 2, 114, 111, 111, 107, 0, 101, 2, 117, 117, 0, 195, 171, 110, 3, 37, 6, 108,
+			50, 0, 97, 116, 101, 114, 1, 17, 67, 3, 37, 6, 115, 47, 13, 34, 0, 97, 116, 114, 105, 101, 115, 1, 17, 67, 3, 37, 6, 115,
+			47, 34, 37, 89, 0, 97, 110, 97, 3, 37, 6, 115, 50, 35, 0, 97, 97, 108, 2, 32, 25, 3, 37, 6, 115, 55, 0, 97, 108, 101,
+			2, 32, 3, 37, 6, 115, 55, 13, 0, 101, 101, 2, 17, 67, 3, 37, 6, 116, 0, 195, 171, 114, 2, 17, 65, 3, 37, 6, 116, 34,
+			0, 195, 171, 108, 101, 3, 37, 6, 116, 55, 13, 0, 101, 117, 115, 3, 37, 6, 128, 89, 0, 101, 1, 17, 67, 2, 114, 3, 37, 12,
+			0, 101, 195, 171, 2, 25, 3, 37, 12, 13, 0, 114, 105, 8, 2, 115, 3, 37, 34, 13, 0, 114, 114, 105, 116, 101, 114, 2, 21, 3,
+			37, 34, 13, 47, 6, 116, 34, 0, 114, 111, 110, 105, 101, 2, 32, 24, 3, 37, 34, 40, 50, 6, 37, 0, 97, 116, 114, 105, 101, 1,
+			17, 67, 3, 37, 35, 47, 34, 6, 37, 0, 116, 101, 105, 116, 3, 37, 47, 6, 123, 47, 0, 116, 101, 109, 3, 37, 47, 108, 65, 0,
+			4, 101, 107, 1, 110, 107, 21, 2, 32, 3, 37, 49, 0, 101, 107, 1, 116, 105, 114, 107, 0, 109, 112, 105, 8, 2, 16, 3, 37, 65,
+			48, 37, 0, 103, 8, 2, 108, 111, 3, 37, 81, 0, 4, 118, 101, 101, 114, 1, 17, 67, 3, 37, 83, 6, 116, 34, 0, 118, 101, 114,
+			1, 17, 67, 2, 17, 65, 0, 115, 101, 101, 114, 1, 21, 3, 37, 89, 6, 116, 34, 0, 115, 101, 114, 101, 110, 1, 21, 2, 100, 3,
+			37, 89, 6, 116, 34, 13, 50, 0, 115, 101, 117, 114, 1, 21, 3, 37, 89, 6, 128, 34, 0, 115, 105, 101, 1, 17, 67, 21, 21, 21,
+			3, 37, 89, 37, 0, 115, 105, 101, 117, 115, 1, 17, 67, 3, 37, 89, 37, 6, 128, 89, 0, 115, 108, 97, 109, 8, 3, 37, 89, 55,
+			35, 65, 0, 103, 101, 114, 105, 110, 103, 1, 21, 3, 37, 136, 6, 116, 34, 13, 68, 0, 4, 1, 29, 2, 103, 25, 12, 3, 109, 0,
+			1, 115, 2, 103, 17, 67, 0, 1, 119, 115, 2, 103, 0, 2, 17, 67, 0, 4, 100, 106, 105, 101, 3, 109, 37, 80, 37, 0, 116, 106,
+			105, 101, 0, 116, 1, 119, 2, 17, 65, 3, 109, 47, 0, 115, 1, 109, 101, 17, 67, 21, 2, 32, 3, 109, 89, 0, 115, 112, 101, 108,
+			1, 17, 67, 3, 109, 89, 48, 13, 55, 0, 103, 101, 1, 10, 2, 32, 3, 109, 136, 13, 0, 103, 101, 115, 1, 10, 2, 32, 3, 109,
+			136, 13, 89, 0, 195, 171, 3, 116, 12, 14, 0, 101, 117, 3, 119, 0, 106, 2, 17, 67, 3, 123, 0, 7, 6, 106, 0, 2, 106, 3,
+			0, 4, 97, 99, 107, 8, 3, 21, 0, 101, 97, 110, 0, 101, 101, 112, 0, 111, 104, 110, 0, 4, 3, 57, 0, 8, 2, 97, 110, 116,
+			106, 105, 101, 25, 12, 12, 0, 97, 8, 2, 17, 67, 111, 98, 17, 65, 3, 57, 2, 35, 0, 97, 112, 111, 2, 110, 3, 57, 2, 35,
+			48, 110, 0, 4, 97, 99, 97, 114, 97, 110, 100, 97, 3, 57, 2, 35, 49, 2, 35, 34, 6, 35, 50, 72, 35, 0, 97, 107, 97, 114,
+			97, 110, 100, 97, 0, 97, 107, 111, 112, 101, 119, 101, 114, 3, 57, 2, 35, 49, 2, 110, 48, 116, 84, 13, 34, 10, 0, 97, 110, 8,
+			2, 17, 67, 21, 3, 57, 2, 35, 50, 0, 97, 108, 111, 101, 2, 115, 105, 101, 3, 57, 2, 35, 55, 2, 40, 0, 97, 115, 2, 109,
+			121, 110, 3, 57, 2, 35, 89, 0, 117, 2, 114, 105, 100, 3, 57, 2, 40, 0, 111, 101, 114, 2, 110, 97, 3, 57, 2, 40, 34, 0,
+			117, 114, 105, 115, 2, 100, 105, 107, 3, 57, 2, 40, 34, 13, 89, 0, 111, 104, 97, 2, 110, 3, 57, 2, 40, 107, 35, 0, 111, 114,
+			100, 97, 8, 2, 110, 105, 17, 65, 3, 57, 2, 110, 34, 72, 115, 0, 97, 107, 111, 98, 2, 114, 101, 103, 111, 112, 3, 57, 2, 115,
+			49, 2, 110, 48, 0, 117, 2, 119, 101, 3, 57, 2, 118, 0, 117, 119, 101, 2, 108, 105, 101, 114, 3, 57, 2, 118, 84, 13, 0, 117,
+			119, 101, 108, 101, 3, 57, 2, 118, 84, 116, 55, 13, 0, 117, 110, 103, 105, 8, 2, 97, 3, 57, 4, 40, 68, 2, 37, 0, 97, 103,
+			8, 2, 17, 65, 3, 57, 7, 35, 136, 10, 0, 101, 114, 117, 115, 97, 108, 101, 109, 3, 57, 13, 34, 118, 89, 2, 35, 55, 2, 108,
+			65, 0, 101, 110, 101, 119, 101, 114, 3, 57, 13, 50, 116, 84, 13, 34, 0, 97, 8, 2, 110, 110, 17, 65, 12, 3, 57, 35, 0, 97,
+			110, 8, 2, 115, 17, 65, 110, 25, 3, 57, 35, 50, 0, 97, 110, 117, 97, 114, 105, 101, 3, 57, 35, 50, 118, 4, 115, 34, 37, 0,
+			97, 103, 117, 97, 114, 3, 57, 35, 81, 58, 35, 34, 0, 101, 115, 117, 115, 3, 57, 37, 12, 89, 111, 89, 0, 117, 110, 105, 101, 3,
+			57, 40, 50, 37, 0, 117, 108, 105, 101, 3, 57, 40, 55, 37, 0, 111, 110, 103, 2, 101, 116, 106, 105, 101, 3, 57, 110, 68, 0, 111,
+			110, 103, 101, 3, 57, 110, 68, 13, 0, 97, 2, 98, 114, 111, 101, 114, 3, 57, 115, 0, 4, 97, 103, 2, 101, 110, 100, 3, 57, 115,
+			136, 0, 97, 103, 2, 101, 114, 0, 97, 103, 2, 105, 110, 103, 0, 101, 108, 108, 105, 101, 3, 75, 6, 108, 55, 37, 0, 111, 117, 108,
+			101, 3, 75, 40, 12, 55, 0, 97, 122, 122, 3, 75, 113, 88, 0, 7, 6, 107, 0, 2, 107, 3, 0, 107, 108, 101, 114, 101, 3, 8,
+			49, 55, 6, 116, 34, 13, 0, 3, 49, 0, 97, 114, 97, 107, 116, 101, 114, 3, 49, 2, 35, 34, 35, 49, 47, 13, 34, 0, 4, 105,
+			2, 110, 101, 116, 105, 101, 3, 49, 2, 37, 0, 105, 8, 2, 116, 97, 0, 105, 97, 97, 116, 3, 49, 2, 37, 38, 115, 47, 0, 105,
+			107, 111, 101, 2, 106, 111, 101, 3, 49, 2, 37, 49, 40, 12, 0, 105, 108, 105, 109, 97, 110, 100, 106, 97, 114, 111, 3, 49, 2, 37,
+			55, 13, 65, 2, 35, 50, 75, 115, 34, 40, 0, 101, 110, 2, 109, 101, 114, 107, 101, 110, 3, 49, 2, 108, 50, 0, 117, 108, 105, 110,
+			3, 49, 2, 111, 55, 2, 37, 50, 0, 101, 114, 97, 2, 109, 105, 101, 107, 3, 49, 2, 112, 34, 2, 35, 0, 101, 108, 107, 105, 101,
+			2, 119, 121, 110, 3, 49, 2, 112, 55, 49, 2, 37, 0, 101, 108, 110, 101, 114, 2, 105, 110, 3, 49, 2, 112, 55, 50, 13, 34, 0,
+			4, 117, 2, 98, 97, 21, 3, 49, 2, 118, 0, 117, 2, 98, 105, 101, 107, 0, 101, 105, 115, 101, 114, 2, 105, 110, 3, 49, 2, 123,
+			88, 13, 34, 0, 117, 110, 100, 105, 1, 21, 2, 103, 3, 49, 6, 111, 50, 72, 13, 0, 117, 115, 1, 105, 3, 49, 6, 111, 89, 0,
+			101, 114, 1, 114, 101, 100, 101, 119, 2, 17, 65, 3, 49, 6, 116, 34, 0, 101, 117, 114, 105, 103, 1, 21, 3, 49, 6, 128, 34, 13,
+			136, 0, 101, 117, 115, 101, 8, 3, 49, 7, 128, 89, 13, 0, 4, 101, 114, 1, 21, 2, 116, 106, 105, 101, 3, 49, 13, 34, 0, 107,
+			101, 114, 2, 17, 65, 0, 101, 114, 101, 110, 100, 1, 110, 2, 32, 3, 49, 13, 34, 13, 50, 47, 0, 101, 114, 101, 110, 100, 101, 1,
+			110, 2, 32, 3, 49, 13, 34, 13, 50, 72, 13, 0, 101, 114, 107, 101, 114, 115, 1, 107, 105, 108, 102, 3, 49, 13, 34, 49, 113, 34,
+			89, 0, 4, 101, 108, 101, 110, 100, 2, 32, 3, 49, 13, 55, 13, 50, 47, 0, 107, 101, 108, 101, 110, 100, 2, 32, 0, 4, 101, 108,
+			101, 110, 100, 101, 2, 32, 3, 49, 13, 55, 13, 50, 72, 13, 0, 107, 101, 108, 101, 110, 100, 101, 2, 32, 0, 4, 101, 108, 105, 110,
+			103, 3, 49, 13, 55, 13, 68, 0, 107, 101, 108, 105, 110, 103, 0, 114, 97, 2, 119, 97, 116, 3, 49, 34, 2, 35, 0, 4, 114, 101,
+			8, 2, 111, 3, 49, 34, 2, 37, 0, 114, 105, 2, 111, 101, 108, 0, 114, 101, 2, 100, 105, 116, 3, 49, 34, 2, 108, 0, 114, 111,
+			107, 111, 100, 105, 2, 108, 3, 49, 34, 2, 110, 49, 13, 72, 109, 0, 114, 117, 103, 101, 114, 3, 49, 34, 6, 128, 13, 34, 0, 114,
+			97, 103, 8, 2, 17, 65, 3, 49, 34, 7, 35, 136, 10, 0, 4, 114, 101, 2, 100, 105, 101, 116, 3, 49, 34, 13, 0, 114, 101, 8,
+			2, 112, 101, 21, 0, 114, 105, 2, 115, 97, 110, 116, 0, 114, 105, 116, 2, 17, 65, 3, 49, 34, 13, 47, 0, 114, 101, 109, 101, 2,
+			116, 97, 114, 116, 3, 49, 34, 13, 65, 13, 0, 114, 105, 109, 105, 2, 110, 17, 65, 3, 49, 34, 13, 65, 13, 6, 0, 114, 105, 115,
+			116, 97, 2, 108, 3, 49, 34, 13, 89, 47, 35, 0, 114, 105, 116, 105, 101, 115, 3, 49, 34, 37, 47, 37, 89, 0, 114, 105, 101, 107,
+			101, 116, 3, 49, 34, 37, 49, 13, 47, 0, 114, 105, 101, 107, 101, 116, 119, 3, 49, 34, 37, 49, 13, 47, 84, 0, 114, 105, 101, 119,
+			101, 2, 108, 3, 49, 34, 37, 84, 13, 0, 114, 97, 2, 103, 105, 101, 3, 49, 34, 115, 0, 97, 109, 101, 108, 101, 8, 3, 49, 35,
+			65, 6, 116, 55, 13, 0, 105, 108, 111, 8, 3, 49, 37, 55, 2, 40, 0, 105, 101, 115, 101, 114, 2, 21, 3, 49, 37, 89, 13, 34,
+			0, 110, 105, 112, 2, 17, 65, 3, 49, 50, 109, 48, 19, 0, 110, 101, 114, 115, 2, 32, 3, 49, 50, 112, 34, 89, 0, 4, 108, 97,
+			2, 115, 115, 105, 101, 107, 3, 49, 55, 2, 35, 0, 108, 97, 2, 118, 105, 101, 114, 0, 108, 97, 114, 105, 110, 101, 2, 116, 3, 49,
+			55, 2, 35, 34, 2, 37, 50, 108, 0, 108, 97, 110, 100, 101, 2, 115, 116, 105, 3, 49, 55, 2, 35, 50, 72, 13, 0, 4, 108, 97,
+			119, 101, 114, 2, 98, 111, 101, 114, 3, 49, 55, 2, 115, 84, 13, 34, 0, 108, 97, 119, 101, 114, 2, 100, 114, 0, 108, 97, 119, 101,
+			114, 2, 104, 101, 101, 114, 0, 108, 97, 119, 101, 114, 2, 106, 97, 115, 0, 108, 97, 119, 101, 114, 2, 110, 101, 103, 101, 0, 108, 97,
+			119, 101, 114, 2, 115, 101, 119, 0, 108, 97, 119, 101, 114, 2, 116, 0, 108, 97, 119, 101, 114, 2, 118, 0, 108, 97, 119, 101, 114, 2,
+			97, 3, 49, 55, 2, 115, 84, 13, 34, 10, 0, 108, 97, 119, 101, 114, 115, 101, 115, 3, 49, 55, 2, 115, 84, 13, 34, 89, 108, 89,
+			0, 108, 111, 117, 2, 115, 117, 108, 101, 3, 49, 55, 2, 120, 0, 108, 101, 105, 110, 2, 115, 105, 101, 108, 105, 3, 49, 55, 2, 123,
+			50, 0, 108, 101, 105, 110, 115, 101, 2, 114, 105, 103, 3, 49, 55, 2, 123, 50, 89, 116, 0, 4, 108, 105, 2, 109, 97, 97, 116, 3,
+			49, 55, 13, 0, 108, 105, 2, 110, 105, 101, 107, 0, 108, 97, 8, 2, 115, 17, 65, 21, 21, 3, 49, 55, 35, 0, 108, 105, 2, 109,
+			111, 112, 3, 49, 55, 109, 0, 108, 105, 112, 2, 17, 65, 3, 49, 55, 109, 48, 10, 0, 108, 105, 109, 1, 103, 114, 101, 98, 2, 17,
+			65, 3, 49, 55, 109, 65, 10, 0, 108, 97, 2, 107, 111, 117, 115, 3, 49, 55, 115, 0, 108, 97, 97, 114, 98, 108, 121, 107, 108, 105,
+			107, 3, 49, 55, 115, 34, 71, 55, 6, 123, 49, 55, 13, 49, 0, 4, 108, 97, 119, 101, 114, 3, 49, 55, 115, 84, 13, 34, 0, 108,
+			97, 119, 101, 114, 2, 118, 101, 108, 100, 0, 108, 97, 118, 101, 115, 105, 109, 98, 101, 108, 3, 49, 55, 115, 84, 13, 89, 13, 65, 71,
+			13, 55, 0, 108, 101, 114, 101, 3, 49, 55, 116, 34, 13, 0, 108, 101, 117, 114, 2, 101, 102, 102, 101, 107, 3, 49, 55, 128, 34, 0,
+			108, 101, 117, 114, 101, 3, 49, 55, 128, 34, 13, 0, 119, 8, 3, 49, 58, 0, 4, 119, 97, 2, 100, 114, 97, 3, 49, 58, 2, 35,
+			0, 119, 97, 2, 116, 114, 121, 110, 0, 119, 97, 114, 8, 2, 116, 17, 65, 3, 49, 58, 2, 35, 34, 0, 119, 97, 114, 97, 110, 2,
+			116, 3, 49, 58, 2, 35, 34, 13, 50, 0, 119, 97, 114, 116, 101, 2, 116, 3, 49, 58, 2, 35, 34, 47, 108, 0, 119, 97, 108, 105,
+			2, 17, 67, 21, 3, 49, 58, 2, 35, 55, 2, 37, 0, 119, 97, 97, 100, 2, 97, 97, 114, 100, 105, 3, 49, 58, 2, 115, 47, 10,
+			0, 119, 105, 2, 116, 97, 110, 115, 3, 49, 58, 13, 0, 119, 105, 110, 116, 101, 2, 116, 3, 49, 58, 13, 50, 47, 108, 0, 119, 97,
+			114, 116, 2, 101, 101, 117, 3, 49, 58, 35, 34, 47, 10, 0, 119, 97, 114, 116, 101, 105, 110, 100, 8, 3, 49, 58, 35, 34, 47, 10,
+			123, 50, 47, 0, 119, 97, 114, 116, 101, 108, 3, 49, 58, 35, 34, 47, 13, 55, 10, 0, 119, 101, 108, 97, 3, 49, 58, 108, 12, 55,
+			35, 0, 119, 105, 107, 8, 2, 17, 65, 3, 49, 58, 109, 49, 10, 0, 101, 2, 110, 110, 17, 65, 25, 3, 49, 108, 0, 117, 114, 119,
+			101, 3, 49, 111, 34, 84, 13, 0, 101, 114, 1, 21, 2, 115, 105, 101, 32, 3, 49, 112, 34, 0, 101, 114, 107, 2, 32, 3, 49, 112,
+			34, 49, 0, 101, 114, 107, 101, 2, 32, 3, 49, 112, 34, 49, 13, 0, 101, 114, 107, 101, 114, 3, 49, 112, 34, 49, 13, 34, 0, 101,
+			114, 107, 105, 101, 2, 25, 3, 49, 112, 34, 49, 37, 0, 101, 108, 110, 101, 114, 3, 49, 112, 55, 50, 13, 34, 0, 4, 101, 114, 115,
+			1, 108, 101, 116, 116, 111, 98, 3, 49, 113, 34, 89, 0, 101, 114, 115, 1, 115, 101, 101, 102, 0, 101, 116, 101, 2, 108, 3, 49, 116,
+			47, 13, 0, 101, 105, 115, 101, 114, 3, 49, 123, 88, 13, 34, 0, 7, 6, 108, 0, 2, 108, 3, 0, 111, 107, 111, 109, 111, 3, 4,
+			55, 40, 49, 40, 65, 40, 6, 0, 4, 97, 110, 100, 8, 2, 32, 114, 111, 118, 101, 114, 3, 21, 0, 101, 1, 17, 67, 2, 32, 0,
+			101, 115, 115, 1, 21, 2, 32, 0, 108, 1, 21, 2, 32, 24, 0, 3, 55, 0, 4, 97, 2, 116, 101, 110, 116, 3, 55, 2, 35, 0,
+			97, 8, 2, 107, 111, 110, 0, 97, 116, 114, 105, 110, 101, 3, 55, 2, 35, 47, 34, 37, 50, 13, 0, 97, 112, 97, 114, 2, 111, 116,
+			111, 109, 105, 3, 55, 2, 35, 48, 2, 35, 34, 0, 97, 112, 101, 108, 2, 32, 3, 55, 2, 35, 48, 6, 112, 55, 0, 97, 112, 101,
+			2, 108, 25, 3, 55, 2, 35, 48, 112, 0, 97, 110, 8, 2, 115, 17, 65, 3, 55, 2, 35, 50, 0, 97, 110, 111, 2, 108, 105, 101,
+			110, 3, 55, 2, 35, 50, 2, 40, 0, 97, 110, 100, 101, 2, 114, 121, 3, 55, 2, 35, 50, 72, 13, 0, 97, 109, 2, 108, 101, 110,
+			3, 55, 2, 35, 65, 0, 97, 109, 112, 101, 2, 116, 3, 55, 2, 35, 65, 48, 108, 0, 4, 97, 110, 103, 2, 119, 101, 114, 112, 3,
+			55, 2, 35, 68, 0, 97, 110, 103, 8, 2, 100, 21, 21, 0, 97, 110, 107, 2, 109, 111, 101, 3, 55, 2, 35, 68, 49, 0, 97, 98,
+			105, 2, 114, 105, 110, 116, 3, 55, 2, 35, 71, 13, 0, 97, 98, 111, 114, 97, 116, 111, 114, 3, 55, 2, 35, 71, 14, 34, 2, 35,
+			47, 6, 117, 34, 0, 97, 118, 101, 110, 116, 101, 108, 3, 55, 2, 35, 83, 108, 50, 47, 13, 55, 0, 97, 103, 117, 110, 101, 3, 55,
+			2, 35, 136, 118, 50, 13, 0, 105, 2, 107, 119, 105, 100, 3, 55, 2, 37, 0, 4, 105, 116, 2, 111, 116, 111, 109, 105, 101, 3, 55,
+			2, 37, 47, 0, 105, 116, 8, 2, 111, 103, 114, 97, 102, 0, 105, 116, 111, 8, 2, 17, 67, 3, 55, 2, 37, 47, 2, 40, 0, 105,
+			110, 103, 117, 2, 105, 3, 55, 2, 37, 68, 81, 58, 0, 105, 101, 102, 2, 116, 97, 108, 108, 3, 55, 2, 37, 83, 0, 4, 111, 2,
+			106, 97, 3, 55, 2, 40, 0, 111, 2, 107, 97, 108, 17, 65, 0, 117, 112, 105, 110, 101, 3, 55, 2, 40, 48, 37, 50, 13, 0, 111,
+			98, 111, 116, 111, 2, 109, 105, 101, 3, 55, 2, 40, 71, 2, 110, 47, 2, 40, 0, 111, 115, 105, 101, 115, 8, 3, 55, 2, 40, 89,
+			6, 37, 89, 0, 117, 115, 101, 114, 110, 3, 55, 2, 40, 89, 113, 34, 13, 50, 0, 101, 103, 105, 2, 111, 101, 110, 3, 55, 2, 108,
+			136, 2, 37, 0, 111, 109, 2, 98, 97, 114, 100, 17, 65, 3, 55, 2, 110, 65, 0, 111, 98, 111, 108, 97, 3, 55, 2, 110, 71, 131,
+			55, 35, 0, 111, 115, 98, 97, 110, 100, 105, 2, 103, 3, 55, 2, 110, 89, 71, 35, 50, 72, 13, 0, 117, 2, 109, 105, 101, 114, 3,
+			55, 2, 111, 0, 117, 107, 115, 97, 2, 108, 105, 103, 3, 55, 2, 111, 49, 89, 6, 115, 0, 101, 100, 101, 2, 107, 97, 110, 116, 3,
+			55, 2, 116, 72, 13, 0, 101, 118, 105, 2, 97, 116, 97, 110, 3, 55, 2, 116, 84, 2, 37, 0, 111, 117, 2, 114, 105, 101, 114, 3,
+			55, 2, 120, 0, 4, 121, 107, 2, 109, 111, 101, 100, 3, 55, 2, 123, 49, 0, 121, 107, 2, 110, 97, 109, 0, 117, 105, 116, 101, 2,
+			110, 97, 110, 116, 3, 55, 2, 127, 47, 13, 0, 117, 105, 100, 2, 114, 117, 103, 116, 3, 55, 2, 127, 72, 0, 111, 115, 103, 101, 8,
+			2, 21, 14, 128, 132, 133, 3, 55, 6, 110, 89, 136, 13, 0, 117, 115, 116, 105, 1, 21, 2, 103, 3, 55, 6, 111, 89, 47, 13, 0,
+			101, 101, 114, 1, 105, 17, 67, 3, 55, 6, 116, 34, 0, 101, 114, 105, 110, 103, 2, 32, 3, 55, 6, 116, 34, 13, 68, 0, 117, 103,
+			8, 2, 17, 67, 3, 55, 7, 111, 136, 0, 4, 101, 1, 108, 2, 32, 3, 55, 13, 0, 101, 1, 108, 21, 2, 115, 17, 67, 21, 0,
+			105, 2, 107, 101, 117, 114, 0, 105, 2, 114, 105, 101, 107, 0, 105, 2, 116, 117, 114, 103, 105, 101, 0, 105, 8, 2, 109, 105, 0, 105,
+			116, 101, 114, 2, 17, 65, 3, 55, 13, 47, 13, 34, 0, 105, 116, 101, 114, 97, 2, 116, 3, 55, 13, 47, 13, 34, 2, 35, 0, 105,
+			107, 1, 10, 2, 32, 14, 128, 128, 131, 3, 55, 13, 49, 0, 4, 105, 107, 101, 1, 10, 2, 17, 67, 21, 3, 55, 13, 49, 13, 0,
+			105, 107, 101, 1, 10, 2, 32, 14, 128, 128, 132, 0, 105, 107, 107, 101, 2, 119, 97, 0, 105, 107, 101, 114, 1, 10, 2, 32, 14, 128,
+			128, 133, 3, 55, 13, 49, 13, 34, 0, 105, 107, 101, 115, 1, 10, 2, 32, 14, 128, 128, 133, 3, 55, 13, 49, 13, 89, 0, 105, 107,
+			115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 134, 3, 55, 13, 49, 89, 47, 13, 0, 105, 110, 105, 2, 97, 97, 108, 3, 55, 13, 50,
+			2, 37, 0, 105, 110, 111, 2, 108, 101, 117, 109, 3, 55, 13, 50, 117, 0, 105, 109, 111, 117, 115, 105, 110, 101, 3, 55, 13, 65, 2,
+			40, 88, 37, 12, 50, 0, 105, 98, 101, 2, 114, 17, 65, 3, 55, 13, 71, 13, 0, 105, 98, 101, 8, 2, 114, 105, 21, 3, 55, 13,
+			71, 116, 0, 101, 118, 8, 2, 105, 3, 55, 13, 83, 0, 101, 119, 101, 114, 107, 1, 17, 65, 3, 55, 13, 84, 112, 34, 49, 0, 105,
+			115, 101, 110, 115, 105, 2, 101, 101, 114, 3, 55, 13, 89, 2, 108, 50, 89, 2, 37, 0, 105, 115, 101, 110, 115, 105, 101, 3, 55, 13,
+			89, 108, 12, 50, 89, 2, 37, 0, 105, 103, 2, 104, 111, 111, 102, 100, 3, 55, 13, 136, 0, 105, 103, 101, 110, 3, 55, 13, 136, 6,
+			108, 50, 0, 101, 103, 101, 110, 2, 100, 97, 3, 55, 13, 136, 13, 50, 0, 101, 103, 101, 110, 100, 101, 3, 55, 13, 136, 108, 50, 72,
+			13, 0, 105, 103, 103, 97, 97, 109, 108, 105, 107, 3, 55, 13, 136, 115, 65, 55, 13, 49, 0, 109, 1, 10, 2, 25, 3, 55, 14, 65,
+			0, 97, 110, 103, 101, 8, 2, 17, 67, 17, 65, 3, 55, 35, 68, 13, 0, 97, 102, 2, 97, 97, 114, 3, 55, 35, 83, 0, 4, 105,
+			2, 103, 97, 32, 3, 55, 37, 0, 105, 8, 2, 103, 97, 17, 67, 0, 105, 101, 102, 100, 101, 115, 3, 55, 37, 83, 72, 13, 89, 0,
+			101, 110, 100, 101, 8, 3, 55, 108, 50, 72, 13, 0, 4, 101, 115, 1, 17, 67, 21, 2, 25, 3, 55, 108, 89, 0, 101, 115, 1, 101,
+			105, 2, 32, 0, 101, 115, 115, 101, 1, 17, 67, 21, 2, 32, 3, 55, 108, 89, 13, 0, 105, 8, 2, 103, 3, 55, 109, 0, 105, 110,
+			107, 101, 114, 3, 55, 109, 68, 49, 13, 34, 0, 117, 115, 2, 111, 3, 55, 111, 89, 10, 0, 117, 103, 2, 17, 65, 3, 55, 111, 136,
+			19, 0, 101, 2, 107, 107, 101, 114, 3, 55, 112, 0, 97, 112, 97, 8, 2, 25, 3, 55, 115, 48, 35, 0, 101, 112, 101, 2, 108, 108,
+			3, 55, 116, 48, 13, 0, 101, 110, 105, 110, 103, 3, 55, 116, 50, 13, 68, 0, 101, 108, 105, 2, 107, 3, 55, 116, 55, 13, 0, 4,
+			101, 100, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 116, 72, 13, 0, 101, 100, 101, 1, 114, 101, 118, 2, 25, 0, 101, 100, 101,
+			2, 17, 67, 0, 101, 100, 105, 110, 103, 2, 32, 3, 55, 116, 72, 13, 68, 0, 101, 119, 101, 2, 25, 3, 55, 116, 84, 13, 0, 101,
+			119, 101, 2, 116, 106, 105, 101, 3, 55, 116, 84, 37, 0, 111, 114, 101, 8, 2, 17, 67, 21, 3, 55, 117, 34, 13, 0, 117, 2, 107,
+			119, 97, 114, 116, 3, 55, 118, 0, 117, 116, 104, 101, 114, 3, 55, 118, 47, 13, 34, 0, 101, 117, 101, 110, 2, 116, 106, 105, 101, 3,
+			55, 128, 37, 68, 0, 4, 97, 109, 102, 101, 114, 3, 55, 133, 65, 83, 13, 34, 0, 97, 110, 102, 101, 114, 0, 7, 6, 109, 0, 2,
+			109, 3, 0, 110, 1, 21, 2, 32, 3, 21, 0, 3, 65, 0, 117, 115, 105, 101, 107, 3, 65, 2, 111, 89, 37, 49, 0, 117, 115, 107,
+			97, 100, 101, 108, 3, 65, 2, 111, 89, 49, 2, 35, 72, 112, 55, 0, 117, 115, 107, 101, 2, 116, 105, 101, 114, 3, 65, 2, 111, 89,
+			49, 13, 0, 117, 115, 107, 101, 108, 2, 106, 97, 97, 116, 3, 65, 2, 111, 89, 49, 13, 55, 0, 117, 115, 101, 117, 109, 3, 65, 2,
+			118, 89, 128, 65, 0, 109, 101, 1, 17, 65, 17, 67, 2, 17, 67, 3, 65, 13, 0, 109, 101, 1, 17, 65, 17, 67, 2, 116, 106, 105,
+			101, 3, 65, 37, 0, 112, 101, 108, 1, 21, 2, 17, 65, 3, 65, 48, 13, 55, 0, 117, 114, 109, 101, 108, 3, 65, 111, 34, 65, 13,
+			55, 0, 117, 115, 105, 2, 17, 67, 3, 65, 118, 89, 37, 6, 0, 121, 109, 101, 114, 3, 65, 123, 65, 13, 34, 0, 195, 180, 114, 101,
+			2, 21, 3, 65, 131, 34, 13, 0, 7, 6, 110, 0, 4, 2, 32, 110, 3, 0, 2, 110, 3, 0, 97, 2, 116, 97, 108, 3, 4, 50,
+			35, 6, 0, 4, 3, 50, 0, 1, 10, 2, 103, 97, 116, 0, 1, 97, 97, 2, 103, 97, 115, 0, 1, 101, 2, 103, 111, 101, 17, 67,
+			0, 1, 101, 101, 2, 103, 0, 1, 101, 111, 2, 103, 0, 1, 101, 119, 2, 103, 21, 12, 12, 0, 1, 105, 101, 2, 103, 0, 1, 105,
+			112, 115, 2, 103, 101, 0, 1, 105, 117, 17, 67, 2, 103, 0, 1, 111, 111, 2, 103, 0, 1, 117, 101, 2, 103, 0, 1, 121, 2, 103,
+			0, 1, 171, 195, 2, 103, 0, 2, 32, 110, 32, 0, 8, 2, 17, 65, 17, 65, 0, 4, 97, 1, 21, 2, 108, 105, 115, 3, 50, 2,
+			35, 0, 97, 2, 116, 117, 117, 114, 0, 97, 2, 118, 114, 97, 110, 116, 0, 97, 8, 2, 114, 107, 0, 97, 2, 195, 175, 3, 50, 2,
+			35, 10, 0, 97, 2, 195, 175, 3, 50, 2, 35, 19, 0, 97, 114, 101, 115, 2, 32, 3, 50, 2, 35, 34, 6, 108, 89, 0, 97, 116,
+			117, 114, 101, 2, 108, 25, 3, 50, 2, 35, 47, 2, 118, 34, 112, 0, 97, 112, 111, 108, 101, 2, 111, 110, 116, 3, 50, 2, 35, 48,
+			2, 117, 55, 2, 37, 0, 97, 112, 111, 2, 108, 101, 111, 110, 3, 50, 2, 35, 48, 117, 0, 97, 109, 97, 107, 119, 97, 3, 50, 2,
+			35, 65, 35, 49, 58, 2, 35, 0, 97, 109, 105, 2, 98, 105, 3, 50, 2, 35, 65, 109, 0, 97, 118, 105, 103, 3, 50, 2, 35, 84,
+			2, 37, 136, 0, 97, 115, 105, 111, 2, 110, 97, 3, 50, 2, 35, 91, 2, 37, 2, 40, 0, 101, 2, 97, 110, 100, 101, 114, 17, 67,
+			97, 3, 50, 2, 37, 0, 101, 111, 2, 108, 105, 3, 50, 2, 37, 2, 40, 0, 4, 105, 107, 111, 2, 116, 105, 3, 50, 2, 37, 49,
+			2, 40, 0, 105, 107, 111, 2, 116, 105, 101, 110, 0, 111, 116, 2, 101, 114, 105, 110, 103, 3, 50, 2, 40, 47, 0, 111, 116, 117, 108,
+			101, 2, 25, 3, 50, 2, 40, 47, 118, 55, 13, 0, 111, 118, 101, 108, 108, 101, 3, 50, 2, 40, 83, 112, 55, 13, 0, 101, 107, 116,
+			97, 2, 114, 105, 101, 110, 3, 50, 2, 108, 49, 47, 2, 35, 0, 111, 2, 115, 116, 97, 108, 103, 105, 101, 3, 50, 2, 110, 0, 111,
+			114, 2, 109, 97, 21, 3, 50, 2, 110, 34, 0, 111, 107, 116, 117, 114, 110, 101, 3, 50, 2, 110, 49, 47, 111, 34, 50, 13, 0, 111,
+			110, 99, 104, 97, 2, 108, 97, 3, 50, 2, 110, 50, 91, 2, 35, 0, 111, 109, 105, 2, 110, 17, 65, 3, 50, 2, 110, 65, 2, 37,
+			0, 111, 109, 109, 101, 114, 2, 101, 101, 110, 3, 50, 2, 110, 65, 13, 34, 19, 0, 111, 115, 116, 97, 108, 2, 103, 105, 101, 32, 24,
+			3, 50, 2, 110, 89, 47, 2, 35, 55, 0, 101, 114, 2, 118, 101, 117, 3, 50, 2, 112, 34, 0, 4, 97, 2, 98, 117, 114, 105, 103,
+			3, 50, 2, 115, 0, 97, 2, 98, 121, 103, 101, 0, 97, 8, 2, 98, 121, 21, 0, 97, 8, 2, 100, 101, 108, 105, 103, 0, 97, 8,
+			2, 108, 97, 116, 105, 103, 0, 97, 8, 2, 115, 112, 101, 117, 114, 0, 97, 2, 121, 119, 101, 114, 105, 103, 3, 50, 2, 115, 10, 0,
+			97, 97, 114, 115, 116, 105, 103, 116, 101, 3, 50, 2, 115, 34, 89, 47, 109, 136, 47, 13, 0, 97, 98, 121, 104, 2, 101, 3, 50, 2,
+			115, 71, 123, 107, 0, 4, 101, 101, 114, 2, 100, 114, 117, 107, 107, 3, 50, 2, 116, 34, 0, 101, 101, 114, 2, 104, 97, 108, 101, 110,
+			100, 0, 101, 103, 101, 114, 2, 105, 110, 3, 50, 2, 116, 136, 13, 34, 0, 111, 2, 109, 97, 100, 3, 50, 2, 117, 0, 111, 111, 114,
+			100, 2, 111, 111, 115, 3, 50, 2, 117, 34, 47, 10, 0, 4, 111, 111, 100, 2, 108, 111, 116, 116, 105, 3, 50, 2, 117, 47, 0, 111,
+			111, 100, 2, 115, 97, 97, 107, 0, 111, 116, 97, 114, 105, 2, 17, 65, 3, 50, 2, 117, 47, 2, 35, 34, 2, 37, 38, 0, 111, 98,
+			101, 108, 8, 3, 50, 2, 117, 71, 112, 55, 0, 111, 118, 101, 109, 98, 101, 114, 3, 50, 2, 117, 83, 108, 65, 71, 13, 34, 0, 117,
+			97, 110, 2, 115, 101, 101, 114, 3, 50, 2, 118, 2, 35, 50, 0, 117, 97, 110, 115, 101, 2, 114, 105, 110, 103, 3, 50, 2, 118, 2,
+			35, 50, 89, 116, 0, 117, 97, 110, 115, 101, 2, 25, 3, 50, 2, 118, 35, 50, 89, 13, 0, 117, 119, 101, 114, 2, 119, 101, 116, 3,
+			50, 2, 118, 84, 13, 34, 0, 117, 117, 115, 2, 107, 105, 101, 114, 105, 103, 3, 50, 2, 118, 89, 0, 101, 117, 2, 116, 114, 3, 50,
+			2, 128, 0, 101, 117, 114, 111, 2, 17, 67, 17, 65, 3, 50, 2, 128, 34, 117, 0, 97, 8, 2, 17, 67, 32, 3, 50, 6, 35, 0,
+			97, 103, 8, 2, 17, 67, 3, 50, 6, 35, 136, 0, 97, 8, 3, 50, 6, 115, 0, 97, 103, 8, 2, 114, 97, 97, 100, 3, 50, 6,
+			115, 136, 0, 97, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 50, 6, 115, 136, 13, 0, 101, 108, 101, 1, 10, 2, 32, 3, 50, 6,
+			116, 55, 13, 0, 101, 101, 115, 1, 21, 2, 32, 3, 50, 6, 116, 89, 0, 101, 115, 101, 2, 32, 3, 50, 6, 116, 89, 13, 0, 4,
+			121, 1, 114, 101, 17, 67, 21, 2, 32, 3, 50, 6, 123, 0, 121, 1, 114, 101, 17, 67, 21, 2, 101, 0, 97, 8, 2, 115, 107, 101,
+			101, 114, 3, 50, 7, 115, 0, 101, 101, 114, 103, 101, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 50, 7, 116, 34, 136, 13, 0, 101,
+			2, 103, 111, 115, 105, 101, 3, 50, 13, 0, 110, 105, 110, 103, 3, 50, 13, 68, 0, 110, 101, 115, 1, 97, 104, 3, 50, 13, 89, 0,
+			4, 97, 1, 21, 2, 32, 3, 50, 35, 0, 97, 8, 2, 114, 17, 67, 0, 97, 8, 2, 116, 17, 67, 0, 97, 115, 116, 101, 114, 2,
+			103, 3, 50, 35, 89, 47, 13, 34, 0, 4, 97, 103, 2, 97, 100, 100, 101, 114, 3, 50, 35, 136, 10, 0, 97, 103, 2, 117, 105, 108,
+			0, 97, 103, 8, 2, 97, 97, 112, 0, 97, 103, 8, 2, 97, 112, 17, 65, 0, 105, 116, 114, 111, 3, 50, 37, 47, 34, 2, 40, 0,
+			116, 101, 114, 101, 2, 115, 115, 3, 50, 47, 34, 13, 6, 0, 101, 116, 2, 119, 101, 114, 107, 3, 50, 108, 47, 0, 101, 116, 116, 111,
+			8, 3, 50, 108, 47, 2, 40, 0, 4, 101, 116, 2, 97, 103, 116, 105, 103, 3, 50, 108, 47, 10, 0, 101, 116, 8, 2, 111, 0, 4,
+			101, 115, 1, 17, 67, 21, 2, 32, 3, 50, 108, 89, 0, 101, 115, 1, 101, 121, 98, 0, 101, 115, 1, 115, 2, 25, 0, 101, 115, 1,
+			121, 98, 0, 101, 115, 8, 2, 101, 105, 3, 50, 108, 89, 10, 0, 105, 2, 103, 103, 105, 101, 3, 50, 109, 0, 111, 103, 97, 108, 3,
+			50, 110, 136, 35, 55, 0, 101, 107, 2, 111, 109, 3, 50, 112, 49, 10, 0, 4, 97, 1, 114, 2, 32, 3, 50, 115, 0, 97, 2, 98,
+			111, 111, 116, 115, 0, 97, 2, 116, 114, 105, 117, 109, 0, 97, 2, 116, 114, 111, 115, 25, 0, 97, 2, 118, 114, 97, 0, 97, 8, 2,
+			103, 108, 111, 101, 0, 97, 8, 2, 115, 112, 101, 117, 114, 32, 24, 0, 97, 8, 2, 116, 114, 101, 107, 25, 0, 97, 1, 10, 2, 119,
+			101, 3, 50, 115, 2, 0, 97, 122, 105, 3, 50, 115, 47, 89, 37, 0, 97, 109, 101, 115, 3, 50, 115, 65, 13, 89, 0, 97, 100, 114,
+			117, 107, 108, 105, 107, 3, 50, 115, 72, 34, 6, 111, 49, 55, 13, 49, 0, 101, 116, 101, 108, 3, 50, 116, 47, 13, 55, 0, 111, 111,
+			100, 2, 115, 97, 97, 107, 32, 24, 3, 50, 117, 47, 0, 111, 116, 101, 2, 98, 3, 50, 117, 47, 13, 0, 121, 108, 111, 110, 3, 50,
+			122, 55, 110, 50, 0, 101, 117, 116, 101, 3, 50, 128, 47, 13, 0, 103, 101, 101, 115, 3, 50, 136, 116, 89, 0, 4, 2, 99, 3, 68,
+			0, 2, 107, 0, 2, 113, 0, 2, 116, 106, 105, 101, 0, 2, 120, 0, 103, 0, 103, 101, 114, 1, 17, 65, 17, 67, 3, 68, 13, 34,
+			0, 103, 101, 115, 1, 21, 2, 32, 3, 68, 13, 89, 0, 103, 117, 110, 105, 8, 3, 68, 81, 40, 12, 50, 37, 0, 4, 103, 1, 21,
+			2, 105, 116, 105, 115, 32, 3, 68, 136, 0, 103, 2, 101, 101, 82, 0, 103, 2, 101, 110, 116, 0, 7, 6, 111, 0, 4, 1, 17, 67,
+			2, 17, 67, 17, 65, 17, 65, 3, 2, 40, 0, 1, 17, 67, 2, 17, 67, 121, 0, 1, 17, 67, 10, 2, 32, 24, 0, 1, 107, 105,
+			115, 105, 114, 0, 2, 108, 105, 101, 110, 0, 97, 115, 101, 3, 2, 40, 10, 115, 89, 13, 0, 8, 105, 100, 117, 17, 65, 3, 2, 40,
+			12, 0, 114, 97, 110, 103, 2, 111, 101, 116, 3, 2, 40, 34, 2, 35, 68, 10, 0, 107, 114, 97, 116, 2, 105, 115, 17, 65, 3, 2,
+			40, 49, 34, 2, 35, 47, 0, 4, 2, 114, 97, 107, 101, 108, 3, 2, 110, 0, 2, 115, 111, 111, 110, 0, 8, 2, 109, 97, 114, 109,
+			0, 4, 114, 8, 2, 103, 97, 3, 2, 110, 34, 0, 114, 8, 2, 107, 97, 0, 4, 114, 116, 2, 111, 103, 114, 97, 3, 2, 110, 34,
+			47, 0, 114, 116, 2, 111, 108, 111, 0, 114, 116, 2, 111, 109, 101, 116, 114, 0, 114, 116, 2, 111, 115, 107, 111, 0, 114, 116, 111, 8,
+			2, 21, 3, 2, 110, 34, 47, 2, 40, 0, 114, 107, 101, 115, 3, 2, 110, 34, 49, 108, 89, 0, 114, 100, 111, 2, 110, 110, 97, 110,
+			3, 2, 110, 34, 72, 13, 0, 114, 100, 101, 110, 116, 8, 3, 2, 110, 34, 72, 108, 50, 47, 0, 114, 103, 97, 110, 105, 2, 115, 17,
+			65, 3, 2, 110, 34, 136, 2, 35, 50, 37, 0, 114, 103, 105, 2, 100, 101, 3, 2, 110, 34, 136, 13, 0, 98, 8, 2, 115, 3, 2,
+			110, 48, 0, 98, 115, 101, 114, 2, 118, 101, 101, 114, 3, 2, 110, 48, 89, 2, 112, 34, 0, 98, 115, 116, 105, 2, 110, 97, 3, 2,
+			110, 48, 89, 47, 13, 0, 107, 8, 2, 116, 17, 65, 3, 2, 110, 49, 0, 107, 107, 101, 114, 2, 110, 101, 117, 116, 3, 2, 110, 49,
+			13, 34, 0, 4, 109, 2, 108, 121, 3, 2, 110, 65, 0, 109, 2, 114, 105, 110, 103, 0, 109, 2, 115, 101, 105, 108, 0, 109, 2, 115,
+			105, 103, 0, 109, 2, 115, 119, 101, 114, 17, 67, 0, 109, 2, 118, 97, 116, 116, 0, 109, 2, 119, 101, 110, 116, 101, 108, 105, 0, 109,
+			8, 2, 103, 111, 114, 100, 0, 109, 8, 2, 104, 0, 109, 8, 2, 107, 108, 101, 109, 0, 109, 8, 2, 108, 97, 97, 103, 0, 109, 8,
+			2, 109, 117, 117, 114, 0, 109, 8, 2, 114, 97, 97, 109, 0, 109, 8, 2, 115, 105, 114, 107, 101, 108, 0, 109, 8, 2, 115, 107, 101,
+			112, 0, 109, 8, 2, 115, 107, 114, 0, 109, 8, 2, 115, 108, 117, 105, 101, 114, 0, 109, 8, 2, 115, 108, 117, 105, 116, 0, 109, 8,
+			2, 115, 116, 114, 101, 100, 101, 0, 109, 8, 2, 119, 97, 108, 0, 109, 8, 2, 119, 101, 108, 17, 67, 0, 109, 101, 108, 101, 2, 116,
+			3, 2, 110, 65, 13, 55, 108, 0, 109, 108, 105, 8, 2, 103, 103, 3, 2, 110, 65, 55, 109, 0, 109, 118, 101, 114, 8, 3, 2, 110,
+			65, 83, 112, 34, 0, 109, 115, 116, 97, 110, 100, 105, 103, 104, 3, 2, 110, 65, 89, 47, 35, 50, 72, 13, 136, 0, 109, 115, 107, 97,
+			110, 115, 8, 3, 2, 110, 65, 89, 49, 35, 50, 89, 0, 109, 115, 105, 110, 103, 101, 108, 3, 2, 110, 65, 89, 109, 68, 13, 55, 0,
+			109, 103, 101, 119, 105, 110, 103, 3, 2, 110, 65, 136, 116, 84, 13, 68, 0, 102, 102, 105, 115, 105, 3, 2, 110, 83, 2, 37, 91, 2,
+			37, 38, 0, 102, 102, 105, 2, 115, 105, 101, 114, 3, 2, 110, 83, 13, 0, 118, 117, 3, 2, 110, 84, 2, 118, 0, 115, 8, 2, 109,
+			111, 17, 67, 3, 2, 110, 89, 0, 115, 115, 105, 108, 108, 2, 101, 3, 2, 110, 89, 13, 55, 0, 115, 115, 105, 108, 108, 101, 2, 17,
+			67, 17, 65, 3, 2, 110, 89, 13, 55, 116, 0, 4, 1, 17, 67, 2, 17, 67, 105, 101, 101, 3, 2, 117, 0, 2, 108, 105, 109, 0,
+			2, 108, 121, 17, 67, 0, 2, 112, 97, 97, 108, 0, 2, 112, 97, 108, 101, 0, 8, 2, 118, 97, 21, 0, 114, 105, 195, 171, 110, 116,
+			2, 21, 3, 2, 117, 34, 2, 37, 57, 2, 108, 50, 47, 0, 114, 97, 110, 106, 101, 3, 2, 117, 34, 35, 50, 57, 13, 0, 114, 101,
+			110, 116, 2, 25, 3, 2, 117, 34, 108, 50, 47, 0, 116, 111, 109, 105, 101, 1, 21, 2, 32, 24, 3, 2, 117, 47, 2, 40, 65, 6,
+			37, 0, 116, 111, 109, 105, 101, 1, 21, 2, 195, 171, 3, 2, 117, 47, 2, 40, 65, 6, 37, 12, 0, 107, 97, 112, 105, 3, 2, 117,
+			49, 115, 48, 2, 37, 0, 108, 101, 2, 97, 110, 100, 101, 114, 3, 2, 117, 55, 2, 37, 0, 108, 121, 109, 2, 112, 3, 2, 117, 55,
+			109, 65, 0, 109, 105, 8, 2, 115, 115, 105, 101, 3, 2, 117, 65, 37, 0, 109, 101, 103, 97, 3, 2, 117, 65, 116, 136, 35, 0, 118,
+			97, 114, 105, 2, 111, 116, 111, 109, 105, 3, 2, 117, 84, 2, 115, 34, 2, 37, 0, 119, 101, 114, 2, 115, 112, 101, 108, 105, 103, 3,
+			2, 117, 84, 13, 34, 0, 115, 101, 2, 97, 3, 2, 117, 91, 2, 37, 0, 117, 116, 2, 111, 107, 114, 97, 3, 2, 120, 47, 0, 117,
+			116, 111, 2, 112, 115, 105, 101, 3, 2, 120, 47, 110, 0, 117, 100, 101, 114, 2, 119, 101, 116, 3, 2, 120, 72, 13, 34, 0, 1, 114,
 			117, 98, 2, 32, 3, 4, 117, 0, 117, 120, 3, 6, 40, 0, 109, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 6, 110, 65, 136, 13,
 			0, 109, 103, 101, 101, 2, 12, 3, 6, 110, 65, 136, 116, 0, 1, 98, 114, 2, 32, 3, 6, 117, 0, 114, 105, 117, 3, 6, 117, 34,
 			37, 111, 0, 116, 105, 101, 115, 1, 21, 3, 6, 117, 47, 37, 89, 0, 103, 105, 103, 1, 17, 67, 3, 10, 117, 136, 13, 136, 0, 4,
@@ -2443,310 +2477,293 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 97, 114, 97, 2, 115, 101, 3, 89, 2, 35, 34, 2, 35, 0, 97, 114, 107, 111, 2, 102, 97, 3, 89, 2, 35, 34, 49, 2, 40,
 			0, 4, 97, 110, 2, 17, 65, 116, 17, 65, 17, 67, 3, 89, 2, 35, 50, 0, 97, 110, 8, 2, 100, 97, 0, 4, 97, 108, 2, 109,
 			97, 110, 100, 101, 114, 3, 89, 2, 35, 55, 0, 97, 108, 2, 112, 101, 116, 101, 114, 0, 97, 108, 97, 2, 109, 97, 110, 100, 101, 114,
-			3, 89, 2, 35, 55, 2, 35, 0, 97, 108, 111, 2, 110, 3, 89, 2, 35, 55, 110, 0, 97, 109, 8, 2, 98, 3, 89, 2, 35, 65,
-			0, 97, 109, 97, 114, 105, 2, 116, 97, 3, 89, 2, 35, 65, 2, 35, 34, 2, 37, 0, 97, 110, 103, 101, 114, 101, 2, 25, 3, 89,
-			2, 35, 68, 13, 34, 108, 0, 97, 98, 111, 116, 2, 17, 65, 3, 89, 2, 35, 71, 2, 40, 47, 0, 97, 102, 97, 114, 105, 3, 89,
-			2, 35, 83, 115, 34, 2, 37, 0, 97, 118, 2, 97, 110, 110, 17, 65, 3, 89, 2, 35, 84, 0, 97, 103, 2, 109, 111, 101, 3, 89,
-			2, 35, 136, 0, 97, 103, 104, 101, 98, 98, 101, 2, 110, 3, 89, 2, 35, 136, 107, 108, 71, 13, 0, 105, 8, 2, 107, 108, 111, 3,
-			89, 2, 37, 0, 105, 112, 114, 101, 2, 25, 3, 89, 2, 37, 48, 34, 108, 0, 105, 101, 108, 107, 117, 110, 1, 21, 2, 100, 105, 103,
-			3, 89, 2, 37, 55, 49, 4, 111, 50, 0, 4, 111, 2, 110, 97, 116, 17, 65, 3, 89, 2, 40, 0, 111, 2, 112, 114, 97, 0, 111,
-			117, 2, 102, 102, 108, 101, 117, 0, 117, 2, 115, 97, 17, 67, 0, 117, 8, 2, 109, 101, 114, 105, 0, 111, 101, 116, 2, 115, 97, 112,
-			112, 105, 3, 89, 2, 40, 47, 0, 111, 110, 110, 101, 2, 116, 3, 89, 2, 40, 50, 108, 0, 111, 109, 97, 8, 2, 108, 105, 17, 65,
-			3, 89, 2, 40, 65, 115, 0, 111, 101, 100, 97, 8, 2, 110, 3, 89, 2, 40, 72, 35, 0, 111, 101, 119, 101, 2, 110, 105, 101, 114,
-			3, 89, 2, 40, 84, 13, 0, 111, 115, 97, 2, 116, 105, 3, 89, 2, 40, 89, 115, 0, 4, 111, 2, 108, 105, 100, 3, 89, 2, 110,
-			0, 111, 2, 108, 105, 101, 100, 0, 4, 111, 108, 2, 100, 121, 3, 89, 2, 110, 55, 0, 111, 108, 8, 2, 100, 97, 0, 117, 2, 109,
-			109, 105, 101, 114, 3, 89, 2, 111, 0, 117, 114, 114, 111, 2, 103, 97, 3, 89, 2, 111, 34, 2, 40, 0, 4, 117, 98, 2, 115, 116,
-			97, 110, 115, 105, 101, 3, 89, 2, 111, 48, 0, 117, 98, 2, 116, 105, 0, 117, 107, 115, 101, 115, 3, 89, 2, 111, 49, 89, 108, 89,
-			0, 117, 108, 116, 97, 110, 97, 3, 89, 2, 111, 55, 47, 115, 50, 2, 35, 0, 4, 117, 98, 2, 108, 105, 3, 89, 2, 111, 71, 0,
-			117, 98, 2, 115, 105, 100, 17, 65, 0, 117, 98, 2, 115, 107, 114, 105, 112, 0, 117, 98, 108, 105, 2, 109, 17, 65, 3, 89, 2, 111,
-			71, 55, 2, 37, 0, 117, 98, 108, 105, 109, 105, 2, 110, 97, 3, 89, 2, 111, 71, 55, 2, 37, 65, 2, 37, 0, 117, 98, 115, 116,
-			105, 2, 116, 117, 3, 89, 2, 111, 71, 89, 47, 13, 0, 117, 103, 103, 101, 115, 3, 89, 2, 111, 136, 108, 89, 0, 97, 2, 116, 97,
-			110, 105, 101, 3, 89, 2, 115, 0, 97, 109, 101, 8, 2, 104, 17, 65, 21, 3, 89, 2, 115, 65, 13, 0, 99, 101, 110, 97, 114, 105,
-			111, 3, 89, 2, 116, 50, 115, 34, 2, 37, 38, 2, 117, 0, 117, 105, 100, 2, 45, 97, 102, 114, 105, 107, 3, 89, 2, 127, 47, 0,
-			117, 105, 100, 2, 111, 111, 115, 3, 89, 2, 127, 47, 10, 0, 105, 110, 111, 2, 110, 105, 101, 109, 3, 89, 4, 37, 50, 2, 40, 0,
-			117, 112, 101, 114, 105, 110, 116, 101, 110, 100, 101, 110, 116, 3, 89, 4, 40, 48, 34, 13, 50, 47, 2, 108, 50, 72, 108, 50, 47, 0,
-			4, 111, 100, 111, 109, 2, 105, 101, 116, 3, 89, 4, 117, 72, 110, 65, 0, 111, 100, 111, 109, 2, 105, 101, 116, 0, 105, 116, 114, 117,
-			115, 3, 89, 6, 37, 47, 34, 2, 111, 89, 10, 0, 105, 101, 102, 1, 21, 2, 32, 3, 89, 6, 37, 83, 0, 105, 101, 119, 101, 1,
-			21, 2, 32, 3, 89, 6, 37, 84, 13, 0, 105, 101, 119, 101, 114, 1, 21, 2, 32, 3, 89, 6, 37, 84, 13, 34, 0, 105, 2, 110,
-			110, 105, 103, 3, 89, 6, 109, 0, 117, 103, 1, 21, 2, 116, 105, 103, 3, 89, 6, 111, 136, 0, 101, 108, 102, 2, 32, 3, 89, 6,
-			112, 55, 83, 0, 97, 97, 109, 8, 2, 14, 128, 132, 132, 3, 89, 6, 115, 65, 0, 97, 109, 101, 8, 2, 21, 14, 128, 132, 132, 3,
-			89, 6, 115, 65, 13, 0, 101, 114, 105, 110, 103, 1, 21, 3, 89, 6, 116, 34, 13, 68, 0, 101, 119, 101, 1, 25, 2, 17, 67, 3,
-			89, 6, 116, 84, 13, 0, 111, 110, 2, 111, 109, 3, 89, 7, 110, 50, 10, 0, 117, 112, 101, 114, 2, 17, 65, 3, 89, 7, 118, 48,
-			13, 34, 10, 0, 101, 119, 101, 1, 21, 2, 119, 105, 103, 3, 89, 10, 116, 84, 13, 0, 4, 105, 2, 108, 108, 97, 98, 17, 65, 3,
-			89, 13, 0, 105, 2, 108, 108, 97, 98, 17, 65, 0, 105, 2, 110, 97, 112, 25, 0, 105, 2, 112, 105, 101, 114, 0, 105, 2, 116, 114,
-			111, 101, 110, 0, 105, 2, 118, 105, 101, 108, 0, 105, 8, 2, 110, 111, 17, 67, 0, 105, 114, 101, 110, 101, 3, 89, 13, 34, 116, 50,
-			13, 0, 105, 116, 114, 111, 110, 101, 108, 108, 97, 3, 89, 13, 47, 34, 2, 40, 50, 112, 55, 2, 35, 0, 101, 112, 116, 101, 109, 98,
-			101, 114, 3, 89, 13, 48, 47, 108, 65, 71, 13, 34, 0, 4, 105, 110, 2, 106, 97, 3, 89, 13, 50, 0, 105, 110, 2, 116, 97, 107,
-			17, 67, 0, 105, 110, 8, 2, 100, 114, 111, 0, 105, 110, 116, 101, 116, 105, 101, 115, 3, 89, 13, 50, 47, 116, 47, 37, 89, 0, 105,
-			110, 105, 115, 116, 2, 17, 65, 114, 3, 89, 13, 50, 109, 89, 47, 0, 105, 108, 105, 107, 111, 111, 110, 3, 89, 13, 55, 2, 37, 49,
-			117, 50, 10, 0, 105, 108, 104, 111, 101, 2, 17, 65, 3, 89, 13, 55, 2, 40, 58, 0, 105, 108, 105, 2, 110, 100, 3, 89, 13, 55,
-			109, 0, 97, 108, 97, 114, 105, 115, 3, 89, 13, 55, 115, 34, 13, 89, 0, 4, 105, 109, 8, 2, 98, 17, 65, 3, 89, 13, 65, 0,
-			105, 109, 112, 2, 116, 111, 0, 105, 109, 109, 101, 2, 116, 114, 105, 101, 32, 24, 3, 89, 13, 65, 13, 0, 105, 109, 112, 111, 2, 115,
-			105, 17, 65, 3, 89, 13, 65, 48, 117, 0, 105, 109, 98, 105, 2, 111, 17, 67, 3, 89, 13, 65, 71, 2, 37, 0, 105, 109, 98, 111,
-			2, 108, 105, 101, 107, 3, 89, 13, 65, 71, 2, 40, 0, 105, 109, 109, 101, 2, 116, 114, 105, 101, 3, 89, 13, 65, 116, 0, 4, 101,
-			115, 1, 21, 2, 32, 3, 89, 13, 89, 0, 105, 115, 2, 116, 121, 110, 0, 105, 115, 116, 2, 101, 3, 89, 13, 89, 47, 0, 105, 115,
-			116, 101, 2, 109, 97, 116, 3, 89, 13, 89, 47, 13, 0, 105, 103, 2, 97, 21, 3, 89, 13, 136, 0, 105, 103, 97, 114, 101, 2, 116,
-			3, 89, 13, 136, 2, 35, 34, 108, 0, 97, 8, 2, 102, 102, 3, 89, 35, 7, 0, 97, 110, 100, 2, 97, 100, 100, 101, 114, 3, 89,
-			35, 50, 47, 10, 0, 97, 108, 118, 111, 2, 25, 3, 89, 35, 55, 84, 2, 40, 0, 97, 104, 97, 114, 97, 3, 89, 35, 107, 6, 115,
-			34, 35, 0, 105, 2, 107, 108, 105, 101, 3, 89, 37, 0, 105, 112, 97, 108, 101, 1, 21, 3, 89, 37, 48, 6, 115, 55, 13, 0, 105,
-			101, 107, 101, 8, 3, 89, 37, 49, 13, 0, 105, 107, 108, 117, 2, 115, 3, 89, 37, 49, 55, 111, 0, 111, 110, 97, 110, 116, 3, 89,
-			40, 50, 6, 35, 50, 47, 0, 112, 97, 2, 115, 105, 101, 101, 114, 3, 89, 48, 2, 35, 0, 112, 97, 114, 8, 2, 116, 97, 21, 3,
-			89, 48, 2, 35, 34, 0, 4, 112, 97, 110, 2, 100, 97, 98, 3, 89, 48, 2, 35, 50, 0, 112, 97, 110, 2, 106, 17, 65, 17, 65,
-			0, 112, 97, 110, 2, 115, 112, 101, 107, 0, 112, 97, 115, 2, 109, 111, 100, 3, 89, 48, 2, 35, 89, 0, 4, 112, 105, 2, 110, 97,
-			21, 3, 89, 48, 2, 37, 0, 112, 105, 8, 2, 114, 97, 0, 112, 105, 110, 101, 2, 116, 3, 89, 48, 2, 37, 50, 108, 0, 112, 101,
-			107, 2, 116, 97, 107, 101, 108, 3, 89, 48, 2, 108, 49, 0, 112, 101, 107, 117, 2, 108, 17, 65, 3, 89, 48, 2, 108, 49, 2, 118,
-			0, 112, 101, 115, 8, 2, 109, 97, 3, 89, 48, 2, 108, 89, 0, 112, 101, 115, 105, 2, 102, 3, 89, 48, 2, 108, 89, 2, 109, 0,
-			112, 101, 115, 105, 2, 97, 3, 89, 48, 2, 108, 91, 2, 37, 0, 112, 111, 110, 8, 2, 116, 97, 3, 89, 48, 2, 110, 50, 0, 112,
-			111, 114, 116, 8, 2, 21, 21, 21, 3, 89, 48, 7, 110, 34, 47, 10, 0, 112, 101, 114, 1, 21, 2, 97, 3, 89, 48, 13, 34, 6,
-			0, 112, 105, 116, 115, 2, 118, 111, 110, 3, 89, 48, 13, 47, 89, 0, 112, 101, 115, 101, 2, 114, 121, 3, 89, 48, 13, 89, 13, 0,
-			112, 114, 101, 101, 107, 119, 111, 111, 114, 100, 101, 108, 105, 3, 89, 48, 34, 2, 116, 49, 84, 117, 34, 72, 13, 55, 13, 0, 112, 114,
-			105, 110, 103, 98, 111, 2, 107, 3, 89, 48, 34, 7, 109, 68, 71, 110, 0, 112, 114, 111, 107, 101, 3, 89, 48, 34, 117, 49, 13, 0,
-			112, 97, 114, 116, 101, 108, 3, 89, 48, 35, 34, 47, 13, 55, 0, 112, 97, 116, 8, 2, 97, 3, 89, 48, 35, 47, 10, 0, 112, 111,
-			101, 100, 8, 2, 21, 3, 89, 48, 40, 47, 0, 112, 111, 101, 100, 2, 105, 103, 3, 89, 48, 40, 72, 0, 112, 101, 114, 1, 107, 101,
-			2, 105, 109, 3, 89, 48, 108, 34, 0, 112, 101, 115, 105, 97, 108, 105, 115, 3, 89, 48, 108, 91, 35, 55, 6, 109, 89, 0, 112, 101,
-			115, 105, 97, 108, 105, 115, 2, 17, 65, 3, 89, 48, 108, 91, 37, 35, 55, 37, 89, 0, 4, 112, 101, 108, 1, 17, 65, 17, 65, 2,
-			100, 3, 89, 48, 112, 55, 0, 112, 101, 108, 1, 17, 67, 2, 32, 0, 112, 101, 108, 1, 101, 2, 32, 0, 112, 101, 108, 8, 17, 65,
-			110, 2, 32, 0, 112, 101, 108, 97, 103, 116, 105, 103, 3, 89, 48, 112, 55, 6, 35, 136, 47, 13, 136, 0, 112, 101, 110, 101, 2, 32,
-			3, 89, 48, 116, 50, 13, 0, 112, 101, 108, 101, 1, 10, 2, 32, 3, 89, 48, 116, 55, 13, 0, 107, 97, 2, 118, 111, 116, 3, 89,
-			49, 2, 35, 0, 107, 97, 114, 8, 2, 17, 67, 3, 89, 49, 2, 35, 34, 0, 107, 97, 107, 101, 114, 2, 105, 110, 103, 3, 89, 49,
-			2, 35, 49, 116, 34, 0, 107, 97, 110, 2, 100, 97, 3, 89, 49, 2, 35, 50, 0, 107, 97, 110, 100, 101, 2, 114, 105, 110, 103, 3,
-			89, 49, 2, 35, 50, 72, 116, 0, 107, 105, 115, 111, 102, 114, 2, 101, 3, 89, 49, 2, 37, 89, 2, 40, 83, 34, 0, 107, 101, 2,
-			100, 117, 108, 101, 3, 89, 49, 2, 108, 0, 107, 111, 112, 112, 101, 108, 2, 109, 97, 97, 3, 89, 49, 2, 110, 48, 13, 55, 0, 107,
-			101, 114, 2, 109, 117, 116, 115, 3, 89, 49, 2, 112, 34, 0, 107, 101, 114, 112, 105, 2, 111, 101, 110, 3, 89, 49, 2, 112, 34, 48,
-			2, 37, 0, 107, 111, 2, 108, 105, 101, 114, 3, 89, 49, 2, 117, 0, 107, 121, 110, 2, 104, 101, 105, 3, 89, 49, 2, 123, 50, 0,
-			107, 97, 112, 108, 105, 107, 1, 21, 3, 89, 49, 6, 35, 48, 55, 13, 49, 0, 107, 121, 110, 108, 105, 107, 1, 21, 3, 89, 49, 6,
-			123, 50, 55, 13, 49, 0, 107, 111, 107, 8, 2, 17, 65, 14, 128, 132, 132, 3, 89, 49, 7, 110, 49, 10, 0, 107, 101, 2, 100, 111,
-			110, 107, 3, 89, 49, 13, 0, 107, 105, 108, 100, 101, 114, 2, 121, 3, 89, 49, 13, 55, 72, 13, 34, 0, 107, 101, 108, 101, 8, 2,
-			116, 3, 89, 49, 13, 55, 108, 0, 107, 114, 97, 112, 110, 101, 2, 108, 3, 89, 49, 34, 2, 35, 48, 50, 112, 0, 107, 114, 105, 102,
-			2, 17, 65, 3, 89, 49, 34, 109, 83, 10, 0, 107, 97, 114, 114, 101, 108, 3, 89, 49, 35, 34, 13, 55, 0, 107, 97, 112, 112, 121,
-			8, 17, 67, 17, 65, 17, 65, 17, 67, 3, 89, 49, 35, 48, 6, 123, 0, 4, 107, 97, 112, 1, 21, 2, 105, 110, 21, 3, 89, 49,
-			35, 48, 10, 0, 107, 97, 112, 1, 21, 2, 111, 0, 107, 108, 101, 2, 114, 111, 115, 101, 3, 89, 49, 55, 13, 0, 107, 117, 108, 100,
-			2, 101, 114, 107, 101, 110, 3, 89, 49, 111, 55, 47, 10, 0, 107, 101, 114, 112, 3, 89, 49, 112, 34, 48, 0, 107, 97, 100, 101, 3,
-			89, 49, 115, 72, 13, 0, 107, 97, 100, 117, 3, 89, 49, 115, 72, 118, 0, 107, 101, 109, 101, 114, 3, 89, 49, 116, 65, 13, 34, 0,
-			107, 111, 111, 110, 103, 101, 2, 17, 67, 3, 89, 49, 117, 50, 136, 13, 0, 107, 111, 108, 101, 3, 89, 49, 117, 55, 13, 0, 110, 101,
-			108, 8, 2, 17, 65, 3, 89, 50, 7, 112, 55, 10, 0, 110, 101, 108, 2, 32, 3, 89, 50, 112, 55, 0, 110, 97, 112, 101, 114, 2,
-			105, 110, 103, 3, 89, 50, 115, 48, 13, 34, 0, 108, 97, 2, 118, 105, 110, 3, 89, 55, 2, 35, 0, 108, 97, 103, 8, 3, 89, 55,
-			7, 35, 136, 10, 0, 108, 97, 103, 2, 111, 102, 102, 3, 89, 55, 35, 136, 10, 0, 108, 111, 112, 2, 101, 109, 109, 101, 114, 3, 89,
-			55, 110, 48, 10, 0, 108, 97, 2, 119, 101, 3, 89, 55, 115, 0, 4, 106, 1, 21, 2, 97, 17, 67, 17, 65, 3, 89, 57, 0, 106,
-			1, 21, 2, 97, 97, 114, 0, 4, 119, 2, 101, 114, 109, 3, 89, 58, 0, 119, 8, 0, 119, 97, 2, 104, 105, 108, 105, 3, 89, 58,
-			2, 35, 0, 119, 97, 114, 116, 2, 103, 97, 108, 3, 89, 58, 2, 35, 34, 47, 0, 4, 119, 97, 97, 114, 2, 108, 121, 119, 3, 89,
-			58, 2, 115, 34, 0, 119, 97, 97, 114, 2, 109, 111, 101, 100, 0, 119, 97, 109, 8, 2, 17, 65, 21, 3, 89, 58, 35, 65, 10, 0,
-			117, 105, 116, 101, 3, 89, 58, 37, 47, 13, 0, 119, 101, 110, 100, 101, 108, 3, 89, 58, 108, 50, 72, 13, 55, 0, 119, 101, 109, 1,
-			21, 2, 32, 3, 89, 58, 108, 65, 0, 119, 101, 109, 8, 2, 17, 65, 3, 89, 58, 108, 65, 10, 0, 119, 105, 116, 115, 101, 114, 3,
-			89, 58, 109, 47, 89, 13, 34, 0, 119, 101, 101, 112, 3, 89, 58, 116, 48, 0, 119, 101, 112, 101, 3, 89, 58, 116, 48, 13, 0, 109,
-			97, 2, 114, 97, 103, 3, 89, 65, 2, 35, 0, 109, 101, 108, 116, 3, 89, 65, 112, 55, 47, 0, 119, 97, 103, 2, 25, 3, 89, 84,
-			35, 136, 0, 119, 101, 114, 107, 1, 21, 3, 89, 84, 112, 34, 49, 0, 119, 101, 101, 1, 21, 2, 32, 3, 89, 84, 116, 0, 105, 108,
-			105, 107, 111, 2, 110, 3, 89, 109, 55, 2, 37, 49, 2, 110, 0, 105, 108, 119, 101, 114, 3, 89, 109, 55, 84, 13, 34, 0, 105, 116,
-			117, 97, 115, 105, 101, 3, 89, 109, 76, 40, 6, 115, 89, 37, 0, 111, 2, 110, 110, 101, 116, 106, 105, 101, 12, 12, 3, 89, 110, 0,
-			111, 110, 2, 103, 21, 3, 89, 110, 50, 0, 117, 98, 8, 2, 97, 3, 89, 111, 71, 10, 0, 97, 107, 101, 3, 89, 115, 49, 13, 0,
-			97, 109, 101, 110, 2, 12, 3, 89, 115, 65, 13, 50, 0, 97, 109, 101, 108, 2, 17, 67, 3, 89, 115, 65, 13, 55, 0, 97, 97, 109,
-			103, 101, 101, 3, 89, 115, 65, 136, 116, 0, 101, 119, 101, 2, 116, 106, 105, 101, 3, 89, 116, 84, 37, 0, 111, 2, 118, 3, 89, 117,
-			0, 111, 105, 101, 8, 3, 89, 117, 19, 37, 0, 111, 118, 101, 114, 114, 101, 3, 89, 117, 83, 6, 112, 34, 13, 0, 111, 115, 105, 97,
-			108, 2, 105, 3, 89, 117, 91, 37, 35, 55, 6, 0, 111, 115, 105, 111, 2, 45, 3, 89, 117, 91, 119, 12, 0, 97, 117, 110, 97, 3,
-			89, 131, 50, 35, 0, 4, 1, 17, 67, 2, 105, 101, 101, 17, 67, 3, 91, 0, 1, 17, 67, 2, 105, 195, 171, 108, 101, 0, 2, 105,
-			195, 171, 110, 0, 99, 104, 0, 104, 8, 0, 106, 0, 106, 97, 2, 109, 97, 3, 91, 2, 35, 0, 106, 97, 114, 2, 109, 97, 110, 116,
-			3, 91, 2, 35, 34, 0, 106, 97, 109, 112, 97, 110, 106, 101, 3, 91, 2, 35, 65, 48, 35, 50, 57, 13, 0, 106, 97, 109, 112, 111,
-			101, 3, 91, 2, 35, 65, 48, 40, 12, 0, 106, 111, 107, 111, 108, 97, 100, 101, 3, 91, 2, 110, 49, 13, 55, 115, 72, 13, 0, 106,
-			105, 109, 112, 97, 110, 2, 115, 101, 101, 3, 91, 13, 65, 48, 2, 35, 50, 0, 105, 1, 21, 2, 111, 3, 91, 37, 0, 105, 97, 97,
-			108, 3, 91, 37, 6, 115, 55, 0, 105, 97, 108, 101, 3, 91, 37, 6, 115, 55, 13, 0, 99, 104, 117, 8, 2, 17, 67, 3, 91, 40,
-			0, 106, 101, 114, 114, 105, 101, 3, 91, 108, 34, 37, 0, 105, 111, 1, 21, 2, 110, 101, 3, 91, 119, 6, 0, 7, 6, 116, 0, 4,
-			2, 32, 100, 24, 3, 0, 2, 116, 3, 0, 4, 99, 104, 1, 17, 65, 3, 21, 0, 104, 1, 21, 2, 32, 24, 0, 104, 8, 0, 104,
-			121, 1, 21, 2, 32, 0, 105, 111, 110, 1, 21, 2, 32, 0, 105, 111, 110, 115, 1, 21, 2, 32, 0, 108, 101, 1, 21, 2, 32, 0,
-			106, 105, 101, 1, 101, 114, 3, 37, 80, 37, 0, 4, 3, 47, 0, 1, 17, 67, 21, 2, 101, 110, 121, 0, 1, 21, 2, 101, 109, 97,
-			25, 12, 12, 0, 1, 97, 97, 114, 116, 115, 2, 106, 0, 104, 1, 21, 2, 17, 67, 0, 104, 8, 2, 21, 21, 0, 4, 97, 1, 21,
-			2, 108, 105, 115, 3, 47, 2, 35, 0, 97, 2, 98, 108, 101, 116, 0, 97, 2, 114, 105, 101, 102, 0, 97, 2, 114, 105, 101, 119, 101,
-			0, 97, 8, 2, 109, 98, 0, 97, 114, 8, 2, 116, 97, 21, 3, 47, 2, 35, 34, 0, 97, 114, 101, 110, 2, 116, 97, 3, 47, 2,
-			35, 34, 13, 50, 0, 97, 116, 111, 101, 2, 195, 171, 3, 47, 2, 35, 47, 2, 40, 0, 97, 112, 105, 115, 115, 101, 2, 114, 105, 3,
-			47, 2, 35, 48, 13, 89, 13, 0, 97, 107, 115, 105, 100, 101, 114, 2, 109, 3, 47, 2, 35, 49, 89, 2, 37, 72, 2, 112, 34, 0,
-			97, 110, 122, 97, 2, 110, 105, 3, 47, 2, 35, 50, 88, 115, 0, 97, 108, 101, 110, 2, 116, 106, 105, 101, 3, 47, 2, 35, 55, 108,
-			37, 68, 0, 97, 108, 101, 110, 116, 3, 47, 2, 35, 55, 108, 50, 47, 0, 97, 109, 97, 114, 105, 115, 107, 3, 47, 2, 35, 65, 2,
-			35, 34, 109, 89, 49, 0, 97, 109, 101, 108, 101, 2, 116, 106, 3, 47, 2, 35, 65, 13, 55, 108, 37, 0, 97, 109, 98, 111, 101, 2,
-			114, 121, 110, 3, 47, 2, 35, 65, 71, 2, 40, 0, 97, 109, 97, 2, 116, 105, 101, 3, 47, 2, 35, 65, 115, 0, 97, 98, 101, 114,
-			2, 110, 97, 107, 101, 108, 3, 47, 2, 35, 71, 13, 34, 0, 97, 98, 97, 107, 3, 47, 2, 35, 71, 35, 49, 0, 97, 98, 108, 111,
-			2, 16, 3, 47, 2, 35, 71, 55, 117, 0, 97, 102, 101, 2, 114, 101, 3, 47, 2, 35, 83, 13, 0, 97, 118, 101, 114, 2, 110, 105,
-			101, 114, 3, 47, 2, 35, 83, 13, 34, 0, 97, 118, 101, 114, 110, 101, 3, 47, 2, 35, 83, 112, 34, 50, 13, 0, 4, 105, 2, 112,
-			101, 114, 17, 65, 3, 47, 2, 37, 0, 105, 2, 114, 97, 0, 105, 101, 114, 108, 97, 110, 2, 116, 121, 3, 47, 2, 37, 12, 34, 55,
-			2, 35, 50, 0, 105, 114, 97, 2, 110, 110, 105, 101, 3, 47, 2, 37, 34, 2, 35, 0, 105, 110, 101, 110, 8, 2, 116, 97, 21, 3,
-			47, 2, 37, 50, 2, 108, 50, 0, 105, 98, 101, 116, 8, 3, 47, 2, 37, 71, 108, 47, 0, 105, 97, 114, 97, 3, 47, 2, 37, 115,
-			34, 35, 0, 4, 111, 101, 2, 107, 111, 109, 101, 3, 47, 2, 40, 0, 111, 101, 2, 107, 111, 109, 115, 116, 105, 0, 111, 101, 2, 108,
-			97, 97, 116, 98, 97, 0, 111, 101, 2, 114, 105, 115, 116, 101, 21, 0, 111, 101, 114, 2, 110, 3, 47, 2, 40, 34, 0, 111, 101, 114,
-			101, 107, 101, 110, 2, 98, 3, 47, 2, 40, 34, 6, 116, 49, 13, 50, 0, 111, 101, 114, 101, 105, 107, 101, 3, 47, 2, 40, 34, 123,
-			49, 13, 0, 4, 111, 112, 8, 2, 97, 97, 115, 3, 47, 2, 40, 48, 0, 111, 112, 8, 2, 97, 115, 101, 0, 111, 101, 112, 97, 115,
-			108, 105, 107, 3, 47, 2, 40, 48, 35, 89, 55, 13, 49, 0, 111, 110, 101, 101, 108, 3, 47, 2, 40, 50, 116, 55, 0, 111, 110, 101,
-			108, 101, 3, 47, 2, 40, 50, 116, 55, 13, 0, 111, 101, 103, 97, 110, 107, 3, 47, 2, 40, 136, 6, 35, 68, 49, 0, 111, 101, 103,
-			101, 101, 102, 3, 47, 2, 40, 136, 116, 83, 0, 111, 101, 103, 101, 119, 101, 110, 2, 100, 3, 47, 2, 40, 136, 116, 84, 13, 50, 0,
-			111, 114, 8, 2, 110, 121, 110, 3, 47, 2, 110, 34, 0, 111, 107, 2, 116, 111, 107, 107, 3, 47, 2, 110, 49, 0, 111, 107, 107, 101,
-			2, 108, 111, 3, 47, 2, 110, 49, 13, 0, 111, 109, 98, 111, 108, 97, 3, 47, 2, 110, 65, 71, 117, 55, 2, 35, 0, 111, 115, 8,
-			2, 107, 97, 3, 47, 2, 110, 89, 0, 111, 8, 2, 110, 97, 3, 47, 2, 117, 0, 4, 111, 112, 8, 2, 111, 103, 114, 97, 3, 47,
-			2, 117, 48, 0, 111, 112, 8, 2, 111, 108, 111, 0, 117, 98, 101, 114, 107, 117, 108, 111, 115, 101, 3, 47, 2, 118, 71, 13, 34, 49,
-			2, 118, 55, 117, 89, 13, 0, 97, 105, 119, 97, 2, 110, 3, 47, 2, 121, 58, 35, 0, 121, 100, 2, 114, 111, 119, 3, 47, 2, 123,
-			47, 0, 111, 105, 2, 108, 101, 116, 3, 47, 2, 124, 0, 117, 105, 110, 2, 105, 101, 114, 3, 47, 2, 127, 50, 0, 1, 114, 101, 118,
-			100, 97, 2, 101, 3, 47, 6, 0, 105, 101, 102, 1, 21, 2, 32, 3, 47, 6, 37, 83, 0, 4, 105, 101, 119, 101, 1, 21, 2, 32,
-			3, 47, 6, 37, 84, 13, 0, 105, 101, 119, 101, 1, 21, 2, 114, 32, 0, 111, 101, 8, 2, 119, 101, 110, 25, 14, 128, 132, 131, 3,
-			47, 6, 40, 0, 111, 101, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 47, 6, 40, 136, 13, 0, 111, 101, 103, 101, 2, 119, 105, 110,
-			103, 3, 47, 6, 40, 136, 116, 0, 97, 108, 105, 103, 1, 21, 3, 47, 6, 115, 55, 13, 136, 0, 111, 114, 105, 115, 1, 21, 2, 32,
-			3, 47, 6, 117, 34, 13, 89, 0, 117, 117, 114, 3, 47, 6, 118, 34, 0, 121, 1, 21, 2, 100, 105, 103, 3, 47, 6, 123, 0, 117,
-			105, 103, 108, 105, 107, 3, 47, 6, 127, 136, 55, 13, 49, 0, 97, 110, 100, 101, 8, 2, 17, 67, 21, 3, 47, 7, 35, 50, 72, 13,
-			0, 111, 112, 8, 2, 17, 65, 3, 47, 7, 110, 48, 10, 0, 117, 114, 98, 111, 8, 2, 25, 3, 47, 7, 111, 34, 71, 117, 10, 0,
-			104, 101, 117, 8, 3, 47, 7, 128, 0, 116, 101, 108, 3, 47, 13, 55, 0, 105, 110, 107, 2, 116, 105, 110, 107, 3, 47, 13, 68, 49,
-			0, 4, 97, 110, 100, 2, 111, 3, 47, 35, 50, 47, 10, 0, 97, 110, 100, 8, 2, 97, 0, 105, 116, 101, 108, 3, 47, 37, 47, 13,
-			55, 0, 105, 115, 115, 117, 101, 3, 47, 37, 91, 2, 40, 0, 111, 101, 114, 101, 2, 32, 3, 47, 40, 12, 34, 13, 0, 111, 101, 110,
-			101, 109, 101, 110, 3, 47, 40, 50, 6, 116, 65, 13, 50, 0, 4, 106, 1, 21, 2, 97, 3, 47, 57, 0, 106, 1, 105, 117, 0, 106,
-			111, 101, 114, 110, 97, 108, 105, 1, 21, 3, 47, 57, 2, 40, 34, 50, 2, 35, 55, 13, 0, 119, 101, 101, 100, 2, 25, 3, 47, 58,
-			37, 12, 72, 0, 119, 105, 115, 2, 17, 65, 3, 47, 58, 109, 89, 10, 0, 119, 101, 101, 100, 2, 114, 97, 3, 47, 58, 116, 72, 0,
-			119, 121, 102, 101, 2, 108, 3, 47, 58, 123, 83, 13, 0, 111, 103, 1, 103, 114, 111, 98, 3, 47, 110, 136, 10, 0, 117, 114, 108, 105,
-			110, 103, 116, 111, 110, 3, 47, 111, 12, 55, 2, 37, 68, 47, 13, 50, 0, 117, 115, 115, 101, 110, 3, 47, 111, 89, 13, 50, 0, 117,
-			103, 2, 17, 65, 3, 47, 111, 136, 10, 0, 4, 117, 117, 114, 1, 105, 116, 114, 97, 112, 3, 47, 118, 12, 34, 0, 117, 117, 114, 1,
-			115, 0, 121, 100, 2, 114, 3, 47, 123, 47, 0, 97, 110, 116, 8, 2, 101, 3, 47, 133, 50, 47, 0, 97, 110, 116, 101, 115, 3, 47,
-			133, 50, 47, 13, 89, 0, 4, 106, 3, 76, 0, 106, 8, 2, 105, 101, 0, 106, 101, 2, 108, 108, 105, 115, 3, 76, 2, 108, 0, 106,
-			97, 110, 107, 1, 21, 3, 76, 35, 68, 49, 0, 106, 101, 108, 108, 111, 3, 76, 108, 55, 40, 0, 106, 2, 105, 101, 3, 80, 0, 106,
-			105, 101, 1, 105, 117, 3, 80, 37, 0, 105, 97, 2, 32, 3, 91, 57, 35, 0, 7, 6, 117, 0, 103, 97, 110, 2, 100, 101, 3, 2,
-			40, 81, 2, 35, 50, 0, 1, 109, 2, 115, 107, 105, 101, 116, 3, 2, 111, 0, 108, 116, 105, 2, 109, 97, 3, 2, 111, 55, 47, 2,
-			37, 0, 8, 2, 114, 97, 3, 2, 118, 0, 114, 105, 110, 101, 3, 2, 118, 34, 37, 50, 13, 0, 114, 105, 101, 110, 119, 101, 103, 3,
-			2, 118, 34, 37, 50, 84, 112, 136, 10, 0, 114, 101, 8, 2, 116, 3, 2, 118, 34, 116, 0, 116, 111, 2, 112, 105, 17, 65, 3, 2,
-			118, 47, 117, 0, 110, 105, 118, 101, 114, 115, 2, 17, 65, 21, 3, 2, 118, 50, 2, 37, 84, 2, 112, 34, 89, 0, 115, 8, 98, 2,
-			17, 65, 3, 7, 111, 89, 10, 0, 2, 104, 108, 101, 32, 3, 40, 12, 0, 2, 17, 67, 3, 111, 0, 4, 3, 118, 0, 2, 17, 67,
-			17, 65, 0, 117, 0, 114, 101, 8, 2, 17, 67, 3, 118, 12, 34, 13, 0, 114, 105, 110, 101, 101, 114, 3, 118, 34, 37, 50, 6, 116,
-			34, 0, 119, 1, 110, 3, 118, 84, 0, 4, 119, 101, 1, 110, 2, 17, 67, 3, 118, 84, 13, 0, 119, 101, 1, 114, 17, 67, 2, 17,
-			67, 0, 119, 101, 108, 105, 107, 1, 17, 67, 3, 118, 84, 13, 55, 13, 49, 0, 121, 3, 127, 0, 110, 116, 106, 105, 101, 1, 17, 67,
-			3, 127, 68, 80, 37, 0, 116, 106, 105, 101, 3, 127, 80, 37, 0, 7, 6, 118, 0, 2, 118, 3, 0, 105, 108, 108, 101, 3, 21, 0,
-			3, 83, 0, 97, 2, 108, 108, 101, 105, 3, 83, 2, 35, 0, 97, 116, 105, 2, 107, 97, 97, 110, 3, 83, 2, 35, 47, 2, 37, 0,
-			97, 107, 97, 2, 116, 117, 114, 101, 3, 83, 2, 35, 49, 13, 0, 97, 110, 8, 2, 21, 3, 83, 2, 35, 50, 0, 97, 110, 115, 101,
-			108, 102, 2, 115, 112, 114, 3, 83, 2, 35, 50, 89, 2, 112, 55, 83, 0, 105, 2, 111, 3, 83, 2, 37, 0, 105, 111, 2, 108, 101,
-			116, 25, 3, 83, 2, 37, 2, 40, 0, 105, 101, 114, 2, 107, 97, 110, 116, 105, 103, 3, 83, 2, 37, 12, 34, 0, 105, 116, 114, 105,
-			2, 111, 101, 108, 3, 83, 2, 37, 47, 34, 2, 37, 0, 4, 117, 108, 2, 107, 97, 3, 83, 2, 111, 55, 0, 117, 108, 8, 2, 103,
-			97, 97, 116, 0, 121, 2, 97, 110, 100, 105, 103, 3, 83, 2, 123, 0, 97, 108, 108, 105, 103, 3, 83, 6, 35, 55, 13, 136, 0, 97,
-			115, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 83, 6, 35, 89, 136, 13, 0, 105, 115, 101, 2, 25, 3, 83, 6, 37, 89, 37, 0,
-			117, 108, 100, 105, 103, 3, 83, 6, 111, 55, 72, 13, 136, 0, 97, 97, 114, 100, 105, 103, 1, 21, 3, 83, 6, 115, 34, 72, 13, 136,
-			0, 97, 107, 97, 110, 115, 105, 101, 3, 83, 13, 49, 35, 50, 89, 37, 0, 4, 105, 115, 1, 25, 2, 105, 101, 114, 3, 83, 13, 89,
-			0, 105, 115, 1, 101, 105, 21, 2, 32, 0, 105, 115, 101, 110, 2, 116, 101, 3, 83, 13, 89, 13, 50, 0, 105, 115, 105, 116, 101, 3,
-			83, 13, 89, 37, 47, 13, 0, 114, 101, 100, 101, 2, 108, 105, 101, 119, 3, 83, 34, 2, 116, 72, 13, 0, 114, 101, 101, 115, 97, 97,
-			110, 2, 106, 97, 3, 83, 34, 2, 116, 89, 19, 2, 115, 50, 0, 4, 114, 121, 2, 109, 101, 115, 115, 101, 108, 3, 83, 34, 2, 123,
-			0, 114, 121, 2, 109, 111, 101, 100, 0, 114, 121, 2, 112, 111, 115, 116, 105, 0, 114, 121, 2, 119, 105, 108, 0, 114, 105, 101, 110, 100,
-			105, 2, 110, 3, 83, 34, 37, 50, 72, 6, 109, 0, 114, 111, 116, 2, 101, 105, 101, 114, 3, 83, 34, 110, 47, 10, 0, 114, 101, 101,
-			109, 100, 101, 3, 83, 34, 116, 65, 72, 13, 0, 114, 101, 100, 101, 3, 83, 34, 116, 72, 13, 0, 114, 121, 103, 101, 119, 105, 103, 3,
-			83, 34, 123, 136, 6, 116, 84, 13, 136, 0, 97, 2, 100, 111, 101, 107, 3, 83, 35, 0, 97, 116, 8, 2, 17, 65, 21, 3, 83, 35,
-			47, 10, 0, 97, 107, 2, 117, 110, 105, 101, 3, 83, 35, 49, 10, 0, 97, 110, 103, 8, 2, 21, 3, 83, 35, 68, 0, 97, 110, 103,
-			101, 110, 3, 83, 35, 68, 13, 50, 0, 97, 110, 107, 108, 105, 107, 8, 3, 83, 35, 68, 49, 55, 13, 49, 0, 97, 115, 115, 116, 101,
-			2, 108, 3, 83, 35, 89, 47, 112, 0, 105, 115, 1, 100, 97, 2, 101, 21, 3, 83, 37, 89, 6, 0, 108, 105, 101, 195, 171, 2, 110,
-			105, 101, 114, 3, 83, 55, 2, 37, 13, 0, 108, 97, 109, 2, 111, 111, 3, 83, 55, 35, 65, 10, 0, 108, 97, 2, 17, 67, 17, 65,
-			17, 65, 3, 83, 55, 115, 0, 105, 115, 2, 17, 65, 3, 83, 109, 89, 0, 195, 169, 114, 3, 83, 113, 34, 0, 4, 97, 97, 114, 100,
-			105, 103, 1, 114, 101, 118, 3, 83, 115, 34, 72, 13, 136, 0, 97, 97, 114, 100, 105, 103, 1, 116, 105, 117, 0, 97, 116, 101, 2, 17,
-			67, 3, 83, 115, 47, 13, 0, 1, 21, 2, 97, 108, 101, 110, 116, 3, 84, 0, 97, 2, 107, 117, 3, 84, 2, 35, 0, 97, 114, 105,
-			2, 17, 65, 3, 84, 2, 35, 34, 2, 37, 0, 97, 108, 117, 116, 97, 3, 84, 2, 35, 55, 118, 47, 2, 35, 0, 97, 115, 101, 108,
-			105, 110, 101, 3, 84, 2, 35, 89, 13, 55, 37, 50, 0, 97, 103, 105, 110, 2, 17, 65, 21, 3, 84, 2, 35, 136, 2, 37, 50, 0,
-			4, 105, 2, 98, 114, 17, 65, 3, 84, 2, 37, 0, 105, 2, 99, 116, 111, 21, 0, 105, 8, 2, 114, 97, 0, 105, 116, 97, 2, 109,
-			105, 3, 84, 2, 37, 47, 2, 35, 0, 105, 115, 105, 2, 111, 101, 110, 3, 84, 2, 37, 89, 2, 37, 0, 105, 115, 2, 117, 17, 65,
-			3, 84, 2, 37, 90, 0, 105, 8, 2, 114, 105, 3, 84, 13, 0, 105, 114, 116, 117, 3, 84, 13, 34, 76, 2, 118, 0, 97, 103, 105,
-			110, 97, 3, 84, 35, 136, 37, 50, 35, 0, 105, 114, 117, 2, 25, 3, 84, 37, 34, 111, 0, 105, 116, 114, 111, 8, 2, 32, 3, 84,
-			37, 47, 34, 2, 40, 0, 105, 107, 105, 110, 103, 3, 84, 37, 49, 37, 68, 0, 105, 100, 101, 111, 3, 84, 37, 72, 119, 0, 4, 105,
-			115, 1, 17, 65, 2, 97, 115, 105, 101, 3, 84, 37, 89, 0, 105, 115, 2, 105, 101, 0, 105, 115, 2, 117, 109, 0, 105, 115, 1, 17,
-			65, 2, 101, 21, 3, 84, 37, 89, 6, 0, 105, 195, 171, 116, 110, 97, 2, 109, 101, 3, 84, 57, 2, 108, 47, 50, 2, 35, 0, 105,
-			108, 108, 97, 3, 84, 109, 55, 35, 0, 7, 6, 119, 0, 2, 119, 3, 0, 4, 1, 21, 2, 17, 67, 32, 3, 21, 0, 1, 21, 2,
-			32, 24, 0, 104, 0, 110, 0, 111, 111, 100, 2, 12, 0, 111, 114, 116, 104, 0, 115, 1, 21, 2, 32, 24, 0, 4, 1, 100, 3, 58,
-			0, 1, 104, 103, 0, 1, 107, 0, 1, 115, 0, 1, 115, 2, 97, 114, 116, 0, 1, 115, 2, 101, 101, 114, 100, 101, 114, 0, 1, 115,
-			21, 2, 97, 108, 107, 32, 0, 1, 115, 101, 98, 2, 97, 97, 114, 100, 101, 0, 1, 115, 101, 105, 2, 97, 97, 110, 0, 1, 115, 114,
-			101, 2, 101, 101, 114, 32, 0, 1, 116, 0, 97, 103, 103, 97, 1, 107, 3, 58, 35, 136, 35, 0, 97, 114, 101, 1, 115, 101, 98, 3,
-			58, 115, 34, 13, 0, 121, 102, 101, 108, 1, 116, 21, 3, 58, 123, 83, 13, 55, 0, 4, 3, 84, 0, 1, 17, 67, 2, 101, 101, 114,
-			100, 101, 114, 0, 1, 17, 67, 2, 105, 116, 32, 0, 1, 17, 67, 2, 195, 170, 114, 101, 108, 100, 0, 1, 17, 67, 17, 65, 2, 97,
-			97, 105, 101, 114, 0, 1, 17, 67, 21, 2, 97, 97, 114, 100, 101, 32, 0, 1, 17, 67, 21, 2, 97, 114, 109, 0, 1, 17, 67, 21,
-			2, 101, 114, 107, 0, 1, 17, 67, 21, 2, 101, 195, 171, 0, 1, 17, 67, 21, 2, 105, 101, 108, 0, 1, 17, 67, 21, 2, 111, 17,
-			67, 25, 0, 1, 17, 67, 21, 2, 111, 111, 17, 67, 0, 1, 17, 67, 21, 2, 117, 114, 109, 0, 1, 17, 67, 21, 2, 121, 100, 0,
-			1, 17, 67, 111, 111, 0, 1, 21, 2, 97, 101, 110, 0, 1, 100, 17, 65, 17, 65, 0, 1, 100, 21, 2, 97, 97, 114, 0, 1, 100,
-			97, 0, 1, 100, 110, 0, 1, 100, 111, 17, 67, 0, 1, 100, 121, 0, 1, 107, 2, 17, 65, 110, 100, 0, 1, 107, 2, 101, 114, 17,
-			67, 0, 1, 107, 2, 111, 17, 65, 0, 1, 107, 21, 2, 97, 108, 109, 0, 1, 115, 2, 97, 116, 101, 114, 0, 1, 115, 2, 101, 101,
-			107, 0, 1, 115, 2, 105, 108, 0, 1, 115, 2, 111, 101, 100, 101, 0, 1, 115, 2, 111, 101, 108, 105, 110, 103, 0, 1, 115, 2, 111,
-			117, 0, 1, 115, 2, 114, 0, 1, 115, 2, 121, 102, 0, 1, 115, 10, 2, 101, 101, 102, 115, 0, 1, 115, 17, 65, 17, 65, 2, 101,
-			110, 107, 0, 1, 115, 21, 2, 17, 65, 110, 32, 0, 1, 115, 21, 2, 17, 65, 110, 100, 0, 1, 115, 21, 2, 97, 97, 110, 0, 1,
-			115, 21, 2, 97, 108, 0, 1, 115, 21, 2, 97, 110, 103, 32, 0, 1, 115, 21, 2, 97, 110, 103, 101, 32, 0, 1, 115, 21, 2, 101,
-			110, 110, 0, 1, 115, 97, 97, 108, 112, 2, 101, 114, 17, 67, 0, 1, 115, 97, 118, 0, 1, 115, 105, 101, 108, 118, 0, 1, 115, 105,
-			109, 0, 1, 115, 107, 108, 111, 118, 0, 1, 115, 107, 121, 108, 2, 97, 97, 17, 67, 0, 1, 115, 110, 101, 0, 1, 115, 111, 108, 0,
-			1, 115, 114, 101, 0, 1, 116, 2, 97, 97, 114, 0, 1, 116, 2, 97, 116, 0, 1, 116, 17, 65, 11, 0, 1, 116, 21, 2, 97, 110,
-			100, 0, 1, 116, 21, 2, 105, 101, 0, 1, 116, 21, 2, 121, 0, 1, 116, 101, 111, 0, 1, 116, 105, 0, 1, 116, 110, 2, 17, 65,
-			0, 1, 116, 114, 97, 119, 115, 0, 1, 116, 117, 17, 67, 0, 1, 116, 117, 111, 0, 2, 101, 115, 101, 32, 0, 2, 121, 115, 0, 97,
-			116, 2, 119, 111, 110, 100, 3, 84, 2, 35, 47, 0, 4, 97, 110, 2, 115, 116, 97, 108, 116, 3, 84, 2, 35, 50, 0, 97, 110, 2,
-			116, 114, 111, 117, 105, 103, 0, 97, 110, 111, 114, 100, 101, 108, 105, 2, 107, 3, 84, 2, 35, 50, 10, 110, 34, 72, 13, 55, 13, 0,
-			97, 108, 2, 107, 117, 114, 101, 3, 84, 2, 35, 55, 0, 97, 110, 107, 101, 108, 2, 109, 111, 101, 100, 3, 84, 2, 35, 68, 49, 13,
-			55, 0, 111, 101, 2, 115, 116, 121, 110, 3, 84, 2, 40, 0, 111, 108, 2, 118, 105, 110, 3, 84, 2, 110, 55, 0, 97, 97, 114, 2,
-			110, 101, 101, 109, 98, 97, 3, 84, 2, 115, 34, 0, 121, 115, 103, 101, 2, 114, 105, 103, 3, 84, 2, 123, 89, 136, 116, 0, 195, 170,
-			114, 101, 108, 100, 8, 2, 21, 14, 128, 132, 134, 3, 84, 6, 113, 34, 13, 55, 47, 10, 0, 97, 97, 114, 100, 105, 103, 1, 10, 3,
-			84, 6, 115, 34, 72, 13, 136, 0, 97, 110, 8, 2, 17, 65, 14, 128, 132, 131, 3, 84, 7, 35, 50, 10, 0, 105, 108, 108, 101, 2,
-			109, 105, 3, 84, 13, 55, 13, 0, 105, 108, 104, 101, 108, 2, 109, 105, 3, 84, 13, 55, 107, 2, 112, 55, 0, 105, 110, 107, 101, 2,
-			108, 105, 101, 114, 3, 84, 13, 68, 49, 13, 55, 0, 105, 115, 112, 101, 108, 2, 116, 117, 3, 84, 13, 89, 48, 13, 55, 0, 114, 101,
-			101, 100, 2, 97, 97, 114, 100, 105, 103, 3, 84, 34, 2, 116, 47, 10, 0, 114, 101, 101, 100, 2, 97, 3, 84, 34, 116, 47, 10, 0,
-			4, 97, 97, 114, 100, 101, 101, 114, 3, 84, 35, 34, 72, 6, 116, 34, 0, 97, 97, 114, 100, 101, 114, 2, 21, 0, 97, 110, 103, 101,
-			2, 100, 114, 97, 103, 3, 84, 35, 50, 136, 13, 0, 97, 115, 1, 115, 21, 2, 25, 3, 84, 35, 89, 0, 97, 115, 97, 103, 2, 116,
-			105, 103, 3, 84, 35, 89, 10, 4, 35, 136, 0, 97, 103, 1, 17, 67, 2, 25, 3, 84, 35, 136, 0, 105, 107, 105, 110, 103, 3, 84,
-			37, 49, 37, 68, 0, 111, 114, 99, 101, 115, 116, 101, 114, 3, 84, 40, 89, 47, 13, 34, 0, 101, 100, 2, 114, 101, 110, 3, 84, 108,
-			47, 0, 101, 114, 115, 116, 101, 1, 21, 2, 32, 3, 84, 109, 34, 89, 47, 13, 0, 4, 105, 110, 100, 8, 2, 97, 3, 84, 109, 50,
-			47, 10, 0, 105, 110, 100, 8, 2, 111, 0, 105, 108, 107, 101, 114, 3, 84, 109, 55, 49, 13, 34, 0, 105, 110, 107, 101, 108, 1, 17,
-			67, 3, 84, 109, 68, 49, 13, 55, 0, 105, 103, 8, 3, 84, 109, 136, 0, 111, 108, 8, 2, 17, 65, 3, 84, 110, 55, 10, 0, 111,
-			108, 107, 101, 3, 84, 110, 55, 49, 13, 0, 195, 170, 114, 101, 108, 2, 100, 106, 105, 101, 3, 84, 113, 34, 13, 55, 0, 195, 170, 114,
-			101, 108, 100, 119, 3, 84, 113, 34, 13, 55, 47, 84, 0, 195, 170, 114, 101, 108, 100, 101, 2, 32, 3, 84, 113, 34, 13, 55, 72, 13,
-			0, 4, 97, 1, 21, 2, 32, 24, 3, 84, 115, 0, 97, 2, 115, 112, 111, 114, 101, 0, 97, 2, 118, 111, 108, 0, 97, 2, 118, 114,
-			97, 103, 0, 97, 8, 2, 98, 111, 0, 97, 8, 2, 119, 121, 0, 97, 97, 114, 1, 107, 3, 84, 115, 34, 0, 4, 97, 114, 101, 1,
-			107, 21, 3, 84, 115, 34, 13, 0, 97, 114, 101, 1, 115, 21, 0, 97, 114, 101, 1, 116, 2, 25, 0, 97, 97, 114, 116, 115, 1, 17,
-			67, 3, 84, 115, 34, 47, 89, 0, 97, 116, 101, 114, 1, 107, 21, 3, 84, 115, 47, 13, 34, 0, 97, 112, 101, 110, 3, 84, 115, 48,
-			13, 50, 0, 111, 111, 114, 100, 2, 97, 3, 84, 117, 34, 47, 10, 0, 111, 111, 114, 100, 101, 3, 84, 117, 34, 72, 13, 0, 111, 110,
-			105, 110, 103, 1, 17, 67, 21, 3, 84, 117, 50, 13, 68, 0, 111, 111, 110, 103, 101, 119, 101, 115, 3, 84, 117, 50, 136, 13, 84, 108,
-			89, 0, 121, 107, 1, 115, 10, 3, 84, 123, 49, 0, 121, 110, 107, 101, 108, 2, 100, 101, 114, 3, 84, 123, 50, 49, 112, 55, 0, 101,
-			110, 115, 1, 107, 117, 108, 3, 84, 134, 50, 89, 0, 7, 6, 120, 0, 2, 120, 3, 0, 104, 111, 115, 97, 3, 49, 7, 131, 89, 35,
-			0, 3, 49, 89, 0, 101, 110, 2, 111, 3, 88, 2, 108, 50, 0, 7, 6, 121, 0, 1, 112, 112, 97, 107, 115, 2, 32, 3, 2, 123,
-			0, 1, 17, 67, 11, 2, 32, 3, 21, 0, 111, 114, 107, 3, 57, 6, 131, 49, 0, 3, 123, 0, 115, 116, 101, 114, 114, 101, 2, 108,
-			105, 110, 3, 123, 89, 47, 13, 34, 116, 0, 7, 6, 122, 0, 2, 122, 3, 0, 3, 88, 0, 97, 109, 98, 101, 115, 105, 3, 88, 2,
-			35, 65, 71, 116, 89, 2, 37, 0, 101, 98, 114, 97, 3, 88, 116, 71, 34, 35, 0, 1, 116, 3, 89, 0, 7, 6, 206, 0, 4, 172,
-			3, 6, 35, 55, 83, 35, 10, 0, 177, 0, 4, 173, 3, 6, 108, 48, 89, 37, 55, 110, 50, 10, 0, 181, 0, 191, 3, 6, 110, 65,
-			37, 49, 34, 110, 50, 10, 0, 4, 174, 3, 6, 116, 47, 35, 10, 0, 183, 0, 4, 175, 3, 37, 6, 117, 47, 35, 10, 0, 185, 0,
-			186, 3, 49, 6, 35, 48, 35, 10, 0, 190, 3, 49, 89, 6, 37, 10, 0, 189, 3, 50, 6, 118, 12, 10, 0, 187, 3, 55, 6, 35,
-			65, 71, 72, 35, 10, 0, 188, 3, 65, 6, 118, 12, 10, 0, 178, 3, 71, 6, 116, 47, 35, 10, 0, 180, 3, 72, 6, 112, 55, 47,
-			35, 10, 0, 179, 3, 81, 6, 35, 65, 35, 10, 0, 184, 3, 87, 6, 116, 47, 35, 10, 0, 182, 3, 88, 6, 116, 47, 35, 10, 0,
-			7, 6, 207, 0, 4, 133, 3, 6, 40, 48, 89, 37, 55, 110, 50, 10, 0, 141, 0, 140, 3, 6, 110, 65, 37, 49, 34, 110, 50, 10,
-			0, 129, 3, 34, 6, 117, 10, 0, 132, 3, 47, 6, 129, 10, 0, 128, 3, 48, 6, 37, 10, 0, 136, 3, 48, 89, 6, 37, 10, 0,
-			134, 3, 83, 6, 37, 10, 0, 4, 130, 3, 89, 6, 37, 81, 65, 35, 10, 0, 131, 0, 135, 3, 101, 6, 37, 10, 0, 4, 137, 3,
-			117, 65, 6, 116, 136, 35, 10, 0, 142, 0, 7, 6, 0, 33, 1, 19, 3, 0, 195, 175, 108, 108, 117, 2, 115, 116, 3, 2, 37, 55,
-			2, 111, 0, 39, 116, 106, 105, 101, 1, 21, 3, 2, 37, 80, 37, 0, 195, 175, 115, 111, 108, 3, 2, 37, 89, 2, 40, 55, 0, 195,
-			175, 2, 110, 17, 67, 3, 6, 109, 0, 195, 169, 107, 1, 25, 2, 32, 3, 6, 112, 49, 0, 195, 170, 114, 2, 32, 3, 7, 113, 34,
-			0, 195, 170, 114, 101, 2, 32, 3, 7, 113, 34, 13, 0, 195, 161, 1, 17, 67, 2, 17, 67, 17, 65, 3, 7, 115, 0, 33, 3, 9,
-			123, 47, 34, 40, 48, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 4, 195,
-			171, 2, 116, 101, 105, 116, 3, 13, 0, 195, 175, 2, 110, 115, 112, 0, 195, 175, 2, 110, 116, 0, 201, 153, 0, 195, 175, 110, 107, 97,
-			114, 110, 2, 17, 65, 3, 13, 68, 49, 2, 35, 34, 50, 0, 195, 177, 3, 21, 101, 115, 0, 195, 161, 1, 25, 2, 17, 67, 25, 3,
-			26, 35, 0, 195, 161, 108, 108, 101, 2, 25, 3, 26, 35, 55, 13, 0, 195, 179, 195, 169, 3, 26, 40, 0, 195, 169, 1, 25, 2, 17,
-			67, 25, 3, 26, 108, 0, 195, 179, 1, 25, 2, 17, 67, 25, 3, 26, 110, 0, 195, 186, 1, 25, 2, 17, 67, 25, 3, 26, 111, 0,
-			195, 169, 107, 2, 32, 3, 26, 112, 49, 0, 195, 161, 195, 161, 3, 26, 115, 0, 195, 169, 195, 169, 3, 26, 116, 0, 195, 179, 195, 179,
-			3, 26, 117, 0, 195, 179, 195, 186, 3, 26, 120, 0, 195, 189, 3, 26, 123, 0, 195, 179, 195, 179, 105, 3, 26, 125, 0, 195, 169, 195,
-			186, 3, 26, 128, 0, 195, 175, 103, 110, 111, 114, 101, 101, 114, 3, 37, 136, 50, 40, 34, 6, 116, 34, 0, 45, 8, 32, 2, 32, 15,
-			3, 65, 37, 50, 111, 89, 0, 36, 3, 72, 110, 55, 13, 34, 0, 39, 115, 1, 21, 2, 14, 128, 128, 130, 3, 89, 0, 195, 168, 8,
-			17, 67, 2, 32, 3, 108, 0, 195, 187, 101, 3, 111, 12, 13, 0, 195, 171, 1, 101, 103, 2, 114, 102, 3, 112, 0, 195, 170, 2, 114,
-			3, 113, 0, 195, 170, 101, 114, 1, 108, 3, 113, 13, 34, 0, 195, 170, 114, 1, 107, 115, 2, 12, 3, 113, 34, 0, 195, 170, 114, 101,
-			1, 98, 2, 32, 3, 113, 34, 13, 0, 195, 170, 3, 130, 0, 195, 180, 3, 131, 0, 195, 174, 101, 3, 132, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts1 = FileInMemory_createWithData (81297, reinterpret_cast<const char *> (&espeakdata_dicts1_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/af_dict", 
+			3, 89, 2, 35, 55, 2, 35, 0, 97, 108, 100, 97, 110, 104, 97, 3, 89, 2, 35, 55, 72, 35, 50, 2, 35, 0, 97, 108, 111, 2,
+			110, 3, 89, 2, 35, 55, 110, 0, 97, 109, 8, 2, 98, 3, 89, 2, 35, 65, 0, 97, 109, 97, 114, 105, 2, 116, 97, 3, 89, 2,
+			35, 65, 2, 35, 34, 2, 37, 0, 97, 110, 103, 101, 114, 101, 2, 25, 3, 89, 2, 35, 68, 13, 34, 108, 0, 97, 98, 111, 116, 2,
+			17, 65, 3, 89, 2, 35, 71, 2, 40, 47, 0, 97, 102, 97, 114, 105, 3, 89, 2, 35, 83, 115, 34, 2, 37, 0, 97, 118, 2, 97,
+			110, 110, 17, 65, 3, 89, 2, 35, 84, 0, 97, 103, 2, 109, 111, 101, 3, 89, 2, 35, 136, 0, 97, 103, 104, 101, 98, 98, 101, 2,
+			110, 3, 89, 2, 35, 136, 107, 108, 71, 13, 0, 105, 8, 2, 107, 108, 111, 3, 89, 2, 37, 0, 105, 112, 114, 101, 2, 25, 3, 89,
+			2, 37, 48, 34, 108, 0, 105, 101, 108, 107, 117, 110, 1, 21, 2, 100, 105, 103, 3, 89, 2, 37, 55, 49, 4, 111, 50, 0, 4, 111,
+			2, 110, 97, 116, 17, 65, 3, 89, 2, 40, 0, 111, 2, 112, 114, 97, 0, 111, 117, 2, 102, 102, 108, 101, 117, 0, 117, 2, 115, 97,
+			17, 67, 0, 117, 8, 2, 109, 101, 114, 105, 0, 111, 101, 116, 2, 115, 97, 112, 112, 105, 3, 89, 2, 40, 47, 0, 111, 110, 110, 101,
+			2, 116, 3, 89, 2, 40, 50, 108, 0, 111, 109, 97, 8, 2, 108, 105, 17, 65, 3, 89, 2, 40, 65, 115, 0, 111, 101, 100, 97, 8,
+			2, 110, 3, 89, 2, 40, 72, 35, 0, 111, 101, 119, 101, 2, 110, 105, 101, 114, 3, 89, 2, 40, 84, 13, 0, 111, 115, 97, 2, 116,
+			105, 3, 89, 2, 40, 89, 115, 0, 4, 111, 2, 108, 105, 100, 3, 89, 2, 110, 0, 111, 2, 108, 105, 101, 100, 0, 4, 111, 108, 2,
+			100, 121, 3, 89, 2, 110, 55, 0, 111, 108, 8, 2, 100, 97, 0, 117, 2, 109, 109, 105, 101, 114, 3, 89, 2, 111, 0, 117, 114, 114,
+			111, 2, 103, 97, 3, 89, 2, 111, 34, 2, 40, 0, 4, 117, 98, 2, 115, 116, 97, 110, 115, 105, 101, 3, 89, 2, 111, 48, 0, 117,
+			98, 2, 116, 105, 0, 117, 107, 115, 101, 115, 3, 89, 2, 111, 49, 89, 108, 89, 0, 117, 108, 116, 97, 110, 97, 3, 89, 2, 111, 55,
+			47, 115, 50, 2, 35, 0, 4, 117, 98, 2, 108, 105, 3, 89, 2, 111, 71, 0, 117, 98, 2, 115, 105, 100, 17, 65, 0, 117, 98, 2,
+			115, 107, 114, 105, 112, 0, 117, 98, 108, 105, 2, 109, 17, 65, 3, 89, 2, 111, 71, 55, 2, 37, 0, 117, 98, 108, 105, 109, 105, 2,
+			110, 97, 3, 89, 2, 111, 71, 55, 2, 37, 65, 2, 37, 0, 117, 98, 115, 116, 105, 2, 116, 117, 3, 89, 2, 111, 71, 89, 47, 13,
+			0, 117, 103, 103, 101, 115, 3, 89, 2, 111, 136, 108, 89, 0, 97, 2, 116, 97, 110, 105, 101, 3, 89, 2, 115, 0, 97, 109, 101, 8,
+			2, 104, 17, 65, 21, 3, 89, 2, 115, 65, 13, 0, 99, 101, 110, 97, 114, 105, 111, 3, 89, 2, 116, 50, 115, 34, 2, 37, 38, 2,
+			117, 0, 117, 105, 100, 2, 45, 97, 102, 114, 105, 107, 3, 89, 2, 127, 47, 0, 117, 105, 100, 2, 111, 111, 115, 3, 89, 2, 127, 47,
+			10, 0, 105, 110, 111, 2, 110, 105, 101, 109, 3, 89, 4, 37, 50, 2, 40, 0, 117, 112, 101, 114, 105, 110, 116, 101, 110, 100, 101, 110,
+			116, 3, 89, 4, 40, 48, 34, 13, 50, 47, 2, 108, 50, 72, 108, 50, 47, 0, 4, 111, 100, 111, 109, 2, 105, 101, 116, 3, 89, 4,
+			117, 72, 110, 65, 0, 111, 100, 111, 109, 2, 105, 101, 116, 0, 105, 116, 114, 117, 115, 3, 89, 6, 37, 47, 34, 2, 111, 89, 10, 0,
+			105, 101, 102, 1, 21, 2, 32, 3, 89, 6, 37, 83, 0, 105, 101, 119, 101, 1, 21, 2, 32, 3, 89, 6, 37, 84, 13, 0, 105, 101,
+			119, 101, 114, 1, 21, 2, 32, 3, 89, 6, 37, 84, 13, 34, 0, 105, 2, 110, 110, 105, 103, 3, 89, 6, 109, 0, 117, 103, 1, 21,
+			2, 116, 105, 103, 3, 89, 6, 111, 136, 0, 101, 108, 102, 2, 32, 3, 89, 6, 112, 55, 83, 0, 97, 97, 109, 8, 2, 14, 128, 132,
+			132, 3, 89, 6, 115, 65, 0, 97, 109, 101, 8, 2, 21, 14, 128, 132, 132, 3, 89, 6, 115, 65, 13, 0, 101, 114, 105, 110, 103, 1,
+			21, 3, 89, 6, 116, 34, 13, 68, 0, 101, 119, 101, 1, 25, 2, 17, 67, 3, 89, 6, 116, 84, 13, 0, 111, 110, 2, 111, 109, 3,
+			89, 7, 110, 50, 10, 0, 117, 112, 101, 114, 2, 17, 65, 3, 89, 7, 118, 48, 13, 34, 10, 0, 101, 119, 101, 1, 21, 2, 119, 105,
+			103, 3, 89, 10, 116, 84, 13, 0, 4, 105, 2, 108, 108, 97, 98, 17, 65, 3, 89, 13, 0, 105, 2, 108, 108, 97, 98, 17, 65, 0,
+			105, 2, 110, 97, 112, 25, 0, 105, 2, 112, 105, 101, 114, 0, 105, 2, 116, 114, 111, 101, 110, 0, 105, 2, 118, 105, 101, 108, 0, 105,
+			8, 2, 110, 111, 17, 67, 0, 105, 114, 101, 110, 101, 3, 89, 13, 34, 116, 50, 13, 0, 105, 116, 114, 111, 110, 101, 108, 108, 97, 3,
+			89, 13, 47, 34, 2, 40, 50, 112, 55, 2, 35, 0, 101, 112, 116, 101, 109, 98, 101, 114, 3, 89, 13, 48, 47, 108, 65, 71, 13, 34,
+			0, 4, 105, 110, 2, 106, 97, 3, 89, 13, 50, 0, 105, 110, 2, 116, 97, 107, 17, 67, 0, 105, 110, 8, 2, 100, 114, 111, 0, 105,
+			110, 116, 101, 116, 105, 101, 115, 3, 89, 13, 50, 47, 116, 47, 37, 89, 0, 105, 110, 105, 115, 116, 2, 17, 65, 114, 3, 89, 13, 50,
+			109, 89, 47, 0, 105, 108, 105, 107, 111, 111, 110, 3, 89, 13, 55, 2, 37, 49, 117, 50, 10, 0, 105, 108, 104, 111, 101, 2, 17, 65,
+			3, 89, 13, 55, 2, 40, 58, 0, 105, 108, 105, 2, 110, 100, 3, 89, 13, 55, 109, 0, 97, 108, 97, 114, 105, 115, 3, 89, 13, 55,
+			115, 34, 13, 89, 0, 4, 105, 109, 8, 2, 98, 17, 65, 3, 89, 13, 65, 0, 105, 109, 112, 2, 116, 111, 0, 105, 109, 109, 101, 2,
+			116, 114, 105, 101, 32, 24, 3, 89, 13, 65, 13, 0, 105, 109, 112, 111, 2, 115, 105, 17, 65, 3, 89, 13, 65, 48, 117, 0, 105, 109,
+			98, 105, 2, 111, 17, 67, 3, 89, 13, 65, 71, 2, 37, 0, 105, 109, 98, 111, 2, 108, 105, 101, 107, 3, 89, 13, 65, 71, 2, 40,
+			0, 105, 109, 109, 101, 2, 116, 114, 105, 101, 3, 89, 13, 65, 116, 0, 4, 101, 115, 1, 21, 2, 32, 3, 89, 13, 89, 0, 105, 115,
+			2, 116, 121, 110, 0, 105, 115, 116, 2, 101, 3, 89, 13, 89, 47, 0, 105, 115, 116, 101, 2, 109, 97, 116, 3, 89, 13, 89, 47, 13,
+			0, 105, 103, 2, 97, 21, 3, 89, 13, 136, 0, 105, 103, 97, 114, 101, 2, 116, 3, 89, 13, 136, 2, 35, 34, 108, 0, 97, 8, 2,
+			102, 102, 3, 89, 35, 7, 0, 97, 110, 100, 2, 97, 100, 100, 101, 114, 3, 89, 35, 50, 47, 10, 0, 97, 108, 118, 111, 2, 25, 3,
+			89, 35, 55, 84, 2, 40, 0, 97, 104, 97, 114, 97, 3, 89, 35, 107, 6, 115, 34, 35, 0, 105, 2, 107, 108, 105, 101, 3, 89, 37,
+			0, 105, 112, 97, 108, 101, 1, 21, 3, 89, 37, 48, 6, 115, 55, 13, 0, 105, 101, 107, 101, 8, 3, 89, 37, 49, 13, 0, 105, 107,
+			108, 117, 2, 115, 3, 89, 37, 49, 55, 111, 0, 111, 110, 97, 110, 116, 3, 89, 40, 50, 6, 35, 50, 47, 0, 112, 97, 2, 115, 105,
+			101, 101, 114, 3, 89, 48, 2, 35, 0, 112, 97, 114, 8, 2, 116, 97, 21, 3, 89, 48, 2, 35, 34, 0, 4, 112, 97, 110, 2, 100,
+			97, 98, 3, 89, 48, 2, 35, 50, 0, 112, 97, 110, 2, 106, 17, 65, 17, 65, 0, 112, 97, 110, 2, 115, 112, 101, 107, 0, 112, 97,
+			115, 2, 109, 111, 100, 3, 89, 48, 2, 35, 89, 0, 4, 112, 105, 2, 110, 97, 21, 3, 89, 48, 2, 37, 0, 112, 105, 8, 2, 114,
+			97, 0, 112, 105, 110, 101, 2, 116, 3, 89, 48, 2, 37, 50, 108, 0, 112, 101, 107, 2, 116, 97, 107, 101, 108, 3, 89, 48, 2, 108,
+			49, 0, 112, 101, 107, 117, 2, 108, 17, 65, 3, 89, 48, 2, 108, 49, 2, 118, 0, 112, 101, 115, 8, 2, 109, 97, 3, 89, 48, 2,
+			108, 89, 0, 112, 101, 115, 105, 2, 102, 3, 89, 48, 2, 108, 89, 2, 109, 0, 112, 101, 115, 105, 2, 97, 3, 89, 48, 2, 108, 91,
+			2, 37, 0, 112, 111, 110, 8, 2, 116, 97, 3, 89, 48, 2, 110, 50, 0, 112, 111, 114, 116, 8, 2, 21, 21, 21, 3, 89, 48, 7,
+			110, 34, 47, 10, 0, 112, 101, 114, 1, 21, 2, 97, 3, 89, 48, 13, 34, 6, 0, 112, 105, 116, 115, 2, 118, 111, 110, 3, 89, 48,
+			13, 47, 89, 0, 112, 101, 115, 101, 2, 114, 121, 3, 89, 48, 13, 89, 13, 0, 112, 114, 101, 101, 107, 119, 111, 111, 114, 100, 101, 108,
+			105, 3, 89, 48, 34, 2, 116, 49, 84, 117, 34, 72, 13, 55, 13, 0, 112, 114, 105, 110, 103, 98, 111, 2, 107, 3, 89, 48, 34, 7,
+			109, 68, 71, 110, 0, 112, 114, 111, 107, 101, 3, 89, 48, 34, 117, 49, 13, 0, 112, 97, 114, 116, 101, 108, 3, 89, 48, 35, 34, 47,
+			13, 55, 0, 112, 97, 116, 8, 2, 97, 3, 89, 48, 35, 47, 10, 0, 112, 111, 101, 100, 8, 2, 21, 3, 89, 48, 40, 47, 0, 112,
+			111, 101, 100, 2, 105, 103, 3, 89, 48, 40, 72, 0, 112, 101, 114, 1, 107, 101, 2, 105, 109, 3, 89, 48, 108, 34, 0, 112, 101, 115,
+			105, 97, 108, 105, 115, 3, 89, 48, 108, 91, 35, 55, 6, 109, 89, 0, 112, 101, 115, 105, 97, 108, 105, 115, 2, 101, 101, 110, 3, 89,
+			48, 108, 91, 35, 55, 6, 109, 89, 10, 0, 112, 101, 115, 105, 97, 108, 105, 115, 2, 17, 65, 3, 89, 48, 108, 91, 37, 35, 55, 37,
+			89, 0, 4, 112, 101, 108, 1, 17, 65, 17, 65, 2, 100, 3, 89, 48, 112, 55, 0, 112, 101, 108, 1, 17, 67, 2, 32, 0, 112, 101,
+			108, 1, 101, 2, 32, 0, 112, 101, 108, 8, 17, 65, 110, 2, 32, 0, 112, 101, 108, 97, 103, 116, 105, 103, 3, 89, 48, 112, 55, 6,
+			35, 136, 47, 13, 136, 0, 112, 101, 110, 101, 2, 32, 3, 89, 48, 116, 50, 13, 0, 112, 101, 108, 101, 1, 10, 2, 32, 3, 89, 48,
+			116, 55, 13, 0, 107, 97, 2, 118, 111, 116, 3, 89, 49, 2, 35, 0, 107, 97, 114, 8, 2, 17, 67, 3, 89, 49, 2, 35, 34, 0,
+			107, 97, 107, 101, 114, 2, 105, 110, 103, 3, 89, 49, 2, 35, 49, 116, 34, 0, 107, 97, 110, 2, 100, 97, 3, 89, 49, 2, 35, 50,
+			0, 107, 97, 110, 100, 101, 2, 114, 105, 110, 103, 3, 89, 49, 2, 35, 50, 72, 116, 0, 107, 105, 115, 111, 102, 114, 2, 101, 3, 89,
+			49, 2, 37, 89, 2, 40, 83, 34, 0, 107, 101, 2, 100, 117, 108, 101, 3, 89, 49, 2, 108, 0, 107, 111, 112, 112, 101, 108, 2, 109,
+			97, 97, 3, 89, 49, 2, 110, 48, 13, 55, 0, 107, 101, 114, 2, 109, 117, 116, 115, 3, 89, 49, 2, 112, 34, 0, 107, 101, 114, 112,
+			105, 2, 111, 101, 110, 3, 89, 49, 2, 112, 34, 48, 2, 37, 0, 107, 111, 2, 108, 105, 101, 114, 3, 89, 49, 2, 117, 0, 107, 121,
+			110, 2, 104, 101, 105, 3, 89, 49, 2, 123, 50, 0, 107, 97, 112, 108, 105, 107, 1, 21, 3, 89, 49, 6, 35, 48, 55, 13, 49, 0,
+			107, 121, 110, 108, 105, 107, 1, 21, 3, 89, 49, 6, 123, 50, 55, 13, 49, 0, 107, 111, 107, 8, 2, 17, 65, 14, 128, 132, 132, 3,
+			89, 49, 7, 110, 49, 10, 0, 107, 101, 2, 100, 111, 110, 107, 3, 89, 49, 13, 0, 107, 105, 108, 100, 101, 114, 2, 121, 3, 89, 49,
+			13, 55, 72, 13, 34, 0, 107, 101, 108, 101, 8, 2, 116, 3, 89, 49, 13, 55, 108, 0, 107, 114, 97, 112, 110, 101, 2, 108, 3, 89,
+			49, 34, 2, 35, 48, 50, 112, 0, 107, 114, 105, 102, 2, 17, 65, 3, 89, 49, 34, 109, 83, 10, 0, 107, 97, 114, 114, 101, 108, 3,
+			89, 49, 35, 34, 13, 55, 0, 107, 97, 112, 112, 121, 8, 17, 67, 17, 65, 17, 65, 17, 67, 3, 89, 49, 35, 48, 6, 123, 0, 4,
+			107, 97, 112, 1, 21, 2, 105, 110, 21, 3, 89, 49, 35, 48, 10, 0, 107, 97, 112, 1, 21, 2, 111, 0, 107, 108, 101, 2, 114, 111,
+			115, 101, 3, 89, 49, 55, 13, 0, 107, 117, 108, 100, 2, 101, 114, 107, 101, 110, 3, 89, 49, 111, 55, 47, 10, 0, 107, 101, 114, 112,
+			3, 89, 49, 112, 34, 48, 0, 107, 97, 100, 101, 3, 89, 49, 115, 72, 13, 0, 107, 97, 100, 117, 3, 89, 49, 115, 72, 118, 0, 107,
+			101, 109, 101, 114, 3, 89, 49, 116, 65, 13, 34, 0, 107, 111, 111, 110, 103, 101, 2, 17, 67, 3, 89, 49, 117, 50, 136, 13, 0, 107,
+			111, 108, 101, 3, 89, 49, 117, 55, 13, 0, 110, 101, 108, 8, 2, 17, 65, 3, 89, 50, 7, 112, 55, 10, 0, 110, 101, 108, 2, 32,
+			3, 89, 50, 112, 55, 0, 110, 97, 112, 101, 114, 2, 105, 110, 103, 3, 89, 50, 115, 48, 13, 34, 0, 108, 97, 2, 118, 105, 110, 3,
+			89, 55, 2, 35, 0, 108, 97, 103, 8, 3, 89, 55, 7, 35, 136, 10, 0, 108, 97, 103, 2, 111, 102, 102, 3, 89, 55, 35, 136, 10,
+			0, 108, 111, 112, 2, 101, 109, 109, 101, 114, 3, 89, 55, 110, 48, 10, 0, 108, 97, 2, 119, 101, 3, 89, 55, 115, 0, 108, 97, 119,
+			101, 2, 107, 3, 89, 55, 115, 84, 13, 0, 4, 106, 1, 21, 2, 97, 17, 67, 17, 65, 3, 89, 57, 0, 106, 1, 21, 2, 97, 97,
+			114, 0, 4, 119, 2, 101, 114, 109, 3, 89, 58, 0, 119, 8, 0, 119, 97, 2, 104, 105, 108, 105, 3, 89, 58, 2, 35, 0, 119, 97,
+			114, 116, 2, 103, 97, 108, 3, 89, 58, 2, 35, 34, 47, 0, 4, 119, 97, 97, 114, 2, 108, 121, 119, 3, 89, 58, 2, 115, 34, 0,
+			119, 97, 97, 114, 2, 109, 111, 101, 100, 0, 119, 97, 109, 8, 2, 17, 65, 21, 3, 89, 58, 35, 65, 10, 0, 117, 105, 116, 101, 3,
+			89, 58, 37, 47, 13, 0, 119, 101, 110, 100, 101, 108, 3, 89, 58, 108, 50, 72, 13, 55, 0, 119, 101, 109, 1, 21, 2, 32, 3, 89,
+			58, 108, 65, 0, 119, 101, 109, 8, 2, 17, 65, 3, 89, 58, 108, 65, 10, 0, 119, 105, 116, 115, 101, 114, 3, 89, 58, 109, 47, 89,
+			13, 34, 0, 119, 101, 101, 112, 3, 89, 58, 116, 48, 0, 119, 101, 112, 101, 3, 89, 58, 116, 48, 13, 0, 109, 97, 2, 114, 97, 103,
+			3, 89, 65, 2, 35, 0, 109, 101, 108, 116, 3, 89, 65, 112, 55, 47, 0, 119, 97, 103, 2, 25, 3, 89, 84, 35, 136, 0, 119, 101,
+			114, 107, 1, 21, 3, 89, 84, 112, 34, 49, 0, 119, 101, 101, 1, 21, 2, 32, 3, 89, 84, 116, 0, 105, 108, 105, 107, 111, 2, 110,
+			3, 89, 109, 55, 2, 37, 49, 2, 110, 0, 105, 108, 119, 101, 114, 3, 89, 109, 55, 84, 13, 34, 0, 105, 116, 117, 97, 115, 105, 101,
+			3, 89, 109, 76, 40, 6, 115, 89, 37, 0, 111, 2, 110, 110, 101, 116, 106, 105, 101, 12, 12, 3, 89, 110, 0, 111, 110, 2, 103, 21,
+			3, 89, 110, 50, 0, 117, 98, 8, 2, 97, 3, 89, 111, 71, 10, 0, 97, 107, 101, 3, 89, 115, 49, 13, 0, 97, 109, 101, 110, 2,
+			12, 3, 89, 115, 65, 13, 50, 0, 97, 109, 101, 108, 2, 17, 67, 3, 89, 115, 65, 13, 55, 0, 97, 97, 109, 103, 101, 101, 3, 89,
+			115, 65, 136, 116, 0, 101, 119, 101, 2, 116, 106, 105, 101, 3, 89, 116, 84, 37, 0, 111, 2, 118, 3, 89, 117, 0, 111, 105, 101, 8,
+			3, 89, 117, 19, 37, 0, 111, 118, 101, 114, 114, 101, 3, 89, 117, 83, 6, 112, 34, 13, 0, 111, 115, 105, 97, 108, 2, 105, 3, 89,
+			117, 91, 37, 35, 55, 6, 0, 111, 115, 105, 111, 2, 45, 3, 89, 117, 91, 119, 12, 0, 97, 117, 110, 97, 3, 89, 131, 50, 35, 0,
+			4, 1, 17, 67, 2, 105, 101, 101, 17, 67, 3, 91, 0, 1, 17, 67, 2, 105, 195, 171, 108, 101, 0, 2, 105, 195, 171, 110, 0, 99,
+			104, 0, 104, 8, 0, 106, 0, 106, 97, 2, 109, 97, 3, 91, 2, 35, 0, 106, 97, 114, 2, 109, 97, 110, 116, 3, 91, 2, 35, 34,
+			0, 106, 97, 109, 112, 97, 110, 106, 101, 3, 91, 2, 35, 65, 48, 35, 50, 57, 13, 0, 106, 97, 109, 112, 111, 101, 3, 91, 2, 35,
+			65, 48, 40, 12, 0, 106, 111, 107, 111, 108, 97, 100, 101, 3, 91, 2, 110, 49, 13, 55, 115, 72, 13, 0, 106, 105, 109, 112, 97, 110,
+			2, 115, 101, 101, 3, 91, 13, 65, 48, 2, 35, 50, 0, 105, 1, 21, 2, 111, 3, 91, 37, 0, 105, 97, 97, 108, 3, 91, 37, 6,
+			115, 55, 0, 105, 97, 108, 101, 3, 91, 37, 6, 115, 55, 13, 0, 99, 104, 117, 8, 2, 17, 67, 3, 91, 40, 0, 106, 101, 114, 114,
+			105, 101, 3, 91, 108, 34, 37, 0, 105, 111, 1, 21, 2, 110, 101, 3, 91, 119, 6, 0, 7, 6, 116, 0, 4, 2, 32, 100, 24, 3,
+			0, 2, 116, 3, 0, 4, 99, 104, 1, 17, 65, 3, 21, 0, 104, 1, 21, 2, 32, 24, 0, 104, 8, 0, 104, 121, 1, 21, 2, 32,
+			0, 105, 111, 110, 1, 21, 2, 32, 0, 105, 111, 110, 115, 1, 21, 2, 32, 0, 108, 101, 1, 21, 2, 32, 0, 106, 105, 101, 1, 101,
+			114, 3, 37, 80, 37, 0, 4, 3, 47, 0, 1, 17, 67, 21, 2, 101, 110, 121, 0, 1, 21, 2, 101, 109, 97, 25, 12, 12, 0, 1,
+			97, 97, 114, 116, 115, 2, 106, 0, 104, 1, 21, 2, 17, 67, 0, 104, 8, 2, 21, 21, 0, 4, 97, 1, 21, 2, 108, 105, 115, 3,
+			47, 2, 35, 0, 97, 2, 98, 108, 101, 116, 0, 97, 2, 114, 105, 101, 102, 0, 97, 2, 114, 105, 101, 119, 101, 0, 97, 8, 2, 109,
+			98, 0, 97, 114, 8, 2, 116, 97, 21, 3, 47, 2, 35, 34, 0, 97, 114, 101, 110, 2, 116, 97, 3, 47, 2, 35, 34, 13, 50, 0,
+			97, 116, 111, 101, 2, 195, 171, 3, 47, 2, 35, 47, 2, 40, 0, 97, 112, 105, 115, 115, 101, 2, 114, 105, 3, 47, 2, 35, 48, 13,
+			89, 13, 0, 97, 107, 115, 105, 100, 101, 114, 2, 109, 3, 47, 2, 35, 49, 89, 2, 37, 72, 2, 112, 34, 0, 97, 110, 122, 97, 2,
+			110, 105, 3, 47, 2, 35, 50, 88, 115, 0, 97, 108, 101, 110, 2, 116, 106, 105, 101, 3, 47, 2, 35, 55, 108, 37, 68, 0, 97, 108,
+			101, 110, 116, 3, 47, 2, 35, 55, 108, 50, 47, 0, 97, 109, 97, 114, 105, 115, 107, 3, 47, 2, 35, 65, 2, 35, 34, 109, 89, 49,
+			0, 97, 109, 101, 108, 101, 2, 116, 106, 3, 47, 2, 35, 65, 13, 55, 108, 37, 0, 97, 109, 98, 111, 101, 2, 114, 121, 110, 3, 47,
+			2, 35, 65, 71, 2, 40, 0, 97, 109, 97, 2, 116, 105, 101, 3, 47, 2, 35, 65, 115, 0, 97, 98, 101, 114, 2, 110, 97, 107, 101,
+			108, 3, 47, 2, 35, 71, 13, 34, 0, 97, 98, 97, 107, 3, 47, 2, 35, 71, 35, 49, 0, 97, 98, 108, 111, 2, 16, 3, 47, 2,
+			35, 71, 55, 117, 0, 97, 102, 101, 2, 114, 101, 3, 47, 2, 35, 83, 13, 0, 97, 118, 101, 114, 2, 110, 105, 101, 114, 3, 47, 2,
+			35, 83, 13, 34, 0, 97, 118, 101, 114, 110, 101, 3, 47, 2, 35, 83, 112, 34, 50, 13, 0, 4, 105, 2, 112, 101, 114, 17, 65, 3,
+			47, 2, 37, 0, 105, 2, 114, 97, 0, 105, 101, 114, 108, 97, 110, 2, 116, 121, 3, 47, 2, 37, 12, 34, 55, 2, 35, 50, 0, 105,
+			114, 97, 2, 110, 110, 105, 101, 3, 47, 2, 37, 34, 2, 35, 0, 105, 110, 101, 110, 8, 2, 116, 97, 21, 3, 47, 2, 37, 50, 2,
+			108, 50, 0, 105, 98, 101, 116, 8, 3, 47, 2, 37, 71, 108, 47, 0, 105, 97, 114, 97, 3, 47, 2, 37, 115, 34, 35, 0, 4, 111,
+			101, 2, 107, 111, 109, 101, 3, 47, 2, 40, 0, 111, 101, 2, 107, 111, 109, 115, 116, 105, 0, 111, 101, 2, 108, 97, 97, 116, 98, 97,
+			0, 111, 101, 2, 114, 105, 115, 116, 101, 21, 0, 111, 101, 114, 2, 110, 3, 47, 2, 40, 34, 0, 111, 101, 114, 101, 107, 101, 110, 2,
+			98, 3, 47, 2, 40, 34, 6, 116, 49, 13, 50, 0, 111, 101, 114, 101, 105, 107, 101, 3, 47, 2, 40, 34, 123, 49, 13, 0, 4, 111,
+			112, 8, 2, 97, 97, 115, 3, 47, 2, 40, 48, 0, 111, 112, 8, 2, 97, 115, 101, 0, 111, 101, 112, 97, 115, 108, 105, 107, 3, 47,
+			2, 40, 48, 35, 89, 55, 13, 49, 0, 111, 110, 101, 101, 108, 3, 47, 2, 40, 50, 116, 55, 0, 111, 110, 101, 108, 101, 3, 47, 2,
+			40, 50, 116, 55, 13, 0, 111, 101, 103, 97, 110, 107, 3, 47, 2, 40, 136, 6, 35, 68, 49, 0, 111, 101, 103, 101, 101, 102, 3, 47,
+			2, 40, 136, 116, 83, 0, 111, 101, 103, 101, 119, 101, 110, 2, 100, 3, 47, 2, 40, 136, 116, 84, 13, 50, 0, 111, 114, 8, 2, 110,
+			121, 110, 3, 47, 2, 110, 34, 0, 111, 107, 2, 116, 111, 107, 107, 3, 47, 2, 110, 49, 0, 111, 107, 107, 101, 2, 108, 111, 3, 47,
+			2, 110, 49, 13, 0, 111, 109, 98, 111, 108, 97, 3, 47, 2, 110, 65, 71, 117, 55, 2, 35, 0, 111, 115, 8, 2, 107, 97, 3, 47,
+			2, 110, 89, 0, 111, 8, 2, 110, 97, 3, 47, 2, 117, 0, 4, 111, 112, 8, 2, 111, 103, 114, 97, 3, 47, 2, 117, 48, 0, 111,
+			112, 8, 2, 111, 108, 111, 0, 117, 98, 101, 114, 107, 117, 108, 111, 115, 101, 3, 47, 2, 118, 71, 13, 34, 49, 2, 118, 55, 117, 89,
+			13, 0, 97, 105, 119, 97, 2, 110, 3, 47, 2, 121, 58, 35, 0, 121, 100, 2, 114, 111, 119, 3, 47, 2, 123, 47, 0, 111, 105, 2,
+			108, 101, 116, 3, 47, 2, 124, 0, 117, 105, 110, 2, 105, 101, 114, 3, 47, 2, 127, 50, 0, 1, 114, 101, 118, 100, 97, 2, 101, 3,
+			47, 6, 0, 105, 101, 102, 1, 21, 2, 32, 3, 47, 6, 37, 83, 0, 4, 105, 101, 119, 101, 1, 21, 2, 32, 3, 47, 6, 37, 84,
+			13, 0, 105, 101, 119, 101, 1, 21, 2, 114, 32, 0, 111, 101, 8, 2, 119, 101, 110, 25, 14, 128, 132, 131, 3, 47, 6, 40, 0, 111,
+			101, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 47, 6, 40, 136, 13, 0, 111, 101, 103, 101, 2, 119, 105, 110, 103, 3, 47, 6, 40,
+			136, 116, 0, 97, 108, 105, 103, 1, 21, 3, 47, 6, 115, 55, 13, 136, 0, 111, 114, 105, 115, 1, 21, 2, 32, 3, 47, 6, 117, 34,
+			13, 89, 0, 117, 117, 114, 3, 47, 6, 118, 34, 0, 121, 1, 21, 2, 100, 105, 103, 3, 47, 6, 123, 0, 117, 105, 103, 108, 105, 107,
+			3, 47, 6, 127, 136, 55, 13, 49, 0, 97, 110, 100, 101, 8, 2, 17, 67, 21, 3, 47, 7, 35, 50, 72, 13, 0, 111, 112, 8, 2,
+			17, 65, 3, 47, 7, 110, 48, 10, 0, 117, 114, 98, 111, 8, 2, 25, 3, 47, 7, 111, 34, 71, 117, 10, 0, 104, 101, 117, 8, 3,
+			47, 7, 128, 0, 116, 101, 108, 3, 47, 13, 55, 0, 105, 110, 107, 2, 116, 105, 110, 107, 3, 47, 13, 68, 49, 0, 4, 97, 110, 100,
+			2, 111, 3, 47, 35, 50, 47, 10, 0, 97, 110, 100, 8, 2, 97, 0, 105, 116, 101, 108, 3, 47, 37, 47, 13, 55, 0, 105, 115, 115,
+			117, 101, 3, 47, 37, 91, 2, 40, 0, 111, 101, 114, 101, 2, 32, 3, 47, 40, 12, 34, 13, 0, 111, 101, 110, 101, 109, 101, 110, 3,
+			47, 40, 50, 6, 116, 65, 13, 50, 0, 4, 106, 1, 21, 2, 97, 3, 47, 57, 0, 106, 1, 105, 117, 0, 106, 111, 101, 114, 110, 97,
+			108, 105, 1, 21, 3, 47, 57, 2, 40, 34, 50, 2, 35, 55, 13, 0, 119, 101, 101, 100, 2, 25, 3, 47, 58, 37, 12, 72, 0, 119,
+			105, 115, 2, 17, 65, 3, 47, 58, 109, 89, 10, 0, 119, 101, 101, 100, 2, 114, 97, 3, 47, 58, 116, 72, 0, 119, 121, 102, 101, 2,
+			108, 3, 47, 58, 123, 83, 13, 0, 111, 103, 1, 103, 114, 111, 98, 3, 47, 110, 136, 10, 0, 117, 114, 108, 105, 110, 103, 116, 111, 110,
+			3, 47, 111, 12, 55, 2, 37, 68, 47, 13, 50, 0, 117, 115, 115, 101, 110, 3, 47, 111, 89, 13, 50, 0, 117, 103, 2, 17, 65, 3,
+			47, 111, 136, 10, 0, 4, 117, 117, 114, 1, 105, 116, 114, 97, 112, 3, 47, 118, 12, 34, 0, 117, 117, 114, 1, 115, 0, 121, 100, 2,
+			114, 3, 47, 123, 47, 0, 97, 110, 116, 8, 2, 101, 3, 47, 133, 50, 47, 0, 97, 110, 116, 101, 115, 3, 47, 133, 50, 47, 13, 89,
+			0, 4, 106, 3, 76, 0, 106, 8, 2, 105, 101, 0, 106, 101, 2, 108, 108, 105, 115, 3, 76, 2, 108, 0, 106, 97, 110, 107, 1, 21,
+			3, 76, 35, 68, 49, 0, 106, 101, 108, 108, 111, 3, 76, 108, 55, 40, 0, 106, 2, 105, 101, 3, 80, 0, 106, 105, 101, 1, 105, 117,
+			3, 80, 37, 0, 105, 97, 2, 32, 3, 91, 57, 35, 0, 7, 6, 117, 0, 103, 97, 110, 2, 100, 101, 3, 2, 40, 81, 2, 35, 50,
+			0, 1, 109, 2, 115, 107, 105, 101, 116, 3, 2, 111, 0, 108, 116, 105, 2, 109, 97, 3, 2, 111, 55, 47, 2, 37, 0, 8, 2, 114,
+			97, 3, 2, 118, 0, 114, 105, 110, 101, 3, 2, 118, 34, 37, 50, 13, 0, 114, 105, 101, 110, 119, 101, 103, 3, 2, 118, 34, 37, 50,
+			84, 112, 136, 10, 0, 114, 101, 8, 2, 116, 3, 2, 118, 34, 116, 0, 116, 111, 2, 112, 105, 17, 65, 3, 2, 118, 47, 117, 0, 110,
+			105, 118, 101, 114, 115, 2, 17, 65, 21, 3, 2, 118, 50, 2, 37, 84, 2, 112, 34, 89, 0, 115, 8, 98, 2, 17, 65, 3, 7, 111,
+			89, 10, 0, 2, 104, 108, 101, 32, 3, 40, 12, 0, 2, 17, 67, 3, 111, 0, 4, 3, 118, 0, 2, 17, 67, 17, 65, 0, 117, 0,
+			114, 101, 8, 2, 17, 67, 3, 118, 12, 34, 13, 0, 114, 105, 110, 101, 101, 114, 3, 118, 34, 37, 50, 6, 116, 34, 0, 119, 1, 110,
+			3, 118, 84, 0, 4, 119, 101, 1, 110, 2, 17, 67, 3, 118, 84, 13, 0, 119, 101, 1, 114, 17, 67, 2, 17, 67, 0, 119, 101, 108,
+			105, 107, 1, 17, 67, 3, 118, 84, 13, 55, 13, 49, 0, 121, 3, 127, 0, 110, 116, 106, 105, 101, 1, 17, 67, 3, 127, 68, 80, 37,
+			0, 116, 106, 105, 101, 3, 127, 80, 37, 0, 7, 6, 118, 0, 2, 118, 3, 0, 105, 108, 108, 101, 3, 21, 0, 3, 83, 0, 97, 2,
+			108, 108, 101, 105, 3, 83, 2, 35, 0, 97, 116, 105, 2, 107, 97, 97, 110, 3, 83, 2, 35, 47, 2, 37, 0, 97, 107, 97, 2, 116,
+			117, 114, 101, 3, 83, 2, 35, 49, 13, 0, 97, 110, 8, 2, 21, 3, 83, 2, 35, 50, 0, 97, 110, 115, 101, 108, 102, 2, 115, 112,
+			114, 3, 83, 2, 35, 50, 89, 2, 112, 55, 83, 0, 105, 2, 111, 3, 83, 2, 37, 0, 105, 111, 2, 108, 101, 116, 25, 3, 83, 2,
+			37, 2, 40, 0, 105, 101, 114, 2, 107, 97, 110, 116, 105, 103, 3, 83, 2, 37, 12, 34, 0, 105, 116, 114, 105, 2, 111, 101, 108, 3,
+			83, 2, 37, 47, 34, 2, 37, 0, 4, 117, 108, 2, 107, 97, 3, 83, 2, 111, 55, 0, 117, 108, 8, 2, 103, 97, 97, 116, 0, 121,
+			2, 97, 110, 100, 105, 103, 3, 83, 2, 123, 0, 97, 108, 108, 105, 103, 3, 83, 6, 35, 55, 13, 136, 0, 97, 115, 103, 101, 8, 2,
+			21, 14, 128, 132, 133, 3, 83, 6, 35, 89, 136, 13, 0, 105, 115, 101, 2, 25, 3, 83, 6, 37, 89, 37, 0, 117, 108, 100, 105, 103,
+			3, 83, 6, 111, 55, 72, 13, 136, 0, 97, 97, 114, 100, 105, 103, 1, 21, 3, 83, 6, 115, 34, 72, 13, 136, 0, 97, 107, 97, 110,
+			115, 105, 101, 3, 83, 13, 49, 35, 50, 89, 37, 0, 4, 105, 115, 1, 25, 2, 105, 101, 114, 3, 83, 13, 89, 0, 105, 115, 1, 101,
+			105, 21, 2, 32, 0, 105, 115, 101, 110, 2, 116, 101, 3, 83, 13, 89, 13, 50, 0, 105, 115, 105, 116, 101, 3, 83, 13, 89, 37, 47,
+			13, 0, 114, 101, 100, 101, 2, 108, 105, 101, 119, 3, 83, 34, 2, 116, 72, 13, 0, 114, 101, 101, 115, 97, 97, 110, 2, 106, 97, 3,
+			83, 34, 2, 116, 89, 19, 2, 115, 50, 0, 4, 114, 121, 2, 109, 101, 115, 115, 101, 108, 3, 83, 34, 2, 123, 0, 114, 121, 2, 109,
+			111, 101, 100, 0, 114, 121, 2, 112, 111, 115, 116, 105, 0, 114, 121, 2, 119, 105, 108, 0, 114, 105, 101, 110, 100, 105, 2, 110, 3, 83,
+			34, 37, 50, 72, 6, 109, 0, 114, 111, 116, 2, 101, 105, 101, 114, 3, 83, 34, 110, 47, 10, 0, 114, 101, 101, 109, 100, 101, 3, 83,
+			34, 116, 65, 72, 13, 0, 114, 101, 100, 101, 3, 83, 34, 116, 72, 13, 0, 114, 121, 103, 101, 119, 105, 103, 3, 83, 34, 123, 136, 6,
+			116, 84, 13, 136, 0, 97, 2, 100, 111, 101, 107, 3, 83, 35, 0, 97, 116, 8, 2, 17, 65, 21, 3, 83, 35, 47, 10, 0, 97, 107,
+			2, 117, 110, 105, 101, 3, 83, 35, 49, 10, 0, 97, 110, 103, 8, 2, 21, 3, 83, 35, 68, 0, 97, 110, 103, 101, 110, 3, 83, 35,
+			68, 13, 50, 0, 97, 110, 107, 108, 105, 107, 8, 3, 83, 35, 68, 49, 55, 13, 49, 0, 97, 115, 115, 116, 101, 2, 108, 3, 83, 35,
+			89, 47, 112, 0, 105, 115, 1, 100, 97, 2, 101, 21, 3, 83, 37, 89, 6, 0, 108, 105, 101, 195, 171, 2, 110, 105, 101, 114, 3, 83,
+			55, 2, 37, 13, 0, 108, 97, 109, 2, 111, 111, 3, 83, 55, 35, 65, 10, 0, 108, 97, 2, 17, 67, 17, 65, 17, 65, 3, 83, 55,
+			115, 0, 105, 115, 2, 17, 65, 3, 83, 109, 89, 0, 195, 169, 114, 3, 83, 113, 34, 0, 4, 97, 97, 114, 100, 105, 103, 1, 114, 101,
+			118, 3, 83, 115, 34, 72, 13, 136, 0, 97, 97, 114, 100, 105, 103, 1, 116, 105, 117, 0, 97, 116, 101, 2, 17, 67, 3, 83, 115, 47,
+			13, 0, 1, 21, 2, 97, 108, 101, 110, 116, 3, 84, 0, 97, 2, 107, 117, 3, 84, 2, 35, 0, 97, 114, 105, 2, 17, 65, 3, 84,
+			2, 35, 34, 2, 37, 0, 97, 108, 117, 116, 97, 3, 84, 2, 35, 55, 118, 47, 2, 35, 0, 97, 115, 101, 108, 105, 110, 101, 3, 84,
+			2, 35, 89, 13, 55, 37, 50, 0, 97, 103, 105, 110, 2, 17, 65, 21, 3, 84, 2, 35, 136, 2, 37, 50, 0, 4, 105, 2, 98, 114,
+			17, 65, 3, 84, 2, 37, 0, 105, 2, 99, 116, 111, 21, 0, 105, 8, 2, 114, 97, 0, 105, 116, 97, 2, 109, 105, 3, 84, 2, 37,
+			47, 2, 35, 0, 105, 115, 105, 2, 111, 101, 110, 3, 84, 2, 37, 89, 2, 37, 0, 105, 115, 2, 117, 17, 65, 3, 84, 2, 37, 90,
+			0, 105, 8, 2, 114, 105, 3, 84, 13, 0, 105, 114, 116, 117, 3, 84, 13, 34, 76, 2, 118, 0, 97, 103, 105, 110, 97, 3, 84, 35,
+			136, 37, 50, 35, 0, 105, 114, 117, 2, 25, 3, 84, 37, 34, 111, 0, 105, 116, 114, 111, 8, 2, 32, 3, 84, 37, 47, 34, 2, 40,
+			0, 105, 107, 105, 110, 103, 3, 84, 37, 49, 37, 68, 0, 105, 100, 101, 111, 3, 84, 37, 72, 119, 0, 4, 105, 115, 1, 17, 65, 2,
+			97, 115, 105, 101, 3, 84, 37, 89, 0, 105, 115, 2, 105, 101, 0, 105, 115, 2, 117, 109, 0, 105, 115, 1, 17, 65, 2, 101, 21, 3,
+			84, 37, 89, 6, 0, 105, 195, 171, 116, 110, 97, 2, 109, 101, 3, 84, 57, 2, 108, 47, 50, 2, 35, 0, 105, 108, 108, 97, 3, 84,
+			109, 55, 35, 0, 7, 6, 119, 0, 2, 119, 3, 0, 4, 1, 21, 2, 17, 67, 32, 3, 21, 0, 1, 21, 2, 32, 24, 0, 104, 0,
+			110, 0, 111, 111, 100, 2, 12, 0, 111, 114, 116, 104, 0, 115, 1, 21, 2, 32, 24, 0, 4, 1, 100, 3, 58, 0, 1, 104, 103, 0,
+			1, 107, 0, 1, 115, 0, 1, 115, 2, 97, 114, 116, 0, 1, 115, 2, 101, 101, 114, 100, 101, 114, 0, 1, 115, 21, 2, 97, 108, 107,
+			32, 0, 1, 115, 101, 98, 2, 97, 97, 114, 100, 101, 0, 1, 115, 101, 105, 2, 97, 97, 110, 0, 1, 115, 114, 101, 2, 101, 101, 114,
+			32, 0, 1, 116, 0, 97, 103, 103, 97, 1, 107, 3, 58, 35, 136, 35, 0, 97, 114, 101, 1, 115, 101, 98, 3, 58, 115, 34, 13, 0,
+			121, 102, 101, 108, 1, 116, 21, 3, 58, 123, 83, 13, 55, 0, 4, 3, 84, 0, 1, 17, 67, 2, 101, 101, 114, 100, 101, 114, 0, 1,
+			17, 67, 2, 105, 116, 32, 0, 1, 17, 67, 2, 195, 170, 114, 101, 108, 100, 0, 1, 17, 67, 17, 65, 2, 97, 97, 105, 101, 114, 0,
+			1, 17, 67, 21, 2, 97, 97, 114, 100, 101, 32, 0, 1, 17, 67, 21, 2, 97, 114, 109, 0, 1, 17, 67, 21, 2, 101, 114, 107, 0,
+			1, 17, 67, 21, 2, 101, 195, 171, 0, 1, 17, 67, 21, 2, 105, 101, 108, 0, 1, 17, 67, 21, 2, 111, 17, 67, 25, 0, 1, 17,
+			67, 21, 2, 111, 111, 17, 67, 0, 1, 17, 67, 21, 2, 117, 114, 109, 0, 1, 17, 67, 21, 2, 121, 100, 0, 1, 17, 67, 111, 111,
+			0, 1, 21, 2, 97, 101, 110, 0, 1, 100, 17, 65, 17, 65, 0, 1, 100, 21, 2, 97, 97, 114, 0, 1, 100, 97, 0, 1, 100, 110,
+			0, 1, 100, 111, 17, 67, 0, 1, 100, 121, 0, 1, 107, 2, 17, 65, 110, 100, 0, 1, 107, 2, 101, 114, 17, 67, 0, 1, 107, 2,
+			111, 17, 65, 0, 1, 107, 21, 2, 97, 108, 109, 0, 1, 115, 2, 97, 116, 101, 114, 0, 1, 115, 2, 101, 101, 107, 0, 1, 115, 2,
+			105, 108, 0, 1, 115, 2, 111, 101, 100, 101, 0, 1, 115, 2, 111, 101, 108, 105, 110, 103, 0, 1, 115, 2, 111, 117, 0, 1, 115, 2,
+			114, 0, 1, 115, 2, 121, 102, 0, 1, 115, 10, 2, 101, 101, 102, 115, 0, 1, 115, 17, 65, 17, 65, 2, 101, 110, 107, 0, 1, 115,
+			21, 2, 17, 65, 110, 32, 0, 1, 115, 21, 2, 17, 65, 110, 100, 0, 1, 115, 21, 2, 97, 97, 110, 0, 1, 115, 21, 2, 97, 108,
+			0, 1, 115, 21, 2, 97, 110, 103, 32, 0, 1, 115, 21, 2, 97, 110, 103, 101, 32, 0, 1, 115, 21, 2, 101, 110, 110, 0, 1, 115,
+			97, 97, 108, 112, 2, 101, 114, 17, 67, 0, 1, 115, 97, 118, 0, 1, 115, 105, 101, 108, 118, 0, 1, 115, 105, 109, 0, 1, 115, 107,
+			108, 111, 118, 0, 1, 115, 107, 121, 108, 2, 97, 97, 17, 67, 0, 1, 115, 110, 101, 0, 1, 115, 111, 108, 0, 1, 115, 114, 101, 0,
+			1, 116, 2, 97, 97, 114, 0, 1, 116, 2, 97, 116, 0, 1, 116, 17, 65, 11, 0, 1, 116, 21, 2, 97, 110, 100, 0, 1, 116, 21,
+			2, 105, 101, 0, 1, 116, 21, 2, 121, 0, 1, 116, 101, 111, 0, 1, 116, 105, 0, 1, 116, 110, 2, 17, 65, 0, 1, 116, 114, 97,
+			119, 115, 0, 1, 116, 117, 17, 67, 0, 1, 116, 117, 111, 0, 2, 101, 115, 101, 32, 0, 2, 121, 115, 0, 97, 116, 2, 119, 111, 110,
+			100, 3, 84, 2, 35, 47, 0, 4, 97, 110, 2, 115, 116, 97, 108, 116, 3, 84, 2, 35, 50, 0, 97, 110, 2, 116, 114, 111, 117, 105,
+			103, 0, 97, 110, 111, 114, 100, 101, 108, 105, 2, 107, 3, 84, 2, 35, 50, 10, 110, 34, 72, 13, 55, 13, 0, 97, 108, 2, 107, 117,
+			114, 101, 3, 84, 2, 35, 55, 0, 97, 110, 107, 101, 108, 2, 109, 111, 101, 100, 3, 84, 2, 35, 68, 49, 13, 55, 0, 111, 101, 2,
+			115, 116, 121, 110, 3, 84, 2, 40, 0, 111, 108, 2, 118, 105, 110, 3, 84, 2, 110, 55, 0, 97, 97, 114, 2, 110, 101, 101, 109, 98,
+			97, 3, 84, 2, 115, 34, 0, 121, 115, 103, 101, 2, 114, 105, 103, 3, 84, 2, 123, 89, 136, 116, 0, 195, 170, 114, 101, 108, 100, 8,
+			2, 21, 14, 128, 132, 134, 3, 84, 6, 113, 34, 13, 55, 47, 10, 0, 97, 97, 114, 100, 105, 103, 1, 10, 3, 84, 6, 115, 34, 72,
+			13, 136, 0, 97, 110, 8, 2, 17, 65, 14, 128, 132, 131, 3, 84, 7, 35, 50, 10, 0, 105, 108, 108, 101, 2, 109, 105, 3, 84, 13,
+			55, 13, 0, 105, 108, 104, 101, 108, 2, 109, 105, 3, 84, 13, 55, 107, 2, 112, 55, 0, 105, 110, 107, 101, 2, 108, 105, 101, 114, 3,
+			84, 13, 68, 49, 13, 55, 0, 105, 115, 112, 101, 108, 2, 116, 117, 3, 84, 13, 89, 48, 13, 55, 0, 114, 101, 101, 100, 2, 97, 97,
+			114, 100, 105, 103, 3, 84, 34, 2, 116, 47, 10, 0, 114, 101, 101, 100, 2, 97, 3, 84, 34, 116, 47, 10, 0, 4, 97, 97, 114, 100,
+			101, 101, 114, 3, 84, 35, 34, 72, 6, 116, 34, 0, 97, 97, 114, 100, 101, 114, 2, 21, 0, 97, 110, 103, 101, 2, 100, 114, 97, 103,
+			3, 84, 35, 50, 136, 13, 0, 97, 115, 1, 115, 21, 2, 25, 3, 84, 35, 89, 0, 97, 115, 97, 103, 2, 116, 105, 103, 3, 84, 35,
+			89, 10, 4, 35, 136, 0, 97, 103, 1, 17, 67, 2, 25, 3, 84, 35, 136, 0, 105, 107, 105, 110, 103, 3, 84, 37, 49, 37, 68, 0,
+			111, 114, 99, 101, 115, 116, 101, 114, 3, 84, 40, 89, 47, 13, 34, 0, 101, 100, 2, 114, 101, 110, 3, 84, 108, 47, 0, 101, 114, 115,
+			116, 101, 1, 21, 2, 32, 3, 84, 109, 34, 89, 47, 13, 0, 4, 105, 110, 100, 8, 2, 97, 3, 84, 109, 50, 47, 10, 0, 105, 110,
+			100, 8, 2, 111, 0, 105, 108, 107, 101, 114, 3, 84, 109, 55, 49, 13, 34, 0, 105, 110, 107, 101, 108, 1, 17, 67, 3, 84, 109, 68,
+			49, 13, 55, 0, 105, 103, 8, 3, 84, 109, 136, 0, 111, 108, 8, 2, 17, 65, 3, 84, 110, 55, 10, 0, 111, 108, 107, 101, 3, 84,
+			110, 55, 49, 13, 0, 195, 170, 114, 101, 108, 2, 100, 106, 105, 101, 3, 84, 113, 34, 13, 55, 0, 195, 170, 114, 101, 108, 100, 119, 3,
+			84, 113, 34, 13, 55, 47, 84, 0, 195, 170, 114, 101, 108, 100, 101, 2, 32, 3, 84, 113, 34, 13, 55, 72, 13, 0, 4, 97, 1, 21,
+			2, 32, 24, 3, 84, 115, 0, 97, 2, 115, 112, 111, 114, 101, 0, 97, 2, 118, 111, 108, 0, 97, 2, 118, 114, 97, 103, 0, 97, 8,
+			2, 98, 111, 0, 97, 8, 2, 119, 121, 0, 97, 97, 114, 1, 107, 3, 84, 115, 34, 0, 4, 97, 114, 101, 1, 107, 21, 3, 84, 115,
+			34, 13, 0, 97, 114, 101, 1, 115, 21, 0, 97, 114, 101, 1, 116, 2, 25, 0, 97, 97, 114, 116, 115, 1, 17, 67, 3, 84, 115, 34,
+			47, 89, 0, 97, 116, 101, 114, 1, 107, 21, 3, 84, 115, 47, 13, 34, 0, 97, 112, 101, 110, 3, 84, 115, 48, 13, 50, 0, 101, 101,
+			107, 1, 107, 114, 101, 119, 3, 84, 116, 49, 0, 111, 111, 114, 100, 2, 97, 3, 84, 117, 34, 47, 10, 0, 111, 111, 114, 100, 101, 3,
+			84, 117, 34, 72, 13, 0, 111, 110, 105, 110, 103, 1, 17, 67, 21, 3, 84, 117, 50, 13, 68, 0, 111, 111, 110, 103, 101, 119, 101, 115,
+			3, 84, 117, 50, 136, 13, 84, 108, 89, 0, 121, 107, 1, 115, 10, 3, 84, 123, 49, 0, 121, 110, 107, 101, 108, 2, 100, 101, 114, 3,
+			84, 123, 50, 49, 112, 55, 0, 7, 6, 120, 0, 2, 120, 3, 0, 104, 111, 115, 97, 3, 49, 7, 131, 89, 35, 0, 3, 49, 89, 0,
+			101, 110, 2, 111, 3, 88, 2, 108, 50, 0, 7, 6, 121, 0, 1, 112, 112, 97, 107, 115, 2, 32, 3, 2, 123, 0, 1, 17, 67, 11,
+			2, 32, 3, 21, 0, 111, 114, 107, 3, 57, 6, 131, 49, 0, 3, 123, 0, 115, 116, 101, 114, 114, 101, 2, 108, 105, 110, 3, 123, 89,
+			47, 13, 34, 116, 0, 7, 6, 122, 0, 2, 122, 3, 0, 3, 88, 0, 97, 109, 98, 101, 115, 105, 3, 88, 2, 35, 65, 71, 116, 89,
+			2, 37, 0, 101, 98, 114, 97, 3, 88, 116, 71, 34, 35, 0, 1, 116, 3, 89, 0, 7, 6, 206, 0, 4, 172, 3, 6, 35, 55, 83,
+			35, 10, 0, 177, 0, 4, 173, 3, 6, 108, 48, 89, 37, 55, 110, 50, 10, 0, 181, 0, 191, 3, 6, 110, 65, 37, 49, 34, 110, 50,
+			10, 0, 4, 174, 3, 6, 116, 47, 35, 10, 0, 183, 0, 4, 175, 3, 37, 6, 117, 47, 35, 10, 0, 185, 0, 186, 3, 49, 6, 35,
+			48, 35, 10, 0, 190, 3, 49, 89, 6, 37, 10, 0, 189, 3, 50, 6, 118, 12, 10, 0, 187, 3, 55, 6, 35, 65, 71, 72, 35, 10,
+			0, 188, 3, 65, 6, 118, 12, 10, 0, 178, 3, 71, 6, 116, 47, 35, 10, 0, 180, 3, 72, 6, 112, 55, 47, 35, 10, 0, 179, 3,
+			81, 6, 35, 65, 35, 10, 0, 184, 3, 87, 6, 116, 47, 35, 10, 0, 182, 3, 88, 6, 116, 47, 35, 10, 0, 7, 6, 207, 0, 4,
+			133, 3, 6, 40, 48, 89, 37, 55, 110, 50, 10, 0, 141, 0, 140, 3, 6, 110, 65, 37, 49, 34, 110, 50, 10, 0, 129, 3, 34, 6,
+			117, 10, 0, 132, 3, 47, 6, 129, 10, 0, 128, 3, 48, 6, 37, 10, 0, 136, 3, 48, 89, 6, 37, 10, 0, 134, 3, 83, 6, 37,
+			10, 0, 4, 130, 3, 89, 6, 37, 81, 65, 35, 10, 0, 131, 0, 135, 3, 101, 6, 37, 10, 0, 4, 137, 3, 117, 65, 6, 116, 136,
+			35, 10, 0, 142, 0, 7, 6, 0, 33, 1, 19, 3, 0, 195, 175, 108, 108, 117, 2, 115, 116, 3, 2, 37, 55, 2, 111, 0, 39, 116,
+			106, 105, 101, 1, 21, 3, 2, 37, 80, 37, 0, 195, 175, 115, 111, 108, 3, 2, 37, 89, 2, 40, 55, 0, 195, 175, 2, 110, 17, 67,
+			3, 6, 109, 0, 195, 169, 107, 1, 25, 2, 32, 3, 6, 112, 49, 0, 195, 170, 114, 2, 32, 3, 7, 113, 34, 0, 195, 170, 114, 101,
+			2, 32, 3, 7, 113, 34, 13, 0, 195, 161, 1, 17, 67, 2, 17, 67, 17, 65, 3, 7, 115, 0, 33, 3, 9, 123, 47, 34, 40, 48,
+			9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 4, 195, 171, 2, 116, 101, 105,
+			116, 3, 13, 0, 195, 175, 2, 110, 115, 112, 0, 195, 175, 2, 110, 116, 0, 201, 153, 0, 195, 175, 110, 107, 97, 114, 110, 2, 17, 65,
+			3, 13, 68, 49, 2, 35, 34, 50, 0, 195, 177, 3, 21, 101, 115, 0, 195, 161, 1, 25, 2, 17, 67, 25, 3, 26, 35, 0, 195, 161,
+			108, 108, 101, 2, 25, 3, 26, 35, 55, 13, 0, 195, 179, 195, 169, 3, 26, 40, 0, 195, 169, 1, 25, 2, 17, 67, 25, 3, 26, 108,
+			0, 195, 179, 1, 25, 2, 17, 67, 25, 3, 26, 110, 0, 195, 186, 1, 25, 2, 17, 67, 25, 3, 26, 111, 0, 195, 169, 107, 2, 32,
+			3, 26, 112, 49, 0, 195, 161, 195, 161, 3, 26, 115, 0, 195, 169, 195, 169, 3, 26, 116, 0, 195, 179, 195, 179, 3, 26, 117, 0, 195,
+			179, 195, 186, 3, 26, 120, 0, 195, 189, 3, 26, 123, 0, 195, 179, 195, 179, 105, 3, 26, 125, 0, 195, 169, 195, 186, 3, 26, 128, 0,
+			195, 175, 103, 110, 111, 114, 101, 101, 114, 3, 37, 136, 50, 40, 34, 6, 116, 34, 0, 45, 8, 32, 2, 32, 15, 3, 65, 37, 50, 111,
+			89, 0, 36, 3, 72, 110, 55, 13, 34, 0, 39, 115, 1, 21, 2, 14, 128, 128, 130, 3, 89, 0, 195, 168, 8, 17, 67, 2, 32, 3,
+			108, 0, 195, 187, 101, 3, 111, 12, 13, 0, 195, 171, 1, 101, 103, 2, 114, 102, 3, 112, 0, 195, 170, 2, 114, 3, 113, 0, 195, 170,
+			101, 114, 1, 108, 3, 113, 13, 34, 0, 195, 170, 114, 1, 107, 115, 2, 12, 3, 113, 34, 0, 195, 170, 114, 101, 1, 98, 2, 32, 3,
+			113, 34, 13, 0, 195, 170, 3, 130, 0, 195, 180, 3, 131, 0, 195, 174, 101, 3, 132, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts1 = FileInMemory_createWithData (82372, reinterpret_cast<const char *> (&espeakdata_dicts1_data), 
+			U"espeak-1.48.04-source/espeak-data/af_dict", 
 			U"af");
-		Collection_addItem (me.peek(), espeakdata_dicts1.transfer());
+		my addItem_move (espeakdata_dicts1.move());
 
-		static unsigned char espeakdata_dicts2_data[1351] = {
-			0, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts2_data[3335] = {
+			0, 4, 0, 0, 149, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4,
+			95, 100, 112, 116, 10, 50, 6, 13, 110, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 1, 37, 48, 13, 34, 89, 6, 13, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2755,39 +2772,6 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 201, 148, 0, 3, 109, 0, 7, 6, 201, 155, 0, 3, 108, 0, 7, 6, 97,
-			0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 7, 6, 100,
-			0, 3, 72, 0, 119, 3, 75, 0, 119, 2, 105, 3, 77, 0, 7, 6, 101, 0, 3, 36, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6,
-			103, 0, 121, 3, 72, 94, 0, 3, 81, 0, 7, 6, 104, 0, 4, 2, 105, 3, 99, 0, 121, 0, 119, 2, 105, 3, 99, 58, 0, 3,
-			107, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0, 3, 75, 0, 7, 6, 107, 0, 3, 49, 0, 121, 3, 78, 0, 7, 6, 108,
-			0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 4, 103, 2, 105, 3, 67, 0, 106, 0, 119, 2, 105,
-			0, 4, 110, 121, 2, 105, 3, 67, 12, 0, 121, 2, 105, 0, 2, 107, 3, 68, 0, 103, 3, 68, 12, 0, 119, 3, 68, 12, 58, 0,
-			7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 58, 0, 7, 6, 114, 0,
-			3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 2, 105, 3, 47, 99, 0, 7, 6, 117, 0, 3, 40, 0,
-			7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 3, 88, 0, 7, 6, 121, 0,
-			1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 109, 55, 35, 51, 0, 7, 0,
-			0};
-		autoFileInMemory espeakdata_dicts2 = FileInMemory_createWithData (1350, reinterpret_cast<const char *> (&espeakdata_dicts2_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ak_dict", 
-			U"ak");
-		Collection_addItem (me.peek(), espeakdata_dicts2.transfer());
-
-		static unsigned char espeakdata_dicts3_data[3335] = {
-			0, 4, 0, 0, 149, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 37, 48, 13, 34, 89, 6, 13, 50, 47, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 4,
-			16, 20, 10, 50, 6, 13, 110, 108, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 18, 3, 225, 141, 164, 72, 6, 108, 34, 108, 82, 108, 89, 13, 34, 13, 88, 0, 0, 20, 3, 225, 141, 167, 110, 6,
 			108, 57, 35, 112, 36, 65, 108, 55, 108, 49, 108, 47, 0, 0, 0, 0, 0, 18, 3, 225, 141, 163, 50, 6, 13, 110, 13, 55, 35, 89,
 			13, 34, 13, 88, 0, 0, 18, 3, 225, 141, 162, 19, 6, 35, 34, 35, 47, 108, 50, 13, 110, 108, 71, 0, 0, 0, 0, 0, 0, 0,
@@ -2889,6098 +2873,6702 @@ FilesInMemory create_espeakdata_dicts () {
 			32, 3, 83, 0, 136, 3, 83, 13, 0, 139, 3, 83, 35, 0, 140, 3, 83, 36, 0, 138, 3, 83, 37, 0, 142, 3, 83, 39, 0, 137,
 			3, 83, 40, 0, 154, 3, 83, 57, 13, 0, 143, 3, 83, 58, 35, 0, 141, 3, 83, 108, 0, 7, 6, 0, 36, 3, 72, 39, 55, 35,
 			34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts3 = FileInMemory_createWithData (3334, reinterpret_cast<const char *> (&espeakdata_dicts3_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/am_dict", 
+		autoFileInMemory espeakdata_dicts2 = FileInMemory_createWithData (3334, reinterpret_cast<const char *> (&espeakdata_dicts2_data), 
+			U"espeak-1.48.04-source/espeak-data/am_dict", 
 			U"am");
-		Collection_addItem (me.peek(), espeakdata_dicts3.transfer());
+		my addItem_move (espeakdata_dicts2.move());
+
+		static unsigned char espeakdata_dicts3_data[6718] = {
+			0, 4, 0, 0, 123, 21, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 12, 68, 5, 4, 12, 20, 6, 35, 48, 109, 55, 0,
+			5, 194, 5, 0, 13, 0, 13, 69, 37, 2, 15, 56, 80, 6, 117, 83, 39, 50, 0, 6, 195, 73, 48, 64, 13, 0, 0, 6, 65, 8,
+			71, 36, 0, 0, 0, 0, 0, 6, 65, 12, 87, 36, 0, 0, 0, 6, 195, 69, 81, 64, 72, 0, 0, 6, 65, 16, 72, 36, 0, 0,
+			0, 16, 70, 24, 16, 197, 8, 243, 203, 83, 6, 118, 89, 71, 40, 49, 0, 6, 195, 76, 147, 128, 72, 0, 10, 4, 95, 100, 112, 116,
+			49, 39, 50, 0, 0, 16, 65, 20, 37, 89, 48, 37, 49, 0, 81, 115, 112, 101, 97, 107, 32, 6, 195, 36, 225, 77, 13, 0, 0, 6,
+			195, 69, 82, 64, 72, 0, 0, 7, 65, 24, 109, 83, 36, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 7, 65,
+			32, 35, 76, 36, 0, 0, 25, 1, 33, 87, 35, 51, 51, 6, 35, 34, 15, 36, 49, 89, 49, 55, 35, 65, 35, 87, 57, 6, 39, 50,
+			0, 0, 0, 19, 1, 35, 89, 37, 67, 6, 35, 55, 86, 36, 50, 40, 65, 6, 36, 34, 39, 0, 0, 14, 65, 36, 6, 117, 48, 39,
+			72, 0, 81, 112, 111, 100, 32, 16, 65, 36, 6, 117, 83, 39, 50, 0, 81, 112, 104, 111, 110, 101, 32, 4, 193, 36, 76, 10, 1, 36,
+			72, 6, 39, 55, 35, 34, 0, 0, 6, 195, 37, 0, 193, 13, 6, 195, 37, 0, 192, 13, 5, 194, 37, 0, 13, 12, 1, 37, 48, 39,
+			34, 87, 57, 6, 109, 50, 0, 0, 6, 195, 80, 244, 128, 13, 6, 195, 5, 68, 192, 13, 13, 1, 38, 35, 65, 48, 36, 34, 89, 6,
+			35, 50, 0, 18, 65, 112, 6, 35, 15, 35, 49, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 0, 13, 65, 40, 4, 37, 15, 55,
+			6, 35, 34, 81, 35, 0, 0, 0, 6, 195, 21, 68, 192, 13, 7, 195, 64, 244, 128, 72, 28, 13, 1, 42, 35, 89, 47, 36, 34, 37,
+			89, 49, 39, 0, 0, 7, 1, 43, 65, 35, 89, 0, 0, 8, 197, 69, 80, 78, 16, 240, 72, 6, 65, 44, 49, 35, 0, 0, 0, 6,
+			195, 12, 21, 128, 13, 0, 9, 1, 47, 71, 35, 51, 51, 35, 0, 0, 8, 197, 8, 83, 12, 61, 48, 72, 7, 65, 48, 109, 55, 36,
+			0, 15, 4, 95, 100, 105, 97, 72, 57, 109, 34, 6, 36, 89, 37, 0, 0, 15, 1, 49, 40, 50, 15, 81, 34, 6, 114, 0, 81, 194,
+			176, 32, 20, 1, 49, 40, 50, 15, 81, 34, 6, 114, 15, 87, 6, 36, 0, 81, 194, 186, 99, 32, 0, 0, 0, 7, 196, 37, 64, 193,
+			80, 13, 7, 65, 52, 109, 65, 36, 0, 0, 0, 0, 0, 17, 70, 76, 241, 148, 92, 20, 133, 89, 6, 39, 83, 47, 58, 36, 34, 0,
+			17, 70, 32, 20, 132, 92, 20, 133, 101, 6, 35, 34, 72, 58, 36, 34, 0, 7, 65, 56, 109, 50, 36, 0, 0, 0, 0, 0, 4, 193,
+			60, 76, 0, 5, 194, 61, 0, 13, 9, 1, 61, 37, 100, 58, 35, 55, 0, 0, 14, 69, 33, 81, 82, 28, 16, 101, 40, 36, 34, 81,
+			35, 0, 0, 0, 10, 1, 64, 35, 51, 51, 39, 82, 35, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 40, 0,
+			0, 0, 6, 195, 36, 80, 192, 13, 0, 0, 8, 65, 72, 109, 51, 52, 36, 0, 0, 0, 0, 13, 4, 95, 100, 111, 116, 48, 6, 40,
+			50, 47, 39, 0, 0, 7, 65, 76, 109, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 5, 194, 4, 48, 13, 0, 0,
+			0, 5, 65, 84, 40, 0, 0, 6, 195, 85, 0, 192, 13, 0, 6, 195, 4, 82, 192, 13, 0, 0, 13, 65, 88, 4, 71, 36, 15, 71,
+			6, 35, 91, 35, 0, 0, 5, 194, 5, 48, 76, 0, 6, 195, 36, 227, 64, 13, 6, 195, 36, 208, 192, 13, 0, 6, 195, 4, 53, 80,
+			13, 16, 4, 95, 49, 77, 52, 40, 50, 15, 71, 37, 61, 6, 39, 50, 0, 0, 6, 195, 16, 196, 201, 13, 15, 1, 92, 49, 39, 50,
+			47, 34, 35, 82, 35, 51, 51, 35, 0, 14, 65, 92, 4, 71, 36, 15, 72, 6, 110, 48, 55, 36, 0, 0, 6, 195, 84, 144, 206, 13,
+			0, 6, 195, 37, 83, 128, 13, 6, 195, 36, 83, 192, 13, 0, 13, 67, 84, 226, 88, 57, 6, 40, 50, 37, 49, 89, 0, 0, 6, 65,
+			96, 91, 36, 0, 0, 16, 4, 95, 49, 77, 50, 40, 50, 15, 65, 37, 61, 6, 39, 50, 0, 0, 0, 0, 7, 65, 100, 57, 36, 0,
+			49, 6, 65, 100, 37, 0, 72, 0, 7, 196, 8, 83, 12, 4, 72, 0, 6, 195, 80, 244, 192, 72, 6, 195, 48, 244, 192, 72, 0, 0,
+			8, 65, 104, 87, 36, 47, 35, 0, 0, 7, 66, 5, 64, 35, 47, 0, 0, 6, 195, 12, 148, 192, 13, 6, 195, 64, 244, 192, 72, 0,
+			0, 0, 6, 195, 5, 68, 0, 13, 0, 0, 0, 0, 5, 194, 12, 16, 13, 0, 0, 0, 0, 0, 11, 4, 95, 48, 67, 111, 87, 36,
+			50, 47, 0, 0, 6, 195, 85, 49, 144, 13, 0, 0, 0, 6, 195, 36, 212, 192, 13, 0, 0, 19, 1, 124, 71, 6, 35, 51, 51, 35,
+			82, 36, 34, 47, 37, 49, 6, 35, 55, 0, 0, 0, 13, 4, 95, 51, 88, 111, 47, 34, 36, 50, 47, 117, 0, 13, 4, 95, 54, 48,
+			111, 89, 37, 91, 35, 50, 47, 0, 0, 12, 4, 95, 116, 108, 100, 47, 6, 37, 61, 35, 0, 0, 0, 0, 6, 195, 4, 224, 128, 13,
+			0, 0, 0, 6, 195, 4, 100, 0, 13, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 99, 0, 13, 0, 0, 6, 195, 5, 101, 0, 13,
+			0, 12, 4, 95, 49, 67, 48, 87, 57, 6, 109, 50, 0, 0, 0, 0, 0, 0, 6, 195, 8, 83, 0, 72, 0, 0, 6, 195, 81, 2,
+			64, 13, 0, 0, 0, 6, 195, 37, 48, 70, 13, 0, 12, 68, 32, 241, 5, 72, 101, 39, 86, 36, 34, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 19, 71, 52, 84, 211, 20, 225, 197, 72, 65, 6, 36, 89, 36, 50, 75, 36, 34, 0, 0, 0, 14, 65, 128, 87, 36, 15, 87,
+			36, 47, 57, 109, 61, 35, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 229, 128, 13, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 144,
+			13, 0, 0, 0, 0, 14, 4, 95, 109, 99, 110, 65, 35, 49, 34, 6, 110, 50, 0, 0, 11, 4, 95, 49, 67, 111, 87, 109, 50, 47,
+			0, 0, 6, 195, 76, 19, 148, 72, 0, 16, 70, 81, 114, 84, 80, 84, 128, 47, 58, 6, 37, 47, 36, 34, 0, 0, 0, 0, 0, 0,
+			0, 13, 4, 95, 55, 48, 111, 89, 109, 47, 35, 50, 47, 0, 0, 0, 0, 5, 194, 20, 32, 13, 6, 195, 69, 80, 78, 72, 0, 6,
+			195, 36, 224, 192, 13, 6, 195, 5, 1, 67, 13, 0, 0, 0, 7, 196, 77, 83, 77, 4, 13, 0, 0, 0, 0, 7, 196, 24, 16, 213,
+			4, 13, 0, 6, 195, 36, 225, 192, 13, 6, 195, 8, 209, 64, 13, 0, 0, 6, 195, 60, 49, 5, 13, 6, 195, 36, 49, 5, 13, 0,
+			0, 6, 195, 72, 81, 64, 13, 0, 0, 0, 5, 194, 8, 144, 72, 5, 194, 16, 80, 72, 0, 0, 0, 0, 8, 197, 12, 145, 77, 5,
+			64, 13, 6, 195, 4, 180, 0, 13, 0, 6, 195, 24, 210, 64, 13, 0, 15, 70, 32, 245, 13, 4, 147, 0, 101, 39, 47, 65, 118, 55,
+			0, 0, 0, 5, 194, 21, 48, 72, 0, 0, 0, 0, 0, 6, 195, 85, 97, 71, 13, 0, 0, 0, 7, 66, 12, 128, 76, 36, 0, 0,
+			0, 0, 0, 0, 13, 69, 12, 132, 143, 52, 80, 49, 34, 39, 65, 36, 0, 0, 0, 0, 12, 68, 76, 182, 80, 20, 36, 89, 49, 117,
+			48, 0, 0, 6, 195, 60, 53, 64, 13, 0, 0, 0, 0, 6, 195, 5, 101, 128, 13, 18, 65, 136, 6, 36, 15, 35, 49, 87, 109, 50,
+			47, 58, 6, 35, 86, 35, 0, 0, 0, 0, 0, 6, 195, 4, 209, 0, 13, 0, 0, 0, 15, 70, 4, 225, 18, 60, 145, 0, 35, 50,
+			72, 34, 120, 72, 0, 0, 14, 4, 95, 50, 67, 111, 72, 39, 89, 87, 109, 50, 47, 0, 0, 0, 0, 6, 195, 13, 50, 70, 13, 0,
+			0, 0, 0, 0, 0, 0, 13, 69, 21, 52, 5, 4, 176, 37, 89, 48, 37, 49, 0, 0, 0, 0, 6, 195, 24, 80, 128, 13, 6, 195,
+			20, 112, 128, 13, 6, 195, 17, 144, 64, 13, 0, 0, 0, 6, 195, 4, 228, 0, 13, 0, 6, 195, 64, 144, 128, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 24, 81, 0, 13, 0, 0, 0, 0, 0, 0, 12, 68, 32, 19, 1, 72, 101, 35, 55, 35, 34, 0,
+			0, 0, 0, 0, 6, 195, 4, 243, 128, 72, 0, 0, 6, 195, 13, 50, 67, 13, 0, 0, 0, 0, 0, 15, 70, 40, 16, 213, 105, 162,
+			64, 57, 35, 49, 40, 89, 37, 0, 0, 0, 0, 7, 196, 12, 84, 201, 16, 13, 10, 4, 95, 49, 49, 111, 39, 50, 87, 0, 0, 0,
+			6, 195, 5, 100, 192, 13, 0, 0, 0, 0, 6, 195, 21, 82, 65, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 51,
+			67, 111, 47, 34, 36, 89, 87, 109, 50, 47, 0, 11, 4, 95, 49, 51, 111, 47, 51, 36, 87, 0, 0, 6, 195, 8, 244, 0, 13, 0,
+			0, 0, 10, 67, 32, 144, 143, 101, 37, 82, 39, 0, 0, 0, 0, 0, 10, 4, 95, 49, 48, 111, 72, 109, 87, 0, 0, 0, 0, 0,
+			6, 195, 25, 83, 195, 13, 0, 0, 0, 0, 11, 4, 95, 49, 53, 111, 49, 37, 50, 87, 0, 0, 0, 6, 195, 20, 240, 192, 13, 0,
+			11, 67, 37, 3, 196, 6, 117, 48, 39, 72, 0, 0, 18, 65, 148, 6, 37, 15, 35, 49, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0,
+			0, 0, 6, 195, 72, 225, 64, 13, 6, 195, 65, 51, 197, 13, 10, 3, 226, 130, 172, 115, 34, 39, 89, 0, 0, 0, 10, 4, 95, 49,
+			50, 111, 72, 39, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 111, 103, 111, 49, 39, 72, 6, 36, 47, 35, 0, 0, 0,
+			0, 0, 0, 5, 194, 33, 80, 72, 0, 0, 0, 12, 69, 32, 240, 203, 21, 144, 101, 39, 49, 118, 0, 13, 4, 95, 49, 52, 111, 49,
+			35, 47, 39, 34, 87, 0, 0, 0, 0, 0, 0, 5, 194, 20, 192, 72, 0, 6, 195, 48, 148, 192, 72, 6, 195, 56, 84, 192, 72, 12,
+			3, 95, 50, 48, 71, 6, 37, 50, 47, 36, 0, 0, 0, 0, 0, 6, 195, 52, 244, 192, 72, 6, 195, 48, 20, 192, 72, 0, 0, 0,
+			12, 4, 95, 98, 114, 118, 71, 34, 6, 36, 40, 0, 0, 0, 6, 195, 8, 83, 12, 72, 0, 10, 4, 95, 49, 54, 111, 89, 109, 87,
+			0, 0, 20, 4, 95, 97, 99, 50, 72, 6, 110, 48, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 6, 195, 20, 17, 19,
+			13, 0, 5, 194, 36, 80, 72, 0, 0, 0, 6, 195, 20, 213, 0, 13, 0, 0, 0, 0, 0, 5, 194, 37, 80, 13, 11, 5, 95, 48,
+			77, 49, 111, 65, 37, 55, 0, 0, 7, 196, 52, 144, 143, 72, 13, 0, 0, 14, 4, 95, 55, 88, 111, 89, 109, 47, 35, 50, 47, 117,
+			0, 0, 0, 0, 0, 0, 6, 194, 20, 224, 72, 28, 0, 13, 3, 95, 51, 88, 47, 34, 6, 36, 50, 47, 35, 0, 0, 6, 195, 4,
+			84, 4, 13, 14, 3, 95, 48, 67, 87, 57, 6, 109, 50, 47, 39, 89, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 84, 129, 128, 13,
+			6, 195, 57, 148, 197, 13, 0, 13, 3, 95, 49, 67, 87, 57, 6, 109, 50, 47, 39, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 16,
+			72, 12, 4, 95, 35, 194, 170, 2, 6, 36, 50, 35, 0, 0, 0, 16, 3, 95, 50, 67, 72, 39, 87, 57, 6, 109, 50, 47, 39, 89,
+			0, 0, 9, 67, 40, 85, 0, 57, 36, 47, 0, 0, 0, 18, 65, 156, 6, 39, 15, 35, 49, 87, 109, 50, 47, 58, 6, 35, 86, 35,
+			0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 39, 50, 87, 36, 0, 0, 11, 3, 95, 49, 48, 72, 57, 6, 36, 87, 0, 0, 18, 3,
+			95, 51, 67, 47, 34, 36, 89, 87, 57, 6, 109, 50, 47, 39, 89, 0, 12, 3, 95, 49, 51, 47, 34, 6, 36, 87, 36, 0, 0, 11,
+			3, 95, 49, 50, 72, 6, 39, 87, 36, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37, 50, 87, 36, 0, 0, 14, 3, 95, 49, 52, 49,
+			35, 47, 6, 39, 34, 87, 36, 0, 0, 0, 0, 12, 4, 95, 35, 194, 186, 2, 6, 36, 50, 39, 0, 0, 14, 3, 95, 55, 88, 89,
+			36, 47, 6, 35, 50, 47, 35, 0, 0, 0, 0, 0, 0, 12, 68, 32, 19, 13, 4, 101, 35, 55, 65, 35, 0, 14, 4, 95, 49, 111,
+			120, 48, 34, 37, 65, 6, 109, 34, 0, 0, 0, 0, 6, 195, 37, 21, 65, 13, 0, 0, 0, 0, 6, 195, 8, 37, 129, 13, 15, 4,
+			95, 97, 99, 117, 35, 49, 87, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 10, 3, 95, 49, 88, 72, 4, 36, 87, 0, 0, 16, 3,
+			95, 54, 67, 89, 118, 87, 57, 6, 109, 50, 47, 39, 89, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 88, 71, 4, 37, 50,
+			47, 0, 0, 19, 3, 95, 55, 67, 89, 57, 109, 47, 36, 87, 57, 6, 109, 50, 47, 39, 89, 0, 0, 6, 195, 65, 53, 67, 13, 0,
+			0, 0, 0, 6, 195, 48, 245, 3, 13, 0, 0, 6, 195, 60, 80, 64, 13, 0, 19, 3, 95, 56, 67, 81, 58, 37, 47, 39, 87, 57,
+			6, 109, 50, 47, 39, 89, 0, 0, 0, 0, 0, 6, 131, 105, 110, 51, 13, 10, 3, 95, 53, 111, 87, 37, 50, 49, 0, 14, 3, 95,
+			63, 63, 89, 37, 65, 71, 6, 110, 55, 39, 0, 0, 0, 0, 6, 195, 64, 49, 64, 13, 15, 3, 95, 52, 88, 49, 58, 35, 34, 6,
+			35, 50, 47, 35, 0, 0, 17, 3, 95, 57, 67, 50, 39, 58, 87, 57, 6, 109, 50, 47, 39, 89, 0, 0, 0, 0, 9, 67, 48, 149,
+			133, 55, 117, 82, 0, 6, 195, 85, 1, 128, 13, 6, 195, 12, 81, 64, 13, 0, 0, 0, 5, 194, 48, 80, 72, 0, 6, 195, 76, 210,
+			64, 13, 16, 3, 95, 53, 88, 87, 37, 50, 49, 58, 6, 35, 50, 47, 35, 0, 0, 0, 14, 4, 95, 114, 110, 103, 35, 50, 6, 37,
+			36, 61, 39, 0, 0, 0, 0, 9, 3, 95, 55, 111, 89, 109, 47, 0, 0, 0, 0, 14, 3, 95, 54, 88, 89, 37, 91, 6, 35, 50,
+			47, 35, 0, 0, 0, 0, 0, 6, 195, 85, 3, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 95, 57, 111, 50, 111, 0,
+			14, 4, 95, 50, 111, 120, 89, 36, 100, 6, 40, 50, 72, 0, 0, 8, 197, 12, 84, 25, 52, 80, 13, 0, 6, 195, 21, 4, 214, 13,
+			0, 15, 3, 95, 56, 88, 81, 58, 37, 47, 6, 35, 50, 47, 35, 0, 0, 0, 0, 0, 6, 195, 85, 5, 128, 13, 0, 0, 6, 195,
+			8, 83, 19, 72, 0, 5, 194, 52, 80, 72, 0, 14, 3, 95, 57, 88, 50, 39, 82, 6, 35, 50, 47, 35, 0, 0, 0, 14, 4, 95,
+			54, 67, 111, 89, 118, 89, 87, 109, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 49, 88, 111, 72, 36, 87, 37, 0,
+			14, 4, 95, 52, 48, 111, 49, 58, 35, 34, 35, 50, 47, 0, 0, 0, 0, 11, 3, 95, 52, 111, 49, 58, 35, 47, 34, 0, 18, 65,
+			168, 6, 40, 15, 35, 49, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 13, 4, 95, 115, 116, 107, 71, 6, 35, 51, 52, 35, 0,
+			0, 0, 0, 6, 195, 84, 144, 128, 13, 0, 0, 0, 0, 14, 69, 28, 243, 199, 48, 80, 81, 6, 40, 81, 109, 55, 0, 6, 195, 84,
+			16, 128, 13, 0, 0, 0, 0, 6, 195, 65, 49, 64, 13, 0, 0, 0, 0, 6, 195, 81, 49, 64, 13, 0, 0, 0, 5, 194, 64, 16,
+			72, 5, 194, 48, 144, 72, 5, 194, 56, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 61, 48, 72, 5, 194, 61, 48, 76, 14,
+			65, 172, 4, 40, 86, 57, 109, 34, 6, 109, 89, 37, 0, 19, 4, 95, 99, 105, 114, 87, 37, 34, 49, 40, 65, 83, 55, 6, 36, 91,
+			39, 0, 0, 0, 14, 4, 95, 48, 77, 52, 71, 37, 61, 6, 39, 50, 89, 0, 0, 0, 10, 3, 95, 56, 111, 81, 58, 37, 47, 0,
+			14, 4, 95, 48, 77, 50, 65, 37, 61, 6, 39, 50, 89, 0, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 6,
+			195, 8, 244, 22, 13, 0, 0, 0, 0, 0, 6, 195, 85, 4, 192, 13, 0, 14, 4, 95, 51, 111, 120, 47, 109, 34, 87, 6, 109, 34,
+			0, 0, 0, 0, 6, 195, 5, 21, 64, 13, 6, 195, 65, 81, 83, 72, 16, 4, 95, 108, 105, 103, 55, 37, 100, 35, 86, 6, 40, 34,
+			35, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 72, 0, 15, 4, 95, 55, 67, 111, 89, 57, 109, 47, 87, 109, 50, 47, 0,
+			0, 0, 8, 197, 8, 83, 12, 5, 48, 72, 0, 0, 6, 195, 52, 149, 0, 13, 0, 14, 70, 92, 128, 84, 76, 20, 16, 58, 35, 89,
+			35, 48, 0, 0, 0, 0, 12, 4, 95, 50, 88, 111, 71, 37, 50, 47, 37, 0, 15, 4, 95, 53, 48, 111, 87, 37, 50, 49, 58, 35,
+			50, 47, 0, 0, 0, 7, 196, 24, 147, 149, 48, 13, 0, 0, 0, 0, 0, 9, 66, 48, 192, 6, 109, 61, 36, 0, 0, 6, 195, 64,
+			64, 64, 13, 0, 0, 0, 0, 6, 195, 76, 80, 192, 13, 6, 195, 60, 208, 192, 13, 0, 0, 0, 0, 6, 195, 64, 65, 64, 13, 6,
+			195, 12, 225, 64, 13, 0, 0, 0, 0, 6, 195, 60, 209, 192, 13, 0, 14, 4, 95, 99, 101, 100, 87, 36, 86, 6, 37, 61, 35, 0,
+			0, 0, 5, 194, 44, 240, 13, 5, 194, 56, 144, 72, 5, 194, 72, 16, 72, 0, 6, 195, 84, 162, 64, 13, 6, 195, 64, 66, 64, 13,
+			6, 195, 12, 226, 64, 13, 6, 195, 36, 34, 64, 72, 0, 6, 195, 28, 21, 20, 13, 0, 0, 0, 0, 0, 0, 7, 66, 57, 144, 67,
+			36, 0, 0, 6, 195, 36, 35, 64, 13, 0, 16, 4, 95, 99, 97, 112, 65, 6, 35, 98, 40, 89, 49, 55, 35, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 195, 52, 148, 192, 72, 6, 195, 72, 244, 192, 72, 0, 0, 0, 0, 6, 195, 60, 212, 192, 13, 6, 195, 88, 244, 192,
+			72, 6, 195, 56, 244, 192, 72, 0, 0, 0, 0, 7, 196, 69, 82, 69, 56, 72, 20, 4, 95, 100, 97, 99, 72, 6, 110, 48, 55, 36,
+			15, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 0, 6, 195, 84, 21, 192, 13, 0, 0, 6, 195, 36, 48, 65, 13, 0, 5, 194, 48,
+			240, 72, 0, 17, 4, 95, 56, 67, 111, 81, 58, 4, 118, 47, 39, 87, 109, 50, 47, 0, 0, 0, 0, 0, 0, 26, 3, 95, 194, 161,
+			40, 82, 34, 6, 37, 34, 15, 36, 49, 89, 49, 55, 35, 65, 35, 87, 57, 6, 39, 50, 0, 0, 0, 0, 6, 195, 72, 16, 195, 13,
+			0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 41, 81, 15, 57, 40, 86, 39, 0, 0, 0, 0, 0, 6, 195, 20, 32, 128, 13, 0, 15,
+			70, 52, 246, 137, 48, 192, 64, 65, 39, 87, 37, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 48, 65, 13, 0,
+			6, 195, 36, 16, 70, 13, 6, 194, 80, 16, 72, 28, 0, 6, 195, 64, 145, 0, 13, 0, 0, 0, 5, 131, 239, 187, 191, 0, 0, 0,
+			0, 27, 3, 95, 194, 191, 40, 82, 34, 6, 37, 34, 15, 37, 50, 47, 36, 34, 34, 39, 100, 35, 87, 57, 6, 39, 50, 0, 0, 6,
+			195, 52, 224, 67, 13, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 8, 20, 160, 4, 71, 35, 34, 89, 35, 0, 0, 6, 195, 20, 17,
+			68, 13, 0, 0, 6, 195, 60, 196, 0, 13, 13, 4, 95, 103, 114, 118, 81, 34, 6, 37, 109, 40, 0, 0, 6, 195, 77, 84, 192, 72,
+			0, 0, 0, 0, 6, 195, 85, 1, 0, 13, 0, 0, 15, 67, 57, 97, 1, 36, 50, 36, 71, 36, 72, 36, 6, 35, 0, 0, 0, 0,
+			0, 6, 195, 60, 145, 65, 13, 0, 5, 194, 84, 16, 13, 5, 194, 76, 80, 72, 0, 14, 4, 95, 57, 67, 111, 50, 58, 115, 87, 109,
+			50, 47, 0, 0, 7, 196, 8, 83, 12, 76, 72, 0, 11, 2, 194, 163, 55, 37, 82, 34, 35, 89, 0, 0, 0, 0, 6, 195, 84, 147,
+			80, 13, 0, 0, 5, 194, 77, 80, 72, 0, 15, 4, 95, 52, 88, 111, 49, 58, 35, 34, 35, 50, 47, 117, 0, 0, 22, 2, 194, 170,
+			39, 34, 86, 37, 50, 6, 35, 55, 15, 83, 36, 65, 36, 50, 6, 37, 50, 0, 0, 0, 0, 0, 0, 7, 196, 48, 147, 149, 96, 65,
+			6, 195, 64, 115, 213, 13, 0, 5, 194, 60, 224, 72, 0, 0, 0, 0, 9, 2, 194, 176, 81, 34, 114, 89, 0, 0, 0, 0, 6, 195,
+			85, 35, 0, 13, 0, 0, 0, 23, 2, 194, 186, 39, 34, 86, 37, 50, 6, 35, 55, 15, 65, 35, 89, 49, 40, 55, 6, 37, 50, 0,
+			0, 0, 0, 6, 195, 60, 225, 192, 13, 8, 2, 195, 177, 109, 67, 36, 0, 0, 0, 22, 73, 80, 133, 78, 16, 84, 130, 37, 33, 0,
+			87, 35, 50, 72, 36, 34, 71, 37, 34, 72, 0, 20, 3, 194, 186, 102, 81, 34, 6, 114, 89, 15, 83, 6, 35, 34, 109, 50, 101, 118,
+			0, 0, 5, 194, 80, 80, 72, 0, 0, 0, 6, 195, 4, 80, 201, 13, 0, 22, 3, 194, 186, 99, 81, 34, 6, 114, 89, 15, 87, 36,
+			50, 47, 37, 81, 34, 6, 114, 89, 0, 0, 0, 0, 0, 5, 194, 81, 80, 72, 0, 6, 195, 72, 97, 67, 13, 6, 195, 16, 241, 195,
+			13, 6, 195, 4, 51, 64, 13, 0, 0, 0, 19, 3, 194, 186, 107, 81, 34, 6, 114, 89, 15, 49, 6, 36, 55, 82, 37, 50, 0, 0,
+			0, 0, 6, 195, 84, 67, 0, 13, 0, 0, 6, 195, 4, 36, 192, 13, 0, 0, 0, 0, 14, 69, 33, 81, 82, 104, 16, 101, 40, 36,
+			34, 87, 35, 0, 0, 0, 0, 0, 8, 197, 64, 244, 145, 84, 80, 72, 0, 0, 0, 0, 6, 195, 85, 37, 128, 13, 0, 0, 0, 5,
+			194, 84, 80, 13, 0, 0, 0, 0, 6, 195, 92, 20, 0, 13, 0, 0, 15, 69, 41, 83, 137, 61, 32, 57, 6, 40, 50, 37, 39, 34,
+			0, 0, 0, 0, 16, 4, 95, 53, 88, 111, 87, 37, 50, 49, 58, 35, 50, 47, 117, 0, 14, 4, 95, 56, 48, 111, 81, 58, 37, 47,
+			35, 50, 47, 0, 0, 0, 6, 195, 76, 19, 85, 13, 0, 0, 0, 0, 0, 6, 195, 12, 243, 79, 72, 0, 0, 6, 195, 24, 144, 128,
+			13, 6, 195, 4, 48, 128, 13, 0, 0, 12, 69, 60, 97, 137, 12, 80, 39, 83, 37, 89, 0, 18, 70, 32, 243, 7, 61, 34, 79, 101,
+			39, 55, 81, 6, 39, 34, 37, 39, 0, 0, 0, 6, 195, 21, 32, 192, 13, 0, 0, 6, 195, 85, 36, 211, 13, 0, 5, 194, 85, 96,
+			13, 0, 6, 195, 81, 50, 129, 13, 6, 195, 72, 17, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 84, 117, 0, 13,
+			0, 0, 0, 9, 67, 12, 128, 84, 76, 35, 47, 0, 0, 0, 0, 6, 195, 12, 243, 128, 72, 0, 0, 0, 0, 6, 195, 89, 3, 192,
+			13, 0, 0, 23, 2, 95, 41, 87, 35, 51, 51, 6, 35, 34, 15, 48, 35, 34, 36, 50, 47, 6, 36, 89, 37, 0, 0, 22, 2, 95,
+			40, 40, 82, 34, 6, 37, 34, 15, 48, 35, 34, 36, 50, 47, 6, 36, 89, 37, 0, 0, 6, 195, 64, 84, 128, 72, 0, 0, 10, 2,
+			95, 45, 81, 57, 6, 39, 50, 0, 0, 0, 6, 195, 21, 36, 192, 72, 10, 2, 95, 51, 47, 34, 6, 36, 89, 0, 0, 7, 196, 92,
+			149, 19, 4, 13, 7, 196, 24, 20, 1, 20, 13, 9, 2, 95, 50, 72, 6, 39, 89, 0, 0, 8, 2, 95, 49, 6, 40, 50, 0, 0,
+			10, 2, 95, 48, 87, 6, 36, 34, 39, 0, 0, 6, 195, 36, 53, 128, 13, 10, 2, 95, 55, 89, 57, 6, 109, 47, 0, 0, 9, 2,
+			95, 54, 89, 6, 118, 89, 0, 0, 11, 2, 95, 53, 87, 6, 37, 50, 49, 39, 0, 0, 12, 2, 95, 52, 49, 58, 6, 35, 47, 34,
+			39, 0, 0, 6, 195, 12, 83, 197, 13, 0, 0, 9, 2, 95, 57, 50, 58, 6, 115, 0, 0, 5, 194, 72, 240, 72, 11, 2, 95, 56,
+			81, 58, 6, 118, 47, 39, 0, 0, 27, 2, 95, 63, 87, 35, 51, 51, 6, 35, 34, 15, 37, 50, 47, 36, 34, 34, 39, 100, 35, 87,
+			57, 6, 39, 50, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 54, 88, 111, 89, 37, 91, 35, 50, 47, 117, 0, 13, 4, 95, 57, 48,
+			111, 50, 39, 82, 35, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 144, 210, 13, 0, 6, 195, 72, 32, 64, 13,
+			6, 195, 64, 80, 192, 13, 0, 0, 0, 6, 195, 16, 241, 214, 13, 0, 6, 195, 85, 48, 128, 13, 6, 195, 56, 32, 64, 13, 0, 0,
+			0, 5, 194, 85, 160, 13, 0, 0, 0, 6, 195, 20, 81, 83, 13, 0, 0, 18, 2, 95, 91, 40, 82, 34, 6, 37, 34, 15, 100, 35,
+			83, 6, 36, 47, 0, 0, 6, 195, 88, 146, 0, 13, 0, 6, 195, 76, 241, 0, 13, 0, 0, 6, 195, 16, 226, 64, 13, 0, 0, 19,
+			2, 95, 93, 87, 35, 51, 51, 6, 35, 34, 15, 100, 35, 83, 6, 36, 47, 0, 0, 0, 6, 195, 24, 34, 64, 13, 0, 0, 0, 9,
+			67, 40, 22, 154, 57, 35, 89, 0, 0, 0, 0, 0, 12, 68, 8, 19, 138, 60, 82, 35, 50, 57, 39, 0, 0, 6, 195, 24, 19, 192,
+			13, 0, 0, 0, 0, 6, 195, 76, 244, 192, 13, 6, 195, 4, 52, 192, 13, 6, 195, 72, 20, 192, 72, 0, 0, 0, 0, 6, 195, 48,
+			84, 192, 72, 0, 0, 13, 4, 95, 104, 97, 99, 49, 35, 34, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 16, 2, 95, 123, 40, 82,
+			34, 6, 37, 34, 15, 49, 55, 6, 114, 0, 0, 0, 6, 195, 84, 209, 0, 13, 7, 2, 95, 121, 57, 36, 0, 0, 5, 194, 84, 208,
+			13, 5, 194, 100, 80, 72, 0, 0, 0, 6, 195, 12, 51, 207, 13, 17, 2, 95, 125, 87, 35, 51, 51, 6, 35, 34, 15, 49, 55, 6,
+			114, 0, 0, 6, 195, 84, 212, 0, 13, 0, 17, 70, 24, 148, 133, 24, 246, 0, 83, 6, 117, 34, 83, 39, 49, 89, 0, 0, 0, 10,
+			5, 95, 48, 97, 110, 100, 2, 37, 0, 0, 0, 0, 0, 11, 4, 95, 50, 48, 111, 71, 37, 50, 47, 0, 0, 0, 0, 0, 23, 73,
+			16, 84, 197, 57, 145, 82, 52, 20, 128, 86, 36, 89, 36, 50, 57, 109, 34, 65, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 15, 4, 95, 35, 51, 50, 109, 89, 48, 6, 35, 87, 57, 39, 0, 0, 6, 195, 81, 97, 64, 13, 0, 0, 0, 0,
+			12, 68, 32, 244, 1, 72, 101, 39, 48, 35, 34, 0, 0, 17, 70, 92, 147, 132, 61, 116, 192, 58, 6, 37, 50, 72, 39, 58, 89, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 195, 128, 13, 6, 195, 4, 67, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 65,
+			84, 192, 72, 0, 7, 196, 16, 112, 73, 4, 13, 0, 0, 0, 6, 195, 85, 52, 192, 13, 6, 195, 81, 84, 192, 72, 0, 0, 0, 0,
+			6, 195, 73, 69, 133, 13, 0, 0, 0, 0, 10, 5, 95, 120, 35, 194, 170, 2, 35, 0, 0, 7, 196, 12, 145, 21, 36, 13, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 56, 88, 111, 81, 58, 37, 47, 35, 50, 47, 117, 0, 0, 0, 0, 0, 12, 4, 95, 51,
+			48, 111, 47, 34, 36, 50, 47, 0, 0, 0, 10, 5, 95, 120, 35, 194, 186, 2, 39, 0, 0, 0, 0, 0, 6, 195, 64, 112, 64, 13,
+			6, 195, 4, 80, 64, 13, 0, 0, 0, 0, 6, 195, 84, 64, 192, 13, 0, 0, 0, 0, 6, 195, 64, 113, 64, 13, 6, 195, 36, 81,
+			64, 13, 6, 195, 8, 49, 64, 13, 0, 0, 0, 0, 6, 195, 84, 65, 192, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 24, 50,
+			64, 13, 6, 195, 20, 82, 64, 13, 0, 0, 6, 195, 12, 37, 67, 13, 0, 0, 0, 0, 6, 195, 12, 53, 67, 13, 0, 0, 6, 195,
+			84, 83, 64, 13, 0, 0, 0, 0, 6, 195, 20, 196, 192, 72, 0, 0, 0, 0, 0, 0, 14, 69, 32, 20, 131, 36, 16, 101, 35, 34,
+			87, 57, 35, 0, 0, 13, 68, 32, 243, 9, 60, 101, 6, 39, 55, 37, 39, 0, 0, 6, 195, 37, 69, 128, 13, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 64, 84, 13, 0, 14, 4, 95, 57, 88, 111, 50, 39, 82, 35, 50, 47, 117, 0, 0,
+			0, 0, 6, 195, 4, 68, 204, 13, 0, 6, 18, 66, 108, 0, 114, 0, 121, 0, 7, 6, 18, 68, 102, 0, 104, 0, 106, 0, 115, 0,
+			121, 0, 122, 0, 114, 0, 7, 6, 18, 69, 98, 0, 118, 0, 102, 0, 112, 0, 7, 6, 18, 70, 103, 0, 107, 0, 7, 6, 18, 71,
+			97, 0, 101, 0, 111, 0, 7, 6, 195, 167, 0, 3, 87, 0, 7, 6, 195, 177, 0, 3, 67, 0, 7, 6, 97, 0, 39, 8, 3, 2,
+			35, 0, 117, 2, 29, 3, 6, 114, 0, 4, 105, 2, 29, 3, 6, 117, 0, 121, 2, 29, 0, 3, 35, 0, 105, 120, 3, 35, 91, 0,
+			117, 3, 114, 0, 4, 105, 3, 117, 0, 121, 2, 25, 0, 7, 6, 98, 0, 4, 3, 71, 0, 1, 109, 0, 1, 110, 0, 2, 105, 17,
+			65, 0, 2, 117, 17, 65, 0, 8, 0, 8, 2, 17, 65, 0, 4, 2, 17, 65, 3, 82, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0,
+			7, 6, 99, 0, 4, 3, 49, 0, 107, 0, 104, 3, 76, 0, 2, 17, 71, 3, 87, 0, 7, 6, 100, 0, 1, 110, 2, 32, 3, 8,
+			0, 4, 3, 72, 0, 1, 108, 0, 1, 109, 0, 1, 110, 0, 1, 114, 0, 8, 0, 8, 2, 17, 65, 0, 39, 8, 2, 17, 65, 14,
+			128, 132, 130, 0, 101, 39, 8, 3, 72, 2, 36, 0, 4, 2, 17, 65, 3, 86, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 7, 6,
+			101, 0, 110, 116, 97, 39, 8, 3, 4, 36, 50, 47, 2, 35, 0, 117, 2, 29, 3, 6, 115, 0, 4, 105, 2, 29, 3, 6, 118, 0,
+			121, 2, 29, 0, 3, 36, 0, 110, 116, 39, 8, 2, 17, 65, 14, 128, 132, 132, 3, 36, 50, 47, 0, 105, 120, 3, 36, 91, 0, 4,
+			1, 105, 3, 109, 0, 1, 117, 0, 1, 121, 0, 117, 3, 115, 0, 4, 105, 3, 118, 0, 121, 2, 25, 0, 4, 1, 32, 18, 71, 2,
+			17, 67, 17, 67, 3, 124, 0, 1, 104, 32, 18, 71, 2, 17, 67, 17, 67, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 110,
+			8, 2, 17, 65, 3, 50, 0, 4, 3, 81, 0, 1, 109, 0, 1, 110, 0, 104, 8, 2, 17, 65, 0, 117, 2, 101, 0, 117, 2, 105,
+			0, 117, 2, 195, 169, 0, 117, 2, 195, 173, 0, 4, 117, 2, 17, 65, 3, 81, 58, 0, 195, 188, 0, 4, 2, 17, 65, 3, 100, 0,
+			2, 18, 68, 0, 2, 99, 17, 71, 0, 2, 17, 71, 12, 3, 101, 0, 7, 6, 104, 0, 3, 0, 117, 2, 17, 71, 3, 81, 58, 0,
+			7, 6, 105, 0, 4, 3, 37, 0, 2, 117, 32, 0, 2, 17, 65, 3, 57, 0, 7, 6, 106, 0, 3, 101, 0, 7, 6, 107, 0, 3,
+			49, 0, 7, 6, 108, 0, 4, 3, 55, 0, 108, 2, 32, 0, 108, 3, 61, 0, 7, 6, 109, 0, 4, 3, 65, 0, 39, 8, 2, 17,
+			65, 14, 128, 132, 130, 0, 111, 39, 8, 3, 65, 2, 39, 0, 7, 6, 110, 0, 3, 50, 0, 4, 2, 18, 69, 3, 65, 0, 2, 32,
+			18, 69, 0, 121, 2, 17, 65, 3, 67, 0, 7, 6, 111, 0, 117, 2, 29, 3, 6, 39, 58, 0, 4, 105, 2, 29, 3, 6, 120, 0,
+			121, 2, 29, 0, 3, 39, 0, 117, 3, 39, 58, 0, 105, 120, 3, 39, 91, 0, 4, 1, 105, 3, 110, 0, 1, 117, 0, 1, 121, 0,
+			4, 105, 3, 120, 0, 121, 2, 25, 0, 7, 6, 112, 0, 4, 3, 48, 0, 39, 8, 2, 17, 65, 14, 128, 132, 130, 0, 97, 39, 8,
+			3, 48, 2, 35, 0, 101, 39, 8, 3, 48, 2, 36, 0, 115, 8, 3, 89, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 39, 17,
+			65, 0, 117, 2, 39, 104, 17, 65, 0, 117, 2, 101, 0, 117, 2, 105, 0, 117, 2, 195, 169, 0, 117, 2, 195, 173, 0, 4, 117, 2,
+			17, 65, 3, 49, 58, 0, 195, 188, 0, 7, 6, 114, 0, 1, 21, 2, 45, 3, 8, 0, 115, 2, 32, 3, 8, 89, 0, 4, 3, 34,
+			0, 1, 17, 65, 2, 17, 65, 0, 1, 17, 67, 2, 17, 65, 0, 2, 32, 0, 2, 116, 0, 4, 1, 108, 2, 17, 65, 3, 51, 0,
+			1, 109, 2, 17, 65, 0, 1, 110, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 8, 2, 17, 65, 0, 114, 3, 51, 52, 0, 7, 6,
+			115, 0, 8, 2, 17, 67, 21, 3, 2, 36, 89, 0, 4, 3, 89, 0, 1, 10, 2, 32, 14, 128, 128, 129, 0, 1, 32, 17, 65, 2,
+			17, 67, 0, 8, 2, 104, 17, 65, 0, 8, 2, 121, 0, 39, 8, 2, 17, 65, 14, 128, 132, 130, 0, 7, 6, 116, 0, 4, 1, 110,
+			2, 109, 3, 0, 8, 115, 111, 112, 2, 17, 67, 3, 0, 4, 1, 110, 2, 32, 3, 8, 0, 1, 115, 2, 32, 0, 4, 1, 97, 2,
+			32, 3, 25, 0, 1, 101, 117, 2, 32, 0, 1, 105, 101, 2, 32, 0, 1, 105, 117, 2, 32, 0, 1, 117, 2, 32, 0, 4, 3, 47,
+			0, 8, 115, 111, 112, 2, 104, 0, 39, 8, 2, 17, 65, 14, 128, 132, 130, 0, 97, 39, 8, 3, 47, 2, 35, 0, 111, 39, 8, 3,
+			47, 2, 39, 0, 122, 3, 87, 0, 7, 6, 117, 0, 4, 3, 40, 0, 1, 114, 2, 17, 65, 0, 2, 105, 0, 2, 117, 0, 8, 2,
+			117, 0, 4, 105, 120, 3, 40, 91, 0, 105, 120, 1, 114, 0, 2, 17, 65, 3, 58, 0, 4, 1, 17, 65, 2, 17, 71, 3, 81, 58,
+			0, 8, 2, 17, 65, 0, 8, 115, 101, 2, 17, 71, 0, 8, 115, 101, 100, 2, 17, 71, 0, 4, 8, 114, 105, 99, 2, 101, 108, 108,
+			3, 100, 58, 0, 8, 114, 105, 117, 113, 115, 101, 2, 101, 108, 0, 7, 6, 118, 0, 4, 3, 71, 0, 1, 109, 0, 1, 110, 0, 2,
+			105, 17, 65, 0, 2, 117, 17, 65, 0, 8, 0, 8, 2, 17, 65, 0, 4, 2, 17, 65, 3, 82, 0, 2, 18, 68, 0, 2, 99, 17,
+			71, 0, 7, 6, 119, 0, 3, 82, 0, 7, 6, 120, 0, 3, 49, 89, 0, 4, 1, 17, 67, 3, 91, 0, 1, 105, 0, 8, 0, 7,
+			6, 121, 0, 4, 1, 17, 67, 2, 17, 67, 3, 37, 0, 2, 32, 0, 3, 57, 0, 7, 6, 122, 0, 3, 87, 0, 7, 6, 0, 39,
+			3, 0, 195, 161, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0, 195, 173, 3, 7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 186, 3, 7,
+			40, 0, 4, 45, 1, 32, 15, 2, 32, 15, 3, 65, 6, 36, 50, 39, 89, 0, 45, 8, 32, 2, 32, 15, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts3 = FileInMemory_createWithData (6717, reinterpret_cast<const char *> (&espeakdata_dicts3_data), 
+			U"espeak-1.48.04-source/espeak-data/an_dict", 
+			U"an");
+		my addItem_move (espeakdata_dicts3.move());
 
-		static unsigned char espeakdata_dicts4_data[1813] = {
-			0, 4, 0, 0, 15, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
-			75, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 24, 83, 36, 0, 0, 0, 0,
-			0, 6, 65, 28, 79, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 40, 90, 36,
-			0, 0, 0, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65,
-			0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 6, 195, 76, 150, 128, 76, 0, 0, 4, 193, 60, 76, 0, 0, 0, 0, 6,
-			65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 81, 36, 0, 0, 0, 0, 0, 6, 65, 72, 36, 51, 0, 0, 0, 0, 0, 6,
-			65, 76, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0,
-			0, 0, 0, 12, 65, 92, 72, 40, 71, 109, 55, 84, 6, 109, 0, 0, 0, 0, 0, 6, 65, 96, 101, 36, 0, 0, 0, 0, 0, 6,
-			65, 100, 57, 36, 0, 0, 0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 19, 201, 153, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 13, 201, 153, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 4, 16, 20, 10, 84, 37, 51,
-			81, 4, 112, 55, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 19, 201, 153, 14, 9, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 60, 227, 1, 72, 76, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 39, 47, 6, 40, 88, 0, 0, 10, 3, 95, 48,
-			67, 57, 6, 112, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 55, 88, 57, 36, 47, 65, 6, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 9, 3, 95, 49, 88, 6, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 37, 57,
-			37, 51, 65, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 150, 137, 56, 76, 0, 0, 0, 0, 0, 0, 0, 11,
-			3, 95, 52, 88, 81, 6, 13, 51, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 53, 88, 127, 55, 55, 6, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 35, 55, 47, 65, 6, 13, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 134, 13, 201, 153, 14, 9, 13, 76, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 89, 127, 99, 89, 6, 127, 50, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 72, 39, 101, 89, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 39, 50, 0, 0, 15, 4, 95, 48, 77, 51, 65, 37, 55, 57, 6, 35,
-			51, 72, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 8, 150, 137, 52, 76, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 229, 78, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 2, 196, 159, 100, 36, 0, 7, 2, 195, 167, 76, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 197, 159, 91, 36, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 15, 14, 12,
-			1, 18, 196, 177, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			8, 2, 95, 51, 6, 112, 76, 0, 0, 9, 2, 95, 50, 37, 80, 6, 37, 0, 0, 9, 2, 95, 49, 71, 6, 37, 51, 0, 0, 11,
-			2, 95, 48, 89, 13, 83, 6, 13, 51, 0, 0, 11, 2, 95, 55, 57, 36, 72, 72, 6, 37, 0, 0, 10, 2, 95, 54, 35, 55, 47,
-			6, 13, 0, 0, 9, 2, 95, 53, 71, 6, 36, 91, 0, 0, 10, 2, 95, 52, 72, 6, 125, 51, 72, 0, 0, 0, 0, 12, 2, 95,
-			57, 72, 39, 81, 81, 6, 40, 88, 0, 0, 12, 2, 95, 56, 89, 127, 99, 80, 6, 37, 88, 0, 0, 0, 0, 0, 0, 6, 195, 8,
-			150, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 167, 0, 3, 76, 0, 7, 6,
-			195, 182, 0, 3, 125, 0, 7, 6, 195, 188, 0, 3, 112, 0, 7, 6, 196, 159, 0, 3, 100, 0, 7, 6, 196, 177, 0, 3, 13, 0,
-			7, 6, 197, 159, 0, 3, 91, 0, 7, 6, 201, 153, 0, 3, 127, 0, 7, 6, 97, 0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0,
-			7, 6, 99, 0, 3, 75, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 36, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6,
-			103, 0, 3, 79, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0,
-			3, 80, 0, 2, 25, 3, 99, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 7,
-			6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 81, 0, 7, 6, 114, 0, 1, 17, 65, 2, 17, 65,
-			3, 16, 0, 3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118,
-			0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3,
-			88, 0, 7, 6, 0, 195, 164, 3, 127, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts4 = FileInMemory_createWithData (1812, reinterpret_cast<const char *> (&espeakdata_dicts4_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/az_dict", 
+		static unsigned char espeakdata_dicts4_data[5018] = {
+			0, 4, 0, 0, 152, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4,
+			95, 100, 112, 116, 10, 72, 6, 121, 106, 6, 39, 65, 37, 49, 10, 0, 0, 0, 0, 0, 0, 13, 137, 224, 166, 149, 224, 167, 139, 224,
+			166, 164, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 137, 224, 166, 149, 224, 167, 139, 224, 166, 168, 72, 8, 9,
+			1, 36, 140, 121, 55, 35, 34, 0, 0, 13, 1, 37, 106, 6, 121, 47, 49, 6, 121, 34, 35, 0, 0, 0, 0, 0, 0, 0, 7, 1,
+			43, 57, 121, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 61, 106, 6, 121, 65,
+			35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 164, 224, 167, 139, 224,
+			166, 149, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137,
+			224, 166, 133, 224, 166, 165, 224, 166, 154, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 164, 224, 167, 139, 224, 166,
+			176, 72, 0, 0, 0, 0, 0, 0, 15, 9, 224, 166, 143, 224, 166, 159, 224, 166, 190, 148, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 22, 146, 224, 166, 149, 224, 167, 135, 224, 166, 164, 224, 166, 191, 224, 167, 159, 224, 166, 190, 72, 8, 0, 0, 0, 0, 0, 0,
+			14, 6, 224, 166, 161, 224, 166, 188, 72, 121, 36, 34, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 166, 164, 224,
+			167, 135, 224, 166, 164, 224, 166, 191, 224, 167, 159, 224, 166, 190, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 224,
+			166, 149, 224, 166, 191, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 51, 57, 6,
+			40, 50, 121, 76, 121, 55, 55, 6, 37, 91, 0, 11, 3, 95, 50, 49, 36, 49, 6, 40, 91, 0, 0, 14, 3, 95, 51, 56, 6, 128,
+			139, 47, 34, 6, 37, 91, 0, 10, 3, 95, 50, 48, 71, 6, 37, 91, 0, 0, 11, 3, 95, 50, 51, 47, 6, 36, 57, 91, 0, 0,
+			11, 3, 95, 50, 50, 71, 6, 35, 57, 91, 0, 0, 12, 3, 95, 50, 53, 48, 6, 130, 76, 37, 91, 0, 0, 13, 3, 95, 50, 52,
+			76, 6, 121, 71, 71, 37, 91, 0, 0, 13, 3, 95, 50, 55, 106, 6, 35, 47, 6, 35, 91, 0, 0, 14, 3, 95, 50, 54, 76, 107,
+			6, 35, 71, 71, 37, 91, 0, 0, 16, 3, 95, 51, 49, 6, 36, 49, 6, 121, 47, 34, 6, 37, 91, 0, 0, 11, 3, 95, 51, 48,
+			47, 34, 6, 37, 91, 0, 0, 14, 3, 95, 51, 51, 47, 6, 36, 47, 34, 6, 37, 91, 0, 0, 14, 3, 95, 51, 50, 71, 6, 121,
+			47, 34, 6, 37, 91, 0, 0, 15, 3, 95, 51, 53, 48, 6, 130, 57, 47, 34, 6, 37, 91, 0, 0, 15, 3, 95, 51, 52, 76, 6,
+			39, 58, 47, 34, 6, 37, 91, 0, 0, 16, 3, 95, 51, 55, 106, 6, 128, 37, 6, 47, 34, 6, 37, 91, 0, 0, 14, 3, 95, 51,
+			54, 149, 6, 121, 47, 34, 6, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224,
+			166, 149, 49, 121, 0, 15, 3, 95, 55, 57, 6, 40, 50, 121, 35, 6, 106, 6, 37, 0, 17, 3, 95, 54, 49, 6, 36, 49, 6, 106,
+			121, 6, 139, 139, 6, 37, 0, 0, 8, 3, 224, 166, 148, 39, 58, 0, 15, 3, 95, 55, 56, 6, 128, 139, 35, 47, 47, 6, 121, 34,
+			0, 9, 3, 95, 54, 48, 89, 118, 139, 0, 0, 16, 3, 224, 167, 159, 4, 39, 50, 47, 39, 89, 47, 36, 121, 57, 0, 8, 3, 224,
+			166, 151, 81, 121, 0, 11, 3, 95, 48, 67, 36, 6, 106, 6, 39, 0, 16, 3, 95, 54, 51, 47, 6, 36, 106, 121, 6, 139, 139, 6,
+			37, 0, 0, 8, 3, 224, 166, 150, 145, 121, 0, 16, 3, 95, 54, 50, 71, 6, 35, 106, 121, 6, 139, 139, 6, 37, 0, 0, 18, 3,
+			95, 54, 53, 48, 6, 39, 57, 6, 106, 121, 6, 139, 139, 6, 37, 0, 0, 9, 3, 224, 166, 144, 39, 57, 0, 76, 18, 3, 95, 54,
+			52, 76, 6, 39, 58, 6, 106, 121, 6, 139, 139, 6, 37, 0, 0, 9, 3, 224, 166, 147, 39, 0, 76, 28, 7, 3, 224, 166, 147, 39,
+			0, 14, 3, 95, 54, 55, 91, 118, 76, 121, 47, 6, 47, 37, 0, 0, 15, 3, 95, 54, 54, 91, 6, 36, 91, 121, 139, 139, 6, 37,
+			0, 0, 16, 3, 95, 55, 49, 113, 6, 145, 6, 121, 47, 47, 6, 121, 34, 0, 0, 14, 3, 95, 55, 48, 106, 6, 121, 47, 47, 6,
+			121, 34, 0, 0, 8, 3, 224, 166, 143, 36, 0, 76, 15, 3, 95, 55, 51, 47, 6, 37, 35, 47, 47, 6, 121, 34, 0, 0, 16, 3,
+			95, 55, 50, 71, 6, 35, 107, 35, 47, 47, 6, 121, 34, 0, 0, 14, 3, 224, 166, 137, 107, 34, 121, 91, 12, 39, 6, 40, 0, 17,
+			3, 95, 55, 53, 48, 6, 121, 106, 6, 35, 139, 47, 6, 121, 34, 0, 0, 14, 3, 224, 166, 136, 72, 6, 112, 34, 146, 39, 6, 37,
+			0, 16, 3, 95, 55, 52, 76, 6, 40, 107, 35, 47, 47, 6, 121, 34, 0, 0, 8, 3, 224, 166, 139, 34, 37, 0, 16, 3, 95, 55,
+			55, 91, 6, 35, 47, 35, 47, 47, 6, 121, 34, 0, 0, 14, 3, 224, 166, 138, 72, 6, 112, 34, 146, 39, 6, 40, 0, 16, 3, 95,
+			55, 54, 149, 6, 37, 57, 35, 47, 47, 6, 121, 34, 0, 0, 14, 3, 224, 167, 141, 107, 6, 121, 91, 39, 50, 47, 39, 0, 7, 3,
+			224, 166, 133, 121, 0, 13, 3, 95, 49, 57, 6, 40, 50, 6, 50, 37, 91, 0, 0, 12, 3, 224, 167, 140, 6, 39, 58, 49, 35, 34,
+			0, 12, 3, 95, 49, 56, 6, 35, 141, 35, 34, 121, 0, 0, 14, 3, 224, 166, 135, 107, 34, 121, 91, 12, 39, 6, 37, 0, 0, 7,
+			3, 224, 166, 134, 35, 0, 16, 3, 224, 167, 142, 49, 107, 4, 121, 50, 140, 39, 47, 6, 121, 0, 0, 18, 3, 224, 166, 129, 76, 6,
+			121, 50, 72, 34, 39, 71, 37, 50, 72, 40, 0, 0, 12, 3, 224, 167, 136, 6, 39, 57, 49, 35, 34, 0, 0, 14, 3, 224, 166, 131,
+			71, 6, 37, 91, 121, 34, 81, 39, 0, 11, 3, 224, 167, 139, 6, 39, 49, 35, 34, 0, 0, 14, 3, 224, 166, 130, 6, 121, 50, 40,
+			91, 91, 121, 34, 0, 0, 15, 3, 95, 50, 57, 6, 40, 50, 121, 47, 34, 6, 37, 91, 0, 12, 3, 95, 49, 49, 113, 146, 6, 118,
+			34, 39, 0, 0, 11, 3, 95, 50, 56, 6, 35, 141, 35, 91, 0, 9, 3, 95, 49, 48, 72, 13, 107, 0, 0, 11, 3, 224, 167, 135,
+			6, 36, 49, 35, 34, 0, 11, 3, 95, 49, 51, 47, 6, 36, 34, 121, 0, 0, 11, 3, 95, 49, 50, 71, 6, 35, 34, 121, 0, 0,
+			15, 3, 224, 167, 129, 72, 6, 112, 34, 146, 40, 49, 35, 34, 0, 13, 3, 95, 49, 53, 48, 6, 121, 50, 36, 34, 121, 0, 0, 15,
+			3, 224, 167, 128, 72, 6, 112, 34, 146, 37, 49, 35, 34, 0, 13, 3, 95, 49, 52, 149, 35, 40, 6, 72, 72, 121, 0, 0, 12, 3,
+			224, 167, 131, 34, 6, 37, 49, 35, 34, 0, 13, 3, 95, 49, 55, 106, 6, 121, 47, 36, 34, 121, 0, 0, 17, 3, 224, 167, 130, 107,
+			34, 121, 91, 12, 39, 6, 40, 49, 35, 34, 0, 11, 3, 95, 49, 54, 106, 6, 39, 55, 121, 0, 0, 0, 0, 18, 3, 224, 166, 183,
+			65, 4, 40, 138, 36, 50, 12, 39, 91, 12, 6, 121, 0, 0, 17, 3, 224, 166, 182, 47, 4, 35, 55, 36, 71, 39, 91, 12, 6, 121,
+			0, 0, 0, 0, 0, 8, 3, 224, 166, 178, 55, 121, 0, 0, 8, 3, 224, 166, 173, 137, 121, 0, 15, 3, 95, 52, 57, 6, 40, 50,
+			121, 48, 130, 76, 35, 91, 0, 0, 11, 3, 224, 165, 164, 72, 109, 66, 34, 37, 0, 8, 3, 224, 166, 172, 71, 121, 0, 16, 3, 95,
+			52, 56, 6, 128, 6, 76, 121, 55, 55, 6, 37, 91, 0, 0, 17, 3, 224, 166, 175, 4, 39, 50, 47, 39, 89, 47, 36, 75, 6, 121,
+			0, 0, 8, 3, 224, 166, 174, 65, 121, 0, 0, 8, 3, 224, 167, 177, 58, 121, 0, 0, 8, 3, 224, 167, 176, 34, 121, 0, 16, 3,
+			224, 166, 168, 72, 4, 39, 50, 47, 36, 50, 50, 6, 121, 0, 0, 8, 3, 224, 166, 171, 83, 121, 0, 0, 8, 3, 224, 166, 170, 48,
+			121, 0, 0, 8, 3, 224, 166, 165, 25, 121, 0, 14, 3, 95, 53, 57, 6, 40, 50, 121, 6, 106, 118, 139, 0, 16, 3, 95, 52, 49,
+			6, 36, 49, 76, 121, 55, 55, 6, 37, 91, 0, 9, 3, 95, 50, 97, 72, 6, 40, 0, 0, 8, 3, 224, 166, 164, 47, 121, 0, 14,
+			3, 95, 53, 56, 6, 35, 139, 35, 50, 50, 6, 39, 0, 13, 3, 95, 52, 48, 76, 121, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224,
+			166, 167, 138, 121, 0, 16, 3, 95, 52, 51, 47, 6, 36, 47, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 166, 72, 121, 0,
+			15, 3, 95, 52, 50, 71, 6, 37, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 161, 140, 121, 0, 17, 3, 95, 52, 53, 48,
+			6, 130, 57, 47, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 160, 141, 121, 0, 15, 3, 95, 52, 52, 76, 6, 39, 35, 55,
+			55, 6, 37, 91, 0, 0, 16, 3, 224, 166, 163, 65, 4, 39, 72, 138, 36, 66, 66, 6, 121, 0, 16, 3, 95, 52, 55, 106, 6, 35,
+			76, 121, 55, 55, 6, 37, 89, 0, 0, 8, 3, 224, 166, 162, 142, 121, 0, 17, 3, 95, 52, 54, 76, 6, 36, 76, 121, 6, 55, 55,
+			6, 37, 91, 0, 0, 8, 3, 224, 166, 157, 144, 121, 0, 19, 3, 95, 54, 57, 6, 40, 50, 121, 6, 106, 6, 121, 47, 47, 6, 121,
+			34, 0, 14, 3, 95, 53, 49, 113, 6, 49, 35, 50, 50, 6, 39, 0, 0, 8, 3, 224, 166, 156, 79, 121, 0, 15, 3, 95, 54, 56,
+			6, 128, 139, 91, 121, 139, 139, 6, 37, 0, 13, 3, 95, 53, 48, 48, 6, 130, 76, 6, 35, 91, 0, 0, 8, 3, 224, 166, 159, 139,
+			121, 0, 15, 3, 95, 53, 51, 47, 6, 36, 48, 35, 50, 50, 6, 39, 0, 0, 10, 3, 224, 166, 158, 6, 37, 68, 130, 0, 15, 3,
+			95, 53, 50, 71, 6, 35, 57, 35, 50, 50, 6, 39, 0, 0, 11, 3, 224, 166, 153, 6, 40, 68, 81, 130, 0, 16, 3, 95, 53, 53,
+			48, 6, 39, 50, 76, 35, 50, 50, 6, 39, 0, 0, 8, 3, 224, 166, 152, 146, 121, 0, 15, 3, 95, 53, 52, 76, 6, 40, 57, 35,
+			50, 50, 6, 39, 0, 0, 9, 3, 224, 166, 155, 76, 107, 121, 0, 15, 3, 95, 53, 55, 106, 6, 35, 47, 35, 50, 50, 6, 39, 0,
+			0, 8, 3, 224, 166, 154, 76, 121, 0, 15, 3, 95, 53, 54, 149, 6, 35, 48, 35, 50, 50, 6, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 17, 3, 95, 56, 57, 6, 40, 50, 121, 50, 121, 71, 71, 6, 39, 57, 0, 0, 15, 3, 95, 56, 56, 106, 6, 35, 47,
+			35, 6, 91, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 57, 57, 50, 6, 37, 34, 35, 50, 121, 71, 71, 6, 39, 57,
+			0, 14, 3, 95, 56, 49, 113, 6, 49, 35, 6, 106, 6, 37, 0, 9, 3, 95, 54, 97, 149, 6, 121, 0, 0, 17, 3, 95, 57, 56,
+			6, 128, 139, 35, 50, 121, 71, 71, 6, 39, 57, 0, 10, 3, 95, 56, 48, 118, 106, 6, 37, 0, 0, 15, 3, 95, 56, 51, 47, 6,
+			37, 34, 35, 6, 106, 6, 37, 0, 0, 15, 3, 95, 56, 50, 71, 6, 37, 34, 35, 6, 106, 6, 37, 0, 0, 15, 3, 95, 56, 53,
+			48, 6, 131, 76, 35, 6, 106, 6, 37, 0, 0, 15, 3, 95, 56, 52, 76, 6, 40, 34, 35, 6, 106, 6, 37, 0, 0, 14, 3, 95,
+			56, 55, 91, 6, 35, 47, 35, 91, 6, 37, 0, 0, 15, 3, 95, 56, 54, 149, 6, 37, 57, 35, 6, 106, 6, 37, 0, 0, 17, 3,
+			95, 57, 49, 113, 6, 49, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 12, 3, 224, 166, 188, 71, 6, 37, 50, 72, 40, 0, 13, 3,
+			95, 57, 48, 50, 121, 71, 71, 6, 39, 57, 0, 13, 3, 95, 54, 88, 89, 6, 35, 139, 139, 6, 37, 0, 0, 17, 3, 224, 166, 191,
+			107, 34, 121, 91, 12, 39, 6, 37, 49, 35, 34, 0, 18, 3, 95, 57, 51, 47, 6, 37, 34, 118, 50, 121, 71, 71, 6, 39, 57, 0,
+			0, 11, 3, 224, 166, 190, 6, 35, 49, 35, 34, 0, 19, 3, 95, 57, 50, 71, 6, 37, 34, 35, 6, 50, 121, 71, 71, 6, 39, 57,
+			0, 0, 8, 3, 224, 166, 185, 107, 121, 0, 18, 3, 95, 57, 53, 48, 6, 121, 76, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 17,
+			3, 224, 166, 184, 72, 4, 39, 50, 47, 36, 6, 106, 12, 6, 121, 0, 18, 3, 95, 57, 52, 76, 6, 40, 34, 35, 50, 121, 71, 71,
+			6, 39, 57, 0, 0, 18, 3, 95, 57, 55, 106, 6, 35, 47, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 18, 3, 95, 57, 54, 149,
+			6, 37, 57, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 57, 97, 50, 6, 121, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 52, 6, 121, 34,
+			71, 40, 72, 0, 0, 0, 11, 4, 95, 48, 77, 50, 55, 6, 35, 145, 0, 0, 12, 4, 95, 48, 77, 51, 49, 6, 39, 139, 37, 0,
+			0, 0, 13, 4, 95, 48, 77, 49, 107, 6, 35, 57, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 166, 134, 224, 166, 170, 224, 166, 168, 224, 166, 190, 224, 166, 149, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 166, 164, 224, 167, 159, 72, 0, 13, 137, 224, 166, 134,
+			224, 166, 176, 224, 167, 129, 72, 8, 0, 0, 0, 0, 0, 0, 15, 140, 224, 166, 134, 224, 166, 174, 224, 166, 190, 224, 166, 176, 72, 0,
+			9, 134, 224, 166, 184, 224, 166, 191, 72, 0, 0, 22, 146, 224, 166, 149, 224, 166, 191, 224, 166, 168, 224, 167, 141, 224, 166, 164, 224, 167,
+			129, 72, 8, 0, 0, 0, 0, 0, 18, 143, 224, 166, 164, 224, 167, 139, 224, 166, 174, 224, 166, 190, 224, 166, 149, 72, 0, 0, 0, 0,
+			0, 0, 0, 13, 137, 224, 166, 143, 224, 166, 176, 224, 166, 130, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 175, 224, 166, 166, 224, 166, 191, 8, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 134, 224, 166, 174, 224, 166, 175, 72, 0, 16, 140, 224, 166, 133, 224, 166, 165, 224, 166, 176, 224, 166, 190,
+			72, 8, 11, 6, 224, 166, 162, 224, 166, 188, 138, 36, 0, 0, 15, 140, 224, 166, 134, 224, 166, 170, 224, 166, 168, 224, 166, 191, 72, 0,
+			12, 137, 224, 166, 134, 224, 166, 174, 224, 166, 191, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 166, 164, 224, 167, 129, 224, 166, 174, 224, 166,
+			191, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 10, 2, 95, 51, 47, 6, 37, 50, 37, 0, 0, 9, 2, 95, 50, 72,
+			6, 40, 57, 0, 0, 8, 2, 95, 49, 6, 36, 49, 0, 0, 11, 2, 95, 48, 106, 6, 40, 50, 57, 121, 0, 0, 9, 2, 95, 55,
+			106, 6, 35, 47, 0, 0, 9, 2, 95, 54, 149, 6, 121, 57, 0, 0, 9, 2, 95, 53, 48, 6, 128, 76, 0, 0, 11, 2, 95, 52,
+			149, 6, 35, 34, 6, 37, 0, 0, 0, 0, 9, 2, 95, 57, 50, 6, 121, 57, 0, 0, 7, 2, 95, 56, 128, 141, 0, 0, 17, 2,
+			95, 63, 48, 34, 6, 39, 91, 50, 121, 76, 37, 107, 50, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 4, 95, 224, 166, 144, 39, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 95, 224, 166, 143,
+			36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 164, 224, 166, 190, 224, 166, 135, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 137, 224, 166, 149, 224, 166, 191, 224, 167, 159, 72, 8, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 9, 224, 166,
+			149, 224, 167, 141, 224, 166, 183, 49, 4, 39, 57, 65, 40, 138, 36, 50, 12, 39, 91, 12, 6, 121, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 230, 9, 0, 0, 48, 0, 0, 0, 231, 9,
+			0, 0, 49, 0, 0, 0, 232, 9, 0, 0, 50, 0, 0, 0, 233, 9, 0, 0, 51, 0, 0, 0, 234, 9, 0, 0, 52, 0, 0, 0,
+			235, 9, 0, 0, 53, 0, 0, 0, 236, 9, 0, 0, 54, 0, 0, 0, 237, 9, 0, 0, 55, 0, 0, 0, 238, 9, 0, 0, 56, 0,
+			0, 0, 239, 9, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 22, 0, 2, 17, 66, 3, 145, 145, 0, 3, 145, 145, 109, 0,
+			7, 6, 1, 58, 0, 2, 17, 66, 3, 84, 0, 3, 84, 109, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0,
+			7, 6, 1, 35, 0, 2, 17, 66, 3, 107, 70, 0, 3, 107, 70, 109, 0, 7, 6, 1, 2, 0, 1, 17, 67, 3, 130, 0, 7, 6,
+			1, 3, 0, 4, 1, 17, 65, 3, 68, 0, 1, 17, 67, 0, 7, 6, 1, 4, 0, 3, 0, 2, 32, 3, 108, 0, 7, 6, 1, 6,
+			0, 3, 109, 0, 224, 166, 129, 3, 130, 0, 224, 167, 141, 224, 166, 175, 224, 166, 190, 3, 148, 0, 7, 6, 1, 7, 0, 3, 35, 0,
+			224, 166, 129, 3, 128, 0, 7, 6, 1, 8, 0, 3, 37, 0, 224, 166, 129, 3, 124, 0, 7, 6, 1, 9, 0, 3, 37, 0, 224, 166,
+			129, 3, 124, 0, 7, 6, 1, 10, 0, 3, 40, 0, 224, 166, 129, 3, 133, 0, 7, 6, 1, 11, 0, 3, 40, 0, 224, 166, 129, 3,
+			133, 0, 7, 6, 1, 12, 0, 3, 34, 37, 0, 7, 6, 1, 16, 0, 3, 148, 0, 224, 166, 129, 3, 148, 150, 0, 7, 6, 1, 16,
+			0, 3, 36, 0, 224, 166, 129, 3, 126, 0, 224, 167, 141, 224, 166, 175, 224, 166, 190, 3, 148, 0, 7, 6, 1, 17, 0, 3, 39, 57,
+			0, 224, 166, 129, 3, 131, 57, 0, 7, 6, 1, 20, 0, 3, 39, 0, 224, 166, 129, 3, 131, 0, 7, 6, 1, 20, 0, 3, 119, 0,
+			7, 6, 1, 21, 0, 3, 39, 58, 0, 224, 166, 129, 3, 131, 58, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 3, 49, 109,
+			0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 109, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 109,
+			0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 109, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 109,
+			0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 76, 0, 3, 76, 109, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 149, 0, 3, 149, 109,
+			0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 79, 0, 224, 167, 141, 224, 166, 172, 2, 17, 66, 0, 4, 3, 79, 109, 0, 224, 167,
+			141, 224, 166, 172, 0, 224, 167, 141, 224, 166, 158, 2, 17, 66, 3, 81, 81, 0, 224, 167, 141, 224, 166, 158, 3, 81, 81, 131, 0, 7,
+			6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7,
+			6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 3, 139, 109, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 141, 0, 3, 141, 109, 0, 7,
+			6, 1, 34, 0, 2, 17, 66, 3, 140, 0, 3, 140, 109, 0, 7, 6, 1, 35, 0, 2, 17, 66, 3, 142, 0, 3, 142, 109, 0, 7,
+			6, 1, 36, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 2, 32, 3, 47, 39,
+			0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 109, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 72,
+			0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 109, 0, 7, 6, 1, 41, 0, 2, 17, 66, 3, 50,
+			0, 3, 50, 109, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 2, 17, 66, 3, 83,
+			0, 3, 83, 109, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137,
+			0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 65, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 1, 141, 167, 224, 2,
+			17, 66, 32, 3, 12, 0, 1, 141, 167, 224, 2, 32, 3, 12, 121, 0, 2, 17, 66, 3, 75, 0, 3, 75, 109, 0, 4, 1, 141, 167,
+			224, 2, 17, 67, 3, 148, 0, 224, 166, 190, 1, 141, 167, 224, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 109, 0,
+			7, 6, 1, 55, 0, 2, 224, 167, 141, 224, 166, 178, 3, 89, 0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 56, 0,
+			2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 57, 0, 4, 2, 224, 167, 141, 224, 166, 164, 3, 89, 0, 2, 224, 167, 141,
+			224, 166, 165, 0, 2, 224, 167, 141, 224, 166, 175, 0, 224, 167, 141, 224, 166, 172, 8, 2, 17, 66, 3, 91, 0, 224, 167, 141, 224, 166,
+			172, 8, 3, 91, 109, 0, 2, 17, 66, 3, 106, 0, 3, 106, 13, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 2, 32, 3,
+			107, 39, 0, 3, 107, 109, 0, 7, 6, 1, 63, 0, 1, 17, 67, 3, 35, 0, 224, 166, 129, 1, 17, 67, 3, 128, 0, 7, 6, 1,
+			64, 0, 1, 17, 67, 3, 37, 0, 224, 166, 129, 1, 17, 67, 3, 124, 0, 7, 6, 1, 65, 0, 1, 17, 67, 3, 37, 0, 224, 166,
+			129, 1, 17, 67, 3, 124, 0, 7, 6, 1, 66, 0, 1, 17, 67, 3, 40, 0, 224, 166, 129, 1, 17, 67, 3, 133, 0, 7, 6, 1,
+			67, 0, 1, 17, 67, 3, 40, 0, 224, 166, 129, 1, 17, 67, 3, 133, 0, 7, 6, 1, 68, 0, 1, 17, 67, 3, 34, 6, 37, 0,
+			7, 6, 1, 72, 0, 1, 17, 67, 3, 36, 0, 224, 166, 137, 1, 17, 67, 3, 36, 58, 0, 224, 166, 129, 1, 17, 67, 3, 126, 0,
+			7, 6, 1, 73, 0, 1, 17, 67, 3, 39, 57, 0, 224, 166, 129, 1, 17, 67, 3, 131, 57, 0, 7, 6, 1, 76, 0, 1, 17, 67,
+			3, 39, 0, 224, 166, 129, 1, 17, 67, 3, 131, 0, 7, 6, 1, 77, 0, 1, 17, 67, 3, 39, 58, 0, 224, 166, 129, 1, 17, 67,
+			3, 131, 58, 0, 7, 6, 1, 79, 0, 3, 47, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 0, 8, 2, 17, 66, 3, 57, 0, 3,
+			57, 109, 0, 7, 6, 1, 113, 0, 2, 17, 66, 3, 34, 0, 3, 34, 109, 0, 7, 6, 1, 114, 0, 3, 58, 35, 109, 0, 2, 17,
+			66, 3, 58, 121, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts4 = FileInMemory_createWithData (5017, reinterpret_cast<const char *> (&espeakdata_dicts4_data), 
+			U"espeak-1.48.04-source/espeak-data/as_dict", 
+			U"as");
+		my addItem_move (espeakdata_dicts4.move());
+
+		static unsigned char espeakdata_dicts5_data[2136] = {
+			0, 4, 0, 0, 151, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
+			75, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 13, 4, 95, 100, 112, 116, 10, 47, 4, 35, 65, 23, 0, 0,
+			0, 0, 0, 0, 6, 65, 24, 83, 36, 0, 0, 0, 0, 0, 6, 65, 28, 79, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 36, 0,
+			0, 0, 0, 0, 0, 9, 1, 37, 102, 97, 105, 122, 0, 29, 0, 0, 9, 134, 115, 201, 153, 110, 105, 110, 76, 0, 6, 65, 40, 90,
+			36, 0, 0, 0, 10, 1, 42, 117, 108, 100, 117, 122, 0, 29, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65, 48, 36,
+			55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65, 0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 6, 195, 76, 150, 128, 76,
+			0, 0, 4, 193, 60, 76, 0, 0, 0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 81, 36, 0, 0, 0, 0, 0,
+			6, 65, 72, 36, 51, 0, 0, 0, 0, 0, 6, 65, 76, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 12, 65, 92, 72, 40, 71, 109, 55, 84, 6, 109, 0, 0, 0, 0, 0,
+			6, 65, 96, 101, 36, 0, 0, 0, 0, 0, 6, 65, 100, 57, 36, 0, 0, 0, 0, 0, 6, 65, 104, 88, 36, 0, 7, 132, 104, 201,
+			153, 109, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 131, 118, 201, 153, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 16, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 5, 194, 9, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 128, 76, 36, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 145, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 12, 144, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 229, 78, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 148, 128, 72,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 131, 121, 201, 153, 72, 0, 7, 132, 105, 115, 201, 153, 76, 0, 0, 9, 134, 109, 201, 153, 110, 105, 109, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3,
+			95, 51, 88, 39, 47, 6, 40, 88, 0, 0, 10, 3, 95, 48, 67, 57, 6, 112, 88, 0, 0, 0, 0, 7, 132, 105, 108, 201, 153, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3,
+			95, 55, 88, 57, 36, 47, 65, 6, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95,
+			49, 88, 6, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 37, 57, 37, 51, 65, 6, 37, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 52, 88, 81, 6, 13, 51, 101, 0, 0, 0, 0, 0, 5, 194,
+			14, 176, 72, 0, 0, 0, 0, 11, 3, 95, 53, 88, 125, 55, 55, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54,
+			88, 35, 55, 47, 65, 6, 13, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88,
+			89, 125, 99, 89, 6, 125, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 72, 39, 101, 89, 6, 35, 50, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 36, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 5, 194, 48, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65,
+			37, 55, 57, 6, 39, 50, 0, 0, 15, 4, 95, 48, 77, 51, 65, 37, 55, 57, 6, 35, 51, 72, 0, 0, 0, 11, 4, 95, 48, 77,
+			49, 65, 6, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 11, 136, 111, 110, 108, 97, 114, 196, 177, 110, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 8, 150, 137, 52, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+			132, 115, 201, 153, 110, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 76, 150, 137, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 110, 201, 153, 72, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 109, 201, 153, 110, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 95, 201, 153, 125, 0, 0,
+			7, 2, 196, 159, 100, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 197, 159, 91, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 60, 227, 1, 72, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 51, 6, 112, 76, 0, 0, 9, 2, 95, 50, 37, 80, 6, 37, 0,
+			0, 9, 2, 95, 49, 71, 6, 37, 51, 0, 0, 11, 2, 95, 48, 89, 13, 83, 6, 13, 51, 0, 0, 11, 2, 95, 55, 57, 36, 72,
+			72, 6, 37, 0, 0, 10, 2, 95, 54, 35, 55, 47, 6, 13, 0, 0, 9, 2, 95, 53, 71, 6, 36, 91, 0, 0, 10, 2, 95, 52,
+			72, 6, 126, 51, 72, 0, 0, 0, 0, 12, 2, 95, 57, 72, 39, 81, 81, 6, 40, 88, 0, 0, 5, 194, 100, 16, 72, 5, 194, 100,
+			16, 76, 12, 2, 95, 56, 89, 125, 99, 80, 6, 37, 88, 0, 0, 0, 0, 0, 0, 6, 195, 8, 150, 128, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 111, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 18, 82, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 99, 196, 177, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 100, 201, 153, 76,
+			0, 0, 0, 0, 0, 0, 0, 6, 18, 67, 196, 177, 0, 97, 0, 111, 0, 117, 0, 7, 6, 18, 68, 195, 182, 0, 195, 188, 0, 105,
+			0, 101, 0, 7, 6, 195, 167, 0, 3, 76, 0, 7, 6, 195, 182, 0, 3, 126, 0, 7, 6, 195, 188, 0, 3, 112, 0, 7, 6, 196,
+			159, 0, 4, 1, 17, 65, 3, 12, 0, 97, 1, 97, 0, 111, 1, 111, 0, 117, 1, 117, 0, 195, 182, 1, 182, 195, 0, 195, 188, 1,
+			188, 195, 0, 4, 1, 101, 3, 57, 0, 1, 105, 0, 3, 100, 0, 7, 6, 196, 177, 0, 3, 13, 0, 7, 6, 197, 159, 0, 3, 91,
+			0, 7, 6, 201, 153, 0, 4, 1, 21, 2, 32, 3, 2, 125, 0, 1, 45, 2, 32, 0, 3, 125, 0, 7, 6, 97, 0, 4, 3, 35,
+			0, 1, 45, 2, 32, 0, 105, 2, 25, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 75, 0, 7, 6, 100, 0,
+			3, 72, 0, 97, 110, 1, 45, 2, 32, 3, 72, 2, 35, 50, 0, 201, 153, 107, 1, 45, 2, 32, 3, 72, 2, 125, 49, 0, 201, 153,
+			110, 1, 45, 2, 32, 3, 72, 2, 125, 50, 0, 7, 6, 101, 0, 3, 36, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3,
+			79, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 121, 97, 1, 21, 2, 32, 3, 8, 37, 38, 35, 0, 3, 37, 0, 7, 6,
+			106, 0, 3, 90, 0, 7, 6, 107, 0, 3, 80, 0, 2, 25, 3, 99, 0, 7, 6, 108, 0, 3, 55, 0, 4, 1, 18, 67, 2, 25,
+			3, 64, 0, 2, 18, 67, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6,
+			112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 81, 0, 2, 32, 3, 101, 0, 7, 6, 114, 0, 1, 17, 67, 2, 32, 3, 14, 34, 0,
+			4, 1, 17, 65, 2, 17, 65, 3, 16, 0, 1, 159, 196, 2, 17, 65, 0, 3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116,
+			0, 3, 47, 0, 1, 18, 68, 2, 18, 68, 3, 123, 0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119,
+			0, 3, 58, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 164,
+			3, 125, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts5 = FileInMemory_createWithData (2135, reinterpret_cast<const char *> (&espeakdata_dicts5_data), 
+			U"espeak-1.48.04-source/espeak-data/az_dict", 
 			U"az");
-		Collection_addItem (me.peek(), espeakdata_dicts4.transfer());
+		my addItem_move (espeakdata_dicts5.move());
 
-		static unsigned char espeakdata_dicts5_data[26955] = {
-			0, 4, 0, 0, 170, 99, 0, 0, 8, 197, 64, 20, 144, 245, 48, 66, 8, 197, 55, 166, 81, 81, 48, 66, 8, 197, 50, 226, 80, 81,
-			48, 67, 8, 197, 47, 52, 209, 173, 48, 66, 0, 9, 198, 88, 148, 147, 60, 195, 196, 67, 9, 198, 87, 163, 107, 60, 195, 196, 68, 9,
-			198, 25, 50, 77, 60, 195, 196, 68, 9, 198, 168, 139, 211, 60, 195, 196, 68, 0, 8, 197, 52, 20, 203, 5, 0, 66, 0, 6, 195, 79,
-			128, 72, 66, 7, 196, 175, 99, 137, 52, 67, 0, 7, 196, 74, 49, 84, 68, 66, 7, 196, 67, 97, 139, 76, 66, 7, 196, 65, 27, 137,
-			12, 65, 8, 197, 66, 148, 58, 5, 48, 67, 7, 196, 8, 244, 212, 100, 66, 0, 5, 193, 4, 72, 23, 8, 197, 149, 18, 75, 5, 48,
-			67, 6, 195, 75, 160, 74, 66, 12, 201, 68, 17, 73, 60, 68, 65, 52, 245, 115, 70, 6, 195, 48, 98, 250, 65, 9, 198, 47, 161, 73,
-			60, 195, 196, 68, 9, 198, 17, 16, 85, 60, 195, 196, 67, 0, 17, 66, 5, 0, 35, 48, 35, 34, 47, 35, 65, 6, 36, 50, 47, 0,
-			24, 6, 195, 5, 0, 89, 66, 0, 6, 195, 148, 204, 192, 66, 10, 199, 197, 36, 6, 45, 63, 65, 76, 68, 0, 7, 196, 73, 67, 37,
-			56, 66, 7, 196, 20, 115, 227, 56, 66, 7, 196, 212, 81, 170, 48, 67, 0, 6, 65, 8, 71, 13, 0, 8, 197, 64, 193, 130, 24, 160,
-			66, 0, 9, 198, 77, 27, 210, 67, 212, 192, 66, 9, 198, 73, 52, 65, 76, 97, 0, 66, 9, 198, 197, 36, 201, 77, 68, 192, 67, 9,
-			198, 24, 50, 237, 37, 4, 192, 67, 0, 0, 11, 200, 84, 148, 248, 5, 51, 204, 60, 64, 69, 0, 7, 65, 12, 84, 13, 0, 14, 4,
-			193, 12, 23, 8, 197, 77, 18, 66, 60, 160, 66, 8, 197, 73, 94, 207, 36, 80, 67, 6, 195, 67, 211, 202, 66, 6, 195, 244, 99, 0,
-			66, 8, 197, 10, 188, 2, 232, 80, 67, 0, 9, 198, 73, 52, 73, 88, 236, 64, 66, 6, 195, 67, 100, 47, 66, 9, 198, 52, 193, 139,
-			60, 222, 192, 67, 9, 198, 44, 243, 80, 61, 36, 192, 66, 9, 198, 14, 52, 147, 24, 204, 64, 67, 0, 0, 6, 195, 14, 251, 177, 67,
-			0, 12, 65, 16, 81, 39, 72, 6, 37, 50, 35, 0, 25, 9, 198, 47, 19, 193, 67, 160, 83, 69, 8, 197, 22, 196, 209, 199, 176, 67,
-			8, 197, 168, 36, 65, 87, 48, 67, 0, 6, 195, 74, 170, 87, 66, 9, 198, 64, 17, 73, 100, 21, 128, 67, 0, 6, 195, 73, 179, 64,
-			72, 9, 198, 16, 20, 147, 216, 227, 205, 67, 0, 17, 4, 95, 100, 112, 116, 10, 117, 38, 6, 35, 64, 39, 10, 37, 15, 0, 6, 195,
-			75, 9, 237, 67, 7, 196, 20, 146, 229, 76, 66, 7, 196, 173, 114, 115, 236, 68, 0, 6, 65, 20, 72, 13, 0, 8, 197, 25, 99, 204,
-			61, 48, 67, 0, 9, 198, 77, 18, 80, 76, 149, 128, 66, 0, 9, 198, 188, 99, 79, 17, 16, 85, 68, 0, 7, 196, 74, 210, 219, 52,
-			66, 6, 195, 69, 64, 177, 66, 0, 4, 193, 24, 72, 9, 198, 32, 20, 207, 99, 2, 75, 66, 8, 197, 19, 3, 215, 36, 80, 67, 0,
-			9, 198, 73, 15, 19, 60, 222, 192, 67, 9, 198, 53, 67, 133, 105, 66, 192, 66, 9, 198, 140, 50, 193, 20, 114, 96, 65, 6, 195, 47,
-			138, 7, 66, 0, 6, 195, 79, 133, 8, 66, 0, 7, 196, 75, 22, 6, 92, 66, 6, 195, 75, 19, 197, 66, 12, 201, 64, 243, 9, 76,
-			99, 73, 17, 27, 211, 69, 0, 6, 65, 28, 90, 13, 0, 8, 197, 52, 105, 78, 60, 192, 67, 6, 195, 22, 180, 238, 66, 0, 6, 195,
-			24, 180, 111, 66, 0, 0, 0, 7, 195, 45, 16, 74, 72, 23, 6, 65, 32, 88, 13, 0, 8, 197, 45, 68, 82, 189, 48, 66, 9, 198,
-			45, 22, 196, 157, 16, 83, 67, 8, 197, 44, 243, 85, 245, 48, 66, 8, 197, 20, 98, 239, 5, 48, 67, 0, 9, 198, 72, 19, 79, 72,
-			59, 64, 67, 9, 198, 64, 244, 240, 92, 155, 64, 68, 6, 195, 4, 81, 147, 66, 0, 10, 199, 67, 100, 198, 45, 63, 65, 76, 68, 6,
-			195, 176, 107, 192, 67, 6, 195, 147, 97, 64, 66, 0, 11, 1, 35, 72, 6, 37, 38, 36, 95, 0, 27, 6, 195, 91, 161, 109, 66, 6,
-			195, 36, 81, 173, 67, 6, 195, 11, 19, 205, 66, 0, 5, 193, 36, 72, 8, 8, 197, 69, 77, 213, 60, 32, 67, 8, 197, 66, 145, 68,
-			159, 208, 65, 9, 198, 24, 179, 6, 45, 50, 75, 67, 9, 198, 20, 241, 13, 5, 50, 75, 67, 8, 197, 16, 197, 16, 25, 112, 66, 0,
-			13, 1, 37, 48, 34, 39, 117, 6, 36, 50, 47, 0, 27, 9, 198, 64, 243, 6, 13, 177, 64, 67, 6, 195, 44, 157, 83, 66, 0, 16,
-			67, 73, 52, 64, 89, 47, 34, 6, 35, 50, 37, 117, 35, 0, 24, 6, 1, 38, 21, 0, 10, 6, 195, 60, 140, 192, 66, 6, 195, 46,
-			252, 192, 66, 6, 195, 18, 220, 192, 66, 0, 6, 195, 129, 102, 209, 66, 7, 196, 197, 62, 228, 76, 67, 0, 6, 65, 40, 37, 0, 72,
-			8, 197, 160, 61, 140, 60, 64, 67, 6, 195, 4, 90, 82, 66, 0, 6, 195, 77, 18, 115, 66, 9, 198, 66, 148, 198, 45, 36, 192, 66,
-			6, 195, 44, 22, 115, 66, 0, 15, 1, 42, 88, 84, 36, 88, 72, 6, 37, 76, 49, 35, 0, 27, 0, 8, 196, 67, 208, 69, 36, 72,
-			23, 9, 1, 43, 48, 55, 40, 89, 0, 27, 9, 198, 84, 244, 221, 60, 163, 0, 66, 6, 195, 77, 18, 125, 66, 9, 198, 65, 62, 207,
-			22, 180, 238, 68, 0, 6, 65, 44, 49, 13, 0, 8, 197, 88, 207, 79, 86, 224, 67, 8, 197, 73, 60, 56, 37, 32, 67, 8, 197, 16,
-			194, 87, 239, 16, 67, 8, 197, 16, 16, 186, 23, 16, 67, 0, 4, 129, 45, 8, 9, 198, 52, 22, 113, 224, 148, 128, 68, 9, 198, 44,
-			20, 11, 60, 222, 192, 67, 9, 198, 189, 50, 68, 236, 242, 128, 68, 0, 6, 195, 221, 3, 204, 66, 6, 195, 157, 16, 68, 66, 0, 8,
-			196, 35, 160, 69, 36, 72, 23, 21, 1, 47, 50, 35, 49, 64, 6, 39, 50, 36, 50, 35, 15, 76, 36, 34, 47, 4, 35, 0, 7, 196,
-			165, 15, 83, 236, 67, 7, 196, 68, 17, 73, 188, 67, 6, 195, 60, 34, 61, 66, 7, 196, 54, 226, 115, 236, 68, 7, 196, 52, 100, 198,
-			244, 67, 6, 195, 5, 82, 89, 66, 0, 6, 65, 48, 55, 13, 0, 8, 197, 69, 178, 248, 37, 32, 67, 6, 195, 31, 2, 86, 66, 8,
-			197, 188, 177, 147, 119, 208, 67, 0, 9, 198, 24, 193, 139, 79, 97, 64, 67, 6, 195, 18, 219, 211, 66, 9, 198, 8, 241, 15, 72, 201,
-			192, 67, 0, 10, 199, 66, 209, 179, 76, 243, 15, 16, 69, 10, 199, 52, 100, 198, 244, 243, 15, 16, 69, 9, 198, 24, 66, 80, 78, 3,
-			177, 66, 0, 0, 6, 65, 52, 65, 13, 0, 8, 197, 11, 161, 140, 25, 80, 67, 8, 197, 5, 68, 144, 81, 96, 65, 0, 6, 195, 91,
-			163, 111, 66, 6, 195, 64, 241, 147, 66, 0, 9, 198, 91, 99, 143, 17, 16, 85, 67, 9, 198, 76, 148, 15, 17, 16, 85, 67, 9, 198,
-			65, 91, 87, 17, 16, 85, 66, 9, 198, 66, 209, 143, 17, 16, 85, 68, 9, 198, 48, 148, 207, 17, 16, 85, 67, 9, 198, 47, 164, 207,
-			17, 16, 85, 67, 9, 198, 25, 51, 143, 17, 16, 85, 67, 0, 7, 196, 83, 97, 193, 40, 67, 7, 196, 55, 0, 71, 236, 67, 0, 6,
-			65, 56, 50, 13, 0, 8, 197, 72, 19, 79, 80, 176, 67, 8, 197, 52, 18, 14, 36, 176, 66, 8, 197, 8, 241, 15, 54, 224, 67, 0,
-			6, 195, 176, 243, 123, 67, 6, 195, 46, 244, 243, 66, 0, 0, 6, 195, 244, 146, 0, 66, 0, 8, 197, 85, 180, 147, 108, 176, 66, 9,
-			198, 64, 197, 19, 177, 16, 83, 67, 8, 197, 32, 96, 200, 24, 176, 66, 9, 198, 232, 148, 147, 177, 16, 83, 68, 0, 16, 1, 61, 36,
-			15, 34, 6, 35, 84, 50, 39, 15, 50, 4, 35, 0, 9, 198, 68, 18, 13, 37, 38, 204, 65, 0, 0, 7, 196, 97, 65, 20, 56, 66,
-			9, 198, 73, 54, 203, 51, 130, 82, 67, 7, 196, 72, 98, 233, 76, 66, 6, 195, 75, 160, 85, 66, 7, 196, 67, 102, 9, 76, 65, 7,
-			196, 44, 245, 70, 196, 67, 7, 196, 236, 100, 201, 44, 67, 9, 198, 24, 81, 140, 12, 18, 146, 65, 6, 195, 23, 186, 153, 66, 0, 11,
-			1, 64, 49, 55, 6, 39, 65, 71, 35, 0, 6, 65, 64, 48, 13, 0, 6, 195, 76, 153, 78, 66, 9, 198, 60, 47, 79, 76, 243, 123,
-			69, 8, 197, 10, 242, 209, 81, 48, 66, 0, 10, 198, 64, 243, 70, 28, 85, 0, 72, 23, 6, 195, 92, 153, 83, 66, 6, 195, 54, 193,
-			147, 66, 6, 195, 28, 157, 83, 66, 0, 9, 198, 64, 243, 9, 17, 16, 85, 67, 10, 199, 189, 50, 80, 240, 100, 201, 44, 69, 0, 6,
-			195, 91, 161, 141, 66, 9, 198, 74, 48, 224, 56, 245, 110, 68, 7, 196, 145, 89, 76, 196, 67, 7, 196, 36, 131, 211, 224, 67, 0, 6,
-			65, 68, 34, 13, 0, 8, 197, 84, 243, 11, 51, 208, 66, 8, 197, 73, 69, 76, 119, 208, 66, 9, 198, 64, 98, 210, 36, 209, 147, 67,
-			0, 13, 202, 73, 179, 211, 25, 129, 146, 76, 60, 9, 44, 67, 6, 195, 66, 227, 211, 66, 0, 6, 195, 222, 132, 192, 66, 0, 7, 196,
-			88, 22, 73, 100, 66, 7, 196, 20, 105, 74, 48, 66, 0, 7, 65, 72, 89, 13, 0, 14, 4, 193, 72, 23, 6, 195, 79, 137, 78, 66,
-			8, 197, 47, 160, 77, 24, 192, 67, 0, 9, 198, 172, 49, 133, 80, 180, 192, 67, 0, 0, 6, 195, 75, 0, 83, 66, 7, 196, 67, 176,
-			193, 32, 66, 7, 196, 60, 35, 15, 16, 66, 6, 195, 12, 20, 173, 66, 0, 6, 65, 76, 47, 13, 0, 8, 197, 91, 179, 70, 51, 16,
-			67, 8, 197, 80, 94, 142, 36, 176, 65, 8, 197, 79, 192, 148, 103, 48, 67, 8, 197, 68, 19, 65, 34, 240, 67, 8, 197, 47, 19, 213,
-			184, 208, 67, 8, 197, 44, 21, 24, 80, 176, 65, 0, 9, 198, 67, 100, 201, 212, 64, 72, 68, 6, 195, 53, 72, 211, 66, 9, 198, 55,
-			50, 83, 247, 17, 0, 66, 9, 198, 22, 113, 133, 192, 146, 192, 66, 0, 6, 195, 73, 49, 128, 72, 0, 7, 196, 66, 147, 15, 52, 66,
-			7, 196, 44, 241, 212, 88, 66, 0, 5, 193, 80, 72, 23, 8, 197, 12, 100, 246, 19, 48, 67, 0, 9, 198, 73, 62, 198, 61, 34, 248,
-			68, 0, 9, 198, 128, 165, 198, 67, 109, 69, 68, 9, 198, 77, 22, 194, 227, 109, 69, 68, 0, 7, 196, 95, 21, 250, 196, 65, 6, 195,
-			85, 77, 145, 66, 11, 200, 73, 58, 80, 76, 243, 73, 95, 16, 68, 7, 196, 73, 51, 201, 44, 66, 7, 196, 212, 83, 205, 236, 67, 7,
-			196, 9, 67, 29, 204, 66, 0, 6, 65, 84, 83, 13, 0, 9, 198, 74, 84, 201, 73, 50, 75, 67, 9, 198, 47, 53, 198, 72, 156, 251,
-			69, 9, 198, 24, 180, 147, 238, 67, 147, 67, 0, 9, 198, 75, 162, 207, 84, 17, 0, 67, 9, 198, 64, 20, 209, 39, 165, 128, 67, 0,
-			10, 199, 84, 244, 253, 25, 15, 83, 236, 69, 9, 198, 84, 244, 207, 17, 16, 85, 67, 9, 198, 79, 179, 79, 17, 16, 85, 67, 9, 198,
-			20, 99, 79, 17, 16, 85, 67, 0, 9, 198, 77, 18, 66, 82, 67, 0, 67, 0, 6, 65, 88, 101, 13, 0, 6, 195, 34, 99, 202, 66,
-			0, 9, 198, 80, 194, 88, 56, 146, 192, 65, 9, 198, 76, 111, 70, 76, 146, 192, 68, 9, 198, 65, 16, 83, 192, 146, 192, 65, 0, 10,
-			199, 20, 99, 21, 199, 162, 84, 52, 67, 0, 7, 196, 80, 128, 134, 44, 66, 11, 200, 77, 18, 66, 4, 74, 78, 36, 176, 66, 11, 200,
-			73, 60, 3, 25, 36, 206, 36, 176, 65, 7, 196, 220, 53, 143, 32, 66, 7, 196, 44, 244, 204, 204, 66, 6, 195, 34, 99, 197, 66, 0,
-			30, 1, 92, 39, 71, 34, 6, 35, 47, 50, 35, 15, 50, 35, 49, 64, 6, 39, 50, 36, 50, 35, 15, 76, 36, 34, 47, 4, 35, 0,
-			6, 65, 92, 117, 13, 0, 8, 197, 76, 240, 143, 18, 240, 67, 8, 197, 216, 208, 143, 36, 80, 67, 12, 201, 68, 17, 73, 61, 49, 150,
-			56, 146, 192, 69, 12, 201, 65, 34, 86, 224, 20, 207, 48, 241, 0, 69, 8, 197, 64, 145, 147, 25, 48, 67, 8, 197, 64, 20, 139, 168,
-			192, 66, 8, 197, 140, 142, 142, 36, 176, 65, 8, 197, 140, 78, 206, 36, 176, 65, 8, 197, 44, 19, 66, 81, 16, 66, 8, 197, 19, 98,
-			14, 36, 176, 66, 8, 197, 8, 18, 179, 25, 48, 67, 8, 197, 4, 87, 229, 57, 48, 67, 0, 9, 198, 77, 27, 210, 67, 212, 252, 67,
-			9, 198, 44, 20, 207, 48, 146, 192, 67, 6, 195, 15, 1, 151, 66, 0, 12, 1, 94, 49, 39, 55, 6, 37, 71, 49, 35, 0, 0, 6,
-			195, 78, 146, 61, 66, 0, 14, 4, 95, 49, 77, 49, 99, 37, 55, 6, 35, 72, 35, 0, 6, 65, 96, 76, 13, 0, 8, 197, 76, 96,
-			134, 103, 192, 67, 8, 197, 69, 70, 67, 25, 48, 66, 6, 195, 55, 62, 150, 66, 8, 197, 44, 22, 109, 61, 48, 67, 6, 195, 8, 31,
-			0, 66, 0, 10, 198, 36, 131, 70, 28, 85, 0, 72, 23, 20, 4, 95, 49, 77, 50, 36, 72, 6, 37, 50, 15, 65, 37, 55, 37, 6,
-			39, 50, 0, 9, 198, 91, 99, 137, 45, 223, 64, 67, 9, 198, 72, 16, 143, 77, 223, 64, 67, 9, 198, 47, 19, 198, 45, 27, 192, 68,
-			9, 198, 17, 27, 197, 60, 219, 192, 67, 0, 21, 4, 95, 49, 77, 51, 36, 72, 6, 37, 50, 15, 65, 37, 55, 37, 6, 35, 34, 72,
-			0, 10, 199, 48, 109, 82, 24, 185, 78, 76, 68, 0, 7, 196, 91, 181, 42, 52, 67, 7, 196, 84, 146, 9, 44, 66, 7, 196, 76, 97,
-			6, 48, 66, 7, 196, 74, 81, 73, 204, 67, 7, 196, 64, 240, 143, 40, 66, 7, 196, 197, 37, 12, 196, 67, 0, 6, 65, 100, 91, 13,
-			0, 12, 201, 47, 53, 251, 76, 208, 74, 73, 63, 64, 66, 8, 197, 13, 178, 19, 244, 64, 66, 8, 197, 9, 67, 5, 60, 64, 66, 0,
-			6, 195, 18, 99, 211, 66, 0, 0, 7, 196, 61, 49, 39, 244, 65, 7, 196, 244, 145, 49, 180, 68, 0, 7, 65, 104, 91, 47, 13, 0,
-			8, 197, 21, 16, 68, 80, 224, 66, 8, 197, 212, 83, 204, 24, 160, 67, 8, 197, 189, 63, 15, 54, 240, 68, 0, 9, 198, 44, 48, 69,
-			68, 20, 192, 66, 9, 198, 20, 100, 15, 32, 148, 192, 66, 0, 7, 195, 73, 180, 128, 72, 23, 6, 195, 60, 35, 112, 66, 0, 7, 196,
-			30, 144, 134, 92, 66, 7, 196, 12, 19, 80, 240, 66, 0, 13, 65, 108, 6, 36, 34, 81, 4, 39, 55, 35, 65, 0, 8, 197, 92, 99,
-			15, 86, 240, 67, 8, 197, 88, 241, 65, 148, 160, 67, 8, 197, 76, 99, 6, 87, 48, 67, 8, 197, 176, 24, 14, 36, 176, 66, 8, 197,
-			57, 66, 204, 27, 16, 67, 8, 197, 36, 220, 14, 36, 176, 65, 0, 9, 198, 73, 62, 47, 156, 97, 64, 68, 9, 198, 72, 99, 112, 56,
-			146, 192, 65, 9, 198, 48, 145, 38, 56, 146, 192, 65, 0, 10, 199, 58, 115, 194, 60, 64, 101, 100, 69, 0, 7, 196, 91, 1, 70, 44,
-			66, 9, 198, 220, 217, 13, 9, 67, 0, 67, 7, 196, 44, 96, 129, 64, 66, 0, 8, 197, 84, 195, 211, 39, 176, 67, 9, 198, 73, 64,
-			146, 77, 16, 83, 66, 9, 198, 73, 52, 91, 12, 226, 75, 66, 8, 197, 44, 19, 123, 79, 48, 67, 0, 0, 0, 7, 196, 73, 180, 165,
-			12, 66, 7, 196, 75, 11, 15, 72, 67, 0, 13, 65, 116, 6, 36, 34, 65, 4, 35, 64, 13, 49, 0, 8, 197, 160, 35, 210, 212, 80,
-			67, 8, 197, 34, 188, 231, 24, 80, 68, 0, 6, 195, 67, 101, 111, 66, 6, 195, 36, 211, 211, 66, 0, 6, 1, 118, 21, 0, 10, 10,
-			199, 47, 49, 79, 55, 18, 84, 52, 67, 0, 11, 200, 64, 243, 20, 68, 18, 16, 4, 80, 68, 7, 196, 20, 243, 107, 196, 67, 7, 196,
-			17, 240, 198, 96, 66, 0, 6, 1, 120, 21, 0, 10, 8, 197, 68, 148, 206, 36, 176, 66, 9, 198, 44, 59, 211, 37, 49, 147, 67, 0,
-			9, 198, 88, 100, 211, 68, 146, 192, 66, 9, 198, 76, 146, 195, 192, 146, 192, 65, 9, 198, 45, 180, 69, 30, 210, 96, 65, 0, 6, 195,
-			79, 143, 64, 66, 10, 199, 161, 4, 102, 24, 83, 137, 44, 66, 6, 195, 140, 146, 192, 66, 9, 198, 5, 3, 211, 24, 242, 0, 68, 0,
-			9, 198, 47, 52, 209, 4, 32, 82, 67, 7, 196, 196, 149, 201, 180, 68, 0, 8, 197, 88, 18, 133, 80, 176, 66, 12, 201, 73, 182, 20,
-			13, 36, 195, 192, 146, 192, 66, 9, 198, 24, 193, 139, 79, 99, 123, 68, 0, 7, 195, 44, 20, 207, 72, 23, 9, 198, 88, 148, 56, 62,
-			83, 64, 68, 9, 198, 72, 177, 144, 76, 146, 192, 66, 9, 198, 52, 100, 207, 20, 146, 192, 67, 0, 6, 195, 79, 15, 64, 66, 9, 198,
-			52, 17, 5, 188, 242, 0, 67, 0, 9, 198, 79, 99, 6, 40, 37, 18, 67, 0, 8, 197, 79, 99, 80, 25, 48, 66, 8, 197, 56, 148,
-			209, 5, 48, 66, 6, 195, 53, 77, 206, 66, 0, 9, 198, 24, 193, 139, 79, 99, 128, 67, 0, 0, 6, 195, 224, 149, 13, 65, 7, 196,
-			44, 21, 101, 56, 66, 6, 195, 22, 200, 197, 66, 0, 8, 197, 85, 16, 72, 119, 208, 66, 0, 9, 198, 77, 16, 77, 64, 204, 64, 66,
-			9, 198, 68, 147, 76, 128, 236, 64, 65, 6, 195, 6, 83, 111, 67, 0, 6, 195, 66, 241, 140, 66, 6, 195, 188, 156, 192, 67, 0, 7,
-			196, 245, 62, 6, 20, 67, 7, 196, 52, 155, 58, 20, 67, 7, 196, 55, 162, 212, 96, 66, 7, 196, 20, 98, 233, 76, 66, 0, 8, 197,
-			80, 210, 82, 108, 192, 65, 8, 197, 67, 100, 236, 60, 192, 67, 8, 197, 66, 52, 147, 216, 224, 66, 8, 197, 161, 77, 135, 4, 160, 68,
-			8, 197, 44, 20, 9, 148, 192, 67, 8, 197, 23, 177, 130, 24, 160, 67, 0, 6, 195, 98, 113, 139, 66, 9, 198, 95, 18, 195, 4, 164,
-			128, 66, 9, 198, 60, 81, 139, 60, 204, 192, 68, 6, 195, 24, 193, 139, 66, 0, 0, 8, 196, 61, 50, 219, 52, 72, 23, 7, 196, 72,
-			148, 232, 28, 66, 7, 196, 12, 89, 198, 92, 66, 7, 196, 9, 179, 53, 96, 66, 0, 16, 67, 9, 67, 0, 71, 40, 55, 36, 84, 4,
-			35, 34, 47, 0, 24, 8, 197, 72, 20, 209, 5, 0, 66, 8, 197, 45, 28, 79, 51, 16, 67, 6, 195, 47, 131, 202, 66, 8, 197, 37,
-			36, 15, 51, 16, 67, 8, 197, 20, 144, 68, 206, 208, 68, 8, 197, 16, 18, 15, 51, 16, 67, 8, 197, 11, 1, 149, 37, 32, 67, 8,
-			197, 4, 77, 142, 60, 208, 67, 0, 6, 195, 95, 18, 75, 66, 9, 198, 89, 67, 111, 60, 145, 64, 68, 6, 195, 164, 220, 211, 66, 9,
-			198, 55, 195, 196, 48, 97, 64, 67, 9, 198, 19, 49, 79, 48, 158, 192, 68, 6, 195, 168, 188, 211, 66, 0, 10, 199, 76, 100, 142, 60,
-			68, 91, 20, 67, 6, 195, 66, 240, 124, 67, 6, 195, 61, 153, 128, 66, 9, 198, 52, 146, 246, 72, 190, 0, 67, 0, 7, 195, 72, 193,
-			133, 72, 23, 7, 196, 61, 48, 198, 72, 66, 7, 196, 46, 251, 73, 128, 66, 7, 196, 212, 95, 79, 20, 67, 0, 5, 193, 144, 72, 23,
-			8, 197, 85, 18, 72, 119, 208, 66, 8, 197, 79, 209, 129, 23, 208, 68, 8, 197, 64, 243, 9, 55, 176, 67, 8, 197, 52, 17, 1, 35,
-			16, 67, 8, 197, 10, 209, 65, 91, 16, 67, 0, 6, 195, 233, 54, 203, 66, 0, 6, 195, 25, 51, 192, 65, 10, 199, 52, 20, 140, 61,
-			32, 198, 76, 67, 0, 0, 8, 197, 93, 181, 83, 24, 112, 66, 8, 197, 48, 109, 195, 108, 80, 67, 8, 197, 17, 180, 77, 24, 112, 66,
-			0, 0, 8, 197, 77, 18, 88, 51, 0, 66, 6, 195, 236, 32, 80, 66, 0, 6, 195, 73, 176, 189, 66, 7, 196, 67, 189, 228, 48, 67,
-			6, 195, 52, 97, 109, 66, 7, 196, 45, 25, 129, 40, 66, 0, 0, 10, 66, 17, 16, 81, 34, 35, 47, 0, 24, 9, 198, 88, 17, 71,
-			185, 178, 192, 67, 6, 195, 55, 213, 11, 66, 6, 195, 34, 241, 111, 66, 6, 195, 5, 96, 83, 66, 0, 6, 195, 25, 59, 128, 66, 0,
-			7, 196, 18, 144, 134, 92, 66, 7, 196, 8, 243, 9, 20, 66, 0, 8, 197, 76, 96, 83, 70, 208, 67, 8, 197, 68, 18, 11, 61, 144,
-			66, 0, 0, 6, 195, 92, 155, 192, 66, 0, 5, 194, 159, 0, 66, 7, 196, 145, 156, 6, 92, 65, 7, 196, 52, 104, 206, 28, 66, 0,
-			5, 193, 160, 72, 11, 8, 197, 88, 145, 81, 189, 48, 66, 8, 197, 66, 49, 9, 5, 48, 67, 8, 197, 44, 244, 204, 25, 48, 66, 6,
-			195, 188, 29, 206, 67, 9, 198, 4, 128, 148, 96, 226, 75, 65, 0, 20, 4, 95, 50, 77, 50, 72, 84, 6, 35, 15, 65, 37, 55, 37,
-			6, 39, 50, 35, 0, 9, 198, 40, 241, 79, 87, 211, 64, 67, 6, 195, 20, 97, 151, 66, 0, 21, 4, 95, 50, 77, 51, 72, 84, 6,
-			35, 15, 65, 37, 55, 37, 6, 35, 34, 72, 35, 0, 10, 199, 88, 99, 79, 16, 195, 194, 196, 68, 0, 7, 195, 8, 98, 0, 72, 23,
-			7, 196, 61, 49, 70, 48, 66, 0, 11, 200, 45, 67, 133, 81, 17, 71, 38, 0, 65, 8, 197, 44, 19, 66, 80, 128, 66, 0, 9, 198,
-			36, 212, 6, 22, 244, 128, 67, 0, 0, 7, 196, 96, 99, 9, 44, 66, 7, 196, 80, 211, 137, 44, 66, 9, 198, 67, 212, 213, 24, 163,
-			0, 66, 7, 196, 46, 50, 221, 244, 66, 0, 4, 193, 168, 72, 9, 198, 73, 14, 205, 5, 113, 147, 67, 8, 197, 44, 243, 51, 38, 208,
-			68, 8, 197, 44, 20, 9, 148, 224, 67, 8, 197, 20, 149, 83, 204, 64, 66, 8, 197, 169, 113, 139, 70, 208, 67, 8, 197, 12, 99, 9,
-			46, 240, 67, 8, 197, 7, 179, 200, 60, 192, 68, 0, 0, 6, 195, 66, 236, 192, 66, 0, 6, 195, 67, 96, 237, 66, 7, 196, 49, 177,
-			198, 92, 66, 7, 196, 20, 155, 79, 16, 67, 7, 196, 18, 49, 15, 48, 66, 7, 196, 10, 182, 73, 100, 66, 0, 8, 197, 91, 166, 12,
-			108, 176, 66, 8, 197, 73, 51, 205, 5, 96, 66, 8, 197, 68, 18, 11, 51, 48, 66, 0, 9, 198, 48, 98, 147, 194, 244, 192, 65, 9,
-			198, 46, 208, 66, 181, 178, 192, 68, 0, 9, 198, 53, 66, 9, 46, 113, 133, 68, 10, 199, 40, 241, 103, 60, 95, 79, 20, 69, 0, 11,
-			200, 84, 244, 207, 52, 20, 251, 38, 208, 70, 7, 196, 64, 102, 75, 240, 66, 7, 196, 11, 209, 70, 40, 66, 0, 8, 197, 54, 226, 122,
-			23, 176, 68, 8, 197, 44, 148, 58, 37, 32, 67, 6, 195, 192, 150, 58, 66, 8, 197, 20, 243, 113, 39, 48, 68, 0, 6, 194, 20, 16,
-			72, 11, 6, 195, 55, 211, 115, 66, 0, 10, 199, 72, 98, 72, 52, 243, 15, 16, 68, 6, 195, 64, 244, 248, 66, 10, 199, 45, 18, 77,
-			196, 243, 15, 16, 68, 10, 199, 24, 66, 80, 76, 243, 15, 16, 68, 0, 7, 196, 140, 47, 49, 76, 67, 7, 196, 44, 20, 201, 204, 67,
-			0, 6, 195, 149, 15, 0, 66, 9, 198, 148, 180, 137, 20, 147, 211, 68, 9, 198, 73, 1, 139, 82, 51, 147, 67, 9, 198, 189, 50, 87,
-			36, 179, 51, 68, 0, 0, 6, 195, 64, 244, 252, 66, 6, 195, 52, 105, 76, 66, 0, 9, 198, 98, 113, 139, 61, 128, 82, 68, 7, 196,
-			216, 131, 194, 236, 67, 6, 195, 60, 33, 141, 66, 7, 196, 53, 68, 139, 180, 66, 7, 196, 54, 100, 84, 20, 66, 0, 8, 197, 76, 98,
-			210, 78, 224, 66, 6, 195, 52, 105, 78, 66, 8, 197, 52, 21, 167, 36, 176, 67, 8, 197, 37, 36, 251, 36, 176, 67, 0, 0, 10, 199,
-			73, 50, 80, 192, 82, 111, 76, 68, 6, 195, 60, 47, 64, 66, 0, 7, 196, 92, 155, 201, 20, 67, 7, 196, 91, 164, 20, 56, 66, 7,
-			196, 88, 18, 27, 68, 66, 7, 196, 73, 241, 198, 76, 66, 7, 196, 73, 176, 198, 76, 66, 9, 198, 46, 233, 193, 77, 128, 82, 68, 7,
-			196, 44, 20, 219, 68, 66, 7, 196, 7, 188, 230, 76, 68, 0, 8, 197, 96, 150, 56, 24, 160, 67, 8, 197, 90, 210, 85, 5, 48, 67,
-			8, 197, 84, 244, 248, 140, 224, 67, 8, 197, 65, 68, 73, 148, 224, 67, 8, 197, 9, 67, 4, 81, 16, 66, 0, 6, 195, 64, 244, 243,
-			66, 6, 195, 60, 33, 147, 66, 9, 198, 54, 180, 137, 53, 67, 64, 65, 0, 7, 195, 13, 22, 200, 72, 23, 0, 7, 196, 73, 68, 251,
-			192, 67, 7, 196, 44, 62, 165, 48, 66, 7, 196, 212, 83, 227, 32, 67, 6, 195, 4, 117, 17, 66, 0, 8, 197, 84, 244, 149, 5, 48,
-			66, 8, 197, 66, 149, 70, 45, 48, 66, 8, 197, 24, 180, 144, 237, 48, 66, 8, 197, 9, 241, 71, 25, 48, 66, 0, 6, 195, 52, 243,
-			35, 66, 6, 195, 50, 113, 151, 66, 9, 198, 17, 16, 85, 60, 219, 192, 67, 6, 195, 170, 49, 147, 67, 0, 6, 195, 60, 35, 200, 66,
-			0, 11, 200, 52, 109, 203, 60, 208, 177, 5, 48, 69, 7, 196, 47, 164, 20, 32, 66, 0, 8, 197, 68, 18, 11, 60, 192, 66, 6, 195,
-			60, 35, 202, 66, 0, 6, 195, 105, 74, 87, 66, 6, 195, 70, 106, 23, 66, 9, 198, 53, 66, 9, 46, 244, 192, 67, 9, 198, 17, 16,
-			77, 61, 92, 192, 67, 9, 198, 5, 92, 73, 76, 100, 192, 68, 9, 198, 153, 63, 73, 76, 100, 192, 68, 0, 10, 199, 52, 18, 146, 79,
-			211, 27, 44, 67, 6, 195, 46, 147, 204, 66, 0, 7, 196, 74, 81, 239, 76, 66, 9, 198, 67, 100, 201, 213, 65, 122, 68, 11, 200, 64,
-			243, 9, 76, 244, 197, 24, 192, 68, 7, 196, 67, 177, 65, 88, 66, 7, 196, 44, 242, 6, 48, 66, 0, 8, 197, 96, 20, 17, 4, 128,
-			66, 8, 197, 55, 30, 237, 60, 64, 68, 8, 197, 44, 243, 22, 60, 128, 66, 8, 197, 16, 20, 147, 216, 192, 66, 0, 10, 66, 13, 96,
-			84, 107, 39, 47, 0, 24, 9, 198, 17, 180, 76, 60, 35, 204, 67, 0, 7, 195, 32, 17, 64, 72, 23, 10, 199, 72, 49, 147, 60, 67,
-			6, 20, 67, 6, 195, 67, 100, 236, 65, 10, 199, 22, 209, 139, 60, 67, 6, 20, 68, 0, 7, 196, 65, 18, 83, 176, 65, 7, 196, 67,
-			178, 79, 20, 67, 7, 196, 47, 98, 198, 76, 66, 0, 8, 197, 67, 4, 137, 207, 176, 68, 8, 197, 44, 62, 147, 239, 48, 67, 8, 197,
-			32, 99, 70, 55, 176, 67, 6, 195, 15, 4, 238, 66, 0, 9, 198, 79, 131, 196, 68, 21, 64, 67, 9, 198, 65, 16, 79, 76, 101, 192,
-			67, 9, 198, 56, 146, 235, 12, 101, 192, 65, 9, 198, 53, 180, 83, 12, 101, 192, 66, 9, 198, 48, 97, 79, 88, 241, 64, 67, 9, 198,
-			25, 2, 68, 68, 21, 64, 67, 9, 198, 153, 51, 196, 68, 21, 64, 67, 0, 6, 195, 86, 226, 72, 66, 9, 198, 47, 52, 209, 5, 60,
-			61, 68, 0, 7, 196, 87, 3, 205, 192, 67, 7, 196, 81, 16, 68, 188, 67, 7, 196, 74, 84, 212, 76, 66, 7, 196, 11, 161, 84, 44,
-			66, 7, 196, 180, 37, 13, 196, 67, 0, 8, 197, 55, 18, 71, 81, 0, 67, 8, 197, 180, 32, 83, 217, 32, 67, 0, 9, 198, 68, 18,
-			16, 48, 241, 64, 66, 0, 6, 195, 24, 82, 64, 65, 10, 199, 72, 96, 251, 60, 146, 19, 176, 68, 0, 7, 195, 13, 42, 69, 72, 23,
-			6, 195, 96, 21, 25, 66, 7, 196, 216, 131, 122, 196, 67, 11, 200, 64, 243, 20, 66, 244, 137, 207, 176, 70, 6, 195, 22, 224, 85, 66,
-			7, 196, 16, 244, 231, 188, 67, 0, 8, 197, 72, 20, 252, 36, 176, 67, 8, 197, 52, 244, 248, 24, 80, 67, 6, 195, 9, 73, 78, 66,
-			0, 6, 194, 144, 80, 72, 23, 9, 198, 72, 197, 7, 8, 22, 64, 66, 0, 9, 198, 47, 61, 209, 92, 149, 13, 66, 10, 199, 13, 178,
-			16, 38, 83, 137, 44, 66, 10, 199, 15, 179, 184, 60, 91, 201, 44, 67, 0, 9, 198, 85, 27, 203, 52, 29, 206, 67, 9, 198, 68, 17,
-			73, 61, 128, 82, 68, 7, 196, 161, 33, 146, 236, 67, 7, 196, 55, 161, 58, 196, 67, 7, 196, 12, 100, 233, 92, 66, 0, 8, 197, 89,
-			27, 240, 36, 176, 65, 8, 197, 64, 243, 112, 36, 176, 67, 8, 197, 64, 241, 66, 36, 48, 65, 9, 198, 48, 98, 139, 226, 52, 147, 67,
-			0, 9, 198, 64, 97, 65, 16, 241, 0, 67, 6, 195, 45, 44, 51, 66, 0, 9, 198, 68, 18, 11, 68, 22, 0, 65, 10, 199, 45, 22,
-			245, 36, 131, 9, 12, 67, 0, 7, 196, 67, 162, 198, 76, 66, 0, 8, 197, 54, 49, 112, 25, 112, 67, 8, 197, 46, 49, 112, 25, 112,
-			65, 8, 197, 44, 20, 139, 25, 48, 66, 0, 9, 198, 221, 0, 69, 28, 152, 0, 65, 6, 195, 64, 17, 51, 66, 0, 6, 195, 55, 219,
-			64, 66, 0, 7, 196, 79, 211, 79, 32, 66, 7, 196, 67, 17, 42, 56, 66, 7, 196, 52, 20, 246, 72, 66, 7, 196, 47, 99, 73, 20,
-			66, 0, 8, 197, 86, 254, 137, 61, 48, 68, 8, 197, 164, 133, 12, 149, 48, 67, 8, 197, 66, 145, 77, 25, 48, 66, 8, 197, 35, 162,
-			38, 5, 48, 67, 12, 201, 24, 193, 139, 79, 99, 115, 77, 223, 64, 69, 8, 197, 20, 144, 77, 189, 48, 67, 8, 197, 8, 242, 139, 61,
-			48, 66, 0, 5, 194, 10, 144, 72, 9, 198, 24, 193, 139, 79, 97, 240, 68, 9, 198, 189, 61, 144, 60, 195, 196, 68, 0, 9, 198, 97,
-			66, 212, 56, 85, 17, 67, 10, 199, 73, 177, 17, 4, 113, 111, 196, 66, 6, 195, 73, 76, 68, 66, 6, 195, 11, 172, 192, 66, 0, 7,
-			196, 167, 83, 3, 236, 67, 7, 196, 64, 242, 9, 12, 65, 11, 200, 24, 180, 139, 81, 18, 9, 189, 48, 68, 11, 200, 153, 51, 211, 70,
-			244, 144, 245, 48, 68, 0, 8, 197, 77, 18, 66, 80, 224, 66, 8, 197, 65, 18, 72, 70, 176, 65, 0, 9, 198, 84, 244, 207, 74, 84,
-			192, 67, 9, 198, 80, 226, 67, 236, 208, 68, 68, 9, 198, 65, 64, 187, 76, 100, 192, 67, 9, 198, 52, 146, 246, 9, 68, 128, 67, 0,
-			0, 7, 196, 84, 18, 147, 204, 66, 6, 195, 150, 50, 0, 66, 7, 196, 48, 97, 9, 204, 67, 11, 200, 47, 52, 209, 4, 17, 77, 242,
-			208, 69, 7, 196, 44, 248, 196, 192, 67, 7, 196, 20, 240, 137, 12, 65, 7, 196, 4, 34, 1, 92, 66, 0, 8, 197, 21, 73, 16, 164,
-			224, 67, 8, 197, 20, 53, 2, 60, 160, 66, 0, 9, 198, 129, 100, 203, 49, 64, 128, 66, 9, 198, 77, 18, 87, 12, 100, 192, 66, 13,
-			202, 76, 99, 6, 84, 244, 207, 5, 14, 129, 76, 71, 6, 195, 23, 90, 87, 66, 9, 198, 19, 211, 215, 12, 100, 192, 67, 6, 195, 9,
-			70, 115, 66, 9, 198, 233, 0, 69, 28, 146, 192, 67, 0, 10, 199, 84, 244, 207, 5, 14, 129, 76, 69, 6, 195, 20, 106, 136, 66, 0,
-			6, 195, 86, 226, 109, 67, 7, 196, 81, 96, 71, 244, 67, 7, 196, 73, 51, 198, 28, 66, 7, 196, 66, 249, 76, 204, 67, 7, 196, 44,
-			243, 6, 28, 66, 7, 196, 32, 20, 245, 68, 66, 0, 8, 197, 66, 115, 6, 46, 240, 67, 0, 6, 195, 48, 147, 115, 66, 9, 198, 43,
-			179, 196, 48, 149, 64, 67, 0, 10, 199, 75, 185, 219, 16, 206, 207, 20, 69, 0, 7, 196, 86, 244, 207, 52, 66, 7, 196, 77, 18, 79,
-			20, 66, 6, 195, 67, 131, 49, 66, 7, 196, 55, 162, 201, 32, 66, 6, 195, 32, 20, 61, 66, 7, 196, 9, 66, 198, 76, 66, 7, 196,
-			7, 121, 14, 72, 67, 7, 196, 5, 34, 198, 76, 66, 7, 196, 232, 208, 68, 188, 67, 0, 12, 201, 47, 17, 141, 5, 51, 196, 68, 21,
-			64, 69, 0, 6, 195, 145, 1, 131, 66, 6, 195, 197, 91, 211, 66, 0, 0, 7, 196, 67, 97, 41, 72, 66, 7, 196, 64, 97, 111, 76,
-			66, 7, 196, 54, 241, 122, 196, 67, 0, 8, 197, 74, 170, 3, 108, 80, 67, 9, 198, 66, 148, 147, 69, 64, 239, 67, 8, 197, 65, 25,
-			142, 80, 176, 66, 8, 197, 17, 16, 69, 24, 112, 66, 8, 197, 8, 19, 66, 80, 176, 66, 0, 9, 198, 88, 145, 118, 48, 241, 0, 67,
-			9, 198, 85, 68, 100, 20, 114, 96, 65, 9, 198, 15, 14, 207, 48, 241, 0, 68, 0, 6, 195, 61, 33, 140, 66, 0, 6, 195, 47, 132,
-			253, 66, 0, 9, 198, 87, 163, 65, 92, 96, 211, 67, 8, 197, 74, 51, 112, 36, 176, 65, 0, 11, 66, 25, 48, 36, 47, 6, 35, 91,
-			0, 24, 6, 195, 67, 100, 243, 66, 6, 195, 11, 48, 179, 66, 0, 10, 199, 72, 98, 233, 149, 18, 65, 76, 69, 10, 199, 67, 99, 6,
-			149, 18, 65, 76, 69, 9, 198, 4, 223, 83, 37, 39, 125, 68, 0, 7, 196, 91, 197, 17, 16, 66, 9, 198, 8, 144, 140, 36, 245, 110,
-			68, 0, 8, 197, 17, 16, 69, 25, 112, 66, 0, 9, 198, 65, 34, 86, 60, 195, 196, 67, 9, 198, 52, 146, 246, 86, 227, 64, 67, 9,
-			198, 20, 98, 59, 77, 223, 64, 67, 0, 6, 195, 81, 15, 64, 66, 10, 199, 46, 209, 138, 20, 244, 139, 224, 68, 10, 199, 21, 16, 77,
-			5, 53, 17, 16, 67, 0, 11, 200, 73, 1, 151, 38, 210, 72, 189, 48, 69, 7, 196, 69, 179, 70, 28, 66, 6, 195, 55, 213, 113, 66,
-			0, 8, 197, 64, 197, 3, 25, 112, 66, 8, 197, 47, 160, 179, 5, 48, 67, 8, 197, 24, 180, 144, 245, 48, 66, 8, 197, 20, 148, 139,
-			189, 48, 66, 8, 197, 23, 178, 67, 5, 48, 67, 0, 9, 198, 76, 101, 142, 60, 195, 196, 67, 6, 195, 64, 148, 59, 66, 6, 195, 31,
-			161, 51, 66, 0, 10, 66, 8, 192, 71, 55, 39, 49, 0, 24, 6, 195, 145, 11, 77, 66, 6, 195, 10, 182, 209, 66, 0, 0, 0, 8,
-			197, 73, 180, 17, 80, 64, 66, 8, 197, 45, 68, 73, 60, 128, 67, 0, 9, 198, 72, 19, 108, 205, 61, 140, 68, 9, 198, 20, 101, 201,
-			8, 99, 0, 67, 9, 198, 18, 52, 144, 5, 15, 0, 67, 0, 6, 195, 96, 25, 76, 66, 9, 198, 44, 243, 80, 48, 98, 211, 66, 6,
-			195, 232, 76, 192, 66, 0, 7, 196, 77, 18, 83, 204, 66, 7, 196, 61, 82, 87, 236, 67, 9, 198, 44, 243, 80, 48, 98, 210, 66, 7,
-			196, 196, 82, 106, 20, 67, 7, 196, 180, 44, 79, 72, 67, 0, 8, 197, 93, 180, 67, 80, 192, 66, 0, 9, 198, 88, 19, 70, 48, 108,
-			192, 68, 6, 195, 164, 114, 77, 66, 9, 198, 56, 150, 65, 21, 180, 64, 67, 9, 198, 47, 52, 209, 5, 36, 192, 66, 9, 198, 20, 144,
-			80, 4, 140, 192, 68, 9, 198, 9, 180, 72, 224, 148, 128, 67, 0, 6, 195, 72, 209, 128, 72, 6, 195, 75, 186, 136, 66, 10, 199, 68,
-			18, 14, 60, 67, 6, 20, 67, 0, 7, 196, 150, 52, 155, 52, 67, 6, 195, 60, 40, 203, 65, 7, 196, 47, 162, 70, 72, 65, 7, 196,
-			25, 11, 143, 16, 67, 7, 196, 13, 180, 54, 72, 66, 6, 195, 11, 176, 187, 66, 0, 8, 197, 84, 18, 15, 55, 176, 67, 8, 197, 52,
-			97, 109, 119, 48, 67, 8, 197, 16, 18, 15, 55, 176, 67, 8, 197, 4, 208, 83, 119, 208, 67, 0, 8, 197, 204, 32, 89, 38, 0, 65,
-			0, 6, 195, 16, 19, 112, 66, 0, 7, 196, 91, 211, 210, 188, 67, 7, 196, 76, 99, 6, 92, 66, 7, 196, 47, 169, 3, 180, 67, 6,
-			195, 20, 98, 239, 66, 7, 196, 11, 160, 66, 188, 67, 0, 6, 195, 52, 100, 238, 66, 8, 197, 52, 21, 129, 19, 48, 67, 0, 6, 194,
-			32, 16, 72, 23, 9, 198, 8, 241, 73, 19, 161, 64, 67, 0, 7, 195, 65, 18, 64, 72, 23, 9, 198, 84, 206, 9, 20, 148, 139, 67,
-			10, 199, 79, 98, 139, 4, 81, 201, 128, 65, 10, 199, 23, 179, 65, 76, 243, 15, 16, 68, 10, 199, 22, 217, 187, 4, 81, 201, 128, 67,
-			10, 199, 9, 65, 75, 4, 81, 201, 128, 65, 0, 7, 196, 73, 67, 81, 172, 65, 7, 196, 37, 146, 65, 72, 67, 7, 196, 32, 16, 143,
-			40, 66, 7, 196, 20, 96, 137, 76, 65, 11, 200, 19, 14, 237, 37, 34, 77, 81, 32, 68, 7, 196, 11, 98, 193, 76, 66, 0, 9, 198,
-			91, 209, 143, 17, 16, 85, 68, 9, 198, 67, 211, 143, 17, 16, 85, 67, 8, 197, 181, 98, 77, 36, 176, 67, 0, 9, 198, 141, 62, 228,
-			20, 114, 96, 66, 0, 9, 198, 84, 16, 145, 36, 176, 83, 67, 0, 11, 200, 88, 148, 15, 91, 49, 81, 36, 176, 68, 11, 200, 65, 18,
-			67, 109, 17, 240, 36, 176, 66, 6, 195, 224, 144, 83, 67, 9, 198, 48, 100, 142, 37, 129, 138, 67, 7, 196, 47, 179, 210, 196, 67, 7,
-			196, 21, 66, 193, 76, 66, 0, 8, 197, 9, 67, 83, 24, 112, 66, 0, 12, 201, 64, 243, 20, 84, 16, 145, 36, 176, 83, 69, 9, 198,
-			52, 227, 199, 37, 49, 140, 65, 9, 198, 12, 100, 147, 156, 242, 128, 67, 0, 7, 195, 45, 179, 64, 72, 23, 6, 195, 61, 43, 128, 66,
-			9, 198, 47, 53, 240, 77, 16, 83, 67, 6, 195, 10, 203, 64, 66, 0, 7, 195, 13, 178, 0, 72, 23, 7, 196, 78, 147, 157, 244, 66,
-			7, 196, 72, 20, 219, 68, 66, 7, 196, 21, 65, 84, 44, 66, 0, 8, 197, 72, 49, 147, 25, 112, 66, 8, 197, 64, 245, 131, 5, 48,
-			66, 9, 198, 64, 20, 17, 36, 176, 89, 65, 8, 197, 54, 240, 82, 79, 192, 67, 8, 197, 20, 155, 70, 45, 48, 67, 6, 195, 20, 98,
-			250, 65, 8, 197, 4, 130, 77, 81, 48, 65, 0, 6, 195, 20, 98, 253, 66, 0, 0, 6, 195, 196, 124, 59, 67, 7, 196, 4, 40, 212,
-			76, 65, 0, 8, 197, 44, 243, 80, 61, 48, 66, 8, 197, 21, 177, 197, 25, 112, 66, 0, 6, 195, 47, 17, 237, 66, 0, 9, 198, 67,
-			98, 212, 23, 2, 75, 66, 10, 199, 48, 98, 231, 60, 83, 227, 32, 69, 9, 198, 17, 16, 77, 5, 50, 75, 67, 10, 199, 9, 66, 205,
-			24, 162, 219, 68, 65, 0, 0, 8, 197, 145, 18, 207, 54, 240, 67, 6, 195, 140, 177, 138, 66, 0, 5, 194, 144, 160, 65, 9, 198, 79,
-			179, 79, 74, 84, 192, 67, 9, 198, 47, 52, 198, 45, 36, 192, 66, 6, 195, 26, 84, 0, 66, 9, 198, 212, 95, 65, 32, 81, 140, 68,
-			0, 6, 195, 70, 108, 64, 66, 6, 195, 244, 99, 204, 67, 6, 195, 25, 95, 0, 66, 10, 199, 12, 99, 15, 72, 148, 6, 20, 68, 0,
-			6, 195, 72, 98, 51, 66, 7, 196, 52, 97, 5, 188, 66, 0, 8, 197, 64, 100, 205, 24, 128, 66, 8, 197, 64, 20, 147, 246, 208, 67,
-			8, 197, 55, 51, 204, 60, 64, 67, 6, 195, 43, 190, 150, 66, 8, 197, 32, 243, 204, 60, 64, 67, 9, 198, 13, 179, 14, 60, 195, 205,
-			67, 0, 9, 198, 73, 62, 198, 61, 50, 80, 68, 6, 195, 47, 163, 113, 66, 0, 9, 198, 8, 144, 140, 36, 243, 111, 68, 0, 7, 196,
-			91, 181, 207, 16, 66, 7, 196, 60, 211, 6, 76, 66, 7, 196, 52, 243, 6, 92, 66, 6, 195, 47, 162, 123, 67, 7, 196, 46, 213, 212,
-			56, 66, 7, 196, 34, 107, 73, 128, 65, 0, 8, 197, 79, 179, 79, 87, 208, 67, 8, 197, 148, 163, 184, 37, 32, 67, 8, 197, 65, 25,
-			184, 37, 32, 67, 8, 197, 53, 68, 134, 51, 16, 67, 0, 6, 195, 91, 179, 241, 67, 9, 198, 141, 28, 68, 61, 34, 248, 68, 9, 198,
-			18, 208, 239, 61, 34, 248, 68, 0, 9, 198, 20, 155, 70, 45, 50, 75, 68, 0, 7, 196, 84, 100, 201, 100, 66, 7, 196, 76, 251, 70,
-			76, 67, 7, 196, 25, 100, 198, 28, 66, 7, 196, 9, 16, 77, 196, 66, 7, 196, 4, 81, 144, 76, 66, 0, 8, 197, 52, 97, 1, 87,
-			48, 67, 8, 197, 45, 179, 139, 119, 208, 66, 0, 9, 198, 9, 67, 6, 15, 161, 64, 67, 0, 10, 199, 164, 184, 205, 4, 81, 201, 128,
-			66, 6, 195, 66, 254, 192, 66, 6, 195, 46, 148, 240, 66, 0, 9, 198, 92, 146, 204, 61, 36, 238, 67, 7, 196, 87, 211, 65, 76, 66,
-			7, 196, 81, 166, 209, 8, 66, 7, 196, 75, 20, 198, 32, 66, 7, 196, 52, 18, 4, 180, 66, 6, 195, 46, 148, 243, 66, 6, 195, 47,
-			160, 83, 66, 0, 12, 3, 226, 132, 150, 50, 6, 39, 65, 36, 34, 0, 0, 0, 9, 198, 20, 96, 134, 48, 243, 123, 68, 0, 9, 198,
-			221, 114, 79, 48, 241, 0, 68, 7, 196, 64, 153, 68, 244, 67, 7, 196, 61, 50, 207, 72, 66, 7, 196, 44, 99, 6, 100, 66, 7, 196,
-			232, 243, 65, 76, 67, 7, 196, 4, 83, 124, 180, 67, 0, 8, 197, 80, 226, 75, 80, 208, 65, 8, 197, 72, 222, 129, 16, 80, 66, 8,
-			197, 68, 18, 4, 216, 208, 66, 8, 197, 37, 36, 253, 36, 176, 67, 9, 198, 8, 98, 9, 73, 60, 0, 67, 8, 197, 232, 158, 196, 232,
-			80, 68, 0, 9, 198, 64, 243, 9, 92, 18, 128, 67, 0, 10, 199, 52, 243, 9, 76, 60, 9, 44, 66, 0, 7, 196, 88, 20, 219, 68,
-			66, 7, 196, 68, 18, 53, 20, 66, 7, 196, 45, 67, 70, 92, 66, 7, 196, 44, 243, 6, 76, 66, 7, 196, 46, 52, 104, 76, 66, 7,
-			196, 44, 148, 6, 28, 66, 7, 196, 44, 22, 77, 240, 66, 7, 196, 10, 212, 129, 52, 66, 0, 8, 197, 68, 18, 16, 37, 48, 65, 8,
-			197, 189, 242, 83, 25, 48, 68, 0, 9, 198, 84, 100, 147, 36, 59, 64, 67, 6, 195, 61, 52, 61, 66, 0, 9, 198, 68, 18, 146, 108,
-			49, 147, 67, 9, 198, 67, 98, 193, 31, 2, 75, 66, 9, 198, 24, 193, 139, 77, 18, 75, 67, 0, 7, 196, 99, 180, 198, 28, 66, 7,
-			196, 84, 197, 9, 20, 66, 9, 198, 67, 100, 201, 212, 49, 146, 68, 7, 196, 196, 59, 73, 20, 67, 0, 8, 197, 65, 18, 67, 25, 48,
-			66, 8, 197, 20, 101, 70, 45, 48, 66, 8, 197, 4, 74, 68, 5, 48, 67, 0, 6, 195, 90, 210, 85, 66, 6, 195, 173, 55, 125, 66,
-			0, 0, 7, 196, 197, 94, 139, 76, 66, 0, 6, 131, 226, 128, 166, 8, 8, 197, 53, 68, 165, 56, 64, 66, 0, 9, 198, 75, 17, 73,
-			44, 20, 192, 67, 9, 198, 46, 241, 73, 20, 20, 192, 67, 9, 198, 197, 49, 140, 24, 180, 192, 67, 0, 8, 197, 86, 235, 211, 217, 0,
-			67, 10, 199, 73, 59, 15, 60, 47, 79, 76, 69, 6, 195, 224, 148, 192, 65, 6, 195, 15, 161, 140, 66, 0, 7, 196, 88, 18, 131, 188,
-			66, 7, 196, 68, 18, 53, 40, 66, 7, 196, 60, 36, 134, 16, 66, 7, 196, 47, 160, 179, 184, 67, 7, 196, 4, 44, 193, 76, 67, 0,
-			12, 201, 221, 114, 109, 20, 99, 108, 68, 20, 192, 70, 12, 201, 47, 52, 209, 5, 10, 67, 68, 20, 192, 68, 8, 197, 12, 100, 246, 14,
-			208, 67, 0, 9, 198, 79, 176, 80, 24, 52, 192, 67, 9, 198, 67, 100, 144, 24, 180, 192, 66, 9, 198, 20, 97, 48, 236, 20, 192, 68,
-			0, 10, 199, 68, 18, 11, 6, 3, 137, 44, 66, 10, 199, 52, 17, 9, 73, 52, 65, 76, 67, 6, 195, 8, 98, 60, 66, 0, 6, 195,
-			26, 83, 51, 67, 7, 196, 25, 2, 68, 204, 67, 0, 8, 197, 72, 99, 32, 59, 16, 65, 8, 197, 47, 19, 210, 183, 48, 68, 0, 5,
-			194, 163, 48, 66, 0, 7, 195, 66, 145, 64, 72, 23, 9, 198, 220, 36, 147, 15, 2, 75, 65, 10, 199, 45, 190, 73, 44, 241, 212, 88,
-			68, 0, 11, 200, 77, 244, 76, 124, 71, 195, 25, 128, 68, 7, 196, 75, 17, 71, 240, 66, 7, 196, 177, 62, 15, 20, 67, 0, 8, 197,
-			75, 186, 147, 119, 208, 67, 8, 197, 48, 100, 248, 37, 32, 67, 0, 6, 195, 54, 241, 45, 66, 0, 7, 195, 61, 32, 240, 72, 23, 0,
-			8, 196, 72, 52, 91, 88, 72, 23, 7, 196, 68, 148, 212, 180, 67, 6, 195, 64, 150, 167, 66, 9, 198, 52, 146, 207, 48, 241, 0, 67,
-			6, 195, 54, 241, 47, 66, 0, 0, 12, 201, 65, 180, 198, 100, 100, 147, 15, 2, 75, 67, 9, 198, 65, 16, 70, 32, 146, 192, 67, 9,
-			198, 53, 22, 210, 56, 146, 192, 66, 9, 198, 47, 164, 194, 140, 230, 64, 66, 6, 195, 19, 188, 0, 66, 9, 198, 212, 193, 138, 8, 243,
-			0, 65, 0, 0, 6, 195, 60, 197, 11, 66, 9, 198, 52, 148, 207, 48, 241, 0, 67, 6, 195, 47, 161, 111, 66, 7, 196, 32, 20, 1,
-			72, 66, 6, 195, 9, 68, 243, 66, 7, 196, 8, 99, 15, 76, 66, 0, 9, 198, 88, 145, 118, 17, 16, 85, 67, 12, 201, 77, 180, 15,
-			108, 70, 204, 56, 146, 192, 67, 9, 198, 76, 99, 6, 17, 16, 85, 67, 6, 195, 164, 249, 78, 67, 12, 201, 65, 25, 143, 108, 70, 204,
-			56, 146, 192, 67, 12, 201, 24, 113, 141, 25, 33, 152, 56, 146, 192, 67, 8, 197, 188, 67, 15, 86, 224, 67, 0, 9, 198, 86, 197, 18,
-			56, 146, 192, 65, 9, 198, 77, 21, 7, 192, 146, 192, 65, 9, 198, 73, 181, 24, 192, 146, 192, 68, 9, 198, 64, 243, 9, 76, 146, 192,
-			67, 9, 198, 52, 17, 1, 35, 30, 192, 68, 9, 198, 44, 243, 119, 52, 243, 0, 67, 0, 7, 195, 88, 99, 64, 72, 23, 0, 11, 200,
-			77, 18, 91, 17, 179, 14, 36, 176, 66, 7, 196, 72, 187, 197, 180, 66, 7, 196, 64, 242, 29, 244, 66, 7, 196, 52, 18, 20, 76, 66,
-			7, 196, 7, 210, 82, 76, 66, 0, 8, 197, 72, 18, 131, 189, 48, 66, 12, 201, 64, 100, 207, 108, 70, 204, 56, 146, 192, 67, 8, 197,
-			144, 154, 147, 25, 48, 68, 8, 197, 44, 148, 27, 165, 112, 65, 8, 197, 47, 17, 146, 47, 128, 67, 8, 197, 44, 99, 6, 67, 192, 67,
-			0, 9, 198, 52, 97, 45, 60, 219, 192, 68, 9, 198, 8, 22, 137, 96, 179, 192, 65, 0, 0, 7, 196, 52, 25, 69, 244, 67, 7, 196,
-			47, 212, 198, 28, 66, 7, 196, 28, 104, 211, 196, 67, 7, 196, 23, 49, 212, 188, 67, 0, 8, 197, 74, 83, 133, 233, 48, 66, 8, 197,
-			66, 51, 153, 25, 48, 66, 8, 197, 64, 20, 147, 25, 48, 66, 8, 197, 31, 195, 210, 47, 128, 67, 8, 197, 7, 179, 210, 149, 48, 68,
-			0, 9, 198, 66, 241, 73, 101, 11, 192, 67, 0, 6, 195, 128, 137, 252, 67, 9, 198, 74, 144, 155, 68, 226, 75, 65, 9, 198, 72, 99,
-			18, 108, 49, 147, 67, 9, 198, 64, 19, 70, 76, 226, 75, 65, 0, 11, 200, 73, 51, 205, 5, 51, 210, 47, 128, 68, 7, 196, 67, 96,
-			227, 44, 65, 11, 200, 52, 17, 14, 37, 51, 210, 47, 128, 68, 0, 8, 197, 216, 188, 5, 216, 192, 67, 9, 198, 44, 243, 66, 4, 170,
-			17, 67, 8, 197, 44, 22, 75, 154, 208, 67, 8, 197, 46, 211, 194, 70, 240, 67, 8, 197, 233, 98, 123, 24, 160, 68, 8, 197, 5, 3,
-			196, 24, 160, 67, 0, 9, 198, 20, 146, 211, 61, 92, 192, 67, 9, 198, 20, 99, 6, 16, 20, 192, 67, 0, 10, 199, 73, 178, 195, 233,
-			63, 47, 76, 68, 9, 198, 45, 223, 85, 37, 145, 139, 65, 10, 199, 20, 100, 134, 76, 240, 143, 40, 68, 0, 7, 196, 72, 197, 4, 4,
-			66, 7, 196, 164, 244, 165, 76, 67, 11, 200, 68, 17, 73, 61, 34, 68, 144, 192, 69, 7, 196, 67, 165, 198, 48, 66, 7, 196, 47, 164,
-			198, 48, 66, 7, 196, 36, 212, 1, 72, 66, 7, 196, 8, 16, 148, 196, 67, 0, 8, 197, 44, 21, 2, 60, 160, 67, 8, 197, 44, 20,
-			147, 216, 224, 66, 9, 198, 36, 132, 27, 48, 179, 205, 67, 12, 201, 9, 241, 71, 25, 62, 54, 24, 180, 192, 69, 8, 197, 8, 98, 2,
-			216, 160, 66, 0, 9, 198, 76, 99, 6, 64, 20, 192, 67, 9, 198, 44, 244, 141, 206, 100, 192, 67, 9, 198, 24, 180, 144, 204, 20, 192,
-			67, 9, 198, 9, 27, 160, 57, 60, 64, 67, 0, 10, 199, 160, 52, 65, 73, 60, 9, 44, 68, 0, 7, 196, 79, 101, 70, 40, 66, 7,
-			196, 73, 61, 134, 28, 66, 0, 9, 198, 84, 99, 5, 55, 166, 109, 65, 9, 198, 73, 180, 134, 50, 3, 177, 66, 8, 197, 73, 68, 240,
-			119, 208, 67, 8, 197, 72, 191, 80, 39, 48, 67, 8, 197, 64, 20, 129, 31, 176, 67, 8, 197, 145, 3, 204, 27, 48, 68, 9, 198, 52,
-			21, 186, 4, 81, 193, 68, 8, 197, 44, 20, 9, 103, 48, 67, 12, 201, 24, 193, 139, 79, 97, 79, 8, 144, 192, 68, 8, 197, 20, 96,
-			137, 79, 208, 65, 0, 7, 195, 176, 17, 193, 72, 23, 0, 9, 198, 74, 84, 207, 72, 190, 0, 67, 9, 198, 64, 243, 9, 76, 146, 239,
-			68, 0, 6, 195, 54, 242, 123, 67, 6, 195, 18, 222, 0, 66, 7, 196, 232, 76, 230, 76, 67, 0, 8, 197, 88, 97, 6, 55, 48, 67,
-			8, 197, 86, 249, 72, 119, 208, 67, 8, 197, 31, 49, 12, 119, 208, 66, 8, 197, 19, 163, 137, 35, 48, 67, 0, 9, 198, 74, 49, 79,
-			48, 97, 64, 67, 6, 195, 54, 240, 85, 66, 0, 6, 195, 220, 179, 204, 66, 6, 195, 61, 36, 240, 66, 9, 198, 244, 177, 146, 77, 27,
-			211, 67, 9, 198, 212, 89, 219, 69, 49, 135, 68, 0, 8, 196, 67, 100, 201, 12, 72, 23, 7, 196, 44, 18, 6, 196, 67, 7, 196, 15,
-			180, 198, 64, 66, 7, 196, 4, 43, 207, 72, 67, 0, 9, 197, 144, 209, 146, 76, 240, 72, 23, 8, 197, 68, 18, 17, 36, 48, 65, 8,
-			197, 64, 241, 86, 60, 80, 66, 8, 197, 49, 73, 19, 36, 176, 67, 8, 197, 13, 180, 67, 24, 112, 66, 8, 197, 8, 149, 83, 24, 176,
-			66, 0, 7, 195, 66, 145, 73, 72, 23, 9, 198, 108, 70, 204, 56, 146, 192, 65, 9, 198, 85, 26, 215, 39, 62, 192, 68, 9, 198, 72,
-			209, 153, 56, 146, 192, 66, 0, 10, 199, 64, 243, 20, 60, 47, 79, 76, 69, 9, 198, 52, 20, 147, 60, 92, 211, 67, 6, 195, 47, 169,
-			76, 66, 0, 6, 195, 90, 208, 83, 66, 7, 196, 73, 66, 205, 188, 66, 7, 196, 75, 177, 239, 76, 66, 11, 200, 64, 241, 84, 96, 20,
-			147, 108, 176, 65, 7, 196, 44, 245, 203, 232, 65, 0, 9, 198, 76, 99, 6, 76, 148, 0, 67, 8, 197, 216, 219, 211, 36, 176, 67, 12,
-			201, 216, 142, 54, 36, 141, 69, 37, 49, 140, 69, 8, 197, 52, 20, 251, 36, 176, 67, 8, 197, 13, 180, 83, 24, 112, 66, 0, 0, 10,
-			199, 81, 36, 61, 24, 83, 137, 44, 65, 6, 195, 149, 107, 192, 66, 10, 199, 69, 65, 79, 20, 240, 137, 12, 67, 0, 11, 200, 73, 180,
-			12, 24, 220, 14, 36, 176, 66, 7, 196, 24, 51, 148, 88, 66, 0, 12, 201, 61, 35, 79, 108, 70, 204, 56, 146, 192, 67, 8, 197, 45,
-			16, 69, 25, 112, 66, 0, 6, 195, 74, 208, 77, 66, 9, 198, 9, 18, 68, 4, 95, 0, 67, 0, 6, 195, 130, 147, 64, 66, 9, 198,
-			73, 178, 77, 192, 226, 75, 66, 9, 198, 21, 177, 197, 60, 36, 111, 67, 0, 7, 196, 64, 148, 134, 92, 66, 6, 195, 61, 49, 151, 66,
-			7, 196, 47, 96, 82, 188, 67, 0, 8, 197, 91, 211, 210, 47, 128, 67, 6, 195, 64, 148, 186, 65, 8, 197, 197, 36, 241, 45, 48, 66,
-			0, 12, 201, 72, 97, 77, 61, 177, 27, 48, 226, 75, 67, 9, 198, 64, 243, 20, 73, 179, 128, 67, 9, 198, 20, 149, 84, 33, 223, 64,
-			67, 0, 15, 3, 95, 51, 88, 47, 34, 6, 37, 72, 36, 89, 36, 47, 0, 9, 198, 65, 18, 125, 37, 49, 147, 68, 10, 199, 65, 16,
-			80, 70, 99, 148, 44, 67, 9, 198, 66, 179, 210, 76, 226, 75, 65, 9, 198, 13, 22, 210, 76, 226, 75, 66, 9, 198, 180, 179, 214, 60,
-			194, 75, 68, 0, 13, 3, 95, 48, 67, 89, 47, 6, 39, 47, 37, 50, 0, 7, 196, 68, 18, 2, 244, 66, 7, 196, 60, 47, 79, 76,
-			67, 7, 196, 140, 212, 9, 204, 67, 7, 196, 46, 118, 6, 16, 66, 7, 196, 16, 240, 140, 192, 66, 7, 196, 16, 145, 47, 76, 66, 0,
-			8, 197, 54, 214, 20, 18, 240, 67, 8, 197, 32, 16, 145, 154, 240, 67, 0, 0, 6, 195, 167, 116, 64, 66, 0, 7, 196, 69, 77, 213,
-			184, 67, 6, 195, 54, 246, 115, 66, 7, 196, 12, 100, 251, 188, 67, 7, 196, 12, 99, 20, 68, 66, 7, 196, 8, 245, 134, 52, 66, 0,
-			0, 0, 0, 10, 3, 95, 49, 67, 89, 47, 6, 39, 0, 6, 195, 54, 241, 135, 66, 11, 200, 47, 19, 213, 25, 36, 201, 14, 208, 69,
-			7, 196, 10, 195, 20, 44, 66, 0, 0, 6, 195, 24, 204, 0, 66, 9, 198, 20, 124, 19, 108, 195, 112, 65, 9, 198, 16, 18, 56, 219,
-			81, 64, 68, 0, 10, 199, 67, 171, 79, 16, 146, 27, 52, 65, 0, 7, 196, 52, 18, 15, 48, 66, 7, 196, 180, 16, 129, 100, 67, 0,
-			0, 6, 194, 20, 240, 72, 23, 20, 3, 95, 49, 57, 72, 4, 36, 84, 36, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 36,
-			133, 13, 69, 65, 64, 67, 9, 198, 24, 194, 80, 220, 145, 64, 68, 9, 198, 16, 18, 15, 60, 35, 112, 68, 0, 19, 3, 95, 49, 56,
-			4, 39, 89, 36, 65, 50, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 76, 99, 6, 72, 190, 0, 67, 10, 199, 73, 1, 140, 24, 243,
-			15, 16, 68, 9, 198, 65, 26, 211, 36, 187, 211, 67, 0, 13, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 35, 0, 7, 196, 189, 52,
-			107, 72, 66, 0, 9, 198, 67, 100, 207, 76, 148, 0, 67, 8, 197, 64, 241, 111, 36, 176, 65, 8, 197, 66, 51, 167, 36, 176, 67, 0,
-			6, 195, 20, 248, 209, 65, 0, 6, 195, 20, 248, 208, 66, 0, 7, 196, 88, 18, 131, 236, 66, 7, 196, 72, 145, 36, 48, 66, 6, 195,
-			45, 68, 51, 66, 7, 196, 47, 164, 198, 96, 66, 7, 196, 189, 52, 107, 76, 66, 0, 0, 18, 3, 95, 49, 49, 36, 72, 4, 37, 50,
-			6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 65, 25, 174, 56, 146, 192, 65, 6, 195, 61, 61, 81, 66, 0, 12, 3, 95, 49, 48, 72,
-			6, 36, 89, 36, 47, 0, 6, 195, 77, 74, 12, 66, 9, 198, 47, 160, 68, 116, 242, 0, 67, 6, 195, 26, 83, 128, 66, 8, 197, 19,
-			3, 211, 37, 0, 67, 10, 199, 168, 81, 143, 72, 145, 36, 48, 69, 0, 13, 3, 95, 51, 67, 47, 34, 6, 37, 89, 47, 35, 0, 17,
-			3, 95, 49, 51, 47, 34, 37, 50, 6, 35, 72, 36, 89, 36, 47, 0, 7, 196, 68, 18, 5, 244, 66, 7, 196, 52, 17, 36, 76, 66,
-			6, 195, 10, 209, 147, 66, 0, 17, 3, 95, 49, 50, 72, 84, 35, 50, 6, 35, 72, 36, 89, 36, 47, 0, 8, 197, 17, 68, 66, 25,
-			48, 66, 0, 17, 3, 95, 49, 53, 48, 36, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 0, 21, 3, 95, 49, 52, 76, 4, 36, 47,
-			37, 34, 37, 50, 6, 35, 72, 36, 89, 36, 47, 0, 8, 197, 51, 19, 211, 37, 0, 67, 6, 195, 24, 223, 0, 66, 10, 199, 215, 3,
-			143, 196, 59, 73, 20, 70, 0, 20, 3, 95, 49, 55, 89, 4, 36, 72, 36, 65, 50, 6, 35, 72, 36, 89, 36, 47, 0, 7, 196, 67,
-			101, 198, 72, 66, 12, 201, 66, 148, 139, 205, 94, 240, 92, 152, 0, 68, 7, 196, 55, 161, 49, 180, 67, 6, 195, 30, 177, 147, 66, 0,
-			18, 3, 95, 49, 54, 91, 36, 89, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 8, 197, 77, 180, 78, 179, 128, 67, 8, 197, 66, 144,
-			209, 5, 48, 66, 9, 198, 24, 83, 143, 96, 204, 0, 67, 8, 197, 4, 213, 12, 25, 48, 67, 0, 6, 194, 36, 128, 72, 23, 9, 198,
-			52, 100, 246, 56, 243, 64, 67, 0, 17, 3, 95, 55, 88, 89, 36, 72, 36, 65, 72, 36, 89, 6, 36, 47, 0, 10, 199, 47, 31, 70,
-			28, 148, 157, 244, 69, 9, 198, 19, 14, 237, 37, 49, 147, 69, 0, 7, 196, 166, 129, 1, 76, 67, 6, 195, 52, 17, 47, 66, 7, 196,
-			48, 241, 9, 44, 66, 7, 196, 5, 36, 60, 196, 67, 0, 8, 197, 21, 180, 117, 140, 128, 67, 0, 0, 0, 7, 196, 44, 240, 173, 76,
-			66, 6, 195, 188, 184, 195, 66, 0, 8, 197, 89, 67, 9, 18, 240, 67, 9, 198, 88, 243, 6, 73, 62, 241, 68, 8, 197, 52, 20, 251,
-			38, 208, 68, 8, 197, 45, 16, 88, 60, 192, 66, 0, 0, 0, 7, 196, 67, 100, 147, 244, 66, 0, 8, 197, 56, 146, 207, 79, 16, 67,
-			0, 9, 198, 89, 27, 248, 219, 81, 64, 68, 9, 198, 79, 131, 56, 219, 81, 64, 68, 6, 195, 170, 83, 113, 67, 0, 9, 198, 32, 20,
-			27, 69, 54, 203, 65, 0, 6, 195, 91, 211, 115, 66, 7, 196, 79, 99, 66, 204, 66, 7, 196, 17, 244, 84, 44, 66, 0, 9, 198, 99,
-			179, 143, 16, 193, 133, 67, 8, 197, 79, 179, 73, 23, 208, 67, 8, 197, 76, 97, 12, 37, 128, 66, 8, 197, 75, 195, 205, 5, 96, 67,
-			6, 195, 216, 219, 210, 66, 8, 197, 4, 90, 100, 51, 16, 68, 0, 5, 194, 52, 16, 72, 11, 66, 48, 48, 55, 4, 36, 84, 35, 0,
-			24, 6, 195, 177, 34, 69, 66, 6, 195, 47, 49, 125, 66, 0, 10, 199, 85, 16, 72, 24, 243, 15, 16, 68, 10, 199, 24, 208, 145, 36,
-			243, 15, 16, 68, 0, 11, 200, 53, 67, 19, 36, 219, 137, 207, 176, 70, 7, 196, 16, 18, 165, 56, 66, 7, 196, 4, 74, 77, 188, 67,
-			0, 8, 197, 222, 52, 73, 80, 208, 66, 8, 197, 65, 18, 74, 60, 208, 66, 8, 197, 55, 163, 109, 4, 80, 67, 0, 6, 194, 180, 16,
-			72, 23, 9, 198, 55, 17, 123, 49, 178, 192, 67, 0, 9, 198, 4, 67, 15, 55, 176, 83, 68, 0, 6, 195, 84, 244, 243, 66, 11, 200,
-			72, 198, 206, 96, 241, 12, 24, 80, 67, 7, 196, 68, 21, 129, 76, 66, 6, 195, 64, 148, 243, 66, 6, 195, 47, 62, 0, 66, 6, 195,
-			232, 100, 147, 66, 0, 8, 197, 88, 144, 145, 36, 80, 66, 8, 197, 67, 160, 86, 60, 80, 67, 0, 6, 195, 52, 244, 253, 66, 0, 15,
-			3, 95, 50, 88, 72, 84, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 8, 146, 250, 11, 48, 83, 68, 0, 7, 196, 88, 207, 73, 20,
-			66, 7, 196, 88, 18, 58, 76, 66, 6, 195, 84, 18, 47, 66, 7, 196, 74, 217, 100, 76, 67, 6, 195, 164, 129, 151, 66, 7, 196, 60,
-			220, 201, 52, 67, 7, 196, 47, 210, 69, 244, 67, 7, 196, 32, 54, 232, 92, 66, 7, 196, 15, 179, 84, 76, 66, 0, 8, 197, 91, 195,
-			205, 189, 48, 67, 8, 197, 77, 180, 68, 5, 144, 66, 8, 197, 52, 98, 51, 25, 48, 67, 8, 197, 52, 19, 122, 25, 112, 67, 8, 197,
-			44, 195, 200, 25, 48, 66, 0, 9, 198, 44, 243, 66, 4, 163, 128, 66, 0, 6, 195, 216, 219, 192, 66, 9, 198, 167, 83, 31, 92, 156,
-			251, 70, 6, 195, 232, 107, 64, 67, 9, 198, 5, 3, 204, 60, 65, 147, 68, 0, 7, 196, 96, 144, 148, 44, 66, 7, 196, 67, 21, 198,
-			76, 66, 7, 196, 25, 36, 198, 76, 66, 7, 196, 9, 245, 70, 76, 66, 0, 9, 198, 72, 99, 32, 56, 85, 17, 67, 8, 197, 52, 20,
-			145, 5, 80, 66, 8, 197, 25, 50, 75, 25, 48, 67, 8, 197, 8, 97, 239, 25, 112, 67, 8, 197, 8, 97, 12, 25, 112, 66, 8, 197,
-			153, 62, 46, 61, 48, 68, 0, 9, 198, 44, 243, 44, 169, 67, 64, 66, 9, 198, 7, 179, 197, 69, 67, 64, 68, 0, 6, 195, 45, 67,
-			124, 66, 6, 195, 191, 52, 128, 66, 0, 11, 200, 88, 147, 75, 60, 208, 177, 5, 48, 68, 7, 196, 84, 244, 132, 192, 66, 7, 196, 76,
-			101, 83, 236, 66, 11, 200, 73, 68, 59, 84, 244, 149, 5, 48, 68, 7, 196, 220, 195, 137, 44, 66, 7, 196, 68, 18, 13, 236, 66, 7,
-			196, 64, 100, 246, 48, 66, 7, 196, 55, 163, 197, 236, 67, 0, 8, 197, 64, 22, 75, 80, 192, 66, 8, 197, 64, 20, 1, 18, 208, 67,
-			0, 9, 198, 84, 98, 140, 25, 60, 192, 67, 9, 198, 72, 147, 84, 140, 228, 192, 67, 5, 194, 158, 208, 66, 9, 198, 53, 68, 65, 84,
-			100, 192, 67, 9, 198, 20, 144, 251, 74, 244, 192, 67, 9, 198, 168, 45, 130, 25, 60, 192, 68, 0, 10, 199, 52, 104, 206, 88, 243, 9,
-			44, 68, 10, 199, 47, 49, 12, 60, 222, 193, 76, 68, 0, 7, 196, 64, 102, 1, 76, 66, 7, 196, 52, 20, 148, 68, 66, 7, 196, 47,
-			52, 212, 68, 66, 0, 8, 197, 73, 15, 126, 55, 0, 66, 8, 197, 68, 17, 73, 46, 208, 67, 8, 197, 64, 145, 13, 24, 160, 66, 8,
-			197, 64, 20, 147, 24, 192, 66, 8, 197, 44, 20, 17, 36, 128, 66, 0, 0, 18, 3, 95, 52, 88, 76, 36, 47, 37, 34, 6, 37, 72,
-			36, 89, 36, 47, 0, 10, 199, 44, 243, 73, 75, 162, 65, 76, 69, 0, 7, 196, 74, 229, 6, 76, 67, 7, 196, 52, 18, 165, 64, 66,
-			7, 196, 47, 164, 207, 84, 66, 6, 195, 15, 177, 131, 66, 0, 8, 197, 165, 83, 6, 45, 32, 66, 9, 198, 9, 16, 83, 157, 129, 133,
-			67, 0, 9, 198, 87, 51, 196, 68, 21, 64, 67, 9, 198, 45, 22, 210, 76, 101, 192, 66, 0, 0, 7, 196, 48, 240, 148, 76, 66, 7,
-			196, 21, 246, 70, 44, 66, 0, 8, 197, 72, 149, 110, 37, 32, 65, 8, 197, 48, 149, 198, 55, 176, 67, 8, 197, 8, 198, 213, 119, 208,
-			66, 0, 9, 198, 65, 180, 117, 30, 149, 192, 67, 9, 198, 67, 98, 72, 88, 241, 64, 67, 9, 198, 44, 148, 140, 244, 241, 64, 67, 0,
-			15, 3, 95, 53, 88, 48, 36, 47, 72, 36, 89, 6, 36, 47, 0, 9, 198, 64, 243, 9, 16, 195, 211, 67, 10, 199, 64, 241, 82, 24,
-			186, 101, 68, 65, 0, 7, 196, 84, 17, 15, 76, 66, 11, 200, 68, 18, 3, 24, 164, 17, 5, 96, 67, 7, 196, 67, 100, 198, 196, 67,
-			7, 196, 52, 22, 129, 8, 66, 7, 196, 47, 160, 84, 48, 67, 7, 196, 212, 163, 137, 44, 66, 0, 9, 197, 12, 209, 146, 76, 240, 72,
-			23, 8, 197, 96, 149, 76, 36, 176, 66, 8, 197, 87, 49, 147, 36, 176, 67, 8, 197, 77, 16, 68, 36, 176, 66, 8, 197, 64, 241, 73,
-			80, 208, 65, 9, 198, 66, 254, 19, 36, 181, 13, 66, 8, 197, 53, 182, 48, 36, 176, 67, 8, 197, 48, 241, 56, 24, 80, 67, 0, 0,
-			6, 195, 5, 1, 140, 66, 0, 7, 196, 60, 46, 211, 204, 65, 0, 9, 197, 20, 241, 70, 76, 240, 72, 23, 8, 197, 49, 241, 79, 24,
-			80, 67, 6, 195, 45, 69, 122, 65, 8, 197, 8, 97, 12, 36, 176, 66, 0, 9, 198, 152, 147, 205, 60, 81, 140, 69, 0, 16, 3, 95,
-			54, 88, 91, 36, 89, 47, 72, 36, 89, 6, 36, 47, 0, 6, 195, 8, 240, 72, 66, 0, 7, 196, 88, 18, 163, 32, 66, 6, 195, 79,
-			178, 123, 67, 11, 200, 73, 189, 194, 73, 48, 240, 36, 176, 66, 11, 200, 60, 38, 134, 73, 48, 240, 36, 176, 66, 7, 196, 56, 246, 134,
-			72, 66, 9, 198, 47, 52, 209, 5, 65, 122, 67, 6, 195, 47, 49, 151, 66, 7, 196, 5, 93, 142, 76, 66, 0, 9, 198, 47, 48, 240,
-			92, 156, 237, 69, 8, 197, 232, 100, 165, 57, 48, 67, 8, 197, 4, 90, 82, 5, 48, 67, 0, 9, 198, 88, 207, 79, 87, 211, 64, 67,
-			9, 198, 55, 51, 196, 68, 19, 64, 67, 9, 198, 141, 28, 68, 60, 195, 196, 68, 9, 198, 8, 242, 5, 80, 75, 192, 67, 0, 6, 195,
-			22, 243, 192, 66, 6, 195, 91, 219, 64, 66, 6, 195, 81, 27, 192, 66, 0, 7, 196, 77, 244, 66, 188, 66, 6, 195, 11, 209, 151, 66,
-			6, 195, 173, 70, 123, 67, 0, 8, 197, 46, 52, 113, 25, 48, 67, 0, 6, 195, 51, 17, 173, 67, 0, 0, 7, 196, 73, 51, 194, 244,
-			66, 7, 196, 60, 33, 139, 76, 66, 7, 196, 48, 110, 58, 20, 67, 11, 200, 7, 179, 211, 70, 244, 144, 245, 48, 69, 0, 8, 197, 73,
-			254, 81, 36, 128, 66, 8, 197, 169, 52, 73, 60, 192, 67, 0, 9, 198, 73, 180, 87, 24, 35, 204, 67, 9, 198, 67, 97, 139, 148, 228,
-			192, 67, 6, 195, 46, 58, 145, 66, 9, 198, 44, 48, 69, 70, 244, 192, 66, 9, 198, 20, 96, 159, 148, 228, 192, 67, 9, 198, 153, 62,
-			61, 78, 148, 192, 68, 0, 6, 195, 160, 176, 64, 65, 9, 198, 44, 48, 69, 70, 226, 115, 68, 0, 7, 196, 68, 22, 6, 48, 66, 7,
-			196, 48, 149, 240, 32, 66, 7, 196, 47, 53, 84, 32, 66, 7, 196, 44, 240, 148, 68, 66, 0, 6, 195, 47, 61, 74, 66, 8, 197, 197,
-			49, 132, 70, 208, 67, 6, 195, 8, 241, 110, 66, 0, 5, 194, 53, 64, 72, 6, 195, 66, 144, 237, 66, 9, 198, 56, 249, 81, 37, 68,
-			128, 66, 9, 198, 15, 180, 207, 48, 100, 192, 67, 0, 16, 3, 95, 56, 88, 39, 89, 36, 65, 72, 36, 89, 6, 36, 47, 0, 0, 6,
-			195, 144, 179, 51, 66, 7, 196, 36, 188, 207, 52, 67, 0, 8, 197, 79, 131, 15, 55, 176, 67, 8, 197, 68, 18, 14, 61, 32, 66, 8,
-			197, 67, 203, 18, 187, 16, 68, 8, 197, 8, 25, 76, 119, 48, 67, 0, 9, 198, 67, 160, 68, 68, 21, 64, 67, 9, 198, 52, 20, 139,
-			232, 17, 64, 67, 9, 198, 32, 54, 206, 76, 97, 192, 66, 9, 198, 16, 99, 196, 68, 21, 64, 67, 0, 0, 8, 196, 36, 132, 15, 20,
-			72, 23, 7, 196, 55, 4, 207, 48, 66, 7, 196, 28, 20, 141, 196, 66, 7, 196, 8, 204, 197, 196, 66, 6, 195, 4, 131, 211, 66, 0,
-			12, 201, 84, 244, 236, 233, 51, 196, 68, 21, 64, 69, 8, 197, 67, 164, 206, 119, 208, 66, 8, 197, 12, 100, 246, 55, 176, 67, 8, 197,
-			5, 43, 210, 119, 208, 67, 8, 197, 172, 48, 77, 235, 16, 68, 0, 5, 194, 36, 208, 72, 7, 195, 145, 42, 69, 72, 23, 9, 198, 97,
-			65, 197, 192, 101, 192, 67, 9, 198, 74, 129, 39, 180, 97, 192, 68, 9, 198, 60, 36, 65, 32, 101, 192, 67, 0, 17, 3, 95, 57, 88,
-			72, 36, 84, 36, 47, 72, 36, 89, 6, 36, 47, 0, 0, 9, 198, 47, 52, 209, 5, 95, 82, 67, 6, 195, 47, 164, 243, 66, 0, 8,
-			197, 22, 126, 240, 36, 176, 66, 0, 9, 198, 84, 207, 37, 20, 114, 96, 65, 9, 198, 64, 145, 133, 25, 41, 76, 68, 9, 198, 14, 180,
-			129, 20, 114, 96, 65, 0, 9, 198, 20, 148, 12, 60, 208, 83, 67, 0, 7, 196, 67, 212, 201, 236, 67, 7, 196, 5, 14, 129, 76, 67,
-			0, 8, 197, 72, 201, 253, 24, 80, 67, 8, 197, 64, 195, 218, 4, 80, 66, 9, 198, 44, 20, 139, 4, 87, 125, 67, 8, 197, 18, 145,
-			125, 24, 80, 67, 0, 0, 6, 195, 79, 191, 64, 66, 0, 7, 196, 92, 145, 47, 196, 65, 7, 196, 85, 68, 68, 204, 66, 7, 196, 79,
-			179, 113, 180, 67, 6, 195, 74, 82, 239, 66, 7, 196, 161, 68, 246, 56, 67, 7, 196, 53, 69, 76, 204, 66, 7, 196, 45, 68, 66, 188,
-			66, 7, 196, 17, 25, 157, 244, 66, 0, 8, 197, 91, 210, 72, 205, 48, 67, 8, 197, 77, 18, 84, 53, 80, 66, 8, 197, 165, 36, 253,
-			189, 48, 67, 8, 197, 20, 100, 20, 149, 48, 67, 8, 197, 11, 177, 139, 25, 48, 67, 0, 6, 195, 46, 58, 153, 66, 9, 198, 153, 51,
-			205, 60, 43, 128, 68, 0, 6, 195, 164, 139, 128, 66, 0, 6, 195, 149, 1, 147, 66, 6, 195, 64, 156, 251, 67, 7, 196, 44, 21, 155,
-			68, 66, 6, 195, 10, 208, 239, 66, 0, 8, 197, 75, 18, 231, 25, 112, 65, 8, 197, 72, 98, 229, 57, 48, 66, 8, 197, 64, 241, 76,
-			25, 112, 66, 9, 198, 52, 146, 47, 79, 100, 0, 67, 8, 197, 47, 52, 148, 49, 48, 66, 8, 197, 20, 100, 144, 61, 48, 66, 8, 197,
-			8, 148, 141, 81, 48, 66, 8, 197, 5, 36, 60, 189, 48, 67, 0, 6, 195, 68, 17, 122, 65, 9, 198, 64, 243, 20, 87, 27, 64, 68,
-			9, 198, 66, 226, 68, 68, 147, 64, 67, 0, 6, 195, 144, 178, 83, 65, 9, 198, 52, 17, 40, 76, 245, 115, 68, 6, 195, 10, 226, 115,
-			67, 6, 195, 10, 210, 243, 66, 0, 6, 195, 20, 145, 136, 66, 0, 8, 196, 13, 180, 86, 80, 72, 23, 7, 196, 166, 132, 175, 72, 67,
-			7, 196, 164, 140, 239, 72, 67, 6, 195, 67, 160, 69, 66, 7, 196, 46, 52, 137, 44, 66, 6, 195, 180, 37, 13, 66, 0, 8, 197, 148,
-			194, 82, 54, 240, 67, 8, 197, 67, 160, 66, 24, 192, 67, 8, 197, 44, 243, 39, 60, 128, 67, 6, 195, 30, 193, 138, 66, 0, 6, 195,
-			8, 98, 243, 66, 0, 6, 195, 164, 140, 192, 66, 0, 7, 196, 88, 240, 143, 76, 66, 11, 200, 73, 51, 205, 5, 51, 204, 60, 64, 68,
-			11, 200, 160, 61, 144, 5, 51, 204, 60, 64, 69, 0, 8, 197, 84, 97, 123, 10, 208, 65, 8, 197, 70, 241, 70, 54, 240, 67, 8, 197,
-			44, 242, 60, 60, 64, 65, 8, 197, 20, 146, 1, 40, 224, 66, 0, 9, 198, 160, 35, 210, 44, 204, 192, 67, 9, 198, 44, 226, 68, 224,
-			148, 128, 67, 0, 0, 7, 196, 92, 145, 47, 244, 67, 7, 196, 195, 210, 65, 100, 68, 0, 6, 195, 72, 107, 210, 66, 8, 197, 64, 241,
-			82, 51, 48, 66, 9, 198, 20, 19, 65, 32, 198, 203, 67, 0, 6, 195, 52, 19, 115, 66, 9, 198, 24, 130, 75, 156, 97, 64, 68, 6,
-			195, 10, 210, 239, 66, 0, 10, 199, 88, 207, 103, 60, 95, 79, 20, 69, 0, 7, 196, 83, 99, 15, 16, 67, 7, 196, 77, 68, 203, 180,
-			66, 7, 196, 72, 191, 70, 92, 66, 12, 201, 67, 98, 72, 212, 84, 147, 15, 2, 75, 67, 0, 8, 197, 164, 114, 82, 119, 208, 67, 8,
-			197, 64, 243, 20, 79, 48, 67, 9, 198, 52, 148, 139, 196, 198, 203, 67, 8, 197, 44, 241, 207, 23, 176, 67, 8, 197, 20, 157, 228, 57,
-			32, 67, 0, 5, 194, 48, 144, 72, 9, 198, 49, 67, 143, 88, 241, 64, 67, 9, 198, 18, 113, 133, 157, 177, 64, 68, 9, 198, 12, 100,
-			246, 88, 241, 64, 67, 6, 195, 10, 212, 243, 66, 0, 10, 199, 10, 180, 251, 36, 243, 15, 16, 69, 0, 26, 4, 104, 116, 116, 112, 36,
-			57, 76, 47, 37, 12, 47, 37, 12, 6, 48, 37, 12, 10, 0, 81, 58, 47, 47, 32, 7, 196, 61, 51, 9, 12, 65, 6, 195, 46, 192,
-			113, 67, 6, 195, 31, 192, 85, 66, 0, 8, 197, 68, 18, 12, 60, 208, 66, 8, 197, 44, 19, 89, 36, 176, 66, 8, 197, 25, 2, 72,
-			60, 80, 67, 0, 9, 198, 128, 213, 17, 49, 66, 192, 67, 9, 198, 95, 194, 193, 20, 114, 96, 65, 6, 195, 164, 142, 195, 66, 9, 198,
-			45, 22, 195, 56, 146, 192, 66, 9, 198, 21, 22, 195, 56, 146, 192, 66, 6, 195, 8, 100, 243, 66, 0, 6, 195, 52, 18, 128, 72, 0,
-			7, 196, 79, 181, 201, 236, 67, 0, 8, 197, 77, 16, 85, 36, 176, 66, 8, 197, 73, 65, 71, 80, 176, 66, 8, 197, 68, 20, 147, 24,
-			112, 66, 8, 197, 67, 98, 1, 36, 176, 67, 8, 197, 157, 113, 131, 108, 80, 67, 0, 9, 198, 77, 16, 77, 12, 18, 128, 66, 9, 198,
-			52, 98, 15, 32, 242, 128, 67, 9, 198, 19, 98, 5, 60, 46, 192, 67, 6, 195, 10, 225, 147, 66, 0, 9, 198, 52, 146, 246, 17, 16,
-			85, 67, 6, 195, 36, 132, 236, 65, 10, 199, 9, 179, 4, 232, 245, 79, 8, 68, 0, 7, 196, 52, 21, 8, 236, 65, 6, 195, 19, 14,
-			237, 67, 0, 8, 197, 73, 64, 134, 45, 48, 66, 8, 197, 164, 92, 68, 61, 48, 65, 9, 198, 144, 33, 133, 164, 226, 75, 66, 8, 197,
-			44, 243, 111, 23, 192, 67, 9, 198, 20, 144, 66, 25, 50, 75, 68, 6, 195, 173, 179, 0, 66, 0, 15, 4, 95, 48, 77, 50, 65, 37,
-			55, 37, 6, 39, 50, 35, 0, 5, 194, 179, 128, 66, 9, 198, 44, 97, 6, 48, 43, 192, 65, 6, 195, 8, 241, 151, 66, 0, 16, 4,
-			95, 48, 77, 51, 65, 37, 55, 37, 6, 35, 34, 72, 35, 0, 10, 199, 168, 81, 143, 79, 179, 113, 180, 70, 0, 8, 196, 64, 244, 169,
-			20, 72, 23, 7, 196, 99, 166, 65, 84, 66, 0, 14, 4, 95, 48, 77, 49, 99, 6, 37, 55, 35, 72, 37, 0, 8, 197, 73, 178, 204,
-			25, 48, 66, 8, 197, 164, 142, 195, 5, 48, 67, 6, 195, 61, 59, 0, 65, 8, 197, 140, 179, 205, 25, 112, 65, 9, 198, 25, 11, 134,
-			65, 50, 75, 68, 8, 197, 4, 93, 75, 5, 48, 67, 0, 9, 198, 72, 98, 210, 5, 11, 128, 67, 6, 195, 68, 18, 179, 66, 9, 198,
-			46, 209, 91, 69, 179, 64, 67, 0, 9, 198, 75, 185, 207, 23, 211, 197, 69, 6, 195, 74, 220, 192, 66, 6, 195, 10, 220, 192, 66, 0,
-			9, 198, 91, 210, 72, 206, 83, 0, 68, 7, 196, 9, 66, 210, 240, 66, 0, 8, 197, 75, 19, 204, 60, 64, 67, 8, 197, 64, 99, 9,
-			46, 240, 67, 8, 197, 44, 25, 76, 60, 64, 67, 0, 9, 198, 88, 244, 240, 76, 244, 192, 67, 9, 198, 65, 180, 198, 64, 148, 128, 67,
-			0, 9, 198, 73, 62, 198, 61, 91, 141, 68, 10, 199, 66, 145, 82, 150, 164, 198, 48, 66, 0, 8, 196, 144, 180, 65, 40, 72, 23, 7,
-			196, 85, 68, 78, 240, 66, 11, 200, 52, 146, 246, 8, 147, 204, 60, 64, 69, 7, 196, 45, 68, 100, 32, 66, 7, 196, 36, 132, 9, 76,
-			65, 7, 196, 11, 162, 83, 204, 67, 0, 9, 198, 52, 146, 47, 73, 124, 0, 67, 9, 198, 45, 79, 148, 32, 197, 11, 67, 8, 197, 24,
-			179, 204, 60, 64, 67, 6, 195, 10, 219, 210, 66, 0, 9, 198, 95, 4, 212, 68, 156, 192, 68, 6, 195, 222, 67, 147, 66, 6, 195, 225,
-			50, 75, 66, 9, 198, 54, 242, 85, 25, 36, 192, 67, 0, 10, 199, 145, 4, 91, 73, 51, 137, 44, 65, 0, 7, 196, 73, 68, 201, 192,
-			67, 7, 196, 24, 180, 165, 32, 66, 7, 196, 232, 43, 70, 76, 67, 0, 8, 197, 92, 100, 6, 51, 16, 67, 9, 198, 84, 16, 145, 36,
-			187, 211, 67, 9, 198, 220, 80, 69, 28, 152, 0, 65, 8, 197, 44, 243, 80, 5, 32, 66, 9, 198, 16, 147, 100, 73, 50, 75, 67, 8,
-			197, 5, 66, 215, 39, 48, 68, 0, 6, 195, 160, 49, 135, 66, 6, 195, 47, 176, 239, 66, 0, 9, 198, 57, 242, 189, 45, 139, 241, 66,
-			0, 7, 196, 140, 212, 198, 28, 66, 7, 196, 47, 211, 137, 32, 66, 7, 196, 20, 99, 21, 196, 66, 0, 6, 195, 68, 25, 74, 66, 8,
-			197, 66, 149, 73, 45, 32, 66, 8, 197, 52, 240, 137, 87, 48, 65, 9, 198, 44, 194, 77, 5, 50, 75, 67, 8, 197, 8, 20, 147, 39,
-			48, 67, 0, 5, 194, 52, 144, 72, 0, 9, 198, 20, 149, 123, 193, 114, 109, 69, 10, 199, 4, 77, 130, 36, 243, 15, 16, 69, 0, 7,
-			196, 88, 148, 233, 92, 66, 11, 200, 73, 51, 205, 188, 240, 134, 79, 48, 69, 6, 195, 67, 160, 85, 66, 7, 196, 192, 150, 58, 196, 66,
-			7, 196, 9, 68, 75, 188, 66, 0, 0, 9, 198, 72, 19, 84, 68, 18, 128, 67, 6, 195, 66, 152, 211, 66, 9, 198, 60, 33, 140, 37,
-			34, 192, 67, 0, 10, 199, 72, 191, 79, 73, 51, 205, 236, 68, 10, 199, 64, 241, 80, 37, 35, 137, 44, 65, 0, 7, 196, 48, 244, 137,
-			204, 67, 0, 8, 197, 66, 208, 77, 80, 80, 67, 8, 197, 44, 17, 118, 168, 176, 67, 9, 198, 193, 53, 18, 36, 20, 147, 68, 0, 9,
-			198, 88, 244, 198, 48, 158, 192, 68, 9, 198, 64, 100, 207, 8, 242, 128, 67, 0, 10, 199, 99, 208, 129, 20, 123, 155, 44, 68, 10, 199,
-			20, 99, 115, 73, 52, 111, 76, 67, 0, 11, 200, 33, 176, 143, 76, 101, 142, 36, 176, 68, 7, 196, 175, 209, 70, 204, 68, 0, 8, 197,
-			20, 144, 66, 25, 48, 67, 8, 197, 12, 22, 112, 25, 112, 65, 0, 0, 9, 198, 66, 52, 206, 61, 99, 197, 67, 10, 199, 44, 16, 145,
-			36, 243, 6, 76, 68, 0, 6, 195, 84, 159, 69, 66, 11, 200, 67, 101, 75, 60, 210, 83, 25, 48, 68, 12, 201, 48, 147, 115, 4, 80,
-			69, 28, 152, 0, 67, 9, 198, 33, 176, 143, 48, 98, 250, 67, 0, 8, 197, 77, 16, 80, 25, 112, 66, 9, 198, 216, 84, 147, 15, 2,
-			75, 65, 8, 197, 65, 16, 82, 25, 112, 66, 8, 197, 44, 16, 177, 25, 48, 67, 8, 197, 9, 18, 75, 25, 48, 66, 0, 9, 198, 95,
-			177, 141, 204, 155, 64, 69, 0, 10, 199, 197, 33, 139, 76, 149, 201, 20, 68, 6, 195, 196, 20, 192, 66, 0, 9, 198, 216, 83, 197, 192,
-			93, 142, 68, 11, 200, 68, 17, 73, 60, 16, 179, 5, 48, 70, 0, 6, 195, 160, 61, 142, 66, 8, 197, 47, 178, 240, 24, 128, 67, 0,
-			9, 198, 64, 243, 6, 16, 20, 192, 67, 9, 198, 64, 20, 209, 36, 244, 192, 67, 9, 198, 47, 52, 144, 24, 180, 192, 66, 0, 0, 7,
-			196, 77, 68, 78, 240, 66, 7, 196, 61, 48, 137, 12, 65, 7, 196, 180, 219, 193, 88, 67, 0, 8, 197, 77, 18, 80, 140, 224, 66, 8,
-			197, 52, 17, 71, 80, 224, 66, 6, 195, 46, 208, 74, 66, 8, 197, 20, 240, 187, 54, 240, 65, 0, 9, 198, 44, 243, 80, 48, 244, 192,
-			66, 9, 198, 44, 243, 66, 196, 20, 192, 67, 0, 6, 195, 12, 98, 60, 66, 0, 7, 196, 87, 211, 109, 196, 67, 7, 196, 86, 249, 82,
-			76, 66, 7, 196, 20, 241, 39, 244, 65, 6, 195, 212, 18, 189, 67, 0, 9, 198, 64, 193, 141, 192, 226, 75, 65, 8, 197, 66, 51, 139,
-			79, 48, 66, 9, 198, 224, 242, 9, 92, 156, 251, 70, 9, 198, 160, 89, 207, 48, 226, 75, 68, 8, 197, 52, 148, 137, 207, 176, 68, 8,
-			197, 47, 50, 212, 69, 32, 66, 8, 197, 24, 180, 144, 165, 32, 66, 8, 197, 9, 243, 6, 79, 16, 67, 0, 9, 198, 52, 227, 196, 61,
-			131, 48, 67, 0, 0, 7, 195, 56, 146, 0, 72, 23, 7, 196, 66, 145, 39, 244, 65, 7, 196, 67, 160, 85, 196, 67, 7, 196, 36, 129,
-			39, 244, 65, 7, 196, 33, 176, 134, 92, 66, 0, 8, 197, 77, 16, 84, 51, 176, 65, 8, 197, 76, 105, 78, 81, 32, 65, 8, 197, 161,
-			68, 144, 25, 96, 67, 8, 197, 12, 18, 6, 51, 16, 67, 6, 195, 189, 80, 82, 66, 0, 5, 194, 72, 16, 72, 5, 194, 56, 144, 72,
-			6, 195, 4, 32, 83, 66, 0, 10, 199, 67, 100, 144, 236, 148, 198, 76, 68, 12, 201, 47, 164, 207, 86, 195, 205, 8, 18, 142, 69, 9,
-			198, 20, 147, 79, 61, 61, 69, 68, 0, 7, 196, 46, 144, 193, 76, 66, 7, 196, 44, 243, 73, 44, 66, 7, 196, 8, 18, 45, 76, 66,
-			0, 8, 197, 148, 35, 15, 36, 80, 67, 0, 6, 194, 184, 144, 72, 23, 6, 194, 172, 240, 72, 23, 9, 198, 81, 41, 66, 5, 146, 96,
-			66, 9, 198, 145, 18, 207, 76, 146, 192, 67, 0, 0, 7, 196, 75, 176, 134, 32, 66, 7, 196, 67, 212, 233, 76, 66, 7, 196, 45, 77,
-			145, 76, 66, 7, 196, 47, 170, 212, 48, 67, 7, 196, 29, 68, 100, 48, 66, 7, 196, 25, 81, 139, 76, 66, 0, 8, 197, 76, 101, 142,
-			36, 176, 66, 8, 197, 64, 243, 49, 60, 208, 67, 8, 197, 66, 217, 142, 36, 176, 65, 12, 201, 188, 100, 147, 24, 130, 79, 48, 241, 0,
-			70, 0, 9, 198, 64, 20, 207, 48, 241, 0, 67, 9, 198, 10, 218, 15, 48, 241, 0, 68, 0, 10, 199, 89, 64, 143, 73, 51, 137, 44,
-			67, 0, 6, 195, 52, 18, 189, 66, 7, 196, 44, 243, 24, 188, 66, 7, 196, 47, 176, 83, 196, 67, 0, 8, 197, 104, 145, 12, 25, 112,
-			66, 8, 197, 73, 77, 132, 5, 48, 67, 8, 197, 44, 62, 147, 25, 48, 66, 0, 0, 10, 199, 20, 99, 9, 44, 20, 198, 72, 68, 0,
-			7, 196, 164, 140, 221, 244, 67, 7, 196, 47, 160, 137, 20, 66, 6, 195, 20, 147, 197, 66, 0, 9, 198, 73, 3, 6, 76, 226, 75, 66,
-			8, 197, 52, 101, 240, 5, 48, 67, 9, 198, 52, 105, 85, 36, 130, 75, 68, 9, 198, 44, 243, 6, 72, 226, 75, 67, 9, 198, 36, 213,
-			14, 37, 49, 147, 68, 0, 0, 10, 199, 73, 64, 251, 192, 148, 198, 76, 69, 6, 195, 47, 193, 152, 66, 10, 199, 169, 34, 207, 32, 148,
-			198, 76, 68, 0, 12, 201, 65, 180, 117, 36, 132, 207, 96, 226, 75, 67, 7, 196, 64, 241, 70, 52, 66, 7, 196, 67, 177, 6, 48, 66,
-			7, 196, 140, 47, 111, 76, 67, 7, 196, 45, 79, 148, 32, 66, 7, 196, 16, 213, 41, 92, 66, 7, 196, 8, 244, 165, 56, 66, 7, 196,
-			189, 50, 68, 192, 67, 0, 8, 197, 87, 162, 82, 24, 160, 67, 12, 201, 80, 196, 209, 4, 210, 75, 217, 34, 248, 69, 0, 0, 0, 6,
-			195, 74, 241, 109, 66, 7, 196, 5, 60, 37, 76, 67, 0, 8, 197, 68, 18, 5, 24, 192, 66, 8, 197, 67, 98, 72, 212, 192, 67, 8,
-			197, 47, 165, 73, 60, 192, 67, 8, 197, 16, 243, 15, 18, 240, 67, 0, 9, 198, 65, 34, 86, 224, 20, 192, 67, 9, 198, 48, 98, 211,
-			244, 20, 192, 67, 9, 198, 47, 53, 76, 36, 180, 192, 66, 9, 198, 44, 243, 80, 189, 220, 192, 67, 6, 195, 24, 130, 75, 66, 6, 195,
-			9, 250, 75, 66, 0, 10, 199, 73, 179, 73, 100, 204, 9, 44, 66, 9, 198, 45, 66, 212, 69, 66, 0, 67, 0, 7, 196, 32, 17, 39,
-			244, 65, 0, 12, 201, 68, 17, 73, 61, 49, 140, 25, 92, 192, 70, 9, 198, 64, 243, 65, 34, 242, 75, 66, 8, 197, 66, 242, 233, 5,
-			32, 67, 0, 38, 3, 95, 194, 171, 55, 38, 4, 35, 84, 35, 15, 72, 84, 4, 39, 37, 50, 35, 15, 47, 34, 37, 4, 13, 81, 35,
-			55, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 0, 10, 199, 52, 21, 141, 81, 19, 20, 44, 67, 0, 12, 201, 96, 100, 252, 37, 177,
-			27, 48, 226, 75, 68, 7, 196, 66, 144, 198, 72, 66, 7, 196, 55, 62, 15, 48, 67, 7, 196, 28, 144, 198, 92, 66, 11, 200, 168, 81,
-			143, 76, 99, 6, 87, 48, 70, 7, 196, 188, 20, 207, 52, 67, 0, 24, 3, 95, 194, 166, 48, 34, 36, 49, 4, 13, 89, 50, 35, 47,
-			35, 15, 76, 36, 34, 47, 6, 35, 0, 12, 201, 48, 148, 251, 5, 53, 54, 12, 97, 64, 70, 8, 197, 28, 145, 12, 119, 208, 66, 6,
-			195, 23, 17, 46, 66, 0, 9, 198, 73, 59, 15, 60, 35, 112, 68, 0, 0, 6, 195, 78, 196, 177, 66, 6, 195, 52, 17, 253, 66, 7,
-			196, 48, 145, 14, 196, 66, 7, 196, 47, 57, 75, 76, 66, 0, 8, 197, 75, 30, 19, 36, 176, 67, 0, 9, 198, 66, 209, 153, 56, 146,
-			192, 65, 9, 198, 20, 148, 144, 189, 46, 192, 67, 0, 9, 198, 65, 50, 87, 24, 54, 197, 67, 9, 198, 67, 168, 205, 193, 55, 125, 68,
-			8, 197, 20, 53, 24, 51, 0, 66, 9, 198, 169, 113, 129, 20, 223, 45, 69, 10, 199, 8, 146, 195, 4, 84, 65, 76, 67, 0, 7, 196,
-			77, 67, 20, 52, 66, 7, 196, 67, 96, 137, 12, 65, 7, 196, 25, 34, 253, 76, 66, 7, 196, 8, 148, 35, 56, 66, 6, 195, 4, 33,
-			109, 66, 0, 12, 201, 65, 34, 86, 62, 251, 73, 76, 146, 192, 70, 9, 198, 52, 109, 197, 60, 34, 67, 67, 8, 197, 44, 253, 208, 4,
-			80, 67, 8, 197, 44, 20, 24, 80, 176, 66, 12, 201, 20, 243, 79, 81, 4, 102, 37, 49, 140, 68, 8, 197, 18, 49, 78, 36, 176, 66,
-			8, 197, 212, 94, 54, 212, 80, 68, 0, 15, 66, 73, 48, 89, 47, 39, 47, 6, 37, 50, 49, 37, 0, 24, 9, 198, 96, 148, 147, 56,
-			146, 192, 66, 9, 198, 172, 17, 70, 52, 146, 192, 68, 0, 10, 199, 161, 13, 139, 225, 43, 201, 44, 67, 0, 9, 198, 60, 194, 68, 61,
-			90, 78, 68, 11, 200, 24, 180, 139, 81, 18, 39, 60, 80, 68, 7, 196, 13, 180, 83, 224, 66, 7, 196, 189, 60, 201, 52, 67, 0, 8,
-			197, 164, 180, 253, 5, 48, 67, 9, 198, 54, 249, 76, 37, 49, 147, 68, 8, 197, 22, 196, 253, 5, 48, 67, 8, 197, 5, 49, 146, 149,
-			48, 67, 0, 9, 198, 99, 179, 143, 32, 99, 64, 67, 6, 195, 141, 81, 147, 66, 6, 195, 20, 144, 239, 66, 0, 0, 7, 196, 220, 197,
-			70, 28, 66, 7, 196, 145, 55, 233, 48, 67, 12, 201, 52, 227, 196, 61, 177, 27, 48, 226, 75, 67, 7, 196, 54, 49, 70, 28, 66, 7,
-			196, 52, 101, 239, 196, 67, 7, 196, 54, 241, 139, 192, 67, 0, 9, 198, 74, 80, 174, 37, 49, 147, 68, 8, 197, 44, 244, 147, 81, 16,
-			66, 8, 197, 16, 102, 70, 85, 48, 66, 0, 0, 6, 195, 87, 3, 204, 66, 6, 195, 156, 100, 128, 66, 0, 7, 196, 67, 96, 143, 40,
-			66, 7, 196, 66, 145, 70, 48, 66, 7, 196, 52, 241, 70, 52, 66, 6, 195, 44, 101, 109, 66, 7, 196, 44, 17, 70, 52, 66, 6, 195,
-			168, 135, 125, 66, 7, 196, 8, 17, 70, 52, 66, 0, 8, 197, 64, 243, 46, 24, 160, 67, 8, 197, 60, 36, 147, 164, 192, 66, 8, 197,
-			20, 101, 201, 54, 208, 67, 8, 197, 16, 99, 204, 60, 64, 67, 0, 9, 198, 16, 244, 144, 60, 92, 64, 67, 0, 9, 198, 13, 67, 133,
-			236, 188, 69, 65, 6, 195, 154, 244, 128, 66, 0, 7, 196, 52, 241, 70, 48, 66, 0, 8, 197, 87, 163, 65, 220, 224, 67, 0, 9, 198,
-			46, 208, 77, 9, 68, 64, 67, 6, 195, 4, 164, 111, 66, 0, 10, 199, 52, 20, 209, 39, 165, 129, 76, 68, 10, 199, 189, 50, 66, 36,
-			244, 201, 44, 69, 0, 7, 196, 88, 19, 84, 76, 66, 7, 196, 86, 245, 122, 204, 67, 7, 196, 221, 84, 212, 236, 65, 9, 198, 67, 100,
-			212, 11, 187, 210, 68, 7, 196, 64, 19, 84, 44, 66, 7, 196, 64, 17, 70, 28, 66, 0, 9, 198, 67, 100, 198, 74, 83, 147, 67, 8,
-			197, 44, 240, 85, 119, 208, 67, 0, 6, 195, 14, 209, 135, 66, 0, 10, 199, 23, 82, 139, 4, 81, 201, 128, 65, 10, 199, 8, 20, 139,
-			25, 48, 143, 48, 65, 0, 7, 196, 79, 2, 20, 88, 66, 7, 196, 149, 16, 83, 244, 67, 7, 196, 244, 156, 19, 240, 68, 12, 201, 24,
-			113, 146, 24, 83, 73, 96, 226, 75, 67, 7, 196, 9, 70, 77, 192, 66, 0, 12, 201, 73, 14, 205, 5, 51, 200, 60, 145, 64, 69, 8,
-			197, 55, 52, 176, 119, 208, 67, 6, 195, 37, 160, 86, 66, 9, 198, 19, 161, 123, 60, 34, 123, 69, 0, 9, 198, 45, 66, 204, 156, 241,
-			64, 67, 0, 10, 199, 92, 155, 231, 60, 95, 79, 20, 70, 10, 199, 44, 20, 1, 92, 148, 198, 76, 68, 0, 7, 196, 61, 48, 143, 40,
-			66, 7, 196, 32, 21, 163, 72, 66, 0, 8, 197, 65, 26, 211, 36, 176, 66, 8, 197, 55, 6, 70, 168, 176, 67, 9, 198, 189, 50, 80,
-			5, 32, 83, 68, 0, 0, 7, 195, 65, 178, 192, 72, 23, 0, 0, 8, 197, 77, 68, 19, 24, 112, 66, 8, 197, 73, 180, 54, 212, 80,
-			67, 8, 197, 64, 100, 147, 36, 176, 66, 9, 198, 24, 178, 9, 73, 60, 23, 67, 0, 9, 198, 54, 98, 15, 48, 98, 128, 67, 0, 6,
-			195, 90, 107, 192, 66, 0, 7, 196, 64, 243, 39, 196, 67, 7, 196, 64, 96, 198, 92, 66, 7, 196, 160, 209, 165, 48, 67, 7, 196, 32,
-			101, 147, 196, 66, 7, 196, 16, 241, 70, 28, 66, 7, 196, 8, 241, 70, 28, 66, 0, 0, 38, 3, 95, 194, 187, 116, 4, 35, 89, 50,
-			35, 15, 72, 84, 4, 39, 37, 50, 35, 15, 47, 34, 37, 4, 13, 81, 35, 55, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 0, 6,
-			195, 98, 187, 64, 66, 10, 199, 72, 52, 91, 89, 137, 198, 44, 67, 6, 195, 74, 107, 192, 66, 0, 7, 195, 66, 146, 0, 72, 23, 6,
-			195, 15, 188, 237, 67, 0, 8, 197, 88, 145, 81, 5, 48, 66, 8, 197, 72, 186, 237, 25, 112, 67, 6, 195, 52, 29, 206, 66, 0, 5,
-			194, 72, 96, 72, 9, 198, 88, 145, 118, 66, 51, 128, 67, 0, 10, 199, 88, 99, 9, 60, 68, 65, 84, 68, 10, 199, 68, 17, 73, 60,
-			68, 65, 84, 68, 10, 199, 47, 161, 73, 60, 68, 65, 84, 68, 10, 199, 44, 20, 9, 77, 72, 206, 76, 68, 10, 199, 17, 22, 205, 60,
-			244, 245, 20, 68, 0, 7, 196, 85, 65, 1, 72, 66, 7, 196, 72, 19, 84, 68, 66, 11, 200, 52, 100, 198, 244, 241, 17, 5, 80, 69,
-			7, 196, 47, 52, 246, 48, 66, 11, 200, 37, 36, 253, 36, 241, 17, 5, 80, 69, 7, 196, 13, 180, 72, 224, 66, 11, 200, 8, 144, 140,
-			36, 241, 17, 5, 80, 68, 0, 6, 195, 68, 149, 250, 65, 12, 201, 67, 97, 139, 76, 241, 79, 18, 127, 64, 68, 8, 197, 11, 101, 14,
-			196, 64, 65, 8, 197, 8, 147, 204, 60, 64, 67, 0, 9, 198, 76, 98, 232, 84, 100, 128, 67, 9, 198, 197, 62, 213, 24, 164, 128, 67,
-			6, 195, 19, 177, 111, 66, 9, 198, 233, 98, 80, 26, 49, 0, 68, 0, 10, 199, 64, 243, 20, 36, 82, 79, 76, 69, 9, 198, 19, 181,
-			14, 20, 149, 13, 66, 0, 7, 196, 99, 1, 6, 48, 66, 7, 196, 79, 179, 9, 44, 66, 7, 196, 72, 97, 70, 84, 66, 9, 198, 68,
-			17, 70, 76, 99, 0, 67, 9, 198, 64, 244, 140, 25, 2, 82, 67, 7, 196, 54, 241, 65, 76, 66, 7, 196, 45, 64, 251, 76, 66, 7,
-			196, 46, 244, 243, 236, 67, 7, 196, 21, 180, 77, 204, 66, 7, 196, 19, 177, 6, 84, 66, 7, 196, 154, 241, 58, 20, 67, 0, 8, 197,
-			86, 227, 204, 60, 64, 67, 8, 197, 66, 145, 76, 60, 64, 66, 8, 197, 20, 96, 134, 140, 224, 67, 8, 197, 180, 179, 214, 60, 192, 67,
-			6, 195, 180, 155, 210, 67, 0, 9, 198, 24, 180, 147, 70, 180, 192, 66, 0, 9, 198, 217, 51, 73, 73, 54, 209, 65, 6, 195, 175, 209,
-			64, 66, 0, 7, 196, 53, 66, 6, 40, 66, 7, 196, 47, 160, 143, 48, 66, 7, 196, 44, 17, 70, 76, 66, 7, 196, 172, 59, 111, 16,
-			67, 0, 6, 195, 72, 111, 0, 66, 8, 197, 66, 52, 147, 187, 16, 67, 8, 197, 140, 36, 65, 23, 208, 67, 8, 197, 45, 68, 139, 81,
-			32, 66, 8, 197, 22, 226, 71, 189, 32, 67, 0, 9, 198, 65, 180, 67, 192, 101, 192, 67, 6, 195, 66, 195, 51, 66, 0, 10, 199, 72,
-			184, 197, 4, 81, 201, 128, 65, 0, 7, 196, 91, 161, 84, 236, 65, 12, 201, 52, 242, 1, 40, 176, 69, 28, 152, 0, 66, 7, 196, 44,
-			20, 147, 244, 66, 0, 8, 197, 77, 27, 210, 87, 176, 66, 8, 197, 76, 243, 59, 189, 32, 67, 8, 197, 73, 69, 73, 45, 32, 66, 9,
-			198, 72, 100, 147, 71, 18, 75, 65, 9, 198, 44, 243, 70, 20, 155, 211, 68, 8, 197, 44, 243, 2, 5, 32, 66, 8, 197, 24, 208, 145,
-			39, 48, 67, 0, 6, 194, 56, 240, 72, 23, 0, 0, 0, 6, 195, 66, 57, 78, 66, 8, 197, 64, 99, 19, 24, 176, 66, 8, 197, 34,
-			110, 176, 36, 176, 66, 8, 197, 189, 50, 80, 60, 80, 67, 0, 6, 195, 55, 17, 123, 66, 9, 198, 183, 163, 65, 20, 114, 96, 66, 0,
-			0, 7, 196, 164, 62, 239, 72, 67, 7, 196, 66, 149, 163, 72, 66, 6, 195, 46, 209, 141, 66, 7, 196, 15, 162, 111, 76, 67, 7, 196,
-			8, 144, 187, 204, 67, 0, 8, 197, 67, 100, 176, 36, 176, 67, 16, 205, 61, 49, 152, 25, 36, 195, 192, 245, 118, 57, 57, 198, 92, 70,
-			8, 197, 52, 148, 147, 36, 176, 66, 8, 197, 55, 18, 77, 80, 208, 65, 8, 197, 52, 105, 76, 36, 176, 67, 8, 197, 168, 62, 137, 80,
-			208, 66, 8, 197, 172, 62, 137, 80, 208, 66, 0, 0, 9, 198, 76, 101, 142, 36, 181, 13, 65, 10, 199, 64, 193, 139, 72, 145, 35, 72,
-			67, 0, 7, 196, 165, 114, 101, 48, 67, 0, 6, 195, 84, 148, 238, 66, 8, 197, 73, 67, 21, 5, 48, 66, 8, 197, 67, 162, 83, 25,
-			48, 67, 9, 198, 16, 100, 165, 66, 113, 151, 66, 8, 197, 13, 16, 66, 25, 112, 66, 8, 197, 153, 59, 17, 5, 48, 67, 0, 9, 198,
-			73, 4, 113, 77, 223, 64, 66, 6, 195, 66, 177, 147, 66, 0, 0, 8, 196, 52, 97, 197, 80, 72, 23, 11, 200, 88, 145, 118, 73, 67,
-			21, 5, 48, 68, 7, 196, 74, 129, 198, 92, 66, 7, 196, 72, 19, 84, 56, 66, 6, 195, 68, 149, 241, 66, 7, 196, 32, 20, 140, 204,
-			66, 0, 8, 197, 73, 176, 145, 5, 48, 66, 9, 198, 73, 64, 147, 217, 2, 75, 67, 9, 198, 65, 18, 89, 24, 193, 151, 67, 0, 14,
-			66, 64, 192, 48, 55, 39, 91, 47, 6, 35, 47, 0, 24, 6, 195, 79, 90, 87, 66, 9, 198, 5, 36, 209, 4, 75, 192, 67, 0, 0,
-			7, 196, 45, 68, 73, 236, 67, 7, 196, 31, 164, 201, 236, 67, 11, 200, 24, 193, 139, 79, 97, 17, 5, 80, 68, 7, 196, 172, 62, 134,
-			48, 67, 0, 8, 197, 60, 34, 88, 4, 160, 67, 8, 197, 47, 210, 85, 24, 160, 67, 0, 9, 198, 92, 149, 123, 10, 52, 192, 65, 9,
-			198, 86, 181, 12, 76, 100, 192, 67, 9, 198, 64, 19, 85, 48, 100, 192, 66, 9, 198, 47, 52, 209, 6, 212, 192, 67, 6, 195, 8, 146,
-			51, 66, 0, 6, 195, 18, 61, 88, 66, 0, 11, 200, 66, 145, 80, 4, 130, 83, 24, 192, 66, 7, 196, 55, 62, 35, 56, 67, 7, 196,
-			7, 190, 35, 56, 68, 0, 8, 197, 67, 213, 198, 140, 224, 67, 8, 197, 58, 193, 65, 80, 224, 65, 8, 197, 32, 20, 147, 60, 160, 66,
-			9, 198, 34, 188, 248, 216, 98, 211, 69, 8, 197, 19, 161, 123, 60, 32, 67, 8, 197, 212, 83, 197, 24, 192, 67, 8, 197, 8, 19, 194,
-			4, 32, 67, 0, 9, 198, 197, 52, 73, 18, 244, 192, 67, 6, 195, 4, 47, 83, 66, 0, 10, 199, 73, 176, 233, 55, 3, 137, 44, 66,
-			0, 7, 196, 74, 129, 61, 196, 67, 7, 196, 60, 37, 143, 20, 66, 7, 196, 140, 142, 134, 76, 67, 7, 196, 11, 169, 198, 92, 65, 0,
-			6, 195, 57, 251, 210, 66, 8, 197, 52, 98, 44, 233, 0, 67, 8, 197, 46, 224, 193, 79, 176, 65, 8, 197, 17, 18, 77, 119, 208, 66,
-			9, 198, 212, 163, 137, 44, 198, 203, 67, 8, 197, 8, 99, 39, 141, 32, 67, 0, 9, 198, 72, 214, 209, 20, 97, 192, 66, 9, 198, 53,
-			16, 72, 156, 101, 192, 65, 9, 198, 140, 225, 68, 68, 21, 64, 66, 9, 198, 46, 210, 68, 68, 21, 64, 67, 9, 198, 13, 177, 12, 236,
-			241, 64, 67, 0, 10, 199, 17, 16, 83, 37, 38, 9, 128, 65, 0, 7, 196, 52, 97, 70, 92, 66, 7, 196, 18, 61, 105, 32, 67, 0,
-			6, 195, 84, 29, 206, 66, 8, 197, 36, 212, 20, 49, 32, 66, 8, 197, 4, 36, 151, 25, 32, 66, 0, 5, 194, 72, 144, 72, 9, 198,
-			72, 180, 73, 64, 101, 192, 66, 9, 198, 64, 148, 207, 52, 101, 192, 65, 6, 195, 67, 169, 175, 67, 9, 198, 16, 16, 182, 12, 101, 192,
-			65, 9, 198, 13, 16, 71, 180, 101, 192, 67, 0, 6, 195, 149, 53, 12, 66, 9, 198, 197, 62, 228, 92, 156, 237, 70, 0, 7, 196, 88,
-			243, 79, 76, 66, 7, 196, 88, 147, 73, 44, 66, 7, 196, 84, 20, 148, 48, 66, 7, 196, 221, 3, 227, 56, 67, 6, 195, 165, 53, 25,
-			66, 7, 196, 61, 50, 9, 12, 65, 0, 8, 197, 64, 22, 109, 108, 176, 67, 0, 9, 198, 84, 242, 187, 15, 178, 192, 65, 0, 10, 199,
-			67, 195, 211, 25, 99, 137, 44, 68, 0, 11, 200, 65, 180, 117, 53, 182, 48, 36, 176, 69, 7, 196, 67, 212, 236, 180, 67, 6, 195, 50,
-			197, 13, 66, 7, 196, 44, 20, 137, 236, 67, 0, 8, 197, 84, 197, 61, 36, 80, 67, 8, 197, 52, 101, 140, 24, 208, 66, 8, 197, 45,
-			68, 89, 80, 208, 66, 8, 197, 47, 160, 77, 86, 224, 67, 0, 6, 195, 47, 209, 115, 66, 6, 195, 37, 161, 151, 66, 0, 6, 195, 79,
-			203, 192, 66, 9, 198, 73, 67, 21, 4, 210, 69, 67, 10, 199, 68, 17, 73, 179, 53, 251, 76, 69, 10, 199, 64, 20, 209, 39, 165, 129,
-			76, 68, 6, 195, 47, 219, 64, 66, 0, 7, 196, 64, 98, 211, 196, 66, 7, 196, 212, 94, 1, 20, 67, 0, 8, 197, 65, 67, 139, 79,
-			192, 66, 8, 197, 56, 144, 198, 51, 192, 67, 8, 197, 52, 21, 73, 61, 48, 67, 8, 197, 25, 2, 83, 25, 48, 67, 0, 6, 195, 44,
-			246, 47, 66, 9, 198, 46, 227, 196, 68, 19, 64, 67, 9, 198, 193, 51, 205, 60, 195, 196, 68, 0, 6, 195, 87, 27, 64, 66, 10, 199,
-			54, 242, 85, 25, 41, 78, 76, 68, 0, 11, 200, 80, 226, 67, 237, 34, 83, 25, 48, 69, 11, 200, 73, 1, 151, 38, 210, 83, 25, 48,
-			69, 6, 195, 46, 226, 77, 66, 0, 8, 197, 88, 18, 163, 41, 80, 66, 9, 198, 52, 20, 139, 232, 198, 203, 67, 8, 197, 24, 194, 75,
-			75, 192, 67, 8, 197, 20, 144, 82, 47, 128, 67, 0, 9, 198, 36, 36, 73, 100, 147, 64, 67, 0, 6, 195, 46, 214, 208, 66, 0, 7,
-			196, 76, 99, 70, 48, 66, 7, 196, 64, 241, 54, 52, 66, 7, 196, 67, 171, 70, 48, 67, 7, 196, 64, 20, 20, 68, 66, 6, 195, 55,
-			23, 125, 66, 0, 0, 9, 198, 68, 146, 207, 100, 100, 192, 67, 9, 198, 141, 28, 68, 61, 92, 192, 68, 9, 198, 44, 25, 80, 80, 196,
-			192, 67, 0, 0, 7, 196, 96, 100, 9, 44, 66, 7, 196, 148, 180, 201, 44, 66, 7, 196, 47, 53, 251, 76, 66, 6, 195, 46, 214, 213,
-			66, 7, 196, 8, 98, 193, 72, 66, 7, 196, 153, 59, 35, 12, 67, 0, 8, 197, 45, 18, 82, 148, 192, 66, 0, 9, 198, 72, 19, 79,
-			48, 100, 192, 67, 9, 198, 60, 211, 137, 9, 68, 128, 65, 9, 198, 52, 146, 246, 128, 137, 252, 69, 6, 195, 19, 171, 211, 66, 0, 6,
-			195, 98, 182, 204, 66, 10, 199, 75, 180, 201, 84, 146, 193, 76, 68, 10, 199, 72, 98, 212, 56, 83, 205, 236, 68, 10, 199, 67, 99, 73,
-			100, 204, 9, 44, 66, 9, 198, 44, 243, 15, 21, 21, 13, 67, 10, 199, 44, 243, 6, 45, 114, 115, 236, 69, 10, 199, 24, 180, 151, 193,
-			52, 73, 44, 67, 0, 7, 196, 67, 2, 238, 236, 65, 6, 195, 144, 82, 61, 66, 6, 195, 44, 243, 113, 66, 0, 9, 198, 77, 27, 210,
-			67, 171, 211, 67, 6, 195, 44, 100, 186, 65, 0, 9, 198, 60, 211, 196, 68, 21, 64, 67, 9, 198, 52, 105, 76, 60, 145, 64, 68, 9,
-			198, 8, 147, 196, 68, 21, 64, 67, 0, 10, 199, 44, 226, 68, 60, 240, 141, 192, 68, 6, 195, 188, 241, 64, 66, 0, 7, 196, 64, 146,
-			198, 76, 66, 7, 196, 197, 62, 198, 72, 67, 7, 196, 10, 208, 82, 76, 66, 0, 9, 198, 85, 67, 139, 92, 156, 251, 68, 8, 197, 79,
-			180, 48, 79, 16, 67, 8, 197, 64, 241, 78, 61, 32, 66, 8, 197, 67, 162, 198, 79, 16, 67, 8, 197, 67, 160, 69, 177, 32, 67, 12,
-			201, 48, 98, 210, 36, 179, 196, 68, 21, 64, 68, 8, 197, 9, 179, 4, 235, 16, 65, 0, 5, 194, 76, 144, 72, 5, 194, 80, 112, 72,
-			6, 194, 64, 240, 72, 23, 9, 198, 5, 36, 251, 60, 145, 64, 68, 0, 9, 198, 22, 209, 139, 227, 109, 69, 69, 0, 7, 196, 81, 140,
-			9, 44, 67, 7, 196, 149, 2, 87, 236, 67, 7, 196, 165, 94, 193, 76, 67, 7, 196, 66, 50, 193, 76, 66, 6, 195, 67, 165, 237, 66,
-			7, 196, 47, 53, 251, 56, 66, 0, 8, 197, 85, 179, 133, 108, 176, 66, 8, 197, 77, 245, 76, 24, 176, 66, 8, 197, 77, 180, 77, 108,
-			176, 66, 8, 197, 65, 18, 75, 140, 80, 66, 8, 197, 66, 126, 240, 36, 176, 66, 9, 198, 44, 193, 144, 76, 243, 111, 67, 8, 197, 180,
-			81, 150, 36, 80, 67, 0, 0, 6, 195, 87, 14, 192, 66, 0, 7, 196, 66, 107, 137, 204, 68, 7, 196, 53, 177, 105, 92, 66, 6, 195,
-			47, 209, 141, 66, 11, 200, 13, 177, 12, 27, 81, 125, 60, 80, 69, 7, 196, 212, 94, 15, 40, 67, 7, 196, 8, 99, 44, 244, 67, 0,
-			26, 3, 95, 208, 142, 39, 71, 34, 4, 35, 47, 36, 50, 15, 40, 72, 37, 84, 6, 37, 47, 36, 55, 36, 50, 0, 7, 2, 95, 3,
-			84, 13, 0, 12, 201, 99, 179, 143, 11, 212, 129, 20, 114, 96, 67, 8, 197, 47, 49, 131, 108, 80, 67, 9, 198, 21, 64, 140, 36, 176,
-			83, 67, 0, 28, 3, 95, 209, 151, 39, 71, 34, 4, 35, 47, 36, 50, 15, 84, 13, 48, 34, 39, 89, 6, 37, 47, 36, 55, 36, 50,
-			0, 0, 6, 2, 95, 1, 35, 0, 10, 199, 52, 97, 79, 20, 240, 137, 12, 67, 6, 195, 190, 211, 196, 67, 0, 6, 2, 95, 6, 36,
-			0, 11, 200, 72, 49, 147, 157, 180, 83, 24, 112, 68, 6, 195, 166, 162, 61, 67, 7, 196, 56, 243, 65, 20, 66, 7, 196, 10, 242, 198,
-			76, 66, 0, 8, 197, 89, 64, 166, 25, 112, 67, 6, 195, 87, 17, 146, 66, 8, 197, 60, 37, 131, 5, 48, 66, 0, 12, 3, 95, 209,
-			147, 83, 55, 39, 34, 37, 50, 0, 7, 2, 95, 4, 81, 13, 0, 9, 198, 72, 147, 80, 76, 243, 64, 66, 6, 195, 46, 210, 239, 66,
-			9, 198, 19, 17, 139, 60, 195, 196, 68, 9, 198, 168, 81, 143, 86, 227, 64, 68, 6, 195, 8, 145, 115, 66, 0, 6, 195, 149, 27, 192,
-			66, 6, 195, 144, 195, 196, 66, 6, 195, 55, 31, 64, 66, 0, 8, 196, 73, 13, 147, 36, 72, 23, 7, 196, 79, 99, 6, 40, 66, 7,
-			196, 72, 20, 20, 56, 66, 0, 14, 2, 95, 10, 6, 37, 49, 34, 4, 35, 47, 49, 39, 0, 8, 197, 87, 178, 66, 61, 48, 65, 8,
-			197, 67, 98, 212, 217, 16, 67, 8, 197, 65, 16, 89, 25, 112, 66, 8, 197, 67, 160, 80, 25, 48, 67, 8, 197, 44, 24, 21, 25, 48,
-			67, 8, 197, 180, 19, 113, 81, 48, 68, 0, 6, 2, 95, 9, 37, 0, 9, 198, 88, 245, 77, 233, 155, 64, 65, 9, 198, 84, 146, 9,
-			60, 195, 196, 68, 9, 198, 244, 226, 83, 60, 195, 196, 68, 0, 6, 195, 11, 2, 49, 66, 0, 0, 7, 196, 75, 17, 118, 52, 66, 7,
-			196, 45, 64, 137, 44, 66, 0, 8, 197, 76, 99, 204, 60, 64, 67, 0, 9, 198, 45, 44, 15, 84, 240, 128, 67, 9, 198, 20, 99, 9,
-			76, 99, 0, 65, 0, 6, 195, 144, 76, 192, 66, 6, 195, 168, 140, 192, 66, 0, 7, 2, 95, 18, 89, 13, 0, 11, 200, 96, 100, 195,
-			109, 20, 213, 198, 208, 68, 7, 196, 66, 147, 73, 236, 67, 7, 196, 5, 81, 139, 76, 66, 0, 8, 197, 52, 245, 137, 46, 240, 67, 0,
-			9, 198, 25, 34, 201, 52, 244, 128, 67, 9, 198, 20, 148, 252, 4, 208, 128, 67, 0, 10, 199, 84, 193, 132, 52, 20, 201, 44, 67, 10,
-			199, 64, 241, 80, 245, 70, 9, 44, 65, 9, 198, 20, 98, 15, 23, 219, 211, 68, 0, 7, 196, 79, 180, 201, 64, 66, 7, 196, 44, 194,
-			82, 232, 65, 7, 196, 24, 195, 65, 32, 66, 0, 9, 198, 73, 180, 87, 24, 49, 133, 67, 0, 6, 2, 95, 20, 40, 0, 9, 198, 5,
-			3, 210, 79, 101, 64, 67, 0, 10, 199, 88, 193, 130, 60, 137, 143, 20, 68, 10, 199, 72, 49, 147, 60, 82, 79, 20, 68, 0, 7, 196,
-			92, 146, 204, 204, 66, 6, 195, 28, 100, 243, 66, 7, 196, 11, 2, 15, 48, 66, 0, 8, 197, 68, 17, 73, 81, 32, 65, 6, 195, 19,
-			179, 202, 66, 0, 9, 198, 52, 97, 1, 91, 181, 192, 67, 0, 6, 195, 55, 162, 64, 72, 9, 198, 76, 101, 142, 177, 16, 83, 67, 9,
-			198, 72, 49, 147, 48, 243, 123, 67, 9, 198, 140, 164, 205, 61, 50, 67, 65, 0, 7, 196, 74, 226, 75, 204, 67, 7, 196, 15, 160, 250,
-			196, 65, 7, 196, 5, 37, 109, 76, 66, 7, 196, 180, 146, 58, 196, 68, 0, 8, 197, 44, 243, 15, 36, 80, 67, 8, 197, 25, 129, 141,
-			36, 176, 67, 0, 9, 198, 73, 62, 1, 20, 114, 96, 65, 9, 198, 64, 246, 129, 20, 114, 96, 65, 9, 198, 53, 69, 101, 20, 114, 96,
-			65, 9, 198, 33, 176, 143, 8, 243, 0, 67, 9, 198, 31, 180, 195, 192, 146, 192, 65, 0, 0, 13, 2, 95, 34, 49, 35, 84, 6, 37,
-			76, 49, 37, 0, 7, 196, 87, 99, 147, 204, 66, 6, 195, 51, 194, 75, 66, 7, 196, 16, 96, 196, 240, 66, 7, 196, 14, 222, 201, 188,
-			68, 6, 195, 8, 25, 83, 66, 6, 195, 10, 242, 251, 66, 9, 198, 5, 36, 246, 48, 241, 0, 67, 0, 16, 2, 95, 33, 40, 72, 37,
-			84, 6, 37, 47, 36, 55, 36, 50, 0, 8, 197, 73, 244, 83, 80, 176, 66, 12, 201, 66, 145, 89, 25, 36, 195, 192, 146, 192, 66, 9,
-			198, 66, 244, 207, 17, 16, 85, 67, 8, 197, 49, 73, 16, 232, 176, 65, 0, 9, 198, 86, 196, 147, 236, 158, 192, 68, 6, 195, 164, 191,
-			69, 66, 9, 198, 44, 149, 99, 20, 114, 96, 65, 0, 14, 2, 95, 39, 35, 48, 39, 89, 47, 34, 6, 39, 83, 0, 10, 199, 74, 48,
-			224, 56, 245, 79, 8, 68, 10, 199, 72, 99, 6, 45, 114, 115, 236, 69, 6, 195, 50, 203, 64, 66, 10, 199, 21, 180, 117, 20, 240, 137,
-			12, 67, 6, 195, 10, 251, 192, 66, 0, 15, 2, 95, 38, 35, 65, 48, 36, 34, 89, 6, 35, 50, 47, 0, 6, 195, 56, 150, 111, 66,
-			7, 196, 11, 160, 148, 56, 66, 0, 8, 197, 73, 67, 37, 145, 48, 67, 8, 197, 74, 226, 75, 5, 48, 67, 8, 197, 67, 100, 198, 73,
-			48, 66, 8, 197, 67, 160, 89, 81, 48, 67, 0, 6, 195, 140, 133, 17, 66, 9, 198, 45, 22, 196, 60, 143, 64, 67, 0, 6, 195, 46,
-			107, 64, 66, 0, 7, 196, 96, 147, 89, 240, 66, 11, 200, 47, 52, 209, 5, 80, 68, 61, 48, 68, 7, 196, 25, 145, 140, 204, 67, 7,
-			196, 16, 235, 143, 96, 66, 0, 18, 2, 95, 41, 116, 4, 35, 89, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 8, 197, 89, 16, 66,
-			165, 112, 66, 0, 18, 2, 95, 40, 55, 38, 6, 35, 84, 35, 15, 89, 49, 6, 39, 71, 35, 0, 9, 198, 87, 212, 141, 4, 127, 64,
-			67, 9, 198, 24, 180, 147, 236, 159, 64, 68, 9, 198, 5, 36, 246, 56, 243, 64, 67, 0, 0, 11, 2, 95, 46, 47, 6, 39, 76, 49,
-			35, 0, 7, 196, 92, 146, 204, 224, 66, 7, 196, 88, 244, 198, 48, 66, 6, 195, 75, 206, 0, 66, 7, 196, 70, 181, 17, 72, 66, 7,
-			196, 52, 101, 148, 68, 66, 0, 10, 2, 95, 45, 47, 37, 34, 4, 36, 0, 8, 197, 160, 189, 140, 60, 64, 67, 8, 197, 8, 20, 134,
-			40, 224, 66, 0, 14, 2, 95, 44, 88, 35, 48, 36, 47, 6, 35, 57, 35, 0, 9, 198, 48, 98, 210, 36, 188, 192, 67, 9, 198, 5,
-			52, 73, 9, 68, 192, 67, 9, 198, 188, 67, 15, 84, 240, 128, 67, 0, 9, 2, 95, 51, 47, 34, 6, 37, 0, 6, 195, 34, 188, 192,
-			66, 6, 195, 30, 220, 192, 66, 10, 199, 17, 27, 197, 88, 244, 198, 48, 67, 0, 9, 2, 95, 50, 72, 84, 6, 36, 0, 7, 196, 64,
-			100, 147, 184, 66, 9, 198, 45, 16, 82, 59, 130, 82, 67, 7, 196, 46, 242, 66, 180, 67, 7, 196, 32, 19, 65, 88, 66, 7, 196, 24,
-			208, 74, 48, 66, 7, 196, 8, 241, 212, 68, 66, 0, 10, 2, 95, 49, 36, 72, 50, 6, 39, 0, 8, 197, 81, 99, 194, 60, 192, 67,
-			8, 197, 64, 148, 139, 80, 224, 66, 8, 197, 8, 20, 147, 80, 224, 66, 0, 10, 2, 95, 48, 50, 6, 40, 64, 35, 0, 6, 195, 64,
-			99, 49, 66, 9, 198, 44, 25, 81, 32, 148, 128, 65, 0, 11, 2, 95, 55, 89, 6, 36, 72, 36, 65, 0, 9, 198, 73, 99, 227, 73,
-			50, 75, 67, 6, 195, 55, 171, 48, 67, 0, 10, 2, 95, 54, 91, 6, 36, 89, 47, 0, 7, 196, 76, 147, 80, 188, 66, 7, 196, 72,
-			19, 70, 92, 66, 7, 196, 66, 52, 198, 28, 66, 7, 196, 197, 62, 195, 180, 67, 7, 196, 172, 59, 230, 76, 67, 0, 9, 2, 95, 53,
-			48, 6, 36, 47, 0, 9, 198, 76, 96, 83, 216, 49, 133, 68, 8, 197, 68, 18, 4, 159, 208, 65, 8, 197, 64, 243, 9, 19, 48, 67,
-			8, 197, 21, 179, 4, 81, 128, 66, 0, 12, 2, 95, 52, 76, 6, 36, 47, 37, 34, 37, 0, 0, 23, 2, 95, 59, 47, 4, 39, 76,
-			49, 35, 15, 37, 15, 88, 35, 48, 36, 47, 6, 35, 57, 35, 0, 10, 199, 61, 89, 76, 52, 243, 15, 16, 68, 0, 15, 2, 95, 58,
-			72, 84, 40, 36, 47, 6, 39, 76, 37, 36, 0, 11, 200, 28, 99, 6, 32, 240, 134, 79, 48, 69, 0, 11, 2, 95, 57, 72, 6, 36,
-			84, 36, 47, 0, 8, 197, 66, 149, 123, 189, 32, 67, 8, 197, 67, 2, 87, 187, 16, 68, 8, 197, 66, 242, 75, 119, 208, 67, 8, 197,
-			44, 243, 80, 165, 32, 66, 8, 197, 14, 49, 15, 55, 176, 67, 0, 10, 2, 95, 56, 6, 39, 89, 36, 65, 0, 6, 195, 8, 22, 129,
-			66, 0, 18, 2, 95, 63, 84, 13, 48, 34, 39, 89, 6, 37, 47, 36, 55, 36, 50, 0, 10, 199, 52, 193, 139, 60, 137, 143, 20, 68,
-			10, 199, 8, 22, 73, 8, 242, 20, 44, 68, 0, 16, 2, 95, 62, 48, 39, 15, 81, 39, 55, 38, 6, 35, 65, 39, 0, 7, 196, 164,
-			228, 201, 236, 67, 6, 195, 67, 192, 83, 66, 7, 196, 176, 18, 9, 204, 68, 7, 196, 44, 243, 65, 76, 66, 7, 196, 44, 241, 70, 196,
-			67, 9, 198, 36, 81, 143, 48, 241, 0, 68, 7, 196, 20, 243, 65, 76, 66, 0, 6, 195, 78, 197, 0, 66, 8, 197, 65, 18, 72, 144,
-			176, 65, 8, 197, 47, 98, 207, 22, 224, 67, 8, 197, 17, 16, 66, 24, 112, 66, 8, 197, 180, 187, 79, 36, 80, 68, 0, 14, 2, 95,
-			60, 48, 39, 15, 65, 6, 35, 55, 49, 39, 0, 6, 195, 79, 188, 0, 66, 9, 198, 32, 99, 48, 97, 66, 192, 67, 0, 10, 199, 44,
-			243, 80, 192, 82, 84, 52, 66, 6, 195, 23, 30, 128, 65, 0, 11, 200, 24, 193, 139, 79, 100, 54, 212, 80, 69, 0, 9, 198, 95, 18,
-			207, 17, 16, 85, 67, 9, 198, 73, 124, 15, 17, 16, 85, 67, 9, 198, 73, 60, 15, 17, 16, 85, 67, 9, 198, 64, 100, 147, 37, 114,
-			69, 67, 0, 0, 6, 195, 212, 187, 64, 66, 0, 7, 196, 148, 165, 84, 56, 66, 6, 195, 72, 149, 115, 66, 7, 196, 52, 146, 246, 8,
-			66, 7, 196, 49, 67, 113, 180, 67, 7, 196, 48, 100, 198, 28, 66, 7, 196, 46, 52, 157, 244, 66, 7, 196, 5, 51, 6, 76, 66, 7,
-			196, 175, 209, 93, 244, 67, 0, 8, 197, 165, 36, 6, 45, 48, 66, 8, 197, 46, 163, 147, 25, 48, 66, 8, 197, 5, 36, 6, 45, 48,
-			66, 0, 0, 10, 199, 77, 16, 80, 24, 131, 201, 20, 68, 6, 195, 148, 43, 192, 66, 6, 195, 144, 75, 192, 66, 6, 195, 48, 97, 48,
-			66, 9, 198, 44, 20, 134, 76, 245, 115, 68, 0, 7, 196, 67, 9, 68, 204, 67, 0, 8, 197, 72, 191, 66, 81, 48, 66, 0, 11, 66,
-			80, 192, 40, 55, 37, 117, 35, 0, 24, 9, 198, 19, 179, 111, 61, 91, 128, 68, 0, 9, 4, 95, 226, 128, 161, 21, 0, 10, 6, 195,
-			4, 64, 64, 66, 0, 9, 4, 95, 226, 128, 160, 21, 0, 10, 7, 196, 80, 226, 119, 56, 67, 7, 196, 64, 241, 66, 244, 66, 7, 196,
-			52, 244, 198, 48, 66, 7, 196, 44, 244, 198, 48, 66, 7, 196, 44, 19, 73, 204, 67, 6, 195, 46, 107, 123, 67, 9, 198, 25, 2, 83,
-			68, 21, 174, 68, 7, 196, 20, 100, 175, 76, 66, 0, 8, 197, 74, 83, 137, 60, 192, 67, 0, 18, 4, 95, 226, 128, 166, 65, 50, 39,
-			81, 39, 47, 6, 39, 76, 37, 36, 0, 9, 198, 81, 4, 102, 37, 49, 140, 66, 9, 198, 66, 145, 73, 44, 20, 192, 67, 9, 198, 20,
-			99, 108, 68, 20, 192, 67, 9, 198, 8, 102, 65, 52, 99, 0, 67, 6, 195, 234, 241, 253, 67, 9, 198, 189, 50, 83, 177, 44, 64, 68,
-			0, 10, 199, 161, 34, 248, 61, 35, 137, 44, 66, 10, 199, 36, 132, 17, 152, 148, 198, 48, 66, 6, 195, 233, 156, 64, 66, 0, 7, 196,
-			76, 244, 198, 52, 66, 7, 196, 64, 100, 198, 48, 66, 6, 195, 47, 97, 135, 66, 7, 196, 44, 19, 204, 196, 67, 6, 195, 5, 34, 251,
-			66, 0, 8, 197, 88, 147, 73, 46, 208, 67, 8, 197, 64, 241, 77, 60, 192, 66, 8, 197, 55, 178, 69, 38, 240, 68, 12, 201, 13, 177,
-			12, 25, 98, 69, 68, 20, 192, 68, 0, 9, 198, 68, 18, 3, 68, 20, 192, 66, 13, 202, 64, 241, 80, 164, 84, 134, 20, 20, 198, 48,
-			65, 9, 198, 197, 91, 147, 68, 20, 192, 67, 0, 6, 195, 96, 98, 72, 66, 0, 7, 196, 65, 179, 40, 28, 66, 7, 196, 52, 146, 246,
-			56, 66, 7, 196, 52, 100, 198, 28, 66, 7, 196, 8, 99, 79, 48, 66, 7, 196, 232, 16, 137, 128, 66, 0, 8, 197, 147, 97, 120, 37,
-			32, 68, 8, 197, 52, 146, 246, 87, 48, 67, 8, 197, 188, 20, 236, 75, 16, 68, 0, 0, 7, 195, 74, 145, 64, 72, 23, 29, 2, 95,
-			91, 55, 38, 4, 35, 84, 35, 15, 49, 84, 35, 72, 34, 4, 35, 47, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 9, 198, 72, 149,
-			110, 37, 50, 75, 68, 6, 195, 173, 114, 72, 66, 0, 6, 195, 87, 160, 115, 67, 11, 200, 10, 209, 147, 52, 18, 146, 79, 208, 66, 0,
-			18, 4, 95, 226, 128, 147, 49, 4, 13, 89, 39, 15, 47, 37, 34, 6, 36, 0, 9, 198, 52, 20, 140, 227, 109, 69, 68, 8, 197, 21,
-			64, 140, 119, 208, 66, 8, 197, 175, 100, 147, 37, 96, 67, 8, 197, 153, 51, 194, 81, 32, 67, 0, 13, 202, 65, 34, 86, 61, 82, 72,
-			36, 243, 15, 16, 70, 0, 18, 2, 95, 95, 72, 4, 39, 55, 50, 35, 15, 76, 36, 34, 47, 6, 35, 0, 10, 199, 164, 228, 196, 192,
-			243, 15, 16, 68, 0, 6, 195, 130, 81, 47, 67, 6, 195, 34, 210, 67, 65, 0, 29, 2, 95, 93, 116, 4, 35, 89, 50, 35, 15, 49,
-			84, 35, 72, 34, 4, 35, 47, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 8, 197, 8, 249, 78, 36, 176, 67, 0, 9, 198, 78, 146,
-			3, 192, 146, 192, 65, 0, 9, 198, 77, 244, 75, 60, 18, 0, 67, 6, 195, 150, 54, 64, 66, 6, 195, 160, 86, 196, 66, 9, 198, 8,
-			148, 148, 49, 80, 83, 67, 0, 19, 4, 95, 226, 128, 148, 72, 4, 13, 55, 81, 39, 15, 47, 37, 34, 6, 36, 0, 9, 198, 91, 99,
-			143, 48, 241, 0, 67, 7, 196, 64, 100, 18, 196, 66, 7, 196, 60, 36, 73, 12, 65, 7, 196, 60, 36, 65, 76, 66, 7, 196, 32, 21,
-			186, 196, 67, 9, 198, 9, 180, 72, 204, 241, 0, 67, 0, 8, 197, 65, 18, 72, 36, 48, 65, 8, 197, 66, 148, 147, 36, 112, 66, 8,
-			197, 8, 99, 19, 108, 176, 66, 8, 197, 4, 36, 148, 68, 80, 66, 0, 9, 2, 95, 96, 81, 34, 35, 83, 0, 9, 198, 77, 68, 205,
-			188, 146, 192, 65, 9, 198, 23, 130, 82, 56, 146, 192, 65, 0, 10, 199, 72, 191, 79, 73, 51, 137, 44, 65, 10, 199, 65, 16, 66, 108,
-			193, 58, 196, 66, 10, 199, 46, 148, 15, 73, 51, 137, 44, 65, 6, 195, 47, 219, 192, 66, 0, 6, 195, 88, 16, 187, 66, 7, 196, 64,
-			243, 80, 204, 66, 6, 195, 145, 101, 19, 66, 0, 8, 197, 85, 68, 75, 25, 48, 66, 8, 197, 67, 178, 82, 47, 128, 67, 8, 197, 153,
-			51, 210, 79, 128, 67, 0, 6, 195, 97, 64, 237, 66, 6, 195, 64, 102, 45, 66, 6, 195, 55, 166, 109, 66, 6, 195, 17, 72, 217, 66,
-			0, 10, 199, 73, 1, 139, 79, 100, 139, 224, 67, 9, 198, 64, 100, 6, 48, 226, 75, 67, 10, 199, 24, 193, 139, 79, 100, 139, 224, 68,
-			9, 198, 23, 48, 66, 244, 226, 75, 66, 0, 7, 196, 48, 146, 221, 244, 66, 7, 196, 44, 20, 198, 76, 66, 7, 196, 10, 196, 157, 244,
-			66, 0, 8, 197, 73, 58, 76, 25, 112, 66, 8, 197, 72, 193, 144, 25, 112, 66, 8, 197, 68, 18, 19, 213, 16, 66, 8, 197, 8, 241,
-			1, 149, 144, 67, 8, 197, 188, 98, 197, 61, 48, 67, 0, 6, 194, 96, 96, 72, 23, 9, 198, 68, 17, 73, 61, 111, 64, 68, 9, 198,
-			47, 52, 246, 49, 223, 64, 67, 0, 10, 199, 161, 68, 209, 180, 148, 198, 76, 69, 0, 7, 196, 84, 100, 147, 204, 66, 7, 196, 47, 49,
-			41, 72, 66, 7, 196, 44, 147, 73, 204, 67, 6, 195, 4, 74, 23, 66, 0, 12, 201, 64, 241, 84, 65, 25, 137, 76, 99, 0, 65, 8,
-			197, 18, 54, 65, 148, 160, 67, 9, 198, 153, 51, 205, 205, 55, 125, 68, 0, 6, 195, 14, 241, 109, 66, 9, 198, 5, 36, 246, 144, 52,
-			192, 67, 0, 6, 195, 67, 188, 192, 66, 9, 198, 52, 244, 207, 77, 18, 115, 68, 9, 198, 44, 243, 66, 196, 98, 51, 68, 0, 7, 196,
-			89, 179, 2, 176, 65, 7, 196, 175, 96, 129, 76, 67, 0, 8, 197, 68, 18, 2, 60, 160, 66, 8, 197, 10, 241, 123, 60, 192, 67, 0,
-			9, 198, 20, 100, 147, 184, 20, 192, 67, 9, 198, 9, 253, 139, 68, 20, 192, 67, 9, 198, 233, 98, 83, 24, 180, 192, 67, 0, 6, 195,
-			86, 191, 0, 66, 10, 199, 72, 198, 206, 96, 240, 145, 188, 67, 0, 7, 196, 66, 52, 198, 92, 66, 0, 8, 197, 77, 180, 66, 81, 96,
-			66, 8, 197, 46, 48, 198, 75, 16, 67, 0, 6, 195, 148, 182, 205, 66, 0, 32, 2, 95, 123, 55, 38, 4, 35, 84, 35, 15, 84, 13,
-			55, 50, 39, 4, 39, 71, 34, 35, 88, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 9, 198, 36, 132, 207, 96, 226, 75, 65, 0, 7,
-			196, 78, 153, 7, 244, 67, 6, 195, 67, 52, 243, 66, 7, 196, 224, 98, 212, 56, 67, 9, 198, 55, 162, 198, 79, 17, 0, 65, 0, 8,
-			197, 47, 160, 66, 199, 176, 68, 8, 197, 20, 243, 79, 87, 48, 67, 0, 6, 195, 233, 44, 0, 66, 0, 6, 195, 46, 240, 80, 66, 6,
-			195, 184, 146, 192, 66, 0, 14, 2, 95, 126, 84, 13, 55, 50, 6, 37, 76, 49, 35, 0, 11, 200, 24, 193, 139, 79, 108, 71, 195, 176,
-			70, 9, 198, 233, 97, 143, 48, 241, 0, 68, 0, 32, 2, 95, 125, 116, 4, 35, 89, 50, 35, 15, 84, 13, 55, 50, 39, 4, 39, 71,
-			34, 35, 88, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 8, 197, 88, 243, 59, 36, 176, 67, 0, 23, 2, 95, 124, 84, 36, 34, 47,
-			37, 49, 4, 35, 55, 50, 35, 15, 76, 36, 34, 47, 6, 35, 0, 6, 195, 84, 197, 61, 66, 6, 195, 75, 7, 125, 66, 9, 198, 67,
-			171, 73, 76, 146, 192, 68, 9, 198, 54, 189, 134, 32, 146, 192, 68, 9, 198, 32, 16, 166, 37, 49, 140, 66, 12, 201, 24, 193, 139, 79,
-			96, 68, 164, 64, 83, 70, 0, 6, 195, 80, 94, 128, 65, 10, 199, 77, 18, 84, 54, 164, 65, 76, 68, 0, 8, 196, 66, 196, 65, 40,
-			72, 23, 7, 196, 66, 116, 65, 76, 66, 6, 195, 61, 113, 147, 66, 7, 196, 52, 147, 111, 72, 66, 7, 196, 52, 19, 84, 48, 66, 7,
-			196, 44, 17, 111, 72, 66, 0, 11, 5, 95, 48, 97, 110, 100, 10, 2, 37, 0, 0, 9, 198, 64, 100, 147, 56, 146, 192, 66, 9, 198,
-			145, 10, 88, 56, 146, 192, 65, 9, 198, 20, 198, 199, 56, 146, 192, 66, 0, 10, 199, 72, 147, 80, 60, 130, 84, 52, 66, 9, 198, 67,
-			98, 248, 74, 242, 75, 66, 9, 198, 64, 244, 140, 25, 35, 39, 67, 10, 199, 34, 147, 15, 73, 51, 137, 44, 65, 0, 7, 196, 81, 36,
-			6, 88, 66, 7, 196, 148, 229, 221, 244, 66, 11, 200, 68, 20, 147, 192, 145, 131, 108, 80, 69, 7, 196, 48, 100, 198, 92, 66, 7, 196,
-			47, 212, 134, 76, 66, 7, 196, 44, 19, 91, 100, 66, 7, 196, 22, 148, 157, 244, 66, 7, 196, 9, 23, 232, 76, 66, 7, 196, 11, 172,
-			198, 76, 67, 0, 11, 200, 72, 209, 147, 44, 17, 71, 38, 0, 65, 8, 197, 75, 186, 147, 81, 48, 67, 12, 201, 68, 16, 143, 76, 245,
-			143, 48, 146, 192, 69, 12, 201, 64, 241, 80, 60, 194, 231, 56, 146, 192, 65, 0, 8, 197, 142, 49, 71, 38, 0, 65, 9, 198, 32, 19,
-			73, 73, 179, 0, 65, 0, 9, 198, 65, 177, 80, 108, 86, 203, 67, 9, 198, 65, 25, 134, 20, 226, 75, 65, 0, 7, 196, 61, 84, 134,
-			76, 66, 6, 195, 51, 218, 19, 66, 7, 196, 47, 161, 113, 180, 67, 7, 196, 16, 194, 68, 188, 66, 0, 11, 200, 66, 144, 209, 6, 81,
-			71, 38, 0, 66, 8, 197, 53, 68, 139, 25, 48, 66, 0, 9, 198, 88, 99, 9, 61, 34, 248, 68, 0, 10, 199, 88, 98, 211, 60, 68,
-			65, 84, 67, 0, 7, 196, 47, 209, 163, 76, 67, 7, 196, 36, 212, 61, 76, 66, 7, 196, 16, 96, 233, 44, 66, 11, 200, 189, 50, 69,
-			25, 10, 82, 189, 48, 69, 0, 8, 197, 61, 51, 204, 60, 64, 67, 8, 197, 246, 241, 20, 148, 224, 66, 6, 195, 144, 83, 202, 66, 8,
-			197, 46, 196, 198, 40, 192, 66, 8, 197, 5, 3, 15, 52, 32, 66, 0, 9, 198, 72, 99, 70, 20, 99, 0, 67, 13, 202, 68, 17, 73,
-			61, 49, 140, 24, 68, 65, 84, 70, 5, 194, 214, 208, 66, 0, 9, 198, 78, 146, 133, 124, 226, 115, 68, 0, 7, 196, 148, 225, 70, 52,
-			66, 7, 196, 73, 180, 134, 20, 66, 7, 196, 74, 84, 73, 44, 66, 6, 195, 66, 209, 135, 66, 7, 196, 48, 99, 84, 68, 66, 6, 195,
-			46, 247, 115, 66, 7, 196, 8, 97, 84, 196, 67, 0, 8, 197, 65, 18, 66, 60, 160, 66, 6, 195, 44, 248, 202, 66, 8, 197, 153, 51,
-			196, 60, 192, 67, 0, 0, 9, 198, 95, 161, 170, 96, 226, 75, 65, 10, 199, 73, 98, 72, 52, 20, 201, 44, 67, 0, 7, 196, 76, 99,
-			247, 84, 67, 7, 196, 64, 20, 147, 240, 66, 7, 196, 36, 82, 79, 52, 67, 11, 200, 20, 155, 70, 45, 51, 204, 60, 64, 69, 0, 8,
-			197, 44, 243, 15, 87, 48, 67, 6, 195, 44, 248, 206, 66, 0, 0, 10, 199, 73, 177, 12, 24, 80, 193, 96, 66, 9, 198, 72, 98, 212,
-			56, 91, 211, 67, 10, 199, 19, 100, 141, 4, 164, 147, 244, 65, 6, 195, 182, 53, 128, 66, 0, 7, 196, 77, 28, 79, 52, 66, 7, 196,
-			48, 144, 187, 180, 67, 6, 195, 236, 128, 87, 66, 0, 9, 198, 65, 33, 131, 23, 50, 77, 67, 6, 195, 55, 48, 86, 66, 8, 197, 46,
-			249, 81, 39, 48, 68, 0, 0, 6, 195, 164, 62, 192, 66, 10, 199, 20, 146, 6, 48, 211, 211, 244, 68, 9, 198, 8, 100, 243, 156, 242,
-			0, 68, 0, 7, 196, 73, 64, 240, 240, 67, 6, 195, 67, 210, 67, 65, 7, 196, 66, 196, 73, 12, 65, 7, 196, 66, 244, 137, 204, 67,
-			6, 195, 48, 101, 123, 66, 0, 9, 197, 73, 4, 96, 52, 240, 72, 23, 8, 197, 246, 82, 204, 108, 176, 67, 8, 197, 45, 179, 147, 24,
-			112, 66, 8, 197, 45, 18, 83, 36, 176, 66, 8, 197, 20, 144, 85, 184, 208, 67, 6, 195, 8, 21, 238, 66, 6, 195, 190, 240, 82, 67,
-			0, 9, 198, 64, 243, 20, 45, 22, 196, 67, 6, 195, 64, 97, 109, 66, 9, 198, 21, 177, 197, 60, 222, 192, 67, 9, 198, 22, 209, 139,
-			60, 222, 192, 68, 0, 6, 195, 32, 101, 124, 66, 0, 6, 195, 164, 85, 19, 66, 7, 196, 67, 213, 201, 204, 67, 7, 196, 52, 100, 201,
-			72, 66, 7, 196, 44, 21, 70, 32, 66, 7, 196, 44, 17, 81, 184, 66, 9, 198, 44, 17, 65, 73, 61, 142, 67, 11, 200, 36, 130, 212,
-			73, 61, 67, 24, 80, 68, 11, 200, 25, 36, 198, 73, 61, 67, 24, 80, 68, 6, 195, 18, 213, 115, 66, 0, 8, 197, 99, 202, 204, 108,
-			176, 67, 8, 197, 73, 58, 77, 24, 112, 66, 0, 9, 198, 52, 241, 70, 48, 158, 192, 68, 6, 195, 25, 41, 21, 66, 9, 198, 22, 144,
-			143, 73, 178, 192, 67, 0, 6, 195, 67, 195, 196, 66, 6, 195, 46, 251, 64, 66, 0, 7, 196, 96, 100, 198, 92, 66, 7, 196, 84, 99,
-			197, 180, 67, 7, 196, 86, 213, 198, 76, 66, 7, 196, 67, 197, 6, 76, 67, 7, 196, 52, 19, 84, 76, 66, 0, 11, 200, 64, 241, 54,
-			52, 17, 71, 38, 0, 66, 12, 201, 52, 18, 141, 80, 225, 71, 185, 178, 192, 68, 12, 201, 168, 81, 143, 20, 148, 144, 48, 98, 128, 69,
-			8, 197, 5, 11, 17, 37, 80, 67, 8, 197, 153, 51, 205, 5, 48, 67, 0, 9, 198, 20, 99, 60, 37, 67, 64, 66, 0, 6, 195, 67,
-			204, 88, 66, 0, 7, 195, 98, 146, 0, 72, 23, 7, 196, 75, 28, 201, 52, 67, 11, 200, 52, 244, 207, 92, 146, 204, 25, 48, 68, 7,
-			196, 55, 52, 221, 244, 66, 0, 8, 197, 76, 99, 123, 81, 48, 67, 8, 197, 74, 49, 75, 37, 144, 66, 8, 197, 67, 97, 84, 45, 48,
-			66, 8, 197, 45, 68, 12, 25, 48, 66, 8, 197, 32, 241, 17, 5, 80, 66, 8, 197, 5, 113, 147, 187, 0, 68, 8, 197, 4, 90, 82,
-			189, 48, 67, 0, 5, 194, 104, 96, 72, 9, 198, 88, 99, 9, 61, 61, 144, 68, 6, 195, 46, 119, 125, 66, 0, 7, 195, 74, 150, 148,
-			72, 23, 9, 198, 45, 22, 210, 79, 134, 211, 67, 0, 7, 195, 176, 243, 15, 72, 23, 11, 200, 72, 98, 72, 52, 241, 17, 5, 80, 68,
-			7, 196, 20, 100, 187, 76, 66, 0, 0, 9, 198, 17, 16, 71, 22, 252, 64, 65, 0, 6, 195, 5, 51, 204, 66, 0, 8, 196, 36, 128,
-			219, 56, 72, 23, 6, 195, 221, 4, 111, 66, 7, 196, 220, 193, 65, 76, 66, 7, 196, 74, 241, 91, 44, 66, 7, 196, 74, 189, 213, 204,
-			67, 7, 196, 164, 186, 134, 52, 67, 7, 196, 67, 182, 6, 52, 66, 0, 8, 197, 66, 148, 147, 60, 160, 66, 8, 197, 64, 20, 209, 80,
-			192, 66, 8, 197, 204, 179, 204, 60, 64, 67, 6, 195, 181, 54, 206, 66, 0, 9, 198, 76, 100, 6, 17, 211, 200, 67, 9, 198, 64, 243,
-			20, 18, 52, 128, 67, 6, 195, 64, 242, 61, 66, 6, 195, 55, 30, 237, 67, 9, 198, 36, 188, 207, 74, 84, 128, 68, 6, 195, 236, 76,
-			0, 66, 9, 198, 20, 19, 65, 72, 188, 64, 67, 0, 0, 7, 196, 55, 5, 6, 76, 67, 7, 196, 48, 149, 198, 40, 66, 11, 200, 48,
-			98, 210, 36, 179, 204, 60, 64, 68, 7, 196, 28, 19, 66, 204, 66, 0, 8, 197, 44, 19, 123, 39, 176, 68, 8, 197, 9, 26, 243, 39,
-			176, 68, 9, 198, 154, 249, 69, 28, 152, 0, 66, 0, 9, 198, 212, 83, 207, 79, 81, 64, 68, 0, 0, 7, 196, 86, 227, 247, 84, 67,
-			6, 195, 148, 212, 51, 66, 7, 196, 47, 196, 9, 96, 66, 7, 196, 47, 193, 9, 32, 66, 11, 200, 5, 37, 109, 76, 240, 134, 79, 48,
-			69, 0, 6, 195, 69, 178, 230, 66, 8, 197, 166, 181, 201, 207, 176, 69, 8, 197, 68, 18, 13, 5, 96, 66, 8, 197, 45, 43, 143, 87,
-			48, 67, 0, 6, 195, 44, 21, 25, 66, 0, 6, 195, 75, 16, 80, 66, 6, 195, 46, 238, 192, 66, 0, 6, 195, 87, 179, 111, 66, 7,
-			196, 36, 82, 79, 76, 67, 0, 8, 197, 73, 180, 66, 24, 112, 66, 8, 197, 67, 96, 140, 24, 208, 66, 8, 197, 44, 148, 240, 36, 176,
-			65, 8, 197, 13, 178, 22, 60, 80, 66, 0, 9, 198, 9, 180, 251, 86, 50, 128, 65, 0, 6, 195, 99, 208, 80, 66, 0, 7, 196, 74,
-			227, 205, 236, 67, 7, 196, 52, 97, 73, 44, 66, 6, 195, 54, 177, 147, 66, 7, 196, 33, 67, 20, 52, 66, 7, 196, 20, 240, 74, 192,
-			67, 6, 195, 12, 17, 51, 66, 7, 196, 5, 113, 147, 204, 67, 0, 9, 197, 13, 180, 41, 44, 144, 72, 23, 8, 197, 88, 145, 81, 36,
-			80, 66, 8, 197, 86, 240, 83, 36, 176, 67, 9, 198, 77, 18, 75, 60, 199, 125, 67, 8, 197, 72, 21, 81, 36, 80, 66, 8, 197, 52,
-			97, 73, 80, 208, 65, 6, 195, 196, 85, 18, 66, 0, 6, 195, 164, 193, 149, 66, 9, 198, 64, 18, 58, 49, 178, 192, 67, 0, 10, 199,
-			65, 16, 68, 52, 20, 201, 44, 67, 10, 199, 52, 193, 139, 204, 17, 79, 40, 68, 9, 198, 44, 243, 73, 72, 156, 251, 69, 0, 7, 196,
-			67, 172, 201, 52, 67, 6, 195, 66, 209, 147, 66, 7, 196, 44, 204, 241, 16, 66, 7, 196, 44, 20, 212, 56, 66, 0, 8, 197, 52, 148,
-			139, 25, 48, 66, 9, 198, 44, 25, 69, 28, 152, 0, 65, 8, 197, 44, 17, 65, 37, 80, 67, 8, 197, 21, 64, 140, 25, 48, 66, 8,
-			197, 22, 225, 165, 57, 48, 67, 0, 9, 198, 24, 194, 72, 37, 67, 64, 66, 6, 195, 4, 213, 17, 66, 0, 6, 195, 148, 59, 192, 66,
-			6, 195, 72, 20, 252, 66, 6, 195, 214, 51, 128, 66, 0, 7, 196, 72, 20, 21, 240, 66, 9, 198, 52, 105, 76, 81, 17, 0, 67, 9,
-			198, 19, 179, 111, 61, 83, 194, 68, 0, 6, 195, 164, 74, 82, 66, 8, 197, 20, 148, 144, 81, 48, 66, 0, 10, 66, 96, 192, 76, 55,
-			36, 50, 0, 24, 6, 195, 164, 59, 217, 66, 0, 0, 7, 196, 73, 55, 250, 20, 66, 11, 200, 73, 1, 139, 79, 97, 17, 5, 80, 67,
-			7, 196, 45, 68, 148, 68, 66, 0, 9, 198, 79, 58, 71, 37, 39, 125, 68, 8, 197, 68, 144, 143, 50, 112, 67, 8, 197, 9, 67, 123,
-			188, 64, 67, 0, 9, 198, 44, 243, 112, 22, 244, 192, 67, 0, 7, 195, 4, 208, 64, 72, 23, 10, 199, 72, 97, 77, 37, 131, 137, 44,
-			65, 10, 199, 32, 243, 211, 25, 99, 137, 44, 68, 0, 7, 196, 246, 83, 27, 44, 67, 7, 196, 56, 253, 246, 16, 67, 7, 196, 30, 241,
-			122, 52, 66, 0, 8, 197, 99, 163, 197, 24, 160, 67, 6, 195, 79, 100, 238, 66, 8, 197, 66, 148, 147, 60, 192, 66, 8, 197, 32, 195,
-			197, 24, 160, 66, 8, 197, 169, 20, 212, 60, 128, 67, 0, 9, 198, 72, 98, 210, 148, 228, 192, 66, 9, 198, 36, 210, 68, 70, 244, 192,
-			67, 9, 198, 24, 210, 68, 70, 244, 192, 67, 0, 14, 67, 16, 241, 64, 81, 39, 72, 6, 37, 50, 35, 0, 24, 6, 195, 5, 56, 200,
-			66, 0, 6, 195, 150, 51, 147, 66, 7, 196, 58, 192, 84, 76, 65, 6, 195, 44, 18, 47, 66, 7, 196, 13, 178, 36, 44, 65, 0, 6,
-			195, 16, 241, 70, 65, 8, 197, 164, 191, 69, 119, 208, 67, 8, 197, 16, 244, 147, 195, 16, 65, 0, 0, 7, 195, 64, 241, 64, 72, 23,
-			9, 198, 47, 52, 148, 50, 83, 147, 67, 0, 6, 195, 76, 145, 47, 66, 7, 196, 149, 27, 70, 28, 67, 0, 8, 197, 64, 20, 137, 189,
-			32, 67, 6, 195, 5, 56, 210, 66, 0, 9, 198, 91, 176, 137, 92, 145, 64, 67, 9, 198, 48, 148, 147, 224, 17, 64, 67, 9, 198, 25,
-			33, 183, 12, 101, 192, 66, 9, 198, 9, 22, 211, 12, 97, 192, 66, 0, 9, 198, 61, 82, 87, 36, 242, 0, 68, 9, 198, 197, 84, 65,
-			32, 53, 11, 65, 6, 195, 21, 65, 140, 66, 0, 7, 196, 77, 26, 229, 76, 66, 0, 8, 197, 96, 98, 209, 108, 176, 66, 8, 197, 73,
-			177, 108, 140, 80, 67, 8, 197, 73, 67, 21, 36, 80, 66, 8, 197, 24, 212, 60, 36, 176, 67, 0, 9, 198, 72, 19, 79, 76, 98, 192,
-			67, 9, 198, 12, 99, 8, 24, 53, 12, 67, 0, 0, 7, 196, 52, 100, 207, 88, 66, 7, 196, 46, 145, 73, 76, 65, 12, 201, 197, 36,
-			209, 80, 220, 37, 68, 149, 13, 68, 9, 198, 20, 99, 65, 16, 241, 0, 67, 0, 8, 197, 73, 59, 39, 24, 80, 67, 8, 197, 29, 179,
-			19, 108, 176, 66, 8, 197, 16, 241, 112, 36, 176, 67, 0, 6, 195, 4, 80, 89, 66, 0, 9, 198, 68, 21, 129, 76, 198, 203, 67, 6,
-			195, 34, 211, 196, 66, 0, 7, 196, 96, 17, 91, 68, 66, 7, 196, 45, 246, 6, 44, 66, 6, 195, 44, 20, 47, 66, 7, 196, 197, 62,
-			201, 244, 68, 6, 195, 21, 65, 147, 66, 7, 196, 11, 212, 148, 44, 66, 0, 8, 197, 52, 97, 38, 5, 48, 67, 8, 197, 45, 180, 141,
-			25, 48, 66, 0, 6, 195, 233, 44, 45, 67, 0, 10, 199, 80, 196, 209, 4, 128, 212, 44, 67, 9, 198, 64, 148, 147, 60, 193, 147, 67,
-			0, 7, 196, 148, 34, 70, 76, 67, 11, 200, 68, 17, 73, 60, 20, 58, 5, 48, 70, 7, 196, 53, 67, 133, 240, 66, 7, 196, 45, 190,
-			70, 28, 66, 0, 9, 198, 77, 21, 2, 4, 85, 17, 67, 8, 197, 197, 60, 5, 189, 48, 67, 8, 197, 9, 22, 205, 11, 160, 65, 0,
-			9, 198, 68, 18, 18, 78, 147, 0, 66, 6, 195, 18, 211, 217, 66, 9, 198, 152, 147, 205, 61, 63, 64, 69, 0, 6, 195, 67, 213, 124,
-			66, 6, 195, 24, 178, 80, 66, 0, 8, 196, 73, 15, 70, 20, 72, 23, 6, 195, 86, 50, 243, 66, 7, 196, 141, 74, 65, 76, 68, 9,
-			198, 9, 179, 4, 232, 245, 110, 68, 0, 0, 9, 198, 64, 244, 147, 82, 52, 192, 67, 5, 194, 226, 208, 66, 9, 198, 44, 62, 147, 242,
-			244, 192, 67, 9, 198, 20, 100, 41, 74, 244, 192, 67, 0, 6, 195, 91, 28, 64, 66, 6, 195, 67, 204, 192, 66, 10, 199, 145, 145, 146,
-			76, 60, 9, 44, 66, 0, 7, 196, 36, 132, 73, 12, 65, 7, 196, 18, 220, 9, 44, 65, 7, 196, 13, 67, 11, 188, 66, 7, 196, 212,
-			83, 198, 52, 67, 0, 0, 6, 195, 98, 214, 205, 66, 9, 198, 84, 145, 20, 70, 244, 192, 67, 6, 195, 72, 178, 125, 66, 9, 198, 68,
-			18, 23, 12, 100, 192, 66, 9, 198, 44, 243, 73, 76, 100, 192, 67, 9, 198, 20, 98, 210, 77, 28, 64, 66, 9, 198, 8, 147, 205, 37,
-			124, 64, 68, 0, 10, 199, 86, 214, 73, 84, 146, 193, 76, 68, 9, 198, 75, 176, 134, 32, 198, 203, 67, 10, 199, 52, 20, 198, 52, 20,
-			201, 44, 68, 0, 7, 196, 84, 150, 70, 44, 66, 7, 196, 77, 180, 232, 28, 66, 6, 195, 216, 35, 211, 66, 0, 8, 197, 47, 53, 227,
-			19, 176, 65, 0, 9, 198, 47, 49, 136, 152, 241, 64, 68, 9, 198, 44, 148, 134, 48, 101, 192, 65, 9, 198, 16, 243, 6, 52, 101, 192,
-			67, 0, 0, 7, 196, 54, 246, 70, 76, 66, 7, 196, 44, 20, 207, 20, 66, 7, 196, 197, 37, 12, 76, 66, 11, 200, 24, 193, 139, 79,
-			99, 79, 79, 208, 69, 0, 6, 195, 87, 57, 78, 66, 8, 197, 48, 97, 9, 207, 176, 68, 8, 197, 44, 244, 177, 81, 32, 65, 0, 6,
-			195, 66, 224, 85, 66, 9, 198, 47, 160, 77, 8, 243, 0, 67, 9, 198, 153, 51, 200, 152, 241, 64, 68, 0, 6, 195, 67, 217, 76, 66,
-			9, 198, 189, 50, 85, 68, 146, 0, 67, 0, 7, 196, 141, 49, 139, 72, 66, 0, 8, 197, 36, 67, 48, 36, 176, 67, 8, 197, 32, 60,
-			39, 60, 80, 67, 9, 198, 28, 157, 83, 58, 118, 197, 68, 0, 6, 195, 75, 23, 125, 66, 0, 9, 198, 73, 64, 140, 36, 208, 83, 67,
-			0, 9, 198, 67, 100, 207, 43, 177, 138, 68, 9, 198, 52, 227, 196, 60, 35, 202, 67, 9, 198, 237, 117, 187, 92, 241, 0, 67, 9, 198,
-			23, 1, 118, 48, 241, 0, 67, 0, 9, 198, 92, 99, 20, 48, 242, 69, 68, 9, 198, 66, 146, 9, 20, 149, 13, 66, 8, 197, 25, 144,
-			85, 60, 80, 67, 0, 6, 195, 44, 18, 89, 66, 0, 9, 198, 67, 101, 82, 109, 242, 0, 67, 0, 7, 196, 72, 20, 29, 244, 66, 7,
-			196, 66, 52, 157, 244, 66, 7, 196, 66, 244, 198, 204, 67, 6, 195, 66, 98, 111, 67, 7, 196, 61, 54, 6, 76, 66, 11, 200, 13, 177,
-			12, 24, 83, 194, 36, 48, 67, 6, 195, 11, 165, 19, 66, 0, 6, 18, 66, 208, 181, 0, 209, 144, 0, 208, 184, 0, 209, 157, 0, 7,
-			6, 18, 67, 209, 128, 0, 208, 187, 0, 208, 188, 0, 208, 189, 0, 7, 6, 18, 68, 208, 180, 208, 183, 0, 208, 180, 208, 182, 0, 208,
-			177, 0, 208, 178, 0, 208, 179, 0, 208, 180, 0, 208, 183, 0, 208, 182, 0, 7, 6, 18, 69, 208, 191, 0, 209, 132, 0, 208, 186, 0,
-			209, 130, 0, 209, 129, 0, 209, 134, 0, 209, 136, 0, 209, 137, 0, 209, 135, 0, 209, 133, 0, 7, 6, 1, 17, 0, 209, 128, 1, 21,
-			2, 32, 3, 6, 35, 34, 0, 209, 130, 208, 181, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 35, 47, 36, 55, 36, 50, 0,
-			209, 130, 208, 181, 208, 187, 209, 129, 209, 130, 208, 178, 208, 190, 1, 21, 2, 32, 3, 6, 35, 47, 36, 55, 89, 47, 84, 39, 0, 208,
-			186, 1, 21, 2, 32, 3, 6, 35, 49, 0, 208, 189, 208, 184, 208, 181, 1, 21, 2, 32, 3, 6, 35, 50, 37, 36, 0, 208, 189, 209,
-			129, 208, 186, 208, 184, 1, 21, 2, 32, 3, 6, 35, 50, 89, 49, 37, 0, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 35,
-			55, 36, 50, 0, 208, 187, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32, 3, 6, 35, 55, 37, 91, 47, 36, 0, 208, 187, 208, 189, 209,
-			143, 1, 21, 2, 32, 3, 6, 35, 55, 50, 38, 35, 0, 209, 135, 1, 21, 2, 32, 3, 6, 35, 76, 0, 208, 178, 208, 184, 209, 137,
-			208, 181, 1, 21, 2, 32, 3, 6, 35, 84, 37, 91, 47, 36, 0, 208, 182, 1, 21, 2, 32, 3, 6, 35, 90, 0, 209, 134, 208, 184,
-			209, 143, 1, 21, 2, 32, 3, 6, 35, 117, 37, 35, 0, 4, 3, 35, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 209, 128, 208, 184,
-			209, 143, 1, 21, 2, 32, 3, 35, 34, 37, 35, 0, 7, 6, 1, 18, 0, 3, 71, 0, 2, 17, 71, 3, 71, 38, 0, 7, 6, 1,
-			19, 0, 3, 84, 0, 2, 17, 71, 3, 84, 38, 0, 7, 6, 1, 20, 0, 3, 81, 0, 2, 17, 71, 3, 122, 0, 7, 6, 1, 21,
-			0, 3, 72, 0, 208, 182, 3, 75, 0, 2, 17, 71, 3, 116, 0, 208, 183, 3, 118, 0, 208, 183, 2, 17, 71, 3, 118, 38, 0, 7,
-			6, 1, 22, 0, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 36, 36, 50, 0, 208, 189, 208, 184, 208, 181, 1, 21, 2, 32, 3, 6,
-			36, 50, 37, 36, 0, 208, 189, 209, 130, 1, 21, 2, 32, 3, 6, 36, 50, 47, 0, 208, 185, 209, 129, 208, 186, 208, 184, 1, 21, 2,
-			32, 3, 6, 36, 57, 89, 49, 37, 0, 208, 177, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 36, 71, 36, 50, 0, 208, 178, 208, 181,
-			208, 189, 1, 21, 2, 32, 3, 6, 36, 84, 36, 50, 0, 3, 36, 0, 7, 6, 1, 23, 0, 3, 90, 0, 7, 6, 1, 24, 0, 3,
-			88, 0, 2, 17, 71, 3, 94, 0, 7, 6, 1, 25, 0, 4, 1, 130, 209, 190, 208, 2, 209, 143, 32, 3, 6, 37, 0, 1, 186, 208,
-			2, 208, 189, 209, 143, 32, 0, 209, 130, 1, 21, 2, 32, 3, 6, 37, 47, 0, 209, 130, 208, 181, 208, 187, 1, 21, 2, 32, 3, 6,
-			37, 47, 36, 55, 0, 209, 130, 208, 181, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 37, 47, 36, 55, 36, 50, 0, 208, 180,
-			208, 177, 208, 176, 1, 21, 2, 32, 3, 6, 37, 47, 71, 35, 0, 208, 186, 208, 176, 208, 178, 1, 21, 2, 32, 3, 6, 37, 49, 35,
-			84, 0, 208, 189, 209, 129, 208, 186, 208, 184, 1, 21, 2, 32, 3, 6, 37, 50, 89, 49, 37, 0, 208, 187, 208, 181, 208, 189, 1, 21,
-			2, 32, 3, 6, 37, 55, 36, 50, 0, 208, 187, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32, 3, 6, 37, 55, 37, 91, 47, 36, 0,
-			208, 188, 208, 176, 1, 21, 2, 32, 3, 6, 37, 65, 35, 0, 209, 135, 208, 181, 209, 129, 208, 186, 208, 184, 1, 21, 2, 32, 3, 6,
-			37, 76, 36, 89, 49, 37, 0, 208, 178, 1, 21, 2, 32, 3, 6, 37, 84, 0, 208, 178, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6,
-			37, 84, 36, 50, 0, 208, 183, 209, 138, 208, 188, 1, 21, 2, 32, 3, 6, 37, 88, 13, 65, 0, 209, 129, 209, 130, 1, 21, 2, 32,
-			3, 6, 37, 89, 47, 0, 3, 37, 0, 2, 32, 24, 3, 37, 12, 0, 7, 6, 1, 26, 0, 3, 57, 0, 7, 6, 1, 27, 0, 3,
-			49, 0, 2, 17, 71, 3, 49, 38, 0, 208, 190, 1, 21, 2, 32, 14, 128, 128, 130, 3, 49, 39, 0, 7, 6, 1, 28, 0, 4, 2,
-			17, 71, 3, 55, 0, 2, 18, 66, 0, 2, 209, 140, 18, 66, 3, 61, 0, 3, 64, 0, 7, 6, 1, 29, 0, 3, 65, 0, 2, 17,
-			71, 3, 65, 38, 0, 7, 6, 1, 30, 0, 3, 50, 0, 208, 189, 3, 50, 12, 0, 2, 17, 71, 3, 67, 0, 7, 6, 1, 31, 0,
-			209, 128, 208, 184, 209, 131, 208, 188, 1, 21, 2, 32, 3, 6, 39, 34, 37, 40, 65, 0, 208, 186, 1, 21, 2, 32, 3, 6, 39, 49,
-			0, 208, 178, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 39, 84, 36, 50, 0, 208, 178, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32,
-			3, 6, 39, 84, 37, 91, 47, 36, 0, 208, 178, 208, 189, 208, 184, 208, 186, 1, 21, 2, 32, 3, 6, 39, 84, 50, 37, 49, 0, 208,
-			183, 208, 181, 208, 189, 2, 32, 3, 6, 39, 88, 36, 50, 0, 3, 39, 0, 208, 178, 208, 176, 2, 209, 130, 32, 3, 39, 84, 6, 35,
-			0, 208, 178, 208, 184, 2, 209, 130, 32, 3, 39, 84, 6, 37, 0, 7, 6, 1, 32, 0, 3, 48, 0, 2, 17, 71, 3, 48, 38, 0,
-			7, 6, 1, 33, 0, 3, 34, 0, 2, 17, 71, 3, 34, 38, 0, 7, 6, 1, 34, 0, 3, 89, 0, 2, 17, 71, 3, 95, 0, 7,
-			6, 1, 35, 0, 3, 47, 0, 209, 130, 3, 47, 12, 0, 208, 176, 1, 21, 2, 32, 14, 128, 128, 130, 3, 47, 35, 0, 208, 181, 1,
-			21, 2, 32, 14, 128, 128, 130, 3, 47, 36, 0, 2, 17, 71, 3, 115, 0, 7, 6, 1, 36, 0, 3, 40, 0, 7, 6, 1, 37, 0,
-			3, 83, 0, 2, 17, 71, 3, 83, 38, 0, 7, 6, 1, 38, 0, 4, 2, 17, 71, 3, 99, 0, 2, 208, 184, 0, 3, 101, 0, 7,
-			6, 1, 39, 0, 3, 117, 0, 2, 17, 71, 3, 117, 38, 0, 7, 6, 1, 40, 0, 208, 190, 1, 21, 2, 32, 3, 8, 76, 39, 0,
-			3, 76, 0, 7, 6, 1, 41, 0, 3, 91, 0, 7, 6, 1, 42, 0, 3, 91, 47, 0, 2, 17, 71, 3, 91, 115, 0, 7, 6, 1,
-			43, 0, 3, 13, 0, 209, 130, 1, 21, 2, 32, 14, 128, 128, 130, 3, 13, 47, 0, 7, 6, 1, 45, 0, 1, 17, 67, 3, 0, 3,
-			57, 0, 7, 6, 1, 47, 0, 1, 17, 67, 3, 40, 0, 3, 57, 40, 0, 7, 6, 1, 48, 0, 208, 189, 208, 184, 208, 181, 1, 21,
-			2, 32, 3, 6, 57, 35, 50, 37, 36, 0, 4, 1, 17, 67, 3, 35, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 209, 130,
-			1, 17, 67, 21, 2, 32, 14, 128, 192, 130, 3, 35, 47, 0, 4, 3, 57, 35, 0, 1, 21, 2, 32, 14, 128, 192, 129, 0, 209, 130,
-			1, 21, 2, 32, 14, 128, 192, 130, 3, 57, 35, 47, 0, 7, 6, 0, 209, 144, 3, 7, 36, 0, 209, 157, 3, 7, 37, 0, 204, 128,
-			3, 8, 0, 36, 3, 72, 6, 39, 64, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts5 = FileInMemory_createWithData (26954, reinterpret_cast<const char *> (&espeakdata_dicts5_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/bg_dict", 
+		static unsigned char espeakdata_dicts6_data[27007] = {
+			0, 4, 0, 0, 222, 99, 0, 0, 0, 0, 8, 197, 52, 20, 203, 5, 0, 66, 0, 0, 0, 6, 195, 98, 214, 205, 66, 8, 197, 85,
+			180, 147, 108, 176, 66, 0, 17, 66, 5, 0, 35, 48, 35, 34, 47, 35, 65, 6, 36, 50, 47, 0, 24, 6, 195, 5, 0, 89, 66, 0,
+			7, 196, 246, 83, 27, 44, 67, 0, 0, 8, 196, 61, 50, 219, 52, 72, 23, 9, 198, 88, 17, 71, 185, 178, 192, 67, 9, 198, 32, 20,
+			27, 69, 54, 203, 65, 0, 9, 198, 73, 52, 65, 76, 97, 0, 66, 0, 8, 197, 64, 22, 109, 108, 176, 67, 0, 0, 6, 195, 244, 99,
+			0, 66, 9, 198, 20, 19, 65, 32, 198, 203, 67, 0, 0, 10, 199, 99, 208, 129, 20, 123, 155, 44, 68, 9, 198, 55, 17, 123, 49, 178,
+			192, 67, 0, 8, 197, 77, 180, 68, 5, 144, 66, 0, 12, 201, 52, 18, 141, 80, 225, 71, 185, 178, 192, 68, 0, 6, 195, 75, 160, 85,
+			66, 6, 195, 67, 160, 85, 66, 6, 195, 31, 192, 85, 66, 6, 195, 22, 224, 85, 66, 0, 0, 17, 4, 95, 100, 112, 116, 10, 117, 38,
+			6, 35, 64, 39, 10, 37, 15, 0, 6, 195, 80, 94, 128, 65, 6, 195, 236, 128, 87, 66, 7, 196, 4, 34, 1, 92, 66, 0, 7, 196,
+			67, 177, 65, 88, 66, 0, 6, 195, 68, 17, 122, 65, 9, 198, 16, 99, 196, 68, 21, 64, 67, 0, 7, 196, 85, 65, 1, 72, 66, 7,
+			196, 37, 146, 65, 72, 67, 7, 196, 36, 212, 1, 72, 66, 7, 196, 32, 20, 1, 72, 66, 6, 195, 189, 80, 82, 66, 0, 6, 195, 90,
+			208, 83, 66, 9, 198, 65, 16, 79, 76, 101, 192, 67, 6, 195, 224, 144, 83, 67, 6, 195, 176, 243, 123, 67, 7, 196, 60, 36, 65, 76,
+			66, 6, 195, 53, 72, 211, 66, 7, 196, 44, 243, 65, 76, 66, 6, 195, 47, 160, 83, 66, 7, 196, 20, 243, 65, 76, 66, 0, 6, 195,
+			164, 74, 82, 66, 0, 9, 198, 95, 18, 207, 17, 16, 85, 67, 9, 198, 91, 99, 143, 17, 16, 85, 67, 8, 197, 88, 145, 81, 5, 48,
+			66, 10, 199, 88, 98, 211, 60, 68, 65, 84, 67, 8, 197, 84, 244, 149, 5, 48, 66, 7, 196, 87, 211, 65, 76, 66, 8, 197, 77, 16,
+			84, 51, 176, 65, 8, 197, 73, 176, 145, 5, 48, 66, 9, 198, 73, 124, 15, 17, 16, 85, 67, 9, 198, 73, 60, 15, 17, 16, 85, 67,
+			7, 196, 220, 193, 65, 76, 66, 9, 198, 65, 91, 87, 17, 16, 85, 66, 6, 195, 66, 152, 211, 66, 9, 198, 67, 211, 143, 17, 16, 85,
+			67, 7, 196, 66, 116, 65, 76, 66, 7, 196, 67, 197, 6, 76, 67, 9, 198, 66, 244, 207, 17, 16, 85, 67, 9, 198, 66, 209, 143, 17,
+			16, 85, 68, 7, 196, 54, 241, 65, 76, 66, 9, 198, 47, 164, 207, 17, 16, 85, 67, 8, 197, 9, 22, 205, 11, 160, 65, 0, 7, 196,
+			66, 149, 163, 72, 66, 0, 8, 197, 90, 210, 85, 5, 48, 67, 8, 197, 73, 77, 132, 5, 48, 67, 7, 196, 165, 94, 193, 76, 67, 7,
+			196, 166, 129, 1, 76, 67, 9, 198, 68, 18, 3, 68, 20, 192, 66, 9, 198, 64, 243, 6, 16, 20, 192, 67, 8, 197, 66, 49, 9, 5,
+			48, 67, 9, 198, 44, 48, 69, 68, 20, 192, 66, 9, 198, 20, 99, 6, 16, 20, 192, 67, 8, 197, 4, 74, 68, 5, 48, 67, 0, 0,
+			9, 198, 86, 181, 12, 76, 100, 192, 67, 9, 198, 73, 64, 140, 36, 208, 83, 67, 8, 197, 164, 180, 253, 5, 48, 67, 9, 198, 65, 34,
+			86, 224, 20, 192, 67, 8, 197, 66, 148, 58, 5, 48, 67, 9, 198, 64, 244, 147, 82, 52, 192, 67, 12, 201, 48, 98, 210, 36, 179, 196,
+			68, 21, 64, 68, 9, 198, 46, 241, 73, 20, 20, 192, 67, 8, 197, 22, 196, 253, 5, 48, 67, 9, 198, 20, 100, 147, 184, 20, 192, 67,
+			0, 9, 198, 98, 113, 139, 61, 128, 82, 68, 0, 9, 198, 92, 149, 123, 10, 52, 192, 65, 9, 198, 76, 101, 142, 177, 16, 83, 67, 9,
+			198, 64, 197, 19, 177, 16, 83, 67, 9, 198, 47, 52, 209, 5, 65, 122, 67, 12, 201, 47, 17, 141, 5, 51, 196, 68, 21, 64, 69, 9,
+			198, 20, 97, 48, 236, 20, 192, 68, 10, 199, 8, 146, 195, 4, 84, 65, 76, 67, 9, 198, 4, 67, 15, 55, 176, 83, 68, 0, 9, 198,
+			46, 233, 193, 77, 128, 82, 68, 0, 12, 201, 84, 244, 236, 233, 51, 196, 68, 21, 64, 69, 10, 199, 84, 244, 207, 5, 14, 129, 76, 69,
+			10, 199, 77, 18, 84, 54, 164, 65, 76, 68, 9, 198, 67, 100, 201, 213, 65, 122, 68, 9, 198, 47, 19, 193, 67, 160, 83, 69, 0, 0,
+			11, 1, 35, 72, 6, 37, 38, 36, 95, 0, 27, 11, 200, 73, 68, 59, 84, 244, 149, 5, 48, 68, 11, 200, 68, 17, 73, 60, 20, 58,
+			5, 48, 70, 10, 199, 47, 49, 12, 60, 222, 193, 76, 68, 10, 199, 197, 36, 6, 45, 63, 65, 76, 68, 12, 201, 13, 177, 12, 25, 98,
+			69, 68, 20, 192, 68, 0, 0, 13, 1, 37, 48, 34, 39, 117, 6, 36, 50, 47, 0, 27, 0, 6, 1, 38, 21, 0, 47, 0, 0, 0,
+			13, 65, 116, 6, 36, 34, 65, 4, 35, 64, 13, 49, 0, 13, 202, 76, 99, 6, 84, 244, 207, 5, 14, 129, 76, 71, 12, 201, 24, 193,
+			139, 79, 96, 68, 164, 64, 83, 70, 0, 15, 1, 42, 88, 84, 36, 88, 72, 6, 37, 76, 49, 35, 0, 27, 0, 9, 1, 43, 48, 55,
+			40, 89, 0, 27, 9, 198, 84, 244, 221, 60, 163, 0, 66, 0, 0, 4, 129, 45, 8, 0, 0, 21, 1, 47, 50, 35, 49, 64, 6, 39,
+			50, 36, 50, 35, 15, 76, 36, 34, 47, 4, 35, 0, 7, 196, 180, 16, 129, 100, 67, 0, 0, 6, 195, 25, 41, 21, 66, 0, 0, 8,
+			197, 32, 241, 17, 5, 80, 66, 0, 0, 6, 195, 64, 148, 186, 65, 9, 198, 60, 211, 196, 68, 21, 64, 67, 6, 195, 45, 69, 122, 65,
+			6, 195, 44, 100, 186, 65, 6, 195, 20, 98, 250, 65, 9, 198, 8, 147, 196, 68, 21, 64, 67, 6, 195, 5, 96, 83, 66, 6, 195, 4,
+			32, 83, 66, 0, 7, 196, 8, 98, 193, 72, 66, 0, 6, 195, 92, 153, 83, 66, 9, 198, 87, 51, 196, 68, 21, 64, 67, 9, 198, 79,
+			131, 196, 68, 21, 64, 67, 9, 198, 76, 148, 15, 17, 16, 85, 67, 9, 198, 76, 99, 6, 17, 16, 85, 67, 9, 198, 64, 243, 9, 17,
+			16, 85, 67, 9, 198, 67, 160, 68, 68, 21, 64, 67, 7, 196, 55, 0, 71, 236, 67, 9, 198, 48, 148, 207, 17, 16, 85, 67, 9, 198,
+			140, 225, 68, 68, 21, 64, 66, 7, 196, 44, 194, 82, 232, 65, 9, 198, 46, 210, 68, 68, 21, 64, 67, 9, 198, 25, 51, 143, 17, 16,
+			85, 67, 7, 196, 21, 66, 193, 76, 66, 9, 198, 153, 51, 196, 68, 21, 64, 67, 0, 8, 197, 44, 243, 2, 5, 32, 66, 0, 9, 198,
+			91, 209, 143, 17, 16, 85, 68, 10, 199, 88, 99, 9, 60, 68, 65, 84, 68, 10, 199, 68, 17, 73, 60, 68, 65, 84, 68, 8, 197, 64,
+			245, 131, 5, 48, 66, 8, 197, 60, 37, 131, 5, 48, 66, 7, 196, 46, 144, 193, 76, 66, 7, 196, 5, 14, 129, 76, 67, 0, 0, 8,
+			197, 74, 226, 75, 5, 48, 67, 11, 200, 72, 98, 72, 52, 241, 17, 5, 80, 68, 8, 197, 66, 144, 209, 5, 48, 66, 6, 195, 244, 146,
+			0, 66, 8, 197, 52, 97, 38, 5, 48, 67, 7, 196, 141, 74, 65, 76, 68, 10, 199, 47, 161, 73, 60, 68, 65, 84, 68, 8, 197, 23,
+			178, 67, 5, 48, 67, 11, 200, 8, 144, 140, 36, 241, 17, 5, 80, 68, 7, 196, 175, 96, 129, 76, 67, 8, 197, 4, 90, 82, 5, 48,
+			67, 8, 197, 153, 51, 205, 5, 48, 67, 0, 10, 199, 73, 177, 12, 24, 80, 193, 96, 66, 8, 197, 66, 242, 233, 5, 32, 67, 0, 16,
+			1, 61, 36, 15, 34, 6, 35, 84, 50, 39, 15, 50, 4, 35, 0, 9, 198, 84, 16, 145, 36, 176, 83, 67, 8, 197, 73, 67, 37, 145,
+			48, 67, 11, 200, 73, 1, 139, 79, 97, 17, 5, 80, 67, 8, 197, 164, 133, 12, 149, 48, 67, 8, 197, 164, 142, 195, 5, 48, 67, 9,
+			198, 48, 98, 211, 244, 20, 192, 67, 9, 198, 44, 243, 66, 196, 20, 192, 67, 8, 197, 35, 162, 38, 5, 48, 67, 11, 200, 24, 193, 139,
+			79, 97, 17, 5, 80, 68, 9, 198, 21, 64, 140, 36, 176, 83, 67, 9, 198, 20, 99, 108, 68, 20, 192, 67, 9, 198, 8, 148, 148, 49,
+			80, 83, 67, 8, 197, 153, 59, 17, 5, 48, 67, 0, 7, 196, 88, 18, 163, 32, 66, 8, 197, 64, 100, 205, 24, 128, 66, 9, 198, 47,
+			52, 209, 4, 32, 82, 67, 0, 8, 197, 55, 163, 109, 4, 80, 67, 9, 198, 45, 22, 196, 157, 16, 83, 67, 9, 198, 189, 50, 80, 5,
+			32, 83, 68, 0, 11, 1, 64, 49, 55, 6, 39, 65, 71, 35, 0, 0, 10, 198, 64, 243, 70, 28, 85, 0, 72, 23, 10, 199, 75, 180,
+			201, 84, 146, 193, 76, 68, 13, 202, 68, 17, 73, 61, 49, 140, 24, 68, 65, 84, 70, 10, 199, 64, 241, 82, 24, 186, 101, 68, 65, 10,
+			199, 64, 20, 209, 39, 165, 129, 76, 68, 10, 199, 52, 20, 209, 39, 165, 129, 76, 68, 0, 0, 11, 200, 88, 147, 75, 60, 208, 177, 5,
+			48, 68, 10, 199, 67, 100, 198, 45, 63, 65, 76, 68, 0, 0, 0, 7, 196, 87, 3, 205, 192, 67, 6, 195, 30, 193, 138, 66, 0, 12,
+			201, 47, 52, 209, 5, 10, 67, 68, 20, 192, 68, 0, 0, 12, 201, 221, 114, 109, 20, 99, 108, 68, 20, 192, 70, 0, 0, 6, 195, 75,
+			0, 83, 66, 0, 0, 9, 198, 55, 50, 83, 247, 17, 0, 66, 7, 196, 44, 99, 6, 100, 66, 0, 0, 5, 194, 56, 144, 72, 5, 194,
+			48, 144, 72, 0, 5, 194, 104, 96, 72, 5, 194, 72, 96, 72, 0, 6, 195, 74, 208, 77, 66, 0, 6, 195, 84, 18, 47, 66, 6, 195,
+			79, 203, 192, 66, 6, 195, 76, 145, 47, 66, 6, 195, 149, 27, 192, 66, 6, 195, 56, 150, 111, 66, 6, 195, 144, 75, 192, 66, 6, 195,
+			52, 17, 47, 66, 6, 195, 44, 20, 47, 66, 6, 195, 44, 18, 47, 66, 6, 195, 182, 53, 128, 66, 6, 195, 4, 164, 111, 66, 0, 7,
+			196, 76, 99, 6, 92, 66, 7, 196, 72, 19, 70, 92, 66, 7, 196, 52, 243, 6, 92, 66, 0, 7, 195, 45, 16, 74, 72, 23, 6, 195,
+			130, 81, 47, 67, 6, 195, 91, 163, 111, 66, 6, 195, 87, 179, 111, 66, 7, 196, 81, 16, 68, 188, 67, 7, 196, 68, 17, 73, 188, 67,
+			6, 195, 67, 101, 111, 66, 6, 195, 54, 241, 47, 66, 6, 195, 47, 161, 111, 66, 6, 195, 34, 241, 111, 66, 7, 196, 16, 194, 68, 188,
+			66, 6, 195, 19, 177, 111, 66, 0, 6, 194, 144, 80, 72, 23, 8, 197, 104, 145, 12, 25, 112, 66, 7, 196, 88, 18, 27, 68, 66, 8,
+			197, 77, 16, 80, 25, 112, 66, 8, 197, 72, 193, 144, 25, 112, 66, 7, 196, 72, 191, 70, 92, 66, 9, 198, 75, 162, 207, 84, 17, 0,
+			67, 8, 197, 64, 241, 76, 25, 112, 66, 6, 195, 64, 148, 59, 66, 6, 195, 46, 238, 192, 66, 6, 195, 21, 65, 147, 66, 8, 197, 11,
+			161, 140, 25, 80, 67, 0, 11, 66, 80, 192, 40, 55, 37, 117, 35, 0, 24, 8, 197, 89, 67, 9, 18, 240, 67, 6, 195, 75, 160, 74,
+			66, 8, 197, 68, 19, 65, 34, 240, 67, 8, 197, 161, 68, 144, 25, 96, 67, 6, 195, 46, 208, 74, 66, 7, 196, 12, 100, 251, 188, 67,
+			7, 196, 232, 208, 68, 188, 67, 0, 5, 194, 72, 16, 72, 9, 198, 77, 18, 66, 82, 67, 0, 67, 6, 195, 79, 178, 123, 67, 6, 195,
+			149, 1, 147, 66, 9, 198, 72, 180, 73, 64, 101, 192, 66, 7, 196, 68, 18, 13, 236, 66, 6, 195, 66, 209, 147, 66, 7, 196, 60, 211,
+			6, 76, 66, 6, 195, 60, 40, 203, 65, 8, 197, 140, 179, 205, 25, 112, 65, 7, 196, 44, 243, 6, 76, 66, 9, 198, 44, 148, 134, 48,
+			101, 192, 65, 7, 196, 44, 20, 137, 236, 67, 6, 195, 10, 225, 147, 66, 6, 195, 10, 209, 147, 66, 7, 196, 5, 51, 6, 76, 66, 0,
+			8, 196, 66, 196, 65, 40, 72, 23, 8, 196, 144, 180, 65, 40, 72, 23, 8, 197, 148, 194, 82, 54, 240, 67, 8, 197, 70, 241, 70, 54,
+			240, 67, 6, 195, 64, 97, 109, 66, 7, 196, 55, 62, 35, 56, 67, 8, 197, 55, 178, 69, 38, 240, 68, 6, 195, 52, 97, 109, 66, 7,
+			196, 47, 162, 70, 72, 65, 8, 197, 46, 211, 194, 70, 240, 67, 8, 197, 20, 240, 187, 54, 240, 65, 7, 196, 14, 222, 201, 188, 68, 9,
+			198, 5, 36, 209, 4, 75, 192, 67, 7, 196, 7, 190, 35, 56, 68, 6, 195, 4, 33, 109, 66, 0, 7, 196, 148, 34, 70, 76, 67, 8,
+			197, 73, 178, 204, 25, 48, 66, 6, 195, 67, 160, 69, 66, 8, 197, 44, 244, 204, 25, 48, 66, 0, 6, 195, 91, 161, 109, 66, 6, 195,
+			74, 241, 109, 66, 7, 196, 68, 148, 212, 180, 67, 9, 198, 66, 241, 73, 101, 11, 192, 67, 6, 195, 55, 166, 109, 66, 6, 195, 54, 241,
+			45, 66, 9, 198, 21, 177, 197, 60, 36, 111, 67, 6, 195, 14, 241, 109, 66, 0, 9, 198, 88, 244, 198, 48, 158, 192, 68, 9, 198, 72,
+			19, 79, 48, 100, 192, 67, 7, 196, 67, 212, 233, 76, 66, 7, 196, 67, 2, 238, 236, 65, 9, 198, 53, 68, 65, 84, 100, 192, 67, 9,
+			198, 52, 241, 70, 48, 158, 192, 68, 8, 197, 8, 18, 179, 25, 48, 67, 0, 30, 1, 92, 39, 71, 34, 6, 35, 47, 50, 35, 15, 50,
+			35, 49, 64, 6, 39, 50, 36, 50, 35, 15, 76, 36, 34, 47, 4, 35, 0, 8, 197, 76, 96, 83, 70, 208, 67, 10, 199, 72, 198, 206,
+			96, 240, 145, 188, 67, 7, 196, 72, 187, 197, 180, 66, 12, 201, 65, 34, 86, 224, 20, 207, 48, 241, 0, 69, 8, 197, 64, 20, 1, 18,
+			208, 67, 6, 195, 55, 30, 237, 67, 7, 196, 48, 144, 187, 180, 67, 7, 196, 24, 195, 65, 32, 66, 8, 197, 20, 101, 201, 54, 208, 67,
+			6, 195, 19, 14, 237, 67, 6, 195, 5, 56, 200, 66, 0, 8, 197, 65, 18, 75, 140, 80, 66, 9, 198, 64, 148, 147, 60, 193, 147, 67,
+			9, 198, 64, 98, 210, 36, 209, 147, 67, 6, 195, 61, 153, 128, 66, 7, 196, 212, 94, 1, 20, 67, 0, 12, 1, 94, 49, 39, 55, 6,
+			37, 71, 49, 35, 0, 8, 197, 96, 20, 17, 4, 128, 66, 8, 197, 52, 20, 251, 38, 208, 68, 7, 196, 45, 68, 100, 32, 66, 9, 198,
+			9, 180, 251, 86, 50, 128, 65, 0, 5, 194, 52, 144, 72, 9, 198, 85, 26, 215, 39, 62, 192, 68, 9, 198, 86, 196, 147, 236, 158, 192,
+			68, 8, 197, 73, 177, 108, 140, 80, 67, 9, 198, 60, 47, 79, 76, 243, 123, 69, 9, 198, 52, 20, 139, 232, 17, 64, 67, 0, 14, 4,
+			95, 49, 77, 49, 99, 37, 55, 6, 35, 72, 35, 0, 6, 195, 157, 16, 68, 66, 7, 196, 212, 83, 227, 32, 67, 8, 197, 8, 19, 194,
+			4, 32, 67, 6, 195, 8, 31, 0, 66, 0, 6, 195, 24, 82, 64, 65, 10, 198, 36, 131, 70, 28, 85, 0, 72, 23, 20, 4, 95, 49,
+			77, 50, 36, 72, 6, 37, 50, 15, 65, 37, 55, 37, 6, 39, 50, 0, 9, 198, 72, 197, 7, 8, 22, 64, 66, 8, 197, 8, 241, 1,
+			149, 144, 67, 0, 21, 4, 95, 49, 77, 51, 36, 72, 6, 37, 50, 15, 65, 37, 55, 37, 6, 35, 34, 72, 0, 6, 195, 44, 246, 47,
+			66, 6, 195, 24, 180, 111, 66, 8, 197, 21, 180, 117, 140, 128, 67, 0, 9, 198, 153, 62, 61, 78, 148, 192, 68, 0, 7, 196, 73, 66,
+			205, 188, 66, 6, 195, 221, 4, 111, 66, 7, 196, 52, 97, 5, 188, 66, 7, 196, 44, 243, 24, 188, 66, 0, 0, 8, 197, 76, 240, 143,
+			18, 240, 67, 7, 196, 221, 3, 227, 56, 67, 9, 198, 67, 100, 201, 212, 64, 72, 68, 6, 195, 44, 248, 202, 66, 8, 197, 16, 243, 15,
+			18, 240, 67, 0, 0, 8, 197, 67, 213, 198, 140, 224, 67, 6, 195, 55, 219, 64, 66, 6, 195, 47, 219, 64, 66, 9, 198, 44, 97, 6,
+			48, 43, 192, 65, 6, 195, 212, 187, 64, 66, 0, 7, 196, 73, 67, 81, 172, 65, 10, 199, 58, 115, 194, 60, 64, 101, 100, 69, 7, 196,
+			13, 178, 36, 44, 65, 0, 6, 195, 86, 226, 109, 67, 7, 196, 84, 99, 197, 180, 67, 9, 198, 72, 19, 84, 68, 18, 128, 67, 9, 198,
+			52, 97, 45, 60, 219, 192, 68, 9, 198, 44, 193, 144, 76, 243, 111, 67, 9, 198, 47, 19, 198, 45, 27, 192, 68, 9, 198, 8, 144, 140,
+			36, 243, 111, 68, 8, 197, 189, 63, 15, 54, 240, 68, 0, 7, 196, 67, 96, 227, 44, 65, 8, 197, 65, 18, 72, 70, 176, 65, 0, 7,
+			196, 4, 83, 124, 180, 67, 0, 0, 8, 197, 64, 20, 147, 246, 208, 67, 8, 197, 44, 243, 51, 38, 208, 68, 8, 197, 197, 49, 132, 70,
+			208, 67, 8, 197, 169, 113, 139, 70, 208, 67, 0, 5, 194, 72, 144, 72, 9, 198, 220, 217, 13, 9, 67, 0, 67, 0, 6, 194, 96, 96,
+			72, 23, 9, 198, 64, 244, 240, 92, 155, 64, 68, 0, 6, 195, 61, 49, 151, 66, 6, 195, 37, 161, 151, 66, 6, 195, 20, 97, 151, 66,
+			0, 9, 198, 95, 177, 141, 204, 155, 64, 69, 6, 195, 90, 107, 192, 66, 6, 195, 148, 59, 192, 66, 6, 195, 148, 43, 192, 66, 6, 195,
+			74, 107, 192, 66, 6, 195, 52, 105, 78, 66, 6, 195, 20, 144, 239, 66, 6, 195, 20, 98, 239, 66, 6, 195, 10, 251, 192, 66, 0, 7,
+			196, 96, 100, 198, 92, 66, 7, 196, 48, 100, 198, 92, 66, 6, 195, 47, 49, 151, 66, 0, 7, 196, 88, 18, 131, 188, 66, 7, 196, 77,
+			244, 66, 188, 66, 6, 195, 74, 82, 239, 66, 6, 195, 75, 16, 80, 66, 11, 200, 68, 17, 73, 61, 34, 68, 144, 192, 69, 7, 196, 45,
+			68, 66, 188, 66, 6, 195, 47, 176, 239, 66, 7, 196, 44, 96, 129, 64, 66, 7, 196, 13, 67, 11, 188, 66, 9, 198, 169, 113, 129, 20,
+			223, 45, 69, 10, 199, 168, 81, 143, 72, 145, 36, 48, 69, 0, 5, 194, 80, 112, 72, 6, 195, 87, 14, 192, 66, 6, 195, 70, 106, 23,
+			66, 7, 196, 32, 54, 232, 92, 66, 0, 10, 66, 96, 192, 76, 55, 36, 50, 0, 24, 14, 66, 64, 192, 48, 55, 39, 91, 47, 6, 35,
+			47, 0, 24, 6, 1, 118, 21, 0, 47, 6, 195, 87, 17, 146, 66, 8, 197, 64, 99, 9, 46, 240, 67, 6, 195, 67, 169, 175, 67, 5,
+			194, 158, 208, 66, 8, 197, 52, 245, 137, 46, 240, 67, 7, 196, 47, 96, 82, 188, 67, 7, 196, 47, 164, 198, 96, 66, 5, 194, 214, 208,
+			66, 8, 197, 12, 99, 9, 46, 240, 67, 7, 196, 11, 160, 66, 188, 67, 0, 7, 195, 72, 193, 133, 72, 23, 7, 196, 76, 101, 83, 236,
+			66, 6, 195, 222, 132, 192, 66, 9, 198, 64, 148, 207, 52, 101, 192, 65, 6, 195, 66, 177, 147, 66, 7, 196, 61, 82, 87, 236, 67, 7,
+			196, 145, 156, 6, 92, 65, 6, 195, 54, 193, 147, 66, 9, 198, 45, 22, 210, 76, 101, 192, 66, 7, 196, 44, 20, 198, 76, 66, 7, 196,
+			25, 36, 198, 76, 66, 8, 197, 12, 22, 112, 25, 112, 65, 8, 197, 8, 97, 239, 25, 112, 67, 6, 195, 10, 242, 251, 66, 0, 6, 1,
+			120, 21, 0, 47, 6, 195, 52, 105, 76, 66, 7, 196, 45, 25, 129, 40, 66, 11, 200, 47, 52, 209, 4, 17, 77, 242, 208, 69, 6, 195,
+			46, 107, 64, 66, 6, 195, 36, 81, 173, 67, 8, 197, 32, 16, 145, 154, 240, 67, 6, 195, 12, 20, 173, 66, 6, 195, 232, 107, 64, 67,
+			0, 7, 196, 79, 181, 201, 236, 67, 7, 196, 149, 2, 87, 236, 67, 7, 196, 74, 227, 205, 236, 67, 9, 198, 65, 180, 67, 192, 101, 192,
+			67, 7, 196, 67, 21, 198, 76, 66, 8, 197, 54, 49, 112, 25, 112, 67, 8, 197, 52, 148, 139, 25, 48, 66, 6, 195, 51, 218, 19, 66,
+			8, 197, 46, 49, 112, 25, 112, 65, 8, 197, 44, 20, 139, 25, 48, 66, 6, 195, 196, 124, 59, 67, 7, 196, 31, 164, 201, 236, 67, 8,
+			197, 25, 2, 83, 25, 48, 67, 7, 196, 9, 23, 232, 76, 66, 0, 9, 198, 77, 16, 77, 12, 18, 128, 66, 6, 195, 66, 144, 237, 66,
+			7, 196, 53, 68, 139, 180, 66, 6, 195, 51, 17, 173, 67, 6, 195, 47, 17, 237, 66, 7, 196, 29, 68, 100, 48, 66, 9, 198, 5, 3,
+			211, 24, 242, 0, 68, 0, 8, 197, 79, 99, 80, 25, 48, 66, 7, 196, 165, 15, 83, 236, 67, 8, 197, 64, 195, 218, 4, 80, 66, 8,
+			197, 67, 162, 83, 25, 48, 67, 8, 197, 52, 98, 51, 25, 48, 67, 7, 196, 44, 243, 6, 28, 66, 7, 196, 44, 148, 6, 28, 66, 8,
+			197, 46, 163, 147, 25, 48, 66, 8, 197, 44, 62, 147, 25, 48, 66, 8, 197, 44, 16, 177, 25, 48, 67, 6, 195, 14, 209, 135, 66, 8,
+			197, 11, 177, 139, 25, 48, 67, 7, 196, 11, 172, 198, 76, 67, 8, 197, 189, 242, 83, 25, 48, 68, 7, 196, 173, 114, 115, 236, 68, 0,
+			8, 197, 88, 147, 73, 46, 208, 67, 6, 195, 79, 128, 72, 66, 7, 196, 165, 114, 101, 48, 67, 8, 197, 68, 17, 73, 46, 208, 67, 7,
+			196, 160, 209, 165, 48, 67, 7, 196, 49, 67, 113, 180, 67, 7, 196, 46, 242, 66, 180, 67, 0, 6, 194, 56, 240, 72, 23, 6, 194, 64,
+			240, 72, 23, 9, 198, 72, 49, 147, 48, 243, 123, 67, 9, 198, 65, 64, 187, 76, 100, 192, 67, 8, 197, 67, 4, 137, 207, 176, 68, 8,
+			197, 144, 154, 147, 25, 48, 68, 7, 196, 45, 190, 70, 28, 66, 9, 198, 44, 243, 66, 4, 170, 17, 67, 9, 198, 36, 213, 14, 37, 49,
+			147, 68, 8, 197, 22, 196, 209, 199, 176, 67, 9, 198, 20, 148, 144, 189, 46, 192, 67, 9, 198, 20, 96, 134, 48, 243, 123, 68, 9, 198,
+			22, 209, 139, 60, 222, 192, 68, 9, 198, 5, 92, 73, 76, 100, 192, 68, 0, 9, 198, 84, 100, 147, 36, 59, 64, 67, 8, 197, 84, 97,
+			123, 10, 208, 65, 7, 196, 79, 179, 113, 180, 67, 9, 198, 72, 19, 79, 72, 59, 64, 67, 7, 196, 67, 176, 193, 32, 66, 7, 196, 244,
+			145, 49, 180, 68, 7, 196, 55, 161, 49, 180, 67, 9, 198, 52, 17, 5, 188, 242, 0, 67, 8, 197, 44, 22, 75, 154, 208, 67, 7, 196,
+			47, 169, 3, 180, 67, 7, 196, 47, 161, 113, 180, 67, 7, 196, 197, 62, 195, 180, 67, 10, 199, 20, 99, 9, 44, 20, 198, 72, 68, 0,
+			5, 194, 76, 144, 72, 10, 199, 72, 98, 212, 56, 83, 205, 236, 68, 8, 197, 166, 181, 201, 207, 176, 69, 9, 198, 65, 18, 125, 37, 49,
+			147, 68, 6, 195, 145, 1, 131, 66, 9, 198, 55, 195, 196, 48, 97, 64, 67, 9, 198, 44, 243, 73, 72, 156, 251, 69, 9, 198, 44, 59,
+			211, 37, 49, 147, 67, 10, 199, 44, 20, 1, 92, 148, 198, 76, 68, 9, 198, 24, 193, 139, 79, 99, 123, 68, 9, 198, 153, 63, 73, 76,
+			100, 192, 68, 0, 0, 9, 198, 224, 242, 9, 92, 156, 251, 70, 9, 198, 54, 249, 76, 37, 49, 147, 68, 10, 199, 169, 34, 207, 32, 148,
+			198, 76, 68, 0, 6, 195, 176, 107, 192, 67, 6, 195, 214, 51, 128, 66, 0, 10, 199, 84, 244, 253, 25, 15, 83, 236, 69, 11, 200, 80,
+			226, 67, 237, 34, 83, 25, 48, 69, 10, 199, 73, 64, 251, 192, 148, 198, 76, 69, 11, 200, 73, 1, 151, 38, 210, 83, 25, 48, 69, 11,
+			200, 72, 198, 206, 96, 241, 12, 24, 80, 67, 10, 199, 67, 100, 144, 236, 148, 198, 76, 68, 10, 199, 161, 68, 209, 180, 148, 198, 76, 69,
+			10, 199, 22, 209, 139, 60, 67, 6, 20, 68, 9, 198, 19, 14, 237, 37, 49, 147, 69, 7, 196, 10, 212, 129, 52, 66, 0, 6, 195, 66,
+			57, 78, 66, 6, 195, 10, 208, 239, 66, 0, 9, 198, 74, 129, 39, 180, 97, 192, 68, 11, 200, 64, 243, 20, 66, 244, 137, 207, 176, 70,
+			7, 196, 153, 59, 35, 12, 67, 0, 6, 195, 68, 25, 74, 66, 11, 200, 47, 19, 213, 25, 36, 201, 14, 208, 69, 0, 11, 200, 24, 193,
+			139, 79, 108, 71, 195, 176, 70, 0, 6, 195, 97, 64, 237, 66, 8, 197, 54, 214, 20, 18, 240, 67, 10, 199, 168, 81, 143, 79, 179, 113,
+			180, 70, 0, 0, 7, 196, 52, 18, 4, 180, 66, 0, 0, 16, 67, 9, 67, 0, 71, 40, 55, 36, 84, 4, 35, 34, 47, 0, 24, 8,
+			197, 72, 20, 209, 5, 0, 66, 9, 198, 66, 148, 147, 69, 64, 239, 67, 8, 197, 161, 77, 135, 4, 160, 68, 0, 0, 9, 198, 52, 146,
+			246, 72, 190, 0, 67, 8, 197, 12, 100, 246, 14, 208, 67, 0, 0, 0, 6, 195, 79, 143, 64, 66, 6, 195, 61, 52, 61, 66, 7, 196,
+			52, 241, 70, 52, 66, 6, 195, 46, 214, 213, 66, 6, 195, 46, 209, 141, 66, 7, 196, 44, 17, 70, 52, 66, 7, 196, 8, 17, 70, 52,
+			66, 0, 0, 6, 195, 75, 7, 125, 66, 0, 0, 7, 196, 96, 17, 91, 68, 66, 8, 197, 84, 243, 11, 51, 208, 66, 8, 197, 25, 99,
+			204, 61, 48, 67, 8, 197, 20, 100, 144, 61, 48, 66, 0, 8, 197, 77, 18, 88, 51, 0, 66, 6, 195, 5, 1, 140, 66, 7, 196, 189,
+			52, 107, 72, 66, 0, 7, 196, 48, 146, 221, 244, 66, 7, 196, 45, 246, 6, 44, 66, 7, 196, 197, 94, 139, 76, 66, 7, 196, 197, 62,
+			201, 244, 68, 7, 196, 36, 82, 79, 76, 67, 0, 8, 197, 73, 69, 73, 45, 32, 66, 8, 197, 64, 145, 13, 24, 160, 66, 7, 196, 44,
+			242, 6, 48, 66, 0, 8, 197, 86, 254, 137, 61, 48, 68, 8, 197, 77, 245, 76, 24, 176, 66, 7, 196, 148, 229, 221, 244, 66, 7, 196,
+			73, 180, 134, 20, 66, 9, 198, 47, 53, 76, 36, 180, 192, 66, 8, 197, 44, 243, 80, 61, 48, 66, 8, 197, 44, 240, 85, 119, 208, 67,
+			7, 196, 46, 50, 221, 244, 66, 9, 198, 24, 180, 147, 70, 180, 192, 66, 9, 198, 24, 180, 147, 236, 159, 64, 68, 8, 197, 21, 64, 140,
+			119, 208, 66, 8, 197, 8, 198, 213, 119, 208, 66, 8, 197, 4, 208, 83, 119, 208, 67, 0, 9, 198, 52, 227, 196, 61, 131, 48, 67, 0,
+			7, 196, 69, 179, 70, 28, 66, 9, 198, 64, 20, 209, 36, 244, 192, 67, 7, 196, 175, 209, 93, 244, 67, 0, 7, 196, 67, 171, 70, 48,
+			67, 7, 196, 44, 21, 70, 32, 66, 9, 198, 20, 124, 19, 108, 195, 112, 65, 0, 9, 198, 73, 4, 113, 77, 223, 64, 66, 7, 196, 220,
+			197, 70, 28, 66, 9, 198, 172, 49, 133, 80, 180, 192, 67, 0, 0, 8, 197, 73, 58, 77, 24, 112, 66, 8, 197, 72, 201, 253, 24, 80,
+			67, 5, 194, 159, 0, 66, 8, 197, 18, 145, 125, 24, 80, 67, 8, 197, 153, 62, 46, 61, 48, 68, 0, 7, 196, 60, 36, 134, 16, 66,
+			0, 20, 4, 95, 50, 77, 50, 72, 84, 6, 35, 15, 65, 37, 55, 37, 6, 39, 50, 35, 0, 9, 198, 99, 179, 143, 16, 193, 133, 67,
+			0, 21, 4, 95, 50, 77, 51, 72, 84, 6, 35, 15, 65, 37, 55, 37, 6, 35, 34, 72, 35, 0, 6, 195, 60, 35, 112, 66, 7, 196,
+			18, 61, 105, 32, 67, 0, 7, 195, 8, 98, 0, 72, 23, 0, 7, 196, 73, 68, 201, 192, 67, 11, 200, 45, 67, 133, 81, 17, 71, 38,
+			0, 65, 0, 8, 197, 67, 96, 140, 24, 208, 66, 0, 0, 9, 198, 67, 212, 213, 24, 163, 0, 66, 0, 7, 196, 79, 99, 6, 40, 66,
+			0, 0, 8, 197, 212, 83, 204, 24, 160, 67, 0, 8, 197, 68, 18, 11, 61, 144, 66, 0, 0, 0, 7, 195, 73, 180, 128, 72, 23, 0,
+			6, 195, 60, 33, 141, 66, 9, 198, 45, 223, 85, 37, 145, 139, 65, 0, 0, 0, 7, 196, 61, 50, 207, 72, 66, 6, 195, 61, 36, 240,
+			66, 0, 7, 196, 25, 81, 139, 76, 66, 0, 6, 195, 149, 15, 0, 66, 8, 197, 64, 241, 78, 61, 32, 66, 6, 195, 46, 148, 240, 66,
+			7, 196, 20, 240, 74, 192, 67, 0, 7, 196, 67, 97, 139, 76, 66, 6, 195, 55, 31, 64, 66, 8, 197, 45, 179, 139, 119, 208, 66, 0,
+			8, 197, 165, 83, 6, 45, 32, 66, 6, 195, 61, 33, 140, 66, 7, 196, 48, 149, 198, 40, 66, 0, 8, 197, 165, 36, 6, 45, 48, 66,
+			8, 197, 20, 155, 70, 45, 48, 67, 6, 195, 212, 18, 189, 67, 0, 6, 195, 66, 241, 140, 66, 0, 14, 67, 16, 241, 64, 81, 39, 72,
+			6, 37, 50, 35, 0, 24, 7, 196, 78, 147, 157, 244, 66, 9, 198, 67, 100, 144, 24, 180, 192, 66, 9, 198, 47, 52, 144, 24, 180, 192,
+			66, 8, 197, 28, 145, 12, 119, 208, 66, 7, 196, 10, 196, 157, 244, 66, 0, 8, 197, 64, 20, 147, 24, 192, 66, 0, 7, 196, 73, 51,
+			198, 28, 66, 9, 198, 72, 16, 143, 77, 223, 64, 67, 7, 196, 52, 100, 198, 28, 66, 8, 197, 49, 241, 79, 24, 80, 67, 7, 196, 48,
+			100, 198, 28, 66, 6, 195, 47, 97, 135, 66, 9, 198, 47, 52, 246, 49, 223, 64, 67, 7, 196, 25, 100, 198, 28, 66, 0, 0, 7, 196,
+			99, 180, 198, 28, 66, 8, 197, 93, 181, 83, 24, 112, 66, 7, 196, 77, 180, 232, 28, 66, 9, 198, 79, 176, 80, 24, 52, 192, 67, 7,
+			196, 73, 61, 134, 28, 66, 7, 196, 72, 148, 232, 28, 66, 8, 197, 68, 20, 147, 24, 112, 66, 7, 196, 140, 212, 198, 28, 66, 8, 197,
+			45, 179, 147, 24, 112, 66, 7, 196, 47, 212, 198, 28, 66, 8, 197, 197, 36, 241, 45, 48, 66, 8, 197, 9, 67, 83, 24, 112, 66, 7,
+			196, 232, 76, 230, 76, 67, 0, 7, 196, 75, 20, 198, 32, 66, 9, 198, 52, 227, 199, 37, 49, 140, 65, 0, 9, 198, 87, 163, 65, 92,
+			96, 211, 67, 9, 198, 32, 54, 206, 76, 97, 192, 66, 0, 9, 198, 81, 4, 102, 37, 49, 140, 66, 6, 195, 144, 195, 196, 66, 9, 198,
+			32, 16, 166, 37, 49, 140, 66, 0, 7, 196, 76, 244, 198, 52, 66, 9, 198, 79, 58, 71, 37, 39, 125, 68, 0, 8, 197, 47, 178, 240,
+			24, 128, 67, 10, 199, 36, 132, 17, 152, 148, 198, 48, 66, 8, 197, 24, 179, 204, 60, 64, 67, 0, 7, 195, 176, 243, 15, 72, 23, 10,
+			199, 47, 31, 70, 28, 148, 157, 244, 69, 0, 8, 197, 66, 145, 76, 60, 64, 66, 0, 9, 198, 212, 89, 219, 69, 49, 135, 68, 0, 10,
+			199, 66, 145, 82, 150, 164, 198, 48, 66, 7, 196, 15, 180, 198, 64, 66, 0, 11, 200, 72, 49, 147, 157, 180, 83, 24, 112, 68, 0, 7,
+			196, 64, 100, 198, 48, 66, 7, 196, 52, 244, 198, 48, 66, 7, 196, 44, 244, 198, 48, 66, 12, 201, 20, 243, 79, 81, 4, 102, 37, 49,
+			140, 68, 0, 8, 197, 8, 149, 83, 24, 176, 66, 0, 7, 196, 67, 165, 198, 48, 66, 7, 196, 47, 164, 198, 48, 66, 0, 0, 0, 0,
+			5, 194, 53, 64, 72, 0, 0, 8, 197, 55, 18, 71, 81, 0, 67, 0, 11, 65, 4, 2, 35, 89, 0, 81, 209, 129, 32, 11, 65, 4,
+			2, 35, 84, 0, 81, 208, 178, 32, 5, 193, 4, 72, 23, 7, 196, 48, 99, 84, 68, 66, 0, 6, 195, 77, 18, 115, 66, 6, 195, 72,
+			149, 115, 66, 0, 6, 195, 25, 51, 192, 65, 7, 196, 88, 19, 84, 76, 66, 7, 196, 74, 49, 84, 68, 66, 6, 195, 145, 101, 19, 66,
+			7, 196, 52, 19, 84, 76, 66, 6, 195, 11, 165, 19, 66, 0, 11, 200, 66, 145, 80, 4, 130, 83, 24, 192, 66, 8, 197, 36, 212, 20,
+			49, 32, 66, 6, 195, 26, 83, 51, 67, 0, 7, 196, 58, 192, 84, 76, 65, 8, 197, 4, 130, 77, 81, 48, 65, 0, 8, 197, 88, 97,
+			6, 55, 48, 67, 6, 195, 144, 83, 202, 66, 8, 197, 47, 50, 212, 69, 32, 66, 8, 197, 153, 51, 194, 81, 32, 67, 0, 9, 198, 77,
+			21, 2, 4, 85, 17, 67, 8, 197, 76, 99, 123, 81, 48, 67, 8, 197, 55, 166, 81, 81, 48, 66, 6, 195, 20, 147, 197, 66, 0, 7,
+			196, 44, 147, 73, 204, 67, 8, 197, 47, 165, 73, 60, 192, 67, 7, 196, 21, 180, 77, 204, 66, 0, 7, 195, 64, 241, 64, 72, 23, 8,
+			196, 36, 132, 15, 20, 72, 23, 9, 197, 20, 241, 70, 76, 240, 72, 23, 9, 197, 12, 209, 146, 76, 240, 72, 23, 7, 196, 77, 18, 79,
+			20, 66, 8, 197, 65, 67, 139, 79, 192, 66, 9, 198, 64, 97, 65, 16, 241, 0, 67, 7, 196, 5, 37, 109, 76, 66, 8, 197, 180, 19,
+			113, 81, 48, 68, 0, 9, 198, 77, 18, 80, 76, 149, 128, 66, 9, 198, 68, 18, 11, 68, 22, 0, 65, 9, 198, 52, 244, 207, 77, 18,
+			115, 68, 9, 198, 44, 243, 80, 189, 220, 192, 67, 0, 9, 197, 144, 209, 146, 76, 240, 72, 23, 9, 198, 8, 22, 137, 96, 179, 192, 65,
+			6, 195, 5, 82, 89, 66, 0, 8, 197, 72, 191, 80, 39, 48, 67, 7, 196, 66, 107, 137, 204, 68, 8, 197, 169, 52, 73, 60, 192, 67,
+			0, 9, 198, 221, 0, 69, 28, 152, 0, 65, 6, 195, 75, 19, 197, 66, 9, 198, 65, 177, 80, 108, 86, 203, 67, 0, 8, 197, 46, 249,
+			81, 39, 48, 68, 0, 0, 8, 197, 86, 227, 204, 60, 64, 67, 8, 197, 204, 179, 204, 60, 64, 67, 0, 9, 198, 52, 146, 246, 128, 137,
+			252, 69, 0, 7, 196, 79, 211, 79, 32, 66, 6, 195, 66, 236, 192, 66, 8, 197, 160, 189, 140, 60, 64, 67, 8, 197, 160, 61, 140, 60,
+			64, 67, 8, 197, 45, 68, 73, 60, 128, 67, 9, 198, 25, 50, 77, 60, 195, 196, 68, 9, 198, 17, 16, 85, 60, 195, 196, 67, 11, 200,
+			19, 14, 237, 37, 34, 77, 81, 32, 68, 0, 8, 197, 68, 144, 143, 50, 112, 67, 7, 196, 36, 188, 207, 52, 67, 0, 10, 199, 85, 16,
+			72, 24, 243, 15, 16, 68, 9, 198, 47, 161, 73, 60, 195, 196, 68, 9, 198, 193, 51, 205, 60, 195, 196, 68, 7, 196, 9, 67, 29, 204,
+			66, 0, 7, 195, 44, 20, 207, 72, 23, 10, 199, 72, 49, 147, 60, 82, 79, 20, 68, 7, 196, 74, 241, 91, 44, 66, 0, 9, 198, 88,
+			148, 147, 60, 195, 196, 67, 9, 198, 76, 100, 6, 17, 211, 200, 67, 10, 199, 52, 100, 198, 244, 243, 15, 16, 69, 9, 198, 141, 28, 68,
+			60, 195, 196, 68, 8, 197, 44, 20, 9, 103, 48, 67, 9, 198, 189, 61, 144, 60, 195, 196, 68, 10, 199, 4, 77, 130, 36, 243, 15, 16,
+			69, 0, 6, 195, 150, 50, 0, 66, 9, 198, 13, 179, 14, 60, 195, 205, 67, 0, 11, 200, 52, 146, 246, 8, 147, 204, 60, 64, 69, 8,
+			197, 52, 97, 109, 119, 48, 67, 7, 196, 25, 145, 140, 204, 67, 10, 199, 24, 66, 80, 76, 243, 15, 16, 68, 0, 9, 198, 233, 0, 69,
+			28, 146, 192, 67, 0, 8, 197, 68, 18, 11, 51, 48, 66, 0, 0, 10, 199, 164, 228, 196, 192, 243, 15, 16, 68, 0, 0, 8, 197, 67,
+			100, 236, 60, 192, 67, 0, 0, 9, 198, 189, 50, 87, 36, 179, 51, 68, 0, 7, 196, 12, 99, 20, 68, 66, 6, 195, 11, 19, 205, 66,
+			0, 6, 65, 8, 71, 13, 0, 0, 7, 196, 52, 18, 20, 76, 66, 8, 197, 44, 244, 147, 81, 16, 66, 7, 196, 47, 52, 212, 68, 66,
+			8, 197, 9, 67, 4, 81, 16, 66, 0, 8, 197, 45, 68, 139, 81, 32, 66, 0, 9, 198, 88, 145, 118, 48, 241, 0, 67, 6, 195, 148,
+			182, 205, 66, 7, 196, 74, 84, 212, 76, 66, 7, 196, 44, 240, 173, 76, 66, 9, 198, 15, 14, 207, 48, 241, 0, 68, 0, 7, 196, 44,
+			241, 212, 88, 66, 0, 8, 197, 91, 166, 12, 108, 176, 66, 7, 196, 77, 28, 79, 52, 66, 8, 197, 72, 191, 66, 81, 48, 66, 0, 6,
+			195, 86, 50, 243, 66, 0, 9, 198, 64, 18, 58, 49, 178, 192, 67, 0, 8, 197, 21, 179, 4, 81, 128, 66, 0, 9, 198, 52, 20, 139,
+			232, 198, 203, 67, 0, 0, 7, 196, 72, 197, 4, 4, 66, 8, 197, 157, 113, 131, 108, 80, 67, 0, 0, 9, 198, 65, 50, 87, 24, 54,
+			197, 67, 0, 10, 199, 45, 190, 73, 44, 241, 212, 88, 68, 0, 8, 197, 216, 208, 143, 36, 80, 67, 9, 198, 64, 243, 6, 13, 177, 64,
+			67, 8, 197, 48, 109, 195, 108, 80, 67, 9, 198, 36, 133, 13, 69, 65, 64, 67, 0, 0, 9, 198, 89, 67, 111, 60, 145, 64, 68, 8,
+			197, 74, 170, 3, 108, 80, 67, 0, 7, 196, 64, 98, 211, 196, 66, 0, 7, 196, 91, 181, 42, 52, 67, 0, 6, 195, 24, 178, 80, 66,
+			9, 198, 20, 101, 201, 8, 99, 0, 67, 9, 198, 18, 52, 144, 5, 15, 0, 67, 0, 10, 199, 197, 33, 139, 76, 149, 201, 20, 68, 9,
+			198, 28, 157, 83, 58, 118, 197, 68, 0, 0, 11, 200, 68, 20, 147, 192, 145, 131, 108, 80, 69, 8, 197, 66, 51, 167, 36, 176, 67, 8,
+			197, 55, 6, 70, 168, 176, 67, 9, 198, 24, 179, 6, 45, 50, 75, 67, 0, 6, 195, 79, 100, 238, 66, 0, 9, 198, 52, 148, 139, 196,
+			198, 203, 67, 0, 9, 198, 8, 147, 205, 37, 124, 64, 68, 6, 195, 4, 80, 89, 66, 0, 9, 198, 145, 18, 207, 76, 146, 192, 67, 9,
+			198, 16, 20, 147, 216, 227, 205, 67, 0, 6, 195, 150, 54, 64, 66, 8, 197, 204, 32, 89, 38, 0, 65, 0, 0, 9, 198, 65, 62, 207,
+			22, 180, 238, 68, 0, 10, 199, 52, 18, 146, 79, 211, 27, 44, 67, 7, 196, 32, 19, 65, 88, 66, 10, 199, 189, 50, 66, 36, 244, 201,
+			44, 69, 0, 6, 195, 66, 224, 85, 66, 0, 7, 196, 84, 20, 148, 48, 66, 8, 197, 73, 51, 205, 5, 96, 66, 8, 197, 68, 18, 13,
+			5, 96, 66, 0, 7, 65, 12, 84, 13, 0, 49, 4, 193, 12, 23, 7, 196, 99, 166, 65, 84, 66, 6, 195, 50, 113, 151, 66, 7, 196,
+			21, 65, 84, 44, 66, 7, 196, 17, 244, 84, 44, 66, 7, 196, 12, 19, 80, 240, 66, 0, 8, 197, 72, 149, 110, 37, 32, 65, 9, 198,
+			64, 17, 73, 100, 21, 128, 67, 0, 6, 195, 224, 149, 13, 65, 8, 197, 44, 20, 24, 80, 176, 66, 8, 197, 16, 102, 70, 85, 48, 66,
+			7, 196, 12, 89, 198, 92, 66, 7, 196, 11, 212, 148, 44, 66, 0, 7, 196, 148, 165, 84, 56, 66, 7, 196, 67, 101, 198, 72, 66, 7,
+			196, 32, 21, 163, 72, 66, 0, 6, 195, 67, 192, 83, 66, 8, 197, 45, 68, 89, 80, 208, 66, 0, 0, 7, 196, 91, 161, 84, 236, 65,
+			9, 198, 52, 146, 246, 86, 227, 64, 67, 8, 197, 44, 241, 207, 23, 176, 67, 0, 8, 197, 8, 99, 39, 141, 32, 67, 0, 7, 195, 13,
+			178, 0, 72, 23, 9, 198, 76, 99, 6, 64, 20, 192, 67, 8, 197, 222, 52, 73, 80, 208, 66, 9, 198, 68, 18, 23, 12, 100, 192, 66,
+			7, 196, 47, 209, 163, 76, 67, 9, 198, 44, 243, 73, 76, 100, 192, 67, 9, 198, 44, 243, 15, 21, 21, 13, 67, 9, 198, 7, 179, 197,
+			69, 67, 64, 68, 0, 11, 200, 77, 244, 76, 124, 71, 195, 25, 128, 68, 8, 197, 73, 180, 17, 80, 64, 66, 0, 8, 197, 72, 222, 129,
+			16, 80, 66, 7, 196, 74, 217, 100, 76, 67, 9, 198, 66, 146, 9, 20, 149, 13, 66, 0, 0, 7, 196, 54, 100, 84, 20, 66, 0, 7,
+			196, 45, 79, 148, 32, 66, 0, 10, 199, 44, 243, 73, 75, 162, 65, 76, 69, 0, 0, 10, 199, 72, 98, 233, 149, 18, 65, 76, 69, 11,
+			200, 67, 101, 75, 60, 210, 83, 25, 48, 68, 10, 199, 67, 99, 6, 149, 18, 65, 76, 69, 7, 196, 64, 19, 84, 44, 66, 6, 195, 55,
+			213, 11, 66, 0, 0, 6, 195, 26, 84, 0, 66, 0, 6, 195, 25, 95, 0, 66, 0, 0, 0, 7, 196, 84, 100, 201, 100, 66, 8, 197,
+			55, 18, 77, 80, 208, 65, 0, 0, 9, 198, 54, 180, 137, 53, 67, 64, 65, 0, 0, 0, 10, 66, 13, 96, 84, 107, 39, 47, 0, 24,
+			6, 195, 37, 160, 86, 66, 0, 10, 66, 17, 16, 81, 34, 35, 47, 0, 24, 10, 199, 44, 243, 80, 192, 82, 84, 52, 66, 0, 0, 6,
+			195, 54, 240, 85, 66, 10, 199, 47, 49, 79, 55, 18, 84, 52, 67, 0, 12, 65, 16, 81, 39, 72, 6, 37, 50, 35, 0, 25, 6, 195,
+			149, 53, 12, 66, 0, 7, 196, 64, 20, 147, 240, 66, 0, 12, 3, 226, 132, 150, 50, 6, 39, 65, 36, 34, 0, 7, 196, 97, 65, 20,
+			56, 66, 8, 197, 93, 180, 67, 80, 192, 66, 0, 8, 197, 73, 65, 71, 80, 176, 66, 6, 195, 224, 148, 192, 65, 7, 196, 45, 77, 145,
+			76, 66, 6, 195, 196, 20, 192, 66, 7, 196, 36, 212, 61, 76, 66, 7, 196, 25, 34, 253, 76, 66, 6, 195, 23, 30, 128, 65, 0, 8,
+			196, 52, 97, 197, 80, 72, 23, 8, 197, 175, 100, 147, 37, 96, 67, 0, 9, 198, 221, 114, 79, 48, 241, 0, 68, 7, 196, 72, 20, 21,
+			240, 66, 8, 197, 64, 20, 144, 245, 48, 66, 8, 197, 54, 240, 82, 79, 192, 67, 8, 197, 24, 180, 144, 245, 48, 66, 0, 9, 198, 8,
+			98, 9, 73, 60, 0, 67, 0, 7, 196, 66, 50, 193, 76, 66, 0, 9, 198, 47, 52, 209, 5, 95, 82, 67, 0, 9, 198, 77, 27, 210,
+			67, 212, 192, 66, 7, 196, 244, 156, 19, 240, 68, 9, 198, 45, 79, 148, 32, 197, 11, 67, 6, 195, 34, 210, 67, 65, 6, 195, 22, 200,
+			197, 66, 8, 197, 4, 93, 75, 5, 48, 67, 0, 9, 198, 52, 22, 113, 224, 148, 128, 68, 0, 7, 196, 197, 62, 228, 76, 67, 9, 198,
+			33, 176, 143, 48, 98, 250, 67, 0, 0, 9, 198, 24, 130, 75, 156, 97, 64, 68, 0, 0, 9, 198, 77, 27, 210, 67, 212, 252, 67, 9,
+			198, 76, 96, 83, 216, 49, 133, 68, 0, 0, 9, 198, 73, 62, 47, 156, 97, 64, 68, 7, 196, 67, 182, 6, 52, 66, 11, 200, 7, 179,
+			211, 70, 244, 144, 245, 48, 69, 11, 200, 153, 51, 211, 70, 244, 144, 245, 48, 68, 0, 6, 131, 226, 128, 166, 8, 7, 196, 54, 241, 139,
+			192, 67, 0, 11, 200, 52, 109, 203, 60, 208, 177, 5, 48, 69, 0, 8, 197, 86, 235, 211, 217, 0, 67, 7, 196, 224, 98, 212, 56, 67,
+			8, 197, 52, 17, 71, 80, 224, 66, 0, 0, 9, 198, 12, 99, 8, 24, 53, 12, 67, 0, 8, 197, 64, 99, 19, 24, 176, 66, 0, 9,
+			198, 24, 193, 139, 79, 97, 240, 68, 0, 0, 0, 0, 6, 195, 92, 155, 192, 66, 0, 0, 0, 11, 66, 25, 48, 36, 47, 6, 35, 91,
+			0, 24, 6, 195, 164, 193, 149, 66, 0, 7, 195, 74, 150, 148, 72, 23, 7, 196, 70, 181, 17, 72, 66, 7, 196, 52, 147, 111, 72, 66,
+			6, 195, 47, 193, 152, 66, 7, 196, 44, 17, 111, 72, 66, 6, 195, 10, 219, 210, 66, 6, 195, 180, 155, 210, 67, 0, 9, 198, 52, 146,
+			207, 48, 241, 0, 67, 7, 196, 44, 243, 73, 44, 66, 7, 196, 32, 20, 245, 68, 66, 0, 6, 195, 72, 107, 210, 66, 8, 197, 64, 20,
+			137, 189, 32, 67, 6, 195, 4, 90, 82, 66, 0, 6, 65, 20, 72, 13, 0, 7, 196, 88, 148, 233, 92, 66, 6, 195, 79, 90, 87, 66,
+			7, 196, 75, 22, 6, 92, 66, 6, 195, 74, 170, 87, 66, 7, 196, 64, 97, 111, 76, 66, 7, 196, 53, 177, 105, 92, 66, 6, 195, 48,
+			101, 123, 66, 8, 197, 45, 16, 69, 25, 112, 66, 9, 198, 47, 164, 194, 140, 230, 64, 66, 8, 197, 44, 19, 89, 36, 176, 66, 6, 195,
+			197, 91, 211, 66, 8, 197, 17, 16, 69, 25, 112, 66, 7, 196, 16, 145, 47, 76, 66, 6, 195, 19, 188, 0, 66, 6, 195, 18, 219, 211,
+			66, 9, 198, 212, 193, 138, 8, 243, 0, 65, 7, 196, 12, 100, 233, 92, 66, 8, 197, 8, 97, 12, 25, 112, 66, 6, 195, 234, 241, 253,
+			67, 0, 8, 197, 76, 243, 59, 189, 32, 67, 6, 195, 216, 219, 210, 66, 7, 196, 164, 62, 239, 72, 67, 9, 198, 36, 212, 6, 22, 244,
+			128, 67, 7, 196, 9, 16, 77, 196, 66, 0, 8, 196, 67, 208, 69, 36, 72, 23, 8, 197, 89, 16, 66, 165, 112, 66, 7, 196, 88, 147,
+			73, 44, 66, 8, 197, 88, 145, 81, 189, 48, 66, 7, 196, 66, 145, 39, 244, 65, 7, 196, 61, 54, 6, 76, 66, 9, 198, 52, 148, 207,
+			48, 241, 0, 67, 6, 195, 55, 17, 123, 66, 6, 195, 54, 242, 123, 67, 8, 197, 52, 19, 122, 25, 112, 67, 6, 195, 141, 81, 147, 66,
+			7, 196, 45, 68, 73, 236, 67, 6, 195, 47, 162, 123, 67, 8, 197, 24, 212, 60, 36, 176, 67, 7, 196, 15, 162, 111, 76, 67, 7, 196,
+			9, 245, 70, 76, 66, 0, 8, 197, 66, 149, 123, 189, 32, 67, 7, 196, 67, 160, 85, 196, 67, 7, 196, 52, 22, 129, 8, 66, 7, 196,
+			197, 62, 198, 72, 67, 0, 7, 196, 76, 251, 70, 76, 67, 8, 197, 73, 69, 76, 119, 208, 66, 7, 196, 221, 84, 212, 236, 65, 8, 197,
+			72, 186, 237, 25, 112, 67, 7, 196, 74, 229, 6, 76, 67, 7, 196, 72, 98, 233, 76, 66, 7, 196, 66, 147, 73, 236, 67, 8, 197, 64,
+			243, 9, 55, 176, 67, 7, 196, 56, 243, 65, 20, 66, 7, 196, 55, 5, 6, 76, 67, 8, 197, 45, 180, 141, 25, 48, 66, 9, 198, 44,
+			243, 119, 52, 243, 0, 67, 9, 198, 44, 48, 69, 70, 244, 192, 66, 6, 195, 46, 107, 123, 67, 7, 196, 36, 129, 39, 244, 65, 7, 196,
+			32, 17, 39, 244, 65, 8, 197, 21, 64, 140, 25, 48, 66, 7, 196, 20, 241, 39, 244, 65, 7, 196, 20, 100, 175, 76, 66, 7, 196, 20,
+			98, 233, 76, 66, 6, 195, 19, 171, 211, 66, 9, 198, 13, 16, 71, 180, 101, 192, 67, 0, 9, 198, 76, 98, 232, 84, 100, 128, 67, 8,
+			197, 20, 157, 228, 57, 32, 67, 0, 8, 197, 77, 27, 210, 87, 176, 66, 9, 198, 72, 98, 212, 56, 91, 211, 67, 9, 198, 65, 180, 117,
+			30, 149, 192, 67, 8, 197, 66, 145, 77, 25, 48, 66, 8, 197, 66, 51, 153, 25, 48, 66, 8, 197, 67, 160, 80, 25, 48, 67, 7, 196,
+			140, 142, 134, 76, 67, 8, 197, 45, 68, 82, 189, 48, 66, 9, 198, 44, 243, 112, 22, 244, 192, 67, 9, 198, 44, 243, 70, 20, 155, 211,
+			68, 7, 196, 46, 244, 243, 236, 67, 8, 197, 44, 19, 123, 39, 176, 68, 9, 198, 197, 52, 73, 18, 244, 192, 67, 7, 196, 36, 132, 73,
+			12, 65, 7, 196, 20, 240, 137, 12, 65, 7, 196, 232, 43, 70, 76, 67, 0, 5, 194, 144, 160, 65, 12, 201, 216, 142, 54, 36, 141, 69,
+			37, 49, 140, 69, 9, 198, 67, 100, 212, 11, 187, 210, 68, 0, 8, 197, 91, 195, 205, 189, 48, 67, 7, 196, 140, 47, 111, 76, 67, 9,
+			198, 19, 49, 79, 48, 158, 192, 68, 9, 198, 15, 180, 207, 48, 100, 192, 67, 8, 197, 5, 36, 60, 189, 48, 67, 0, 10, 199, 64, 193,
+			139, 72, 145, 35, 72, 67, 0, 10, 199, 73, 50, 80, 192, 82, 111, 76, 68, 10, 199, 44, 16, 145, 36, 243, 6, 76, 68, 8, 197, 197,
+			60, 5, 189, 48, 67, 0, 6, 195, 216, 219, 192, 66, 6, 195, 44, 248, 206, 66, 8, 197, 44, 20, 17, 36, 128, 66, 0, 11, 200, 73,
+			1, 151, 38, 210, 72, 189, 48, 69, 9, 198, 20, 98, 15, 23, 219, 211, 68, 6, 195, 188, 184, 195, 66, 8, 197, 180, 81, 150, 36, 80,
+			67, 0, 6, 195, 67, 100, 47, 66, 6, 195, 66, 98, 111, 67, 6, 195, 20, 248, 208, 66, 7, 196, 20, 115, 227, 56, 66, 0, 9, 198,
+			77, 27, 210, 67, 171, 211, 67, 12, 201, 67, 97, 139, 76, 241, 79, 18, 127, 64, 68, 11, 200, 24, 180, 139, 81, 18, 9, 189, 48, 68,
+			0, 11, 200, 84, 244, 207, 52, 20, 251, 38, 208, 70, 5, 194, 226, 208, 66, 8, 197, 20, 96, 134, 140, 224, 67, 0, 8, 197, 25, 129,
+			141, 36, 176, 67, 6, 195, 24, 130, 75, 66, 0, 8, 197, 84, 244, 248, 140, 224, 67, 9, 198, 80, 226, 67, 236, 208, 68, 68, 10, 199,
+			48, 98, 231, 60, 83, 227, 32, 69, 7, 196, 44, 19, 204, 196, 67, 7, 196, 20, 99, 21, 196, 66, 9, 198, 20, 98, 210, 77, 28, 64,
+			66, 0, 12, 201, 64, 243, 9, 76, 99, 73, 17, 27, 211, 69, 11, 200, 189, 50, 69, 25, 10, 82, 189, 48, 69, 0, 9, 198, 17, 27,
+			197, 60, 219, 192, 67, 8, 197, 12, 18, 6, 51, 16, 67, 0, 9, 198, 172, 17, 70, 52, 146, 192, 68, 0, 8, 197, 91, 179, 70, 51,
+			16, 67, 7, 196, 74, 129, 61, 196, 67, 0, 8, 197, 37, 36, 253, 36, 176, 67, 0, 9, 198, 9, 179, 4, 232, 245, 110, 68, 0, 0,
+			9, 198, 88, 245, 77, 233, 155, 64, 65, 9, 198, 74, 84, 207, 72, 190, 0, 67, 9, 198, 8, 144, 140, 36, 245, 110, 68, 0, 6, 195,
+			18, 222, 0, 66, 0, 9, 198, 84, 99, 5, 55, 166, 109, 65, 9, 198, 74, 48, 224, 56, 245, 110, 68, 6, 195, 25, 59, 128, 66, 0,
+			10, 199, 24, 180, 151, 193, 52, 73, 44, 67, 0, 9, 198, 20, 149, 123, 193, 114, 109, 69, 6, 195, 8, 21, 238, 66, 0, 6, 195, 95,
+			18, 75, 66, 7, 196, 73, 51, 201, 44, 66, 7, 196, 64, 148, 134, 92, 66, 7, 196, 64, 96, 198, 92, 66, 7, 196, 28, 144, 198, 92,
+			66, 6, 195, 15, 1, 151, 66, 6, 195, 11, 209, 151, 66, 6, 195, 4, 74, 23, 66, 0, 4, 193, 24, 72, 7, 196, 64, 100, 147, 184,
+			66, 7, 196, 61, 48, 198, 72, 66, 6, 195, 57, 251, 210, 66, 6, 195, 154, 244, 128, 66, 0, 7, 195, 32, 17, 64, 72, 23, 7, 196,
+			74, 129, 198, 92, 66, 8, 197, 72, 49, 147, 25, 112, 66, 6, 195, 164, 62, 192, 66, 8, 197, 65, 16, 82, 25, 112, 66, 6, 195, 64,
+			241, 147, 66, 8, 197, 64, 197, 3, 25, 112, 66, 7, 196, 66, 52, 198, 92, 66, 6, 195, 60, 33, 147, 66, 8, 197, 52, 148, 147, 36,
+			176, 66, 8, 197, 52, 18, 14, 36, 176, 66, 8, 197, 45, 18, 83, 36, 176, 66, 8, 197, 21, 177, 197, 25, 112, 66, 6, 195, 23, 90,
+			87, 66, 7, 196, 16, 213, 41, 92, 66, 7, 196, 5, 93, 142, 76, 66, 6, 195, 4, 81, 147, 66, 0, 6, 195, 98, 187, 64, 66, 6,
+			195, 91, 179, 241, 67, 6, 195, 84, 148, 238, 66, 6, 195, 87, 27, 64, 66, 7, 196, 166, 132, 175, 72, 67, 7, 196, 48, 145, 14, 196,
+			66, 7, 196, 32, 101, 147, 196, 66, 8, 197, 22, 226, 71, 189, 32, 67, 8, 197, 10, 209, 65, 91, 16, 67, 8, 197, 4, 36, 151, 25,
+			32, 66, 0, 9, 198, 108, 70, 204, 56, 146, 192, 65, 7, 196, 88, 18, 131, 236, 66, 7, 196, 73, 241, 198, 76, 66, 7, 196, 74, 81,
+			239, 76, 66, 7, 196, 75, 177, 239, 76, 66, 8, 197, 72, 18, 131, 189, 48, 66, 9, 198, 64, 243, 9, 76, 146, 192, 67, 8, 197, 64,
+			241, 111, 36, 176, 65, 7, 196, 61, 84, 134, 76, 66, 9, 198, 60, 36, 65, 32, 101, 192, 67, 9, 198, 44, 243, 80, 61, 36, 192, 66,
+			8, 197, 44, 148, 27, 165, 112, 65, 8, 197, 20, 148, 139, 189, 48, 66, 6, 195, 8, 22, 129, 66, 0, 7, 196, 79, 180, 201, 64, 66,
+			9, 198, 76, 99, 6, 76, 148, 0, 67, 7, 196, 67, 97, 41, 72, 66, 7, 196, 47, 49, 41, 72, 66, 8, 197, 44, 243, 80, 165, 32,
+			66, 8, 197, 24, 180, 144, 165, 32, 66, 8, 197, 9, 243, 6, 79, 16, 67, 7, 196, 7, 121, 14, 72, 67, 0, 8, 197, 85, 68, 75,
+			25, 48, 66, 8, 197, 84, 195, 211, 39, 176, 67, 7, 196, 86, 213, 198, 76, 66, 6, 195, 222, 67, 147, 66, 8, 197, 75, 30, 19, 36,
+			176, 67, 8, 197, 69, 70, 67, 25, 48, 66, 8, 197, 216, 219, 211, 36, 176, 67, 7, 196, 164, 228, 201, 236, 67, 8, 197, 65, 18, 67,
+			25, 48, 66, 8, 197, 64, 145, 147, 25, 48, 67, 8, 197, 64, 20, 147, 25, 48, 66, 8, 197, 64, 20, 129, 31, 176, 67, 7, 196, 161,
+			33, 146, 236, 67, 9, 198, 53, 66, 9, 46, 244, 192, 67, 7, 196, 55, 163, 197, 236, 67, 7, 196, 47, 212, 134, 76, 66, 8, 197, 44,
+			24, 21, 25, 48, 67, 8, 197, 22, 225, 165, 57, 48, 67, 9, 198, 20, 144, 66, 25, 50, 75, 68, 7, 196, 212, 83, 205, 236, 67, 8,
+			197, 9, 241, 71, 25, 48, 66, 8, 197, 4, 90, 82, 189, 48, 67, 0, 8, 197, 76, 98, 210, 78, 224, 66, 0, 9, 198, 84, 16, 145,
+			36, 187, 211, 67, 8, 197, 79, 131, 15, 55, 176, 67, 9, 198, 74, 84, 201, 73, 50, 75, 67, 9, 198, 72, 149, 110, 37, 50, 75, 68,
+			7, 196, 167, 83, 3, 236, 67, 10, 199, 68, 18, 11, 6, 3, 137, 44, 66, 9, 198, 64, 243, 65, 34, 242, 75, 66, 9, 198, 67, 171,
+			73, 76, 146, 192, 68, 8, 197, 176, 24, 14, 36, 176, 66, 9, 198, 52, 193, 139, 60, 222, 192, 67, 7, 196, 54, 226, 115, 236, 68, 8,
+			197, 49, 73, 19, 36, 176, 67, 8, 197, 48, 97, 9, 207, 176, 68, 7, 196, 46, 52, 104, 76, 66, 8, 197, 46, 224, 193, 79, 176, 65,
+			9, 198, 21, 177, 197, 60, 222, 192, 67, 9, 198, 20, 144, 251, 74, 244, 192, 67, 9, 198, 20, 100, 41, 74, 244, 192, 67, 8, 197, 19,
+			98, 14, 36, 176, 66, 9, 198, 16, 147, 100, 73, 50, 75, 67, 8, 197, 14, 49, 15, 55, 176, 67, 0, 7, 196, 91, 197, 17, 16, 66,
+			9, 198, 73, 180, 134, 50, 3, 177, 66, 9, 198, 24, 66, 80, 78, 3, 177, 66, 9, 198, 9, 27, 160, 57, 60, 64, 67, 0, 8, 197,
+			148, 35, 15, 36, 80, 67, 9, 198, 73, 15, 19, 60, 222, 192, 67, 9, 198, 72, 147, 84, 140, 228, 192, 67, 9, 198, 52, 17, 1, 35,
+			30, 192, 68, 8, 197, 46, 52, 113, 25, 48, 67, 8, 197, 47, 160, 66, 199, 176, 68, 9, 198, 24, 180, 147, 238, 67, 147, 67, 9, 198,
+			19, 98, 5, 60, 46, 192, 67, 9, 198, 9, 18, 68, 4, 95, 0, 67, 6, 195, 175, 209, 64, 66, 0, 9, 198, 92, 146, 204, 61, 36,
+			238, 67, 9, 198, 64, 243, 20, 87, 27, 64, 68, 0, 4, 193, 168, 72, 9, 198, 91, 176, 137, 92, 145, 64, 67, 7, 196, 149, 27, 70,
+			28, 67, 9, 198, 73, 99, 227, 73, 50, 75, 67, 8, 197, 66, 148, 147, 36, 112, 66, 9, 198, 64, 100, 147, 37, 114, 69, 67, 10, 199,
+			52, 20, 140, 61, 32, 198, 76, 67, 9, 198, 45, 66, 204, 156, 241, 64, 67, 8, 197, 44, 243, 15, 36, 80, 67, 8, 197, 32, 60, 39,
+			60, 80, 67, 9, 198, 24, 178, 9, 73, 60, 23, 67, 0, 7, 196, 55, 162, 201, 32, 66, 7, 196, 46, 118, 6, 16, 66, 0, 8, 197,
+			73, 94, 207, 36, 80, 67, 9, 198, 74, 80, 174, 37, 49, 147, 68, 10, 199, 72, 191, 79, 73, 51, 205, 236, 68, 10, 199, 68, 18, 14,
+			60, 67, 6, 20, 67, 9, 198, 19, 161, 123, 60, 34, 123, 69, 0, 15, 3, 95, 51, 88, 47, 34, 6, 37, 72, 36, 89, 36, 47, 0,
+			11, 200, 73, 58, 80, 76, 243, 73, 95, 16, 68, 6, 195, 47, 61, 74, 66, 8, 197, 44, 243, 39, 60, 128, 67, 10, 199, 21, 16, 77,
+			5, 53, 17, 16, 67, 0, 13, 3, 95, 48, 67, 89, 47, 6, 39, 47, 37, 50, 0, 9, 198, 128, 165, 198, 67, 109, 69, 68, 9, 198,
+			67, 98, 248, 74, 242, 75, 66, 6, 195, 225, 50, 75, 66, 9, 198, 52, 105, 76, 60, 145, 64, 68, 8, 197, 212, 94, 54, 212, 80, 68,
+			0, 11, 200, 96, 100, 195, 109, 20, 213, 198, 208, 68, 8, 197, 77, 18, 80, 140, 224, 66, 8, 197, 56, 146, 207, 79, 16, 67, 0, 9,
+			198, 79, 131, 56, 219, 81, 64, 68, 7, 196, 75, 28, 201, 52, 67, 11, 200, 53, 67, 19, 36, 219, 137, 207, 176, 70, 9, 198, 20, 147,
+			79, 61, 61, 69, 68, 0, 7, 196, 64, 100, 18, 196, 66, 8, 197, 16, 244, 147, 195, 16, 65, 0, 8, 197, 65, 26, 211, 36, 176, 66,
+			8, 197, 64, 243, 112, 36, 176, 67, 0, 7, 196, 47, 179, 210, 196, 67, 0, 9, 198, 77, 22, 194, 227, 109, 69, 68, 8, 197, 74, 51,
+			112, 36, 176, 65, 7, 196, 67, 172, 201, 52, 67, 0, 0, 10, 3, 95, 49, 67, 89, 47, 6, 39, 0, 8, 197, 66, 126, 240, 36, 176,
+			66, 9, 198, 32, 20, 207, 99, 2, 75, 66, 8, 197, 34, 110, 176, 36, 176, 66, 8, 197, 22, 126, 240, 36, 176, 66, 9, 198, 22, 113,
+			133, 192, 146, 192, 66, 9, 198, 22, 209, 139, 227, 109, 69, 69, 9, 198, 212, 163, 137, 44, 198, 203, 67, 0, 7, 196, 47, 160, 179, 184,
+			67, 0, 8, 197, 89, 27, 240, 36, 176, 65, 9, 198, 77, 21, 7, 192, 146, 192, 65, 10, 199, 73, 179, 73, 100, 204, 9, 44, 66, 6,
+			195, 24, 204, 0, 66, 6, 195, 18, 211, 217, 66, 0, 9, 198, 189, 50, 83, 177, 44, 64, 68, 0, 6, 195, 81, 15, 64, 66, 9, 198,
+			73, 178, 77, 192, 226, 75, 66, 10, 199, 67, 99, 73, 100, 204, 9, 44, 66, 9, 198, 64, 193, 141, 192, 226, 75, 65, 0, 6, 195, 16,
+			19, 112, 66, 0, 20, 3, 95, 49, 57, 72, 4, 36, 84, 36, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 6, 195, 91, 161, 141, 66,
+			11, 200, 65, 180, 117, 53, 182, 48, 36, 176, 69, 9, 198, 67, 98, 193, 31, 2, 75, 66, 7, 196, 64, 241, 70, 52, 66, 10, 199, 52,
+			104, 206, 88, 243, 9, 44, 68, 6, 195, 36, 211, 211, 66, 6, 195, 32, 20, 61, 66, 0, 19, 3, 95, 49, 56, 4, 39, 89, 36, 65,
+			50, 6, 35, 72, 36, 89, 36, 47, 0, 7, 196, 84, 244, 132, 192, 66, 9, 198, 76, 99, 6, 72, 190, 0, 67, 7, 196, 16, 240, 140,
+			192, 66, 0, 13, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 35, 0, 6, 195, 78, 146, 61, 66, 7, 196, 68, 18, 5, 244, 66, 11,
+			200, 65, 18, 67, 109, 17, 240, 36, 176, 66, 10, 199, 160, 52, 65, 73, 60, 9, 44, 68, 6, 195, 144, 82, 61, 66, 6, 195, 46, 119,
+			125, 66, 7, 196, 8, 99, 15, 76, 66, 0, 7, 196, 73, 68, 251, 192, 67, 9, 198, 67, 100, 207, 76, 148, 0, 67, 8, 197, 66, 149,
+			73, 45, 32, 66, 9, 198, 47, 48, 240, 92, 156, 237, 69, 9, 198, 25, 34, 201, 52, 244, 128, 67, 6, 195, 191, 52, 128, 66, 0, 6,
+			195, 79, 191, 64, 66, 6, 195, 64, 242, 61, 66, 6, 195, 60, 34, 61, 66, 8, 197, 52, 21, 73, 61, 48, 67, 7, 196, 47, 210, 69,
+			244, 67, 8, 197, 20, 148, 144, 81, 48, 66, 6, 195, 168, 188, 211, 66, 6, 195, 4, 131, 211, 66, 0, 7, 196, 79, 101, 70, 40, 66,
+			9, 198, 197, 62, 228, 92, 156, 237, 70, 6, 195, 15, 161, 140, 66, 0, 5, 193, 144, 72, 23, 6, 65, 28, 90, 13, 0, 7, 196, 84,
+			17, 15, 76, 66, 8, 197, 79, 209, 129, 23, 208, 68, 8, 197, 79, 179, 73, 23, 208, 67, 8, 197, 67, 97, 84, 45, 48, 66, 6, 195,
+			66, 227, 211, 66, 9, 198, 53, 180, 83, 12, 101, 192, 66, 6, 195, 55, 23, 125, 66, 8, 197, 140, 36, 65, 23, 208, 67, 8, 197, 44,
+			22, 109, 61, 48, 67, 0, 7, 196, 67, 177, 6, 48, 66, 9, 198, 60, 194, 68, 61, 90, 78, 68, 8, 197, 47, 210, 85, 24, 160, 67,
+			0, 7, 195, 13, 42, 69, 72, 23, 18, 3, 95, 49, 49, 36, 72, 4, 37, 50, 6, 35, 72, 36, 89, 36, 47, 0, 8, 197, 164, 92,
+			68, 61, 48, 65, 6, 195, 166, 162, 61, 67, 7, 196, 64, 153, 68, 244, 67, 8, 197, 53, 68, 139, 25, 48, 66, 7, 196, 52, 25, 69,
+			244, 67, 7, 196, 16, 96, 233, 44, 66, 0, 12, 3, 95, 49, 48, 72, 6, 36, 89, 36, 47, 0, 8, 197, 60, 36, 147, 164, 192, 66,
+			9, 198, 48, 100, 142, 37, 129, 138, 67, 8, 197, 47, 160, 77, 24, 192, 67, 9, 198, 47, 160, 68, 116, 242, 0, 67, 8, 197, 19, 3,
+			211, 37, 0, 67, 8, 197, 233, 98, 123, 24, 160, 68, 7, 196, 172, 62, 134, 48, 67, 0, 8, 196, 73, 15, 70, 20, 72, 23, 8, 196,
+			64, 244, 169, 20, 72, 23, 7, 195, 145, 42, 69, 72, 23, 13, 3, 95, 51, 67, 47, 34, 6, 37, 89, 47, 35, 0, 17, 3, 95, 49,
+			51, 47, 34, 37, 50, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 148, 180, 137, 20, 147, 211, 68, 8, 197, 73, 68, 240, 119, 208, 67,
+			8, 197, 164, 114, 82, 119, 208, 67, 10, 199, 64, 243, 20, 36, 82, 79, 76, 69, 6, 195, 54, 241, 135, 66, 9, 198, 45, 22, 196, 60,
+			143, 64, 67, 0, 17, 3, 95, 49, 50, 72, 84, 35, 50, 6, 35, 72, 36, 89, 36, 47, 0, 0, 7, 195, 88, 99, 64, 72, 23, 17,
+			3, 95, 49, 53, 48, 36, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 8, 197, 77, 68, 19, 24, 112, 66, 8, 197, 73, 180, 66, 24,
+			112, 66, 9, 198, 72, 99, 18, 108, 49, 147, 67, 8, 197, 164, 191, 69, 119, 208, 67, 9, 198, 68, 18, 146, 108, 49, 147, 67, 7, 196,
+			65, 179, 40, 28, 66, 7, 196, 54, 49, 70, 28, 66, 8, 197, 48, 241, 56, 24, 80, 67, 6, 195, 47, 138, 7, 66, 9, 198, 44, 20,
+			139, 4, 87, 125, 67, 8, 197, 17, 16, 69, 24, 112, 66, 9, 198, 19, 211, 215, 12, 100, 192, 67, 0, 21, 3, 95, 49, 52, 76, 4,
+			36, 47, 37, 34, 37, 50, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 67, 100, 207, 43, 177, 138, 68, 8, 197, 53, 68, 165, 56, 64,
+			66, 8, 197, 51, 19, 211, 37, 0, 67, 6, 195, 24, 223, 0, 66, 0, 20, 3, 95, 49, 55, 89, 4, 36, 72, 36, 65, 50, 6, 35,
+			72, 36, 89, 36, 47, 0, 9, 198, 74, 49, 79, 48, 97, 64, 67, 12, 201, 66, 148, 139, 205, 94, 240, 92, 152, 0, 68, 11, 200, 47,
+			52, 209, 5, 80, 68, 61, 48, 68, 6, 195, 15, 177, 131, 66, 9, 198, 4, 223, 83, 37, 39, 125, 68, 0, 18, 3, 95, 49, 54, 91,
+			36, 89, 47, 50, 6, 35, 72, 36, 89, 36, 47, 0, 9, 198, 24, 83, 143, 96, 204, 0, 67, 8, 197, 9, 67, 123, 188, 64, 67, 7,
+			196, 172, 59, 111, 16, 67, 0, 7, 196, 52, 104, 206, 28, 66, 6, 195, 47, 209, 141, 66, 9, 198, 9, 16, 83, 157, 129, 133, 67, 0,
+			17, 3, 95, 55, 88, 89, 36, 72, 36, 65, 72, 36, 89, 6, 36, 47, 0, 12, 201, 168, 81, 143, 20, 148, 144, 48, 98, 128, 69, 0,
+			0, 0, 6, 195, 22, 243, 192, 66, 7, 196, 164, 186, 134, 52, 67, 0, 6, 195, 77, 74, 12, 66, 0, 7, 196, 84, 150, 70, 44, 66,
+			6, 195, 9, 250, 75, 66, 0, 8, 197, 96, 150, 56, 24, 160, 67, 8, 197, 87, 162, 82, 24, 160, 67, 0, 0, 7, 196, 145, 55, 233,
+			48, 67, 9, 198, 54, 98, 15, 48, 98, 128, 67, 8, 197, 212, 83, 197, 24, 192, 67, 0, 0, 0, 0, 0, 0, 7, 196, 52, 100, 207,
+			88, 66, 9, 198, 212, 95, 65, 32, 81, 140, 68, 0, 6, 195, 73, 176, 189, 66, 6, 195, 72, 178, 125, 66, 16, 205, 61, 49, 152, 25,
+			36, 195, 192, 245, 118, 57, 57, 198, 92, 70, 6, 195, 52, 17, 253, 66, 0, 5, 193, 160, 72, 9, 7, 196, 13, 180, 54, 72, 66, 0,
+			7, 196, 81, 96, 71, 244, 67, 7, 196, 73, 51, 194, 244, 66, 7, 196, 72, 20, 29, 244, 66, 6, 195, 216, 35, 211, 66, 7, 196, 68,
+			18, 2, 244, 66, 7, 196, 64, 241, 66, 244, 66, 6, 195, 60, 47, 64, 66, 6, 195, 173, 55, 125, 66, 0, 6, 195, 18, 61, 88, 66,
+			0, 6, 195, 84, 197, 61, 66, 6, 195, 79, 15, 64, 66, 7, 196, 149, 16, 83, 244, 67, 6, 195, 167, 116, 64, 66, 7, 196, 60, 47,
+			79, 76, 67, 6, 195, 52, 18, 189, 66, 0, 6, 65, 32, 88, 13, 0, 8, 197, 68, 18, 14, 61, 32, 66, 8, 197, 180, 32, 83, 217,
+			32, 67, 0, 7, 196, 88, 240, 143, 76, 66, 8, 197, 87, 178, 66, 61, 48, 65, 7, 196, 78, 153, 7, 244, 67, 9, 198, 68, 17, 73,
+			61, 111, 64, 68, 8, 197, 67, 164, 206, 119, 208, 66, 7, 196, 52, 100, 198, 244, 67, 6, 195, 47, 132, 253, 66, 6, 195, 47, 62, 0,
+			66, 6, 195, 47, 49, 125, 66, 6, 195, 44, 157, 83, 66, 6, 195, 28, 157, 83, 66, 6, 195, 18, 99, 211, 66, 6, 195, 168, 135, 125,
+			66, 0, 7, 196, 9, 179, 53, 96, 66, 7, 196, 180, 44, 79, 72, 67, 0, 8, 197, 85, 18, 72, 119, 208, 66, 9, 198, 87, 212, 141,
+			4, 127, 64, 67, 7, 196, 86, 227, 247, 84, 67, 9, 198, 77, 18, 75, 60, 199, 125, 67, 8, 197, 68, 18, 19, 213, 16, 66, 7, 196,
+			55, 52, 221, 244, 66, 8, 197, 55, 52, 176, 119, 208, 67, 7, 196, 17, 25, 157, 244, 66, 0, 15, 3, 95, 50, 88, 72, 84, 6, 35,
+			72, 36, 89, 36, 47, 0, 7, 196, 60, 35, 15, 16, 66, 0, 8, 197, 66, 242, 75, 119, 208, 67, 6, 195, 160, 49, 135, 66, 8, 197,
+			31, 49, 12, 119, 208, 66, 8, 197, 188, 177, 147, 119, 208, 67, 8, 197, 188, 98, 197, 61, 48, 67, 0, 9, 198, 129, 100, 203, 49, 64,
+			128, 66, 7, 196, 25, 11, 143, 16, 67, 7, 196, 20, 155, 79, 16, 67, 0, 9, 198, 91, 99, 137, 45, 223, 64, 67, 8, 197, 75, 186,
+			147, 119, 208, 67, 7, 196, 66, 52, 198, 28, 66, 7, 196, 245, 62, 6, 20, 67, 9, 198, 20, 98, 59, 77, 223, 64, 67, 8, 197, 13,
+			180, 83, 24, 112, 66, 8, 197, 189, 50, 80, 60, 80, 67, 0, 6, 195, 34, 211, 196, 66, 0, 8, 197, 73, 59, 39, 24, 80, 67, 8,
+			197, 25, 2, 72, 60, 80, 67, 9, 198, 9, 22, 211, 12, 97, 192, 66, 0, 8, 197, 32, 243, 204, 60, 64, 67, 6, 195, 190, 211, 196,
+			67, 0, 9, 198, 68, 18, 16, 48, 241, 64, 66, 10, 199, 64, 243, 20, 60, 47, 79, 76, 69, 8, 197, 34, 188, 231, 24, 80, 68, 9,
+			198, 153, 51, 205, 205, 55, 125, 68, 0, 8, 197, 55, 30, 237, 60, 64, 68, 8, 197, 44, 25, 76, 60, 64, 67, 0, 10, 199, 73, 59,
+			15, 60, 47, 79, 76, 69, 9, 198, 67, 168, 205, 193, 55, 125, 68, 0, 0, 11, 200, 36, 130, 212, 73, 61, 67, 24, 80, 68, 7, 196,
+			33, 67, 20, 52, 66, 11, 200, 25, 36, 198, 73, 61, 67, 24, 80, 68, 0, 7, 196, 88, 244, 198, 48, 66, 0, 10, 3, 95, 63, 63,
+			88, 50, 35, 49, 0, 6, 195, 96, 21, 25, 66, 6, 195, 44, 21, 25, 66, 12, 201, 24, 193, 139, 79, 99, 115, 77, 223, 64, 69, 0,
+			8, 197, 73, 15, 126, 55, 0, 66, 0, 12, 201, 48, 148, 251, 5, 53, 54, 12, 97, 64, 70, 0, 18, 3, 95, 52, 88, 76, 36, 47,
+			37, 34, 6, 37, 72, 36, 89, 36, 47, 0, 10, 199, 66, 209, 179, 76, 243, 15, 16, 69, 0, 10, 199, 52, 21, 141, 81, 19, 20, 44,
+			67, 0, 0, 7, 195, 45, 179, 64, 72, 23, 0, 0, 0, 6, 195, 164, 140, 192, 66, 11, 200, 64, 243, 9, 76, 244, 197, 24, 192, 68,
+			6, 195, 144, 76, 192, 66, 6, 195, 19, 179, 202, 66, 6, 195, 168, 140, 192, 66, 6, 195, 8, 146, 51, 66, 6, 195, 8, 145, 115, 66,
+			6, 195, 11, 172, 192, 66, 0, 6, 195, 73, 179, 64, 72, 6, 195, 61, 61, 81, 66, 7, 196, 52, 20, 148, 68, 66, 7, 196, 45, 68,
+			148, 68, 66, 7, 196, 44, 240, 148, 68, 66, 7, 196, 36, 82, 79, 52, 67, 0, 15, 3, 95, 53, 88, 48, 36, 47, 72, 36, 89, 6,
+			36, 47, 0, 6, 195, 91, 211, 115, 66, 7, 196, 85, 68, 68, 204, 66, 6, 195, 87, 160, 115, 67, 8, 197, 68, 17, 73, 81, 32, 65,
+			7, 196, 53, 69, 76, 204, 66, 6, 195, 55, 211, 115, 66, 6, 195, 54, 246, 115, 66, 7, 196, 52, 18, 15, 48, 66, 6, 195, 47, 209,
+			115, 66, 6, 195, 46, 247, 115, 66, 7, 196, 8, 99, 79, 48, 66, 0, 0, 8, 197, 64, 243, 9, 19, 48, 67, 6, 195, 64, 17, 51,
+			66, 8, 197, 52, 240, 137, 87, 48, 65, 6, 195, 52, 19, 115, 66, 6, 195, 45, 68, 51, 66, 7, 196, 18, 49, 15, 48, 66, 6, 195,
+			12, 17, 51, 66, 6, 195, 9, 70, 115, 66, 7, 196, 8, 144, 187, 204, 67, 8, 197, 8, 98, 2, 216, 160, 66, 6, 195, 232, 76, 192,
+			66, 0, 7, 196, 75, 17, 118, 52, 66, 7, 196, 15, 179, 84, 76, 66, 7, 196, 8, 99, 44, 244, 67, 0, 7, 196, 64, 243, 80, 204,
+			66, 7, 196, 67, 9, 68, 204, 67, 9, 198, 56, 249, 81, 37, 68, 128, 66, 7, 196, 48, 97, 9, 204, 67, 7, 196, 44, 19, 73, 204,
+			67, 6, 195, 31, 161, 51, 66, 7, 196, 25, 2, 68, 204, 67, 9, 198, 20, 144, 80, 4, 140, 192, 68, 6, 195, 10, 226, 115, 67, 0,
+			8, 197, 68, 18, 12, 60, 208, 66, 8, 197, 68, 18, 4, 159, 208, 65, 8, 197, 10, 242, 209, 81, 48, 66, 6, 195, 188, 241, 64, 66,
+			0, 7, 196, 74, 81, 73, 204, 67, 13, 202, 64, 241, 80, 164, 84, 134, 20, 20, 198, 48, 65, 8, 197, 64, 241, 77, 60, 192, 66, 7,
+			196, 176, 18, 9, 204, 68, 8, 197, 52, 21, 129, 19, 48, 67, 8, 197, 45, 16, 88, 60, 192, 66, 8, 197, 47, 19, 210, 183, 48, 68,
+			8, 197, 44, 62, 147, 239, 48, 67, 8, 197, 24, 208, 145, 39, 48, 67, 7, 196, 13, 180, 72, 224, 66, 9, 198, 189, 50, 68, 236, 242,
+			128, 68, 0, 5, 193, 36, 72, 8, 7, 196, 61, 49, 39, 244, 65, 7, 196, 60, 37, 143, 20, 66, 6, 195, 147, 97, 64, 66, 9, 198,
+			44, 25, 80, 80, 196, 192, 67, 7, 196, 197, 37, 12, 76, 66, 9, 198, 24, 50, 237, 37, 4, 192, 67, 0, 16, 3, 95, 54, 88, 91,
+			36, 89, 47, 72, 36, 89, 6, 36, 47, 0, 7, 196, 86, 245, 122, 204, 67, 10, 199, 52, 193, 139, 204, 17, 79, 40, 68, 7, 196, 52,
+			146, 246, 8, 66, 8, 197, 19, 163, 137, 35, 48, 67, 8, 197, 8, 25, 76, 119, 48, 67, 0, 8, 197, 47, 52, 148, 49, 48, 66, 0,
+			7, 196, 83, 99, 15, 16, 67, 9, 198, 216, 83, 197, 192, 93, 142, 68, 8, 197, 10, 241, 123, 60, 192, 67, 0, 8, 197, 66, 145, 68,
+			159, 208, 65, 0, 8, 197, 216, 188, 5, 216, 192, 67, 6, 195, 67, 195, 196, 66, 8, 197, 19, 161, 123, 60, 32, 67, 9, 198, 188, 67,
+			15, 84, 240, 128, 67, 0, 8, 197, 64, 241, 86, 60, 80, 66, 6, 195, 64, 150, 167, 66, 7, 196, 67, 178, 79, 20, 67, 8, 197, 25,
+			144, 85, 60, 80, 67, 9, 198, 24, 193, 139, 79, 97, 64, 67, 0, 9, 198, 84, 146, 9, 60, 195, 196, 68, 6, 195, 72, 98, 51, 66,
+			6, 195, 67, 211, 202, 66, 8, 197, 61, 51, 204, 60, 64, 67, 6, 195, 53, 77, 206, 66, 6, 195, 47, 131, 202, 66, 8, 197, 16, 99,
+			204, 60, 64, 67, 8, 197, 9, 67, 5, 60, 64, 66, 8, 197, 8, 147, 204, 60, 64, 67, 6, 195, 188, 156, 192, 67, 0, 8, 197, 67,
+			160, 86, 60, 80, 67, 0, 6, 195, 221, 3, 204, 66, 10, 199, 72, 98, 72, 52, 243, 15, 16, 68, 6, 195, 60, 140, 192, 66, 7, 196,
+			56, 253, 246, 16, 67, 6, 195, 160, 61, 142, 66, 8, 197, 44, 242, 60, 60, 64, 65, 10, 199, 24, 208, 145, 36, 243, 15, 16, 68, 8,
+			197, 169, 20, 212, 60, 128, 67, 10, 199, 9, 179, 4, 232, 245, 79, 8, 68, 0, 9, 198, 44, 148, 140, 244, 241, 64, 67, 9, 198, 13,
+			177, 12, 236, 241, 64, 67, 0, 6, 195, 67, 204, 192, 66, 6, 195, 67, 188, 192, 66, 10, 199, 61, 89, 76, 52, 243, 15, 16, 68, 9,
+			198, 52, 98, 15, 32, 242, 128, 67, 6, 195, 44, 22, 115, 66, 8, 197, 44, 20, 147, 216, 224, 66, 7, 196, 212, 94, 15, 40, 67, 7,
+			196, 11, 2, 15, 48, 66, 0, 0, 7, 196, 92, 146, 204, 204, 66, 8, 197, 79, 192, 148, 103, 48, 67, 8, 197, 74, 83, 137, 60, 192,
+			67, 10, 199, 73, 1, 140, 24, 243, 15, 16, 68, 9, 198, 60, 81, 139, 60, 204, 192, 68, 6, 195, 144, 179, 51, 66, 8, 197, 52, 146,
+			246, 87, 48, 67, 7, 196, 48, 244, 137, 204, 67, 7, 196, 44, 20, 201, 204, 67, 7, 196, 32, 20, 140, 204, 66, 9, 198, 24, 193, 139,
+			79, 99, 128, 67, 9, 198, 20, 146, 211, 61, 92, 192, 67, 10, 199, 10, 180, 251, 36, 243, 15, 16, 69, 8, 197, 7, 179, 200, 60, 192,
+			68, 0, 7, 196, 66, 147, 15, 52, 66, 0, 9, 198, 95, 4, 212, 68, 156, 192, 68, 8, 197, 77, 180, 78, 179, 128, 67, 11, 200, 73,
+			51, 205, 5, 51, 204, 60, 64, 68, 7, 196, 66, 244, 137, 204, 67, 10, 199, 45, 18, 77, 196, 243, 15, 16, 68, 8, 197, 44, 243, 15,
+			87, 48, 67, 9, 198, 44, 20, 134, 76, 245, 115, 68, 8, 197, 20, 243, 79, 87, 48, 67, 10, 199, 23, 179, 65, 76, 243, 15, 16, 68,
+			9, 198, 168, 139, 211, 60, 195, 196, 68, 8, 197, 8, 20, 147, 39, 48, 67, 0, 9, 198, 75, 185, 207, 23, 211, 197, 69, 6, 195, 165,
+			53, 25, 66, 8, 197, 68, 18, 4, 216, 208, 66, 10, 199, 40, 241, 103, 60, 95, 79, 20, 69, 7, 196, 8, 244, 212, 100, 66, 0, 16,
+			3, 95, 56, 88, 39, 89, 36, 65, 72, 36, 89, 6, 36, 47, 0, 9, 198, 88, 99, 9, 61, 61, 144, 68, 11, 200, 84, 148, 248, 5,
+			51, 204, 60, 64, 69, 9, 198, 78, 146, 133, 124, 226, 115, 68, 13, 202, 65, 34, 86, 61, 82, 72, 36, 243, 15, 16, 70, 8, 197, 45,
+			43, 143, 87, 48, 67, 7, 196, 47, 52, 246, 48, 66, 8, 197, 20, 243, 113, 39, 48, 68, 8, 197, 12, 100, 246, 19, 48, 67, 9, 198,
+			12, 100, 147, 156, 242, 128, 67, 0, 10, 199, 92, 155, 231, 60, 95, 79, 20, 70, 10, 199, 88, 207, 103, 60, 95, 79, 20, 69, 10, 199,
+			75, 185, 219, 16, 206, 207, 20, 69, 11, 200, 13, 177, 12, 27, 81, 125, 60, 80, 69, 0, 11, 200, 160, 61, 144, 5, 51, 204, 60, 64,
+			69, 0, 0, 9, 198, 141, 28, 68, 61, 92, 192, 68, 9, 198, 44, 243, 66, 196, 98, 51, 68, 0, 0, 6, 195, 68, 18, 179, 66, 7,
+			196, 64, 240, 143, 40, 66, 7, 196, 61, 48, 143, 40, 66, 6, 195, 52, 29, 206, 66, 6, 195, 46, 252, 192, 66, 0, 0, 17, 3, 95,
+			57, 88, 72, 36, 84, 36, 47, 72, 36, 89, 6, 36, 47, 0, 7, 196, 68, 18, 53, 40, 66, 6, 195, 244, 99, 204, 67, 5, 194, 163,
+			48, 66, 8, 197, 44, 21, 2, 60, 160, 67, 6, 195, 188, 29, 206, 67, 0, 8, 196, 73, 13, 147, 36, 72, 23, 7, 196, 4, 81, 144,
+			76, 66, 0, 7, 196, 79, 99, 66, 204, 66, 12, 201, 68, 17, 73, 60, 68, 65, 52, 245, 115, 70, 7, 196, 47, 160, 143, 48, 66, 7,
+			196, 32, 16, 143, 40, 66, 0, 7, 196, 89, 179, 2, 176, 65, 0, 7, 196, 80, 226, 119, 56, 67, 8, 197, 77, 18, 66, 60, 160, 66,
+			8, 197, 68, 18, 2, 60, 160, 66, 8, 197, 65, 18, 66, 60, 160, 66, 8, 197, 145, 3, 204, 27, 48, 68, 6, 195, 46, 148, 243, 66,
+			6, 195, 46, 147, 204, 66, 7, 196, 28, 19, 66, 204, 66, 6, 195, 10, 210, 243, 66, 0, 8, 197, 65, 18, 74, 60, 208, 66, 7, 196,
+			188, 20, 207, 52, 67, 0, 6, 65, 40, 37, 0, 72, 8, 197, 81, 99, 194, 60, 192, 67, 8, 197, 68, 18, 11, 60, 192, 66, 8, 197,
+			67, 98, 72, 212, 192, 67, 6, 195, 60, 35, 200, 66, 7, 196, 55, 162, 212, 96, 66, 0, 12, 3, 95, 63, 65, 71, 6, 40, 49, 84,
+			35, 0, 8, 197, 75, 186, 147, 81, 48, 67, 8, 197, 64, 243, 49, 60, 208, 67, 9, 198, 197, 36, 201, 77, 68, 192, 67, 0, 9, 198,
+			88, 19, 70, 48, 108, 192, 68, 9, 198, 85, 27, 203, 52, 29, 206, 67, 9, 198, 84, 98, 140, 25, 60, 192, 67, 8, 197, 87, 163, 65,
+			220, 224, 67, 7, 196, 175, 209, 70, 204, 68, 0, 0, 7, 196, 91, 181, 207, 16, 66, 11, 200, 28, 99, 6, 32, 240, 134, 79, 48, 69,
+			0, 9, 198, 48, 97, 79, 88, 241, 64, 67, 6, 195, 34, 99, 197, 66, 0, 11, 200, 5, 37, 109, 76, 240, 134, 79, 48, 69, 0, 8,
+			197, 73, 180, 54, 212, 80, 67, 7, 196, 68, 18, 53, 20, 66, 8, 197, 160, 35, 210, 212, 80, 67, 8, 197, 13, 178, 22, 60, 80, 66,
+			0, 9, 198, 52, 146, 47, 79, 100, 0, 67, 7, 196, 47, 53, 84, 32, 66, 6, 195, 34, 188, 192, 66, 6, 195, 30, 220, 192, 66, 0,
+			9, 198, 66, 52, 206, 61, 99, 197, 67, 8, 197, 66, 208, 77, 80, 80, 67, 9, 198, 49, 67, 143, 88, 241, 64, 67, 9, 198, 47, 49,
+			136, 152, 241, 64, 68, 9, 198, 212, 83, 207, 79, 81, 64, 68, 9, 198, 153, 51, 200, 152, 241, 64, 68, 0, 8, 197, 75, 19, 204, 60,
+			64, 67, 7, 196, 67, 96, 143, 40, 66, 6, 195, 66, 195, 51, 66, 8, 197, 55, 51, 204, 60, 64, 67, 6, 195, 11, 48, 179, 66, 0,
+			9, 198, 67, 98, 72, 88, 241, 64, 67, 10, 199, 52, 193, 139, 60, 137, 143, 20, 68, 10, 199, 17, 22, 205, 60, 244, 245, 20, 68, 9,
+			198, 16, 18, 56, 219, 81, 64, 68, 9, 198, 12, 100, 246, 88, 241, 64, 67, 0, 9, 198, 76, 101, 142, 60, 195, 196, 67, 9, 198, 64,
+			100, 207, 8, 242, 128, 67, 7, 196, 66, 244, 198, 204, 67, 7, 196, 55, 4, 207, 48, 66, 6, 195, 9, 68, 243, 66, 0, 9, 198, 72,
+			147, 80, 76, 243, 64, 66, 9, 198, 52, 20, 140, 227, 109, 69, 68, 11, 200, 24, 180, 139, 81, 18, 39, 60, 80, 68, 0, 6, 195, 87,
+			3, 204, 66, 6, 195, 67, 100, 243, 66, 6, 195, 64, 244, 248, 66, 9, 198, 19, 17, 139, 60, 195, 196, 68, 6, 195, 10, 212, 243, 66,
+			0, 10, 199, 88, 193, 130, 60, 137, 143, 20, 68, 6, 195, 36, 132, 236, 65, 0, 8, 197, 91, 211, 210, 47, 128, 67, 9, 198, 160, 35,
+			210, 44, 204, 192, 67, 7, 196, 36, 131, 211, 224, 67, 8, 197, 31, 195, 210, 47, 128, 67, 0, 9, 198, 89, 27, 248, 219, 81, 64, 68,
+			8, 197, 4, 77, 142, 60, 208, 67, 0, 7, 196, 55, 62, 15, 48, 67, 9, 198, 52, 227, 196, 60, 35, 202, 67, 8, 197, 20, 144, 82,
+			47, 128, 67, 11, 200, 20, 155, 70, 45, 51, 204, 60, 64, 69, 10, 199, 8, 20, 139, 25, 48, 143, 48, 65, 8, 197, 153, 51, 196, 60,
+			192, 67, 0, 9, 198, 5, 36, 246, 56, 243, 64, 67, 0, 9, 198, 73, 180, 87, 24, 35, 204, 67, 9, 198, 73, 62, 198, 61, 34, 248,
+			68, 8, 197, 47, 17, 146, 47, 128, 67, 10, 199, 20, 100, 134, 76, 240, 143, 40, 68, 9, 198, 17, 180, 76, 60, 35, 204, 67, 0, 7,
+			196, 46, 251, 73, 128, 66, 7, 196, 34, 107, 73, 128, 65, 11, 200, 24, 193, 139, 79, 100, 54, 212, 80, 69, 0, 7, 196, 88, 22, 73,
+			100, 66, 10, 199, 73, 1, 139, 79, 100, 139, 224, 67, 11, 200, 52, 17, 14, 37, 51, 210, 47, 128, 68, 10, 199, 24, 193, 139, 79, 100,
+			139, 224, 68, 9, 198, 18, 208, 239, 61, 34, 248, 68, 0, 0, 0, 9, 198, 45, 180, 69, 30, 210, 96, 65, 10, 199, 17, 16, 83, 37,
+			38, 9, 128, 65, 0, 7, 196, 88, 18, 58, 76, 66, 7, 196, 67, 102, 9, 76, 65, 6, 195, 140, 133, 17, 66, 6, 195, 45, 67, 124,
+			66, 0, 10, 199, 72, 96, 251, 60, 146, 19, 176, 68, 0, 26, 4, 104, 116, 116, 112, 36, 57, 76, 47, 37, 12, 47, 37, 12, 6, 48,
+			37, 12, 10, 0, 81, 58, 47, 47, 32, 12, 201, 80, 196, 209, 4, 210, 75, 217, 34, 248, 69, 8, 197, 77, 18, 84, 53, 80, 66, 7,
+			196, 44, 22, 77, 240, 66, 8, 197, 24, 180, 144, 237, 48, 66, 9, 198, 20, 100, 15, 32, 148, 192, 66, 7, 196, 16, 96, 196, 240, 66,
+			0, 0, 8, 197, 74, 83, 133, 233, 48, 66, 8, 197, 44, 99, 6, 67, 192, 67, 6, 195, 32, 101, 124, 66, 6, 195, 12, 98, 60, 66,
+			6, 195, 8, 98, 60, 66, 0, 8, 197, 76, 97, 12, 37, 128, 66, 8, 197, 44, 148, 58, 37, 32, 67, 8, 197, 11, 1, 149, 37, 32,
+			67, 0, 6, 65, 44, 49, 13, 0, 6, 195, 67, 213, 124, 66, 8, 197, 64, 241, 73, 80, 208, 65, 8, 197, 52, 97, 73, 80, 208, 65,
+			8, 197, 47, 19, 213, 184, 208, 67, 8, 197, 44, 17, 65, 37, 80, 67, 9, 198, 43, 179, 196, 48, 149, 64, 67, 0, 7, 196, 79, 2,
+			20, 88, 66, 6, 195, 55, 62, 150, 66, 9, 198, 44, 226, 68, 224, 148, 128, 67, 6, 195, 43, 190, 150, 66, 9, 198, 9, 180, 72, 224,
+			148, 128, 67, 0, 8, 197, 56, 144, 198, 51, 192, 67, 9, 198, 24, 194, 72, 37, 67, 64, 66, 8, 197, 20, 144, 85, 184, 208, 67, 8,
+			197, 5, 11, 17, 37, 80, 67, 0, 8, 197, 69, 178, 248, 37, 32, 67, 0, 9, 198, 73, 62, 198, 61, 91, 141, 68, 9, 198, 20, 99,
+			60, 37, 67, 64, 66, 8, 197, 168, 62, 137, 80, 208, 66, 8, 197, 172, 62, 137, 80, 208, 66, 0, 9, 198, 64, 20, 209, 39, 165, 128,
+			67, 9, 198, 44, 25, 81, 32, 148, 128, 65, 6, 195, 173, 179, 0, 66, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6, 39, 50,
+			35, 0, 10, 199, 72, 147, 80, 60, 130, 84, 52, 66, 9, 198, 19, 181, 14, 20, 149, 13, 66, 0, 16, 4, 95, 48, 77, 51, 65, 37,
+			55, 37, 6, 35, 34, 72, 35, 0, 0, 0, 14, 4, 95, 48, 77, 49, 99, 6, 37, 55, 35, 72, 37, 0, 6, 195, 61, 59, 0, 65,
+			0, 10, 199, 20, 99, 21, 199, 162, 84, 52, 67, 0, 8, 197, 64, 20, 209, 80, 192, 66, 0, 9, 198, 91, 210, 72, 206, 83, 0, 68,
+			8, 197, 65, 25, 142, 80, 176, 66, 0, 0, 0, 7, 196, 72, 19, 84, 56, 66, 0, 0, 9, 198, 52, 146, 47, 73, 124, 0, 67, 0,
+			10, 199, 65, 16, 80, 70, 99, 148, 44, 67, 12, 201, 197, 36, 209, 80, 220, 37, 68, 149, 13, 68, 0, 0, 6, 195, 23, 186, 153, 66,
+			0, 9, 198, 220, 80, 69, 28, 152, 0, 65, 0, 15, 66, 73, 48, 89, 47, 39, 47, 6, 37, 50, 49, 37, 0, 24, 8, 197, 74, 49,
+			75, 37, 144, 66, 6, 195, 60, 197, 11, 66, 0, 7, 196, 232, 16, 137, 128, 66, 0, 6, 195, 46, 58, 153, 66, 6, 195, 4, 47, 83,
+			66, 0, 0, 8, 197, 73, 244, 83, 80, 176, 66, 8, 197, 72, 19, 79, 80, 176, 67, 7, 196, 45, 64, 251, 76, 66, 7, 196, 46, 145,
+			73, 76, 65, 8, 197, 44, 21, 24, 80, 176, 65, 7, 196, 20, 100, 187, 76, 66, 0, 9, 198, 64, 246, 129, 20, 114, 96, 65, 0, 9,
+			198, 128, 213, 17, 49, 66, 192, 67, 7, 196, 85, 68, 78, 240, 66, 7, 196, 77, 68, 78, 240, 66, 7, 196, 64, 102, 75, 240, 66, 6,
+			195, 66, 240, 124, 67, 6, 195, 144, 178, 83, 65, 7, 196, 53, 67, 133, 240, 66, 7, 196, 47, 53, 251, 76, 66, 8, 197, 44, 243, 85,
+			245, 48, 66, 6, 195, 46, 58, 145, 66, 7, 196, 20, 96, 137, 76, 65, 7, 196, 9, 66, 210, 240, 66, 0, 9, 198, 95, 194, 193, 20,
+			114, 96, 65, 9, 198, 85, 68, 100, 20, 114, 96, 65, 9, 198, 73, 62, 1, 20, 114, 96, 65, 9, 198, 53, 69, 101, 20, 114, 96, 65,
+			9, 198, 140, 50, 193, 20, 114, 96, 65, 9, 198, 44, 149, 99, 20, 114, 96, 65, 7, 196, 47, 170, 212, 48, 67, 9, 198, 14, 180, 129,
+			20, 114, 96, 65, 10, 199, 9, 65, 75, 4, 81, 201, 128, 65, 0, 7, 196, 77, 67, 20, 52, 66, 7, 196, 75, 17, 71, 240, 66, 6,
+			195, 72, 20, 252, 66, 0, 9, 198, 84, 207, 37, 20, 114, 96, 65, 10, 199, 79, 98, 139, 4, 81, 201, 128, 65, 10, 199, 72, 184, 197,
+			4, 81, 201, 128, 65, 7, 196, 52, 100, 201, 72, 66, 7, 196, 44, 20, 212, 56, 66, 10, 199, 23, 82, 139, 4, 81, 201, 128, 65, 9,
+			198, 183, 163, 65, 20, 114, 96, 66, 0, 7, 196, 61, 51, 9, 12, 65, 8, 197, 44, 243, 111, 23, 192, 67, 0, 6, 65, 48, 55, 13,
+			0, 10, 199, 164, 184, 205, 4, 81, 201, 128, 66, 9, 198, 141, 62, 228, 20, 114, 96, 66, 0, 7, 196, 73, 64, 240, 240, 67, 8, 197,
+			65, 18, 72, 36, 48, 65, 9, 198, 52, 97, 1, 91, 181, 192, 67, 8, 197, 24, 194, 75, 75, 192, 67, 7, 196, 8, 243, 9, 20, 66,
+			0, 6, 195, 72, 209, 128, 72, 10, 199, 22, 217, 187, 4, 81, 201, 128, 67, 0, 7, 196, 64, 242, 9, 12, 65, 7, 196, 61, 50, 9,
+			12, 65, 0, 6, 195, 86, 226, 72, 66, 8, 197, 73, 60, 56, 37, 32, 67, 8, 197, 20, 149, 83, 204, 64, 66, 0, 7, 196, 84, 197,
+			9, 20, 66, 10, 199, 68, 17, 73, 179, 53, 251, 76, 69, 7, 196, 196, 59, 73, 20, 67, 0, 12, 201, 99, 179, 143, 11, 212, 129, 20,
+			114, 96, 67, 9, 198, 73, 54, 203, 51, 130, 82, 67, 7, 196, 47, 193, 9, 32, 66, 0, 12, 201, 48, 147, 115, 4, 80, 69, 28, 152,
+			0, 67, 7, 196, 10, 182, 73, 100, 66, 0, 0, 7, 196, 48, 110, 58, 20, 67, 0, 8, 197, 64, 22, 75, 80, 192, 66, 0, 9, 198,
+			8, 241, 73, 19, 161, 64, 67, 7, 196, 154, 241, 58, 20, 67, 0, 0, 6, 195, 50, 197, 13, 66, 9, 198, 32, 99, 48, 97, 66, 192,
+			67, 8, 197, 232, 158, 196, 232, 80, 68, 0, 0, 0, 8, 197, 64, 148, 139, 80, 224, 66, 7, 196, 46, 213, 212, 56, 66, 8, 197, 8,
+			20, 147, 80, 224, 66, 0, 0, 0, 0, 0, 6, 195, 184, 146, 192, 66, 0, 0, 6, 195, 55, 162, 64, 72, 7, 195, 56, 146, 0, 72,
+			23, 7, 196, 84, 146, 9, 44, 66, 9, 198, 66, 254, 19, 36, 181, 13, 66, 7, 196, 48, 241, 9, 44, 66, 6, 195, 51, 194, 75, 66,
+			6, 195, 232, 100, 147, 66, 0, 8, 196, 13, 180, 86, 80, 72, 23, 0, 8, 197, 77, 16, 68, 36, 176, 66, 7, 196, 74, 84, 73, 44,
+			66, 6, 195, 64, 244, 252, 66, 6, 195, 140, 146, 192, 66, 8, 197, 8, 97, 12, 36, 176, 66, 7, 196, 10, 208, 82, 76, 66, 7, 196,
+			7, 210, 82, 76, 66, 0, 7, 196, 44, 17, 81, 184, 66, 6, 195, 233, 156, 64, 66, 0, 6, 195, 128, 137, 252, 67, 7, 196, 96, 99,
+			9, 44, 66, 8, 197, 88, 243, 59, 36, 176, 67, 7, 196, 86, 249, 82, 76, 66, 8, 197, 67, 100, 198, 73, 48, 66, 7, 196, 52, 97,
+			73, 44, 66, 0, 6, 195, 67, 131, 49, 66, 6, 195, 55, 213, 113, 66, 6, 195, 47, 163, 113, 66, 6, 195, 8, 241, 110, 66, 7, 196,
+			8, 16, 148, 196, 67, 0, 9, 197, 73, 4, 96, 52, 240, 72, 23, 8, 197, 96, 149, 76, 36, 176, 66, 8, 197, 88, 18, 163, 41, 80,
+			66, 8, 197, 77, 16, 85, 36, 176, 66, 9, 198, 54, 242, 85, 25, 36, 192, 67, 8, 197, 49, 73, 16, 232, 176, 65, 7, 196, 140, 47,
+			49, 76, 67, 9, 198, 47, 52, 209, 5, 36, 192, 66, 9, 198, 36, 36, 73, 100, 147, 64, 67, 0, 6, 195, 67, 204, 88, 66, 8, 197,
+			52, 17, 1, 35, 16, 67, 8, 197, 47, 160, 77, 86, 224, 67, 7, 196, 32, 21, 186, 196, 67, 6, 195, 170, 83, 113, 67, 6, 195, 14,
+			251, 177, 67, 0, 8, 197, 72, 20, 252, 36, 176, 67, 9, 198, 68, 146, 207, 100, 100, 192, 67, 8, 197, 67, 98, 1, 36, 176, 67, 6,
+			195, 67, 210, 67, 65, 7, 196, 61, 48, 137, 12, 65, 7, 196, 60, 36, 73, 12, 65, 9, 198, 52, 105, 85, 36, 130, 75, 68, 8, 197,
+			52, 20, 251, 36, 176, 67, 8, 197, 37, 36, 251, 36, 176, 67, 9, 198, 193, 53, 18, 36, 20, 147, 68, 0, 7, 196, 95, 21, 250, 196,
+			65, 7, 196, 145, 89, 76, 196, 67, 7, 196, 15, 160, 250, 196, 65, 7, 196, 8, 97, 84, 196, 67, 12, 201, 188, 100, 147, 24, 130, 79,
+			48, 241, 0, 70, 0, 8, 197, 85, 16, 72, 119, 208, 66, 6, 195, 164, 142, 195, 66, 8, 197, 68, 18, 17, 36, 48, 65, 8, 197, 64,
+			241, 66, 36, 48, 65, 9, 198, 64, 20, 207, 48, 241, 0, 67, 9, 198, 48, 98, 139, 226, 52, 147, 67, 7, 196, 30, 241, 122, 52, 66,
+			9, 198, 10, 218, 15, 48, 241, 0, 68, 0, 6, 195, 96, 98, 72, 66, 7, 196, 81, 166, 209, 8, 66, 8, 197, 66, 52, 147, 187, 16,
+			67, 8, 197, 67, 2, 87, 187, 16, 68, 8, 197, 47, 98, 207, 22, 224, 67, 7, 196, 197, 37, 12, 196, 67, 7, 196, 5, 36, 60, 196,
+			67, 8, 197, 4, 90, 100, 51, 16, 68, 0, 7, 196, 88, 207, 73, 20, 66, 8, 197, 88, 145, 81, 36, 80, 66, 9, 198, 66, 226, 68,
+			68, 147, 64, 67, 7, 196, 47, 160, 137, 20, 66, 0, 9, 198, 88, 243, 6, 73, 62, 241, 68, 7, 196, 87, 211, 109, 196, 67, 9, 198,
+			77, 16, 77, 64, 204, 64, 66, 8, 197, 73, 254, 81, 36, 128, 66, 7, 196, 216, 131, 122, 196, 67, 7, 196, 55, 161, 58, 196, 67, 7,
+			196, 54, 241, 122, 196, 67, 7, 196, 192, 150, 58, 196, 66, 8, 197, 16, 16, 186, 23, 16, 67, 8, 197, 9, 179, 4, 235, 16, 65, 7,
+			196, 180, 146, 58, 196, 68, 0, 6, 65, 52, 65, 13, 0, 8, 197, 86, 249, 72, 119, 208, 67, 7, 196, 66, 196, 73, 12, 65, 0, 7,
+			196, 47, 211, 137, 32, 66, 8, 197, 172, 48, 77, 235, 16, 68, 0, 7, 196, 92, 155, 201, 20, 67, 11, 200, 88, 148, 15, 91, 49, 81,
+			36, 176, 68, 8, 197, 88, 144, 145, 36, 80, 66, 8, 197, 73, 67, 21, 36, 80, 66, 7, 196, 73, 55, 250, 20, 66, 8, 197, 72, 21,
+			81, 36, 80, 66, 0, 6, 195, 164, 139, 128, 66, 0, 8, 197, 84, 197, 61, 36, 80, 67, 7, 196, 52, 155, 58, 20, 67, 0, 10, 199,
+			65, 16, 66, 108, 193, 58, 196, 66, 6, 195, 23, 17, 46, 66, 0, 9, 198, 88, 100, 211, 68, 146, 192, 66, 9, 198, 73, 67, 21, 4,
+			210, 69, 67, 9, 198, 65, 16, 70, 32, 146, 192, 67, 9, 198, 52, 100, 207, 20, 146, 192, 67, 9, 198, 44, 20, 207, 48, 146, 192, 67,
+			9, 198, 9, 67, 6, 15, 161, 64, 67, 0, 7, 196, 28, 20, 141, 196, 66, 8, 197, 8, 241, 15, 54, 224, 67, 6, 195, 11, 2, 49,
+			66, 0, 8, 197, 10, 188, 2, 232, 80, 67, 7, 196, 189, 60, 201, 52, 67, 0, 8, 197, 92, 100, 6, 51, 16, 67, 8, 197, 88, 207,
+			79, 86, 224, 67, 6, 195, 64, 99, 49, 66, 6, 195, 44, 243, 113, 66, 8, 197, 188, 67, 15, 86, 224, 67, 0, 9, 198, 84, 242, 187,
+			15, 178, 192, 65, 9, 198, 73, 64, 147, 217, 2, 75, 67, 0, 7, 196, 69, 77, 213, 184, 67, 9, 198, 16, 244, 144, 60, 92, 64, 67,
+			0, 10, 199, 64, 241, 80, 245, 70, 9, 44, 65, 9, 198, 24, 193, 139, 77, 18, 75, 67, 0, 9, 198, 45, 66, 212, 69, 66, 0, 67,
+			7, 196, 47, 53, 251, 56, 66, 9, 198, 14, 52, 147, 24, 204, 64, 67, 7, 196, 8, 204, 197, 196, 66, 0, 9, 198, 54, 189, 134, 32,
+			146, 192, 68, 9, 198, 25, 11, 134, 65, 50, 75, 68, 0, 8, 197, 16, 194, 87, 239, 16, 67, 0, 38, 3, 95, 194, 171, 55, 38, 4,
+			35, 84, 35, 15, 72, 84, 4, 39, 37, 50, 35, 15, 47, 34, 37, 4, 13, 81, 35, 55, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0,
+			0, 9, 198, 19, 179, 111, 61, 91, 128, 68, 0, 0, 24, 3, 95, 194, 166, 48, 34, 36, 49, 4, 13, 89, 50, 35, 47, 35, 15, 76,
+			36, 34, 47, 6, 35, 0, 6, 195, 52, 100, 238, 66, 0, 6, 195, 164, 114, 77, 66, 8, 197, 64, 100, 147, 36, 176, 66, 7, 196, 46,
+			52, 137, 44, 66, 7, 196, 236, 100, 201, 44, 67, 0, 6, 195, 68, 149, 241, 66, 6, 195, 70, 108, 64, 66, 7, 196, 56, 246, 134, 72,
+			66, 0, 7, 196, 80, 211, 137, 44, 66, 9, 198, 80, 194, 88, 56, 146, 192, 65, 8, 197, 80, 94, 142, 36, 176, 65, 9, 198, 72, 209,
+			153, 56, 146, 192, 66, 7, 196, 45, 64, 137, 44, 66, 8, 197, 18, 49, 78, 36, 176, 66, 0, 7, 196, 44, 245, 70, 196, 67, 0, 7,
+			195, 4, 208, 64, 72, 23, 8, 197, 91, 210, 72, 205, 48, 67, 9, 198, 77, 68, 205, 188, 146, 192, 65, 9, 198, 76, 111, 70, 76, 146,
+			192, 68, 6, 195, 164, 220, 211, 66, 9, 198, 66, 209, 153, 56, 146, 192, 65, 8, 197, 140, 142, 142, 36, 176, 65, 8, 197, 140, 78, 206,
+			36, 176, 65, 9, 198, 44, 194, 77, 5, 50, 75, 67, 9, 198, 20, 241, 13, 5, 50, 75, 67, 9, 198, 17, 16, 77, 5, 50, 75, 67,
+			9, 198, 4, 128, 148, 96, 226, 75, 65, 0, 7, 196, 92, 145, 47, 196, 65, 8, 197, 72, 99, 32, 59, 16, 65, 6, 195, 69, 64, 177,
+			66, 7, 196, 52, 101, 239, 196, 67, 8, 197, 20, 53, 24, 51, 0, 66, 6, 195, 15, 4, 238, 66, 0, 8, 197, 87, 49, 147, 36, 176,
+			67, 8, 197, 86, 240, 83, 36, 176, 67, 9, 198, 72, 100, 147, 71, 18, 75, 65, 10, 199, 65, 16, 68, 52, 20, 201, 44, 67, 9, 198,
+			145, 10, 88, 56, 146, 192, 65, 8, 197, 53, 182, 48, 36, 176, 67, 8, 197, 8, 249, 78, 36, 176, 67, 0, 9, 198, 68, 147, 76, 128,
+			236, 64, 65, 8, 197, 67, 162, 198, 79, 16, 67, 7, 196, 44, 241, 70, 196, 67, 8, 197, 46, 48, 198, 75, 16, 67, 7, 196, 44, 18,
+			6, 196, 67, 9, 198, 24, 81, 140, 12, 18, 146, 65, 6, 195, 20, 106, 136, 66, 0, 8, 196, 67, 100, 201, 12, 72, 23, 7, 196, 67,
+			96, 137, 12, 65, 9, 198, 64, 100, 6, 48, 226, 75, 67, 9, 198, 36, 132, 207, 96, 226, 75, 65, 0, 8, 197, 79, 180, 48, 79, 16,
+			67, 6, 195, 75, 186, 136, 66, 7, 196, 67, 17, 42, 56, 66, 8, 197, 57, 66, 204, 27, 16, 67, 7, 196, 47, 176, 83, 196, 67, 7,
+			196, 28, 104, 211, 196, 67, 7, 196, 20, 243, 107, 196, 67, 0, 10, 199, 84, 193, 132, 52, 20, 201, 44, 67, 10, 199, 73, 98, 72, 52,
+			20, 201, 44, 67, 9, 198, 74, 144, 155, 68, 226, 75, 65, 10, 199, 52, 20, 198, 52, 20, 201, 44, 68, 9, 198, 52, 20, 147, 60, 92,
+			211, 67, 9, 198, 31, 180, 195, 192, 146, 192, 65, 10, 199, 189, 50, 80, 240, 100, 201, 44, 69, 0, 9, 198, 95, 18, 195, 4, 164, 128,
+			66, 9, 198, 25, 2, 83, 68, 21, 174, 68, 8, 197, 13, 178, 19, 244, 64, 66, 6, 195, 173, 114, 72, 66, 0, 6, 195, 84, 159, 69,
+			66, 10, 199, 81, 36, 61, 24, 83, 137, 44, 65, 6, 195, 177, 34, 69, 66, 12, 201, 24, 113, 146, 24, 83, 73, 96, 226, 75, 67, 8,
+			197, 19, 3, 215, 36, 80, 67, 10, 199, 15, 179, 184, 60, 91, 201, 44, 67, 0, 6, 65, 56, 50, 13, 0, 9, 198, 197, 62, 213, 24,
+			164, 128, 67, 9, 198, 17, 16, 71, 22, 252, 64, 65, 8, 197, 188, 20, 236, 75, 16, 68, 0, 12, 201, 77, 180, 15, 108, 70, 204, 56,
+			146, 192, 67, 10, 199, 69, 65, 79, 20, 240, 137, 12, 67, 12, 201, 65, 34, 86, 62, 251, 73, 76, 146, 192, 70, 10, 199, 161, 13, 139,
+			225, 43, 201, 44, 67, 9, 198, 52, 109, 197, 60, 34, 67, 67, 10, 199, 52, 97, 79, 20, 240, 137, 12, 67, 8, 197, 4, 36, 148, 68,
+			80, 66, 0, 8, 197, 5, 3, 15, 52, 32, 66, 0, 12, 201, 72, 97, 77, 61, 177, 27, 48, 226, 75, 67, 7, 196, 196, 82, 106, 20,
+			67, 11, 200, 13, 177, 12, 24, 83, 194, 36, 48, 67, 0, 10, 199, 73, 177, 17, 4, 113, 111, 196, 66, 9, 198, 57, 242, 189, 45, 139,
+			241, 66, 6, 195, 22, 180, 238, 66, 0, 9, 198, 72, 177, 144, 76, 146, 192, 66, 12, 201, 65, 180, 117, 36, 132, 207, 96, 226, 75, 67,
+			9, 198, 53, 22, 210, 56, 146, 192, 66, 8, 197, 52, 21, 167, 36, 176, 67, 9, 198, 140, 164, 205, 61, 50, 67, 65, 9, 198, 45, 22,
+			195, 56, 146, 192, 66, 8, 197, 36, 67, 48, 36, 176, 67, 9, 198, 21, 22, 195, 56, 146, 192, 66, 9, 198, 20, 198, 199, 56, 146, 192,
+			66, 8, 197, 16, 241, 112, 36, 176, 67, 7, 196, 18, 220, 9, 44, 65, 9, 198, 5, 36, 251, 60, 145, 64, 68, 0, 6, 195, 78, 196,
+			177, 66, 8, 197, 64, 20, 139, 168, 192, 66, 6, 195, 46, 192, 113, 67, 7, 196, 212, 81, 170, 48, 67, 0, 10, 199, 77, 16, 80, 24,
+			131, 201, 20, 68, 7, 196, 148, 180, 201, 44, 66, 9, 198, 73, 52, 91, 12, 226, 75, 66, 9, 198, 73, 3, 6, 76, 226, 75, 66, 9,
+			198, 64, 19, 70, 76, 226, 75, 65, 8, 197, 66, 217, 142, 36, 176, 65, 9, 198, 48, 145, 38, 56, 146, 192, 65, 9, 198, 44, 243, 6,
+			72, 226, 75, 67, 8, 197, 44, 17, 118, 168, 176, 67, 12, 201, 24, 193, 139, 79, 97, 79, 8, 144, 192, 68, 10, 199, 21, 180, 117, 20,
+			240, 137, 12, 67, 9, 198, 23, 130, 82, 56, 146, 192, 65, 9, 198, 13, 22, 210, 76, 226, 75, 66, 0, 7, 196, 67, 100, 198, 196, 67,
+			7, 196, 64, 243, 39, 196, 67, 0, 12, 201, 73, 14, 205, 5, 51, 200, 60, 145, 64, 69, 10, 199, 64, 241, 80, 37, 35, 137, 44, 65,
+			7, 196, 60, 220, 201, 52, 67, 8, 197, 44, 148, 240, 36, 176, 65, 8, 197, 36, 220, 14, 36, 176, 65, 9, 198, 20, 155, 70, 45, 50,
+			75, 68, 0, 9, 198, 73, 62, 198, 61, 50, 80, 68, 8, 197, 45, 28, 79, 51, 16, 67, 0, 9, 198, 86, 197, 18, 56, 146, 192, 65,
+			9, 198, 76, 146, 195, 192, 146, 192, 65, 9, 198, 72, 99, 112, 56, 146, 192, 65, 8, 197, 67, 100, 176, 36, 176, 67, 9, 198, 65, 16,
+			83, 192, 146, 192, 65, 9, 198, 144, 33, 133, 164, 226, 75, 66, 0, 0, 11, 200, 77, 18, 66, 4, 74, 78, 36, 176, 66, 9, 198, 40,
+			241, 79, 87, 211, 64, 67, 9, 198, 180, 179, 214, 60, 194, 75, 68, 0, 10, 199, 88, 99, 79, 16, 195, 194, 196, 68, 9, 198, 73, 52,
+			73, 88, 236, 64, 66, 11, 200, 73, 51, 205, 5, 51, 210, 47, 128, 68, 10, 199, 46, 209, 138, 20, 244, 139, 224, 68, 9, 198, 20, 19,
+			65, 72, 188, 64, 67, 9, 198, 153, 51, 205, 60, 43, 128, 68, 0, 9, 198, 88, 207, 79, 87, 211, 64, 67, 9, 198, 220, 36, 147, 15,
+			2, 75, 65, 9, 198, 216, 84, 147, 15, 2, 75, 65, 10, 199, 52, 243, 9, 76, 60, 9, 44, 66, 0, 0, 11, 200, 73, 180, 12, 24,
+			220, 14, 36, 176, 66, 10, 199, 73, 176, 233, 55, 3, 137, 44, 66, 12, 201, 64, 100, 207, 108, 70, 204, 56, 146, 192, 67, 11, 200, 60,
+			38, 134, 73, 48, 240, 36, 176, 66, 10, 199, 145, 145, 146, 76, 60, 9, 44, 66, 0, 7, 196, 24, 208, 74, 48, 66, 0, 12, 201, 73,
+			182, 20, 13, 36, 195, 192, 146, 192, 66, 11, 200, 73, 189, 194, 73, 48, 240, 36, 176, 66, 8, 197, 4, 213, 12, 25, 48, 67, 0, 8,
+			196, 72, 52, 91, 88, 72, 23, 0, 7, 196, 88, 243, 79, 76, 66, 6, 195, 75, 23, 125, 66, 12, 201, 65, 180, 198, 100, 100, 147, 15,
+			2, 75, 67, 12, 201, 66, 145, 89, 25, 36, 195, 192, 146, 192, 66, 9, 198, 60, 33, 140, 37, 34, 192, 67, 9, 198, 44, 243, 80, 48,
+			244, 192, 66, 7, 196, 189, 52, 107, 76, 66, 0, 0, 6, 195, 77, 18, 125, 66, 13, 202, 73, 179, 211, 25, 129, 146, 76, 60, 9, 44,
+			67, 9, 198, 64, 243, 9, 16, 195, 211, 67, 7, 196, 66, 52, 157, 244, 66, 7, 196, 46, 52, 157, 244, 66, 7, 196, 22, 148, 157, 244,
+			66, 8, 197, 17, 18, 77, 119, 208, 66, 7, 196, 172, 59, 230, 76, 67, 0, 7, 196, 16, 235, 143, 96, 66, 0, 12, 201, 67, 98, 72,
+			212, 84, 147, 15, 2, 75, 67, 8, 197, 5, 43, 210, 119, 208, 67, 0, 7, 196, 141, 49, 139, 72, 66, 8, 197, 5, 68, 144, 81, 96,
+			65, 0, 9, 198, 56, 150, 65, 21, 180, 64, 67, 8, 197, 47, 52, 209, 173, 48, 66, 0, 0, 7, 195, 74, 145, 64, 72, 23, 7, 195,
+			66, 145, 64, 72, 23, 7, 196, 164, 140, 221, 244, 67, 0, 0, 38, 3, 95, 194, 187, 116, 4, 35, 89, 50, 35, 15, 72, 84, 4, 39,
+			37, 50, 35, 15, 47, 34, 37, 4, 13, 81, 35, 55, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 0, 8, 197, 11, 101, 14, 196, 64,
+			65, 0, 7, 195, 66, 146, 0, 72, 23, 7, 196, 21, 246, 70, 44, 66, 0, 0, 6, 65, 68, 34, 13, 0, 0, 0, 6, 195, 130, 147,
+			64, 66, 0, 8, 197, 20, 146, 1, 40, 224, 66, 0, 7, 196, 8, 245, 134, 52, 66, 9, 198, 233, 98, 80, 26, 49, 0, 68, 0, 7,
+			196, 20, 105, 74, 48, 66, 0, 9, 198, 68, 17, 70, 76, 99, 0, 67, 9, 198, 13, 67, 133, 236, 188, 69, 65, 0, 8, 197, 46, 196,
+			198, 40, 192, 66, 0, 0, 9, 198, 44, 243, 66, 4, 163, 128, 66, 0, 0, 6, 195, 72, 111, 0, 66, 0, 0, 0, 6, 195, 129, 102,
+			209, 66, 12, 201, 52, 242, 1, 40, 176, 69, 28, 152, 0, 66, 0, 0, 6, 195, 85, 77, 145, 66, 8, 197, 73, 64, 134, 45, 48, 66,
+			7, 196, 44, 20, 219, 68, 66, 8, 197, 20, 101, 70, 45, 48, 66, 8, 197, 5, 36, 6, 45, 48, 66, 0, 0, 7, 196, 76, 99, 247,
+			84, 67, 8, 197, 66, 149, 70, 45, 48, 66, 7, 196, 64, 242, 29, 244, 66, 7, 196, 60, 33, 139, 76, 66, 7, 196, 47, 57, 75, 76,
+			66, 7, 196, 44, 20, 147, 244, 66, 7, 196, 5, 81, 139, 76, 66, 0, 7, 196, 52, 20, 246, 72, 66, 7, 196, 4, 43, 207, 72, 67,
+			0, 7, 196, 92, 145, 47, 244, 67, 7, 196, 88, 20, 219, 68, 66, 7, 196, 72, 20, 219, 68, 66, 9, 198, 44, 243, 80, 48, 98, 211,
+			66, 9, 198, 197, 49, 140, 24, 180, 192, 67, 7, 196, 7, 188, 230, 76, 68, 0, 0, 8, 197, 79, 179, 79, 87, 208, 67, 9, 198, 44,
+			244, 141, 206, 100, 192, 67, 7, 196, 47, 164, 207, 84, 66, 9, 198, 20, 149, 84, 33, 223, 64, 67, 9, 198, 5, 36, 246, 144, 52, 192,
+			67, 0, 9, 198, 44, 243, 80, 48, 98, 210, 66, 12, 201, 47, 164, 207, 86, 195, 205, 8, 18, 142, 69, 0, 9, 198, 88, 244, 240, 76,
+			244, 192, 67, 7, 196, 67, 100, 147, 244, 66, 8, 197, 20, 96, 137, 79, 208, 65, 9, 198, 233, 98, 83, 24, 180, 192, 67, 0, 0, 9,
+			198, 5, 3, 210, 79, 101, 64, 67, 0, 6, 65, 64, 48, 13, 0, 6, 195, 79, 133, 8, 66, 8, 197, 67, 160, 69, 177, 32, 67, 6,
+			195, 160, 86, 196, 66, 0, 9, 198, 34, 188, 248, 216, 98, 211, 69, 10, 199, 19, 100, 141, 4, 164, 147, 244, 65, 0, 6, 195, 21, 65,
+			140, 66, 0, 12, 201, 9, 241, 71, 25, 62, 54, 24, 180, 192, 69, 11, 200, 10, 209, 147, 52, 18, 146, 79, 208, 66, 0, 0, 9, 198,
+			47, 52, 209, 5, 60, 61, 68, 0, 7, 65, 72, 89, 13, 0, 49, 4, 193, 72, 23, 9, 198, 64, 243, 20, 45, 22, 196, 67, 0, 12,
+			201, 47, 53, 251, 76, 208, 74, 73, 63, 64, 66, 0, 0, 8, 197, 77, 180, 77, 108, 176, 66, 0, 7, 196, 72, 20, 20, 56, 66, 0,
+			10, 199, 8, 22, 73, 8, 242, 20, 44, 68, 0, 8, 197, 21, 16, 68, 80, 224, 66, 8, 197, 8, 20, 134, 40, 224, 66, 0, 0, 0,
+			0, 8, 197, 52, 98, 44, 233, 0, 67, 0, 7, 3, 95, 209, 131, 40, 0, 0, 0, 6, 194, 172, 240, 72, 23, 8, 3, 95, 209, 129,
+			89, 13, 0, 6, 195, 164, 85, 19, 66, 6, 195, 4, 213, 17, 66, 0, 0, 7, 196, 72, 19, 84, 68, 66, 7, 196, 52, 101, 148, 68,
+			66, 6, 195, 48, 98, 250, 65, 8, 197, 29, 179, 19, 108, 176, 66, 7, 196, 11, 98, 193, 76, 66, 8, 197, 8, 148, 141, 81, 48, 66,
+			7, 196, 8, 18, 45, 76, 66, 7, 196, 4, 40, 212, 76, 65, 0, 6, 195, 148, 204, 192, 66, 6, 195, 74, 220, 192, 66, 6, 195, 196,
+			85, 18, 66, 6, 195, 18, 220, 192, 66, 6, 195, 10, 220, 192, 66, 0, 8, 197, 44, 19, 66, 81, 16, 66, 9, 198, 5, 52, 73, 9,
+			68, 192, 67, 0, 0, 8, 197, 85, 179, 133, 108, 176, 66, 6, 195, 52, 244, 253, 66, 0, 9, 198, 60, 211, 137, 9, 68, 128, 65, 6,
+			195, 48, 147, 115, 66, 7, 196, 24, 51, 148, 88, 66, 0, 9, 198, 97, 66, 212, 56, 85, 17, 67, 9, 198, 72, 99, 32, 56, 85, 17,
+			67, 9, 198, 47, 52, 209, 6, 212, 192, 67, 9, 198, 46, 209, 91, 69, 179, 64, 67, 9, 198, 46, 208, 77, 9, 68, 64, 67, 0, 6,
+			195, 148, 212, 51, 66, 7, 196, 66, 249, 76, 204, 67, 0, 0, 8, 197, 76, 99, 6, 87, 48, 67, 8, 197, 52, 97, 1, 87, 48, 67,
+			7, 196, 140, 212, 9, 204, 67, 0, 7, 195, 65, 178, 192, 72, 23, 8, 197, 67, 98, 212, 217, 16, 67, 0, 8, 197, 168, 36, 65, 87,
+			48, 67, 0, 8, 197, 47, 49, 131, 108, 80, 67, 0, 0, 6, 65, 76, 47, 13, 0, 9, 198, 64, 244, 140, 25, 35, 39, 67, 0, 9,
+			198, 44, 48, 69, 70, 226, 115, 68, 0, 9, 198, 18, 113, 133, 157, 177, 64, 68, 7, 196, 212, 95, 79, 20, 67, 9, 198, 8, 241, 15,
+			72, 201, 192, 67, 0, 8, 197, 80, 210, 82, 108, 192, 65, 8, 197, 69, 77, 213, 60, 32, 67, 7, 196, 64, 100, 246, 48, 66, 0, 0,
+			6, 195, 98, 182, 204, 66, 12, 201, 68, 17, 73, 61, 49, 140, 25, 92, 192, 70, 9, 198, 45, 44, 15, 84, 240, 128, 67, 11, 200, 168,
+			81, 143, 76, 99, 6, 87, 48, 70, 0, 10, 199, 76, 100, 142, 60, 68, 91, 20, 67, 7, 196, 150, 52, 155, 52, 67, 0, 7, 196, 92,
+			146, 204, 224, 66, 0, 7, 196, 64, 241, 54, 52, 66, 0, 10, 199, 74, 48, 224, 56, 245, 79, 8, 68, 7, 196, 74, 189, 213, 204, 67,
+			7, 196, 52, 146, 246, 56, 66, 7, 196, 44, 244, 204, 204, 66, 9, 198, 19, 179, 111, 61, 83, 194, 68, 8, 197, 16, 20, 147, 216, 192,
+			66, 6, 195, 18, 213, 115, 66, 0, 0, 9, 198, 68, 18, 13, 37, 38, 204, 65, 7, 196, 67, 213, 201, 204, 67, 8, 197, 64, 241, 82,
+			51, 48, 66, 7, 196, 161, 68, 246, 56, 67, 0, 0, 9, 198, 72, 19, 108, 205, 61, 140, 68, 8, 197, 66, 52, 147, 216, 224, 66, 9,
+			198, 52, 17, 40, 76, 245, 115, 68, 9, 198, 17, 16, 77, 61, 92, 192, 67, 0, 0, 9, 198, 44, 17, 65, 73, 61, 142, 67, 0, 7,
+			196, 48, 240, 148, 76, 66, 6, 195, 4, 117, 17, 66, 0, 0, 7, 196, 64, 20, 20, 68, 66, 7, 196, 8, 241, 212, 68, 66, 0, 6,
+			195, 64, 148, 243, 66, 5, 194, 179, 128, 66, 6, 195, 181, 54, 206, 66, 0, 7, 196, 86, 244, 207, 52, 66, 8, 197, 50, 226, 80, 81,
+			48, 67, 0, 8, 197, 66, 148, 147, 60, 192, 66, 6, 195, 67, 52, 243, 66, 8, 197, 20, 53, 2, 60, 160, 66, 7, 196, 5, 113, 147,
+			204, 67, 0, 7, 196, 65, 18, 83, 176, 65, 0, 6, 195, 73, 49, 128, 72, 7, 196, 87, 99, 147, 204, 66, 6, 195, 84, 29, 206, 66,
+			8, 197, 76, 105, 78, 81, 32, 65, 7, 196, 60, 46, 211, 204, 65, 8, 197, 44, 244, 177, 81, 32, 65, 6, 195, 34, 99, 202, 66, 6,
+			195, 28, 100, 243, 66, 7, 196, 13, 180, 83, 224, 66, 6, 195, 8, 100, 243, 66, 8, 197, 153, 51, 210, 79, 128, 67, 0, 6, 195, 160,
+			176, 64, 65, 6, 195, 69, 178, 230, 66, 9, 198, 36, 132, 27, 48, 179, 205, 67, 0, 26, 3, 95, 208, 142, 39, 71, 34, 4, 35, 47,
+			36, 50, 15, 40, 72, 37, 84, 6, 37, 47, 36, 55, 36, 50, 0, 7, 196, 84, 100, 147, 204, 66, 7, 196, 84, 18, 147, 204, 66, 8,
+			197, 77, 180, 66, 81, 96, 66, 7, 196, 77, 18, 83, 204, 66, 9, 198, 52, 146, 246, 9, 68, 128, 67, 8, 197, 52, 105, 78, 60, 192,
+			67, 9, 198, 48, 98, 210, 36, 188, 192, 67, 6, 195, 47, 164, 243, 66, 6, 195, 46, 244, 243, 66, 8, 197, 32, 20, 147, 60, 160, 66,
+			0, 9, 197, 13, 180, 41, 44, 144, 72, 23, 28, 3, 95, 209, 151, 39, 71, 34, 4, 35, 47, 36, 50, 15, 84, 13, 48, 34, 39, 89,
+			6, 37, 47, 36, 55, 36, 50, 0, 8, 197, 99, 202, 204, 108, 176, 67, 0, 9, 198, 79, 99, 6, 40, 37, 18, 67, 7, 196, 74, 226,
+			75, 204, 67, 8, 197, 66, 148, 147, 60, 160, 66, 8, 197, 44, 243, 22, 60, 128, 66, 7, 196, 11, 162, 83, 204, 67, 0, 0, 8, 197,
+			44, 19, 123, 79, 48, 67, 9, 198, 168, 45, 130, 25, 60, 192, 68, 0, 12, 3, 95, 209, 147, 83, 55, 39, 34, 37, 50, 0, 7, 196,
+			177, 62, 15, 20, 67, 7, 196, 44, 20, 207, 20, 66, 0, 8, 197, 76, 99, 204, 60, 64, 67, 7, 196, 220, 53, 143, 32, 66, 0, 5,
+			194, 36, 208, 72, 5, 193, 80, 72, 23, 0, 11, 200, 73, 51, 205, 188, 240, 134, 79, 48, 69, 6, 195, 60, 35, 202, 66, 0, 0, 7,
+			196, 77, 68, 203, 180, 66, 9, 198, 65, 34, 86, 60, 195, 196, 67, 6, 195, 67, 96, 237, 66, 6, 195, 64, 244, 243, 66, 6, 195, 8,
+			98, 243, 66, 6, 195, 5, 51, 204, 66, 0, 0, 7, 196, 83, 97, 193, 40, 67, 6, 195, 75, 9, 237, 67, 9, 198, 244, 226, 83, 60,
+			195, 196, 68, 6, 195, 45, 44, 51, 66, 6, 195, 46, 214, 208, 66, 0, 6, 195, 67, 100, 236, 65, 0, 8, 196, 36, 128, 219, 56, 72,
+			23, 9, 198, 87, 163, 107, 60, 195, 196, 68, 8, 197, 64, 243, 20, 79, 48, 67, 11, 200, 48, 98, 210, 36, 179, 204, 60, 64, 68, 9,
+			198, 20, 99, 9, 76, 99, 0, 65, 8, 197, 5, 66, 215, 39, 48, 68, 0, 9, 198, 75, 176, 134, 32, 198, 203, 67, 11, 200, 64, 243,
+			20, 68, 18, 16, 4, 80, 68, 9, 198, 46, 208, 66, 181, 178, 192, 68, 0, 6, 195, 164, 249, 78, 67, 7, 196, 8, 148, 35, 56, 66,
+			8, 197, 180, 179, 214, 60, 192, 67, 0, 0, 8, 197, 67, 178, 82, 47, 128, 67, 7, 196, 16, 244, 231, 188, 67, 0, 9, 198, 52, 100,
+			246, 56, 243, 64, 67, 0, 8, 197, 145, 18, 207, 54, 240, 67, 9, 198, 8, 242, 5, 80, 75, 192, 67, 0, 10, 199, 67, 171, 79, 16,
+			146, 27, 52, 65, 0, 6, 194, 184, 144, 72, 23, 15, 3, 95, 208, 185, 6, 37, 49, 34, 4, 35, 47, 49, 39, 0, 7, 196, 195, 210,
+			65, 100, 68, 0, 7, 3, 95, 208, 184, 37, 0, 6, 195, 156, 100, 128, 66, 7, 196, 52, 19, 84, 48, 66, 0, 7, 196, 64, 102, 1,
+			76, 66, 7, 196, 36, 132, 9, 76, 65, 0, 7, 196, 47, 160, 84, 48, 67, 6, 195, 5, 56, 210, 66, 0, 7, 3, 95, 208, 181, 36,
+			0, 6, 195, 90, 210, 85, 66, 8, 197, 68, 18, 16, 37, 48, 65, 7, 196, 47, 98, 198, 76, 66, 6, 195, 20, 248, 209, 65, 6, 195,
+			8, 241, 151, 66, 7, 196, 11, 161, 84, 44, 66, 8, 197, 8, 19, 66, 80, 176, 66, 0, 9, 198, 81, 41, 66, 5, 146, 96, 66, 8,
+			197, 44, 243, 80, 5, 32, 66, 0, 8, 3, 95, 208, 179, 81, 13, 0, 7, 196, 96, 147, 89, 240, 66, 9, 198, 77, 18, 87, 12, 100,
+			192, 66, 9, 198, 53, 67, 133, 105, 66, 192, 66, 6, 195, 192, 150, 58, 66, 0, 8, 3, 95, 208, 178, 84, 13, 0, 9, 198, 65, 180,
+			198, 64, 148, 128, 67, 7, 196, 47, 196, 9, 96, 66, 0, 8, 197, 84, 18, 15, 55, 176, 67, 9, 198, 33, 176, 143, 8, 243, 0, 67,
+			8, 197, 16, 197, 16, 25, 112, 66, 8, 197, 16, 18, 15, 55, 176, 67, 6, 195, 180, 37, 13, 66, 0, 7, 3, 95, 208, 176, 35, 0,
+			9, 198, 68, 17, 73, 61, 128, 82, 68, 9, 198, 64, 244, 140, 25, 2, 82, 67, 7, 196, 11, 160, 148, 56, 66, 0, 13, 2, 95, 34,
+			49, 35, 84, 6, 37, 76, 49, 37, 0, 6, 195, 145, 11, 77, 66, 8, 197, 52, 20, 145, 5, 80, 66, 10, 199, 52, 17, 9, 73, 52,
+			65, 76, 67, 7, 196, 11, 169, 198, 92, 65, 9, 198, 5, 36, 246, 48, 241, 0, 67, 0, 16, 2, 95, 33, 40, 72, 37, 84, 6, 37,
+			47, 36, 55, 36, 50, 0, 8, 197, 58, 193, 65, 80, 224, 65, 8, 197, 147, 97, 120, 37, 32, 68, 0, 6, 194, 180, 16, 72, 23, 8,
+			197, 75, 18, 231, 25, 112, 65, 9, 198, 56, 146, 235, 12, 101, 192, 65, 9, 198, 53, 16, 72, 156, 101, 192, 65, 9, 198, 25, 33, 183,
+			12, 101, 192, 66, 9, 198, 16, 16, 182, 12, 101, 192, 65, 9, 198, 168, 81, 143, 86, 227, 64, 68, 0, 14, 2, 95, 39, 35, 48, 39,
+			89, 47, 34, 6, 39, 83, 0, 8, 197, 148, 163, 184, 37, 32, 67, 8, 197, 65, 25, 184, 37, 32, 67, 0, 15, 2, 95, 38, 35, 65,
+			48, 36, 34, 89, 6, 35, 50, 47, 0, 9, 198, 67, 97, 139, 148, 228, 192, 67, 0, 9, 198, 45, 16, 82, 59, 130, 82, 67, 8, 197,
+			44, 19, 66, 80, 128, 66, 0, 9, 198, 47, 52, 148, 50, 83, 147, 67, 9, 198, 16, 100, 165, 66, 113, 151, 66, 0, 0, 7, 196, 96,
+			144, 148, 44, 66, 6, 195, 164, 59, 217, 66, 10, 199, 48, 109, 82, 24, 185, 78, 76, 68, 0, 18, 2, 95, 41, 116, 4, 35, 89, 50,
+			35, 15, 89, 49, 6, 39, 71, 35, 0, 0, 18, 2, 95, 40, 55, 38, 6, 35, 84, 35, 15, 89, 49, 6, 39, 71, 35, 0, 8, 197,
+			88, 18, 133, 80, 176, 66, 0, 0, 11, 2, 95, 46, 47, 6, 39, 76, 49, 35, 0, 6, 195, 75, 206, 0, 66, 0, 10, 2, 95, 45,
+			47, 37, 34, 4, 36, 0, 0, 14, 2, 95, 44, 88, 35, 48, 36, 47, 6, 35, 57, 35, 0, 6, 65, 84, 83, 13, 0, 0, 9, 2,
+			95, 51, 47, 34, 6, 37, 0, 8, 197, 77, 18, 66, 80, 224, 66, 0, 9, 2, 95, 50, 72, 84, 6, 36, 0, 0, 10, 2, 95, 49,
+			36, 72, 50, 6, 39, 0, 0, 10, 2, 95, 48, 50, 6, 40, 64, 35, 0, 0, 11, 2, 95, 55, 89, 6, 36, 72, 36, 65, 0, 0,
+			10, 2, 95, 54, 91, 6, 36, 89, 47, 0, 0, 9, 2, 95, 53, 48, 6, 36, 47, 0, 0, 12, 2, 95, 52, 76, 6, 36, 47, 37,
+			34, 37, 0, 0, 23, 2, 95, 59, 47, 4, 39, 76, 49, 35, 15, 37, 15, 88, 35, 48, 36, 47, 6, 35, 57, 35, 0, 0, 15, 2,
+			95, 58, 72, 84, 40, 36, 47, 6, 39, 76, 37, 36, 0, 7, 196, 68, 21, 129, 76, 66, 9, 198, 64, 20, 17, 36, 176, 89, 65, 9,
+			198, 47, 61, 209, 92, 149, 13, 66, 6, 195, 8, 25, 83, 66, 0, 11, 2, 95, 57, 72, 6, 36, 84, 36, 47, 0, 0, 10, 2, 95,
+			56, 6, 39, 89, 36, 65, 0, 6, 195, 68, 149, 250, 65, 8, 197, 56, 148, 209, 5, 48, 66, 7, 196, 52, 17, 36, 76, 66, 7, 196,
+			20, 146, 229, 76, 66, 7, 196, 232, 243, 65, 76, 67, 7, 196, 4, 44, 193, 76, 67, 0, 18, 2, 95, 63, 84, 13, 48, 34, 39, 89,
+			6, 37, 47, 36, 55, 36, 50, 0, 6, 195, 190, 240, 82, 67, 0, 6, 194, 32, 16, 72, 23, 16, 2, 95, 62, 48, 39, 15, 81, 39,
+			55, 38, 6, 35, 65, 39, 0, 7, 196, 77, 26, 229, 76, 66, 8, 197, 149, 18, 75, 5, 48, 67, 7, 196, 164, 244, 165, 76, 67, 8,
+			197, 52, 101, 240, 5, 48, 67, 9, 198, 36, 81, 143, 48, 241, 0, 68, 8, 197, 20, 100, 20, 149, 48, 67, 8, 197, 20, 98, 239, 5,
+			48, 67, 8, 197, 5, 49, 146, 149, 48, 67, 7, 196, 5, 60, 37, 76, 67, 0, 6, 195, 78, 197, 0, 66, 6, 195, 55, 48, 86, 66,
+			6, 195, 31, 2, 86, 66, 0, 14, 2, 95, 60, 48, 39, 15, 65, 6, 35, 55, 49, 39, 0, 9, 198, 84, 244, 207, 74, 84, 192, 67,
+			6, 195, 79, 188, 0, 66, 8, 197, 76, 96, 134, 103, 192, 67, 9, 198, 73, 64, 146, 77, 16, 83, 66, 9, 198, 75, 17, 73, 44, 20,
+			192, 67, 9, 198, 66, 145, 73, 44, 20, 192, 67, 8, 197, 47, 160, 179, 5, 48, 67, 9, 198, 24, 180, 144, 204, 20, 192, 67, 9, 198,
+			20, 148, 12, 60, 208, 83, 67, 9, 198, 9, 253, 139, 68, 20, 192, 67, 8, 197, 7, 179, 210, 149, 48, 68, 6, 195, 4, 64, 64, 66,
+			0, 7, 196, 91, 164, 20, 56, 66, 0, 8, 197, 80, 226, 75, 80, 208, 65, 10, 199, 80, 196, 209, 4, 128, 212, 44, 67, 9, 198, 79,
+			179, 79, 74, 84, 192, 67, 6, 195, 44, 18, 89, 66, 9, 198, 197, 84, 65, 32, 53, 11, 65, 9, 198, 197, 91, 147, 68, 20, 192, 67,
+			0, 8, 197, 75, 195, 205, 5, 96, 67, 8, 197, 48, 100, 248, 37, 32, 67, 9, 198, 36, 188, 207, 74, 84, 128, 68, 7, 196, 180, 219,
+			193, 88, 67, 0, 10, 199, 86, 214, 73, 84, 146, 193, 76, 68, 7, 196, 65, 27, 137, 12, 65, 9, 198, 47, 53, 240, 77, 16, 83, 67,
+			9, 198, 8, 146, 250, 11, 48, 83, 68, 9, 198, 232, 148, 147, 177, 16, 83, 68, 0, 0, 11, 200, 88, 145, 118, 73, 67, 21, 5, 48,
+			68, 11, 200, 68, 17, 73, 60, 16, 179, 5, 48, 70, 0, 10, 66, 8, 192, 71, 55, 39, 49, 0, 24, 7, 196, 47, 164, 20, 32, 66,
+			0, 12, 201, 64, 243, 20, 84, 16, 145, 36, 176, 83, 69, 6, 195, 52, 243, 35, 66, 9, 198, 44, 243, 44, 169, 67, 64, 66, 0, 7,
+			196, 68, 22, 6, 48, 66, 11, 200, 68, 18, 3, 24, 164, 17, 5, 96, 67, 0, 0, 0, 7, 195, 65, 18, 64, 72, 23, 7, 196, 10,
+			195, 20, 44, 66, 0, 9, 4, 95, 226, 128, 161, 21, 0, 47, 0, 9, 4, 95, 226, 128, 160, 21, 0, 47, 9, 198, 73, 180, 87, 24,
+			49, 133, 67, 0, 6, 65, 88, 101, 13, 0, 0, 18, 4, 95, 226, 128, 166, 65, 50, 39, 81, 39, 47, 6, 39, 76, 37, 36, 0, 10,
+			199, 72, 49, 147, 60, 67, 6, 20, 67, 9, 198, 53, 66, 9, 46, 113, 133, 68, 9, 198, 8, 102, 65, 52, 99, 0, 67, 0, 0, 0,
+			0, 10, 199, 72, 52, 91, 89, 137, 198, 44, 67, 10, 199, 215, 3, 143, 196, 59, 73, 20, 70, 0, 0, 9, 198, 76, 101, 142, 36, 181,
+			13, 65, 0, 0, 0, 29, 2, 95, 91, 55, 38, 4, 35, 84, 35, 15, 49, 84, 35, 72, 34, 4, 35, 47, 50, 35, 15, 89, 49, 6,
+			39, 71, 35, 0, 6, 195, 64, 102, 45, 66, 6, 195, 44, 101, 109, 66, 0, 7, 196, 44, 17, 70, 76, 66, 0, 6, 194, 36, 128, 72,
+			23, 18, 4, 95, 226, 128, 147, 49, 4, 13, 89, 39, 15, 47, 37, 34, 6, 36, 0, 0, 7, 196, 79, 179, 9, 44, 66, 6, 195, 150,
+			51, 147, 66, 8, 197, 73, 67, 21, 5, 48, 66, 7, 196, 54, 246, 70, 76, 66, 8, 197, 45, 68, 12, 25, 48, 66, 8, 197, 44, 195,
+			200, 25, 48, 66, 6, 195, 46, 226, 77, 66, 6, 195, 170, 49, 147, 67, 0, 18, 2, 95, 95, 72, 4, 39, 55, 50, 35, 15, 76, 36,
+			34, 47, 6, 35, 0, 6, 195, 81, 27, 192, 66, 8, 197, 60, 34, 88, 4, 160, 67, 0, 8, 196, 35, 160, 69, 36, 72, 23, 7, 196,
+			96, 100, 9, 44, 66, 6, 195, 164, 129, 151, 66, 9, 198, 64, 19, 85, 48, 100, 192, 66, 7, 196, 52, 97, 70, 92, 66, 7, 196, 52,
+			21, 8, 236, 65, 7, 196, 45, 67, 70, 92, 66, 8, 197, 20, 144, 77, 189, 48, 67, 8, 197, 181, 98, 77, 36, 176, 67, 6, 195, 173,
+			70, 123, 67, 0, 29, 2, 95, 93, 116, 4, 35, 89, 50, 35, 15, 49, 84, 35, 72, 34, 4, 35, 47, 50, 35, 15, 89, 49, 6, 39,
+			71, 35, 0, 7, 196, 81, 36, 6, 88, 66, 9, 198, 72, 98, 210, 5, 11, 128, 67, 0, 7, 196, 72, 97, 70, 84, 66, 8, 197, 65,
+			16, 89, 25, 112, 66, 8, 197, 48, 149, 198, 55, 176, 67, 8, 197, 32, 99, 70, 55, 176, 67, 6, 195, 20, 98, 253, 66, 8, 197, 8,
+			242, 139, 61, 48, 66, 9, 198, 5, 3, 204, 60, 65, 147, 68, 0, 9, 198, 77, 244, 75, 60, 18, 0, 67, 7, 196, 76, 147, 80, 188,
+			66, 9, 198, 64, 243, 20, 18, 52, 128, 67, 6, 195, 6, 83, 111, 67, 0, 19, 4, 95, 226, 128, 148, 72, 4, 13, 55, 81, 39, 15,
+			47, 37, 34, 6, 36, 0, 9, 198, 91, 99, 143, 48, 241, 0, 67, 8, 197, 73, 58, 76, 25, 112, 66, 9, 198, 73, 1, 139, 82, 51,
+			147, 67, 8, 197, 52, 105, 76, 36, 176, 67, 9, 198, 16, 243, 6, 52, 101, 192, 67, 7, 196, 19, 177, 6, 84, 66, 9, 198, 9, 180,
+			72, 204, 241, 0, 67, 0, 5, 194, 10, 144, 72, 8, 197, 92, 99, 15, 86, 240, 67, 7, 196, 75, 11, 15, 72, 67, 7, 196, 180, 37,
+			13, 196, 67, 7, 196, 4, 74, 77, 188, 67, 0, 9, 2, 95, 96, 81, 34, 35, 83, 0, 9, 198, 65, 18, 89, 24, 193, 151, 67, 9,
+			198, 244, 177, 146, 77, 27, 211, 67, 11, 200, 52, 244, 207, 92, 146, 204, 25, 48, 68, 8, 197, 54, 226, 122, 23, 176, 68, 8, 197, 47,
+			53, 227, 19, 176, 65, 9, 198, 44, 62, 147, 242, 244, 192, 67, 10, 199, 44, 20, 9, 77, 72, 206, 76, 68, 9, 198, 25, 2, 68, 68,
+			21, 64, 67, 0, 8, 197, 67, 203, 18, 187, 16, 68, 0, 9, 198, 84, 244, 207, 17, 16, 85, 67, 8, 197, 165, 36, 253, 189, 48, 67,
+			10, 199, 20, 146, 6, 48, 211, 211, 244, 68, 9, 198, 20, 99, 79, 17, 16, 85, 67, 0, 6, 195, 52, 18, 128, 72, 9, 198, 88, 145,
+			118, 66, 51, 128, 67, 0, 9, 198, 88, 145, 118, 17, 16, 85, 67, 9, 198, 79, 179, 79, 17, 16, 85, 67, 10, 199, 73, 178, 195, 233,
+			63, 47, 76, 68, 9, 198, 52, 146, 246, 17, 16, 85, 67, 9, 198, 188, 99, 79, 17, 16, 85, 68, 9, 198, 152, 147, 205, 61, 63, 64,
+			69, 0, 6, 195, 91, 219, 64, 66, 0, 6, 195, 164, 191, 69, 66, 7, 196, 47, 99, 73, 20, 66, 10, 199, 20, 99, 115, 73, 52, 111,
+			76, 67, 0, 7, 196, 72, 145, 36, 48, 66, 0, 11, 200, 52, 100, 198, 244, 241, 17, 5, 80, 69, 11, 200, 37, 36, 253, 36, 241, 17,
+			5, 80, 69, 0, 6, 195, 99, 208, 80, 66, 7, 196, 196, 149, 201, 180, 68, 9, 198, 20, 148, 252, 4, 208, 128, 67, 0, 6, 65, 92,
+			117, 13, 0, 8, 197, 65, 18, 72, 144, 176, 65, 11, 200, 24, 193, 139, 79, 99, 79, 79, 208, 69, 0, 12, 201, 64, 241, 84, 65, 25,
+			137, 76, 99, 0, 65, 8, 197, 53, 68, 134, 51, 16, 67, 6, 195, 47, 219, 192, 66, 8, 197, 37, 36, 15, 51, 16, 67, 8, 197, 16,
+			18, 15, 51, 16, 67, 0, 10, 199, 45, 22, 245, 36, 131, 9, 12, 67, 0, 0, 0, 7, 196, 23, 49, 212, 188, 67, 0, 0, 6, 195,
+			86, 191, 0, 66, 9, 198, 17, 16, 85, 60, 219, 192, 67, 0, 0, 0, 6, 194, 20, 240, 72, 23, 6, 195, 61, 113, 147, 66, 0, 32,
+			2, 95, 123, 55, 38, 4, 35, 84, 35, 15, 84, 13, 55, 50, 39, 4, 39, 71, 34, 35, 88, 50, 35, 15, 89, 49, 6, 39, 71, 35,
+			0, 6, 195, 96, 25, 76, 66, 6, 195, 46, 251, 64, 66, 0, 7, 196, 73, 176, 198, 76, 66, 12, 201, 68, 16, 143, 76, 245, 143, 48,
+			146, 192, 69, 7, 196, 64, 146, 198, 76, 66, 9, 198, 55, 162, 198, 79, 17, 0, 65, 6, 195, 54, 177, 147, 66, 6, 195, 30, 177, 147,
+			66, 7, 196, 9, 66, 198, 76, 66, 7, 196, 5, 34, 198, 76, 66, 0, 6, 195, 67, 217, 76, 66, 6, 195, 61, 43, 128, 66, 0, 7,
+			195, 66, 145, 73, 72, 23, 11, 66, 48, 48, 55, 4, 36, 84, 35, 0, 24, 6, 195, 88, 16, 187, 66, 7, 196, 220, 195, 137, 44, 66,
+			7, 196, 67, 162, 198, 76, 66, 6, 195, 66, 254, 192, 66, 8, 197, 25, 50, 75, 25, 48, 67, 8, 197, 20, 144, 66, 25, 48, 67, 8,
+			197, 17, 68, 66, 25, 48, 66, 8, 197, 9, 18, 75, 25, 48, 66, 7, 196, 10, 242, 198, 76, 66, 6, 195, 233, 44, 0, 66, 0, 7,
+			196, 66, 144, 198, 72, 66, 8, 197, 45, 18, 82, 148, 192, 66, 6, 195, 46, 240, 80, 66, 6, 195, 26, 83, 128, 66, 6, 195, 236, 32,
+			80, 66, 7, 196, 17, 240, 198, 96, 66, 0, 6, 194, 20, 16, 72, 9, 5, 194, 52, 16, 72, 14, 2, 95, 126, 84, 13, 55, 50, 6,
+			37, 76, 49, 35, 0, 6, 195, 64, 156, 251, 67, 7, 196, 49, 177, 198, 92, 66, 7, 196, 33, 176, 134, 92, 66, 6, 195, 11, 176, 187,
+			66, 9, 198, 233, 97, 143, 48, 241, 0, 68, 8, 197, 4, 87, 229, 57, 48, 67, 0, 32, 2, 95, 125, 116, 4, 35, 89, 50, 35, 15,
+			84, 13, 55, 50, 39, 4, 39, 71, 34, 35, 88, 50, 35, 15, 89, 49, 6, 39, 71, 35, 0, 6, 195, 76, 153, 78, 66, 6, 195, 149,
+			107, 192, 66, 7, 196, 52, 18, 165, 64, 66, 0, 23, 2, 95, 124, 84, 36, 34, 47, 37, 49, 4, 35, 55, 50, 35, 15, 76, 36, 34,
+			47, 6, 35, 0, 9, 198, 72, 98, 210, 148, 228, 192, 66, 7, 196, 216, 131, 194, 236, 67, 9, 198, 66, 148, 198, 45, 36, 192, 66, 7,
+			196, 67, 212, 201, 236, 67, 9, 198, 47, 52, 198, 45, 36, 192, 66, 7, 196, 30, 144, 134, 92, 66, 9, 198, 20, 96, 159, 148, 228, 192,
+			67, 7, 196, 18, 144, 134, 92, 66, 8, 197, 13, 16, 66, 25, 112, 66, 8, 197, 232, 100, 165, 57, 48, 67, 0, 6, 195, 87, 57, 78,
+			66, 9, 198, 64, 145, 133, 25, 41, 76, 68, 7, 196, 16, 18, 165, 56, 66, 7, 196, 9, 68, 75, 188, 66, 7, 196, 8, 244, 165, 56,
+			66, 0, 8, 197, 89, 64, 166, 25, 112, 67, 8, 197, 72, 98, 229, 57, 48, 66, 10, 199, 72, 97, 77, 37, 131, 137, 44, 65, 9, 198,
+			65, 25, 174, 56, 146, 192, 65, 8, 197, 52, 148, 137, 207, 176, 68, 8, 197, 12, 100, 246, 55, 176, 67, 0, 11, 5, 95, 48, 97, 110,
+			100, 10, 2, 37, 0, 7, 196, 91, 211, 210, 188, 67, 6, 195, 8, 240, 72, 66, 0, 9, 198, 97, 65, 197, 192, 101, 192, 67, 9, 198,
+			95, 161, 170, 96, 226, 75, 65, 9, 198, 84, 145, 20, 70, 244, 192, 67, 7, 196, 73, 180, 165, 12, 66, 9, 198, 67, 100, 198, 74, 83,
+			147, 67, 9, 198, 36, 210, 68, 70, 244, 192, 67, 9, 198, 24, 210, 68, 70, 244, 192, 67, 8, 197, 9, 26, 243, 39, 176, 68, 0, 6,
+			195, 16, 241, 70, 65, 7, 196, 164, 140, 239, 72, 67, 9, 198, 67, 100, 201, 212, 49, 146, 68, 8, 197, 66, 115, 6, 46, 240, 67, 0,
+			9, 198, 85, 67, 139, 92, 156, 251, 68, 9, 198, 65, 25, 134, 20, 226, 75, 65, 6, 195, 66, 209, 135, 66, 10, 199, 54, 242, 85, 25,
+			41, 78, 76, 68, 9, 198, 48, 98, 147, 194, 244, 192, 65, 12, 201, 24, 113, 141, 25, 33, 152, 56, 146, 192, 67, 0, 11, 200, 72, 209,
+			147, 44, 17, 71, 38, 0, 65, 9, 198, 64, 243, 9, 76, 146, 239, 68, 7, 196, 24, 180, 165, 32, 66, 0, 9, 198, 88, 148, 56, 62,
+			83, 64, 68, 10, 199, 72, 99, 6, 45, 114, 115, 236, 69, 9, 198, 160, 89, 207, 48, 226, 75, 68, 8, 197, 142, 49, 71, 38, 0, 65,
+			9, 198, 47, 53, 198, 72, 156, 251, 69, 10, 199, 44, 243, 6, 45, 114, 115, 236, 69, 9, 198, 32, 19, 73, 73, 179, 0, 65, 9, 198,
+			23, 48, 66, 244, 226, 75, 66, 10, 199, 13, 178, 16, 38, 83, 137, 44, 66, 0, 6, 195, 220, 179, 204, 66, 6, 195, 50, 203, 64, 66,
+			6, 195, 10, 203, 64, 66, 0, 9, 198, 167, 83, 31, 92, 156, 251, 70, 10, 199, 161, 4, 102, 24, 83, 137, 44, 66, 9, 198, 24, 194,
+			80, 220, 145, 64, 68, 0, 6, 195, 91, 28, 64, 66, 11, 200, 66, 144, 209, 6, 81, 71, 38, 0, 66, 6, 195, 67, 165, 237, 66, 6,
+			195, 47, 169, 76, 66, 0, 7, 196, 81, 140, 9, 44, 67, 8, 197, 76, 101, 142, 36, 176, 66, 8, 197, 68, 148, 206, 36, 176, 66, 8,
+			197, 44, 253, 208, 4, 80, 67, 7, 196, 212, 163, 137, 44, 66, 0, 6, 65, 96, 76, 13, 0, 7, 196, 44, 62, 165, 48, 66, 8, 197,
+			44, 20, 9, 148, 192, 67, 6, 195, 15, 188, 237, 67, 6, 195, 233, 44, 45, 67, 0, 9, 198, 96, 148, 147, 56, 146, 192, 66, 9, 198,
+			92, 99, 20, 48, 242, 69, 68, 9, 198, 64, 100, 147, 56, 146, 192, 66, 9, 198, 48, 148, 147, 224, 17, 64, 67, 8, 197, 180, 187, 79,
+			36, 80, 68, 0, 8, 197, 88, 241, 65, 148, 160, 67, 6, 195, 84, 244, 243, 66, 7, 196, 67, 212, 236, 180, 67, 9, 198, 64, 243, 9,
+			92, 18, 128, 67, 7, 196, 67, 189, 228, 48, 67, 8, 197, 20, 144, 68, 206, 208, 68, 6, 195, 9, 73, 78, 66, 0, 9, 198, 72, 99,
+			70, 20, 99, 0, 67, 10, 199, 12, 99, 15, 72, 148, 6, 20, 68, 0, 9, 198, 88, 99, 9, 61, 34, 248, 68, 6, 195, 79, 137, 78,
+			66, 7, 196, 73, 67, 37, 56, 66, 8, 197, 66, 51, 139, 79, 48, 66, 7, 196, 44, 21, 101, 56, 66, 6, 195, 46, 210, 239, 66, 8,
+			197, 18, 54, 65, 148, 160, 67, 6, 195, 10, 210, 239, 66, 0, 10, 199, 89, 64, 143, 73, 51, 137, 44, 67, 9, 198, 66, 179, 210, 76,
+			226, 75, 65, 10, 199, 32, 243, 211, 25, 99, 137, 44, 68, 0, 8, 197, 65, 68, 73, 148, 224, 67, 8, 197, 44, 20, 9, 148, 224, 67,
+			0, 9, 198, 73, 181, 24, 192, 146, 192, 68, 10, 199, 72, 191, 79, 73, 51, 137, 44, 65, 9, 198, 67, 98, 212, 23, 2, 75, 66, 10,
+			199, 67, 195, 211, 25, 99, 137, 44, 68, 10, 199, 145, 4, 91, 73, 51, 137, 44, 65, 10, 199, 46, 148, 15, 73, 51, 137, 44, 65, 11,
+			200, 33, 176, 143, 76, 101, 142, 36, 176, 68, 10, 199, 34, 147, 15, 73, 51, 137, 44, 65, 7, 196, 175, 99, 137, 52, 67, 0, 9, 198,
+			141, 28, 68, 61, 34, 248, 68, 0, 9, 198, 78, 146, 3, 192, 146, 192, 65, 11, 200, 73, 60, 3, 25, 36, 206, 36, 176, 65, 12, 201,
+			68, 17, 73, 61, 49, 150, 56, 146, 192, 69, 9, 198, 55, 51, 196, 68, 19, 64, 67, 9, 198, 46, 227, 196, 68, 19, 64, 67, 0, 8,
+			197, 246, 241, 20, 148, 224, 66, 0, 11, 200, 77, 18, 91, 17, 179, 14, 36, 176, 66, 9, 198, 65, 33, 131, 23, 50, 77, 67, 0, 7,
+			196, 76, 99, 70, 48, 66, 7, 196, 76, 97, 6, 48, 66, 7, 196, 61, 49, 70, 48, 66, 7, 196, 52, 241, 70, 48, 66, 0, 12, 201,
+			61, 35, 79, 108, 70, 204, 56, 146, 192, 67, 10, 199, 161, 34, 248, 61, 35, 137, 44, 66, 0, 7, 196, 99, 1, 6, 48, 66, 8, 197,
+			68, 18, 5, 24, 192, 66, 7, 196, 66, 145, 70, 48, 66, 7, 196, 53, 66, 6, 40, 66, 0, 7, 196, 91, 1, 70, 44, 66, 12, 201,
+			65, 25, 143, 108, 70, 204, 56, 146, 192, 67, 12, 201, 64, 241, 80, 60, 194, 231, 56, 146, 192, 65, 12, 201, 52, 227, 196, 61, 177, 27,
+			48, 226, 75, 67, 6, 195, 5, 34, 251, 66, 0, 7, 196, 11, 209, 70, 40, 66, 9, 198, 8, 100, 243, 156, 242, 0, 68, 0, 6, 195,
+			105, 74, 87, 66, 12, 201, 96, 100, 252, 37, 177, 27, 48, 226, 75, 68, 0, 8, 197, 64, 243, 46, 24, 160, 67, 0, 7, 196, 44, 21,
+			155, 68, 66, 0, 6, 195, 73, 76, 68, 66, 7, 196, 9, 70, 77, 192, 66, 0, 9, 198, 84, 206, 9, 20, 148, 139, 67, 7, 196, 148,
+			225, 70, 52, 66, 9, 198, 73, 14, 205, 5, 113, 147, 67, 8, 197, 52, 101, 140, 24, 208, 66, 9, 198, 44, 20, 11, 60, 222, 192, 67,
+			0, 7, 196, 44, 248, 196, 192, 67, 6, 195, 20, 145, 136, 66, 7, 196, 189, 50, 68, 192, 67, 0, 0, 0, 7, 196, 64, 17, 70, 28,
+			66, 7, 196, 16, 241, 70, 28, 66, 7, 196, 8, 241, 70, 28, 66, 0, 7, 196, 75, 176, 134, 32, 66, 11, 200, 64, 241, 54, 52, 17,
+			71, 38, 0, 66, 9, 198, 16, 18, 15, 60, 35, 112, 68, 0, 9, 198, 65, 26, 211, 36, 187, 211, 67, 7, 196, 44, 19, 91, 100, 66,
+			8, 197, 17, 180, 77, 24, 112, 66, 8, 197, 17, 16, 66, 24, 112, 66, 0, 9, 198, 73, 59, 15, 60, 35, 112, 68, 10, 199, 44, 226,
+			68, 60, 240, 141, 192, 68, 7, 196, 44, 204, 241, 16, 66, 0, 7, 195, 98, 146, 0, 72, 23, 6, 195, 98, 113, 139, 66, 9, 198, 72,
+			214, 209, 20, 97, 192, 66, 0, 8, 197, 5, 113, 147, 187, 0, 68, 0, 8, 197, 32, 96, 200, 24, 176, 66, 0, 8, 197, 32, 195, 197,
+			24, 160, 66, 8, 197, 5, 3, 196, 24, 160, 67, 0, 0, 8, 197, 99, 163, 197, 24, 160, 67, 6, 195, 48, 97, 48, 66, 0, 0, 9,
+			198, 152, 147, 205, 60, 81, 140, 69, 0, 7, 196, 212, 83, 198, 52, 67, 0, 0, 6, 65, 100, 91, 13, 0, 6, 195, 236, 76, 0, 66,
+			0, 0, 9, 198, 99, 179, 143, 32, 99, 64, 67, 0, 9, 198, 154, 249, 69, 28, 152, 0, 66, 0, 0, 0, 7, 196, 80, 128, 134, 44,
+			66, 0, 6, 195, 140, 177, 138, 66, 0, 16, 67, 73, 52, 64, 89, 47, 34, 6, 35, 50, 37, 117, 35, 0, 24, 6, 195, 10, 182, 209,
+			66, 0, 8, 197, 67, 160, 66, 24, 192, 67, 0, 0, 7, 195, 61, 32, 240, 72, 23, 8, 197, 23, 177, 130, 24, 160, 67, 0, 0, 0,
+			9, 198, 45, 22, 210, 79, 134, 211, 67, 0, 7, 196, 48, 149, 240, 32, 66, 0, 10, 199, 9, 66, 205, 24, 162, 219, 68, 65, 0, 0,
+			0, 9, 198, 44, 25, 69, 28, 152, 0, 65, 0, 9, 198, 217, 51, 73, 73, 54, 209, 65, 6, 195, 24, 193, 139, 66, 8, 197, 13, 180,
+			67, 24, 112, 66, 0, 0, 9, 198, 52, 105, 76, 81, 17, 0, 67, 0, 0, 8, 197, 52, 244, 248, 24, 80, 67, 0, 8, 197, 64, 193,
+			130, 24, 160, 66, 0, 9, 198, 72, 19, 79, 76, 98, 192, 67, 0, 0, 0, 0, 0, 7, 65, 104, 91, 47, 13, 0, 6, 195, 55, 171,
+			48, 67, 10, 199, 17, 27, 197, 88, 244, 198, 48, 67, 0, 0, 8, 197, 21, 73, 16, 164, 224, 67, 0, 0, 0, 0, 0, 0, 0, 0,
+			9, 198, 61, 82, 87, 36, 242, 0, 68, 0, 7, 196, 44, 245, 203, 232, 65, 0, 9, 198, 64, 243, 20, 73, 179, 128, 67, 0, 8, 197,
+			96, 98, 209, 108, 176, 66, 0, 0, 8, 197, 67, 160, 89, 81, 48, 67, 9, 198, 20, 99, 65, 16, 241, 0, 67, 0, 7, 195, 13, 22,
+			200, 72, 23, 0, 7, 195, 176, 17, 193, 72, 23, 6, 195, 17, 72, 217, 66, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 68, 18, 18,
+			78, 147, 0, 66, 9, 198, 52, 21, 186, 4, 81, 193, 68, 0, 0, 7, 196, 74, 210, 219, 52, 66, 6, 195, 233, 54, 203, 66, 0, 0,
+			0, 0, 13, 65, 108, 6, 36, 34, 81, 4, 39, 55, 35, 65, 0, 0, 0, 0, 0, 0, 0, 11, 200, 64, 241, 84, 96, 20, 147, 108,
+			176, 65, 0, 0, 0, 0, 9, 198, 47, 160, 77, 8, 243, 0, 67, 8, 197, 8, 99, 19, 108, 176, 66, 0, 9, 198, 189, 50, 85, 68,
+			146, 0, 67, 0, 0, 0, 9, 198, 22, 144, 143, 73, 178, 192, 67, 0, 0, 9, 198, 237, 117, 187, 92, 241, 0, 67, 9, 198, 23, 1,
+			118, 48, 241, 0, 67, 0, 0, 9, 198, 68, 21, 129, 76, 198, 203, 67, 8, 197, 246, 82, 204, 108, 176, 67, 0, 9, 198, 67, 101, 82,
+			109, 242, 0, 67, 0, 0, 6, 18, 66, 208, 181, 0, 209, 144, 0, 208, 184, 0, 209, 157, 0, 7, 6, 18, 67, 209, 128, 0, 208, 187,
+			0, 208, 188, 0, 208, 189, 0, 7, 6, 18, 68, 208, 180, 208, 183, 0, 208, 180, 208, 182, 0, 208, 177, 0, 208, 178, 0, 208, 179, 0,
+			208, 180, 0, 208, 183, 0, 208, 182, 0, 7, 6, 18, 69, 208, 191, 0, 209, 132, 0, 208, 186, 0, 209, 130, 0, 209, 129, 0, 209, 134,
+			0, 209, 136, 0, 209, 137, 0, 209, 135, 0, 209, 133, 0, 7, 6, 1, 17, 0, 209, 128, 1, 21, 2, 32, 3, 6, 35, 34, 0, 209,
+			130, 208, 181, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 35, 47, 36, 55, 36, 50, 0, 209, 130, 208, 181, 208, 187, 209, 129,
+			209, 130, 208, 178, 208, 190, 1, 21, 2, 32, 3, 6, 35, 47, 36, 55, 89, 47, 84, 39, 0, 208, 186, 1, 21, 2, 32, 3, 6, 35,
+			49, 0, 208, 189, 208, 184, 208, 181, 1, 21, 2, 32, 3, 6, 35, 50, 37, 36, 0, 208, 189, 209, 129, 208, 186, 208, 184, 1, 21, 2,
+			32, 3, 6, 35, 50, 89, 49, 37, 0, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 35, 55, 36, 50, 0, 208, 187, 208, 184,
+			209, 137, 208, 181, 1, 21, 2, 32, 3, 6, 35, 55, 37, 91, 47, 36, 0, 208, 187, 208, 189, 209, 143, 1, 21, 2, 32, 3, 6, 35,
+			55, 50, 38, 35, 0, 209, 135, 1, 21, 2, 32, 3, 6, 35, 76, 0, 208, 178, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32, 3, 6,
+			35, 84, 37, 91, 47, 36, 0, 208, 182, 1, 21, 2, 32, 3, 6, 35, 90, 0, 209, 134, 208, 184, 209, 143, 1, 21, 2, 32, 3, 6,
+			35, 117, 37, 35, 0, 4, 3, 35, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 209, 128, 208, 184, 209, 143, 1, 21, 2, 32, 3, 35,
+			34, 37, 35, 0, 7, 6, 1, 18, 0, 3, 71, 0, 2, 17, 71, 3, 71, 38, 0, 7, 6, 1, 19, 0, 3, 84, 0, 2, 17, 71,
+			3, 84, 38, 0, 7, 6, 1, 20, 0, 3, 81, 0, 2, 17, 71, 3, 122, 0, 7, 6, 1, 21, 0, 3, 72, 0, 208, 182, 3, 75,
+			0, 2, 17, 71, 3, 116, 0, 208, 183, 3, 118, 0, 208, 183, 2, 17, 71, 3, 118, 38, 0, 7, 6, 1, 22, 0, 208, 181, 208, 189,
+			1, 21, 2, 32, 3, 6, 36, 36, 50, 0, 208, 189, 208, 184, 208, 181, 1, 21, 2, 32, 3, 6, 36, 50, 37, 36, 0, 208, 189, 209,
+			130, 1, 21, 2, 32, 3, 6, 36, 50, 47, 0, 208, 185, 209, 129, 208, 186, 208, 184, 1, 21, 2, 32, 3, 6, 36, 57, 89, 49, 37,
+			0, 208, 177, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 36, 71, 36, 50, 0, 208, 178, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6,
+			36, 84, 36, 50, 0, 3, 36, 0, 7, 6, 1, 23, 0, 3, 90, 0, 7, 6, 1, 24, 0, 3, 88, 0, 2, 17, 71, 3, 94, 0,
+			7, 6, 1, 25, 0, 4, 1, 130, 209, 190, 208, 2, 209, 143, 32, 3, 6, 37, 0, 1, 186, 208, 2, 208, 189, 209, 143, 32, 0, 209,
+			130, 1, 21, 2, 32, 3, 6, 37, 47, 0, 209, 130, 208, 181, 208, 187, 1, 21, 2, 32, 3, 6, 37, 47, 36, 55, 0, 209, 130, 208,
+			181, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 37, 47, 36, 55, 36, 50, 0, 208, 180, 208, 177, 208, 176, 1, 21, 2, 32,
+			3, 6, 37, 47, 71, 35, 0, 208, 186, 208, 176, 208, 178, 1, 21, 2, 32, 3, 6, 37, 49, 35, 84, 0, 208, 189, 209, 129, 208, 186,
+			208, 184, 1, 21, 2, 32, 3, 6, 37, 50, 89, 49, 37, 0, 208, 187, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 37, 55, 36, 50,
+			0, 208, 187, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32, 3, 6, 37, 55, 37, 91, 47, 36, 0, 208, 188, 208, 176, 1, 21, 2, 32,
+			3, 6, 37, 65, 35, 0, 209, 135, 208, 181, 209, 129, 208, 186, 208, 184, 1, 21, 2, 32, 3, 6, 37, 76, 36, 89, 49, 37, 0, 208,
+			178, 1, 21, 2, 32, 3, 6, 37, 84, 0, 208, 178, 208, 181, 208, 189, 1, 21, 2, 32, 3, 6, 37, 84, 36, 50, 0, 208, 183, 209,
+			138, 208, 188, 1, 21, 2, 32, 3, 6, 37, 88, 13, 65, 0, 209, 129, 209, 130, 1, 21, 2, 32, 3, 6, 37, 89, 47, 0, 3, 37,
+			0, 2, 32, 24, 3, 37, 12, 0, 7, 6, 1, 26, 0, 3, 57, 0, 7, 6, 1, 27, 0, 3, 49, 0, 2, 17, 71, 3, 49, 38,
+			0, 208, 190, 1, 21, 2, 32, 14, 128, 128, 130, 3, 49, 39, 0, 7, 6, 1, 28, 0, 4, 2, 17, 71, 3, 55, 0, 2, 18, 66,
+			0, 2, 209, 140, 18, 66, 3, 61, 0, 3, 64, 0, 7, 6, 1, 29, 0, 3, 65, 0, 2, 17, 71, 3, 65, 38, 0, 7, 6, 1,
+			30, 0, 3, 50, 0, 208, 189, 3, 50, 12, 0, 2, 17, 71, 3, 67, 0, 7, 6, 1, 31, 0, 209, 128, 208, 184, 209, 131, 208, 188,
+			1, 21, 2, 32, 3, 6, 39, 34, 37, 40, 65, 0, 208, 186, 1, 21, 2, 32, 3, 6, 39, 49, 0, 208, 178, 208, 181, 208, 189, 1,
+			21, 2, 32, 3, 6, 39, 84, 36, 50, 0, 208, 178, 208, 184, 209, 137, 208, 181, 1, 21, 2, 32, 3, 6, 39, 84, 37, 91, 47, 36,
+			0, 208, 178, 208, 189, 208, 184, 208, 186, 1, 21, 2, 32, 3, 6, 39, 84, 50, 37, 49, 0, 208, 183, 208, 181, 208, 189, 2, 32, 3,
+			6, 39, 88, 36, 50, 0, 3, 39, 0, 208, 178, 208, 176, 2, 209, 130, 32, 3, 39, 84, 6, 35, 0, 208, 178, 208, 184, 2, 209, 130,
+			32, 3, 39, 84, 6, 37, 0, 7, 6, 1, 32, 0, 3, 48, 0, 2, 17, 71, 3, 48, 38, 0, 7, 6, 1, 33, 0, 3, 34, 0,
+			2, 17, 71, 3, 34, 38, 0, 7, 6, 1, 34, 0, 3, 89, 0, 2, 17, 71, 3, 95, 0, 7, 6, 1, 35, 0, 3, 47, 0, 209,
+			130, 3, 47, 12, 0, 208, 176, 1, 21, 2, 32, 14, 128, 128, 130, 3, 47, 35, 0, 208, 181, 1, 21, 2, 32, 14, 128, 128, 130, 3,
+			47, 36, 0, 2, 17, 71, 3, 115, 0, 7, 6, 1, 36, 0, 3, 40, 0, 7, 6, 1, 37, 0, 3, 83, 0, 2, 17, 71, 3, 83,
+			38, 0, 7, 6, 1, 38, 0, 4, 2, 17, 71, 3, 99, 0, 2, 208, 184, 0, 3, 101, 0, 7, 6, 1, 39, 0, 3, 117, 0, 2,
+			17, 71, 3, 117, 38, 0, 7, 6, 1, 40, 0, 208, 190, 1, 21, 2, 32, 3, 8, 76, 39, 0, 3, 76, 0, 7, 6, 1, 41, 0,
+			3, 91, 0, 7, 6, 1, 42, 0, 3, 91, 47, 0, 2, 17, 71, 3, 91, 115, 0, 7, 6, 1, 43, 0, 3, 13, 0, 209, 130, 1,
+			21, 2, 32, 14, 128, 128, 130, 3, 13, 47, 0, 7, 6, 1, 45, 0, 1, 17, 67, 3, 0, 3, 57, 0, 7, 6, 1, 47, 0, 1,
+			17, 67, 3, 40, 0, 3, 57, 40, 0, 7, 6, 1, 48, 0, 208, 189, 208, 184, 208, 181, 1, 21, 2, 32, 3, 6, 57, 35, 50, 37,
+			36, 0, 4, 1, 17, 67, 3, 35, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 209, 130, 1, 17, 67, 21, 2, 32, 14, 128,
+			192, 130, 3, 35, 47, 0, 4, 3, 57, 35, 0, 1, 21, 2, 32, 14, 128, 192, 129, 0, 209, 130, 1, 21, 2, 32, 14, 128, 192, 130,
+			3, 57, 35, 47, 0, 7, 6, 0, 209, 144, 3, 7, 36, 0, 209, 157, 3, 7, 37, 0, 204, 128, 3, 8, 0, 36, 3, 72, 6, 39,
+			64, 35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts6 = FileInMemory_createWithData (27006, reinterpret_cast<const char *> (&espeakdata_dicts6_data), 
+			U"espeak-1.48.04-source/espeak-data/bg_dict", 
 			U"bg");
-		Collection_addItem (me.peek(), espeakdata_dicts5.transfer());
+		my addItem_move (espeakdata_dicts6.move());
 
-		static unsigned char espeakdata_dicts6_data[2830] = {
-			0, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 32, 15, 0, 0, 48, 0, 0, 0, 33, 15, 0, 0, 49, 0,
-			0, 0, 34, 15, 0, 0, 50, 0, 0, 0, 35, 15, 0, 0, 51, 0, 0, 0, 36, 15, 0, 0, 52, 0, 0, 0, 37, 15, 0, 0,
-			53, 0, 0, 0, 38, 15, 0, 0, 54, 0, 0, 0, 39, 15, 0, 0, 55, 0, 0, 0, 40, 15, 0, 0, 56, 0, 0, 0, 41, 15,
-			0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 65, 0, 4, 1, 21, 2, 32, 3, 49, 0, 2, 17, 66, 0, 3, 49, 35, 0,
-			7, 6, 1, 66, 0, 4, 1, 21, 2, 32, 3, 146, 0, 2, 17, 66, 0, 3, 146, 35, 0, 7, 6, 1, 67, 0, 4, 1, 21, 2,
-			32, 3, 81, 0, 2, 17, 66, 0, 3, 81, 35, 0, 7, 6, 1, 68, 0, 4, 1, 21, 2, 32, 3, 147, 0, 2, 17, 66, 0, 3,
-			147, 35, 0, 7, 6, 1, 69, 0, 4, 1, 21, 2, 32, 3, 68, 0, 2, 17, 66, 0, 3, 68, 35, 0, 7, 6, 1, 70, 0, 4,
-			1, 21, 2, 32, 3, 80, 0, 2, 17, 66, 0, 3, 80, 35, 0, 7, 6, 1, 71, 0, 4, 1, 21, 2, 32, 3, 144, 0, 2, 17,
-			66, 0, 3, 144, 35, 0, 7, 6, 1, 72, 0, 4, 1, 21, 2, 32, 3, 79, 0, 2, 17, 66, 0, 3, 79, 35, 0, 7, 6, 1,
-			74, 0, 4, 1, 21, 2, 32, 3, 67, 0, 2, 17, 66, 0, 3, 67, 35, 0, 7, 6, 1, 75, 0, 4, 1, 21, 2, 32, 3, 140,
-			0, 2, 17, 66, 0, 3, 140, 35, 0, 7, 6, 1, 76, 0, 4, 1, 21, 2, 32, 3, 142, 0, 2, 17, 66, 0, 3, 142, 35, 0,
-			7, 6, 1, 77, 0, 4, 1, 21, 2, 32, 3, 141, 0, 2, 17, 66, 0, 3, 141, 35, 0, 7, 6, 1, 78, 0, 4, 1, 21, 2,
-			32, 3, 143, 0, 2, 17, 66, 0, 3, 143, 35, 0, 7, 6, 1, 79, 0, 4, 1, 21, 2, 32, 3, 66, 0, 2, 17, 66, 0, 3,
-			66, 35, 0, 7, 6, 1, 80, 0, 4, 1, 21, 2, 32, 3, 47, 0, 2, 17, 66, 0, 3, 47, 35, 0, 7, 6, 1, 81, 0, 4,
-			1, 21, 2, 32, 3, 138, 0, 2, 17, 66, 0, 3, 138, 35, 0, 7, 6, 1, 82, 0, 4, 1, 21, 2, 32, 3, 72, 0, 2, 17,
-			66, 0, 3, 72, 35, 0, 7, 6, 1, 83, 0, 4, 1, 21, 2, 32, 3, 139, 0, 2, 17, 66, 0, 3, 139, 35, 0, 7, 6, 1,
-			84, 0, 4, 1, 21, 2, 32, 3, 50, 0, 2, 17, 66, 0, 3, 50, 35, 0, 7, 6, 1, 85, 0, 4, 1, 21, 2, 32, 3, 48,
-			0, 2, 17, 66, 0, 3, 48, 35, 0, 7, 6, 1, 86, 0, 4, 1, 21, 2, 32, 3, 136, 0, 2, 17, 66, 0, 3, 136, 35, 0,
-			7, 6, 1, 87, 0, 4, 1, 21, 2, 32, 3, 71, 0, 2, 17, 66, 0, 3, 71, 35, 0, 7, 6, 1, 88, 0, 4, 1, 21, 2,
-			32, 3, 137, 0, 2, 17, 66, 0, 3, 137, 35, 0, 7, 6, 1, 89, 0, 4, 1, 21, 2, 32, 3, 65, 0, 2, 17, 66, 0, 3,
-			65, 35, 0, 7, 6, 1, 90, 0, 4, 1, 21, 2, 32, 3, 149, 0, 2, 17, 66, 0, 3, 149, 35, 0, 7, 6, 1, 91, 0, 4,
-			1, 21, 2, 32, 3, 151, 0, 2, 17, 66, 0, 3, 151, 35, 0, 7, 6, 1, 92, 0, 4, 1, 21, 2, 32, 3, 150, 0, 2, 17,
-			66, 0, 3, 150, 35, 0, 7, 6, 1, 93, 0, 4, 1, 21, 2, 32, 3, 152, 0, 2, 17, 66, 0, 3, 152, 35, 0, 7, 6, 1,
-			94, 0, 4, 1, 21, 2, 32, 3, 58, 0, 2, 17, 66, 0, 3, 58, 35, 0, 7, 6, 1, 95, 0, 4, 1, 21, 2, 32, 3, 90,
-			0, 2, 17, 66, 0, 3, 90, 35, 0, 7, 6, 1, 96, 0, 4, 1, 21, 2, 32, 3, 88, 0, 2, 17, 66, 0, 3, 88, 35, 0,
-			7, 6, 1, 97, 0, 4, 1, 21, 2, 32, 3, 19, 0, 2, 17, 66, 0, 3, 19, 35, 0, 7, 6, 1, 98, 0, 4, 1, 21, 2,
-			32, 3, 57, 0, 2, 17, 66, 0, 3, 57, 35, 0, 7, 6, 1, 99, 0, 4, 1, 21, 2, 32, 3, 34, 0, 2, 17, 66, 0, 3,
-			34, 35, 0, 7, 6, 1, 100, 0, 4, 1, 21, 2, 32, 3, 55, 0, 2, 17, 66, 0, 3, 55, 35, 0, 7, 6, 1, 101, 0, 4,
-			1, 21, 2, 32, 3, 91, 0, 2, 17, 66, 0, 3, 91, 35, 0, 7, 6, 1, 102, 0, 4, 1, 21, 2, 32, 3, 93, 0, 2, 17,
-			66, 0, 3, 93, 35, 0, 7, 6, 1, 103, 0, 4, 1, 21, 2, 32, 3, 89, 0, 2, 17, 66, 0, 3, 89, 35, 0, 7, 6, 1,
-			104, 0, 4, 1, 21, 2, 32, 3, 108, 0, 2, 17, 66, 0, 3, 108, 35, 0, 7, 6, 1, 105, 0, 4, 1, 21, 2, 32, 3, 19,
-			0, 2, 17, 66, 0, 3, 19, 35, 0, 7, 6, 1, 106, 0, 4, 1, 21, 2, 32, 3, 49, 93, 0, 2, 17, 66, 0, 3, 49, 93,
-			35, 0, 7, 6, 224, 189, 0, 186, 3, 36, 0, 178, 3, 37, 0, 188, 3, 39, 0, 180, 3, 40, 0, 182, 3, 44, 0, 183, 3, 44,
-			12, 0, 184, 3, 45, 0, 185, 3, 45, 12, 0, 179, 3, 112, 0, 187, 3, 114, 0, 177, 3, 118, 0, 189, 3, 119, 0, 181, 3, 123,
-			0, 7, 6, 224, 190, 0, 4, 176, 1, 21, 2, 32, 3, 19, 0, 176, 2, 17, 66, 0, 184, 1, 21, 2, 32, 0, 184, 2, 17, 66,
-			0, 4, 176, 3, 19, 35, 0, 184, 0, 4, 178, 1, 21, 2, 32, 3, 34, 0, 178, 2, 17, 66, 0, 178, 3, 34, 35, 0, 4, 159,
-			1, 21, 2, 32, 3, 47, 0, 159, 2, 17, 66, 0, 159, 3, 47, 35, 0, 4, 164, 1, 21, 2, 32, 3, 48, 0, 164, 2, 17, 66,
-			0, 164, 3, 48, 35, 0, 4, 144, 1, 21, 2, 32, 3, 49, 0, 144, 2, 17, 66, 0, 144, 3, 49, 35, 0, 4, 185, 1, 21, 2,
-			32, 3, 49, 93, 0, 185, 2, 17, 66, 0, 185, 3, 49, 93, 35, 0, 4, 163, 1, 21, 2, 32, 3, 50, 0, 163, 2, 17, 66, 0,
-			163, 3, 50, 35, 0, 4, 179, 1, 21, 2, 32, 3, 55, 0, 179, 2, 17, 66, 0, 179, 3, 55, 35, 0, 4, 177, 1, 21, 2, 32,
-			3, 57, 0, 177, 2, 17, 66, 0, 177, 3, 57, 35, 0, 4, 173, 1, 21, 2, 32, 3, 58, 0, 173, 2, 17, 66, 0, 173, 3, 58,
-			35, 0, 4, 168, 1, 21, 2, 32, 3, 65, 0, 168, 2, 17, 66, 0, 168, 3, 65, 35, 0, 4, 158, 1, 21, 2, 32, 3, 66, 0,
-			158, 2, 17, 66, 0, 158, 3, 66, 35, 0, 4, 153, 1, 21, 2, 32, 3, 67, 0, 153, 2, 17, 66, 0, 153, 3, 67, 35, 0, 4,
-			148, 1, 21, 2, 32, 3, 68, 0, 148, 2, 17, 66, 0, 148, 3, 68, 35, 0, 4, 166, 1, 21, 2, 32, 3, 71, 0, 166, 2, 17,
-			66, 0, 166, 3, 71, 35, 0, 4, 161, 1, 21, 2, 32, 3, 72, 0, 161, 2, 17, 66, 0, 161, 3, 72, 35, 0, 4, 151, 1, 21,
-			2, 32, 3, 79, 0, 151, 2, 17, 66, 0, 151, 3, 79, 35, 0, 4, 149, 1, 21, 2, 32, 3, 80, 0, 149, 2, 17, 66, 0, 149,
-			3, 80, 35, 0, 4, 146, 1, 21, 2, 32, 3, 81, 0, 146, 2, 17, 66, 0, 146, 3, 81, 35, 0, 4, 175, 1, 21, 2, 32, 3,
-			88, 0, 175, 2, 17, 66, 0, 175, 3, 88, 35, 0, 4, 182, 1, 21, 2, 32, 3, 89, 0, 182, 2, 17, 66, 0, 182, 3, 89, 35,
-			0, 4, 174, 1, 21, 2, 32, 3, 90, 0, 174, 2, 17, 66, 0, 174, 3, 90, 35, 0, 4, 180, 1, 21, 2, 32, 3, 91, 0, 180,
-			2, 17, 66, 0, 180, 3, 91, 35, 0, 4, 181, 1, 21, 2, 32, 3, 93, 0, 181, 2, 17, 66, 0, 181, 3, 93, 35, 0, 4, 183,
-			1, 21, 2, 32, 3, 108, 0, 183, 2, 17, 66, 0, 183, 3, 108, 35, 0, 4, 165, 1, 21, 2, 32, 3, 136, 0, 165, 2, 17, 66,
-			0, 165, 3, 136, 35, 0, 4, 167, 1, 21, 2, 32, 3, 137, 0, 167, 2, 17, 66, 0, 167, 3, 137, 35, 0, 4, 160, 1, 21, 2,
-			32, 3, 138, 0, 160, 2, 17, 66, 0, 160, 3, 138, 35, 0, 4, 162, 1, 21, 2, 32, 3, 139, 0, 162, 2, 17, 66, 0, 162, 3,
-			139, 35, 0, 4, 154, 1, 21, 2, 32, 3, 140, 0, 154, 2, 17, 66, 0, 154, 3, 140, 35, 0, 4, 156, 1, 21, 2, 32, 3, 141,
-			0, 156, 2, 17, 66, 0, 156, 3, 141, 35, 0, 4, 155, 1, 21, 2, 32, 3, 142, 0, 155, 2, 17, 66, 0, 155, 3, 142, 35, 0,
-			4, 157, 1, 21, 2, 32, 3, 143, 0, 157, 2, 17, 66, 0, 157, 3, 143, 35, 0, 4, 150, 1, 21, 2, 32, 3, 144, 0, 150, 2,
-			17, 66, 0, 150, 3, 144, 35, 0, 4, 145, 1, 21, 2, 32, 3, 146, 0, 145, 2, 17, 66, 0, 145, 3, 146, 35, 0, 147, 1, 21,
-			2, 32, 3, 147, 0, 147, 3, 147, 35, 0, 4, 169, 1, 21, 2, 32, 3, 149, 0, 169, 2, 17, 66, 0, 169, 3, 149, 35, 0, 4,
-			171, 1, 21, 2, 32, 3, 150, 0, 171, 2, 17, 66, 0, 171, 3, 150, 35, 0, 4, 170, 1, 21, 2, 32, 3, 151, 0, 170, 2, 17,
-			66, 0, 170, 3, 151, 35, 0, 4, 172, 1, 21, 2, 32, 3, 152, 0, 172, 2, 17, 66, 0, 172, 3, 152, 35, 0, 7, 6, 0, 36,
-			3, 72, 39, 55, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts6 = FileInMemory_createWithData (2829, reinterpret_cast<const char *> (&espeakdata_dicts6_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/bo_dict", 
-			U"bo");
-		Collection_addItem (me.peek(), espeakdata_dicts6.transfer());
+		static unsigned char espeakdata_dicts7_data[8088] = {
+			0, 4, 0, 0, 242, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4,
+			95, 100, 112, 116, 10, 72, 6, 121, 89, 39, 65, 37, 49, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 1, 36, 140, 121, 55, 35, 34, 0, 0, 12, 1, 37, 91, 121, 47, 49, 6, 121, 34, 35, 0, 0, 0, 0, 0, 0, 0,
+			7, 1, 43, 57, 121, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 61, 91, 121,
+			65, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 164, 224, 167, 129, 224, 166, 135, 72, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 18, 143, 224, 166, 174, 224, 166, 167, 224, 167, 141, 224, 166, 175, 224, 167, 135, 72, 0, 0, 0, 0, 0, 12, 137, 224,
+			166, 155, 224, 166, 191, 224, 166, 178, 72, 0, 15, 140, 224, 166, 147, 224, 166, 166, 224, 167, 135, 224, 166, 176, 72, 0, 0, 0, 12, 137,
+			224, 166, 147, 224, 166, 159, 224, 166, 190, 72, 18, 143, 224, 166, 164, 224, 166, 190, 224, 166, 166, 224, 167, 135, 224, 166, 176, 72, 0, 0,
+			0, 21, 146, 224, 166, 134, 224, 166, 174, 224, 166, 190, 224, 166, 166, 224, 167, 135, 224, 166, 176, 72, 0, 0, 0, 9, 134, 224, 166, 143,
+			224, 166, 135, 72, 24, 149, 224, 166, 164, 224, 167, 139, 224, 166, 174, 224, 166, 190, 224, 166, 166, 224, 167, 135, 224, 166, 176, 72, 0, 0,
+			18, 143, 224, 166, 155, 224, 166, 191, 224, 166, 178, 224, 167, 135, 224, 166, 168, 72, 0, 0, 0, 0, 36, 24, 224, 166, 149, 224, 166, 190,
+			224, 166, 178, 224, 166, 170, 224, 167, 129, 224, 166, 176, 224, 167, 129, 224, 166, 183, 49, 35, 55, 4, 48, 40, 34, 40, 91, 0, 0, 0,
+			0, 0, 12, 137, 224, 166, 133, 224, 166, 165, 224, 166, 154, 72, 0, 0, 0, 0, 0, 0, 40, 27, 224, 166, 134, 224, 166, 149, 224, 166,
+			190, 224, 166, 182, 224, 166, 149, 224, 167, 129, 224, 166, 184, 224, 167, 129, 224, 166, 174, 35, 49, 118, 91, 4, 49, 40, 91, 40, 65, 0,
+			0, 9, 134, 224, 166, 143, 224, 166, 176, 72, 9, 134, 224, 166, 143, 224, 166, 176, 72, 0, 0, 0, 12, 137, 224, 166, 164, 224, 167, 139,
+			224, 166, 176, 72, 0, 18, 143, 224, 166, 147, 224, 166, 159, 224, 166, 190, 224, 166, 149, 224, 167, 135, 72, 18, 143, 224, 166, 143, 224, 166,
+			168, 224, 166, 190, 224, 166, 149, 224, 167, 135, 72, 0, 0, 0, 21, 146, 224, 166, 134, 224, 166, 170, 224, 166, 168, 224, 166, 190, 224, 166,
+			149, 224, 167, 135, 72, 0, 0, 12, 137, 224, 166, 143, 224, 166, 159, 224, 166, 190, 72, 0, 0, 25, 15, 224, 166, 151, 224, 166, 176, 224,
+			166, 174, 224, 166, 191, 224, 166, 178, 81, 121, 34, 4, 65, 37, 55, 0, 0, 12, 6, 224, 166, 143, 224, 166, 164, 148, 47, 39, 0, 21,
+			146, 224, 166, 147, 224, 166, 151, 224, 167, 129, 224, 166, 178, 224, 167, 139, 224, 166, 176, 72, 0, 40, 27, 224, 166, 137, 224, 166, 164, 224,
+			167, 141, 224, 166, 164, 224, 166, 176, 224, 166, 166, 224, 166, 190, 224, 167, 159, 224, 167, 128, 40, 47, 47, 38, 39, 34, 4, 72, 118, 113,
+			0, 0, 29, 18, 224, 166, 150, 224, 166, 190, 224, 166, 178, 224, 166, 172, 224, 166, 191, 224, 166, 178, 49, 107, 118, 55, 6, 71, 37, 55,
+			0, 0, 0, 38, 24, 224, 166, 133, 224, 166, 168, 224, 167, 141, 224, 166, 166, 224, 166, 176, 224, 166, 174, 224, 166, 185, 224, 166, 178, 35,
+			50, 72, 39, 34, 4, 65, 35, 107, 39, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 166, 161, 224, 166, 188, 70, 121, 0,
+			0, 0, 0, 0, 0, 15, 140, 224, 166, 149, 224, 166, 176, 224, 166, 155, 224, 166, 191, 72, 0, 0, 0, 9, 134, 224, 166, 147, 224, 166,
+			176, 72, 0, 0, 0, 0, 0, 0, 33, 21, 224, 166, 150, 224, 167, 129, 224, 166, 168, 224, 166, 184, 224, 167, 129, 224, 166, 159, 224, 166,
+			191, 49, 107, 40, 50, 4, 91, 40, 47, 37, 0, 0, 0, 0, 0, 0, 0, 0, 33, 21, 224, 166, 155, 224, 166, 190, 224, 166, 178, 224,
+			166, 172, 224, 166, 190, 224, 166, 149, 224, 166, 178, 143, 35, 55, 6, 71, 118, 49, 39, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 137, 224, 166, 185, 224, 166, 175, 224, 166, 188, 72, 0, 0, 0, 0, 10, 134, 224, 166, 149, 224, 167, 135, 72, 8, 0, 0, 0,
+			0, 0, 18, 143, 224, 166, 149, 224, 166, 176, 224, 167, 135, 224, 166, 155, 224, 166, 191, 72, 0, 0, 0, 0, 0, 0, 30, 18, 224, 166,
+			134, 224, 166, 178, 224, 166, 159, 224, 166, 170, 224, 166, 149, 224, 166, 190, 35, 55, 4, 47, 121, 4, 48, 49, 35, 0, 0, 0, 36, 24,
+			224, 166, 171, 224, 167, 129, 224, 166, 178, 224, 166, 182, 224, 166, 175, 224, 167, 141, 224, 166, 175, 224, 166, 190, 83, 40, 55, 6, 91, 35,
+			79, 79, 118, 0, 0, 0, 0, 21, 12, 224, 166, 151, 224, 166, 156, 224, 166, 151, 224, 166, 156, 81, 121, 79, 81, 121, 79, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 21, 224, 166, 151,
+			224, 166, 190, 224, 166, 178, 224, 166, 151, 224, 166, 178, 224, 167, 141, 224, 166, 170, 81, 35, 55, 6, 81, 121, 55, 48, 39, 0, 0, 0,
+			0, 0, 10, 134, 224, 166, 149, 224, 166, 191, 72, 8, 0, 0, 0, 0, 0, 28, 18, 224, 166, 168, 224, 166, 190, 224, 167, 156, 224, 166,
+			149, 224, 167, 139, 224, 166, 178, 50, 35, 34, 4, 49, 39, 55, 0, 0, 0, 0, 0, 24, 15, 224, 166, 150, 224, 166, 191, 224, 167, 156,
+			224, 166, 149, 224, 166, 191, 49, 107, 37, 70, 49, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 51, 57, 6, 40, 50, 121,
+			76, 121, 55, 55, 6, 37, 91, 0, 11, 3, 95, 50, 49, 36, 49, 6, 40, 91, 0, 0, 14, 3, 95, 51, 56, 6, 35, 139, 47, 34,
+			6, 37, 91, 0, 11, 3, 95, 50, 48, 49, 6, 40, 34, 37, 0, 0, 11, 3, 95, 50, 51, 47, 6, 36, 57, 91, 0, 0, 11, 3,
+			95, 50, 50, 71, 6, 35, 57, 91, 0, 0, 12, 3, 95, 50, 53, 48, 6, 130, 76, 37, 91, 0, 0, 13, 3, 95, 50, 52, 76, 6,
+			121, 71, 71, 37, 91, 0, 0, 12, 3, 95, 50, 55, 91, 35, 47, 6, 35, 91, 0, 0, 14, 3, 95, 50, 54, 76, 107, 6, 35, 71,
+			71, 37, 91, 0, 0, 15, 3, 95, 51, 49, 6, 36, 49, 121, 47, 34, 6, 37, 91, 0, 0, 11, 3, 95, 51, 48, 47, 34, 6, 37,
+			91, 0, 0, 14, 3, 95, 51, 51, 47, 6, 36, 47, 34, 6, 37, 91, 0, 0, 14, 3, 95, 51, 50, 71, 6, 121, 47, 34, 6, 37,
+			91, 0, 0, 15, 3, 95, 51, 53, 48, 6, 130, 57, 47, 34, 6, 37, 91, 0, 0, 15, 3, 95, 51, 52, 76, 6, 39, 58, 47, 34,
+			6, 37, 91, 0, 0, 15, 3, 95, 51, 55, 91, 6, 128, 37, 47, 34, 6, 37, 91, 0, 0, 14, 3, 95, 51, 54, 149, 6, 121, 47,
+			34, 6, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 167, 157, 107, 70, 121,
+			0, 8, 3, 224, 166, 149, 49, 121, 0, 14, 3, 95, 55, 57, 6, 40, 50, 121, 35, 91, 6, 37, 0, 15, 3, 95, 54, 49, 6, 36,
+			49, 91, 121, 139, 139, 6, 37, 0, 0, 8, 3, 224, 166, 148, 39, 58, 0, 8, 3, 224, 167, 156, 70, 121, 0, 15, 3, 95, 55, 56,
+			6, 35, 139, 35, 47, 47, 6, 121, 34, 0, 10, 3, 95, 54, 48, 89, 6, 35, 139, 0, 0, 8, 3, 224, 167, 159, 121, 57, 0, 8,
+			3, 224, 166, 151, 81, 121, 0, 9, 3, 95, 48, 67, 91, 6, 39, 0, 15, 3, 95, 54, 51, 47, 6, 36, 91, 121, 139, 139, 6, 37,
+			0, 0, 8, 3, 224, 166, 150, 145, 121, 0, 15, 3, 95, 54, 50, 71, 6, 35, 91, 121, 139, 139, 6, 37, 0, 0, 16, 3, 95, 54,
+			53, 48, 6, 39, 57, 91, 121, 139, 139, 6, 37, 0, 0, 9, 3, 224, 166, 144, 39, 57, 0, 76, 16, 3, 95, 54, 52, 76, 6, 39,
+			58, 91, 121, 139, 139, 6, 37, 0, 0, 6, 131, 224, 166, 147, 72, 9, 3, 224, 166, 147, 39, 0, 76, 28, 15, 3, 95, 54, 55, 91,
+			6, 35, 76, 121, 139, 139, 6, 37, 0, 0, 15, 140, 224, 166, 164, 224, 167, 139, 224, 166, 149, 224, 167, 135, 72, 15, 3, 95, 54, 54,
+			91, 6, 36, 91, 121, 139, 139, 6, 37, 0, 0, 15, 3, 95, 55, 49, 6, 36, 49, 35, 47, 47, 6, 121, 34, 0, 0, 14, 3, 95,
+			55, 48, 91, 6, 121, 47, 47, 6, 121, 34, 0, 0, 6, 131, 224, 166, 143, 72, 8, 3, 224, 166, 143, 36, 0, 76, 15, 3, 95, 55,
+			51, 47, 6, 37, 35, 47, 47, 6, 121, 34, 0, 0, 16, 3, 95, 55, 50, 71, 6, 35, 107, 35, 47, 47, 6, 121, 34, 0, 0, 14,
+			3, 224, 166, 137, 107, 34, 121, 91, 12, 39, 6, 40, 0, 16, 3, 95, 55, 53, 48, 6, 121, 76, 35, 47, 47, 6, 121, 34, 0, 0,
+			14, 3, 224, 166, 136, 72, 6, 112, 34, 146, 39, 6, 37, 0, 16, 3, 95, 55, 52, 76, 6, 40, 107, 35, 47, 47, 6, 121, 34, 0,
+			0, 8, 3, 224, 166, 139, 34, 37, 0, 16, 3, 95, 55, 55, 91, 6, 35, 47, 35, 47, 47, 6, 121, 34, 0, 0, 14, 3, 224, 166,
+			138, 72, 6, 112, 34, 146, 39, 6, 40, 0, 16, 3, 95, 55, 54, 149, 6, 37, 57, 35, 47, 47, 6, 121, 34, 0, 0, 24, 149, 224,
+			166, 147, 224, 166, 151, 224, 167, 129, 224, 166, 178, 224, 167, 139, 224, 166, 149, 224, 167, 135, 72, 14, 3, 224, 167, 141, 107, 6, 121, 91,
+			39, 50, 47, 39, 0, 7, 3, 224, 166, 133, 121, 0, 11, 3, 95, 49, 57, 6, 40, 50, 37, 91, 0, 0, 12, 3, 224, 167, 140, 6,
+			39, 58, 49, 35, 34, 0, 12, 3, 95, 49, 56, 6, 35, 141, 35, 34, 121, 0, 0, 14, 3, 224, 166, 135, 107, 34, 121, 91, 12, 39,
+			6, 37, 0, 0, 7, 3, 224, 166, 134, 35, 0, 16, 3, 224, 167, 142, 49, 107, 4, 121, 50, 140, 39, 47, 6, 121, 0, 0, 18, 3,
+			224, 166, 129, 76, 6, 121, 50, 72, 34, 39, 71, 37, 50, 72, 40, 0, 0, 12, 3, 224, 167, 136, 6, 39, 57, 49, 35, 34, 0, 0,
+			14, 3, 224, 166, 131, 71, 6, 37, 91, 121, 34, 81, 39, 0, 11, 3, 224, 167, 139, 6, 39, 49, 35, 34, 0, 0, 14, 3, 224, 166,
+			130, 6, 121, 50, 40, 91, 91, 121, 34, 0, 0, 15, 3, 95, 50, 57, 6, 40, 50, 121, 47, 34, 6, 37, 91, 0, 12, 3, 95, 49,
+			49, 6, 148, 81, 35, 34, 39, 0, 0, 11, 3, 95, 50, 56, 6, 35, 141, 35, 91, 0, 10, 3, 95, 49, 48, 72, 6, 121, 91, 0,
+			0, 11, 3, 224, 167, 135, 6, 36, 49, 35, 34, 0, 11, 3, 95, 49, 51, 47, 6, 36, 34, 121, 0, 0, 11, 3, 95, 49, 50, 71,
+			6, 35, 34, 121, 0, 0, 15, 3, 224, 167, 129, 72, 6, 112, 34, 146, 40, 49, 35, 34, 0, 13, 3, 95, 49, 53, 48, 6, 121, 50,
+			36, 34, 121, 0, 0, 15, 3, 224, 167, 128, 72, 6, 112, 34, 146, 37, 49, 35, 34, 0, 12, 3, 95, 49, 52, 149, 6, 39, 72, 72,
+			121, 0, 0, 12, 3, 224, 167, 131, 34, 6, 37, 49, 35, 34, 0, 13, 3, 95, 49, 55, 91, 6, 121, 47, 36, 34, 121, 0, 0, 17,
+			3, 224, 167, 130, 107, 34, 121, 91, 12, 39, 6, 40, 49, 35, 34, 0, 11, 3, 95, 49, 54, 91, 6, 39, 55, 121, 0, 0, 0, 0,
+			18, 3, 224, 166, 183, 65, 4, 40, 138, 36, 50, 12, 39, 91, 12, 6, 121, 0, 0, 17, 3, 224, 166, 182, 47, 4, 35, 55, 36, 71,
+			39, 91, 12, 6, 121, 0, 0, 0, 8, 3, 224, 166, 176, 34, 121, 0, 0, 28, 15, 224, 166, 150, 224, 166, 176, 224, 166, 150, 224, 166,
+			176, 224, 167, 135, 49, 107, 121, 34, 4, 49, 107, 121, 34, 36, 0, 0, 8, 3, 224, 166, 178, 55, 121, 0, 0, 8, 3, 224, 166, 173,
+			137, 121, 0, 15, 3, 95, 52, 57, 6, 40, 50, 121, 48, 130, 76, 35, 91, 0, 0, 11, 3, 224, 165, 164, 72, 109, 66, 140, 109, 0,
+			8, 3, 224, 166, 172, 71, 121, 0, 15, 3, 95, 52, 56, 6, 35, 76, 121, 55, 55, 6, 37, 91, 0, 0, 17, 3, 224, 166, 175, 4,
+			39, 50, 47, 39, 89, 47, 36, 75, 6, 121, 0, 0, 8, 3, 224, 166, 174, 65, 121, 0, 0, 0, 30, 155, 224, 166, 170, 224, 166, 176,
+			224, 167, 141, 224, 166, 175, 224, 167, 141, 224, 166, 175, 224, 166, 168, 224, 167, 141, 224, 166, 164, 72, 16, 3, 224, 166, 168, 72, 4, 39,
+			50, 47, 36, 50, 50, 6, 121, 0, 0, 8, 3, 224, 166, 171, 83, 121, 0, 0, 13, 137, 224, 166, 149, 224, 167, 135, 224, 166, 168, 72,
+			8, 27, 152, 224, 166, 170, 224, 167, 130, 224, 166, 176, 224, 167, 141, 224, 166, 172, 224, 167, 141, 224, 166, 172, 224, 167, 135, 72, 8, 3,
+			224, 166, 170, 48, 121, 0, 0, 8, 3, 224, 166, 165, 25, 121, 0, 14, 3, 95, 53, 57, 6, 40, 50, 121, 91, 6, 35, 139, 0, 16,
+			3, 95, 52, 49, 6, 36, 49, 76, 121, 55, 55, 6, 37, 91, 0, 9, 3, 95, 50, 97, 72, 6, 40, 0, 0, 8, 3, 224, 166, 164,
+			47, 121, 0, 14, 3, 95, 53, 56, 6, 35, 139, 35, 50, 50, 6, 39, 0, 13, 3, 95, 52, 48, 76, 121, 55, 55, 6, 37, 91, 0,
+			0, 8, 3, 224, 166, 167, 138, 121, 0, 16, 3, 95, 52, 51, 47, 6, 36, 47, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166,
+			166, 72, 121, 0, 15, 3, 95, 52, 50, 71, 6, 37, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 161, 140, 121, 0, 17, 3,
+			95, 52, 53, 48, 6, 130, 57, 47, 35, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 160, 141, 121, 0, 15, 3, 95, 52, 52, 76,
+			6, 39, 35, 55, 55, 6, 37, 91, 0, 0, 16, 3, 224, 166, 163, 65, 4, 39, 72, 138, 36, 66, 66, 6, 121, 0, 16, 3, 95, 52,
+			55, 91, 6, 35, 76, 121, 55, 55, 6, 37, 89, 0, 0, 8, 3, 224, 166, 162, 142, 121, 0, 16, 3, 95, 52, 54, 76, 6, 36, 76,
+			121, 55, 55, 6, 37, 91, 0, 0, 8, 3, 224, 166, 157, 144, 121, 0, 17, 3, 95, 54, 57, 6, 40, 50, 121, 91, 121, 47, 47, 6,
+			121, 34, 0, 14, 3, 95, 53, 49, 6, 148, 49, 35, 50, 50, 6, 39, 0, 0, 8, 3, 224, 166, 156, 79, 121, 0, 15, 3, 95, 54,
+			56, 6, 35, 139, 91, 121, 139, 139, 6, 37, 0, 13, 3, 95, 53, 48, 48, 6, 130, 76, 6, 35, 91, 0, 0, 8, 3, 224, 166, 159,
+			139, 121, 0, 15, 3, 95, 53, 51, 47, 6, 36, 48, 35, 50, 50, 6, 39, 0, 0, 10, 3, 224, 166, 158, 6, 37, 68, 130, 0, 15,
+			3, 95, 53, 50, 71, 6, 35, 57, 35, 50, 50, 6, 39, 0, 0, 11, 3, 224, 166, 153, 6, 40, 68, 81, 130, 0, 16, 3, 95, 53,
+			53, 48, 6, 39, 50, 76, 35, 50, 50, 6, 39, 0, 0, 8, 3, 224, 166, 152, 146, 121, 0, 15, 3, 95, 53, 52, 76, 6, 40, 57,
+			35, 50, 50, 6, 39, 0, 0, 9, 3, 224, 166, 155, 76, 107, 121, 0, 15, 3, 95, 53, 55, 91, 6, 35, 47, 35, 50, 50, 6, 39,
+			0, 0, 8, 3, 224, 166, 154, 76, 121, 0, 15, 3, 95, 53, 54, 149, 6, 35, 48, 35, 50, 50, 6, 39, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 17, 3, 95, 56, 57, 6, 40, 50, 121, 50, 121, 71, 71, 6, 39, 57, 0, 0, 13, 3, 95, 56, 56, 6, 35, 139,
+			35, 91, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 57, 57, 50, 6, 37, 34, 35, 50, 121, 71, 71, 6, 39, 57, 0,
+			13, 3, 95, 56, 49, 6, 148, 49, 35, 91, 6, 37, 0, 9, 3, 95, 54, 97, 149, 6, 121, 0, 0, 17, 3, 95, 57, 56, 6, 35,
+			139, 35, 50, 121, 71, 71, 6, 39, 57, 0, 10, 3, 95, 56, 48, 35, 91, 6, 37, 0, 0, 31, 18, 224, 166, 150, 224, 166, 190, 224,
+			166, 182, 224, 166, 174, 224, 166, 185, 224, 166, 178, 49, 107, 35, 91, 4, 65, 121, 107, 121, 55, 0, 14, 3, 95, 56, 51, 47, 6, 36,
+			34, 35, 91, 6, 37, 0, 0, 14, 3, 95, 56, 50, 71, 6, 36, 34, 35, 91, 6, 37, 0, 0, 14, 3, 95, 56, 53, 48, 6, 131,
+			76, 35, 91, 6, 37, 0, 0, 14, 3, 95, 56, 52, 76, 6, 40, 34, 35, 91, 6, 37, 0, 0, 14, 3, 95, 56, 55, 91, 6, 35,
+			47, 35, 91, 6, 37, 0, 0, 14, 3, 95, 56, 54, 149, 6, 37, 57, 35, 91, 6, 37, 0, 0, 30, 18, 224, 166, 150, 224, 166, 190,
+			224, 166, 168, 224, 166, 150, 224, 166, 190, 224, 166, 168, 49, 107, 118, 50, 6, 49, 107, 35, 50, 0, 30, 18, 224, 166, 150, 224, 166, 190,
+			224, 166, 168, 224, 166, 150, 224, 166, 190, 224, 166, 168, 49, 107, 35, 50, 4, 49, 107, 35, 50, 0, 17, 3, 95, 57, 49, 6, 148, 49,
+			35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 12, 3, 224, 166, 188, 71, 6, 37, 50, 72, 40, 0, 13, 3, 95, 57, 48, 50, 121, 71,
+			71, 6, 39, 57, 0, 13, 3, 95, 54, 88, 89, 6, 35, 139, 139, 6, 37, 0, 0, 17, 3, 224, 166, 191, 107, 34, 121, 91, 12, 39,
+			6, 37, 49, 35, 34, 0, 18, 3, 95, 57, 51, 47, 6, 36, 34, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 11, 3, 224, 166, 190,
+			6, 35, 49, 35, 34, 0, 18, 3, 95, 57, 50, 71, 6, 36, 34, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 8, 3, 224, 166, 185,
+			107, 121, 0, 18, 3, 95, 57, 53, 48, 6, 121, 76, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 16, 3, 224, 166, 184, 72, 4, 39,
+			50, 47, 36, 91, 12, 6, 121, 0, 18, 3, 95, 57, 52, 76, 6, 40, 34, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 18, 3, 95,
+			57, 55, 91, 6, 35, 47, 35, 50, 121, 71, 71, 6, 39, 57, 0, 0, 18, 3, 95, 57, 54, 149, 6, 37, 57, 35, 50, 121, 71, 71,
+			6, 39, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 57, 97, 50, 6, 121, 0, 0, 0, 18, 143, 224, 166, 133, 224,
+			166, 172, 224, 167, 141, 224, 166, 166, 224, 166, 191, 72, 0, 0, 28, 18, 224, 166, 149, 224, 167, 159, 224, 167, 135, 224, 166, 149, 224, 166,
+			156, 224, 166, 168, 49, 121, 36, 49, 79, 121, 50, 0, 0, 0, 0, 13, 137, 224, 166, 149, 224, 166, 150, 224, 166, 168, 72, 8, 0, 0,
+			0, 38, 24, 224, 166, 172, 224, 166, 190, 224, 166, 184, 224, 166, 168, 224, 166, 149, 224, 167, 139, 224, 166, 184, 224, 166, 168, 71, 118, 89,
+			39, 50, 6, 49, 39, 89, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 18, 224, 166, 134, 224, 166, 168, 224, 166, 149, 224, 167,
+			139, 224, 166, 176, 224, 166, 190, 118, 50, 4, 49, 39, 34, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 52, 6, 121, 34, 71, 40, 72,
+			0, 0, 0, 11, 4, 95, 48, 77, 50, 55, 6, 35, 145, 0, 0, 10, 67, 4, 147, 128, 65, 39, 89, 47, 0, 12, 4, 95, 48, 77,
+			51, 49, 6, 39, 139, 37, 0, 0, 0, 13, 4, 95, 48, 77, 49, 107, 6, 35, 57, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 166, 134, 224, 166, 174, 224, 166, 190, 224, 167, 159, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 15, 224, 166, 160, 224, 166, 151, 224, 166, 172, 224, 166, 190, 224, 166, 156, 141, 121, 81, 6,
+			71, 35, 79, 0, 13, 137, 224, 166, 143, 224, 166, 172, 224, 166, 130, 72, 8, 0, 0, 9, 134, 224, 166, 184, 224, 167, 135, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 26, 15, 224, 166, 159, 224, 166, 168, 224, 166, 159, 224, 166, 168, 224, 167, 135, 47, 121, 50, 4, 47, 121,
+			50, 36, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 166, 134, 224, 166, 174, 224, 166, 190, 224, 166, 176, 72, 0, 0, 0, 22, 146, 224,
+			166, 149, 224, 166, 191, 224, 166, 168, 224, 167, 141, 224, 166, 164, 224, 167, 129, 72, 8, 18, 143, 224, 166, 134, 224, 166, 170, 224, 166, 168,
+			224, 166, 190, 224, 166, 176, 72, 0, 12, 137, 224, 166, 135, 224, 166, 168, 224, 166, 191, 72, 0, 0, 18, 143, 224, 166, 164, 224, 167, 139,
+			224, 166, 174, 224, 166, 190, 224, 167, 159, 72, 0, 0, 0, 0, 0, 28, 18, 224, 166, 168, 224, 166, 190, 224, 166, 174, 224, 166, 161, 224,
+			166, 190, 224, 166, 149, 50, 118, 65, 6, 72, 118, 49, 0, 24, 15, 224, 166, 134, 224, 166, 168, 224, 166, 154, 224, 166, 190, 224, 166, 168,
+			35, 50, 4, 80, 35, 50, 0, 0, 32, 21, 224, 166, 134, 224, 166, 176, 224, 166, 190, 224, 166, 174, 224, 166, 172, 224, 166, 190, 224, 166,
+			151, 35, 34, 118, 65, 6, 71, 35, 81, 0, 0, 0, 27, 15, 224, 166, 149, 224, 166, 154, 224, 166, 149, 224, 166, 154, 224, 166, 191, 49,
+			121, 4, 80, 6, 49, 121, 80, 37, 0, 0, 0, 32, 21, 224, 166, 168, 224, 166, 190, 224, 166, 149, 224, 166, 155, 224, 166, 190, 224, 166,
+			172, 224, 166, 191, 50, 118, 49, 80, 107, 118, 71, 37, 0, 0, 0, 28, 18, 224, 166, 154, 224, 166, 190, 224, 166, 178, 224, 166, 172, 224,
+			166, 190, 224, 166, 156, 80, 35, 55, 6, 71, 35, 79, 0, 18, 143, 224, 166, 147, 224, 166, 151, 224, 167, 129, 224, 166, 178, 224, 167, 139,
+			72, 0, 0, 12, 137, 224, 166, 164, 224, 166, 172, 224, 167, 135, 8, 0, 0, 38, 24, 224, 166, 149, 224, 166, 168, 224, 166, 149, 224, 166,
+			154, 224, 166, 190, 224, 166, 129, 224, 166, 170, 224, 166, 190, 49, 121, 50, 121, 49, 4, 80, 150, 118, 48, 35, 0, 0, 56, 39, 224, 166,
+			170, 224, 167, 141, 224, 166, 176, 224, 166, 167, 224, 166, 190, 224, 166, 168, 224, 166, 174, 224, 166, 168, 224, 167, 141, 224, 166, 164, 224, 167,
+			141, 224, 166, 176, 224, 167, 128, 48, 34, 121, 142, 35, 50, 4, 65, 121, 50, 6, 47, 34, 37, 0, 0, 0, 0, 12, 137, 224, 166, 164,
+			224, 166, 172, 224, 167, 129, 8, 10, 134, 224, 166, 134, 224, 166, 176, 72, 8, 0, 22, 12, 224, 166, 155, 224, 166, 159, 224, 166, 170, 224,
+			166, 159, 143, 121, 47, 6, 48, 121, 47, 0, 15, 140, 224, 166, 168, 224, 167, 128, 224, 166, 154, 224, 167, 135, 72, 0, 0, 12, 137, 224,
+			166, 137, 224, 166, 170, 224, 166, 176, 72, 0, 0, 0, 15, 140, 224, 166, 147, 224, 166, 159, 224, 166, 190, 224, 166, 176, 72, 15, 140, 224,
+			166, 143, 224, 166, 159, 224, 166, 190, 224, 166, 176, 72, 15, 140, 224, 166, 143, 224, 166, 168, 224, 166, 190, 224, 166, 176, 72, 15, 140, 224,
+			166, 143, 224, 166, 159, 224, 166, 190, 224, 166, 176, 72, 0, 34, 21, 224, 166, 136, 224, 166, 151, 224, 166, 178, 224, 166, 170, 224, 166, 190,
+			224, 166, 150, 224, 167, 128, 37, 81, 39, 55, 4, 48, 118, 49, 107, 37, 0, 30, 18, 224, 166, 134, 224, 166, 184, 224, 166, 168, 224, 166,
+			164, 224, 166, 178, 224, 167, 135, 118, 89, 39, 50, 4, 47, 39, 55, 36, 0, 0, 0, 18, 143, 224, 166, 164, 224, 167, 139, 224, 166, 174,
+			224, 166, 190, 224, 166, 176, 72, 0, 0, 33, 21, 224, 166, 134, 224, 166, 164, 224, 166, 184, 224, 166, 172, 224, 166, 190, 224, 166, 156, 224,
+			167, 128, 35, 47, 39, 91, 4, 71, 118, 79, 113, 0, 0, 32, 21, 224, 166, 149, 224, 166, 190, 224, 166, 178, 224, 166, 149, 224, 167, 135,
+			224, 166, 164, 224, 167, 129, 49, 35, 55, 4, 49, 36, 47, 40, 0, 28, 18, 224, 166, 184, 224, 167, 139, 224, 166, 174, 224, 166, 172, 224,
+			166, 190, 224, 166, 176, 91, 39, 65, 4, 71, 35, 34, 0, 16, 140, 224, 166, 133, 224, 166, 165, 224, 166, 172, 224, 166, 190, 72, 8, 0,
+			0, 12, 137, 224, 166, 175, 224, 166, 166, 224, 166, 191, 8, 0, 34, 21, 224, 166, 156, 224, 166, 178, 224, 166, 150, 224, 166, 190, 224, 166,
+			172, 224, 166, 190, 224, 166, 176, 79, 121, 55, 4, 49, 107, 35, 71, 35, 34, 0, 0, 0, 0, 28, 18, 224, 166, 149, 224, 166, 178, 224,
+			166, 149, 224, 166, 190, 224, 166, 164, 224, 166, 190, 49, 121, 55, 49, 35, 47, 35, 0, 29, 18, 224, 166, 149, 224, 166, 176, 224, 166, 166,
+			224, 166, 190, 224, 166, 164, 224, 166, 190, 49, 121, 34, 4, 72, 35, 47, 118, 0, 38, 24, 224, 166, 174, 224, 166, 153, 224, 167, 141, 224,
+			166, 151, 224, 166, 178, 224, 166, 172, 224, 166, 190, 224, 166, 176, 65, 121, 50, 81, 6, 39, 55, 4, 71, 35, 34, 0, 0, 0, 0, 34,
+			21, 224, 166, 150, 224, 166, 190, 224, 166, 170, 224, 166, 155, 224, 166, 190, 224, 167, 156, 224, 166, 190, 49, 107, 35, 48, 4, 80, 107, 35,
+			34, 118, 0, 26, 15, 224, 166, 134, 224, 166, 170, 224, 166, 168, 224, 166, 156, 224, 166, 168, 118, 48, 39, 50, 4, 57, 39, 50, 0, 0,
+			32, 21, 224, 166, 156, 224, 166, 190, 224, 166, 178, 224, 166, 184, 224, 166, 190, 224, 166, 156, 224, 166, 191, 79, 35, 55, 6, 91, 118, 79,
+			37, 0, 32, 21, 224, 166, 154, 224, 166, 190, 224, 166, 178, 224, 166, 172, 224, 166, 190, 224, 166, 156, 224, 166, 191, 80, 35, 55, 6, 71,
+			35, 79, 37, 0, 0, 0, 0, 0, 0, 41, 27, 224, 166, 137, 224, 166, 164, 224, 167, 141, 224, 166, 164, 224, 166, 176, 224, 166, 166, 224,
+			166, 190, 224, 166, 164, 224, 166, 190, 40, 47, 47, 6, 39, 34, 4, 72, 35, 47, 35, 0, 0, 38, 24, 224, 166, 134, 224, 166, 166, 224,
+			166, 172, 224, 166, 149, 224, 166, 190, 224, 167, 159, 224, 166, 166, 224, 166, 190, 118, 72, 39, 71, 4, 49, 35, 57, 6, 72, 118, 0, 40,
+			27, 224, 166, 133, 224, 166, 174, 224, 166, 178, 224, 166, 149, 224, 166, 190, 224, 166, 168, 224, 167, 141, 224, 166, 164, 224, 166, 191, 35, 65,
+			39, 55, 4, 49, 35, 50, 47, 37, 0, 15, 140, 224, 166, 172, 224, 166, 191, 224, 166, 168, 224, 166, 190, 72, 15, 140, 224, 166, 164, 224,
+			166, 190, 224, 166, 176, 224, 166, 190, 72, 15, 140, 224, 166, 134, 224, 166, 174, 224, 166, 176, 224, 166, 190, 72, 12, 6, 224, 166, 162, 224,
+			166, 188, 107, 70, 121, 0, 0, 15, 140, 224, 166, 134, 224, 166, 170, 224, 166, 168, 224, 166, 191, 72, 15, 140, 224, 166, 134, 224, 166, 170,
+			224, 166, 168, 224, 166, 191, 72, 0, 12, 137, 224, 166, 134, 224, 166, 174, 224, 166, 191, 72, 0, 0, 0, 22, 12, 224, 166, 154, 224, 166,
+			159, 224, 166, 170, 224, 166, 159, 80, 121, 47, 4, 48, 121, 47, 0, 0, 21, 12, 224, 166, 143, 224, 166, 149, 224, 166, 156, 224, 166, 168,
+			148, 49, 6, 79, 121, 50, 0, 28, 18, 224, 166, 134, 224, 166, 184, 224, 166, 149, 224, 166, 190, 224, 166, 176, 224, 166, 190, 118, 89, 4,
+			49, 118, 34, 118, 0, 0, 0, 28, 18, 224, 166, 159, 224, 166, 190, 224, 166, 168, 224, 166, 159, 224, 166, 190, 224, 166, 168, 47, 118, 50,
+			4, 47, 35, 50, 0, 25, 15, 224, 166, 150, 224, 167, 129, 224, 166, 176, 224, 166, 170, 224, 166, 191, 49, 107, 40, 4, 34, 48, 37, 0,
+			0, 0, 0, 0, 0, 33, 21, 224, 166, 150, 224, 166, 190, 224, 166, 168, 224, 166, 184, 224, 166, 190, 224, 166, 174, 224, 166, 190, 49, 107,
+			35, 50, 4, 91, 35, 65, 35, 0, 0, 0, 40, 27, 224, 166, 135, 224, 166, 129, 224, 166, 166, 224, 167, 129, 224, 166, 176, 224, 166, 155,
+			224, 166, 190, 224, 166, 168, 224, 166, 190, 124, 72, 40, 34, 6, 80, 107, 118, 50, 118, 0, 0, 0, 0, 0, 40, 27, 224, 166, 185, 224,
+			166, 190, 224, 166, 176, 224, 166, 190, 224, 166, 174, 224, 166, 156, 224, 166, 190, 224, 166, 166, 224, 166, 190, 107, 35, 34, 118, 65, 6, 79,
+			35, 72, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 166, 164, 224, 167, 129,
+			224, 166, 174, 224, 166, 191, 72, 0, 31, 18, 224, 166, 134, 224, 166, 174, 224, 166, 156, 224, 166, 168, 224, 166, 164, 224, 166, 190, 118, 65,
+			6, 57, 35, 50, 39, 6, 47, 118, 0, 0, 0, 29, 18, 224, 166, 152, 224, 166, 159, 224, 166, 149, 224, 166, 190, 224, 166, 178, 224, 167,
+			128, 146, 121, 47, 6, 49, 35, 55, 37, 0, 0, 33, 21, 224, 166, 152, 224, 166, 190, 224, 166, 184, 224, 166, 170, 224, 166, 190, 224, 166,
+			164, 224, 166, 190, 81, 107, 118, 89, 6, 48, 118, 47, 35, 0, 33, 21, 224, 166, 149, 224, 166, 190, 224, 166, 176, 224, 166, 150, 224, 166,
+			190, 224, 166, 168, 224, 166, 190, 49, 35, 34, 4, 49, 107, 35, 50, 35, 0, 34, 21, 224, 166, 149, 224, 166, 190, 224, 166, 156, 224, 166,
+			178, 224, 166, 178, 224, 166, 164, 224, 166, 190, 49, 35, 79, 39, 55, 4, 55, 121, 47, 35, 0, 35, 21, 224, 166, 149, 224, 166, 172, 224,
+			166, 176, 224, 166, 150, 224, 166, 190, 224, 166, 168, 224, 166, 190, 49, 121, 71, 121, 34, 4, 49, 107, 118, 50, 35, 0, 0, 0, 0, 37,
+			24, 224, 166, 149, 224, 167, 159, 224, 167, 135, 224, 166, 166, 224, 166, 150, 224, 166, 190, 224, 166, 168, 224, 166, 190, 49, 121, 6, 36, 72,
+			49, 107, 35, 50, 35, 0, 0, 0, 0, 0, 36, 24, 224, 166, 149, 224, 166, 190, 224, 166, 168, 224, 166, 170, 224, 166, 190, 224, 166, 164,
+			224, 166, 178, 224, 166, 190, 49, 118, 50, 6, 48, 35, 47, 55, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 9, 2, 95, 51, 47, 6, 37, 50, 0, 0, 9, 2, 95,
+			50, 72, 6, 40, 57, 0, 0, 8, 2, 95, 49, 6, 148, 49, 0, 0, 11, 2, 95, 48, 91, 6, 40, 50, 57, 121, 0, 0, 9, 2,
+			95, 55, 91, 6, 35, 47, 0, 0, 9, 2, 95, 54, 149, 6, 121, 57, 0, 0, 9, 2, 95, 53, 48, 6, 128, 76, 0, 0, 9, 2,
+			95, 52, 149, 6, 35, 34, 0, 0, 0, 0, 9, 2, 95, 57, 50, 6, 121, 57, 0, 0, 8, 2, 95, 56, 6, 35, 141, 0, 0, 17,
+			2, 95, 63, 48, 34, 6, 39, 91, 50, 121, 76, 37, 107, 50, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 8, 4, 95, 224, 166, 147, 39, 0, 0, 0, 0, 9, 4, 95, 224, 166, 144, 39, 57, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 4, 95, 224, 166, 143, 36, 0, 0, 0, 0, 0, 0, 31, 21, 224, 166, 154, 224, 166, 190, 224, 166, 178, 224, 166, 154,
+			224, 167, 129, 224, 166, 178, 224, 167, 139, 80, 118, 55, 80, 40, 55, 39, 0, 0, 0, 0, 28, 18, 224, 166, 160, 224, 166, 191, 224, 166,
+			149, 224, 166, 160, 224, 166, 190, 224, 166, 149, 141, 37, 49, 4, 141, 35, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 164, 224, 166, 190, 224, 166, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
+			18, 224, 166, 149, 224, 166, 190, 224, 166, 176, 224, 166, 172, 224, 166, 190, 224, 166, 176, 49, 35, 34, 4, 71, 35, 34, 0, 29, 18, 224,
+			166, 172, 224, 167, 129, 224, 166, 167, 224, 166, 172, 224, 166, 190, 224, 166, 176, 71, 40, 72, 107, 4, 71, 35, 34, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 19, 143, 224, 166, 149, 224, 167, 139, 224, 166, 165, 224, 166, 190, 224, 167, 159, 72, 8, 0, 0, 0, 24, 149,
+			224, 166, 149, 224, 166, 176, 224, 166, 155, 224, 166, 191, 224, 166, 178, 224, 166, 190, 224, 166, 174, 72, 0, 0, 0, 0, 0, 50, 36, 224,
+			166, 170, 224, 167, 139, 224, 166, 183, 224, 167, 141, 224, 166, 159, 224, 166, 174, 224, 166, 190, 224, 166, 184, 224, 167, 141, 224, 166, 159, 224,
+			166, 190, 224, 166, 176, 48, 39, 89, 47, 6, 65, 118, 89, 47, 118, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 42, 27, 224, 166, 135, 224, 166, 174, 224, 166, 168, 224, 166, 149, 224, 166, 178, 224, 167, 141, 224, 166, 175, 224,
+			166, 190, 224, 166, 168, 37, 65, 39, 50, 4, 49, 35, 55, 6, 55, 118, 50, 0, 0, 0, 0, 37, 24, 224, 166, 170, 224, 166, 190, 224,
+			166, 182, 224, 166, 172, 224, 166, 190, 224, 166, 178, 224, 166, 191, 224, 166, 182, 48, 35, 89, 107, 6, 71, 35, 55, 37, 91, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 9, 224, 166, 149, 224, 167, 141, 224, 166, 183, 49, 4, 39, 57, 65, 40, 138, 36, 50,
+			12, 39, 91, 12, 6, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 166, 147, 224, 166, 176, 224, 166, 190, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 230, 9, 0, 0, 48, 0, 0, 0, 231, 9, 0, 0, 49, 0, 0, 0,
+			232, 9, 0, 0, 50, 0, 0, 0, 233, 9, 0, 0, 51, 0, 0, 0, 234, 9, 0, 0, 52, 0, 0, 0, 235, 9, 0, 0, 53, 0,
+			0, 0, 236, 9, 0, 0, 54, 0, 0, 0, 237, 9, 0, 0, 55, 0, 0, 0, 238, 9, 0, 0, 56, 0, 0, 0, 239, 9, 0, 0,
+			57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 58, 0, 2, 17, 66, 3, 84, 0, 3, 84, 109, 0, 7, 6, 1, 2, 0, 1, 17, 67,
+			3, 130, 0, 7, 6, 1, 3, 0, 4, 1, 17, 65, 3, 68, 0, 1, 17, 67, 0, 7, 6, 1, 4, 0, 3, 0, 2, 32, 3, 108,
+			0, 7, 6, 1, 6, 0, 3, 109, 0, 224, 166, 129, 3, 130, 0, 224, 167, 141, 224, 166, 175, 224, 166, 190, 3, 148, 0, 7, 6, 1,
+			7, 0, 3, 35, 0, 224, 166, 129, 3, 128, 0, 7, 6, 1, 8, 0, 3, 37, 0, 224, 166, 129, 3, 124, 0, 7, 6, 1, 9, 0,
+			3, 37, 0, 224, 166, 129, 3, 124, 0, 7, 6, 1, 10, 0, 3, 40, 0, 224, 166, 129, 3, 133, 0, 7, 6, 1, 11, 0, 3, 40,
+			0, 224, 166, 129, 3, 133, 0, 7, 6, 1, 12, 0, 3, 34, 37, 0, 224, 166, 129, 3, 34, 124, 0, 7, 6, 1, 13, 0, 3, 45,
+			0, 7, 6, 1, 16, 0, 3, 148, 0, 224, 166, 129, 3, 148, 150, 0, 7, 6, 1, 16, 0, 3, 36, 0, 224, 166, 129, 3, 126, 0,
+			224, 167, 141, 224, 166, 175, 224, 166, 190, 3, 148, 0, 7, 6, 1, 17, 0, 3, 39, 57, 0, 224, 166, 129, 3, 131, 57, 0, 7, 6,
+			1, 20, 0, 3, 39, 0, 224, 166, 129, 3, 131, 0, 7, 6, 1, 20, 0, 3, 119, 0, 7, 6, 1, 21, 0, 3, 39, 58, 0, 224,
+			166, 129, 3, 131, 58, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 3, 49, 109, 0, 224, 167, 141, 224, 166, 183, 2, 17, 66,
+			3, 145, 145, 0, 224, 167, 141, 224, 166, 183, 3, 145, 145, 109, 0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 109, 0,
+			7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 109, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 109, 0,
+			7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 76, 0, 3, 76, 109, 0,
+			7, 6, 1, 28, 0, 2, 17, 66, 3, 149, 0, 3, 149, 109, 0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 79, 0, 224, 167, 141,
+			224, 166, 172, 2, 17, 66, 0, 4, 3, 79, 109, 0, 224, 167, 141, 224, 166, 172, 0, 224, 167, 141, 224, 166, 158, 2, 17, 66, 3, 81,
+			81, 0, 224, 167, 141, 224, 166, 158, 3, 81, 81, 131, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6,
+			1, 31, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 3, 139, 109, 0, 7, 6,
+			1, 33, 0, 2, 17, 66, 3, 141, 0, 3, 141, 109, 0, 7, 6, 1, 34, 0, 224, 166, 188, 2, 17, 66, 3, 70, 0, 224, 166, 188,
+			3, 70, 109, 0, 2, 17, 66, 3, 140, 0, 3, 140, 109, 0, 7, 6, 1, 35, 0, 224, 166, 188, 2, 17, 66, 3, 107, 70, 0, 224,
+			166, 188, 3, 107, 70, 109, 0, 2, 17, 66, 3, 142, 0, 3, 142, 109, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 50, 0, 3, 50,
+			109, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 2, 32, 3, 47, 39, 0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17,
+			66, 3, 25, 0, 3, 25, 109, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 72, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 2, 17,
+			66, 3, 138, 0, 3, 138, 109, 0, 7, 6, 1, 41, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 43, 0, 2, 17,
+			66, 3, 48, 0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 2, 17, 66, 3, 83, 0, 3, 83, 109, 0, 7, 6, 1, 45, 0, 2, 17,
+			66, 3, 71, 0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 2, 17,
+			66, 3, 65, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 224, 166, 188, 2, 17, 66, 3, 0, 1, 141, 167, 224, 2, 17, 66, 32, 3,
+			12, 0, 1, 141, 167, 224, 2, 32, 3, 12, 121, 0, 224, 166, 188, 8, 2, 17, 66, 3, 57, 0, 224, 166, 188, 3, 57, 109, 0, 2,
+			17, 66, 3, 75, 0, 3, 75, 109, 0, 4, 1, 141, 167, 224, 2, 17, 67, 3, 148, 0, 224, 166, 190, 1, 141, 167, 224, 0, 7, 6,
+			1, 49, 0, 2, 17, 66, 3, 34, 0, 3, 34, 109, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 109, 0, 7, 6,
+			1, 55, 0, 2, 224, 167, 141, 224, 166, 178, 3, 89, 0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17,
+			66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 57, 0, 4, 2, 224, 167, 141, 224, 166, 164, 3, 89, 0, 2, 224, 167, 141, 224, 166,
+			165, 0, 2, 224, 167, 141, 224, 166, 175, 0, 4, 2, 17, 66, 3, 91, 0, 224, 167, 141, 224, 166, 172, 8, 2, 17, 66, 0, 4, 3,
+			91, 109, 0, 224, 167, 141, 224, 166, 172, 8, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 2, 32, 3, 107, 39, 0, 3, 107,
+			109, 0, 7, 6, 1, 61, 0, 3, 0, 7, 6, 1, 63, 0, 1, 17, 67, 3, 35, 0, 224, 166, 129, 1, 17, 67, 3, 128, 0, 7,
+			6, 1, 64, 0, 1, 17, 67, 3, 37, 0, 224, 166, 129, 1, 17, 67, 3, 124, 0, 7, 6, 1, 65, 0, 1, 17, 67, 3, 37, 0,
+			224, 166, 129, 1, 17, 67, 3, 124, 0, 7, 6, 1, 66, 0, 1, 17, 67, 3, 40, 0, 224, 166, 129, 1, 17, 67, 3, 133, 0, 7,
+			6, 1, 67, 0, 1, 17, 67, 3, 40, 0, 224, 166, 129, 1, 17, 67, 3, 133, 0, 7, 6, 1, 68, 0, 1, 17, 67, 3, 34, 6,
+			37, 0, 224, 166, 129, 1, 17, 67, 3, 34, 6, 124, 0, 7, 6, 1, 72, 0, 1, 17, 67, 3, 36, 0, 224, 166, 137, 1, 17, 67,
+			3, 36, 58, 0, 224, 166, 129, 1, 17, 67, 3, 126, 0, 7, 6, 1, 73, 0, 1, 17, 67, 3, 39, 57, 0, 224, 166, 129, 1, 17,
+			67, 3, 131, 57, 0, 7, 6, 1, 76, 0, 1, 17, 67, 3, 39, 0, 224, 166, 129, 1, 17, 67, 3, 131, 0, 7, 6, 1, 77, 0,
+			1, 17, 67, 3, 39, 58, 0, 224, 166, 129, 1, 17, 67, 3, 131, 58, 0, 7, 6, 1, 78, 0, 1, 17, 67, 3, 0, 7, 6, 1,
+			79, 0, 3, 47, 0, 7, 6, 1, 93, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 107,
+			70, 0, 2, 32, 3, 107, 70, 39, 0, 3, 107, 70, 109, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 0, 8, 2, 17, 66, 3, 57,
+			0, 2, 32, 3, 57, 39, 0, 3, 57, 109, 0, 7, 6, 0, 4, 224, 166, 139, 3, 44, 0, 224, 167, 131, 0, 224, 167, 132, 0, 224,
+			167, 160, 0, 4, 224, 166, 140, 3, 45, 0, 224, 167, 161, 0, 224, 167, 162, 0, 224, 167, 163, 0, 4, 45, 1, 32, 15, 2, 32, 15,
+			3, 71, 37, 57, 6, 39, 81, 0, 45, 8, 32, 2, 32, 15, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts7 = FileInMemory_createWithData (8087, reinterpret_cast<const char *> (&espeakdata_dicts7_data), 
+			U"espeak-1.48.04-source/espeak-data/bn_dict", 
+			U"bn");
+		my addItem_move (espeakdata_dicts7.move());
 
-		static unsigned char espeakdata_dicts7_data[4178] = {
-			0, 4, 0, 0, 46, 12, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 0, 14, 5, 193, 4, 72, 28, 0, 0, 0, 0, 6, 65,
-			8, 71, 36, 0, 0, 0, 6, 195, 4, 208, 128, 28, 0, 0, 6, 65, 12, 89, 36, 0, 0, 0, 13, 4, 95, 8, 1, 3, 49, 35,
-			69, 6, 110, 50, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65, 24, 109, 83, 124, 0, 0, 0,
-			0, 0, 6, 65, 28, 79, 36, 0, 9, 134, 19, 5, 18, 195, 160, 19, 76, 0, 0, 0, 0, 6, 65, 32, 35, 49, 0, 0, 0, 0,
-			14, 1, 35, 49, 111, 57, 97, 37, 50, 6, 109, 47, 0, 27, 0, 6, 65, 36, 37, 0, 14, 5, 193, 36, 72, 8, 0, 15, 1, 37,
-			48, 13, 51, 89, 13, 50, 47, 6, 35, 77, 13, 0, 0, 18, 1, 38, 9, 9, 6, 37, 38, 15, 9, 124, 68, 55, 6, 109, 88, 124,
-			0, 0, 0, 8, 65, 40, 96, 110, 47, 124, 0, 0, 0, 9, 67, 21, 68, 192, 36, 123, 0, 76, 14, 1, 42, 35, 89, 47, 36, 16,
-			6, 37, 89, 49, 0, 27, 0, 9, 1, 43, 65, 16, 36, 89, 0, 27, 0, 6, 65, 44, 49, 36, 0, 0, 9, 1, 45, 65, 6, 109,
-			67, 89, 0, 0, 0, 9, 1, 47, 71, 35, 16, 51, 35, 0, 0, 7, 65, 48, 109, 55, 124, 0, 0, 0, 0, 0, 7, 65, 52, 109,
-			65, 124, 0, 0, 0, 0, 0, 7, 65, 56, 109, 50, 124, 0, 0, 0, 0, 0, 6, 65, 60, 39, 0, 14, 5, 193, 60, 72, 8, 0,
-			11, 1, 61, 37, 100, 58, 6, 35, 55, 0, 27, 0, 0, 0, 6, 65, 64, 48, 36, 0, 11, 1, 64, 35, 16, 51, 6, 39, 82, 35,
-			0, 0, 0, 0, 0, 6, 65, 68, 49, 40, 0, 0, 0, 6, 195, 84, 224, 64, 72, 0, 0, 8, 65, 72, 109, 51, 52, 13, 0, 0,
-			0, 0, 0, 8, 65, 76, 109, 89, 89, 13, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 11, 4, 19, 195,
-			179, 14, 89, 39, 50, 0, 76, 0, 0, 0, 13, 65, 88, 6, 85, 36, 15, 71, 6, 117, 97, 124, 0, 0, 0, 0, 10, 135, 19, 5,
-			18, 195, 173, 5, 13, 76, 0, 14, 65, 92, 6, 85, 36, 15, 72, 6, 39, 71, 55, 13, 0, 0, 0, 16, 1, 94, 89, 37, 51, 49,
-			40, 65, 83, 55, 6, 109, 49, 89, 0, 0, 0, 7, 65, 96, 37, 49, 89, 0, 0, 0, 11, 4, 19, 195, 179, 3, 89, 39, 49, 0,
-			76, 0, 10, 135, 19, 5, 18, 195, 173, 5, 21, 76, 0, 12, 65, 100, 6, 37, 15, 81, 69, 109, 100, 124, 0, 0, 0, 0, 0, 8,
-			65, 104, 88, 36, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 84, 225, 83, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
-			16, 80, 72, 0, 0, 0, 6, 195, 16, 83, 0, 72, 0, 0, 0, 12, 4, 95, 4, 16, 20, 10, 49, 39, 65, 35, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 192, 72, 28, 0, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 36, 0, 0, 0,
-			0, 6, 195, 84, 228, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 21, 137, 4, 76, 0, 0, 7, 66,
-			32, 16, 35, 0, 76, 0, 6, 195, 25, 82, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 19, 128, 35, 50, 0, 76, 0,
-			0, 8, 197, 32, 21, 137, 21, 48, 76, 0, 0, 0, 0, 8, 197, 76, 84, 137, 21, 48, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 32, 21, 137, 21, 80, 76, 0, 0, 0,
-			0, 0, 0, 0, 7, 196, 24, 244, 133, 56, 76, 0, 0, 0, 0, 0, 0, 0, 11, 3, 226, 130, 172, 6, 109, 58, 16, 111, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 66, 32, 80, 109, 0, 76, 0, 0, 8, 133, 6, 195, 179, 18, 1, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 196, 76, 84, 133, 52, 76, 0, 0, 6, 194, 20, 192, 72, 28, 5, 194, 20, 192, 72, 0, 9, 67, 32, 20,
-			192, 35, 89, 0, 76, 10, 3, 95, 50, 48, 85, 6, 37, 50, 0, 0, 7, 196, 76, 84, 129, 56, 76, 0, 0, 0, 0, 0, 0, 14,
-			4, 95, 13, 3, 14, 65, 35, 49, 69, 6, 110, 50, 0, 0, 19, 3, 197, 128, 12, 109, 55, 124, 4, 90, 13, 65, 37, 50, 6, 35,
-			86, 124, 0, 0, 0, 0, 0, 0, 7, 196, 76, 84, 137, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 24, 244, 133, 76, 76,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 84, 133, 84, 76, 0, 0, 6, 194, 20, 224, 72, 28, 0, 13, 3, 95, 51, 88, 47,
-			69, 6, 109, 50, 47, 124, 0, 0, 12, 3, 95, 48, 67, 89, 6, 109, 50, 47, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3,
-			95, 49, 67, 89, 6, 109, 50, 47, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 16, 72, 12, 3, 95, 49, 57, 72, 37, 50, 6, 39,
-			40, 0, 0, 13, 3, 95, 49, 56, 72, 37, 82, 6, 40, 57, 47, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 110,
-			50, 88, 13, 0, 0, 10, 3, 95, 49, 48, 72, 6, 36, 58, 0, 0, 13, 3, 95, 49, 51, 47, 69, 6, 109, 72, 88, 13, 0, 0,
-			12, 3, 95, 49, 50, 72, 6, 39, 72, 88, 13, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37, 50, 88, 13, 0, 0, 14, 3, 95, 49,
-			52, 49, 124, 47, 6, 39, 51, 88, 13, 0, 0, 12, 3, 95, 49, 55, 72, 37, 89, 6, 109, 47, 0, 0, 12, 3, 95, 49, 54, 89,
-			6, 109, 72, 88, 13, 0, 0, 0, 14, 3, 95, 55, 88, 89, 13, 47, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 14, 3, 95, 53, 67, 89, 37, 50, 89, 6, 109, 50, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 32, 21, 137, 20,
-			208, 76, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88, 85, 4, 37, 50, 47, 37, 0, 0, 14, 3, 95, 55, 67, 89, 4, 36, 123,
-			6, 109, 50, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 32, 21, 137, 20, 224, 76, 0, 0, 0, 13, 3, 95, 63, 63,
-			89, 6, 37, 65, 71, 110, 55, 0, 0, 8, 197, 76, 84, 137, 20, 224, 76, 0, 0, 15, 3, 95, 52, 88, 49, 58, 124, 69, 6, 35,
-			50, 47, 124, 0, 0, 15, 3, 95, 57, 67, 50, 4, 110, 40, 89, 6, 109, 50, 123, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95,
-			53, 88, 89, 37, 50, 49, 58, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 54, 88, 89, 13, 57, 97,
-			6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 88, 85, 40, 57,
-			47, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 6, 195, 24, 245, 64, 76, 0, 0, 0, 0, 14, 3, 95, 57, 88, 50, 111, 69, 6,
-			35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 15,
-			7, 15, 49, 39, 55, 6, 37, 47, 35, 0, 0, 7, 196, 20, 229, 18, 20, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 61, 6, 39, 50, 13, 89, 0, 0, 0, 0, 11, 4,
-			95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 13, 4, 95, 2, 18, 22, 71, 69, 6, 36, 82, 36, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 12, 194, 183, 12, 109, 55, 124, 4, 90, 13, 65, 37, 50, 6, 35, 86, 124,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 48, 192, 6, 109, 37, 124, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 64, 83, 0, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
-			3, 195, 169, 19, 36, 89, 0, 76, 19, 4, 95, 3, 9, 18, 89, 37, 51, 49, 40, 65, 83, 55, 6, 109, 49, 89, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 19, 20, 11, 71, 6, 35, 16, 51, 35, 0, 0, 0, 13, 4, 95, 1, 3,
-			21, 35, 100, 6, 40, 86, 39, 0, 0, 20, 3, 95, 194, 171, 6, 39, 71, 69, 13, 15, 49, 111, 65, 6, 109, 47, 13, 89, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 18, 14, 7, 35, 50, 6, 37, 98, 39, 0, 0, 23, 3, 95, 194, 161, 35, 82, 69,
-			6, 37, 51, 35, 86, 65, 37, 69, 35, 87, 57, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 19, 5, 18, 195,
-			160, 76, 0, 0, 0, 0, 0, 0, 6, 195, 21, 32, 64, 76, 0, 0, 0, 8, 133, 19, 5, 18, 195, 169, 76, 7, 195, 64, 83, 19,
-			72, 28, 0, 0, 0, 0, 20, 4, 95, 1, 3, 50, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 6,
-			195, 21, 33, 78, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 95, 194, 191, 35, 82, 69, 6, 37, 51, 37, 50, 47, 109, 16,
-			51, 4, 39, 100, 35, 87, 57, 6, 110, 50, 0, 0, 0, 0, 0, 6, 195, 21, 33, 83, 76, 21, 3, 95, 194, 187, 47, 6, 35, 50,
-			49, 124, 15, 49, 111, 65, 6, 109, 47, 13, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 6, 195, 179,
-			18, 5, 13, 76, 0, 0, 0, 6, 195, 16, 83, 19, 72, 0, 0, 0, 13, 2, 194, 167, 124, 48, 124, 69, 47, 6, 35, 47, 0, 0,
-			0, 0, 0, 12, 2, 194, 163, 55, 55, 37, 40, 69, 13, 89, 0, 0, 0, 0, 0, 16, 2, 195, 167, 89, 36, 4, 47, 69, 13, 50,
-			49, 35, 86, 124, 0, 0, 0, 0, 0, 0, 0, 14, 2, 194, 169, 49, 39, 48, 37, 16, 51, 6, 117, 47, 0, 0, 14, 2, 194, 182,
-			48, 124, 69, 6, 35, 100, 69, 124, 83, 0, 0, 0, 0, 9, 134, 6, 195, 179, 18, 5, 21, 76, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 16, 4, 95, 3, 5, 4, 47, 69, 109, 50, 49, 6, 35, 86, 35, 0, 0, 0, 0, 8, 2, 195, 177, 109, 67, 13, 0, 16, 4,
-			95, 12, 9, 7, 55, 37, 100, 35, 86, 6, 40, 69, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 83,
-			64, 109, 65, 0, 76, 6, 195, 76, 243, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32,
-			85, 64, 109, 58, 0, 76, 6, 195, 76, 245, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2,
-			95, 1, 35, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 9, 37, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 49, 111, 65, 6, 109, 47, 13, 89, 0, 0,
-			23, 2, 95, 33, 89, 6, 37, 81, 50, 13, 15, 72, 124, 72, 65, 37, 69, 124, 89, 57, 6, 39, 0, 0, 0, 15, 2, 95, 39, 124,
-			48, 6, 110, 89, 47, 69, 6, 111, 83, 0, 0, 0, 0, 0, 0, 13, 4, 95, 3, 1, 16, 65, 6, 35, 98, 40, 89, 0, 0, 23,
-			2, 95, 41, 47, 6, 35, 50, 49, 124, 15, 48, 124, 69, 6, 109, 50, 47, 13, 88, 37, 89, 0, 0, 22, 2, 95, 40, 6, 39, 71,
-			69, 13, 15, 48, 124, 69, 6, 109, 50, 47, 13, 88, 37, 89, 0, 0, 7, 195, 64, 84, 128, 72, 28, 10, 2, 95, 47, 71, 35, 16,
-			51, 35, 0, 0, 8, 2, 95, 46, 48, 40, 50, 0, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 10, 2, 95, 51, 47, 69,
-			6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 110, 89, 0, 0, 7, 2, 95, 49, 6, 40, 0, 0, 10, 2, 95, 48, 88, 6, 36,
-			69, 111, 0, 0, 9, 2, 95, 55, 89, 6, 109, 47, 0, 0, 9, 2, 95, 54, 89, 6, 37, 89, 0, 0, 10, 2, 95, 53, 89, 6,
-			37, 68, 49, 0, 20, 4, 95, 4, 1, 3, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 12, 2, 95, 52, 49,
-			58, 6, 35, 47, 69, 13, 0, 0, 15, 2, 95, 59, 48, 4, 40, 50, 37, 49, 6, 39, 65, 35, 0, 0, 15, 2, 95, 58, 72, 6,
-			39, 89, 15, 48, 6, 40, 50, 89, 0, 0, 9, 2, 95, 57, 50, 6, 39, 58, 0, 0, 10, 2, 95, 56, 85, 6, 40, 57, 47, 0,
-			0, 26, 2, 95, 63, 89, 6, 37, 81, 50, 13, 15, 72, 37, 50, 47, 13, 51, 52, 111, 100, 124, 89, 57, 6, 39, 0, 0, 15, 2,
-			95, 62, 65, 124, 96, 6, 39, 15, 9, 9, 49, 13, 0, 0, 0, 15, 2, 95, 60, 65, 13, 50, 6, 39, 15, 9, 9, 49, 13, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 4, 15, 20, 48, 6,
-			40, 50, 47, 0, 0, 0, 0, 22, 2, 95, 91, 6, 39, 71, 69, 13, 15, 49, 55, 124, 58, 86, 6, 35, 47, 4, 39, 16, 0, 0,
-			0, 0, 7, 66, 88, 144, 84, 37, 0, 0, 18, 2, 95, 95, 71, 6, 35, 51, 52, 124, 15, 82, 6, 35, 57, 97, 124, 0, 0, 0,
-			23, 2, 95, 93, 47, 6, 35, 50, 49, 124, 15, 49, 55, 124, 58, 86, 6, 35, 47, 4, 39, 16, 0, 0, 21, 2, 95, 92, 71, 6,
-			35, 16, 51, 35, 37, 65, 71, 109, 51, 47, 6, 37, 86, 35, 0, 0, 0, 0, 0, 19, 2, 95, 96, 124, 49, 89, 6, 109, 50, 47,
-			4, 111, 82, 6, 109, 69, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 7, 18, 22, 81, 69, 6, 35, 82, 36, 0, 0,
-			0, 0, 0, 0, 6, 195, 48, 84, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 123, 6, 39, 71, 69, 13, 15, 49, 55,
-			6, 35, 58, 89, 0, 16, 4, 95, 4, 9, 1, 72, 57, 6, 109, 69, 36, 89, 37, 89, 0, 0, 10, 4, 95, 35, 57, 96, 47, 35,
-			71, 0, 0, 0, 0, 0, 0, 18, 2, 95, 125, 47, 6, 35, 50, 49, 124, 15, 49, 55, 6, 35, 58, 89, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 84, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 35, 51,
-			50, 13, 89, 48, 6, 35, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 195, 169, 18, 5, 13, 76, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 133, 195, 169, 18, 5, 21, 76, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 196, 192, 72, 0, 0, 0, 0, 7,
-			195, 4, 196, 192, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18,
-			66, 102, 0, 104, 0, 108, 0, 114, 0, 115, 0, 118, 0, 119, 0, 121, 0, 122, 0, 7, 6, 18, 67, 104, 0, 108, 0, 114, 0, 115,
-			0, 118, 0, 119, 0, 121, 0, 122, 0, 7, 6, 18, 68, 102, 0, 104, 0, 114, 0, 115, 0, 118, 0, 119, 0, 121, 0, 122, 0, 7,
-			6, 18, 69, 195, 173, 0, 195, 169, 0, 195, 168, 0, 105, 0, 101, 0, 7, 6, 18, 70, 112, 0, 116, 0, 107, 0, 102, 0, 115, 0,
-			7, 6, 18, 74, 98, 0, 100, 0, 103, 0, 109, 0, 118, 0, 108, 0, 110, 0, 100, 0, 122, 0, 114, 0, 113, 0, 7, 6, 18, 75,
-			97, 0, 101, 0, 111, 0, 7, 6, 18, 76, 105, 0, 117, 0, 7, 6, 18, 86, 112, 0, 98, 0, 116, 0, 100, 0, 107, 0, 103, 0,
-			7, 6, 18, 87, 102, 0, 118, 0, 115, 0, 122, 0, 7, 6, 18, 88, 109, 0, 110, 0, 7, 6, 18, 89, 108, 108, 0, 108, 0, 7,
-			6, 18, 90, 114, 0, 7, 6, 195, 167, 0, 3, 89, 0, 7, 6, 97, 0, 101, 3, 4, 35, 125, 0, 3, 35, 0, 109, 98, 2, 32,
-			17, 65, 3, 35, 65, 0, 7, 6, 98, 0, 2, 32, 3, 48, 0, 3, 71, 0, 4, 1, 17, 65, 2, 17, 65, 3, 82, 0, 1, 18,
-			67, 2, 17, 65, 0, 1, 32, 17, 65, 2, 17, 65, 0, 1, 32, 18, 67, 2, 17, 65, 0, 7, 6, 99, 0, 3, 49, 0, 2, 18,
-			69, 3, 89, 0, 7, 6, 100, 0, 2, 32, 3, 47, 0, 118, 3, 71, 71, 0, 3, 72, 0, 106, 3, 77, 0, 4, 1, 17, 65, 2,
-			17, 65, 3, 86, 0, 1, 18, 68, 2, 17, 65, 0, 1, 32, 17, 65, 2, 17, 65, 0, 1, 32, 18, 68, 2, 17, 65, 0, 7, 6,
-			101, 0, 2, 110, 116, 32, 3, 36, 0, 3, 109, 0, 97, 3, 125, 4, 35, 0, 111, 3, 125, 4, 39, 0, 7, 6, 102, 0, 3, 83,
-			0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 117, 105, 3, 77, 37, 0, 4, 3, 81, 0, 117, 2, 18, 69, 0, 2, 18, 69, 3, 96,
-			0, 4, 1, 17, 65, 2, 17, 65, 3, 100, 0, 1, 17, 65, 2, 114, 17, 65, 0, 1, 18, 66, 2, 17, 65, 0, 1, 32, 17, 65,
-			2, 17, 65, 0, 1, 32, 18, 66, 2, 17, 65, 0, 7, 6, 104, 0, 3, 0, 105, 1, 45, 2, 32, 3, 6, 37, 0, 111, 1, 45,
-			2, 32, 3, 6, 111, 0, 7, 6, 105, 0, 4, 3, 37, 0, 1, 188, 195, 103, 2, 25, 0, 1, 188, 195, 113, 2, 25, 0, 2, 97,
-			32, 0, 2, 117, 0, 4, 1, 17, 65, 2, 25, 12, 3, 57, 0, 2, 17, 65, 0, 103, 1, 17, 65, 2, 32, 3, 78, 0, 120, 1,
-			17, 65, 3, 97, 0, 7, 6, 106, 0, 3, 96, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 4, 3, 55, 0, 39, 8, 2,
-			14, 128, 132, 130, 0, 97, 1, 45, 2, 32, 3, 55, 124, 0, 108, 3, 61, 0, 7, 6, 109, 0, 4, 3, 65, 0, 39, 8, 2, 14,
-			128, 132, 130, 0, 112, 2, 25, 0, 7, 6, 110, 0, 4, 2, 32, 3, 8, 50, 0, 116, 2, 32, 0, 4, 3, 50, 0, 1, 101, 2,
-			32, 0, 1, 105, 2, 32, 0, 39, 8, 2, 14, 128, 132, 130, 0, 116, 2, 25, 0, 4, 1, 21, 2, 98, 3, 65, 0, 1, 21, 2,
-			118, 0, 1, 98, 2, 21, 0, 1, 118, 2, 21, 0, 121, 3, 67, 0, 4, 2, 99, 25, 3, 68, 0, 103, 0, 7, 6, 111, 0, 114,
-			2, 32, 3, 6, 39, 16, 0, 3, 39, 0, 117, 3, 110, 58, 0, 7, 6, 112, 0, 3, 48, 0, 2, 116, 3, 48, 12, 0, 7, 6,
-			113, 0, 4, 3, 49, 0, 117, 2, 18, 69, 0, 195, 188, 3, 49, 58, 0, 117, 105, 3, 49, 58, 37, 0, 7, 6, 114, 0, 2, 32,
-			3, 8, 0, 4, 8, 3, 16, 51, 0, 114, 0, 4, 3, 51, 0, 1, 108, 2, 17, 65, 0, 1, 109, 2, 17, 65, 0, 1, 110, 2,
-			17, 65, 0, 1, 115, 2, 17, 65, 0, 4, 1, 17, 65, 2, 17, 65, 3, 69, 0, 1, 17, 67, 2, 17, 65, 0, 2, 116, 0, 7,
-			6, 115, 0, 1, 17, 65, 2, 17, 65, 3, 88, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 39, 8, 2, 14, 128,
-			132, 130, 0, 115, 0, 101, 1, 45, 2, 32, 3, 89, 13, 0, 7, 6, 116, 0, 4, 3, 47, 0, 39, 8, 2, 14, 128, 132, 130, 0,
-			109, 3, 65, 65, 0, 122, 3, 72, 88, 0, 4, 103, 2, 18, 69, 3, 77, 0, 106, 0, 4, 106, 2, 32, 3, 78, 0, 120, 0, 7,
-			6, 117, 0, 4, 3, 40, 0, 2, 105, 0, 117, 3, 40, 58, 0, 4, 1, 17, 65, 2, 25, 3, 58, 0, 2, 17, 65, 0, 7, 6,
-			118, 0, 3, 82, 0, 8, 3, 85, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 4, 3, 49, 89, 0, 8, 17, 65, 2, 18,
-			70, 0, 8, 17, 65, 3, 81, 88, 0, 4, 1, 25, 3, 97, 0, 1, 105, 17, 65, 0, 1, 117, 17, 65, 0, 7, 6, 121, 0, 3,
-			37, 0, 2, 17, 65, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 160, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0,
-			195, 173, 3, 7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 186, 3, 7, 40, 0, 195, 168, 3, 7, 109, 0, 195, 178, 3, 7, 110, 0,
-			195, 175, 3, 37, 0, 195, 188, 3, 40, 0, 197, 128, 3, 55, 0, 195, 188, 1, 103, 3, 58, 0, 195, 177, 3, 67, 0, 36, 3, 72,
-			39, 55, 124, 16, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts7 = FileInMemory_createWithData (4177, reinterpret_cast<const char *> (&espeakdata_dicts7_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ca_dict", 
+		static unsigned char espeakdata_dicts8_data[4154] = {
+			0, 4, 0, 0, 22, 12, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 0, 49, 5, 193, 4, 72, 28, 0, 0, 0, 0, 6, 65,
+			8, 71, 36, 0, 0, 0, 6, 195, 4, 208, 128, 28, 0, 0, 6, 65, 12, 89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0,
+			0, 0, 0, 12, 4, 95, 100, 112, 116, 10, 49, 39, 65, 35, 0, 0, 0, 0, 0, 0, 7, 65, 24, 109, 83, 124, 0, 0, 0, 0,
+			7, 196, 24, 244, 133, 76, 76, 0, 6, 65, 28, 79, 36, 0, 0, 0, 0, 0, 6, 65, 32, 35, 49, 0, 0, 0, 0, 14, 1, 35,
+			49, 111, 57, 97, 37, 50, 6, 109, 47, 0, 27, 0, 6, 65, 36, 37, 0, 49, 5, 193, 36, 72, 8, 0, 15, 1, 37, 48, 13, 51,
+			89, 13, 50, 47, 6, 35, 77, 13, 0, 0, 18, 1, 38, 9, 9, 6, 37, 38, 15, 9, 124, 68, 55, 6, 109, 88, 124, 0, 0, 0,
+			8, 65, 40, 96, 110, 47, 124, 0, 0, 0, 9, 67, 21, 68, 192, 36, 123, 0, 76, 14, 1, 42, 35, 89, 47, 36, 16, 6, 37, 89,
+			49, 0, 27, 0, 9, 1, 43, 65, 16, 36, 89, 0, 27, 0, 6, 65, 44, 49, 36, 0, 0, 6, 195, 76, 84, 162, 76, 9, 1, 45,
+			65, 6, 109, 67, 89, 0, 0, 0, 9, 1, 47, 71, 35, 16, 51, 35, 0, 0, 7, 65, 48, 109, 55, 124, 0, 16, 4, 95, 100, 105,
+			97, 72, 57, 6, 109, 69, 36, 89, 37, 89, 0, 0, 0, 0, 0, 7, 65, 52, 109, 65, 124, 0, 0, 0, 0, 0, 7, 65, 56, 109,
+			50, 124, 0, 0, 0, 0, 0, 6, 65, 60, 39, 0, 49, 5, 193, 60, 72, 8, 0, 11, 1, 61, 37, 100, 58, 6, 35, 55, 0, 27,
+			0, 0, 0, 6, 65, 64, 48, 36, 0, 11, 1, 64, 35, 16, 51, 6, 39, 82, 35, 0, 0, 0, 0, 0, 6, 65, 68, 49, 40, 0,
+			0, 0, 6, 195, 84, 224, 64, 72, 0, 0, 8, 65, 72, 109, 51, 52, 13, 0, 0, 0, 0, 12, 4, 95, 100, 111, 116, 48, 6, 40,
+			50, 47, 0, 0, 8, 65, 76, 109, 89, 89, 13, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 7, 196, 76,
+			84, 133, 84, 76, 0, 0, 0, 13, 65, 88, 6, 85, 36, 15, 71, 6, 117, 97, 124, 0, 0, 8, 66, 137, 48, 36, 89, 0, 76, 0,
+			0, 0, 14, 65, 92, 6, 85, 36, 15, 72, 6, 39, 71, 55, 13, 0, 0, 0, 16, 1, 94, 89, 37, 51, 49, 40, 65, 83, 55, 6,
+			109, 49, 89, 0, 0, 0, 7, 65, 96, 37, 49, 89, 0, 0, 0, 0, 0, 12, 65, 100, 6, 37, 15, 81, 69, 109, 100, 124, 0, 0,
+			0, 0, 0, 8, 65, 104, 88, 36, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 84, 225, 83, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 196, 20, 229, 18, 20, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 15, 65, 128, 89, 36, 4, 47, 69, 13, 50, 49, 35, 86, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 195, 64, 83, 19, 72, 28, 0, 0, 0, 14, 4, 95, 109, 99, 110, 65, 35, 49, 69, 6, 110, 50, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 21, 137, 4, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 16, 80, 72, 0, 0, 0, 6, 195, 16, 83, 0, 72, 0, 0, 0, 0, 0, 6, 195, 137, 33, 77, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 192, 72, 28, 0, 0, 0, 0, 0, 6, 195, 84, 228, 192, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 33, 78, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 32, 16, 35, 0, 76, 0, 6, 195, 25, 82, 64, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 19, 128, 35, 50, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 32, 21, 137, 21, 48, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 226, 130, 172, 6, 109, 58, 16, 111, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 21, 33, 83, 76, 0, 7, 66, 32, 80, 109, 0, 76, 0, 0, 0, 14, 4, 95, 111, 103, 111, 49, 39, 55, 6, 37, 47, 35, 0,
+			0, 0, 8, 197, 76, 84, 137, 21, 48, 76, 0, 6, 195, 26, 116, 129, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 20,
+			192, 72, 28, 5, 194, 20, 192, 72, 0, 9, 67, 32, 20, 192, 35, 89, 0, 76, 10, 3, 95, 50, 48, 85, 6, 37, 50, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 4, 95, 98, 114, 118, 71, 69, 6, 36, 82, 36, 0, 0, 0, 0, 0, 20, 4, 95, 97, 99, 50, 72, 6,
+			110, 71, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 26, 116, 133, 52, 76,
+			0, 0, 0, 0, 0, 10, 67, 78, 115, 128, 89, 39, 50, 0, 76, 0, 0, 0, 7, 196, 26, 116, 133, 84, 76, 0, 6, 194, 20, 224,
+			72, 28, 0, 13, 3, 95, 51, 88, 47, 69, 6, 109, 50, 47, 124, 0, 0, 12, 3, 95, 48, 67, 89, 6, 109, 50, 47, 89, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 89, 6, 109, 50, 47, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 16, 72, 12,
+			3, 95, 49, 57, 72, 37, 50, 6, 39, 40, 0, 0, 13, 3, 95, 49, 56, 72, 37, 82, 6, 40, 57, 47, 0, 0, 0, 0, 0, 0,
+			0, 0, 11, 3, 95, 49, 49, 6, 110, 50, 88, 13, 0, 0, 10, 3, 95, 49, 48, 72, 6, 36, 58, 0, 0, 13, 3, 95, 49, 51,
+			47, 69, 6, 109, 72, 88, 13, 0, 0, 12, 3, 95, 49, 50, 72, 6, 39, 72, 88, 13, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37,
+			50, 88, 13, 0, 0, 14, 3, 95, 49, 52, 49, 124, 47, 6, 39, 51, 88, 13, 0, 0, 12, 3, 95, 49, 55, 72, 37, 89, 6, 109,
+			47, 0, 0, 12, 3, 95, 49, 54, 89, 6, 109, 72, 88, 13, 0, 0, 0, 14, 3, 95, 55, 88, 89, 13, 47, 6, 35, 50, 47, 124,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 53, 67, 89, 37, 50, 89, 6, 109, 50, 123, 0, 0, 0, 0, 13, 4, 95,
+			97, 99, 117, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88, 85, 4, 37,
+			50, 47, 37, 0, 0, 14, 3, 95, 55, 67, 89, 4, 36, 123, 6, 109, 50, 123, 0, 0, 0, 0, 0, 0, 0, 8, 197, 76, 84, 165,
+			21, 80, 76, 0, 0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 89, 6, 37, 65, 71, 110, 55, 0, 0, 0, 0, 19, 3, 197, 128, 108,
+			109, 55, 124, 4, 90, 13, 65, 37, 50, 6, 35, 86, 124, 0, 15, 3, 95, 52, 88, 49, 58, 124, 69, 6, 35, 50, 47, 124, 0, 0,
+			15, 3, 95, 57, 67, 50, 4, 110, 40, 89, 6, 109, 50, 123, 0, 0, 0, 0, 0, 0, 6, 195, 16, 83, 19, 72, 0, 0, 16, 3,
+			95, 53, 88, 89, 37, 50, 49, 58, 6, 35, 50, 47, 124, 0, 0, 0, 13, 4, 95, 114, 110, 103, 35, 50, 6, 37, 98, 39, 0, 0,
+			0, 0, 0, 0, 0, 15, 3, 95, 54, 88, 89, 13, 57, 97, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 88, 85, 40, 57, 47, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 6, 195, 24, 245, 64,
+			76, 0, 0, 0, 0, 14, 3, 95, 57, 88, 50, 111, 69, 6, 35, 50, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+			197, 32, 21, 137, 20, 208, 76, 0, 0, 0, 0, 13, 4, 95, 115, 116, 107, 71, 6, 35, 16, 51, 35, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 99, 105, 114, 89, 37, 51, 49,
+			40, 65, 83, 55, 6, 109, 49, 89, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 61, 6, 39, 50, 13, 89, 0, 0, 0,
+			0, 11, 4, 95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 108, 105, 103, 55, 37,
+			100, 35, 86, 6, 40, 69, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 32, 21, 137, 21,
+			80, 76, 0, 0, 0, 0, 0, 0, 0, 9, 66, 48, 192, 6, 109, 37, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 16, 4, 95, 99, 101, 100, 47, 69, 109, 50, 49, 6, 35, 86, 35, 0, 0, 7, 195, 64, 83, 0, 72, 28, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 99, 97, 112, 65, 6, 35, 98, 40, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 20, 4, 95, 100, 97, 99, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 0, 0, 20, 3,
+			95, 194, 171, 6, 39, 71, 69, 13, 15, 49, 111, 65, 6, 109, 47, 13, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 3,
+			95, 194, 161, 35, 82, 69, 6, 37, 51, 35, 86, 65, 37, 69, 35, 87, 57, 6, 110, 50, 0, 0, 7, 196, 76, 84, 155, 76, 76, 0,
+			0, 0, 8, 197, 32, 21, 137, 20, 224, 76, 0, 0, 0, 7, 196, 24, 244, 133, 56, 76, 0, 0, 6, 195, 76, 84, 155, 76, 0, 0,
+			0, 0, 0, 0, 6, 195, 21, 32, 64, 76, 10, 67, 78, 112, 192, 89, 39, 49, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 95, 194, 191, 35, 82, 69, 6, 37, 51, 37, 50, 47, 109, 16, 51, 4, 39, 100, 35,
+			87, 57, 6, 110, 50, 0, 0, 0, 8, 197, 76, 84, 137, 20, 224, 76, 0, 0, 21, 3, 95, 194, 187, 47, 6, 35, 50, 49, 124, 15,
+			49, 111, 65, 6, 109, 47, 13, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 103, 114, 118, 81, 69, 6, 35, 82, 36, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 124, 48, 124, 69, 47, 6, 35, 47, 0, 0, 0, 0, 0, 12, 2,
+			194, 163, 55, 55, 37, 40, 69, 13, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 194, 169, 49, 39, 48, 37, 16, 51,
+			6, 117, 47, 0, 0, 14, 2, 194, 182, 48, 124, 69, 6, 35, 100, 69, 124, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 8, 2, 195, 177, 109, 67, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 83, 64, 109,
+			65, 0, 76, 6, 195, 76, 243, 64, 76, 0, 0, 0, 0, 0, 0, 0, 6, 195, 137, 33, 85, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 9, 67, 32, 85, 64, 109, 58, 0, 76, 6, 195, 76, 245, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 2, 95, 34, 49, 111, 65, 6, 109, 47, 13, 89, 0, 0, 23, 2, 95, 33, 89, 6, 37, 81, 50, 13, 15, 72, 124, 72,
+			65, 37, 69, 124, 89, 57, 6, 39, 0, 0, 0, 15, 2, 95, 39, 124, 48, 6, 110, 89, 47, 69, 6, 111, 83, 0, 0, 0, 0, 0,
+			0, 0, 23, 2, 95, 41, 47, 6, 35, 50, 49, 124, 15, 48, 124, 69, 6, 109, 50, 47, 13, 88, 37, 89, 0, 0, 22, 2, 95, 40,
+			6, 39, 71, 69, 13, 15, 48, 124, 69, 6, 109, 50, 47, 13, 88, 37, 89, 0, 0, 7, 195, 64, 84, 128, 72, 28, 10, 2, 95, 47,
+			71, 35, 16, 51, 35, 0, 0, 8, 2, 95, 46, 48, 40, 50, 0, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 10, 2, 95,
+			51, 47, 69, 6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 110, 89, 0, 0, 7, 2, 95, 49, 6, 40, 0, 0, 10, 2, 95, 48,
+			88, 6, 36, 69, 111, 0, 0, 9, 2, 95, 55, 89, 6, 109, 47, 0, 0, 9, 2, 95, 54, 89, 6, 37, 89, 0, 0, 10, 2, 95,
+			53, 89, 6, 37, 68, 49, 0, 0, 12, 2, 95, 52, 49, 58, 6, 35, 47, 69, 13, 0, 0, 15, 2, 95, 59, 48, 4, 40, 50, 37,
+			49, 6, 39, 65, 35, 0, 0, 15, 2, 95, 58, 72, 6, 39, 89, 15, 48, 6, 40, 50, 89, 0, 0, 9, 2, 95, 57, 50, 6, 39,
+			58, 0, 0, 10, 2, 95, 56, 85, 6, 40, 57, 47, 0, 0, 26, 2, 95, 63, 89, 6, 37, 81, 50, 13, 15, 72, 37, 50, 47, 13,
+			51, 52, 111, 100, 124, 89, 57, 6, 39, 0, 0, 15, 2, 95, 62, 65, 124, 96, 6, 39, 15, 9, 9, 49, 13, 0, 0, 0, 15, 2,
+			95, 60, 65, 13, 50, 6, 39, 15, 9, 9, 49, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 22, 2, 95, 91, 6, 39, 71, 69, 13, 15, 49, 55, 124, 58, 86, 6, 35, 47, 4, 39, 16, 0,
+			0, 0, 0, 7, 66, 88, 144, 84, 37, 0, 0, 18, 2, 95, 95, 71, 6, 35, 51, 52, 124, 15, 82, 6, 35, 57, 97, 124, 0, 0,
+			0, 23, 2, 95, 93, 47, 6, 35, 50, 49, 124, 15, 49, 55, 124, 58, 86, 6, 35, 47, 4, 39, 16, 0, 0, 21, 2, 95, 92, 71,
+			6, 35, 16, 51, 35, 37, 65, 71, 109, 51, 47, 6, 37, 86, 35, 0, 0, 0, 0, 6, 2, 95, 97, 35, 0, 0, 19, 2, 95, 96,
+			124, 49, 89, 6, 109, 50, 47, 4, 111, 82, 6, 109, 69, 47, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 84, 133, 52, 76, 0, 6,
+			2, 95, 105, 37, 0, 0, 0, 6, 2, 95, 111, 39, 0, 0, 0, 0, 0, 6, 195, 48, 84, 192, 72, 0, 0, 13, 4, 95, 104, 97,
+			99, 49, 35, 69, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 123, 6, 39, 71, 69, 13, 15, 49, 55, 6, 35, 58, 89,
+			0, 0, 10, 4, 95, 35, 57, 96, 47, 35, 71, 0, 0, 0, 0, 0, 0, 18, 2, 95, 125, 47, 6, 35, 50, 49, 124, 15, 49, 55,
+			6, 35, 58, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 84, 129, 56, 76, 0, 0, 0, 5, 194, 84, 224, 72,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 35, 51, 50, 13, 89, 48, 6, 35, 57, 0, 0, 0, 0, 0, 0,
+			0, 20, 4, 108, 194, 183, 108, 109, 55, 124, 4, 90, 13, 65, 37, 50, 6, 35, 86, 124, 0, 0, 0, 8, 197, 76, 84, 165, 20, 208,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 84, 137, 4, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 196, 192,
+			72, 0, 0, 0, 0, 7, 195, 4, 196, 192, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 18, 66, 102, 0, 104, 0, 108, 0, 114, 0, 115, 0, 118, 0, 119, 0, 121, 0, 122, 0, 7, 6, 18, 67, 104,
+			0, 108, 0, 114, 0, 115, 0, 118, 0, 119, 0, 121, 0, 122, 0, 7, 6, 18, 68, 102, 0, 104, 0, 114, 0, 115, 0, 118, 0, 119,
+			0, 121, 0, 122, 0, 7, 6, 18, 69, 195, 173, 0, 195, 169, 0, 195, 168, 0, 105, 0, 101, 0, 7, 6, 18, 70, 112, 0, 116, 0,
+			107, 0, 102, 0, 115, 0, 7, 6, 18, 74, 98, 0, 100, 0, 103, 0, 109, 0, 118, 0, 108, 0, 110, 0, 100, 0, 122, 0, 114, 0,
+			113, 0, 7, 6, 18, 75, 97, 0, 101, 0, 111, 0, 7, 6, 18, 76, 105, 0, 117, 0, 7, 6, 18, 86, 112, 0, 98, 0, 116, 0,
+			100, 0, 107, 0, 103, 0, 7, 6, 18, 87, 102, 0, 118, 0, 115, 0, 122, 0, 7, 6, 18, 88, 109, 0, 110, 0, 7, 6, 18, 89,
+			108, 108, 0, 108, 0, 7, 6, 18, 90, 114, 0, 7, 6, 195, 167, 0, 3, 89, 0, 7, 6, 97, 0, 101, 3, 4, 35, 125, 0, 3,
+			35, 0, 109, 98, 2, 32, 17, 65, 3, 35, 65, 0, 7, 6, 98, 0, 2, 32, 3, 48, 0, 3, 71, 0, 4, 1, 17, 65, 2, 17,
+			65, 3, 82, 0, 1, 18, 67, 2, 17, 65, 0, 1, 32, 17, 65, 2, 17, 65, 0, 1, 32, 18, 67, 2, 17, 65, 0, 7, 6, 99,
+			0, 3, 49, 0, 2, 18, 69, 3, 89, 0, 7, 6, 100, 0, 2, 32, 3, 47, 0, 118, 3, 71, 71, 0, 3, 72, 0, 106, 3, 77,
+			0, 4, 1, 17, 65, 2, 17, 65, 3, 86, 0, 1, 18, 68, 2, 17, 65, 0, 1, 32, 17, 65, 2, 17, 65, 0, 1, 32, 18, 68,
+			2, 17, 65, 0, 7, 6, 101, 0, 2, 110, 116, 32, 3, 36, 0, 3, 109, 0, 97, 3, 125, 4, 35, 0, 111, 3, 125, 4, 39, 0,
+			7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 117, 105, 3, 77, 37, 0, 4, 3, 81, 0, 117, 2, 18, 69,
+			0, 2, 18, 69, 3, 96, 0, 4, 1, 17, 65, 2, 17, 65, 3, 100, 0, 1, 17, 65, 2, 114, 17, 65, 0, 1, 18, 66, 2, 17,
+			65, 0, 1, 32, 17, 65, 2, 17, 65, 0, 1, 32, 18, 66, 2, 17, 65, 0, 7, 6, 104, 0, 3, 0, 105, 1, 45, 2, 32, 3,
+			6, 37, 0, 111, 1, 45, 2, 32, 3, 6, 111, 0, 7, 6, 105, 0, 4, 3, 37, 0, 1, 188, 195, 103, 2, 25, 0, 1, 188, 195,
+			113, 2, 25, 0, 2, 97, 32, 0, 2, 117, 0, 4, 1, 17, 65, 2, 25, 12, 3, 57, 0, 2, 17, 65, 0, 103, 1, 17, 65, 2,
+			32, 3, 78, 0, 120, 1, 17, 65, 3, 97, 0, 7, 6, 106, 0, 3, 96, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 4,
+			3, 55, 0, 39, 8, 2, 14, 128, 132, 130, 0, 97, 1, 45, 2, 32, 3, 55, 124, 0, 108, 3, 61, 0, 7, 6, 109, 0, 4, 3,
+			65, 0, 39, 8, 2, 14, 128, 132, 130, 0, 112, 2, 25, 0, 7, 6, 110, 0, 4, 2, 32, 3, 8, 50, 0, 116, 2, 32, 0, 4,
+			3, 50, 0, 1, 101, 2, 32, 0, 1, 105, 2, 32, 0, 39, 8, 2, 14, 128, 132, 130, 0, 116, 2, 25, 0, 4, 1, 21, 2, 98,
+			3, 65, 0, 1, 21, 2, 118, 0, 1, 98, 2, 21, 0, 1, 118, 2, 21, 0, 121, 3, 67, 0, 4, 2, 99, 25, 3, 68, 0, 103,
+			0, 7, 6, 111, 0, 114, 2, 32, 3, 6, 39, 16, 0, 3, 39, 0, 117, 3, 110, 58, 0, 7, 6, 112, 0, 3, 48, 0, 2, 116,
+			3, 48, 12, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 18, 69, 0, 195, 188, 3, 49, 58, 0, 117, 105, 3, 49, 58, 37, 0,
+			7, 6, 114, 0, 2, 32, 3, 8, 0, 4, 8, 3, 16, 51, 0, 114, 0, 4, 3, 51, 0, 1, 108, 2, 17, 65, 0, 1, 109, 2,
+			17, 65, 0, 1, 110, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 4, 1, 17, 65, 2, 17, 65, 3, 69, 0, 1, 17, 67, 2, 17,
+			65, 0, 2, 116, 0, 7, 6, 115, 0, 1, 17, 65, 2, 17, 65, 3, 88, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128, 129,
+			0, 39, 8, 2, 14, 128, 132, 130, 0, 115, 0, 101, 1, 45, 2, 32, 3, 89, 13, 0, 7, 6, 116, 0, 4, 3, 47, 0, 39, 8,
+			2, 14, 128, 132, 130, 0, 109, 3, 65, 65, 0, 122, 3, 72, 88, 0, 4, 103, 2, 18, 69, 3, 77, 0, 106, 0, 4, 106, 2, 32,
+			3, 78, 0, 120, 0, 7, 6, 117, 0, 4, 3, 40, 0, 2, 105, 0, 117, 3, 40, 58, 0, 4, 1, 17, 65, 2, 25, 3, 58, 0,
+			2, 17, 65, 0, 7, 6, 118, 0, 3, 82, 0, 8, 3, 85, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 4, 3, 49, 89,
+			0, 8, 17, 65, 2, 18, 70, 0, 8, 17, 65, 3, 81, 88, 0, 4, 1, 25, 3, 97, 0, 1, 105, 17, 65, 0, 1, 117, 17, 65,
+			0, 7, 6, 121, 0, 3, 37, 0, 2, 17, 65, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 160, 3, 7, 35, 0,
+			195, 169, 3, 7, 36, 0, 195, 173, 3, 7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 186, 3, 7, 40, 0, 195, 168, 3, 7, 109, 0,
+			195, 178, 3, 7, 110, 0, 195, 175, 3, 37, 0, 195, 188, 3, 40, 0, 197, 128, 3, 55, 0, 195, 188, 1, 103, 3, 58, 0, 195, 177,
+			3, 67, 0, 36, 3, 72, 39, 55, 124, 16, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts8 = FileInMemory_createWithData (4153, reinterpret_cast<const char *> (&espeakdata_dicts8_data), 
+			U"espeak-1.48.04-source/espeak-data/ca_dict", 
 			U"ca");
-		Collection_addItem (me.peek(), espeakdata_dicts7.transfer());
+		my addItem_move (espeakdata_dicts8.move());
 
-		static unsigned char espeakdata_dicts8_data[7615] = {
-			0, 4, 0, 0, 70, 17, 0, 0, 0, 0, 0, 0, 6, 195, 41, 49, 77, 72, 0, 6, 65, 4, 124, 0, 14, 6, 193, 4, 72, 28,
-			8, 0, 0, 6, 195, 12, 16, 128, 17, 9, 134, 2, 196, 155, 8, 5, 13, 8, 0, 0, 6, 65, 8, 71, 123, 0, 0, 0, 0, 0,
-			6, 65, 12, 117, 123, 0, 0, 0, 13, 4, 95, 8, 1, 3, 107, 6, 124, 76, 36, 49, 0, 0, 0, 6, 65, 16, 72, 123, 0, 0,
-			7, 132, 196, 141, 19, 18, 17, 0, 0, 0, 5, 65, 20, 123, 0, 0, 0, 6, 195, 41, 50, 64, 72, 0, 0, 14, 69, 4, 229, 15,
-			56, 144, 35, 50, 47, 39, 50, 37, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 6, 195, 41, 51, 69, 72, 0, 6, 65, 28, 81, 123,
-			0, 0, 6, 195, 29, 0, 64, 17, 0, 11, 67, 64, 117, 80, 48, 131, 75, 35, 48, 0, 0, 0, 6, 65, 32, 107, 124, 0, 0, 14,
-			1, 33, 84, 37, 81, 133, 37, 76, 67, 121, 49, 0, 27, 0, 0, 10, 1, 35, 81, 133, 121, 90, 36, 49, 0, 0, 6, 65, 36, 121,
-			0, 14, 5, 193, 36, 72, 28, 0, 5, 194, 37, 0, 17, 13, 1, 37, 48, 51, 39, 117, 36, 50, 47, 39, 0, 27, 0, 12, 1, 38,
-			35, 65, 48, 44, 89, 36, 50, 47, 0, 0, 0, 7, 132, 12, 5, 196, 141, 8, 6, 65, 40, 57, 123, 0, 0, 0, 15, 1, 42, 107,
-			84, 57, 36, 88, 79, 37, 76, 49, 35, 0, 27, 15, 1, 42, 107, 84, 57, 36, 88, 79, 37, 76, 49, 35, 0, 27, 0, 9, 1, 43,
-			48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 124, 0, 14, 4, 193, 44, 28, 0, 6, 195, 45, 0, 64, 17, 0, 10, 1, 46, 47,
-			36, 76, 49, 35, 0, 27, 0, 10, 1, 47, 55, 39, 65, 36, 50, 39, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 7, 196, 88,
-			81, 12, 20, 8, 0, 6, 65, 52, 36, 65, 0, 0, 6, 195, 53, 0, 64, 17, 0, 9, 134, 2, 21, 4, 5, 197, 161, 72, 0, 0,
-			11, 136, 3, 8, 20, 196, 155, 10, 195, 173, 76, 8, 197, 9, 81, 5, 52, 80, 72, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 6,
-			65, 60, 125, 0, 14, 6, 193, 60, 72, 8, 23, 0, 10, 1, 61, 51, 39, 84, 50, 39, 0, 27, 0, 0, 10, 67, 76, 150, 133, 89,
-			35, 57, 88, 0, 0, 11, 1, 64, 88, 35, 84, 37, 50, 124, 76, 0, 6, 65, 64, 48, 123, 0, 0, 0, 6, 195, 20, 81, 192, 17,
-			0, 0, 7, 65, 68, 49, 84, 123, 0, 0, 0, 0, 7, 132, 13, 196, 155, 12, 76, 0, 6, 65, 72, 36, 51, 0, 0, 0, 0, 0,
-			7, 65, 76, 36, 89, 0, 14, 7, 65, 76, 89, 10, 0, 8, 10, 133, 16, 197, 153, 5, 4, 72, 8, 23, 0, 0, 0, 6, 195, 76,
-			144, 197, 8, 0, 6, 65, 80, 47, 123, 0, 0, 0, 6, 195, 4, 226, 64, 8, 0, 11, 67, 84, 226, 69, 40, 50, 37, 57, 36, 0,
-			6, 195, 52, 86, 137, 8, 0, 0, 7, 66, 85, 0, 35, 48, 0, 8, 133, 4, 195, 173, 11, 25, 8, 0, 0, 0, 12, 69, 12, 128,
-			78, 28, 80, 76, 131, 50, 75, 0, 7, 65, 88, 84, 123, 0, 14, 8, 197, 12, 128, 197, 80, 80, 76, 7, 65, 88, 84, 10, 0, 28,
-			0, 0, 0, 14, 4, 95, 49, 77, 52, 71, 6, 37, 55, 37, 125, 50, 0, 0, 11, 1, 92, 71, 36, 49, 89, 55, 36, 91, 0, 11,
-			65, 92, 72, 84, 6, 39, 57, 84, 123, 0, 0, 0, 11, 1, 94, 88, 72, 133, 121, 91, 49, 35, 0, 0, 0, 13, 4, 95, 49, 77,
-			49, 80, 6, 37, 89, 121, 117, 0, 7, 65, 96, 37, 49, 89, 0, 0, 14, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 125, 50, 0,
-			0, 16, 4, 95, 49, 77, 51, 65, 6, 37, 55, 37, 35, 51, 72, 35, 0, 0, 0, 9, 67, 16, 245, 206, 72, 127, 50, 0, 11, 65,
-			100, 37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 47, 0, 14, 7, 65, 104, 89, 10, 0, 28, 0, 0,
-			6, 195, 5, 65, 0, 17, 0, 11, 68, 5, 48, 201, 36, 35, 89, 49, 37, 0, 0, 0, 15, 70, 84, 229, 9, 80, 193, 68, 35, 50,
-			47, 37, 47, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 57, 52, 128, 17, 0, 0, 0, 0, 19, 71,
-			8, 19, 9, 77, 66, 75, 4, 71, 35, 55, 37, 89, 47, 37, 49, 35, 0, 9, 1, 126, 47, 37, 55, 72, 35, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 8, 196, 65, 35, 212, 36, 72, 8, 0, 0, 0, 6, 195, 13, 33, 0, 17, 0, 0, 0, 0, 8, 133, 196, 141,
-			19, 19, 18, 17, 0, 0, 0, 7, 132, 3, 15, 197, 190, 8, 0, 6, 195, 93, 34, 64, 17, 0, 0, 0, 0, 6, 195, 17, 2, 64,
-			17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 72, 196, 128, 17, 6, 195, 56, 68, 128, 17, 6, 195, 8, 196, 128,
-			17, 0, 0, 0, 0, 6, 195, 73, 52, 192, 17, 0, 0, 0, 0, 0, 6, 195, 41, 51, 213, 72, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 84, 102, 128, 17, 0, 0, 14, 67, 16, 51, 0, 72, 36, 117, 37, 55, 37, 47, 44, 0, 0, 0, 0, 0, 0, 9, 198, 56, 20,
-			18, 61, 66, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 72, 192, 192, 17, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
-			85, 97, 128, 17, 0, 6, 195, 9, 81, 5, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 4, 16, 20, 9,
-			76, 124, 51, 49, 35, 10, 0, 0, 0, 5, 194, 9, 144, 72, 5, 194, 9, 144, 72, 0, 0, 6, 195, 9, 81, 21, 72, 0, 6, 195,
-			9, 147, 0, 72, 0, 0, 0, 0, 0, 7, 66, 12, 128, 101, 124, 0, 0, 0, 13, 4, 95, 20, 12, 4, 80, 6, 37, 55, 72, 35,
-			0, 10, 3, 95, 35, 57, 47, 6, 35, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 61, 165, 128, 17, 0, 0,
-			0, 0, 16, 70, 21, 128, 200, 4, 225, 197, 37, 49, 89, 76, 131, 50, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 76, 52, 143, 48, 192, 89, 49, 34, 125, 55, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 195, 56, 80, 143, 72, 8, 0, 0, 6, 195, 45, 35, 205, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 57, 83, 64,
-			50, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 52, 128, 17, 0, 0, 13, 69, 12, 19, 131, 20, 192, 49, 36, 50,
-			89, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 66, 12, 208, 117, 36, 50, 47, 37, 65, 36, 47, 44, 0,
-			6, 195, 8, 86, 133, 8, 0, 0, 0, 0, 0, 7, 195, 8, 86, 128, 8, 23, 0, 0, 0, 0, 0, 7, 196, 44, 243, 5, 52, 8,
-			0, 6, 195, 44, 193, 18, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 60, 65, 64, 72, 28, 9, 3,
-			226, 130, 172, 128, 51, 39, 0, 0, 0, 8, 195, 76, 180, 154, 72, 28, 23, 0, 9, 67, 64, 17, 197, 48, 131, 75, 0, 6, 131, 196,
-			141, 1, 17, 0, 0, 8, 133, 13, 195, 161, 197, 161, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 9, 81, 5, 80, 80, 72,
-			11, 3, 95, 50, 6, 72, 84, 57, 6, 36, 0, 0, 12, 66, 29, 112, 81, 37, 81, 35, 84, 35, 47, 0, 0, 6, 195, 61, 51, 128,
-			17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 52, 128, 17, 6, 195, 8, 84, 192, 17, 0, 0, 0, 14, 4,
-			95, 13, 3, 14, 65, 6, 35, 49, 51, 39, 50, 0, 0, 0, 0, 0, 6, 195, 76, 52, 201, 17, 0, 0, 0, 0, 7, 194, 16, 240,
-			72, 28, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 196, 141, 18, 17, 0, 13, 66, 44, 32, 49,
-			37, 55, 39, 71, 35, 57, 47, 0, 0, 13, 3, 95, 51, 88, 47, 134, 6, 37, 117, 36, 47, 0, 0, 10, 3, 95, 48, 67, 89, 6,
-			36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 84, 129, 128, 17, 0, 10, 3, 95, 49, 67, 89, 47, 6, 39, 0, 0, 0, 0,
-			0, 0, 0, 5, 194, 40, 80, 72, 17, 3, 95, 49, 57, 72, 6, 36, 84, 35, 47, 36, 50, 124, 117, 47, 0, 0, 15, 3, 95, 49,
-			56, 6, 39, 89, 40, 65, 50, 124, 117, 47, 0, 0, 15, 3, 95, 50, 67, 72, 84, 57, 6, 36, 89, 80, 6, 36, 0, 0, 0, 0,
-			0, 0, 0, 15, 3, 95, 49, 49, 57, 6, 36, 72, 36, 50, 124, 117, 47, 0, 0, 6, 195, 65, 35, 64, 17, 12, 3, 95, 49, 48,
-			72, 6, 36, 89, 36, 47, 0, 0, 14, 3, 95, 51, 67, 47, 134, 6, 37, 89, 47, 6, 35, 0, 14, 3, 95, 49, 51, 47, 134, 6,
-			37, 50, 124, 117, 47, 0, 0, 14, 3, 95, 49, 50, 72, 84, 6, 35, 50, 124, 117, 47, 0, 0, 14, 3, 95, 49, 53, 48, 6, 35,
-			47, 50, 124, 117, 47, 0, 0, 6, 195, 81, 35, 64, 17, 14, 3, 95, 49, 52, 76, 47, 6, 44, 50, 124, 117, 47, 0, 0, 16, 3,
-			95, 49, 55, 89, 6, 36, 72, 40, 65, 50, 124, 117, 47, 0, 0, 15, 3, 95, 49, 54, 91, 6, 36, 89, 47, 50, 124, 117, 47, 0,
-			0, 0, 17, 3, 95, 55, 88, 89, 6, 36, 72, 40, 65, 72, 36, 89, 124, 47, 0, 0, 15, 3, 95, 52, 67, 76, 47, 37, 133, 37,
-			89, 47, 6, 35, 0, 0, 0, 0, 0, 0, 0, 9, 66, 33, 160, 107, 36, 51, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
-			67, 52, 134, 128, 65, 36, 81, 35, 107, 36, 51, 117, 0, 0, 7, 196, 9, 148, 212, 20, 72, 7, 196, 64, 241, 12, 20, 8, 0, 0,
-			0, 9, 132, 16, 197, 153, 9, 72, 8, 23, 0, 0, 0, 0, 13, 3, 95, 50, 88, 72, 84, 6, 35, 117, 36, 47, 0, 0, 15, 5,
-			95, 48, 77, 65, 49, 80, 6, 37, 89, 121, 117, 36, 0, 0, 0, 17, 5, 95, 48, 77, 65, 51, 65, 6, 37, 55, 37, 35, 51, 72,
-			37, 0, 0, 16, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55, 37, 125, 50, 37, 0, 0, 0, 16, 5, 95, 48, 77, 65, 52, 71, 6,
-			37, 55, 37, 125, 50, 37, 0, 0, 13, 66, 28, 224, 81, 37, 81, 35, 67, 40, 47, 50, 0, 0, 6, 195, 88, 112, 64, 17, 0, 11,
-			68, 48, 22, 133, 72, 55, 131, 88, 44, 0, 0, 0, 0, 0, 6, 195, 52, 147, 79, 8, 12, 3, 95, 63, 63, 89, 37, 65, 71, 39,
-			55, 0, 0, 0, 0, 15, 3, 95, 52, 88, 76, 47, 6, 37, 133, 37, 117, 36, 47, 0, 0, 0, 0, 0, 0, 0, 8, 195, 56, 17,
-			0, 72, 8, 23, 0, 7, 194, 56, 16, 72, 28, 23, 0, 6, 195, 64, 50, 64, 17, 14, 3, 95, 53, 88, 48, 6, 35, 72, 36, 89,
-			124, 47, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 52, 210, 17, 0, 12, 66, 45, 112, 49, 37, 55, 39, 84, 35, 47, 0, 0, 14,
-			3, 95, 54, 88, 91, 6, 36, 72, 36, 89, 124, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 68, 192, 17, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 3, 95, 56, 88, 6, 39, 89, 40, 65, 72, 36, 89, 124, 47, 0, 0, 0, 0, 6, 195, 77, 69, 129, 17,
-			0, 6, 195, 17, 37, 128, 17, 0, 0, 0, 0, 16, 3, 95, 57, 88, 72, 6, 36, 84, 35, 72, 36, 89, 124, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 131, 13, 195, 161, 76, 10, 3, 95, 63, 65, 88, 50, 35, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 14, 4, 95, 15, 7, 15, 6, 39, 81, 39, 50, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 13, 195, 161,
-			13, 5, 76, 0, 0, 0, 0, 0, 9, 134, 3, 8, 3, 5, 197, 161, 76, 0, 0, 0, 0, 0, 0, 8, 197, 9, 144, 200, 60, 208,
-			72, 0, 0, 8, 195, 65, 35, 192, 72, 8, 23, 0, 15, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 125, 50, 126, 0, 0, 0, 15,
-			4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 125, 50, 126, 0, 0, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55, 37, 35, 51, 72, 0,
-			0, 0, 13, 4, 95, 48, 77, 49, 80, 6, 37, 89, 121, 117, 0, 0, 7, 194, 60, 64, 72, 28, 23, 15, 4, 95, 2, 18, 22, 6,
-			39, 71, 55, 129, 76, 36, 49, 0, 0, 0, 0, 12, 69, 56, 85, 212, 60, 224, 67, 126, 47, 50, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 66, 44, 208, 49, 37, 55, 39, 65, 36, 47, 44, 0, 5, 194, 52, 144, 72, 0, 0, 0, 13, 69, 16,
-			83, 5, 80, 80, 72, 37, 55, 121, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 44, 224, 49, 37, 55,
-			39, 67, 40, 47, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 195, 16, 193, 64, 72, 8, 23, 0, 0, 0, 0, 0, 7, 196,
-			60, 179, 204, 60, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 35, 64, 17, 0, 0, 0, 15, 4, 95, 3, 9,
-			18, 89, 47, 133, 6, 121, 91, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 76, 180, 154, 20, 72, 8, 0, 0,
-			0, 19, 4, 95, 19, 20, 11, 91, 6, 37, 49, 65, 124, 76, 6, 124, 51, 49, 35, 0, 0, 0, 13, 4, 95, 1, 3, 21, 76, 6,
-			124, 51, 49, 35, 0, 0, 0, 0, 0, 0, 5, 194, 72, 48, 17, 0, 0, 0, 0, 0, 14, 4, 95, 18, 14, 7, 49, 51, 6, 129,
-			90, 36, 49, 0, 0, 0, 0, 5, 194, 73, 48, 17, 0, 19, 67, 33, 69, 16, 107, 124, 47, 36, 47, 36, 48, 123, 0, 81, 58, 47,
-			47, 32, 0, 0, 0, 7, 132, 196, 141, 1, 22, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 64, 64, 17, 0, 0, 0,
-			5, 194, 77, 32, 17, 0, 0, 7, 195, 56, 17, 5, 72, 8, 0, 0, 18, 4, 95, 1, 3, 50, 72, 84, 57, 6, 36, 76, 6, 124,
-			51, 49, 37, 0, 0, 0, 0, 0, 0, 6, 195, 60, 177, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 195, 64, 68, 128, 17, 0, 0, 0, 0, 6, 195, 64, 196, 128, 17, 0, 0, 9, 2, 195, 151, 49, 51, 124, 47, 0, 7, 2,
-			196, 143, 79, 123, 0, 0, 0, 7, 2, 196, 141, 76, 123, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 48, 35, 51, 35, 81, 51,
-			35, 83, 0, 0, 5, 194, 60, 208, 17, 5, 194, 76, 80, 72, 0, 0, 0, 0, 10, 3, 5, 46, 7, 50, 35, 48, 133, 0, 7, 2,
-			197, 136, 36, 67, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 196, 155, 37, 57, 36, 0, 0, 0, 14, 2, 194, 169, 49, 6, 39, 48,
-			37, 51, 35, 57, 47, 0, 13, 2, 195, 161, 72, 55, 6, 129, 107, 123, 4, 124, 0, 0, 7, 132, 2, 195, 189, 20, 72, 0, 0, 0,
-			13, 2, 195, 173, 72, 55, 6, 129, 107, 123, 4, 121, 0, 0, 0, 5, 130, 195, 171, 43, 0, 8, 133, 13, 195, 161, 20, 5, 76, 11,
-			2, 194, 176, 89, 47, 40, 48, 36, 67, 0, 0, 6, 195, 12, 112, 64, 17, 7, 2, 197, 153, 36, 133, 0, 13, 2, 195, 169, 72, 55,
-			6, 129, 107, 123, 4, 123, 0, 0, 5, 130, 195, 182, 43, 0, 12, 69, 76, 80, 82, 12, 128, 89, 36, 51, 76, 0, 11, 2, 195, 183,
-			79, 36, 55, 36, 50, 39, 0, 0, 5, 194, 73, 128, 17, 7, 2, 195, 180, 40, 125, 0, 0, 7, 2, 197, 165, 80, 123, 0, 0, 14,
-			4, 95, 3, 5, 4, 117, 6, 36, 79, 37, 55, 35, 0, 0, 13, 2, 195, 179, 72, 55, 6, 129, 107, 123, 4, 125, 0, 0, 0, 17,
-			4, 95, 12, 9, 7, 55, 6, 37, 81, 35, 47, 4, 40, 51, 35, 0, 7, 2, 197, 161, 36, 91, 0, 0, 0, 17, 2, 197, 175, 6,
-			126, 89, 10, 49, 51, 6, 129, 90, 49, 36, 65, 0, 0, 5, 130, 195, 188, 43, 0, 6, 195, 5, 34, 128, 17, 18, 2, 195, 189, 72,
-			55, 6, 129, 123, 4, 37, 48, 89, 37, 55, 39, 50, 0, 0, 13, 2, 195, 186, 72, 55, 6, 129, 107, 123, 4, 126, 0, 0, 0, 0,
-			0, 7, 2, 196, 190, 36, 61, 0, 0, 0, 0, 0, 14, 2, 196, 186, 72, 55, 6, 129, 107, 123, 4, 36, 55, 0, 0, 0, 6, 195,
-			92, 116, 15, 17, 0, 0, 6, 195, 9, 147, 1, 72, 8, 2, 197, 190, 90, 36, 47, 0, 0, 0, 6, 195, 9, 147, 15, 72, 0, 0,
-			0, 0, 0, 0, 6, 195, 9, 147, 9, 72, 0, 0, 0, 0, 7, 196, 9, 81, 15, 84, 72, 6, 131, 1, 196, 141, 8, 0, 0, 0,
-			0, 0, 0, 7, 194, 64, 240, 72, 8, 23, 5, 194, 76, 144, 72, 0, 8, 195, 64, 241, 0, 72, 8, 23, 0, 0, 0, 0, 0, 6,
-			195, 9, 147, 25, 72, 0, 0, 0, 6, 2, 95, 1, 124, 0, 0, 0, 0, 0, 0, 7, 2, 95, 11, 49, 124, 0, 0, 0, 6, 2,
-			95, 9, 121, 0, 0, 0, 6, 195, 5, 32, 192, 17, 6, 2, 95, 15, 125, 0, 0, 0, 0, 0, 6, 195, 85, 48, 64, 17, 7, 2,
-			95, 19, 36, 89, 0, 0, 0, 0, 0, 0, 7, 2, 95, 22, 84, 123, 0, 0, 6, 2, 95, 21, 126, 0, 0, 0, 0, 8, 2, 95,
-			26, 88, 36, 47, 0, 0, 0, 7, 131, 197, 190, 5, 72, 8, 5, 194, 80, 144, 72, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 40,
-			84, 39, 88, 39, 84, 49, 37, 0, 0, 0, 0, 13, 2, 95, 39, 35, 48, 39, 89, 47, 51, 39, 83, 0, 0, 0, 0, 10, 2, 95,
-			36, 72, 39, 55, 124, 51, 0, 0, 0, 12, 4, 95, 3, 1, 16, 84, 36, 55, 49, 123, 0, 0, 18, 2, 95, 41, 88, 124, 84, 39,
-			34, 49, 35, 88, 35, 84, 133, 121, 47, 0, 0, 12, 2, 95, 40, 88, 124, 84, 39, 51, 49, 35, 0, 0, 6, 195, 52, 180, 128, 17,
-			0, 10, 2, 95, 46, 47, 36, 76, 49, 35, 0, 0, 10, 2, 95, 45, 65, 121, 50, 40, 89, 0, 0, 10, 2, 95, 44, 76, 124, 51,
-			49, 35, 0, 0, 8, 2, 95, 51, 47, 134, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 11, 2, 95, 49, 57, 6, 36,
-			72, 36, 50, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 35, 0, 0, 6, 195, 84, 181, 128, 17, 11, 2, 95, 55, 89, 6, 36, 72,
-			40, 65, 0, 0, 10, 2, 95, 54, 91, 6, 36, 89, 47, 0, 0, 10, 2, 95, 53, 48, 6, 57, 36, 47, 0, 0, 11, 2, 95, 52,
-			76, 47, 6, 37, 133, 37, 0, 0, 13, 2, 95, 59, 88, 72, 133, 36, 72, 67, 121, 49, 0, 0, 15, 2, 95, 58, 72, 84, 6, 39,
-			57, 47, 36, 76, 49, 35, 0, 0, 12, 2, 95, 57, 72, 6, 36, 84, 57, 36, 47, 0, 0, 10, 2, 95, 56, 6, 39, 89, 40, 65,
-			0, 0, 12, 2, 95, 63, 39, 47, 35, 88, 67, 121, 49, 0, 0, 10, 2, 95, 62, 84, 57, 36, 76, 121, 0, 0, 8, 197, 12, 128,
-			197, 52, 80, 76, 0, 10, 2, 95, 60, 65, 36, 50, 91, 121, 0, 0, 0, 8, 133, 13, 1, 10, 195, 173, 76, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 177, 192, 17, 0, 13, 4, 95, 4, 15, 20, 47, 6, 36,
-			76, 49, 35, 0, 0, 0, 0, 6, 195, 4, 193, 64, 8, 22, 2, 95, 91, 107, 51, 6, 35, 50, 35, 47, 124, 15, 88, 6, 124, 84,
-			39, 51, 49, 35, 0, 0, 0, 0, 7, 194, 104, 16, 72, 8, 23, 0, 14, 2, 95, 95, 48, 39, 47, 47, 44, 90, 36, 67, 121, 0,
-			0, 0, 21, 2, 95, 93, 107, 51, 6, 35, 50, 35, 47, 124, 15, 88, 6, 35, 84, 133, 121, 47, 0, 0, 0, 0, 0, 0, 22, 2,
-			95, 96, 6, 39, 71, 51, 124, 117, 4, 36, 50, 124, 15, 76, 6, 124, 51, 49, 35, 0, 0, 9, 134, 13, 195, 173, 19, 20, 15, 8,
-			0, 0, 8, 133, 196, 141, 22, 21, 20, 17, 0, 0, 0, 0, 0, 21, 4, 95, 7, 18, 22, 80, 6, 36, 91, 49, 121, 38, 6, 35,
-			49, 117, 36, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 2, 95, 123, 89, 55, 6, 39, 90, 36, 50,
-			124, 15, 88, 6, 124, 84, 39, 51, 49, 35, 0, 13, 4, 95, 4, 9, 1, 47, 51, 6, 36, 65, 35, 0, 0, 0, 0, 8, 133, 22,
-			197, 161, 1, 11, 8, 0, 0, 10, 68, 64, 245, 197, 72, 48, 127, 44, 0, 0, 21, 2, 95, 125, 89, 55, 6, 39, 90, 36, 50, 124,
-			15, 88, 6, 35, 84, 133, 121, 47, 0, 0, 18, 2, 95, 124, 89, 84, 6, 37, 89, 55, 124, 15, 76, 6, 124, 51, 35, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 196, 141, 12, 1, 17, 0, 0, 0, 0, 12, 67, 21, 48, 192, 37, 89, 49,
-			36, 37, 48, 0, 0, 0, 0, 7, 195, 64, 241, 5, 72, 8, 0, 0, 0, 0, 14, 4, 95, 35, 51, 50, 65, 6, 36, 88, 36, 51,
-			35, 0, 0, 6, 195, 9, 144, 200, 72, 0, 0, 0, 7, 132, 196, 141, 12, 18, 17, 7, 194, 104, 80, 72, 28, 23, 0, 0, 0, 0,
-			0, 0, 0, 0, 14, 70, 61, 85, 12, 60, 242, 192, 127, 47, 55, 126, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52,
-			196, 128, 17, 0, 0, 0, 0, 6, 195, 9, 148, 192, 72, 0, 0, 0, 0, 12, 67, 93, 117, 192, 84, 123, 84, 123, 84, 123, 0, 6,
-			195, 60, 133, 128, 17, 0, 0, 0, 0, 0, 19, 67, 12, 20, 19, 49, 35, 48, 89, 55, 39, 49, 0, 81, 108, 111, 99, 107, 32, 0,
-			0, 0, 14, 67, 28, 134, 128, 81, 37, 81, 35, 107, 36, 34, 117, 0, 0, 0, 12, 67, 64, 113, 14, 48, 131, 75, 72, 127, 50, 0,
-			0, 0, 14, 67, 44, 134, 128, 49, 37, 55, 39, 107, 36, 34, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12,
-			128, 197, 76, 0, 6, 195, 60, 128, 192, 17, 7, 132, 13, 195, 161, 13, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 196,
-			141, 19, 1, 4, 17, 0, 6, 195, 12, 128, 201, 76, 0, 6, 195, 21, 65, 128, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 67, 32, 243, 69, 107, 129, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 196, 141, 19, 6, 18, 17,
-			0, 0, 0, 0, 0, 0, 14, 69, 36, 228, 197, 73, 64, 37, 50, 88, 36, 51, 47, 0, 0, 6, 195, 41, 53, 5, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 100, 105, 0, 4, 1, 97, 2, 107, 3, 72, 37, 0, 1, 97, 108, 2, 115,
-			0, 1, 97, 114, 116, 2, 99, 0, 1, 101, 109, 0, 1, 101, 112, 111, 116, 2, 99, 0, 1, 101, 114, 107, 2, 116, 0, 1, 105, 109,
-			0, 1, 108, 97, 114, 0, 1, 110, 2, 99, 0, 1, 110, 97, 2, 100, 0, 1, 110, 97, 109, 2, 116, 0, 1, 110, 105, 0, 1, 111,
-			2, 99, 0, 1, 111, 105, 114, 2, 99, 0, 1, 111, 107, 2, 102, 105, 0, 1, 111, 116, 101, 0, 1, 114, 97, 100, 2, 122, 0, 1,
-			114, 111, 0, 1, 155, 196, 109, 0, 1, 169, 195, 109, 0, 2, 97, 0, 2, 97, 32, 0, 2, 101, 0, 2, 103, 105, 0, 2, 106, 0,
-			2, 107, 0, 2, 110, 105, 107, 0, 2, 111, 0, 2, 114, 0, 2, 115, 99, 105, 112, 0, 2, 115, 107, 0, 2, 115, 109, 0, 2, 115,
-			112, 0, 2, 115, 116, 0, 2, 115, 116, 0, 2, 116, 105, 107, 0, 2, 117, 0, 2, 117, 109, 32, 0, 8, 2, 99, 104, 0, 8, 2,
-			102, 0, 8, 2, 103, 0, 8, 2, 108, 101, 116, 0, 8, 2, 109, 101, 0, 8, 2, 109, 105, 0, 8, 2, 112, 0, 8, 2, 115, 0,
-			8, 2, 118, 97, 110, 0, 8, 2, 118, 101, 114, 0, 8, 2, 118, 105, 100, 0, 8, 2, 122, 0, 8, 2, 195, 161, 0, 8, 97, 108,
-			103, 0, 8, 97, 114, 116, 0, 8, 101, 0, 8, 101, 110, 2, 112, 0, 8, 101, 112, 120, 101, 0, 8, 108, 111, 112, 0, 8, 110, 97,
-			99, 115, 0, 8, 111, 2, 110, 115, 116, 0, 8, 111, 109, 0, 8, 114, 97, 107, 0, 8, 114, 97, 115, 0, 8, 117, 97, 0, 99, 107,
-			8, 3, 72, 37, 49, 0, 4, 2, 101, 32, 3, 72, 37, 57, 0, 2, 101, 32, 0, 2, 105, 32, 0, 2, 111, 32, 0, 2, 117, 32,
-			0, 8, 2, 97, 0, 115, 116, 105, 2, 99, 3, 72, 37, 89, 47, 37, 0, 115, 107, 114, 101, 100, 105, 3, 72, 37, 89, 49, 14, 16,
-			36, 72, 37, 0, 115, 99, 111, 8, 3, 72, 37, 89, 49, 39, 0, 4, 1, 101, 153, 197, 2, 115, 107, 3, 79, 37, 0, 1, 111, 104,
-			99, 2, 115, 0, 8, 2, 114, 99, 0, 8, 2, 114, 107, 0, 8, 2, 118, 105, 122, 110, 97, 0, 8, 2, 118, 105, 122, 110, 121, 0,
-			8, 101, 108, 104, 0, 7, 6, 110, 105, 0, 4, 1, 97, 2, 100, 3, 50, 37, 0, 1, 97, 2, 107, 0, 1, 97, 2, 107, 111, 118,
-			0, 1, 97, 2, 122, 0, 1, 97, 103, 114, 111, 110, 97, 0, 1, 97, 104, 99, 2, 99, 0, 1, 97, 104, 99, 2, 107, 0, 1, 97,
-			104, 99, 101, 2, 115, 0, 1, 97, 109, 2, 102, 0, 1, 97, 109, 2, 112, 0, 1, 97, 109, 114, 101, 0, 1, 97, 110, 2, 115, 0,
-			1, 101, 2, 107, 0, 1, 101, 2, 115, 0, 1, 101, 103, 0, 1, 101, 108, 97, 2, 116, 0, 1, 101, 108, 101, 2, 116, 0, 1, 101,
-			122, 2, 116, 0, 1, 103, 2, 116, 0, 1, 105, 2, 99, 105, 0, 1, 105, 2, 107, 0, 1, 105, 2, 116, 0, 1, 105, 102, 101, 0,
-			1, 105, 108, 107, 0, 1, 105, 109, 0, 1, 107, 2, 112, 0, 1, 111, 2, 100, 0, 1, 111, 2, 107, 0, 1, 111, 2, 115, 0, 1,
-			111, 100, 2, 99, 0, 1, 111, 102, 2, 99, 0, 1, 111, 103, 0, 1, 111, 103, 97, 116, 2, 115, 0, 1, 111, 109, 101, 114, 101, 0,
-			1, 111, 109, 114, 97, 104, 0, 1, 111, 110, 2, 109, 0, 1, 111, 114, 2, 99, 0, 1, 111, 114, 100, 110, 101, 0, 1, 111, 114, 104,
-			99, 110, 121, 115, 0, 1, 111, 114, 105, 0, 1, 111, 116, 107, 0, 1, 117, 2, 116, 0, 1, 117, 109, 2, 107, 0, 1, 117, 109, 2,
-			115, 0, 1, 117, 109, 111, 107, 0, 1, 117, 116, 2, 115, 0, 1, 169, 195, 103, 0, 2, 97, 32, 0, 2, 97, 107, 0, 2, 107, 108,
-			0, 2, 110, 105, 107, 0, 2, 115, 109, 0, 2, 115, 116, 0, 2, 116, 105, 107, 0, 2, 117, 109, 32, 0, 2, 122, 117, 106, 0, 8,
-			2, 108, 0, 8, 2, 116, 114, 111, 0, 8, 97, 2, 109, 0, 8, 97, 103, 114, 111, 0, 8, 97, 107, 2, 98, 0, 8, 97, 109, 117,
-			104, 0, 8, 97, 110, 2, 116, 114, 0, 8, 97, 112, 2, 99, 107, 0, 8, 97, 115, 2, 116, 0, 8, 97, 116, 111, 98, 0, 8, 97,
-			118, 108, 97, 103, 0, 8, 101, 105, 103, 121, 104, 0, 8, 101, 115, 2, 108, 0, 8, 101, 116, 2, 115, 0, 8, 111, 98, 101, 0, 8,
-			111, 108, 111, 107, 0, 8, 111, 109, 0, 8, 116, 101, 2, 99, 0, 8, 117, 0, 8, 117, 109, 0, 8, 117, 109, 105, 2, 116, 0, 8,
-			121, 99, 0, 8, 169, 195, 114, 116, 0, 116, 105, 1, 105, 102, 3, 50, 37, 47, 37, 0, 107, 111, 116, 105, 8, 3, 50, 37, 49, 39,
-			47, 37, 0, 4, 2, 101, 32, 3, 50, 37, 57, 0, 2, 105, 32, 0, 2, 111, 32, 0, 2, 117, 32, 0, 2, 195, 173, 0, 4, 1,
-			97, 122, 2, 107, 3, 67, 37, 0, 1, 100, 111, 112, 2, 107, 0, 1, 100, 117, 111, 108, 0, 1, 105, 118, 2, 116, 0, 1, 105, 141,
-			196, 2, 116, 0, 1, 106, 111, 116, 115, 0, 1, 111, 114, 112, 2, 107, 0, 1, 117, 2, 107, 0, 1, 118, 2, 107, 108, 0, 1, 122,
-			118, 2, 107, 0, 1, 153, 197, 111, 109, 161, 195, 110, 0, 8, 2, 116, 114, 111, 32, 0, 8, 97, 104, 99, 173, 195, 109, 0, 8, 105,
-			108, 104, 2, 116, 0, 8, 111, 114, 98, 0, 7, 6, 116, 105, 0, 4, 109, 101, 2, 32, 3, 47, 35, 57, 65, 0, 109, 101, 8, 0,
-			4, 1, 97, 2, 99, 3, 47, 37, 0, 1, 97, 2, 107, 0, 1, 97, 2, 110, 0, 1, 97, 2, 118, 0, 1, 97, 2, 122, 0, 1,
-			97, 109, 2, 99, 107, 0, 1, 97, 109, 2, 107, 97, 0, 1, 97, 109, 97, 2, 99, 0, 1, 97, 109, 97, 2, 107, 0, 1, 97, 109,
-			97, 114, 100, 0, 1, 97, 109, 101, 2, 99, 0, 1, 97, 109, 101, 2, 107, 0, 1, 97, 109, 111, 114, 97, 0, 1, 97, 109, 111, 116,
-			2, 99, 0, 1, 97, 109, 117, 2, 99, 0, 1, 97, 112, 97, 2, 99, 0, 1, 97, 112, 97, 2, 196, 141, 0, 1, 97, 112, 109, 111,
-			2, 98, 0, 1, 97, 112, 109, 121, 0, 1, 101, 2, 99, 0, 1, 101, 2, 107, 0, 1, 101, 2, 118, 0, 1, 101, 2, 122, 0, 1,
-			101, 107, 114, 97, 2, 110, 103, 0, 1, 101, 110, 2, 99, 0, 1, 101, 114, 111, 101, 2, 99, 0, 1, 105, 2, 107, 0, 1, 105, 103,
-			2, 109, 0, 1, 105, 108, 2, 99, 0, 1, 105, 109, 105, 114, 2, 118, 0, 1, 105, 110, 97, 118, 2, 116, 0, 1, 105, 114, 2, 99,
-			0, 1, 105, 114, 2, 107, 0, 1, 105, 114, 107, 0, 1, 105, 118, 114, 0, 1, 107, 2, 118, 0, 1, 107, 97, 0, 1, 107, 101, 0,
-			1, 107, 114, 0, 1, 108, 117, 107, 2, 118, 0, 1, 110, 2, 99, 0, 1, 110, 2, 110, 0, 1, 110, 97, 2, 107, 0, 1, 110, 97,
-			2, 108, 0, 1, 110, 97, 2, 115, 0, 1, 110, 101, 2, 110, 0, 1, 110, 101, 118, 2, 108, 0, 1, 110, 105, 2, 109, 0, 1, 110,
-			111, 107, 0, 1, 111, 2, 107, 0, 1, 111, 98, 2, 122, 0, 1, 111, 109, 2, 118, 0, 1, 111, 114, 2, 107, 0, 1, 111, 114, 101,
-			2, 99, 0, 1, 111, 120, 2, 107, 0, 1, 112, 101, 2, 107, 0, 1, 112, 111, 0, 1, 114, 2, 122, 0, 1, 114, 111, 2, 109, 0,
-			1, 115, 2, 107, 0, 1, 115, 2, 109, 117, 108, 0, 1, 115, 2, 112, 0, 1, 115, 101, 100, 2, 108, 0, 1, 115, 101, 103, 117, 115,
-			0, 1, 115, 101, 118, 110, 0, 1, 115, 111, 2, 99, 0, 1, 117, 2, 107, 0, 1, 117, 97, 0, 1, 120, 2, 108, 0, 1, 189, 195,
-			2, 99, 107, 0, 2, 97, 32, 0, 2, 99, 107, 0, 2, 102, 0, 2, 110, 105, 107, 0, 2, 115, 109, 0, 2, 115, 116, 0, 2, 116,
-			105, 107, 0, 2, 116, 117, 108, 0, 2, 117, 109, 32, 0, 8, 2, 98, 0, 8, 2, 99, 105, 0, 8, 2, 109, 98, 0, 8, 2, 110,
-			107, 0, 8, 2, 114, 97, 110, 0, 8, 2, 116, 97, 110, 0, 8, 2, 116, 117, 108, 0, 8, 2, 116, 195, 161, 110, 0, 8, 2, 120,
-			0, 8, 97, 108, 112, 2, 110, 0, 8, 97, 109, 103, 101, 108, 102, 0, 8, 97, 109, 169, 195, 116, 0, 8, 97, 115, 2, 114, 0, 8,
-			97, 115, 2, 197, 153, 0, 8, 101, 109, 115, 111, 107, 0, 8, 101, 112, 2, 196, 141, 0, 8, 105, 115, 111, 112, 0, 8, 108, 117, 2,
-			109, 0, 8, 108, 117, 109, 0, 8, 110, 97, 0, 8, 110, 97, 108, 116, 97, 0, 8, 110, 101, 99, 0, 8, 110, 101, 115, 0, 8, 110,
-			101, 118, 101, 114, 112, 0, 8, 110, 111, 107, 2, 110, 0, 8, 111, 108, 102, 0, 8, 112, 105, 108, 107, 101, 0, 8, 112, 111, 2, 99,
-			0, 8, 114, 101, 118, 2, 107, 0, 8, 115, 98, 97, 0, 8, 115, 101, 98, 0, 8, 115, 101, 108, 97, 112, 0, 8, 115, 101, 114, 2,
-			116, 0, 8, 115, 110, 105, 0, 8, 115, 110, 111, 107, 0, 8, 115, 117, 106, 0, 8, 117, 114, 0, 110, 105, 2, 117, 3, 47, 37, 50,
-			37, 57, 0, 4, 2, 101, 32, 3, 47, 37, 57, 0, 2, 105, 32, 0, 2, 111, 32, 0, 2, 117, 32, 0, 109, 111, 110, 105, 2, 116,
-			3, 47, 37, 65, 39, 50, 37, 0, 4, 115, 116, 105, 1, 97, 3, 47, 37, 89, 47, 37, 0, 115, 116, 105, 8, 97, 116, 115, 0, 4,
-			1, 97, 104, 99, 2, 99, 3, 80, 37, 0, 1, 97, 108, 2, 110, 0, 1, 97, 109, 2, 99, 0, 1, 99, 0, 1, 101, 99, 105, 153,
-			197, 0, 1, 101, 108, 112, 0, 1, 101, 153, 197, 2, 99, 0, 1, 104, 99, 101, 108, 0, 1, 111, 114, 2, 118, 0, 1, 112, 97, 2,
-			118, 0, 1, 114, 100, 0, 1, 115, 101, 161, 197, 0, 1, 115, 109, 0, 1, 115, 111, 100, 0, 1, 115, 111, 104, 0, 1, 115, 111, 107,
-			2, 99, 0, 1, 115, 161, 195, 2, 99, 0, 1, 155, 196, 2, 99, 0, 1, 155, 196, 112, 0, 1, 155, 196, 118, 2, 118, 0, 1, 161,
-			195, 115, 101, 100, 0, 1, 173, 195, 118, 101, 0, 8, 97, 109, 2, 110, 0, 8, 101, 99, 97, 118, 100, 0, 8, 101, 115, 101, 100, 0,
-			8, 111, 114, 112, 0, 8, 115, 97, 114, 116, 115, 0, 8, 121, 107, 2, 99, 0, 8, 155, 196, 116, 0, 7, 6, 195, 161, 0, 3, 124,
-			0, 7, 6, 195, 164, 0, 3, 36, 0, 7, 6, 195, 169, 0, 3, 123, 0, 7, 6, 195, 173, 0, 3, 121, 0, 7, 6, 195, 179, 0,
-			3, 125, 0, 7, 6, 195, 180, 0, 3, 40, 39, 0, 7, 6, 195, 186, 0, 3, 126, 0, 7, 6, 195, 189, 0, 3, 121, 0, 7, 6,
-			196, 141, 0, 3, 76, 0, 7, 6, 196, 143, 0, 4, 3, 79, 0, 2, 32, 17, 70, 0, 2, 32, 3, 80, 0, 7, 6, 196, 155, 0,
-			3, 36, 0, 7, 6, 196, 190, 0, 3, 61, 0, 7, 6, 197, 136, 0, 3, 67, 0, 7, 6, 197, 153, 0, 3, 133, 0, 4, 1, 102,
-			3, 134, 0, 1, 107, 0, 1, 112, 0, 1, 116, 0, 7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 165, 0, 3, 80, 0, 7, 6,
-			197, 175, 0, 3, 126, 0, 7, 6, 197, 190, 0, 4, 3, 90, 0, 2, 32, 17, 70, 0, 2, 32, 3, 91, 0, 7, 6, 97, 0, 3,
-			35, 0, 99, 107, 1, 114, 116, 3, 36, 49, 0, 117, 3, 127, 0, 105, 1, 109, 2, 108, 3, 131, 0, 103, 101, 1, 112, 3, 131, 75,
-			0, 115, 116, 101, 1, 112, 2, 32, 3, 131, 89, 47, 0, 7, 6, 98, 0, 2, 32, 3, 48, 0, 4, 3, 71, 0, 2, 32, 17, 70,
-			0, 97, 99, 107, 3, 71, 36, 49, 0, 196, 155, 3, 71, 57, 36, 0, 111, 97, 114, 100, 3, 71, 125, 34, 72, 0, 97, 115, 105, 99,
-			3, 71, 131, 88, 37, 49, 0, 7, 6, 99, 0, 4, 1, 101, 114, 2, 111, 3, 49, 0, 1, 115, 97, 112, 2, 97, 108, 0, 2, 117,
-			115, 0, 8, 2, 97, 108, 0, 8, 2, 108, 97, 117, 0, 8, 2, 111, 109, 0, 8, 2, 111, 114, 0, 8, 97, 109, 2, 114, 0, 8,
-			115, 2, 111, 0, 107, 1, 97, 112, 0, 107, 1, 111, 108, 0, 107, 8, 97, 112, 2, 97, 0, 114, 101, 97, 116, 105, 8, 3, 49, 34,
-			36, 35, 47, 37, 0, 111, 118, 101, 114, 3, 49, 35, 84, 44, 0, 97, 8, 115, 2, 110, 3, 49, 36, 0, 116, 114, 108, 3, 49, 39,
-			50, 47, 14, 16, 39, 55, 0, 111, 103, 110, 105, 1, 101, 114, 2, 116, 3, 49, 39, 81, 50, 37, 0, 104, 3, 101, 0, 3, 117, 0,
-			7, 6, 100, 0, 2, 32, 3, 47, 0, 4, 3, 72, 0, 2, 32, 17, 70, 0, 2, 105, 28, 17, 0, 2, 195, 173, 28, 17, 0, 4,
-			197, 190, 3, 75, 0, 197, 190, 2, 32, 17, 70, 0, 197, 190, 2, 32, 3, 76, 0, 4, 2, 105, 3, 79, 0, 2, 195, 173, 0, 2,
-			196, 155, 0, 122, 2, 32, 3, 117, 0, 4, 122, 3, 118, 0, 122, 2, 32, 17, 70, 0, 7, 6, 101, 0, 3, 36, 0, 121, 1, 107,
-			3, 121, 0, 117, 3, 128, 0, 106, 2, 25, 3, 131, 0, 7, 6, 102, 0, 3, 83, 0, 196, 155, 3, 83, 57, 36, 0, 7, 6, 103,
-			0, 2, 32, 3, 49, 0, 4, 3, 81, 0, 2, 32, 17, 70, 0, 7, 6, 104, 0, 2, 32, 3, 101, 0, 4, 3, 107, 0, 2, 32,
-			17, 70, 0, 7, 6, 105, 0, 97, 3, 2, 37, 35, 0, 101, 3, 2, 37, 36, 0, 117, 3, 2, 37, 40, 0, 103, 104, 116, 1, 17,
-			67, 3, 35, 57, 47, 0, 3, 37, 0, 97, 2, 32, 3, 37, 35, 0, 101, 2, 32, 3, 37, 57, 36, 0, 105, 2, 32, 3, 37, 57,
-			37, 0, 111, 2, 32, 3, 37, 57, 39, 0, 117, 2, 32, 3, 37, 57, 40, 0, 8, 2, 111, 110, 3, 57, 0, 7, 6, 106, 0, 3,
-			57, 0, 7, 6, 107, 0, 4, 3, 49, 0, 107, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3, 45, 0, 4, 3, 55, 0, 108, 0, 97,
-			115, 101, 114, 8, 3, 55, 131, 88, 34, 0, 7, 6, 109, 0, 3, 65, 0, 105, 99, 8, 2, 114, 111, 3, 65, 35, 57, 49, 0, 97,
-			110, 97, 103, 101, 114, 8, 3, 65, 36, 50, 36, 75, 44, 0, 101, 115, 115, 97, 103, 101, 8, 3, 65, 36, 89, 37, 75, 0, 196, 155,
-			3, 65, 67, 36, 0, 7, 6, 110, 0, 2, 110, 3, 0, 4, 3, 50, 0, 2, 105, 28, 17, 0, 2, 195, 173, 28, 17, 0, 4, 2,
-			105, 3, 67, 0, 2, 195, 173, 0, 2, 196, 155, 0, 101, 119, 3, 67, 126, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111,
-			0, 3, 39, 0, 105, 99, 101, 1, 118, 3, 39, 57, 89, 0, 4, 111, 1, 116, 2, 108, 3, 126, 0, 117, 1, 114, 103, 2, 112, 0,
-			4, 117, 3, 129, 0, 119, 8, 100, 110, 105, 119, 0, 7, 6, 112, 0, 4, 3, 48, 0, 112, 2, 17, 65, 32, 0, 196, 155, 3, 48,
-			57, 36, 0, 7, 6, 113, 0, 4, 3, 49, 84, 0, 117, 0, 7, 6, 114, 0, 1, 25, 2, 25, 3, 44, 0, 4, 3, 51, 0, 114,
-			0, 105, 103, 104, 116, 3, 51, 35, 57, 47, 0, 7, 6, 115, 0, 4, 1, 101, 2, 105, 100, 3, 88, 0, 8, 101, 114, 112, 2, 105,
-			100, 0, 4, 3, 89, 0, 115, 2, 17, 65, 32, 0, 115, 2, 32, 0, 101, 108, 101, 99, 2, 116, 3, 89, 37, 55, 36, 49, 0, 112,
-			97, 99, 101, 3, 89, 48, 131, 89, 0, 99, 97, 112, 101, 3, 89, 49, 131, 48, 0, 104, 105, 102, 116, 3, 91, 37, 83, 47, 0, 7,
-			6, 116, 0, 4, 3, 47, 0, 2, 105, 28, 17, 0, 2, 195, 173, 28, 17, 0, 116, 2, 17, 65, 32, 0, 116, 2, 32, 0, 4, 2,
-			105, 3, 80, 0, 2, 195, 173, 0, 2, 196, 155, 0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 3, 84, 0, 196, 155, 3, 84,
-			57, 36, 0, 7, 6, 119, 0, 3, 84, 0, 97, 118, 101, 3, 84, 131, 83, 0, 7, 6, 120, 0, 3, 49, 89, 0, 111, 116, 105, 1,
-			101, 2, 99, 3, 81, 88, 39, 47, 37, 0, 7, 6, 121, 0, 3, 37, 0, 2, 195, 173, 3, 37, 57, 0, 7, 6, 122, 0, 4, 3,
-			88, 0, 2, 32, 17, 70, 0, 2, 32, 3, 89, 0, 7, 6, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32,
-			17, 67, 2, 32, 15, 0, 195, 171, 3, 36, 0, 195, 188, 3, 37, 0, 197, 149, 3, 44, 0, 196, 186, 3, 45, 0, 45, 8, 32, 2,
-			32, 15, 3, 65, 121, 50, 40, 89, 0, 36, 3, 72, 39, 55, 124, 51, 0, 195, 182, 3, 123, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts8 = FileInMemory_createWithData (7614, reinterpret_cast<const char *> (&espeakdata_dicts8_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/cs_dict", 
+		static unsigned char espeakdata_dicts9_data[7566] = {
+			0, 4, 0, 0, 21, 17, 0, 0, 0, 0, 0, 0, 6, 194, 228, 80, 72, 8, 0, 6, 65, 4, 124, 0, 49, 6, 193, 4, 72, 28,
+			8, 0, 0, 6, 195, 12, 16, 128, 13, 0, 0, 6, 65, 8, 71, 123, 0, 0, 0, 0, 0, 6, 65, 12, 117, 123, 0, 0, 0, 0,
+			0, 6, 65, 16, 72, 123, 0, 0, 0, 0, 14, 4, 95, 100, 112, 116, 9, 76, 124, 51, 49, 35, 10, 0, 0, 5, 65, 20, 123, 0,
+			0, 0, 6, 195, 41, 50, 64, 72, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 10, 68, 64, 245, 197, 72, 48, 127, 44, 0, 0, 5,
+			194, 188, 16, 13, 0, 6, 195, 189, 101, 84, 13, 6, 65, 28, 81, 123, 0, 0, 6, 195, 29, 0, 64, 13, 0, 0, 0, 6, 65, 32,
+			107, 124, 0, 0, 14, 1, 33, 84, 37, 81, 133, 37, 76, 67, 121, 49, 0, 27, 0, 0, 10, 1, 35, 81, 133, 121, 90, 36, 49, 0,
+			0, 6, 65, 36, 121, 0, 49, 5, 193, 36, 72, 28, 0, 5, 194, 37, 0, 13, 13, 1, 37, 48, 51, 39, 117, 36, 50, 47, 39, 0,
+			27, 0, 12, 1, 38, 35, 65, 48, 44, 89, 36, 50, 47, 0, 12, 65, 112, 72, 55, 6, 129, 107, 123, 4, 124, 0, 0, 0, 6, 65,
+			40, 57, 123, 0, 0, 0, 15, 1, 42, 107, 84, 57, 36, 88, 79, 37, 76, 49, 35, 0, 27, 15, 1, 42, 107, 84, 57, 36, 88, 79,
+			37, 76, 49, 35, 0, 27, 0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 124, 0, 49, 6, 195, 9, 147, 25, 72,
+			4, 193, 44, 28, 0, 6, 195, 45, 0, 64, 13, 0, 10, 1, 46, 47, 36, 76, 49, 35, 0, 27, 0, 10, 1, 47, 55, 39, 65, 36,
+			50, 39, 0, 0, 13, 4, 95, 100, 105, 97, 47, 51, 6, 36, 65, 35, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52,
+			36, 65, 0, 0, 6, 195, 53, 0, 64, 13, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 6, 65, 60, 125, 0, 49, 6,
+			193, 60, 72, 8, 23, 0, 10, 1, 61, 51, 39, 84, 50, 39, 0, 27, 0, 0, 0, 11, 1, 64, 88, 35, 84, 37, 50, 124, 76, 0,
+			6, 65, 64, 48, 123, 0, 0, 0, 6, 195, 20, 81, 192, 13, 0, 0, 7, 65, 68, 49, 84, 123, 0, 0, 0, 0, 0, 6, 65, 72,
+			36, 51, 0, 0, 0, 0, 13, 4, 95, 100, 111, 116, 47, 6, 36, 76, 49, 35, 0, 0, 7, 65, 76, 36, 89, 0, 49, 7, 65, 76,
+			89, 10, 0, 8, 0, 0, 0, 0, 6, 65, 80, 47, 123, 0, 0, 0, 6, 195, 4, 226, 64, 8, 0, 0, 11, 136, 99, 104, 116, 196,
+			155, 106, 195, 173, 76, 0, 7, 66, 85, 0, 35, 48, 0, 0, 0, 19, 67, 33, 69, 16, 107, 124, 47, 36, 47, 36, 48, 123, 0, 81,
+			58, 47, 47, 32, 0, 7, 65, 88, 84, 123, 0, 49, 7, 65, 88, 84, 10, 0, 28, 0, 0, 0, 14, 4, 95, 49, 77, 52, 71, 6,
+			37, 55, 37, 125, 50, 0, 0, 11, 1, 92, 71, 36, 49, 89, 55, 36, 91, 0, 11, 65, 92, 72, 84, 6, 39, 57, 84, 123, 0, 0,
+			0, 11, 1, 94, 88, 72, 133, 121, 91, 49, 35, 0, 0, 0, 13, 4, 95, 49, 77, 49, 80, 6, 37, 89, 121, 117, 0, 7, 65, 96,
+			37, 49, 89, 0, 0, 14, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 125, 50, 0, 0, 16, 4, 95, 49, 77, 51, 65, 6, 37, 55,
+			37, 35, 51, 72, 35, 0, 0, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 47, 0,
+			49, 7, 65, 104, 89, 10, 0, 28, 0, 0, 6, 195, 5, 65, 0, 13, 0, 0, 6, 195, 189, 48, 68, 13, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 41, 49, 77, 72, 0, 0, 6, 195, 57, 52, 128, 13, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55,
+			72, 35, 0, 0, 13, 4, 95, 116, 108, 100, 80, 6, 37, 55, 72, 35, 0, 0, 0, 6, 195, 53, 197, 5, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 13, 33, 0, 13, 0, 0, 0, 0, 6, 195, 189, 52, 210, 13, 0, 0, 0, 8, 196, 65, 35, 212, 36, 72,
+			8, 0, 6, 195, 93, 34, 64, 13, 0, 0, 0, 0, 6, 195, 17, 2, 64, 13, 0, 0, 0, 6, 195, 188, 196, 128, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 69, 76, 52, 143, 48, 192, 89, 49, 34, 125, 55, 0, 0, 6, 195, 72, 196, 128, 13, 6, 195, 56, 68, 128,
+			13, 6, 195, 8, 196, 128, 13, 0, 0, 0, 0, 6, 195, 73, 52, 192, 13, 0, 0, 0, 0, 0, 0, 7, 195, 56, 17, 5, 72, 8,
+			7, 195, 64, 241, 5, 72, 8, 0, 0, 0, 0, 0, 0, 6, 195, 84, 102, 128, 13, 0, 0, 14, 67, 16, 51, 0, 72, 36, 117, 37,
+			55, 37, 47, 44, 0, 0, 14, 4, 95, 109, 99, 110, 65, 6, 35, 49, 51, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 195, 72, 192, 192, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 85, 97, 128, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 9, 81, 5, 212, 72, 0, 0, 0, 0, 0, 0, 0, 5, 194, 9, 144, 72, 5, 194, 9, 144, 72, 0, 7, 195, 56, 80,
+			143, 72, 8, 0, 0, 6, 195, 9, 147, 0, 72, 0, 0, 0, 0, 0, 7, 66, 12, 128, 101, 124, 0, 0, 0, 10, 3, 95, 35, 57,
+			47, 6, 35, 48, 0, 0, 0, 0, 0, 0, 6, 195, 45, 35, 205, 8, 0, 0, 0, 0, 0, 0, 6, 195, 61, 165, 128, 13, 12, 65,
+			136, 72, 55, 6, 129, 107, 123, 4, 123, 0, 0, 0, 0, 0, 0, 0, 5, 194, 189, 32, 13, 0, 0, 0, 0, 0, 6, 195, 188, 21,
+			128, 13, 0, 0, 0, 0, 0, 0, 6, 195, 9, 144, 200, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69,
+			4, 229, 15, 56, 144, 35, 50, 47, 39, 50, 37, 0, 0, 0, 0, 0, 7, 196, 12, 128, 197, 212, 76, 8, 197, 9, 144, 200, 60, 208,
+			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 57, 83, 64, 50, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
+			60, 52, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 41, 51, 69, 72, 4, 193, 144, 43, 0, 0, 0, 14,
+			66, 12, 208, 117, 36, 50, 47, 37, 65, 36, 47, 44, 0, 0, 0, 0, 0, 0, 7, 195, 8, 86, 128, 8, 23, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 14, 70, 61, 85, 12, 60, 242, 192, 127, 47, 55, 126, 49, 0, 0, 0, 0, 0, 0, 12, 65, 148,
+			72, 55, 6, 129, 107, 123, 4, 121, 0, 0, 0, 7, 195, 60, 65, 64, 72, 28, 9, 3, 226, 130, 172, 128, 51, 39, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 11, 67, 64, 117, 80, 48, 131, 75, 35, 48, 0, 0, 14, 4, 95, 111, 103, 111, 6, 39, 81, 39, 50, 36,
+			49, 0, 0, 0, 0, 0, 0, 12, 66, 29, 112, 81, 37, 81, 35, 84, 35, 47, 0, 0, 6, 195, 61, 51, 128, 13, 6, 195, 53, 195,
+			64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 52, 128, 13, 6, 195, 8, 84, 192, 13, 0, 0, 0, 15,
+			4, 95, 98, 114, 118, 6, 39, 71, 55, 129, 76, 36, 49, 0, 0, 0, 0, 0, 18, 4, 95, 97, 99, 50, 72, 84, 57, 6, 36, 76,
+			6, 124, 51, 49, 37, 0, 0, 0, 0, 0, 7, 194, 16, 240, 72, 28, 23, 0, 0, 12, 69, 56, 85, 212, 60, 224, 67, 126, 47, 50,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 12, 19, 131, 20, 192, 49, 36, 50, 89, 45, 0, 13, 66,
+			44, 32, 49, 37, 55, 39, 71, 35, 57, 47, 0, 0, 13, 3, 95, 51, 88, 47, 134, 6, 37, 117, 36, 47, 0, 0, 10, 3, 95, 48,
+			67, 89, 6, 36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 84, 129, 128, 13, 0, 10, 3, 95, 49, 67, 89, 47, 6, 39, 0,
+			0, 0, 0, 0, 15, 70, 84, 229, 9, 80, 193, 68, 35, 50, 47, 37, 47, 45, 0, 0, 0, 5, 194, 40, 80, 72, 17, 3, 95, 49,
+			57, 72, 6, 36, 84, 35, 47, 36, 50, 124, 117, 47, 0, 0, 15, 3, 95, 49, 56, 6, 39, 89, 40, 65, 50, 124, 117, 47, 0, 0,
+			15, 3, 95, 50, 67, 72, 84, 57, 6, 36, 89, 80, 6, 36, 0, 0, 0, 0, 9, 132, 112, 197, 153, 105, 72, 8, 23, 12, 65, 156,
+			72, 55, 6, 129, 107, 123, 4, 125, 0, 0, 0, 0, 15, 3, 95, 49, 49, 57, 6, 36, 72, 36, 50, 124, 117, 47, 0, 0, 6, 195,
+			65, 35, 64, 13, 6, 195, 48, 91, 192, 8, 12, 3, 95, 49, 48, 72, 6, 36, 89, 36, 47, 0, 0, 14, 3, 95, 51, 67, 47, 134,
+			6, 37, 89, 47, 6, 35, 0, 14, 3, 95, 49, 51, 47, 134, 6, 37, 50, 124, 117, 47, 0, 0, 14, 3, 95, 49, 50, 72, 84, 6,
+			35, 50, 124, 117, 47, 0, 0, 5, 194, 6, 240, 8, 14, 3, 95, 49, 53, 48, 6, 35, 47, 50, 124, 117, 47, 0, 0, 6, 195, 81,
+			35, 64, 13, 14, 3, 95, 49, 52, 76, 47, 6, 44, 50, 124, 117, 47, 0, 0, 7, 132, 98, 195, 189, 116, 72, 16, 3, 95, 49, 55,
+			89, 6, 36, 72, 40, 65, 50, 124, 117, 47, 0, 0, 15, 3, 95, 49, 54, 91, 6, 36, 89, 47, 50, 124, 117, 47, 0, 0, 0, 17,
+			3, 95, 55, 88, 89, 6, 36, 72, 40, 65, 72, 36, 89, 124, 47, 0, 0, 15, 3, 95, 52, 67, 76, 47, 37, 133, 37, 89, 47, 6,
+			35, 0, 0, 0, 0, 0, 0, 0, 9, 66, 33, 160, 107, 36, 51, 117, 0, 0, 0, 0, 0, 0, 13, 4, 95, 97, 99, 117, 76, 6,
+			124, 51, 49, 35, 0, 0, 0, 0, 0, 14, 67, 52, 134, 128, 65, 36, 81, 35, 107, 36, 51, 117, 0, 0, 4, 193, 160, 43, 0, 0,
+			0, 0, 0, 11, 3, 95, 50, 102, 72, 84, 57, 6, 36, 0, 0, 0, 6, 195, 41, 51, 213, 72, 13, 3, 95, 50, 88, 72, 84, 6,
+			35, 117, 36, 47, 0, 0, 15, 5, 95, 48, 77, 65, 49, 80, 6, 37, 89, 121, 117, 36, 0, 0, 0, 17, 5, 95, 48, 77, 65, 51,
+			65, 6, 37, 55, 37, 35, 51, 72, 37, 0, 0, 16, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55, 37, 125, 50, 37, 0, 0, 0, 16,
+			5, 95, 48, 77, 65, 52, 71, 6, 37, 55, 37, 125, 50, 37, 0, 0, 13, 66, 28, 224, 81, 37, 81, 35, 67, 40, 47, 50, 0, 0,
+			6, 195, 88, 112, 64, 13, 0, 0, 0, 0, 0, 12, 3, 95, 63, 63, 89, 37, 65, 71, 39, 55, 0, 0, 0, 0, 15, 3, 95, 52,
+			88, 76, 47, 6, 37, 133, 37, 117, 36, 47, 0, 0, 0, 0, 0, 0, 0, 8, 195, 56, 17, 0, 72, 8, 23, 0, 7, 194, 56, 16,
+			72, 28, 23, 0, 6, 195, 64, 50, 64, 13, 14, 3, 95, 53, 88, 48, 6, 35, 72, 36, 89, 124, 47, 0, 0, 0, 14, 4, 95, 114,
+			110, 103, 49, 51, 6, 129, 90, 36, 49, 0, 0, 0, 0, 0, 0, 12, 66, 45, 112, 49, 37, 55, 39, 84, 35, 47, 0, 0, 14, 3,
+			95, 54, 88, 91, 6, 36, 72, 36, 89, 124, 47, 0, 0, 0, 0, 0, 0, 19, 71, 8, 19, 9, 77, 66, 75, 4, 71, 35, 55, 37,
+			89, 47, 37, 49, 35, 0, 0, 0, 0, 6, 195, 60, 68, 192, 13, 0, 7, 196, 9, 148, 212, 20, 72, 7, 196, 64, 241, 12, 20, 8,
+			0, 0, 0, 0, 7, 196, 88, 81, 12, 20, 8, 0, 13, 69, 16, 83, 5, 80, 80, 72, 37, 55, 121, 47, 0, 8, 197, 12, 128, 197,
+			52, 80, 76, 0, 0, 16, 3, 95, 56, 88, 6, 39, 89, 40, 65, 72, 36, 89, 124, 47, 0, 0, 0, 0, 0, 6, 195, 17, 37, 128,
+			13, 6, 195, 8, 86, 133, 8, 0, 0, 19, 67, 12, 20, 19, 49, 35, 48, 89, 55, 39, 49, 0, 81, 108, 111, 99, 107, 32, 0, 0,
+			16, 3, 95, 57, 88, 72, 6, 36, 84, 35, 72, 36, 89, 124, 47, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 65, 88, 50,
+			35, 49, 0, 0, 0, 0, 0, 0, 0, 12, 65, 168, 72, 55, 6, 129, 107, 123, 4, 126, 0, 0, 19, 4, 95, 115, 116, 107, 91, 6,
+			37, 49, 65, 124, 76, 6, 124, 51, 49, 35, 0, 0, 0, 0, 6, 195, 189, 49, 146, 13, 0, 0, 0, 0, 0, 0, 0, 12, 67, 64,
+			113, 14, 48, 131, 75, 72, 127, 50, 0, 0, 8, 197, 9, 81, 5, 52, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 56,
+			20, 18, 61, 66, 64, 8, 0, 0, 0, 0, 0, 0, 15, 4, 95, 99, 105, 114, 89, 47, 133, 6, 121, 91, 49, 35, 0, 4, 193, 172,
+			43, 0, 8, 195, 65, 35, 192, 72, 8, 23, 0, 15, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 125, 50, 126, 0, 0, 0, 15, 4,
+			95, 48, 77, 50, 65, 6, 37, 55, 37, 125, 50, 126, 0, 0, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55, 37, 35, 51, 72, 0, 0,
+			0, 13, 4, 95, 48, 77, 49, 80, 6, 37, 89, 121, 117, 0, 0, 7, 194, 60, 64, 72, 28, 23, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 17, 4, 95, 108, 105, 103, 55, 6, 37, 81, 35, 47, 4, 40, 51, 35, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 44, 208, 49,
+			37, 55, 39, 65, 36, 47, 44, 0, 5, 194, 52, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+			66, 44, 224, 49, 37, 55, 39, 67, 40, 47, 50, 0, 6, 195, 44, 193, 18, 13, 7, 196, 44, 243, 5, 52, 8, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 8, 195, 16, 193, 64, 72, 8, 23, 0, 0, 0, 6, 195, 12, 254, 64, 8, 0, 0, 14, 4, 95, 99, 101, 100, 117,
+			6, 36, 79, 37, 55, 35, 0, 0, 10, 67, 76, 150, 133, 89, 35, 57, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
+			36, 35, 64, 13, 0, 12, 4, 95, 99, 97, 112, 84, 36, 55, 49, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 65, 188, 76, 123, 0, 0, 0, 6, 195, 12, 128, 197, 76, 0, 0, 0, 0, 0, 5, 194, 72, 48, 13, 6, 195, 189, 52,
+			128, 13, 6, 195, 53, 195, 69, 76, 0, 0, 6, 195, 91, 80, 75, 8, 0, 0, 0, 11, 68, 48, 22, 133, 72, 55, 131, 88, 44, 0,
+			0, 0, 0, 5, 194, 73, 48, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 64, 64, 13, 0, 0, 0,
+			5, 194, 77, 32, 13, 6, 195, 18, 82, 217, 8, 0, 0, 0, 0, 6, 195, 53, 205, 64, 76, 0, 0, 0, 0, 12, 69, 76, 80, 82,
+			12, 128, 89, 36, 51, 76, 0, 0, 6, 195, 60, 177, 0, 13, 6, 195, 52, 147, 79, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 64, 68, 128, 13, 0, 0, 0, 21, 4, 95, 103, 114, 118, 80, 6, 36, 91, 49, 121, 38, 6, 35,
+			49, 117, 36, 50, 47, 0, 0, 6, 195, 64, 196, 128, 13, 0, 0, 9, 2, 195, 151, 49, 51, 124, 47, 0, 7, 2, 196, 143, 79, 123,
+			0, 0, 0, 0, 0, 6, 195, 9, 81, 5, 72, 0, 0, 0, 0, 13, 2, 194, 167, 48, 35, 51, 35, 81, 51, 35, 83, 0, 0, 5,
+			194, 60, 208, 13, 5, 194, 76, 80, 72, 0, 0, 0, 0, 7, 2, 197, 136, 36, 67, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 196,
+			155, 37, 57, 36, 0, 0, 0, 14, 2, 194, 169, 49, 6, 39, 48, 37, 51, 35, 57, 47, 0, 0, 0, 16, 70, 21, 128, 200, 4, 225,
+			197, 37, 49, 89, 76, 131, 50, 75, 0, 0, 0, 0, 0, 0, 11, 2, 194, 176, 89, 47, 40, 48, 36, 67, 0, 0, 6, 195, 12, 112,
+			64, 13, 7, 2, 197, 153, 36, 133, 0, 0, 0, 6, 195, 12, 128, 201, 76, 11, 2, 195, 183, 79, 36, 55, 36, 50, 39, 0, 0, 5,
+			194, 73, 128, 13, 7, 2, 195, 180, 40, 125, 0, 0, 7, 2, 197, 165, 80, 123, 0, 0, 0, 0, 0, 0, 7, 196, 60, 179, 204, 60,
+			8, 0, 9, 67, 64, 17, 197, 48, 131, 75, 0, 6, 195, 76, 144, 197, 8, 17, 2, 197, 175, 6, 126, 89, 10, 49, 51, 6, 129, 90,
+			49, 36, 65, 0, 0, 0, 6, 195, 5, 34, 128, 13, 18, 2, 195, 189, 72, 55, 6, 129, 123, 4, 37, 48, 89, 37, 55, 39, 50, 0,
+			0, 0, 0, 0, 0, 7, 2, 196, 190, 36, 61, 0, 0, 0, 8, 195, 76, 180, 154, 72, 28, 23, 0, 0, 14, 2, 196, 186, 72, 55,
+			6, 129, 107, 123, 4, 36, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 18, 165, 76, 0, 0,
+			0, 0, 0, 0, 0, 11, 67, 84, 226, 69, 40, 50, 37, 57, 36, 0, 0, 7, 194, 64, 240, 72, 8, 23, 5, 194, 76, 144, 72, 0,
+			8, 195, 64, 241, 0, 72, 8, 23, 0, 0, 6, 195, 52, 86, 137, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 6, 195, 5, 32, 192, 13, 0, 0, 0, 0, 6, 195, 85, 48, 64, 13, 0, 0, 12, 69, 12, 128, 78, 28, 80, 76, 131, 50, 75,
+			0, 8, 197, 12, 128, 197, 80, 80, 76, 8, 197, 9, 81, 5, 80, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 144,
+			72, 0, 0, 10, 3, 101, 46, 103, 50, 35, 48, 133, 0, 0, 0, 0, 0, 13, 2, 95, 34, 40, 84, 39, 88, 39, 84, 49, 37, 0,
+			0, 0, 0, 7, 196, 54, 84, 212, 60, 8, 13, 2, 95, 39, 35, 48, 39, 89, 47, 51, 39, 83, 0, 0, 0, 0, 10, 2, 95, 36,
+			72, 39, 55, 124, 51, 0, 0, 0, 0, 18, 2, 95, 41, 88, 124, 84, 39, 34, 49, 35, 88, 35, 84, 133, 121, 47, 0, 0, 12, 2,
+			95, 40, 88, 124, 84, 39, 51, 49, 35, 0, 0, 6, 195, 52, 180, 128, 13, 0, 10, 2, 95, 46, 47, 36, 76, 49, 35, 0, 0, 10,
+			2, 95, 45, 65, 121, 50, 40, 89, 0, 0, 6, 195, 77, 52, 210, 13, 10, 2, 95, 44, 76, 124, 51, 49, 35, 0, 0, 8, 2, 95,
+			51, 47, 134, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 11, 2, 95, 49, 57, 6, 36, 72, 36, 50, 0, 0, 10, 2,
+			95, 48, 50, 6, 40, 55, 35, 0, 0, 9, 67, 32, 243, 69, 107, 129, 65, 0, 6, 195, 84, 181, 128, 13, 11, 2, 95, 55, 89, 6,
+			36, 72, 40, 65, 0, 0, 10, 2, 95, 54, 91, 6, 36, 89, 47, 0, 0, 10, 2, 95, 53, 48, 6, 57, 36, 47, 0, 0, 11, 2,
+			95, 52, 76, 47, 6, 37, 133, 37, 0, 0, 13, 2, 95, 59, 88, 72, 133, 36, 72, 67, 121, 49, 0, 0, 15, 2, 95, 58, 72, 84,
+			6, 39, 57, 47, 36, 76, 49, 35, 0, 0, 12, 2, 95, 57, 72, 6, 36, 84, 57, 36, 47, 0, 0, 10, 2, 95, 56, 6, 39, 89,
+			40, 65, 0, 0, 12, 2, 95, 63, 39, 47, 35, 88, 67, 121, 49, 0, 0, 7, 132, 109, 196, 155, 108, 76, 10, 2, 95, 62, 84, 57,
+			36, 76, 121, 0, 0, 0, 10, 2, 95, 60, 65, 36, 50, 91, 121, 0, 0, 0, 0, 0, 0, 6, 195, 9, 81, 21, 72, 0, 0, 0,
+			0, 0, 0, 6, 195, 92, 116, 15, 13, 0, 0, 0, 0, 6, 65, 212, 36, 91, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 177, 192,
+			13, 0, 0, 0, 0, 6, 195, 9, 147, 1, 72, 6, 195, 4, 193, 64, 8, 22, 2, 95, 91, 107, 51, 6, 35, 50, 35, 47, 124, 15,
+			88, 6, 124, 84, 39, 51, 49, 35, 0, 0, 0, 0, 7, 194, 104, 16, 72, 8, 23, 0, 14, 2, 95, 95, 48, 39, 47, 47, 44, 90,
+			36, 67, 121, 0, 0, 0, 21, 2, 95, 93, 107, 51, 6, 35, 50, 35, 47, 124, 15, 88, 6, 35, 84, 133, 121, 47, 0, 0, 0, 0,
+			0, 6, 2, 95, 97, 124, 0, 0, 22, 2, 95, 96, 6, 39, 71, 51, 124, 117, 4, 36, 50, 124, 15, 76, 6, 124, 51, 49, 35, 0,
+			0, 0, 0, 0, 0, 7, 2, 95, 107, 49, 124, 0, 0, 0, 6, 195, 9, 147, 15, 72, 6, 2, 95, 105, 121, 0, 0, 0, 6, 2,
+			95, 111, 125, 0, 0, 0, 0, 0, 7, 2, 95, 115, 36, 89, 0, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 124, 76, 36, 49, 0,
+			0, 0, 0, 7, 2, 95, 118, 84, 123, 0, 0, 6, 2, 95, 117, 126, 0, 0, 0, 22, 2, 95, 123, 89, 55, 6, 39, 90, 36, 50,
+			124, 15, 88, 6, 124, 84, 39, 51, 49, 35, 0, 0, 8, 2, 95, 122, 88, 36, 47, 0, 0, 0, 0, 0, 0, 21, 2, 95, 125, 89,
+			55, 6, 39, 90, 36, 50, 124, 15, 88, 6, 35, 84, 133, 121, 47, 0, 0, 18, 2, 95, 124, 89, 84, 6, 37, 89, 55, 124, 15, 76,
+			6, 124, 51, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 16, 245, 206, 72, 127, 50, 0, 0, 0, 0, 0, 0, 6, 195, 188,
+			192, 64, 13, 0, 0, 0, 0, 12, 67, 21, 48, 192, 37, 89, 49, 36, 37, 48, 0, 0, 8, 196, 76, 180, 154, 20, 72, 8, 0, 0,
+			0, 0, 0, 0, 14, 4, 95, 35, 51, 50, 65, 6, 36, 88, 36, 51, 35, 0, 0, 0, 0, 0, 7, 194, 104, 80, 72, 28, 23, 0,
+			0, 0, 9, 134, 98, 196, 155, 104, 101, 109, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 196, 128,
+			13, 0, 0, 0, 0, 6, 195, 9, 148, 192, 72, 0, 0, 0, 0, 12, 67, 93, 117, 192, 84, 123, 84, 123, 84, 123, 0, 6, 195, 60,
+			133, 128, 13, 0, 11, 68, 5, 48, 201, 36, 35, 89, 49, 37, 0, 0, 0, 0, 0, 0, 10, 133, 112, 197, 153, 101, 100, 72, 8, 23,
+			0, 0, 14, 67, 28, 134, 128, 81, 37, 81, 35, 107, 36, 34, 117, 0, 0, 0, 0, 0, 14, 67, 44, 134, 128, 49, 37, 55, 39, 107,
+			36, 34, 117, 0, 6, 195, 9, 147, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 52, 201, 13, 6, 195,
+			60, 128, 192, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 41, 53, 5, 72, 0, 0, 0, 0, 6, 195, 77, 69, 129, 13, 6, 195,
+			21, 65, 128, 13, 0, 0, 0, 0, 0, 7, 196, 9, 81, 15, 84, 72, 0, 0, 14, 69, 36, 228, 197, 73, 64, 37, 50, 88, 36, 51,
+			47, 0, 0, 0, 7, 65, 228, 90, 36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 53, 192, 76, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 100, 105, 0, 4, 1, 97,
+			2, 107, 3, 72, 37, 0, 1, 97, 108, 2, 115, 0, 1, 97, 114, 116, 2, 99, 0, 1, 101, 109, 0, 1, 101, 112, 111, 116, 2, 99,
+			0, 1, 101, 114, 107, 2, 116, 0, 1, 105, 109, 0, 1, 108, 97, 114, 0, 1, 110, 2, 99, 0, 1, 110, 97, 2, 100, 0, 1, 110,
+			97, 109, 2, 116, 0, 1, 110, 105, 0, 1, 111, 2, 99, 0, 1, 111, 105, 114, 2, 99, 0, 1, 111, 107, 2, 102, 105, 0, 1, 111,
+			116, 101, 0, 1, 114, 97, 100, 2, 122, 0, 1, 114, 111, 0, 1, 155, 196, 109, 0, 1, 169, 195, 109, 0, 2, 97, 0, 2, 97, 32,
+			0, 2, 101, 0, 2, 103, 105, 0, 2, 106, 0, 2, 107, 0, 2, 110, 105, 107, 0, 2, 111, 0, 2, 114, 0, 2, 115, 99, 105, 112,
+			0, 2, 115, 107, 0, 2, 115, 109, 0, 2, 115, 112, 0, 2, 115, 116, 0, 2, 115, 116, 0, 2, 116, 105, 107, 0, 2, 117, 0, 2,
+			117, 109, 32, 0, 8, 2, 99, 104, 0, 8, 2, 102, 0, 8, 2, 103, 0, 8, 2, 108, 101, 116, 0, 8, 2, 109, 101, 0, 8, 2,
+			109, 105, 0, 8, 2, 112, 0, 8, 2, 115, 0, 8, 2, 118, 97, 110, 0, 8, 2, 118, 101, 114, 0, 8, 2, 118, 105, 100, 0, 8,
+			2, 122, 0, 8, 2, 195, 161, 0, 8, 97, 108, 103, 0, 8, 97, 114, 116, 0, 8, 101, 0, 8, 101, 110, 2, 112, 0, 8, 101, 112,
+			120, 101, 0, 8, 108, 111, 112, 0, 8, 110, 97, 99, 115, 0, 8, 111, 2, 110, 115, 116, 0, 8, 111, 109, 0, 8, 114, 97, 107, 0,
+			8, 114, 97, 115, 0, 8, 117, 97, 0, 99, 107, 8, 3, 72, 37, 49, 0, 4, 2, 101, 32, 3, 72, 37, 57, 0, 2, 101, 32, 0,
+			2, 105, 32, 0, 2, 111, 32, 0, 2, 117, 32, 0, 8, 2, 97, 0, 115, 116, 105, 2, 99, 3, 72, 37, 89, 47, 37, 0, 115, 107,
+			114, 101, 100, 105, 3, 72, 37, 89, 49, 14, 16, 36, 72, 37, 0, 115, 99, 111, 8, 3, 72, 37, 89, 49, 39, 0, 4, 1, 101, 153,
+			197, 2, 115, 107, 3, 79, 37, 0, 1, 111, 104, 99, 2, 115, 0, 8, 2, 114, 99, 0, 8, 2, 114, 107, 0, 8, 2, 118, 105, 122,
+			110, 97, 0, 8, 2, 118, 105, 122, 110, 121, 0, 8, 101, 108, 104, 0, 7, 6, 110, 105, 0, 4, 1, 97, 2, 100, 3, 50, 37, 0,
+			1, 97, 2, 107, 0, 1, 97, 2, 107, 111, 118, 0, 1, 97, 2, 122, 0, 1, 97, 103, 114, 111, 110, 97, 0, 1, 97, 104, 99, 2,
+			99, 0, 1, 97, 104, 99, 2, 107, 0, 1, 97, 104, 99, 101, 2, 115, 0, 1, 97, 109, 2, 102, 0, 1, 97, 109, 2, 112, 0, 1,
+			97, 109, 114, 101, 0, 1, 97, 110, 2, 115, 0, 1, 101, 2, 107, 0, 1, 101, 2, 115, 0, 1, 101, 103, 0, 1, 101, 108, 97, 2,
+			116, 0, 1, 101, 108, 101, 2, 116, 0, 1, 101, 122, 2, 116, 0, 1, 103, 2, 116, 0, 1, 105, 2, 99, 105, 0, 1, 105, 2, 107,
+			0, 1, 105, 2, 116, 0, 1, 105, 102, 101, 0, 1, 105, 108, 107, 0, 1, 105, 109, 0, 1, 107, 2, 112, 0, 1, 111, 2, 100, 0,
+			1, 111, 2, 107, 0, 1, 111, 2, 115, 0, 1, 111, 100, 2, 99, 0, 1, 111, 102, 2, 99, 0, 1, 111, 103, 0, 1, 111, 103, 97,
+			116, 2, 115, 0, 1, 111, 109, 101, 114, 101, 0, 1, 111, 109, 114, 97, 104, 0, 1, 111, 110, 2, 109, 0, 1, 111, 114, 2, 99, 0,
+			1, 111, 114, 100, 110, 101, 0, 1, 111, 114, 104, 99, 110, 121, 115, 0, 1, 111, 114, 105, 0, 1, 111, 116, 107, 0, 1, 117, 2, 116,
+			0, 1, 117, 109, 2, 107, 0, 1, 117, 109, 2, 115, 0, 1, 117, 109, 111, 107, 0, 1, 117, 116, 2, 115, 0, 1, 169, 195, 103, 0,
+			2, 97, 32, 0, 2, 97, 107, 0, 2, 107, 108, 0, 2, 110, 105, 107, 0, 2, 115, 109, 0, 2, 115, 116, 0, 2, 116, 105, 107, 0,
+			2, 117, 109, 32, 0, 2, 122, 117, 106, 0, 8, 2, 108, 0, 8, 2, 116, 114, 111, 0, 8, 97, 2, 109, 0, 8, 97, 103, 114, 111,
+			0, 8, 97, 107, 2, 98, 0, 8, 97, 109, 117, 104, 0, 8, 97, 110, 2, 116, 114, 0, 8, 97, 112, 2, 99, 107, 0, 8, 97, 115,
+			2, 116, 0, 8, 97, 116, 111, 98, 0, 8, 97, 118, 108, 97, 103, 0, 8, 101, 105, 103, 121, 104, 0, 8, 101, 115, 2, 108, 0, 8,
+			101, 116, 2, 115, 0, 8, 111, 98, 101, 0, 8, 111, 108, 111, 107, 0, 8, 111, 109, 0, 8, 116, 101, 2, 99, 0, 8, 117, 0, 8,
+			117, 109, 0, 8, 117, 109, 105, 2, 116, 0, 8, 121, 99, 0, 8, 169, 195, 114, 116, 0, 116, 105, 1, 105, 102, 3, 50, 37, 47, 37,
+			0, 107, 111, 116, 105, 8, 3, 50, 37, 49, 39, 47, 37, 0, 4, 2, 101, 32, 3, 50, 37, 57, 0, 2, 105, 32, 0, 2, 111, 32,
+			0, 2, 117, 32, 0, 2, 195, 173, 0, 4, 1, 97, 122, 2, 107, 3, 67, 37, 0, 1, 100, 111, 112, 2, 107, 0, 1, 100, 117, 111,
+			108, 0, 1, 105, 118, 2, 116, 0, 1, 105, 141, 196, 2, 116, 0, 1, 106, 111, 116, 115, 0, 1, 111, 114, 112, 2, 107, 0, 1, 117,
+			2, 107, 0, 1, 118, 2, 107, 108, 0, 1, 122, 118, 2, 107, 0, 1, 153, 197, 111, 109, 161, 195, 110, 0, 8, 2, 116, 114, 111, 32,
+			0, 8, 97, 104, 99, 173, 195, 109, 0, 8, 105, 108, 104, 2, 116, 0, 8, 111, 114, 98, 0, 7, 6, 116, 105, 0, 4, 109, 101, 2,
+			32, 3, 47, 35, 57, 65, 0, 109, 101, 8, 0, 4, 1, 97, 2, 99, 3, 47, 37, 0, 1, 97, 2, 107, 0, 1, 97, 2, 110, 0,
+			1, 97, 2, 118, 0, 1, 97, 2, 122, 0, 1, 97, 109, 2, 99, 107, 0, 1, 97, 109, 2, 107, 97, 0, 1, 97, 109, 97, 2, 99,
+			0, 1, 97, 109, 97, 2, 107, 0, 1, 97, 109, 97, 114, 100, 0, 1, 97, 109, 101, 2, 99, 0, 1, 97, 109, 101, 2, 107, 0, 1,
+			97, 109, 111, 114, 97, 0, 1, 97, 109, 111, 116, 2, 99, 0, 1, 97, 109, 117, 2, 99, 0, 1, 97, 112, 97, 2, 99, 0, 1, 97,
+			112, 97, 2, 196, 141, 0, 1, 97, 112, 109, 111, 2, 98, 0, 1, 97, 112, 109, 121, 0, 1, 101, 2, 99, 0, 1, 101, 2, 107, 0,
+			1, 101, 2, 118, 0, 1, 101, 2, 122, 0, 1, 101, 107, 114, 97, 2, 110, 103, 0, 1, 101, 110, 2, 99, 0, 1, 101, 114, 111, 101,
+			2, 99, 0, 1, 105, 2, 107, 0, 1, 105, 103, 2, 109, 0, 1, 105, 108, 2, 99, 0, 1, 105, 109, 105, 114, 2, 118, 0, 1, 105,
+			110, 97, 118, 2, 116, 0, 1, 105, 114, 2, 99, 0, 1, 105, 114, 2, 107, 0, 1, 105, 114, 107, 0, 1, 105, 118, 114, 0, 1, 107,
+			2, 118, 0, 1, 107, 97, 0, 1, 107, 101, 0, 1, 107, 114, 0, 1, 108, 117, 107, 2, 118, 0, 1, 110, 2, 99, 0, 1, 110, 2,
+			110, 0, 1, 110, 97, 2, 107, 0, 1, 110, 97, 2, 108, 0, 1, 110, 97, 2, 115, 0, 1, 110, 101, 2, 110, 0, 1, 110, 101, 118,
+			2, 108, 0, 1, 110, 105, 2, 109, 0, 1, 110, 111, 107, 0, 1, 111, 2, 107, 0, 1, 111, 98, 2, 122, 0, 1, 111, 109, 2, 118,
+			0, 1, 111, 114, 2, 107, 0, 1, 111, 114, 101, 2, 99, 0, 1, 111, 120, 2, 107, 0, 1, 112, 101, 2, 107, 0, 1, 112, 111, 0,
+			1, 114, 2, 122, 0, 1, 114, 111, 2, 109, 0, 1, 115, 2, 107, 0, 1, 115, 2, 109, 117, 108, 0, 1, 115, 2, 112, 0, 1, 115,
+			101, 100, 2, 108, 0, 1, 115, 101, 103, 117, 115, 0, 1, 115, 101, 118, 110, 0, 1, 115, 111, 2, 99, 0, 1, 117, 2, 107, 0, 1,
+			117, 97, 0, 1, 120, 2, 108, 0, 1, 189, 195, 2, 99, 107, 0, 2, 97, 32, 0, 2, 99, 107, 0, 2, 102, 0, 2, 110, 105, 107,
+			0, 2, 115, 109, 0, 2, 115, 116, 0, 2, 116, 105, 107, 0, 2, 116, 117, 108, 0, 2, 117, 109, 32, 0, 8, 2, 98, 0, 8, 2,
+			99, 105, 0, 8, 2, 109, 98, 0, 8, 2, 110, 107, 0, 8, 2, 114, 97, 110, 0, 8, 2, 116, 97, 110, 0, 8, 2, 116, 117, 108,
+			0, 8, 2, 116, 195, 161, 110, 0, 8, 2, 120, 0, 8, 97, 108, 112, 2, 110, 0, 8, 97, 109, 103, 101, 108, 102, 0, 8, 97, 109,
+			169, 195, 116, 0, 8, 97, 115, 2, 114, 0, 8, 97, 115, 2, 197, 153, 0, 8, 101, 109, 115, 111, 107, 0, 8, 101, 112, 2, 196, 141,
+			0, 8, 105, 115, 111, 112, 0, 8, 108, 117, 2, 109, 0, 8, 108, 117, 109, 0, 8, 110, 97, 0, 8, 110, 97, 108, 116, 97, 0, 8,
+			110, 101, 99, 0, 8, 110, 101, 115, 0, 8, 110, 101, 118, 101, 114, 112, 0, 8, 110, 111, 107, 2, 110, 0, 8, 111, 108, 102, 0, 8,
+			112, 105, 108, 107, 101, 0, 8, 112, 111, 2, 99, 0, 8, 114, 101, 118, 2, 107, 0, 8, 115, 98, 97, 0, 8, 115, 101, 98, 0, 8,
+			115, 101, 108, 97, 112, 0, 8, 115, 101, 114, 2, 116, 0, 8, 115, 110, 105, 0, 8, 115, 110, 111, 107, 0, 8, 115, 117, 106, 0, 8,
+			117, 114, 0, 110, 105, 2, 117, 3, 47, 37, 50, 37, 57, 0, 4, 2, 101, 32, 3, 47, 37, 57, 0, 2, 105, 32, 0, 2, 111, 32,
+			0, 2, 117, 32, 0, 109, 111, 110, 105, 2, 116, 3, 47, 37, 65, 39, 50, 37, 0, 4, 115, 116, 105, 1, 97, 3, 47, 37, 89, 47,
+			37, 0, 115, 116, 105, 8, 97, 116, 115, 0, 4, 1, 97, 104, 99, 2, 99, 3, 80, 37, 0, 1, 97, 108, 2, 110, 0, 1, 97, 109,
+			2, 99, 0, 1, 99, 0, 1, 101, 99, 105, 153, 197, 0, 1, 101, 108, 112, 0, 1, 101, 153, 197, 2, 99, 0, 1, 104, 99, 101, 108,
+			0, 1, 111, 114, 2, 118, 0, 1, 112, 97, 2, 118, 0, 1, 114, 100, 0, 1, 115, 101, 161, 197, 0, 1, 115, 109, 0, 1, 115, 111,
+			100, 0, 1, 115, 111, 104, 0, 1, 115, 111, 107, 2, 99, 0, 1, 115, 161, 195, 2, 99, 0, 1, 155, 196, 2, 99, 0, 1, 155, 196,
+			112, 0, 1, 155, 196, 118, 2, 118, 0, 1, 161, 195, 115, 101, 100, 0, 1, 173, 195, 118, 101, 0, 8, 97, 109, 2, 110, 0, 8, 101,
+			99, 97, 118, 100, 0, 8, 101, 115, 101, 100, 0, 8, 111, 114, 112, 0, 8, 115, 97, 114, 116, 115, 0, 8, 121, 107, 2, 99, 0, 8,
+			155, 196, 116, 0, 7, 6, 195, 161, 0, 3, 124, 0, 7, 6, 195, 164, 0, 3, 36, 0, 7, 6, 195, 169, 0, 3, 123, 0, 7, 6,
+			195, 173, 0, 3, 121, 0, 7, 6, 195, 179, 0, 3, 125, 0, 7, 6, 195, 180, 0, 3, 40, 39, 0, 7, 6, 195, 186, 0, 3, 126,
+			0, 7, 6, 195, 189, 0, 3, 121, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 143, 0, 4, 3, 79, 0, 2, 32, 17, 70,
+			0, 2, 32, 3, 80, 0, 7, 6, 196, 155, 0, 3, 36, 0, 7, 6, 196, 190, 0, 3, 61, 0, 7, 6, 197, 136, 0, 3, 67, 0,
+			7, 6, 197, 153, 0, 3, 133, 0, 4, 1, 102, 3, 134, 0, 1, 107, 0, 1, 112, 0, 1, 116, 0, 7, 6, 197, 161, 0, 3, 91,
+			0, 7, 6, 197, 165, 0, 3, 80, 0, 7, 6, 197, 175, 0, 3, 126, 0, 7, 6, 197, 190, 0, 4, 3, 90, 0, 2, 32, 17, 70,
+			0, 2, 32, 3, 91, 0, 7, 6, 97, 0, 3, 35, 0, 99, 107, 1, 114, 116, 3, 36, 49, 0, 117, 3, 127, 0, 105, 1, 109, 2,
+			108, 3, 131, 0, 103, 101, 1, 112, 3, 131, 75, 0, 115, 116, 101, 1, 112, 2, 32, 3, 131, 89, 47, 0, 7, 6, 98, 0, 2, 32,
+			3, 48, 0, 4, 3, 71, 0, 2, 32, 17, 70, 0, 97, 99, 107, 3, 71, 36, 49, 0, 196, 155, 3, 71, 57, 36, 0, 111, 97, 114,
+			100, 3, 71, 125, 34, 72, 0, 97, 115, 105, 99, 3, 71, 131, 88, 37, 49, 0, 7, 6, 99, 0, 4, 1, 101, 114, 2, 111, 3, 49,
+			0, 1, 115, 97, 112, 2, 97, 108, 0, 2, 117, 115, 0, 8, 2, 97, 108, 0, 8, 2, 108, 97, 117, 0, 8, 2, 111, 109, 0, 8,
+			2, 111, 114, 0, 8, 97, 109, 2, 114, 0, 8, 115, 2, 111, 0, 107, 1, 97, 112, 0, 107, 1, 111, 108, 0, 107, 8, 97, 112, 2,
+			97, 0, 114, 101, 97, 116, 105, 8, 3, 49, 34, 36, 35, 47, 37, 0, 111, 118, 101, 114, 3, 49, 35, 84, 44, 0, 97, 8, 115, 2,
+			110, 3, 49, 36, 0, 116, 114, 108, 3, 49, 39, 50, 47, 14, 16, 39, 55, 0, 111, 103, 110, 105, 1, 101, 114, 2, 116, 3, 49, 39,
+			81, 50, 37, 0, 104, 3, 101, 0, 3, 117, 0, 7, 6, 100, 0, 2, 32, 3, 47, 0, 4, 3, 72, 0, 2, 32, 17, 70, 0, 2,
+			105, 28, 17, 0, 2, 195, 173, 28, 17, 0, 4, 197, 190, 3, 75, 0, 197, 190, 2, 32, 17, 70, 0, 197, 190, 2, 32, 3, 76, 0,
+			4, 2, 105, 3, 79, 0, 2, 195, 173, 0, 2, 196, 155, 0, 122, 2, 32, 3, 117, 0, 4, 122, 3, 118, 0, 122, 2, 32, 17, 70,
+			0, 7, 6, 101, 0, 3, 36, 0, 121, 1, 107, 3, 121, 0, 117, 3, 128, 0, 106, 2, 25, 3, 131, 0, 7, 6, 102, 0, 3, 83,
+			0, 196, 155, 3, 83, 57, 36, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 4, 3, 81, 0, 2, 32, 17, 70, 0, 7, 6, 104, 0,
+			2, 32, 3, 101, 0, 4, 3, 107, 0, 2, 32, 17, 70, 0, 7, 6, 105, 0, 97, 3, 2, 37, 35, 0, 101, 3, 2, 37, 36, 0,
+			117, 3, 2, 37, 40, 0, 103, 104, 116, 1, 17, 67, 3, 35, 57, 47, 0, 3, 37, 0, 97, 2, 32, 3, 37, 35, 0, 101, 2, 32,
+			3, 37, 57, 36, 0, 105, 2, 32, 3, 37, 57, 37, 0, 111, 2, 32, 3, 37, 57, 39, 0, 117, 2, 32, 3, 37, 57, 40, 0, 8,
+			2, 111, 110, 3, 57, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 4, 3, 49, 0, 107, 0, 7, 6, 108, 0, 1, 25, 2,
+			25, 3, 45, 0, 4, 3, 55, 0, 108, 0, 97, 115, 101, 114, 8, 3, 55, 131, 88, 34, 0, 7, 6, 109, 0, 3, 65, 0, 105, 99,
+			8, 2, 114, 111, 3, 65, 35, 57, 49, 0, 97, 110, 97, 103, 101, 114, 8, 3, 65, 36, 50, 36, 75, 44, 0, 101, 115, 115, 97, 103,
+			101, 8, 3, 65, 36, 89, 37, 75, 0, 196, 155, 3, 65, 67, 36, 0, 7, 6, 110, 0, 2, 110, 3, 0, 4, 3, 50, 0, 2, 105,
+			28, 17, 0, 2, 195, 173, 28, 17, 0, 4, 2, 105, 3, 67, 0, 2, 195, 173, 0, 2, 196, 155, 0, 101, 119, 3, 67, 126, 0, 4,
+			2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 105, 99, 101, 1, 118, 3, 39, 57, 89, 0, 4, 111, 1, 116, 2,
+			108, 3, 126, 0, 117, 1, 114, 103, 2, 112, 0, 4, 117, 3, 129, 0, 119, 8, 100, 110, 105, 119, 0, 7, 6, 112, 0, 4, 3, 48,
+			0, 112, 2, 17, 65, 32, 0, 196, 155, 3, 48, 57, 36, 0, 7, 6, 113, 0, 4, 3, 49, 84, 0, 117, 0, 7, 6, 114, 0, 1,
+			25, 2, 25, 3, 44, 0, 4, 3, 51, 0, 114, 0, 105, 103, 104, 116, 3, 51, 35, 57, 47, 0, 7, 6, 115, 0, 4, 1, 101, 2,
+			105, 100, 3, 88, 0, 8, 101, 114, 112, 2, 105, 100, 0, 4, 3, 89, 0, 115, 2, 17, 65, 32, 0, 115, 2, 32, 0, 101, 108, 101,
+			99, 2, 116, 3, 89, 37, 55, 36, 49, 0, 112, 97, 99, 101, 3, 89, 48, 131, 89, 0, 99, 97, 112, 101, 3, 89, 49, 131, 48, 0,
+			104, 105, 102, 116, 3, 91, 37, 83, 47, 0, 7, 6, 116, 0, 4, 3, 47, 0, 2, 105, 28, 17, 0, 2, 195, 173, 28, 17, 0, 116,
+			2, 17, 65, 32, 0, 116, 2, 32, 0, 4, 2, 105, 3, 80, 0, 2, 195, 173, 0, 2, 196, 155, 0, 7, 6, 117, 0, 3, 40, 0,
+			7, 6, 118, 0, 3, 84, 0, 196, 155, 3, 84, 57, 36, 0, 7, 6, 119, 0, 3, 84, 0, 97, 118, 101, 3, 84, 131, 83, 0, 7,
+			6, 120, 0, 3, 49, 89, 0, 111, 116, 105, 1, 101, 2, 99, 3, 81, 88, 39, 47, 37, 0, 7, 6, 121, 0, 3, 37, 0, 2, 195,
+			173, 3, 37, 57, 0, 7, 6, 122, 0, 4, 3, 88, 0, 2, 32, 17, 70, 0, 2, 32, 3, 89, 0, 7, 6, 0, 4, 45, 1, 32,
+			17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 171, 3, 36, 0, 195, 188, 3, 37, 0, 197, 149, 3,
+			44, 0, 196, 186, 3, 45, 0, 45, 8, 32, 2, 32, 15, 3, 65, 121, 50, 40, 89, 0, 36, 3, 72, 39, 55, 124, 51, 0, 195, 182,
+			3, 123, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts9 = FileInMemory_createWithData (7565, reinterpret_cast<const char *> (&espeakdata_dicts9_data), 
+			U"espeak-1.48.04-source/espeak-data/cs_dict", 
 			U"cs");
-		Collection_addItem (me.peek(), espeakdata_dicts8.transfer());
+		my addItem_move (espeakdata_dicts9.move());
 
-		static unsigned char espeakdata_dicts9_data[3463] = {
-			0, 4, 0, 0, 31, 9, 0, 0, 0, 0, 0, 6, 195, 32, 243, 128, 76, 0, 0, 7, 65, 4, 2, 35, 0, 8, 0, 7, 66, 100,
-			224, 13, 50, 0, 9, 66, 5, 0, 10, 2, 35, 48, 0, 0, 0, 0, 0, 0, 6, 195, 64, 240, 128, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 28, 19, 128, 76, 0, 0, 6, 65, 20, 108, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 65, 36, 109, 0, 76, 0, 0, 0, 0, 8, 197, 28, 19, 12, 92, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 196, 28, 84, 207, 56, 76, 0, 0, 0, 6, 195, 17, 118, 64, 72, 0, 0, 15, 65, 60, 118, 107, 6, 115,
-			72, 0, 8, 81, 104, 121, 100, 32, 7, 65, 60, 10, 2, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 13, 147, 82, 4,
-			81, 192, 49, 113, 65, 34, 6, 120, 81, 0, 0, 0, 0, 0, 9, 66, 5, 32, 10, 2, 35, 34, 0, 0, 0, 0, 14, 69, 8, 19,
-			135, 61, 32, 71, 35, 68, 81, 111, 34, 0, 0, 0, 0, 0, 0, 6, 194, 4, 48, 72, 8, 0, 8, 195, 13, 147, 128, 72, 8, 11,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 33, 115, 128, 76, 0, 0, 12, 4, 95, 49, 77, 49, 65, 6, 114, 55,
-			10, 0, 0, 0, 6, 195, 100, 224, 64, 76, 8, 195, 93, 37, 8, 72, 8, 11, 0, 0, 5, 65, 100, 13, 0, 0, 0, 0, 0, 0,
-			9, 66, 5, 64, 10, 2, 35, 47, 0, 0, 6, 195, 28, 20, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 32, 243, 142, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 85, 206, 76, 0, 0, 0, 0, 8, 197, 28, 17, 143,
-			16, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 196, 72, 133, 206, 28, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 21, 32, 72, 8, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 100, 210, 5, 56, 8, 11, 11, 4, 95, 4, 16, 20, 48, 132, 50, 47, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 28, 19, 12, 4, 224, 72, 6, 195, 4, 195, 0, 72, 0, 0, 0, 0, 0,
-			0, 7, 67, 100, 225, 192, 13, 0, 6, 195, 56, 85, 64, 8, 0, 0, 0, 0, 6, 195, 56, 85, 68, 76, 0, 0, 0, 5, 194, 28,
-			16, 76, 9, 66, 4, 208, 10, 2, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 21, 80, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 196, 28, 19, 12, 4, 72, 7, 196, 24, 83, 12, 100, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 5, 194, 24, 80, 76, 0, 6, 195, 24, 83, 0, 72, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 147, 65, 72, 0, 0,
-			0, 0, 0, 6, 195, 16, 19, 128, 72, 6, 195, 16, 19, 128, 76, 7, 195, 16, 19, 128, 8, 11, 7, 195, 80, 19, 128, 8, 11, 0,
-			0, 0, 0, 0, 7, 196, 28, 19, 12, 36, 72, 7, 196, 4, 50, 15, 76, 8, 0, 0, 0, 6, 195, 52, 244, 128, 8, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 241, 0, 72, 0, 5, 194, 20, 144, 72, 0, 0, 7, 196, 4, 195, 1, 56, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 16, 200,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 68, 40, 243, 133, 76, 75, 118, 50, 89, 0, 0, 0, 6, 195, 17, 147, 129, 72, 5,
-			194, 25, 144, 72, 0, 0, 0, 0, 0, 6, 195, 33, 147, 128, 76, 0, 0, 0, 0, 7, 195, 56, 84, 192, 8, 11, 0, 7, 196, 4,
-			195, 23, 56, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 85, 1, 36, 8, 0, 0, 0, 6, 195, 80, 21, 192, 76, 0, 12,
-			67, 4, 115, 211, 10, 119, 81, 111, 89, 0, 76, 0, 0, 0, 0, 7, 196, 28, 19, 12, 84, 72, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 92, 81, 9, 72, 0, 14, 3, 95, 51, 88, 47, 34, 6, 114, 86, 4, 117, 81, 0, 0, 11, 3,
-			95, 48, 67, 49, 6, 35, 50, 47, 0, 0, 0, 0, 0, 7, 196, 100, 225, 4, 36, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			8, 66, 32, 144, 107, 114, 0, 76, 0, 0, 14, 3, 95, 50, 67, 72, 6, 122, 81, 4, 35, 50, 47, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 15, 3, 95, 51, 67, 47, 34, 6, 114, 101, 4, 35, 50, 47, 0, 0, 0, 0, 0, 7, 196, 100, 225, 4, 60, 76, 0, 0,
-			0, 14, 3, 95, 55, 88, 89, 6, 121, 87, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 24, 241, 0, 72, 0, 0, 10, 3, 95, 49, 88, 72, 6, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88,
-			72, 6, 122, 86, 4, 117, 81, 0, 0, 0, 12, 69, 33, 81, 200, 21, 48, 107, 127, 12, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 195, 52, 17, 78, 72, 0, 0, 0, 0, 0, 0, 17, 3, 95, 52, 88, 48, 6, 108, 72, 58, 35, 34, 86, 4, 117, 81, 0, 0,
-			0, 0, 0, 6, 195, 52, 17, 64, 72, 6, 195, 52, 17, 64, 72, 0, 0, 0, 5, 194, 56, 16, 72, 0, 14, 3, 95, 53, 88, 48,
-			6, 110, 65, 86, 4, 117, 81, 0, 0, 0, 0, 9, 198, 72, 134, 87, 72, 18, 64, 72, 0, 6, 195, 52, 18, 64, 41, 6, 195, 52,
-			18, 64, 76, 0, 0, 0, 0, 14, 3, 95, 54, 88, 101, 58, 6, 117, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 56, 88, 58, 6, 110, 87, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-			3, 95, 57, 88, 50, 6, 123, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 61, 48, 72, 8, 0, 6,
-			195, 20, 147, 128, 72, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 6, 114, 55, 127, 50, 10, 0, 0, 14, 4, 95, 48, 77, 51, 71,
-			6, 114, 55, 127, 50, 10, 0, 0, 0, 12, 4, 95, 48, 77, 49, 65, 6, 114, 55, 10, 0, 0, 0, 6, 195, 73, 118, 84, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 39, 13, 1, 76, 0, 0, 6, 195, 17, 35, 211, 76, 0, 0, 0, 0, 0, 0, 6, 131,
-			39, 14, 1, 76, 0, 0, 0, 6, 195, 73, 118, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 195, 17, 37, 217, 76, 0, 0, 0, 11, 3, 195, 180, 12, 10, 2, 118, 55, 0, 11, 0, 0, 0, 0, 0, 0, 0, 8, 66, 56,
-			144, 50, 114, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 84, 192, 72, 0, 7,
-			196, 8, 192, 69, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 72, 241,
-			68, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 196, 33, 115, 142, 4, 76, 0, 0, 0, 0, 0, 8, 197, 84, 228, 136, 101, 112, 72, 0, 0, 0, 0, 0,
-			0, 0, 7, 196, 72, 128, 73, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 195, 77, 81, 0, 72, 8, 11, 0, 8, 2, 195, 162, 10, 2, 119, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 225,
-			0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 60, 129, 82, 93, 145, 4, 8, 0, 0, 0, 0,
-			0, 0, 0, 0, 5, 194, 81, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 56, 133,
-			192, 50, 107, 116, 0, 76, 0, 0, 0, 0, 0, 7, 196, 33, 115, 142, 92, 76, 0, 0, 0, 0, 0, 0, 0, 9, 198, 28, 21, 211,
-			60, 50, 0, 76, 0, 7, 196, 33, 147, 142, 100, 76, 0, 0, 6, 195, 73, 145, 23, 72, 6, 194, 77, 144, 72, 8, 0, 6, 2, 95,
-			1, 119, 0, 0, 0, 0, 0, 6, 2, 95, 5, 117, 0, 0, 0, 0, 0, 0, 6, 195, 32, 80, 128, 72, 6, 2, 95, 15, 118, 0,
-			0, 0, 8, 197, 73, 145, 25, 12, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 25, 113, 0, 0, 8,
-			66, 80, 144, 47, 114, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 195, 1, 72, 0, 0, 0, 0, 0,
-			0, 0, 8, 197, 29, 115, 133, 84, 64, 76, 8, 197, 4, 195, 23, 12, 128, 72, 0, 6, 195, 4, 195, 9, 72, 0, 8, 195, 21, 36,
-			192, 72, 8, 11, 9, 2, 95, 51, 47, 34, 6, 114, 0, 0, 7, 196, 21, 32, 153, 56, 76, 8, 2, 95, 50, 72, 6, 122, 0, 0,
-			8, 2, 95, 49, 6, 110, 50, 0, 0, 9, 2, 95, 48, 50, 6, 112, 55, 0, 0, 9, 2, 95, 55, 89, 6, 121, 87, 0, 0, 10,
-			2, 95, 54, 101, 58, 6, 117, 99, 0, 0, 10, 2, 95, 53, 48, 6, 110, 65, 48, 0, 0, 12, 2, 95, 52, 48, 6, 108, 72, 58,
-			35, 34, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 123, 0, 0, 9, 2, 95, 56, 58, 6, 110, 87, 0, 0, 0, 0, 0, 0, 0,
-			0, 8, 197, 72, 129, 73, 56, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 73, 114, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 66, 101, 32, 13, 34, 0, 0, 0, 0, 0, 0, 6, 195, 56, 17, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67,
-			12, 130, 64, 101, 114, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 73, 147, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 196, 73, 145, 25, 56, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 28, 19, 12, 92, 50, 0, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 28, 21, 211, 60, 224, 76, 0, 0, 0,
-			0, 0, 0, 6, 195, 73, 144, 200, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 101, 112, 2, 128, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 28, 19, 12, 72, 0, 0, 0, 0, 0, 0, 8, 197, 28, 84, 207, 12, 128, 76, 0, 0, 10, 199,
-			72, 134, 87, 24, 18, 78, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 72, 129, 73, 56, 144, 76,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 100, 208, 64, 76, 0, 0, 0, 6, 195, 29, 145, 1, 76, 0,
-			7, 195, 77, 145, 4, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 17, 76, 76, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 101, 48, 146, 100, 64, 66, 0, 0, 8, 195, 76, 133, 196, 72, 8,
-			11, 0, 0, 0, 0, 0, 0, 0, 6, 66, 100, 208, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 99, 104,
-			0, 100, 100, 0, 102, 102, 0, 108, 108, 0, 116, 104, 0, 7, 6, 97, 0, 4, 2, 17, 67, 3, 35, 0, 2, 17, 67, 17, 67, 0,
-			4, 3, 119, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115,
-			0, 2, 116, 104, 0, 8, 2, 32, 0, 97, 0, 101, 3, 120, 0, 105, 3, 121, 0, 117, 3, 122, 0, 119, 2, 12, 3, 123, 0, 7,
-			6, 98, 0, 3, 71, 0, 8, 2, 32, 3, 71, 114, 0, 7, 6, 99, 0, 3, 49, 0, 119, 110, 8, 3, 49, 112, 65, 0, 4, 104,
-			1, 101, 3, 99, 0, 104, 1, 105, 0, 104, 1, 117, 0, 104, 3, 101, 0, 8, 2, 32, 3, 108, 49, 0, 104, 8, 2, 32, 3, 108,
-			101, 0, 7, 6, 100, 0, 3, 72, 0, 8, 2, 32, 3, 72, 114, 0, 100, 3, 86, 0, 100, 8, 2, 32, 3, 108, 86, 0, 7, 6,
-			101, 0, 4, 2, 17, 67, 3, 108, 0, 2, 17, 67, 17, 67, 0, 2, 119, 17, 65, 0, 4, 3, 117, 0, 2, 98, 0, 2, 99, 104,
-			0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 101,
-			0, 4, 105, 3, 124, 0, 121, 0, 117, 3, 125, 0, 119, 2, 12, 3, 126, 0, 7, 6, 102, 0, 102, 3, 83, 0, 3, 84, 0, 102,
-			8, 2, 32, 3, 108, 83, 0, 8, 2, 32, 3, 108, 84, 0, 7, 6, 103, 0, 3, 81, 0, 119, 114, 3, 81, 58, 14, 34, 0, 119,
-			110, 3, 81, 58, 14, 50, 0, 119, 108, 3, 81, 58, 14, 55, 0, 8, 2, 32, 3, 108, 81, 0, 7, 6, 104, 0, 3, 107, 0, 8,
-			2, 32, 3, 107, 119, 0, 7, 6, 105, 0, 2, 17, 65, 3, 57, 0, 4, 2, 17, 67, 3, 109, 0, 2, 17, 67, 17, 67, 0, 4,
-			3, 114, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 108, 0,
-			2, 110, 0, 2, 114, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 105, 0, 119, 2, 12, 3, 127, 0, 7, 6, 106, 0, 3,
-			75, 0, 8, 2, 32, 3, 75, 113, 0, 7, 6, 107, 0, 3, 49, 0, 8, 2, 32, 3, 49, 113, 0, 7, 6, 108, 0, 3, 55, 0,
-			108, 3, 105, 0, 108, 97, 110, 8, 3, 105, 35, 50, 0, 8, 2, 32, 3, 108, 55, 0, 108, 8, 2, 32, 3, 108, 105, 0, 7, 6,
-			109, 0, 3, 65, 0, 8, 2, 32, 3, 108, 65, 0, 7, 6, 110, 0, 3, 50, 0, 103, 3, 68, 0, 8, 2, 32, 3, 108, 50, 0,
-			103, 8, 2, 32, 3, 108, 68, 0, 7, 6, 111, 0, 4, 2, 17, 67, 3, 111, 0, 2, 17, 67, 17, 67, 0, 4, 3, 118, 0, 2,
-			98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0,
-			8, 2, 32, 0, 111, 0, 105, 3, 129, 0, 4, 101, 3, 130, 0, 117, 0, 7, 6, 112, 0, 3, 48, 0, 8, 2, 32, 3, 48, 114,
-			0, 104, 3, 83, 0, 104, 8, 2, 32, 3, 83, 114, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 58, 0, 8, 2, 32, 3, 49,
-			58, 119, 0, 7, 6, 114, 0, 3, 34, 0, 104, 3, 107, 34, 0, 104, 8, 2, 32, 3, 107, 34, 118, 0, 8, 2, 32, 3, 108, 34,
-			0, 7, 6, 115, 0, 3, 89, 0, 105, 2, 17, 65, 3, 91, 0, 8, 2, 32, 3, 108, 89, 0, 7, 6, 116, 0, 3, 47, 0, 8,
-			2, 32, 3, 47, 114, 0, 104, 3, 87, 0, 104, 8, 2, 32, 3, 108, 87, 0, 7, 6, 117, 0, 8, 2, 32, 3, 4, 109, 71, 6,
-			108, 72, 111, 55, 0, 4, 2, 17, 67, 3, 110, 0, 2, 17, 67, 17, 67, 0, 4, 3, 115, 0, 2, 98, 0, 2, 99, 104, 0, 2,
-			100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 108, 0, 2, 108, 108, 0, 2, 110, 0, 2, 114, 0, 2,
-			115, 0, 2, 116, 104, 0, 117, 0, 119, 2, 12, 3, 128, 0, 7, 6, 118, 0, 3, 84, 0, 8, 2, 32, 3, 84, 114, 0, 7, 6,
-			119, 0, 8, 2, 108, 3, 0, 4, 1, 103, 3, 58, 0, 2, 17, 65, 0, 4, 1, 10, 2, 25, 12, 3, 112, 0, 2, 17, 67, 0,
-			2, 17, 67, 17, 67, 0, 4, 3, 116, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102,
-			0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 119, 0, 121, 3, 132, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8,
-			2, 32, 3, 108, 49, 89, 0, 7, 6, 121, 0, 110, 8, 2, 32, 110, 3, 13, 0, 110, 8, 2, 32, 3, 13, 50, 0, 8, 2, 119,
-			3, 57, 0, 4, 2, 17, 67, 3, 110, 0, 2, 17, 67, 17, 67, 0, 4, 2, 21, 12, 3, 113, 0, 8, 2, 32, 0, 4, 3, 115,
-			0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 119, 2, 12, 3, 128, 0, 7, 6,
-			122, 0, 3, 88, 0, 8, 2, 32, 3, 88, 116, 0, 7, 6, 0, 39, 114, 2, 32, 14, 128, 128, 130, 3, 34, 0, 195, 160, 3, 35,
-			0, 46, 3, 48, 132, 50, 47, 0, 39, 110, 2, 32, 14, 128, 128, 130, 3, 50, 0, 39, 99, 104, 2, 32, 14, 128, 128, 131, 3, 101,
-			0, 195, 168, 3, 108, 0, 195, 172, 3, 109, 0, 4, 195, 185, 3, 110, 0, 225, 187, 179, 0, 195, 178, 3, 111, 0, 225, 186, 129, 3,
-			112, 0, 4, 195, 174, 3, 114, 0, 195, 175, 0, 4, 195, 187, 3, 115, 0, 197, 183, 0, 197, 181, 3, 116, 0, 195, 170, 3, 117, 0,
-			195, 180, 3, 118, 0, 195, 162, 3, 119, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts9 = FileInMemory_createWithData (3462, reinterpret_cast<const char *> (&espeakdata_dicts9_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/cy_dict", 
+		static unsigned char espeakdata_dicts10_data[3462] = {
+			0, 4, 0, 0, 30, 9, 0, 0, 0, 0, 0, 6, 195, 32, 243, 128, 76, 0, 0, 7, 196, 72, 241, 68, 16, 72, 7, 65, 4, 2,
+			35, 0, 8, 0, 7, 66, 100, 224, 13, 50, 0, 9, 66, 5, 0, 10, 2, 35, 48, 0, 0, 0, 0, 0, 7, 196, 32, 243, 142, 4,
+			76, 0, 6, 195, 64, 240, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 28, 19, 128, 76, 0, 11, 4, 95, 100, 112, 116, 48,
+			132, 50, 47, 0, 0, 6, 65, 20, 108, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 36,
+			109, 0, 76, 0, 0, 0, 0, 0, 0, 6, 195, 73, 145, 23, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 33, 147,
+			142, 100, 76, 0, 0, 0, 0, 0, 6, 195, 17, 118, 64, 72, 0, 0, 15, 65, 60, 118, 107, 6, 115, 72, 0, 8, 81, 104, 121, 100,
+			32, 7, 65, 60, 10, 2, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65, 116, 10, 2, 119, 0, 0, 0, 9, 66,
+			5, 32, 10, 2, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 48, 72, 8, 0, 8, 195, 13, 147, 128, 72, 8, 9,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 85, 206, 76, 0, 6, 195, 33, 115, 128, 76, 0, 0, 12, 4, 95, 49,
+			77, 49, 65, 6, 114, 55, 10, 0, 0, 0, 6, 195, 100, 224, 64, 76, 0, 0, 5, 65, 100, 13, 0, 0, 7, 196, 28, 19, 12, 4,
+			72, 8, 197, 28, 17, 143, 16, 64, 76, 0, 0, 0, 6, 195, 92, 81, 9, 72, 0, 9, 66, 5, 64, 10, 2, 35, 47, 0, 0, 6,
+			195, 28, 20, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 24, 83, 12, 100, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 197, 73, 145, 25, 12, 128, 72, 0, 0, 0, 0, 7, 196, 100, 225, 4, 36, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 28, 21, 211, 60, 224, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 21, 32, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 195, 0, 72, 0, 0, 0, 0, 0, 0, 7, 67, 100, 225, 192,
+			13, 0, 6, 195, 56, 85, 64, 8, 0, 0, 0, 0, 0, 0, 0, 5, 194, 28, 16, 76, 9, 66, 4, 208, 10, 2, 35, 65, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 21, 80, 72, 0, 0, 0, 0, 0, 0, 6, 195, 73, 144, 200, 72, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 196, 33, 115, 142, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 24, 80, 76, 0, 6, 195, 24, 83,
+			0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 19, 128, 72, 6, 195, 16, 19, 128, 76, 7, 195, 16, 19,
+			128, 8, 9, 7, 195, 80, 19, 128, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 244, 128, 8, 0, 0, 0, 0, 6, 195,
+			17, 147, 65, 72, 0, 0, 0, 0, 0, 0, 6, 195, 8, 241, 0, 72, 0, 5, 194, 20, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 195, 1, 72, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 197, 84, 228, 136, 101, 112, 72, 0, 0, 0, 5, 194, 25, 144, 72, 0, 0, 0, 0, 7, 196, 100, 225, 4,
+			60, 76, 0, 6, 195, 33, 147, 128, 76, 0, 0, 0, 0, 7, 195, 56, 84, 192, 8, 9, 0, 0, 0, 0, 0, 0, 0, 8, 197, 29,
+			115, 133, 84, 64, 76, 0, 0, 0, 0, 0, 6, 195, 80, 21, 192, 76, 7, 196, 72, 128, 73, 56, 76, 0, 0, 0, 0, 0, 0, 0,
+			7, 196, 4, 50, 15, 76, 8, 0, 0, 0, 0, 0, 0, 7, 196, 28, 19, 12, 36, 72, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4,
+			195, 9, 72, 14, 3, 95, 51, 88, 47, 34, 6, 114, 86, 4, 117, 81, 0, 0, 11, 3, 95, 48, 67, 49, 6, 35, 50, 47, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 39, 109, 97, 76, 0, 0, 0, 0, 8, 66, 32, 144, 107, 114, 0, 76, 0, 0, 8,
+			197, 28, 19, 12, 92, 224, 72, 14, 3, 95, 50, 67, 72, 6, 122, 81, 4, 35, 50, 47, 0, 0, 0, 6, 131, 39, 110, 97, 76, 0,
+			0, 6, 195, 73, 118, 84, 72, 0, 0, 0, 0, 6, 195, 28, 19, 12, 72, 15, 3, 95, 51, 67, 47, 34, 6, 114, 101, 4, 35, 50,
+			47, 0, 0, 0, 8, 197, 4, 195, 23, 12, 128, 72, 0, 0, 0, 0, 0, 14, 3, 95, 55, 88, 89, 6, 121, 87, 86, 4, 117, 81,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 24, 241, 0, 72, 0, 0, 10, 3, 95, 49, 88, 72, 6,
+			117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 72, 6, 122, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0,
+			0, 8, 197, 28, 84, 207, 12, 128, 76, 0, 7, 196, 21, 32, 153, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 52, 88,
+			48, 6, 108, 72, 58, 35, 34, 86, 4, 117, 81, 0, 0, 0, 6, 195, 17, 35, 211, 76, 0, 0, 6, 195, 52, 17, 64, 72, 6, 195,
+			52, 17, 64, 72, 0, 0, 0, 5, 194, 56, 16, 72, 0, 14, 3, 95, 53, 88, 48, 6, 110, 65, 86, 4, 117, 81, 0, 0, 0, 0,
+			0, 6, 195, 52, 18, 64, 41, 6, 195, 52, 18, 64, 76, 0, 0, 0, 0, 14, 3, 95, 54, 88, 101, 58, 6, 117, 86, 4, 117, 81,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 56, 88, 58, 6, 110, 87, 86, 4, 117, 81,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 50, 6, 123, 86, 4, 117, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 195, 1, 56, 72, 0, 0, 0, 0, 0, 8, 197, 72, 129, 73, 56, 16, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 28, 84, 207, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 61, 48, 72, 8,
+			0, 6, 195, 20, 147, 128, 72, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 6, 114, 55, 127, 50, 10, 0, 0, 14, 4, 95, 48, 77,
+			51, 71, 6, 114, 55, 127, 50, 10, 0, 0, 0, 12, 4, 95, 48, 77, 49, 65, 6, 114, 55, 10, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 73, 118, 64, 72, 0, 0, 12, 69, 33, 81, 200, 21, 48,
+			107, 127, 12, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 72, 129, 73, 56, 144, 76, 0, 7, 196, 72, 133, 206, 28,
+			76, 0, 0, 0, 0, 0, 10, 199, 72, 134, 87, 24, 18, 78, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 56, 144, 50,
+			114, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 84, 192, 72, 0, 0, 0, 0,
+			0, 9, 198, 60, 129, 82, 93, 145, 4, 8, 0, 0, 16, 70, 13, 147, 82, 4, 81, 192, 49, 113, 65, 34, 6, 120, 81, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 52, 17, 78, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 195, 77, 145, 4, 72, 8, 0, 6, 195, 17, 37, 217, 76, 0, 0, 0, 0, 0, 0, 11, 3, 195, 180, 108, 10, 2, 118,
+			55, 0, 9, 0, 0, 0, 0, 0, 0, 6, 195, 29, 145, 1, 76, 0, 0, 0, 14, 69, 8, 19, 135, 61, 32, 71, 35, 68, 81, 111,
+			34, 0, 0, 0, 0, 0, 0, 0, 0, 8, 195, 77, 81, 0, 72, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 225, 0,
+			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 81, 80, 76, 0,
+			0, 6, 195, 16, 16, 200, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 56, 133, 192, 50, 107, 116,
+			0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 28, 21, 211, 60, 50, 0, 76, 0, 0, 0, 6, 194, 77, 144,
+			72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 134, 87, 72, 18, 64, 72, 6, 195, 32, 80, 128, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 196, 100, 210, 5, 56, 8, 9, 0, 0, 0, 0, 0, 0, 0, 11, 68, 40, 243, 133, 76, 75, 118, 50, 89,
+			0, 8, 66, 80, 144, 47, 114, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			8, 195, 21, 36, 192, 72, 8, 9, 9, 2, 95, 51, 47, 34, 6, 114, 0, 0, 8, 2, 95, 50, 72, 6, 122, 0, 0, 8, 2, 95,
+			49, 6, 110, 50, 0, 0, 9, 2, 95, 48, 50, 6, 112, 55, 0, 0, 6, 195, 17, 147, 129, 72, 9, 2, 95, 55, 89, 6, 121, 87,
+			0, 0, 10, 2, 95, 54, 101, 58, 6, 117, 99, 0, 0, 10, 2, 95, 53, 48, 6, 110, 65, 48, 0, 0, 12, 2, 95, 52, 48, 6,
+			108, 72, 58, 35, 34, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 123, 0, 0, 9, 2, 95, 56, 58, 6, 110, 87, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 17, 76, 76, 0, 0, 0, 0, 0, 6, 2, 95, 73, 114, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 66, 101, 32, 13, 34, 0, 0, 0, 0, 0, 0, 6, 195, 56, 17, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+			67, 12, 130, 64, 101, 114, 0, 76, 0, 0, 6, 2, 95, 97, 119, 0, 0, 0, 0, 0, 6, 2, 95, 101, 117, 0, 0, 0, 6, 195,
+			73, 147, 128, 72, 0, 0, 0, 0, 6, 2, 95, 111, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 28, 19, 12, 4, 224,
+			72, 8, 195, 93, 37, 8, 72, 8, 9, 0, 0, 0, 7, 196, 8, 192, 69, 56, 76, 0, 0, 6, 2, 95, 121, 113, 0, 0, 0, 9,
+			198, 28, 19, 12, 92, 50, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 195, 23, 56, 72, 0, 0, 0,
+			0, 0, 0, 0, 8, 197, 101, 48, 146, 100, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 66, 101, 112, 2, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 195, 76, 133, 196, 72, 8, 9, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 85, 1, 36, 8, 0, 0,
+			0, 7, 196, 73, 145, 25, 56, 72, 0, 0, 0, 0, 0, 6, 195, 56, 85, 68, 76, 0, 0, 0, 6, 195, 100, 208, 64, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 67, 4, 115, 211, 10, 119, 81, 111, 89, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 33, 115, 142, 92, 76,
+			6, 66, 100, 208, 13, 0, 0, 0, 0, 0, 0, 0, 7, 196, 28, 19, 12, 84, 72, 0, 0, 0, 0, 0, 6, 18, 66, 99, 104, 0,
+			100, 100, 0, 102, 102, 0, 108, 108, 0, 116, 104, 0, 7, 6, 97, 0, 4, 2, 17, 67, 3, 35, 0, 2, 17, 67, 17, 67, 0, 4,
+			3, 119, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115, 0,
+			2, 116, 104, 0, 8, 2, 32, 0, 97, 0, 101, 3, 120, 0, 105, 3, 121, 0, 117, 3, 122, 0, 119, 2, 12, 3, 123, 0, 7, 6,
+			98, 0, 3, 71, 0, 8, 2, 32, 3, 71, 114, 0, 7, 6, 99, 0, 3, 49, 0, 119, 110, 8, 3, 49, 112, 65, 0, 4, 104, 1,
+			101, 3, 99, 0, 104, 1, 105, 0, 104, 1, 117, 0, 104, 3, 101, 0, 8, 2, 32, 3, 108, 49, 0, 104, 8, 2, 32, 3, 108, 101,
+			0, 7, 6, 100, 0, 3, 72, 0, 8, 2, 32, 3, 72, 114, 0, 100, 3, 86, 0, 100, 8, 2, 32, 3, 108, 86, 0, 7, 6, 101,
+			0, 4, 2, 17, 67, 3, 108, 0, 2, 17, 67, 17, 67, 0, 2, 119, 17, 65, 0, 4, 3, 117, 0, 2, 98, 0, 2, 99, 104, 0,
+			2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 101, 0,
+			4, 105, 3, 124, 0, 121, 0, 117, 3, 125, 0, 119, 2, 12, 3, 126, 0, 7, 6, 102, 0, 102, 3, 83, 0, 3, 84, 0, 102, 8,
+			2, 32, 3, 108, 83, 0, 8, 2, 32, 3, 108, 84, 0, 7, 6, 103, 0, 3, 81, 0, 119, 114, 3, 81, 58, 14, 34, 0, 119, 110,
+			3, 81, 58, 14, 50, 0, 119, 108, 3, 81, 58, 14, 55, 0, 8, 2, 32, 3, 108, 81, 0, 7, 6, 104, 0, 3, 107, 0, 8, 2,
+			32, 3, 107, 119, 0, 7, 6, 105, 0, 2, 17, 65, 3, 57, 0, 4, 2, 17, 67, 3, 109, 0, 2, 17, 67, 17, 67, 0, 4, 3,
+			114, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 108, 0, 2,
+			110, 0, 2, 114, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 105, 0, 119, 2, 12, 3, 127, 0, 7, 6, 106, 0, 3, 75,
+			0, 8, 2, 32, 3, 75, 113, 0, 7, 6, 107, 0, 3, 49, 0, 8, 2, 32, 3, 49, 113, 0, 7, 6, 108, 0, 3, 55, 0, 108,
+			3, 105, 0, 108, 97, 110, 8, 3, 105, 35, 50, 0, 8, 2, 32, 3, 108, 55, 0, 108, 8, 2, 32, 3, 108, 105, 0, 7, 6, 109,
+			0, 3, 65, 0, 8, 2, 32, 3, 108, 65, 0, 7, 6, 110, 0, 3, 50, 0, 103, 3, 68, 0, 8, 2, 32, 3, 108, 50, 0, 103,
+			8, 2, 32, 3, 108, 68, 0, 7, 6, 111, 0, 4, 2, 17, 67, 3, 111, 0, 2, 17, 67, 17, 67, 0, 4, 3, 118, 0, 2, 98,
+			0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 8,
+			2, 32, 0, 111, 0, 105, 3, 129, 0, 4, 101, 3, 130, 0, 117, 0, 7, 6, 112, 0, 3, 48, 0, 8, 2, 32, 3, 48, 114, 0,
+			104, 3, 83, 0, 104, 8, 2, 32, 3, 83, 114, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 58, 0, 8, 2, 32, 3, 49, 58,
+			119, 0, 7, 6, 114, 0, 3, 34, 0, 104, 3, 107, 34, 0, 104, 8, 2, 32, 3, 107, 34, 118, 0, 8, 2, 32, 3, 108, 34, 0,
+			7, 6, 115, 0, 3, 89, 0, 105, 2, 17, 65, 3, 91, 0, 8, 2, 32, 3, 108, 89, 0, 7, 6, 116, 0, 3, 47, 0, 8, 2,
+			32, 3, 47, 114, 0, 104, 3, 87, 0, 104, 8, 2, 32, 3, 108, 87, 0, 7, 6, 117, 0, 8, 2, 32, 3, 4, 109, 71, 6, 108,
+			72, 111, 55, 0, 4, 2, 17, 67, 3, 110, 0, 2, 17, 67, 17, 67, 0, 4, 3, 115, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100,
+			0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0, 2, 103, 0, 2, 108, 0, 2, 108, 108, 0, 2, 110, 0, 2, 114, 0, 2, 115,
+			0, 2, 116, 104, 0, 117, 0, 119, 2, 12, 3, 128, 0, 7, 6, 118, 0, 3, 84, 0, 8, 2, 32, 3, 84, 114, 0, 7, 6, 119,
+			0, 8, 2, 108, 3, 0, 4, 1, 103, 3, 58, 0, 2, 17, 65, 0, 4, 1, 10, 2, 25, 12, 3, 112, 0, 2, 17, 67, 0, 2,
+			17, 67, 17, 67, 0, 4, 3, 116, 0, 2, 98, 0, 2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 102, 0, 2, 102, 102, 0,
+			2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 8, 2, 32, 0, 119, 0, 121, 3, 132, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 2,
+			32, 3, 108, 49, 89, 0, 7, 6, 121, 0, 110, 8, 2, 32, 110, 3, 13, 0, 110, 8, 2, 32, 3, 13, 50, 0, 8, 2, 119, 3,
+			57, 0, 4, 2, 17, 67, 3, 110, 0, 2, 17, 67, 17, 67, 0, 4, 2, 21, 12, 3, 113, 0, 8, 2, 32, 0, 4, 3, 115, 0,
+			2, 99, 104, 0, 2, 100, 0, 2, 100, 100, 0, 2, 103, 0, 2, 115, 0, 2, 116, 104, 0, 119, 2, 12, 3, 128, 0, 7, 6, 122,
+			0, 3, 88, 0, 8, 2, 32, 3, 88, 116, 0, 7, 6, 0, 39, 114, 2, 32, 14, 128, 128, 130, 3, 34, 0, 195, 160, 3, 35, 0,
+			46, 3, 48, 132, 50, 47, 0, 39, 110, 2, 32, 14, 128, 128, 130, 3, 50, 0, 39, 99, 104, 2, 32, 14, 128, 128, 131, 3, 101, 0,
+			195, 168, 3, 108, 0, 195, 172, 3, 109, 0, 4, 195, 185, 3, 110, 0, 225, 187, 179, 0, 195, 178, 3, 111, 0, 225, 186, 129, 3, 112,
+			0, 4, 195, 174, 3, 114, 0, 195, 175, 0, 4, 195, 187, 3, 115, 0, 197, 183, 0, 197, 181, 3, 116, 0, 195, 170, 3, 117, 0, 195,
+			180, 3, 118, 0, 195, 162, 3, 119, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts10 = FileInMemory_createWithData (3461, reinterpret_cast<const char *> (&espeakdata_dicts10_data), 
+			U"espeak-1.48.04-source/espeak-data/cy_dict", 
 			U"cy");
-		Collection_addItem (me.peek(), espeakdata_dicts9.transfer());
+		my addItem_move (espeakdata_dicts10.move());
 
-		static unsigned char espeakdata_dicts10_data[193792] = {
-			0, 4, 0, 0, 203, 216, 1, 0, 12, 201, 60, 101, 1, 48, 211, 204, 60, 114, 64, 20, 12, 201, 48, 20, 153, 56, 115, 204, 60, 114,
-			64, 20, 12, 201, 24, 20, 141, 4, 179, 204, 60, 114, 64, 20, 13, 138, 1, 18, 11, 195, 166, 15, 12, 15, 7, 9, 20, 17, 142, 1,
-			14, 195, 166, 19, 20, 5, 19, 9, 15, 12, 15, 7, 9, 20, 15, 140, 6, 15, 18, 6, 195, 184, 18, 5, 18, 9, 19, 11, 20, 0,
-			26, 73, 8, 80, 200, 4, 209, 76, 76, 245, 147, 71, 36, 91, 35, 65, 6, 36, 12, 60, 89, 6, 114, 58, 89, 0, 0, 10, 199, 72,
-			17, 9, 60, 195, 199, 36, 20, 10, 199, 61, 53, 5, 60, 195, 199, 36, 20, 10, 199, 45, 35, 206, 60, 195, 199, 36, 20, 10, 199, 36,
-			181, 25, 60, 195, 199, 36, 20, 10, 199, 36, 179, 206, 60, 195, 199, 36, 20, 10, 199, 32, 148, 16, 60, 195, 199, 36, 20, 10, 199, 25,
-			33, 78, 60, 195, 199, 36, 20, 10, 199, 24, 147, 13, 60, 195, 199, 36, 20, 14, 203, 24, 147, 140, 4, 225, 9, 76, 84, 137, 56, 112,
-			20, 14, 203, 20, 180, 208, 72, 244, 18, 36, 84, 137, 56, 112, 20, 14, 203, 16, 81, 137, 9, 34, 76, 48, 84, 137, 56, 112, 20, 10,
-			199, 4, 69, 133, 72, 34, 69, 48, 20, 12, 201, 16, 144, 71, 56, 244, 212, 36, 49, 82, 20, 12, 201, 64, 243, 25, 80, 82, 206, 36,
-			177, 82, 20, 0, 17, 67, 52, 83, 128, 65, 36, 50, 15, 89, 114, 0, 81, 115, 195, 165, 32, 9, 198, 60, 224, 78, 37, 53, 0, 20,
-			9, 198, 9, 81, 134, 37, 53, 0, 20, 12, 201, 8, 81, 21, 36, 228, 212, 4, 211, 69, 67, 9, 198, 76, 84, 150, 36, 49, 82, 20,
-			9, 198, 16, 84, 193, 72, 209, 82, 20, 9, 198, 5, 4, 12, 36, 177, 82, 20, 12, 137, 19, 22, 195, 166, 18, 13, 5, 18, 9, 20,
-			12, 137, 4, 18, 195, 184, 13, 13, 5, 18, 9, 20, 9, 198, 4, 96, 84, 36, 177, 82, 20, 6, 195, 52, 83, 128, 8, 0, 9, 198,
-			36, 225, 21, 77, 68, 137, 20, 0, 13, 202, 64, 20, 143, 16, 243, 148, 60, 195, 199, 36, 20, 9, 198, 21, 33, 207, 56, 243, 64, 20,
-			9, 198, 4, 116, 143, 56, 243, 64, 20, 8, 197, 8, 192, 77, 21, 32, 20, 10, 135, 22, 195, 165, 19, 5, 18, 9, 20, 0, 9, 198,
-			65, 54, 75, 61, 49, 64, 20, 9, 198, 48, 22, 129, 72, 243, 128, 20, 9, 198, 80, 244, 147, 36, 243, 128, 20, 9, 198, 77, 64, 68,
-			36, 243, 128, 20, 9, 198, 8, 147, 12, 36, 243, 128, 20, 9, 198, 5, 82, 212, 36, 243, 128, 20, 12, 137, 7, 18, 195, 166, 3, 9,
-			19, 5, 18, 20, 11, 136, 6, 195, 166, 18, 7, 5, 18, 9, 20, 9, 198, 5, 0, 84, 37, 50, 192, 20, 12, 201, 52, 83, 1, 56,
-			179, 204, 36, 177, 82, 20, 12, 201, 16, 144, 71, 56, 244, 212, 36, 177, 82, 20, 10, 199, 52, 21, 83, 60, 193, 85, 52, 20, 9, 198,
-			4, 48, 197, 77, 50, 84, 20, 7, 196, 5, 0, 84, 36, 20, 9, 198, 56, 146, 207, 80, 147, 128, 20, 9, 198, 44, 20, 143, 80, 147,
-			128, 20, 10, 199, 33, 83, 65, 56, 148, 205, 20, 20, 10, 199, 4, 197, 18, 84, 148, 205, 20, 20, 9, 198, 76, 20, 129, 12, 83, 128,
-			20, 9, 198, 64, 19, 129, 52, 19, 128, 20, 9, 198, 44, 243, 150, 20, 229, 0, 20, 10, 199, 64, 84, 141, 4, 225, 78, 76, 20, 9,
-			198, 44, 243, 148, 4, 229, 0, 20, 9, 198, 5, 0, 78, 4, 113, 64, 20, 0, 17, 70, 72, 82, 137, 12, 84, 133, 34, 36, 57, 37,
-			89, 6, 36, 114, 0, 10, 199, 65, 35, 195, 20, 69, 82, 20, 20, 10, 199, 80, 19, 80, 60, 225, 82, 20, 20, 10, 199, 80, 16, 133,
-			48, 193, 82, 20, 20, 10, 199, 72, 80, 133, 48, 193, 82, 20, 20, 10, 199, 52, 241, 5, 48, 193, 82, 20, 20, 10, 199, 16, 84, 201,
-			28, 225, 82, 20, 20, 10, 199, 5, 4, 5, 48, 193, 82, 20, 20, 9, 198, 81, 38, 76, 48, 84, 137, 20, 9, 198, 49, 83, 83, 44,
-			84, 137, 20, 9, 198, 45, 82, 143, 56, 84, 137, 20, 9, 198, 45, 38, 68, 16, 84, 137, 20, 9, 198, 44, 192, 84, 80, 84, 137, 20,
-			9, 198, 17, 34, 76, 48, 84, 137, 20, 10, 199, 4, 224, 75, 60, 197, 84, 36, 20, 0, 11, 200, 77, 65, 82, 20, 244, 203, 61, 0,
-			20, 9, 198, 20, 193, 75, 81, 35, 206, 20, 7, 196, 52, 84, 193, 56, 21, 0, 12, 201, 81, 32, 78, 76, 101, 83, 36, 243, 128, 20,
-			12, 201, 77, 84, 16, 72, 84, 211, 36, 243, 128, 20, 12, 201, 72, 84, 1, 73, 66, 84, 36, 243, 128, 20, 12, 201, 45, 96, 68, 72,
-			147, 12, 36, 243, 128, 20, 12, 201, 44, 243, 80, 72, 84, 211, 36, 243, 128, 20, 12, 201, 36, 229, 5, 72, 18, 212, 36, 243, 128, 20,
-			12, 201, 20, 180, 208, 20, 66, 84, 36, 243, 128, 20, 12, 201, 24, 147, 15, 76, 241, 137, 45, 83, 64, 20, 12, 201, 80, 84, 146, 37,
-			67, 210, 37, 83, 64, 20, 12, 201, 60, 97, 133, 73, 67, 210, 37, 83, 64, 20, 8, 197, 16, 83, 148, 36, 224, 20, 8, 197, 8, 84,
-			140, 36, 224, 20, 13, 202, 88, 144, 212, 61, 34, 65, 56, 148, 205, 20, 20, 13, 202, 60, 36, 203, 85, 32, 78, 80, 148, 205, 20, 20,
-			13, 202, 16, 242, 212, 72, 147, 129, 72, 148, 205, 20, 20, 8, 197, 8, 84, 140, 36, 224, 20, 8, 197, 45, 83, 80, 4, 224, 21, 6,
-			65, 8, 71, 36, 0, 0, 18, 70, 52, 19, 129, 29, 80, 64, 65, 110, 50, 6, 110, 12, 81, 58, 110, 0, 9, 198, 72, 80, 75, 80,
-			244, 128, 20, 9, 198, 77, 1, 78, 16, 84, 128, 20, 9, 198, 76, 84, 15, 56, 84, 128, 20, 9, 198, 72, 84, 207, 56, 84, 128, 20,
-			9, 198, 72, 82, 137, 12, 84, 128, 20, 9, 198, 64, 245, 83, 76, 84, 128, 20, 9, 198, 61, 33, 9, 56, 84, 128, 20, 9, 198, 61,
-			4, 15, 56, 84, 128, 20, 9, 198, 44, 195, 193, 44, 84, 128, 20, 9, 198, 36, 212, 15, 56, 84, 128, 20, 9, 198, 25, 32, 80, 64,
-			84, 128, 20, 9, 198, 20, 225, 193, 28, 84, 128, 20, 9, 198, 5, 52, 213, 72, 84, 128, 20, 15, 140, 12, 195, 184, 19, 7, 195, 166,
-			14, 7, 5, 18, 9, 20, 8, 133, 195, 184, 4, 5, 13, 20, 9, 198, 5, 97, 79, 48, 20, 128, 20, 9, 198, 52, 147, 9, 80, 19,
-			148, 20, 9, 198, 4, 66, 149, 16, 19, 148, 20, 0, 10, 199, 32, 148, 212, 60, 195, 199, 36, 20, 9, 198, 52, 243, 143, 52, 19, 137,
-			20, 10, 199, 77, 82, 203, 84, 193, 78, 80, 20, 14, 203, 56, 21, 18, 37, 83, 66, 20, 230, 143, 5, 64, 20, 10, 199, 5, 48, 197,
-			56, 64, 78, 80, 20, 0, 15, 204, 44, 20, 129, 45, 65, 82, 37, 53, 9, 45, 83, 64, 20, 9, 198, 4, 224, 76, 101, 48, 66, 20,
-			7, 196, 21, 64, 71, 20, 20, 9, 68, 76, 208, 76, 48, 21, 0, 10, 0, 12, 201, 88, 149, 1, 52, 147, 137, 76, 84, 128, 20, 12,
-			201, 84, 225, 5, 73, 101, 82, 16, 84, 128, 20, 12, 201, 81, 32, 78, 77, 3, 210, 80, 84, 128, 20, 12, 201, 81, 32, 78, 76, 99,
-			210, 52, 84, 128, 20, 12, 201, 77, 68, 129, 80, 145, 137, 12, 84, 128, 20, 12, 201, 72, 83, 210, 28, 19, 137, 76, 84, 128, 20, 12,
-			201, 36, 229, 5, 72, 99, 204, 36, 84, 128, 20, 12, 201, 36, 212, 12, 20, 209, 78, 80, 84, 128, 20, 12, 201, 28, 192, 77, 61, 84,
-			137, 76, 84, 128, 20, 12, 201, 25, 32, 84, 21, 35, 137, 76, 84, 128, 20, 12, 201, 5, 85, 15, 56, 243, 73, 76, 84, 128, 20, 8,
-			197, 32, 245, 133, 72, 144, 20, 8, 197, 64, 85, 18, 60, 192, 20, 12, 201, 76, 178, 83, 52, 21, 9, 44, 84, 128, 20, 12, 201, 64,
-			20, 129, 49, 149, 9, 44, 84, 128, 20, 12, 201, 21, 128, 197, 57, 68, 137, 44, 84, 128, 20, 12, 201, 8, 192, 83, 24, 83, 73, 44,
-			84, 128, 20, 11, 136, 195, 184, 11, 15, 14, 15, 13, 9, 20, 6, 65, 12, 89, 36, 0, 0, 17, 70, 8, 83, 9, 104, 84, 128, 71,
-			36, 55, 37, 12, 89, 114, 0, 66, 12, 202, 65, 54, 75, 60, 96, 82, 52, 18, 207, 56, 9, 198, 72, 83, 133, 28, 84, 128, 20, 9,
-			198, 60, 97, 133, 72, 84, 128, 20, 9, 198, 52, 241, 5, 72, 84, 128, 20, 9, 198, 52, 148, 197, 72, 84, 128, 20, 9, 198, 36, 227,
-			143, 88, 84, 128, 20, 9, 198, 36, 225, 9, 12, 84, 128, 20, 9, 198, 24, 192, 77, 8, 84, 128, 20, 9, 198, 16, 148, 137, 28, 84,
-			128, 20, 9, 198, 16, 85, 15, 56, 84, 128, 20, 9, 198, 16, 84, 15, 56, 84, 128, 20, 9, 198, 16, 83, 9, 72, 84, 128, 20, 9,
-			198, 8, 147, 208, 80, 84, 128, 20, 12, 201, 45, 33, 65, 80, 147, 206, 37, 51, 69, 20, 9, 198, 45, 99, 212, 36, 83, 148, 20, 9,
-			198, 48, 81, 193, 80, 20, 128, 20, 9, 198, 76, 82, 211, 80, 19, 148, 20, 9, 198, 60, 178, 213, 64, 19, 148, 20, 9, 198, 45, 96,
-			68, 72, 19, 148, 20, 9, 198, 88, 84, 137, 80, 16, 128, 20, 0, 9, 198, 4, 116, 143, 56, 243, 73, 20, 9, 198, 4, 229, 9, 24,
-			243, 137, 20, 10, 199, 8, 144, 140, 36, 243, 65, 56, 21, 14, 4, 95, 8, 1, 3, 107, 6, 35, 76, 4, 109, 49, 0, 0, 14, 139,
-			7, 25, 14, 195, 166, 11, 15, 12, 15, 7, 9, 20, 11, 200, 77, 81, 199, 21, 53, 9, 60, 224, 20, 11, 200, 72, 84, 207, 73, 5,
-			9, 60, 224, 20, 9, 198, 44, 20, 142, 20, 243, 0, 20, 9, 198, 25, 33, 85, 16, 144, 78, 20, 0, 12, 201, 72, 81, 201, 77, 68,
-			129, 80, 244, 128, 20, 12, 201, 44, 243, 147, 21, 37, 129, 80, 244, 128, 20, 12, 201, 44, 243, 132, 20, 228, 193, 80, 244, 128, 20, 12,
-			201, 44, 243, 80, 20, 228, 193, 80, 244, 128, 20, 12, 201, 36, 195, 21, 77, 68, 129, 80, 244, 128, 20, 10, 135, 2, 5, 19, 22, 195,
-			166, 18, 20, 12, 201, 64, 243, 25, 52, 84, 137, 76, 84, 128, 20, 12, 201, 64, 192, 83, 80, 145, 137, 12, 84, 128, 20, 12, 201, 61,
-			3, 65, 28, 20, 201, 56, 84, 128, 20, 12, 201, 45, 96, 78, 80, 145, 137, 12, 84, 128, 20, 12, 201, 32, 145, 82, 5, 34, 201, 76,
-			84, 128, 20, 12, 201, 29, 147, 78, 5, 53, 9, 12, 84, 128, 20, 8, 197, 4, 226, 77, 21, 32, 20, 12, 201, 32, 243, 73, 48, 85,
-			9, 44, 84, 128, 20, 12, 201, 16, 144, 76, 20, 181, 9, 44, 84, 128, 20, 15, 204, 36, 229, 5, 73, 97, 78, 80, 147, 206, 37, 51,
-			69, 20, 6, 65, 16, 72, 36, 0, 0, 11, 136, 20, 5, 18, 20, 9, 195, 166, 18, 20, 11, 136, 8, 15, 14, 15, 18, 195, 166, 18,
-			20, 9, 198, 104, 243, 206, 61, 49, 64, 20, 9, 198, 56, 20, 139, 61, 49, 64, 20, 9, 198, 28, 197, 75, 61, 49, 64, 20, 16, 141,
-			6, 195, 166, 14, 15, 13, 5, 14, 15, 12, 15, 7, 9, 20, 9, 198, 76, 244, 130, 37, 67, 204, 20, 17, 70, 64, 83, 132, 4, 229,
-			0, 48, 112, 68, 72, 6, 112, 68, 0, 20, 0, 9, 198, 45, 82, 143, 56, 84, 133, 20, 9, 198, 44, 20, 146, 36, 84, 133, 20, 9,
-			198, 29, 34, 76, 48, 84, 133, 20, 10, 199, 61, 1, 143, 72, 209, 82, 20, 20, 9, 198, 48, 18, 197, 72, 84, 137, 20, 9, 198, 29,
-			37, 66, 48, 84, 137, 20, 10, 199, 21, 35, 212, 60, 208, 78, 36, 20, 9, 198, 33, 148, 132, 36, 225, 5, 20, 11, 67, 76, 147, 128,
-			89, 6, 37, 50, 0, 76, 0, 9, 198, 65, 35, 205, 61, 67, 210, 20, 11, 200, 12, 84, 148, 36, 98, 75, 5, 64, 20, 13, 138, 16,
-			18, 195, 166, 19, 5, 14, 20, 1, 2, 20, 0, 9, 198, 61, 67, 211, 44, 244, 0, 20, 12, 201, 45, 33, 65, 80, 149, 137, 80, 85,
-			0, 20, 12, 201, 88, 147, 132, 36, 49, 82, 36, 225, 192, 20, 12, 201, 77, 80, 147, 84, 209, 82, 36, 225, 192, 20, 12, 201, 76, 83,
-			5, 45, 65, 82, 36, 225, 192, 20, 12, 201, 64, 192, 84, 36, 225, 82, 36, 225, 192, 20, 12, 201, 64, 20, 211, 37, 97, 82, 36, 225,
-			192, 20, 12, 201, 64, 20, 208, 60, 193, 82, 36, 225, 192, 20, 12, 201, 61, 34, 69, 57, 65, 82, 36, 225, 192, 20, 12, 201, 52, 20,
-			141, 61, 33, 82, 36, 225, 192, 20, 12, 201, 48, 19, 69, 57, 65, 82, 36, 225, 192, 20, 12, 201, 45, 84, 147, 37, 97, 82, 36, 225,
-			192, 20, 12, 201, 44, 244, 212, 84, 209, 82, 36, 225, 192, 20, 12, 201, 44, 243, 134, 21, 33, 82, 36, 225, 192, 20, 12, 201, 44, 243,
-			66, 36, 225, 82, 36, 225, 192, 20, 12, 201, 44, 19, 11, 84, 193, 82, 36, 225, 192, 20, 12, 201, 36, 229, 5, 72, 225, 82, 36, 225,
-			192, 20, 12, 201, 36, 228, 212, 73, 81, 82, 36, 225, 192, 20, 12, 201, 36, 225, 143, 72, 209, 82, 36, 225, 192, 20, 12, 201, 36, 225,
-			12, 21, 97, 82, 36, 225, 192, 20, 12, 201, 24, 245, 82, 4, 113, 82, 36, 225, 192, 20, 12, 201, 20, 180, 208, 60, 225, 82, 36, 225,
-			192, 20, 12, 201, 16, 148, 208, 60, 225, 82, 36, 225, 192, 20, 12, 201, 16, 147, 73, 81, 65, 82, 36, 225, 192, 20, 12, 201, 16, 83,
-			69, 57, 65, 82, 36, 225, 192, 20, 12, 201, 16, 82, 204, 36, 225, 82, 36, 225, 192, 20, 12, 201, 16, 82, 204, 5, 33, 82, 36, 225,
-			192, 20, 12, 201, 12, 83, 5, 9, 33, 82, 36, 225, 192, 20, 12, 201, 8, 192, 78, 12, 129, 82, 36, 225, 192, 20, 12, 201, 8, 19,
-			1, 56, 49, 82, 36, 225, 192, 20, 12, 201, 5, 4, 18, 60, 33, 82, 36, 225, 192, 20, 12, 201, 48, 245, 134, 61, 35, 69, 48, 145,
-			192, 20, 0, 11, 136, 11, 22, 195, 166, 19, 20, 15, 18, 20, 9, 198, 21, 0, 85, 48, 85, 0, 20, 9, 198, 52, 147, 12, 36, 243,
-			128, 20, 9, 198, 20, 194, 83, 36, 243, 128, 20, 9, 198, 76, 19, 137, 80, 85, 0, 20, 9, 198, 44, 21, 137, 80, 85, 0, 20, 9,
-			198, 20, 229, 9, 80, 85, 0, 20, 9, 198, 44, 20, 146, 85, 49, 76, 20, 12, 201, 77, 80, 138, 20, 181, 9, 88, 84, 133, 20, 12,
-			201, 29, 82, 76, 48, 245, 9, 56, 84, 133, 20, 12, 201, 16, 147, 5, 81, 64, 78, 80, 84, 137, 20, 9, 198, 77, 147, 148, 21, 49,
-			64, 20, 9, 198, 16, 82, 207, 73, 83, 64, 20, 9, 198, 56, 144, 133, 56, 149, 0, 20, 9, 198, 16, 242, 212, 72, 147, 128, 20, 12,
-			137, 7, 18, 195, 166, 3, 9, 19, 13, 5, 20, 9, 198, 72, 81, 133, 72, 21, 0, 20, 9, 198, 36, 229, 18, 36, 176, 84, 20, 9,
-			198, 36, 226, 21, 52, 19, 128, 21, 9, 198, 17, 83, 3, 36, 19, 128, 21, 9, 198, 4, 116, 129, 52, 19, 128, 21, 0, 9, 198, 4,
-			84, 143, 17, 35, 205, 20, 10, 199, 24, 19, 19, 44, 225, 82, 36, 20, 10, 199, 77, 98, 71, 4, 117, 9, 28, 20, 9, 198, 52, 17,
-			206, 21, 50, 69, 20, 10, 199, 80, 84, 141, 60, 116, 129, 24, 20, 10, 199, 44, 244, 133, 60, 116, 129, 24, 20, 10, 199, 77, 98, 71,
-			4, 117, 9, 28, 20, 0, 9, 198, 48, 16, 146, 4, 67, 210, 20, 9, 198, 44, 244, 146, 36, 67, 210, 20, 9, 198, 20, 193, 86, 5,
-			67, 210, 20, 15, 204, 81, 32, 78, 77, 3, 1, 57, 65, 82, 36, 225, 192, 20, 15, 204, 80, 82, 206, 60, 195, 199, 37, 49, 82, 36,
-			225, 192, 20, 15, 204, 44, 243, 80, 72, 243, 73, 81, 65, 82, 36, 225, 192, 20, 15, 204, 36, 228, 212, 73, 83, 69, 57, 65, 82, 36,
-			225, 192, 20, 15, 204, 36, 211, 65, 81, 34, 75, 84, 193, 82, 36, 225, 192, 20, 15, 204, 8, 144, 140, 36, 241, 210, 4, 97, 82, 36,
-			225, 192, 20, 9, 198, 77, 147, 132, 36, 177, 82, 20, 9, 198, 73, 80, 146, 36, 49, 82, 20, 9, 198, 24, 84, 142, 37, 49, 82, 20,
-			15, 204, 20, 180, 200, 36, 34, 84, 36, 243, 137, 76, 209, 64, 20, 6, 195, 76, 147, 133, 76, 0, 12, 201, 81, 32, 78, 76, 18, 212,
-			36, 243, 128, 20, 12, 201, 72, 84, 212, 37, 69, 84, 36, 243, 128, 20, 12, 201, 64, 244, 201, 80, 149, 137, 80, 85, 0, 20, 12, 201,
-			56, 81, 193, 80, 149, 137, 80, 85, 0, 20, 12, 201, 52, 147, 137, 77, 65, 82, 37, 83, 64, 20, 8, 197, 80, 84, 141, 36, 176, 20,
-			8, 197, 80, 83, 210, 20, 208, 20, 8, 197, 8, 17, 193, 28, 80, 20, 6, 65, 24, 109, 83, 0, 0, 10, 135, 11, 21, 18, 9, 195,
-			184, 19, 20, 9, 198, 65, 83, 12, 36, 213, 84, 20, 9, 198, 28, 83, 204, 60, 114, 64, 20, 9, 198, 17, 35, 199, 37, 53, 0, 20,
-			13, 202, 25, 37, 71, 81, 51, 205, 52, 83, 9, 28, 20, 9, 198, 64, 19, 132, 20, 210, 64, 20, 9, 198, 60, 33, 21, 12, 83, 148,
-			20, 0, 10, 199, 48, 147, 78, 60, 195, 199, 36, 20, 10, 199, 29, 32, 70, 60, 195, 199, 36, 20, 10, 199, 28, 83, 77, 60, 195, 199,
-			36, 20, 10, 199, 5, 81, 9, 60, 195, 199, 36, 20, 12, 137, 16, 18, 195, 166, 3, 9, 19, 5, 18, 20, 12, 201, 64, 84, 147, 60,
-			226, 70, 36, 49, 82, 20, 12, 201, 52, 20, 203, 84, 194, 78, 37, 49, 82, 20, 10, 199, 36, 70, 76, 48, 146, 197, 72, 20, 10, 199,
-			8, 245, 1, 56, 146, 197, 72, 20, 13, 138, 16, 18, 195, 166, 12, 21, 4, 9, 21, 13, 20, 17, 70, 105, 80, 195, 32, 147, 137, 89,
-			40, 49, 6, 37, 50, 37, 0, 20, 9, 198, 49, 81, 15, 52, 19, 137, 20, 12, 201, 25, 83, 132, 4, 209, 78, 80, 19, 0, 20, 10,
-			199, 8, 20, 212, 60, 224, 68, 20, 20, 0, 9, 134, 22, 9, 7, 195, 184, 18, 20, 7, 196, 45, 84, 15, 56, 20, 11, 200, 80, 21,
-			15, 88, 84, 137, 56, 112, 20, 11, 200, 76, 242, 71, 56, 84, 137, 56, 112, 20, 11, 200, 20, 210, 71, 72, 84, 137, 56, 112, 20, 11,
-			200, 16, 81, 137, 48, 84, 137, 56, 112, 20, 11, 200, 8, 243, 137, 80, 84, 137, 56, 112, 20, 9, 198, 77, 1, 67, 36, 83, 0, 20,
-			11, 200, 16, 148, 212, 4, 224, 197, 72, 80, 20, 11, 200, 5, 52, 201, 77, 64, 78, 12, 80, 20, 9, 198, 61, 5, 9, 52, 19, 0,
-			20, 0, 13, 138, 13, 25, 19, 20, 5, 18, 9, 195, 184, 19, 20, 10, 135, 13, 1, 19, 19, 195, 184, 18, 20, 10, 135, 13, 1, 18,
-			11, 195, 184, 18, 20, 8, 197, 56, 147, 194, 36, 80, 20, 8, 197, 20, 228, 201, 4, 224, 21, 8, 197, 53, 84, 197, 4, 192, 20, 6,
-			65, 28, 81, 36, 0, 0, 9, 198, 72, 84, 1, 72, 84, 128, 20, 9, 198, 64, 17, 201, 56, 84, 128, 20, 9, 198, 45, 98, 84, 80,
-			84, 128, 20, 9, 198, 40, 243, 137, 76, 84, 128, 20, 9, 198, 36, 225, 9, 44, 84, 128, 20, 9, 198, 28, 195, 211, 76, 84, 128, 20,
-			13, 202, 20, 180, 203, 60, 211, 85, 56, 146, 197, 72, 20, 9, 198, 8, 20, 146, 36, 84, 128, 20, 9, 198, 4, 33, 9, 12, 84, 128,
-			20, 12, 201, 52, 20, 203, 84, 194, 78, 37, 51, 69, 20, 9, 198, 76, 192, 86, 60, 98, 76, 20, 9, 198, 88, 81, 197, 80, 20, 128,
-			20, 0, 12, 137, 18, 5, 7, 9, 19, 19, 195, 184, 18, 20, 9, 198, 25, 148, 201, 85, 33, 201, 20, 9, 198, 88, 20, 197, 48, 147,
-			133, 20, 9, 198, 28, 83, 1, 80, 147, 133, 20, 14, 203, 72, 83, 1, 80, 149, 137, 76, 84, 137, 56, 112, 20, 10, 199, 52, 19, 137,
-			65, 83, 5, 72, 20, 10, 199, 48, 81, 201, 80, 147, 69, 72, 20, 9, 198, 76, 18, 210, 37, 53, 9, 20, 9, 198, 88, 20, 197, 48,
-			147, 133, 20, 10, 199, 72, 145, 207, 72, 148, 205, 20, 20, 10, 199, 32, 147, 132, 84, 148, 205, 20, 20, 10, 199, 28, 21, 76, 48, 148,
-			205, 20, 20, 9, 198, 20, 194, 84, 37, 51, 69, 20, 10, 199, 16, 148, 137, 28, 148, 205, 20, 20, 10, 199, 88, 242, 193, 9, 83, 1,
-			72, 20, 6, 195, 44, 19, 128, 76, 14, 4, 95, 51, 88, 15, 47, 34, 6, 111, 83, 47, 13, 0, 0, 11, 200, 88, 145, 9, 52, 84,
-			137, 56, 112, 20, 11, 200, 56, 243, 73, 56, 84, 137, 56, 112, 20, 11, 200, 52, 84, 137, 80, 84, 137, 56, 112, 20, 11, 200, 5, 96,
-			78, 12, 84, 137, 56, 112, 20, 7, 196, 20, 180, 201, 48, 20, 0, 28, 67, 80, 245, 82, 47, 40, 12, 13, 72, 13, 15, 6, 83, 114,
-			12, 89, 0, 82, 100, 101, 32, 102, 111, 114, 99, 101, 32, 12, 201, 36, 225, 137, 49, 68, 129, 80, 244, 128, 20, 12, 201, 16, 83, 79,
-			17, 83, 1, 80, 244, 128, 20, 10, 135, 18, 1, 4, 9, 195, 166, 18, 20, 12, 201, 44, 243, 12, 5, 66, 79, 56, 84, 128, 20, 12,
-			201, 12, 83, 148, 72, 19, 9, 76, 84, 128, 20, 7, 65, 32, 107, 113, 12, 0, 0, 9, 198, 8, 243, 137, 80, 85, 0, 20, 9, 198,
-			4, 194, 193, 48, 242, 68, 20, 9, 198, 64, 84, 137, 45, 83, 64, 20, 9, 198, 16, 81, 137, 56, 149, 0, 20, 9, 198, 88, 20, 197,
-			48, 147, 128, 20, 9, 198, 48, 80, 201, 80, 147, 128, 20, 12, 201, 72, 21, 9, 60, 224, 76, 37, 51, 69, 20, 12, 201, 64, 21, 5,
-			72, 224, 76, 37, 51, 69, 20, 9, 198, 77, 147, 132, 36, 176, 84, 20, 9, 198, 52, 243, 143, 52, 19, 128, 21, 9, 198, 49, 81, 15,
-			52, 19, 128, 21, 9, 198, 5, 54, 76, 4, 229, 0, 20, 0, 25, 67, 28, 21, 128, 81, 110, 15, 89, 35, 57, 15, 47, 36, 55, 0,
-			82, 115, 105, 103, 32, 116, 105, 108, 32, 14, 203, 84, 68, 1, 72, 49, 76, 48, 84, 137, 56, 112, 20, 14, 203, 36, 225, 11, 4, 194,
-			213, 48, 84, 137, 56, 112, 20, 10, 199, 77, 68, 137, 44, 177, 82, 36, 20, 9, 198, 44, 21, 5, 28, 244, 137, 20, 6, 195, 5, 67,
-			204, 20, 0, 6, 195, 5, 67, 205, 20, 9, 198, 25, 84, 201, 60, 225, 82, 20, 9, 198, 8, 20, 212, 60, 225, 82, 20, 9, 1, 35,
-			50, 6, 113, 65, 114, 0, 0, 22, 65, 36, 37, 15, 49, 84, 6, 112, 12, 72, 114, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 12,
-			201, 44, 20, 130, 61, 37, 78, 17, 83, 64, 20, 12, 201, 64, 20, 148, 36, 50, 80, 37, 83, 64, 20, 15, 204, 65, 35, 198, 21, 52,
-			201, 60, 224, 76, 37, 51, 69, 20, 12, 201, 4, 193, 75, 76, 19, 132, 72, 147, 128, 20, 7, 65, 36, 10, 37, 0, 76, 0, 9, 198,
-			77, 64, 84, 36, 243, 128, 20, 11, 136, 8, 195, 165, 14, 4, 20, 5, 18, 20, 13, 202, 44, 243, 147, 21, 37, 129, 80, 244, 137, 20,
-			20, 9, 198, 52, 17, 206, 21, 50, 84, 20, 9, 198, 28, 20, 207, 48, 147, 128, 20, 9, 198, 65, 84, 137, 80, 19, 128, 20, 13, 1,
-			37, 48, 51, 39, 89, 6, 36, 50, 72, 0, 27, 0, 10, 199, 53, 84, 201, 44, 243, 15, 28, 20, 10, 199, 25, 85, 21, 72, 243, 15,
-			28, 20, 10, 199, 21, 50, 201, 52, 243, 15, 28, 20, 10, 199, 16, 83, 132, 72, 243, 15, 28, 20, 9, 198, 77, 2, 79, 56, 84, 133,
-			20, 9, 198, 52, 20, 137, 56, 84, 133, 20, 9, 198, 29, 37, 78, 16, 84, 133, 20, 9, 198, 28, 20, 129, 28, 84, 133, 20, 9, 198,
-			24, 145, 213, 72, 84, 133, 20, 9, 198, 81, 38, 75, 44, 84, 137, 20, 9, 198, 76, 225, 82, 64, 84, 137, 20, 9, 198, 76, 180, 137,
-			88, 84, 137, 20, 10, 199, 48, 19, 135, 52, 241, 9, 28, 20, 10, 199, 24, 244, 133, 56, 83, 9, 28, 20, 10, 199, 32, 83, 22, 21,
-			66, 83, 44, 20, 10, 199, 20, 226, 204, 37, 66, 83, 44, 20, 10, 199, 20, 224, 217, 44, 194, 83, 44, 20, 10, 199, 8, 84, 130, 21,
-			34, 83, 44, 20, 12, 201, 81, 148, 15, 80, 82, 206, 36, 177, 82, 20, 15, 140, 16, 18, 15, 16, 195, 166, 4, 5, 21, 20, 9, 11,
-			20, 10, 199, 77, 65, 78, 60, 116, 129, 24, 20, 10, 199, 48, 19, 135, 4, 117, 9, 28, 20, 12, 137, 6, 195, 184, 4, 19, 5, 12,
-			1, 18, 20, 6, 1, 38, 114, 58, 0, 0, 9, 198, 36, 225, 21, 45, 67, 210, 20, 7, 196, 64, 241, 83, 36, 20, 13, 138, 195, 166,
-			11, 22, 9, 22, 1, 12, 5, 18, 20, 7, 196, 64, 19, 137, 44, 20, 11, 200, 64, 243, 148, 36, 98, 75, 5, 64, 20, 13, 1, 39,
-			35, 48, 39, 89, 47, 34, 6, 114, 83, 0, 0, 12, 201, 81, 33, 80, 4, 224, 84, 36, 243, 128, 20, 12, 201, 65, 35, 198, 4, 224,
-			84, 36, 243, 128, 20, 12, 201, 44, 243, 208, 21, 32, 84, 36, 243, 128, 20, 12, 201, 36, 228, 203, 72, 148, 20, 36, 243, 128, 20, 12,
-			201, 36, 226, 193, 72, 224, 84, 36, 243, 128, 20, 12, 201, 25, 37, 83, 81, 32, 84, 36, 243, 128, 20, 12, 201, 21, 96, 80, 61, 32,
-			84, 36, 243, 128, 20, 12, 201, 16, 84, 18, 5, 96, 84, 36, 243, 128, 20, 12, 201, 5, 36, 133, 77, 64, 84, 36, 243, 128, 20, 12,
-			201, 4, 97, 133, 45, 64, 84, 36, 243, 128, 20, 12, 201, 4, 48, 197, 65, 64, 84, 36, 243, 128, 20, 8, 197, 44, 20, 130, 60, 192,
-			20, 12, 201, 12, 19, 9, 24, 244, 142, 36, 83, 128, 20, 8, 197, 4, 180, 201, 4, 192, 20, 7, 65, 40, 57, 114, 86, 0, 0, 9,
-			198, 81, 148, 9, 76, 84, 128, 20, 9, 198, 80, 243, 5, 72, 84, 128, 20, 9, 198, 77, 81, 134, 48, 84, 128, 20, 9, 198, 77, 64,
-			71, 56, 84, 128, 20, 9, 198, 76, 84, 1, 72, 84, 128, 20, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 49, 82, 20, 9,
-			198, 52, 83, 129, 28, 84, 128, 20, 9, 198, 44, 243, 15, 72, 84, 128, 20, 9, 198, 36, 243, 137, 76, 84, 128, 20, 9, 198, 28, 19,
-			15, 56, 84, 128, 20, 9, 198, 21, 64, 66, 48, 84, 128, 20, 9, 198, 16, 19, 137, 76, 84, 128, 20, 9, 198, 5, 97, 82, 80, 84,
-			128, 20, 9, 198, 4, 67, 213, 12, 84, 128, 20, 12, 201, 44, 148, 211, 20, 210, 83, 76, 84, 137, 20, 13, 202, 77, 147, 139, 72, 85,
-			9, 77, 66, 83, 44, 20, 13, 202, 76, 84, 1, 72, 21, 9, 77, 66, 83, 44, 20, 13, 202, 52, 147, 137, 52, 19, 9, 77, 66, 83,
-			44, 20, 13, 202, 25, 32, 71, 52, 83, 148, 5, 34, 83, 44, 20, 13, 202, 24, 147, 1, 80, 83, 9, 77, 66, 83, 44, 20, 13, 202,
-			16, 242, 213, 52, 83, 148, 5, 34, 83, 44, 20, 13, 202, 5, 34, 201, 80, 82, 212, 60, 226, 83, 44, 20, 9, 198, 16, 148, 137, 28,
-			83, 148, 20, 0, 12, 201, 44, 243, 131, 20, 229, 18, 5, 67, 210, 20, 10, 199, 44, 244, 205, 60, 195, 199, 36, 20, 12, 201, 4, 32,
-			146, 21, 98, 65, 80, 147, 206, 20, 10, 199, 36, 225, 22, 20, 225, 9, 28, 20, 10, 199, 104, 243, 204, 60, 114, 83, 44, 20, 10, 199,
-			24, 244, 133, 57, 50, 83, 44, 20, 10, 199, 9, 84, 141, 21, 50, 83, 44, 20, 9, 198, 53, 149, 15, 52, 19, 137, 20, 9, 198, 104,
-			147, 206, 37, 51, 69, 20, 10, 199, 36, 229, 5, 56, 64, 78, 80, 20, 10, 199, 5, 4, 5, 48, 192, 78, 80, 20, 15, 1, 42, 6,
-			35, 89, 72, 110, 34, 4, 37, 89, 81, 0, 27, 0, 19, 72, 8, 82, 71, 56, 85, 4, 20, 160, 71, 36, 68, 36, 72, 35, 57, 0,
-			66, 13, 138, 195, 166, 19, 20, 5, 20, 9, 19, 5, 18, 20, 7, 196, 49, 84, 9, 56, 20, 11, 200, 44, 243, 148, 72, 243, 12, 4,
-			32, 20, 11, 200, 36, 224, 67, 12, 84, 20, 4, 32, 20, 8, 1, 43, 48, 55, 40, 89, 0, 0, 12, 201, 52, 19, 137, 65, 83, 1,
-			80, 244, 128, 20, 12, 201, 44, 243, 80, 72, 147, 65, 80, 244, 128, 20, 12, 201, 44, 148, 143, 65, 32, 75, 80, 244, 128, 20, 8, 197,
-			8, 81, 21, 36, 224, 67, 12, 201, 81, 32, 78, 76, 101, 78, 16, 84, 128, 20, 12, 201, 77, 147, 139, 72, 243, 137, 76, 84, 128, 20,
-			8, 197, 76, 145, 206, 21, 32, 20, 12, 201, 52, 18, 193, 16, 19, 73, 76, 84, 128, 20, 12, 201, 44, 243, 132, 37, 66, 79, 56, 84,
-			128, 20, 12, 201, 44, 195, 210, 60, 99, 210, 52, 84, 128, 20, 12, 201, 44, 192, 83, 76, 145, 137, 12, 84, 128, 20, 8, 197, 33, 145,
-			18, 21, 32, 20, 8, 197, 25, 84, 142, 21, 32, 20, 12, 201, 20, 180, 212, 72, 21, 129, 28, 84, 128, 20, 12, 201, 77, 64, 84, 37,
-			53, 9, 44, 84, 128, 20, 12, 201, 76, 179, 204, 5, 53, 9, 44, 84, 128, 20, 12, 201, 76, 19, 135, 88, 147, 137, 44, 84, 128, 20,
-			12, 201, 60, 36, 212, 21, 68, 137, 44, 84, 128, 20, 12, 201, 4, 194, 207, 32, 243, 9, 44, 84, 128, 20, 8, 197, 8, 81, 21, 36,
-			224, 20, 11, 136, 13, 25, 24, 195, 184, 4, 5, 13, 20, 8, 197, 48, 147, 133, 4, 192, 20, 8, 197, 48, 16, 137, 4, 192, 20, 12,
-			201, 65, 35, 212, 84, 33, 82, 4, 228, 192, 20, 7, 65, 44, 49, 113, 12, 0, 0, 9, 198, 56, 21, 137, 28, 84, 128, 20, 9, 198,
-			16, 82, 207, 72, 84, 128, 20, 13, 202, 44, 147, 133, 76, 147, 204, 60, 114, 83, 44, 20, 12, 201, 72, 85, 137, 76, 147, 206, 37, 51,
-			69, 20, 9, 198, 76, 180, 137, 8, 83, 148, 20, 9, 198, 61, 4, 15, 56, 83, 148, 20, 9, 198, 25, 33, 75, 88, 83, 148, 20, 14,
-			139, 195, 166, 11, 22, 9, 22, 1, 12, 5, 14, 19, 20, 9, 198, 41, 80, 137, 48, 20, 128, 20, 0, 9, 67, 28, 149, 128, 81, 6,
-			37, 0, 10, 199, 44, 243, 132, 20, 228, 207, 72, 20, 16, 141, 7, 18, 195, 184, 14, 12, 1, 14, 4, 9, 19, 5, 18, 20, 9, 198,
-			32, 81, 197, 52, 243, 137, 20, 9, 198, 76, 192, 86, 36, 225, 5, 20, 14, 139, 195, 166, 11, 22, 9, 22, 1, 12, 5, 14, 20, 20,
-			10, 199, 81, 34, 75, 61, 64, 71, 20, 20, 0, 11, 200, 81, 32, 78, 77, 2, 82, 21, 32, 20, 11, 200, 81, 32, 78, 76, 97, 82,
-			21, 32, 20, 11, 200, 76, 19, 139, 80, 147, 206, 21, 32, 20, 11, 200, 64, 20, 129, 29, 32, 70, 21, 32, 20, 15, 204, 61, 1, 82,
-			5, 66, 79, 56, 19, 9, 76, 84, 128, 20, 11, 200, 60, 34, 133, 45, 66, 86, 21, 32, 20, 11, 200, 44, 147, 15, 52, 85, 18, 21,
-			32, 20, 11, 200, 36, 229, 5, 73, 97, 78, 21, 32, 20, 11, 200, 28, 20, 142, 37, 51, 206, 21, 32, 20, 11, 200, 77, 147, 66, 36,
-			245, 9, 76, 176, 20, 11, 200, 44, 148, 137, 8, 21, 9, 76, 176, 20, 11, 200, 20, 226, 71, 52, 21, 9, 76, 176, 20, 11, 200, 4,
-			193, 77, 4, 227, 137, 76, 176, 20, 15, 204, 64, 20, 140, 4, 209, 78, 80, 20, 137, 44, 84, 128, 20, 7, 196, 77, 67, 205, 36, 20,
-			11, 200, 65, 35, 214, 36, 228, 201, 4, 224, 20, 11, 200, 9, 32, 78, 16, 84, 201, 4, 224, 20, 9, 198, 64, 20, 148, 37, 48, 78,
-			21, 11, 200, 44, 21, 5, 28, 244, 137, 4, 192, 20, 14, 1, 47, 89, 81, 51, 114, 89, 72, 34, 35, 37, 0, 27, 0, 12, 201, 56,
-			243, 69, 56, 179, 1, 80, 244, 128, 20, 12, 201, 4, 178, 213, 53, 83, 1, 80, 244, 128, 20, 12, 201, 76, 243, 9, 16, 20, 137, 76,
-			84, 128, 20, 12, 201, 76, 82, 213, 48, 20, 137, 76, 84, 128, 20, 12, 201, 72, 82, 207, 28, 227, 211, 12, 84, 128, 20, 12, 201, 52,
-			147, 9, 80, 20, 137, 76, 84, 128, 20, 12, 201, 44, 243, 139, 72, 85, 9, 76, 84, 128, 20, 12, 201, 36, 65, 78, 80, 145, 137, 12,
-			84, 128, 20, 8, 197, 32, 19, 22, 21, 32, 20, 8, 197, 24, 195, 210, 21, 32, 20, 8, 197, 65, 35, 211, 37, 64, 20, 8, 197, 64,
-			192, 75, 5, 64, 20, 6, 65, 48, 109, 55, 0, 10, 67, 33, 99, 210, 84, 6, 114, 34, 0, 0, 9, 198, 52, 19, 20, 61, 49, 64,
-			20, 9, 198, 16, 144, 77, 4, 229, 0, 20, 11, 70, 92, 130, 80, 12, 244, 132, 21, 0, 10, 0, 9, 198, 77, 68, 153, 28, 84, 137,
-			20, 10, 199, 76, 179, 205, 4, 113, 82, 36, 20, 10, 199, 64, 20, 134, 84, 209, 82, 36, 20, 14, 203, 20, 193, 75, 81, 35, 211, 80,
-			21, 9, 76, 176, 20, 0, 9, 198, 44, 243, 132, 37, 67, 210, 20, 9, 198, 25, 83, 132, 5, 67, 210, 20, 9, 198, 16, 146, 212, 5,
-			67, 210, 20, 9, 198, 8, 85, 129, 81, 35, 206, 20, 11, 200, 77, 80, 147, 45, 34, 66, 21, 32, 20, 11, 200, 65, 35, 211, 45, 34,
-			66, 21, 32, 20, 12, 137, 1, 6, 8, 195, 166, 14, 7, 9, 7, 20, 11, 200, 52, 21, 18, 36, 20, 139, 5, 64, 20, 9, 68, 13,
-			148, 149, 76, 21, 0, 10, 0, 12, 201, 8, 84, 212, 36, 19, 9, 80, 85, 0, 69, 12, 201, 85, 53, 1, 8, 147, 9, 80, 85, 0,
-			20, 12, 201, 76, 83, 147, 84, 19, 9, 80, 85, 0, 20, 12, 201, 36, 229, 129, 48, 145, 9, 80, 85, 0, 20, 12, 201, 36, 211, 79,
-			8, 147, 9, 80, 85, 0, 20, 12, 201, 36, 195, 5, 28, 19, 9, 80, 85, 0, 20, 12, 201, 8, 84, 212, 36, 19, 9, 80, 85, 0,
-			20, 12, 201, 4, 224, 201, 20, 227, 137, 80, 85, 0, 20, 12, 201, 77, 65, 87, 5, 33, 5, 77, 49, 64, 20, 9, 198, 25, 33, 75,
-			88, 83, 147, 20, 9, 198, 77, 80, 147, 80, 19, 147, 20, 6, 65, 52, 109, 65, 0, 0, 9, 198, 60, 181, 1, 28, 243, 128, 20, 9,
-			198, 88, 84, 147, 36, 243, 128, 20, 9, 198, 61, 96, 84, 36, 243, 128, 20, 9, 198, 24, 148, 211, 36, 243, 128, 20, 6, 195, 52, 83,
-			147, 8, 0, 10, 199, 52, 147, 133, 72, 19, 15, 28, 20, 10, 199, 45, 33, 77, 48, 243, 15, 28, 20, 10, 199, 45, 83, 20, 85, 35,
-			9, 28, 20, 10, 199, 28, 83, 5, 4, 117, 9, 28, 20, 10, 199, 80, 83, 210, 21, 66, 83, 44, 20, 10, 199, 80, 19, 201, 77, 66,
-			83, 44, 20, 10, 199, 76, 241, 137, 77, 66, 83, 44, 20, 10, 199, 56, 83, 204, 37, 66, 83, 44, 20, 10, 199, 56, 82, 210, 61, 66,
-			83, 44, 20, 10, 199, 52, 243, 137, 77, 66, 83, 44, 20, 10, 199, 20, 193, 75, 81, 34, 83, 44, 20, 10, 199, 4, 224, 76, 101, 66,
-			83, 44, 20, 10, 199, 44, 20, 148, 60, 116, 129, 24, 20, 0, 11, 200, 20, 194, 77, 36, 224, 84, 61, 32, 20, 14, 68, 92, 17, 207,
-			56, 84, 110, 81, 6, 114, 68, 0, 20, 9, 198, 64, 192, 83, 81, 35, 206, 20, 15, 204, 29, 32, 77, 52, 21, 9, 44, 19, 9, 80,
-			85, 0, 20, 12, 201, 33, 145, 210, 61, 50, 207, 64, 148, 203, 20, 7, 196, 60, 35, 9, 44, 20, 11, 200, 64, 21, 18, 36, 20, 139,
-			5, 64, 20, 0, 8, 197, 104, 243, 204, 60, 112, 20, 12, 201, 81, 32, 78, 76, 192, 84, 36, 243, 128, 20, 12, 201, 77, 1, 75, 84,
-			192, 84, 36, 243, 128, 20, 12, 201, 72, 84, 197, 73, 96, 84, 36, 243, 128, 20, 12, 201, 65, 35, 199, 72, 84, 211, 36, 243, 128, 20,
-			12, 201, 64, 84, 134, 61, 32, 84, 36, 243, 128, 20, 12, 201, 60, 36, 197, 73, 96, 84, 36, 243, 128, 20, 12, 201, 48, 19, 69, 57,
-			64, 84, 36, 243, 128, 20, 12, 201, 45, 83, 13, 36, 224, 84, 36, 243, 128, 20, 12, 201, 44, 243, 147, 84, 212, 20, 36, 243, 128, 20,
-			12, 201, 44, 243, 142, 61, 64, 84, 36, 243, 128, 20, 12, 201, 44, 243, 80, 5, 32, 84, 36, 243, 128, 20, 12, 201, 44, 243, 77, 85,
-			64, 84, 36, 243, 128, 20, 12, 201, 44, 243, 66, 36, 224, 84, 36, 243, 128, 20, 12, 201, 44, 19, 11, 84, 192, 84, 36, 243, 128, 20,
-			12, 201, 36, 229, 5, 29, 32, 84, 36, 243, 128, 20, 12, 201, 36, 228, 208, 37, 32, 84, 36, 243, 128, 20, 12, 201, 36, 225, 9, 28,
-			224, 84, 36, 243, 128, 20, 12, 201, 29, 32, 84, 84, 192, 84, 36, 243, 128, 20, 12, 201, 20, 180, 193, 49, 64, 84, 36, 243, 128, 20,
-			12, 201, 16, 84, 212, 36, 224, 84, 36, 243, 128, 20, 12, 201, 16, 84, 203, 72, 148, 20, 36, 243, 128, 20, 12, 201, 16, 84, 197, 73,
-			64, 84, 36, 243, 128, 20, 12, 201, 16, 84, 15, 73, 64, 84, 36, 243, 128, 20, 12, 201, 16, 82, 204, 36, 224, 84, 36, 243, 128, 20,
-			12, 201, 8, 19, 12, 61, 64, 84, 36, 243, 128, 20, 12, 201, 5, 69, 5, 77, 64, 84, 36, 243, 128, 20, 12, 201, 5, 4, 18, 60,
-			32, 84, 36, 243, 128, 20, 12, 201, 4, 36, 197, 57, 64, 84, 36, 243, 128, 20, 12, 201, 84, 226, 70, 61, 35, 73, 80, 85, 0, 20,
-			12, 201, 72, 17, 9, 44, 19, 9, 80, 85, 0, 20, 12, 201, 44, 20, 1, 8, 147, 9, 80, 85, 0, 20, 12, 201, 32, 243, 79, 28,
-			83, 137, 80, 85, 0, 20, 12, 201, 72, 81, 133, 45, 67, 210, 37, 83, 64, 20, 12, 201, 65, 35, 214, 37, 51, 210, 37, 83, 64, 20,
-			12, 201, 45, 33, 77, 5, 67, 210, 37, 83, 64, 20, 8, 197, 44, 243, 15, 56, 144, 20, 12, 201, 81, 32, 78, 77, 3, 210, 80, 21,
-			0, 20, 9, 198, 36, 212, 5, 16, 19, 147, 20, 6, 65, 56, 109, 50, 0, 9, 5, 95, 48, 1, 14, 4, 114, 0, 0, 10, 135, 6,
-			21, 18, 9, 195, 184, 19, 20, 9, 198, 44, 193, 82, 21, 50, 64, 20, 9, 198, 40, 19, 15, 85, 50, 64, 20, 13, 202, 28, 20, 212,
-			72, 244, 203, 61, 2, 83, 44, 20, 13, 202, 20, 193, 75, 81, 35, 204, 101, 66, 83, 44, 20, 13, 202, 4, 229, 1, 28, 243, 137, 77,
-			66, 83, 44, 20, 13, 202, 4, 224, 75, 72, 243, 137, 77, 66, 83, 44, 20, 9, 198, 36, 225, 5, 12, 83, 148, 20, 9, 198, 20, 179,
-			1, 80, 19, 148, 20, 0, 11, 136, 16, 18, 5, 20, 9, 195, 184, 19, 20, 12, 137, 9, 14, 6, 5, 18, 9, 195, 184, 18, 20, 10,
-			199, 76, 213, 75, 44, 84, 197, 72, 20, 10, 199, 48, 85, 19, 36, 225, 9, 28, 20, 10, 199, 76, 195, 214, 4, 178, 83, 44, 20, 10,
-			199, 72, 148, 5, 57, 50, 83, 44, 20, 10, 199, 28, 83, 203, 20, 210, 83, 44, 20, 10, 199, 21, 2, 68, 20, 210, 83, 44, 20, 10,
-			199, 20, 196, 193, 77, 50, 83, 44, 20, 10, 199, 52, 83, 15, 16, 146, 197, 72, 20, 9, 198, 77, 97, 67, 37, 51, 69, 20, 9, 198,
-			76, 192, 86, 37, 51, 69, 20, 12, 201, 44, 243, 4, 36, 225, 197, 57, 49, 82, 20, 12, 201, 44, 243, 132, 37, 66, 79, 56, 19, 0,
-			20, 10, 199, 52, 20, 141, 20, 192, 68, 20, 20, 0, 12, 137, 13, 9, 14, 21, 20, 9, 195, 184, 19, 20, 12, 137, 13, 5, 12, 15,
-			4, 9, 195, 184, 19, 20, 13, 138, 5, 11, 19, 20, 5, 18, 9, 195, 184, 18, 20, 11, 200, 44, 147, 133, 76, 147, 204, 60, 112, 20,
-			15, 204, 81, 32, 78, 77, 3, 1, 57, 64, 84, 36, 243, 128, 20, 15, 204, 36, 228, 212, 73, 83, 69, 57, 64, 84, 36, 243, 128, 20,
-			15, 204, 36, 211, 65, 81, 34, 75, 84, 192, 84, 36, 243, 128, 20, 15, 204, 76, 83, 148, 36, 209, 78, 80, 19, 9, 80, 85, 0, 20,
-			15, 204, 72, 84, 208, 20, 181, 1, 8, 147, 9, 80, 85, 0, 20, 11, 200, 52, 241, 21, 48, 84, 137, 56, 112, 20, 11, 200, 4, 212,
-			21, 80, 84, 137, 56, 112, 20, 11, 200, 88, 148, 148, 84, 244, 197, 72, 144, 20, 11, 200, 65, 35, 212, 20, 147, 146, 36, 112, 20, 11,
-			200, 77, 80, 129, 72, 181, 9, 76, 176, 20, 11, 200, 65, 32, 71, 52, 21, 9, 76, 176, 20, 11, 200, 33, 148, 15, 80, 85, 9, 76,
-			176, 20, 11, 200, 21, 96, 78, 28, 83, 9, 76, 176, 20, 11, 200, 13, 148, 18, 36, 245, 9, 76, 176, 20, 9, 198, 41, 85, 133, 56,
-			147, 0, 20, 9, 198, 24, 241, 5, 72, 19, 0, 20, 0, 10, 135, 6, 1, 18, 3, 195, 184, 18, 20, 8, 197, 4, 211, 133, 76, 144,
-			20, 8, 197, 28, 226, 69, 72, 144, 20, 16, 205, 20, 180, 208, 72, 84, 211, 36, 243, 137, 77, 66, 83, 44, 20, 8, 197, 84, 224, 201,
-			4, 192, 20, 5, 65, 60, 39, 0, 0, 11, 136, 4, 18, 5, 19, 19, 195, 184, 18, 20, 9, 198, 61, 0, 67, 37, 65, 84, 20, 9,
-			198, 85, 53, 82, 64, 84, 128, 20, 9, 198, 72, 85, 83, 76, 84, 128, 20, 9, 198, 61, 0, 76, 37, 49, 82, 20, 9, 198, 60, 33,
-			21, 12, 84, 128, 20, 9, 198, 52, 245, 83, 76, 84, 128, 20, 9, 198, 44, 20, 21, 56, 84, 128, 20, 9, 198, 36, 229, 21, 8, 84,
-			128, 20, 9, 198, 36, 229, 15, 56, 84, 128, 20, 9, 198, 36, 225, 21, 12, 84, 128, 20, 9, 198, 8, 20, 213, 56, 84, 128, 20, 9,
-			198, 4, 195, 15, 44, 84, 128, 20, 11, 200, 61, 0, 153, 28, 113, 76, 36, 112, 20, 13, 202, 45, 34, 77, 36, 227, 204, 60, 114, 83,
-			44, 20, 13, 202, 32, 84, 144, 21, 67, 204, 60, 114, 83, 44, 20, 12, 201, 32, 148, 212, 61, 34, 67, 37, 51, 69, 20, 12, 201, 21,
-			81, 1, 36, 211, 206, 37, 51, 69, 20, 12, 201, 20, 179, 5, 45, 66, 67, 37, 51, 69, 20, 12, 201, 8, 82, 1, 88, 147, 210, 37,
-			51, 69, 20, 12, 201, 4, 115, 143, 77, 66, 67, 37, 51, 69, 20, 6, 195, 61, 0, 76, 20, 10, 1, 61, 55, 6, 37, 65, 36, 86,
-			0, 0, 19, 71, 48, 81, 197, 56, 65, 82, 76, 55, 36, 81, 6, 109, 50, 72, 114, 89, 0, 9, 198, 17, 85, 133, 80, 147, 133, 20,
-			10, 199, 13, 146, 204, 61, 68, 143, 56, 20, 10, 199, 77, 84, 16, 72, 147, 69, 72, 20, 10, 199, 44, 243, 80, 72, 147, 69, 72, 20,
-			10, 199, 36, 225, 140, 4, 211, 69, 72, 20, 10, 199, 5, 37, 9, 45, 83, 5, 72, 20, 14, 203, 44, 20, 146, 36, 84, 133, 52, 17,
-			197, 72, 144, 20, 10, 199, 52, 147, 12, 20, 227, 137, 20, 20, 10, 199, 8, 20, 201, 48, 146, 213, 52, 20, 10, 199, 44, 243, 147, 36,
-			194, 85, 52, 20, 9, 198, 80, 16, 200, 37, 51, 69, 20, 9, 198, 52, 20, 152, 37, 51, 69, 20, 9, 198, 16, 17, 1, 37, 51, 69,
-			20, 12, 201, 44, 243, 148, 36, 225, 78, 80, 19, 0, 20, 0, 11, 200, 76, 147, 143, 48, 241, 201, 76, 176, 20, 11, 200, 64, 21, 15,
-			48, 241, 201, 76, 176, 20, 11, 200, 60, 226, 207, 48, 241, 201, 76, 176, 20, 11, 200, 56, 244, 141, 4, 227, 137, 76, 176, 20, 11, 200,
-			44, 21, 5, 44, 85, 9, 76, 176, 20, 11, 200, 36, 66, 79, 52, 21, 9, 76, 176, 20, 11, 200, 24, 243, 143, 48, 241, 201, 76, 176,
-			20, 11, 200, 24, 193, 71, 52, 21, 9, 76, 176, 20, 9, 198, 36, 208, 133, 12, 147, 0, 20, 11, 200, 45, 38, 80, 80, 241, 210, 4,
-			96, 20, 0, 12, 201, 72, 146, 207, 12, 129, 84, 80, 84, 128, 20, 12, 201, 44, 21, 5, 28, 244, 137, 76, 84, 128, 20, 12, 201, 36,
-			229, 5, 73, 1, 76, 48, 84, 128, 20, 12, 201, 12, 130, 70, 24, 243, 142, 36, 84, 128, 20, 12, 201, 12, 83, 148, 72, 145, 149, 28,
-			84, 128, 20, 12, 201, 56, 244, 212, 4, 193, 201, 44, 84, 128, 20, 6, 65, 64, 48, 36, 0, 15, 1, 64, 89, 50, 4, 110, 12, 71,
-			36, 55, 6, 110, 12, 0, 0, 18, 70, 12, 128, 78, 76, 243, 128, 91, 57, 112, 50, 89, 6, 114, 68, 0, 20, 9, 198, 64, 243, 25,
-			28, 243, 128, 20, 9, 198, 61, 37, 15, 28, 243, 128, 20, 9, 198, 61, 2, 78, 36, 243, 128, 20, 9, 198, 61, 3, 211, 77, 83, 64,
-			20, 9, 198, 72, 82, 214, 37, 50, 84, 20, 9, 198, 65, 70, 65, 48, 147, 128, 20, 12, 201, 64, 20, 129, 48, 193, 76, 37, 51, 69,
-			20, 12, 201, 56, 21, 9, 60, 224, 76, 37, 51, 69, 20, 12, 201, 44, 19, 142, 36, 32, 76, 37, 51, 69, 20, 9, 198, 9, 33, 84,
-			4, 115, 128, 20, 9, 198, 65, 33, 83, 20, 229, 0, 20, 9, 198, 53, 149, 15, 52, 19, 128, 21, 11, 70, 64, 20, 211, 92, 244, 132,
-			21, 0, 10, 0, 11, 67, 76, 145, 192, 89, 35, 57, 0, 14, 45, 17, 67, 76, 145, 192, 89, 37, 15, 84, 110, 0, 81, 104, 118, 97,
-			100, 32, 17, 67, 76, 145, 192, 89, 37, 15, 65, 35, 57, 0, 81, 109, 105, 103, 32, 10, 199, 24, 195, 210, 4, 116, 129, 52, 20, 9,
-			198, 64, 193, 84, 80, 84, 133, 20, 9, 198, 9, 34, 76, 48, 84, 133, 20, 9, 198, 4, 64, 80, 80, 84, 133, 20, 9, 198, 77, 2,
-			78, 16, 84, 137, 20, 9, 198, 52, 83, 129, 28, 84, 137, 20, 10, 199, 65, 35, 211, 12, 83, 137, 20, 20, 6, 195, 84, 226, 84, 20,
-			14, 203, 12, 132, 137, 77, 66, 65, 57, 50, 1, 88, 224, 20, 6, 195, 76, 145, 192, 72, 0, 9, 198, 45, 84, 148, 37, 49, 82, 20,
-			0, 12, 201, 81, 34, 86, 36, 19, 9, 80, 85, 0, 20, 12, 201, 76, 82, 211, 84, 19, 9, 80, 85, 0, 20, 12, 201, 72, 83, 1,
-			80, 149, 137, 80, 85, 0, 20, 12, 201, 56, 245, 1, 8, 147, 9, 80, 85, 0, 20, 12, 201, 53, 84, 201, 44, 19, 9, 80, 85, 0,
-			20, 12, 201, 17, 84, 129, 8, 147, 9, 80, 85, 0, 20, 10, 135, 16, 12, 195, 166, 4, 5, 18, 20, 8, 197, 77, 69, 80, 36, 64,
-			20, 12, 201, 36, 229, 5, 73, 33, 71, 57, 83, 64, 20, 12, 201, 44, 20, 18, 36, 99, 204, 37, 83, 64, 20, 12, 201, 36, 229, 5,
-			72, 209, 68, 37, 83, 64, 20, 12, 201, 4, 229, 5, 64, 83, 132, 37, 83, 64, 20, 6, 65, 68, 49, 40, 0, 0, 12, 201, 65, 35,
-			212, 60, 179, 204, 48, 84, 133, 20, 12, 201, 16, 148, 195, 37, 3, 9, 56, 84, 133, 20, 12, 201, 52, 20, 139, 76, 180, 137, 28, 84,
-			137, 20, 9, 198, 88, 20, 137, 4, 229, 0, 20, 0, 10, 199, 76, 225, 68, 44, 84, 133, 72, 20, 12, 201, 72, 21, 9, 60, 224, 76,
-			37, 49, 82, 20, 12, 201, 64, 84, 147, 60, 224, 76, 37, 49, 82, 20, 12, 201, 64, 20, 129, 48, 193, 76, 37, 49, 82, 20, 12, 201,
-			52, 20, 135, 36, 224, 76, 37, 49, 82, 20, 12, 201, 45, 34, 77, 36, 224, 76, 37, 49, 82, 20, 12, 201, 36, 229, 5, 72, 224, 76,
-			37, 49, 82, 20, 10, 199, 20, 180, 208, 48, 244, 133, 72, 20, 10, 199, 76, 83, 73, 61, 66, 83, 44, 20, 10, 199, 61, 53, 9, 56,
-			66, 83, 44, 20, 10, 199, 20, 97, 77, 21, 34, 83, 44, 20, 10, 199, 17, 32, 86, 36, 66, 83, 44, 20, 10, 199, 16, 145, 1, 45,
-			66, 83, 44, 20, 10, 199, 9, 84, 149, 56, 66, 83, 44, 20, 10, 199, 4, 181, 129, 52, 20, 137, 56, 20, 12, 201, 32, 84, 142, 36,
-			225, 197, 57, 49, 82, 20, 10, 199, 72, 17, 9, 60, 116, 129, 24, 20, 10, 199, 44, 19, 12, 36, 116, 129, 24, 20, 10, 199, 72, 80,
-			197, 57, 49, 78, 80, 20, 10, 199, 44, 243, 135, 73, 81, 78, 80, 20, 0, 9, 198, 88, 144, 146, 5, 67, 210, 20, 15, 204, 36, 228,
-			212, 73, 83, 69, 57, 64, 76, 37, 53, 0, 20, 9, 198, 28, 197, 75, 4, 115, 206, 20, 15, 204, 77, 147, 139, 72, 240, 217, 44, 195,
-			212, 72, 243, 128, 20, 14, 68, 76, 19, 15, 56, 89, 110, 55, 6, 114, 68, 0, 20, 9, 198, 72, 83, 1, 80, 147, 206, 20, 10, 135,
-			13, 195, 166, 14, 1, 4, 5, 20, 6, 195, 28, 17, 197, 20, 0, 9, 198, 104, 83, 15, 80, 148, 203, 20, 9, 198, 77, 147, 143, 16,
-			148, 203, 20, 9, 198, 64, 192, 83, 80, 148, 203, 20, 9, 198, 52, 83, 15, 16, 148, 203, 20, 9, 198, 36, 66, 79, 80, 148, 203, 20,
-			9, 198, 20, 192, 83, 80, 148, 203, 20, 8, 197, 80, 84, 141, 36, 224, 20, 8, 197, 52, 244, 137, 4, 224, 21, 6, 65, 72, 109, 34,
-			0, 0, 13, 202, 84, 226, 70, 61, 35, 73, 77, 66, 83, 44, 20, 13, 202, 77, 65, 82, 20, 243, 69, 81, 34, 83, 44, 20, 13, 202,
-			44, 243, 134, 61, 35, 73, 77, 66, 83, 44, 20, 13, 202, 44, 20, 9, 80, 19, 9, 77, 66, 83, 44, 20, 13, 202, 36, 229, 5, 72,
-			147, 73, 77, 66, 83, 44, 20, 13, 202, 24, 83, 142, 61, 50, 193, 56, 66, 83, 44, 20, 13, 202, 12, 83, 148, 72, 19, 9, 77, 66,
-			83, 44, 20, 9, 198, 16, 84, 15, 56, 83, 148, 20, 13, 70, 13, 35, 209, 84, 148, 192, 21, 102, 114, 0, 10, 8, 67, 48, 243, 203,
-			21, 0, 10, 0, 10, 199, 80, 16, 149, 48, 21, 15, 72, 20, 10, 199, 36, 226, 1, 48, 21, 15, 72, 20, 12, 201, 16, 83, 79, 57,
-			53, 18, 5, 67, 210, 20, 9, 198, 80, 244, 15, 48, 241, 201, 20, 9, 198, 76, 86, 15, 48, 241, 201, 20, 9, 198, 9, 38, 79, 48,
-			241, 201, 20, 12, 201, 72, 21, 9, 32, 16, 137, 80, 147, 206, 20, 12, 201, 65, 35, 211, 80, 149, 21, 80, 147, 206, 20, 12, 201, 44,
-			243, 147, 80, 149, 21, 80, 147, 206, 20, 12, 201, 44, 243, 147, 36, 115, 129, 80, 147, 206, 20, 12, 201, 36, 226, 193, 52, 147, 129, 80,
-			147, 206, 20, 12, 201, 36, 195, 21, 52, 147, 129, 80, 147, 206, 20, 12, 201, 24, 144, 146, 36, 195, 1, 80, 147, 206, 20, 10, 199, 52,
-			19, 20, 21, 50, 83, 44, 20, 10, 199, 72, 82, 214, 37, 33, 78, 80, 20, 10, 199, 44, 243, 80, 21, 65, 78, 80, 20, 10, 199, 72,
-			84, 208, 20, 181, 1, 8, 20, 9, 198, 25, 84, 197, 48, 17, 197, 20, 9, 198, 4, 97, 149, 80, 17, 197, 20, 8, 67, 80, 129, 64,
-			21, 0, 10, 0, 7, 196, 53, 147, 211, 20, 20, 7, 196, 64, 147, 143, 48, 20, 12, 201, 64, 20, 129, 48, 192, 75, 80, 148, 203, 20,
-			12, 201, 56, 245, 133, 48, 194, 83, 80, 148, 203, 20, 12, 201, 52, 241, 5, 72, 226, 83, 80, 148, 203, 20, 12, 201, 52, 20, 207, 12,
-			130, 83, 80, 148, 203, 20, 12, 201, 44, 243, 77, 84, 226, 83, 80, 148, 203, 20, 12, 201, 32, 148, 212, 61, 34, 83, 80, 148, 203, 20,
-			12, 201, 25, 148, 201, 60, 115, 143, 52, 148, 203, 20, 11, 200, 65, 35, 206, 60, 210, 78, 4, 192, 20, 9, 198, 5, 4, 5, 48, 192,
-			66, 20, 0, 8, 197, 81, 34, 66, 85, 64, 20, 8, 197, 77, 64, 82, 85, 64, 20, 12, 201, 65, 35, 208, 61, 37, 9, 60, 225, 76,
-			20, 8, 197, 20, 229, 18, 21, 32, 20, 16, 205, 25, 83, 132, 4, 209, 78, 80, 19, 9, 77, 66, 83, 44, 20, 8, 197, 77, 2, 78,
-			4, 192, 20, 8, 197, 64, 197, 82, 4, 192, 20, 8, 197, 28, 195, 194, 4, 192, 20, 6, 65, 76, 36, 89, 0, 0, 13, 202, 53, 83,
-			20, 37, 3, 9, 44, 21, 15, 72, 20, 15, 140, 4, 9, 19, 3, 9, 16, 12, 9, 14, 195, 166, 18, 20, 12, 201, 77, 0, 83, 80,
-			144, 201, 80, 85, 0, 20, 11, 200, 77, 0, 84, 36, 84, 137, 56, 112, 20, 9, 198, 77, 0, 84, 36, 84, 128, 20, 10, 199, 77, 0,
-			78, 45, 83, 5, 72, 20, 9, 198, 77, 0, 76, 36, 84, 133, 20, 9, 198, 77, 0, 68, 76, 84, 128, 20, 13, 202, 76, 84, 137, 21,
-			4, 143, 17, 80, 197, 72, 20, 12, 201, 77, 0, 82, 76, 243, 77, 20, 194, 71, 20, 9, 198, 77, 0, 78, 36, 243, 0, 20, 11, 200,
-			77, 0, 83, 52, 241, 9, 76, 176, 20, 9, 198, 77, 0, 82, 80, 19, 128, 20, 8, 197, 77, 0, 71, 5, 64, 20, 0, 10, 199, 45,
-			99, 212, 21, 34, 78, 28, 20, 10, 199, 28, 20, 132, 21, 34, 78, 28, 20, 10, 199, 17, 80, 140, 21, 34, 78, 28, 20, 18, 67, 48,
-			241, 192, 55, 114, 49, 6, 36, 50, 0, 44, 20, 81, 105, 110, 32, 0, 11, 200, 44, 244, 205, 21, 67, 204, 60, 112, 20, 11, 200, 56,
-			20, 131, 37, 52, 201, 77, 64, 20, 11, 200, 44, 192, 83, 76, 144, 201, 77, 64, 20, 13, 138, 16, 18, 195, 166, 3, 9, 19, 9, 15,
-			14, 20, 11, 200, 16, 148, 212, 36, 225, 214, 21, 32, 20, 7, 196, 45, 33, 79, 48, 20, 11, 200, 81, 148, 15, 48, 241, 201, 76, 176,
-			20, 11, 200, 77, 145, 137, 48, 149, 9, 76, 176, 20, 11, 200, 76, 84, 143, 48, 241, 201, 76, 176, 20, 11, 200, 21, 67, 143, 48, 241,
-			201, 76, 176, 20, 11, 200, 21, 2, 76, 21, 5, 9, 76, 176, 20, 11, 200, 9, 84, 135, 84, 225, 9, 76, 176, 20, 11, 200, 13, 84,
-			146, 36, 53, 76, 84, 208, 20, 11, 200, 80, 83, 80, 21, 33, 82, 21, 64, 20, 11, 200, 72, 84, 201, 28, 225, 82, 21, 64, 20, 11,
-			200, 72, 17, 134, 36, 225, 82, 21, 64, 20, 11, 200, 48, 19, 69, 48, 193, 82, 21, 64, 20, 11, 200, 36, 226, 193, 72, 225, 82, 21,
-			64, 20, 11, 200, 16, 148, 12, 60, 209, 82, 21, 64, 20, 11, 200, 16, 85, 1, 48, 161, 82, 21, 64, 20, 12, 137, 9, 14, 8, 195,
-			166, 18, 5, 14, 19, 20, 0, 8, 197, 88, 144, 146, 21, 32, 20, 8, 197, 76, 84, 150, 21, 32, 20, 9, 198, 32, 84, 129, 48, 66,
-			75, 20, 12, 201, 25, 148, 201, 60, 115, 143, 52, 146, 192, 20, 8, 197, 60, 181, 76, 5, 32, 20, 8, 197, 28, 20, 129, 57, 64, 20,
-			10, 69, 76, 84, 150, 21, 32, 21, 0, 10, 0, 9, 198, 76, 86, 15, 48, 241, 192, 20, 9, 198, 21, 67, 143, 48, 241, 192, 20, 9,
-			198, 81, 84, 130, 36, 225, 64, 20, 9, 198, 80, 84, 154, 36, 225, 64, 20, 9, 198, 24, 244, 134, 36, 225, 64, 20, 9, 198, 21, 50,
-			193, 64, 148, 212, 20, 13, 202, 76, 81, 9, 52, 83, 148, 21, 34, 78, 28, 20, 13, 202, 65, 35, 214, 36, 19, 148, 21, 34, 78, 28,
-			20, 12, 201, 48, 81, 19, 4, 113, 82, 36, 225, 5, 20, 6, 195, 84, 226, 75, 20, 9, 198, 80, 19, 135, 20, 229, 0, 20, 9, 198,
-			44, 20, 132, 36, 224, 76, 20, 0, 9, 198, 52, 19, 137, 13, 84, 133, 20, 10, 199, 72, 84, 197, 73, 98, 83, 80, 20, 10, 199, 12,
-			19, 22, 36, 226, 83, 80, 20, 10, 199, 28, 20, 212, 72, 243, 143, 52, 20, 14, 203, 76, 83, 22, 8, 147, 199, 72, 17, 137, 76, 176,
-			20, 10, 199, 80, 18, 211, 60, 227, 205, 36, 20, 10, 199, 44, 243, 135, 73, 81, 78, 76, 20, 0, 7, 196, 81, 83, 79, 72, 20, 7,
-			196, 80, 83, 143, 72, 20, 9, 198, 25, 83, 139, 80, 147, 206, 20, 9, 198, 25, 34, 75, 80, 147, 206, 20, 9, 198, 21, 33, 75, 80,
-			147, 206, 20, 11, 200, 76, 181, 129, 17, 35, 206, 21, 32, 20, 7, 196, 44, 243, 9, 44, 20, 11, 200, 44, 243, 77, 37, 69, 5, 57,
-			64, 20, 11, 200, 65, 32, 75, 80, 146, 193, 57, 64, 20, 11, 200, 5, 84, 203, 84, 197, 1, 57, 64, 20, 0, 8, 197, 8, 240, 137,
-			56, 80, 20, 13, 138, 195, 166, 18, 22, 195, 166, 18, 4, 9, 7, 20, 12, 201, 76, 224, 75, 44, 84, 193, 48, 145, 192, 20, 13, 138,
-			18, 5, 20, 6, 195, 166, 18, 4, 9, 7, 20, 12, 201, 60, 212, 212, 36, 195, 5, 48, 145, 192, 20, 12, 201, 60, 36, 212, 21, 35,
-			129, 76, 145, 192, 20, 13, 138, 2, 15, 4, 6, 195, 166, 18, 4, 9, 7, 20, 12, 201, 8, 148, 203, 61, 4, 5, 48, 145, 192, 20,
-			9, 198, 64, 21, 5, 80, 148, 203, 20, 9, 198, 44, 84, 129, 52, 148, 203, 20, 9, 198, 20, 212, 1, 80, 148, 203, 20, 9, 198, 17,
-			37, 73, 16, 148, 203, 20, 10, 69, 92, 147, 132, 61, 112, 21, 0, 10, 6, 65, 84, 40, 19, 0, 0, 9, 198, 5, 85, 15, 65, 50,
-			64, 20, 9, 198, 88, 149, 1, 48, 148, 212, 20, 13, 202, 88, 83, 148, 72, 147, 15, 45, 98, 83, 80, 20, 13, 202, 64, 84, 139, 85,
-			52, 201, 60, 226, 83, 80, 20, 13, 202, 36, 225, 5, 80, 84, 141, 36, 226, 83, 80, 20, 9, 198, 36, 65, 65, 48, 148, 212, 20, 13,
-			202, 25, 83, 139, 80, 147, 206, 4, 194, 83, 80, 20, 13, 202, 16, 242, 213, 52, 83, 148, 5, 34, 83, 80, 20, 14, 139, 195, 184, 13,
-			20, 195, 165, 12, 5, 12, 9, 7, 20, 14, 139, 20, 18, 25, 11, 6, 195, 166, 18, 4, 9, 7, 20, 14, 139, 19, 16, 1, 7, 6,
-			195, 166, 18, 4, 9, 7, 20, 14, 139, 19, 12, 1, 7, 6, 195, 166, 18, 4, 9, 7, 20, 14, 139, 19, 1, 14, 4, 6, 195, 166,
-			18, 4, 9, 7, 20, 14, 139, 16, 18, 9, 19, 22, 195, 166, 18, 4, 9, 7, 20, 14, 139, 15, 16, 19, 195, 166, 20, 20, 5, 12,
-			9, 7, 20, 14, 139, 15, 13, 19, 195, 166, 20, 20, 5, 12, 9, 7, 20, 14, 139, 15, 13, 7, 195, 166, 14, 7, 5, 12, 9, 7,
-			20, 9, 198, 5, 35, 79, 16, 145, 192, 20, 14, 139, 1, 14, 20, 195, 166, 14, 4, 5, 12, 9, 7, 20, 14, 139, 1, 6, 19, 195,
-			166, 20, 20, 5, 12, 9, 7, 20, 0, 18, 71, 72, 82, 137, 12, 84, 133, 72, 34, 36, 57, 37, 89, 6, 36, 114, 0, 10, 199, 29,
-			32, 77, 52, 241, 143, 56, 20, 12, 201, 36, 229, 5, 72, 161, 75, 80, 147, 206, 20, 15, 140, 22, 9, 4, 5, 18, 22, 195, 166, 18,
-			4, 9, 7, 20, 15, 140, 19, 20, 18, 1, 6, 22, 195, 166, 18, 4, 9, 7, 20, 15, 140, 11, 21, 14, 19, 20, 6, 195, 166, 18,
-			4, 9, 7, 20, 15, 140, 6, 15, 18, 19, 195, 184, 13, 13, 5, 12, 9, 7, 20, 15, 140, 6, 15, 18, 19, 13, 195, 166, 4, 5,
-			12, 9, 7, 20, 15, 140, 6, 15, 18, 6, 195, 166, 18, 4, 5, 12, 9, 7, 20, 10, 199, 88, 19, 149, 5, 66, 83, 44, 20, 10,
-			199, 80, 83, 12, 85, 34, 83, 44, 20, 10, 199, 72, 17, 129, 20, 194, 83, 44, 20, 10, 199, 65, 35, 211, 60, 66, 83, 44, 20, 10,
-			199, 64, 84, 137, 60, 66, 83, 44, 20, 10, 199, 45, 80, 137, 77, 66, 83, 44, 20, 10, 199, 21, 51, 212, 21, 34, 83, 44, 20, 10,
-			199, 17, 32, 75, 60, 226, 83, 44, 20, 10, 199, 5, 4, 137, 61, 34, 83, 44, 20, 10, 199, 4, 192, 77, 60, 66, 83, 44, 20, 10,
-			199, 4, 115, 143, 77, 66, 83, 44, 20, 9, 198, 32, 20, 141, 60, 226, 69, 20, 9, 198, 8, 84, 153, 48, 194, 69, 20, 10, 199, 76,
-			49, 78, 60, 116, 129, 24, 20, 10, 199, 72, 84, 18, 60, 116, 129, 24, 20, 10, 199, 64, 19, 148, 60, 116, 129, 24, 20, 0, 9, 198,
-			32, 82, 211, 4, 115, 206, 20, 7, 196, 80, 19, 15, 56, 20, 9, 198, 64, 244, 201, 80, 147, 206, 20, 11, 200, 52, 81, 9, 12, 147,
-			133, 72, 80, 20, 16, 141, 22, 5, 12, 195, 166, 18, 22, 195, 166, 18, 4, 9, 7, 20, 15, 204, 76, 19, 77, 20, 226, 204, 5, 4,
-			5, 48, 145, 192, 20, 16, 141, 15, 22, 5, 18, 19, 195, 166, 20, 20, 5, 12, 9, 7, 20, 15, 204, 28, 83, 142, 20, 212, 203, 36,
-			227, 133, 48, 145, 192, 20, 12, 201, 5, 34, 83, 80, 245, 5, 48, 148, 203, 20, 9, 198, 48, 149, 15, 72, 19, 0, 20, 0, 8, 197,
-			65, 35, 204, 60, 112, 20, 8, 197, 61, 67, 204, 60, 112, 20, 8, 197, 48, 85, 133, 72, 80, 20, 9, 198, 49, 146, 211, 4, 194, 71,
-			20, 17, 142, 12, 5, 20, 1, 14, 20, 195, 166, 14, 4, 5, 12, 9, 7, 20, 17, 142, 8, 195, 184, 10, 195, 166, 18, 22, 195, 166,
-			18, 4, 9, 7, 20, 9, 198, 4, 228, 197, 20, 194, 71, 20, 8, 197, 5, 32, 76, 36, 80, 20, 12, 201, 61, 37, 15, 12, 84, 129,
-			80, 149, 0, 20, 8, 197, 36, 225, 129, 52, 144, 20, 6, 65, 88, 84, 36, 0, 0, 10, 135, 11, 1, 18, 9, 195, 184, 19, 20, 10,
-			135, 3, 1, 18, 9, 195, 184, 19, 20, 11, 136, 3, 8, 1, 18, 13, 195, 184, 18, 20, 13, 202, 64, 244, 201, 80, 149, 137, 77, 66,
-			83, 44, 20, 13, 202, 56, 81, 193, 80, 149, 137, 77, 66, 83, 44, 20, 13, 202, 52, 147, 9, 80, 20, 137, 77, 66, 83, 44, 20, 13,
-			202, 44, 19, 15, 72, 147, 69, 81, 34, 83, 44, 20, 13, 202, 33, 145, 18, 60, 209, 75, 4, 226, 83, 44, 20, 13, 202, 12, 128, 85,
-			88, 147, 137, 77, 66, 83, 44, 20, 9, 198, 76, 18, 203, 5, 34, 68, 20, 9, 198, 44, 243, 12, 60, 145, 0, 20, 9, 198, 32, 20,
-			141, 60, 226, 64, 20, 9, 198, 5, 67, 5, 80, 146, 192, 20, 9, 198, 24, 97, 82, 52, 21, 0, 20, 0, 10, 67, 64, 130, 76, 83,
-			37, 60, 0, 25, 19, 71, 72, 82, 137, 12, 84, 133, 76, 34, 36, 57, 37, 89, 6, 36, 114, 89, 0, 10, 199, 72, 81, 213, 48, 21,
-			15, 72, 20, 10, 199, 72, 80, 201, 80, 21, 15, 72, 20, 10, 199, 36, 225, 9, 44, 21, 15, 72, 20, 10, 199, 21, 50, 193, 48, 21,
-			15, 72, 20, 12, 201, 72, 21, 9, 24, 146, 193, 80, 147, 206, 20, 12, 201, 61, 33, 193, 56, 148, 193, 80, 147, 206, 20, 12, 201, 52,
-			241, 9, 24, 146, 193, 80, 147, 206, 20, 12, 201, 44, 243, 148, 72, 144, 149, 80, 147, 206, 20, 12, 201, 44, 243, 134, 37, 50, 193, 80,
-			147, 206, 20, 12, 201, 44, 243, 134, 37, 35, 65, 80, 147, 206, 20, 12, 201, 44, 241, 9, 24, 146, 193, 80, 147, 206, 20, 12, 201, 44,
-			19, 143, 56, 148, 193, 80, 147, 206, 20, 12, 201, 36, 228, 212, 4, 195, 1, 80, 147, 206, 20, 12, 201, 16, 84, 212, 36, 195, 1, 80,
-			147, 206, 20, 12, 201, 4, 229, 9, 12, 148, 1, 80, 147, 206, 20, 10, 199, 44, 21, 1, 49, 148, 197, 72, 20, 10, 199, 16, 82, 204,
-			5, 52, 197, 72, 20, 10, 199, 16, 80, 200, 36, 100, 133, 72, 20, 10, 199, 81, 80, 82, 20, 114, 83, 44, 20, 10, 199, 44, 20, 148,
-			4, 114, 83, 44, 20, 10, 199, 8, 148, 195, 5, 146, 83, 44, 20, 8, 133, 195, 166, 20, 1, 14, 21, 9, 198, 77, 64, 70, 24, 17,
-			197, 20, 0, 11, 200, 45, 34, 77, 36, 227, 204, 60, 112, 20, 9, 198, 44, 20, 129, 88, 83, 0, 20, 11, 200, 5, 81, 205, 20, 229,
-			5, 72, 80, 20, 12, 201, 61, 97, 82, 44, 243, 77, 20, 194, 71, 20, 12, 201, 25, 33, 68, 76, 243, 77, 20, 194, 71, 20, 12, 201,
-			20, 161, 78, 16, 243, 77, 20, 194, 71, 20, 16, 141, 2, 18, 195, 184, 19, 20, 6, 195, 166, 12, 4, 9, 7, 20, 11, 200, 88, 242,
-			193, 80, 149, 137, 76, 176, 20, 11, 200, 72, 80, 76, 37, 53, 9, 76, 176, 20, 11, 200, 65, 35, 195, 20, 229, 9, 76, 176, 20, 11,
-			200, 64, 145, 84, 37, 53, 9, 76, 176, 20, 11, 200, 61, 5, 1, 80, 149, 137, 76, 176, 20, 11, 200, 28, 83, 199, 72, 17, 137, 76,
-			176, 20, 11, 200, 17, 84, 129, 80, 149, 137, 76, 176, 20, 11, 200, 17, 80, 76, 37, 53, 9, 76, 176, 20, 11, 200, 16, 162, 66, 61,
-			85, 9, 76, 176, 20, 11, 200, 16, 144, 75, 72, 243, 137, 76, 176, 20, 11, 200, 5, 67, 205, 37, 53, 9, 76, 176, 20, 11, 200, 5,
-			34, 193, 37, 53, 9, 76, 176, 20, 11, 200, 64, 197, 84, 60, 180, 129, 80, 144, 20, 9, 198, 33, 96, 66, 20, 128, 82, 20, 9, 198,
-			12, 83, 148, 72, 19, 0, 20, 21, 4, 95, 49, 77, 52, 6, 36, 12, 50, 15, 71, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 14,
-			139, 16, 18, 15, 7, 18, 1, 13, 13, 195, 184, 18, 20, 8, 197, 4, 193, 75, 76, 144, 20, 9, 198, 28, 82, 147, 80, 194, 71, 20,
-			8, 197, 44, 20, 141, 36, 224, 20, 16, 69, 72, 243, 65, 56, 144, 34, 39, 65, 6, 110, 50, 37, 0, 20, 12, 201, 32, 84, 141, 20,
-			225, 85, 80, 146, 192, 20, 12, 201, 13, 149, 15, 28, 83, 133, 80, 146, 192, 20, 8, 197, 28, 84, 141, 4, 224, 20, 8, 197, 88, 19,
-			5, 57, 48, 20, 8, 197, 76, 145, 206, 4, 192, 20, 8, 197, 56, 243, 65, 16, 80, 20, 14, 65, 92, 72, 6, 114, 71, 36, 55, 47,
-			84, 36, 12, 0, 22, 1, 92, 6, 114, 65, 84, 36, 50, 72, 89, 81, 34, 4, 114, 89, 72, 51, 35, 37, 0, 27, 0, 9, 198, 48,
-			19, 80, 37, 53, 0, 20, 9, 198, 28, 20, 132, 37, 53, 0, 20, 9, 198, 52, 85, 15, 16, 146, 192, 20, 9, 198, 44, 21, 15, 48,
-			146, 192, 20, 0, 10, 199, 5, 3, 208, 48, 82, 211, 36, 20, 14, 203, 20, 180, 208, 21, 34, 77, 20, 229, 5, 72, 80, 20, 14, 203,
-			77, 147, 132, 36, 176, 76, 37, 53, 9, 76, 176, 20, 14, 203, 52, 21, 5, 72, 144, 76, 37, 53, 9, 76, 176, 20, 14, 203, 36, 212,
-			5, 72, 144, 76, 37, 53, 9, 76, 176, 20, 14, 203, 16, 85, 5, 72, 210, 78, 37, 53, 9, 76, 176, 20, 10, 199, 13, 144, 78, 44,
-			19, 9, 20, 20, 10, 199, 44, 243, 12, 60, 66, 85, 52, 20, 10, 199, 28, 195, 211, 5, 34, 85, 52, 20, 10, 199, 44, 243, 80, 21,
-			65, 78, 76, 20, 6, 195, 4, 224, 76, 20, 0, 9, 198, 45, 32, 75, 20, 193, 82, 20, 9, 198, 16, 84, 212, 73, 81, 82, 20, 9,
-			198, 4, 113, 210, 5, 97, 82, 20, 12, 201, 20, 101, 5, 73, 98, 83, 20, 194, 71, 20, 11, 200, 100, 83, 69, 56, 149, 9, 76, 176,
-			20, 11, 200, 76, 19, 15, 52, 243, 137, 76, 176, 20, 11, 200, 65, 34, 83, 52, 21, 9, 76, 176, 20, 11, 200, 64, 19, 143, 72, 19,
-			73, 76, 176, 20, 11, 200, 61, 33, 201, 5, 53, 9, 76, 176, 20, 11, 200, 41, 81, 1, 37, 53, 9, 76, 176, 20, 11, 200, 36, 225,
-			15, 48, 241, 201, 76, 176, 20, 11, 200, 20, 194, 84, 37, 53, 9, 76, 176, 20, 11, 200, 8, 19, 12, 37, 53, 9, 76, 176, 20, 11,
-			200, 4, 225, 75, 16, 245, 9, 76, 176, 20, 11, 200, 4, 180, 143, 8, 21, 9, 76, 176, 20, 7, 196, 88, 19, 9, 16, 20, 9, 198,
-			77, 68, 153, 44, 226, 78, 20, 13, 68, 45, 32, 65, 48, 49, 34, 114, 12, 55, 0, 20, 0, 14, 139, 22, 21, 12, 11, 1, 14, 9,
-			19, 195, 184, 18, 20, 14, 139, 19, 25, 13, 16, 1, 20, 9, 19, 195, 184, 18, 20, 14, 139, 13, 1, 7, 14, 5, 20, 9, 19, 195,
-			184, 18, 20, 12, 201, 44, 243, 15, 56, 144, 76, 37, 53, 0, 20, 18, 70, 52, 17, 206, 36, 98, 75, 65, 110, 68, 37, 83, 6, 37,
-			49, 0, 20, 7, 65, 96, 109, 49, 89, 0, 17, 4, 95, 49, 77, 49, 36, 72, 15, 47, 6, 40, 12, 89, 14, 50, 0, 0, 17, 206,
-			36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 53, 9, 76, 176, 20, 17, 206, 20, 180, 201, 77, 65, 78, 80, 144, 76, 37, 53, 9, 76,
-			176, 20, 13, 202, 77, 84, 16, 61, 50, 84, 61, 34, 85, 52, 20, 9, 66, 4, 64, 110, 86, 0, 14, 45, 7, 66, 4, 64, 110, 12,
-			0, 21, 4, 95, 49, 77, 50, 6, 36, 12, 50, 15, 65, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 9, 198, 76, 147, 133, 13, 84,
-			133, 20, 10, 199, 88, 145, 5, 60, 116, 129, 52, 20, 10, 199, 77, 65, 78, 60, 116, 129, 52, 20, 14, 203, 48, 82, 211, 36, 179, 199,
-			72, 17, 137, 76, 176, 20, 14, 203, 45, 35, 205, 5, 67, 199, 72, 17, 137, 76, 176, 20, 14, 203, 44, 243, 15, 56, 144, 76, 37, 53,
-			9, 76, 176, 20, 10, 199, 77, 147, 80, 61, 50, 85, 52, 20, 12, 201, 5, 49, 82, 8, 18, 132, 76, 160, 78, 20, 12, 201, 5, 49,
-			82, 8, 18, 132, 76, 160, 78, 21, 21, 4, 95, 49, 77, 51, 6, 36, 12, 50, 15, 65, 37, 55, 37, 57, 6, 112, 12, 72, 0, 0,
-			9, 198, 77, 80, 195, 20, 65, 82, 20, 9, 198, 77, 66, 77, 84, 193, 82, 20, 9, 198, 72, 85, 21, 72, 225, 82, 20, 13, 138, 16,
-			18, 195, 166, 19, 5, 14, 20, 5, 18, 20, 9, 198, 32, 20, 141, 60, 225, 82, 20, 9, 198, 76, 18, 203, 5, 34, 78, 20, 11, 200,
-			44, 243, 139, 61, 33, 1, 57, 48, 20, 11, 200, 44, 243, 132, 84, 181, 1, 57, 48, 20, 0, 12, 201, 61, 34, 69, 57, 64, 76, 37,
-			53, 0, 20, 9, 198, 64, 243, 9, 80, 148, 203, 20, 9, 198, 8, 20, 201, 48, 148, 203, 20, 12, 201, 16, 85, 5, 72, 210, 78, 4,
-			229, 0, 20, 6, 65, 100, 117, 19, 0, 0, 13, 202, 64, 20, 129, 48, 193, 76, 60, 116, 129, 52, 20, 15, 140, 18, 5, 16, 18, 195,
-			166, 19, 5, 14, 20, 5, 18, 20, 0, 9, 198, 81, 35, 205, 8, 244, 197, 20, 9, 198, 65, 35, 199, 56, 244, 197, 20, 12, 201, 56,
-			21, 9, 60, 224, 76, 37, 49, 82, 20, 10, 199, 44, 243, 147, 64, 148, 133, 72, 20, 12, 201, 44, 243, 77, 84, 224, 76, 37, 49, 82,
-			20, 12, 201, 44, 19, 142, 36, 32, 76, 37, 49, 82, 20, 10, 199, 36, 225, 11, 48, 20, 133, 72, 20, 9, 198, 44, 147, 133, 76, 84,
-			137, 20, 9, 198, 24, 20, 193, 56, 84, 137, 20, 10, 199, 80, 83, 211, 60, 98, 83, 44, 20, 10, 199, 24, 20, 129, 60, 226, 83, 44,
-			20, 10, 199, 17, 32, 77, 5, 66, 83, 44, 20, 10, 199, 4, 224, 70, 61, 34, 83, 44, 20, 9, 198, 4, 224, 77, 56, 84, 197, 20,
-			10, 199, 80, 84, 144, 20, 229, 9, 56, 20, 10, 199, 76, 84, 144, 20, 229, 9, 56, 20, 10, 199, 20, 225, 15, 77, 49, 78, 80, 20,
-			0, 9, 198, 56, 245, 1, 80, 147, 206, 20, 9, 198, 45, 33, 65, 80, 147, 206, 20, 9, 198, 16, 245, 1, 80, 147, 206, 20, 12, 201,
-			52, 146, 210, 61, 50, 207, 64, 148, 203, 20, 21, 68, 77, 64, 78, 16, 89, 47, 110, 50, 72, 6, 37, 50, 0, 44, 20, 81, 105, 110,
-			32, 9, 198, 44, 243, 150, 20, 224, 66, 20, 0, 8, 197, 28, 19, 9, 60, 224, 20, 9, 198, 60, 198, 77, 64, 148, 203, 20, 9, 198,
-			52, 85, 15, 16, 148, 203, 20, 9, 198, 44, 21, 15, 16, 148, 203, 20, 9, 198, 20, 180, 207, 80, 148, 203, 20, 9, 198, 9, 82, 207,
-			48, 148, 203, 20, 8, 197, 44, 195, 210, 36, 224, 20, 8, 197, 44, 243, 150, 4, 192, 20, 7, 65, 104, 89, 109, 47, 0, 0, 16, 66,
-			5, 64, 110, 15, 107, 110, 12, 0, 81, 104, 97, 118, 101, 32, 9, 198, 72, 149, 15, 72, 225, 76, 20, 12, 201, 12, 128, 82, 48, 21,
-			1, 56, 84, 137, 20, 13, 202, 77, 80, 147, 80, 19, 148, 37, 98, 83, 44, 20, 13, 202, 64, 84, 147, 64, 82, 212, 37, 98, 83, 44,
-			20, 13, 202, 52, 83, 15, 17, 32, 77, 5, 66, 83, 44, 20, 13, 202, 44, 243, 80, 61, 50, 84, 61, 34, 83, 44, 20, 13, 202, 36,
-			226, 214, 37, 50, 84, 61, 34, 83, 44, 20, 12, 201, 20, 180, 208, 20, 66, 84, 72, 144, 197, 20, 8, 66, 5, 64, 110, 12, 0, 72,
-			0, 10, 199, 72, 81, 140, 20, 181, 15, 72, 20, 10, 199, 65, 35, 212, 20, 181, 15, 72, 20, 10, 199, 36, 228, 208, 20, 181, 15, 72,
-			20, 12, 201, 52, 83, 147, 81, 37, 65, 80, 147, 206, 20, 12, 201, 36, 229, 9, 52, 145, 1, 80, 147, 206, 20, 10, 199, 36, 225, 11,
-			5, 52, 197, 72, 20, 10, 199, 52, 19, 1, 101, 50, 83, 44, 20, 10, 199, 44, 148, 143, 52, 19, 148, 36, 20, 0, 11, 200, 88, 148,
-			201, 80, 21, 9, 60, 224, 20, 11, 200, 88, 81, 197, 80, 21, 9, 60, 224, 20, 11, 200, 72, 80, 201, 80, 21, 9, 60, 224, 20, 11,
-			200, 52, 241, 21, 48, 21, 9, 60, 224, 20, 11, 200, 21, 50, 193, 48, 21, 9, 60, 224, 20, 11, 200, 16, 84, 21, 80, 21, 9, 60,
-			224, 20, 11, 200, 16, 84, 9, 48, 21, 9, 60, 224, 20, 11, 200, 4, 212, 21, 80, 21, 9, 60, 224, 20, 12, 201, 65, 35, 198, 100,
-			192, 75, 80, 148, 203, 20, 12, 201, 64, 197, 82, 4, 194, 83, 80, 148, 203, 20, 12, 201, 53, 148, 212, 36, 98, 83, 80, 148, 203, 20,
-			12, 201, 44, 16, 130, 4, 194, 83, 80, 148, 203, 20, 12, 201, 32, 83, 12, 20, 226, 83, 80, 148, 203, 20, 12, 201, 28, 20, 212, 72,
-			243, 143, 52, 148, 203, 20, 12, 201, 17, 32, 77, 5, 69, 82, 28, 148, 203, 20, 12, 201, 12, 19, 22, 36, 226, 83, 80, 148, 203, 20,
-			11, 200, 76, 19, 22, 4, 67, 210, 4, 224, 20, 11, 200, 16, 148, 133, 45, 67, 210, 4, 192, 20, 0, 12, 201, 36, 229, 5, 56, 64,
-			78, 81, 84, 128, 20, 8, 197, 88, 84, 137, 77, 64, 20, 8, 197, 4, 244, 137, 77, 64, 20, 12, 201, 44, 243, 150, 20, 229, 9, 60,
-			225, 76, 20, 8, 197, 37, 34, 83, 21, 32, 20, 8, 197, 9, 81, 211, 21, 32, 20, 8, 197, 8, 19, 132, 37, 64, 20, 8, 197, 16,
-			83, 6, 36, 224, 20, 8, 197, 88, 19, 5, 57, 64, 20, 8, 197, 80, 19, 5, 57, 64, 20, 8, 197, 64, 147, 69, 57, 64, 20, 8,
-			197, 52, 243, 69, 57, 64, 20, 8, 197, 16, 83, 69, 57, 64, 20, 8, 197, 48, 18, 212, 5, 64, 20, 8, 197, 49, 83, 66, 4, 192,
-			20, 0, 9, 198, 5, 81, 9, 80, 244, 128, 20, 12, 201, 64, 20, 129, 76, 149, 15, 48, 241, 201, 20, 12, 201, 16, 144, 76, 20, 181,
-			15, 48, 241, 201, 20, 9, 198, 80, 243, 148, 36, 225, 64, 20, 9, 198, 44, 19, 148, 36, 225, 64, 20, 9, 198, 65, 32, 75, 80, 146,
-			192, 20, 9, 198, 9, 34, 71, 4, 65, 64, 20, 9, 198, 8, 195, 203, 4, 65, 64, 20, 0, 10, 199, 81, 35, 212, 76, 178, 83, 80,
-			20, 10, 199, 64, 20, 139, 21, 34, 78, 28, 20, 15, 204, 25, 83, 139, 80, 147, 206, 4, 194, 83, 80, 148, 203, 20, 0, 22, 72, 9,
-			33, 65, 44, 64, 78, 12, 80, 71, 34, 109, 37, 81, 6, 72, 35, 12, 50, 89, 0, 11, 200, 44, 21, 129, 48, 84, 137, 77, 64, 20,
-			11, 200, 52, 81, 9, 80, 21, 9, 60, 224, 20, 11, 200, 48, 144, 201, 80, 21, 9, 60, 224, 20, 11, 200, 44, 244, 146, 20, 181, 9,
-			60, 224, 20, 11, 200, 80, 83, 210, 21, 66, 83, 21, 32, 20, 11, 200, 77, 147, 80, 5, 66, 83, 21, 32, 20, 11, 200, 56, 20, 139,
-			61, 66, 83, 21, 32, 20, 11, 200, 52, 20, 148, 101, 34, 83, 21, 32, 20, 11, 200, 52, 17, 206, 21, 66, 83, 21, 32, 20, 11, 200,
-			44, 20, 130, 60, 226, 83, 21, 32, 20, 11, 200, 33, 148, 14, 61, 66, 83, 21, 32, 20, 11, 200, 28, 195, 194, 4, 194, 83, 21, 32,
-			20, 11, 200, 20, 193, 75, 81, 34, 83, 21, 32, 20, 11, 200, 16, 144, 76, 60, 114, 83, 21, 32, 20, 11, 200, 4, 227, 206, 100, 210,
-			83, 21, 32, 20, 11, 200, 4, 224, 76, 60, 114, 83, 21, 32, 20, 11, 200, 4, 176, 68, 20, 210, 83, 21, 32, 20, 11, 200, 80, 131,
-			205, 37, 53, 9, 76, 176, 20, 11, 200, 64, 21, 18, 36, 245, 9, 76, 176, 20, 11, 200, 48, 19, 65, 37, 53, 9, 76, 176, 20, 11,
-			200, 32, 243, 73, 48, 85, 9, 76, 176, 20, 11, 200, 16, 146, 207, 80, 243, 73, 76, 176, 20, 11, 200, 16, 145, 148, 60, 225, 201, 76,
-			176, 20, 11, 200, 16, 144, 76, 20, 181, 9, 76, 176, 20, 11, 200, 72, 85, 77, 5, 66, 75, 21, 32, 20, 11, 200, 33, 148, 212, 21,
-			34, 75, 21, 32, 20, 11, 200, 32, 148, 212, 61, 34, 75, 21, 32, 20, 11, 200, 17, 32, 77, 5, 66, 75, 21, 32, 20, 11, 200, 16,
-			241, 205, 5, 66, 75, 21, 32, 20, 9, 198, 52, 86, 154, 4, 226, 78, 20, 11, 200, 4, 35, 206, 56, 83, 69, 57, 64, 20, 11, 200,
-			72, 85, 19, 36, 225, 82, 21, 64, 20, 11, 200, 44, 20, 9, 81, 83, 1, 57, 64, 20, 0, 8, 197, 72, 82, 210, 85, 64, 20, 12,
-			201, 9, 34, 76, 48, 19, 148, 36, 225, 64, 20, 8, 197, 72, 16, 201, 77, 64, 20, 8, 197, 65, 84, 137, 77, 64, 20, 8, 197, 44,
-			244, 137, 77, 64, 20, 8, 197, 44, 19, 11, 21, 32, 20, 8, 197, 21, 34, 71, 21, 32, 20, 8, 197, 48, 21, 5, 57, 64, 20, 8,
-			197, 64, 81, 1, 57, 64, 20, 0, 11, 66, 12, 16, 89, 37, 34, 49, 110, 0, 25, 9, 198, 32, 243, 79, 48, 241, 192, 20, 9, 198,
-			32, 21, 83, 76, 148, 212, 20, 9, 198, 84, 69, 69, 48, 145, 192, 20, 9, 198, 32, 244, 141, 60, 224, 76, 20, 9, 198, 33, 145, 18,
-			4, 229, 0, 20, 0, 9, 198, 76, 147, 9, 44, 244, 197, 20, 10, 199, 76, 84, 137, 4, 194, 83, 80, 20, 10, 199, 60, 178, 213, 49,
-			66, 83, 80, 20, 14, 203, 25, 83, 139, 80, 147, 206, 4, 194, 83, 21, 32, 20, 14, 203, 8, 243, 129, 64, 20, 148, 37, 53, 9, 76,
-			176, 20, 0, 11, 200, 24, 243, 11, 48, 244, 137, 77, 64, 20, 19, 70, 16, 148, 212, 36, 179, 206, 72, 37, 89, 47, 37, 49, 6, 114,
-			50, 0, 20, 9, 198, 41, 83, 139, 80, 147, 206, 20, 9, 198, 25, 32, 75, 80, 147, 206, 20, 11, 200, 44, 243, 77, 84, 226, 75, 21,
-			32, 20, 11, 200, 16, 243, 69, 77, 66, 67, 21, 32, 20, 12, 137, 195, 184, 13, 20, 195, 165, 12, 9, 7, 20, 12, 137, 22, 5, 12,
-			4, 195, 166, 4, 9, 7, 20, 12, 137, 7, 15, 4, 4, 195, 166, 4, 9, 7, 20, 11, 200, 5, 53, 13, 5, 66, 75, 21, 32, 20,
-			7, 196, 61, 33, 193, 56, 21, 11, 200, 72, 81, 140, 20, 181, 1, 57, 64, 20, 0, 12, 201, 16, 144, 76, 20, 181, 15, 48, 241, 192,
-			20, 12, 201, 48, 81, 201, 80, 147, 73, 80, 85, 0, 20, 12, 201, 25, 32, 84, 21, 35, 137, 80, 85, 0, 20, 8, 197, 64, 243, 5,
-			72, 80, 20, 8, 197, 52, 83, 5, 72, 80, 20, 12, 201, 80, 147, 19, 80, 81, 5, 48, 145, 192, 20, 13, 138, 15, 22, 5, 18, 19,
-			195, 166, 4, 9, 7, 20, 13, 138, 14, 195, 184, 4, 22, 5, 14, 4, 9, 7, 20, 12, 201, 32, 83, 2, 72, 81, 5, 48, 145, 192,
-			20, 12, 201, 32, 19, 19, 77, 64, 82, 72, 145, 192, 20, 12, 201, 28, 83, 130, 73, 81, 197, 48, 145, 192, 20, 12, 201, 24, 244, 132,
-			72, 17, 197, 48, 145, 192, 20, 9, 198, 72, 18, 201, 80, 148, 203, 20, 9, 198, 32, 20, 141, 60, 226, 75, 20, 12, 201, 80, 85, 18,
-			5, 96, 76, 20, 229, 0, 20, 0, 13, 202, 76, 17, 15, 52, 20, 207, 12, 130, 83, 80, 20, 9, 198, 56, 146, 9, 48, 148, 212, 20,
-			13, 202, 52, 19, 149, 24, 18, 212, 85, 34, 83, 80, 20, 9, 198, 37, 51, 1, 52, 148, 212, 20, 9, 198, 24, 21, 1, 48, 148, 212,
-			20, 9, 198, 4, 194, 217, 52, 148, 212, 20, 14, 139, 20, 9, 12, 2, 195, 184, 10, 5, 12, 9, 7, 20, 14, 139, 16, 195, 165, 18,
-			5, 7, 14, 5, 12, 9, 7, 20, 9, 198, 77, 64, 78, 56, 147, 204, 20, 9, 198, 5, 4, 5, 80, 149, 0, 20, 9, 198, 76, 225,
-			71, 48, 21, 0, 20, 9, 198, 72, 16, 130, 36, 224, 84, 20, 0, 12, 201, 44, 243, 147, 81, 37, 75, 80, 147, 206, 20, 12, 201, 36,
-			229, 18, 60, 69, 75, 80, 147, 206, 20, 12, 201, 16, 84, 201, 56, 97, 75, 80, 147, 206, 20, 12, 201, 12, 245, 133, 73, 97, 82, 76,
-			147, 206, 20, 10, 199, 52, 243, 137, 80, 244, 133, 72, 20, 10, 199, 52, 20, 211, 4, 180, 133, 72, 20, 15, 140, 20, 9, 12, 7, 195,
-			166, 14, 7, 5, 12, 9, 7, 20, 10, 199, 44, 21, 1, 52, 20, 129, 56, 21, 0, 22, 3, 7, 195, 165, 81, 113, 15, 48, 6, 113,
-			15, 110, 0, 82, 112, 195, 165, 32, 97, 102, 32, 12, 201, 48, 20, 153, 56, 115, 211, 44, 244, 0, 20, 6, 195, 48, 241, 201, 20, 9,
-			198, 76, 243, 21, 80, 147, 206, 20, 9, 198, 72, 245, 1, 80, 147, 206, 20, 9, 198, 56, 81, 193, 80, 147, 206, 20, 9, 198, 48, 81,
-			193, 80, 147, 206, 20, 9, 198, 20, 213, 76, 76, 147, 206, 20, 9, 198, 12, 149, 1, 80, 147, 206, 20, 11, 200, 64, 242, 213, 48, 84,
-			137, 56, 112, 20, 11, 200, 48, 144, 201, 80, 84, 137, 56, 112, 20, 11, 200, 12, 148, 197, 48, 84, 137, 56, 112, 20, 11, 200, 64, 83,
-			147, 36, 243, 133, 72, 80, 20, 16, 141, 15, 13, 11, 18, 9, 14, 7, 19, 195, 166, 4, 9, 7, 20, 11, 200, 45, 98, 78, 16, 17,
-			212, 36, 112, 20, 15, 204, 29, 81, 22, 20, 192, 133, 32, 17, 197, 48, 145, 192, 20, 15, 204, 29, 81, 19, 8, 84, 208, 61, 69, 5,
-			48, 145, 192, 20, 12, 137, 1, 6, 6, 195, 166, 12, 4, 9, 7, 20, 12, 201, 60, 229, 15, 28, 83, 133, 80, 148, 203, 20, 12, 201,
-			32, 84, 141, 20, 225, 85, 80, 148, 203, 20, 11, 200, 32, 83, 7, 20, 226, 78, 16, 80, 20, 11, 200, 45, 98, 78, 16, 17, 212, 36,
-			112, 20, 7, 196, 4, 97, 129, 8, 20, 11, 200, 44, 20, 148, 60, 227, 129, 28, 80, 20, 0, 33, 69, 65, 80, 140, 36, 48, 48, 114,
-			71, 55, 36, 49, 15, 89, 13, 12, 84, 37, 89, 14, 50, 0, 81, 115, 101, 114, 118, 105, 99, 101, 110, 32, 30, 69, 65, 80, 140, 36,
-			48, 48, 114, 71, 55, 36, 49, 15, 89, 13, 12, 84, 37, 89, 0, 81, 115, 101, 114, 118, 105, 99, 101, 32, 12, 201, 77, 2, 82, 37,
-			69, 65, 48, 148, 212, 20, 12, 201, 76, 243, 78, 4, 208, 149, 48, 148, 212, 20, 16, 205, 56, 21, 9, 60, 224, 76, 76, 240, 201, 4,
-			194, 83, 80, 20, 8, 197, 56, 245, 5, 72, 80, 20, 13, 138, 22, 195, 166, 18, 19, 1, 18, 20, 9, 7, 20, 12, 201, 56, 21, 21,
-			72, 96, 71, 48, 145, 192, 20, 13, 138, 7, 5, 19, 11, 195, 166, 6, 20, 9, 7, 20, 13, 138, 7, 5, 19, 10, 195, 166, 6, 20,
-			9, 7, 20, 12, 201, 24, 244, 132, 20, 192, 71, 80, 145, 192, 20, 8, 197, 20, 212, 1, 80, 144, 20, 31, 69, 65, 80, 140, 36, 48,
-			48, 114, 71, 55, 36, 49, 15, 72, 39, 65, 6, 110, 57, 50, 0, 20, 81, 100, 111, 109, 97, 105, 110, 32, 12, 201, 44, 244, 147, 21,
-			69, 5, 72, 85, 0, 20, 12, 201, 52, 81, 4, 20, 192, 71, 80, 145, 192, 20, 12, 201, 24, 244, 132, 20, 192, 71, 80, 145, 192, 20,
-			0, 9, 198, 32, 244, 141, 60, 225, 76, 20, 9, 198, 36, 229, 129, 48, 145, 0, 20, 9, 198, 21, 84, 143, 64, 145, 0, 20, 9, 198,
-			29, 80, 82, 4, 226, 64, 20, 9, 198, 64, 243, 9, 80, 146, 192, 20, 9, 198, 44, 84, 129, 52, 146, 192, 20, 9, 198, 52, 83, 5,
-			72, 85, 0, 20, 0, 9, 198, 21, 67, 143, 48, 241, 201, 20, 12, 201, 88, 19, 15, 72, 148, 193, 80, 147, 206, 20, 12, 201, 81, 148,
-			9, 24, 146, 193, 80, 147, 206, 20, 12, 201, 64, 243, 1, 72, 148, 193, 80, 147, 206, 20, 12, 201, 44, 243, 148, 36, 229, 65, 80, 147,
-			206, 20, 12, 201, 44, 243, 147, 80, 148, 1, 80, 147, 206, 20, 12, 201, 44, 243, 135, 72, 81, 193, 80, 147, 206, 20, 12, 201, 20, 208,
-			78, 12, 148, 1, 80, 147, 206, 20, 12, 201, 4, 211, 210, 80, 148, 193, 80, 147, 206, 20, 12, 201, 4, 194, 77, 20, 229, 1, 80, 147,
-			206, 20, 12, 201, 4, 48, 197, 57, 69, 65, 80, 147, 206, 20, 14, 203, 52, 146, 210, 61, 50, 207, 64, 84, 137, 56, 112, 20, 12, 201,
-			44, 243, 132, 37, 66, 79, 56, 83, 0, 20, 10, 199, 44, 244, 146, 84, 212, 5, 72, 20, 15, 140, 195, 165, 2, 5, 14, 8, 10, 5,
-			18, 20, 9, 7, 20, 15, 140, 22, 5, 4, 5, 18, 8, 195, 166, 6, 20, 9, 7, 20, 15, 140, 6, 15, 18, 18, 195, 165, 4, 14,
-			5, 12, 9, 7, 20, 15, 140, 6, 15, 18, 7, 195, 166, 14, 7, 5, 12, 9, 7, 20, 15, 140, 6, 15, 18, 6, 195, 166, 14, 7,
-			5, 12, 9, 7, 20, 9, 198, 44, 243, 12, 60, 66, 69, 20, 14, 203, 44, 243, 150, 20, 229, 21, 4, 194, 78, 16, 80, 20, 12, 201,
-			44, 243, 148, 84, 33, 82, 56, 19, 0, 20, 5, 195, 32, 244, 192, 0, 11, 200, 88, 148, 201, 80, 84, 137, 56, 112, 20, 11, 200, 88,
-			81, 197, 80, 84, 137, 56, 112, 20, 11, 200, 77, 64, 70, 24, 84, 137, 56, 112, 20, 11, 200, 72, 85, 137, 16, 84, 137, 56, 112, 20,
-			11, 200, 72, 83, 1, 80, 84, 137, 56, 112, 20, 11, 200, 56, 20, 193, 48, 84, 137, 56, 112, 20, 11, 200, 44, 194, 67, 32, 84, 137,
-			56, 112, 20, 11, 200, 72, 20, 16, 61, 37, 5, 72, 80, 20, 11, 200, 28, 20, 146, 61, 69, 5, 72, 80, 20, 12, 201, 81, 34, 75,
-			36, 226, 15, 48, 66, 71, 20, 12, 201, 48, 245, 141, 20, 66, 15, 48, 66, 71, 20, 12, 201, 48, 19, 135, 76, 243, 77, 20, 194, 71,
-			20, 12, 201, 25, 33, 77, 44, 243, 77, 20, 194, 71, 20, 16, 141, 6, 15, 18, 20, 18, 195, 166, 6, 6, 5, 12, 9, 7, 20, 11,
-			200, 80, 244, 15, 48, 241, 201, 76, 176, 20, 11, 200, 76, 86, 15, 48, 241, 201, 76, 176, 20, 11, 200, 53, 149, 15, 48, 241, 201, 76,
-			176, 20, 11, 200, 52, 243, 143, 48, 241, 201, 76, 176, 20, 11, 200, 9, 38, 79, 48, 241, 201, 76, 176, 20, 11, 200, 36, 229, 5, 72,
-			209, 68, 36, 80, 20, 11, 200, 44, 243, 147, 84, 194, 78, 16, 80, 20, 7, 196, 76, 83, 137, 48, 20, 7, 196, 72, 16, 129, 80, 20,
-			9, 198, 77, 147, 143, 16, 19, 0, 20, 0, 8, 197, 28, 83, 204, 60, 112, 20, 8, 197, 25, 84, 201, 60, 224, 20, 9, 198, 28, 85,
-			129, 48, 66, 71, 20, 8, 197, 65, 81, 82, 36, 192, 20, 8, 197, 80, 82, 206, 36, 176, 20, 8, 197, 77, 148, 212, 20, 208, 20, 8,
-			197, 16, 83, 69, 57, 48, 20, 0, 13, 202, 4, 67, 73, 56, 148, 212, 72, 21, 15, 72, 20, 9, 198, 80, 16, 200, 37, 53, 0, 20,
-			9, 198, 52, 20, 152, 37, 53, 0, 20, 9, 198, 16, 17, 1, 37, 53, 0, 20, 9, 198, 52, 83, 15, 16, 146, 192, 20, 9, 198, 20,
-			192, 83, 80, 146, 192, 20, 0, 10, 199, 44, 244, 9, 21, 34, 78, 28, 20, 14, 203, 20, 180, 208, 48, 144, 201, 80, 84, 137, 56, 112,
-			20, 10, 199, 12, 19, 80, 21, 34, 78, 28, 20, 19, 144, 7, 5, 14, 14, 5, 13, 20, 18, 195, 166, 14, 7, 5, 12, 9, 7, 20,
-			14, 203, 21, 2, 68, 20, 210, 79, 48, 241, 201, 76, 176, 20, 14, 203, 16, 144, 76, 20, 181, 15, 48, 241, 201, 76, 176, 20, 10, 199,
-			4, 69, 133, 72, 34, 85, 52, 20, 10, 199, 80, 244, 141, 20, 229, 9, 48, 20, 12, 137, 6, 195, 184, 14, 9, 11, 9, 5, 14, 20,
-			10, 199, 73, 85, 9, 56, 84, 133, 80, 20, 8, 67, 84, 226, 88, 21, 0, 10, 0, 11, 200, 60, 225, 21, 48, 21, 9, 60, 224, 20,
-			11, 200, 16, 148, 203, 72, 85, 9, 60, 224, 20, 11, 200, 16, 147, 1, 80, 21, 9, 60, 224, 20, 11, 200, 4, 100, 133, 4, 181, 9,
-			60, 224, 20, 11, 200, 4, 33, 82, 72, 21, 9, 60, 224, 20, 7, 196, 52, 241, 5, 48, 20, 9, 198, 44, 243, 150, 20, 225, 82, 20,
-			9, 198, 44, 240, 71, 84, 193, 82, 20, 9, 198, 36, 227, 203, 84, 193, 82, 20, 9, 198, 16, 85, 1, 12, 129, 82, 20, 11, 200, 17,
-			148, 208, 21, 5, 9, 76, 176, 20, 9, 198, 88, 19, 137, 48, 194, 78, 20, 11, 200, 56, 144, 193, 72, 17, 213, 4, 224, 20, 9, 198,
-			4, 84, 143, 64, 192, 78, 21, 11, 200, 77, 80, 140, 36, 210, 78, 4, 192, 20, 11, 200, 64, 84, 134, 61, 35, 65, 57, 48, 20, 0,
-			12, 201, 45, 34, 77, 36, 224, 76, 37, 53, 0, 20, 12, 201, 56, 245, 133, 48, 194, 83, 80, 146, 192, 20, 0, 9, 198, 52, 85, 15,
-			16, 148, 212, 20, 13, 202, 52, 19, 20, 72, 18, 212, 21, 34, 78, 28, 20, 13, 202, 24, 18, 211, 36, 210, 76, 21, 34, 78, 28, 20,
-			13, 202, 20, 180, 208, 5, 68, 137, 21, 34, 78, 28, 20, 13, 202, 20, 180, 208, 21, 34, 77, 20, 229, 5, 48, 20, 13, 202, 16, 242,
-			213, 52, 83, 148, 5, 34, 85, 52, 20, 9, 198, 8, 18, 197, 48, 149, 0, 20, 13, 202, 76, 83, 22, 12, 83, 148, 72, 84, 133, 80,
-			20, 6, 66, 4, 96, 110, 0, 0, 6, 195, 89, 51, 208, 17, 12, 201, 8, 83, 133, 16, 146, 212, 36, 225, 82, 68, 10, 199, 32, 148,
-			212, 60, 116, 129, 52, 20, 12, 201, 77, 80, 150, 20, 229, 9, 60, 225, 82, 20, 12, 201, 65, 35, 208, 61, 37, 9, 60, 225, 82, 20,
-			0, 7, 196, 85, 33, 197, 72, 20, 9, 198, 72, 84, 201, 28, 225, 82, 20, 9, 198, 72, 17, 134, 36, 225, 82, 20, 9, 198, 21, 128,
-			197, 48, 193, 82, 20, 9, 198, 20, 208, 129, 48, 193, 82, 20, 9, 198, 53, 84, 211, 20, 194, 78, 20, 7, 196, 44, 147, 137, 56, 20,
-			9, 68, 25, 33, 65, 44, 21, 0, 10, 0, 24, 73, 76, 176, 84, 20, 35, 193, 72, 65, 84, 89, 49, 6, 36, 37, 47, 71, 39, 13,
-			72, 108, 86, 0, 9, 198, 37, 51, 1, 52, 148, 203, 20, 9, 198, 36, 229, 73, 80, 148, 203, 20, 9, 198, 21, 66, 79, 64, 148, 203,
-			20, 9, 198, 16, 82, 193, 16, 148, 203, 20, 9, 198, 5, 50, 197, 80, 148, 203, 20, 12, 201, 65, 35, 208, 61, 37, 9, 60, 224, 76,
-			20, 0, 9, 198, 20, 193, 70, 4, 229, 0, 20, 0, 10, 199, 88, 83, 133, 72, 243, 15, 28, 20, 10, 199, 61, 35, 137, 80, 243, 15,
-			28, 20, 10, 199, 28, 192, 67, 36, 243, 15, 28, 20, 10, 199, 45, 34, 78, 60, 194, 78, 20, 20, 12, 201, 44, 243, 148, 72, 20, 201,
-			28, 225, 82, 20, 10, 199, 36, 212, 12, 4, 229, 5, 72, 20, 10, 199, 77, 81, 134, 37, 48, 78, 80, 20, 0, 15, 204, 65, 35, 198,
-			21, 52, 201, 60, 224, 76, 37, 53, 0, 20, 7, 196, 41, 81, 197, 72, 20, 12, 201, 77, 65, 84, 61, 50, 207, 64, 148, 203, 20, 12,
-			201, 64, 243, 25, 12, 83, 148, 72, 148, 203, 20, 12, 201, 64, 84, 137, 64, 21, 5, 80, 148, 203, 20, 12, 201, 52, 18, 210, 61, 50,
-			207, 64, 148, 203, 20, 12, 201, 44, 244, 205, 60, 224, 85, 80, 148, 203, 20, 12, 201, 13, 149, 15, 28, 83, 133, 80, 148, 203, 20, 7,
-			196, 21, 97, 78, 80, 20, 9, 198, 16, 82, 204, 36, 224, 66, 20, 9, 68, 21, 97, 78, 80, 21, 0, 10, 0, 13, 138, 7, 25, 14,
-			195, 166, 11, 15, 12, 15, 7, 20, 8, 197, 84, 226, 83, 60, 224, 20, 8, 197, 61, 5, 9, 60, 224, 20, 8, 197, 48, 81, 201, 60,
-			224, 20, 11, 136, 12, 195, 184, 22, 9, 14, 4, 5, 20, 0, 8, 67, 80, 19, 11, 21, 0, 10, 0, 10, 199, 76, 147, 85, 48, 21,
-			15, 72, 20, 10, 199, 36, 226, 9, 8, 149, 15, 72, 20, 15, 140, 6, 195, 166, 14, 15, 13, 5, 14, 15, 12, 15, 7, 20, 12, 201,
-			88, 242, 193, 48, 148, 193, 80, 147, 206, 20, 10, 199, 88, 20, 137, 5, 66, 79, 56, 20, 12, 201, 72, 84, 212, 5, 84, 129, 80, 147,
-			206, 20, 10, 199, 65, 35, 205, 61, 66, 79, 56, 20, 12, 201, 48, 81, 193, 48, 148, 193, 80, 147, 206, 20, 10, 199, 44, 243, 77, 84,
-			226, 79, 56, 20, 12, 201, 44, 243, 15, 56, 148, 193, 80, 147, 206, 20, 12, 201, 44, 21, 5, 44, 148, 193, 80, 147, 206, 20, 12, 201,
-			44, 19, 129, 48, 148, 193, 80, 147, 206, 20, 10, 199, 5, 52, 197, 73, 66, 79, 56, 20, 10, 199, 4, 226, 77, 5, 66, 79, 56, 20,
-			10, 199, 64, 244, 212, 16, 21, 5, 72, 20, 10, 199, 24, 197, 79, 72, 145, 5, 72, 20, 15, 204, 44, 243, 77, 84, 224, 76, 64, 243,
-			9, 80, 148, 203, 20, 10, 199, 28, 83, 198, 101, 50, 83, 44, 20, 10, 199, 5, 85, 1, 72, 178, 83, 44, 20, 0, 11, 200, 32, 84,
-			131, 20, 115, 214, 36, 224, 20, 9, 198, 16, 148, 203, 85, 64, 66, 20, 9, 198, 4, 48, 197, 65, 64, 66, 20, 0, 8, 197, 48, 19,
-			131, 21, 32, 20, 8, 197, 25, 83, 135, 21, 32, 20, 8, 197, 44, 197, 83, 36, 192, 20, 8, 197, 12, 130, 76, 20, 224, 20, 8, 197,
-			65, 35, 198, 4, 224, 21, 8, 197, 5, 67, 205, 5, 32, 20, 0, 9, 198, 12, 245, 84, 85, 33, 64, 20, 13, 202, 76, 81, 9, 52,
-			83, 148, 5, 66, 79, 56, 20, 13, 202, 44, 243, 134, 72, 243, 148, 5, 66, 79, 56, 20, 13, 202, 16, 242, 213, 52, 83, 148, 5, 66,
-			79, 56, 20, 13, 202, 5, 33, 213, 52, 83, 148, 5, 66, 79, 56, 20, 9, 198, 77, 83, 77, 21, 33, 64, 20, 9, 198, 37, 32, 75,
-			37, 50, 192, 20, 9, 198, 36, 33, 82, 37, 50, 192, 20, 9, 198, 20, 198, 83, 37, 50, 192, 20, 16, 141, 9, 19, 12, 195, 166, 14,
-			4, 5, 18, 9, 14, 4, 5, 20, 9, 198, 72, 82, 212, 61, 32, 76, 20, 0, 10, 199, 65, 80, 140, 36, 50, 83, 80, 20, 10, 199,
-			52, 18, 84, 72, 84, 211, 20, 20, 6, 195, 61, 32, 76, 20, 9, 198, 64, 19, 9, 76, 17, 5, 20, 20, 70, 45, 37, 83, 80, 17,
-			5, 49, 34, 116, 89, 72, 6, 110, 12, 86, 13, 0, 20, 10, 199, 36, 225, 21, 45, 64, 78, 76, 20, 0, 7, 196, 81, 34, 83, 80,
-			20, 11, 200, 65, 35, 214, 36, 228, 201, 20, 192, 20, 11, 200, 88, 84, 130, 4, 194, 83, 21, 32, 20, 11, 200, 81, 148, 129, 56, 226,
-			83, 21, 32, 20, 11, 200, 77, 65, 82, 36, 194, 83, 21, 32, 20, 11, 200, 77, 64, 66, 36, 194, 83, 21, 32, 20, 11, 200, 76, 145,
-			206, 4, 194, 83, 21, 32, 20, 11, 200, 28, 84, 141, 4, 226, 83, 21, 32, 20, 11, 200, 28, 19, 22, 4, 226, 83, 21, 32, 20, 0,
-			12, 201, 65, 54, 75, 60, 102, 83, 37, 50, 192, 20, 12, 201, 64, 243, 25, 4, 225, 18, 37, 50, 192, 20, 12, 201, 20, 115, 195, 20,
-			229, 18, 37, 50, 192, 20, 0, 9, 198, 64, 21, 15, 48, 241, 192, 20, 9, 198, 60, 226, 207, 48, 241, 192, 20, 9, 198, 4, 194, 207,
-			48, 241, 192, 20, 9, 198, 64, 20, 139, 21, 33, 64, 20, 9, 198, 24, 146, 211, 21, 33, 64, 20, 5, 194, 16, 16, 72, 0, 10, 199,
-			5, 48, 133, 77, 67, 211, 20, 20, 10, 199, 65, 35, 203, 85, 34, 83, 80, 20, 10, 199, 56, 245, 133, 48, 194, 83, 80, 20, 10, 199,
-			52, 241, 5, 72, 226, 83, 80, 20, 10, 199, 44, 243, 80, 60, 226, 83, 80, 20, 10, 199, 44, 243, 77, 84, 226, 83, 80, 20, 10, 199,
-			32, 20, 144, 20, 226, 83, 80, 20, 14, 203, 36, 225, 21, 77, 68, 137, 4, 194, 83, 21, 32, 20, 14, 203, 16, 149, 137, 76, 147, 206,
-			4, 194, 83, 21, 32, 20, 9, 198, 76, 84, 133, 56, 17, 5, 20, 0, 11, 200, 88, 84, 147, 36, 98, 67, 21, 32, 20, 11, 200, 72,
-			84, 18, 60, 69, 67, 21, 32, 20, 11, 200, 53, 148, 212, 36, 98, 67, 21, 32, 20, 11, 200, 45, 96, 76, 36, 98, 67, 21, 32, 20,
-			11, 200, 36, 229, 18, 60, 69, 67, 21, 32, 20, 15, 204, 80, 161, 75, 44, 244, 204, 61, 96, 75, 37, 50, 192, 20, 0, 16, 205, 84,
-			65, 9, 24, 97, 82, 20, 229, 9, 21, 34, 78, 28, 20, 12, 201, 72, 84, 197, 73, 97, 82, 36, 225, 192, 20, 12, 201, 72, 83, 73,
-			81, 65, 82, 36, 225, 192, 20, 12, 201, 64, 192, 75, 5, 65, 82, 36, 225, 192, 20, 12, 201, 64, 84, 134, 61, 33, 82, 36, 225, 192,
-			20, 12, 201, 64, 21, 5, 57, 65, 82, 36, 225, 192, 20, 12, 201, 60, 36, 197, 73, 97, 82, 36, 225, 192, 20, 12, 201, 57, 83, 77,
-			21, 33, 82, 36, 225, 192, 20, 12, 201, 45, 83, 20, 37, 97, 82, 36, 225, 192, 20, 12, 201, 45, 33, 68, 37, 65, 82, 36, 225, 192,
-			20, 12, 201, 44, 243, 77, 85, 65, 82, 36, 225, 192, 20, 12, 201, 44, 20, 130, 85, 33, 82, 36, 225, 192, 20, 12, 201, 44, 19, 9,
-			9, 33, 82, 36, 225, 192, 20, 12, 201, 36, 229, 133, 57, 65, 82, 36, 225, 192, 20, 12, 201, 36, 229, 5, 29, 33, 82, 36, 225, 192,
-			20, 12, 201, 32, 244, 208, 37, 65, 82, 36, 225, 192, 20, 12, 201, 24, 16, 197, 81, 65, 82, 36, 225, 192, 20, 12, 201, 16, 84, 197,
-			73, 65, 82, 36, 225, 192, 20, 12, 201, 16, 84, 15, 73, 65, 82, 36, 225, 192, 20, 12, 201, 8, 19, 12, 61, 65, 82, 36, 225, 192,
-			20, 12, 201, 5, 69, 5, 77, 65, 82, 36, 225, 192, 20, 12, 201, 5, 49, 129, 49, 65, 82, 36, 225, 192, 20, 12, 201, 5, 4, 18,
-			21, 65, 82, 36, 225, 192, 20, 12, 201, 4, 36, 197, 57, 65, 82, 36, 225, 192, 20, 0, 13, 202, 88, 147, 204, 60, 224, 197, 48, 194,
-			83, 80, 20, 9, 198, 65, 35, 211, 4, 148, 212, 20, 9, 198, 56, 144, 143, 56, 149, 0, 20, 0, 26, 73, 64, 21, 18, 60, 230, 77,
-			36, 179, 206, 48, 110, 47, 34, 39, 50, 6, 116, 65, 37, 49, 114, 50, 0, 20, 12, 201, 76, 21, 9, 76, 96, 75, 80, 147, 206, 20,
-			12, 201, 72, 84, 18, 60, 69, 75, 80, 147, 206, 20, 12, 201, 41, 84, 137, 76, 66, 75, 80, 147, 206, 20, 10, 199, 4, 48, 197, 77,
-			50, 79, 56, 20, 10, 199, 81, 32, 86, 21, 36, 197, 72, 20, 10, 199, 72, 80, 201, 16, 149, 133, 72, 20, 10, 199, 4, 48, 197, 48,
-			84, 133, 72, 20, 10, 199, 61, 3, 1, 16, 83, 9, 28, 20, 0, 12, 201, 44, 19, 5, 40, 67, 211, 44, 244, 0, 20, 12, 201, 28,
-			19, 22, 4, 227, 211, 44, 244, 0, 20, 11, 200, 88, 19, 9, 16, 84, 137, 56, 112, 20, 11, 200, 84, 68, 129, 16, 84, 137, 56, 112,
-			20, 11, 200, 81, 84, 195, 32, 84, 137, 56, 112, 20, 11, 200, 77, 3, 206, 76, 84, 137, 56, 112, 20, 11, 200, 76, 19, 21, 80, 84,
-			137, 56, 112, 20, 11, 200, 60, 225, 21, 48, 84, 137, 56, 112, 20, 11, 200, 52, 147, 137, 52, 84, 137, 56, 112, 20, 11, 200, 52, 18,
-			213, 48, 84, 137, 56, 112, 20, 15, 204, 44, 243, 148, 36, 225, 197, 57, 65, 82, 36, 225, 192, 20, 11, 200, 28, 19, 15, 64, 84, 137,
-			56, 112, 20, 11, 200, 24, 147, 5, 80, 84, 137, 56, 112, 20, 11, 200, 20, 180, 201, 48, 84, 137, 56, 112, 20, 11, 200, 16, 82, 193,
-			80, 84, 137, 56, 112, 20, 15, 204, 9, 35, 206, 44, 244, 203, 61, 1, 82, 36, 225, 192, 20, 7, 196, 45, 33, 69, 72, 20, 11, 200,
-			81, 83, 135, 76, 147, 132, 36, 112, 20, 11, 200, 80, 18, 211, 45, 147, 4, 36, 112, 20, 11, 200, 52, 19, 135, 24, 243, 4, 36, 112,
-			20, 11, 200, 44, 243, 4, 8, 195, 196, 36, 112, 20, 11, 200, 29, 81, 6, 73, 145, 212, 36, 112, 20, 11, 200, 4, 193, 129, 16, 84,
-			140, 36, 112, 20, 11, 200, 65, 35, 214, 77, 66, 78, 16, 80, 20, 7, 196, 76, 81, 1, 56, 21, 9, 68, 8, 246, 76, 20, 21, 0,
-			10, 0, 12, 201, 77, 65, 82, 20, 243, 69, 81, 34, 64, 20, 12, 201, 44, 243, 15, 72, 147, 69, 81, 34, 64, 20, 8, 197, 32, 21,
-			129, 72, 144, 20, 8, 197, 8, 20, 143, 56, 144, 20, 0, 9, 198, 64, 84, 147, 60, 225, 76, 20, 9, 198, 88, 20, 203, 21, 34, 64,
-			20, 9, 198, 64, 192, 71, 21, 34, 64, 20, 9, 198, 48, 147, 135, 21, 34, 64, 20, 9, 198, 32, 82, 211, 21, 34, 64, 20, 9, 198,
-			48, 19, 212, 37, 50, 192, 20, 9, 198, 44, 19, 212, 37, 50, 192, 20, 9, 198, 8, 147, 212, 37, 50, 192, 20, 9, 198, 52, 19, 1,
-			44, 149, 0, 20, 0, 10, 199, 65, 35, 195, 21, 52, 207, 72, 20, 14, 203, 77, 147, 80, 80, 243, 65, 80, 243, 15, 28, 144, 20, 9,
-			198, 64, 21, 15, 48, 241, 201, 20, 9, 198, 60, 226, 207, 48, 241, 201, 20, 9, 198, 32, 243, 79, 48, 241, 201, 20, 9, 198, 13, 149,
-			15, 48, 241, 201, 20, 10, 199, 64, 243, 12, 85, 66, 79, 56, 20, 10, 199, 4, 97, 133, 45, 66, 79, 56, 20, 14, 203, 72, 82, 1,
-			8, 147, 9, 80, 84, 137, 56, 112, 20, 14, 203, 52, 243, 143, 25, 67, 206, 28, 84, 137, 56, 112, 20, 0, 18, 7, 12, 39, 3, 8,
-			1, 9, 13, 55, 110, 49, 34, 6, 35, 57, 65, 0, 12, 137, 11, 1, 22, 5, 18, 14, 195, 184, 19, 20, 11, 200, 88, 83, 133, 72,
-			243, 15, 28, 144, 20, 11, 200, 61, 35, 137, 80, 243, 15, 28, 144, 20, 11, 200, 28, 192, 67, 36, 243, 15, 28, 144, 20, 9, 134, 19,
-			195, 166, 19, 15, 14, 20, 16, 6, 18, 195, 166, 19, 15, 14, 51, 109, 89, 6, 114, 68, 0, 20, 11, 200, 21, 50, 193, 48, 84, 137,
-			56, 112, 20, 11, 200, 36, 225, 19, 81, 81, 5, 72, 80, 20, 11, 200, 48, 145, 66, 32, 21, 133, 72, 144, 20, 11, 200, 8, 241, 200,
-			60, 193, 5, 72, 144, 20, 11, 200, 36, 229, 5, 72, 197, 68, 36, 80, 20, 11, 200, 44, 243, 80, 61, 50, 84, 84, 208, 20, 11, 200,
-			64, 243, 25, 56, 243, 73, 84, 208, 20, 11, 200, 52, 147, 12, 20, 227, 137, 84, 208, 20, 11, 200, 21, 96, 78, 28, 83, 9, 84, 208,
-			20, 11, 200, 32, 84, 148, 84, 114, 78, 16, 80, 20, 7, 196, 52, 240, 137, 48, 20, 7, 196, 16, 80, 129, 80, 20, 9, 198, 45, 38,
-			83, 80, 19, 0, 20, 0, 12, 201, 64, 19, 132, 20, 176, 71, 21, 34, 64, 20, 12, 201, 81, 34, 78, 36, 64, 68, 37, 50, 192, 20,
-			12, 201, 80, 83, 5, 76, 179, 208, 37, 50, 192, 20, 12, 201, 64, 20, 129, 80, 18, 212, 37, 50, 192, 20, 12, 201, 48, 16, 153, 72,
-			147, 148, 37, 50, 192, 20, 12, 201, 37, 52, 129, 20, 194, 84, 37, 50, 192, 20, 12, 201, 33, 148, 15, 80, 18, 212, 37, 50, 192, 20,
-			12, 201, 33, 145, 18, 60, 198, 84, 37, 50, 192, 20, 12, 201, 4, 193, 207, 72, 149, 13, 37, 50, 192, 20, 12, 201, 16, 243, 73, 12,
-			147, 5, 72, 85, 0, 20, 8, 197, 76, 17, 146, 4, 224, 21, 0, 14, 139, 19, 5, 14, 20, 5, 14, 20, 9, 195, 184, 19, 20, 14,
-			139, 16, 18, 15, 13, 9, 19, 11, 21, 195, 184, 19, 20, 9, 198, 41, 81, 1, 37, 53, 0, 20, 9, 198, 4, 65, 78, 60, 145, 0,
-			20, 9, 198, 24, 244, 131, 21, 33, 84, 20, 9, 198, 72, 81, 201, 60, 224, 76, 20, 9, 198, 29, 85, 20, 85, 32, 76, 20, 0, 15,
-			140, 16, 18, 195, 166, 20, 5, 14, 20, 9, 195, 184, 19, 20, 12, 137, 7, 21, 22, 5, 18, 14, 195, 184, 18, 20, 10, 199, 44, 195,
-			210, 21, 34, 78, 28, 20, 12, 201, 72, 81, 133, 72, 83, 148, 36, 83, 0, 20, 10, 199, 16, 83, 5, 28, 84, 133, 80, 20, 10, 199,
-			16, 80, 201, 16, 84, 133, 80, 20, 10, 199, 4, 197, 5, 72, 84, 133, 80, 20, 12, 201, 16, 147, 69, 57, 50, 79, 56, 19, 0, 20,
-			0, 7, 196, 88, 243, 21, 80, 20, 9, 198, 77, 1, 75, 84, 193, 82, 20, 9, 198, 64, 192, 84, 36, 225, 82, 20, 9, 198, 64, 20,
-			208, 60, 193, 82, 20, 9, 198, 44, 242, 197, 81, 65, 82, 20, 9, 198, 44, 19, 11, 84, 193, 82, 20, 9, 198, 16, 148, 211, 60, 225,
-			82, 20, 9, 198, 16, 84, 212, 36, 225, 82, 20, 9, 198, 16, 82, 204, 36, 225, 82, 20, 9, 198, 5, 4, 18, 60, 33, 82, 20, 9,
-			198, 88, 149, 18, 36, 243, 0, 20, 11, 200, 9, 35, 205, 44, 19, 9, 84, 208, 20, 9, 198, 77, 80, 141, 5, 34, 78, 20, 9, 198,
-			16, 19, 13, 5, 66, 78, 20, 7, 196, 64, 81, 1, 48, 20, 7, 196, 52, 241, 1, 48, 20, 7, 196, 5, 33, 65, 48, 20, 0, 14,
-			139, 1, 13, 2, 1, 19, 19, 1, 4, 195, 184, 18, 20, 12, 201, 65, 35, 205, 37, 50, 213, 37, 65, 84, 20, 12, 201, 80, 83, 5,
-			80, 82, 206, 37, 50, 192, 20, 12, 201, 76, 147, 135, 4, 193, 83, 37, 50, 192, 20, 12, 201, 52, 17, 1, 28, 20, 203, 37, 50, 192,
-			20, 12, 201, 44, 244, 205, 60, 115, 206, 37, 50, 192, 20, 12, 201, 28, 84, 149, 56, 66, 86, 37, 50, 192, 20, 12, 201, 64, 84, 137,
-			4, 194, 83, 21, 33, 84, 20, 0, 9, 198, 48, 19, 65, 37, 53, 0, 20, 20, 66, 12, 64, 89, 36, 72, 36, 51, 6, 114, 65, 0,
-			44, 20, 81, 114, 111, 109, 32, 9, 198, 17, 147, 129, 52, 149, 0, 20, 13, 202, 20, 180, 208, 21, 34, 77, 20, 229, 1, 48, 20, 13,
-			202, 16, 84, 1, 73, 65, 77, 20, 229, 1, 48, 20, 0, 12, 137, 16, 18, 195, 166, 13, 1, 20, 21, 18, 20, 10, 199, 56, 21, 9,
-			88, 149, 5, 80, 20, 10, 199, 52, 18, 143, 72, 149, 5, 80, 20, 10, 199, 48, 246, 65, 48, 149, 5, 80, 20, 10, 199, 36, 229, 9,
-			52, 149, 5, 80, 20, 10, 199, 4, 97, 137, 56, 149, 5, 80, 20, 12, 201, 36, 211, 65, 81, 34, 75, 84, 193, 82, 20, 12, 201, 8,
-			144, 140, 36, 241, 210, 4, 97, 82, 20, 10, 199, 52, 244, 129, 80, 244, 137, 20, 20, 10, 199, 65, 148, 129, 52, 145, 1, 48, 20, 0,
-			21, 68, 77, 67, 210, 80, 89, 47, 39, 34, 72, 15, 107, 112, 40, 0, 81, 104, 97, 118, 32, 15, 204, 84, 225, 5, 72, 82, 211, 81,
-			33, 77, 37, 65, 84, 20, 9, 198, 81, 33, 77, 84, 193, 82, 20, 9, 198, 65, 35, 198, 4, 225, 82, 20, 9, 198, 56, 149, 133, 48,
-			193, 82, 20, 9, 198, 52, 245, 73, 48, 193, 82, 20, 9, 198, 44, 243, 77, 5, 65, 82, 20, 9, 198, 36, 226, 193, 72, 225, 82, 20,
-			9, 198, 25, 37, 83, 81, 33, 82, 20, 9, 198, 16, 148, 203, 85, 65, 82, 20, 7, 196, 4, 65, 5, 72, 20, 0, 9, 198, 76, 130,
-			73, 80, 148, 203, 20, 9, 198, 65, 35, 211, 4, 148, 203, 20, 9, 198, 49, 83, 129, 80, 148, 203, 20, 9, 198, 9, 83, 9, 52, 148,
-			203, 20, 9, 198, 5, 67, 5, 80, 148, 203, 20, 9, 198, 17, 32, 77, 5, 66, 75, 20, 0, 13, 202, 77, 80, 147, 36, 66, 65, 72,
-			149, 5, 80, 20, 13, 202, 64, 192, 85, 76, 144, 137, 48, 149, 5, 80, 20, 13, 202, 21, 128, 197, 57, 68, 137, 12, 149, 5, 80, 20,
-			13, 202, 4, 113, 210, 21, 52, 201, 88, 149, 5, 80, 20, 9, 198, 52, 20, 135, 21, 34, 84, 20, 9, 198, 24, 244, 198, 61, 34, 84,
-			20, 0, 10, 199, 20, 118, 80, 80, 243, 15, 28, 20, 10, 199, 72, 80, 75, 80, 149, 133, 72, 20, 12, 137, 13, 195, 166, 1, 14, 4,
-			18, 5, 18, 20, 10, 199, 44, 243, 150, 21, 33, 197, 72, 20, 10, 199, 44, 243, 147, 84, 197, 5, 72, 20, 12, 201, 44, 243, 80, 48,
-			83, 69, 57, 65, 82, 20, 10, 199, 44, 243, 77, 4, 225, 5, 72, 20, 10, 199, 77, 67, 210, 4, 117, 9, 28, 20, 10, 199, 8, 20,
-			142, 4, 117, 9, 28, 20, 10, 199, 52, 243, 143, 45, 32, 84, 36, 20, 10, 199, 77, 67, 210, 4, 117, 9, 28, 20, 10, 199, 8, 20,
-			142, 4, 117, 9, 28, 20, 10, 199, 36, 229, 18, 36, 112, 78, 80, 20, 0, 9, 198, 44, 244, 148, 37, 51, 206, 20, 7, 196, 52, 83,
-			15, 56, 20, 13, 138, 9, 13, 16, 18, 195, 166, 7, 14, 5, 18, 20, 7, 196, 49, 81, 193, 72, 20, 9, 198, 44, 243, 77, 85, 64,
-			66, 20, 0, 7, 197, 8, 19, 12, 60, 224, 12, 201, 20, 180, 208, 21, 34, 77, 20, 229, 0, 20, 12, 201, 44, 243, 77, 84, 226, 75,
-			4, 229, 0, 20, 10, 69, 64, 145, 7, 36, 224, 21, 0, 10, 0, 13, 202, 20, 101, 5, 73, 33, 84, 80, 83, 9, 28, 20, 12, 201,
-			64, 244, 212, 76, 52, 137, 65, 69, 77, 20, 0, 12, 201, 53, 83, 73, 24, 146, 193, 80, 147, 206, 20, 10, 199, 72, 84, 208, 20, 181,
-			5, 72, 20, 10, 199, 52, 83, 147, 81, 37, 69, 72, 20, 10, 199, 44, 243, 147, 81, 37, 69, 72, 20, 10, 199, 36, 228, 212, 37, 69,
-			69, 72, 20, 10, 199, 5, 53, 18, 36, 225, 197, 72, 20, 10, 199, 4, 225, 204, 37, 53, 9, 44, 20, 10, 199, 29, 32, 84, 84, 192,
-			78, 80, 20, 10, 199, 16, 83, 196, 61, 32, 78, 80, 20, 10, 199, 44, 243, 134, 37, 50, 193, 8, 20, 0, 10, 67, 16, 21, 5, 72,
-			36, 57, 47, 0, 12, 201, 88, 246, 69, 85, 34, 83, 80, 148, 203, 20, 12, 201, 80, 84, 146, 61, 34, 83, 80, 148, 203, 20, 12, 201,
-			77, 147, 66, 60, 194, 83, 80, 148, 203, 20, 12, 201, 77, 64, 76, 36, 226, 83, 80, 148, 203, 20, 12, 201, 77, 2, 82, 37, 66, 83,
-			80, 148, 203, 20, 12, 201, 76, 240, 201, 4, 194, 83, 80, 148, 203, 20, 12, 201, 72, 149, 21, 4, 194, 83, 80, 148, 203, 20, 12, 201,
-			65, 34, 86, 5, 66, 83, 80, 148, 203, 20, 12, 201, 28, 83, 197, 48, 82, 212, 72, 148, 203, 20, 12, 201, 24, 244, 141, 4, 194, 83,
-			80, 148, 203, 20, 12, 201, 24, 85, 68, 4, 194, 83, 80, 148, 203, 20, 12, 201, 24, 85, 9, 12, 130, 83, 80, 148, 203, 20, 12, 201,
-			16, 20, 151, 36, 226, 83, 80, 148, 203, 20, 12, 201, 9, 37, 84, 4, 194, 83, 80, 148, 203, 20, 12, 201, 4, 36, 213, 72, 66, 83,
-			80, 148, 203, 20, 0, 21, 73, 64, 20, 211, 21, 0, 82, 80, 245, 84, 48, 110, 35, 71, 112, 47, 6, 40, 0, 20, 8, 197, 76, 19,
-			4, 21, 32, 20, 8, 197, 4, 114, 84, 21, 32, 20, 8, 197, 64, 83, 131, 36, 192, 20, 8, 197, 44, 243, 131, 36, 192, 20, 12, 201,
-			81, 32, 78, 77, 0, 82, 20, 229, 0, 20, 12, 201, 81, 32, 78, 77, 0, 82, 20, 228, 192, 20, 0, 13, 202, 45, 96, 76, 36, 98,
-			75, 5, 66, 79, 56, 20, 9, 198, 80, 16, 149, 21, 33, 64, 20, 9, 198, 56, 244, 141, 21, 33, 64, 20, 9, 198, 24, 84, 137, 21,
-			33, 64, 20, 9, 198, 36, 179, 206, 37, 50, 192, 20, 9, 198, 77, 1, 75, 81, 32, 76, 20, 9, 198, 44, 244, 144, 61, 32, 76, 20,
-			9, 198, 24, 84, 212, 37, 96, 76, 20, 0, 15, 204, 76, 17, 15, 52, 20, 207, 12, 130, 83, 80, 148, 203, 20, 15, 204, 64, 84, 134,
-			20, 181, 9, 60, 226, 83, 80, 148, 203, 20, 15, 204, 44, 243, 77, 84, 226, 84, 5, 34, 83, 80, 148, 203, 20, 15, 204, 36, 225, 9,
-			88, 145, 21, 4, 194, 83, 80, 148, 203, 20, 15, 204, 36, 212, 18, 21, 52, 201, 60, 226, 83, 80, 148, 203, 20, 15, 204, 20, 180, 208,
-			4, 228, 201, 60, 226, 83, 80, 148, 203, 20, 13, 138, 12, 195, 166, 18, 5, 18, 9, 14, 4, 5, 20, 9, 198, 44, 19, 143, 56, 17,
-			5, 20, 0, 11, 200, 44, 19, 132, 36, 64, 84, 85, 32, 20, 11, 200, 61, 33, 193, 56, 241, 210, 4, 208, 20, 11, 200, 45, 38, 80,
-			80, 241, 210, 4, 208, 20, 11, 200, 20, 180, 208, 48, 242, 84, 21, 32, 20, 11, 200, 4, 178, 207, 52, 211, 196, 21, 32, 20, 16, 141,
-			16, 18, 15, 16, 195, 166, 4, 5, 21, 20, 9, 19, 11, 20, 11, 200, 77, 66, 80, 20, 225, 9, 84, 208, 20, 11, 200, 44, 243, 80,
-			20, 225, 9, 84, 208, 20, 0, 8, 197, 45, 83, 20, 85, 32, 20, 8, 197, 45, 34, 68, 21, 32, 20, 8, 197, 41, 84, 212, 21, 32,
-			20, 12, 201, 36, 225, 140, 5, 67, 210, 37, 50, 192, 20, 0, 9, 198, 80, 19, 135, 21, 33, 64, 20, 9, 198, 64, 21, 83, 21, 33,
-			64, 20, 9, 198, 52, 20, 211, 21, 33, 64, 20, 9, 198, 52, 20, 203, 21, 33, 64, 20, 9, 198, 52, 20, 139, 21, 33, 64, 20, 9,
-			198, 52, 19, 139, 21, 33, 64, 20, 9, 198, 45, 84, 147, 21, 33, 64, 20, 9, 198, 44, 20, 211, 21, 33, 64, 20, 9, 198, 24, 147,
-			135, 21, 33, 64, 20, 0, 10, 199, 88, 20, 197, 45, 67, 205, 36, 20, 9, 198, 72, 83, 85, 48, 17, 5, 20, 9, 198, 52, 84, 211,
-			36, 17, 5, 20, 10, 199, 61, 33, 15, 56, 224, 78, 76, 20, 0, 15, 204, 24, 244, 148, 36, 98, 75, 5, 67, 210, 37, 50, 192, 20,
-			7, 196, 88, 83, 137, 56, 20, 11, 200, 77, 66, 80, 20, 225, 9, 5, 64, 20, 7, 196, 61, 34, 193, 56, 21, 0, 8, 197, 21, 2,
-			76, 60, 112, 20, 8, 197, 52, 19, 5, 72, 144, 20, 9, 198, 88, 242, 193, 48, 148, 203, 20, 9, 198, 76, 177, 77, 5, 66, 75, 20,
-			12, 201, 44, 243, 147, 80, 149, 21, 20, 229, 0, 20, 0, 9, 198, 88, 242, 193, 48, 148, 212, 20, 9, 198, 4, 227, 129, 48, 148, 212,
-			20, 9, 198, 44, 19, 148, 61, 34, 64, 20, 9, 198, 76, 178, 90, 60, 145, 0, 20, 9, 198, 72, 82, 212, 61, 32, 84, 20, 9, 198,
-			52, 241, 5, 72, 21, 0, 20, 9, 198, 48, 82, 212, 61, 32, 84, 20, 0, 10, 199, 76, 81, 205, 20, 229, 5, 72, 20, 10, 199, 64,
-			145, 205, 20, 229, 5, 72, 20, 10, 199, 44, 243, 134, 84, 225, 5, 72, 20, 10, 199, 5, 84, 203, 84, 197, 5, 72, 20, 10, 199, 61,
-			4, 201, 28, 83, 9, 28, 20, 10, 199, 33, 83, 4, 76, 19, 9, 28, 20, 10, 199, 4, 229, 1, 28, 83, 9, 28, 20, 10, 199, 4,
-			228, 203, 84, 83, 9, 28, 20, 9, 198, 32, 148, 212, 61, 34, 69, 20, 0, 22, 72, 48, 81, 197, 56, 65, 82, 56, 80, 55, 36, 81,
-			6, 109, 50, 72, 114, 50, 108, 89, 0, 21, 72, 48, 81, 197, 56, 65, 82, 56, 80, 55, 36, 81, 6, 109, 50, 72, 114, 50, 108, 0,
-			11, 200, 16, 84, 212, 36, 195, 5, 72, 144, 20, 11, 200, 81, 98, 86, 48, 17, 212, 36, 112, 20, 11, 200, 76, 176, 76, 44, 17, 212,
-			36, 112, 20, 11, 200, 72, 81, 197, 16, 84, 140, 36, 112, 20, 11, 200, 52, 19, 132, 32, 17, 148, 36, 112, 20, 11, 200, 24, 244, 149,
-			17, 49, 76, 36, 112, 20, 11, 200, 24, 244, 147, 80, 19, 132, 36, 112, 20, 11, 200, 64, 20, 129, 16, 148, 201, 76, 176, 20, 11, 200,
-			52, 19, 131, 33, 84, 137, 76, 176, 20, 12, 201, 5, 66, 5, 56, 145, 78, 76, 148, 203, 20, 11, 200, 45, 144, 133, 72, 225, 84, 36,
-			176, 20, 11, 200, 81, 98, 86, 48, 17, 212, 36, 112, 20, 11, 200, 76, 176, 76, 44, 17, 212, 36, 112, 20, 9, 198, 4, 229, 9, 45,
-			96, 82, 20, 0, 8, 197, 73, 81, 197, 72, 144, 20, 12, 201, 72, 81, 213, 48, 17, 5, 81, 34, 64, 20, 8, 197, 48, 149, 1, 56,
-			144, 20, 8, 197, 57, 80, 78, 12, 80, 20, 12, 201, 36, 228, 212, 73, 82, 212, 61, 32, 84, 20, 0, 11, 136, 3, 9, 19, 5, 12,
-			195, 184, 18, 20, 9, 198, 80, 145, 199, 21, 34, 64, 20, 9, 198, 72, 83, 147, 21, 34, 64, 20, 9, 198, 64, 18, 203, 21, 34, 64,
-			20, 9, 198, 40, 20, 203, 21, 34, 64, 20, 9, 198, 24, 148, 203, 21, 34, 64, 20, 9, 198, 64, 20, 148, 37, 50, 192, 20, 18, 70,
-			60, 64, 76, 37, 50, 192, 39, 72, 35, 55, 6, 37, 89, 49, 0, 20, 9, 198, 4, 96, 84, 37, 50, 192, 20, 0, 12, 137, 9, 14,
-			7, 5, 14, 9, 195, 184, 18, 20, 10, 199, 65, 83, 19, 5, 66, 79, 56, 20, 12, 137, 1, 4, 8, 195, 166, 19, 9, 15, 14, 20,
-			10, 199, 81, 32, 78, 76, 149, 5, 72, 20, 10, 199, 20, 97, 133, 45, 69, 69, 72, 20, 10, 199, 45, 84, 141, 4, 113, 82, 36, 20,
-			10, 199, 56, 20, 15, 48, 149, 1, 56, 20, 10, 199, 8, 148, 135, 37, 69, 9, 56, 20, 0, 12, 137, 9, 14, 7, 5, 14, 9, 195,
-			184, 19, 20, 9, 134, 7, 5, 8, 195, 184, 18, 20, 11, 200, 72, 81, 213, 48, 84, 137, 56, 112, 20, 11, 200, 21, 53, 9, 52, 84,
-			137, 56, 112, 20, 11, 200, 9, 83, 148, 52, 17, 197, 72, 144, 20, 11, 200, 76, 19, 132, 77, 147, 140, 36, 112, 20, 11, 200, 4, 225,
-			1, 49, 84, 201, 76, 176, 20, 11, 200, 65, 35, 211, 12, 83, 137, 84, 208, 20, 9, 198, 16, 243, 73, 12, 147, 0, 20, 7, 196, 16,
-			80, 137, 48, 20, 9, 198, 48, 21, 5, 72, 19, 0, 20, 0, 10, 135, 12, 195, 166, 19, 9, 15, 14, 20, 9, 198, 49, 85, 135, 37,
-			34, 71, 20, 8, 197, 8, 83, 154, 60, 192, 20, 12, 201, 88, 149, 1, 48, 148, 212, 37, 50, 192, 20, 12, 201, 84, 226, 79, 56, 148,
-			212, 37, 50, 192, 20, 12, 201, 80, 245, 5, 52, 148, 212, 37, 50, 192, 20, 12, 201, 76, 227, 194, 8, 148, 212, 37, 50, 192, 20, 12,
-			201, 76, 21, 1, 56, 148, 212, 37, 50, 192, 20, 12, 201, 72, 246, 65, 48, 148, 212, 37, 50, 192, 20, 12, 201, 72, 145, 207, 72, 148,
-			212, 37, 50, 192, 20, 12, 201, 65, 54, 75, 60, 65, 76, 37, 50, 192, 20, 12, 201, 64, 244, 21, 48, 148, 212, 37, 50, 192, 20, 12,
-			201, 64, 193, 79, 56, 20, 212, 37, 50, 192, 20, 12, 201, 64, 19, 148, 20, 148, 212, 37, 50, 192, 20, 12, 201, 61, 5, 9, 52, 148,
-			212, 37, 50, 192, 20, 12, 201, 56, 146, 9, 48, 148, 212, 37, 50, 192, 20, 12, 201, 52, 244, 135, 4, 224, 84, 37, 50, 192, 20, 12,
-			201, 52, 82, 193, 56, 148, 212, 37, 50, 192, 20, 12, 201, 48, 246, 65, 48, 148, 212, 37, 50, 192, 20, 12, 201, 48, 241, 193, 72, 149,
-			13, 37, 50, 192, 20, 12, 201, 37, 51, 1, 52, 148, 212, 37, 50, 192, 20, 12, 201, 36, 65, 65, 48, 148, 212, 37, 50, 192, 20, 12,
-			201, 33, 83, 65, 56, 148, 212, 37, 50, 192, 20, 12, 201, 32, 147, 132, 84, 148, 212, 37, 50, 192, 20, 12, 201, 32, 81, 15, 56, 148,
-			212, 37, 50, 192, 20, 12, 201, 28, 21, 76, 48, 148, 212, 37, 50, 192, 20, 12, 201, 24, 83, 73, 56, 148, 212, 37, 50, 192, 20, 12,
-			201, 24, 21, 1, 48, 148, 212, 37, 50, 192, 20, 12, 201, 21, 52, 193, 100, 148, 212, 37, 50, 192, 20, 12, 201, 21, 50, 193, 64, 148,
-			212, 37, 50, 192, 20, 12, 201, 20, 212, 9, 72, 148, 212, 37, 50, 192, 20, 12, 201, 16, 148, 137, 28, 148, 212, 37, 50, 192, 20, 12,
-			201, 16, 144, 71, 56, 244, 212, 37, 50, 192, 20, 12, 201, 16, 83, 9, 72, 148, 212, 37, 50, 192, 20, 12, 201, 4, 224, 82, 44, 148,
-			212, 37, 50, 192, 20, 12, 201, 4, 197, 18, 84, 148, 212, 37, 50, 192, 20, 12, 201, 4, 194, 217, 52, 148, 212, 37, 50, 192, 20, 12,
-			201, 4, 181, 9, 88, 148, 212, 37, 50, 192, 20, 8, 197, 24, 147, 129, 57, 48, 20, 0, 19, 67, 80, 145, 19, 47, 37, 89, 15, 50,
-			6, 114, 49, 0, 81, 110, 111, 107, 32, 14, 139, 20, 5, 14, 4, 5, 14, 20, 9, 195, 184, 19, 20, 11, 136, 4, 15, 13, 16, 20,
-			195, 184, 18, 20, 9, 198, 72, 84, 207, 49, 85, 0, 20, 13, 202, 41, 84, 212, 36, 98, 75, 5, 66, 79, 56, 20, 13, 202, 24, 19,
-			19, 36, 98, 75, 5, 66, 79, 56, 20, 9, 198, 4, 227, 149, 37, 65, 84, 20, 9, 198, 24, 244, 148, 36, 227, 128, 20, 9, 198, 8,
-			192, 83, 21, 33, 84, 20, 0, 11, 136, 14, 15, 18, 13, 12, 195, 184, 19, 20, 12, 137, 3, 8, 9, 11, 1, 14, 195, 184, 18, 20,
-			12, 137, 1, 18, 18, 1, 14, 7, 195, 184, 18, 20, 10, 199, 44, 21, 1, 48, 84, 19, 36, 20, 10, 199, 9, 35, 205, 44, 19, 9,
-			20, 20, 0, 12, 137, 3, 8, 9, 11, 1, 14, 195, 184, 19, 20, 7, 196, 36, 130, 133, 48, 20, 9, 198, 72, 16, 129, 81, 65, 82,
-			20, 9, 198, 64, 84, 134, 61, 33, 82, 20, 9, 198, 60, 36, 197, 73, 97, 82, 20, 9, 198, 57, 83, 77, 21, 33, 82, 20, 9, 198,
-			44, 243, 77, 85, 65, 82, 20, 9, 198, 24, 16, 197, 81, 65, 82, 20, 9, 198, 16, 82, 25, 17, 33, 82, 20, 9, 198, 8, 19, 12,
-			61, 65, 82, 20, 9, 198, 5, 49, 129, 49, 65, 82, 20, 9, 198, 4, 67, 73, 81, 65, 82, 20, 15, 204, 80, 245, 1, 48, 149, 1,
-			72, 148, 212, 37, 50, 192, 20, 15, 204, 77, 80, 138, 20, 181, 9, 88, 148, 212, 37, 50, 192, 20, 15, 204, 77, 2, 82, 37, 69, 65,
-			48, 148, 212, 37, 50, 192, 20, 15, 204, 52, 84, 139, 4, 229, 9, 48, 148, 212, 37, 50, 192, 20, 15, 204, 37, 51, 204, 5, 66, 79,
-			56, 148, 212, 37, 50, 192, 20, 15, 204, 16, 80, 197, 57, 68, 129, 48, 148, 212, 37, 50, 192, 20, 15, 204, 5, 96, 78, 80, 112, 82,
-			16, 148, 212, 37, 50, 192, 20, 11, 200, 44, 243, 15, 24, 243, 137, 84, 208, 20, 11, 200, 44, 243, 12, 60, 181, 137, 84, 208, 20, 9,
-			198, 28, 198, 67, 21, 34, 78, 20, 0, 14, 69, 76, 128, 77, 65, 80, 91, 57, 35, 65, 71, 39, 0, 12, 201, 80, 16, 133, 48, 192,
-			82, 37, 50, 192, 20, 12, 201, 64, 243, 25, 80, 82, 206, 37, 50, 192, 20, 12, 201, 48, 81, 197, 56, 64, 82, 37, 50, 192, 20, 12,
-			201, 45, 81, 134, 21, 37, 6, 37, 50, 192, 20, 12, 201, 44, 19, 5, 56, 64, 82, 37, 50, 192, 20, 12, 201, 41, 81, 207, 76, 192,
-			86, 37, 50, 192, 20, 12, 201, 16, 81, 140, 5, 67, 210, 37, 50, 192, 20, 12, 201, 36, 229, 5, 72, 84, 211, 21, 33, 84, 20, 12,
-			201, 24, 147, 9, 64, 83, 147, 21, 33, 84, 20, 6, 195, 85, 96, 78, 21, 0, 5, 194, 8, 128, 17, 9, 198, 61, 1, 82, 37, 53,
-			0, 20, 9, 198, 37, 32, 78, 37, 53, 0, 20, 17, 142, 16, 18, 195, 166, 16, 15, 19, 9, 20, 9, 15, 14, 5, 12, 20, 9, 198,
-			44, 21, 5, 17, 32, 76, 20, 13, 4, 95, 20, 21, 18, 47, 6, 108, 12, 50, 72, 0, 0, 10, 199, 88, 82, 212, 61, 34, 69, 48,
-			20, 12, 201, 45, 35, 208, 77, 98, 83, 37, 65, 82, 20, 12, 201, 36, 229, 5, 73, 5, 78, 45, 65, 82, 20, 18, 207, 36, 229, 5,
-			72, 224, 84, 36, 243, 129, 48, 148, 212, 37, 50, 192, 20, 10, 199, 44, 243, 15, 24, 243, 137, 20, 20, 10, 199, 44, 243, 12, 60, 181,
-			137, 20, 20, 0, 14, 68, 5, 33, 207, 56, 6, 35, 34, 81, 114, 50, 0, 20, 13, 138, 16, 18, 195, 166, 19, 5, 18, 22, 5, 18,
-			20, 9, 198, 65, 35, 205, 61, 97, 82, 20, 9, 198, 21, 128, 197, 73, 1, 82, 20, 9, 198, 20, 180, 197, 45, 97, 82, 20, 9, 198,
-			12, 83, 147, 85, 33, 82, 20, 9, 198, 4, 48, 197, 65, 65, 82, 20, 11, 200, 44, 243, 147, 20, 181, 133, 57, 48, 20, 7, 196, 8,
-			242, 129, 56, 21, 0, 12, 201, 5, 37, 9, 48, 193, 82, 37, 53, 0, 20, 12, 201, 44, 243, 80, 48, 82, 211, 37, 65, 84, 20, 8,
-			197, 33, 145, 18, 36, 64, 20, 8, 197, 64, 244, 212, 36, 192, 20, 8, 67, 64, 18, 82, 21, 0, 10, 0, 13, 202, 77, 80, 138, 20,
-			181, 9, 88, 149, 5, 80, 20, 13, 202, 64, 84, 141, 37, 52, 201, 88, 149, 5, 80, 20, 13, 202, 32, 85, 5, 72, 241, 197, 56, 149,
-			5, 80, 20, 13, 202, 5, 69, 18, 4, 181, 9, 88, 149, 5, 80, 20, 15, 140, 16, 18, 195, 166, 4, 9, 19, 16, 15, 14, 5, 18,
-			20, 9, 198, 52, 244, 203, 61, 98, 84, 20, 9, 198, 36, 228, 212, 4, 228, 192, 20, 9, 198, 20, 193, 71, 4, 229, 0, 20, 17, 70,
-			16, 19, 147, 4, 229, 0, 72, 35, 50, 89, 6, 112, 50, 0, 20, 0, 10, 199, 65, 35, 203, 80, 243, 15, 28, 20, 10, 199, 16, 82,
-			210, 21, 65, 82, 20, 20, 10, 199, 4, 225, 201, 88, 83, 9, 28, 20, 6, 195, 60, 35, 204, 20, 9, 198, 72, 83, 69, 16, 149, 77,
-			20, 9, 198, 4, 181, 129, 72, 149, 77, 20, 10, 199, 16, 83, 79, 45, 32, 84, 36, 20, 10, 199, 80, 20, 148, 72, 22, 137, 56, 20,
-			12, 4, 95, 49, 49, 15, 109, 55, 83, 72, 108, 0, 0, 7, 196, 88, 83, 9, 56, 20, 14, 139, 16, 18, 195, 166, 6, 5, 18, 5,
-			14, 3, 5, 20, 0, 11, 67, 20, 113, 78, 35, 12, 57, 13, 50, 0, 12, 201, 60, 36, 212, 37, 0, 84, 36, 243, 128, 20, 12, 201,
-			36, 225, 9, 24, 97, 82, 20, 228, 192, 20, 0, 13, 202, 72, 85, 143, 49, 85, 9, 60, 225, 82, 20, 20, 13, 202, 36, 228, 212, 73,
-			83, 69, 57, 65, 82, 20, 20, 13, 202, 28, 83, 142, 20, 212, 203, 84, 83, 9, 28, 20, 12, 201, 72, 84, 208, 60, 228, 207, 72, 149,
-			77, 20, 9, 198, 76, 83, 148, 20, 228, 192, 20, 8, 66, 21, 32, 109, 34, 0, 72, 0, 10, 199, 76, 145, 206, 4, 193, 82, 20, 20,
-			10, 199, 72, 81, 143, 72, 209, 82, 20, 20, 10, 199, 44, 243, 134, 37, 50, 197, 72, 20, 10, 199, 20, 180, 212, 72, 18, 5, 72, 20,
-			10, 199, 24, 244, 147, 100, 227, 9, 28, 20, 9, 198, 4, 209, 137, 8, 149, 77, 20, 10, 199, 12, 19, 66, 60, 66, 129, 56, 20, 10,
-			199, 4, 36, 212, 36, 225, 78, 80, 20, 6, 195, 72, 80, 76, 20, 10, 199, 16, 147, 5, 81, 64, 78, 80, 20, 0, 9, 198, 76, 144,
-			137, 72, 145, 78, 20, 9, 198, 28, 83, 210, 28, 145, 78, 20, 11, 200, 25, 32, 78, 12, 148, 203, 4, 224, 20, 0, 10, 135, 22, 21,
-			12, 7, 195, 166, 18, 20, 8, 197, 21, 2, 84, 21, 64, 20, 8, 197, 64, 240, 200, 21, 32, 20, 15, 204, 20, 180, 208, 21, 34, 77,
-			20, 229, 1, 72, 149, 77, 20, 8, 197, 29, 32, 78, 37, 64, 20, 8, 197, 28, 19, 66, 37, 64, 20, 8, 197, 20, 210, 82, 5, 64,
-			20, 8, 197, 8, 20, 130, 5, 32, 20, 14, 69, 5, 81, 213, 77, 64, 113, 81, 113, 89, 72, 0, 41, 0, 13, 202, 16, 81, 137, 9,
-			34, 76, 48, 21, 15, 72, 20, 9, 198, 4, 50, 68, 61, 49, 64, 20, 9, 198, 24, 244, 141, 21, 33, 64, 20, 9, 198, 104, 20, 137,
-			76, 209, 64, 20, 9, 198, 88, 84, 137, 76, 209, 64, 20, 9, 198, 76, 130, 73, 76, 209, 64, 20, 13, 138, 11, 22, 195, 166, 18, 21,
-			12, 1, 14, 20, 20, 0, 10, 199, 80, 18, 212, 21, 34, 78, 28, 20, 10, 199, 77, 3, 204, 21, 34, 78, 28, 20, 10, 199, 76, 243,
-			132, 21, 34, 78, 28, 20, 10, 199, 52, 243, 148, 21, 34, 78, 28, 20, 10, 199, 8, 20, 132, 21, 34, 78, 28, 20, 10, 199, 65, 34,
-			78, 76, 84, 211, 20, 20, 12, 201, 76, 176, 78, 16, 147, 129, 88, 145, 78, 20, 10, 199, 4, 36, 212, 36, 225, 78, 76, 20, 0, 11,
-			200, 36, 212, 18, 36, 208, 84, 85, 32, 20, 11, 200, 77, 1, 67, 36, 19, 9, 77, 64, 20, 11, 200, 56, 85, 84, 72, 19, 9, 77,
-			64, 20, 11, 200, 56, 21, 21, 72, 19, 9, 77, 64, 20, 11, 200, 44, 243, 139, 72, 85, 9, 77, 64, 20, 11, 200, 4, 36, 207, 49,
-			85, 9, 77, 64, 20, 7, 196, 28, 83, 143, 52, 20, 11, 200, 52, 241, 5, 72, 226, 84, 21, 64, 20, 11, 200, 48, 147, 133, 5, 34,
-			84, 21, 64, 20, 11, 200, 44, 243, 77, 84, 226, 84, 21, 64, 20, 11, 200, 24, 84, 212, 37, 98, 84, 21, 64, 20, 11, 200, 36, 226,
-			207, 52, 211, 196, 21, 32, 20, 9, 198, 8, 19, 19, 4, 210, 78, 20, 9, 198, 88, 83, 133, 104, 144, 78, 20, 9, 198, 60, 65, 78,
-			76, 80, 78, 20, 11, 200, 81, 34, 85, 53, 98, 82, 5, 64, 20, 9, 198, 44, 195, 196, 72, 144, 78, 21, 13, 72, 76, 85, 20, 48,
-			83, 69, 57, 64, 21, 0, 10, 0, 8, 197, 80, 242, 76, 21, 64, 20, 8, 197, 60, 209, 76, 21, 64, 20, 8, 197, 36, 99, 204, 21,
-			64, 20, 8, 197, 64, 20, 9, 77, 64, 20, 8, 197, 8, 147, 9, 77, 64, 20, 8, 197, 80, 244, 148, 21, 32, 20, 8, 197, 60, 181,
-			76, 21, 32, 20, 8, 197, 44, 243, 148, 21, 32, 20, 8, 197, 44, 20, 148, 21, 32, 20, 8, 197, 53, 84, 214, 37, 64, 20, 12, 201,
-			76, 177, 80, 80, 144, 201, 76, 209, 64, 20, 12, 201, 52, 84, 211, 36, 19, 137, 76, 209, 64, 20, 12, 201, 4, 229, 1, 28, 243, 137,
-			76, 209, 64, 20, 8, 197, 45, 32, 86, 5, 64, 20, 8, 197, 17, 32, 86, 5, 64, 20, 6, 195, 48, 144, 78, 21, 0, 17, 66, 16,
-			80, 72, 6, 37, 15, 72, 36, 34, 0, 81, 100, 101, 114, 32, 17, 66, 16, 80, 72, 6, 37, 15, 107, 36, 34, 0, 81, 104, 101, 114,
-			32, 18, 66, 16, 80, 72, 37, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 13, 202, 25, 33, 75, 88, 83, 148, 21, 34, 78,
-			28, 20, 13, 202, 25, 32, 71, 52, 83, 148, 21, 34, 78, 28, 20, 13, 202, 4, 178, 210, 20, 66, 84, 21, 34, 78, 28, 20, 18, 143,
-			16, 1, 12, 195, 166, 19, 20, 9, 14, 5, 14, 19, 9, 19, 11, 20, 9, 198, 44, 243, 69, 16, 145, 64, 20, 9, 198, 28, 84, 129,
-			56, 145, 64, 20, 9, 198, 76, 147, 9, 12, 145, 64, 20, 9, 198, 28, 84, 129, 56, 145, 64, 20, 9, 198, 52, 19, 201, 76, 209, 64,
-			20, 9, 198, 45, 80, 137, 76, 209, 64, 20, 9, 198, 24, 20, 153, 56, 112, 76, 20, 9, 198, 52, 243, 148, 4, 113, 64, 20, 5, 194,
-			16, 80, 72, 0, 14, 203, 72, 84, 212, 72, 146, 212, 37, 98, 84, 21, 64, 20, 14, 203, 72, 17, 9, 60, 18, 212, 37, 98, 84, 21,
-			64, 20, 15, 140, 16, 195, 166, 4, 5, 18, 1, 19, 20, 9, 19, 11, 20, 12, 201, 77, 68, 133, 65, 67, 205, 100, 50, 78, 20, 10,
-			199, 44, 243, 15, 77, 67, 205, 36, 20, 10, 199, 80, 243, 5, 72, 19, 131, 20, 20, 6, 195, 32, 144, 84, 20, 6, 195, 4, 112, 84,
-			20, 0, 21, 68, 44, 244, 212, 20, 49, 39, 89, 72, 13, 15, 65, 109, 86, 0, 81, 109, 101, 100, 32, 19, 68, 88, 147, 12, 20, 84,
-			37, 55, 108, 15, 89, 114, 0, 81, 115, 195, 165, 32, 11, 200, 4, 116, 137, 45, 83, 20, 85, 32, 20, 11, 200, 72, 82, 77, 64, 244,
-			148, 21, 32, 20, 11, 200, 61, 35, 129, 52, 83, 148, 21, 32, 20, 11, 200, 44, 243, 134, 72, 243, 148, 21, 32, 20, 11, 200, 36, 229,
-			5, 73, 3, 204, 21, 32, 20, 11, 200, 36, 225, 11, 88, 20, 148, 21, 32, 20, 11, 200, 72, 84, 208, 60, 225, 5, 57, 64, 20, 11,
-			200, 44, 243, 147, 20, 181, 133, 57, 64, 20, 11, 200, 16, 83, 9, 56, 181, 133, 57, 64, 20, 11, 200, 37, 36, 133, 48, 85, 129, 57,
-			64, 20, 0, 12, 201, 88, 146, 193, 72, 145, 82, 36, 225, 192, 20, 12, 201, 81, 83, 142, 20, 193, 82, 36, 225, 192, 20, 12, 201, 80,
-			16, 149, 37, 49, 82, 36, 225, 192, 20, 12, 201, 77, 148, 212, 20, 209, 82, 36, 225, 192, 20, 12, 201, 77, 83, 6, 60, 225, 82, 36,
-			225, 192, 20, 12, 201, 77, 66, 77, 84, 193, 82, 36, 225, 192, 20, 12, 201, 76, 81, 210, 20, 113, 82, 36, 225, 192, 20, 12, 201, 72,
-			85, 21, 72, 225, 82, 36, 225, 192, 20, 12, 201, 64, 245, 5, 57, 49, 82, 36, 225, 192, 20, 12, 201, 64, 241, 19, 60, 193, 82, 36,
-			225, 192, 20, 12, 201, 56, 81, 204, 36, 113, 82, 36, 225, 192, 20, 12, 201, 48, 144, 197, 57, 49, 82, 36, 225, 192, 20, 12, 201, 45,
-			84, 148, 37, 49, 82, 36, 225, 192, 20, 12, 201, 45, 33, 78, 20, 193, 82, 36, 225, 192, 20, 12, 201, 44, 244, 146, 84, 113, 82, 36,
-			225, 192, 20, 12, 201, 41, 81, 1, 37, 49, 82, 36, 225, 192, 20, 12, 201, 36, 226, 204, 84, 65, 82, 36, 225, 192, 20, 12, 201, 36,
-			226, 193, 77, 49, 82, 36, 225, 192, 20, 12, 201, 36, 225, 5, 45, 49, 82, 36, 225, 192, 20, 12, 201, 25, 84, 201, 60, 225, 82, 36,
-			225, 192, 20, 12, 201, 24, 197, 75, 81, 81, 82, 36, 225, 192, 20, 12, 201, 8, 19, 132, 4, 113, 82, 36, 225, 192, 20, 12, 201, 5,
-			67, 205, 37, 49, 82, 36, 225, 192, 20, 12, 201, 5, 34, 193, 37, 49, 82, 36, 225, 192, 20, 12, 201, 4, 227, 143, 56, 49, 82, 36,
-			225, 192, 20, 12, 201, 4, 178, 207, 72, 65, 82, 36, 225, 192, 20, 8, 197, 20, 212, 9, 72, 144, 20, 11, 136, 195, 184, 11, 21, 13,
-			5, 14, 9, 20, 12, 201, 44, 21, 15, 48, 144, 201, 76, 209, 64, 20, 12, 201, 76, 145, 206, 36, 98, 75, 4, 229, 0, 20, 0, 14,
-			139, 195, 166, 18, 5, 6, 18, 25, 7, 20, 9, 7, 20, 9, 198, 65, 54, 75, 37, 50, 192, 20, 9, 198, 4, 84, 143, 48, 149, 0,
-			20, 13, 202, 20, 180, 212, 72, 21, 129, 28, 19, 131, 20, 20, 9, 198, 16, 21, 1, 52, 21, 0, 20, 0, 18, 67, 16, 85, 0, 72,
-			6, 36, 15, 72, 36, 34, 0, 81, 100, 101, 114, 32, 18, 67, 16, 85, 0, 72, 6, 36, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32,
-			25, 67, 16, 85, 0, 72, 36, 15, 49, 84, 112, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 10, 199, 20, 180, 197,
-			45, 85, 15, 72, 20, 10, 199, 20, 229, 15, 52, 243, 15, 28, 20, 9, 198, 52, 84, 139, 60, 227, 205, 20, 15, 140, 15, 13, 19, 20,
-			195, 166, 14, 4, 5, 12, 9, 7, 20, 9, 198, 88, 149, 129, 72, 149, 77, 20, 9, 67, 16, 85, 0, 72, 36, 0, 72, 0, 10, 135,
-			12, 195, 184, 10, 2, 15, 13, 20, 15, 204, 72, 21, 9, 60, 224, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 65, 35, 204, 21, 64,
-			82, 37, 49, 82, 36, 225, 192, 20, 15, 204, 65, 34, 77, 37, 66, 86, 37, 49, 82, 36, 225, 192, 20, 15, 204, 64, 84, 147, 60, 224,
-			76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 64, 20, 129, 48, 193, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 60, 34, 133, 45, 66,
-			86, 37, 49, 82, 36, 225, 192, 20, 15, 204, 56, 21, 9, 60, 224, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 52, 20, 135, 36, 224,
-			76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 45, 34, 77, 36, 224, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 44, 243, 77, 84, 224,
-			76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 44, 20, 129, 45, 65, 82, 37, 49, 82, 36, 225, 192, 20, 15, 204, 44, 19, 142, 36, 32,
-			76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 36, 229, 5, 72, 224, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 24, 19, 73, 48, 144,
-			82, 37, 49, 82, 36, 225, 192, 20, 15, 204, 20, 193, 75, 81, 34, 70, 36, 49, 82, 36, 225, 192, 20, 15, 204, 20, 97, 133, 45, 66,
-			86, 37, 49, 82, 36, 225, 192, 20, 15, 204, 16, 149, 133, 73, 50, 70, 36, 49, 82, 36, 225, 192, 20, 15, 204, 16, 145, 134, 21, 33,
-			78, 80, 145, 82, 36, 225, 192, 20, 15, 204, 12, 243, 80, 85, 65, 82, 37, 49, 82, 36, 225, 192, 20, 15, 204, 4, 209, 82, 36, 176,
-			78, 37, 49, 82, 36, 225, 192, 20, 7, 196, 72, 17, 5, 72, 20, 11, 200, 45, 35, 206, 60, 209, 84, 72, 144, 20, 11, 200, 5, 81,
-			9, 60, 209, 84, 72, 144, 20, 11, 200, 36, 195, 21, 76, 244, 137, 76, 176, 20, 11, 200, 21, 128, 197, 57, 68, 137, 76, 176, 20, 11,
-			200, 4, 195, 21, 76, 244, 137, 76, 176, 20, 11, 200, 56, 82, 210, 60, 208, 78, 80, 144, 20, 7, 196, 37, 35, 206, 36, 20, 11, 200,
-			8, 144, 140, 36, 243, 65, 56, 144, 20, 15, 204, 44, 243, 147, 81, 37, 75, 80, 149, 137, 76, 209, 64, 20, 9, 198, 52, 19, 132, 72,
-			147, 0, 20, 14, 4, 95, 4, 16, 20, 10, 49, 4, 114, 65, 110, 12, 0, 0, 10, 135, 16, 1, 18, 12, 195, 184, 18, 20, 12, 201,
-			52, 146, 210, 60, 225, 83, 37, 50, 192, 20, 8, 197, 64, 245, 1, 28, 80, 20, 0, 29, 4, 7, 195, 184, 18, 81, 4, 118, 34, 15,
-			89, 35, 57, 15, 47, 6, 36, 55, 0, 82, 115, 105, 103, 32, 116, 105, 108, 32, 17, 66, 17, 80, 72, 40, 15, 107, 110, 12, 0, 81,
-			104, 97, 118, 101, 32, 10, 135, 6, 9, 2, 18, 195, 184, 19, 20, 11, 136, 19, 15, 9, 7, 14, 195, 184, 18, 20, 9, 198, 44, 20,
-			129, 52, 35, 204, 20, 9, 198, 76, 19, 65, 72, 149, 0, 20, 9, 198, 32, 16, 137, 80, 21, 0, 20, 8, 66, 17, 80, 72, 40, 0,
-			72, 0, 11, 136, 19, 11, 1, 2, 18, 195, 184, 19, 20, 11, 136, 7, 18, 1, 3, 9, 195, 184, 19, 20, 10, 199, 36, 227, 143, 88,
-			21, 15, 72, 20, 18, 207, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 49, 82, 36, 225, 192, 20, 10, 199, 72, 84, 212, 37, 69, 69,
-			72, 20, 10, 199, 72, 81, 140, 20, 181, 5, 72, 20, 10, 199, 65, 35, 199, 72, 81, 5, 72, 20, 10, 199, 44, 243, 147, 80, 21, 5,
-			72, 20, 15, 140, 6, 15, 18, 20, 18, 195, 166, 4, 5, 12, 9, 7, 20, 11, 136, 19, 6, 195, 166, 18, 9, 19, 11, 20, 10, 199,
-			4, 68, 133, 56, 19, 9, 56, 20, 6, 195, 4, 114, 76, 20, 10, 199, 8, 19, 12, 37, 53, 9, 44, 20, 6, 195, 32, 19, 64, 72,
-			0, 13, 138, 14, 1, 22, 9, 7, 1, 20, 195, 184, 18, 20, 7, 196, 52, 147, 149, 80, 20, 11, 200, 8, 241, 211, 80, 21, 133, 72,
-			80, 20, 11, 200, 77, 147, 77, 21, 68, 137, 76, 176, 20, 11, 200, 8, 147, 205, 21, 68, 137, 76, 176, 20, 11, 200, 44, 243, 147, 61,
-			37, 9, 84, 208, 20, 11, 200, 56, 85, 82, 5, 53, 5, 56, 144, 20, 9, 198, 32, 243, 79, 24, 147, 0, 20, 0, 9, 134, 19, 5,
-			18, 195, 184, 19, 20, 10, 135, 11, 15, 18, 19, 195, 184, 18, 20, 10, 135, 11, 12, 1, 11, 195, 184, 18, 20, 8, 197, 32, 83, 132,
-			21, 48, 76, 0, 9, 198, 4, 36, 207, 49, 85, 0, 20, 9, 198, 24, 195, 210, 37, 53, 0, 20, 9, 198, 76, 22, 15, 24, 243, 128,
-			20, 9, 198, 65, 35, 199, 72, 19, 64, 20, 9, 198, 56, 147, 194, 37, 83, 64, 20, 9, 198, 52, 20, 139, 21, 33, 84, 20, 0, 22,
-			9, 6, 195, 184, 12, 10, 5, 20, 15, 14, 83, 118, 55, 57, 36, 47, 6, 114, 50, 0, 20, 10, 199, 24, 147, 129, 57, 50, 69, 48,
-			20, 14, 203, 80, 84, 212, 4, 209, 78, 80, 20, 137, 76, 176, 20, 14, 203, 64, 20, 140, 4, 209, 78, 80, 20, 137, 76, 176, 20, 10,
-			199, 8, 83, 133, 24, 144, 201, 20, 20, 10, 199, 21, 81, 133, 52, 148, 205, 20, 20, 10, 199, 64, 84, 212, 36, 193, 78, 76, 20, 10,
-			199, 36, 212, 12, 4, 229, 1, 80, 20, 12, 201, 44, 21, 1, 77, 68, 143, 24, 19, 0, 20, 6, 195, 20, 112, 76, 20, 12, 4, 95,
-			49, 48, 15, 47, 37, 13, 50, 108, 0, 0, 7, 196, 76, 19, 21, 80, 20, 9, 198, 60, 36, 212, 73, 81, 82, 20, 9, 198, 36, 228,
-			213, 49, 65, 82, 20, 9, 198, 36, 228, 212, 73, 81, 82, 20, 9, 198, 36, 225, 143, 72, 209, 82, 20, 9, 198, 36, 225, 12, 21, 97,
-			82, 20, 9, 198, 5, 32, 137, 81, 33, 82, 20, 12, 137, 11, 9, 13, 195, 166, 18, 9, 19, 11, 20, 11, 200, 44, 83, 143, 80, 17,
-			137, 84, 208, 20, 7, 196, 36, 229, 73, 80, 20, 9, 198, 12, 20, 132, 36, 112, 78, 21, 0, 9, 198, 52, 85, 18, 60, 195, 199, 20,
-			12, 201, 16, 243, 79, 72, 112, 78, 37, 53, 0, 20, 12, 201, 5, 69, 18, 36, 37, 84, 36, 243, 128, 20, 17, 142, 19, 20, 18, 1,
-			20, 15, 19, 6, 195, 166, 18, 9, 19, 11, 20, 8, 197, 64, 245, 5, 57, 48, 20, 0, 21, 66, 4, 192, 35, 55, 15, 49, 6, 35,
-			57, 72, 35, 0, 81, 113, 97, 101, 100, 97, 32, 14, 139, 7, 1, 14, 7, 18, 195, 166, 14, 195, 184, 19, 20, 9, 198, 28, 19, 66,
-			37, 53, 0, 20, 9, 198, 52, 83, 1, 56, 243, 64, 20, 12, 137, 22, 18, 195, 184, 22, 12, 5, 18, 9, 20, 14, 139, 13, 9, 12,
-			9, 20, 195, 166, 18, 9, 19, 11, 20, 9, 198, 24, 84, 141, 20, 229, 0, 20, 9, 198, 52, 19, 137, 21, 33, 84, 20, 9, 198, 52,
-			20, 139, 4, 229, 0, 20, 0, 10, 199, 88, 149, 1, 48, 149, 5, 80, 20, 10, 199, 80, 245, 1, 48, 149, 5, 80, 20, 10, 199, 76,
-			243, 9, 16, 149, 5, 80, 20, 10, 199, 76, 83, 137, 48, 149, 5, 80, 20, 10, 199, 72, 149, 129, 48, 149, 5, 80, 20, 10, 199, 72,
-			145, 201, 16, 149, 5, 80, 20, 10, 199, 72, 20, 9, 16, 149, 5, 80, 20, 10, 199, 56, 240, 137, 48, 149, 5, 80, 20, 10, 199, 56,
-			21, 1, 48, 149, 5, 80, 20, 10, 199, 56, 20, 193, 48, 149, 5, 80, 20, 10, 199, 52, 241, 1, 48, 149, 5, 80, 20, 10, 199, 52,
-			240, 137, 48, 149, 5, 80, 20, 10, 199, 48, 242, 193, 48, 149, 5, 80, 20, 10, 199, 48, 81, 193, 48, 149, 5, 80, 20, 10, 199, 36,
-			211, 85, 56, 149, 5, 80, 20, 10, 199, 36, 65, 65, 48, 149, 5, 80, 20, 10, 199, 24, 145, 5, 48, 149, 5, 80, 20, 10, 199, 24,
-			21, 1, 48, 149, 5, 80, 20, 10, 199, 24, 16, 201, 48, 149, 5, 80, 20, 10, 199, 16, 80, 137, 48, 149, 5, 80, 20, 10, 199, 76,
-			82, 212, 61, 34, 69, 48, 20, 10, 199, 21, 52, 197, 57, 66, 69, 48, 20, 10, 199, 8, 18, 212, 21, 34, 69, 48, 20, 12, 201, 80,
-			82, 206, 60, 195, 199, 37, 49, 82, 20, 12, 201, 44, 243, 80, 72, 243, 73, 81, 65, 82, 20, 13, 138, 19, 11, 18, 195, 166, 4, 4,
-			5, 18, 9, 20, 15, 140, 1, 20, 13, 15, 19, 6, 195, 166, 18, 9, 19, 11, 20, 10, 199, 44, 243, 135, 20, 226, 65, 48, 20, 0,
-			9, 198, 72, 80, 197, 65, 69, 82, 20, 7, 196, 16, 243, 143, 72, 20, 9, 198, 44, 242, 203, 21, 33, 82, 20, 9, 198, 24, 147, 135,
-			21, 33, 82, 20, 9, 198, 16, 81, 140, 61, 33, 82, 20, 14, 139, 15, 16, 20, 18, 195, 166, 11, 11, 5, 18, 9, 20, 16, 141, 11,
-			22, 195, 166, 18, 21, 12, 1, 14, 20, 9, 19, 11, 20, 16, 141, 1, 13, 1, 20, 195, 184, 18, 9, 19, 20, 9, 19, 11, 20, 7,
-			196, 45, 33, 84, 36, 20, 7, 196, 44, 19, 137, 56, 20, 11, 136, 13, 195, 166, 3, 5, 14, 1, 20, 20, 9, 198, 56, 20, 139, 60,
-			208, 78, 21, 9, 3, 95, 35, 57, 47, 35, 71, 0, 12, 4, 95, 20, 12, 4, 47, 37, 55, 72, 13, 0, 0, 12, 201, 61, 5, 15,
-			52, 85, 18, 37, 53, 0, 20, 12, 201, 32, 148, 212, 61, 34, 67, 37, 65, 84, 20, 12, 201, 20, 193, 75, 81, 34, 67, 37, 65, 84,
-			20, 12, 201, 5, 85, 5, 57, 66, 67, 37, 65, 84, 20, 11, 136, 20, 195, 184, 18, 18, 5, 18, 9, 20, 8, 197, 52, 243, 135, 60,
-			192, 20, 8, 197, 104, 80, 200, 36, 224, 20, 0, 13, 202, 77, 2, 82, 37, 69, 65, 48, 149, 5, 80, 20, 13, 202, 65, 49, 85, 16,
-			243, 153, 52, 149, 5, 80, 20, 13, 202, 44, 243, 135, 20, 226, 65, 48, 149, 5, 80, 20, 13, 202, 36, 195, 5, 28, 149, 9, 52, 149,
-			5, 80, 20, 13, 202, 24, 193, 75, 76, 144, 137, 48, 149, 5, 80, 20, 9, 198, 72, 81, 213, 48, 84, 128, 20, 9, 198, 21, 53, 9,
-			52, 84, 128, 20, 12, 137, 19, 11, 195, 166, 12, 13, 5, 18, 9, 20, 15, 140, 195, 165, 12, 2, 15, 18, 7, 5, 14, 19, 5, 18,
-			20, 15, 140, 6, 195, 165, 2, 15, 18, 7, 5, 14, 19, 5, 18, 20, 9, 198, 76, 82, 214, 20, 228, 192, 20, 9, 198, 72, 84, 212,
-			4, 229, 0, 20, 0, 12, 201, 81, 32, 78, 76, 98, 71, 85, 33, 82, 20, 10, 199, 72, 21, 9, 60, 225, 82, 20, 20, 10, 199, 64,
-			19, 12, 21, 65, 82, 20, 20, 10, 199, 45, 83, 13, 36, 225, 82, 20, 20, 10, 199, 24, 244, 198, 5, 65, 82, 20, 20, 10, 199, 4,
-			181, 9, 60, 225, 82, 20, 20, 9, 198, 48, 147, 143, 48, 85, 77, 20, 9, 198, 76, 147, 9, 12, 149, 77, 20, 10, 199, 32, 82, 212,
-			60, 116, 129, 24, 20, 0, 23, 72, 4, 180, 143, 77, 66, 75, 60, 224, 35, 49, 34, 114, 89, 72, 37, 49, 6, 114, 50, 0, 20, 9,
-			198, 64, 21, 137, 48, 195, 206, 20, 9, 198, 52, 81, 1, 48, 163, 206, 20, 11, 200, 20, 180, 208, 4, 228, 201, 60, 224, 20, 11, 200,
-			16, 84, 18, 21, 52, 201, 60, 224, 20, 12, 201, 88, 84, 147, 36, 243, 133, 72, 147, 135, 20, 11, 200, 76, 145, 82, 72, 19, 5, 60,
-			224, 20, 0, 8, 197, 88, 83, 148, 36, 192, 20, 8, 197, 28, 83, 148, 36, 192, 20, 12, 201, 88, 144, 143, 72, 113, 78, 76, 84, 128,
-			20, 8, 197, 76, 195, 214, 20, 224, 20, 12, 201, 77, 80, 147, 45, 34, 66, 20, 229, 0, 20, 12, 201, 44, 243, 148, 72, 243, 12, 4,
-			229, 0, 20, 8, 197, 64, 20, 211, 4, 32, 20, 0, 23, 66, 21, 64, 36, 72, 15, 83, 6, 114, 34, 89, 116, 50, 0, 81, 102, 111,
-			114, 115, 121, 110, 32, 17, 66, 21, 64, 36, 72, 15, 107, 6, 112, 40, 0, 81, 104, 97, 118, 32, 17, 66, 21, 64, 36, 72, 15, 6,
-			83, 39, 34, 0, 81, 102, 111, 114, 32, 16, 66, 21, 64, 36, 72, 15, 107, 112, 40, 0, 81, 104, 97, 118, 32, 24, 66, 21, 64, 36,
-			47, 15, 49, 84, 112, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 13, 202, 76, 83, 22, 24, 147, 129, 57, 50, 69,
-			72, 20, 9, 198, 60, 213, 18, 20, 229, 0, 20, 9, 198, 44, 243, 132, 20, 228, 192, 20, 11, 70, 76, 178, 78, 32, 80, 68, 21, 0,
-			10, 8, 66, 21, 64, 36, 47, 0, 72, 0, 12, 137, 6, 1, 13, 9, 12, 9, 195, 166, 18, 20, 10, 199, 60, 33, 21, 45, 66, 79,
-			56, 20, 10, 199, 36, 225, 21, 45, 66, 79, 56, 20, 10, 199, 72, 82, 204, 4, 209, 82, 20, 20, 10, 199, 12, 128, 77, 9, 34, 69,
-			72, 20, 10, 199, 4, 227, 143, 56, 49, 82, 20, 20, 9, 198, 64, 243, 25, 28, 19, 73, 20, 10, 199, 21, 128, 197, 57, 68, 137, 44,
-			20, 10, 199, 32, 84, 140, 61, 98, 65, 56, 20, 10, 199, 44, 244, 144, 84, 193, 78, 80, 20, 0, 13, 138, 19, 21, 2, 19, 9, 4,
-			9, 195, 166, 18, 20, 9, 134, 2, 5, 7, 195, 166, 18, 20, 11, 200, 72, 81, 210, 21, 52, 201, 60, 224, 20, 11, 200, 60, 178, 193,
-			76, 147, 206, 20, 192, 20, 11, 200, 25, 83, 139, 80, 147, 206, 20, 192, 20, 7, 196, 24, 83, 143, 48, 20, 12, 137, 6, 195, 184, 14,
-			9, 11, 9, 19, 11, 20, 0, 10, 135, 16, 18, 5, 11, 195, 166, 18, 20, 8, 197, 52, 19, 201, 77, 64, 20, 8, 197, 45, 33, 77,
-			21, 32, 20, 8, 197, 65, 35, 198, 37, 64, 20, 8, 197, 52, 17, 206, 5, 64, 20, 8, 197, 24, 244, 198, 5, 64, 20, 8, 197, 88,
-			243, 1, 57, 64, 20, 12, 201, 64, 20, 148, 36, 50, 80, 4, 229, 0, 20, 8, 197, 45, 83, 1, 57, 64, 20, 0, 13, 202, 44, 243,
-			147, 80, 84, 142, 5, 66, 79, 56, 20, 13, 202, 36, 226, 207, 73, 3, 210, 5, 66, 79, 56, 20, 9, 198, 4, 209, 137, 8, 145, 64,
-			20, 8, 133, 195, 165, 18, 20, 9, 20, 9, 198, 81, 84, 137, 76, 209, 64, 20, 9, 198, 80, 19, 201, 76, 209, 64, 20, 9, 198, 72,
-			16, 201, 76, 209, 64, 20, 9, 198, 65, 84, 137, 76, 209, 64, 20, 9, 198, 56, 22, 137, 76, 209, 64, 20, 9, 198, 49, 148, 137, 76,
-			209, 64, 20, 9, 198, 20, 115, 201, 76, 209, 64, 20, 13, 202, 48, 145, 67, 33, 65, 78, 77, 65, 73, 56, 20, 9, 198, 80, 243, 142,
-			4, 113, 64, 20, 9, 198, 12, 245, 82, 4, 113, 64, 20, 0, 10, 135, 6, 195, 166, 18, 9, 19, 20, 20, 10, 199, 81, 84, 142, 21,
-			34, 78, 28, 20, 10, 199, 80, 18, 211, 21, 34, 78, 28, 20, 10, 199, 64, 192, 78, 21, 34, 78, 28, 20, 10, 199, 48, 19, 131, 21,
-			34, 78, 28, 20, 10, 199, 28, 20, 142, 21, 34, 78, 28, 20, 10, 199, 24, 146, 211, 21, 34, 78, 28, 20, 10, 199, 8, 20, 130, 21,
-			34, 78, 28, 20, 13, 4, 95, 49, 50, 15, 47, 114, 55, 83, 72, 108, 0, 0, 11, 200, 64, 243, 25, 32, 148, 212, 61, 32, 20, 13,
-			138, 11, 15, 13, 13, 9, 19, 19, 195, 166, 18, 20, 11, 200, 65, 81, 82, 36, 194, 84, 21, 64, 20, 11, 200, 65, 80, 140, 36, 50,
-			84, 21, 64, 20, 11, 200, 64, 21, 5, 72, 226, 84, 21, 64, 20, 11, 200, 44, 21, 83, 4, 194, 84, 21, 64, 20, 11, 200, 25, 37,
-			71, 4, 194, 84, 21, 64, 20, 11, 200, 25, 34, 86, 60, 194, 84, 21, 64, 20, 11, 200, 25, 32, 71, 36, 194, 84, 21, 64, 20, 11,
-			200, 4, 226, 77, 61, 50, 84, 21, 64, 20, 11, 200, 4, 208, 137, 29, 82, 84, 21, 64, 20, 9, 198, 8, 20, 148, 32, 144, 78, 20,
-			9, 198, 4, 100, 137, 44, 16, 78, 20, 9, 198, 4, 100, 137, 44, 16, 78, 20, 11, 200, 20, 180, 203, 72, 83, 69, 57, 64, 20, 11,
-			200, 5, 34, 83, 80, 242, 210, 5, 64, 20, 0, 8, 197, 80, 21, 140, 21, 64, 20, 8, 197, 76, 242, 204, 21, 64, 20, 11, 136, 12,
-			195, 166, 11, 11, 5, 18, 9, 20, 11, 136, 8, 195, 184, 14, 19, 5, 18, 9, 20, 13, 138, 7, 5, 15, 4, 195, 166, 20, 9, 19,
-			11, 20, 13, 138, 5, 21, 18, 15, 16, 195, 166, 9, 19, 11, 20, 8, 197, 76, 241, 134, 37, 64, 20, 12, 201, 28, 227, 211, 80, 144,
-			201, 76, 209, 64, 20, 12, 201, 9, 32, 72, 52, 19, 137, 76, 209, 64, 20, 8, 197, 64, 245, 5, 57, 64, 20, 8, 197, 64, 84, 211,
-			5, 32, 20, 0, 13, 202, 88, 84, 130, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 81, 148, 129, 56, 226, 83, 21, 34, 78, 28, 20,
-			13, 202, 77, 65, 82, 36, 194, 83, 21, 34, 78, 28, 20, 13, 202, 77, 64, 66, 36, 194, 83, 21, 34, 78, 28, 20, 13, 202, 76, 145,
-			206, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 52, 85, 1, 48, 194, 83, 21, 34, 78, 28, 20, 13, 202, 52, 20, 203, 36, 226, 83,
-			21, 34, 78, 28, 20, 13, 202, 32, 20, 141, 60, 226, 83, 21, 34, 78, 28, 20, 13, 202, 28, 84, 141, 4, 226, 83, 21, 34, 78, 28,
-			20, 13, 202, 28, 19, 22, 4, 226, 83, 21, 34, 78, 28, 20, 13, 202, 16, 149, 137, 76, 147, 206, 21, 34, 78, 28, 20, 13, 202, 8,
-			19, 11, 4, 226, 83, 21, 34, 78, 28, 20, 13, 202, 4, 32, 78, 16, 243, 142, 21, 34, 78, 28, 20, 12, 201, 81, 34, 71, 60, 227,
-			205, 21, 68, 137, 20, 14, 139, 16, 20, 15, 12, 5, 13, 195, 166, 9, 19, 11, 20, 9, 198, 24, 19, 73, 48, 145, 64, 20, 9, 198,
-			20, 225, 9, 88, 145, 64, 20, 9, 198, 88, 149, 129, 72, 145, 64, 20, 9, 198, 72, 83, 69, 16, 145, 64, 20, 9, 198, 4, 181, 129,
-			72, 145, 64, 20, 9, 198, 45, 147, 137, 76, 209, 64, 20, 9, 198, 60, 97, 137, 12, 144, 76, 20, 9, 198, 4, 195, 21, 88, 144, 76,
-			20, 17, 70, 8, 243, 132, 4, 113, 64, 71, 6, 114, 50, 72, 37, 75, 0, 20, 9, 198, 8, 19, 132, 4, 113, 64, 20, 11, 70, 8,
-			243, 132, 4, 113, 64, 21, 0, 10, 0, 14, 203, 44, 243, 147, 81, 37, 75, 80, 149, 137, 77, 64, 20, 14, 203, 64, 20, 129, 16, 242,
-			211, 4, 194, 84, 21, 64, 20, 15, 140, 8, 5, 13, 9, 19, 6, 195, 166, 18, 9, 19, 11, 20, 10, 199, 44, 243, 134, 49, 81, 78,
-			76, 20, 10, 199, 4, 208, 149, 48, 19, 131, 20, 20, 0, 7, 196, 76, 243, 143, 72, 20, 11, 200, 97, 147, 15, 24, 243, 137, 77, 64,
-			20, 11, 200, 88, 84, 147, 36, 243, 137, 77, 64, 20, 11, 200, 44, 195, 203, 44, 83, 137, 77, 64, 20, 16, 141, 11, 1, 13, 195, 166,
-			12, 5, 15, 14, 20, 9, 19, 11, 20, 9, 198, 32, 21, 193, 36, 144, 78, 20, 7, 196, 61, 51, 65, 56, 21, 7, 196, 8, 242, 129,
-			72, 20, 0, 12, 137, 6, 12, 195, 184, 10, 20, 9, 19, 20, 20, 16, 205, 84, 66, 210, 101, 53, 1, 48, 194, 83, 21, 34, 78, 28,
-			20, 12, 201, 73, 80, 146, 36, 49, 82, 36, 225, 192, 20, 16, 205, 36, 225, 21, 77, 68, 137, 4, 194, 83, 21, 34, 78, 28, 20, 12,
-			201, 24, 84, 142, 37, 49, 82, 36, 225, 192, 20, 16, 205, 16, 149, 137, 76, 147, 206, 4, 194, 83, 21, 34, 78, 28, 20, 11, 136, 19,
-			20, 195, 184, 2, 5, 18, 9, 20, 13, 138, 15, 16, 12, 195, 184, 19, 5, 12, 9, 7, 20, 13, 138, 7, 5, 12, 195, 169, 1, 7,
-			20, 9, 7, 20, 17, 142, 9, 14, 4, 15, 5, 21, 18, 15, 16, 195, 166, 9, 19, 11, 20, 12, 201, 72, 84, 208, 60, 228, 207, 72,
-			145, 64, 20, 12, 201, 48, 19, 65, 72, 50, 201, 76, 209, 64, 20, 12, 201, 12, 128, 85, 88, 147, 137, 76, 209, 64, 20, 12, 201, 44,
-			20, 129, 52, 35, 204, 4, 113, 64, 20, 10, 69, 72, 83, 65, 44, 80, 21, 0, 10, 0, 9, 198, 48, 85, 1, 72, 114, 64, 20, 14,
-			139, 9, 14, 4, 12, 195, 184, 19, 5, 12, 9, 7, 20, 9, 198, 4, 225, 18, 60, 145, 0, 20, 13, 202, 64, 20, 148, 20, 227, 199,
-			20, 225, 83, 20, 20, 13, 202, 25, 33, 68, 21, 34, 75, 76, 128, 86, 56, 20, 8, 198, 4, 35, 210, 36, 114, 64, 0, 10, 199, 24,
-			147, 129, 57, 50, 69, 72, 20, 10, 199, 24, 147, 15, 76, 241, 133, 72, 20, 10, 199, 61, 33, 7, 100, 65, 82, 36, 20, 10, 199, 45,
-			83, 147, 80, 193, 82, 36, 20, 10, 199, 44, 242, 197, 81, 65, 82, 36, 20, 10, 199, 44, 194, 77, 65, 33, 82, 36, 20, 10, 199, 41,
-			84, 137, 77, 65, 82, 36, 20, 13, 138, 7, 5, 14, 4, 195, 184, 2, 5, 18, 9, 20, 10, 199, 16, 21, 1, 52, 21, 9, 44, 20,
-			10, 199, 72, 81, 197, 57, 50, 65, 56, 20, 10, 199, 24, 195, 210, 20, 229, 9, 56, 20, 10, 199, 44, 243, 132, 20, 211, 129, 8, 20,
-			0, 11, 200, 17, 32, 77, 5, 69, 82, 28, 144, 20, 11, 200, 76, 147, 85, 48, 84, 137, 56, 112, 20, 15, 204, 64, 84, 147, 60, 226,
-			70, 36, 49, 82, 36, 225, 192, 20, 15, 204, 52, 20, 203, 84, 194, 78, 37, 49, 82, 36, 225, 192, 20, 16, 141, 12, 5, 20, 15, 16,
-			12, 195, 184, 19, 5, 12, 9, 7, 20, 9, 198, 64, 20, 129, 8, 243, 0, 20, 11, 200, 77, 81, 1, 56, 84, 201, 76, 176, 20, 11,
-			200, 52, 147, 137, 77, 65, 82, 36, 80, 20, 15, 204, 20, 180, 208, 21, 34, 77, 20, 229, 1, 72, 145, 64, 20, 7, 196, 81, 82, 193,
-			56, 21, 9, 198, 64, 19, 1, 80, 19, 0, 20, 0, 8, 197, 8, 84, 204, 60, 112, 20, 15, 69, 8, 83, 9, 104, 80, 71, 36, 55,
-			37, 12, 89, 0, 66, 17, 142, 20, 9, 12, 19, 20, 18, 195, 166, 11, 11, 5, 12, 9, 7, 20, 13, 138, 20, 9, 12, 6, 195, 166,
-			12, 4, 9, 7, 20, 12, 201, 44, 243, 77, 37, 69, 5, 72, 85, 0, 20, 0, 5, 194, 21, 80, 17, 18, 70, 8, 80, 200, 4, 209,
-			76, 71, 36, 91, 35, 65, 6, 36, 12, 60, 0, 9, 198, 80, 16, 140, 60, 145, 0, 20, 9, 198, 64, 243, 25, 4, 210, 68, 20, 18,
-			70, 61, 34, 71, 4, 210, 64, 39, 34, 36, 81, 6, 35, 65, 37, 0, 20, 9, 198, 77, 80, 140, 36, 208, 84, 20, 0, 14, 203, 4,
-			195, 5, 28, 244, 137, 76, 84, 137, 56, 112, 20, 12, 201, 52, 147, 137, 77, 65, 82, 36, 83, 0, 20, 10, 199, 4, 99, 65, 72, 50,
-			5, 72, 20, 19, 144, 19, 1, 13, 13, 5, 14, 20, 18, 195, 166, 11, 11, 5, 12, 9, 7, 20, 15, 140, 14, 195, 184, 4, 20, 195,
-			184, 18, 6, 20, 9, 7, 20, 14, 203, 72, 81, 204, 20, 209, 78, 80, 20, 137, 76, 176, 20, 10, 199, 52, 19, 5, 72, 147, 132, 20,
-			20, 10, 199, 8, 243, 19, 40, 85, 137, 44, 20, 0, 9, 198, 88, 144, 146, 4, 99, 206, 20, 11, 200, 80, 245, 67, 32, 84, 137, 56,
-			112, 20, 11, 200, 76, 176, 78, 16, 84, 137, 56, 112, 20, 11, 200, 76, 176, 77, 24, 84, 137, 56, 112, 20, 11, 200, 73, 83, 83, 80,
-			84, 137, 56, 112, 20, 11, 200, 72, 81, 149, 76, 84, 137, 56, 112, 20, 11, 200, 72, 81, 133, 72, 84, 137, 56, 112, 20, 11, 200, 72,
-			81, 9, 28, 84, 137, 56, 112, 20, 11, 200, 64, 242, 78, 80, 84, 137, 56, 112, 20, 11, 200, 64, 192, 71, 36, 84, 137, 56, 112, 20,
-			11, 200, 64, 21, 9, 56, 84, 137, 56, 112, 20, 11, 200, 61, 5, 9, 52, 84, 137, 56, 112, 20, 11, 200, 52, 245, 9, 88, 84, 137,
-			56, 112, 20, 11, 200, 44, 17, 13, 36, 84, 137, 56, 112, 20, 11, 200, 40, 243, 135, 48, 84, 137, 56, 112, 20, 11, 200, 36, 226, 84,
-			36, 84, 137, 56, 112, 20, 11, 200, 32, 243, 143, 72, 84, 137, 56, 112, 20, 11, 200, 29, 37, 80, 64, 84, 137, 56, 112, 20, 11, 200,
-			20, 208, 76, 40, 84, 137, 56, 112, 20, 11, 200, 20, 181, 137, 64, 84, 137, 56, 112, 20, 11, 200, 16, 85, 143, 88, 84, 137, 56, 112,
-			20, 11, 200, 16, 80, 201, 52, 84, 137, 56, 112, 20, 11, 200, 12, 83, 148, 72, 84, 137, 56, 112, 20, 11, 200, 12, 17, 13, 36, 84,
-			137, 56, 112, 20, 11, 200, 9, 32, 73, 76, 84, 137, 56, 112, 20, 11, 200, 4, 192, 82, 52, 84, 137, 56, 112, 20, 11, 200, 4, 181,
-			9, 88, 84, 137, 56, 112, 20, 11, 200, 4, 69, 137, 76, 84, 137, 56, 112, 20, 11, 200, 4, 35, 210, 80, 84, 137, 56, 112, 20, 14,
-			68, 44, 19, 133, 48, 49, 110, 50, 6, 36, 55, 0, 20, 11, 200, 81, 35, 205, 64, 85, 5, 72, 80, 20, 11, 200, 44, 243, 131, 21,
-			37, 5, 72, 80, 20, 11, 200, 21, 66, 75, 21, 69, 5, 72, 80, 20, 11, 200, 9, 81, 7, 21, 69, 5, 72, 80, 20, 11, 200, 9,
-			34, 75, 21, 69, 5, 72, 80, 20, 12, 137, 16, 25, 7, 13, 195, 166, 9, 19, 11, 20, 11, 200, 60, 194, 71, 5, 34, 201, 76, 176,
-			20, 11, 200, 72, 81, 133, 45, 67, 210, 36, 80, 20, 11, 200, 65, 35, 214, 37, 51, 210, 36, 80, 20, 11, 200, 45, 33, 77, 5, 67,
-			210, 36, 80, 20, 7, 196, 24, 147, 137, 80, 20, 7, 196, 32, 16, 137, 48, 20, 11, 200, 61, 35, 129, 52, 83, 148, 36, 176, 20, 12,
-			137, 4, 9, 195, 166, 20, 5, 20, 9, 11, 20, 9, 198, 12, 20, 137, 8, 145, 78, 20, 7, 196, 5, 50, 65, 80, 20, 11, 200, 77,
-			4, 153, 17, 53, 1, 28, 80, 20, 0, 6, 195, 48, 145, 82, 20, 10, 69, 8, 244, 212, 60, 224, 21, 0, 10, 0, 13, 202, 81, 32,
-			78, 76, 99, 210, 52, 21, 15, 72, 20, 9, 198, 16, 21, 1, 56, 243, 64, 20, 0, 14, 203, 80, 84, 212, 4, 209, 78, 80, 84, 137,
-			56, 112, 20, 14, 203, 77, 147, 139, 72, 85, 9, 76, 84, 137, 56, 112, 20, 10, 199, 77, 69, 68, 21, 34, 78, 28, 20, 14, 203, 76,
-			147, 80, 48, 145, 137, 12, 84, 137, 56, 112, 20, 10, 199, 76, 19, 4, 21, 34, 78, 28, 20, 14, 203, 64, 244, 21, 48, 20, 137, 76,
-			84, 137, 56, 112, 20, 14, 203, 64, 20, 140, 4, 209, 78, 80, 84, 137, 56, 112, 20, 10, 199, 64, 19, 16, 21, 34, 78, 28, 20, 10,
-			199, 45, 33, 77, 21, 34, 78, 28, 20, 14, 203, 44, 19, 12, 36, 116, 129, 24, 84, 137, 56, 112, 20, 14, 203, 36, 65, 79, 48, 241,
-			201, 76, 84, 137, 56, 112, 20, 14, 203, 25, 83, 132, 4, 209, 78, 80, 84, 137, 56, 112, 20, 14, 203, 24, 244, 198, 61, 33, 83, 12,
-			84, 137, 56, 112, 20, 10, 199, 20, 213, 76, 21, 34, 78, 28, 20, 14, 203, 5, 85, 15, 52, 21, 9, 76, 84, 137, 56, 112, 20, 14,
-			203, 4, 193, 129, 8, 85, 9, 76, 84, 137, 56, 112, 20, 12, 201, 61, 1, 82, 5, 66, 79, 56, 83, 0, 20, 9, 198, 37, 51, 205,
-			21, 68, 137, 20, 10, 199, 16, 84, 15, 76, 149, 21, 52, 20, 10, 199, 52, 20, 137, 8, 243, 137, 80, 20, 10, 199, 45, 98, 82, 72,
-			85, 137, 80, 20, 10, 199, 85, 32, 129, 56, 148, 205, 20, 20, 10, 199, 48, 21, 9, 56, 148, 205, 20, 20, 10, 199, 44, 243, 15, 72,
-			148, 205, 20, 20, 10, 199, 28, 83, 210, 28, 148, 205, 20, 20, 10, 199, 9, 81, 4, 32, 148, 205, 20, 20, 10, 199, 20, 180, 201, 77,
-			65, 78, 76, 20, 6, 195, 76, 176, 76, 76, 0, 9, 198, 77, 80, 140, 36, 209, 82, 20, 9, 198, 65, 35, 214, 60, 177, 82, 20, 9,
-			198, 65, 35, 212, 20, 113, 82, 20, 9, 198, 5, 52, 207, 12, 145, 82, 20, 9, 198, 4, 66, 149, 56, 113, 82, 20, 9, 198, 4, 194,
-			207, 32, 243, 0, 20, 16, 141, 195, 184, 11, 15, 14, 15, 13, 5, 20, 18, 9, 19, 11, 20, 12, 137, 195, 166, 7, 25, 16, 20, 9,
-			19, 11, 20, 7, 196, 20, 243, 9, 80, 20, 9, 198, 48, 144, 133, 72, 144, 78, 20, 9, 198, 60, 36, 201, 16, 144, 78, 21, 7, 196,
-			4, 227, 129, 48, 20, 8, 67, 60, 176, 89, 21, 0, 10, 0, 9, 198, 32, 148, 16, 60, 195, 199, 20, 9, 198, 25, 33, 78, 60, 195,
-			199, 20, 12, 201, 88, 19, 4, 32, 244, 142, 37, 53, 0, 20, 12, 201, 8, 82, 1, 88, 147, 210, 37, 53, 0, 20, 11, 136, 19, 12,
-			195, 184, 19, 5, 18, 9, 20, 17, 142, 19, 20, 195, 184, 11, 9, 15, 13, 5, 20, 18, 9, 19, 11, 20, 13, 138, 19, 16, 15, 14,
-			4, 195, 166, 9, 19, 11, 20, 17, 142, 6, 195, 184, 4, 5, 18, 1, 12, 9, 19, 20, 9, 19, 11, 20, 17, 142, 5, 14, 3, 25,
-			11, 12, 15, 16, 195, 166, 4, 9, 19, 11, 20, 0, 13, 202, 52, 21, 18, 36, 181, 76, 21, 34, 78, 28, 20, 13, 202, 36, 225, 18,
-			20, 117, 76, 21, 34, 78, 28, 20, 13, 202, 20, 180, 208, 48, 242, 84, 21, 34, 78, 28, 20, 13, 202, 8, 20, 146, 36, 176, 68, 21,
-			34, 78, 28, 20, 14, 139, 16, 195, 166, 4, 1, 7, 15, 7, 9, 19, 11, 20, 13, 202, 81, 32, 78, 77, 97, 83, 80, 148, 205, 20,
-			20, 13, 202, 76, 176, 78, 16, 147, 129, 88, 148, 205, 20, 20, 13, 202, 21, 99, 204, 85, 66, 79, 56, 148, 205, 20, 20, 13, 202, 21,
-			67, 143, 12, 83, 148, 72, 148, 205, 20, 20, 9, 198, 48, 20, 153, 56, 112, 76, 20, 13, 202, 44, 243, 138, 84, 226, 212, 36, 243, 129,
-			48, 20, 11, 70, 52, 243, 148, 72, 80, 76, 21, 0, 10, 0, 10, 199, 24, 83, 142, 60, 195, 199, 36, 20, 10, 199, 32, 82, 212, 60,
-			116, 129, 52, 20, 15, 140, 16, 18, 195, 166, 16, 1, 18, 5, 18, 9, 14, 7, 20, 14, 139, 16, 18, 195, 166, 10, 21, 4, 9, 11,
-			1, 20, 20, 10, 199, 20, 229, 18, 20, 50, 1, 80, 20, 0, 9, 198, 65, 35, 208, 4, 113, 82, 20, 9, 198, 44, 243, 138, 84, 113,
-			82, 20, 9, 198, 21, 52, 1, 48, 145, 82, 20, 9, 198, 8, 19, 19, 4, 209, 82, 20, 14, 139, 6, 18, 9, 20, 195, 166, 14, 11,
-			5, 18, 9, 20, 9, 198, 4, 35, 210, 36, 114, 78, 20, 11, 200, 77, 80, 147, 37, 53, 5, 57, 48, 20, 9, 198, 64, 83, 77, 36,
-			176, 78, 21, 0, 13, 138, 195, 166, 7, 25, 16, 20, 15, 12, 15, 7, 20, 9, 198, 29, 32, 70, 60, 195, 199, 20, 17, 142, 5, 21,
-			18, 15, 16, 195, 166, 9, 19, 5, 18, 9, 14, 7, 20, 16, 205, 16, 82, 207, 57, 53, 18, 84, 181, 9, 88, 148, 205, 20, 20, 10,
-			135, 19, 9, 7, 195, 184, 10, 14, 20, 7, 196, 16, 147, 129, 72, 20, 7, 196, 64, 20, 129, 8, 20, 0, 8, 197, 104, 148, 139, 60,
-			224, 20, 9, 198, 4, 192, 82, 52, 84, 133, 20, 9, 198, 4, 35, 210, 80, 84, 133, 20, 0, 9, 198, 80, 16, 149, 48, 84, 128, 20,
-			9, 198, 76, 21, 9, 56, 84, 128, 20, 9, 198, 72, 84, 213, 52, 84, 128, 20, 12, 201, 25, 33, 77, 65, 35, 214, 60, 177, 82, 20,
-			9, 198, 52, 243, 137, 80, 84, 128, 20, 9, 198, 52, 83, 79, 72, 84, 128, 20, 9, 198, 45, 83, 85, 48, 84, 128, 20, 9, 198, 36,
-			228, 197, 72, 84, 128, 20, 9, 198, 36, 226, 1, 48, 84, 128, 20, 9, 198, 36, 195, 21, 16, 84, 128, 20, 9, 198, 28, 83, 73, 56,
-			84, 128, 20, 9, 198, 24, 242, 213, 76, 84, 128, 20, 9, 198, 24, 16, 149, 48, 84, 128, 20, 9, 198, 20, 210, 84, 80, 84, 128, 20,
-			9, 198, 16, 243, 73, 56, 84, 128, 20, 9, 198, 16, 80, 137, 80, 84, 128, 20, 9, 198, 5, 52, 9, 72, 84, 128, 20, 9, 198, 4,
-			195, 21, 16, 84, 128, 20, 9, 198, 4, 67, 208, 80, 84, 128, 20, 17, 142, 19, 11, 18, 21, 5, 2, 18, 195, 166, 11, 11, 5, 18,
-			9, 20, 9, 198, 32, 243, 143, 72, 20, 128, 20, 9, 198, 88, 83, 133, 72, 16, 128, 20, 0, 10, 199, 36, 212, 12, 61, 50, 79, 56,
-			20, 10, 199, 44, 243, 150, 60, 161, 82, 20, 20, 10, 199, 44, 21, 84, 36, 243, 133, 72, 20, 10, 199, 32, 20, 144, 84, 225, 82, 20,
-			20, 10, 199, 20, 180, 193, 52, 147, 133, 72, 20, 10, 199, 16, 85, 1, 48, 161, 82, 20, 20, 10, 199, 12, 19, 79, 84, 99, 5, 72,
-			20, 10, 199, 25, 83, 132, 4, 209, 78, 80, 20, 10, 199, 16, 85, 5, 72, 113, 78, 80, 20, 10, 199, 77, 84, 16, 48, 80, 78, 80,
-			20, 10, 199, 44, 243, 150, 21, 36, 193, 8, 20, 0, 11, 200, 52, 85, 1, 48, 195, 198, 60, 224, 20, 7, 196, 77, 2, 79, 56, 20,
-			12, 201, 80, 84, 212, 4, 209, 78, 80, 84, 133, 20, 11, 200, 44, 243, 5, 77, 65, 82, 60, 192, 20, 14, 139, 4, 9, 195, 166, 20,
-			5, 20, 9, 11, 5, 18, 20, 7, 196, 72, 244, 201, 56, 20, 11, 200, 56, 80, 80, 60, 194, 84, 4, 224, 20, 7, 196, 88, 83, 1,
-			56, 21, 7, 196, 44, 20, 1, 8, 20, 7, 196, 16, 83, 142, 20, 76, 0, 12, 201, 81, 32, 78, 76, 210, 84, 80, 84, 128, 20, 9,
-			198, 64, 148, 129, 80, 84, 133, 20, 12, 201, 53, 149, 15, 48, 241, 201, 76, 84, 128, 20, 12, 201, 53, 83, 20, 37, 3, 9, 12, 84,
-			128, 20, 9, 198, 45, 38, 80, 80, 84, 133, 20, 12, 201, 36, 229, 5, 72, 210, 84, 80, 84, 128, 20, 12, 201, 32, 243, 79, 28, 83,
-			137, 76, 84, 128, 20, 12, 201, 20, 180, 208, 72, 244, 18, 36, 84, 128, 20, 12, 201, 16, 148, 203, 72, 147, 73, 56, 84, 128, 20, 9,
-			198, 9, 35, 206, 104, 84, 133, 20, 12, 201, 8, 20, 212, 5, 33, 9, 76, 84, 128, 20, 9, 198, 8, 18, 129, 16, 84, 133, 20, 12,
-			201, 77, 145, 137, 48, 149, 9, 44, 84, 128, 20, 12, 201, 21, 2, 76, 21, 5, 9, 44, 84, 128, 20, 8, 197, 28, 20, 132, 36, 224,
-			20, 8, 197, 4, 226, 76, 36, 224, 20, 9, 198, 44, 243, 80, 4, 115, 137, 20, 8, 197, 80, 20, 148, 4, 224, 21, 8, 197, 64, 192,
-			84, 4, 224, 21, 8, 197, 72, 17, 9, 4, 192, 20, 8, 197, 24, 147, 9, 4, 192, 20, 0, 9, 198, 52, 85, 1, 24, 244, 128, 20,
-			9, 198, 76, 16, 143, 80, 84, 128, 20, 9, 198, 73, 83, 83, 80, 84, 128, 20, 9, 198, 72, 148, 201, 44, 84, 128, 20, 9, 198, 65,
-			33, 77, 36, 84, 128, 20, 9, 198, 64, 21, 9, 56, 84, 128, 20, 9, 198, 52, 20, 143, 16, 84, 128, 20, 9, 198, 48, 19, 73, 56,
-			84, 128, 20, 13, 202, 44, 243, 80, 48, 147, 69, 57, 65, 82, 20, 20, 9, 198, 12, 128, 82, 52, 84, 128, 20, 9, 198, 12, 83, 148,
-			72, 84, 128, 20, 9, 198, 12, 17, 13, 36, 84, 128, 20, 9, 198, 5, 36, 137, 88, 84, 128, 20, 9, 198, 57, 82, 204, 20, 20, 128,
-			20, 9, 198, 37, 36, 137, 80, 16, 128, 20, 0, 10, 199, 44, 244, 146, 20, 181, 21, 72, 20, 10, 199, 48, 18, 212, 5, 66, 79, 56,
-			20, 10, 199, 44, 243, 132, 37, 66, 79, 56, 20, 10, 199, 36, 229, 21, 37, 66, 79, 56, 20, 10, 199, 16, 148, 133, 45, 66, 79, 56,
-			20, 10, 199, 8, 19, 132, 4, 113, 82, 20, 20, 10, 199, 44, 148, 149, 72, 114, 83, 44, 20, 10, 199, 52, 85, 1, 24, 244, 137, 44,
-			20, 10, 199, 24, 148, 141, 4, 209, 78, 80, 20, 10, 199, 16, 148, 211, 36, 65, 78, 80, 20, 12, 201, 20, 180, 207, 72, 34, 84, 4,
-			229, 0, 20, 0, 10, 135, 195, 166, 15, 12, 9, 19, 11, 20, 11, 200, 85, 48, 133, 44, 148, 212, 4, 224, 21, 11, 200, 45, 35, 205,
-			61, 51, 205, 4, 192, 20, 0, 12, 201, 76, 147, 80, 48, 145, 137, 12, 84, 128, 20, 12, 201, 72, 82, 207, 53, 1, 78, 76, 84, 128,
-			20, 12, 201, 72, 82, 207, 52, 208, 78, 16, 84, 128, 20, 12, 201, 4, 195, 5, 28, 244, 137, 76, 84, 128, 20, 9, 198, 76, 209, 76,
-			80, 84, 137, 20, 9, 198, 76, 194, 75, 44, 84, 137, 20, 9, 198, 76, 178, 76, 16, 84, 137, 20, 9, 198, 64, 148, 129, 80, 84, 137,
-			20, 12, 201, 17, 148, 204, 20, 181, 9, 44, 84, 128, 20, 8, 197, 53, 84, 203, 5, 64, 20, 12, 201, 8, 144, 140, 36, 245, 5, 44,
-			20, 128, 20, 10, 69, 77, 68, 133, 21, 64, 21, 0, 10, 0, 9, 198, 56, 85, 82, 61, 49, 64, 20, 13, 202, 25, 32, 71, 52, 83,
-			148, 5, 66, 79, 56, 20, 13, 202, 16, 148, 208, 72, 244, 15, 73, 66, 79, 56, 20, 9, 198, 44, 20, 203, 4, 65, 64, 20, 0, 10,
-			199, 77, 83, 77, 21, 34, 78, 28, 20, 9, 198, 36, 211, 65, 56, 83, 147, 20, 0, 11, 200, 44, 20, 129, 8, 147, 137, 21, 32, 20,
-			12, 137, 16, 10, 195, 166, 11, 11, 5, 18, 9, 20, 12, 201, 44, 192, 77, 64, 133, 71, 28, 84, 137, 20, 7, 196, 81, 34, 79, 48,
-			20, 18, 143, 195, 166, 11, 22, 9, 12, 9, 2, 18, 9, 19, 20, 9, 19, 11, 20, 14, 139, 16, 195, 166, 4, 9, 1, 20, 18, 9,
-			19, 11, 20, 14, 139, 15, 18, 20, 15, 16, 195, 166, 4, 9, 19, 11, 20, 14, 139, 12, 15, 7, 15, 16, 195, 166, 4, 9, 19, 11,
-			20, 13, 72, 77, 113, 65, 81, 50, 9, 73, 64, 21, 0, 10, 0, 9, 198, 21, 2, 76, 21, 4, 201, 20, 9, 198, 17, 148, 208, 21,
-			4, 201, 20, 12, 201, 45, 38, 83, 80, 19, 12, 61, 49, 64, 20, 8, 197, 88, 20, 137, 21, 32, 20, 9, 198, 76, 160, 83, 44, 84,
-			137, 20, 9, 198, 61, 32, 78, 28, 84, 137, 20, 12, 201, 24, 244, 130, 36, 225, 20, 48, 145, 192, 20, 12, 201, 76, 19, 77, 20, 228,
-			213, 72, 145, 64, 20, 8, 197, 77, 64, 75, 37, 64, 20, 14, 139, 8, 9, 12, 12, 5, 18, 195, 184, 4, 1, 14, 20, 8, 197, 64,
-			20, 211, 5, 64, 20, 8, 197, 44, 244, 147, 5, 32, 20, 0, 9, 198, 36, 211, 65, 56, 83, 148, 20, 0, 14, 139, 15, 18, 20, 15,
-			16, 195, 166, 4, 9, 19, 20, 20, 0, 9, 198, 72, 80, 197, 65, 67, 210, 20, 9, 198, 44, 243, 80, 48, 85, 0, 20, 9, 198, 44,
-			21, 129, 48, 85, 0, 20, 9, 198, 12, 243, 80, 48, 85, 0, 20, 9, 198, 64, 20, 137, 80, 85, 0, 20, 7, 196, 76, 19, 133, 72,
-			20, 7, 196, 16, 243, 133, 72, 20, 9, 198, 45, 38, 79, 48, 149, 0, 20, 9, 198, 32, 148, 212, 4, 210, 78, 20, 9, 198, 5, 4,
-			5, 49, 50, 78, 20, 7, 196, 33, 83, 65, 56, 21, 7, 196, 8, 19, 129, 56, 21, 0, 12, 201, 52, 85, 1, 52, 244, 134, 61, 49,
-			64, 20, 8, 197, 20, 225, 82, 28, 144, 20, 12, 201, 77, 66, 76, 37, 49, 82, 36, 225, 192, 20, 12, 201, 76, 145, 206, 4, 193, 82,
-			36, 225, 192, 20, 12, 201, 76, 50, 1, 81, 65, 82, 36, 225, 192, 20, 12, 201, 72, 82, 204, 4, 209, 82, 36, 225, 192, 20, 12, 201,
-			72, 81, 143, 72, 209, 82, 36, 225, 192, 20, 12, 201, 65, 35, 198, 36, 193, 82, 36, 225, 192, 20, 12, 201, 64, 241, 84, 37, 49, 82,
-			36, 225, 192, 20, 12, 201, 45, 32, 75, 20, 193, 82, 36, 225, 192, 20, 12, 201, 44, 19, 132, 37, 49, 82, 36, 225, 192, 20, 12, 201,
-			36, 225, 12, 60, 113, 82, 36, 225, 192, 20, 12, 201, 36, 67, 204, 37, 49, 82, 36, 225, 192, 20, 12, 201, 32, 84, 143, 37, 49, 82,
-			36, 225, 192, 20, 12, 201, 24, 16, 146, 36, 177, 82, 36, 225, 192, 20, 12, 201, 20, 112, 76, 37, 49, 82, 36, 225, 192, 20, 12, 201,
-			16, 148, 211, 20, 177, 82, 36, 225, 192, 20, 12, 201, 16, 85, 129, 49, 81, 82, 36, 225, 192, 20, 12, 201, 16, 84, 212, 73, 81, 82,
-			36, 225, 192, 20, 12, 201, 16, 82, 204, 4, 209, 82, 36, 225, 192, 20, 12, 201, 16, 81, 143, 72, 209, 82, 36, 225, 192, 20, 12, 201,
-			8, 149, 149, 4, 177, 82, 36, 225, 192, 20, 12, 201, 4, 227, 196, 37, 49, 82, 36, 225, 192, 20, 12, 201, 4, 113, 210, 5, 97, 82,
-			36, 225, 192, 20, 13, 138, 19, 195, 184, 18, 195, 184, 22, 5, 18, 9, 20, 9, 198, 28, 84, 129, 56, 149, 77, 20, 12, 201, 72, 83,
-			1, 80, 149, 137, 76, 209, 64, 20, 8, 197, 80, 148, 129, 16, 80, 20, 8, 197, 64, 20, 129, 16, 80, 20, 11, 67, 16, 149, 0, 72,
-			6, 37, 47, 0, 72, 0, 9, 198, 77, 147, 133, 72, 114, 64, 20, 0, 10, 199, 72, 80, 197, 77, 50, 79, 56, 20, 10, 199, 4, 227,
-			133, 45, 50, 79, 56, 20, 10, 199, 4, 67, 73, 77, 50, 79, 56, 20, 12, 201, 64, 21, 15, 28, 83, 137, 80, 85, 0, 20, 12, 201,
-			24, 83, 73, 56, 147, 137, 80, 85, 0, 20, 10, 199, 44, 243, 132, 20, 211, 133, 72, 20, 10, 199, 36, 228, 197, 52, 147, 133, 72, 20,
-			10, 199, 28, 83, 1, 80, 147, 133, 72, 20, 15, 140, 195, 184, 10, 5, 14, 20, 10, 5, 14, 5, 18, 9, 20, 10, 199, 77, 98, 78,
-			16, 193, 82, 36, 20, 10, 199, 77, 84, 141, 84, 193, 82, 36, 20, 10, 199, 76, 180, 137, 8, 193, 82, 36, 20, 10, 199, 65, 34, 86,
-			5, 65, 82, 36, 20, 10, 199, 28, 19, 1, 57, 65, 82, 36, 20, 10, 199, 25, 34, 77, 85, 33, 82, 36, 20, 10, 199, 21, 2, 71,
-			60, 225, 82, 36, 20, 10, 199, 12, 130, 75, 4, 225, 82, 36, 20, 10, 199, 8, 146, 143, 85, 65, 82, 36, 20, 10, 199, 5, 37, 9,
-			48, 193, 82, 36, 20, 12, 201, 4, 229, 9, 32, 148, 212, 4, 210, 78, 20, 10, 199, 52, 85, 1, 25, 148, 201, 44, 20, 10, 199, 52,
-			20, 203, 21, 32, 68, 20, 20, 0, 12, 201, 61, 48, 201, 48, 195, 211, 44, 244, 0, 20, 9, 198, 64, 18, 76, 48, 85, 0, 20, 11,
-			200, 80, 149, 21, 48, 84, 137, 56, 112, 20, 11, 200, 76, 176, 76, 64, 84, 137, 56, 112, 20, 11, 200, 72, 83, 143, 88, 84, 137, 56,
-			112, 20, 11, 200, 72, 83, 5, 28, 84, 137, 56, 112, 20, 15, 204, 72, 81, 201, 60, 224, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204,
-			65, 54, 75, 60, 195, 199, 37, 49, 82, 36, 225, 192, 20, 11, 200, 64, 194, 83, 76, 84, 137, 56, 112, 20, 15, 204, 48, 82, 211, 36,
-			176, 76, 37, 49, 82, 36, 225, 192, 20, 11, 200, 48, 19, 73, 56, 84, 137, 56, 112, 20, 15, 204, 45, 38, 83, 80, 19, 12, 37, 49,
-			82, 36, 225, 192, 20, 15, 204, 45, 38, 80, 80, 241, 210, 4, 97, 82, 36, 225, 192, 20, 15, 204, 32, 244, 208, 37, 64, 76, 37, 49,
-			82, 36, 225, 192, 20, 11, 200, 25, 32, 78, 44, 84, 137, 56, 112, 20, 11, 200, 21, 96, 75, 84, 84, 137, 56, 112, 20, 15, 204, 16,
-			84, 212, 4, 34, 76, 37, 49, 82, 36, 225, 192, 20, 15, 204, 16, 84, 207, 72, 112, 78, 37, 49, 82, 36, 225, 192, 20, 15, 204, 16,
-			83, 79, 45, 32, 84, 37, 49, 82, 36, 225, 192, 20, 11, 200, 16, 83, 5, 28, 84, 137, 56, 112, 20, 11, 200, 5, 69, 1, 44, 84,
-			137, 56, 112, 20, 15, 204, 4, 178, 204, 36, 208, 84, 37, 49, 82, 36, 225, 192, 20, 11, 200, 84, 226, 70, 61, 35, 69, 72, 80, 20,
-			11, 200, 44, 192, 85, 77, 83, 5, 72, 80, 20, 11, 200, 64, 21, 18, 60, 225, 83, 76, 80, 20, 11, 200, 56, 83, 204, 37, 66, 75,
-			84, 208, 20, 11, 200, 56, 20, 139, 61, 66, 75, 84, 208, 20, 9, 198, 64, 243, 70, 72, 149, 0, 20, 11, 200, 44, 243, 80, 21, 65,
-			78, 12, 80, 20, 7, 196, 88, 83, 1, 72, 20, 7, 196, 32, 83, 132, 20, 72, 0, 11, 136, 12, 21, 11, 19, 21, 195, 184, 19, 20,
-			12, 201, 76, 149, 21, 5, 66, 79, 56, 83, 0, 20, 12, 201, 72, 81, 1, 45, 66, 79, 56, 83, 0, 20, 9, 198, 44, 193, 78, 60,
-			66, 69, 20, 9, 198, 77, 147, 80, 61, 50, 69, 20, 9, 198, 21, 81, 143, 52, 19, 137, 20, 12, 69, 52, 17, 1, 52, 80, 21, 102,
-			114, 0, 10, 0, 17, 142, 5, 14, 3, 25, 11, 12, 15, 16, 195, 166, 4, 9, 19, 20, 20, 9, 198, 60, 97, 137, 12, 145, 76, 20,
-			9, 198, 77, 84, 146, 20, 19, 0, 20, 0, 20, 67, 32, 19, 128, 107, 110, 50, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32,
-			10, 199, 72, 80, 197, 65, 66, 79, 56, 20, 10, 199, 45, 33, 77, 5, 66, 79, 56, 20, 10, 199, 16, 81, 21, 45, 66, 79, 56, 20,
-			12, 201, 36, 224, 75, 80, 149, 137, 80, 85, 0, 20, 14, 203, 77, 65, 78, 60, 116, 129, 24, 84, 137, 56, 112, 20, 14, 203, 72, 85,
-			137, 80, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 64, 20, 212, 21, 84, 137, 76, 84, 137, 56, 112, 20, 14, 203, 64, 19, 1, 80,
-			19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 52, 243, 143, 64, 243, 9, 76, 84, 137, 56, 112, 20, 14, 203, 44, 21, 1, 48, 241, 201,
-			76, 84, 137, 56, 112, 20, 18, 207, 36, 228, 212, 73, 83, 69, 57, 64, 76, 37, 49, 82, 36, 225, 192, 20, 14, 203, 36, 225, 15, 45,
-			68, 137, 56, 84, 137, 56, 112, 20, 14, 203, 32, 82, 212, 60, 116, 129, 24, 84, 137, 56, 112, 20, 14, 203, 24, 81, 5, 72, 19, 9,
-			76, 84, 137, 56, 112, 20, 14, 203, 20, 180, 212, 20, 212, 15, 72, 84, 137, 56, 112, 20, 14, 203, 16, 145, 201, 80, 19, 9, 76, 84,
-			137, 56, 112, 20, 14, 203, 12, 128, 80, 80, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 4, 100, 137, 44, 19, 137, 76, 84, 137, 56,
-			112, 20, 10, 199, 44, 20, 143, 77, 49, 82, 36, 20, 10, 199, 36, 225, 137, 72, 209, 82, 36, 20, 10, 199, 80, 19, 65, 72, 147, 132,
-			20, 20, 10, 199, 65, 34, 79, 72, 147, 132, 20, 20, 11, 67, 16, 147, 128, 72, 6, 37, 50, 0, 76, 6, 195, 32, 19, 128, 72, 0,
-			11, 200, 24, 192, 78, 44, 84, 137, 56, 112, 20, 11, 200, 5, 81, 9, 80, 84, 137, 56, 112, 20, 11, 200, 44, 243, 80, 5, 36, 197,
-			72, 144, 20, 11, 68, 24, 147, 129, 48, 20, 36, 89, 36, 0, 7, 196, 32, 16, 137, 80, 20, 7, 196, 48, 16, 137, 48, 20, 7, 196,
-			60, 35, 1, 80, 20, 7, 196, 80, 243, 129, 48, 20, 7, 196, 44, 19, 129, 48, 20, 7, 196, 24, 147, 129, 48, 20, 7, 196, 8, 19,
-			129, 48, 20, 11, 200, 44, 243, 16, 61, 37, 1, 28, 80, 20, 0, 9, 198, 76, 182, 76, 48, 84, 137, 20, 9, 198, 44, 21, 129, 48,
-			84, 137, 20, 6, 195, 73, 82, 78, 20, 9, 198, 48, 19, 65, 37, 51, 69, 20, 9, 198, 5, 67, 205, 37, 51, 69, 20, 25, 4, 95,
-			55, 88, 15, 107, 110, 55, 83, 57, 6, 110, 34, 89, 36, 50, 89, 47, 116, 84, 13, 50, 13, 0, 0, 11, 67, 20, 115, 133, 35, 12,
-			37, 50, 13, 0, 11, 136, 20, 18, 1, 11, 20, 195, 184, 18, 20, 13, 202, 81, 32, 78, 77, 2, 82, 5, 66, 79, 56, 20, 13, 202,
-			44, 243, 148, 4, 210, 78, 5, 66, 79, 56, 20, 13, 202, 44, 243, 12, 4, 35, 210, 5, 66, 79, 56, 20, 13, 202, 32, 19, 12, 84,
-			50, 78, 5, 66, 79, 56, 20, 13, 202, 20, 180, 208, 5, 68, 137, 5, 66, 79, 56, 20, 9, 198, 25, 85, 21, 73, 83, 64, 20, 9,
-			198, 20, 198, 83, 37, 83, 64, 20, 9, 198, 44, 20, 129, 8, 147, 128, 20, 9, 198, 8, 18, 18, 4, 147, 128, 20, 9, 198, 77, 3,
-			206, 80, 19, 128, 21, 11, 67, 16, 147, 133, 72, 6, 37, 50, 36, 0, 0, 10, 199, 44, 20, 132, 36, 19, 7, 36, 20, 10, 199, 5,
-			53, 18, 60, 195, 199, 36, 20, 9, 198, 80, 20, 133, 72, 147, 135, 20, 10, 199, 80, 19, 10, 21, 34, 78, 28, 20, 10, 199, 76, 145,
-			206, 21, 34, 78, 28, 20, 10, 199, 65, 83, 19, 21, 34, 78, 28, 20, 9, 198, 64, 20, 133, 72, 147, 135, 20, 9, 198, 64, 19, 133,
-			72, 147, 135, 20, 10, 199, 37, 34, 83, 21, 34, 78, 28, 20, 10, 199, 33, 145, 18, 21, 34, 78, 28, 20, 10, 199, 25, 84, 142, 21,
-			34, 78, 28, 20, 9, 198, 24, 147, 133, 72, 147, 135, 20, 10, 199, 9, 81, 211, 21, 34, 78, 28, 20, 10, 199, 44, 83, 73, 44, 19,
-			9, 20, 20, 10, 199, 64, 85, 18, 60, 193, 85, 52, 20, 10, 199, 77, 67, 201, 12, 148, 205, 20, 20, 10, 199, 64, 16, 201, 24, 148,
-			205, 20, 20, 10, 199, 52, 244, 129, 48, 148, 205, 20, 20, 10, 199, 24, 19, 129, 80, 148, 205, 20, 20, 10, 199, 48, 242, 207, 52, 240,
-			137, 48, 20, 10, 199, 24, 192, 71, 20, 195, 1, 80, 20, 10, 199, 52, 81, 9, 12, 147, 129, 48, 20, 10, 199, 20, 208, 146, 100, 243,
-			129, 48, 20, 0, 9, 198, 16, 82, 204, 4, 209, 82, 20, 9, 198, 8, 149, 149, 4, 177, 82, 20, 12, 201, 16, 85, 5, 72, 210, 78,
-			37, 51, 69, 20, 7, 196, 24, 243, 133, 52, 20, 9, 198, 40, 19, 65, 36, 48, 78, 20, 7, 196, 77, 82, 193, 80, 20, 7, 196, 61,
-			2, 65, 80, 20, 7, 196, 17, 82, 193, 80, 20, 11, 70, 16, 80, 149, 28, 113, 82, 21, 0, 10, 0, 14, 139, 9, 14, 19, 20, 18,
-			21, 11, 20, 195, 184, 18, 20, 9, 198, 52, 147, 129, 72, 147, 133, 20, 9, 198, 28, 83, 210, 28, 147, 133, 20, 9, 198, 4, 35, 206,
-			56, 147, 133, 20, 12, 201, 77, 84, 16, 61, 50, 84, 36, 243, 128, 20, 12, 201, 52, 19, 149, 17, 82, 212, 36, 243, 128, 20, 12, 201,
-			45, 98, 78, 80, 147, 12, 36, 243, 128, 20, 12, 201, 44, 243, 138, 84, 226, 212, 36, 243, 128, 20, 12, 201, 36, 228, 212, 37, 69, 84,
-			36, 243, 128, 20, 12, 201, 36, 226, 214, 37, 50, 84, 36, 243, 128, 20, 12, 201, 20, 180, 212, 36, 226, 212, 36, 243, 128, 20, 12, 201,
-			20, 180, 208, 61, 50, 84, 36, 243, 128, 20, 12, 201, 16, 148, 212, 36, 226, 212, 36, 243, 128, 20, 12, 201, 16, 148, 208, 61, 50, 84,
-			36, 243, 128, 20, 12, 201, 16, 84, 212, 73, 82, 212, 36, 243, 128, 20, 0, 15, 140, 11, 15, 14, 19, 20, 18, 21, 11, 20, 195, 184,
-			18, 20, 9, 198, 44, 243, 15, 24, 243, 128, 20, 13, 202, 89, 83, 11, 4, 226, 83, 21, 34, 78, 28, 20, 13, 202, 81, 32, 78, 77,
-			2, 82, 21, 34, 78, 28, 20, 13, 202, 81, 32, 78, 76, 97, 82, 21, 34, 78, 28, 20, 13, 202, 80, 83, 210, 21, 66, 83, 21, 34,
-			78, 28, 20, 13, 202, 80, 83, 5, 29, 32, 70, 21, 34, 78, 28, 20, 13, 202, 77, 84, 5, 73, 98, 83, 21, 34, 78, 28, 20, 12,
-			201, 77, 3, 206, 76, 244, 133, 72, 147, 135, 20, 13, 202, 76, 177, 77, 5, 66, 83, 21, 34, 78, 28, 20, 13, 202, 76, 19, 139, 80,
-			147, 206, 21, 34, 78, 28, 20, 12, 201, 72, 21, 9, 32, 16, 133, 72, 147, 135, 20, 13, 202, 64, 20, 129, 29, 32, 70, 21, 34, 78,
-			28, 20, 13, 202, 60, 34, 133, 45, 66, 86, 21, 34, 78, 28, 20, 13, 202, 56, 20, 139, 61, 66, 83, 21, 34, 78, 28, 20, 13, 202,
-			52, 241, 5, 72, 226, 83, 21, 34, 78, 28, 20, 13, 202, 52, 84, 131, 21, 34, 83, 21, 34, 78, 28, 20, 12, 201, 52, 81, 9, 12,
-			147, 133, 72, 147, 135, 20, 13, 202, 52, 17, 206, 21, 66, 83, 21, 34, 78, 28, 20, 13, 202, 44, 243, 148, 4, 210, 78, 21, 34, 78,
-			28, 20, 13, 202, 44, 194, 77, 5, 66, 83, 21, 34, 78, 28, 20, 13, 202, 44, 147, 15, 52, 85, 18, 21, 34, 78, 28, 20, 12, 201,
-			44, 21, 84, 36, 243, 133, 72, 147, 135, 20, 13, 202, 44, 20, 130, 60, 226, 83, 21, 34, 78, 28, 20, 12, 201, 36, 225, 18, 84, 195,
-			5, 72, 147, 135, 20, 12, 201, 36, 225, 11, 48, 20, 133, 72, 147, 135, 20, 13, 202, 33, 148, 14, 61, 66, 83, 21, 34, 78, 28, 20,
-			13, 202, 32, 148, 212, 61, 34, 83, 21, 34, 78, 28, 20, 13, 202, 28, 195, 194, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 28, 129,
-			84, 80, 242, 83, 21, 34, 78, 28, 20, 13, 202, 28, 20, 142, 37, 51, 206, 21, 34, 78, 28, 20, 13, 202, 24, 245, 15, 29, 32, 70,
-			21, 34, 78, 28, 20, 13, 202, 24, 147, 13, 5, 66, 83, 21, 34, 78, 28, 20, 13, 202, 17, 32, 77, 5, 66, 83, 21, 34, 78, 28,
-			20, 13, 202, 16, 241, 205, 5, 66, 83, 21, 34, 78, 28, 20, 13, 202, 16, 83, 196, 61, 34, 83, 21, 34, 78, 28, 20, 12, 201, 12,
-			149, 137, 48, 148, 197, 72, 147, 135, 20, 12, 201, 12, 19, 79, 84, 99, 5, 72, 147, 135, 20, 13, 202, 5, 35, 205, 5, 66, 83, 21,
-			34, 78, 28, 20, 13, 202, 4, 227, 206, 100, 210, 83, 21, 34, 78, 28, 20, 13, 202, 4, 224, 76, 60, 114, 83, 21, 34, 78, 28, 20,
-			13, 202, 4, 176, 68, 20, 210, 83, 21, 34, 78, 28, 20, 13, 202, 36, 228, 212, 37, 69, 84, 36, 243, 133, 48, 20, 9, 198, 64, 147,
-			135, 88, 147, 128, 20, 9, 198, 52, 81, 9, 12, 147, 128, 20, 13, 202, 84, 226, 86, 21, 36, 193, 48, 148, 205, 20, 20, 13, 202, 44,
-			243, 12, 20, 181, 9, 88, 148, 205, 20, 20, 9, 198, 52, 242, 9, 44, 19, 128, 20, 9, 198, 52, 81, 9, 12, 147, 128, 20, 9, 198,
-			4, 225, 207, 48, 19, 128, 20, 9, 198, 81, 83, 9, 64, 19, 128, 21, 9, 198, 64, 83, 9, 44, 19, 128, 21, 9, 198, 52, 83, 66,
-			72, 19, 128, 21, 9, 198, 21, 81, 143, 52, 19, 128, 21, 7, 66, 16, 160, 21, 0, 10, 0, 31, 67, 64, 20, 128, 48, 35, 12, 36,
-			81, 89, 13, 6, 55, 35, 12, 68, 89, 0, 81, 101, 120, 99, 101, 108, 108, 101, 110, 99, 101, 32, 10, 199, 77, 65, 84, 61, 50, 207,
-			64, 20, 10, 199, 80, 85, 18, 4, 195, 199, 36, 20, 10, 199, 64, 85, 18, 60, 195, 199, 36, 20, 10, 199, 28, 83, 133, 4, 195, 199,
-			36, 20, 9, 198, 76, 19, 133, 72, 147, 135, 20, 9, 198, 52, 147, 133, 72, 147, 135, 20, 9, 198, 28, 148, 133, 72, 147, 135, 20, 12,
-			201, 65, 54, 75, 60, 195, 199, 37, 49, 82, 20, 12, 201, 21, 70, 77, 60, 195, 199, 37, 49, 82, 20, 10, 199, 45, 84, 129, 80, 244,
-			137, 20, 20, 10, 199, 28, 195, 211, 76, 20, 137, 20, 20, 10, 199, 48, 144, 197, 57, 66, 65, 80, 20, 10, 67, 32, 20, 128, 107, 112,
-			34, 0, 76, 0, 40, 68, 16, 147, 133, 72, 72, 37, 50, 6, 36, 47, 34, 112, 68, 89, 48, 114, 47, 6, 35, 71, 55, 13, 0, 81,
-			116, 114, 97, 110, 115, 112, 111, 114, 116, 97, 98, 108, 101, 32, 7, 196, 64, 19, 133, 72, 20, 9, 198, 61, 34, 71, 4, 209, 82, 20,
-			7, 196, 16, 147, 133, 72, 20, 9, 198, 5, 67, 205, 37, 49, 82, 20, 12, 201, 65, 54, 75, 60, 195, 199, 37, 51, 69, 20, 7, 196,
-			16, 83, 129, 72, 20, 16, 73, 52, 17, 5, 52, 242, 83, 20, 195, 5, 21, 102, 114, 0, 10, 6, 196, 20, 195, 5, 72, 0, 8, 197,
-			64, 21, 18, 60, 224, 20, 17, 69, 56, 21, 18, 60, 224, 50, 6, 110, 12, 47, 51, 114, 50, 0, 20, 16, 205, 81, 32, 78, 76, 148,
-			212, 61, 34, 83, 21, 34, 78, 28, 20, 16, 205, 25, 83, 139, 80, 147, 206, 4, 194, 83, 21, 34, 78, 28, 20, 9, 198, 76, 176, 78,
-			16, 84, 133, 20, 9, 198, 64, 242, 78, 80, 84, 133, 20, 9, 198, 52, 245, 9, 88, 84, 133, 20, 9, 198, 29, 37, 80, 64, 84, 133,
-			20, 9, 198, 4, 181, 9, 88, 84, 133, 20, 8, 197, 28, 243, 132, 60, 192, 20, 8, 197, 8, 147, 195, 36, 64, 20, 8, 197, 40, 20,
-			205, 36, 224, 20, 9, 198, 77, 147, 139, 72, 243, 137, 20, 12, 201, 72, 85, 19, 52, 81, 9, 12, 147, 128, 20, 0, 9, 198, 16, 149,
-			137, 76, 244, 128, 20, 9, 198, 45, 96, 78, 80, 244, 128, 20, 12, 201, 76, 82, 212, 36, 243, 133, 72, 147, 135, 20, 12, 201, 44, 243,
-			210, 16, 147, 133, 72, 147, 135, 20, 12, 201, 44, 243, 132, 20, 211, 133, 72, 147, 135, 20, 12, 201, 36, 228, 197, 52, 147, 133, 72, 147,
-			135, 20, 12, 201, 28, 83, 1, 80, 147, 133, 72, 147, 135, 20, 12, 201, 5, 85, 15, 72, 148, 197, 72, 147, 135, 20, 9, 198, 88, 145,
-			9, 52, 84, 128, 20, 9, 198, 72, 18, 76, 48, 84, 128, 20, 9, 198, 56, 243, 73, 56, 84, 128, 20, 9, 198, 52, 84, 137, 80, 84,
-			128, 20, 9, 198, 44, 20, 137, 44, 84, 128, 20, 9, 198, 21, 128, 201, 80, 84, 128, 20, 9, 198, 16, 149, 137, 16, 84, 128, 20, 9,
-			198, 4, 208, 149, 48, 84, 128, 20, 9, 198, 28, 198, 67, 21, 35, 204, 20, 0, 10, 199, 77, 147, 80, 61, 50, 79, 56, 20, 10, 199,
-			64, 20, 131, 20, 195, 5, 72, 20, 12, 201, 52, 85, 1, 52, 244, 134, 61, 49, 82, 20, 10, 199, 76, 176, 66, 4, 117, 9, 28, 20,
-			10, 199, 84, 226, 84, 5, 34, 83, 44, 20, 10, 199, 77, 147, 70, 60, 226, 83, 44, 20, 10, 199, 76, 86, 9, 77, 66, 83, 44, 20,
-			10, 199, 76, 17, 9, 77, 66, 83, 44, 20, 10, 199, 52, 20, 148, 101, 34, 83, 44, 20, 10, 199, 32, 243, 9, 77, 66, 83, 44, 20,
-			10, 199, 32, 149, 20, 37, 66, 83, 44, 20, 10, 199, 28, 19, 1, 45, 66, 83, 44, 20, 10, 199, 16, 243, 69, 77, 66, 83, 44, 20,
-			10, 199, 16, 149, 82, 21, 66, 83, 44, 20, 10, 199, 16, 144, 66, 21, 66, 83, 44, 20, 10, 199, 5, 85, 9, 77, 66, 83, 44, 20,
-			10, 199, 5, 65, 73, 77, 66, 83, 44, 20, 10, 199, 76, 176, 66, 4, 117, 9, 28, 20, 10, 199, 24, 16, 146, 36, 176, 78, 80, 20,
-			6, 195, 40, 84, 128, 72, 0, 11, 200, 77, 147, 139, 72, 245, 18, 60, 224, 20, 7, 196, 65, 34, 79, 56, 20, 7, 196, 28, 83, 5,
-			72, 20, 7, 196, 28, 19, 1, 72, 20, 7, 196, 64, 243, 1, 72, 20, 13, 68, 24, 244, 132, 36, 83, 114, 72, 6, 37, 0, 8, 0,
-			9, 198, 64, 195, 205, 8, 84, 133, 20, 9, 198, 64, 20, 129, 16, 84, 133, 20, 9, 198, 64, 19, 133, 48, 84, 133, 20, 9, 198, 52,
-			20, 131, 32, 84, 133, 20, 12, 201, 36, 225, 11, 4, 194, 213, 48, 84, 128, 20, 9, 198, 9, 35, 195, 32, 84, 133, 20, 9, 198, 5,
-			96, 78, 12, 84, 133, 20, 8, 197, 9, 32, 77, 36, 224, 20, 8, 197, 40, 245, 137, 4, 192, 20, 8, 197, 28, 83, 137, 4, 192, 20,
-			0, 9, 66, 33, 32, 107, 110, 34, 0, 25, 9, 198, 76, 176, 77, 24, 84, 128, 20, 9, 198, 76, 176, 76, 64, 84, 128, 20, 9, 198,
-			72, 82, 210, 20, 84, 128, 20, 9, 198, 72, 81, 149, 76, 84, 128, 20, 15, 140, 16, 18, 195, 166, 6, 1, 2, 18, 9, 11, 5, 18,
-			20, 9, 198, 64, 244, 148, 36, 84, 128, 20, 9, 198, 64, 194, 83, 76, 84, 128, 20, 9, 198, 44, 17, 13, 36, 84, 128, 20, 9, 198,
-			40, 243, 135, 48, 84, 128, 20, 9, 198, 36, 226, 84, 36, 84, 128, 20, 9, 198, 25, 32, 78, 44, 84, 128, 20, 9, 198, 21, 96, 75,
-			84, 84, 128, 20, 9, 198, 20, 209, 78, 16, 84, 128, 20, 9, 198, 20, 181, 137, 64, 84, 128, 20, 9, 198, 16, 83, 143, 80, 84, 128,
-			20, 9, 198, 5, 69, 1, 44, 84, 128, 20, 13, 202, 80, 84, 141, 61, 3, 1, 77, 66, 83, 44, 20, 13, 202, 76, 83, 147, 84, 19,
-			9, 77, 66, 83, 44, 20, 13, 202, 72, 85, 129, 56, 50, 9, 77, 66, 83, 44, 20, 13, 202, 56, 20, 131, 37, 52, 201, 77, 66, 83,
-			44, 20, 13, 202, 52, 243, 143, 64, 243, 9, 77, 66, 83, 44, 20, 13, 202, 48, 81, 201, 80, 147, 73, 77, 66, 83, 44, 20, 13, 202,
-			44, 192, 83, 76, 144, 201, 77, 66, 83, 44, 20, 13, 202, 24, 81, 5, 72, 19, 9, 77, 66, 83, 44, 20, 13, 202, 20, 180, 212, 72,
-			83, 73, 77, 66, 83, 44, 20, 9, 198, 80, 83, 132, 20, 228, 192, 20, 9, 198, 9, 33, 86, 36, 20, 128, 20, 9, 198, 5, 34, 201,
-			88, 20, 128, 20, 9, 198, 24, 21, 143, 72, 16, 128, 20, 0, 10, 67, 32, 21, 128, 107, 112, 40, 0, 14, 10, 199, 80, 18, 211, 5,
-			66, 79, 56, 20, 10, 199, 44, 148, 135, 37, 50, 83, 44, 20, 10, 199, 81, 33, 77, 84, 192, 78, 80, 20, 0, 9, 198, 8, 85, 1,
-			81, 35, 206, 20, 6, 195, 32, 19, 147, 76, 0, 12, 201, 81, 32, 78, 76, 49, 78, 16, 84, 128, 20, 12, 201, 76, 19, 69, 45, 50,
-			83, 80, 84, 128, 20, 12, 201, 65, 35, 208, 4, 112, 78, 16, 84, 128, 20, 12, 201, 64, 244, 21, 48, 20, 137, 76, 84, 128, 20, 12,
-			201, 64, 20, 212, 21, 84, 137, 76, 84, 128, 20, 12, 201, 64, 20, 140, 4, 209, 78, 80, 84, 128, 20, 8, 197, 49, 82, 210, 21, 32,
-			20, 12, 201, 44, 21, 1, 48, 241, 201, 76, 84, 128, 20, 12, 201, 36, 229, 5, 73, 5, 78, 28, 84, 128, 20, 12, 201, 36, 225, 15,
-			45, 68, 137, 56, 84, 128, 20, 12, 201, 36, 65, 79, 48, 241, 201, 76, 84, 128, 20, 12, 201, 20, 180, 212, 20, 228, 201, 88, 84, 128,
-			20, 12, 201, 20, 180, 212, 20, 212, 15, 72, 84, 128, 20, 12, 201, 4, 100, 137, 44, 19, 137, 76, 84, 128, 20, 12, 201, 44, 243, 77,
-			20, 228, 213, 72, 16, 128, 20, 0, 9, 198, 44, 195, 210, 61, 49, 64, 20, 9, 198, 24, 144, 146, 61, 49, 64, 20, 9, 198, 12, 243,
-			80, 61, 49, 64, 20, 13, 202, 24, 84, 148, 36, 194, 83, 5, 66, 79, 56, 20, 13, 202, 76, 19, 141, 5, 34, 78, 21, 50, 83, 44,
-			20, 13, 202, 45, 38, 80, 80, 241, 210, 4, 98, 83, 44, 20, 13, 138, 16, 18, 195, 166, 19, 9, 4, 5, 14, 20, 20, 9, 198, 36,
-			225, 15, 48, 83, 148, 20, 9, 198, 25, 32, 71, 52, 83, 148, 20, 9, 198, 20, 195, 203, 88, 83, 148, 20, 9, 198, 53, 84, 201, 44,
-			19, 148, 20, 9, 198, 48, 16, 143, 72, 19, 148, 20, 9, 198, 36, 115, 143, 72, 19, 148, 20, 9, 198, 17, 81, 76, 48, 19, 148, 20,
-			0, 14, 139, 16, 18, 195, 166, 20, 5, 14, 4, 5, 14, 20, 20, 10, 199, 72, 84, 15, 73, 64, 71, 20, 20, 10, 199, 21, 33, 77,
-			37, 64, 71, 20, 20, 0, 30, 68, 24, 244, 131, 20, 83, 114, 34, 89, 15, 4, 65, 35, 6, 89, 57, 118, 12, 34, 0, 81, 109, 97,
-			106, 101, 117, 114, 101, 32, 11, 200, 97, 147, 15, 29, 32, 70, 21, 32, 20, 11, 200, 96, 84, 143, 29, 32, 70, 21, 32, 20, 11, 200,
-			81, 148, 15, 29, 32, 70, 21, 32, 20, 11, 200, 64, 85, 9, 80, 147, 206, 21, 32, 20, 11, 200, 48, 149, 15, 29, 32, 70, 21, 32,
-			20, 7, 196, 81, 148, 143, 48, 20, 0, 16, 205, 84, 66, 210, 101, 53, 1, 48, 194, 83, 5, 66, 79, 56, 20, 9, 198, 45, 32, 68,
-			76, 84, 137, 20, 12, 201, 81, 32, 78, 76, 49, 78, 16, 83, 148, 20, 0, 9, 198, 24, 147, 1, 52, 83, 148, 20, 13, 202, 76, 50,
-			1, 48, 37, 82, 29, 64, 71, 20, 20, 0, 12, 201, 36, 212, 18, 61, 98, 83, 5, 67, 210, 20, 9, 198, 72, 83, 65, 56, 83, 147,
-			20, 9, 198, 36, 225, 15, 48, 83, 147, 20, 9, 198, 20, 195, 203, 88, 83, 147, 20, 9, 198, 49, 83, 73, 56, 19, 147, 20, 0, 7,
-			196, 77, 85, 21, 72, 20, 11, 200, 5, 85, 15, 44, 192, 86, 21, 32, 20, 9, 198, 77, 144, 129, 72, 149, 0, 20, 9, 198, 52, 81,
-			193, 8, 149, 0, 20, 9, 198, 44, 147, 15, 8, 149, 0, 20, 7, 196, 53, 84, 201, 44, 20, 7, 196, 4, 116, 129, 24, 20, 0, 12,
-			201, 81, 80, 133, 72, 181, 76, 61, 49, 64, 20, 12, 201, 64, 20, 129, 16, 83, 148, 61, 49, 64, 20, 12, 201, 5, 98, 84, 4, 210,
-			78, 61, 49, 64, 20, 0, 11, 200, 77, 68, 143, 8, 244, 203, 61, 0, 20, 9, 198, 8, 243, 77, 21, 50, 64, 20, 12, 201, 81, 32,
-			78, 76, 49, 78, 16, 83, 147, 20, 9, 198, 44, 20, 132, 36, 19, 0, 20, 0, 9, 134, 6, 1, 13, 195, 184, 19, 20, 11, 136, 4,
-			18, 195, 166, 19, 9, 14, 5, 20, 10, 199, 44, 243, 12, 37, 50, 79, 56, 20, 12, 201, 36, 211, 79, 72, 19, 9, 80, 85, 0, 20,
-			10, 199, 72, 81, 197, 56, 84, 133, 72, 20, 10, 199, 72, 81, 5, 24, 147, 133, 72, 20, 10, 199, 72, 80, 83, 77, 83, 69, 72, 20,
-			10, 199, 44, 243, 210, 16, 147, 133, 72, 20, 10, 199, 104, 20, 137, 77, 66, 83, 44, 20, 10, 199, 88, 84, 137, 77, 66, 83, 44, 20,
-			10, 199, 77, 147, 80, 5, 66, 83, 44, 20, 10, 199, 76, 245, 138, 21, 66, 83, 44, 20, 10, 199, 65, 35, 198, 21, 66, 83, 44, 20,
-			10, 199, 64, 20, 211, 37, 98, 83, 44, 20, 10, 199, 61, 51, 65, 56, 226, 83, 44, 20, 10, 199, 56, 85, 82, 61, 66, 83, 44, 20,
-			10, 199, 56, 20, 139, 61, 66, 83, 44, 20, 10, 199, 52, 19, 4, 37, 98, 83, 44, 20, 10, 199, 52, 17, 206, 21, 66, 83, 44, 20,
-			10, 199, 33, 148, 14, 61, 66, 83, 44, 20, 10, 199, 32, 84, 141, 21, 66, 83, 44, 20, 10, 199, 20, 115, 201, 77, 66, 83, 44, 20,
-			10, 199, 17, 147, 129, 77, 66, 83, 44, 20, 10, 199, 8, 19, 5, 5, 34, 83, 44, 20, 0, 7, 196, 65, 34, 79, 72, 20, 11, 200,
-			16, 21, 1, 52, 21, 9, 76, 176, 20, 9, 198, 52, 20, 207, 56, 149, 0, 20, 7, 196, 5, 67, 206, 36, 20, 7, 196, 4, 229, 9,
-			44, 20, 9, 198, 60, 35, 9, 28, 21, 0, 20, 7, 196, 28, 19, 1, 56, 21, 0, 8, 197, 24, 19, 148, 60, 208, 20, 8, 197, 72,
-			81, 5, 72, 144, 20, 8, 197, 44, 243, 147, 84, 208, 20, 9, 198, 64, 243, 25, 24, 243, 137, 20, 19, 70, 64, 84, 5, 72, 243, 137,
-			48, 36, 48, 13, 34, 6, 39, 50, 37, 0, 20, 8, 197, 16, 84, 15, 56, 144, 20, 0, 13, 202, 56, 85, 82, 61, 4, 217, 44, 243,
-			15, 28, 20, 9, 198, 8, 20, 213, 56, 148, 212, 20, 9, 198, 45, 84, 129, 80, 83, 0, 20, 13, 202, 81, 32, 78, 76, 194, 84, 80,
-			84, 133, 72, 20, 13, 202, 77, 3, 206, 80, 19, 137, 77, 66, 83, 44, 20, 13, 202, 72, 84, 208, 37, 32, 84, 61, 34, 83, 44, 20,
-			13, 202, 44, 243, 66, 36, 224, 84, 61, 34, 83, 44, 20, 13, 202, 32, 83, 9, 60, 49, 78, 81, 34, 83, 44, 20, 0, 29, 75, 44,
-			243, 134, 37, 35, 65, 56, 65, 82, 56, 80, 49, 114, 50, 83, 36, 34, 65, 6, 110, 50, 72, 108, 20, 50, 13, 0, 13, 138, 7, 12,
-			1, 13, 15, 21, 18, 195, 184, 19, 20, 12, 137, 19, 15, 21, 20, 5, 14, 195, 184, 18, 20, 12, 137, 13, 5, 4, 1, 12, 10, 195,
-			184, 18, 20, 10, 199, 49, 82, 211, 5, 66, 79, 56, 20, 10, 199, 36, 210, 84, 5, 66, 79, 56, 20, 10, 199, 24, 195, 212, 5, 66,
-			79, 56, 20, 10, 199, 16, 84, 197, 73, 66, 79, 56, 20, 10, 199, 4, 114, 84, 5, 66, 79, 56, 20, 12, 201, 77, 1, 67, 36, 19,
-			9, 80, 85, 0, 20, 12, 201, 64, 244, 21, 48, 20, 137, 80, 85, 0, 20, 12, 201, 56, 85, 84, 72, 19, 9, 80, 85, 0, 20, 12,
-			201, 53, 85, 1, 8, 147, 9, 80, 85, 0, 20, 10, 199, 81, 32, 75, 5, 52, 197, 72, 20, 10, 199, 44, 243, 134, 61, 35, 69, 72,
-			20, 10, 199, 44, 243, 134, 37, 35, 69, 72, 20, 10, 199, 8, 81, 18, 4, 113, 82, 36, 20, 10, 199, 52, 148, 212, 72, 242, 83, 44,
-			20, 10, 199, 44, 21, 75, 5, 50, 83, 44, 20, 10, 199, 4, 34, 200, 5, 50, 83, 44, 20, 10, 199, 4, 208, 129, 77, 48, 68, 20,
-			20, 0, 9, 134, 16, 15, 19, 195, 184, 18, 20, 9, 134, 13, 1, 12, 195, 184, 18, 20, 9, 198, 77, 64, 84, 37, 53, 0, 20, 9,
-			198, 21, 50, 193, 17, 35, 206, 20, 11, 200, 81, 32, 85, 52, 21, 9, 76, 176, 20, 11, 200, 65, 35, 203, 48, 149, 9, 76, 176, 20,
-			11, 200, 52, 21, 5, 52, 21, 9, 76, 176, 20, 11, 200, 16, 144, 75, 72, 149, 9, 76, 176, 20, 11, 200, 5, 34, 84, 52, 85, 9,
-			76, 176, 20, 11, 200, 4, 227, 210, 20, 181, 9, 76, 176, 20, 12, 201, 76, 19, 77, 20, 228, 213, 72, 149, 77, 20, 11, 200, 56, 81,
-			204, 36, 113, 78, 12, 80, 20, 7, 196, 45, 35, 193, 80, 20, 7, 196, 4, 115, 129, 80, 20, 0, 10, 135, 6, 15, 18, 8, 195, 184,
-			18, 20, 10, 135, 1, 13, 1, 20, 195, 184, 18, 20, 9, 198, 77, 69, 84, 80, 84, 137, 20, 9, 198, 8, 84, 133, 16, 84, 137, 20,
-			9, 198, 80, 131, 205, 37, 51, 69, 20, 9, 198, 41, 81, 1, 37, 51, 69, 20, 9, 198, 5, 34, 193, 37, 51, 69, 20, 10, 69, 8,
-			18, 76, 21, 144, 21, 0, 10, 0, 8, 198, 64, 84, 137, 44, 243, 128, 9, 198, 77, 147, 139, 72, 243, 128, 20, 9, 198, 52, 81, 193,
-			24, 243, 128, 20, 13, 202, 64, 20, 148, 36, 50, 80, 5, 66, 79, 56, 20, 13, 202, 44, 243, 147, 80, 83, 12, 5, 66, 79, 56, 20,
-			13, 202, 36, 229, 5, 73, 5, 78, 45, 66, 79, 56, 20, 15, 204, 44, 243, 147, 81, 37, 75, 80, 149, 137, 80, 85, 0, 20, 9, 198,
-			77, 84, 9, 57, 83, 64, 20, 17, 70, 60, 147, 19, 44, 147, 128, 114, 57, 55, 89, 49, 109, 50, 0, 20, 9, 198, 60, 97, 137, 12,
-			147, 128, 20, 13, 202, 88, 147, 204, 36, 226, 83, 80, 147, 132, 20, 20, 9, 198, 64, 84, 147, 36, 19, 128, 20, 16, 70, 33, 99, 210,
-			16, 19, 128, 84, 114, 72, 6, 110, 50, 0, 20, 0, 12, 137, 19, 16, 5, 4, 9, 20, 195, 184, 18, 20, 12, 137, 1, 14, 14, 15,
-			14, 3, 195, 184, 18, 20, 9, 198, 48, 85, 133, 72, 147, 135, 20, 9, 198, 48, 21, 133, 72, 147, 135, 20, 9, 198, 4, 65, 5, 72,
-			147, 135, 20, 10, 199, 64, 243, 25, 56, 243, 73, 20, 20, 10, 199, 21, 96, 78, 28, 83, 9, 20, 20, 10, 199, 53, 148, 212, 21, 34,
-			85, 52, 20, 10, 199, 45, 34, 84, 21, 34, 85, 52, 20, 10, 199, 44, 243, 131, 36, 194, 85, 52, 20, 10, 199, 16, 85, 84, 21, 34,
-			85, 52, 20, 10, 199, 88, 81, 197, 80, 16, 137, 48, 20, 0, 13, 138, 18, 5, 20, 15, 21, 3, 8, 195, 184, 18, 20, 13, 138, 16,
-			1, 19, 20, 9, 3, 8, 195, 184, 18, 20, 13, 138, 8, 5, 12, 19, 9, 14, 7, 195, 184, 18, 20, 7, 196, 64, 243, 5, 80, 20,
-			7, 196, 64, 19, 5, 80, 20, 9, 198, 12, 83, 12, 37, 53, 0, 20, 9, 198, 80, 20, 5, 81, 49, 82, 20, 9, 198, 72, 85, 129,
-			49, 81, 82, 20, 7, 196, 88, 148, 201, 80, 20, 7, 196, 76, 19, 1, 80, 20, 13, 72, 64, 144, 195, 4, 66, 76, 49, 144, 21, 0,
-			10, 0, 14, 139, 22, 5, 14, 20, 9, 12, 1, 20, 195, 184, 18, 20, 14, 139, 8, 25, 16, 14, 15, 20, 9, 19, 195, 184, 18, 20,
-			12, 201, 88, 147, 132, 36, 176, 84, 36, 243, 128, 20, 12, 201, 77, 80, 140, 36, 208, 84, 36, 243, 128, 20, 12, 201, 76, 81, 210, 20,
-			112, 84, 36, 243, 128, 20, 12, 201, 72, 84, 208, 37, 32, 84, 36, 243, 128, 20, 12, 201, 72, 83, 1, 45, 48, 84, 36, 243, 128, 20,
-			12, 201, 72, 82, 204, 4, 208, 84, 36, 243, 128, 20, 12, 201, 72, 82, 70, 36, 176, 84, 36, 243, 128, 20, 12, 201, 72, 81, 143, 72,
-			208, 84, 36, 243, 128, 20, 12, 201, 72, 80, 76, 37, 48, 84, 36, 243, 128, 20, 12, 201, 65, 80, 140, 36, 176, 84, 36, 243, 128, 20,
-			12, 201, 65, 35, 214, 60, 176, 84, 36, 243, 128, 20, 12, 201, 64, 84, 141, 85, 64, 84, 36, 243, 128, 20, 12, 201, 44, 244, 144, 61,
-			32, 84, 36, 243, 128, 20, 12, 201, 44, 243, 138, 84, 112, 84, 36, 243, 128, 20, 12, 201, 44, 243, 12, 60, 176, 84, 36, 243, 128, 20,
-			12, 201, 36, 228, 201, 57, 80, 84, 36, 243, 128, 20, 12, 201, 36, 225, 143, 72, 208, 84, 36, 243, 128, 20, 12, 201, 36, 212, 12, 36,
-			176, 84, 36, 243, 128, 20, 12, 201, 36, 211, 73, 29, 32, 84, 36, 243, 128, 20, 12, 201, 32, 16, 137, 81, 80, 84, 36, 243, 128, 20,
-			12, 201, 29, 32, 86, 37, 64, 84, 36, 243, 128, 20, 12, 201, 24, 197, 75, 81, 80, 84, 36, 243, 128, 20, 12, 201, 24, 16, 146, 36,
-			176, 84, 36, 243, 128, 20, 12, 201, 17, 148, 198, 84, 226, 212, 36, 243, 128, 20, 12, 201, 17, 84, 12, 36, 176, 84, 36, 243, 128, 20,
-			12, 201, 16, 84, 208, 21, 32, 84, 36, 243, 128, 20, 12, 201, 16, 84, 18, 37, 96, 84, 36, 243, 128, 20, 12, 201, 16, 83, 65, 72,
-			176, 84, 36, 243, 128, 20, 12, 201, 16, 82, 204, 5, 32, 84, 36, 243, 128, 20, 12, 201, 16, 82, 204, 4, 208, 84, 36, 243, 128, 20,
-			12, 201, 16, 81, 143, 72, 208, 84, 36, 243, 128, 20, 12, 201, 16, 81, 140, 61, 32, 84, 36, 243, 128, 20, 12, 201, 5, 52, 207, 12,
-			144, 84, 36, 243, 128, 20, 12, 201, 5, 4, 12, 36, 176, 84, 36, 243, 128, 20, 12, 201, 4, 178, 204, 4, 208, 84, 36, 243, 128, 20,
-			12, 201, 4, 97, 137, 72, 208, 84, 36, 243, 128, 20, 16, 205, 16, 83, 132, 72, 242, 210, 60, 227, 204, 60, 114, 83, 44, 20, 12, 201,
-			16, 84, 201, 16, 84, 129, 81, 83, 64, 20, 12, 201, 80, 84, 212, 36, 211, 206, 37, 83, 64, 20, 12, 201, 44, 243, 21, 52, 32, 82,
-			37, 83, 64, 20, 12, 201, 44, 19, 5, 56, 64, 82, 37, 83, 64, 20, 12, 201, 41, 81, 207, 76, 192, 86, 36, 83, 128, 20, 8, 197,
-			36, 229, 5, 57, 48, 20, 0, 15, 140, 4, 9, 19, 20, 18, 9, 2, 21, 20, 195, 184, 18, 20, 17, 70, 48, 144, 73, 76, 243, 128,
-			55, 37, 110, 89, 6, 114, 68, 0, 20, 17, 70, 8, 195, 213, 76, 243, 128, 71, 55, 40, 89, 6, 114, 68, 0, 20, 9, 198, 60, 181,
-			15, 28, 243, 128, 20, 9, 198, 64, 243, 25, 24, 243, 128, 20, 12, 201, 77, 84, 208, 20, 225, 5, 72, 147, 135, 20, 12, 201, 72, 80,
-			75, 80, 149, 133, 72, 147, 135, 20, 12, 201, 44, 243, 77, 20, 229, 5, 72, 147, 135, 20, 12, 201, 36, 225, 7, 72, 21, 133, 72, 147,
-			135, 20, 12, 201, 16, 148, 208, 21, 33, 197, 72, 147, 135, 20, 12, 201, 16, 148, 203, 60, 229, 5, 72, 147, 135, 20, 13, 202, 44, 243,
-			80, 61, 50, 84, 36, 243, 133, 48, 20, 9, 198, 64, 85, 9, 16, 147, 128, 20, 9, 198, 5, 68, 143, 64, 147, 128, 20, 9, 198, 44,
-			20, 21, 12, 147, 128, 20, 9, 198, 4, 100, 137, 44, 19, 128, 20, 9, 198, 65, 148, 143, 52, 19, 128, 21, 9, 198, 9, 32, 72, 52,
-			19, 128, 21, 0, 12, 201, 64, 242, 78, 80, 147, 12, 37, 53, 0, 20, 12, 137, 11, 22, 195, 166, 18, 21, 12, 5, 18, 20, 6, 195,
-			72, 83, 204, 20, 10, 199, 52, 17, 206, 21, 50, 85, 52, 20, 10, 199, 20, 180, 208, 48, 144, 201, 80, 20, 10, 199, 16, 144, 77, 21,
-			68, 129, 48, 20, 0, 15, 204, 81, 32, 78, 76, 98, 71, 85, 32, 84, 36, 243, 128, 20, 15, 204, 64, 84, 147, 60, 226, 70, 36, 176,
-			84, 36, 243, 128, 20, 15, 204, 52, 21, 5, 72, 144, 76, 37, 48, 84, 36, 243, 128, 20, 15, 204, 45, 38, 83, 80, 19, 12, 37, 48,
-			84, 36, 243, 128, 20, 15, 204, 16, 149, 133, 73, 50, 70, 36, 176, 84, 36, 243, 128, 20, 15, 204, 16, 145, 134, 21, 33, 78, 80, 144,
-			84, 36, 243, 128, 20, 15, 204, 5, 85, 5, 57, 66, 70, 36, 176, 84, 36, 243, 128, 20, 15, 140, 19, 21, 22, 5, 18, 195, 166, 14,
-			9, 20, 5, 20, 20, 7, 196, 80, 20, 133, 72, 20, 9, 198, 80, 16, 149, 37, 49, 82, 20, 9, 198, 73, 149, 13, 37, 49, 82, 20,
-			9, 198, 36, 228, 201, 57, 81, 82, 20, 9, 198, 5, 34, 193, 37, 49, 82, 20, 0, 9, 198, 77, 147, 66, 36, 244, 197, 20, 9, 198,
-			5, 3, 212, 20, 244, 197, 20, 9, 198, 16, 83, 65, 28, 241, 201, 20, 12, 201, 36, 229, 5, 72, 197, 68, 37, 83, 64, 20, 9, 198,
-			4, 229, 15, 57, 147, 73, 20, 8, 197, 77, 65, 82, 36, 192, 20, 6, 195, 64, 147, 206, 20, 8, 197, 52, 84, 137, 4, 224, 21, 8,
-			197, 77, 2, 82, 4, 192, 20, 0, 12, 201, 81, 32, 86, 21, 36, 197, 72, 147, 135, 20, 12, 201, 77, 64, 84, 36, 243, 133, 72, 147,
-			135, 20, 12, 201, 76, 81, 205, 20, 229, 5, 72, 147, 135, 20, 12, 201, 72, 83, 1, 80, 149, 133, 72, 147, 135, 20, 12, 201, 64, 145,
-			205, 20, 229, 5, 72, 147, 135, 20, 12, 201, 52, 243, 137, 80, 244, 133, 72, 147, 135, 20, 12, 201, 44, 243, 134, 84, 225, 5, 72, 147,
-			135, 20, 12, 201, 16, 81, 197, 56, 84, 133, 72, 147, 135, 20, 12, 201, 8, 241, 211, 80, 21, 133, 72, 147, 135, 20, 12, 201, 8, 147,
-			199, 72, 17, 133, 72, 147, 135, 20, 12, 201, 4, 48, 197, 48, 84, 133, 72, 147, 135, 20, 9, 198, 52, 20, 203, 36, 225, 76, 20, 9,
-			198, 37, 52, 129, 20, 194, 84, 20, 0, 27, 67, 73, 80, 128, 51, 6, 113, 71, 15, 114, 15, 89, 72, 6, 113, 71, 0, 82, 111, 103,
-			32, 115, 116, 117, 98, 32, 18, 207, 81, 32, 78, 77, 53, 66, 77, 64, 78, 80, 144, 84, 36, 243, 128, 20, 10, 199, 72, 21, 9, 32,
-			16, 133, 72, 20, 10, 199, 24, 82, 140, 4, 117, 9, 28, 20, 10, 199, 80, 244, 142, 37, 34, 83, 44, 20, 10, 199, 77, 147, 143, 65,
-			66, 83, 44, 20, 10, 199, 76, 243, 9, 77, 66, 83, 44, 20, 10, 199, 76, 82, 212, 21, 34, 83, 44, 20, 10, 199, 57, 81, 9, 77,
-			66, 83, 44, 20, 10, 199, 45, 84, 147, 61, 34, 83, 44, 20, 10, 199, 20, 179, 5, 45, 66, 83, 44, 20, 10, 199, 17, 148, 198, 5,
-			66, 83, 44, 20, 10, 199, 8, 20, 130, 5, 34, 83, 44, 20, 10, 199, 5, 67, 1, 57, 66, 83, 44, 20, 10, 199, 49, 83, 132, 20,
-			228, 197, 72, 20, 10, 199, 24, 82, 140, 4, 117, 9, 28, 20, 10, 199, 52, 19, 135, 20, 176, 78, 80, 20, 0, 29, 68, 16, 84, 133,
-			76, 72, 109, 12, 114, 89, 15, 49, 84, 112, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 9, 198, 72, 83, 9, 28,
-			147, 206, 20, 13, 138, 16, 18, 195, 166, 20, 5, 14, 4, 5, 18, 20, 7, 196, 4, 212, 5, 72, 20, 11, 200, 88, 81, 197, 80, 20,
-			137, 4, 224, 20, 7, 196, 40, 20, 1, 56, 20, 11, 200, 20, 53, 65, 16, 244, 137, 4, 224, 20, 9, 198, 76, 84, 135, 20, 229, 0,
-			20, 7, 196, 33, 84, 193, 72, 20, 11, 200, 37, 36, 129, 80, 147, 206, 4, 192, 20, 7, 196, 40, 84, 133, 76, 76, 13, 68, 16, 84,
-			133, 76, 72, 109, 12, 114, 89, 0, 72, 12, 3, 95, 49, 15, 83, 118, 34, 89, 72, 108, 0, 0, 8, 197, 28, 83, 149, 36, 224, 20,
-			9, 198, 65, 148, 143, 52, 19, 137, 20, 9, 198, 44, 18, 207, 24, 243, 137, 20, 8, 197, 36, 225, 9, 4, 224, 20, 8, 197, 8, 21,
-			137, 4, 224, 21, 12, 137, 16, 18, 195, 166, 7, 14, 1, 14, 20, 20, 0, 15, 66, 25, 128, 83, 114, 36, 81, 89, 36, 65, 48, 13,
-			55, 0, 9, 198, 80, 147, 139, 81, 84, 128, 20, 9, 198, 4, 113, 78, 81, 84, 128, 20, 13, 202, 76, 179, 204, 20, 209, 83, 80, 84,
-			133, 72, 20, 13, 202, 77, 84, 146, 20, 19, 9, 77, 66, 83, 44, 20, 13, 202, 77, 65, 82, 20, 244, 203, 61, 2, 83, 44, 20, 13,
-			202, 56, 85, 84, 72, 19, 9, 77, 66, 83, 44, 20, 13, 202, 56, 21, 21, 72, 19, 9, 77, 66, 83, 44, 20, 13, 202, 48, 144, 133,
-			72, 19, 9, 77, 66, 83, 44, 20, 13, 202, 44, 243, 139, 72, 85, 9, 77, 66, 83, 44, 20, 13, 202, 44, 243, 80, 36, 192, 84, 61,
-			34, 83, 44, 20, 13, 202, 44, 243, 15, 72, 147, 69, 81, 34, 83, 44, 20, 13, 202, 40, 245, 82, 56, 19, 9, 77, 66, 83, 44, 20,
-			13, 202, 24, 192, 71, 20, 195, 1, 57, 66, 83, 44, 20, 13, 202, 9, 84, 133, 5, 82, 210, 5, 66, 83, 44, 20, 13, 202, 8, 83,
-			12, 21, 68, 137, 77, 66, 83, 44, 20, 13, 202, 4, 36, 207, 49, 85, 9, 77, 66, 83, 44, 20, 9, 198, 52, 146, 210, 60, 194, 84,
-			20, 9, 198, 44, 243, 80, 61, 50, 84, 20, 0, 10, 199, 44, 243, 150, 20, 181, 15, 72, 20, 10, 199, 44, 243, 148, 4, 181, 15, 72,
-			20, 12, 201, 77, 80, 147, 80, 149, 21, 80, 147, 206, 20, 12, 201, 65, 35, 203, 48, 19, 65, 80, 147, 206, 20, 12, 201, 44, 20, 9,
-			81, 83, 1, 80, 147, 206, 20, 12, 201, 5, 52, 201, 52, 147, 1, 80, 147, 206, 20, 12, 201, 4, 208, 76, 28, 19, 65, 80, 147, 206,
-			20, 12, 201, 4, 178, 213, 53, 83, 1, 80, 147, 206, 20, 10, 199, 56, 243, 65, 16, 148, 197, 72, 20, 10, 199, 4, 194, 193, 48, 148,
-			197, 72, 20, 10, 199, 77, 80, 147, 60, 226, 83, 44, 20, 10, 199, 77, 1, 75, 84, 192, 78, 80, 20, 10, 67, 16, 145, 192, 72, 35,
-			57, 0, 76, 10, 3, 226, 130, 172, 36, 40, 34, 39, 0, 0, 17, 142, 14, 195, 166, 19, 20, 11, 15, 13, 13, 1, 14, 4, 5, 18,
-			20, 11, 200, 64, 20, 129, 29, 80, 89, 4, 224, 20, 0, 8, 197, 76, 86, 9, 77, 64, 20, 8, 197, 41, 84, 137, 77, 64, 20, 8,
-			197, 64, 147, 206, 21, 32, 20, 16, 205, 76, 83, 147, 5, 66, 79, 56, 19, 9, 77, 66, 83, 44, 20, 8, 197, 24, 19, 12, 37, 64,
-			20, 8, 197, 36, 226, 84, 5, 32, 20, 8, 197, 32, 82, 212, 5, 32, 20, 9, 198, 20, 228, 201, 48, 17, 197, 20, 11, 70, 32, 243,
-			69, 64, 17, 197, 21, 0, 10, 0, 22, 67, 48, 145, 197, 55, 37, 13, 15, 49, 39, 89, 72, 13, 0, 81, 107, 111, 115, 116, 101, 32,
-			17, 67, 48, 145, 197, 55, 37, 13, 15, 89, 114, 0, 81, 115, 195, 165, 32, 9, 198, 9, 35, 203, 4, 65, 64, 20, 12, 137, 16, 18,
-			195, 166, 7, 14, 1, 14, 19, 20, 6, 195, 64, 17, 197, 20, 0, 10, 199, 28, 84, 141, 4, 226, 83, 80, 20, 12, 201, 52, 19, 137,
-			65, 83, 1, 80, 147, 206, 20, 10, 199, 89, 84, 132, 21, 34, 78, 28, 20, 10, 199, 80, 245, 80, 21, 34, 78, 28, 20, 10, 199, 53,
-			83, 132, 21, 34, 78, 28, 20, 10, 199, 44, 16, 200, 21, 34, 78, 28, 20, 10, 199, 25, 83, 132, 21, 34, 78, 28, 20, 10, 199, 21,
-			35, 196, 21, 34, 78, 28, 20, 10, 199, 20, 66, 84, 21, 34, 78, 28, 20, 10, 199, 16, 146, 212, 21, 34, 78, 28, 20, 9, 198, 80,
-			82, 83, 80, 148, 203, 20, 9, 198, 61, 33, 193, 56, 148, 203, 20, 9, 198, 44, 84, 149, 8, 148, 203, 20, 9, 198, 16, 82, 83, 80,
-			148, 203, 20, 9, 198, 12, 20, 137, 8, 148, 203, 20, 10, 199, 5, 53, 18, 60, 227, 205, 36, 20, 10, 199, 5, 32, 137, 81, 32, 71,
-			20, 20, 10, 67, 40, 81, 192, 57, 35, 37, 0, 76, 0, 29, 68, 12, 243, 133, 100, 6, 49, 39, 40, 50, 37, 15, 6, 35, 57, 55,
-			108, 50, 72, 0, 81, 105, 115, 108, 97, 110, 100, 32, 11, 200, 72, 85, 129, 56, 50, 9, 77, 64, 20, 11, 200, 9, 32, 84, 76, 50,
-			9, 77, 64, 20, 11, 200, 36, 229, 5, 57, 50, 86, 21, 32, 20, 11, 200, 52, 20, 147, 44, 19, 12, 5, 64, 20, 9, 198, 12, 83,
-			12, 60, 96, 78, 21, 10, 3, 95, 50, 15, 110, 50, 13, 50, 0, 0, 12, 201, 60, 213, 133, 45, 51, 5, 48, 145, 192, 20, 12, 201,
-			48, 19, 132, 24, 198, 71, 80, 145, 192, 20, 8, 197, 76, 179, 204, 5, 32, 20, 8, 197, 28, 145, 193, 57, 64, 20, 0, 6, 194, 12,
-			240, 17, 42, 9, 198, 52, 20, 203, 36, 225, 64, 20, 13, 202, 77, 68, 149, 45, 69, 82, 4, 194, 83, 80, 20, 13, 202, 36, 225, 21,
-			77, 68, 137, 4, 194, 83, 80, 20, 13, 202, 88, 17, 193, 8, 243, 132, 21, 34, 78, 28, 20, 13, 202, 8, 19, 132, 21, 35, 204, 21,
-			34, 78, 28, 20, 12, 137, 19, 1, 13, 8, 195, 184, 18, 9, 7, 20, 9, 198, 4, 228, 197, 48, 145, 192, 20, 12, 201, 77, 147, 12,
-			60, 114, 83, 80, 148, 203, 20, 12, 201, 64, 243, 9, 80, 243, 15, 28, 148, 203, 20, 12, 201, 21, 50, 193, 80, 243, 15, 28, 148, 203,
-			20, 9, 198, 4, 225, 204, 60, 98, 76, 20, 9, 198, 20, 210, 84, 80, 83, 148, 20, 9, 198, 53, 148, 137, 4, 65, 64, 20, 9, 198,
-			76, 147, 85, 48, 19, 148, 20, 13, 70, 41, 81, 197, 52, 83, 148, 21, 102, 114, 0, 10, 0, 12, 201, 44, 243, 77, 84, 226, 75, 5,
-			67, 210, 20, 10, 199, 64, 197, 82, 4, 194, 83, 80, 20, 10, 199, 29, 82, 84, 5, 34, 83, 80, 20, 10, 199, 12, 83, 66, 4, 194,
-			83, 80, 20, 13, 138, 25, 14, 11, 22, 195, 166, 18, 4, 9, 7, 20, 13, 138, 20, 18, 15, 22, 195, 166, 18, 4, 9, 7, 20, 13,
-			138, 16, 195, 165, 12, 9, 4, 5, 12, 9, 7, 20, 13, 138, 12, 5, 20, 6, 195, 166, 18, 4, 9, 7, 20, 9, 198, 76, 83, 73,
-			80, 148, 203, 20, 9, 198, 4, 224, 82, 44, 148, 203, 20, 9, 198, 16, 146, 203, 20, 66, 75, 20, 0, 9, 198, 72, 17, 9, 5, 67,
-			210, 20, 11, 200, 81, 32, 78, 77, 3, 206, 21, 32, 20, 11, 200, 72, 83, 79, 57, 53, 18, 21, 32, 20, 7, 196, 28, 148, 133, 72,
-			20, 11, 200, 16, 83, 79, 57, 53, 18, 21, 32, 20, 14, 139, 19, 20, 9, 12, 6, 195, 166, 18, 4, 9, 7, 20, 14, 139, 15, 13,
-			19, 20, 195, 184, 4, 5, 12, 9, 7, 20, 14, 139, 8, 21, 19, 11, 22, 195, 166, 18, 4, 9, 7, 20, 14, 139, 7, 12, 15, 18,
-			22, 195, 166, 18, 4, 9, 7, 20, 14, 139, 5, 12, 19, 11, 22, 195, 166, 18, 4, 9, 7, 20, 14, 139, 1, 14, 19, 20, 195, 184,
-			4, 5, 12, 9, 7, 20, 9, 198, 56, 81, 210, 60, 145, 0, 20, 9, 198, 81, 84, 141, 4, 194, 78, 20, 7, 196, 76, 244, 129, 56,
-			20, 7, 196, 8, 83, 137, 56, 20, 11, 200, 16, 84, 195, 20, 225, 5, 57, 64, 20, 7, 196, 44, 244, 129, 56, 21, 11, 200, 44, 243,
-			131, 21, 37, 1, 57, 64, 20, 11, 200, 44, 243, 66, 5, 69, 1, 57, 64, 20, 11, 200, 4, 194, 77, 20, 229, 1, 57, 64, 20, 0,
-			8, 197, 16, 144, 76, 60, 112, 20, 8, 197, 44, 16, 137, 56, 80, 20, 8, 197, 41, 83, 5, 72, 144, 20, 15, 140, 13, 195, 166, 18,
-			11, 22, 195, 166, 18, 4, 9, 7, 20, 12, 201, 44, 81, 19, 60, 211, 69, 48, 145, 192, 20, 12, 201, 29, 81, 4, 60, 211, 69, 48,
-			145, 192, 20, 12, 201, 24, 244, 142, 20, 211, 69, 48, 145, 192, 20, 15, 204, 64, 20, 148, 36, 181, 76, 5, 34, 83, 80, 148, 203, 20,
-			15, 204, 56, 243, 139, 60, 225, 143, 72, 210, 83, 80, 148, 203, 20, 8, 197, 52, 19, 137, 76, 176, 20, 9, 198, 64, 197, 84, 60, 226,
-			69, 20, 16, 69, 76, 19, 1, 52, 144, 89, 110, 55, 6, 110, 65, 37, 0, 20, 8, 197, 52, 85, 18, 36, 176, 20, 8, 197, 64, 243,
-			9, 12, 80, 20, 8, 197, 64, 243, 65, 16, 80, 20, 0, 9, 198, 61, 5, 9, 52, 148, 212, 20, 9, 198, 32, 21, 129, 72, 148, 212,
-			20, 9, 198, 4, 181, 129, 72, 148, 212, 20, 12, 137, 195, 166, 4, 18, 21, 5, 12, 9, 7, 20, 16, 141, 22, 5, 12, 1, 14, 19,
-			20, 195, 166, 14, 4, 9, 7, 20, 12, 201, 88, 83, 133, 72, 243, 15, 28, 148, 203, 20, 12, 201, 61, 35, 137, 80, 243, 15, 28, 148,
-			203, 20, 12, 201, 60, 67, 206, 80, 243, 15, 28, 148, 203, 20, 12, 201, 60, 49, 65, 56, 243, 15, 28, 148, 203, 20, 12, 201, 52, 148,
-			193, 57, 68, 143, 64, 148, 203, 20, 12, 201, 33, 145, 18, 61, 53, 1, 80, 148, 203, 20, 12, 201, 28, 192, 67, 36, 243, 15, 28, 148,
-			203, 20, 12, 201, 24, 147, 1, 57, 68, 143, 64, 148, 203, 20, 12, 201, 24, 83, 73, 56, 243, 15, 28, 148, 203, 20, 9, 198, 5, 49,
-			80, 80, 146, 192, 20, 0, 22, 71, 64, 244, 212, 36, 195, 15, 56, 48, 4, 114, 89, 72, 37, 55, 57, 6, 114, 68, 0, 20, 10, 199,
-			76, 82, 212, 36, 243, 133, 72, 20, 10, 199, 5, 85, 15, 72, 148, 197, 72, 20, 10, 199, 29, 34, 78, 4, 117, 9, 28, 20, 9, 198,
-			28, 83, 89, 80, 194, 71, 20, 9, 198, 20, 225, 143, 48, 66, 71, 20, 10, 199, 77, 147, 148, 21, 66, 83, 44, 20, 10, 199, 77, 83,
-			142, 37, 66, 83, 44, 20, 10, 199, 76, 242, 210, 5, 66, 83, 44, 20, 10, 199, 76, 83, 65, 57, 66, 83, 44, 20, 10, 199, 72, 243,
-			65, 57, 66, 83, 44, 20, 10, 199, 65, 54, 75, 61, 66, 83, 44, 20, 10, 199, 61, 32, 84, 61, 34, 83, 44, 20, 10, 199, 52, 21,
-			82, 37, 66, 83, 44, 20, 10, 199, 52, 19, 201, 77, 66, 83, 44, 20, 10, 199, 49, 147, 70, 5, 66, 83, 44, 20, 10, 199, 48, 241,
-			201, 77, 66, 83, 44, 20, 10, 199, 44, 194, 77, 5, 66, 83, 44, 20, 10, 199, 21, 96, 83, 61, 34, 83, 44, 20, 10, 199, 20, 179,
-			9, 65, 66, 83, 44, 20, 10, 199, 16, 241, 205, 5, 66, 83, 44, 20, 10, 199, 16, 84, 208, 61, 66, 83, 44, 20, 10, 199, 5, 37,
-			9, 77, 66, 83, 44, 20, 10, 199, 5, 35, 205, 5, 66, 83, 44, 20, 12, 201, 28, 19, 12, 37, 83, 79, 96, 145, 0, 20, 10, 199,
-			65, 32, 71, 52, 21, 9, 44, 20, 10, 199, 64, 244, 142, 60, 116, 129, 24, 20, 10, 199, 29, 34, 78, 4, 117, 9, 28, 20, 0, 9,
-			134, 20, 18, 9, 195, 184, 18, 20, 11, 200, 52, 85, 1, 48, 197, 82, 28, 144, 20, 9, 198, 64, 83, 148, 4, 115, 206, 20, 7, 196,
-			5, 35, 69, 72, 20, 14, 139, 22, 9, 4, 20, 12, 195, 184, 6, 20, 9, 7, 20, 18, 143, 16, 5, 20, 5, 18, 1, 14, 19, 20,
-			195, 166, 14, 4, 9, 7, 20, 14, 139, 1, 14, 6, 195, 166, 7, 20, 5, 12, 9, 7, 20, 11, 200, 80, 83, 5, 52, 21, 9, 76,
-			176, 20, 11, 200, 76, 241, 15, 52, 149, 9, 76, 176, 20, 11, 200, 64, 225, 85, 52, 21, 9, 76, 176, 20, 11, 200, 52, 243, 143, 48,
-			149, 9, 76, 176, 20, 11, 200, 52, 85, 15, 57, 147, 73, 76, 176, 20, 11, 200, 29, 147, 78, 5, 53, 9, 76, 176, 20, 11, 200, 29,
-			32, 77, 52, 21, 9, 76, 176, 20, 11, 200, 25, 148, 201, 85, 33, 201, 76, 176, 20, 11, 200, 24, 195, 210, 37, 53, 9, 76, 176, 20,
-			11, 200, 24, 147, 15, 76, 241, 137, 76, 176, 20, 11, 200, 20, 225, 82, 28, 85, 9, 76, 176, 20, 11, 200, 8, 147, 199, 72, 17, 137,
-			76, 176, 20, 11, 200, 8, 16, 153, 48, 243, 137, 76, 176, 20, 11, 200, 4, 99, 210, 37, 53, 9, 76, 176, 20, 12, 3, 95, 51, 15,
-			47, 34, 109, 72, 57, 108, 0, 8, 4, 95, 15, 18, 4, 108, 0, 0, 11, 136, 1, 13, 15, 21, 18, 195, 184, 19, 20, 15, 140, 14,
-			5, 4, 6, 195, 166, 12, 4, 5, 12, 9, 7, 20, 15, 140, 6, 15, 18, 14, 195, 166, 18, 13, 5, 12, 9, 7, 20, 12, 201, 80,
-			83, 5, 60, 195, 199, 37, 50, 192, 20, 12, 201, 80, 82, 206, 60, 195, 199, 37, 50, 192, 20, 12, 201, 56, 85, 82, 60, 195, 199, 37,
-			50, 192, 20, 12, 201, 52, 244, 134, 60, 195, 199, 37, 50, 192, 20, 12, 201, 52, 85, 18, 60, 195, 199, 37, 50, 192, 20, 16, 69, 52,
-			83, 137, 76, 176, 65, 36, 50, 6, 37, 89, 49, 0, 20, 9, 198, 52, 17, 206, 60, 194, 69, 20, 12, 201, 65, 35, 194, 48, 83, 65,
-			80, 146, 192, 20, 12, 201, 44, 148, 143, 65, 32, 75, 80, 146, 192, 20, 8, 197, 52, 19, 9, 12, 80, 20, 12, 201, 20, 180, 212, 20,
-			212, 15, 72, 19, 0, 20, 0, 9, 198, 61, 33, 193, 56, 148, 212, 20, 18, 70, 4, 181, 129, 72, 83, 0, 112, 49, 84, 112, 51, 6,
-			111, 55, 0, 20, 13, 202, 72, 83, 1, 80, 149, 137, 77, 66, 83, 44, 20, 13, 202, 65, 35, 214, 60, 176, 84, 61, 34, 83, 44, 20,
-			13, 202, 64, 20, 129, 16, 145, 205, 5, 66, 83, 44, 20, 13, 202, 48, 147, 12, 20, 20, 201, 5, 66, 83, 44, 20, 13, 202, 44, 19,
-			11, 84, 192, 84, 61, 34, 83, 44, 20, 13, 202, 36, 228, 208, 37, 32, 84, 61, 34, 83, 44, 20, 13, 202, 36, 225, 143, 72, 208, 84,
-			61, 34, 83, 44, 20, 13, 202, 32, 245, 20, 20, 229, 15, 81, 66, 83, 44, 20, 13, 202, 16, 144, 71, 72, 19, 77, 5, 66, 83, 44,
-			20, 13, 202, 16, 82, 204, 5, 32, 84, 61, 34, 83, 44, 20, 13, 202, 8, 243, 19, 40, 85, 137, 77, 66, 83, 44, 20, 13, 202, 5,
-			34, 83, 80, 242, 210, 5, 66, 83, 44, 20, 13, 202, 4, 180, 207, 56, 243, 69, 81, 34, 83, 44, 20, 9, 198, 80, 83, 65, 80, 146,
-			192, 20, 9, 198, 4, 181, 83, 80, 146, 192, 20, 9, 198, 64, 21, 18, 60, 224, 84, 20, 0, 10, 199, 4, 66, 149, 56, 181, 21, 72,
-			20, 10, 199, 88, 148, 201, 80, 21, 15, 72, 20, 10, 199, 85, 53, 82, 64, 21, 15, 72, 20, 12, 201, 36, 225, 137, 49, 68, 129, 80,
-			147, 206, 20, 12, 201, 36, 225, 15, 64, 84, 129, 80, 147, 206, 20, 12, 201, 16, 148, 212, 72, 144, 149, 80, 147, 206, 20, 12, 201, 16,
-			83, 149, 57, 66, 65, 80, 147, 206, 20, 12, 201, 36, 195, 15, 100, 19, 9, 80, 85, 0, 20, 12, 201, 5, 51, 195, 36, 19, 9, 80,
-			85, 0, 20, 10, 199, 88, 242, 193, 48, 148, 197, 72, 20, 14, 203, 8, 244, 148, 5, 82, 212, 36, 243, 133, 72, 80, 20, 21, 146, 13,
-			9, 19, 21, 14, 4, 5, 12, 19, 5, 19, 22, 195, 166, 18, 4, 9, 7, 20, 14, 203, 44, 243, 148, 72, 20, 21, 56, 181, 9, 76,
-			176, 20, 10, 199, 4, 208, 146, 61, 50, 83, 44, 20, 10, 199, 77, 147, 143, 57, 147, 73, 44, 20, 12, 201, 44, 243, 135, 48, 243, 69,
-			72, 21, 0, 20, 0, 11, 200, 32, 84, 144, 21, 67, 204, 60, 112, 20, 9, 198, 32, 20, 144, 37, 53, 0, 20, 11, 200, 76, 20, 129,
-			12, 83, 137, 76, 176, 20, 11, 200, 64, 144, 78, 37, 53, 9, 76, 176, 20, 11, 200, 56, 18, 86, 37, 53, 9, 76, 176, 20, 11, 200,
-			52, 243, 143, 24, 243, 137, 76, 176, 20, 15, 204, 44, 20, 129, 45, 65, 82, 60, 195, 199, 37, 50, 192, 20, 11, 200, 32, 85, 82, 37,
-			53, 9, 76, 176, 20, 11, 200, 32, 81, 197, 52, 243, 137, 76, 176, 20, 11, 200, 24, 21, 86, 37, 53, 9, 76, 176, 20, 11, 200, 8,
-			18, 203, 4, 229, 9, 76, 176, 20, 11, 200, 4, 116, 143, 56, 243, 73, 76, 176, 20, 11, 200, 65, 34, 86, 36, 193, 71, 36, 80, 20,
-			7, 196, 52, 84, 137, 80, 20, 11, 200, 80, 82, 206, 60, 180, 129, 80, 144, 20, 11, 200, 21, 128, 197, 48, 193, 78, 12, 80, 20, 7,
-			196, 76, 83, 129, 80, 20, 7, 196, 64, 20, 129, 80, 20, 7, 196, 52, 244, 129, 48, 20, 7, 196, 44, 244, 129, 48, 20, 0, 16, 205,
-			44, 243, 147, 81, 37, 75, 80, 149, 137, 77, 66, 83, 44, 20, 16, 205, 20, 180, 200, 36, 34, 84, 36, 243, 137, 77, 66, 83, 44, 20,
-			0, 9, 198, 80, 83, 5, 24, 243, 128, 20, 15, 204, 36, 229, 5, 57, 66, 79, 56, 19, 9, 80, 85, 0, 20, 12, 201, 88, 83, 2,
-			20, 128, 71, 20, 194, 71, 20, 12, 201, 77, 68, 129, 25, 50, 217, 48, 66, 71, 20, 12, 201, 32, 245, 133, 17, 48, 71, 20, 194, 71,
-			20, 9, 198, 41, 83, 135, 36, 19, 128, 20, 9, 198, 72, 19, 65, 16, 19, 128, 21, 0, 12, 137, 9, 13, 16, 15, 18, 20, 195, 184,
-			18, 20, 12, 201, 44, 243, 147, 81, 34, 75, 80, 147, 206, 20, 12, 201, 36, 225, 140, 4, 211, 65, 80, 147, 206, 20, 12, 201, 5, 37,
-			9, 45, 83, 1, 80, 147, 206, 20, 14, 203, 85, 66, 76, 37, 64, 82, 37, 53, 9, 76, 176, 20, 14, 203, 81, 34, 71, 60, 227, 205,
-			21, 68, 137, 76, 176, 20, 14, 203, 44, 192, 85, 77, 68, 143, 24, 240, 137, 76, 176, 20, 14, 203, 20, 181, 137, 48, 144, 146, 37, 53,
-			9, 76, 176, 20, 15, 140, 16, 195, 166, 4, 1, 7, 15, 7, 9, 11, 21, 13, 20, 10, 199, 76, 147, 5, 57, 66, 85, 52, 20, 10,
-			199, 61, 32, 84, 61, 34, 85, 52, 20, 10, 199, 32, 84, 130, 5, 34, 85, 52, 20, 10, 199, 88, 242, 193, 48, 148, 205, 20, 20, 10,
-			199, 56, 243, 65, 16, 148, 205, 20, 20, 10, 199, 45, 98, 69, 80, 148, 205, 20, 20, 10, 199, 32, 85, 5, 72, 241, 137, 48, 20, 12,
-			137, 195, 165, 18, 8, 21, 19, 9, 1, 14, 20, 10, 199, 44, 243, 210, 16, 147, 129, 80, 20, 9, 198, 52, 20, 131, 37, 0, 78, 21,
-			10, 199, 84, 226, 86, 21, 36, 193, 48, 20, 10, 199, 28, 19, 15, 65, 0, 68, 20, 20, 8, 67, 73, 83, 128, 21, 0, 10, 0, 13,
-			138, 19, 11, 195, 166, 12, 19, 11, 195, 184, 18, 20, 7, 196, 8, 17, 21, 80, 20, 7, 196, 76, 243, 5, 80, 20, 9, 198, 85, 67,
-			208, 37, 53, 0, 20, 9, 198, 56, 244, 132, 37, 53, 0, 20, 9, 198, 76, 50, 1, 81, 65, 82, 20, 9, 198, 44, 243, 12, 4, 33,
-			82, 20, 9, 198, 20, 160, 75, 84, 193, 82, 20, 9, 198, 16, 85, 129, 49, 81, 82, 20, 11, 200, 4, 208, 137, 88, 19, 5, 57, 48,
-			20, 0, 9, 198, 4, 225, 201, 88, 84, 137, 20, 0, 5, 194, 36, 64, 17, 12, 201, 64, 84, 211, 36, 210, 83, 80, 148, 203, 20, 12,
-			201, 52, 243, 143, 80, 82, 83, 80, 148, 203, 20, 12, 201, 52, 243, 129, 72, 178, 83, 80, 148, 203, 20, 12, 201, 24, 19, 1, 56, 114,
-			83, 80, 148, 203, 20, 12, 201, 16, 81, 129, 37, 66, 83, 80, 148, 203, 20, 13, 202, 60, 36, 197, 73, 96, 84, 61, 34, 85, 52, 20,
-			13, 202, 72, 81, 204, 20, 209, 78, 80, 84, 133, 80, 20, 13, 202, 4, 194, 207, 32, 243, 9, 76, 84, 133, 80, 20, 0, 19, 71, 12,
-			129, 86, 72, 243, 5, 80, 89, 57, 109, 84, 34, 39, 55, 6, 36, 0, 10, 199, 24, 192, 71, 20, 243, 5, 80, 20, 10, 199, 64, 83,
-			148, 4, 116, 129, 52, 20, 10, 199, 32, 82, 211, 4, 116, 129, 52, 20, 12, 201, 45, 35, 206, 60, 195, 199, 37, 49, 82, 20, 9, 198,
-			21, 36, 129, 80, 148, 203, 20, 9, 198, 9, 37, 78, 20, 148, 203, 20, 10, 199, 64, 193, 66, 37, 48, 201, 80, 20, 10, 199, 21, 2,
-			83, 44, 244, 1, 48, 20, 0, 9, 198, 77, 83, 6, 60, 225, 82, 20, 7, 196, 64, 20, 133, 72, 20, 9, 198, 33, 145, 18, 5, 162,
-			78, 20, 7, 196, 4, 116, 129, 72, 20, 13, 72, 8, 80, 67, 32, 37, 71, 29, 144, 21, 0, 10, 0, 9, 198, 80, 245, 82, 57, 84,
-			133, 20, 9, 198, 76, 179, 5, 72, 244, 197, 20, 9, 198, 76, 176, 66, 36, 244, 197, 20, 8, 197, 16, 144, 75, 60, 224, 20, 8, 197,
-			88, 148, 201, 60, 224, 20, 8, 197, 16, 147, 216, 36, 64, 20, 8, 197, 48, 21, 18, 36, 224, 20, 8, 197, 12, 149, 18, 36, 224, 20,
-			9, 198, 80, 83, 5, 24, 243, 137, 20, 8, 197, 65, 35, 198, 36, 192, 20, 8, 197, 88, 84, 130, 4, 192, 20, 0, 12, 201, 24, 147,
-			129, 57, 50, 69, 72, 147, 135, 20, 12, 201, 24, 147, 15, 76, 241, 133, 72, 147, 135, 20, 9, 198, 80, 21, 15, 88, 84, 128, 20, 9,
-			198, 76, 242, 71, 56, 84, 128, 20, 9, 198, 72, 85, 9, 72, 84, 128, 20, 9, 198, 20, 210, 71, 72, 84, 128, 20, 9, 198, 16, 81,
-			137, 48, 84, 128, 20, 9, 198, 16, 80, 149, 80, 84, 128, 20, 9, 198, 12, 128, 83, 76, 84, 128, 20, 9, 198, 8, 243, 137, 80, 84,
-			128, 20, 9, 198, 65, 35, 212, 60, 179, 204, 20, 12, 201, 36, 211, 85, 56, 243, 15, 28, 148, 203, 20, 12, 201, 32, 84, 143, 77, 68,
-			129, 80, 148, 203, 20, 12, 201, 20, 118, 80, 80, 243, 15, 28, 148, 203, 20, 9, 198, 76, 21, 5, 48, 194, 84, 20, 0, 10, 199, 72,
-			80, 197, 57, 50, 79, 56, 20, 10, 199, 36, 226, 204, 85, 50, 79, 56, 20, 10, 199, 44, 243, 150, 21, 36, 197, 72, 20, 10, 199, 44,
-			243, 147, 20, 180, 133, 72, 20, 10, 199, 12, 149, 137, 48, 148, 197, 72, 20, 10, 199, 77, 83, 77, 5, 34, 83, 44, 20, 10, 199, 76,
-			177, 77, 5, 66, 83, 44, 20, 10, 199, 32, 148, 212, 61, 34, 83, 44, 20, 10, 199, 20, 195, 9, 65, 66, 83, 44, 20, 10, 199, 52,
-			19, 12, 61, 32, 193, 56, 20, 0, 22, 72, 44, 243, 134, 37, 35, 65, 56, 64, 49, 114, 50, 83, 36, 34, 65, 6, 110, 50, 72, 0,
-			10, 200, 64, 19, 143, 65, 66, 75, 60, 224, 11, 200, 65, 35, 198, 21, 52, 201, 60, 224, 20, 11, 200, 44, 243, 139, 49, 84, 201, 60,
-			224, 20, 11, 200, 44, 243, 134, 21, 52, 201, 60, 224, 20, 11, 200, 20, 180, 208, 48, 244, 201, 60, 224, 20, 7, 196, 44, 20, 5, 72,
-			20, 7, 196, 48, 21, 9, 56, 20, 7, 196, 48, 21, 9, 56, 20, 9, 198, 77, 2, 82, 4, 229, 0, 20, 7, 196, 56, 245, 1, 8,
-			20, 11, 3, 95, 53, 15, 83, 109, 65, 47, 108, 0, 0, 9, 198, 9, 35, 195, 33, 84, 133, 20, 9, 198, 8, 83, 133, 24, 144, 197,
-			67, 8, 197, 44, 20, 212, 20, 192, 20, 8, 197, 44, 20, 148, 20, 192, 20, 8, 197, 44, 20, 212, 20, 192, 20, 8, 197, 44, 20, 148,
-			20, 192, 20, 12, 201, 72, 83, 1, 80, 149, 137, 76, 84, 128, 20, 12, 201, 21, 2, 71, 72, 17, 137, 44, 84, 128, 20, 9, 198, 20,
-			180, 197, 28, 84, 197, 20, 8, 197, 24, 195, 210, 36, 224, 20, 9, 198, 8, 83, 133, 24, 144, 197, 20, 8, 197, 76, 244, 18, 4, 224,
-			21, 0, 5, 194, 37, 64, 17, 13, 202, 77, 68, 143, 8, 244, 203, 61, 2, 83, 44, 20, 13, 202, 72, 81, 143, 72, 208, 84, 61, 34,
-			83, 44, 20, 13, 202, 21, 2, 71, 72, 19, 77, 5, 66, 83, 44, 20, 13, 202, 16, 82, 204, 4, 208, 84, 61, 34, 83, 44, 20, 9,
-			198, 80, 83, 196, 60, 194, 84, 20, 9, 198, 76, 178, 66, 60, 226, 84, 20, 15, 4, 95, 13, 3, 14, 65, 6, 35, 49, 34, 4, 115,
-			50, 0, 0, 10, 199, 44, 243, 132, 84, 181, 15, 72, 20, 10, 199, 28, 192, 68, 36, 21, 15, 72, 20, 10, 199, 21, 96, 76, 84, 21,
-			15, 72, 20, 12, 201, 48, 81, 201, 80, 147, 65, 80, 147, 206, 20, 10, 199, 21, 99, 204, 85, 66, 79, 56, 20, 10, 199, 20, 193, 86,
-			5, 66, 79, 56, 20, 10, 199, 72, 243, 65, 56, 148, 197, 72, 20, 10, 199, 72, 81, 18, 21, 52, 197, 72, 20, 10, 199, 64, 20, 129,
-			49, 148, 197, 72, 20, 10, 199, 52, 19, 149, 17, 80, 197, 72, 20, 10, 199, 4, 229, 9, 12, 148, 5, 72, 20, 10, 199, 77, 148, 212,
-			20, 210, 83, 44, 20, 10, 199, 64, 19, 132, 20, 210, 83, 44, 20, 10, 199, 28, 128, 78, 21, 50, 83, 44, 20, 10, 199, 28, 83, 204,
-			60, 114, 83, 44, 20, 10, 199, 72, 84, 201, 77, 65, 78, 80, 20, 13, 67, 56, 85, 192, 21, 0, 10, 81, 97, 103, 101, 32, 0, 11,
-			200, 72, 84, 18, 21, 52, 201, 60, 224, 20, 11, 200, 65, 35, 195, 21, 52, 201, 60, 224, 20, 11, 200, 64, 84, 141, 37, 52, 201, 60,
-			224, 20, 11, 200, 64, 84, 139, 85, 52, 201, 60, 224, 20, 11, 200, 44, 243, 131, 21, 52, 201, 60, 224, 20, 11, 200, 44, 243, 77, 37,
-			52, 201, 60, 224, 20, 11, 200, 64, 84, 141, 37, 52, 201, 60, 224, 20, 11, 200, 64, 83, 148, 4, 115, 206, 4, 192, 20, 11, 200, 32,
-			82, 211, 4, 115, 206, 4, 192, 20, 9, 198, 24, 244, 141, 36, 64, 66, 20, 0, 8, 197, 72, 80, 71, 21, 32, 20, 8, 197, 12, 131,
-			203, 21, 32, 20, 9, 198, 76, 210, 71, 72, 84, 137, 20, 9, 198, 76, 178, 68, 80, 84, 137, 20, 9, 198, 24, 163, 204, 48, 84, 137,
-			20, 8, 197, 8, 21, 88, 37, 64, 20, 8, 197, 16, 146, 212, 5, 64, 20, 0, 11, 67, 76, 52, 201, 89, 49, 114, 89, 37, 0, 9,
-			198, 21, 64, 77, 36, 225, 64, 20, 13, 202, 77, 80, 143, 72, 66, 78, 5, 66, 79, 56, 20, 9, 198, 88, 83, 79, 16, 145, 192, 20,
-			13, 202, 64, 83, 15, 64, 243, 142, 21, 50, 83, 44, 20, 9, 198, 33, 145, 18, 60, 98, 76, 20, 9, 198, 45, 35, 203, 4, 65, 64,
-			20, 0, 10, 199, 80, 19, 135, 21, 34, 78, 28, 20, 10, 199, 73, 82, 78, 21, 34, 78, 28, 20, 10, 199, 72, 19, 135, 21, 34, 78,
-			28, 20, 10, 199, 64, 192, 67, 21, 34, 78, 28, 20, 10, 199, 64, 21, 83, 21, 34, 78, 28, 20, 10, 199, 52, 20, 203, 21, 34, 78,
-			28, 20, 10, 199, 52, 20, 139, 21, 34, 78, 28, 20, 10, 199, 48, 243, 135, 21, 34, 78, 28, 20, 10, 199, 48, 147, 138, 21, 34, 78,
-			28, 20, 10, 199, 24, 244, 131, 21, 34, 78, 28, 20, 9, 198, 77, 83, 69, 72, 148, 203, 20, 9, 198, 52, 19, 1, 92, 148, 203, 20,
-			9, 198, 44, 19, 129, 72, 148, 203, 20, 9, 198, 16, 82, 75, 80, 148, 203, 20, 9, 198, 77, 147, 66, 60, 194, 75, 20, 10, 199, 72,
-			84, 201, 77, 65, 78, 76, 20, 0, 12, 201, 24, 20, 141, 4, 179, 199, 56, 244, 201, 20, 11, 200, 89, 83, 7, 5, 34, 83, 21, 32,
-			20, 11, 200, 77, 147, 148, 21, 66, 83, 21, 32, 20, 11, 200, 76, 82, 212, 61, 34, 83, 21, 32, 20, 11, 200, 72, 243, 65, 57, 66,
-			83, 21, 32, 20, 11, 200, 65, 83, 22, 21, 34, 83, 21, 32, 20, 11, 200, 65, 34, 86, 5, 66, 83, 21, 32, 20, 11, 200, 64, 84,
-			137, 60, 66, 83, 21, 32, 20, 11, 200, 64, 20, 211, 37, 98, 83, 21, 32, 20, 11, 200, 56, 85, 82, 61, 66, 83, 21, 32, 20, 11,
-			200, 48, 16, 137, 4, 194, 83, 21, 32, 20, 11, 200, 44, 19, 148, 60, 226, 83, 21, 32, 20, 11, 200, 36, 212, 18, 61, 98, 83, 21,
-			32, 20, 11, 200, 32, 84, 130, 5, 34, 83, 21, 32, 20, 11, 200, 28, 116, 149, 8, 194, 83, 21, 32, 20, 11, 200, 8, 20, 130, 5,
-			34, 83, 21, 32, 20, 9, 198, 52, 84, 203, 4, 194, 78, 20, 9, 198, 52, 19, 132, 60, 194, 78, 20, 9, 198, 32, 84, 141, 20, 194,
-			78, 20, 11, 200, 52, 81, 9, 44, 19, 69, 57, 64, 20, 11, 200, 36, 228, 212, 73, 83, 69, 57, 64, 20, 9, 198, 44, 20, 5, 48,
-			192, 78, 21, 21, 72, 56, 243, 131, 32, 19, 1, 57, 64, 50, 114, 50, 91, 13, 55, 6, 112, 68, 0, 20, 11, 3, 95, 54, 15, 89,
-			57, 109, 72, 108, 0, 0, 30, 69, 76, 80, 210, 21, 64, 89, 37, 81, 34, 36, 72, 15, 89, 6, 118, 84, 37, 89, 0, 81, 115, 101,
-			114, 118, 105, 99, 101, 32, 16, 70, 8, 17, 213, 21, 69, 5, 71, 2, 35, 6, 81, 36, 47, 0, 8, 197, 81, 84, 137, 77, 64, 20,
-			8, 197, 56, 22, 137, 77, 64, 20, 16, 205, 36, 228, 212, 37, 69, 84, 36, 243, 129, 48, 148, 197, 72, 20, 8, 197, 8, 195, 203, 21,
-			32, 20, 9, 198, 4, 195, 5, 28, 244, 137, 20, 12, 201, 45, 32, 77, 64, 80, 71, 80, 145, 192, 20, 8, 197, 104, 83, 204, 37, 64,
-			20, 16, 141, 7, 195, 165, 19, 5, 16, 15, 20, 5, 14, 20, 9, 12, 20, 8, 197, 64, 21, 5, 57, 64, 20, 12, 201, 45, 32, 77,
-			64, 80, 71, 80, 145, 192, 20, 8, 197, 60, 181, 1, 57, 64, 20, 8, 197, 4, 181, 1, 57, 64, 20, 10, 69, 80, 80, 83, 21, 32,
-			21, 0, 10, 0, 25, 70, 88, 148, 139, 20, 65, 64, 84, 6, 37, 34, 49, 36, 86, 13, 15, 89, 114, 0, 81, 115, 195, 165, 32, 13,
-			202, 88, 148, 213, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 88, 19, 132, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 80, 84, 146,
-			61, 34, 83, 21, 34, 78, 28, 20, 13, 202, 77, 147, 66, 60, 194, 83, 21, 34, 78, 28, 20, 13, 202, 76, 240, 201, 4, 194, 83, 21,
-			34, 78, 28, 20, 13, 202, 72, 149, 21, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 64, 21, 18, 60, 226, 83, 21, 34, 78, 28, 20,
-			13, 202, 56, 244, 141, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 53, 84, 197, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 36, 229,
-			5, 57, 50, 86, 21, 34, 78, 28, 20, 13, 202, 24, 244, 141, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 24, 84, 148, 36, 194, 83,
-			21, 34, 78, 28, 20, 13, 202, 16, 85, 18, 60, 226, 83, 21, 34, 78, 28, 20, 13, 202, 9, 37, 84, 4, 194, 83, 21, 34, 78, 28,
-			20, 13, 202, 4, 181, 21, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 4, 68, 212, 72, 147, 135, 21, 34, 78, 28, 20, 9, 198, 45,
-			34, 77, 36, 224, 76, 20, 9, 198, 29, 81, 5, 48, 145, 192, 20, 12, 201, 76, 21, 68, 36, 20, 129, 8, 148, 203, 20, 12, 201, 65,
-			35, 194, 48, 83, 65, 80, 148, 203, 20, 12, 201, 52, 147, 133, 72, 19, 15, 28, 148, 203, 20, 12, 201, 45, 33, 77, 48, 243, 15, 28,
-			148, 203, 20, 12, 201, 44, 148, 143, 65, 32, 75, 80, 148, 203, 20, 12, 201, 44, 20, 148, 60, 116, 129, 24, 148, 203, 20, 0, 10, 199,
-			77, 2, 82, 37, 66, 83, 80, 20, 10, 199, 76, 82, 212, 21, 34, 83, 80, 20, 10, 199, 65, 34, 86, 5, 66, 83, 80, 20, 10, 199,
-			53, 149, 20, 21, 34, 83, 80, 20, 10, 199, 52, 19, 137, 21, 34, 83, 80, 20, 10, 199, 44, 243, 131, 37, 2, 83, 80, 20, 14, 203,
-			48, 21, 144, 5, 53, 5, 85, 34, 83, 21, 32, 20, 14, 203, 9, 84, 133, 5, 82, 210, 5, 66, 83, 21, 32, 20, 13, 138, 16, 195,
-			165, 20, 1, 7, 5, 12, 9, 7, 20, 13, 138, 15, 13, 2, 195, 184, 10, 5, 12, 9, 7, 20, 9, 198, 76, 243, 65, 80, 148, 203,
-			20, 9, 198, 76, 84, 129, 24, 148, 203, 20, 9, 198, 16, 144, 84, 60, 226, 75, 20, 0, 11, 200, 76, 83, 73, 56, 20, 137, 77, 64,
-			20, 11, 200, 52, 243, 133, 80, 20, 137, 77, 64, 20, 11, 200, 80, 82, 206, 36, 98, 67, 21, 32, 20, 11, 200, 52, 85, 18, 61, 3,
-			204, 37, 64, 20, 11, 200, 44, 244, 205, 61, 3, 204, 37, 64, 20, 7, 196, 28, 245, 9, 44, 20, 11, 200, 44, 243, 148, 36, 225, 197,
-			57, 64, 20, 11, 200, 44, 243, 147, 37, 53, 5, 57, 64, 20, 9, 198, 24, 147, 20, 72, 21, 0, 20, 7, 196, 88, 20, 129, 56, 21,
-			11, 200, 65, 35, 212, 21, 53, 1, 57, 64, 20, 9, 68, 9, 35, 206, 96, 21, 0, 10, 0, 8, 197, 4, 224, 76, 60, 112, 20, 8,
-			197, 52, 20, 137, 56, 80, 20, 16, 205, 44, 243, 77, 21, 32, 201, 4, 194, 83, 21, 34, 78, 28, 20, 16, 205, 36, 225, 9, 88, 145,
-			21, 4, 194, 83, 21, 34, 78, 28, 20, 12, 201, 76, 176, 82, 65, 50, 78, 16, 145, 192, 20, 12, 201, 61, 97, 82, 76, 181, 69, 48,
-			145, 192, 20, 12, 201, 60, 213, 22, 37, 53, 5, 48, 145, 192, 20, 12, 201, 56, 81, 2, 73, 145, 5, 48, 145, 192, 20, 12, 201, 24,
-			244, 148, 73, 145, 5, 48, 145, 192, 20, 12, 201, 24, 244, 148, 60, 194, 197, 48, 145, 192, 20, 12, 201, 24, 244, 147, 45, 145, 5, 48,
-			145, 192, 20, 12, 201, 24, 244, 141, 5, 53, 5, 48, 145, 192, 20, 15, 140, 6, 15, 18, 4, 195, 166, 18, 22, 5, 12, 9, 7, 20,
-			15, 204, 45, 38, 83, 80, 19, 12, 60, 116, 129, 24, 148, 203, 20, 9, 198, 44, 243, 139, 100, 194, 69, 20, 9, 198, 44, 243, 147, 36,
-			194, 69, 20, 8, 197, 44, 194, 78, 36, 176, 20, 8, 197, 52, 83, 129, 28, 80, 20, 0, 6, 195, 20, 212, 0, 17, 6, 195, 72, 81,
-			201, 20, 9, 198, 72, 246, 65, 48, 148, 212, 20, 9, 198, 64, 244, 21, 48, 148, 212, 20, 9, 198, 48, 246, 65, 48, 148, 212, 20, 13,
-			202, 44, 243, 77, 84, 226, 84, 5, 34, 83, 80, 20, 9, 198, 8, 145, 193, 52, 148, 212, 20, 9, 198, 4, 224, 82, 44, 148, 212, 20,
-			16, 141, 195, 184, 10, 5, 2, 12, 9, 11, 11, 5, 12, 9, 7, 20, 12, 137, 195, 166, 18, 2, 195, 184, 4, 9, 7, 20, 16, 141,
-			8, 195, 165, 14, 4, 7, 18, 9, 2, 5, 12, 9, 7, 20, 12, 201, 77, 147, 148, 4, 115, 65, 80, 148, 203, 20, 12, 201, 77, 147,
-			80, 80, 243, 65, 80, 148, 203, 20, 12, 201, 64, 19, 139, 72, 243, 65, 80, 148, 203, 20, 12, 201, 45, 96, 68, 72, 241, 143, 56, 148,
-			203, 20, 12, 201, 44, 19, 12, 36, 116, 129, 24, 148, 203, 20, 12, 201, 36, 179, 206, 60, 116, 129, 24, 148, 203, 20, 12, 201, 25, 32,
-			83, 20, 243, 15, 28, 148, 203, 20, 12, 201, 16, 148, 203, 60, 116, 129, 24, 148, 203, 20, 9, 198, 5, 36, 197, 56, 146, 192, 20, 0,
-			10, 199, 4, 194, 214, 4, 229, 15, 72, 20, 9, 198, 48, 149, 147, 4, 194, 71, 20, 10, 199, 52, 21, 5, 52, 21, 9, 44, 20, 10,
-			199, 5, 34, 84, 52, 85, 9, 44, 20, 12, 201, 20, 50, 1, 84, 97, 133, 72, 85, 0, 20, 0, 28, 68, 88, 244, 133, 76, 84, 114,
-			12, 89, 15, 49, 84, 112, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 9, 198, 72, 83, 5, 28, 147, 206, 20, 9,
-			198, 53, 85, 1, 80, 147, 206, 20, 11, 200, 24, 147, 20, 72, 84, 137, 56, 112, 20, 11, 200, 80, 83, 5, 24, 243, 133, 72, 80, 20,
-			11, 200, 52, 17, 193, 76, 147, 133, 72, 80, 20, 14, 139, 16, 195, 165, 16, 1, 19, 19, 5, 12, 9, 7, 20, 14, 139, 6, 15, 18,
-			14, 195, 184, 10, 5, 12, 9, 7, 20, 11, 200, 21, 2, 71, 72, 17, 137, 76, 176, 20, 11, 200, 64, 20, 148, 36, 50, 80, 36, 80,
-			20, 9, 198, 37, 51, 1, 52, 149, 0, 20, 9, 198, 12, 240, 203, 64, 149, 0, 20, 7, 196, 44, 149, 9, 56, 20, 9, 198, 52, 147,
-			12, 36, 32, 82, 20, 9, 198, 17, 35, 205, 20, 64, 82, 20, 13, 68, 32, 21, 132, 20, 107, 110, 12, 86, 13, 0, 76, 7, 196, 88,
-			244, 133, 76, 72, 11, 3, 95, 55, 15, 89, 116, 84, 50, 108, 0, 0, 8, 197, 56, 81, 197, 72, 80, 20, 15, 140, 7, 5, 2, 18,
-			195, 166, 11, 11, 5, 12, 9, 7, 20, 15, 140, 1, 6, 7, 18, 195, 166, 14, 19, 5, 12, 9, 7, 20, 8, 197, 64, 243, 9, 80,
-			144, 20, 0, 9, 198, 52, 82, 133, 72, 148, 212, 20, 9, 198, 33, 83, 65, 56, 148, 212, 20, 9, 198, 4, 196, 9, 56, 148, 212, 20,
-			9, 198, 45, 34, 77, 36, 225, 76, 20, 16, 141, 195, 166, 7, 20, 5, 19, 11, 1, 2, 5, 12, 9, 7, 20, 9, 198, 4, 225, 197,
-			48, 146, 192, 20, 9, 198, 44, 243, 147, 84, 192, 84, 20, 9, 198, 25, 32, 75, 80, 19, 0, 20, 0, 10, 199, 76, 84, 1, 72, 21,
-			15, 72, 20, 12, 201, 65, 35, 204, 60, 225, 193, 80, 147, 206, 20, 12, 201, 64, 84, 148, 85, 32, 129, 80, 147, 206, 20, 12, 201, 52,
-			20, 212, 85, 32, 129, 80, 147, 206, 20, 12, 201, 24, 84, 141, 20, 229, 1, 80, 147, 206, 20, 14, 203, 77, 68, 129, 80, 145, 137, 12,
-			84, 137, 56, 112, 20, 0, 9, 198, 72, 80, 75, 80, 147, 206, 20, 9, 198, 36, 229, 129, 76, 147, 206, 20, 11, 200, 81, 148, 9, 76,
-			84, 137, 56, 112, 20, 11, 200, 81, 37, 78, 44, 84, 137, 56, 112, 20, 11, 200, 81, 32, 75, 80, 84, 137, 56, 112, 20, 11, 200, 77,
-			64, 71, 56, 84, 137, 56, 112, 20, 11, 200, 65, 83, 139, 80, 84, 137, 56, 112, 20, 11, 200, 61, 33, 9, 56, 84, 137, 56, 112, 20,
-			11, 200, 60, 178, 213, 64, 84, 137, 56, 112, 20, 11, 200, 57, 80, 78, 12, 84, 137, 56, 112, 20, 11, 200, 45, 96, 68, 72, 84, 137,
-			56, 112, 20, 11, 200, 44, 20, 212, 72, 84, 137, 56, 112, 20, 11, 200, 36, 243, 137, 76, 84, 137, 56, 112, 20, 11, 200, 29, 83, 77,
-			36, 84, 137, 56, 112, 20, 11, 200, 29, 37, 78, 16, 84, 137, 56, 112, 20, 11, 200, 21, 64, 66, 48, 84, 137, 56, 112, 20, 11, 200,
-			20, 225, 193, 28, 84, 137, 56, 112, 20, 11, 200, 20, 213, 76, 28, 84, 137, 56, 112, 20, 11, 200, 16, 82, 213, 64, 84, 137, 56, 112,
-			20, 11, 200, 12, 130, 70, 72, 84, 137, 56, 112, 20, 11, 200, 5, 97, 82, 80, 84, 137, 56, 112, 20, 11, 200, 4, 227, 143, 80, 84,
-			137, 56, 112, 20, 11, 200, 72, 82, 210, 85, 69, 5, 72, 80, 20, 11, 200, 36, 229, 129, 48, 145, 5, 72, 80, 20, 11, 200, 52, 241,
-			2, 100, 65, 76, 36, 112, 20, 11, 200, 44, 20, 18, 36, 99, 204, 36, 80, 20, 11, 200, 44, 20, 18, 36, 99, 204, 36, 80, 20, 11,
-			200, 64, 243, 25, 80, 82, 206, 36, 176, 20, 7, 196, 64, 148, 129, 80, 20, 7, 196, 44, 20, 129, 80, 20, 9, 198, 24, 244, 141, 84,
-			192, 82, 20, 0, 0, 9, 198, 44, 243, 150, 60, 197, 84, 20, 13, 202, 72, 82, 207, 57, 96, 76, 21, 48, 197, 72, 20, 12, 201, 24,
-			244, 149, 17, 50, 71, 20, 194, 71, 20, 9, 198, 44, 243, 77, 84, 224, 76, 20, 0, 14, 203, 88, 149, 1, 52, 147, 137, 76, 84, 137,
-			56, 112, 20, 10, 199, 88, 21, 20, 21, 34, 78, 28, 20, 14, 203, 81, 32, 78, 77, 3, 210, 80, 84, 137, 56, 112, 20, 14, 203, 81,
-			32, 78, 76, 99, 210, 52, 84, 137, 56, 112, 20, 14, 203, 77, 147, 139, 72, 243, 137, 76, 84, 137, 56, 112, 20, 14, 203, 77, 65, 82,
-			20, 245, 25, 64, 84, 137, 56, 112, 20, 14, 203, 72, 82, 207, 57, 53, 18, 84, 84, 137, 56, 112, 20, 10, 199, 64, 244, 212, 21, 34,
-			78, 28, 20, 14, 203, 44, 243, 132, 37, 66, 79, 56, 84, 137, 56, 112, 20, 14, 203, 44, 192, 83, 76, 145, 137, 12, 84, 137, 56, 112,
-			20, 10, 199, 29, 32, 68, 21, 34, 78, 28, 20, 14, 203, 28, 192, 77, 61, 84, 137, 76, 84, 137, 56, 112, 20, 10, 199, 25, 34, 84,
-			21, 34, 78, 28, 20, 10, 199, 20, 195, 216, 21, 34, 78, 28, 20, 14, 203, 16, 84, 201, 56, 99, 210, 52, 84, 137, 56, 112, 20, 14,
-			203, 5, 85, 15, 56, 243, 73, 76, 84, 137, 56, 112, 20, 14, 203, 76, 19, 77, 20, 227, 9, 28, 225, 76, 36, 112, 20, 9, 198, 48,
-			149, 15, 80, 148, 203, 20, 9, 198, 44, 19, 143, 56, 148, 203, 20, 9, 198, 20, 225, 82, 28, 148, 203, 20, 9, 198, 4, 209, 137, 8,
-			148, 203, 20, 10, 199, 56, 84, 20, 84, 226, 85, 52, 20, 10, 199, 52, 20, 148, 101, 34, 85, 52, 20, 10, 199, 48, 83, 137, 56, 148,
-			205, 20, 20, 10, 199, 52, 84, 139, 4, 229, 9, 48, 20, 9, 198, 77, 1, 67, 36, 98, 75, 20, 10, 199, 5, 96, 78, 12, 84, 133,
-			80, 20, 10, 199, 44, 243, 134, 21, 33, 78, 76, 20, 10, 199, 64, 197, 84, 60, 180, 129, 80, 20, 0, 7, 196, 52, 245, 5, 48, 20,
-			9, 198, 44, 243, 132, 60, 193, 82, 20, 9, 198, 32, 20, 131, 20, 193, 82, 20, 9, 198, 12, 148, 139, 84, 193, 82, 20, 7, 196, 72,
-			20, 9, 16, 20, 7, 196, 64, 20, 9, 48, 20, 0, 9, 198, 45, 84, 148, 60, 148, 201, 20, 0, 25, 66, 20, 224, 36, 50, 15, 49,
-			110, 50, 39, 50, 6, 36, 34, 0, 81, 107, 97, 110, 111, 110, 101, 114, 32, 16, 66, 20, 224, 36, 50, 15, 89, 6, 114, 0, 81, 115,
-			195, 165, 32, 25, 66, 20, 224, 36, 50, 15, 55, 36, 81, 6, 109, 50, 72, 13, 0, 81, 108, 101, 103, 101, 110, 100, 101, 32, 23, 66,
-			20, 224, 112, 68, 15, 48, 110, 89, 6, 112, 68, 0, 81, 112, 97, 115, 115, 97, 110, 116, 32, 19, 66, 20, 224, 35, 68, 15, 6, 71,
-			55, 114, 49, 0, 81, 98, 108, 111, 99, 32, 18, 66, 20, 224, 35, 68, 15, 83, 6, 35, 89, 0, 81, 102, 97, 99, 101, 32, 9, 198,
-			44, 244, 147, 20, 193, 84, 20, 13, 202, 81, 34, 65, 56, 117, 76, 21, 34, 78, 28, 20, 13, 202, 77, 80, 147, 80, 149, 21, 21, 34,
-			78, 28, 20, 13, 202, 77, 68, 129, 56, 117, 76, 21, 34, 78, 28, 20, 13, 202, 72, 80, 201, 72, 181, 76, 21, 34, 78, 28, 20, 13,
-			202, 65, 35, 211, 64, 82, 212, 21, 34, 78, 28, 20, 13, 202, 64, 20, 148, 36, 50, 80, 21, 34, 78, 28, 20, 13, 202, 44, 243, 147,
-			80, 149, 21, 21, 34, 78, 28, 20, 13, 202, 44, 243, 80, 48, 85, 20, 21, 34, 78, 28, 20, 12, 201, 80, 84, 141, 60, 116, 129, 24,
-			148, 203, 20, 12, 201, 52, 85, 15, 16, 243, 15, 28, 148, 203, 20, 12, 201, 45, 34, 83, 80, 243, 15, 28, 148, 203, 20, 12, 201, 44,
-			244, 133, 60, 116, 129, 24, 148, 203, 20, 12, 201, 32, 82, 211, 4, 209, 84, 72, 148, 203, 20, 12, 201, 24, 20, 141, 4, 49, 85, 80,
-			148, 203, 20, 12, 201, 20, 229, 21, 76, 144, 83, 80, 148, 203, 20, 12, 201, 20, 229, 15, 52, 243, 15, 28, 148, 203, 20, 5, 194, 20,
-			224, 72, 0, 10, 199, 64, 146, 212, 60, 116, 129, 52, 20, 9, 198, 88, 83, 133, 72, 148, 203, 20, 9, 198, 76, 243, 65, 48, 148, 203,
-			20, 9, 198, 64, 83, 1, 28, 148, 203, 20, 9, 198, 57, 83, 69, 72, 148, 203, 20, 9, 198, 32, 19, 73, 80, 148, 203, 20, 9, 198,
-			4, 181, 83, 80, 148, 203, 20, 10, 199, 36, 225, 149, 76, 244, 137, 20, 20, 10, 199, 28, 84, 141, 4, 226, 85, 52, 20, 10, 199, 21,
-			2, 83, 44, 244, 1, 80, 20, 13, 3, 95, 51, 88, 47, 51, 6, 111, 86, 84, 13, 0, 0, 7, 196, 8, 20, 143, 56, 20, 9, 198,
-			72, 84, 207, 72, 33, 82, 20, 9, 198, 72, 19, 80, 60, 225, 82, 20, 9, 198, 61, 48, 201, 48, 193, 82, 20, 7, 196, 52, 245, 133,
-			72, 20, 9, 198, 44, 243, 80, 60, 225, 82, 20, 9, 198, 24, 244, 141, 84, 193, 82, 20, 9, 198, 5, 69, 1, 12, 129, 82, 20, 9,
-			198, 4, 227, 149, 48, 193, 82, 20, 11, 200, 44, 243, 148, 36, 225, 197, 57, 48, 20, 11, 200, 44, 243, 147, 37, 53, 5, 57, 48, 20,
-			14, 3, 95, 48, 67, 107, 6, 40, 50, 16, 13, 12, 86, 0, 0, 0, 12, 201, 80, 84, 141, 61, 53, 1, 80, 148, 203, 20, 12, 201,
-			77, 65, 78, 60, 116, 129, 24, 148, 203, 20, 12, 201, 25, 85, 21, 72, 243, 15, 28, 148, 203, 20, 12, 201, 21, 50, 201, 52, 243, 15,
-			28, 148, 203, 20, 12, 201, 16, 83, 132, 72, 243, 15, 28, 148, 203, 20, 0, 10, 199, 52, 20, 135, 5, 34, 78, 20, 20, 10, 199, 44,
-			243, 134, 85, 50, 79, 56, 20, 10, 199, 36, 211, 73, 77, 50, 79, 56, 20, 12, 201, 81, 32, 78, 77, 50, 210, 36, 33, 82, 20, 10,
-			199, 44, 243, 77, 20, 229, 5, 72, 20, 10, 199, 16, 148, 208, 21, 33, 197, 72, 20, 12, 201, 16, 83, 79, 57, 53, 18, 4, 229, 0,
-			20, 8, 67, 81, 34, 80, 21, 0, 10, 0, 11, 200, 72, 81, 140, 20, 180, 201, 60, 224, 20, 11, 200, 64, 84, 150, 21, 36, 201, 60,
-			224, 20, 11, 200, 44, 243, 150, 21, 36, 201, 60, 224, 20, 11, 200, 5, 37, 9, 24, 144, 201, 20, 192, 20, 7, 196, 88, 245, 5, 72,
-			20, 7, 196, 12, 149, 5, 72, 20, 9, 198, 16, 83, 79, 29, 32, 70, 20, 9, 198, 52, 244, 132, 20, 229, 0, 20, 7, 196, 80, 149,
-			1, 56, 21, 7, 196, 68, 21, 1, 72, 20, 7, 196, 44, 21, 1, 72, 20, 9, 198, 44, 243, 80, 5, 32, 66, 20, 11, 3, 95, 57,
-			15, 50, 37, 13, 50, 108, 0, 0, 15, 140, 16, 1, 12, 195, 166, 15, 14, 20, 15, 12, 15, 7, 20, 13, 138, 16, 18, 195, 166, 19,
-			20, 9, 14, 4, 5, 20, 0, 16, 141, 1, 14, 195, 166, 19, 20, 5, 19, 9, 15, 12, 15, 7, 20, 13, 202, 72, 85, 18, 60, 99,
-			5, 45, 50, 79, 56, 20, 0, 10, 199, 65, 35, 211, 20, 181, 15, 72, 20, 10, 199, 76, 82, 210, 21, 66, 79, 56, 20, 12, 201, 44,
-			243, 132, 20, 228, 193, 80, 147, 206, 20, 12, 201, 44, 243, 80, 20, 228, 193, 80, 147, 206, 20, 12, 201, 36, 195, 21, 77, 68, 129, 80,
-			147, 206, 20, 10, 199, 25, 83, 132, 5, 66, 79, 56, 20, 12, 201, 16, 148, 208, 20, 228, 193, 80, 147, 206, 20, 10, 199, 16, 147, 206,
-			101, 50, 83, 44, 20, 10, 199, 61, 37, 15, 16, 243, 148, 36, 20, 10, 199, 5, 36, 133, 77, 64, 78, 80, 20, 0, 12, 67, 77, 65,
-			71, 89, 72, 35, 57, 0, 14, 45, 11, 200, 65, 34, 78, 12, 148, 9, 20, 192, 20, 7, 196, 64, 148, 143, 48, 20, 12, 137, 22, 195,
-			166, 18, 20, 9, 14, 4, 5, 20, 9, 198, 24, 245, 15, 29, 32, 70, 20, 9, 198, 21, 67, 143, 29, 32, 70, 20, 11, 200, 52, 81,
-			9, 80, 84, 146, 4, 224, 21, 17, 3, 95, 49, 67, 36, 72, 15, 107, 6, 40, 50, 51, 13, 12, 86, 0, 0, 8, 197, 44, 243, 132,
-			61, 32, 20, 8, 197, 64, 192, 67, 21, 32, 20, 8, 197, 24, 244, 131, 21, 32, 20, 12, 137, 16, 195, 184, 14, 9, 20, 5, 14, 20,
-			20, 0, 9, 198, 29, 32, 86, 85, 33, 64, 20, 9, 198, 80, 19, 10, 21, 33, 64, 20, 9, 198, 24, 245, 82, 4, 113, 64, 20, 0,
-			10, 67, 81, 33, 64, 47, 34, 6, 36, 0, 10, 199, 64, 19, 9, 56, 68, 143, 52, 20, 10, 199, 16, 85, 137, 21, 34, 78, 28, 20,
-			10, 199, 64, 85, 9, 80, 84, 211, 20, 20, 0, 11, 200, 88, 148, 213, 4, 194, 83, 21, 32, 20, 11, 200, 88, 19, 132, 4, 194, 83,
-			21, 32, 20, 11, 200, 80, 84, 146, 61, 34, 83, 21, 32, 20, 11, 200, 77, 147, 66, 60, 194, 83, 21, 32, 20, 11, 200, 76, 240, 201,
-			4, 194, 83, 21, 32, 20, 11, 200, 72, 149, 21, 4, 194, 83, 21, 32, 20, 11, 200, 64, 21, 18, 60, 226, 83, 21, 32, 20, 11, 200,
-			56, 244, 141, 4, 194, 83, 21, 32, 20, 11, 200, 33, 145, 18, 60, 198, 83, 21, 32, 20, 11, 200, 24, 244, 141, 4, 194, 83, 21, 32,
-			20, 11, 200, 24, 84, 148, 36, 194, 83, 21, 32, 20, 11, 200, 16, 85, 18, 60, 226, 83, 21, 32, 20, 11, 200, 9, 37, 84, 4, 194,
-			83, 21, 32, 20, 11, 200, 4, 181, 21, 4, 194, 83, 21, 32, 20, 11, 200, 4, 178, 214, 36, 84, 195, 21, 32, 20, 9, 198, 49, 85,
-			8, 21, 32, 78, 20, 11, 200, 36, 224, 201, 80, 19, 69, 57, 64, 20, 0, 8, 197, 88, 84, 147, 21, 32, 20, 12, 201, 80, 83, 5,
-			29, 32, 70, 21, 33, 64, 20, 12, 201, 24, 245, 15, 29, 32, 70, 21, 33, 64, 20, 8, 197, 24, 20, 147, 21, 32, 20, 12, 201, 5,
-			85, 15, 29, 32, 70, 21, 33, 64, 20, 8, 197, 21, 33, 77, 37, 64, 20, 8, 197, 52, 17, 217, 5, 32, 20, 9, 198, 52, 20, 137,
-			56, 17, 5, 20, 0, 17, 70, 52, 150, 20, 85, 33, 64, 65, 36, 81, 89, 47, 57, 114, 0, 20, 9, 198, 25, 34, 84, 85, 33, 64,
-			20, 9, 198, 77, 69, 68, 21, 33, 64, 20, 9, 198, 29, 32, 68, 21, 33, 64, 20, 12, 137, 15, 16, 19, 195, 166, 20, 19, 9, 7,
-			20, 18, 143, 11, 1, 18, 18, 5, 2, 195, 166, 11, 19, 13, 9, 14, 4, 5, 20, 12, 3, 95, 49, 57, 50, 6, 36, 72, 14, 50,
-			0, 0, 10, 199, 76, 243, 4, 21, 34, 83, 80, 20, 10, 199, 32, 148, 212, 61, 34, 83, 80, 20, 10, 199, 24, 17, 207, 81, 66, 83,
-			80, 20, 14, 203, 44, 243, 77, 21, 32, 201, 4, 194, 83, 21, 32, 20, 14, 203, 36, 225, 9, 88, 145, 21, 4, 194, 83, 21, 32, 20,
-			16, 75, 84, 225, 5, 73, 53, 1, 80, 83, 69, 57, 64, 21, 0, 10, 11, 3, 95, 49, 56, 6, 110, 72, 14, 50, 0, 0, 10, 68,
-			28, 149, 133, 72, 81, 37, 34, 0, 11, 68, 20, 229, 5, 72, 36, 50, 47, 114, 0, 11, 200, 77, 1, 67, 36, 98, 67, 21, 32, 20,
-			11, 200, 73, 84, 211, 36, 98, 67, 21, 32, 20, 11, 200, 72, 83, 66, 61, 84, 147, 21, 32, 20, 11, 200, 44, 192, 82, 36, 98, 67,
-			21, 32, 20, 7, 196, 44, 21, 133, 72, 20, 11, 200, 36, 229, 5, 72, 84, 211, 21, 32, 20, 11, 200, 28, 195, 210, 36, 98, 67, 21,
-			32, 20, 7, 196, 28, 84, 133, 72, 20, 11, 200, 24, 19, 19, 36, 98, 67, 21, 32, 20, 11, 200, 16, 84, 201, 56, 98, 67, 21, 32,
-			20, 7, 196, 40, 21, 129, 56, 20, 9, 198, 61, 53, 9, 56, 21, 0, 20, 12, 201, 44, 243, 148, 4, 181, 6, 48, 17, 5, 20, 0,
-			8, 197, 45, 84, 201, 56, 80, 20, 12, 201, 80, 20, 5, 81, 49, 82, 36, 225, 192, 20, 12, 201, 72, 85, 133, 73, 49, 82, 36, 225,
-			192, 20, 12, 201, 72, 85, 129, 49, 81, 82, 36, 225, 192, 20, 12, 201, 72, 80, 76, 37, 49, 82, 36, 225, 192, 20, 12, 201, 24, 19,
-			148, 5, 49, 82, 36, 225, 192, 20, 12, 201, 21, 35, 212, 37, 49, 82, 36, 225, 192, 20, 12, 201, 20, 225, 15, 77, 49, 82, 36, 225,
-			192, 20, 12, 201, 16, 84, 12, 61, 145, 82, 36, 225, 192, 20, 12, 201, 4, 225, 204, 37, 49, 82, 36, 225, 192, 20, 12, 201, 4, 68,
-			133, 77, 49, 82, 36, 225, 192, 20, 9, 198, 45, 34, 84, 21, 34, 69, 20, 9, 198, 44, 243, 131, 36, 194, 69, 20, 0, 9, 198, 48,
-			147, 135, 88, 148, 212, 20, 9, 198, 76, 176, 66, 21, 34, 64, 20, 9, 198, 17, 34, 86, 21, 34, 64, 20, 9, 198, 52, 147, 143, 37,
-			50, 192, 20, 9, 198, 17, 37, 83, 37, 50, 192, 20, 9, 198, 81, 34, 86, 36, 19, 0, 20, 0, 10, 199, 72, 85, 15, 73, 50, 79,
-			56, 20, 10, 199, 16, 147, 69, 57, 50, 79, 56, 20, 10, 199, 72, 83, 66, 85, 36, 197, 72, 20, 10, 199, 72, 83, 1, 80, 149, 133,
-			72, 20, 10, 199, 20, 180, 212, 20, 225, 5, 72, 20, 10, 199, 16, 80, 197, 48, 84, 133, 72, 20, 9, 198, 61, 4, 137, 29, 66, 71,
-			20, 10, 199, 24, 244, 148, 72, 243, 9, 28, 20, 10, 199, 4, 100, 203, 100, 83, 9, 28, 20, 14, 203, 44, 20, 148, 4, 114, 78, 36,
-			83, 147, 21, 32, 20, 12, 201, 76, 82, 210, 21, 64, 82, 36, 21, 0, 20, 12, 201, 4, 229, 9, 45, 96, 82, 36, 21, 0, 20, 0,
-			21, 72, 72, 82, 137, 12, 84, 137, 56, 112, 34, 36, 57, 37, 89, 6, 36, 51, 37, 68, 0, 12, 201, 77, 1, 75, 81, 35, 211, 44,
-			244, 0, 20, 10, 135, 13, 1, 6, 9, 195, 184, 19, 20, 11, 200, 40, 84, 137, 44, 244, 143, 76, 80, 20, 11, 200, 25, 85, 21, 72,
-			243, 15, 28, 144, 20, 11, 200, 21, 50, 201, 52, 243, 15, 28, 144, 20, 11, 200, 16, 83, 132, 72, 243, 15, 28, 144, 20, 9, 198, 64,
-			19, 70, 48, 85, 0, 20, 11, 200, 8, 83, 133, 24, 144, 201, 84, 208, 67, 15, 204, 77, 148, 212, 20, 208, 84, 37, 49, 82, 36, 225,
-			192, 20, 11, 200, 77, 81, 134, 48, 84, 137, 56, 112, 20, 15, 204, 77, 64, 78, 16, 20, 132, 37, 49, 82, 36, 225, 192, 20, 11, 200,
-			76, 178, 84, 76, 84, 137, 56, 112, 20, 11, 200, 76, 84, 1, 72, 84, 137, 56, 112, 20, 15, 204, 76, 83, 147, 36, 34, 76, 37, 49,
-			82, 36, 225, 192, 20, 11, 200, 72, 82, 137, 12, 84, 137, 56, 112, 20, 11, 200, 64, 147, 15, 80, 84, 137, 56, 112, 20, 15, 204, 52,
-			21, 5, 72, 144, 76, 37, 49, 82, 36, 225, 192, 20, 11, 200, 52, 20, 137, 56, 84, 137, 56, 112, 20, 11, 200, 44, 243, 15, 72, 84,
-			137, 56, 112, 20, 11, 200, 44, 195, 193, 44, 84, 137, 56, 112, 20, 11, 200, 28, 20, 129, 28, 84, 137, 56, 112, 20, 11, 200, 24, 145,
-			213, 72, 84, 137, 56, 112, 20, 11, 200, 16, 19, 137, 76, 84, 137, 56, 112, 20, 15, 204, 8, 17, 193, 80, 83, 12, 37, 49, 82, 36,
-			225, 192, 20, 11, 200, 5, 52, 213, 72, 84, 137, 56, 112, 20, 7, 196, 16, 21, 5, 72, 20, 7, 196, 33, 99, 210, 36, 20, 11, 200,
-			64, 84, 148, 20, 229, 12, 36, 112, 20, 11, 200, 61, 3, 21, 44, 177, 76, 36, 112, 20, 11, 200, 60, 210, 25, 28, 113, 76, 36, 112,
-			20, 11, 200, 28, 83, 148, 4, 113, 76, 36, 112, 20, 11, 200, 24, 244, 148, 72, 147, 140, 36, 112, 20, 11, 200, 24, 244, 140, 36, 113,
-			76, 36, 112, 20, 11, 200, 81, 48, 82, 37, 53, 9, 76, 176, 20, 11, 200, 56, 244, 212, 4, 193, 201, 76, 176, 20, 11, 200, 37, 51,
-			205, 21, 68, 137, 76, 176, 20, 11, 200, 28, 83, 205, 21, 68, 137, 76, 176, 20, 11, 200, 8, 243, 66, 5, 53, 9, 76, 176, 20, 11,
-			200, 60, 229, 15, 28, 83, 133, 76, 80, 20, 11, 200, 8, 83, 133, 24, 144, 201, 84, 208, 20, 11, 200, 84, 226, 84, 5, 34, 83, 52,
-			80, 20, 11, 200, 64, 197, 82, 4, 194, 83, 52, 80, 20, 11, 200, 52, 17, 206, 21, 66, 83, 52, 80, 20, 11, 200, 33, 148, 14, 61,
-			66, 83, 52, 80, 20, 11, 200, 12, 19, 22, 36, 226, 83, 52, 80, 20, 0, 11, 136, 7, 12, 15, 18, 9, 195, 184, 19, 20, 12, 201,
-			76, 83, 147, 5, 66, 79, 56, 83, 0, 20, 12, 201, 80, 21, 84, 60, 195, 199, 37, 50, 192, 20, 12, 201, 76, 240, 201, 60, 195, 199,
-			37, 50, 192, 20, 12, 201, 76, 83, 73, 60, 195, 199, 37, 50, 192, 20, 12, 201, 65, 54, 75, 60, 195, 199, 37, 50, 192, 20, 12, 201,
-			64, 244, 148, 84, 114, 83, 37, 50, 192, 20, 12, 201, 33, 145, 18, 60, 195, 199, 37, 50, 192, 20, 12, 201, 28, 83, 133, 4, 195, 199,
-			37, 50, 192, 20, 12, 201, 25, 148, 201, 60, 195, 199, 37, 50, 192, 20, 12, 201, 21, 70, 77, 60, 195, 199, 37, 50, 192, 20, 0, 9,
-			198, 80, 83, 143, 72, 148, 212, 20, 9, 198, 28, 83, 210, 28, 148, 212, 20, 9, 198, 76, 243, 4, 21, 34, 64, 20, 9, 198, 65, 32,
-			76, 21, 34, 64, 20, 9, 198, 64, 147, 80, 21, 34, 64, 20, 9, 198, 64, 147, 12, 21, 34, 64, 20, 9, 198, 64, 19, 80, 21, 34,
-			64, 20, 9, 198, 52, 19, 20, 21, 34, 64, 20, 9, 198, 48, 245, 20, 21, 34, 64, 20, 9, 198, 33, 146, 204, 21, 34, 64, 20, 9,
-			198, 28, 19, 12, 21, 34, 64, 20, 9, 198, 9, 83, 20, 21, 34, 64, 20, 9, 198, 8, 21, 20, 21, 34, 64, 20, 9, 198, 5, 67,
-			205, 37, 50, 192, 20, 9, 198, 17, 147, 129, 52, 146, 192, 20, 9, 198, 16, 83, 79, 45, 32, 84, 20, 9, 198, 8, 148, 213, 48, 96,
-			84, 20, 9, 198, 8, 145, 78, 56, 19, 0, 20, 11, 3, 95, 49, 49, 6, 109, 55, 84, 13, 0, 0, 10, 199, 72, 81, 21, 45, 66,
-			79, 56, 20, 10, 199, 61, 1, 82, 5, 66, 79, 56, 20, 10, 199, 20, 208, 78, 5, 66, 79, 56, 20, 14, 203, 52, 18, 193, 16, 19,
-			73, 76, 84, 137, 56, 112, 20, 14, 203, 44, 195, 210, 60, 99, 210, 52, 84, 137, 56, 112, 20, 18, 207, 36, 229, 5, 48, 193, 75, 81,
-			80, 76, 37, 49, 82, 36, 225, 192, 20, 14, 203, 36, 225, 5, 45, 49, 82, 12, 84, 137, 56, 112, 20, 14, 203, 36, 212, 12, 20, 209,
-			78, 80, 84, 137, 56, 112, 20, 14, 203, 25, 32, 84, 21, 35, 137, 76, 84, 137, 56, 112, 20, 14, 203, 20, 180, 212, 72, 20, 15, 48,
-			84, 137, 56, 112, 20, 14, 203, 4, 194, 207, 32, 243, 9, 76, 84, 137, 56, 112, 20, 14, 203, 4, 67, 73, 56, 148, 212, 72, 84, 137,
-			56, 112, 20, 10, 199, 36, 229, 9, 52, 145, 5, 72, 20, 10, 199, 20, 180, 208, 48, 241, 5, 72, 20, 10, 199, 16, 83, 9, 44, 21,
-			5, 72, 20, 10, 199, 44, 243, 132, 37, 67, 210, 36, 20, 14, 203, 44, 20, 129, 45, 65, 82, 37, 53, 9, 76, 176, 20, 14, 203, 16,
-			83, 147, 37, 67, 205, 21, 68, 137, 76, 176, 20, 14, 203, 36, 225, 5, 80, 84, 141, 36, 226, 83, 52, 80, 20, 14, 203, 25, 83, 139,
-			80, 147, 206, 4, 194, 83, 52, 80, 20, 14, 203, 16, 242, 213, 52, 83, 148, 5, 34, 83, 52, 80, 20, 10, 199, 64, 19, 133, 29, 148,
-			137, 44, 20, 9, 3, 95, 49, 48, 47, 6, 37, 0, 0, 7, 196, 44, 19, 149, 80, 20, 11, 200, 36, 211, 85, 56, 243, 15, 28, 144,
-			20, 11, 200, 20, 118, 80, 80, 243, 15, 28, 144, 20, 11, 200, 60, 213, 18, 20, 229, 12, 36, 112, 20, 11, 200, 52, 241, 20, 4, 113,
-			76, 36, 112, 20, 11, 200, 40, 243, 70, 73, 81, 76, 36, 112, 20, 11, 200, 24, 244, 141, 20, 229, 12, 36, 112, 20, 11, 200, 24, 244,
-			129, 72, 113, 76, 36, 112, 20, 16, 141, 16, 1, 12, 195, 166, 15, 12, 9, 20, 9, 11, 21, 13, 20, 11, 200, 13, 144, 78, 44, 19,
-			9, 84, 208, 20, 7, 196, 48, 85, 137, 80, 20, 22, 72, 12, 19, 142, 20, 195, 15, 56, 144, 49, 110, 50, 13, 55, 6, 39, 12, 50,
-			37, 0, 20, 11, 200, 44, 244, 144, 84, 193, 78, 12, 80, 20, 7, 196, 76, 148, 129, 80, 20, 9, 68, 48, 85, 133, 48, 21, 0, 10,
-			13, 3, 95, 49, 51, 47, 51, 6, 111, 72, 14, 50, 0, 0, 12, 201, 76, 176, 78, 16, 147, 129, 88, 148, 212, 20, 12, 201, 28, 83,
-			146, 20, 208, 76, 21, 34, 64, 20, 12, 201, 4, 180, 207, 56, 243, 69, 81, 34, 64, 20, 12, 201, 80, 18, 211, 60, 227, 205, 37, 50,
-			192, 20, 12, 201, 65, 54, 75, 60, 177, 77, 37, 50, 192, 20, 12, 201, 64, 243, 25, 73, 149, 13, 37, 50, 192, 20, 12, 201, 29, 32,
-			70, 60, 227, 205, 37, 50, 192, 20, 12, 201, 16, 149, 25, 72, 19, 66, 37, 50, 192, 20, 12, 201, 5, 3, 204, 60, 113, 84, 37, 50,
-			192, 20, 12, 201, 8, 20, 137, 84, 212, 213, 48, 96, 84, 20, 10, 3, 95, 49, 50, 47, 6, 114, 55, 0, 0, 13, 202, 72, 85, 18,
-			61, 52, 5, 45, 66, 79, 56, 20, 13, 202, 64, 84, 147, 21, 97, 82, 5, 66, 79, 56, 20, 13, 202, 16, 85, 5, 72, 210, 78, 5,
-			66, 79, 56, 20, 17, 206, 61, 1, 82, 5, 66, 79, 56, 19, 9, 76, 84, 137, 56, 112, 20, 9, 198, 24, 19, 12, 21, 33, 84, 20,
-			9, 198, 20, 195, 216, 21, 33, 84, 20, 9, 198, 61, 34, 71, 36, 224, 76, 20, 9, 198, 12, 84, 133, 9, 32, 76, 20, 13, 3, 95,
-			49, 53, 83, 6, 36, 65, 47, 14, 50, 0, 0, 12, 137, 11, 1, 13, 195, 166, 12, 5, 15, 14, 20, 10, 199, 80, 149, 18, 21, 34,
-			78, 28, 20, 10, 199, 48, 149, 18, 21, 34, 78, 28, 20, 10, 199, 25, 34, 83, 21, 34, 78, 28, 20, 10, 199, 17, 32, 71, 21, 34,
-			78, 28, 20, 14, 203, 88, 81, 5, 73, 53, 25, 28, 113, 76, 36, 112, 20, 9, 198, 76, 144, 137, 72, 148, 203, 20, 9, 198, 28, 83,
-			210, 28, 148, 203, 20, 9, 198, 28, 83, 133, 72, 148, 203, 20, 9, 198, 20, 118, 80, 80, 148, 203, 20, 10, 199, 56, 18, 211, 44, 245,
-			137, 80, 20, 10, 199, 80, 82, 206, 60, 180, 129, 80, 20, 10, 199, 77, 3, 206, 76, 244, 129, 80, 20, 14, 3, 95, 49, 52, 83, 57,
-			6, 39, 34, 72, 14, 50, 0, 0, 9, 198, 5, 67, 205, 37, 53, 0, 20, 7, 196, 32, 245, 5, 48, 20, 9, 198, 52, 147, 135, 20,
-			193, 82, 20, 9, 198, 44, 244, 146, 60, 65, 82, 20, 9, 198, 24, 245, 82, 4, 113, 82, 20, 9, 198, 16, 148, 211, 36, 65, 82, 20,
-			9, 198, 5, 69, 18, 4, 129, 82, 20, 6, 195, 21, 2, 75, 20, 7, 196, 88, 149, 1, 48, 20, 7, 196, 80, 245, 1, 48, 20, 10,
-			3, 95, 52, 15, 83, 57, 36, 114, 0, 12, 3, 95, 49, 55, 89, 6, 118, 72, 14, 50, 0, 0, 14, 139, 1, 18, 2, 9, 20, 18,
-			1, 7, 195, 184, 18, 20, 9, 198, 56, 243, 79, 29, 32, 77, 20, 9, 198, 24, 245, 15, 29, 32, 77, 20, 14, 3, 95, 49, 54, 89,
-			6, 35, 57, 89, 72, 14, 50, 0, 0, 13, 202, 81, 148, 15, 29, 32, 70, 21, 34, 78, 28, 20, 13, 202, 77, 147, 148, 21, 66, 83,
-			21, 34, 78, 28, 20, 13, 202, 77, 68, 149, 45, 69, 82, 21, 34, 78, 28, 20, 13, 202, 72, 243, 65, 57, 66, 83, 21, 34, 78, 28,
-			20, 13, 202, 65, 83, 22, 21, 34, 83, 21, 34, 78, 28, 20, 13, 202, 65, 34, 86, 5, 66, 83, 21, 34, 78, 28, 20, 13, 202, 64,
-			84, 137, 60, 66, 83, 21, 34, 78, 28, 20, 13, 202, 64, 20, 211, 37, 98, 83, 21, 34, 78, 28, 20, 13, 202, 48, 149, 15, 29, 32,
-			70, 21, 34, 78, 28, 20, 13, 202, 48, 16, 137, 4, 194, 83, 21, 34, 78, 28, 20, 13, 202, 44, 19, 148, 60, 226, 83, 21, 34, 78,
-			28, 20, 13, 202, 36, 226, 210, 36, 210, 78, 21, 34, 78, 28, 20, 13, 202, 36, 212, 18, 61, 98, 83, 21, 34, 78, 28, 20, 13, 202,
-			16, 85, 5, 72, 210, 78, 21, 34, 78, 28, 20, 13, 202, 8, 20, 130, 5, 34, 83, 21, 34, 78, 28, 20, 12, 201, 76, 176, 78, 16,
-			147, 129, 88, 148, 203, 20, 12, 201, 76, 49, 78, 60, 116, 129, 24, 148, 203, 20, 12, 201, 72, 84, 18, 60, 116, 129, 24, 148, 203, 20,
-			12, 201, 72, 81, 143, 72, 210, 83, 80, 148, 203, 20, 12, 201, 64, 244, 142, 60, 116, 129, 24, 148, 203, 20, 12, 201, 64, 243, 25, 80,
-			82, 83, 80, 148, 203, 20, 12, 201, 44, 20, 132, 36, 243, 15, 28, 148, 203, 20, 12, 201, 33, 145, 18, 60, 116, 129, 24, 148, 203, 20,
-			14, 139, 11, 22, 195, 166, 18, 21, 12, 1, 14, 3, 5, 20, 0, 10, 199, 52, 146, 210, 61, 50, 207, 64, 20, 12, 201, 16, 85, 5,
-			72, 210, 78, 37, 53, 0, 20, 10, 199, 88, 149, 129, 12, 149, 5, 80, 20, 10, 199, 64, 243, 1, 72, 149, 5, 80, 20, 10, 199, 52,
-			147, 143, 72, 149, 5, 80, 20, 10, 199, 48, 21, 9, 56, 149, 5, 80, 20, 10, 199, 45, 96, 78, 80, 149, 5, 80, 20, 10, 199, 44,
-			243, 137, 12, 149, 5, 80, 20, 10, 199, 44, 20, 1, 12, 149, 5, 80, 20, 10, 199, 36, 65, 78, 80, 149, 5, 80, 20, 10, 199, 25,
-			85, 9, 48, 149, 5, 80, 20, 10, 199, 21, 67, 137, 12, 149, 5, 80, 20, 9, 198, 92, 19, 9, 76, 148, 203, 20, 9, 198, 80, 83,
-			65, 80, 148, 203, 20, 9, 198, 48, 144, 133, 72, 148, 203, 20, 9, 198, 4, 116, 129, 72, 148, 203, 20, 10, 199, 76, 83, 73, 56, 20,
-			137, 20, 20, 10, 199, 76, 19, 129, 80, 244, 137, 20, 20, 9, 198, 16, 241, 205, 5, 66, 75, 20, 15, 3, 95, 55, 88, 107, 110, 55,
-			83, 57, 6, 110, 34, 89, 0, 0, 9, 198, 65, 35, 195, 20, 65, 82, 20, 11, 136, 19, 195, 166, 2, 25, 14, 9, 20, 20, 9, 198,
-			80, 19, 66, 85, 34, 78, 20, 9, 198, 64, 21, 9, 20, 229, 0, 20, 9, 198, 64, 20, 211, 4, 229, 0, 20, 0, 12, 201, 72, 80,
-			201, 65, 35, 195, 37, 65, 84, 20, 16, 205, 9, 84, 133, 5, 82, 210, 5, 66, 83, 21, 34, 78, 28, 20, 15, 204, 65, 54, 75, 60,
-			194, 78, 29, 98, 83, 80, 148, 203, 20, 8, 197, 9, 35, 205, 36, 64, 20, 9, 198, 48, 20, 135, 21, 52, 197, 20, 8, 197, 81, 34,
-			75, 36, 224, 20, 8, 197, 80, 18, 87, 4, 224, 20, 8, 197, 80, 18, 87, 4, 224, 21, 8, 197, 64, 20, 195, 4, 192, 20, 0, 13,
-			202, 77, 81, 199, 21, 53, 9, 88, 149, 5, 80, 20, 13, 202, 65, 35, 196, 84, 181, 9, 88, 149, 5, 80, 20, 13, 202, 44, 243, 132,
-			84, 181, 9, 88, 149, 5, 80, 20, 13, 202, 16, 84, 18, 21, 52, 201, 88, 149, 5, 80, 20, 12, 201, 80, 84, 141, 60, 209, 84, 72,
-			148, 203, 20, 12, 201, 77, 65, 82, 20, 241, 143, 56, 148, 203, 20, 12, 201, 52, 246, 129, 52, 34, 81, 84, 148, 203, 20, 12, 201, 52,
-			240, 193, 52, 34, 81, 84, 148, 203, 20, 13, 202, 20, 180, 193, 52, 147, 129, 80, 244, 137, 20, 20, 0, 10, 199, 36, 211, 85, 56, 243,
-			15, 28, 20, 10, 199, 77, 84, 208, 20, 225, 5, 72, 20, 11, 136, 10, 195, 184, 4, 9, 14, 4, 5, 20, 10, 199, 5, 85, 15, 52,
-			21, 9, 44, 20, 10, 199, 52, 19, 12, 61, 32, 201, 56, 20, 10, 199, 44, 243, 77, 20, 229, 1, 72, 20, 10, 199, 36, 228, 201, 57,
-			80, 78, 80, 20, 0, 9, 198, 64, 85, 9, 80, 147, 206, 20, 9, 198, 5, 81, 9, 80, 147, 206, 20, 11, 200, 76, 82, 214, 20, 229,
-			9, 20, 192, 20, 11, 200, 44, 243, 77, 21, 32, 201, 20, 192, 20, 7, 196, 72, 245, 5, 72, 20, 7, 196, 16, 245, 5, 72, 20, 11,
-			200, 36, 225, 15, 56, 84, 201, 20, 224, 20, 9, 198, 97, 147, 15, 29, 32, 70, 20, 9, 198, 48, 149, 15, 29, 32, 70, 20, 9, 198,
-			44, 83, 73, 29, 32, 70, 20, 7, 196, 60, 181, 1, 56, 21, 7, 196, 56, 245, 1, 72, 20, 7, 196, 12, 149, 1, 72, 20, 9, 198,
-			9, 34, 83, 4, 229, 0, 20, 9, 198, 89, 83, 14, 21, 32, 66, 20, 0, 12, 201, 4, 32, 146, 21, 98, 65, 81, 84, 128, 20, 8,
-			197, 80, 19, 80, 60, 224, 20, 9, 198, 5, 53, 18, 60, 227, 205, 20, 8, 197, 76, 84, 137, 20, 192, 20, 9, 198, 80, 83, 203, 72,
-			21, 9, 20, 8, 197, 80, 243, 147, 36, 192, 20, 8, 197, 89, 83, 11, 4, 224, 21, 8, 197, 88, 84, 147, 4, 192, 20, 0, 0, 10,
-			199, 4, 113, 210, 21, 52, 207, 72, 20, 10, 199, 65, 34, 79, 72, 149, 5, 72, 20, 10, 199, 88, 19, 139, 84, 225, 9, 28, 20, 10,
-			199, 52, 83, 147, 40, 85, 137, 44, 20, 10, 199, 76, 19, 65, 72, 149, 1, 56, 20, 12, 201, 32, 148, 212, 61, 34, 79, 29, 32, 70,
-			20, 10, 199, 76, 19, 65, 72, 149, 1, 56, 21, 10, 199, 36, 211, 73, 29, 32, 78, 80, 20, 10, 199, 12, 83, 5, 9, 32, 78, 80,
-			20, 0, 11, 200, 12, 244, 212, 5, 34, 67, 4, 224, 20, 9, 198, 80, 244, 15, 29, 32, 70, 20, 9, 198, 80, 83, 5, 29, 32, 70,
-			20, 9, 198, 32, 243, 79, 29, 32, 70, 20, 9, 198, 5, 85, 15, 29, 32, 70, 20, 0, 8, 197, 72, 245, 76, 21, 32, 20, 8, 197,
-			36, 210, 84, 21, 32, 20, 8, 197, 25, 34, 84, 21, 32, 20, 12, 137, 13, 5, 4, 9, 195, 166, 22, 1, 12, 20, 0, 13, 202, 88,
-			84, 147, 36, 98, 75, 5, 66, 79, 56, 20, 13, 202, 77, 65, 82, 36, 194, 83, 5, 66, 79, 56, 20, 13, 202, 77, 1, 67, 36, 98,
-			75, 5, 66, 79, 56, 20, 13, 202, 76, 240, 201, 4, 194, 83, 5, 66, 79, 56, 20, 13, 202, 53, 148, 212, 36, 98, 75, 5, 66, 79,
-			56, 20, 13, 202, 36, 229, 5, 73, 35, 199, 5, 66, 79, 56, 20, 13, 202, 29, 32, 84, 36, 98, 75, 5, 66, 79, 56, 20, 9, 198,
-			29, 32, 86, 21, 33, 64, 20, 9, 198, 9, 37, 78, 21, 33, 64, 20, 8, 67, 76, 86, 25, 21, 0, 10, 0, 9, 198, 44, 144, 83,
-			80, 148, 203, 20, 9, 198, 32, 84, 141, 21, 66, 75, 20, 12, 201, 44, 147, 133, 52, 21, 15, 29, 32, 70, 20, 10, 199, 52, 243, 147,
-			81, 32, 78, 76, 20, 0, 12, 201, 20, 224, 197, 24, 19, 15, 29, 32, 77, 20, 11, 200, 81, 34, 65, 56, 117, 76, 21, 32, 20, 11,
-			200, 77, 68, 129, 56, 117, 76, 21, 32, 20, 11, 200, 72, 80, 201, 72, 181, 76, 21, 32, 20, 11, 200, 65, 35, 211, 64, 82, 212, 21,
-			32, 20, 11, 200, 64, 20, 148, 36, 50, 80, 21, 32, 20, 0, 9, 198, 44, 147, 15, 29, 32, 77, 20, 9, 198, 32, 243, 15, 29, 32,
-			77, 20, 12, 201, 77, 68, 149, 45, 69, 82, 21, 33, 64, 20, 12, 201, 76, 181, 76, 65, 69, 82, 21, 33, 64, 20, 8, 197, 17, 32,
-			80, 21, 32, 20, 8, 197, 40, 84, 213, 37, 64, 20, 0, 9, 198, 80, 84, 212, 21, 33, 64, 20, 9, 198, 72, 84, 212, 21, 33, 64,
-			20, 9, 198, 64, 244, 212, 21, 33, 64, 20, 9, 198, 16, 243, 12, 21, 33, 64, 20, 0, 11, 4, 9, 4, 195, 169, 37, 72, 6, 36,
-			0, 9, 198, 56, 243, 65, 16, 148, 203, 20, 9, 198, 17, 147, 129, 52, 148, 203, 20, 9, 198, 4, 194, 193, 48, 148, 203, 20, 0, 11,
-			200, 44, 20, 129, 52, 35, 204, 21, 32, 20, 11, 200, 28, 84, 212, 36, 181, 76, 21, 32, 20, 11, 200, 60, 209, 143, 72, 213, 76, 21,
-			32, 20, 7, 196, 12, 148, 133, 72, 20, 9, 198, 16, 81, 137, 12, 149, 0, 20, 7, 196, 24, 20, 137, 56, 20, 7, 196, 4, 196, 9,
-			56, 20, 9, 198, 4, 225, 15, 73, 32, 78, 20, 9, 198, 44, 19, 9, 24, 21, 0, 20, 7, 196, 4, 197, 1, 56, 21, 0, 8, 197,
-			16, 148, 12, 60, 208, 20, 12, 201, 44, 243, 148, 72, 243, 12, 21, 33, 64, 20, 9, 198, 76, 49, 78, 5, 34, 69, 20, 9, 198, 76,
-			49, 78, 5, 34, 69, 20, 9, 198, 53, 148, 212, 21, 34, 69, 20, 9, 198, 16, 85, 84, 21, 34, 69, 20, 8, 197, 36, 225, 82, 80,
-			144, 20, 8, 197, 45, 34, 84, 36, 176, 20, 9, 198, 72, 85, 129, 56, 50, 5, 20, 0, 9, 198, 45, 83, 20, 85, 33, 76, 20, 9,
-			198, 77, 98, 78, 21, 34, 64, 20, 9, 198, 76, 49, 78, 21, 34, 64, 20, 9, 198, 17, 33, 74, 21, 34, 64, 20, 9, 198, 65, 35,
-			214, 77, 66, 64, 20, 0, 10, 199, 64, 243, 9, 80, 243, 15, 28, 20, 10, 199, 32, 85, 5, 72, 243, 15, 28, 20, 10, 199, 44, 244,
-			146, 61, 50, 79, 56, 20, 10, 199, 20, 180, 208, 4, 225, 5, 72, 20, 10, 199, 16, 145, 134, 84, 225, 5, 72, 20, 10, 199, 17, 34,
-			76, 4, 117, 9, 28, 20, 10, 199, 24, 243, 129, 77, 65, 78, 36, 20, 10, 199, 17, 34, 76, 4, 117, 9, 28, 20, 0, 23, 72, 4,
-			98, 67, 36, 243, 129, 16, 240, 35, 83, 37, 89, 57, 39, 6, 50, 35, 12, 72, 39, 0, 10, 135, 11, 15, 16, 9, 195, 184, 19, 20,
-			10, 135, 4, 21, 2, 9, 195, 184, 19, 20, 9, 134, 8, 21, 13, 195, 184, 18, 20, 7, 196, 24, 85, 5, 72, 20, 11, 200, 4, 225,
-			210, 36, 33, 76, 36, 112, 20, 11, 200, 4, 195, 73, 56, 65, 76, 36, 112, 20, 11, 200, 48, 144, 129, 56, 84, 201, 76, 176, 20, 11,
-			200, 36, 225, 15, 56, 84, 201, 76, 176, 20, 11, 200, 28, 16, 143, 56, 84, 201, 76, 176, 20, 11, 200, 64, 244, 212, 49, 81, 9, 84,
-			208, 20, 9, 198, 64, 20, 129, 44, 149, 0, 20, 9, 198, 16, 243, 5, 72, 149, 0, 20, 7, 196, 17, 84, 201, 56, 20, 11, 200, 72,
-			81, 143, 72, 210, 83, 52, 80, 20, 11, 200, 64, 243, 25, 80, 82, 83, 52, 80, 20, 11, 200, 61, 53, 18, 4, 178, 83, 52, 80, 20,
-			11, 200, 56, 244, 150, 4, 114, 83, 52, 80, 20, 11, 200, 53, 148, 212, 36, 50, 83, 52, 80, 20, 11, 200, 28, 145, 193, 57, 66, 83,
-			52, 80, 20, 11, 200, 28, 84, 141, 4, 226, 83, 52, 80, 20, 11, 200, 4, 225, 204, 36, 50, 83, 52, 80, 20, 11, 200, 4, 176, 68,
-			20, 210, 83, 52, 80, 20, 9, 198, 65, 34, 79, 72, 21, 0, 20, 7, 196, 52, 85, 1, 56, 21, 7, 196, 80, 21, 1, 72, 20, 8,
-			67, 24, 246, 0, 21, 0, 10, 0, 8, 197, 81, 149, 133, 72, 144, 20, 8, 197, 72, 241, 5, 72, 144, 20, 12, 201, 45, 96, 75, 76,
-			19, 22, 21, 34, 64, 20, 8, 197, 44, 241, 197, 72, 144, 20, 8, 197, 40, 17, 197, 72, 144, 20, 8, 197, 8, 17, 197, 72, 144, 20,
-			12, 201, 44, 20, 143, 48, 147, 135, 37, 50, 192, 20, 9, 198, 8, 50, 75, 61, 34, 69, 20, 9, 198, 21, 2, 90, 60, 245, 9, 20,
-			9, 198, 16, 144, 84, 21, 35, 73, 20, 8, 197, 77, 64, 84, 36, 176, 20, 12, 201, 80, 84, 146, 37, 67, 210, 36, 19, 0, 20, 0,
-			12, 137, 15, 6, 6, 9, 3, 9, 195, 184, 19, 20, 9, 198, 48, 83, 137, 56, 148, 212, 20, 9, 198, 33, 83, 79, 72, 148, 212, 20,
-			9, 198, 80, 20, 16, 21, 34, 64, 20, 9, 198, 76, 182, 68, 21, 34, 64, 20, 9, 198, 76, 182, 68, 21, 34, 64, 20, 9, 198, 76,
-			19, 20, 21, 34, 64, 20, 9, 198, 72, 148, 212, 21, 34, 64, 20, 9, 198, 52, 244, 212, 21, 34, 64, 20, 9, 198, 48, 20, 16, 21,
-			34, 64, 20, 9, 198, 40, 20, 16, 21, 34, 64, 20, 9, 198, 33, 148, 212, 21, 34, 64, 20, 9, 198, 24, 81, 20, 21, 34, 64, 20,
-			9, 198, 17, 32, 80, 21, 34, 64, 20, 9, 198, 9, 38, 68, 21, 34, 64, 20, 9, 198, 8, 85, 12, 21, 34, 64, 20, 13, 202, 28,
-			83, 129, 57, 97, 78, 16, 83, 9, 28, 20, 9, 198, 5, 34, 193, 37, 50, 192, 20, 9, 198, 16, 84, 208, 61, 66, 64, 20, 9, 198,
-			64, 20, 203, 88, 147, 0, 20, 13, 138, 6, 195, 166, 14, 15, 13, 5, 14, 1, 12, 20, 9, 198, 24, 81, 5, 72, 19, 0, 20, 0,
-			13, 138, 11, 15, 14, 20, 1, 7, 9, 195, 184, 19, 20, 13, 138, 11, 1, 16, 18, 9, 3, 9, 195, 184, 19, 20, 13, 138, 9, 14,
-			3, 5, 19, 20, 21, 195, 184, 19, 20, 10, 199, 81, 32, 68, 37, 66, 79, 56, 20, 10, 199, 76, 83, 5, 45, 66, 79, 56, 20, 10,
-			199, 44, 243, 12, 5, 66, 79, 56, 20, 10, 199, 29, 32, 68, 5, 66, 79, 56, 20, 10, 199, 44, 243, 142, 20, 181, 5, 72, 20, 10,
-			199, 4, 48, 197, 57, 69, 69, 72, 20, 14, 203, 48, 245, 141, 20, 66, 15, 48, 65, 76, 36, 112, 20, 14, 203, 77, 68, 149, 45, 69,
-			82, 4, 194, 83, 52, 80, 20, 14, 203, 65, 35, 212, 21, 53, 1, 57, 66, 83, 52, 80, 20, 14, 203, 44, 244, 205, 61, 3, 204, 37,
-			66, 83, 52, 80, 20, 14, 203, 44, 244, 144, 61, 32, 84, 37, 98, 83, 52, 80, 20, 14, 203, 36, 225, 21, 77, 68, 137, 4, 194, 83,
-			52, 80, 20, 10, 199, 25, 148, 147, 80, 147, 132, 20, 20, 12, 201, 65, 35, 212, 60, 179, 204, 48, 21, 0, 20, 10, 69, 48, 20, 20,
-			61, 0, 21, 0, 10, 11, 3, 95, 50, 88, 47, 6, 116, 12, 58, 0, 0, 14, 139, 11, 15, 13, 16, 5, 14, 4, 9, 195, 184, 19,
-			20, 9, 134, 4, 21, 19, 195, 184, 18, 20, 9, 198, 44, 20, 213, 37, 53, 0, 20, 11, 200, 48, 145, 197, 52, 17, 197, 72, 144, 20,
-			11, 200, 61, 4, 137, 56, 65, 76, 36, 112, 20, 15, 204, 44, 20, 148, 4, 114, 78, 36, 83, 147, 37, 50, 192, 20, 12, 201, 16, 148,
-			12, 60, 208, 84, 5, 34, 69, 20, 11, 200, 48, 147, 135, 88, 148, 212, 36, 176, 20, 7, 196, 88, 149, 129, 80, 20, 7, 196, 72, 149,
-			129, 48, 20, 0, 12, 201, 45, 96, 78, 80, 85, 5, 61, 34, 64, 20, 12, 201, 44, 19, 77, 21, 32, 84, 21, 34, 64, 20, 12, 201,
-			76, 243, 129, 72, 20, 16, 5, 32, 84, 20, 12, 201, 44, 20, 132, 36, 224, 76, 80, 19, 0, 20, 0, 13, 202, 81, 34, 65, 56, 117,
-			76, 5, 66, 79, 56, 20, 13, 202, 81, 32, 78, 76, 195, 203, 5, 66, 79, 56, 20, 13, 202, 77, 68, 129, 56, 117, 76, 5, 66, 79,
-			56, 20, 13, 202, 44, 243, 148, 20, 212, 12, 5, 66, 79, 56, 20, 13, 202, 36, 229, 18, 61, 52, 5, 45, 66, 79, 56, 20, 13, 202,
-			36, 212, 18, 61, 98, 83, 5, 66, 79, 56, 20, 13, 202, 4, 178, 207, 52, 211, 196, 5, 66, 79, 56, 20, 0, 12, 201, 61, 4, 15,
-			73, 69, 78, 37, 53, 0, 20, 14, 203, 64, 192, 84, 80, 83, 147, 48, 17, 197, 72, 144, 20, 14, 203, 76, 19, 77, 20, 225, 143, 48,
-			65, 76, 36, 112, 20, 10, 199, 8, 144, 140, 36, 241, 137, 48, 20, 10, 199, 60, 36, 197, 73, 96, 78, 76, 20, 0, 9, 198, 80, 19,
-			66, 85, 33, 82, 20, 9, 198, 72, 83, 73, 81, 65, 82, 20, 9, 198, 72, 82, 213, 73, 33, 82, 20, 9, 198, 64, 148, 5, 81, 65,
-			82, 20, 9, 198, 44, 243, 142, 61, 65, 82, 20, 9, 198, 44, 243, 80, 5, 33, 82, 20, 9, 198, 45, 35, 205, 5, 66, 78, 20, 7,
-			196, 56, 245, 1, 80, 20, 7, 196, 8, 21, 1, 80, 20, 9, 198, 77, 80, 139, 85, 64, 78, 21, 7, 196, 52, 85, 1, 48, 20, 7,
-			196, 48, 85, 1, 48, 20, 7, 196, 24, 21, 1, 48, 20, 10, 3, 95, 56, 15, 114, 47, 50, 108, 0, 0, 13, 138, 1, 4, 8, 195,
-			166, 18, 5, 14, 3, 5, 20, 0, 9, 198, 16, 83, 147, 37, 65, 84, 20, 11, 136, 11, 15, 8, 195, 166, 18, 5, 18, 20, 11, 136,
-			1, 4, 8, 195, 166, 18, 5, 18, 20, 9, 198, 80, 19, 10, 21, 33, 84, 20, 14, 139, 18, 5, 14, 195, 166, 19, 19, 1, 14, 3,
-			5, 20, 0, 12, 201, 65, 34, 77, 37, 66, 86, 37, 53, 0, 20, 12, 201, 36, 195, 21, 76, 147, 206, 37, 53, 0, 20, 10, 199, 85,
-			32, 129, 56, 149, 5, 80, 20, 10, 199, 65, 34, 79, 72, 149, 5, 80, 20, 10, 199, 33, 83, 65, 56, 149, 5, 80, 20, 10, 199, 4,
-			181, 9, 88, 149, 5, 80, 20, 12, 201, 45, 96, 75, 76, 19, 22, 21, 33, 82, 20, 12, 201, 9, 35, 206, 44, 244, 203, 61, 1, 82,
-			20, 10, 199, 77, 66, 80, 20, 225, 9, 20, 20, 10, 199, 44, 243, 80, 20, 225, 9, 20, 20, 9, 198, 45, 35, 205, 5, 66, 75, 20,
-			0, 9, 198, 80, 83, 80, 21, 33, 82, 20, 9, 198, 77, 147, 139, 61, 1, 82, 20, 9, 198, 72, 84, 207, 49, 97, 82, 20, 9, 198,
-			36, 226, 214, 37, 33, 82, 20, 7, 196, 29, 86, 65, 56, 20, 11, 200, 44, 243, 150, 21, 33, 197, 57, 48, 20, 9, 198, 76, 147, 85,
-			49, 64, 78, 21, 9, 198, 24, 147, 9, 29, 32, 78, 21, 0, 8, 197, 56, 85, 82, 60, 224, 20, 9, 198, 52, 85, 18, 60, 227, 205,
-			20, 12, 201, 64, 84, 144, 48, 82, 211, 37, 65, 84, 20, 12, 201, 29, 32, 78, 16, 147, 211, 37, 65, 84, 20, 9, 198, 81, 32, 86,
-			21, 53, 9, 20, 8, 197, 32, 84, 143, 36, 224, 20, 8, 197, 17, 82, 212, 36, 192, 20, 8, 197, 12, 242, 84, 4, 192, 20, 0, 13,
-			202, 72, 81, 140, 20, 180, 201, 88, 149, 5, 80, 20, 13, 202, 44, 243, 12, 20, 181, 9, 88, 149, 5, 80, 20, 13, 202, 37, 36, 133,
-			29, 83, 1, 72, 149, 5, 80, 20, 13, 202, 20, 180, 203, 49, 84, 201, 88, 149, 5, 80, 20, 9, 198, 52, 85, 5, 61, 34, 84, 20,
-			11, 70, 24, 148, 133, 92, 19, 12, 21, 0, 10, 0, 10, 199, 60, 67, 206, 80, 243, 15, 28, 20, 10, 199, 60, 49, 65, 56, 243, 15,
-			28, 20, 12, 201, 60, 212, 212, 73, 82, 212, 85, 33, 82, 20, 12, 201, 72, 84, 212, 73, 82, 212, 85, 33, 82, 20, 10, 199, 72, 84,
-			197, 73, 97, 82, 20, 20, 10, 199, 72, 84, 15, 73, 65, 82, 20, 20, 10, 199, 64, 21, 5, 57, 65, 82, 20, 20, 10, 199, 16, 84,
-			197, 73, 65, 82, 20, 20, 10, 199, 5, 69, 5, 77, 65, 82, 20, 20, 0, 12, 137, 1, 14, 195, 166, 19, 20, 5, 19, 9, 20, 9,
-			198, 8, 245, 73, 48, 195, 206, 20, 12, 201, 48, 16, 143, 72, 21, 15, 72, 149, 77, 20, 11, 200, 64, 243, 25, 56, 84, 201, 20, 224,
-			20, 11, 200, 52, 83, 1, 56, 84, 201, 20, 224, 20, 9, 198, 5, 35, 69, 56, 145, 78, 20, 9, 198, 4, 208, 137, 20, 229, 0, 20,
-			9, 198, 81, 32, 70, 36, 176, 66, 20, 9, 68, 77, 21, 65, 92, 21, 0, 10, 12, 3, 95, 63, 63, 89, 116, 65, 71, 39, 55, 0,
-			0, 13, 138, 19, 25, 14, 195, 166, 19, 20, 5, 19, 9, 20, 13, 138, 11, 9, 14, 195, 166, 19, 20, 5, 19, 9, 20, 12, 201, 20,
-			180, 208, 60, 225, 78, 80, 145, 76, 20, 8, 197, 24, 195, 206, 20, 192, 20, 8, 197, 28, 198, 75, 60, 192, 20, 9, 198, 72, 81, 149,
-			28, 149, 77, 20, 9, 198, 36, 225, 9, 12, 149, 77, 20, 9, 198, 16, 83, 9, 72, 149, 77, 20, 8, 197, 72, 84, 20, 36, 192, 20,
-			8, 197, 64, 148, 212, 36, 192, 20, 8, 197, 9, 84, 139, 36, 224, 20, 12, 137, 11, 15, 8, 195, 166, 18, 5, 14, 20, 20, 0, 11,
-			66, 53, 32, 65, 36, 89, 47, 114, 0, 25, 19, 144, 11, 195, 184, 14, 19, 4, 9, 19, 11, 18, 9, 13, 9, 14, 5, 18, 20, 13,
-			202, 76, 83, 22, 8, 82, 1, 28, 83, 9, 28, 20, 9, 198, 64, 21, 9, 20, 228, 192, 20, 9, 198, 5, 81, 9, 20, 228, 192, 20,
-			0, 10, 199, 65, 35, 202, 20, 181, 15, 72, 20, 12, 137, 12, 9, 20, 20, 5, 18, 195, 166, 18, 20, 10, 199, 72, 85, 129, 56, 50,
-			5, 72, 20, 10, 199, 36, 225, 11, 61, 2, 69, 72, 20, 10, 199, 16, 148, 212, 72, 18, 5, 72, 20, 10, 199, 4, 68, 133, 77, 49,
-			82, 20, 20, 10, 199, 24, 244, 142, 84, 101, 9, 28, 20, 10, 199, 81, 32, 77, 64, 243, 9, 56, 20, 10, 199, 72, 84, 213, 49, 64,
-			78, 80, 20, 10, 199, 60, 36, 197, 73, 96, 78, 80, 20, 11, 3, 95, 52, 88, 83, 6, 118, 12, 114, 0, 0, 13, 138, 16, 5, 14,
-			19, 9, 15, 14, 195, 166, 18, 20, 12, 201, 76, 181, 70, 24, 81, 1, 72, 149, 77, 20, 12, 201, 44, 243, 77, 37, 52, 207, 72, 149,
-			77, 20, 0, 14, 139, 6, 21, 14, 11, 20, 9, 15, 14, 195, 166, 18, 20, 8, 197, 76, 177, 76, 21, 64, 20, 8, 197, 72, 245, 76,
-			21, 64, 20, 8, 197, 8, 147, 12, 21, 64, 20, 8, 197, 89, 84, 132, 21, 32, 20, 8, 197, 20, 66, 84, 21, 32, 20, 8, 197, 16,
-			146, 212, 21, 32, 20, 9, 198, 77, 147, 77, 21, 68, 137, 20, 8, 197, 45, 98, 86, 37, 64, 20, 8, 197, 20, 35, 206, 37, 64, 20,
-			6, 195, 60, 208, 78, 20, 8, 197, 72, 80, 197, 57, 64, 20, 8, 197, 65, 34, 86, 5, 64, 20, 8, 197, 45, 32, 66, 5, 64, 20,
-			10, 69, 77, 2, 82, 37, 64, 21, 0, 10, 0, 11, 136, 19, 5, 11, 21, 12, 195, 166, 18, 20, 11, 136, 18, 5, 7, 21, 12, 195,
-			166, 18, 20, 15, 140, 16, 18, 195, 166, 12, 9, 13, 9, 14, 195, 166, 18, 20, 15, 140, 9, 14, 6, 12, 1, 20, 9, 15, 14, 195,
-			166, 18, 20, 15, 140, 5, 22, 15, 12, 21, 20, 9, 15, 14, 195, 166, 18, 20, 10, 135, 6, 195, 184, 12, 5, 18, 9, 20, 9, 198,
-			76, 243, 1, 72, 145, 64, 20, 9, 198, 41, 81, 9, 12, 145, 64, 20, 12, 137, 11, 15, 8, 195, 166, 18, 5, 14, 19, 20, 12, 137,
-			1, 4, 8, 195, 166, 18, 5, 14, 19, 20, 9, 198, 72, 83, 143, 56, 49, 64, 20, 9, 198, 36, 212, 5, 72, 144, 76, 20, 0, 16,
-			141, 18, 5, 22, 15, 12, 21, 20, 9, 15, 14, 195, 166, 18, 20, 12, 137, 11, 15, 14, 19, 21, 12, 195, 166, 18, 20, 12, 137, 7,
-			18, 1, 14, 21, 12, 195, 166, 18, 20, 16, 141, 4, 9, 19, 11, 18, 5, 20, 9, 15, 14, 195, 166, 18, 20, 12, 137, 3, 9, 18,
-			11, 21, 12, 195, 166, 18, 20, 10, 199, 76, 244, 148, 21, 34, 78, 28, 20, 10, 199, 76, 21, 84, 21, 34, 78, 28, 20, 10, 199, 73,
-			83, 132, 21, 34, 78, 28, 20, 10, 199, 60, 181, 76, 21, 34, 78, 28, 20, 10, 199, 44, 243, 148, 21, 34, 78, 28, 20, 10, 199, 44,
-			20, 148, 21, 34, 78, 28, 20, 10, 199, 9, 35, 196, 21, 34, 78, 28, 20, 11, 136, 19, 13, 195, 184, 12, 5, 18, 9, 20, 9, 198,
-			44, 244, 205, 21, 66, 75, 20, 0, 13, 138, 13, 15, 12, 5, 11, 25, 12, 195, 166, 18, 20, 13, 138, 5, 12, 5, 13, 5, 14, 20,
-			195, 166, 18, 20, 11, 200, 89, 83, 7, 5, 34, 84, 21, 64, 20, 11, 200, 80, 242, 211, 36, 50, 84, 21, 64, 20, 11, 200, 77, 80,
-			148, 36, 194, 84, 21, 64, 20, 11, 200, 64, 20, 211, 37, 98, 84, 21, 64, 20, 11, 200, 52, 244, 148, 4, 194, 84, 21, 64, 20, 11,
-			200, 52, 83, 148, 4, 194, 84, 21, 64, 20, 11, 200, 52, 21, 5, 72, 226, 84, 21, 64, 20, 11, 200, 40, 245, 137, 4, 194, 84, 21,
-			64, 20, 11, 200, 36, 225, 5, 52, 226, 84, 21, 64, 20, 11, 200, 28, 83, 137, 4, 194, 84, 21, 64, 20, 11, 200, 4, 229, 9, 45,
-			98, 84, 21, 64, 20, 11, 200, 4, 35, 143, 72, 210, 84, 21, 64, 20, 11, 200, 9, 84, 133, 5, 82, 210, 5, 64, 20, 9, 198, 57,
-			147, 70, 60, 208, 78, 21, 0, 8, 197, 76, 83, 147, 61, 32, 20, 8, 197, 12, 83, 147, 61, 32, 20, 14, 139, 19, 5, 4, 9, 13,
-			5, 14, 20, 195, 166, 18, 20, 8, 197, 4, 213, 76, 21, 64, 20, 8, 197, 44, 244, 9, 77, 64, 20, 8, 197, 21, 99, 204, 21, 32,
-			20, 9, 198, 28, 84, 137, 5, 68, 137, 20, 11, 136, 9, 8, 195, 166, 18, 4, 9, 7, 20, 12, 201, 36, 229, 15, 48, 84, 129, 56,
-			49, 64, 20, 8, 197, 88, 17, 193, 57, 64, 20, 16, 141, 18, 5, 16, 18, 195, 166, 19, 5, 14, 20, 1, 14, 20, 20, 8, 197, 61,
-			5, 1, 57, 64, 20, 0, 10, 66, 52, 48, 65, 35, 49, 6, 0, 41, 15, 140, 16, 1, 18, 12, 1, 13, 5, 14, 20, 195, 166, 18,
-			20, 13, 202, 61, 35, 129, 52, 83, 148, 21, 34, 78, 28, 20, 13, 202, 52, 19, 137, 24, 84, 212, 21, 34, 78, 28, 20, 13, 202, 44,
-			243, 150, 60, 197, 84, 21, 34, 78, 28, 20, 13, 202, 44, 243, 134, 72, 243, 148, 21, 34, 78, 28, 20, 13, 202, 36, 229, 5, 73, 3,
-			204, 21, 34, 78, 28, 20, 13, 202, 36, 225, 11, 88, 20, 148, 21, 34, 78, 28, 20, 13, 202, 16, 242, 213, 52, 83, 148, 21, 34, 78,
-			28, 20, 13, 202, 5, 33, 213, 52, 83, 148, 21, 34, 78, 28, 20, 12, 137, 19, 5, 22, 195, 166, 18, 4, 9, 7, 20, 9, 198, 72,
-			240, 137, 56, 145, 64, 20, 9, 198, 64, 243, 15, 56, 145, 64, 20, 9, 198, 36, 212, 5, 72, 145, 64, 20, 9, 198, 81, 32, 70, 36,
-			176, 76, 20, 9, 198, 76, 194, 84, 4, 113, 64, 20, 0, 16, 141, 11, 15, 13, 16, 12, 5, 13, 5, 14, 20, 195, 166, 18, 20, 10,
-			199, 32, 85, 5, 72, 243, 143, 52, 20, 14, 203, 65, 35, 214, 36, 228, 201, 4, 194, 84, 21, 64, 20, 14, 203, 20, 115, 195, 20, 229,
-			18, 36, 50, 84, 21, 64, 20, 13, 138, 15, 22, 5, 18, 8, 195, 184, 18, 9, 7, 20, 13, 138, 1, 7, 20, 22, 195, 166, 18, 4,
-			9, 7, 20, 10, 199, 72, 81, 133, 72, 83, 131, 20, 20, 10, 199, 16, 147, 9, 28, 83, 131, 20, 20, 10, 199, 16, 82, 193, 16, 83,
-			131, 20, 20, 10, 199, 5, 52, 213, 72, 19, 131, 20, 20, 14, 3, 95, 53, 88, 107, 110, 55, 6, 47, 16, 109, 89, 0, 0, 17, 142,
-			16, 5, 18, 16, 5, 14, 4, 9, 11, 21, 12, 195, 166, 18, 20, 9, 198, 60, 36, 207, 48, 85, 0, 20, 11, 200, 72, 82, 78, 88,
-			84, 212, 21, 32, 20, 11, 200, 44, 243, 147, 60, 194, 68, 21, 32, 20, 11, 200, 44, 241, 75, 76, 148, 212, 21, 32, 20, 11, 200, 20,
-			101, 5, 72, 64, 84, 21, 32, 20, 14, 139, 12, 1, 19, 20, 22, 195, 166, 18, 4, 9, 7, 20, 9, 198, 81, 32, 78, 76, 149, 0,
-			20, 7, 196, 8, 21, 9, 44, 20, 11, 200, 44, 243, 150, 21, 33, 197, 57, 64, 20, 11, 200, 8, 146, 193, 72, 35, 206, 5, 64, 20,
-			9, 198, 88, 19, 5, 72, 144, 78, 21, 0, 15, 140, 195, 184, 14, 19, 11, 22, 195, 166, 18, 4, 9, 7, 20, 15, 140, 12, 195, 166,
-			19, 5, 22, 195, 166, 18, 4, 9, 7, 20, 15, 140, 6, 15, 18, 4, 195, 184, 13, 13, 5, 12, 9, 7, 20, 9, 198, 24, 18, 212,
-			61, 69, 77, 20, 9, 198, 80, 149, 1, 56, 149, 77, 20, 9, 198, 52, 243, 143, 28, 19, 73, 20, 8, 197, 76, 147, 79, 56, 144, 20,
-			0, 9, 198, 48, 149, 21, 72, 114, 64, 20, 9, 198, 81, 34, 86, 36, 83, 0, 20, 12, 137, 15, 16, 14, 195, 165, 5, 12, 9, 7,
-			20, 16, 141, 6, 15, 18, 11, 18, 195, 166, 14, 11, 5, 12, 9, 7, 20, 6, 195, 44, 83, 73, 20, 9, 198, 48, 149, 20, 21, 32,
-			84, 20, 9, 198, 16, 148, 12, 60, 208, 84, 20, 9, 198, 5, 85, 15, 45, 32, 84, 20, 9, 198, 4, 113, 210, 20, 112, 84, 20, 9,
-			198, 56, 85, 84, 72, 19, 0, 20, 0, 17, 142, 6, 15, 18, 19, 11, 18, 195, 166, 11, 11, 5, 12, 9, 7, 20, 10, 199, 77, 98,
-			78, 4, 117, 9, 28, 20, 0, 7, 196, 8, 85, 15, 56, 20, 9, 198, 33, 145, 18, 60, 99, 206, 20, 9, 198, 29, 32, 70, 60, 99,
-			206, 20, 16, 141, 11, 195, 184, 2, 5, 14, 8, 1, 22, 14, 5, 18, 9, 20, 14, 139, 16, 195, 165, 19, 20, 195, 165, 5, 12, 9,
-			7, 20, 14, 139, 15, 22, 5, 18, 6, 12, 195, 184, 4, 9, 7, 20, 14, 139, 6, 15, 18, 19, 20, 195, 165, 5, 12, 9, 7, 20,
-			14, 139, 4, 18, 9, 11, 6, 195, 166, 12, 4, 9, 7, 20, 11, 200, 60, 36, 212, 21, 68, 137, 76, 176, 20, 11, 200, 52, 85, 1,
-			24, 244, 137, 76, 176, 20, 11, 200, 13, 147, 9, 56, 68, 137, 76, 176, 20, 11, 200, 44, 193, 80, 80, 243, 65, 56, 144, 20, 11, 200,
-			76, 128, 77, 4, 226, 83, 52, 80, 20, 11, 200, 64, 83, 142, 4, 194, 83, 52, 80, 20, 11, 200, 44, 242, 193, 36, 226, 83, 52, 80,
-			20, 11, 200, 32, 83, 12, 20, 226, 83, 52, 80, 20, 0, 11, 136, 16, 18, 5, 3, 9, 195, 184, 19, 20, 13, 138, 13, 1, 14, 195,
-			184, 22, 18, 5, 18, 5, 20, 15, 140, 13, 195, 184, 10, 19, 15, 13, 13, 5, 12, 9, 7, 20, 12, 201, 72, 17, 9, 60, 195, 199,
-			37, 50, 192, 20, 12, 201, 45, 35, 206, 60, 195, 199, 37, 50, 192, 20, 12, 201, 32, 148, 16, 60, 195, 199, 37, 50, 192, 20, 12, 201,
-			25, 33, 78, 60, 195, 199, 37, 50, 192, 20, 12, 201, 24, 147, 13, 60, 195, 199, 37, 50, 192, 20, 8, 197, 61, 96, 82, 36, 80, 20,
-			8, 197, 61, 96, 82, 36, 80, 20, 8, 197, 21, 85, 15, 56, 144, 20, 8, 197, 5, 53, 5, 56, 144, 20, 8, 197, 73, 84, 212, 36,
-			176, 20, 12, 201, 65, 35, 198, 21, 52, 207, 72, 19, 0, 20, 12, 201, 44, 243, 138, 20, 181, 21, 72, 19, 0, 20, 10, 69, 77, 21,
-			65, 72, 80, 21, 0, 10, 0, 10, 135, 8, 195, 166, 18, 5, 19, 9, 20, 9, 198, 81, 34, 76, 60, 114, 64, 20, 9, 198, 25, 83,
-			135, 36, 50, 68, 20, 9, 198, 72, 84, 213, 49, 64, 84, 20, 0, 6, 195, 32, 35, 192, 17, 10, 199, 16, 85, 15, 56, 21, 15, 72,
-			20, 10, 199, 8, 80, 82, 8, 82, 132, 20, 67, 10, 199, 72, 85, 129, 48, 145, 5, 72, 20, 10, 199, 72, 85, 15, 84, 50, 5, 72,
-			20, 10, 199, 4, 36, 212, 72, 18, 5, 72, 20, 14, 203, 20, 208, 78, 12, 148, 1, 80, 244, 137, 76, 176, 20, 10, 199, 24, 83, 129,
-			12, 85, 9, 56, 20, 14, 203, 88, 81, 197, 80, 20, 137, 4, 226, 83, 52, 80, 20, 14, 203, 37, 36, 129, 80, 147, 206, 4, 194, 83,
-			52, 80, 20, 10, 199, 9, 83, 7, 5, 34, 69, 56, 20, 12, 201, 65, 35, 198, 21, 52, 207, 72, 21, 0, 20, 11, 3, 95, 54, 88,
-			47, 16, 6, 109, 89, 0, 0, 11, 200, 77, 84, 16, 61, 37, 5, 72, 80, 20, 12, 137, 16, 18, 195, 166, 19, 20, 5, 18, 5, 20,
-			11, 200, 8, 147, 199, 72, 17, 133, 72, 80, 20, 11, 200, 77, 64, 84, 84, 20, 137, 76, 176, 20, 11, 200, 49, 83, 132, 20, 228, 201,
-			76, 176, 20, 11, 200, 45, 83, 9, 56, 20, 137, 76, 176, 20, 11, 200, 29, 148, 129, 80, 244, 137, 76, 176, 20, 11, 200, 28, 84, 137,
-			5, 68, 137, 76, 176, 20, 11, 200, 64, 192, 78, 21, 64, 82, 36, 80, 20, 11, 200, 16, 83, 6, 36, 224, 82, 36, 80, 20, 11, 200,
-			77, 148, 212, 20, 208, 84, 36, 176, 20, 11, 200, 57, 83, 73, 76, 208, 84, 36, 176, 20, 11, 200, 20, 208, 140, 20, 208, 84, 36, 176,
-			20, 11, 200, 16, 148, 12, 60, 208, 84, 36, 176, 20, 0, 10, 135, 2, 1, 14, 11, 195, 184, 18, 20, 14, 4, 95, 50, 88, 15, 47,
-			6, 116, 84, 13, 50, 13, 0, 0, 10, 135, 11, 195, 166, 12, 5, 18, 9, 20, 9, 198, 20, 180, 212, 72, 83, 64, 20, 15, 204, 56,
-			21, 18, 37, 83, 75, 5, 32, 143, 56, 21, 0, 20, 9, 198, 25, 85, 20, 21, 32, 76, 20, 0, 12, 137, 11, 18, 15, 14, 9, 11,
-			195, 184, 18, 20, 9, 198, 80, 82, 206, 60, 195, 199, 20, 9, 198, 56, 85, 82, 60, 195, 199, 20, 9, 198, 56, 82, 210, 60, 195, 199,
-			20, 12, 201, 85, 66, 76, 37, 64, 82, 37, 53, 0, 20, 12, 201, 20, 181, 137, 48, 144, 146, 37, 53, 0, 20, 14, 203, 8, 144, 140,
-			36, 245, 5, 44, 20, 137, 76, 176, 20, 14, 203, 36, 228, 212, 73, 83, 69, 57, 64, 82, 36, 80, 20, 10, 199, 52, 20, 135, 84, 84,
-			137, 80, 20, 10, 199, 25, 32, 78, 44, 241, 137, 48, 20, 9, 198, 48, 149, 21, 72, 114, 75, 20, 0, 9, 198, 56, 18, 86, 37, 53,
-			0, 20, 9, 198, 72, 84, 213, 49, 65, 82, 20, 9, 198, 72, 84, 208, 37, 33, 82, 20, 9, 198, 64, 84, 141, 85, 65, 82, 20, 9,
-			198, 64, 20, 211, 37, 97, 82, 20, 9, 198, 60, 36, 212, 37, 1, 82, 20, 9, 198, 16, 147, 73, 81, 65, 82, 20, 7, 196, 12, 149,
-			1, 80, 20, 13, 70, 52, 243, 147, 36, 85, 82, 21, 102, 114, 0, 10, 0, 9, 198, 80, 83, 5, 29, 32, 77, 20, 13, 138, 11, 195,
-			166, 18, 5, 19, 20, 5, 18, 9, 20, 9, 198, 24, 243, 137, 5, 68, 137, 20, 0, 21, 66, 36, 192, 37, 55, 15, 72, 6, 40, 12,
-			76, 57, 13, 0, 81, 100, 117, 99, 101, 32, 13, 202, 44, 243, 148, 72, 245, 133, 73, 50, 69, 48, 20, 9, 198, 8, 243, 66, 21, 33,
-			84, 20, 0, 10, 199, 88, 148, 137, 48, 149, 5, 80, 20, 10, 199, 88, 19, 9, 16, 149, 5, 80, 20, 10, 199, 80, 243, 129, 48, 149,
-			5, 80, 20, 10, 199, 52, 244, 129, 48, 149, 5, 80, 20, 10, 199, 48, 16, 137, 48, 149, 5, 80, 20, 10, 199, 44, 19, 1, 52, 149,
-			5, 80, 20, 10, 199, 8, 19, 129, 48, 149, 5, 80, 20, 10, 199, 64, 245, 5, 57, 66, 69, 48, 20, 12, 201, 4, 229, 9, 12, 128,
-			77, 9, 33, 82, 20, 0, 22, 68, 32, 20, 16, 100, 107, 110, 48, 37, 15, 6, 112, 40, 114, 0, 81, 104, 111, 117, 114, 32, 9, 198,
-			8, 82, 203, 5, 50, 78, 67, 9, 198, 4, 100, 133, 4, 113, 82, 20, 9, 198, 36, 211, 73, 29, 33, 82, 20, 9, 198, 5, 69, 18,
-			5, 1, 82, 20, 9, 198, 4, 113, 210, 20, 113, 82, 20, 9, 198, 52, 242, 203, 5, 50, 78, 20, 9, 198, 8, 82, 203, 5, 50, 78,
-			20, 7, 196, 25, 148, 201, 44, 20, 7, 196, 8, 150, 129, 72, 20, 0, 12, 201, 77, 1, 67, 36, 98, 67, 37, 65, 84, 20, 12, 201,
-			64, 84, 137, 60, 66, 67, 37, 65, 84, 20, 12, 201, 77, 1, 75, 81, 35, 199, 72, 19, 64, 20, 14, 139, 16, 195, 165, 15, 11, 20,
-			18, 15, 10, 5, 18, 20, 9, 198, 64, 243, 15, 56, 149, 77, 20, 8, 197, 80, 18, 212, 36, 192, 20, 14, 139, 7, 18, 5, 14, 195,
-			165, 5, 14, 19, 5, 18, 20, 12, 201, 44, 243, 134, 20, 65, 82, 21, 33, 84, 20, 12, 201, 16, 148, 211, 20, 210, 78, 21, 33, 84,
-			20, 12, 201, 16, 85, 5, 72, 210, 78, 21, 33, 84, 20, 0, 13, 202, 88, 82, 147, 80, 16, 137, 48, 149, 5, 80, 20, 13, 202, 84,
-			226, 86, 21, 36, 193, 48, 149, 5, 80, 20, 13, 202, 37, 36, 137, 80, 16, 137, 48, 149, 5, 80, 20, 13, 202, 20, 211, 212, 36, 243,
-			129, 48, 149, 5, 80, 20, 12, 201, 44, 243, 148, 72, 18, 5, 72, 147, 135, 20, 9, 198, 56, 245, 1, 72, 145, 76, 20, 9, 198, 16,
-			84, 21, 80, 84, 128, 20, 9, 198, 4, 212, 21, 80, 84, 128, 20, 15, 140, 7, 18, 5, 14, 195, 165, 7, 5, 14, 19, 5, 18, 20,
-			9, 198, 72, 80, 71, 20, 228, 192, 20, 0, 19, 5, 4, 10, 39, 5, 14, 72, 37, 12, 6, 72, 57, 36, 12, 57, 108, 50, 0, 10,
-			199, 61, 85, 133, 73, 69, 82, 20, 20, 10, 199, 44, 243, 134, 37, 69, 82, 20, 20, 10, 199, 24, 147, 9, 65, 2, 78, 20, 20, 10,
-			199, 16, 241, 5, 44, 17, 143, 56, 20, 10, 199, 65, 35, 214, 37, 50, 79, 56, 20, 10, 199, 44, 243, 148, 85, 50, 79, 56, 20, 10,
-			199, 16, 147, 73, 77, 50, 79, 56, 20, 10, 199, 16, 83, 73, 77, 50, 79, 56, 20, 10, 199, 64, 192, 75, 5, 65, 82, 20, 20, 10,
-			199, 45, 85, 133, 73, 65, 82, 20, 20, 10, 199, 16, 242, 212, 61, 33, 82, 20, 20, 10, 199, 16, 80, 129, 81, 65, 82, 20, 20, 10,
-			199, 5, 4, 15, 73, 65, 82, 20, 20, 10, 135, 195, 166, 20, 1, 14, 15, 12, 20, 12, 201, 5, 3, 208, 48, 82, 212, 36, 177, 82,
-			20, 10, 199, 44, 193, 77, 20, 229, 9, 56, 20, 0, 14, 204, 44, 20, 129, 45, 65, 82, 37, 53, 9, 44, 243, 128, 11, 200, 80, 83,
-			5, 88, 148, 201, 60, 224, 20, 11, 200, 77, 80, 195, 21, 52, 201, 60, 224, 20, 11, 200, 20, 180, 203, 49, 84, 201, 60, 224, 20, 11,
-			200, 16, 148, 203, 85, 52, 201, 60, 224, 20, 11, 200, 16, 145, 210, 21, 52, 201, 60, 224, 20, 11, 200, 16, 81, 210, 21, 52, 201, 60,
-			224, 20, 11, 200, 36, 225, 21, 77, 68, 137, 20, 192, 20, 11, 200, 72, 83, 1, 80, 147, 206, 20, 192, 20, 11, 200, 64, 83, 137, 12,
-			147, 12, 36, 224, 20, 7, 196, 80, 86, 1, 56, 20, 11, 200, 65, 4, 137, 56, 50, 80, 4, 192, 20, 0, 10, 135, 20, 5, 18, 14,
-			195, 166, 18, 20, 16, 205, 44, 243, 77, 20, 228, 213, 72, 16, 137, 48, 149, 5, 80, 20, 12, 201, 20, 180, 201, 77, 65, 78, 80, 145,
-			76, 20, 12, 201, 16, 145, 134, 21, 33, 78, 80, 145, 76, 20, 9, 198, 52, 241, 21, 48, 84, 133, 20, 8, 197, 77, 80, 148, 36, 192,
-			20, 8, 197, 4, 97, 200, 4, 224, 20, 8, 197, 52, 83, 148, 4, 192, 20, 10, 69, 5, 84, 212, 36, 224, 21, 0, 10, 0, 11, 136,
-			11, 15, 14, 20, 18, 195, 166, 18, 20, 9, 198, 5, 37, 5, 72, 145, 76, 20, 15, 140, 16, 18, 195, 166, 4, 5, 19, 20, 9, 14,
-			5, 18, 20, 0, 10, 199, 48, 16, 143, 72, 21, 15, 72, 20, 10, 199, 16, 81, 140, 20, 181, 15, 72, 20, 12, 137, 12, 5, 7, 9,
-			15, 14, 195, 166, 18, 20, 12, 137, 12, 1, 20, 18, 9, 14, 195, 166, 18, 20, 12, 137, 1, 11, 20, 9, 15, 14, 195, 166, 18, 20,
-			21, 71, 48, 147, 79, 85, 50, 78, 20, 55, 37, 65, 113, 89, 6, 37, 12, 50, 13, 0, 20, 10, 199, 88, 144, 146, 5, 66, 79, 56,
-			20, 10, 199, 52, 145, 210, 5, 66, 79, 56, 20, 10, 199, 44, 241, 206, 37, 66, 79, 56, 20, 10, 199, 44, 20, 142, 5, 66, 79, 56,
-			20, 14, 203, 44, 243, 147, 80, 149, 21, 80, 147, 206, 20, 192, 20, 10, 199, 77, 80, 148, 72, 18, 5, 72, 20, 10, 199, 64, 245, 5,
-			57, 49, 82, 20, 20, 10, 199, 64, 20, 212, 36, 50, 5, 72, 20, 10, 199, 4, 32, 146, 21, 98, 69, 72, 20, 13, 138, 195, 184, 11,
-			15, 14, 15, 13, 9, 19, 11, 20, 10, 199, 88, 144, 212, 61, 34, 65, 56, 20, 10, 199, 5, 52, 201, 77, 65, 78, 80, 20, 11, 3,
-			95, 56, 88, 83, 6, 37, 34, 89, 0, 0, 11, 200, 4, 113, 210, 21, 52, 201, 60, 224, 20, 11, 200, 64, 244, 201, 80, 147, 206, 20,
-			192, 20, 0, 10, 135, 21, 22, 21, 12, 195, 166, 18, 20, 10, 135, 5, 12, 9, 20, 195, 166, 18, 20, 9, 198, 8, 147, 205, 21, 68,
-			137, 20, 8, 197, 77, 83, 142, 37, 64, 20, 8, 197, 28, 19, 1, 57, 64, 20, 0, 13, 202, 64, 244, 21, 48, 20, 137, 76, 21, 15,
-			72, 20, 11, 136, 19, 1, 14, 9, 20, 195, 166, 18, 20, 13, 202, 72, 83, 79, 57, 53, 18, 5, 66, 79, 56, 20, 13, 202, 44, 243,
-			131, 20, 229, 18, 5, 66, 79, 56, 20, 13, 202, 16, 83, 79, 57, 53, 18, 5, 66, 79, 56, 20, 16, 141, 7, 25, 14, 195, 166, 11,
-			15, 12, 15, 7, 9, 19, 11, 20, 9, 198, 36, 226, 149, 72, 145, 64, 20, 9, 198, 8, 85, 15, 56, 145, 64, 20, 9, 198, 5, 37,
-			5, 72, 145, 64, 20, 9, 198, 72, 81, 149, 28, 145, 64, 20, 9, 198, 36, 225, 9, 12, 145, 64, 20, 9, 198, 16, 83, 9, 72, 145,
-			64, 20, 9, 198, 44, 240, 75, 76, 144, 76, 20, 9, 198, 16, 147, 21, 88, 144, 76, 20, 9, 198, 64, 20, 211, 4, 113, 64, 20, 0,
-			12, 137, 1, 12, 22, 5, 15, 12, 195, 166, 18, 20, 10, 199, 88, 144, 146, 21, 34, 78, 28, 20, 10, 199, 76, 84, 150, 21, 34, 78,
-			28, 20, 10, 199, 45, 35, 203, 21, 34, 78, 28, 20, 10, 199, 44, 20, 211, 21, 34, 78, 28, 20, 10, 199, 28, 192, 83, 21, 34, 78,
-			28, 20, 10, 199, 16, 244, 211, 21, 34, 78, 28, 20, 11, 136, 11, 195, 166, 22, 12, 5, 18, 9, 20, 10, 199, 44, 21, 1, 45, 33,
-			83, 20, 20, 12, 201, 16, 145, 134, 21, 33, 78, 80, 144, 66, 20, 0, 13, 138, 20, 15, 20, 1, 12, 9, 20, 195, 166, 18, 20, 11,
-			200, 76, 240, 201, 4, 194, 84, 21, 64, 20, 11, 200, 64, 84, 134, 36, 66, 84, 21, 64, 20, 11, 200, 56, 244, 141, 4, 194, 84, 21,
-			64, 20, 11, 200, 52, 244, 130, 36, 66, 84, 21, 64, 20, 11, 200, 48, 146, 214, 36, 66, 84, 21, 64, 20, 11, 200, 29, 32, 86, 36,
-			66, 84, 21, 64, 20, 11, 200, 25, 34, 71, 36, 66, 84, 21, 64, 20, 11, 200, 24, 244, 141, 4, 194, 84, 21, 64, 20, 11, 200, 24,
-			84, 148, 36, 194, 84, 21, 64, 20, 11, 200, 17, 82, 212, 36, 194, 84, 21, 64, 20, 11, 200, 9, 37, 84, 4, 194, 84, 21, 64, 20,
-			11, 200, 4, 181, 21, 4, 194, 84, 21, 64, 20, 11, 200, 4, 36, 213, 72, 66, 84, 21, 64, 20, 11, 200, 65, 35, 199, 72, 81, 9,
-			21, 32, 20, 12, 201, 64, 192, 78, 28, 83, 205, 21, 68, 137, 20, 12, 137, 4, 10, 195, 166, 22, 12, 5, 18, 9, 20, 14, 139, 195,
-			166, 20, 9, 15, 12, 15, 7, 9, 19, 11, 20, 18, 143, 6, 195, 166, 14, 15, 13, 5, 14, 15, 12, 15, 7, 9, 19, 11, 20, 9,
-			198, 8, 19, 4, 4, 178, 78, 20, 9, 198, 72, 245, 1, 72, 144, 78, 20, 9, 198, 44, 244, 147, 36, 176, 78, 20, 13, 72, 52, 19,
-			129, 28, 83, 69, 57, 64, 21, 0, 10, 11, 70, 32, 243, 204, 36, 112, 78, 21, 0, 10, 0, 14, 139, 16, 18, 15, 16, 18, 9, 5,
-			20, 195, 166, 18, 20, 14, 139, 11, 15, 13, 13, 21, 14, 9, 20, 195, 166, 18, 20, 8, 197, 72, 17, 9, 21, 32, 20, 8, 197, 24,
-			243, 9, 21, 32, 20, 12, 201, 76, 181, 70, 24, 81, 1, 72, 145, 64, 20, 12, 201, 44, 243, 77, 37, 52, 207, 72, 145, 64, 20, 8,
-			197, 24, 84, 146, 37, 64, 20, 12, 201, 52, 84, 193, 48, 194, 65, 56, 49, 64, 20, 8, 197, 44, 241, 206, 5, 64, 20, 8, 197, 53,
-			85, 1, 57, 64, 20, 6, 195, 52, 81, 0, 76, 0, 13, 202, 88, 84, 147, 36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 72, 82, 212,
-			36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 64, 20, 129, 24, 98, 78, 21, 34, 78, 28, 20, 13, 202, 52, 244, 148, 36, 98, 67, 21,
-			34, 78, 28, 20, 13, 202, 45, 96, 76, 36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 44, 243, 131, 20, 229, 18, 21, 34, 78, 28, 20,
-			13, 202, 25, 32, 75, 80, 147, 206, 21, 34, 78, 28, 20, 13, 202, 12, 84, 148, 36, 98, 67, 21, 34, 78, 28, 20, 10, 135, 22, 195,
-			166, 22, 5, 18, 9, 20, 10, 135, 20, 195, 184, 10, 5, 18, 9, 20, 9, 198, 52, 21, 5, 72, 145, 64, 20, 9, 198, 52, 18, 15,
-			56, 145, 64, 20, 9, 198, 8, 81, 207, 56, 145, 64, 20, 9, 198, 80, 149, 1, 56, 145, 64, 20, 9, 198, 44, 20, 18, 36, 49, 64,
-			20, 9, 198, 24, 18, 129, 56, 49, 64, 20, 9, 198, 44, 243, 15, 56, 144, 76, 20, 9, 198, 45, 84, 148, 4, 113, 64, 20, 0, 14,
-			203, 52, 243, 149, 52, 83, 148, 4, 194, 84, 21, 64, 20, 14, 203, 36, 225, 9, 88, 145, 21, 4, 194, 84, 21, 64, 20, 13, 138, 16,
-			195, 165, 22, 9, 19, 5, 12, 9, 7, 20, 13, 138, 1, 14, 19, 20, 195, 166, 14, 4, 9, 7, 20, 13, 138, 1, 6, 12, 195, 165,
-			19, 5, 12, 9, 7, 20, 12, 201, 29, 37, 78, 17, 69, 137, 28, 144, 78, 20, 10, 199, 48, 85, 133, 72, 19, 131, 20, 20, 10, 199,
-			5, 36, 143, 28, 19, 131, 20, 20, 8, 67, 8, 246, 64, 21, 0, 10, 14, 3, 95, 57, 88, 107, 110, 55, 83, 6, 109, 65, 89, 0,
-			0, 9, 198, 33, 145, 18, 60, 99, 210, 20, 9, 198, 80, 244, 133, 4, 67, 210, 20, 11, 200, 65, 35, 203, 85, 32, 84, 61, 32, 20,
-			7, 196, 32, 245, 133, 72, 20, 16, 141, 11, 22, 195, 166, 18, 21, 12, 1, 14, 20, 5, 18, 9, 20, 14, 139, 9, 14, 4, 19, 20,
-			195, 166, 14, 4, 9, 7, 20, 11, 200, 77, 84, 16, 48, 146, 193, 57, 64, 20, 7, 196, 16, 85, 20, 20, 76, 0, 9, 198, 44, 243,
-			77, 84, 227, 205, 20, 15, 140, 13, 9, 19, 20, 195, 166, 14, 11, 5, 12, 9, 7, 20, 12, 201, 48, 16, 143, 72, 21, 15, 72, 145,
-			64, 20, 12, 201, 4, 208, 149, 48, 21, 15, 72, 145, 64, 20, 9, 198, 5, 85, 15, 56, 243, 73, 20, 8, 197, 80, 18, 212, 36, 176,
-			20, 8, 197, 52, 244, 134, 20, 208, 20, 12, 201, 36, 228, 208, 20, 181, 18, 36, 49, 64, 20, 0, 9, 198, 104, 243, 204, 60, 114, 64,
-			20, 17, 206, 20, 180, 212, 21, 36, 137, 80, 244, 137, 4, 194, 84, 21, 64, 20, 9, 198, 52, 21, 5, 72, 145, 76, 20, 14, 139, 20,
-			9, 12, 19, 11, 195, 166, 18, 5, 18, 9, 20, 14, 139, 15, 22, 5, 18, 12, 195, 184, 2, 5, 18, 9, 20, 9, 198, 9, 32, 75,
-			80, 80, 84, 20, 0, 10, 199, 25, 32, 78, 44, 241, 143, 56, 20, 10, 199, 80, 83, 5, 52, 85, 18, 36, 20, 10, 199, 76, 241, 137,
-			77, 65, 82, 36, 20, 10, 199, 72, 85, 8, 5, 97, 82, 36, 20, 10, 199, 64, 81, 1, 57, 65, 82, 36, 20, 10, 199, 36, 225, 129,
-			57, 65, 82, 36, 20, 13, 138, 12, 5, 13, 6, 195, 166, 12, 4, 9, 7, 20, 13, 138, 1, 6, 12, 195, 166, 19, 5, 12, 9, 7,
-			20, 10, 199, 80, 83, 5, 52, 21, 9, 44, 20, 10, 199, 64, 225, 85, 52, 21, 9, 44, 20, 10, 199, 29, 32, 77, 52, 21, 9, 44,
-			20, 10, 199, 20, 225, 82, 28, 85, 9, 44, 20, 10, 199, 4, 34, 200, 5, 50, 69, 56, 20, 10, 199, 24, 20, 200, 36, 243, 129, 8,
-			20, 0, 11, 200, 80, 84, 146, 5, 52, 197, 72, 80, 20, 14, 139, 16, 195, 165, 22, 9, 18, 11, 5, 12, 9, 7, 20, 14, 139, 6,
-			15, 18, 4, 195, 184, 10, 5, 12, 9, 7, 20, 11, 200, 64, 84, 137, 24, 84, 137, 76, 176, 20, 11, 200, 64, 83, 135, 20, 116, 137,
-			76, 176, 20, 11, 200, 4, 193, 65, 80, 244, 137, 76, 176, 20, 11, 200, 80, 84, 146, 37, 67, 210, 36, 80, 20, 11, 200, 60, 97, 133,
-			73, 67, 210, 36, 80, 20, 12, 201, 4, 208, 149, 48, 21, 15, 72, 149, 77, 20, 0, 12, 201, 44, 147, 133, 76, 147, 204, 60, 114, 64,
-			20, 12, 201, 80, 84, 146, 37, 67, 210, 36, 83, 0, 20, 8, 197, 64, 244, 197, 72, 80, 20, 8, 197, 4, 181, 5, 72, 80, 20, 9,
-			198, 64, 148, 212, 4, 50, 69, 20, 9, 198, 5, 84, 208, 36, 50, 69, 20, 8, 197, 36, 66, 79, 80, 144, 20, 8, 197, 52, 20, 212,
-			36, 176, 20, 8, 197, 8, 84, 212, 36, 176, 20, 12, 201, 44, 243, 77, 37, 52, 193, 72, 144, 84, 20, 0, 9, 198, 41, 81, 9, 12,
-			145, 76, 20, 10, 135, 12, 195, 166, 4, 5, 18, 5, 20, 16, 141, 19, 5, 12, 22, 6, 195, 184, 12, 7, 5, 12, 9, 7, 20, 9,
-			198, 64, 84, 212, 36, 50, 68, 20, 9, 198, 21, 84, 153, 80, 210, 64, 20, 9, 198, 25, 32, 75, 80, 147, 0, 20, 9, 198, 8, 84,
-			212, 40, 19, 0, 20, 13, 3, 95, 63, 65, 71, 39, 40, 89, 47, 35, 58, 0, 0, 16, 5, 3, 4, 39, 5, 14, 89, 36, 12, 72,
-			36, 12, 108, 50, 0, 10, 199, 61, 33, 9, 56, 21, 15, 72, 20, 10, 199, 72, 84, 1, 81, 34, 69, 72, 20, 11, 136, 13, 195, 184,
-			2, 12, 5, 18, 5, 20, 10, 199, 44, 243, 148, 72, 18, 5, 72, 20, 10, 199, 16, 83, 149, 57, 66, 69, 72, 20, 10, 199, 72, 245,
-			9, 77, 49, 82, 36, 20, 10, 199, 4, 193, 143, 57, 49, 82, 36, 20, 17, 142, 12, 5, 20, 16, 195, 165, 22, 9, 18, 11, 5, 12,
-			9, 7, 20, 14, 203, 61, 33, 193, 56, 148, 193, 80, 244, 137, 76, 176, 20, 14, 203, 44, 243, 134, 37, 50, 193, 80, 244, 137, 76, 176,
-			20, 12, 201, 64, 20, 211, 36, 243, 133, 72, 85, 0, 20, 0, 7, 196, 12, 84, 149, 80, 20, 9, 198, 104, 147, 206, 37, 53, 0, 20,
-			11, 200, 77, 64, 84, 84, 84, 137, 56, 112, 20, 11, 200, 76, 180, 129, 88, 84, 137, 56, 112, 20, 11, 200, 72, 81, 21, 12, 84, 137,
-			56, 112, 20, 11, 200, 64, 20, 129, 24, 84, 137, 56, 112, 20, 11, 200, 44, 19, 143, 56, 84, 137, 56, 112, 20, 11, 200, 36, 225, 137,
-			12, 84, 137, 56, 112, 20, 11, 200, 36, 115, 143, 72, 84, 137, 56, 112, 20, 11, 200, 28, 83, 133, 72, 84, 137, 56, 112, 20, 11, 200,
-			20, 228, 201, 48, 84, 137, 56, 112, 20, 11, 200, 17, 81, 76, 48, 84, 137, 56, 112, 20, 11, 200, 16, 84, 137, 88, 84, 137, 56, 112,
-			20, 11, 200, 4, 35, 206, 56, 84, 137, 56, 112, 20, 11, 200, 76, 177, 76, 21, 69, 5, 72, 80, 20, 11, 200, 72, 245, 76, 21, 69,
-			5, 72, 80, 20, 11, 200, 65, 35, 202, 20, 181, 5, 72, 80, 20, 11, 200, 8, 147, 12, 21, 69, 5, 72, 80, 20, 11, 200, 80, 17,
-			19, 40, 146, 201, 76, 176, 20, 11, 200, 40, 21, 129, 56, 84, 201, 76, 176, 20, 11, 200, 4, 195, 5, 28, 244, 137, 76, 176, 20, 11,
-			200, 9, 32, 86, 85, 32, 82, 36, 80, 20, 7, 196, 12, 149, 137, 48, 20, 11, 200, 16, 144, 71, 56, 244, 212, 36, 176, 20, 9, 198,
-			4, 192, 129, 56, 145, 78, 20, 0, 12, 201, 81, 32, 68, 37, 66, 79, 56, 83, 0, 20, 9, 198, 28, 83, 205, 21, 68, 137, 20, 0,
-			20, 3, 13, 195, 165, 65, 6, 113, 12, 15, 107, 110, 12, 0, 81, 104, 97, 118, 101, 32, 14, 70, 48, 145, 197, 76, 243, 64, 55, 37,
-			89, 114, 65, 0, 17, 70, 77, 98, 78, 28, 243, 64, 89, 84, 36, 68, 6, 114, 65, 0, 20, 9, 198, 5, 85, 15, 56, 243, 64, 20,
-			9, 198, 4, 224, 71, 72, 19, 64, 20, 10, 135, 8, 195, 166, 12, 5, 18, 9, 20, 13, 202, 24, 244, 134, 5, 69, 5, 72, 147, 132,
-			20, 20, 9, 198, 48, 82, 211, 36, 176, 76, 20, 6, 131, 13, 195, 165, 76, 0, 17, 5, 2, 8, 39, 5, 18, 71, 4, 36, 12, 107,
-			6, 113, 12, 114, 0, 15, 5, 3, 4, 39, 5, 18, 89, 36, 12, 72, 36, 12, 114, 0, 12, 201, 72, 85, 137, 76, 147, 206, 37, 53,
-			0, 20, 14, 203, 84, 66, 207, 56, 181, 82, 72, 84, 137, 56, 112, 20, 14, 203, 81, 32, 85, 52, 21, 9, 76, 84, 137, 56, 112, 20,
-			14, 203, 80, 84, 141, 60, 116, 129, 24, 84, 137, 56, 112, 20, 14, 203, 77, 1, 67, 36, 19, 9, 76, 84, 137, 56, 112, 20, 10, 199,
-			61, 134, 68, 21, 34, 78, 28, 20, 10, 199, 61, 130, 68, 21, 34, 78, 28, 20, 14, 203, 56, 243, 73, 56, 19, 9, 76, 84, 137, 56,
-			112, 20, 14, 203, 56, 85, 84, 72, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 56, 21, 21, 72, 19, 9, 76, 84, 137, 56, 112, 20,
-			10, 199, 52, 21, 20, 21, 34, 78, 28, 20, 14, 203, 48, 144, 133, 72, 19, 9, 76, 84, 137, 56, 112, 20, 10, 199, 45, 34, 68, 21,
-			34, 78, 28, 20, 14, 203, 44, 20, 9, 80, 19, 9, 76, 84, 137, 56, 112, 20, 10, 199, 41, 84, 212, 21, 34, 78, 28, 20, 10, 199,
-			37, 51, 204, 21, 34, 78, 28, 20, 10, 199, 16, 243, 12, 21, 34, 78, 28, 20, 14, 203, 16, 147, 69, 57, 50, 79, 56, 84, 137, 56,
-			112, 20, 14, 203, 16, 21, 1, 52, 21, 9, 76, 84, 137, 56, 112, 20, 14, 203, 4, 48, 197, 77, 50, 79, 56, 84, 137, 56, 112, 20,
-			15, 140, 16, 15, 18, 20, 18, 195, 166, 20, 20, 5, 18, 5, 20, 12, 201, 12, 83, 148, 72, 19, 1, 76, 145, 78, 20, 10, 199, 16,
-			145, 134, 21, 33, 78, 76, 20, 10, 199, 64, 84, 147, 21, 34, 193, 80, 20, 10, 199, 29, 147, 78, 5, 50, 65, 48, 20, 0, 9, 198,
-			17, 32, 71, 37, 53, 0, 20, 9, 198, 81, 32, 70, 36, 177, 82, 20, 9, 198, 77, 81, 134, 36, 113, 82, 20, 9, 198, 72, 84, 12,
-			36, 49, 82, 20, 9, 198, 72, 83, 143, 56, 49, 82, 20, 9, 198, 44, 243, 147, 84, 209, 82, 20, 9, 198, 36, 226, 149, 72, 145, 82,
-			20, 9, 198, 16, 84, 12, 4, 49, 82, 20, 12, 137, 19, 11, 195, 166, 20, 20, 5, 18, 9, 20, 12, 201, 16, 83, 147, 37, 67, 205,
-			21, 68, 137, 20, 9, 198, 56, 145, 197, 72, 144, 78, 20, 9, 198, 4, 225, 204, 60, 208, 78, 21, 0, 0, 9, 198, 21, 2, 71, 72,
-			19, 64, 20, 13, 202, 16, 148, 212, 72, 144, 149, 21, 34, 78, 28, 20, 11, 70, 92, 84, 212, 21, 35, 128, 21, 0, 10, 0, 9, 198,
-			32, 148, 212, 60, 195, 199, 20, 12, 201, 45, 33, 65, 80, 147, 206, 37, 53, 0, 20, 12, 201, 72, 17, 9, 60, 66, 82, 36, 113, 82,
-			20, 12, 201, 65, 35, 199, 56, 244, 212, 36, 49, 82, 20, 11, 136, 19, 13, 195, 184, 18, 5, 18, 9, 20, 10, 199, 72, 84, 208, 60,
-			228, 213, 52, 20, 10, 199, 29, 32, 80, 80, 243, 9, 80, 20, 10, 199, 65, 35, 202, 20, 181, 9, 48, 20, 12, 137, 11, 195, 184, 7,
-			5, 14, 19, 5, 18, 20, 10, 199, 64, 245, 5, 57, 66, 65, 48, 20, 0, 9, 198, 5, 36, 129, 56, 113, 82, 20, 16, 141, 195, 166,
-			18, 5, 19, 11, 195, 166, 14, 4, 5, 18, 9, 20, 18, 143, 16, 1, 12, 195, 166, 15, 14, 20, 15, 12, 15, 7, 9, 19, 11, 20,
-			13, 138, 8, 195, 166, 18, 5, 20, 9, 11, 5, 18, 20, 9, 198, 20, 193, 71, 36, 177, 82, 20, 18, 70, 52, 20, 143, 12, 18, 78,
-			65, 112, 34, 39, 6, 49, 109, 68, 0, 20, 11, 200, 44, 242, 78, 12, 145, 5, 57, 48, 20, 9, 198, 21, 35, 212, 60, 208, 78, 21,
-			11, 4, 95, 8, 15, 11, 107, 6, 40, 49, 0, 0, 19, 144, 1, 14, 195, 166, 19, 20, 5, 19, 9, 15, 12, 15, 7, 9, 19, 11,
-			20, 12, 137, 16, 18, 195, 166, 4, 9, 11, 1, 20, 20, 9, 198, 45, 34, 84, 37, 48, 66, 20, 0, 12, 137, 1, 18, 11, 195, 166,
-			15, 12, 15, 7, 20, 14, 139, 15, 18, 4, 11, 12, 195, 184, 22, 5, 18, 9, 20, 11, 136, 6, 195, 184, 14, 9, 11, 5, 18, 20,
-			13, 202, 44, 243, 15, 72, 21, 21, 72, 20, 137, 20, 20, 8, 197, 76, 20, 132, 36, 224, 20, 8, 197, 16, 147, 216, 36, 224, 20, 8,
-			197, 40, 244, 132, 4, 224, 20, 8, 197, 8, 192, 68, 4, 224, 21, 8, 197, 37, 36, 133, 4, 192, 20, 0, 9, 198, 16, 80, 201, 76,
-			244, 128, 20, 9, 198, 88, 81, 197, 80, 84, 128, 20, 9, 198, 88, 19, 21, 80, 84, 128, 20, 9, 198, 76, 19, 21, 80, 84, 128, 20,
-			9, 198, 72, 85, 137, 16, 84, 128, 20, 9, 198, 72, 84, 201, 16, 84, 128, 20, 9, 198, 72, 82, 217, 48, 84, 128, 20, 9, 198, 72,
-			81, 193, 48, 84, 128, 20, 9, 198, 72, 80, 201, 80, 84, 128, 20, 9, 198, 64, 242, 213, 48, 84, 128, 20, 9, 198, 61, 1, 1, 80,
-			84, 128, 20, 9, 198, 52, 81, 9, 80, 84, 128, 20, 9, 198, 48, 144, 201, 80, 84, 128, 20, 9, 198, 44, 194, 67, 32, 84, 128, 20,
-			9, 198, 16, 84, 9, 48, 84, 128, 20, 9, 198, 16, 80, 201, 16, 84, 128, 20, 9, 198, 12, 148, 197, 48, 84, 128, 20, 12, 201, 5,
-			85, 5, 57, 66, 70, 36, 49, 82, 20, 12, 201, 65, 35, 199, 56, 244, 212, 36, 177, 82, 20, 9, 198, 53, 144, 78, 52, 20, 128, 20,
-			9, 198, 16, 148, 212, 4, 229, 0, 20, 9, 198, 8, 20, 212, 4, 229, 0, 20, 9, 198, 80, 243, 5, 72, 16, 128, 20, 14, 70, 33,
-			99, 210, 24, 244, 128, 84, 114, 83, 6, 114, 0, 0, 10, 199, 52, 147, 137, 5, 69, 82, 20, 20, 10, 199, 52, 147, 137, 5, 69, 82,
-			20, 20, 16, 6, 11, 195, 184, 18, 15, 13, 49, 118, 51, 6, 114, 65, 0, 20, 10, 199, 16, 145, 134, 85, 50, 79, 56, 20, 9, 198,
-			57, 80, 78, 12, 84, 133, 20, 10, 199, 36, 228, 212, 4, 195, 5, 72, 20, 9, 198, 29, 83, 77, 36, 84, 133, 20, 10, 199, 16, 84,
-			212, 36, 195, 5, 72, 20, 9, 198, 16, 144, 75, 72, 243, 137, 20, 17, 142, 16, 1, 12, 195, 166, 19, 20, 9, 14, 5, 14, 19, 5,
-			18, 20, 17, 142, 14, 25, 11, 195, 184, 2, 9, 14, 7, 5, 14, 19, 5, 18, 20, 17, 142, 8, 10, 195, 184, 18, 18, 9, 14, 7,
-			5, 14, 19, 5, 18, 20, 10, 135, 195, 184, 4, 9, 16, 1, 12, 20, 15, 4, 95, 15, 7, 15, 6, 115, 81, 115, 50, 4, 109, 49,
-			0, 0, 18, 143, 18, 21, 4, 11, 195, 184, 2, 9, 14, 7, 5, 14, 19, 5, 18, 20, 0, 8, 197, 64, 84, 147, 60, 224, 20, 12,
-			201, 52, 243, 143, 25, 67, 206, 28, 84, 128, 20, 12, 201, 52, 146, 210, 61, 50, 207, 64, 84, 128, 20, 8, 197, 17, 83, 208, 60, 192,
-			20, 8, 197, 25, 34, 71, 36, 64, 20, 8, 197, 64, 192, 84, 36, 224, 20, 8, 197, 44, 19, 204, 36, 224, 20, 19, 144, 19, 195, 184,
-			14, 4, 5, 18, 2, 15, 18, 7, 5, 14, 19, 5, 18, 20, 19, 144, 19, 1, 11, 19, 11, 195, 184, 2, 9, 14, 7, 5, 14, 19,
-			5, 18, 20, 19, 144, 18, 9, 14, 7, 11, 195, 184, 2, 9, 14, 7, 5, 14, 19, 5, 18, 20, 12, 201, 32, 240, 146, 60, 113, 78,
-			76, 84, 128, 20, 8, 197, 64, 192, 84, 36, 224, 20, 8, 197, 44, 20, 211, 4, 32, 20, 0, 9, 198, 81, 37, 78, 44, 84, 128, 20,
-			9, 198, 81, 32, 75, 80, 84, 128, 20, 13, 202, 77, 80, 147, 80, 19, 148, 37, 97, 82, 20, 20, 9, 198, 64, 149, 143, 80, 84, 128,
-			20, 13, 202, 64, 84, 147, 64, 82, 212, 37, 97, 82, 20, 20, 9, 198, 44, 20, 212, 72, 84, 128, 20, 9, 198, 24, 147, 20, 72, 84,
-			128, 20, 9, 198, 21, 50, 193, 64, 84, 128, 20, 9, 198, 12, 130, 70, 72, 84, 128, 20, 9, 198, 4, 178, 207, 48, 84, 128, 20, 12,
-			137, 10, 21, 2, 9, 12, 195, 166, 21, 13, 20, 18, 143, 14, 195, 184, 18, 18, 5, 19, 21, 14, 4, 2, 25, 14, 9, 20, 20, 11,
-			136, 7, 18, 195, 165, 19, 20, 5, 14, 20, 9, 198, 77, 65, 76, 48, 20, 128, 20, 9, 198, 28, 195, 211, 76, 20, 128, 20, 9, 198,
-			72, 84, 1, 72, 16, 128, 20, 9, 198, 56, 21, 137, 28, 16, 128, 20, 0, 10, 199, 77, 69, 75, 44, 21, 21, 72, 20, 9, 198, 29,
-			32, 70, 60, 227, 205, 20, 10, 199, 72, 85, 5, 57, 66, 79, 56, 20, 10, 199, 60, 181, 76, 5, 66, 79, 56, 20, 10, 199, 24, 244,
-			141, 5, 66, 79, 56, 20, 10, 199, 16, 85, 5, 57, 66, 79, 56, 20, 10, 199, 16, 81, 140, 5, 66, 79, 56, 20, 9, 198, 56, 20,
-			193, 48, 84, 133, 20, 10, 199, 4, 224, 76, 101, 49, 82, 20, 20, 10, 199, 8, 147, 198, 101, 50, 83, 44, 20, 10, 199, 29, 35, 211,
-			29, 32, 73, 56, 20, 10, 199, 4, 193, 65, 80, 244, 137, 44, 20, 21, 146, 19, 20, 21, 2, 2, 5, 11, 195, 184, 2, 9, 14, 7,
-			5, 14, 19, 5, 18, 20, 10, 199, 44, 243, 208, 21, 32, 78, 80, 20, 0, 9, 198, 80, 18, 211, 5, 67, 210, 20, 11, 200, 20, 180,
-			203, 85, 36, 201, 60, 224, 20, 15, 204, 65, 34, 86, 5, 65, 137, 56, 19, 147, 36, 84, 128, 20, 11, 200, 72, 129, 85, 52, 21, 15,
-			36, 64, 20, 11, 200, 81, 80, 133, 72, 181, 76, 36, 224, 20, 11, 200, 88, 83, 133, 105, 81, 76, 4, 224, 20, 11, 200, 44, 20, 193,
-			44, 132, 212, 4, 224, 21, 7, 196, 36, 208, 71, 20, 20, 9, 68, 36, 208, 71, 20, 21, 0, 10, 0, 8, 197, 5, 162, 77, 85, 64,
-			20, 12, 201, 44, 243, 147, 64, 148, 129, 80, 244, 128, 20, 12, 201, 44, 243, 77, 20, 229, 1, 80, 244, 128, 20, 12, 201, 4, 48, 197,
-			48, 84, 129, 80, 244, 128, 20, 12, 201, 77, 65, 82, 20, 245, 25, 64, 84, 128, 20, 12, 201, 36, 225, 5, 45, 49, 82, 12, 84, 128,
-			20, 12, 201, 4, 67, 73, 56, 148, 212, 72, 84, 128, 20, 0, 15, 140, 16, 18, 15, 20, 15, 11, 15, 12, 12, 195, 166, 18, 20, 9,
-			198, 56, 82, 210, 61, 49, 64, 20, 9, 198, 36, 225, 15, 48, 241, 192, 20, 13, 202, 36, 229, 5, 73, 3, 204, 5, 66, 79, 56, 20,
-			9, 198, 4, 68, 133, 77, 49, 64, 20, 9, 198, 44, 19, 15, 72, 145, 64, 20, 9, 198, 28, 83, 199, 72, 17, 128, 20, 0, 10, 199,
-			56, 244, 141, 21, 34, 78, 28, 20, 10, 199, 4, 226, 77, 21, 34, 78, 28, 20, 0, 9, 198, 72, 243, 139, 20, 67, 210, 20, 15, 204,
-			20, 180, 208, 21, 34, 77, 20, 229, 1, 80, 244, 128, 20, 9, 198, 4, 226, 77, 5, 67, 210, 20, 11, 200, 44, 243, 132, 61, 69, 9,
-			21, 32, 20, 15, 204, 44, 19, 21, 56, 64, 143, 72, 113, 78, 76, 84, 128, 20, 0, 11, 136, 11, 195, 166, 20, 20, 5, 18, 9, 20,
-			11, 136, 8, 195, 166, 18, 4, 5, 18, 9, 20, 12, 201, 48, 82, 211, 36, 179, 199, 72, 17, 128, 20, 8, 197, 77, 6, 71, 5, 64,
-			20, 0, 9, 198, 48, 18, 212, 61, 49, 64, 20, 9, 198, 12, 148, 146, 61, 49, 64, 20, 13, 202, 16, 148, 211, 20, 229, 9, 21, 34,
-			78, 28, 20, 12, 137, 19, 13, 195, 165, 20, 20, 5, 18, 9, 20, 9, 198, 8, 147, 199, 72, 17, 128, 20, 9, 198, 60, 48, 201, 16,
-			83, 148, 20, 9, 198, 24, 192, 71, 72, 19, 148, 20, 0, 18, 207, 8, 83, 133, 16, 146, 212, 36, 225, 82, 44, 195, 211, 80, 84, 128,
-			68, 9, 198, 76, 192, 71, 80, 84, 137, 20, 13, 138, 6, 15, 18, 18, 195, 166, 4, 5, 18, 9, 20, 10, 199, 72, 84, 211, 61, 84,
-			131, 20, 20, 10, 199, 36, 115, 143, 72, 19, 131, 20, 20, 0, 11, 200, 77, 66, 77, 84, 192, 84, 61, 32, 20, 11, 200, 4, 224, 76,
-			101, 48, 84, 61, 32, 20, 11, 200, 16, 148, 211, 20, 229, 9, 21, 32, 20, 10, 135, 18, 195, 184, 22, 5, 18, 9, 20, 6, 195, 28,
-			83, 137, 20, 9, 198, 44, 20, 9, 80, 19, 0, 20, 0, 12, 201, 84, 225, 196, 60, 211, 69, 48, 145, 192, 20, 8, 197, 20, 198, 83,
-			36, 80, 20, 8, 197, 8, 82, 214, 20, 208, 20, 12, 201, 77, 1, 75, 81, 35, 199, 72, 17, 128, 20, 8, 197, 44, 20, 129, 16, 80,
-			20, 0, 11, 136, 20, 1, 20, 15, 22, 195, 184, 18, 20, 9, 198, 72, 20, 137, 80, 85, 0, 20, 18, 70, 8, 148, 203, 84, 149, 0,
-			71, 37, 89, 49, 84, 6, 37, 47, 0, 20, 9, 198, 88, 146, 193, 72, 144, 84, 20, 9, 198, 77, 84, 146, 60, 112, 84, 20, 0, 9,
-			198, 36, 225, 15, 48, 241, 201, 20, 9, 198, 52, 146, 210, 61, 67, 205, 20, 10, 199, 36, 226, 193, 52, 147, 133, 72, 20, 10, 199, 36,
-			195, 21, 52, 147, 133, 72, 20, 10, 199, 65, 54, 75, 36, 21, 18, 36, 20, 10, 199, 64, 20, 9, 77, 65, 82, 36, 20, 10, 199, 61,
-			5, 15, 52, 85, 18, 36, 20, 10, 199, 17, 148, 197, 57, 65, 82, 36, 20, 9, 198, 36, 212, 5, 72, 149, 77, 20, 28, 67, 48, 149,
-			0, 55, 37, 72, 108, 48, 110, 34, 6, 112, 72, 0, 20, 82, 100, 101, 32, 112, 97, 114, 97, 100, 101, 32, 0, 11, 200, 44, 243, 134,
-			20, 181, 21, 72, 80, 20, 12, 201, 80, 18, 201, 77, 67, 211, 44, 244, 0, 20, 12, 201, 20, 193, 75, 81, 35, 211, 44, 244, 0, 20,
-			11, 200, 52, 147, 133, 72, 19, 15, 28, 144, 20, 11, 200, 45, 33, 77, 48, 243, 15, 28, 144, 20, 11, 200, 84, 67, 5, 88, 84, 137,
-			56, 112, 20, 11, 200, 81, 32, 83, 76, 84, 137, 56, 112, 20, 11, 200, 80, 20, 137, 24, 84, 137, 56, 112, 20, 11, 200, 77, 84, 16,
-			48, 84, 137, 56, 112, 20, 11, 200, 64, 19, 143, 72, 84, 137, 56, 112, 20, 11, 200, 53, 83, 11, 80, 84, 137, 56, 112, 20, 12, 137,
-			12, 195, 166, 4, 5, 18, 9, 14, 7, 20, 11, 200, 29, 32, 68, 84, 84, 137, 56, 112, 20, 11, 200, 25, 35, 212, 80, 84, 137, 56,
-			112, 20, 11, 200, 21, 96, 76, 84, 84, 137, 56, 112, 20, 11, 200, 17, 33, 83, 76, 84, 137, 56, 112, 20, 11, 200, 16, 83, 79, 48,
-			84, 137, 56, 112, 20, 11, 200, 16, 81, 137, 56, 84, 137, 56, 112, 20, 11, 200, 5, 34, 201, 88, 84, 137, 56, 112, 20, 11, 200, 24,
-			19, 148, 5, 50, 82, 36, 112, 20, 9, 198, 4, 84, 143, 76, 243, 0, 20, 11, 200, 64, 84, 137, 60, 66, 75, 84, 208, 20, 11, 200,
-			21, 2, 67, 20, 229, 18, 84, 208, 20, 6, 195, 52, 19, 137, 20, 9, 198, 44, 241, 9, 12, 147, 0, 20, 9, 198, 12, 19, 69, 72,
-			245, 78, 20, 11, 200, 44, 243, 134, 21, 33, 78, 12, 80, 20, 9, 198, 25, 35, 206, 80, 19, 0, 20, 9, 198, 16, 80, 201, 52, 19,
-			0, 20, 0, 12, 201, 32, 85, 5, 72, 241, 15, 45, 50, 64, 20, 12, 201, 44, 243, 134, 36, 65, 78, 80, 145, 76, 20, 8, 197, 52,
-			82, 133, 72, 144, 20, 8, 197, 4, 225, 5, 72, 144, 20, 15, 204, 65, 54, 75, 61, 0, 84, 60, 195, 199, 37, 50, 192, 20, 12, 201,
-			65, 54, 75, 61, 0, 84, 37, 50, 192, 20, 10, 199, 65, 54, 75, 61, 0, 84, 36, 20, 8, 197, 73, 149, 13, 36, 176, 20, 9, 198,
-			65, 54, 75, 61, 0, 84, 20, 8, 197, 5, 34, 193, 16, 80, 20, 0, 10, 135, 16, 1, 19, 20, 195, 184, 19, 20, 11, 136, 19, 1,
-			2, 15, 20, 195, 184, 18, 20, 9, 198, 17, 148, 198, 5, 50, 64, 20, 9, 198, 76, 147, 9, 44, 21, 0, 20, 9, 198, 64, 192, 71,
-			36, 21, 0, 20, 9, 198, 44, 20, 197, 52, 21, 0, 20, 8, 66, 61, 48, 114, 89, 0, 76, 11, 4, 14, 195, 165, 18, 50, 114, 34,
-			0, 8, 0, 10, 199, 4, 69, 143, 44, 21, 21, 72, 20, 12, 137, 18, 5, 4, 1, 11, 20, 195, 184, 18, 20, 12, 137, 16, 18, 15,
-			3, 5, 4, 195, 184, 18, 20, 14, 203, 8, 84, 212, 36, 19, 9, 76, 84, 137, 56, 112, 69, 10, 199, 76, 149, 21, 5, 66, 79, 56,
-			20, 10, 199, 72, 81, 1, 45, 66, 79, 56, 20, 10, 199, 72, 17, 9, 5, 66, 79, 56, 20, 10, 199, 36, 226, 133, 45, 66, 79, 56,
-			20, 10, 199, 36, 225, 133, 45, 66, 79, 56, 20, 14, 203, 81, 34, 86, 36, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 77, 66, 71,
-			52, 21, 9, 76, 84, 137, 56, 112, 20, 14, 203, 76, 176, 78, 16, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 76, 82, 211, 84, 19,
-			9, 76, 84, 137, 56, 112, 20, 14, 203, 72, 17, 9, 44, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 53, 84, 201, 44, 19, 9, 76,
-			84, 137, 56, 112, 20, 14, 203, 40, 245, 82, 56, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 36, 211, 79, 8, 147, 9, 76, 84, 137,
-			56, 112, 20, 14, 203, 32, 243, 79, 48, 241, 201, 76, 84, 137, 56, 112, 20, 14, 203, 28, 83, 133, 72, 19, 9, 76, 84, 137, 56, 112,
-			20, 14, 203, 16, 83, 79, 72, 19, 9, 76, 84, 137, 56, 112, 20, 14, 203, 8, 84, 212, 36, 19, 9, 76, 84, 137, 56, 112, 20, 12,
-			201, 36, 229, 5, 57, 66, 79, 56, 83, 0, 20, 9, 198, 76, 243, 1, 72, 149, 77, 20, 9, 198, 41, 81, 9, 12, 149, 77, 20, 9,
-			198, 52, 85, 15, 57, 147, 73, 20, 9, 198, 64, 225, 85, 52, 243, 137, 20, 10, 199, 72, 149, 129, 48, 147, 132, 20, 20, 10, 67, 52,
-			147, 128, 65, 37, 50, 0, 72, 0, 7, 196, 32, 84, 149, 80, 20, 11, 200, 64, 243, 9, 80, 243, 15, 28, 144, 20, 11, 200, 21, 50,
-			193, 80, 243, 15, 28, 144, 20, 11, 200, 20, 208, 146, 100, 243, 15, 28, 144, 20, 11, 200, 65, 35, 212, 21, 53, 5, 72, 80, 20, 9,
-			198, 45, 34, 84, 37, 49, 82, 20, 9, 198, 44, 244, 146, 36, 113, 82, 20, 9, 198, 36, 212, 12, 36, 49, 82, 20, 9, 198, 32, 84,
-			143, 37, 49, 82, 20, 9, 198, 16, 148, 211, 20, 177, 82, 20, 11, 200, 80, 84, 212, 36, 211, 206, 36, 80, 20, 11, 200, 16, 145, 134,
-			21, 33, 78, 12, 80, 20, 17, 4, 95, 48, 77, 52, 71, 37, 55, 37, 57, 6, 39, 12, 50, 108, 0, 0, 14, 139, 13, 1, 14, 21,
-			4, 21, 11, 20, 195, 184, 18, 20, 12, 201, 64, 84, 150, 21, 36, 201, 80, 85, 0, 20, 9, 198, 88, 148, 197, 72, 147, 135, 20, 9,
-			198, 72, 20, 197, 72, 147, 135, 20, 9, 198, 65, 84, 133, 72, 147, 135, 20, 17, 142, 16, 15, 18, 20, 18, 195, 166, 20, 20, 5, 18,
-			9, 14, 7, 20, 9, 198, 64, 243, 5, 72, 147, 135, 20, 13, 138, 13, 195, 184, 2, 12, 5, 18, 9, 14, 7, 20, 9, 198, 48, 20,
-			197, 72, 147, 135, 20, 9, 198, 28, 83, 5, 72, 147, 135, 20, 9, 198, 8, 20, 197, 72, 147, 135, 20, 12, 137, 16, 18, 195, 166, 19,
-			5, 14, 9, 12, 20, 0, 15, 140, 4, 5, 19, 9, 14, 6, 5, 11, 20, 195, 184, 18, 20, 9, 198, 64, 21, 75, 37, 53, 0, 20,
-			9, 198, 16, 144, 75, 72, 243, 128, 20, 9, 198, 76, 82, 212, 36, 243, 128, 20, 9, 198, 72, 82, 212, 36, 243, 128, 20, 9, 198, 64,
-			244, 148, 36, 243, 128, 20, 9, 198, 48, 82, 212, 36, 243, 128, 20, 13, 202, 44, 243, 134, 36, 117, 82, 5, 66, 79, 56, 20, 13, 202,
-			44, 243, 134, 20, 65, 82, 5, 66, 79, 56, 20, 13, 202, 36, 225, 9, 88, 145, 21, 5, 66, 79, 56, 20, 9, 198, 24, 146, 212, 36,
-			243, 128, 20, 9, 198, 24, 18, 212, 36, 243, 128, 20, 9, 198, 20, 66, 84, 36, 243, 128, 20, 9, 198, 16, 146, 212, 36, 243, 128, 20,
-			13, 202, 4, 195, 9, 81, 65, 82, 5, 66, 79, 56, 20, 13, 202, 4, 113, 204, 85, 66, 78, 5, 66, 79, 56, 20, 9, 198, 52, 83,
-			1, 56, 147, 128, 20, 9, 198, 52, 22, 129, 72, 147, 128, 20, 17, 70, 12, 128, 71, 72, 147, 128, 91, 35, 81, 34, 6, 109, 68, 0,
-			20, 9, 198, 52, 86, 9, 12, 19, 128, 20, 9, 198, 44, 19, 148, 36, 19, 128, 20, 9, 198, 32, 18, 84, 36, 19, 128, 20, 9, 198,
-			29, 82, 78, 20, 19, 128, 20, 9, 198, 8, 245, 19, 92, 19, 128, 20, 17, 4, 95, 48, 77, 50, 65, 37, 55, 37, 57, 6, 39, 12,
-			50, 114, 0, 0, 18, 5, 4, 10, 39, 5, 18, 72, 37, 12, 6, 72, 57, 36, 12, 57, 114, 0, 16, 141, 16, 18, 195, 166, 19, 5,
-			14, 20, 1, 20, 9, 15, 14, 20, 10, 199, 56, 149, 18, 21, 34, 78, 28, 20, 10, 199, 44, 19, 11, 21, 34, 78, 28, 20, 10, 199,
-			32, 19, 22, 21, 34, 78, 28, 20, 10, 199, 29, 32, 86, 21, 34, 78, 28, 20, 10, 199, 28, 195, 211, 21, 34, 78, 28, 20, 10, 199,
-			60, 97, 137, 12, 147, 133, 48, 20, 12, 137, 16, 18, 195, 166, 12, 21, 4, 5, 18, 20, 12, 201, 45, 38, 80, 80, 241, 210, 4, 97,
-			82, 20, 10, 199, 64, 84, 134, 20, 181, 21, 52, 20, 10, 199, 64, 243, 25, 28, 243, 129, 48, 20, 10, 199, 61, 37, 15, 28, 243, 129,
-			48, 20, 10, 199, 72, 83, 21, 45, 64, 78, 76, 20, 17, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 6, 112, 12, 72, 108, 0, 0,
-			7, 196, 44, 20, 21, 80, 20, 12, 201, 85, 32, 129, 56, 148, 197, 72, 147, 135, 20, 12, 201, 84, 64, 129, 77, 83, 133, 72, 147, 135,
-			20, 12, 201, 81, 148, 9, 24, 144, 197, 72, 147, 135, 20, 12, 201, 80, 149, 143, 48, 148, 197, 72, 147, 135, 20, 12, 201, 80, 83, 65,
-			80, 148, 197, 72, 147, 135, 20, 12, 201, 80, 83, 5, 24, 243, 133, 72, 147, 135, 20, 12, 201, 76, 128, 77, 64, 243, 133, 72, 147, 135,
-			20, 12, 201, 76, 21, 9, 72, 148, 197, 72, 147, 135, 20, 12, 201, 72, 243, 65, 56, 148, 197, 72, 147, 135, 20, 12, 201, 72, 149, 129,
-			48, 148, 197, 72, 147, 135, 20, 12, 201, 72, 84, 212, 5, 84, 133, 72, 147, 135, 20, 12, 201, 72, 83, 80, 48, 16, 197, 72, 147, 135,
-			20, 12, 201, 72, 81, 84, 4, 35, 5, 72, 147, 135, 20, 12, 201, 72, 81, 18, 21, 52, 197, 72, 147, 135, 20, 12, 201, 72, 21, 9,
-			24, 144, 197, 72, 147, 135, 20, 12, 201, 64, 243, 65, 16, 148, 197, 72, 147, 135, 20, 12, 201, 64, 243, 5, 52, 148, 197, 72, 147, 135,
-			20, 12, 201, 64, 83, 147, 36, 243, 133, 72, 147, 135, 20, 12, 201, 64, 20, 129, 49, 148, 197, 72, 147, 135, 20, 12, 201, 61, 33, 193,
-			56, 148, 197, 72, 147, 135, 20, 12, 201, 53, 83, 73, 24, 144, 197, 72, 147, 135, 20, 12, 201, 52, 245, 15, 72, 148, 197, 72, 147, 135,
-			20, 12, 201, 52, 244, 129, 48, 148, 197, 72, 147, 135, 20, 12, 201, 52, 240, 137, 48, 148, 197, 72, 147, 135, 20, 12, 201, 52, 18, 143,
-			72, 148, 197, 72, 147, 135, 20, 12, 201, 52, 17, 193, 76, 147, 133, 72, 147, 135, 20, 12, 201, 44, 21, 5, 44, 148, 197, 72, 147, 135,
-			20, 12, 201, 44, 19, 143, 56, 148, 197, 72, 147, 135, 20, 12, 201, 44, 19, 129, 48, 148, 197, 72, 147, 135, 20, 12, 201, 36, 228, 212,
-			4, 195, 5, 72, 147, 135, 20, 12, 201, 36, 225, 16, 48, 16, 197, 72, 147, 135, 20, 12, 201, 36, 225, 11, 5, 52, 197, 72, 147, 135,
-			20, 12, 201, 36, 211, 85, 56, 148, 197, 72, 147, 135, 20, 12, 201, 33, 83, 65, 56, 148, 197, 72, 147, 135, 20, 12, 201, 24, 83, 73,
-			56, 148, 197, 72, 147, 135, 20, 12, 201, 24, 21, 143, 72, 148, 197, 72, 147, 135, 20, 12, 201, 24, 19, 129, 80, 148, 197, 72, 147, 135,
-			20, 12, 201, 20, 208, 78, 12, 148, 5, 72, 147, 135, 20, 12, 201, 16, 84, 212, 36, 195, 5, 72, 147, 135, 20, 12, 201, 16, 83, 129,
-			81, 84, 133, 72, 147, 135, 20, 12, 201, 8, 19, 129, 48, 148, 197, 72, 147, 135, 20, 12, 201, 4, 181, 9, 88, 148, 197, 72, 147, 135,
-			20, 9, 198, 88, 146, 193, 72, 145, 82, 20, 9, 198, 76, 81, 210, 20, 113, 82, 20, 9, 198, 72, 83, 1, 45, 49, 82, 20, 9, 198,
-			56, 81, 204, 36, 113, 82, 20, 9, 198, 44, 244, 146, 84, 113, 82, 20, 9, 198, 8, 243, 9, 88, 144, 78, 20, 11, 67, 52, 147, 133,
-			65, 6, 37, 50, 13, 0, 0, 9, 198, 28, 83, 133, 4, 195, 199, 20, 12, 201, 88, 149, 137, 76, 82, 212, 36, 243, 128, 20, 12, 201,
-			77, 80, 148, 72, 18, 212, 36, 243, 128, 20, 12, 201, 72, 84, 212, 72, 146, 212, 36, 243, 128, 20, 18, 143, 18, 5, 16, 18, 195, 166,
-			19, 5, 14, 20, 1, 20, 9, 15, 14, 20, 12, 201, 72, 82, 214, 37, 50, 84, 36, 243, 128, 20, 12, 201, 65, 83, 139, 80, 18, 212,
-			36, 243, 128, 20, 12, 201, 65, 35, 208, 61, 50, 84, 36, 243, 128, 20, 12, 201, 60, 36, 212, 73, 82, 212, 36, 243, 128, 20, 12, 201,
-			44, 243, 148, 72, 18, 212, 36, 243, 128, 20, 12, 201, 44, 243, 80, 61, 50, 84, 36, 243, 128, 20, 12, 201, 36, 228, 212, 73, 82, 212,
-			36, 243, 128, 20, 12, 201, 16, 148, 212, 72, 18, 212, 36, 243, 128, 20, 12, 201, 16, 145, 134, 72, 18, 212, 36, 243, 128, 20, 12, 201,
-			8, 83, 133, 16, 146, 212, 36, 243, 128, 20, 12, 201, 4, 178, 214, 37, 50, 84, 36, 243, 128, 20, 12, 201, 4, 36, 212, 72, 18, 212,
-			36, 243, 128, 20, 9, 198, 72, 242, 197, 72, 147, 135, 20, 9, 198, 24, 147, 5, 72, 147, 135, 20, 9, 198, 16, 244, 197, 72, 147, 135,
-			20, 9, 198, 5, 35, 69, 72, 147, 135, 20, 14, 139, 11, 195, 184, 14, 19, 11, 22, 15, 20, 5, 18, 20, 14, 4, 95, 48, 77, 49,
-			47, 6, 40, 12, 89, 14, 50, 0, 0, 9, 198, 56, 85, 84, 72, 243, 128, 20, 13, 138, 16, 15, 18, 195, 184, 19, 9, 20, 5, 20,
-			20, 13, 202, 77, 68, 129, 8, 17, 19, 21, 34, 78, 28, 20, 13, 202, 64, 20, 129, 25, 32, 83, 21, 34, 78, 28, 20, 13, 202, 33,
-			148, 15, 77, 64, 83, 21, 34, 78, 28, 20, 13, 202, 16, 243, 69, 77, 66, 67, 21, 34, 78, 28, 20, 15, 204, 36, 228, 212, 73, 83,
-			69, 57, 64, 76, 37, 49, 82, 20, 11, 66, 64, 32, 83, 37, 50, 35, 55, 0, 42, 9, 198, 44, 241, 134, 20, 147, 128, 20, 12, 201,
-			65, 34, 77, 37, 66, 86, 37, 51, 69, 20, 12, 201, 60, 34, 133, 45, 66, 86, 37, 51, 69, 20, 12, 201, 49, 85, 8, 21, 32, 78,
-			37, 51, 69, 20, 13, 4, 95, 2, 18, 22, 71, 34, 6, 37, 12, 84, 0, 0, 9, 198, 64, 83, 5, 72, 147, 133, 20, 9, 198, 44,
-			243, 5, 72, 147, 133, 20, 10, 199, 12, 16, 146, 36, 243, 5, 80, 20, 14, 139, 13, 15, 14, 4, 195, 166, 14, 9, 20, 5, 20, 20,
-			15, 204, 80, 82, 206, 60, 180, 129, 80, 148, 197, 72, 147, 135, 20, 15, 204, 76, 176, 78, 16, 147, 129, 88, 148, 197, 72, 147, 135, 20,
-			15, 204, 65, 35, 194, 48, 83, 65, 80, 148, 197, 72, 147, 135, 20, 15, 204, 52, 84, 139, 4, 229, 9, 48, 148, 197, 72, 147, 135, 20,
-			15, 204, 24, 146, 212, 36, 243, 129, 48, 148, 197, 72, 147, 135, 20, 15, 204, 16, 83, 73, 56, 84, 129, 48, 148, 197, 72, 147, 135, 20,
-			15, 204, 16, 80, 197, 57, 68, 129, 48, 148, 197, 72, 147, 135, 20, 15, 204, 12, 243, 148, 4, 147, 133, 72, 148, 197, 72, 147, 135, 20,
-			12, 201, 65, 34, 77, 37, 66, 86, 37, 49, 82, 20, 12, 201, 60, 34, 133, 45, 66, 86, 37, 49, 82, 20, 12, 201, 20, 193, 75, 81,
-			34, 70, 36, 49, 82, 20, 12, 201, 16, 145, 134, 21, 33, 78, 80, 145, 82, 20, 13, 138, 8, 15, 13, 195, 184, 15, 16, 1, 20, 9,
-			20, 9, 198, 32, 84, 143, 37, 51, 69, 20, 9, 198, 24, 20, 195, 37, 51, 69, 20, 0, 11, 136, 19, 20, 195, 184, 22, 12, 5, 20,
-			20, 12, 201, 88, 242, 193, 48, 148, 197, 72, 147, 135, 20, 12, 201, 88, 148, 137, 48, 148, 197, 72, 147, 135, 20, 12, 201, 80, 84, 146,
-			5, 52, 197, 72, 147, 135, 20, 12, 201, 76, 213, 75, 44, 84, 197, 72, 147, 135, 20, 12, 201, 64, 243, 9, 80, 148, 197, 72, 147, 135,
-			20, 12, 201, 48, 242, 193, 48, 148, 197, 72, 147, 135, 20, 12, 201, 48, 81, 193, 48, 148, 197, 72, 147, 135, 20, 12, 201, 44, 243, 134,
-			61, 35, 69, 72, 147, 135, 20, 12, 201, 44, 243, 134, 37, 35, 69, 72, 147, 135, 20, 12, 201, 37, 51, 1, 52, 148, 197, 72, 147, 135,
-			20, 12, 201, 36, 195, 21, 52, 147, 133, 72, 147, 135, 20, 12, 201, 36, 65, 65, 48, 148, 197, 72, 147, 135, 20, 12, 201, 29, 34, 77,
-			5, 52, 197, 72, 147, 135, 20, 12, 201, 24, 197, 73, 16, 148, 197, 72, 147, 135, 20, 12, 201, 24, 20, 200, 36, 243, 133, 72, 147, 135,
-			20, 12, 201, 16, 82, 204, 5, 52, 197, 72, 147, 135, 20, 12, 201, 16, 80, 200, 36, 100, 133, 72, 147, 135, 20, 13, 138, 195, 166, 19,
-			20, 5, 20, 9, 11, 5, 18, 20, 7, 196, 52, 20, 137, 56, 20, 7, 196, 52, 147, 73, 44, 20, 7, 196, 52, 20, 137, 56, 20, 6,
-			195, 88, 244, 133, 72, 0, 12, 201, 77, 84, 5, 73, 98, 83, 36, 243, 128, 20, 16, 141, 18, 5, 12, 9, 7, 9, 195, 184, 19, 9,
-			20, 5, 20, 20, 16, 141, 13, 15, 14, 19, 20, 18, 195, 184, 19, 9, 20, 5, 20, 20, 8, 197, 44, 21, 84, 20, 192, 20, 8, 197,
-			44, 21, 84, 20, 192, 20, 14, 139, 195, 184, 11, 21, 13, 5, 14, 9, 11, 5, 18, 20, 8, 197, 9, 33, 84, 60, 224, 20, 8, 197,
-			52, 81, 9, 4, 224, 21, 0, 18, 207, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 197, 72, 147, 135, 20, 18, 207, 36, 228, 212,
-			37, 69, 84, 36, 243, 129, 48, 148, 197, 72, 147, 135, 20, 9, 198, 88, 148, 201, 80, 84, 128, 20, 9, 198, 88, 19, 9, 16, 84, 128,
-			20, 9, 198, 81, 84, 195, 32, 84, 128, 20, 9, 198, 77, 64, 70, 24, 84, 128, 20, 9, 198, 77, 3, 206, 76, 84, 128, 20, 9, 198,
-			72, 84, 5, 80, 84, 128, 20, 9, 198, 72, 83, 1, 80, 84, 128, 20, 9, 198, 60, 225, 21, 48, 84, 128, 20, 9, 198, 52, 147, 137,
-			52, 84, 128, 20, 9, 198, 52, 18, 213, 48, 84, 128, 20, 9, 198, 41, 80, 137, 48, 84, 128, 20, 9, 198, 36, 229, 129, 16, 84, 128,
-			20, 9, 198, 28, 19, 15, 64, 84, 128, 20, 9, 198, 16, 82, 193, 80, 84, 128, 20, 12, 201, 64, 242, 78, 80, 147, 12, 37, 51, 69,
-			20, 9, 198, 24, 243, 9, 4, 229, 0, 20, 9, 198, 77, 1, 78, 16, 16, 128, 20, 0, 12, 201, 16, 148, 211, 60, 50, 65, 80, 147,
-			206, 20, 18, 143, 9, 18, 18, 5, 12, 9, 7, 9, 195, 184, 19, 9, 20, 5, 20, 20, 9, 198, 76, 178, 84, 76, 84, 133, 20, 10,
-			199, 76, 128, 77, 64, 243, 133, 72, 20, 9, 198, 65, 83, 139, 80, 84, 133, 20, 9, 198, 64, 147, 15, 80, 84, 133, 20, 10, 199, 44,
-			243, 147, 36, 115, 133, 72, 20, 10, 199, 48, 21, 129, 16, 83, 9, 28, 20, 10, 199, 28, 145, 193, 57, 66, 83, 44, 20, 10, 199, 25,
-			33, 78, 21, 66, 83, 44, 20, 9, 198, 77, 147, 143, 57, 147, 73, 20, 10, 199, 77, 66, 76, 37, 53, 9, 44, 20, 10, 199, 77, 64,
-			84, 37, 53, 9, 44, 20, 10, 199, 76, 179, 204, 5, 53, 9, 44, 20, 6, 195, 88, 244, 128, 72, 5, 195, 24, 244, 128, 0, 19, 70,
-			21, 53, 18, 4, 115, 206, 36, 89, 47, 51, 35, 81, 6, 114, 68, 0, 20, 7, 196, 48, 20, 9, 56, 20, 11, 200, 76, 192, 71, 20,
-			196, 197, 4, 224, 20, 0, 8, 197, 64, 243, 80, 60, 224, 20, 12, 201, 80, 18, 212, 72, 81, 213, 48, 84, 128, 20, 12, 201, 77, 65,
-			84, 61, 50, 207, 64, 84, 128, 20, 12, 201, 72, 82, 212, 61, 50, 207, 64, 84, 128, 20, 12, 201, 72, 82, 1, 8, 147, 9, 80, 84,
-			128, 20, 12, 201, 4, 100, 1, 81, 37, 76, 40, 84, 128, 20, 12, 201, 44, 243, 147, 81, 34, 78, 28, 84, 128, 20, 12, 201, 20, 180,
-			208, 48, 144, 201, 80, 84, 128, 20, 15, 204, 77, 84, 18, 4, 224, 84, 85, 32, 76, 37, 51, 69, 20, 8, 197, 64, 20, 21, 4, 224,
-			20, 12, 201, 81, 32, 78, 77, 3, 210, 80, 16, 128, 20, 0, 9, 198, 76, 83, 129, 80, 244, 128, 20, 9, 198, 16, 243, 129, 80, 244,
-			128, 20, 18, 207, 8, 83, 133, 24, 144, 197, 24, 244, 133, 77, 66, 76, 48, 147, 135, 67, 9, 198, 60, 178, 213, 64, 84, 128, 20, 9,
-			198, 45, 96, 68, 72, 84, 128, 20, 9, 198, 20, 213, 76, 28, 84, 128, 20, 9, 198, 16, 82, 213, 64, 84, 128, 20, 9, 198, 4, 227,
-			143, 80, 84, 128, 20, 13, 202, 33, 145, 18, 60, 70, 78, 4, 210, 83, 44, 20, 13, 202, 16, 84, 141, 5, 67, 204, 60, 114, 83, 44,
-			20, 13, 202, 9, 35, 205, 5, 67, 204, 60, 114, 83, 44, 20, 13, 202, 4, 229, 18, 61, 3, 204, 60, 114, 83, 44, 20, 9, 198, 72,
-			80, 71, 20, 229, 0, 20, 9, 198, 52, 148, 197, 72, 16, 128, 20, 0, 10, 199, 77, 80, 195, 21, 52, 207, 72, 20, 9, 198, 64, 243,
-			25, 45, 35, 205, 20, 10, 199, 76, 83, 147, 5, 66, 79, 56, 20, 10, 199, 44, 20, 211, 5, 66, 79, 56, 20, 10, 199, 44, 20, 18,
-			36, 243, 5, 72, 20, 9, 198, 24, 147, 5, 80, 84, 133, 20, 9, 198, 20, 180, 201, 48, 84, 133, 20, 10, 199, 8, 19, 19, 81, 148,
-			137, 28, 20, 10, 199, 80, 82, 212, 60, 226, 83, 44, 20, 10, 199, 21, 2, 83, 60, 66, 83, 44, 20, 9, 198, 45, 84, 137, 61, 53,
-			77, 20, 10, 199, 60, 36, 203, 85, 32, 78, 80, 20, 10, 199, 32, 244, 208, 37, 64, 78, 80, 20, 10, 199, 5, 69, 5, 77, 64, 78,
-			80, 20, 10, 199, 4, 48, 197, 65, 64, 78, 80, 20, 0, 11, 200, 44, 243, 147, 20, 228, 213, 4, 192, 20, 0, 12, 201, 72, 81, 197,
-			56, 84, 129, 80, 244, 128, 20, 12, 201, 44, 243, 210, 16, 147, 129, 80, 244, 128, 20, 12, 201, 36, 228, 197, 52, 147, 129, 80, 244, 128,
-			20, 12, 201, 20, 180, 193, 52, 147, 129, 80, 244, 128, 20, 12, 201, 20, 180, 212, 72, 20, 15, 48, 84, 128, 20, 12, 201, 57, 144, 143,
-			72, 113, 78, 76, 84, 128, 20, 9, 198, 80, 243, 5, 72, 19, 147, 20, 9, 198, 72, 83, 5, 88, 19, 147, 20, 0, 9, 198, 88, 148,
-			203, 61, 49, 64, 20, 13, 202, 81, 32, 78, 77, 3, 211, 37, 66, 79, 56, 20, 13, 202, 72, 82, 212, 36, 98, 75, 5, 66, 79, 56,
-			20, 9, 198, 77, 146, 207, 24, 19, 148, 20, 9, 198, 36, 212, 15, 76, 19, 148, 20, 9, 198, 9, 34, 76, 48, 19, 148, 20, 0, 12,
-			201, 88, 84, 147, 36, 98, 75, 5, 67, 210, 20, 12, 201, 77, 64, 66, 36, 194, 83, 5, 67, 210, 20, 9, 198, 17, 148, 204, 20, 180,
-			201, 20, 10, 199, 32, 148, 16, 60, 68, 143, 52, 20, 9, 198, 76, 19, 1, 80, 84, 137, 20, 10, 199, 72, 84, 201, 77, 64, 78, 76,
-			20, 0, 11, 200, 44, 243, 148, 4, 210, 78, 21, 32, 20, 12, 201, 36, 225, 137, 56, 149, 9, 88, 148, 203, 20, 9, 198, 81, 85, 129,
-			49, 80, 78, 20, 0, 12, 201, 64, 20, 143, 16, 243, 148, 61, 49, 64, 20, 8, 197, 85, 34, 78, 21, 32, 20, 8, 197, 56, 149, 18,
-			21, 32, 20, 12, 201, 4, 178, 213, 72, 21, 5, 77, 49, 64, 20, 9, 198, 24, 147, 9, 64, 83, 147, 20, 9, 198, 9, 34, 76, 48,
-			19, 147, 20, 12, 201, 36, 229, 5, 73, 1, 76, 48, 19, 148, 20, 0, 18, 70, 20, 180, 208, 61, 49, 64, 36, 81, 89, 48, 39, 89,
-			6, 36, 0, 20, 9, 198, 21, 2, 71, 72, 17, 128, 20, 9, 198, 73, 81, 9, 52, 83, 148, 20, 9, 198, 16, 82, 193, 16, 83, 148,
-			20, 9, 198, 72, 85, 133, 73, 48, 76, 20, 9, 198, 80, 243, 5, 72, 19, 148, 20, 9, 198, 72, 83, 5, 88, 19, 148, 20, 9, 198,
-			61, 33, 9, 56, 19, 148, 20, 9, 198, 25, 32, 80, 64, 19, 148, 20, 9, 198, 24, 145, 213, 72, 19, 148, 20, 0, 9, 198, 76, 181,
-			76, 44, 84, 137, 20, 10, 199, 20, 208, 129, 48, 192, 71, 20, 20, 0, 7, 196, 76, 145, 143, 56, 20, 9, 198, 21, 65, 82, 56, 83,
-			0, 20, 9, 198, 44, 244, 132, 36, 19, 0, 20, 9, 198, 4, 67, 73, 72, 19, 0, 20, 0, 9, 134, 22, 9, 14, 195, 184, 19, 20,
-			8, 197, 44, 243, 132, 60, 208, 20, 12, 201, 16, 83, 9, 44, 21, 5, 77, 49, 64, 20, 8, 197, 8, 146, 201, 56, 144, 20, 8, 197,
-			81, 32, 70, 36, 176, 20, 12, 201, 20, 180, 212, 72, 21, 129, 28, 19, 148, 20, 0, 10, 135, 14, 9, 20, 18, 195, 184, 19, 20, 11,
-			136, 5, 13, 1, 12, 10, 195, 184, 18, 20, 9, 198, 25, 33, 78, 21, 50, 64, 20, 9, 198, 44, 245, 5, 48, 85, 0, 20, 9, 198,
-			61, 33, 9, 56, 21, 0, 20, 9, 198, 4, 181, 15, 72, 21, 0, 20, 0, 26, 67, 52, 149, 0, 65, 37, 47, 15, 49, 84, 112, 6,
-			47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 10, 199, 32, 21, 130, 36, 243, 15, 28, 20, 10, 199, 52, 148, 211, 36, 243,
-			133, 72, 20, 10, 199, 21, 98, 78, 16, 83, 9, 28, 20, 10, 199, 4, 101, 1, 28, 83, 9, 28, 20, 10, 199, 81, 84, 137, 77, 66,
-			83, 44, 20, 10, 199, 77, 64, 84, 5, 34, 83, 44, 20, 10, 199, 72, 16, 201, 77, 66, 83, 44, 20, 10, 199, 65, 84, 137, 77, 66,
-			83, 44, 20, 10, 199, 64, 81, 1, 57, 66, 83, 44, 20, 10, 199, 61, 33, 193, 77, 66, 83, 44, 20, 10, 199, 56, 22, 137, 77, 66,
-			83, 44, 20, 10, 199, 48, 149, 21, 72, 114, 83, 44, 20, 10, 199, 45, 34, 71, 21, 34, 83, 44, 20, 10, 199, 44, 244, 205, 21, 66,
-			83, 44, 20, 10, 199, 20, 180, 212, 5, 66, 83, 44, 20, 10, 199, 4, 176, 68, 20, 210, 83, 44, 20, 10, 199, 81, 32, 86, 21, 37,
-			9, 56, 20, 9, 198, 32, 243, 79, 24, 243, 137, 20, 10, 199, 60, 198, 77, 64, 144, 68, 20, 20, 10, 67, 52, 149, 0, 65, 37, 47,
-			0, 72, 0, 7, 196, 56, 21, 21, 72, 20, 11, 200, 76, 83, 5, 56, 243, 15, 28, 144, 20, 9, 198, 8, 17, 193, 80, 83, 0, 20,
-			11, 200, 81, 32, 75, 5, 52, 197, 72, 144, 20, 11, 200, 52, 85, 1, 25, 148, 201, 76, 176, 20, 11, 200, 77, 81, 134, 37, 48, 78,
-			12, 80, 20, 9, 198, 52, 20, 147, 44, 19, 0, 20, 0, 13, 138, 1, 12, 2, 21, 13, 9, 14, 195, 184, 19, 20, 12, 201, 76, 147,
-			80, 48, 144, 201, 80, 85, 0, 20, 8, 197, 81, 34, 65, 16, 80, 20, 8, 197, 72, 242, 193, 16, 80, 20, 8, 197, 17, 38, 65, 16,
-			80, 20, 0, 10, 135, 16, 15, 13, 16, 195, 184, 19, 20, 11, 136, 19, 1, 14, 9, 20, 195, 184, 18, 20, 11, 136, 4, 5, 11, 1,
-			20, 195, 184, 18, 20, 13, 202, 20, 180, 212, 72, 245, 133, 73, 50, 79, 56, 20, 13, 202, 88, 145, 5, 57, 50, 193, 8, 83, 9, 28,
-			20, 13, 202, 48, 145, 5, 57, 50, 193, 8, 83, 9, 28, 20, 13, 202, 76, 83, 73, 56, 20, 137, 77, 66, 83, 44, 20, 13, 202, 72,
-			85, 77, 5, 67, 204, 60, 114, 83, 44, 20, 13, 202, 65, 35, 212, 21, 53, 1, 57, 66, 83, 44, 20, 13, 202, 52, 243, 133, 80, 20,
-			137, 77, 66, 83, 44, 20, 13, 202, 52, 85, 5, 61, 35, 204, 60, 114, 83, 44, 20, 13, 202, 45, 96, 75, 76, 19, 22, 21, 34, 83,
-			44, 20, 13, 202, 44, 244, 205, 61, 3, 204, 37, 66, 83, 44, 20, 13, 202, 44, 243, 148, 72, 17, 129, 45, 66, 83, 44, 20, 13, 202,
-			24, 243, 11, 48, 244, 137, 77, 66, 83, 44, 20, 13, 202, 16, 148, 12, 60, 208, 84, 5, 34, 83, 44, 20, 13, 202, 4, 195, 5, 72,
-			115, 204, 60, 114, 83, 44, 20, 9, 198, 28, 198, 75, 61, 50, 68, 20, 9, 198, 5, 4, 1, 72, 21, 0, 20, 9, 198, 4, 68, 133,
-			77, 48, 84, 20, 0, 10, 199, 80, 149, 21, 48, 21, 21, 72, 20, 10, 199, 44, 243, 138, 20, 181, 21, 72, 20, 10, 199, 44, 192, 86,
-			36, 21, 21, 72, 20, 10, 199, 44, 20, 137, 44, 21, 21, 72, 20, 12, 137, 9, 19, 15, 12, 1, 20, 195, 184, 18, 20, 12, 137, 4,
-			5, 2, 1, 20, 20, 195, 184, 18, 20, 10, 199, 65, 35, 198, 21, 52, 207, 72, 20, 10, 199, 80, 84, 212, 5, 66, 79, 56, 20, 10,
-			199, 77, 1, 68, 37, 66, 79, 56, 20, 10, 199, 44, 240, 76, 37, 66, 79, 56, 20, 10, 199, 77, 65, 78, 12, 147, 5, 72, 20, 10,
-			199, 45, 98, 78, 44, 83, 5, 72, 20, 10, 199, 44, 20, 148, 60, 227, 133, 72, 20, 10, 199, 44, 19, 148, 60, 227, 133, 72, 20, 10,
-			199, 88, 83, 2, 101, 33, 9, 28, 20, 10, 199, 81, 148, 129, 56, 226, 83, 44, 20, 10, 199, 76, 144, 77, 21, 50, 83, 44, 20, 10,
-			199, 44, 20, 193, 44, 130, 83, 44, 20, 10, 199, 28, 19, 22, 4, 226, 83, 44, 20, 10, 199, 64, 197, 86, 37, 84, 201, 56, 20, 12,
-			201, 48, 16, 137, 60, 65, 78, 80, 19, 0, 20, 10, 199, 21, 52, 12, 4, 224, 68, 20, 20, 10, 199, 12, 131, 203, 60, 192, 68, 20,
-			20, 0, 13, 138, 19, 20, 21, 11, 11, 1, 20, 195, 184, 18, 20, 13, 138, 18, 5, 16, 5, 20, 9, 20, 195, 184, 18, 20, 13, 138,
-			18, 5, 14, 15, 22, 1, 20, 195, 184, 18, 20, 13, 138, 9, 14, 14, 15, 22, 1, 20, 195, 184, 18, 20, 13, 138, 4, 5, 11, 15,
-			18, 1, 20, 195, 184, 18, 20, 13, 138, 2, 9, 12, 12, 5, 20, 20, 195, 184, 18, 20, 16, 141, 195, 166, 19, 20, 5, 20, 9, 19,
-			5, 18, 9, 14, 7, 20, 9, 198, 72, 85, 133, 73, 49, 82, 20, 11, 200, 88, 147, 132, 52, 17, 197, 72, 144, 20, 11, 200, 25, 34,
-			66, 101, 69, 5, 72, 144, 20, 11, 200, 8, 84, 141, 84, 64, 82, 36, 112, 20, 11, 200, 4, 193, 197, 9, 32, 73, 76, 176, 20, 0,
-			14, 139, 20, 18, 1, 14, 19, 12, 1, 20, 195, 184, 18, 20, 14, 139, 16, 18, 15, 22, 15, 11, 1, 20, 195, 184, 18, 20, 14, 139,
-			15, 2, 19, 5, 18, 22, 1, 20, 195, 184, 18, 20, 14, 139, 12, 5, 22, 5, 18, 1, 14, 4, 195, 184, 18, 20, 14, 139, 11, 15,
-			14, 20, 18, 15, 12, 12, 195, 184, 18, 20, 14, 139, 5, 11, 19, 16, 5, 4, 9, 20, 195, 184, 18, 20, 14, 139, 1, 19, 19, 21,
-			18, 1, 14, 4, 195, 184, 18, 20, 12, 201, 84, 226, 86, 21, 36, 201, 80, 85, 0, 20, 12, 201, 44, 192, 83, 76, 144, 201, 80, 85,
-			0, 20, 12, 201, 28, 83, 133, 72, 244, 201, 80, 85, 0, 20, 12, 201, 8, 148, 15, 48, 20, 137, 80, 85, 0, 20, 9, 198, 88, 245,
-			5, 72, 147, 135, 20, 9, 198, 72, 81, 197, 72, 147, 135, 20, 9, 198, 61, 5, 5, 72, 147, 135, 20, 9, 198, 60, 194, 69, 72, 147,
-			135, 20, 9, 198, 56, 245, 5, 72, 147, 135, 20, 9, 198, 56, 81, 197, 72, 147, 135, 20, 9, 198, 48, 81, 197, 72, 147, 135, 20, 9,
-			198, 48, 18, 197, 72, 147, 135, 20, 9, 198, 41, 81, 197, 72, 147, 135, 20, 9, 198, 16, 245, 5, 72, 147, 135, 20, 9, 198, 12, 149,
-			5, 72, 147, 135, 20, 9, 198, 5, 5, 5, 72, 147, 135, 20, 0, 15, 140, 18, 5, 11, 15, 13, 13, 1, 14, 4, 195, 184, 18, 20,
-			9, 198, 29, 32, 84, 37, 53, 0, 20, 9, 198, 13, 146, 204, 37, 53, 0, 20, 9, 198, 8, 20, 211, 37, 53, 0, 20, 9, 198, 8,
-			20, 20, 37, 53, 0, 20, 9, 198, 32, 243, 79, 24, 243, 128, 20, 13, 202, 52, 244, 148, 36, 98, 75, 5, 66, 79, 56, 20, 13, 202,
-			44, 243, 77, 84, 226, 75, 5, 66, 79, 56, 20, 13, 202, 28, 84, 212, 36, 181, 76, 5, 66, 79, 56, 20, 13, 202, 24, 244, 148, 36,
-			98, 75, 5, 66, 79, 56, 20, 9, 198, 20, 211, 212, 36, 243, 128, 20, 13, 202, 16, 148, 211, 36, 210, 76, 5, 66, 79, 56, 20, 9,
-			198, 8, 20, 212, 36, 243, 128, 20, 14, 139, 16, 18, 195, 166, 13, 9, 5, 18, 9, 14, 7, 20, 13, 202, 72, 244, 203, 36, 193, 5,
-			57, 50, 83, 44, 20, 9, 198, 65, 35, 212, 20, 147, 128, 20, 9, 198, 40, 18, 207, 8, 147, 128, 20, 0, 16, 141, 11, 15, 13, 13,
-			21, 14, 9, 11, 1, 20, 195, 184, 18, 20, 19, 144, 7, 18, 195, 184, 14, 12, 1, 14, 4, 9, 19, 5, 18, 9, 14, 7, 20, 10,
-			199, 20, 211, 212, 36, 243, 133, 48, 20, 12, 201, 76, 83, 147, 36, 34, 76, 37, 49, 82, 20, 12, 201, 8, 17, 193, 80, 83, 12, 37,
-			49, 82, 20, 9, 198, 28, 20, 148, 56, 84, 137, 20, 14, 203, 44, 19, 5, 40, 67, 211, 44, 244, 9, 76, 176, 20, 10, 199, 76, 49,
-			78, 5, 34, 85, 52, 20, 9, 198, 5, 64, 86, 37, 51, 69, 20, 9, 198, 4, 226, 77, 37, 51, 69, 20, 8, 67, 61, 85, 0, 21,
-			0, 10, 0, 9, 3, 14, 195, 165, 50, 114, 0, 15, 12, 201, 84, 67, 9, 12, 149, 5, 72, 147, 135, 20, 12, 201, 84, 65, 5, 48,
-			81, 197, 72, 147, 135, 20, 12, 201, 77, 80, 148, 72, 18, 5, 72, 147, 135, 20, 12, 201, 77, 80, 147, 36, 66, 69, 72, 147, 135, 20,
-			12, 201, 72, 82, 210, 85, 69, 5, 72, 147, 135, 20, 12, 201, 72, 20, 16, 61, 37, 5, 72, 147, 135, 20, 12, 201, 65, 34, 79, 72,
-			149, 5, 72, 147, 135, 20, 12, 201, 64, 84, 141, 37, 69, 5, 72, 147, 135, 20, 12, 201, 44, 244, 147, 21, 69, 5, 72, 147, 135, 20,
-			12, 201, 44, 243, 147, 81, 37, 69, 72, 147, 135, 20, 12, 201, 44, 243, 134, 37, 50, 197, 72, 147, 135, 20, 12, 201, 44, 243, 16, 61,
-			37, 5, 72, 147, 135, 20, 12, 201, 36, 229, 129, 48, 145, 5, 72, 147, 135, 20, 12, 201, 36, 228, 212, 37, 69, 69, 72, 147, 135, 20,
-			12, 201, 36, 225, 11, 61, 2, 69, 72, 147, 135, 20, 12, 201, 28, 20, 146, 61, 69, 5, 72, 147, 135, 20, 12, 201, 24, 197, 79, 72,
-			145, 5, 72, 147, 135, 20, 12, 201, 16, 148, 212, 72, 18, 5, 72, 147, 135, 20, 12, 201, 8, 243, 66, 5, 33, 5, 72, 147, 135, 20,
-			12, 201, 5, 53, 18, 36, 225, 197, 72, 147, 135, 20, 9, 198, 77, 67, 204, 81, 49, 82, 20, 9, 198, 24, 197, 75, 81, 81, 82, 20,
-			9, 68, 48, 84, 143, 100, 21, 0, 10, 9, 68, 12, 240, 67, 32, 21, 0, 10, 0, 12, 201, 44, 243, 80, 5, 32, 84, 37, 53, 0,
-			20, 12, 201, 80, 84, 212, 61, 53, 5, 72, 243, 128, 20, 12, 201, 88, 83, 148, 36, 192, 84, 36, 243, 128, 20, 12, 201, 88, 16, 195,
-			36, 224, 84, 36, 243, 128, 20, 12, 201, 77, 80, 147, 84, 212, 20, 36, 243, 128, 20, 12, 201, 77, 66, 80, 84, 192, 84, 36, 243, 128,
-			20, 12, 201, 77, 66, 77, 84, 192, 84, 36, 243, 128, 20, 12, 201, 77, 64, 71, 24, 192, 84, 36, 243, 128, 20, 12, 201, 72, 85, 1,
-			72, 64, 84, 36, 243, 128, 20, 12, 201, 72, 84, 201, 28, 224, 84, 36, 243, 128, 20, 12, 201, 61, 48, 201, 48, 192, 84, 36, 243, 128,
-			20, 12, 201, 60, 36, 212, 73, 80, 212, 36, 243, 128, 20, 12, 201, 48, 146, 214, 36, 64, 84, 36, 243, 128, 20, 12, 201, 44, 244, 146,
-			20, 192, 84, 36, 243, 128, 20, 12, 201, 44, 243, 132, 60, 192, 84, 36, 243, 128, 20, 12, 201, 44, 243, 80, 36, 192, 84, 36, 243, 128,
-			20, 12, 201, 44, 240, 71, 84, 192, 84, 36, 243, 128, 20, 12, 201, 36, 227, 203, 84, 192, 84, 36, 243, 128, 20, 12, 201, 36, 226, 204,
-			36, 224, 84, 36, 243, 128, 20, 12, 201, 36, 226, 193, 77, 48, 84, 36, 243, 128, 20, 12, 201, 29, 32, 78, 84, 192, 84, 36, 243, 128,
-			20, 12, 201, 24, 20, 195, 36, 224, 84, 36, 243, 128, 20, 12, 201, 20, 194, 77, 36, 224, 84, 36, 243, 128, 20, 12, 201, 20, 180, 212,
-			72, 18, 212, 36, 243, 128, 20, 12, 201, 20, 160, 75, 84, 192, 84, 36, 243, 128, 20, 12, 201, 16, 84, 201, 28, 224, 84, 36, 243, 128,
-			20, 12, 201, 12, 148, 139, 84, 192, 84, 36, 243, 128, 20, 12, 201, 4, 197, 5, 72, 224, 84, 36, 243, 128, 20, 12, 201, 4, 113, 210,
-			5, 96, 84, 36, 243, 128, 20, 12, 137, 7, 18, 195, 166, 3, 9, 20, 5, 20, 20, 9, 198, 72, 17, 5, 72, 147, 135, 20, 9, 198,
-			45, 33, 69, 72, 147, 135, 20, 9, 198, 28, 17, 197, 72, 147, 135, 20, 9, 198, 24, 85, 5, 72, 147, 135, 20, 9, 198, 16, 21, 5,
-			72, 147, 135, 20, 9, 198, 4, 181, 5, 72, 147, 135, 20, 12, 201, 65, 81, 82, 80, 244, 137, 12, 19, 128, 20, 0, 9, 198, 97, 147,
-			15, 24, 243, 128, 20, 9, 198, 76, 84, 211, 36, 243, 128, 20, 9, 198, 64, 20, 211, 36, 243, 128, 20, 9, 198, 52, 148, 211, 36, 243,
-			128, 20, 9, 198, 21, 96, 83, 36, 243, 128, 20, 9, 198, 77, 65, 65, 72, 147, 128, 20, 12, 201, 61, 4, 15, 73, 69, 78, 37, 51,
-			69, 20, 12, 201, 52, 48, 193, 73, 66, 25, 37, 51, 69, 20, 15, 204, 88, 244, 132, 36, 225, 194, 61, 33, 197, 57, 49, 82, 20, 9,
-			198, 37, 99, 210, 36, 19, 128, 20, 9, 198, 88, 85, 5, 72, 19, 128, 21, 9, 198, 44, 243, 15, 77, 48, 76, 20, 13, 202, 20, 225,
-			9, 52, 83, 147, 36, 243, 129, 48, 20, 13, 70, 13, 35, 213, 80, 243, 128, 21, 102, 114, 0, 10, 0, 10, 199, 77, 80, 147, 80, 149,
-			21, 80, 20, 14, 139, 19, 5, 18, 9, 195, 184, 19, 9, 20, 5, 20, 20, 14, 139, 16, 15, 13, 16, 195, 184, 19, 9, 20, 5, 20,
-			20, 14, 139, 14, 5, 18, 22, 195, 184, 19, 9, 20, 5, 20, 20, 12, 137, 15, 13, 13, 195, 184, 2, 12, 5, 18, 20, 9, 198, 77,
-			66, 75, 48, 84, 137, 20, 10, 199, 56, 84, 15, 80, 148, 205, 20, 20, 10, 199, 36, 66, 79, 80, 148, 205, 20, 20, 10, 199, 21, 50,
-			193, 64, 148, 205, 20, 20, 9, 198, 13, 146, 204, 37, 51, 69, 20, 9, 198, 8, 20, 20, 37, 51, 69, 20, 12, 201, 21, 48, 138, 21,
-			33, 197, 57, 49, 82, 20, 0, 15, 204, 36, 228, 213, 8, 244, 132, 36, 224, 84, 36, 243, 128, 20, 9, 198, 16, 149, 137, 76, 147, 206,
-			20, 15, 204, 4, 178, 204, 36, 208, 84, 37, 48, 84, 36, 243, 128, 20, 15, 140, 16, 18, 5, 20, 9, 195, 184, 19, 9, 20, 5, 20,
-			20, 15, 140, 16, 18, 5, 3, 9, 195, 184, 19, 9, 20, 5, 20, 20, 15, 140, 7, 5, 14, 5, 18, 195, 184, 19, 9, 20, 5, 20,
-			20, 12, 201, 88, 84, 137, 24, 144, 197, 72, 147, 135, 20, 12, 201, 88, 19, 15, 72, 148, 197, 72, 147, 135, 20, 12, 201, 81, 32, 78,
-			76, 149, 5, 72, 147, 135, 20, 12, 201, 80, 83, 5, 88, 148, 197, 72, 147, 135, 20, 12, 201, 80, 82, 211, 81, 84, 133, 72, 147, 135,
-			20, 12, 201, 76, 177, 76, 21, 69, 5, 72, 147, 135, 20, 12, 201, 72, 85, 129, 48, 145, 5, 72, 147, 135, 20, 12, 201, 72, 85, 15,
-			84, 50, 5, 72, 147, 135, 20, 12, 201, 72, 84, 212, 37, 69, 69, 72, 147, 135, 20, 12, 201, 72, 81, 140, 20, 181, 5, 72, 147, 135,
-			20, 12, 201, 72, 81, 86, 4, 197, 69, 72, 147, 135, 20, 12, 201, 65, 35, 202, 20, 181, 5, 72, 147, 135, 20, 12, 201, 64, 243, 1,
-			72, 148, 197, 72, 147, 135, 20, 12, 201, 64, 84, 150, 21, 37, 5, 72, 147, 135, 20, 12, 201, 64, 16, 201, 24, 144, 197, 72, 147, 135,
-			20, 12, 201, 56, 22, 137, 24, 144, 197, 72, 147, 135, 20, 12, 201, 52, 241, 9, 24, 144, 197, 72, 147, 135, 20, 12, 201, 52, 82, 193,
-			56, 148, 197, 72, 147, 135, 20, 12, 201, 48, 21, 9, 56, 148, 197, 72, 147, 135, 20, 12, 201, 44, 244, 146, 84, 212, 5, 72, 147, 135,
-			20, 12, 201, 44, 243, 150, 21, 37, 5, 72, 147, 135, 20, 12, 201, 44, 243, 147, 80, 21, 5, 72, 147, 135, 20, 12, 201, 44, 243, 77,
-			37, 69, 5, 72, 147, 135, 20, 12, 201, 44, 243, 15, 56, 148, 197, 72, 147, 135, 20, 12, 201, 44, 241, 9, 24, 144, 197, 72, 147, 135,
-			20, 12, 201, 36, 229, 9, 52, 145, 5, 72, 147, 135, 20, 12, 201, 36, 70, 76, 48, 148, 197, 72, 147, 135, 20, 12, 201, 29, 37, 66,
-			48, 148, 197, 72, 147, 135, 20, 12, 201, 21, 85, 18, 60, 98, 69, 72, 147, 135, 20, 12, 201, 21, 81, 143, 72, 148, 197, 72, 147, 135,
-			20, 12, 201, 21, 66, 75, 21, 69, 5, 72, 147, 135, 20, 12, 201, 20, 97, 133, 45, 69, 69, 72, 147, 135, 20, 12, 201, 9, 81, 7,
-			21, 69, 5, 72, 147, 135, 20, 12, 201, 9, 34, 75, 21, 69, 5, 72, 147, 135, 20, 12, 201, 8, 245, 1, 56, 148, 197, 72, 147, 135,
-			20, 12, 201, 8, 147, 12, 21, 69, 5, 72, 147, 135, 20, 12, 201, 8, 20, 212, 5, 33, 5, 72, 147, 135, 20, 12, 201, 4, 229, 9,
-			44, 148, 197, 72, 147, 135, 20, 12, 201, 4, 229, 5, 16, 21, 5, 72, 147, 135, 20, 12, 201, 4, 211, 210, 80, 148, 197, 72, 147, 135,
-			20, 12, 201, 4, 48, 197, 57, 69, 69, 72, 147, 135, 20, 12, 201, 4, 36, 212, 72, 18, 5, 72, 147, 135, 20, 0, 12, 201, 65, 35,
-			199, 21, 53, 5, 72, 243, 128, 20, 16, 141, 16, 18, 195, 166, 13, 1, 20, 21, 18, 9, 20, 5, 20, 20, 8, 197, 45, 33, 83, 60,
-			192, 20, 8, 197, 44, 20, 197, 36, 224, 20, 8, 197, 84, 180, 129, 36, 224, 20, 12, 201, 52, 243, 148, 20, 225, 71, 72, 147, 128, 20,
-			8, 197, 44, 244, 133, 4, 224, 20, 8, 197, 44, 83, 153, 4, 224, 20, 16, 205, 56, 21, 18, 37, 83, 66, 36, 176, 82, 8, 243, 129,
-			80, 20, 8, 197, 72, 83, 148, 4, 32, 20, 0, 9, 198, 64, 243, 9, 81, 84, 128, 20, 9, 198, 48, 145, 193, 81, 84, 128, 20, 9,
-			198, 45, 33, 65, 81, 84, 128, 20, 12, 201, 25, 84, 197, 57, 64, 83, 80, 84, 137, 20, 12, 201, 72, 81, 201, 60, 224, 76, 37, 51,
-			69, 20, 12, 201, 44, 243, 80, 5, 32, 84, 37, 51, 69, 20, 12, 201, 44, 193, 82, 36, 176, 76, 37, 51, 69, 20, 12, 201, 16, 83,
-			79, 45, 32, 84, 37, 51, 69, 20, 15, 204, 76, 176, 78, 16, 84, 130, 61, 33, 197, 57, 49, 82, 20, 0, 9, 198, 16, 144, 71, 56,
-			244, 197, 20, 12, 201, 36, 229, 5, 73, 97, 78, 80, 147, 206, 20, 15, 204, 44, 243, 12, 20, 181, 9, 88, 148, 197, 72, 147, 135, 20,
-			15, 204, 20, 180, 197, 53, 3, 9, 24, 144, 197, 72, 147, 135, 20, 15, 204, 16, 148, 203, 88, 19, 9, 24, 144, 197, 72, 147, 135, 20,
-			15, 204, 16, 83, 73, 48, 149, 1, 72, 148, 197, 72, 147, 135, 20, 10, 199, 76, 21, 9, 72, 148, 197, 72, 20, 10, 199, 53, 83, 73,
-			24, 144, 197, 72, 20, 10, 199, 52, 245, 15, 72, 148, 197, 72, 20, 10, 199, 52, 18, 143, 72, 148, 197, 72, 20, 10, 199, 44, 21, 5,
-			44, 148, 197, 72, 20, 10, 199, 36, 224, 85, 29, 84, 133, 72, 20, 10, 199, 24, 83, 73, 56, 148, 197, 72, 20, 10, 199, 85, 35, 204,
-			60, 114, 83, 44, 20, 10, 199, 76, 83, 147, 61, 34, 83, 44, 20, 10, 199, 64, 20, 9, 77, 66, 83, 44, 20, 10, 199, 48, 85, 129,
-			57, 66, 83, 44, 20, 10, 199, 44, 244, 137, 57, 66, 83, 44, 20, 9, 198, 52, 243, 143, 80, 243, 137, 20, 10, 199, 44, 20, 213, 37,
-			53, 9, 44, 20, 10, 199, 81, 84, 130, 84, 193, 78, 80, 20, 10, 199, 5, 48, 197, 56, 65, 78, 80, 20, 0, 13, 138, 13, 9, 19,
-			19, 9, 15, 14, 195, 166, 18, 20, 6, 195, 52, 17, 201, 20, 11, 200, 77, 84, 208, 20, 228, 201, 60, 224, 20, 9, 198, 76, 176, 78,
-			76, 147, 206, 20, 9, 198, 36, 225, 149, 76, 147, 206, 20, 9, 198, 21, 128, 201, 76, 147, 206, 20, 11, 200, 20, 180, 212, 20, 228, 201,
-			60, 224, 20, 11, 136, 16, 18, 195, 166, 19, 5, 14, 20, 20, 0, 8, 197, 64, 20, 212, 20, 192, 20, 8, 197, 44, 242, 193, 36, 224,
-			20, 8, 197, 64, 84, 149, 4, 224, 20, 12, 201, 36, 229, 5, 72, 84, 211, 20, 229, 0, 20, 12, 201, 36, 229, 5, 48, 194, 71, 20,
-			229, 0, 20, 8, 197, 76, 17, 137, 4, 224, 21, 12, 201, 12, 192, 73, 73, 99, 217, 4, 229, 0, 20, 0, 9, 198, 25, 32, 75, 81,
-			84, 128, 20, 13, 202, 80, 84, 141, 36, 227, 204, 60, 114, 83, 44, 20, 13, 202, 76, 83, 147, 60, 211, 212, 61, 34, 83, 44, 20, 13,
-			138, 16, 18, 195, 166, 4, 9, 11, 1, 14, 20, 20, 0, 17, 67, 52, 145, 192, 65, 35, 57, 15, 89, 114, 0, 81, 115, 195, 165, 32,
-			16, 141, 11, 15, 13, 13, 9, 19, 19, 9, 15, 14, 195, 166, 18, 20, 10, 199, 64, 144, 195, 60, 194, 78, 20, 20, 10, 199, 4, 68,
-			203, 36, 195, 9, 28, 20, 10, 199, 80, 19, 13, 84, 66, 83, 44, 20, 10, 199, 76, 20, 132, 60, 226, 83, 44, 20, 10, 199, 64, 193,
-			66, 20, 162, 83, 44, 20, 10, 199, 32, 84, 129, 48, 66, 83, 44, 20, 20, 71, 8, 243, 150, 37, 96, 78, 80, 71, 114, 68, 84, 37,
-			84, 6, 112, 68, 0, 20, 10, 67, 52, 145, 192, 65, 35, 57, 0, 72, 0, 7, 196, 36, 209, 78, 76, 20, 7, 196, 56, 145, 67, 20,
-			20, 0, 12, 69, 8, 194, 86, 21, 32, 71, 55, 37, 34, 0, 8, 197, 81, 84, 142, 21, 32, 20, 8, 197, 60, 224, 78, 21, 32, 20,
-			9, 198, 80, 21, 1, 72, 148, 203, 20, 9, 198, 44, 147, 133, 76, 148, 203, 20, 9, 198, 36, 70, 76, 48, 148, 203, 20, 16, 205, 24,
-			145, 5, 36, 179, 205, 52, 148, 211, 5, 34, 83, 44, 20, 9, 198, 8, 245, 1, 56, 148, 203, 20, 9, 198, 80, 82, 212, 60, 226, 75,
-			20, 8, 197, 16, 240, 197, 57, 64, 20, 9, 198, 72, 84, 201, 16, 83, 147, 20, 0, 9, 198, 80, 83, 5, 76, 179, 208, 20, 9, 198,
-			52, 243, 143, 48, 241, 192, 20, 9, 198, 84, 180, 129, 36, 225, 64, 20, 15, 140, 8, 9, 12, 12, 5, 18, 195, 184, 4, 9, 1, 14,
-			20, 9, 198, 52, 20, 135, 36, 224, 76, 20, 9, 198, 72, 245, 76, 4, 65, 64, 20, 9, 198, 8, 19, 12, 4, 65, 64, 20, 9, 198,
-			65, 35, 214, 36, 19, 148, 20, 9, 198, 5, 36, 143, 28, 19, 148, 20, 0, 10, 199, 12, 83, 12, 84, 195, 211, 20, 20, 10, 199, 44,
-			16, 130, 4, 194, 83, 80, 20, 10, 199, 64, 20, 148, 21, 34, 78, 28, 20, 10, 199, 21, 99, 204, 21, 34, 78, 28, 20, 14, 139, 195,
-			166, 11, 22, 1, 20, 15, 18, 9, 1, 12, 20, 0, 11, 200, 76, 84, 1, 72, 21, 9, 77, 64, 20, 11, 200, 24, 147, 1, 80, 83,
-			9, 77, 64, 20, 11, 200, 4, 32, 78, 16, 243, 142, 21, 32, 20, 12, 137, 20, 195, 165, 12, 13, 15, 4, 9, 7, 20, 12, 201, 60,
-			35, 9, 28, 21, 15, 72, 148, 203, 20, 12, 201, 36, 225, 9, 44, 21, 9, 88, 148, 203, 20, 12, 201, 33, 145, 18, 61, 65, 75, 56,
-			148, 203, 20, 12, 201, 5, 3, 203, 4, 198, 80, 80, 148, 203, 20, 0, 8, 197, 76, 17, 9, 77, 64, 20, 8, 197, 5, 85, 9, 77,
-			64, 20, 8, 197, 5, 65, 73, 77, 64, 20, 8, 197, 65, 35, 194, 21, 32, 20, 8, 197, 52, 145, 210, 21, 32, 20, 13, 138, 19, 195,
-			184, 18, 7, 13, 15, 4, 9, 7, 20, 12, 201, 44, 243, 148, 72, 18, 212, 48, 145, 192, 20, 13, 138, 6, 15, 18, 19, 195, 166, 20,
-			12, 9, 7, 20, 9, 198, 80, 149, 1, 56, 148, 203, 20, 9, 198, 76, 145, 5, 72, 148, 203, 20, 9, 198, 64, 20, 137, 76, 148, 203,
-			20, 9, 198, 52, 82, 193, 56, 148, 203, 20, 9, 198, 48, 18, 207, 56, 148, 203, 20, 9, 198, 41, 83, 143, 56, 148, 203, 20, 11, 136,
-			19, 195, 166, 12, 1, 18, 9, 5, 20, 8, 197, 72, 84, 208, 37, 64, 20, 12, 201, 32, 84, 147, 44, 84, 137, 56, 65, 64, 20, 12,
-			201, 25, 34, 83, 80, 84, 137, 56, 65, 64, 20, 12, 201, 8, 18, 203, 4, 229, 9, 56, 65, 64, 20, 0, 9, 198, 88, 16, 195, 36,
-			225, 64, 20, 27, 74, 8, 80, 200, 4, 209, 76, 76, 21, 67, 20, 71, 36, 91, 35, 65, 6, 36, 12, 60, 89, 6, 113, 12, 89, 0,
-			13, 202, 44, 243, 148, 72, 20, 212, 21, 34, 78, 28, 20, 13, 202, 44, 243, 147, 60, 194, 68, 21, 34, 78, 28, 20, 9, 198, 20, 193,
-			78, 16, 145, 192, 20, 9, 198, 56, 82, 210, 60, 98, 76, 20, 9, 198, 72, 84, 201, 16, 83, 148, 20, 9, 198, 52, 243, 149, 52, 83,
-			148, 20, 8, 66, 60, 112, 114, 0, 76, 8, 0, 15, 204, 44, 192, 83, 76, 145, 137, 44, 21, 15, 72, 148, 203, 20, 10, 199, 81, 84,
-			130, 84, 193, 78, 76, 20, 10, 199, 5, 48, 197, 56, 65, 78, 76, 20, 10, 199, 80, 18, 203, 20, 192, 71, 20, 20, 9, 198, 77, 2,
-			79, 56, 17, 197, 20, 6, 195, 88, 244, 148, 72, 0, 11, 200, 44, 243, 80, 72, 84, 211, 61, 32, 20, 11, 200, 76, 83, 147, 84, 19,
-			9, 77, 64, 20, 11, 200, 48, 81, 201, 80, 147, 73, 77, 64, 20, 11, 200, 20, 180, 212, 72, 83, 73, 77, 64, 20, 8, 198, 48, 82,
-			211, 36, 179, 206, 11, 200, 64, 20, 129, 24, 98, 78, 21, 32, 20, 11, 200, 44, 243, 131, 20, 229, 18, 21, 32, 20, 7, 196, 16, 240,
-			197, 72, 20, 12, 137, 14, 195, 184, 10, 1, 7, 20, 9, 7, 20, 12, 137, 12, 195, 184, 19, 1, 7, 20, 9, 7, 20, 12, 201, 48,
-			19, 135, 60, 32, 82, 16, 148, 203, 20, 12, 201, 44, 243, 147, 60, 224, 78, 80, 148, 203, 20, 12, 201, 36, 226, 9, 8, 149, 15, 72,
-			148, 203, 20, 12, 201, 16, 147, 5, 81, 64, 78, 80, 148, 203, 20, 12, 201, 4, 208, 149, 48, 21, 15, 72, 148, 203, 20, 7, 196, 44,
-			243, 73, 44, 20, 11, 200, 72, 84, 197, 73, 97, 82, 21, 64, 20, 11, 200, 45, 83, 20, 37, 97, 82, 21, 64, 20, 11, 200, 8, 19,
-			1, 56, 49, 82, 21, 64, 20, 12, 137, 14, 195, 184, 10, 1, 7, 20, 9, 7, 20, 12, 137, 12, 195, 184, 19, 1, 7, 20, 9, 7,
-			20, 7, 196, 12, 145, 193, 72, 20, 9, 198, 36, 226, 84, 36, 19, 0, 20, 0, 12, 201, 77, 64, 78, 16, 128, 70, 80, 145, 192, 20,
-			9, 198, 48, 80, 133, 56, 66, 71, 20, 12, 201, 33, 84, 205, 60, 65, 82, 48, 145, 192, 20, 9, 198, 25, 34, 77, 60, 66, 71, 20,
-			9, 198, 24, 145, 213, 72, 194, 71, 20, 12, 201, 8, 20, 141, 32, 161, 82, 80, 145, 192, 20, 12, 201, 72, 240, 137, 57, 51, 206, 4,
-			65, 64, 20, 0, 10, 135, 21, 18, 9, 14, 195, 184, 19, 20, 9, 198, 48, 17, 197, 72, 148, 212, 20, 14, 139, 4, 22, 195, 166, 18,
-			7, 1, 7, 20, 9, 7, 20, 9, 198, 77, 3, 5, 56, 66, 68, 20, 0, 11, 136, 12, 21, 13, 9, 14, 195, 184, 19, 20, 11, 136,
-			4, 5, 12, 9, 18, 195, 184, 19, 20, 12, 201, 81, 32, 78, 76, 210, 83, 76, 147, 206, 20, 10, 199, 88, 149, 1, 48, 148, 197, 72,
-			20, 10, 199, 72, 20, 16, 20, 195, 5, 72, 20, 10, 199, 64, 243, 9, 80, 148, 197, 72, 20, 10, 199, 64, 84, 147, 36, 99, 5, 72,
-			20, 10, 199, 48, 242, 193, 48, 148, 197, 72, 20, 10, 199, 48, 81, 193, 48, 148, 197, 72, 20, 10, 199, 36, 65, 65, 48, 148, 197, 72,
-			20, 15, 140, 11, 18, 1, 19, 2, 195, 184, 18, 19, 20, 9, 7, 20, 15, 140, 1, 13, 1, 20, 195, 184, 18, 1, 7, 20, 9, 7,
-			20, 10, 199, 80, 83, 204, 60, 114, 83, 44, 20, 10, 199, 76, 49, 78, 5, 34, 83, 44, 20, 10, 199, 72, 85, 77, 5, 66, 83, 44,
-			20, 10, 199, 52, 85, 5, 61, 34, 83, 44, 20, 10, 199, 45, 35, 205, 5, 66, 83, 44, 20, 10, 199, 44, 241, 206, 5, 66, 83, 44,
-			20, 10, 199, 40, 84, 213, 37, 66, 83, 44, 20, 10, 199, 33, 148, 212, 21, 34, 83, 44, 20, 10, 199, 21, 50, 201, 52, 242, 83, 44,
-			20, 10, 199, 21, 34, 84, 72, 82, 83, 44, 20, 10, 199, 8, 147, 204, 60, 114, 83, 44, 20, 10, 199, 5, 85, 5, 57, 66, 83, 44,
-			20, 12, 201, 76, 83, 148, 36, 209, 78, 80, 19, 0, 20, 10, 199, 40, 84, 133, 52, 144, 68, 20, 20, 0, 12, 137, 7, 12, 21, 20,
-			9, 14, 195, 184, 19, 20, 11, 200, 4, 229, 18, 61, 3, 204, 60, 112, 20, 11, 200, 8, 20, 139, 20, 229, 9, 56, 80, 20, 9, 198,
-			65, 33, 83, 76, 147, 206, 20, 9, 198, 20, 210, 83, 76, 147, 206, 20, 9, 198, 77, 3, 210, 80, 83, 0, 20, 11, 200, 77, 3, 206,
-			76, 244, 133, 72, 80, 20, 12, 201, 48, 19, 132, 76, 176, 66, 20, 194, 71, 20, 16, 141, 11, 18, 1, 4, 19, 2, 195, 184, 18, 19,
-			20, 9, 7, 20, 12, 201, 36, 225, 19, 45, 34, 86, 20, 194, 71, 20, 15, 204, 16, 148, 203, 60, 229, 9, 57, 81, 82, 48, 145, 192,
-			20, 11, 200, 77, 80, 148, 72, 244, 9, 76, 176, 20, 11, 200, 44, 21, 5, 28, 244, 137, 76, 176, 20, 15, 204, 76, 181, 69, 77, 2,
-			76, 48, 84, 137, 56, 65, 64, 20, 15, 204, 33, 84, 194, 21, 53, 25, 72, 84, 137, 56, 65, 64, 20, 11, 200, 20, 193, 75, 81, 35,
-			206, 36, 176, 20, 9, 68, 92, 130, 84, 20, 21, 0, 10, 0, 13, 138, 22, 15, 12, 21, 13, 9, 14, 195, 184, 19, 20, 13, 138, 11,
-			1, 4, 1, 22, 5, 18, 195, 184, 19, 20, 13, 138, 2, 9, 20, 21, 13, 9, 14, 195, 184, 19, 20, 14, 139, 19, 11, 22, 1, 4,
-			18, 15, 14, 195, 184, 18, 20, 10, 135, 13, 15, 14, 20, 195, 184, 18, 20, 8, 197, 61, 53, 5, 72, 144, 20, 9, 198, 52, 19, 133,
-			72, 194, 71, 20, 9, 198, 28, 241, 13, 60, 66, 71, 20, 8, 197, 37, 34, 68, 36, 80, 20, 8, 197, 45, 35, 206, 36, 176, 20, 0,
-			7, 66, 57, 144, 50, 116, 0, 9, 198, 84, 226, 79, 56, 148, 212, 20, 9, 198, 76, 21, 1, 56, 148, 212, 20, 9, 198, 64, 19, 148,
-			20, 148, 212, 20, 9, 198, 48, 240, 130, 100, 148, 212, 20, 9, 198, 44, 243, 15, 56, 148, 212, 20, 9, 198, 32, 81, 15, 56, 148, 212,
-			20, 9, 198, 29, 35, 211, 76, 148, 212, 20, 9, 198, 16, 83, 9, 72, 148, 212, 20, 13, 202, 76, 19, 147, 20, 211, 212, 61, 34, 83,
-			44, 20, 13, 202, 64, 20, 129, 80, 17, 205, 5, 66, 83, 44, 20, 13, 202, 52, 243, 143, 45, 35, 205, 5, 66, 83, 44, 20, 13, 202,
-			32, 81, 197, 52, 243, 137, 77, 66, 83, 44, 20, 9, 198, 100, 83, 69, 56, 149, 0, 20, 9, 198, 16, 83, 132, 72, 149, 0, 20, 9,
-			198, 21, 81, 197, 56, 146, 192, 20, 0, 6, 195, 56, 115, 192, 17, 12, 137, 4, 5, 19, 5, 18, 20, 195, 184, 18, 20, 10, 199, 64,
-			20, 132, 60, 227, 133, 72, 20, 10, 199, 16, 148, 208, 20, 228, 197, 72, 20, 10, 199, 5, 52, 201, 52, 147, 5, 72, 20, 10, 199, 80,
-			19, 148, 4, 194, 83, 44, 20, 10, 199, 77, 3, 210, 4, 66, 83, 44, 20, 10, 199, 49, 82, 213, 48, 194, 83, 44, 20, 10, 199, 37,
-			35, 203, 21, 50, 83, 44, 20, 10, 199, 16, 18, 212, 100, 194, 83, 44, 20, 9, 198, 64, 19, 12, 4, 66, 69, 20, 10, 199, 88, 82,
-			140, 20, 228, 197, 72, 20, 10, 199, 16, 148, 208, 20, 228, 197, 72, 20, 17, 4, 95, 52, 88, 15, 83, 118, 114, 6, 47, 116, 84, 13,
-			50, 13, 0, 0, 9, 198, 77, 66, 76, 37, 49, 82, 20, 9, 198, 72, 85, 149, 72, 65, 82, 20, 9, 198, 72, 81, 210, 20, 65, 82,
-			20, 11, 200, 12, 128, 82, 13, 85, 5, 72, 144, 20, 12, 201, 28, 83, 143, 64, 192, 68, 20, 194, 71, 20, 11, 200, 88, 82, 140, 20,
-			228, 201, 76, 176, 20, 11, 200, 88, 20, 132, 20, 228, 201, 76, 176, 20, 11, 200, 64, 19, 133, 29, 148, 137, 76, 176, 20, 11, 200, 8,
-			84, 135, 20, 228, 201, 76, 176, 20, 7, 196, 28, 17, 193, 80, 20, 9, 4, 4, 195, 169, 20, 72, 36, 0, 0, 13, 138, 19, 11, 18,
-			15, 6, 21, 12, 195, 184, 19, 20, 19, 70, 8, 83, 9, 104, 148, 203, 71, 36, 55, 37, 12, 89, 37, 89, 81, 0, 66, 9, 198, 76,
-			21, 1, 56, 148, 203, 20, 9, 198, 32, 80, 146, 4, 148, 203, 20, 9, 198, 16, 83, 9, 72, 148, 203, 20, 9, 198, 8, 83, 9, 104,
-			148, 203, 20, 11, 136, 12, 5, 21, 11, 195, 166, 13, 9, 20, 0, 27, 70, 24, 244, 147, 100, 225, 84, 83, 6, 114, 34, 89, 116, 50,
-			13, 72, 15, 107, 112, 34, 0, 81, 104, 97, 114, 32, 9, 198, 16, 148, 16, 20, 69, 84, 20, 20, 4, 95, 3, 9, 18, 89, 6, 108,
-			12, 49, 114, 65, 83, 55, 4, 109, 49, 89, 0, 0, 12, 201, 72, 81, 201, 60, 224, 76, 37, 49, 82, 20, 12, 201, 44, 20, 129, 52,
-			83, 12, 37, 49, 82, 20, 12, 201, 16, 83, 79, 45, 32, 84, 37, 49, 82, 20, 14, 203, 52, 19, 137, 65, 83, 1, 80, 244, 137, 76,
-			176, 20, 10, 199, 80, 84, 146, 5, 34, 85, 52, 20, 10, 199, 44, 243, 12, 20, 114, 85, 52, 20, 10, 199, 64, 83, 147, 36, 243, 129,
-			80, 20, 10, 199, 16, 84, 212, 36, 195, 1, 80, 20, 6, 195, 45, 83, 128, 72, 0, 7, 196, 80, 18, 211, 36, 20, 9, 198, 36, 226,
-			204, 84, 65, 82, 20, 12, 201, 81, 83, 85, 49, 69, 65, 72, 148, 203, 20, 12, 201, 77, 80, 138, 20, 181, 9, 88, 148, 203, 20, 12,
-			201, 72, 80, 201, 80, 21, 9, 88, 148, 203, 20, 7, 196, 48, 147, 73, 80, 20, 7, 196, 80, 19, 73, 48, 20, 0, 0, 9, 198, 4,
-			225, 204, 37, 53, 0, 20, 13, 202, 16, 148, 12, 60, 208, 84, 5, 34, 85, 52, 20, 0, 10, 199, 24, 245, 15, 80, 18, 211, 36, 20,
-			10, 199, 76, 130, 66, 8, 243, 5, 80, 20, 12, 201, 65, 35, 204, 21, 64, 82, 37, 49, 82, 20, 12, 201, 45, 38, 68, 77, 33, 86,
-			36, 65, 82, 20, 10, 199, 56, 20, 212, 85, 37, 9, 20, 20, 10, 199, 29, 147, 78, 5, 50, 85, 52, 20, 10, 199, 72, 246, 65, 48,
-			148, 205, 20, 20, 10, 199, 61, 5, 9, 52, 148, 205, 20, 20, 10, 199, 24, 21, 1, 48, 148, 205, 20, 20, 10, 199, 4, 224, 82, 44,
-			148, 205, 20, 20, 14, 203, 72, 82, 207, 57, 96, 76, 21, 48, 197, 57, 48, 20, 10, 199, 61, 34, 197, 77, 68, 129, 48, 20, 0, 6,
-			195, 44, 101, 77, 17, 7, 196, 24, 16, 207, 56, 20, 7, 196, 81, 145, 143, 56, 20, 12, 201, 64, 21, 18, 84, 194, 133, 72, 147, 135,
-			20, 12, 201, 52, 83, 147, 40, 85, 137, 44, 148, 203, 20, 12, 201, 48, 243, 135, 60, 32, 82, 16, 148, 203, 20, 7, 196, 13, 80, 129,
-			56, 20, 0, 8, 197, 76, 18, 210, 4, 192, 20, 0, 7, 195, 44, 101, 75, 17, 42, 9, 198, 64, 244, 201, 81, 84, 128, 20, 9, 198,
-			5, 35, 65, 81, 84, 128, 20, 9, 198, 72, 85, 137, 76, 244, 128, 20, 9, 198, 21, 50, 193, 48, 84, 128, 20, 9, 198, 17, 84, 16,
-			20, 66, 84, 20, 13, 202, 77, 2, 82, 37, 69, 65, 48, 148, 205, 20, 20, 13, 202, 76, 243, 78, 4, 208, 149, 48, 148, 205, 20, 20,
-			13, 202, 44, 243, 147, 21, 37, 129, 80, 148, 205, 20, 20, 13, 202, 16, 80, 197, 57, 68, 129, 48, 148, 205, 20, 20, 9, 198, 21, 98,
-			68, 20, 229, 0, 20, 9, 198, 4, 208, 82, 4, 229, 0, 20, 0, 9, 198, 53, 149, 15, 48, 241, 201, 20, 10, 199, 36, 229, 133, 73,
-			50, 79, 56, 20, 10, 199, 72, 149, 129, 48, 148, 197, 72, 20, 10, 199, 72, 84, 212, 5, 84, 133, 72, 20, 10, 199, 61, 33, 193, 56,
-			148, 197, 72, 20, 10, 199, 52, 240, 137, 48, 148, 197, 72, 20, 10, 199, 44, 19, 143, 56, 148, 197, 72, 20, 10, 199, 36, 211, 85, 56,
-			148, 197, 72, 20, 10, 199, 24, 21, 143, 72, 148, 197, 72, 20, 10, 199, 52, 17, 217, 5, 34, 83, 44, 20, 10, 199, 45, 85, 193, 37,
-			66, 83, 44, 20, 10, 199, 21, 33, 77, 37, 66, 83, 44, 20, 10, 199, 8, 19, 19, 4, 210, 83, 44, 20, 10, 199, 5, 53, 13, 5,
-			66, 83, 44, 20, 10, 199, 81, 34, 86, 4, 193, 78, 80, 20, 10, 199, 65, 35, 205, 36, 225, 78, 80, 20, 13, 138, 16, 18, 195, 166,
-			10, 21, 4, 9, 3, 5, 20, 0, 11, 200, 76, 84, 1, 72, 21, 9, 60, 224, 20, 11, 200, 60, 35, 9, 28, 21, 9, 60, 224, 20,
-			11, 200, 44, 243, 150, 84, 196, 201, 60, 224, 20, 11, 200, 44, 243, 147, 84, 213, 9, 60, 224, 20, 11, 200, 44, 243, 142, 20, 180, 201,
-			60, 224, 20, 11, 200, 44, 243, 12, 20, 181, 9, 60, 224, 20, 11, 200, 24, 145, 213, 72, 21, 9, 60, 224, 20, 7, 196, 85, 32, 129,
-			56, 21, 0, 8, 197, 76, 84, 150, 36, 192, 20, 8, 197, 24, 80, 146, 36, 192, 20, 12, 201, 5, 66, 5, 56, 145, 78, 76, 84, 128,
-			20, 10, 69, 61, 33, 71, 60, 224, 21, 0, 10, 0, 9, 198, 80, 82, 211, 81, 84, 128, 20, 9, 198, 76, 82, 211, 81, 84, 128, 20,
-			9, 198, 65, 83, 139, 81, 84, 128, 20, 9, 198, 52, 146, 211, 81, 84, 128, 20, 9, 198, 41, 83, 139, 81, 84, 128, 20, 12, 201, 21,
-			2, 68, 20, 210, 79, 48, 241, 201, 20, 21, 146, 18, 5, 16, 18, 195, 166, 19, 5, 14, 20, 1, 20, 9, 22, 9, 20, 5, 20, 20,
-			13, 202, 80, 82, 206, 60, 180, 129, 80, 148, 197, 72, 20, 13, 202, 52, 84, 139, 4, 229, 9, 48, 148, 197, 72, 20, 13, 202, 77, 84,
-			5, 72, 192, 84, 37, 98, 83, 44, 20, 13, 202, 65, 35, 199, 72, 19, 77, 5, 66, 83, 44, 20, 13, 202, 5, 4, 5, 48, 192, 84,
-			37, 98, 83, 44, 20, 9, 198, 61, 5, 76, 20, 229, 0, 20, 9, 198, 24, 19, 12, 20, 229, 0, 20, 9, 198, 17, 32, 66, 4, 229,
-			0, 20, 11, 70, 92, 20, 146, 36, 244, 128, 21, 0, 10, 0, 14, 203, 44, 192, 83, 76, 145, 137, 44, 21, 9, 60, 224, 20, 10, 199,
-			72, 81, 201, 77, 68, 133, 72, 20, 10, 199, 61, 34, 197, 77, 68, 133, 72, 20, 10, 199, 44, 243, 80, 20, 228, 197, 72, 20, 10, 199,
-			36, 225, 137, 49, 68, 133, 72, 20, 10, 199, 36, 195, 21, 77, 68, 133, 72, 20, 10, 199, 45, 148, 137, 48, 194, 83, 44, 20, 10, 199,
-			37, 50, 201, 4, 66, 83, 44, 20, 10, 199, 77, 65, 71, 20, 228, 197, 72, 20, 10, 199, 45, 33, 84, 20, 228, 197, 72, 20, 14, 4,
-			95, 19, 20, 11, 89, 47, 34, 6, 39, 40, 49, 0, 0, 31, 76, 44, 243, 134, 37, 35, 65, 56, 65, 82, 56, 84, 192, 49, 114, 50,
-			83, 36, 34, 65, 6, 110, 50, 72, 108, 20, 50, 13, 89, 0, 11, 200, 77, 64, 71, 56, 21, 9, 60, 224, 20, 11, 200, 61, 33, 9,
-			56, 21, 9, 60, 224, 20, 11, 200, 36, 243, 137, 76, 21, 9, 60, 224, 20, 11, 200, 16, 148, 211, 20, 181, 9, 60, 224, 20, 12, 4,
-			95, 3, 18, 12, 49, 6, 108, 12, 55, 0, 0, 8, 197, 76, 241, 137, 77, 64, 20, 16, 141, 16, 18, 195, 166, 19, 9, 4, 5, 14,
-			20, 9, 5, 12, 20, 8, 197, 81, 32, 67, 21, 32, 20, 8, 197, 85, 33, 71, 21, 32, 20, 16, 205, 36, 229, 5, 72, 224, 84, 36,
-			243, 129, 48, 148, 197, 72, 20, 9, 198, 88, 148, 149, 48, 83, 147, 20, 8, 197, 88, 19, 21, 5, 32, 20, 14, 4, 95, 1, 3, 21,
-			35, 49, 57, 6, 40, 12, 47, 0, 0, 9, 198, 76, 147, 143, 48, 241, 192, 20, 9, 198, 53, 149, 15, 48, 241, 192, 20, 9, 198, 81,
-			33, 69, 56, 145, 192, 20, 9, 198, 44, 19, 148, 60, 224, 76, 20, 9, 198, 33, 148, 212, 4, 65, 64, 20, 0, 10, 199, 80, 19, 13,
-			84, 66, 83, 80, 20, 10, 199, 77, 64, 76, 36, 226, 83, 80, 20, 14, 203, 81, 32, 78, 76, 99, 210, 52, 21, 9, 60, 224, 20, 14,
-			203, 77, 68, 129, 80, 145, 137, 44, 21, 9, 60, 224, 20, 10, 199, 44, 192, 82, 21, 34, 78, 28, 20, 10, 199, 24, 20, 147, 21, 34,
-			78, 28, 20, 0, 11, 200, 80, 83, 5, 24, 243, 137, 77, 64, 20, 7, 196, 80, 82, 83, 80, 20, 11, 200, 64, 20, 131, 20, 195, 9,
-			77, 64, 20, 11, 200, 48, 144, 146, 21, 69, 9, 77, 64, 20, 11, 200, 44, 244, 142, 21, 69, 9, 77, 64, 20, 11, 200, 4, 229, 1,
-			28, 243, 137, 77, 64, 20, 11, 200, 89, 83, 11, 4, 226, 83, 21, 32, 20, 11, 200, 77, 84, 5, 73, 98, 83, 21, 32, 20, 11, 200,
-			76, 177, 77, 5, 66, 83, 21, 32, 20, 11, 200, 52, 241, 5, 72, 226, 83, 21, 32, 20, 11, 200, 52, 84, 131, 21, 34, 83, 21, 32,
-			20, 11, 200, 44, 194, 77, 5, 66, 83, 21, 32, 20, 11, 200, 32, 148, 212, 61, 34, 83, 21, 32, 20, 11, 200, 28, 129, 84, 80, 242,
-			83, 21, 32, 20, 11, 200, 24, 147, 13, 5, 66, 83, 21, 32, 20, 11, 200, 17, 32, 77, 5, 66, 83, 21, 32, 20, 11, 200, 16, 241,
-			205, 5, 66, 83, 21, 32, 20, 11, 200, 16, 83, 196, 61, 34, 83, 21, 32, 20, 11, 200, 5, 35, 205, 5, 66, 83, 21, 32, 20, 11,
-			200, 80, 83, 210, 21, 66, 75, 21, 32, 20, 11, 200, 16, 144, 66, 21, 66, 75, 21, 32, 20, 11, 200, 44, 243, 139, 85, 36, 133, 57,
-			64, 20, 0, 8, 197, 20, 115, 201, 77, 64, 20, 8, 197, 12, 21, 83, 21, 32, 20, 13, 138, 19, 195, 166, 4, 22, 1, 14, 12, 9,
-			7, 20, 12, 201, 56, 244, 132, 88, 84, 212, 48, 145, 192, 20, 13, 138, 13, 5, 4, 7, 195, 184, 18, 12, 9, 7, 20, 9, 198, 52,
-			19, 1, 40, 148, 203, 20, 9, 198, 44, 131, 69, 72, 148, 203, 20, 9, 198, 21, 81, 143, 72, 148, 203, 20, 12, 201, 45, 33, 79, 48,
-			84, 137, 56, 65, 64, 20, 8, 197, 52, 19, 132, 5, 64, 20, 8, 197, 4, 181, 21, 5, 32, 20, 0, 9, 198, 29, 148, 143, 76, 179,
-			208, 20, 9, 198, 24, 20, 203, 36, 225, 64, 20, 13, 202, 65, 35, 212, 20, 181, 9, 60, 226, 83, 80, 20, 13, 202, 64, 84, 134, 20,
-			181, 9, 60, 226, 83, 80, 20, 13, 202, 16, 242, 213, 52, 83, 148, 4, 194, 83, 80, 20, 13, 202, 81, 32, 78, 77, 3, 206, 21, 34,
-			78, 28, 20, 13, 202, 77, 1, 67, 36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 73, 84, 211, 36, 98, 67, 21, 34, 78, 28, 20, 13,
-			202, 64, 244, 201, 80, 147, 206, 21, 34, 78, 28, 20, 13, 202, 44, 192, 82, 36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 28, 195, 210,
-			36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 24, 19, 19, 36, 98, 67, 21, 34, 78, 28, 20, 13, 202, 16, 84, 201, 56, 98, 67, 21,
-			34, 78, 28, 20, 13, 202, 16, 83, 79, 57, 53, 18, 21, 34, 78, 28, 20, 13, 202, 4, 96, 129, 48, 19, 131, 21, 34, 78, 28, 20,
-			14, 139, 195, 184, 13, 6, 9, 14, 4, 20, 12, 9, 7, 20, 9, 198, 88, 83, 137, 56, 65, 64, 20, 9, 198, 16, 84, 137, 56, 65,
-			64, 20, 9, 198, 88, 148, 149, 48, 83, 148, 20, 9, 198, 80, 84, 141, 36, 224, 76, 20, 9, 198, 21, 53, 18, 4, 65, 64, 20, 9,
-			198, 9, 32, 86, 4, 65, 64, 20, 0, 10, 199, 4, 69, 133, 57, 66, 83, 80, 20, 14, 203, 81, 32, 78, 76, 148, 212, 61, 34, 83,
-			21, 32, 20, 10, 199, 16, 82, 193, 56, 84, 211, 20, 20, 14, 203, 72, 82, 207, 57, 96, 76, 21, 48, 197, 57, 64, 20, 9, 198, 64,
-			192, 78, 80, 17, 197, 20, 0, 18, 70, 48, 81, 197, 56, 65, 78, 55, 36, 81, 6, 109, 50, 72, 13, 50, 0, 10, 68, 76, 145, 197,
-			72, 89, 37, 34, 0, 11, 200, 21, 96, 80, 61, 32, 84, 61, 32, 20, 11, 200, 5, 4, 12, 36, 176, 84, 61, 32, 20, 11, 200, 77,
-			3, 206, 80, 19, 137, 77, 64, 20, 11, 200, 44, 19, 131, 20, 195, 9, 77, 64, 20, 11, 200, 33, 148, 15, 77, 64, 83, 21, 32, 20,
-			12, 137, 1, 6, 13, 195, 166, 7, 20, 9, 7, 20, 12, 201, 32, 145, 82, 60, 115, 25, 24, 148, 203, 20, 11, 200, 77, 147, 70, 60,
-			226, 75, 21, 32, 20, 11, 200, 20, 193, 75, 81, 34, 75, 21, 32, 20, 11, 200, 4, 224, 76, 101, 66, 75, 21, 32, 20, 11, 200, 4,
-			195, 5, 72, 114, 75, 21, 32, 20, 11, 200, 4, 176, 68, 20, 210, 75, 21, 32, 20, 7, 196, 88, 81, 193, 56, 20, 11, 200, 44, 243,
-			148, 72, 18, 5, 57, 64, 20, 11, 200, 32, 20, 193, 72, 65, 82, 21, 64, 20, 11, 200, 16, 84, 18, 36, 209, 82, 21, 64, 20, 0,
-			12, 201, 88, 145, 21, 56, 65, 82, 48, 145, 192, 20, 12, 201, 88, 81, 5, 72, 129, 70, 80, 145, 192, 20, 13, 138, 20, 9, 12, 2,
-			195, 184, 18, 12, 9, 7, 20, 12, 201, 77, 2, 68, 76, 98, 78, 16, 145, 192, 20, 13, 138, 15, 22, 5, 18, 4, 195, 165, 4, 9,
-			7, 20, 13, 138, 12, 195, 184, 7, 14, 1, 7, 20, 9, 7, 20, 13, 138, 6, 195, 184, 12, 7, 1, 7, 20, 9, 7, 20, 12, 201,
-			24, 244, 149, 56, 65, 82, 48, 145, 192, 20, 12, 201, 24, 244, 129, 56, 65, 82, 48, 145, 192, 20, 9, 198, 24, 147, 149, 72, 194, 71,
-			20, 13, 138, 5, 14, 4, 18, 195, 166, 7, 20, 9, 7, 20, 9, 198, 4, 101, 5, 56, 194, 71, 20, 8, 197, 81, 32, 71, 36, 176,
-			20, 8, 197, 8, 147, 206, 36, 176, 20, 8, 197, 16, 144, 68, 20, 208, 20, 13, 138, 12, 195, 184, 7, 14, 1, 7, 20, 9, 7, 20,
-			13, 138, 6, 195, 184, 12, 7, 1, 7, 20, 9, 7, 20, 12, 201, 32, 20, 140, 20, 178, 78, 4, 65, 64, 20, 10, 69, 72, 240, 68,
-			36, 80, 21, 0, 10, 0, 9, 198, 81, 32, 80, 64, 148, 212, 20, 13, 202, 64, 20, 148, 36, 181, 76, 5, 34, 83, 80, 20, 14, 139,
-			19, 5, 14, 4, 18, 195, 166, 7, 20, 9, 7, 20, 14, 139, 19, 1, 13, 4, 18, 195, 166, 7, 20, 9, 7, 20, 9, 198, 77, 65,
-			82, 60, 145, 0, 20, 12, 137, 16, 18, 195, 166, 12, 21, 4, 9, 5, 20, 9, 198, 52, 81, 193, 48, 149, 0, 20, 9, 198, 80, 84,
-			141, 36, 226, 64, 20, 9, 198, 28, 198, 80, 80, 146, 192, 20, 9, 198, 8, 245, 1, 56, 146, 192, 20, 9, 198, 64, 146, 197, 72, 85,
-			0, 20, 9, 198, 81, 32, 75, 80, 21, 0, 20, 9, 198, 72, 83, 211, 80, 21, 0, 20, 9, 198, 29, 32, 78, 84, 192, 84, 20, 9,
-			198, 5, 85, 15, 52, 21, 0, 20, 0, 9, 198, 81, 148, 15, 48, 241, 201, 20, 9, 198, 76, 84, 143, 48, 241, 201, 20, 9, 198, 4,
-			229, 15, 48, 241, 201, 20, 10, 199, 52, 82, 193, 56, 148, 197, 72, 20, 10, 199, 45, 85, 20, 21, 36, 137, 28, 20, 15, 204, 16, 148,
-			203, 72, 147, 73, 56, 21, 15, 72, 148, 203, 20, 10, 199, 57, 147, 70, 60, 208, 78, 36, 20, 10, 199, 32, 85, 82, 37, 53, 9, 44,
-			20, 12, 201, 81, 32, 78, 77, 97, 82, 76, 19, 0, 20, 11, 4, 95, 18, 14, 7, 34, 37, 50, 81, 0, 0, 11, 200, 4, 195, 5,
-			72, 115, 204, 60, 112, 20, 9, 198, 76, 179, 210, 64, 147, 206, 20, 11, 200, 64, 193, 84, 80, 84, 137, 56, 112, 20, 11, 200, 64, 17,
-			201, 56, 84, 137, 56, 112, 20, 11, 200, 60, 33, 21, 12, 84, 137, 56, 112, 20, 11, 200, 56, 21, 137, 28, 84, 137, 56, 112, 20, 11,
-			200, 45, 82, 143, 56, 84, 137, 56, 112, 20, 11, 200, 44, 20, 21, 56, 84, 137, 56, 112, 20, 11, 200, 36, 229, 15, 56, 84, 137, 56,
-			112, 20, 11, 200, 36, 225, 9, 44, 84, 137, 56, 112, 20, 11, 200, 36, 225, 9, 12, 84, 137, 56, 112, 20, 11, 200, 29, 34, 76, 48,
-			84, 137, 56, 112, 20, 11, 200, 28, 195, 211, 76, 84, 137, 56, 112, 20, 11, 200, 24, 192, 77, 8, 84, 137, 56, 112, 20, 11, 200, 16,
-			148, 137, 28, 84, 137, 56, 112, 20, 11, 200, 16, 85, 15, 56, 84, 137, 56, 112, 20, 11, 200, 16, 84, 15, 56, 84, 137, 56, 112, 20,
-			11, 200, 16, 82, 207, 72, 84, 137, 56, 112, 20, 11, 200, 4, 195, 15, 44, 84, 137, 56, 112, 20, 11, 200, 4, 33, 9, 12, 84, 137,
-			56, 112, 20, 12, 201, 88, 147, 132, 76, 178, 66, 20, 194, 71, 20, 11, 200, 80, 147, 7, 37, 97, 76, 36, 112, 20, 11, 200, 61, 1,
-			129, 81, 65, 76, 36, 112, 20, 11, 200, 61, 1, 18, 37, 97, 76, 36, 112, 20, 11, 200, 60, 208, 153, 81, 65, 76, 36, 112, 20, 16,
-			141, 14, 5, 4, 5, 18, 4, 18, 195, 166, 7, 20, 9, 7, 20, 16, 141, 7, 5, 14, 14, 5, 13, 6, 195, 184, 18, 12, 9, 7,
-			20, 12, 201, 24, 244, 141, 60, 65, 78, 80, 194, 71, 20, 9, 198, 44, 20, 18, 36, 243, 0, 20, 11, 200, 52, 19, 1, 8, 20, 137,
-			76, 176, 20, 7, 196, 60, 224, 78, 36, 20, 11, 200, 88, 84, 212, 4, 194, 78, 16, 80, 20, 11, 200, 16, 145, 212, 21, 34, 78, 16,
-			80, 20, 11, 200, 16, 148, 133, 45, 68, 137, 12, 80, 20, 0, 12, 201, 32, 83, 12, 20, 32, 82, 16, 148, 212, 20, 8, 197, 76, 20,
-			139, 60, 208, 20, 8, 197, 60, 194, 69, 72, 80, 20, 9, 198, 4, 68, 212, 4, 66, 71, 20, 12, 201, 45, 38, 83, 80, 19, 12, 60,
-			145, 0, 20, 8, 197, 4, 194, 217, 52, 144, 20, 12, 201, 28, 145, 193, 57, 67, 205, 4, 226, 64, 20, 12, 201, 64, 84, 137, 77, 64,
-			76, 80, 146, 192, 20, 12, 201, 16, 148, 212, 72, 18, 5, 72, 85, 0, 20, 0, 9, 198, 72, 145, 207, 72, 148, 212, 20, 9, 198, 32,
-			147, 132, 84, 148, 212, 20, 9, 198, 16, 148, 137, 28, 148, 212, 20, 9, 198, 21, 65, 82, 56, 149, 0, 20, 9, 198, 9, 35, 206, 44,
-			149, 0, 20, 9, 198, 52, 82, 193, 56, 146, 192, 20, 9, 198, 76, 178, 86, 28, 21, 0, 20, 9, 198, 64, 244, 212, 84, 192, 84, 20,
-			9, 198, 45, 96, 68, 72, 21, 0, 20, 9, 198, 44, 20, 130, 60, 224, 84, 20, 0, 14, 203, 77, 80, 138, 20, 181, 9, 88, 84, 137,
-			56, 112, 20, 14, 203, 76, 243, 9, 16, 20, 137, 76, 84, 137, 56, 112, 20, 14, 203, 76, 82, 213, 48, 20, 137, 76, 84, 137, 56, 112,
-			20, 14, 203, 72, 146, 207, 12, 129, 84, 80, 84, 137, 56, 112, 20, 14, 203, 72, 82, 207, 28, 227, 211, 12, 84, 137, 56, 112, 20, 14,
-			203, 65, 35, 212, 60, 179, 204, 48, 84, 137, 56, 112, 20, 14, 203, 64, 243, 25, 52, 84, 137, 76, 84, 137, 56, 112, 20, 14, 203, 64,
-			192, 83, 80, 145, 137, 12, 84, 137, 56, 112, 20, 14, 203, 45, 96, 78, 80, 145, 137, 12, 84, 137, 56, 112, 20, 14, 203, 44, 243, 139,
-			72, 85, 9, 76, 84, 137, 56, 112, 20, 14, 203, 44, 243, 12, 5, 66, 79, 56, 84, 137, 56, 112, 20, 14, 203, 44, 21, 5, 28, 244,
-			137, 76, 84, 137, 56, 112, 20, 14, 203, 36, 229, 5, 73, 1, 76, 48, 84, 137, 56, 112, 20, 14, 203, 36, 65, 78, 80, 145, 137, 12,
-			84, 137, 56, 112, 20, 14, 203, 32, 145, 82, 5, 34, 201, 76, 84, 137, 56, 112, 20, 14, 203, 29, 82, 76, 48, 245, 9, 56, 84, 137,
-			56, 112, 20, 14, 203, 16, 148, 195, 37, 3, 9, 56, 84, 137, 56, 112, 20, 14, 203, 12, 83, 148, 72, 145, 149, 28, 84, 137, 56, 112,
-			20, 10, 199, 64, 84, 148, 85, 32, 133, 72, 20, 14, 203, 36, 225, 140, 4, 211, 65, 80, 244, 137, 76, 176, 20, 14, 203, 5, 37, 9,
-			45, 83, 1, 80, 244, 137, 76, 176, 20, 9, 198, 28, 84, 149, 56, 66, 69, 20, 9, 198, 4, 197, 77, 36, 226, 69, 20, 9, 198, 4,
-			69, 133, 72, 34, 69, 20, 10, 199, 53, 82, 1, 52, 81, 1, 56, 20, 0, 23, 72, 88, 194, 69, 76, 83, 9, 56, 80, 83, 55, 37,
-			89, 13, 55, 6, 37, 12, 50, 13, 0, 20, 9, 198, 77, 66, 80, 84, 193, 82, 20, 9, 198, 64, 244, 212, 84, 193, 82, 20, 9, 198,
-			44, 243, 12, 36, 65, 82, 20, 9, 198, 36, 229, 5, 56, 65, 82, 20, 9, 198, 20, 194, 77, 36, 225, 82, 20, 9, 198, 4, 36, 207,
-			72, 33, 82, 20, 12, 201, 44, 243, 148, 36, 229, 69, 72, 194, 71, 20, 12, 201, 36, 225, 19, 80, 147, 12, 20, 194, 71, 20, 11, 200,
-			28, 83, 147, 81, 34, 68, 36, 112, 20, 11, 200, 24, 244, 129, 29, 65, 76, 36, 112, 20, 11, 200, 17, 83, 68, 72, 148, 212, 36, 112,
-			20, 11, 200, 5, 4, 5, 80, 149, 12, 36, 112, 20, 11, 200, 56, 84, 1, 48, 84, 201, 76, 176, 20, 12, 137, 195, 184, 11, 21, 13,
-			5, 14, 9, 11, 20, 19, 70, 48, 19, 147, 20, 225, 82, 55, 110, 50, 89, 13, 50, 6, 36, 34, 0, 20, 0, 12, 201, 72, 80, 197,
-			65, 66, 79, 56, 148, 212, 20, 12, 201, 44, 192, 82, 36, 225, 84, 80, 148, 212, 20, 9, 198, 32, 147, 132, 84, 148, 203, 20, 12, 201,
-			20, 208, 78, 12, 148, 5, 72, 85, 0, 20, 0, 9, 198, 5, 69, 18, 36, 37, 84, 20, 9, 198, 88, 148, 135, 36, 224, 76, 20, 9,
-			198, 44, 19, 142, 36, 32, 76, 20, 0, 10, 199, 24, 243, 9, 21, 34, 78, 28, 20, 10, 199, 17, 32, 80, 21, 34, 78, 28, 20, 10,
-			199, 32, 244, 148, 20, 228, 201, 20, 20, 14, 203, 24, 244, 147, 80, 19, 132, 21, 34, 78, 16, 80, 20, 0, 17, 70, 48, 81, 197, 56,
-			65, 82, 55, 36, 81, 6, 109, 50, 72, 114, 0, 9, 198, 88, 16, 195, 36, 225, 82, 20, 9, 198, 81, 32, 78, 12, 129, 82, 20, 9,
-			198, 65, 35, 208, 60, 225, 82, 20, 9, 198, 65, 35, 205, 20, 225, 82, 20, 9, 198, 44, 243, 80, 36, 193, 82, 20, 9, 198, 29, 32,
-			78, 84, 193, 82, 20, 9, 198, 24, 20, 195, 36, 225, 82, 20, 9, 198, 4, 68, 207, 72, 33, 82, 20, 12, 201, 88, 145, 84, 56, 19,
-			69, 76, 148, 203, 20, 12, 201, 64, 84, 137, 77, 64, 76, 80, 148, 203, 20, 7, 196, 76, 83, 73, 80, 20, 10, 135, 12, 195, 166, 11,
-			1, 7, 5, 20, 0, 16, 141, 16, 18, 195, 166, 6, 5, 18, 5, 14, 20, 9, 5, 12, 20, 9, 198, 4, 196, 193, 12, 148, 203, 20,
-			0, 11, 5, 15, 7, 19, 195, 165, 114, 89, 13, 0, 9, 198, 76, 19, 13, 37, 53, 0, 20, 9, 198, 20, 194, 84, 37, 53, 0, 20,
-			13, 202, 65, 35, 199, 72, 19, 77, 21, 34, 78, 28, 20, 0, 10, 199, 16, 80, 197, 56, 226, 85, 52, 20, 10, 199, 77, 64, 76, 4,
-			115, 73, 80, 20, 10, 199, 61, 33, 193, 56, 148, 205, 20, 20, 10, 199, 52, 82, 193, 56, 148, 205, 20, 20, 10, 199, 48, 18, 207, 56,
-			148, 205, 20, 20, 10, 199, 24, 83, 73, 56, 148, 205, 20, 20, 10, 199, 4, 196, 9, 56, 148, 205, 20, 20, 10, 199, 16, 148, 208, 20,
-			228, 193, 80, 20, 10, 199, 52, 17, 201, 77, 68, 129, 48, 20, 0, 13, 68, 56, 241, 197, 56, 50, 6, 39, 12, 14, 50, 0, 9, 198,
-			36, 195, 21, 76, 147, 206, 20, 9, 198, 4, 195, 21, 76, 147, 206, 20, 7, 196, 72, 81, 197, 72, 20, 7, 196, 48, 81, 197, 72, 20,
-			12, 201, 76, 83, 133, 28, 19, 5, 76, 148, 203, 20, 12, 201, 20, 180, 197, 53, 3, 1, 72, 148, 203, 20, 12, 201, 4, 69, 143, 44,
-			21, 15, 72, 148, 203, 20, 9, 198, 64, 20, 129, 29, 32, 70, 20, 7, 196, 88, 81, 193, 72, 20, 0, 16, 69, 24, 192, 75, 60, 224,
-			83, 55, 110, 49, 6, 114, 68, 0, 20, 16, 205, 20, 226, 5, 17, 50, 207, 52, 208, 84, 21, 34, 78, 28, 20, 12, 137, 18, 195, 184,
-			4, 2, 25, 14, 9, 20, 20, 8, 197, 80, 19, 142, 36, 224, 20, 8, 197, 52, 244, 134, 36, 224, 20, 8, 197, 4, 211, 210, 36, 224,
-			20, 8, 197, 29, 32, 67, 36, 192, 20, 8, 197, 25, 32, 71, 36, 192, 20, 8, 197, 81, 35, 202, 4, 224, 20, 8, 197, 72, 16, 130,
-			36, 224, 20, 0, 13, 202, 80, 245, 1, 48, 149, 1, 72, 148, 205, 20, 20, 13, 202, 44, 243, 147, 60, 224, 78, 80, 148, 205, 20, 20,
-			13, 202, 44, 243, 134, 84, 50, 65, 56, 148, 205, 20, 20, 13, 202, 16, 147, 5, 81, 64, 78, 80, 148, 205, 20, 20, 13, 202, 5, 96,
-			78, 80, 112, 82, 16, 148, 205, 20, 20, 0, 21, 71, 5, 80, 133, 72, 114, 78, 20, 39, 71, 36, 34, 91, 6, 37, 12, 50, 13, 0,
-			20, 10, 199, 64, 84, 141, 37, 69, 5, 72, 20, 10, 199, 44, 243, 16, 61, 37, 5, 72, 20, 9, 198, 17, 80, 200, 21, 52, 197, 20,
-			0, 13, 68, 4, 193, 78, 20, 110, 55, 6, 36, 50, 13, 0, 11, 200, 4, 36, 207, 73, 5, 9, 60, 224, 20, 9, 198, 81, 148, 15,
-			29, 32, 70, 20, 9, 198, 8, 20, 143, 29, 32, 70, 20, 7, 196, 60, 49, 65, 56, 21, 11, 136, 6, 195, 184, 4, 5, 18, 1, 12,
-			20, 0, 8, 197, 52, 148, 211, 36, 192, 20, 0, 9, 198, 45, 38, 83, 60, 194, 84, 20, 0, 12, 201, 77, 80, 147, 45, 34, 80, 80,
-			147, 206, 20, 10, 199, 72, 82, 133, 45, 66, 79, 56, 20, 12, 201, 65, 35, 211, 45, 34, 80, 80, 147, 206, 20, 10, 199, 36, 229, 133,
-			57, 66, 79, 56, 20, 10, 199, 16, 145, 197, 77, 66, 79, 56, 20, 10, 199, 16, 85, 137, 5, 66, 79, 56, 20, 10, 199, 88, 147, 132,
-			36, 176, 78, 80, 20, 0, 11, 200, 8, 144, 140, 36, 244, 203, 61, 0, 20, 9, 198, 5, 52, 197, 77, 51, 210, 20, 11, 200, 44, 244,
-			146, 85, 5, 9, 60, 224, 20, 11, 200, 16, 148, 208, 21, 36, 201, 60, 224, 20, 11, 200, 4, 229, 9, 24, 80, 146, 36, 224, 20, 0,
-			8, 197, 72, 82, 212, 61, 32, 20, 8, 197, 24, 18, 212, 61, 32, 20, 8, 197, 80, 18, 211, 21, 32, 20, 8, 197, 48, 18, 211, 21,
-			32, 20, 0, 13, 202, 52, 19, 137, 24, 84, 212, 5, 66, 79, 56, 20, 9, 198, 64, 192, 78, 21, 33, 64, 20, 9, 198, 48, 147, 138,
-			21, 33, 64, 20, 9, 198, 28, 20, 142, 21, 33, 64, 20, 9, 198, 8, 20, 130, 21, 33, 64, 20, 18, 4, 95, 1, 3, 50, 72, 114,
-			13, 55, 35, 49, 57, 6, 40, 12, 47, 0, 0, 10, 199, 52, 244, 134, 36, 226, 83, 80, 20, 10, 199, 80, 16, 149, 21, 34, 78, 28,
-			20, 6, 195, 61, 96, 76, 20, 9, 198, 48, 147, 79, 56, 17, 5, 20, 0, 11, 200, 36, 226, 214, 37, 50, 84, 61, 32, 20, 11, 200,
-			52, 85, 1, 48, 194, 83, 21, 32, 20, 11, 200, 52, 20, 203, 36, 226, 83, 21, 32, 20, 11, 200, 32, 20, 141, 60, 226, 83, 21, 32,
-			20, 11, 200, 24, 197, 79, 72, 84, 195, 21, 32, 20, 11, 200, 8, 19, 11, 4, 226, 83, 21, 32, 20, 9, 198, 48, 144, 133, 73, 66,
-			78, 20, 0, 8, 197, 45, 35, 203, 21, 32, 20, 8, 197, 28, 192, 83, 21, 32, 20, 8, 197, 16, 244, 211, 21, 32, 20, 12, 201, 16,
-			149, 137, 76, 147, 206, 21, 33, 64, 20, 12, 201, 61, 97, 82, 76, 145, 212, 48, 145, 192, 20, 8, 197, 36, 228, 85, 37, 64, 20, 12,
-			201, 64, 21, 18, 36, 245, 9, 76, 209, 64, 20, 9, 198, 16, 145, 1, 45, 66, 75, 20, 0, 9, 198, 48, 82, 212, 85, 33, 64, 20,
-			9, 198, 80, 18, 212, 21, 33, 64, 20, 9, 198, 77, 3, 204, 21, 33, 64, 20, 9, 198, 76, 243, 132, 21, 33, 64, 20, 9, 198, 45,
-			99, 212, 21, 33, 64, 20, 9, 198, 28, 20, 132, 21, 33, 64, 20, 9, 198, 8, 20, 132, 21, 33, 64, 20, 9, 198, 44, 193, 82, 36,
-			176, 76, 20, 0, 10, 199, 64, 241, 1, 29, 34, 83, 80, 20, 10, 199, 52, 243, 143, 80, 82, 83, 80, 20, 10, 199, 45, 83, 20, 85,
-			34, 83, 80, 20, 10, 199, 44, 243, 148, 61, 34, 83, 80, 20, 10, 199, 21, 128, 197, 73, 2, 83, 80, 20, 10, 199, 16, 81, 129, 37,
-			66, 83, 80, 20, 10, 199, 8, 20, 143, 56, 84, 211, 20, 20, 14, 203, 77, 97, 78, 16, 35, 210, 28, 83, 147, 21, 32, 20, 14, 203,
-			76, 147, 11, 20, 35, 210, 28, 83, 147, 21, 32, 20, 14, 203, 52, 20, 137, 4, 113, 82, 28, 83, 147, 21, 32, 20, 0, 31, 68, 84,
-			226, 79, 56, 57, 40, 50, 57, 108, 50, 15, 89, 47, 36, 37, 89, 57, 13, 50, 0, 81, 115, 116, 97, 116, 105, 111, 110, 32, 11, 200,
-			88, 83, 148, 36, 192, 84, 61, 32, 20, 11, 200, 81, 32, 78, 76, 148, 212, 61, 32, 20, 11, 200, 61, 48, 201, 48, 192, 84, 61, 32,
-			20, 11, 200, 48, 146, 214, 36, 64, 84, 61, 32, 20, 11, 200, 36, 226, 193, 77, 48, 84, 61, 32, 20, 7, 196, 84, 226, 79, 56, 20,
-			11, 200, 72, 82, 212, 36, 98, 67, 21, 32, 20, 11, 200, 52, 244, 148, 36, 98, 67, 21, 32, 20, 7, 196, 48, 241, 197, 72, 20, 11,
-			200, 44, 243, 77, 84, 226, 67, 21, 32, 20, 11, 200, 24, 244, 148, 36, 98, 67, 21, 32, 20, 11, 200, 12, 84, 148, 36, 98, 67, 21,
-			32, 20, 7, 196, 73, 80, 137, 56, 20, 15, 204, 4, 229, 18, 61, 3, 205, 61, 33, 137, 76, 209, 64, 20, 9, 198, 52, 147, 133, 72,
-			19, 0, 20, 9, 198, 28, 83, 133, 72, 19, 0, 20, 0, 12, 201, 81, 34, 85, 52, 97, 82, 36, 225, 192, 20, 12, 201, 77, 66, 80,
-			84, 193, 82, 36, 225, 192, 20, 12, 201, 76, 82, 213, 56, 65, 82, 36, 225, 192, 20, 12, 201, 76, 80, 197, 72, 225, 82, 36, 225, 192,
-			20, 12, 201, 72, 85, 1, 8, 193, 82, 36, 225, 192, 20, 12, 201, 64, 83, 132, 84, 193, 82, 36, 225, 192, 20, 12, 201, 44, 240, 71,
-			84, 193, 82, 36, 225, 192, 20, 12, 201, 44, 20, 197, 72, 225, 82, 36, 225, 192, 20, 12, 201, 44, 19, 85, 24, 193, 82, 36, 225, 192,
-			20, 12, 201, 36, 227, 203, 84, 193, 82, 36, 225, 192, 20, 12, 201, 32, 20, 131, 20, 193, 82, 36, 225, 192, 20, 12, 201, 20, 194, 77,
-			36, 225, 82, 36, 225, 192, 20, 12, 201, 16, 85, 1, 12, 129, 82, 36, 225, 192, 20, 12, 201, 12, 148, 139, 84, 193, 82, 36, 225, 192,
-			20, 12, 201, 4, 36, 207, 72, 33, 82, 36, 225, 192, 20, 12, 201, 44, 21, 1, 65, 83, 20, 21, 33, 64, 20, 12, 201, 25, 32, 71,
-			52, 83, 148, 21, 33, 64, 20, 12, 201, 8, 19, 132, 21, 35, 204, 21, 33, 64, 20, 15, 140, 195, 166, 19, 20, 5, 20, 9, 3, 9,
-			19, 13, 5, 20, 8, 197, 45, 84, 129, 28, 80, 20, 0, 9, 198, 48, 21, 9, 56, 148, 212, 20, 9, 198, 44, 243, 15, 72, 148, 212,
-			20, 9, 198, 8, 18, 83, 76, 148, 212, 20, 9, 198, 73, 81, 134, 21, 34, 64, 20, 9, 198, 40, 240, 130, 21, 34, 64, 20, 9, 198,
-			28, 20, 150, 21, 34, 64, 20, 9, 198, 76, 18, 211, 37, 50, 192, 20, 9, 198, 37, 64, 76, 37, 50, 192, 20, 9, 198, 32, 84, 143,
-			37, 50, 192, 20, 9, 198, 33, 145, 18, 61, 130, 68, 20, 9, 198, 77, 147, 70, 60, 226, 64, 20, 9, 198, 16, 84, 137, 88, 21, 0,
-			20, 9, 198, 4, 69, 143, 44, 21, 0, 20, 5, 131, 239, 187, 191, 0, 6, 195, 53, 34, 64, 17, 11, 136, 19, 16, 1, 20, 9, 195,
-			184, 19, 20, 12, 137, 9, 14, 20, 5, 18, 9, 195, 184, 18, 20, 9, 198, 76, 147, 143, 48, 241, 201, 20, 9, 198, 24, 243, 143, 48,
-			241, 201, 20, 10, 199, 64, 16, 201, 24, 144, 197, 72, 20, 10, 199, 44, 243, 15, 56, 148, 197, 72, 20, 10, 199, 36, 70, 76, 48, 148,
-			197, 72, 20, 10, 199, 20, 180, 208, 61, 37, 5, 72, 20, 10, 199, 8, 245, 1, 56, 148, 197, 72, 20, 9, 198, 8, 18, 212, 21, 34,
-			69, 20, 9, 198, 32, 84, 130, 5, 34, 69, 20, 0, 12, 137, 1, 13, 2, 9, 20, 9, 195, 184, 19, 20, 11, 200, 25, 32, 83, 20,
-			243, 15, 28, 144, 20, 15, 204, 84, 67, 65, 81, 34, 75, 84, 193, 82, 36, 225, 192, 20, 15, 204, 77, 80, 150, 20, 229, 9, 60, 225,
-			82, 36, 225, 192, 20, 15, 204, 65, 35, 208, 61, 37, 9, 60, 225, 82, 36, 225, 192, 20, 11, 200, 45, 98, 84, 80, 84, 137, 56, 112,
-			20, 11, 200, 40, 243, 137, 76, 84, 137, 56, 112, 20, 9, 198, 64, 20, 148, 36, 83, 0, 20, 7, 196, 80, 83, 210, 36, 20, 11, 200,
-			32, 84, 148, 84, 113, 76, 36, 112, 20, 9, 198, 52, 85, 1, 56, 243, 0, 20, 11, 200, 45, 33, 84, 20, 228, 201, 76, 176, 20, 11,
-			200, 52, 83, 79, 72, 19, 132, 84, 208, 20, 11, 200, 45, 33, 83, 80, 243, 65, 80, 144, 20, 20, 68, 12, 129, 67, 44, 47, 57, 109,
-			49, 6, 37, 50, 0, 44, 20, 81, 105, 110, 32, 11, 200, 45, 96, 68, 72, 241, 143, 56, 144, 20, 11, 200, 89, 83, 7, 5, 34, 83,
-			52, 80, 20, 11, 200, 88, 246, 69, 85, 34, 83, 52, 80, 20, 11, 200, 77, 2, 82, 37, 66, 83, 52, 80, 20, 11, 200, 76, 84, 137,
-			4, 194, 83, 52, 80, 20, 11, 200, 76, 82, 212, 21, 34, 83, 52, 80, 20, 11, 200, 72, 243, 65, 57, 66, 83, 52, 80, 20, 11, 200,
-			65, 34, 86, 5, 66, 83, 52, 80, 20, 11, 200, 60, 178, 213, 49, 66, 83, 52, 80, 20, 11, 200, 52, 19, 137, 21, 34, 83, 52, 80,
-			20, 11, 200, 8, 20, 130, 5, 34, 83, 52, 80, 20, 11, 200, 77, 147, 132, 21, 34, 78, 16, 80, 20, 7, 196, 77, 81, 1, 56, 20,
-			7, 196, 77, 81, 1, 56, 21, 9, 198, 72, 17, 9, 44, 19, 0, 20, 0, 12, 201, 44, 244, 205, 21, 67, 204, 60, 114, 64, 20, 12,
-			201, 21, 99, 204, 85, 66, 79, 56, 148, 212, 20, 8, 197, 4, 180, 201, 60, 208, 20, 14, 139, 4, 5, 6, 195, 166, 11, 1, 20, 9,
-			15, 14, 20, 9, 198, 16, 83, 1, 29, 66, 71, 20, 12, 201, 77, 147, 80, 5, 65, 84, 37, 50, 192, 20, 12, 201, 65, 35, 212, 61,
-			70, 80, 37, 50, 192, 20, 12, 201, 56, 84, 15, 80, 148, 212, 37, 50, 192, 20, 12, 201, 52, 85, 15, 16, 148, 212, 37, 50, 192, 20,
-			12, 201, 52, 84, 143, 88, 147, 135, 37, 50, 192, 20, 12, 201, 45, 144, 133, 72, 225, 84, 37, 50, 192, 20, 12, 201, 32, 84, 146, 56,
-			133, 84, 37, 50, 192, 20, 12, 201, 12, 243, 135, 60, 193, 83, 37, 50, 192, 20, 12, 201, 12, 86, 76, 60, 225, 83, 37, 50, 192, 20,
-			12, 201, 5, 3, 208, 48, 82, 212, 37, 50, 192, 20, 12, 201, 4, 224, 75, 60, 197, 84, 37, 50, 192, 20, 8, 197, 80, 81, 5, 84,
-			208, 20, 6, 195, 85, 34, 78, 20, 8, 197, 8, 145, 193, 52, 144, 20, 12, 201, 65, 35, 204, 21, 64, 82, 36, 21, 0, 20, 9, 198,
-			16, 83, 1, 29, 66, 71, 20, 0, 9, 198, 64, 16, 201, 24, 148, 212, 20, 14, 139, 8, 195, 165, 14, 4, 20, 5, 18, 9, 14, 7,
-			20, 9, 198, 53, 149, 20, 21, 34, 64, 20, 9, 198, 53, 148, 132, 21, 34, 64, 20, 9, 198, 48, 81, 140, 21, 34, 64, 20, 9, 198,
-			44, 243, 9, 9, 34, 64, 20, 9, 198, 24, 145, 140, 21, 34, 64, 20, 9, 198, 8, 20, 130, 5, 34, 64, 20, 9, 198, 76, 20, 6,
-			37, 50, 192, 20, 9, 198, 52, 244, 193, 37, 50, 192, 20, 9, 198, 5, 32, 66, 37, 50, 192, 20, 9, 198, 45, 84, 5, 72, 85, 0,
-			20, 9, 198, 4, 180, 143, 8, 21, 0, 20, 0, 10, 199, 12, 83, 148, 85, 34, 79, 56, 20, 15, 140, 16, 18, 195, 166, 3, 9, 19,
-			5, 18, 9, 14, 7, 20, 14, 203, 12, 83, 148, 72, 19, 9, 76, 84, 137, 56, 112, 20, 10, 199, 44, 243, 139, 49, 81, 5, 72, 20,
-			10, 199, 5, 4, 12, 5, 81, 5, 72, 20, 14, 203, 33, 145, 18, 60, 83, 5, 45, 68, 137, 76, 176, 20, 9, 198, 56, 82, 212, 5,
-			34, 69, 20, 14, 203, 76, 17, 15, 52, 20, 207, 12, 130, 83, 52, 80, 20, 14, 203, 65, 35, 214, 36, 228, 201, 4, 194, 83, 52, 80,
-			20, 14, 203, 52, 19, 20, 33, 84, 201, 4, 226, 83, 52, 80, 20, 14, 203, 44, 243, 77, 84, 226, 84, 5, 34, 83, 52, 80, 20, 14,
-			203, 24, 192, 71, 20, 195, 1, 57, 66, 83, 52, 80, 20, 14, 203, 9, 84, 133, 5, 82, 210, 5, 66, 83, 52, 80, 20, 14, 203, 9,
-			32, 78, 16, 84, 201, 4, 226, 83, 52, 80, 20, 14, 203, 5, 34, 83, 80, 242, 210, 5, 66, 83, 52, 80, 20, 24, 4, 95, 53, 88,
-			15, 107, 110, 55, 47, 16, 6, 109, 89, 36, 50, 89, 47, 116, 84, 13, 50, 13, 0, 0, 9, 198, 80, 20, 212, 5, 69, 82, 20, 9,
-			198, 77, 68, 137, 45, 69, 82, 20, 13, 138, 16, 18, 15, 10, 5, 11, 20, 195, 184, 18, 20, 13, 138, 11, 15, 14, 4, 21, 11, 20,
-			195, 184, 18, 20, 11, 200, 60, 67, 206, 80, 243, 15, 28, 144, 20, 11, 200, 60, 49, 65, 56, 243, 15, 28, 144, 20, 11, 200, 24, 83,
-			73, 56, 243, 15, 28, 144, 20, 16, 141, 195, 166, 11, 22, 9, 22, 1, 12, 5, 18, 9, 14, 7, 20, 9, 198, 52, 20, 141, 61, 33,
-			82, 20, 9, 198, 29, 32, 84, 84, 193, 82, 20, 9, 198, 20, 180, 208, 60, 225, 82, 20, 9, 198, 20, 180, 201, 77, 65, 82, 20, 9,
-			198, 16, 148, 208, 60, 225, 82, 20, 11, 200, 77, 145, 22, 21, 53, 12, 36, 112, 20, 11, 200, 61, 4, 21, 77, 65, 76, 36, 112, 20,
-			18, 70, 9, 83, 12, 21, 66, 78, 71, 116, 55, 13, 47, 6, 109, 68, 0, 20, 11, 200, 45, 38, 80, 80, 241, 193, 52, 144, 20, 9,
-			198, 5, 81, 213, 77, 66, 78, 20, 7, 196, 72, 81, 193, 48, 20, 7, 196, 36, 65, 65, 48, 20, 0, 12, 201, 44, 243, 12, 20, 181,
-			9, 88, 148, 212, 20, 14, 139, 16, 18, 195, 166, 19, 20, 1, 20, 9, 15, 14, 20, 12, 201, 72, 17, 134, 36, 224, 68, 21, 34, 64,
-			20, 12, 201, 97, 147, 15, 29, 32, 70, 37, 50, 192, 20, 12, 201, 96, 84, 143, 29, 32, 70, 37, 50, 192, 20, 12, 201, 81, 148, 15,
-			29, 32, 70, 37, 50, 192, 20, 12, 201, 80, 244, 15, 29, 32, 70, 37, 50, 192, 20, 12, 201, 80, 243, 79, 29, 32, 70, 37, 50, 192,
-			20, 12, 201, 80, 83, 5, 29, 32, 70, 37, 50, 192, 20, 12, 201, 77, 84, 5, 73, 51, 206, 37, 50, 192, 20, 12, 201, 65, 148, 143,
-			80, 82, 206, 37, 50, 192, 20, 12, 201, 61, 37, 15, 29, 32, 70, 37, 50, 192, 20, 12, 201, 56, 243, 79, 29, 32, 70, 37, 50, 192,
-			20, 12, 201, 53, 83, 20, 36, 85, 14, 37, 50, 192, 20, 12, 201, 52, 243, 143, 29, 32, 70, 37, 50, 192, 20, 12, 201, 48, 149, 15,
-			29, 32, 70, 37, 50, 192, 20, 12, 201, 45, 38, 79, 80, 82, 206, 37, 50, 192, 20, 9, 198, 44, 243, 5, 72, 148, 203, 20, 12, 201,
-			44, 83, 73, 29, 32, 70, 37, 50, 192, 20, 12, 201, 36, 65, 79, 29, 32, 70, 37, 50, 192, 20, 12, 201, 32, 243, 15, 29, 32, 70,
-			37, 50, 192, 20, 12, 201, 24, 245, 15, 29, 32, 70, 37, 50, 192, 20, 12, 201, 24, 243, 143, 29, 32, 70, 37, 50, 192, 20, 12, 201,
-			21, 67, 143, 29, 32, 70, 37, 50, 192, 20, 12, 201, 16, 83, 79, 29, 32, 70, 37, 50, 192, 20, 12, 201, 8, 20, 143, 52, 85, 18,
-			37, 50, 192, 20, 12, 201, 5, 85, 15, 29, 32, 70, 37, 50, 192, 20, 12, 201, 9, 84, 133, 5, 82, 210, 5, 66, 64, 20, 9, 198,
-			77, 147, 70, 60, 226, 75, 20, 6, 195, 37, 32, 78, 20, 0, 9, 198, 80, 131, 205, 37, 53, 0, 20, 9, 198, 56, 18, 86, 37, 65,
-			84, 20, 12, 201, 16, 242, 213, 52, 83, 148, 5, 34, 69, 20, 9, 198, 56, 244, 141, 4, 227, 128, 20, 9, 198, 8, 18, 203, 4, 224,
-			76, 20, 0, 10, 199, 64, 20, 211, 21, 34, 78, 28, 20, 10, 199, 25, 32, 83, 21, 34, 78, 28, 20, 10, 199, 9, 37, 78, 21, 34,
-			78, 28, 20, 10, 199, 8, 195, 203, 21, 34, 78, 28, 20, 14, 203, 20, 101, 5, 73, 68, 153, 44, 177, 76, 36, 112, 20, 12, 201, 20,
-			115, 195, 20, 229, 18, 36, 177, 82, 20, 16, 141, 19, 11, 195, 166, 12, 19, 11, 195, 184, 18, 9, 1, 14, 20, 0, 9, 198, 81, 37,
-			66, 4, 69, 82, 20, 7, 196, 20, 193, 71, 36, 20, 9, 198, 77, 84, 16, 60, 225, 82, 20, 9, 198, 72, 82, 214, 37, 33, 82, 20,
-			9, 198, 72, 81, 149, 56, 65, 82, 20, 9, 198, 52, 243, 5, 77, 65, 82, 20, 9, 198, 12, 130, 75, 4, 225, 82, 20, 9, 198, 4,
-			227, 133, 45, 65, 82, 20, 9, 198, 4, 178, 214, 37, 33, 82, 20, 12, 201, 85, 53, 82, 64, 21, 15, 72, 148, 203, 20, 12, 201, 76,
-			82, 83, 52, 243, 15, 28, 148, 203, 20, 12, 201, 52, 243, 9, 56, 243, 15, 28, 148, 203, 20, 15, 204, 44, 147, 133, 52, 21, 15, 29,
-			32, 70, 37, 50, 192, 20, 15, 204, 32, 148, 212, 61, 34, 79, 29, 32, 70, 37, 50, 192, 20, 7, 196, 80, 147, 73, 16, 20, 9, 198,
-			64, 244, 212, 20, 194, 78, 20, 9, 198, 32, 20, 140, 20, 178, 78, 20, 9, 198, 20, 225, 15, 45, 34, 78, 20, 11, 70, 72, 80, 197,
-			37, 97, 82, 21, 0, 10, 0, 9, 198, 5, 53, 18, 60, 195, 199, 20, 12, 201, 76, 147, 85, 49, 64, 78, 37, 65, 84, 20, 12, 201,
-			72, 80, 197, 65, 66, 86, 37, 65, 84, 20, 12, 201, 65, 34, 77, 37, 66, 86, 37, 65, 84, 20, 12, 201, 60, 34, 133, 45, 66, 86,
-			37, 65, 84, 20, 12, 201, 20, 97, 133, 45, 66, 86, 37, 65, 84, 20, 9, 198, 36, 65, 78, 80, 148, 203, 20, 9, 198, 21, 81, 197,
-			56, 148, 203, 20, 9, 198, 76, 83, 73, 61, 66, 75, 20, 0, 9, 198, 20, 112, 76, 37, 65, 84, 20, 13, 202, 80, 82, 206, 36, 98,
-			67, 21, 34, 78, 28, 20, 18, 143, 6, 195, 184, 4, 5, 18, 1, 12, 9, 19, 5, 18, 9, 14, 7, 20, 13, 202, 5, 85, 15, 44,
-			192, 86, 21, 34, 78, 28, 20, 0, 9, 198, 52, 243, 143, 29, 32, 77, 20, 9, 198, 36, 65, 79, 29, 32, 77, 20, 12, 137, 18, 195,
-			166, 19, 15, 14, 14, 5, 18, 20, 10, 199, 80, 245, 5, 52, 148, 205, 20, 20, 10, 199, 64, 19, 148, 20, 148, 205, 20, 20, 10, 199,
-			32, 81, 15, 56, 148, 205, 20, 20, 10, 199, 4, 192, 137, 56, 148, 205, 20, 20, 10, 199, 52, 17, 201, 77, 68, 129, 80, 20, 0, 12,
-			201, 72, 81, 140, 20, 181, 15, 72, 148, 203, 20, 12, 201, 44, 243, 77, 37, 52, 193, 72, 148, 203, 20, 12, 201, 16, 149, 137, 56, 21,
-			15, 72, 148, 203, 20, 7, 196, 44, 19, 73, 44, 20, 9, 198, 24, 243, 143, 29, 32, 70, 20, 0, 8, 197, 12, 149, 18, 60, 224, 20,
-			12, 201, 36, 225, 129, 57, 66, 76, 37, 65, 84, 20, 8, 197, 76, 19, 79, 4, 224, 20, 12, 201, 16, 148, 212, 36, 225, 214, 21, 33,
-			84, 20, 0, 13, 202, 53, 82, 1, 52, 81, 1, 56, 148, 205, 20, 20, 13, 202, 52, 84, 139, 4, 229, 9, 48, 148, 205, 20, 20, 13,
-			202, 37, 51, 204, 5, 66, 79, 56, 148, 205, 20, 20, 0, 17, 70, 8, 84, 131, 21, 84, 197, 71, 109, 34, 89, 118, 12, 89, 0, 66,
-			10, 199, 72, 84, 208, 60, 225, 5, 72, 20, 10, 199, 64, 148, 149, 21, 69, 5, 72, 20, 10, 199, 16, 148, 12, 60, 208, 84, 36, 20,
-			10, 199, 5, 85, 15, 45, 32, 84, 36, 20, 12, 201, 24, 195, 206, 20, 195, 15, 29, 32, 70, 20, 10, 199, 76, 82, 213, 56, 64, 78,
-			80, 20, 10, 199, 72, 81, 21, 56, 64, 78, 80, 20, 0, 11, 200, 36, 229, 5, 72, 97, 82, 60, 224, 20, 9, 198, 81, 34, 76, 48,
-			147, 206, 20, 9, 198, 4, 64, 80, 80, 147, 206, 20, 15, 204, 65, 35, 208, 61, 37, 9, 60, 224, 76, 37, 65, 84, 20, 11, 200, 5,
-			84, 212, 72, 19, 9, 20, 224, 20, 9, 198, 76, 84, 137, 29, 32, 70, 20, 11, 200, 64, 20, 129, 16, 242, 211, 4, 192, 20, 0, 15,
-			140, 19, 20, 195, 184, 11, 9, 15, 13, 5, 20, 18, 9, 20, 8, 197, 64, 84, 19, 36, 224, 20, 16, 205, 36, 229, 5, 72, 224, 84,
-			36, 243, 129, 48, 148, 205, 20, 20, 8, 197, 24, 148, 211, 36, 192, 20, 12, 201, 36, 229, 5, 72, 97, 82, 20, 228, 192, 20, 10, 2,
-			195, 151, 81, 6, 35, 68, 36, 0, 0, 13, 202, 45, 34, 77, 36, 224, 76, 37, 53, 9, 44, 20, 0, 10, 199, 81, 32, 86, 21, 53,
-			5, 72, 20, 10, 199, 64, 84, 147, 37, 53, 5, 72, 20, 10, 199, 44, 242, 78, 12, 145, 5, 72, 20, 10, 199, 20, 180, 212, 73, 81,
-			5, 72, 20, 17, 4, 95, 19, 13, 3, 89, 65, 6, 113, 12, 55, 49, 4, 35, 48, 0, 5, 130, 196, 141, 43, 0, 11, 200, 80, 83,
-			132, 20, 229, 9, 20, 192, 20, 11, 200, 80, 19, 135, 20, 229, 9, 20, 192, 20, 0, 8, 197, 88, 243, 20, 21, 32, 20, 8, 197, 64,
-			19, 16, 21, 32, 20, 8, 197, 20, 213, 76, 21, 32, 20, 9, 198, 16, 243, 69, 77, 66, 75, 20, 8, 197, 72, 16, 137, 5, 64, 20,
-			0, 13, 202, 36, 225, 9, 77, 3, 211, 37, 66, 79, 56, 20, 9, 198, 73, 82, 78, 21, 33, 64, 20, 9, 198, 20, 193, 86, 21, 33,
-			64, 20, 0, 9, 198, 72, 85, 9, 72, 17, 5, 20, 9, 198, 48, 83, 79, 56, 17, 5, 20, 0, 19, 5, 6, 46, 5, 11, 19, 83,
-			114, 36, 81, 89, 36, 65, 48, 13, 55, 0, 25, 11, 200, 52, 21, 18, 36, 181, 76, 21, 32, 20, 11, 200, 8, 20, 146, 36, 176, 68,
-			21, 32, 20, 12, 201, 88, 20, 207, 52, 245, 15, 72, 148, 203, 20, 12, 201, 8, 243, 19, 40, 85, 137, 44, 148, 203, 20, 9, 198, 56,
-			82, 212, 5, 34, 78, 20, 9, 198, 48, 148, 9, 105, 160, 78, 20, 15, 140, 195, 166, 11, 22, 9, 4, 9, 19, 20, 1, 14, 20, 20,
-			0, 8, 197, 77, 64, 84, 85, 32, 20, 12, 201, 64, 244, 201, 80, 147, 206, 21, 33, 64, 20, 8, 197, 61, 134, 68, 21, 32, 20, 8,
-			197, 61, 130, 68, 21, 32, 20, 8, 197, 52, 21, 20, 21, 32, 20, 8, 197, 37, 51, 204, 21, 32, 20, 12, 201, 25, 83, 139, 80, 147,
-			206, 21, 33, 64, 20, 12, 201, 25, 32, 75, 80, 147, 206, 21, 33, 64, 20, 8, 197, 21, 2, 76, 21, 32, 20, 12, 201, 4, 208, 137,
-			80, 147, 206, 21, 33, 64, 20, 8, 197, 24, 244, 141, 5, 64, 20, 8, 197, 37, 51, 194, 5, 32, 20, 14, 2, 194, 167, 48, 35, 34,
-			35, 81, 34, 6, 35, 83, 0, 0, 15, 66, 76, 80, 89, 36, 15, 89, 114, 0, 81, 115, 195, 165, 32, 9, 198, 8, 244, 132, 85, 33,
-			64, 20, 9, 198, 76, 245, 80, 21, 33, 64, 20, 9, 198, 76, 244, 148, 21, 33, 64, 20, 9, 198, 64, 20, 148, 21, 33, 64, 20, 9,
-			198, 9, 35, 196, 21, 33, 64, 20, 9, 198, 84, 49, 78, 81, 32, 76, 20, 9, 198, 36, 229, 5, 29, 32, 76, 20, 11, 70, 88, 83,
-			148, 85, 33, 64, 21, 0, 10, 6, 194, 60, 208, 76, 28, 0, 9, 198, 56, 19, 143, 29, 32, 77, 20, 10, 199, 81, 34, 83, 80, 84,
-			211, 20, 20, 10, 199, 36, 229, 5, 72, 84, 211, 20, 20, 10, 199, 72, 81, 21, 56, 64, 78, 76, 20, 12, 137, 18, 195, 166, 19, 15,
-			14, 14, 1, 2, 20, 10, 2, 194, 165, 57, 6, 36, 50, 12, 0, 0, 11, 200, 80, 83, 80, 21, 32, 84, 85, 32, 20, 11, 200, 48,
-			149, 20, 21, 32, 84, 85, 32, 20, 12, 201, 40, 245, 82, 56, 19, 9, 77, 66, 75, 20, 10, 2, 194, 162, 89, 6, 36, 50, 47, 0,
-			0, 9, 134, 15, 4, 9, 195, 184, 19, 20, 10, 135, 8, 15, 14, 14, 195, 184, 18, 20, 10, 135, 6, 18, 9, 19, 195, 184, 18, 20,
-			12, 201, 88, 17, 193, 8, 243, 132, 21, 33, 64, 20, 12, 201, 44, 243, 150, 60, 197, 84, 21, 33, 64, 20, 12, 201, 44, 243, 148, 72,
-			20, 212, 21, 33, 64, 20, 12, 201, 16, 242, 213, 52, 83, 148, 21, 33, 64, 20, 12, 201, 5, 33, 213, 52, 83, 148, 21, 33, 64, 20,
-			8, 197, 21, 81, 143, 72, 144, 20, 8, 197, 53, 84, 197, 84, 208, 20, 8, 197, 80, 82, 83, 52, 80, 20, 8, 197, 16, 82, 83, 52,
-			80, 20, 8, 197, 85, 48, 78, 12, 80, 20, 9, 2, 194, 163, 48, 40, 50, 19, 0, 0, 10, 135, 22, 9, 19, 11, 195, 184, 19, 20,
-			10, 135, 19, 5, 18, 9, 195, 184, 19, 20, 9, 198, 80, 20, 129, 57, 65, 76, 20, 9, 198, 76, 194, 66, 21, 34, 64, 20, 9, 198,
-			76, 192, 86, 21, 34, 64, 20, 9, 198, 56, 20, 146, 21, 34, 64, 20, 9, 198, 44, 226, 66, 21, 34, 64, 20, 9, 198, 28, 224, 86,
-			21, 34, 64, 20, 9, 198, 24, 20, 150, 21, 34, 64, 20, 9, 198, 48, 20, 16, 37, 50, 192, 20, 9, 198, 20, 193, 71, 37, 50, 192,
-			20, 9, 198, 28, 20, 129, 57, 66, 64, 20, 9, 198, 72, 83, 133, 28, 21, 0, 20, 9, 198, 24, 245, 15, 77, 64, 84, 20, 9, 198,
-			12, 83, 147, 61, 32, 84, 20, 9, 198, 5, 69, 5, 57, 64, 84, 20, 9, 198, 4, 197, 77, 56, 21, 0, 20, 0, 12, 137, 11, 15,
-			8, 195, 166, 19, 9, 15, 14, 20, 10, 199, 36, 229, 5, 57, 50, 79, 56, 20, 10, 199, 16, 149, 133, 73, 50, 79, 56, 20, 10, 199,
-			52, 19, 137, 13, 84, 133, 72, 20, 10, 199, 44, 243, 148, 36, 229, 69, 72, 20, 10, 199, 44, 21, 15, 48, 144, 197, 72, 20, 10, 199,
-			5, 69, 18, 36, 37, 69, 72, 20, 12, 201, 77, 83, 6, 5, 66, 65, 104, 243, 0, 20, 9, 198, 80, 84, 146, 5, 34, 69, 20, 10,
-			199, 44, 20, 140, 40, 242, 1, 56, 21, 0, 11, 200, 8, 245, 82, 28, 83, 201, 76, 144, 20, 11, 200, 44, 20, 146, 61, 52, 197, 72,
-			144, 20, 11, 200, 80, 147, 12, 4, 65, 76, 36, 112, 20, 11, 200, 77, 3, 9, 16, 17, 212, 36, 112, 20, 11, 200, 52, 148, 213, 56,
-			65, 76, 36, 112, 20, 11, 200, 4, 229, 133, 56, 65, 76, 36, 112, 20, 11, 200, 77, 144, 129, 72, 149, 9, 76, 176, 20, 11, 200, 37,
-			51, 1, 52, 149, 9, 76, 176, 20, 11, 200, 33, 145, 201, 20, 163, 137, 76, 176, 20, 11, 200, 32, 19, 147, 20, 21, 9, 76, 176, 20,
-			11, 200, 5, 34, 201, 52, 81, 9, 76, 176, 20, 11, 200, 4, 229, 1, 72, 181, 9, 76, 176, 20, 11, 200, 4, 193, 129, 8, 85, 9,
-			76, 176, 20, 11, 200, 4, 180, 143, 52, 21, 9, 76, 176, 20, 11, 200, 76, 178, 90, 60, 100, 133, 56, 144, 20, 11, 200, 81, 35, 212,
-			76, 178, 83, 52, 80, 20, 11, 200, 77, 147, 12, 60, 114, 83, 52, 80, 20, 11, 200, 76, 130, 78, 80, 242, 83, 52, 80, 20, 11, 200,
-			56, 83, 204, 60, 114, 83, 52, 80, 20, 11, 200, 28, 19, 12, 36, 50, 83, 52, 80, 20, 11, 200, 20, 180, 207, 72, 50, 83, 52, 80,
-			20, 11, 200, 77, 3, 9, 16, 17, 212, 36, 112, 20, 28, 2, 194, 174, 34, 36, 81, 37, 89, 47, 34, 6, 109, 34, 13, 86, 15, 84,
-			6, 35, 34, 13, 65, 109, 34, 49, 108, 0, 0, 13, 138, 19, 16, 9, 18, 9, 20, 21, 195, 184, 19, 20, 14, 139, 7, 1, 12, 22,
-			1, 14, 9, 19, 195, 184, 18, 20, 8, 197, 25, 34, 69, 72, 144, 20, 12, 201, 76, 86, 67, 32, 83, 12, 37, 50, 192, 20, 12, 201,
-			65, 54, 75, 20, 65, 76, 37, 50, 192, 20, 12, 201, 65, 35, 199, 56, 244, 212, 37, 50, 192, 20, 12, 201, 64, 20, 133, 57, 65, 84,
-			37, 50, 192, 20, 12, 201, 64, 16, 201, 24, 148, 212, 37, 50, 192, 20, 12, 201, 52, 244, 129, 48, 148, 212, 37, 50, 192, 20, 12, 201,
-			52, 243, 133, 28, 20, 203, 37, 50, 192, 20, 12, 201, 52, 85, 1, 77, 64, 84, 37, 50, 192, 20, 12, 201, 48, 147, 135, 88, 148, 212,
-			37, 50, 192, 20, 12, 201, 48, 83, 137, 56, 148, 212, 37, 50, 192, 20, 12, 201, 44, 243, 15, 72, 148, 212, 37, 50, 192, 20, 12, 201,
-			44, 21, 1, 48, 84, 20, 37, 50, 192, 20, 12, 201, 33, 83, 79, 72, 148, 212, 37, 50, 192, 20, 12, 201, 28, 83, 210, 28, 148, 212,
-			37, 50, 192, 20, 12, 201, 25, 85, 21, 72, 148, 212, 37, 50, 192, 20, 12, 201, 21, 81, 133, 52, 148, 212, 37, 50, 192, 20, 12, 201,
-			16, 83, 79, 45, 32, 84, 37, 50, 192, 20, 12, 201, 9, 81, 4, 32, 148, 212, 37, 50, 192, 20, 12, 201, 4, 227, 129, 48, 148, 212,
-			37, 50, 192, 20, 12, 201, 12, 132, 137, 77, 66, 65, 56, 149, 0, 20, 10, 69, 76, 245, 82, 12, 80, 21, 0, 10, 5, 130, 195, 167,
-			43, 0, 9, 198, 76, 230, 68, 21, 34, 64, 20, 9, 198, 73, 149, 20, 21, 34, 64, 20, 9, 198, 64, 147, 132, 21, 34, 64, 20, 9,
-			198, 44, 241, 204, 21, 34, 64, 20, 9, 198, 44, 240, 140, 21, 34, 64, 20, 9, 198, 44, 20, 148, 21, 34, 64, 20, 9, 198, 28, 226,
-			68, 21, 34, 64, 20, 9, 198, 16, 145, 148, 21, 34, 64, 20, 9, 198, 9, 35, 196, 21, 34, 64, 20, 9, 198, 8, 147, 132, 21, 34,
-			64, 20, 9, 198, 64, 20, 129, 76, 149, 0, 20, 9, 198, 24, 81, 5, 77, 66, 64, 20, 9, 198, 12, 130, 65, 57, 66, 64, 20, 9,
-			198, 76, 83, 137, 61, 32, 84, 20, 9, 198, 72, 85, 19, 77, 64, 84, 20, 9, 198, 16, 148, 208, 5, 32, 84, 20, 5, 130, 195, 164,
-			43, 0, 12, 137, 13, 15, 4, 5, 12, 12, 195, 184, 18, 20, 10, 199, 61, 130, 68, 5, 66, 79, 56, 20, 10, 199, 61, 101, 76, 5,
-			66, 79, 56, 20, 10, 199, 37, 51, 204, 5, 66, 79, 56, 20, 10, 199, 36, 229, 5, 57, 66, 79, 56, 20, 10, 199, 36, 225, 140, 5,
-			66, 79, 56, 20, 10, 199, 44, 243, 80, 61, 53, 5, 72, 20, 9, 198, 52, 20, 148, 101, 34, 69, 20, 14, 203, 64, 21, 18, 36, 20,
-			139, 4, 194, 83, 52, 80, 20, 14, 203, 64, 20, 148, 36, 181, 76, 5, 34, 83, 52, 80, 20, 0, 13, 138, 11, 15, 13, 13, 1, 14,
-			4, 195, 184, 18, 20, 9, 198, 72, 148, 15, 77, 65, 82, 20, 9, 198, 45, 33, 68, 37, 65, 82, 20, 9, 198, 44, 20, 130, 85, 33,
-			82, 20, 9, 198, 44, 19, 9, 9, 33, 82, 20, 9, 198, 36, 229, 5, 29, 33, 82, 20, 9, 198, 36, 228, 208, 37, 33, 82, 20, 9,
-			198, 28, 20, 129, 57, 65, 82, 20, 9, 198, 16, 149, 133, 73, 65, 82, 20, 9, 198, 16, 145, 134, 21, 33, 82, 20, 9, 198, 5, 52,
-			201, 77, 65, 82, 20, 12, 201, 76, 198, 78, 28, 83, 1, 29, 66, 71, 20, 15, 204, 84, 226, 86, 21, 36, 193, 48, 148, 212, 37, 50,
-			192, 20, 11, 200, 80, 83, 5, 64, 21, 9, 76, 176, 20, 15, 204, 76, 176, 78, 16, 147, 129, 88, 148, 212, 37, 50, 192, 20, 15, 204,
-			65, 35, 208, 4, 112, 78, 16, 148, 212, 37, 50, 192, 20, 11, 200, 60, 229, 15, 48, 241, 201, 76, 176, 20, 15, 204, 44, 243, 12, 20,
-			181, 9, 88, 148, 212, 37, 50, 192, 20, 15, 204, 24, 20, 141, 4, 179, 199, 56, 244, 212, 37, 50, 192, 20, 15, 204, 21, 99, 204, 85,
-			66, 79, 56, 148, 212, 37, 50, 192, 20, 11, 200, 5, 85, 15, 52, 21, 9, 76, 176, 20, 11, 200, 5, 3, 211, 80, 243, 9, 76, 176,
-			20, 7, 196, 24, 16, 201, 48, 20, 11, 200, 72, 243, 65, 56, 148, 212, 36, 176, 20, 9, 198, 32, 243, 132, 85, 32, 78, 20, 15, 204,
-			24, 194, 80, 65, 35, 204, 21, 64, 82, 36, 21, 0, 20, 7, 196, 48, 81, 193, 48, 20, 20, 2, 194, 170, 83, 36, 65, 37, 50, 37,
-			50, 15, 118, 72, 37, 50, 6, 35, 55, 0, 0, 13, 138, 12, 21, 11, 19, 21, 18, 9, 195, 184, 19, 20, 12, 201, 72, 16, 149, 48,
-			148, 212, 21, 34, 64, 20, 12, 201, 56, 21, 20, 21, 35, 196, 21, 34, 64, 20, 12, 201, 81, 83, 85, 49, 64, 82, 37, 50, 192, 20,
-			12, 201, 80, 83, 5, 52, 85, 18, 37, 50, 192, 20, 12, 201, 72, 85, 8, 5, 97, 82, 37, 50, 192, 20, 12, 201, 65, 35, 204, 21,
-			64, 82, 37, 50, 192, 20, 12, 201, 64, 192, 78, 21, 64, 82, 37, 50, 192, 20, 12, 201, 4, 229, 9, 45, 96, 82, 37, 50, 192, 20,
-			12, 201, 4, 48, 197, 77, 51, 210, 37, 50, 192, 20, 0, 15, 140, 16, 15, 18, 20, 18, 195, 166, 20, 20, 195, 184, 18, 20, 15, 140,
-			13, 1, 14, 9, 16, 21, 12, 1, 20, 195, 184, 18, 20, 15, 140, 9, 14, 19, 20, 1, 12, 12, 1, 20, 195, 184, 18, 20, 15, 140,
-			4, 5, 19, 20, 9, 12, 12, 1, 20, 195, 184, 18, 20, 6, 195, 16, 85, 19, 72, 15, 4, 95, 18, 5, 22, 34, 37, 84, 6, 108,
-			12, 89, 72, 0, 6, 130, 195, 160, 43, 14, 0, 9, 198, 24, 243, 143, 29, 32, 77, 20, 9, 198, 4, 84, 143, 29, 32, 77, 20, 10,
-			199, 52, 146, 210, 60, 34, 69, 48, 20, 9, 198, 29, 147, 129, 56, 68, 137, 20, 14, 203, 8, 18, 212, 21, 34, 79, 48, 241, 201, 76,
-			176, 20, 10, 199, 44, 243, 139, 61, 33, 1, 80, 20, 13, 2, 194, 169, 49, 114, 48, 37, 34, 35, 57, 47, 0, 0, 9, 198, 64, 83,
-			12, 21, 65, 82, 20, 9, 198, 44, 243, 208, 21, 33, 82, 20, 9, 198, 36, 229, 133, 77, 65, 82, 20, 9, 198, 36, 228, 201, 77, 65,
-			82, 20, 9, 198, 24, 18, 212, 85, 33, 82, 20, 9, 198, 16, 85, 5, 45, 65, 82, 20, 9, 198, 5, 36, 133, 77, 65, 82, 20, 9,
-			198, 4, 36, 207, 49, 97, 82, 20, 15, 204, 24, 245, 15, 29, 32, 77, 52, 85, 18, 37, 50, 192, 20, 9, 198, 52, 19, 132, 5, 34,
-			78, 20, 9, 198, 44, 244, 147, 61, 32, 78, 20, 9, 3, 16, 195, 165, 48, 113, 0, 72, 0, 12, 201, 76, 83, 147, 37, 66, 86, 37,
-			65, 84, 20, 12, 201, 76, 83, 5, 45, 66, 86, 37, 65, 84, 20, 12, 201, 61, 4, 15, 73, 69, 78, 37, 65, 84, 20, 12, 201, 5,
-			52, 197, 73, 66, 86, 37, 65, 84, 20, 12, 137, 16, 18, 195, 166, 16, 1, 18, 1, 20, 20, 5, 130, 197, 159, 43, 5, 130, 195, 175,
-			43, 0, 9, 198, 81, 80, 129, 37, 53, 0, 20, 9, 198, 72, 80, 76, 37, 65, 84, 20, 9, 198, 57, 83, 12, 37, 65, 84, 20, 0,
-			20, 8, 23, 3, 39, 5, 18, 14, 5, 19, 84, 6, 36, 89, 36, 114, 50, 13, 89, 0, 9, 198, 8, 20, 143, 29, 32, 77, 20, 9,
-			198, 5, 69, 15, 29, 32, 77, 20, 12, 137, 7, 195, 166, 19, 20, 5, 18, 5, 18, 20, 10, 199, 12, 83, 12, 84, 195, 201, 16, 20,
-			10, 199, 44, 83, 143, 80, 17, 137, 20, 20, 7, 2, 194, 181, 65, 116, 0, 0, 7, 196, 64, 146, 197, 72, 20, 7, 196, 48, 18, 197,
-			72, 20, 7, 196, 80, 244, 20, 36, 20, 9, 198, 16, 19, 65, 76, 49, 78, 20, 7, 196, 88, 146, 193, 72, 20, 5, 130, 195, 170, 43,
-			0, 12, 201, 80, 83, 5, 29, 32, 70, 37, 53, 0, 20, 12, 201, 76, 83, 147, 36, 34, 76, 37, 65, 84, 20, 12, 201, 60, 97, 137,
-			12, 144, 76, 37, 65, 84, 20, 12, 201, 52, 21, 5, 72, 144, 76, 37, 65, 84, 20, 12, 201, 36, 211, 79, 73, 64, 76, 37, 65, 84,
-			20, 12, 201, 36, 195, 9, 45, 98, 68, 37, 65, 84, 20, 14, 139, 19, 11, 18, 195, 166, 4, 4, 5, 18, 5, 18, 20, 14, 139, 11,
-			195, 166, 18, 5, 19, 20, 5, 18, 5, 18, 20, 12, 201, 44, 243, 147, 80, 84, 142, 21, 33, 84, 20, 5, 130, 195, 171, 43, 0, 9,
-			198, 16, 148, 211, 20, 228, 192, 20, 17, 142, 19, 21, 12, 6, 1, 16, 18, 195, 166, 16, 1, 18, 1, 20, 20, 9, 198, 88, 20, 137,
-			4, 228, 192, 20, 0, 10, 199, 65, 35, 198, 21, 65, 82, 20, 20, 10, 199, 44, 244, 212, 84, 209, 82, 20, 20, 10, 199, 8, 19, 1,
-			56, 49, 82, 20, 20, 10, 199, 20, 212, 9, 72, 146, 197, 72, 20, 10, 199, 4, 181, 83, 80, 146, 197, 72, 20, 9, 198, 36, 225, 197,
-			56, 149, 77, 20, 10, 199, 80, 147, 79, 45, 32, 84, 36, 20, 5, 130, 195, 169, 43, 0, 13, 138, 19, 20, 1, 20, 9, 15, 14, 195,
-			166, 18, 20, 9, 134, 16, 15, 12, 195, 166, 18, 20, 9, 134, 13, 15, 12, 195, 166, 18, 20, 13, 138, 13, 9, 12, 12, 9, 15, 14,
-			195, 166, 18, 20, 7, 196, 64, 20, 148, 36, 20, 7, 196, 8, 81, 201, 44, 20, 14, 2, 194, 190, 47, 34, 109, 49, 84, 6, 35, 34,
-			47, 0, 5, 130, 195, 182, 43, 0, 10, 135, 19, 11, 1, 12, 195, 166, 18, 20, 8, 197, 29, 32, 86, 36, 64, 20, 8, 197, 8, 20,
-			211, 36, 224, 20, 8, 197, 64, 20, 212, 36, 192, 20, 8, 197, 56, 244, 208, 36, 192, 20, 12, 201, 45, 98, 78, 80, 84, 211, 20, 228,
-			192, 20, 12, 201, 36, 229, 5, 48, 194, 71, 20, 228, 192, 20, 12, 201, 36, 229, 5, 72, 84, 211, 4, 229, 0, 20, 19, 2, 195, 183,
-			72, 37, 84, 37, 72, 6, 36, 51, 36, 86, 15, 65, 36, 86, 0, 0, 13, 202, 56, 82, 210, 60, 208, 78, 80, 146, 197, 72, 20, 13,
-			202, 24, 147, 8, 5, 35, 79, 56, 146, 197, 72, 20, 12, 201, 44, 194, 77, 4, 181, 5, 72, 149, 77, 20, 13, 2, 194, 188, 36, 50,
-			15, 49, 84, 35, 34, 47, 0, 0, 12, 137, 16, 21, 2, 5, 18, 20, 195, 166, 18, 20, 12, 137, 3, 5, 12, 12, 21, 12, 195, 166,
-			18, 20, 10, 199, 65, 35, 198, 36, 193, 82, 20, 20, 10, 199, 76, 19, 86, 37, 69, 9, 28, 20, 10, 199, 76, 17, 212, 52, 241, 9,
-			28, 20, 10, 199, 17, 144, 147, 36, 225, 9, 28, 20, 14, 203, 20, 180, 202, 84, 115, 211, 48, 21, 137, 20, 224, 20, 10, 199, 85, 37,
-			71, 84, 22, 65, 56, 20, 9, 198, 4, 195, 9, 4, 224, 197, 20, 10, 199, 81, 32, 70, 36, 176, 78, 80, 20, 11, 2, 194, 189, 36,
-			50, 6, 107, 35, 55, 0, 0, 9, 198, 48, 85, 129, 57, 66, 78, 20, 9, 198, 5, 33, 197, 57, 66, 78, 20, 9, 198, 4, 225, 204,
-			36, 176, 78, 20, 9, 198, 17, 32, 71, 60, 208, 78, 21, 22, 2, 194, 186, 65, 6, 35, 89, 49, 40, 55, 37, 50, 15, 118, 72, 37,
-			50, 6, 35, 55, 0, 16, 4, 95, 18, 6, 24, 34, 47, 34, 39, 83, 55, 109, 49, 89, 0, 14, 4, 95, 3, 5, 4, 89, 13, 72,
-			6, 37, 55, 35, 0, 0, 14, 139, 18, 21, 4, 9, 13, 5, 14, 20, 195, 166, 18, 20, 8, 197, 64, 83, 12, 21, 64, 20, 8, 197,
-			8, 19, 12, 21, 64, 20, 8, 197, 60, 35, 201, 77, 64, 20, 8, 197, 52, 243, 148, 21, 32, 20, 15, 204, 44, 83, 79, 80, 84, 129,
-			64, 85, 84, 36, 181, 77, 20, 8, 197, 36, 226, 214, 37, 64, 20, 8, 197, 29, 32, 70, 37, 64, 20, 8, 197, 16, 80, 197, 57, 64,
-			20, 8, 197, 44, 195, 210, 5, 64, 20, 0, 9, 198, 48, 240, 133, 48, 145, 64, 20, 9, 198, 88, 19, 129, 16, 145, 64, 20, 9, 198,
-			56, 240, 133, 48, 145, 64, 20, 9, 198, 8, 19, 1, 56, 49, 64, 20, 0, 9, 67, 36, 177, 64, 35, 57, 49, 0, 10, 199, 76, 240,
-			201, 60, 227, 205, 36, 20, 14, 4, 95, 12, 9, 7, 55, 37, 81, 35, 47, 40, 34, 0, 5, 130, 195, 177, 43, 5, 130, 197, 161, 43,
-			0, 9, 198, 16, 81, 133, 57, 51, 210, 20, 11, 200, 76, 22, 15, 24, 243, 137, 77, 64, 20, 11, 200, 44, 243, 134, 61, 35, 73, 77,
-			64, 20, 11, 200, 44, 20, 9, 80, 19, 9, 77, 64, 20, 11, 200, 84, 211, 210, 4, 194, 84, 21, 64, 20, 11, 200, 64, 197, 82, 4,
-			194, 84, 21, 64, 20, 11, 200, 52, 20, 211, 37, 98, 84, 21, 64, 20, 11, 200, 48, 20, 195, 37, 98, 84, 21, 64, 20, 11, 200, 44,
-			243, 139, 5, 98, 84, 21, 64, 20, 11, 200, 36, 229, 5, 29, 34, 84, 21, 64, 20, 11, 200, 24, 18, 212, 36, 50, 84, 21, 64, 20,
-			11, 200, 16, 81, 143, 72, 210, 84, 21, 64, 20, 11, 200, 12, 83, 5, 9, 34, 84, 21, 64, 20, 11, 200, 4, 227, 206, 100, 210, 84,
-			21, 64, 20, 11, 200, 25, 33, 75, 88, 83, 148, 21, 32, 20, 11, 200, 4, 178, 210, 20, 66, 84, 21, 32, 20, 9, 198, 88, 83, 133,
-			80, 144, 78, 20, 11, 200, 72, 84, 212, 5, 84, 129, 57, 64, 20, 0, 8, 197, 80, 244, 148, 85, 32, 20, 8, 197, 73, 84, 20, 85,
-			32, 20, 8, 197, 44, 243, 148, 85, 32, 20, 8, 197, 77, 64, 84, 85, 64, 20, 8, 197, 41, 83, 137, 61, 32, 20, 8, 197, 77, 66,
-			76, 21, 64, 20, 8, 197, 57, 81, 9, 77, 64, 20, 12, 201, 76, 84, 150, 36, 49, 82, 36, 225, 192, 20, 12, 201, 64, 20, 134, 84,
-			209, 82, 36, 225, 192, 20, 12, 201, 16, 84, 193, 72, 209, 82, 36, 225, 192, 20, 12, 201, 5, 36, 129, 56, 113, 82, 36, 225, 192, 20,
-			8, 197, 76, 21, 84, 21, 32, 20, 8, 197, 20, 194, 68, 21, 32, 20, 8, 197, 16, 19, 132, 21, 32, 20, 11, 136, 13, 195, 184, 12,
-			12, 5, 18, 9, 20, 13, 138, 8, 195, 184, 10, 1, 4, 5, 12, 9, 7, 20, 12, 201, 88, 242, 193, 9, 83, 1, 72, 145, 64, 20,
-			8, 197, 21, 52, 18, 37, 64, 20, 12, 201, 56, 85, 84, 72, 19, 9, 76, 209, 64, 20, 12, 201, 56, 21, 21, 72, 19, 9, 76, 209,
-			64, 20, 12, 201, 44, 243, 134, 61, 35, 73, 76, 209, 64, 20, 12, 201, 44, 20, 9, 80, 19, 9, 76, 209, 64, 20, 8, 197, 44, 194,
-			69, 57, 64, 20, 12, 201, 56, 243, 131, 32, 19, 1, 56, 49, 64, 20, 8, 197, 77, 83, 6, 5, 64, 20, 8, 197, 56, 149, 18, 5,
-			64, 20, 12, 201, 44, 243, 147, 37, 53, 15, 72, 144, 76, 20, 8, 197, 64, 146, 193, 57, 64, 20, 0, 14, 139, 14, 15, 18, 4, 195,
-			184, 19, 20, 12, 9, 7, 20, 14, 139, 8, 195, 184, 10, 20, 9, 4, 5, 12, 9, 7, 20, 9, 198, 76, 19, 65, 72, 145, 64, 20,
-			9, 198, 4, 211, 79, 56, 145, 64, 20, 9, 198, 52, 21, 18, 36, 49, 64, 20, 9, 198, 4, 181, 18, 36, 49, 64, 20, 9, 198, 25,
-			35, 205, 4, 113, 64, 20, 7, 132, 2, 195, 184, 18, 76, 5, 130, 195, 188, 43, 0, 14, 203, 25, 83, 132, 4, 209, 78, 80, 19, 9,
-			77, 64, 20, 14, 203, 65, 35, 199, 72, 84, 211, 37, 98, 84, 21, 64, 20, 14, 203, 36, 225, 70, 24, 82, 212, 37, 98, 84, 21, 64,
-			20, 14, 203, 25, 83, 139, 80, 147, 206, 4, 194, 84, 21, 64, 20, 14, 203, 16, 148, 212, 36, 226, 212, 37, 98, 84, 21, 64, 20, 14,
-			203, 16, 84, 212, 73, 82, 212, 37, 98, 84, 21, 64, 20, 13, 138, 4, 195, 184, 4, 2, 9, 4, 5, 18, 9, 20, 10, 199, 53, 84,
-			203, 20, 67, 206, 56, 20, 0, 11, 200, 77, 84, 146, 20, 19, 9, 77, 64, 20, 11, 200, 48, 144, 133, 72, 19, 9, 77, 64, 20, 11,
-			136, 4, 9, 195, 166, 20, 9, 19, 20, 20, 11, 200, 8, 83, 12, 21, 68, 137, 77, 64, 20, 11, 200, 8, 80, 82, 8, 82, 132, 21,
-			32, 67, 9, 198, 76, 176, 66, 20, 195, 206, 20, 9, 198, 52, 146, 210, 60, 99, 206, 20, 15, 204, 5, 85, 5, 57, 66, 70, 36, 49,
-			82, 36, 225, 192, 20, 11, 200, 52, 19, 137, 24, 84, 212, 21, 32, 20, 12, 137, 195, 166, 18, 7, 5, 18, 18, 9, 7, 20, 16, 141,
-			6, 15, 18, 8, 195, 165, 2, 5, 14, 20, 12, 9, 7, 20, 15, 204, 81, 32, 78, 77, 97, 83, 80, 149, 9, 76, 209, 64, 20, 15,
-			204, 25, 83, 132, 4, 209, 78, 80, 19, 9, 76, 209, 64, 20, 9, 198, 81, 83, 133, 76, 145, 78, 20, 9, 198, 5, 52, 217, 72, 145,
-			78, 20, 11, 200, 20, 180, 208, 20, 66, 69, 57, 64, 20, 9, 198, 56, 243, 73, 56, 19, 0, 20, 0, 10, 135, 6, 12, 1, 14, 195,
-			184, 18, 20, 10, 135, 3, 1, 21, 19, 195, 184, 18, 20, 8, 197, 48, 21, 137, 56, 80, 20, 12, 201, 72, 82, 70, 36, 49, 82, 36,
-			225, 192, 20, 12, 201, 64, 20, 143, 16, 145, 82, 36, 225, 192, 20, 12, 201, 52, 18, 211, 36, 209, 82, 36, 225, 192, 20, 12, 201, 17,
-			84, 12, 36, 177, 82, 36, 225, 192, 20, 12, 201, 8, 19, 19, 4, 209, 82, 36, 225, 192, 20, 12, 201, 5, 68, 143, 24, 145, 82, 36,
-			225, 192, 20, 8, 197, 52, 147, 133, 72, 80, 20, 8, 197, 28, 83, 133, 72, 80, 20, 13, 138, 19, 25, 4, 195, 184, 19, 20, 12, 9,
-			7, 20, 12, 201, 77, 84, 208, 20, 228, 207, 72, 145, 64, 20, 12, 201, 44, 243, 147, 37, 53, 15, 72, 145, 64, 20, 8, 197, 76, 241,
-			15, 52, 144, 20, 12, 201, 77, 147, 139, 72, 85, 9, 76, 209, 64, 20, 12, 201, 76, 84, 1, 72, 21, 9, 76, 209, 64, 20, 12, 201,
-			52, 147, 137, 52, 19, 9, 76, 209, 64, 20, 12, 201, 44, 192, 83, 76, 144, 201, 76, 209, 64, 20, 8, 197, 29, 32, 70, 20, 208, 20,
-			0, 9, 198, 17, 80, 84, 48, 85, 0, 20, 9, 198, 44, 194, 69, 57, 65, 76, 20, 9, 198, 44, 194, 69, 57, 65, 76, 20, 14, 139,
-			20, 9, 12, 18, 195, 165, 4, 5, 12, 9, 7, 20, 9, 198, 32, 84, 130, 36, 50, 68, 20, 9, 198, 16, 243, 15, 52, 149, 0, 20,
-			9, 198, 64, 244, 212, 21, 64, 84, 20, 9, 198, 16, 84, 208, 21, 32, 84, 20, 6, 2, 195, 184, 118, 0, 0, 9, 198, 80, 82, 206,
-			60, 227, 205, 20, 9, 198, 44, 20, 131, 36, 227, 205, 20, 10, 199, 88, 149, 137, 76, 82, 197, 72, 20, 10, 199, 64, 84, 150, 21, 37,
-			5, 72, 20, 10, 199, 44, 19, 15, 72, 145, 133, 72, 20, 10, 199, 65, 35, 211, 4, 146, 197, 72, 20, 10, 199, 9, 83, 9, 52, 146,
-			197, 72, 20, 9, 198, 65, 35, 208, 72, 149, 77, 20, 10, 199, 4, 180, 143, 8, 21, 9, 44, 20, 10, 199, 65, 32, 75, 80, 148, 193,
-			8, 20, 0, 12, 137, 20, 18, 9, 11, 9, 14, 195, 184, 19, 20, 11, 200, 53, 150, 15, 52, 21, 15, 76, 80, 20, 11, 200, 77, 147,
-			139, 72, 243, 137, 76, 176, 20, 11, 200, 77, 66, 76, 37, 53, 9, 76, 176, 20, 11, 200, 77, 64, 84, 37, 53, 9, 76, 176, 20, 11,
-			200, 77, 2, 82, 4, 229, 9, 76, 176, 20, 11, 200, 76, 179, 204, 5, 53, 9, 76, 176, 20, 11, 200, 56, 85, 82, 4, 193, 201, 76,
-			176, 20, 11, 200, 44, 21, 1, 49, 149, 9, 76, 176, 20, 11, 200, 24, 20, 195, 37, 53, 9, 76, 176, 20, 11, 200, 16, 144, 83, 80,
-			243, 9, 76, 176, 20, 7, 196, 76, 21, 9, 56, 20, 7, 196, 44, 19, 73, 56, 20, 11, 200, 88, 19, 132, 4, 194, 83, 52, 80, 20,
-			11, 200, 80, 84, 146, 61, 34, 83, 52, 80, 20, 11, 200, 77, 147, 66, 60, 194, 83, 52, 80, 20, 11, 200, 77, 64, 76, 36, 226, 83,
-			52, 80, 20, 11, 200, 76, 240, 201, 4, 194, 83, 52, 80, 20, 11, 200, 64, 192, 84, 60, 226, 83, 52, 80, 20, 11, 200, 52, 243, 135,
-			60, 194, 83, 52, 80, 20, 11, 200, 45, 33, 84, 36, 226, 83, 52, 80, 20, 11, 200, 24, 244, 141, 4, 194, 83, 52, 80, 20, 11, 200,
-			24, 85, 68, 4, 194, 83, 52, 80, 20, 11, 200, 24, 85, 9, 12, 130, 83, 52, 80, 20, 11, 200, 16, 20, 151, 36, 226, 83, 52, 80,
-			20, 11, 200, 9, 37, 84, 4, 194, 83, 52, 80, 20, 11, 200, 4, 36, 213, 72, 66, 83, 52, 80, 20, 0, 12, 201, 16, 84, 141, 5,
-			67, 204, 60, 114, 64, 20, 12, 201, 9, 35, 205, 5, 67, 204, 60, 114, 64, 20, 12, 201, 4, 229, 18, 61, 3, 204, 60, 114, 64, 20,
-			8, 197, 73, 85, 9, 56, 80, 20, 8, 197, 53, 148, 212, 36, 176, 20, 8, 67, 76, 227, 194, 21, 0, 10, 0, 12, 137, 195, 166, 20,
-			9, 15, 12, 15, 7, 9, 20, 9, 198, 85, 35, 204, 60, 114, 64, 20, 13, 202, 32, 84, 141, 20, 225, 85, 80, 146, 197, 72, 20, 9,
-			198, 76, 241, 15, 52, 149, 0, 20, 9, 198, 52, 243, 143, 48, 149, 0, 20, 0, 17, 67, 44, 243, 64, 49, 114, 65, 15, 89, 114, 0,
-			81, 115, 195, 165, 32, 12, 137, 22, 15, 12, 15, 14, 20, 195, 184, 18, 20, 10, 199, 52, 18, 213, 48, 21, 15, 72, 20, 10, 199, 4,
-			195, 9, 28, 21, 15, 72, 20, 10, 199, 24, 147, 138, 85, 53, 5, 72, 20, 14, 203, 72, 81, 201, 60, 224, 76, 37, 53, 9, 76, 176,
-			20, 14, 203, 72, 21, 9, 60, 224, 76, 37, 53, 9, 76, 176, 20, 14, 203, 64, 242, 78, 80, 147, 12, 37, 53, 9, 76, 176, 20, 14,
-			203, 64, 21, 5, 72, 224, 76, 37, 53, 9, 76, 176, 20, 14, 203, 56, 21, 9, 60, 224, 76, 37, 53, 9, 76, 176, 20, 14, 203, 44,
-			19, 142, 36, 32, 76, 37, 53, 9, 76, 176, 20, 14, 203, 65, 35, 212, 20, 181, 9, 60, 226, 83, 52, 80, 20, 14, 203, 64, 84, 134,
-			20, 181, 9, 60, 226, 83, 52, 80, 20, 14, 203, 44, 243, 77, 21, 32, 201, 4, 194, 83, 52, 80, 20, 14, 203, 36, 225, 9, 88, 145,
-			21, 4, 194, 83, 52, 80, 20, 14, 203, 36, 212, 18, 21, 52, 201, 60, 226, 83, 52, 80, 20, 14, 203, 20, 180, 208, 4, 228, 201, 60,
-			226, 83, 52, 80, 20, 10, 199, 28, 83, 65, 48, 147, 132, 20, 20, 10, 67, 76, 243, 64, 89, 114, 65, 0, 72, 21, 4, 95, 54, 88,
-			15, 47, 34, 6, 109, 89, 36, 50, 89, 47, 116, 84, 13, 50, 13, 0, 0, 9, 198, 65, 83, 16, 37, 69, 82, 20, 9, 198, 16, 240,
-			197, 57, 69, 82, 20, 12, 137, 7, 18, 1, 14, 21, 12, 195, 184, 19, 20, 13, 138, 5, 11, 19, 16, 15, 18, 20, 195, 184, 18, 20,
-			13, 138, 4, 9, 19, 16, 1, 3, 8, 195, 184, 18, 20, 11, 200, 89, 83, 11, 4, 227, 204, 60, 112, 20, 11, 200, 28, 84, 143, 57,
-			67, 204, 60, 112, 20, 11, 200, 9, 34, 71, 4, 229, 9, 56, 80, 20, 9, 198, 88, 147, 132, 36, 49, 82, 20, 9, 198, 76, 83, 5,
-			45, 65, 82, 20, 9, 198, 72, 83, 1, 56, 49, 82, 20, 9, 198, 45, 84, 147, 37, 97, 82, 20, 9, 198, 44, 243, 134, 21, 33, 82,
-			20, 9, 198, 16, 82, 204, 5, 33, 82, 20, 9, 198, 12, 83, 5, 9, 33, 82, 20, 11, 200, 80, 16, 200, 37, 53, 9, 76, 176, 20,
-			11, 200, 77, 67, 203, 5, 53, 9, 76, 176, 20, 11, 200, 76, 178, 83, 52, 21, 9, 76, 176, 20, 11, 200, 64, 20, 129, 49, 149, 9,
-			76, 176, 20, 11, 200, 52, 20, 152, 37, 53, 9, 76, 176, 20, 11, 200, 45, 96, 68, 72, 21, 9, 76, 176, 20, 11, 200, 24, 19, 148,
-			5, 53, 9, 76, 176, 20, 12, 137, 4, 195, 166, 13, 15, 14, 9, 19, 11, 20, 11, 200, 16, 17, 1, 37, 53, 9, 76, 176, 20, 11,
-			200, 8, 20, 20, 37, 53, 9, 76, 176, 20, 11, 200, 5, 1, 82, 36, 241, 9, 76, 176, 20, 9, 198, 52, 85, 18, 36, 177, 82, 20,
-			7, 196, 24, 16, 201, 80, 20, 11, 200, 36, 225, 143, 72, 208, 84, 36, 176, 20, 7, 196, 4, 113, 78, 76, 20, 11, 200, 44, 243, 132,
-			60, 193, 78, 12, 80, 20, 7, 196, 48, 81, 193, 80, 20, 7, 196, 48, 242, 193, 48, 20, 0, 13, 138, 19, 11, 1, 14, 4, 1, 12,
-			195, 184, 19, 20, 13, 138, 13, 9, 18, 1, 11, 21, 12, 195, 184, 19, 20, 12, 201, 80, 84, 141, 36, 227, 204, 60, 114, 64, 20, 13,
-			138, 11, 195, 184, 7, 5, 14, 19, 9, 19, 11, 20, 8, 197, 48, 144, 197, 57, 48, 20, 8, 197, 21, 52, 197, 57, 48, 20, 14, 73,
-			8, 80, 67, 33, 99, 204, 48, 86, 64, 21, 0, 10, 0, 10, 67, 36, 177, 83, 35, 57, 49, 89, 0, 15, 140, 20, 18, 1, 14, 19,
-			16, 15, 18, 20, 195, 184, 18, 20, 9, 198, 29, 32, 86, 37, 65, 84, 20, 17, 206, 77, 84, 18, 4, 224, 84, 85, 32, 76, 37, 53,
-			9, 76, 176, 20, 14, 139, 1, 14, 1, 16, 195, 166, 19, 20, 9, 19, 11, 20, 9, 198, 64, 85, 9, 81, 83, 64, 20, 12, 4, 95,
-			2, 1, 18, 10, 71, 6, 112, 13, 0, 0, 19, 67, 16, 83, 64, 72, 6, 109, 65, 15, 72, 36, 34, 0, 81, 100, 101, 114, 32, 19,
-			67, 16, 83, 64, 72, 6, 109, 65, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 12, 201, 88, 20, 133, 16, 82, 204, 5, 33, 82, 20,
-			9, 198, 36, 67, 204, 5, 68, 137, 20, 14, 203, 65, 54, 75, 60, 19, 129, 49, 149, 9, 76, 176, 20, 14, 203, 52, 85, 1, 48, 195,
-			199, 72, 17, 137, 76, 176, 20, 14, 203, 45, 34, 77, 36, 224, 76, 37, 53, 9, 76, 176, 20, 12, 201, 64, 19, 148, 60, 210, 77, 36,
-			177, 82, 20, 10, 199, 64, 244, 212, 49, 81, 9, 20, 20, 6, 195, 16, 83, 64, 72, 0, 13, 138, 16, 18, 195, 166, 6, 5, 11, 20,
-			21, 18, 20, 7, 196, 4, 96, 83, 36, 20, 9, 198, 80, 244, 148, 85, 33, 82, 20, 9, 198, 65, 35, 202, 36, 49, 82, 20, 9, 198,
-			36, 229, 143, 49, 97, 82, 20, 9, 198, 29, 32, 86, 37, 65, 82, 20, 9, 198, 16, 82, 193, 57, 65, 82, 20, 9, 198, 16, 19, 65,
-			76, 49, 82, 20, 7, 196, 32, 19, 73, 80, 20, 9, 198, 4, 209, 82, 36, 176, 78, 20, 9, 198, 52, 84, 137, 16, 144, 78, 21, 5,
-			130, 197, 190, 43, 0, 9, 198, 76, 240, 201, 60, 195, 199, 20, 9, 198, 25, 148, 201, 60, 195, 199, 20, 12, 201, 88, 144, 146, 4, 99,
-			206, 37, 53, 0, 20, 12, 201, 24, 19, 73, 48, 144, 82, 37, 65, 84, 20, 0, 16, 141, 18, 195, 184, 14, 20, 7, 5, 14, 15, 12,
-			15, 7, 9, 20, 9, 198, 80, 244, 130, 37, 53, 0, 20, 9, 198, 32, 244, 142, 37, 53, 0, 20, 9, 198, 45, 96, 76, 37, 65, 84,
-			20, 9, 198, 4, 114, 76, 37, 65, 84, 20, 9, 198, 61, 85, 18, 21, 33, 84, 20, 0, 27, 67, 24, 18, 84, 83, 109, 47, 35, 49,
-			114, 65, 48, 55, 6, 37, 0, 81, 97, 99, 99, 111, 109, 112, 108, 105, 32, 12, 201, 44, 243, 77, 4, 225, 1, 57, 69, 82, 20, 12,
-			137, 16, 18, 195, 166, 16, 1, 18, 5, 18, 20, 10, 199, 88, 149, 1, 48, 148, 205, 20, 20, 10, 199, 36, 65, 65, 48, 148, 205, 20,
-			20, 21, 71, 33, 145, 18, 60, 99, 201, 48, 107, 116, 72, 34, 39, 83, 6, 114, 37, 55, 0, 20, 10, 199, 80, 84, 141, 61, 53, 1,
-			80, 20, 0, 9, 134, 2, 9, 14, 195, 166, 18, 20, 15, 204, 44, 243, 80, 48, 83, 69, 57, 64, 82, 37, 65, 84, 20, 9, 68, 12,
-			128, 82, 80, 21, 0, 10, 0, 8, 197, 17, 32, 71, 60, 224, 20, 12, 201, 84, 213, 83, 36, 176, 76, 37, 65, 84, 20, 12, 201, 61,
-			34, 71, 36, 224, 76, 37, 65, 84, 20, 14, 139, 16, 18, 195, 166, 14, 21, 13, 5, 18, 5, 18, 20, 14, 139, 5, 21, 18, 15, 16,
-			195, 166, 9, 19, 5, 18, 20, 11, 136, 19, 16, 195, 184, 7, 5, 18, 9, 20, 11, 136, 13, 195, 166, 12, 11, 5, 18, 9, 20, 8,
-			197, 64, 84, 134, 36, 64, 20, 8, 197, 52, 244, 130, 36, 64, 20, 8, 197, 48, 146, 214, 36, 64, 20, 8, 197, 44, 20, 130, 36, 64,
-			20, 8, 197, 13, 144, 78, 36, 64, 20, 8, 197, 80, 19, 148, 4, 192, 20, 8, 197, 16, 83, 148, 4, 192, 20, 0, 11, 136, 15, 18,
-			4, 9, 14, 195, 166, 18, 20, 9, 198, 4, 229, 18, 4, 50, 84, 20, 9, 198, 8, 85, 10, 20, 229, 0, 20, 9, 198, 44, 243, 147,
-			20, 228, 192, 20, 13, 138, 9, 14, 1, 4, 195, 166, 11, 22, 1, 20, 20, 9, 134, 6, 195, 166, 11, 1, 12, 20, 0, 10, 199, 28,
-			20, 142, 37, 69, 82, 20, 20, 12, 137, 22, 9, 19, 9, 15, 14, 195, 166, 18, 20, 12, 137, 9, 13, 1, 7, 9, 14, 195, 166, 18,
-			20, 12, 137, 1, 18, 2, 9, 20, 18, 195, 166, 18, 20, 10, 199, 44, 243, 148, 85, 33, 82, 20, 20, 10, 199, 28, 243, 132, 60, 194,
-			69, 72, 20, 10, 199, 76, 177, 80, 80, 146, 197, 72, 20, 10, 199, 64, 243, 5, 52, 146, 197, 72, 20, 10, 199, 28, 83, 133, 80, 146,
-			197, 72, 20, 10, 199, 24, 243, 133, 80, 146, 197, 72, 20, 10, 199, 24, 19, 129, 80, 146, 197, 72, 20, 9, 198, 4, 211, 79, 56, 149,
-			77, 20, 10, 199, 76, 20, 132, 36, 226, 69, 56, 20, 9, 198, 20, 193, 71, 4, 224, 197, 20, 0, 7, 196, 52, 245, 15, 72, 20, 13,
-			138, 22, 5, 20, 5, 18, 9, 14, 195, 166, 18, 20, 9, 134, 22, 5, 12, 195, 166, 18, 20, 9, 134, 19, 1, 12, 195, 166, 18, 20,
-			13, 138, 4, 15, 11, 20, 18, 9, 14, 195, 166, 18, 20, 11, 200, 88, 83, 133, 72, 21, 9, 60, 224, 20, 11, 200, 76, 147, 85, 48,
-			21, 9, 60, 224, 20, 11, 200, 72, 84, 21, 80, 21, 9, 60, 224, 20, 11, 200, 72, 83, 143, 88, 21, 9, 60, 224, 20, 11, 200, 72,
-			83, 5, 28, 21, 9, 60, 224, 20, 11, 200, 65, 35, 212, 20, 181, 9, 60, 224, 20, 11, 200, 65, 35, 196, 84, 181, 9, 60, 224, 20,
-			11, 200, 64, 244, 21, 48, 21, 9, 60, 224, 20, 11, 200, 61, 4, 15, 76, 149, 9, 60, 224, 20, 11, 200, 36, 229, 137, 80, 21, 9,
-			60, 224, 20, 11, 200, 36, 228, 208, 20, 181, 9, 60, 224, 20, 11, 200, 36, 226, 9, 8, 149, 9, 60, 224, 20, 11, 200, 36, 224, 201,
-			80, 21, 9, 60, 224, 20, 11, 200, 28, 192, 67, 36, 21, 9, 60, 224, 20, 11, 200, 20, 209, 78, 16, 21, 9, 60, 224, 20, 11, 200,
-			16, 83, 5, 28, 21, 9, 60, 224, 20, 11, 200, 4, 211, 85, 56, 149, 9, 60, 224, 20, 12, 137, 8, 5, 2, 18, 195, 166, 9, 19,
-			11, 20, 9, 198, 21, 84, 129, 76, 145, 78, 20, 7, 196, 4, 113, 78, 80, 20, 11, 200, 32, 244, 137, 76, 243, 148, 4, 192, 20, 7,
-			196, 4, 147, 65, 8, 20, 0, 15, 69, 76, 18, 71, 60, 224, 89, 35, 57, 81, 108, 20, 50, 0, 14, 139, 18, 5, 1, 11, 20, 9,
-			15, 14, 195, 166, 18, 20, 8, 197, 21, 2, 71, 60, 224, 20, 8, 197, 72, 21, 9, 60, 224, 20, 12, 201, 44, 194, 77, 4, 181, 5,
-			72, 145, 76, 20, 13, 138, 195, 184, 11, 15, 12, 15, 7, 9, 19, 11, 20, 8, 197, 33, 144, 146, 36, 64, 20, 16, 69, 29, 32, 84,
-			36, 224, 81, 34, 112, 47, 6, 109, 68, 0, 20, 8, 197, 24, 84, 148, 36, 192, 20, 12, 201, 72, 83, 73, 56, 148, 195, 20, 228, 192,
-			20, 12, 201, 49, 83, 73, 56, 84, 195, 20, 228, 192, 20, 12, 201, 24, 197, 79, 72, 84, 195, 20, 228, 192, 20, 8, 197, 85, 33, 84,
-			4, 224, 21, 8, 197, 88, 19, 132, 4, 192, 20, 8, 197, 76, 19, 132, 4, 192, 20, 0, 11, 136, 20, 9, 20, 21, 12, 195, 166, 18,
-			20, 11, 136, 16, 15, 16, 21, 12, 195, 166, 18, 20, 11, 136, 13, 15, 14, 5, 20, 195, 166, 18, 20, 11, 136, 13, 15, 4, 21, 12,
-			195, 166, 18, 20, 11, 136, 9, 14, 19, 21, 12, 195, 166, 18, 20, 14, 139, 11, 1, 14, 1, 1, 14, 195, 166, 9, 19, 11, 20, 14,
-			139, 11, 1, 14, 1, 1, 14, 195, 166, 9, 19, 11, 20, 13, 202, 44, 148, 143, 65, 32, 75, 80, 146, 197, 72, 20, 0, 25, 73, 77,
-			21, 65, 72, 81, 1, 56, 49, 78, 89, 49, 58, 6, 36, 13, 72, 35, 12, 50, 89, 14, 50, 0, 10, 199, 44, 19, 142, 20, 197, 82,
-			20, 20, 10, 199, 28, 83, 133, 72, 21, 15, 72, 20, 12, 137, 19, 5, 11, 18, 5, 20, 195, 166, 18, 20, 12, 137, 13, 21, 19, 11,
-			21, 12, 195, 166, 18, 20, 10, 199, 44, 243, 139, 84, 34, 78, 20, 20, 14, 203, 76, 147, 80, 48, 145, 137, 44, 21, 9, 60, 224, 20,
-			14, 203, 72, 82, 207, 53, 1, 78, 76, 21, 9, 60, 224, 20, 14, 203, 72, 82, 207, 52, 208, 78, 16, 21, 9, 60, 224, 20, 14, 203,
-			72, 82, 193, 64, 149, 21, 48, 21, 9, 60, 224, 20, 14, 203, 36, 229, 5, 73, 4, 133, 80, 21, 9, 60, 224, 20, 14, 203, 20, 180,
-			212, 72, 20, 15, 76, 149, 9, 60, 224, 20, 10, 199, 81, 83, 142, 20, 193, 82, 20, 20, 10, 199, 4, 178, 207, 72, 65, 82, 20, 20,
-			11, 136, 195, 166, 20, 5, 18, 9, 19, 11, 20, 15, 140, 16, 1, 12, 195, 166, 15, 12, 9, 20, 9, 19, 11, 20, 15, 140, 13, 1,
-			10, 5, 19, 20, 195, 166, 20, 9, 19, 11, 20, 9, 198, 88, 19, 129, 16, 149, 77, 20, 9, 198, 56, 240, 133, 48, 149, 77, 20, 10,
-			199, 4, 209, 133, 80, 19, 73, 56, 20, 9, 134, 1, 14, 195, 166, 13, 9, 20, 14, 203, 81, 32, 78, 76, 49, 78, 16, 83, 148, 4,
-			192, 20, 0, 13, 138, 16, 1, 18, 1, 19, 9, 20, 195, 166, 18, 20, 13, 138, 8, 21, 13, 1, 14, 9, 20, 195, 166, 18, 20, 13,
-			138, 8, 5, 18, 5, 4, 9, 20, 195, 166, 18, 20, 13, 138, 2, 9, 14, 15, 11, 21, 12, 195, 166, 18, 20, 13, 138, 1, 21, 20,
-			15, 18, 9, 20, 195, 166, 18, 20, 11, 200, 72, 82, 210, 20, 21, 9, 60, 224, 20, 11, 200, 52, 245, 9, 88, 21, 9, 60, 224, 20,
-			11, 200, 44, 244, 21, 48, 21, 9, 60, 224, 20, 11, 200, 36, 226, 84, 36, 21, 9, 60, 224, 20, 11, 200, 16, 83, 143, 80, 21, 9,
-			60, 224, 20, 11, 200, 16, 81, 137, 56, 149, 9, 60, 224, 20, 11, 200, 5, 4, 15, 76, 149, 9, 60, 224, 20, 11, 200, 4, 197, 5,
-			72, 21, 9, 60, 224, 20, 12, 137, 16, 18, 195, 184, 10, 19, 9, 19, 11, 20, 11, 200, 64, 243, 25, 85, 33, 84, 4, 224, 21, 0,
-			14, 139, 16, 1, 18, 20, 9, 11, 21, 12, 195, 166, 18, 20, 14, 139, 13, 9, 12, 12, 9, 1, 18, 4, 195, 166, 18, 20, 14, 139,
-			13, 1, 20, 18, 9, 11, 21, 12, 195, 166, 18, 20, 8, 197, 80, 16, 140, 21, 64, 20, 8, 197, 45, 80, 137, 77, 64, 20, 8, 197,
-			52, 81, 9, 21, 32, 20, 8, 197, 80, 17, 198, 5, 64, 20, 8, 197, 65, 83, 19, 5, 32, 20, 0, 15, 140, 21, 14, 9, 22, 5,
-			18, 19, 9, 20, 195, 166, 18, 20, 15, 140, 19, 16, 5, 11, 20, 1, 11, 21, 12, 195, 166, 18, 20, 12, 201, 88, 242, 193, 9, 83,
-			1, 72, 149, 77, 20, 9, 198, 64, 20, 9, 76, 209, 64, 20, 9, 198, 8, 147, 9, 76, 209, 64, 20, 12, 201, 12, 192, 73, 73, 99,
-			217, 4, 224, 197, 20, 9, 198, 12, 244, 147, 4, 113, 64, 20, 0, 13, 138, 16, 18, 195, 166, 19, 9, 4, 9, 21, 13, 20, 12, 71,
-			64, 83, 148, 32, 245, 83, 20, 21, 0, 10, 0, 11, 200, 52, 147, 9, 80, 20, 137, 77, 64, 20, 11, 200, 52, 19, 137, 13, 84, 137,
-			77, 64, 20, 11, 200, 88, 148, 203, 61, 50, 84, 21, 64, 20, 11, 200, 77, 69, 80, 36, 66, 84, 21, 64, 20, 11, 200, 77, 65, 82,
-			36, 194, 84, 21, 64, 20, 11, 200, 77, 64, 66, 36, 194, 84, 21, 64, 20, 11, 200, 76, 84, 150, 36, 194, 84, 21, 64, 20, 11, 200,
-			45, 84, 137, 61, 50, 84, 21, 64, 20, 11, 200, 36, 229, 5, 57, 50, 84, 21, 64, 20, 11, 200, 16, 149, 133, 73, 50, 84, 21, 64,
-			20, 11, 200, 5, 67, 206, 4, 194, 84, 21, 64, 20, 11, 200, 4, 211, 210, 4, 194, 84, 21, 64, 20, 9, 198, 80, 19, 9, 76, 208,
-			78, 21, 11, 200, 72, 81, 201, 77, 68, 129, 57, 64, 20, 0, 23, 73, 77, 21, 65, 72, 81, 1, 56, 49, 64, 89, 49, 58, 6, 36,
-			13, 72, 35, 12, 50, 89, 0, 16, 69, 16, 148, 208, 85, 64, 72, 37, 89, 71, 6, 116, 47, 0, 20, 8, 197, 61, 32, 84, 61, 32,
-			20, 8, 197, 88, 147, 204, 21, 64, 20, 12, 201, 4, 178, 207, 53, 0, 71, 56, 84, 128, 20, 12, 201, 84, 226, 70, 61, 35, 73, 76,
-			209, 64, 20, 12, 201, 77, 84, 146, 20, 19, 9, 76, 209, 64, 20, 12, 201, 72, 17, 9, 44, 19, 9, 76, 209, 64, 20, 12, 201, 65,
-			32, 71, 52, 21, 9, 76, 209, 64, 20, 12, 201, 48, 144, 133, 72, 19, 9, 76, 209, 64, 20, 8, 197, 65, 35, 194, 5, 64, 20, 0,
-			9, 198, 65, 35, 208, 72, 145, 64, 20, 9, 198, 36, 225, 197, 56, 145, 64, 20, 9, 198, 76, 17, 9, 76, 209, 64, 20, 9, 198, 32,
-			243, 9, 76, 209, 64, 20, 9, 198, 5, 65, 73, 76, 209, 64, 20, 9, 198, 88, 18, 193, 56, 49, 64, 20, 9, 198, 64, 21, 18, 36,
-			49, 64, 20, 9, 198, 44, 17, 5, 56, 49, 64, 20, 9, 198, 4, 227, 143, 56, 49, 64, 20, 0, 14, 139, 6, 12, 195, 184, 10, 20,
-			5, 14, 9, 19, 20, 20, 14, 203, 72, 85, 133, 73, 50, 66, 36, 194, 84, 21, 64, 20, 14, 203, 65, 35, 198, 37, 64, 66, 36, 194,
-			84, 21, 64, 20, 14, 203, 44, 243, 80, 5, 66, 66, 36, 194, 84, 21, 64, 20, 14, 203, 37, 36, 129, 80, 147, 206, 4, 194, 84, 21,
-			64, 20, 14, 203, 4, 48, 197, 65, 64, 66, 36, 194, 84, 21, 64, 20, 0, 11, 200, 64, 84, 134, 61, 32, 84, 61, 32, 20, 11, 200,
-			60, 36, 197, 73, 96, 84, 61, 32, 20, 11, 200, 44, 243, 77, 85, 64, 84, 61, 32, 20, 11, 200, 44, 19, 11, 84, 192, 84, 61, 32,
-			20, 11, 200, 36, 225, 143, 72, 208, 84, 61, 32, 20, 11, 200, 17, 84, 12, 36, 176, 84, 61, 32, 20, 11, 200, 16, 85, 1, 36, 195,
-			9, 77, 64, 20, 11, 200, 16, 148, 212, 72, 144, 149, 21, 32, 20, 12, 137, 13, 1, 14, 195, 169, 18, 12, 9, 7, 20, 15, 204, 76,
-			83, 148, 36, 209, 78, 80, 19, 9, 76, 209, 64, 20, 9, 198, 60, 49, 65, 56, 145, 78, 20, 13, 138, 11, 195, 184, 2, 5, 14, 8,
-			1, 22, 14, 20, 7, 196, 5, 66, 5, 56, 20, 11, 200, 77, 81, 134, 36, 50, 69, 57, 64, 20, 11, 200, 44, 243, 139, 84, 34, 78,
-			5, 64, 20, 11, 200, 44, 243, 131, 20, 229, 18, 5, 64, 20, 11, 200, 4, 113, 204, 60, 209, 82, 5, 64, 20, 7, 196, 16, 82, 193,
-			56, 21, 9, 198, 52, 147, 137, 52, 19, 0, 20, 9, 198, 16, 145, 201, 80, 19, 0, 20, 0, 8, 197, 80, 83, 204, 60, 112, 20, 8,
-			197, 8, 147, 204, 60, 112, 20, 8, 197, 24, 147, 5, 72, 80, 20, 8, 197, 16, 244, 197, 72, 80, 20, 8, 197, 28, 83, 133, 76, 80,
-			20, 12, 201, 44, 194, 77, 4, 181, 5, 72, 145, 64, 20, 12, 201, 76, 83, 147, 84, 19, 9, 76, 209, 64, 20, 12, 201, 52, 243, 143,
-			64, 243, 9, 76, 209, 64, 20, 12, 201, 24, 81, 5, 72, 19, 9, 76, 209, 64, 20, 12, 201, 44, 243, 12, 20, 181, 18, 36, 49, 64,
-			20, 0, 9, 198, 84, 99, 204, 60, 114, 64, 20, 9, 198, 61, 67, 204, 60, 114, 64, 20, 9, 198, 21, 67, 204, 60, 114, 64, 20, 9,
-			198, 5, 3, 204, 60, 114, 64, 20, 13, 138, 8, 195, 184, 14, 19, 5, 18, 9, 19, 20, 20, 17, 206, 16, 145, 134, 21, 33, 78, 80,
-			144, 66, 36, 194, 84, 21, 64, 20, 14, 139, 15, 16, 20, 195, 166, 14, 11, 5, 12, 9, 7, 20, 9, 198, 21, 2, 68, 20, 210, 64,
-			20, 9, 198, 17, 84, 12, 36, 176, 84, 20, 9, 198, 13, 146, 204, 4, 208, 84, 20, 0, 9, 198, 32, 244, 148, 60, 227, 205, 20, 10,
-			199, 8, 150, 129, 73, 33, 82, 36, 20, 11, 136, 1, 14, 195, 166, 13, 9, 19, 11, 20, 10, 199, 16, 148, 195, 37, 3, 9, 56, 20,
-			9, 198, 16, 146, 207, 80, 243, 73, 20, 10, 199, 29, 147, 78, 5, 53, 9, 44, 20, 11, 67, 76, 149, 0, 89, 6, 37, 47, 0, 72,
-			0, 11, 200, 20, 208, 143, 84, 50, 21, 72, 80, 20, 11, 200, 5, 52, 217, 72, 147, 204, 60, 112, 20, 9, 198, 76, 245, 83, 4, 99,
-			206, 20, 11, 200, 29, 34, 77, 5, 52, 197, 72, 80, 20, 11, 200, 88, 148, 143, 48, 241, 201, 76, 176, 20, 11, 200, 80, 83, 5, 24,
-			243, 137, 76, 176, 20, 11, 200, 73, 83, 143, 48, 241, 201, 76, 176, 20, 11, 200, 53, 146, 207, 48, 241, 201, 76, 176, 20, 11, 200, 44,
-			20, 22, 21, 33, 9, 76, 176, 20, 11, 200, 36, 65, 79, 48, 241, 201, 76, 176, 20, 11, 200, 24, 147, 15, 48, 241, 201, 76, 176, 20,
-			11, 200, 16, 83, 65, 28, 241, 201, 76, 176, 20, 12, 137, 3, 195, 166, 19, 1, 18, 9, 19, 11, 20, 12, 137, 1, 18, 1, 13, 195,
-			166, 9, 19, 11, 20, 11, 200, 28, 20, 212, 72, 243, 143, 52, 144, 20, 15, 204, 81, 32, 68, 37, 66, 79, 56, 19, 9, 76, 209, 64,
-			20, 15, 204, 32, 84, 141, 4, 100, 143, 16, 149, 9, 76, 209, 64, 20, 9, 198, 45, 35, 193, 80, 145, 78, 20, 7, 196, 72, 243, 65,
-			56, 21, 0, 12, 201, 45, 34, 77, 36, 227, 204, 60, 114, 64, 20, 12, 201, 44, 194, 77, 5, 67, 204, 60, 114, 64, 20, 12, 201, 32,
-			84, 144, 21, 67, 204, 60, 114, 64, 20, 8, 197, 72, 21, 137, 56, 80, 20, 17, 142, 16, 21, 4, 19, 5, 12, 195, 184, 10, 5, 18,
-			12, 9, 7, 20, 13, 138, 6, 15, 18, 6, 195, 184, 18, 9, 19, 11, 20, 12, 201, 32, 84, 141, 4, 100, 143, 16, 149, 0, 20, 8,
-			197, 28, 84, 212, 36, 176, 20, 12, 201, 72, 81, 140, 20, 181, 5, 72, 85, 0, 20, 0, 14, 139, 1, 14, 195, 166, 19, 20, 5, 20,
-			9, 19, 11, 20, 12, 201, 77, 84, 208, 20, 228, 207, 72, 149, 77, 20, 12, 201, 44, 243, 147, 37, 53, 15, 72, 149, 77, 20, 9, 198,
-			4, 224, 84, 60, 210, 64, 20, 0, 6, 195, 4, 181, 84, 20, 10, 199, 36, 212, 5, 72, 21, 15, 72, 20, 10, 199, 20, 213, 76, 28,
-			21, 15, 72, 20, 9, 198, 56, 244, 212, 4, 193, 201, 20, 10, 199, 64, 243, 25, 4, 225, 18, 36, 20, 15, 140, 19, 25, 14, 195, 166,
-			19, 20, 5, 20, 9, 19, 11, 20, 15, 140, 11, 9, 14, 195, 166, 19, 20, 5, 20, 9, 19, 11, 20, 14, 203, 33, 83, 65, 56, 34,
-			79, 48, 241, 201, 76, 176, 20, 10, 199, 44, 243, 12, 20, 114, 65, 56, 20, 0, 11, 200, 60, 101, 1, 48, 211, 204, 60, 112, 20, 9,
-			198, 64, 150, 154, 36, 177, 82, 20, 9, 198, 36, 228, 208, 36, 49, 82, 20, 9, 198, 20, 180, 197, 72, 49, 82, 20, 9, 198, 17, 84,
-			12, 36, 49, 82, 20, 11, 200, 8, 20, 212, 5, 33, 5, 72, 80, 20, 16, 141, 195, 166, 7, 25, 16, 20, 15, 12, 15, 7, 9, 19,
-			11, 20, 11, 200, 77, 68, 129, 80, 81, 201, 76, 176, 20, 11, 200, 28, 83, 137, 80, 149, 137, 76, 176, 20, 11, 200, 17, 148, 204, 20,
-			181, 9, 76, 176, 20, 11, 200, 32, 85, 5, 72, 243, 143, 52, 144, 20, 7, 196, 88, 242, 193, 48, 20, 7, 196, 64, 242, 193, 48, 20,
-			7, 196, 24, 242, 193, 48, 20, 11, 200, 64, 192, 84, 52, 83, 129, 28, 80, 20, 0, 15, 5, 23, 3, 39, 5, 20, 84, 6, 36, 89,
-			36, 13, 72, 0, 12, 201, 89, 83, 11, 4, 227, 204, 60, 114, 64, 20, 12, 201, 28, 84, 143, 57, 67, 204, 60, 114, 64, 20, 9, 198,
-			72, 17, 9, 60, 195, 199, 20, 9, 198, 24, 147, 13, 60, 195, 199, 20, 13, 138, 1, 20, 8, 5, 14, 195, 166, 9, 19, 11, 20, 12,
-			201, 24, 20, 200, 36, 243, 133, 72, 85, 0, 20, 0, 10, 135, 195, 184, 11, 15, 12, 15, 7, 20, 9, 198, 76, 192, 86, 37, 53, 0,
-			20, 9, 198, 16, 144, 71, 72, 19, 64, 20, 12, 137, 16, 18, 195, 166, 13, 9, 5, 18, 5, 20, 9, 198, 65, 35, 194, 48, 83, 64,
-			20, 9, 198, 52, 18, 211, 36, 208, 76, 20, 0, 14, 5, 23, 3, 39, 5, 18, 84, 6, 36, 89, 36, 114, 0, 24, 73, 77, 21, 65,
-			72, 81, 1, 56, 49, 82, 89, 49, 58, 6, 36, 13, 72, 35, 12, 50, 89, 114, 0, 10, 199, 80, 83, 5, 60, 195, 199, 36, 20, 10,
-			199, 80, 82, 206, 60, 195, 199, 36, 20, 10, 199, 56, 85, 82, 60, 195, 199, 36, 20, 10, 199, 52, 244, 134, 60, 195, 199, 36, 20, 10,
-			199, 52, 85, 18, 60, 195, 199, 36, 20, 10, 199, 32, 20, 12, 60, 195, 199, 36, 20, 15, 140, 1, 18, 11, 195, 166, 15, 12, 15, 7,
-			9, 19, 11, 20, 12, 201, 20, 193, 75, 81, 35, 206, 36, 177, 82, 20, 12, 201, 65, 33, 83, 9, 149, 5, 72, 144, 78, 20, 7, 2,
-			95, 5, 36, 12, 0, 0, 7, 196, 48, 19, 69, 48, 20, 9, 198, 72, 82, 70, 36, 49, 82, 20, 9, 198, 52, 18, 211, 36, 209, 82,
-			20, 9, 198, 17, 84, 12, 36, 177, 82, 20, 9, 198, 5, 68, 143, 24, 145, 82, 20, 9, 198, 21, 35, 212, 36, 177, 82, 20, 7, 196,
-			64, 85, 9, 80, 20, 7, 196, 5, 81, 9, 80, 20, 7, 196, 28, 83, 65, 48, 20, 0, 9, 198, 28, 83, 77, 60, 195, 199, 20, 11,
-			136, 19, 195, 166, 20, 20, 5, 18, 9, 20, 11, 136, 14, 195, 165, 4, 12, 5, 18, 9, 20, 0, 13, 202, 44, 20, 129, 45, 65, 82,
-			60, 195, 199, 36, 20, 12, 137, 19, 11, 195, 166, 14, 4, 5, 18, 9, 20, 12, 137, 2, 18, 195, 166, 14, 4, 5, 18, 9, 20, 7,
-			2, 95, 9, 37, 12, 0, 0, 12, 201, 77, 148, 212, 20, 208, 84, 36, 177, 82, 20, 12, 201, 57, 83, 73, 76, 208, 84, 36, 177, 82,
-			20, 12, 201, 44, 148, 143, 52, 19, 148, 36, 177, 82, 20, 12, 201, 44, 20, 137, 76, 208, 84, 36, 177, 82, 20, 12, 201, 5, 53, 9,
-			28, 208, 84, 36, 177, 82, 20, 10, 199, 77, 64, 76, 4, 181, 9, 80, 20, 10, 199, 44, 243, 12, 20, 114, 65, 48, 20, 0, 13, 138,
-			4, 195, 166, 13, 15, 14, 9, 19, 5, 18, 20, 11, 200, 77, 81, 134, 36, 50, 69, 57, 48, 20, 0, 14, 139, 195, 184, 11, 15, 14,
-			15, 13, 9, 19, 5, 18, 20, 7, 196, 4, 113, 82, 20, 20, 17, 70, 24, 243, 132, 4, 229, 0, 83, 114, 68, 72, 6, 112, 68, 0,
-			20, 9, 198, 72, 80, 76, 37, 48, 66, 20, 9, 68, 81, 83, 133, 72, 21, 0, 10, 0, 9, 198, 77, 64, 84, 84, 84, 133, 20, 9,
-			198, 44, 19, 143, 56, 84, 133, 20, 9, 198, 17, 81, 76, 48, 84, 133, 20, 8, 197, 76, 244, 132, 36, 224, 20, 8, 197, 64, 82, 212,
-			36, 224, 20, 13, 202, 24, 244, 130, 73, 81, 197, 72, 148, 205, 20, 20, 8, 197, 65, 35, 208, 4, 224, 21, 0, 9, 198, 80, 245, 67,
-			32, 84, 128, 20, 9, 198, 76, 147, 85, 48, 84, 128, 20, 9, 198, 72, 83, 5, 28, 84, 128, 20, 9, 198, 72, 81, 133, 72, 84, 128,
-			20, 9, 198, 72, 81, 9, 28, 84, 128, 20, 9, 198, 61, 5, 9, 52, 84, 128, 20, 9, 198, 36, 229, 137, 80, 84, 128, 20, 9, 198,
-			36, 224, 201, 80, 84, 128, 20, 9, 198, 32, 243, 143, 72, 84, 128, 20, 9, 198, 32, 21, 129, 72, 84, 128, 20, 9, 198, 29, 32, 83,
-			76, 84, 128, 20, 9, 198, 16, 85, 143, 88, 84, 128, 20, 9, 198, 16, 83, 5, 28, 84, 128, 20, 9, 198, 16, 80, 201, 52, 84, 128,
-			20, 9, 198, 12, 128, 82, 28, 84, 128, 20, 9, 198, 12, 128, 78, 28, 84, 128, 20, 9, 198, 9, 32, 73, 76, 84, 128, 20, 9, 198,
-			4, 197, 5, 72, 84, 128, 20, 9, 198, 4, 69, 137, 76, 84, 128, 20, 9, 198, 48, 19, 73, 56, 20, 128, 20, 0, 6, 195, 85, 48,
-			64, 17, 10, 199, 72, 85, 143, 49, 65, 82, 20, 20, 10, 199, 24, 244, 141, 5, 65, 82, 20, 20, 10, 199, 60, 36, 212, 21, 68, 137,
-			44, 20, 12, 201, 36, 225, 9, 24, 97, 82, 20, 229, 0, 20, 0, 11, 200, 77, 80, 150, 20, 229, 9, 60, 224, 20, 11, 200, 65, 35,
-			208, 61, 37, 9, 60, 224, 20, 7, 196, 88, 243, 69, 72, 20, 12, 201, 16, 147, 69, 57, 50, 79, 56, 84, 133, 20, 11, 200, 24, 20,
-			195, 37, 53, 15, 36, 64, 20, 11, 200, 8, 83, 133, 16, 146, 212, 36, 224, 20, 9, 198, 17, 80, 140, 4, 229, 0, 20, 0, 12, 201,
-			81, 32, 78, 76, 69, 75, 80, 244, 128, 20, 12, 201, 72, 85, 137, 80, 19, 9, 76, 84, 128, 20, 12, 201, 52, 243, 143, 64, 243, 9,
-			76, 84, 128, 20, 12, 201, 32, 82, 212, 60, 116, 129, 24, 84, 128, 20, 12, 201, 16, 83, 73, 77, 50, 79, 56, 84, 128, 20, 12, 201,
-			5, 85, 15, 52, 21, 9, 76, 84, 128, 20, 8, 197, 64, 148, 212, 60, 192, 20, 11, 136, 21, 18, 195, 166, 13, 9, 19, 11, 20, 8,
-			197, 88, 147, 204, 36, 224, 20, 8, 197, 8, 133, 84, 4, 224, 20, 8, 197, 8, 133, 84, 4, 224, 21, 8, 197, 72, 149, 21, 4, 192,
-			20, 0, 11, 200, 21, 2, 68, 36, 20, 203, 61, 0, 20, 9, 198, 52, 21, 1, 16, 244, 128, 20, 9, 198, 45, 84, 129, 80, 244, 128,
-			20, 9, 198, 81, 32, 83, 76, 84, 128, 20, 9, 198, 77, 84, 16, 48, 84, 128, 20, 9, 198, 72, 81, 21, 12, 84, 128, 20, 9, 198,
-			53, 83, 11, 80, 84, 128, 20, 9, 198, 36, 226, 137, 12, 84, 128, 20, 9, 198, 36, 226, 9, 8, 84, 128, 20, 9, 198, 36, 225, 140,
-			84, 84, 128, 20, 9, 198, 36, 225, 137, 12, 84, 128, 20, 9, 198, 36, 115, 143, 72, 84, 128, 20, 9, 198, 16, 84, 137, 88, 84, 128,
-			20, 9, 198, 16, 81, 137, 56, 84, 128, 20, 9, 198, 16, 81, 21, 12, 84, 128, 20, 9, 198, 16, 81, 9, 44, 84, 128, 20, 9, 198,
-			16, 81, 9, 12, 84, 128, 20, 9, 198, 4, 97, 137, 12, 84, 128, 20, 9, 198, 4, 69, 143, 44, 84, 128, 20, 9, 198, 8, 145, 137,
-			48, 20, 128, 20, 11, 70, 76, 48, 78, 56, 84, 128, 21, 0, 10, 0, 10, 199, 52, 18, 213, 48, 21, 21, 72, 20, 10, 199, 64, 192,
-			71, 36, 21, 15, 72, 20, 10, 199, 16, 84, 133, 29, 83, 5, 72, 20, 0, 11, 200, 72, 81, 146, 4, 181, 9, 60, 224, 20, 11, 200,
-			44, 243, 150, 20, 229, 9, 60, 224, 20, 11, 200, 36, 228, 197, 45, 66, 67, 36, 64, 20, 11, 200, 8, 18, 212, 21, 34, 67, 36, 64,
-			20, 11, 200, 29, 80, 84, 20, 208, 76, 4, 224, 20, 11, 200, 76, 82, 83, 52, 241, 210, 4, 96, 20, 11, 200, 60, 49, 65, 56, 241,
-			210, 4, 96, 20, 11, 200, 44, 20, 132, 36, 241, 210, 4, 96, 20, 11, 200, 8, 144, 140, 36, 241, 210, 4, 96, 20, 0, 8, 197, 76,
-			82, 212, 61, 32, 20, 12, 201, 80, 245, 1, 48, 148, 193, 80, 244, 128, 20, 12, 201, 72, 84, 212, 5, 84, 129, 80, 244, 128, 20, 12,
-			201, 44, 243, 15, 56, 148, 193, 80, 244, 128, 20, 12, 201, 44, 21, 1, 49, 148, 193, 80, 244, 128, 20, 12, 201, 81, 34, 86, 36, 19,
-			9, 76, 84, 128, 20, 12, 201, 81, 32, 85, 52, 21, 9, 76, 84, 128, 20, 12, 201, 77, 66, 71, 52, 21, 9, 76, 84, 128, 20, 12,
-			201, 76, 82, 211, 84, 19, 9, 76, 84, 128, 20, 12, 201, 56, 243, 73, 56, 19, 9, 76, 84, 128, 20, 12, 201, 53, 84, 201, 44, 19,
-			9, 76, 84, 128, 20, 12, 201, 48, 144, 133, 72, 19, 9, 76, 84, 128, 20, 12, 201, 40, 245, 82, 56, 19, 9, 76, 84, 128, 20, 12,
-			201, 36, 211, 79, 8, 147, 9, 76, 84, 128, 20, 12, 201, 32, 245, 141, 21, 53, 5, 72, 84, 128, 20, 12, 201, 32, 243, 79, 48, 241,
-			201, 76, 84, 128, 20, 12, 201, 8, 84, 212, 36, 19, 9, 76, 84, 128, 20, 8, 197, 4, 195, 9, 21, 32, 20, 12, 201, 8, 244, 148,
-			4, 67, 208, 80, 84, 128, 20, 9, 198, 44, 195, 214, 56, 84, 137, 20, 12, 201, 29, 32, 77, 52, 21, 9, 44, 84, 128, 20, 12, 201,
-			24, 193, 71, 52, 21, 9, 44, 84, 128, 20, 12, 201, 16, 21, 1, 52, 21, 9, 44, 84, 128, 20, 8, 197, 25, 33, 71, 5, 64, 20,
-			0, 9, 198, 33, 148, 14, 61, 49, 64, 20, 15, 140, 16, 18, 195, 166, 16, 1, 18, 1, 20, 9, 15, 14, 20, 9, 198, 24, 147, 133,
-			77, 49, 64, 20, 9, 198, 4, 35, 206, 56, 83, 148, 20, 9, 198, 17, 80, 140, 20, 19, 148, 20, 0, 10, 199, 24, 244, 141, 21, 34,
-			78, 28, 20, 6, 195, 80, 147, 0, 76, 6, 195, 88, 83, 0, 76, 0, 11, 136, 7, 18, 195, 166, 3, 9, 19, 20, 20, 17, 142, 16,
-			18, 195, 166, 14, 21, 13, 5, 18, 1, 20, 9, 15, 14, 20, 11, 200, 24, 19, 19, 36, 98, 75, 5, 64, 20, 0, 8, 197, 16, 85,
-			137, 21, 32, 20, 9, 198, 76, 225, 68, 44, 84, 137, 20, 12, 201, 4, 68, 203, 36, 195, 5, 48, 145, 192, 20, 12, 201, 76, 82, 211,
-			84, 19, 9, 76, 209, 64, 20, 9, 198, 29, 33, 86, 36, 225, 5, 20, 12, 201, 61, 48, 201, 48, 195, 199, 72, 17, 128, 20, 12, 201,
-			20, 229, 18, 21, 4, 133, 56, 19, 148, 20, 6, 195, 88, 81, 0, 76, 0, 10, 66, 92, 48, 84, 6, 36, 89, 36, 0, 9, 198, 56,
-			243, 73, 56, 83, 0, 20, 9, 198, 64, 20, 129, 76, 243, 0, 20, 9, 198, 72, 147, 69, 77, 49, 64, 20, 14, 139, 6, 1, 18, 9,
-			19, 195, 166, 9, 19, 13, 5, 20, 9, 198, 36, 224, 201, 16, 83, 148, 20, 9, 198, 29, 32, 68, 36, 83, 148, 20, 9, 198, 16, 242,
-			213, 52, 83, 148, 20, 9, 198, 48, 144, 133, 72, 19, 0, 20, 9, 198, 28, 192, 67, 36, 19, 0, 20, 0, 0, 11, 200, 44, 243, 80,
-			36, 192, 84, 61, 32, 20, 14, 70, 8, 82, 71, 56, 85, 0, 71, 36, 68, 36, 0, 66, 7, 196, 72, 242, 197, 72, 20, 11, 200, 44,
-			243, 148, 72, 144, 149, 21, 32, 20, 9, 198, 24, 18, 212, 60, 145, 0, 20, 9, 198, 24, 21, 143, 72, 149, 0, 20, 9, 198, 4, 181,
-			129, 88, 149, 0, 20, 16, 141, 195, 166, 11, 22, 9, 12, 9, 2, 18, 9, 19, 13, 5, 20, 15, 204, 76, 83, 147, 5, 66, 79, 56,
-			19, 9, 76, 209, 64, 20, 9, 198, 21, 68, 149, 72, 145, 78, 20, 9, 198, 29, 32, 83, 76, 21, 0, 20, 9, 198, 16, 83, 5, 28,
-			21, 0, 20, 0, 9, 198, 16, 144, 83, 44, 244, 0, 20, 8, 197, 5, 96, 78, 12, 80, 20, 8, 197, 76, 181, 76, 48, 80, 76, 0,
-			20, 67, 16, 82, 129, 72, 36, 91, 57, 35, 15, 6, 84, 116, 0, 44, 81, 118, 117, 32, 9, 198, 24, 19, 148, 5, 50, 64, 20, 14,
-			139, 13, 1, 12, 20, 7, 195, 184, 18, 5, 18, 9, 20, 9, 198, 52, 85, 18, 61, 3, 204, 20, 0, 12, 137, 22, 15, 12, 20, 9,
-			7, 195, 184, 18, 20, 10, 199, 72, 80, 133, 48, 194, 79, 56, 20, 12, 201, 77, 3, 206, 80, 19, 137, 80, 85, 0, 20, 10, 199, 72,
-			81, 210, 20, 66, 69, 72, 20, 10, 199, 64, 146, 193, 57, 65, 82, 36, 20, 10, 199, 24, 245, 15, 52, 85, 18, 36, 20, 10, 199, 24,
-			147, 9, 77, 65, 82, 36, 20, 10, 199, 8, 145, 207, 81, 65, 82, 36, 20, 10, 199, 5, 37, 9, 77, 65, 82, 36, 20, 10, 199, 44,
-			243, 5, 72, 146, 197, 72, 20, 10, 199, 56, 20, 139, 60, 208, 78, 36, 20, 10, 199, 61, 32, 78, 28, 80, 68, 20, 20, 0, 7, 196,
-			72, 85, 21, 72, 20, 11, 200, 44, 20, 132, 36, 243, 15, 28, 144, 20, 11, 200, 64, 83, 1, 72, 115, 206, 36, 80, 20, 20, 145, 1,
-			6, 22, 195, 166, 18, 7, 5, 13, 5, 11, 1, 14, 9, 19, 13, 5, 20, 11, 136, 16, 195, 166, 4, 15, 6, 9, 12, 20, 0, 30,
-			69, 69, 82, 67, 32, 80, 49, 37, 91, 15, 55, 39, 34, 6, 109, 12, 50, 12, 0, 81, 108, 111, 114, 114, 97, 105, 110, 101, 32, 10,
-			135, 12, 5, 11, 20, 195, 184, 18, 20, 15, 140, 13, 1, 14, 195, 184, 22, 18, 5, 18, 9, 14, 7, 20, 9, 198, 28, 84, 141, 4,
-			226, 69, 20, 9, 198, 12, 84, 133, 52, 243, 137, 20, 8, 197, 56, 245, 137, 12, 80, 20, 8, 197, 64, 19, 129, 16, 80, 20, 8, 197,
-			56, 18, 129, 16, 80, 20, 15, 2, 95, 33, 40, 72, 51, 114, 71, 89, 47, 36, 57, 50, 0, 0, 20, 67, 4, 195, 5, 110, 55, 108,
-			15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 16, 141, 16, 18, 195, 166, 19, 5, 18, 22, 5, 18, 9, 14, 7, 20, 16, 141,
-			4, 195, 166, 13, 15, 14, 9, 19, 5, 18, 9, 14, 7, 20, 13, 202, 80, 147, 6, 61, 35, 1, 16, 83, 9, 28, 20, 9, 198, 56,
-			245, 137, 12, 144, 84, 20, 9, 198, 24, 16, 146, 36, 176, 84, 20, 0, 13, 138, 9, 14, 6, 5, 11, 20, 9, 195, 184, 19, 20, 12,
-			201, 76, 243, 9, 16, 20, 137, 80, 85, 0, 20, 12, 201, 72, 81, 213, 48, 20, 137, 80, 85, 0, 20, 17, 142, 195, 184, 11, 15, 14,
-			15, 13, 9, 19, 5, 18, 9, 14, 7, 20, 13, 138, 20, 18, 195, 166, 14, 5, 18, 9, 14, 7, 20, 9, 198, 45, 84, 5, 72, 147,
-			135, 20, 10, 199, 44, 244, 212, 84, 210, 69, 72, 20, 10, 199, 60, 208, 146, 100, 65, 82, 36, 20, 10, 199, 52, 20, 203, 36, 225, 82,
-			36, 20, 10, 199, 45, 32, 75, 36, 193, 82, 36, 20, 12, 201, 81, 32, 78, 77, 97, 83, 80, 149, 0, 20, 12, 201, 52, 84, 207, 64,
-			245, 1, 52, 145, 78, 20, 10, 199, 80, 19, 80, 60, 224, 68, 20, 20, 10, 199, 44, 243, 15, 56, 224, 68, 20, 20, 0, 13, 138, 9,
-			14, 19, 16, 5, 11, 20, 195, 184, 18, 20, 11, 200, 52, 85, 15, 16, 243, 15, 28, 144, 20, 11, 200, 45, 34, 83, 80, 243, 15, 28,
-			144, 20, 11, 200, 20, 229, 15, 52, 243, 15, 28, 144, 20, 15, 204, 16, 83, 132, 72, 242, 210, 60, 227, 204, 60, 114, 64, 20, 9, 198,
-			36, 225, 12, 60, 113, 82, 20, 9, 198, 24, 16, 146, 36, 177, 82, 20, 9, 198, 20, 112, 76, 37, 49, 82, 20, 11, 200, 16, 145, 148,
-			60, 225, 197, 72, 80, 20, 9, 198, 16, 84, 18, 36, 209, 82, 20, 9, 198, 16, 81, 143, 72, 209, 82, 20, 9, 198, 4, 227, 196, 37,
-			49, 82, 20, 11, 200, 24, 244, 141, 100, 225, 5, 72, 144, 20, 9, 198, 37, 35, 206, 36, 177, 82, 20, 11, 200, 44, 243, 21, 52, 32,
-			82, 36, 80, 20, 11, 200, 44, 19, 5, 56, 64, 82, 36, 80, 20, 21, 72, 80, 244, 148, 20, 195, 9, 56, 144, 47, 114, 47, 13, 55,
-			6, 37, 50, 37, 0, 20, 7, 196, 88, 148, 137, 48, 20, 9, 198, 52, 20, 143, 44, 176, 78, 20, 8, 67, 76, 243, 135, 21, 0, 10,
-			0, 14, 139, 1, 11, 21, 16, 21, 14, 11, 20, 195, 184, 18, 20, 15, 140, 7, 18, 195, 166, 3, 9, 19, 5, 18, 9, 14, 7, 20,
-			9, 198, 44, 192, 77, 52, 84, 137, 20, 9, 198, 9, 38, 71, 28, 84, 137, 20, 9, 198, 56, 18, 86, 37, 51, 69, 20, 13, 70, 20,
-			228, 197, 52, 35, 5, 21, 102, 114, 0, 10, 0, 9, 198, 77, 147, 132, 72, 243, 64, 20, 12, 201, 72, 81, 201, 77, 68, 133, 72, 147,
-			135, 20, 12, 201, 61, 34, 197, 77, 68, 133, 72, 147, 135, 20, 12, 201, 44, 243, 80, 20, 228, 197, 72, 147, 135, 20, 12, 201, 36, 225,
-			137, 49, 68, 133, 72, 147, 135, 20, 12, 201, 36, 195, 21, 77, 68, 133, 72, 147, 135, 20, 12, 201, 4, 208, 76, 28, 19, 69, 72, 147,
-			135, 20, 9, 198, 88, 19, 129, 16, 147, 128, 20, 9, 198, 52, 83, 1, 52, 147, 128, 20, 9, 198, 37, 64, 76, 36, 83, 128, 20, 0,
-			19, 67, 16, 83, 128, 72, 6, 109, 50, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 19, 67, 16, 83, 128, 72, 6, 109, 50, 15, 72,
-			36, 34, 0, 81, 100, 101, 114, 32, 16, 141, 3, 8, 5, 6, 18, 5, 4, 1, 11, 20, 195, 184, 18, 20, 10, 199, 80, 21, 84, 60,
-			195, 199, 36, 20, 10, 199, 76, 240, 201, 60, 195, 199, 36, 20, 10, 199, 76, 83, 73, 60, 195, 199, 36, 20, 10, 199, 65, 54, 75, 60,
-			195, 199, 36, 20, 10, 199, 33, 145, 18, 60, 195, 199, 36, 20, 10, 199, 25, 148, 201, 60, 195, 199, 36, 20, 10, 199, 21, 70, 77, 60,
-			195, 199, 36, 20, 12, 201, 45, 38, 83, 80, 19, 12, 37, 49, 82, 20, 12, 201, 32, 244, 208, 37, 64, 76, 37, 49, 82, 20, 10, 199,
-			84, 197, 9, 52, 21, 21, 52, 20, 10, 199, 5, 85, 15, 52, 240, 137, 48, 20, 10, 135, 13, 195, 166, 18, 11, 1, 20, 20, 11, 70,
-			72, 86, 78, 60, 193, 19, 21, 0, 10, 10, 67, 16, 83, 128, 72, 109, 50, 0, 72, 0, 9, 198, 72, 80, 197, 57, 49, 82, 20, 9,
-			198, 44, 243, 135, 73, 81, 82, 20, 12, 201, 77, 6, 84, 76, 194, 75, 44, 84, 137, 20, 12, 201, 32, 243, 204, 36, 112, 78, 37, 51,
-			69, 20, 12, 201, 25, 33, 85, 16, 144, 78, 37, 51, 69, 20, 12, 201, 8, 20, 148, 32, 144, 78, 37, 51, 69, 20, 12, 201, 4, 209,
-			82, 36, 176, 78, 37, 51, 69, 20, 7, 196, 61, 35, 129, 80, 20, 9, 198, 5, 53, 18, 4, 176, 78, 21, 20, 4, 95, 3, 1, 16,
-			89, 47, 39, 114, 47, 15, 71, 39, 40, 89, 47, 35, 58, 0, 0, 9, 198, 104, 144, 133, 48, 147, 133, 20, 9, 198, 76, 243, 129, 80,
-			147, 133, 20, 14, 139, 16, 18, 195, 166, 10, 21, 4, 9, 3, 5, 18, 20, 9, 198, 76, 213, 71, 48, 84, 137, 20, 12, 201, 44, 20,
-			130, 60, 194, 78, 21, 83, 64, 20, 9, 198, 85, 67, 208, 37, 51, 69, 20, 9, 198, 72, 80, 76, 37, 51, 69, 20, 9, 198, 56, 244,
-			132, 37, 51, 69, 20, 9, 198, 21, 35, 212, 37, 51, 69, 20, 9, 198, 17, 80, 76, 37, 51, 69, 20, 11, 70, 16, 80, 68, 48, 147,
-			133, 21, 0, 10, 0, 9, 198, 44, 21, 84, 36, 243, 128, 20, 12, 201, 84, 226, 70, 61, 35, 69, 72, 147, 135, 20, 12, 201, 77, 65,
-			78, 12, 147, 5, 72, 147, 135, 20, 12, 201, 52, 19, 137, 65, 83, 5, 72, 147, 135, 20, 12, 201, 48, 81, 201, 80, 147, 69, 72, 147,
-			135, 20, 12, 201, 44, 243, 132, 20, 228, 197, 72, 147, 135, 20, 12, 201, 44, 243, 80, 72, 147, 69, 72, 147, 135, 20, 12, 201, 44, 192,
-			85, 77, 83, 5, 72, 147, 135, 20, 12, 201, 44, 20, 148, 60, 227, 133, 72, 147, 135, 20, 12, 201, 44, 19, 148, 60, 227, 133, 72, 147,
-			135, 20, 12, 201, 16, 148, 208, 20, 228, 197, 72, 147, 135, 20, 12, 201, 13, 84, 20, 85, 35, 133, 72, 147, 135, 20, 12, 201, 5, 52,
-			201, 52, 147, 5, 72, 147, 135, 20, 12, 201, 4, 178, 213, 53, 83, 5, 72, 147, 135, 20, 9, 198, 5, 68, 129, 104, 147, 128, 20, 9,
-			198, 5, 32, 66, 36, 83, 128, 20, 9, 198, 80, 144, 133, 80, 19, 128, 20, 9, 198, 4, 33, 83, 76, 147, 128, 20, 9, 198, 52, 83,
-			79, 72, 144, 76, 20, 0, 12, 201, 44, 20, 129, 45, 65, 82, 37, 49, 82, 20, 12, 201, 20, 97, 133, 45, 66, 86, 37, 49, 82, 20,
-			12, 201, 12, 243, 80, 85, 65, 82, 37, 49, 82, 20, 12, 201, 4, 209, 82, 36, 176, 78, 37, 49, 82, 20, 10, 199, 5, 81, 9, 80,
-			244, 137, 20, 20, 10, 199, 84, 226, 79, 56, 148, 205, 20, 20, 10, 199, 76, 21, 1, 56, 148, 205, 20, 20, 10, 199, 48, 240, 130, 100,
-			148, 205, 20, 20, 15, 204, 29, 37, 78, 17, 69, 137, 28, 144, 78, 37, 51, 69, 20, 10, 199, 77, 66, 77, 84, 192, 78, 76, 20, 8,
-			67, 92, 244, 132, 21, 0, 10, 6, 195, 32, 84, 128, 72, 0, 17, 142, 16, 18, 195, 166, 11, 22, 1, 12, 9, 6, 9, 3, 5, 18,
-			20, 12, 201, 77, 147, 132, 36, 176, 76, 37, 51, 69, 20, 12, 201, 52, 21, 5, 72, 144, 76, 37, 51, 69, 20, 12, 201, 36, 225, 129,
-			57, 66, 76, 37, 51, 69, 20, 12, 201, 36, 212, 5, 72, 144, 76, 37, 51, 69, 20, 7, 196, 17, 84, 129, 8, 20, 11, 2, 95, 46,
-			48, 113, 68, 47, 113, 65, 0, 0, 9, 198, 28, 83, 133, 72, 84, 133, 20, 9, 198, 5, 34, 201, 88, 84, 133, 20, 8, 197, 4, 224,
-			66, 60, 192, 20, 8, 197, 81, 145, 143, 36, 64, 20, 8, 197, 64, 19, 13, 36, 224, 20, 15, 69, 76, 84, 129, 36, 192, 89, 36, 34,
-			6, 35, 57, 0, 20, 12, 201, 52, 21, 82, 21, 64, 78, 36, 83, 128, 20, 8, 197, 64, 84, 137, 4, 192, 20, 8, 197, 56, 244, 141,
-			4, 192, 20, 8, 197, 52, 19, 149, 4, 192, 20, 15, 2, 95, 45, 71, 37, 50, 50, 36, 89, 72, 34, 35, 37, 0, 0, 9, 198, 20,
-			161, 75, 80, 244, 128, 20, 9, 198, 80, 149, 21, 48, 84, 128, 20, 9, 198, 72, 83, 143, 88, 84, 128, 20, 9, 198, 64, 192, 71, 36,
-			84, 128, 20, 9, 198, 48, 147, 73, 80, 84, 128, 20, 9, 198, 20, 208, 76, 40, 84, 128, 20, 9, 198, 4, 99, 5, 88, 84, 128, 20,
-			13, 202, 77, 80, 138, 20, 181, 9, 88, 148, 205, 20, 20, 13, 202, 64, 20, 139, 36, 228, 207, 56, 148, 205, 20, 20, 9, 198, 80, 19,
-			135, 20, 228, 192, 20, 9, 198, 76, 19, 79, 88, 20, 128, 20, 9, 198, 72, 148, 201, 44, 16, 128, 20, 9, 198, 44, 243, 147, 80, 16,
-			128, 20, 11, 2, 95, 44, 49, 6, 39, 65, 35, 12, 0, 0, 12, 67, 53, 36, 192, 65, 36, 89, 36, 89, 0, 25, 10, 199, 28, 83,
-			194, 36, 243, 15, 28, 20, 10, 199, 80, 18, 206, 20, 211, 9, 28, 20, 10, 199, 16, 144, 76, 60, 114, 83, 44, 20, 15, 204, 36, 229,
-			5, 48, 193, 75, 81, 80, 76, 37, 51, 69, 20, 10, 199, 20, 180, 197, 53, 3, 1, 72, 20, 10, 67, 88, 20, 128, 84, 112, 34, 0,
-			76, 11, 67, 16, 84, 128, 72, 109, 34, 0, 76, 72, 9, 2, 95, 51, 47, 51, 6, 36, 0, 0, 11, 200, 32, 244, 147, 20, 228, 201,
-			4, 224, 20, 8, 2, 95, 50, 47, 6, 39, 0, 0, 9, 198, 25, 37, 75, 80, 244, 197, 20, 12, 201, 77, 147, 139, 72, 85, 9, 76,
-			84, 128, 20, 12, 201, 77, 65, 78, 60, 116, 129, 24, 84, 128, 20, 12, 201, 72, 82, 193, 64, 149, 21, 48, 84, 128, 20, 12, 201, 64,
-			19, 1, 80, 19, 9, 76, 84, 128, 20, 12, 201, 44, 19, 12, 36, 116, 129, 24, 84, 128, 20, 12, 201, 36, 229, 5, 73, 4, 133, 80,
-			84, 128, 20, 12, 201, 24, 244, 198, 61, 33, 83, 12, 84, 128, 20, 12, 201, 16, 145, 201, 80, 19, 9, 76, 84, 128, 20, 12, 201, 12,
-			128, 80, 80, 19, 9, 76, 84, 128, 20, 12, 201, 4, 193, 129, 8, 85, 9, 76, 84, 128, 20, 8, 197, 77, 147, 66, 60, 192, 20, 8,
-			197, 12, 128, 84, 60, 192, 20, 9, 198, 44, 21, 1, 80, 243, 137, 20, 8, 197, 76, 240, 201, 4, 192, 20, 8, 197, 24, 244, 141, 4,
-			192, 20, 9, 2, 95, 49, 6, 36, 12, 50, 0, 0, 9, 198, 64, 144, 193, 16, 244, 128, 20, 9, 198, 77, 3, 206, 76, 244, 128, 20,
-			9, 198, 80, 20, 137, 24, 84, 128, 20, 9, 198, 76, 180, 129, 88, 84, 128, 20, 9, 198, 64, 20, 129, 24, 84, 128, 20, 9, 198, 64,
-			19, 143, 72, 84, 128, 20, 9, 198, 53, 84, 201, 12, 84, 128, 20, 9, 198, 48, 16, 143, 72, 84, 128, 20, 9, 198, 37, 36, 137, 80,
-			84, 128, 20, 9, 198, 29, 32, 68, 84, 84, 128, 20, 9, 198, 25, 35, 212, 80, 84, 128, 20, 9, 198, 21, 96, 76, 84, 84, 128, 20,
-			9, 198, 20, 228, 201, 48, 84, 128, 20, 9, 198, 17, 81, 84, 80, 84, 128, 20, 9, 198, 17, 33, 83, 76, 84, 128, 20, 9, 198, 16,
-			83, 79, 48, 84, 128, 20, 9, 198, 4, 35, 206, 56, 84, 128, 20, 13, 202, 44, 194, 77, 5, 67, 204, 60, 114, 83, 44, 20, 9, 198,
-			45, 96, 82, 81, 50, 84, 20, 9, 198, 76, 83, 73, 56, 20, 128, 20, 9, 2, 95, 48, 6, 50, 113, 55, 0, 0, 10, 199, 45, 96,
-			68, 72, 21, 21, 72, 20, 10, 199, 44, 243, 15, 72, 21, 21, 72, 20, 10, 199, 5, 4, 1, 72, 21, 21, 72, 20, 11, 136, 7, 5,
-			15, 4, 195, 166, 19, 9, 20, 12, 201, 88, 84, 137, 24, 146, 193, 80, 147, 206, 20, 12, 201, 56, 245, 9, 24, 146, 193, 80, 147, 206,
-			20, 12, 201, 44, 243, 80, 48, 146, 193, 80, 147, 206, 20, 12, 201, 20, 180, 208, 48, 146, 193, 80, 147, 206, 20, 10, 199, 4, 208, 76,
-			28, 19, 69, 72, 20, 10, 199, 28, 241, 22, 36, 195, 9, 28, 20, 10, 199, 80, 85, 84, 60, 226, 83, 44, 20, 9, 198, 41, 84, 137,
-			16, 148, 203, 20, 10, 199, 21, 82, 204, 36, 66, 83, 44, 20, 10, 199, 44, 193, 80, 80, 243, 65, 56, 21, 9, 198, 64, 243, 69, 72,
-			19, 147, 20, 10, 199, 44, 243, 69, 16, 144, 78, 80, 20, 9, 2, 95, 55, 89, 6, 116, 58, 0, 0, 9, 198, 36, 210, 84, 5, 67,
-			210, 20, 9, 198, 4, 114, 84, 5, 67, 210, 20, 12, 201, 25, 83, 132, 4, 209, 78, 80, 84, 133, 20, 9, 198, 16, 19, 65, 77, 50,
-			78, 20, 11, 200, 72, 19, 132, 73, 84, 201, 4, 224, 20, 6, 195, 16, 83, 147, 76, 10, 2, 95, 54, 89, 6, 109, 81, 89, 0, 0,
-			12, 201, 61, 33, 193, 56, 148, 193, 80, 244, 128, 20, 12, 201, 16, 84, 212, 36, 195, 1, 80, 244, 128, 20, 12, 201, 80, 84, 141, 60,
-			116, 129, 24, 84, 128, 20, 12, 201, 80, 80, 84, 72, 19, 9, 76, 84, 128, 20, 12, 201, 77, 1, 67, 36, 19, 9, 76, 84, 128, 20,
-			12, 201, 76, 176, 78, 16, 19, 9, 76, 84, 128, 20, 12, 201, 76, 49, 78, 60, 116, 129, 24, 84, 128, 20, 12, 201, 72, 17, 9, 44,
-			19, 9, 76, 84, 128, 20, 12, 201, 56, 85, 84, 72, 19, 9, 76, 84, 128, 20, 12, 201, 56, 21, 21, 72, 19, 9, 76, 84, 128, 20,
-			12, 201, 44, 244, 133, 60, 116, 129, 24, 84, 128, 20, 8, 197, 44, 195, 210, 21, 32, 20, 12, 201, 44, 20, 9, 80, 19, 9, 76, 84,
-			128, 20, 12, 201, 28, 83, 137, 57, 97, 83, 80, 84, 128, 20, 12, 201, 36, 226, 84, 36, 19, 9, 76, 84, 128, 20, 12, 201, 28, 83,
-			133, 72, 19, 9, 76, 84, 128, 20, 12, 201, 24, 195, 210, 4, 116, 129, 24, 84, 128, 20, 12, 201, 16, 21, 1, 52, 21, 9, 76, 84,
-			128, 20, 9, 198, 76, 165, 83, 44, 84, 137, 20, 9, 198, 44, 226, 82, 44, 84, 137, 20, 12, 201, 65, 32, 71, 52, 21, 9, 44, 84,
-			128, 20, 12, 201, 52, 85, 1, 25, 148, 201, 44, 84, 128, 20, 12, 201, 52, 21, 5, 52, 21, 9, 44, 84, 128, 20, 12, 201, 5, 34,
-			84, 52, 85, 9, 44, 84, 128, 20, 12, 201, 4, 227, 210, 20, 181, 9, 44, 84, 128, 20, 9, 198, 32, 83, 20, 36, 225, 5, 20, 12,
-			201, 76, 145, 206, 36, 98, 75, 4, 228, 192, 20, 9, 2, 95, 53, 83, 6, 109, 65, 0, 0, 15, 204, 20, 180, 203, 60, 211, 85, 56,
-			146, 193, 80, 147, 206, 20, 15, 204, 20, 180, 197, 53, 3, 9, 24, 146, 193, 80, 147, 206, 20, 12, 201, 25, 147, 15, 28, 83, 133, 80,
-			148, 203, 20, 9, 198, 16, 149, 82, 21, 49, 64, 20, 9, 198, 81, 32, 83, 76, 83, 148, 20, 9, 198, 36, 212, 15, 80, 83, 148, 20,
-			12, 201, 24, 244, 198, 61, 33, 83, 12, 83, 147, 20, 9, 198, 24, 16, 149, 48, 19, 148, 20, 9, 198, 20, 210, 71, 72, 19, 148, 20,
-			9, 198, 16, 243, 73, 56, 19, 148, 20, 9, 198, 16, 80, 149, 80, 19, 148, 20, 9, 198, 4, 208, 149, 48, 19, 148, 20, 10, 2, 95,
-			52, 83, 6, 37, 12, 114, 0, 0, 9, 198, 36, 225, 140, 84, 83, 147, 20, 9, 198, 16, 243, 73, 56, 19, 147, 20, 17, 2, 95, 59,
-			89, 36, 12, 65, 37, 12, 49, 39, 12, 55, 114, 50, 0, 0, 9, 198, 61, 1, 82, 5, 67, 210, 20, 9, 198, 36, 226, 133, 45, 67,
-			210, 20, 15, 204, 76, 83, 148, 36, 209, 78, 80, 19, 9, 76, 84, 128, 20, 11, 200, 72, 85, 129, 12, 50, 78, 21, 32, 20, 11, 200,
-			44, 243, 12, 4, 35, 210, 21, 32, 20, 11, 200, 32, 19, 12, 84, 50, 78, 21, 32, 20, 18, 70, 52, 20, 143, 69, 82, 78, 65, 112,
-			34, 39, 6, 49, 109, 68, 0, 20, 12, 2, 95, 58, 49, 6, 39, 12, 55, 114, 50, 0, 0, 12, 201, 8, 147, 8, 5, 38, 137, 61,
-			49, 64, 20, 8, 197, 80, 149, 18, 21, 32, 20, 8, 197, 61, 1, 82, 21, 32, 20, 8, 197, 48, 149, 18, 21, 32, 20, 8, 197, 20,
-			208, 78, 21, 32, 20, 9, 198, 77, 66, 75, 44, 84, 137, 20, 9, 198, 17, 34, 75, 44, 84, 137, 20, 12, 201, 36, 229, 5, 73, 97,
-			78, 36, 83, 148, 20, 8, 2, 95, 57, 50, 6, 37, 0, 0, 9, 198, 44, 20, 129, 52, 83, 0, 20, 9, 198, 65, 35, 212, 21, 49,
-			64, 20, 9, 198, 16, 144, 84, 21, 49, 64, 20, 14, 139, 1, 13, 1, 20, 195, 184, 18, 9, 19, 13, 5, 20, 9, 198, 12, 128, 82,
-			52, 19, 148, 20, 10, 2, 95, 56, 6, 113, 12, 72, 13, 0, 0, 9, 134, 16, 15, 18, 195, 184, 19, 20, 15, 140, 6, 195, 184, 4,
-			5, 18, 1, 12, 9, 19, 13, 5, 20, 10, 199, 44, 19, 85, 24, 192, 71, 20, 20, 12, 71, 36, 229, 5, 72, 96, 67, 20, 21, 0,
-			10, 19, 2, 95, 63, 89, 48, 118, 34, 81, 89, 65, 114, 55, 89, 47, 35, 57, 50, 0, 0, 9, 134, 13, 9, 14, 195, 184, 18, 20,
-			9, 134, 12, 9, 11, 195, 184, 18, 20, 11, 200, 64, 84, 147, 21, 97, 82, 21, 32, 20, 11, 200, 44, 243, 134, 36, 117, 82, 21, 32,
-			20, 11, 200, 36, 226, 210, 36, 210, 78, 21, 32, 20, 11, 200, 16, 85, 5, 72, 210, 78, 21, 32, 20, 11, 200, 4, 195, 9, 81, 65,
-			82, 21, 32, 20, 11, 200, 5, 4, 5, 56, 66, 67, 37, 64, 20, 7, 196, 81, 148, 129, 56, 21, 0, 9, 198, 29, 147, 78, 5, 50,
-			69, 20, 8, 197, 4, 176, 67, 36, 80, 20, 9, 198, 29, 147, 78, 5, 50, 69, 20, 8, 197, 52, 244, 193, 36, 176, 20, 8, 197, 29,
-			32, 70, 36, 176, 20, 12, 201, 36, 228, 213, 24, 98, 67, 36, 83, 148, 20, 8, 197, 24, 16, 193, 16, 80, 20, 0, 11, 136, 19, 13,
-			9, 14, 11, 195, 184, 18, 20, 9, 198, 52, 243, 132, 36, 19, 0, 20, 9, 198, 45, 96, 82, 80, 19, 0, 20, 0, 12, 201, 84, 227,
-			210, 52, 19, 9, 80, 85, 0, 20, 12, 201, 48, 144, 133, 72, 19, 9, 80, 85, 0, 20, 10, 199, 65, 32, 75, 80, 148, 197, 72, 20,
-			10, 199, 25, 34, 80, 61, 53, 9, 28, 20, 10, 199, 44, 19, 13, 84, 178, 83, 44, 20, 10, 199, 4, 224, 76, 60, 114, 83, 44, 20,
-			10, 199, 4, 195, 5, 72, 114, 83, 44, 20, 10, 199, 52, 85, 15, 16, 146, 197, 72, 20, 0, 9, 134, 22, 1, 12, 195, 184, 18, 20,
-			11, 200, 76, 82, 83, 52, 243, 15, 28, 144, 20, 11, 200, 52, 243, 9, 56, 243, 15, 28, 144, 20, 7, 196, 61, 35, 133, 72, 20, 11,
-			200, 76, 19, 79, 40, 81, 9, 76, 176, 20, 11, 200, 64, 20, 137, 80, 85, 9, 76, 176, 20, 11, 200, 20, 180, 197, 28, 85, 9, 76,
-			176, 20, 11, 200, 4, 229, 9, 80, 85, 9, 76, 176, 20, 7, 196, 4, 115, 206, 36, 20, 7, 196, 45, 80, 137, 44, 20, 9, 198, 76,
-			84, 1, 72, 21, 0, 20, 0, 14, 139, 14, 1, 18, 11, 15, 20, 9, 19, 195, 184, 18, 20, 10, 135, 12, 25, 4, 8, 195, 184, 18,
-			20, 8, 197, 44, 245, 5, 72, 144, 20, 9, 198, 32, 243, 79, 57, 147, 73, 20, 8, 197, 16, 82, 193, 16, 80, 20, 8, 197, 12, 146,
-			193, 16, 80, 20, 0, 11, 136, 1, 21, 4, 9, 20, 195, 184, 18, 20, 9, 198, 72, 16, 149, 48, 148, 212, 20, 9, 198, 12, 149, 137,
-			48, 148, 212, 20, 15, 204, 64, 84, 134, 20, 181, 9, 8, 147, 9, 80, 85, 0, 20, 13, 202, 80, 242, 211, 36, 179, 204, 60, 114, 83,
-			44, 20, 0, 10, 199, 44, 243, 148, 4, 181, 21, 72, 20, 12, 137, 15, 16, 5, 18, 1, 20, 195, 184, 18, 20, 12, 201, 88, 148, 148,
-			84, 244, 201, 80, 85, 0, 20, 12, 201, 64, 192, 83, 80, 144, 201, 80, 85, 0, 20, 12, 201, 44, 244, 132, 36, 19, 9, 80, 85, 0,
-			20, 12, 201, 44, 243, 150, 20, 180, 201, 80, 85, 0, 20, 12, 201, 44, 243, 148, 36, 229, 73, 80, 85, 0, 20, 12, 201, 44, 243, 142,
-			20, 180, 201, 80, 85, 0, 20, 12, 201, 44, 243, 134, 61, 35, 73, 80, 85, 0, 20, 12, 201, 25, 35, 206, 80, 19, 9, 80, 85, 0,
-			20, 12, 201, 20, 192, 83, 80, 144, 201, 80, 85, 0, 20, 12, 201, 4, 67, 73, 72, 19, 9, 80, 85, 0, 20, 10, 199, 65, 81, 19,
-			21, 35, 9, 28, 20, 14, 203, 81, 32, 78, 77, 97, 83, 80, 149, 9, 76, 176, 20, 10, 199, 77, 147, 12, 4, 34, 83, 44, 20, 10,
-			199, 52, 243, 4, 61, 98, 83, 44, 20, 10, 199, 32, 84, 139, 84, 194, 83, 44, 20, 12, 201, 65, 35, 212, 20, 181, 15, 72, 21, 0,
-			20, 12, 201, 36, 228, 208, 20, 181, 15, 72, 21, 0, 20, 10, 199, 72, 83, 79, 84, 192, 68, 20, 20, 10, 199, 24, 20, 150, 20, 192,
-			68, 20, 20, 12, 71, 52, 19, 147, 24, 145, 76, 16, 21, 0, 10, 0, 13, 138, 18, 5, 16, 1, 18, 1, 20, 195, 184, 18, 20, 9,
-			198, 77, 70, 76, 37, 53, 0, 20, 9, 198, 77, 66, 76, 37, 53, 0, 20, 9, 198, 45, 84, 147, 37, 53, 0, 20, 9, 198, 72, 80,
-			76, 37, 49, 82, 20, 9, 198, 24, 19, 148, 5, 49, 82, 20, 9, 198, 21, 35, 212, 37, 49, 82, 20, 9, 198, 20, 225, 15, 77, 49,
-			82, 20, 9, 198, 16, 144, 76, 101, 49, 82, 20, 9, 198, 16, 84, 12, 61, 145, 82, 20, 9, 198, 4, 225, 204, 37, 49, 82, 20, 7,
-			196, 24, 197, 73, 16, 20, 9, 198, 72, 148, 5, 57, 49, 82, 20, 9, 198, 8, 241, 197, 57, 49, 82, 20, 0, 14, 139, 11, 15, 15,
-			16, 5, 18, 1, 20, 195, 184, 18, 20, 9, 198, 8, 195, 206, 16, 147, 133, 20, 9, 198, 76, 227, 194, 8, 84, 137, 20, 9, 198, 81,
-			48, 82, 37, 51, 69, 20, 9, 198, 24, 21, 86, 37, 51, 69, 20, 9, 198, 4, 99, 210, 37, 51, 69, 20, 0, 15, 140, 18, 5, 19,
-			20, 1, 21, 18, 1, 20, 195, 184, 18, 20, 12, 201, 8, 80, 82, 8, 82, 132, 56, 147, 135, 67, 13, 202, 28, 195, 210, 36, 98, 75,
-			5, 66, 79, 56, 20, 15, 204, 77, 81, 199, 21, 53, 9, 8, 147, 9, 80, 85, 0, 20, 15, 204, 44, 243, 150, 21, 37, 9, 8, 147,
-			9, 80, 85, 0, 20, 15, 204, 21, 67, 143, 12, 83, 148, 72, 144, 201, 80, 85, 0, 20, 12, 201, 81, 32, 86, 21, 53, 5, 72, 147,
-			135, 20, 12, 201, 36, 225, 19, 81, 81, 5, 72, 147, 135, 20, 12, 201, 21, 50, 193, 52, 245, 5, 72, 147, 135, 20, 12, 201, 20, 180,
-			203, 49, 81, 5, 72, 147, 135, 20, 12, 201, 16, 84, 18, 20, 50, 69, 72, 147, 135, 20, 12, 201, 8, 19, 12, 5, 53, 5, 72, 147,
-			135, 20, 13, 202, 76, 84, 130, 60, 180, 143, 5, 66, 83, 44, 20, 9, 198, 21, 36, 129, 81, 83, 64, 20, 9, 198, 37, 34, 68, 37,
-			83, 64, 20, 9, 198, 88, 149, 1, 52, 147, 128, 20, 9, 198, 72, 21, 133, 48, 147, 128, 20, 9, 198, 53, 81, 90, 104, 147, 128, 20,
-			9, 198, 52, 17, 193, 76, 147, 128, 20, 9, 198, 44, 84, 129, 80, 147, 128, 20, 9, 198, 36, 228, 213, 48, 147, 128, 20, 9, 198, 4,
-			192, 149, 52, 147, 128, 20, 9, 198, 61, 69, 15, 52, 19, 128, 21, 0, 12, 201, 72, 81, 201, 60, 224, 76, 37, 53, 0, 20, 9, 198,
-			17, 84, 5, 72, 147, 135, 20, 12, 201, 77, 148, 212, 20, 208, 84, 37, 49, 82, 20, 12, 201, 77, 64, 78, 16, 20, 132, 37, 49, 82,
-			20, 12, 137, 16, 18, 195, 166, 19, 9, 4, 5, 18, 20, 12, 201, 52, 21, 5, 72, 144, 76, 37, 49, 82, 20, 12, 201, 72, 244, 203,
-			36, 193, 5, 57, 49, 82, 20, 0, 9, 198, 24, 20, 195, 37, 53, 0, 20, 9, 198, 48, 144, 197, 57, 49, 82, 20, 9, 198, 44, 20,
-			133, 77, 49, 82, 20, 9, 198, 36, 225, 5, 45, 49, 82, 20, 12, 201, 85, 66, 76, 37, 64, 82, 37, 51, 69, 20, 12, 201, 20, 181,
-			137, 48, 144, 146, 37, 51, 69, 20, 7, 196, 25, 85, 9, 48, 20, 7, 196, 80, 243, 65, 80, 20, 9, 68, 52, 16, 200, 60, 21, 0,
-			10, 0, 9, 198, 44, 21, 129, 80, 147, 133, 20, 9, 198, 81, 35, 204, 16, 84, 137, 20, 12, 201, 65, 34, 86, 36, 193, 71, 37, 83,
-			64, 20, 9, 198, 81, 35, 208, 37, 51, 69, 20, 9, 198, 64, 145, 84, 37, 51, 69, 20, 12, 201, 76, 147, 135, 5, 3, 210, 20, 19,
-			128, 20, 0, 9, 198, 12, 130, 70, 24, 243, 128, 20, 9, 198, 80, 83, 147, 36, 243, 128, 20, 9, 198, 64, 83, 147, 36, 243, 128, 20,
-			9, 198, 21, 35, 211, 36, 243, 128, 20, 12, 201, 76, 82, 214, 20, 228, 197, 72, 147, 135, 20, 12, 201, 65, 35, 204, 60, 225, 197, 72,
-			147, 135, 20, 12, 201, 44, 243, 147, 21, 37, 133, 72, 147, 135, 20, 12, 201, 44, 243, 80, 61, 53, 5, 72, 147, 135, 20, 12, 201, 36,
-			225, 18, 4, 225, 197, 72, 147, 135, 20, 12, 201, 24, 84, 141, 20, 229, 5, 72, 147, 135, 20, 12, 201, 16, 148, 212, 4, 224, 197, 72,
-			147, 135, 20, 12, 201, 16, 145, 148, 60, 225, 197, 72, 147, 135, 20, 12, 201, 16, 84, 193, 88, 245, 69, 72, 147, 135, 20, 12, 201, 16,
-			80, 197, 57, 68, 133, 72, 147, 135, 20, 11, 136, 16, 195, 184, 14, 9, 20, 5, 18, 20, 15, 204, 36, 229, 5, 48, 193, 75, 81, 80,
-			76, 37, 49, 82, 20, 9, 198, 61, 96, 82, 37, 83, 64, 20, 9, 198, 48, 19, 143, 48, 147, 128, 20, 9, 198, 24, 83, 73, 56, 147,
-			128, 20, 9, 198, 81, 84, 139, 52, 83, 128, 20, 9, 198, 52, 18, 197, 16, 243, 128, 20, 9, 198, 24, 244, 149, 72, 83, 128, 20, 9,
-			198, 8, 18, 1, 52, 19, 128, 20, 9, 198, 72, 82, 142, 24, 19, 128, 21, 0, 6, 195, 16, 224, 64, 17, 10, 199, 61, 37, 15, 16,
-			242, 211, 36, 20, 14, 139, 15, 2, 19, 11, 195, 184, 14, 9, 20, 5, 20, 20, 10, 199, 52, 85, 1, 48, 195, 201, 16, 20, 10, 199,
-			44, 243, 147, 61, 37, 9, 20, 20, 10, 199, 64, 197, 84, 60, 226, 85, 52, 20, 10, 199, 32, 20, 141, 60, 226, 85, 52, 20, 10, 199,
-			8, 84, 153, 48, 194, 85, 52, 20, 10, 199, 52, 85, 15, 16, 148, 205, 20, 20, 15, 204, 52, 20, 139, 20, 68, 205, 20, 176, 78, 37,
-			51, 69, 20, 10, 199, 20, 180, 207, 80, 148, 205, 20, 20, 0, 15, 68, 32, 18, 84, 36, 107, 110, 6, 37, 12, 47, 37, 0, 20, 12,
-			201, 104, 83, 130, 84, 65, 8, 37, 51, 69, 20, 12, 201, 44, 244, 144, 61, 32, 84, 37, 51, 69, 20, 12, 201, 44, 243, 15, 56, 144,
-			76, 37, 51, 69, 20, 12, 201, 8, 243, 129, 64, 20, 148, 37, 51, 69, 20, 12, 201, 5, 53, 9, 28, 208, 84, 37, 51, 69, 20, 9,
-			198, 65, 35, 195, 20, 229, 0, 20, 7, 196, 8, 20, 193, 72, 20, 0, 9, 198, 64, 81, 9, 13, 84, 133, 20, 9, 198, 88, 148, 143,
-			48, 241, 201, 20, 9, 198, 73, 83, 143, 48, 241, 201, 20, 9, 198, 53, 146, 207, 48, 241, 201, 20, 9, 198, 36, 65, 79, 48, 241, 201,
-			20, 8, 197, 52, 18, 210, 60, 224, 20, 8, 197, 24, 195, 212, 20, 192, 20, 12, 201, 64, 192, 78, 21, 64, 82, 37, 83, 64, 20, 12,
-			201, 16, 83, 6, 36, 224, 82, 37, 83, 64, 20, 8, 197, 77, 64, 66, 36, 192, 20, 12, 201, 32, 83, 19, 36, 225, 207, 72, 19, 128,
-			20, 12, 201, 25, 33, 68, 21, 34, 67, 36, 19, 128, 20, 8, 197, 24, 146, 137, 4, 224, 20, 8, 197, 9, 84, 141, 4, 224, 20, 12,
-			137, 8, 15, 13, 195, 184, 15, 16, 1, 20, 20, 8, 197, 76, 128, 77, 4, 224, 21, 0, 0, 10, 199, 85, 32, 129, 56, 148, 197, 72,
-			20, 10, 199, 80, 149, 143, 48, 148, 197, 72, 20, 10, 199, 80, 83, 65, 80, 148, 197, 72, 20, 10, 199, 72, 83, 80, 48, 16, 197, 72,
-			20, 10, 199, 72, 21, 9, 24, 144, 197, 72, 20, 10, 199, 64, 243, 65, 16, 148, 197, 72, 20, 10, 199, 4, 181, 9, 88, 148, 197, 72,
-			20, 10, 199, 24, 244, 147, 60, 227, 9, 28, 20, 10, 199, 64, 21, 18, 36, 50, 83, 44, 20, 10, 199, 52, 84, 207, 104, 242, 83, 44,
-			20, 10, 199, 48, 85, 1, 72, 114, 83, 44, 20, 10, 199, 21, 68, 149, 76, 178, 83, 44, 20, 10, 199, 4, 224, 84, 60, 210, 83, 44,
-			20, 15, 204, 20, 180, 201, 77, 65, 78, 80, 144, 76, 37, 51, 69, 20, 10, 199, 65, 35, 208, 60, 225, 78, 80, 20, 10, 199, 44, 243,
-			70, 61, 37, 1, 8, 20, 0, 9, 198, 16, 243, 129, 80, 147, 206, 20, 9, 198, 5, 97, 82, 76, 147, 206, 20, 7, 196, 45, 84, 5,
-			72, 20, 15, 204, 36, 228, 212, 73, 83, 69, 57, 64, 82, 37, 83, 64, 20, 7, 196, 25, 149, 9, 56, 20, 7, 196, 61, 5, 9, 44,
-			20, 0, 12, 201, 72, 81, 201, 77, 68, 129, 81, 84, 128, 20, 9, 198, 81, 32, 75, 80, 244, 197, 20, 8, 197, 48, 81, 213, 4, 224,
-			21, 8, 197, 85, 34, 78, 4, 192, 20, 8, 197, 5, 53, 18, 4, 192, 20, 8, 197, 64, 244, 148, 4, 32, 20, 0, 13, 202, 28, 84,
-			143, 57, 67, 204, 60, 114, 83, 44, 20, 0, 6, 195, 20, 177, 192, 17, 10, 67, 36, 65, 64, 37, 72, 6, 36, 0, 10, 199, 29, 33,
-			78, 4, 66, 78, 20, 20, 12, 201, 44, 243, 132, 20, 211, 129, 80, 147, 206, 20, 12, 201, 36, 229, 18, 61, 97, 82, 76, 147, 206, 20,
-			12, 201, 36, 228, 197, 52, 147, 129, 80, 147, 206, 20, 12, 201, 20, 180, 193, 52, 147, 129, 80, 147, 206, 20, 10, 199, 52, 147, 137, 77,
-			68, 133, 72, 20, 10, 199, 44, 244, 144, 61, 35, 9, 28, 20, 10, 199, 72, 20, 19, 60, 66, 83, 44, 20, 10, 199, 64, 192, 84, 60,
-			226, 83, 44, 20, 9, 198, 44, 147, 133, 80, 148, 203, 20, 10, 199, 29, 33, 78, 4, 66, 83, 44, 20, 9, 198, 20, 209, 129, 80, 148,
-			203, 20, 9, 198, 5, 34, 193, 16, 148, 203, 20, 10, 199, 81, 32, 78, 76, 145, 78, 80, 20, 10, 199, 72, 80, 201, 64, 145, 78, 80,
-			20, 9, 198, 72, 85, 133, 72, 83, 147, 20, 9, 198, 44, 243, 147, 80, 19, 147, 20, 10, 199, 36, 225, 143, 72, 208, 78, 80, 20, 0,
-			9, 198, 80, 84, 212, 5, 67, 210, 20, 9, 198, 72, 243, 12, 5, 67, 210, 20, 9, 198, 37, 51, 204, 5, 67, 210, 20, 18, 4, 95,
-			4, 15, 20, 58, 37, 86, 72, 6, 115, 47, 35, 71, 114, 84, 0, 0, 8, 197, 76, 83, 137, 61, 32, 20, 18, 143, 16, 18, 195, 166,
-			19, 21, 16, 16, 15, 19, 9, 20, 9, 15, 14, 20, 12, 201, 65, 35, 198, 21, 52, 201, 60, 225, 76, 20, 12, 201, 44, 243, 134, 21,
-			52, 201, 60, 225, 76, 20, 8, 197, 45, 33, 68, 37, 64, 20, 8, 197, 45, 84, 129, 57, 64, 20, 0, 9, 198, 88, 148, 143, 48, 241,
-			192, 20, 9, 198, 73, 83, 143, 48, 241, 192, 20, 9, 198, 53, 146, 207, 48, 241, 192, 20, 9, 198, 36, 65, 79, 48, 241, 192, 20, 13,
-			202, 76, 82, 83, 52, 241, 210, 4, 98, 83, 44, 20, 12, 201, 64, 197, 84, 60, 180, 129, 80, 148, 203, 20, 13, 202, 60, 49, 65, 56,
-			241, 210, 4, 98, 83, 44, 20, 12, 201, 52, 84, 207, 64, 245, 1, 52, 148, 203, 20, 13, 202, 44, 20, 132, 36, 241, 210, 4, 98, 83,
-			44, 20, 13, 202, 8, 144, 140, 36, 241, 210, 4, 98, 83, 44, 20, 13, 202, 8, 19, 135, 48, 17, 5, 76, 130, 83, 44, 20, 9, 198,
-			81, 34, 66, 84, 224, 76, 20, 9, 198, 5, 52, 9, 72, 19, 148, 20, 9, 198, 4, 67, 208, 80, 19, 148, 20, 0, 20, 67, 88, 147,
-			0, 84, 36, 55, 15, 107, 6, 110, 12, 0, 81, 104, 97, 118, 101, 32, 10, 199, 44, 242, 193, 36, 226, 83, 80, 20, 10, 199, 32, 83,
-			12, 20, 226, 83, 80, 20, 9, 198, 76, 21, 9, 72, 148, 203, 20, 9, 198, 64, 20, 143, 16, 148, 203, 20, 9, 198, 61, 51, 79, 80,
-			148, 203, 20, 9, 198, 60, 49, 65, 56, 148, 203, 20, 9, 198, 4, 193, 197, 72, 148, 203, 20, 8, 67, 80, 80, 200, 21, 0, 10, 6,
-			195, 88, 147, 0, 76, 0, 31, 76, 77, 21, 65, 72, 81, 1, 56, 49, 82, 56, 84, 192, 89, 49, 58, 6, 36, 13, 72, 35, 12, 50,
-			89, 114, 20, 50, 13, 89, 0, 9, 198, 36, 229, 133, 77, 67, 210, 20, 9, 198, 16, 85, 5, 45, 67, 210, 20, 11, 200, 52, 147, 137,
-			52, 19, 9, 77, 64, 20, 11, 200, 4, 194, 207, 32, 243, 9, 77, 64, 20, 9, 198, 20, 225, 15, 72, 98, 78, 20, 11, 200, 16, 242,
-			213, 52, 83, 148, 5, 32, 20, 11, 200, 36, 229, 15, 48, 84, 129, 57, 64, 20, 0, 6, 195, 36, 179, 206, 20, 8, 197, 24, 192, 78,
-			21, 32, 20, 12, 201, 88, 83, 147, 44, 16, 133, 48, 145, 192, 20, 12, 201, 80, 18, 206, 20, 211, 69, 48, 145, 192, 20, 12, 201, 76,
-			83, 19, 44, 16, 133, 48, 145, 192, 20, 12, 201, 32, 84, 147, 44, 16, 133, 48, 145, 192, 20, 8, 197, 32, 149, 20, 37, 64, 20, 12,
-			201, 64, 144, 78, 37, 53, 9, 56, 65, 64, 20, 8, 197, 76, 243, 4, 5, 64, 20, 8, 197, 25, 64, 76, 5, 64, 20, 8, 197, 4,
-			49, 84, 5, 64, 20, 8, 197, 76, 82, 193, 57, 64, 20, 9, 198, 20, 181, 137, 64, 17, 197, 20, 0, 18, 66, 88, 144, 84, 37, 15,
-			89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 18, 67, 36, 178, 197, 36, 81, 36, 15, 107, 110, 0, 81, 104, 97, 118, 101, 32, 9,
-			198, 20, 225, 15, 76, 179, 208, 20, 9, 198, 77, 69, 68, 36, 225, 64, 20, 12, 201, 65, 80, 140, 36, 50, 83, 80, 148, 203, 20, 12,
-			201, 56, 85, 82, 5, 53, 5, 56, 148, 203, 20, 12, 201, 52, 81, 9, 84, 210, 83, 80, 148, 203, 20, 9, 198, 84, 197, 137, 56, 65,
-			64, 20, 9, 198, 29, 81, 9, 56, 65, 64, 20, 9, 198, 72, 81, 133, 72, 83, 148, 20, 9, 198, 44, 243, 147, 80, 19, 148, 20, 8,
-			66, 88, 144, 84, 37, 0, 72, 0, 10, 199, 72, 81, 143, 72, 210, 83, 80, 20, 10, 199, 64, 243, 25, 80, 82, 83, 80, 20, 10, 199,
-			64, 84, 147, 60, 224, 71, 20, 20, 14, 2, 95, 95, 71, 6, 113, 50, 89, 72, 34, 35, 37, 0, 0, 9, 134, 6, 1, 22, 195, 184,
-			18, 20, 11, 200, 52, 243, 143, 64, 243, 9, 77, 64, 20, 11, 200, 24, 81, 5, 72, 19, 9, 77, 64, 20, 12, 201, 8, 84, 212, 101,
-			33, 82, 36, 225, 5, 68, 11, 200, 77, 80, 143, 72, 66, 78, 21, 32, 20, 11, 200, 36, 229, 5, 72, 97, 82, 21, 32, 20, 11, 200,
-			5, 3, 211, 81, 35, 198, 21, 32, 20, 12, 137, 16, 18, 195, 166, 19, 9, 4, 9, 5, 20, 12, 201, 45, 83, 147, 80, 225, 82, 36,
-			225, 5, 20, 12, 201, 8, 84, 212, 101, 33, 82, 36, 225, 5, 20, 11, 200, 72, 83, 143, 52, 209, 82, 21, 64, 20, 11, 200, 52, 19,
-			137, 21, 33, 82, 21, 64, 20, 11, 200, 36, 225, 9, 28, 225, 82, 21, 64, 20, 11, 200, 24, 16, 197, 81, 65, 82, 21, 64, 20, 11,
-			200, 20, 180, 193, 49, 65, 82, 21, 64, 20, 11, 200, 16, 84, 129, 56, 113, 82, 21, 64, 20, 11, 200, 16, 84, 18, 37, 97, 82, 21,
-			64, 20, 11, 200, 5, 52, 207, 73, 65, 82, 21, 64, 20, 11, 200, 4, 229, 9, 45, 97, 82, 21, 64, 20, 11, 200, 4, 97, 133, 45,
-			65, 82, 21, 64, 20, 9, 198, 48, 19, 73, 56, 21, 0, 20, 7, 196, 45, 84, 129, 8, 20, 0, 8, 197, 84, 225, 9, 56, 80, 20,
-			12, 201, 28, 80, 143, 52, 209, 82, 48, 145, 192, 20, 13, 138, 16, 195, 166, 4, 5, 18, 1, 19, 20, 9, 20, 12, 201, 4, 67, 73,
-			72, 19, 9, 56, 65, 64, 20, 10, 69, 60, 227, 9, 56, 80, 21, 0, 10, 0, 9, 198, 64, 20, 143, 16, 148, 212, 20, 9, 198, 49,
-			85, 5, 56, 148, 212, 20, 9, 198, 21, 52, 193, 100, 148, 212, 20, 9, 198, 52, 243, 135, 60, 194, 68, 20, 9, 198, 81, 148, 129, 56,
-			226, 64, 20, 9, 198, 16, 144, 75, 60, 226, 64, 20, 9, 198, 64, 243, 5, 52, 146, 192, 20, 9, 198, 28, 83, 133, 80, 146, 192, 20,
-			9, 198, 24, 243, 133, 80, 146, 192, 20, 9, 198, 81, 34, 66, 84, 224, 84, 20, 9, 198, 40, 245, 82, 56, 19, 0, 20, 8, 67, 12,
-			242, 197, 21, 0, 10, 0, 14, 203, 81, 32, 68, 37, 66, 79, 56, 19, 9, 77, 64, 20, 12, 201, 20, 180, 212, 72, 83, 73, 80, 85,
-			0, 20, 10, 199, 88, 148, 137, 48, 148, 197, 72, 20, 10, 199, 37, 51, 1, 52, 148, 197, 72, 20, 10, 199, 24, 197, 73, 16, 148, 197,
-			72, 20, 9, 198, 32, 245, 141, 60, 66, 71, 20, 9, 198, 28, 83, 69, 56, 194, 71, 20, 6, 195, 88, 147, 204, 20, 6, 195, 24, 147,
-			204, 20, 10, 199, 52, 243, 129, 72, 178, 83, 44, 20, 10, 199, 44, 19, 13, 100, 178, 83, 44, 20, 10, 199, 21, 84, 212, 4, 178, 83,
-			44, 20, 10, 199, 72, 17, 9, 60, 99, 206, 36, 20, 10, 199, 16, 243, 73, 56, 144, 193, 56, 20, 10, 199, 44, 21, 129, 48, 176, 68,
-			20, 20, 10, 199, 8, 20, 146, 36, 176, 68, 20, 20, 10, 199, 65, 32, 75, 80, 146, 193, 8, 20, 10, 199, 4, 211, 210, 80, 148, 193,
-			8, 20, 8, 67, 12, 243, 204, 21, 0, 10, 0, 13, 138, 9, 14, 19, 5, 13, 9, 14, 195, 184, 18, 20, 11, 200, 16, 84, 141, 5,
-			67, 204, 60, 112, 20, 11, 200, 9, 35, 205, 5, 67, 204, 60, 112, 20, 11, 200, 76, 84, 144, 20, 229, 9, 56, 80, 20, 9, 198, 21,
-			37, 80, 80, 147, 206, 20, 9, 198, 4, 208, 137, 80, 147, 206, 20, 11, 200, 33, 148, 15, 44, 243, 132, 72, 144, 20, 11, 200, 28, 83,
-			132, 5, 35, 69, 72, 144, 20, 11, 200, 96, 83, 143, 24, 240, 137, 76, 176, 20, 11, 200, 88, 81, 197, 80, 20, 137, 76, 176, 20, 11,
-			200, 88, 19, 21, 80, 20, 137, 76, 176, 20, 11, 200, 76, 243, 9, 16, 20, 137, 76, 176, 20, 11, 200, 52, 85, 1, 8, 243, 9, 76,
-			176, 20, 11, 200, 48, 20, 9, 16, 20, 137, 76, 176, 20, 11, 200, 8, 19, 21, 77, 68, 129, 16, 80, 20, 11, 200, 24, 84, 142, 37,
-			52, 193, 28, 80, 20, 0, 8, 197, 84, 99, 204, 60, 112, 20, 8, 197, 64, 241, 210, 60, 208, 20, 8, 197, 61, 34, 197, 72, 80, 20,
-			8, 197, 5, 50, 197, 76, 80, 20, 9, 198, 21, 2, 84, 4, 98, 69, 20, 9, 198, 16, 80, 197, 56, 226, 69, 20, 8, 197, 24, 16,
-			146, 36, 176, 20, 12, 201, 76, 18, 210, 4, 209, 78, 80, 19, 0, 20, 11, 70, 25, 34, 69, 56, 67, 25, 21, 0, 10, 20, 4, 95,
-			56, 88, 15, 83, 37, 34, 89, 36, 50, 89, 47, 116, 84, 13, 50, 13, 0, 0, 11, 67, 81, 83, 133, 47, 40, 50, 108, 0, 41, 12,
-			137, 18, 5, 12, 9, 7, 9, 195, 184, 19, 20, 12, 137, 13, 1, 12, 9, 3, 9, 195, 184, 19, 20, 11, 136, 16, 12, 1, 14, 20,
-			195, 184, 18, 20, 13, 202, 60, 101, 1, 48, 211, 204, 60, 114, 83, 44, 20, 13, 202, 48, 20, 153, 56, 115, 204, 60, 114, 83, 44, 20,
-			13, 202, 24, 20, 141, 4, 179, 204, 60, 114, 83, 44, 20, 9, 198, 16, 144, 75, 60, 224, 84, 20, 13, 202, 36, 226, 207, 52, 209, 78,
-			77, 84, 129, 8, 20, 0, 20, 67, 33, 83, 128, 107, 113, 50, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 13, 138, 16, 5,
-			18, 14, 9, 3, 9, 195, 184, 19, 20, 12, 201, 44, 243, 210, 16, 147, 129, 80, 147, 206, 20, 12, 201, 44, 243, 147, 20, 180, 129, 80,
-			147, 206, 20, 12, 201, 24, 192, 71, 20, 195, 1, 80, 147, 206, 20, 12, 201, 36, 208, 133, 12, 147, 9, 80, 85, 0, 20, 12, 201, 4,
-			227, 210, 52, 19, 9, 80, 85, 0, 20, 10, 199, 65, 35, 203, 48, 19, 69, 72, 20, 10, 199, 44, 243, 139, 85, 36, 133, 72, 20, 10,
-			199, 44, 243, 132, 20, 228, 197, 72, 20, 10, 199, 44, 20, 9, 81, 83, 5, 72, 20, 10, 199, 4, 178, 213, 53, 83, 5, 72, 20, 10,
-			199, 64, 197, 84, 60, 226, 83, 44, 20, 14, 203, 56, 243, 69, 56, 179, 1, 80, 244, 137, 76, 176, 20, 10, 199, 52, 85, 1, 48, 194,
-			83, 44, 20, 9, 198, 48, 85, 137, 80, 148, 203, 20, 10, 199, 48, 84, 207, 80, 130, 83, 44, 20, 14, 203, 44, 243, 80, 20, 228, 193,
-			80, 244, 137, 76, 176, 20, 9, 198, 21, 84, 129, 76, 148, 203, 20, 10, 199, 16, 144, 84, 60, 226, 83, 44, 20, 10, 199, 8, 20, 130,
-			4, 66, 83, 44, 20, 9, 198, 5, 165, 5, 44, 148, 203, 20, 10, 199, 44, 244, 205, 60, 115, 206, 36, 20, 10, 199, 88, 20, 132, 20,
-			228, 197, 72, 20, 12, 201, 12, 149, 137, 48, 148, 197, 72, 85, 0, 20, 10, 199, 44, 20, 130, 60, 224, 68, 20, 20, 6, 195, 33, 83,
-			128, 72, 0, 14, 139, 16, 18, 5, 19, 20, 9, 7, 9, 195, 184, 19, 20, 11, 200, 44, 194, 77, 5, 67, 204, 60, 112, 20, 7, 196,
-			5, 67, 5, 80, 20, 9, 198, 64, 145, 84, 37, 53, 0, 20, 7, 196, 5, 4, 5, 48, 20, 9, 198, 64, 241, 84, 37, 49, 82, 20,
-			9, 198, 44, 19, 132, 37, 49, 82, 20, 9, 198, 36, 67, 204, 37, 49, 82, 20, 11, 200, 48, 19, 80, 37, 53, 5, 72, 144, 20, 11,
-			200, 24, 19, 148, 5, 53, 5, 72, 144, 20, 11, 200, 76, 20, 139, 5, 53, 9, 76, 176, 20, 11, 200, 32, 145, 82, 5, 34, 201, 76,
-			176, 20, 7, 196, 76, 130, 73, 80, 20, 9, 198, 64, 20, 129, 24, 98, 78, 20, 11, 200, 44, 243, 148, 20, 224, 78, 12, 80, 20, 7,
-			196, 73, 84, 129, 48, 20, 7, 196, 8, 20, 193, 48, 20, 0, 12, 201, 52, 84, 139, 4, 229, 9, 48, 148, 212, 20, 9, 198, 76, 181,
-			77, 48, 84, 137, 20, 9, 198, 45, 37, 75, 44, 84, 137, 20, 12, 201, 28, 84, 141, 4, 226, 83, 80, 146, 192, 20, 11, 67, 20, 192,
-			78, 36, 55, 35, 50, 0, 21, 8, 197, 45, 84, 129, 57, 48, 20, 0, 15, 204, 81, 32, 78, 76, 194, 84, 80, 84, 129, 80, 147, 206,
-			20, 15, 204, 36, 225, 140, 20, 180, 201, 8, 147, 9, 80, 85, 0, 20, 12, 201, 80, 82, 206, 60, 180, 129, 80, 148, 203, 20, 13, 202,
-			52, 81, 137, 77, 67, 198, 20, 194, 83, 44, 20, 12, 201, 33, 81, 213, 20, 227, 212, 80, 148, 203, 20, 0, 24, 73, 44, 243, 134, 37,
-			35, 65, 56, 65, 82, 49, 114, 50, 83, 36, 34, 65, 6, 110, 50, 72, 108, 0, 10, 67, 36, 65, 84, 37, 72, 6, 36, 0, 12, 201,
-			48, 82, 211, 36, 176, 76, 37, 49, 82, 20, 12, 201, 4, 178, 204, 36, 208, 84, 37, 49, 82, 20, 14, 203, 44, 243, 147, 64, 148, 129,
-			80, 244, 137, 76, 176, 20, 14, 203, 20, 180, 193, 52, 147, 129, 80, 244, 137, 76, 176, 20, 14, 203, 12, 149, 137, 48, 148, 193, 80, 244,
-			137, 76, 176, 20, 9, 198, 5, 53, 5, 56, 148, 203, 20, 10, 199, 5, 84, 208, 36, 50, 85, 52, 20, 0, 9, 198, 72, 80, 76, 37,
-			53, 0, 20, 9, 198, 17, 80, 76, 37, 53, 0, 20, 9, 198, 16, 83, 148, 37, 53, 0, 20, 9, 198, 12, 19, 80, 37, 53, 0, 20,
-			9, 198, 60, 181, 18, 60, 161, 82, 20, 9, 198, 37, 35, 206, 37, 49, 82, 20, 9, 198, 36, 226, 204, 36, 225, 82, 20, 9, 198, 36,
-			226, 193, 77, 49, 82, 20, 7, 196, 53, 83, 1, 80, 20, 0, 9, 198, 21, 85, 1, 56, 20, 201, 20, 9, 198, 64, 84, 137, 24, 84,
-			137, 20, 0, 15, 204, 20, 180, 201, 77, 65, 78, 80, 144, 76, 37, 53, 0, 20, 12, 201, 52, 225, 77, 61, 65, 75, 56, 148, 203, 20,
-			9, 198, 16, 148, 203, 60, 98, 76, 20, 9, 198, 16, 144, 75, 60, 224, 76, 20, 13, 4, 95, 7, 18, 22, 35, 49, 89, 6, 35, 68,
-			0, 0, 6, 195, 76, 244, 192, 17, 30, 75, 9, 33, 65, 44, 64, 78, 12, 84, 142, 21, 48, 71, 34, 109, 37, 81, 6, 72, 35, 12,
-			50, 89, 114, 20, 50, 13, 89, 0, 10, 199, 44, 83, 79, 80, 18, 211, 36, 20, 12, 201, 77, 147, 132, 36, 176, 76, 37, 53, 0, 20,
-			12, 201, 52, 21, 5, 72, 144, 76, 37, 53, 0, 20, 12, 201, 36, 212, 5, 72, 144, 76, 37, 53, 0, 20, 12, 201, 21, 52, 5, 72,
-			19, 148, 37, 53, 0, 20, 12, 201, 24, 19, 73, 48, 144, 82, 37, 49, 82, 20, 10, 199, 52, 243, 135, 60, 195, 201, 16, 20, 10, 135,
-			16, 18, 195, 166, 12, 1, 20, 20, 0, 9, 198, 72, 81, 149, 76, 147, 206, 20, 9, 198, 16, 85, 143, 80, 147, 206, 20, 7, 196, 65,
-			84, 133, 72, 20, 11, 200, 65, 35, 214, 20, 226, 69, 57, 48, 20, 11, 200, 44, 243, 150, 20, 226, 69, 57, 48, 20, 11, 200, 36, 225,
-			210, 20, 66, 69, 57, 48, 20, 0, 9, 198, 24, 147, 15, 48, 241, 201, 20, 8, 197, 44, 21, 9, 60, 224, 20, 8, 197, 44, 244, 132,
-			20, 192, 20, 8, 197, 8, 244, 132, 20, 192, 20, 12, 201, 65, 35, 198, 21, 52, 201, 60, 224, 76, 20, 0, 15, 204, 36, 229, 5, 48,
-			193, 75, 81, 80, 76, 37, 53, 0, 20, 9, 198, 44, 244, 21, 48, 84, 128, 20, 9, 198, 5, 81, 9, 80, 84, 128, 20, 9, 198, 44,
-			242, 203, 60, 194, 84, 20, 0, 10, 199, 81, 148, 9, 24, 144, 197, 72, 20, 10, 199, 64, 243, 5, 52, 148, 197, 72, 20, 10, 199, 56,
-			245, 9, 24, 144, 197, 72, 20, 10, 199, 52, 244, 129, 48, 148, 197, 72, 20, 10, 199, 44, 243, 80, 48, 144, 197, 72, 20, 10, 199, 44,
-			19, 129, 48, 148, 197, 72, 20, 10, 199, 33, 83, 65, 56, 148, 197, 72, 20, 10, 199, 24, 19, 129, 80, 148, 197, 72, 20, 10, 199, 16,
-			83, 129, 81, 84, 133, 72, 20, 10, 199, 8, 83, 133, 16, 144, 197, 72, 20, 10, 199, 8, 19, 129, 48, 148, 197, 72, 20, 10, 199, 44,
-			243, 80, 60, 225, 78, 80, 20, 10, 199, 20, 180, 208, 60, 225, 78, 80, 20, 10, 199, 16, 148, 208, 60, 225, 78, 80, 20, 0, 11, 200,
-			85, 53, 82, 64, 21, 9, 60, 224, 20, 11, 200, 72, 84, 5, 80, 149, 9, 60, 224, 20, 11, 200, 72, 84, 1, 72, 21, 9, 60, 224,
-			20, 11, 200, 40, 243, 137, 76, 21, 9, 60, 224, 20, 11, 200, 36, 229, 15, 56, 21, 9, 60, 224, 20, 11, 200, 36, 225, 9, 44, 21,
-			9, 60, 224, 20, 11, 200, 24, 81, 5, 72, 21, 9, 60, 224, 20, 11, 200, 5, 69, 18, 4, 181, 9, 60, 224, 20, 11, 200, 4, 195,
-			15, 44, 21, 9, 60, 224, 20, 9, 198, 4, 67, 208, 80, 147, 206, 20, 11, 200, 4, 67, 143, 80, 21, 9, 60, 224, 20, 11, 200, 4,
-			64, 80, 80, 21, 9, 60, 224, 20, 18, 207, 20, 180, 212, 72, 20, 1, 72, 192, 77, 20, 229, 1, 72, 148, 203, 20, 7, 196, 49, 148,
-			137, 44, 20, 13, 138, 11, 15, 18, 19, 195, 184, 18, 9, 1, 14, 20, 9, 198, 77, 69, 68, 20, 229, 0, 20, 7, 196, 53, 85, 1,
-			8, 20, 0, 12, 201, 56, 243, 69, 56, 179, 1, 81, 84, 128, 20, 12, 201, 24, 195, 211, 45, 83, 1, 81, 84, 128, 20, 9, 198, 16,
-			21, 1, 48, 241, 201, 20, 9, 198, 24, 192, 78, 44, 84, 133, 20, 9, 198, 33, 148, 15, 80, 84, 197, 20, 8, 197, 32, 83, 12, 20,
-			224, 20, 9, 198, 72, 83, 148, 72, 144, 197, 20, 9, 198, 52, 243, 148, 72, 144, 197, 20, 8, 197, 56, 85, 82, 4, 192, 20, 0, 28,
-			74, 9, 33, 65, 44, 64, 78, 12, 84, 142, 20, 71, 34, 109, 37, 81, 6, 72, 35, 12, 50, 89, 114, 20, 50, 13, 0, 11, 200, 44,
-			21, 15, 16, 244, 203, 61, 0, 20, 11, 200, 28, 20, 212, 72, 244, 203, 61, 0, 20, 13, 202, 76, 176, 78, 16, 147, 129, 88, 148, 197,
-			72, 20, 13, 202, 65, 35, 194, 48, 83, 65, 80, 148, 197, 72, 20, 13, 202, 24, 146, 212, 36, 243, 129, 48, 148, 197, 72, 20, 13, 202,
-			12, 243, 148, 4, 147, 133, 72, 148, 197, 72, 20, 13, 202, 80, 84, 141, 60, 70, 78, 4, 210, 83, 44, 20, 0, 10, 199, 80, 84, 141,
-			37, 53, 15, 72, 20, 14, 203, 36, 229, 5, 73, 1, 76, 48, 21, 9, 60, 224, 20, 14, 203, 36, 65, 78, 80, 145, 137, 44, 21, 9,
-			60, 224, 20, 14, 203, 20, 180, 212, 72, 20, 15, 48, 21, 9, 60, 224, 20, 14, 203, 12, 83, 148, 72, 19, 9, 76, 21, 9, 60, 224,
-			20, 12, 201, 5, 81, 205, 20, 229, 1, 80, 147, 206, 20, 14, 203, 4, 67, 73, 56, 148, 212, 72, 21, 9, 60, 224, 20, 10, 199, 80,
-			19, 154, 4, 226, 83, 44, 20, 9, 198, 80, 19, 65, 72, 148, 203, 20, 10, 199, 77, 148, 212, 60, 194, 83, 44, 20, 9, 198, 45, 35,
-			193, 80, 148, 203, 20, 10, 199, 32, 20, 141, 60, 226, 83, 44, 20, 9, 198, 25, 85, 21, 72, 148, 203, 20, 9, 198, 24, 243, 133, 80,
-			148, 203, 20, 9, 198, 4, 115, 129, 80, 148, 203, 20, 10, 199, 16, 149, 133, 72, 113, 78, 80, 20, 12, 201, 77, 80, 132, 60, 210, 78,
-			4, 229, 0, 20, 10, 199, 56, 81, 204, 36, 113, 65, 8, 20, 12, 71, 77, 64, 84, 20, 209, 78, 80, 21, 0, 10, 0, 11, 200, 72,
-			85, 143, 49, 85, 9, 60, 224, 20, 11, 200, 72, 84, 207, 49, 85, 9, 60, 224, 20, 11, 200, 60, 178, 213, 64, 21, 9, 60, 224, 20,
-			11, 200, 56, 21, 137, 28, 21, 9, 60, 224, 20, 11, 200, 52, 241, 5, 72, 21, 9, 60, 224, 20, 11, 200, 45, 96, 68, 72, 21, 9,
-			60, 224, 20, 11, 200, 44, 20, 212, 72, 21, 9, 60, 224, 20, 11, 200, 36, 227, 143, 88, 21, 9, 60, 224, 20, 11, 200, 16, 85, 15,
-			56, 21, 9, 60, 224, 20, 11, 200, 16, 82, 207, 72, 21, 9, 60, 224, 20, 11, 200, 5, 85, 15, 52, 21, 9, 60, 224, 20, 11, 200,
-			5, 4, 1, 72, 149, 9, 60, 224, 20, 11, 200, 4, 227, 143, 80, 21, 9, 60, 224, 20, 11, 200, 4, 33, 9, 44, 21, 9, 60, 224,
-			20, 0, 8, 197, 80, 19, 201, 77, 64, 20, 8, 197, 52, 243, 137, 77, 64, 20, 8, 197, 8, 147, 208, 5, 64, 20, 0, 9, 198, 24,
-			147, 15, 48, 241, 192, 20, 12, 201, 80, 83, 5, 44, 147, 133, 80, 148, 203, 20, 12, 201, 56, 81, 5, 73, 48, 75, 76, 148, 203, 20,
-			12, 201, 36, 225, 15, 44, 147, 133, 76, 148, 203, 20, 15, 140, 12, 195, 184, 7, 19, 20, 195, 184, 18, 9, 1, 14, 20, 9, 198, 72,
-			21, 9, 60, 224, 76, 20, 9, 198, 24, 244, 140, 4, 65, 64, 20, 0, 10, 199, 76, 18, 203, 5, 35, 211, 20, 20, 10, 199, 88, 147,
-			204, 36, 226, 83, 80, 20, 10, 199, 80, 84, 146, 61, 34, 83, 80, 20, 10, 199, 77, 147, 66, 60, 194, 83, 80, 20, 10, 199, 76, 240,
-			201, 4, 194, 83, 80, 20, 10, 199, 76, 163, 198, 20, 194, 83, 80, 20, 10, 199, 52, 245, 9, 60, 226, 83, 80, 20, 10, 199, 24, 244,
-			141, 4, 194, 83, 80, 20, 10, 199, 24, 85, 9, 12, 130, 83, 80, 20, 10, 199, 16, 20, 151, 36, 226, 83, 80, 20, 10, 199, 4, 181,
-			9, 60, 226, 83, 80, 20, 10, 199, 4, 36, 213, 72, 66, 83, 80, 20, 14, 203, 64, 243, 25, 52, 84, 137, 76, 21, 9, 60, 224, 20,
-			9, 198, 84, 112, 78, 16, 148, 203, 20, 9, 198, 81, 83, 133, 76, 148, 203, 20, 9, 198, 76, 21, 25, 72, 148, 203, 20, 9, 198, 52,
-			245, 9, 88, 148, 203, 20, 9, 198, 32, 243, 69, 72, 148, 203, 20, 9, 198, 20, 212, 9, 72, 148, 203, 20, 9, 198, 5, 52, 217, 72,
-			148, 203, 20, 9, 198, 4, 181, 9, 88, 148, 203, 20, 10, 199, 16, 149, 133, 72, 113, 78, 76, 20, 12, 71, 76, 178, 78, 32, 80, 68,
-			76, 21, 0, 10, 13, 4, 95, 4, 9, 1, 6, 39, 65, 55, 116, 72, 0, 0, 11, 200, 64, 83, 147, 36, 243, 137, 77, 64, 20, 11,
-			200, 44, 21, 84, 36, 243, 137, 77, 64, 20, 7, 196, 16, 82, 83, 80, 20, 14, 139, 8, 195, 165, 14, 4, 20, 5, 18, 12, 9, 7,
-			20, 11, 200, 76, 82, 212, 21, 34, 75, 21, 32, 20, 11, 200, 72, 243, 65, 57, 66, 75, 21, 32, 20, 11, 200, 56, 85, 82, 61, 66,
-			75, 21, 32, 20, 11, 200, 48, 241, 201, 77, 66, 75, 21, 32, 20, 11, 200, 20, 179, 5, 45, 66, 75, 21, 32, 20, 11, 200, 17, 148,
-			198, 5, 66, 75, 21, 32, 20, 11, 200, 16, 145, 1, 45, 66, 75, 21, 32, 20, 9, 198, 32, 244, 148, 84, 192, 78, 21, 0, 12, 201,
-			60, 212, 203, 72, 149, 133, 48, 145, 192, 20, 12, 201, 60, 212, 203, 36, 101, 5, 48, 145, 192, 20, 12, 201, 44, 19, 77, 21, 32, 84,
-			48, 145, 192, 20, 12, 201, 29, 32, 78, 28, 149, 133, 48, 145, 192, 20, 12, 201, 28, 83, 139, 20, 225, 5, 48, 145, 192, 20, 12, 201,
-			24, 244, 150, 20, 229, 5, 48, 145, 192, 20, 12, 201, 24, 244, 149, 17, 49, 69, 48, 145, 192, 20, 12, 201, 24, 244, 139, 5, 53, 5,
-			48, 145, 192, 20, 12, 201, 8, 241, 211, 80, 21, 133, 48, 145, 192, 20, 8, 197, 61, 34, 69, 57, 64, 20, 9, 198, 76, 16, 143, 80,
-			17, 197, 20, 0, 11, 136, 195, 166, 11, 22, 1, 20, 15, 18, 20, 9, 198, 44, 21, 1, 48, 241, 192, 20, 9, 198, 16, 21, 1, 48,
-			241, 192, 20, 13, 202, 36, 225, 9, 88, 145, 21, 4, 194, 83, 80, 20, 13, 202, 36, 212, 18, 21, 52, 201, 60, 226, 83, 80, 20, 9,
-			198, 16, 80, 201, 8, 83, 0, 20, 12, 201, 45, 35, 206, 60, 209, 84, 72, 148, 203, 20, 12, 201, 44, 244, 21, 48, 21, 15, 72, 148,
-			203, 20, 12, 201, 28, 84, 141, 4, 226, 83, 80, 148, 203, 20, 12, 201, 16, 81, 137, 56, 149, 15, 72, 148, 203, 20, 12, 201, 4, 225,
-			197, 49, 48, 75, 76, 148, 203, 20, 18, 70, 28, 83, 9, 56, 65, 64, 81, 36, 55, 6, 36, 50, 72, 13, 0, 20, 9, 198, 16, 144,
-			71, 60, 224, 76, 20, 9, 198, 64, 193, 74, 4, 65, 64, 20, 11, 70, 60, 97, 140, 36, 225, 64, 21, 0, 10, 0, 10, 199, 4, 229,
-			9, 8, 147, 211, 20, 20, 14, 203, 20, 180, 208, 72, 84, 211, 36, 243, 137, 77, 64, 20, 10, 199, 20, 180, 207, 72, 50, 83, 80, 20,
-			10, 199, 24, 192, 84, 84, 193, 78, 76, 20, 13, 138, 2, 12, 195, 184, 4, 1, 7, 20, 9, 7, 20, 0, 11, 200, 72, 84, 208, 37,
-			32, 84, 61, 32, 20, 11, 200, 45, 83, 20, 37, 96, 84, 61, 32, 20, 15, 204, 28, 84, 212, 4, 197, 16, 77, 146, 207, 48, 241, 192,
-			20, 11, 200, 4, 224, 66, 5, 5, 9, 77, 64, 20, 7, 196, 52, 84, 207, 56, 20, 9, 198, 72, 85, 137, 76, 147, 206, 20, 9, 198,
-			16, 80, 201, 76, 147, 206, 20, 7, 196, 45, 84, 133, 72, 20, 14, 139, 20, 22, 9, 22, 12, 18, 195, 165, 4, 9, 7, 20, 11, 200,
-			76, 83, 73, 61, 66, 75, 21, 32, 20, 11, 200, 76, 83, 65, 57, 66, 75, 21, 32, 20, 11, 200, 5, 67, 1, 57, 66, 75, 21, 32,
-			20, 11, 200, 4, 115, 143, 77, 66, 75, 21, 32, 20, 11, 200, 76, 244, 132, 36, 225, 82, 21, 64, 20, 11, 200, 72, 85, 1, 72, 65,
-			82, 21, 64, 20, 11, 200, 45, 33, 78, 20, 193, 82, 21, 64, 20, 11, 200, 24, 16, 207, 56, 225, 82, 21, 64, 20, 11, 200, 24, 192,
-			77, 8, 246, 65, 57, 64, 20, 0, 9, 198, 77, 68, 129, 80, 81, 201, 20, 12, 201, 77, 80, 147, 80, 19, 148, 36, 83, 0, 20, 8,
-			197, 72, 20, 197, 72, 80, 20, 8, 197, 33, 84, 197, 72, 80, 20, 8, 197, 8, 20, 197, 72, 80, 20, 15, 204, 77, 68, 149, 45, 69,
-			82, 4, 194, 83, 80, 148, 203, 20, 8, 197, 64, 20, 133, 76, 80, 20, 8, 197, 9, 83, 9, 52, 144, 20, 9, 198, 52, 148, 207, 29,
-			147, 137, 20, 8, 197, 28, 20, 129, 28, 80, 20, 0, 9, 198, 24, 83, 73, 56, 148, 212, 20, 9, 198, 20, 212, 9, 72, 148, 212, 20,
-			9, 198, 4, 197, 18, 84, 148, 212, 20, 9, 198, 4, 181, 9, 88, 148, 212, 20, 9, 198, 44, 147, 133, 80, 146, 192, 20, 9, 198, 77,
-			83, 20, 4, 224, 84, 20, 9, 198, 44, 244, 146, 20, 192, 84, 20, 9, 198, 52, 148, 212, 72, 19, 0, 20, 0, 10, 199, 88, 19, 15,
-			72, 148, 197, 72, 20, 10, 199, 80, 83, 5, 88, 148, 197, 72, 20, 10, 199, 72, 80, 83, 77, 84, 133, 72, 20, 10, 199, 64, 243, 1,
-			72, 148, 197, 72, 20, 10, 199, 52, 241, 9, 24, 144, 197, 72, 20, 10, 199, 48, 21, 9, 56, 148, 197, 72, 20, 10, 199, 44, 241, 9,
-			24, 144, 197, 72, 20, 10, 199, 21, 81, 143, 72, 148, 197, 72, 20, 10, 199, 4, 211, 210, 80, 148, 197, 72, 20, 9, 198, 44, 244, 148,
-			20, 194, 71, 20, 9, 198, 4, 197, 143, 72, 194, 71, 20, 9, 198, 4, 117, 5, 72, 194, 71, 20, 9, 198, 4, 100, 201, 56, 66, 71,
-			20, 14, 203, 44, 243, 135, 21, 53, 9, 60, 225, 82, 21, 64, 20, 0, 11, 200, 52, 85, 5, 61, 35, 204, 60, 112, 20, 11, 200, 8,
-			83, 133, 16, 144, 197, 72, 80, 68, 7, 196, 25, 85, 15, 56, 20, 9, 198, 56, 245, 129, 80, 147, 206, 20, 7, 196, 17, 84, 5, 72,
-			20, 11, 200, 64, 243, 25, 56, 84, 201, 76, 176, 20, 11, 200, 52, 147, 1, 56, 84, 201, 76, 176, 20, 11, 200, 52, 83, 1, 56, 84,
-			201, 76, 176, 20, 11, 200, 20, 180, 207, 80, 84, 137, 76, 176, 20, 11, 200, 8, 19, 19, 81, 148, 137, 76, 176, 20, 14, 68, 28, 19,
-			73, 56, 81, 110, 65, 6, 109, 68, 0, 20, 11, 200, 76, 19, 135, 21, 34, 78, 16, 80, 20, 11, 200, 64, 20, 212, 61, 34, 78, 16,
-			80, 20, 11, 200, 44, 82, 147, 21, 34, 78, 16, 80, 20, 15, 204, 44, 19, 77, 21, 34, 5, 73, 33, 73, 56, 65, 64, 20, 9, 68,
-			5, 4, 12, 20, 21, 0, 10, 0, 9, 198, 21, 2, 83, 44, 244, 0, 20, 12, 201, 60, 36, 203, 85, 32, 78, 80, 148, 212, 20, 12,
-			201, 5, 96, 78, 80, 112, 82, 16, 148, 212, 20, 12, 201, 61, 4, 15, 76, 149, 9, 60, 225, 76, 20, 14, 139, 8, 195, 166, 13, 15,
-			7, 12, 15, 2, 9, 14, 20, 11, 136, 195, 166, 19, 20, 5, 20, 9, 11, 20, 8, 197, 73, 80, 146, 36, 176, 20, 8, 197, 20, 208,
-			140, 20, 208, 20, 0, 9, 198, 64, 19, 133, 48, 148, 212, 20, 9, 198, 28, 21, 76, 48, 148, 212, 20, 9, 198, 24, 147, 129, 48, 148,
-			212, 20, 9, 198, 5, 33, 197, 48, 148, 212, 20, 12, 201, 8, 80, 82, 8, 82, 132, 20, 194, 71, 67, 14, 204, 60, 227, 205, 5, 67,
-			208, 60, 145, 84, 36, 179, 206, 6, 195, 33, 84, 137, 20, 12, 201, 45, 84, 134, 101, 36, 212, 20, 194, 71, 20, 12, 201, 24, 244, 150,
-			20, 180, 204, 20, 194, 71, 20, 12, 201, 8, 80, 82, 8, 82, 132, 20, 194, 71, 20, 9, 198, 72, 85, 15, 72, 146, 192, 20, 9, 198,
-			52, 245, 15, 72, 146, 192, 20, 0, 12, 201, 8, 83, 133, 24, 144, 197, 72, 85, 0, 68, 12, 201, 44, 243, 147, 84, 197, 1, 80, 147,
-			206, 20, 12, 201, 36, 225, 9, 76, 180, 133, 80, 147, 206, 20, 12, 201, 36, 212, 12, 4, 229, 1, 80, 147, 206, 20, 12, 201, 5, 84,
-			203, 84, 197, 1, 80, 147, 206, 20, 10, 199, 76, 82, 214, 20, 228, 197, 72, 20, 10, 199, 52, 20, 212, 85, 32, 133, 72, 20, 14, 203,
-			65, 54, 75, 60, 19, 129, 49, 148, 197, 72, 80, 20, 14, 203, 77, 84, 5, 72, 83, 12, 37, 5, 9, 76, 176, 20, 9, 198, 64, 243,
-			5, 52, 148, 203, 20, 9, 198, 56, 245, 15, 72, 148, 203, 20, 9, 198, 56, 19, 73, 8, 148, 203, 20, 9, 198, 5, 53, 5, 72, 148,
-			203, 20, 9, 198, 5, 37, 5, 76, 148, 203, 20, 10, 199, 44, 20, 5, 48, 192, 78, 36, 20, 14, 203, 44, 243, 134, 37, 35, 65, 56,
-			66, 78, 16, 80, 20, 12, 137, 18, 21, 13, 195, 166, 14, 9, 5, 14, 20, 12, 201, 44, 243, 80, 48, 144, 197, 72, 85, 0, 20, 12,
-			201, 8, 83, 133, 24, 144, 197, 72, 85, 0, 20, 0, 11, 200, 80, 242, 211, 36, 179, 204, 60, 112, 20, 9, 198, 76, 80, 197, 72, 225,
-			82, 20, 9, 198, 72, 85, 1, 8, 193, 82, 20, 9, 198, 44, 19, 85, 24, 193, 82, 20, 11, 200, 64, 243, 25, 12, 83, 148, 72, 144,
-			20, 11, 200, 25, 38, 71, 80, 17, 212, 36, 112, 20, 11, 200, 80, 241, 207, 48, 84, 201, 76, 176, 20, 11, 200, 4, 229, 5, 64, 83,
-			132, 36, 80, 20, 9, 198, 56, 17, 148, 4, 194, 78, 20, 11, 200, 80, 161, 78, 21, 34, 78, 16, 80, 20, 11, 200, 77, 98, 71, 21,
-			34, 78, 16, 80, 20, 11, 200, 36, 225, 129, 57, 66, 78, 16, 80, 20, 11, 200, 20, 196, 203, 21, 34, 78, 16, 80, 20, 11, 200, 16,
-			19, 147, 21, 34, 78, 16, 80, 20, 19, 70, 24, 19, 11, 60, 225, 82, 83, 110, 55, 49, 39, 50, 6, 36, 34, 0, 20, 11, 200, 76,
-			84, 150, 37, 68, 137, 12, 80, 20, 7, 196, 8, 84, 193, 80, 20, 11, 200, 25, 38, 71, 80, 17, 212, 36, 112, 20, 7, 196, 88, 20,
-			193, 48, 20, 7, 196, 56, 20, 193, 48, 20, 11, 200, 64, 84, 147, 36, 99, 1, 28, 80, 20, 0, 12, 201, 44, 243, 77, 4, 225, 9,
-			80, 148, 212, 20, 12, 201, 37, 51, 204, 5, 66, 79, 56, 148, 212, 20, 12, 201, 52, 225, 77, 61, 65, 75, 56, 146, 192, 20, 0, 19,
-			3, 19, 195, 165, 89, 114, 15, 89, 36, 50, 47, 0, 81, 115, 101, 110, 116, 32, 17, 3, 19, 195, 165, 89, 114, 15, 107, 35, 34, 0,
-			81, 104, 97, 114, 32, 27, 3, 19, 195, 165, 89, 6, 113, 15, 65, 6, 113, 89, 6, 37, 13, 0, 82, 109, 195, 165, 32, 115, 105, 103,
-			101, 32, 17, 3, 19, 195, 165, 89, 114, 15, 65, 6, 113, 0, 81, 109, 195, 165, 32, 20, 3, 19, 195, 165, 89, 114, 15, 84, 6, 109,
-			114, 0, 81, 118, 195, 166, 114, 101, 32, 22, 3, 19, 195, 165, 89, 114, 15, 55, 6, 109, 68, 108, 0, 81, 108, 195, 166, 110, 103, 101,
-			32, 18, 3, 19, 195, 165, 89, 114, 15, 84, 6, 112, 34, 0, 81, 118, 97, 114, 32, 21, 3, 19, 195, 165, 89, 114, 15, 107, 6, 114,
-			57, 47, 0, 81, 104, 195, 184, 106, 116, 32, 18, 3, 19, 195, 165, 89, 114, 15, 84, 6, 36, 55, 0, 81, 118, 105, 108, 32, 21, 3,
-			19, 195, 165, 89, 114, 15, 55, 6, 112, 68, 47, 0, 81, 108, 97, 110, 103, 116, 32, 19, 3, 19, 195, 165, 89, 114, 15, 81, 6, 118,
-			34, 0, 81, 103, 195, 184, 114, 32, 16, 3, 19, 195, 165, 89, 114, 15, 6, 109, 34, 0, 81, 101, 114, 32, 21, 3, 19, 195, 165, 89,
-			114, 15, 65, 6, 35, 68, 108, 0, 81, 109, 97, 110, 103, 101, 32, 23, 3, 19, 195, 165, 89, 114, 15, 65, 6, 35, 12, 57, 13, 86,
-			0, 81, 109, 101, 103, 101, 116, 32, 12, 201, 56, 21, 137, 28, 21, 15, 72, 148, 203, 20, 12, 201, 52, 85, 1, 48, 197, 82, 28, 148,
-			203, 20, 12, 201, 52, 20, 212, 60, 67, 206, 80, 148, 203, 20, 12, 201, 36, 212, 5, 72, 21, 9, 88, 148, 203, 20, 12, 201, 24, 244,
-			130, 73, 145, 5, 72, 148, 203, 20, 13, 202, 12, 148, 212, 21, 32, 201, 20, 228, 197, 72, 20, 15, 204, 16, 83, 73, 56, 84, 129, 48,
-			148, 197, 72, 85, 0, 20, 9, 198, 56, 21, 9, 60, 224, 76, 20, 0, 12, 201, 56, 21, 9, 60, 224, 76, 37, 53, 0, 20, 12, 201,
-			44, 244, 146, 21, 52, 15, 56, 65, 82, 20, 12, 201, 44, 243, 131, 21, 52, 201, 60, 225, 82, 20, 12, 201, 44, 243, 77, 37, 52, 201,
-			60, 225, 82, 20, 9, 198, 85, 48, 133, 44, 148, 203, 20, 9, 198, 72, 85, 15, 72, 148, 203, 20, 9, 198, 52, 245, 15, 72, 148, 203,
-			20, 9, 198, 44, 244, 193, 44, 148, 203, 20, 9, 198, 12, 243, 79, 72, 148, 203, 20, 10, 199, 44, 243, 150, 21, 37, 9, 80, 20, 9,
-			198, 65, 35, 211, 60, 66, 75, 20, 10, 199, 72, 85, 137, 76, 244, 129, 80, 20, 11, 136, 2, 18, 195, 166, 11, 1, 7, 5, 20, 0,
-			15, 204, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 212, 20, 9, 198, 80, 244, 144, 20, 65, 82, 20, 9, 198, 72, 85, 1, 72,
-			65, 82, 20, 9, 198, 48, 146, 214, 36, 65, 82, 20, 9, 198, 44, 244, 146, 20, 193, 82, 20, 9, 198, 44, 19, 142, 20, 193, 82, 20,
-			9, 198, 20, 180, 208, 20, 65, 82, 20, 9, 198, 4, 197, 5, 72, 225, 82, 20, 7, 196, 5, 4, 137, 48, 20, 7, 196, 20, 180, 197,
-			52, 20, 9, 68, 12, 245, 67, 32, 21, 0, 10, 0, 13, 69, 12, 19, 1, 37, 48, 49, 35, 55, 6, 109, 0, 0, 9, 198, 80, 20,
-			148, 20, 193, 84, 20, 12, 201, 60, 36, 203, 85, 32, 78, 80, 148, 203, 20, 12, 201, 13, 149, 15, 64, 192, 83, 52, 148, 203, 20, 12,
-			201, 4, 178, 213, 76, 21, 9, 88, 148, 203, 20, 0, 12, 201, 72, 21, 9, 60, 224, 76, 37, 53, 0, 20, 12, 201, 64, 84, 134, 20,
-			181, 9, 60, 225, 82, 20, 12, 201, 44, 243, 134, 20, 181, 9, 60, 225, 82, 20, 10, 199, 64, 19, 12, 4, 66, 85, 52, 20, 10, 199,
-			28, 84, 149, 56, 66, 85, 52, 20, 10, 199, 21, 2, 84, 4, 98, 85, 52, 20, 10, 199, 4, 197, 77, 36, 226, 85, 52, 20, 10, 199,
-			20, 212, 9, 72, 148, 205, 20, 20, 10, 199, 4, 181, 9, 88, 148, 205, 20, 20, 10, 199, 16, 84, 21, 80, 84, 133, 80, 20, 10, 199,
-			44, 243, 132, 20, 228, 193, 80, 20, 0, 9, 198, 28, 20, 142, 37, 51, 206, 20, 9, 198, 76, 19, 139, 80, 147, 206, 20, 9, 198, 24,
-			193, 75, 76, 147, 206, 20, 7, 196, 61, 5, 5, 72, 20, 9, 198, 52, 145, 210, 4, 229, 0, 20, 0, 8, 197, 25, 34, 86, 60, 192,
-			20, 9, 198, 44, 243, 84, 21, 52, 197, 20, 8, 197, 25, 37, 71, 4, 192, 20, 8, 197, 88, 20, 137, 4, 32, 20, 0, 13, 202, 65,
-			54, 75, 60, 96, 82, 52, 18, 213, 52, 20, 9, 198, 20, 180, 208, 20, 66, 84, 20, 0, 17, 67, 33, 96, 68, 84, 110, 15, 89, 114,
-			0, 14, 81, 115, 195, 165, 32, 6, 195, 20, 64, 128, 17, 10, 199, 48, 243, 66, 5, 33, 5, 72, 20, 10, 199, 36, 229, 5, 72, 17,
-			197, 72, 20, 10, 199, 8, 243, 66, 5, 33, 5, 72, 20, 10, 199, 49, 85, 135, 21, 36, 137, 28, 20, 10, 199, 44, 243, 148, 36, 225,
-			78, 80, 20, 10, 199, 44, 243, 147, 84, 193, 78, 80, 20, 6, 195, 25, 32, 64, 76, 0, 11, 200, 4, 68, 207, 73, 5, 9, 60, 224,
-			20, 7, 196, 53, 85, 5, 72, 20, 9, 198, 65, 35, 198, 37, 64, 66, 20, 9, 198, 16, 83, 79, 57, 64, 66, 20, 0, 8, 197, 72,
-			81, 201, 60, 224, 20, 8, 197, 80, 84, 146, 36, 224, 20, 8, 197, 8, 83, 154, 36, 224, 20, 8, 197, 44, 21, 83, 4, 192, 20, 0,
-			11, 200, 9, 35, 206, 44, 244, 203, 61, 0, 20, 13, 202, 72, 85, 18, 4, 228, 205, 37, 69, 5, 72, 20, 13, 202, 64, 84, 147, 64,
-			82, 212, 37, 100, 137, 28, 20, 0, 12, 201, 44, 243, 150, 21, 36, 193, 80, 147, 206, 20, 12, 201, 44, 243, 147, 64, 148, 129, 80, 147,
-			206, 20, 12, 201, 20, 180, 211, 64, 148, 129, 80, 147, 206, 20, 12, 201, 20, 180, 208, 48, 244, 129, 80, 147, 206, 20, 12, 201, 12, 149,
-			137, 48, 148, 193, 80, 147, 206, 20, 12, 201, 5, 85, 15, 72, 148, 193, 80, 147, 206, 20, 12, 201, 4, 48, 197, 48, 84, 129, 80, 147,
-			206, 20, 10, 199, 21, 50, 193, 52, 245, 5, 72, 20, 10, 199, 20, 180, 203, 49, 81, 5, 72, 20, 9, 198, 72, 84, 21, 8, 194, 75,
-			20, 13, 138, 16, 195, 166, 4, 1, 7, 15, 7, 9, 11, 20, 9, 198, 53, 82, 203, 20, 34, 75, 20, 10, 199, 77, 68, 137, 56, 113,
-			78, 80, 20, 10, 199, 44, 243, 147, 84, 209, 78, 80, 20, 0, 11, 200, 77, 80, 147, 84, 213, 9, 60, 224, 20, 11, 200, 64, 84, 131,
-			21, 5, 9, 60, 224, 20, 11, 200, 44, 243, 131, 21, 5, 9, 60, 224, 20, 11, 200, 20, 180, 197, 45, 85, 9, 60, 224, 20, 11, 200,
-			84, 197, 18, 4, 208, 82, 36, 224, 20, 0, 13, 69, 77, 65, 71, 21, 64, 89, 47, 36, 13, 72, 0, 8, 197, 4, 224, 70, 61, 32,
-			20, 14, 139, 6, 195, 184, 4, 5, 18, 1, 20, 9, 15, 14, 20, 12, 201, 52, 81, 9, 44, 19, 69, 57, 65, 76, 20, 12, 201, 36,
-			228, 212, 73, 83, 69, 57, 65, 76, 20, 9, 198, 28, 19, 15, 64, 17, 5, 20, 0, 9, 198, 25, 34, 83, 85, 33, 64, 20, 9, 198,
-			88, 149, 18, 36, 225, 64, 20, 9, 198, 48, 145, 82, 36, 225, 192, 20, 9, 198, 65, 83, 19, 21, 33, 64, 20, 9, 198, 25, 34, 83,
-			21, 33, 64, 20, 9, 198, 21, 64, 71, 21, 33, 64, 20, 9, 198, 17, 32, 71, 21, 33, 64, 20, 9, 198, 88, 83, 133, 16, 145, 192,
-			20, 12, 4, 95, 35, 51, 50, 71, 55, 35, 50, 49, 0, 0, 33, 67, 76, 19, 20, 89, 6, 114, 55, 47, 15, 55, 109, 57, 49, 15,
-			89, 6, 37, 47, 37, 0, 82, 108, 97, 107, 101, 32, 99, 105, 116, 121, 32, 10, 199, 52, 20, 207, 12, 130, 83, 80, 20, 10, 199, 52,
-			20, 203, 36, 226, 83, 80, 20, 10, 199, 12, 243, 21, 52, 226, 83, 80, 20, 14, 203, 4, 229, 9, 44, 243, 131, 21, 5, 9, 60, 224,
-			20, 10, 199, 77, 68, 137, 56, 113, 78, 76, 20, 0, 11, 200, 36, 228, 212, 73, 82, 212, 61, 32, 20, 7, 196, 36, 66, 79, 52, 20,
-			7, 196, 28, 194, 79, 52, 20, 17, 142, 19, 20, 195, 166, 18, 15, 16, 5, 18, 1, 20, 9, 15, 14, 20, 17, 142, 11, 15, 14, 6,
-			195, 184, 4, 5, 18, 1, 20, 9, 15, 14, 20, 11, 200, 65, 34, 86, 36, 193, 71, 21, 32, 20, 11, 200, 64, 192, 84, 60, 226, 75,
-			21, 32, 20, 11, 200, 32, 84, 129, 48, 66, 75, 21, 32, 20, 9, 198, 16, 82, 211, 81, 34, 78, 20, 9, 198, 64, 18, 201, 77, 64,
-			78, 20, 9, 198, 80, 20, 140, 5, 64, 78, 21, 9, 198, 52, 243, 69, 57, 64, 78, 21, 0, 12, 201, 8, 18, 212, 21, 34, 79, 48,
-			241, 192, 20, 12, 201, 88, 243, 20, 36, 113, 82, 36, 225, 192, 20, 12, 201, 84, 68, 129, 56, 113, 82, 36, 225, 192, 20, 12, 201, 84,
-			68, 12, 4, 49, 82, 36, 225, 192, 20, 12, 201, 81, 32, 70, 36, 177, 82, 36, 225, 192, 20, 12, 201, 77, 80, 140, 36, 209, 82, 36,
-			225, 192, 20, 12, 201, 65, 80, 140, 36, 49, 82, 36, 225, 192, 20, 12, 201, 65, 35, 212, 20, 113, 82, 36, 225, 192, 20, 12, 201, 44,
-			243, 147, 84, 209, 82, 36, 225, 192, 20, 12, 201, 36, 228, 208, 36, 49, 82, 36, 225, 192, 20, 12, 201, 17, 84, 12, 36, 49, 82, 36,
-			225, 192, 20, 12, 201, 16, 84, 12, 4, 49, 82, 36, 225, 192, 20, 12, 201, 16, 83, 65, 76, 177, 82, 36, 225, 192, 20, 12, 201, 16,
-			83, 65, 72, 177, 82, 36, 225, 192, 20, 12, 201, 5, 52, 207, 12, 145, 82, 36, 225, 192, 20, 12, 201, 5, 4, 12, 36, 49, 82, 36,
-			225, 192, 20, 8, 197, 72, 19, 135, 21, 32, 20, 8, 197, 48, 243, 135, 21, 32, 20, 12, 201, 80, 147, 18, 20, 115, 133, 48, 145, 192,
-			20, 8, 197, 65, 34, 77, 5, 64, 20, 8, 197, 48, 147, 133, 5, 32, 20, 8, 197, 40, 17, 213, 5, 32, 20, 8, 197, 48, 147, 133,
-			5, 32, 20, 12, 201, 20, 180, 203, 72, 83, 69, 57, 64, 76, 20, 10, 69, 72, 19, 135, 21, 32, 21, 0, 10, 0, 9, 198, 64, 84,
-			137, 76, 179, 208, 20, 9, 198, 32, 244, 143, 76, 179, 208, 20, 9, 198, 44, 244, 9, 21, 33, 64, 20, 18, 70, 9, 37, 89, 21, 33,
-			64, 71, 34, 116, 57, 6, 109, 12, 34, 0, 20, 9, 198, 5, 36, 197, 56, 19, 0, 20, 8, 67, 49, 82, 197, 21, 0, 10, 0, 10,
-			199, 64, 84, 211, 36, 210, 83, 80, 20, 10, 199, 52, 243, 129, 72, 178, 83, 80, 20, 10, 199, 24, 19, 1, 56, 114, 83, 80, 20, 10,
-			199, 8, 19, 132, 4, 114, 83, 80, 20, 9, 198, 81, 149, 129, 29, 66, 71, 20, 9, 198, 56, 20, 129, 29, 66, 71, 20, 9, 198, 48,
-			149, 129, 29, 66, 71, 20, 6, 195, 21, 64, 84, 20, 9, 198, 81, 149, 129, 29, 66, 71, 20, 9, 198, 56, 20, 129, 29, 66, 71, 20,
-			9, 198, 48, 149, 129, 29, 66, 71, 20, 0, 11, 200, 81, 34, 85, 52, 96, 84, 61, 32, 20, 11, 200, 72, 81, 143, 72, 208, 84, 61,
-			32, 20, 11, 200, 16, 82, 204, 4, 208, 84, 61, 32, 20, 15, 204, 72, 17, 9, 60, 66, 82, 36, 113, 82, 36, 225, 192, 20, 15, 204,
-			65, 35, 199, 56, 244, 212, 36, 49, 82, 36, 225, 192, 20, 15, 204, 16, 144, 71, 56, 244, 212, 36, 49, 82, 36, 225, 192, 20, 11, 200,
-			72, 84, 212, 72, 147, 135, 21, 32, 20, 7, 196, 52, 148, 197, 72, 20, 11, 200, 4, 68, 212, 72, 147, 135, 21, 32, 20, 12, 137, 16,
-			195, 166, 4, 9, 1, 20, 18, 9, 20, 9, 198, 81, 32, 83, 76, 21, 0, 20, 0, 9, 198, 60, 229, 15, 48, 241, 201, 20, 12, 201,
-			24, 245, 15, 44, 244, 9, 21, 33, 64, 20, 24, 73, 8, 243, 130, 60, 227, 137, 21, 33, 64, 71, 114, 68, 71, 114, 68, 57, 6, 109,
-			12, 34, 0, 20, 8, 197, 48, 144, 133, 72, 144, 20, 9, 198, 72, 83, 9, 45, 98, 69, 20, 9, 198, 76, 147, 5, 57, 66, 69, 20,
-			9, 198, 28, 195, 211, 5, 34, 69, 20, 8, 197, 29, 84, 129, 52, 144, 20, 0, 9, 198, 9, 81, 4, 32, 148, 212, 20, 9, 198, 88,
-			19, 11, 21, 34, 64, 20, 9, 198, 29, 34, 83, 21, 34, 64, 20, 9, 198, 9, 145, 199, 21, 34, 64, 20, 9, 198, 44, 20, 146, 36,
-			243, 0, 20, 9, 198, 85, 67, 208, 37, 50, 192, 20, 9, 198, 32, 18, 84, 37, 50, 192, 20, 9, 198, 21, 35, 212, 37, 50, 192, 20,
-			9, 198, 77, 147, 80, 5, 66, 64, 20, 9, 198, 24, 20, 133, 77, 66, 64, 20, 9, 198, 17, 147, 129, 77, 66, 64, 20, 9, 198, 16,
-			83, 69, 57, 66, 64, 20, 0, 10, 199, 88, 84, 137, 24, 144, 197, 72, 20, 10, 199, 56, 22, 137, 24, 144, 197, 72, 20, 10, 199, 44,
-			243, 77, 37, 69, 5, 72, 20, 10, 199, 20, 180, 208, 48, 144, 197, 72, 20, 10, 199, 4, 229, 9, 44, 148, 197, 72, 20, 6, 195, 61,
-			130, 68, 20, 16, 141, 18, 195, 184, 14, 20, 7, 5, 14, 15, 7, 18, 1, 6, 20, 0, 10, 135, 2, 9, 12, 12, 195, 184, 19, 20,
-			9, 134, 1, 11, 20, 195, 184, 18, 20, 12, 201, 8, 18, 212, 21, 34, 79, 48, 241, 201, 20, 11, 200, 24, 244, 147, 88, 20, 140, 36,
-			112, 20, 11, 200, 24, 244, 139, 48, 20, 140, 36, 112, 20, 11, 200, 4, 195, 79, 16, 84, 140, 36, 112, 20, 9, 198, 36, 225, 9, 88,
-			145, 0, 20, 12, 201, 77, 84, 16, 61, 50, 84, 61, 34, 69, 20, 11, 200, 72, 81, 133, 72, 83, 132, 84, 208, 20, 11, 200, 77, 65,
-			82, 20, 241, 143, 56, 144, 20, 11, 200, 89, 83, 11, 4, 226, 83, 52, 80, 20, 11, 200, 52, 244, 141, 60, 226, 83, 52, 80, 20, 11,
-			200, 52, 241, 5, 72, 226, 83, 52, 80, 20, 11, 200, 44, 243, 77, 84, 226, 83, 52, 80, 20, 11, 200, 32, 148, 212, 61, 34, 83, 52,
-			80, 20, 11, 200, 16, 241, 205, 5, 66, 83, 52, 80, 20, 11, 200, 16, 84, 208, 61, 66, 83, 52, 80, 20, 11, 200, 41, 81, 76, 76,
-			210, 78, 16, 80, 20, 9, 198, 16, 83, 9, 44, 21, 0, 20, 0, 8, 197, 8, 147, 208, 76, 144, 20, 12, 201, 65, 35, 208, 4, 112,
-			78, 16, 148, 212, 20, 12, 201, 5, 4, 15, 76, 149, 9, 60, 225, 76, 20, 12, 201, 77, 147, 133, 72, 113, 84, 37, 50, 192, 20, 12,
-			201, 53, 84, 201, 44, 19, 148, 37, 50, 192, 20, 12, 201, 52, 244, 203, 61, 98, 84, 37, 50, 192, 20, 12, 201, 45, 38, 83, 80, 19,
-			12, 37, 50, 192, 20, 12, 201, 44, 244, 205, 60, 195, 199, 37, 50, 192, 20, 12, 201, 44, 148, 143, 52, 19, 148, 37, 50, 192, 20, 12,
-			201, 44, 21, 1, 65, 83, 20, 37, 50, 192, 20, 12, 201, 32, 148, 212, 60, 195, 199, 37, 50, 192, 20, 12, 201, 32, 83, 73, 13, 146,
-			204, 37, 50, 192, 20, 9, 198, 56, 84, 20, 84, 226, 69, 20, 9, 134, 21, 18, 195, 166, 13, 9, 20, 10, 69, 76, 147, 135, 48, 80,
-			21, 0, 10, 24, 4, 95, 57, 88, 15, 107, 110, 55, 83, 6, 109, 65, 89, 36, 50, 89, 47, 116, 84, 13, 50, 13, 0, 0, 25, 67,
-			32, 243, 5, 107, 6, 39, 40, 55, 37, 50, 58, 4, 115, 50, 0, 82, 105, 110, 32, 111, 110, 101, 32, 11, 136, 19, 21, 6, 6, 12,
-			195, 184, 18, 20, 9, 198, 56, 21, 21, 72, 148, 212, 20, 9, 198, 52, 244, 129, 48, 148, 212, 20, 9, 198, 25, 85, 21, 72, 148, 212,
-			20, 16, 141, 9, 13, 16, 18, 195, 166, 7, 14, 5, 18, 9, 14, 7, 20, 13, 202, 44, 243, 12, 20, 181, 9, 88, 148, 197, 72, 20,
-			13, 202, 20, 180, 203, 60, 211, 85, 56, 144, 197, 72, 20, 13, 202, 20, 180, 197, 53, 3, 9, 24, 144, 197, 72, 20, 12, 201, 61, 97,
-			82, 88, 147, 132, 20, 194, 71, 20, 12, 201, 28, 83, 142, 20, 212, 201, 29, 66, 71, 20, 9, 198, 104, 18, 82, 37, 50, 192, 20, 9,
-			198, 76, 244, 130, 37, 50, 192, 20, 9, 198, 76, 84, 130, 37, 50, 192, 20, 9, 198, 44, 243, 66, 36, 224, 84, 20, 9, 198, 44, 19,
-			132, 36, 64, 84, 20, 9, 198, 36, 229, 5, 72, 224, 84, 20, 0, 12, 137, 12, 195, 184, 7, 19, 20, 195, 184, 18, 20, 12, 137, 4,
-			9, 18, 5, 11, 20, 195, 184, 18, 20, 10, 199, 44, 243, 147, 21, 37, 133, 72, 20, 9, 198, 28, 83, 133, 80, 148, 203, 20, 9, 198,
-			24, 19, 129, 80, 148, 203, 20, 14, 203, 64, 84, 147, 64, 82, 212, 37, 98, 83, 52, 80, 20, 10, 199, 8, 84, 135, 20, 228, 197, 72,
-			20, 0, 9, 198, 5, 4, 18, 21, 69, 82, 20, 13, 138, 11, 15, 18, 18, 5, 11, 20, 195, 184, 18, 20, 13, 138, 11, 15, 12, 12,
-			5, 11, 20, 195, 184, 18, 20, 11, 200, 77, 65, 82, 20, 241, 210, 4, 208, 20, 11, 200, 76, 82, 83, 52, 241, 210, 4, 208, 20, 11,
-			200, 61, 33, 193, 56, 145, 210, 4, 208, 20, 11, 200, 44, 20, 132, 36, 241, 210, 4, 208, 20, 9, 198, 77, 80, 147, 84, 209, 82, 20,
-			9, 198, 48, 19, 69, 57, 65, 82, 20, 9, 198, 44, 243, 66, 36, 225, 82, 20, 9, 198, 44, 19, 132, 36, 65, 82, 20, 9, 198, 36,
-			229, 5, 72, 225, 82, 20, 9, 198, 16, 83, 69, 57, 65, 82, 20, 9, 198, 8, 192, 78, 12, 129, 82, 20, 11, 200, 81, 35, 211, 45,
-			147, 4, 36, 112, 20, 11, 200, 44, 243, 4, 76, 147, 132, 36, 112, 20, 11, 200, 16, 81, 137, 56, 84, 140, 36, 112, 20, 11, 200, 16,
-			241, 5, 44, 17, 143, 56, 144, 20, 11, 200, 44, 84, 148, 20, 210, 78, 16, 80, 20, 6, 195, 21, 66, 75, 20, 9, 198, 64, 243, 77,
-			21, 32, 78, 20, 0, 12, 201, 84, 226, 86, 21, 36, 193, 48, 148, 212, 20, 12, 201, 72, 17, 9, 60, 99, 206, 37, 50, 192, 20, 12,
-			201, 65, 54, 75, 36, 21, 18, 37, 50, 192, 20, 12, 201, 64, 19, 148, 60, 210, 77, 37, 50, 192, 20, 12, 201, 52, 85, 1, 52, 244,
-			134, 37, 50, 192, 20, 12, 201, 29, 32, 70, 60, 195, 199, 37, 50, 192, 20, 12, 201, 28, 83, 77, 60, 195, 199, 37, 50, 192, 20, 12,
-			201, 20, 193, 75, 81, 35, 206, 37, 50, 192, 20, 12, 201, 16, 85, 5, 45, 66, 86, 37, 50, 192, 20, 12, 201, 12, 19, 9, 24, 244,
-			142, 37, 50, 192, 20, 12, 201, 8, 81, 18, 4, 113, 82, 37, 50, 192, 20, 12, 201, 5, 81, 9, 60, 195, 199, 37, 50, 192, 20, 12,
-			201, 4, 114, 84, 5, 67, 210, 37, 50, 192, 20, 12, 201, 52, 84, 137, 80, 242, 210, 5, 66, 64, 20, 12, 201, 5, 34, 83, 80, 242,
-			210, 5, 66, 64, 20, 12, 201, 81, 32, 78, 77, 3, 1, 57, 64, 84, 20, 0, 9, 198, 76, 84, 150, 37, 69, 84, 20, 12, 201, 44,
-			243, 150, 84, 196, 201, 88, 148, 203, 20, 12, 201, 33, 148, 15, 44, 243, 132, 72, 148, 203, 20, 0, 17, 142, 21, 4, 13, 1, 14, 195,
-			184, 22, 18, 5, 18, 9, 14, 7, 20, 12, 201, 81, 32, 78, 77, 3, 1, 57, 65, 82, 20, 9, 198, 77, 68, 143, 24, 148, 203, 20,
-			9, 198, 5, 68, 143, 24, 148, 203, 20, 9, 198, 5, 32, 77, 4, 148, 203, 20, 10, 199, 77, 83, 132, 9, 147, 137, 80, 20, 9, 198,
-			76, 83, 65, 57, 66, 75, 20, 10, 199, 77, 147, 129, 28, 241, 193, 48, 20, 0, 9, 198, 45, 84, 150, 5, 69, 82, 20, 9, 198, 81,
-			33, 80, 4, 225, 82, 20, 9, 198, 65, 35, 198, 37, 65, 82, 20, 9, 198, 64, 84, 131, 37, 1, 82, 20, 9, 198, 52, 245, 9, 60,
-			225, 82, 20, 9, 198, 36, 212, 15, 73, 65, 82, 20, 9, 198, 29, 32, 84, 36, 225, 82, 20, 9, 198, 21, 50, 207, 73, 65, 82, 20,
-			9, 198, 16, 81, 210, 4, 65, 82, 20, 9, 198, 4, 36, 212, 36, 225, 82, 20, 15, 204, 88, 84, 147, 36, 98, 75, 5, 67, 210, 37,
-			50, 192, 20, 15, 204, 36, 212, 18, 61, 98, 83, 5, 67, 210, 37, 50, 192, 20, 7, 196, 65, 84, 9, 48, 20, 10, 67, 33, 98, 83,
-			84, 36, 89, 0, 76, 0, 9, 198, 4, 227, 210, 20, 180, 201, 20, 12, 201, 52, 20, 203, 84, 194, 78, 37, 65, 84, 20, 0, 12, 201,
-			81, 35, 212, 76, 178, 83, 80, 148, 203, 20, 12, 201, 24, 147, 8, 5, 35, 79, 56, 148, 203, 20, 12, 201, 21, 67, 143, 12, 83, 148,
-			72, 148, 203, 20, 13, 138, 11, 195, 166, 6, 5, 18, 5, 18, 5, 20, 20, 0, 12, 137, 16, 18, 195, 166, 6, 5, 18, 5, 18, 20,
-			10, 199, 56, 21, 21, 72, 148, 205, 20, 20, 10, 199, 25, 85, 21, 72, 148, 205, 20, 20, 10, 199, 16, 144, 76, 20, 181, 1, 48, 20,
-			0, 7, 196, 5, 5, 5, 72, 20, 0, 12, 201, 72, 83, 148, 4, 34, 76, 37, 65, 84, 20, 9, 198, 56, 240, 140, 21, 52, 197, 20,
-			8, 197, 5, 82, 211, 36, 224, 20, 16, 141, 11, 15, 14, 6, 195, 184, 4, 5, 18, 5, 18, 5, 20, 20, 12, 201, 36, 228, 212, 73,
-			83, 69, 57, 64, 76, 20, 0, 13, 202, 44, 243, 12, 20, 114, 65, 48, 149, 5, 80, 20, 14, 139, 195, 184, 11, 15, 14, 15, 13, 5,
-			20, 18, 9, 20, 13, 202, 4, 224, 76, 24, 16, 133, 80, 148, 205, 20, 20, 13, 202, 44, 19, 3, 37, 83, 78, 37, 68, 129, 80, 20,
-			13, 202, 12, 19, 3, 37, 83, 78, 37, 68, 129, 80, 20, 0, 10, 199, 77, 84, 18, 20, 208, 84, 36, 20, 0, 9, 198, 4, 65, 9,
-			80, 147, 206, 20, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 65, 84, 20, 11, 200, 4, 225, 1, 49, 84, 201, 20, 224, 20,
-			11, 200, 72, 84, 21, 8, 194, 75, 4, 224, 20, 7, 196, 9, 85, 1, 56, 21, 9, 198, 16, 148, 208, 85, 64, 66, 20, 0, 14, 139,
-			16, 18, 195, 166, 4, 9, 11, 20, 9, 15, 14, 20, 8, 197, 52, 83, 148, 60, 192, 20, 8, 197, 24, 244, 211, 36, 192, 20, 8, 197,
-			76, 160, 75, 4, 192, 20, 8, 197, 24, 148, 203, 4, 192, 20, 8, 197, 61, 1, 82, 4, 32, 20, 0, 9, 198, 56, 243, 142, 21, 66,
-			84, 20, 0, 9, 198, 12, 19, 129, 16, 148, 203, 20, 9, 198, 5, 50, 65, 80, 148, 203, 20, 10, 199, 12, 128, 78, 28, 80, 78, 80,
-			20, 0, 27, 68, 36, 66, 79, 80, 37, 72, 37, 6, 39, 15, 89, 110, 84, 6, 112, 68, 0, 81, 115, 97, 118, 97, 110, 116, 32, 11,
-			200, 12, 84, 133, 52, 243, 137, 20, 192, 20, 0, 8, 197, 12, 19, 80, 21, 32, 20, 8, 197, 80, 84, 141, 37, 64, 20, 0, 18, 70,
-			40, 19, 66, 61, 33, 64, 72, 57, 35, 65, 71, 39, 51, 6, 109, 0, 9, 198, 64, 20, 211, 21, 33, 64, 20, 9, 198, 28, 195, 211,
-			21, 33, 64, 20, 9, 198, 25, 32, 83, 21, 33, 64, 20, 12, 201, 36, 212, 5, 72, 21, 15, 72, 148, 203, 20, 12, 201, 44, 243, 66,
-			36, 224, 84, 61, 34, 75, 20, 9, 198, 12, 85, 1, 57, 64, 76, 20, 13, 202, 12, 128, 84, 20, 21, 66, 72, 144, 78, 80, 20, 0,
-			9, 198, 72, 243, 65, 57, 66, 75, 20, 9, 198, 48, 241, 201, 77, 66, 75, 20, 0, 11, 200, 44, 243, 138, 84, 226, 212, 85, 32, 20,
-			11, 200, 36, 229, 133, 77, 66, 84, 85, 32, 20, 11, 200, 4, 181, 80, 84, 226, 212, 85, 32, 20, 9, 198, 16, 147, 73, 77, 51, 210,
-			20, 11, 200, 52, 19, 20, 72, 18, 212, 21, 32, 20, 11, 200, 24, 18, 211, 36, 210, 76, 21, 32, 20, 9, 198, 72, 244, 205, 5, 34,
-			78, 20, 7, 196, 16, 148, 211, 20, 76, 0, 8, 197, 88, 21, 20, 21, 32, 20, 12, 201, 77, 68, 129, 8, 17, 19, 21, 33, 64, 20,
-			8, 197, 76, 176, 76, 21, 32, 20, 12, 201, 64, 20, 129, 25, 32, 83, 21, 33, 64, 20, 12, 201, 52, 85, 1, 77, 64, 83, 21, 33,
-			64, 20, 8, 197, 45, 33, 80, 21, 32, 20, 8, 197, 28, 245, 84, 21, 32, 20, 12, 201, 60, 208, 68, 72, 84, 211, 21, 33, 64, 20,
-			8, 197, 52, 20, 141, 37, 64, 20, 13, 138, 3, 195, 166, 19, 1, 18, 9, 19, 13, 5, 20, 9, 198, 21, 50, 193, 64, 17, 5, 20,
-			0, 18, 70, 29, 37, 89, 21, 33, 64, 81, 34, 116, 57, 6, 109, 12, 34, 0, 20, 9, 198, 52, 243, 143, 64, 243, 0, 20, 0, 9,
-			134, 22, 5, 14, 195, 184, 19, 20, 9, 198, 64, 147, 129, 29, 66, 71, 20, 15, 140, 5, 16, 9, 11, 21, 18, 195, 166, 9, 19, 13,
-			5, 20, 9, 198, 64, 147, 129, 29, 66, 71, 20, 0, 11, 200, 16, 83, 79, 45, 32, 84, 85, 32, 20, 10, 135, 15, 13, 9, 14, 195,
-			184, 19, 20, 7, 196, 4, 226, 79, 56, 20, 11, 200, 48, 244, 135, 56, 85, 20, 21, 32, 20, 11, 200, 44, 243, 80, 48, 85, 20, 21,
-			32, 20, 11, 200, 16, 148, 211, 36, 210, 76, 21, 32, 20, 9, 198, 24, 197, 79, 72, 145, 0, 20, 13, 138, 16, 1, 12, 195, 166, 15,
-			7, 18, 1, 6, 20, 9, 198, 16, 82, 193, 56, 21, 0, 20, 9, 198, 36, 229, 133, 57, 64, 82, 20, 0, 9, 198, 45, 35, 205, 61,
-			51, 205, 20, 12, 201, 65, 35, 199, 72, 19, 77, 21, 33, 64, 20, 8, 197, 72, 20, 197, 72, 144, 20, 16, 69, 64, 243, 9, 76, 176,
-			48, 39, 55, 6, 37, 89, 49, 0, 20, 9, 198, 88, 19, 11, 101, 34, 69, 20, 9, 198, 61, 32, 84, 61, 34, 69, 20, 9, 198, 80,
-			83, 5, 64, 21, 9, 20, 8, 197, 72, 84, 12, 36, 176, 20, 8, 197, 76, 80, 78, 12, 80, 20, 0, 12, 137, 13, 15, 14, 19, 20,
-			18, 195, 184, 19, 20, 9, 198, 80, 244, 211, 21, 34, 64, 20, 9, 198, 72, 20, 19, 21, 34, 64, 20, 9, 198, 49, 84, 203, 21, 34,
-			64, 20, 9, 198, 48, 241, 19, 21, 34, 64, 20, 9, 198, 48, 20, 19, 21, 34, 64, 20, 9, 198, 25, 84, 203, 21, 34, 64, 20, 9,
-			198, 12, 21, 83, 21, 34, 64, 20, 9, 198, 44, 243, 148, 72, 243, 0, 20, 9, 198, 76, 21, 68, 37, 50, 192, 20, 9, 198, 64, 241,
-			84, 37, 50, 192, 20, 9, 198, 65, 35, 198, 21, 66, 64, 20, 9, 198, 45, 96, 82, 80, 147, 0, 20, 9, 198, 64, 245, 5, 57, 64,
-			84, 20, 9, 198, 88, 17, 201, 56, 19, 0, 20, 9, 198, 72, 85, 137, 88, 19, 0, 20, 9, 198, 36, 195, 5, 28, 19, 0, 20, 0,
-			13, 138, 12, 9, 2, 9, 4, 9, 14, 195, 184, 19, 20, 13, 138, 6, 9, 12, 9, 19, 20, 18, 195, 184, 19, 20, 8, 133, 15, 4,
-			195, 184, 18, 20, 12, 137, 3, 8, 1, 21, 6, 6, 195, 184, 18, 20, 9, 198, 44, 149, 129, 29, 66, 71, 20, 10, 199, 44, 20, 141,
-			60, 148, 201, 56, 20, 10, 199, 4, 229, 9, 65, 148, 137, 56, 20, 10, 199, 4, 224, 84, 60, 194, 69, 56, 20, 9, 198, 44, 149, 129,
-			29, 66, 71, 20, 0, 13, 68, 56, 241, 204, 20, 50, 6, 39, 12, 14, 50, 0, 13, 138, 18, 195, 166, 19, 15, 14, 14, 195, 184, 18,
-			20, 9, 134, 11, 21, 12, 195, 184, 18, 20, 11, 200, 21, 97, 78, 81, 148, 140, 36, 112, 20, 11, 200, 80, 83, 203, 72, 21, 9, 76,
-			176, 20, 11, 200, 77, 147, 148, 4, 181, 9, 76, 176, 20, 11, 200, 64, 20, 129, 8, 243, 9, 76, 176, 20, 11, 200, 8, 147, 210, 101,
-			67, 73, 76, 176, 20, 12, 201, 60, 36, 197, 73, 96, 84, 61, 34, 69, 20, 11, 200, 45, 84, 129, 80, 244, 137, 84, 208, 20, 11, 200,
-			28, 195, 211, 76, 20, 137, 84, 208, 20, 9, 198, 44, 243, 15, 72, 149, 0, 20, 11, 200, 76, 243, 9, 65, 50, 83, 52, 80, 20, 11,
-			200, 72, 85, 77, 5, 66, 83, 52, 80, 20, 11, 200, 64, 84, 211, 36, 210, 83, 52, 80, 20, 11, 200, 52, 243, 143, 80, 82, 83, 52,
-			80, 20, 11, 200, 52, 243, 129, 72, 178, 83, 52, 80, 20, 11, 200, 45, 83, 20, 85, 34, 83, 52, 80, 20, 11, 200, 40, 84, 213, 37,
-			66, 83, 52, 80, 20, 11, 200, 16, 81, 129, 37, 66, 83, 52, 80, 20, 9, 198, 80, 83, 203, 72, 21, 0, 20, 9, 198, 16, 145, 206,
-			37, 64, 82, 20, 9, 198, 65, 35, 204, 21, 64, 82, 20, 0, 15, 140, 19, 11, 1, 18, 12, 1, 20, 9, 14, 195, 184, 19, 20, 8,
-			197, 24, 144, 146, 60, 208, 20, 12, 201, 80, 147, 79, 45, 32, 84, 37, 50, 192, 20, 12, 201, 80, 84, 129, 64, 85, 84, 37, 50, 192,
-			20, 12, 201, 77, 148, 212, 20, 208, 84, 37, 50, 192, 20, 12, 201, 72, 16, 149, 48, 148, 212, 37, 50, 192, 20, 12, 201, 61, 37, 15,
-			16, 243, 148, 37, 50, 192, 20, 12, 201, 57, 83, 73, 76, 208, 84, 37, 50, 192, 20, 12, 201, 52, 244, 134, 20, 208, 84, 37, 50, 192,
-			20, 12, 201, 44, 20, 137, 76, 208, 84, 37, 50, 192, 20, 12, 201, 29, 32, 86, 37, 65, 84, 37, 50, 192, 20, 12, 201, 24, 144, 133,
-			72, 244, 20, 37, 50, 192, 20, 12, 201, 20, 208, 140, 20, 208, 84, 37, 50, 192, 20, 12, 201, 16, 148, 12, 60, 208, 84, 37, 50, 192,
-			20, 12, 201, 5, 85, 15, 45, 32, 84, 37, 50, 192, 20, 12, 201, 5, 53, 9, 28, 208, 84, 37, 50, 192, 20, 12, 201, 4, 229, 9,
-			76, 84, 20, 37, 50, 192, 20, 12, 201, 4, 180, 201, 60, 208, 84, 37, 50, 192, 20, 12, 201, 4, 84, 143, 56, 21, 84, 37, 50, 192,
-			20, 9, 198, 52, 243, 69, 57, 69, 77, 20, 12, 201, 12, 83, 148, 72, 145, 149, 28, 19, 0, 20, 0, 12, 137, 13, 21, 19, 11, 21,
-			12, 195, 184, 19, 20, 11, 136, 13, 1, 18, 15, 4, 195, 184, 18, 20, 11, 136, 11, 18, 5, 1, 20, 195, 184, 18, 20, 11, 136, 4,
-			5, 11, 21, 16, 195, 184, 18, 20, 9, 198, 72, 243, 65, 56, 148, 212, 20, 9, 198, 76, 49, 78, 37, 50, 192, 20, 9, 198, 72, 243,
-			66, 37, 50, 192, 20, 9, 198, 37, 35, 206, 37, 50, 192, 20, 9, 198, 36, 176, 82, 37, 50, 192, 20, 9, 198, 5, 85, 5, 57, 66,
-			64, 20, 9, 198, 4, 211, 133, 77, 66, 64, 20, 9, 198, 72, 84, 197, 73, 96, 84, 20, 0, 12, 137, 19, 11, 21, 12, 16, 20, 195,
-			184, 18, 20, 12, 137, 19, 9, 7, 14, 1, 12, 195, 184, 18, 20, 12, 137, 14, 9, 22, 5, 12, 12, 195, 184, 18, 20, 12, 137, 4,
-			5, 20, 1, 3, 8, 195, 184, 18, 20, 10, 199, 65, 35, 204, 60, 225, 197, 72, 20, 10, 199, 24, 84, 141, 20, 229, 5, 72, 20, 10,
-			199, 45, 33, 80, 21, 35, 9, 28, 20, 10, 199, 4, 228, 214, 5, 35, 9, 28, 20, 14, 203, 44, 243, 147, 21, 37, 129, 80, 244, 137,
-			84, 208, 20, 10, 199, 76, 18, 210, 37, 53, 1, 56, 21, 0, 9, 198, 64, 20, 148, 37, 69, 82, 20, 9, 198, 16, 146, 212, 5, 69,
-			82, 20, 14, 139, 20, 21, 2, 5, 18, 11, 21, 12, 195, 184, 19, 20, 9, 198, 77, 81, 199, 21, 33, 82, 20, 9, 198, 76, 181, 76,
-			65, 65, 82, 20, 9, 198, 45, 83, 20, 37, 97, 82, 20, 9, 198, 36, 229, 133, 57, 65, 82, 20, 9, 198, 36, 225, 4, 5, 65, 82,
-			20, 9, 198, 32, 244, 208, 37, 65, 82, 20, 9, 198, 16, 84, 15, 73, 65, 82, 20, 9, 198, 5, 4, 18, 21, 65, 82, 20, 9, 198,
-			4, 36, 197, 57, 65, 82, 20, 11, 200, 76, 181, 82, 44, 17, 212, 36, 112, 20, 11, 200, 61, 34, 193, 56, 17, 212, 36, 112, 20, 11,
-			200, 56, 21, 142, 45, 83, 132, 36, 112, 20, 11, 200, 45, 32, 77, 64, 17, 212, 36, 112, 20, 11, 200, 44, 193, 74, 56, 211, 196, 36,
-			112, 20, 15, 204, 60, 227, 205, 5, 67, 208, 60, 145, 84, 37, 50, 192, 20, 11, 200, 48, 243, 66, 5, 33, 9, 76, 176, 20, 11, 200,
-			24, 243, 133, 52, 21, 9, 76, 176, 20, 11, 200, 20, 230, 153, 52, 21, 9, 76, 176, 20, 11, 200, 76, 83, 73, 56, 20, 137, 84, 208,
-			20, 11, 200, 76, 19, 129, 80, 244, 137, 84, 208, 20, 11, 200, 52, 244, 129, 80, 244, 137, 84, 208, 20, 7, 196, 24, 197, 65, 80, 20,
-			11, 200, 76, 181, 82, 44, 17, 212, 36, 112, 20, 11, 200, 45, 32, 77, 64, 17, 212, 36, 112, 20, 0, 14, 139, 18, 5, 11, 22, 9,
-			19, 9, 20, 195, 184, 18, 20, 14, 139, 16, 5, 18, 6, 15, 18, 1, 20, 195, 184, 18, 20, 14, 139, 14, 21, 13, 13, 5, 18, 1,
-			20, 195, 184, 18, 20, 14, 139, 9, 14, 6, 15, 18, 13, 1, 20, 195, 184, 18, 20, 14, 139, 1, 11, 11, 22, 9, 19, 9, 20, 195,
-			184, 18, 20, 14, 139, 16, 18, 195, 166, 20, 5, 14, 20, 9, 15, 14, 20, 12, 201, 80, 84, 146, 21, 53, 18, 37, 50, 192, 20, 12,
-			201, 76, 83, 22, 37, 35, 206, 37, 50, 192, 20, 12, 201, 65, 35, 214, 37, 51, 210, 37, 50, 192, 20, 12, 201, 52, 146, 210, 60, 99,
-			206, 37, 50, 192, 20, 12, 201, 44, 243, 131, 20, 229, 18, 37, 50, 192, 20, 12, 201, 28, 83, 195, 20, 229, 18, 37, 50, 192, 20, 12,
-			201, 16, 146, 212, 5, 67, 210, 37, 50, 192, 20, 0, 11, 136, 11, 22, 195, 166, 19, 20, 21, 18, 20, 15, 140, 19, 20, 5, 18, 5,
-			15, 20, 25, 16, 195, 184, 18, 20, 9, 198, 64, 245, 5, 57, 66, 76, 20, 12, 201, 24, 243, 11, 48, 244, 137, 77, 66, 75, 20, 9,
-			198, 80, 83, 80, 61, 32, 76, 20, 9, 198, 36, 229, 5, 73, 96, 76, 20, 0, 16, 141, 11, 15, 12, 12, 1, 2, 15, 18, 1, 20,
-			195, 184, 18, 20, 16, 141, 4, 5, 13, 15, 14, 19, 20, 18, 1, 20, 195, 184, 18, 20, 12, 201, 36, 225, 129, 57, 65, 82, 37, 53,
-			0, 20, 12, 201, 44, 243, 148, 36, 225, 197, 57, 65, 82, 20, 14, 203, 32, 84, 141, 4, 100, 143, 16, 149, 9, 76, 176, 20, 14, 203,
-			20, 180, 193, 52, 147, 129, 80, 244, 137, 84, 208, 20, 9, 198, 65, 35, 212, 21, 66, 75, 20, 0, 9, 198, 77, 68, 149, 45, 69, 82,
-			20, 9, 198, 76, 145, 206, 5, 69, 82, 20, 17, 142, 1, 11, 11, 15, 13, 16, 1, 7, 14, 1, 20, 195, 184, 18, 20, 9, 198, 72,
-			83, 79, 57, 65, 82, 20, 9, 198, 36, 229, 133, 73, 65, 82, 20, 9, 198, 28, 19, 15, 65, 1, 82, 20, 9, 198, 21, 96, 80, 61,
-			33, 82, 20, 9, 198, 16, 84, 18, 5, 97, 82, 20, 15, 204, 44, 243, 148, 72, 17, 9, 45, 67, 210, 37, 50, 192, 20, 15, 204, 32,
-			19, 12, 84, 50, 78, 5, 67, 210, 37, 50, 192, 20, 15, 204, 5, 33, 213, 52, 83, 148, 5, 67, 210, 37, 50, 192, 20, 9, 198, 24,
-			147, 9, 65, 2, 78, 20, 7, 196, 72, 246, 65, 48, 20, 0, 12, 201, 60, 97, 133, 57, 50, 86, 37, 65, 84, 20, 12, 201, 36, 229,
-			5, 57, 50, 86, 37, 65, 84, 20, 12, 201, 36, 225, 133, 72, 147, 210, 37, 65, 84, 20, 12, 201, 36, 212, 21, 49, 50, 86, 37, 65,
-			84, 20, 12, 201, 12, 148, 139, 84, 192, 82, 37, 65, 84, 20, 0, 9, 198, 36, 228, 212, 37, 69, 84, 20, 9, 198, 17, 80, 76, 37,
-			65, 84, 20, 9, 198, 36, 225, 129, 57, 66, 76, 20, 9, 198, 32, 244, 208, 37, 64, 76, 20, 0, 18, 67, 64, 112, 64, 48, 113, 15,
-			81, 51, 6, 113, 19, 50, 15, 110, 0, 25, 10, 199, 76, 243, 143, 72, 149, 5, 80, 20, 12, 201, 81, 84, 139, 52, 83, 137, 77, 64,
-			78, 21, 12, 201, 80, 17, 19, 40, 146, 201, 77, 64, 78, 21, 10, 199, 64, 145, 68, 21, 53, 1, 48, 20, 10, 199, 44, 243, 147, 60,
-			224, 78, 76, 20, 8, 67, 8, 32, 192, 21, 0, 10, 0, 11, 136, 3, 195, 184, 12, 9, 2, 1, 20, 20, 11, 136, 1, 4, 195, 166,
-			11, 22, 1, 20, 20, 9, 198, 16, 148, 203, 4, 229, 0, 20, 9, 198, 8, 18, 203, 4, 229, 0, 20, 9, 198, 72, 83, 65, 72, 176,
-			66, 20, 0, 11, 67, 92, 145, 78, 84, 6, 37, 12, 50, 0, 9, 198, 44, 243, 132, 100, 195, 205, 20, 12, 201, 88, 20, 137, 4, 34,
-			76, 37, 65, 84, 20, 12, 201, 80, 82, 206, 36, 176, 76, 37, 65, 84, 20, 12, 201, 72, 21, 9, 60, 224, 76, 37, 65, 84, 20, 12,
-			201, 64, 20, 129, 48, 193, 76, 37, 65, 84, 20, 12, 201, 45, 34, 77, 36, 224, 76, 37, 65, 84, 20, 12, 201, 21, 97, 78, 81, 80,
-			76, 37, 65, 84, 20, 8, 197, 44, 195, 210, 36, 64, 20, 8, 197, 80, 242, 211, 36, 224, 20, 9, 198, 20, 210, 78, 20, 224, 197, 20,
-			8, 197, 24, 85, 68, 4, 192, 20, 0, 9, 198, 21, 98, 68, 20, 228, 192, 20, 0, 10, 199, 76, 21, 9, 72, 146, 197, 72, 20, 10,
-			199, 72, 85, 15, 72, 146, 197, 72, 20, 10, 199, 5, 53, 5, 56, 146, 197, 72, 20, 10, 199, 76, 192, 86, 37, 53, 9, 44, 20, 10,
-			199, 33, 145, 18, 5, 83, 9, 44, 20, 10, 199, 61, 53, 9, 56, 66, 69, 56, 20, 10, 199, 9, 32, 83, 36, 194, 69, 56, 20, 10,
-			199, 44, 243, 147, 60, 224, 78, 80, 20, 8, 67, 12, 144, 64, 21, 0, 10, 0, 15, 204, 37, 36, 133, 88, 84, 147, 36, 34, 76, 37,
-			65, 84, 20, 15, 204, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 65, 84, 20, 11, 200, 4, 229, 9, 80, 242, 211, 36, 224, 20, 11,
-			200, 52, 18, 197, 16, 243, 137, 20, 224, 20, 9, 198, 21, 66, 79, 64, 145, 78, 20, 11, 200, 4, 33, 83, 76, 147, 137, 20, 224, 20,
-			9, 198, 20, 193, 77, 20, 229, 0, 20, 9, 198, 64, 20, 139, 4, 229, 0, 20, 9, 198, 56, 81, 207, 80, 144, 66, 20, 0, 7, 197,
-			64, 84, 146, 60, 224, 8, 197, 77, 83, 6, 36, 64, 20, 8, 197, 56, 19, 139, 36, 224, 20, 15, 69, 16, 84, 211, 36, 224, 72, 36,
-			89, 6, 109, 68, 0, 20, 9, 198, 4, 229, 9, 56, 243, 73, 20, 8, 197, 56, 21, 84, 36, 192, 20, 8, 197, 80, 243, 135, 4, 224,
-			20, 8, 197, 52, 19, 135, 4, 224, 21, 8, 197, 64, 244, 212, 4, 192, 20, 8, 197, 9, 37, 84, 4, 192, 20, 0, 26, 74, 77, 21,
-			65, 72, 81, 1, 56, 49, 82, 20, 89, 49, 58, 6, 36, 13, 72, 35, 12, 50, 89, 114, 108, 0, 15, 140, 16, 18, 195, 166, 16, 15,
-			19, 9, 20, 9, 15, 14, 20, 13, 202, 56, 85, 82, 5, 53, 5, 56, 146, 197, 72, 20, 0, 11, 136, 195, 184, 11, 15, 12, 15, 7,
-			9, 20, 10, 199, 28, 16, 129, 72, 66, 78, 20, 20, 10, 199, 76, 82, 213, 56, 65, 82, 20, 20, 10, 199, 72, 84, 18, 20, 210, 69,
-			72, 20, 10, 199, 64, 83, 132, 84, 193, 82, 20, 20, 10, 199, 44, 20, 197, 72, 225, 82, 20, 20, 10, 199, 21, 82, 193, 72, 148, 212,
-			36, 20, 14, 203, 81, 32, 78, 77, 54, 76, 88, 19, 137, 20, 224, 20, 14, 203, 81, 32, 78, 77, 50, 76, 88, 19, 137, 20, 224, 20,
-			10, 199, 65, 35, 196, 84, 49, 78, 80, 20, 12, 201, 44, 241, 70, 24, 144, 201, 20, 229, 0, 20, 12, 201, 29, 85, 133, 72, 225, 77,
-			20, 229, 0, 20, 10, 199, 60, 97, 137, 12, 144, 78, 80, 20, 10, 199, 36, 226, 149, 72, 144, 78, 80, 20, 0, 12, 201, 8, 80, 82,
-			8, 82, 132, 20, 196, 197, 67, 11, 200, 12, 21, 1, 48, 243, 137, 20, 224, 20, 0, 14, 139, 16, 18, 195, 166, 22, 5, 14, 20, 9,
-			15, 14, 20, 8, 197, 64, 20, 140, 21, 32, 20, 8, 197, 17, 80, 140, 21, 32, 20, 8, 197, 88, 148, 197, 57, 64, 20, 8, 197, 72,
-			81, 197, 57, 64, 20, 8, 197, 4, 48, 197, 57, 64, 20, 0, 13, 202, 61, 97, 82, 61, 33, 5, 57, 67, 9, 28, 20, 9, 198, 32,
-			244, 208, 36, 49, 64, 20, 9, 198, 4, 36, 197, 56, 49, 64, 20, 9, 198, 52, 17, 18, 36, 112, 76, 20, 9, 198, 44, 243, 12, 4,
-			113, 64, 20, 11, 70, 52, 84, 211, 4, 113, 64, 21, 0, 10, 0, 0, 11, 200, 52, 19, 149, 24, 18, 212, 85, 32, 20, 11, 200, 5,
-			34, 201, 80, 82, 212, 85, 32, 20, 11, 200, 4, 66, 149, 16, 19, 148, 85, 32, 20, 9, 198, 65, 35, 214, 37, 51, 210, 20, 11, 200,
-			72, 17, 9, 44, 19, 9, 77, 64, 20, 11, 200, 64, 243, 25, 28, 19, 73, 77, 64, 20, 11, 200, 64, 19, 70, 48, 85, 9, 77, 64,
-			20, 11, 200, 28, 83, 133, 72, 19, 9, 77, 64, 20, 11, 200, 21, 96, 78, 28, 83, 9, 77, 64, 20, 11, 200, 76, 81, 9, 52, 83,
-			148, 21, 32, 20, 11, 200, 65, 35, 214, 36, 19, 148, 21, 32, 20, 9, 198, 44, 195, 210, 4, 210, 78, 20, 9, 198, 76, 144, 201, 48,
-			144, 78, 20, 11, 200, 16, 81, 133, 57, 51, 210, 5, 64, 20, 11, 200, 12, 128, 77, 64, 147, 206, 5, 64, 20, 11, 200, 44, 243, 77,
-			4, 225, 1, 57, 64, 20, 0, 14, 69, 40, 19, 15, 85, 128, 89, 57, 110, 6, 55, 40, 0, 8, 197, 76, 243, 9, 77, 64, 20, 8,
-			197, 52, 241, 9, 77, 64, 20, 8, 197, 8, 21, 9, 77, 64, 20, 12, 201, 88, 83, 148, 36, 193, 82, 36, 225, 192, 20, 12, 201, 88,
-			16, 195, 36, 225, 82, 36, 225, 192, 20, 12, 201, 84, 68, 207, 73, 65, 82, 36, 225, 192, 20, 12, 201, 81, 33, 80, 4, 225, 82, 36,
-			225, 192, 20, 12, 201, 81, 32, 78, 12, 129, 82, 36, 225, 192, 20, 12, 201, 80, 244, 144, 20, 65, 82, 36, 225, 192, 20, 12, 201, 80,
-			83, 80, 21, 33, 82, 36, 225, 192, 20, 12, 201, 80, 19, 80, 60, 225, 82, 36, 225, 192, 20, 12, 201, 80, 16, 133, 48, 193, 82, 36,
-			225, 192, 20, 12, 201, 77, 147, 139, 61, 1, 82, 36, 225, 192, 20, 12, 201, 72, 85, 1, 72, 65, 82, 36, 225, 192, 20, 12, 201, 72,
-			82, 214, 37, 33, 82, 36, 225, 192, 20, 12, 201, 72, 81, 149, 56, 65, 82, 36, 225, 192, 20, 12, 201, 72, 21, 9, 60, 225, 82, 36,
-			225, 192, 20, 12, 201, 72, 19, 80, 60, 225, 82, 36, 225, 192, 20, 12, 201, 72, 17, 134, 36, 225, 82, 36, 225, 192, 20, 12, 201, 65,
-			35, 205, 61, 97, 82, 36, 225, 192, 20, 12, 201, 65, 35, 202, 36, 49, 82, 36, 225, 192, 20, 12, 201, 65, 35, 198, 4, 225, 82, 36,
-			225, 192, 20, 12, 201, 64, 83, 12, 21, 65, 82, 36, 225, 192, 20, 12, 201, 64, 19, 12, 21, 65, 82, 36, 225, 192, 20, 12, 201, 52,
-			245, 73, 48, 193, 82, 36, 225, 192, 20, 12, 201, 52, 245, 9, 60, 225, 82, 36, 225, 192, 20, 12, 201, 52, 243, 5, 77, 65, 82, 36,
-			225, 192, 20, 12, 201, 52, 241, 5, 48, 193, 82, 36, 225, 192, 20, 12, 201, 52, 20, 135, 36, 225, 82, 36, 225, 192, 20, 12, 201, 48,
-			146, 214, 36, 65, 82, 36, 225, 192, 20, 12, 201, 45, 85, 133, 73, 65, 82, 36, 225, 192, 20, 12, 201, 44, 243, 150, 60, 161, 82, 36,
-			225, 192, 20, 12, 201, 44, 243, 148, 85, 33, 82, 36, 225, 192, 20, 12, 201, 44, 243, 80, 60, 225, 82, 36, 225, 192, 20, 12, 201, 44,
-			243, 80, 36, 193, 82, 36, 225, 192, 20, 12, 201, 44, 243, 77, 5, 65, 82, 36, 225, 192, 20, 12, 201, 44, 242, 203, 21, 33, 82, 36,
-			225, 192, 20, 12, 201, 44, 19, 142, 20, 193, 82, 36, 225, 192, 20, 12, 201, 36, 229, 143, 49, 97, 82, 36, 225, 192, 20, 12, 201, 36,
-			229, 133, 77, 65, 82, 36, 225, 192, 20, 12, 201, 36, 229, 133, 73, 65, 82, 36, 225, 192, 20, 12, 201, 32, 20, 144, 84, 225, 82, 36,
-			225, 192, 20, 12, 201, 29, 32, 86, 37, 65, 82, 36, 225, 192, 20, 12, 201, 29, 32, 84, 36, 225, 82, 36, 225, 192, 20, 12, 201, 29,
-			32, 78, 84, 193, 82, 36, 225, 192, 20, 12, 201, 28, 19, 15, 65, 1, 82, 36, 225, 192, 20, 12, 201, 25, 37, 83, 81, 33, 82, 36,
-			225, 192, 20, 12, 201, 24, 244, 198, 5, 65, 82, 36, 225, 192, 20, 12, 201, 24, 244, 141, 84, 193, 82, 36, 225, 192, 20, 12, 201, 24,
-			244, 141, 5, 65, 82, 36, 225, 192, 20, 12, 201, 24, 18, 212, 85, 33, 82, 36, 225, 192, 20, 12, 201, 21, 128, 197, 73, 1, 82, 36,
-			225, 192, 20, 12, 201, 21, 96, 80, 61, 33, 82, 36, 225, 192, 20, 12, 201, 21, 50, 207, 73, 65, 82, 36, 225, 192, 20, 12, 201, 20,
-			208, 129, 48, 193, 82, 36, 225, 192, 20, 12, 201, 20, 180, 208, 20, 65, 82, 36, 225, 192, 20, 12, 201, 20, 180, 197, 45, 97, 82, 36,
-			225, 192, 20, 12, 201, 16, 85, 5, 45, 65, 82, 36, 225, 192, 20, 12, 201, 16, 85, 1, 48, 161, 82, 36, 225, 192, 20, 12, 201, 16,
-			84, 201, 28, 225, 82, 36, 225, 192, 20, 12, 201, 16, 84, 18, 5, 97, 82, 36, 225, 192, 20, 12, 201, 16, 83, 79, 57, 65, 82, 36,
-			225, 192, 20, 12, 201, 16, 82, 193, 57, 65, 82, 36, 225, 192, 20, 12, 201, 16, 81, 210, 4, 65, 82, 36, 225, 192, 20, 12, 201, 16,
-			81, 140, 61, 33, 82, 36, 225, 192, 20, 12, 201, 16, 19, 65, 76, 49, 82, 36, 225, 192, 20, 12, 201, 12, 83, 147, 85, 33, 82, 36,
-			225, 192, 20, 12, 201, 12, 83, 69, 57, 65, 82, 36, 225, 192, 20, 12, 201, 5, 69, 18, 5, 1, 82, 36, 225, 192, 20, 12, 201, 5,
-			69, 1, 12, 129, 82, 36, 225, 192, 20, 12, 201, 5, 52, 207, 73, 65, 82, 36, 225, 192, 20, 12, 201, 5, 4, 15, 73, 65, 82, 36,
-			225, 192, 20, 12, 201, 4, 227, 149, 48, 193, 82, 36, 225, 192, 20, 12, 201, 4, 227, 133, 45, 65, 82, 36, 225, 192, 20, 12, 201, 4,
-			197, 5, 72, 225, 82, 36, 225, 192, 20, 12, 201, 4, 181, 9, 60, 225, 82, 36, 225, 192, 20, 12, 201, 4, 113, 210, 20, 113, 82, 36,
-			225, 192, 20, 12, 201, 4, 68, 207, 72, 33, 82, 36, 225, 192, 20, 12, 201, 4, 48, 197, 65, 65, 82, 36, 225, 192, 20, 12, 201, 4,
-			36, 207, 49, 97, 82, 36, 225, 192, 20, 8, 197, 80, 245, 80, 21, 32, 20, 8, 197, 80, 83, 132, 21, 32, 20, 8, 197, 44, 16, 200,
-			21, 32, 20, 8, 197, 25, 83, 132, 21, 32, 20, 8, 197, 21, 35, 196, 21, 32, 20, 12, 201, 72, 84, 18, 21, 52, 193, 48, 145, 64,
-			20, 8, 197, 77, 83, 6, 37, 64, 20, 8, 197, 56, 149, 18, 37, 64, 20, 12, 201, 88, 81, 197, 80, 20, 137, 76, 209, 64, 20, 12,
-			201, 76, 82, 213, 48, 20, 137, 76, 209, 64, 20, 12, 201, 52, 147, 9, 80, 20, 137, 76, 209, 64, 20, 12, 201, 52, 85, 1, 8, 243,
-			9, 76, 209, 64, 20, 12, 201, 44, 243, 139, 72, 85, 9, 76, 209, 64, 20, 12, 201, 8, 243, 19, 40, 85, 137, 76, 209, 64, 20, 12,
-			201, 4, 36, 207, 49, 85, 9, 76, 209, 64, 20, 12, 201, 44, 243, 139, 85, 36, 133, 56, 49, 64, 20, 8, 197, 77, 2, 78, 5, 64,
-			20, 8, 197, 33, 145, 18, 5, 64, 20, 8, 197, 29, 32, 78, 5, 64, 20, 8, 197, 12, 149, 18, 5, 64, 20, 8, 197, 88, 18, 193,
-			57, 64, 20, 10, 69, 13, 84, 147, 61, 32, 21, 0, 10, 0, 16, 141, 22, 9, 4, 5, 2, 5, 7, 195, 166, 18, 12, 9, 7, 20,
-			9, 198, 76, 241, 137, 76, 209, 64, 20, 9, 198, 76, 86, 9, 76, 209, 64, 20, 9, 198, 53, 85, 9, 76, 209, 64, 20, 9, 198, 52,
-			243, 137, 76, 209, 64, 20, 9, 198, 16, 19, 137, 76, 209, 64, 20, 9, 198, 72, 83, 79, 56, 49, 64, 20, 9, 198, 45, 83, 1, 56,
-			49, 64, 20, 9, 198, 77, 1, 67, 36, 19, 0, 20, 9, 198, 9, 35, 206, 44, 144, 76, 20, 9, 198, 64, 192, 77, 4, 113, 64, 20,
-			0, 6, 195, 4, 210, 68, 20, 13, 138, 19, 11, 195, 166, 12, 1, 7, 20, 9, 7, 20, 0, 11, 200, 53, 84, 203, 84, 192, 84, 85,
-			32, 20, 10, 135, 14, 5, 18, 22, 195, 184, 19, 20, 11, 200, 81, 35, 205, 64, 85, 9, 77, 64, 20, 11, 200, 40, 245, 82, 56, 19,
-			9, 77, 64, 20, 15, 204, 81, 32, 78, 77, 50, 210, 36, 33, 82, 36, 225, 192, 20, 15, 204, 77, 80, 147, 80, 19, 148, 37, 97, 82,
-			36, 225, 192, 20, 15, 204, 72, 148, 201, 44, 245, 149, 72, 65, 82, 36, 225, 192, 20, 15, 204, 64, 84, 147, 64, 82, 212, 37, 97, 82,
-			36, 225, 192, 20, 15, 204, 64, 84, 134, 20, 181, 9, 60, 225, 82, 36, 225, 192, 20, 15, 204, 44, 243, 134, 20, 181, 9, 60, 225, 82,
-			36, 225, 192, 20, 15, 204, 36, 225, 18, 20, 114, 83, 81, 33, 82, 36, 225, 192, 20, 11, 200, 36, 225, 13, 5, 32, 200, 21, 32, 20,
-			12, 201, 8, 85, 78, 17, 33, 82, 36, 225, 5, 20, 7, 196, 9, 85, 9, 44, 20, 18, 70, 84, 225, 21, 48, 21, 0, 114, 50, 72,
-			40, 55, 6, 110, 47, 0, 20, 11, 200, 8, 20, 130, 37, 69, 82, 5, 64, 20, 9, 198, 52, 19, 132, 5, 64, 82, 20, 11, 200, 24,
-			192, 71, 20, 195, 1, 57, 64, 20, 0, 7, 195, 85, 52, 210, 17, 42, 11, 136, 7, 5, 14, 5, 18, 195, 184, 19, 20, 10, 135, 7,
-			18, 1, 22, 195, 184, 18, 20, 9, 198, 44, 243, 12, 20, 114, 69, 20, 12, 201, 77, 147, 139, 72, 243, 137, 76, 209, 64, 20, 12, 201,
-			72, 85, 129, 56, 50, 9, 76, 209, 64, 20, 12, 201, 56, 20, 131, 37, 52, 201, 76, 209, 64, 20, 12, 201, 48, 84, 194, 36, 19, 137,
-			76, 209, 64, 20, 12, 201, 37, 51, 205, 61, 33, 137, 76, 209, 64, 20, 12, 201, 4, 224, 75, 72, 243, 137, 76, 209, 64, 20, 12, 201,
-			4, 194, 207, 32, 243, 9, 76, 209, 64, 20, 8, 197, 21, 35, 212, 36, 176, 20, 8, 197, 17, 84, 12, 36, 176, 20, 0, 18, 7, 23,
-			3, 39, 5, 18, 14, 5, 84, 6, 36, 89, 36, 114, 50, 13, 0, 9, 198, 4, 224, 76, 60, 114, 64, 20, 9, 198, 4, 195, 5, 72,
-			114, 64, 20, 9, 198, 36, 211, 79, 73, 65, 76, 20, 9, 198, 36, 211, 79, 73, 65, 76, 20, 9, 198, 4, 176, 68, 20, 210, 64, 20,
-			9, 198, 44, 19, 77, 21, 32, 84, 20, 9, 198, 28, 83, 137, 80, 19, 0, 20, 9, 198, 24, 197, 86, 36, 19, 0, 20, 9, 198, 5,
-			51, 195, 36, 19, 0, 20, 11, 70, 52, 18, 15, 56, 86, 64, 21, 0, 10, 0, 10, 199, 44, 243, 150, 21, 37, 5, 72, 20, 10, 199,
-			24, 147, 147, 61, 37, 5, 72, 20, 6, 195, 36, 67, 204, 20, 10, 199, 64, 243, 9, 80, 146, 197, 72, 20, 10, 199, 44, 84, 129, 52,
-			146, 197, 72, 20, 10, 199, 32, 243, 73, 48, 85, 9, 44, 20, 10, 199, 16, 144, 76, 20, 181, 9, 44, 20, 10, 199, 76, 195, 214, 20,
-			226, 69, 56, 20, 10, 199, 12, 20, 212, 36, 194, 69, 56, 20, 10, 199, 16, 243, 73, 56, 146, 193, 56, 20, 10, 199, 12, 243, 15, 52,
-			34, 65, 56, 20, 0, 14, 139, 9, 14, 20, 18, 1, 22, 5, 14, 195, 184, 19, 20, 11, 200, 80, 84, 141, 36, 227, 204, 60, 112, 20,
-			11, 200, 77, 64, 84, 36, 243, 133, 72, 80, 20, 11, 200, 5, 82, 212, 36, 243, 133, 72, 80, 20, 11, 200, 104, 147, 206, 37, 53, 9,
-			76, 176, 20, 11, 200, 104, 147, 66, 4, 37, 201, 76, 176, 20, 11, 200, 52, 18, 197, 16, 243, 137, 76, 176, 20, 11, 200, 44, 20, 213,
-			37, 53, 9, 76, 176, 20, 11, 200, 37, 51, 212, 21, 35, 73, 76, 176, 20, 11, 200, 4, 194, 207, 32, 243, 9, 76, 176, 20, 11, 200,
-			5, 81, 9, 80, 244, 137, 84, 208, 20, 11, 200, 81, 32, 75, 20, 245, 15, 52, 144, 20, 11, 200, 24, 147, 8, 5, 35, 79, 56, 144,
-			20, 11, 200, 52, 244, 134, 36, 226, 83, 52, 80, 20, 11, 200, 52, 20, 207, 12, 130, 83, 52, 80, 20, 15, 204, 20, 180, 208, 72, 84,
-			211, 36, 243, 137, 76, 209, 64, 20, 7, 196, 48, 241, 201, 44, 20, 9, 198, 36, 228, 197, 72, 21, 0, 20, 0, 10, 135, 16, 15, 18,
-			20, 195, 184, 18, 20, 12, 201, 72, 85, 77, 5, 67, 204, 60, 114, 64, 20, 12, 201, 52, 85, 5, 61, 35, 204, 60, 114, 64, 20, 12,
-			201, 4, 195, 5, 72, 115, 204, 60, 114, 64, 20, 9, 198, 76, 240, 201, 60, 227, 205, 20, 8, 197, 4, 224, 84, 60, 208, 20, 9, 198,
-			53, 144, 197, 48, 149, 77, 20, 8, 197, 64, 241, 84, 36, 176, 20, 8, 197, 56, 21, 84, 36, 176, 20, 12, 201, 17, 32, 77, 5, 69,
-			82, 28, 144, 84, 20, 0, 11, 136, 10, 15, 14, 7, 12, 195, 184, 18, 20, 15, 140, 5, 14, 20, 18, 5, 16, 18, 5, 14, 195, 184,
-			18, 20, 9, 198, 80, 83, 204, 60, 114, 64, 20, 9, 198, 72, 83, 204, 60, 114, 64, 20, 9, 198, 8, 147, 204, 60, 114, 64, 20, 16,
-			141, 16, 1, 12, 195, 166, 15, 7, 18, 1, 6, 9, 19, 11, 20, 13, 202, 64, 84, 137, 64, 21, 5, 80, 146, 197, 72, 20, 9, 198,
-			64, 20, 129, 56, 242, 68, 20, 14, 139, 16, 18, 195, 166, 20, 5, 18, 9, 20, 21, 13, 20, 9, 198, 77, 80, 147, 81, 32, 84, 20,
-			9, 198, 64, 20, 212, 61, 32, 84, 20, 0, 7, 195, 92, 131, 192, 17, 42, 13, 138, 7, 12, 1, 14, 4, 21, 12, 195, 184, 19, 20,
-			10, 199, 32, 16, 137, 48, 149, 5, 72, 20, 10, 199, 64, 245, 16, 61, 84, 146, 36, 20, 14, 203, 81, 32, 78, 76, 21, 12, 4, 229,
-			9, 76, 176, 20, 14, 203, 72, 85, 137, 76, 147, 206, 37, 53, 9, 76, 176, 20, 14, 203, 61, 4, 15, 73, 69, 78, 37, 53, 9, 76,
-			176, 20, 14, 203, 45, 33, 65, 80, 147, 206, 37, 53, 9, 76, 176, 20, 14, 203, 36, 195, 21, 76, 147, 206, 37, 53, 9, 76, 176, 20,
-			14, 203, 44, 194, 84, 61, 34, 68, 20, 181, 15, 52, 144, 20, 10, 199, 21, 81, 1, 36, 211, 206, 36, 20, 14, 203, 52, 16, 200, 36,
-			21, 133, 48, 194, 83, 52, 80, 20, 14, 203, 44, 244, 146, 21, 52, 15, 56, 64, 78, 12, 80, 20, 0, 9, 198, 76, 181, 76, 65, 69,
-			82, 20, 13, 138, 18, 1, 16, 16, 15, 18, 20, 195, 184, 18, 20, 13, 138, 11, 15, 12, 16, 15, 18, 20, 195, 184, 18, 20, 15, 70,
-			64, 20, 148, 61, 85, 0, 48, 112, 47, 6, 40, 0, 20, 9, 198, 24, 21, 86, 37, 53, 0, 20, 11, 200, 88, 84, 147, 36, 243, 133,
-			72, 80, 20, 9, 198, 61, 34, 69, 57, 65, 82, 20, 11, 200, 64, 20, 129, 76, 149, 9, 76, 176, 20, 11, 200, 52, 18, 193, 72, 243,
-			137, 76, 176, 20, 11, 200, 33, 145, 18, 5, 83, 9, 76, 176, 20, 11, 200, 21, 33, 207, 56, 243, 73, 76, 176, 20, 11, 200, 20, 208,
-			146, 100, 243, 137, 76, 176, 20, 11, 200, 8, 192, 83, 24, 83, 73, 76, 176, 20, 11, 200, 5, 64, 86, 37, 53, 9, 76, 176, 20, 11,
-			200, 4, 226, 77, 37, 53, 9, 76, 176, 20, 7, 196, 72, 145, 201, 16, 20, 11, 200, 80, 84, 129, 64, 85, 84, 36, 176, 20, 0, 12,
-			201, 5, 52, 217, 72, 147, 204, 60, 114, 64, 20, 0, 9, 198, 77, 147, 80, 80, 243, 64, 20, 13, 202, 29, 81, 19, 40, 19, 77, 21,
-			35, 9, 28, 20, 17, 206, 4, 224, 82, 44, 244, 217, 56, 66, 75, 4, 194, 83, 52, 80, 20, 9, 198, 76, 149, 21, 21, 33, 84, 20,
-			0, 29, 75, 77, 21, 65, 72, 81, 1, 56, 49, 82, 56, 80, 89, 49, 58, 6, 36, 13, 72, 35, 12, 50, 89, 114, 20, 50, 13, 0,
-			9, 198, 65, 54, 75, 60, 195, 199, 20, 10, 199, 5, 85, 15, 72, 149, 5, 80, 20, 14, 203, 36, 66, 79, 77, 147, 139, 72, 21, 9,
-			76, 176, 20, 14, 203, 32, 148, 212, 61, 34, 67, 37, 53, 9, 76, 176, 20, 14, 203, 8, 82, 1, 88, 147, 210, 37, 53, 9, 76, 176,
-			20, 10, 199, 20, 180, 203, 88, 148, 201, 80, 20, 10, 199, 44, 19, 143, 56, 146, 193, 80, 20, 10, 199, 4, 69, 133, 72, 34, 65, 48,
-			20, 0, 9, 198, 64, 144, 78, 37, 53, 0, 20, 9, 198, 44, 243, 131, 37, 1, 82, 20, 9, 198, 16, 148, 208, 85, 65, 82, 20, 9,
-			198, 12, 83, 69, 57, 65, 82, 20, 9, 198, 4, 211, 133, 77, 65, 82, 20, 7, 196, 48, 246, 65, 48, 20, 11, 200, 16, 148, 203, 72,
-			84, 1, 57, 48, 20, 0, 25, 73, 9, 33, 65, 44, 64, 78, 12, 83, 128, 71, 34, 109, 37, 81, 6, 72, 35, 12, 50, 89, 14, 50,
-			0, 12, 201, 44, 20, 9, 48, 192, 82, 37, 65, 84, 20, 12, 201, 52, 146, 210, 60, 225, 83, 36, 83, 128, 20, 12, 201, 65, 35, 211,
-			80, 149, 21, 21, 33, 84, 20, 0, 13, 202, 64, 245, 5, 57, 66, 65, 48, 149, 5, 80, 20, 9, 198, 64, 20, 212, 61, 32, 76, 20,
-			0, 8, 133, 9, 19, 195, 166, 18, 20, 10, 199, 32, 16, 137, 48, 149, 5, 80, 20, 10, 199, 88, 17, 5, 52, 80, 213, 52, 20, 10,
-			199, 76, 227, 194, 8, 148, 205, 20, 20, 10, 199, 64, 244, 21, 48, 148, 205, 20, 20, 10, 199, 56, 146, 9, 48, 148, 205, 20, 20, 10,
-			199, 37, 51, 1, 52, 148, 205, 20, 20, 10, 199, 8, 245, 21, 48, 148, 205, 20, 20, 10, 199, 21, 128, 197, 48, 193, 78, 76, 20, 0,
-			9, 68, 48, 241, 201, 56, 21, 0, 10, 0, 9, 198, 56, 85, 82, 4, 193, 201, 20, 8, 197, 56, 21, 9, 60, 224, 20, 12, 201, 56,
-			21, 9, 60, 224, 76, 37, 65, 84, 20, 8, 197, 44, 244, 142, 20, 192, 20, 8, 197, 44, 244, 142, 20, 192, 20, 8, 197, 44, 243, 147,
-			60, 192, 20, 16, 69, 64, 244, 12, 36, 224, 48, 114, 48, 55, 6, 109, 68, 0, 20, 8, 197, 52, 244, 140, 36, 192, 20, 12, 201, 76,
-			241, 137, 77, 66, 75, 21, 33, 84, 20, 9, 198, 72, 84, 212, 4, 224, 197, 20, 0, 15, 140, 16, 195, 166, 4, 1, 7, 15, 7, 9,
-			19, 5, 18, 20, 12, 137, 15, 18, 11, 14, 195, 184, 9, 19, 11, 20, 13, 202, 29, 83, 77, 36, 20, 129, 8, 144, 213, 52, 20, 13,
-			202, 64, 243, 25, 12, 83, 148, 72, 148, 205, 20, 20, 0, 10, 199, 72, 81, 146, 4, 181, 15, 72, 20, 12, 137, 20, 5, 13, 16, 15,
-			18, 195, 166, 18, 20, 10, 199, 77, 80, 147, 36, 66, 69, 72, 20, 10, 199, 65, 35, 196, 84, 49, 82, 20, 20, 10, 199, 64, 20, 143,
-			16, 145, 82, 20, 20, 10, 199, 64, 20, 134, 84, 209, 82, 20, 20, 13, 138, 195, 184, 11, 21, 13, 5, 14, 9, 19, 11, 20, 10, 199,
-			28, 227, 211, 80, 146, 197, 72, 20, 10, 199, 9, 32, 83, 36, 194, 65, 56, 20, 10, 199, 72, 84, 5, 48, 193, 78, 80, 20, 10, 199,
-			64, 84, 141, 4, 225, 78, 80, 20, 12, 201, 36, 212, 5, 73, 66, 78, 20, 229, 0, 20, 10, 199, 21, 128, 197, 48, 193, 78, 80, 20,
-			0, 14, 68, 64, 128, 82, 52, 83, 112, 12, 34, 65, 19, 0, 25, 13, 138, 11, 22, 1, 20, 5, 18, 14, 195, 166, 18, 20, 9, 134,
-			7, 5, 22, 195, 166, 18, 20, 11, 200, 81, 32, 78, 76, 149, 9, 60, 224, 20, 11, 200, 64, 84, 134, 20, 181, 9, 60, 224, 20, 11,
-			200, 44, 243, 150, 20, 181, 9, 60, 224, 20, 11, 200, 44, 243, 135, 21, 53, 9, 60, 224, 20, 11, 200, 44, 243, 134, 20, 181, 9, 60,
-			224, 20, 11, 200, 44, 21, 137, 80, 21, 9, 60, 224, 20, 11, 200, 37, 36, 137, 80, 21, 9, 60, 224, 20, 11, 200, 36, 226, 213, 8,
-			21, 9, 60, 224, 20, 11, 200, 36, 226, 1, 48, 21, 9, 60, 224, 20, 11, 200, 29, 32, 68, 84, 21, 9, 60, 224, 20, 11, 200, 28,
-			83, 73, 56, 21, 9, 60, 224, 20, 11, 200, 20, 210, 71, 72, 21, 9, 60, 224, 20, 11, 200, 16, 149, 137, 56, 21, 9, 60, 224, 20,
-			11, 200, 16, 81, 9, 44, 21, 9, 60, 224, 20, 11, 200, 5, 52, 9, 72, 21, 9, 60, 224, 20, 14, 139, 16, 18, 195, 166, 19, 5,
-			14, 20, 9, 19, 11, 20, 7, 196, 64, 193, 84, 36, 20, 9, 198, 76, 243, 22, 20, 229, 0, 20, 9, 198, 20, 210, 78, 20, 229, 0,
-			20, 11, 200, 61, 35, 129, 52, 83, 148, 4, 192, 20, 11, 200, 60, 48, 201, 16, 83, 148, 4, 192, 20, 11, 200, 52, 243, 149, 52, 83,
-			148, 4, 192, 20, 9, 198, 5, 4, 12, 36, 176, 66, 20, 0, 24, 73, 9, 33, 65, 44, 64, 78, 12, 84, 128, 71, 34, 109, 37, 81,
-			6, 72, 35, 12, 50, 89, 114, 0, 8, 197, 52, 245, 9, 60, 224, 20, 8, 197, 4, 181, 9, 60, 224, 20, 15, 140, 6, 15, 18, 18,
-			195, 166, 4, 5, 18, 9, 19, 11, 20, 8, 197, 56, 81, 210, 36, 64, 20, 8, 197, 45, 33, 84, 36, 224, 20, 8, 197, 64, 244, 148,
-			4, 192, 20, 0, 11, 136, 19, 15, 12, 9, 20, 195, 166, 18, 20, 11, 136, 13, 9, 12, 9, 20, 195, 166, 18, 20, 12, 137, 20, 18,
-			15, 11, 195, 166, 9, 19, 11, 20, 16, 141, 16, 25, 20, 8, 1, 7, 15, 18, 195, 166, 9, 19, 11, 20, 12, 137, 5, 12, 25, 19,
-			195, 166, 9, 19, 11, 20, 13, 202, 44, 244, 146, 21, 52, 15, 56, 65, 78, 80, 20, 9, 198, 76, 243, 22, 20, 228, 192, 20, 0, 12,
-			137, 16, 5, 11, 21, 14, 9, 195, 166, 18, 20, 14, 203, 77, 66, 71, 52, 21, 9, 76, 21, 9, 60, 224, 20, 14, 203, 53, 83, 20,
-			37, 3, 9, 44, 21, 9, 60, 224, 20, 14, 203, 36, 211, 79, 8, 147, 9, 76, 21, 9, 60, 224, 20, 14, 203, 28, 83, 133, 72, 19,
-			9, 76, 21, 9, 60, 224, 20, 14, 203, 16, 148, 203, 72, 147, 73, 56, 21, 9, 60, 224, 20, 14, 203, 5, 4, 18, 60, 180, 201, 52,
-			21, 9, 60, 224, 20, 10, 199, 88, 83, 148, 36, 193, 82, 20, 20, 10, 199, 81, 34, 85, 52, 97, 82, 20, 20, 10, 199, 52, 20, 135,
-			36, 225, 82, 20, 20, 10, 199, 44, 243, 147, 84, 193, 82, 20, 20, 10, 199, 16, 148, 211, 60, 50, 69, 72, 20, 10, 199, 16, 84, 18,
-			20, 50, 69, 72, 20, 13, 138, 6, 1, 18, 9, 19, 195, 166, 9, 19, 11, 20, 13, 138, 4, 9, 195, 166, 20, 5, 20, 9, 19, 11,
-			20, 10, 199, 40, 19, 137, 81, 50, 1, 72, 20, 0, 25, 73, 9, 33, 65, 44, 64, 78, 12, 84, 133, 71, 34, 109, 37, 81, 6, 72,
-			35, 12, 50, 89, 114, 108, 0, 11, 200, 88, 145, 9, 52, 21, 9, 60, 224, 20, 11, 200, 65, 35, 202, 20, 181, 9, 60, 224, 20, 11,
-			200, 56, 243, 73, 56, 21, 9, 60, 224, 20, 11, 200, 45, 83, 85, 48, 21, 9, 60, 224, 20, 11, 200, 44, 243, 139, 72, 85, 9, 60,
-			224, 20, 11, 200, 28, 83, 133, 72, 21, 9, 60, 224, 20, 11, 200, 24, 16, 149, 48, 21, 9, 60, 224, 20, 11, 200, 16, 84, 137, 88,
-			21, 9, 60, 224, 20, 11, 200, 4, 36, 207, 49, 85, 9, 60, 224, 20, 0, 8, 197, 17, 80, 140, 21, 64, 20, 15, 140, 8, 15, 13,
-			195, 184, 15, 16, 1, 20, 9, 19, 11, 20, 8, 197, 28, 195, 211, 5, 32, 20, 0, 14, 139, 195, 166, 7, 25, 16, 20, 15, 12, 15,
-			7, 9, 20, 12, 137, 8, 195, 184, 10, 13, 15, 4, 9, 7, 20, 9, 198, 53, 144, 197, 48, 145, 64, 20, 9, 198, 57, 81, 9, 76,
-			209, 64, 20, 9, 198, 88, 84, 148, 36, 176, 76, 20, 9, 198, 52, 20, 211, 4, 113, 64, 20, 9, 198, 44, 244, 147, 4, 113, 64, 20,
-			9, 198, 25, 84, 212, 4, 113, 64, 20, 9, 198, 12, 243, 12, 4, 113, 64, 20, 11, 70, 76, 50, 69, 56, 49, 64, 21, 0, 10, 0,
-			14, 203, 81, 32, 78, 77, 50, 210, 37, 5, 9, 60, 224, 20, 14, 203, 56, 85, 84, 72, 19, 9, 76, 21, 9, 60, 224, 20, 14, 203,
-			56, 21, 21, 72, 19, 9, 76, 21, 9, 60, 224, 20, 14, 203, 20, 180, 208, 72, 244, 18, 36, 21, 9, 60, 224, 20, 14, 203, 16, 81,
-			137, 9, 34, 76, 48, 21, 9, 60, 224, 20, 13, 138, 22, 9, 12, 11, 195, 165, 18, 12, 9, 7, 20, 0, 11, 200, 81, 35, 205, 8,
-			243, 137, 77, 64, 20, 11, 200, 64, 244, 201, 80, 149, 137, 77, 64, 20, 11, 200, 56, 81, 193, 80, 149, 137, 77, 64, 20, 11, 200, 12,
-			128, 85, 88, 147, 137, 77, 64, 20, 11, 200, 20, 180, 208, 5, 68, 137, 21, 32, 20, 11, 200, 16, 148, 133, 45, 67, 210, 5, 64, 20,
-			11, 200, 52, 147, 137, 77, 68, 129, 57, 64, 20, 11, 200, 24, 195, 210, 37, 52, 193, 57, 64, 20, 0, 24, 69, 88, 19, 132, 21, 64,
-			84, 110, 50, 13, 86, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 8, 197, 5, 37, 9, 77, 64, 20, 8, 197, 4, 229, 18,
-			37, 64, 20, 12, 201, 65, 84, 137, 80, 19, 137, 76, 209, 64, 20, 12, 201, 64, 244, 201, 80, 149, 137, 76, 209, 64, 20, 12, 201, 56,
-			81, 193, 80, 149, 137, 76, 209, 64, 20, 12, 201, 32, 81, 197, 52, 243, 137, 76, 209, 64, 20, 12, 201, 12, 83, 148, 72, 19, 9, 76,
-			209, 64, 20, 8, 197, 12, 83, 69, 57, 64, 20, 8, 197, 9, 82, 203, 5, 32, 20, 12, 201, 16, 82, 207, 48, 193, 84, 4, 113, 64,
-			20, 0, 10, 135, 18, 195, 184, 7, 5, 18, 9, 20, 12, 137, 1, 14, 4, 195, 166, 7, 20, 9, 7, 20, 12, 137, 1, 12, 13, 195,
-			166, 7, 20, 9, 7, 20, 9, 198, 81, 37, 73, 76, 209, 64, 20, 9, 198, 5, 85, 9, 76, 209, 64, 20, 9, 198, 80, 82, 211, 80,
-			147, 0, 20, 6, 195, 64, 241, 77, 20, 9, 198, 76, 84, 150, 36, 49, 64, 20, 9, 198, 72, 243, 65, 56, 49, 64, 20, 9, 198, 8,
-			192, 77, 4, 113, 64, 20, 0, 14, 203, 88, 149, 137, 76, 82, 212, 36, 243, 137, 77, 64, 20, 13, 138, 22, 9, 12, 4, 18, 195, 165,
-			4, 9, 7, 20, 13, 138, 6, 15, 18, 4, 195, 166, 7, 20, 9, 7, 20, 10, 199, 16, 84, 5, 56, 65, 78, 76, 20, 0, 27, 68,
-			32, 21, 84, 20, 2, 39, 12, 47, 49, 40, 6, 47, 116, 12, 34, 0, 81, 99, 111, 117, 116, 117, 114, 101, 32, 11, 200, 44, 20, 130,
-			85, 32, 84, 61, 32, 20, 11, 200, 36, 228, 208, 37, 32, 84, 61, 32, 20, 15, 140, 195, 166, 11, 22, 9, 12, 9, 2, 18, 9, 19,
-			20, 20, 11, 200, 72, 83, 1, 80, 149, 137, 77, 64, 20, 11, 200, 72, 80, 201, 16, 149, 137, 77, 64, 20, 11, 200, 77, 80, 147, 80,
-			149, 21, 21, 32, 20, 11, 200, 65, 35, 211, 80, 149, 21, 21, 32, 20, 11, 200, 44, 243, 147, 80, 149, 21, 21, 32, 20, 14, 139, 19,
-			20, 15, 18, 13, 195, 166, 7, 20, 9, 7, 20, 14, 139, 15, 22, 5, 18, 13, 195, 166, 7, 20, 9, 7, 20, 14, 139, 13, 9, 19,
-			20, 18, 195, 184, 19, 20, 9, 7, 20, 9, 198, 21, 53, 9, 52, 21, 0, 20, 9, 68, 56, 145, 200, 80, 21, 0, 10, 0, 8, 197,
-			61, 51, 79, 76, 80, 20, 8, 197, 52, 147, 79, 76, 80, 20, 8, 197, 45, 80, 133, 72, 80, 20, 8, 197, 28, 17, 197, 72, 80, 20,
-			11, 136, 195, 166, 7, 195, 166, 9, 19, 11, 20, 8, 197, 44, 147, 133, 76, 80, 20, 12, 201, 77, 3, 206, 80, 19, 137, 76, 209, 64,
-			20, 12, 201, 76, 83, 73, 56, 20, 137, 76, 209, 64, 20, 12, 201, 52, 243, 133, 80, 20, 137, 76, 209, 64, 20, 12, 201, 20, 180, 212,
-			72, 83, 73, 76, 209, 64, 20, 12, 201, 12, 83, 148, 72, 148, 5, 80, 19, 0, 20, 8, 197, 72, 21, 129, 28, 80, 20, 0, 14, 139,
-			6, 25, 18, 22, 195, 166, 18, 11, 5, 18, 9, 20, 12, 137, 195, 166, 19, 20, 5, 20, 9, 19, 11, 20, 13, 202, 44, 244, 146, 21,
-			52, 15, 56, 65, 78, 76, 20, 9, 198, 64, 20, 139, 60, 208, 84, 20, 9, 198, 36, 195, 15, 100, 19, 0, 20, 0, 14, 139, 6, 195,
-			184, 4, 5, 18, 1, 12, 9, 19, 20, 20, 14, 203, 20, 180, 200, 36, 34, 84, 36, 243, 137, 77, 64, 20, 10, 199, 44, 243, 132, 60,
-			209, 82, 36, 20, 13, 138, 16, 25, 18, 5, 14, 195, 166, 9, 19, 11, 20, 10, 199, 52, 82, 193, 56, 146, 197, 72, 20, 10, 199, 4,
-			225, 18, 60, 118, 78, 36, 20, 10, 199, 5, 32, 71, 60, 226, 69, 56, 20, 10, 199, 56, 85, 82, 85, 4, 9, 56, 20, 10, 199, 12,
-			20, 212, 36, 194, 65, 56, 20, 0, 11, 200, 76, 180, 143, 25, 83, 15, 76, 80, 20, 9, 198, 88, 145, 5, 60, 99, 206, 20, 11, 200,
-			84, 68, 193, 56, 84, 137, 56, 112, 20, 11, 200, 80, 16, 149, 48, 84, 137, 56, 112, 20, 11, 200, 72, 84, 213, 52, 84, 137, 56, 112,
-			20, 11, 200, 64, 195, 205, 8, 84, 137, 56, 112, 20, 11, 200, 52, 243, 137, 80, 84, 137, 56, 112, 20, 11, 200, 45, 38, 80, 80, 84,
-			137, 56, 112, 20, 11, 200, 36, 226, 1, 48, 84, 137, 56, 112, 20, 11, 200, 28, 83, 73, 56, 84, 137, 56, 112, 20, 11, 200, 24, 242,
-			213, 76, 84, 137, 56, 112, 20, 11, 200, 9, 35, 206, 104, 84, 137, 56, 112, 20, 11, 200, 4, 67, 208, 80, 84, 137, 56, 112, 20, 11,
-			200, 60, 209, 210, 85, 4, 5, 72, 80, 20, 14, 139, 19, 1, 4, 4, 21, 11, 195, 166, 9, 19, 11, 20, 11, 200, 44, 18, 207, 24,
-			243, 137, 76, 176, 20, 14, 139, 5, 16, 9, 11, 21, 18, 195, 166, 9, 19, 11, 20, 11, 200, 16, 21, 1, 48, 241, 201, 76, 176, 20,
-			15, 204, 64, 20, 140, 4, 209, 78, 80, 20, 137, 76, 209, 64, 20, 9, 198, 76, 144, 201, 48, 145, 78, 20, 0, 8, 197, 52, 149, 15,
-			76, 80, 20, 12, 201, 80, 242, 211, 36, 179, 204, 60, 114, 64, 20, 9, 198, 21, 33, 207, 56, 243, 73, 20, 9, 198, 8, 192, 83, 24,
-			83, 73, 20, 0, 9, 198, 44, 148, 149, 72, 114, 64, 20, 17, 142, 16, 18, 195, 166, 12, 9, 13, 9, 14, 1, 18, 9, 19, 20, 20,
-			12, 137, 8, 195, 166, 18, 5, 20, 9, 19, 11, 20, 13, 202, 44, 20, 129, 45, 65, 82, 37, 53, 9, 44, 20, 0, 14, 203, 81, 32,
-			78, 76, 210, 84, 80, 84, 137, 56, 112, 20, 14, 203, 53, 149, 15, 48, 241, 201, 76, 84, 137, 56, 112, 20, 14, 203, 32, 243, 79, 28,
-			83, 137, 76, 84, 137, 56, 112, 20, 14, 203, 16, 148, 203, 72, 147, 73, 56, 84, 137, 56, 112, 20, 14, 203, 8, 20, 212, 5, 33, 9,
-			76, 84, 137, 56, 112, 20, 10, 199, 20, 115, 195, 20, 229, 18, 36, 20, 13, 138, 7, 1, 12, 9, 12, 195, 166, 9, 19, 11, 20, 18,
-			207, 17, 32, 77, 4, 67, 203, 84, 209, 78, 80, 20, 137, 76, 209, 64, 20, 10, 199, 77, 34, 76, 4, 226, 193, 56, 20, 12, 201, 80,
-			82, 211, 81, 84, 133, 72, 85, 0, 20, 0, 7, 196, 52, 20, 213, 80, 20, 16, 141, 16, 1, 12, 195, 166, 15, 14, 20, 15, 12, 15,
-			7, 9, 20, 11, 200, 48, 20, 153, 56, 115, 204, 60, 112, 20, 9, 198, 48, 149, 146, 37, 53, 0, 20, 11, 200, 64, 20, 129, 16, 84,
-			137, 56, 112, 20, 11, 200, 64, 19, 133, 48, 84, 137, 56, 112, 20, 11, 200, 45, 83, 85, 48, 84, 137, 56, 112, 20, 11, 200, 44, 20,
-			137, 44, 84, 137, 56, 112, 20, 11, 200, 24, 16, 149, 48, 84, 137, 56, 112, 20, 11, 200, 16, 243, 73, 56, 84, 137, 56, 112, 20, 11,
-			200, 16, 80, 137, 80, 84, 137, 56, 112, 20, 11, 200, 9, 35, 195, 32, 84, 137, 56, 112, 20, 9, 198, 88, 243, 20, 36, 113, 82, 20,
-			9, 198, 65, 80, 140, 36, 49, 82, 20, 11, 200, 64, 21, 18, 84, 194, 133, 72, 80, 20, 9, 198, 16, 149, 133, 72, 113, 82, 20, 9,
-			198, 16, 83, 65, 72, 177, 82, 20, 9, 198, 5, 4, 12, 36, 49, 82, 20, 11, 200, 5, 3, 203, 73, 145, 137, 76, 176, 20, 11, 200,
-			64, 21, 15, 28, 83, 133, 76, 80, 20, 11, 200, 25, 147, 15, 28, 83, 133, 76, 80, 20, 12, 137, 19, 195, 166, 12, 1, 18, 9, 21,
-			13, 20, 11, 200, 25, 148, 201, 60, 115, 143, 52, 144, 20, 9, 134, 18, 21, 13, 195, 166, 14, 20, 11, 200, 16, 81, 133, 45, 68, 137,
-			12, 80, 20, 11, 200, 12, 19, 79, 84, 99, 1, 28, 80, 20, 0, 6, 20, 0, 0, 0, 252, 0, 0, 0, 121, 0, 0, 0, 246, 0,
-			0, 0, 248, 0, 0, 0, 228, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 99, 107, 0, 110, 107, 0, 110, 103, 0,
-			107, 0, 103, 0, 113, 0, 106, 0, 7, 6, 18, 67, 112, 0, 98, 0, 102, 0, 118, 0, 109, 0, 7, 6, 18, 68, 108, 0, 100, 0,
-			7, 6, 18, 69, 195, 184, 0, 117, 0, 121, 0, 105, 0, 111, 0, 7, 6, 18, 70, 195, 166, 0, 195, 165, 0, 97, 0, 7, 6, 18,
-			71, 112, 0, 98, 0, 7, 6, 18, 72, 116, 0, 107, 0, 118, 0, 7, 6, 18, 73, 115, 112, 0, 115, 116, 0, 115, 107, 0, 7, 6,
-			18, 74, 109, 0, 110, 0, 7, 6, 18, 75, 99, 0, 107, 0, 7, 6, 18, 76, 97, 0, 101, 0, 7, 6, 97, 102, 0, 1, 114, 103,
-			10, 2, 28, 33, 3, 6, 112, 83, 0, 4, 8, 112, 3, 35, 83, 0, 102, 1, 107, 2, 101, 0, 102, 1, 108, 2, 101, 0, 102, 1,
-			116, 2, 101, 0, 102, 1, 116, 115, 2, 101, 3, 110, 83, 0, 1, 114, 103, 10, 2, 105, 28, 33, 3, 112, 83, 6, 0, 7, 6, 97,
-			103, 0, 1, 108, 114, 111, 102, 3, 2, 110, 57, 0, 1, 98, 108, 105, 116, 2, 101, 3, 6, 110, 12, 0, 101, 1, 10, 2, 28, 33,
-			12, 12, 12, 3, 6, 110, 12, 91, 13, 0, 101, 1, 10, 2, 114, 28, 33, 12, 12, 3, 6, 110, 12, 91, 114, 0, 4, 110, 1, 115,
-			97, 108, 2, 101, 3, 6, 110, 50, 57, 0, 110, 1, 116, 101, 114, 98, 2, 101, 0, 101, 1, 114, 10, 2, 28, 33, 12, 12, 3, 6,
-			112, 12, 91, 13, 0, 1, 116, 2, 108, 105, 97, 116, 101, 108, 108, 101, 3, 21, 105, 116, 0, 4, 1, 102, 2, 21, 3, 35, 40, 0,
-			1, 108, 2, 17, 67, 0, 1, 108, 102, 2, 114, 101, 0, 1, 108, 115, 2, 17, 67, 21, 0, 1, 108, 115, 2, 115, 118, 195, 166, 114,
-			100, 0, 103, 1, 108, 115, 2, 101, 3, 35, 49, 0, 1, 116, 2, 17, 67, 3, 35, 58, 0, 4, 1, 17, 67, 2, 116, 12, 3, 35,
-			81, 0, 1, 102, 2, 116, 101, 114, 0, 1, 106, 2, 116, 0, 1, 106, 2, 117, 97, 114, 0, 1, 108, 115, 2, 116, 101, 12, 0, 1,
-			108, 115, 2, 116, 110, 12, 0, 1, 118, 115, 100, 101, 104, 114, 101, 107, 107, 105, 115, 2, 116, 0, 1, 118, 115, 101, 114, 166, 195, 2,
-			116, 0, 1, 118, 115, 103, 110, 105, 114, 101, 107, 114, 97, 112, 2, 116, 0, 1, 118, 115, 107, 105, 116, 117, 98, 2, 116, 0, 1, 118,
-			115, 108, 97, 116, 105, 112, 115, 111, 104, 2, 116, 0, 2, 116, 105, 103, 0, 8, 108, 115, 2, 115, 32, 0, 8, 108, 115, 2, 115, 101,
-			110, 0, 104, 1, 108, 108, 97, 103, 3, 108, 81, 0, 8, 98, 2, 101, 108, 12, 3, 109, 57, 81, 0, 4, 1, 100, 21, 2, 32, 12,
-			12, 3, 110, 0, 1, 100, 115, 2, 12, 0, 1, 116, 2, 102, 97, 116, 0, 4, 1, 98, 2, 102, 114, 3, 110, 4, 0, 1, 98, 2,
-			105, 0, 1, 98, 2, 112, 195, 165, 0, 1, 98, 2, 116, 105, 108, 0, 1, 116, 2, 115, 101, 108, 118, 3, 110, 6, 0, 4, 1, 98,
-			2, 111, 118, 101, 114, 3, 110, 9, 0, 1, 98, 2, 117, 100, 0, 1, 98, 2, 118, 101, 100, 0, 4, 1, 106, 2, 101, 12, 3, 110,
-			12, 0, 100, 1, 115, 2, 101, 12, 0, 100, 1, 108, 2, 101, 3, 110, 12, 57, 0, 101, 1, 17, 67, 2, 12, 3, 110, 12, 57, 13,
-			0, 101, 114, 1, 17, 67, 2, 12, 3, 110, 12, 57, 114, 0, 4, 101, 1, 100, 110, 97, 98, 3, 110, 12, 91, 13, 0, 101, 1, 103,
-			2, 32, 12, 0, 101, 1, 112, 2, 12, 12, 0, 101, 1, 115, 115, 97, 109, 101, 116, 114, 101, 106, 104, 0, 101, 1, 116, 117, 102, 102,
-			97, 0, 101, 1, 103, 97, 98, 3, 110, 12, 91, 108, 0, 110, 1, 116, 115, 97, 107, 2, 101, 116, 3, 110, 50, 57, 6, 0, 4, 1,
-			17, 67, 115, 2, 12, 3, 110, 57, 0, 1, 98, 2, 101, 102, 116, 101, 114, 0, 1, 98, 2, 101, 114, 105, 12, 0, 1, 98, 101, 109,
-			109, 101, 106, 104, 2, 32, 0, 1, 100, 2, 32, 0, 1, 100, 2, 101, 12, 0, 1, 100, 2, 115, 32, 0, 1, 108, 2, 32, 0, 1,
-			108, 2, 110, 0, 1, 108, 2, 114, 101, 0, 1, 108, 2, 114, 101, 12, 0, 1, 108, 112, 0, 1, 108, 115, 2, 110, 101, 0, 1, 108,
-			115, 2, 110, 105, 12, 0, 1, 108, 115, 109, 101, 110, 110, 101, 103, 2, 12, 0, 1, 108, 115, 112, 111, 0, 1, 115, 110, 97, 114, 2,
-			110, 0, 1, 116, 2, 32, 0, 1, 116, 2, 110, 101, 0, 1, 118, 115, 2, 116, 0, 1, 118, 115, 101, 110, 118, 101, 0, 1, 118, 115,
-			115, 100, 110, 165, 195, 0, 2, 110, 105, 110, 103, 0, 8, 18, 71, 2, 32, 0, 8, 106, 2, 32, 0, 8, 115, 2, 116, 101, 32, 0,
-			4, 101, 1, 108, 115, 115, 108, 101, 115, 100, 166, 195, 114, 2, 110, 3, 110, 57, 13, 0, 101, 1, 116, 2, 108, 115, 101, 0, 101, 1,
-			116, 101, 98, 0, 101, 1, 116, 101, 114, 97, 118, 0, 101, 1, 116, 101, 114, 111, 102, 0, 101, 8, 2, 32, 3, 110, 57, 108, 0, 4,
-			101, 110, 100, 1, 98, 2, 101, 32, 104, 101, 100, 3, 110, 57, 108, 50, 0, 101, 110, 100, 1, 98, 2, 101, 32, 115, 111, 108, 0, 101,
-			110, 100, 1, 98, 2, 101, 32, 118, 97, 114, 109, 0, 4, 101, 2, 114, 110, 3, 110, 57, 114, 0, 101, 114, 1, 116, 116, 103, 97, 105,
-			2, 32, 0, 101, 114, 2, 104, 195, 184, 110, 0, 101, 114, 8, 2, 32, 0, 110, 97, 110, 1, 116, 114, 97, 3, 110, 68, 112, 68, 0,
-			4, 1, 100, 2, 111, 103, 12, 3, 110, 81, 0, 1, 108, 112, 2, 105, 0, 1, 112, 115, 2, 97, 116, 0, 103, 1, 116, 2, 101, 0,
-			4, 1, 112, 115, 2, 101, 116, 116, 3, 110, 81, 6, 0, 104, 1, 112, 115, 2, 101, 116, 116, 0, 101, 1, 116, 117, 109, 2, 110, 3,
-			110, 81, 6, 36, 0, 101, 116, 101, 115, 1, 116, 3, 110, 81, 6, 36, 47, 108, 89, 0, 101, 8, 2, 110, 116, 12, 12, 3, 110, 81,
-			6, 109, 0, 101, 2, 110, 116, 12, 12, 3, 110, 81, 109, 0, 101, 114, 1, 103, 2, 101, 12, 3, 110, 91, 6, 36, 0, 101, 1, 10,
-			2, 114, 101, 28, 33, 12, 3, 110, 91, 6, 36, 13, 0, 4, 101, 1, 110, 111, 3, 110, 91, 13, 0, 101, 1, 115, 115, 97, 0, 101,
-			1, 116, 110, 97, 108, 112, 0, 101, 1, 116, 101, 3, 110, 91, 108, 0, 101, 114, 1, 116, 101, 3, 110, 91, 114, 0, 4, 101, 114, 1,
-			116, 101, 114, 111, 102, 3, 112, 34, 0, 101, 114, 8, 116, 2, 32, 0, 4, 1, 98, 2, 17, 65, 110, 3, 112, 40, 0, 1, 98, 2,
-			18, 66, 0, 1, 98, 2, 98, 0, 1, 98, 2, 100, 0, 1, 98, 2, 102, 0, 1, 98, 2, 104, 12, 0, 1, 98, 2, 107, 0, 1,
-			98, 2, 108, 0, 1, 98, 2, 109, 0, 1, 98, 2, 112, 0, 1, 98, 2, 114, 117, 100, 0, 1, 98, 2, 115, 0, 1, 98, 2, 116,
-			21, 0, 1, 98, 2, 117, 100, 103, 97, 110, 103, 0, 1, 98, 2, 118, 0, 1, 100, 2, 105, 110, 115, 116, 105, 0, 1, 100, 2, 108,
-			21, 12, 0, 1, 108, 115, 2, 115, 105, 100, 101, 0, 1, 108, 115, 2, 115, 109, 195, 165, 108, 0, 1, 108, 115, 2, 116, 105, 108, 102,
-			0, 1, 108, 115, 101, 2, 108, 17, 65, 0, 1, 112, 115, 2, 110, 117, 109, 0, 1, 114, 2, 101, 12, 0, 1, 115, 2, 110, 0, 1,
-			115, 2, 115, 195, 184, 0, 110, 1, 116, 115, 3, 112, 40, 68, 0, 101, 110, 100, 1, 98, 2, 101, 3, 112, 40, 109, 50, 0, 101, 114,
-			1, 108, 102, 2, 109, 117, 115, 3, 112, 40, 114, 0, 1, 107, 115, 2, 108, 101, 114, 3, 112, 58, 0, 101, 1, 114, 2, 12, 12, 3,
-			112, 58, 13, 0, 101, 114, 1, 114, 2, 12, 12, 3, 112, 58, 114, 0, 1, 98, 2, 116, 101, 3, 112, 81, 0, 101, 100, 105, 101, 1,
-			114, 116, 3, 112, 81, 6, 36, 86, 57, 13, 0, 101, 1, 114, 102, 102, 117, 115, 2, 116, 116, 101, 3, 112, 91, 6, 109, 0, 7, 6,
-			97, 108, 0, 4, 8, 98, 97, 107, 2, 101, 3, 6, 110, 12, 55, 0, 8, 98, 109, 105, 116, 2, 101, 0, 8, 100, 110, 97, 107, 115,
-			2, 101, 0, 8, 103, 101, 114, 2, 101, 0, 8, 104, 114, 111, 102, 2, 101, 0, 8, 105, 114, 101, 116, 97, 109, 2, 101, 0, 8, 105,
-			116, 97, 114, 103, 2, 101, 0, 8, 105, 116, 110, 101, 116, 111, 112, 2, 101, 0, 8, 107, 111, 108, 2, 101, 0, 8, 109, 114, 111, 102,
-			2, 101, 0, 8, 110, 105, 102, 2, 101, 0, 8, 110, 110, 101, 105, 98, 0, 8, 110, 110, 101, 105, 114, 116, 2, 101, 0, 8, 115, 115,
-			105, 109, 2, 101, 0, 8, 116, 114, 111, 102, 2, 101, 0, 8, 116, 114, 111, 109, 111, 116, 108, 97, 115, 2, 101, 0, 8, 117, 100, 97,
-			114, 103, 2, 101, 0, 8, 117, 110, 97, 109, 2, 101, 0, 4, 101, 8, 105, 99, 101, 112, 115, 2, 32, 3, 6, 110, 12, 55, 13, 0,
-			101, 8, 105, 116, 110, 101, 114, 101, 102, 102, 105, 100, 0, 4, 1, 100, 101, 112, 115, 2, 115, 107, 3, 6, 110, 55, 0, 1, 117, 115,
-			107, 101, 115, 0, 4, 8, 114, 101, 109, 117, 110, 2, 101, 3, 6, 112, 12, 55, 0, 8, 114, 111, 109, 2, 101, 0, 8, 114, 111, 116,
-			115, 97, 112, 2, 101, 0, 4, 8, 110, 105, 114, 117, 3, 7, 110, 12, 55, 0, 8, 110, 111, 105, 116, 97, 114, 2, 101, 0, 8, 110,
-			111, 115, 114, 101, 112, 2, 101, 0, 7, 6, 98, 101, 0, 97, 117, 8, 3, 2, 71, 39, 0, 8, 2, 21, 3, 71, 2, 36, 0, 8,
-			2, 106, 108, 101, 3, 71, 35, 0, 4, 103, 8, 2, 98, 108, 101, 110, 100, 101, 3, 71, 35, 57, 0, 103, 8, 2, 109, 97, 110, 100,
-			0, 103, 8, 2, 110, 105, 110, 103, 0, 4, 8, 2, 100, 100, 105, 110, 103, 3, 71, 36, 0, 8, 2, 100, 101, 0, 8, 2, 101, 116,
-			97, 32, 0, 8, 2, 110, 97, 114, 98, 101, 106, 100, 101, 0, 8, 2, 110, 98, 98, 117, 107, 0, 8, 2, 110, 98, 114, 117, 100, 0,
-			8, 2, 110, 101, 100, 100, 101, 114, 0, 8, 2, 110, 101, 116, 0, 8, 2, 110, 102, 101, 100, 116, 0, 8, 2, 110, 102, 105, 115, 107,
-			0, 8, 2, 110, 102, 114, 105, 0, 8, 2, 110, 107, 108, 0, 8, 2, 110, 109, 101, 108, 0, 8, 2, 110, 109, 101, 108, 0, 8, 2,
-			110, 112, 105, 98, 101, 0, 8, 2, 110, 112, 108, 97, 100, 115, 0, 8, 2, 110, 114, 97, 100, 0, 8, 2, 110, 115, 107, 105, 110, 110,
-			101, 0, 8, 2, 110, 115, 112, 195, 166, 110, 100, 0, 8, 2, 110, 116, 195, 184, 106, 0, 8, 2, 116, 97, 115, 116, 114, 195, 165, 108,
-			0, 8, 2, 116, 97, 116, 114, 111, 110, 0, 8, 2, 116, 97, 118, 101, 114, 115, 105, 111, 110, 0, 8, 2, 116, 101, 108, 0, 8, 2,
-			116, 108, 0, 101, 116, 104, 111, 118, 101, 110, 3, 71, 36, 47, 39, 84, 108, 50, 0, 101, 99, 104, 8, 3, 71, 37, 76, 0, 4, 8,
-			2, 100, 114, 101, 3, 71, 109, 0, 8, 2, 100, 114, 105, 110, 103, 0, 8, 2, 100, 115, 116, 101, 0, 8, 2, 103, 103, 101, 0, 8,
-			2, 106, 100, 115, 0, 8, 2, 108, 103, 105, 0, 8, 2, 108, 108, 97, 0, 8, 2, 110, 98, 114, 195, 166, 107, 0, 8, 2, 110, 99,
-			104, 109, 97, 114, 107, 0, 8, 2, 110, 101, 110, 100, 101, 0, 8, 2, 110, 103, 101, 108, 0, 8, 2, 110, 103, 110, 97, 0, 8, 2,
-			110, 104, 0, 8, 2, 110, 106, 97, 109, 105, 110, 0, 8, 2, 110, 108, 0, 8, 2, 110, 118, 0, 8, 2, 114, 98, 0, 8, 2, 114,
-			103, 101, 110, 32, 0, 105, 103, 101, 8, 3, 71, 109, 12, 91, 0, 114, 107, 101, 108, 101, 121, 3, 71, 118, 49, 59, 37, 0, 7, 6,
-			101, 100, 0, 4, 1, 112, 105, 99, 111, 108, 101, 118, 2, 101, 3, 6, 36, 86, 0, 1, 116, 115, 102, 97, 2, 107, 111, 109, 0, 1,
-			114, 100, 110, 117, 104, 2, 12, 3, 13, 12, 86, 0, 101, 1, 107, 121, 115, 112, 2, 108, 105, 115, 107, 3, 13, 72, 6, 36, 0, 1,
-			118, 111, 104, 3, 13, 86, 0, 101, 1, 21, 2, 32, 3, 13, 86, 13, 0, 4, 1, 110, 114, 101, 100, 2, 101, 3, 36, 86, 0, 1,
-			110, 114, 101, 104, 2, 101, 0, 4, 101, 1, 98, 108, 105, 116, 3, 36, 86, 13, 0, 101, 1, 98, 109, 101, 2, 32, 12, 0, 101, 1,
-			98, 109, 101, 2, 116, 32, 12, 0, 101, 1, 102, 2, 12, 12, 0, 101, 1, 104, 2, 12, 0, 101, 1, 107, 10, 2, 12, 0, 101, 1,
-			108, 100, 108, 105, 118, 2, 12, 0, 101, 1, 108, 100, 110, 105, 2, 12, 0, 101, 1, 108, 100, 117, 2, 12, 0, 101, 1, 108, 102, 97,
-			2, 12, 0, 101, 1, 108, 106, 101, 118, 2, 12, 0, 101, 1, 108, 110, 101, 104, 2, 12, 0, 101, 1, 108, 112, 111, 2, 12, 0, 101,
-			1, 108, 114, 111, 102, 2, 12, 0, 101, 1, 108, 115, 105, 109, 2, 12, 0, 101, 1, 108, 115, 118, 105, 108, 2, 12, 0, 101, 1, 108,
-			116, 101, 114, 2, 12, 0, 101, 1, 108, 116, 114, 111, 98, 2, 12, 0, 101, 1, 109, 115, 3, 36, 86, 108, 0, 4, 101, 114, 1, 98,
-			108, 105, 116, 3, 36, 86, 114, 0, 101, 114, 1, 102, 2, 32, 12, 0, 101, 114, 1, 104, 2, 12, 0, 101, 114, 1, 108, 100, 108, 105,
-			118, 2, 12, 0, 101, 114, 1, 108, 100, 110, 105, 2, 12, 0, 101, 114, 1, 108, 100, 117, 2, 12, 0, 101, 114, 1, 108, 102, 97, 2,
-			12, 0, 101, 114, 1, 108, 106, 101, 118, 2, 12, 0, 101, 114, 1, 108, 110, 101, 104, 2, 12, 0, 101, 114, 1, 108, 112, 111, 2, 12,
-			0, 101, 114, 1, 108, 114, 111, 102, 2, 12, 0, 101, 114, 1, 108, 115, 105, 109, 2, 12, 0, 101, 114, 1, 108, 115, 118, 105, 108, 2,
-			12, 0, 101, 114, 1, 108, 116, 101, 114, 2, 12, 0, 101, 114, 1, 108, 116, 114, 111, 98, 2, 12, 0, 101, 1, 114, 10, 2, 32, 3,
-			108, 86, 13, 0, 4, 101, 1, 108, 116, 114, 111, 98, 3, 109, 86, 13, 0, 101, 1, 114, 98, 108, 101, 104, 0, 101, 1, 114, 100, 108,
-			105, 118, 2, 32, 12, 0, 101, 1, 114, 101, 98, 2, 32, 12, 0, 101, 1, 114, 101, 108, 2, 32, 12, 0, 101, 1, 114, 101, 110, 114,
+		static unsigned char espeakdata_dicts11_data[208490] = {
+			0, 4, 0, 0, 253, 209, 1, 0, 11, 200, 65, 35, 199, 72, 19, 77, 165, 32, 15, 8, 197, 52, 244, 134, 20, 208, 15, 0, 13, 202,
+			61, 35, 129, 52, 83, 148, 21, 34, 78, 28, 15, 13, 202, 52, 19, 137, 24, 84, 212, 21, 34, 78, 28, 15, 13, 202, 44, 243, 150, 60,
+			197, 84, 21, 34, 78, 28, 15, 13, 202, 44, 243, 134, 72, 243, 148, 21, 34, 78, 28, 15, 13, 202, 36, 229, 5, 73, 3, 204, 21, 34,
+			78, 28, 15, 13, 202, 36, 225, 11, 88, 20, 148, 21, 34, 78, 28, 15, 13, 202, 16, 242, 213, 52, 83, 148, 21, 34, 78, 28, 15, 13,
+			202, 5, 33, 213, 52, 83, 148, 21, 34, 78, 28, 15, 0, 8, 197, 80, 18, 212, 36, 176, 15, 7, 196, 88, 20, 129, 56, 16, 0, 17,
+			67, 52, 83, 128, 65, 36, 50, 15, 89, 108, 0, 81, 115, 195, 165, 32, 10, 199, 4, 229, 9, 8, 147, 211, 20, 15, 9, 198, 60, 224,
+			78, 37, 53, 0, 15, 9, 198, 9, 81, 134, 37, 53, 0, 15, 15, 204, 81, 32, 78, 77, 50, 210, 36, 33, 82, 36, 225, 192, 15, 15,
+			204, 77, 80, 147, 80, 19, 148, 37, 97, 82, 36, 225, 192, 15, 15, 204, 72, 148, 201, 44, 245, 149, 72, 65, 82, 36, 225, 192, 15, 15,
+			204, 64, 84, 147, 64, 82, 212, 37, 97, 82, 36, 225, 192, 15, 15, 204, 64, 84, 134, 20, 181, 9, 60, 225, 82, 36, 225, 192, 15, 15,
+			204, 44, 243, 134, 20, 181, 9, 60, 225, 82, 36, 225, 192, 15, 15, 204, 36, 225, 18, 20, 114, 83, 81, 33, 82, 36, 225, 192, 15, 10,
+			199, 16, 82, 193, 56, 84, 211, 20, 15, 10, 199, 52, 243, 143, 45, 32, 84, 36, 15, 14, 70, 77, 81, 134, 60, 194, 192, 89, 109, 83,
+			109, 49, 0, 6, 195, 52, 83, 128, 8, 0, 12, 201, 4, 32, 146, 21, 98, 65, 81, 84, 128, 15, 11, 200, 64, 21, 18, 60, 225, 83,
+			76, 80, 15, 0, 9, 198, 104, 243, 204, 60, 114, 64, 15, 12, 201, 16, 83, 9, 44, 21, 5, 77, 49, 64, 15, 10, 199, 36, 224, 68,
+			124, 181, 129, 80, 15, 0, 9, 198, 5, 0, 84, 37, 50, 192, 15, 7, 196, 5, 0, 84, 36, 15, 9, 198, 44, 243, 150, 20, 229, 0,
+			15, 9, 198, 44, 243, 148, 4, 229, 0, 15, 9, 198, 5, 0, 78, 4, 113, 64, 15, 9, 68, 5, 4, 12, 20, 21, 0, 47, 12, 68,
+			32, 21, 132, 20, 107, 117, 86, 13, 0, 76, 13, 4, 95, 116, 117, 114, 47, 6, 112, 12, 50, 72, 0, 5, 193, 108, 43, 49, 0, 11,
+			200, 80, 83, 80, 21, 32, 84, 85, 32, 15, 11, 200, 48, 149, 20, 21, 32, 84, 85, 32, 15, 11, 200, 16, 83, 79, 45, 32, 84, 85,
+			32, 15, 8, 197, 60, 194, 69, 72, 80, 15, 8, 197, 56, 245, 5, 72, 80, 15, 8, 197, 56, 81, 197, 72, 80, 15, 10, 199, 77, 98,
+			78, 16, 193, 82, 36, 15, 10, 199, 77, 84, 141, 84, 193, 82, 36, 15, 10, 199, 76, 180, 137, 8, 193, 82, 36, 15, 10, 199, 65, 34,
+			86, 5, 65, 82, 36, 15, 10, 199, 28, 19, 1, 57, 65, 82, 36, 15, 10, 199, 25, 34, 77, 85, 33, 82, 36, 15, 10, 199, 24, 19,
+			19, 44, 225, 82, 36, 15, 10, 199, 21, 2, 71, 60, 225, 82, 36, 15, 10, 199, 12, 130, 75, 4, 225, 82, 36, 15, 10, 199, 8, 146,
+			143, 85, 65, 82, 36, 15, 10, 199, 5, 37, 9, 48, 193, 82, 36, 15, 9, 198, 52, 244, 203, 61, 98, 84, 15, 9, 198, 4, 229, 18,
+			4, 50, 84, 15, 8, 197, 36, 66, 79, 80, 144, 15, 13, 69, 76, 244, 8, 36, 80, 89, 125, 40, 83, 111, 0, 0, 11, 200, 77, 65,
+			82, 20, 244, 203, 61, 0, 15, 9, 198, 44, 148, 149, 72, 114, 64, 15, 11, 200, 76, 180, 159, 16, 65, 82, 21, 32, 15, 18, 70, 61,
+			34, 71, 4, 210, 64, 39, 34, 36, 81, 6, 35, 65, 37, 0, 15, 9, 198, 21, 84, 153, 80, 210, 64, 15, 9, 198, 4, 224, 84, 60,
+			210, 64, 15, 0, 6, 195, 72, 81, 201, 15, 8, 197, 52, 20, 212, 36, 176, 15, 8, 197, 28, 84, 212, 36, 176, 15, 8, 197, 8, 84,
+			212, 36, 176, 15, 6, 65, 8, 71, 36, 0, 0, 9, 198, 29, 39, 195, 37, 53, 0, 15, 10, 199, 29, 147, 78, 5, 50, 85, 52, 15,
+			9, 198, 36, 229, 133, 57, 64, 82, 15, 9, 198, 4, 229, 9, 45, 96, 82, 15, 10, 199, 45, 103, 210, 84, 192, 78, 80, 15, 0, 12,
+			201, 44, 243, 77, 37, 52, 193, 72, 144, 84, 15, 12, 201, 8, 20, 137, 84, 212, 213, 48, 96, 84, 15, 7, 196, 81, 82, 193, 56, 16,
+			7, 196, 72, 243, 65, 56, 16, 7, 196, 4, 97, 129, 8, 15, 0, 10, 199, 65, 39, 211, 21, 37, 133, 72, 15, 12, 201, 20, 229, 18,
+			21, 4, 133, 56, 19, 148, 15, 0, 33, 69, 65, 80, 140, 36, 48, 48, 109, 71, 55, 114, 49, 15, 89, 132, 12, 84, 111, 89, 14, 50,
+			0, 81, 115, 101, 114, 118, 105, 99, 101, 110, 32, 30, 69, 65, 80, 140, 36, 48, 48, 109, 71, 55, 114, 49, 15, 89, 132, 12, 84, 111,
+			89, 0, 81, 115, 101, 114, 118, 105, 99, 101, 32, 31, 69, 65, 80, 140, 36, 48, 48, 108, 71, 55, 36, 49, 15, 72, 39, 65, 6, 117,
+			57, 50, 0, 15, 81, 100, 111, 109, 97, 105, 110, 32, 6, 65, 12, 89, 36, 0, 0, 11, 200, 81, 35, 205, 64, 85, 9, 77, 64, 15,
+			11, 200, 77, 84, 146, 20, 19, 9, 77, 64, 15, 11, 200, 48, 144, 133, 72, 19, 9, 77, 64, 15, 11, 200, 40, 245, 82, 56, 19, 9,
+			77, 64, 15, 11, 200, 8, 83, 12, 21, 68, 137, 77, 64, 15, 12, 201, 8, 144, 140, 36, 241, 210, 4, 97, 82, 15, 10, 199, 81, 34,
+			83, 80, 84, 211, 20, 15, 10, 199, 36, 229, 5, 72, 84, 211, 20, 15, 10, 199, 45, 241, 133, 72, 84, 133, 80, 15, 16, 75, 84, 225,
+			5, 73, 53, 1, 80, 83, 69, 57, 64, 21, 0, 47, 0, 8, 197, 76, 20, 139, 60, 208, 15, 13, 202, 76, 179, 204, 20, 209, 83, 80,
+			84, 133, 72, 15, 9, 198, 81, 149, 129, 29, 66, 71, 15, 9, 198, 61, 4, 137, 29, 66, 71, 15, 9, 198, 56, 20, 129, 29, 66, 71,
+			15, 9, 198, 48, 149, 129, 29, 66, 71, 15, 9, 198, 81, 149, 129, 29, 66, 71, 15, 9, 198, 56, 20, 129, 29, 66, 71, 15, 9, 198,
+			48, 149, 129, 29, 66, 71, 15, 0, 9, 198, 44, 20, 142, 20, 243, 0, 15, 0, 9, 198, 32, 84, 143, 37, 51, 69, 15, 9, 198, 24,
+			20, 195, 37, 51, 69, 15, 9, 198, 13, 146, 204, 37, 51, 69, 15, 9, 198, 8, 20, 20, 37, 51, 69, 15, 13, 202, 72, 81, 204, 20,
+			209, 78, 80, 84, 133, 80, 15, 13, 202, 4, 194, 207, 32, 243, 9, 76, 84, 133, 80, 15, 12, 201, 12, 192, 73, 73, 99, 217, 4, 224,
+			197, 15, 9, 68, 9, 35, 206, 96, 21, 0, 47, 6, 65, 16, 72, 36, 0, 0, 15, 204, 46, 147, 147, 16, 148, 203, 72, 147, 73, 56,
+			84, 128, 15, 7, 196, 60, 224, 78, 36, 15, 9, 198, 97, 147, 15, 29, 32, 70, 15, 9, 198, 64, 20, 129, 29, 32, 70, 15, 9, 198,
+			48, 149, 15, 29, 32, 70, 15, 9, 198, 44, 83, 73, 29, 32, 70, 15, 9, 198, 24, 243, 143, 29, 32, 70, 15, 9, 198, 16, 83, 79,
+			29, 32, 70, 15, 17, 70, 64, 83, 132, 4, 229, 0, 48, 121, 68, 72, 6, 121, 68, 0, 15, 0, 8, 197, 72, 21, 137, 56, 80, 15,
+			15, 69, 8, 83, 9, 104, 80, 71, 36, 55, 37, 12, 89, 0, 66, 12, 201, 5, 34, 223, 60, 195, 199, 37, 50, 192, 15, 8, 197, 20,
+			212, 1, 80, 144, 15, 8, 197, 4, 194, 217, 52, 144, 15, 12, 69, 12, 243, 142, 36, 80, 49, 109, 50, 37, 0, 11, 67, 76, 147, 128,
+			89, 6, 37, 50, 0, 76, 0, 12, 201, 45, 103, 210, 84, 192, 78, 80, 148, 203, 15, 12, 201, 44, 19, 95, 48, 83, 206, 80, 148, 203,
+			15, 9, 198, 29, 80, 82, 4, 226, 64, 15, 14, 4, 95, 100, 112, 116, 10, 49, 4, 108, 65, 117, 12, 0, 0, 9, 198, 61, 67, 211,
+			44, 244, 0, 15, 10, 199, 48, 144, 137, 16, 147, 169, 76, 15, 10, 199, 28, 192, 77, 61, 84, 169, 76, 15, 10, 199, 4, 192, 149, 52,
+			147, 169, 76, 15, 8, 197, 8, 84, 204, 60, 112, 15, 12, 201, 45, 33, 65, 80, 149, 137, 80, 85, 0, 15, 11, 200, 64, 20, 129, 16,
+			148, 201, 76, 176, 15, 11, 200, 60, 36, 212, 21, 68, 137, 76, 176, 15, 11, 200, 52, 85, 1, 24, 244, 137, 76, 176, 15, 11, 200, 52,
+			19, 131, 33, 84, 137, 76, 176, 15, 11, 200, 48, 144, 129, 56, 84, 201, 76, 176, 15, 11, 200, 36, 225, 15, 56, 84, 201, 76, 176, 15,
+			11, 200, 36, 195, 21, 76, 244, 137, 76, 176, 15, 11, 200, 28, 16, 143, 56, 84, 201, 76, 176, 15, 11, 200, 21, 128, 197, 57, 68, 137,
+			76, 176, 15, 14, 203, 20, 208, 78, 12, 148, 1, 80, 244, 137, 76, 176, 15, 11, 200, 13, 147, 9, 56, 68, 137, 76, 176, 15, 11, 200,
+			4, 195, 21, 76, 244, 137, 76, 176, 15, 0, 11, 200, 65, 35, 205, 37, 50, 213, 165, 48, 15, 11, 200, 36, 229, 18, 5, 97, 78, 165,
+			48, 15, 12, 201, 81, 32, 78, 77, 3, 210, 82, 148, 128, 15, 12, 201, 72, 82, 207, 52, 208, 78, 18, 148, 128, 15, 9, 198, 21, 0,
+			85, 48, 85, 0, 15, 9, 198, 76, 19, 137, 80, 85, 0, 15, 9, 198, 44, 21, 137, 80, 85, 0, 15, 9, 198, 20, 229, 9, 80, 85,
+			0, 15, 12, 201, 72, 17, 9, 60, 195, 199, 37, 50, 192, 15, 12, 201, 52, 146, 210, 60, 225, 83, 37, 50, 192, 15, 12, 201, 45, 35,
+			206, 60, 195, 199, 37, 50, 192, 15, 12, 201, 44, 20, 143, 48, 147, 135, 37, 50, 192, 15, 12, 201, 32, 148, 16, 60, 195, 199, 37, 50,
+			192, 15, 12, 201, 25, 33, 78, 60, 195, 199, 37, 50, 192, 15, 12, 201, 24, 147, 13, 60, 195, 199, 37, 50, 192, 15, 9, 198, 56, 144,
+			133, 56, 149, 0, 15, 10, 199, 4, 224, 75, 60, 197, 84, 36, 15, 9, 198, 64, 243, 9, 80, 146, 192, 15, 9, 198, 52, 82, 193, 56,
+			146, 192, 15, 9, 198, 44, 84, 129, 52, 146, 192, 15, 9, 198, 72, 81, 133, 72, 21, 0, 15, 9, 198, 89, 83, 14, 21, 32, 66, 15,
+			9, 198, 81, 32, 70, 36, 176, 66, 15, 9, 198, 72, 83, 65, 72, 176, 66, 15, 9, 198, 44, 243, 80, 5, 32, 66, 15, 9, 198, 44,
+			243, 77, 85, 64, 66, 15, 9, 198, 16, 82, 204, 36, 224, 66, 15, 0, 12, 201, 76, 176, 82, 48, 21, 9, 58, 148, 192, 15, 12, 201,
+			44, 243, 77, 84, 226, 75, 5, 74, 82, 15, 12, 201, 44, 243, 12, 4, 35, 210, 5, 74, 82, 15, 12, 201, 16, 83, 79, 57, 53, 18,
+			5, 74, 82, 15, 10, 199, 25, 32, 78, 44, 241, 143, 56, 15, 15, 204, 77, 68, 149, 45, 69, 82, 4, 194, 83, 80, 148, 203, 15, 0,
+			12, 201, 88, 17, 193, 8, 243, 132, 21, 33, 64, 15, 12, 201, 65, 35, 199, 72, 19, 77, 21, 33, 64, 15, 12, 201, 44, 243, 150, 60,
+			197, 84, 21, 33, 64, 15, 12, 201, 44, 243, 148, 72, 20, 212, 21, 33, 64, 15, 12, 201, 16, 242, 213, 52, 83, 148, 21, 33, 64, 15,
+			12, 201, 5, 33, 213, 52, 83, 148, 21, 33, 64, 15, 8, 197, 33, 243, 5, 72, 144, 15, 8, 197, 26, 147, 5, 72, 144, 15, 0, 6,
+			195, 48, 241, 201, 15, 9, 198, 64, 83, 5, 72, 147, 133, 15, 9, 198, 44, 243, 5, 72, 147, 133, 15, 16, 205, 56, 21, 9, 60, 224,
+			76, 76, 240, 201, 4, 194, 83, 80, 15, 12, 201, 64, 244, 201, 80, 149, 137, 80, 85, 0, 15, 12, 201, 56, 81, 193, 80, 149, 137, 80,
+			85, 0, 15, 6, 65, 24, 115, 83, 0, 0, 10, 199, 61, 85, 133, 73, 69, 82, 20, 15, 10, 199, 44, 243, 134, 37, 69, 82, 20, 15,
+			9, 198, 17, 35, 199, 37, 53, 0, 15, 9, 198, 77, 147, 132, 36, 177, 82, 15, 9, 198, 73, 80, 146, 36, 49, 82, 15, 10, 199, 72,
+			84, 197, 73, 97, 82, 20, 15, 10, 199, 72, 84, 15, 73, 65, 82, 20, 15, 10, 199, 72, 21, 9, 60, 225, 82, 20, 15, 10, 199, 64,
+			192, 75, 5, 65, 82, 20, 15, 10, 199, 64, 21, 5, 57, 65, 82, 20, 15, 10, 199, 64, 19, 12, 21, 65, 82, 20, 15, 10, 199, 45,
+			85, 133, 73, 65, 82, 20, 15, 10, 199, 45, 83, 13, 36, 225, 82, 20, 15, 10, 199, 24, 244, 198, 5, 65, 82, 20, 15, 9, 198, 24,
+			84, 142, 37, 49, 82, 15, 10, 199, 16, 242, 212, 61, 33, 82, 20, 15, 10, 199, 16, 84, 197, 73, 65, 82, 20, 15, 10, 199, 16, 82,
+			210, 21, 65, 82, 20, 15, 10, 199, 16, 80, 129, 81, 65, 82, 20, 15, 10, 199, 5, 69, 5, 77, 65, 82, 20, 15, 10, 199, 5, 4,
+			15, 73, 65, 82, 20, 15, 10, 199, 4, 181, 9, 60, 225, 82, 20, 15, 9, 198, 5, 35, 69, 56, 145, 78, 15, 9, 198, 16, 19, 65,
+			76, 49, 78, 15, 0, 7, 196, 45, 84, 133, 72, 15, 11, 200, 45, 35, 206, 60, 209, 84, 72, 144, 15, 11, 200, 5, 81, 9, 60, 209,
+			84, 72, 144, 15, 12, 201, 25, 83, 132, 4, 209, 78, 80, 19, 0, 15, 0, 28, 68, 88, 244, 133, 76, 84, 108, 12, 89, 15, 49, 84,
+			121, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 11, 200, 53, 84, 203, 84, 192, 84, 85, 32, 15, 11, 200, 44, 20,
+			130, 85, 32, 84, 61, 32, 15, 11, 200, 36, 228, 208, 37, 32, 84, 61, 32, 15, 9, 198, 77, 1, 67, 36, 83, 0, 15, 12, 201, 77,
+			65, 82, 20, 243, 69, 81, 34, 64, 15, 12, 201, 44, 243, 15, 72, 147, 69, 81, 34, 64, 15, 12, 201, 24, 147, 15, 76, 241, 137, 45,
+			83, 64, 15, 12, 201, 80, 84, 146, 37, 67, 210, 37, 83, 64, 15, 12, 201, 60, 97, 133, 73, 67, 210, 37, 83, 64, 15, 9, 198, 61,
+			5, 9, 52, 19, 0, 15, 7, 196, 88, 244, 133, 76, 72, 0, 10, 199, 54, 144, 140, 21, 34, 78, 28, 15, 12, 201, 12, 128, 82, 48,
+			21, 1, 56, 84, 137, 15, 9, 198, 32, 148, 212, 61, 34, 69, 15, 6, 65, 28, 81, 36, 0, 0, 11, 200, 33, 227, 132, 80, 84, 137,
+			56, 112, 15, 10, 199, 8, 20, 143, 56, 84, 211, 20, 15, 0, 18, 67, 44, 19, 128, 49, 118, 50, 15, 107, 117, 0, 81, 104, 97, 118,
+			101, 32, 11, 200, 40, 84, 137, 44, 244, 143, 76, 80, 15, 7, 196, 52, 84, 207, 56, 15, 13, 202, 81, 34, 65, 56, 117, 76, 5, 66,
+			79, 56, 15, 13, 202, 81, 32, 78, 76, 195, 203, 5, 66, 79, 56, 15, 13, 202, 77, 68, 129, 56, 117, 76, 5, 66, 79, 56, 15, 13,
+			202, 44, 243, 148, 20, 212, 12, 5, 66, 79, 56, 15, 13, 202, 36, 229, 18, 61, 52, 5, 45, 66, 79, 56, 15, 13, 202, 36, 212, 18,
+			61, 98, 83, 5, 66, 79, 56, 15, 13, 202, 4, 178, 207, 52, 211, 196, 5, 66, 79, 56, 15, 9, 198, 64, 147, 129, 29, 66, 71, 15,
+			11, 200, 60, 229, 15, 28, 83, 133, 76, 80, 15, 11, 200, 64, 20, 148, 36, 50, 80, 36, 80, 15, 7, 196, 44, 149, 9, 56, 15, 9,
+			198, 64, 147, 129, 29, 66, 71, 15, 6, 195, 44, 19, 128, 76, 0, 9, 198, 36, 228, 212, 37, 69, 84, 15, 13, 202, 52, 21, 18, 36,
+			181, 76, 21, 34, 78, 28, 15, 13, 202, 36, 225, 18, 20, 117, 76, 21, 34, 78, 28, 15, 13, 202, 20, 180, 208, 48, 242, 84, 21, 34,
+			78, 28, 15, 13, 202, 16, 148, 212, 72, 144, 149, 21, 34, 78, 28, 15, 13, 202, 8, 20, 146, 36, 176, 68, 21, 34, 78, 28, 15, 12,
+			201, 77, 3, 206, 80, 19, 137, 76, 209, 64, 15, 12, 201, 76, 83, 73, 56, 20, 137, 76, 209, 64, 15, 12, 201, 52, 243, 133, 80, 20,
+			137, 76, 209, 64, 15, 12, 201, 20, 180, 212, 72, 83, 73, 76, 209, 64, 15, 0, 14, 203, 65, 39, 211, 85, 4, 15, 76, 149, 9, 60,
+			224, 15, 14, 203, 84, 66, 207, 56, 181, 82, 72, 84, 137, 56, 112, 15, 14, 203, 81, 32, 85, 52, 21, 9, 76, 84, 137, 56, 112, 15,
+			14, 203, 81, 32, 78, 76, 210, 84, 80, 84, 137, 56, 112, 15, 14, 203, 80, 84, 212, 4, 209, 78, 80, 84, 137, 56, 112, 15, 14, 203,
+			80, 84, 141, 60, 116, 129, 24, 84, 137, 56, 112, 15, 14, 203, 77, 147, 139, 72, 85, 9, 76, 84, 137, 56, 112, 15, 14, 203, 77, 1,
+			67, 36, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 76, 147, 80, 48, 145, 137, 12, 84, 137, 56, 112, 15, 13, 202, 64, 244, 148, 73,
+			245, 20, 21, 34, 78, 28, 15, 14, 203, 64, 244, 21, 48, 20, 137, 76, 84, 137, 56, 112, 15, 14, 203, 64, 20, 140, 4, 209, 78, 80,
+			84, 137, 56, 112, 15, 14, 203, 56, 243, 73, 56, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 56, 85, 84, 72, 19, 9, 76, 84, 137,
+			56, 112, 15, 14, 203, 56, 21, 21, 72, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 53, 149, 15, 48, 241, 201, 76, 84, 137, 56, 112,
+			15, 14, 203, 48, 144, 133, 72, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 44, 20, 9, 80, 19, 9, 76, 84, 137, 56, 112, 15, 14,
+			203, 44, 19, 12, 36, 116, 129, 24, 84, 137, 56, 112, 15, 14, 203, 36, 65, 79, 48, 241, 201, 76, 84, 137, 56, 112, 15, 14, 203, 32,
+			243, 79, 28, 83, 137, 76, 84, 137, 56, 112, 15, 14, 203, 25, 83, 132, 4, 209, 78, 80, 84, 137, 56, 112, 15, 14, 203, 24, 244, 198,
+			61, 33, 83, 12, 84, 137, 56, 112, 15, 14, 203, 24, 147, 140, 4, 225, 9, 76, 84, 137, 56, 112, 15, 14, 203, 20, 180, 208, 72, 244,
+			18, 36, 84, 137, 56, 112, 15, 14, 203, 16, 148, 203, 72, 147, 73, 56, 84, 137, 56, 112, 15, 14, 203, 16, 147, 69, 57, 50, 79, 56,
+			84, 137, 56, 112, 15, 14, 203, 16, 81, 137, 9, 34, 76, 48, 84, 137, 56, 112, 15, 14, 203, 16, 21, 1, 52, 21, 9, 76, 84, 137,
+			56, 112, 15, 14, 203, 8, 20, 212, 5, 33, 9, 76, 84, 137, 56, 112, 15, 14, 203, 5, 85, 15, 52, 21, 9, 76, 84, 137, 56, 112,
+			15, 14, 203, 4, 193, 129, 8, 85, 9, 76, 84, 137, 56, 112, 15, 14, 203, 4, 48, 197, 77, 50, 79, 56, 84, 137, 56, 112, 15, 10,
+			199, 50, 145, 206, 4, 117, 9, 28, 15, 10, 199, 50, 145, 206, 4, 117, 9, 28, 15, 7, 65, 32, 107, 125, 12, 0, 0, 9, 198, 8,
+			243, 137, 80, 85, 0, 15, 9, 198, 16, 81, 137, 56, 149, 0, 15, 13, 202, 84, 226, 86, 21, 36, 193, 48, 148, 205, 20, 15, 13, 202,
+			44, 243, 12, 20, 181, 9, 88, 148, 205, 20, 15, 9, 198, 5, 54, 76, 4, 229, 0, 15, 0, 25, 67, 28, 21, 128, 81, 117, 15, 89,
+			121, 57, 15, 47, 36, 55, 0, 82, 115, 105, 103, 32, 116, 105, 108, 32, 8, 197, 64, 244, 197, 72, 80, 15, 8, 197, 4, 181, 5, 72,
+			80, 15, 8, 197, 64, 243, 9, 80, 144, 15, 8, 197, 9, 83, 9, 52, 144, 15, 0, 16, 205, 84, 65, 9, 24, 97, 82, 20, 229, 9,
+			21, 34, 78, 28, 15, 10, 199, 52, 21, 5, 52, 21, 9, 44, 15, 10, 199, 5, 34, 84, 52, 85, 9, 44, 15, 10, 199, 16, 84, 5,
+			56, 65, 78, 76, 15, 9, 1, 35, 50, 6, 125, 65, 108, 0, 0, 22, 65, 36, 37, 15, 49, 84, 6, 121, 12, 72, 108, 0, 81, 107,
+			118, 97, 114, 116, 101, 114, 32, 10, 199, 76, 176, 78, 16, 19, 41, 76, 15, 10, 199, 44, 243, 148, 4, 114, 105, 76, 15, 9, 198, 52,
+			81, 9, 125, 96, 76, 15, 8, 65, 36, 10, 37, 11, 0, 76, 0, 11, 200, 80, 83, 132, 20, 229, 9, 165, 48, 15, 11, 200, 65, 33,
+			83, 80, 145, 201, 165, 48, 15, 11, 200, 44, 243, 80, 20, 225, 9, 165, 48, 15, 9, 198, 44, 147, 133, 80, 146, 192, 15, 9, 198, 4,
+			225, 197, 48, 146, 192, 15, 9, 198, 81, 83, 133, 76, 145, 78, 15, 9, 198, 21, 68, 149, 72, 145, 78, 15, 9, 198, 5, 52, 217, 72,
+			145, 78, 15, 13, 1, 37, 48, 51, 39, 89, 6, 115, 50, 72, 0, 27, 0, 11, 200, 56, 83, 204, 37, 66, 75, 84, 208, 15, 11, 200,
+			56, 20, 139, 61, 66, 75, 84, 208, 15, 19, 72, 12, 19, 148, 21, 32, 149, 73, 144, 49, 118, 50, 47, 109, 71, 34, 37, 0, 7, 1,
+			38, 10, 108, 58, 0, 0, 12, 201, 44, 21, 1, 65, 83, 20, 21, 33, 64, 15, 12, 201, 25, 32, 71, 52, 83, 148, 21, 33, 64, 15,
+			12, 201, 24, 245, 15, 44, 244, 9, 21, 33, 64, 15, 24, 73, 8, 243, 130, 60, 227, 137, 21, 33, 64, 71, 108, 68, 71, 108, 68, 57,
+			6, 115, 12, 34, 0, 15, 12, 201, 8, 19, 132, 21, 35, 204, 21, 33, 64, 15, 11, 200, 65, 39, 212, 21, 34, 84, 84, 208, 15, 12,
+			201, 72, 81, 133, 45, 67, 210, 37, 83, 64, 15, 12, 201, 65, 35, 214, 37, 51, 210, 37, 83, 64, 15, 12, 201, 52, 147, 137, 77, 65,
+			82, 37, 83, 64, 15, 12, 201, 45, 33, 77, 5, 67, 210, 37, 83, 64, 15, 9, 198, 16, 148, 203, 60, 98, 76, 15, 13, 1, 39, 35,
+			48, 39, 89, 47, 34, 6, 108, 83, 0, 0, 8, 197, 28, 83, 204, 60, 112, 15, 14, 68, 44, 19, 133, 48, 49, 117, 50, 6, 36, 55,
+			0, 15, 6, 195, 33, 84, 137, 15, 9, 198, 48, 147, 143, 48, 85, 77, 15, 9, 198, 76, 147, 9, 12, 149, 77, 15, 9, 198, 64, 243,
+			15, 56, 149, 77, 15, 7, 196, 32, 16, 137, 48, 15, 7, 196, 12, 149, 137, 48, 15, 7, 196, 88, 242, 193, 48, 15, 7, 196, 64, 242,
+			193, 48, 15, 7, 196, 24, 242, 193, 48, 15, 7, 65, 40, 57, 108, 86, 0, 0, 13, 202, 64, 20, 129, 48, 193, 76, 60, 116, 129, 52,
+			15, 9, 198, 52, 147, 12, 36, 32, 82, 15, 9, 198, 17, 35, 205, 20, 64, 82, 15, 0, 15, 1, 42, 6, 117, 89, 72, 14, 34, 4,
+			37, 89, 81, 0, 27, 0, 14, 70, 48, 145, 197, 76, 243, 64, 55, 111, 89, 109, 65, 0, 9, 198, 65, 35, 211, 4, 148, 212, 15, 9,
+			198, 48, 147, 135, 88, 148, 212, 15, 17, 70, 77, 98, 78, 28, 243, 64, 89, 84, 36, 68, 6, 108, 65, 0, 15, 9, 198, 16, 21, 1,
+			56, 243, 64, 15, 9, 198, 5, 85, 15, 56, 243, 64, 15, 9, 198, 16, 144, 71, 72, 19, 64, 15, 9, 198, 4, 224, 71, 72, 19, 64,
+			15, 9, 198, 65, 35, 194, 48, 83, 64, 15, 10, 69, 8, 244, 212, 60, 224, 21, 0, 47, 8, 1, 43, 48, 55, 40, 89, 0, 0, 10,
+			199, 64, 241, 1, 29, 34, 83, 80, 15, 10, 199, 64, 84, 211, 36, 210, 83, 80, 15, 10, 199, 52, 243, 143, 80, 82, 83, 80, 15, 10,
+			199, 52, 243, 129, 72, 178, 83, 80, 15, 10, 199, 45, 83, 20, 85, 34, 83, 80, 15, 10, 199, 44, 243, 148, 61, 34, 83, 80, 15, 10,
+			199, 24, 19, 1, 56, 114, 83, 80, 15, 10, 199, 21, 128, 197, 73, 2, 83, 80, 15, 10, 199, 16, 81, 129, 37, 66, 83, 80, 15, 10,
+			199, 8, 19, 132, 4, 114, 83, 80, 15, 11, 200, 164, 179, 206, 60, 210, 83, 21, 32, 15, 11, 200, 65, 39, 206, 84, 209, 82, 21, 32,
+			15, 11, 200, 45, 244, 133, 77, 65, 82, 21, 32, 15, 7, 196, 76, 83, 137, 48, 15, 7, 65, 44, 49, 125, 12, 0, 0, 11, 200, 5,
+			4, 5, 56, 66, 67, 37, 64, 15, 8, 197, 65, 81, 82, 36, 192, 15, 12, 201, 25, 224, 143, 72, 113, 78, 76, 84, 128, 15, 0, 13,
+			202, 81, 32, 78, 76, 194, 84, 80, 84, 133, 72, 15, 11, 200, 84, 226, 84, 5, 34, 83, 52, 80, 15, 11, 200, 76, 128, 77, 4, 226,
+			83, 52, 80, 15, 11, 200, 64, 197, 82, 4, 194, 83, 52, 80, 15, 11, 200, 64, 83, 142, 4, 194, 83, 52, 80, 15, 11, 200, 52, 17,
+			206, 21, 66, 83, 52, 80, 15, 11, 200, 44, 242, 193, 36, 226, 83, 52, 80, 15, 11, 200, 33, 148, 14, 61, 66, 83, 52, 80, 15, 11,
+			200, 32, 83, 12, 20, 226, 83, 52, 80, 15, 11, 200, 12, 19, 22, 36, 226, 83, 52, 80, 15, 8, 197, 77, 148, 212, 20, 208, 15, 0,
+			7, 196, 81, 34, 105, 72, 15, 10, 199, 64, 243, 9, 80, 243, 15, 28, 15, 10, 199, 32, 85, 5, 72, 243, 15, 28, 15, 8, 197, 25,
+			84, 201, 60, 224, 15, 16, 205, 84, 66, 210, 101, 53, 1, 48, 194, 83, 21, 34, 78, 28, 15, 16, 205, 36, 225, 21, 77, 68, 137, 4,
+			194, 83, 21, 34, 78, 28, 15, 16, 205, 16, 149, 137, 76, 147, 206, 4, 194, 83, 21, 34, 78, 28, 15, 14, 203, 48, 21, 144, 5, 53,
+			5, 85, 34, 83, 21, 32, 15, 14, 203, 25, 83, 139, 80, 147, 206, 4, 194, 83, 21, 32, 15, 14, 203, 9, 84, 133, 5, 82, 210, 5,
+			66, 83, 21, 32, 15, 10, 199, 29, 34, 78, 4, 117, 9, 28, 15, 12, 201, 77, 147, 139, 72, 243, 137, 76, 209, 64, 15, 12, 201, 72,
+			85, 129, 56, 50, 9, 76, 209, 64, 15, 12, 201, 56, 20, 131, 37, 52, 201, 76, 209, 64, 15, 12, 201, 48, 84, 194, 36, 19, 137, 76,
+			209, 64, 15, 12, 201, 37, 51, 205, 61, 33, 137, 76, 209, 64, 15, 12, 201, 4, 224, 75, 72, 243, 137, 76, 209, 64, 15, 12, 201, 4,
+			194, 207, 32, 243, 9, 76, 209, 64, 15, 10, 199, 21, 128, 197, 48, 193, 78, 76, 15, 10, 199, 29, 34, 78, 4, 117, 9, 28, 15, 10,
+			199, 44, 243, 147, 60, 224, 78, 76, 15, 11, 70, 24, 148, 133, 92, 19, 12, 21, 0, 47, 14, 1, 47, 89, 81, 51, 108, 89, 72, 34,
+			121, 57, 0, 27, 0, 7, 196, 12, 84, 149, 80, 15, 17, 206, 61, 1, 82, 5, 66, 79, 56, 19, 9, 76, 84, 137, 56, 112, 15, 15,
+			204, 76, 83, 148, 36, 209, 78, 80, 19, 9, 76, 84, 128, 15, 10, 199, 52, 243, 135, 60, 195, 201, 16, 15, 10, 199, 52, 85, 1, 48,
+			195, 201, 16, 15, 15, 204, 44, 19, 21, 56, 64, 143, 72, 113, 78, 76, 84, 128, 15, 9, 68, 56, 145, 200, 80, 21, 0, 47, 6, 65,
+			48, 115, 55, 0, 13, 4, 95, 100, 105, 97, 6, 39, 65, 55, 129, 72, 0, 0, 9, 198, 4, 231, 211, 80, 84, 201, 15, 11, 200, 61,
+			97, 82, 53, 241, 212, 36, 112, 15, 12, 201, 28, 80, 143, 52, 209, 82, 48, 145, 192, 15, 10, 199, 44, 243, 147, 61, 37, 9, 20, 15,
+			10, 199, 5, 81, 9, 80, 244, 137, 20, 15, 10, 199, 76, 227, 194, 8, 148, 205, 20, 15, 10, 199, 64, 244, 21, 48, 148, 205, 20, 15,
+			10, 199, 56, 146, 9, 48, 148, 205, 20, 15, 10, 199, 56, 21, 21, 72, 148, 205, 20, 15, 10, 199, 37, 51, 1, 52, 148, 205, 20, 15,
+			10, 199, 25, 85, 21, 72, 148, 205, 20, 15, 10, 199, 20, 212, 9, 72, 148, 205, 20, 15, 10, 199, 8, 245, 21, 48, 148, 205, 20, 15,
+			10, 199, 4, 181, 9, 88, 148, 205, 20, 15, 14, 203, 44, 243, 135, 21, 53, 9, 60, 225, 82, 21, 64, 15, 11, 200, 124, 181, 137, 88,
+			19, 5, 57, 48, 15, 9, 198, 16, 144, 77, 4, 229, 0, 15, 0, 12, 201, 25, 243, 143, 52, 83, 143, 48, 241, 192, 15, 12, 201, 61,
+			97, 82, 88, 147, 132, 20, 194, 71, 15, 12, 201, 32, 83, 73, 76, 103, 210, 37, 50, 192, 15, 12, 201, 5, 67, 79, 76, 103, 210, 37,
+			50, 192, 15, 0, 10, 199, 72, 85, 15, 84, 50, 41, 72, 15, 10, 199, 44, 243, 132, 84, 181, 41, 72, 15, 10, 199, 36, 228, 208, 20,
+			181, 41, 72, 15, 9, 198, 88, 83, 4, 124, 66, 71, 15, 10, 199, 76, 176, 66, 4, 117, 9, 28, 15, 9, 198, 76, 85, 159, 72, 66,
+			71, 15, 10, 199, 24, 82, 140, 4, 117, 9, 28, 15, 10, 199, 76, 176, 66, 4, 117, 9, 28, 15, 10, 199, 24, 82, 140, 4, 117, 9,
+			28, 15, 15, 70, 76, 245, 8, 20, 38, 64, 89, 109, 86, 14, 71, 37, 0, 0, 10, 199, 52, 148, 193, 57, 68, 143, 64, 15, 10, 199,
+			24, 147, 1, 57, 68, 143, 64, 15, 10, 199, 76, 180, 143, 25, 83, 41, 76, 15, 12, 201, 8, 84, 212, 36, 19, 9, 80, 85, 0, 69,
+			9, 198, 4, 84, 143, 17, 35, 205, 15, 12, 201, 85, 53, 1, 8, 147, 9, 80, 85, 0, 15, 12, 201, 76, 83, 147, 84, 19, 9, 80,
+			85, 0, 15, 12, 201, 36, 229, 129, 48, 145, 9, 80, 85, 0, 15, 12, 201, 36, 211, 79, 8, 147, 9, 80, 85, 0, 15, 12, 201, 36,
+			195, 5, 28, 19, 9, 80, 85, 0, 15, 12, 201, 8, 84, 212, 36, 19, 9, 80, 85, 0, 15, 12, 201, 4, 224, 201, 20, 227, 137, 80,
+			85, 0, 15, 9, 198, 64, 84, 137, 24, 84, 137, 15, 9, 198, 44, 147, 133, 76, 84, 137, 15, 9, 198, 24, 20, 193, 56, 84, 137, 15,
+			10, 199, 100, 226, 214, 125, 33, 9, 28, 15, 10, 199, 77, 145, 41, 77, 67, 9, 28, 15, 10, 199, 58, 145, 22, 20, 225, 9, 28, 15,
+			11, 200, 81, 48, 82, 37, 53, 9, 76, 176, 15, 11, 200, 77, 81, 1, 56, 84, 201, 76, 176, 15, 11, 200, 64, 84, 137, 24, 84, 137,
+			76, 176, 15, 11, 200, 64, 83, 135, 20, 116, 137, 76, 176, 15, 11, 200, 56, 244, 212, 4, 193, 201, 76, 176, 15, 11, 200, 37, 51, 205,
+			21, 68, 137, 76, 176, 15, 14, 203, 36, 66, 79, 77, 147, 139, 72, 21, 9, 76, 176, 15, 14, 203, 32, 148, 212, 61, 34, 67, 37, 53,
+			9, 76, 176, 15, 14, 203, 32, 84, 141, 4, 100, 143, 16, 149, 9, 76, 176, 15, 11, 200, 28, 83, 205, 21, 68, 137, 76, 176, 15, 11,
+			200, 8, 243, 66, 5, 53, 9, 76, 176, 15, 14, 203, 8, 82, 1, 88, 147, 210, 37, 53, 9, 76, 176, 15, 11, 200, 4, 193, 65, 80,
+			244, 137, 76, 176, 15, 9, 198, 81, 32, 86, 21, 53, 9, 15, 8, 197, 80, 82, 206, 36, 176, 15, 7, 196, 72, 16, 129, 80, 15, 7,
+			196, 64, 148, 129, 80, 15, 7, 196, 44, 20, 129, 80, 15, 6, 65, 52, 115, 65, 0, 0, 9, 198, 76, 176, 66, 20, 195, 206, 15, 9,
+			198, 52, 146, 210, 60, 99, 206, 15, 11, 200, 61, 97, 82, 24, 202, 68, 36, 112, 15, 12, 201, 80, 21, 84, 60, 195, 199, 37, 50, 192,
+			15, 12, 201, 76, 240, 201, 60, 195, 199, 37, 50, 192, 15, 12, 201, 76, 83, 73, 60, 195, 199, 37, 50, 192, 15, 12, 201, 65, 54, 75,
+			60, 195, 199, 37, 50, 192, 15, 12, 201, 64, 244, 148, 84, 114, 83, 37, 50, 192, 15, 15, 204, 44, 243, 148, 72, 17, 9, 45, 67, 210,
+			37, 50, 192, 15, 12, 201, 33, 145, 18, 60, 195, 199, 37, 50, 192, 15, 15, 204, 32, 19, 12, 84, 50, 78, 5, 67, 210, 37, 50, 192,
+			15, 12, 201, 28, 83, 133, 4, 195, 199, 37, 50, 192, 15, 12, 201, 25, 148, 201, 60, 195, 199, 37, 50, 192, 15, 12, 201, 21, 70, 77,
+			60, 195, 199, 37, 50, 192, 15, 15, 204, 5, 33, 213, 52, 83, 148, 5, 67, 210, 37, 50, 192, 15, 9, 198, 52, 83, 15, 16, 146, 192,
+			15, 9, 198, 20, 192, 83, 80, 146, 192, 15, 11, 200, 24, 192, 71, 20, 195, 1, 57, 64, 15, 0, 10, 199, 44, 244, 146, 61, 50, 79,
+			56, 15, 11, 200, 80, 84, 146, 5, 52, 197, 72, 80, 15, 12, 201, 77, 68, 129, 25, 50, 217, 48, 66, 71, 15, 0, 15, 204, 29, 32,
+			77, 52, 21, 9, 44, 19, 9, 80, 85, 0, 15, 12, 201, 65, 149, 8, 4, 115, 210, 124, 148, 203, 15, 0, 17, 70, 72, 82, 137, 12,
+			84, 133, 34, 116, 57, 111, 89, 6, 114, 109, 0, 9, 198, 80, 245, 82, 57, 84, 133, 15, 12, 201, 84, 226, 70, 61, 35, 73, 80, 85,
+			0, 15, 12, 201, 77, 85, 133, 73, 243, 137, 80, 85, 0, 15, 12, 201, 72, 17, 9, 44, 19, 9, 80, 85, 0, 15, 12, 201, 44, 20,
+			1, 8, 147, 9, 80, 85, 0, 15, 12, 201, 32, 243, 79, 28, 83, 137, 80, 85, 0, 15, 9, 198, 77, 2, 79, 56, 84, 133, 15, 9,
+			198, 76, 176, 78, 16, 84, 133, 15, 9, 198, 64, 242, 78, 80, 84, 133, 15, 9, 198, 52, 245, 9, 88, 84, 133, 15, 9, 198, 52, 20,
+			137, 56, 84, 133, 15, 9, 198, 29, 37, 80, 64, 84, 133, 15, 9, 198, 29, 37, 78, 16, 84, 133, 15, 9, 198, 28, 20, 129, 28, 84,
+			133, 15, 9, 198, 24, 145, 213, 72, 84, 133, 15, 9, 198, 4, 192, 82, 52, 84, 133, 15, 9, 198, 4, 181, 9, 88, 84, 133, 15, 9,
+			198, 4, 35, 210, 80, 84, 133, 15, 9, 198, 82, 148, 146, 21, 34, 64, 15, 9, 198, 77, 74, 66, 21, 34, 64, 15, 9, 198, 76, 225,
+			68, 44, 84, 137, 15, 9, 198, 76, 192, 71, 80, 84, 137, 15, 12, 201, 81, 32, 78, 77, 3, 210, 80, 21, 0, 15, 6, 65, 56, 115,
+			50, 0, 0, 10, 199, 52, 20, 135, 5, 34, 78, 20, 15, 10, 199, 24, 147, 9, 65, 2, 78, 20, 15, 9, 198, 44, 244, 148, 37, 51,
+			206, 15, 9, 198, 64, 21, 137, 48, 195, 206, 15, 9, 198, 52, 81, 1, 48, 163, 206, 15, 9, 198, 89, 42, 86, 48, 84, 137, 15, 10,
+			199, 80, 83, 5, 52, 85, 18, 36, 15, 10, 199, 76, 241, 137, 77, 65, 82, 36, 15, 10, 199, 72, 85, 8, 5, 97, 82, 36, 15, 10,
+			199, 64, 81, 1, 57, 65, 82, 36, 15, 10, 199, 61, 33, 7, 100, 65, 82, 36, 15, 10, 199, 45, 83, 147, 80, 193, 82, 36, 15, 10,
+			199, 44, 242, 197, 81, 65, 82, 36, 15, 10, 199, 44, 194, 77, 65, 33, 82, 36, 15, 10, 199, 41, 84, 137, 77, 65, 82, 36, 15, 10,
+			199, 36, 225, 129, 57, 65, 82, 36, 15, 9, 198, 9, 39, 206, 16, 84, 137, 15, 10, 199, 64, 197, 84, 60, 226, 85, 52, 15, 10, 199,
+			32, 20, 141, 60, 226, 85, 52, 15, 10, 199, 8, 84, 153, 48, 194, 85, 52, 15, 9, 198, 52, 19, 132, 5, 64, 82, 15, 0, 10, 199,
+			16, 241, 5, 44, 17, 143, 56, 15, 10, 199, 65, 35, 214, 37, 50, 79, 56, 15, 10, 199, 44, 243, 148, 85, 50, 79, 56, 15, 13, 202,
+			41, 84, 212, 36, 98, 75, 5, 66, 79, 56, 15, 13, 202, 24, 19, 19, 36, 98, 75, 5, 66, 79, 56, 15, 10, 199, 16, 147, 73, 77,
+			50, 79, 56, 15, 10, 199, 16, 83, 73, 77, 50, 79, 56, 15, 7, 196, 17, 84, 5, 72, 15, 11, 200, 16, 84, 212, 36, 195, 5, 72,
+			144, 15, 15, 204, 45, 38, 83, 80, 19, 12, 60, 116, 129, 24, 148, 203, 15, 11, 200, 44, 193, 80, 80, 243, 65, 56, 144, 15, 12, 201,
+			44, 243, 132, 37, 66, 79, 56, 19, 0, 15, 0, 9, 198, 88, 242, 193, 48, 148, 212, 15, 9, 198, 4, 227, 129, 48, 148, 212, 15, 11,
+			200, 80, 83, 5, 88, 148, 201, 60, 224, 15, 11, 200, 77, 80, 195, 21, 52, 201, 60, 224, 15, 11, 200, 20, 180, 203, 49, 84, 201, 60,
+			224, 15, 11, 200, 16, 148, 203, 85, 52, 201, 60, 224, 15, 11, 200, 16, 145, 210, 21, 52, 201, 60, 224, 15, 11, 200, 16, 81, 210, 21,
+			52, 201, 60, 224, 15, 15, 204, 76, 83, 148, 36, 209, 78, 80, 19, 9, 80, 85, 0, 15, 15, 204, 72, 84, 208, 20, 181, 1, 8, 147,
+			9, 80, 85, 0, 15, 10, 199, 125, 53, 5, 80, 148, 197, 72, 15, 10, 199, 17, 243, 79, 56, 148, 197, 72, 15, 12, 201, 72, 81, 213,
+			48, 17, 5, 81, 34, 64, 15, 12, 201, 45, 96, 75, 76, 19, 22, 21, 34, 64, 15, 12, 201, 64, 192, 78, 21, 64, 82, 37, 83, 64,
+			15, 12, 201, 16, 83, 6, 36, 224, 82, 37, 83, 64, 15, 9, 198, 41, 85, 133, 56, 147, 0, 15, 9, 198, 24, 241, 5, 72, 19, 0,
+			15, 0, 9, 198, 21, 85, 1, 56, 20, 201, 15, 12, 201, 77, 74, 75, 36, 243, 69, 81, 34, 64, 15, 12, 201, 52, 20, 139, 76, 180,
+			137, 28, 84, 137, 15, 12, 201, 25, 84, 197, 57, 64, 83, 80, 84, 137, 15, 8, 197, 16, 83, 69, 57, 48, 15, 5, 65, 60, 39, 0,
+			0, 11, 200, 72, 83, 1, 80, 149, 137, 77, 64, 15, 11, 200, 72, 80, 201, 16, 149, 137, 77, 64, 15, 9, 198, 16, 151, 212, 37, 53,
+			0, 15, 11, 200, 16, 85, 1, 36, 195, 9, 77, 64, 15, 9, 198, 61, 0, 67, 37, 65, 84, 15, 12, 201, 65, 241, 1, 28, 241, 201,
+			76, 84, 128, 15, 9, 198, 61, 0, 76, 37, 49, 82, 15, 11, 200, 61, 0, 153, 28, 113, 76, 36, 112, 15, 12, 201, 120, 192, 143, 72,
+			113, 78, 76, 84, 128, 15, 12, 201, 29, 33, 78, 120, 113, 78, 76, 84, 128, 15, 6, 195, 61, 0, 76, 15, 10, 1, 61, 55, 6, 37,
+			65, 36, 86, 0, 0, 9, 198, 65, 35, 195, 20, 74, 82, 15, 9, 198, 61, 1, 82, 5, 74, 82, 15, 9, 198, 52, 241, 5, 48, 202,
+			82, 15, 9, 198, 52, 81, 1, 48, 170, 82, 15, 9, 198, 12, 128, 85, 24, 106, 82, 15, 9, 198, 5, 36, 129, 56, 122, 82, 15, 7,
+			196, 25, 85, 15, 56, 15, 13, 202, 80, 82, 206, 60, 180, 129, 80, 148, 197, 72, 15, 13, 202, 76, 176, 78, 16, 147, 129, 88, 148, 197,
+			72, 15, 13, 202, 65, 35, 194, 48, 83, 65, 80, 148, 197, 72, 15, 13, 202, 52, 84, 139, 4, 229, 9, 48, 148, 197, 72, 15, 13, 202,
+			24, 146, 212, 36, 243, 129, 48, 148, 197, 72, 15, 13, 202, 12, 243, 148, 4, 147, 133, 72, 148, 197, 72, 15, 14, 68, 28, 19, 73, 56,
+			81, 117, 65, 6, 115, 68, 0, 15, 11, 200, 72, 81, 143, 72, 210, 83, 52, 80, 15, 11, 200, 64, 243, 25, 80, 82, 83, 52, 80, 15,
+			11, 200, 61, 53, 18, 4, 178, 83, 52, 80, 15, 11, 200, 56, 244, 150, 4, 114, 83, 52, 80, 15, 11, 200, 53, 148, 212, 36, 50, 83,
+			52, 80, 15, 11, 200, 28, 145, 193, 57, 66, 83, 52, 80, 15, 11, 200, 28, 84, 141, 4, 226, 83, 52, 80, 15, 11, 200, 4, 225, 204,
+			36, 50, 83, 52, 80, 15, 11, 200, 4, 176, 68, 20, 210, 83, 52, 80, 15, 8, 197, 20, 208, 140, 20, 208, 15, 12, 201, 44, 243, 148,
+			36, 225, 78, 80, 19, 0, 15, 13, 69, 76, 129, 73, 48, 16, 91, 37, 12, 55, 118, 0, 0, 9, 198, 36, 208, 133, 12, 147, 0, 15,
+			0, 10, 199, 77, 80, 147, 80, 149, 21, 80, 15, 9, 198, 81, 35, 205, 8, 244, 197, 15, 9, 198, 77, 147, 66, 36, 244, 197, 15, 9,
+			198, 76, 179, 5, 72, 244, 197, 15, 9, 198, 76, 176, 66, 36, 244, 197, 15, 9, 198, 65, 35, 199, 56, 244, 197, 15, 9, 198, 5, 3,
+			212, 20, 244, 197, 15, 12, 201, 8, 18, 212, 21, 34, 79, 48, 241, 201, 15, 15, 204, 61, 1, 82, 5, 66, 79, 56, 19, 9, 76, 84,
+			128, 15, 9, 198, 4, 224, 77, 56, 84, 197, 15, 7, 196, 24, 147, 137, 80, 15, 7, 196, 5, 50, 65, 80, 15, 6, 65, 64, 48, 36,
+			0, 14, 1, 64, 89, 50, 4, 117, 71, 14, 55, 6, 117, 12, 0, 0, 11, 200, 125, 33, 70, 73, 145, 212, 36, 112, 15, 11, 200, 52,
+			148, 212, 74, 148, 212, 36, 112, 15, 11, 200, 65, 241, 1, 28, 241, 201, 76, 176, 15, 13, 202, 77, 80, 138, 20, 181, 9, 88, 148, 205,
+			20, 15, 13, 202, 77, 2, 82, 37, 69, 65, 48, 148, 205, 20, 15, 13, 202, 76, 243, 78, 4, 208, 149, 48, 148, 205, 20, 15, 13, 202,
+			64, 20, 139, 36, 228, 207, 56, 148, 205, 20, 15, 13, 202, 44, 243, 147, 21, 37, 129, 80, 148, 205, 20, 15, 13, 202, 16, 80, 197, 57,
+			68, 129, 48, 148, 205, 20, 15, 9, 198, 65, 33, 83, 20, 229, 0, 15, 0, 11, 67, 76, 145, 192, 89, 121, 57, 0, 49, 45, 17, 67,
+			76, 145, 192, 89, 37, 15, 84, 117, 0, 81, 104, 118, 97, 100, 32, 8, 197, 52, 149, 15, 76, 80, 15, 12, 201, 64, 19, 31, 60, 229,
+			15, 48, 241, 192, 15, 12, 201, 52, 18, 133, 77, 71, 212, 37, 50, 192, 15, 6, 195, 76, 145, 192, 72, 0, 10, 199, 44, 243, 77, 4,
+			225, 41, 72, 15, 10, 199, 60, 67, 206, 80, 243, 15, 28, 15, 10, 199, 60, 49, 65, 56, 243, 15, 28, 15, 10, 199, 36, 211, 85, 56,
+			243, 15, 28, 15, 10, 199, 52, 85, 1, 25, 148, 201, 44, 15, 0, 10, 199, 49, 82, 211, 85, 34, 105, 76, 15, 12, 201, 81, 34, 86,
+			36, 19, 9, 80, 85, 0, 15, 12, 201, 76, 82, 211, 84, 19, 9, 80, 85, 0, 15, 12, 201, 72, 83, 1, 80, 149, 137, 80, 85, 0,
+			15, 12, 201, 56, 245, 1, 8, 147, 9, 80, 85, 0, 15, 12, 201, 53, 84, 201, 44, 19, 9, 80, 85, 0, 15, 12, 201, 17, 84, 129,
+			8, 147, 9, 80, 85, 0, 15, 9, 198, 81, 38, 76, 48, 84, 137, 15, 9, 198, 81, 35, 204, 16, 84, 137, 15, 9, 198, 77, 66, 75,
+			48, 84, 137, 15, 9, 198, 49, 83, 83, 44, 84, 137, 15, 9, 198, 45, 82, 143, 56, 84, 137, 15, 9, 198, 45, 38, 68, 16, 84, 137,
+			15, 9, 198, 44, 192, 84, 80, 84, 137, 15, 9, 198, 17, 34, 76, 48, 84, 137, 15, 14, 203, 81, 32, 78, 76, 21, 12, 4, 229, 9,
+			76, 176, 15, 14, 203, 72, 85, 137, 76, 147, 206, 37, 53, 9, 76, 176, 15, 14, 203, 61, 4, 15, 73, 69, 78, 37, 53, 9, 76, 176,
+			15, 14, 203, 45, 33, 65, 80, 147, 206, 37, 53, 9, 76, 176, 15, 14, 203, 36, 195, 21, 76, 147, 206, 37, 53, 9, 76, 176, 15, 14,
+			203, 8, 144, 140, 36, 245, 5, 44, 20, 137, 76, 176, 15, 7, 196, 72, 20, 9, 16, 15, 8, 197, 73, 80, 146, 36, 176, 15, 6, 65,
+			68, 49, 40, 0, 0, 18, 70, 48, 81, 197, 56, 65, 78, 55, 36, 81, 6, 115, 50, 72, 14, 50, 0, 12, 201, 77, 65, 82, 20, 245,
+			25, 66, 148, 128, 15, 12, 201, 72, 84, 212, 5, 84, 129, 82, 148, 128, 15, 12, 201, 44, 243, 147, 81, 37, 75, 82, 148, 128, 15, 15,
+			204, 60, 227, 205, 5, 67, 208, 60, 145, 84, 37, 50, 192, 15, 9, 198, 72, 85, 15, 72, 146, 192, 15, 9, 198, 52, 245, 15, 72, 146,
+			192, 15, 9, 198, 88, 20, 137, 4, 229, 0, 15, 0, 18, 5, 100, 106, 39, 101, 114, 72, 37, 12, 6, 72, 57, 36, 12, 57, 108, 0,
+			0, 18, 67, 76, 176, 76, 89, 49, 118, 15, 107, 117, 0, 81, 104, 97, 118, 101, 32, 9, 198, 64, 84, 137, 76, 179, 208, 15, 9, 198,
+			32, 244, 143, 76, 179, 208, 15, 9, 198, 20, 225, 15, 76, 179, 208, 15, 15, 204, 36, 228, 212, 73, 83, 69, 57, 64, 76, 37, 53, 0,
+			15, 6, 195, 76, 176, 76, 76, 0, 21, 72, 72, 82, 137, 12, 84, 137, 56, 112, 34, 36, 57, 37, 89, 6, 36, 51, 37, 68, 0, 11,
+			200, 77, 81, 134, 48, 84, 137, 56, 112, 15, 11, 200, 76, 178, 84, 76, 84, 137, 56, 112, 15, 11, 200, 76, 84, 1, 72, 84, 137, 56,
+			112, 15, 11, 200, 72, 82, 137, 12, 84, 137, 56, 112, 15, 11, 200, 64, 147, 15, 80, 84, 137, 56, 112, 15, 11, 200, 52, 20, 137, 56,
+			84, 137, 56, 112, 15, 11, 200, 44, 243, 15, 72, 84, 137, 56, 112, 15, 11, 200, 44, 195, 193, 44, 84, 137, 56, 112, 15, 11, 200, 28,
+			20, 129, 28, 84, 137, 56, 112, 15, 11, 200, 24, 145, 213, 72, 84, 137, 56, 112, 15, 11, 200, 16, 19, 137, 76, 84, 137, 56, 112, 15,
+			11, 200, 5, 52, 213, 72, 84, 137, 56, 112, 15, 7, 196, 48, 19, 69, 48, 15, 12, 201, 65, 35, 212, 60, 179, 204, 48, 84, 133, 15,
+			12, 201, 16, 148, 195, 37, 3, 9, 56, 84, 133, 15, 7, 196, 28, 83, 65, 48, 15, 7, 196, 4, 227, 129, 48, 15, 10, 199, 52, 19,
+			135, 20, 176, 78, 80, 15, 10, 199, 36, 228, 201, 57, 80, 78, 80, 15, 6, 65, 72, 115, 34, 0, 0, 15, 204, 28, 84, 212, 4, 197,
+			16, 77, 146, 207, 48, 241, 192, 15, 9, 198, 28, 197, 75, 4, 115, 206, 15, 9, 198, 72, 83, 1, 80, 147, 206, 15, 9, 198, 36, 195,
+			21, 76, 147, 206, 15, 9, 198, 16, 149, 137, 76, 147, 206, 15, 9, 198, 4, 195, 21, 76, 147, 206, 15, 12, 201, 37, 51, 31, 56, 65,
+			82, 36, 225, 5, 15, 0, 10, 199, 44, 243, 134, 85, 50, 79, 56, 15, 10, 199, 36, 211, 73, 77, 50, 79, 56, 15, 13, 202, 76, 84,
+			137, 21, 4, 143, 17, 80, 197, 72, 15, 10, 199, 44, 193, 77, 20, 229, 9, 56, 15, 10, 199, 52, 19, 12, 61, 32, 201, 56, 15, 8,
+			67, 80, 129, 64, 21, 0, 47, 0, 11, 200, 81, 34, 85, 52, 96, 84, 61, 32, 15, 11, 200, 72, 81, 143, 72, 208, 84, 61, 32, 15,
+			11, 200, 16, 82, 204, 4, 208, 84, 61, 32, 15, 9, 198, 21, 33, 207, 56, 243, 64, 15, 9, 198, 4, 116, 143, 56, 243, 64, 15, 11,
+			200, 72, 81, 140, 20, 180, 201, 60, 224, 15, 11, 200, 64, 84, 150, 21, 36, 201, 60, 224, 15, 11, 200, 44, 243, 150, 21, 36, 201, 60,
+			224, 15, 9, 198, 21, 2, 71, 72, 19, 64, 15, 11, 200, 64, 83, 137, 12, 147, 12, 36, 224, 15, 18, 4, 95, 100, 111, 116, 58, 37,
+			86, 72, 6, 127, 47, 35, 71, 108, 84, 0, 0, 7, 196, 52, 241, 5, 48, 15, 6, 65, 76, 36, 89, 0, 0, 9, 198, 77, 0, 84,
+			38, 148, 192, 15, 12, 201, 77, 0, 83, 80, 144, 201, 80, 85, 0, 15, 11, 200, 77, 0, 84, 36, 84, 137, 56, 112, 15, 9, 198, 77,
+			0, 84, 36, 84, 128, 15, 10, 199, 77, 0, 78, 45, 83, 5, 72, 15, 9, 198, 77, 0, 76, 36, 84, 133, 15, 9, 198, 77, 0, 68,
+			76, 84, 128, 15, 6, 195, 48, 145, 82, 15, 12, 201, 77, 0, 82, 76, 243, 77, 20, 194, 71, 15, 11, 200, 77, 0, 71, 25, 244, 132,
+			36, 112, 15, 9, 198, 77, 0, 78, 36, 243, 0, 15, 11, 200, 77, 0, 83, 52, 241, 9, 76, 176, 15, 12, 201, 65, 35, 199, 56, 244,
+			212, 36, 177, 82, 15, 12, 201, 52, 83, 1, 56, 179, 204, 36, 177, 82, 15, 12, 201, 20, 193, 75, 81, 35, 206, 36, 177, 82, 15, 12,
+			201, 16, 144, 71, 56, 244, 212, 36, 177, 82, 15, 9, 198, 77, 0, 82, 80, 19, 128, 15, 8, 197, 77, 0, 71, 5, 64, 15, 0, 9,
+			198, 48, 81, 201, 60, 231, 210, 15, 9, 198, 29, 32, 78, 84, 199, 210, 15, 11, 200, 26, 145, 5, 72, 19, 9, 77, 64, 15, 14, 203,
+			44, 243, 147, 21, 37, 129, 80, 244, 137, 84, 208, 15, 18, 67, 48, 241, 192, 55, 108, 49, 6, 36, 50, 0, 44, 15, 81, 105, 110, 32,
+			0, 7, 196, 17, 84, 233, 72, 15, 9, 198, 164, 213, 30, 48, 145, 192, 15, 10, 199, 24, 244, 148, 72, 243, 9, 28, 15, 10, 199, 4,
+			100, 203, 100, 83, 9, 28, 15, 10, 199, 5, 85, 15, 52, 21, 9, 44, 15, 10, 199, 77, 98, 78, 4, 117, 9, 28, 15, 0, 11, 200,
+			52, 21, 18, 36, 181, 76, 125, 32, 15, 11, 200, 64, 84, 148, 20, 229, 12, 36, 112, 15, 11, 200, 61, 3, 21, 44, 177, 76, 36, 112,
+			15, 11, 200, 60, 210, 25, 28, 113, 76, 36, 112, 15, 11, 200, 28, 83, 148, 4, 113, 76, 36, 112, 15, 10, 199, 26, 147, 7, 4, 117,
+			9, 28, 15, 11, 200, 24, 244, 148, 72, 147, 140, 36, 112, 15, 11, 200, 24, 244, 140, 36, 113, 76, 36, 112, 15, 11, 200, 65, 35, 214,
+			20, 226, 69, 57, 48, 15, 11, 200, 44, 243, 150, 20, 226, 69, 57, 48, 15, 11, 200, 36, 225, 210, 20, 66, 69, 57, 48, 15, 10, 199,
+			26, 147, 7, 4, 117, 9, 28, 15, 0, 9, 198, 16, 82, 213, 66, 148, 128, 15, 10, 199, 84, 226, 79, 56, 148, 205, 20, 15, 10, 199,
+			76, 21, 1, 56, 148, 205, 20, 15, 10, 199, 52, 85, 15, 16, 148, 205, 20, 15, 10, 199, 48, 240, 130, 100, 148, 205, 20, 15, 10, 199,
+			20, 180, 207, 80, 148, 205, 20, 15, 9, 198, 80, 19, 135, 20, 229, 0, 15, 0, 11, 200, 24, 202, 74, 80, 83, 137, 77, 64, 15, 12,
+			201, 56, 81, 6, 124, 193, 5, 48, 145, 192, 15, 12, 201, 28, 80, 146, 124, 178, 197, 48, 145, 192, 15, 12, 201, 24, 244, 134, 125, 33,
+			5, 48, 145, 192, 15, 0, 9, 198, 65, 145, 205, 124, 148, 203, 15, 9, 198, 72, 81, 133, 72, 83, 148, 15, 9, 198, 44, 243, 147, 80,
+			19, 148, 15, 0, 9, 198, 81, 38, 75, 44, 84, 137, 15, 9, 198, 76, 225, 82, 64, 84, 137, 15, 9, 198, 76, 213, 71, 48, 84, 137,
+			15, 9, 198, 76, 180, 137, 88, 84, 137, 15, 10, 199, 88, 147, 4, 73, 225, 9, 28, 15, 10, 199, 80, 147, 6, 124, 193, 9, 28, 15,
+			10, 199, 72, 85, 6, 125, 33, 9, 28, 15, 10, 199, 48, 83, 70, 124, 193, 9, 28, 15, 7, 196, 8, 84, 193, 80, 15, 5, 65, 84,
+			40, 0, 0, 9, 198, 88, 144, 146, 5, 67, 210, 15, 14, 203, 88, 149, 137, 76, 82, 212, 36, 243, 137, 77, 64, 15, 13, 202, 65, 39,
+			204, 36, 210, 78, 5, 34, 83, 80, 15, 9, 198, 32, 82, 211, 4, 115, 206, 15, 8, 198, 48, 82, 211, 36, 179, 206, 9, 198, 64, 192,
+			83, 81, 35, 206, 15, 9, 198, 64, 244, 201, 80, 147, 206, 15, 11, 200, 81, 38, 75, 25, 244, 132, 36, 112, 15, 11, 200, 76, 192, 71,
+			25, 244, 132, 36, 112, 15, 11, 200, 76, 19, 132, 25, 244, 132, 36, 112, 15, 11, 200, 65, 34, 83, 89, 244, 132, 36, 112, 15, 11, 200,
+			36, 225, 19, 81, 243, 132, 36, 112, 15, 11, 200, 33, 84, 203, 89, 244, 132, 36, 112, 15, 15, 204, 29, 81, 22, 20, 192, 133, 32, 17,
+			197, 48, 145, 192, 15, 15, 204, 29, 81, 19, 8, 84, 208, 61, 69, 5, 48, 145, 192, 15, 11, 200, 20, 196, 203, 89, 244, 132, 36, 112,
+			15, 11, 200, 4, 224, 80, 125, 53, 9, 76, 176, 15, 0, 16, 5, 99, 100, 39, 101, 110, 89, 36, 12, 72, 36, 12, 112, 50, 0, 22,
+			71, 64, 244, 212, 36, 195, 15, 56, 48, 4, 108, 89, 72, 37, 55, 57, 6, 108, 68, 0, 15, 10, 199, 72, 85, 15, 73, 50, 79, 56,
+			15, 10, 199, 44, 243, 12, 37, 50, 79, 56, 15, 10, 199, 16, 147, 69, 57, 50, 79, 56, 15, 12, 201, 80, 147, 7, 124, 225, 197, 48,
+			145, 192, 15, 12, 201, 60, 212, 212, 124, 225, 5, 48, 145, 192, 15, 12, 201, 52, 148, 212, 124, 226, 197, 48, 145, 192, 15, 12, 201, 24,
+			244, 148, 73, 241, 5, 48, 145, 192, 15, 12, 201, 24, 244, 147, 53, 241, 5, 48, 145, 192, 15, 12, 201, 24, 244, 135, 124, 225, 197, 48,
+			145, 192, 15, 12, 201, 24, 244, 134, 124, 225, 197, 48, 145, 192, 15, 12, 201, 24, 244, 132, 125, 37, 133, 48, 145, 192, 15, 12, 201, 65,
+			241, 5, 72, 20, 212, 37, 50, 192, 15, 12, 201, 25, 147, 15, 28, 83, 133, 80, 148, 203, 15, 0, 11, 200, 52, 19, 20, 30, 148, 133,
+			72, 144, 15, 9, 198, 65, 35, 212, 60, 179, 204, 15, 9, 198, 28, 198, 67, 21, 35, 204, 15, 16, 205, 44, 243, 147, 81, 37, 75, 80,
+			149, 137, 77, 66, 83, 44, 15, 16, 205, 20, 180, 208, 72, 84, 211, 36, 243, 137, 77, 66, 83, 44, 15, 16, 205, 20, 180, 200, 36, 34,
+			84, 36, 243, 137, 77, 66, 83, 44, 15, 9, 198, 48, 149, 15, 72, 19, 0, 15, 0, 12, 201, 164, 161, 78, 80, 161, 78, 21, 34, 64,
+			15, 9, 198, 77, 66, 75, 44, 84, 137, 15, 9, 198, 76, 181, 76, 44, 84, 137, 15, 9, 198, 17, 34, 75, 44, 84, 137, 15, 14, 203,
+			80, 84, 212, 4, 209, 78, 80, 20, 137, 76, 176, 15, 14, 203, 65, 54, 75, 60, 19, 129, 49, 149, 9, 76, 176, 15, 14, 203, 64, 20,
+			140, 4, 209, 78, 80, 20, 137, 76, 176, 15, 14, 203, 52, 85, 1, 48, 195, 199, 72, 17, 137, 76, 176, 15, 14, 203, 45, 34, 77, 36,
+			224, 76, 37, 53, 9, 76, 176, 15, 14, 203, 8, 18, 212, 21, 34, 79, 48, 241, 201, 76, 176, 15, 9, 198, 72, 83, 69, 16, 149, 77,
+			15, 9, 198, 4, 181, 129, 72, 149, 77, 15, 12, 201, 61, 37, 15, 12, 84, 129, 80, 149, 0, 15, 6, 65, 88, 84, 36, 0, 0, 22,
+			72, 44, 243, 134, 37, 35, 65, 56, 64, 49, 109, 50, 83, 111, 34, 65, 6, 118, 50, 72, 0, 9, 198, 56, 245, 1, 80, 147, 206, 15,
+			9, 198, 45, 33, 65, 80, 147, 206, 15, 9, 198, 16, 245, 1, 80, 147, 206, 15, 9, 198, 76, 183, 204, 52, 84, 137, 15, 15, 204, 80,
+			245, 1, 48, 149, 1, 72, 148, 212, 37, 50, 192, 15, 15, 204, 77, 80, 138, 20, 181, 9, 88, 148, 212, 37, 50, 192, 15, 15, 204, 77,
+			2, 82, 37, 69, 65, 48, 148, 212, 37, 50, 192, 15, 15, 204, 52, 84, 139, 4, 229, 9, 48, 148, 212, 37, 50, 192, 15, 15, 204, 37,
+			51, 204, 5, 66, 79, 56, 148, 212, 37, 50, 192, 15, 15, 204, 24, 245, 15, 29, 32, 77, 52, 85, 18, 37, 50, 192, 15, 15, 204, 16,
+			80, 197, 57, 68, 129, 48, 148, 212, 37, 50, 192, 15, 15, 204, 5, 96, 78, 80, 112, 82, 16, 148, 212, 37, 50, 192, 15, 9, 198, 44,
+			243, 12, 60, 145, 0, 15, 9, 198, 77, 243, 1, 72, 149, 77, 15, 10, 199, 24, 243, 129, 77, 65, 78, 36, 15, 9, 198, 24, 97, 82,
+			52, 21, 0, 15, 0, 10, 199, 77, 147, 80, 61, 50, 79, 56, 15, 10, 199, 72, 80, 197, 57, 50, 79, 56, 15, 10, 199, 36, 226, 204,
+			85, 50, 79, 56, 15, 15, 204, 64, 20, 148, 36, 181, 76, 5, 34, 83, 80, 148, 203, 15, 15, 204, 56, 243, 139, 60, 225, 143, 72, 210,
+			83, 80, 148, 203, 15, 15, 204, 16, 148, 203, 72, 147, 73, 56, 21, 15, 72, 148, 203, 15, 0, 10, 200, 64, 19, 143, 65, 66, 75, 60,
+			224, 11, 200, 77, 147, 139, 72, 245, 18, 60, 224, 15, 11, 200, 65, 35, 198, 21, 52, 201, 60, 224, 15, 11, 200, 44, 243, 139, 49, 84,
+			201, 60, 224, 15, 11, 200, 44, 243, 134, 21, 52, 201, 60, 224, 15, 11, 200, 20, 180, 208, 48, 244, 201, 60, 224, 15, 9, 198, 44, 20,
+			129, 88, 83, 0, 15, 9, 198, 12, 83, 148, 72, 19, 0, 15, 21, 4, 95, 49, 77, 52, 6, 36, 12, 50, 15, 71, 37, 55, 37, 57,
+			6, 39, 12, 50, 0, 0, 7, 196, 64, 244, 169, 76, 15, 9, 198, 4, 227, 210, 20, 180, 201, 15, 15, 204, 77, 147, 139, 72, 240, 217,
+			44, 195, 212, 72, 243, 128, 15, 7, 196, 52, 245, 5, 48, 15, 12, 201, 64, 244, 148, 73, 245, 20, 21, 33, 64, 15, 7, 196, 64, 20,
+			9, 48, 15, 7, 196, 88, 20, 193, 48, 15, 7, 196, 56, 20, 193, 48, 15, 14, 65, 92, 72, 6, 108, 71, 36, 55, 47, 84, 36, 12,
+			0, 22, 1, 92, 6, 108, 65, 84, 115, 50, 72, 89, 81, 34, 4, 108, 89, 72, 51, 35, 37, 0, 27, 0, 8, 197, 64, 243, 80, 165,
+			48, 15, 9, 198, 48, 19, 80, 37, 53, 0, 15, 9, 198, 28, 20, 132, 37, 53, 0, 15, 12, 201, 64, 243, 25, 80, 82, 206, 36, 177,
+			82, 15, 0, 0, 7, 196, 28, 82, 41, 72, 15, 6, 195, 4, 181, 84, 15, 14, 203, 81, 32, 78, 76, 148, 212, 61, 34, 83, 21, 32,
+			15, 10, 199, 17, 34, 76, 4, 117, 9, 28, 15, 9, 198, 76, 21, 5, 48, 194, 84, 15, 9, 198, 37, 52, 129, 20, 194, 84, 15, 10,
+			199, 17, 34, 76, 4, 117, 9, 28, 15, 8, 67, 84, 226, 88, 21, 0, 47, 0, 8, 197, 64, 20, 140, 165, 32, 15, 12, 201, 44, 243,
+			15, 56, 144, 76, 37, 53, 0, 15, 11, 200, 4, 225, 210, 36, 33, 76, 36, 112, 15, 11, 200, 4, 195, 73, 56, 65, 76, 36, 112, 15,
+			9, 198, 48, 20, 135, 21, 52, 197, 15, 7, 196, 20, 243, 9, 80, 15, 7, 65, 96, 115, 49, 89, 0, 16, 4, 95, 49, 77, 49, 36,
+			72, 15, 47, 6, 123, 89, 14, 50, 0, 0, 15, 70, 76, 128, 77, 64, 243, 192, 91, 57, 122, 65, 71, 124, 0, 9, 198, 76, 210, 78,
+			46, 148, 128, 15, 9, 66, 4, 64, 118, 86, 0, 49, 45, 7, 66, 4, 64, 118, 11, 0, 21, 4, 95, 49, 77, 50, 6, 36, 12, 50,
+			15, 65, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 15, 5, 99, 100, 39, 101, 114, 89, 36, 12, 72, 36, 12, 108, 0, 12, 201, 36,
+			225, 137, 56, 149, 9, 88, 148, 203, 15, 12, 201, 33, 145, 210, 61, 50, 207, 64, 148, 203, 15, 21, 4, 95, 49, 77, 51, 6, 36, 12,
+			50, 15, 65, 37, 55, 37, 57, 6, 121, 12, 72, 0, 0, 10, 199, 65, 32, 71, 52, 21, 9, 44, 15, 0, 12, 201, 61, 34, 69, 57,
+			64, 76, 37, 53, 0, 15, 9, 198, 24, 18, 212, 61, 69, 77, 15, 9, 198, 88, 149, 129, 72, 149, 77, 15, 9, 198, 80, 149, 1, 56,
+			149, 77, 15, 9, 198, 28, 84, 129, 56, 149, 77, 15, 12, 201, 16, 85, 5, 72, 210, 78, 4, 229, 0, 15, 5, 65, 100, 129, 0, 0,
+			18, 207, 36, 228, 212, 73, 83, 69, 57, 64, 76, 37, 49, 82, 36, 225, 192, 15, 12, 201, 65, 35, 194, 48, 83, 65, 80, 146, 192, 15,
+			12, 201, 44, 148, 143, 65, 32, 75, 80, 146, 192, 15, 0, 7, 196, 64, 20, 129, 8, 15, 0, 9, 198, 5, 37, 5, 72, 145, 76, 15,
+			13, 202, 45, 34, 77, 36, 224, 76, 37, 53, 9, 44, 15, 0, 11, 200, 80, 149, 21, 48, 84, 137, 56, 112, 15, 11, 200, 76, 176, 76,
+			64, 84, 137, 56, 112, 15, 11, 200, 72, 83, 143, 88, 84, 137, 56, 112, 15, 11, 200, 72, 83, 5, 28, 84, 137, 56, 112, 15, 11, 200,
+			64, 194, 83, 76, 84, 137, 56, 112, 15, 11, 200, 48, 19, 73, 56, 84, 137, 56, 112, 15, 11, 200, 25, 32, 78, 44, 84, 137, 56, 112,
+			15, 11, 200, 21, 96, 75, 84, 84, 137, 56, 112, 15, 11, 200, 16, 83, 5, 28, 84, 137, 56, 112, 15, 11, 200, 5, 69, 1, 44, 84,
+			137, 56, 112, 15, 10, 199, 25, 83, 132, 4, 209, 78, 80, 15, 10, 199, 16, 85, 5, 72, 113, 78, 80, 15, 10, 199, 77, 84, 16, 48,
+			80, 78, 80, 15, 10, 199, 24, 16, 146, 36, 176, 78, 80, 15, 9, 198, 88, 83, 133, 72, 16, 128, 15, 9, 198, 80, 243, 5, 72, 16,
+			128, 15, 7, 65, 104, 89, 115, 47, 0, 0, 15, 66, 5, 64, 118, 15, 107, 118, 0, 81, 104, 97, 118, 101, 32, 9, 198, 48, 16, 146,
+			4, 67, 210, 15, 9, 198, 44, 244, 146, 36, 67, 210, 15, 9, 198, 20, 193, 86, 5, 67, 210, 15, 9, 198, 20, 193, 75, 81, 35, 206,
+			15, 11, 200, 80, 83, 132, 20, 229, 9, 20, 192, 15, 11, 200, 80, 19, 135, 20, 229, 9, 20, 192, 15, 11, 200, 12, 84, 133, 52, 243,
+			137, 20, 192, 15, 11, 200, 64, 244, 201, 80, 147, 206, 20, 192, 15, 11, 200, 60, 178, 193, 76, 147, 206, 20, 192, 15, 11, 200, 25, 83,
+			139, 80, 147, 206, 20, 192, 15, 12, 201, 77, 148, 212, 20, 208, 84, 37, 49, 82, 15, 12, 201, 77, 64, 78, 16, 20, 132, 37, 49, 82,
+			15, 12, 201, 76, 83, 147, 36, 34, 76, 37, 49, 82, 15, 12, 201, 72, 81, 201, 60, 224, 76, 37, 49, 82, 15, 12, 201, 52, 21, 5,
+			72, 144, 76, 37, 49, 82, 15, 12, 201, 52, 20, 203, 84, 194, 78, 37, 49, 82, 15, 12, 201, 48, 82, 211, 36, 176, 76, 37, 49, 82,
+			15, 12, 201, 45, 38, 83, 80, 19, 12, 37, 49, 82, 15, 12, 201, 44, 20, 129, 52, 83, 12, 37, 49, 82, 15, 12, 201, 32, 244, 208,
+			37, 64, 76, 37, 49, 82, 15, 12, 201, 16, 83, 79, 45, 32, 84, 37, 49, 82, 15, 12, 201, 8, 17, 193, 80, 83, 12, 37, 49, 82,
+			15, 12, 201, 4, 178, 204, 36, 208, 84, 37, 49, 82, 15, 7, 196, 4, 113, 82, 20, 15, 11, 200, 44, 243, 5, 77, 65, 82, 60, 192,
+			15, 12, 201, 72, 244, 203, 36, 193, 5, 57, 49, 82, 15, 12, 201, 44, 243, 4, 36, 225, 197, 57, 49, 82, 15, 11, 200, 64, 83, 148,
+			4, 115, 206, 4, 192, 15, 11, 200, 44, 243, 147, 20, 228, 213, 4, 192, 15, 11, 200, 32, 82, 211, 4, 115, 206, 4, 192, 15, 11, 200,
+			16, 148, 133, 45, 67, 210, 4, 192, 15, 5, 194, 5, 64, 72, 0, 10, 199, 36, 212, 12, 61, 50, 79, 56, 15, 10, 199, 44, 193, 80,
+			80, 243, 65, 56, 16, 0, 11, 200, 44, 243, 80, 36, 192, 84, 61, 32, 15, 9, 198, 65, 54, 75, 61, 49, 64, 15, 11, 200, 52, 85,
+			1, 48, 195, 198, 60, 224, 15, 9, 198, 64, 84, 147, 60, 225, 76, 15, 13, 202, 57, 146, 233, 8, 147, 135, 20, 228, 197, 72, 15, 13,
+			202, 32, 170, 82, 72, 147, 135, 20, 228, 197, 72, 15, 11, 200, 76, 19, 22, 4, 67, 210, 4, 224, 15, 11, 200, 72, 19, 132, 73, 84,
+			201, 4, 224, 15, 12, 201, 36, 228, 213, 24, 98, 67, 36, 83, 148, 15, 8, 197, 88, 20, 137, 4, 32, 15, 0, 8, 67, 60, 176, 89,
+			21, 0, 47, 0, 10, 199, 8, 80, 82, 8, 82, 132, 20, 67, 12, 201, 64, 84, 147, 60, 226, 70, 36, 49, 82, 15, 10, 199, 28, 83,
+			65, 48, 147, 132, 20, 15, 10, 199, 25, 148, 147, 80, 147, 132, 20, 15, 8, 197, 29, 32, 67, 36, 192, 15, 8, 197, 25, 32, 71, 36,
+			192, 15, 0, 12, 68, 56, 241, 197, 56, 50, 6, 39, 14, 50, 0, 9, 198, 53, 84, 203, 84, 199, 210, 15, 9, 198, 12, 83, 12, 84,
+			199, 210, 15, 9, 198, 4, 197, 133, 60, 199, 210, 15, 7, 196, 44, 147, 137, 56, 15, 11, 200, 80, 161, 78, 21, 34, 78, 16, 80, 15,
+			11, 200, 77, 98, 71, 21, 34, 78, 16, 80, 15, 11, 200, 44, 243, 147, 84, 194, 78, 16, 80, 15, 11, 200, 44, 84, 148, 20, 210, 78,
+			16, 80, 15, 11, 200, 36, 225, 129, 57, 66, 78, 16, 80, 15, 11, 200, 32, 84, 148, 84, 114, 78, 16, 80, 15, 11, 200, 20, 196, 203,
+			21, 34, 78, 16, 80, 15, 11, 200, 16, 19, 147, 21, 34, 78, 16, 80, 15, 10, 199, 9, 83, 7, 5, 34, 69, 56, 15, 0, 19, 5,
+			102, 46, 101, 107, 115, 83, 108, 36, 81, 89, 36, 65, 48, 13, 55, 0, 25, 16, 69, 24, 192, 75, 60, 224, 83, 55, 117, 49, 6, 108,
+			68, 0, 15, 8, 197, 80, 19, 142, 36, 224, 15, 8, 197, 52, 244, 134, 36, 224, 15, 8, 197, 4, 211, 210, 36, 224, 15, 8, 197, 81,
+			35, 202, 4, 224, 15, 8, 197, 72, 16, 130, 36, 224, 15, 10, 199, 77, 66, 77, 84, 192, 78, 76, 15, 0, 7, 196, 52, 20, 213, 80,
+			15, 11, 200, 72, 80, 75, 80, 147, 206, 125, 32, 15, 0, 11, 66, 12, 16, 89, 37, 34, 49, 117, 0, 25, 9, 198, 125, 66, 79, 48,
+			241, 201, 15, 8, 197, 37, 36, 133, 4, 192, 15, 9, 198, 33, 145, 18, 4, 229, 0, 15, 0, 9, 198, 44, 243, 147, 84, 199, 210, 15,
+			9, 198, 12, 148, 139, 84, 199, 210, 15, 8, 197, 124, 119, 201, 76, 176, 15, 0, 9, 198, 64, 243, 25, 4, 210, 68, 15, 9, 198, 64,
+			84, 212, 36, 50, 68, 15, 8, 197, 76, 20, 132, 36, 224, 15, 8, 197, 16, 147, 216, 36, 224, 15, 8, 197, 40, 244, 132, 4, 224, 15,
+			11, 200, 76, 82, 83, 52, 241, 210, 4, 96, 15, 11, 200, 60, 49, 65, 56, 241, 210, 4, 96, 15, 11, 200, 44, 20, 132, 36, 241, 210,
+			4, 96, 15, 11, 200, 8, 144, 140, 36, 241, 210, 4, 96, 15, 9, 198, 36, 224, 201, 16, 83, 148, 15, 9, 198, 29, 32, 68, 36, 83,
+			148, 15, 9, 198, 16, 242, 213, 52, 83, 148, 15, 8, 197, 8, 192, 68, 4, 224, 16, 9, 68, 25, 33, 65, 44, 21, 0, 47, 0, 9,
+			198, 48, 22, 129, 72, 243, 128, 15, 9, 198, 80, 244, 147, 36, 243, 128, 15, 9, 198, 77, 64, 68, 36, 243, 128, 15, 9, 198, 8, 147,
+			12, 36, 243, 128, 15, 9, 198, 5, 82, 212, 36, 243, 128, 15, 12, 201, 48, 81, 201, 80, 147, 73, 80, 85, 0, 15, 12, 201, 25, 32,
+			84, 21, 35, 137, 80, 85, 0, 15, 9, 198, 52, 17, 206, 60, 194, 69, 15, 9, 198, 44, 193, 78, 60, 66, 69, 15, 9, 198, 77, 147,
+			80, 61, 50, 69, 15, 9, 198, 28, 84, 141, 4, 226, 69, 15, 9, 198, 21, 2, 84, 4, 98, 69, 15, 9, 198, 16, 80, 197, 56, 226,
+			69, 15, 7, 196, 76, 83, 73, 80, 15, 9, 198, 56, 146, 207, 80, 147, 128, 15, 9, 198, 44, 20, 143, 80, 147, 128, 15, 9, 198, 76,
+			20, 129, 12, 83, 128, 15, 9, 198, 64, 19, 129, 52, 19, 128, 15, 12, 201, 80, 85, 18, 5, 96, 76, 20, 229, 0, 15, 0, 9, 198,
+			36, 225, 21, 45, 67, 210, 15, 9, 198, 76, 243, 21, 80, 147, 206, 15, 9, 198, 72, 245, 1, 80, 147, 206, 15, 9, 198, 56, 81, 193,
+			80, 147, 206, 15, 9, 198, 48, 81, 193, 80, 147, 206, 15, 9, 198, 20, 213, 76, 76, 147, 206, 15, 9, 198, 12, 149, 1, 80, 147, 206,
+			15, 14, 203, 64, 19, 31, 60, 229, 15, 48, 241, 201, 76, 176, 15, 11, 200, 44, 19, 129, 4, 231, 201, 76, 176, 15, 11, 200, 44, 19,
+			129, 4, 231, 201, 76, 176, 15, 14, 203, 25, 243, 143, 52, 83, 143, 48, 241, 201, 76, 176, 15, 9, 198, 5, 4, 5, 80, 149, 0, 15,
+			9, 198, 76, 225, 71, 48, 21, 0, 15, 0, 10, 199, 72, 80, 197, 77, 50, 79, 56, 15, 10, 199, 4, 227, 133, 45, 50, 79, 56, 15,
+			10, 199, 4, 67, 73, 77, 50, 79, 56, 15, 9, 198, 52, 19, 133, 72, 194, 71, 15, 9, 198, 49, 146, 211, 4, 194, 71, 15, 9, 198,
+			28, 241, 13, 60, 66, 71, 15, 9, 198, 4, 228, 197, 20, 194, 71, 15, 11, 200, 9, 32, 86, 85, 32, 82, 36, 80, 15, 11, 200, 72,
+			81, 133, 45, 67, 210, 36, 80, 15, 11, 200, 65, 35, 214, 37, 51, 210, 36, 80, 15, 11, 200, 45, 33, 77, 5, 67, 210, 36, 80, 15,
+			7, 196, 16, 147, 129, 72, 15, 10, 199, 72, 84, 208, 20, 181, 1, 8, 15, 10, 199, 56, 81, 204, 36, 113, 65, 8, 15, 0, 6, 195,
+			89, 51, 208, 13, 12, 201, 48, 20, 153, 56, 115, 211, 44, 244, 0, 15, 8, 197, 8, 192, 77, 21, 32, 15, 16, 205, 16, 83, 132, 72,
+			242, 210, 60, 227, 204, 60, 114, 83, 44, 15, 9, 198, 36, 225, 129, 57, 66, 76, 15, 11, 200, 44, 243, 148, 72, 243, 12, 4, 32, 15,
+			11, 200, 36, 224, 67, 12, 84, 20, 4, 32, 15, 12, 69, 12, 243, 142, 61, 32, 49, 109, 50, 109, 0, 0, 9, 198, 5, 53, 18, 60,
+			227, 205, 15, 11, 200, 24, 147, 20, 72, 84, 137, 56, 112, 15, 9, 198, 80, 16, 149, 48, 84, 128, 15, 9, 198, 76, 21, 9, 56, 84,
+			128, 15, 9, 198, 72, 84, 213, 52, 84, 128, 15, 9, 198, 52, 243, 137, 80, 84, 128, 15, 9, 198, 52, 83, 79, 72, 84, 128, 15, 9,
+			198, 45, 83, 85, 48, 84, 128, 15, 9, 198, 36, 228, 197, 72, 84, 128, 15, 9, 198, 36, 226, 1, 48, 84, 128, 15, 9, 198, 36, 195,
+			21, 16, 84, 128, 15, 9, 198, 28, 83, 73, 56, 84, 128, 15, 9, 198, 24, 242, 213, 76, 84, 128, 15, 9, 198, 24, 16, 149, 48, 84,
+			128, 15, 9, 198, 20, 210, 84, 80, 84, 128, 15, 9, 198, 16, 243, 73, 56, 84, 128, 15, 9, 198, 16, 80, 137, 80, 84, 128, 15, 9,
+			198, 5, 52, 9, 72, 84, 128, 15, 9, 198, 4, 195, 21, 16, 84, 128, 15, 9, 198, 4, 67, 208, 80, 84, 128, 15, 14, 203, 72, 81,
+			204, 20, 209, 78, 80, 20, 137, 76, 176, 15, 14, 203, 72, 81, 201, 60, 224, 76, 37, 53, 9, 76, 176, 15, 14, 203, 72, 21, 9, 60,
+			224, 76, 37, 53, 9, 76, 176, 15, 14, 203, 64, 242, 78, 80, 147, 12, 37, 53, 9, 76, 176, 15, 14, 203, 64, 21, 5, 72, 224, 76,
+			37, 53, 9, 76, 176, 15, 14, 203, 56, 21, 9, 60, 224, 76, 37, 53, 9, 76, 176, 15, 14, 203, 44, 19, 142, 36, 32, 76, 37, 53,
+			9, 76, 176, 15, 14, 203, 33, 83, 65, 56, 34, 79, 48, 241, 201, 76, 176, 15, 12, 201, 44, 244, 147, 21, 69, 5, 72, 85, 0, 15,
+			10, 199, 76, 183, 204, 4, 117, 9, 28, 15, 10, 199, 8, 202, 68, 4, 117, 9, 28, 15, 9, 198, 32, 243, 143, 72, 20, 128, 15, 12,
+			201, 44, 243, 77, 20, 228, 213, 72, 16, 128, 15, 0, 11, 200, 65, 34, 78, 12, 148, 9, 20, 192, 15, 9, 198, 17, 42, 77, 52, 84,
+			137, 15, 11, 200, 76, 83, 132, 73, 241, 212, 36, 112, 15, 9, 198, 36, 229, 129, 48, 145, 0, 15, 9, 198, 21, 84, 143, 64, 145, 0,
+			15, 9, 198, 52, 83, 5, 72, 85, 0, 15, 11, 200, 45, 35, 205, 61, 51, 205, 4, 192, 15, 0, 10, 199, 4, 194, 214, 4, 229, 15,
+			72, 15, 11, 200, 88, 83, 133, 72, 243, 15, 28, 144, 15, 11, 200, 61, 35, 137, 80, 243, 15, 28, 144, 15, 11, 200, 60, 67, 206, 80,
+			243, 15, 28, 144, 15, 11, 200, 60, 49, 65, 56, 243, 15, 28, 144, 15, 11, 200, 36, 211, 85, 56, 243, 15, 28, 144, 15, 11, 200, 28,
+			192, 67, 36, 243, 15, 28, 144, 15, 11, 200, 24, 83, 73, 56, 243, 15, 28, 144, 15, 11, 200, 20, 118, 80, 80, 243, 15, 28, 144, 15,
+			12, 201, 44, 243, 132, 37, 66, 79, 56, 83, 0, 15, 7, 196, 85, 33, 197, 72, 15, 7, 196, 52, 245, 133, 72, 15, 12, 201, 120, 33,
+			78, 32, 161, 82, 80, 145, 192, 15, 12, 201, 88, 81, 5, 72, 135, 198, 80, 145, 192, 15, 12, 201, 45, 32, 83, 10, 148, 147, 80, 145,
+			192, 15, 12, 201, 44, 243, 148, 84, 33, 82, 56, 19, 0, 15, 5, 195, 32, 244, 192, 0, 11, 200, 72, 84, 208, 37, 32, 84, 61, 32,
+			15, 11, 200, 45, 83, 20, 37, 96, 84, 61, 32, 15, 12, 201, 80, 84, 141, 36, 227, 204, 60, 114, 64, 15, 12, 201, 5, 52, 217, 72,
+			147, 204, 60, 114, 64, 15, 9, 198, 45, 34, 77, 36, 225, 76, 15, 9, 198, 32, 244, 141, 60, 225, 76, 15, 15, 204, 81, 32, 78, 77,
+			97, 83, 80, 149, 9, 76, 209, 64, 15, 15, 204, 76, 83, 147, 5, 66, 79, 56, 19, 9, 76, 209, 64, 15, 15, 204, 44, 243, 147, 81,
+			37, 75, 80, 149, 137, 76, 209, 64, 15, 15, 204, 25, 83, 132, 4, 209, 78, 80, 19, 9, 76, 209, 64, 15, 15, 204, 20, 180, 200, 36,
+			34, 84, 36, 243, 137, 76, 209, 64, 15, 10, 199, 8, 243, 19, 40, 85, 137, 44, 15, 11, 200, 88, 83, 133, 105, 81, 76, 4, 224, 15,
+			11, 200, 29, 80, 84, 20, 208, 76, 4, 224, 15, 11, 200, 85, 48, 133, 44, 148, 212, 4, 224, 16, 11, 200, 44, 20, 193, 44, 132, 212,
+			4, 224, 16, 9, 198, 77, 147, 143, 16, 19, 0, 15, 0, 13, 69, 12, 19, 1, 37, 48, 49, 117, 55, 6, 115, 0, 7, 196, 76, 84,
+			169, 76, 15, 9, 198, 76, 240, 201, 60, 227, 205, 15, 7, 196, 5, 4, 137, 48, 15, 11, 200, 61, 35, 129, 52, 83, 148, 36, 176, 15,
+			11, 200, 16, 144, 71, 56, 244, 212, 36, 176, 15, 0, 8, 197, 76, 84, 137, 165, 48, 15, 8, 197, 17, 80, 137, 165, 48, 15, 8, 197,
+			12, 20, 137, 165, 48, 15, 9, 198, 80, 16, 200, 37, 53, 0, 15, 9, 198, 52, 20, 152, 37, 53, 0, 15, 9, 198, 16, 17, 1, 37,
+			53, 0, 15, 12, 201, 25, 33, 77, 65, 35, 214, 60, 177, 82, 15, 12, 201, 20, 193, 75, 81, 34, 70, 36, 49, 82, 15, 12, 201, 77,
+			148, 212, 20, 208, 84, 36, 177, 82, 15, 12, 201, 57, 83, 73, 76, 208, 84, 36, 177, 82, 15, 12, 201, 44, 148, 143, 52, 19, 148, 36,
+			177, 82, 15, 12, 201, 44, 20, 137, 76, 208, 84, 36, 177, 82, 15, 12, 201, 5, 53, 9, 28, 208, 84, 36, 177, 82, 15, 9, 198, 65,
+			39, 204, 84, 66, 69, 15, 7, 196, 20, 180, 197, 52, 15, 0, 11, 200, 61, 37, 15, 65, 241, 9, 77, 64, 15, 7, 196, 8, 20, 143,
+			56, 15, 11, 200, 80, 84, 146, 37, 67, 210, 36, 80, 15, 11, 200, 60, 97, 133, 73, 67, 210, 36, 80, 15, 14, 203, 20, 180, 193, 52,
+			147, 129, 80, 244, 137, 84, 208, 15, 14, 4, 95, 51, 88, 111, 47, 34, 6, 119, 83, 47, 14, 0, 0, 9, 198, 52, 85, 5, 61, 34,
+			84, 15, 12, 4, 95, 116, 108, 100, 47, 37, 55, 72, 13, 0, 0, 8, 197, 32, 243, 142, 165, 32, 15, 12, 201, 45, 34, 77, 36, 224,
+			76, 37, 53, 0, 15, 7, 196, 64, 85, 9, 80, 15, 7, 196, 5, 81, 9, 80, 15, 9, 68, 12, 245, 67, 32, 21, 0, 47, 0, 14,
+			203, 44, 243, 147, 81, 37, 75, 80, 149, 137, 77, 64, 15, 14, 203, 25, 83, 132, 4, 209, 78, 80, 19, 9, 77, 64, 15, 11, 200, 4,
+			100, 223, 81, 65, 76, 36, 112, 15, 9, 198, 8, 18, 197, 48, 149, 0, 15, 7, 66, 4, 96, 118, 11, 0, 0, 19, 5, 100, 106, 39,
+			101, 110, 72, 37, 12, 6, 72, 57, 36, 12, 57, 112, 50, 0, 9, 198, 36, 208, 71, 36, 231, 210, 15, 10, 199, 76, 82, 214, 20, 228,
+			197, 72, 15, 10, 199, 64, 84, 148, 85, 32, 133, 72, 15, 10, 199, 52, 20, 212, 85, 32, 133, 72, 15, 10, 199, 44, 244, 146, 84, 212,
+			5, 72, 15, 10, 199, 44, 243, 147, 21, 37, 133, 72, 15, 10, 199, 44, 243, 139, 49, 81, 5, 72, 15, 10, 199, 36, 229, 9, 52, 145,
+			5, 72, 15, 10, 199, 20, 180, 208, 48, 241, 5, 72, 15, 10, 199, 16, 83, 9, 44, 21, 5, 72, 15, 10, 199, 5, 4, 12, 5, 81,
+			5, 72, 15, 10, 199, 8, 84, 135, 20, 228, 197, 72, 15, 0, 17, 67, 33, 96, 68, 84, 117, 15, 89, 108, 0, 49, 81, 115, 195, 165,
+			32, 10, 199, 80, 245, 1, 48, 149, 31, 72, 15, 8, 197, 104, 148, 139, 60, 224, 15, 10, 199, 80, 83, 5, 52, 21, 9, 44, 15, 10,
+			199, 64, 225, 85, 52, 21, 9, 44, 15, 10, 199, 29, 32, 77, 52, 21, 9, 44, 15, 10, 199, 20, 225, 82, 28, 85, 9, 44, 15, 10,
+			199, 24, 192, 84, 84, 193, 78, 76, 15, 9, 198, 56, 245, 137, 12, 144, 84, 15, 9, 198, 24, 16, 146, 36, 176, 84, 15, 9, 198, 12,
+			128, 82, 52, 19, 148, 15, 0, 0, 13, 68, 4, 193, 78, 20, 118, 55, 6, 114, 50, 14, 0, 12, 201, 72, 84, 18, 125, 49, 78, 80,
+			84, 128, 15, 11, 200, 24, 192, 77, 8, 246, 65, 57, 64, 15, 9, 198, 20, 193, 70, 4, 229, 0, 15, 0, 10, 199, 81, 32, 86, 21,
+			53, 5, 72, 15, 10, 199, 72, 84, 208, 20, 181, 5, 72, 15, 9, 198, 65, 39, 195, 37, 49, 82, 15, 10, 199, 65, 34, 79, 72, 149,
+			5, 72, 15, 10, 199, 64, 244, 212, 16, 21, 5, 72, 15, 10, 199, 64, 84, 147, 37, 53, 5, 72, 15, 10, 199, 52, 83, 147, 81, 37,
+			69, 72, 15, 10, 199, 44, 243, 147, 81, 37, 69, 72, 15, 10, 199, 44, 242, 78, 12, 145, 5, 72, 15, 10, 199, 36, 228, 212, 37, 69,
+			69, 72, 15, 9, 198, 29, 39, 195, 37, 49, 82, 15, 10, 199, 24, 197, 79, 72, 145, 5, 72, 15, 10, 199, 21, 50, 193, 52, 245, 5,
+			72, 15, 10, 199, 20, 180, 212, 73, 81, 5, 72, 15, 10, 199, 20, 180, 203, 49, 81, 5, 72, 15, 10, 199, 5, 53, 18, 36, 225, 197,
+			72, 15, 9, 198, 46, 145, 197, 57, 49, 82, 15, 11, 200, 56, 81, 204, 36, 113, 78, 12, 80, 15, 11, 200, 44, 243, 148, 20, 224, 78,
+			12, 80, 15, 11, 200, 21, 128, 197, 48, 193, 78, 12, 80, 15, 11, 200, 16, 145, 134, 21, 33, 78, 12, 80, 15, 11, 200, 5, 52, 201,
+			77, 64, 78, 12, 80, 15, 7, 196, 44, 20, 1, 8, 15, 11, 200, 64, 84, 147, 36, 99, 1, 28, 80, 15, 0, 18, 70, 52, 19, 129,
+			29, 80, 64, 65, 117, 50, 6, 117, 12, 81, 58, 117, 0, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 53, 0, 15, 9, 198,
+			72, 149, 15, 72, 225, 76, 15, 8, 197, 44, 20, 211, 4, 32, 15, 0, 8, 197, 20, 194, 84, 125, 32, 15, 12, 201, 8, 144, 140, 36,
+			245, 5, 44, 20, 128, 15, 9, 198, 72, 84, 1, 72, 16, 128, 15, 9, 198, 56, 21, 137, 28, 16, 128, 15, 9, 198, 37, 36, 137, 80,
+			16, 128, 15, 0, 12, 201, 72, 21, 9, 60, 224, 76, 37, 49, 82, 15, 12, 201, 65, 54, 75, 60, 195, 199, 37, 49, 82, 15, 12, 201,
+			65, 35, 204, 21, 64, 82, 37, 49, 82, 15, 12, 201, 65, 34, 77, 37, 66, 86, 37, 49, 82, 15, 12, 201, 64, 84, 147, 60, 224, 76,
+			37, 49, 82, 15, 12, 201, 64, 20, 129, 48, 193, 76, 37, 49, 82, 15, 12, 201, 60, 34, 133, 45, 66, 86, 37, 49, 82, 15, 12, 201,
+			56, 21, 9, 60, 224, 76, 37, 49, 82, 15, 12, 201, 52, 85, 1, 52, 244, 134, 61, 49, 82, 15, 12, 201, 52, 20, 135, 36, 224, 76,
+			37, 49, 82, 15, 12, 201, 45, 35, 206, 60, 195, 199, 37, 49, 82, 15, 12, 201, 45, 34, 77, 36, 224, 76, 37, 49, 82, 15, 12, 201,
+			44, 243, 77, 84, 224, 76, 37, 49, 82, 15, 12, 201, 44, 20, 129, 45, 65, 82, 37, 49, 82, 15, 12, 201, 44, 19, 142, 36, 32, 76,
+			37, 49, 82, 15, 12, 201, 36, 229, 5, 72, 224, 76, 37, 49, 82, 15, 12, 201, 24, 19, 73, 48, 144, 82, 37, 49, 82, 15, 12, 201,
+			21, 70, 77, 60, 195, 199, 37, 49, 82, 15, 12, 201, 20, 97, 133, 45, 66, 86, 37, 49, 82, 15, 12, 201, 12, 243, 80, 85, 65, 82,
+			37, 49, 82, 15, 12, 201, 4, 209, 82, 36, 176, 78, 37, 49, 82, 15, 8, 197, 25, 34, 71, 36, 64, 15, 12, 201, 32, 84, 142, 36,
+			225, 197, 57, 49, 82, 15, 12, 201, 21, 48, 138, 21, 33, 197, 57, 49, 82, 15, 7, 196, 16, 83, 142, 20, 76, 0, 10, 199, 88, 144,
+			212, 61, 34, 65, 56, 15, 10, 199, 76, 19, 65, 72, 149, 1, 56, 15, 10, 199, 32, 84, 140, 61, 98, 65, 56, 15, 11, 200, 124, 181,
+			137, 88, 19, 5, 57, 64, 15, 10, 199, 76, 19, 65, 72, 149, 1, 56, 16, 9, 198, 36, 212, 5, 16, 19, 147, 15, 0, 9, 198, 60,
+			97, 137, 12, 145, 76, 15, 11, 200, 12, 244, 212, 5, 34, 67, 4, 224, 15, 12, 201, 81, 32, 78, 76, 49, 78, 16, 83, 148, 15, 12,
+			201, 36, 229, 5, 73, 97, 78, 36, 83, 148, 15, 11, 200, 64, 243, 25, 85, 33, 84, 4, 224, 16, 0, 13, 202, 12, 128, 84, 20, 21,
+			66, 72, 144, 78, 80, 15, 0, 10, 199, 80, 19, 65, 72, 147, 132, 20, 15, 10, 199, 72, 149, 129, 48, 147, 132, 20, 15, 10, 199, 65,
+			34, 79, 72, 147, 132, 20, 15, 8, 197, 52, 148, 211, 36, 192, 15, 15, 204, 88, 244, 132, 36, 225, 194, 61, 33, 197, 57, 49, 82, 15,
+			15, 204, 76, 176, 78, 16, 84, 130, 61, 33, 197, 57, 49, 82, 15, 9, 198, 12, 19, 69, 72, 245, 78, 15, 14, 203, 72, 82, 207, 57,
+			96, 76, 21, 48, 197, 57, 64, 15, 10, 199, 80, 19, 80, 60, 224, 68, 20, 15, 10, 199, 72, 83, 79, 84, 192, 68, 20, 15, 10, 199,
+			52, 20, 141, 20, 192, 68, 20, 15, 10, 199, 44, 243, 15, 56, 224, 68, 20, 15, 10, 199, 44, 20, 130, 60, 224, 68, 20, 15, 10, 199,
+			24, 20, 150, 20, 192, 68, 20, 15, 10, 199, 21, 52, 12, 4, 224, 68, 20, 15, 10, 199, 12, 131, 203, 60, 192, 68, 20, 15, 10, 199,
+			8, 20, 212, 60, 224, 68, 20, 15, 10, 199, 4, 208, 129, 77, 48, 68, 20, 15, 0, 11, 200, 77, 65, 82, 20, 241, 210, 4, 208, 15,
+			11, 200, 76, 82, 83, 52, 241, 210, 4, 208, 15, 11, 200, 61, 33, 193, 56, 145, 210, 4, 208, 15, 11, 200, 44, 20, 132, 36, 241, 210,
+			4, 208, 15, 7, 196, 60, 49, 65, 56, 16, 0, 20, 72, 8, 82, 71, 56, 85, 4, 20, 160, 71, 116, 68, 6, 114, 72, 122, 57, 0,
+			66, 8, 197, 84, 226, 83, 60, 224, 15, 8, 197, 61, 5, 9, 60, 224, 15, 8, 197, 48, 81, 201, 60, 224, 15, 11, 70, 76, 178, 78,
+			32, 80, 68, 21, 0, 47, 0, 0, 8, 197, 17, 83, 208, 60, 192, 15, 5, 194, 16, 16, 72, 0, 7, 196, 52, 84, 193, 56, 16, 0,
+			8, 197, 64, 84, 147, 60, 224, 15, 8, 197, 64, 192, 84, 36, 224, 15, 8, 197, 44, 19, 204, 36, 224, 15, 8, 197, 16, 83, 148, 36,
+			224, 15, 8, 197, 8, 84, 140, 36, 224, 15, 8, 197, 64, 192, 84, 36, 224, 15, 8, 197, 8, 84, 140, 36, 224, 15, 8, 197, 45, 83,
+			80, 4, 224, 16, 0, 9, 198, 8, 50, 75, 61, 34, 69, 15, 9, 198, 56, 84, 20, 84, 226, 69, 15, 7, 196, 21, 97, 78, 80, 15,
+			9, 68, 21, 97, 78, 80, 21, 0, 47, 0, 9, 198, 56, 144, 143, 56, 149, 0, 15, 9, 198, 14, 147, 9, 8, 21, 0, 15, 9, 198,
+			4, 71, 203, 88, 21, 0, 15, 0, 9, 198, 16, 83, 1, 29, 66, 71, 15, 9, 198, 4, 68, 212, 4, 66, 71, 15, 9, 198, 16, 83,
+			1, 29, 66, 71, 15, 10, 199, 44, 243, 134, 37, 50, 193, 8, 15, 0, 12, 201, 44, 19, 5, 40, 67, 211, 44, 244, 0, 15, 12, 201,
+			28, 19, 22, 4, 227, 211, 44, 244, 0, 15, 11, 200, 24, 20, 137, 77, 242, 83, 52, 80, 15, 8, 67, 81, 34, 80, 21, 0, 47, 0,
+			9, 198, 52, 85, 1, 24, 244, 128, 15, 9, 198, 16, 80, 201, 76, 244, 128, 15, 9, 198, 72, 80, 75, 80, 244, 128, 15, 9, 198, 88,
+			81, 197, 80, 84, 128, 15, 9, 198, 88, 19, 21, 80, 84, 128, 15, 9, 198, 80, 245, 67, 32, 84, 128, 15, 9, 198, 77, 1, 78, 16,
+			84, 128, 15, 9, 198, 76, 147, 85, 48, 84, 128, 15, 9, 198, 76, 84, 15, 56, 84, 128, 15, 9, 198, 76, 19, 21, 80, 84, 128, 15,
+			9, 198, 76, 16, 143, 80, 84, 128, 15, 9, 198, 73, 83, 83, 80, 84, 128, 15, 9, 198, 72, 148, 201, 44, 84, 128, 15, 9, 198, 72,
+			85, 137, 16, 84, 128, 15, 9, 198, 72, 84, 207, 56, 84, 128, 15, 9, 198, 72, 84, 201, 16, 84, 128, 15, 9, 198, 72, 83, 5, 28,
+			84, 128, 15, 9, 198, 72, 82, 217, 48, 84, 128, 15, 9, 198, 72, 82, 137, 12, 84, 128, 15, 9, 198, 72, 81, 193, 48, 84, 128, 15,
+			9, 198, 72, 81, 133, 72, 84, 128, 15, 9, 198, 72, 81, 9, 28, 84, 128, 15, 9, 198, 72, 80, 201, 80, 84, 128, 15, 9, 198, 65,
+			33, 77, 36, 84, 128, 15, 9, 198, 64, 245, 83, 76, 84, 128, 15, 9, 198, 64, 242, 213, 48, 84, 128, 15, 9, 198, 64, 21, 9, 56,
+			84, 128, 15, 9, 198, 61, 33, 9, 56, 84, 128, 15, 9, 198, 61, 5, 9, 52, 84, 128, 15, 9, 198, 61, 4, 15, 56, 84, 128, 15,
+			9, 198, 61, 1, 1, 80, 84, 128, 15, 9, 198, 52, 81, 9, 80, 84, 128, 15, 9, 198, 52, 20, 143, 16, 84, 128, 15, 9, 198, 48,
+			144, 201, 80, 84, 128, 15, 9, 198, 48, 19, 73, 56, 84, 128, 15, 9, 198, 44, 195, 193, 44, 84, 128, 15, 9, 198, 44, 194, 67, 32,
+			84, 128, 15, 9, 198, 36, 229, 137, 80, 84, 128, 15, 9, 198, 36, 224, 201, 80, 84, 128, 15, 9, 198, 36, 212, 15, 56, 84, 128, 15,
+			9, 198, 32, 243, 143, 72, 84, 128, 15, 9, 198, 32, 21, 129, 72, 84, 128, 15, 9, 198, 29, 32, 83, 76, 84, 128, 15, 9, 198, 25,
+			32, 80, 64, 84, 128, 15, 9, 198, 20, 225, 193, 28, 84, 128, 15, 9, 198, 16, 85, 143, 88, 84, 128, 15, 9, 198, 16, 84, 9, 48,
+			84, 128, 15, 9, 198, 16, 83, 5, 28, 84, 128, 15, 9, 198, 16, 80, 201, 52, 84, 128, 15, 9, 198, 16, 80, 201, 16, 84, 128, 15,
+			9, 198, 12, 148, 197, 48, 84, 128, 15, 9, 198, 12, 128, 82, 52, 84, 128, 15, 9, 198, 12, 128, 82, 28, 84, 128, 15, 9, 198, 12,
+			128, 78, 28, 84, 128, 15, 9, 198, 12, 83, 148, 72, 84, 128, 15, 9, 198, 12, 17, 13, 36, 84, 128, 15, 9, 198, 9, 32, 73, 76,
+			84, 128, 15, 9, 198, 5, 52, 213, 72, 84, 128, 15, 9, 198, 5, 36, 137, 88, 84, 128, 15, 9, 198, 4, 197, 5, 72, 84, 128, 15,
+			9, 198, 4, 69, 137, 76, 84, 128, 15, 9, 198, 164, 179, 206, 60, 210, 64, 15, 9, 198, 16, 144, 84, 21, 35, 73, 15, 9, 198, 57,
+			82, 204, 20, 20, 128, 15, 9, 198, 53, 144, 78, 52, 20, 128, 15, 9, 198, 48, 19, 73, 56, 20, 128, 15, 9, 198, 5, 97, 79, 48,
+			20, 128, 15, 14, 70, 33, 99, 210, 24, 244, 128, 84, 125, 83, 6, 109, 0, 0, 10, 199, 48, 147, 78, 60, 195, 199, 36, 15, 10, 199,
+			29, 32, 70, 60, 195, 199, 36, 15, 10, 199, 28, 83, 77, 60, 195, 199, 36, 15, 10, 199, 5, 81, 9, 60, 195, 199, 36, 15, 9, 198,
+			52, 19, 1, 44, 149, 0, 15, 11, 200, 65, 35, 206, 60, 210, 78, 4, 192, 15, 0, 11, 200, 64, 243, 9, 80, 243, 15, 28, 144, 15,
+			11, 200, 52, 85, 15, 16, 243, 15, 28, 144, 15, 11, 200, 45, 34, 83, 80, 243, 15, 28, 144, 15, 11, 200, 21, 50, 193, 80, 243, 15,
+			28, 144, 15, 11, 200, 20, 229, 15, 52, 243, 15, 28, 144, 15, 11, 200, 20, 208, 146, 100, 243, 15, 28, 144, 15, 7, 196, 88, 245, 5,
+			72, 15, 7, 196, 72, 81, 197, 72, 15, 7, 196, 61, 5, 5, 72, 15, 7, 196, 48, 81, 197, 72, 15, 7, 196, 41, 81, 197, 72, 15,
+			7, 196, 12, 149, 5, 72, 15, 11, 200, 32, 85, 5, 72, 243, 143, 52, 144, 15, 11, 200, 25, 148, 201, 60, 115, 143, 52, 144, 15, 14,
+			203, 64, 21, 18, 36, 20, 139, 4, 194, 83, 52, 80, 15, 14, 203, 64, 20, 148, 36, 181, 76, 5, 34, 83, 52, 80, 15, 7, 196, 88,
+			81, 193, 72, 15, 7, 196, 68, 21, 1, 72, 15, 7, 196, 44, 21, 1, 72, 15, 0, 18, 207, 17, 32, 77, 4, 67, 203, 84, 209, 78,
+			80, 20, 137, 76, 209, 64, 15, 11, 200, 12, 21, 1, 48, 243, 137, 20, 224, 15, 11, 200, 64, 20, 129, 29, 80, 89, 4, 224, 15, 11,
+			200, 52, 81, 9, 80, 84, 146, 4, 224, 16, 9, 198, 45, 38, 83, 80, 19, 0, 15, 14, 73, 8, 80, 67, 33, 99, 204, 48, 86, 64,
+			21, 0, 47, 0, 9, 198, 4, 229, 9, 56, 243, 73, 15, 12, 201, 16, 243, 73, 12, 147, 5, 72, 85, 0, 15, 0, 10, 199, 44, 244,
+			205, 60, 195, 199, 36, 15, 9, 198, 41, 81, 1, 37, 53, 0, 15, 8, 197, 25, 34, 86, 60, 192, 15, 9, 198, 4, 65, 78, 60, 145,
+			0, 15, 8, 197, 25, 37, 71, 4, 192, 15, 0, 12, 201, 88, 84, 147, 36, 243, 133, 72, 147, 135, 15, 12, 201, 72, 81, 133, 72, 83,
+			148, 36, 83, 0, 15, 10, 199, 53, 82, 1, 52, 81, 1, 56, 15, 7, 196, 80, 149, 1, 56, 16, 12, 201, 16, 147, 69, 57, 50, 79,
+			56, 19, 0, 15, 0, 9, 198, 88, 149, 18, 36, 243, 0, 15, 0, 11, 200, 80, 245, 67, 32, 84, 137, 56, 112, 15, 11, 200, 77, 64,
+			84, 84, 84, 137, 56, 112, 15, 11, 200, 76, 180, 129, 88, 84, 137, 56, 112, 15, 11, 200, 76, 176, 78, 16, 84, 137, 56, 112, 15, 11,
+			200, 76, 176, 77, 24, 84, 137, 56, 112, 15, 11, 200, 73, 83, 83, 80, 84, 137, 56, 112, 15, 11, 200, 72, 81, 149, 76, 84, 137, 56,
+			112, 15, 11, 200, 72, 81, 133, 72, 84, 137, 56, 112, 15, 11, 200, 72, 81, 21, 12, 84, 137, 56, 112, 15, 11, 200, 72, 81, 9, 28,
+			84, 137, 56, 112, 15, 11, 200, 64, 242, 78, 80, 84, 137, 56, 112, 15, 11, 200, 64, 192, 71, 36, 84, 137, 56, 112, 15, 11, 200, 64,
+			21, 9, 56, 84, 137, 56, 112, 15, 11, 200, 64, 20, 129, 24, 84, 137, 56, 112, 15, 11, 200, 64, 20, 129, 16, 84, 137, 56, 112, 15,
+			11, 200, 64, 19, 133, 48, 84, 137, 56, 112, 15, 11, 200, 61, 5, 9, 52, 84, 137, 56, 112, 15, 11, 200, 52, 245, 9, 88, 84, 137,
+			56, 112, 15, 11, 200, 45, 83, 85, 48, 84, 137, 56, 112, 15, 11, 200, 44, 20, 137, 44, 84, 137, 56, 112, 15, 11, 200, 44, 19, 143,
+			56, 84, 137, 56, 112, 15, 11, 200, 44, 17, 13, 36, 84, 137, 56, 112, 15, 11, 200, 40, 243, 135, 48, 84, 137, 56, 112, 15, 11, 200,
+			36, 226, 84, 36, 84, 137, 56, 112, 15, 11, 200, 36, 225, 137, 12, 84, 137, 56, 112, 15, 11, 200, 36, 115, 143, 72, 84, 137, 56, 112,
+			15, 11, 200, 32, 243, 143, 72, 84, 137, 56, 112, 15, 11, 200, 29, 37, 80, 64, 84, 137, 56, 112, 15, 11, 200, 28, 83, 133, 72, 84,
+			137, 56, 112, 15, 11, 200, 24, 16, 149, 48, 84, 137, 56, 112, 15, 11, 200, 20, 228, 201, 48, 84, 137, 56, 112, 15, 11, 200, 20, 208,
+			76, 40, 84, 137, 56, 112, 15, 11, 200, 20, 181, 137, 64, 84, 137, 56, 112, 15, 11, 200, 17, 81, 76, 48, 84, 137, 56, 112, 15, 11,
+			200, 16, 243, 73, 56, 84, 137, 56, 112, 15, 11, 200, 16, 85, 143, 88, 84, 137, 56, 112, 15, 11, 200, 16, 84, 137, 88, 84, 137, 56,
+			112, 15, 11, 200, 16, 80, 201, 52, 84, 137, 56, 112, 15, 11, 200, 16, 80, 137, 80, 84, 137, 56, 112, 15, 11, 200, 12, 83, 148, 72,
+			84, 137, 56, 112, 15, 11, 200, 12, 17, 13, 36, 84, 137, 56, 112, 15, 11, 200, 9, 35, 195, 32, 84, 137, 56, 112, 15, 11, 200, 9,
+			32, 73, 76, 84, 137, 56, 112, 15, 11, 200, 4, 192, 82, 52, 84, 137, 56, 112, 15, 11, 200, 4, 181, 9, 88, 84, 137, 56, 112, 15,
+			11, 200, 4, 69, 137, 76, 84, 137, 56, 112, 15, 11, 200, 4, 35, 210, 80, 84, 137, 56, 112, 15, 11, 200, 4, 35, 206, 56, 84, 137,
+			56, 112, 15, 9, 198, 64, 243, 25, 24, 243, 137, 15, 19, 70, 64, 84, 5, 72, 243, 137, 48, 36, 48, 13, 34, 6, 39, 50, 37, 0,
+			15, 10, 199, 65, 241, 1, 28, 241, 201, 44, 15, 0, 9, 198, 48, 19, 65, 37, 53, 0, 15, 20, 66, 12, 64, 89, 36, 72, 36, 51,
+			6, 108, 65, 0, 44, 15, 81, 114, 111, 109, 32, 9, 198, 17, 147, 129, 52, 149, 0, 15, 8, 197, 72, 17, 9, 4, 192, 15, 8, 197,
+			24, 147, 9, 4, 192, 15, 0, 7, 196, 77, 2, 79, 56, 15, 12, 201, 44, 243, 148, 72, 18, 5, 72, 147, 135, 15, 10, 199, 81, 32,
+			78, 76, 149, 5, 72, 15, 10, 199, 72, 85, 129, 48, 145, 5, 72, 15, 10, 199, 72, 85, 15, 84, 50, 5, 72, 15, 10, 199, 72, 84,
+			212, 37, 69, 69, 72, 15, 10, 199, 72, 81, 140, 20, 181, 5, 72, 15, 10, 199, 65, 35, 204, 60, 225, 197, 72, 15, 10, 199, 65, 35,
+			199, 72, 81, 5, 72, 15, 10, 199, 44, 244, 212, 84, 210, 69, 72, 15, 10, 199, 44, 243, 147, 80, 21, 5, 72, 15, 10, 199, 44, 243,
+			142, 20, 181, 5, 72, 15, 10, 199, 44, 243, 80, 61, 53, 5, 72, 15, 10, 199, 32, 16, 137, 48, 149, 5, 72, 15, 10, 199, 24, 147,
+			138, 85, 53, 5, 72, 15, 10, 199, 24, 84, 141, 20, 229, 5, 72, 15, 10, 199, 20, 97, 133, 45, 69, 69, 72, 15, 10, 199, 4, 48,
+			197, 57, 69, 69, 72, 15, 10, 199, 4, 36, 212, 72, 18, 5, 72, 15, 10, 199, 36, 70, 76, 48, 146, 197, 72, 15, 10, 199, 8, 245,
+			1, 56, 146, 197, 72, 15, 7, 196, 72, 244, 201, 56, 15, 7, 196, 88, 83, 1, 56, 16, 0, 8, 197, 76, 244, 132, 36, 224, 15, 8,
+			197, 64, 82, 212, 36, 224, 15, 8, 197, 28, 20, 132, 36, 224, 15, 8, 197, 4, 226, 76, 36, 224, 15, 9, 198, 64, 244, 212, 84, 192,
+			84, 15, 9, 198, 64, 21, 18, 60, 224, 84, 15, 9, 198, 44, 243, 147, 84, 192, 84, 15, 9, 198, 44, 243, 66, 36, 224, 84, 15, 9,
+			198, 44, 20, 130, 60, 224, 84, 15, 9, 198, 44, 19, 132, 36, 64, 84, 15, 9, 198, 36, 229, 5, 72, 224, 84, 15, 9, 198, 16, 144,
+			75, 60, 224, 84, 15, 9, 198, 16, 83, 79, 45, 32, 84, 15, 9, 198, 8, 148, 213, 48, 96, 84, 15, 9, 198, 4, 68, 133, 77, 48,
+			84, 15, 8, 197, 80, 20, 148, 4, 224, 16, 8, 197, 65, 35, 208, 4, 224, 16, 8, 197, 64, 192, 84, 4, 224, 16, 8, 197, 49, 242,
+			193, 28, 80, 15, 0, 9, 198, 65, 148, 143, 52, 19, 137, 15, 9, 198, 44, 243, 80, 4, 115, 137, 15, 9, 198, 44, 18, 207, 24, 243,
+			137, 15, 4, 193, 128, 43, 0, 8, 197, 164, 179, 204, 60, 112, 15, 9, 198, 44, 242, 31, 72, 84, 128, 15, 9, 198, 4, 66, 31, 72,
+			84, 128, 15, 0, 10, 199, 77, 80, 148, 72, 18, 5, 72, 15, 10, 199, 72, 85, 129, 56, 50, 5, 72, 15, 10, 199, 72, 84, 18, 20,
+			210, 69, 72, 15, 10, 199, 64, 20, 212, 36, 50, 5, 72, 15, 10, 199, 44, 243, 134, 37, 50, 197, 72, 15, 10, 199, 44, 20, 18, 36,
+			243, 5, 72, 15, 10, 199, 36, 225, 11, 61, 2, 69, 72, 15, 10, 199, 20, 180, 212, 72, 18, 5, 72, 15, 10, 199, 16, 148, 212, 72,
+			18, 5, 72, 15, 10, 199, 16, 148, 211, 60, 50, 69, 72, 15, 10, 199, 16, 84, 133, 29, 83, 5, 72, 15, 10, 199, 16, 84, 18, 20,
+			50, 69, 72, 15, 10, 199, 12, 128, 77, 9, 34, 69, 72, 15, 10, 199, 4, 208, 76, 28, 19, 69, 72, 15, 10, 199, 4, 32, 146, 21,
+			98, 69, 72, 15, 11, 200, 76, 84, 150, 37, 68, 137, 12, 80, 15, 11, 200, 44, 244, 144, 84, 193, 78, 12, 80, 15, 11, 200, 44, 243,
+			132, 60, 193, 78, 12, 80, 15, 11, 200, 44, 243, 16, 61, 37, 1, 28, 80, 15, 0, 9, 198, 12, 245, 84, 85, 33, 64, 15, 9, 198,
+			29, 32, 86, 85, 33, 64, 15, 9, 198, 25, 34, 83, 85, 33, 64, 15, 9, 198, 88, 149, 18, 36, 225, 64, 15, 9, 198, 80, 19, 10,
+			21, 33, 64, 15, 9, 198, 77, 83, 77, 21, 33, 64, 15, 9, 198, 65, 83, 19, 21, 33, 64, 15, 9, 198, 64, 192, 78, 21, 33, 64,
+			15, 9, 198, 48, 147, 138, 21, 33, 64, 15, 13, 202, 57, 244, 212, 44, 243, 77, 4, 225, 5, 72, 15, 9, 198, 28, 20, 142, 21, 33,
+			64, 15, 9, 198, 25, 34, 83, 21, 33, 64, 15, 9, 198, 21, 64, 71, 21, 33, 64, 15, 9, 198, 17, 32, 71, 21, 33, 64, 15, 9,
+			198, 8, 20, 130, 21, 33, 64, 15, 9, 198, 24, 245, 82, 4, 113, 64, 15, 0, 8, 197, 80, 84, 142, 125, 32, 15, 9, 198, 56, 244,
+			212, 4, 193, 201, 15, 11, 200, 60, 101, 1, 48, 211, 204, 60, 112, 15, 11, 200, 48, 20, 153, 56, 115, 204, 60, 112, 15, 12, 201, 88,
+			149, 1, 52, 147, 137, 76, 84, 128, 15, 12, 201, 84, 225, 5, 73, 101, 82, 16, 84, 128, 15, 12, 201, 81, 34, 86, 36, 19, 9, 76,
+			84, 128, 15, 12, 201, 81, 32, 85, 52, 21, 9, 76, 84, 128, 15, 12, 201, 81, 32, 78, 77, 3, 210, 80, 84, 128, 15, 12, 201, 81,
+			32, 78, 76, 101, 78, 16, 84, 128, 15, 12, 201, 81, 32, 78, 76, 99, 210, 52, 84, 128, 15, 12, 201, 81, 32, 78, 76, 49, 78, 16,
+			84, 128, 15, 12, 201, 80, 84, 141, 60, 116, 129, 24, 84, 128, 15, 12, 201, 80, 80, 84, 72, 19, 9, 76, 84, 128, 15, 12, 201, 77,
+			147, 139, 72, 243, 137, 76, 84, 128, 15, 12, 201, 77, 68, 129, 80, 145, 137, 12, 84, 128, 15, 12, 201, 77, 66, 71, 52, 21, 9, 76,
+			84, 128, 15, 12, 201, 77, 65, 82, 20, 245, 25, 64, 84, 128, 15, 12, 201, 77, 1, 67, 36, 19, 9, 76, 84, 128, 15, 12, 201, 76,
+			176, 78, 16, 19, 9, 76, 84, 128, 15, 12, 201, 76, 147, 80, 48, 145, 137, 12, 84, 128, 15, 12, 201, 76, 82, 211, 84, 19, 9, 76,
+			84, 128, 15, 12, 201, 76, 49, 78, 60, 116, 129, 24, 84, 128, 15, 12, 201, 76, 19, 69, 45, 50, 83, 80, 84, 128, 15, 12, 201, 72,
+			83, 210, 28, 19, 137, 76, 84, 128, 15, 12, 201, 72, 82, 207, 53, 1, 78, 76, 84, 128, 15, 12, 201, 72, 82, 207, 52, 208, 78, 16,
+			84, 128, 15, 12, 201, 72, 17, 9, 44, 19, 9, 76, 84, 128, 15, 12, 201, 65, 35, 208, 4, 112, 78, 16, 84, 128, 15, 12, 201, 64,
+			244, 21, 48, 20, 137, 76, 84, 128, 15, 12, 201, 64, 20, 212, 21, 84, 137, 76, 84, 128, 15, 12, 201, 64, 20, 140, 4, 209, 78, 80,
+			84, 128, 15, 12, 201, 56, 243, 73, 56, 19, 9, 76, 84, 128, 15, 12, 201, 56, 85, 84, 72, 19, 9, 76, 84, 128, 15, 12, 201, 56,
+			21, 21, 72, 19, 9, 76, 84, 128, 15, 12, 201, 53, 84, 201, 44, 19, 9, 76, 84, 128, 15, 12, 201, 52, 18, 193, 16, 19, 73, 76,
+			84, 128, 15, 12, 201, 48, 144, 133, 72, 19, 9, 76, 84, 128, 15, 12, 201, 44, 244, 133, 60, 116, 129, 24, 84, 128, 15, 12, 201, 72,
+			82, 207, 57, 53, 18, 84, 84, 128, 15, 12, 201, 44, 243, 132, 37, 66, 79, 56, 84, 128, 15, 12, 201, 44, 195, 210, 60, 99, 210, 52,
+			84, 128, 15, 12, 201, 44, 192, 83, 76, 145, 137, 12, 84, 128, 15, 12, 201, 44, 21, 1, 48, 241, 201, 76, 84, 128, 15, 12, 201, 44,
+			20, 9, 80, 19, 9, 76, 84, 128, 15, 12, 201, 40, 245, 82, 56, 19, 9, 76, 84, 128, 15, 12, 201, 28, 83, 137, 57, 97, 83, 80,
+			84, 128, 15, 12, 201, 36, 229, 5, 73, 5, 78, 28, 84, 128, 15, 12, 201, 36, 229, 5, 72, 99, 204, 36, 84, 128, 15, 12, 201, 36,
+			226, 84, 36, 19, 9, 76, 84, 128, 15, 12, 201, 36, 225, 15, 45, 68, 137, 56, 84, 128, 15, 12, 201, 36, 225, 5, 45, 49, 82, 12,
+			84, 128, 15, 12, 201, 36, 212, 12, 20, 209, 78, 80, 84, 128, 15, 12, 201, 36, 211, 79, 8, 147, 9, 76, 84, 128, 15, 12, 201, 36,
+			65, 79, 48, 241, 201, 76, 84, 128, 15, 12, 201, 32, 245, 141, 21, 53, 5, 72, 84, 128, 15, 12, 201, 32, 243, 79, 48, 241, 201, 76,
+			84, 128, 15, 12, 201, 28, 192, 77, 61, 84, 137, 76, 84, 128, 15, 12, 201, 28, 83, 133, 72, 19, 9, 76, 84, 128, 15, 12, 201, 25,
+			32, 84, 21, 35, 137, 76, 84, 128, 15, 12, 201, 24, 195, 210, 4, 116, 129, 24, 84, 128, 15, 12, 201, 20, 180, 212, 72, 21, 129, 28,
+			84, 128, 15, 12, 201, 20, 180, 212, 72, 20, 15, 48, 84, 128, 15, 12, 201, 20, 180, 212, 20, 228, 201, 88, 84, 128, 15, 12, 201, 20,
+			180, 212, 20, 212, 15, 72, 84, 128, 15, 12, 201, 16, 21, 1, 52, 21, 9, 76, 84, 128, 15, 12, 201, 8, 84, 212, 36, 19, 9, 76,
+			84, 128, 15, 12, 201, 5, 85, 15, 56, 243, 73, 76, 84, 128, 15, 12, 201, 4, 195, 5, 28, 244, 137, 76, 84, 128, 15, 12, 201, 4,
+			100, 137, 44, 19, 137, 76, 84, 128, 15, 12, 201, 8, 244, 148, 4, 67, 208, 80, 84, 128, 15, 12, 201, 4, 67, 73, 56, 148, 212, 72,
+			84, 128, 15, 12, 201, 77, 64, 84, 37, 53, 9, 44, 84, 128, 15, 12, 201, 76, 179, 204, 5, 53, 9, 44, 84, 128, 15, 12, 201, 76,
+			178, 83, 52, 21, 9, 44, 84, 128, 15, 12, 201, 76, 19, 135, 88, 147, 137, 44, 84, 128, 15, 12, 201, 65, 32, 71, 52, 21, 9, 44,
+			84, 128, 15, 12, 201, 64, 20, 129, 49, 149, 9, 44, 84, 128, 15, 12, 201, 60, 36, 212, 21, 68, 137, 44, 84, 128, 15, 12, 201, 52,
+			85, 1, 25, 148, 201, 44, 84, 128, 15, 12, 201, 52, 21, 5, 52, 21, 9, 44, 84, 128, 15, 12, 201, 29, 32, 77, 52, 21, 9, 44,
+			84, 128, 15, 12, 201, 24, 193, 71, 52, 21, 9, 44, 84, 128, 15, 12, 201, 21, 128, 197, 57, 68, 137, 44, 84, 128, 15, 12, 201, 17,
+			148, 204, 20, 181, 9, 44, 84, 128, 15, 12, 201, 16, 21, 1, 52, 21, 9, 44, 84, 128, 15, 12, 201, 8, 192, 83, 24, 83, 73, 44,
+			84, 128, 15, 12, 201, 5, 34, 84, 52, 85, 9, 44, 84, 128, 15, 12, 201, 4, 227, 210, 20, 181, 9, 44, 84, 128, 15, 12, 201, 4,
+			194, 207, 32, 243, 9, 44, 84, 128, 15, 12, 201, 57, 144, 143, 72, 113, 78, 76, 84, 128, 15, 10, 199, 44, 244, 144, 84, 193, 78, 80,
+			15, 12, 201, 20, 180, 208, 21, 34, 77, 20, 229, 0, 15, 10, 199, 4, 36, 212, 36, 225, 78, 80, 15, 10, 199, 81, 32, 70, 36, 176,
+			78, 80, 15, 12, 201, 44, 243, 77, 84, 226, 75, 4, 229, 0, 15, 10, 199, 16, 147, 5, 81, 64, 78, 80, 15, 9, 198, 88, 84, 137,
+			80, 16, 128, 15, 0, 9, 198, 8, 245, 73, 48, 195, 206, 15, 9, 198, 48, 145, 82, 36, 225, 192, 15, 9, 198, 88, 83, 133, 16, 145,
+			192, 15, 7, 196, 36, 208, 71, 20, 15, 7, 196, 21, 64, 71, 20, 15, 9, 68, 36, 208, 71, 20, 21, 0, 47, 0, 11, 200, 45, 38,
+			80, 80, 241, 193, 52, 144, 15, 8, 67, 80, 19, 11, 21, 0, 47, 0, 9, 198, 56, 85, 82, 61, 49, 64, 15, 9, 198, 56, 82, 210,
+			61, 49, 64, 15, 9, 198, 33, 148, 14, 61, 49, 64, 15, 12, 201, 4, 231, 211, 80, 84, 201, 60, 195, 199, 15, 9, 198, 24, 147, 133,
+			77, 49, 64, 15, 9, 198, 4, 68, 133, 77, 49, 64, 15, 9, 198, 44, 19, 15, 72, 145, 64, 15, 9, 198, 164, 181, 77, 20, 226, 75,
+			15, 9, 198, 44, 20, 203, 4, 65, 64, 15, 0, 21, 73, 64, 20, 211, 21, 0, 82, 80, 245, 84, 48, 117, 35, 71, 121, 47, 6, 40,
+			0, 15, 9, 198, 28, 83, 199, 72, 17, 128, 15, 12, 201, 81, 32, 78, 77, 0, 82, 20, 229, 0, 15, 12, 201, 81, 32, 78, 77, 0,
+			82, 20, 228, 192, 15, 12, 201, 72, 84, 18, 125, 49, 78, 80, 19, 148, 15, 0, 10, 199, 32, 148, 212, 60, 195, 199, 36, 15, 9, 198,
+			36, 225, 15, 48, 241, 192, 15, 8, 197, 44, 197, 83, 36, 192, 15, 12, 201, 32, 84, 141, 20, 225, 85, 80, 146, 192, 15, 12, 201, 13,
+			149, 15, 28, 83, 133, 80, 146, 192, 15, 0, 10, 199, 65, 83, 19, 5, 66, 79, 56, 15, 10, 199, 61, 130, 68, 5, 66, 79, 56, 15,
+			10, 199, 61, 101, 76, 5, 66, 79, 56, 15, 10, 199, 37, 51, 204, 5, 66, 79, 56, 15, 10, 199, 36, 229, 5, 57, 66, 79, 56, 15,
+			10, 199, 36, 225, 140, 5, 66, 79, 56, 15, 8, 197, 32, 245, 133, 72, 144, 15, 9, 198, 104, 83, 15, 80, 148, 203, 15, 9, 198, 77,
+			147, 143, 16, 148, 203, 15, 9, 198, 64, 192, 83, 80, 148, 203, 15, 9, 198, 52, 83, 15, 16, 148, 203, 15, 9, 198, 36, 66, 79, 80,
+			148, 203, 15, 9, 198, 20, 192, 83, 80, 148, 203, 15, 0, 8, 197, 12, 130, 76, 20, 224, 15, 8, 197, 65, 35, 198, 4, 224, 16, 0,
+			9, 198, 21, 81, 143, 52, 19, 137, 15, 9, 198, 12, 84, 133, 52, 243, 137, 15, 9, 68, 76, 208, 76, 48, 21, 0, 47, 11, 70, 25,
+			34, 69, 56, 67, 25, 21, 0, 47, 0, 8, 197, 64, 85, 18, 60, 192, 15, 11, 200, 72, 129, 85, 52, 21, 15, 36, 64, 15, 0, 10,
+			199, 61, 33, 9, 56, 21, 15, 72, 15, 10, 199, 52, 18, 213, 48, 21, 15, 72, 15, 10, 199, 36, 227, 143, 88, 21, 15, 72, 15, 10,
+			199, 36, 212, 5, 72, 21, 15, 72, 15, 10, 199, 20, 213, 76, 28, 21, 15, 72, 15, 10, 199, 4, 195, 9, 28, 21, 15, 72, 15, 10,
+			199, 65, 241, 5, 72, 20, 212, 36, 15, 11, 200, 56, 85, 82, 5, 53, 5, 56, 144, 15, 0, 10, 199, 36, 225, 22, 20, 225, 9, 28,
+			15, 10, 199, 8, 19, 19, 81, 148, 137, 28, 15, 10, 199, 4, 68, 203, 36, 195, 9, 28, 15, 9, 198, 76, 18, 203, 5, 34, 68, 15,
+			9, 198, 28, 198, 75, 61, 50, 68, 15, 8, 4, 95, 111, 114, 100, 14, 0, 0, 10, 199, 61, 97, 82, 77, 241, 9, 28, 15, 10, 199,
+			48, 85, 6, 125, 33, 9, 28, 15, 9, 198, 44, 21, 1, 80, 243, 137, 15, 12, 201, 44, 243, 147, 80, 149, 21, 20, 229, 0, 15, 14,
+			203, 72, 82, 207, 57, 96, 76, 21, 48, 197, 57, 48, 15, 0, 9, 198, 37, 32, 75, 37, 50, 192, 15, 9, 198, 36, 33, 82, 37, 50,
+			192, 15, 9, 198, 20, 198, 83, 37, 50, 192, 15, 9, 198, 76, 178, 90, 60, 145, 0, 15, 9, 198, 52, 241, 5, 72, 21, 0, 15, 15,
+			4, 95, 109, 99, 110, 65, 6, 35, 49, 34, 4, 127, 50, 0, 0, 10, 199, 28, 83, 133, 72, 21, 15, 72, 15, 7, 196, 88, 243, 69,
+			72, 15, 11, 200, 80, 84, 212, 36, 211, 206, 36, 80, 15, 8, 67, 18, 37, 0, 72, 36, 0, 0, 10, 199, 88, 83, 2, 101, 33, 9,
+			28, 15, 10, 199, 48, 85, 19, 36, 225, 9, 28, 15, 9, 198, 4, 98, 31, 56, 114, 71, 15, 0, 9, 198, 52, 21, 1, 16, 244, 128,
+			15, 9, 198, 45, 84, 129, 80, 244, 128, 15, 15, 204, 20, 180, 208, 21, 34, 77, 20, 229, 1, 80, 244, 128, 15, 9, 198, 64, 21, 15,
+			48, 241, 201, 15, 9, 198, 60, 226, 207, 48, 241, 201, 15, 9, 198, 32, 243, 79, 48, 241, 201, 15, 9, 198, 13, 149, 15, 48, 241, 201,
+			15, 17, 70, 8, 83, 9, 104, 84, 128, 71, 36, 55, 37, 12, 89, 108, 0, 66, 9, 198, 81, 37, 78, 44, 84, 128, 15, 9, 198, 81,
+			32, 83, 76, 84, 128, 15, 9, 198, 81, 32, 75, 80, 84, 128, 15, 9, 198, 77, 84, 16, 48, 84, 128, 15, 9, 198, 72, 83, 133, 28,
+			84, 128, 15, 9, 198, 72, 81, 21, 12, 84, 128, 15, 9, 198, 64, 149, 143, 80, 84, 128, 15, 9, 198, 60, 97, 133, 72, 84, 128, 15,
+			9, 198, 53, 83, 11, 80, 84, 128, 15, 9, 198, 52, 241, 5, 72, 84, 128, 15, 9, 198, 52, 148, 197, 72, 84, 128, 15, 9, 198, 44,
+			20, 212, 72, 84, 128, 15, 9, 198, 36, 227, 143, 88, 84, 128, 15, 9, 198, 36, 226, 137, 12, 84, 128, 15, 9, 198, 36, 226, 9, 8,
+			84, 128, 15, 9, 198, 36, 225, 140, 84, 84, 128, 15, 9, 198, 36, 225, 137, 12, 84, 128, 15, 9, 198, 36, 225, 9, 12, 84, 128, 15,
+			9, 198, 36, 115, 143, 72, 84, 128, 15, 9, 198, 24, 192, 77, 8, 84, 128, 15, 9, 198, 24, 147, 20, 72, 84, 128, 15, 9, 198, 21,
+			50, 193, 64, 84, 128, 15, 9, 198, 16, 148, 137, 28, 84, 128, 15, 9, 198, 16, 85, 15, 56, 84, 128, 15, 9, 198, 16, 84, 137, 88,
+			84, 128, 15, 9, 198, 16, 84, 15, 56, 84, 128, 15, 9, 198, 16, 83, 9, 72, 84, 128, 15, 9, 198, 16, 81, 137, 56, 84, 128, 15,
+			9, 198, 16, 81, 21, 12, 84, 128, 15, 9, 198, 16, 81, 9, 44, 84, 128, 15, 9, 198, 16, 81, 9, 12, 84, 128, 15, 9, 198, 12,
+			130, 70, 72, 84, 128, 15, 9, 198, 8, 147, 208, 80, 84, 128, 15, 9, 198, 4, 178, 207, 48, 84, 128, 15, 9, 198, 4, 97, 137, 12,
+			84, 128, 15, 9, 198, 4, 69, 143, 44, 84, 128, 15, 11, 200, 65, 35, 212, 20, 147, 146, 36, 112, 15, 10, 199, 28, 84, 202, 124, 101,
+			9, 28, 15, 11, 200, 8, 84, 141, 84, 64, 82, 36, 112, 15, 9, 198, 32, 243, 79, 57, 147, 73, 15, 9, 198, 48, 81, 193, 80, 20,
+			128, 15, 9, 198, 77, 65, 76, 48, 20, 128, 15, 9, 198, 28, 195, 211, 76, 20, 128, 15, 9, 198, 8, 145, 137, 48, 20, 128, 15, 11,
+			70, 76, 48, 78, 56, 84, 128, 21, 0, 47, 0, 12, 201, 44, 243, 77, 84, 226, 75, 5, 67, 210, 15, 10, 199, 44, 243, 139, 84, 34,
+			78, 20, 15, 9, 198, 64, 85, 9, 80, 147, 206, 15, 9, 198, 5, 81, 9, 80, 147, 206, 15, 9, 198, 4, 65, 9, 80, 147, 206, 15,
+			13, 202, 44, 243, 147, 21, 37, 129, 80, 244, 137, 20, 15, 8, 197, 53, 84, 203, 5, 64, 15, 0, 10, 199, 60, 33, 21, 45, 66, 79,
+			56, 15, 10, 199, 36, 225, 21, 45, 66, 79, 56, 15, 7, 196, 53, 85, 5, 72, 15, 14, 203, 36, 228, 212, 73, 83, 69, 57, 64, 82,
+			36, 80, 15, 10, 199, 29, 35, 211, 29, 32, 73, 56, 15, 10, 199, 85, 37, 71, 84, 22, 65, 56, 15, 10, 199, 12, 19, 66, 60, 66,
+			129, 56, 15, 14, 70, 76, 129, 76, 4, 114, 0, 91, 37, 12, 55, 118, 0, 0, 8, 197, 44, 243, 132, 61, 32, 15, 11, 200, 72, 82,
+			210, 20, 21, 9, 60, 224, 15, 11, 200, 72, 81, 210, 21, 52, 201, 60, 224, 15, 11, 200, 52, 245, 9, 88, 21, 9, 60, 224, 15, 11,
+			200, 44, 244, 21, 48, 21, 9, 60, 224, 15, 11, 200, 36, 226, 84, 36, 21, 9, 60, 224, 15, 11, 200, 16, 83, 143, 80, 21, 9, 60,
+			224, 15, 11, 200, 16, 81, 137, 56, 149, 9, 60, 224, 15, 11, 200, 5, 4, 15, 76, 149, 9, 60, 224, 15, 11, 200, 4, 197, 5, 72,
+			21, 9, 60, 224, 15, 8, 197, 64, 192, 67, 21, 32, 15, 8, 197, 48, 19, 131, 21, 32, 15, 8, 197, 25, 83, 135, 21, 32, 15, 8,
+			197, 24, 244, 131, 21, 32, 15, 9, 198, 44, 20, 129, 52, 35, 204, 15, 11, 200, 81, 80, 133, 72, 181, 76, 36, 224, 15, 9, 198, 16,
+			243, 73, 12, 147, 0, 15, 11, 200, 25, 32, 78, 12, 148, 203, 4, 224, 15, 8, 197, 5, 67, 205, 5, 32, 15, 9, 198, 48, 21, 5,
+			72, 19, 0, 15, 0, 7, 196, 64, 148, 143, 48, 15, 0, 9, 198, 72, 84, 207, 49, 85, 0, 15, 9, 198, 33, 145, 18, 60, 99, 206,
+			15, 9, 198, 29, 32, 70, 60, 99, 206, 15, 8, 197, 44, 21, 83, 4, 192, 15, 0, 12, 67, 77, 65, 71, 89, 72, 35, 57, 0, 49,
+			45, 23, 72, 88, 194, 69, 76, 83, 9, 56, 80, 83, 55, 37, 89, 13, 55, 6, 37, 12, 50, 13, 0, 15, 11, 200, 9, 34, 71, 4,
+			229, 9, 56, 80, 15, 10, 199, 64, 243, 12, 85, 66, 79, 56, 15, 10, 199, 12, 83, 148, 85, 34, 79, 56, 15, 10, 199, 4, 97, 133,
+			45, 66, 79, 56, 15, 11, 200, 76, 177, 76, 21, 69, 5, 72, 80, 15, 11, 200, 72, 245, 76, 21, 69, 5, 72, 80, 15, 11, 200, 65,
+			35, 202, 20, 181, 5, 72, 80, 15, 11, 200, 64, 21, 18, 84, 194, 133, 72, 80, 15, 11, 200, 8, 147, 12, 21, 69, 5, 72, 80, 15,
+			9, 198, 60, 198, 77, 64, 148, 203, 15, 9, 198, 52, 85, 15, 16, 148, 203, 15, 9, 198, 44, 21, 15, 16, 148, 203, 15, 9, 198, 20,
+			180, 207, 80, 148, 203, 15, 9, 198, 9, 82, 207, 48, 148, 203, 15, 10, 199, 56, 20, 15, 48, 149, 1, 56, 15, 10, 199, 44, 243, 12,
+			20, 114, 65, 56, 15, 10, 199, 76, 18, 210, 37, 53, 1, 56, 16, 0, 9, 198, 52, 243, 147, 81, 42, 83, 15, 9, 198, 52, 147, 149,
+			80, 154, 83, 15, 8, 197, 72, 81, 201, 60, 224, 15, 8, 197, 80, 84, 146, 36, 224, 15, 8, 197, 8, 83, 154, 36, 224, 15, 10, 199,
+			4, 193, 65, 80, 244, 137, 44, 15, 0, 9, 198, 8, 83, 133, 24, 144, 197, 67, 11, 200, 88, 148, 201, 80, 84, 137, 56, 112, 15, 11,
+			200, 88, 81, 197, 80, 84, 137, 56, 112, 15, 11, 200, 77, 64, 70, 24, 84, 137, 56, 112, 15, 11, 200, 72, 85, 137, 16, 84, 137, 56,
+			112, 15, 11, 200, 72, 83, 1, 80, 84, 137, 56, 112, 15, 11, 200, 72, 81, 213, 48, 84, 137, 56, 112, 15, 11, 200, 56, 20, 193, 48,
+			84, 137, 56, 112, 15, 11, 200, 44, 194, 67, 32, 84, 137, 56, 112, 15, 11, 200, 21, 53, 9, 52, 84, 137, 56, 112, 15, 11, 200, 21,
+			50, 193, 48, 84, 137, 56, 112, 15, 9, 198, 72, 83, 148, 72, 144, 197, 15, 9, 198, 52, 243, 148, 72, 144, 197, 15, 9, 198, 8, 83,
+			133, 24, 144, 197, 15, 0, 5, 194, 8, 128, 13, 9, 198, 61, 1, 82, 37, 53, 0, 15, 9, 198, 37, 32, 78, 37, 53, 0, 15, 10,
+			199, 72, 245, 9, 77, 49, 82, 36, 15, 10, 199, 20, 115, 195, 20, 229, 18, 36, 15, 10, 199, 4, 193, 143, 57, 49, 82, 36, 15, 8,
+			197, 64, 148, 212, 60, 192, 15, 12, 201, 64, 19, 31, 60, 194, 84, 36, 181, 77, 15, 12, 201, 77, 68, 133, 65, 67, 205, 100, 50, 78,
+			15, 8, 197, 72, 149, 21, 4, 192, 15, 0, 10, 199, 88, 242, 193, 48, 148, 197, 72, 15, 10, 199, 81, 32, 75, 5, 52, 197, 72, 15,
+			10, 199, 77, 65, 78, 12, 147, 5, 72, 15, 10, 199, 76, 213, 75, 44, 84, 197, 72, 15, 10, 199, 65, 35, 203, 48, 19, 69, 72, 15,
+			10, 199, 64, 20, 132, 60, 227, 133, 72, 15, 10, 199, 45, 98, 78, 44, 83, 5, 72, 15, 10, 199, 44, 243, 139, 85, 36, 133, 72, 15,
+			10, 199, 44, 243, 134, 61, 35, 69, 72, 15, 10, 199, 44, 243, 134, 37, 35, 69, 72, 15, 10, 199, 44, 243, 132, 20, 228, 197, 72, 15,
+			10, 199, 44, 21, 1, 49, 148, 197, 72, 15, 10, 199, 44, 20, 148, 60, 227, 133, 72, 15, 10, 199, 44, 20, 9, 81, 83, 5, 72, 15,
+			10, 199, 44, 19, 148, 60, 227, 133, 72, 15, 10, 199, 16, 148, 208, 20, 228, 197, 72, 15, 10, 199, 16, 82, 204, 5, 52, 197, 72, 15,
+			10, 199, 16, 80, 200, 36, 100, 133, 72, 15, 10, 199, 5, 52, 201, 52, 147, 5, 72, 15, 10, 199, 4, 178, 213, 53, 83, 5, 72, 15,
+			10, 199, 52, 83, 15, 16, 146, 197, 72, 15, 10, 199, 88, 82, 140, 20, 228, 197, 72, 15, 10, 199, 88, 20, 132, 20, 228, 197, 72, 15,
+			10, 199, 16, 148, 208, 20, 228, 197, 72, 15, 0, 19, 71, 72, 82, 137, 12, 84, 133, 76, 34, 36, 57, 37, 89, 6, 36, 108, 89, 0,
+			8, 197, 88, 147, 204, 36, 224, 15, 8, 197, 8, 133, 84, 4, 224, 15, 9, 198, 77, 80, 147, 81, 32, 84, 15, 9, 198, 77, 80, 140,
+			36, 208, 84, 15, 9, 198, 76, 83, 137, 61, 32, 84, 15, 9, 198, 72, 85, 19, 77, 64, 84, 15, 9, 198, 72, 84, 213, 49, 64, 84,
+			15, 9, 198, 72, 84, 197, 73, 96, 84, 15, 9, 198, 64, 20, 212, 61, 32, 84, 15, 9, 198, 16, 148, 208, 5, 32, 84, 15, 8, 197,
+			8, 133, 84, 4, 224, 16, 0, 12, 201, 5, 37, 9, 48, 193, 82, 37, 53, 0, 15, 0, 24, 73, 44, 243, 134, 37, 35, 65, 56, 65,
+			82, 49, 109, 50, 83, 111, 34, 65, 6, 118, 50, 72, 109, 0, 12, 201, 45, 38, 68, 77, 33, 86, 36, 65, 82, 15, 6, 195, 164, 65,
+			77, 15, 9, 198, 20, 193, 71, 4, 229, 0, 15, 17, 70, 16, 19, 147, 4, 229, 0, 72, 35, 50, 89, 6, 121, 50, 0, 15, 12, 68,
+			76, 243, 153, 4, 89, 109, 50, 57, 118, 0, 0, 10, 199, 72, 243, 65, 56, 148, 197, 72, 15, 10, 199, 72, 81, 201, 77, 68, 133, 72,
+			15, 10, 199, 72, 81, 18, 21, 52, 197, 72, 15, 10, 199, 64, 20, 129, 49, 148, 197, 72, 15, 10, 199, 61, 34, 197, 77, 68, 133, 72,
+			15, 10, 199, 56, 243, 65, 16, 148, 197, 72, 15, 10, 199, 52, 147, 137, 77, 68, 133, 72, 15, 10, 199, 52, 19, 149, 17, 80, 197, 72,
+			15, 10, 199, 44, 243, 80, 20, 228, 197, 72, 15, 10, 199, 36, 225, 137, 49, 68, 133, 72, 15, 10, 199, 36, 225, 11, 5, 52, 197, 72,
+			15, 10, 199, 36, 195, 21, 77, 68, 133, 72, 15, 10, 199, 4, 229, 9, 12, 148, 5, 72, 15, 10, 199, 4, 194, 193, 48, 148, 197, 72,
+			15, 8, 197, 125, 64, 78, 60, 192, 15, 11, 200, 64, 21, 15, 28, 83, 133, 76, 80, 15, 11, 200, 25, 147, 15, 28, 83, 133, 76, 80,
+			15, 10, 199, 77, 65, 71, 20, 228, 197, 72, 15, 10, 199, 45, 33, 84, 20, 228, 197, 72, 15, 10, 199, 40, 19, 137, 81, 50, 1, 72,
+			15, 0, 17, 70, 52, 150, 20, 85, 33, 64, 65, 36, 81, 89, 47, 57, 108, 0, 15, 9, 198, 48, 82, 212, 85, 33, 64, 15, 9, 198,
+			25, 34, 84, 85, 33, 64, 15, 9, 198, 80, 18, 212, 21, 33, 64, 15, 9, 198, 77, 69, 68, 21, 33, 64, 15, 9, 198, 77, 3, 204,
+			21, 33, 64, 15, 9, 198, 76, 243, 132, 21, 33, 64, 15, 9, 198, 64, 20, 139, 21, 33, 64, 15, 9, 198, 45, 99, 212, 21, 33, 64,
+			15, 9, 198, 44, 244, 9, 21, 33, 64, 15, 9, 198, 29, 32, 68, 21, 33, 64, 15, 9, 198, 28, 20, 132, 21, 33, 64, 15, 9, 198,
+			24, 146, 211, 21, 33, 64, 15, 18, 70, 9, 37, 89, 21, 33, 64, 71, 34, 129, 57, 6, 115, 12, 34, 0, 15, 9, 198, 8, 20, 132,
+			21, 33, 64, 15, 9, 198, 16, 84, 15, 56, 83, 148, 15, 12, 201, 36, 228, 212, 73, 82, 212, 61, 32, 84, 15, 0, 9, 198, 21, 67,
+			143, 48, 241, 201, 15, 11, 200, 89, 83, 11, 4, 227, 204, 60, 112, 15, 11, 200, 28, 84, 143, 57, 67, 204, 60, 112, 15, 12, 201, 60,
+			36, 212, 37, 0, 84, 36, 243, 128, 15, 10, 199, 72, 82, 214, 37, 33, 78, 80, 15, 10, 199, 44, 243, 80, 21, 65, 78, 80, 15, 10,
+			199, 88, 147, 132, 36, 176, 78, 80, 15, 10, 199, 29, 32, 84, 84, 192, 78, 80, 15, 10, 199, 16, 83, 196, 61, 32, 78, 80, 15, 20,
+			71, 8, 243, 150, 37, 96, 78, 80, 71, 108, 68, 84, 37, 84, 6, 121, 68, 0, 15, 0, 23, 73, 48, 81, 197, 56, 65, 82, 56, 84,
+			192, 55, 36, 81, 6, 115, 50, 72, 108, 50, 14, 89, 0, 9, 198, 64, 21, 15, 48, 241, 192, 15, 9, 198, 60, 226, 207, 48, 241, 192,
+			15, 9, 198, 4, 194, 207, 48, 241, 192, 15, 9, 198, 72, 83, 9, 28, 147, 206, 15, 9, 198, 16, 243, 129, 80, 147, 206, 15, 9, 198,
+			5, 97, 82, 76, 147, 206, 15, 12, 201, 9, 35, 206, 44, 244, 203, 61, 1, 82, 15, 8, 66, 21, 32, 115, 34, 0, 72, 0, 19, 70,
+			26, 147, 10, 21, 67, 206, 83, 132, 55, 57, 36, 47, 6, 108, 50, 0, 15, 10, 199, 88, 20, 137, 5, 66, 79, 56, 15, 10, 199, 72,
+			82, 133, 45, 66, 79, 56, 15, 10, 199, 65, 35, 205, 61, 66, 79, 56, 15, 10, 199, 44, 243, 77, 84, 226, 79, 56, 15, 10, 199, 36,
+			229, 133, 57, 66, 79, 56, 15, 10, 199, 16, 145, 197, 77, 66, 79, 56, 15, 10, 199, 16, 85, 137, 5, 66, 79, 56, 15, 10, 199, 5,
+			52, 197, 73, 66, 79, 56, 15, 10, 199, 4, 226, 77, 5, 66, 79, 56, 15, 10, 199, 4, 209, 133, 80, 19, 73, 56, 15, 0, 9, 198,
+			104, 243, 206, 61, 49, 64, 15, 9, 198, 56, 20, 139, 61, 49, 64, 15, 9, 198, 48, 18, 212, 61, 49, 64, 15, 9, 198, 28, 197, 75,
+			61, 49, 64, 15, 9, 198, 12, 148, 146, 61, 49, 64, 15, 11, 200, 44, 244, 146, 85, 5, 9, 60, 224, 15, 11, 200, 16, 148, 208, 21,
+			36, 201, 60, 224, 15, 9, 198, 72, 147, 69, 77, 49, 64, 15, 10, 199, 8, 19, 12, 37, 53, 9, 44, 15, 9, 198, 36, 225, 5, 12,
+			83, 148, 15, 6, 195, 61, 96, 76, 15, 6, 195, 61, 32, 76, 15, 9, 198, 20, 179, 1, 80, 19, 148, 15, 0, 9, 198, 80, 244, 15,
+			48, 241, 201, 15, 9, 198, 76, 86, 15, 48, 241, 201, 15, 9, 198, 9, 38, 79, 48, 241, 201, 15, 11, 200, 80, 17, 19, 40, 146, 201,
+			76, 176, 15, 11, 200, 40, 21, 129, 56, 84, 201, 76, 176, 15, 11, 200, 5, 3, 203, 73, 145, 137, 76, 176, 15, 11, 200, 4, 195, 5,
+			28, 244, 137, 76, 176, 15, 11, 200, 36, 225, 143, 72, 208, 84, 36, 176, 15, 9, 198, 8, 147, 199, 72, 17, 128, 15, 0, 9, 198, 72,
+			83, 5, 28, 147, 206, 15, 9, 198, 56, 245, 129, 80, 147, 206, 15, 9, 198, 53, 85, 1, 80, 147, 206, 15, 10, 199, 52, 19, 5, 72,
+			147, 132, 20, 15, 0, 10, 199, 80, 84, 212, 5, 66, 79, 56, 15, 10, 199, 77, 1, 68, 37, 66, 79, 56, 15, 10, 199, 44, 240, 76,
+			37, 66, 79, 56, 15, 10, 199, 4, 68, 133, 56, 19, 9, 56, 15, 0, 10, 199, 21, 128, 197, 57, 68, 137, 44, 15, 10, 199, 4, 225,
+			204, 37, 53, 9, 44, 15, 0, 0, 17, 66, 16, 80, 72, 6, 37, 15, 72, 36, 34, 0, 81, 100, 101, 114, 32, 17, 66, 16, 80, 72,
+			6, 37, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 18, 66, 16, 80, 72, 37, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32,
+			5, 194, 16, 80, 72, 0, 10, 199, 65, 35, 198, 21, 52, 207, 72, 15, 10, 199, 65, 35, 195, 21, 52, 207, 72, 15, 10, 199, 72, 81,
+			213, 48, 21, 15, 72, 15, 10, 199, 72, 80, 201, 80, 21, 15, 72, 15, 10, 199, 36, 225, 9, 44, 21, 15, 72, 15, 10, 199, 21, 50,
+			193, 48, 21, 15, 72, 15, 0, 9, 198, 125, 32, 169, 16, 145, 192, 15, 10, 199, 76, 19, 86, 37, 69, 9, 28, 15, 10, 199, 76, 17,
+			212, 52, 241, 9, 28, 15, 9, 198, 61, 3, 158, 20, 194, 71, 15, 10, 199, 24, 244, 147, 100, 227, 9, 28, 15, 10, 199, 17, 144, 147,
+			36, 225, 9, 28, 15, 0, 22, 68, 32, 83, 19, 80, 107, 6, 115, 55, 89, 47, 15, 107, 117, 0, 81, 104, 97, 118, 101, 32, 7, 196,
+			81, 34, 83, 80, 15, 10, 199, 81, 35, 214, 125, 33, 9, 28, 15, 10, 199, 4, 228, 212, 124, 225, 9, 28, 15, 12, 201, 76, 145, 206,
+			36, 98, 75, 4, 229, 0, 15, 0, 8, 197, 21, 33, 77, 37, 64, 15, 9, 198, 4, 84, 143, 48, 149, 0, 15, 9, 198, 16, 21, 1,
+			52, 21, 0, 15, 0, 18, 67, 16, 85, 0, 72, 6, 36, 15, 72, 36, 34, 0, 81, 100, 101, 114, 32, 18, 67, 16, 85, 0, 72, 6,
+			36, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 25, 67, 16, 85, 0, 72, 36, 15, 49, 84, 121, 6, 47, 36, 34, 0, 81, 107, 118,
+			97, 114, 116, 101, 114, 32, 10, 199, 80, 16, 149, 48, 21, 15, 72, 15, 10, 199, 76, 147, 85, 48, 21, 15, 72, 15, 10, 199, 72, 81,
+			140, 20, 181, 15, 72, 15, 10, 199, 65, 35, 212, 20, 181, 15, 72, 15, 13, 202, 53, 83, 20, 37, 3, 9, 44, 21, 15, 72, 15, 10,
+			199, 36, 228, 208, 20, 181, 15, 72, 15, 10, 199, 36, 226, 9, 8, 149, 15, 72, 15, 10, 199, 36, 226, 1, 48, 21, 15, 72, 15, 12,
+			201, 88, 145, 5, 73, 103, 210, 16, 145, 192, 15, 12, 201, 77, 68, 129, 25, 103, 210, 16, 145, 192, 15, 12, 201, 48, 19, 132, 76, 176,
+			66, 20, 194, 71, 15, 12, 201, 36, 225, 19, 45, 34, 86, 20, 194, 71, 15, 11, 200, 36, 229, 5, 72, 209, 68, 36, 80, 15, 11, 200,
+			36, 229, 5, 72, 197, 68, 36, 80, 15, 9, 67, 16, 85, 0, 72, 36, 0, 72, 0, 8, 197, 76, 82, 212, 61, 32, 15, 8, 197, 88,
+			20, 137, 21, 32, 15, 8, 197, 4, 226, 77, 21, 32, 15, 8, 197, 4, 195, 9, 21, 32, 15, 9, 198, 52, 19, 132, 72, 147, 0, 15,
+			8, 197, 44, 244, 147, 5, 32, 15, 0, 8, 197, 49, 145, 8, 165, 32, 15, 8, 197, 4, 208, 84, 165, 32, 15, 9, 198, 125, 37, 159,
+			72, 66, 71, 15, 11, 200, 77, 145, 22, 21, 53, 12, 36, 112, 15, 11, 200, 76, 19, 132, 77, 147, 140, 36, 112, 15, 11, 200, 61, 4,
+			21, 77, 65, 76, 36, 112, 15, 11, 200, 28, 83, 147, 81, 34, 68, 36, 112, 15, 11, 200, 24, 244, 129, 29, 65, 76, 36, 112, 15, 10,
+			199, 20, 225, 18, 124, 117, 9, 28, 15, 11, 200, 17, 83, 68, 72, 148, 212, 36, 112, 15, 11, 200, 5, 4, 5, 80, 149, 12, 36, 112,
+			15, 0, 17, 66, 17, 80, 72, 40, 15, 107, 118, 11, 0, 81, 104, 97, 118, 101, 32, 8, 197, 5, 162, 77, 85, 64, 15, 12, 201, 16,
+			83, 79, 57, 53, 18, 5, 67, 210, 15, 10, 199, 64, 144, 195, 60, 194, 78, 20, 15, 9, 198, 4, 67, 208, 80, 147, 206, 15, 8, 197,
+			77, 64, 75, 37, 64, 15, 9, 198, 76, 19, 65, 72, 149, 0, 15, 8, 197, 64, 20, 211, 5, 64, 15, 9, 198, 32, 16, 137, 80, 21,
+			0, 15, 8, 197, 25, 33, 71, 5, 64, 15, 8, 66, 17, 80, 72, 40, 0, 72, 0, 10, 199, 76, 83, 147, 5, 66, 79, 56, 15, 10,
+			199, 44, 20, 211, 5, 66, 79, 56, 15, 14, 203, 88, 81, 197, 80, 20, 137, 4, 226, 83, 52, 80, 15, 14, 203, 77, 68, 149, 45, 69,
+			82, 4, 194, 83, 52, 80, 15, 14, 203, 65, 35, 212, 21, 53, 1, 57, 66, 83, 52, 80, 15, 14, 203, 44, 244, 205, 61, 3, 204, 37,
+			66, 83, 52, 80, 15, 14, 203, 44, 244, 144, 61, 32, 84, 37, 98, 83, 52, 80, 15, 14, 203, 37, 36, 129, 80, 147, 206, 4, 194, 83,
+			52, 80, 15, 14, 203, 36, 225, 21, 77, 68, 137, 4, 194, 83, 52, 80, 15, 6, 195, 32, 19, 64, 72, 0, 8, 197, 4, 224, 70, 61,
+			32, 15, 8, 197, 72, 82, 212, 61, 32, 15, 8, 197, 24, 18, 212, 61, 32, 15, 17, 70, 8, 80, 200, 4, 209, 76, 71, 114, 91, 118,
+			65, 6, 114, 60, 0, 11, 200, 88, 148, 201, 80, 21, 9, 60, 224, 15, 11, 200, 88, 81, 197, 80, 21, 9, 60, 224, 15, 11, 200, 77,
+			64, 71, 56, 21, 9, 60, 224, 15, 11, 200, 72, 80, 201, 80, 21, 9, 60, 224, 15, 11, 200, 61, 33, 9, 56, 21, 9, 60, 224, 15,
+			11, 200, 52, 241, 21, 48, 21, 9, 60, 224, 15, 11, 200, 36, 243, 137, 76, 21, 9, 60, 224, 15, 11, 200, 21, 50, 193, 48, 21, 9,
+			60, 224, 15, 11, 200, 16, 148, 211, 20, 181, 9, 60, 224, 15, 11, 200, 16, 84, 21, 80, 21, 9, 60, 224, 15, 11, 200, 16, 84, 9,
+			48, 21, 9, 60, 224, 15, 11, 200, 4, 212, 21, 80, 21, 9, 60, 224, 15, 8, 197, 88, 84, 147, 21, 32, 15, 8, 197, 80, 18, 211,
+			21, 32, 15, 8, 197, 48, 18, 211, 21, 32, 15, 8, 197, 24, 20, 147, 21, 32, 15, 12, 201, 88, 83, 1, 57, 53, 31, 56, 66, 71,
+			15, 15, 204, 20, 180, 208, 21, 34, 77, 20, 229, 1, 72, 145, 64, 15, 11, 200, 4, 229, 9, 24, 80, 146, 36, 224, 15, 15, 204, 20,
+			180, 208, 72, 84, 211, 36, 243, 137, 76, 209, 64, 15, 9, 198, 65, 241, 15, 24, 147, 0, 15, 9, 198, 32, 243, 79, 24, 147, 0, 15,
+			11, 200, 32, 84, 131, 20, 115, 214, 36, 224, 15, 8, 197, 52, 17, 217, 5, 32, 15, 0, 9, 198, 16, 21, 1, 48, 241, 201, 15, 15,
+			204, 77, 84, 18, 4, 224, 84, 85, 32, 76, 37, 51, 69, 15, 0, 8, 197, 25, 84, 137, 165, 48, 15, 9, 198, 4, 36, 207, 49, 85,
+			0, 15, 9, 198, 24, 195, 210, 37, 53, 0, 15, 9, 198, 64, 83, 148, 4, 115, 206, 15, 9, 198, 21, 37, 80, 80, 147, 206, 15, 9,
+			198, 4, 208, 137, 80, 147, 206, 15, 9, 198, 4, 192, 129, 56, 145, 78, 15, 0, 10, 199, 76, 149, 21, 5, 66, 79, 56, 15, 10, 199,
+			72, 81, 1, 45, 66, 79, 56, 15, 10, 199, 72, 17, 9, 5, 66, 79, 56, 15, 10, 199, 36, 226, 133, 45, 66, 79, 56, 15, 10, 199,
+			36, 225, 133, 45, 66, 79, 56, 15, 10, 199, 64, 197, 86, 37, 84, 201, 56, 15, 12, 201, 44, 21, 1, 77, 68, 143, 24, 19, 0, 15,
+			0, 9, 198, 45, 38, 83, 60, 194, 84, 15, 0, 12, 201, 24, 20, 141, 4, 179, 199, 56, 244, 201, 15, 12, 201, 16, 243, 79, 72, 112,
+			78, 37, 53, 0, 15, 11, 200, 80, 21, 15, 88, 84, 137, 56, 112, 15, 11, 200, 76, 242, 71, 56, 84, 137, 56, 112, 15, 11, 200, 52,
+			241, 21, 48, 84, 137, 56, 112, 15, 11, 200, 20, 210, 71, 72, 84, 137, 56, 112, 15, 11, 200, 16, 81, 137, 48, 84, 137, 56, 112, 15,
+			11, 200, 8, 243, 137, 80, 84, 137, 56, 112, 15, 11, 200, 4, 212, 21, 80, 84, 137, 56, 112, 15, 7, 196, 81, 34, 79, 48, 15, 9,
+			198, 4, 195, 9, 4, 224, 197, 15, 9, 198, 25, 84, 197, 48, 17, 197, 15, 9, 198, 4, 97, 149, 80, 17, 197, 15, 0, 21, 66, 4,
+			192, 35, 55, 15, 49, 6, 122, 57, 72, 118, 0, 81, 113, 97, 101, 100, 97, 32, 9, 198, 28, 19, 66, 37, 53, 0, 15, 9, 198, 88,
+			243, 20, 36, 113, 82, 15, 9, 198, 65, 80, 140, 36, 49, 82, 15, 9, 198, 16, 149, 133, 72, 113, 82, 15, 9, 198, 16, 83, 65, 72,
+			177, 82, 15, 9, 198, 5, 4, 12, 36, 49, 82, 15, 9, 198, 24, 84, 141, 20, 229, 0, 15, 9, 198, 52, 20, 139, 4, 229, 0, 15,
+			0, 29, 75, 77, 21, 65, 72, 81, 1, 56, 49, 82, 56, 80, 89, 49, 58, 6, 115, 108, 72, 117, 12, 50, 89, 108, 20, 50, 13, 0,
+			0, 17, 66, 53, 224, 65, 125, 12, 15, 107, 118, 0, 81, 104, 97, 118, 101, 32, 5, 194, 53, 224, 76, 9, 3, 95, 35, 57, 47, 35,
+			71, 0, 0, 12, 201, 61, 5, 15, 52, 85, 18, 37, 53, 0, 15, 9, 198, 77, 64, 70, 24, 17, 197, 15, 0, 9, 198, 72, 84, 212,
+			4, 229, 0, 15, 0, 8, 197, 45, 84, 201, 56, 80, 15, 11, 200, 77, 4, 153, 17, 53, 1, 28, 80, 15, 11, 200, 64, 192, 84, 52,
+			83, 129, 28, 80, 15, 8, 197, 45, 84, 129, 28, 80, 15, 0, 9, 198, 16, 148, 137, 28, 83, 148, 15, 9, 198, 52, 147, 9, 80, 19,
+			148, 15, 9, 198, 4, 66, 149, 16, 19, 148, 15, 0, 8, 197, 85, 101, 76, 125, 32, 15, 9, 198, 28, 83, 196, 125, 50, 64, 15, 11,
+			200, 45, 34, 77, 36, 227, 204, 60, 112, 15, 11, 200, 44, 147, 133, 76, 147, 204, 60, 112, 15, 10, 199, 77, 82, 203, 84, 193, 78, 80,
+			15, 12, 201, 77, 80, 147, 45, 34, 66, 20, 229, 0, 15, 10, 199, 60, 36, 203, 85, 32, 78, 80, 15, 10, 199, 44, 243, 208, 21, 32,
+			78, 80, 15, 12, 201, 44, 243, 148, 72, 243, 12, 4, 229, 0, 15, 10, 199, 36, 229, 5, 56, 64, 78, 80, 15, 10, 199, 32, 244, 208,
+			37, 64, 78, 80, 15, 10, 199, 5, 69, 5, 77, 64, 78, 80, 15, 10, 199, 5, 48, 197, 56, 64, 78, 80, 15, 10, 199, 5, 4, 5,
+			48, 192, 78, 80, 15, 10, 199, 4, 48, 197, 65, 64, 78, 80, 15, 0, 23, 66, 21, 64, 36, 72, 15, 83, 6, 108, 34, 89, 129, 50,
+			0, 81, 102, 111, 114, 115, 121, 110, 32, 17, 66, 21, 64, 36, 72, 15, 107, 6, 121, 40, 0, 81, 104, 97, 118, 32, 23, 66, 21, 64,
+			36, 72, 15, 83, 108, 15, 72, 121, 57, 0, 82, 102, 111, 114, 32, 100, 105, 103, 32, 17, 66, 21, 64, 36, 72, 15, 6, 83, 39, 34,
+			0, 81, 102, 111, 114, 32, 16, 66, 21, 64, 36, 72, 15, 107, 121, 40, 0, 81, 104, 97, 118, 32, 24, 66, 21, 64, 36, 47, 15, 49,
+			84, 121, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 26, 74, 8, 80, 200, 4, 209, 76, 76, 21, 67, 20, 71, 114,
+			91, 118, 65, 6, 114, 60, 89, 6, 125, 12, 89, 0, 9, 198, 89, 244, 148, 36, 225, 5, 15, 9, 198, 21, 84, 129, 76, 145, 78, 15,
+			9, 198, 60, 213, 18, 20, 229, 0, 15, 8, 66, 21, 64, 36, 47, 0, 72, 0, 24, 69, 76, 181, 76, 48, 80, 89, 81, 6, 123, 55,
+			14, 15, 107, 6, 117, 0, 81, 104, 97, 118, 101, 32, 10, 199, 72, 85, 5, 57, 66, 79, 56, 15, 10, 199, 60, 181, 76, 5, 66, 79,
+			56, 15, 10, 199, 24, 244, 141, 5, 66, 79, 56, 15, 10, 199, 16, 85, 5, 57, 66, 79, 56, 15, 10, 199, 16, 81, 140, 5, 66, 79,
+			56, 15, 8, 197, 20, 198, 83, 36, 80, 15, 8, 197, 5, 96, 78, 12, 80, 15, 8, 197, 80, 148, 129, 16, 80, 15, 8, 197, 64, 20,
+			129, 16, 80, 15, 8, 197, 44, 20, 129, 16, 80, 15, 8, 197, 76, 181, 76, 48, 80, 76, 0, 12, 201, 89, 83, 11, 4, 227, 204, 60,
+			114, 64, 15, 12, 201, 28, 84, 143, 57, 67, 204, 60, 114, 64, 15, 11, 200, 20, 180, 203, 85, 36, 201, 60, 224, 15, 10, 199, 81, 84,
+			137, 77, 66, 83, 44, 15, 10, 199, 77, 64, 84, 5, 34, 83, 44, 15, 10, 199, 76, 195, 214, 4, 178, 83, 44, 15, 10, 199, 72, 148,
+			5, 57, 50, 83, 44, 15, 10, 199, 72, 16, 201, 77, 66, 83, 44, 15, 10, 199, 65, 84, 137, 77, 66, 83, 44, 15, 10, 199, 64, 81,
+			1, 57, 66, 83, 44, 15, 10, 199, 61, 33, 193, 77, 66, 83, 44, 15, 10, 199, 56, 22, 137, 77, 66, 83, 44, 15, 10, 199, 52, 148,
+			212, 72, 242, 83, 44, 15, 10, 199, 48, 149, 21, 72, 114, 83, 44, 15, 10, 199, 45, 34, 71, 21, 34, 83, 44, 15, 10, 199, 44, 244,
+			205, 21, 66, 83, 44, 15, 10, 199, 44, 21, 75, 5, 50, 83, 44, 15, 10, 199, 44, 19, 13, 84, 178, 83, 44, 15, 10, 199, 28, 83,
+			203, 20, 210, 83, 44, 15, 10, 199, 21, 2, 68, 20, 210, 83, 44, 15, 10, 199, 20, 196, 193, 77, 50, 83, 44, 15, 10, 199, 20, 180,
+			212, 5, 66, 83, 44, 15, 10, 199, 4, 224, 76, 60, 114, 83, 44, 15, 10, 199, 4, 195, 5, 72, 114, 83, 44, 15, 10, 199, 4, 176,
+			68, 20, 210, 83, 44, 15, 10, 199, 4, 34, 200, 5, 50, 83, 44, 15, 9, 198, 77, 147, 148, 21, 49, 64, 15, 9, 198, 60, 33, 21,
+			12, 83, 148, 15, 0, 12, 201, 8, 84, 212, 101, 33, 82, 36, 225, 5, 68, 11, 200, 81, 32, 85, 52, 21, 9, 76, 176, 15, 11, 200,
+			77, 80, 129, 72, 181, 9, 76, 176, 15, 11, 200, 76, 19, 79, 40, 81, 9, 76, 176, 15, 11, 200, 65, 35, 203, 48, 149, 9, 76, 176,
+			15, 11, 200, 65, 32, 71, 52, 21, 9, 76, 176, 15, 11, 200, 64, 20, 137, 80, 85, 9, 76, 176, 15, 11, 200, 52, 85, 1, 25, 148,
+			201, 76, 176, 15, 11, 200, 52, 21, 5, 52, 21, 9, 76, 176, 15, 11, 200, 33, 148, 15, 80, 85, 9, 76, 176, 15, 11, 200, 21, 96,
+			78, 28, 83, 9, 76, 176, 15, 11, 200, 20, 180, 197, 28, 85, 9, 76, 176, 15, 11, 200, 16, 144, 75, 72, 149, 9, 76, 176, 15, 11,
+			200, 13, 148, 18, 36, 245, 9, 76, 176, 15, 11, 200, 5, 34, 84, 52, 85, 9, 76, 176, 15, 11, 200, 4, 229, 9, 80, 85, 9, 76,
+			176, 15, 11, 200, 4, 227, 210, 20, 181, 9, 76, 176, 15, 9, 198, 64, 243, 25, 28, 19, 73, 15, 12, 201, 45, 83, 147, 80, 225, 82,
+			36, 225, 5, 15, 12, 201, 8, 84, 212, 101, 33, 82, 36, 225, 5, 15, 13, 202, 44, 243, 138, 84, 226, 212, 36, 243, 129, 48, 15, 12,
+			201, 64, 20, 148, 36, 50, 80, 4, 229, 0, 15, 8, 67, 49, 82, 197, 21, 0, 47, 0, 25, 73, 76, 243, 19, 40, 83, 137, 81, 54,
+			78, 89, 109, 55, 89, 57, 13, 50, 6, 111, 47, 89, 111, 50, 0, 0, 31, 68, 84, 226, 79, 56, 57, 40, 50, 57, 112, 50, 15, 89,
+			47, 36, 37, 89, 57, 13, 50, 0, 81, 115, 116, 97, 116, 105, 111, 110, 32, 7, 196, 84, 226, 79, 56, 15, 11, 200, 72, 81, 133, 72,
+			83, 132, 84, 208, 15, 11, 200, 52, 83, 79, 72, 19, 132, 84, 208, 15, 11, 200, 44, 243, 80, 61, 50, 84, 84, 208, 15, 11, 200, 64,
+			243, 25, 56, 243, 73, 84, 208, 15, 11, 200, 52, 147, 12, 20, 227, 137, 84, 208, 15, 11, 200, 44, 243, 147, 61, 37, 9, 84, 208, 15,
+			11, 200, 21, 96, 78, 28, 83, 9, 84, 208, 15, 11, 200, 13, 144, 78, 44, 19, 9, 84, 208, 15, 11, 200, 5, 81, 9, 80, 244, 137,
+			84, 208, 15, 7, 196, 73, 80, 137, 56, 15, 4, 193, 136, 43, 0, 8, 197, 45, 243, 5, 72, 144, 15, 10, 199, 85, 35, 204, 60, 114,
+			83, 44, 15, 10, 199, 77, 80, 147, 60, 226, 83, 44, 15, 10, 199, 76, 83, 147, 61, 34, 83, 44, 15, 10, 199, 64, 21, 18, 36, 50,
+			83, 44, 15, 10, 199, 64, 20, 9, 77, 66, 83, 44, 15, 10, 199, 52, 84, 207, 104, 242, 83, 44, 15, 10, 199, 52, 19, 20, 21, 50,
+			83, 44, 15, 10, 199, 48, 85, 129, 57, 66, 83, 44, 15, 10, 199, 48, 85, 1, 72, 114, 83, 44, 15, 10, 199, 44, 244, 137, 57, 66,
+			83, 44, 15, 10, 199, 21, 68, 149, 76, 178, 83, 44, 15, 10, 199, 4, 224, 84, 60, 210, 83, 44, 15, 14, 203, 44, 20, 146, 20, 39,
+			203, 76, 210, 78, 16, 80, 15, 0, 12, 201, 48, 81, 19, 4, 113, 82, 36, 225, 5, 15, 0, 12, 201, 65, 35, 212, 84, 33, 82, 4,
+			228, 192, 15, 0, 11, 200, 33, 148, 15, 44, 243, 132, 72, 144, 15, 11, 200, 28, 83, 132, 5, 35, 69, 72, 144, 15, 8, 197, 8, 82,
+			214, 20, 208, 15, 0, 33, 67, 76, 19, 20, 89, 6, 108, 55, 47, 15, 55, 115, 57, 49, 15, 89, 6, 37, 47, 37, 0, 82, 108, 97,
+			107, 101, 32, 99, 105, 116, 121, 32, 9, 198, 64, 20, 143, 16, 148, 212, 15, 9, 198, 61, 33, 193, 56, 148, 212, 15, 9, 198, 49, 85,
+			5, 56, 148, 212, 15, 9, 198, 48, 17, 197, 72, 148, 212, 15, 9, 198, 21, 52, 193, 100, 148, 212, 15, 9, 198, 8, 20, 213, 56, 148,
+			212, 15, 9, 198, 73, 81, 134, 21, 34, 64, 15, 9, 198, 40, 240, 130, 21, 34, 64, 15, 9, 198, 28, 20, 150, 21, 34, 64, 15, 9,
+			198, 16, 82, 207, 73, 83, 64, 15, 9, 198, 77, 147, 70, 60, 226, 64, 15, 0, 9, 198, 52, 147, 12, 36, 243, 128, 15, 9, 198, 20,
+			194, 83, 36, 243, 128, 15, 9, 198, 16, 242, 212, 72, 147, 128, 15, 9, 198, 36, 226, 21, 52, 19, 128, 16, 9, 198, 17, 83, 3, 36,
+			19, 128, 16, 9, 198, 4, 116, 129, 52, 19, 128, 16, 0, 9, 198, 124, 181, 129, 80, 244, 128, 15, 9, 198, 76, 18, 211, 37, 50, 192,
+			15, 9, 198, 37, 64, 76, 37, 50, 192, 15, 9, 198, 32, 84, 143, 37, 50, 192, 15, 9, 198, 4, 225, 18, 60, 145, 0, 15, 8, 197,
+			36, 228, 85, 37, 64, 15, 10, 199, 80, 147, 79, 45, 32, 84, 36, 15, 10, 199, 61, 37, 15, 16, 243, 148, 36, 15, 12, 201, 24, 195,
+			206, 20, 195, 15, 29, 32, 70, 15, 8, 197, 65, 34, 77, 5, 64, 15, 9, 198, 24, 244, 141, 36, 64, 66, 15, 9, 198, 5, 4, 5,
+			48, 192, 66, 15, 9, 198, 4, 224, 76, 101, 48, 66, 15, 0, 10, 199, 77, 80, 195, 21, 52, 207, 72, 15, 7, 196, 76, 19, 133, 72,
+			15, 7, 196, 16, 243, 133, 72, 15, 9, 198, 32, 245, 141, 60, 66, 71, 15, 9, 198, 28, 83, 69, 56, 194, 71, 15, 0, 8, 197, 33,
+			244, 133, 76, 144, 15, 8, 197, 16, 85, 137, 21, 32, 15, 9, 198, 64, 20, 129, 8, 243, 0, 15, 9, 198, 64, 19, 1, 80, 19, 0,
+			15, 0, 8, 197, 52, 20, 211, 165, 32, 15, 8, 197, 24, 192, 78, 165, 32, 15, 12, 201, 72, 81, 197, 56, 84, 129, 80, 244, 128, 15,
+			12, 201, 52, 19, 137, 65, 83, 1, 80, 244, 128, 15, 12, 201, 44, 243, 210, 16, 147, 129, 80, 244, 128, 15, 12, 201, 44, 243, 147, 64,
+			148, 129, 80, 244, 128, 15, 12, 201, 44, 243, 80, 72, 147, 65, 80, 244, 128, 15, 12, 201, 44, 243, 77, 20, 229, 1, 80, 244, 128, 15,
+			12, 201, 44, 148, 143, 65, 32, 75, 80, 244, 128, 15, 12, 201, 36, 228, 197, 52, 147, 129, 80, 244, 128, 15, 12, 201, 20, 180, 193, 52,
+			147, 129, 80, 244, 128, 15, 12, 201, 4, 48, 197, 48, 84, 129, 80, 244, 128, 15, 12, 201, 125, 53, 5, 80, 144, 201, 76, 209, 64, 15,
+			12, 201, 26, 145, 5, 72, 19, 9, 76, 209, 64, 15, 12, 201, 21, 2, 75, 85, 39, 201, 76, 209, 64, 15, 12, 201, 44, 243, 77, 37,
+			69, 5, 72, 85, 0, 15, 0, 5, 194, 21, 80, 13, 10, 199, 52, 147, 137, 5, 69, 82, 20, 15, 10, 199, 52, 147, 137, 5, 69, 82,
+			20, 15, 10, 199, 72, 85, 143, 49, 65, 82, 20, 15, 10, 199, 24, 244, 141, 5, 65, 82, 20, 15, 10, 199, 8, 19, 132, 4, 113, 82,
+			20, 15, 8, 197, 124, 243, 9, 76, 176, 15, 9, 198, 80, 16, 140, 60, 145, 0, 15, 13, 202, 64, 243, 25, 12, 83, 148, 72, 148, 205,
+			20, 15, 13, 202, 53, 82, 1, 52, 81, 1, 56, 148, 205, 20, 15, 13, 202, 52, 84, 139, 4, 229, 9, 48, 148, 205, 20, 15, 13, 202,
+			37, 51, 204, 5, 66, 79, 56, 148, 205, 20, 15, 13, 202, 4, 224, 76, 24, 16, 133, 80, 148, 205, 20, 15, 8, 197, 77, 6, 71, 5,
+			64, 15, 0, 11, 68, 20, 229, 5, 72, 116, 50, 47, 109, 0, 12, 201, 52, 147, 137, 77, 65, 82, 36, 83, 0, 15, 7, 196, 44, 21,
+			133, 72, 15, 7, 196, 28, 84, 133, 72, 15, 0, 12, 201, 32, 85, 5, 72, 241, 15, 45, 50, 64, 15, 8, 197, 72, 19, 135, 21, 32,
+			15, 8, 197, 48, 243, 135, 21, 32, 15, 8, 197, 45, 35, 203, 21, 32, 15, 8, 197, 28, 192, 83, 21, 32, 15, 8, 197, 16, 244, 211,
+			21, 32, 15, 10, 199, 81, 80, 82, 20, 114, 83, 44, 15, 10, 199, 80, 83, 204, 60, 114, 83, 44, 15, 10, 199, 76, 49, 78, 5, 34,
+			83, 44, 15, 10, 199, 72, 85, 77, 5, 66, 83, 44, 15, 10, 199, 72, 131, 196, 21, 50, 83, 44, 15, 10, 199, 52, 243, 129, 72, 178,
+			83, 44, 15, 10, 199, 52, 85, 5, 61, 34, 83, 44, 15, 10, 199, 45, 35, 205, 5, 66, 83, 44, 15, 10, 199, 44, 241, 206, 5, 66,
+			83, 44, 15, 10, 199, 44, 20, 148, 4, 114, 83, 44, 15, 10, 199, 44, 19, 13, 100, 178, 83, 44, 15, 10, 199, 40, 84, 213, 37, 66,
+			83, 44, 15, 10, 199, 33, 148, 212, 21, 34, 83, 44, 15, 10, 199, 21, 84, 212, 4, 178, 83, 44, 15, 10, 199, 21, 50, 201, 52, 242,
+			83, 44, 15, 10, 199, 21, 34, 84, 72, 82, 83, 44, 15, 10, 199, 8, 148, 195, 5, 146, 83, 44, 15, 10, 199, 8, 147, 204, 60, 114,
+			83, 44, 15, 10, 199, 5, 85, 5, 57, 66, 83, 44, 15, 10, 199, 4, 208, 146, 61, 50, 83, 44, 15, 15, 204, 76, 83, 148, 36, 209,
+			78, 80, 19, 9, 76, 209, 64, 15, 8, 197, 48, 147, 133, 5, 32, 15, 8, 197, 40, 17, 213, 5, 32, 15, 8, 197, 48, 147, 133, 5,
+			32, 15, 10, 69, 72, 19, 135, 21, 32, 21, 0, 47, 0, 9, 198, 80, 82, 206, 60, 227, 205, 15, 9, 198, 44, 20, 131, 36, 227, 205,
+			15, 11, 200, 96, 83, 143, 24, 240, 137, 76, 176, 15, 11, 200, 88, 242, 193, 80, 149, 137, 76, 176, 15, 11, 200, 88, 81, 197, 80, 20,
+			137, 76, 176, 15, 11, 200, 88, 19, 21, 80, 20, 137, 76, 176, 15, 11, 200, 77, 80, 148, 72, 244, 9, 76, 176, 15, 11, 200, 76, 243,
+			9, 16, 20, 137, 76, 176, 15, 11, 200, 76, 20, 129, 12, 83, 137, 76, 176, 15, 11, 200, 72, 80, 76, 37, 53, 9, 76, 176, 15, 11,
+			200, 65, 35, 195, 20, 229, 9, 76, 176, 15, 11, 200, 64, 145, 84, 37, 53, 9, 76, 176, 15, 11, 200, 64, 144, 78, 37, 53, 9, 76,
+			176, 15, 11, 200, 61, 5, 1, 80, 149, 137, 76, 176, 15, 11, 200, 56, 18, 86, 37, 53, 9, 76, 176, 15, 11, 200, 52, 243, 143, 24,
+			243, 137, 76, 176, 15, 11, 200, 52, 85, 1, 8, 243, 9, 76, 176, 15, 11, 200, 48, 20, 9, 16, 20, 137, 76, 176, 15, 11, 200, 44,
+			21, 5, 28, 244, 137, 76, 176, 15, 11, 200, 32, 85, 82, 37, 53, 9, 76, 176, 15, 11, 200, 32, 81, 197, 52, 243, 137, 76, 176, 15,
+			11, 200, 28, 83, 199, 72, 17, 137, 76, 176, 15, 11, 200, 24, 21, 86, 37, 53, 9, 76, 176, 15, 11, 200, 17, 84, 129, 80, 149, 137,
+			76, 176, 15, 11, 200, 17, 80, 76, 37, 53, 9, 76, 176, 15, 11, 200, 16, 162, 66, 61, 85, 9, 76, 176, 15, 11, 200, 16, 144, 75,
+			72, 243, 137, 76, 176, 15, 11, 200, 8, 18, 203, 4, 229, 9, 76, 176, 15, 11, 200, 5, 67, 205, 37, 53, 9, 76, 176, 15, 11, 200,
+			5, 34, 193, 37, 53, 9, 76, 176, 15, 11, 200, 4, 116, 143, 56, 243, 73, 76, 176, 15, 11, 200, 72, 243, 65, 56, 148, 212, 36, 176,
+			15, 0, 8, 197, 85, 34, 78, 165, 48, 15, 8, 197, 60, 210, 78, 165, 48, 15, 8, 197, 56, 149, 18, 165, 48, 15, 8, 197, 56, 84,
+			150, 165, 48, 15, 8, 197, 24, 144, 146, 165, 48, 15, 7, 196, 36, 66, 79, 52, 15, 7, 196, 28, 194, 79, 52, 15, 13, 202, 29, 83,
+			77, 36, 20, 129, 8, 144, 213, 52, 15, 0, 11, 200, 44, 243, 134, 20, 181, 21, 72, 80, 15, 8, 197, 20, 225, 82, 28, 144, 15, 12,
+			201, 61, 1, 82, 5, 66, 79, 56, 83, 0, 15, 11, 200, 77, 3, 206, 76, 244, 133, 72, 80, 15, 11, 200, 16, 148, 212, 4, 224, 197,
+			72, 80, 15, 11, 200, 5, 81, 205, 20, 229, 5, 72, 80, 15, 7, 196, 40, 21, 129, 56, 15, 10, 199, 8, 148, 135, 37, 69, 9, 56,
+			15, 0, 9, 198, 77, 147, 133, 72, 114, 64, 15, 9, 198, 4, 194, 207, 32, 243, 0, 15, 10, 199, 104, 243, 204, 60, 114, 83, 44, 15,
+			10, 199, 77, 148, 212, 20, 210, 83, 44, 15, 10, 199, 64, 19, 132, 20, 210, 83, 44, 15, 10, 199, 52, 19, 1, 101, 50, 83, 44, 15,
+			10, 199, 52, 17, 217, 5, 34, 83, 44, 15, 10, 199, 45, 85, 193, 37, 66, 83, 44, 15, 10, 199, 44, 148, 135, 37, 50, 83, 44, 15,
+			10, 199, 28, 145, 193, 57, 66, 83, 44, 15, 10, 199, 28, 128, 78, 21, 50, 83, 44, 15, 10, 199, 28, 83, 204, 60, 114, 83, 44, 15,
+			10, 199, 25, 33, 78, 21, 66, 83, 44, 15, 10, 199, 24, 244, 133, 57, 50, 83, 44, 15, 10, 199, 21, 33, 77, 37, 66, 83, 44, 15,
+			10, 199, 16, 144, 76, 60, 114, 83, 44, 15, 10, 199, 9, 84, 141, 21, 50, 83, 44, 15, 10, 199, 8, 19, 19, 4, 210, 83, 44, 15,
+			10, 199, 5, 53, 13, 5, 66, 83, 44, 15, 12, 68, 12, 193, 82, 44, 49, 55, 121, 12, 49, 0, 0, 12, 201, 88, 19, 4, 32, 244,
+			142, 37, 53, 0, 15, 12, 201, 8, 82, 1, 88, 147, 210, 37, 53, 0, 15, 0, 10, 199, 28, 19, 135, 73, 243, 169, 76, 15, 14, 204,
+			60, 227, 205, 5, 67, 208, 60, 145, 84, 36, 179, 206, 10, 199, 8, 81, 18, 4, 113, 82, 36, 15, 0, 11, 200, 88, 148, 148, 84, 244,
+			197, 72, 144, 15, 11, 200, 81, 32, 75, 5, 52, 197, 72, 144, 15, 11, 200, 45, 33, 83, 80, 243, 65, 80, 144, 15, 7, 196, 33, 83,
+			65, 56, 16, 7, 196, 8, 19, 129, 56, 16, 21, 72, 12, 147, 131, 36, 227, 129, 80, 144, 89, 36, 50, 89, 37, 50, 6, 117, 47, 37,
+			0, 0, 9, 198, 76, 176, 66, 21, 34, 64, 15, 9, 198, 17, 34, 86, 21, 34, 64, 15, 0, 6, 195, 61, 130, 68, 15, 9, 68, 8,
+			246, 76, 20, 21, 0, 47, 0, 9, 198, 52, 147, 143, 37, 50, 192, 15, 9, 198, 17, 37, 83, 37, 50, 192, 15, 10, 199, 77, 84, 18,
+			20, 208, 84, 36, 15, 10, 199, 16, 148, 12, 60, 208, 84, 36, 15, 10, 199, 5, 85, 15, 45, 32, 84, 36, 15, 10, 69, 76, 147, 135,
+			48, 80, 21, 0, 47, 0, 0, 12, 201, 76, 241, 137, 77, 66, 75, 21, 33, 84, 15, 12, 201, 44, 243, 147, 80, 84, 142, 21, 33, 84,
+			15, 12, 201, 16, 148, 212, 36, 225, 214, 21, 33, 84, 15, 12, 201, 76, 243, 129, 72, 20, 16, 5, 32, 84, 15, 0, 7, 196, 32, 83,
+			132, 20, 72, 0, 30, 69, 69, 82, 67, 32, 80, 49, 111, 91, 15, 55, 124, 34, 6, 115, 12, 50, 12, 0, 81, 108, 111, 114, 114, 97,
+			105, 110, 101, 32, 11, 200, 8, 245, 82, 28, 83, 201, 76, 144, 15, 9, 198, 4, 231, 205, 37, 50, 192, 15, 10, 199, 65, 39, 211, 80,
+			147, 132, 20, 15, 8, 197, 56, 245, 137, 12, 80, 15, 8, 197, 64, 19, 129, 16, 80, 15, 8, 197, 56, 18, 129, 16, 80, 15, 8, 197,
+			5, 34, 193, 16, 80, 15, 8, 197, 8, 17, 193, 28, 80, 15, 12, 69, 52, 17, 1, 52, 80, 21, 102, 114, 0, 47, 0, 10, 199, 65,
+			39, 211, 36, 65, 78, 80, 15, 10, 199, 65, 39, 196, 36, 176, 78, 80, 15, 0, 20, 67, 16, 82, 129, 72, 36, 91, 57, 35, 15, 6,
+			84, 129, 0, 44, 81, 118, 117, 32, 11, 200, 80, 83, 203, 72, 21, 9, 76, 176, 15, 11, 200, 77, 147, 148, 4, 181, 9, 76, 176, 15,
+			11, 200, 77, 144, 129, 72, 149, 9, 76, 176, 15, 11, 200, 64, 20, 129, 8, 243, 9, 76, 176, 15, 11, 200, 37, 51, 1, 52, 149, 9,
+			76, 176, 15, 11, 200, 33, 145, 201, 20, 163, 137, 76, 176, 15, 11, 200, 32, 19, 147, 20, 21, 9, 76, 176, 15, 11, 200, 8, 147, 210,
+			101, 67, 73, 76, 176, 15, 11, 200, 5, 34, 201, 52, 81, 9, 76, 176, 15, 11, 200, 4, 229, 1, 72, 181, 9, 76, 176, 15, 11, 200,
+			4, 225, 1, 49, 84, 201, 76, 176, 15, 11, 200, 4, 193, 129, 8, 85, 9, 76, 176, 15, 11, 200, 4, 180, 143, 52, 21, 9, 76, 176,
+			15, 9, 198, 77, 147, 143, 57, 147, 73, 15, 12, 201, 20, 180, 207, 72, 34, 84, 4, 229, 0, 15, 0, 12, 201, 88, 149, 1, 48, 148,
+			212, 37, 50, 192, 15, 12, 201, 84, 226, 79, 56, 148, 212, 37, 50, 192, 15, 12, 201, 80, 245, 5, 52, 148, 212, 37, 50, 192, 15, 12,
+			201, 80, 147, 79, 45, 32, 84, 37, 50, 192, 15, 12, 201, 80, 84, 129, 64, 85, 84, 37, 50, 192, 15, 12, 201, 77, 148, 212, 20, 208,
+			84, 37, 50, 192, 15, 12, 201, 76, 227, 194, 8, 148, 212, 37, 50, 192, 15, 12, 201, 76, 86, 67, 32, 83, 12, 37, 50, 192, 15, 12,
+			201, 76, 21, 1, 56, 148, 212, 37, 50, 192, 15, 12, 201, 72, 246, 65, 48, 148, 212, 37, 50, 192, 15, 12, 201, 72, 145, 207, 72, 148,
+			212, 37, 50, 192, 15, 12, 201, 72, 16, 149, 48, 148, 212, 37, 50, 192, 15, 12, 201, 65, 54, 75, 60, 65, 76, 37, 50, 192, 15, 12,
+			201, 65, 54, 75, 20, 65, 76, 37, 50, 192, 15, 12, 201, 65, 35, 199, 56, 244, 212, 37, 50, 192, 15, 12, 201, 64, 244, 21, 48, 148,
+			212, 37, 50, 192, 15, 12, 201, 64, 193, 79, 56, 20, 212, 37, 50, 192, 15, 12, 201, 64, 20, 133, 57, 65, 84, 37, 50, 192, 15, 12,
+			201, 64, 19, 148, 20, 148, 212, 37, 50, 192, 15, 12, 201, 64, 16, 201, 24, 148, 212, 37, 50, 192, 15, 12, 201, 61, 37, 15, 16, 243,
+			148, 37, 50, 192, 15, 12, 201, 61, 5, 9, 52, 148, 212, 37, 50, 192, 15, 12, 201, 57, 83, 73, 76, 208, 84, 37, 50, 192, 15, 12,
+			201, 56, 146, 9, 48, 148, 212, 37, 50, 192, 15, 12, 201, 52, 244, 135, 4, 224, 84, 37, 50, 192, 15, 12, 201, 52, 244, 134, 20, 208,
+			84, 37, 50, 192, 15, 12, 201, 52, 244, 129, 48, 148, 212, 37, 50, 192, 15, 12, 201, 52, 243, 133, 28, 20, 203, 37, 50, 192, 15, 12,
+			201, 52, 85, 1, 77, 64, 84, 37, 50, 192, 15, 12, 201, 52, 82, 193, 56, 148, 212, 37, 50, 192, 15, 12, 201, 48, 246, 65, 48, 148,
+			212, 37, 50, 192, 15, 12, 201, 48, 241, 193, 72, 149, 13, 37, 50, 192, 15, 12, 201, 48, 147, 135, 88, 148, 212, 37, 50, 192, 15, 12,
+			201, 48, 83, 137, 56, 148, 212, 37, 50, 192, 15, 12, 201, 44, 243, 15, 72, 148, 212, 37, 50, 192, 15, 12, 201, 44, 21, 1, 48, 84,
+			20, 37, 50, 192, 15, 12, 201, 44, 20, 137, 76, 208, 84, 37, 50, 192, 15, 12, 201, 37, 51, 1, 52, 148, 212, 37, 50, 192, 15, 12,
+			201, 36, 65, 65, 48, 148, 212, 37, 50, 192, 15, 12, 201, 33, 83, 79, 72, 148, 212, 37, 50, 192, 15, 12, 201, 33, 83, 65, 56, 148,
+			212, 37, 50, 192, 15, 12, 201, 32, 147, 132, 84, 148, 212, 37, 50, 192, 15, 12, 201, 32, 81, 15, 56, 148, 212, 37, 50, 192, 15, 12,
+			201, 29, 32, 86, 37, 65, 84, 37, 50, 192, 15, 12, 201, 28, 83, 210, 28, 148, 212, 37, 50, 192, 15, 12, 201, 28, 21, 76, 48, 148,
+			212, 37, 50, 192, 15, 12, 201, 25, 85, 21, 72, 148, 212, 37, 50, 192, 15, 12, 201, 24, 144, 133, 72, 244, 20, 37, 50, 192, 15, 12,
+			201, 24, 83, 73, 56, 148, 212, 37, 50, 192, 15, 12, 201, 24, 21, 1, 48, 148, 212, 37, 50, 192, 15, 12, 201, 21, 81, 133, 52, 148,
+			212, 37, 50, 192, 15, 12, 201, 21, 52, 193, 100, 148, 212, 37, 50, 192, 15, 12, 201, 21, 50, 193, 64, 148, 212, 37, 50, 192, 15, 12,
+			201, 20, 212, 9, 72, 148, 212, 37, 50, 192, 15, 12, 201, 20, 208, 140, 20, 208, 84, 37, 50, 192, 15, 12, 201, 16, 148, 137, 28, 148,
+			212, 37, 50, 192, 15, 12, 201, 16, 148, 12, 60, 208, 84, 37, 50, 192, 15, 12, 201, 16, 144, 71, 56, 244, 212, 37, 50, 192, 15, 12,
+			201, 16, 83, 79, 45, 32, 84, 37, 50, 192, 15, 12, 201, 16, 83, 9, 72, 148, 212, 37, 50, 192, 15, 12, 201, 9, 81, 4, 32, 148,
+			212, 37, 50, 192, 15, 12, 201, 5, 85, 15, 45, 32, 84, 37, 50, 192, 15, 12, 201, 5, 53, 9, 28, 208, 84, 37, 50, 192, 15, 12,
+			201, 4, 229, 9, 76, 84, 20, 37, 50, 192, 15, 12, 201, 4, 227, 129, 48, 148, 212, 37, 50, 192, 15, 12, 201, 4, 224, 82, 44, 148,
+			212, 37, 50, 192, 15, 12, 201, 4, 197, 18, 84, 148, 212, 37, 50, 192, 15, 12, 201, 4, 194, 217, 52, 148, 212, 37, 50, 192, 15, 12,
+			201, 4, 181, 9, 88, 148, 212, 37, 50, 192, 15, 12, 201, 4, 180, 201, 60, 208, 84, 37, 50, 192, 15, 12, 201, 4, 84, 143, 56, 21,
+			84, 37, 50, 192, 15, 13, 202, 24, 244, 134, 5, 69, 5, 72, 147, 132, 20, 15, 0, 17, 67, 21, 101, 0, 36, 84, 115, 50, 47, 40,
+			6, 115, 55, 0, 13, 25, 8, 197, 4, 180, 201, 60, 208, 15, 8, 197, 52, 82, 133, 72, 144, 15, 8, 197, 4, 225, 5, 72, 144, 15,
+			8, 197, 80, 81, 5, 84, 208, 15, 11, 200, 64, 84, 137, 60, 66, 75, 84, 208, 15, 11, 200, 21, 2, 67, 20, 229, 18, 84, 208, 15,
+			0, 9, 198, 17, 148, 198, 5, 50, 64, 15, 9, 198, 28, 83, 204, 60, 114, 64, 15, 8, 197, 89, 228, 197, 72, 144, 15, 8, 197, 74,
+			145, 197, 72, 144, 15, 10, 199, 44, 148, 149, 72, 114, 83, 44, 15, 9, 198, 64, 19, 132, 20, 210, 64, 15, 0, 9, 198, 104, 147, 206,
+			37, 51, 69, 15, 8, 197, 80, 84, 141, 36, 176, 15, 8, 197, 73, 149, 13, 36, 176, 15, 7, 196, 77, 81, 1, 56, 15, 7, 196, 77,
+			81, 1, 56, 16, 7, 196, 76, 81, 1, 56, 16, 6, 195, 76, 147, 133, 76, 0, 7, 196, 80, 83, 210, 36, 15, 10, 199, 65, 54, 75,
+			36, 21, 18, 36, 15, 10, 199, 64, 146, 193, 57, 65, 82, 36, 15, 10, 199, 64, 20, 9, 77, 65, 82, 36, 15, 10, 199, 61, 5, 15,
+			52, 85, 18, 36, 15, 10, 199, 44, 20, 143, 77, 49, 82, 36, 15, 10, 199, 36, 225, 137, 72, 209, 82, 36, 15, 10, 199, 24, 245, 15,
+			52, 85, 18, 36, 15, 10, 199, 24, 147, 9, 77, 65, 82, 36, 15, 10, 199, 17, 148, 197, 57, 65, 82, 36, 15, 10, 199, 8, 145, 207,
+			81, 65, 82, 36, 15, 10, 199, 5, 37, 9, 77, 65, 82, 36, 15, 4, 193, 140, 43, 0, 11, 200, 44, 243, 80, 5, 36, 197, 72, 144,
+			15, 8, 197, 32, 21, 129, 72, 144, 15, 8, 197, 8, 145, 193, 52, 144, 15, 8, 197, 4, 224, 82, 44, 144, 15, 8, 197, 8, 20, 143,
+			56, 144, 15, 8, 197, 80, 83, 210, 20, 208, 15, 0, 9, 198, 88, 20, 203, 21, 34, 64, 15, 9, 198, 64, 192, 71, 21, 34, 64, 15,
+			9, 198, 53, 149, 20, 21, 34, 64, 15, 9, 198, 53, 148, 132, 21, 34, 64, 15, 9, 198, 48, 147, 135, 21, 34, 64, 15, 9, 198, 48,
+			81, 140, 21, 34, 64, 15, 9, 198, 44, 243, 9, 9, 34, 64, 15, 9, 198, 32, 82, 211, 21, 34, 64, 15, 9, 198, 24, 145, 140, 21,
+			34, 64, 15, 9, 198, 8, 20, 130, 5, 34, 64, 15, 20, 68, 12, 129, 67, 44, 47, 57, 115, 49, 6, 37, 50, 0, 44, 15, 81, 105,
+			110, 32, 9, 198, 81, 148, 15, 29, 32, 70, 15, 9, 198, 80, 244, 15, 29, 32, 70, 15, 9, 198, 80, 83, 5, 29, 32, 70, 15, 9,
+			198, 76, 84, 137, 29, 32, 70, 15, 9, 198, 32, 243, 79, 29, 32, 70, 15, 9, 198, 24, 245, 15, 29, 32, 70, 15, 9, 198, 21, 67,
+			143, 29, 32, 70, 15, 9, 198, 8, 20, 143, 29, 32, 70, 15, 9, 198, 5, 85, 15, 29, 32, 70, 15, 0, 9, 198, 8, 18, 212, 21,
+			34, 69, 15, 9, 198, 80, 84, 146, 5, 34, 69, 15, 9, 198, 44, 243, 12, 60, 66, 69, 15, 9, 198, 32, 84, 130, 5, 34, 69, 15,
+			6, 195, 28, 83, 137, 15, 9, 198, 77, 97, 67, 37, 51, 69, 15, 9, 198, 76, 192, 86, 37, 51, 69, 15, 0, 9, 198, 44, 243, 80,
+			48, 85, 0, 15, 9, 198, 44, 21, 129, 48, 85, 0, 15, 9, 198, 12, 243, 80, 48, 85, 0, 15, 9, 198, 48, 83, 137, 56, 148, 212,
+			15, 9, 198, 33, 83, 79, 72, 148, 212, 15, 9, 198, 64, 20, 137, 80, 85, 0, 15, 9, 198, 76, 20, 6, 37, 50, 192, 15, 9, 198,
+			52, 244, 193, 37, 50, 192, 15, 9, 198, 48, 19, 212, 37, 50, 192, 15, 9, 198, 44, 19, 212, 37, 50, 192, 15, 9, 198, 8, 147, 212,
+			37, 50, 192, 15, 9, 198, 5, 32, 66, 37, 50, 192, 15, 9, 198, 45, 38, 79, 48, 149, 0, 15, 6, 195, 21, 64, 84, 15, 0, 9,
+			198, 44, 244, 148, 20, 194, 71, 15, 9, 198, 44, 149, 129, 29, 66, 71, 15, 9, 198, 4, 197, 143, 72, 194, 71, 15, 9, 198, 4, 117,
+			5, 72, 194, 71, 15, 9, 198, 4, 100, 201, 56, 66, 71, 15, 9, 198, 44, 149, 129, 29, 66, 71, 15, 11, 67, 16, 149, 0, 72, 6,
+			37, 47, 0, 72, 0, 11, 200, 4, 208, 84, 165, 34, 83, 52, 80, 15, 12, 201, 44, 147, 133, 52, 21, 15, 29, 32, 70, 15, 12, 201,
+			32, 148, 212, 61, 34, 79, 29, 32, 70, 15, 9, 198, 65, 35, 198, 37, 64, 66, 15, 9, 198, 56, 81, 207, 80, 144, 66, 15, 9, 198,
+			16, 148, 208, 85, 64, 66, 15, 9, 198, 16, 148, 203, 85, 64, 66, 15, 9, 198, 16, 83, 79, 57, 64, 66, 15, 9, 198, 5, 4, 12,
+			36, 176, 66, 15, 9, 198, 4, 48, 197, 65, 64, 66, 15, 0, 12, 201, 64, 21, 15, 28, 83, 137, 80, 85, 0, 15, 12, 201, 24, 83,
+			73, 56, 147, 137, 80, 85, 0, 15, 7, 196, 72, 242, 197, 72, 15, 12, 201, 16, 83, 147, 37, 67, 205, 21, 68, 137, 15, 7, 196, 88,
+			83, 1, 72, 15, 0, 10, 199, 28, 20, 142, 37, 69, 82, 20, 15, 12, 201, 61, 48, 201, 48, 195, 211, 44, 244, 0, 15, 9, 198, 64,
+			18, 76, 48, 85, 0, 15, 10, 199, 76, 145, 206, 4, 193, 82, 20, 15, 10, 199, 72, 82, 204, 4, 209, 82, 20, 15, 10, 199, 72, 81,
+			143, 72, 209, 82, 20, 15, 10, 199, 65, 35, 198, 21, 65, 82, 20, 15, 10, 199, 65, 35, 196, 84, 49, 82, 20, 15, 10, 199, 64, 245,
+			5, 57, 49, 82, 20, 15, 10, 199, 64, 20, 143, 16, 145, 82, 20, 15, 10, 199, 64, 20, 134, 84, 209, 82, 20, 15, 10, 199, 44, 244,
+			212, 84, 209, 82, 20, 15, 10, 199, 44, 243, 148, 85, 33, 82, 20, 15, 10, 199, 8, 19, 1, 56, 49, 82, 20, 15, 10, 199, 4, 227,
+			143, 56, 49, 82, 20, 15, 10, 199, 4, 68, 133, 77, 49, 82, 20, 15, 9, 198, 64, 243, 70, 72, 149, 0, 15, 10, 199, 64, 19, 31,
+			60, 116, 129, 24, 15, 0, 12, 201, 76, 149, 21, 5, 66, 79, 56, 83, 0, 15, 12, 201, 72, 81, 1, 45, 66, 79, 56, 83, 0, 15,
+			9, 198, 85, 39, 205, 37, 50, 192, 15, 14, 203, 76, 17, 15, 52, 20, 207, 12, 130, 83, 52, 80, 15, 14, 203, 65, 35, 214, 36, 228,
+			201, 4, 194, 83, 52, 80, 15, 14, 203, 65, 35, 212, 20, 181, 9, 60, 226, 83, 52, 80, 15, 14, 203, 64, 84, 147, 64, 82, 212, 37,
+			98, 83, 52, 80, 15, 14, 203, 64, 84, 134, 20, 181, 9, 60, 226, 83, 52, 80, 15, 14, 203, 52, 19, 20, 33, 84, 201, 4, 226, 83,
+			52, 80, 15, 14, 203, 52, 16, 200, 36, 21, 133, 48, 194, 83, 52, 80, 15, 14, 203, 44, 243, 77, 84, 226, 84, 5, 34, 83, 52, 80,
+			15, 14, 203, 44, 243, 77, 21, 32, 201, 4, 194, 83, 52, 80, 15, 14, 203, 36, 225, 9, 88, 145, 21, 4, 194, 83, 52, 80, 15, 14,
+			203, 36, 212, 18, 21, 52, 201, 60, 226, 83, 52, 80, 15, 14, 203, 24, 192, 71, 20, 195, 1, 57, 66, 83, 52, 80, 15, 14, 203, 20,
+			180, 208, 4, 228, 201, 60, 226, 83, 52, 80, 15, 14, 203, 9, 84, 133, 5, 82, 210, 5, 66, 83, 52, 80, 15, 14, 203, 9, 32, 78,
+			16, 84, 201, 4, 226, 83, 52, 80, 15, 14, 203, 5, 34, 83, 80, 242, 210, 5, 66, 83, 52, 80, 15, 0, 8, 197, 49, 241, 5, 72,
+			80, 15, 9, 198, 76, 144, 137, 72, 145, 78, 15, 9, 198, 28, 83, 210, 28, 145, 78, 15, 9, 198, 21, 66, 79, 64, 145, 78, 15, 9,
+			198, 77, 84, 146, 20, 19, 0, 15, 9, 198, 26, 145, 5, 72, 19, 0, 15, 18, 73, 76, 128, 85, 28, 131, 133, 77, 54, 64, 91, 126,
+			50, 116, 89, 111, 0, 0, 20, 67, 32, 19, 128, 107, 117, 50, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 10, 199, 28, 192,
+			78, 17, 83, 41, 76, 15, 9, 198, 52, 146, 210, 61, 67, 205, 15, 12, 201, 36, 224, 75, 80, 149, 137, 80, 85, 0, 15, 7, 196, 52,
+			148, 197, 72, 15, 7, 196, 48, 241, 197, 72, 15, 7, 196, 45, 33, 69, 72, 15, 7, 196, 16, 21, 5, 72, 15, 11, 200, 104, 147, 206,
+			37, 53, 9, 76, 176, 15, 11, 200, 104, 147, 66, 4, 37, 201, 76, 176, 15, 11, 200, 77, 147, 139, 72, 243, 137, 76, 176, 15, 11, 200,
+			77, 147, 77, 21, 68, 137, 76, 176, 15, 11, 200, 77, 66, 76, 37, 53, 9, 76, 176, 15, 11, 200, 77, 64, 84, 84, 20, 137, 76, 176,
+			15, 11, 200, 77, 64, 84, 37, 53, 9, 76, 176, 15, 11, 200, 77, 2, 82, 4, 229, 9, 76, 176, 15, 11, 200, 76, 179, 204, 5, 53,
+			9, 76, 176, 15, 11, 200, 56, 85, 82, 4, 193, 201, 76, 176, 15, 11, 200, 52, 18, 197, 16, 243, 137, 76, 176, 15, 11, 200, 49, 83,
+			132, 20, 228, 201, 76, 176, 15, 11, 200, 45, 83, 9, 56, 20, 137, 76, 176, 15, 11, 200, 45, 33, 84, 20, 228, 201, 76, 176, 15, 11,
+			200, 44, 21, 1, 49, 149, 9, 76, 176, 15, 11, 200, 44, 20, 213, 37, 53, 9, 76, 176, 15, 11, 200, 37, 51, 212, 21, 35, 73, 76,
+			176, 15, 11, 200, 29, 148, 129, 80, 244, 137, 76, 176, 15, 11, 200, 28, 84, 137, 5, 68, 137, 76, 176, 15, 11, 200, 24, 20, 195, 37,
+			53, 9, 76, 176, 15, 11, 200, 16, 144, 83, 80, 243, 9, 76, 176, 15, 11, 200, 8, 147, 205, 21, 68, 137, 76, 176, 15, 11, 200, 4,
+			194, 207, 32, 243, 9, 76, 176, 15, 11, 67, 16, 147, 128, 72, 6, 37, 50, 0, 76, 6, 195, 32, 19, 128, 72, 0, 10, 199, 20, 180,
+			208, 61, 37, 41, 72, 15, 12, 201, 81, 34, 78, 36, 64, 68, 37, 50, 192, 15, 12, 201, 80, 83, 5, 76, 179, 208, 37, 50, 192, 15,
+			12, 201, 80, 18, 211, 60, 227, 205, 37, 50, 192, 15, 12, 201, 77, 147, 133, 72, 113, 84, 37, 50, 192, 15, 12, 201, 77, 147, 80, 5,
+			65, 84, 37, 50, 192, 15, 12, 201, 65, 54, 75, 60, 177, 77, 37, 50, 192, 15, 12, 201, 65, 35, 212, 61, 70, 80, 37, 50, 192, 15,
+			12, 201, 64, 243, 25, 73, 149, 13, 37, 50, 192, 15, 12, 201, 64, 20, 129, 80, 18, 212, 37, 50, 192, 15, 12, 201, 56, 84, 15, 80,
+			148, 212, 37, 50, 192, 15, 12, 201, 53, 84, 201, 44, 19, 148, 37, 50, 192, 15, 12, 201, 52, 244, 203, 61, 98, 84, 37, 50, 192, 15,
+			12, 201, 52, 85, 15, 16, 148, 212, 37, 50, 192, 15, 12, 201, 52, 84, 143, 88, 147, 135, 37, 50, 192, 15, 12, 201, 48, 16, 153, 72,
+			147, 148, 37, 50, 192, 15, 12, 201, 45, 144, 133, 72, 225, 84, 37, 50, 192, 15, 12, 201, 45, 38, 83, 80, 19, 12, 37, 50, 192, 15,
+			12, 201, 44, 244, 205, 60, 195, 199, 37, 50, 192, 15, 12, 201, 44, 148, 143, 52, 19, 148, 37, 50, 192, 15, 12, 201, 44, 21, 1, 65,
+			83, 20, 37, 50, 192, 15, 12, 201, 37, 52, 129, 20, 194, 84, 37, 50, 192, 15, 12, 201, 33, 148, 15, 80, 18, 212, 37, 50, 192, 15,
+			12, 201, 33, 145, 18, 60, 198, 84, 37, 50, 192, 15, 12, 201, 32, 148, 212, 60, 195, 199, 37, 50, 192, 15, 12, 201, 32, 84, 146, 56,
+			133, 84, 37, 50, 192, 15, 12, 201, 32, 83, 73, 13, 146, 204, 37, 50, 192, 15, 12, 201, 29, 32, 70, 60, 227, 205, 37, 50, 192, 15,
+			12, 201, 16, 149, 25, 72, 19, 66, 37, 50, 192, 15, 12, 201, 12, 243, 135, 60, 193, 83, 37, 50, 192, 15, 12, 201, 12, 86, 76, 60,
+			225, 83, 37, 50, 192, 15, 12, 201, 5, 3, 208, 48, 82, 212, 37, 50, 192, 15, 12, 201, 5, 3, 204, 60, 113, 84, 37, 50, 192, 15,
+			12, 201, 4, 224, 75, 60, 197, 84, 37, 50, 192, 15, 12, 201, 4, 193, 207, 72, 149, 13, 37, 50, 192, 15, 0, 11, 200, 89, 83, 11,
+			4, 226, 83, 165, 32, 15, 11, 200, 5, 32, 137, 81, 32, 71, 165, 32, 15, 11, 200, 8, 83, 133, 16, 144, 197, 72, 80, 68, 12, 201,
+			88, 84, 137, 24, 144, 197, 72, 147, 135, 15, 12, 201, 88, 19, 15, 72, 148, 197, 72, 147, 135, 15, 12, 201, 84, 67, 9, 12, 149, 5,
+			72, 147, 135, 15, 12, 201, 84, 65, 5, 48, 81, 197, 72, 147, 135, 15, 12, 201, 81, 32, 78, 76, 149, 5, 72, 147, 135, 15, 12, 201,
+			80, 83, 5, 88, 148, 197, 72, 147, 135, 15, 12, 201, 80, 82, 211, 81, 84, 133, 72, 147, 135, 15, 12, 201, 77, 80, 148, 72, 18, 5,
+			72, 147, 135, 15, 12, 201, 77, 80, 147, 36, 66, 69, 72, 147, 135, 15, 12, 201, 76, 177, 76, 21, 69, 5, 72, 147, 135, 15, 12, 201,
+			72, 85, 129, 48, 145, 5, 72, 147, 135, 15, 12, 201, 72, 85, 15, 84, 50, 5, 72, 147, 135, 15, 12, 201, 72, 84, 212, 37, 69, 69,
+			72, 147, 135, 15, 12, 201, 72, 82, 210, 85, 69, 5, 72, 147, 135, 15, 12, 201, 72, 81, 140, 20, 181, 5, 72, 147, 135, 15, 12, 201,
+			72, 81, 86, 4, 197, 69, 72, 147, 135, 15, 12, 201, 72, 20, 16, 61, 37, 5, 72, 147, 135, 15, 12, 201, 65, 35, 202, 20, 181, 5,
+			72, 147, 135, 15, 12, 201, 65, 34, 79, 72, 149, 5, 72, 147, 135, 15, 12, 201, 64, 243, 1, 72, 148, 197, 72, 147, 135, 15, 12, 201,
+			64, 84, 150, 21, 37, 5, 72, 147, 135, 15, 12, 201, 64, 84, 141, 37, 69, 5, 72, 147, 135, 15, 12, 201, 64, 16, 201, 24, 144, 197,
+			72, 147, 135, 15, 12, 201, 56, 22, 137, 24, 144, 197, 72, 147, 135, 15, 12, 201, 52, 241, 9, 24, 144, 197, 72, 147, 135, 15, 12, 201,
+			52, 82, 193, 56, 148, 197, 72, 147, 135, 15, 12, 201, 48, 21, 9, 56, 148, 197, 72, 147, 135, 15, 12, 201, 44, 244, 147, 21, 69, 5,
+			72, 147, 135, 15, 12, 201, 44, 244, 146, 84, 212, 5, 72, 147, 135, 15, 12, 201, 44, 243, 150, 21, 37, 5, 72, 147, 135, 15, 12, 201,
+			44, 243, 147, 81, 37, 69, 72, 147, 135, 15, 12, 201, 44, 243, 147, 80, 21, 5, 72, 147, 135, 15, 12, 201, 44, 243, 134, 37, 50, 197,
+			72, 147, 135, 15, 12, 201, 44, 243, 77, 37, 69, 5, 72, 147, 135, 15, 12, 201, 44, 243, 16, 61, 37, 5, 72, 147, 135, 15, 12, 201,
+			44, 243, 15, 56, 148, 197, 72, 147, 135, 15, 12, 201, 44, 241, 9, 24, 144, 197, 72, 147, 135, 15, 12, 201, 36, 229, 129, 48, 145, 5,
+			72, 147, 135, 15, 12, 201, 36, 229, 9, 52, 145, 5, 72, 147, 135, 15, 12, 201, 36, 228, 212, 37, 69, 69, 72, 147, 135, 15, 12, 201,
+			36, 225, 11, 61, 2, 69, 72, 147, 135, 15, 12, 201, 36, 70, 76, 48, 148, 197, 72, 147, 135, 15, 12, 201, 29, 37, 66, 48, 148, 197,
+			72, 147, 135, 15, 12, 201, 28, 20, 146, 61, 69, 5, 72, 147, 135, 15, 12, 201, 24, 197, 79, 72, 145, 5, 72, 147, 135, 15, 12, 201,
+			21, 85, 18, 60, 98, 69, 72, 147, 135, 15, 12, 201, 21, 81, 143, 72, 148, 197, 72, 147, 135, 15, 12, 201, 21, 66, 75, 21, 69, 5,
+			72, 147, 135, 15, 12, 201, 20, 97, 133, 45, 69, 69, 72, 147, 135, 15, 12, 201, 16, 148, 212, 72, 18, 5, 72, 147, 135, 15, 12, 201,
+			9, 81, 7, 21, 69, 5, 72, 147, 135, 15, 12, 201, 9, 34, 75, 21, 69, 5, 72, 147, 135, 15, 12, 201, 8, 245, 1, 56, 148, 197,
+			72, 147, 135, 15, 12, 201, 8, 243, 66, 5, 33, 5, 72, 147, 135, 15, 12, 201, 8, 147, 12, 21, 69, 5, 72, 147, 135, 15, 12, 201,
+			8, 20, 212, 5, 33, 5, 72, 147, 135, 15, 12, 201, 5, 53, 18, 36, 225, 197, 72, 147, 135, 15, 12, 201, 4, 229, 9, 44, 148, 197,
+			72, 147, 135, 15, 12, 201, 4, 229, 5, 16, 21, 5, 72, 147, 135, 15, 12, 201, 4, 211, 210, 80, 148, 197, 72, 147, 135, 15, 12, 201,
+			4, 48, 197, 57, 69, 69, 72, 147, 135, 15, 12, 201, 4, 36, 212, 72, 18, 5, 72, 147, 135, 15, 11, 200, 77, 84, 16, 61, 37, 5,
+			72, 80, 15, 11, 200, 36, 225, 19, 81, 81, 5, 72, 80, 15, 11, 200, 77, 64, 84, 36, 243, 133, 72, 80, 15, 11, 200, 72, 82, 210,
+			85, 69, 5, 72, 80, 15, 11, 200, 72, 20, 16, 61, 37, 5, 72, 80, 15, 11, 200, 64, 145, 205, 20, 229, 5, 72, 80, 15, 11, 200,
+			36, 229, 129, 48, 145, 5, 72, 80, 15, 11, 200, 28, 20, 146, 61, 69, 5, 72, 80, 15, 11, 200, 8, 241, 211, 80, 21, 133, 72, 80,
+			15, 11, 200, 8, 147, 199, 72, 17, 133, 72, 80, 15, 11, 200, 5, 82, 212, 36, 243, 133, 72, 80, 15, 11, 200, 65, 35, 211, 12, 83,
+			137, 84, 208, 15, 11, 200, 45, 84, 129, 80, 244, 137, 84, 208, 15, 11, 200, 28, 195, 211, 76, 20, 137, 84, 208, 15, 0, 9, 198, 24,
+			19, 148, 5, 50, 64, 15, 9, 198, 49, 241, 5, 72, 147, 135, 15, 8, 197, 74, 149, 133, 72, 144, 15, 0, 10, 199, 8, 149, 21, 52,
+			147, 169, 76, 15, 9, 198, 77, 10, 71, 21, 34, 64, 15, 9, 198, 45, 245, 140, 21, 34, 64, 15, 9, 198, 34, 147, 147, 21, 34, 64,
+			15, 9, 198, 32, 243, 79, 24, 243, 137, 15, 0, 10, 199, 36, 228, 197, 52, 147, 169, 72, 15, 10, 199, 45, 84, 141, 4, 113, 82, 36,
+			15, 7, 196, 33, 99, 210, 36, 15, 0, 28, 75, 44, 243, 134, 37, 35, 65, 56, 65, 82, 56, 80, 49, 108, 50, 83, 36, 34, 65, 6,
+			117, 50, 72, 110, 50, 13, 0, 11, 200, 77, 147, 80, 5, 66, 83, 165, 32, 15, 11, 200, 56, 20, 139, 61, 66, 83, 165, 32, 15, 11,
+			200, 52, 17, 206, 21, 66, 83, 165, 32, 15, 11, 200, 33, 148, 14, 61, 66, 83, 165, 32, 15, 12, 201, 8, 80, 82, 8, 82, 132, 56,
+			147, 135, 67, 12, 201, 81, 32, 86, 21, 53, 5, 72, 147, 135, 15, 12, 201, 81, 32, 86, 21, 36, 197, 72, 147, 135, 15, 12, 201, 77,
+			84, 208, 20, 225, 5, 72, 147, 135, 15, 12, 201, 77, 64, 84, 36, 243, 133, 72, 147, 135, 15, 12, 201, 76, 82, 214, 20, 228, 197, 72,
+			147, 135, 15, 12, 201, 76, 81, 205, 20, 229, 5, 72, 147, 135, 15, 12, 201, 72, 83, 1, 80, 149, 133, 72, 147, 135, 15, 12, 201, 72,
+			80, 75, 80, 149, 133, 72, 147, 135, 15, 12, 201, 65, 35, 204, 60, 225, 197, 72, 147, 135, 15, 12, 201, 64, 145, 205, 20, 229, 5, 72,
+			147, 135, 15, 12, 201, 52, 243, 137, 80, 244, 133, 72, 147, 135, 15, 12, 201, 44, 243, 147, 21, 37, 133, 72, 147, 135, 15, 12, 201, 44,
+			243, 134, 84, 225, 5, 72, 147, 135, 15, 12, 201, 44, 243, 80, 61, 53, 5, 72, 147, 135, 15, 12, 201, 44, 243, 77, 20, 229, 5, 72,
+			147, 135, 15, 12, 201, 36, 225, 19, 81, 81, 5, 72, 147, 135, 15, 12, 201, 36, 225, 18, 4, 225, 197, 72, 147, 135, 15, 12, 201, 36,
+			225, 7, 72, 21, 133, 72, 147, 135, 15, 12, 201, 24, 84, 141, 20, 229, 5, 72, 147, 135, 15, 12, 201, 21, 50, 193, 52, 245, 5, 72,
+			147, 135, 15, 12, 201, 20, 180, 203, 49, 81, 5, 72, 147, 135, 15, 12, 201, 16, 148, 212, 4, 224, 197, 72, 147, 135, 15, 12, 201, 16,
+			148, 208, 21, 33, 197, 72, 147, 135, 15, 12, 201, 16, 148, 203, 60, 229, 5, 72, 147, 135, 15, 12, 201, 16, 145, 148, 60, 225, 197, 72,
+			147, 135, 15, 12, 201, 16, 84, 193, 88, 245, 69, 72, 147, 135, 15, 12, 201, 16, 84, 18, 20, 50, 69, 72, 147, 135, 15, 12, 201, 16,
+			81, 197, 56, 84, 133, 72, 147, 135, 15, 12, 201, 16, 80, 197, 57, 68, 133, 72, 147, 135, 15, 12, 201, 8, 241, 211, 80, 21, 133, 72,
+			147, 135, 15, 12, 201, 8, 147, 199, 72, 17, 133, 72, 147, 135, 15, 12, 201, 8, 19, 12, 5, 53, 5, 72, 147, 135, 15, 12, 201, 4,
+			48, 197, 48, 84, 133, 72, 147, 135, 15, 11, 200, 48, 145, 197, 52, 17, 197, 72, 144, 15, 8, 197, 48, 144, 133, 72, 144, 15, 11, 200,
+			44, 20, 146, 61, 52, 197, 72, 144, 15, 11, 200, 9, 83, 148, 52, 17, 197, 72, 144, 15, 8, 197, 29, 84, 129, 52, 144, 15, 0, 9,
+			198, 88, 19, 11, 21, 34, 64, 15, 9, 198, 76, 243, 4, 21, 34, 64, 15, 9, 198, 65, 32, 76, 21, 34, 64, 15, 9, 198, 64, 147,
+			80, 21, 34, 64, 15, 9, 198, 64, 147, 12, 21, 34, 64, 15, 9, 198, 64, 19, 80, 21, 34, 64, 15, 9, 198, 52, 19, 20, 21, 34,
+			64, 15, 9, 198, 48, 245, 20, 21, 34, 64, 15, 12, 201, 45, 96, 78, 80, 85, 5, 61, 34, 64, 15, 12, 201, 44, 19, 77, 21, 32,
+			84, 21, 34, 64, 15, 9, 198, 33, 146, 204, 21, 34, 64, 15, 9, 198, 29, 34, 83, 21, 34, 64, 15, 9, 198, 28, 19, 12, 21, 34,
+			64, 15, 9, 198, 9, 145, 199, 21, 34, 64, 15, 9, 198, 9, 83, 20, 21, 34, 64, 15, 9, 198, 8, 21, 20, 21, 34, 64, 15, 9,
+			198, 77, 147, 80, 5, 66, 64, 15, 9, 198, 24, 20, 133, 77, 66, 64, 15, 9, 198, 17, 147, 129, 77, 66, 64, 15, 9, 198, 16, 83,
+			69, 57, 66, 64, 15, 9, 198, 33, 96, 66, 20, 128, 82, 15, 9, 198, 24, 244, 141, 84, 192, 82, 15, 7, 66, 16, 160, 21, 0, 47,
+			0, 31, 67, 64, 20, 128, 48, 121, 12, 115, 81, 89, 14, 6, 55, 35, 12, 68, 89, 0, 81, 101, 120, 99, 101, 108, 108, 101, 110, 99,
+			101, 32, 12, 201, 8, 80, 82, 8, 82, 132, 20, 196, 197, 67, 9, 198, 52, 243, 143, 80, 243, 137, 15, 9, 198, 52, 243, 143, 52, 19,
+			137, 15, 9, 198, 16, 144, 75, 72, 243, 137, 15, 9, 67, 32, 20, 128, 107, 121, 0, 76, 0, 9, 198, 65, 83, 12, 36, 213, 84, 15,
+			9, 198, 85, 67, 208, 37, 50, 192, 15, 9, 198, 32, 18, 84, 37, 50, 192, 15, 9, 198, 21, 35, 212, 37, 50, 192, 15, 9, 198, 5,
+			67, 205, 37, 50, 192, 15, 9, 198, 17, 147, 129, 52, 146, 192, 15, 0, 11, 200, 53, 150, 15, 52, 21, 15, 76, 80, 15, 9, 198, 65,
+			39, 208, 5, 32, 84, 15, 12, 4, 95, 49, 49, 111, 115, 55, 83, 72, 14, 0, 0, 0, 10, 199, 44, 244, 146, 20, 181, 21, 72, 15,
+			9, 198, 65, 39, 208, 5, 33, 82, 15, 9, 198, 65, 39, 198, 21, 33, 82, 15, 9, 198, 4, 211, 79, 56, 149, 77, 15, 6, 195, 40,
+			84, 128, 72, 0, 0, 8, 197, 56, 147, 194, 36, 80, 15, 11, 200, 81, 32, 75, 20, 245, 15, 52, 144, 15, 10, 199, 72, 84, 5, 48,
+			193, 78, 80, 15, 10, 199, 64, 84, 141, 4, 225, 78, 80, 15, 10, 199, 21, 128, 197, 48, 193, 78, 80, 15, 10, 199, 5, 52, 201, 77,
+			65, 78, 80, 15, 13, 202, 44, 19, 3, 37, 83, 78, 37, 68, 129, 80, 15, 13, 202, 12, 19, 3, 37, 83, 78, 37, 68, 129, 80, 15,
+			10, 199, 72, 84, 213, 49, 64, 78, 80, 15, 10, 199, 60, 36, 197, 73, 96, 78, 80, 15, 10, 199, 44, 243, 147, 60, 224, 78, 80, 15,
+			13, 69, 76, 195, 193, 56, 80, 89, 55, 125, 58, 50, 0, 0, 9, 66, 33, 32, 107, 117, 34, 0, 25, 12, 201, 88, 20, 133, 16, 82,
+			204, 5, 33, 82, 15, 9, 198, 44, 147, 95, 72, 148, 203, 15, 9, 198, 17, 243, 79, 56, 148, 203, 15, 10, 199, 77, 147, 143, 57, 147,
+			73, 44, 15, 0, 10, 67, 32, 21, 128, 107, 121, 40, 0, 49, 25, 67, 32, 243, 5, 107, 6, 39, 40, 55, 37, 50, 58, 4, 127, 50,
+			0, 82, 105, 110, 32, 111, 110, 101, 32, 11, 200, 80, 244, 15, 48, 241, 201, 76, 176, 15, 11, 200, 76, 86, 15, 48, 241, 201, 76, 176,
+			15, 11, 200, 64, 243, 25, 56, 84, 201, 76, 176, 15, 11, 200, 53, 149, 15, 48, 241, 201, 76, 176, 15, 11, 200, 52, 243, 143, 48, 241,
+			201, 76, 176, 15, 11, 200, 52, 147, 1, 56, 84, 201, 76, 176, 15, 11, 200, 52, 83, 1, 56, 84, 201, 76, 176, 15, 11, 200, 52, 19,
+			1, 8, 20, 137, 76, 176, 15, 11, 200, 20, 180, 207, 80, 84, 137, 76, 176, 15, 11, 200, 9, 38, 79, 48, 241, 201, 76, 176, 15, 11,
+			200, 8, 19, 19, 81, 148, 137, 76, 176, 15, 9, 198, 65, 35, 208, 72, 149, 77, 15, 0, 0, 12, 201, 80, 84, 141, 60, 116, 129, 24,
+			148, 203, 15, 12, 201, 80, 82, 206, 60, 180, 129, 80, 148, 203, 15, 12, 201, 76, 176, 78, 16, 147, 129, 88, 148, 203, 15, 12, 201, 76,
+			49, 78, 60, 116, 129, 24, 148, 203, 15, 12, 201, 72, 84, 18, 60, 116, 129, 24, 148, 203, 15, 12, 201, 72, 81, 143, 72, 210, 83, 80,
+			148, 203, 15, 12, 201, 64, 244, 142, 60, 116, 129, 24, 148, 203, 15, 12, 201, 64, 243, 25, 80, 82, 83, 80, 148, 203, 15, 12, 201, 64,
+			84, 211, 36, 210, 83, 80, 148, 203, 15, 12, 201, 56, 21, 137, 28, 21, 15, 72, 148, 203, 15, 12, 201, 52, 243, 143, 80, 82, 83, 80,
+			148, 203, 15, 12, 201, 52, 243, 129, 72, 178, 83, 80, 148, 203, 15, 12, 201, 52, 85, 15, 16, 243, 15, 28, 148, 203, 15, 12, 201, 52,
+			85, 1, 48, 197, 82, 28, 148, 203, 15, 12, 201, 52, 20, 212, 60, 67, 206, 80, 148, 203, 15, 12, 201, 45, 34, 83, 80, 243, 15, 28,
+			148, 203, 15, 12, 201, 44, 244, 133, 60, 116, 129, 24, 148, 203, 15, 12, 201, 44, 243, 150, 84, 196, 201, 88, 148, 203, 15, 12, 201, 44,
+			20, 132, 36, 243, 15, 28, 148, 203, 15, 12, 201, 36, 212, 5, 72, 21, 9, 88, 148, 203, 15, 12, 201, 33, 148, 15, 44, 243, 132, 72,
+			148, 203, 15, 12, 201, 33, 145, 18, 60, 116, 129, 24, 148, 203, 15, 12, 201, 33, 81, 213, 20, 227, 212, 80, 148, 203, 15, 12, 201, 32,
+			82, 211, 4, 209, 84, 72, 148, 203, 15, 12, 201, 24, 244, 130, 73, 145, 5, 72, 148, 203, 15, 12, 201, 24, 20, 141, 4, 49, 85, 80,
+			148, 203, 15, 12, 201, 24, 19, 1, 56, 114, 83, 80, 148, 203, 15, 12, 201, 20, 229, 21, 76, 144, 83, 80, 148, 203, 15, 12, 201, 20,
+			229, 15, 52, 243, 15, 28, 148, 203, 15, 12, 201, 16, 81, 129, 37, 66, 83, 80, 148, 203, 15, 7, 196, 52, 240, 137, 48, 15, 7, 196,
+			72, 81, 193, 48, 15, 7, 196, 36, 65, 65, 48, 15, 0, 9, 198, 88, 144, 146, 4, 99, 206, 15, 9, 198, 76, 245, 83, 4, 99, 206,
+			15, 10, 199, 28, 83, 198, 101, 50, 83, 44, 15, 10, 199, 16, 147, 206, 101, 50, 83, 44, 15, 10, 199, 5, 85, 1, 72, 178, 83, 44,
+			15, 0, 20, 67, 4, 195, 5, 117, 55, 112, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 10, 199, 81, 32, 68, 37, 66, 79,
+			56, 15, 10, 199, 76, 83, 5, 45, 66, 79, 56, 15, 10, 199, 44, 243, 12, 5, 66, 79, 56, 15, 10, 199, 29, 32, 68, 5, 66, 79,
+			56, 15, 9, 198, 76, 218, 82, 21, 34, 64, 15, 9, 198, 76, 202, 83, 21, 34, 64, 15, 9, 198, 53, 243, 11, 21, 34, 64, 15, 9,
+			198, 49, 242, 203, 21, 34, 64, 15, 9, 198, 25, 244, 135, 21, 34, 64, 15, 9, 198, 80, 83, 5, 64, 21, 9, 15, 9, 198, 21, 2,
+			90, 60, 245, 9, 15, 17, 70, 105, 80, 195, 32, 147, 137, 89, 40, 49, 6, 37, 50, 37, 0, 15, 9, 198, 49, 81, 15, 52, 19, 137,
+			15, 4, 193, 144, 43, 0, 10, 199, 44, 243, 132, 37, 67, 210, 36, 15, 8, 197, 76, 17, 146, 4, 224, 16, 0, 11, 200, 48, 145, 66,
+			32, 21, 133, 72, 144, 15, 11, 200, 8, 241, 200, 60, 193, 5, 72, 144, 15, 12, 201, 76, 83, 133, 28, 19, 5, 76, 148, 203, 15, 12,
+			201, 72, 81, 140, 20, 181, 15, 72, 148, 203, 15, 12, 201, 52, 83, 147, 40, 85, 137, 44, 148, 203, 15, 12, 201, 48, 243, 135, 60, 32,
+			82, 16, 148, 203, 15, 12, 201, 44, 243, 77, 37, 52, 193, 72, 148, 203, 15, 12, 201, 20, 180, 197, 53, 3, 1, 72, 148, 203, 15, 12,
+			201, 16, 149, 137, 56, 21, 15, 72, 148, 203, 15, 12, 201, 4, 69, 143, 44, 21, 15, 72, 148, 203, 15, 11, 200, 24, 147, 8, 5, 35,
+			79, 56, 144, 15, 9, 198, 56, 244, 141, 4, 227, 128, 15, 0, 25, 73, 77, 21, 65, 72, 81, 1, 56, 49, 78, 89, 49, 58, 6, 115,
+			108, 72, 117, 12, 50, 89, 14, 50, 0, 12, 201, 64, 19, 132, 20, 176, 71, 21, 34, 64, 15, 12, 201, 28, 83, 146, 20, 208, 76, 21,
+			34, 64, 15, 12, 201, 4, 180, 207, 56, 243, 69, 81, 34, 64, 15, 10, 199, 80, 18, 206, 20, 211, 9, 28, 15, 10, 199, 24, 244, 147,
+			60, 227, 9, 28, 15, 12, 201, 124, 118, 80, 80, 243, 15, 28, 148, 203, 15, 11, 200, 24, 20, 195, 37, 53, 15, 36, 64, 15, 8, 197,
+			53, 84, 197, 4, 192, 15, 0, 10, 199, 16, 85, 15, 56, 21, 15, 72, 15, 7, 196, 45, 84, 15, 56, 15, 9, 198, 64, 148, 212, 4,
+			50, 69, 15, 9, 198, 5, 84, 208, 36, 50, 69, 15, 9, 198, 53, 149, 15, 52, 19, 137, 15, 6, 195, 52, 19, 137, 15, 0, 9, 198,
+			81, 32, 80, 64, 148, 212, 15, 9, 198, 80, 83, 143, 72, 148, 212, 15, 9, 198, 52, 82, 133, 72, 148, 212, 15, 9, 198, 48, 21, 9,
+			56, 148, 212, 15, 9, 198, 44, 243, 15, 72, 148, 212, 15, 9, 198, 33, 83, 65, 56, 148, 212, 15, 9, 198, 28, 83, 210, 28, 148, 212,
+			15, 9, 198, 24, 83, 73, 56, 148, 212, 15, 9, 198, 20, 212, 9, 72, 148, 212, 15, 9, 198, 9, 81, 4, 32, 148, 212, 15, 9, 198,
+			8, 18, 83, 76, 148, 212, 15, 9, 198, 4, 197, 18, 84, 148, 212, 15, 9, 198, 4, 196, 9, 56, 148, 212, 15, 9, 198, 4, 181, 9,
+			88, 148, 212, 15, 10, 199, 164, 213, 30, 48, 83, 9, 28, 15, 9, 198, 52, 243, 135, 60, 194, 68, 15, 9, 198, 77, 240, 153, 56, 149,
+			0, 15, 9, 198, 77, 144, 129, 72, 149, 0, 15, 9, 198, 52, 81, 193, 8, 149, 0, 15, 9, 198, 44, 147, 15, 8, 149, 0, 15, 8,
+			197, 20, 228, 201, 4, 224, 16, 0, 7, 196, 44, 19, 149, 80, 15, 9, 198, 16, 144, 75, 72, 243, 128, 15, 9, 198, 76, 82, 212, 36,
+			243, 128, 15, 9, 198, 72, 82, 212, 36, 243, 128, 15, 9, 198, 64, 244, 148, 36, 243, 128, 15, 9, 198, 48, 82, 212, 36, 243, 128, 15,
+			9, 198, 24, 146, 212, 36, 243, 128, 15, 9, 198, 24, 18, 212, 36, 243, 128, 15, 9, 198, 20, 66, 84, 36, 243, 128, 15, 9, 198, 16,
+			146, 212, 36, 243, 128, 15, 11, 200, 58, 145, 20, 165, 33, 148, 36, 112, 15, 11, 200, 64, 83, 1, 72, 115, 206, 36, 80, 15, 11, 200,
+			65, 34, 86, 36, 193, 71, 36, 80, 15, 7, 196, 48, 85, 137, 80, 15, 9, 198, 52, 83, 1, 56, 147, 128, 15, 9, 198, 52, 22, 129,
+			72, 147, 128, 15, 17, 70, 12, 128, 71, 72, 147, 128, 91, 35, 81, 34, 6, 115, 68, 0, 15, 11, 200, 89, 83, 11, 4, 226, 83, 52,
+			80, 15, 11, 200, 76, 243, 9, 65, 50, 83, 52, 80, 15, 11, 200, 72, 85, 77, 5, 66, 83, 52, 80, 15, 11, 200, 64, 84, 211, 36,
+			210, 83, 52, 80, 15, 11, 200, 52, 244, 141, 60, 226, 83, 52, 80, 15, 11, 200, 52, 244, 134, 36, 226, 83, 52, 80, 15, 11, 200, 52,
+			243, 143, 80, 82, 83, 52, 80, 15, 11, 200, 52, 243, 129, 72, 178, 83, 52, 80, 15, 11, 200, 52, 241, 5, 72, 226, 83, 52, 80, 15,
+			11, 200, 52, 20, 207, 12, 130, 83, 52, 80, 15, 11, 200, 45, 83, 20, 85, 34, 83, 52, 80, 15, 11, 200, 44, 243, 77, 84, 226, 83,
+			52, 80, 15, 11, 200, 40, 84, 213, 37, 66, 83, 52, 80, 15, 11, 200, 32, 148, 212, 61, 34, 83, 52, 80, 15, 11, 200, 16, 241, 205,
+			5, 66, 83, 52, 80, 15, 11, 200, 16, 84, 208, 61, 66, 83, 52, 80, 15, 11, 200, 16, 81, 129, 37, 66, 83, 52, 80, 15, 9, 198,
+			52, 86, 9, 12, 19, 128, 15, 9, 198, 44, 19, 148, 36, 19, 128, 15, 9, 198, 32, 18, 84, 36, 19, 128, 15, 9, 198, 29, 82, 78,
+			20, 19, 128, 15, 9, 198, 8, 245, 19, 92, 19, 128, 15, 7, 196, 76, 148, 129, 80, 15, 7, 196, 16, 80, 129, 80, 15, 0, 11, 200,
+			77, 68, 143, 8, 244, 203, 61, 0, 15, 12, 201, 164, 161, 66, 48, 146, 203, 20, 194, 71, 15, 12, 201, 76, 83, 22, 26, 147, 7, 20,
+			194, 71, 15, 12, 201, 48, 85, 15, 64, 202, 83, 20, 194, 71, 15, 10, 199, 25, 34, 80, 61, 53, 9, 28, 15, 12, 201, 24, 244, 139,
+			73, 243, 139, 20, 194, 71, 15, 12, 201, 9, 42, 83, 80, 103, 204, 16, 145, 192, 15, 9, 198, 44, 20, 132, 36, 19, 0, 15, 0, 9,
+			198, 64, 81, 9, 13, 84, 133, 15, 9, 198, 9, 35, 195, 33, 84, 133, 15, 7, 196, 72, 85, 21, 72, 15, 10, 199, 72, 81, 146, 4,
+			181, 15, 72, 15, 10, 199, 65, 35, 202, 20, 181, 15, 72, 15, 10, 199, 48, 16, 143, 72, 21, 15, 72, 15, 10, 199, 16, 81, 140, 20,
+			181, 15, 72, 15, 12, 201, 36, 211, 79, 72, 19, 9, 80, 85, 0, 15, 9, 198, 77, 64, 84, 84, 84, 133, 15, 9, 198, 76, 178, 84,
+			76, 84, 133, 15, 9, 198, 65, 83, 139, 80, 84, 133, 15, 9, 198, 64, 195, 205, 8, 84, 133, 15, 9, 198, 64, 148, 129, 80, 84, 133,
+			15, 9, 198, 64, 147, 15, 80, 84, 133, 15, 9, 198, 64, 20, 129, 16, 84, 133, 15, 9, 198, 64, 19, 133, 48, 84, 133, 15, 9, 198,
+			57, 80, 78, 12, 84, 133, 15, 9, 198, 52, 20, 131, 32, 84, 133, 15, 9, 198, 45, 38, 80, 80, 84, 133, 15, 9, 198, 44, 19, 143,
+			56, 84, 133, 15, 9, 198, 29, 83, 77, 36, 84, 133, 15, 9, 198, 28, 83, 133, 72, 84, 133, 15, 9, 198, 17, 81, 76, 48, 84, 133,
+			15, 9, 198, 16, 80, 149, 80, 84, 133, 15, 9, 198, 9, 35, 206, 104, 84, 133, 15, 9, 198, 9, 35, 195, 32, 84, 133, 15, 9, 198,
+			8, 18, 129, 16, 84, 133, 15, 9, 198, 5, 96, 78, 12, 84, 133, 15, 9, 198, 5, 34, 201, 88, 84, 133, 15, 10, 199, 61, 97, 82,
+			34, 148, 137, 28, 15, 10, 199, 28, 84, 203, 124, 101, 9, 28, 15, 0, 20, 71, 48, 147, 79, 85, 50, 78, 20, 55, 111, 65, 126, 89,
+			6, 37, 50, 14, 0, 15, 12, 201, 125, 33, 83, 45, 243, 132, 21, 34, 64, 15, 9, 198, 52, 20, 207, 56, 149, 0, 15, 9, 198, 60,
+			35, 9, 28, 21, 0, 15, 0, 8, 197, 44, 244, 147, 165, 32, 15, 8, 197, 49, 244, 201, 60, 224, 15, 9, 198, 72, 84, 1, 72, 84,
+			128, 15, 9, 198, 64, 17, 201, 56, 84, 128, 15, 10, 199, 52, 19, 169, 89, 33, 82, 20, 15, 9, 198, 45, 98, 84, 80, 84, 128, 15,
+			9, 198, 40, 243, 137, 76, 84, 128, 15, 9, 198, 36, 225, 9, 44, 84, 128, 15, 9, 198, 28, 195, 211, 76, 84, 128, 15, 9, 198, 8,
+			20, 146, 36, 84, 128, 15, 9, 198, 4, 33, 9, 12, 84, 128, 15, 11, 200, 53, 244, 139, 89, 244, 132, 36, 112, 15, 11, 200, 49, 244,
+			197, 89, 244, 132, 36, 112, 15, 7, 196, 32, 16, 137, 80, 15, 7, 196, 60, 35, 1, 80, 15, 9, 198, 88, 81, 197, 80, 20, 128, 15,
+			0, 12, 201, 36, 212, 18, 61, 98, 83, 5, 67, 210, 15, 9, 198, 81, 34, 76, 48, 147, 206, 15, 9, 198, 4, 64, 80, 80, 147, 206,
+			15, 9, 198, 45, 84, 129, 80, 83, 0, 15, 9, 198, 26, 147, 137, 44, 148, 203, 15, 9, 198, 20, 198, 83, 124, 148, 203, 15, 9, 198,
+			5, 32, 77, 124, 148, 203, 15, 0, 9, 198, 76, 145, 206, 4, 202, 82, 15, 9, 198, 12, 130, 75, 4, 234, 82, 15, 12, 201, 64, 20,
+			129, 76, 149, 15, 48, 241, 201, 15, 12, 201, 21, 2, 68, 20, 210, 79, 48, 241, 201, 15, 12, 201, 16, 144, 76, 20, 181, 15, 48, 241,
+			201, 15, 10, 199, 88, 144, 146, 5, 66, 79, 56, 15, 10, 199, 52, 145, 210, 5, 66, 79, 56, 15, 10, 199, 44, 241, 206, 37, 66, 79,
+			56, 15, 10, 199, 44, 20, 142, 5, 66, 79, 56, 15, 12, 201, 77, 1, 67, 36, 19, 9, 80, 85, 0, 15, 12, 201, 64, 244, 21, 48,
+			20, 137, 80, 85, 0, 15, 12, 201, 56, 85, 84, 72, 19, 9, 80, 85, 0, 15, 12, 201, 53, 85, 1, 8, 147, 9, 80, 85, 0, 15,
+			0, 26, 74, 77, 21, 65, 72, 81, 1, 56, 49, 82, 20, 89, 49, 58, 6, 115, 108, 72, 117, 12, 50, 89, 108, 112, 0, 9, 198, 77,
+			64, 84, 37, 53, 0, 15, 11, 200, 81, 32, 78, 76, 149, 9, 60, 224, 15, 11, 200, 64, 84, 134, 20, 181, 9, 60, 224, 15, 11, 200,
+			44, 243, 150, 20, 181, 9, 60, 224, 15, 11, 200, 44, 243, 135, 21, 53, 9, 60, 224, 15, 11, 200, 44, 243, 134, 20, 181, 9, 60, 224,
+			15, 11, 200, 44, 21, 137, 80, 21, 9, 60, 224, 15, 11, 200, 37, 36, 137, 80, 21, 9, 60, 224, 15, 11, 200, 36, 226, 213, 8, 21,
+			9, 60, 224, 15, 11, 200, 36, 226, 1, 48, 21, 9, 60, 224, 15, 11, 200, 29, 32, 68, 84, 21, 9, 60, 224, 15, 11, 200, 28, 83,
+			73, 56, 21, 9, 60, 224, 15, 11, 200, 20, 210, 71, 72, 21, 9, 60, 224, 15, 11, 200, 16, 149, 137, 56, 21, 9, 60, 224, 15, 11,
+			200, 16, 81, 9, 44, 21, 9, 60, 224, 15, 11, 200, 5, 52, 9, 72, 21, 9, 60, 224, 15, 11, 200, 4, 113, 210, 21, 52, 201, 60,
+			224, 15, 13, 202, 77, 80, 147, 80, 19, 148, 37, 97, 82, 20, 15, 13, 202, 72, 85, 143, 49, 85, 9, 60, 225, 82, 20, 15, 13, 202,
+			64, 84, 147, 64, 82, 212, 37, 97, 82, 20, 15, 13, 202, 44, 243, 80, 48, 147, 69, 57, 65, 82, 20, 15, 13, 202, 36, 228, 212, 73,
+			83, 69, 57, 65, 82, 20, 15, 11, 200, 8, 83, 133, 16, 146, 212, 36, 224, 15, 0, 11, 200, 20, 208, 143, 84, 50, 21, 72, 80, 15,
+			11, 200, 81, 35, 205, 64, 85, 5, 72, 80, 15, 11, 200, 44, 243, 131, 21, 37, 5, 72, 80, 15, 11, 200, 29, 34, 77, 5, 52, 197,
+			72, 80, 15, 11, 200, 21, 66, 75, 21, 69, 5, 72, 80, 15, 11, 200, 9, 81, 7, 21, 69, 5, 72, 80, 15, 11, 200, 9, 34, 75,
+			21, 69, 5, 72, 80, 15, 12, 201, 81, 35, 212, 76, 178, 83, 80, 148, 203, 15, 12, 201, 80, 84, 141, 61, 53, 1, 80, 148, 203, 15,
+			12, 201, 80, 84, 141, 60, 209, 84, 72, 148, 203, 15, 12, 201, 77, 65, 82, 20, 241, 143, 56, 148, 203, 15, 12, 201, 77, 65, 78, 60,
+			116, 129, 24, 148, 203, 15, 12, 201, 60, 36, 203, 85, 32, 78, 80, 148, 203, 15, 12, 201, 52, 246, 129, 52, 34, 81, 84, 148, 203, 15,
+			12, 201, 52, 240, 193, 52, 34, 81, 84, 148, 203, 15, 12, 201, 52, 225, 77, 61, 65, 75, 56, 148, 203, 15, 12, 201, 36, 211, 85, 56,
+			243, 15, 28, 148, 203, 15, 12, 201, 32, 84, 143, 77, 68, 129, 80, 148, 203, 15, 12, 201, 25, 85, 21, 72, 243, 15, 28, 148, 203, 15,
+			12, 201, 24, 147, 8, 5, 35, 79, 56, 148, 203, 15, 12, 201, 21, 67, 143, 12, 83, 148, 72, 148, 203, 15, 12, 201, 21, 50, 201, 52,
+			243, 15, 28, 148, 203, 15, 12, 201, 20, 118, 80, 80, 243, 15, 28, 148, 203, 15, 12, 201, 16, 83, 132, 72, 243, 15, 28, 148, 203, 15,
+			12, 201, 13, 149, 15, 64, 192, 83, 52, 148, 203, 15, 12, 201, 4, 178, 213, 76, 21, 9, 88, 148, 203, 15, 9, 68, 48, 85, 133, 48,
+			21, 0, 47, 12, 4, 95, 49, 48, 111, 47, 37, 14, 50, 14, 0, 0, 9, 198, 81, 34, 75, 36, 234, 83, 15, 9, 198, 72, 83, 9,
+			28, 154, 83, 15, 9, 198, 53, 84, 203, 84, 202, 83, 15, 9, 198, 52, 19, 9, 12, 154, 83, 15, 9, 198, 44, 21, 133, 72, 234, 83,
+			15, 9, 198, 36, 225, 197, 56, 154, 83, 15, 9, 198, 29, 32, 78, 84, 202, 83, 15, 9, 198, 4, 208, 137, 80, 154, 83, 15, 15, 204,
+			44, 243, 147, 81, 37, 75, 80, 149, 137, 80, 85, 0, 15, 13, 202, 65, 39, 208, 61, 50, 84, 36, 243, 133, 48, 15, 9, 198, 61, 34,
+			206, 164, 148, 203, 15, 9, 198, 32, 80, 146, 124, 148, 203, 15, 6, 195, 85, 34, 78, 15, 10, 199, 60, 36, 212, 21, 68, 137, 44, 15,
+			10, 199, 52, 85, 1, 24, 244, 137, 44, 15, 0, 9, 198, 16, 144, 71, 56, 244, 197, 15, 10, 199, 72, 81, 21, 45, 66, 79, 56, 15,
+			10, 199, 61, 1, 82, 5, 66, 79, 56, 15, 10, 199, 20, 208, 78, 5, 66, 79, 56, 15, 11, 200, 81, 148, 9, 76, 84, 137, 56, 112,
+			15, 11, 200, 81, 37, 78, 44, 84, 137, 56, 112, 15, 11, 200, 81, 32, 75, 80, 84, 137, 56, 112, 15, 11, 200, 77, 64, 71, 56, 84,
+			137, 56, 112, 15, 11, 200, 65, 83, 139, 80, 84, 137, 56, 112, 15, 11, 200, 61, 33, 9, 56, 84, 137, 56, 112, 15, 11, 200, 60, 178,
+			213, 64, 84, 137, 56, 112, 15, 11, 200, 57, 80, 78, 12, 84, 137, 56, 112, 15, 11, 200, 45, 96, 68, 72, 84, 137, 56, 112, 15, 11,
+			200, 44, 20, 212, 72, 84, 137, 56, 112, 15, 11, 200, 36, 243, 137, 76, 84, 137, 56, 112, 15, 11, 200, 29, 83, 77, 36, 84, 137, 56,
+			112, 15, 11, 200, 29, 37, 78, 16, 84, 137, 56, 112, 15, 11, 200, 21, 64, 66, 48, 84, 137, 56, 112, 15, 11, 200, 20, 225, 193, 28,
+			84, 137, 56, 112, 15, 11, 200, 20, 213, 76, 28, 84, 137, 56, 112, 15, 11, 200, 16, 82, 213, 64, 84, 137, 56, 112, 15, 11, 200, 12,
+			130, 70, 72, 84, 137, 56, 112, 15, 11, 200, 5, 97, 82, 80, 84, 137, 56, 112, 15, 11, 200, 4, 227, 143, 80, 84, 137, 56, 112, 15,
+			9, 198, 20, 180, 197, 28, 84, 197, 15, 0, 9, 198, 12, 83, 12, 37, 53, 0, 15, 10, 199, 8, 150, 129, 73, 33, 82, 36, 15, 0,
+			8, 197, 8, 147, 208, 76, 144, 15, 12, 201, 88, 145, 84, 56, 19, 69, 76, 148, 203, 15, 12, 201, 85, 53, 82, 64, 21, 15, 72, 148,
+			203, 15, 12, 201, 81, 83, 85, 49, 69, 65, 72, 148, 203, 15, 12, 201, 77, 80, 138, 20, 181, 9, 88, 148, 203, 15, 12, 201, 77, 65,
+			84, 61, 50, 207, 64, 148, 203, 15, 12, 201, 76, 82, 83, 52, 243, 15, 28, 148, 203, 15, 12, 201, 72, 80, 201, 80, 21, 9, 88, 148,
+			203, 15, 12, 201, 64, 243, 25, 12, 83, 148, 72, 148, 203, 15, 12, 201, 64, 84, 137, 77, 64, 76, 80, 148, 203, 15, 12, 201, 64, 84,
+			137, 64, 21, 5, 80, 148, 203, 15, 12, 201, 52, 243, 9, 56, 243, 15, 28, 148, 203, 15, 12, 201, 52, 146, 210, 61, 50, 207, 64, 148,
+			203, 15, 12, 201, 52, 18, 210, 61, 50, 207, 64, 148, 203, 15, 12, 201, 44, 244, 205, 60, 224, 85, 80, 148, 203, 15, 12, 201, 13, 149,
+			15, 28, 83, 133, 80, 148, 203, 15, 11, 68, 24, 147, 129, 48, 20, 36, 89, 36, 0, 11, 200, 80, 82, 206, 60, 180, 129, 80, 144, 15,
+			11, 200, 64, 197, 84, 60, 180, 129, 80, 144, 15, 7, 196, 48, 16, 137, 48, 15, 7, 196, 80, 243, 129, 48, 15, 7, 196, 44, 19, 129,
+			48, 15, 7, 196, 24, 147, 129, 48, 15, 7, 196, 8, 19, 129, 48, 15, 0, 9, 198, 25, 85, 21, 73, 83, 64, 15, 9, 198, 20, 198,
+			83, 37, 83, 64, 15, 9, 198, 16, 145, 206, 37, 64, 82, 15, 9, 198, 65, 35, 204, 21, 64, 82, 15, 0, 10, 199, 4, 66, 149, 56,
+			181, 21, 72, 15, 12, 201, 64, 242, 78, 80, 147, 12, 37, 53, 0, 15, 9, 198, 80, 83, 203, 72, 21, 9, 15, 0, 9, 198, 104, 18,
+			82, 37, 50, 192, 15, 9, 198, 76, 244, 130, 37, 50, 192, 15, 9, 198, 76, 84, 130, 37, 50, 192, 15, 10, 199, 44, 148, 143, 52, 19,
+			148, 36, 15, 0, 10, 199, 24, 244, 146, 124, 65, 82, 36, 15, 7, 196, 80, 147, 73, 16, 15, 9, 198, 44, 20, 129, 8, 147, 128, 15,
+			9, 198, 8, 18, 18, 4, 147, 128, 15, 9, 198, 77, 3, 206, 80, 19, 128, 16, 16, 71, 12, 133, 82, 12, 130, 76, 48, 76, 132, 12,
+			91, 111, 55, 0, 0, 12, 201, 81, 32, 78, 77, 50, 210, 36, 33, 82, 15, 12, 201, 45, 38, 80, 80, 241, 210, 4, 97, 82, 15, 11,
+			200, 25, 148, 150, 125, 34, 197, 72, 144, 15, 11, 200, 25, 34, 84, 124, 226, 197, 72, 144, 15, 0, 27, 67, 73, 80, 128, 51, 6, 126,
+			71, 15, 108, 15, 89, 72, 6, 126, 71, 0, 82, 111, 103, 32, 115, 116, 117, 98, 32, 9, 198, 65, 39, 205, 5, 69, 82, 15, 11, 200,
+			80, 84, 141, 36, 227, 204, 60, 112, 15, 11, 200, 52, 85, 5, 61, 35, 204, 60, 112, 15, 9, 198, 53, 240, 78, 17, 33, 82, 15, 9,
+			198, 29, 244, 212, 21, 33, 82, 15, 0, 12, 201, 45, 103, 210, 84, 192, 78, 80, 84, 137, 15, 9, 198, 76, 84, 135, 20, 229, 0, 15,
+			12, 201, 65, 35, 211, 80, 149, 21, 21, 33, 84, 15, 12, 201, 64, 84, 137, 4, 194, 83, 21, 33, 84, 15, 12, 201, 44, 243, 134, 20,
+			65, 82, 21, 33, 84, 15, 12, 201, 36, 229, 5, 72, 84, 211, 21, 33, 84, 15, 12, 201, 24, 147, 9, 64, 83, 147, 21, 33, 84, 15,
+			12, 201, 16, 148, 211, 20, 210, 78, 21, 33, 84, 15, 12, 201, 16, 85, 5, 72, 210, 78, 21, 33, 84, 15, 0, 12, 201, 72, 81, 201,
+			77, 68, 129, 81, 84, 128, 15, 12, 201, 56, 243, 69, 56, 179, 1, 81, 84, 128, 15, 12, 201, 36, 229, 5, 56, 64, 78, 81, 84, 128,
+			15, 12, 201, 24, 195, 211, 45, 83, 1, 81, 84, 128, 15, 14, 203, 64, 192, 84, 80, 83, 147, 48, 17, 197, 72, 144, 15, 10, 199, 72,
+			84, 201, 77, 65, 78, 80, 15, 10, 199, 65, 35, 208, 60, 225, 78, 80, 15, 10, 199, 44, 243, 148, 36, 225, 78, 80, 15, 10, 199, 44,
+			243, 147, 84, 193, 78, 80, 15, 10, 199, 44, 243, 80, 60, 225, 78, 80, 15, 10, 199, 20, 180, 208, 60, 225, 78, 80, 15, 10, 199, 16,
+			148, 208, 60, 225, 78, 80, 15, 13, 202, 76, 83, 22, 12, 83, 148, 72, 84, 133, 80, 15, 16, 205, 56, 21, 18, 37, 83, 66, 36, 176,
+			82, 8, 243, 129, 80, 15, 10, 199, 77, 1, 75, 84, 192, 78, 80, 15, 10, 199, 36, 211, 73, 29, 32, 78, 80, 15, 10, 199, 12, 83,
+			5, 9, 32, 78, 80, 15, 10, 199, 5, 36, 133, 77, 64, 78, 80, 15, 0, 15, 66, 25, 128, 83, 108, 36, 81, 89, 36, 65, 48, 13,
+			55, 0, 12, 201, 44, 243, 77, 4, 225, 1, 57, 69, 82, 15, 9, 198, 76, 176, 78, 76, 147, 206, 15, 9, 198, 36, 225, 149, 76, 147,
+			206, 15, 9, 198, 21, 128, 201, 76, 147, 206, 15, 12, 201, 81, 32, 78, 76, 98, 71, 85, 33, 82, 15, 12, 201, 60, 212, 212, 73, 82,
+			212, 85, 33, 82, 15, 12, 201, 72, 84, 212, 73, 82, 212, 85, 33, 82, 15, 12, 201, 45, 96, 75, 76, 19, 22, 21, 33, 82, 15, 12,
+			201, 4, 229, 9, 12, 128, 77, 9, 33, 82, 15, 9, 198, 124, 118, 80, 80, 148, 203, 15, 10, 199, 64, 19, 133, 29, 148, 137, 44, 15,
+			10, 199, 32, 243, 73, 48, 85, 9, 44, 15, 10, 199, 16, 144, 76, 20, 181, 9, 44, 15, 0, 10, 199, 76, 82, 210, 21, 66, 79, 56,
+			15, 10, 199, 25, 83, 132, 5, 66, 79, 56, 15, 11, 200, 88, 148, 143, 48, 241, 201, 76, 176, 15, 11, 200, 80, 83, 5, 24, 243, 137,
+			76, 176, 15, 11, 200, 73, 83, 143, 48, 241, 201, 76, 176, 15, 11, 200, 60, 194, 71, 5, 34, 201, 76, 176, 15, 11, 200, 53, 146, 207,
+			48, 241, 201, 76, 176, 15, 11, 200, 44, 20, 22, 21, 33, 9, 76, 176, 15, 11, 200, 36, 65, 79, 48, 241, 201, 76, 176, 15, 11, 200,
+			24, 147, 15, 48, 241, 201, 76, 176, 15, 11, 200, 16, 83, 65, 28, 241, 201, 76, 176, 15, 9, 198, 36, 212, 5, 72, 149, 77, 15, 11,
+			200, 77, 148, 212, 20, 208, 84, 36, 176, 15, 11, 200, 57, 83, 73, 76, 208, 84, 36, 176, 15, 11, 200, 20, 208, 140, 20, 208, 84, 36,
+			176, 15, 11, 200, 16, 148, 12, 60, 208, 84, 36, 176, 15, 16, 73, 52, 17, 5, 52, 242, 83, 20, 195, 5, 21, 102, 114, 0, 47, 10,
+			67, 16, 145, 192, 72, 122, 57, 0, 76, 10, 3, 226, 130, 172, 36, 40, 34, 39, 0, 0, 11, 200, 4, 68, 207, 73, 5, 9, 60, 224,
+			15, 0, 12, 201, 80, 83, 5, 44, 147, 133, 80, 148, 203, 15, 12, 201, 77, 147, 12, 60, 114, 83, 80, 148, 203, 15, 12, 201, 76, 21,
+			68, 36, 20, 129, 8, 148, 203, 15, 12, 201, 65, 35, 194, 48, 83, 65, 80, 148, 203, 15, 12, 201, 64, 243, 9, 80, 243, 15, 28, 148,
+			203, 15, 12, 201, 64, 197, 84, 60, 180, 129, 80, 148, 203, 15, 12, 201, 56, 81, 5, 73, 48, 75, 76, 148, 203, 15, 12, 201, 52, 147,
+			133, 72, 19, 15, 28, 148, 203, 15, 12, 201, 52, 84, 207, 64, 245, 1, 52, 148, 203, 15, 12, 201, 45, 33, 77, 48, 243, 15, 28, 148,
+			203, 15, 12, 201, 44, 148, 143, 65, 32, 75, 80, 148, 203, 15, 12, 201, 44, 20, 148, 60, 116, 129, 24, 148, 203, 15, 12, 201, 36, 225,
+			15, 44, 147, 133, 76, 148, 203, 15, 12, 201, 36, 212, 5, 72, 21, 15, 72, 148, 203, 15, 12, 201, 21, 50, 193, 80, 243, 15, 28, 148,
+			203, 15, 7, 196, 64, 81, 1, 48, 15, 7, 196, 52, 241, 1, 48, 15, 7, 196, 5, 33, 65, 48, 15, 13, 4, 95, 49, 50, 111, 47,
+			108, 55, 83, 72, 14, 0, 0, 9, 198, 76, 179, 210, 64, 147, 206, 15, 9, 198, 13, 244, 193, 72, 148, 203, 15, 10, 199, 52, 83, 147,
+			40, 85, 137, 44, 15, 0, 10, 67, 20, 115, 133, 122, 57, 50, 14, 0, 10, 199, 49, 82, 211, 5, 66, 79, 56, 15, 10, 199, 36, 210,
+			84, 5, 66, 79, 56, 15, 10, 199, 24, 195, 212, 5, 66, 79, 56, 15, 10, 199, 16, 84, 197, 73, 66, 79, 56, 15, 10, 199, 4, 114,
+			84, 5, 66, 79, 56, 15, 10, 199, 24, 83, 129, 12, 85, 9, 56, 15, 9, 198, 164, 181, 77, 20, 226, 64, 15, 11, 67, 16, 147, 133,
+			72, 6, 37, 50, 14, 0, 11, 67, 52, 147, 133, 65, 6, 37, 50, 14, 0, 10, 67, 40, 81, 192, 57, 121, 57, 0, 76, 0, 7, 196,
+			20, 193, 71, 36, 15, 10, 199, 72, 17, 9, 60, 99, 206, 36, 15, 16, 205, 77, 69, 66, 8, 82, 233, 8, 147, 135, 20, 228, 197, 72,
+			15, 0, 12, 201, 48, 19, 135, 60, 32, 82, 16, 148, 203, 15, 12, 201, 44, 243, 147, 60, 224, 78, 80, 148, 203, 15, 12, 201, 36, 226,
+			9, 8, 149, 15, 72, 148, 203, 15, 12, 201, 32, 145, 82, 60, 115, 25, 24, 148, 203, 15, 12, 201, 16, 147, 5, 81, 64, 78, 80, 148,
+			203, 15, 12, 201, 4, 208, 149, 48, 21, 15, 72, 148, 203, 15, 11, 200, 77, 65, 82, 20, 241, 143, 56, 144, 15, 22, 72, 12, 19, 142,
+			20, 195, 15, 56, 144, 49, 117, 50, 13, 55, 6, 39, 12, 50, 37, 0, 15, 7, 196, 20, 180, 201, 48, 15, 0, 6, 194, 12, 240, 13,
+			42, 10, 199, 88, 19, 139, 84, 225, 9, 28, 15, 10, 199, 49, 85, 135, 21, 36, 137, 28, 15, 10, 199, 24, 244, 142, 84, 101, 9, 28,
+			15, 9, 198, 64, 84, 137, 45, 83, 64, 15, 6, 195, 73, 82, 78, 15, 0, 10, 199, 88, 148, 201, 80, 21, 15, 72, 15, 10, 199, 85,
+			53, 82, 64, 21, 15, 72, 15, 10, 199, 76, 84, 1, 72, 21, 15, 72, 15, 10, 199, 61, 97, 82, 17, 225, 9, 28, 15, 0, 9, 198,
+			56, 81, 210, 60, 145, 0, 15, 9, 198, 25, 83, 135, 36, 50, 68, 15, 0, 7, 196, 88, 243, 21, 80, 15, 9, 198, 56, 85, 84, 72,
+			243, 128, 15, 10, 199, 76, 180, 159, 16, 65, 82, 36, 15, 10, 199, 45, 244, 133, 77, 65, 82, 36, 15, 10, 199, 18, 145, 2, 36, 65,
+			82, 36, 15, 11, 200, 44, 20, 18, 36, 99, 204, 36, 80, 15, 11, 200, 64, 192, 78, 21, 64, 82, 36, 80, 15, 11, 200, 44, 20, 18,
+			36, 99, 204, 36, 80, 15, 11, 200, 16, 83, 6, 36, 224, 82, 36, 80, 15, 9, 198, 88, 20, 197, 48, 147, 128, 15, 9, 198, 48, 80,
+			201, 80, 147, 128, 15, 9, 198, 44, 241, 134, 20, 147, 128, 15, 9, 198, 52, 243, 143, 52, 19, 128, 16, 9, 198, 49, 81, 15, 52, 19,
+			128, 16, 15, 4, 95, 111, 103, 111, 6, 127, 81, 127, 50, 4, 115, 49, 0, 0, 0, 10, 199, 4, 113, 210, 21, 52, 207, 72, 15, 10,
+			199, 65, 35, 211, 20, 181, 15, 72, 15, 13, 202, 64, 244, 21, 48, 20, 137, 76, 21, 15, 72, 15, 10, 199, 44, 243, 150, 20, 181, 15,
+			72, 15, 10, 199, 44, 243, 148, 4, 181, 15, 72, 15, 10, 199, 44, 243, 132, 84, 181, 15, 72, 15, 10, 199, 28, 192, 68, 36, 21, 15,
+			72, 15, 10, 199, 21, 96, 76, 84, 21, 15, 72, 15, 9, 198, 52, 241, 21, 48, 84, 133, 15, 11, 200, 61, 4, 137, 56, 65, 76, 36,
+			112, 15, 11, 200, 60, 213, 18, 20, 229, 12, 36, 112, 15, 11, 200, 52, 241, 20, 4, 113, 76, 36, 112, 15, 11, 200, 52, 241, 2, 100,
+			65, 76, 36, 112, 15, 11, 200, 40, 243, 70, 73, 81, 76, 36, 112, 15, 11, 200, 24, 244, 147, 88, 20, 140, 36, 112, 15, 11, 200, 24,
+			244, 141, 20, 229, 12, 36, 112, 15, 11, 200, 24, 244, 139, 48, 20, 140, 36, 112, 15, 10, 199, 24, 244, 132, 124, 117, 9, 28, 15, 11,
+			200, 24, 244, 129, 72, 113, 76, 36, 112, 15, 11, 200, 21, 97, 78, 81, 148, 140, 36, 112, 15, 11, 200, 4, 195, 79, 16, 84, 140, 36,
+			112, 15, 12, 201, 28, 19, 12, 37, 83, 79, 96, 145, 0, 15, 9, 198, 72, 81, 149, 28, 149, 77, 15, 9, 198, 36, 225, 197, 56, 149,
+			77, 15, 9, 198, 36, 225, 9, 12, 149, 77, 15, 9, 198, 16, 83, 9, 72, 149, 77, 15, 9, 198, 4, 209, 137, 8, 149, 77, 15, 9,
+			198, 16, 146, 207, 80, 243, 73, 15, 14, 69, 76, 80, 77, 85, 48, 91, 115, 37, 65, 14, 89, 0, 0, 10, 199, 65, 228, 212, 120, 83,
+			9, 28, 15, 0, 8, 197, 64, 244, 148, 165, 32, 15, 8, 197, 24, 244, 136, 165, 32, 15, 8, 197, 12, 21, 83, 165, 32, 15, 7, 196,
+			32, 84, 149, 80, 15, 9, 198, 125, 53, 5, 80, 146, 192, 15, 6, 195, 21, 66, 75, 15, 6, 195, 21, 2, 75, 15, 7, 196, 77, 82,
+			193, 80, 15, 7, 196, 61, 2, 65, 80, 15, 7, 196, 17, 82, 193, 80, 15, 12, 201, 20, 180, 212, 20, 212, 15, 72, 19, 0, 15, 11,
+			4, 95, 104, 111, 107, 107, 6, 40, 49, 0, 0, 12, 201, 88, 84, 147, 36, 98, 75, 5, 67, 210, 15, 12, 201, 77, 64, 66, 36, 194,
+			83, 5, 67, 210, 15, 12, 201, 44, 243, 131, 20, 229, 18, 5, 67, 210, 15, 19, 70, 21, 53, 18, 4, 115, 206, 36, 89, 47, 51, 35,
+			81, 6, 108, 68, 0, 15, 18, 70, 4, 181, 129, 72, 83, 0, 121, 49, 84, 121, 51, 6, 119, 55, 0, 15, 13, 202, 64, 84, 147, 64,
+			82, 212, 37, 100, 137, 28, 15, 9, 198, 125, 53, 5, 80, 148, 203, 15, 0, 10, 199, 80, 18, 211, 5, 66, 79, 56, 15, 10, 199, 21,
+			99, 204, 85, 66, 79, 56, 15, 10, 199, 20, 193, 86, 5, 66, 79, 56, 15, 12, 201, 36, 195, 15, 100, 19, 9, 80, 85, 0, 15, 12,
+			201, 5, 51, 195, 36, 19, 9, 80, 85, 0, 15, 13, 202, 80, 147, 19, 81, 39, 203, 44, 83, 9, 28, 15, 13, 202, 48, 85, 16, 121,
+			98, 82, 44, 83, 9, 28, 15, 13, 202, 24, 244, 147, 45, 39, 203, 44, 83, 9, 28, 15, 12, 201, 76, 19, 77, 20, 228, 213, 72, 149,
+			77, 15, 11, 200, 64, 243, 25, 80, 82, 206, 36, 176, 15, 12, 201, 44, 243, 135, 48, 243, 69, 72, 21, 0, 15, 0, 8, 197, 64, 20,
+			212, 165, 48, 15, 8, 197, 45, 84, 137, 165, 48, 15, 9, 198, 32, 20, 144, 37, 53, 0, 15, 11, 200, 85, 53, 82, 64, 21, 9, 60,
+			224, 15, 11, 200, 72, 84, 18, 21, 52, 201, 60, 224, 15, 11, 200, 72, 84, 5, 80, 149, 9, 60, 224, 15, 11, 200, 72, 84, 1, 72,
+			21, 9, 60, 224, 15, 11, 200, 65, 35, 195, 21, 52, 201, 60, 224, 15, 11, 200, 64, 84, 141, 37, 52, 201, 60, 224, 15, 11, 200, 64,
+			84, 139, 85, 52, 201, 60, 224, 15, 11, 200, 44, 243, 131, 21, 52, 201, 60, 224, 15, 11, 200, 44, 243, 77, 37, 52, 201, 60, 224, 15,
+			11, 200, 40, 243, 137, 76, 21, 9, 60, 224, 15, 11, 200, 36, 229, 15, 56, 21, 9, 60, 224, 15, 11, 200, 36, 225, 9, 44, 21, 9,
+			60, 224, 15, 11, 200, 24, 81, 5, 72, 21, 9, 60, 224, 15, 11, 200, 5, 69, 18, 4, 181, 9, 60, 224, 15, 11, 200, 4, 195, 15,
+			44, 21, 9, 60, 224, 15, 11, 200, 4, 67, 143, 80, 21, 9, 60, 224, 15, 11, 200, 4, 64, 80, 80, 21, 9, 60, 224, 15, 9, 198,
+			41, 81, 9, 12, 145, 76, 15, 14, 203, 64, 85, 5, 72, 19, 147, 81, 243, 132, 36, 112, 15, 9, 198, 52, 85, 18, 61, 3, 204, 15,
+			11, 200, 64, 84, 141, 37, 52, 201, 60, 224, 15, 0, 10, 199, 5, 34, 223, 60, 195, 199, 36, 15, 11, 200, 76, 84, 144, 20, 229, 9,
+			56, 80, 15, 10, 199, 4, 69, 133, 72, 34, 69, 48, 15, 7, 196, 32, 245, 5, 48, 15, 12, 201, 88, 83, 133, 72, 243, 15, 28, 148,
+			203, 15, 12, 201, 77, 147, 148, 4, 115, 65, 80, 148, 203, 15, 12, 201, 77, 147, 80, 80, 243, 65, 80, 148, 203, 15, 12, 201, 65, 80,
+			140, 36, 50, 83, 80, 148, 203, 15, 12, 201, 64, 19, 139, 72, 243, 65, 80, 148, 203, 15, 12, 201, 61, 35, 137, 80, 243, 15, 28, 148,
+			203, 15, 12, 201, 60, 67, 206, 80, 243, 15, 28, 148, 203, 15, 12, 201, 60, 49, 65, 56, 243, 15, 28, 148, 203, 15, 12, 201, 56, 85,
+			82, 5, 53, 5, 56, 148, 203, 15, 12, 201, 52, 148, 193, 57, 68, 143, 64, 148, 203, 15, 12, 201, 52, 81, 9, 84, 210, 83, 80, 148,
+			203, 15, 12, 201, 45, 96, 68, 72, 241, 143, 56, 148, 203, 15, 12, 201, 45, 35, 206, 60, 209, 84, 72, 148, 203, 15, 12, 201, 44, 244,
+			21, 48, 21, 15, 72, 148, 203, 15, 12, 201, 44, 19, 12, 36, 116, 129, 24, 148, 203, 15, 12, 201, 36, 179, 206, 60, 116, 129, 24, 148,
+			203, 15, 12, 201, 33, 145, 18, 61, 53, 1, 80, 148, 203, 15, 12, 201, 28, 192, 67, 36, 243, 15, 28, 148, 203, 15, 12, 201, 28, 84,
+			141, 4, 226, 83, 80, 148, 203, 15, 12, 201, 25, 32, 83, 20, 243, 15, 28, 148, 203, 15, 12, 201, 24, 147, 1, 57, 68, 143, 64, 148,
+			203, 15, 12, 201, 24, 83, 73, 56, 243, 15, 28, 148, 203, 15, 12, 201, 16, 148, 203, 60, 116, 129, 24, 148, 203, 15, 12, 201, 16, 81,
+			137, 56, 149, 15, 72, 148, 203, 15, 12, 201, 4, 225, 197, 49, 48, 75, 76, 148, 203, 15, 7, 196, 88, 149, 1, 48, 15, 7, 196, 80,
+			245, 1, 48, 15, 0, 9, 198, 65, 33, 83, 76, 147, 206, 15, 9, 198, 20, 210, 83, 76, 147, 206, 15, 15, 204, 36, 229, 5, 57, 66,
+			79, 56, 19, 9, 80, 85, 0, 15, 9, 198, 81, 35, 203, 124, 148, 203, 15, 9, 198, 33, 244, 133, 80, 148, 203, 15, 9, 198, 45, 35,
+			193, 80, 145, 78, 15, 9, 198, 12, 20, 137, 8, 145, 78, 15, 6, 195, 37, 32, 78, 15, 0, 17, 70, 8, 84, 131, 21, 84, 197, 71,
+			115, 34, 89, 132, 12, 89, 0, 66, 10, 199, 72, 80, 197, 65, 66, 79, 56, 15, 10, 199, 72, 80, 133, 48, 194, 79, 56, 15, 10, 199,
+			45, 33, 77, 5, 66, 79, 56, 15, 10, 199, 16, 81, 21, 45, 66, 79, 56, 15, 11, 200, 24, 192, 78, 44, 84, 137, 56, 112, 15, 11,
+			200, 5, 81, 9, 80, 84, 137, 56, 112, 15, 9, 198, 56, 240, 140, 21, 52, 197, 15, 9, 198, 44, 243, 84, 21, 52, 197, 15, 9, 198,
+			17, 80, 200, 21, 52, 197, 15, 9, 198, 52, 20, 131, 37, 0, 78, 16, 10, 199, 28, 19, 15, 65, 0, 68, 20, 15, 8, 67, 73, 83,
+			128, 21, 0, 47, 0, 13, 202, 64, 20, 143, 16, 243, 148, 60, 195, 199, 36, 15, 13, 202, 44, 20, 129, 45, 65, 82, 60, 195, 199, 36,
+			15, 9, 198, 85, 67, 208, 37, 53, 0, 15, 9, 198, 56, 244, 132, 37, 53, 0, 15, 9, 198, 80, 83, 196, 60, 194, 84, 15, 9, 198,
+			76, 178, 66, 60, 226, 84, 15, 9, 198, 52, 146, 210, 60, 194, 84, 15, 9, 198, 44, 243, 80, 61, 50, 84, 15, 9, 198, 44, 242, 203,
+			60, 194, 84, 15, 9, 198, 20, 180, 208, 20, 66, 84, 15, 7, 196, 24, 243, 133, 52, 15, 0, 12, 201, 88, 20, 207, 52, 245, 15, 72,
+			148, 203, 15, 12, 201, 60, 229, 15, 28, 83, 133, 80, 148, 203, 15, 12, 201, 60, 35, 9, 28, 21, 15, 72, 148, 203, 15, 12, 201, 36,
+			225, 9, 44, 21, 9, 88, 148, 203, 15, 12, 201, 33, 145, 18, 61, 65, 75, 56, 148, 203, 15, 12, 201, 32, 84, 141, 20, 225, 85, 80,
+			148, 203, 15, 12, 201, 8, 243, 19, 40, 85, 137, 44, 148, 203, 15, 12, 201, 5, 66, 5, 56, 145, 78, 76, 148, 203, 15, 12, 201, 5,
+			34, 83, 80, 245, 5, 48, 148, 203, 15, 12, 201, 5, 3, 203, 4, 198, 80, 80, 148, 203, 15, 7, 196, 88, 148, 137, 48, 15, 8, 67,
+			76, 243, 135, 21, 0, 47, 0, 5, 194, 36, 64, 13, 10, 199, 28, 83, 194, 36, 243, 15, 28, 15, 9, 198, 77, 147, 132, 72, 243, 64,
+			15, 0, 17, 5, 98, 104, 39, 101, 114, 71, 4, 36, 12, 107, 6, 125, 12, 108, 0, 14, 203, 77, 68, 129, 80, 145, 137, 12, 84, 137,
+			56, 112, 15, 10, 199, 72, 84, 1, 81, 34, 69, 72, 15, 10, 199, 44, 243, 148, 72, 18, 5, 72, 15, 10, 199, 16, 83, 149, 57, 66,
+			69, 72, 15, 0, 13, 202, 64, 20, 148, 20, 227, 199, 20, 225, 83, 20, 15, 0, 9, 198, 44, 243, 15, 24, 243, 128, 15, 11, 200, 21,
+			84, 143, 65, 242, 83, 21, 32, 15, 9, 198, 88, 19, 129, 16, 147, 128, 15, 9, 198, 64, 147, 135, 88, 147, 128, 15, 9, 198, 52, 83,
+			1, 52, 147, 128, 15, 9, 198, 52, 81, 9, 12, 147, 128, 15, 11, 200, 29, 33, 78, 120, 83, 147, 21, 32, 15, 9, 198, 52, 242, 9,
+			44, 19, 128, 15, 9, 198, 52, 81, 9, 12, 147, 128, 15, 9, 198, 37, 64, 76, 36, 83, 128, 15, 9, 198, 4, 225, 207, 48, 19, 128,
+			15, 9, 198, 81, 83, 9, 64, 19, 128, 16, 9, 198, 64, 83, 9, 44, 19, 128, 16, 9, 198, 52, 83, 66, 72, 19, 128, 16, 9, 198,
+			21, 81, 143, 52, 19, 128, 16, 0, 28, 67, 80, 245, 82, 47, 40, 12, 13, 72, 13, 15, 6, 83, 108, 12, 89, 0, 82, 100, 101, 32,
+			102, 111, 114, 99, 101, 32, 8, 197, 9, 35, 205, 36, 64, 15, 0, 11, 200, 32, 84, 144, 21, 67, 204, 60, 112, 15, 11, 200, 16, 84,
+			141, 5, 67, 204, 60, 112, 15, 11, 200, 9, 35, 205, 5, 67, 204, 60, 112, 15, 13, 202, 44, 243, 12, 20, 181, 9, 88, 148, 197, 72,
+			15, 7, 196, 17, 84, 129, 8, 15, 0, 7, 196, 8, 147, 159, 72, 15, 10, 199, 72, 17, 9, 60, 195, 199, 36, 15, 10, 199, 61, 53,
+			5, 60, 195, 199, 36, 15, 10, 199, 45, 35, 206, 60, 195, 199, 36, 15, 10, 199, 36, 181, 25, 60, 195, 199, 36, 15, 10, 199, 36, 179,
+			206, 60, 195, 199, 36, 15, 10, 199, 32, 148, 16, 60, 195, 199, 36, 15, 10, 199, 25, 33, 78, 60, 195, 199, 36, 15, 10, 199, 24, 147,
+			13, 60, 195, 199, 36, 15, 14, 203, 44, 243, 77, 21, 32, 201, 4, 194, 83, 21, 32, 15, 14, 203, 36, 225, 21, 77, 68, 137, 4, 194,
+			83, 21, 32, 15, 14, 203, 36, 225, 9, 88, 145, 21, 4, 194, 83, 21, 32, 15, 14, 203, 16, 149, 137, 76, 147, 206, 4, 194, 83, 21,
+			32, 15, 14, 203, 77, 97, 78, 16, 35, 210, 28, 83, 147, 21, 32, 15, 14, 203, 76, 147, 11, 20, 35, 210, 28, 83, 147, 21, 32, 15,
+			14, 203, 52, 20, 137, 4, 113, 82, 28, 83, 147, 21, 32, 15, 14, 203, 44, 20, 148, 4, 114, 78, 36, 83, 147, 21, 32, 15, 9, 198,
+			72, 21, 9, 60, 224, 76, 15, 9, 198, 44, 19, 148, 60, 224, 76, 15, 9, 198, 77, 2, 82, 4, 229, 0, 15, 8, 67, 92, 244, 132,
+			21, 0, 47, 0, 11, 200, 65, 39, 202, 84, 66, 67, 21, 32, 15, 10, 199, 24, 148, 141, 4, 209, 78, 80, 15, 10, 199, 16, 148, 211,
+			36, 65, 78, 80, 15, 10, 199, 81, 33, 77, 84, 192, 78, 80, 15, 9, 198, 77, 1, 78, 16, 16, 128, 15, 9, 198, 72, 148, 201, 44,
+			16, 128, 15, 9, 198, 44, 243, 147, 80, 16, 128, 15, 0, 5, 194, 37, 64, 13, 8, 197, 81, 145, 143, 36, 64, 15, 8, 197, 8, 147,
+			195, 36, 64, 15, 11, 200, 44, 21, 5, 28, 244, 137, 4, 192, 15, 9, 198, 65, 39, 199, 56, 19, 147, 15, 13, 4, 95, 98, 114, 118,
+			71, 34, 6, 37, 12, 84, 0, 0, 9, 198, 32, 244, 148, 60, 227, 205, 15, 10, 199, 48, 18, 212, 5, 66, 79, 56, 15, 10, 199, 44,
+			243, 132, 37, 66, 79, 56, 15, 10, 199, 36, 229, 21, 37, 66, 79, 56, 15, 10, 199, 16, 148, 133, 45, 66, 79, 56, 15, 13, 202, 72,
+			82, 207, 57, 96, 76, 21, 48, 197, 72, 15, 13, 202, 20, 180, 203, 60, 211, 85, 56, 144, 197, 72, 15, 13, 202, 20, 180, 197, 53, 3,
+			9, 24, 144, 197, 72, 15, 13, 67, 56, 85, 192, 21, 0, 47, 81, 97, 103, 101, 32, 0, 7, 196, 28, 85, 159, 72, 15, 11, 200, 77,
+			80, 150, 20, 229, 9, 60, 224, 15, 11, 200, 65, 35, 208, 61, 37, 9, 60, 224, 15, 13, 202, 64, 19, 31, 77, 66, 78, 20, 228, 197,
+			72, 15, 11, 200, 65, 35, 214, 36, 228, 201, 4, 224, 15, 11, 200, 9, 32, 78, 16, 84, 201, 4, 224, 15, 0, 10, 199, 24, 147, 129,
+			57, 50, 69, 48, 15, 10, 199, 84, 226, 86, 21, 36, 193, 48, 15, 10, 199, 64, 243, 25, 28, 243, 129, 48, 15, 10, 199, 61, 37, 15,
+			28, 243, 129, 48, 15, 10, 199, 52, 81, 9, 12, 147, 129, 48, 15, 10, 199, 20, 208, 146, 100, 243, 129, 48, 15, 0, 9, 198, 65, 42,
+			74, 76, 148, 203, 15, 7, 196, 52, 147, 73, 44, 15, 15, 204, 78, 147, 132, 21, 32, 143, 72, 113, 78, 76, 84, 128, 15, 15, 204, 76,
+			18, 211, 46, 144, 137, 56, 113, 78, 76, 84, 128, 15, 15, 204, 72, 147, 135, 46, 144, 137, 56, 113, 78, 76, 84, 128, 15, 18, 4, 95,
+			97, 99, 50, 72, 108, 13, 55, 35, 49, 57, 6, 40, 12, 47, 0, 0, 6, 195, 88, 244, 133, 72, 0, 8, 197, 12, 149, 18, 60, 224,
+			15, 6, 195, 5, 67, 204, 15, 10, 199, 56, 20, 139, 60, 208, 78, 36, 15, 8, 197, 76, 19, 79, 4, 224, 15, 0, 12, 201, 88, 246,
+			69, 85, 34, 83, 80, 148, 203, 15, 12, 201, 80, 84, 146, 61, 34, 83, 80, 148, 203, 15, 12, 201, 77, 147, 66, 60, 194, 83, 80, 148,
+			203, 15, 12, 201, 77, 64, 76, 36, 226, 83, 80, 148, 203, 15, 12, 201, 77, 2, 82, 37, 66, 83, 80, 148, 203, 15, 12, 201, 76, 240,
+			201, 4, 194, 83, 80, 148, 203, 15, 12, 201, 72, 149, 21, 4, 194, 83, 80, 148, 203, 15, 12, 201, 65, 35, 198, 100, 192, 75, 80, 148,
+			203, 15, 12, 201, 65, 34, 86, 5, 66, 83, 80, 148, 203, 15, 12, 201, 64, 197, 82, 4, 194, 83, 80, 148, 203, 15, 12, 201, 64, 20,
+			129, 48, 192, 75, 80, 148, 203, 15, 12, 201, 56, 245, 133, 48, 194, 83, 80, 148, 203, 15, 12, 201, 53, 148, 212, 36, 98, 83, 80, 148,
+			203, 15, 12, 201, 52, 241, 5, 72, 226, 83, 80, 148, 203, 15, 12, 201, 52, 20, 207, 12, 130, 83, 80, 148, 203, 15, 12, 201, 44, 243,
+			77, 84, 226, 83, 80, 148, 203, 15, 12, 201, 44, 16, 130, 4, 194, 83, 80, 148, 203, 15, 12, 201, 32, 148, 212, 61, 34, 83, 80, 148,
+			203, 15, 12, 201, 32, 83, 12, 20, 226, 83, 80, 148, 203, 15, 12, 201, 28, 83, 197, 48, 82, 212, 72, 148, 203, 15, 12, 201, 28, 20,
+			212, 72, 243, 143, 52, 148, 203, 15, 12, 201, 25, 148, 201, 60, 115, 143, 52, 148, 203, 15, 12, 201, 24, 244, 141, 4, 194, 83, 80, 148,
+			203, 15, 12, 201, 24, 85, 68, 4, 194, 83, 80, 148, 203, 15, 12, 201, 24, 85, 9, 12, 130, 83, 80, 148, 203, 15, 12, 201, 17, 32,
+			77, 5, 69, 82, 28, 148, 203, 15, 12, 201, 16, 20, 151, 36, 226, 83, 80, 148, 203, 15, 12, 201, 12, 19, 22, 36, 226, 83, 80, 148,
+			203, 15, 12, 201, 9, 37, 84, 4, 194, 83, 80, 148, 203, 15, 12, 201, 4, 36, 213, 72, 66, 83, 80, 148, 203, 15, 12, 201, 52, 146,
+			210, 60, 225, 83, 36, 83, 128, 15, 10, 67, 33, 98, 83, 84, 36, 89, 0, 76, 0, 12, 201, 88, 19, 15, 72, 148, 193, 80, 147, 206,
+			15, 12, 201, 81, 148, 9, 24, 146, 193, 80, 147, 206, 15, 12, 201, 64, 243, 1, 72, 148, 193, 80, 147, 206, 15, 12, 201, 44, 243, 148,
+			36, 229, 65, 80, 147, 206, 15, 12, 201, 44, 243, 147, 80, 148, 1, 80, 147, 206, 15, 12, 201, 44, 243, 135, 72, 81, 193, 80, 147, 206,
+			15, 12, 201, 20, 208, 78, 12, 148, 1, 80, 147, 206, 15, 12, 201, 4, 211, 210, 80, 148, 193, 80, 147, 206, 15, 12, 201, 4, 194, 77,
+			20, 229, 1, 80, 147, 206, 15, 12, 201, 4, 48, 197, 57, 69, 65, 80, 147, 206, 15, 8, 197, 44, 21, 84, 20, 192, 15, 8, 197, 44,
+			21, 84, 20, 192, 15, 7, 196, 44, 19, 73, 44, 15, 0, 7, 196, 52, 20, 137, 56, 15, 7, 196, 52, 20, 137, 56, 15, 0, 14, 203,
+			64, 243, 25, 52, 84, 137, 76, 21, 9, 60, 224, 15, 8, 197, 9, 33, 84, 60, 224, 15, 9, 198, 24, 147, 20, 72, 21, 0, 15, 8,
+			197, 52, 81, 9, 4, 224, 16, 0, 21, 68, 77, 67, 210, 80, 89, 47, 39, 34, 72, 15, 107, 121, 40, 0, 81, 104, 97, 118, 32, 9,
+			198, 77, 64, 84, 36, 243, 128, 15, 9, 198, 28, 82, 147, 80, 194, 71, 15, 9, 198, 28, 20, 207, 48, 147, 128, 15, 10, 199, 13, 244,
+			193, 72, 148, 205, 20, 15, 9, 198, 65, 84, 137, 80, 19, 128, 15, 12, 201, 61, 48, 201, 48, 195, 199, 72, 17, 128, 15, 12, 201, 48,
+			82, 211, 36, 179, 199, 72, 17, 128, 15, 0, 6, 195, 20, 212, 0, 13, 9, 198, 45, 103, 211, 80, 244, 128, 15, 0, 40, 68, 16, 147,
+			133, 72, 72, 111, 50, 6, 114, 47, 34, 122, 68, 89, 48, 108, 47, 6, 121, 71, 55, 14, 0, 81, 116, 114, 97, 110, 115, 112, 111, 114,
+			116, 97, 98, 108, 101, 32, 6, 195, 5, 67, 205, 15, 7, 196, 64, 19, 133, 72, 15, 7, 196, 16, 147, 133, 72, 15, 10, 199, 4, 99,
+			30, 76, 83, 9, 28, 15, 10, 199, 4, 99, 31, 76, 83, 9, 28, 15, 12, 201, 104, 83, 130, 84, 65, 8, 37, 51, 69, 15, 12, 201,
+			72, 81, 201, 60, 224, 76, 37, 51, 69, 15, 12, 201, 44, 244, 144, 61, 32, 84, 37, 51, 69, 15, 12, 201, 44, 243, 80, 5, 32, 84,
+			37, 51, 69, 15, 12, 201, 44, 243, 15, 56, 144, 76, 37, 51, 69, 15, 12, 201, 44, 193, 82, 36, 176, 76, 37, 51, 69, 15, 12, 201,
+			16, 83, 79, 45, 32, 84, 37, 51, 69, 15, 12, 201, 8, 243, 129, 64, 20, 148, 37, 51, 69, 15, 12, 201, 5, 53, 9, 28, 208, 84,
+			37, 51, 69, 15, 12, 201, 20, 50, 1, 84, 97, 133, 72, 85, 0, 15, 7, 196, 16, 83, 129, 72, 15, 6, 196, 20, 195, 5, 72, 0,
+			11, 200, 65, 228, 1, 77, 49, 76, 36, 112, 15, 11, 200, 61, 5, 31, 56, 177, 76, 36, 112, 15, 11, 200, 24, 244, 132, 164, 161, 76,
+			36, 112, 15, 11, 200, 4, 229, 31, 56, 65, 76, 36, 112, 15, 9, 198, 37, 51, 1, 52, 149, 0, 15, 9, 198, 12, 240, 203, 64, 149,
+			0, 15, 13, 202, 80, 245, 1, 48, 149, 1, 72, 148, 205, 20, 15, 13, 202, 44, 243, 147, 60, 224, 78, 80, 148, 205, 20, 15, 13, 202,
+			44, 243, 134, 84, 50, 65, 56, 148, 205, 20, 15, 13, 202, 16, 147, 5, 81, 64, 78, 80, 148, 205, 20, 15, 13, 202, 5, 96, 78, 80,
+			112, 82, 16, 148, 205, 20, 15, 14, 203, 12, 132, 137, 77, 66, 65, 57, 50, 1, 88, 224, 15, 11, 200, 45, 38, 80, 80, 241, 210, 4,
+			96, 15, 0, 8, 197, 29, 32, 86, 165, 32, 15, 7, 196, 44, 20, 21, 80, 15, 9, 198, 16, 149, 137, 76, 244, 128, 15, 12, 201, 81,
+			32, 78, 76, 69, 75, 80, 244, 128, 15, 9, 198, 45, 96, 78, 80, 244, 128, 15, 9, 198, 88, 145, 9, 52, 84, 128, 15, 9, 198, 72,
+			18, 76, 48, 84, 128, 15, 9, 198, 56, 243, 73, 56, 84, 128, 15, 9, 198, 52, 84, 137, 80, 84, 128, 15, 9, 198, 44, 20, 137, 44,
+			84, 128, 15, 9, 198, 21, 128, 201, 80, 84, 128, 15, 9, 198, 16, 149, 137, 16, 84, 128, 15, 9, 198, 4, 208, 149, 48, 84, 128, 15,
+			7, 196, 61, 35, 129, 80, 15, 0, 11, 200, 65, 35, 214, 36, 228, 201, 20, 192, 15, 13, 202, 28, 83, 129, 57, 97, 78, 16, 83, 9,
+			28, 15, 15, 204, 4, 229, 18, 61, 3, 205, 61, 33, 137, 76, 209, 64, 15, 9, 198, 25, 32, 75, 80, 19, 0, 15, 0, 7, 196, 4,
+			65, 5, 72, 15, 14, 203, 48, 245, 141, 20, 66, 15, 48, 65, 76, 36, 112, 15, 10, 199, 81, 32, 77, 64, 243, 9, 56, 15, 15, 204,
+			36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 51, 69, 15, 15, 204, 20, 180, 201, 77, 65, 78, 80, 144, 76, 37, 51, 69, 15, 11, 200,
+			48, 147, 135, 88, 148, 212, 36, 176, 15, 10, 199, 8, 144, 140, 36, 243, 65, 56, 16, 0, 8, 197, 44, 20, 137, 165, 48, 15, 11, 200,
+			4, 229, 9, 80, 242, 211, 36, 224, 15, 16, 205, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 205, 20, 15, 0, 7, 196, 65, 84,
+			9, 48, 15, 13, 69, 13, 33, 65, 77, 144, 49, 34, 37, 89, 111, 0, 25, 4, 95, 55, 88, 111, 107, 117, 55, 83, 57, 6, 117, 34,
+			89, 36, 50, 89, 47, 129, 84, 14, 50, 14, 0, 0, 12, 201, 65, 39, 208, 5, 32, 84, 36, 243, 128, 15, 12, 201, 125, 53, 5, 80,
+			148, 197, 72, 147, 135, 15, 13, 202, 81, 32, 78, 77, 3, 206, 21, 34, 78, 28, 15, 13, 202, 77, 1, 67, 36, 98, 67, 21, 34, 78,
+			28, 15, 13, 202, 73, 84, 211, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 64, 244, 201, 80, 147, 206, 21, 34, 78, 28, 15, 13, 202,
+			44, 192, 82, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 28, 195, 210, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 24, 19, 19, 36,
+			98, 67, 21, 34, 78, 28, 15, 12, 201, 17, 243, 79, 56, 148, 197, 72, 147, 135, 15, 13, 202, 16, 84, 201, 56, 98, 67, 21, 34, 78,
+			28, 15, 13, 202, 16, 83, 79, 57, 53, 18, 21, 34, 78, 28, 15, 13, 202, 4, 96, 129, 48, 19, 131, 21, 34, 78, 28, 15, 10, 199,
+			76, 192, 86, 37, 53, 9, 44, 15, 10, 199, 33, 145, 18, 5, 83, 9, 44, 15, 8, 197, 64, 20, 195, 4, 192, 15, 0, 13, 202, 20,
+			180, 212, 72, 245, 133, 73, 50, 79, 56, 15, 9, 198, 4, 66, 31, 76, 147, 206, 15, 14, 203, 77, 80, 138, 20, 181, 9, 88, 84, 137,
+			56, 112, 15, 14, 203, 76, 243, 9, 16, 20, 137, 76, 84, 137, 56, 112, 15, 14, 203, 76, 82, 213, 48, 20, 137, 76, 84, 137, 56, 112,
+			15, 14, 203, 72, 146, 207, 12, 129, 84, 80, 84, 137, 56, 112, 15, 14, 203, 72, 82, 207, 28, 227, 211, 12, 84, 137, 56, 112, 15, 14,
+			203, 65, 35, 212, 60, 179, 204, 48, 84, 137, 56, 112, 15, 14, 203, 64, 243, 25, 52, 84, 137, 76, 84, 137, 56, 112, 15, 14, 203, 64,
+			192, 83, 80, 145, 137, 12, 84, 137, 56, 112, 15, 14, 203, 52, 146, 210, 61, 50, 207, 64, 84, 137, 56, 112, 15, 14, 203, 45, 96, 78,
+			80, 145, 137, 12, 84, 137, 56, 112, 15, 14, 203, 44, 243, 139, 72, 85, 9, 76, 84, 137, 56, 112, 15, 14, 203, 44, 243, 12, 5, 66,
+			79, 56, 84, 137, 56, 112, 15, 14, 203, 44, 21, 5, 28, 244, 137, 76, 84, 137, 56, 112, 15, 14, 203, 36, 229, 5, 73, 1, 76, 48,
+			84, 137, 56, 112, 15, 14, 203, 36, 65, 78, 80, 145, 137, 12, 84, 137, 56, 112, 15, 14, 203, 32, 145, 82, 5, 34, 201, 76, 84, 137,
+			56, 112, 15, 14, 203, 29, 82, 76, 48, 245, 9, 56, 84, 137, 56, 112, 15, 14, 203, 16, 148, 195, 37, 3, 9, 56, 84, 137, 56, 112,
+			15, 14, 203, 12, 83, 148, 72, 145, 149, 28, 84, 137, 56, 112, 15, 9, 198, 28, 83, 205, 21, 68, 137, 15, 10, 199, 44, 20, 141, 60,
+			148, 201, 56, 15, 10, 199, 4, 229, 9, 65, 148, 137, 56, 15, 10, 199, 56, 85, 82, 85, 4, 9, 56, 15, 9, 198, 9, 39, 203, 4,
+			113, 64, 15, 0, 8, 197, 81, 34, 75, 36, 224, 15, 8, 197, 80, 18, 87, 4, 224, 15, 7, 196, 73, 83, 95, 56, 15, 8, 197, 80,
+			18, 87, 4, 224, 16, 17, 71, 12, 243, 5, 72, 145, 7, 20, 49, 125, 58, 55, 34, 111, 75, 0, 18, 71, 12, 19, 66, 72, 145, 7,
+			20, 49, 115, 57, 65, 71, 51, 113, 75, 0, 0, 11, 200, 72, 82, 214, 37, 50, 84, 165, 32, 15, 11, 200, 48, 85, 133, 72, 19, 132,
+			165, 32, 15, 11, 200, 36, 228, 212, 73, 82, 212, 165, 32, 15, 11, 200, 5, 52, 213, 72, 19, 132, 165, 32, 15, 11, 200, 4, 208, 129,
+			77, 48, 68, 165, 32, 15, 11, 200, 4, 178, 214, 37, 50, 84, 165, 32, 15, 15, 204, 81, 32, 78, 77, 3, 1, 57, 64, 84, 36, 243,
+			128, 15, 15, 204, 36, 228, 212, 73, 83, 69, 57, 64, 84, 36, 243, 128, 15, 15, 204, 36, 211, 65, 81, 34, 75, 84, 192, 84, 36, 243,
+			128, 15, 11, 200, 16, 81, 159, 44, 21, 9, 60, 224, 15, 15, 204, 80, 82, 206, 60, 180, 129, 80, 148, 197, 72, 147, 135, 15, 15, 204,
+			76, 176, 78, 16, 147, 129, 88, 148, 197, 72, 147, 135, 15, 15, 204, 65, 35, 194, 48, 83, 65, 80, 148, 197, 72, 147, 135, 15, 15, 204,
+			52, 84, 139, 4, 229, 9, 48, 148, 197, 72, 147, 135, 15, 15, 204, 24, 146, 212, 36, 243, 129, 48, 148, 197, 72, 147, 135, 15, 15, 204,
+			16, 83, 73, 56, 84, 129, 48, 148, 197, 72, 147, 135, 15, 15, 204, 16, 80, 197, 57, 68, 129, 48, 148, 197, 72, 147, 135, 15, 15, 204,
+			12, 243, 148, 4, 147, 133, 72, 148, 197, 72, 147, 135, 15, 0, 25, 66, 20, 224, 36, 50, 15, 49, 117, 50, 39, 50, 6, 36, 34, 0,
+			81, 107, 97, 110, 111, 110, 101, 114, 32, 16, 66, 20, 224, 36, 50, 15, 89, 6, 108, 0, 81, 115, 195, 165, 32, 25, 66, 20, 224, 36,
+			50, 15, 55, 36, 81, 6, 115, 50, 72, 14, 0, 81, 108, 101, 103, 101, 110, 100, 101, 32, 23, 66, 20, 224, 121, 68, 15, 48, 117, 89,
+			6, 121, 68, 0, 81, 112, 97, 115, 115, 97, 110, 116, 32, 19, 66, 20, 224, 121, 68, 15, 6, 71, 55, 108, 49, 0, 81, 98, 108, 111,
+			99, 32, 18, 66, 20, 224, 121, 68, 15, 83, 6, 35, 89, 0, 81, 102, 97, 99, 101, 32, 9, 198, 80, 20, 212, 5, 69, 82, 15, 9,
+			198, 77, 68, 137, 45, 69, 82, 15, 9, 198, 5, 4, 18, 21, 69, 82, 15, 12, 201, 44, 243, 147, 81, 37, 75, 80, 147, 206, 15, 12,
+			201, 36, 229, 18, 60, 69, 75, 80, 147, 206, 15, 12, 201, 16, 84, 201, 56, 97, 75, 80, 147, 206, 15, 12, 201, 12, 245, 133, 73, 97,
+			82, 76, 147, 206, 15, 13, 202, 88, 148, 213, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 88, 19, 132, 4, 194, 83, 21, 34, 78, 28,
+			15, 13, 202, 80, 84, 146, 61, 34, 83, 21, 34, 78, 28, 15, 13, 202, 77, 147, 66, 60, 194, 83, 21, 34, 78, 28, 15, 13, 202, 76,
+			240, 201, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 72, 149, 21, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 64, 21, 18, 60, 226,
+			83, 21, 34, 78, 28, 15, 13, 202, 56, 244, 141, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 53, 84, 197, 4, 194, 83, 21, 34, 78,
+			28, 15, 13, 202, 36, 229, 5, 57, 50, 86, 21, 34, 78, 28, 15, 13, 202, 24, 244, 141, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202,
+			24, 84, 148, 36, 194, 83, 21, 34, 78, 28, 15, 13, 202, 16, 85, 18, 60, 226, 83, 21, 34, 78, 28, 15, 13, 202, 9, 37, 84, 4,
+			194, 83, 21, 34, 78, 28, 15, 13, 202, 4, 181, 21, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 4, 68, 212, 72, 147, 135, 21, 34,
+			78, 28, 15, 8, 197, 28, 243, 132, 60, 192, 15, 11, 200, 24, 19, 19, 36, 98, 75, 5, 64, 15, 12, 201, 16, 82, 207, 48, 193, 84,
+			4, 113, 64, 15, 5, 194, 20, 224, 72, 0, 13, 202, 77, 80, 143, 72, 66, 78, 5, 66, 79, 56, 15, 13, 202, 24, 84, 148, 36, 194,
+			83, 5, 66, 79, 56, 15, 10, 199, 88, 242, 193, 9, 83, 1, 72, 15, 13, 3, 95, 51, 88, 47, 16, 6, 120, 86, 84, 13, 0, 0,
+			8, 197, 64, 21, 18, 60, 224, 15, 17, 69, 56, 21, 18, 60, 224, 50, 6, 117, 12, 47, 51, 108, 50, 0, 15, 14, 203, 36, 229, 5,
+			73, 1, 76, 48, 21, 9, 60, 224, 15, 14, 203, 36, 65, 78, 80, 145, 137, 44, 21, 9, 60, 224, 15, 14, 203, 20, 180, 212, 72, 20,
+			15, 48, 21, 9, 60, 224, 15, 14, 203, 12, 83, 148, 72, 19, 9, 76, 21, 9, 60, 224, 15, 14, 203, 4, 67, 73, 56, 148, 212, 72,
+			21, 9, 60, 224, 15, 9, 198, 56, 18, 86, 37, 65, 84, 15, 8, 197, 40, 20, 205, 36, 224, 15, 9, 198, 24, 244, 131, 21, 33, 84,
+			15, 9, 198, 24, 19, 12, 21, 33, 84, 15, 9, 198, 20, 195, 216, 21, 33, 84, 15, 13, 3, 95, 48, 67, 107, 6, 40, 50, 51, 108,
+			86, 0, 0, 9, 198, 44, 21, 84, 36, 243, 128, 15, 10, 199, 52, 20, 137, 8, 243, 137, 80, 15, 10, 199, 45, 98, 82, 72, 85, 137,
+			80, 15, 9, 198, 5, 68, 129, 104, 147, 128, 15, 9, 198, 5, 32, 66, 36, 83, 128, 15, 9, 198, 80, 144, 133, 80, 19, 128, 15, 9,
+			198, 4, 33, 83, 76, 147, 128, 15, 10, 199, 73, 85, 9, 56, 84, 133, 80, 15, 10, 199, 16, 83, 5, 28, 84, 133, 80, 15, 10, 199,
+			16, 80, 201, 16, 84, 133, 80, 15, 10, 199, 5, 96, 78, 12, 84, 133, 80, 15, 10, 199, 4, 197, 5, 72, 84, 133, 80, 15, 10, 199,
+			24, 192, 71, 20, 195, 1, 80, 15, 0, 0, 13, 202, 12, 148, 212, 21, 32, 201, 20, 228, 197, 72, 15, 11, 200, 65, 39, 202, 84, 66,
+			75, 5, 64, 15, 9, 198, 26, 145, 19, 20, 192, 82, 15, 12, 201, 16, 83, 79, 57, 53, 18, 4, 229, 0, 15, 0, 7, 196, 8, 81,
+			223, 72, 15, 11, 200, 88, 148, 213, 4, 194, 83, 21, 32, 15, 11, 200, 88, 84, 130, 4, 194, 83, 21, 32, 15, 11, 200, 88, 19, 132,
+			4, 194, 83, 21, 32, 15, 11, 200, 81, 148, 129, 56, 226, 83, 21, 32, 15, 11, 200, 81, 34, 65, 56, 117, 76, 21, 32, 15, 11, 200,
+			80, 84, 146, 61, 34, 83, 21, 32, 15, 11, 200, 77, 147, 66, 60, 194, 83, 21, 32, 15, 11, 200, 77, 68, 129, 56, 117, 76, 21, 32,
+			15, 11, 200, 77, 65, 82, 36, 194, 83, 21, 32, 15, 11, 200, 77, 64, 66, 36, 194, 83, 21, 32, 15, 11, 200, 76, 240, 201, 4, 194,
+			83, 21, 32, 15, 11, 200, 76, 145, 206, 4, 194, 83, 21, 32, 15, 11, 200, 72, 149, 21, 4, 194, 83, 21, 32, 15, 11, 200, 72, 80,
+			201, 72, 181, 76, 21, 32, 15, 11, 200, 65, 35, 211, 64, 82, 212, 21, 32, 15, 11, 200, 65, 34, 86, 36, 193, 71, 21, 32, 15, 11,
+			200, 64, 21, 18, 60, 226, 83, 21, 32, 15, 11, 200, 64, 20, 148, 36, 50, 80, 21, 32, 15, 11, 200, 56, 244, 141, 4, 194, 83, 21,
+			32, 15, 11, 200, 52, 85, 1, 48, 194, 83, 21, 32, 15, 11, 200, 52, 21, 18, 36, 181, 76, 21, 32, 15, 11, 200, 52, 20, 203, 36,
+			226, 83, 21, 32, 15, 11, 200, 52, 19, 20, 72, 18, 212, 21, 32, 15, 11, 200, 33, 145, 18, 60, 198, 83, 21, 32, 15, 11, 200, 32,
+			20, 141, 60, 226, 83, 21, 32, 15, 11, 200, 28, 84, 141, 4, 226, 83, 21, 32, 15, 11, 200, 28, 19, 22, 4, 226, 83, 21, 32, 15,
+			11, 200, 24, 244, 141, 4, 194, 83, 21, 32, 15, 11, 200, 24, 197, 79, 72, 84, 195, 21, 32, 15, 11, 200, 24, 84, 148, 36, 194, 83,
+			21, 32, 15, 11, 200, 24, 18, 211, 36, 210, 76, 21, 32, 15, 11, 200, 20, 180, 208, 48, 242, 84, 21, 32, 15, 11, 200, 16, 85, 18,
+			60, 226, 83, 21, 32, 15, 11, 200, 9, 37, 84, 4, 194, 83, 21, 32, 15, 11, 200, 8, 20, 146, 36, 176, 68, 21, 32, 15, 11, 200,
+			8, 19, 11, 4, 226, 83, 21, 32, 15, 11, 200, 4, 181, 21, 4, 194, 83, 21, 32, 15, 11, 200, 4, 178, 214, 36, 84, 195, 21, 32,
+			15, 11, 200, 4, 178, 207, 52, 211, 196, 21, 32, 15, 11, 200, 64, 192, 84, 60, 226, 75, 21, 32, 15, 11, 200, 32, 84, 129, 48, 66,
+			75, 21, 32, 15, 9, 198, 52, 244, 132, 20, 229, 0, 15, 9, 198, 88, 84, 148, 36, 176, 76, 15, 9, 198, 77, 1, 75, 81, 32, 76,
+			15, 9, 198, 44, 244, 144, 61, 32, 76, 15, 9, 198, 44, 240, 75, 76, 144, 76, 15, 9, 198, 24, 84, 212, 37, 96, 76, 15, 9, 198,
+			16, 147, 21, 88, 144, 76, 15, 9, 198, 12, 85, 1, 57, 64, 76, 15, 0, 11, 200, 61, 33, 193, 56, 241, 210, 4, 208, 15, 11, 200,
+			45, 38, 80, 80, 241, 210, 4, 208, 15, 9, 198, 77, 147, 70, 60, 226, 75, 15, 9, 198, 52, 148, 197, 72, 16, 128, 15, 9, 198, 24,
+			21, 143, 72, 16, 128, 15, 0, 12, 201, 80, 82, 206, 60, 195, 199, 37, 49, 82, 15, 12, 201, 64, 144, 78, 37, 53, 9, 56, 65, 64,
+			15, 12, 201, 45, 33, 79, 48, 84, 137, 56, 65, 64, 15, 12, 201, 32, 84, 147, 44, 84, 137, 56, 65, 64, 15, 12, 201, 25, 34, 83,
+			80, 84, 137, 56, 65, 64, 15, 12, 201, 8, 18, 203, 4, 229, 9, 56, 65, 64, 15, 8, 197, 53, 243, 129, 16, 80, 15, 0, 9, 198,
+			53, 150, 41, 16, 83, 64, 15, 13, 70, 20, 228, 197, 52, 35, 5, 21, 102, 114, 0, 47, 0, 7, 196, 64, 241, 83, 36, 15, 15, 204,
+			37, 36, 133, 88, 84, 147, 36, 34, 76, 37, 65, 84, 15, 15, 204, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 65, 84, 15, 11, 200,
+			61, 37, 15, 65, 241, 9, 76, 176, 15, 9, 198, 72, 81, 201, 60, 224, 76, 15, 9, 198, 61, 34, 71, 36, 224, 76, 15, 9, 198, 29,
+			85, 20, 85, 32, 76, 15, 9, 198, 25, 85, 20, 21, 32, 76, 15, 9, 198, 12, 84, 133, 9, 32, 76, 15, 9, 198, 8, 18, 203, 4,
+			224, 76, 15, 8, 197, 61, 1, 82, 4, 32, 15, 17, 3, 95, 49, 67, 36, 72, 15, 107, 6, 40, 50, 51, 108, 12, 86, 0, 0, 10,
+			199, 60, 97, 137, 12, 147, 133, 48, 15, 9, 198, 16, 243, 69, 77, 66, 75, 15, 14, 203, 73, 81, 11, 164, 34, 78, 28, 83, 147, 21,
+			32, 15, 9, 198, 88, 148, 149, 48, 83, 147, 15, 9, 198, 72, 84, 201, 16, 83, 147, 15, 10, 199, 77, 147, 129, 28, 241, 193, 48, 15,
+			10, 199, 4, 69, 133, 72, 34, 65, 48, 15, 0, 9, 198, 80, 84, 148, 37, 244, 128, 15, 9, 198, 61, 33, 9, 57, 244, 128, 15, 12,
+			201, 88, 84, 137, 24, 146, 193, 80, 147, 206, 15, 12, 201, 56, 245, 9, 24, 146, 193, 80, 147, 206, 15, 12, 201, 48, 81, 201, 80, 147,
+			65, 80, 147, 206, 15, 12, 201, 44, 243, 80, 48, 146, 193, 80, 147, 206, 15, 12, 201, 20, 180, 208, 48, 146, 193, 80, 147, 206, 15, 12,
+			201, 5, 81, 205, 20, 229, 1, 80, 147, 206, 15, 17, 206, 20, 180, 212, 21, 36, 137, 80, 244, 137, 4, 194, 84, 21, 64, 15, 13, 202,
+			77, 3, 206, 80, 19, 137, 77, 66, 83, 44, 15, 13, 202, 72, 84, 208, 37, 32, 84, 61, 34, 83, 44, 15, 13, 202, 44, 243, 66, 36,
+			224, 84, 61, 34, 83, 44, 15, 13, 202, 32, 83, 9, 60, 49, 78, 81, 34, 83, 44, 15, 8, 197, 24, 148, 211, 36, 192, 15, 7, 196,
+			64, 19, 137, 44, 15, 0, 10, 67, 81, 33, 64, 47, 34, 6, 116, 0, 7, 196, 52, 83, 15, 56, 15, 13, 202, 81, 32, 78, 77, 3,
+			211, 37, 66, 79, 56, 15, 13, 202, 72, 82, 212, 36, 98, 75, 5, 66, 79, 56, 15, 0, 7, 197, 8, 19, 12, 60, 224, 14, 203, 81,
+			32, 78, 76, 99, 210, 52, 21, 9, 60, 224, 15, 14, 203, 77, 68, 129, 80, 145, 137, 44, 21, 9, 60, 224, 15, 8, 197, 64, 84, 19,
+			36, 224, 15, 10, 69, 64, 145, 7, 36, 224, 21, 0, 47, 0, 0, 12, 201, 52, 83, 147, 81, 37, 65, 80, 147, 206, 15, 12, 201, 36,
+			229, 9, 52, 145, 1, 80, 147, 206, 15, 12, 201, 16, 148, 211, 60, 50, 65, 80, 147, 206, 15, 12, 201, 4, 32, 146, 21, 98, 65, 80,
+			147, 206, 15, 8, 197, 44, 20, 130, 60, 192, 15, 8, 197, 4, 180, 201, 4, 192, 15, 12, 3, 95, 49, 57, 50, 6, 114, 72, 14, 50,
+			0, 0, 7, 196, 48, 20, 9, 56, 15, 9, 198, 81, 48, 82, 37, 51, 69, 15, 9, 198, 80, 131, 205, 37, 51, 69, 15, 9, 198, 56,
+			18, 86, 37, 51, 69, 15, 9, 198, 48, 19, 65, 37, 51, 69, 15, 9, 198, 41, 81, 1, 37, 51, 69, 15, 9, 198, 24, 21, 86, 37,
+			51, 69, 15, 9, 198, 5, 67, 205, 37, 51, 69, 15, 9, 198, 5, 34, 193, 37, 51, 69, 15, 9, 198, 4, 99, 210, 37, 51, 69, 15,
+			11, 3, 95, 49, 56, 6, 118, 72, 14, 50, 0, 0, 8, 197, 64, 243, 80, 60, 224, 15, 10, 199, 85, 32, 129, 56, 148, 205, 20, 15,
+			10, 199, 48, 21, 9, 56, 148, 205, 20, 15, 10, 199, 44, 243, 15, 72, 148, 205, 20, 15, 10, 199, 28, 83, 210, 28, 148, 205, 20, 15,
+			10, 199, 9, 81, 4, 32, 148, 205, 20, 15, 8, 197, 64, 20, 21, 4, 224, 15, 9, 198, 61, 53, 9, 56, 21, 0, 15, 0, 9, 198,
+			49, 85, 135, 37, 34, 71, 15, 9, 198, 28, 85, 129, 48, 66, 71, 15, 0, 9, 198, 81, 34, 86, 36, 19, 0, 15, 0, 7, 196, 28,
+			83, 5, 72, 15, 9, 198, 48, 85, 75, 124, 210, 64, 15, 12, 201, 85, 66, 76, 37, 64, 82, 37, 51, 69, 15, 12, 201, 64, 20, 129,
+			48, 193, 76, 37, 51, 69, 15, 12, 201, 61, 4, 15, 73, 69, 78, 37, 51, 69, 15, 12, 201, 56, 21, 9, 60, 224, 76, 37, 51, 69,
+			15, 12, 201, 52, 48, 193, 73, 66, 25, 37, 51, 69, 15, 12, 201, 44, 19, 142, 36, 32, 76, 37, 51, 69, 15, 12, 201, 32, 148, 212,
+			61, 34, 67, 37, 51, 69, 15, 12, 201, 21, 81, 1, 36, 211, 206, 37, 51, 69, 15, 12, 201, 20, 181, 137, 48, 144, 146, 37, 51, 69,
+			15, 12, 201, 20, 179, 5, 45, 66, 67, 37, 51, 69, 15, 12, 201, 8, 82, 1, 88, 147, 210, 37, 51, 69, 15, 12, 201, 4, 115, 143,
+			77, 66, 67, 37, 51, 69, 15, 12, 201, 76, 82, 210, 21, 64, 82, 36, 21, 0, 15, 12, 201, 4, 229, 9, 45, 96, 82, 36, 21, 0,
+			15, 7, 196, 28, 19, 1, 72, 15, 7, 196, 64, 243, 1, 72, 15, 0, 12, 201, 77, 1, 75, 81, 35, 211, 44, 244, 0, 15, 10, 199,
+			80, 21, 84, 60, 195, 199, 36, 15, 10, 199, 76, 240, 201, 60, 195, 199, 36, 15, 10, 199, 76, 83, 73, 60, 195, 199, 36, 15, 10, 199,
+			65, 54, 75, 60, 195, 199, 36, 15, 10, 199, 44, 20, 132, 36, 19, 7, 36, 15, 10, 199, 33, 145, 18, 60, 195, 199, 36, 15, 10, 199,
+			25, 148, 201, 60, 195, 199, 36, 15, 10, 199, 21, 70, 77, 60, 195, 199, 36, 15, 10, 199, 5, 53, 18, 60, 195, 199, 36, 15, 9, 198,
+			64, 19, 70, 48, 85, 0, 15, 9, 198, 80, 83, 132, 20, 228, 192, 15, 9, 198, 80, 19, 135, 20, 228, 192, 15, 9, 198, 81, 34, 66,
+			84, 224, 76, 15, 9, 198, 72, 82, 212, 61, 32, 76, 15, 9, 198, 52, 20, 135, 36, 224, 76, 15, 0, 9, 198, 20, 161, 75, 80, 244,
+			128, 15, 12, 201, 76, 83, 147, 5, 66, 79, 56, 83, 0, 15, 9, 198, 88, 148, 201, 80, 84, 128, 15, 9, 198, 88, 19, 9, 16, 84,
+			128, 15, 9, 198, 81, 148, 9, 76, 84, 128, 15, 9, 198, 81, 84, 195, 32, 84, 128, 15, 9, 198, 80, 243, 5, 72, 84, 128, 15, 9,
+			198, 80, 149, 21, 48, 84, 128, 15, 9, 198, 77, 81, 134, 48, 84, 128, 15, 9, 198, 77, 64, 71, 56, 84, 128, 15, 9, 198, 77, 64,
+			70, 24, 84, 128, 15, 9, 198, 77, 3, 206, 76, 84, 128, 15, 9, 198, 76, 176, 77, 24, 84, 128, 15, 9, 198, 76, 176, 76, 64, 84,
+			128, 15, 9, 198, 76, 84, 1, 72, 84, 128, 15, 9, 198, 72, 84, 5, 80, 84, 128, 15, 9, 198, 72, 83, 143, 88, 84, 128, 15, 9,
+			198, 72, 83, 1, 80, 84, 128, 15, 9, 198, 72, 82, 210, 20, 84, 128, 15, 9, 198, 72, 81, 149, 76, 84, 128, 15, 9, 198, 64, 244,
+			148, 36, 84, 128, 15, 9, 198, 64, 194, 83, 76, 84, 128, 15, 9, 198, 64, 192, 71, 36, 84, 128, 15, 9, 198, 60, 225, 21, 48, 84,
+			128, 15, 9, 198, 52, 147, 137, 52, 84, 128, 15, 9, 198, 52, 83, 129, 28, 84, 128, 15, 9, 198, 52, 18, 213, 48, 84, 128, 15, 9,
+			198, 48, 147, 73, 80, 84, 128, 15, 9, 198, 44, 243, 15, 72, 84, 128, 15, 9, 198, 44, 17, 13, 36, 84, 128, 15, 9, 198, 41, 80,
+			137, 48, 84, 128, 15, 9, 198, 40, 243, 135, 48, 84, 128, 15, 9, 198, 36, 243, 137, 76, 84, 128, 15, 9, 198, 36, 229, 129, 16, 84,
+			128, 15, 9, 198, 36, 226, 84, 36, 84, 128, 15, 9, 198, 28, 19, 15, 64, 84, 128, 15, 9, 198, 28, 19, 15, 56, 84, 128, 15, 9,
+			198, 25, 32, 78, 44, 84, 128, 15, 9, 198, 21, 96, 75, 84, 84, 128, 15, 9, 198, 21, 64, 66, 48, 84, 128, 15, 9, 198, 20, 209,
+			78, 16, 84, 128, 15, 9, 198, 20, 208, 76, 40, 84, 128, 15, 9, 198, 20, 181, 137, 64, 84, 128, 15, 9, 198, 16, 83, 143, 80, 84,
+			128, 15, 9, 198, 16, 82, 193, 80, 84, 128, 15, 9, 198, 16, 19, 137, 76, 84, 128, 15, 9, 198, 5, 97, 82, 80, 84, 128, 15, 9,
+			198, 5, 69, 1, 44, 84, 128, 15, 9, 198, 4, 67, 213, 12, 84, 128, 15, 9, 198, 76, 19, 79, 88, 20, 128, 15, 9, 198, 9, 33,
+			86, 36, 20, 128, 15, 9, 198, 5, 34, 201, 88, 20, 128, 15, 0, 28, 67, 30, 148, 128, 81, 4, 132, 34, 15, 89, 121, 57, 15, 47,
+			6, 36, 55, 0, 82, 115, 105, 103, 32, 116, 105, 108, 32, 9, 198, 8, 145, 78, 56, 19, 0, 15, 11, 3, 95, 49, 49, 6, 116, 55,
+			84, 13, 0, 0, 9, 198, 8, 195, 206, 16, 147, 133, 15, 7, 196, 72, 245, 5, 72, 15, 7, 196, 16, 245, 5, 72, 15, 7, 196, 5,
+			5, 5, 72, 15, 7, 196, 56, 245, 1, 72, 15, 7, 196, 49, 81, 193, 72, 15, 7, 196, 12, 149, 1, 72, 15, 9, 3, 95, 49, 48,
+			47, 6, 111, 0, 0, 9, 198, 88, 148, 135, 36, 224, 76, 15, 9, 198, 56, 21, 9, 60, 224, 76, 15, 9, 198, 44, 243, 77, 84, 224,
+			76, 15, 9, 198, 44, 19, 142, 36, 32, 76, 15, 13, 68, 24, 244, 132, 36, 83, 109, 72, 6, 111, 0, 8, 13, 3, 95, 49, 51, 47,
+			51, 6, 120, 72, 14, 50, 0, 0, 9, 198, 88, 245, 5, 72, 147, 135, 15, 9, 198, 88, 148, 197, 72, 147, 135, 15, 9, 198, 72, 81,
+			197, 72, 147, 135, 15, 9, 198, 72, 20, 197, 72, 147, 135, 15, 9, 198, 65, 84, 133, 72, 147, 135, 15, 9, 198, 64, 243, 5, 72, 147,
+			135, 15, 9, 198, 61, 5, 5, 72, 147, 135, 15, 9, 198, 60, 194, 69, 72, 147, 135, 15, 9, 198, 56, 245, 5, 72, 147, 135, 15, 9,
+			198, 56, 81, 197, 72, 147, 135, 15, 9, 198, 48, 81, 197, 72, 147, 135, 15, 9, 198, 48, 20, 197, 72, 147, 135, 15, 9, 198, 48, 18,
+			197, 72, 147, 135, 15, 9, 198, 41, 81, 197, 72, 147, 135, 15, 9, 198, 28, 83, 5, 72, 147, 135, 15, 9, 198, 16, 245, 5, 72, 147,
+			135, 15, 9, 198, 12, 149, 5, 72, 147, 135, 15, 9, 198, 8, 20, 197, 72, 147, 135, 15, 9, 198, 5, 5, 5, 72, 147, 135, 15, 10,
+			199, 52, 146, 210, 60, 34, 69, 48, 15, 9, 198, 80, 82, 212, 60, 226, 75, 15, 10, 3, 95, 49, 50, 47, 6, 108, 55, 0, 0, 12,
+			201, 65, 39, 208, 61, 50, 84, 36, 243, 128, 15, 12, 201, 44, 243, 147, 81, 34, 75, 80, 147, 206, 15, 12, 201, 36, 225, 140, 4, 211,
+			65, 80, 147, 206, 15, 12, 201, 5, 37, 9, 45, 83, 1, 80, 147, 206, 15, 10, 199, 77, 69, 68, 21, 34, 78, 28, 15, 13, 202, 77,
+			68, 129, 8, 17, 19, 21, 34, 78, 28, 15, 10, 199, 76, 19, 4, 21, 34, 78, 28, 15, 13, 202, 64, 20, 129, 25, 32, 83, 21, 34,
+			78, 28, 15, 10, 199, 64, 19, 16, 21, 34, 78, 28, 15, 10, 199, 61, 134, 68, 21, 34, 78, 28, 15, 10, 199, 61, 130, 68, 21, 34,
+			78, 28, 15, 10, 199, 52, 21, 20, 21, 34, 78, 28, 15, 10, 199, 45, 34, 68, 21, 34, 78, 28, 15, 10, 199, 45, 33, 77, 21, 34,
+			78, 28, 15, 10, 199, 41, 84, 212, 21, 34, 78, 28, 15, 10, 199, 37, 51, 204, 21, 34, 78, 28, 15, 13, 202, 33, 148, 15, 77, 64,
+			83, 21, 34, 78, 28, 15, 10, 199, 20, 213, 76, 21, 34, 78, 28, 15, 13, 202, 16, 243, 69, 77, 66, 67, 21, 34, 78, 28, 15, 10,
+			199, 16, 243, 12, 21, 34, 78, 28, 15, 8, 197, 76, 84, 137, 20, 192, 15, 8, 197, 80, 243, 147, 36, 192, 15, 8, 197, 88, 84, 147,
+			4, 192, 15, 11, 200, 77, 80, 140, 36, 210, 78, 4, 192, 15, 13, 3, 95, 49, 53, 83, 6, 115, 65, 72, 14, 50, 0, 0, 10, 199,
+			44, 17, 1, 88, 84, 169, 76, 15, 10, 199, 36, 225, 133, 45, 66, 105, 76, 15, 11, 200, 84, 68, 193, 56, 84, 137, 56, 112, 15, 14,
+			203, 84, 68, 1, 72, 49, 76, 48, 84, 137, 56, 112, 15, 11, 200, 80, 16, 149, 48, 84, 137, 56, 112, 15, 11, 200, 72, 84, 213, 52,
+			84, 137, 56, 112, 15, 14, 203, 72, 83, 1, 80, 149, 137, 76, 84, 137, 56, 112, 15, 11, 200, 64, 195, 205, 8, 84, 137, 56, 112, 15,
+			11, 200, 52, 243, 137, 80, 84, 137, 56, 112, 15, 11, 200, 45, 38, 80, 80, 84, 137, 56, 112, 15, 11, 200, 36, 226, 1, 48, 84, 137,
+			56, 112, 15, 14, 203, 36, 225, 11, 4, 194, 213, 48, 84, 137, 56, 112, 15, 11, 200, 28, 83, 73, 56, 84, 137, 56, 112, 15, 11, 200,
+			24, 242, 213, 76, 84, 137, 56, 112, 15, 11, 200, 9, 35, 206, 104, 84, 137, 56, 112, 15, 11, 200, 4, 67, 208, 80, 84, 137, 56, 112,
+			15, 8, 197, 65, 39, 204, 5, 64, 15, 7, 196, 60, 181, 1, 56, 16, 14, 3, 95, 49, 52, 83, 57, 6, 39, 34, 72, 14, 50, 0,
+			0, 11, 200, 81, 80, 133, 72, 181, 76, 165, 48, 15, 10, 199, 72, 83, 143, 88, 21, 41, 72, 15, 10, 199, 20, 180, 212, 21, 34, 105,
+			72, 15, 9, 198, 5, 67, 205, 37, 53, 0, 15, 8, 197, 80, 19, 80, 60, 224, 15, 14, 203, 44, 192, 83, 76, 145, 137, 44, 21, 9,
+			60, 224, 15, 8, 197, 5, 82, 211, 36, 224, 15, 10, 199, 4, 225, 18, 60, 118, 78, 36, 15, 11, 200, 56, 144, 193, 72, 17, 213, 4,
+			224, 15, 8, 197, 89, 83, 11, 4, 224, 16, 10, 199, 81, 34, 75, 61, 64, 71, 20, 15, 10, 199, 72, 84, 15, 73, 64, 71, 20, 15,
+			10, 199, 21, 33, 77, 37, 64, 71, 20, 15, 10, 199, 5, 32, 137, 81, 32, 71, 20, 15, 12, 3, 95, 49, 55, 89, 6, 133, 72, 14,
+			50, 0, 0, 12, 201, 76, 147, 135, 5, 3, 210, 20, 19, 128, 15, 12, 201, 65, 81, 82, 80, 244, 137, 12, 19, 128, 15, 14, 3, 95,
+			49, 54, 89, 6, 121, 57, 89, 72, 14, 50, 0, 0, 23, 73, 77, 21, 65, 72, 81, 1, 56, 49, 64, 89, 49, 58, 6, 115, 108, 72,
+			117, 12, 50, 89, 0, 9, 198, 76, 181, 76, 65, 69, 82, 15, 9, 198, 65, 83, 16, 37, 69, 82, 15, 9, 198, 64, 20, 148, 37, 69,
+			82, 15, 9, 198, 16, 240, 197, 57, 69, 82, 15, 9, 198, 16, 146, 212, 5, 69, 82, 15, 11, 200, 89, 83, 7, 5, 34, 84, 21, 64,
+			15, 11, 200, 88, 148, 203, 61, 50, 84, 21, 64, 15, 11, 200, 84, 211, 210, 4, 194, 84, 21, 64, 15, 11, 200, 80, 242, 211, 36, 50,
+			84, 21, 64, 15, 11, 200, 77, 80, 148, 36, 194, 84, 21, 64, 15, 11, 200, 77, 69, 80, 36, 66, 84, 21, 64, 15, 11, 200, 77, 65,
+			82, 36, 194, 84, 21, 64, 15, 11, 200, 77, 64, 66, 36, 194, 84, 21, 64, 15, 11, 200, 76, 240, 201, 4, 194, 84, 21, 64, 15, 11,
+			200, 76, 84, 150, 36, 194, 84, 21, 64, 15, 11, 200, 65, 81, 82, 36, 194, 84, 21, 64, 15, 11, 200, 65, 80, 140, 36, 50, 84, 21,
+			64, 15, 11, 200, 64, 197, 82, 4, 194, 84, 21, 64, 15, 11, 200, 64, 84, 134, 36, 66, 84, 21, 64, 15, 11, 200, 64, 21, 5, 72,
+			226, 84, 21, 64, 15, 11, 200, 64, 20, 211, 37, 98, 84, 21, 64, 15, 11, 200, 56, 244, 141, 4, 194, 84, 21, 64, 15, 11, 200, 52,
+			244, 148, 4, 194, 84, 21, 64, 15, 11, 200, 52, 244, 130, 36, 66, 84, 21, 64, 15, 11, 200, 52, 241, 5, 72, 226, 84, 21, 64, 15,
+			11, 200, 52, 83, 148, 4, 194, 84, 21, 64, 15, 11, 200, 52, 21, 5, 72, 226, 84, 21, 64, 15, 11, 200, 52, 20, 211, 37, 98, 84,
+			21, 64, 15, 11, 200, 48, 147, 133, 5, 34, 84, 21, 64, 15, 11, 200, 48, 146, 214, 36, 66, 84, 21, 64, 15, 11, 200, 48, 20, 195,
+			37, 98, 84, 21, 64, 15, 11, 200, 45, 84, 137, 61, 50, 84, 21, 64, 15, 11, 200, 44, 243, 139, 5, 98, 84, 21, 64, 15, 11, 200,
+			44, 243, 77, 84, 226, 84, 21, 64, 15, 11, 200, 44, 21, 83, 4, 194, 84, 21, 64, 15, 11, 200, 40, 245, 137, 4, 194, 84, 21, 64,
+			15, 11, 200, 36, 229, 5, 57, 50, 84, 21, 64, 15, 11, 200, 36, 229, 5, 29, 34, 84, 21, 64, 15, 11, 200, 36, 225, 5, 52, 226,
+			84, 21, 64, 15, 11, 200, 29, 32, 86, 36, 66, 84, 21, 64, 15, 11, 200, 28, 83, 137, 4, 194, 84, 21, 64, 15, 11, 200, 25, 37,
+			71, 4, 194, 84, 21, 64, 15, 11, 200, 25, 34, 86, 60, 194, 84, 21, 64, 15, 11, 200, 25, 34, 71, 36, 66, 84, 21, 64, 15, 11,
+			200, 25, 32, 71, 36, 194, 84, 21, 64, 15, 11, 200, 24, 244, 141, 4, 194, 84, 21, 64, 15, 11, 200, 24, 84, 212, 37, 98, 84, 21,
+			64, 15, 11, 200, 24, 84, 148, 36, 194, 84, 21, 64, 15, 11, 200, 24, 18, 212, 36, 50, 84, 21, 64, 15, 11, 200, 17, 82, 212, 36,
+			194, 84, 21, 64, 15, 11, 200, 16, 149, 133, 73, 50, 84, 21, 64, 15, 11, 200, 16, 81, 143, 72, 210, 84, 21, 64, 15, 11, 200, 12,
+			83, 5, 9, 34, 84, 21, 64, 15, 11, 200, 9, 37, 84, 4, 194, 84, 21, 64, 15, 11, 200, 5, 67, 206, 4, 194, 84, 21, 64, 15,
+			11, 200, 4, 229, 9, 45, 98, 84, 21, 64, 15, 11, 200, 4, 227, 206, 100, 210, 84, 21, 64, 15, 11, 200, 4, 226, 77, 61, 50, 84,
+			21, 64, 15, 11, 200, 4, 211, 210, 4, 194, 84, 21, 64, 15, 11, 200, 4, 208, 137, 29, 82, 84, 21, 64, 15, 11, 200, 4, 181, 21,
+			4, 194, 84, 21, 64, 15, 11, 200, 4, 36, 213, 72, 66, 84, 21, 64, 15, 11, 200, 4, 35, 143, 72, 210, 84, 21, 64, 15, 13, 202,
+			89, 83, 11, 4, 226, 83, 21, 34, 78, 28, 15, 13, 202, 81, 32, 78, 77, 2, 82, 21, 34, 78, 28, 15, 13, 202, 81, 32, 78, 76,
+			97, 82, 21, 34, 78, 28, 15, 13, 202, 80, 83, 210, 21, 66, 83, 21, 34, 78, 28, 15, 13, 202, 80, 83, 5, 29, 32, 70, 21, 34,
+			78, 28, 15, 13, 202, 77, 84, 5, 73, 98, 83, 21, 34, 78, 28, 15, 13, 202, 76, 177, 77, 5, 66, 83, 21, 34, 78, 28, 15, 13,
+			202, 76, 19, 139, 80, 147, 206, 21, 34, 78, 28, 15, 13, 202, 64, 20, 129, 29, 32, 70, 21, 34, 78, 28, 15, 13, 202, 60, 34, 133,
+			45, 66, 86, 21, 34, 78, 28, 15, 13, 202, 56, 20, 139, 61, 66, 83, 21, 34, 78, 28, 15, 13, 202, 52, 241, 5, 72, 226, 83, 21,
+			34, 78, 28, 15, 13, 202, 52, 84, 131, 21, 34, 83, 21, 34, 78, 28, 15, 13, 202, 52, 17, 206, 21, 66, 83, 21, 34, 78, 28, 15,
+			13, 202, 44, 243, 148, 4, 210, 78, 21, 34, 78, 28, 15, 13, 202, 44, 194, 77, 5, 66, 83, 21, 34, 78, 28, 15, 13, 202, 44, 147,
+			15, 52, 85, 18, 21, 34, 78, 28, 15, 13, 202, 44, 20, 130, 60, 226, 83, 21, 34, 78, 28, 15, 13, 202, 33, 148, 14, 61, 66, 83,
+			21, 34, 78, 28, 15, 13, 202, 32, 148, 212, 61, 34, 83, 21, 34, 78, 28, 15, 13, 202, 28, 195, 194, 4, 194, 83, 21, 34, 78, 28,
+			15, 13, 202, 28, 129, 84, 80, 242, 83, 21, 34, 78, 28, 15, 13, 202, 28, 20, 142, 37, 51, 206, 21, 34, 78, 28, 15, 13, 202, 24,
+			245, 15, 29, 32, 70, 21, 34, 78, 28, 15, 13, 202, 24, 147, 13, 5, 66, 83, 21, 34, 78, 28, 15, 13, 202, 17, 32, 77, 5, 66,
+			83, 21, 34, 78, 28, 15, 13, 202, 16, 241, 205, 5, 66, 83, 21, 34, 78, 28, 15, 13, 202, 16, 83, 196, 61, 34, 83, 21, 34, 78,
+			28, 15, 13, 202, 5, 35, 205, 5, 66, 83, 21, 34, 78, 28, 15, 13, 202, 4, 227, 206, 100, 210, 83, 21, 34, 78, 28, 15, 13, 202,
+			4, 224, 76, 60, 114, 83, 21, 34, 78, 28, 15, 13, 202, 4, 176, 68, 20, 210, 83, 21, 34, 78, 28, 15, 8, 197, 4, 224, 66, 60,
+			192, 15, 15, 69, 76, 84, 129, 36, 192, 89, 36, 34, 6, 35, 57, 0, 15, 12, 201, 56, 243, 131, 32, 19, 1, 56, 49, 64, 15, 12,
+			201, 52, 84, 193, 48, 194, 65, 56, 49, 64, 15, 12, 201, 44, 243, 139, 85, 36, 133, 56, 49, 64, 15, 12, 201, 36, 229, 15, 48, 84,
+			129, 56, 49, 64, 15, 11, 200, 52, 20, 147, 44, 19, 12, 5, 64, 15, 8, 197, 64, 84, 137, 4, 192, 15, 8, 197, 56, 244, 141, 4,
+			192, 15, 8, 197, 52, 19, 149, 4, 192, 15, 8, 197, 40, 245, 137, 4, 192, 15, 8, 197, 28, 83, 137, 4, 192, 15, 0, 12, 201, 16,
+			85, 5, 72, 210, 78, 37, 53, 0, 15, 13, 202, 81, 32, 78, 77, 2, 82, 5, 66, 79, 56, 15, 7, 196, 65, 34, 79, 56, 15, 13,
+			202, 44, 243, 148, 4, 210, 78, 5, 66, 79, 56, 15, 13, 202, 44, 243, 12, 4, 35, 210, 5, 66, 79, 56, 15, 13, 202, 32, 19, 12,
+			84, 50, 78, 5, 66, 79, 56, 15, 13, 202, 20, 180, 208, 5, 68, 137, 5, 66, 79, 56, 15, 10, 199, 52, 19, 137, 65, 83, 5, 72,
+			15, 10, 199, 48, 81, 201, 80, 147, 69, 72, 15, 15, 3, 95, 55, 88, 107, 118, 55, 83, 57, 6, 116, 34, 89, 0, 0, 9, 198, 29,
+			32, 86, 37, 65, 84, 15, 9, 198, 4, 227, 149, 37, 65, 84, 15, 8, 197, 64, 19, 13, 36, 224, 15, 8, 197, 9, 32, 77, 36, 224,
+			15, 9, 198, 64, 21, 9, 20, 229, 0, 15, 9, 198, 76, 149, 21, 21, 33, 84, 15, 9, 198, 52, 20, 139, 21, 33, 84, 15, 9, 198,
+			8, 192, 83, 21, 33, 84, 15, 9, 198, 64, 20, 211, 4, 229, 0, 15, 0, 10, 199, 5, 85, 15, 72, 149, 5, 80, 15, 12, 201, 44,
+			243, 12, 5, 66, 79, 56, 84, 128, 15, 12, 201, 12, 83, 148, 72, 19, 9, 76, 84, 128, 15, 10, 199, 80, 82, 206, 60, 180, 129, 80,
+			15, 10, 199, 77, 3, 206, 76, 244, 129, 80, 15, 10, 199, 72, 85, 137, 76, 244, 129, 80, 15, 10, 199, 64, 197, 84, 60, 180, 129, 80,
+			15, 10, 199, 64, 83, 147, 36, 243, 129, 80, 15, 10, 199, 44, 243, 210, 16, 147, 129, 80, 15, 10, 199, 16, 84, 212, 36, 195, 1, 80,
+			15, 0, 18, 70, 40, 19, 66, 61, 33, 64, 72, 57, 121, 65, 71, 39, 51, 6, 115, 0, 16, 205, 20, 226, 5, 17, 50, 207, 52, 208,
+			84, 21, 34, 78, 28, 15, 9, 198, 80, 16, 149, 21, 33, 64, 15, 9, 198, 73, 82, 78, 21, 33, 64, 15, 9, 198, 64, 20, 211, 21,
+			33, 64, 15, 9, 198, 56, 244, 141, 21, 33, 64, 15, 9, 198, 29, 32, 86, 21, 33, 64, 15, 9, 198, 28, 195, 211, 21, 33, 64, 15,
+			9, 198, 25, 32, 83, 21, 33, 64, 15, 9, 198, 24, 84, 137, 21, 33, 64, 15, 9, 198, 20, 193, 86, 21, 33, 64, 15, 9, 198, 9,
+			37, 78, 21, 33, 64, 15, 15, 70, 12, 128, 71, 4, 195, 0, 91, 118, 81, 6, 118, 55, 0, 0, 9, 198, 72, 85, 9, 72, 17, 5,
+			15, 9, 198, 64, 19, 9, 76, 17, 5, 15, 9, 198, 48, 147, 79, 56, 17, 5, 15, 9, 198, 48, 83, 79, 56, 17, 5, 15, 20, 70,
+			45, 37, 83, 80, 17, 5, 49, 34, 129, 89, 72, 6, 117, 12, 86, 13, 0, 15, 9, 198, 44, 19, 143, 56, 17, 5, 15, 9, 198, 28,
+			19, 15, 64, 17, 5, 15, 0, 11, 200, 97, 147, 15, 29, 32, 70, 21, 32, 15, 11, 200, 96, 84, 143, 29, 32, 70, 21, 32, 15, 11,
+			200, 81, 148, 15, 29, 32, 70, 21, 32, 15, 11, 200, 81, 32, 78, 77, 2, 82, 21, 32, 15, 11, 200, 81, 32, 78, 76, 97, 82, 21,
+			32, 15, 11, 200, 76, 81, 9, 52, 83, 148, 21, 32, 15, 11, 200, 76, 19, 139, 80, 147, 206, 21, 32, 15, 11, 200, 72, 85, 129, 12,
+			50, 78, 21, 32, 15, 11, 200, 65, 35, 214, 36, 19, 148, 21, 32, 15, 11, 200, 65, 35, 199, 72, 81, 9, 21, 32, 15, 11, 200, 64,
+			85, 9, 80, 147, 206, 21, 32, 15, 11, 200, 64, 20, 129, 29, 32, 70, 21, 32, 15, 11, 200, 60, 34, 133, 45, 66, 86, 21, 32, 15,
+			11, 200, 48, 149, 15, 29, 32, 70, 21, 32, 15, 11, 200, 44, 243, 148, 4, 210, 78, 21, 32, 15, 11, 200, 44, 243, 132, 61, 69, 9,
+			21, 32, 15, 11, 200, 44, 243, 12, 4, 35, 210, 21, 32, 15, 11, 200, 44, 147, 15, 52, 85, 18, 21, 32, 15, 11, 200, 44, 20, 129,
+			8, 147, 137, 21, 32, 15, 11, 200, 36, 229, 5, 73, 97, 78, 21, 32, 15, 11, 200, 36, 226, 207, 52, 211, 196, 21, 32, 15, 11, 200,
+			32, 19, 12, 84, 50, 78, 21, 32, 15, 11, 200, 28, 20, 142, 37, 51, 206, 21, 32, 15, 11, 200, 25, 33, 75, 88, 83, 148, 21, 32,
+			15, 11, 200, 28, 83, 133, 80, 16, 140, 21, 32, 15, 11, 200, 20, 180, 208, 5, 68, 137, 21, 32, 15, 11, 200, 4, 178, 210, 20, 66,
+			84, 21, 32, 15, 11, 200, 16, 242, 213, 52, 83, 148, 5, 32, 15, 9, 198, 9, 34, 83, 4, 229, 0, 15, 12, 3, 95, 49, 111, 83,
+			132, 34, 89, 72, 14, 0, 0, 18, 207, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 197, 72, 147, 135, 15, 18, 207, 36, 228, 212,
+			37, 69, 84, 36, 243, 129, 48, 148, 197, 72, 147, 135, 15, 12, 201, 76, 243, 9, 16, 20, 137, 76, 84, 128, 15, 12, 201, 76, 82, 213,
+			48, 20, 137, 76, 84, 128, 15, 12, 201, 72, 82, 207, 28, 227, 211, 12, 84, 128, 15, 12, 201, 64, 243, 25, 52, 84, 137, 76, 84, 128,
+			15, 12, 201, 64, 192, 83, 80, 145, 137, 12, 84, 128, 15, 12, 201, 52, 147, 9, 80, 20, 137, 76, 84, 128, 15, 12, 201, 61, 3, 65,
+			28, 20, 201, 56, 84, 128, 15, 12, 201, 45, 96, 78, 80, 145, 137, 12, 84, 128, 15, 12, 201, 44, 243, 139, 72, 85, 9, 76, 84, 128,
+			15, 12, 201, 4, 98, 78, 77, 64, 76, 48, 84, 128, 15, 12, 201, 36, 65, 78, 80, 145, 137, 12, 84, 128, 15, 12, 201, 32, 145, 82,
+			5, 34, 201, 76, 84, 128, 15, 12, 201, 29, 147, 78, 5, 53, 9, 12, 84, 128, 15, 12, 201, 32, 243, 73, 48, 85, 9, 44, 84, 128,
+			15, 12, 201, 16, 144, 76, 20, 181, 9, 44, 84, 128, 15, 0, 9, 198, 88, 148, 203, 61, 49, 64, 15, 9, 198, 44, 195, 210, 61, 49,
+			64, 15, 9, 198, 24, 144, 146, 61, 49, 64, 15, 9, 198, 12, 243, 80, 61, 49, 64, 15, 11, 200, 124, 118, 80, 80, 243, 15, 28, 144,
+			15, 9, 198, 16, 149, 82, 21, 49, 64, 15, 9, 198, 16, 19, 65, 77, 50, 78, 15, 11, 200, 20, 180, 203, 72, 83, 69, 57, 64, 15,
+			10, 199, 64, 84, 212, 36, 193, 78, 76, 15, 10, 199, 20, 180, 201, 77, 65, 78, 76, 15, 10, 199, 16, 145, 134, 21, 33, 78, 76, 15,
+			11, 200, 72, 84, 212, 5, 84, 129, 57, 64, 15, 11, 200, 72, 81, 201, 77, 68, 129, 57, 64, 15, 13, 72, 76, 85, 20, 48, 83, 69,
+			57, 64, 21, 0, 47, 0, 10, 67, 16, 21, 5, 72, 115, 57, 47, 0, 0, 12, 201, 44, 243, 134, 36, 65, 78, 80, 145, 76, 15, 9,
+			198, 76, 192, 86, 60, 98, 76, 15, 0, 12, 201, 65, 39, 198, 21, 33, 78, 80, 145, 76, 15, 9, 198, 80, 21, 1, 72, 148, 203, 15,
+			9, 198, 44, 147, 133, 80, 148, 203, 15, 9, 198, 44, 147, 133, 76, 148, 203, 15, 9, 198, 36, 70, 76, 48, 148, 203, 15, 9, 198, 20,
+			209, 129, 80, 148, 203, 15, 9, 198, 8, 245, 1, 56, 148, 203, 15, 9, 198, 5, 34, 193, 16, 148, 203, 15, 9, 198, 80, 243, 5, 72,
+			19, 147, 15, 9, 198, 72, 83, 5, 88, 19, 147, 15, 0, 12, 201, 44, 243, 210, 16, 147, 129, 80, 147, 206, 15, 12, 201, 44, 243, 147,
+			20, 180, 129, 80, 147, 206, 15, 12, 201, 36, 225, 137, 49, 68, 129, 80, 147, 206, 15, 12, 201, 36, 225, 15, 64, 84, 129, 80, 147, 206,
+			15, 12, 201, 24, 192, 71, 20, 195, 1, 80, 147, 206, 15, 12, 201, 16, 148, 212, 72, 144, 149, 80, 147, 206, 15, 12, 201, 16, 83, 149,
+			57, 66, 65, 80, 147, 206, 15, 9, 198, 64, 20, 129, 24, 98, 78, 15, 8, 197, 64, 83, 131, 36, 192, 15, 8, 197, 44, 243, 131, 36,
+			192, 15, 12, 201, 32, 147, 12, 21, 42, 68, 36, 19, 128, 15, 10, 199, 4, 36, 212, 36, 225, 78, 76, 15, 0, 13, 202, 44, 243, 134,
+			36, 117, 82, 5, 66, 79, 56, 15, 13, 202, 44, 243, 134, 20, 65, 82, 5, 66, 79, 56, 15, 13, 202, 36, 225, 9, 88, 145, 21, 5,
+			66, 79, 56, 15, 13, 202, 4, 195, 9, 81, 65, 82, 5, 66, 79, 56, 15, 13, 202, 4, 113, 204, 85, 66, 78, 5, 66, 79, 56, 15,
+			14, 4, 95, 97, 99, 117, 35, 49, 57, 6, 40, 12, 47, 0, 0, 9, 198, 65, 39, 211, 36, 66, 69, 15, 10, 3, 95, 50, 111, 117,
+			50, 13, 50, 0, 12, 4, 95, 99, 114, 108, 49, 6, 112, 12, 55, 0, 0, 18, 207, 8, 83, 133, 16, 146, 212, 36, 225, 82, 44, 195,
+			211, 80, 84, 128, 68, 12, 201, 24, 243, 11, 48, 244, 137, 77, 66, 75, 15, 0, 9, 198, 4, 195, 95, 29, 66, 71, 15, 12, 201, 84,
+			226, 70, 61, 35, 73, 76, 209, 64, 15, 12, 201, 77, 84, 146, 20, 19, 9, 76, 209, 64, 15, 12, 201, 76, 177, 80, 80, 144, 201, 76,
+			209, 64, 15, 12, 201, 72, 17, 9, 44, 19, 9, 76, 209, 64, 15, 12, 201, 65, 32, 71, 52, 21, 9, 76, 209, 64, 15, 12, 201, 64,
+			21, 18, 36, 245, 9, 76, 209, 64, 15, 12, 201, 56, 85, 84, 72, 19, 9, 76, 209, 64, 15, 12, 201, 56, 21, 21, 72, 19, 9, 76,
+			209, 64, 15, 12, 201, 52, 84, 211, 36, 19, 137, 76, 209, 64, 15, 12, 201, 48, 144, 133, 72, 19, 9, 76, 209, 64, 15, 12, 201, 44,
+			243, 134, 61, 35, 73, 76, 209, 64, 15, 12, 201, 44, 20, 9, 80, 19, 9, 76, 209, 64, 15, 12, 201, 28, 227, 211, 80, 144, 201, 76,
+			209, 64, 15, 12, 201, 9, 32, 72, 52, 19, 137, 76, 209, 64, 15, 12, 201, 4, 229, 1, 28, 243, 137, 76, 209, 64, 15, 8, 197, 48,
+			147, 133, 4, 192, 15, 8, 197, 48, 16, 137, 4, 192, 15, 0, 10, 199, 80, 147, 2, 165, 35, 9, 28, 15, 7, 196, 49, 84, 9, 56,
+			15, 0, 8, 197, 8, 81, 21, 36, 224, 67, 11, 200, 80, 147, 2, 164, 161, 76, 36, 112, 15, 11, 200, 65, 228, 133, 28, 225, 76, 36,
+			112, 15, 12, 201, 56, 244, 132, 88, 84, 212, 48, 145, 192, 15, 12, 201, 44, 243, 148, 72, 18, 212, 48, 145, 192, 15, 11, 200, 24, 244,
+			142, 164, 161, 76, 36, 112, 15, 9, 198, 36, 179, 206, 37, 50, 192, 15, 10, 199, 52, 147, 12, 20, 227, 137, 20, 15, 10, 199, 13, 144,
+			78, 44, 19, 9, 20, 15, 9, 198, 16, 81, 137, 12, 149, 0, 15, 8, 197, 8, 81, 21, 36, 224, 15, 10, 199, 21, 81, 133, 52, 148,
+			205, 20, 15, 9, 198, 44, 19, 9, 24, 21, 0, 15, 4, 193, 160, 43, 0, 12, 201, 76, 198, 78, 28, 83, 1, 29, 66, 71, 15, 0,
+			9, 198, 28, 241, 4, 124, 66, 71, 15, 13, 202, 28, 83, 142, 20, 212, 203, 84, 83, 9, 28, 15, 0, 13, 202, 65, 81, 19, 20, 202,
+			74, 21, 35, 9, 28, 15, 0, 11, 200, 64, 243, 25, 32, 148, 212, 61, 32, 15, 8, 197, 76, 145, 206, 21, 32, 15, 8, 197, 49, 82,
+			210, 21, 32, 15, 8, 197, 33, 145, 18, 21, 32, 15, 8, 197, 25, 84, 142, 21, 32, 15, 11, 200, 80, 147, 18, 120, 65, 76, 36, 112,
+			15, 11, 200, 61, 4, 223, 81, 65, 76, 36, 112, 15, 11, 200, 60, 212, 223, 81, 65, 76, 36, 112, 15, 11, 200, 4, 228, 212, 164, 65,
+			76, 36, 112, 15, 13, 202, 20, 180, 193, 52, 147, 129, 80, 244, 137, 20, 15, 9, 198, 64, 20, 129, 44, 149, 0, 15, 9, 198, 16, 243,
+			5, 72, 149, 0, 15, 9, 198, 65, 34, 79, 72, 21, 0, 15, 9, 198, 53, 240, 197, 56, 21, 0, 15, 9, 198, 52, 17, 18, 36, 112,
+			76, 15, 9, 198, 36, 212, 5, 72, 144, 76, 15, 12, 3, 95, 51, 111, 47, 34, 115, 72, 57, 14, 0, 0, 8, 197, 52, 20, 139, 165,
+			32, 15, 8, 197, 24, 20, 131, 165, 32, 15, 9, 198, 64, 144, 193, 16, 244, 128, 15, 9, 198, 77, 3, 206, 76, 244, 128, 15, 9, 198,
+			76, 83, 129, 80, 244, 128, 15, 9, 198, 16, 243, 129, 80, 244, 128, 15, 19, 70, 8, 83, 9, 104, 148, 203, 71, 36, 55, 37, 12, 89,
+			37, 89, 81, 0, 66, 9, 198, 80, 20, 137, 24, 84, 128, 15, 9, 198, 76, 180, 129, 88, 84, 128, 15, 9, 198, 64, 20, 129, 24, 84,
+			128, 15, 9, 198, 64, 19, 143, 72, 84, 128, 15, 9, 198, 60, 178, 213, 64, 84, 128, 15, 9, 198, 56, 21, 137, 28, 84, 128, 15, 9,
+			198, 53, 84, 201, 12, 84, 128, 15, 9, 198, 48, 16, 143, 72, 84, 128, 15, 9, 198, 45, 96, 68, 72, 84, 128, 15, 9, 198, 37, 36,
+			137, 80, 84, 128, 15, 9, 198, 29, 32, 68, 84, 84, 128, 15, 9, 198, 25, 35, 212, 80, 84, 128, 15, 9, 198, 21, 96, 76, 84, 84,
+			128, 15, 9, 198, 20, 228, 201, 48, 84, 128, 15, 9, 198, 20, 213, 76, 28, 84, 128, 15, 9, 198, 17, 81, 84, 80, 84, 128, 15, 9,
+			198, 17, 33, 83, 76, 84, 128, 15, 9, 198, 16, 83, 79, 48, 84, 128, 15, 9, 198, 16, 82, 213, 64, 84, 128, 15, 9, 198, 16, 82,
+			207, 72, 84, 128, 15, 9, 198, 4, 227, 143, 80, 84, 128, 15, 9, 198, 4, 35, 206, 56, 84, 128, 15, 9, 198, 76, 21, 1, 56, 148,
+			203, 15, 9, 198, 48, 85, 137, 80, 148, 203, 15, 9, 198, 32, 80, 146, 4, 148, 203, 15, 9, 198, 21, 84, 129, 76, 148, 203, 15, 9,
+			198, 16, 83, 9, 72, 148, 203, 15, 9, 198, 8, 83, 9, 104, 148, 203, 15, 9, 198, 5, 165, 5, 44, 148, 203, 15, 9, 198, 76, 83,
+			73, 56, 20, 128, 15, 9, 198, 41, 80, 137, 48, 20, 128, 15, 12, 201, 80, 84, 146, 37, 67, 210, 36, 19, 0, 15, 0, 10, 199, 81,
+			84, 142, 21, 34, 78, 28, 15, 10, 199, 80, 18, 212, 21, 34, 78, 28, 15, 10, 199, 80, 18, 211, 21, 34, 78, 28, 15, 10, 199, 80,
+			16, 149, 21, 34, 78, 28, 15, 10, 199, 77, 3, 204, 21, 34, 78, 28, 15, 10, 199, 76, 243, 132, 21, 34, 78, 28, 15, 10, 199, 64,
+			192, 78, 21, 34, 78, 28, 15, 10, 199, 52, 243, 148, 21, 34, 78, 28, 15, 10, 199, 48, 19, 131, 21, 34, 78, 28, 15, 10, 199, 28,
+			20, 142, 21, 34, 78, 28, 15, 10, 199, 24, 146, 211, 21, 34, 78, 28, 15, 10, 199, 8, 20, 132, 21, 34, 78, 28, 15, 10, 199, 8,
+			20, 130, 21, 34, 78, 28, 15, 9, 198, 64, 20, 203, 88, 147, 0, 15, 9, 198, 24, 81, 5, 72, 19, 0, 15, 6, 195, 10, 148, 128,
+			76, 0, 14, 203, 76, 19, 77, 20, 227, 9, 28, 225, 76, 36, 112, 15, 14, 203, 76, 19, 77, 20, 225, 143, 48, 65, 76, 36, 112, 15,
+			12, 201, 65, 35, 212, 60, 179, 204, 48, 21, 0, 15, 10, 69, 48, 20, 20, 61, 0, 21, 0, 47, 11, 3, 95, 50, 88, 47, 6, 129,
+			12, 123, 0, 0, 9, 198, 44, 20, 213, 37, 53, 0, 15, 12, 201, 76, 84, 150, 36, 49, 82, 36, 225, 192, 15, 12, 201, 64, 20, 134,
+			84, 209, 82, 36, 225, 192, 15, 12, 201, 16, 84, 193, 72, 209, 82, 36, 225, 192, 15, 12, 201, 5, 36, 129, 56, 113, 82, 36, 225, 192,
+			15, 8, 197, 76, 19, 4, 21, 32, 15, 8, 197, 72, 245, 76, 21, 32, 15, 8, 197, 36, 210, 84, 21, 32, 15, 8, 197, 25, 34, 84,
+			21, 32, 15, 8, 197, 4, 114, 84, 21, 32, 15, 9, 198, 80, 83, 80, 61, 32, 76, 15, 9, 198, 52, 18, 211, 36, 208, 76, 15, 9,
+			198, 36, 229, 5, 73, 96, 76, 15, 0, 10, 199, 20, 211, 212, 36, 243, 133, 48, 15, 11, 200, 60, 209, 210, 85, 4, 5, 72, 80, 15,
+			9, 198, 80, 19, 65, 72, 148, 203, 15, 9, 198, 45, 35, 193, 80, 148, 203, 15, 9, 198, 41, 84, 137, 16, 148, 203, 15, 9, 198, 25,
+			85, 21, 72, 148, 203, 15, 9, 198, 24, 243, 133, 80, 148, 203, 15, 9, 198, 4, 115, 129, 80, 148, 203, 15, 12, 201, 44, 20, 132, 36,
+			224, 76, 80, 19, 0, 15, 0, 9, 198, 60, 97, 137, 12, 154, 83, 15, 10, 199, 64, 20, 211, 21, 34, 78, 28, 15, 10, 199, 44, 244,
+			9, 21, 34, 78, 28, 15, 10, 199, 44, 195, 210, 21, 34, 78, 28, 15, 10, 199, 25, 32, 83, 21, 34, 78, 28, 15, 10, 199, 24, 243,
+			9, 21, 34, 78, 28, 15, 10, 199, 17, 32, 80, 21, 34, 78, 28, 15, 10, 199, 12, 19, 80, 21, 34, 78, 28, 15, 10, 199, 9, 37,
+			78, 21, 34, 78, 28, 15, 10, 199, 8, 195, 203, 21, 34, 78, 28, 15, 8, 197, 52, 83, 148, 60, 192, 15, 8, 197, 24, 244, 211, 36,
+			192, 15, 9, 198, 56, 145, 197, 72, 144, 78, 15, 9, 198, 4, 225, 204, 60, 208, 78, 16, 8, 197, 76, 160, 75, 4, 192, 15, 8, 197,
+			24, 148, 203, 4, 192, 15, 12, 71, 76, 178, 78, 32, 80, 68, 76, 21, 0, 47, 0, 10, 199, 52, 148, 129, 45, 83, 41, 76, 15, 12,
+			201, 61, 4, 15, 73, 69, 78, 37, 53, 0, 15, 7, 196, 9, 85, 1, 56, 16, 0, 9, 198, 76, 183, 204, 76, 186, 82, 15, 10, 199,
+			72, 84, 1, 72, 21, 41, 72, 15, 10, 199, 44, 243, 132, 60, 209, 82, 36, 15, 0, 12, 201, 5, 69, 18, 36, 37, 84, 36, 243, 128,
+			15, 12, 201, 41, 81, 207, 76, 192, 86, 36, 83, 128, 15, 0, 8, 197, 77, 147, 66, 60, 192, 15, 8, 197, 12, 128, 84, 60, 192, 15,
+			11, 200, 80, 83, 80, 21, 33, 82, 21, 64, 15, 11, 200, 72, 85, 19, 36, 225, 82, 21, 64, 15, 11, 200, 72, 84, 201, 28, 225, 82,
+			21, 64, 15, 11, 200, 72, 17, 134, 36, 225, 82, 21, 64, 15, 11, 200, 48, 19, 69, 48, 193, 82, 21, 64, 15, 11, 200, 36, 226, 193,
+			72, 225, 82, 21, 64, 15, 11, 200, 16, 148, 12, 60, 209, 82, 21, 64, 15, 11, 200, 16, 85, 1, 48, 161, 82, 21, 64, 15, 11, 200,
+			81, 34, 85, 53, 98, 82, 5, 64, 15, 11, 200, 16, 148, 133, 45, 67, 210, 5, 64, 15, 11, 200, 16, 81, 133, 57, 51, 210, 5, 64,
+			15, 11, 200, 12, 128, 77, 64, 147, 206, 5, 64, 15, 11, 200, 9, 84, 133, 5, 82, 210, 5, 64, 15, 11, 200, 5, 34, 83, 80, 242,
+			210, 5, 64, 15, 8, 197, 76, 240, 201, 4, 192, 15, 8, 197, 24, 244, 141, 4, 192, 15, 0, 12, 201, 12, 129, 70, 72, 81, 1, 45,
+			74, 82, 15, 12, 201, 65, 34, 77, 37, 66, 86, 37, 53, 0, 15, 12, 201, 36, 195, 21, 76, 147, 206, 37, 53, 0, 15, 10, 199, 77,
+			84, 16, 72, 147, 69, 72, 15, 10, 199, 44, 243, 80, 72, 147, 69, 72, 15, 10, 199, 36, 225, 140, 4, 211, 69, 72, 15, 10, 199, 5,
+			37, 9, 45, 83, 5, 72, 15, 0, 27, 70, 24, 244, 147, 100, 225, 84, 83, 6, 108, 34, 89, 129, 50, 13, 72, 15, 107, 121, 34, 0,
+			81, 104, 97, 114, 32, 7, 196, 16, 148, 211, 20, 76, 0, 11, 200, 76, 180, 143, 25, 83, 15, 76, 80, 15, 12, 201, 72, 146, 207, 12,
+			129, 84, 80, 84, 128, 15, 12, 201, 44, 21, 5, 28, 244, 137, 76, 84, 128, 15, 12, 201, 36, 229, 5, 73, 1, 76, 48, 84, 128, 15,
+			12, 201, 12, 130, 70, 24, 243, 142, 36, 84, 128, 15, 12, 201, 12, 83, 148, 72, 145, 149, 28, 84, 128, 15, 12, 201, 56, 244, 212, 4,
+			193, 201, 44, 84, 128, 15, 10, 199, 44, 243, 139, 61, 33, 1, 80, 15, 10, 199, 44, 19, 143, 56, 146, 193, 80, 15, 10, 199, 36, 212,
+			12, 4, 229, 1, 80, 15, 0, 9, 198, 8, 244, 132, 85, 33, 64, 15, 9, 198, 88, 21, 20, 21, 33, 64, 15, 9, 198, 80, 84, 212,
+			21, 33, 64, 15, 9, 198, 80, 19, 135, 21, 33, 64, 15, 9, 198, 76, 245, 80, 21, 33, 64, 15, 9, 198, 76, 244, 148, 21, 33, 64,
+			15, 9, 198, 72, 84, 212, 21, 33, 64, 15, 9, 198, 64, 244, 212, 21, 33, 64, 15, 9, 198, 64, 21, 83, 21, 33, 64, 15, 9, 198,
+			64, 20, 148, 21, 33, 64, 15, 9, 198, 52, 20, 211, 21, 33, 64, 15, 9, 198, 52, 20, 203, 21, 33, 64, 15, 9, 198, 52, 20, 139,
+			21, 33, 64, 15, 9, 198, 52, 19, 139, 21, 33, 64, 15, 9, 198, 45, 84, 147, 21, 33, 64, 15, 9, 198, 44, 20, 211, 21, 33, 64,
+			15, 12, 201, 36, 211, 65, 81, 34, 75, 84, 193, 82, 15, 18, 70, 29, 37, 89, 21, 33, 64, 81, 34, 129, 57, 6, 115, 12, 34, 0,
+			15, 9, 198, 24, 147, 135, 21, 33, 64, 15, 9, 198, 16, 243, 12, 21, 33, 64, 15, 9, 198, 9, 35, 196, 21, 33, 64, 15, 11, 70,
+			88, 83, 148, 85, 33, 64, 21, 0, 47, 0, 9, 198, 45, 103, 210, 84, 193, 82, 15, 9, 198, 76, 192, 86, 36, 225, 5, 15, 9, 198,
+			32, 83, 20, 36, 225, 5, 15, 0, 30, 68, 24, 244, 131, 20, 83, 108, 34, 89, 15, 4, 65, 118, 6, 89, 57, 132, 12, 34, 0, 81,
+			109, 97, 106, 101, 117, 114, 101, 32, 11, 200, 89, 83, 11, 4, 226, 83, 21, 32, 15, 11, 200, 89, 83, 7, 5, 34, 83, 21, 32, 15,
+			11, 200, 80, 83, 210, 21, 66, 83, 21, 32, 15, 11, 200, 77, 147, 148, 21, 66, 83, 21, 32, 15, 11, 200, 77, 147, 80, 5, 66, 83,
+			21, 32, 15, 11, 200, 77, 84, 5, 73, 98, 83, 21, 32, 15, 11, 200, 76, 177, 77, 5, 66, 83, 21, 32, 15, 11, 200, 76, 82, 212,
+			61, 34, 83, 21, 32, 15, 11, 200, 72, 243, 65, 57, 66, 83, 21, 32, 15, 11, 200, 65, 83, 22, 21, 34, 83, 21, 32, 15, 11, 200,
+			65, 34, 86, 5, 66, 83, 21, 32, 15, 11, 200, 64, 84, 137, 60, 66, 83, 21, 32, 15, 11, 200, 64, 20, 211, 37, 98, 83, 21, 32,
+			15, 11, 200, 56, 85, 82, 61, 66, 83, 21, 32, 15, 11, 200, 56, 20, 139, 61, 66, 83, 21, 32, 15, 11, 200, 52, 241, 5, 72, 226,
+			83, 21, 32, 15, 11, 200, 52, 84, 131, 21, 34, 83, 21, 32, 15, 11, 200, 52, 20, 148, 101, 34, 83, 21, 32, 15, 11, 200, 52, 17,
+			206, 21, 66, 83, 21, 32, 15, 11, 200, 48, 16, 137, 4, 194, 83, 21, 32, 15, 11, 200, 44, 194, 77, 5, 66, 83, 21, 32, 15, 11,
+			200, 44, 20, 130, 60, 226, 83, 21, 32, 15, 11, 200, 44, 19, 148, 60, 226, 83, 21, 32, 15, 11, 200, 36, 229, 5, 57, 50, 86, 21,
+			32, 15, 11, 200, 36, 212, 18, 61, 98, 83, 21, 32, 15, 11, 200, 33, 148, 14, 61, 66, 83, 21, 32, 15, 11, 200, 32, 148, 212, 61,
+			34, 83, 21, 32, 15, 11, 200, 32, 84, 130, 5, 34, 83, 21, 32, 15, 11, 200, 28, 116, 149, 8, 194, 83, 21, 32, 15, 11, 200, 28,
+			195, 194, 4, 194, 83, 21, 32, 15, 11, 200, 28, 129, 84, 80, 242, 83, 21, 32, 15, 11, 200, 24, 147, 13, 5, 66, 83, 21, 32, 15,
+			11, 200, 20, 193, 75, 81, 34, 83, 21, 32, 15, 11, 200, 17, 32, 77, 5, 66, 83, 21, 32, 15, 11, 200, 16, 241, 205, 5, 66, 83,
+			21, 32, 15, 11, 200, 16, 148, 212, 36, 225, 214, 21, 32, 15, 11, 200, 16, 144, 76, 60, 114, 83, 21, 32, 15, 11, 200, 16, 83, 196,
+			61, 34, 83, 21, 32, 15, 11, 200, 8, 20, 130, 5, 34, 83, 21, 32, 15, 11, 200, 5, 35, 205, 5, 66, 83, 21, 32, 15, 11, 200,
+			4, 227, 206, 100, 210, 83, 21, 32, 15, 11, 200, 4, 224, 76, 60, 114, 83, 21, 32, 15, 11, 200, 4, 176, 68, 20, 210, 83, 21, 32,
+			15, 11, 200, 4, 32, 78, 16, 243, 142, 21, 32, 15, 11, 200, 80, 83, 210, 21, 66, 75, 21, 32, 15, 11, 200, 76, 82, 212, 21, 34,
+			75, 21, 32, 15, 11, 200, 72, 243, 65, 57, 66, 75, 21, 32, 15, 11, 200, 72, 85, 77, 5, 66, 75, 21, 32, 15, 11, 200, 56, 85,
+			82, 61, 66, 75, 21, 32, 15, 11, 200, 48, 241, 201, 77, 66, 75, 21, 32, 15, 11, 200, 33, 148, 212, 21, 34, 75, 21, 32, 15, 11,
+			200, 32, 148, 212, 61, 34, 75, 21, 32, 15, 11, 200, 20, 179, 5, 45, 66, 75, 21, 32, 15, 11, 200, 17, 148, 198, 5, 66, 75, 21,
+			32, 15, 11, 200, 17, 32, 77, 5, 66, 75, 21, 32, 15, 11, 200, 16, 241, 205, 5, 66, 75, 21, 32, 15, 11, 200, 16, 145, 1, 45,
+			66, 75, 21, 32, 15, 11, 200, 16, 144, 66, 21, 66, 75, 21, 32, 15, 9, 198, 4, 208, 137, 20, 229, 0, 15, 9, 198, 65, 35, 214,
+			36, 19, 148, 15, 9, 198, 5, 36, 143, 28, 19, 148, 15, 11, 3, 95, 53, 111, 83, 115, 65, 47, 14, 0, 12, 3, 95, 63, 63, 89,
+			129, 65, 71, 39, 55, 0, 0, 0, 11, 66, 53, 32, 65, 36, 89, 47, 108, 0, 25, 9, 198, 52, 19, 20, 61, 49, 64, 15, 18, 70,
+			20, 180, 208, 61, 49, 64, 36, 81, 89, 48, 39, 89, 6, 36, 0, 15, 9, 198, 65, 35, 212, 21, 49, 64, 15, 9, 198, 16, 144, 84,
+			21, 49, 64, 15, 11, 200, 44, 243, 139, 85, 36, 133, 57, 64, 15, 11, 200, 4, 35, 206, 56, 83, 69, 57, 64, 15, 10, 199, 44, 243,
+			80, 21, 65, 78, 76, 15, 11, 200, 44, 20, 9, 81, 83, 1, 57, 64, 15, 0, 11, 200, 44, 18, 207, 24, 243, 137, 76, 176, 15, 11,
+			200, 16, 21, 1, 48, 241, 201, 76, 176, 15, 11, 200, 64, 84, 134, 61, 35, 65, 57, 48, 15, 11, 3, 95, 52, 88, 83, 6, 133, 23,
+			108, 0, 0, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 65, 84, 15, 7, 196, 77, 67, 205, 36, 15, 0, 9, 198, 21, 2,
+			71, 72, 17, 128, 15, 6, 195, 16, 83, 147, 76, 6, 195, 32, 19, 147, 76, 0, 9, 198, 21, 50, 193, 17, 35, 206, 15, 9, 198, 72,
+			80, 75, 80, 147, 206, 15, 9, 198, 36, 229, 129, 76, 147, 206, 15, 10, 199, 36, 225, 21, 45, 64, 78, 76, 15, 0, 22, 67, 32, 21,
+			133, 107, 117, 15, 81, 57, 6, 125, 34, 47, 0, 81, 103, 106, 111, 114, 116, 32, 23, 67, 32, 21, 133, 107, 117, 15, 84, 6, 116, 110,
+			108, 86, 0, 81, 118, 195, 166, 114, 101, 116, 32, 18, 67, 32, 21, 133, 107, 117, 15, 51, 6, 119, 72, 0, 81, 114, 101, 116, 32, 10,
+			199, 13, 146, 204, 61, 68, 143, 56, 15, 9, 198, 77, 243, 1, 72, 145, 64, 15, 0, 11, 200, 60, 225, 21, 48, 21, 9, 60, 224, 15,
+			11, 200, 16, 148, 203, 72, 85, 9, 60, 224, 15, 11, 200, 16, 147, 1, 80, 21, 9, 60, 224, 15, 11, 200, 4, 100, 133, 4, 181, 9,
+			60, 224, 15, 11, 200, 4, 33, 82, 72, 21, 9, 60, 224, 15, 11, 3, 95, 54, 111, 89, 57, 115, 72, 14, 0, 0, 12, 201, 80, 84,
+			212, 61, 53, 5, 72, 243, 128, 15, 12, 201, 88, 83, 148, 36, 192, 84, 36, 243, 128, 15, 12, 201, 88, 16, 195, 36, 224, 84, 36, 243,
+			128, 15, 12, 201, 77, 80, 147, 84, 212, 20, 36, 243, 128, 15, 12, 201, 77, 66, 80, 84, 192, 84, 36, 243, 128, 15, 12, 201, 77, 66,
+			77, 84, 192, 84, 36, 243, 128, 15, 12, 201, 77, 64, 71, 24, 192, 84, 36, 243, 128, 15, 12, 201, 72, 85, 1, 72, 64, 84, 36, 243,
+			128, 15, 12, 201, 72, 84, 201, 28, 224, 84, 36, 243, 128, 15, 12, 201, 61, 48, 201, 48, 192, 84, 36, 243, 128, 15, 12, 201, 60, 36,
+			212, 73, 80, 212, 36, 243, 128, 15, 12, 201, 48, 146, 214, 36, 64, 84, 36, 243, 128, 15, 12, 201, 44, 244, 146, 20, 192, 84, 36, 243,
+			128, 15, 12, 201, 44, 243, 132, 60, 192, 84, 36, 243, 128, 15, 12, 201, 44, 243, 80, 36, 192, 84, 36, 243, 128, 15, 12, 201, 44, 240,
+			71, 84, 192, 84, 36, 243, 128, 15, 12, 201, 36, 227, 203, 84, 192, 84, 36, 243, 128, 15, 12, 201, 36, 226, 204, 36, 224, 84, 36, 243,
+			128, 15, 12, 201, 36, 226, 193, 77, 48, 84, 36, 243, 128, 15, 12, 201, 29, 32, 78, 84, 192, 84, 36, 243, 128, 15, 12, 201, 24, 20,
+			195, 36, 224, 84, 36, 243, 128, 15, 12, 201, 20, 194, 77, 36, 224, 84, 36, 243, 128, 15, 12, 201, 20, 180, 212, 72, 18, 212, 36, 243,
+			128, 15, 12, 201, 20, 160, 75, 84, 192, 84, 36, 243, 128, 15, 12, 201, 16, 84, 201, 28, 224, 84, 36, 243, 128, 15, 12, 201, 12, 148,
+			139, 84, 192, 84, 36, 243, 128, 15, 12, 201, 4, 197, 5, 72, 224, 84, 36, 243, 128, 15, 12, 201, 4, 113, 210, 5, 96, 84, 36, 243,
+			128, 15, 0, 10, 66, 52, 48, 65, 122, 49, 6, 0, 41, 9, 198, 50, 148, 193, 29, 66, 71, 15, 12, 201, 88, 242, 193, 9, 83, 1,
+			72, 145, 64, 15, 9, 198, 50, 148, 193, 29, 66, 71, 15, 0, 10, 199, 65, 227, 9, 16, 83, 9, 28, 15, 14, 3, 95, 53, 88, 107,
+			118, 55, 6, 47, 16, 116, 89, 0, 0, 9, 198, 80, 83, 5, 76, 179, 208, 15, 9, 198, 60, 36, 207, 48, 85, 0, 15, 11, 200, 65,
+			229, 137, 72, 177, 76, 36, 112, 15, 12, 201, 61, 97, 82, 76, 145, 212, 48, 145, 192, 15, 11, 200, 60, 209, 223, 56, 113, 76, 36, 112,
+			15, 11, 200, 56, 244, 132, 165, 53, 12, 36, 112, 15, 10, 199, 32, 244, 148, 20, 228, 201, 20, 15, 10, 199, 64, 244, 212, 49, 81, 9,
+			20, 15, 10, 199, 9, 35, 205, 44, 19, 9, 20, 15, 10, 199, 8, 83, 133, 24, 144, 201, 20, 15, 9, 198, 81, 32, 78, 76, 149, 0,
+			15, 10, 199, 72, 145, 207, 72, 148, 205, 20, 15, 10, 199, 32, 147, 132, 84, 148, 205, 20, 15, 10, 199, 28, 21, 76, 48, 148, 205, 20,
+			15, 10, 199, 16, 148, 137, 28, 148, 205, 20, 15, 0, 27, 68, 36, 66, 79, 80, 37, 72, 37, 6, 39, 15, 89, 117, 84, 6, 121, 68,
+			0, 81, 115, 97, 118, 97, 110, 116, 32, 12, 201, 24, 244, 146, 120, 67, 133, 48, 145, 192, 15, 12, 201, 24, 244, 142, 125, 35, 69, 48,
+			145, 192, 15, 11, 4, 95, 114, 110, 103, 34, 37, 50, 81, 0, 0, 9, 198, 80, 84, 212, 5, 67, 210, 15, 9, 198, 72, 243, 12, 5,
+			67, 210, 15, 9, 198, 37, 51, 204, 5, 67, 210, 15, 9, 198, 81, 34, 86, 36, 83, 0, 15, 8, 197, 80, 84, 141, 37, 64, 15, 8,
+			197, 40, 84, 213, 37, 64, 15, 8, 197, 72, 16, 137, 5, 64, 15, 9, 198, 56, 85, 84, 72, 19, 0, 15, 0, 9, 198, 25, 148, 201,
+			85, 33, 201, 15, 10, 199, 61, 3, 41, 76, 83, 9, 28, 15, 10, 199, 60, 208, 169, 40, 83, 9, 28, 15, 8, 67, 76, 86, 25, 21,
+			0, 47, 0, 11, 200, 36, 226, 214, 37, 50, 84, 61, 32, 15, 10, 199, 32, 148, 16, 60, 68, 143, 52, 15, 8, 197, 44, 195, 210, 21,
+			32, 15, 8, 197, 32, 19, 22, 21, 32, 15, 8, 197, 24, 195, 210, 21, 32, 15, 11, 3, 95, 55, 111, 89, 129, 84, 50, 14, 0, 0,
+			8, 197, 52, 243, 148, 165, 32, 15, 8, 197, 48, 82, 212, 165, 32, 15, 9, 198, 44, 243, 5, 72, 148, 203, 15, 9, 198, 28, 83, 133,
+			80, 148, 203, 15, 9, 198, 24, 19, 129, 80, 148, 203, 15, 14, 203, 36, 225, 5, 80, 84, 141, 36, 226, 83, 52, 80, 15, 14, 203, 25,
+			83, 139, 80, 147, 206, 4, 194, 83, 52, 80, 15, 14, 203, 16, 242, 213, 52, 83, 148, 5, 34, 83, 52, 80, 15, 12, 201, 65, 35, 198,
+			21, 52, 207, 72, 19, 0, 15, 12, 201, 44, 243, 138, 20, 181, 21, 72, 19, 0, 15, 0, 18, 7, 119, 99, 39, 101, 114, 110, 101, 84,
+			6, 36, 89, 36, 108, 50, 13, 0, 12, 201, 9, 34, 76, 48, 19, 148, 36, 225, 64, 15, 9, 198, 8, 85, 1, 81, 35, 206, 15, 10,
+			199, 64, 20, 148, 21, 34, 78, 28, 15, 10, 199, 64, 20, 139, 21, 34, 78, 28, 15, 10, 199, 56, 244, 141, 21, 34, 78, 28, 15, 10,
+			199, 45, 99, 212, 21, 34, 78, 28, 15, 10, 199, 44, 192, 82, 21, 34, 78, 28, 15, 10, 199, 28, 20, 132, 21, 34, 78, 28, 15, 10,
+			199, 24, 20, 147, 21, 34, 78, 28, 15, 10, 199, 21, 99, 204, 21, 34, 78, 28, 15, 10, 199, 17, 80, 140, 21, 34, 78, 28, 15, 10,
+			199, 4, 226, 77, 21, 34, 78, 28, 15, 13, 202, 76, 83, 22, 8, 82, 1, 28, 83, 9, 28, 15, 13, 202, 61, 97, 82, 61, 33, 5,
+			57, 67, 9, 28, 15, 8, 197, 65, 35, 211, 37, 64, 15, 15, 204, 81, 32, 68, 37, 66, 79, 56, 19, 9, 76, 209, 64, 15, 15, 204,
+			64, 20, 140, 4, 209, 78, 80, 20, 137, 76, 209, 64, 15, 15, 204, 32, 84, 141, 4, 100, 143, 16, 149, 9, 76, 209, 64, 15, 8, 197,
+			64, 192, 75, 5, 64, 15, 0, 6, 195, 32, 35, 192, 13, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 51, 69, 15, 9, 198,
+			73, 83, 95, 56, 145, 78, 15, 12, 201, 65, 35, 198, 21, 52, 207, 72, 21, 0, 15, 11, 200, 124, 181, 129, 80, 244, 137, 4, 192, 15,
+			11, 3, 95, 54, 88, 47, 16, 6, 115, 89, 0, 0, 8, 197, 45, 83, 20, 85, 32, 15, 8, 197, 44, 244, 9, 165, 48, 15, 8, 197,
+			8, 147, 12, 165, 48, 15, 11, 200, 52, 81, 9, 80, 21, 9, 60, 224, 15, 11, 200, 48, 144, 201, 80, 21, 9, 60, 224, 15, 11, 200,
+			44, 244, 146, 20, 181, 9, 60, 224, 15, 8, 197, 88, 243, 20, 21, 32, 15, 8, 197, 64, 19, 16, 21, 32, 15, 8, 197, 45, 34, 68,
+			21, 32, 15, 8, 197, 41, 84, 212, 21, 32, 15, 8, 197, 20, 213, 76, 21, 32, 15, 8, 197, 17, 32, 80, 21, 32, 15, 8, 197, 12,
+			19, 80, 21, 32, 15, 10, 199, 76, 240, 201, 60, 227, 205, 36, 15, 12, 201, 56, 245, 133, 48, 194, 83, 80, 146, 192, 15, 13, 69, 13,
+			85, 12, 21, 32, 49, 109, 47, 55, 109, 0, 0, 9, 198, 12, 19, 129, 16, 148, 203, 15, 9, 198, 5, 50, 65, 80, 148, 203, 15, 10,
+			199, 80, 244, 141, 20, 229, 9, 48, 15, 0, 10, 199, 56, 149, 18, 21, 34, 78, 28, 15, 10, 199, 44, 19, 11, 21, 34, 78, 28, 15,
+			10, 199, 32, 19, 22, 21, 34, 78, 28, 15, 10, 199, 29, 32, 86, 21, 34, 78, 28, 15, 10, 199, 28, 195, 211, 21, 34, 78, 28, 15,
+			9, 198, 56, 17, 148, 4, 194, 78, 15, 9, 198, 76, 144, 201, 48, 145, 78, 15, 12, 201, 52, 84, 207, 64, 245, 1, 52, 145, 78, 15,
+			15, 204, 56, 21, 18, 37, 83, 75, 5, 32, 143, 56, 21, 0, 15, 5, 65, 164, 132, 0, 0, 12, 201, 85, 66, 76, 37, 64, 82, 37,
+			53, 0, 15, 12, 201, 20, 181, 137, 48, 144, 146, 37, 53, 0, 15, 11, 200, 88, 145, 9, 52, 84, 137, 56, 112, 15, 11, 200, 56, 243,
+			73, 56, 84, 137, 56, 112, 15, 11, 200, 52, 84, 137, 80, 84, 137, 56, 112, 15, 11, 200, 5, 96, 78, 12, 84, 137, 56, 112, 15, 9,
+			198, 20, 228, 201, 48, 17, 197, 15, 11, 70, 32, 243, 69, 64, 17, 197, 21, 0, 47, 0, 9, 198, 56, 18, 86, 37, 53, 0, 15, 12,
+			201, 25, 148, 201, 60, 115, 143, 52, 146, 192, 15, 0, 12, 201, 88, 149, 137, 76, 82, 212, 36, 243, 128, 15, 12, 201, 77, 80, 148, 72,
+			18, 212, 36, 243, 128, 15, 12, 201, 72, 84, 212, 72, 146, 212, 36, 243, 128, 15, 12, 201, 72, 82, 214, 37, 50, 84, 36, 243, 128, 15,
+			12, 201, 65, 83, 139, 80, 18, 212, 36, 243, 128, 15, 12, 201, 65, 35, 208, 61, 50, 84, 36, 243, 128, 15, 12, 201, 60, 36, 212, 73,
+			82, 212, 36, 243, 128, 15, 12, 201, 44, 243, 148, 72, 18, 212, 36, 243, 128, 15, 12, 201, 44, 243, 80, 61, 50, 84, 36, 243, 128, 15,
+			12, 201, 36, 228, 212, 73, 82, 212, 36, 243, 128, 15, 12, 201, 16, 148, 212, 72, 18, 212, 36, 243, 128, 15, 12, 201, 16, 145, 134, 72,
+			18, 212, 36, 243, 128, 15, 12, 201, 8, 83, 133, 16, 146, 212, 36, 243, 128, 15, 12, 201, 4, 178, 214, 37, 50, 84, 36, 243, 128, 15,
+			12, 201, 4, 36, 212, 72, 18, 212, 36, 243, 128, 15, 7, 196, 81, 148, 143, 48, 15, 8, 197, 76, 145, 233, 40, 224, 15, 0, 8, 66,
+			57, 224, 50, 108, 0, 50, 21, 66, 36, 192, 37, 55, 15, 72, 6, 40, 12, 76, 57, 13, 0, 81, 100, 117, 99, 101, 32, 9, 198, 81,
+			32, 70, 36, 177, 82, 15, 9, 198, 77, 81, 134, 36, 113, 82, 15, 9, 198, 72, 84, 12, 36, 49, 82, 15, 9, 198, 72, 83, 143, 56,
+			49, 82, 15, 9, 198, 44, 243, 147, 84, 209, 82, 15, 9, 198, 36, 226, 149, 72, 145, 82, 15, 9, 198, 16, 84, 12, 4, 49, 82, 15,
+			0, 11, 200, 44, 244, 205, 21, 67, 204, 60, 112, 15, 10, 199, 29, 147, 159, 44, 243, 15, 28, 15, 22, 73, 12, 243, 142, 20, 53, 9,
+			13, 85, 0, 49, 109, 50, 6, 114, 47, 111, 49, 109, 72, 0, 0, 0, 9, 198, 72, 17, 9, 60, 195, 199, 15, 9, 198, 24, 147, 13,
+			60, 195, 199, 15, 8, 197, 80, 82, 83, 52, 80, 15, 8, 197, 16, 82, 83, 52, 80, 15, 8, 197, 85, 48, 78, 12, 80, 15, 8, 197,
+			76, 80, 78, 12, 80, 15, 0, 9, 67, 33, 99, 210, 84, 6, 125, 0, 0, 8, 197, 21, 2, 76, 60, 112, 15, 0, 10, 199, 80, 83,
+			5, 60, 195, 199, 36, 15, 10, 199, 80, 82, 206, 60, 195, 199, 36, 15, 10, 199, 56, 85, 82, 60, 195, 199, 36, 15, 10, 199, 52, 244,
+			134, 60, 195, 199, 36, 15, 10, 199, 52, 85, 18, 60, 195, 199, 36, 15, 10, 199, 32, 20, 12, 60, 195, 199, 36, 15, 9, 198, 76, 180,
+			137, 8, 83, 148, 15, 9, 198, 61, 4, 15, 56, 83, 148, 15, 9, 198, 45, 99, 212, 36, 83, 148, 15, 9, 198, 25, 33, 75, 88, 83,
+			148, 15, 9, 198, 77, 146, 207, 24, 19, 148, 15, 9, 198, 76, 82, 211, 80, 19, 148, 15, 9, 198, 60, 178, 213, 64, 19, 148, 15, 9,
+			198, 45, 96, 68, 72, 19, 148, 15, 9, 198, 36, 212, 15, 76, 19, 148, 15, 9, 198, 9, 34, 76, 48, 19, 148, 15, 11, 3, 95, 57,
+			111, 50, 37, 14, 50, 14, 0, 0, 9, 198, 64, 243, 5, 52, 148, 203, 15, 9, 198, 56, 245, 15, 72, 148, 203, 15, 9, 198, 56, 19,
+			73, 8, 148, 203, 15, 9, 198, 32, 147, 132, 84, 148, 203, 15, 9, 198, 5, 53, 5, 72, 148, 203, 15, 9, 198, 5, 37, 5, 76, 148,
+			203, 15, 8, 197, 4, 176, 67, 36, 80, 15, 11, 200, 77, 66, 80, 20, 225, 9, 84, 208, 15, 11, 200, 44, 243, 80, 20, 225, 9, 84,
+			208, 15, 9, 198, 66, 147, 137, 80, 83, 148, 15, 8, 197, 24, 16, 193, 16, 80, 15, 0, 19, 71, 48, 81, 197, 56, 65, 82, 76, 55,
+			36, 81, 6, 115, 50, 72, 108, 89, 0, 10, 199, 81, 148, 129, 56, 226, 83, 44, 15, 10, 199, 77, 147, 12, 4, 34, 83, 44, 15, 10,
+			199, 76, 144, 77, 21, 50, 83, 44, 15, 10, 199, 52, 243, 4, 61, 98, 83, 44, 15, 10, 199, 44, 20, 193, 44, 130, 83, 44, 15, 10,
+			199, 32, 84, 139, 84, 194, 83, 44, 15, 10, 199, 28, 19, 22, 4, 226, 83, 44, 15, 9, 198, 64, 20, 148, 37, 48, 78, 16, 9, 198,
+			44, 20, 5, 48, 192, 78, 16, 10, 199, 72, 83, 21, 45, 64, 78, 76, 15, 0, 11, 200, 76, 147, 143, 48, 241, 201, 76, 176, 15, 11,
+			200, 64, 21, 15, 48, 241, 201, 76, 176, 15, 11, 200, 60, 226, 207, 48, 241, 201, 76, 176, 15, 11, 200, 56, 244, 141, 4, 227, 137, 76,
+			176, 15, 11, 200, 44, 21, 5, 44, 85, 9, 76, 176, 15, 11, 200, 36, 66, 79, 52, 21, 9, 76, 176, 15, 11, 200, 24, 243, 143, 48,
+			241, 201, 76, 176, 15, 11, 200, 24, 193, 71, 52, 21, 9, 76, 176, 15, 11, 200, 4, 193, 197, 9, 32, 73, 76, 176, 15, 7, 196, 4,
+			116, 129, 24, 15, 11, 200, 65, 39, 212, 20, 225, 5, 57, 64, 15, 11, 3, 95, 56, 88, 83, 6, 37, 34, 89, 0, 0, 11, 200, 77,
+			81, 199, 21, 53, 9, 60, 224, 15, 11, 200, 72, 84, 207, 73, 5, 9, 60, 224, 15, 0, 8, 197, 53, 84, 197, 84, 208, 15, 11, 200,
+			44, 83, 143, 80, 17, 137, 84, 208, 15, 11, 200, 9, 35, 205, 44, 19, 9, 84, 208, 15, 8, 197, 8, 146, 201, 56, 144, 15, 9, 198,
+			77, 147, 66, 60, 194, 75, 15, 0, 9, 198, 25, 33, 78, 21, 50, 64, 15, 10, 199, 80, 19, 13, 84, 66, 83, 44, 15, 10, 199, 76,
+			20, 132, 60, 226, 83, 44, 15, 10, 199, 72, 20, 19, 60, 66, 83, 44, 15, 10, 199, 64, 193, 66, 20, 162, 83, 44, 15, 10, 199, 64,
+			192, 84, 60, 226, 83, 44, 15, 10, 199, 32, 84, 129, 48, 66, 83, 44, 15, 10, 199, 29, 33, 78, 4, 66, 83, 44, 15, 9, 198, 52,
+			20, 143, 44, 176, 78, 15, 9, 198, 40, 19, 65, 36, 48, 78, 15, 10, 199, 72, 84, 201, 77, 64, 78, 76, 15, 0, 11, 200, 81, 148,
+			15, 48, 241, 201, 76, 176, 15, 11, 200, 77, 145, 137, 48, 149, 9, 76, 176, 15, 11, 200, 76, 84, 143, 48, 241, 201, 76, 176, 15, 11,
+			200, 21, 67, 143, 48, 241, 201, 76, 176, 15, 11, 200, 21, 2, 76, 21, 5, 9, 76, 176, 15, 11, 200, 9, 84, 135, 84, 225, 9, 76,
+			176, 15, 7, 196, 88, 83, 137, 56, 15, 8, 197, 81, 32, 70, 36, 176, 15, 7, 196, 61, 34, 193, 56, 16, 0, 0, 10, 199, 81, 35,
+			212, 76, 178, 83, 80, 15, 10, 199, 28, 84, 141, 4, 226, 83, 80, 15, 8, 197, 44, 243, 132, 60, 208, 15, 11, 200, 65, 39, 214, 20,
+			229, 9, 60, 224, 15, 8, 197, 52, 19, 5, 72, 144, 15, 11, 200, 48, 19, 80, 37, 53, 5, 72, 144, 15, 11, 200, 24, 19, 148, 5,
+			53, 5, 72, 144, 15, 8, 197, 21, 81, 143, 72, 144, 15, 11, 200, 12, 128, 82, 13, 85, 5, 72, 144, 15, 6, 195, 52, 81, 0, 76,
+			0, 11, 200, 72, 85, 129, 56, 50, 9, 77, 64, 15, 11, 200, 56, 20, 131, 37, 52, 201, 77, 64, 15, 11, 200, 44, 192, 83, 76, 144,
+			201, 77, 64, 15, 11, 200, 44, 21, 129, 48, 84, 137, 77, 64, 15, 11, 200, 9, 32, 84, 76, 50, 9, 77, 64, 15, 9, 198, 76, 194,
+			66, 21, 34, 64, 15, 9, 198, 76, 192, 86, 21, 34, 64, 15, 9, 198, 56, 20, 146, 21, 34, 64, 15, 9, 198, 44, 226, 66, 21, 34,
+			64, 15, 9, 198, 44, 19, 148, 61, 34, 64, 15, 9, 198, 28, 224, 86, 21, 34, 64, 15, 9, 198, 24, 20, 150, 21, 34, 64, 15, 9,
+			198, 61, 4, 223, 81, 50, 71, 15, 9, 198, 28, 20, 129, 57, 66, 64, 15, 0, 7, 196, 76, 145, 143, 56, 15, 9, 198, 64, 19, 12,
+			4, 66, 69, 15, 8, 67, 8, 246, 64, 21, 0, 47, 14, 3, 95, 57, 88, 107, 117, 55, 83, 6, 115, 65, 89, 0, 0, 9, 198, 84,
+			226, 79, 56, 148, 212, 15, 9, 198, 76, 21, 1, 56, 148, 212, 15, 9, 198, 72, 16, 149, 48, 148, 212, 15, 9, 198, 64, 19, 148, 20,
+			148, 212, 15, 9, 198, 48, 240, 130, 100, 148, 212, 15, 9, 198, 44, 243, 15, 56, 148, 212, 15, 9, 198, 32, 81, 15, 56, 148, 212, 15,
+			9, 198, 29, 35, 211, 76, 148, 212, 15, 9, 198, 16, 83, 9, 72, 148, 212, 15, 9, 198, 12, 149, 137, 48, 148, 212, 15, 9, 198, 48,
+			20, 16, 37, 50, 192, 15, 9, 198, 20, 193, 71, 37, 50, 192, 15, 10, 199, 21, 82, 193, 72, 148, 212, 36, 15, 0, 12, 201, 36, 225,
+			137, 49, 68, 129, 80, 244, 128, 15, 12, 201, 16, 83, 79, 17, 83, 1, 80, 244, 128, 15, 9, 198, 60, 181, 1, 28, 243, 128, 15, 9,
+			198, 88, 84, 147, 36, 243, 128, 15, 9, 198, 61, 96, 84, 36, 243, 128, 15, 9, 198, 24, 148, 211, 36, 243, 128, 15, 0, 9, 198, 36,
+			210, 84, 5, 67, 210, 15, 9, 198, 4, 114, 84, 5, 67, 210, 15, 15, 204, 81, 32, 78, 76, 194, 84, 80, 84, 129, 80, 147, 206, 15,
+			8, 197, 52, 20, 141, 37, 64, 15, 8, 197, 24, 244, 141, 5, 64, 15, 9, 68, 13, 148, 149, 76, 21, 0, 47, 0, 7, 196, 77, 85,
+			21, 72, 15, 10, 199, 44, 243, 132, 20, 228, 207, 72, 15, 12, 201, 77, 147, 132, 36, 176, 76, 37, 51, 69, 15, 12, 201, 72, 85, 137,
+			76, 147, 206, 37, 51, 69, 15, 12, 201, 64, 242, 78, 80, 147, 12, 37, 51, 69, 15, 12, 201, 52, 21, 5, 72, 144, 76, 37, 51, 69,
+			15, 12, 201, 36, 225, 129, 57, 66, 76, 37, 51, 69, 15, 12, 201, 36, 212, 5, 72, 144, 76, 37, 51, 69, 15, 0, 10, 199, 5, 3,
+			208, 48, 82, 211, 36, 15, 8, 197, 85, 34, 78, 21, 32, 15, 8, 197, 80, 149, 18, 21, 32, 15, 8, 197, 61, 1, 82, 21, 32, 15,
+			8, 197, 56, 149, 18, 21, 32, 15, 8, 197, 48, 149, 18, 21, 32, 15, 8, 197, 20, 208, 78, 21, 32, 15, 10, 199, 4, 224, 76, 101,
+			49, 82, 20, 15, 0, 8, 197, 25, 34, 83, 165, 32, 15, 12, 201, 72, 81, 201, 77, 68, 129, 80, 244, 128, 15, 12, 201, 56, 243, 69,
+			56, 179, 1, 80, 244, 128, 15, 12, 201, 44, 243, 147, 21, 37, 129, 80, 244, 128, 15, 12, 201, 44, 243, 132, 20, 228, 193, 80, 244, 128,
+			15, 12, 201, 44, 243, 80, 20, 228, 193, 80, 244, 128, 15, 12, 201, 36, 195, 21, 77, 68, 129, 80, 244, 128, 15, 12, 201, 4, 178, 213,
+			53, 83, 1, 80, 244, 128, 15, 12, 201, 80, 84, 146, 37, 67, 210, 36, 83, 0, 15, 0, 10, 199, 80, 19, 148, 4, 194, 83, 44, 15,
+			10, 199, 77, 3, 210, 4, 66, 83, 44, 15, 10, 199, 64, 197, 84, 60, 226, 83, 44, 15, 10, 199, 52, 85, 1, 48, 194, 83, 44, 15,
+			10, 199, 49, 82, 213, 48, 194, 83, 44, 15, 10, 199, 48, 84, 207, 80, 130, 83, 44, 15, 10, 199, 37, 35, 203, 21, 50, 83, 44, 15,
+			10, 199, 16, 144, 84, 60, 226, 83, 44, 15, 10, 199, 16, 18, 212, 100, 194, 83, 44, 15, 10, 199, 8, 20, 130, 4, 66, 83, 44, 15,
+			9, 198, 25, 32, 75, 80, 147, 0, 15, 9, 198, 25, 33, 85, 16, 144, 78, 15, 9, 198, 8, 84, 212, 40, 19, 0, 15, 13, 3, 95,
+			63, 65, 71, 39, 40, 89, 47, 35, 58, 0, 0, 9, 198, 24, 243, 143, 29, 32, 77, 15, 9, 198, 4, 84, 143, 29, 32, 77, 15, 7,
+			196, 12, 148, 133, 72, 15, 11, 200, 100, 83, 69, 56, 149, 9, 76, 176, 15, 11, 200, 88, 82, 140, 20, 228, 201, 76, 176, 15, 11, 200,
+			88, 20, 132, 20, 228, 201, 76, 176, 15, 11, 200, 76, 20, 139, 5, 53, 9, 76, 176, 15, 11, 200, 76, 19, 15, 52, 243, 137, 76, 176,
+			15, 11, 200, 65, 34, 83, 52, 21, 9, 76, 176, 15, 11, 200, 64, 19, 143, 72, 19, 73, 76, 176, 15, 11, 200, 64, 19, 133, 29, 148,
+			137, 76, 176, 15, 11, 200, 61, 33, 201, 5, 53, 9, 76, 176, 15, 11, 200, 41, 81, 1, 37, 53, 9, 76, 176, 15, 11, 200, 36, 225,
+			15, 48, 241, 201, 76, 176, 15, 11, 200, 32, 145, 82, 5, 34, 201, 76, 176, 15, 11, 200, 20, 194, 84, 37, 53, 9, 76, 176, 15, 11,
+			200, 8, 84, 135, 20, 228, 201, 76, 176, 15, 11, 200, 8, 19, 12, 37, 53, 9, 76, 176, 15, 11, 200, 4, 225, 75, 16, 245, 9, 76,
+			176, 15, 11, 200, 4, 180, 143, 8, 21, 9, 76, 176, 15, 15, 204, 52, 20, 139, 20, 68, 205, 20, 176, 78, 37, 51, 69, 15, 15, 204,
+			29, 37, 78, 17, 69, 137, 28, 144, 78, 37, 51, 69, 15, 12, 201, 64, 20, 211, 36, 243, 133, 72, 85, 0, 15, 0, 8, 197, 77, 64,
+			84, 85, 32, 15, 8, 197, 88, 148, 203, 165, 48, 15, 9, 198, 104, 147, 206, 37, 53, 0, 15, 8, 197, 76, 176, 76, 21, 32, 15, 8,
+			197, 61, 134, 68, 21, 32, 15, 8, 197, 61, 130, 68, 21, 32, 15, 8, 197, 52, 21, 20, 21, 32, 15, 8, 197, 45, 33, 80, 21, 32,
+			15, 8, 197, 37, 51, 204, 21, 32, 15, 8, 197, 28, 245, 84, 21, 32, 15, 8, 197, 21, 2, 76, 21, 32, 15, 10, 199, 56, 84, 20,
+			84, 226, 85, 52, 15, 10, 199, 52, 20, 148, 101, 34, 85, 52, 15, 10, 199, 4, 69, 133, 72, 34, 85, 52, 15, 16, 205, 16, 82, 207,
+			57, 53, 18, 84, 181, 9, 88, 148, 205, 20, 15, 8, 197, 37, 51, 194, 5, 32, 15, 0, 8, 197, 16, 148, 12, 60, 208, 15, 12, 201,
+			52, 19, 169, 89, 33, 82, 36, 225, 192, 15, 12, 201, 81, 32, 68, 37, 66, 79, 56, 83, 0, 15, 11, 200, 65, 35, 212, 21, 53, 5,
+			72, 80, 15, 11, 200, 16, 145, 148, 60, 225, 197, 72, 80, 15, 17, 206, 4, 224, 82, 44, 244, 217, 56, 66, 75, 4, 194, 83, 52, 80,
+			15, 0, 9, 198, 8, 243, 77, 21, 50, 64, 15, 13, 202, 16, 148, 211, 20, 229, 9, 21, 34, 78, 28, 15, 8, 197, 89, 245, 133, 72,
+			144, 15, 10, 199, 80, 85, 84, 60, 226, 83, 44, 15, 10, 199, 80, 82, 212, 60, 226, 83, 44, 15, 10, 199, 80, 19, 154, 4, 226, 83,
+			44, 15, 10, 199, 77, 148, 212, 60, 194, 83, 44, 15, 10, 199, 45, 148, 137, 48, 194, 83, 44, 15, 10, 199, 37, 50, 201, 4, 66, 83,
+			44, 15, 10, 199, 32, 20, 141, 60, 226, 83, 44, 15, 10, 199, 21, 82, 204, 36, 66, 83, 44, 15, 10, 199, 21, 2, 83, 60, 66, 83,
+			44, 15, 7, 196, 53, 84, 201, 44, 15, 9, 198, 16, 151, 212, 21, 66, 75, 15, 0, 12, 201, 124, 181, 137, 48, 144, 146, 37, 53, 0,
+			15, 12, 201, 72, 85, 137, 76, 147, 206, 37, 53, 0, 15, 14, 203, 8, 84, 212, 36, 19, 9, 76, 84, 137, 56, 112, 69, 14, 203, 81,
+			34, 86, 36, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 77, 66, 71, 52, 21, 9, 76, 84, 137, 56, 112, 15, 14, 203, 76, 176, 78,
+			16, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 76, 82, 211, 84, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 72, 17, 9, 44, 19,
+			9, 76, 84, 137, 56, 112, 15, 14, 203, 53, 84, 201, 44, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 40, 245, 82, 56, 19, 9, 76,
+			84, 137, 56, 112, 15, 14, 203, 36, 211, 79, 8, 147, 9, 76, 84, 137, 56, 112, 15, 14, 203, 32, 243, 79, 48, 241, 201, 76, 84, 137,
+			56, 112, 15, 14, 203, 28, 83, 133, 72, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 16, 83, 79, 72, 19, 9, 76, 84, 137, 56, 112,
+			15, 14, 203, 8, 84, 212, 36, 19, 9, 76, 84, 137, 56, 112, 15, 9, 198, 37, 51, 205, 21, 68, 137, 15, 11, 200, 80, 131, 205, 37,
+			53, 9, 76, 176, 15, 11, 200, 77, 147, 66, 36, 245, 9, 76, 176, 15, 11, 200, 64, 21, 18, 36, 245, 9, 76, 176, 15, 11, 200, 48,
+			19, 65, 37, 53, 9, 76, 176, 15, 11, 200, 44, 148, 137, 8, 21, 9, 76, 176, 15, 11, 200, 32, 243, 73, 48, 85, 9, 76, 176, 15,
+			11, 200, 20, 226, 71, 52, 21, 9, 76, 176, 15, 11, 200, 16, 146, 207, 80, 243, 73, 76, 176, 15, 11, 200, 16, 145, 148, 60, 225, 201,
+			76, 176, 15, 11, 200, 16, 144, 76, 20, 181, 9, 76, 176, 15, 11, 200, 4, 193, 77, 4, 227, 137, 76, 176, 15, 12, 201, 64, 244, 212,
+			76, 52, 137, 65, 69, 77, 15, 7, 196, 24, 20, 137, 56, 15, 7, 196, 4, 196, 9, 56, 15, 7, 196, 4, 197, 1, 56, 16, 0, 9,
+			198, 17, 32, 71, 37, 53, 0, 15, 15, 204, 81, 32, 78, 77, 3, 1, 57, 65, 82, 36, 225, 192, 15, 15, 204, 80, 82, 206, 60, 195,
+			199, 37, 49, 82, 36, 225, 192, 15, 15, 204, 44, 243, 80, 72, 243, 73, 81, 65, 82, 36, 225, 192, 15, 15, 204, 36, 228, 212, 73, 83,
+			69, 57, 65, 82, 36, 225, 192, 15, 15, 204, 36, 211, 65, 81, 34, 75, 84, 193, 82, 36, 225, 192, 15, 15, 204, 8, 144, 140, 36, 241,
+			210, 4, 97, 82, 36, 225, 192, 15, 10, 3, 95, 52, 111, 83, 57, 36, 108, 0, 0, 12, 201, 65, 39, 195, 37, 49, 82, 36, 225, 192,
+			15, 12, 201, 29, 39, 195, 37, 49, 82, 36, 225, 192, 15, 11, 200, 88, 147, 132, 52, 17, 197, 72, 144, 15, 11, 200, 25, 34, 66, 101,
+			69, 5, 72, 144, 15, 8, 197, 36, 225, 82, 80, 144, 15, 14, 4, 95, 115, 116, 107, 89, 47, 34, 6, 39, 40, 49, 0, 0, 12, 201,
+			45, 38, 83, 80, 19, 12, 61, 49, 64, 15, 14, 203, 44, 243, 147, 80, 149, 21, 80, 147, 206, 20, 192, 15, 9, 198, 77, 80, 147, 84,
+			209, 82, 15, 9, 198, 77, 66, 80, 84, 193, 82, 15, 9, 198, 77, 1, 75, 84, 193, 82, 15, 9, 198, 76, 80, 197, 72, 225, 82, 15,
+			9, 198, 72, 85, 1, 8, 193, 82, 15, 9, 198, 64, 244, 212, 84, 193, 82, 15, 9, 198, 64, 192, 84, 36, 225, 82, 15, 9, 198, 64,
+			20, 208, 60, 193, 82, 15, 9, 198, 52, 147, 135, 20, 193, 82, 15, 9, 198, 52, 20, 141, 61, 33, 82, 15, 9, 198, 48, 19, 69, 57,
+			65, 82, 15, 9, 198, 44, 244, 146, 60, 65, 82, 15, 9, 198, 44, 243, 150, 20, 225, 82, 15, 9, 198, 44, 243, 132, 60, 193, 82, 15,
+			9, 198, 44, 243, 66, 36, 225, 82, 15, 9, 198, 44, 243, 12, 36, 65, 82, 15, 9, 198, 44, 242, 197, 81, 65, 82, 15, 9, 198, 44,
+			240, 71, 84, 193, 82, 15, 9, 198, 44, 19, 132, 36, 65, 82, 15, 9, 198, 44, 19, 85, 24, 193, 82, 15, 9, 198, 44, 19, 11, 84,
+			193, 82, 15, 9, 198, 36, 229, 5, 72, 225, 82, 15, 9, 198, 36, 229, 5, 56, 65, 82, 15, 9, 198, 36, 227, 203, 84, 193, 82, 15,
+			9, 198, 32, 20, 131, 20, 193, 82, 15, 9, 198, 29, 32, 84, 84, 193, 82, 15, 9, 198, 24, 245, 82, 4, 113, 82, 15, 9, 198, 20,
+			194, 77, 36, 225, 82, 15, 9, 198, 20, 180, 208, 60, 225, 82, 15, 9, 198, 20, 180, 201, 77, 65, 82, 15, 9, 198, 16, 148, 211, 60,
+			225, 82, 15, 9, 198, 16, 148, 211, 36, 65, 82, 15, 9, 198, 16, 148, 208, 60, 225, 82, 15, 9, 198, 16, 85, 1, 12, 129, 82, 15,
+			9, 198, 16, 84, 212, 36, 225, 82, 15, 9, 198, 16, 83, 69, 57, 65, 82, 15, 9, 198, 16, 82, 204, 36, 225, 82, 15, 9, 198, 12,
+			148, 139, 84, 193, 82, 15, 9, 198, 8, 192, 78, 12, 129, 82, 15, 9, 198, 5, 69, 18, 4, 129, 82, 15, 9, 198, 5, 4, 18, 60,
+			33, 82, 15, 9, 198, 4, 36, 207, 72, 33, 82, 15, 9, 198, 77, 98, 78, 21, 34, 64, 15, 9, 198, 76, 49, 78, 21, 34, 64, 15,
+			9, 198, 17, 33, 74, 21, 34, 64, 15, 9, 198, 65, 35, 214, 77, 66, 64, 15, 12, 201, 52, 84, 137, 80, 242, 210, 5, 66, 64, 15,
+			12, 201, 9, 84, 133, 5, 82, 210, 5, 66, 64, 15, 12, 201, 5, 34, 83, 80, 242, 210, 5, 66, 64, 15, 19, 70, 48, 19, 147, 20,
+			225, 82, 55, 117, 50, 89, 13, 50, 6, 36, 34, 0, 15, 19, 70, 24, 19, 11, 60, 225, 82, 83, 117, 55, 49, 39, 50, 6, 36, 34,
+			0, 15, 11, 200, 45, 103, 210, 84, 192, 78, 12, 80, 15, 0, 12, 201, 45, 33, 65, 80, 147, 206, 37, 53, 0, 15, 13, 202, 25, 32,
+			71, 52, 83, 148, 5, 66, 79, 56, 15, 13, 202, 16, 148, 208, 72, 244, 15, 73, 66, 79, 56, 15, 15, 204, 44, 83, 79, 80, 84, 129,
+			64, 85, 84, 36, 181, 77, 15, 8, 197, 45, 34, 84, 36, 176, 15, 0, 9, 198, 44, 243, 150, 60, 197, 84, 15, 15, 204, 72, 81, 201,
+			60, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 65, 54, 75, 60, 195, 199, 37, 49, 82, 36, 225, 192, 15, 15, 204, 48, 82, 211,
+			36, 176, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 45, 38, 83, 80, 19, 12, 37, 49, 82, 36, 225, 192, 15, 15, 204, 45, 38, 80,
+			80, 241, 210, 4, 97, 82, 36, 225, 192, 15, 15, 204, 32, 244, 208, 37, 64, 76, 37, 49, 82, 36, 225, 192, 15, 14, 203, 26, 145, 5,
+			72, 19, 9, 76, 84, 137, 56, 112, 15, 15, 204, 16, 84, 212, 4, 34, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 16, 84, 207, 72,
+			112, 78, 37, 49, 82, 36, 225, 192, 15, 15, 204, 16, 83, 79, 45, 32, 84, 37, 49, 82, 36, 225, 192, 15, 15, 204, 4, 178, 204, 36,
+			208, 84, 37, 49, 82, 36, 225, 192, 15, 0, 9, 198, 80, 82, 206, 60, 195, 199, 15, 9, 198, 56, 85, 82, 60, 195, 199, 15, 9, 198,
+			56, 82, 210, 60, 195, 199, 15, 0, 12, 201, 65, 39, 196, 21, 53, 9, 56, 84, 128, 15, 12, 201, 16, 145, 134, 21, 33, 78, 80, 145,
+			82, 15, 0, 12, 68, 56, 241, 204, 20, 50, 6, 39, 14, 50, 0, 9, 198, 72, 245, 1, 72, 144, 78, 15, 9, 198, 44, 244, 147, 36,
+			176, 78, 15, 9, 198, 8, 20, 148, 32, 144, 78, 15, 9, 198, 4, 100, 137, 44, 16, 78, 15, 9, 198, 4, 100, 137, 44, 16, 78, 15,
+			9, 198, 16, 148, 212, 4, 229, 0, 15, 9, 198, 8, 20, 212, 4, 229, 0, 15, 11, 70, 32, 243, 204, 36, 112, 78, 21, 0, 47, 0,
+			11, 200, 44, 19, 132, 36, 64, 84, 85, 32, 15, 9, 198, 125, 65, 82, 37, 50, 192, 15, 9, 198, 76, 103, 210, 37, 50, 192, 15, 9,
+			198, 48, 149, 21, 72, 114, 75, 15, 8, 197, 57, 80, 78, 12, 80, 15, 10, 69, 76, 245, 82, 12, 80, 21, 0, 47, 0, 12, 201, 44,
+			243, 134, 164, 65, 82, 21, 33, 84, 15, 14, 203, 44, 244, 146, 21, 52, 15, 56, 64, 78, 12, 80, 15, 0, 8, 197, 104, 243, 204, 60,
+			112, 15, 11, 200, 65, 39, 212, 20, 229, 9, 60, 224, 15, 11, 200, 80, 83, 5, 64, 21, 9, 76, 176, 15, 11, 200, 60, 229, 15, 48,
+			241, 201, 76, 176, 15, 11, 200, 48, 243, 66, 5, 33, 9, 76, 176, 15, 11, 200, 24, 243, 133, 52, 21, 9, 76, 176, 15, 11, 200, 20,
+			230, 153, 52, 21, 9, 76, 176, 15, 11, 200, 5, 85, 15, 52, 21, 9, 76, 176, 15, 11, 200, 5, 3, 211, 80, 243, 9, 76, 176, 15,
+			9, 198, 52, 85, 15, 57, 147, 73, 15, 9, 198, 44, 242, 31, 72, 83, 148, 15, 12, 201, 124, 181, 137, 16, 148, 212, 4, 229, 0, 15,
+			0, 10, 199, 44, 21, 1, 48, 84, 19, 36, 15, 12, 201, 81, 83, 85, 49, 64, 82, 37, 50, 192, 15, 12, 201, 80, 84, 146, 21, 53,
+			18, 37, 50, 192, 15, 12, 201, 80, 83, 5, 52, 85, 18, 37, 50, 192, 15, 12, 201, 80, 16, 133, 48, 192, 82, 37, 50, 192, 15, 12,
+			201, 76, 83, 22, 37, 35, 206, 37, 50, 192, 15, 12, 201, 72, 85, 8, 5, 97, 82, 37, 50, 192, 15, 12, 201, 65, 35, 214, 37, 51,
+			210, 37, 50, 192, 15, 12, 201, 65, 35, 204, 21, 64, 82, 37, 50, 192, 15, 12, 201, 64, 243, 25, 80, 82, 206, 37, 50, 192, 15, 12,
+			201, 64, 192, 78, 21, 64, 82, 37, 50, 192, 15, 12, 201, 52, 146, 210, 60, 99, 206, 37, 50, 192, 15, 12, 201, 48, 81, 197, 56, 64,
+			82, 37, 50, 192, 15, 12, 201, 45, 81, 134, 21, 37, 6, 37, 50, 192, 15, 12, 201, 44, 243, 131, 20, 229, 18, 37, 50, 192, 15, 12,
+			201, 44, 19, 5, 56, 64, 82, 37, 50, 192, 15, 12, 201, 41, 81, 207, 76, 192, 86, 37, 50, 192, 15, 12, 201, 28, 83, 195, 20, 229,
+			18, 37, 50, 192, 15, 12, 201, 16, 146, 212, 5, 67, 210, 37, 50, 192, 15, 12, 201, 16, 81, 140, 5, 67, 210, 37, 50, 192, 15, 12,
+			201, 4, 229, 9, 45, 96, 82, 37, 50, 192, 15, 12, 201, 4, 48, 197, 77, 51, 210, 37, 50, 192, 15, 9, 198, 64, 243, 77, 21, 32,
+			78, 15, 9, 198, 12, 20, 132, 36, 112, 78, 16, 13, 72, 77, 113, 65, 81, 50, 9, 73, 64, 21, 0, 47, 0, 9, 198, 44, 19, 95,
+			48, 83, 206, 15, 13, 202, 36, 229, 5, 73, 3, 204, 5, 66, 79, 56, 15, 9, 198, 32, 84, 141, 21, 66, 75, 15, 9, 198, 72, 85,
+			133, 72, 83, 147, 15, 8, 197, 81, 34, 65, 16, 80, 15, 8, 197, 72, 242, 193, 16, 80, 15, 8, 197, 17, 38, 65, 16, 80, 15, 8,
+			197, 16, 82, 193, 16, 80, 15, 8, 197, 12, 146, 193, 16, 80, 15, 9, 198, 44, 243, 147, 80, 19, 147, 15, 6, 195, 52, 83, 147, 8,
+			0, 15, 204, 65, 34, 86, 5, 65, 137, 56, 19, 147, 36, 84, 128, 15, 10, 199, 8, 147, 198, 101, 50, 83, 44, 15, 7, 196, 60, 35,
+			9, 44, 15, 0, 0, 10, 199, 64, 85, 18, 60, 193, 85, 52, 15, 10, 199, 76, 147, 5, 57, 66, 85, 52, 15, 10, 199, 61, 32, 84,
+			61, 34, 85, 52, 15, 10, 199, 44, 243, 12, 60, 66, 85, 52, 15, 10, 199, 32, 84, 130, 5, 34, 85, 52, 15, 10, 199, 28, 195, 211,
+			5, 34, 85, 52, 15, 0, 14, 68, 92, 17, 207, 56, 84, 117, 81, 6, 108, 68, 0, 15, 14, 203, 44, 194, 84, 61, 34, 68, 20, 181,
+			15, 52, 144, 15, 8, 197, 44, 243, 15, 56, 144, 15, 14, 203, 24, 244, 147, 80, 19, 132, 21, 34, 78, 16, 80, 15, 17, 4, 95, 115,
+			109, 99, 89, 65, 6, 125, 12, 55, 49, 4, 35, 48, 0, 0, 9, 198, 44, 193, 82, 21, 50, 64, 15, 9, 198, 40, 19, 15, 85, 50,
+			64, 15, 12, 201, 61, 4, 15, 76, 149, 9, 60, 225, 76, 15, 12, 201, 5, 4, 15, 76, 149, 9, 60, 225, 76, 15, 0, 0, 11, 200,
+			77, 1, 67, 36, 19, 9, 77, 64, 15, 11, 200, 56, 85, 84, 72, 19, 9, 77, 64, 15, 11, 200, 56, 21, 21, 72, 19, 9, 77, 64,
+			15, 11, 200, 44, 243, 139, 72, 85, 9, 77, 64, 15, 11, 200, 4, 36, 207, 49, 85, 9, 77, 64, 15, 10, 199, 64, 245, 16, 61, 84,
+			146, 36, 15, 10, 199, 60, 208, 146, 100, 65, 82, 36, 15, 10, 199, 52, 20, 203, 36, 225, 82, 36, 15, 10, 199, 45, 32, 75, 36, 193,
+			82, 36, 15, 9, 198, 64, 20, 148, 37, 50, 192, 15, 18, 70, 60, 64, 76, 37, 50, 192, 39, 72, 35, 55, 6, 37, 89, 49, 0, 15,
+			9, 198, 4, 96, 84, 37, 50, 192, 15, 0, 7, 196, 65, 34, 79, 72, 15, 8, 197, 73, 81, 197, 72, 144, 15, 8, 197, 25, 34, 69,
+			72, 144, 15, 11, 200, 24, 244, 141, 100, 225, 5, 72, 144, 15, 8, 197, 48, 149, 1, 56, 144, 15, 14, 203, 44, 243, 134, 37, 35, 65,
+			56, 66, 78, 16, 80, 15, 0, 9, 198, 72, 243, 65, 56, 148, 212, 15, 11, 200, 164, 179, 206, 60, 209, 84, 72, 144, 15, 9, 198, 80,
+			145, 199, 21, 34, 64, 15, 9, 198, 76, 230, 68, 21, 34, 64, 15, 9, 198, 73, 149, 20, 21, 34, 64, 15, 9, 198, 72, 83, 147, 21,
+			34, 64, 15, 9, 198, 64, 147, 132, 21, 34, 64, 15, 9, 198, 64, 18, 203, 21, 34, 64, 15, 9, 198, 44, 241, 204, 21, 34, 64, 15,
+			9, 198, 44, 240, 140, 21, 34, 64, 15, 9, 198, 44, 20, 148, 21, 34, 64, 15, 9, 198, 40, 20, 203, 21, 34, 64, 15, 9, 198, 28,
+			226, 68, 21, 34, 64, 15, 9, 198, 24, 148, 203, 21, 34, 64, 15, 9, 198, 16, 145, 148, 21, 34, 64, 15, 9, 198, 9, 35, 196, 21,
+			34, 64, 15, 9, 198, 8, 147, 132, 21, 34, 64, 15, 9, 198, 24, 81, 5, 77, 66, 64, 15, 9, 198, 12, 130, 65, 57, 66, 64, 15,
+			9, 198, 44, 20, 9, 80, 19, 0, 15, 0, 9, 198, 56, 82, 212, 5, 34, 69, 15, 9, 198, 52, 20, 148, 101, 34, 69, 15, 9, 198,
+			28, 84, 149, 56, 66, 69, 15, 9, 198, 4, 197, 77, 36, 226, 69, 15, 9, 198, 4, 69, 133, 72, 34, 69, 15, 9, 198, 80, 16, 200,
+			37, 51, 69, 15, 9, 198, 52, 20, 152, 37, 51, 69, 15, 9, 198, 20, 194, 84, 37, 51, 69, 15, 9, 198, 16, 17, 1, 37, 51, 69,
+			15, 0, 9, 198, 72, 20, 137, 80, 85, 0, 15, 18, 70, 8, 148, 203, 84, 149, 0, 71, 37, 89, 49, 84, 6, 37, 47, 0, 15, 9,
+			198, 29, 39, 195, 37, 51, 69, 15, 9, 198, 49, 85, 8, 21, 32, 78, 15, 9, 198, 12, 83, 12, 60, 96, 78, 16, 17, 71, 12, 130,
+			72, 84, 18, 21, 4, 76, 37, 58, 6, 35, 58, 35, 0, 0, 7, 196, 24, 85, 5, 72, 15, 9, 198, 77, 1, 67, 36, 98, 75, 15,
+			7, 196, 80, 21, 1, 72, 15, 28, 67, 48, 149, 0, 55, 37, 72, 112, 48, 117, 34, 6, 121, 72, 0, 15, 82, 100, 101, 32, 112, 97,
+			114, 97, 100, 101, 32, 0, 12, 201, 80, 18, 201, 77, 67, 211, 44, 244, 0, 15, 12, 201, 20, 193, 75, 81, 35, 211, 44, 244, 0, 15,
+			9, 198, 4, 84, 143, 76, 243, 0, 15, 9, 198, 44, 241, 9, 12, 147, 0, 15, 9, 198, 25, 35, 206, 80, 19, 0, 15, 9, 198, 16,
+			80, 201, 52, 19, 0, 15, 18, 71, 77, 2, 69, 48, 33, 82, 28, 89, 48, 111, 55, 71, 132, 12, 81, 0, 0, 9, 198, 64, 243, 25,
+			45, 35, 205, 15, 11, 200, 80, 16, 200, 37, 53, 9, 76, 176, 15, 11, 200, 77, 67, 203, 5, 53, 9, 76, 176, 15, 11, 200, 76, 178,
+			83, 52, 21, 9, 76, 176, 15, 15, 204, 65, 54, 75, 61, 0, 84, 60, 195, 199, 37, 50, 192, 15, 12, 201, 65, 54, 75, 61, 0, 84,
+			37, 50, 192, 15, 11, 200, 64, 20, 129, 76, 149, 9, 76, 176, 15, 11, 200, 64, 20, 129, 49, 149, 9, 76, 176, 15, 11, 200, 52, 20,
+			152, 37, 53, 9, 76, 176, 15, 11, 200, 52, 18, 193, 72, 243, 137, 76, 176, 15, 11, 200, 45, 96, 68, 72, 21, 9, 76, 176, 15, 11,
+			200, 33, 145, 18, 5, 83, 9, 76, 176, 15, 11, 200, 24, 19, 148, 5, 53, 9, 76, 176, 15, 11, 200, 21, 33, 207, 56, 243, 73, 76,
+			176, 15, 11, 200, 20, 208, 146, 100, 243, 137, 76, 176, 15, 11, 200, 16, 17, 1, 37, 53, 9, 76, 176, 15, 11, 200, 8, 192, 83, 24,
+			83, 73, 76, 176, 15, 11, 200, 8, 20, 20, 37, 53, 9, 76, 176, 15, 11, 200, 5, 64, 86, 37, 53, 9, 76, 176, 15, 11, 200, 5,
+			1, 82, 36, 241, 9, 76, 176, 15, 11, 200, 4, 226, 77, 37, 53, 9, 76, 176, 15, 10, 199, 65, 54, 75, 61, 0, 84, 36, 15, 12,
+			201, 72, 21, 9, 60, 224, 76, 37, 51, 69, 15, 12, 201, 65, 54, 75, 60, 195, 199, 37, 51, 69, 15, 12, 201, 65, 34, 77, 37, 66,
+			86, 37, 51, 69, 15, 12, 201, 64, 21, 5, 72, 224, 76, 37, 51, 69, 15, 12, 201, 60, 34, 133, 45, 66, 86, 37, 51, 69, 15, 12,
+			201, 52, 20, 203, 84, 194, 78, 37, 51, 69, 15, 12, 201, 49, 85, 8, 21, 32, 78, 37, 51, 69, 15, 12, 201, 32, 243, 204, 36, 112,
+			78, 37, 51, 69, 15, 12, 201, 25, 33, 85, 16, 144, 78, 37, 51, 69, 15, 12, 201, 16, 85, 5, 72, 210, 78, 37, 51, 69, 15, 12,
+			201, 8, 20, 148, 32, 144, 78, 37, 51, 69, 15, 12, 201, 4, 209, 82, 36, 176, 78, 37, 51, 69, 15, 9, 198, 65, 54, 75, 61, 0,
+			84, 15, 0, 10, 199, 44, 19, 142, 20, 197, 82, 20, 15, 10, 199, 88, 83, 148, 36, 193, 82, 20, 15, 10, 199, 81, 83, 142, 20, 193,
+			82, 20, 15, 10, 199, 81, 34, 85, 52, 97, 82, 20, 15, 10, 199, 76, 82, 213, 56, 65, 82, 20, 15, 10, 199, 65, 35, 198, 36, 193,
+			82, 20, 15, 10, 199, 64, 83, 132, 84, 193, 82, 20, 15, 10, 199, 52, 20, 135, 36, 225, 82, 20, 15, 10, 199, 44, 243, 147, 84, 193,
+			82, 20, 15, 10, 199, 44, 20, 197, 72, 225, 82, 20, 15, 10, 199, 4, 178, 207, 72, 65, 82, 20, 15, 12, 201, 97, 147, 15, 29, 32,
+			70, 37, 50, 192, 15, 12, 201, 96, 84, 143, 29, 32, 70, 37, 50, 192, 15, 12, 201, 81, 148, 15, 29, 32, 70, 37, 50, 192, 15, 12,
+			201, 80, 244, 15, 29, 32, 70, 37, 50, 192, 15, 12, 201, 80, 243, 79, 29, 32, 70, 37, 50, 192, 15, 12, 201, 80, 83, 5, 80, 82,
+			206, 37, 50, 192, 15, 12, 201, 80, 83, 5, 29, 32, 70, 37, 50, 192, 15, 12, 201, 77, 84, 5, 73, 51, 206, 37, 50, 192, 15, 12,
+			201, 76, 147, 135, 4, 193, 83, 37, 50, 192, 15, 12, 201, 72, 17, 9, 60, 99, 206, 37, 50, 192, 15, 12, 201, 65, 148, 143, 80, 82,
+			206, 37, 50, 192, 15, 12, 201, 65, 54, 75, 36, 21, 18, 37, 50, 192, 15, 12, 201, 64, 19, 148, 60, 210, 77, 37, 50, 192, 15, 12,
+			201, 61, 37, 15, 29, 32, 70, 37, 50, 192, 15, 12, 201, 56, 243, 79, 29, 32, 70, 37, 50, 192, 15, 12, 201, 53, 83, 20, 36, 85,
+			14, 37, 50, 192, 15, 12, 201, 52, 243, 143, 29, 32, 70, 37, 50, 192, 15, 12, 201, 52, 85, 1, 52, 244, 134, 37, 50, 192, 15, 12,
+			201, 52, 17, 1, 28, 20, 203, 37, 50, 192, 15, 12, 201, 48, 149, 15, 29, 32, 70, 37, 50, 192, 15, 12, 201, 45, 38, 79, 80, 82,
+			206, 37, 50, 192, 15, 12, 201, 44, 244, 205, 60, 115, 206, 37, 50, 192, 15, 12, 201, 44, 83, 73, 29, 32, 70, 37, 50, 192, 15, 12,
+			201, 36, 65, 79, 29, 32, 70, 37, 50, 192, 15, 12, 201, 32, 243, 15, 29, 32, 70, 37, 50, 192, 15, 12, 201, 29, 32, 70, 60, 195,
+			199, 37, 50, 192, 15, 12, 201, 28, 84, 149, 56, 66, 86, 37, 50, 192, 15, 12, 201, 28, 83, 77, 60, 195, 199, 37, 50, 192, 15, 12,
+			201, 24, 245, 15, 29, 32, 70, 37, 50, 192, 15, 12, 201, 24, 243, 143, 29, 32, 70, 37, 50, 192, 15, 12, 201, 21, 67, 143, 29, 32,
+			70, 37, 50, 192, 15, 12, 201, 20, 193, 75, 81, 35, 206, 37, 50, 192, 15, 12, 201, 16, 85, 5, 45, 66, 86, 37, 50, 192, 15, 12,
+			201, 16, 83, 79, 29, 32, 70, 37, 50, 192, 15, 12, 201, 12, 19, 9, 24, 244, 142, 37, 50, 192, 15, 12, 201, 8, 81, 18, 4, 113,
+			82, 37, 50, 192, 15, 12, 201, 8, 20, 143, 52, 85, 18, 37, 50, 192, 15, 12, 201, 5, 85, 15, 29, 32, 70, 37, 50, 192, 15, 12,
+			201, 5, 81, 9, 60, 195, 199, 37, 50, 192, 15, 12, 201, 4, 114, 84, 5, 67, 210, 37, 50, 192, 15, 9, 198, 76, 147, 9, 44, 21,
+			0, 15, 9, 198, 64, 192, 71, 36, 21, 0, 15, 9, 198, 44, 20, 197, 52, 21, 0, 15, 9, 198, 4, 84, 143, 64, 192, 78, 16, 8,
+			66, 61, 48, 108, 89, 0, 76, 12, 4, 95, 98, 97, 114, 10, 71, 6, 121, 13, 0, 20, 4, 95, 99, 105, 114, 89, 6, 112, 12, 49,
+			108, 65, 83, 55, 4, 115, 49, 89, 0, 4, 193, 172, 43, 0, 7, 196, 4, 226, 79, 56, 15, 9, 198, 80, 20, 133, 72, 147, 135, 15,
+			9, 198, 64, 20, 133, 72, 147, 135, 15, 9, 198, 64, 19, 133, 72, 147, 135, 15, 9, 198, 48, 85, 133, 72, 147, 135, 15, 9, 198, 48,
+			21, 133, 72, 147, 135, 15, 9, 198, 45, 84, 5, 72, 147, 135, 15, 9, 198, 24, 147, 133, 72, 147, 135, 15, 9, 198, 4, 65, 5, 72,
+			147, 135, 15, 12, 201, 36, 229, 5, 57, 66, 79, 56, 83, 0, 15, 7, 196, 17, 84, 201, 56, 15, 9, 198, 72, 84, 21, 8, 194, 75,
+			15, 9, 198, 53, 82, 203, 20, 34, 75, 15, 7, 196, 52, 85, 1, 56, 16, 10, 67, 52, 147, 128, 65, 37, 50, 0, 72, 0, 12, 201,
+			80, 83, 5, 29, 32, 70, 21, 33, 64, 15, 12, 201, 77, 68, 149, 45, 69, 82, 21, 33, 64, 15, 12, 201, 76, 181, 76, 65, 69, 82,
+			21, 33, 64, 15, 12, 201, 24, 245, 15, 29, 32, 70, 21, 33, 64, 15, 12, 201, 5, 85, 15, 29, 32, 70, 21, 33, 64, 15, 7, 196,
+			4, 229, 9, 44, 15, 12, 201, 65, 35, 208, 61, 37, 9, 60, 224, 76, 15, 17, 4, 95, 48, 77, 52, 71, 37, 55, 37, 57, 6, 39,
+			12, 50, 112, 0, 0, 9, 198, 88, 20, 197, 48, 147, 133, 15, 9, 198, 28, 83, 1, 80, 147, 133, 15, 9, 198, 17, 85, 133, 80, 147,
+			133, 15, 12, 201, 64, 84, 150, 21, 36, 201, 80, 85, 0, 15, 12, 201, 28, 83, 133, 74, 148, 201, 80, 85, 0, 15, 9, 198, 88, 20,
+			197, 48, 147, 133, 15, 9, 198, 4, 116, 143, 56, 243, 73, 15, 8, 197, 52, 244, 193, 36, 176, 15, 8, 197, 29, 32, 70, 36, 176, 15,
+			0, 9, 198, 64, 21, 75, 37, 53, 0, 15, 9, 198, 88, 147, 132, 36, 49, 82, 15, 9, 198, 80, 19, 66, 85, 33, 82, 15, 9, 198,
+			77, 81, 199, 21, 33, 82, 15, 9, 198, 76, 181, 76, 65, 65, 82, 15, 9, 198, 76, 83, 5, 45, 65, 82, 15, 9, 198, 72, 148, 15,
+			77, 65, 82, 15, 9, 198, 72, 84, 213, 49, 65, 82, 15, 9, 198, 72, 84, 208, 37, 33, 82, 15, 9, 198, 72, 83, 73, 81, 65, 82,
+			15, 9, 198, 72, 83, 1, 56, 49, 82, 15, 9, 198, 72, 82, 213, 73, 33, 82, 15, 9, 198, 72, 16, 129, 81, 65, 82, 15, 9, 198,
+			64, 148, 5, 81, 65, 82, 15, 9, 198, 64, 84, 141, 85, 65, 82, 15, 9, 198, 64, 84, 134, 61, 33, 82, 15, 9, 198, 64, 20, 211,
+			37, 97, 82, 15, 9, 198, 61, 34, 69, 57, 65, 82, 15, 9, 198, 60, 36, 212, 73, 81, 82, 15, 9, 198, 60, 36, 212, 37, 1, 82,
+			15, 9, 198, 60, 36, 197, 73, 97, 82, 15, 9, 198, 57, 83, 77, 21, 33, 82, 15, 9, 198, 45, 84, 147, 37, 97, 82, 15, 9, 198,
+			45, 83, 20, 37, 97, 82, 15, 9, 198, 45, 34, 84, 37, 49, 82, 15, 9, 198, 45, 33, 68, 37, 65, 82, 15, 9, 198, 44, 244, 146,
+			36, 113, 82, 15, 9, 198, 44, 243, 142, 61, 65, 82, 15, 9, 198, 44, 243, 134, 21, 33, 82, 15, 9, 198, 44, 243, 80, 5, 33, 82,
+			15, 9, 198, 44, 243, 77, 85, 65, 82, 15, 9, 198, 44, 20, 130, 85, 33, 82, 15, 9, 198, 44, 19, 9, 9, 33, 82, 15, 9, 198,
+			36, 229, 133, 57, 65, 82, 15, 9, 198, 36, 229, 5, 29, 33, 82, 15, 9, 198, 36, 228, 213, 49, 65, 82, 15, 9, 198, 36, 228, 212,
+			73, 81, 82, 15, 9, 198, 36, 228, 208, 37, 33, 82, 15, 9, 198, 36, 225, 143, 72, 209, 82, 15, 9, 198, 36, 225, 12, 60, 113, 82,
+			15, 9, 198, 36, 225, 12, 21, 97, 82, 15, 9, 198, 36, 225, 4, 5, 65, 82, 15, 9, 198, 36, 212, 12, 36, 49, 82, 15, 9, 198,
+			32, 244, 208, 37, 65, 82, 15, 9, 198, 32, 84, 143, 37, 49, 82, 15, 9, 198, 28, 20, 129, 57, 65, 82, 15, 9, 198, 24, 16, 197,
+			81, 65, 82, 15, 9, 198, 24, 16, 146, 36, 177, 82, 15, 9, 198, 20, 112, 76, 37, 49, 82, 15, 9, 198, 16, 149, 133, 73, 65, 82,
+			15, 9, 198, 16, 148, 211, 20, 177, 82, 15, 9, 198, 16, 147, 73, 81, 65, 82, 15, 9, 198, 16, 145, 134, 21, 33, 82, 15, 9, 198,
+			16, 84, 18, 36, 209, 82, 15, 9, 198, 16, 84, 15, 73, 65, 82, 15, 9, 198, 16, 82, 204, 5, 33, 82, 15, 9, 198, 16, 82, 204,
+			4, 209, 82, 15, 9, 198, 16, 82, 25, 17, 33, 82, 15, 9, 198, 16, 81, 143, 72, 209, 82, 15, 9, 198, 12, 83, 5, 9, 33, 82,
+			15, 9, 198, 8, 149, 149, 4, 177, 82, 15, 9, 198, 8, 19, 12, 61, 65, 82, 15, 9, 198, 5, 52, 201, 77, 65, 82, 15, 9, 198,
+			5, 49, 129, 49, 65, 82, 15, 9, 198, 5, 32, 137, 81, 33, 82, 15, 9, 198, 5, 4, 18, 21, 65, 82, 15, 9, 198, 4, 227, 196,
+			37, 49, 82, 15, 9, 198, 4, 67, 73, 81, 65, 82, 15, 9, 198, 4, 36, 197, 57, 65, 82, 15, 12, 201, 36, 225, 140, 5, 67, 210,
+			37, 50, 192, 15, 9, 198, 52, 85, 18, 36, 177, 82, 15, 9, 198, 37, 35, 206, 36, 177, 82, 15, 7, 196, 5, 67, 206, 36, 15, 12,
+			201, 5, 49, 82, 8, 18, 132, 76, 160, 78, 15, 12, 201, 5, 49, 82, 8, 18, 132, 76, 160, 78, 16, 11, 70, 16, 80, 149, 28, 113,
+			82, 21, 0, 47, 10, 3, 95, 56, 111, 108, 47, 50, 14, 0, 17, 4, 95, 48, 77, 50, 65, 37, 55, 37, 57, 6, 39, 12, 50, 108,
+			0, 0, 17, 67, 52, 19, 128, 65, 118, 50, 107, 118, 0, 81, 104, 97, 118, 101, 32, 10, 199, 4, 69, 143, 44, 21, 21, 72, 15, 11,
+			200, 88, 84, 147, 36, 243, 133, 72, 80, 15, 8, 197, 72, 81, 5, 72, 144, 15, 11, 200, 76, 83, 73, 56, 20, 137, 84, 208, 15, 11,
+			200, 76, 19, 129, 80, 244, 137, 84, 208, 15, 11, 200, 52, 244, 129, 80, 244, 137, 84, 208, 15, 11, 200, 44, 243, 15, 24, 243, 137, 84,
+			208, 15, 11, 200, 44, 243, 12, 60, 181, 137, 84, 208, 15, 8, 197, 16, 84, 15, 56, 144, 15, 7, 196, 81, 148, 129, 56, 16, 7, 196,
+			28, 19, 1, 56, 16, 17, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 6, 121, 12, 72, 112, 0, 0, 8, 197, 82, 146, 133, 72, 144,
+			15, 0, 9, 198, 76, 218, 76, 21, 34, 64, 15, 9, 198, 57, 225, 12, 21, 34, 64, 15, 9, 198, 33, 244, 132, 21, 34, 64, 15, 16,
+			69, 64, 243, 9, 76, 176, 48, 39, 55, 6, 37, 89, 49, 0, 15, 8, 197, 77, 64, 84, 36, 176, 15, 8, 197, 72, 84, 12, 36, 176,
+			15, 13, 4, 95, 48, 77, 49, 47, 6, 123, 89, 14, 50, 0, 0, 9, 198, 76, 21, 68, 37, 50, 192, 15, 9, 198, 64, 241, 84, 37,
+			50, 192, 15, 9, 198, 5, 34, 193, 37, 50, 192, 15, 11, 66, 64, 32, 83, 37, 50, 35, 55, 0, 42, 10, 199, 44, 21, 1, 45, 33,
+			83, 20, 15, 10, 199, 65, 34, 78, 76, 84, 211, 20, 15, 10, 199, 64, 85, 9, 80, 84, 211, 20, 15, 10, 199, 52, 18, 84, 72, 84,
+			211, 20, 15, 0, 10, 199, 77, 69, 75, 44, 21, 21, 72, 15, 10, 199, 52, 18, 213, 48, 21, 21, 72, 15, 10, 199, 45, 96, 68, 72,
+			21, 21, 72, 15, 10, 199, 44, 243, 15, 72, 21, 21, 72, 15, 10, 199, 5, 4, 1, 72, 21, 21, 72, 15, 8, 197, 24, 19, 148, 60,
+			208, 15, 8, 197, 81, 149, 133, 72, 144, 15, 8, 197, 72, 241, 5, 72, 144, 15, 8, 197, 72, 20, 197, 72, 144, 15, 11, 200, 64, 243,
+			25, 12, 83, 148, 72, 144, 15, 8, 197, 44, 241, 197, 72, 144, 15, 8, 197, 40, 17, 197, 72, 144, 15, 8, 197, 8, 17, 197, 72, 144,
+			15, 8, 197, 44, 243, 147, 84, 208, 15, 0, 11, 200, 36, 212, 18, 36, 208, 84, 85, 32, 15, 9, 198, 80, 244, 211, 21, 34, 64, 15,
+			9, 198, 80, 20, 16, 21, 34, 64, 15, 9, 198, 76, 182, 68, 21, 34, 64, 15, 9, 198, 76, 182, 68, 21, 34, 64, 15, 9, 198, 76,
+			182, 68, 21, 34, 64, 15, 9, 198, 76, 19, 20, 21, 34, 64, 15, 9, 198, 72, 148, 212, 21, 34, 64, 15, 9, 198, 72, 20, 19, 21,
+			34, 64, 15, 12, 201, 72, 16, 149, 48, 148, 212, 21, 34, 64, 15, 12, 201, 56, 21, 20, 21, 35, 196, 21, 34, 64, 15, 9, 198, 52,
+			244, 212, 21, 34, 64, 15, 9, 198, 49, 84, 203, 21, 34, 64, 15, 9, 198, 48, 241, 19, 21, 34, 64, 15, 9, 198, 48, 20, 19, 21,
+			34, 64, 15, 9, 198, 48, 20, 16, 21, 34, 64, 15, 9, 198, 40, 20, 16, 21, 34, 64, 15, 9, 198, 33, 148, 212, 21, 34, 64, 15,
+			9, 198, 25, 84, 203, 21, 34, 64, 15, 9, 198, 24, 81, 20, 21, 34, 64, 15, 9, 198, 17, 32, 80, 21, 34, 64, 15, 9, 198, 12,
+			21, 83, 21, 34, 64, 15, 9, 198, 9, 38, 68, 21, 34, 64, 15, 9, 198, 8, 85, 12, 21, 34, 64, 15, 9, 198, 65, 35, 198, 21,
+			66, 64, 15, 9, 198, 16, 84, 208, 61, 66, 64, 15, 11, 200, 72, 83, 159, 77, 48, 78, 12, 80, 15, 0, 11, 200, 65, 227, 203, 81,
+			35, 202, 21, 32, 15, 9, 198, 4, 229, 9, 24, 243, 137, 15, 0, 12, 201, 44, 243, 131, 21, 52, 201, 60, 225, 82, 15, 12, 201, 44,
+			243, 77, 37, 52, 201, 60, 225, 82, 15, 9, 198, 52, 86, 154, 4, 226, 78, 15, 13, 202, 20, 180, 212, 72, 21, 129, 28, 19, 131, 20,
+			15, 9, 198, 24, 243, 9, 4, 229, 0, 15, 0, 10, 199, 4, 66, 31, 72, 83, 131, 20, 15, 6, 195, 88, 244, 128, 72, 5, 195, 24,
+			244, 128, 0, 9, 198, 33, 145, 18, 60, 98, 76, 15, 10, 199, 60, 36, 197, 73, 96, 78, 76, 15, 0, 9, 198, 29, 32, 70, 60, 227,
+			205, 15, 11, 200, 80, 241, 207, 48, 84, 201, 76, 176, 15, 11, 200, 56, 84, 1, 48, 84, 201, 76, 176, 15, 11, 200, 17, 148, 208, 21,
+			5, 9, 76, 176, 15, 7, 196, 24, 197, 73, 16, 15, 9, 198, 88, 19, 129, 16, 149, 77, 15, 9, 198, 56, 240, 133, 48, 149, 77, 15,
+			10, 199, 65, 35, 196, 84, 49, 78, 80, 15, 10, 199, 60, 97, 137, 12, 144, 78, 80, 15, 10, 199, 36, 226, 149, 72, 144, 78, 80, 15,
+			0, 9, 198, 88, 145, 5, 60, 99, 206, 15, 9, 198, 77, 68, 153, 44, 226, 78, 15, 12, 201, 28, 84, 141, 4, 226, 83, 80, 146, 192,
+			15, 9, 198, 72, 80, 71, 20, 229, 0, 15, 13, 202, 77, 83, 6, 5, 4, 159, 64, 20, 129, 80, 15, 13, 72, 52, 19, 129, 28, 83,
+			69, 57, 64, 21, 0, 47, 0, 12, 201, 65, 35, 208, 124, 65, 85, 80, 146, 192, 15, 9, 198, 36, 211, 65, 56, 83, 147, 15, 9, 198,
+			64, 243, 69, 72, 19, 147, 15, 14, 4, 95, 108, 105, 103, 55, 37, 81, 35, 47, 40, 34, 0, 0, 10, 199, 77, 64, 84, 36, 243, 159,
+			72, 15, 10, 199, 52, 243, 5, 45, 147, 31, 72, 15, 10, 199, 52, 147, 12, 36, 243, 159, 72, 15, 10, 199, 45, 96, 84, 21, 35, 159,
+			72, 15, 10, 199, 33, 83, 65, 56, 149, 31, 72, 15, 10, 199, 16, 242, 212, 72, 147, 159, 72, 15, 0, 9, 198, 53, 144, 197, 48, 149,
+			77, 15, 12, 201, 4, 208, 149, 48, 21, 15, 72, 149, 77, 15, 10, 199, 48, 242, 207, 52, 240, 137, 48, 15, 10, 199, 32, 85, 5, 72,
+			241, 137, 48, 15, 12, 201, 29, 228, 197, 64, 245, 5, 57, 66, 76, 15, 7, 196, 24, 16, 201, 48, 15, 7, 196, 16, 80, 137, 48, 15,
+			9, 198, 24, 244, 148, 36, 227, 128, 15, 7, 196, 48, 81, 193, 48, 15, 14, 70, 76, 50, 23, 20, 150, 128, 89, 84, 136, 47, 89, 0,
+			0, 12, 201, 84, 226, 86, 21, 36, 201, 81, 244, 128, 15, 12, 201, 77, 1, 75, 80, 18, 213, 49, 244, 128, 15, 12, 201, 65, 35, 212,
+			60, 179, 204, 49, 244, 128, 15, 12, 201, 64, 20, 140, 4, 209, 78, 81, 244, 128, 15, 12, 201, 36, 225, 140, 5, 66, 79, 57, 244, 128,
+			15, 12, 201, 21, 99, 204, 85, 66, 79, 57, 244, 128, 15, 12, 201, 16, 148, 195, 37, 3, 9, 57, 244, 128, 15, 8, 197, 8, 83, 154,
+			60, 192, 15, 12, 201, 65, 54, 75, 60, 102, 83, 37, 50, 192, 15, 12, 201, 64, 243, 25, 4, 225, 18, 37, 50, 192, 15, 12, 201, 20,
+			115, 195, 20, 229, 18, 37, 50, 192, 15, 0, 8, 197, 4, 211, 133, 76, 144, 15, 8, 197, 28, 226, 69, 72, 144, 15, 0, 9, 198, 52,
+			19, 162, 72, 194, 71, 15, 10, 199, 44, 244, 144, 61, 35, 9, 28, 15, 10, 199, 28, 241, 22, 36, 195, 9, 28, 15, 12, 201, 29, 147,
+			159, 44, 243, 15, 28, 148, 203, 15, 10, 199, 65, 39, 211, 20, 229, 1, 8, 15, 0, 10, 199, 65, 80, 140, 36, 50, 83, 80, 15, 9,
+			198, 32, 243, 79, 24, 243, 128, 15, 9, 198, 20, 211, 212, 36, 243, 128, 15, 9, 198, 8, 20, 212, 36, 243, 128, 15, 9, 198, 77, 245,
+			20, 21, 34, 64, 15, 9, 198, 54, 147, 12, 21, 34, 64, 15, 9, 198, 45, 245, 20, 21, 34, 64, 15, 10, 199, 8, 241, 6, 125, 33,
+			9, 28, 15, 17, 206, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 53, 9, 76, 176, 15, 17, 206, 20, 180, 201, 77, 65, 78, 80, 144,
+			76, 37, 53, 9, 76, 176, 15, 12, 201, 44, 194, 77, 4, 181, 5, 72, 149, 77, 15, 9, 198, 65, 35, 212, 20, 147, 128, 15, 9, 198,
+			64, 225, 85, 52, 243, 137, 15, 9, 198, 40, 18, 207, 8, 147, 128, 15, 0, 11, 200, 164, 209, 137, 56, 69, 12, 36, 112, 15, 12, 201,
+			60, 213, 133, 45, 51, 5, 48, 145, 192, 15, 12, 201, 48, 19, 132, 24, 198, 71, 80, 145, 192, 15, 12, 201, 45, 32, 77, 64, 80, 71,
+			80, 145, 192, 15, 11, 200, 33, 227, 132, 80, 84, 140, 36, 112, 15, 11, 200, 24, 244, 147, 81, 225, 76, 36, 112, 15, 12, 201, 24, 244,
+			130, 36, 225, 20, 48, 145, 192, 15, 11, 200, 36, 228, 197, 45, 66, 67, 36, 64, 15, 11, 200, 8, 18, 212, 21, 34, 67, 36, 64, 15,
+			10, 199, 21, 81, 1, 36, 211, 206, 36, 15, 12, 201, 45, 32, 77, 64, 80, 71, 80, 145, 192, 15, 8, 197, 84, 224, 201, 4, 192, 15,
+			0, 7, 196, 56, 21, 21, 72, 15, 9, 198, 78, 148, 169, 88, 84, 137, 15, 12, 201, 61, 97, 82, 44, 243, 77, 20, 194, 71, 15, 12,
+			201, 28, 83, 143, 64, 192, 68, 20, 194, 71, 15, 12, 201, 28, 83, 142, 20, 212, 201, 29, 66, 71, 15, 12, 201, 25, 33, 68, 76, 243,
+			77, 20, 194, 71, 15, 12, 201, 20, 161, 78, 16, 243, 77, 20, 194, 71, 15, 12, 201, 20, 101, 5, 73, 98, 83, 20, 194, 71, 15, 0,
+			9, 198, 72, 145, 207, 72, 148, 212, 15, 9, 198, 64, 19, 133, 48, 148, 212, 15, 9, 198, 64, 16, 201, 24, 148, 212, 15, 9, 198, 56,
+			21, 21, 72, 148, 212, 15, 9, 198, 52, 244, 129, 48, 148, 212, 15, 9, 198, 32, 147, 132, 84, 148, 212, 15, 9, 198, 28, 21, 76, 48,
+			148, 212, 15, 9, 198, 25, 85, 21, 72, 148, 212, 15, 9, 198, 24, 147, 129, 48, 148, 212, 15, 9, 198, 16, 148, 137, 28, 148, 212, 15,
+			9, 198, 5, 33, 197, 48, 148, 212, 15, 9, 198, 21, 65, 82, 56, 83, 0, 15, 12, 201, 72, 17, 134, 36, 224, 68, 21, 34, 64, 15,
+			10, 199, 65, 81, 19, 21, 35, 9, 28, 15, 13, 202, 20, 101, 5, 73, 33, 84, 80, 83, 9, 28, 15, 12, 201, 76, 19, 77, 20, 228,
+			213, 72, 145, 64, 15, 9, 198, 44, 244, 132, 36, 19, 0, 15, 9, 198, 4, 67, 73, 72, 19, 0, 15, 0, 8, 197, 8, 19, 139, 165,
+			32, 15, 9, 198, 85, 53, 82, 64, 84, 128, 15, 9, 198, 72, 85, 83, 76, 84, 128, 15, 9, 198, 60, 33, 21, 12, 84, 128, 15, 9,
+			198, 52, 245, 83, 76, 84, 128, 15, 9, 198, 44, 20, 21, 56, 84, 128, 15, 9, 198, 36, 229, 21, 8, 84, 128, 15, 9, 198, 36, 229,
+			15, 56, 84, 128, 15, 9, 198, 36, 225, 21, 12, 84, 128, 15, 9, 198, 8, 20, 213, 56, 84, 128, 15, 9, 198, 4, 195, 15, 44, 84,
+			128, 15, 9, 198, 76, 210, 71, 72, 84, 137, 15, 9, 198, 76, 178, 68, 80, 84, 137, 15, 9, 198, 24, 163, 204, 48, 84, 137, 15, 10,
+			199, 89, 244, 147, 5, 37, 9, 28, 15, 13, 202, 48, 85, 1, 57, 71, 206, 16, 83, 9, 28, 15, 14, 203, 20, 101, 5, 73, 68, 153,
+			44, 177, 76, 36, 112, 15, 9, 198, 32, 81, 197, 52, 243, 137, 15, 7, 196, 88, 149, 129, 80, 15, 0, 9, 198, 44, 245, 5, 48, 85,
+			0, 15, 11, 200, 36, 225, 12, 165, 49, 76, 36, 112, 15, 11, 200, 4, 225, 159, 29, 65, 76, 36, 112, 15, 13, 202, 44, 243, 15, 72,
+			21, 21, 72, 20, 137, 20, 15, 10, 199, 44, 83, 73, 44, 19, 9, 20, 15, 10, 199, 64, 243, 25, 56, 243, 73, 20, 15, 10, 199, 21,
+			96, 78, 28, 83, 9, 20, 15, 10, 199, 48, 83, 137, 56, 148, 205, 20, 15, 9, 198, 88, 83, 133, 104, 144, 78, 15, 9, 198, 60, 65,
+			78, 76, 80, 78, 15, 9, 198, 4, 225, 204, 36, 176, 78, 15, 9, 198, 61, 33, 9, 56, 21, 0, 15, 9, 198, 4, 181, 15, 72, 21,
+			0, 15, 9, 198, 57, 147, 70, 60, 208, 78, 16, 9, 198, 44, 195, 196, 72, 144, 78, 16, 9, 198, 17, 32, 71, 60, 208, 78, 16, 0,
+			26, 67, 52, 149, 0, 65, 37, 47, 15, 49, 84, 121, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 14, 68, 46, 148,
+			143, 52, 49, 132, 51, 6, 108, 65, 0, 15, 12, 201, 88, 83, 2, 20, 128, 71, 20, 194, 71, 15, 12, 201, 32, 245, 133, 17, 48, 71,
+			20, 194, 71, 15, 11, 200, 44, 243, 21, 52, 32, 82, 36, 80, 15, 11, 200, 44, 19, 5, 56, 64, 82, 36, 80, 15, 10, 67, 52, 149,
+			0, 65, 37, 47, 0, 72, 0, 11, 200, 88, 145, 9, 52, 21, 9, 60, 224, 15, 11, 200, 65, 35, 202, 20, 181, 9, 60, 224, 15, 11,
+			200, 56, 243, 73, 56, 21, 9, 60, 224, 15, 11, 200, 45, 83, 85, 48, 21, 9, 60, 224, 15, 11, 200, 44, 243, 139, 72, 85, 9, 60,
+			224, 15, 11, 200, 28, 83, 133, 72, 21, 9, 60, 224, 15, 11, 200, 24, 16, 149, 48, 21, 9, 60, 224, 15, 11, 200, 16, 84, 137, 88,
+			21, 9, 60, 224, 15, 11, 200, 4, 36, 207, 49, 85, 9, 60, 224, 15, 10, 199, 88, 144, 146, 21, 34, 78, 28, 15, 10, 199, 76, 244,
+			148, 21, 34, 78, 28, 15, 10, 199, 76, 84, 150, 21, 34, 78, 28, 15, 10, 199, 76, 21, 84, 21, 34, 78, 28, 15, 10, 199, 73, 83,
+			132, 21, 34, 78, 28, 15, 10, 199, 60, 181, 76, 21, 34, 78, 28, 15, 10, 199, 45, 35, 203, 21, 34, 78, 28, 15, 10, 199, 44, 243,
+			148, 21, 34, 78, 28, 15, 10, 199, 44, 20, 211, 21, 34, 78, 28, 15, 10, 199, 44, 20, 148, 21, 34, 78, 28, 15, 10, 199, 28, 192,
+			83, 21, 34, 78, 28, 15, 10, 199, 16, 244, 211, 21, 34, 78, 28, 15, 10, 199, 16, 85, 137, 21, 34, 78, 28, 15, 10, 199, 9, 35,
+			196, 21, 34, 78, 28, 15, 9, 198, 8, 17, 193, 80, 83, 0, 15, 12, 201, 60, 210, 210, 36, 225, 211, 124, 66, 71, 15, 9, 198, 52,
+			20, 147, 44, 19, 0, 15, 0, 7, 196, 60, 66, 105, 76, 15, 8, 197, 44, 192, 75, 165, 32, 15, 12, 201, 76, 147, 80, 48, 144, 201,
+			80, 85, 0, 15, 9, 198, 56, 20, 193, 48, 84, 133, 15, 9, 198, 24, 192, 78, 44, 84, 133, 15, 9, 198, 24, 147, 5, 80, 84, 133,
+			15, 9, 198, 20, 180, 201, 48, 84, 133, 15, 14, 203, 88, 81, 5, 73, 53, 25, 28, 113, 76, 36, 112, 15, 7, 196, 45, 35, 193, 80,
+			15, 7, 196, 4, 115, 129, 80, 15, 8, 197, 24, 147, 129, 57, 48, 15, 0, 10, 199, 28, 16, 129, 72, 66, 78, 20, 15, 9, 198, 48,
+			144, 133, 72, 144, 78, 15, 9, 198, 32, 243, 132, 85, 32, 78, 15, 9, 198, 5, 4, 1, 72, 21, 0, 15, 9, 198, 77, 80, 139, 85,
+			64, 78, 16, 9, 198, 60, 36, 201, 16, 144, 78, 16, 15, 4, 95, 114, 101, 118, 34, 37, 84, 6, 112, 12, 89, 72, 0, 0, 11, 200,
+			13, 84, 146, 36, 53, 76, 84, 208, 15, 9, 198, 44, 244, 205, 21, 66, 75, 15, 10, 199, 77, 34, 76, 4, 226, 193, 56, 15, 12, 201,
+			48, 16, 137, 60, 65, 78, 80, 19, 0, 15, 14, 4, 95, 50, 88, 111, 47, 6, 129, 84, 13, 50, 14, 0, 0, 8, 197, 50, 146, 130,
+			60, 208, 15, 10, 199, 88, 21, 20, 21, 34, 78, 28, 15, 10, 199, 80, 149, 18, 21, 34, 78, 28, 15, 10, 199, 64, 244, 212, 21, 34,
+			78, 28, 15, 10, 199, 48, 149, 18, 21, 34, 78, 28, 15, 10, 199, 29, 32, 68, 21, 34, 78, 28, 15, 10, 199, 25, 34, 84, 21, 34,
+			78, 28, 15, 10, 199, 25, 34, 83, 21, 34, 78, 28, 15, 10, 199, 20, 195, 216, 21, 34, 78, 28, 15, 10, 199, 17, 32, 71, 21, 34,
+			78, 28, 15, 7, 196, 45, 80, 137, 44, 15, 9, 198, 48, 82, 211, 36, 176, 76, 15, 0, 12, 201, 84, 226, 86, 21, 36, 201, 80, 85,
+			0, 15, 12, 201, 44, 192, 83, 76, 144, 201, 80, 85, 0, 15, 12, 201, 28, 83, 133, 72, 244, 201, 80, 85, 0, 15, 12, 201, 8, 148,
+			15, 48, 20, 137, 80, 85, 0, 15, 12, 201, 76, 181, 70, 24, 81, 1, 72, 149, 77, 15, 12, 201, 44, 243, 77, 37, 52, 207, 72, 149,
+			77, 15, 7, 196, 72, 149, 129, 48, 15, 10, 199, 29, 147, 78, 5, 50, 65, 48, 15, 0, 9, 198, 29, 32, 84, 37, 53, 0, 15, 9,
+			198, 13, 146, 204, 37, 53, 0, 15, 9, 198, 8, 20, 211, 37, 53, 0, 15, 9, 198, 8, 20, 20, 37, 53, 0, 15, 9, 198, 80, 20,
+			5, 81, 49, 82, 15, 9, 198, 77, 66, 76, 37, 49, 82, 15, 9, 198, 76, 50, 1, 81, 65, 82, 15, 9, 198, 72, 85, 149, 72, 65,
+			82, 15, 9, 198, 72, 85, 133, 73, 49, 82, 15, 9, 198, 72, 85, 129, 49, 81, 82, 15, 9, 198, 72, 81, 210, 20, 65, 82, 15, 9,
+			198, 72, 80, 76, 37, 49, 82, 15, 9, 198, 64, 241, 84, 37, 49, 82, 15, 9, 198, 45, 32, 75, 20, 193, 82, 15, 9, 198, 44, 243,
+			12, 4, 33, 82, 15, 9, 198, 44, 19, 132, 37, 49, 82, 15, 9, 198, 36, 67, 204, 37, 49, 82, 15, 9, 198, 24, 19, 148, 5, 49,
+			82, 15, 9, 198, 21, 35, 212, 37, 49, 82, 15, 9, 198, 20, 225, 15, 77, 49, 82, 15, 9, 198, 20, 160, 75, 84, 193, 82, 15, 9,
+			198, 16, 144, 76, 101, 49, 82, 15, 9, 198, 16, 85, 129, 49, 81, 82, 15, 9, 198, 16, 84, 212, 73, 81, 82, 15, 9, 198, 16, 84,
+			12, 61, 145, 82, 15, 9, 198, 4, 225, 204, 37, 49, 82, 15, 9, 198, 4, 113, 210, 5, 97, 82, 15, 14, 203, 124, 181, 137, 48, 144,
+			146, 37, 53, 9, 76, 176, 15, 10, 199, 8, 20, 201, 48, 146, 213, 52, 15, 10, 199, 53, 148, 212, 21, 34, 85, 52, 15, 10, 199, 45,
+			34, 84, 21, 34, 85, 52, 15, 10, 199, 44, 243, 147, 36, 194, 85, 52, 15, 10, 199, 44, 243, 131, 36, 194, 85, 52, 15, 10, 199, 16,
+			85, 84, 21, 34, 85, 52, 15, 7, 196, 4, 115, 206, 36, 15, 9, 198, 72, 148, 5, 57, 49, 82, 15, 9, 198, 8, 241, 197, 57, 49,
+			82, 15, 0, 10, 199, 80, 149, 21, 48, 21, 21, 72, 15, 10, 199, 44, 243, 148, 4, 181, 21, 72, 15, 10, 199, 44, 243, 138, 20, 181,
+			21, 72, 15, 10, 199, 44, 192, 86, 36, 21, 21, 72, 15, 10, 199, 44, 20, 137, 44, 21, 21, 72, 15, 8, 197, 24, 144, 146, 60, 208,
+			15, 9, 198, 73, 244, 207, 56, 225, 82, 15, 14, 203, 20, 180, 208, 21, 34, 77, 20, 229, 5, 72, 80, 15, 11, 200, 8, 20, 212, 5,
+			33, 5, 72, 80, 15, 8, 197, 44, 245, 5, 72, 144, 15, 20, 72, 12, 193, 77, 20, 229, 9, 56, 80, 49, 55, 116, 65, 113, 50, 47,
+			136, 50, 0, 8, 67, 61, 85, 0, 21, 0, 47, 0, 10, 199, 65, 39, 198, 20, 181, 21, 72, 15, 13, 202, 77, 147, 139, 72, 85, 9,
+			77, 66, 83, 44, 15, 13, 202, 76, 84, 1, 72, 21, 9, 77, 66, 83, 44, 15, 13, 202, 52, 147, 137, 52, 19, 9, 77, 66, 83, 44,
+			15, 13, 202, 33, 145, 18, 60, 70, 78, 4, 210, 83, 44, 15, 13, 202, 25, 32, 71, 52, 83, 148, 5, 34, 83, 44, 15, 13, 202, 24,
+			147, 1, 80, 83, 9, 77, 66, 83, 44, 15, 13, 202, 16, 242, 213, 52, 83, 148, 5, 34, 83, 44, 15, 13, 202, 16, 84, 141, 5, 67,
+			204, 60, 114, 83, 44, 15, 13, 202, 9, 35, 205, 5, 67, 204, 60, 114, 83, 44, 15, 13, 202, 5, 34, 201, 80, 82, 212, 60, 226, 83,
+			44, 15, 13, 202, 4, 229, 18, 61, 3, 204, 60, 114, 83, 44, 15, 12, 201, 16, 84, 201, 16, 84, 129, 81, 83, 64, 15, 12, 201, 80,
+			84, 212, 36, 211, 206, 37, 83, 64, 15, 12, 201, 44, 243, 21, 52, 32, 82, 37, 83, 64, 15, 12, 201, 44, 19, 5, 56, 64, 82, 37,
+			83, 64, 15, 9, 198, 45, 96, 82, 81, 50, 84, 15, 16, 4, 95, 114, 102, 120, 34, 47, 34, 39, 83, 55, 115, 49, 89, 0, 0, 9,
+			198, 81, 32, 75, 80, 244, 197, 15, 9, 198, 25, 37, 75, 80, 244, 197, 15, 12, 201, 44, 243, 80, 5, 32, 84, 37, 53, 0, 15, 8,
+			198, 64, 84, 137, 44, 243, 128, 9, 198, 77, 147, 139, 72, 243, 128, 15, 9, 198, 52, 81, 193, 24, 243, 128, 15, 9, 198, 77, 69, 84,
+			80, 84, 137, 15, 9, 198, 8, 84, 133, 16, 84, 137, 15, 17, 206, 77, 84, 18, 4, 224, 84, 85, 32, 76, 37, 53, 9, 76, 176, 15,
+			9, 198, 33, 148, 15, 80, 84, 197, 15, 12, 201, 72, 84, 208, 60, 228, 207, 72, 149, 77, 15, 17, 70, 60, 147, 19, 44, 147, 128, 108,
+			57, 55, 89, 49, 115, 50, 0, 15, 9, 198, 60, 97, 137, 12, 147, 128, 15, 9, 198, 64, 84, 147, 36, 19, 128, 15, 0, 9, 198, 45,
+			103, 211, 81, 84, 128, 15, 12, 201, 8, 83, 133, 16, 146, 212, 36, 225, 82, 68, 12, 201, 77, 80, 150, 20, 229, 9, 60, 225, 82, 15,
+			12, 201, 65, 35, 208, 61, 37, 9, 60, 225, 82, 15, 12, 201, 44, 243, 148, 72, 20, 201, 28, 225, 82, 15, 10, 199, 64, 243, 25, 4,
+			225, 18, 36, 15, 9, 198, 76, 49, 78, 37, 50, 192, 15, 9, 198, 72, 243, 66, 37, 50, 192, 15, 14, 203, 64, 19, 31, 77, 66, 78,
+			20, 228, 201, 76, 176, 15, 9, 198, 37, 35, 206, 37, 50, 192, 15, 9, 198, 36, 176, 82, 37, 50, 192, 15, 10, 199, 44, 20, 5, 48,
+			192, 78, 36, 15, 0, 14, 203, 77, 147, 80, 80, 243, 65, 80, 243, 15, 28, 144, 15, 13, 202, 25, 33, 68, 21, 34, 75, 76, 128, 86,
+			56, 15, 0, 9, 198, 77, 84, 9, 57, 83, 64, 15, 9, 198, 5, 85, 5, 57, 66, 64, 15, 9, 198, 4, 211, 133, 77, 66, 64, 15,
+			0, 11, 200, 80, 242, 211, 36, 179, 204, 60, 112, 15, 9, 198, 76, 209, 76, 80, 84, 137, 15, 9, 198, 76, 194, 75, 44, 84, 137, 15,
+			9, 198, 76, 178, 76, 16, 84, 137, 15, 9, 198, 64, 148, 129, 80, 84, 137, 15, 10, 199, 64, 84, 147, 21, 34, 193, 80, 15, 0, 12,
+			201, 64, 84, 134, 20, 181, 9, 60, 225, 82, 15, 12, 201, 44, 243, 134, 20, 181, 9, 60, 225, 82, 15, 0, 9, 198, 88, 148, 201, 60,
+			231, 210, 15, 9, 198, 80, 83, 80, 61, 39, 210, 15, 9, 198, 76, 82, 210, 21, 71, 210, 15, 9, 198, 48, 149, 20, 21, 39, 210, 15,
+			9, 198, 48, 21, 18, 36, 231, 210, 15, 11, 200, 16, 81, 133, 45, 68, 137, 12, 80, 15, 0, 14, 68, 73, 244, 207, 56, 51, 115, 89,
+			6, 108, 68, 0, 15, 11, 200, 77, 80, 147, 84, 213, 9, 60, 224, 15, 11, 200, 64, 84, 131, 21, 5, 9, 60, 224, 15, 11, 200, 44,
+			243, 131, 21, 5, 9, 60, 224, 15, 11, 200, 20, 180, 197, 45, 85, 9, 60, 224, 15, 11, 200, 80, 147, 19, 45, 244, 133, 72, 144, 15,
+			11, 200, 61, 97, 82, 50, 144, 133, 72, 144, 15, 11, 200, 61, 33, 11, 50, 149, 133, 72, 144, 15, 11, 200, 61, 5, 18, 124, 178, 197,
+			72, 144, 15, 10, 199, 44, 243, 134, 21, 33, 78, 76, 15, 0, 11, 200, 77, 68, 129, 80, 81, 201, 76, 176, 15, 11, 200, 28, 83, 137,
+			80, 149, 137, 76, 176, 15, 11, 200, 17, 148, 204, 20, 181, 9, 76, 176, 15, 15, 204, 64, 20, 140, 4, 209, 78, 80, 20, 137, 44, 84,
+			128, 15, 9, 198, 45, 84, 137, 61, 53, 77, 15, 11, 200, 80, 84, 129, 64, 85, 84, 36, 176, 15, 10, 199, 81, 32, 78, 76, 145, 78,
+			80, 15, 10, 199, 77, 68, 137, 56, 113, 78, 80, 15, 10, 199, 72, 80, 201, 64, 145, 78, 80, 15, 10, 199, 44, 243, 147, 84, 209, 78,
+			80, 15, 12, 201, 36, 229, 5, 72, 84, 211, 20, 229, 0, 15, 12, 201, 36, 229, 5, 48, 194, 71, 20, 229, 0, 15, 10, 199, 16, 149,
+			133, 72, 113, 78, 80, 15, 11, 200, 4, 208, 137, 88, 19, 5, 57, 48, 15, 10, 199, 36, 225, 143, 72, 208, 78, 80, 15, 12, 201, 12,
+			192, 73, 73, 99, 217, 4, 229, 0, 15, 10, 199, 12, 128, 78, 28, 80, 78, 80, 15, 12, 71, 77, 64, 84, 20, 209, 78, 80, 21, 0,
+			47, 0, 10, 199, 64, 19, 9, 56, 68, 143, 52, 15, 9, 198, 77, 80, 141, 5, 34, 78, 15, 18, 70, 9, 83, 12, 21, 66, 78, 71,
+			129, 55, 13, 47, 6, 115, 68, 0, 15, 9, 198, 16, 19, 13, 5, 66, 78, 15, 9, 198, 5, 81, 213, 77, 66, 78, 15, 11, 200, 52,
+			81, 9, 44, 19, 69, 57, 64, 15, 11, 200, 36, 228, 212, 73, 83, 69, 57, 64, 15, 11, 200, 36, 224, 201, 80, 19, 69, 57, 64, 15,
+			21, 72, 56, 243, 131, 32, 19, 1, 57, 64, 50, 108, 50, 91, 13, 55, 6, 121, 68, 0, 15, 0, 17, 67, 52, 145, 192, 65, 35, 57,
+			15, 89, 108, 0, 81, 115, 195, 165, 32, 14, 203, 44, 20, 146, 36, 84, 133, 52, 17, 197, 72, 144, 15, 10, 67, 52, 145, 192, 65, 122,
+			57, 0, 72, 0, 10, 199, 77, 80, 147, 36, 66, 95, 72, 15, 10, 199, 64, 20, 129, 76, 149, 31, 72, 15, 10, 199, 44, 243, 77, 37,
+			52, 223, 72, 15, 10, 199, 8, 147, 143, 45, 83, 31, 72, 15, 10, 199, 72, 84, 201, 77, 65, 78, 76, 15, 10, 199, 52, 243, 147, 81,
+			32, 78, 76, 15, 0, 11, 200, 73, 81, 9, 52, 83, 148, 125, 32, 15, 12, 201, 88, 147, 132, 36, 176, 84, 36, 243, 128, 15, 12, 201,
+			77, 80, 140, 36, 208, 84, 36, 243, 128, 15, 12, 201, 76, 81, 210, 20, 112, 84, 36, 243, 128, 15, 12, 201, 72, 84, 208, 37, 32, 84,
+			36, 243, 128, 15, 12, 201, 72, 83, 1, 45, 48, 84, 36, 243, 128, 15, 12, 201, 72, 82, 204, 4, 208, 84, 36, 243, 128, 15, 12, 201,
+			72, 82, 70, 36, 176, 84, 36, 243, 128, 15, 12, 201, 72, 81, 143, 72, 208, 84, 36, 243, 128, 15, 12, 201, 72, 80, 76, 37, 48, 84,
+			36, 243, 128, 15, 12, 201, 65, 80, 140, 36, 176, 84, 36, 243, 128, 15, 12, 201, 65, 35, 214, 60, 176, 84, 36, 243, 128, 15, 12, 201,
+			64, 84, 141, 85, 64, 84, 36, 243, 128, 15, 12, 201, 44, 244, 144, 61, 32, 84, 36, 243, 128, 15, 12, 201, 44, 243, 138, 84, 112, 84,
+			36, 243, 128, 15, 12, 201, 44, 243, 12, 60, 176, 84, 36, 243, 128, 15, 12, 201, 36, 228, 201, 57, 80, 84, 36, 243, 128, 15, 12, 201,
+			36, 225, 143, 72, 208, 84, 36, 243, 128, 15, 12, 201, 36, 212, 12, 36, 176, 84, 36, 243, 128, 15, 12, 201, 36, 211, 73, 29, 32, 84,
+			36, 243, 128, 15, 12, 201, 32, 16, 137, 81, 80, 84, 36, 243, 128, 15, 12, 201, 29, 32, 86, 37, 64, 84, 36, 243, 128, 15, 12, 201,
+			24, 197, 75, 81, 80, 84, 36, 243, 128, 15, 12, 201, 24, 16, 146, 36, 176, 84, 36, 243, 128, 15, 12, 201, 17, 148, 198, 84, 226, 212,
+			36, 243, 128, 15, 12, 201, 17, 84, 12, 36, 176, 84, 36, 243, 128, 15, 12, 201, 16, 84, 208, 21, 32, 84, 36, 243, 128, 15, 12, 201,
+			16, 84, 18, 37, 96, 84, 36, 243, 128, 15, 12, 201, 16, 83, 65, 72, 176, 84, 36, 243, 128, 15, 12, 201, 16, 82, 204, 5, 32, 84,
+			36, 243, 128, 15, 12, 201, 16, 82, 204, 4, 208, 84, 36, 243, 128, 15, 12, 201, 16, 81, 143, 72, 208, 84, 36, 243, 128, 15, 12, 201,
+			16, 81, 140, 61, 32, 84, 36, 243, 128, 15, 12, 201, 5, 52, 207, 12, 144, 84, 36, 243, 128, 15, 12, 201, 5, 4, 12, 36, 176, 84,
+			36, 243, 128, 15, 12, 201, 4, 178, 204, 4, 208, 84, 36, 243, 128, 15, 12, 201, 4, 97, 137, 72, 208, 84, 36, 243, 128, 15, 7, 196,
+			36, 130, 133, 48, 15, 13, 202, 20, 224, 217, 44, 195, 208, 124, 66, 83, 44, 15, 9, 198, 76, 243, 1, 72, 149, 77, 15, 12, 201, 48,
+			16, 143, 72, 21, 15, 72, 149, 77, 15, 9, 198, 41, 81, 9, 12, 149, 77, 15, 10, 199, 25, 32, 78, 44, 241, 137, 48, 15, 12, 71,
+			52, 19, 147, 24, 145, 76, 16, 21, 0, 47, 9, 68, 12, 240, 67, 32, 21, 0, 47, 0, 12, 201, 74, 147, 148, 28, 83, 143, 48, 241,
+			201, 15, 12, 201, 64, 19, 31, 60, 229, 15, 48, 241, 201, 15, 0, 19, 67, 80, 145, 19, 47, 37, 89, 15, 50, 6, 108, 49, 0, 81,
+			110, 111, 107, 32, 10, 69, 8, 18, 76, 21, 144, 21, 0, 47, 6, 195, 16, 85, 19, 72, 0, 9, 198, 58, 146, 129, 29, 66, 71, 15,
+			9, 198, 4, 225, 31, 29, 66, 71, 15, 9, 198, 4, 99, 95, 29, 66, 71, 15, 9, 198, 58, 146, 129, 29, 66, 71, 15, 14, 4, 95,
+			99, 101, 100, 89, 13, 72, 6, 37, 55, 35, 0, 0, 18, 70, 12, 128, 78, 76, 243, 128, 91, 57, 121, 50, 89, 6, 108, 68, 0, 15,
+			9, 198, 64, 243, 25, 28, 243, 128, 15, 9, 198, 61, 37, 15, 28, 243, 128, 15, 9, 198, 97, 147, 15, 24, 243, 128, 15, 9, 198, 76,
+			84, 211, 36, 243, 128, 15, 9, 198, 64, 20, 211, 36, 243, 128, 15, 9, 198, 61, 2, 78, 36, 243, 128, 15, 9, 198, 52, 148, 211, 36,
+			243, 128, 15, 9, 198, 21, 96, 83, 36, 243, 128, 15, 9, 198, 76, 182, 76, 48, 84, 137, 15, 9, 198, 44, 21, 129, 48, 84, 137, 15,
+			12, 201, 77, 84, 208, 20, 228, 207, 72, 149, 77, 15, 12, 201, 44, 243, 147, 37, 53, 15, 72, 149, 77, 15, 9, 198, 77, 65, 65, 72,
+			147, 128, 15, 9, 198, 65, 70, 65, 48, 147, 128, 15, 9, 198, 37, 99, 210, 36, 19, 128, 15, 9, 198, 9, 33, 84, 4, 115, 128, 15,
+			9, 198, 88, 85, 5, 72, 19, 128, 16, 9, 198, 53, 149, 15, 52, 19, 128, 16, 13, 70, 13, 35, 213, 80, 243, 128, 21, 102, 114, 0,
+			47, 0, 9, 198, 5, 52, 197, 77, 51, 210, 15, 11, 200, 60, 212, 212, 164, 65, 76, 36, 112, 15, 11, 200, 48, 20, 212, 89, 244, 132,
+			36, 112, 15, 11, 200, 34, 146, 148, 36, 65, 76, 36, 112, 15, 11, 200, 28, 195, 210, 89, 244, 132, 36, 112, 15, 10, 199, 44, 244, 205,
+			60, 115, 206, 36, 15, 8, 66, 60, 112, 108, 0, 76, 8, 0, 10, 199, 80, 84, 141, 37, 53, 15, 72, 15, 12, 201, 88, 147, 132, 76,
+			178, 66, 20, 194, 71, 15, 12, 201, 45, 83, 147, 80, 103, 210, 16, 145, 192, 15, 12, 201, 24, 244, 141, 60, 65, 78, 80, 194, 71, 15,
+			11, 200, 16, 241, 5, 44, 17, 143, 56, 144, 15, 0, 10, 199, 45, 33, 80, 21, 35, 9, 28, 15, 10, 199, 4, 228, 214, 5, 35, 9,
+			28, 15, 9, 198, 64, 20, 129, 56, 242, 68, 15, 12, 201, 76, 181, 70, 24, 81, 1, 72, 145, 64, 15, 12, 201, 44, 243, 77, 37, 52,
+			207, 72, 145, 64, 15, 9, 198, 61, 3, 211, 77, 83, 64, 15, 9, 198, 36, 226, 84, 36, 19, 0, 15, 0, 9, 198, 8, 147, 205, 21,
+			68, 137, 15, 11, 200, 81, 35, 211, 45, 147, 4, 36, 112, 15, 11, 200, 76, 181, 82, 44, 17, 212, 36, 112, 15, 10, 199, 65, 229, 1,
+			28, 83, 9, 28, 15, 11, 200, 61, 34, 193, 56, 17, 212, 36, 112, 15, 11, 200, 56, 21, 142, 45, 83, 132, 36, 112, 15, 11, 200, 45,
+			32, 77, 64, 17, 212, 36, 112, 15, 11, 200, 44, 243, 4, 76, 147, 132, 36, 112, 15, 11, 200, 44, 193, 74, 56, 211, 196, 36, 112, 15,
+			11, 200, 25, 38, 71, 80, 17, 212, 36, 112, 15, 11, 200, 16, 81, 137, 56, 84, 140, 36, 112, 15, 8, 197, 36, 229, 5, 57, 48, 15,
+			7, 196, 56, 245, 1, 80, 15, 7, 196, 24, 197, 65, 80, 15, 7, 196, 8, 21, 1, 80, 15, 11, 200, 76, 181, 82, 44, 17, 212, 36,
+			112, 15, 11, 200, 45, 32, 77, 64, 17, 212, 36, 112, 15, 11, 200, 25, 38, 71, 80, 17, 212, 36, 112, 15, 0, 12, 201, 46, 144, 133,
+			56, 128, 86, 56, 84, 137, 15, 10, 199, 88, 242, 193, 48, 148, 205, 20, 15, 10, 199, 77, 67, 201, 12, 148, 205, 20, 15, 10, 199, 64,
+			16, 201, 24, 148, 205, 20, 15, 10, 199, 56, 243, 65, 16, 148, 205, 20, 15, 10, 199, 52, 244, 129, 48, 148, 205, 20, 15, 10, 199, 45,
+			98, 69, 80, 148, 205, 20, 15, 10, 199, 24, 19, 129, 80, 148, 205, 20, 15, 0, 12, 201, 4, 208, 84, 165, 32, 71, 80, 145, 192, 15,
+			11, 200, 4, 229, 5, 64, 83, 132, 36, 80, 15, 12, 201, 76, 83, 148, 36, 209, 78, 80, 19, 0, 15, 0, 11, 200, 72, 85, 143, 49,
+			85, 9, 60, 224, 15, 11, 200, 72, 84, 207, 49, 85, 9, 60, 224, 15, 11, 200, 60, 178, 213, 64, 21, 9, 60, 224, 15, 11, 200, 56,
+			21, 137, 28, 21, 9, 60, 224, 15, 11, 200, 52, 241, 5, 72, 21, 9, 60, 224, 15, 11, 200, 45, 96, 68, 72, 21, 9, 60, 224, 15,
+			11, 200, 44, 20, 212, 72, 21, 9, 60, 224, 15, 11, 200, 36, 227, 143, 88, 21, 9, 60, 224, 15, 11, 200, 16, 85, 15, 56, 21, 9,
+			60, 224, 15, 11, 200, 16, 82, 207, 72, 21, 9, 60, 224, 15, 11, 200, 5, 85, 15, 52, 21, 9, 60, 224, 15, 11, 200, 5, 4, 1,
+			72, 149, 9, 60, 224, 15, 11, 200, 4, 227, 143, 80, 21, 9, 60, 224, 15, 11, 200, 4, 33, 9, 44, 21, 9, 60, 224, 15, 10, 199,
+			89, 84, 132, 21, 34, 78, 28, 15, 10, 199, 80, 245, 80, 21, 34, 78, 28, 15, 10, 199, 80, 19, 135, 21, 34, 78, 28, 15, 10, 199,
+			77, 83, 77, 21, 34, 78, 28, 15, 10, 199, 73, 82, 78, 21, 34, 78, 28, 15, 10, 199, 72, 19, 135, 21, 34, 78, 28, 15, 10, 199,
+			64, 192, 67, 21, 34, 78, 28, 15, 10, 199, 64, 21, 83, 21, 34, 78, 28, 15, 10, 199, 53, 83, 132, 21, 34, 78, 28, 15, 10, 199,
+			52, 20, 203, 21, 34, 78, 28, 15, 10, 199, 52, 20, 139, 21, 34, 78, 28, 15, 10, 199, 48, 243, 135, 21, 34, 78, 28, 15, 10, 199,
+			48, 147, 138, 21, 34, 78, 28, 15, 10, 199, 44, 16, 200, 21, 34, 78, 28, 15, 10, 199, 25, 83, 132, 21, 34, 78, 28, 15, 10, 199,
+			24, 244, 131, 21, 34, 78, 28, 15, 10, 199, 21, 35, 196, 21, 34, 78, 28, 15, 10, 199, 20, 66, 84, 21, 34, 78, 28, 15, 10, 199,
+			16, 146, 212, 21, 34, 78, 28, 15, 9, 198, 77, 3, 210, 80, 83, 0, 15, 11, 200, 84, 197, 18, 4, 208, 82, 36, 224, 15, 0, 7,
+			196, 64, 243, 5, 80, 15, 7, 196, 64, 19, 5, 80, 15, 12, 201, 65, 33, 84, 38, 148, 201, 80, 85, 0, 15, 12, 201, 65, 33, 67,
+			38, 148, 201, 80, 85, 0, 15, 7, 196, 88, 148, 201, 80, 15, 9, 198, 21, 33, 207, 56, 243, 73, 15, 9, 198, 8, 192, 83, 24, 83,
+			73, 15, 7, 196, 76, 19, 1, 80, 15, 0, 7, 66, 57, 144, 50, 129, 0, 8, 197, 52, 17, 137, 165, 48, 15, 9, 198, 81, 32, 75,
+			82, 148, 128, 15, 10, 199, 29, 33, 78, 4, 66, 78, 20, 15, 9, 198, 100, 83, 69, 56, 149, 0, 15, 9, 198, 16, 83, 132, 72, 149,
+			0, 15, 9, 198, 88, 19, 137, 48, 194, 78, 15, 12, 201, 52, 225, 77, 61, 65, 75, 56, 146, 192, 15, 6, 195, 85, 96, 78, 16, 0,
+			6, 195, 56, 115, 192, 13, 0, 10, 199, 80, 19, 10, 21, 34, 78, 28, 15, 10, 199, 76, 145, 206, 21, 34, 78, 28, 15, 10, 199, 65,
+			83, 19, 21, 34, 78, 28, 15, 10, 199, 37, 34, 83, 21, 34, 78, 28, 15, 10, 199, 33, 145, 18, 21, 34, 78, 28, 15, 10, 199, 25,
+			84, 142, 21, 34, 78, 28, 15, 10, 199, 9, 81, 211, 21, 34, 78, 28, 15, 13, 202, 76, 19, 141, 5, 34, 78, 21, 50, 83, 44, 15,
+			13, 202, 45, 38, 80, 80, 241, 210, 4, 98, 83, 44, 15, 13, 202, 44, 194, 77, 5, 67, 204, 60, 114, 83, 44, 15, 20, 4, 95, 99,
+			97, 112, 89, 47, 39, 108, 47, 15, 71, 39, 40, 89, 47, 35, 58, 0, 0, 12, 201, 77, 84, 16, 61, 50, 84, 36, 243, 128, 15, 12,
+			201, 52, 19, 149, 17, 82, 212, 36, 243, 128, 15, 12, 201, 45, 98, 78, 80, 147, 12, 36, 243, 128, 15, 12, 201, 44, 243, 138, 84, 226,
+			212, 36, 243, 128, 15, 12, 201, 36, 228, 212, 37, 69, 84, 36, 243, 128, 15, 12, 201, 36, 226, 214, 37, 50, 84, 36, 243, 128, 15, 12,
+			201, 20, 180, 212, 36, 226, 212, 36, 243, 128, 15, 12, 201, 20, 180, 208, 61, 50, 84, 36, 243, 128, 15, 12, 201, 16, 148, 212, 36, 226,
+			212, 36, 243, 128, 15, 12, 201, 16, 148, 208, 61, 50, 84, 36, 243, 128, 15, 12, 201, 16, 84, 212, 73, 82, 212, 36, 243, 128, 15, 10,
+			199, 28, 83, 196, 125, 66, 83, 44, 15, 9, 198, 52, 243, 69, 57, 69, 77, 15, 10, 199, 88, 81, 197, 80, 16, 137, 48, 15, 10, 199,
+			52, 84, 139, 4, 229, 9, 48, 15, 7, 196, 52, 85, 1, 48, 15, 7, 196, 48, 85, 1, 48, 15, 7, 196, 24, 21, 1, 48, 15, 0,
+			17, 6, 100, 110, 97, 39, 101, 116, 72, 114, 116, 50, 6, 118, 14, 86, 0, 9, 67, 60, 116, 222, 109, 89, 14, 0, 9, 198, 77, 80,
+			140, 36, 209, 82, 15, 9, 198, 65, 35, 214, 60, 177, 82, 15, 9, 198, 65, 35, 212, 20, 113, 82, 15, 9, 198, 64, 150, 154, 36, 177,
+			82, 15, 9, 198, 36, 228, 208, 36, 49, 82, 15, 9, 198, 20, 180, 197, 72, 49, 82, 15, 9, 198, 17, 84, 12, 36, 49, 82, 15, 9,
+			198, 5, 52, 207, 12, 145, 82, 15, 9, 198, 4, 66, 149, 56, 113, 82, 15, 10, 199, 16, 84, 15, 76, 149, 21, 52, 15, 0, 14, 203,
+			8, 244, 148, 5, 82, 212, 36, 243, 133, 72, 80, 15, 14, 203, 65, 54, 75, 60, 19, 129, 49, 148, 197, 72, 80, 15, 6, 195, 45, 83,
+			128, 72, 0, 13, 202, 76, 83, 73, 56, 20, 137, 77, 66, 83, 44, 15, 13, 202, 72, 85, 77, 5, 67, 204, 60, 114, 83, 44, 15, 13,
+			202, 65, 35, 212, 21, 53, 1, 57, 66, 83, 44, 15, 13, 202, 52, 243, 133, 80, 20, 137, 77, 66, 83, 44, 15, 13, 202, 52, 85, 5,
+			61, 35, 204, 60, 114, 83, 44, 15, 13, 202, 45, 96, 75, 76, 19, 22, 21, 34, 83, 44, 15, 13, 202, 44, 244, 205, 61, 3, 204, 37,
+			66, 83, 44, 15, 13, 202, 44, 243, 148, 72, 17, 129, 45, 66, 83, 44, 15, 13, 202, 28, 20, 212, 72, 244, 203, 61, 2, 83, 44, 15,
+			13, 202, 24, 243, 11, 48, 244, 137, 77, 66, 83, 44, 15, 13, 202, 20, 193, 75, 81, 35, 204, 101, 66, 83, 44, 15, 13, 202, 16, 148,
+			12, 60, 208, 84, 5, 34, 83, 44, 15, 13, 202, 4, 229, 1, 28, 243, 137, 77, 66, 83, 44, 15, 13, 202, 4, 224, 75, 72, 243, 137,
+			77, 66, 83, 44, 15, 13, 202, 4, 195, 5, 72, 115, 204, 60, 114, 83, 44, 15, 9, 198, 56, 243, 142, 21, 66, 84, 15, 0, 17, 70,
+			48, 144, 73, 76, 243, 128, 55, 37, 117, 89, 6, 108, 68, 0, 15, 17, 70, 8, 195, 213, 76, 243, 128, 71, 55, 40, 89, 6, 108, 68,
+			0, 15, 9, 198, 60, 181, 15, 28, 243, 128, 15, 9, 198, 64, 243, 25, 24, 243, 128, 15, 14, 203, 77, 65, 78, 60, 116, 129, 24, 84,
+			137, 56, 112, 15, 14, 203, 72, 85, 137, 80, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 64, 20, 212, 21, 84, 137, 76, 84, 137, 56,
+			112, 15, 14, 203, 64, 19, 1, 80, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 52, 243, 143, 64, 243, 9, 76, 84, 137, 56, 112, 15,
+			14, 203, 44, 21, 1, 48, 241, 201, 76, 84, 137, 56, 112, 15, 14, 203, 36, 225, 15, 45, 68, 137, 56, 84, 137, 56, 112, 15, 14, 203,
+			32, 82, 212, 60, 116, 129, 24, 84, 137, 56, 112, 15, 14, 203, 24, 81, 5, 72, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 20, 180,
+			212, 20, 212, 15, 72, 84, 137, 56, 112, 15, 14, 203, 16, 145, 201, 80, 19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 12, 128, 80, 80,
+			19, 9, 76, 84, 137, 56, 112, 15, 14, 203, 4, 100, 137, 44, 19, 137, 76, 84, 137, 56, 112, 15, 14, 203, 20, 193, 75, 81, 35, 211,
+			80, 21, 9, 76, 176, 15, 11, 200, 16, 151, 212, 21, 66, 75, 21, 32, 15, 12, 201, 88, 242, 193, 9, 83, 1, 72, 149, 77, 15, 9,
+			198, 76, 18, 210, 37, 53, 9, 15, 9, 198, 88, 149, 1, 52, 147, 128, 15, 9, 198, 72, 21, 133, 48, 147, 128, 15, 9, 198, 64, 85,
+			9, 16, 147, 128, 15, 9, 198, 53, 81, 90, 104, 147, 128, 15, 9, 198, 52, 17, 193, 76, 147, 128, 15, 9, 198, 44, 84, 129, 80, 147,
+			128, 15, 9, 198, 36, 228, 213, 48, 147, 128, 15, 9, 198, 5, 68, 143, 64, 147, 128, 15, 9, 198, 4, 192, 149, 52, 147, 128, 15, 9,
+			198, 44, 20, 21, 12, 147, 128, 15, 9, 198, 4, 100, 137, 44, 19, 128, 15, 9, 198, 65, 148, 143, 52, 19, 128, 16, 9, 198, 61, 69,
+			15, 52, 19, 128, 16, 9, 198, 9, 32, 72, 52, 19, 128, 16, 0, 9, 198, 4, 225, 204, 37, 53, 0, 15, 0, 13, 69, 77, 145, 14,
+			21, 144, 89, 111, 72, 50, 111, 0, 0, 7, 196, 64, 243, 31, 72, 15, 7, 196, 77, 244, 207, 56, 15, 9, 198, 21, 36, 129, 81, 83,
+			64, 15, 9, 198, 37, 34, 68, 37, 83, 64, 15, 8, 197, 72, 83, 148, 4, 32, 15, 0, 11, 200, 44, 194, 77, 5, 67, 204, 60, 112,
+			15, 9, 198, 77, 147, 77, 21, 68, 137, 15, 10, 199, 56, 18, 211, 44, 245, 137, 80, 15, 0, 12, 201, 65, 39, 198, 4, 36, 137, 44,
+			84, 128, 15, 12, 201, 65, 35, 199, 56, 244, 212, 36, 49, 82, 15, 15, 204, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 49, 82, 15,
+			12, 201, 16, 144, 71, 56, 244, 212, 36, 49, 82, 15, 18, 207, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 212, 37, 50, 192, 15,
+			8, 197, 44, 195, 210, 36, 64, 15, 8, 197, 33, 145, 18, 36, 64, 15, 9, 198, 21, 98, 68, 20, 229, 0, 15, 9, 198, 4, 208, 82,
+			4, 229, 0, 15, 0, 9, 198, 65, 80, 133, 73, 71, 210, 15, 9, 198, 5, 32, 137, 81, 39, 210, 15, 16, 205, 36, 229, 5, 72, 224,
+			84, 36, 243, 129, 48, 148, 197, 72, 15, 13, 202, 20, 180, 203, 60, 211, 85, 56, 146, 197, 72, 15, 18, 70, 52, 17, 206, 36, 98, 75,
+			65, 117, 68, 37, 83, 6, 37, 49, 0, 15, 11, 200, 12, 19, 79, 84, 99, 1, 28, 80, 15, 0, 7, 196, 52, 243, 31, 72, 15, 11,
+			200, 72, 81, 146, 4, 181, 9, 60, 224, 15, 11, 200, 44, 243, 150, 20, 229, 9, 60, 224, 15, 9, 198, 45, 34, 77, 36, 224, 76, 15,
+			9, 198, 36, 225, 15, 48, 83, 148, 15, 9, 198, 25, 32, 71, 52, 83, 148, 15, 9, 198, 20, 195, 203, 88, 83, 148, 15, 9, 198, 36,
+			226, 31, 72, 83, 147, 15, 9, 198, 80, 84, 141, 36, 224, 76, 15, 9, 198, 72, 85, 133, 73, 48, 76, 15, 9, 198, 32, 244, 141, 60,
+			224, 76, 15, 9, 198, 16, 144, 71, 60, 224, 76, 15, 9, 198, 53, 84, 201, 44, 19, 148, 15, 9, 198, 48, 16, 143, 72, 19, 148, 15,
+			9, 198, 36, 115, 143, 72, 19, 148, 15, 9, 198, 17, 81, 76, 48, 19, 148, 15, 0, 9, 198, 164, 179, 204, 60, 114, 64, 15, 10, 199,
+			44, 243, 69, 16, 144, 78, 80, 15, 0, 8, 197, 77, 69, 80, 36, 64, 15, 9, 198, 61, 5, 76, 20, 229, 0, 15, 9, 198, 24, 19,
+			12, 20, 229, 0, 15, 9, 198, 17, 32, 66, 4, 229, 0, 15, 0, 14, 68, 5, 33, 207, 56, 6, 35, 34, 81, 108, 50, 0, 15, 14,
+			203, 37, 36, 133, 48, 145, 201, 165, 50, 84, 21, 64, 15, 12, 201, 81, 32, 78, 76, 49, 78, 16, 83, 147, 15, 12, 201, 24, 244, 198,
+			61, 33, 83, 12, 83, 147, 15, 7, 196, 8, 242, 129, 56, 16, 4, 193, 188, 43, 0, 12, 201, 60, 101, 1, 48, 211, 204, 60, 114, 64,
+			15, 12, 201, 48, 20, 153, 56, 115, 204, 60, 114, 64, 15, 12, 201, 24, 20, 141, 4, 179, 204, 60, 114, 64, 15, 13, 202, 80, 84, 141,
+			61, 3, 1, 77, 66, 83, 44, 15, 13, 202, 76, 83, 147, 84, 19, 9, 77, 66, 83, 44, 15, 13, 202, 72, 85, 129, 56, 50, 9, 77,
+			66, 83, 44, 15, 13, 202, 56, 20, 131, 37, 52, 201, 77, 66, 83, 44, 15, 13, 202, 52, 243, 143, 64, 243, 9, 77, 66, 83, 44, 15,
+			13, 202, 48, 81, 201, 80, 147, 73, 77, 66, 83, 44, 15, 13, 202, 44, 192, 83, 76, 144, 201, 77, 66, 83, 44, 15, 13, 202, 24, 81,
+			5, 72, 19, 9, 77, 66, 83, 44, 15, 13, 202, 20, 180, 212, 72, 83, 73, 77, 66, 83, 44, 15, 9, 198, 52, 83, 79, 72, 144, 76,
+			15, 9, 198, 16, 144, 75, 60, 224, 76, 15, 0, 10, 199, 76, 82, 212, 61, 34, 69, 48, 15, 10, 199, 64, 245, 5, 57, 66, 69, 48,
+			15, 10, 199, 21, 52, 197, 57, 66, 69, 48, 15, 10, 199, 8, 18, 212, 21, 34, 69, 48, 15, 10, 199, 77, 3, 206, 17, 242, 83, 44,
+			15, 10, 199, 61, 34, 197, 77, 68, 129, 48, 15, 10, 199, 21, 2, 83, 44, 244, 1, 48, 15, 0, 17, 206, 16, 145, 134, 21, 33, 78,
+			80, 144, 66, 36, 194, 84, 21, 64, 15, 10, 199, 88, 145, 5, 60, 116, 129, 52, 15, 10, 199, 77, 65, 78, 60, 116, 129, 52, 15, 10,
+			199, 64, 83, 148, 4, 116, 129, 52, 15, 10, 199, 32, 82, 211, 4, 116, 129, 52, 15, 8, 197, 64, 244, 212, 36, 192, 15, 12, 201, 76,
+			145, 206, 36, 98, 75, 4, 228, 192, 15, 0, 0, 11, 200, 29, 147, 159, 44, 243, 15, 28, 144, 15, 14, 203, 81, 32, 78, 77, 50, 210,
+			37, 5, 9, 60, 224, 15, 13, 202, 65, 39, 206, 84, 209, 82, 5, 66, 79, 56, 15, 14, 203, 56, 85, 84, 72, 19, 9, 76, 21, 9,
+			60, 224, 15, 14, 203, 56, 21, 21, 72, 19, 9, 76, 21, 9, 60, 224, 15, 14, 203, 20, 180, 208, 72, 244, 18, 36, 21, 9, 60, 224,
+			15, 14, 203, 16, 81, 137, 9, 34, 76, 48, 21, 9, 60, 224, 15, 13, 202, 44, 147, 133, 76, 147, 204, 60, 114, 83, 44, 15, 8, 197,
+			44, 20, 197, 36, 224, 15, 8, 197, 84, 180, 129, 36, 224, 15, 10, 199, 46, 144, 133, 56, 128, 86, 56, 15, 8, 197, 44, 244, 133, 4,
+			224, 15, 8, 197, 44, 83, 153, 4, 224, 15, 0, 12, 201, 77, 1, 75, 81, 35, 199, 72, 17, 128, 15, 0, 9, 198, 80, 18, 211, 5,
+			67, 210, 15, 8, 197, 45, 33, 83, 60, 192, 15, 7, 196, 80, 244, 20, 36, 15, 0, 10, 199, 64, 192, 71, 36, 21, 15, 72, 15, 7,
+			196, 80, 20, 133, 72, 15, 15, 204, 4, 231, 211, 80, 84, 201, 60, 195, 199, 37, 50, 192, 15, 21, 72, 80, 244, 148, 20, 195, 9, 56,
+			144, 47, 108, 47, 13, 55, 6, 37, 50, 37, 0, 15, 0, 9, 198, 81, 227, 13, 60, 66, 71, 15, 9, 198, 34, 146, 141, 60, 66, 71,
+			15, 9, 198, 4, 97, 159, 48, 66, 71, 15, 0, 12, 201, 80, 245, 1, 48, 148, 193, 80, 244, 128, 15, 12, 201, 72, 84, 212, 5, 84,
+			129, 80, 244, 128, 15, 12, 201, 61, 33, 193, 56, 148, 193, 80, 244, 128, 15, 12, 201, 44, 243, 15, 56, 148, 193, 80, 244, 128, 15, 12,
+			201, 44, 21, 1, 49, 148, 193, 80, 244, 128, 15, 12, 201, 16, 84, 212, 36, 195, 1, 80, 244, 128, 15, 10, 199, 65, 229, 137, 76, 83,
+			9, 28, 15, 10, 199, 34, 146, 129, 16, 83, 9, 28, 15, 0, 9, 198, 77, 65, 82, 60, 145, 0, 15, 9, 198, 52, 81, 193, 48, 149,
+			0, 15, 9, 198, 8, 19, 19, 4, 210, 78, 15, 9, 198, 48, 85, 129, 57, 66, 78, 15, 9, 198, 5, 33, 197, 57, 66, 78, 15, 9,
+			198, 64, 146, 197, 72, 85, 0, 15, 9, 198, 81, 32, 75, 80, 21, 0, 15, 9, 198, 72, 83, 211, 80, 21, 0, 15, 9, 198, 5, 85,
+			15, 52, 21, 0, 15, 0, 12, 201, 81, 34, 75, 36, 226, 15, 48, 66, 71, 15, 12, 201, 48, 245, 141, 20, 66, 15, 48, 66, 71, 15,
+			12, 201, 81, 32, 78, 77, 97, 82, 76, 19, 0, 15, 0, 9, 198, 44, 20, 18, 36, 243, 0, 15, 6, 195, 84, 226, 84, 15, 9, 198,
+			5, 84, 212, 72, 19, 0, 15, 0, 10, 199, 81, 39, 206, 21, 34, 78, 28, 15, 12, 201, 45, 38, 83, 80, 19, 12, 60, 145, 0, 15,
+			12, 201, 45, 33, 65, 80, 147, 206, 37, 51, 69, 15, 12, 201, 16, 148, 212, 72, 18, 5, 72, 85, 0, 15, 7, 196, 80, 243, 65, 80,
+			15, 0, 9, 198, 21, 65, 82, 56, 149, 0, 15, 9, 198, 9, 35, 206, 44, 149, 0, 15, 9, 198, 28, 198, 67, 21, 34, 78, 15, 13,
+			202, 24, 244, 130, 73, 81, 197, 72, 148, 205, 20, 15, 9, 198, 76, 178, 86, 28, 21, 0, 15, 9, 198, 45, 96, 68, 72, 21, 0, 15,
+			9, 198, 36, 228, 212, 4, 228, 192, 15, 0, 9, 198, 28, 195, 210, 38, 148, 192, 15, 9, 198, 4, 211, 213, 74, 148, 192, 15, 7, 196,
+			29, 86, 65, 56, 15, 0, 8, 197, 56, 85, 82, 60, 224, 15, 13, 202, 88, 84, 130, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 81,
+			148, 129, 56, 226, 83, 21, 34, 78, 28, 15, 13, 202, 77, 65, 82, 36, 194, 83, 21, 34, 78, 28, 15, 13, 202, 77, 64, 66, 36, 194,
+			83, 21, 34, 78, 28, 15, 13, 202, 76, 145, 206, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 52, 85, 1, 48, 194, 83, 21, 34, 78,
+			28, 15, 13, 202, 52, 20, 203, 36, 226, 83, 21, 34, 78, 28, 15, 13, 202, 32, 20, 141, 60, 226, 83, 21, 34, 78, 28, 15, 13, 202,
+			28, 84, 141, 4, 226, 83, 21, 34, 78, 28, 15, 13, 202, 28, 19, 22, 4, 226, 83, 21, 34, 78, 28, 15, 13, 202, 16, 149, 137, 76,
+			147, 206, 21, 34, 78, 28, 15, 13, 202, 8, 19, 11, 4, 226, 83, 21, 34, 78, 28, 15, 13, 202, 4, 32, 78, 16, 243, 142, 21, 34,
+			78, 28, 15, 8, 197, 32, 84, 143, 36, 224, 15, 0, 11, 200, 76, 181, 129, 17, 35, 206, 165, 32, 15, 11, 200, 28, 19, 22, 4, 226,
+			83, 165, 32, 15, 13, 202, 21, 84, 143, 65, 242, 83, 21, 34, 78, 28, 15, 14, 203, 4, 195, 5, 28, 244, 137, 76, 84, 137, 56, 112,
+			15, 10, 199, 65, 35, 202, 20, 181, 9, 48, 15, 10, 199, 8, 144, 140, 36, 241, 137, 48, 15, 12, 201, 20, 208, 78, 12, 148, 5, 72,
+			85, 0, 15, 7, 196, 72, 246, 65, 48, 15, 0, 9, 198, 81, 37, 66, 4, 69, 82, 15, 9, 198, 45, 84, 150, 5, 69, 82, 15, 15,
+			204, 64, 84, 147, 60, 226, 70, 36, 49, 82, 36, 225, 192, 15, 15, 204, 52, 20, 203, 84, 194, 78, 37, 49, 82, 36, 225, 192, 15, 10,
+			199, 5, 53, 18, 60, 227, 205, 36, 15, 8, 197, 17, 82, 212, 36, 192, 15, 8, 197, 12, 242, 84, 4, 192, 15, 9, 68, 48, 84, 143,
+			100, 21, 0, 47, 0, 13, 202, 88, 84, 147, 36, 98, 75, 5, 66, 79, 56, 15, 13, 202, 77, 65, 82, 36, 194, 83, 5, 66, 79, 56,
+			15, 13, 202, 77, 1, 67, 36, 98, 75, 5, 66, 79, 56, 15, 13, 202, 76, 240, 201, 4, 194, 83, 5, 66, 79, 56, 15, 13, 202, 72,
+			83, 79, 57, 53, 18, 5, 66, 79, 56, 15, 13, 202, 53, 148, 212, 36, 98, 75, 5, 66, 79, 56, 15, 13, 202, 44, 243, 131, 20, 229,
+			18, 5, 66, 79, 56, 15, 13, 202, 36, 229, 5, 73, 35, 199, 5, 66, 79, 56, 15, 13, 202, 29, 32, 84, 36, 98, 75, 5, 66, 79,
+			56, 15, 13, 202, 16, 83, 79, 57, 53, 18, 5, 66, 79, 56, 15, 12, 201, 40, 245, 82, 56, 19, 9, 77, 66, 75, 15, 8, 197, 53,
+			244, 139, 5, 64, 15, 0, 14, 203, 77, 66, 71, 52, 21, 9, 76, 21, 9, 60, 224, 15, 14, 203, 53, 83, 20, 37, 3, 9, 44, 21,
+			9, 60, 224, 15, 14, 203, 36, 211, 79, 8, 147, 9, 76, 21, 9, 60, 224, 15, 14, 203, 28, 83, 133, 72, 19, 9, 76, 21, 9, 60,
+			224, 15, 14, 203, 16, 148, 203, 72, 147, 73, 56, 21, 9, 60, 224, 15, 14, 203, 5, 4, 18, 60, 180, 201, 52, 21, 9, 60, 224, 15,
+			13, 202, 88, 84, 147, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 72, 82, 212, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 64, 20,
+			129, 24, 98, 78, 21, 34, 78, 28, 15, 13, 202, 52, 244, 148, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 45, 96, 76, 36, 98, 67,
+			21, 34, 78, 28, 15, 13, 202, 44, 243, 131, 20, 229, 18, 21, 34, 78, 28, 15, 16, 205, 44, 243, 77, 21, 32, 201, 4, 194, 83, 21,
+			34, 78, 28, 15, 16, 205, 36, 225, 9, 88, 145, 21, 4, 194, 83, 21, 34, 78, 28, 15, 13, 202, 25, 32, 75, 80, 147, 206, 21, 34,
+			78, 28, 15, 13, 202, 12, 84, 148, 36, 98, 67, 21, 34, 78, 28, 15, 6, 195, 72, 83, 204, 15, 8, 197, 52, 84, 137, 4, 224, 16,
+			9, 68, 52, 16, 200, 60, 21, 0, 47, 0, 9, 198, 12, 130, 70, 24, 243, 128, 15, 9, 198, 80, 83, 147, 36, 243, 128, 15, 9, 198,
+			64, 83, 147, 36, 243, 128, 15, 9, 198, 21, 35, 211, 36, 243, 128, 15, 8, 197, 64, 199, 196, 21, 32, 15, 9, 198, 36, 225, 21, 77,
+			68, 137, 15, 9, 198, 48, 19, 143, 48, 147, 128, 15, 9, 198, 24, 83, 73, 56, 147, 128, 15, 7, 196, 25, 85, 9, 48, 15, 9, 198,
+			81, 84, 139, 52, 83, 128, 15, 9, 198, 52, 18, 197, 16, 243, 128, 15, 9, 198, 24, 244, 149, 72, 83, 128, 15, 9, 198, 8, 18, 1,
+			52, 19, 128, 15, 9, 198, 72, 82, 142, 24, 19, 128, 16, 0, 24, 73, 77, 21, 65, 72, 81, 1, 56, 49, 82, 89, 49, 58, 6, 115,
+			108, 72, 117, 12, 50, 89, 108, 0, 9, 198, 76, 19, 13, 37, 53, 0, 15, 9, 198, 20, 194, 84, 37, 53, 0, 15, 12, 201, 81, 148,
+			15, 80, 82, 206, 36, 177, 82, 15, 6, 195, 121, 37, 9, 15, 8, 197, 77, 65, 82, 36, 192, 15, 10, 199, 72, 84, 211, 61, 84, 131,
+			20, 15, 10, 199, 36, 115, 143, 72, 19, 131, 20, 15, 11, 200, 52, 21, 18, 36, 20, 139, 5, 64, 15, 11, 200, 12, 84, 148, 36, 98,
+			75, 5, 64, 15, 8, 197, 77, 2, 82, 4, 192, 15, 12, 71, 36, 229, 5, 72, 96, 67, 20, 21, 0, 47, 0, 9, 198, 76, 240, 201,
+			60, 195, 199, 15, 9, 198, 52, 85, 18, 60, 195, 199, 15, 9, 198, 25, 148, 201, 60, 195, 199, 15, 9, 198, 5, 53, 18, 60, 195, 199,
+			15, 12, 201, 29, 42, 78, 48, 19, 132, 37, 49, 82, 15, 13, 72, 64, 144, 195, 4, 66, 76, 49, 144, 21, 0, 47, 0, 9, 198, 80,
+			20, 148, 20, 193, 84, 15, 9, 198, 44, 244, 147, 20, 193, 84, 15, 9, 198, 20, 112, 76, 37, 65, 84, 15, 11, 200, 88, 84, 147, 36,
+			98, 67, 21, 32, 15, 11, 200, 77, 1, 67, 36, 98, 67, 21, 32, 15, 11, 200, 73, 84, 211, 36, 98, 67, 21, 32, 15, 11, 200, 72,
+			84, 212, 72, 147, 135, 21, 32, 15, 11, 200, 72, 84, 18, 60, 69, 67, 21, 32, 15, 11, 200, 72, 83, 66, 61, 84, 147, 21, 32, 15,
+			11, 200, 72, 82, 212, 36, 98, 67, 21, 32, 15, 11, 200, 53, 148, 212, 36, 98, 67, 21, 32, 15, 11, 200, 52, 244, 148, 36, 98, 67,
+			21, 32, 15, 11, 200, 48, 244, 135, 56, 85, 20, 21, 32, 15, 11, 200, 45, 96, 76, 36, 98, 67, 21, 32, 15, 11, 200, 44, 243, 80,
+			48, 85, 20, 21, 32, 15, 11, 200, 44, 243, 77, 84, 226, 67, 21, 32, 15, 11, 200, 44, 192, 82, 36, 98, 67, 21, 32, 15, 11, 200,
+			44, 20, 129, 52, 35, 204, 21, 32, 15, 11, 200, 36, 229, 18, 60, 69, 67, 21, 32, 15, 11, 200, 36, 229, 5, 72, 84, 211, 21, 32,
+			15, 11, 200, 28, 195, 210, 36, 98, 67, 21, 32, 15, 11, 200, 28, 84, 212, 36, 181, 76, 21, 32, 15, 11, 200, 24, 244, 148, 36, 98,
+			67, 21, 32, 15, 11, 200, 60, 209, 143, 72, 213, 76, 21, 32, 15, 11, 200, 24, 19, 19, 36, 98, 67, 21, 32, 15, 11, 200, 16, 148,
+			211, 36, 210, 76, 21, 32, 15, 11, 200, 16, 84, 201, 56, 98, 67, 21, 32, 15, 11, 200, 12, 84, 148, 36, 98, 67, 21, 32, 15, 11,
+			200, 4, 68, 212, 72, 147, 135, 21, 32, 15, 9, 198, 61, 96, 82, 37, 83, 64, 15, 9, 198, 77, 147, 132, 36, 176, 84, 15, 8, 197,
+			64, 244, 148, 4, 32, 15, 12, 201, 44, 20, 129, 52, 35, 204, 4, 113, 64, 15, 0, 10, 199, 88, 149, 129, 12, 149, 5, 80, 15, 10,
+			199, 64, 243, 1, 72, 149, 5, 80, 15, 10, 199, 56, 21, 9, 88, 149, 5, 80, 15, 10, 199, 52, 147, 143, 72, 149, 5, 80, 15, 10,
+			199, 52, 18, 143, 72, 149, 5, 80, 15, 10, 199, 48, 246, 65, 48, 149, 5, 80, 15, 10, 199, 48, 21, 9, 56, 149, 5, 80, 15, 10,
+			199, 45, 96, 78, 80, 149, 5, 80, 15, 10, 199, 44, 243, 137, 12, 149, 5, 80, 15, 10, 199, 44, 20, 1, 12, 149, 5, 80, 15, 10,
+			199, 36, 229, 9, 52, 149, 5, 80, 15, 10, 199, 36, 65, 78, 80, 149, 5, 80, 15, 10, 199, 25, 85, 9, 48, 149, 5, 80, 15, 10,
+			199, 21, 67, 137, 12, 149, 5, 80, 15, 10, 199, 4, 97, 137, 56, 149, 5, 80, 15, 10, 199, 77, 64, 76, 4, 181, 9, 80, 15, 10,
+			199, 52, 20, 135, 84, 84, 137, 80, 15, 10, 199, 29, 32, 80, 80, 243, 9, 80, 15, 10, 199, 16, 84, 21, 80, 84, 133, 80, 15, 10,
+			199, 48, 144, 197, 57, 66, 65, 80, 15, 0, 15, 204, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 49, 82, 15, 15, 204, 36, 228, 212,
+			73, 83, 69, 57, 64, 76, 37, 49, 82, 15, 12, 201, 5, 85, 5, 57, 66, 70, 36, 49, 82, 15, 8, 197, 77, 83, 6, 36, 64, 15,
+			8, 197, 29, 32, 86, 36, 64, 15, 8, 67, 64, 18, 82, 21, 0, 47, 0, 9, 198, 76, 83, 73, 61, 66, 75, 15, 0, 7, 196, 88,
+			83, 31, 72, 15, 9, 198, 84, 49, 78, 81, 32, 76, 15, 9, 198, 60, 97, 137, 12, 144, 76, 15, 9, 198, 44, 243, 15, 56, 144, 76,
+			15, 9, 198, 36, 229, 5, 29, 32, 76, 15, 9, 198, 4, 195, 21, 88, 144, 76, 15, 0, 11, 200, 65, 39, 211, 80, 21, 9, 60, 224,
+			15, 12, 201, 72, 83, 9, 28, 154, 83, 37, 65, 84, 15, 9, 198, 50, 149, 137, 56, 65, 64, 15, 9, 198, 42, 145, 9, 56, 65, 64,
+			15, 0, 11, 67, 92, 145, 78, 84, 6, 37, 12, 50, 0, 9, 198, 76, 82, 213, 49, 244, 128, 15, 9, 198, 76, 19, 137, 81, 244, 128,
+			15, 9, 198, 72, 81, 213, 49, 244, 128, 15, 9, 198, 52, 243, 133, 81, 244, 128, 15, 9, 198, 52, 241, 21, 49, 244, 128, 15, 9, 198,
+			52, 147, 9, 81, 244, 128, 15, 9, 198, 44, 243, 148, 73, 244, 128, 15, 9, 198, 36, 228, 213, 49, 244, 128, 15, 11, 200, 52, 147, 9,
+			81, 244, 137, 76, 176, 15, 0, 12, 202, 65, 54, 75, 60, 96, 82, 52, 18, 207, 56, 13, 202, 45, 96, 76, 36, 98, 75, 5, 66, 79,
+			56, 15, 13, 202, 44, 243, 147, 80, 84, 142, 5, 66, 79, 56, 15, 13, 202, 36, 226, 207, 73, 3, 210, 5, 66, 79, 56, 15, 13, 202,
+			36, 225, 9, 77, 3, 211, 37, 66, 79, 56, 15, 7, 196, 88, 83, 9, 56, 15, 13, 72, 8, 80, 67, 32, 37, 71, 29, 144, 21, 0,
+			47, 0, 11, 200, 8, 144, 140, 36, 244, 203, 61, 0, 15, 6, 195, 60, 35, 204, 15, 12, 201, 65, 35, 208, 124, 65, 85, 80, 148, 203,
+			15, 8, 197, 8, 20, 211, 36, 224, 15, 12, 201, 4, 67, 73, 72, 19, 9, 56, 65, 64, 15, 9, 198, 64, 20, 212, 61, 32, 76, 15,
+			12, 201, 72, 240, 137, 57, 51, 206, 4, 65, 64, 15, 12, 201, 32, 20, 140, 20, 178, 78, 4, 65, 64, 15, 0, 16, 205, 44, 243, 77,
+			20, 228, 213, 72, 16, 137, 48, 149, 5, 80, 15, 14, 203, 61, 33, 193, 56, 148, 193, 80, 244, 137, 76, 176, 15, 14, 203, 44, 243, 134,
+			37, 50, 193, 80, 244, 137, 76, 176, 15, 12, 201, 52, 21, 82, 21, 64, 78, 36, 83, 128, 15, 10, 199, 65, 148, 129, 52, 145, 1, 48,
+			15, 10, 199, 44, 243, 135, 20, 226, 65, 48, 15, 10, 199, 16, 144, 76, 20, 181, 1, 48, 15, 0, 12, 201, 53, 83, 73, 24, 146, 193,
+			80, 147, 206, 15, 15, 204, 44, 20, 148, 4, 114, 78, 36, 83, 147, 37, 50, 192, 15, 8, 197, 64, 20, 212, 36, 192, 15, 8, 197, 56,
+			244, 208, 36, 192, 15, 6, 195, 64, 147, 206, 15, 0, 7, 196, 76, 19, 15, 56, 15, 0, 13, 202, 44, 243, 134, 164, 65, 82, 5, 66,
+			79, 56, 15, 12, 201, 77, 1, 75, 81, 35, 199, 72, 19, 64, 15, 8, 197, 80, 84, 141, 36, 224, 15, 8, 197, 44, 242, 193, 36, 224,
+			15, 7, 196, 8, 81, 201, 44, 15, 8, 197, 64, 84, 149, 4, 224, 15, 8, 197, 76, 17, 137, 4, 224, 16, 8, 197, 52, 244, 137, 4,
+			224, 16, 0, 6, 195, 28, 17, 197, 15, 0, 8, 197, 64, 20, 212, 20, 192, 15, 7, 196, 64, 20, 148, 36, 15, 0, 7, 196, 4, 212,
+			5, 72, 15, 7, 196, 33, 84, 193, 72, 15, 7, 196, 8, 20, 193, 72, 15, 0, 29, 68, 16, 84, 133, 76, 72, 115, 12, 108, 89, 15,
+			49, 84, 121, 6, 47, 36, 34, 0, 81, 107, 118, 97, 114, 116, 101, 114, 32, 9, 198, 52, 147, 133, 72, 19, 0, 15, 9, 198, 28, 83,
+			133, 72, 19, 0, 15, 7, 196, 40, 84, 133, 76, 76, 12, 68, 16, 84, 133, 76, 72, 115, 108, 89, 0, 72, 0, 9, 198, 80, 147, 139,
+			81, 84, 128, 15, 9, 198, 64, 243, 9, 81, 84, 128, 15, 9, 198, 48, 145, 193, 81, 84, 128, 15, 9, 198, 45, 33, 65, 81, 84, 128,
+			15, 9, 198, 4, 113, 78, 81, 84, 128, 15, 9, 198, 85, 67, 208, 37, 51, 69, 15, 9, 198, 81, 35, 208, 37, 51, 69, 15, 9, 198,
+			72, 80, 76, 37, 51, 69, 15, 9, 198, 64, 145, 84, 37, 51, 69, 15, 9, 198, 56, 244, 132, 37, 51, 69, 15, 9, 198, 21, 35, 212,
+			37, 51, 69, 15, 9, 198, 17, 80, 76, 37, 51, 69, 15, 0, 13, 202, 88, 144, 212, 61, 34, 65, 56, 148, 205, 20, 15, 13, 202, 60,
+			36, 203, 85, 32, 78, 80, 148, 205, 20, 15, 10, 199, 33, 83, 65, 56, 148, 205, 20, 15, 13, 202, 16, 242, 212, 72, 147, 129, 72, 148,
+			205, 20, 15, 10, 199, 4, 197, 18, 84, 148, 205, 20, 15, 9, 198, 16, 84, 137, 88, 21, 0, 15, 9, 198, 4, 69, 143, 44, 21, 0,
+			15, 13, 70, 13, 35, 209, 84, 148, 192, 21, 102, 114, 0, 47, 5, 131, 239, 187, 191, 0, 6, 195, 53, 34, 64, 13, 7, 196, 64, 146,
+			197, 72, 15, 7, 196, 48, 18, 197, 72, 15, 7, 196, 88, 146, 193, 72, 15, 0, 9, 198, 64, 20, 148, 36, 83, 0, 15, 9, 198, 52,
+			85, 1, 56, 243, 0, 15, 9, 198, 72, 17, 9, 44, 19, 0, 15, 9, 198, 44, 193, 82, 36, 176, 76, 15, 9, 198, 44, 20, 132, 36,
+			224, 76, 15, 0, 11, 200, 26, 145, 5, 72, 21, 9, 60, 224, 15, 12, 201, 65, 35, 204, 21, 64, 82, 36, 21, 0, 15, 0, 11, 67,
+			20, 113, 78, 23, 121, 57, 14, 50, 0, 10, 199, 80, 85, 18, 4, 195, 199, 36, 15, 10, 199, 64, 85, 18, 60, 195, 199, 36, 15, 10,
+			199, 28, 83, 133, 4, 195, 199, 36, 15, 9, 198, 77, 74, 86, 48, 85, 0, 15, 14, 203, 20, 180, 200, 36, 34, 84, 36, 243, 137, 77,
+			64, 15, 13, 202, 81, 32, 78, 77, 97, 83, 80, 148, 205, 20, 15, 13, 202, 76, 176, 78, 16, 147, 129, 88, 148, 205, 20, 15, 13, 202,
+			21, 99, 204, 85, 66, 79, 56, 148, 205, 20, 15, 13, 202, 21, 67, 143, 12, 83, 148, 72, 148, 205, 20, 15, 9, 198, 45, 84, 5, 72,
+			85, 0, 15, 9, 198, 76, 83, 148, 20, 228, 192, 15, 9, 198, 64, 21, 9, 20, 228, 192, 15, 9, 198, 21, 98, 68, 20, 228, 192, 15,
+			9, 198, 16, 148, 211, 20, 228, 192, 15, 9, 198, 5, 81, 9, 20, 228, 192, 15, 9, 198, 4, 180, 143, 8, 21, 0, 15, 9, 198, 88,
+			20, 137, 4, 228, 192, 15, 0, 9, 198, 72, 242, 197, 72, 147, 135, 15, 9, 198, 72, 17, 5, 72, 147, 135, 15, 9, 198, 45, 33, 69,
+			72, 147, 135, 15, 9, 198, 28, 17, 197, 72, 147, 135, 15, 9, 198, 24, 147, 5, 72, 147, 135, 15, 9, 198, 24, 85, 5, 72, 147, 135,
+			15, 9, 198, 16, 244, 197, 72, 147, 135, 15, 9, 198, 16, 21, 5, 72, 147, 135, 15, 9, 198, 5, 35, 69, 72, 147, 135, 15, 9, 198,
+			4, 181, 5, 72, 147, 135, 15, 9, 198, 32, 84, 129, 48, 66, 75, 15, 9, 198, 16, 145, 1, 45, 66, 75, 15, 0, 10, 199, 65, 35,
+			202, 20, 181, 41, 72, 15, 10, 199, 32, 83, 19, 36, 225, 233, 72, 15, 14, 203, 76, 147, 80, 48, 145, 137, 44, 21, 9, 60, 224, 15,
+			14, 203, 72, 82, 207, 53, 1, 78, 76, 21, 9, 60, 224, 15, 14, 203, 72, 82, 207, 52, 208, 78, 16, 21, 9, 60, 224, 15, 14, 203,
+			72, 82, 193, 64, 149, 21, 48, 21, 9, 60, 224, 15, 14, 203, 36, 229, 5, 73, 4, 133, 80, 21, 9, 60, 224, 15, 14, 203, 20, 180,
+			212, 72, 20, 15, 76, 149, 9, 60, 224, 15, 13, 202, 80, 82, 206, 36, 98, 67, 21, 34, 78, 28, 15, 13, 202, 5, 85, 15, 44, 192,
+			86, 21, 34, 78, 28, 15, 8, 197, 80, 242, 211, 36, 224, 15, 8, 197, 9, 84, 139, 36, 224, 15, 9, 198, 44, 243, 15, 77, 48, 76,
+			15, 0, 10, 199, 44, 20, 18, 36, 50, 105, 76, 15, 9, 198, 104, 144, 133, 48, 147, 133, 15, 9, 198, 76, 243, 129, 80, 147, 133, 15,
+			9, 198, 52, 147, 129, 72, 147, 133, 15, 9, 198, 44, 21, 129, 80, 147, 133, 15, 9, 198, 28, 83, 210, 28, 147, 133, 15, 9, 198, 4,
+			35, 206, 56, 147, 133, 15, 10, 199, 88, 82, 212, 61, 34, 69, 48, 15, 12, 201, 32, 83, 19, 36, 225, 207, 72, 19, 128, 15, 12, 201,
+			25, 33, 68, 21, 34, 67, 36, 19, 128, 15, 10, 199, 52, 17, 201, 77, 68, 129, 48, 15, 10, 199, 16, 144, 77, 21, 68, 129, 48, 15,
+			11, 70, 16, 80, 68, 48, 147, 133, 21, 0, 47, 0, 9, 198, 77, 68, 149, 45, 69, 82, 15, 9, 198, 76, 145, 206, 5, 69, 82, 15,
+			11, 200, 64, 244, 148, 73, 245, 20, 165, 32, 15, 9, 198, 80, 131, 205, 37, 53, 0, 15, 10, 199, 64, 146, 212, 60, 116, 129, 52, 15,
+			10, 199, 32, 148, 212, 60, 116, 129, 52, 15, 10, 199, 24, 195, 210, 4, 116, 129, 52, 15, 8, 197, 24, 195, 206, 20, 192, 15, 8, 197,
+			28, 198, 75, 60, 192, 15, 15, 68, 32, 18, 84, 36, 107, 117, 6, 37, 12, 47, 37, 0, 15, 8, 197, 72, 84, 20, 36, 192, 15, 8,
+			197, 64, 148, 212, 36, 192, 15, 8, 197, 24, 85, 68, 4, 192, 15, 13, 70, 52, 243, 147, 36, 85, 82, 21, 102, 114, 0, 47, 0, 13,
+			202, 72, 85, 18, 61, 52, 5, 45, 66, 79, 56, 15, 13, 202, 64, 84, 147, 21, 97, 82, 5, 66, 79, 56, 15, 13, 202, 16, 85, 5,
+			72, 210, 78, 5, 66, 79, 56, 15, 7, 196, 40, 20, 1, 56, 15, 0, 8, 197, 52, 18, 210, 60, 224, 15, 13, 202, 81, 148, 15, 29,
+			32, 70, 21, 34, 78, 28, 15, 13, 202, 77, 147, 148, 21, 66, 83, 21, 34, 78, 28, 15, 13, 202, 77, 68, 149, 45, 69, 82, 21, 34,
+			78, 28, 15, 13, 202, 72, 243, 65, 57, 66, 83, 21, 34, 78, 28, 15, 13, 202, 65, 83, 22, 21, 34, 83, 21, 34, 78, 28, 15, 13,
+			202, 65, 34, 86, 5, 66, 83, 21, 34, 78, 28, 15, 13, 202, 64, 84, 137, 60, 66, 83, 21, 34, 78, 28, 15, 13, 202, 64, 20, 211,
+			37, 98, 83, 21, 34, 78, 28, 15, 13, 202, 48, 149, 15, 29, 32, 70, 21, 34, 78, 28, 15, 13, 202, 48, 16, 137, 4, 194, 83, 21,
+			34, 78, 28, 15, 13, 202, 44, 19, 148, 60, 226, 83, 21, 34, 78, 28, 15, 13, 202, 36, 226, 210, 36, 210, 78, 21, 34, 78, 28, 15,
+			13, 202, 36, 212, 18, 61, 98, 83, 21, 34, 78, 28, 15, 13, 202, 16, 85, 5, 72, 210, 78, 21, 34, 78, 28, 15, 13, 202, 8, 20,
+			130, 5, 34, 83, 21, 34, 78, 28, 15, 8, 197, 28, 83, 149, 36, 224, 15, 8, 197, 36, 225, 9, 4, 224, 15, 8, 197, 24, 146, 137,
+			4, 224, 15, 8, 197, 9, 84, 141, 4, 224, 15, 8, 197, 76, 128, 77, 4, 224, 16, 8, 197, 8, 21, 137, 4, 224, 16, 0, 14, 203,
+			72, 84, 18, 125, 49, 78, 80, 21, 9, 60, 224, 15, 0, 8, 197, 24, 195, 212, 20, 192, 15, 8, 197, 77, 64, 66, 36, 192, 15, 10,
+			199, 80, 243, 5, 72, 19, 131, 20, 15, 10, 199, 72, 81, 133, 72, 83, 131, 20, 15, 10, 199, 48, 85, 133, 72, 19, 131, 20, 15, 10,
+			199, 16, 147, 9, 28, 83, 131, 20, 15, 10, 199, 16, 82, 193, 16, 83, 131, 20, 15, 10, 199, 5, 52, 213, 72, 19, 131, 20, 15, 10,
+			199, 5, 36, 143, 28, 19, 131, 20, 15, 10, 199, 4, 208, 149, 48, 19, 131, 20, 15, 11, 200, 77, 66, 80, 20, 225, 9, 5, 64, 15,
+			10, 199, 80, 18, 203, 20, 192, 71, 20, 15, 10, 199, 64, 84, 147, 60, 224, 71, 20, 15, 10, 199, 44, 19, 85, 24, 192, 71, 20, 15,
+			10, 199, 20, 208, 129, 48, 192, 71, 20, 15, 0, 9, 198, 28, 83, 133, 4, 195, 199, 15, 18, 207, 8, 83, 133, 24, 144, 197, 24, 244,
+			133, 77, 66, 76, 48, 147, 135, 67, 16, 205, 84, 66, 210, 101, 53, 1, 48, 194, 83, 5, 66, 79, 56, 15, 15, 204, 29, 42, 78, 48,
+			19, 132, 37, 49, 82, 36, 225, 192, 15, 8, 67, 48, 243, 203, 21, 0, 47, 0, 11, 200, 8, 80, 82, 8, 82, 132, 21, 32, 67, 9,
+			198, 72, 80, 76, 37, 65, 84, 15, 9, 198, 57, 83, 12, 37, 65, 84, 15, 9, 198, 45, 96, 76, 37, 65, 84, 15, 9, 198, 17, 80,
+			76, 37, 65, 84, 15, 9, 198, 16, 83, 147, 37, 65, 84, 15, 9, 198, 4, 114, 76, 37, 65, 84, 15, 10, 199, 124, 181, 137, 88, 19,
+			5, 72, 15, 11, 200, 77, 80, 147, 80, 149, 21, 21, 32, 15, 11, 200, 77, 80, 147, 45, 34, 66, 21, 32, 15, 11, 200, 72, 82, 78,
+			88, 84, 212, 21, 32, 15, 11, 200, 72, 82, 77, 64, 244, 148, 21, 32, 15, 11, 200, 65, 35, 211, 80, 149, 21, 21, 32, 15, 11, 200,
+			65, 35, 211, 45, 34, 66, 21, 32, 15, 11, 200, 64, 84, 147, 21, 97, 82, 21, 32, 15, 11, 200, 61, 35, 129, 52, 83, 148, 21, 32,
+			15, 11, 200, 52, 19, 137, 24, 84, 212, 21, 32, 15, 11, 200, 44, 243, 148, 72, 144, 149, 21, 32, 15, 11, 200, 44, 243, 147, 80, 149,
+			21, 21, 32, 15, 11, 200, 44, 243, 147, 60, 194, 68, 21, 32, 15, 11, 200, 44, 243, 134, 72, 243, 148, 21, 32, 15, 11, 200, 44, 243,
+			134, 36, 117, 82, 21, 32, 15, 11, 200, 44, 241, 75, 76, 148, 212, 21, 32, 15, 11, 200, 36, 229, 5, 73, 3, 204, 21, 32, 15, 11,
+			200, 36, 226, 210, 36, 210, 78, 21, 32, 15, 11, 200, 36, 225, 13, 5, 32, 200, 21, 32, 15, 11, 200, 36, 225, 11, 88, 20, 148, 21,
+			32, 15, 11, 200, 20, 101, 5, 72, 64, 84, 21, 32, 15, 11, 200, 16, 148, 212, 72, 144, 149, 21, 32, 15, 11, 200, 16, 148, 211, 20,
+			229, 9, 21, 32, 15, 11, 200, 16, 85, 5, 72, 210, 78, 21, 32, 15, 11, 200, 5, 85, 15, 44, 192, 86, 21, 32, 15, 11, 200, 4,
+			195, 9, 81, 65, 82, 21, 32, 15, 9, 198, 80, 19, 10, 21, 33, 84, 15, 9, 198, 61, 85, 18, 21, 33, 84, 15, 9, 198, 52, 19,
+			137, 21, 33, 84, 15, 9, 198, 8, 243, 66, 21, 33, 84, 15, 12, 201, 44, 243, 12, 20, 181, 18, 36, 49, 64, 15, 12, 201, 36, 228,
+			208, 20, 181, 18, 36, 49, 64, 15, 0, 10, 199, 12, 16, 146, 36, 243, 5, 80, 15, 10, 199, 88, 149, 1, 48, 149, 5, 80, 15, 10,
+			199, 88, 148, 137, 48, 149, 5, 80, 15, 10, 199, 88, 19, 9, 16, 149, 5, 80, 15, 10, 199, 85, 32, 129, 56, 149, 5, 80, 15, 10,
+			199, 80, 245, 1, 48, 149, 5, 80, 15, 10, 199, 80, 243, 129, 48, 149, 5, 80, 15, 10, 199, 76, 243, 143, 72, 149, 5, 80, 15, 10,
+			199, 76, 243, 9, 16, 149, 5, 80, 15, 10, 199, 76, 83, 137, 48, 149, 5, 80, 15, 10, 199, 72, 149, 129, 48, 149, 5, 80, 15, 10,
+			199, 72, 145, 201, 16, 149, 5, 80, 15, 10, 199, 72, 20, 9, 16, 149, 5, 80, 15, 10, 199, 65, 34, 79, 72, 149, 5, 80, 15, 10,
+			199, 56, 240, 137, 48, 149, 5, 80, 15, 10, 199, 56, 21, 1, 48, 149, 5, 80, 15, 10, 199, 56, 20, 193, 48, 149, 5, 80, 15, 10,
+			199, 52, 244, 129, 48, 149, 5, 80, 15, 10, 199, 52, 241, 1, 48, 149, 5, 80, 15, 10, 199, 52, 240, 137, 48, 149, 5, 80, 15, 10,
+			199, 48, 242, 193, 48, 149, 5, 80, 15, 10, 199, 48, 81, 193, 48, 149, 5, 80, 15, 10, 199, 48, 16, 137, 48, 149, 5, 80, 15, 10,
+			199, 44, 19, 1, 52, 149, 5, 80, 15, 10, 199, 36, 211, 85, 56, 149, 5, 80, 15, 10, 199, 36, 65, 65, 48, 149, 5, 80, 15, 10,
+			199, 33, 83, 65, 56, 149, 5, 80, 15, 10, 199, 32, 16, 137, 48, 149, 5, 80, 15, 10, 199, 24, 145, 5, 48, 149, 5, 80, 15, 10,
+			199, 24, 21, 1, 48, 149, 5, 80, 15, 10, 199, 24, 16, 201, 48, 149, 5, 80, 15, 10, 199, 16, 80, 137, 48, 149, 5, 80, 15, 10,
+			199, 8, 19, 129, 48, 149, 5, 80, 15, 10, 199, 4, 181, 9, 88, 149, 5, 80, 15, 10, 199, 52, 17, 201, 77, 68, 129, 80, 15, 10,
+			199, 44, 243, 132, 20, 228, 193, 80, 15, 10, 199, 21, 2, 83, 44, 244, 1, 80, 15, 10, 199, 16, 148, 208, 20, 228, 193, 80, 15, 0,
+			18, 207, 65, 35, 198, 21, 52, 201, 60, 224, 76, 37, 49, 82, 36, 225, 192, 15, 18, 207, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37,
+			49, 82, 36, 225, 192, 15, 9, 198, 52, 84, 203, 4, 194, 78, 15, 18, 70, 52, 20, 143, 69, 82, 78, 65, 121, 34, 39, 6, 49, 115,
+			68, 0, 15, 9, 198, 52, 19, 132, 60, 194, 78, 15, 9, 198, 32, 84, 141, 20, 194, 78, 15, 13, 4, 95, 103, 114, 118, 35, 49, 89,
+			6, 35, 68, 0, 0, 0, 9, 198, 4, 50, 68, 61, 49, 64, 15, 13, 202, 56, 85, 82, 61, 4, 217, 44, 243, 15, 28, 15, 9, 198,
+			24, 244, 141, 21, 33, 64, 15, 9, 198, 48, 240, 133, 48, 145, 64, 15, 9, 198, 88, 19, 129, 16, 145, 64, 15, 9, 198, 76, 243, 1,
+			72, 145, 64, 15, 9, 198, 56, 240, 133, 48, 145, 64, 15, 9, 198, 41, 81, 9, 12, 145, 64, 15, 9, 198, 104, 20, 137, 76, 209, 64,
+			15, 9, 198, 88, 84, 137, 76, 209, 64, 15, 9, 198, 76, 130, 73, 76, 209, 64, 15, 10, 199, 64, 84, 141, 4, 225, 78, 76, 15, 9,
+			198, 72, 83, 143, 56, 49, 64, 15, 9, 198, 8, 19, 1, 56, 49, 64, 15, 9, 198, 4, 36, 197, 56, 49, 64, 15, 9, 198, 44, 243,
+			12, 4, 113, 64, 15, 11, 70, 52, 84, 211, 4, 113, 64, 21, 0, 47, 0, 12, 201, 65, 39, 205, 5, 69, 82, 37, 65, 84, 15, 11,
+			200, 77, 81, 134, 36, 50, 69, 57, 48, 15, 11, 200, 77, 80, 147, 37, 53, 5, 57, 48, 15, 11, 200, 44, 243, 147, 20, 181, 133, 57,
+			48, 15, 11, 200, 44, 242, 78, 12, 145, 5, 57, 48, 15, 9, 198, 76, 84, 133, 56, 17, 5, 15, 9, 198, 72, 83, 85, 48, 17, 5,
+			15, 9, 198, 52, 84, 211, 36, 17, 5, 15, 9, 198, 52, 20, 137, 56, 17, 5, 15, 9, 198, 21, 50, 193, 64, 17, 5, 15, 10, 2,
+			195, 151, 81, 6, 35, 68, 36, 0, 0, 9, 198, 76, 243, 9, 81, 244, 128, 15, 7, 196, 53, 147, 211, 20, 15, 9, 198, 88, 148, 143,
+			48, 241, 192, 15, 9, 198, 73, 83, 143, 48, 241, 192, 15, 9, 198, 53, 146, 207, 48, 241, 192, 15, 9, 198, 52, 243, 143, 48, 241, 192,
+			15, 9, 198, 36, 65, 79, 48, 241, 192, 15, 11, 200, 77, 81, 134, 36, 50, 69, 57, 64, 15, 11, 200, 72, 84, 208, 60, 225, 5, 57,
+			64, 15, 11, 200, 44, 243, 147, 20, 181, 133, 57, 64, 15, 11, 200, 20, 180, 208, 20, 66, 69, 57, 64, 15, 11, 200, 16, 83, 9, 56,
+			181, 133, 57, 64, 15, 7, 196, 56, 145, 67, 20, 15, 11, 200, 37, 36, 133, 48, 85, 129, 57, 64, 15, 0, 9, 198, 80, 149, 1, 56,
+			148, 203, 15, 9, 198, 80, 82, 83, 80, 148, 203, 15, 9, 198, 76, 145, 5, 72, 148, 203, 15, 9, 198, 76, 21, 9, 72, 148, 203, 15,
+			9, 198, 64, 20, 143, 16, 148, 203, 15, 9, 198, 64, 20, 137, 76, 148, 203, 15, 9, 198, 61, 51, 79, 80, 148, 203, 15, 9, 198, 61,
+			33, 193, 56, 148, 203, 15, 9, 198, 60, 49, 65, 56, 148, 203, 15, 9, 198, 52, 82, 193, 56, 148, 203, 15, 9, 198, 48, 18, 207, 56,
+			148, 203, 15, 9, 198, 44, 84, 149, 8, 148, 203, 15, 9, 198, 41, 83, 143, 56, 148, 203, 15, 9, 198, 16, 82, 83, 80, 148, 203, 15,
+			9, 198, 12, 20, 137, 8, 148, 203, 15, 9, 198, 4, 193, 197, 72, 148, 203, 15, 9, 198, 24, 147, 9, 64, 83, 147, 15, 9, 198, 9,
+			34, 76, 48, 19, 147, 15, 0, 9, 198, 84, 180, 129, 36, 225, 64, 15, 15, 204, 84, 225, 5, 72, 82, 211, 81, 33, 77, 37, 65, 84,
+			15, 15, 204, 65, 35, 208, 61, 37, 9, 60, 224, 76, 37, 65, 84, 15, 10, 199, 44, 243, 134, 49, 81, 78, 76, 15, 6, 195, 72, 80,
+			76, 15, 9, 198, 72, 245, 76, 4, 65, 64, 15, 9, 198, 9, 35, 203, 4, 65, 64, 15, 9, 198, 8, 19, 12, 4, 65, 64, 15, 0,
+			12, 201, 65, 39, 211, 36, 65, 78, 80, 145, 76, 15, 12, 201, 4, 193, 75, 76, 19, 132, 72, 147, 128, 15, 12, 201, 44, 243, 148, 4,
+			181, 6, 48, 17, 5, 15, 0, 16, 205, 72, 84, 18, 125, 49, 78, 80, 21, 9, 88, 149, 5, 80, 15, 10, 199, 88, 20, 197, 45, 67,
+			205, 36, 15, 12, 201, 76, 176, 78, 16, 147, 129, 88, 145, 78, 15, 0, 0, 15, 5, 100, 110, 97, 39, 115, 72, 114, 116, 50, 6, 118,
+			89, 0, 13, 202, 44, 20, 129, 45, 65, 82, 37, 53, 9, 44, 15, 14, 203, 81, 32, 78, 77, 54, 76, 88, 19, 137, 20, 224, 15, 14,
+			203, 81, 32, 78, 77, 50, 76, 88, 19, 137, 20, 224, 15, 0, 7, 196, 64, 147, 143, 48, 15, 14, 2, 194, 167, 48, 35, 34, 35, 81,
+			34, 6, 35, 83, 0, 0, 15, 66, 76, 80, 89, 36, 15, 89, 108, 0, 81, 115, 195, 165, 32, 9, 198, 65, 35, 214, 37, 51, 210, 15,
+			12, 201, 88, 145, 21, 56, 65, 82, 48, 145, 192, 15, 12, 201, 88, 81, 5, 72, 129, 70, 80, 145, 192, 15, 12, 201, 84, 225, 196, 60,
+			211, 69, 48, 145, 192, 15, 12, 201, 80, 147, 19, 80, 81, 5, 48, 145, 192, 15, 12, 201, 77, 64, 78, 16, 128, 70, 80, 145, 192, 15,
+			12, 201, 77, 2, 68, 76, 98, 78, 16, 145, 192, 15, 12, 201, 76, 224, 75, 44, 84, 193, 48, 145, 192, 15, 12, 201, 60, 212, 212, 36,
+			195, 5, 48, 145, 192, 15, 12, 201, 60, 36, 212, 21, 35, 129, 76, 145, 192, 15, 12, 201, 48, 245, 134, 61, 35, 69, 48, 145, 192, 15,
+			12, 201, 33, 84, 205, 60, 65, 82, 48, 145, 192, 15, 12, 201, 32, 83, 2, 72, 81, 5, 48, 145, 192, 15, 12, 201, 32, 19, 19, 77,
+			64, 82, 72, 145, 192, 15, 12, 201, 28, 83, 130, 73, 81, 197, 48, 145, 192, 15, 12, 201, 24, 244, 149, 56, 65, 82, 48, 145, 192, 15,
+			12, 201, 24, 244, 132, 72, 17, 197, 48, 145, 192, 15, 12, 201, 24, 244, 129, 56, 65, 82, 48, 145, 192, 15, 12, 201, 8, 148, 203, 61,
+			4, 5, 48, 145, 192, 15, 12, 201, 8, 20, 141, 32, 161, 82, 80, 145, 192, 15, 8, 197, 77, 2, 78, 4, 192, 15, 8, 197, 64, 197,
+			82, 4, 192, 15, 8, 197, 28, 195, 194, 4, 192, 15, 6, 194, 60, 208, 76, 28, 0, 7, 196, 45, 84, 5, 72, 15, 11, 200, 164, 228,
+			203, 89, 244, 132, 36, 112, 15, 10, 2, 194, 165, 57, 6, 36, 50, 12, 0, 0, 11, 200, 64, 84, 134, 61, 32, 84, 61, 32, 15, 11,
+			200, 60, 36, 197, 73, 96, 84, 61, 32, 15, 11, 200, 44, 243, 77, 85, 64, 84, 61, 32, 15, 11, 200, 44, 19, 11, 84, 192, 84, 61,
+			32, 15, 11, 200, 36, 225, 143, 72, 208, 84, 61, 32, 15, 11, 200, 17, 84, 12, 36, 176, 84, 61, 32, 15, 8, 197, 64, 147, 206, 21,
+			32, 15, 8, 197, 20, 229, 18, 21, 32, 15, 9, 198, 4, 194, 193, 48, 242, 68, 15, 12, 201, 77, 147, 139, 72, 85, 9, 76, 209, 64,
+			15, 12, 201, 76, 84, 1, 72, 21, 9, 76, 209, 64, 15, 12, 201, 76, 83, 147, 84, 19, 9, 76, 209, 64, 15, 12, 201, 52, 243, 143,
+			64, 243, 9, 76, 209, 64, 15, 12, 201, 52, 147, 137, 52, 19, 9, 76, 209, 64, 15, 12, 201, 48, 19, 65, 72, 50, 201, 76, 209, 64,
+			15, 12, 201, 44, 192, 83, 76, 144, 201, 76, 209, 64, 15, 12, 201, 44, 21, 15, 48, 144, 201, 76, 209, 64, 15, 12, 201, 24, 81, 5,
+			72, 19, 9, 76, 209, 64, 15, 12, 201, 12, 128, 85, 88, 147, 137, 76, 209, 64, 15, 8, 197, 36, 226, 84, 5, 32, 15, 8, 197, 32,
+			82, 212, 5, 32, 15, 10, 2, 194, 162, 89, 6, 36, 50, 47, 0, 0, 9, 198, 25, 32, 75, 81, 84, 128, 15, 6, 195, 52, 17, 201,
+			15, 9, 2, 194, 163, 48, 40, 50, 19, 0, 0, 8, 197, 76, 177, 76, 21, 64, 15, 8, 197, 72, 245, 76, 21, 64, 15, 8, 197, 8,
+			147, 12, 21, 64, 15, 8, 197, 21, 2, 84, 21, 64, 15, 10, 199, 56, 20, 212, 85, 37, 9, 20, 15, 10, 199, 65, 35, 211, 12, 83,
+			137, 20, 15, 8, 197, 45, 98, 86, 37, 64, 15, 8, 197, 29, 32, 78, 37, 64, 15, 8, 197, 28, 19, 66, 37, 64, 15, 8, 197, 20,
+			35, 206, 37, 64, 15, 10, 199, 88, 149, 1, 48, 148, 205, 20, 15, 10, 199, 80, 245, 5, 52, 148, 205, 20, 15, 10, 199, 64, 19, 148,
+			20, 148, 205, 20, 15, 10, 199, 61, 33, 193, 56, 148, 205, 20, 15, 10, 199, 52, 82, 193, 56, 148, 205, 20, 15, 10, 199, 48, 18, 207,
+			56, 148, 205, 20, 15, 10, 199, 36, 65, 65, 48, 148, 205, 20, 15, 10, 199, 32, 81, 15, 56, 148, 205, 20, 15, 10, 199, 24, 83, 73,
+			56, 148, 205, 20, 15, 10, 199, 4, 196, 9, 56, 148, 205, 20, 15, 10, 199, 4, 192, 137, 56, 148, 205, 20, 15, 8, 197, 72, 80, 197,
+			57, 64, 15, 9, 198, 72, 83, 133, 28, 21, 0, 15, 8, 197, 65, 34, 86, 5, 64, 15, 8, 197, 45, 32, 66, 5, 64, 15, 8, 197,
+			20, 210, 82, 5, 64, 15, 9, 198, 4, 197, 77, 56, 21, 0, 15, 14, 69, 5, 81, 213, 77, 64, 125, 81, 125, 89, 72, 0, 41, 10,
+			69, 77, 2, 82, 37, 64, 21, 0, 47, 0, 9, 198, 88, 243, 15, 57, 74, 82, 15, 9, 198, 72, 81, 201, 77, 58, 82, 15, 9, 198,
+			45, 35, 206, 36, 186, 82, 15, 9, 198, 36, 225, 133, 72, 154, 82, 15, 9, 198, 36, 212, 15, 73, 74, 82, 15, 12, 201, 77, 83, 6,
+			5, 66, 65, 104, 243, 0, 15, 9, 198, 5, 53, 5, 56, 148, 203, 15, 0, 8, 197, 89, 84, 132, 21, 32, 15, 8, 197, 64, 240, 200,
+			21, 32, 15, 8, 197, 20, 66, 84, 21, 32, 15, 8, 197, 16, 146, 212, 21, 32, 15, 12, 201, 61, 97, 82, 77, 245, 20, 20, 194, 71,
+			15, 8, 197, 8, 20, 130, 5, 32, 15, 9, 198, 81, 32, 70, 36, 176, 76, 15, 9, 198, 24, 20, 153, 56, 112, 76, 15, 9, 198, 9,
+			35, 206, 44, 144, 76, 15, 28, 2, 194, 174, 34, 36, 81, 37, 89, 47, 34, 6, 115, 34, 108, 86, 15, 84, 6, 121, 34, 14, 65, 115,
+			34, 49, 14, 0, 0, 12, 201, 12, 132, 137, 77, 66, 65, 56, 149, 0, 15, 0, 8, 197, 81, 34, 66, 85, 64, 15, 8, 197, 77, 64,
+			82, 85, 64, 15, 8, 197, 76, 86, 9, 77, 64, 15, 8, 197, 41, 84, 137, 77, 64, 15, 12, 201, 88, 146, 193, 72, 145, 82, 36, 225,
+			192, 15, 12, 201, 81, 83, 142, 20, 193, 82, 36, 225, 192, 15, 12, 201, 81, 34, 85, 52, 97, 82, 36, 225, 192, 15, 12, 201, 80, 16,
+			149, 37, 49, 82, 36, 225, 192, 15, 12, 201, 77, 148, 212, 20, 209, 82, 36, 225, 192, 15, 12, 201, 77, 83, 6, 60, 225, 82, 36, 225,
+			192, 15, 12, 201, 77, 66, 80, 84, 193, 82, 36, 225, 192, 15, 12, 201, 77, 66, 77, 84, 193, 82, 36, 225, 192, 15, 12, 201, 76, 82,
+			213, 56, 65, 82, 36, 225, 192, 15, 12, 201, 76, 81, 210, 20, 113, 82, 36, 225, 192, 15, 12, 201, 76, 80, 197, 72, 225, 82, 36, 225,
+			192, 15, 12, 201, 73, 80, 146, 36, 49, 82, 36, 225, 192, 15, 12, 201, 72, 85, 21, 72, 225, 82, 36, 225, 192, 15, 12, 201, 72, 85,
+			1, 8, 193, 82, 36, 225, 192, 15, 12, 201, 72, 84, 197, 73, 97, 82, 36, 225, 192, 15, 12, 201, 72, 83, 73, 81, 65, 82, 36, 225,
+			192, 15, 12, 201, 72, 82, 70, 36, 49, 82, 36, 225, 192, 15, 12, 201, 64, 245, 5, 57, 49, 82, 36, 225, 192, 15, 12, 201, 64, 241,
+			19, 60, 193, 82, 36, 225, 192, 15, 12, 201, 64, 192, 75, 5, 65, 82, 36, 225, 192, 15, 12, 201, 64, 84, 134, 61, 33, 82, 36, 225,
+			192, 15, 12, 201, 64, 83, 132, 84, 193, 82, 36, 225, 192, 15, 12, 201, 64, 21, 5, 57, 65, 82, 36, 225, 192, 15, 12, 201, 64, 20,
+			143, 16, 145, 82, 36, 225, 192, 15, 12, 201, 60, 36, 197, 73, 97, 82, 36, 225, 192, 15, 12, 201, 57, 83, 77, 21, 33, 82, 36, 225,
+			192, 15, 12, 201, 56, 81, 204, 36, 113, 82, 36, 225, 192, 15, 12, 201, 52, 18, 211, 36, 209, 82, 36, 225, 192, 15, 12, 201, 48, 144,
+			197, 57, 49, 82, 36, 225, 192, 15, 12, 201, 45, 84, 148, 37, 49, 82, 36, 225, 192, 15, 12, 201, 45, 83, 20, 37, 97, 82, 36, 225,
+			192, 15, 12, 201, 45, 33, 78, 20, 193, 82, 36, 225, 192, 15, 12, 201, 45, 33, 68, 37, 65, 82, 36, 225, 192, 15, 12, 201, 44, 244,
+			146, 84, 113, 82, 36, 225, 192, 15, 12, 201, 44, 243, 77, 85, 65, 82, 36, 225, 192, 15, 12, 201, 44, 240, 71, 84, 193, 82, 36, 225,
+			192, 15, 12, 201, 44, 20, 197, 72, 225, 82, 36, 225, 192, 15, 12, 201, 44, 20, 130, 85, 33, 82, 36, 225, 192, 15, 12, 201, 44, 19,
+			85, 24, 193, 82, 36, 225, 192, 15, 12, 201, 44, 19, 9, 9, 33, 82, 36, 225, 192, 15, 12, 201, 41, 81, 1, 37, 49, 82, 36, 225,
+			192, 15, 12, 201, 36, 229, 133, 57, 65, 82, 36, 225, 192, 15, 12, 201, 36, 229, 5, 29, 33, 82, 36, 225, 192, 15, 12, 201, 36, 227,
+			203, 84, 193, 82, 36, 225, 192, 15, 12, 201, 36, 226, 204, 84, 65, 82, 36, 225, 192, 15, 12, 201, 36, 226, 193, 77, 49, 82, 36, 225,
+			192, 15, 12, 201, 36, 225, 5, 45, 49, 82, 36, 225, 192, 15, 12, 201, 32, 244, 208, 37, 65, 82, 36, 225, 192, 15, 12, 201, 32, 20,
+			131, 20, 193, 82, 36, 225, 192, 15, 12, 201, 25, 84, 201, 60, 225, 82, 36, 225, 192, 15, 12, 201, 24, 197, 75, 81, 81, 82, 36, 225,
+			192, 15, 12, 201, 24, 84, 142, 37, 49, 82, 36, 225, 192, 15, 12, 201, 24, 16, 197, 81, 65, 82, 36, 225, 192, 15, 12, 201, 20, 194,
+			77, 36, 225, 82, 36, 225, 192, 15, 12, 201, 17, 84, 12, 36, 177, 82, 36, 225, 192, 15, 12, 201, 16, 85, 1, 12, 129, 82, 36, 225,
+			192, 15, 12, 201, 16, 84, 197, 73, 65, 82, 36, 225, 192, 15, 12, 201, 16, 84, 15, 73, 65, 82, 36, 225, 192, 15, 12, 201, 12, 148,
+			139, 84, 193, 82, 36, 225, 192, 15, 12, 201, 8, 19, 132, 4, 113, 82, 36, 225, 192, 15, 12, 201, 8, 19, 19, 4, 209, 82, 36, 225,
+			192, 15, 12, 201, 8, 19, 12, 61, 65, 82, 36, 225, 192, 15, 12, 201, 5, 69, 5, 77, 65, 82, 36, 225, 192, 15, 12, 201, 5, 68,
+			143, 24, 145, 82, 36, 225, 192, 15, 12, 201, 5, 67, 205, 37, 49, 82, 36, 225, 192, 15, 12, 201, 5, 49, 129, 49, 65, 82, 36, 225,
+			192, 15, 12, 201, 5, 34, 193, 37, 49, 82, 36, 225, 192, 15, 12, 201, 5, 4, 18, 21, 65, 82, 36, 225, 192, 15, 12, 201, 4, 227,
+			143, 56, 49, 82, 36, 225, 192, 15, 12, 201, 4, 178, 207, 72, 65, 82, 36, 225, 192, 15, 12, 201, 4, 36, 207, 72, 33, 82, 36, 225,
+			192, 15, 12, 201, 4, 36, 197, 57, 65, 82, 36, 225, 192, 15, 9, 198, 64, 20, 129, 76, 149, 0, 15, 8, 197, 24, 19, 12, 37, 64,
+			15, 11, 200, 50, 145, 211, 82, 148, 137, 4, 224, 15, 9, 198, 29, 39, 147, 80, 83, 128, 15, 9, 198, 21, 35, 212, 60, 208, 78, 16,
+			7, 196, 25, 242, 193, 48, 15, 5, 130, 195, 164, 43, 0, 9, 198, 84, 112, 78, 16, 148, 203, 15, 9, 198, 81, 83, 133, 76, 148, 203,
+			15, 9, 198, 77, 83, 69, 72, 148, 203, 15, 9, 198, 76, 21, 25, 72, 148, 203, 15, 9, 198, 52, 245, 9, 88, 148, 203, 15, 9, 198,
+			52, 19, 1, 92, 148, 203, 15, 9, 198, 52, 19, 1, 40, 148, 203, 15, 9, 198, 44, 131, 69, 72, 148, 203, 15, 9, 198, 44, 19, 129,
+			72, 148, 203, 15, 9, 198, 32, 243, 69, 72, 148, 203, 15, 9, 198, 21, 81, 143, 72, 148, 203, 15, 9, 198, 20, 212, 9, 72, 148, 203,
+			15, 9, 198, 16, 82, 75, 80, 148, 203, 15, 9, 198, 5, 52, 217, 72, 148, 203, 15, 9, 198, 4, 181, 9, 88, 148, 203, 15, 9, 198,
+			26, 147, 137, 44, 145, 78, 15, 12, 201, 76, 183, 204, 76, 186, 82, 36, 19, 128, 15, 17, 4, 95, 52, 88, 111, 83, 132, 108, 6, 47,
+			129, 84, 14, 50, 14, 0, 0, 10, 199, 77, 69, 75, 44, 21, 41, 72, 15, 10, 199, 72, 20, 16, 61, 37, 41, 72, 15, 10, 199, 56,
+			21, 137, 28, 21, 41, 72, 15, 10, 199, 44, 244, 146, 20, 181, 41, 72, 15, 10, 199, 44, 243, 16, 61, 37, 41, 72, 15, 10, 199, 36,
+			227, 143, 88, 21, 41, 72, 15, 10, 199, 16, 82, 207, 72, 21, 41, 72, 15, 7, 197, 64, 84, 146, 60, 224, 8, 197, 56, 19, 139, 36,
+			224, 15, 15, 69, 16, 84, 211, 36, 224, 72, 36, 89, 6, 115, 68, 0, 15, 7, 196, 61, 5, 9, 44, 15, 8, 197, 80, 243, 135, 4,
+			224, 15, 15, 204, 24, 194, 80, 65, 35, 204, 21, 64, 82, 36, 21, 0, 15, 8, 197, 52, 19, 135, 4, 224, 16, 9, 198, 48, 20, 153,
+			56, 112, 76, 15, 9, 198, 44, 21, 5, 17, 32, 76, 15, 9, 198, 32, 244, 208, 37, 64, 76, 15, 11, 70, 52, 243, 148, 72, 80, 76,
+			21, 0, 47, 20, 2, 194, 170, 83, 36, 65, 37, 50, 37, 50, 15, 132, 72, 37, 50, 6, 35, 55, 0, 0, 10, 199, 64, 84, 142, 36,
+			50, 105, 76, 15, 10, 199, 53, 148, 212, 21, 34, 105, 76, 15, 10, 199, 24, 147, 9, 77, 68, 169, 76, 15, 10, 199, 64, 145, 68, 21,
+			53, 1, 48, 15, 10, 199, 44, 243, 12, 20, 114, 65, 48, 15, 0, 10, 199, 32, 82, 212, 60, 116, 129, 52, 15, 8, 197, 56, 21, 84,
+			36, 192, 15, 8, 197, 64, 244, 212, 4, 192, 15, 8, 197, 9, 37, 84, 4, 192, 15, 0, 7, 196, 25, 149, 9, 56, 15, 10, 199, 53,
+			84, 203, 20, 67, 206, 56, 15, 13, 2, 194, 169, 49, 108, 48, 37, 34, 121, 57, 47, 0, 0, 12, 201, 20, 180, 208, 60, 225, 78, 80,
+			145, 76, 15, 12, 201, 20, 180, 201, 77, 65, 78, 80, 145, 76, 15, 12, 201, 16, 145, 134, 21, 33, 78, 80, 145, 76, 15, 8, 197, 48,
+			81, 213, 4, 224, 16, 0, 5, 130, 197, 159, 43, 5, 130, 195, 175, 43, 0, 9, 198, 81, 80, 129, 37, 53, 0, 15, 11, 200, 76, 244,
+			132, 36, 225, 82, 21, 64, 15, 11, 200, 72, 85, 1, 72, 65, 82, 21, 64, 15, 11, 200, 72, 84, 197, 73, 97, 82, 21, 64, 15, 11,
+			200, 72, 83, 143, 52, 209, 82, 21, 64, 15, 11, 200, 52, 19, 137, 21, 33, 82, 21, 64, 15, 11, 200, 45, 83, 20, 37, 97, 82, 21,
+			64, 15, 11, 200, 45, 33, 78, 20, 193, 82, 21, 64, 15, 11, 200, 36, 225, 9, 28, 225, 82, 21, 64, 15, 11, 200, 32, 20, 193, 72,
+			65, 82, 21, 64, 15, 11, 200, 24, 16, 207, 56, 225, 82, 21, 64, 15, 11, 200, 24, 16, 197, 81, 65, 82, 21, 64, 15, 11, 200, 20,
+			180, 193, 49, 65, 82, 21, 64, 15, 11, 200, 16, 84, 129, 56, 113, 82, 21, 64, 15, 11, 200, 16, 84, 18, 37, 97, 82, 21, 64, 15,
+			11, 200, 16, 84, 18, 36, 209, 82, 21, 64, 15, 11, 200, 8, 19, 1, 56, 49, 82, 21, 64, 15, 11, 200, 5, 52, 207, 73, 65, 82,
+			21, 64, 15, 11, 200, 4, 229, 9, 45, 97, 82, 21, 64, 15, 11, 200, 4, 97, 133, 45, 65, 82, 21, 64, 15, 11, 200, 44, 243, 139,
+			84, 34, 78, 5, 64, 15, 11, 200, 44, 243, 131, 20, 229, 18, 5, 64, 15, 11, 200, 8, 146, 193, 72, 35, 206, 5, 64, 15, 11, 200,
+			8, 20, 130, 37, 69, 82, 5, 64, 15, 11, 200, 4, 113, 204, 60, 209, 82, 5, 64, 15, 8, 197, 85, 34, 78, 4, 192, 15, 8, 197,
+			5, 53, 18, 4, 192, 15, 0, 9, 198, 60, 211, 105, 8, 193, 82, 15, 7, 2, 194, 181, 65, 129, 0, 0, 11, 200, 81, 32, 78, 77,
+			3, 206, 21, 32, 15, 11, 200, 80, 82, 206, 36, 98, 67, 21, 32, 15, 11, 200, 77, 80, 143, 72, 66, 78, 21, 32, 15, 11, 200, 76,
+			181, 129, 17, 35, 206, 21, 32, 15, 11, 200, 72, 83, 79, 57, 53, 18, 21, 32, 15, 11, 200, 64, 20, 129, 24, 98, 78, 21, 32, 15,
+			11, 200, 44, 243, 131, 20, 229, 18, 21, 32, 15, 11, 200, 44, 243, 77, 84, 226, 75, 21, 32, 15, 11, 200, 36, 229, 5, 72, 97, 82,
+			21, 32, 15, 11, 200, 33, 148, 15, 77, 64, 83, 21, 32, 15, 11, 200, 16, 243, 69, 77, 66, 67, 21, 32, 15, 11, 200, 16, 83, 79,
+			57, 53, 18, 21, 32, 15, 11, 200, 5, 3, 211, 81, 35, 198, 21, 32, 15, 11, 200, 77, 147, 70, 60, 226, 75, 21, 32, 15, 11, 200,
+			76, 83, 73, 61, 66, 75, 21, 32, 15, 11, 200, 76, 83, 65, 57, 66, 75, 21, 32, 15, 11, 200, 20, 193, 75, 81, 34, 75, 21, 32,
+			15, 11, 200, 5, 67, 1, 57, 66, 75, 21, 32, 15, 11, 200, 5, 53, 13, 5, 66, 75, 21, 32, 15, 11, 200, 4, 224, 76, 101, 66,
+			75, 21, 32, 15, 11, 200, 4, 195, 5, 72, 114, 75, 21, 32, 15, 11, 200, 4, 176, 68, 20, 210, 75, 21, 32, 15, 11, 200, 4, 115,
+			143, 77, 66, 75, 21, 32, 15, 0, 19, 71, 12, 129, 86, 72, 243, 5, 80, 89, 57, 115, 84, 34, 39, 55, 6, 115, 0, 10, 199, 76,
+			130, 66, 8, 243, 5, 80, 15, 10, 199, 24, 192, 71, 20, 243, 5, 80, 15, 12, 201, 80, 83, 5, 29, 32, 70, 37, 53, 0, 15, 10,
+			199, 80, 84, 141, 61, 53, 1, 80, 15, 10, 199, 20, 229, 18, 20, 50, 1, 80, 15, 0, 9, 198, 72, 244, 205, 5, 34, 78, 15, 9,
+			198, 8, 19, 4, 4, 178, 78, 15, 0, 0, 9, 198, 76, 19, 65, 72, 145, 64, 15, 9, 198, 72, 240, 137, 56, 145, 64, 15, 9, 198,
+			44, 243, 69, 16, 145, 64, 15, 9, 198, 28, 84, 129, 56, 145, 64, 15, 9, 198, 76, 147, 9, 12, 145, 64, 15, 9, 198, 64, 243, 15,
+			56, 145, 64, 15, 9, 198, 36, 212, 5, 72, 145, 64, 15, 9, 198, 28, 84, 129, 56, 145, 64, 15, 9, 198, 4, 211, 79, 56, 145, 64,
+			15, 9, 198, 76, 241, 137, 76, 209, 64, 15, 9, 198, 76, 86, 9, 76, 209, 64, 15, 9, 198, 53, 85, 9, 76, 209, 64, 15, 9, 198,
+			52, 243, 137, 76, 209, 64, 15, 9, 198, 52, 19, 201, 76, 209, 64, 15, 9, 198, 45, 80, 137, 76, 209, 64, 15, 9, 198, 16, 19, 137,
+			76, 209, 64, 15, 9, 198, 88, 148, 149, 48, 83, 148, 15, 9, 198, 72, 84, 201, 16, 83, 148, 15, 9, 198, 52, 243, 149, 52, 83, 148,
+			15, 9, 198, 72, 83, 79, 56, 49, 64, 15, 9, 198, 52, 21, 18, 36, 49, 64, 15, 9, 198, 45, 83, 1, 56, 49, 64, 15, 9, 198,
+			4, 181, 18, 36, 49, 64, 15, 12, 201, 17, 32, 77, 5, 69, 82, 28, 144, 84, 15, 9, 198, 76, 194, 84, 4, 113, 64, 15, 9, 198,
+			64, 192, 77, 4, 113, 64, 15, 9, 198, 52, 243, 148, 4, 113, 64, 15, 9, 198, 25, 35, 205, 4, 113, 64, 15, 14, 2, 194, 190, 47,
+			34, 115, 49, 84, 6, 121, 34, 47, 0, 0, 9, 198, 56, 19, 143, 29, 32, 77, 15, 9, 198, 44, 147, 15, 29, 32, 77, 15, 9, 198,
+			32, 243, 15, 29, 32, 77, 15, 9, 198, 33, 148, 132, 36, 225, 5, 15, 9, 198, 29, 33, 86, 36, 225, 5, 15, 11, 200, 44, 243, 139,
+			61, 33, 1, 57, 48, 15, 11, 200, 44, 243, 132, 84, 181, 1, 57, 48, 15, 12, 201, 36, 229, 5, 72, 84, 211, 4, 229, 0, 15, 19,
+			2, 195, 183, 72, 37, 84, 37, 72, 6, 36, 51, 108, 86, 15, 65, 115, 86, 0, 0, 9, 198, 76, 86, 15, 48, 241, 192, 15, 9, 198,
+			21, 67, 143, 48, 241, 192, 15, 10, 199, 28, 20, 212, 72, 243, 143, 52, 15, 9, 198, 20, 193, 78, 16, 145, 192, 15, 9, 198, 4, 228,
+			197, 48, 145, 192, 15, 6, 195, 60, 208, 78, 15, 11, 200, 44, 243, 148, 72, 18, 5, 57, 64, 15, 11, 200, 44, 243, 77, 37, 69, 5,
+			57, 64, 15, 11, 200, 72, 81, 140, 20, 181, 1, 57, 64, 15, 11, 200, 65, 32, 75, 80, 146, 193, 57, 64, 15, 11, 200, 5, 84, 203,
+			84, 197, 1, 57, 64, 15, 13, 2, 194, 188, 36, 50, 15, 49, 84, 121, 34, 47, 0, 0, 11, 2, 194, 189, 36, 50, 6, 107, 117, 55,
+			0, 0, 9, 198, 88, 16, 195, 36, 225, 64, 15, 9, 198, 81, 84, 130, 36, 225, 64, 15, 9, 198, 80, 84, 154, 36, 225, 64, 15, 9,
+			198, 77, 69, 68, 36, 225, 64, 15, 9, 198, 52, 20, 203, 36, 225, 64, 15, 9, 198, 24, 244, 134, 36, 225, 64, 15, 12, 201, 44, 194,
+			77, 4, 181, 5, 72, 145, 76, 15, 9, 198, 84, 197, 137, 56, 65, 64, 15, 9, 198, 29, 81, 9, 56, 65, 64, 15, 14, 203, 20, 180,
+			202, 84, 115, 211, 48, 21, 137, 20, 224, 15, 10, 199, 81, 84, 130, 84, 193, 78, 76, 15, 10, 199, 44, 243, 135, 73, 81, 78, 76, 15,
+			10, 199, 5, 48, 197, 56, 65, 78, 76, 15, 12, 201, 44, 243, 147, 37, 53, 15, 72, 144, 76, 15, 9, 198, 53, 148, 137, 4, 65, 64,
+			15, 10, 199, 72, 81, 21, 56, 64, 78, 76, 15, 10, 199, 61, 33, 15, 56, 224, 78, 76, 15, 22, 2, 194, 186, 65, 6, 35, 89, 49,
+			40, 55, 37, 50, 15, 132, 72, 37, 50, 6, 35, 55, 0, 0, 12, 201, 65, 35, 199, 21, 53, 5, 72, 243, 128, 15, 9, 198, 80, 83,
+			5, 29, 32, 77, 15, 9, 198, 56, 243, 79, 29, 32, 77, 15, 9, 198, 52, 243, 143, 29, 32, 77, 15, 9, 198, 36, 65, 79, 29, 32,
+			77, 15, 9, 198, 24, 245, 15, 29, 32, 77, 15, 21, 71, 33, 145, 18, 60, 99, 201, 48, 107, 129, 72, 34, 39, 83, 6, 108, 37, 55,
+			0, 15, 0, 7, 196, 28, 83, 143, 52, 15, 0, 9, 67, 36, 177, 64, 35, 57, 49, 0, 5, 130, 195, 177, 43, 0, 15, 204, 44, 20,
+			129, 45, 65, 82, 37, 53, 9, 45, 83, 64, 15, 0, 22, 67, 48, 145, 197, 55, 37, 13, 15, 49, 39, 89, 72, 13, 0, 81, 107, 111,
+			115, 116, 101, 32, 17, 67, 48, 145, 197, 55, 37, 13, 15, 89, 108, 0, 81, 115, 195, 165, 32, 7, 196, 45, 33, 79, 48, 15, 12, 201,
+			65, 241, 1, 28, 241, 201, 45, 83, 64, 15, 6, 195, 64, 17, 197, 15, 0, 9, 198, 16, 147, 73, 77, 51, 210, 15, 9, 198, 36, 229,
+			133, 77, 67, 210, 15, 9, 198, 16, 85, 5, 45, 67, 210, 15, 0, 0, 12, 69, 8, 194, 86, 21, 32, 71, 55, 111, 34, 0, 9, 198,
+			29, 148, 143, 76, 179, 208, 15, 7, 196, 52, 147, 169, 72, 15, 11, 200, 44, 243, 80, 72, 84, 211, 61, 32, 15, 8, 197, 76, 83, 137,
+			61, 32, 15, 11, 200, 88, 83, 148, 36, 192, 84, 61, 32, 15, 11, 200, 81, 32, 78, 76, 148, 212, 61, 32, 15, 11, 200, 61, 48, 201,
+			48, 192, 84, 61, 32, 15, 11, 200, 48, 146, 214, 36, 64, 84, 61, 32, 15, 11, 200, 36, 226, 193, 77, 48, 84, 61, 32, 15, 11, 200,
+			21, 96, 80, 61, 32, 84, 61, 32, 15, 11, 200, 5, 4, 12, 36, 176, 84, 61, 32, 15, 8, 197, 88, 144, 146, 21, 32, 15, 8, 197,
+			81, 84, 142, 21, 32, 15, 8, 197, 76, 84, 150, 21, 32, 15, 8, 197, 60, 224, 78, 21, 32, 15, 12, 201, 45, 32, 68, 76, 42, 82,
+			77, 66, 71, 15, 12, 201, 28, 83, 142, 20, 209, 169, 72, 194, 71, 15, 13, 202, 25, 37, 71, 81, 51, 205, 52, 83, 9, 28, 15, 12,
+			201, 77, 84, 208, 20, 228, 207, 72, 145, 64, 15, 12, 201, 72, 84, 208, 60, 228, 207, 72, 145, 64, 15, 12, 201, 44, 243, 147, 37, 53,
+			15, 72, 145, 64, 15, 12, 201, 44, 194, 77, 4, 181, 5, 72, 145, 64, 15, 7, 196, 36, 209, 78, 76, 15, 8, 197, 76, 179, 204, 5,
+			32, 15, 8, 197, 60, 181, 76, 5, 32, 15, 9, 198, 56, 243, 73, 56, 19, 0, 15, 10, 69, 76, 84, 150, 21, 32, 21, 0, 47, 0,
+			10, 199, 88, 147, 11, 121, 35, 9, 28, 15, 10, 199, 12, 83, 12, 84, 195, 201, 16, 15, 0, 8, 197, 80, 242, 76, 21, 64, 15, 8,
+			197, 64, 83, 12, 21, 64, 15, 8, 197, 60, 209, 76, 21, 64, 15, 8, 197, 36, 99, 204, 21, 64, 15, 9, 198, 17, 80, 84, 48, 85,
+			0, 15, 8, 197, 8, 19, 12, 21, 64, 15, 8, 197, 4, 213, 76, 21, 64, 15, 8, 197, 64, 20, 9, 77, 64, 15, 8, 197, 60, 35,
+			201, 77, 64, 15, 8, 197, 44, 244, 9, 77, 64, 15, 8, 197, 8, 147, 9, 77, 64, 15, 15, 204, 76, 19, 77, 20, 226, 204, 5, 4,
+			5, 48, 145, 192, 15, 15, 204, 28, 83, 142, 20, 212, 203, 36, 227, 133, 48, 145, 192, 15, 15, 204, 16, 148, 203, 60, 229, 9, 57, 81,
+			82, 48, 145, 192, 15, 10, 199, 52, 244, 129, 80, 244, 137, 20, 15, 10, 199, 44, 243, 15, 24, 243, 137, 20, 15, 10, 199, 44, 243, 12,
+			60, 181, 137, 20, 15, 10, 199, 44, 83, 143, 80, 17, 137, 20, 15, 8, 197, 53, 84, 214, 37, 64, 15, 8, 197, 36, 226, 214, 37, 64,
+			15, 8, 197, 29, 32, 70, 37, 64, 15, 9, 198, 16, 243, 15, 52, 149, 0, 15, 9, 198, 20, 225, 15, 72, 98, 78, 15, 9, 198, 16,
+			82, 211, 81, 34, 78, 15, 10, 199, 72, 246, 65, 48, 148, 205, 20, 15, 10, 199, 61, 5, 9, 52, 148, 205, 20, 15, 10, 199, 56, 84,
+			15, 80, 148, 205, 20, 15, 10, 199, 36, 66, 79, 80, 148, 205, 20, 15, 10, 199, 24, 21, 1, 48, 148, 205, 20, 15, 10, 199, 21, 50,
+			193, 64, 148, 205, 20, 15, 10, 199, 4, 224, 82, 44, 148, 205, 20, 15, 8, 197, 88, 148, 197, 57, 64, 15, 8, 197, 72, 81, 197, 57,
+			64, 15, 8, 197, 16, 80, 197, 57, 64, 15, 8, 197, 4, 48, 197, 57, 64, 15, 8, 197, 45, 32, 86, 5, 64, 15, 8, 197, 44, 195,
+			210, 5, 64, 15, 8, 197, 17, 32, 86, 5, 64, 15, 8, 197, 88, 17, 193, 57, 64, 15, 8, 197, 61, 5, 1, 57, 64, 15, 12, 201,
+			16, 145, 134, 21, 33, 78, 80, 144, 66, 15, 0, 12, 201, 54, 146, 147, 60, 211, 69, 48, 145, 192, 15, 12, 201, 24, 244, 147, 164, 211,
+			69, 48, 145, 192, 15, 12, 201, 24, 244, 132, 164, 211, 69, 48, 145, 192, 15, 12, 201, 4, 97, 210, 124, 228, 197, 48, 145, 192, 15, 9,
+			198, 77, 68, 143, 24, 148, 203, 15, 9, 198, 76, 144, 137, 72, 148, 203, 15, 9, 198, 36, 65, 78, 80, 148, 203, 15, 9, 198, 28, 83,
+			210, 28, 148, 203, 15, 9, 198, 28, 83, 133, 72, 148, 203, 15, 9, 198, 21, 81, 197, 56, 148, 203, 15, 9, 198, 20, 118, 80, 80, 148,
+			203, 15, 9, 198, 5, 68, 143, 24, 148, 203, 15, 9, 198, 5, 32, 77, 4, 148, 203, 15, 0, 7, 196, 88, 145, 233, 72, 15, 8, 197,
+			76, 83, 147, 61, 32, 15, 8, 197, 12, 83, 147, 61, 32, 15, 8, 197, 80, 244, 148, 21, 32, 15, 8, 197, 64, 20, 140, 21, 32, 15,
+			8, 197, 60, 181, 76, 21, 32, 15, 8, 197, 52, 243, 148, 21, 32, 15, 8, 197, 44, 243, 148, 21, 32, 15, 8, 197, 44, 20, 148, 21,
+			32, 15, 8, 197, 21, 99, 204, 21, 32, 15, 8, 197, 17, 80, 140, 21, 32, 15, 12, 201, 124, 117, 5, 76, 176, 66, 20, 194, 71, 15,
+			12, 201, 33, 227, 132, 29, 34, 66, 20, 194, 71, 15, 12, 201, 24, 244, 148, 73, 241, 134, 20, 194, 71, 15, 9, 198, 56, 82, 210, 60,
+			98, 76, 15, 10, 199, 44, 244, 147, 165, 34, 65, 56, 15, 0, 9, 198, 17, 39, 211, 36, 225, 64, 15, 0, 9, 198, 76, 19, 137, 82,
+			148, 128, 15, 9, 198, 20, 208, 76, 42, 148, 128, 15, 9, 198, 17, 33, 83, 78, 148, 128, 15, 9, 198, 16, 243, 80, 82, 148, 128, 15,
+			12, 201, 88, 147, 132, 36, 49, 82, 36, 225, 192, 15, 12, 201, 77, 80, 147, 84, 209, 82, 36, 225, 192, 15, 12, 201, 76, 83, 5, 45,
+			65, 82, 36, 225, 192, 15, 12, 201, 64, 192, 84, 36, 225, 82, 36, 225, 192, 15, 12, 201, 64, 20, 211, 37, 97, 82, 36, 225, 192, 15,
+			12, 201, 64, 20, 208, 60, 193, 82, 36, 225, 192, 15, 12, 201, 61, 34, 69, 57, 65, 82, 36, 225, 192, 15, 12, 201, 52, 20, 141, 61,
+			33, 82, 36, 225, 192, 15, 12, 201, 48, 19, 69, 57, 65, 82, 36, 225, 192, 15, 12, 201, 45, 84, 147, 37, 97, 82, 36, 225, 192, 15,
+			12, 201, 44, 244, 212, 84, 209, 82, 36, 225, 192, 15, 12, 201, 44, 243, 134, 21, 33, 82, 36, 225, 192, 15, 12, 201, 44, 243, 66, 36,
+			225, 82, 36, 225, 192, 15, 12, 201, 44, 19, 11, 84, 193, 82, 36, 225, 192, 15, 12, 201, 36, 229, 5, 72, 225, 82, 36, 225, 192, 15,
+			12, 201, 36, 228, 212, 73, 81, 82, 36, 225, 192, 15, 12, 201, 36, 225, 143, 72, 209, 82, 36, 225, 192, 15, 12, 201, 36, 225, 12, 21,
+			97, 82, 36, 225, 192, 15, 12, 201, 24, 245, 82, 4, 113, 82, 36, 225, 192, 15, 12, 201, 20, 180, 208, 60, 225, 82, 36, 225, 192, 15,
+			12, 201, 16, 148, 208, 60, 225, 82, 36, 225, 192, 15, 12, 201, 16, 147, 73, 81, 65, 82, 36, 225, 192, 15, 12, 201, 16, 83, 69, 57,
+			65, 82, 36, 225, 192, 15, 12, 201, 16, 82, 204, 36, 225, 82, 36, 225, 192, 15, 12, 201, 16, 82, 204, 5, 33, 82, 36, 225, 192, 15,
+			12, 201, 12, 83, 5, 9, 33, 82, 36, 225, 192, 15, 12, 201, 8, 192, 78, 12, 129, 82, 36, 225, 192, 15, 12, 201, 8, 19, 1, 56,
+			49, 82, 36, 225, 192, 15, 12, 201, 5, 4, 18, 60, 33, 82, 36, 225, 192, 15, 9, 198, 76, 241, 15, 52, 149, 0, 15, 9, 198, 52,
+			243, 143, 48, 149, 0, 15, 8, 197, 45, 33, 68, 37, 64, 15, 8, 197, 16, 240, 197, 57, 64, 15, 6, 195, 48, 144, 78, 16, 8, 197,
+			45, 84, 129, 57, 64, 15, 8, 197, 28, 145, 193, 57, 64, 15, 8, 197, 28, 20, 129, 57, 64, 15, 0, 17, 67, 44, 243, 64, 49, 108,
+			65, 15, 89, 108, 0, 81, 115, 195, 165, 32, 9, 198, 44, 144, 83, 80, 148, 203, 15, 10, 67, 76, 243, 64, 89, 109, 65, 0, 72, 0,
+			0, 12, 201, 77, 84, 5, 73, 98, 83, 36, 243, 128, 15, 12, 201, 52, 243, 148, 20, 225, 71, 72, 147, 128, 15, 0, 9, 198, 5, 36,
+			129, 56, 113, 82, 15, 9, 198, 20, 193, 71, 36, 177, 82, 15, 10, 199, 72, 84, 208, 60, 228, 213, 52, 15, 10, 199, 52, 21, 83, 60,
+			193, 85, 52, 15, 10, 199, 44, 243, 15, 77, 67, 205, 36, 15, 0, 19, 67, 16, 83, 64, 72, 6, 115, 65, 15, 72, 36, 34, 0, 81,
+			100, 101, 114, 32, 19, 67, 16, 83, 64, 72, 6, 115, 65, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 6, 195, 16, 83, 64, 72, 0,
+			9, 198, 5, 34, 223, 60, 195, 199, 15, 0, 10, 67, 36, 72, 128, 111, 72, 6, 114, 0, 12, 201, 88, 144, 146, 4, 99, 206, 37, 53,
+			0, 15, 9, 198, 74, 145, 2, 100, 226, 84, 15, 9, 198, 77, 2, 79, 56, 17, 197, 15, 9, 198, 76, 16, 143, 80, 17, 197, 15, 9,
+			198, 64, 192, 78, 80, 17, 197, 15, 9, 198, 20, 181, 137, 64, 17, 197, 15, 0, 12, 201, 16, 144, 76, 20, 181, 15, 48, 241, 192, 15,
+			9, 198, 80, 244, 130, 37, 53, 0, 15, 9, 198, 32, 244, 142, 37, 53, 0, 15, 0, 9, 198, 32, 148, 212, 60, 195, 199, 15, 9, 198,
+			32, 148, 16, 60, 195, 199, 15, 9, 198, 28, 83, 77, 60, 195, 199, 15, 9, 198, 25, 33, 78, 60, 195, 199, 15, 6, 195, 84, 226, 75,
+			15, 10, 199, 65, 39, 202, 84, 66, 67, 20, 15, 7, 196, 45, 84, 129, 8, 15, 0, 21, 66, 29, 224, 81, 125, 15, 48, 6, 125, 15,
+			117, 0, 82, 112, 195, 165, 32, 97, 102, 32, 6, 195, 4, 210, 68, 15, 9, 198, 72, 82, 214, 37, 50, 84, 15, 0, 10, 199, 77, 64,
+			76, 4, 115, 73, 80, 15, 0, 21, 68, 44, 244, 212, 20, 49, 39, 89, 72, 13, 15, 65, 115, 86, 0, 81, 109, 101, 100, 32, 19, 68,
+			88, 147, 12, 20, 84, 37, 55, 112, 15, 89, 108, 0, 81, 115, 195, 165, 32, 21, 68, 88, 147, 12, 20, 84, 111, 55, 112, 15, 107, 6,
+			117, 0, 81, 104, 97, 118, 101, 32, 10, 199, 21, 35, 212, 60, 208, 78, 36, 15, 9, 198, 81, 85, 129, 49, 80, 78, 15, 9, 198, 8,
+			85, 10, 20, 229, 0, 15, 9, 198, 32, 244, 148, 84, 192, 78, 16, 0, 8, 197, 48, 21, 137, 56, 80, 15, 8, 197, 52, 147, 133, 72,
+			80, 15, 8, 197, 28, 83, 133, 72, 80, 15, 9, 198, 85, 48, 133, 44, 148, 203, 15, 9, 198, 72, 85, 15, 72, 148, 203, 15, 9, 198,
+			52, 245, 15, 72, 148, 203, 15, 9, 198, 48, 149, 15, 80, 148, 203, 15, 9, 198, 44, 244, 193, 44, 148, 203, 15, 9, 198, 44, 19, 143,
+			56, 148, 203, 15, 9, 198, 20, 225, 82, 28, 148, 203, 15, 9, 198, 12, 243, 79, 72, 148, 203, 15, 9, 198, 4, 209, 137, 8, 148, 203,
+			15, 9, 198, 4, 196, 193, 12, 148, 203, 15, 0, 18, 66, 77, 224, 89, 108, 15, 89, 36, 50, 47, 0, 81, 115, 101, 110, 116, 32, 16,
+			66, 77, 224, 89, 108, 15, 107, 35, 34, 0, 81, 104, 97, 114, 32, 26, 66, 77, 224, 89, 6, 125, 15, 65, 6, 125, 89, 6, 37, 13,
+			0, 82, 109, 195, 165, 32, 115, 105, 103, 101, 32, 16, 66, 77, 224, 89, 108, 15, 65, 6, 125, 0, 81, 109, 195, 165, 32, 19, 66, 77,
+			224, 89, 108, 15, 84, 6, 115, 108, 0, 81, 118, 195, 166, 114, 101, 32, 21, 66, 77, 224, 89, 108, 15, 55, 6, 115, 68, 112, 0, 81,
+			108, 195, 166, 110, 103, 101, 32, 17, 66, 77, 224, 89, 108, 15, 84, 6, 121, 34, 0, 81, 118, 97, 114, 32, 20, 66, 77, 224, 89, 108,
+			15, 107, 6, 108, 57, 47, 0, 81, 104, 195, 184, 106, 116, 32, 17, 66, 77, 224, 89, 108, 15, 84, 6, 36, 55, 0, 81, 118, 105, 108,
+			32, 20, 66, 77, 224, 89, 108, 15, 55, 6, 121, 68, 47, 0, 81, 108, 97, 110, 103, 116, 32, 18, 66, 77, 224, 89, 108, 15, 81, 6,
+			132, 34, 0, 81, 103, 195, 184, 114, 32, 15, 66, 77, 224, 89, 108, 15, 6, 115, 34, 0, 81, 101, 114, 32, 20, 66, 77, 224, 89, 108,
+			15, 65, 6, 35, 68, 112, 0, 81, 109, 97, 110, 103, 101, 32, 22, 66, 77, 224, 89, 108, 15, 65, 6, 35, 12, 57, 13, 86, 0, 81,
+			109, 101, 103, 101, 116, 32, 9, 198, 76, 244, 130, 37, 67, 204, 15, 9, 198, 73, 81, 9, 52, 83, 148, 15, 9, 198, 60, 48, 201, 16,
+			83, 148, 15, 9, 198, 16, 82, 193, 16, 83, 148, 15, 9, 198, 80, 243, 5, 72, 19, 148, 15, 9, 198, 72, 83, 5, 88, 19, 148, 15,
+			9, 198, 61, 33, 9, 56, 19, 148, 15, 9, 198, 25, 32, 80, 64, 19, 148, 15, 9, 198, 24, 192, 71, 72, 19, 148, 15, 9, 198, 24,
+			145, 213, 72, 19, 148, 15, 0, 8, 197, 16, 144, 76, 60, 112, 15, 12, 201, 52, 243, 147, 81, 42, 83, 37, 65, 84, 15, 0, 10, 199,
+			24, 83, 142, 60, 195, 199, 36, 15, 9, 198, 5, 35, 79, 16, 145, 192, 15, 9, 198, 8, 243, 9, 88, 144, 78, 15, 9, 198, 5, 53,
+			18, 4, 176, 78, 16, 10, 199, 25, 243, 143, 52, 83, 129, 48, 15, 0, 8, 197, 84, 225, 9, 56, 80, 15, 8, 197, 44, 16, 137, 56,
+			80, 15, 8, 197, 8, 240, 137, 56, 80, 15, 9, 198, 16, 144, 84, 60, 226, 75, 15, 8, 197, 64, 243, 9, 12, 80, 15, 8, 197, 64,
+			243, 65, 16, 80, 15, 10, 69, 60, 227, 9, 56, 80, 21, 0, 47, 0, 7, 196, 44, 243, 73, 44, 15, 7, 196, 44, 243, 9, 44, 15,
+			0, 13, 202, 20, 225, 9, 52, 83, 147, 36, 243, 129, 48, 15, 0, 29, 68, 12, 243, 133, 100, 6, 49, 39, 40, 50, 37, 15, 6, 35,
+			57, 55, 112, 50, 72, 0, 81, 105, 115, 108, 97, 110, 100, 32, 6, 195, 36, 179, 206, 15, 0, 12, 201, 65, 39, 211, 20, 229, 1, 80,
+			147, 206, 15, 14, 203, 44, 243, 150, 20, 229, 21, 4, 194, 78, 16, 80, 15, 8, 197, 29, 32, 70, 20, 208, 15, 0, 9, 198, 5, 85,
+			15, 65, 50, 64, 15, 9, 198, 32, 21, 83, 76, 148, 212, 15, 9, 198, 21, 50, 193, 64, 148, 212, 15, 14, 203, 4, 229, 9, 44, 243,
+			131, 21, 5, 9, 60, 224, 15, 15, 204, 76, 181, 69, 77, 2, 76, 48, 84, 137, 56, 65, 64, 15, 15, 204, 33, 84, 194, 21, 53, 25,
+			72, 84, 137, 56, 65, 64, 15, 0, 18, 67, 36, 178, 197, 36, 81, 14, 15, 107, 117, 0, 81, 104, 97, 118, 101, 32, 13, 202, 4, 178,
+			207, 53, 0, 71, 56, 21, 41, 72, 15, 10, 199, 88, 147, 204, 36, 226, 83, 80, 15, 10, 199, 80, 84, 146, 61, 34, 83, 80, 15, 10,
+			199, 80, 19, 13, 84, 66, 83, 80, 15, 10, 199, 77, 147, 66, 60, 194, 83, 80, 15, 10, 199, 77, 64, 76, 36, 226, 83, 80, 15, 10,
+			199, 77, 2, 82, 37, 66, 83, 80, 15, 10, 199, 76, 240, 201, 4, 194, 83, 80, 15, 10, 199, 76, 163, 198, 20, 194, 83, 80, 15, 10,
+			199, 76, 84, 137, 4, 194, 83, 80, 15, 10, 199, 76, 82, 212, 21, 34, 83, 80, 15, 10, 199, 72, 84, 197, 73, 98, 83, 80, 15, 10,
+			199, 65, 34, 86, 5, 66, 83, 80, 15, 10, 199, 64, 197, 82, 4, 194, 83, 80, 15, 10, 199, 60, 178, 213, 49, 66, 83, 80, 15, 10,
+			199, 53, 149, 20, 21, 34, 83, 80, 15, 10, 199, 52, 245, 9, 60, 226, 83, 80, 15, 10, 199, 52, 19, 137, 21, 34, 83, 80, 15, 10,
+			199, 44, 243, 131, 37, 2, 83, 80, 15, 10, 199, 44, 242, 193, 36, 226, 83, 80, 15, 10, 199, 44, 16, 130, 4, 194, 83, 80, 15, 10,
+			199, 32, 83, 12, 20, 226, 83, 80, 15, 10, 199, 29, 82, 84, 5, 34, 83, 80, 15, 10, 199, 24, 244, 141, 4, 194, 83, 80, 15, 10,
+			199, 24, 85, 9, 12, 130, 83, 80, 15, 10, 199, 16, 20, 151, 36, 226, 83, 80, 15, 10, 199, 12, 83, 66, 4, 194, 83, 80, 15, 10,
+			199, 12, 19, 22, 36, 226, 83, 80, 15, 10, 199, 4, 181, 9, 60, 226, 83, 80, 15, 10, 199, 4, 36, 213, 72, 66, 83, 80, 15, 12,
+			201, 4, 178, 207, 53, 0, 71, 56, 84, 128, 15, 0, 14, 69, 40, 19, 15, 85, 128, 89, 57, 118, 6, 55, 123, 0, 9, 198, 61, 1,
+			82, 5, 67, 210, 15, 9, 198, 36, 226, 133, 45, 67, 210, 15, 11, 200, 80, 83, 5, 24, 243, 137, 77, 64, 15, 11, 200, 76, 84, 1,
+			72, 21, 9, 77, 64, 15, 11, 200, 76, 83, 73, 56, 20, 137, 77, 64, 15, 11, 200, 64, 83, 147, 36, 243, 137, 77, 64, 15, 11, 200,
+			64, 20, 131, 20, 195, 9, 77, 64, 15, 11, 200, 52, 243, 133, 80, 20, 137, 77, 64, 15, 11, 200, 52, 147, 137, 52, 19, 9, 77, 64,
+			15, 11, 200, 48, 144, 146, 21, 69, 9, 77, 64, 15, 11, 200, 44, 244, 142, 21, 69, 9, 77, 64, 15, 11, 200, 44, 21, 84, 36, 243,
+			137, 77, 64, 15, 11, 200, 24, 243, 11, 48, 244, 137, 77, 64, 15, 11, 200, 24, 147, 1, 80, 83, 9, 77, 64, 15, 11, 200, 4, 229,
+			1, 28, 243, 137, 77, 64, 15, 11, 200, 4, 194, 207, 32, 243, 9, 77, 64, 15, 9, 198, 65, 241, 9, 5, 68, 137, 15, 9, 198, 65,
+			54, 75, 37, 50, 192, 15, 14, 69, 77, 84, 211, 21, 128, 89, 109, 89, 116, 81, 89, 0, 0, 7, 196, 81, 83, 79, 72, 15, 7, 196,
+			80, 83, 143, 72, 15, 13, 202, 81, 32, 78, 76, 99, 210, 52, 21, 15, 72, 15, 7, 196, 28, 148, 133, 72, 15, 8, 197, 20, 212, 9,
+			72, 144, 15, 8, 197, 76, 241, 15, 52, 144, 15, 12, 201, 74, 147, 148, 28, 83, 143, 29, 32, 70, 15, 0, 11, 200, 77, 66, 77, 84,
+			192, 84, 61, 32, 15, 11, 200, 4, 224, 76, 101, 48, 84, 61, 32, 15, 8, 197, 65, 35, 194, 21, 32, 15, 8, 197, 52, 145, 210, 21,
+			32, 15, 8, 197, 24, 192, 78, 21, 32, 15, 6, 195, 32, 144, 84, 15, 6, 195, 4, 112, 84, 15, 9, 198, 52, 147, 137, 52, 19, 0,
+			15, 9, 198, 16, 145, 201, 80, 19, 0, 15, 0, 0, 8, 197, 77, 64, 84, 85, 64, 15, 8, 197, 77, 66, 76, 21, 64, 15, 8, 197,
+			76, 243, 9, 77, 64, 15, 8, 197, 57, 81, 9, 77, 64, 15, 8, 197, 52, 241, 9, 77, 64, 15, 8, 197, 8, 21, 9, 77, 64, 15,
+			8, 197, 77, 83, 6, 37, 64, 15, 8, 197, 56, 149, 18, 37, 64, 15, 8, 197, 21, 52, 18, 37, 64, 15, 9, 198, 44, 195, 210, 4,
+			210, 78, 15, 8, 197, 44, 194, 69, 57, 64, 15, 8, 197, 77, 83, 6, 5, 64, 15, 8, 197, 77, 2, 78, 5, 64, 15, 8, 197, 56,
+			149, 18, 5, 64, 15, 8, 197, 33, 145, 18, 5, 64, 15, 8, 197, 29, 32, 78, 5, 64, 15, 8, 197, 12, 149, 18, 5, 64, 15, 8,
+			197, 88, 18, 193, 57, 64, 15, 8, 197, 64, 146, 193, 57, 64, 15, 0, 17, 70, 14, 38, 129, 56, 225, 78, 89, 114, 89, 6, 117, 50,
+			14, 50, 0, 11, 67, 76, 149, 0, 89, 6, 37, 47, 0, 72, 0, 8, 197, 80, 244, 148, 85, 32, 15, 8, 197, 73, 84, 20, 85, 32,
+			15, 8, 197, 44, 243, 148, 85, 32, 15, 7, 196, 33, 83, 105, 72, 15, 8, 197, 41, 83, 137, 61, 32, 15, 8, 197, 80, 245, 80, 21,
+			32, 15, 8, 197, 80, 83, 132, 21, 32, 15, 8, 197, 76, 21, 84, 21, 32, 15, 8, 197, 44, 16, 200, 21, 32, 15, 8, 197, 25, 83,
+			132, 21, 32, 15, 8, 197, 21, 35, 196, 21, 32, 15, 8, 197, 20, 194, 68, 21, 32, 15, 8, 197, 16, 19, 132, 21, 32, 15, 11, 70,
+			92, 130, 80, 12, 244, 132, 21, 0, 47, 10, 69, 13, 84, 147, 61, 32, 21, 0, 47, 0, 12, 201, 32, 84, 141, 4, 100, 143, 16, 149,
+			0, 15, 12, 201, 72, 81, 140, 20, 181, 5, 72, 85, 0, 15, 10, 69, 92, 147, 132, 61, 112, 21, 0, 47, 0, 9, 198, 80, 21, 15,
+			90, 148, 128, 15, 9, 198, 76, 242, 71, 58, 148, 128, 15, 9, 198, 5, 81, 9, 82, 148, 128, 15, 8, 197, 76, 17, 9, 77, 64, 15,
+			8, 197, 5, 85, 9, 77, 64, 15, 8, 197, 5, 65, 73, 77, 64, 15, 12, 201, 52, 19, 137, 65, 83, 1, 80, 147, 206, 15, 10, 199,
+			61, 1, 143, 72, 209, 82, 20, 15, 8, 197, 72, 84, 208, 37, 64, 15, 8, 197, 32, 149, 20, 37, 64, 15, 9, 198, 45, 35, 205, 5,
+			66, 78, 15, 9, 198, 4, 35, 210, 36, 114, 78, 15, 12, 201, 29, 37, 78, 17, 69, 137, 28, 144, 78, 15, 9, 198, 24, 147, 9, 65,
+			2, 78, 15, 8, 197, 76, 243, 4, 5, 64, 15, 8, 197, 25, 64, 76, 5, 64, 15, 8, 197, 4, 49, 84, 5, 64, 15, 8, 197, 76,
+			82, 193, 57, 64, 15, 0, 9, 198, 76, 176, 66, 74, 148, 192, 15, 9, 198, 65, 33, 67, 38, 148, 192, 15, 9, 198, 56, 244, 141, 50,
+			148, 192, 15, 9, 198, 29, 32, 67, 38, 148, 192, 15, 9, 198, 28, 83, 133, 74, 148, 192, 15, 12, 201, 65, 39, 208, 5, 33, 82, 36,
+			225, 192, 15, 9, 198, 121, 34, 21, 76, 144, 78, 15, 24, 4, 95, 53, 88, 111, 107, 117, 55, 47, 16, 6, 115, 89, 36, 50, 89, 47,
+			129, 84, 14, 50, 14, 0, 0, 12, 201, 124, 181, 137, 88, 19, 5, 72, 147, 135, 15, 13, 202, 76, 81, 9, 52, 83, 148, 21, 34, 78,
+			28, 15, 13, 202, 65, 35, 214, 36, 19, 148, 21, 34, 78, 28, 15, 13, 202, 44, 243, 148, 72, 20, 212, 21, 34, 78, 28, 15, 13, 202,
+			44, 243, 147, 60, 194, 68, 21, 34, 78, 28, 15, 12, 201, 36, 212, 18, 124, 115, 133, 72, 147, 135, 15, 12, 201, 65, 35, 208, 61, 37,
+			9, 60, 225, 76, 15, 12, 201, 44, 243, 150, 20, 229, 9, 60, 225, 76, 15, 8, 67, 80, 80, 200, 21, 0, 47, 11, 70, 64, 20, 211,
+			92, 244, 132, 21, 0, 47, 0, 11, 200, 88, 83, 148, 36, 192, 84, 165, 32, 15, 11, 200, 81, 32, 78, 76, 192, 84, 165, 32, 15, 11,
+			200, 64, 84, 134, 61, 32, 84, 165, 32, 15, 11, 200, 60, 36, 197, 73, 96, 84, 165, 32, 15, 11, 200, 57, 83, 77, 21, 32, 84, 165,
+			32, 15, 11, 200, 52, 19, 149, 17, 82, 212, 165, 32, 15, 11, 200, 44, 243, 208, 21, 32, 84, 165, 32, 15, 11, 200, 44, 243, 148, 72,
+			243, 12, 165, 32, 15, 11, 200, 36, 225, 143, 72, 208, 84, 165, 32, 15, 11, 200, 20, 180, 208, 20, 66, 84, 165, 32, 15, 11, 200, 4,
+			181, 80, 84, 226, 212, 165, 32, 15, 9, 198, 8, 20, 143, 29, 32, 77, 15, 9, 198, 5, 69, 15, 29, 32, 77, 15, 14, 203, 72, 82,
+			1, 8, 147, 9, 80, 84, 137, 56, 112, 15, 14, 203, 52, 243, 143, 25, 67, 206, 28, 84, 137, 56, 112, 15, 14, 203, 12, 83, 148, 72,
+			19, 9, 76, 84, 137, 56, 112, 15, 8, 197, 52, 19, 137, 76, 176, 15, 8, 197, 52, 85, 18, 36, 176, 15, 12, 201, 24, 20, 200, 36,
+			243, 133, 72, 85, 0, 15, 0, 17, 70, 48, 81, 197, 56, 65, 82, 55, 36, 81, 6, 115, 50, 72, 108, 0, 9, 198, 76, 192, 86, 37,
+			53, 0, 15, 12, 201, 77, 80, 147, 45, 34, 80, 80, 147, 206, 15, 12, 201, 76, 21, 9, 76, 96, 75, 80, 147, 206, 15, 12, 201, 72,
+			84, 18, 60, 69, 75, 80, 147, 206, 15, 12, 201, 65, 35, 211, 45, 34, 80, 80, 147, 206, 15, 12, 201, 41, 84, 137, 76, 66, 75, 80,
+			147, 206, 15, 12, 201, 36, 229, 5, 72, 161, 75, 80, 147, 206, 15, 15, 204, 84, 67, 65, 81, 34, 75, 84, 193, 82, 36, 225, 192, 15,
+			15, 204, 77, 80, 150, 20, 229, 9, 60, 225, 82, 36, 225, 192, 15, 15, 204, 65, 35, 208, 61, 37, 9, 60, 225, 82, 36, 225, 192, 15,
+			15, 204, 44, 243, 148, 36, 225, 197, 57, 65, 82, 36, 225, 192, 15, 15, 204, 9, 35, 206, 44, 244, 203, 61, 1, 82, 36, 225, 192, 15,
+			9, 198, 88, 16, 195, 36, 225, 82, 15, 9, 198, 81, 33, 80, 4, 225, 82, 15, 9, 198, 81, 33, 77, 84, 193, 82, 15, 9, 198, 81,
+			32, 78, 12, 129, 82, 15, 9, 198, 80, 244, 144, 20, 65, 82, 15, 9, 198, 77, 84, 16, 60, 225, 82, 15, 10, 199, 61, 4, 213, 52,
+			209, 82, 20, 15, 9, 198, 72, 85, 1, 72, 65, 82, 15, 9, 198, 72, 84, 207, 72, 33, 82, 15, 9, 198, 72, 84, 201, 28, 225, 82,
+			15, 9, 198, 72, 82, 214, 37, 33, 82, 15, 9, 198, 72, 81, 149, 56, 65, 82, 15, 9, 198, 72, 19, 80, 60, 225, 82, 15, 9, 198,
+			72, 17, 134, 36, 225, 82, 15, 9, 198, 65, 35, 208, 60, 225, 82, 15, 9, 198, 65, 35, 205, 20, 225, 82, 15, 9, 198, 65, 35, 198,
+			37, 65, 82, 15, 9, 198, 65, 35, 198, 4, 225, 82, 15, 9, 198, 65, 35, 195, 20, 65, 82, 15, 9, 198, 64, 84, 131, 37, 1, 82,
+			15, 9, 198, 61, 48, 201, 48, 193, 82, 15, 9, 198, 56, 149, 133, 48, 193, 82, 15, 9, 198, 52, 245, 73, 48, 193, 82, 15, 9, 198,
+			52, 245, 9, 60, 225, 82, 15, 9, 198, 52, 243, 5, 77, 65, 82, 15, 9, 198, 48, 146, 214, 36, 65, 82, 15, 9, 198, 44, 244, 146,
+			20, 193, 82, 15, 9, 198, 44, 243, 80, 60, 225, 82, 15, 9, 198, 44, 243, 80, 36, 193, 82, 15, 9, 198, 44, 243, 77, 5, 65, 82,
+			15, 9, 198, 44, 19, 142, 20, 193, 82, 15, 9, 198, 36, 226, 193, 72, 225, 82, 15, 9, 198, 36, 212, 15, 73, 65, 82, 15, 9, 198,
+			29, 32, 84, 36, 225, 82, 15, 9, 198, 29, 32, 78, 84, 193, 82, 15, 9, 198, 25, 37, 83, 81, 33, 82, 15, 9, 198, 24, 244, 141,
+			84, 193, 82, 15, 9, 198, 24, 20, 195, 36, 225, 82, 15, 9, 198, 21, 128, 197, 48, 193, 82, 15, 9, 198, 21, 50, 207, 73, 65, 82,
+			15, 9, 198, 20, 208, 129, 48, 193, 82, 15, 9, 198, 20, 180, 208, 20, 65, 82, 15, 9, 198, 16, 148, 203, 85, 65, 82, 15, 9, 198,
+			16, 81, 210, 4, 65, 82, 15, 9, 198, 12, 130, 75, 4, 225, 82, 15, 9, 198, 5, 69, 1, 12, 129, 82, 15, 9, 198, 4, 227, 149,
+			48, 193, 82, 15, 9, 198, 4, 227, 133, 45, 65, 82, 15, 9, 198, 4, 197, 5, 72, 225, 82, 15, 9, 198, 4, 178, 214, 37, 33, 82,
+			15, 9, 198, 4, 68, 207, 72, 33, 82, 15, 9, 198, 4, 36, 212, 36, 225, 82, 15, 10, 199, 28, 84, 141, 4, 226, 85, 52, 15, 10,
+			199, 80, 18, 211, 60, 227, 205, 36, 15, 9, 198, 5, 49, 80, 80, 146, 192, 15, 11, 70, 72, 80, 197, 37, 97, 82, 21, 0, 47, 0,
+			8, 197, 41, 83, 5, 72, 144, 15, 16, 69, 76, 19, 1, 52, 144, 89, 117, 55, 6, 117, 65, 37, 0, 15, 7, 196, 76, 244, 129, 56,
+			15, 7, 196, 8, 83, 137, 56, 15, 7, 196, 44, 244, 129, 56, 16, 0, 13, 202, 88, 17, 193, 8, 243, 132, 21, 34, 78, 28, 15, 12,
+			201, 65, 39, 211, 21, 37, 133, 72, 147, 135, 15, 13, 202, 8, 19, 132, 21, 35, 204, 21, 34, 78, 28, 15, 10, 199, 36, 212, 18, 124,
+			115, 133, 72, 15, 7, 196, 8, 21, 9, 44, 15, 0, 13, 202, 44, 243, 148, 72, 245, 133, 73, 50, 69, 48, 15, 0, 10, 199, 76, 18,
+			203, 5, 35, 211, 20, 15, 10, 199, 12, 83, 12, 84, 195, 211, 20, 15, 15, 204, 20, 180, 203, 60, 211, 85, 56, 146, 193, 80, 147, 206,
+			15, 15, 204, 20, 180, 197, 53, 3, 9, 24, 146, 193, 80, 147, 206, 15, 15, 204, 77, 148, 212, 20, 208, 84, 37, 49, 82, 36, 225, 192,
+			15, 15, 204, 77, 64, 78, 16, 20, 132, 37, 49, 82, 36, 225, 192, 15, 15, 204, 76, 83, 147, 36, 34, 76, 37, 49, 82, 36, 225, 192,
+			15, 15, 204, 72, 17, 9, 60, 66, 82, 36, 113, 82, 36, 225, 192, 15, 15, 204, 65, 35, 199, 56, 244, 212, 36, 49, 82, 36, 225, 192,
+			15, 15, 204, 52, 21, 5, 72, 144, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 16, 144, 71, 56, 244, 212, 36, 49, 82, 36, 225, 192,
+			15, 15, 204, 8, 17, 193, 80, 83, 12, 37, 49, 82, 36, 225, 192, 15, 12, 201, 65, 39, 196, 37, 52, 15, 56, 84, 128, 15, 0, 9,
+			198, 65, 54, 75, 60, 195, 199, 15, 15, 204, 44, 243, 12, 20, 181, 9, 88, 148, 197, 72, 147, 135, 15, 15, 204, 20, 180, 197, 53, 3,
+			9, 24, 144, 197, 72, 147, 135, 15, 15, 204, 16, 148, 203, 88, 19, 9, 24, 144, 197, 72, 147, 135, 15, 15, 204, 16, 83, 73, 48, 149,
+			1, 72, 148, 197, 72, 147, 135, 15, 8, 197, 76, 147, 79, 56, 144, 15, 0, 11, 200, 44, 243, 138, 84, 226, 212, 85, 32, 15, 11, 200,
+			36, 229, 133, 77, 66, 84, 85, 32, 15, 11, 200, 4, 181, 80, 84, 226, 212, 85, 32, 15, 9, 198, 76, 84, 150, 37, 69, 84, 15, 9,
+			198, 5, 69, 18, 36, 37, 84, 15, 12, 201, 81, 80, 133, 72, 181, 76, 61, 49, 64, 15, 12, 201, 64, 20, 143, 16, 243, 148, 61, 49,
+			64, 15, 12, 201, 64, 20, 129, 16, 83, 148, 61, 49, 64, 15, 12, 201, 52, 85, 1, 52, 244, 134, 61, 49, 64, 15, 12, 201, 8, 147,
+			8, 5, 38, 137, 61, 49, 64, 15, 12, 201, 5, 98, 84, 4, 210, 78, 61, 49, 64, 15, 9, 198, 48, 149, 21, 72, 114, 64, 15, 12,
+			201, 77, 65, 87, 5, 33, 5, 77, 49, 64, 15, 12, 201, 4, 178, 213, 72, 21, 5, 77, 49, 64, 15, 6, 195, 125, 64, 78, 16, 0,
+			17, 70, 24, 243, 132, 4, 229, 0, 83, 108, 68, 72, 6, 121, 68, 0, 15, 0, 8, 197, 73, 85, 9, 56, 80, 15, 8, 197, 61, 96,
+			82, 36, 80, 15, 8, 197, 61, 96, 82, 36, 80, 15, 9, 198, 76, 83, 65, 57, 66, 75, 15, 9, 198, 16, 241, 205, 5, 66, 75, 15,
+			8, 197, 64, 245, 1, 28, 80, 15, 10, 69, 77, 21, 65, 72, 80, 21, 0, 47, 0, 7, 195, 85, 52, 210, 13, 42, 13, 202, 76, 83,
+			22, 24, 147, 129, 57, 50, 69, 72, 15, 9, 198, 48, 148, 9, 105, 160, 78, 15, 9, 198, 32, 21, 193, 36, 144, 78, 15, 9, 198, 4,
+			225, 15, 73, 32, 78, 15, 9, 198, 80, 19, 9, 76, 208, 78, 16, 0, 6, 195, 85, 48, 64, 13, 8, 197, 84, 99, 204, 60, 112, 15,
+			8, 197, 65, 35, 204, 60, 112, 15, 8, 197, 61, 67, 204, 60, 112, 15, 6, 195, 44, 83, 73, 15, 12, 201, 36, 225, 9, 24, 97, 82,
+			20, 229, 0, 15, 0, 9, 198, 17, 80, 140, 4, 229, 0, 15, 12, 68, 12, 130, 78, 4, 47, 57, 136, 50, 118, 0, 9, 68, 92, 130,
+			84, 20, 21, 0, 47, 0, 8, 197, 61, 34, 197, 72, 80, 15, 8, 197, 48, 85, 133, 72, 80, 15, 8, 197, 5, 50, 197, 76, 80, 15,
+			8, 197, 5, 32, 76, 36, 80, 15, 8, 197, 37, 34, 68, 36, 80, 15, 9, 198, 72, 243, 65, 57, 66, 75, 15, 9, 198, 48, 241, 201,
+			77, 66, 75, 15, 8, 197, 52, 19, 9, 12, 80, 15, 0, 11, 200, 21, 2, 68, 36, 20, 203, 61, 0, 15, 12, 201, 77, 80, 147, 80,
+			149, 21, 80, 147, 206, 15, 12, 201, 65, 35, 203, 48, 19, 65, 80, 147, 206, 15, 12, 201, 44, 243, 150, 21, 36, 193, 80, 147, 206, 15,
+			12, 201, 44, 243, 147, 64, 148, 129, 80, 147, 206, 15, 12, 201, 44, 243, 132, 20, 228, 193, 80, 147, 206, 15, 12, 201, 44, 243, 132, 20,
+			211, 129, 80, 147, 206, 15, 12, 201, 44, 243, 80, 20, 228, 193, 80, 147, 206, 15, 12, 201, 44, 20, 9, 81, 83, 1, 80, 147, 206, 15,
+			12, 201, 36, 229, 18, 61, 97, 82, 76, 147, 206, 15, 12, 201, 36, 228, 197, 52, 147, 129, 80, 147, 206, 15, 12, 201, 36, 195, 21, 77,
+			68, 129, 80, 147, 206, 15, 12, 201, 20, 180, 211, 64, 148, 129, 80, 147, 206, 15, 12, 201, 20, 180, 208, 48, 244, 129, 80, 147, 206, 15,
+			12, 201, 20, 180, 193, 52, 147, 129, 80, 147, 206, 15, 12, 201, 16, 148, 208, 20, 228, 193, 80, 147, 206, 15, 12, 201, 12, 149, 137, 48,
+			148, 193, 80, 147, 206, 15, 12, 201, 5, 85, 15, 72, 148, 193, 80, 147, 206, 15, 12, 201, 5, 52, 201, 52, 147, 1, 80, 147, 206, 15,
+			12, 201, 4, 208, 76, 28, 19, 65, 80, 147, 206, 15, 12, 201, 4, 178, 213, 53, 83, 1, 80, 147, 206, 15, 12, 201, 4, 48, 197, 48,
+			84, 129, 80, 147, 206, 15, 13, 202, 72, 83, 1, 80, 149, 137, 77, 66, 83, 44, 15, 13, 202, 65, 35, 214, 60, 176, 84, 61, 34, 83,
+			44, 15, 13, 202, 64, 20, 129, 16, 145, 205, 5, 66, 83, 44, 15, 13, 202, 48, 147, 12, 20, 20, 201, 5, 66, 83, 44, 15, 13, 202,
+			44, 19, 11, 84, 192, 84, 61, 34, 83, 44, 15, 13, 202, 36, 228, 208, 37, 32, 84, 61, 34, 83, 44, 15, 13, 202, 36, 225, 143, 72,
+			208, 84, 61, 34, 83, 44, 15, 13, 202, 32, 245, 20, 20, 229, 15, 81, 66, 83, 44, 15, 13, 202, 16, 144, 71, 72, 19, 77, 5, 66,
+			83, 44, 15, 13, 202, 16, 82, 204, 5, 32, 84, 61, 34, 83, 44, 15, 13, 202, 8, 243, 19, 40, 85, 137, 77, 66, 83, 44, 15, 13,
+			202, 5, 34, 83, 80, 242, 210, 5, 66, 83, 44, 15, 13, 202, 4, 180, 207, 56, 243, 69, 81, 34, 83, 44, 15, 12, 201, 4, 229, 9,
+			32, 148, 212, 4, 210, 78, 15, 9, 198, 4, 209, 82, 36, 176, 78, 15, 9, 198, 56, 20, 139, 60, 208, 78, 16, 9, 198, 52, 84, 137,
+			16, 144, 78, 16, 0, 13, 202, 76, 81, 9, 52, 83, 148, 5, 66, 79, 56, 15, 13, 202, 52, 19, 137, 24, 84, 212, 5, 66, 79, 56,
+			15, 13, 202, 44, 243, 134, 72, 243, 148, 5, 66, 79, 56, 15, 13, 202, 16, 242, 213, 52, 83, 148, 5, 66, 79, 56, 15, 13, 202, 5,
+			33, 213, 52, 83, 148, 5, 66, 79, 56, 15, 14, 203, 44, 243, 148, 72, 20, 21, 56, 181, 9, 76, 176, 15, 14, 203, 44, 20, 129, 45,
+			65, 82, 37, 53, 9, 76, 176, 15, 14, 203, 16, 83, 147, 37, 67, 205, 21, 68, 137, 76, 176, 15, 7, 196, 76, 21, 9, 56, 15, 7,
+			196, 44, 19, 73, 56, 15, 8, 197, 45, 35, 206, 36, 176, 15, 0, 15, 204, 44, 20, 129, 45, 65, 82, 60, 195, 199, 37, 50, 192, 15,
+			10, 199, 84, 197, 9, 52, 21, 21, 52, 15, 10, 199, 64, 84, 134, 20, 181, 21, 52, 15, 10, 199, 80, 84, 146, 5, 34, 85, 52, 15,
+			10, 199, 77, 147, 80, 61, 50, 85, 52, 15, 10, 199, 44, 243, 12, 20, 114, 85, 52, 15, 10, 199, 5, 84, 208, 36, 50, 85, 52, 15,
+			9, 198, 21, 81, 197, 56, 146, 192, 15, 9, 198, 5, 67, 5, 80, 146, 192, 15, 0, 8, 197, 61, 53, 5, 72, 144, 15, 15, 204, 25,
+			83, 139, 80, 147, 206, 4, 194, 83, 80, 148, 203, 15, 8, 197, 36, 225, 129, 52, 144, 15, 10, 199, 49, 244, 133, 72, 147, 132, 20, 15,
+			0, 12, 201, 88, 242, 193, 48, 148, 193, 80, 147, 206, 15, 12, 201, 72, 84, 212, 5, 84, 129, 80, 147, 206, 15, 12, 201, 72, 21, 9,
+			32, 16, 137, 80, 147, 206, 15, 12, 201, 65, 35, 211, 80, 149, 21, 80, 147, 206, 15, 12, 201, 48, 81, 193, 48, 148, 193, 80, 147, 206,
+			15, 12, 201, 44, 243, 147, 80, 149, 21, 80, 147, 206, 15, 12, 201, 44, 243, 147, 36, 115, 129, 80, 147, 206, 15, 12, 201, 44, 243, 15,
+			56, 148, 193, 80, 147, 206, 15, 12, 201, 44, 21, 5, 44, 148, 193, 80, 147, 206, 15, 12, 201, 44, 19, 129, 48, 148, 193, 80, 147, 206,
+			15, 12, 201, 36, 229, 5, 73, 97, 78, 80, 147, 206, 15, 12, 201, 36, 226, 193, 52, 147, 129, 80, 147, 206, 15, 12, 201, 36, 195, 21,
+			52, 147, 129, 80, 147, 206, 15, 12, 201, 24, 144, 146, 36, 195, 1, 80, 147, 206, 15, 16, 205, 24, 145, 5, 36, 179, 205, 52, 148, 211,
+			5, 34, 83, 44, 15, 12, 201, 44, 20, 130, 61, 37, 78, 17, 83, 64, 15, 12, 201, 44, 20, 130, 60, 194, 78, 21, 83, 64, 15, 12,
+			201, 64, 20, 148, 36, 50, 80, 37, 83, 64, 15, 9, 198, 32, 20, 141, 60, 226, 64, 15, 0, 8, 197, 25, 244, 137, 77, 64, 15, 7,
+			196, 80, 19, 15, 56, 15, 13, 202, 72, 85, 18, 60, 99, 5, 45, 50, 79, 56, 15, 13, 202, 28, 195, 210, 36, 98, 75, 5, 66, 79,
+			56, 15, 8, 197, 53, 148, 212, 36, 176, 15, 9, 198, 73, 244, 207, 56, 224, 66, 15, 8, 67, 12, 242, 197, 21, 0, 47, 6, 195, 80,
+			147, 0, 76, 6, 195, 88, 83, 0, 76, 0, 10, 199, 77, 68, 137, 44, 177, 82, 36, 15, 7, 196, 37, 35, 206, 36, 15, 13, 202, 88,
+			147, 204, 36, 226, 83, 80, 147, 132, 20, 15, 0, 15, 204, 81, 32, 78, 76, 98, 71, 85, 32, 84, 36, 243, 128, 15, 15, 204, 64, 84,
+			147, 60, 226, 70, 36, 176, 84, 36, 243, 128, 15, 15, 204, 52, 21, 5, 72, 144, 76, 37, 48, 84, 36, 243, 128, 15, 15, 204, 45, 38,
+			83, 80, 19, 12, 37, 48, 84, 36, 243, 128, 15, 15, 204, 16, 149, 133, 73, 50, 70, 36, 176, 84, 36, 243, 128, 15, 15, 204, 16, 145,
+			134, 21, 33, 78, 80, 144, 84, 36, 243, 128, 15, 15, 204, 5, 85, 5, 57, 66, 70, 36, 176, 84, 36, 243, 128, 15, 6, 195, 88, 81,
+			0, 76, 0, 10, 66, 92, 48, 84, 6, 36, 89, 36, 0, 9, 198, 85, 35, 204, 60, 114, 64, 15, 11, 200, 97, 147, 15, 24, 243, 137,
+			77, 64, 15, 11, 200, 88, 84, 147, 36, 243, 137, 77, 64, 15, 11, 200, 81, 35, 205, 8, 243, 137, 77, 64, 15, 11, 200, 76, 22, 15,
+			24, 243, 137, 77, 64, 15, 11, 200, 72, 17, 9, 44, 19, 9, 77, 64, 15, 11, 200, 64, 244, 201, 80, 149, 137, 77, 64, 15, 11, 200,
+			64, 243, 25, 28, 19, 73, 77, 64, 15, 11, 200, 64, 19, 70, 48, 85, 9, 77, 64, 15, 11, 200, 56, 81, 193, 80, 149, 137, 77, 64,
+			15, 11, 200, 52, 147, 9, 80, 20, 137, 77, 64, 15, 11, 200, 52, 19, 137, 13, 84, 137, 77, 64, 15, 11, 200, 44, 243, 134, 61, 35,
+			73, 77, 64, 15, 11, 200, 44, 195, 203, 44, 83, 137, 77, 64, 15, 11, 200, 44, 20, 9, 80, 19, 9, 77, 64, 15, 11, 200, 28, 83,
+			133, 72, 19, 9, 77, 64, 15, 11, 200, 21, 96, 78, 28, 83, 9, 77, 64, 15, 11, 200, 12, 128, 85, 88, 147, 137, 77, 64, 15, 9,
+			198, 56, 243, 73, 56, 83, 0, 15, 9, 198, 64, 20, 129, 76, 243, 0, 15, 9, 198, 48, 144, 133, 72, 19, 0, 15, 9, 198, 28, 192,
+			67, 36, 19, 0, 15, 14, 70, 12, 240, 203, 56, 86, 64, 49, 108, 49, 50, 113, 0, 11, 70, 52, 18, 15, 56, 86, 64, 21, 0, 47,
+			0, 7, 196, 16, 240, 197, 72, 15, 7, 196, 5, 35, 69, 72, 15, 9, 198, 5, 64, 86, 37, 51, 69, 15, 9, 198, 4, 226, 77, 37,
+			51, 69, 15, 7, 196, 12, 145, 193, 72, 15, 0, 14, 70, 8, 82, 71, 56, 85, 0, 71, 36, 68, 36, 0, 66, 10, 199, 76, 179, 205,
+			4, 113, 82, 36, 15, 10, 199, 64, 20, 134, 84, 209, 82, 36, 15, 9, 198, 24, 18, 212, 60, 145, 0, 15, 9, 198, 24, 21, 143, 72,
+			149, 0, 15, 9, 198, 4, 181, 129, 88, 149, 0, 15, 9, 198, 29, 32, 83, 76, 21, 0, 15, 9, 198, 16, 83, 5, 28, 21, 0, 15,
+			0, 9, 198, 16, 144, 83, 44, 244, 0, 15, 9, 198, 65, 35, 211, 60, 66, 75, 15, 0, 9, 198, 64, 18, 201, 77, 64, 78, 15, 9,
+			198, 80, 20, 140, 5, 64, 78, 16, 9, 198, 52, 243, 69, 57, 64, 78, 16, 0, 12, 201, 8, 81, 21, 36, 228, 212, 4, 211, 69, 67,
+			12, 201, 77, 3, 206, 80, 19, 137, 80, 85, 0, 15, 7, 196, 72, 17, 5, 72, 15, 9, 198, 54, 144, 140, 21, 33, 64, 15, 0, 6,
+			195, 88, 244, 148, 72, 0, 11, 200, 65, 39, 196, 36, 181, 9, 60, 224, 15, 9, 198, 76, 19, 133, 72, 147, 135, 15, 9, 198, 52, 147,
+			133, 72, 147, 135, 15, 9, 198, 28, 148, 133, 72, 147, 135, 15, 9, 198, 17, 84, 5, 72, 147, 135, 15, 9, 198, 16, 146, 203, 20, 66,
+			75, 15, 15, 2, 95, 33, 40, 72, 51, 108, 71, 89, 47, 121, 57, 50, 0, 0, 14, 203, 81, 32, 68, 37, 66, 79, 56, 19, 9, 77,
+			64, 15, 13, 202, 65, 35, 199, 72, 19, 77, 21, 34, 78, 28, 15, 13, 202, 52, 19, 20, 72, 18, 212, 21, 34, 78, 28, 15, 13, 202,
+			24, 18, 211, 36, 210, 76, 21, 34, 78, 28, 15, 13, 202, 20, 180, 208, 5, 68, 137, 21, 34, 78, 28, 15, 12, 201, 77, 68, 129, 8,
+			17, 19, 21, 33, 64, 15, 12, 201, 64, 244, 201, 80, 147, 206, 21, 33, 64, 15, 12, 201, 64, 20, 129, 25, 32, 83, 21, 33, 64, 15,
+			12, 201, 52, 85, 1, 77, 64, 83, 21, 33, 64, 15, 12, 201, 44, 243, 148, 72, 243, 12, 21, 33, 64, 15, 12, 201, 25, 83, 139, 80,
+			147, 206, 21, 33, 64, 15, 12, 201, 25, 32, 75, 80, 147, 206, 21, 33, 64, 15, 12, 201, 16, 149, 137, 76, 147, 206, 21, 33, 64, 15,
+			12, 201, 4, 208, 137, 80, 147, 206, 21, 33, 64, 15, 12, 201, 60, 208, 68, 72, 84, 211, 21, 33, 64, 15, 20, 73, 76, 128, 75, 21,
+			52, 5, 5, 33, 64, 91, 116, 37, 49, 89, 71, 111, 34, 0, 0, 7, 196, 8, 85, 15, 56, 15, 12, 201, 76, 243, 9, 16, 20, 137,
+			80, 85, 0, 15, 12, 201, 72, 81, 213, 48, 20, 137, 80, 85, 0, 15, 13, 202, 164, 179, 206, 60, 210, 83, 21, 34, 78, 28, 15, 13,
+			202, 84, 67, 65, 58, 149, 146, 21, 34, 78, 28, 15, 14, 203, 20, 180, 208, 48, 144, 201, 80, 84, 137, 56, 112, 15, 16, 69, 52, 83,
+			137, 76, 176, 65, 36, 50, 6, 37, 89, 49, 0, 15, 12, 201, 81, 32, 78, 77, 97, 83, 80, 149, 0, 15, 0, 10, 199, 65, 39, 195,
+			37, 50, 79, 56, 15, 11, 200, 65, 39, 205, 36, 84, 137, 56, 112, 15, 15, 204, 4, 101, 159, 72, 113, 77, 20, 176, 78, 37, 51, 69,
+			15, 9, 198, 80, 83, 65, 80, 146, 192, 15, 9, 198, 64, 243, 5, 52, 146, 192, 15, 9, 198, 28, 83, 133, 80, 146, 192, 15, 9, 198,
+			24, 243, 133, 80, 146, 192, 15, 9, 198, 4, 181, 83, 80, 146, 192, 15, 0, 15, 204, 36, 228, 213, 8, 244, 132, 36, 224, 84, 36, 243,
+			128, 15, 15, 204, 4, 178, 204, 36, 208, 84, 37, 48, 84, 36, 243, 128, 15, 0, 13, 202, 81, 34, 65, 56, 117, 76, 21, 34, 78, 28,
+			15, 16, 205, 81, 32, 78, 76, 148, 212, 61, 34, 83, 21, 34, 78, 28, 15, 13, 202, 77, 80, 147, 80, 149, 21, 21, 34, 78, 28, 15,
+			13, 202, 77, 68, 129, 56, 117, 76, 21, 34, 78, 28, 15, 13, 202, 72, 80, 201, 72, 181, 76, 21, 34, 78, 28, 15, 13, 202, 65, 35,
+			211, 64, 82, 212, 21, 34, 78, 28, 15, 13, 202, 64, 20, 148, 36, 50, 80, 21, 34, 78, 28, 15, 13, 202, 44, 243, 147, 80, 149, 21,
+			21, 34, 78, 28, 15, 13, 202, 44, 243, 80, 48, 85, 20, 21, 34, 78, 28, 15, 16, 205, 25, 83, 139, 80, 147, 206, 4, 194, 83, 21,
+			34, 78, 28, 15, 16, 205, 9, 84, 133, 5, 82, 210, 5, 66, 83, 21, 34, 78, 28, 15, 9, 198, 88, 146, 193, 72, 145, 82, 15, 9,
+			198, 80, 244, 148, 85, 33, 82, 15, 9, 198, 80, 83, 80, 21, 33, 82, 15, 9, 198, 77, 147, 139, 61, 1, 82, 15, 9, 198, 76, 81,
+			210, 20, 113, 82, 15, 9, 198, 72, 84, 207, 49, 97, 82, 15, 9, 198, 72, 83, 79, 57, 65, 82, 15, 9, 198, 72, 83, 1, 45, 49,
+			82, 15, 9, 198, 72, 80, 197, 57, 49, 82, 15, 9, 198, 4, 100, 133, 4, 113, 82, 15, 9, 198, 65, 35, 205, 61, 97, 82, 15, 9,
+			198, 65, 35, 202, 36, 49, 82, 15, 9, 198, 64, 83, 12, 21, 65, 82, 15, 9, 198, 61, 34, 71, 4, 209, 82, 15, 9, 198, 56, 81,
+			204, 36, 113, 82, 15, 9, 198, 44, 244, 146, 84, 113, 82, 15, 9, 198, 44, 243, 208, 21, 33, 82, 15, 9, 198, 44, 243, 135, 73, 81,
+			82, 15, 9, 198, 44, 243, 131, 37, 1, 82, 15, 9, 198, 44, 242, 203, 21, 33, 82, 15, 9, 198, 36, 229, 143, 49, 97, 82, 15, 9,
+			198, 36, 229, 133, 77, 65, 82, 15, 9, 198, 36, 229, 133, 73, 65, 82, 15, 9, 198, 36, 228, 201, 77, 65, 82, 15, 9, 198, 36, 226,
+			214, 37, 33, 82, 15, 9, 198, 36, 211, 73, 29, 33, 82, 15, 9, 198, 29, 32, 86, 37, 65, 82, 15, 9, 198, 28, 19, 15, 65, 1,
+			82, 15, 9, 198, 25, 84, 201, 60, 225, 82, 15, 9, 198, 24, 147, 135, 21, 33, 82, 15, 9, 198, 24, 18, 212, 85, 33, 82, 15, 9,
+			198, 21, 128, 197, 73, 1, 82, 15, 9, 198, 21, 96, 80, 61, 33, 82, 15, 9, 198, 20, 180, 197, 45, 97, 82, 15, 9, 198, 16, 148,
+			208, 85, 65, 82, 15, 9, 198, 16, 85, 5, 45, 65, 82, 15, 9, 198, 16, 84, 18, 5, 97, 82, 15, 9, 198, 16, 83, 79, 57, 65,
+			82, 15, 9, 198, 16, 82, 193, 57, 65, 82, 15, 9, 198, 16, 81, 140, 61, 33, 82, 15, 9, 198, 16, 19, 65, 76, 49, 82, 15, 9,
+			198, 12, 83, 147, 85, 33, 82, 15, 9, 198, 12, 83, 69, 57, 65, 82, 15, 9, 198, 8, 20, 212, 60, 225, 82, 15, 9, 198, 5, 69,
+			18, 5, 1, 82, 15, 9, 198, 5, 67, 205, 37, 49, 82, 15, 9, 198, 5, 36, 133, 77, 65, 82, 15, 9, 198, 4, 211, 133, 77, 65,
+			82, 15, 9, 198, 4, 113, 210, 20, 113, 82, 15, 9, 198, 4, 48, 197, 65, 65, 82, 15, 9, 198, 4, 36, 207, 49, 97, 82, 15, 9,
+			198, 81, 148, 129, 56, 226, 64, 15, 9, 198, 16, 144, 75, 60, 226, 64, 15, 7, 196, 9, 85, 9, 44, 15, 0, 19, 67, 16, 83, 128,
+			72, 6, 115, 50, 15, 107, 36, 34, 0, 81, 104, 101, 114, 32, 19, 67, 16, 83, 128, 72, 6, 115, 50, 15, 72, 36, 34, 0, 81, 100,
+			101, 114, 32, 13, 202, 64, 20, 148, 36, 50, 80, 5, 66, 79, 56, 15, 13, 202, 44, 243, 147, 80, 83, 12, 5, 66, 79, 56, 15, 13,
+			202, 36, 229, 5, 73, 5, 78, 45, 66, 79, 56, 15, 14, 203, 88, 149, 1, 52, 147, 137, 76, 84, 137, 56, 112, 15, 14, 203, 81, 32,
+			78, 77, 3, 210, 80, 84, 137, 56, 112, 15, 14, 203, 81, 32, 78, 76, 99, 210, 52, 84, 137, 56, 112, 15, 14, 203, 77, 147, 139, 72,
+			243, 137, 76, 84, 137, 56, 112, 15, 14, 203, 77, 65, 82, 20, 245, 25, 64, 84, 137, 56, 112, 15, 14, 203, 72, 82, 207, 57, 53, 18,
+			84, 84, 137, 56, 112, 15, 14, 203, 44, 243, 132, 37, 66, 79, 56, 84, 137, 56, 112, 15, 14, 203, 44, 192, 83, 76, 145, 137, 12, 84,
+			137, 56, 112, 15, 14, 203, 28, 192, 77, 61, 84, 137, 76, 84, 137, 56, 112, 15, 14, 203, 16, 84, 201, 56, 99, 210, 52, 84, 137, 56,
+			112, 15, 14, 203, 5, 85, 15, 56, 243, 73, 76, 84, 137, 56, 112, 15, 8, 197, 73, 84, 212, 36, 176, 15, 8, 197, 21, 35, 212, 36,
+			176, 15, 8, 197, 17, 84, 12, 36, 176, 15, 10, 67, 16, 83, 128, 72, 115, 50, 0, 72, 0, 10, 199, 5, 48, 133, 77, 67, 211, 20,
+			15, 13, 202, 77, 71, 210, 61, 1, 82, 5, 66, 79, 56, 15, 12, 201, 65, 35, 198, 21, 52, 201, 60, 225, 76, 15, 12, 201, 44, 243,
+			134, 21, 52, 201, 60, 225, 76, 15, 12, 201, 65, 35, 198, 21, 52, 201, 60, 224, 76, 15, 12, 71, 64, 83, 148, 32, 245, 83, 20, 21,
+			0, 47, 0, 20, 8, 119, 99, 39, 101, 114, 110, 101, 115, 84, 6, 36, 89, 36, 108, 50, 13, 89, 0, 14, 204, 44, 20, 129, 45, 65,
+			82, 37, 53, 9, 44, 243, 128, 8, 197, 21, 85, 15, 56, 144, 15, 8, 197, 5, 53, 5, 56, 144, 15, 10, 2, 95, 41, 89, 47, 39,
+			50, 36, 0, 11, 2, 95, 41, 89, 47, 36, 84, 36, 50, 0, 10, 2, 95, 41, 89, 47, 36, 84, 36, 0, 12, 2, 95, 41, 89, 107,
+			37, 34, 55, 36, 129, 0, 11, 2, 95, 41, 80, 35, 34, 72, 37, 50, 0, 11, 2, 95, 41, 80, 35, 81, 50, 36, 129, 0, 10, 2,
+			95, 41, 80, 35, 47, 107, 129, 0, 12, 2, 95, 41, 80, 35, 34, 47, 37, 36, 34, 0, 10, 2, 95, 41, 80, 107, 40, 80, 49, 0,
+			9, 2, 95, 41, 80, 35, 48, 36, 0, 0, 9, 198, 81, 34, 76, 60, 114, 64, 15, 9, 198, 4, 224, 76, 60, 114, 64, 15, 9, 198,
+			4, 195, 5, 72, 114, 64, 15, 9, 198, 4, 176, 68, 20, 210, 64, 15, 11, 200, 65, 39, 198, 21, 33, 78, 12, 80, 15, 0, 12, 201,
+			81, 34, 71, 60, 227, 205, 21, 68, 137, 15, 12, 201, 64, 192, 78, 28, 83, 205, 21, 68, 137, 15, 6, 195, 32, 84, 128, 72, 0, 31,
+			76, 77, 21, 65, 72, 81, 1, 56, 49, 82, 56, 84, 192, 89, 49, 58, 6, 115, 108, 72, 117, 12, 50, 89, 108, 20, 50, 13, 89, 0,
+			11, 200, 52, 19, 149, 24, 18, 212, 85, 32, 15, 11, 200, 5, 34, 201, 80, 82, 212, 85, 32, 15, 11, 200, 4, 116, 137, 45, 83, 20,
+			85, 32, 15, 11, 200, 4, 66, 149, 16, 19, 148, 85, 32, 15, 11, 2, 95, 46, 48, 125, 68, 47, 125, 65, 0, 0, 7, 196, 72, 145,
+			201, 16, 15, 14, 2, 95, 45, 71, 37, 50, 14, 89, 72, 34, 121, 37, 0, 0, 11, 2, 95, 44, 49, 6, 39, 65, 35, 12, 0, 0,
+			12, 67, 53, 36, 192, 65, 36, 89, 36, 89, 0, 25, 9, 198, 44, 242, 31, 76, 147, 206, 15, 11, 200, 44, 243, 150, 21, 33, 197, 57,
+			48, 15, 11, 200, 16, 148, 203, 72, 84, 1, 57, 48, 15, 9, 67, 88, 20, 128, 84, 121, 0, 76, 11, 67, 16, 84, 128, 72, 116, 34,
+			0, 76, 72, 9, 2, 95, 51, 47, 51, 6, 114, 0, 0, 10, 199, 32, 85, 5, 72, 243, 143, 52, 15, 8, 2, 95, 50, 47, 6, 39,
+			0, 0, 10, 199, 77, 147, 159, 77, 65, 83, 36, 15, 10, 199, 44, 147, 159, 77, 65, 83, 36, 15, 12, 201, 24, 244, 134, 165, 33, 82,
+			37, 50, 192, 15, 9, 198, 72, 83, 65, 56, 83, 147, 15, 9, 198, 36, 225, 140, 84, 83, 147, 15, 9, 198, 36, 225, 15, 48, 83, 147,
+			15, 9, 198, 20, 195, 203, 88, 83, 147, 15, 8, 197, 56, 243, 65, 16, 80, 15, 9, 198, 49, 83, 73, 56, 19, 147, 15, 9, 198, 16,
+			243, 73, 56, 19, 147, 15, 9, 2, 95, 49, 6, 36, 12, 50, 0, 0, 12, 201, 65, 35, 204, 60, 225, 193, 80, 147, 206, 15, 12, 201,
+			64, 84, 148, 85, 32, 129, 80, 147, 206, 15, 12, 201, 52, 20, 212, 85, 32, 129, 80, 147, 206, 15, 12, 201, 44, 243, 147, 84, 197, 1,
+			80, 147, 206, 15, 12, 201, 36, 225, 9, 76, 180, 133, 80, 147, 206, 15, 12, 201, 36, 212, 12, 4, 229, 1, 80, 147, 206, 15, 12, 201,
+			24, 84, 141, 20, 229, 1, 80, 147, 206, 15, 12, 201, 5, 84, 203, 84, 197, 1, 80, 147, 206, 15, 13, 202, 76, 84, 130, 60, 180, 143,
+			5, 66, 83, 44, 15, 12, 201, 64, 19, 31, 60, 116, 129, 24, 148, 203, 15, 13, 202, 52, 81, 137, 77, 67, 198, 20, 194, 83, 44, 15,
+			9, 198, 76, 18, 203, 5, 34, 78, 15, 11, 200, 44, 243, 150, 21, 33, 197, 57, 64, 15, 11, 200, 77, 84, 16, 48, 146, 193, 57, 64,
+			15, 11, 200, 52, 147, 137, 77, 68, 129, 57, 64, 15, 11, 200, 44, 243, 77, 4, 225, 1, 57, 64, 15, 11, 200, 24, 195, 210, 37, 52,
+			193, 57, 64, 15, 9, 2, 95, 48, 6, 50, 125, 55, 0, 0, 13, 202, 52, 244, 148, 36, 98, 75, 5, 66, 79, 56, 15, 13, 202, 44,
+			243, 77, 84, 226, 75, 5, 66, 79, 56, 15, 13, 202, 28, 84, 212, 36, 181, 76, 5, 66, 79, 56, 15, 13, 202, 24, 244, 148, 36, 98,
+			75, 5, 66, 79, 56, 15, 13, 202, 16, 148, 211, 36, 210, 76, 5, 66, 79, 56, 15, 14, 203, 44, 243, 147, 64, 148, 129, 80, 244, 137,
+			76, 176, 15, 14, 203, 20, 180, 193, 52, 147, 129, 80, 244, 137, 76, 176, 15, 14, 203, 12, 149, 137, 48, 148, 193, 80, 244, 137, 76, 176,
+			15, 9, 2, 95, 55, 89, 6, 130, 58, 0, 0, 10, 199, 88, 85, 5, 72, 147, 159, 72, 15, 10, 199, 52, 148, 211, 36, 243, 159, 72,
+			15, 10, 199, 32, 84, 133, 16, 149, 31, 72, 15, 10, 199, 20, 193, 77, 20, 229, 31, 72, 15, 12, 201, 25, 243, 143, 52, 83, 143, 48,
+			241, 201, 15, 15, 204, 88, 84, 147, 36, 98, 75, 5, 67, 210, 37, 50, 192, 15, 15, 204, 36, 212, 18, 61, 98, 83, 5, 67, 210, 37,
+			50, 192, 15, 6, 195, 4, 114, 76, 15, 9, 198, 52, 85, 15, 16, 146, 192, 15, 9, 198, 44, 21, 15, 48, 146, 192, 15, 10, 2, 95,
+			54, 89, 6, 116, 81, 89, 0, 0, 8, 197, 4, 193, 75, 76, 144, 15, 9, 198, 76, 22, 15, 24, 243, 128, 15, 9, 198, 36, 135, 210,
+			16, 145, 192, 15, 16, 69, 72, 243, 65, 56, 144, 34, 39, 65, 6, 117, 50, 37, 0, 15, 10, 199, 5, 85, 15, 52, 240, 137, 48, 15,
+			12, 201, 72, 85, 19, 52, 81, 9, 12, 147, 128, 15, 7, 196, 48, 242, 193, 48, 15, 9, 2, 95, 53, 83, 6, 116, 65, 0, 0, 9,
+			198, 65, 35, 199, 72, 19, 64, 15, 9, 198, 125, 33, 197, 73, 34, 71, 15, 9, 198, 76, 19, 72, 165, 34, 71, 15, 9, 198, 64, 85,
+			9, 81, 83, 64, 15, 9, 198, 56, 147, 194, 37, 83, 64, 15, 9, 2, 95, 52, 83, 6, 37, 108, 0, 0, 11, 67, 81, 83, 133, 47,
+			40, 50, 14, 0, 41, 12, 201, 44, 243, 80, 48, 83, 69, 57, 71, 210, 15, 9, 198, 76, 181, 77, 48, 84, 137, 15, 9, 198, 45, 37,
+			75, 44, 84, 137, 15, 9, 198, 4, 225, 201, 88, 84, 137, 15, 10, 199, 24, 244, 147, 125, 67, 9, 28, 15, 15, 2, 95, 59, 89, 36,
+			65, 37, 49, 39, 12, 55, 108, 50, 0, 0, 10, 67, 64, 130, 76, 83, 37, 60, 0, 25, 12, 201, 88, 83, 147, 44, 16, 133, 48, 145,
+			192, 15, 12, 201, 80, 18, 206, 20, 211, 69, 48, 145, 192, 15, 12, 201, 76, 176, 82, 65, 50, 78, 16, 145, 192, 15, 12, 201, 76, 83,
+			19, 44, 16, 133, 48, 145, 192, 15, 12, 201, 61, 97, 82, 76, 181, 69, 48, 145, 192, 15, 12, 201, 60, 213, 22, 37, 53, 5, 48, 145,
+			192, 15, 12, 201, 60, 212, 203, 72, 149, 133, 48, 145, 192, 15, 12, 201, 60, 212, 203, 36, 101, 5, 48, 145, 192, 15, 12, 201, 56, 81,
+			2, 73, 145, 5, 48, 145, 192, 15, 12, 201, 44, 81, 19, 60, 211, 69, 48, 145, 192, 15, 12, 201, 44, 19, 77, 21, 32, 84, 48, 145,
+			192, 15, 12, 201, 32, 84, 147, 44, 16, 133, 48, 145, 192, 15, 12, 201, 29, 81, 4, 60, 211, 69, 48, 145, 192, 15, 12, 201, 29, 32,
+			78, 28, 149, 133, 48, 145, 192, 15, 12, 201, 28, 83, 139, 20, 225, 5, 48, 145, 192, 15, 12, 201, 24, 244, 150, 20, 229, 5, 48, 145,
+			192, 15, 12, 201, 24, 244, 149, 17, 49, 69, 48, 145, 192, 15, 12, 201, 24, 244, 148, 73, 145, 5, 48, 145, 192, 15, 12, 201, 24, 244,
+			148, 60, 194, 197, 48, 145, 192, 15, 12, 201, 24, 244, 147, 45, 145, 5, 48, 145, 192, 15, 12, 201, 24, 244, 142, 20, 211, 69, 48, 145,
+			192, 15, 12, 201, 24, 244, 141, 5, 53, 5, 48, 145, 192, 15, 12, 201, 24, 244, 139, 5, 53, 5, 48, 145, 192, 15, 12, 201, 8, 241,
+			211, 80, 21, 133, 48, 145, 192, 15, 12, 201, 4, 68, 203, 36, 195, 5, 48, 145, 192, 15, 8, 197, 44, 20, 141, 36, 224, 15, 8, 197,
+			28, 84, 141, 4, 224, 15, 12, 2, 95, 58, 49, 6, 39, 12, 55, 108, 50, 0, 0, 10, 199, 76, 243, 4, 21, 34, 83, 80, 15, 10,
+			199, 65, 35, 203, 85, 34, 83, 80, 15, 10, 199, 56, 245, 133, 48, 194, 83, 80, 15, 10, 199, 52, 244, 134, 36, 226, 83, 80, 15, 10,
+			199, 52, 241, 5, 72, 226, 83, 80, 15, 10, 199, 52, 20, 207, 12, 130, 83, 80, 15, 10, 199, 52, 20, 203, 36, 226, 83, 80, 15, 10,
+			199, 44, 243, 80, 60, 226, 83, 80, 15, 10, 199, 44, 243, 77, 84, 226, 83, 80, 15, 10, 199, 32, 148, 212, 61, 34, 83, 80, 15, 10,
+			199, 32, 20, 144, 20, 226, 83, 80, 15, 10, 199, 24, 17, 207, 81, 66, 83, 80, 15, 10, 199, 12, 243, 21, 52, 226, 83, 80, 15, 18,
+			207, 81, 32, 78, 77, 53, 66, 77, 64, 78, 80, 144, 84, 36, 243, 128, 15, 8, 2, 95, 57, 50, 6, 111, 0, 0, 9, 198, 16, 81,
+			133, 57, 51, 210, 15, 9, 198, 44, 20, 129, 52, 83, 0, 15, 12, 201, 56, 81, 5, 72, 68, 159, 29, 66, 71, 15, 12, 201, 88, 81,
+			197, 80, 20, 137, 76, 209, 64, 15, 12, 201, 76, 82, 213, 48, 20, 137, 76, 209, 64, 15, 12, 201, 65, 84, 137, 80, 19, 137, 76, 209,
+			64, 15, 12, 201, 64, 244, 201, 80, 149, 137, 76, 209, 64, 15, 12, 201, 56, 81, 193, 80, 149, 137, 76, 209, 64, 15, 12, 201, 52, 147,
+			9, 80, 20, 137, 76, 209, 64, 15, 12, 201, 52, 85, 1, 8, 243, 9, 76, 209, 64, 15, 12, 201, 44, 243, 139, 72, 85, 9, 76, 209,
+			64, 15, 12, 201, 32, 81, 197, 52, 243, 137, 76, 209, 64, 15, 12, 201, 12, 83, 148, 72, 19, 9, 76, 209, 64, 15, 12, 201, 8, 243,
+			19, 40, 85, 137, 76, 209, 64, 15, 12, 201, 4, 36, 207, 49, 85, 9, 76, 209, 64, 15, 8, 197, 76, 145, 206, 4, 192, 15, 10, 2,
+			95, 56, 6, 125, 12, 72, 13, 0, 0, 9, 198, 4, 195, 5, 28, 244, 137, 15, 10, 199, 52, 81, 7, 165, 35, 9, 28, 15, 8, 197,
+			88, 19, 5, 57, 48, 15, 18, 2, 95, 63, 89, 48, 132, 34, 89, 65, 125, 55, 89, 47, 121, 57, 50, 0, 0, 11, 200, 65, 35, 203,
+			85, 32, 84, 61, 32, 15, 9, 198, 52, 85, 15, 16, 148, 212, 15, 9, 198, 76, 183, 212, 80, 84, 137, 15, 9, 198, 64, 167, 203, 44,
+			84, 137, 15, 10, 199, 45, 84, 129, 80, 244, 137, 20, 15, 10, 199, 28, 195, 211, 76, 20, 137, 20, 15, 0, 7, 196, 52, 147, 149, 80,
+			15, 9, 198, 65, 35, 212, 21, 66, 75, 15, 9, 198, 45, 35, 205, 5, 66, 75, 15, 0, 9, 198, 12, 130, 75, 4, 234, 83, 15, 13,
+			202, 20, 224, 217, 44, 195, 208, 124, 66, 83, 80, 15, 13, 202, 80, 147, 6, 61, 35, 1, 16, 83, 9, 28, 15, 13, 202, 29, 81, 19,
+			40, 19, 77, 21, 35, 9, 28, 15, 9, 198, 88, 83, 133, 80, 144, 78, 15, 9, 198, 76, 144, 201, 48, 144, 78, 15, 9, 198, 88, 19,
+			5, 72, 144, 78, 16, 9, 198, 52, 243, 132, 36, 19, 0, 15, 9, 198, 45, 96, 82, 80, 19, 0, 15, 8, 67, 76, 227, 194, 21, 0,
+			47, 0, 9, 198, 52, 19, 137, 13, 84, 133, 15, 9, 198, 88, 243, 20, 36, 122, 82, 15, 9, 198, 77, 1, 68, 37, 74, 82, 15, 9,
+			198, 76, 245, 84, 20, 234, 82, 15, 9, 198, 76, 181, 76, 65, 74, 82, 15, 9, 198, 72, 81, 1, 45, 74, 82, 15, 9, 198, 56, 149,
+			133, 48, 202, 82, 15, 9, 198, 37, 51, 204, 5, 74, 82, 15, 9, 198, 36, 225, 197, 56, 154, 82, 15, 9, 198, 29, 85, 133, 72, 234,
+			82, 15, 9, 198, 16, 148, 133, 45, 74, 82, 15, 9, 198, 16, 85, 1, 12, 138, 82, 15, 9, 198, 16, 84, 197, 73, 74, 82, 15, 9,
+			198, 16, 80, 129, 81, 74, 82, 15, 9, 198, 4, 227, 143, 56, 58, 82, 15, 12, 201, 84, 227, 210, 52, 19, 9, 80, 85, 0, 15, 12,
+			201, 48, 144, 133, 72, 19, 9, 80, 85, 0, 15, 9, 198, 45, 82, 143, 56, 84, 133, 15, 9, 198, 44, 20, 146, 36, 84, 133, 15, 9,
+			198, 29, 34, 76, 48, 84, 133, 15, 12, 201, 44, 148, 211, 20, 210, 83, 76, 84, 137, 15, 10, 199, 164, 179, 204, 60, 114, 83, 44, 15,
+			10, 199, 24, 20, 137, 77, 242, 83, 44, 15, 12, 201, 60, 36, 197, 73, 96, 84, 61, 34, 69, 15, 12, 201, 16, 148, 12, 60, 208, 84,
+			5, 34, 69, 15, 16, 70, 77, 2, 84, 24, 148, 133, 89, 48, 114, 47, 83, 136, 109, 0, 8, 197, 32, 83, 132, 21, 48, 76, 0, 7,
+			196, 48, 146, 233, 72, 15, 12, 201, 84, 226, 86, 21, 36, 193, 48, 148, 212, 15, 12, 201, 52, 84, 139, 4, 229, 9, 48, 148, 212, 15,
+			12, 201, 44, 243, 77, 4, 225, 9, 80, 148, 212, 15, 12, 201, 37, 51, 204, 5, 66, 79, 56, 148, 212, 15, 12, 201, 88, 243, 20, 36,
+			113, 82, 36, 225, 192, 15, 12, 201, 88, 83, 148, 36, 193, 82, 36, 225, 192, 15, 12, 201, 88, 16, 195, 36, 225, 82, 36, 225, 192, 15,
+			12, 201, 84, 68, 207, 73, 65, 82, 36, 225, 192, 15, 12, 201, 84, 68, 129, 56, 113, 82, 36, 225, 192, 15, 12, 201, 84, 68, 12, 4,
+			49, 82, 36, 225, 192, 15, 12, 201, 81, 33, 80, 4, 225, 82, 36, 225, 192, 15, 12, 201, 81, 32, 78, 12, 129, 82, 36, 225, 192, 15,
+			12, 201, 81, 32, 70, 36, 177, 82, 36, 225, 192, 15, 12, 201, 80, 244, 144, 20, 65, 82, 36, 225, 192, 15, 12, 201, 80, 83, 80, 21,
+			33, 82, 36, 225, 192, 15, 12, 201, 80, 20, 5, 81, 49, 82, 36, 225, 192, 15, 12, 201, 80, 19, 80, 60, 225, 82, 36, 225, 192, 15,
+			12, 201, 80, 16, 133, 48, 193, 82, 36, 225, 192, 15, 12, 201, 77, 147, 139, 61, 1, 82, 36, 225, 192, 15, 12, 201, 77, 80, 140, 36,
+			209, 82, 36, 225, 192, 15, 12, 201, 72, 85, 133, 73, 49, 82, 36, 225, 192, 15, 12, 201, 72, 85, 129, 49, 81, 82, 36, 225, 192, 15,
+			12, 201, 72, 85, 1, 72, 65, 82, 36, 225, 192, 15, 12, 201, 72, 82, 214, 37, 33, 82, 36, 225, 192, 15, 12, 201, 72, 81, 149, 56,
+			65, 82, 36, 225, 192, 15, 12, 201, 72, 80, 76, 37, 49, 82, 36, 225, 192, 15, 12, 201, 72, 21, 9, 60, 225, 82, 36, 225, 192, 15,
+			12, 201, 72, 19, 80, 60, 225, 82, 36, 225, 192, 15, 12, 201, 72, 17, 134, 36, 225, 82, 36, 225, 192, 15, 12, 201, 65, 80, 140, 36,
+			49, 82, 36, 225, 192, 15, 12, 201, 65, 35, 212, 20, 113, 82, 36, 225, 192, 15, 12, 201, 65, 35, 205, 61, 97, 82, 36, 225, 192, 15,
+			12, 201, 65, 35, 202, 36, 49, 82, 36, 225, 192, 15, 12, 201, 65, 35, 198, 4, 225, 82, 36, 225, 192, 15, 12, 201, 64, 83, 12, 21,
+			65, 82, 36, 225, 192, 15, 12, 201, 64, 19, 12, 21, 65, 82, 36, 225, 192, 15, 12, 201, 52, 245, 73, 48, 193, 82, 36, 225, 192, 15,
+			12, 201, 52, 245, 9, 60, 225, 82, 36, 225, 192, 15, 12, 201, 52, 243, 5, 77, 65, 82, 36, 225, 192, 15, 12, 201, 52, 241, 5, 48,
+			193, 82, 36, 225, 192, 15, 12, 201, 52, 20, 135, 36, 225, 82, 36, 225, 192, 15, 12, 201, 48, 146, 214, 36, 65, 82, 36, 225, 192, 15,
+			12, 201, 45, 85, 133, 73, 65, 82, 36, 225, 192, 15, 12, 201, 44, 243, 150, 60, 161, 82, 36, 225, 192, 15, 12, 201, 44, 243, 148, 85,
+			33, 82, 36, 225, 192, 15, 12, 201, 44, 243, 147, 84, 209, 82, 36, 225, 192, 15, 12, 201, 44, 243, 80, 60, 225, 82, 36, 225, 192, 15,
+			12, 201, 44, 243, 80, 36, 193, 82, 36, 225, 192, 15, 12, 201, 44, 243, 77, 5, 65, 82, 36, 225, 192, 15, 12, 201, 44, 242, 203, 21,
+			33, 82, 36, 225, 192, 15, 12, 201, 44, 19, 142, 20, 193, 82, 36, 225, 192, 15, 12, 201, 36, 229, 143, 49, 97, 82, 36, 225, 192, 15,
+			12, 201, 36, 229, 133, 77, 65, 82, 36, 225, 192, 15, 12, 201, 36, 229, 133, 73, 65, 82, 36, 225, 192, 15, 12, 201, 36, 228, 208, 36,
+			49, 82, 36, 225, 192, 15, 12, 201, 32, 20, 144, 84, 225, 82, 36, 225, 192, 15, 12, 201, 29, 32, 86, 37, 65, 82, 36, 225, 192, 15,
+			12, 201, 29, 32, 84, 36, 225, 82, 36, 225, 192, 15, 12, 201, 29, 32, 78, 84, 193, 82, 36, 225, 192, 15, 12, 201, 28, 19, 15, 65,
+			1, 82, 36, 225, 192, 15, 12, 201, 25, 37, 83, 81, 33, 82, 36, 225, 192, 15, 12, 201, 24, 244, 198, 5, 65, 82, 36, 225, 192, 15,
+			12, 201, 24, 244, 141, 84, 193, 82, 36, 225, 192, 15, 12, 201, 24, 244, 141, 5, 65, 82, 36, 225, 192, 15, 12, 201, 24, 19, 148, 5,
+			49, 82, 36, 225, 192, 15, 12, 201, 24, 18, 212, 85, 33, 82, 36, 225, 192, 15, 12, 201, 21, 128, 197, 73, 1, 82, 36, 225, 192, 15,
+			12, 201, 21, 96, 80, 61, 33, 82, 36, 225, 192, 15, 12, 201, 21, 50, 207, 73, 65, 82, 36, 225, 192, 15, 12, 201, 21, 35, 212, 37,
+			49, 82, 36, 225, 192, 15, 12, 201, 20, 225, 15, 77, 49, 82, 36, 225, 192, 15, 12, 201, 20, 208, 129, 48, 193, 82, 36, 225, 192, 15,
+			12, 201, 20, 180, 208, 20, 65, 82, 36, 225, 192, 15, 12, 201, 20, 180, 197, 45, 97, 82, 36, 225, 192, 15, 12, 201, 17, 84, 12, 36,
+			49, 82, 36, 225, 192, 15, 12, 201, 16, 85, 5, 45, 65, 82, 36, 225, 192, 15, 12, 201, 16, 85, 1, 48, 161, 82, 36, 225, 192, 15,
+			12, 201, 16, 84, 201, 28, 225, 82, 36, 225, 192, 15, 12, 201, 16, 84, 18, 5, 97, 82, 36, 225, 192, 15, 12, 201, 16, 84, 12, 61,
+			145, 82, 36, 225, 192, 15, 12, 201, 16, 84, 12, 4, 49, 82, 36, 225, 192, 15, 12, 201, 16, 83, 79, 57, 65, 82, 36, 225, 192, 15,
+			12, 201, 16, 83, 65, 76, 177, 82, 36, 225, 192, 15, 12, 201, 16, 83, 65, 72, 177, 82, 36, 225, 192, 15, 12, 201, 16, 82, 193, 57,
+			65, 82, 36, 225, 192, 15, 12, 201, 16, 81, 210, 4, 65, 82, 36, 225, 192, 15, 12, 201, 16, 81, 140, 61, 33, 82, 36, 225, 192, 15,
+			12, 201, 16, 19, 65, 76, 49, 82, 36, 225, 192, 15, 12, 201, 12, 83, 147, 85, 33, 82, 36, 225, 192, 15, 12, 201, 12, 83, 69, 57,
+			65, 82, 36, 225, 192, 15, 12, 201, 5, 69, 18, 5, 1, 82, 36, 225, 192, 15, 12, 201, 5, 69, 1, 12, 129, 82, 36, 225, 192, 15,
+			12, 201, 5, 52, 207, 73, 65, 82, 36, 225, 192, 15, 12, 201, 5, 52, 207, 12, 145, 82, 36, 225, 192, 15, 12, 201, 5, 4, 15, 73,
+			65, 82, 36, 225, 192, 15, 12, 201, 5, 4, 12, 36, 49, 82, 36, 225, 192, 15, 12, 201, 4, 227, 149, 48, 193, 82, 36, 225, 192, 15,
+			12, 201, 4, 227, 133, 45, 65, 82, 36, 225, 192, 15, 12, 201, 4, 225, 204, 37, 49, 82, 36, 225, 192, 15, 12, 201, 4, 197, 5, 72,
+			225, 82, 36, 225, 192, 15, 12, 201, 4, 181, 9, 60, 225, 82, 36, 225, 192, 15, 12, 201, 4, 113, 210, 20, 113, 82, 36, 225, 192, 15,
+			12, 201, 4, 68, 207, 72, 33, 82, 36, 225, 192, 15, 12, 201, 4, 68, 133, 77, 49, 82, 36, 225, 192, 15, 12, 201, 4, 48, 197, 65,
+			65, 82, 36, 225, 192, 15, 12, 201, 4, 36, 207, 49, 97, 82, 36, 225, 192, 15, 9, 198, 65, 39, 211, 80, 84, 133, 15, 9, 198, 65,
+			39, 205, 36, 84, 133, 15, 11, 200, 48, 241, 207, 65, 241, 9, 76, 176, 15, 9, 198, 76, 84, 1, 72, 21, 0, 15, 0, 9, 198, 49,
+			83, 73, 58, 148, 192, 15, 12, 201, 77, 147, 159, 77, 65, 84, 37, 50, 192, 15, 12, 201, 64, 19, 31, 60, 194, 84, 37, 50, 192, 15,
+			12, 201, 44, 147, 159, 77, 65, 84, 37, 50, 192, 15, 7, 196, 52, 84, 137, 80, 15, 7, 196, 76, 83, 129, 80, 15, 7, 196, 64, 20,
+			129, 80, 15, 21, 4, 95, 54, 88, 111, 47, 34, 6, 115, 89, 36, 50, 89, 47, 129, 84, 14, 50, 14, 0, 0, 15, 204, 64, 84, 134,
+			20, 181, 9, 8, 147, 9, 80, 85, 0, 15, 13, 202, 80, 242, 211, 36, 179, 204, 60, 114, 83, 44, 15, 13, 202, 60, 101, 1, 48, 211,
+			204, 60, 114, 83, 44, 15, 13, 202, 48, 20, 153, 56, 115, 204, 60, 114, 83, 44, 15, 13, 202, 24, 20, 141, 4, 179, 204, 60, 114, 83,
+			44, 15, 9, 198, 44, 244, 147, 61, 32, 78, 15, 9, 198, 76, 147, 85, 49, 64, 78, 16, 9, 198, 64, 83, 77, 36, 176, 78, 16, 9,
+			198, 24, 147, 9, 29, 32, 78, 16, 0, 9, 198, 76, 147, 133, 13, 84, 133, 15, 10, 199, 88, 243, 21, 52, 147, 169, 76, 15, 9, 198,
+			17, 148, 204, 20, 180, 201, 15, 12, 201, 88, 148, 148, 84, 244, 201, 80, 85, 0, 15, 12, 201, 64, 192, 83, 80, 144, 201, 80, 85, 0,
+			15, 12, 201, 44, 244, 132, 36, 19, 9, 80, 85, 0, 15, 12, 201, 44, 243, 150, 20, 180, 201, 80, 85, 0, 15, 12, 201, 44, 243, 148,
+			36, 229, 73, 80, 85, 0, 15, 12, 201, 44, 243, 142, 20, 180, 201, 80, 85, 0, 15, 12, 201, 44, 243, 134, 61, 35, 73, 80, 85, 0,
+			15, 12, 201, 25, 35, 206, 80, 19, 9, 80, 85, 0, 15, 12, 201, 20, 192, 83, 80, 144, 201, 80, 85, 0, 15, 12, 201, 4, 67, 73,
+			72, 19, 9, 80, 85, 0, 15, 12, 201, 80, 84, 212, 4, 209, 78, 80, 84, 133, 15, 9, 198, 64, 193, 84, 80, 84, 133, 15, 12, 201,
+			16, 147, 69, 57, 50, 79, 56, 84, 133, 15, 9, 198, 9, 34, 76, 48, 84, 133, 15, 9, 198, 4, 64, 80, 80, 84, 133, 15, 14, 203,
+			85, 66, 76, 37, 64, 82, 37, 53, 9, 76, 176, 15, 14, 203, 81, 34, 71, 60, 227, 205, 21, 68, 137, 76, 176, 15, 14, 203, 81, 32,
+			78, 77, 97, 83, 80, 149, 9, 76, 176, 15, 14, 203, 77, 84, 5, 72, 83, 12, 37, 5, 9, 76, 176, 15, 14, 203, 56, 243, 69, 56,
+			179, 1, 80, 244, 137, 76, 176, 15, 14, 203, 44, 243, 80, 20, 228, 193, 80, 244, 137, 76, 176, 15, 14, 203, 44, 192, 85, 77, 68, 143,
+			24, 240, 137, 76, 176, 15, 10, 199, 24, 244, 134, 165, 34, 83, 44, 15, 14, 203, 20, 181, 137, 48, 144, 146, 37, 53, 9, 76, 176, 15,
+			10, 199, 16, 151, 212, 21, 66, 83, 44, 15, 8, 197, 24, 16, 146, 36, 176, 15, 12, 201, 65, 35, 212, 20, 181, 15, 72, 21, 0, 15,
+			12, 201, 36, 228, 208, 20, 181, 15, 72, 21, 0, 15, 0, 10, 199, 72, 84, 5, 80, 149, 41, 72, 15, 10, 199, 64, 20, 212, 36, 50,
+			41, 72, 15, 10, 199, 44, 243, 12, 20, 181, 41, 72, 15, 10, 199, 16, 148, 208, 4, 50, 41, 72, 15, 9, 198, 77, 70, 76, 37, 53,
+			0, 15, 9, 198, 77, 66, 76, 37, 53, 0, 15, 9, 198, 45, 84, 147, 37, 53, 0, 15, 6, 195, 36, 67, 204, 15, 11, 200, 76, 17,
+			4, 84, 183, 201, 76, 176, 15, 10, 199, 76, 49, 78, 5, 34, 85, 52, 15, 10, 199, 52, 17, 206, 21, 50, 85, 52, 15, 0, 8, 197,
+			4, 224, 84, 60, 208, 15, 12, 201, 24, 244, 146, 124, 65, 82, 37, 50, 192, 15, 10, 199, 64, 245, 5, 57, 66, 65, 48, 15, 0, 15,
+			204, 77, 81, 199, 21, 53, 9, 8, 147, 9, 80, 85, 0, 15, 15, 204, 44, 243, 150, 21, 37, 9, 8, 147, 9, 80, 85, 0, 15, 15,
+			204, 21, 67, 143, 12, 83, 148, 72, 144, 201, 80, 85, 0, 15, 9, 198, 80, 16, 149, 37, 49, 82, 15, 9, 198, 77, 83, 6, 60, 225,
+			82, 15, 9, 198, 77, 80, 195, 20, 65, 82, 15, 9, 198, 77, 67, 204, 81, 49, 82, 15, 9, 198, 77, 66, 77, 84, 193, 82, 15, 9,
+			198, 73, 149, 13, 37, 49, 82, 15, 9, 198, 72, 85, 21, 72, 225, 82, 15, 9, 198, 60, 181, 18, 60, 161, 82, 15, 9, 198, 48, 144,
+			197, 57, 49, 82, 15, 9, 198, 45, 84, 148, 37, 49, 82, 15, 9, 198, 44, 20, 133, 77, 49, 82, 15, 9, 198, 37, 35, 206, 37, 49,
+			82, 15, 9, 198, 36, 228, 201, 57, 81, 82, 15, 9, 198, 36, 226, 204, 84, 65, 82, 15, 9, 198, 36, 226, 204, 36, 225, 82, 15, 9,
+			198, 36, 226, 193, 77, 49, 82, 15, 9, 198, 36, 225, 5, 45, 49, 82, 15, 9, 198, 32, 20, 141, 60, 225, 82, 15, 9, 198, 24, 197,
+			75, 81, 81, 82, 15, 9, 198, 5, 34, 193, 37, 49, 82, 15, 13, 202, 84, 226, 70, 61, 35, 73, 77, 66, 83, 44, 15, 13, 202, 80,
+			84, 141, 36, 227, 204, 60, 114, 83, 44, 15, 13, 202, 77, 84, 5, 72, 192, 84, 37, 98, 83, 44, 15, 13, 202, 77, 80, 147, 80, 19,
+			148, 37, 98, 83, 44, 15, 13, 202, 77, 65, 82, 20, 243, 69, 81, 34, 83, 44, 15, 13, 202, 76, 83, 147, 60, 211, 212, 61, 34, 83,
+			44, 15, 13, 202, 65, 35, 199, 72, 19, 77, 5, 66, 83, 44, 15, 13, 202, 64, 84, 147, 64, 82, 212, 37, 98, 83, 44, 15, 13, 202,
+			52, 83, 15, 17, 32, 77, 5, 66, 83, 44, 15, 13, 202, 44, 243, 134, 61, 35, 73, 77, 66, 83, 44, 15, 13, 202, 44, 243, 80, 61,
+			50, 84, 61, 34, 83, 44, 15, 13, 202, 44, 20, 9, 80, 19, 9, 77, 66, 83, 44, 15, 13, 202, 36, 229, 5, 72, 147, 73, 77, 66,
+			83, 44, 15, 13, 202, 36, 226, 214, 37, 50, 84, 61, 34, 83, 44, 15, 13, 202, 24, 83, 142, 61, 50, 193, 56, 66, 83, 44, 15, 13,
+			202, 12, 83, 148, 72, 19, 9, 77, 66, 83, 44, 15, 13, 202, 5, 4, 5, 48, 192, 84, 37, 98, 83, 44, 15, 12, 201, 36, 229, 5,
+			73, 33, 71, 57, 83, 64, 15, 12, 201, 65, 34, 86, 36, 193, 71, 37, 83, 64, 15, 12, 201, 44, 20, 18, 36, 99, 204, 37, 83, 64,
+			15, 12, 201, 36, 229, 5, 72, 209, 68, 37, 83, 64, 15, 12, 201, 36, 229, 5, 72, 197, 68, 37, 83, 64, 15, 12, 201, 4, 229, 5,
+			64, 83, 132, 37, 83, 64, 15, 7, 196, 48, 241, 201, 44, 15, 9, 198, 20, 180, 212, 72, 83, 64, 15, 0, 9, 198, 76, 147, 9, 44,
+			244, 197, 15, 12, 201, 72, 81, 201, 60, 224, 76, 37, 53, 0, 15, 12, 201, 20, 224, 197, 24, 19, 15, 29, 32, 77, 15, 9, 198, 77,
+			2, 78, 16, 84, 137, 15, 9, 198, 76, 227, 194, 8, 84, 137, 15, 9, 198, 52, 83, 129, 28, 84, 137, 15, 9, 198, 28, 20, 148, 56,
+			84, 137, 15, 14, 203, 48, 82, 211, 36, 179, 199, 72, 17, 137, 76, 176, 15, 14, 203, 45, 35, 205, 5, 67, 199, 72, 17, 137, 76, 176,
+			15, 14, 203, 44, 243, 15, 56, 144, 76, 37, 53, 9, 76, 176, 15, 8, 197, 64, 241, 84, 36, 176, 15, 8, 197, 56, 21, 84, 36, 176,
+			15, 0, 12, 201, 8, 18, 212, 21, 34, 79, 48, 241, 192, 15, 9, 198, 24, 20, 195, 37, 53, 0, 15, 6, 195, 88, 147, 204, 15, 6,
+			195, 24, 147, 204, 15, 10, 199, 125, 53, 5, 80, 146, 197, 72, 15, 8, 67, 12, 243, 204, 21, 0, 47, 0, 8, 197, 64, 241, 210, 60,
+			208, 15, 9, 198, 80, 83, 5, 24, 243, 128, 15, 13, 202, 44, 243, 80, 61, 50, 84, 36, 243, 133, 48, 15, 13, 202, 36, 228, 212, 37,
+			69, 84, 36, 243, 133, 48, 15, 10, 199, 28, 83, 132, 164, 33, 82, 36, 15, 9, 198, 41, 83, 135, 36, 19, 128, 15, 9, 198, 72, 19,
+			65, 16, 19, 128, 16, 7, 196, 52, 244, 129, 48, 15, 7, 196, 44, 244, 129, 48, 15, 0, 9, 198, 80, 83, 204, 60, 114, 64, 15, 9,
+			198, 72, 83, 204, 60, 114, 64, 15, 9, 198, 8, 147, 204, 60, 114, 64, 15, 15, 204, 36, 228, 212, 73, 83, 69, 57, 64, 82, 37, 83,
+			64, 15, 0, 6, 195, 16, 224, 64, 13, 6, 195, 16, 224, 64, 13, 9, 198, 76, 160, 83, 44, 84, 137, 15, 9, 198, 61, 32, 78, 28,
+			84, 137, 15, 9, 198, 48, 18, 197, 72, 84, 137, 15, 9, 198, 44, 195, 214, 56, 84, 137, 15, 9, 198, 29, 37, 66, 48, 84, 137, 15,
+			13, 202, 56, 85, 82, 5, 53, 5, 56, 146, 197, 72, 15, 0, 9, 198, 16, 148, 16, 20, 69, 84, 15, 9, 198, 65, 35, 195, 20, 229,
+			0, 15, 0, 13, 202, 76, 180, 149, 20, 36, 159, 44, 177, 82, 36, 15, 18, 207, 20, 180, 212, 72, 20, 1, 72, 192, 77, 20, 229, 1,
+			72, 148, 203, 15, 11, 200, 164, 181, 77, 20, 226, 75, 21, 32, 15, 9, 198, 65, 39, 196, 36, 176, 84, 15, 4, 193, 212, 43, 0, 9,
+			198, 25, 83, 139, 80, 147, 206, 15, 9, 198, 25, 34, 75, 80, 147, 206, 15, 9, 198, 21, 33, 75, 80, 147, 206, 15, 9, 198, 56, 82,
+			212, 5, 34, 78, 15, 0, 15, 70, 8, 17, 213, 21, 69, 5, 71, 118, 6, 81, 115, 47, 0, 9, 198, 24, 19, 73, 48, 151, 210, 15,
+			9, 198, 4, 181, 9, 60, 231, 210, 15, 11, 200, 44, 243, 148, 36, 225, 197, 57, 48, 15, 11, 200, 44, 243, 147, 37, 53, 5, 57, 48,
+			15, 0, 30, 76, 44, 243, 134, 37, 35, 65, 56, 65, 82, 56, 84, 192, 49, 109, 50, 83, 111, 34, 65, 6, 118, 50, 72, 108, 50, 14,
+			89, 0, 9, 198, 65, 39, 211, 20, 229, 0, 15, 9, 198, 20, 210, 84, 80, 83, 148, 15, 9, 198, 76, 147, 85, 48, 19, 148, 15, 9,
+			198, 5, 52, 9, 72, 19, 148, 15, 9, 198, 4, 67, 208, 80, 19, 148, 15, 13, 70, 41, 81, 197, 52, 83, 148, 21, 102, 114, 0, 47,
+			0, 7, 196, 88, 19, 9, 16, 15, 10, 199, 65, 39, 211, 36, 66, 85, 52, 15, 10, 199, 65, 39, 204, 84, 66, 85, 52, 15, 7, 196,
+			85, 39, 205, 36, 15, 0, 13, 202, 76, 82, 83, 52, 241, 210, 4, 98, 83, 44, 15, 13, 202, 60, 49, 65, 56, 241, 210, 4, 98, 83,
+			44, 15, 13, 202, 44, 20, 132, 36, 241, 210, 4, 98, 83, 44, 15, 13, 202, 8, 144, 140, 36, 241, 210, 4, 98, 83, 44, 15, 13, 202,
+			8, 19, 135, 48, 17, 5, 76, 130, 83, 44, 15, 12, 201, 4, 208, 84, 165, 34, 83, 80, 148, 203, 15, 9, 198, 64, 244, 212, 20, 194,
+			78, 15, 9, 198, 32, 20, 140, 20, 178, 78, 15, 9, 198, 20, 225, 15, 45, 34, 78, 15, 11, 200, 44, 243, 148, 36, 225, 197, 57, 64,
+			15, 11, 200, 44, 243, 147, 37, 53, 5, 57, 64, 15, 11, 200, 16, 84, 195, 20, 225, 5, 57, 64, 15, 10, 199, 77, 68, 137, 56, 113,
+			78, 76, 15, 10, 199, 16, 149, 133, 72, 113, 78, 76, 15, 11, 200, 65, 35, 212, 21, 53, 1, 57, 64, 15, 11, 200, 44, 243, 131, 21,
+			37, 1, 57, 64, 15, 11, 200, 44, 243, 66, 5, 69, 1, 57, 64, 15, 11, 200, 36, 229, 15, 48, 84, 129, 57, 64, 15, 11, 200, 4,
+			194, 77, 20, 229, 1, 57, 64, 15, 0, 6, 195, 20, 177, 192, 13, 10, 67, 36, 65, 64, 111, 72, 6, 114, 0, 12, 201, 16, 148, 203,
+			72, 85, 9, 60, 231, 210, 15, 9, 198, 21, 2, 76, 21, 4, 201, 15, 9, 198, 17, 148, 208, 21, 4, 201, 15, 10, 199, 164, 181, 77,
+			20, 226, 83, 44, 15, 10, 199, 65, 148, 133, 57, 242, 83, 44, 15, 10, 199, 28, 19, 9, 49, 242, 83, 44, 15, 10, 199, 21, 84, 143,
+			65, 242, 83, 44, 15, 0, 10, 199, 64, 83, 147, 36, 243, 159, 72, 15, 10, 199, 5, 85, 15, 72, 149, 31, 72, 15, 7, 196, 80, 18,
+			211, 36, 15, 11, 200, 65, 39, 211, 20, 229, 9, 76, 176, 15, 11, 200, 21, 2, 75, 85, 39, 201, 76, 176, 15, 11, 200, 4, 231, 211,
+			80, 85, 9, 76, 176, 15, 13, 202, 77, 84, 16, 61, 50, 84, 61, 34, 85, 52, 15, 13, 202, 16, 242, 213, 52, 83, 148, 5, 34, 85,
+			52, 15, 13, 202, 16, 148, 12, 60, 208, 84, 5, 34, 85, 52, 15, 6, 195, 20, 112, 76, 15, 0, 10, 67, 36, 177, 83, 35, 57, 49,
+			89, 0, 15, 204, 76, 17, 15, 52, 20, 207, 12, 130, 83, 80, 148, 203, 15, 15, 204, 65, 54, 75, 60, 194, 78, 29, 98, 83, 80, 148,
+			203, 15, 15, 204, 64, 84, 134, 20, 181, 9, 60, 226, 83, 80, 148, 203, 15, 15, 204, 44, 243, 77, 84, 226, 84, 5, 34, 83, 80, 148,
+			203, 15, 15, 204, 44, 192, 83, 76, 145, 137, 44, 21, 15, 72, 148, 203, 15, 15, 204, 36, 225, 9, 88, 145, 21, 4, 194, 83, 80, 148,
+			203, 15, 15, 204, 36, 212, 18, 21, 52, 201, 60, 226, 83, 80, 148, 203, 15, 15, 204, 20, 180, 208, 4, 228, 201, 60, 226, 83, 80, 148,
+			203, 15, 0, 9, 198, 52, 83, 1, 56, 243, 64, 15, 13, 202, 72, 244, 203, 36, 193, 5, 57, 50, 83, 44, 15, 13, 202, 45, 34, 77,
+			36, 227, 204, 60, 114, 83, 44, 15, 13, 202, 32, 84, 144, 21, 67, 204, 60, 114, 83, 44, 15, 11, 67, 20, 192, 78, 36, 55, 35, 50,
+			0, 16, 0, 19, 67, 88, 147, 0, 84, 114, 55, 15, 107, 6, 118, 0, 81, 104, 97, 118, 101, 32, 9, 198, 44, 192, 77, 52, 84, 137,
+			15, 9, 198, 44, 21, 5, 28, 244, 137, 15, 9, 198, 36, 67, 204, 5, 68, 137, 15, 9, 198, 24, 243, 137, 5, 68, 137, 15, 9, 198,
+			9, 38, 71, 28, 84, 137, 15, 14, 203, 77, 147, 132, 36, 176, 76, 37, 53, 9, 76, 176, 15, 14, 203, 52, 21, 5, 72, 144, 76, 37,
+			53, 9, 76, 176, 15, 14, 203, 52, 19, 137, 65, 83, 1, 80, 244, 137, 76, 176, 15, 14, 203, 44, 19, 5, 40, 67, 211, 44, 244, 9,
+			76, 176, 15, 14, 203, 36, 212, 5, 72, 144, 76, 37, 53, 9, 76, 176, 15, 13, 202, 26, 145, 5, 72, 19, 9, 77, 66, 83, 44, 15,
+			14, 203, 21, 2, 68, 20, 210, 79, 48, 241, 201, 76, 176, 15, 14, 203, 16, 144, 76, 20, 181, 15, 48, 241, 201, 76, 176, 15, 14, 203,
+			16, 85, 5, 72, 210, 78, 37, 53, 9, 76, 176, 15, 6, 195, 88, 147, 0, 76, 0, 13, 202, 64, 84, 144, 20, 225, 9, 45, 83, 31,
+			72, 15, 7, 196, 4, 96, 83, 36, 15, 12, 201, 80, 147, 18, 20, 115, 133, 48, 145, 192, 15, 15, 204, 44, 147, 133, 52, 21, 15, 29,
+			32, 70, 37, 50, 192, 15, 15, 204, 32, 148, 212, 61, 34, 79, 29, 32, 70, 37, 50, 192, 15, 6, 195, 4, 224, 76, 15, 0, 10, 199,
+			52, 146, 210, 61, 50, 207, 64, 15, 9, 198, 24, 202, 74, 80, 148, 212, 15, 7, 196, 80, 19, 73, 48, 15, 13, 68, 45, 32, 65, 48,
+			49, 34, 108, 12, 55, 0, 15, 0, 18, 66, 88, 144, 84, 37, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 10, 199, 34, 147,
+			147, 21, 34, 83, 80, 15, 13, 202, 88, 145, 5, 57, 50, 193, 8, 83, 9, 28, 15, 12, 201, 88, 145, 5, 8, 81, 223, 72, 194, 71,
+			15, 13, 202, 48, 145, 5, 57, 50, 193, 8, 83, 9, 28, 15, 12, 201, 24, 244, 136, 120, 33, 78, 80, 194, 71, 15, 16, 205, 76, 83,
+			147, 5, 66, 79, 56, 19, 9, 77, 66, 83, 44, 15, 16, 205, 25, 83, 132, 4, 209, 78, 80, 19, 9, 77, 66, 83, 44, 15, 12, 201,
+			72, 84, 18, 21, 52, 193, 48, 145, 64, 15, 12, 201, 48, 16, 143, 72, 21, 15, 72, 145, 64, 15, 12, 201, 4, 208, 149, 48, 21, 15,
+			72, 145, 64, 15, 12, 201, 76, 82, 211, 84, 19, 9, 76, 209, 64, 15, 12, 201, 72, 83, 1, 80, 149, 137, 76, 209, 64, 15, 8, 66,
+			88, 144, 84, 37, 0, 72, 0, 9, 198, 77, 68, 153, 28, 84, 137, 15, 9, 198, 76, 165, 83, 44, 84, 137, 15, 9, 198, 76, 19, 1,
+			80, 84, 137, 15, 9, 198, 45, 32, 68, 76, 84, 137, 15, 9, 198, 44, 226, 82, 44, 84, 137, 15, 10, 199, 77, 241, 22, 4, 227, 9,
+			28, 15, 15, 204, 20, 180, 208, 21, 34, 77, 20, 229, 1, 72, 149, 77, 15, 8, 197, 45, 84, 129, 57, 48, 15, 14, 2, 95, 95, 71,
+			6, 125, 50, 89, 72, 34, 121, 37, 0, 0, 7, 196, 64, 244, 233, 72, 15, 11, 200, 36, 228, 212, 73, 82, 212, 61, 32, 15, 12, 201,
+			77, 2, 82, 37, 69, 65, 48, 148, 212, 15, 12, 201, 76, 243, 78, 4, 208, 149, 48, 148, 212, 15, 12, 201, 72, 80, 197, 65, 66, 79,
+			56, 148, 212, 15, 12, 201, 44, 243, 12, 20, 181, 9, 88, 148, 212, 15, 12, 201, 44, 192, 82, 36, 225, 84, 80, 148, 212, 15, 12, 201,
+			32, 83, 12, 20, 32, 82, 16, 148, 212, 15, 12, 201, 21, 99, 204, 85, 66, 79, 56, 148, 212, 15, 10, 199, 36, 225, 149, 76, 244, 137,
+			20, 15, 10, 199, 77, 66, 80, 20, 225, 9, 20, 15, 10, 199, 76, 83, 73, 56, 20, 137, 20, 15, 10, 199, 76, 19, 129, 80, 244, 137,
+			20, 15, 10, 199, 44, 243, 80, 20, 225, 9, 20, 15, 9, 198, 48, 19, 73, 56, 21, 0, 15, 0, 7, 196, 76, 19, 21, 80, 15, 13,
+			202, 88, 147, 204, 60, 224, 197, 48, 194, 83, 80, 15, 13, 202, 88, 83, 148, 72, 147, 15, 45, 98, 83, 80, 15, 13, 202, 76, 17, 15,
+			52, 20, 207, 12, 130, 83, 80, 15, 13, 202, 64, 84, 139, 85, 52, 201, 60, 226, 83, 80, 15, 13, 202, 64, 20, 148, 36, 181, 76, 5,
+			34, 83, 80, 15, 13, 202, 52, 19, 149, 24, 18, 212, 85, 34, 83, 80, 15, 13, 202, 36, 225, 5, 80, 84, 141, 36, 226, 83, 80, 15,
+			13, 202, 25, 83, 139, 80, 147, 206, 4, 194, 83, 80, 15, 13, 202, 16, 242, 213, 52, 83, 148, 5, 34, 83, 80, 15, 7, 196, 36, 229,
+			73, 80, 15, 7, 196, 24, 16, 201, 80, 15, 7, 196, 48, 81, 193, 80, 15, 7, 196, 12, 149, 1, 80, 15, 11, 70, 72, 86, 78, 60,
+			193, 19, 21, 0, 47, 0, 19, 70, 16, 148, 212, 36, 179, 206, 72, 37, 89, 47, 37, 49, 6, 108, 50, 0, 15, 9, 198, 8, 85, 129,
+			81, 35, 206, 15, 9, 198, 41, 83, 139, 80, 147, 206, 15, 9, 198, 25, 32, 75, 80, 147, 206, 15, 10, 199, 24, 244, 141, 21, 34, 78,
+			28, 15, 9, 198, 48, 144, 133, 73, 66, 78, 15, 7, 196, 4, 113, 78, 76, 15, 9, 198, 40, 245, 82, 56, 19, 0, 15, 0, 7, 196,
+			24, 19, 105, 76, 15, 6, 195, 60, 74, 82, 15, 12, 201, 20, 180, 212, 72, 83, 73, 80, 85, 0, 15, 12, 201, 77, 6, 84, 76, 194,
+			75, 44, 84, 137, 15, 10, 199, 164, 179, 206, 60, 210, 83, 44, 15, 10, 199, 5, 66, 5, 57, 242, 83, 44, 15, 8, 197, 64, 245, 5,
+			57, 48, 15, 8, 197, 48, 144, 197, 57, 48, 15, 8, 197, 21, 52, 197, 57, 48, 15, 15, 70, 14, 38, 129, 56, 225, 64, 89, 114, 89,
+			6, 117, 50, 0, 0, 12, 201, 76, 176, 78, 16, 147, 129, 88, 148, 212, 15, 12, 201, 65, 35, 208, 4, 112, 78, 16, 148, 212, 15, 12,
+			201, 60, 36, 203, 85, 32, 78, 80, 148, 212, 15, 15, 204, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 148, 212, 15, 12, 201, 5, 96,
+			78, 80, 112, 82, 16, 148, 212, 15, 12, 201, 77, 66, 76, 37, 49, 82, 36, 225, 192, 15, 12, 201, 76, 145, 206, 4, 193, 82, 36, 225,
+			192, 15, 12, 201, 76, 50, 1, 81, 65, 82, 36, 225, 192, 15, 12, 201, 72, 82, 204, 4, 209, 82, 36, 225, 192, 15, 12, 201, 72, 81,
+			143, 72, 209, 82, 36, 225, 192, 15, 12, 201, 65, 35, 198, 36, 193, 82, 36, 225, 192, 15, 12, 201, 64, 241, 84, 37, 49, 82, 36, 225,
+			192, 15, 12, 201, 45, 32, 75, 20, 193, 82, 36, 225, 192, 15, 12, 201, 44, 19, 132, 37, 49, 82, 36, 225, 192, 15, 12, 201, 36, 225,
+			12, 60, 113, 82, 36, 225, 192, 15, 12, 201, 36, 67, 204, 37, 49, 82, 36, 225, 192, 15, 12, 201, 32, 84, 143, 37, 49, 82, 36, 225,
+			192, 15, 12, 201, 24, 16, 146, 36, 177, 82, 36, 225, 192, 15, 12, 201, 20, 112, 76, 37, 49, 82, 36, 225, 192, 15, 12, 201, 16, 148,
+			211, 20, 177, 82, 36, 225, 192, 15, 12, 201, 16, 85, 129, 49, 81, 82, 36, 225, 192, 15, 12, 201, 16, 84, 212, 73, 81, 82, 36, 225,
+			192, 15, 12, 201, 16, 82, 204, 4, 209, 82, 36, 225, 192, 15, 12, 201, 16, 81, 143, 72, 209, 82, 36, 225, 192, 15, 12, 201, 8, 149,
+			149, 4, 177, 82, 36, 225, 192, 15, 12, 201, 4, 227, 196, 37, 49, 82, 36, 225, 192, 15, 12, 201, 4, 113, 210, 5, 97, 82, 36, 225,
+			192, 15, 9, 198, 4, 225, 204, 60, 98, 76, 15, 0, 7, 196, 8, 17, 21, 80, 15, 7, 196, 76, 243, 5, 80, 15, 7, 196, 5, 67,
+			5, 80, 15, 13, 202, 77, 68, 149, 45, 69, 82, 4, 194, 83, 80, 15, 13, 202, 44, 243, 77, 84, 226, 84, 5, 34, 83, 80, 15, 13,
+			202, 36, 225, 21, 77, 68, 137, 4, 194, 83, 80, 15, 13, 202, 36, 225, 9, 88, 145, 21, 4, 194, 83, 80, 15, 13, 202, 36, 212, 18,
+			21, 52, 201, 60, 226, 83, 80, 15, 7, 196, 76, 130, 73, 80, 15, 7, 196, 4, 231, 205, 36, 15, 7, 196, 28, 17, 193, 80, 15, 12,
+			201, 76, 18, 210, 4, 209, 78, 80, 19, 0, 15, 0, 9, 198, 77, 81, 134, 50, 148, 128, 15, 9, 198, 64, 192, 78, 82, 148, 128, 15,
+			9, 198, 45, 33, 65, 82, 148, 128, 15, 9, 198, 16, 82, 193, 82, 148, 128, 15, 9, 198, 12, 148, 197, 50, 148, 128, 15, 14, 203, 20,
+			180, 208, 72, 84, 211, 36, 243, 137, 77, 64, 15, 13, 202, 80, 84, 141, 60, 70, 78, 4, 210, 83, 44, 15, 13, 202, 64, 83, 15, 64,
+			243, 142, 21, 50, 83, 44, 15, 13, 202, 28, 84, 143, 57, 67, 204, 60, 114, 83, 44, 15, 9, 198, 53, 84, 211, 20, 194, 78, 15, 0,
+			20, 67, 33, 83, 128, 107, 125, 50, 15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 14, 5, 119, 99, 39, 101, 114, 84, 6, 36,
+			89, 36, 108, 0, 12, 201, 36, 208, 133, 12, 147, 9, 80, 85, 0, 15, 12, 201, 4, 227, 210, 52, 19, 9, 80, 85, 0, 15, 12, 201,
+			77, 80, 138, 20, 181, 9, 88, 84, 133, 15, 12, 201, 29, 82, 76, 48, 245, 9, 56, 84, 133, 15, 12, 201, 25, 83, 132, 4, 209, 78,
+			80, 84, 133, 15, 12, 201, 12, 149, 137, 48, 148, 197, 72, 85, 0, 15, 6, 195, 33, 83, 128, 72, 0, 9, 198, 64, 145, 84, 37, 53,
+			0, 15, 11, 200, 125, 66, 79, 48, 241, 201, 76, 176, 15, 11, 200, 65, 241, 9, 5, 68, 137, 76, 176, 15, 11, 200, 65, 67, 204, 20,
+			215, 201, 76, 176, 15, 0, 13, 202, 4, 231, 211, 80, 84, 201, 60, 195, 199, 36, 15, 7, 2, 95, 101, 36, 12, 0, 0, 15, 204, 16,
+			83, 132, 72, 242, 210, 60, 227, 204, 60, 114, 64, 15, 9, 198, 77, 147, 80, 80, 243, 64, 15, 15, 204, 36, 225, 140, 20, 180, 201, 8,
+			147, 9, 80, 85, 0, 15, 9, 198, 72, 82, 70, 36, 49, 82, 15, 9, 198, 65, 35, 208, 4, 113, 82, 15, 9, 198, 52, 18, 211, 36,
+			209, 82, 15, 9, 198, 44, 243, 138, 84, 113, 82, 15, 9, 198, 21, 52, 1, 48, 145, 82, 15, 9, 198, 17, 84, 12, 36, 177, 82, 15,
+			9, 198, 8, 19, 19, 4, 209, 82, 15, 9, 198, 5, 68, 143, 24, 145, 82, 15, 12, 201, 164, 179, 206, 60, 209, 84, 72, 148, 203, 15,
+			13, 202, 76, 19, 147, 20, 211, 212, 61, 34, 83, 44, 15, 13, 202, 64, 244, 201, 80, 149, 137, 77, 66, 83, 44, 15, 13, 202, 64, 20,
+			129, 80, 17, 205, 5, 66, 83, 44, 15, 13, 202, 56, 81, 193, 80, 149, 137, 77, 66, 83, 44, 15, 13, 202, 52, 243, 143, 45, 35, 205,
+			5, 66, 83, 44, 15, 13, 202, 52, 147, 9, 80, 20, 137, 77, 66, 83, 44, 15, 13, 202, 44, 19, 15, 72, 147, 69, 81, 34, 83, 44,
+			15, 13, 202, 33, 145, 18, 60, 209, 75, 4, 226, 83, 44, 15, 13, 202, 32, 81, 197, 52, 243, 137, 77, 66, 83, 44, 15, 13, 202, 12,
+			128, 85, 88, 147, 137, 77, 66, 83, 44, 15, 9, 198, 21, 35, 212, 36, 177, 82, 15, 0, 10, 199, 124, 118, 80, 80, 243, 15, 28, 15,
+			14, 203, 52, 18, 193, 16, 19, 73, 76, 84, 137, 56, 112, 15, 14, 203, 44, 195, 210, 60, 99, 210, 52, 84, 137, 56, 112, 15, 14, 203,
+			36, 225, 5, 45, 49, 82, 12, 84, 137, 56, 112, 15, 14, 203, 36, 212, 12, 20, 209, 78, 80, 84, 137, 56, 112, 15, 14, 203, 25, 32,
+			84, 21, 35, 137, 76, 84, 137, 56, 112, 15, 14, 203, 20, 180, 212, 72, 20, 15, 48, 84, 137, 56, 112, 15, 14, 203, 4, 194, 207, 32,
+			243, 9, 76, 84, 137, 56, 112, 15, 14, 203, 4, 67, 73, 56, 148, 212, 72, 84, 137, 56, 112, 15, 9, 198, 29, 147, 129, 56, 68, 137,
+			15, 13, 202, 77, 68, 129, 80, 244, 198, 125, 34, 83, 44, 15, 14, 203, 76, 83, 22, 8, 147, 199, 72, 17, 137, 76, 176, 15, 14, 203,
+			36, 225, 140, 4, 211, 65, 80, 244, 137, 76, 176, 15, 14, 203, 33, 145, 18, 60, 83, 5, 45, 68, 137, 76, 176, 15, 14, 203, 8, 243,
+			129, 64, 20, 148, 37, 53, 9, 76, 176, 15, 14, 203, 5, 37, 9, 45, 83, 1, 80, 244, 137, 76, 176, 15, 0, 9, 198, 72, 80, 76,
+			37, 53, 0, 15, 9, 198, 17, 80, 76, 37, 53, 0, 15, 9, 198, 16, 83, 148, 37, 53, 0, 15, 9, 198, 12, 19, 80, 37, 53, 0,
+			15, 15, 204, 84, 226, 86, 21, 36, 193, 48, 148, 212, 37, 50, 192, 15, 15, 204, 80, 161, 75, 44, 244, 204, 61, 96, 75, 37, 50, 192,
+			15, 15, 204, 76, 176, 78, 16, 147, 129, 88, 148, 212, 37, 50, 192, 15, 15, 204, 65, 35, 208, 4, 112, 78, 16, 148, 212, 37, 50, 192,
+			15, 15, 204, 44, 243, 12, 20, 181, 9, 88, 148, 212, 37, 50, 192, 15, 15, 204, 24, 244, 148, 36, 98, 75, 5, 67, 210, 37, 50, 192,
+			15, 15, 204, 24, 20, 141, 4, 179, 199, 56, 244, 212, 37, 50, 192, 15, 15, 204, 21, 99, 204, 85, 66, 79, 56, 148, 212, 37, 50, 192,
+			15, 0, 15, 5, 119, 99, 39, 101, 116, 84, 6, 36, 89, 36, 13, 72, 0, 7, 196, 5, 4, 5, 48, 15, 15, 204, 44, 243, 77, 84,
+			224, 76, 64, 243, 9, 80, 148, 203, 15, 7, 196, 73, 84, 129, 48, 15, 7, 196, 8, 20, 193, 48, 15, 7, 2, 95, 105, 37, 12, 0,
+			0, 15, 204, 20, 180, 201, 77, 65, 78, 80, 144, 76, 37, 53, 0, 15, 11, 200, 52, 85, 18, 61, 3, 204, 37, 64, 15, 11, 200, 44,
+			244, 205, 61, 3, 204, 37, 64, 15, 0, 6, 195, 76, 244, 192, 13, 12, 201, 77, 147, 132, 36, 176, 76, 37, 53, 0, 15, 12, 201, 52,
+			21, 5, 72, 144, 76, 37, 53, 0, 15, 12, 201, 36, 212, 5, 72, 144, 76, 37, 53, 0, 15, 12, 201, 21, 52, 5, 72, 19, 148, 37,
+			53, 0, 15, 11, 200, 50, 148, 199, 124, 225, 197, 72, 144, 15, 9, 198, 28, 84, 137, 5, 68, 137, 15, 13, 202, 64, 84, 137, 64, 21,
+			5, 80, 146, 197, 72, 15, 0, 7, 196, 76, 19, 31, 72, 15, 9, 198, 77, 103, 210, 52, 84, 137, 15, 9, 198, 76, 215, 148, 80, 84,
+			137, 15, 9, 198, 76, 183, 206, 16, 84, 137, 15, 10, 199, 33, 244, 133, 80, 146, 197, 72, 15, 0, 10, 199, 77, 83, 132, 9, 147, 137,
+			80, 15, 10, 199, 64, 193, 66, 37, 48, 201, 80, 15, 10, 199, 44, 243, 150, 21, 37, 9, 80, 15, 10, 199, 20, 180, 208, 48, 144, 201,
+			80, 15, 0, 15, 204, 36, 229, 5, 48, 193, 75, 81, 80, 76, 37, 53, 0, 15, 12, 201, 72, 17, 9, 60, 66, 82, 36, 113, 82, 15,
+			8, 197, 64, 84, 134, 36, 64, 15, 8, 197, 52, 244, 130, 36, 64, 15, 8, 197, 48, 146, 214, 36, 64, 15, 8, 197, 44, 20, 130, 36,
+			64, 15, 8, 197, 13, 144, 78, 36, 64, 15, 14, 203, 56, 21, 18, 37, 83, 66, 20, 230, 143, 5, 64, 15, 0, 9, 198, 64, 82, 213,
+			56, 151, 210, 15, 9, 198, 45, 84, 148, 60, 148, 201, 15, 12, 201, 16, 147, 5, 81, 64, 78, 80, 84, 137, 15, 13, 202, 32, 84, 141,
+			20, 225, 85, 80, 146, 197, 72, 15, 10, 199, 5, 32, 71, 60, 226, 69, 56, 15, 10, 199, 4, 224, 84, 60, 194, 69, 56, 15, 10, 199,
+			4, 34, 200, 5, 50, 69, 56, 15, 10, 199, 44, 21, 1, 52, 20, 129, 56, 16, 0, 9, 198, 52, 21, 5, 72, 145, 76, 15, 9, 198,
+			80, 20, 129, 57, 65, 76, 15, 9, 198, 45, 83, 20, 85, 33, 76, 15, 9, 198, 41, 80, 137, 49, 245, 77, 15, 9, 198, 81, 32, 83,
+			76, 83, 148, 15, 9, 198, 77, 69, 68, 20, 229, 0, 15, 9, 198, 36, 212, 15, 80, 83, 148, 15, 9, 198, 36, 211, 65, 56, 83, 148,
+			15, 9, 198, 24, 147, 1, 52, 83, 148, 15, 9, 198, 4, 35, 206, 56, 83, 148, 15, 9, 198, 24, 16, 149, 48, 19, 148, 15, 9, 198,
+			20, 210, 71, 72, 19, 148, 15, 9, 198, 17, 80, 140, 20, 19, 148, 15, 9, 198, 16, 243, 73, 56, 19, 148, 15, 9, 198, 16, 80, 149,
+			80, 19, 148, 15, 9, 198, 4, 208, 149, 48, 19, 148, 15, 0, 8, 197, 76, 176, 76, 125, 32, 15, 8, 197, 8, 84, 214, 125, 32, 15,
+			11, 200, 77, 147, 132, 21, 34, 78, 16, 80, 15, 11, 200, 65, 35, 214, 77, 66, 78, 16, 80, 15, 11, 200, 41, 81, 76, 76, 210, 78,
+			16, 80, 15, 9, 198, 32, 20, 141, 60, 226, 75, 15, 14, 4, 95, 104, 97, 99, 107, 6, 35, 76, 4, 115, 49, 0, 0, 11, 200, 44,
+			21, 15, 16, 244, 203, 61, 0, 15, 11, 200, 28, 20, 212, 72, 244, 203, 61, 0, 15, 11, 200, 65, 39, 204, 36, 210, 78, 125, 32, 15,
+			13, 202, 77, 84, 146, 20, 19, 9, 77, 66, 83, 44, 15, 13, 202, 77, 68, 143, 8, 244, 203, 61, 2, 83, 44, 15, 13, 202, 77, 65,
+			82, 20, 244, 203, 61, 2, 83, 44, 15, 13, 202, 72, 81, 143, 72, 208, 84, 61, 34, 83, 44, 15, 13, 202, 56, 85, 84, 72, 19, 9,
+			77, 66, 83, 44, 15, 13, 202, 56, 21, 21, 72, 19, 9, 77, 66, 83, 44, 15, 13, 202, 48, 144, 133, 72, 19, 9, 77, 66, 83, 44,
+			15, 13, 202, 44, 243, 139, 72, 85, 9, 77, 66, 83, 44, 15, 13, 202, 44, 243, 80, 36, 192, 84, 61, 34, 83, 44, 15, 13, 202, 44,
+			243, 15, 72, 147, 69, 81, 34, 83, 44, 15, 13, 202, 40, 245, 82, 56, 19, 9, 77, 66, 83, 44, 15, 13, 202, 24, 192, 71, 20, 195,
+			1, 57, 66, 83, 44, 15, 13, 202, 21, 2, 71, 72, 19, 77, 5, 66, 83, 44, 15, 13, 202, 16, 82, 204, 4, 208, 84, 61, 34, 83,
+			44, 15, 13, 202, 9, 84, 133, 5, 82, 210, 5, 66, 83, 44, 15, 13, 202, 8, 83, 12, 21, 68, 137, 77, 66, 83, 44, 15, 13, 202,
+			4, 36, 207, 49, 85, 9, 77, 66, 83, 44, 15, 8, 197, 16, 147, 216, 36, 64, 15, 13, 202, 44, 244, 146, 21, 52, 15, 56, 65, 78,
+			76, 15, 0, 12, 201, 72, 85, 143, 49, 85, 9, 60, 231, 210, 15, 12, 201, 44, 243, 77, 37, 52, 201, 60, 231, 210, 15, 9, 198, 52,
+			85, 18, 60, 227, 205, 15, 9, 198, 44, 243, 132, 100, 195, 205, 15, 10, 199, 46, 145, 197, 57, 50, 83, 44, 15, 7, 196, 44, 19, 137,
+			56, 15, 9, 198, 5, 85, 15, 56, 243, 73, 15, 10, 199, 76, 20, 132, 36, 226, 69, 56, 15, 10, 199, 52, 19, 12, 61, 32, 193, 56,
+			15, 12, 201, 77, 80, 132, 60, 210, 78, 4, 229, 0, 15, 0, 8, 197, 17, 32, 71, 60, 224, 15, 15, 204, 44, 243, 80, 48, 83, 69,
+			57, 64, 82, 37, 65, 84, 15, 9, 198, 56, 245, 1, 72, 145, 76, 15, 12, 201, 52, 81, 9, 44, 19, 69, 57, 65, 76, 15, 12, 201,
+			36, 228, 212, 73, 83, 69, 57, 65, 76, 15, 8, 197, 104, 80, 200, 36, 224, 15, 11, 200, 36, 225, 15, 56, 84, 201, 20, 224, 15, 11,
+			200, 5, 84, 212, 72, 19, 9, 20, 224, 15, 11, 200, 4, 225, 1, 49, 84, 201, 20, 224, 15, 11, 200, 76, 192, 71, 20, 196, 197, 4,
+			224, 15, 11, 200, 32, 244, 147, 20, 228, 201, 4, 224, 15, 12, 201, 36, 228, 212, 73, 83, 69, 57, 64, 76, 15, 0, 11, 200, 76, 81,
+			9, 52, 83, 148, 125, 32, 15, 11, 200, 65, 35, 208, 72, 145, 84, 125, 32, 15, 11, 200, 64, 20, 148, 36, 181, 76, 125, 32, 15, 11,
+			200, 52, 147, 12, 36, 20, 132, 125, 32, 15, 11, 200, 44, 243, 77, 84, 226, 84, 125, 32, 15, 11, 200, 25, 83, 139, 80, 147, 206, 125,
+			32, 15, 9, 198, 48, 80, 133, 56, 66, 71, 15, 9, 198, 25, 34, 77, 60, 66, 71, 15, 9, 198, 24, 147, 149, 72, 194, 71, 15, 9,
+			198, 24, 145, 213, 72, 194, 71, 15, 9, 198, 4, 101, 5, 56, 194, 71, 15, 13, 202, 20, 180, 208, 21, 34, 77, 20, 229, 1, 48, 15,
+			13, 202, 16, 84, 1, 73, 65, 77, 20, 229, 1, 48, 15, 0, 12, 201, 72, 85, 77, 5, 67, 204, 60, 114, 64, 15, 12, 201, 52, 85,
+			5, 61, 35, 204, 60, 114, 64, 15, 12, 201, 16, 84, 141, 5, 67, 204, 60, 114, 64, 15, 12, 201, 9, 35, 205, 5, 67, 204, 60, 114,
+			64, 15, 12, 201, 4, 229, 18, 61, 3, 204, 60, 114, 64, 15, 12, 201, 4, 195, 5, 72, 115, 204, 60, 114, 64, 15, 12, 201, 81, 32,
+			78, 76, 210, 83, 76, 147, 206, 15, 12, 201, 72, 21, 9, 24, 146, 193, 80, 147, 206, 15, 12, 201, 61, 33, 193, 56, 148, 193, 80, 147,
+			206, 15, 12, 201, 52, 241, 9, 24, 146, 193, 80, 147, 206, 15, 12, 201, 44, 243, 148, 72, 144, 149, 80, 147, 206, 15, 12, 201, 44, 243,
+			134, 37, 50, 193, 80, 147, 206, 15, 12, 201, 44, 243, 134, 37, 35, 65, 80, 147, 206, 15, 12, 201, 44, 241, 9, 24, 146, 193, 80, 147,
+			206, 15, 12, 201, 44, 19, 143, 56, 148, 193, 80, 147, 206, 15, 12, 201, 36, 228, 212, 4, 195, 1, 80, 147, 206, 15, 12, 201, 16, 84,
+			212, 36, 195, 1, 80, 147, 206, 15, 12, 201, 4, 229, 9, 12, 148, 1, 80, 147, 206, 15, 11, 200, 76, 82, 214, 20, 229, 9, 20, 192,
+			15, 11, 200, 44, 243, 77, 21, 32, 201, 20, 192, 15, 11, 200, 36, 225, 21, 77, 68, 137, 20, 192, 15, 11, 200, 72, 83, 1, 80, 147,
+			206, 20, 192, 15, 8, 197, 52, 243, 135, 60, 192, 15, 8, 197, 80, 19, 148, 4, 192, 15, 8, 197, 16, 83, 148, 4, 192, 15, 0, 7,
+			196, 24, 16, 207, 56, 15, 7, 196, 81, 145, 143, 56, 15, 13, 202, 36, 225, 15, 21, 84, 143, 65, 242, 83, 44, 15, 9, 198, 44, 243,
+			139, 100, 194, 69, 15, 9, 198, 29, 147, 78, 5, 50, 69, 15, 9, 198, 64, 197, 84, 60, 226, 69, 15, 9, 198, 44, 243, 147, 36, 194,
+			69, 15, 9, 198, 29, 147, 78, 5, 50, 69, 15, 7, 196, 13, 80, 129, 56, 15, 10, 199, 80, 84, 141, 60, 116, 129, 24, 15, 10, 199,
+			76, 49, 78, 60, 116, 129, 24, 15, 10, 199, 72, 84, 18, 60, 116, 129, 24, 15, 10, 199, 64, 244, 142, 60, 116, 129, 24, 15, 10, 199,
+			64, 19, 148, 60, 116, 129, 24, 15, 10, 199, 44, 244, 133, 60, 116, 129, 24, 15, 10, 199, 44, 20, 148, 60, 116, 129, 24, 15, 10, 199,
+			4, 225, 201, 60, 116, 129, 24, 15, 10, 199, 44, 243, 150, 21, 36, 193, 8, 15, 10, 199, 44, 243, 70, 61, 37, 1, 8, 15, 0, 7,
+			196, 45, 33, 84, 36, 15, 12, 201, 20, 180, 212, 72, 21, 129, 28, 19, 148, 15, 0, 10, 199, 77, 65, 84, 61, 50, 207, 64, 15, 12,
+			201, 81, 32, 78, 77, 3, 210, 80, 16, 128, 15, 0, 9, 198, 72, 243, 139, 20, 67, 210, 15, 9, 198, 65, 35, 205, 61, 67, 210, 15,
+			9, 198, 44, 243, 132, 37, 67, 210, 15, 9, 198, 25, 83, 132, 5, 67, 210, 15, 9, 198, 16, 146, 212, 5, 67, 210, 15, 9, 198, 4,
+			226, 77, 5, 67, 210, 15, 9, 198, 16, 80, 201, 8, 83, 0, 15, 8, 197, 76, 18, 210, 4, 192, 15, 0, 7, 196, 64, 20, 133, 72,
+			15, 10, 199, 77, 65, 78, 60, 116, 129, 24, 15, 10, 199, 72, 17, 9, 60, 116, 129, 24, 15, 10, 199, 44, 19, 12, 36, 116, 129, 24,
+			15, 7, 196, 4, 116, 129, 72, 15, 10, 199, 65, 32, 75, 80, 146, 193, 8, 15, 10, 199, 4, 211, 210, 80, 148, 193, 8, 15, 0, 9,
+			198, 16, 167, 214, 48, 84, 137, 15, 0, 13, 202, 65, 35, 212, 20, 181, 9, 60, 226, 83, 80, 15, 13, 202, 64, 84, 134, 20, 181, 9,
+			60, 226, 83, 80, 15, 13, 202, 16, 242, 213, 52, 83, 148, 4, 194, 83, 80, 15, 12, 201, 77, 80, 147, 80, 19, 148, 36, 83, 0, 15,
+			9, 198, 80, 21, 15, 88, 84, 128, 15, 9, 198, 76, 242, 71, 56, 84, 128, 15, 9, 198, 72, 85, 9, 72, 84, 128, 15, 9, 198, 20,
+			210, 71, 72, 84, 128, 15, 9, 198, 16, 81, 137, 48, 84, 128, 15, 9, 198, 12, 128, 83, 76, 84, 128, 15, 9, 198, 8, 243, 137, 80,
+			84, 128, 15, 7, 196, 32, 19, 73, 80, 15, 0, 9, 198, 52, 83, 15, 16, 154, 83, 15, 9, 198, 52, 148, 212, 72, 19, 0, 15, 0,
+			7, 196, 16, 243, 143, 72, 15, 9, 198, 45, 35, 205, 61, 51, 205, 15, 9, 198, 44, 243, 77, 84, 227, 205, 15, 12, 201, 44, 192, 77,
+			64, 133, 71, 28, 84, 137, 15, 7, 196, 8, 150, 129, 72, 15, 0, 10, 67, 36, 65, 84, 111, 72, 6, 114, 0, 7, 196, 24, 21, 169,
+			72, 15, 9, 198, 76, 82, 214, 20, 228, 192, 15, 9, 198, 72, 80, 71, 20, 228, 192, 15, 0, 9, 198, 21, 2, 83, 44, 244, 0, 15,
+			9, 198, 65, 33, 84, 38, 148, 192, 15, 9, 198, 16, 83, 9, 74, 148, 192, 15, 9, 198, 72, 81, 213, 48, 84, 128, 15, 9, 198, 21,
+			53, 9, 52, 84, 128, 15, 9, 198, 16, 84, 21, 80, 84, 128, 15, 9, 198, 4, 212, 21, 80, 84, 128, 15, 7, 196, 48, 147, 73, 80,
+			15, 9, 198, 65, 39, 211, 20, 226, 76, 15, 7, 196, 53, 83, 1, 80, 15, 9, 5, 95, 48, 97, 110, 100, 108, 0, 0, 9, 198, 52,
+			19, 132, 5, 34, 78, 15, 0, 12, 201, 8, 83, 133, 24, 144, 197, 72, 85, 0, 68, 12, 201, 44, 243, 80, 48, 144, 197, 72, 85, 0,
+			15, 12, 201, 8, 83, 133, 24, 144, 197, 72, 85, 0, 15, 0, 9, 198, 64, 245, 5, 57, 66, 76, 15, 11, 200, 56, 80, 80, 60, 194,
+			84, 4, 224, 15, 0, 11, 200, 65, 39, 212, 20, 229, 9, 165, 48, 15, 11, 200, 65, 35, 214, 60, 176, 84, 165, 32, 15, 11, 200, 17,
+			32, 77, 5, 69, 82, 28, 144, 15, 7, 196, 48, 246, 65, 48, 15, 0, 12, 201, 80, 242, 211, 36, 179, 204, 60, 114, 64, 15, 12, 201,
+			45, 34, 77, 36, 227, 204, 60, 114, 64, 15, 12, 201, 44, 194, 77, 5, 67, 204, 60, 114, 64, 15, 12, 201, 44, 147, 133, 76, 147, 204,
+			60, 114, 64, 15, 12, 201, 32, 84, 144, 21, 67, 204, 60, 114, 64, 15, 26, 73, 64, 21, 18, 60, 230, 77, 36, 179, 206, 48, 117, 47,
+			34, 39, 50, 6, 129, 65, 37, 49, 108, 50, 0, 15, 11, 200, 5, 37, 9, 24, 144, 201, 20, 192, 15, 8, 197, 80, 18, 212, 36, 192,
+			15, 7, 196, 25, 148, 201, 44, 15, 15, 204, 16, 83, 73, 56, 84, 129, 48, 148, 197, 72, 85, 0, 15, 0, 23, 72, 4, 98, 67, 36,
+			243, 129, 16, 240, 118, 83, 111, 89, 57, 124, 6, 50, 121, 12, 72, 39, 0, 12, 201, 56, 21, 9, 60, 224, 76, 37, 53, 0, 15, 10,
+			199, 77, 84, 208, 20, 225, 5, 72, 15, 10, 199, 72, 84, 208, 60, 225, 5, 72, 15, 10, 199, 72, 80, 75, 80, 149, 133, 72, 15, 10,
+			199, 64, 148, 149, 21, 69, 5, 72, 15, 10, 199, 64, 84, 141, 37, 69, 5, 72, 15, 10, 199, 48, 243, 66, 5, 33, 5, 72, 15, 10,
+			199, 44, 243, 150, 21, 33, 197, 72, 15, 10, 199, 44, 243, 147, 84, 197, 5, 72, 15, 10, 199, 44, 243, 77, 20, 229, 5, 72, 15, 10,
+			199, 44, 243, 77, 4, 225, 5, 72, 15, 10, 199, 44, 243, 16, 61, 37, 5, 72, 15, 10, 199, 36, 229, 5, 72, 17, 197, 72, 15, 10,
+			199, 36, 212, 12, 4, 229, 5, 72, 15, 10, 199, 16, 148, 208, 21, 33, 197, 72, 15, 10, 199, 8, 243, 66, 5, 33, 5, 72, 15, 10,
+			199, 20, 180, 197, 53, 3, 1, 72, 15, 0, 8, 197, 16, 144, 75, 60, 224, 15, 8, 197, 88, 148, 201, 60, 224, 15, 13, 202, 60, 36,
+			197, 73, 96, 84, 61, 34, 85, 52, 15, 8, 197, 48, 21, 18, 36, 224, 15, 8, 197, 12, 149, 18, 36, 224, 15, 9, 198, 88, 146, 193,
+			72, 144, 84, 15, 9, 198, 77, 84, 146, 60, 112, 84, 15, 9, 198, 36, 229, 18, 36, 176, 84, 15, 0, 7, 195, 44, 101, 75, 13, 42,
+			11, 200, 77, 81, 134, 37, 48, 78, 12, 80, 15, 11, 200, 44, 243, 134, 21, 33, 78, 12, 80, 15, 11, 200, 44, 243, 80, 21, 65, 78,
+			12, 80, 15, 11, 200, 16, 148, 133, 45, 68, 137, 12, 80, 15, 0, 12, 201, 64, 19, 148, 60, 210, 77, 36, 177, 82, 15, 12, 201, 20,
+			115, 195, 20, 229, 18, 36, 177, 82, 15, 8, 197, 65, 35, 198, 36, 192, 15, 11, 200, 64, 21, 18, 36, 20, 139, 5, 64, 15, 8, 197,
+			88, 84, 130, 4, 192, 15, 0, 12, 201, 72, 21, 9, 60, 224, 76, 37, 53, 0, 15, 11, 200, 76, 84, 137, 165, 50, 84, 21, 64, 15,
+			11, 200, 60, 36, 203, 164, 226, 84, 21, 64, 15, 10, 199, 88, 84, 137, 24, 144, 197, 72, 15, 10, 199, 81, 32, 86, 21, 36, 197, 72,
+			15, 10, 199, 76, 81, 205, 20, 229, 5, 72, 15, 10, 199, 72, 83, 66, 85, 36, 197, 72, 15, 10, 199, 72, 83, 1, 80, 149, 133, 72,
+			15, 10, 199, 72, 80, 201, 16, 149, 133, 72, 15, 10, 199, 64, 16, 201, 24, 144, 197, 72, 15, 10, 199, 56, 22, 137, 24, 144, 197, 72,
+			15, 10, 199, 52, 19, 137, 13, 84, 133, 72, 15, 10, 199, 44, 243, 148, 36, 229, 69, 72, 15, 10, 199, 44, 243, 134, 84, 225, 5, 72,
+			15, 10, 199, 44, 243, 77, 37, 69, 5, 72, 15, 10, 199, 44, 243, 15, 56, 148, 197, 72, 15, 10, 199, 44, 21, 15, 48, 144, 197, 72,
+			15, 10, 199, 36, 70, 76, 48, 148, 197, 72, 15, 10, 199, 20, 180, 212, 20, 225, 5, 72, 15, 10, 199, 20, 180, 208, 61, 37, 5, 72,
+			15, 10, 199, 20, 180, 208, 48, 144, 197, 72, 15, 10, 199, 20, 180, 208, 4, 225, 5, 72, 15, 10, 199, 16, 145, 134, 84, 225, 5, 72,
+			15, 10, 199, 16, 80, 197, 48, 84, 133, 72, 15, 10, 199, 8, 245, 1, 56, 148, 197, 72, 15, 10, 199, 5, 84, 203, 84, 197, 5, 72,
+			15, 10, 199, 5, 69, 18, 36, 37, 69, 72, 15, 10, 199, 4, 229, 9, 44, 148, 197, 72, 15, 10, 199, 4, 48, 197, 48, 84, 133, 72,
+			15, 7, 196, 56, 245, 1, 8, 15, 7, 196, 53, 85, 1, 8, 15, 0, 22, 68, 28, 84, 142, 20, 81, 6, 115, 34, 50, 112, 15, 107,
+			117, 0, 81, 104, 97, 118, 101, 32, 12, 201, 81, 32, 78, 77, 3, 1, 57, 64, 84, 15, 9, 198, 52, 145, 210, 4, 229, 0, 15, 0,
+			10, 199, 20, 180, 203, 88, 148, 201, 80, 15, 9, 198, 17, 32, 77, 5, 66, 75, 15, 0, 9, 198, 80, 149, 21, 49, 244, 128, 15, 9,
+			198, 64, 244, 21, 49, 244, 128, 15, 14, 203, 72, 84, 212, 72, 146, 212, 37, 98, 84, 21, 64, 15, 14, 203, 72, 17, 9, 60, 18, 212,
+			37, 98, 84, 21, 64, 15, 14, 203, 65, 35, 214, 36, 228, 201, 4, 194, 84, 21, 64, 15, 14, 203, 64, 20, 129, 16, 242, 211, 4, 194,
+			84, 21, 64, 15, 14, 203, 52, 243, 149, 52, 83, 148, 4, 194, 84, 21, 64, 15, 14, 203, 36, 225, 9, 88, 145, 21, 4, 194, 84, 21,
+			64, 15, 14, 203, 20, 115, 195, 20, 229, 18, 36, 50, 84, 21, 64, 15, 12, 201, 5, 3, 208, 48, 82, 212, 36, 177, 82, 15, 8, 197,
+			56, 81, 210, 36, 64, 15, 8, 197, 33, 144, 146, 36, 64, 15, 11, 200, 64, 243, 148, 36, 98, 75, 5, 64, 15, 0, 6, 195, 20, 64,
+			128, 13, 13, 202, 72, 85, 18, 4, 228, 205, 37, 69, 5, 72, 15, 16, 205, 36, 228, 212, 37, 69, 84, 36, 243, 129, 48, 148, 197, 72,
+			15, 13, 202, 56, 82, 210, 60, 208, 78, 80, 146, 197, 72, 15, 13, 202, 44, 148, 143, 65, 32, 75, 80, 146, 197, 72, 15, 13, 202, 24,
+			147, 8, 5, 35, 79, 56, 146, 197, 72, 15, 10, 199, 72, 81, 197, 57, 50, 65, 56, 15, 10, 199, 12, 20, 212, 36, 194, 65, 56, 15,
+			9, 198, 72, 85, 129, 56, 50, 5, 15, 10, 199, 44, 20, 140, 40, 242, 1, 56, 16, 7, 196, 4, 147, 65, 8, 15, 6, 195, 25, 32,
+			64, 76, 0, 10, 199, 61, 32, 78, 28, 80, 68, 20, 15, 10, 199, 60, 198, 77, 64, 144, 68, 20, 15, 10, 199, 52, 20, 203, 21, 32,
+			68, 20, 15, 10, 199, 44, 21, 129, 48, 176, 68, 20, 15, 10, 199, 40, 84, 133, 52, 144, 68, 20, 15, 10, 199, 8, 20, 146, 36, 176,
+			68, 20, 15, 8, 197, 64, 20, 211, 4, 32, 15, 0, 8, 197, 89, 83, 7, 125, 32, 15, 21, 68, 77, 64, 78, 16, 89, 47, 117, 50,
+			72, 6, 36, 50, 0, 44, 15, 81, 105, 110, 32, 11, 200, 88, 84, 212, 4, 194, 78, 16, 80, 15, 11, 200, 76, 19, 135, 21, 34, 78,
+			16, 80, 15, 11, 200, 64, 20, 212, 61, 34, 78, 16, 80, 15, 11, 200, 44, 82, 147, 21, 34, 78, 16, 80, 15, 11, 200, 32, 83, 7,
+			20, 226, 78, 16, 80, 15, 11, 200, 16, 145, 212, 21, 34, 78, 16, 80, 15, 9, 198, 76, 177, 77, 5, 66, 75, 15, 11, 200, 8, 19,
+			21, 77, 68, 129, 16, 80, 15, 0, 11, 200, 9, 35, 206, 44, 244, 203, 61, 0, 15, 9, 198, 32, 243, 143, 73, 244, 128, 15, 0, 13,
+			202, 77, 74, 75, 36, 243, 69, 81, 34, 83, 44, 15, 10, 199, 9, 32, 83, 36, 194, 65, 56, 15, 12, 68, 12, 242, 5, 56, 49, 125,
+			40, 14, 50, 0, 0, 14, 69, 76, 18, 71, 60, 224, 89, 121, 57, 81, 108, 50, 0, 8, 197, 21, 2, 71, 60, 224, 15, 8, 197, 72,
+			21, 9, 60, 224, 15, 16, 69, 29, 32, 84, 36, 224, 81, 34, 121, 47, 6, 115, 68, 0, 15, 8, 197, 76, 195, 214, 20, 224, 15, 11,
+			200, 72, 84, 21, 8, 194, 75, 4, 224, 15, 8, 197, 85, 33, 84, 4, 224, 16, 0, 11, 200, 52, 85, 1, 48, 197, 82, 28, 144, 15,
+			11, 200, 25, 85, 21, 72, 243, 15, 28, 144, 15, 11, 200, 25, 32, 83, 20, 243, 15, 28, 144, 15, 11, 200, 21, 50, 201, 52, 243, 15,
+			28, 144, 15, 11, 200, 16, 83, 132, 72, 243, 15, 28, 144, 15, 13, 202, 20, 180, 208, 21, 34, 77, 20, 229, 5, 48, 15, 12, 201, 12,
+			19, 9, 24, 244, 142, 36, 83, 128, 15, 9, 198, 65, 39, 199, 56, 19, 148, 15, 0, 12, 201, 44, 244, 205, 21, 67, 204, 60, 114, 64,
+			15, 8, 197, 88, 83, 148, 36, 192, 15, 8, 197, 28, 83, 148, 36, 192, 15, 8, 197, 24, 84, 148, 36, 192, 15, 8, 197, 88, 19, 132,
+			4, 192, 15, 8, 197, 76, 19, 132, 4, 192, 15, 11, 200, 65, 4, 137, 56, 50, 80, 4, 192, 15, 11, 200, 64, 20, 129, 16, 242, 211,
+			4, 192, 15, 11, 200, 61, 35, 129, 52, 83, 148, 4, 192, 15, 11, 200, 60, 48, 201, 16, 83, 148, 4, 192, 15, 11, 200, 52, 243, 149,
+			52, 83, 148, 4, 192, 15, 11, 200, 32, 244, 137, 76, 243, 148, 4, 192, 15, 12, 4, 95, 35, 51, 50, 71, 55, 35, 50, 49, 0, 0,
+			9, 198, 88, 19, 11, 101, 34, 69, 15, 9, 198, 76, 49, 78, 5, 34, 69, 15, 9, 198, 72, 83, 9, 45, 98, 69, 15, 9, 198, 76,
+			147, 5, 57, 66, 69, 15, 9, 198, 76, 49, 78, 5, 34, 69, 15, 9, 198, 61, 32, 84, 61, 34, 69, 15, 9, 198, 53, 148, 212, 21,
+			34, 69, 15, 9, 198, 45, 34, 84, 21, 34, 69, 15, 9, 198, 44, 243, 131, 36, 194, 69, 15, 9, 198, 44, 243, 12, 20, 114, 69, 15,
+			9, 198, 28, 195, 211, 5, 34, 69, 15, 9, 198, 16, 85, 84, 21, 34, 69, 15, 9, 198, 80, 83, 5, 24, 243, 137, 15, 7, 196, 85,
+			32, 129, 56, 16, 0, 22, 68, 32, 20, 16, 100, 107, 117, 48, 37, 15, 6, 121, 40, 108, 0, 81, 104, 111, 117, 114, 32, 8, 197, 28,
+			19, 9, 60, 224, 15, 8, 197, 44, 195, 210, 36, 224, 15, 12, 201, 36, 229, 5, 73, 1, 76, 48, 19, 148, 15, 10, 69, 61, 33, 71,
+			60, 224, 21, 0, 47, 0, 13, 202, 44, 244, 146, 21, 52, 15, 56, 65, 78, 80, 15, 0, 8, 197, 76, 84, 150, 36, 192, 15, 8, 197,
+			24, 80, 146, 36, 192, 15, 8, 197, 44, 243, 150, 4, 192, 15, 9, 198, 5, 36, 197, 56, 19, 0, 15, 0, 7, 196, 65, 84, 133, 72,
+			15, 7, 196, 44, 20, 5, 72, 15, 9, 198, 52, 148, 207, 29, 147, 137, 15, 10, 199, 32, 82, 212, 60, 116, 129, 24, 15, 10, 199, 65,
+			32, 75, 80, 148, 193, 8, 15, 10, 199, 44, 243, 132, 20, 211, 129, 8, 15, 10, 199, 24, 20, 200, 36, 243, 129, 8, 15, 0, 27, 67,
+			24, 18, 84, 83, 116, 47, 118, 49, 109, 65, 48, 55, 6, 111, 0, 81, 97, 99, 99, 111, 109, 112, 108, 105, 32, 9, 198, 81, 32, 83,
+			76, 21, 0, 15, 0, 9, 198, 64, 244, 201, 81, 84, 128, 15, 9, 198, 5, 35, 65, 81, 84, 128, 15, 9, 198, 72, 85, 137, 76, 244,
+			128, 15, 9, 198, 44, 244, 21, 48, 84, 128, 15, 9, 198, 21, 50, 193, 48, 84, 128, 15, 9, 198, 5, 81, 9, 80, 84, 128, 15, 9,
+			68, 12, 128, 82, 80, 21, 0, 47, 0, 9, 198, 44, 20, 146, 36, 243, 0, 15, 10, 67, 57, 228, 128, 50, 108, 34, 0, 8, 0, 6,
+			195, 44, 101, 77, 13, 10, 199, 76, 195, 214, 20, 226, 69, 56, 15, 10, 199, 12, 20, 212, 36, 194, 69, 56, 15, 10, 199, 16, 243, 73,
+			56, 144, 193, 56, 15, 0, 9, 198, 44, 194, 69, 57, 65, 76, 15, 9, 198, 36, 211, 79, 73, 65, 76, 15, 9, 198, 44, 194, 69, 57,
+			65, 76, 15, 9, 198, 44, 20, 146, 85, 49, 76, 15, 9, 198, 36, 211, 79, 73, 65, 76, 15, 9, 198, 36, 225, 9, 88, 145, 0, 15,
+			9, 198, 44, 243, 147, 20, 228, 192, 15, 9, 198, 44, 243, 132, 20, 228, 192, 15, 9, 198, 16, 83, 9, 44, 21, 0, 15, 0, 12, 201,
+			84, 226, 70, 61, 35, 69, 72, 147, 135, 15, 12, 201, 77, 65, 78, 12, 147, 5, 72, 147, 135, 15, 12, 201, 77, 3, 206, 76, 244, 133,
+			72, 147, 135, 15, 12, 201, 76, 82, 212, 36, 243, 133, 72, 147, 135, 15, 12, 201, 72, 81, 201, 77, 68, 133, 72, 147, 135, 15, 12, 201,
+			72, 21, 9, 32, 16, 133, 72, 147, 135, 15, 12, 201, 61, 34, 197, 77, 68, 133, 72, 147, 135, 15, 12, 201, 52, 81, 9, 12, 147, 133,
+			72, 147, 135, 15, 12, 201, 52, 19, 137, 65, 83, 5, 72, 147, 135, 15, 12, 201, 48, 81, 201, 80, 147, 69, 72, 147, 135, 15, 12, 201,
+			44, 243, 210, 16, 147, 133, 72, 147, 135, 15, 12, 201, 44, 243, 132, 20, 228, 197, 72, 147, 135, 15, 12, 201, 44, 243, 132, 20, 211, 133,
+			72, 147, 135, 15, 12, 201, 44, 243, 80, 72, 147, 69, 72, 147, 135, 15, 12, 201, 44, 243, 80, 20, 228, 197, 72, 147, 135, 15, 12, 201,
+			44, 192, 85, 77, 83, 5, 72, 147, 135, 15, 12, 201, 44, 21, 84, 36, 243, 133, 72, 147, 135, 15, 12, 201, 44, 20, 148, 60, 227, 133,
+			72, 147, 135, 15, 12, 201, 44, 19, 148, 60, 227, 133, 72, 147, 135, 15, 12, 201, 36, 228, 197, 52, 147, 133, 72, 147, 135, 15, 12, 201,
+			36, 225, 137, 49, 68, 133, 72, 147, 135, 15, 12, 201, 36, 225, 18, 84, 195, 5, 72, 147, 135, 15, 12, 201, 36, 225, 11, 48, 20, 133,
+			72, 147, 135, 15, 12, 201, 36, 195, 21, 77, 68, 133, 72, 147, 135, 15, 12, 201, 28, 83, 1, 80, 147, 133, 72, 147, 135, 15, 12, 201,
+			24, 147, 129, 57, 50, 69, 72, 147, 135, 15, 12, 201, 24, 147, 15, 76, 241, 133, 72, 147, 135, 15, 12, 201, 16, 148, 208, 20, 228, 197,
+			72, 147, 135, 15, 12, 201, 13, 84, 20, 85, 35, 133, 72, 147, 135, 15, 12, 201, 12, 149, 137, 48, 148, 197, 72, 147, 135, 15, 12, 201,
+			12, 19, 79, 84, 99, 5, 72, 147, 135, 15, 12, 201, 5, 85, 15, 72, 148, 197, 72, 147, 135, 15, 12, 201, 5, 52, 201, 52, 147, 5,
+			72, 147, 135, 15, 12, 201, 4, 208, 76, 28, 19, 69, 72, 147, 135, 15, 12, 201, 4, 178, 213, 53, 83, 5, 72, 147, 135, 15, 0, 18,
+			7, 108, 39, 99, 104, 97, 105, 109, 55, 117, 49, 34, 6, 35, 57, 65, 0, 0, 10, 199, 77, 2, 82, 37, 69, 105, 76, 15, 10, 199,
+			36, 224, 197, 77, 69, 105, 76, 15, 9, 198, 52, 243, 143, 28, 19, 73, 15, 10, 199, 61, 53, 9, 56, 66, 69, 56, 15, 10, 199, 9,
+			32, 83, 36, 194, 69, 56, 15, 7, 196, 80, 86, 1, 56, 15, 9, 68, 48, 241, 201, 56, 21, 0, 47, 0, 11, 200, 76, 83, 148, 20,
+			229, 9, 165, 48, 15, 10, 199, 8, 147, 12, 21, 69, 41, 72, 15, 8, 197, 56, 21, 9, 60, 224, 15, 16, 69, 64, 244, 12, 36, 224,
+			48, 108, 48, 55, 6, 115, 68, 0, 15, 11, 200, 64, 243, 25, 56, 84, 201, 20, 224, 15, 11, 200, 52, 83, 1, 56, 84, 201, 20, 224,
+			15, 11, 200, 52, 18, 197, 16, 243, 137, 20, 224, 15, 11, 200, 4, 33, 83, 76, 147, 137, 20, 224, 15, 11, 200, 88, 81, 197, 80, 20,
+			137, 4, 224, 15, 11, 200, 20, 53, 65, 16, 244, 137, 4, 224, 15, 8, 197, 4, 97, 200, 4, 224, 15, 11, 68, 77, 83, 12, 100, 89,
+			109, 55, 111, 0, 10, 69, 5, 84, 212, 36, 224, 21, 0, 47, 0, 11, 200, 76, 83, 5, 56, 243, 15, 28, 144, 15, 11, 200, 76, 82,
+			83, 52, 243, 15, 28, 144, 15, 11, 200, 52, 243, 9, 56, 243, 15, 28, 144, 15, 12, 201, 88, 242, 193, 48, 148, 197, 72, 147, 135, 15,
+			12, 201, 88, 148, 137, 48, 148, 197, 72, 147, 135, 15, 12, 201, 85, 32, 129, 56, 148, 197, 72, 147, 135, 15, 12, 201, 84, 64, 129, 77,
+			83, 133, 72, 147, 135, 15, 12, 201, 81, 148, 9, 24, 144, 197, 72, 147, 135, 15, 12, 201, 80, 149, 143, 48, 148, 197, 72, 147, 135, 15,
+			12, 201, 80, 84, 146, 5, 52, 197, 72, 147, 135, 15, 12, 201, 80, 83, 65, 80, 148, 197, 72, 147, 135, 15, 12, 201, 80, 83, 5, 24,
+			243, 133, 72, 147, 135, 15, 12, 201, 76, 213, 75, 44, 84, 197, 72, 147, 135, 15, 12, 201, 76, 128, 77, 64, 243, 133, 72, 147, 135, 15,
+			12, 201, 76, 21, 9, 72, 148, 197, 72, 147, 135, 15, 12, 201, 72, 243, 65, 56, 148, 197, 72, 147, 135, 15, 12, 201, 72, 149, 129, 48,
+			148, 197, 72, 147, 135, 15, 12, 201, 72, 84, 212, 5, 84, 133, 72, 147, 135, 15, 12, 201, 72, 83, 80, 48, 16, 197, 72, 147, 135, 15,
+			12, 201, 72, 81, 84, 4, 35, 5, 72, 147, 135, 15, 12, 201, 72, 81, 18, 21, 52, 197, 72, 147, 135, 15, 12, 201, 72, 21, 9, 24,
+			144, 197, 72, 147, 135, 15, 12, 201, 64, 243, 65, 16, 148, 197, 72, 147, 135, 15, 12, 201, 64, 243, 9, 80, 148, 197, 72, 147, 135, 15,
+			12, 201, 64, 243, 5, 52, 148, 197, 72, 147, 135, 15, 12, 201, 64, 83, 147, 36, 243, 133, 72, 147, 135, 15, 12, 201, 64, 21, 18, 84,
+			194, 133, 72, 147, 135, 15, 12, 201, 64, 20, 129, 49, 148, 197, 72, 147, 135, 15, 12, 201, 61, 33, 193, 56, 148, 197, 72, 147, 135, 15,
+			12, 201, 53, 83, 73, 24, 144, 197, 72, 147, 135, 15, 12, 201, 52, 245, 15, 72, 148, 197, 72, 147, 135, 15, 12, 201, 52, 244, 129, 48,
+			148, 197, 72, 147, 135, 15, 12, 201, 52, 240, 137, 48, 148, 197, 72, 147, 135, 15, 12, 201, 52, 18, 143, 72, 148, 197, 72, 147, 135, 15,
+			12, 201, 52, 17, 193, 76, 147, 133, 72, 147, 135, 15, 12, 201, 48, 242, 193, 48, 148, 197, 72, 147, 135, 15, 12, 201, 48, 81, 193, 48,
+			148, 197, 72, 147, 135, 15, 12, 201, 44, 243, 134, 61, 35, 69, 72, 147, 135, 15, 12, 201, 44, 243, 134, 37, 35, 69, 72, 147, 135, 15,
+			12, 201, 44, 21, 5, 44, 148, 197, 72, 147, 135, 15, 12, 201, 44, 19, 143, 56, 148, 197, 72, 147, 135, 15, 12, 201, 44, 19, 129, 48,
+			148, 197, 72, 147, 135, 15, 12, 201, 37, 51, 1, 52, 148, 197, 72, 147, 135, 15, 12, 201, 36, 228, 212, 4, 195, 5, 72, 147, 135, 15,
+			12, 201, 36, 225, 16, 48, 16, 197, 72, 147, 135, 15, 12, 201, 36, 225, 11, 5, 52, 197, 72, 147, 135, 15, 12, 201, 36, 211, 85, 56,
+			148, 197, 72, 147, 135, 15, 12, 201, 36, 195, 21, 52, 147, 133, 72, 147, 135, 15, 12, 201, 36, 65, 65, 48, 148, 197, 72, 147, 135, 15,
+			12, 201, 33, 83, 65, 56, 148, 197, 72, 147, 135, 15, 12, 201, 29, 34, 77, 5, 52, 197, 72, 147, 135, 15, 12, 201, 24, 197, 73, 16,
+			148, 197, 72, 147, 135, 15, 12, 201, 24, 83, 73, 56, 148, 197, 72, 147, 135, 15, 12, 201, 24, 21, 143, 72, 148, 197, 72, 147, 135, 15,
+			12, 201, 24, 20, 200, 36, 243, 133, 72, 147, 135, 15, 12, 201, 24, 19, 129, 80, 148, 197, 72, 147, 135, 15, 12, 201, 20, 208, 78, 12,
+			148, 5, 72, 147, 135, 15, 12, 201, 16, 84, 212, 36, 195, 5, 72, 147, 135, 15, 12, 201, 16, 83, 129, 81, 84, 133, 72, 147, 135, 15,
+			12, 201, 16, 82, 204, 5, 52, 197, 72, 147, 135, 15, 12, 201, 16, 80, 200, 36, 100, 133, 72, 147, 135, 15, 12, 201, 8, 19, 129, 48,
+			148, 197, 72, 147, 135, 15, 12, 201, 4, 181, 9, 88, 148, 197, 72, 147, 135, 15, 11, 200, 32, 147, 12, 21, 42, 68, 4, 224, 15, 0,
+			9, 198, 72, 80, 197, 65, 69, 82, 15, 8, 197, 44, 244, 142, 20, 192, 15, 8, 197, 44, 244, 142, 20, 192, 15, 9, 198, 66, 147, 137,
+			80, 84, 128, 15, 9, 198, 33, 227, 132, 80, 84, 128, 15, 8, 197, 44, 243, 147, 60, 192, 15, 9, 198, 26, 147, 137, 44, 84, 128, 15,
+			8, 197, 77, 80, 148, 36, 192, 15, 8, 197, 52, 244, 140, 36, 192, 15, 12, 201, 81, 84, 139, 52, 83, 137, 77, 64, 78, 16, 12, 201,
+			80, 17, 19, 40, 146, 201, 77, 64, 78, 16, 14, 203, 81, 32, 78, 76, 49, 78, 16, 83, 148, 4, 192, 15, 8, 197, 52, 83, 148, 4,
+			192, 15, 11, 200, 37, 36, 129, 80, 147, 206, 4, 192, 15, 0, 10, 199, 77, 80, 147, 36, 66, 69, 72, 15, 10, 199, 84, 68, 208, 36,
+			243, 133, 72, 15, 10, 199, 76, 128, 77, 64, 243, 133, 72, 15, 10, 199, 64, 20, 131, 20, 195, 5, 72, 15, 10, 199, 44, 243, 147, 36,
+			115, 133, 72, 15, 10, 199, 44, 21, 84, 36, 243, 133, 72, 15, 10, 199, 36, 228, 212, 4, 195, 5, 72, 15, 10, 199, 36, 225, 18, 84,
+			195, 5, 72, 15, 10, 199, 28, 243, 132, 60, 194, 69, 72, 15, 10, 199, 20, 180, 193, 52, 147, 133, 72, 15, 10, 199, 16, 84, 212, 36,
+			195, 5, 72, 15, 10, 199, 12, 19, 79, 84, 99, 5, 72, 15, 10, 199, 76, 177, 80, 80, 146, 197, 72, 15, 10, 199, 76, 21, 9, 72,
+			146, 197, 72, 15, 10, 199, 72, 85, 15, 72, 146, 197, 72, 15, 10, 199, 64, 243, 5, 52, 146, 197, 72, 15, 10, 199, 28, 227, 211, 80,
+			146, 197, 72, 15, 10, 199, 28, 83, 133, 80, 146, 197, 72, 15, 10, 199, 24, 243, 133, 80, 146, 197, 72, 15, 10, 199, 24, 19, 129, 80,
+			146, 197, 72, 15, 10, 199, 20, 212, 9, 72, 146, 197, 72, 15, 10, 199, 5, 53, 5, 56, 146, 197, 72, 15, 10, 199, 4, 181, 83, 80,
+			146, 197, 72, 15, 7, 196, 48, 21, 9, 56, 15, 13, 202, 48, 145, 67, 33, 65, 78, 77, 65, 73, 56, 15, 7, 196, 48, 21, 9, 56,
+			15, 10, 199, 44, 243, 77, 20, 229, 1, 72, 15, 0, 8, 197, 44, 21, 9, 60, 224, 15, 10, 199, 65, 39, 212, 20, 225, 5, 72, 15,
+			8, 197, 24, 195, 210, 36, 224, 15, 9, 198, 81, 34, 66, 84, 224, 84, 15, 9, 198, 77, 83, 20, 4, 224, 84, 15, 9, 198, 72, 82,
+			212, 61, 32, 84, 15, 9, 198, 72, 16, 130, 36, 224, 84, 15, 9, 198, 64, 245, 5, 57, 64, 84, 15, 9, 198, 48, 82, 212, 61, 32,
+			84, 15, 9, 198, 44, 244, 146, 20, 192, 84, 15, 9, 198, 29, 32, 78, 84, 192, 84, 15, 9, 198, 24, 245, 15, 77, 64, 84, 15, 9,
+			198, 12, 83, 147, 61, 32, 84, 15, 9, 198, 5, 69, 5, 57, 64, 84, 15, 8, 197, 76, 244, 18, 4, 224, 16, 0, 12, 201, 81, 32,
+			78, 76, 210, 84, 80, 84, 128, 15, 12, 201, 80, 18, 212, 72, 81, 213, 48, 84, 128, 15, 12, 201, 77, 147, 139, 72, 85, 9, 76, 84,
+			128, 15, 12, 201, 77, 65, 84, 61, 50, 207, 64, 84, 128, 15, 12, 201, 77, 65, 78, 60, 116, 129, 24, 84, 128, 15, 12, 201, 72, 85,
+			137, 80, 19, 9, 76, 84, 128, 15, 12, 201, 72, 82, 212, 61, 50, 207, 64, 84, 128, 15, 12, 201, 72, 82, 193, 64, 149, 21, 48, 84,
+			128, 15, 12, 201, 72, 82, 1, 8, 147, 9, 80, 84, 128, 15, 12, 201, 60, 212, 18, 36, 244, 137, 80, 84, 128, 15, 12, 201, 4, 100,
+			1, 81, 37, 76, 40, 84, 128, 15, 12, 201, 64, 19, 1, 80, 19, 9, 76, 84, 128, 15, 12, 201, 53, 149, 15, 48, 241, 201, 76, 84,
+			128, 15, 12, 201, 53, 83, 20, 37, 3, 9, 12, 84, 128, 15, 12, 201, 52, 243, 143, 64, 243, 9, 76, 84, 128, 15, 12, 201, 52, 243,
+			143, 25, 67, 206, 28, 84, 128, 15, 12, 201, 52, 146, 210, 61, 50, 207, 64, 84, 128, 15, 12, 201, 44, 243, 147, 81, 34, 78, 28, 84,
+			128, 15, 12, 201, 44, 19, 12, 36, 116, 129, 24, 84, 128, 15, 12, 201, 36, 229, 5, 73, 4, 133, 80, 84, 128, 15, 12, 201, 36, 229,
+			5, 72, 210, 84, 80, 84, 128, 15, 12, 201, 36, 225, 11, 4, 194, 213, 48, 84, 128, 15, 12, 201, 32, 243, 79, 28, 83, 137, 76, 84,
+			128, 15, 12, 201, 32, 82, 212, 60, 116, 129, 24, 84, 128, 15, 12, 201, 24, 244, 198, 61, 33, 83, 12, 84, 128, 15, 12, 201, 20, 180,
+			208, 72, 244, 18, 36, 84, 128, 15, 12, 201, 20, 180, 208, 48, 144, 201, 80, 84, 128, 15, 12, 201, 16, 148, 203, 72, 147, 73, 56, 84,
+			128, 15, 12, 201, 16, 145, 201, 80, 19, 9, 76, 84, 128, 15, 12, 201, 16, 83, 73, 77, 50, 79, 56, 84, 128, 15, 12, 201, 12, 128,
+			80, 80, 19, 9, 76, 84, 128, 15, 12, 201, 8, 20, 212, 5, 33, 9, 76, 84, 128, 15, 12, 201, 5, 85, 15, 52, 21, 9, 76, 84,
+			128, 15, 12, 201, 4, 193, 129, 8, 85, 9, 76, 84, 128, 15, 12, 201, 77, 145, 137, 48, 149, 9, 44, 84, 128, 15, 12, 201, 21, 2,
+			76, 21, 5, 9, 44, 84, 128, 15, 12, 201, 88, 144, 143, 72, 113, 78, 76, 84, 128, 15, 12, 201, 32, 240, 146, 60, 113, 78, 76, 84,
+			128, 15, 11, 200, 44, 20, 148, 60, 227, 129, 28, 80, 15, 11, 200, 24, 84, 142, 37, 52, 193, 28, 80, 15, 20, 71, 76, 195, 214, 4,
+			178, 69, 80, 89, 55, 124, 84, 118, 49, 6, 111, 13, 86, 0, 0, 8, 197, 44, 20, 212, 20, 192, 15, 8, 197, 44, 20, 148, 20, 192,
+			15, 8, 197, 44, 20, 212, 20, 192, 15, 8, 197, 44, 244, 132, 20, 192, 15, 8, 197, 44, 20, 148, 20, 192, 15, 8, 197, 8, 244, 132,
+			20, 192, 15, 12, 201, 81, 32, 78, 77, 3, 1, 57, 65, 82, 15, 12, 201, 44, 243, 148, 36, 225, 197, 57, 65, 82, 15, 13, 69, 12,
+			129, 82, 100, 192, 91, 116, 34, 114, 59, 0, 0, 11, 200, 64, 243, 80, 165, 50, 84, 21, 64, 15, 11, 200, 56, 84, 150, 165, 50, 84,
+			21, 64, 15, 11, 200, 52, 243, 132, 124, 226, 84, 21, 64, 15, 10, 199, 88, 149, 137, 76, 82, 197, 72, 15, 10, 199, 72, 81, 210, 20,
+			66, 69, 72, 15, 10, 199, 72, 81, 197, 56, 84, 133, 72, 15, 10, 199, 72, 81, 5, 24, 147, 133, 72, 15, 10, 199, 72, 80, 83, 77,
+			83, 69, 72, 15, 9, 198, 65, 39, 211, 36, 65, 82, 15, 10, 199, 65, 32, 75, 80, 148, 197, 72, 15, 10, 199, 64, 84, 150, 21, 37,
+			5, 72, 15, 10, 199, 52, 148, 211, 36, 243, 133, 72, 15, 10, 199, 44, 243, 210, 16, 147, 133, 72, 15, 10, 199, 44, 243, 150, 21, 37,
+			5, 72, 15, 10, 199, 44, 243, 132, 20, 211, 133, 72, 15, 10, 199, 44, 19, 15, 72, 145, 133, 72, 15, 10, 199, 36, 228, 197, 52, 147,
+			133, 72, 15, 10, 199, 36, 226, 193, 52, 147, 133, 72, 15, 10, 199, 36, 195, 21, 52, 147, 133, 72, 15, 10, 199, 28, 83, 1, 80, 147,
+			133, 72, 15, 10, 199, 24, 147, 147, 61, 37, 5, 72, 15, 10, 199, 24, 147, 129, 57, 50, 69, 72, 15, 10, 199, 24, 147, 15, 76, 241,
+			133, 72, 15, 10, 199, 65, 35, 211, 4, 146, 197, 72, 15, 10, 199, 64, 243, 9, 80, 146, 197, 72, 15, 10, 199, 52, 85, 15, 16, 146,
+			197, 72, 15, 10, 199, 52, 82, 193, 56, 146, 197, 72, 15, 10, 199, 44, 243, 5, 72, 146, 197, 72, 15, 10, 199, 44, 84, 129, 52, 146,
+			197, 72, 15, 10, 199, 9, 83, 9, 52, 146, 197, 72, 15, 0, 12, 201, 65, 35, 205, 37, 50, 213, 37, 65, 84, 15, 10, 199, 65, 39,
+			211, 20, 229, 5, 72, 15, 0, 11, 200, 46, 147, 147, 45, 99, 212, 21, 32, 15, 0, 14, 203, 72, 85, 133, 73, 50, 66, 36, 194, 84,
+			21, 64, 15, 14, 203, 65, 35, 199, 72, 84, 211, 37, 98, 84, 21, 64, 15, 14, 203, 65, 35, 198, 37, 64, 66, 36, 194, 84, 21, 64,
+			15, 14, 203, 44, 243, 80, 5, 66, 66, 36, 194, 84, 21, 64, 15, 14, 203, 37, 36, 129, 80, 147, 206, 4, 194, 84, 21, 64, 15, 14,
+			203, 36, 225, 70, 24, 82, 212, 37, 98, 84, 21, 64, 15, 14, 203, 25, 83, 139, 80, 147, 206, 4, 194, 84, 21, 64, 15, 14, 203, 16,
+			148, 212, 36, 226, 212, 37, 98, 84, 21, 64, 15, 14, 203, 16, 84, 212, 73, 82, 212, 37, 98, 84, 21, 64, 15, 14, 203, 4, 48, 197,
+			65, 64, 66, 36, 194, 84, 21, 64, 15, 12, 201, 44, 244, 146, 21, 52, 15, 56, 65, 82, 15, 9, 198, 36, 226, 149, 72, 145, 64, 15,
+			9, 198, 8, 85, 15, 56, 145, 64, 15, 9, 198, 5, 37, 5, 72, 145, 64, 15, 9, 198, 72, 81, 149, 28, 145, 64, 15, 9, 198, 53,
+			144, 197, 48, 145, 64, 15, 9, 198, 36, 225, 9, 12, 145, 64, 15, 9, 198, 16, 83, 9, 72, 145, 64, 15, 9, 198, 4, 209, 137, 8,
+			145, 64, 15, 9, 198, 81, 84, 137, 76, 209, 64, 15, 9, 198, 80, 19, 201, 76, 209, 64, 15, 9, 198, 72, 16, 201, 76, 209, 64, 15,
+			9, 198, 65, 84, 137, 76, 209, 64, 15, 9, 198, 64, 20, 9, 76, 209, 64, 15, 9, 198, 57, 81, 9, 76, 209, 64, 15, 9, 198, 56,
+			22, 137, 76, 209, 64, 15, 9, 198, 49, 148, 137, 76, 209, 64, 15, 9, 198, 20, 115, 201, 76, 209, 64, 15, 9, 198, 8, 147, 9, 76,
+			209, 64, 15, 10, 199, 77, 66, 76, 37, 53, 9, 44, 15, 10, 199, 77, 64, 84, 37, 53, 9, 44, 15, 10, 199, 76, 179, 204, 5, 53,
+			9, 44, 15, 9, 198, 80, 243, 142, 4, 113, 64, 15, 9, 198, 64, 20, 211, 4, 113, 64, 15, 9, 198, 52, 20, 211, 4, 113, 64, 15,
+			9, 198, 44, 244, 147, 4, 113, 64, 15, 9, 198, 25, 84, 212, 4, 113, 64, 15, 9, 198, 12, 245, 82, 4, 113, 64, 15, 9, 198, 12,
+			244, 147, 4, 113, 64, 15, 9, 198, 12, 243, 12, 4, 113, 64, 15, 11, 70, 76, 50, 69, 56, 49, 64, 21, 0, 47, 0, 10, 199, 81,
+			32, 86, 21, 37, 9, 56, 15, 0, 9, 198, 76, 147, 143, 48, 241, 192, 15, 9, 198, 53, 149, 15, 48, 241, 192, 15, 9, 198, 24, 147,
+			15, 48, 241, 192, 15, 9, 198, 88, 83, 79, 16, 145, 192, 15, 9, 198, 81, 33, 69, 56, 145, 192, 15, 12, 201, 72, 83, 73, 56, 148,
+			195, 20, 228, 192, 15, 12, 201, 49, 83, 73, 56, 84, 195, 20, 228, 192, 15, 12, 201, 45, 98, 78, 80, 84, 211, 20, 228, 192, 15, 12,
+			201, 36, 229, 5, 48, 194, 71, 20, 228, 192, 15, 12, 201, 36, 225, 9, 24, 97, 82, 20, 228, 192, 15, 12, 201, 24, 197, 79, 72, 84,
+			195, 20, 228, 192, 15, 0, 8, 197, 72, 17, 9, 125, 32, 15, 8, 197, 65, 33, 75, 125, 32, 15, 9, 198, 76, 83, 73, 80, 148, 203,
+			15, 9, 198, 64, 21, 5, 80, 148, 203, 15, 9, 198, 44, 84, 129, 52, 148, 203, 15, 9, 198, 20, 212, 1, 80, 148, 203, 15, 9, 198,
+			17, 37, 73, 16, 148, 203, 15, 9, 198, 4, 224, 82, 44, 148, 203, 15, 9, 198, 25, 33, 75, 88, 83, 147, 15, 9, 198, 77, 80, 147,
+			80, 19, 147, 15, 0, 9, 198, 80, 243, 148, 36, 225, 64, 15, 9, 198, 44, 19, 148, 36, 225, 64, 15, 9, 198, 21, 64, 77, 36, 225,
+			64, 15, 9, 198, 33, 145, 18, 5, 162, 78, 15, 10, 199, 32, 85, 82, 37, 53, 9, 44, 15, 12, 201, 65, 33, 83, 9, 149, 5, 72,
+			144, 78, 15, 9, 198, 45, 35, 203, 4, 65, 64, 15, 9, 198, 33, 148, 212, 4, 65, 64, 15, 9, 198, 24, 244, 140, 4, 65, 64, 15,
+			9, 198, 9, 34, 71, 4, 65, 64, 15, 9, 198, 8, 195, 203, 4, 65, 64, 15, 15, 70, 12, 20, 141, 36, 225, 64, 49, 121, 12, 65,
+			136, 50, 0, 0, 10, 199, 80, 84, 144, 20, 229, 9, 56, 15, 10, 199, 76, 84, 144, 20, 229, 9, 56, 15, 0, 9, 198, 65, 32, 75,
+			80, 146, 192, 15, 12, 201, 64, 84, 137, 77, 64, 76, 80, 146, 192, 15, 0, 11, 200, 52, 147, 133, 72, 19, 15, 28, 144, 15, 11, 200,
+			45, 33, 77, 48, 243, 15, 28, 144, 15, 11, 200, 44, 20, 132, 36, 243, 15, 28, 144, 15, 7, 196, 24, 83, 143, 48, 15, 11, 200, 33,
+			243, 79, 28, 195, 194, 36, 224, 15, 11, 200, 28, 20, 212, 72, 243, 143, 52, 144, 15, 0, 10, 199, 77, 98, 71, 4, 117, 9, 28, 15,
+			10, 199, 45, 85, 20, 21, 36, 137, 28, 15, 10, 199, 45, 83, 20, 85, 35, 9, 28, 15, 10, 199, 28, 83, 5, 4, 117, 9, 28, 15,
+			10, 199, 21, 98, 78, 16, 83, 9, 28, 15, 10, 199, 4, 101, 1, 28, 83, 9, 28, 15, 10, 199, 77, 98, 71, 4, 117, 9, 28, 15,
+			0, 11, 200, 80, 147, 7, 37, 97, 76, 36, 112, 15, 11, 200, 61, 1, 129, 81, 65, 76, 36, 112, 15, 11, 200, 61, 1, 18, 37, 97,
+			76, 36, 112, 15, 11, 200, 60, 208, 153, 81, 65, 76, 36, 112, 15, 11, 200, 45, 98, 78, 16, 17, 212, 36, 112, 15, 11, 200, 24, 19,
+			148, 5, 50, 82, 36, 112, 15, 9, 198, 77, 147, 139, 72, 243, 137, 15, 11, 200, 45, 98, 78, 16, 17, 212, 36, 112, 15, 0, 11, 200,
+			76, 19, 68, 73, 241, 212, 36, 112, 15, 12, 201, 56, 21, 21, 72, 96, 71, 48, 145, 192, 15, 12, 201, 24, 244, 132, 20, 192, 71, 80,
+			145, 192, 15, 11, 200, 17, 103, 210, 28, 17, 212, 36, 112, 15, 9, 198, 77, 3, 5, 56, 66, 68, 15, 8, 197, 16, 83, 6, 36, 224,
+			15, 12, 201, 52, 81, 4, 20, 192, 71, 80, 145, 192, 15, 12, 201, 24, 244, 132, 20, 192, 71, 80, 145, 192, 15, 0, 12, 201, 8, 80,
+			82, 8, 82, 132, 20, 194, 71, 67, 12, 201, 45, 84, 134, 101, 36, 212, 20, 194, 71, 15, 12, 201, 24, 244, 150, 20, 180, 204, 20, 194,
+			71, 15, 12, 201, 24, 244, 149, 17, 50, 71, 20, 194, 71, 15, 12, 201, 8, 80, 82, 8, 82, 132, 20, 194, 71, 15, 11, 200, 89, 83,
+			7, 5, 34, 83, 52, 80, 15, 11, 200, 88, 246, 69, 85, 34, 83, 52, 80, 15, 11, 200, 88, 19, 132, 4, 194, 83, 52, 80, 15, 11,
+			200, 81, 35, 212, 76, 178, 83, 52, 80, 15, 11, 200, 80, 84, 146, 61, 34, 83, 52, 80, 15, 11, 200, 77, 147, 66, 60, 194, 83, 52,
+			80, 15, 11, 200, 77, 147, 12, 60, 114, 83, 52, 80, 15, 11, 200, 77, 64, 76, 36, 226, 83, 52, 80, 15, 11, 200, 77, 2, 82, 37,
+			66, 83, 52, 80, 15, 11, 200, 76, 240, 201, 4, 194, 83, 52, 80, 15, 11, 200, 76, 130, 78, 80, 242, 83, 52, 80, 15, 11, 200, 76,
+			84, 137, 4, 194, 83, 52, 80, 15, 11, 200, 76, 82, 212, 21, 34, 83, 52, 80, 15, 11, 200, 72, 243, 65, 57, 66, 83, 52, 80, 15,
+			11, 200, 65, 34, 86, 5, 66, 83, 52, 80, 15, 11, 200, 64, 192, 84, 60, 226, 83, 52, 80, 15, 11, 200, 60, 178, 213, 49, 66, 83,
+			52, 80, 15, 11, 200, 56, 83, 204, 60, 114, 83, 52, 80, 15, 11, 200, 52, 243, 135, 60, 194, 83, 52, 80, 15, 11, 200, 52, 19, 137,
+			21, 34, 83, 52, 80, 15, 11, 200, 45, 33, 84, 36, 226, 83, 52, 80, 15, 11, 200, 28, 19, 12, 36, 50, 83, 52, 80, 15, 11, 200,
+			24, 244, 141, 4, 194, 83, 52, 80, 15, 11, 200, 24, 85, 68, 4, 194, 83, 52, 80, 15, 11, 200, 24, 85, 9, 12, 130, 83, 52, 80,
+			15, 11, 200, 20, 180, 207, 72, 50, 83, 52, 80, 15, 11, 200, 16, 20, 151, 36, 226, 83, 52, 80, 15, 11, 200, 9, 37, 84, 4, 194,
+			83, 52, 80, 15, 11, 200, 8, 20, 130, 5, 34, 83, 52, 80, 15, 11, 200, 4, 36, 213, 72, 66, 83, 52, 80, 15, 0, 9, 198, 33,
+			145, 18, 60, 99, 210, 15, 9, 198, 80, 244, 133, 4, 67, 210, 15, 9, 198, 124, 68, 149, 20, 194, 71, 15, 10, 199, 48, 21, 129, 16,
+			83, 9, 28, 15, 10, 199, 48, 19, 135, 52, 241, 9, 28, 15, 10, 199, 24, 244, 133, 56, 83, 9, 28, 15, 9, 198, 52, 243, 143, 64,
+			243, 0, 15, 10, 199, 48, 19, 135, 4, 117, 9, 28, 15, 8, 197, 49, 83, 66, 4, 192, 15, 0, 10, 199, 20, 180, 197, 45, 85, 15,
+			72, 15, 12, 201, 34, 146, 159, 73, 103, 210, 16, 145, 192, 15, 10, 199, 4, 117, 22, 125, 33, 9, 28, 15, 0, 7, 196, 4, 181, 41,
+			72, 15, 8, 197, 72, 80, 71, 21, 32, 15, 8, 197, 37, 34, 83, 21, 32, 15, 8, 197, 12, 131, 203, 21, 32, 15, 8, 197, 9, 81,
+			211, 21, 32, 15, 9, 198, 24, 197, 79, 72, 145, 0, 15, 9, 198, 16, 82, 193, 56, 21, 0, 15, 15, 70, 12, 128, 66, 48, 148, 192,
+			91, 118, 71, 55, 6, 111, 0, 0, 9, 198, 80, 82, 211, 81, 84, 128, 15, 9, 198, 76, 82, 211, 81, 84, 128, 15, 9, 198, 65, 83,
+			139, 81, 84, 128, 15, 9, 198, 52, 146, 211, 81, 84, 128, 15, 9, 198, 41, 83, 139, 81, 84, 128, 15, 9, 198, 5, 81, 9, 80, 244,
+			128, 15, 12, 201, 48, 19, 135, 76, 243, 77, 20, 194, 71, 15, 12, 201, 44, 243, 148, 36, 229, 69, 72, 194, 71, 15, 12, 201, 36, 225,
+			19, 80, 147, 12, 20, 194, 71, 15, 12, 201, 25, 33, 77, 44, 243, 77, 20, 194, 71, 15, 9, 198, 64, 243, 9, 80, 148, 203, 15, 9,
+			198, 21, 36, 129, 80, 148, 203, 15, 9, 198, 9, 37, 78, 20, 148, 203, 15, 9, 198, 8, 20, 201, 48, 148, 203, 15, 7, 196, 4, 113,
+			78, 80, 15, 11, 70, 92, 20, 146, 36, 244, 128, 21, 0, 47, 0, 9, 198, 28, 197, 84, 36, 234, 83, 15, 8, 197, 52, 19, 201, 77,
+			64, 15, 9, 198, 44, 243, 148, 72, 243, 0, 15, 8, 197, 77, 83, 142, 37, 64, 15, 8, 197, 65, 35, 198, 37, 64, 15, 9, 198, 32,
+			148, 212, 4, 210, 78, 15, 9, 198, 5, 4, 5, 49, 50, 78, 15, 9, 198, 45, 96, 82, 80, 147, 0, 15, 8, 197, 52, 17, 206, 5,
+			64, 15, 8, 197, 24, 244, 198, 5, 64, 15, 9, 198, 88, 17, 201, 56, 19, 0, 15, 9, 198, 72, 85, 137, 88, 19, 0, 15, 9, 198,
+			36, 195, 5, 28, 19, 0, 15, 8, 197, 88, 243, 1, 57, 64, 15, 8, 197, 45, 83, 1, 57, 64, 15, 8, 197, 28, 19, 1, 57, 64,
+			15, 0, 9, 198, 36, 229, 5, 72, 154, 82, 15, 7, 196, 52, 245, 15, 72, 15, 9, 198, 56, 85, 82, 4, 193, 201, 15, 10, 199, 36,
+			229, 5, 57, 50, 79, 56, 15, 10, 199, 16, 149, 133, 73, 50, 79, 56, 15, 11, 200, 88, 19, 9, 16, 84, 137, 56, 112, 15, 11, 200,
+			84, 68, 129, 16, 84, 137, 56, 112, 15, 11, 200, 81, 84, 195, 32, 84, 137, 56, 112, 15, 11, 200, 77, 3, 206, 76, 84, 137, 56, 112,
+			15, 11, 200, 76, 147, 85, 48, 84, 137, 56, 112, 15, 11, 200, 76, 19, 21, 80, 84, 137, 56, 112, 15, 11, 200, 60, 225, 21, 48, 84,
+			137, 56, 112, 15, 11, 200, 52, 147, 137, 52, 84, 137, 56, 112, 15, 11, 200, 52, 18, 213, 48, 84, 137, 56, 112, 15, 11, 200, 45, 98,
+			84, 80, 84, 137, 56, 112, 15, 11, 200, 40, 243, 137, 76, 84, 137, 56, 112, 15, 11, 200, 28, 19, 15, 64, 84, 137, 56, 112, 15, 11,
+			200, 24, 147, 5, 80, 84, 137, 56, 112, 15, 11, 200, 20, 180, 201, 48, 84, 137, 56, 112, 15, 11, 200, 16, 82, 193, 80, 84, 137, 56,
+			112, 15, 12, 201, 77, 84, 16, 61, 50, 84, 61, 34, 69, 15, 12, 201, 16, 242, 213, 52, 83, 148, 5, 34, 69, 15, 9, 198, 4, 229,
+			15, 57, 147, 73, 15, 10, 199, 16, 243, 73, 56, 146, 193, 56, 15, 10, 199, 12, 243, 15, 52, 34, 65, 56, 15, 0, 9, 198, 73, 244,
+			207, 56, 234, 82, 15, 8, 197, 45, 33, 77, 21, 32, 15, 9, 198, 44, 243, 15, 72, 149, 0, 15, 9, 198, 76, 243, 22, 20, 228, 192,
+			15, 9, 198, 80, 83, 203, 72, 21, 0, 15, 0, 21, 72, 48, 81, 197, 56, 65, 82, 56, 80, 55, 36, 81, 6, 115, 50, 72, 108, 50,
+			14, 0, 9, 198, 76, 243, 65, 80, 148, 203, 15, 9, 198, 76, 84, 129, 24, 148, 203, 15, 9, 198, 72, 18, 201, 80, 148, 203, 15, 12,
+			201, 12, 83, 148, 72, 145, 149, 28, 19, 0, 15, 20, 4, 95, 56, 88, 111, 83, 37, 34, 89, 36, 50, 89, 47, 129, 84, 14, 50, 14,
+			0, 0, 8, 197, 88, 84, 137, 77, 64, 15, 8, 197, 4, 244, 137, 77, 64, 15, 8, 197, 8, 21, 88, 37, 64, 15, 8, 197, 8, 19,
+			132, 37, 64, 15, 7, 196, 49, 148, 137, 44, 15, 8, 197, 88, 19, 5, 57, 64, 15, 8, 197, 80, 19, 5, 57, 64, 15, 8, 197, 64,
+			147, 69, 57, 64, 15, 8, 197, 52, 243, 69, 57, 64, 15, 8, 197, 16, 83, 69, 57, 64, 15, 8, 197, 48, 18, 212, 5, 64, 15, 8,
+			197, 16, 146, 212, 5, 64, 15, 0, 9, 198, 50, 145, 211, 82, 148, 128, 15, 8, 197, 164, 66, 80, 4, 192, 15, 0, 14, 68, 64, 128,
+			82, 52, 83, 121, 12, 34, 65, 19, 0, 25, 10, 199, 45, 34, 78, 60, 194, 78, 20, 15, 23, 72, 4, 180, 143, 77, 66, 75, 60, 224,
+			35, 49, 34, 108, 89, 72, 37, 49, 6, 108, 50, 0, 15, 11, 200, 36, 229, 5, 72, 97, 82, 60, 224, 15, 11, 200, 88, 83, 133, 72,
+			21, 9, 60, 224, 15, 11, 200, 76, 147, 85, 48, 21, 9, 60, 224, 15, 11, 200, 72, 84, 21, 80, 21, 9, 60, 224, 15, 11, 200, 72,
+			83, 143, 88, 21, 9, 60, 224, 15, 11, 200, 72, 83, 5, 28, 21, 9, 60, 224, 15, 11, 200, 65, 35, 212, 20, 181, 9, 60, 224, 15,
+			11, 200, 65, 35, 196, 84, 181, 9, 60, 224, 15, 11, 200, 64, 244, 21, 48, 21, 9, 60, 224, 15, 11, 200, 61, 4, 15, 76, 149, 9,
+			60, 224, 15, 8, 197, 52, 245, 9, 60, 224, 15, 11, 200, 36, 229, 137, 80, 21, 9, 60, 224, 15, 11, 200, 36, 228, 208, 20, 181, 9,
+			60, 224, 15, 11, 200, 36, 226, 9, 8, 149, 9, 60, 224, 15, 11, 200, 36, 224, 201, 80, 21, 9, 60, 224, 15, 11, 200, 28, 192, 67,
+			36, 21, 9, 60, 224, 15, 11, 200, 20, 209, 78, 16, 21, 9, 60, 224, 15, 11, 200, 20, 180, 208, 4, 228, 201, 60, 224, 15, 11, 200,
+			16, 84, 18, 21, 52, 201, 60, 224, 15, 11, 200, 16, 83, 5, 28, 21, 9, 60, 224, 15, 11, 200, 4, 211, 85, 56, 149, 9, 60, 224,
+			15, 8, 197, 4, 181, 9, 60, 224, 15, 9, 198, 52, 20, 203, 36, 225, 76, 15, 11, 200, 76, 145, 82, 72, 19, 5, 60, 224, 15, 8,
+			197, 45, 33, 84, 36, 224, 15, 12, 201, 20, 180, 203, 72, 83, 69, 57, 64, 76, 15, 0, 0, 12, 201, 52, 19, 137, 65, 83, 1, 82,
+			148, 128, 15, 12, 201, 36, 228, 212, 4, 195, 1, 82, 148, 128, 15, 12, 201, 20, 229, 18, 21, 4, 133, 58, 148, 128, 15, 12, 201, 16,
+			148, 212, 72, 144, 149, 82, 148, 128, 15, 12, 201, 16, 84, 212, 36, 195, 1, 82, 148, 128, 15, 12, 201, 16, 84, 201, 56, 97, 75, 82,
+			148, 128, 15, 10, 199, 20, 229, 15, 52, 243, 15, 28, 15, 8, 197, 64, 244, 148, 4, 192, 15, 0, 11, 200, 5, 52, 217, 72, 147, 204,
+			60, 112, 15, 12, 201, 36, 225, 129, 57, 65, 82, 37, 53, 0, 15, 10, 199, 85, 32, 129, 56, 148, 197, 72, 15, 10, 199, 81, 148, 9,
+			24, 144, 197, 72, 15, 10, 199, 80, 149, 143, 48, 148, 197, 72, 15, 10, 199, 80, 83, 65, 80, 148, 197, 72, 15, 10, 199, 76, 225, 68,
+			44, 84, 133, 72, 15, 10, 199, 76, 21, 9, 72, 148, 197, 72, 15, 10, 199, 72, 149, 129, 48, 148, 197, 72, 15, 10, 199, 72, 84, 212,
+			5, 84, 133, 72, 15, 10, 199, 72, 83, 80, 48, 16, 197, 72, 15, 10, 199, 72, 21, 9, 32, 16, 133, 72, 15, 10, 199, 72, 21, 9,
+			24, 144, 197, 72, 15, 10, 199, 64, 243, 65, 16, 148, 197, 72, 15, 10, 199, 64, 243, 5, 52, 148, 197, 72, 15, 10, 199, 61, 33, 193,
+			56, 148, 197, 72, 15, 10, 199, 56, 245, 9, 24, 144, 197, 72, 15, 10, 199, 53, 83, 73, 24, 144, 197, 72, 15, 10, 199, 52, 245, 15,
+			72, 148, 197, 72, 15, 10, 199, 52, 244, 129, 48, 148, 197, 72, 15, 10, 199, 52, 240, 137, 48, 148, 197, 72, 15, 10, 199, 52, 18, 143,
+			72, 148, 197, 72, 15, 10, 199, 44, 243, 150, 21, 36, 197, 72, 15, 10, 199, 44, 243, 147, 64, 148, 133, 72, 15, 10, 199, 44, 243, 147,
+			20, 180, 133, 72, 15, 10, 199, 44, 243, 80, 48, 144, 197, 72, 15, 10, 199, 44, 21, 5, 44, 148, 197, 72, 15, 10, 199, 44, 19, 143,
+			56, 148, 197, 72, 15, 10, 199, 44, 19, 129, 48, 148, 197, 72, 15, 10, 199, 36, 225, 11, 48, 20, 133, 72, 15, 10, 199, 36, 224, 85,
+			29, 84, 133, 72, 15, 10, 199, 36, 211, 85, 56, 148, 197, 72, 15, 10, 199, 33, 83, 65, 56, 148, 197, 72, 15, 10, 199, 24, 83, 73,
+			56, 148, 197, 72, 15, 10, 199, 24, 21, 143, 72, 148, 197, 72, 15, 10, 199, 24, 19, 129, 80, 148, 197, 72, 15, 10, 199, 20, 180, 208,
+			48, 244, 133, 72, 15, 10, 199, 16, 83, 129, 81, 84, 133, 72, 15, 10, 199, 12, 149, 137, 48, 148, 197, 72, 15, 10, 199, 8, 83, 133,
+			16, 144, 197, 72, 15, 10, 199, 8, 19, 129, 48, 148, 197, 72, 15, 10, 199, 4, 181, 9, 88, 148, 197, 72, 15, 10, 199, 49, 83, 132,
+			20, 228, 197, 72, 15, 0, 13, 138, 39, 97, 102, 109, 97, 114, 99, 104, 101, 114, 15, 13, 202, 65, 54, 75, 60, 96, 82, 52, 18, 213,
+			52, 15, 7, 196, 64, 193, 84, 36, 15, 8, 197, 32, 83, 12, 20, 224, 15, 9, 198, 64, 244, 212, 21, 64, 84, 15, 9, 198, 64, 20,
+			139, 60, 208, 84, 15, 9, 198, 48, 149, 20, 21, 32, 84, 15, 9, 198, 44, 19, 77, 21, 32, 84, 15, 9, 198, 17, 84, 12, 36, 176,
+			84, 15, 9, 198, 16, 148, 12, 60, 208, 84, 15, 9, 198, 16, 84, 208, 21, 32, 84, 15, 9, 198, 13, 146, 204, 4, 208, 84, 15, 9,
+			198, 9, 32, 75, 80, 80, 84, 15, 9, 198, 5, 85, 15, 45, 32, 84, 15, 9, 198, 4, 113, 210, 20, 112, 84, 15, 0, 9, 198, 29,
+			39, 195, 37, 65, 84, 15, 12, 201, 72, 83, 1, 80, 149, 137, 76, 84, 128, 15, 12, 201, 21, 2, 71, 72, 17, 137, 44, 84, 128, 15,
+			12, 201, 5, 66, 5, 56, 145, 78, 76, 84, 128, 15, 0, 10, 199, 88, 83, 133, 72, 243, 15, 28, 15, 10, 199, 65, 35, 203, 80, 243,
+			15, 28, 15, 10, 199, 61, 35, 137, 80, 243, 15, 28, 15, 10, 199, 28, 192, 67, 36, 243, 15, 28, 15, 10, 199, 20, 118, 80, 80, 243,
+			15, 28, 15, 10, 199, 64, 244, 169, 76, 149, 5, 80, 15, 12, 201, 45, 35, 208, 77, 98, 83, 37, 65, 82, 15, 12, 201, 44, 243, 80,
+			72, 243, 73, 81, 65, 82, 15, 12, 201, 44, 243, 80, 48, 83, 69, 57, 65, 82, 15, 12, 201, 36, 229, 5, 73, 5, 78, 45, 65, 82,
+			15, 8, 197, 56, 85, 82, 4, 192, 15, 0, 11, 67, 76, 52, 201, 89, 49, 108, 89, 37, 0, 18, 67, 64, 112, 64, 48, 125, 15, 81,
+			51, 6, 125, 19, 50, 15, 117, 0, 25, 18, 71, 72, 82, 137, 12, 84, 133, 72, 34, 116, 57, 111, 89, 6, 114, 109, 0, 10, 199, 88,
+			149, 1, 48, 148, 197, 72, 15, 10, 199, 88, 148, 137, 48, 148, 197, 72, 15, 10, 199, 88, 19, 15, 72, 148, 197, 72, 15, 10, 199, 80,
+			83, 5, 88, 148, 197, 72, 15, 10, 199, 76, 82, 212, 36, 243, 133, 72, 15, 10, 199, 72, 80, 83, 77, 84, 133, 72, 15, 10, 199, 72,
+			20, 16, 20, 195, 5, 72, 15, 9, 198, 65, 39, 204, 84, 65, 82, 15, 10, 199, 64, 243, 9, 80, 148, 197, 72, 15, 10, 199, 64, 243,
+			1, 72, 148, 197, 72, 15, 10, 199, 64, 84, 147, 36, 99, 5, 72, 15, 10, 199, 52, 243, 137, 80, 244, 133, 72, 15, 10, 199, 52, 241,
+			9, 24, 144, 197, 72, 15, 10, 199, 52, 82, 193, 56, 148, 197, 72, 15, 10, 199, 52, 20, 211, 4, 180, 133, 72, 15, 10, 199, 48, 242,
+			193, 48, 148, 197, 72, 15, 10, 199, 48, 81, 193, 48, 148, 197, 72, 15, 10, 199, 48, 21, 9, 56, 148, 197, 72, 15, 10, 199, 44, 241,
+			9, 24, 144, 197, 72, 15, 10, 199, 37, 51, 1, 52, 148, 197, 72, 15, 10, 199, 36, 65, 65, 48, 148, 197, 72, 15, 10, 199, 24, 197,
+			73, 16, 148, 197, 72, 15, 10, 199, 21, 81, 143, 72, 148, 197, 72, 15, 10, 199, 60, 209, 5, 24, 147, 133, 72, 15, 10, 199, 5, 85,
+			15, 72, 148, 197, 72, 15, 10, 199, 4, 211, 210, 80, 148, 197, 72, 15, 12, 201, 20, 180, 208, 20, 66, 84, 72, 144, 197, 15, 8, 67,
+			8, 32, 192, 21, 0, 47, 0, 12, 201, 88, 20, 137, 4, 34, 76, 37, 65, 84, 15, 12, 201, 84, 213, 83, 36, 176, 76, 37, 65, 84,
+			15, 12, 201, 80, 82, 206, 36, 176, 76, 37, 65, 84, 15, 12, 201, 77, 1, 67, 36, 98, 67, 37, 65, 84, 15, 12, 201, 76, 147, 85,
+			49, 64, 78, 37, 65, 84, 15, 12, 201, 76, 83, 147, 37, 66, 86, 37, 65, 84, 15, 12, 201, 76, 83, 147, 36, 34, 76, 37, 65, 84,
+			15, 12, 201, 76, 83, 5, 45, 66, 86, 37, 65, 84, 15, 12, 201, 72, 83, 148, 4, 34, 76, 37, 65, 84, 15, 12, 201, 72, 80, 201,
+			65, 35, 195, 37, 65, 84, 15, 12, 201, 72, 80, 197, 65, 66, 86, 37, 65, 84, 15, 12, 201, 72, 21, 9, 60, 224, 76, 37, 65, 84,
+			15, 12, 201, 65, 34, 77, 37, 66, 86, 37, 65, 84, 15, 12, 201, 64, 84, 144, 48, 82, 211, 37, 65, 84, 15, 12, 201, 64, 84, 137,
+			60, 66, 67, 37, 65, 84, 15, 12, 201, 64, 20, 129, 48, 193, 76, 37, 65, 84, 15, 12, 201, 61, 34, 71, 36, 224, 76, 37, 65, 84,
+			15, 12, 201, 61, 4, 15, 73, 69, 78, 37, 65, 84, 15, 12, 201, 60, 97, 137, 12, 144, 76, 37, 65, 84, 15, 12, 201, 60, 97, 133,
+			57, 50, 86, 37, 65, 84, 15, 12, 201, 60, 34, 133, 45, 66, 86, 37, 65, 84, 15, 12, 201, 56, 21, 9, 60, 224, 76, 37, 65, 84,
+			15, 12, 201, 52, 21, 5, 72, 144, 76, 37, 65, 84, 15, 12, 201, 52, 20, 203, 84, 194, 78, 37, 65, 84, 15, 12, 201, 45, 34, 77,
+			36, 224, 76, 37, 65, 84, 15, 12, 201, 44, 243, 80, 48, 82, 211, 37, 65, 84, 15, 12, 201, 44, 20, 9, 48, 192, 82, 37, 65, 84,
+			15, 12, 201, 36, 229, 5, 57, 50, 86, 37, 65, 84, 15, 12, 201, 36, 225, 133, 72, 147, 210, 37, 65, 84, 15, 12, 201, 36, 225, 129,
+			57, 66, 76, 37, 65, 84, 15, 12, 201, 36, 212, 21, 49, 50, 86, 37, 65, 84, 15, 12, 201, 36, 211, 79, 73, 64, 76, 37, 65, 84,
+			15, 12, 201, 36, 195, 9, 45, 98, 68, 37, 65, 84, 15, 12, 201, 32, 148, 212, 61, 34, 67, 37, 65, 84, 15, 12, 201, 29, 32, 78,
+			16, 147, 211, 37, 65, 84, 15, 12, 201, 24, 19, 73, 48, 144, 82, 37, 65, 84, 15, 12, 201, 21, 97, 78, 81, 80, 76, 37, 65, 84,
+			15, 12, 201, 20, 193, 75, 81, 34, 67, 37, 65, 84, 15, 12, 201, 20, 97, 133, 45, 66, 86, 37, 65, 84, 15, 12, 201, 12, 148, 139,
+			84, 192, 82, 37, 65, 84, 15, 12, 201, 5, 85, 5, 57, 66, 67, 37, 65, 84, 15, 12, 201, 5, 52, 197, 73, 66, 86, 37, 65, 84,
+			15, 9, 198, 52, 17, 206, 21, 50, 84, 15, 9, 198, 4, 48, 197, 77, 50, 84, 15, 9, 198, 16, 148, 203, 4, 229, 0, 15, 9, 198,
+			8, 18, 203, 4, 229, 0, 15, 0, 13, 202, 88, 82, 147, 80, 16, 137, 48, 149, 5, 80, 15, 13, 202, 84, 226, 86, 21, 36, 193, 48,
+			149, 5, 80, 15, 13, 202, 77, 81, 199, 21, 53, 9, 88, 149, 5, 80, 15, 13, 202, 77, 80, 147, 36, 66, 65, 72, 149, 5, 80, 15,
+			13, 202, 77, 80, 138, 20, 181, 9, 88, 149, 5, 80, 15, 13, 202, 77, 2, 82, 37, 69, 65, 48, 149, 5, 80, 15, 13, 202, 72, 81,
+			140, 20, 180, 201, 88, 149, 5, 80, 15, 13, 202, 65, 49, 85, 16, 243, 153, 52, 149, 5, 80, 15, 13, 202, 65, 35, 196, 84, 181, 9,
+			88, 149, 5, 80, 15, 13, 202, 64, 245, 5, 57, 66, 65, 48, 149, 5, 80, 15, 13, 202, 64, 192, 85, 76, 144, 137, 48, 149, 5, 80,
+			15, 13, 202, 64, 84, 141, 37, 52, 201, 88, 149, 5, 80, 15, 13, 202, 44, 243, 135, 20, 226, 65, 48, 149, 5, 80, 15, 13, 202, 44,
+			243, 132, 84, 181, 9, 88, 149, 5, 80, 15, 13, 202, 44, 243, 12, 20, 181, 9, 88, 149, 5, 80, 15, 13, 202, 44, 243, 12, 20, 114,
+			65, 48, 149, 5, 80, 15, 13, 202, 37, 36, 137, 80, 16, 137, 48, 149, 5, 80, 15, 13, 202, 37, 36, 133, 29, 83, 1, 72, 149, 5,
+			80, 15, 13, 202, 36, 195, 5, 28, 149, 9, 52, 149, 5, 80, 15, 13, 202, 32, 85, 5, 72, 241, 197, 56, 149, 5, 80, 15, 13, 202,
+			24, 193, 75, 76, 144, 137, 48, 149, 5, 80, 15, 13, 202, 21, 128, 197, 57, 68, 137, 12, 149, 5, 80, 15, 13, 202, 20, 211, 212, 36,
+			243, 129, 48, 149, 5, 80, 15, 13, 202, 20, 180, 203, 49, 84, 201, 88, 149, 5, 80, 15, 13, 202, 16, 84, 18, 21, 52, 201, 88, 149,
+			5, 80, 15, 13, 202, 5, 69, 18, 4, 181, 9, 88, 149, 5, 80, 15, 13, 202, 4, 113, 210, 21, 52, 201, 88, 149, 5, 80, 15, 11,
+			200, 45, 96, 68, 72, 241, 143, 56, 144, 15, 11, 200, 8, 144, 140, 36, 243, 65, 56, 144, 15, 0, 9, 198, 52, 21, 5, 72, 145, 64,
+			15, 9, 198, 52, 18, 15, 56, 145, 64, 15, 9, 198, 24, 19, 73, 48, 145, 64, 15, 9, 198, 20, 225, 9, 88, 145, 64, 15, 9, 198,
+			8, 81, 207, 56, 145, 64, 15, 9, 198, 88, 149, 129, 72, 145, 64, 15, 9, 198, 80, 149, 1, 56, 145, 64, 15, 9, 198, 72, 83, 69,
+			16, 145, 64, 15, 9, 198, 65, 35, 208, 72, 145, 64, 15, 9, 198, 36, 225, 197, 56, 145, 64, 15, 9, 198, 4, 181, 129, 72, 145, 64,
+			15, 9, 198, 81, 37, 73, 76, 209, 64, 15, 9, 198, 76, 17, 9, 76, 209, 64, 15, 9, 198, 45, 147, 137, 76, 209, 64, 15, 9, 198,
+			32, 243, 9, 76, 209, 64, 15, 9, 198, 5, 85, 9, 76, 209, 64, 15, 9, 198, 5, 65, 73, 76, 209, 64, 15, 9, 198, 88, 18, 193,
+			56, 49, 64, 15, 9, 198, 76, 84, 150, 36, 49, 64, 15, 9, 198, 72, 243, 65, 56, 49, 64, 15, 9, 198, 64, 21, 18, 36, 49, 64,
+			15, 9, 198, 44, 20, 18, 36, 49, 64, 15, 9, 198, 44, 17, 5, 56, 49, 64, 15, 9, 198, 24, 18, 129, 56, 49, 64, 15, 9, 198,
+			4, 227, 143, 56, 49, 64, 15, 9, 198, 45, 84, 148, 4, 113, 64, 15, 17, 70, 8, 243, 132, 4, 113, 64, 71, 6, 108, 50, 72, 37,
+			75, 0, 15, 9, 198, 8, 192, 77, 4, 113, 64, 15, 9, 198, 8, 19, 132, 4, 113, 64, 15, 11, 70, 8, 243, 132, 4, 113, 64, 21,
+			0, 47, 0, 9, 198, 88, 148, 143, 48, 241, 201, 15, 9, 198, 73, 83, 143, 48, 241, 201, 15, 9, 198, 53, 146, 207, 48, 241, 201, 15,
+			9, 198, 36, 65, 79, 48, 241, 201, 15, 9, 198, 16, 83, 65, 28, 241, 201, 15, 10, 199, 29, 32, 77, 52, 241, 143, 56, 15, 10, 199,
+			4, 48, 197, 77, 50, 79, 56, 15, 10, 199, 16, 148, 195, 37, 3, 9, 56, 15, 10, 199, 24, 195, 210, 20, 229, 9, 56, 15, 8, 67,
+			12, 144, 64, 21, 0, 47, 0, 24, 73, 76, 176, 84, 20, 35, 193, 72, 65, 84, 89, 49, 6, 115, 37, 47, 71, 125, 12, 72, 14, 86,
+			0, 9, 198, 44, 21, 1, 48, 241, 192, 15, 9, 198, 32, 243, 79, 48, 241, 192, 15, 9, 198, 16, 21, 1, 48, 241, 192, 15, 9, 198,
+			29, 81, 5, 48, 145, 192, 15, 9, 198, 84, 69, 69, 48, 145, 192, 15, 9, 198, 20, 193, 77, 20, 229, 0, 15, 12, 201, 36, 229, 5,
+			72, 97, 82, 20, 228, 192, 15, 9, 198, 64, 20, 139, 4, 229, 0, 15, 13, 202, 76, 50, 1, 48, 37, 82, 29, 64, 71, 20, 15, 0,
+			0, 25, 70, 88, 148, 139, 20, 65, 64, 84, 6, 37, 34, 49, 36, 86, 13, 15, 89, 108, 0, 81, 115, 195, 165, 32, 9, 198, 24, 20,
+			203, 36, 225, 64, 15, 9, 198, 8, 82, 203, 5, 50, 78, 67, 9, 198, 28, 20, 142, 37, 51, 206, 15, 9, 198, 76, 19, 139, 80, 147,
+			206, 15, 9, 198, 24, 193, 75, 76, 147, 206, 15, 9, 198, 80, 19, 66, 85, 34, 78, 15, 9, 198, 52, 242, 203, 5, 50, 78, 15, 9,
+			198, 8, 82, 203, 5, 50, 78, 15, 9, 198, 88, 83, 137, 56, 65, 64, 15, 18, 70, 28, 83, 9, 56, 65, 64, 81, 36, 55, 6, 36,
+			50, 72, 13, 0, 15, 9, 198, 16, 84, 137, 56, 65, 64, 15, 10, 199, 29, 147, 78, 5, 53, 9, 44, 15, 10, 199, 16, 21, 1, 52,
+			21, 9, 44, 15, 12, 201, 12, 83, 148, 72, 19, 1, 76, 145, 78, 15, 9, 198, 64, 193, 74, 4, 65, 64, 15, 9, 198, 21, 53, 18,
+			4, 65, 64, 15, 9, 198, 9, 32, 86, 4, 65, 64, 15, 11, 70, 60, 97, 140, 36, 225, 64, 21, 0, 47, 0, 9, 198, 76, 147, 143,
+			48, 241, 201, 15, 9, 198, 60, 229, 15, 48, 241, 201, 15, 9, 198, 24, 243, 143, 48, 241, 201, 15, 11, 200, 45, 144, 133, 72, 225, 84,
+			36, 176, 15, 12, 201, 44, 241, 70, 24, 144, 201, 20, 229, 0, 15, 12, 201, 29, 85, 133, 72, 225, 77, 20, 229, 0, 15, 0, 11, 200,
+			77, 84, 208, 20, 228, 201, 60, 224, 15, 11, 200, 20, 180, 212, 20, 228, 201, 60, 224, 15, 11, 200, 4, 36, 207, 73, 5, 9, 60, 224,
+			15, 0, 12, 201, 44, 243, 66, 36, 224, 84, 61, 34, 75, 15, 10, 199, 81, 84, 130, 84, 193, 78, 80, 15, 10, 199, 81, 34, 86, 4,
+			193, 78, 80, 15, 10, 199, 72, 80, 197, 57, 49, 78, 80, 15, 10, 199, 65, 35, 205, 36, 225, 78, 80, 15, 10, 199, 44, 243, 135, 73,
+			81, 78, 80, 15, 10, 199, 20, 225, 15, 77, 49, 78, 80, 15, 10, 199, 5, 48, 197, 56, 65, 78, 80, 15, 10, 199, 77, 81, 134, 37,
+			48, 78, 80, 15, 10, 199, 76, 82, 213, 56, 64, 78, 80, 15, 10, 199, 72, 81, 21, 56, 64, 78, 80, 15, 10, 199, 36, 229, 18, 36,
+			112, 78, 80, 15, 0, 10, 199, 61, 4, 201, 28, 83, 9, 28, 15, 10, 199, 61, 3, 1, 16, 83, 9, 28, 15, 10, 199, 33, 83, 4,
+			76, 19, 9, 28, 15, 10, 199, 4, 229, 1, 28, 83, 9, 28, 15, 10, 199, 4, 228, 203, 84, 83, 9, 28, 15, 0, 11, 200, 81, 98,
+			86, 48, 17, 212, 36, 112, 15, 11, 200, 81, 83, 135, 76, 147, 132, 36, 112, 15, 11, 200, 80, 147, 12, 4, 65, 76, 36, 112, 15, 11,
+			200, 80, 18, 211, 45, 147, 4, 36, 112, 15, 11, 200, 77, 3, 9, 16, 17, 212, 36, 112, 15, 11, 200, 76, 176, 76, 44, 17, 212, 36,
+			112, 15, 11, 200, 72, 81, 197, 16, 84, 140, 36, 112, 15, 11, 200, 52, 148, 213, 56, 65, 76, 36, 112, 15, 11, 200, 52, 19, 135, 24,
+			243, 4, 36, 112, 15, 11, 200, 52, 19, 132, 32, 17, 148, 36, 112, 15, 11, 200, 44, 243, 4, 8, 195, 196, 36, 112, 15, 11, 200, 32,
+			84, 148, 84, 113, 76, 36, 112, 15, 11, 200, 29, 81, 6, 73, 145, 212, 36, 112, 15, 10, 199, 28, 83, 34, 4, 117, 9, 28, 15, 11,
+			200, 24, 244, 149, 17, 49, 76, 36, 112, 15, 11, 200, 24, 244, 147, 80, 19, 132, 36, 112, 15, 11, 200, 4, 229, 133, 56, 65, 76, 36,
+			112, 15, 11, 200, 4, 193, 129, 16, 84, 140, 36, 112, 15, 11, 200, 81, 98, 86, 48, 17, 212, 36, 112, 15, 11, 200, 77, 3, 9, 16,
+			17, 212, 36, 112, 15, 11, 200, 76, 176, 76, 44, 17, 212, 36, 112, 15, 0, 11, 200, 88, 145, 20, 50, 145, 148, 36, 112, 15, 11, 200,
+			77, 67, 210, 53, 241, 212, 36, 112, 15, 9, 198, 33, 145, 18, 61, 130, 68, 15, 9, 198, 32, 84, 130, 36, 50, 68, 15, 0, 11, 200,
+			52, 147, 137, 77, 65, 82, 36, 80, 15, 0, 9, 198, 72, 17, 9, 5, 67, 210, 15, 12, 201, 88, 83, 31, 73, 103, 210, 16, 145, 192,
+			15, 10, 199, 77, 67, 210, 4, 117, 9, 28, 15, 10, 199, 8, 20, 142, 4, 117, 9, 28, 15, 10, 199, 4, 225, 201, 88, 83, 9, 28,
+			15, 15, 204, 44, 19, 77, 21, 34, 5, 73, 33, 73, 56, 65, 64, 15, 10, 199, 77, 67, 210, 4, 117, 9, 28, 15, 10, 199, 8, 20,
+			142, 4, 117, 9, 28, 15, 9, 198, 77, 1, 67, 36, 19, 0, 15, 0, 10, 199, 78, 148, 135, 52, 241, 9, 28, 15, 0, 7, 196, 88,
+			19, 41, 72, 15, 8, 197, 81, 32, 67, 21, 32, 15, 8, 197, 85, 33, 71, 21, 32, 15, 8, 197, 44, 19, 11, 21, 32, 15, 8, 197,
+			21, 34, 71, 21, 32, 15, 8, 197, 8, 195, 203, 21, 32, 15, 11, 200, 81, 98, 86, 49, 39, 132, 36, 112, 15, 11, 200, 77, 66, 76,
+			25, 244, 132, 36, 112, 15, 11, 200, 17, 34, 75, 25, 243, 4, 36, 112, 15, 10, 199, 57, 147, 70, 60, 208, 78, 36, 15, 18, 70, 84,
+			225, 21, 48, 21, 0, 108, 50, 72, 40, 55, 6, 117, 47, 0, 15, 8, 197, 88, 19, 21, 5, 32, 15, 10, 69, 80, 80, 83, 21, 32,
+			21, 0, 47, 0, 9, 198, 92, 19, 9, 76, 148, 203, 15, 9, 198, 80, 83, 65, 80, 148, 203, 15, 9, 198, 76, 130, 73, 80, 148, 203,
+			15, 9, 198, 65, 35, 211, 4, 148, 203, 15, 9, 198, 49, 83, 129, 80, 148, 203, 15, 9, 198, 48, 144, 133, 72, 148, 203, 15, 9, 198,
+			9, 83, 9, 52, 148, 203, 15, 9, 198, 5, 67, 5, 80, 148, 203, 15, 9, 198, 4, 116, 129, 72, 148, 203, 15, 11, 200, 76, 178, 90,
+			60, 100, 133, 56, 144, 15, 0, 8, 197, 80, 21, 140, 21, 64, 15, 8, 197, 80, 16, 140, 21, 64, 15, 8, 197, 76, 242, 204, 21, 64,
+			15, 8, 197, 17, 80, 140, 21, 64, 15, 8, 197, 45, 80, 137, 77, 64, 15, 9, 198, 72, 85, 137, 76, 147, 206, 15, 9, 198, 16, 80,
+			201, 76, 147, 206, 15, 8, 197, 76, 241, 134, 37, 64, 15, 8, 197, 24, 84, 146, 37, 64, 15, 9, 198, 81, 84, 141, 4, 194, 78, 15,
+			12, 201, 28, 145, 193, 57, 67, 205, 4, 226, 64, 15, 10, 199, 44, 20, 213, 37, 53, 9, 44, 15, 8, 197, 64, 245, 5, 57, 64, 15,
+			8, 197, 80, 17, 198, 5, 64, 15, 8, 197, 44, 241, 206, 5, 64, 15, 9, 198, 28, 83, 137, 80, 19, 0, 15, 9, 198, 24, 197, 86,
+			36, 19, 0, 15, 9, 198, 5, 51, 195, 36, 19, 0, 15, 8, 197, 53, 85, 1, 57, 64, 15, 0, 13, 202, 16, 81, 137, 9, 34, 76,
+			48, 21, 15, 72, 15, 9, 198, 53, 149, 15, 48, 241, 201, 15, 9, 198, 24, 147, 15, 48, 241, 201, 15, 11, 200, 84, 67, 5, 88, 84,
+			137, 56, 112, 15, 11, 200, 81, 32, 83, 76, 84, 137, 56, 112, 15, 11, 200, 80, 20, 137, 24, 84, 137, 56, 112, 15, 11, 200, 77, 84,
+			16, 48, 84, 137, 56, 112, 15, 11, 200, 64, 242, 213, 48, 84, 137, 56, 112, 15, 11, 200, 64, 193, 84, 80, 84, 137, 56, 112, 15, 11,
+			200, 64, 19, 143, 72, 84, 137, 56, 112, 15, 11, 200, 64, 17, 201, 56, 84, 137, 56, 112, 15, 11, 200, 60, 33, 21, 12, 84, 137, 56,
+			112, 15, 11, 200, 56, 21, 137, 28, 84, 137, 56, 112, 15, 11, 200, 53, 83, 11, 80, 84, 137, 56, 112, 15, 11, 200, 48, 144, 201, 80,
+			84, 137, 56, 112, 15, 11, 200, 45, 82, 143, 56, 84, 137, 56, 112, 15, 11, 200, 44, 20, 21, 56, 84, 137, 56, 112, 15, 11, 200, 36,
+			229, 15, 56, 84, 137, 56, 112, 15, 11, 200, 36, 225, 9, 44, 84, 137, 56, 112, 15, 11, 200, 36, 225, 9, 12, 84, 137, 56, 112, 15,
+			11, 200, 29, 34, 76, 48, 84, 137, 56, 112, 15, 11, 200, 29, 32, 68, 84, 84, 137, 56, 112, 15, 11, 200, 28, 195, 211, 76, 84, 137,
+			56, 112, 15, 11, 200, 25, 35, 212, 80, 84, 137, 56, 112, 15, 11, 200, 24, 192, 77, 8, 84, 137, 56, 112, 15, 11, 200, 21, 96, 76,
+			84, 84, 137, 56, 112, 15, 11, 200, 17, 33, 83, 76, 84, 137, 56, 112, 15, 11, 200, 16, 148, 137, 28, 84, 137, 56, 112, 15, 11, 200,
+			16, 85, 15, 56, 84, 137, 56, 112, 15, 11, 200, 16, 84, 15, 56, 84, 137, 56, 112, 15, 11, 200, 16, 83, 79, 48, 84, 137, 56, 112,
+			15, 11, 200, 16, 82, 207, 72, 84, 137, 56, 112, 15, 11, 200, 16, 81, 137, 56, 84, 137, 56, 112, 15, 11, 200, 12, 148, 197, 48, 84,
+			137, 56, 112, 15, 11, 200, 5, 34, 201, 88, 84, 137, 56, 112, 15, 11, 200, 4, 195, 15, 44, 84, 137, 56, 112, 15, 11, 200, 4, 33,
+			9, 12, 84, 137, 56, 112, 15, 16, 205, 52, 148, 213, 56, 65, 76, 76, 84, 214, 125, 33, 9, 28, 15, 0, 8, 197, 72, 17, 9, 21,
+			32, 15, 8, 197, 52, 81, 9, 21, 32, 15, 8, 197, 24, 243, 9, 21, 32, 15, 9, 198, 77, 64, 78, 56, 147, 204, 15, 12, 201, 124,
+			181, 137, 48, 144, 146, 37, 51, 69, 15, 9, 198, 36, 228, 197, 72, 21, 0, 15, 8, 197, 65, 83, 19, 5, 32, 15, 8, 197, 64, 84,
+			211, 5, 32, 15, 8, 197, 28, 195, 211, 5, 32, 15, 4, 193, 228, 43, 0, 11, 200, 8, 20, 139, 20, 229, 9, 56, 80, 15, 12, 201,
+			81, 32, 78, 76, 192, 84, 36, 243, 128, 15, 12, 201, 77, 1, 75, 84, 192, 84, 36, 243, 128, 15, 12, 201, 72, 84, 197, 73, 96, 84,
+			36, 243, 128, 15, 12, 201, 65, 35, 199, 72, 84, 211, 36, 243, 128, 15, 12, 201, 64, 84, 134, 61, 32, 84, 36, 243, 128, 15, 12, 201,
+			60, 36, 197, 73, 96, 84, 36, 243, 128, 15, 12, 201, 48, 19, 69, 57, 64, 84, 36, 243, 128, 15, 12, 201, 45, 83, 13, 36, 224, 84,
+			36, 243, 128, 15, 12, 201, 44, 243, 147, 84, 212, 20, 36, 243, 128, 15, 12, 201, 44, 243, 142, 61, 64, 84, 36, 243, 128, 15, 12, 201,
+			44, 243, 80, 5, 32, 84, 36, 243, 128, 15, 12, 201, 44, 243, 77, 85, 64, 84, 36, 243, 128, 15, 12, 201, 44, 243, 66, 36, 224, 84,
+			36, 243, 128, 15, 12, 201, 44, 19, 11, 84, 192, 84, 36, 243, 128, 15, 12, 201, 36, 229, 5, 29, 32, 84, 36, 243, 128, 15, 12, 201,
+			36, 228, 208, 37, 32, 84, 36, 243, 128, 15, 12, 201, 36, 225, 9, 28, 224, 84, 36, 243, 128, 15, 12, 201, 29, 32, 84, 84, 192, 84,
+			36, 243, 128, 15, 12, 201, 20, 180, 193, 49, 64, 84, 36, 243, 128, 15, 12, 201, 16, 84, 212, 36, 224, 84, 36, 243, 128, 15, 12, 201,
+			16, 84, 203, 72, 148, 20, 36, 243, 128, 15, 12, 201, 16, 84, 197, 73, 64, 84, 36, 243, 128, 15, 12, 201, 16, 84, 15, 73, 64, 84,
+			36, 243, 128, 15, 12, 201, 16, 82, 204, 36, 224, 84, 36, 243, 128, 15, 12, 201, 8, 19, 12, 61, 64, 84, 36, 243, 128, 15, 12, 201,
+			5, 69, 5, 77, 64, 84, 36, 243, 128, 15, 12, 201, 5, 4, 18, 60, 32, 84, 36, 243, 128, 15, 12, 201, 4, 36, 197, 57, 64, 84,
+			36, 243, 128, 15, 15, 204, 76, 19, 77, 20, 229, 18, 124, 178, 197, 48, 145, 192, 15, 15, 204, 28, 83, 142, 20, 213, 18, 124, 225, 197,
+			48, 145, 192, 15, 9, 198, 88, 242, 193, 48, 148, 203, 15, 9, 198, 56, 243, 65, 16, 148, 203, 15, 9, 198, 17, 147, 129, 52, 148, 203,
+			15, 9, 198, 4, 194, 193, 48, 148, 203, 15, 0, 30, 69, 76, 80, 210, 21, 64, 89, 37, 81, 34, 36, 72, 15, 89, 6, 132, 84, 37,
+			89, 0, 81, 115, 101, 114, 118, 105, 99, 101, 32, 9, 198, 76, 16, 143, 82, 148, 128, 15, 9, 198, 52, 20, 143, 18, 148, 128, 15, 9,
+			198, 40, 243, 135, 50, 148, 128, 15, 9, 198, 12, 128, 82, 54, 148, 128, 15, 8, 197, 72, 82, 210, 85, 64, 15, 8, 197, 81, 84, 137,
+			77, 64, 15, 8, 197, 80, 19, 201, 77, 64, 15, 8, 197, 76, 241, 137, 77, 64, 15, 8, 197, 72, 16, 201, 77, 64, 15, 8, 197, 65,
+			84, 137, 77, 64, 15, 8, 197, 56, 22, 137, 77, 64, 15, 8, 197, 52, 243, 137, 77, 64, 15, 8, 197, 44, 244, 137, 77, 64, 15, 9,
+			198, 72, 81, 149, 76, 147, 206, 15, 9, 198, 16, 85, 143, 80, 147, 206, 15, 8, 197, 104, 83, 204, 37, 64, 15, 8, 197, 64, 21, 5,
+			57, 64, 15, 8, 197, 48, 21, 5, 57, 64, 15, 8, 197, 8, 147, 208, 5, 64, 15, 8, 197, 64, 81, 1, 57, 64, 15, 8, 197, 60,
+			181, 1, 57, 64, 15, 8, 197, 4, 181, 1, 57, 64, 15, 0, 7, 195, 92, 131, 192, 13, 42, 9, 198, 81, 148, 15, 48, 241, 201, 15,
+			9, 198, 77, 68, 129, 80, 81, 201, 15, 9, 198, 76, 84, 143, 48, 241, 201, 15, 9, 198, 4, 229, 15, 48, 241, 201, 15, 10, 199, 36,
+			229, 133, 73, 50, 79, 56, 15, 10, 199, 4, 181, 129, 52, 20, 137, 56, 15, 15, 204, 36, 229, 5, 73, 97, 78, 80, 147, 206, 37, 51,
+			69, 15, 11, 200, 20, 193, 75, 81, 35, 206, 36, 176, 15, 0, 15, 70, 64, 20, 148, 61, 85, 0, 48, 121, 47, 6, 40, 0, 15, 9,
+			198, 24, 21, 86, 37, 53, 0, 15, 11, 200, 76, 84, 1, 72, 21, 9, 60, 224, 15, 11, 200, 60, 35, 9, 28, 21, 9, 60, 224, 15,
+			11, 200, 44, 243, 150, 84, 196, 201, 60, 224, 15, 11, 200, 44, 243, 147, 84, 213, 9, 60, 224, 15, 11, 200, 44, 243, 142, 20, 180, 201,
+			60, 224, 15, 11, 200, 44, 243, 12, 20, 181, 9, 60, 224, 15, 11, 200, 24, 145, 213, 72, 21, 9, 60, 224, 15, 0, 12, 201, 81, 33,
+			80, 4, 224, 84, 36, 243, 128, 15, 12, 201, 65, 35, 198, 4, 224, 84, 36, 243, 128, 15, 12, 201, 44, 243, 208, 21, 32, 84, 36, 243,
+			128, 15, 12, 201, 36, 228, 203, 72, 148, 20, 36, 243, 128, 15, 12, 201, 36, 226, 193, 72, 224, 84, 36, 243, 128, 15, 12, 201, 25, 37,
+			83, 81, 32, 84, 36, 243, 128, 15, 12, 201, 21, 96, 80, 61, 32, 84, 36, 243, 128, 15, 12, 201, 16, 84, 18, 5, 96, 84, 36, 243,
+			128, 15, 12, 201, 5, 36, 133, 77, 64, 84, 36, 243, 128, 15, 12, 201, 4, 97, 133, 45, 64, 84, 36, 243, 128, 15, 12, 201, 4, 48,
+			197, 65, 64, 84, 36, 243, 128, 15, 18, 71, 12, 193, 86, 20, 192, 78, 16, 49, 55, 37, 12, 84, 55, 118, 50, 0, 0, 10, 199, 52,
+			147, 133, 72, 19, 15, 28, 15, 10, 199, 45, 33, 77, 48, 243, 15, 28, 15, 10, 199, 32, 21, 130, 36, 243, 15, 28, 15, 9, 198, 76,
+			84, 150, 36, 49, 82, 15, 9, 198, 16, 84, 193, 72, 209, 82, 15, 9, 198, 5, 4, 12, 36, 177, 82, 15, 9, 198, 4, 96, 84, 36,
+			177, 82, 15, 0, 11, 200, 4, 229, 18, 61, 3, 204, 60, 112, 15, 11, 200, 4, 195, 5, 72, 115, 204, 60, 112, 15, 0, 9, 198, 64,
+			144, 78, 37, 53, 0, 15, 0, 9, 198, 29, 32, 70, 60, 195, 199, 15, 0, 10, 199, 53, 84, 201, 44, 243, 15, 28, 15, 10, 199, 25,
+			85, 21, 72, 243, 15, 28, 15, 10, 199, 21, 50, 201, 52, 243, 15, 28, 15, 10, 199, 16, 83, 132, 72, 243, 15, 28, 15, 8, 66, 65,
+			224, 48, 126, 0, 72, 0, 8, 197, 80, 83, 204, 60, 112, 15, 8, 197, 8, 147, 204, 60, 112, 15, 6, 195, 64, 241, 77, 15, 9, 198,
+			72, 84, 212, 4, 224, 197, 15, 9, 198, 20, 210, 78, 20, 224, 197, 15, 9, 198, 20, 193, 71, 4, 224, 197, 15, 0, 27, 68, 32, 21,
+			84, 20, 2, 39, 12, 47, 49, 123, 6, 47, 129, 12, 34, 0, 81, 99, 111, 117, 116, 117, 114, 101, 32, 9, 198, 52, 20, 135, 21, 34,
+			84, 15, 9, 198, 24, 244, 198, 61, 34, 84, 15, 9, 198, 17, 84, 16, 20, 66, 84, 15, 7, 196, 16, 85, 20, 20, 76, 0, 21, 68,
+			53, 229, 20, 20, 65, 6, 109, 47, 14, 15, 107, 117, 0, 81, 104, 97, 118, 101, 32, 8, 197, 61, 51, 79, 76, 80, 15, 8, 197, 52,
+			147, 79, 76, 80, 15, 8, 197, 45, 80, 133, 72, 80, 15, 8, 197, 28, 17, 197, 72, 80, 15, 8, 197, 24, 147, 5, 72, 80, 15, 8,
+			197, 16, 244, 197, 72, 80, 15, 9, 198, 88, 83, 133, 72, 148, 203, 15, 9, 198, 76, 243, 65, 48, 148, 203, 15, 9, 198, 64, 83, 1,
+			28, 148, 203, 15, 9, 198, 57, 83, 69, 72, 148, 203, 15, 9, 198, 37, 51, 1, 52, 148, 203, 15, 9, 198, 36, 229, 73, 80, 148, 203,
+			15, 9, 198, 32, 19, 73, 80, 148, 203, 15, 9, 198, 21, 66, 79, 64, 148, 203, 15, 9, 198, 16, 82, 193, 16, 148, 203, 15, 9, 198,
+			5, 50, 197, 80, 148, 203, 15, 9, 198, 4, 181, 83, 80, 148, 203, 15, 8, 197, 44, 147, 133, 76, 80, 15, 8, 197, 28, 83, 133, 76,
+			80, 15, 8, 197, 72, 21, 129, 28, 80, 15, 10, 69, 72, 83, 65, 44, 80, 21, 0, 47, 0, 10, 199, 80, 244, 142, 37, 34, 83, 44,
+			15, 10, 199, 77, 147, 143, 65, 66, 83, 44, 15, 10, 199, 76, 243, 9, 77, 66, 83, 44, 15, 10, 199, 76, 83, 73, 61, 66, 83, 44,
+			15, 10, 199, 76, 82, 212, 21, 34, 83, 44, 15, 10, 199, 61, 53, 9, 56, 66, 83, 44, 15, 10, 199, 57, 81, 9, 77, 66, 83, 44,
+			15, 10, 199, 45, 84, 147, 61, 34, 83, 44, 15, 10, 199, 20, 179, 5, 45, 66, 83, 44, 15, 10, 199, 20, 97, 77, 21, 34, 83, 44,
+			15, 10, 199, 17, 148, 198, 5, 66, 83, 44, 15, 10, 199, 17, 32, 86, 36, 66, 83, 44, 15, 10, 199, 16, 145, 1, 45, 66, 83, 44,
+			15, 10, 199, 9, 84, 149, 56, 66, 83, 44, 15, 10, 199, 8, 20, 130, 5, 34, 83, 44, 15, 10, 199, 5, 67, 1, 57, 66, 83, 44,
+			15, 9, 198, 60, 49, 65, 56, 145, 78, 15, 9, 198, 44, 242, 31, 72, 83, 147, 15, 9, 198, 4, 66, 31, 72, 83, 147, 15, 0, 6,
+			195, 37, 55, 210, 15, 8, 197, 4, 224, 76, 60, 112, 15, 9, 198, 52, 84, 139, 60, 227, 205, 15, 12, 201, 36, 212, 5, 73, 66, 78,
+			20, 229, 0, 15, 0, 10, 199, 61, 37, 15, 16, 242, 211, 36, 15, 9, 198, 76, 243, 22, 20, 229, 0, 15, 9, 198, 20, 210, 78, 20,
+			229, 0, 15, 0, 8, 197, 52, 20, 137, 56, 80, 15, 12, 201, 81, 32, 78, 76, 18, 212, 36, 243, 128, 15, 12, 201, 72, 84, 212, 37,
+			69, 84, 36, 243, 128, 15, 8, 197, 72, 20, 197, 72, 80, 15, 8, 197, 64, 243, 5, 72, 80, 15, 8, 197, 52, 83, 5, 72, 80, 15,
+			8, 197, 33, 84, 197, 72, 80, 15, 8, 197, 8, 20, 197, 72, 80, 15, 8, 197, 64, 20, 133, 76, 80, 15, 11, 200, 64, 244, 212, 49,
+			81, 9, 84, 208, 15, 8, 197, 52, 83, 129, 28, 80, 15, 8, 197, 28, 20, 129, 28, 80, 15, 13, 69, 77, 112, 78, 20, 80, 89, 58,
+			109, 50, 111, 0, 15, 69, 5, 35, 5, 56, 80, 121, 55, 6, 37, 12, 50, 0, 41, 0, 10, 199, 88, 19, 149, 5, 66, 83, 44, 15,
+			10, 199, 80, 83, 12, 85, 34, 83, 44, 15, 10, 199, 77, 147, 148, 21, 66, 83, 44, 15, 10, 199, 77, 83, 142, 37, 66, 83, 44, 15,
+			10, 199, 76, 242, 210, 5, 66, 83, 44, 15, 10, 199, 76, 83, 65, 57, 66, 83, 44, 15, 10, 199, 72, 243, 65, 57, 66, 83, 44, 15,
+			10, 199, 72, 17, 129, 20, 194, 83, 44, 15, 10, 199, 65, 54, 75, 61, 66, 83, 44, 15, 10, 199, 65, 35, 211, 60, 66, 83, 44, 15,
+			10, 199, 64, 84, 137, 60, 66, 83, 44, 15, 10, 199, 61, 32, 84, 61, 34, 83, 44, 15, 10, 199, 52, 21, 82, 37, 66, 83, 44, 15,
+			10, 199, 52, 19, 201, 77, 66, 83, 44, 15, 10, 199, 49, 147, 70, 5, 66, 83, 44, 15, 10, 199, 48, 241, 201, 77, 66, 83, 44, 15,
+			10, 199, 45, 80, 137, 77, 66, 83, 44, 15, 10, 199, 44, 194, 77, 5, 66, 83, 44, 15, 10, 199, 21, 96, 83, 61, 34, 83, 44, 15,
+			10, 199, 21, 51, 212, 21, 34, 83, 44, 15, 10, 199, 20, 179, 9, 65, 66, 83, 44, 15, 10, 199, 17, 32, 75, 60, 226, 83, 44, 15,
+			10, 199, 16, 241, 205, 5, 66, 83, 44, 15, 10, 199, 16, 84, 208, 61, 66, 83, 44, 15, 10, 199, 5, 37, 9, 77, 66, 83, 44, 15,
+			10, 199, 5, 35, 205, 5, 66, 83, 44, 15, 10, 199, 5, 4, 137, 61, 34, 83, 44, 15, 10, 199, 4, 192, 77, 60, 66, 83, 44, 15,
+			10, 199, 4, 115, 143, 77, 66, 83, 44, 15, 0, 9, 198, 36, 225, 15, 48, 241, 201, 15, 10, 199, 16, 145, 134, 85, 50, 79, 56, 15,
+			11, 200, 80, 83, 5, 52, 21, 9, 76, 176, 15, 11, 200, 76, 241, 15, 52, 149, 9, 76, 176, 15, 11, 200, 64, 225, 85, 52, 21, 9,
+			76, 176, 15, 11, 200, 52, 243, 143, 48, 149, 9, 76, 176, 15, 11, 200, 52, 85, 15, 57, 147, 73, 76, 176, 15, 11, 200, 29, 147, 78,
+			5, 53, 9, 76, 176, 15, 11, 200, 29, 32, 77, 52, 21, 9, 76, 176, 15, 11, 200, 25, 148, 201, 85, 33, 201, 76, 176, 15, 11, 200,
+			24, 195, 210, 37, 53, 9, 76, 176, 15, 11, 200, 24, 147, 15, 76, 241, 137, 76, 176, 15, 11, 200, 20, 225, 82, 28, 85, 9, 76, 176,
+			15, 11, 200, 8, 147, 199, 72, 17, 137, 76, 176, 15, 11, 200, 8, 16, 153, 48, 243, 137, 76, 176, 15, 11, 200, 4, 99, 210, 37, 53,
+			9, 76, 176, 15, 14, 203, 58, 148, 146, 21, 53, 78, 16, 38, 78, 37, 64, 15, 8, 197, 81, 32, 71, 36, 176, 15, 8, 197, 8, 147,
+			206, 36, 176, 15, 7, 196, 5, 66, 5, 56, 15, 7, 196, 61, 51, 65, 56, 16, 7, 196, 16, 82, 193, 56, 16, 14, 70, 12, 245, 82,
+			80, 225, 89, 49, 125, 47, 50, 111, 0, 14, 70, 12, 20, 140, 37, 51, 5, 49, 121, 55, 136, 55, 0, 0, 12, 201, 80, 83, 5, 60,
+			195, 199, 37, 50, 192, 15, 12, 201, 80, 82, 206, 60, 195, 199, 37, 50, 192, 15, 12, 201, 56, 85, 82, 60, 195, 199, 37, 50, 192, 15,
+			12, 201, 52, 244, 134, 60, 195, 199, 37, 50, 192, 15, 12, 201, 52, 85, 18, 60, 195, 199, 37, 50, 192, 15, 10, 199, 88, 17, 5, 52,
+			80, 213, 52, 15, 9, 198, 28, 198, 80, 80, 146, 192, 15, 9, 198, 8, 245, 1, 56, 146, 192, 15, 0, 25, 73, 8, 80, 200, 4, 209,
+			76, 76, 245, 147, 71, 114, 91, 118, 65, 6, 114, 60, 89, 6, 109, 58, 89, 0, 12, 201, 81, 32, 78, 76, 101, 83, 36, 243, 128, 15,
+			12, 201, 77, 84, 16, 72, 84, 211, 36, 243, 128, 15, 12, 201, 72, 84, 1, 73, 66, 84, 36, 243, 128, 15, 12, 201, 45, 96, 68, 72,
+			147, 12, 36, 243, 128, 15, 12, 201, 44, 243, 80, 72, 84, 211, 36, 243, 128, 15, 12, 201, 36, 229, 5, 72, 18, 212, 36, 243, 128, 15,
+			12, 201, 20, 180, 208, 20, 66, 84, 36, 243, 128, 15, 9, 198, 48, 149, 147, 4, 194, 71, 15, 9, 198, 28, 83, 89, 80, 194, 71, 15,
+			9, 198, 20, 225, 143, 48, 66, 71, 15, 9, 67, 76, 128, 87, 91, 125, 12, 0, 0, 9, 198, 80, 84, 141, 36, 226, 64, 15, 9, 198,
+			72, 80, 76, 37, 48, 66, 15, 9, 198, 45, 34, 84, 37, 48, 66, 15, 9, 198, 44, 243, 150, 20, 224, 66, 15, 0, 9, 198, 52, 17,
+			206, 21, 50, 69, 15, 9, 198, 32, 20, 141, 60, 226, 69, 15, 9, 198, 8, 84, 153, 48, 194, 69, 15, 12, 201, 8, 85, 78, 17, 33,
+			82, 36, 225, 5, 15, 7, 196, 88, 81, 193, 56, 15, 7, 196, 61, 33, 193, 56, 16, 0, 9, 198, 88, 149, 1, 48, 148, 212, 15, 9,
+			198, 72, 246, 65, 48, 148, 212, 15, 9, 198, 64, 244, 21, 48, 148, 212, 15, 9, 198, 61, 5, 9, 52, 148, 212, 15, 9, 198, 56, 146,
+			9, 48, 148, 212, 15, 9, 198, 48, 246, 65, 48, 148, 212, 15, 9, 198, 37, 51, 1, 52, 148, 212, 15, 9, 198, 36, 65, 65, 48, 148,
+			212, 15, 9, 198, 32, 21, 129, 72, 148, 212, 15, 9, 198, 24, 21, 1, 48, 148, 212, 15, 9, 198, 8, 145, 193, 52, 148, 212, 15, 9,
+			198, 4, 224, 82, 44, 148, 212, 15, 9, 198, 4, 194, 217, 52, 148, 212, 15, 9, 198, 4, 181, 129, 72, 148, 212, 15, 10, 199, 16, 83,
+			79, 45, 32, 84, 36, 15, 0, 10, 199, 72, 81, 143, 72, 210, 83, 80, 15, 10, 199, 64, 243, 25, 80, 82, 83, 80, 15, 10, 199, 20,
+			180, 207, 72, 50, 83, 80, 15, 10, 199, 4, 69, 133, 57, 66, 83, 80, 15, 8, 197, 16, 144, 68, 20, 208, 15, 0, 9, 198, 72, 80,
+			197, 65, 67, 210, 15, 9, 198, 84, 99, 204, 60, 114, 64, 15, 9, 198, 61, 67, 204, 60, 114, 64, 15, 9, 198, 48, 85, 1, 72, 114,
+			64, 15, 9, 198, 21, 67, 204, 60, 114, 64, 15, 9, 198, 5, 3, 204, 60, 114, 64, 15, 11, 200, 77, 3, 206, 80, 19, 137, 77, 64,
+			15, 11, 200, 76, 83, 147, 84, 19, 9, 77, 64, 15, 11, 200, 52, 243, 143, 64, 243, 9, 77, 64, 15, 11, 200, 48, 81, 201, 80, 147,
+			73, 77, 64, 15, 11, 200, 44, 19, 131, 20, 195, 9, 77, 64, 15, 11, 200, 24, 81, 5, 72, 19, 9, 77, 64, 15, 11, 200, 20, 180,
+			212, 72, 83, 73, 77, 64, 15, 11, 200, 4, 224, 66, 5, 5, 9, 77, 64, 15, 9, 198, 21, 2, 68, 20, 210, 64, 15, 9, 198, 80,
+			82, 211, 80, 147, 0, 15, 8, 198, 4, 35, 210, 36, 114, 64, 0, 12, 201, 32, 243, 105, 61, 0, 84, 37, 50, 192, 15, 10, 199, 32,
+			243, 105, 61, 0, 84, 36, 15, 9, 198, 32, 243, 105, 61, 0, 84, 15, 0, 11, 200, 20, 194, 77, 36, 224, 84, 61, 32, 15, 8, 197,
+			12, 21, 83, 21, 32, 15, 9, 198, 21, 53, 9, 52, 21, 0, 15, 8, 197, 4, 181, 21, 5, 32, 15, 0, 11, 200, 56, 82, 210, 60,
+			208, 78, 80, 144, 15, 12, 201, 12, 83, 148, 72, 148, 5, 80, 19, 0, 15, 0, 24, 69, 88, 19, 132, 21, 64, 84, 117, 50, 13, 86,
+			15, 89, 47, 6, 36, 0, 81, 115, 116, 101, 103, 32, 16, 69, 16, 148, 208, 85, 64, 72, 37, 89, 71, 6, 129, 47, 0, 15, 8, 197,
+			88, 147, 204, 21, 64, 15, 8, 197, 5, 37, 9, 77, 64, 15, 10, 199, 84, 226, 84, 5, 34, 83, 44, 15, 10, 199, 80, 83, 211, 60,
+			98, 83, 44, 15, 10, 199, 77, 147, 70, 60, 226, 83, 44, 15, 10, 199, 77, 83, 77, 5, 34, 83, 44, 15, 10, 199, 76, 177, 77, 5,
+			66, 83, 44, 15, 10, 199, 76, 86, 9, 77, 66, 83, 44, 15, 10, 199, 76, 17, 9, 77, 66, 83, 44, 15, 10, 199, 52, 20, 148, 101,
+			34, 83, 44, 15, 10, 199, 32, 243, 9, 77, 66, 83, 44, 15, 10, 199, 32, 149, 20, 37, 66, 83, 44, 15, 10, 199, 32, 148, 212, 61,
+			34, 83, 44, 15, 10, 199, 32, 83, 22, 21, 66, 83, 44, 15, 10, 199, 28, 19, 1, 45, 66, 83, 44, 15, 10, 199, 24, 20, 129, 60,
+			226, 83, 44, 15, 10, 199, 20, 226, 204, 37, 66, 83, 44, 15, 10, 199, 20, 224, 217, 44, 194, 83, 44, 15, 10, 199, 20, 195, 9, 65,
+			66, 83, 44, 15, 10, 199, 17, 32, 77, 5, 66, 83, 44, 15, 10, 199, 16, 243, 69, 77, 66, 83, 44, 15, 10, 199, 16, 149, 82, 21,
+			66, 83, 44, 15, 10, 199, 16, 144, 66, 21, 66, 83, 44, 15, 10, 199, 8, 84, 130, 21, 34, 83, 44, 15, 10, 199, 5, 85, 9, 77,
+			66, 83, 44, 15, 10, 199, 5, 65, 73, 77, 66, 83, 44, 15, 10, 199, 4, 224, 70, 61, 34, 83, 44, 15, 8, 197, 4, 229, 18, 37,
+			64, 15, 8, 197, 12, 83, 69, 57, 64, 15, 8, 197, 65, 35, 194, 5, 64, 15, 9, 198, 36, 195, 15, 100, 19, 0, 15, 0, 7, 196,
+			88, 147, 169, 76, 15, 7, 196, 88, 83, 169, 76, 15, 7, 196, 76, 243, 143, 72, 15, 13, 202, 4, 67, 73, 56, 148, 212, 72, 21, 15,
+			72, 15, 7, 196, 32, 245, 133, 72, 15, 7, 196, 8, 242, 129, 72, 15, 13, 202, 36, 226, 207, 52, 209, 78, 77, 84, 129, 8, 15, 0,
+			7, 196, 52, 19, 41, 72, 15, 7, 196, 45, 83, 41, 72, 15, 8, 197, 61, 32, 84, 61, 32, 15, 10, 199, 44, 83, 79, 80, 18, 211,
+			36, 15, 10, 199, 24, 245, 15, 80, 18, 211, 36, 15, 8, 197, 9, 82, 203, 5, 32, 15, 0, 9, 198, 49, 82, 211, 86, 148, 192, 15,
+			7, 196, 80, 82, 83, 80, 15, 7, 196, 16, 82, 83, 80, 15, 11, 200, 8, 83, 133, 24, 144, 201, 84, 208, 67, 11, 200, 84, 226, 70,
+			61, 35, 69, 72, 80, 15, 11, 200, 80, 83, 5, 24, 243, 133, 72, 80, 15, 11, 200, 64, 83, 147, 36, 243, 133, 72, 80, 15, 11, 200,
+			52, 81, 9, 12, 147, 133, 72, 80, 15, 11, 200, 52, 17, 193, 76, 147, 133, 72, 80, 15, 11, 200, 44, 192, 85, 77, 83, 5, 72, 80,
+			15, 11, 200, 8, 83, 133, 24, 144, 201, 84, 208, 15, 24, 4, 95, 57, 88, 111, 107, 117, 55, 83, 6, 115, 65, 89, 36, 50, 89, 47,
+			129, 84, 14, 50, 14, 0, 0, 8, 197, 20, 115, 201, 77, 64, 15, 13, 202, 25, 33, 75, 88, 83, 148, 21, 34, 78, 28, 15, 13, 202,
+			25, 32, 71, 52, 83, 148, 21, 34, 78, 28, 15, 13, 202, 4, 178, 210, 20, 66, 84, 21, 34, 78, 28, 15, 10, 199, 104, 20, 137, 77,
+			66, 83, 44, 15, 10, 199, 88, 84, 137, 77, 66, 83, 44, 15, 10, 199, 80, 83, 210, 21, 66, 83, 44, 15, 10, 199, 80, 19, 201, 77,
+			66, 83, 44, 15, 10, 199, 77, 147, 80, 5, 66, 83, 44, 15, 10, 199, 76, 245, 138, 21, 66, 83, 44, 15, 10, 199, 76, 241, 137, 77,
+			66, 83, 44, 15, 10, 199, 65, 35, 198, 21, 66, 83, 44, 15, 10, 199, 64, 20, 211, 37, 98, 83, 44, 15, 10, 199, 61, 51, 65, 56,
+			226, 83, 44, 15, 10, 199, 56, 85, 82, 61, 66, 83, 44, 15, 10, 199, 56, 83, 204, 37, 66, 83, 44, 15, 10, 199, 56, 82, 210, 61,
+			66, 83, 44, 15, 10, 199, 56, 20, 139, 61, 66, 83, 44, 15, 10, 199, 52, 243, 137, 77, 66, 83, 44, 15, 10, 199, 52, 19, 4, 37,
+			98, 83, 44, 15, 10, 199, 52, 17, 206, 21, 66, 83, 44, 15, 10, 199, 33, 148, 14, 61, 66, 83, 44, 15, 10, 199, 32, 84, 141, 21,
+			66, 83, 44, 15, 10, 199, 20, 193, 75, 81, 34, 83, 44, 15, 10, 199, 20, 115, 201, 77, 66, 83, 44, 15, 10, 199, 17, 147, 129, 77,
+			66, 83, 44, 15, 10, 199, 8, 19, 5, 5, 34, 83, 44, 15, 10, 199, 4, 224, 76, 101, 66, 83, 44, 15, 18, 70, 52, 20, 143, 12,
+			18, 78, 65, 121, 34, 39, 6, 49, 115, 68, 0, 15, 7, 196, 28, 245, 9, 44, 15, 10, 199, 4, 180, 143, 8, 21, 9, 44, 15, 8,
+			197, 61, 34, 69, 57, 64, 15, 8, 197, 52, 19, 132, 5, 64, 15, 0, 11, 200, 21, 2, 71, 72, 17, 137, 76, 176, 15, 11, 200, 16,
+			21, 1, 52, 21, 9, 76, 176, 15, 10, 199, 80, 20, 148, 72, 22, 137, 56, 15, 8, 197, 44, 194, 78, 36, 176, 15, 12, 201, 80, 82,
+			211, 81, 84, 133, 72, 85, 0, 15, 0, 10, 199, 65, 35, 195, 20, 69, 82, 20, 15, 9, 198, 48, 149, 146, 37, 53, 0, 15, 15, 204,
+			72, 21, 9, 60, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 65, 35, 204, 21, 64, 82, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			65, 34, 77, 37, 66, 86, 37, 49, 82, 36, 225, 192, 15, 15, 204, 64, 84, 147, 60, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			64, 20, 129, 48, 193, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 60, 34, 133, 45, 66, 86, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			56, 21, 9, 60, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 52, 20, 135, 36, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			45, 34, 77, 36, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 44, 243, 77, 84, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			44, 20, 129, 45, 65, 82, 37, 49, 82, 36, 225, 192, 15, 15, 204, 44, 19, 142, 36, 32, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			36, 229, 5, 72, 224, 76, 37, 49, 82, 36, 225, 192, 15, 15, 204, 24, 19, 73, 48, 144, 82, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			20, 193, 75, 81, 34, 70, 36, 49, 82, 36, 225, 192, 15, 15, 204, 20, 97, 133, 45, 66, 86, 37, 49, 82, 36, 225, 192, 15, 15, 204,
+			16, 149, 133, 73, 50, 70, 36, 49, 82, 36, 225, 192, 15, 15, 204, 16, 145, 134, 21, 33, 78, 80, 145, 82, 36, 225, 192, 15, 15, 204,
+			12, 243, 80, 85, 65, 82, 37, 49, 82, 36, 225, 192, 15, 15, 204, 5, 85, 5, 57, 66, 70, 36, 49, 82, 36, 225, 192, 15, 15, 204,
+			4, 209, 82, 36, 176, 78, 37, 49, 82, 36, 225, 192, 15, 10, 199, 80, 19, 80, 60, 225, 82, 20, 15, 10, 199, 80, 16, 133, 48, 193,
+			82, 20, 15, 10, 199, 72, 80, 133, 48, 193, 82, 20, 15, 10, 199, 52, 241, 5, 48, 193, 82, 20, 15, 10, 199, 44, 243, 150, 60, 161,
+			82, 20, 15, 10, 199, 32, 20, 144, 84, 225, 82, 20, 15, 10, 199, 16, 85, 1, 48, 161, 82, 20, 15, 10, 199, 16, 84, 201, 28, 225,
+			82, 20, 15, 10, 199, 5, 4, 5, 48, 193, 82, 20, 15, 10, 199, 64, 19, 12, 4, 66, 85, 52, 15, 10, 199, 28, 84, 149, 56, 66,
+			85, 52, 15, 10, 199, 21, 2, 84, 4, 98, 85, 52, 15, 10, 199, 16, 80, 197, 56, 226, 85, 52, 15, 10, 199, 4, 197, 77, 36, 226,
+			85, 52, 15, 9, 198, 5, 36, 197, 56, 146, 192, 15, 0, 6, 20, 0, 252, 0, 0, 0, 121, 0, 0, 0, 246, 0, 0, 0, 248, 0,
+			0, 0, 228, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 99, 107, 0, 110, 107, 0, 110, 103, 0, 107, 0, 103, 0,
+			113, 0, 106, 0, 7, 6, 18, 67, 112, 0, 98, 0, 102, 0, 118, 0, 109, 0, 7, 6, 18, 68, 108, 0, 100, 0, 7, 6, 18, 69,
+			195, 184, 0, 117, 0, 121, 0, 105, 0, 111, 0, 7, 6, 18, 70, 195, 166, 0, 195, 165, 0, 97, 0, 7, 6, 18, 71, 112, 0, 98,
+			0, 7, 6, 18, 72, 116, 0, 107, 0, 118, 0, 7, 6, 18, 73, 115, 112, 0, 115, 116, 0, 115, 107, 0, 7, 6, 18, 74, 109, 0,
+			110, 0, 7, 6, 18, 75, 99, 0, 107, 0, 7, 6, 18, 76, 97, 0, 101, 0, 7, 6, 97, 103, 0, 1, 108, 114, 111, 102, 3, 2,
+			118, 57, 0, 1, 98, 108, 105, 116, 2, 101, 3, 6, 117, 38, 0, 101, 1, 10, 2, 28, 33, 12, 12, 12, 3, 6, 117, 91, 14, 0,
+			4, 101, 1, 10, 2, 114, 32, 28, 33, 12, 12, 3, 6, 117, 91, 109, 0, 101, 1, 10, 2, 114, 110, 101, 28, 33, 12, 12, 0, 101,
+			1, 10, 2, 114, 115, 32, 28, 33, 12, 12, 0, 110, 1, 116, 101, 114, 98, 2, 101, 3, 6, 118, 50, 38, 0, 110, 1, 115, 97, 108,
+			2, 101, 3, 6, 118, 50, 57, 0, 101, 1, 114, 10, 2, 28, 33, 12, 12, 3, 6, 121, 12, 91, 13, 0, 101, 1, 114, 10, 2, 114,
+			28, 33, 12, 12, 3, 6, 121, 12, 91, 109, 0, 101, 2, 108, 105, 103, 12, 3, 7, 118, 57, 14, 0, 1, 116, 2, 108, 105, 97, 116,
+			101, 108, 108, 101, 3, 21, 105, 116, 0, 104, 1, 108, 108, 97, 103, 3, 112, 81, 0, 8, 98, 2, 101, 108, 12, 3, 115, 57, 81, 0,
+			4, 1, 100, 2, 101, 12, 12, 3, 117, 0, 100, 1, 115, 2, 101, 12, 12, 12, 0, 101, 1, 116, 101, 114, 97, 118, 0, 101, 1, 116,
+			101, 114, 111, 102, 0, 1, 106, 2, 101, 12, 3, 117, 12, 0, 101, 116, 1, 116, 2, 12, 3, 117, 12, 13, 86, 0, 100, 101, 1, 108,
+			3, 117, 12, 14, 0, 4, 101, 1, 100, 110, 97, 98, 3, 117, 12, 91, 14, 0, 101, 1, 112, 2, 12, 12, 0, 101, 1, 115, 115, 97,
+			109, 101, 116, 114, 101, 106, 104, 0, 101, 1, 116, 101, 2, 12, 0, 101, 1, 116, 117, 102, 102, 97, 0, 4, 101, 1, 116, 2, 108, 115,
+			101, 3, 117, 14, 0, 101, 1, 116, 101, 98, 0, 110, 1, 116, 115, 97, 107, 2, 101, 116, 3, 117, 50, 57, 6, 0, 4, 1, 98, 2,
+			101, 114, 105, 12, 3, 117, 57, 0, 1, 108, 2, 114, 101, 12, 0, 1, 108, 115, 109, 101, 110, 110, 101, 103, 2, 12, 0, 4, 101, 1,
+			17, 67, 2, 12, 12, 12, 3, 117, 57, 14, 0, 101, 1, 98, 2, 114, 117, 108, 0, 101, 8, 116, 2, 32, 12, 0, 101, 1, 17, 67,
+			2, 110, 25, 12, 12, 3, 117, 57, 20, 14, 0, 4, 101, 110, 100, 1, 98, 2, 101, 32, 104, 101, 100, 3, 117, 57, 112, 50, 0, 101,
+			110, 100, 1, 98, 2, 101, 32, 115, 111, 108, 0, 101, 110, 100, 1, 98, 2, 101, 32, 118, 97, 114, 109, 0, 1, 108, 108, 101, 112, 2,
+			114, 97, 3, 117, 81, 0, 4, 1, 112, 115, 2, 101, 116, 116, 3, 117, 81, 6, 0, 104, 1, 112, 115, 2, 101, 116, 116, 0, 101, 1,
+			116, 117, 109, 2, 110, 3, 117, 81, 6, 36, 0, 101, 1, 10, 2, 114, 101, 28, 33, 12, 12, 3, 117, 91, 6, 114, 0, 4, 101, 1,
+			103, 2, 32, 12, 3, 117, 91, 14, 0, 101, 1, 103, 2, 110, 32, 12, 12, 0, 101, 1, 110, 111, 0, 101, 1, 115, 115, 97, 0, 101,
+			1, 116, 110, 97, 108, 112, 0, 4, 1, 100, 2, 115, 32, 3, 118, 0, 1, 100, 21, 2, 32, 12, 12, 0, 1, 100, 115, 2, 21, 12,
+			12, 0, 1, 116, 2, 102, 97, 116, 0, 101, 1, 116, 100, 108, 111, 118, 2, 32, 0, 101, 8, 116, 2, 32, 97, 102, 0, 101, 8, 116,
+			2, 32, 100, 101, 109, 32, 0, 101, 8, 116, 2, 32, 100, 101, 110, 32, 0, 101, 8, 116, 2, 32, 100, 101, 116, 32, 0, 101, 8, 116,
+			2, 32, 101, 110, 32, 0, 101, 8, 116, 2, 32, 101, 116, 32, 0, 101, 8, 116, 2, 32, 105, 109, 111, 100, 0, 101, 8, 116, 2, 32,
+			106, 101, 114, 0, 101, 8, 116, 2, 32, 109, 105, 103, 32, 0, 101, 8, 116, 2, 32, 112, 195, 165, 32, 0, 101, 8, 116, 2, 32, 115,
+			105, 103, 32, 0, 101, 8, 116, 32, 101, 107, 107, 105, 2, 32, 0, 101, 8, 116, 32, 101, 108, 108, 105, 118, 2, 32, 0, 101, 8, 116,
+			32, 101, 108, 108, 117, 107, 115, 2, 32, 0, 101, 8, 116, 32, 101, 110, 110, 117, 107, 2, 32, 0, 101, 8, 116, 32, 101, 116, 116, 165,
+			195, 109, 2, 32, 0, 101, 8, 116, 32, 103, 101, 106, 2, 32, 0, 101, 8, 116, 32, 105, 2, 32, 0, 101, 8, 116, 32, 105, 118, 2,
+			32, 0, 101, 8, 116, 32, 107, 111, 110, 2, 32, 0, 101, 8, 116, 32, 108, 97, 107, 115, 2, 32, 0, 101, 8, 116, 32, 108, 105, 118,
+			2, 32, 0, 101, 8, 116, 32, 110, 97, 107, 2, 32, 0, 101, 8, 116, 32, 116, 97, 2, 32, 0, 101, 8, 116, 32, 116, 100, 111, 103,
+			2, 32, 0, 101, 8, 116, 32, 116, 101, 100, 2, 32, 0, 101, 8, 116, 32, 117, 100, 2, 32, 0, 101, 8, 116, 32, 118, 108, 101, 115,
+			2, 32, 0, 101, 8, 116, 32, 165, 195, 109, 2, 32, 0, 4, 1, 98, 2, 102, 114, 3, 118, 4, 0, 1, 98, 2, 105, 12, 0, 1,
+			98, 2, 112, 195, 165, 0, 1, 98, 2, 116, 105, 108, 0, 1, 116, 2, 115, 101, 108, 118, 3, 118, 6, 0, 4, 1, 98, 2, 111, 118,
+			101, 114, 3, 118, 9, 0, 1, 98, 2, 117, 100, 0, 1, 98, 2, 118, 101, 100, 0, 101, 1, 116, 101, 114, 111, 102, 2, 116, 3, 118,
+			14, 0, 4, 1, 17, 67, 115, 2, 12, 12, 12, 3, 118, 57, 0, 1, 98, 2, 101, 102, 116, 101, 114, 0, 1, 98, 2, 101, 102, 116,
+			101, 114, 12, 12, 0, 1, 98, 101, 109, 109, 101, 106, 104, 2, 32, 0, 1, 100, 2, 32, 12, 0, 1, 108, 2, 32, 12, 0, 1, 108,
+			2, 110, 0, 1, 108, 2, 110, 101, 114, 0, 1, 108, 2, 114, 101, 0, 1, 108, 112, 0, 1, 108, 112, 111, 0, 1, 108, 115, 2, 110,
+			101, 0, 1, 108, 115, 2, 110, 105, 12, 0, 1, 108, 115, 112, 111, 0, 1, 115, 2, 101, 110, 12, 12, 12, 0, 1, 115, 110, 97, 114,
+			2, 110, 0, 1, 116, 2, 32, 12, 12, 0, 1, 116, 2, 110, 101, 12, 0, 1, 118, 115, 2, 116, 12, 12, 0, 1, 118, 115, 101, 110,
+			118, 101, 2, 12, 12, 12, 0, 1, 118, 115, 115, 100, 110, 165, 195, 2, 12, 12, 12, 0, 2, 110, 105, 110, 103, 12, 0, 8, 18, 71,
+			2, 32, 0, 8, 106, 2, 32, 0, 8, 107, 115, 2, 101, 110, 12, 12, 0, 8, 115, 2, 116, 101, 32, 0, 4, 101, 1, 108, 102, 2,
+			110, 101, 3, 118, 57, 14, 0, 101, 1, 108, 115, 115, 108, 101, 115, 100, 166, 195, 114, 2, 110, 0, 101, 8, 2, 32, 0, 4, 101, 2,
+			114, 110, 3, 118, 57, 108, 0, 101, 114, 1, 17, 67, 2, 12, 12, 0, 101, 114, 2, 104, 195, 184, 110, 0, 101, 114, 8, 2, 32, 0,
+			101, 114, 1, 116, 116, 103, 97, 105, 2, 32, 3, 118, 57, 109, 0, 110, 97, 110, 1, 116, 114, 97, 3, 118, 68, 6, 122, 68, 0, 4,
+			1, 100, 2, 111, 103, 12, 3, 118, 81, 0, 1, 106, 2, 117, 97, 114, 0, 1, 108, 102, 2, 114, 97, 110, 116, 0, 1, 108, 112, 2,
+			105, 0, 1, 112, 115, 2, 97, 116, 0, 103, 1, 116, 2, 101, 0, 101, 1, 116, 114, 97, 99, 2, 110, 97, 3, 118, 81, 6, 36, 12,
+			0, 101, 116, 101, 115, 1, 116, 3, 118, 81, 6, 114, 47, 14, 89, 0, 4, 101, 100, 1, 109, 114, 97, 3, 118, 81, 6, 115, 72, 0,
+			101, 100, 100, 1, 109, 114, 97, 0, 101, 8, 2, 110, 116, 12, 12, 3, 118, 81, 6, 116, 0, 101, 2, 110, 116, 12, 12, 12, 3, 118,
+			81, 116, 0, 101, 114, 1, 103, 2, 101, 12, 3, 118, 91, 6, 114, 0, 101, 114, 1, 116, 101, 3, 118, 91, 109, 0, 1, 112, 115, 2,
+			111, 12, 12, 3, 121, 12, 81, 0, 101, 114, 8, 114, 2, 12, 12, 12, 3, 121, 58, 108, 0, 101, 114, 1, 114, 2, 12, 12, 12, 3,
+			121, 58, 109, 0, 101, 110, 100, 1, 98, 2, 101, 3, 121, 58, 115, 50, 0, 4, 1, 118, 115, 101, 114, 166, 195, 2, 116, 3, 121, 81,
+			0, 1, 118, 115, 103, 110, 105, 114, 101, 107, 114, 97, 112, 2, 116, 0, 1, 118, 115, 107, 105, 116, 117, 98, 2, 116, 0, 1, 118, 115,
+			108, 97, 116, 105, 112, 115, 111, 104, 2, 116, 0, 4, 1, 108, 2, 17, 67, 12, 3, 121, 123, 0, 1, 108, 102, 2, 97, 102, 98, 114,
+			195, 166, 110, 100, 0, 1, 108, 102, 2, 114, 101, 12, 0, 1, 108, 115, 2, 115, 105, 100, 101, 0, 1, 108, 115, 2, 115, 109, 195, 165,
+			108, 0, 1, 108, 115, 2, 115, 118, 195, 166, 114, 100, 0, 1, 108, 115, 2, 116, 105, 108, 102, 0, 1, 108, 115, 101, 2, 108, 17, 65,
+			0, 1, 112, 115, 2, 110, 117, 109, 0, 1, 114, 2, 101, 12, 0, 4, 101, 114, 1, 116, 100, 108, 111, 118, 2, 32, 3, 122, 34, 0,
+			101, 114, 1, 116, 101, 114, 111, 102, 0, 101, 114, 8, 116, 2, 32, 12, 0, 1, 98, 2, 117, 100, 103, 97, 110, 103, 3, 122, 40, 0,
+			103, 1, 108, 115, 2, 101, 3, 122, 49, 0, 4, 1, 98, 2, 17, 65, 110, 3, 122, 58, 0, 1, 98, 2, 18, 66, 12, 0, 1, 98,
+			2, 98, 12, 0, 1, 98, 2, 100, 12, 0, 1, 98, 2, 102, 0, 1, 98, 2, 104, 12, 0, 1, 98, 2, 107, 0, 1, 98, 2, 108,
+			12, 0, 1, 98, 2, 109, 0, 1, 98, 2, 112, 0, 1, 98, 2, 114, 117, 100, 0, 1, 98, 2, 115, 12, 0, 1, 98, 2, 116, 21,
+			0, 1, 98, 2, 116, 97, 108, 0, 1, 98, 2, 116, 114, 97, 112, 0, 1, 98, 2, 116, 117, 110, 103, 0, 1, 98, 2, 118, 12, 0,
+			1, 98, 2, 118, 97, 115, 107, 0, 1, 100, 2, 105, 110, 115, 116, 105, 0, 1, 100, 2, 108, 21, 12, 0, 1, 107, 115, 2, 108, 101,
+			114, 0, 1, 115, 2, 115, 195, 184, 0, 1, 116, 2, 17, 67, 12, 0, 8, 108, 115, 2, 17, 67, 21, 12, 12, 12, 12, 0, 8, 108,
+			115, 2, 32, 107, 111, 114, 116, 0, 101, 1, 114, 2, 12, 12, 12, 12, 3, 122, 58, 14, 0, 110, 1, 116, 115, 3, 122, 58, 68, 0,
+			4, 1, 98, 2, 116, 101, 3, 122, 81, 0, 1, 102, 2, 116, 101, 114, 0, 1, 106, 2, 116, 0, 1, 108, 2, 116, 12, 0, 1, 108,
+			115, 2, 116, 32, 12, 12, 12, 0, 1, 108, 115, 2, 116, 101, 12, 12, 12, 12, 12, 0, 1, 108, 115, 2, 116, 110, 12, 12, 0, 1,
+			108, 117, 103, 0, 1, 109, 115, 2, 116, 12, 12, 0, 1, 112, 2, 116, 0, 1, 115, 2, 116, 12, 0, 1, 118, 115, 100, 101, 104, 114,
+			101, 107, 107, 105, 115, 2, 116, 0, 2, 116, 105, 103, 0, 8, 108, 115, 2, 115, 32, 12, 0, 8, 108, 115, 2, 115, 101, 110, 0, 101,
+			100, 105, 101, 1, 114, 116, 3, 122, 81, 6, 114, 86, 57, 14, 0, 101, 1, 114, 10, 2, 114, 101, 28, 33, 12, 12, 3, 122, 91, 6,
+			114, 0, 101, 1, 114, 102, 102, 117, 115, 2, 116, 116, 101, 3, 122, 91, 6, 116, 0, 4, 1, 102, 2, 21, 12, 3, 122, 123, 0, 1,
+			115, 2, 110, 12, 0, 101, 114, 1, 108, 102, 2, 109, 117, 115, 3, 122, 123, 108, 0, 7, 6, 97, 108, 0, 4, 1, 100, 101, 112, 115,
+			2, 115, 107, 3, 6, 117, 55, 0, 1, 117, 115, 107, 101, 115, 0, 8, 98, 97, 107, 2, 101, 0, 8, 98, 109, 105, 116, 2, 101, 0,
+			8, 100, 110, 97, 107, 115, 2, 101, 0, 8, 103, 101, 114, 2, 101, 0, 8, 104, 114, 111, 102, 2, 101, 0, 8, 105, 114, 101, 116, 97,
+			109, 2, 101, 0, 8, 105, 116, 97, 114, 103, 2, 101, 0, 8, 105, 116, 110, 101, 116, 111, 112, 2, 101, 0, 8, 107, 111, 108, 2, 101,
+			0, 8, 109, 114, 111, 102, 2, 101, 0, 8, 110, 105, 102, 2, 101, 0, 8, 110, 110, 101, 105, 98, 0, 8, 110, 110, 101, 105, 114, 116,
+			2, 101, 0, 8, 115, 115, 105, 109, 2, 101, 0, 8, 116, 114, 111, 102, 2, 101, 32, 0, 8, 116, 114, 111, 109, 111, 116, 108, 97, 115,
+			2, 101, 0, 8, 117, 100, 97, 114, 103, 2, 101, 0, 8, 117, 110, 97, 109, 2, 101, 0, 101, 8, 105, 99, 101, 112, 115, 2, 32, 3,
+			6, 117, 55, 13, 0, 101, 8, 105, 116, 110, 101, 114, 101, 102, 102, 105, 100, 3, 6, 117, 55, 14, 0, 4, 8, 114, 101, 109, 117, 110,
+			2, 101, 3, 6, 121, 12, 55, 0, 8, 114, 111, 109, 2, 101, 0, 8, 114, 111, 116, 115, 97, 112, 2, 101, 0, 4, 8, 110, 105, 114,
+			117, 3, 7, 117, 55, 0, 8, 110, 111, 105, 116, 97, 114, 2, 101, 0, 8, 110, 111, 115, 114, 101, 112, 2, 101, 0, 7, 6, 98, 101,
+			0, 8, 2, 116, 97, 108, 3, 2, 71, 114, 0, 97, 117, 8, 3, 2, 71, 124, 0, 8, 2, 21, 3, 71, 2, 114, 0, 4, 8, 2,
+			100, 101, 3, 71, 36, 0, 8, 2, 101, 116, 97, 32, 0, 8, 2, 116, 97, 0, 8, 2, 116, 97, 115, 116, 114, 195, 165, 108, 0, 8,
+			2, 116, 97, 116, 114, 111, 110, 0, 8, 2, 116, 97, 118, 101, 114, 115, 105, 111, 110, 0, 8, 2, 116, 101, 108, 0, 8, 2, 116, 108,
+			0, 101, 116, 104, 111, 118, 101, 110, 3, 71, 36, 47, 39, 84, 14, 50, 0, 97, 8, 2, 118, 105, 115, 3, 71, 37, 0, 101, 99, 104,
+			8, 3, 71, 37, 76, 0, 4, 2, 110, 104, 195, 165, 114, 100, 3, 71, 114, 0, 8, 2, 100, 100, 105, 110, 103, 0, 8, 2, 110, 97,
+			114, 98, 101, 106, 100, 101, 0, 8, 2, 110, 98, 98, 117, 107, 0, 8, 2, 110, 98, 114, 117, 100, 0, 8, 2, 110, 98, 114, 195, 166,
+			107, 0, 8, 2, 110, 101, 100, 100, 101, 114, 0, 8, 2, 110, 101, 110, 100, 101, 0, 8, 2, 110, 101, 110, 101, 0, 8, 2, 110, 101,
+			114, 0, 8, 2, 110, 101, 116, 0, 8, 2, 110, 102, 101, 100, 116, 0, 8, 2, 110, 102, 105, 115, 107, 0, 8, 2, 110, 102, 114, 105,
+			0, 8, 2, 110, 107, 108, 0, 8, 2, 110, 109, 101, 108, 0, 8, 2, 110, 109, 101, 108, 0, 8, 2, 110, 112, 105, 98, 101, 0, 8,
+			2, 110, 112, 108, 97, 100, 115, 0, 8, 2, 110, 114, 97, 100, 0, 8, 2, 110, 115, 107, 105, 110, 110, 101, 0, 8, 2, 110, 115, 112,
+			195, 166, 110, 100, 0, 8, 2, 110, 116, 195, 184, 106, 0, 8, 2, 115, 107, 32, 0, 8, 2, 115, 107, 101, 32, 0, 4, 8, 2, 106,
+			100, 115, 3, 71, 115, 0, 8, 2, 108, 103, 105, 0, 8, 2, 110, 103, 110, 97, 0, 8, 2, 110, 104, 0, 8, 2, 110, 108, 0, 8,
+			2, 110, 118, 0, 8, 2, 114, 98, 0, 8, 2, 114, 103, 101, 110, 32, 0, 105, 103, 101, 8, 3, 71, 115, 12, 91, 0, 4, 8, 2,
+			100, 114, 101, 3, 71, 116, 0, 8, 2, 100, 114, 105, 110, 103, 0, 8, 2, 100, 115, 116, 101, 0, 8, 2, 103, 103, 101, 0, 8, 2,
+			108, 108, 97, 0, 8, 2, 110, 99, 104, 109, 97, 114, 107, 0, 8, 2, 110, 103, 101, 108, 0, 8, 2, 110, 106, 97, 109, 105, 110, 0,
+			8, 2, 106, 108, 101, 3, 71, 121, 0, 114, 107, 101, 108, 101, 121, 3, 71, 132, 49, 59, 37, 0, 4, 103, 8, 2, 98, 108, 101, 110,
+			100, 101, 3, 71, 136, 0, 103, 8, 2, 109, 97, 110, 100, 0, 103, 8, 2, 110, 105, 110, 103, 0, 7, 6, 101, 100, 0, 4, 1, 112,
+			105, 99, 111, 108, 101, 118, 2, 101, 3, 6, 114, 86, 0, 1, 116, 115, 102, 97, 2, 107, 111, 109, 0, 101, 1, 107, 121, 115, 112, 2,
+			108, 105, 115, 107, 3, 14, 72, 6, 36, 0, 4, 1, 107, 114, 97, 109, 3, 14, 86, 0, 1, 109, 109, 0, 1, 118, 111, 104, 0, 4,
+			101, 1, 21, 2, 32, 3, 14, 86, 14, 0, 101, 1, 107, 115, 114, 111, 102, 0, 1, 102, 103, 2, 101, 12, 3, 36, 86, 0, 4, 101,
+			1, 98, 108, 105, 116, 3, 36, 86, 14, 0, 101, 1, 98, 109, 101, 2, 32, 12, 0, 101, 1, 98, 109, 101, 2, 116, 32, 12, 0, 101,
+			1, 102, 112, 111, 2, 12, 12, 0, 101, 1, 104, 111, 108, 103, 2, 12, 0, 101, 1, 107, 100, 184, 195, 100, 2, 12, 0, 101, 1, 108,
+			100, 108, 105, 118, 2, 12, 0, 101, 1, 108, 100, 110, 105, 2, 12, 0, 101, 1, 108, 100, 117, 2, 12, 0, 101, 1, 108, 102, 97, 2,
+			12, 0, 101, 1, 108, 106, 101, 118, 2, 12, 0, 101, 1, 108, 110, 101, 104, 2, 12, 0, 101, 1, 108, 112, 111, 2, 12, 0, 101, 1,
+			108, 114, 111, 102, 2, 12, 0, 101, 1, 108, 115, 105, 109, 2, 12, 0, 101, 1, 108, 115, 118, 105, 108, 2, 12, 0, 101, 1, 108, 116,
+			101, 114, 2, 12, 0, 101, 1, 108, 116, 114, 111, 98, 0, 101, 1, 108, 116, 114, 111, 98, 2, 12, 0, 101, 1, 109, 115, 0, 101, 1,
+			110, 114, 101, 100, 0, 101, 1, 110, 114, 101, 104, 0, 4, 101, 114, 1, 98, 108, 105, 116, 3, 36, 86, 108, 0, 101, 114, 1, 102, 2,
+			32, 12, 0, 101, 114, 1, 108, 100, 108, 105, 118, 2, 12, 0, 101, 114, 1, 108, 100, 110, 105, 2, 12, 0, 101, 114, 1, 108, 100, 117,
+			2, 12, 0, 101, 114, 1, 108, 102, 97, 2, 12, 0, 101, 114, 1, 108, 106, 101, 118, 2, 12, 0, 101, 114, 1, 108, 110, 101, 104, 2,
+			12, 0, 101, 114, 1, 108, 112, 111, 2, 12, 0, 101, 114, 1, 108, 114, 111, 102, 2, 12, 0, 101, 114, 1, 108, 115, 105, 109, 2, 12,
+			0, 101, 114, 1, 108, 115, 118, 105, 108, 2, 12, 0, 101, 114, 1, 108, 116, 101, 114, 2, 12, 0, 101, 114, 1, 108, 116, 114, 111, 98,
+			2, 12, 0, 1, 114, 100, 110, 117, 104, 2, 12, 3, 108, 86, 0, 4, 101, 1, 114, 10, 2, 32, 3, 109, 86, 14, 0, 101, 1, 114,
+			10, 2, 115, 32, 0, 1, 104, 100, 110, 97, 115, 3, 114, 86, 0, 101, 1, 108, 114, 111, 102, 2, 110, 12, 3, 114, 86, 14, 0, 101,
+			114, 1, 104, 2, 12, 3, 114, 86, 108, 0, 4, 101, 1, 114, 98, 108, 101, 104, 3, 115, 86, 14, 0, 101, 1, 114, 100, 108, 105, 118,
+			2, 32, 12, 0, 101, 1, 114, 101, 98, 2, 32, 12, 0, 101, 1, 114, 101, 108, 103, 117, 2, 32, 12, 0, 101, 1, 114, 101, 110, 114,
 			184, 195, 0, 101, 1, 114, 101, 115, 112, 101, 118, 104, 2, 32, 12, 0, 101, 1, 114, 101, 116, 116, 111, 114, 2, 32, 12, 0, 101, 1,
 			114, 112, 115, 2, 32, 12, 0, 101, 1, 114, 114, 101, 2, 12, 0, 101, 1, 114, 115, 118, 111, 107, 115, 108, 101, 0, 101, 1, 114, 118,
-			2, 32, 12, 0, 101, 8, 114, 98, 2, 32, 12, 0, 101, 8, 114, 102, 2, 32, 12, 0, 7, 6, 101, 108, 0, 4, 1, 98, 101, 114,
-			3, 6, 36, 55, 0, 1, 98, 111, 108, 2, 105, 97, 0, 1, 100, 97, 116, 105, 99, 0, 1, 100, 105, 102, 0, 1, 100, 110, 111, 114,
-			0, 1, 100, 114, 166, 195, 115, 2, 101, 115, 0, 1, 101, 114, 0, 1, 105, 98, 114, 101, 118, 0, 1, 108, 108, 97, 104, 2, 117, 106,
-			97, 0, 1, 109, 97, 107, 0, 1, 109, 109, 97, 114, 103, 111, 114, 112, 0, 1, 112, 111, 114, 112, 0, 1, 115, 100, 110, 117, 2, 105,
-			103, 0, 1, 115, 114, 101, 118, 105, 110, 117, 0, 1, 116, 110, 97, 114, 97, 116, 0, 1, 116, 114, 111, 112, 115, 0, 1, 117, 2, 32,
-			12, 0, 1, 117, 122, 101, 110, 101, 118, 2, 97, 0, 1, 118, 97, 106, 0, 1, 118, 117, 106, 0, 1, 118, 165, 195, 115, 0, 8, 98,
-			97, 116, 0, 8, 105, 99, 105, 102, 102, 111, 2, 12, 0, 8, 110, 97, 112, 0, 8, 112, 108, 97, 107, 115, 0, 105, 103, 1, 115, 10,
-			2, 28, 33, 3, 6, 36, 55, 37, 0, 4, 1, 99, 114, 97, 109, 3, 6, 109, 55, 0, 1, 99, 114, 97, 112, 0, 1, 100, 97, 116,
-			114, 111, 109, 0, 1, 100, 101, 112, 2, 12, 0, 1, 100, 114, 97, 115, 0, 1, 105, 114, 101, 116, 97, 109, 0, 1, 108, 108, 97, 114,
-			97, 112, 0, 1, 109, 114, 111, 102, 2, 108, 0, 1, 109, 114, 111, 102, 2, 116, 0, 1, 112, 97, 107, 0, 1, 114, 111, 102, 2, 115,
-			0, 1, 116, 110, 101, 109, 97, 107, 105, 100, 101, 109, 0, 1, 116, 111, 109, 0, 1, 116, 115, 97, 112, 0, 1, 118, 114, 97, 102, 0,
-			1, 118, 117, 110, 0, 8, 100, 97, 107, 105, 114, 102, 2, 108, 0, 103, 1, 104, 101, 108, 108, 97, 2, 101, 110, 115, 3, 6, 109, 55,
-			57, 0, 4, 8, 114, 107, 97, 109, 2, 12, 3, 6, 111, 55, 0, 8, 114, 111, 102, 0, 1, 117, 2, 116, 32, 12, 12, 3, 7, 36,
-			55, 0, 1, 10, 2, 108, 28, 33, 12, 12, 12, 3, 7, 109, 0, 4, 1, 10, 2, 28, 33, 12, 12, 12, 3, 7, 109, 55, 0, 1,
-			10, 2, 116, 28, 33, 0, 1, 116, 97, 107, 115, 117, 109, 0, 1, 114, 10, 2, 108, 28, 33, 12, 12, 12, 3, 7, 111, 0, 1, 114,
-			10, 2, 28, 33, 12, 12, 3, 7, 111, 55, 0, 105, 103, 1, 10, 2, 28, 33, 3, 8, 13, 55, 37, 0, 1, 117, 107, 115, 109, 101,
-			110, 110, 101, 103, 2, 105, 103, 3, 8, 36, 55, 0, 4, 1, 21, 2, 17, 65, 114, 3, 13, 55, 0, 1, 21, 2, 32, 0, 1, 21,
-			2, 115, 0, 1, 21, 2, 116, 32, 0, 1, 98, 97, 116, 107, 101, 112, 115, 101, 114, 0, 1, 100, 101, 107, 2, 12, 0, 1, 100, 101,
-			108, 2, 115, 101, 0, 1, 100, 110, 97, 2, 115, 101, 0, 1, 100, 110, 97, 104, 0, 1, 105, 110, 97, 112, 115, 0, 1, 107, 115, 111,
-			108, 102, 0, 1, 107, 115, 114, 0, 8, 114, 111, 102, 2, 105, 103, 0, 101, 116, 1, 10, 2, 28, 33, 3, 13, 55, 6, 109, 47, 0,
-			101, 103, 1, 108, 117, 106, 3, 13, 55, 35, 57, 0, 4, 1, 10, 2, 101, 118, 3, 36, 55, 0, 1, 21, 2, 195, 184, 115, 0, 1,
-			98, 97, 116, 0, 1, 100, 2, 101, 12, 0, 1, 100, 2, 105, 110, 103, 0, 1, 100, 2, 116, 12, 0, 1, 100, 100, 101, 109, 0, 1,
+			2, 32, 12, 0, 101, 8, 114, 98, 2, 32, 12, 0, 101, 8, 114, 102, 2, 32, 12, 0, 101, 1, 114, 101, 98, 2, 12, 3, 116, 86,
+			14, 0, 7, 6, 101, 108, 0, 105, 103, 1, 115, 10, 2, 28, 33, 3, 6, 14, 55, 111, 0, 4, 1, 100, 114, 166, 195, 115, 2, 101,
+			115, 3, 6, 36, 55, 0, 1, 117, 122, 101, 110, 101, 118, 2, 97, 0, 4, 1, 98, 111, 108, 2, 105, 97, 3, 6, 114, 55, 0, 1,
+			100, 97, 116, 105, 99, 0, 1, 100, 105, 102, 0, 1, 108, 108, 97, 104, 2, 117, 106, 97, 0, 1, 109, 97, 107, 0, 1, 115, 100, 110,
+			117, 2, 105, 103, 0, 1, 116, 114, 111, 112, 115, 0, 1, 118, 97, 106, 0, 1, 118, 117, 106, 0, 8, 105, 99, 105, 102, 102, 111, 2,
+			12, 0, 8, 110, 97, 112, 0, 4, 1, 98, 101, 114, 3, 6, 116, 55, 0, 1, 99, 114, 97, 109, 0, 1, 99, 114, 97, 112, 0, 1,
+			100, 97, 116, 114, 111, 109, 0, 1, 100, 101, 112, 2, 12, 0, 1, 100, 110, 111, 114, 0, 1, 100, 114, 97, 115, 0, 1, 101, 114, 0,
+			1, 105, 98, 114, 101, 118, 0, 1, 105, 114, 101, 116, 97, 109, 0, 1, 108, 108, 97, 114, 97, 112, 0, 1, 109, 109, 97, 114, 103, 111,
+			114, 112, 0, 1, 109, 114, 111, 102, 2, 108, 0, 1, 109, 114, 111, 102, 2, 116, 0, 1, 112, 97, 107, 0, 1, 112, 111, 114, 112, 0,
+			1, 114, 111, 102, 2, 115, 0, 1, 115, 114, 101, 118, 105, 110, 117, 0, 1, 116, 110, 97, 114, 97, 116, 0, 1, 116, 110, 101, 109, 97,
+			107, 105, 100, 101, 109, 0, 1, 116, 111, 109, 0, 1, 116, 115, 97, 112, 0, 1, 117, 2, 32, 12, 0, 1, 118, 114, 97, 102, 0, 1,
+			118, 117, 110, 0, 1, 118, 165, 195, 115, 0, 8, 98, 97, 116, 2, 32, 0, 8, 100, 97, 107, 105, 114, 102, 2, 108, 0, 8, 112, 108,
+			97, 107, 115, 0, 103, 1, 104, 101, 108, 108, 97, 2, 101, 110, 115, 3, 6, 116, 55, 57, 0, 4, 8, 114, 107, 97, 109, 2, 12, 3,
+			6, 120, 55, 0, 8, 114, 111, 102, 0, 1, 117, 2, 116, 32, 12, 12, 3, 7, 114, 55, 0, 1, 10, 2, 108, 28, 33, 12, 12, 12,
+			3, 7, 116, 0, 4, 1, 10, 2, 28, 33, 12, 12, 12, 3, 7, 116, 55, 0, 1, 10, 2, 116, 28, 33, 0, 1, 116, 97, 107, 115,
+			117, 109, 0, 1, 114, 10, 2, 108, 28, 33, 12, 12, 12, 3, 7, 120, 0, 1, 114, 10, 2, 28, 33, 12, 12, 3, 7, 120, 55, 0,
+			1, 117, 107, 115, 109, 101, 110, 110, 101, 103, 2, 105, 103, 3, 8, 14, 55, 0, 105, 103, 1, 10, 2, 28, 33, 3, 8, 14, 55, 111,
+			0, 101, 116, 1, 10, 2, 116, 28, 33, 3, 13, 55, 6, 116, 0, 101, 116, 1, 10, 2, 28, 33, 3, 13, 55, 6, 116, 47, 0, 4,
+			1, 17, 67, 2, 105, 103, 12, 3, 14, 55, 0, 1, 21, 2, 17, 65, 114, 0, 1, 21, 2, 32, 0, 1, 21, 2, 115, 0, 1, 21,
+			2, 115, 101, 0, 1, 21, 2, 116, 32, 0, 1, 21, 2, 195, 184, 115, 12, 12, 12, 0, 1, 98, 97, 116, 105, 114, 114, 105, 0, 1,
+			98, 97, 116, 107, 101, 112, 115, 101, 114, 0, 1, 98, 117, 106, 0, 1, 100, 101, 107, 2, 12, 0, 1, 100, 101, 108, 2, 115, 101, 0,
+			1, 100, 110, 97, 2, 115, 101, 0, 1, 100, 110, 97, 104, 0, 1, 100, 110, 105, 118, 107, 2, 17, 65, 0, 1, 102, 111, 106, 115, 0,
+			1, 105, 110, 97, 112, 115, 0, 1, 107, 115, 111, 108, 102, 0, 1, 107, 115, 114, 0, 1, 107, 115, 117, 109, 0, 1, 118, 166, 195, 106,
+			100, 0, 8, 114, 111, 102, 2, 105, 103, 0, 8, 114, 111, 102, 2, 195, 166, 103, 0, 101, 1, 100, 110, 105, 98, 2, 100, 3, 14, 55,
+			114, 0, 101, 103, 1, 108, 117, 106, 3, 14, 55, 136, 0, 4, 1, 100, 2, 101, 12, 3, 36, 55, 0, 1, 100, 2, 105, 110, 103, 0,
+			1, 100, 101, 107, 107, 105, 116, 115, 0, 1, 115, 2, 101, 12, 0, 1, 115, 2, 101, 32, 0, 1, 115, 2, 101, 114, 32, 0, 1, 115,
+			2, 101, 114, 115, 32, 0, 1, 116, 2, 101, 0, 4, 1, 97, 104, 99, 105, 3, 55, 0, 1, 97, 107, 105, 0, 1, 114, 100, 2, 12,
+			3, 108, 55, 0, 1, 114, 2, 115, 101, 3, 109, 55, 0, 97, 116, 105, 111, 110, 1, 114, 32, 99, 105, 108, 98, 117, 112, 3, 111, 55,
+			6, 116, 57, 91, 14, 50, 0, 4, 1, 10, 2, 101, 118, 3, 114, 55, 0, 1, 100, 2, 116, 12, 0, 1, 100, 100, 101, 109, 0, 1,
 			100, 100, 110, 97, 116, 115, 101, 98, 0, 1, 100, 100, 110, 117, 114, 0, 1, 100, 101, 2, 12, 0, 1, 100, 101, 100, 0, 1, 100, 101,
-			107, 107, 105, 116, 115, 0, 1, 100, 101, 118, 114, 101, 115, 101, 114, 0, 1, 100, 103, 97, 98, 0, 1, 100, 107, 184, 195, 114, 98, 0,
-			1, 100, 110, 97, 0, 1, 100, 110, 101, 106, 101, 0, 1, 100, 110, 101, 118, 111, 0, 1, 100, 110, 111, 0, 1, 100, 111, 109, 0, 1,
-			100, 114, 101, 100, 101, 110, 0, 1, 100, 114, 111, 102, 0, 1, 100, 115, 109, 101, 103, 101, 108, 0, 1, 100, 115, 110, 101, 100, 114, 101,
-			118, 0, 1, 100, 115, 184, 195, 108, 0, 1, 100, 116, 110, 101, 99, 111, 114, 112, 0, 1, 100, 118, 108, 97, 104, 0, 1, 100, 121, 98,
-			0, 1, 103, 110, 97, 118, 101, 0, 1, 104, 2, 116, 12, 0, 1, 105, 110, 97, 100, 0, 1, 107, 115, 101, 115, 110, 166, 195, 114, 103,
-			0, 1, 107, 115, 107, 114, 97, 109, 0, 1, 107, 115, 114, 111, 0, 1, 109, 2, 111, 110, 0, 1, 109, 101, 100, 101, 118, 104, 0, 1,
-			109, 101, 116, 103, 105, 115, 0, 1, 109, 103, 117, 114, 0, 1, 109, 110, 101, 98, 0, 1, 109, 111, 103, 97, 115, 0, 1, 109, 114, 111,
-			102, 117, 0, 1, 109, 115, 105, 114, 0, 1, 110, 97, 112, 0, 1, 110, 114, 111, 107, 2, 101, 118, 97, 116, 111, 114, 0, 1, 114, 2,
-			97, 116, 0, 1, 115, 2, 101, 32, 0, 1, 115, 2, 101, 114, 32, 0, 1, 115, 2, 101, 114, 115, 32, 0, 1, 116, 2, 101, 0, 1,
-			116, 2, 101, 102, 0, 1, 116, 2, 116, 32, 0, 1, 116, 110, 0, 1, 116, 115, 101, 108, 108, 105, 114, 98, 0, 1, 116, 115, 101, 115,
-			105, 112, 115, 0, 1, 116, 115, 101, 116, 110, 97, 118, 114, 101, 115, 0, 1, 116, 115, 114, 101, 100, 110, 117, 2, 12, 0, 1, 116, 115,
-			115, 103, 110, 105, 100, 110, 97, 108, 0, 1, 117, 116, 107, 101, 108, 108, 101, 116, 110, 105, 0, 2, 105, 107, 115, 105, 114, 0, 2, 115,
-			107, 12, 0, 8, 116, 115, 2, 32, 0, 101, 114, 1, 100, 2, 12, 3, 36, 55, 114, 0, 4, 1, 97, 104, 99, 105, 3, 55, 0, 1,
-			97, 107, 105, 0, 1, 100, 100, 101, 115, 0, 4, 1, 100, 110, 105, 118, 107, 2, 17, 65, 3, 108, 55, 0, 8, 114, 111, 102, 2, 195,
-			166, 103, 0, 101, 1, 100, 110, 105, 98, 2, 100, 3, 108, 55, 36, 0, 4, 1, 98, 97, 115, 105, 3, 109, 55, 0, 1, 100, 97, 107,
-			105, 114, 102, 2, 108, 0, 1, 102, 21, 2, 116, 0, 1, 104, 2, 105, 107, 111, 112, 116, 0, 1, 104, 2, 115, 116, 0, 1, 105, 116,
-			0, 1, 107, 115, 2, 32, 0, 1, 110, 105, 109, 105, 114, 107, 0, 1, 110, 111, 105, 116, 97, 114, 0, 1, 110, 111, 115, 114, 101, 112,
-			0, 1, 112, 10, 2, 115, 32, 0, 1, 115, 2, 115, 0, 1, 116, 111, 104, 21, 0, 1, 118, 0, 8, 0, 8, 112, 112, 97, 2, 115,
-			105, 110, 0, 8, 117, 109, 97, 115, 0, 108, 8, 0, 108, 105, 111, 116, 3, 109, 55, 57, 114, 47, 0, 1, 114, 21, 2, 32, 12, 3,
-			111, 55, 0, 1, 114, 100, 2, 12, 3, 114, 55, 0, 7, 6, 101, 110, 0, 4, 1, 99, 166, 195, 109, 3, 6, 36, 50, 0, 1, 109,
-			111, 110, 166, 195, 102, 0, 1, 114, 121, 115, 2, 101, 110, 32, 0, 1, 114, 121, 115, 2, 101, 114, 32, 0, 1, 116, 115, 105, 115, 107,
-			101, 2, 115, 0, 8, 100, 97, 2, 32, 0, 8, 100, 105, 115, 101, 114, 2, 115, 0, 8, 100, 105, 115, 166, 195, 114, 112, 2, 116, 0,
-			8, 103, 97, 2, 116, 0, 8, 108, 121, 116, 101, 99, 97, 0, 8, 109, 101, 103, 0, 8, 109, 114, 111, 102, 2, 101, 0, 8, 114, 121,
-			115, 32, 110, 101, 0, 116, 1, 10, 2, 28, 33, 12, 12, 3, 6, 36, 50, 47, 0, 115, 1, 21, 2, 28, 33, 12, 3, 6, 36, 50,
-			89, 0, 4, 1, 112, 112, 97, 2, 100, 105, 107, 115, 3, 6, 109, 50, 0, 1, 114, 102, 111, 122, 105, 107, 115, 0, 8, 108, 111, 112,
-			2, 116, 97, 0, 8, 117, 108, 102, 110, 105, 2, 122, 97, 0, 100, 1, 108, 105, 116, 2, 101, 98, 114, 0, 110, 8, 105, 115, 114, 101,
-			112, 0, 4, 99, 101, 1, 108, 108, 101, 99, 120, 101, 2, 28, 33, 3, 6, 109, 50, 89, 13, 0, 99, 101, 1, 110, 105, 109, 101, 2,
-			28, 33, 0, 100, 101, 114, 8, 108, 97, 107, 3, 6, 109, 50, 114, 0, 115, 1, 114, 21, 2, 28, 33, 12, 3, 6, 111, 50, 89, 0,
-			8, 118, 101, 114, 2, 99, 104, 101, 3, 6, 112, 50, 0, 4, 116, 1, 99, 99, 10, 2, 28, 33, 12, 3, 6, 112, 68, 0, 116, 1,
-			115, 101, 10, 2, 28, 33, 12, 0, 115, 101, 114, 1, 10, 2, 28, 33, 3, 7, 109, 50, 89, 114, 0, 116, 1, 114, 10, 2, 28, 33,
-			12, 3, 7, 111, 50, 47, 0, 99, 101, 1, 10, 2, 28, 33, 3, 7, 112, 68, 89, 13, 0, 99, 101, 1, 10, 2, 114, 28, 33, 3,
-			7, 112, 68, 89, 114, 0, 4, 1, 10, 2, 32, 24, 3, 13, 50, 0, 1, 98, 97, 116, 115, 2, 12, 0, 1, 98, 98, 2, 32, 12,
-			12, 0, 1, 98, 98, 105, 114, 103, 2, 101, 12, 0, 1, 98, 109, 111, 98, 2, 12, 0, 1, 98, 165, 195, 118, 2, 12, 12, 0, 1,
-			100, 105, 115, 0, 1, 100, 114, 111, 0, 1, 102, 102, 97, 107, 115, 116, 101, 114, 0, 1, 114, 101, 105, 10, 2, 32, 24, 0, 1, 116,
-			2, 195, 165, 0, 1, 116, 102, 97, 0, 8, 98, 165, 195, 2, 32, 12, 0, 8, 98, 165, 195, 2, 116, 32, 12, 0, 1, 98, 97, 107,
-			115, 2, 12, 3, 14, 50, 0, 115, 1, 10, 2, 32, 12, 3, 14, 50, 89, 0, 100, 101, 114, 1, 114, 10, 2, 32, 3, 35, 50, 114,
-			0, 4, 1, 98, 10, 2, 32, 12, 3, 36, 50, 0, 1, 98, 98, 105, 114, 2, 12, 12, 0, 1, 98, 110, 101, 102, 108, 101, 2, 12,
-			0, 1, 100, 105, 115, 101, 114, 2, 115, 0, 1, 100, 105, 115, 166, 195, 114, 112, 2, 116, 0, 1, 103, 2, 115, 107, 0, 1, 103, 2,
-			115, 116, 0, 1, 103, 10, 2, 107, 101, 110, 100, 0, 1, 103, 10, 2, 115, 116, 0, 1, 103, 97, 2, 116, 0, 1, 112, 115, 117, 115,
-			2, 115, 105, 111, 110, 0, 1, 114, 115, 100, 108, 121, 107, 115, 0, 1, 116, 115, 2, 17, 65, 0, 1, 116, 115, 97, 116, 117, 97, 98,
-			0, 1, 116, 115, 100, 110, 97, 115, 0, 1, 116, 115, 100, 110, 97, 116, 0, 1, 116, 115, 100, 110, 117, 114, 103, 0, 1, 116, 115, 101,
-			98, 105, 108, 115, 0, 1, 116, 115, 101, 100, 108, 97, 103, 0, 1, 116, 115, 101, 100, 110, 101, 114, 0, 1, 116, 115, 101, 100, 110, 105,
-			109, 0, 1, 116, 115, 101, 100, 166, 195, 114, 116, 0, 1, 116, 115, 101, 103, 103, 121, 98, 0, 1, 116, 115, 101, 106, 184, 195, 0, 1,
-			116, 115, 101, 107, 107, 111, 114, 0, 1, 116, 115, 101, 107, 107, 121, 109, 115, 0, 1, 116, 115, 101, 107, 110, 105, 104, 0, 1, 116, 115,
-			101, 107, 110, 117, 109, 0, 1, 116, 115, 101, 107, 115, 101, 118, 115, 0, 1, 116, 115, 101, 108, 103, 110, 97, 114, 0, 1, 116, 115, 101,
-			108, 108, 117, 114, 0, 1, 116, 115, 101, 108, 108, 184, 195, 109, 0, 1, 116, 115, 101, 110, 114, 184, 195, 106, 104, 0, 1, 116, 115, 101,
-			110, 117, 114, 0, 1, 116, 115, 101, 110, 165, 195, 109, 0, 1, 116, 115, 101, 112, 109, 97, 107, 0, 1, 116, 115, 101, 112, 112, 97, 114,
-			116, 0, 1, 116, 115, 101, 114, 121, 110, 0, 1, 116, 115, 101, 116, 110, 105, 108, 102, 0, 1, 116, 115, 101, 118, 184, 195, 114, 112, 0,
-			1, 116, 115, 102, 117, 116, 0, 1, 116, 115, 103, 97, 116, 0, 1, 116, 115, 103, 110, 117, 116, 0, 1, 116, 115, 107, 108, 97, 107, 0,
-			1, 116, 115, 107, 166, 195, 100, 0, 1, 116, 115, 108, 101, 100, 101, 107, 0, 1, 116, 115, 108, 101, 100, 166, 195, 0, 1, 116, 115, 108,
-			101, 100, 166, 195, 0, 1, 116, 115, 108, 103, 101, 116, 0, 1, 116, 115, 108, 111, 104, 0, 1, 116, 115, 109, 105, 108, 0, 1, 116, 115,
-			110, 105, 104, 114, 0, 1, 116, 115, 110, 105, 118, 0, 1, 116, 115, 110, 114, 166, 195, 118, 107, 0, 1, 116, 115, 111, 114, 98, 0, 1,
-			116, 115, 112, 109, 105, 112, 0, 1, 116, 115, 112, 121, 114, 100, 0, 1, 116, 115, 114, 101, 100, 97, 118, 107, 0, 1, 116, 115, 114, 101,
-			108, 111, 109, 0, 1, 116, 115, 114, 111, 101, 116, 101, 109, 0, 1, 116, 115, 114, 111, 107, 115, 0, 1, 116, 115, 114, 111, 109, 114, 97,
-			109, 0, 1, 116, 115, 114, 117, 109, 0, 1, 116, 115, 116, 100, 101, 102, 0, 1, 116, 115, 116, 110, 97, 107, 0, 1, 116, 115, 116, 110,
-			105, 108, 102, 0, 1, 116, 115, 116, 117, 108, 115, 0, 1, 116, 115, 116, 117, 109, 115, 0, 1, 116, 115, 118, 97, 114, 103, 0, 1, 116,
-			115, 165, 195, 109, 115, 0, 1, 116, 115, 165, 195, 109, 115, 0, 1, 116, 115, 165, 195, 114, 103, 0, 1, 118, 2, 115, 107, 12, 0, 1,
-			118, 115, 21, 2, 32, 0, 8, 114, 117, 2, 32, 0, 110, 1, 103, 10, 2, 101, 109, 0, 116, 1, 118, 101, 2, 17, 65, 12, 3, 36,
-			50, 47, 0, 4, 116, 1, 10, 2, 97, 108, 115, 107, 28, 33, 12, 3, 36, 50, 47, 6, 0, 116, 1, 10, 2, 117, 114, 28, 33, 12,
-			0, 115, 1, 118, 107, 3, 36, 50, 89, 0, 116, 105, 1, 118, 2, 111, 110, 3, 36, 50, 91, 57, 0, 115, 101, 1, 103, 10, 2, 28,
-			33, 3, 81, 7, 109, 50, 89, 114, 0, 1, 114, 121, 115, 2, 101, 100, 115, 195, 166, 116, 116, 101, 110, 100, 101, 3, 108, 50, 0, 4,
-			1, 106, 116, 2, 115, 116, 3, 109, 50, 0, 1, 109, 2, 115, 12, 0, 1, 112, 101, 100, 0, 1, 112, 101, 108, 103, 117, 107, 0, 1,
-			112, 116, 108, 105, 102, 0, 1, 114, 103, 101, 105, 108, 111, 0, 1, 114, 103, 115, 116, 114, 111, 112, 115, 0, 1, 118, 101, 114, 121, 100,
-			0, 1, 118, 101, 115, 115, 184, 195, 98, 0, 100, 101, 114, 1, 116, 114, 97, 98, 3, 109, 50, 72, 114, 0, 4, 115, 101, 114, 1, 10,
-			2, 101, 28, 33, 3, 109, 50, 89, 6, 36, 34, 0, 115, 101, 114, 1, 112, 10, 2, 32, 28, 33, 0, 100, 101, 114, 1, 10, 2, 32,
-			3, 109, 50, 114, 0, 110, 1, 105, 99, 110, 97, 3, 109, 68, 0, 1, 114, 115, 98, 184, 195, 108, 102, 97, 2, 115, 3, 111, 50, 0,
-			1, 118, 101, 114, 2, 99, 104, 101, 3, 112, 50, 0, 4, 1, 115, 2, 115, 105, 98, 3, 112, 68, 0, 2, 32, 103, 114, 111, 115, 0,
-			2, 100, 111, 115, 0, 2, 116, 117, 115, 105, 97, 115, 0, 116, 1, 99, 99, 97, 2, 12, 0, 103, 114, 111, 115, 3, 112, 68, 81, 34,
-			6, 39, 0, 115, 1, 114, 10, 2, 32, 3, 114, 20, 50, 89, 0, 1, 114, 10, 2, 32, 24, 3, 114, 50, 0, 7, 6, 101, 114, 0,
-			105, 110, 103, 1, 17, 67, 21, 2, 12, 12, 3, 4, 36, 34, 36, 68, 0, 1, 105, 118, 97, 120, 3, 6, 36, 0, 4, 1, 99, 105,
-			102, 102, 111, 3, 6, 36, 34, 0, 1, 107, 114, 97, 112, 2, 32, 98, 105, 108, 0, 1, 108, 101, 118, 117, 106, 2, 101, 110, 0, 1,
-			109, 97, 2, 105, 107, 97, 32, 0, 1, 110, 97, 109, 2, 32, 0, 1, 115, 115, 97, 112, 2, 32, 103, 97, 100, 101, 110, 0, 1, 115,
-			115, 97, 112, 2, 115, 101, 100, 0, 1, 116, 101, 102, 97, 99, 2, 105, 0, 1, 116, 114, 111, 109, 0, 1, 116, 115, 21, 2, 105, 101,
-			0, 1, 116, 116, 97, 108, 102, 2, 101, 110, 100, 101, 0, 1, 118, 104, 110, 101, 0, 8, 98, 114, 97, 98, 2, 12, 0, 8, 102, 105,
-			114, 101, 112, 0, 8, 105, 118, 105, 114, 2, 97, 0, 8, 108, 97, 118, 97, 107, 0, 8, 108, 108, 97, 102, 2, 12, 0, 8, 110, 105,
-			102, 0, 8, 115, 115, 97, 107, 2, 101, 114, 0, 8, 116, 107, 97, 114, 97, 107, 0, 8, 116, 111, 110, 2, 32, 100, 101, 110, 0, 8,
-			116, 111, 110, 2, 32, 100, 101, 116, 0, 8, 116, 114, 97, 118, 107, 0, 8, 116, 115, 121, 109, 2, 105, 117, 0, 8, 118, 97, 108, 107,
-			2, 12, 12, 0, 105, 1, 116, 115, 2, 115, 107, 28, 33, 3, 6, 36, 34, 37, 0, 4, 116, 1, 107, 114, 111, 102, 3, 6, 36, 34,
-			47, 0, 116, 1, 109, 114, 111, 102, 101, 114, 0, 116, 1, 110, 101, 103, 0, 116, 1, 110, 105, 0, 116, 1, 110, 114, 111, 98, 0, 116,
-			1, 115, 97, 108, 98, 0, 116, 1, 116, 107, 101, 102, 102, 97, 0, 116, 1, 117, 110, 105, 116, 110, 111, 107, 0, 116, 1, 117, 110, 105,
-			116, 110, 111, 107, 115, 105, 100, 0, 116, 1, 118, 114, 101, 115, 101, 114, 0, 110, 101, 8, 116, 117, 97, 115, 2, 12, 3, 6, 36, 34,
-			50, 0, 4, 110, 101, 8, 99, 117, 108, 2, 12, 3, 6, 36, 34, 50, 13, 0, 110, 101, 8, 100, 111, 109, 2, 12, 12, 0, 110, 101,
-			8, 115, 97, 107, 2, 12, 0, 110, 101, 8, 116, 115, 105, 99, 2, 12, 0, 110, 101, 8, 118, 97, 116, 2, 12, 0, 110, 101, 114, 8,
-			115, 97, 107, 2, 12, 3, 6, 36, 34, 50, 114, 0, 101, 8, 103, 97, 101, 114, 2, 32, 3, 6, 36, 34, 108, 0, 4, 101, 114, 8,
-			110, 97, 109, 3, 6, 36, 114, 0, 101, 114, 8, 110, 97, 109, 0, 4, 1, 98, 108, 97, 2, 116, 17, 65, 3, 6, 109, 34, 0, 1,
-			102, 110, 105, 2, 110, 111, 0, 1, 116, 110, 105, 2, 110, 32, 12, 12, 0, 1, 116, 111, 115, 105, 2, 109, 0, 1, 118, 114, 101, 112,
-			2, 115, 12, 0, 8, 108, 108, 97, 116, 2, 107, 0, 8, 115, 110, 111, 107, 2, 118, 97, 116, 105, 118, 0, 8, 115, 110, 111, 107, 2,
-			118, 101, 115, 0, 8, 115, 166, 195, 114, 112, 2, 118, 97, 116, 105, 118, 0, 8, 116, 110, 105, 2, 110, 32, 12, 12, 0, 8, 116, 110,
-			105, 2, 110, 101, 32, 12, 12, 0, 8, 118, 105, 110, 117, 2, 115, 12, 0, 8, 118, 111, 114, 116, 110, 111, 107, 2, 115, 0, 4, 116,
-			1, 99, 110, 111, 107, 3, 6, 109, 34, 47, 0, 116, 1, 112, 115, 107, 101, 0, 116, 1, 115, 115, 101, 100, 0, 116, 1, 118, 104, 116,
-			101, 0, 116, 1, 118, 111, 114, 116, 110, 105, 0, 116, 1, 118, 117, 107, 2, 12, 12, 0, 110, 101, 8, 116, 110, 97, 108, 2, 12, 3,
-			6, 109, 34, 50, 13, 0, 1, 116, 108, 97, 2, 110, 97, 116, 105, 118, 3, 6, 109, 51, 0, 4, 101, 1, 21, 2, 32, 28, 33, 12,
-			12, 3, 7, 36, 12, 114, 0, 101, 1, 21, 2, 100, 101, 28, 33, 12, 12, 0, 101, 1, 21, 2, 114, 28, 33, 12, 12, 0, 101, 1,
-			21, 2, 114, 101, 28, 33, 12, 12, 12, 0, 101, 1, 21, 2, 114, 101, 110, 28, 33, 12, 12, 0, 101, 1, 21, 2, 115, 32, 28, 33,
-			12, 12, 0, 101, 1, 21, 2, 116, 28, 33, 12, 12, 0, 101, 1, 105, 21, 2, 110, 32, 28, 33, 12, 12, 0, 4, 1, 21, 2, 28,
-			33, 12, 12, 12, 3, 7, 36, 34, 0, 1, 21, 2, 32, 28, 33, 12, 12, 0, 1, 21, 2, 101, 32, 28, 33, 12, 12, 12, 0, 1,
-			21, 2, 101, 116, 28, 33, 12, 12, 12, 12, 0, 105, 110, 103, 1, 10, 2, 28, 33, 12, 12, 3, 7, 36, 34, 36, 68, 0, 101, 116,
-			1, 10, 2, 28, 33, 12, 12, 3, 7, 36, 34, 108, 86, 0, 101, 114, 1, 108, 101, 118, 117, 106, 3, 7, 36, 114, 0, 1, 100, 110,
-			97, 120, 101, 108, 97, 3, 8, 72, 114, 0, 4, 1, 107, 105, 10, 2, 32, 28, 33, 12, 12, 3, 8, 114, 0, 1, 107, 105, 10, 2,
-			115, 32, 28, 33, 12, 12, 0, 105, 1, 21, 2, 115, 107, 28, 33, 3, 8, 114, 34, 37, 0, 4, 1, 102, 110, 10, 2, 101, 114, 21,
-			3, 13, 34, 0, 1, 118, 101, 108, 2, 101, 103, 12, 0, 101, 100, 101, 8, 108, 108, 97, 2, 32, 3, 13, 34, 36, 86, 13, 0, 101,
-			116, 1, 116, 108, 97, 3, 13, 34, 108, 86, 0, 101, 110, 1, 102, 110, 10, 2, 99, 3, 13, 34, 112, 68, 0, 1, 116, 2, 114, 97,
-			115, 115, 3, 35, 0, 4, 1, 99, 2, 101, 12, 3, 36, 34, 0, 1, 100, 2, 102, 114, 97, 0, 1, 100, 114, 117, 2, 101, 116, 0,
-			1, 102, 97, 114, 103, 111, 116, 111, 102, 110, 101, 103, 2, 101, 0, 1, 102, 105, 114, 101, 112, 0, 1, 103, 2, 97, 110, 105, 0, 1,
-			103, 2, 101, 12, 0, 1, 103, 2, 109, 97, 110, 115, 0, 1, 103, 115, 121, 110, 2, 114, 105, 0, 1, 106, 102, 2, 32, 0, 1, 107,
-			114, 111, 102, 2, 116, 12, 0, 1, 108, 98, 2, 101, 0, 1, 108, 108, 97, 2, 103, 0, 1, 109, 109, 111, 107, 2, 99, 105, 101, 108,
-			0, 1, 110, 105, 102, 0, 1, 112, 101, 116, 114, 111, 115, 0, 1, 112, 103, 105, 116, 103, 105, 118, 0, 1, 116, 2, 97, 12, 0, 1,
-			116, 105, 99, 21, 2, 101, 0, 1, 116, 107, 97, 114, 97, 107, 0, 1, 116, 114, 97, 118, 107, 0, 1, 116, 115, 2, 101, 111, 0, 1,
-			116, 115, 2, 105, 0, 1, 116, 115, 2, 108, 105, 110, 103, 0, 1, 116, 115, 117, 104, 2, 105, 0, 1, 118, 2, 101, 116, 0, 1, 118,
-			2, 114, 32, 0, 1, 118, 97, 108, 107, 2, 12, 12, 0, 1, 118, 97, 114, 103, 21, 2, 101, 0, 1, 118, 104, 2, 12, 0, 8, 2,
-			103, 111, 0, 8, 103, 2, 116, 97, 12, 0, 8, 104, 2, 32, 0, 8, 107, 115, 2, 32, 0, 8, 108, 2, 32, 12, 12, 0, 8, 110,
-			115, 2, 32, 0, 8, 115, 2, 32, 0, 8, 115, 114, 101, 118, 111, 0, 8, 116, 2, 32, 0, 8, 2, 17, 67, 3, 36, 34, 6, 0,
-			110, 101, 1, 116, 117, 97, 115, 2, 12, 3, 36, 34, 50, 0, 4, 110, 101, 1, 99, 117, 108, 2, 12, 3, 36, 34, 50, 13, 0, 110,
-			101, 1, 100, 111, 109, 2, 12, 12, 0, 110, 101, 1, 115, 97, 107, 2, 12, 0, 110, 101, 1, 116, 115, 105, 99, 2, 12, 0, 110, 101,
-			1, 118, 97, 116, 2, 12, 0, 4, 101, 1, 100, 114, 117, 118, 2, 32, 3, 36, 34, 108, 0, 101, 1, 103, 97, 101, 114, 2, 32, 0,
-			101, 1, 109, 109, 117, 115, 112, 111, 0, 101, 1, 114, 101, 112, 111, 0, 101, 1, 114, 116, 2, 12, 0, 101, 1, 115, 105, 116, 97, 109,
-			97, 114, 100, 21, 0, 101, 1, 116, 97, 108, 101, 114, 0, 101, 1, 116, 117, 107, 115, 105, 100, 0, 101, 116, 1, 116, 110, 101, 105, 114,
-			111, 3, 36, 34, 108, 86, 0, 4, 101, 1, 115, 97, 98, 3, 36, 114, 0, 101, 114, 1, 110, 97, 109, 0, 4, 1, 100, 110, 117, 104,
-			3, 108, 34, 0, 1, 109, 109, 17, 65, 2, 97, 0, 1, 116, 114, 111, 112, 101, 114, 2, 101, 12, 0, 1, 116, 114, 111, 112, 101, 114,
-			2, 101, 110, 12, 0, 1, 118, 121, 108, 102, 2, 117, 116, 101, 0, 101, 1, 21, 2, 114, 101, 28, 33, 12, 12, 3, 108, 34, 6, 36,
-			0, 4, 105, 1, 107, 115, 97, 118, 2, 28, 33, 3, 108, 34, 7, 37, 0, 105, 1, 116, 110, 97, 102, 110, 105, 2, 28, 33, 0, 1,
-			112, 115, 101, 100, 2, 97, 116, 3, 108, 51, 0, 4, 101, 1, 21, 2, 32, 3, 108, 114, 0, 101, 1, 100, 105, 118, 0, 101, 1, 114,
-			2, 32, 0, 1, 116, 2, 114, 3, 109, 0, 4, 1, 102, 2, 110, 105, 3, 109, 34, 0, 1, 103, 2, 100, 97, 0, 1, 103, 2, 110,
-			12, 12, 0, 1, 103, 2, 114, 105, 103, 0, 1, 104, 2, 108, 105, 12, 0, 1, 104, 101, 98, 2, 115, 107, 0, 1, 106, 2, 103, 0,
-			1, 106, 2, 110, 12, 12, 12, 12, 12, 0, 1, 110, 2, 118, 0, 1, 115, 2, 116, 12, 0, 1, 115, 2, 118, 12, 0, 1, 116, 2,
-			109, 105, 110, 0, 1, 116, 2, 109, 111, 0, 1, 116, 2, 110, 105, 12, 0, 1, 116, 2, 112, 0, 1, 116, 2, 114, 105, 101, 114, 0,
-			1, 116, 115, 2, 111, 108, 0, 1, 118, 2, 17, 67, 12, 12, 12, 0, 1, 118, 105, 110, 117, 0, 1, 118, 115, 2, 105, 103, 101, 0,
-			2, 102, 97, 114, 105, 0, 8, 18, 71, 2, 32, 0, 8, 103, 2, 110, 101, 32, 12, 0, 8, 110, 101, 103, 2, 116, 0, 114, 1, 103,
-			114, 166, 195, 0, 110, 1, 100, 111, 109, 2, 105, 12, 3, 109, 34, 50, 0, 110, 101, 1, 116, 110, 97, 108, 112, 111, 116, 2, 12, 12,
-			3, 109, 34, 50, 13, 0, 4, 115, 1, 21, 2, 116, 97, 116, 3, 109, 34, 89, 0, 115, 1, 102, 2, 107, 0, 8, 2, 32, 3, 110,
-			34, 0, 114, 195, 166, 110, 1, 116, 3, 110, 34, 6, 111, 68, 0, 1, 116, 2, 114, 111, 114, 3, 111, 34, 0, 98, 121, 1, 100, 3,
-			112, 12, 71, 37, 0, 4, 1, 18, 71, 18, 71, 3, 114, 0, 1, 18, 74, 2, 110, 101, 32, 0, 1, 21, 2, 32, 24, 0, 1, 21,
-			2, 115, 17, 67, 0, 1, 98, 111, 2, 115, 116, 0, 1, 100, 2, 98, 121, 103, 0, 1, 100, 21, 2, 17, 67, 0, 1, 100, 100, 117,
-			0, 1, 100, 101, 108, 2, 21, 0, 1, 100, 110, 117, 0, 1, 102, 102, 2, 17, 65, 116, 0, 1, 102, 102, 117, 107, 2, 116, 0, 1,
-			103, 2, 12, 0, 1, 103, 2, 32, 12, 12, 0, 1, 103, 110, 166, 195, 108, 2, 101, 0, 1, 103, 114, 111, 98, 2, 101, 0, 1, 103,
-			117, 115, 2, 101, 0, 1, 106, 101, 108, 0, 1, 106, 108, 97, 116, 2, 25, 12, 12, 0, 1, 106, 110, 105, 108, 2, 12, 12, 12, 0,
-			1, 107, 105, 17, 67, 2, 12, 0, 1, 107, 107, 2, 12, 0, 1, 107, 110, 117, 98, 0, 1, 107, 111, 112, 0, 1, 107, 115, 0, 1,
-			108, 103, 117, 109, 115, 0, 1, 108, 108, 105, 112, 0, 1, 108, 184, 195, 0, 1, 109, 21, 2, 115, 107, 0, 1, 109, 109, 2, 101, 116,
-			0, 1, 109, 109, 17, 65, 2, 17, 67, 0, 1, 109, 109, 117, 0, 1, 109, 111, 114, 0, 1, 110, 2, 32, 12, 0, 1, 110, 97, 109,
-			32, 114, 101, 100, 2, 32, 0, 1, 110, 97, 109, 109, 101, 114, 102, 0, 1, 110, 97, 109, 111, 2, 12, 0, 1, 110, 97, 109, 114, 111,
-			2, 32, 0, 1, 110, 105, 102, 108, 101, 100, 0, 1, 110, 116, 0, 1, 112, 117, 2, 17, 67, 0, 1, 114, 2, 17, 67, 0, 1, 114,
-			2, 32, 0, 1, 115, 110, 97, 100, 0, 1, 115, 110, 97, 112, 0, 1, 115, 117, 114, 98, 0, 1, 115, 121, 0, 1, 116, 2, 32, 0,
-			1, 116, 2, 101, 116, 32, 0, 1, 116, 10, 2, 17, 67, 0, 1, 116, 101, 109, 2, 12, 0, 1, 116, 102, 101, 0, 1, 116, 103, 0,
-			1, 116, 108, 97, 0, 1, 116, 108, 111, 112, 2, 97, 98, 0, 1, 116, 110, 101, 100, 0, 1, 116, 110, 105, 2, 21, 0, 1, 116, 110,
-			105, 2, 110, 97, 116, 0, 1, 116, 112, 101, 99, 115, 0, 1, 116, 114, 111, 112, 101, 114, 2, 12, 0, 1, 116, 115, 105, 0, 1, 116,
-			115, 110, 184, 195, 2, 12, 0, 1, 116, 115, 121, 114, 107, 2, 21, 0, 1, 116, 116, 2, 17, 67, 0, 1, 118, 97, 17, 67, 2, 32,
-			12, 0, 1, 118, 97, 114, 103, 100, 108, 117, 103, 2, 101, 0, 1, 118, 101, 108, 2, 17, 67, 12, 12, 0, 1, 118, 108, 111, 118, 101,
-			114, 2, 12, 0, 1, 118, 111, 2, 12, 12, 12, 0, 1, 118, 114, 97, 102, 2, 115, 12, 0, 1, 118, 121, 2, 12, 0, 1, 118, 166,
-			195, 110, 115, 2, 12, 12, 0, 1, 118, 184, 195, 2, 115, 116, 12, 12, 0, 8, 108, 108, 97, 0, 8, 112, 97, 107, 2, 115, 12, 12,
-			0, 95, 1, 104, 116, 0, 101, 1, 118, 111, 2, 110, 115, 12, 3, 114, 6, 36, 0, 4, 1, 100, 105, 107, 115, 3, 114, 34, 0, 1,
-			100, 111, 114, 98, 2, 101, 110, 0, 1, 118, 101, 108, 2, 101, 110, 12, 0, 105, 1, 21, 2, 28, 33, 12, 12, 3, 114, 34, 6, 37,
-			0, 105, 1, 118, 184, 195, 114, 21, 3, 114, 34, 37, 0, 101, 110, 1, 21, 2, 32, 3, 114, 34, 108, 50, 0, 101, 110, 115, 1, 21,
-			2, 32, 3, 114, 34, 108, 50, 89, 0, 4, 116, 1, 21, 2, 32, 3, 114, 47, 0, 116, 1, 21, 2, 115, 32, 0, 116, 1, 98, 109,
-			97, 108, 115, 0, 4, 110, 101, 1, 21, 2, 32, 12, 12, 3, 114, 50, 13, 0, 110, 101, 1, 100, 21, 2, 12, 12, 0, 110, 101, 1,
-			116, 110, 97, 108, 112, 2, 12, 12, 0, 110, 101, 1, 116, 115, 105, 99, 115, 97, 102, 2, 12, 0, 110, 101, 1, 118, 97, 116, 115, 2,
-			12, 0, 110, 101, 115, 1, 21, 2, 32, 3, 114, 50, 13, 89, 0, 110, 101, 1, 103, 110, 105, 102, 2, 109, 3, 114, 50, 36, 0, 110,
-			101, 1, 116, 110, 105, 2, 116, 12, 3, 114, 50, 109, 0, 1, 103, 110, 105, 102, 2, 101, 110, 3, 114, 51, 0, 115, 1, 21, 2, 32,
-			3, 114, 89, 0, 115, 116, 101, 1, 21, 2, 32, 3, 114, 89, 47, 13, 0, 4, 1, 115, 2, 118, 105, 99, 101, 109, 101, 100, 3, 118,
-			0, 1, 115, 2, 118, 105, 99, 101, 110, 0, 1, 115, 2, 118, 105, 99, 101, 115, 116, 97, 116, 105, 111, 110, 0, 110, 105, 101, 8, 3,
-			118, 12, 50, 37, 0, 103, 105, 101, 1, 102, 3, 118, 12, 81, 37, 0, 110, 111, 110, 1, 118, 2, 12, 12, 3, 118, 50, 108, 50, 0,
-			4, 118, 105, 99, 101, 1, 115, 101, 100, 110, 117, 107, 3, 118, 84, 37, 89, 0, 118, 105, 99, 101, 1, 115, 109, 111, 111, 114, 0, 118,
-			105, 99, 101, 109, 105, 110, 100, 101, 116, 1, 115, 3, 118, 84, 37, 89, 65, 35, 57, 50, 72, 13, 86, 0, 7, 6, 101, 116, 0, 4,
-			1, 114, 107, 101, 100, 2, 12, 3, 6, 36, 47, 0, 1, 116, 105, 2, 32, 12, 0, 1, 116, 105, 2, 115, 32, 12, 0, 8, 98, 97,
-			102, 108, 97, 0, 8, 98, 101, 103, 2, 12, 0, 8, 98, 105, 116, 0, 8, 102, 111, 114, 112, 0, 8, 107, 115, 97, 0, 8, 107, 115,
-			97, 107, 0, 8, 110, 97, 108, 112, 0, 8, 112, 97, 116, 0, 8, 112, 109, 111, 114, 116, 0, 8, 116, 114, 101, 98, 117, 112, 0, 116,
-			8, 107, 115, 97, 107, 0, 101, 114, 1, 109, 10, 3, 6, 36, 47, 114, 0, 4, 1, 98, 114, 111, 115, 3, 6, 109, 0, 1, 108, 101,
-			104, 99, 105, 109, 0, 4, 1, 99, 110, 105, 112, 3, 6, 109, 47, 0, 1, 102, 97, 116, 115, 0, 1, 107, 110, 97, 108, 98, 32, 110,
-			101, 0, 1, 108, 117, 109, 97, 0, 1, 110, 111, 105, 114, 97, 109, 0, 1, 110, 111, 115, 32, 110, 101, 0, 1, 114, 97, 107, 2, 12,
-			12, 0, 1, 114, 107, 110, 111, 107, 0, 1, 117, 100, 21, 2, 32, 0, 1, 117, 100, 32, 101, 103, 110, 121, 115, 2, 32, 0, 1, 117,
-			100, 32, 103, 110, 97, 115, 2, 32, 0, 1, 117, 100, 32, 110, 101, 2, 32, 0, 1, 117, 100, 32, 114, 101, 103, 110, 121, 115, 2, 32,
-			0, 1, 117, 100, 32, 116, 101, 103, 110, 117, 115, 2, 32, 0, 1, 117, 114, 105, 112, 0, 8, 100, 97, 107, 2, 12, 0, 8, 103, 100,
-			117, 98, 0, 8, 105, 118, 114, 101, 115, 0, 8, 107, 105, 114, 98, 0, 8, 107, 111, 107, 0, 8, 107, 114, 97, 112, 0, 8, 108, 105,
-			111, 116, 0, 8, 108, 105, 111, 116, 0, 8, 108, 108, 105, 98, 0, 8, 110, 105, 114, 97, 108, 107, 0, 8, 110, 111, 106, 97, 98, 0,
-			8, 114, 107, 101, 115, 2, 12, 0, 8, 115, 108, 97, 102, 0, 8, 115, 114, 111, 107, 32, 116, 101, 0, 8, 116, 110, 105, 118, 107, 0,
-			8, 116, 114, 97, 118, 107, 0, 116, 1, 110, 111, 105, 114, 97, 109, 0, 116, 1, 110, 111, 115, 2, 101, 0, 116, 8, 105, 118, 114, 101,
-			115, 0, 116, 8, 108, 108, 105, 98, 0, 116, 8, 110, 111, 106, 97, 98, 0, 116, 101, 8, 103, 114, 111, 101, 103, 0, 116, 101, 8, 117,
-			103, 97, 98, 0, 4, 116, 101, 8, 103, 97, 114, 102, 102, 117, 115, 3, 6, 109, 47, 13, 0, 116, 101, 8, 103, 114, 117, 111, 99, 0,
-			116, 101, 8, 107, 97, 108, 112, 0, 116, 101, 8, 107, 111, 107, 0, 116, 101, 8, 107, 115, 105, 100, 0, 116, 101, 8, 108, 105, 111, 116,
-			0, 116, 101, 8, 108, 108, 101, 118, 111, 110, 0, 116, 101, 8, 108, 111, 18, 75, 105, 110, 0, 116, 101, 8, 108, 117, 111, 114, 0, 116,
-			101, 8, 108, 121, 0, 116, 101, 8, 109, 108, 97, 112, 0, 116, 101, 8, 110, 97, 105, 112, 0, 116, 101, 8, 110, 105, 101, 114, 0, 116,
-			101, 8, 110, 117, 114, 98, 0, 116, 101, 8, 112, 105, 112, 0, 116, 101, 8, 114, 111, 98, 109, 97, 106, 0, 116, 101, 8, 114, 117, 98,
-			0, 116, 101, 8, 115, 105, 109, 101, 104, 99, 0, 116, 101, 8, 115, 105, 117, 113, 114, 97, 109, 0, 116, 101, 8, 115, 117, 109, 0, 116,
-			101, 8, 117, 116, 97, 116, 115, 0, 116, 101, 8, 118, 117, 99, 0, 116, 101, 114, 8, 117, 116, 97, 116, 115, 3, 6, 109, 47, 114, 0,
-			4, 116, 101, 8, 114, 98, 117, 111, 115, 3, 6, 110, 47, 13, 0, 116, 101, 8, 114, 103, 105, 97, 110, 105, 118, 0, 8, 114, 117, 98,
-			97, 116, 2, 12, 3, 6, 111, 47, 0, 1, 116, 105, 10, 2, 28, 33, 12, 3, 7, 36, 47, 0, 4, 8, 107, 105, 116, 101, 3, 7,
-			109, 47, 0, 8, 108, 111, 105, 118, 2, 12, 0, 116, 101, 8, 107, 105, 116, 101, 3, 7, 109, 47, 13, 0, 1, 114, 2, 195, 184, 106,
-			12, 3, 13, 47, 0, 4, 1, 21, 2, 32, 12, 3, 13, 86, 0, 1, 103, 97, 116, 0, 1, 114, 117, 2, 32, 12, 12, 0, 1, 117,
-			100, 110, 105, 118, 2, 32, 0, 1, 118, 97, 2, 12, 0, 115, 1, 21, 2, 32, 12, 3, 13, 86, 89, 0, 4, 1, 98, 97, 102, 108,
-			97, 3, 36, 47, 0, 1, 98, 105, 116, 0, 1, 102, 111, 114, 112, 0, 1, 103, 101, 109, 2, 12, 0, 1, 105, 118, 114, 101, 115, 0,
-			1, 112, 97, 116, 0, 1, 112, 109, 111, 114, 116, 0, 1, 115, 108, 105, 116, 0, 1, 115, 109, 101, 110, 110, 101, 103, 0, 1, 115, 114,
-			101, 118, 111, 0, 8, 107, 115, 0, 8, 115, 2, 32, 12, 0, 8, 115, 100, 110, 105, 2, 32, 0, 8, 115, 101, 100, 108, 105, 0, 8,
-			115, 117, 2, 32, 0, 95, 1, 114, 111, 102, 3, 47, 0, 4, 1, 102, 111, 114, 112, 2, 105, 3, 108, 47, 0, 1, 105, 114, 114, 97,
-			104, 0, 1, 114, 107, 101, 115, 2, 195, 166, 114, 0, 1, 114, 21, 2, 32, 12, 3, 108, 86, 0, 4, 1, 107, 105, 114, 98, 3, 109,
-			47, 0, 1, 108, 98, 97, 116, 0, 1, 108, 101, 109, 111, 0, 1, 108, 101, 114, 166, 195, 112, 2, 12, 0, 1, 108, 105, 111, 116, 0,
-			1, 108, 108, 97, 98, 122, 122, 97, 106, 0, 1, 108, 108, 105, 98, 0, 1, 108, 111, 105, 118, 0, 1, 108, 112, 2, 12, 0, 1, 108,
-			112, 100, 108, 117, 103, 0, 1, 108, 112, 109, 97, 107, 115, 0, 1, 108, 112, 114, 101, 118, 101, 108, 0, 1, 108, 112, 115, 2, 12, 0,
-			1, 108, 112, 118, 108, 184, 195, 115, 0, 1, 110, 101, 103, 97, 108, 102, 117, 109, 97, 107, 0, 1, 110, 101, 107, 115, 105, 102, 0, 1,
-			110, 105, 114, 97, 108, 107, 0, 1, 110, 108, 101, 2, 12, 0, 1, 110, 111, 106, 97, 98, 0, 1, 110, 114, 165, 195, 104, 0, 1, 116,
-			110, 105, 118, 107, 0, 1, 116, 114, 97, 118, 107, 0, 8, 115, 115, 97, 98, 0, 116, 1, 108, 105, 111, 116, 0, 116, 1, 108, 108, 105,
-			98, 0, 116, 1, 108, 112, 2, 12, 0, 4, 1, 114, 97, 103, 114, 97, 109, 3, 111, 47, 0, 1, 114, 97, 122, 97, 110, 0, 1, 114,
-			100, 110, 105, 2, 12, 0, 1, 114, 101, 98, 184, 195, 107, 2, 12, 0, 1, 114, 101, 100, 121, 114, 103, 2, 12, 0, 1, 114, 101, 100,
-			165, 195, 114, 2, 12, 0, 1, 114, 101, 100, 184, 195, 109, 2, 12, 0, 1, 114, 101, 102, 102, 97, 114, 116, 115, 2, 12, 0, 1, 114,
-			101, 103, 97, 108, 107, 2, 12, 0, 1, 114, 101, 103, 103, 121, 98, 2, 12, 0, 1, 114, 101, 103, 105, 108, 2, 12, 0, 1, 114, 101,
-			103, 110, 101, 112, 103, 97, 100, 2, 12, 0, 1, 114, 101, 105, 108, 105, 109, 97, 102, 2, 12, 0, 1, 114, 101, 107, 115, 101, 110, 110,
-			101, 109, 2, 12, 0, 1, 114, 101, 107, 115, 105, 102, 2, 12, 0, 1, 114, 101, 108, 97, 116, 2, 12, 0, 1, 114, 101, 108, 97, 116,
-			165, 195, 112, 2, 12, 0, 1, 114, 101, 108, 111, 107, 115, 2, 12, 0, 1, 114, 101, 109, 109, 101, 116, 115, 2, 12, 0, 1, 114, 101,
-			110, 97, 118, 100, 166, 195, 115, 2, 12, 0, 1, 114, 101, 110, 101, 2, 12, 12, 0, 1, 114, 101, 116, 115, 101, 106, 184, 195, 104, 0,
-			1, 114, 101, 116, 115, 114, 184, 195, 102, 2, 12, 0, 1, 114, 101, 116, 116, 97, 107, 115, 2, 12, 0, 1, 114, 101, 116, 116, 121, 98,
-			2, 12, 0, 1, 114, 101, 117, 107, 115, 2, 12, 0, 1, 114, 101, 118, 114, 97, 2, 12, 0, 1, 114, 103, 105, 100, 114, 166, 195, 102,
-			2, 12, 0, 1, 114, 108, 101, 103, 101, 114, 2, 12, 0, 1, 114, 110, 101, 104, 2, 32, 0, 1, 114, 111, 116, 101, 118, 2, 12, 0,
-			1, 114, 114, 101, 100, 110, 117, 2, 12, 0, 1, 114, 114, 101, 103, 114, 111, 98, 0, 1, 114, 115, 2, 12, 12, 0, 1, 114, 117, 32,
-			101, 114, 184, 195, 103, 2, 12, 12, 0, 1, 114, 117, 32, 103, 105, 100, 2, 12, 12, 0, 1, 114, 117, 32, 103, 105, 100, 32, 101, 2,
-			12, 12, 0, 1, 114, 117, 32, 103, 105, 100, 32, 116, 2, 12, 12, 0, 1, 114, 117, 32, 103, 105, 109, 32, 101, 2, 12, 12, 0, 1,
-			114, 117, 32, 103, 105, 109, 32, 116, 2, 12, 12, 0, 1, 114, 117, 32, 103, 111, 32, 116, 101, 114, 2, 12, 0, 1, 114, 117, 32, 109,
-			101, 100, 32, 116, 2, 12, 12, 0, 1, 114, 117, 32, 110, 101, 2, 12, 12, 0, 1, 114, 117, 32, 114, 101, 106, 32, 116, 2, 12, 12,
-			0, 1, 114, 117, 32, 114, 184, 195, 103, 2, 12, 12, 0, 1, 114, 118, 105, 108, 2, 12, 0, 8, 114, 100, 114, 111, 2, 12, 0, 8,
-			114, 117, 2, 32, 109, 111, 100, 32, 12, 12, 0, 43, 8, 114, 0, 116, 1, 114, 2, 12, 12, 12, 12, 0, 1, 114, 100, 110, 166, 195,
-			2, 12, 3, 114, 86, 0, 7, 6, 103, 101, 0, 2, 110, 105, 117, 115, 3, 0, 4, 8, 101, 110, 97, 109, 3, 8, 91, 108, 0, 8,
-			101, 116, 114, 111, 107, 0, 1, 108, 184, 195, 102, 3, 57, 108, 0, 4, 1, 111, 108, 97, 104, 2, 110, 3, 81, 6, 36, 0, 8, 97,
-			2, 114, 101, 0, 4, 2, 110, 105, 97, 108, 3, 81, 36, 0, 2, 110, 105, 116, 97, 108, 0, 2, 110, 105, 116, 105, 118, 0, 8, 2,
-			110, 101, 114, 101, 114, 101, 32, 0, 4, 2, 98, 101, 116, 3, 81, 36, 6, 0, 2, 98, 105, 115, 0, 2, 98, 111, 109, 109, 101, 114,
-			108, 105, 103, 0, 2, 98, 114, 111, 107, 107, 101, 110, 0, 2, 98, 114, 195, 166, 107, 107, 101, 108, 105, 103, 0, 2, 98, 121, 114, 0,
-			2, 98, 195, 166, 114, 100, 101, 0, 2, 100, 105, 103, 101, 110, 0, 2, 100, 117, 108, 103, 116, 0, 2, 104, 97, 108, 116, 0, 2, 104,
-			101, 106, 109, 101, 114, 195, 165, 100, 0, 2, 104, 101, 110, 110, 97, 0, 2, 104, 195, 166, 110, 103, 0, 2, 104, 195, 184, 114, 0, 2,
-			108, 97, 115, 115, 101, 110, 0, 2, 108, 101, 100, 0, 2, 108, 101, 106, 100, 101, 0, 2, 108, 105, 110, 100, 101, 0, 2, 108, 195, 166,
-			110, 100, 101, 114, 0, 2, 109, 97, 107, 0, 2, 109, 97, 108, 0, 2, 109, 101, 110, 0, 2, 109, 121, 115, 101, 0, 2, 109, 121, 116,
-			0, 2, 109, 121, 116, 108, 105, 103, 0, 2, 110, 111, 109, 0, 2, 110, 116, 105, 108, 0, 2, 110, 117, 105, 110, 0, 2, 112, 97, 114,
-			100, 0, 2, 114, 97, 110, 105, 101, 0, 2, 114, 97, 110, 105, 117, 109, 0, 2, 114, 195, 165, 100, 101, 0, 2, 115, 97, 110, 100, 116,
-			0, 2, 115, 105, 109, 115, 0, 2, 115, 106, 195, 166, 102, 116, 0, 2, 115, 107, 195, 166, 102, 116, 105, 103, 0, 2, 115, 112, 101, 110,
-			115, 116, 0, 2, 115, 116, 97, 103, 101, 110, 0, 2, 115, 116, 97, 108, 116, 0, 2, 115, 116, 105, 107, 0, 2, 115, 118, 101, 106, 115,
-			110, 105, 110, 103, 0, 2, 115, 118, 105, 110, 100, 116, 0, 2, 118, 97, 108, 100, 105, 103, 0, 2, 118, 97, 108, 116, 0, 2, 118, 97,
-			110, 100, 116, 0, 2, 118, 105, 110, 100, 0, 2, 118, 105, 110, 115, 116, 0, 2, 118, 105, 114, 0, 2, 118, 195, 166, 107, 115, 116, 0,
-			2, 118, 195, 166, 114, 0, 110, 101, 114, 101, 108, 8, 3, 81, 36, 50, 13, 34, 6, 111, 55, 0, 110, 105, 2, 110, 100, 3, 81, 36,
-			50, 36, 0, 2, 110, 105, 110, 118, 101, 115, 116, 3, 81, 109, 0, 114, 2, 110, 105, 110, 103, 3, 81, 109, 34, 0, 114, 109, 97, 105,
-			110, 3, 90, 109, 34, 65, 6, 110, 68, 0, 4, 1, 97, 100, 110, 97, 98, 2, 114, 101, 3, 91, 6, 36, 0, 1, 97, 103, 2, 114,
-			101, 0, 1, 97, 103, 110, 101, 2, 114, 101, 0, 1, 97, 110, 101, 109, 2, 114, 101, 0, 1, 97, 114, 97, 103, 2, 114, 101, 0, 1,
-			97, 114, 117, 111, 102, 2, 114, 101, 0, 1, 101, 116, 111, 114, 112, 2, 114, 101, 0, 1, 105, 108, 103, 101, 110, 2, 114, 101, 0, 1,
-			110, 97, 104, 99, 2, 114, 101, 0, 1, 110, 97, 114, 2, 114, 101, 0, 1, 110, 97, 114, 100, 110, 105, 2, 114, 101, 0, 1, 110, 97,
-			114, 100, 117, 2, 114, 101, 0, 1, 110, 97, 114, 114, 97, 2, 114, 101, 0, 1, 111, 108, 2, 114, 101, 0, 1, 111, 108, 100, 110, 105,
-			2, 114, 101, 0, 1, 114, 97, 104, 99, 2, 114, 101, 0, 1, 114, 117, 2, 114, 101, 0, 1, 117, 106, 2, 114, 101, 0, 1, 100, 117,
-			98, 2, 116, 3, 91, 6, 109, 0, 4, 1, 111, 108, 2, 109, 195, 184, 3, 91, 36, 0, 2, 110, 101, 114, 116, 0, 2, 110, 101, 114,
-			195, 184, 115, 0, 2, 110, 105, 0, 8, 2, 110, 101, 32, 0, 8, 2, 110, 101, 114, 101, 0, 8, 2, 110, 101, 118, 101, 114, 0, 4,
-			110, 101, 114, 2, 32, 109, 105, 103, 3, 91, 36, 50, 6, 36, 34, 0, 110, 101, 114, 2, 101, 32, 109, 105, 103, 0, 4, 1, 101, 110,
-			97, 109, 3, 91, 108, 0, 1, 101, 116, 114, 111, 107, 0, 1, 111, 108, 2, 98, 114, 111, 0, 1, 111, 108, 2, 110, 0, 1, 111, 108,
-			114, 101, 114, 117, 109, 105, 114, 102, 0, 8, 111, 108, 2, 32, 0, 114, 8, 111, 108, 2, 32, 3, 91, 114, 0, 4, 1, 111, 108, 111,
-			107, 121, 2, 110, 3, 108, 0, 1, 111, 108, 111, 116, 107, 111, 114, 112, 2, 110, 0, 7, 6, 105, 103, 0, 1, 114, 116, 110, 105, 2,
-			12, 3, 6, 37, 0, 101, 1, 116, 108, 111, 118, 3, 6, 37, 12, 91, 0, 1, 100, 114, 166, 195, 118, 2, 101, 110, 115, 116, 97, 110,
-			100, 3, 6, 37, 81, 0, 1, 10, 2, 28, 33, 12, 12, 3, 8, 37, 0, 104, 116, 1, 108, 3, 35, 57, 47, 0, 104, 116, 121, 1,
-			109, 3, 35, 57, 47, 37, 0, 4, 8, 108, 2, 32, 103, 111, 100, 116, 3, 36, 49, 0, 8, 108, 2, 32, 111, 114, 100, 101, 110, 116,
-			108, 105, 103, 116, 0, 8, 108, 2, 32, 112, 195, 166, 110, 116, 0, 8, 108, 2, 32, 114, 111, 108, 105, 103, 116, 0, 8, 108, 2, 32,
-			115, 116, 105, 108, 108, 101, 0, 4, 1, 100, 97, 100, 100, 101, 2, 116, 3, 36, 81, 0, 1, 100, 97, 115, 111, 114, 112, 2, 116, 0,
-			1, 100, 101, 100, 166, 195, 109, 115, 2, 116, 0, 1, 100, 101, 116, 108, 101, 104, 2, 116, 0, 1, 100, 101, 116, 109, 166, 195, 107, 115,
-			2, 116, 0, 1, 100, 112, 111, 2, 116, 0, 1, 100, 117, 107, 105, 97, 104, 2, 116, 0, 1, 108, 112, 2, 116, 12, 0, 1, 115, 100,
-			2, 116, 12, 0, 1, 115, 110, 2, 116, 12, 0, 1, 115, 112, 111, 2, 116, 12, 0, 1, 118, 115, 2, 116, 12, 0, 8, 98, 2, 32,
-			0, 8, 100, 2, 116, 0, 103, 1, 108, 2, 101, 12, 12, 0, 103, 101, 114, 1, 110, 3, 36, 81, 114, 0, 4, 1, 100, 97, 116, 115,
-			3, 37, 0, 1, 100, 108, 0, 1, 100, 110, 166, 195, 104, 101, 98, 0, 1, 108, 111, 98, 2, 12, 0, 1, 115, 100, 105, 104, 0, 1,
-			115, 100, 111, 114, 116, 0, 1, 115, 100, 117, 109, 115, 0, 1, 115, 100, 117, 112, 0, 1, 115, 100, 117, 112, 2, 116, 0, 1, 116, 116,
-			97, 102, 0, 2, 32, 0, 2, 104, 101, 100, 12, 0, 2, 115, 0, 4, 101, 1, 114, 107, 2, 110, 3, 37, 12, 13, 0, 101, 1, 115,
-			2, 12, 12, 0, 101, 2, 12, 12, 0, 101, 110, 1, 112, 3, 37, 12, 108, 50, 0, 101, 114, 2, 12, 3, 37, 12, 114, 0, 116, 1,
-			21, 2, 32, 3, 37, 47, 0, 1, 112, 2, 32, 3, 37, 49, 0, 116, 1, 110, 101, 103, 184, 195, 100, 3, 37, 49, 47, 0, 4, 1,
-			100, 101, 110, 115, 3, 37, 57, 0, 1, 100, 105, 115, 110, 101, 103, 0, 1, 100, 121, 0, 1, 108, 2, 101, 110, 101, 0, 1, 110, 115,
-			0, 1, 116, 115, 2, 101, 12, 0, 101, 1, 100, 2, 110, 100, 101, 3, 37, 57, 13, 0, 4, 101, 1, 110, 115, 2, 12, 3, 37, 57,
-			108, 0, 101, 1, 118, 2, 110, 0, 4, 1, 107, 100, 117, 3, 37, 81, 0, 1, 108, 2, 97, 12, 12, 0, 1, 108, 2, 114, 97, 109,
-			0, 1, 114, 105, 100, 2, 101, 110, 116, 0, 8, 107, 2, 32, 0, 4, 101, 1, 100, 101, 114, 2, 114, 3, 37, 81, 6, 36, 0, 101,
-			1, 108, 105, 118, 105, 114, 112, 0, 101, 1, 108, 108, 101, 116, 110, 105, 2, 110, 0, 101, 1, 114, 101, 2, 114, 101, 0, 101, 1, 114,
-			105, 100, 2, 114, 0, 101, 1, 114, 114, 2, 114, 0, 101, 1, 118, 97, 110, 2, 114, 0, 101, 114, 105, 97, 1, 110, 3, 37, 81, 6,
-			36, 51, 37, 110, 0, 101, 2, 110, 12, 3, 37, 81, 6, 109, 0, 101, 1, 110, 2, 114, 105, 3, 37, 81, 36, 0, 101, 97, 1, 114,
-			102, 2, 114, 3, 37, 81, 37, 0, 101, 114, 8, 110, 2, 32, 3, 37, 81, 114, 0, 115, 1, 114, 107, 3, 37, 89, 0, 101, 110, 1,
-			108, 105, 100, 2, 99, 101, 3, 37, 91, 6, 112, 68, 0, 101, 1, 108, 111, 114, 3, 37, 109, 0, 7, 6, 105, 110, 0, 4, 1, 21,
-			2, 28, 33, 3, 6, 37, 50, 0, 1, 116, 97, 108, 10, 2, 28, 33, 0, 1, 116, 110, 97, 122, 121, 98, 0, 101, 1, 10, 2, 116,
-			114, 121, 107, 28, 33, 3, 6, 37, 50, 13, 0, 101, 1, 10, 2, 28, 33, 3, 6, 37, 50, 108, 0, 101, 1, 10, 2, 114, 28, 33,
-			3, 6, 37, 50, 114, 0, 4, 1, 115, 115, 97, 10, 2, 28, 33, 3, 6, 109, 68, 0, 1, 116, 97, 10, 2, 28, 33, 0, 4, 1,
-			108, 101, 118, 2, 102, 111, 114, 109, 101, 114, 101, 116, 3, 36, 50, 0, 100, 2, 104, 111, 108, 100, 0, 1, 10, 2, 97, 114, 28, 33,
-			3, 37, 50, 6, 0, 101, 1, 10, 2, 114, 101, 28, 33, 3, 37, 50, 6, 36, 0, 101, 1, 98, 97, 107, 2, 116, 3, 37, 50, 6,
-			109, 0, 7, 6, 105, 115, 0, 116, 1, 10, 2, 28, 33, 12, 12, 12, 3, 7, 37, 89, 47, 0, 116, 1, 10, 2, 105, 107, 28, 33,
-			3, 37, 89, 47, 6, 0, 116, 105, 107, 101, 1, 10, 2, 114, 101, 3, 37, 89, 47, 37, 49, 6, 36, 0, 7, 6, 105, 116, 0, 1,
-			10, 2, 116, 28, 33, 3, 6, 37, 0, 1, 10, 2, 28, 33, 3, 6, 37, 47, 0, 1, 10, 2, 97, 110, 28, 33, 3, 37, 47, 6,
-			0, 105, 111, 110, 1, 10, 2, 28, 33, 3, 37, 91, 6, 39, 50, 0, 7, 6, 105, 118, 0, 4, 8, 116, 97, 116, 115, 3, 6, 37,
-			58, 0, 8, 116, 107, 97, 114, 116, 110, 111, 107, 0, 4, 8, 97, 110, 3, 6, 37, 84, 0, 8, 99, 115, 97, 108, 0, 8, 100, 110,
-			117, 114, 101, 103, 0, 8, 107, 114, 97, 0, 8, 115, 105, 99, 101, 100, 0, 8, 115, 114, 117, 107, 0, 8, 115, 115, 97, 109, 0, 8,
-			115, 166, 195, 104, 100, 97, 0, 8, 116, 97, 105, 116, 105, 110, 105, 0, 8, 116, 97, 108, 117, 103, 101, 114, 0, 8, 116, 107, 101, 112,
-			115, 114, 101, 112, 0, 8, 116, 107, 101, 114, 105, 100, 0, 8, 116, 107, 101, 116, 101, 100, 0, 8, 116, 111, 109, 0, 8, 116, 111, 109,
-			111, 107, 111, 108, 0, 8, 116, 112, 97, 100, 97, 0, 8, 116, 112, 117, 114, 101, 0, 8, 116, 114, 101, 115, 115, 97, 0, 8, 116, 114,
-			111, 98, 97, 0, 8, 116, 114, 111, 112, 115, 0, 8, 116, 115, 97, 114, 116, 110, 111, 107, 0, 8, 116, 115, 101, 103, 105, 100, 0, 8,
-			116, 117, 107, 101, 115, 107, 101, 0, 7, 6, 109, 101, 0, 116, 8, 114, 117, 111, 103, 3, 65, 6, 36, 0, 110, 116, 1, 10, 3, 65,
-			6, 36, 50, 47, 0, 4, 110, 116, 1, 101, 115, 115, 111, 100, 110, 101, 3, 65, 6, 112, 68, 0, 110, 116, 8, 97, 114, 101, 112, 109,
-			101, 116, 0, 110, 116, 8, 101, 98, 109, 97, 106, 110, 101, 0, 110, 116, 8, 101, 99, 97, 108, 112, 101, 100, 0, 110, 116, 8, 101, 99,
-			110, 97, 118, 97, 0, 110, 116, 8, 101, 100, 114, 97, 98, 109, 111, 98, 0, 110, 116, 8, 101, 103, 97, 103, 110, 101, 0, 110, 116, 8,
-			101, 103, 110, 97, 104, 99, 0, 110, 116, 8, 101, 103, 110, 97, 114, 114, 97, 0, 110, 116, 8, 101, 104, 99, 97, 116, 101, 100, 0, 110,
-			116, 8, 101, 108, 98, 184, 195, 109, 0, 110, 116, 8, 101, 108, 103, 101, 114, 0, 110, 116, 8, 101, 108, 108, 101, 118, 105, 110, 0, 110,
-			116, 8, 101, 108, 112, 112, 117, 115, 0, 110, 116, 8, 101, 110, 105, 102, 102, 97, 114, 0, 110, 116, 8, 101, 110, 110, 111, 98, 97, 0,
-			110, 116, 8, 101, 110, 110, 111, 116, 97, 107, 0, 110, 116, 8, 101, 110, 114, 101, 118, 117, 103, 0, 110, 116, 8, 101, 115, 115, 97, 108,
-			107, 0, 110, 116, 8, 101, 115, 115, 105, 108, 98, 97, 116, 101, 0, 110, 116, 8, 101, 115, 115, 105, 116, 114, 101, 118, 97, 0, 110, 116,
-			8, 101, 115, 115, 105, 116, 114, 101, 118, 105, 100, 0, 110, 116, 8, 101, 115, 115, 111, 110, 97, 107, 0, 110, 116, 8, 101, 115, 115, 111,
-			112, 0, 110, 116, 8, 101, 116, 107, 97, 114, 116, 0, 110, 116, 8, 101, 116, 114, 97, 112, 101, 100, 0, 110, 116, 8, 101, 118, 97, 108,
-			0, 110, 116, 8, 105, 108, 112, 109, 111, 107, 0, 110, 116, 8, 105, 116, 110, 101, 115, 115, 101, 114, 0, 110, 116, 8, 105, 116, 114, 111,
-			115, 0, 4, 110, 116, 8, 101, 108, 97, 110, 103, 105, 115, 3, 65, 7, 112, 68, 0, 110, 116, 8, 101, 110, 110, 111, 115, 166, 195, 114,
-			0, 116, 1, 114, 117, 111, 103, 3, 65, 36, 0, 4, 110, 116, 101, 1, 101, 108, 103, 101, 114, 2, 114, 101, 116, 3, 65, 36, 50, 47,
-			6, 36, 0, 110, 116, 101, 8, 101, 108, 103, 101, 114, 2, 114, 101, 0, 110, 116, 101, 108, 8, 117, 114, 116, 115, 110, 105, 3, 65, 36,
-			50, 47, 6, 36, 55, 0, 110, 116, 101, 108, 1, 117, 114, 116, 115, 110, 105, 3, 65, 36, 50, 47, 36, 55, 0, 4, 110, 2, 116, 117,
-			115, 105, 97, 115, 3, 65, 112, 68, 0, 110, 116, 1, 97, 114, 101, 112, 109, 101, 116, 0, 110, 116, 1, 101, 98, 109, 97, 106, 110, 101,
-			0, 110, 116, 1, 101, 99, 97, 108, 112, 101, 100, 0, 110, 116, 1, 101, 99, 110, 97, 118, 97, 0, 110, 116, 1, 101, 100, 114, 97, 98,
-			109, 111, 98, 0, 110, 116, 1, 101, 103, 97, 103, 110, 101, 0, 110, 116, 1, 101, 103, 110, 97, 104, 99, 0, 110, 116, 1, 101, 103, 110,
-			97, 114, 114, 97, 0, 110, 116, 1, 101, 104, 99, 97, 116, 101, 100, 0, 110, 116, 1, 101, 108, 97, 110, 103, 105, 115, 0, 110, 116, 1,
-			101, 108, 98, 184, 195, 109, 0, 110, 116, 1, 101, 108, 103, 101, 114, 0, 110, 116, 1, 101, 108, 108, 101, 118, 105, 110, 0, 110, 116, 1,
-			101, 108, 112, 112, 117, 115, 0, 110, 116, 1, 101, 110, 105, 102, 102, 97, 114, 0, 110, 116, 1, 101, 110, 110, 111, 98, 97, 0, 110, 116,
-			1, 101, 110, 110, 111, 115, 166, 195, 114, 0, 110, 116, 1, 101, 110, 110, 111, 116, 97, 107, 0, 110, 116, 1, 101, 110, 114, 101, 118, 117,
-			103, 0, 110, 116, 1, 101, 115, 115, 97, 108, 107, 0, 110, 116, 1, 101, 115, 115, 105, 108, 98, 97, 116, 101, 0, 110, 116, 1, 101, 115,
-			115, 105, 116, 114, 101, 118, 97, 0, 110, 116, 1, 101, 115, 115, 105, 116, 114, 101, 118, 105, 100, 0, 110, 116, 1, 101, 115, 115, 111, 110,
-			110, 111, 107, 0, 110, 116, 1, 101, 115, 115, 111, 112, 0, 110, 116, 1, 101, 116, 107, 97, 114, 116, 0, 110, 116, 1, 101, 116, 114, 97,
-			112, 101, 100, 0, 110, 116, 1, 101, 118, 97, 108, 0, 110, 116, 1, 105, 108, 112, 109, 111, 107, 0, 110, 116, 1, 105, 116, 110, 101, 115,
-			115, 101, 114, 0, 110, 116, 1, 105, 116, 114, 111, 115, 0, 7, 6, 110, 100, 0, 4, 1, 97, 101, 110, 2, 101, 114, 3, 8, 50, 72,
-			0, 1, 97, 109, 97, 2, 97, 0, 1, 97, 110, 114, 101, 102, 2, 111, 0, 1, 97, 115, 115, 105, 108, 103, 2, 111, 0, 1, 101, 107,
-			115, 105, 2, 101, 114, 117, 110, 0, 4, 1, 17, 65, 3, 50, 0, 1, 97, 98, 2, 101, 108, 0, 1, 97, 98, 32, 103, 101, 106, 2,
-			101, 114, 0, 1, 97, 98, 32, 117, 100, 2, 101, 114, 0, 1, 97, 98, 114, 111, 102, 2, 101, 114, 0, 1, 97, 104, 2, 101, 108, 0,
-			1, 97, 108, 0, 1, 97, 108, 2, 97, 114, 0, 1, 97, 112, 2, 101, 108, 111, 107, 0, 1, 97, 116, 115, 2, 12, 0, 1, 97, 118,
-			2, 97, 102, 0, 1, 101, 2, 101, 12, 0, 1, 101, 2, 101, 108, 105, 103, 0, 1, 101, 107, 2, 101, 108, 0, 1, 105, 2, 101, 114,
-			107, 114, 101, 100, 115, 12, 0, 1, 105, 2, 101, 114, 108, 12, 0, 1, 105, 2, 101, 114, 115, 116, 12, 0, 1, 105, 2, 105, 109, 101,
-			108, 108, 101, 109, 0, 1, 105, 98, 2, 101, 0, 1, 105, 98, 2, 105, 110, 0, 1, 105, 102, 2, 12, 0, 1, 105, 102, 2, 101, 108,
-			195, 184, 110, 0, 1, 105, 109, 2, 101, 0, 1, 105, 116, 2, 105, 110, 0, 1, 105, 118, 2, 101, 0, 1, 105, 118, 2, 105, 110, 0,
-			1, 105, 118, 107, 0, 1, 105, 118, 115, 2, 101, 108, 0, 1, 117, 100, 2, 114, 101, 0, 1, 117, 104, 2, 12, 0, 1, 121, 2, 101,
-			108, 0, 1, 121, 108, 112, 2, 114, 0, 1, 165, 195, 2, 101, 108, 105, 0, 1, 165, 195, 104, 2, 97, 114, 0, 2, 101, 108, 115, 101,
-			0, 8, 97, 98, 32, 101, 100, 2, 101, 114, 0, 8, 97, 98, 32, 105, 2, 101, 114, 0, 8, 97, 98, 32, 105, 118, 2, 101, 114, 0,
-			8, 97, 98, 32, 110, 97, 109, 2, 101, 114, 0, 8, 105, 2, 114, 101, 116, 0, 101, 1, 101, 118, 2, 108, 0, 101, 1, 105, 109, 2,
-			108, 105, 0, 101, 1, 117, 115, 105, 109, 2, 108, 105, 103, 0, 110, 1, 17, 65, 0, 101, 1, 105, 118, 101, 2, 108, 105, 3, 50, 13,
-			0, 101, 108, 1, 97, 109, 3, 50, 13, 55, 0, 1, 97, 98, 2, 101, 114, 3, 50, 19, 0, 4, 1, 17, 65, 2, 97, 116, 3, 50,
-			72, 0, 1, 17, 65, 2, 114, 101, 0, 1, 17, 65, 2, 114, 105, 110, 0, 1, 97, 2, 97, 108, 117, 115, 0, 1, 97, 2, 101, 108,
-			0, 1, 97, 2, 101, 115, 98, 106, 0, 1, 97, 2, 114, 101, 0, 1, 97, 2, 121, 0, 1, 97, 98, 2, 97, 103, 101, 0, 1, 97,
-			98, 2, 101, 107, 114, 105, 0, 1, 97, 98, 2, 101, 109, 101, 100, 108, 101, 109, 0, 1, 97, 98, 2, 101, 110, 115, 0, 1, 97, 98,
-			2, 101, 114, 110, 101, 0, 1, 97, 98, 2, 101, 114, 111, 0, 1, 97, 98, 2, 101, 117, 118, 195, 166, 115, 101, 110, 0, 1, 97, 98,
-			2, 105, 116, 0, 1, 97, 103, 2, 97, 0, 1, 97, 103, 2, 101, 114, 101, 0, 1, 97, 104, 2, 105, 0, 1, 97, 107, 115, 2, 97,
-			0, 1, 97, 107, 115, 2, 105, 110, 97, 118, 0, 1, 97, 107, 115, 114, 97, 109, 0, 1, 97, 109, 2, 97, 103, 0, 1, 97, 109, 2,
-			97, 114, 105, 110, 0, 1, 97, 109, 109, 2, 101, 114, 0, 1, 97, 109, 109, 2, 111, 0, 1, 97, 109, 109, 111, 107, 0, 1, 97, 112,
+			118, 114, 101, 115, 101, 114, 0, 1, 100, 103, 97, 98, 0, 1, 100, 107, 184, 195, 114, 98, 0, 1, 100, 110, 97, 0, 1, 100, 110, 101,
+			106, 101, 0, 1, 100, 110, 101, 118, 111, 0, 1, 100, 110, 111, 0, 1, 100, 114, 101, 100, 101, 110, 0, 1, 100, 114, 111, 102, 0, 1,
+			100, 115, 100, 110, 97, 108, 0, 1, 100, 115, 109, 101, 103, 101, 108, 0, 1, 100, 115, 110, 101, 100, 114, 101, 118, 0, 1, 100, 115, 184,
+			195, 108, 0, 1, 100, 116, 110, 101, 99, 111, 114, 112, 0, 1, 100, 118, 108, 97, 104, 0, 1, 100, 121, 98, 0, 1, 103, 110, 97, 118,
+			101, 0, 1, 109, 2, 111, 110, 0, 1, 109, 101, 100, 101, 118, 104, 0, 1, 109, 101, 116, 103, 105, 115, 0, 1, 109, 103, 117, 114, 0,
+			1, 109, 110, 101, 98, 0, 1, 109, 111, 103, 97, 115, 0, 1, 109, 115, 105, 114, 0, 1, 110, 97, 112, 0, 1, 110, 114, 111, 107, 2,
+			101, 118, 97, 116, 111, 114, 0, 1, 114, 2, 97, 116, 0, 1, 116, 2, 101, 102, 0, 2, 105, 107, 115, 105, 114, 0, 8, 104, 2, 116,
+			32, 0, 101, 114, 1, 100, 2, 12, 3, 114, 55, 109, 0, 118, 8, 115, 2, 111, 109, 32, 3, 115, 55, 0, 4, 1, 21, 2, 115, 107,
+			101, 12, 3, 116, 55, 0, 1, 98, 97, 115, 105, 0, 1, 98, 97, 116, 2, 32, 0, 1, 100, 97, 107, 105, 114, 102, 2, 108, 0, 1,
+			100, 111, 109, 0, 1, 102, 21, 2, 116, 0, 1, 104, 2, 105, 107, 111, 112, 116, 0, 1, 104, 2, 115, 116, 0, 1, 104, 2, 116, 21,
+			12, 0, 1, 104, 21, 2, 116, 0, 1, 105, 110, 97, 100, 0, 1, 105, 114, 98, 97, 103, 0, 1, 105, 116, 0, 1, 107, 115, 2, 32,
+			0, 1, 107, 115, 101, 115, 110, 166, 195, 114, 103, 0, 1, 107, 115, 107, 114, 97, 109, 0, 1, 107, 115, 114, 111, 0, 1, 109, 114, 111,
+			102, 117, 0, 1, 110, 105, 109, 105, 114, 107, 0, 1, 110, 111, 105, 116, 97, 114, 0, 1, 110, 111, 105, 116, 107, 110, 117, 102, 115, 121,
+			100, 0, 1, 110, 111, 115, 114, 101, 112, 0, 1, 112, 10, 2, 115, 32, 0, 1, 112, 100, 110, 105, 107, 115, 2, 115, 12, 0, 1, 112,
+			101, 118, 166, 195, 114, 2, 115, 12, 0, 1, 114, 2, 105, 103, 105, 12, 0, 1, 115, 2, 115, 107, 97, 0, 1, 116, 2, 116, 32, 0,
+			1, 116, 110, 101, 0, 1, 116, 111, 104, 21, 0, 1, 116, 115, 101, 108, 108, 105, 114, 98, 0, 1, 116, 115, 101, 115, 105, 112, 115, 0,
+			1, 116, 115, 101, 116, 110, 97, 118, 114, 101, 115, 0, 1, 116, 115, 114, 101, 100, 110, 117, 2, 12, 0, 1, 116, 115, 115, 103, 110, 105,
+			100, 110, 97, 108, 0, 1, 117, 116, 107, 101, 108, 108, 101, 116, 110, 105, 0, 8, 2, 17, 67, 0, 8, 112, 112, 97, 2, 115, 105, 110,
+			0, 8, 116, 115, 2, 32, 0, 8, 117, 109, 97, 115, 0, 8, 118, 0, 108, 8, 0, 118, 8, 115, 0, 108, 105, 111, 116, 3, 116, 55,
+			57, 109, 47, 0, 118, 101, 8, 115, 3, 116, 55, 84, 14, 0, 1, 114, 21, 2, 32, 12, 3, 119, 55, 0, 7, 6, 101, 110, 0, 4,
+			1, 99, 166, 195, 109, 3, 6, 114, 50, 0, 1, 108, 121, 116, 101, 109, 0, 1, 108, 121, 116, 166, 195, 0, 1, 109, 111, 110, 166, 195,
+			102, 0, 1, 114, 121, 115, 2, 101, 110, 32, 0, 1, 114, 121, 115, 2, 101, 114, 32, 0, 8, 108, 121, 116, 101, 99, 97, 0, 8, 109,
+			101, 103, 0, 8, 109, 114, 111, 102, 2, 101, 0, 8, 114, 121, 115, 32, 110, 101, 0, 4, 1, 112, 112, 97, 2, 100, 105, 107, 115, 3,
+			6, 115, 50, 0, 8, 100, 97, 2, 32, 0, 4, 1, 114, 102, 111, 122, 105, 107, 115, 3, 6, 116, 50, 0, 1, 116, 115, 105, 115, 107,
+			101, 2, 115, 0, 8, 100, 105, 115, 101, 114, 2, 115, 0, 8, 100, 105, 115, 166, 195, 114, 112, 2, 116, 0, 8, 103, 97, 2, 116, 0,
+			8, 108, 111, 112, 2, 116, 97, 0, 8, 117, 108, 102, 110, 105, 2, 122, 97, 0, 100, 1, 108, 105, 116, 2, 101, 98, 114, 0, 110, 8,
+			105, 115, 114, 101, 112, 0, 4, 116, 1, 10, 2, 32, 28, 33, 12, 12, 12, 3, 6, 116, 50, 47, 0, 116, 1, 10, 2, 101, 110, 28,
+			33, 12, 12, 0, 116, 1, 10, 2, 101, 114, 28, 33, 12, 12, 0, 4, 115, 1, 21, 2, 32, 28, 33, 12, 3, 6, 116, 50, 89, 0,
+			115, 1, 21, 2, 101, 28, 33, 12, 0, 4, 99, 101, 1, 108, 108, 101, 99, 120, 101, 2, 28, 33, 3, 6, 116, 50, 89, 20, 13, 0,
+			99, 101, 1, 110, 105, 109, 101, 2, 28, 33, 0, 100, 101, 114, 8, 108, 97, 107, 3, 6, 116, 50, 109, 0, 115, 1, 114, 21, 2, 28,
+			33, 12, 3, 6, 120, 50, 89, 0, 4, 8, 118, 101, 114, 2, 99, 104, 101, 3, 6, 122, 68, 0, 116, 1, 99, 99, 10, 2, 28, 33,
+			12, 12, 12, 0, 116, 1, 115, 101, 10, 2, 28, 33, 12, 0, 115, 101, 114, 1, 10, 2, 28, 33, 3, 7, 116, 50, 89, 109, 0, 116,
+			1, 114, 10, 2, 28, 33, 12, 12, 12, 3, 7, 120, 50, 47, 0, 99, 101, 1, 10, 2, 28, 33, 3, 7, 122, 68, 89, 20, 13, 0,
+			99, 101, 1, 10, 2, 114, 28, 33, 3, 7, 122, 68, 89, 109, 0, 4, 1, 10, 2, 32, 3, 14, 50, 0, 1, 10, 2, 116, 32, 0,
+			1, 98, 98, 105, 114, 103, 2, 101, 12, 0, 1, 98, 109, 111, 98, 2, 12, 0, 1, 98, 166, 195, 107, 2, 12, 12, 0, 1, 98, 166,
+			195, 108, 2, 12, 12, 0, 1, 100, 2, 116, 32, 0, 1, 100, 105, 115, 0, 1, 100, 114, 111, 0, 1, 102, 102, 97, 107, 115, 116, 101,
+			114, 0, 1, 107, 2, 101, 110, 0, 1, 114, 101, 105, 107, 2, 32, 24, 0, 1, 115, 100, 184, 195, 100, 2, 115, 0, 1, 116, 2, 195,
+			165, 0, 1, 116, 102, 97, 0, 1, 118, 111, 100, 2, 12, 12, 0, 100, 101, 1, 107, 107, 166, 195, 114, 116, 108, 105, 116, 2, 12, 3,
+			14, 50, 14, 0, 116, 8, 118, 101, 2, 17, 65, 12, 12, 3, 14, 50, 47, 0, 115, 1, 10, 2, 32, 12, 3, 14, 50, 89, 0, 100,
+			101, 114, 1, 21, 2, 32, 3, 14, 50, 109, 0, 1, 112, 115, 117, 115, 2, 115, 105, 111, 110, 3, 36, 50, 0, 115, 101, 1, 103, 10,
+			2, 28, 33, 3, 81, 7, 116, 50, 89, 109, 0, 1, 114, 2, 32, 3, 109, 50, 0, 115, 1, 114, 10, 2, 32, 12, 3, 109, 50, 89,
+			0, 4, 1, 98, 98, 105, 114, 2, 12, 12, 3, 114, 50, 0, 1, 98, 100, 114, 111, 98, 2, 12, 12, 0, 1, 98, 100, 184, 195, 107,
+			0, 1, 98, 100, 184, 195, 107, 2, 12, 12, 0, 1, 98, 100, 184, 195, 114, 2, 12, 12, 0, 1, 98, 101, 98, 166, 195, 107, 2, 12,
+			12, 0, 1, 98, 101, 100, 105, 115, 2, 12, 12, 0, 1, 98, 101, 103, 110, 97, 108, 2, 12, 12, 0, 1, 98, 101, 107, 115, 105, 102,
+			2, 12, 12, 0, 1, 98, 101, 107, 115, 110, 184, 195, 2, 12, 12, 0, 1, 98, 101, 108, 97, 104, 2, 12, 12, 0, 1, 98, 101, 108,
+			103, 184, 195, 0, 1, 98, 101, 108, 103, 184, 195, 110, 2, 12, 12, 0, 1, 98, 101, 108, 111, 116, 115, 2, 12, 12, 0, 1, 98, 101,
+			110, 97, 104, 2, 12, 12, 0, 1, 98, 101, 110, 110, 105, 107, 115, 0, 1, 98, 101, 114, 106, 184, 195, 104, 2, 12, 12, 0, 1, 98,
+			101, 114, 116, 115, 110, 101, 118, 2, 12, 12, 0, 1, 98, 101, 115, 107, 117, 98, 2, 12, 12, 0, 1, 98, 101, 115, 109, 97, 108, 2,
+			12, 12, 0, 1, 98, 101, 115, 115, 105, 2, 12, 12, 0, 1, 98, 101, 115, 166, 195, 110, 2, 12, 12, 0, 1, 98, 101, 116, 102, 111,
+			104, 2, 12, 12, 0, 1, 98, 101, 116, 116, 184, 195, 116, 115, 2, 12, 12, 0, 1, 98, 101, 117, 98, 108, 97, 2, 12, 12, 0, 1,
+			98, 101, 117, 108, 102, 2, 12, 12, 0, 1, 98, 103, 97, 98, 2, 12, 12, 0, 1, 98, 105, 115, 2, 12, 12, 0, 1, 98, 108, 97,
+			109, 115, 2, 12, 12, 0, 1, 98, 108, 101, 100, 108, 105, 115, 2, 12, 12, 0, 1, 98, 108, 101, 107, 110, 97, 116, 115, 0, 1, 98,
+			108, 101, 107, 110, 105, 118, 2, 12, 12, 0, 1, 98, 108, 166, 195, 104, 2, 12, 12, 0, 1, 98, 109, 97, 107, 115, 2, 12, 12, 0,
+			1, 98, 110, 101, 102, 108, 101, 2, 12, 0, 1, 98, 111, 107, 0, 1, 98, 111, 107, 2, 12, 12, 0, 1, 98, 114, 105, 102, 2, 12,
+			12, 0, 1, 98, 114, 111, 102, 2, 12, 12, 0, 1, 98, 114, 165, 195, 108, 2, 12, 12, 0, 1, 98, 115, 108, 101, 118, 101, 114, 2,
+			12, 12, 0, 1, 98, 115, 110, 114, 97, 98, 2, 12, 12, 0, 1, 98, 116, 115, 121, 114, 98, 2, 12, 12, 0, 1, 98, 118, 114, 97,
+			109, 2, 12, 12, 0, 1, 98, 165, 195, 103, 2, 12, 12, 0, 1, 98, 166, 195, 114, 116, 2, 12, 12, 0, 1, 116, 115, 2, 17, 65,
+			0, 1, 116, 115, 2, 103, 117, 108, 118, 0, 1, 116, 115, 97, 116, 117, 97, 98, 0, 1, 116, 115, 100, 110, 97, 115, 0, 1, 116, 115,
+			100, 110, 97, 116, 0, 1, 116, 115, 100, 110, 117, 114, 103, 0, 1, 116, 115, 101, 98, 105, 108, 115, 0, 1, 116, 115, 101, 100, 108, 97,
+			103, 0, 1, 116, 115, 101, 100, 110, 101, 114, 0, 1, 116, 115, 101, 100, 110, 105, 109, 0, 1, 116, 115, 101, 100, 166, 195, 114, 116, 0,
+			1, 116, 115, 101, 103, 103, 121, 98, 0, 1, 116, 115, 101, 106, 184, 195, 0, 1, 116, 115, 101, 107, 107, 111, 114, 0, 1, 116, 115, 101,
+			107, 107, 121, 109, 115, 0, 1, 116, 115, 101, 107, 110, 105, 104, 0, 1, 116, 115, 101, 107, 110, 117, 109, 0, 1, 116, 115, 101, 107, 115,
+			101, 118, 115, 0, 1, 116, 115, 101, 108, 103, 110, 97, 114, 0, 1, 116, 115, 101, 108, 108, 117, 114, 0, 1, 116, 115, 101, 108, 108, 184,
+			195, 109, 0, 1, 116, 115, 101, 110, 114, 184, 195, 106, 104, 2, 12, 0, 1, 116, 115, 101, 110, 117, 114, 0, 1, 116, 115, 101, 110, 165,
+			195, 109, 0, 1, 116, 115, 101, 112, 109, 97, 107, 0, 1, 116, 115, 101, 112, 112, 97, 114, 116, 0, 1, 116, 115, 101, 114, 121, 110, 0,
+			1, 116, 115, 101, 116, 110, 105, 108, 102, 0, 1, 116, 115, 101, 118, 184, 195, 114, 112, 0, 1, 116, 115, 102, 117, 116, 0, 1, 116, 115,
+			103, 97, 116, 0, 1, 116, 115, 103, 110, 117, 116, 0, 1, 116, 115, 107, 108, 97, 107, 0, 1, 116, 115, 107, 166, 195, 100, 0, 1, 116,
+			115, 108, 101, 100, 101, 107, 0, 1, 116, 115, 108, 101, 100, 166, 195, 0, 1, 116, 115, 108, 101, 100, 166, 195, 0, 1, 116, 115, 108, 103,
+			101, 116, 0, 1, 116, 115, 108, 111, 104, 0, 1, 116, 115, 109, 105, 108, 0, 1, 116, 115, 110, 105, 104, 114, 0, 1, 116, 115, 110, 105,
+			118, 0, 1, 116, 115, 110, 114, 166, 195, 118, 107, 0, 1, 116, 115, 111, 114, 98, 0, 1, 116, 115, 112, 109, 105, 112, 0, 1, 116, 115,
+			112, 121, 114, 100, 0, 1, 116, 115, 114, 101, 100, 97, 118, 107, 0, 1, 116, 115, 114, 101, 108, 111, 109, 0, 1, 116, 115, 114, 101, 116,
+			101, 109, 0, 1, 116, 115, 114, 111, 101, 116, 101, 109, 0, 1, 116, 115, 114, 111, 107, 115, 0, 1, 116, 115, 114, 111, 109, 114, 97, 109,
+			0, 1, 116, 115, 114, 117, 109, 0, 1, 116, 115, 116, 100, 101, 102, 0, 1, 116, 115, 116, 110, 97, 107, 0, 1, 116, 115, 116, 110, 105,
+			108, 102, 0, 1, 116, 115, 116, 117, 108, 115, 0, 1, 116, 115, 116, 117, 109, 115, 0, 1, 116, 115, 118, 97, 114, 103, 0, 1, 116, 115,
+			165, 195, 109, 115, 0, 1, 116, 115, 165, 195, 109, 115, 0, 1, 116, 115, 165, 195, 114, 103, 0, 8, 114, 117, 2, 32, 0, 116, 1, 10,
+			2, 117, 114, 28, 33, 12, 3, 114, 50, 47, 6, 0, 4, 1, 100, 105, 115, 101, 114, 2, 115, 3, 116, 50, 0, 1, 100, 105, 115, 166,
+			195, 114, 112, 2, 116, 0, 1, 103, 2, 115, 107, 0, 1, 103, 2, 115, 116, 0, 1, 103, 10, 2, 107, 101, 110, 100, 0, 1, 103, 10,
+			2, 115, 116, 0, 1, 103, 97, 2, 116, 0, 1, 106, 116, 2, 115, 116, 0, 1, 109, 2, 115, 12, 0, 1, 112, 101, 100, 0, 1, 112,
+			101, 108, 103, 117, 107, 0, 1, 112, 108, 97, 116, 101, 109, 0, 1, 112, 116, 108, 105, 102, 0, 1, 114, 103, 2, 12, 0, 1, 114, 103,
+			101, 105, 108, 111, 0, 1, 114, 103, 115, 116, 114, 111, 112, 115, 0, 1, 114, 115, 100, 108, 121, 107, 115, 0, 1, 116, 115, 105, 115, 115,
+			97, 21, 2, 116, 0, 1, 118, 2, 115, 107, 12, 0, 1, 118, 101, 107, 115, 101, 110, 110, 101, 109, 2, 12, 0, 1, 118, 101, 110, 110,
+			101, 112, 0, 1, 118, 101, 114, 121, 100, 0, 1, 118, 101, 115, 115, 184, 195, 98, 0, 1, 118, 115, 21, 2, 32, 0, 8, 114, 2, 32,
+			0, 100, 1, 107, 2, 12, 12, 12, 12, 0, 110, 1, 103, 10, 2, 101, 109, 0, 116, 1, 10, 2, 97, 108, 115, 107, 28, 33, 12, 3,
+			116, 50, 47, 6, 0, 100, 101, 114, 1, 116, 114, 97, 98, 3, 116, 50, 72, 109, 0, 115, 1, 118, 107, 3, 116, 50, 89, 0, 4, 115,
+			101, 114, 1, 10, 2, 101, 28, 33, 3, 116, 50, 89, 6, 114, 34, 0, 115, 101, 114, 1, 112, 10, 2, 32, 28, 33, 0, 116, 105, 1,
+			118, 2, 111, 110, 12, 3, 116, 50, 91, 57, 0, 100, 101, 114, 1, 115, 21, 2, 12, 3, 116, 50, 109, 0, 110, 1, 105, 99, 110, 97,
+			3, 116, 68, 0, 1, 114, 115, 98, 184, 195, 108, 102, 97, 2, 115, 3, 119, 50, 0, 100, 101, 114, 1, 114, 10, 2, 32, 3, 122, 50,
+			109, 0, 4, 1, 115, 2, 115, 105, 98, 3, 122, 68, 0, 1, 118, 101, 114, 2, 99, 104, 101, 0, 2, 32, 103, 114, 111, 115, 0, 2,
+			100, 111, 115, 0, 2, 116, 117, 115, 105, 97, 115, 0, 116, 1, 99, 99, 97, 2, 12, 0, 103, 114, 111, 115, 3, 122, 68, 81, 34, 6,
+			124, 0, 7, 6, 101, 114, 0, 101, 1, 107, 105, 114, 98, 97, 102, 2, 12, 12, 12, 12, 12, 12, 12, 39, 63, 101, 26, 3, 0, 105,
+			110, 103, 1, 17, 67, 21, 2, 12, 12, 3, 4, 114, 110, 114, 68, 0, 8, 98, 114, 97, 98, 2, 101, 12, 3, 6, 36, 34, 0, 105,
+			1, 116, 115, 2, 115, 107, 28, 33, 3, 6, 36, 34, 37, 0, 4, 116, 1, 115, 97, 108, 98, 3, 6, 36, 110, 47, 0, 116, 1, 116,
+			107, 101, 102, 102, 97, 0, 1, 105, 118, 97, 120, 3, 6, 114, 0, 4, 1, 99, 105, 102, 102, 111, 3, 6, 114, 34, 0, 1, 107, 114,
+			97, 112, 2, 32, 98, 105, 108, 0, 1, 108, 101, 118, 117, 106, 2, 101, 110, 0, 1, 109, 97, 2, 105, 107, 97, 32, 0, 1, 109, 97,
+			2, 105, 107, 97, 115, 32, 0, 1, 110, 97, 109, 2, 32, 0, 1, 115, 115, 97, 112, 2, 32, 103, 97, 100, 101, 110, 0, 1, 115, 115,
+			97, 112, 2, 115, 101, 100, 0, 1, 116, 101, 102, 97, 99, 2, 105, 0, 1, 116, 114, 111, 109, 0, 1, 116, 115, 105, 110, 21, 2, 105,
+			101, 0, 1, 116, 116, 97, 108, 102, 2, 101, 110, 100, 101, 0, 8, 98, 114, 97, 98, 2, 12, 0, 8, 102, 105, 114, 101, 112, 0, 8,
+			105, 118, 105, 114, 2, 97, 0, 8, 108, 97, 118, 97, 107, 0, 8, 108, 108, 97, 102, 2, 12, 0, 8, 110, 105, 102, 0, 8, 115, 115,
+			97, 107, 2, 101, 114, 0, 8, 116, 107, 97, 114, 97, 107, 0, 8, 116, 111, 110, 2, 32, 100, 101, 110, 0, 8, 116, 111, 110, 2, 32,
+			100, 101, 116, 0, 8, 116, 114, 97, 118, 107, 0, 8, 116, 115, 121, 109, 2, 105, 117, 0, 8, 118, 97, 108, 107, 2, 12, 12, 0, 116,
+			1, 110, 114, 111, 98, 3, 6, 114, 34, 47, 0, 4, 101, 8, 103, 97, 101, 114, 2, 32, 3, 6, 114, 109, 0, 101, 8, 105, 109, 101,
+			114, 112, 2, 21, 0, 101, 8, 115, 100, 97, 112, 115, 2, 21, 12, 0, 101, 114, 8, 110, 97, 109, 0, 101, 114, 8, 110, 97, 109, 0,
+			4, 116, 1, 107, 114, 111, 102, 3, 6, 114, 110, 47, 0, 116, 1, 110, 101, 103, 2, 12, 0, 116, 1, 110, 105, 0, 116, 1, 117, 110,
+			105, 116, 110, 111, 107, 0, 116, 1, 117, 110, 105, 116, 110, 111, 107, 115, 105, 100, 0, 116, 1, 118, 114, 101, 115, 101, 114, 0, 1, 98,
+			108, 97, 2, 116, 17, 65, 3, 6, 115, 34, 0, 110, 101, 8, 116, 117, 97, 115, 2, 12, 3, 6, 115, 34, 50, 0, 4, 110, 101, 8,
+			99, 117, 108, 2, 12, 3, 6, 115, 34, 50, 14, 0, 110, 101, 8, 100, 111, 109, 2, 12, 12, 0, 110, 101, 8, 115, 97, 107, 2, 12,
+			12, 12, 12, 12, 0, 110, 101, 8, 116, 110, 97, 108, 2, 12, 0, 110, 101, 8, 116, 115, 105, 99, 2, 12, 0, 110, 101, 8, 118, 97,
+			116, 2, 12, 0, 110, 101, 114, 8, 115, 97, 107, 2, 12, 12, 12, 12, 3, 6, 115, 34, 50, 108, 0, 4, 1, 102, 110, 105, 2, 110,
+			111, 3, 6, 116, 34, 0, 1, 116, 111, 115, 105, 2, 109, 0, 1, 118, 101, 114, 2, 115, 0, 1, 118, 104, 110, 101, 0, 1, 118, 114,
+			101, 112, 2, 115, 12, 0, 8, 108, 108, 97, 116, 2, 107, 0, 8, 115, 110, 111, 107, 2, 118, 97, 116, 105, 118, 0, 8, 115, 110, 111,
+			107, 2, 118, 101, 115, 0, 8, 115, 166, 195, 114, 112, 2, 118, 97, 116, 105, 118, 0, 8, 116, 110, 105, 2, 110, 32, 12, 12, 0, 8,
+			116, 110, 105, 2, 110, 32, 12, 12, 0, 8, 116, 110, 105, 2, 110, 101, 32, 12, 12, 12, 12, 12, 0, 8, 118, 105, 110, 117, 2, 115,
+			12, 0, 8, 118, 111, 114, 116, 110, 111, 107, 2, 115, 0, 4, 116, 1, 99, 110, 111, 107, 3, 6, 116, 34, 47, 0, 116, 1, 112, 115,
+			107, 101, 0, 116, 1, 115, 115, 101, 100, 0, 116, 1, 118, 104, 116, 101, 0, 116, 1, 118, 111, 114, 116, 110, 105, 0, 116, 1, 118, 117,
+			107, 2, 12, 12, 0, 1, 116, 108, 97, 2, 110, 97, 116, 105, 118, 3, 6, 116, 51, 0, 118, 105, 99, 101, 1, 115, 2, 101, 102, 116,
+			101, 114, 115, 121, 110, 12, 3, 6, 132, 84, 111, 89, 0, 101, 116, 1, 10, 2, 28, 33, 12, 12, 3, 7, 36, 34, 14, 86, 0, 101,
+			1, 21, 2, 114, 101, 110, 28, 33, 12, 12, 3, 7, 36, 108, 0, 4, 1, 21, 2, 101, 32, 28, 33, 12, 12, 12, 3, 7, 114, 0,
+			1, 21, 2, 101, 114, 28, 33, 12, 12, 12, 0, 1, 21, 2, 101, 116, 32, 28, 33, 12, 12, 12, 12, 0, 4, 1, 21, 2, 28, 33,
+			12, 12, 12, 3, 7, 114, 34, 0, 1, 21, 2, 32, 28, 33, 12, 12, 0, 1, 102, 97, 114, 103, 111, 116, 111, 102, 2, 32, 100, 101,
+			109, 32, 0, 1, 102, 97, 114, 103, 111, 116, 111, 102, 2, 32, 100, 101, 114, 101, 115, 32, 0, 1, 102, 97, 114, 103, 111, 116, 111, 102,
+			2, 32, 111, 115, 32, 0, 4, 101, 1, 21, 2, 32, 28, 33, 12, 12, 12, 3, 7, 114, 108, 0, 101, 1, 21, 2, 100, 101, 28, 33,
+			12, 12, 0, 101, 1, 21, 2, 114, 28, 33, 12, 12, 0, 101, 1, 21, 2, 114, 101, 28, 33, 12, 12, 12, 0, 101, 1, 21, 2, 115,
+			32, 28, 33, 12, 12, 0, 101, 1, 21, 2, 116, 28, 33, 12, 12, 0, 101, 114, 1, 108, 101, 118, 117, 106, 3, 7, 114, 109, 0, 116,
+			1, 109, 114, 111, 102, 101, 114, 3, 7, 114, 110, 47, 0, 105, 110, 103, 1, 10, 2, 28, 33, 12, 12, 3, 7, 114, 110, 114, 68, 0,
+			101, 1, 105, 21, 2, 110, 32, 28, 33, 12, 12, 3, 7, 116, 108, 0, 4, 1, 114, 21, 2, 101, 32, 28, 33, 12, 12, 12, 3, 7,
+			116, 110, 0, 1, 114, 21, 2, 101, 114, 32, 28, 33, 12, 12, 12, 0, 1, 100, 110, 97, 120, 101, 108, 97, 3, 8, 72, 109, 0, 4,
+			1, 107, 105, 10, 2, 32, 28, 33, 12, 12, 3, 8, 109, 0, 1, 107, 105, 10, 2, 115, 32, 28, 33, 12, 12, 0, 105, 1, 21, 2,
+			115, 107, 28, 33, 3, 8, 109, 34, 111, 0, 4, 1, 102, 110, 10, 2, 101, 114, 21, 3, 14, 34, 0, 1, 109, 109, 17, 65, 2, 97,
+			0, 1, 116, 114, 111, 112, 101, 114, 2, 101, 12, 0, 1, 116, 114, 111, 112, 101, 114, 2, 101, 110, 12, 0, 1, 118, 101, 108, 2, 101,
+			103, 12, 0, 1, 118, 121, 108, 102, 2, 117, 116, 101, 0, 101, 1, 110, 21, 2, 114, 101, 28, 33, 12, 12, 12, 3, 14, 34, 6, 36,
+			0, 4, 105, 1, 107, 115, 97, 118, 2, 28, 33, 3, 14, 34, 7, 111, 0, 105, 1, 116, 110, 97, 102, 110, 105, 2, 28, 33, 0, 101,
+			116, 1, 116, 108, 97, 3, 14, 34, 14, 86, 0, 105, 110, 103, 1, 108, 103, 184, 195, 110, 2, 12, 12, 12, 3, 14, 34, 115, 68, 0,
+			101, 100, 101, 8, 108, 108, 97, 2, 32, 3, 14, 34, 115, 86, 14, 0, 101, 116, 1, 116, 115, 101, 106, 184, 195, 104, 3, 14, 34, 119,
+			47, 0, 101, 110, 1, 102, 110, 10, 2, 99, 3, 14, 34, 121, 68, 0, 1, 115, 121, 108, 2, 195, 184, 100, 3, 14, 51, 0, 1, 116,
+			115, 97, 21, 2, 105, 3, 20, 13, 51, 6, 0, 101, 1, 109, 114, 101, 100, 121, 3, 36, 51, 109, 0, 1, 103, 2, 101, 12, 3, 36,
+			109, 0, 1, 118, 97, 17, 67, 2, 32, 12, 3, 108, 0, 101, 110, 1, 21, 2, 32, 3, 108, 12, 2, 108, 50, 0, 4, 110, 101, 1,
+			116, 110, 97, 108, 112, 2, 12, 12, 3, 108, 50, 14, 0, 110, 101, 1, 116, 115, 105, 99, 115, 97, 102, 2, 12, 0, 110, 101, 1, 118,
+			97, 116, 115, 2, 12, 0, 101, 1, 100, 105, 118, 3, 108, 108, 0, 4, 101, 1, 103, 110, 166, 195, 108, 3, 108, 109, 0, 101, 1, 108,
+			103, 117, 109, 115, 0, 4, 1, 17, 67, 2, 32, 3, 109, 0, 1, 18, 71, 18, 71, 0, 1, 18, 74, 2, 110, 101, 32, 0, 1, 21,
+			2, 115, 17, 67, 0, 1, 98, 111, 2, 115, 116, 0, 1, 99, 97, 114, 2, 21, 0, 1, 100, 2, 98, 121, 103, 0, 1, 100, 21, 2,
+			17, 67, 0, 1, 100, 100, 117, 0, 1, 100, 101, 108, 2, 21, 0, 1, 100, 106, 101, 112, 115, 0, 1, 100, 110, 117, 2, 12, 0, 1,
+			100, 111, 0, 1, 100, 121, 2, 21, 12, 0, 1, 100, 166, 195, 2, 21, 0, 1, 102, 102, 2, 17, 65, 116, 0, 1, 102, 102, 117, 107,
+			2, 116, 0, 1, 102, 166, 195, 104, 99, 115, 2, 21, 0, 1, 103, 2, 12, 0, 1, 103, 2, 32, 12, 12, 0, 1, 103, 114, 111, 98,
+			2, 101, 0, 1, 103, 117, 115, 2, 101, 0, 1, 106, 101, 108, 0, 1, 106, 108, 97, 100, 101, 109, 2, 12, 12, 12, 0, 1, 106, 108,
+			97, 116, 2, 25, 12, 12, 12, 12, 12, 0, 1, 106, 108, 117, 114, 116, 2, 110, 12, 12, 12, 0, 1, 106, 110, 105, 108, 2, 12, 12,
+			12, 0, 1, 107, 105, 17, 67, 2, 12, 0, 1, 107, 107, 2, 12, 0, 1, 107, 110, 117, 98, 0, 1, 107, 111, 112, 0, 1, 107, 115,
+			105, 102, 0, 1, 107, 115, 108, 101, 0, 1, 108, 103, 117, 109, 115, 0, 1, 108, 108, 105, 112, 0, 1, 108, 184, 195, 2, 12, 0, 1,
+			109, 21, 2, 115, 107, 0, 1, 109, 109, 17, 65, 2, 17, 67, 0, 1, 109, 109, 117, 0, 1, 109, 109, 117, 2, 101, 116, 0, 1, 109,
+			111, 114, 0, 1, 109, 184, 195, 114, 116, 115, 2, 21, 0, 1, 110, 97, 109, 32, 114, 101, 100, 2, 32, 0, 1, 110, 97, 109, 109, 101,
+			114, 102, 0, 1, 110, 97, 109, 111, 2, 12, 0, 1, 110, 97, 109, 114, 111, 2, 32, 0, 1, 110, 101, 105, 119, 0, 1, 110, 105, 102,
+			108, 101, 100, 0, 1, 110, 110, 117, 104, 0, 1, 110, 111, 105, 2, 32, 28, 33, 12, 12, 0, 1, 110, 116, 0, 1, 110, 166, 195, 114,
+			116, 0, 1, 112, 117, 2, 17, 67, 0, 1, 112, 121, 104, 2, 21, 0, 1, 114, 117, 109, 2, 17, 67, 0, 1, 115, 110, 97, 100, 0,
+			1, 115, 110, 97, 112, 0, 1, 115, 117, 114, 98, 0, 1, 115, 121, 103, 0, 1, 116, 2, 101, 116, 32, 0, 1, 116, 10, 2, 17, 67,
+			0, 1, 116, 101, 109, 2, 12, 0, 1, 116, 102, 101, 2, 21, 0, 1, 116, 103, 0, 1, 116, 108, 97, 0, 1, 116, 108, 111, 112, 2,
+			97, 98, 0, 1, 116, 110, 101, 100, 0, 1, 116, 110, 105, 2, 21, 0, 1, 116, 110, 105, 2, 110, 97, 116, 0, 1, 116, 112, 101, 99,
+			115, 0, 1, 116, 114, 111, 112, 101, 114, 2, 12, 0, 1, 116, 115, 105, 0, 1, 116, 115, 110, 184, 195, 2, 12, 0, 1, 116, 115, 121,
+			114, 107, 2, 21, 0, 1, 116, 116, 2, 17, 67, 12, 0, 1, 117, 97, 115, 2, 21, 0, 1, 118, 97, 114, 103, 100, 108, 117, 103, 2,
+			101, 0, 1, 118, 101, 108, 2, 17, 67, 12, 12, 0, 1, 118, 108, 97, 115, 2, 12, 12, 0, 1, 118, 108, 111, 118, 101, 114, 2, 12,
+			0, 1, 118, 111, 2, 12, 12, 12, 12, 0, 1, 118, 114, 97, 102, 2, 115, 12, 0, 1, 118, 121, 2, 12, 0, 1, 118, 166, 195, 110,
+			115, 2, 12, 12, 0, 1, 118, 184, 195, 2, 115, 116, 12, 12, 0, 8, 108, 108, 97, 0, 8, 112, 97, 107, 2, 115, 12, 12, 0, 95,
+			1, 104, 116, 0, 101, 1, 21, 2, 32, 12, 3, 109, 2, 109, 0, 101, 115, 1, 21, 2, 32, 3, 109, 2, 109, 89, 0, 101, 1, 118,
+			111, 2, 110, 115, 12, 12, 3, 109, 6, 114, 0, 1, 21, 2, 32, 24, 3, 109, 11, 0, 4, 1, 100, 111, 114, 98, 2, 101, 110, 3,
+			109, 34, 0, 1, 118, 101, 108, 2, 101, 110, 12, 0, 101, 110, 115, 1, 21, 2, 32, 3, 109, 34, 2, 109, 50, 89, 0, 105, 1, 21,
+			2, 28, 33, 12, 12, 3, 109, 34, 6, 111, 0, 101, 116, 1, 21, 2, 32, 3, 109, 34, 109, 86, 0, 105, 1, 118, 184, 195, 114, 21,
+			3, 109, 34, 111, 0, 110, 101, 1, 100, 21, 2, 12, 12, 3, 109, 42, 13, 0, 116, 1, 21, 2, 115, 32, 3, 109, 47, 0, 110, 101,
+			1, 21, 2, 32, 12, 12, 12, 12, 12, 3, 109, 50, 14, 0, 110, 101, 115, 1, 21, 2, 32, 3, 109, 50, 14, 89, 0, 4, 110, 101,
+			1, 103, 110, 105, 102, 2, 109, 3, 109, 50, 116, 0, 110, 101, 1, 116, 110, 105, 2, 116, 12, 0, 4, 1, 103, 110, 105, 102, 2, 101,
+			110, 3, 109, 51, 0, 1, 118, 121, 2, 105, 0, 105, 1, 17, 67, 2, 32, 12, 3, 109, 51, 6, 37, 0, 105, 1, 17, 67, 2, 101,
+			116, 32, 12, 3, 109, 51, 6, 111, 0, 4, 116, 1, 21, 2, 32, 3, 109, 72, 0, 116, 1, 98, 109, 97, 108, 115, 0, 115, 1, 21,
+			2, 32, 3, 109, 89, 0, 115, 116, 101, 1, 21, 2, 32, 3, 109, 89, 72, 14, 0, 101, 1, 114, 2, 32, 3, 109, 109, 0, 1, 100,
+			110, 117, 104, 3, 112, 34, 0, 1, 112, 115, 101, 100, 2, 97, 116, 3, 112, 51, 0, 4, 1, 100, 2, 102, 114, 97, 3, 114, 34, 0,
+			1, 100, 114, 117, 2, 101, 116, 0, 1, 102, 97, 114, 103, 111, 116, 111, 102, 110, 101, 103, 2, 101, 0, 1, 102, 105, 114, 101, 112, 0,
+			1, 103, 2, 97, 110, 105, 0, 1, 103, 2, 109, 97, 110, 115, 0, 1, 103, 2, 116, 0, 1, 103, 115, 121, 110, 2, 114, 105, 0, 1,
+			106, 102, 2, 32, 0, 1, 107, 114, 111, 102, 2, 116, 12, 0, 1, 108, 98, 2, 101, 0, 1, 108, 100, 184, 195, 114, 0, 1, 108, 108,
+			97, 2, 103, 0, 1, 109, 109, 111, 107, 2, 99, 105, 101, 108, 0, 1, 110, 105, 102, 0, 1, 112, 101, 116, 114, 111, 115, 0, 1, 112,
+			103, 105, 116, 103, 105, 118, 0, 1, 116, 2, 97, 112, 12, 0, 1, 116, 105, 99, 21, 2, 101, 0, 1, 116, 107, 97, 114, 97, 107, 0,
+			1, 116, 114, 97, 118, 107, 0, 1, 116, 115, 2, 101, 111, 0, 1, 116, 115, 2, 108, 105, 110, 103, 0, 1, 116, 115, 105, 110, 105, 109,
+			21, 2, 105, 0, 1, 116, 115, 121, 104, 2, 105, 0, 1, 118, 2, 97, 110, 100, 97, 12, 0, 1, 118, 2, 114, 32, 0, 1, 118, 97,
+			108, 107, 2, 12, 12, 0, 1, 118, 97, 114, 103, 21, 2, 101, 0, 1, 118, 105, 2, 101, 116, 0, 8, 104, 2, 32, 0, 8, 107, 115,
+			2, 32, 0, 8, 108, 2, 32, 12, 12, 0, 8, 110, 101, 103, 2, 116, 0, 8, 110, 115, 2, 32, 0, 8, 115, 2, 32, 0, 8, 115,
+			114, 101, 118, 111, 0, 8, 116, 2, 32, 0, 101, 116, 1, 116, 110, 101, 105, 114, 111, 3, 114, 34, 14, 86, 0, 101, 1, 116, 111, 110,
+			21, 3, 114, 108, 0, 4, 101, 1, 99, 3, 114, 109, 0, 101, 1, 99, 117, 100, 111, 114, 112, 21, 0, 101, 1, 100, 114, 117, 118, 2,
+			32, 0, 101, 1, 103, 97, 101, 114, 2, 32, 0, 101, 1, 110, 111, 105, 115, 110, 101, 112, 21, 0, 101, 1, 115, 97, 98, 21, 0, 101,
+			1, 115, 105, 116, 97, 109, 97, 114, 100, 21, 0, 101, 1, 116, 97, 108, 101, 114, 0, 101, 1, 116, 117, 107, 115, 105, 100, 0, 101, 1,
+			118, 101, 108, 102, 97, 0, 101, 114, 1, 110, 97, 109, 0, 4, 1, 103, 2, 110, 12, 12, 3, 115, 34, 0, 8, 112, 2, 32, 0, 4,
+			110, 1, 100, 111, 109, 2, 105, 12, 3, 115, 34, 50, 0, 110, 101, 1, 116, 117, 97, 115, 2, 12, 0, 4, 110, 101, 1, 99, 117, 108,
+			2, 12, 3, 115, 34, 50, 14, 0, 110, 101, 1, 100, 111, 109, 2, 12, 12, 0, 110, 101, 1, 115, 97, 107, 21, 2, 12, 12, 12, 12,
+			0, 110, 101, 1, 116, 110, 97, 108, 112, 111, 116, 2, 12, 12, 0, 110, 101, 1, 116, 115, 105, 99, 2, 12, 0, 110, 101, 1, 118, 97,
+			116, 2, 12, 0, 1, 116, 2, 114, 3, 116, 0, 4, 1, 21, 2, 102, 97, 114, 105, 3, 116, 34, 0, 1, 102, 2, 110, 105, 0, 1,
+			103, 2, 100, 97, 0, 1, 103, 2, 104, 97, 114, 25, 0, 1, 103, 2, 114, 105, 103, 0, 1, 104, 2, 108, 105, 12, 0, 1, 104, 2,
+			115, 12, 12, 0, 1, 104, 101, 98, 2, 115, 107, 0, 1, 106, 116, 115, 2, 116, 0, 1, 110, 2, 118, 12, 0, 1, 112, 21, 2, 115,
+			111, 110, 0, 1, 115, 2, 116, 12, 0, 1, 115, 2, 118, 12, 0, 1, 116, 2, 109, 105, 110, 0, 1, 116, 2, 109, 111, 0, 1, 116,
+			2, 110, 105, 12, 0, 1, 116, 2, 112, 0, 1, 116, 2, 114, 105, 101, 114, 0, 1, 116, 115, 2, 111, 108, 0, 1, 118, 2, 100, 21,
+			12, 12, 0, 1, 118, 2, 115, 105, 101, 108, 0, 1, 118, 104, 2, 12, 0, 1, 118, 105, 110, 117, 0, 1, 118, 115, 2, 105, 103, 101,
+			0, 8, 2, 103, 111, 0, 8, 18, 71, 0, 8, 103, 2, 110, 101, 32, 12, 0, 8, 103, 2, 116, 97, 12, 0, 8, 118, 2, 115, 32,
+			0, 114, 1, 103, 114, 166, 195, 0, 8, 2, 17, 67, 3, 116, 34, 6, 0, 4, 115, 1, 21, 2, 116, 97, 116, 3, 116, 34, 89, 0,
+			115, 1, 102, 2, 107, 0, 101, 1, 114, 101, 112, 111, 3, 116, 108, 0, 101, 1, 114, 116, 2, 12, 12, 3, 116, 109, 0, 4, 1, 106,
+			2, 103, 3, 116, 110, 0, 1, 106, 2, 110, 12, 12, 12, 12, 12, 12, 12, 0, 8, 2, 32, 3, 118, 34, 0, 114, 195, 166, 110, 1,
+			116, 3, 118, 34, 6, 118, 68, 0, 114, 111, 114, 1, 116, 3, 118, 110, 108, 0, 114, 111, 1, 116, 2, 114, 105, 115, 116, 3, 118, 110,
+			125, 0, 98, 121, 1, 100, 3, 121, 12, 71, 37, 0, 4, 1, 112, 2, 114, 111, 110, 3, 122, 0, 1, 116, 2, 114, 97, 115, 115, 0,
+			1, 115, 2, 118, 105, 99, 101, 110, 3, 132, 0, 110, 105, 101, 8, 3, 132, 12, 50, 37, 0, 103, 105, 101, 1, 102, 3, 132, 12, 81,
+			37, 0, 110, 111, 110, 1, 118, 2, 12, 12, 3, 132, 50, 14, 50, 0, 118, 105, 99, 101, 109, 105, 110, 100, 101, 116, 1, 115, 3, 132,
+			84, 37, 89, 65, 121, 57, 50, 72, 14, 86, 0, 4, 118, 105, 99, 101, 1, 115, 2, 102, 97, 103, 3, 132, 84, 111, 89, 0, 118, 105,
+			99, 101, 1, 115, 2, 109, 101, 100, 0, 118, 105, 99, 101, 1, 115, 2, 115, 101, 107, 116, 111, 114, 0, 118, 105, 99, 101, 1, 115, 2,
+			115, 116, 97, 116, 105, 111, 110, 0, 118, 105, 99, 101, 1, 115, 2, 121, 100, 101, 108, 115, 101, 0, 118, 105, 99, 101, 1, 115, 101, 100,
+			110, 117, 107, 0, 118, 105, 99, 101, 1, 115, 109, 111, 111, 114, 0, 109, 111, 110, 116, 1, 118, 3, 133, 12, 65, 6, 108, 50, 47, 0,
+			7, 6, 101, 116, 0, 8, 98, 101, 103, 2, 12, 3, 6, 36, 47, 0, 4, 1, 111, 112, 2, 12, 12, 3, 6, 114, 47, 0, 1, 114,
+			107, 101, 100, 2, 12, 0, 1, 116, 105, 2, 32, 12, 0, 1, 116, 105, 2, 115, 32, 12, 0, 8, 98, 97, 102, 108, 97, 0, 8, 98,
+			105, 116, 0, 8, 102, 111, 114, 112, 0, 8, 107, 115, 97, 0, 8, 110, 97, 108, 112, 0, 8, 112, 97, 116, 0, 8, 112, 109, 111, 114,
+			116, 0, 8, 116, 114, 101, 98, 117, 112, 0, 101, 114, 1, 109, 10, 3, 6, 114, 47, 109, 0, 4, 1, 107, 110, 97, 108, 98, 32, 110,
+			101, 3, 6, 115, 47, 0, 8, 114, 107, 101, 115, 2, 12, 0, 4, 1, 98, 114, 111, 115, 3, 6, 116, 0, 1, 108, 101, 104, 99, 105,
+			109, 0, 4, 1, 99, 97, 102, 2, 12, 3, 6, 116, 47, 0, 1, 99, 97, 109, 114, 101, 112, 115, 0, 1, 99, 110, 105, 112, 0, 1,
+			102, 97, 116, 115, 0, 1, 102, 102, 97, 116, 115, 0, 1, 108, 117, 109, 97, 0, 1, 110, 111, 105, 114, 97, 109, 0, 1, 110, 111, 115,
+			32, 110, 101, 0, 1, 114, 97, 107, 2, 12, 12, 0, 1, 114, 107, 110, 111, 107, 0, 1, 115, 111, 108, 107, 0, 1, 117, 100, 21, 2,
+			32, 0, 1, 117, 100, 32, 101, 103, 110, 121, 115, 2, 32, 0, 1, 117, 100, 32, 103, 110, 97, 115, 2, 32, 0, 1, 117, 100, 32, 110,
+			101, 2, 32, 0, 1, 117, 100, 32, 114, 101, 103, 110, 121, 115, 2, 32, 0, 1, 117, 100, 32, 116, 101, 103, 110, 117, 115, 2, 32, 0,
+			1, 117, 114, 105, 112, 0, 8, 100, 97, 107, 2, 12, 0, 8, 103, 100, 117, 98, 0, 8, 105, 118, 114, 101, 115, 0, 8, 107, 105, 114,
+			98, 0, 8, 107, 111, 107, 0, 8, 107, 114, 97, 112, 0, 8, 107, 115, 97, 107, 0, 8, 108, 105, 111, 116, 0, 8, 108, 105, 111, 116,
+			0, 8, 108, 108, 105, 98, 0, 8, 110, 105, 114, 97, 108, 107, 0, 8, 110, 111, 106, 97, 98, 0, 8, 115, 108, 97, 102, 0, 8, 115,
+			114, 111, 107, 32, 116, 101, 0, 8, 116, 110, 105, 118, 107, 0, 8, 116, 114, 97, 118, 107, 0, 116, 1, 110, 111, 105, 114, 97, 109, 0,
+			116, 1, 110, 111, 115, 2, 101, 0, 116, 1, 115, 111, 108, 107, 0, 116, 8, 105, 118, 114, 101, 115, 0, 116, 8, 107, 115, 97, 107, 0,
+			116, 8, 108, 108, 105, 98, 0, 116, 8, 110, 111, 106, 97, 98, 0, 116, 101, 8, 103, 114, 111, 101, 103, 0, 116, 101, 8, 117, 103, 97,
+			98, 0, 4, 116, 101, 8, 103, 97, 114, 102, 102, 117, 115, 3, 6, 116, 47, 14, 0, 116, 101, 8, 103, 114, 117, 111, 99, 0, 116, 101,
+			8, 107, 97, 108, 112, 0, 116, 101, 8, 107, 111, 107, 0, 116, 101, 8, 107, 115, 105, 100, 0, 116, 101, 8, 108, 105, 111, 116, 0, 116,
+			101, 8, 108, 108, 101, 118, 111, 110, 0, 116, 101, 8, 108, 111, 99, 105, 110, 0, 116, 101, 8, 108, 117, 111, 114, 0, 116, 101, 8, 108,
+			121, 0, 116, 101, 8, 109, 108, 97, 112, 0, 116, 101, 8, 110, 97, 105, 112, 0, 116, 101, 8, 110, 105, 101, 114, 0, 116, 101, 8, 110,
+			117, 114, 98, 0, 116, 101, 8, 112, 105, 112, 0, 116, 101, 8, 114, 111, 98, 109, 97, 106, 0, 116, 101, 8, 114, 117, 98, 0, 116, 101,
+			8, 115, 105, 109, 101, 104, 99, 0, 116, 101, 8, 115, 105, 117, 113, 114, 97, 109, 0, 116, 101, 8, 115, 117, 109, 0, 116, 101, 8, 117,
+			116, 97, 116, 115, 0, 116, 101, 8, 118, 117, 99, 0, 116, 101, 114, 8, 117, 116, 97, 116, 115, 3, 6, 116, 47, 108, 0, 4, 116, 101,
+			8, 114, 98, 117, 111, 115, 3, 6, 117, 47, 14, 0, 116, 101, 8, 114, 103, 105, 97, 110, 105, 118, 0, 1, 116, 105, 10, 2, 28, 33,
+			12, 3, 7, 114, 47, 0, 4, 8, 107, 105, 116, 101, 3, 7, 116, 47, 0, 8, 108, 111, 105, 118, 2, 12, 0, 116, 101, 8, 107, 105,
+			116, 101, 3, 7, 116, 47, 14, 0, 4, 1, 102, 111, 114, 112, 2, 105, 3, 14, 47, 0, 1, 105, 114, 114, 97, 104, 0, 1, 114, 2,
+			195, 184, 106, 12, 0, 1, 114, 107, 101, 115, 2, 195, 166, 114, 0, 4, 1, 21, 2, 32, 12, 3, 14, 86, 0, 1, 103, 97, 116, 0,
+			1, 108, 112, 109, 101, 116, 115, 0, 1, 116, 110, 105, 0, 1, 117, 100, 110, 105, 118, 2, 32, 0, 1, 118, 97, 2, 32, 12, 0, 115,
+			1, 21, 2, 32, 12, 3, 14, 86, 89, 0, 95, 1, 114, 111, 102, 3, 47, 0, 4, 1, 100, 114, 111, 2, 32, 3, 108, 86, 0, 1,
+			114, 21, 2, 32, 12, 0, 1, 114, 100, 110, 166, 195, 2, 12, 3, 109, 86, 0, 4, 1, 98, 97, 102, 108, 97, 3, 114, 47, 0, 1,
+			98, 105, 116, 0, 1, 102, 111, 114, 112, 0, 1, 112, 97, 116, 0, 1, 112, 109, 111, 114, 116, 0, 1, 115, 108, 105, 116, 0, 1, 115,
+			109, 101, 110, 110, 101, 103, 0, 1, 115, 114, 101, 118, 111, 0, 8, 107, 115, 0, 8, 115, 2, 32, 12, 0, 8, 115, 100, 110, 105, 2,
+			32, 0, 8, 115, 101, 100, 108, 105, 0, 8, 115, 117, 2, 32, 0, 4, 1, 105, 118, 114, 101, 115, 3, 116, 47, 0, 1, 107, 105, 114,
+			98, 0, 1, 107, 114, 97, 112, 101, 0, 1, 107, 115, 97, 107, 21, 0, 1, 108, 98, 97, 116, 0, 1, 108, 101, 109, 111, 0, 1, 108,
+			101, 114, 166, 195, 112, 2, 12, 0, 1, 108, 105, 111, 116, 0, 1, 108, 108, 97, 98, 122, 122, 97, 106, 0, 1, 108, 108, 105, 98, 0,
+			1, 108, 111, 105, 118, 0, 1, 108, 112, 2, 12, 0, 1, 108, 112, 17, 65, 2, 12, 0, 1, 108, 112, 100, 108, 117, 103, 0, 1, 108,
+			112, 109, 97, 107, 115, 0, 1, 108, 112, 114, 101, 118, 101, 108, 0, 1, 108, 112, 115, 2, 12, 0, 1, 108, 112, 116, 115, 117, 114, 0,
+			1, 108, 112, 118, 108, 184, 195, 115, 0, 1, 108, 114, 97, 116, 115, 0, 1, 110, 97, 116, 97, 100, 0, 1, 110, 101, 103, 97, 108, 102,
+			117, 109, 97, 107, 0, 1, 110, 101, 107, 115, 105, 102, 0, 1, 110, 101, 108, 103, 117, 0, 1, 110, 105, 114, 97, 108, 107, 0, 1, 110,
+			108, 101, 2, 12, 0, 1, 110, 111, 106, 97, 98, 0, 1, 110, 114, 165, 195, 104, 0, 1, 114, 107, 101, 115, 21, 0, 1, 116, 110, 105,
+			118, 107, 0, 1, 116, 114, 97, 118, 107, 0, 8, 115, 115, 97, 98, 0, 116, 1, 107, 115, 97, 107, 21, 0, 116, 1, 108, 98, 97, 116,
+			0, 116, 1, 108, 105, 111, 116, 0, 116, 1, 108, 108, 105, 98, 0, 116, 1, 108, 112, 2, 12, 0, 116, 1, 110, 101, 103, 97, 108, 102,
+			117, 109, 97, 107, 0, 43, 8, 114, 3, 120, 47, 0, 7, 6, 103, 101, 0, 4, 8, 101, 110, 97, 109, 3, 8, 91, 14, 0, 8, 101,
+			116, 114, 111, 107, 0, 4, 1, 111, 108, 111, 107, 121, 2, 110, 3, 14, 0, 1, 111, 108, 111, 116, 107, 111, 114, 112, 2, 110, 0, 1,
+			108, 184, 195, 102, 3, 57, 14, 0, 114, 1, 108, 184, 195, 102, 3, 57, 109, 0, 4, 1, 111, 108, 97, 104, 2, 110, 3, 81, 6, 114,
+			0, 8, 97, 2, 114, 101, 0, 4, 2, 110, 105, 97, 108, 3, 81, 114, 0, 2, 110, 105, 116, 97, 108, 0, 2, 110, 105, 116, 105, 118,
+			0, 8, 2, 110, 101, 114, 101, 114, 101, 32, 0, 4, 2, 98, 101, 116, 3, 81, 114, 6, 0, 2, 98, 105, 115, 0, 2, 98, 111, 109,
+			109, 101, 114, 108, 105, 103, 0, 2, 98, 114, 111, 107, 107, 101, 110, 0, 2, 98, 114, 195, 166, 107, 107, 101, 108, 105, 103, 0, 2, 98,
+			121, 114, 0, 2, 98, 195, 166, 114, 100, 101, 0, 2, 100, 105, 103, 101, 110, 0, 2, 100, 117, 108, 103, 116, 0, 2, 104, 97, 108, 116,
+			0, 2, 104, 101, 106, 109, 101, 114, 195, 165, 100, 0, 2, 104, 101, 110, 110, 97, 0, 2, 104, 195, 166, 110, 103, 0, 2, 104, 195, 184,
+			114, 0, 2, 108, 97, 115, 115, 101, 110, 0, 2, 108, 101, 100, 0, 2, 108, 101, 106, 100, 101, 0, 2, 108, 105, 110, 100, 101, 0, 2,
+			108, 195, 166, 110, 100, 101, 114, 0, 2, 109, 97, 107, 0, 2, 109, 97, 108, 0, 2, 109, 101, 110, 0, 2, 109, 121, 115, 101, 0, 2,
+			109, 121, 116, 0, 2, 109, 121, 116, 108, 105, 103, 0, 2, 110, 111, 109, 0, 2, 110, 116, 105, 108, 0, 2, 110, 117, 105, 110, 0, 2,
+			114, 97, 110, 105, 101, 0, 2, 114, 97, 110, 105, 117, 109, 0, 2, 114, 195, 165, 100, 101, 0, 2, 115, 97, 110, 100, 116, 0, 2, 115,
+			105, 109, 115, 0, 2, 115, 107, 195, 166, 102, 116, 105, 103, 0, 2, 115, 112, 101, 110, 115, 116, 0, 2, 115, 116, 97, 103, 101, 110, 0,
+			2, 115, 116, 97, 108, 116, 0, 2, 115, 116, 105, 107, 0, 2, 115, 118, 101, 106, 115, 110, 105, 110, 103, 0, 2, 115, 118, 105, 110, 100,
+			116, 0, 2, 118, 97, 108, 100, 105, 103, 0, 2, 118, 97, 108, 116, 0, 2, 118, 97, 110, 100, 116, 0, 2, 118, 105, 110, 100, 0, 2,
+			118, 105, 114, 0, 2, 118, 195, 166, 107, 115, 116, 0, 2, 118, 195, 166, 114, 0, 8, 2, 112, 97, 114, 100, 0, 8, 2, 115, 106, 195,
+			166, 102, 116, 0, 8, 2, 118, 105, 110, 115, 116, 0, 110, 101, 114, 101, 108, 8, 3, 81, 114, 50, 14, 34, 6, 120, 55, 0, 2, 110,
+			105, 110, 118, 101, 115, 116, 3, 81, 116, 0, 114, 2, 110, 105, 110, 103, 3, 81, 116, 34, 0, 110, 105, 2, 110, 100, 3, 81, 116, 50,
+			36, 0, 114, 109, 97, 105, 110, 3, 90, 115, 34, 65, 6, 118, 68, 0, 4, 1, 97, 100, 110, 97, 98, 2, 114, 101, 3, 91, 6, 114,
+			0, 1, 97, 103, 2, 114, 101, 0, 1, 97, 103, 110, 101, 2, 114, 101, 0, 1, 97, 110, 101, 109, 2, 114, 101, 0, 1, 97, 114, 97,
+			103, 2, 114, 101, 0, 1, 97, 114, 117, 111, 102, 2, 114, 101, 0, 1, 101, 116, 111, 114, 112, 2, 114, 101, 0, 1, 105, 108, 103, 101,
+			110, 2, 114, 101, 0, 1, 110, 97, 104, 99, 2, 114, 101, 0, 1, 110, 97, 114, 2, 114, 101, 0, 1, 110, 97, 114, 100, 110, 105, 2,
+			114, 101, 0, 1, 110, 97, 114, 100, 117, 2, 114, 101, 0, 1, 110, 97, 114, 114, 97, 2, 114, 101, 0, 1, 111, 108, 2, 114, 101, 0,
+			1, 111, 108, 100, 110, 105, 2, 114, 101, 0, 1, 114, 97, 104, 99, 2, 114, 101, 0, 1, 114, 117, 2, 114, 101, 0, 1, 117, 106, 2,
+			114, 101, 0, 1, 100, 117, 98, 2, 116, 3, 91, 6, 116, 0, 4, 1, 101, 110, 97, 109, 3, 91, 14, 0, 1, 111, 108, 2, 98, 114,
+			111, 0, 1, 111, 108, 2, 109, 195, 184, 0, 1, 111, 108, 2, 110, 0, 1, 111, 108, 21, 0, 1, 111, 108, 114, 101, 114, 117, 109, 105,
+			114, 102, 0, 8, 111, 108, 2, 32, 0, 8, 2, 110, 101, 32, 3, 91, 36, 0, 114, 8, 111, 108, 2, 32, 3, 91, 108, 0, 1, 101,
+			116, 114, 111, 107, 3, 91, 112, 0, 4, 2, 110, 101, 114, 116, 3, 91, 114, 0, 2, 110, 101, 114, 195, 184, 115, 0, 2, 110, 105, 0,
+			8, 2, 110, 101, 114, 101, 0, 8, 2, 110, 101, 118, 101, 114, 0, 110, 101, 114, 2, 32, 109, 105, 103, 3, 91, 114, 50, 6, 114, 34,
+			0, 110, 101, 114, 101, 2, 32, 109, 105, 103, 3, 91, 114, 50, 6, 114, 108, 0, 7, 6, 105, 103, 0, 101, 2, 12, 12, 3, 4, 37,
+			14, 0, 1, 114, 116, 110, 105, 2, 12, 3, 6, 37, 0, 101, 1, 116, 108, 111, 118, 3, 6, 37, 12, 91, 0, 1, 100, 114, 166, 195,
+			118, 2, 101, 110, 115, 116, 97, 110, 100, 3, 6, 37, 81, 0, 1, 10, 2, 28, 33, 12, 12, 3, 8, 37, 0, 4, 1, 100, 101, 110,
+			115, 3, 37, 0, 1, 100, 105, 115, 110, 101, 103, 0, 1, 100, 108, 0, 1, 100, 110, 166, 195, 104, 101, 98, 0, 1, 100, 121, 0, 101,
+			114, 8, 115, 2, 32, 3, 37, 12, 34, 0, 4, 101, 1, 110, 115, 2, 12, 3, 37, 14, 0, 101, 1, 115, 2, 12, 12, 0, 101, 1,
+			116, 115, 2, 12, 0, 4, 101, 110, 1, 102, 3, 37, 14, 50, 0, 101, 110, 1, 112, 2, 12, 0, 101, 116, 2, 12, 3, 37, 14, 86,
+			0, 4, 1, 108, 2, 97, 12, 12, 3, 37, 81, 0, 1, 114, 105, 100, 2, 101, 110, 116, 0, 4, 101, 1, 108, 105, 118, 105, 114, 112,
+			3, 37, 81, 6, 36, 0, 101, 1, 114, 101, 2, 114, 101, 0, 101, 114, 105, 97, 1, 110, 3, 37, 81, 6, 36, 51, 37, 117, 0, 4,
+			101, 1, 100, 101, 114, 2, 114, 3, 37, 81, 6, 114, 0, 101, 1, 114, 105, 100, 2, 114, 0, 101, 1, 114, 114, 2, 114, 0, 101, 1,
+			118, 97, 110, 2, 114, 0, 4, 101, 1, 108, 108, 101, 116, 110, 105, 2, 110, 3, 37, 81, 6, 116, 0, 101, 2, 110, 110, 12, 0, 101,
+			1, 110, 2, 114, 105, 3, 37, 81, 36, 0, 101, 114, 8, 110, 2, 32, 3, 37, 81, 108, 0, 115, 1, 114, 107, 3, 37, 89, 0, 101,
+			110, 1, 108, 105, 100, 2, 99, 101, 3, 37, 91, 6, 121, 68, 0, 4, 101, 114, 1, 108, 111, 114, 3, 37, 108, 0, 101, 114, 2, 12,
+			12, 0, 101, 114, 2, 32, 12, 12, 0, 4, 1, 100, 97, 116, 115, 3, 111, 0, 1, 108, 21, 2, 17, 67, 0, 1, 108, 108, 101, 107,
+			115, 114, 111, 102, 0, 1, 108, 111, 98, 2, 12, 0, 1, 108, 114, 117, 116, 97, 110, 0, 1, 115, 100, 105, 104, 0, 1, 115, 100, 111,
+			114, 116, 0, 1, 115, 100, 117, 109, 115, 0, 1, 115, 100, 117, 112, 0, 1, 115, 100, 117, 112, 2, 116, 0, 1, 116, 115, 2, 98, 0,
+			1, 116, 116, 97, 102, 0, 2, 32, 0, 2, 104, 101, 100, 12, 0, 2, 115, 0, 4, 1, 108, 2, 101, 110, 101, 3, 111, 14, 0, 101,
+			1, 100, 2, 110, 100, 101, 0, 101, 1, 114, 107, 2, 110, 0, 101, 1, 118, 2, 110, 0, 116, 1, 21, 2, 32, 3, 111, 47, 0, 1,
+			112, 2, 32, 3, 111, 49, 0, 116, 1, 110, 101, 103, 184, 195, 100, 3, 111, 49, 47, 0, 1, 110, 115, 3, 111, 57, 0, 4, 1, 107,
+			100, 117, 3, 111, 81, 0, 1, 108, 2, 114, 97, 109, 0, 8, 107, 2, 32, 0, 101, 2, 110, 32, 12, 3, 111, 81, 6, 116, 0, 101,
+			97, 1, 114, 102, 2, 114, 3, 111, 81, 111, 0, 4, 8, 108, 2, 32, 103, 111, 100, 116, 3, 114, 49, 0, 8, 108, 2, 32, 110, 101,
+			100, 0, 8, 108, 2, 32, 111, 114, 100, 101, 110, 116, 108, 105, 103, 116, 0, 8, 108, 2, 32, 112, 195, 166, 110, 116, 0, 8, 108, 2,
+			32, 114, 111, 108, 105, 103, 116, 0, 8, 108, 2, 32, 115, 116, 105, 108, 108, 101, 0, 4, 1, 100, 2, 116, 101, 3, 114, 81, 0, 1,
+			100, 97, 100, 100, 101, 2, 116, 0, 1, 100, 97, 115, 111, 114, 112, 2, 116, 0, 1, 100, 101, 100, 166, 195, 109, 115, 2, 116, 0, 1,
+			100, 101, 116, 108, 101, 104, 2, 116, 0, 1, 100, 101, 116, 109, 166, 195, 107, 115, 2, 116, 0, 1, 100, 112, 111, 2, 116, 0, 1, 100,
+			117, 107, 105, 97, 104, 2, 116, 0, 1, 108, 112, 2, 116, 12, 0, 1, 115, 100, 2, 116, 12, 0, 1, 115, 110, 2, 116, 12, 0, 1,
+			115, 112, 111, 2, 116, 12, 0, 1, 118, 115, 2, 116, 12, 0, 8, 98, 2, 32, 0, 8, 100, 2, 116, 0, 103, 1, 108, 2, 101, 12,
+			12, 0, 103, 101, 114, 1, 110, 3, 114, 81, 109, 0, 104, 116, 1, 108, 3, 136, 47, 0, 104, 116, 121, 1, 109, 3, 136, 47, 37, 0,
+			7, 6, 105, 110, 0, 4, 1, 21, 2, 97, 28, 33, 12, 3, 6, 37, 50, 0, 1, 21, 2, 101, 28, 33, 12, 0, 4, 101, 1, 10,
+			2, 28, 33, 3, 6, 37, 50, 14, 0, 101, 1, 10, 2, 116, 114, 121, 107, 28, 33, 0, 101, 1, 10, 2, 114, 28, 33, 3, 6, 37,
+			50, 109, 0, 4, 1, 21, 2, 28, 33, 12, 12, 3, 6, 111, 50, 0, 1, 116, 97, 108, 10, 2, 28, 33, 0, 1, 116, 110, 97, 122,
+			121, 98, 0, 101, 1, 112, 112, 10, 2, 114, 101, 28, 33, 3, 6, 111, 50, 109, 0, 4, 1, 115, 115, 97, 10, 2, 28, 33, 3, 6,
+			116, 68, 0, 1, 116, 97, 10, 2, 28, 33, 0, 4, 1, 108, 101, 118, 2, 102, 111, 114, 109, 101, 114, 101, 116, 3, 36, 50, 0, 100,
+			2, 104, 111, 108, 100, 0, 1, 122, 110, 101, 98, 2, 12, 3, 111, 50, 0, 1, 10, 2, 97, 114, 28, 33, 3, 111, 50, 6, 0, 101,
+			1, 10, 2, 114, 101, 28, 33, 3, 111, 50, 6, 114, 0, 101, 1, 98, 97, 107, 2, 116, 3, 111, 50, 6, 116, 0, 7, 6, 105, 115,
+			0, 116, 1, 10, 2, 28, 33, 12, 12, 12, 3, 7, 37, 89, 47, 0, 116, 1, 10, 2, 105, 107, 28, 33, 3, 37, 89, 47, 6, 0,
+			116, 105, 107, 101, 1, 10, 2, 114, 101, 3, 37, 89, 47, 37, 49, 6, 36, 0, 7, 6, 105, 116, 0, 1, 10, 2, 116, 28, 33, 12,
+			12, 3, 6, 111, 0, 1, 10, 2, 28, 33, 12, 12, 3, 6, 111, 47, 0, 105, 111, 110, 1, 10, 2, 28, 33, 12, 12, 3, 37, 91,
+			6, 124, 50, 0, 1, 10, 2, 97, 110, 28, 33, 12, 12, 3, 111, 47, 6, 0, 7, 6, 105, 118, 0, 4, 8, 107, 114, 97, 3, 6,
+			37, 58, 0, 8, 116, 112, 97, 100, 97, 0, 4, 8, 97, 110, 3, 6, 111, 58, 0, 8, 99, 115, 97, 108, 0, 8, 100, 110, 117, 114,
+			101, 103, 0, 8, 115, 105, 99, 101, 100, 0, 8, 115, 114, 117, 107, 0, 8, 115, 115, 97, 109, 0, 8, 115, 166, 195, 104, 100, 97, 0,
+			8, 116, 97, 105, 116, 105, 110, 105, 0, 8, 116, 97, 108, 117, 103, 101, 114, 0, 8, 116, 97, 116, 115, 0, 8, 116, 107, 97, 114, 116,
+			110, 111, 107, 0, 8, 116, 107, 101, 112, 115, 114, 101, 112, 0, 8, 116, 107, 101, 114, 105, 100, 0, 8, 116, 107, 101, 116, 101, 100, 0,
+			8, 116, 111, 109, 0, 8, 116, 111, 109, 111, 107, 111, 108, 0, 8, 116, 112, 111, 100, 97, 0, 8, 116, 112, 117, 114, 101, 0, 8, 116,
+			114, 101, 115, 115, 97, 0, 8, 116, 114, 111, 98, 97, 0, 8, 116, 114, 111, 112, 115, 0, 8, 116, 115, 97, 114, 116, 110, 111, 107, 0,
+			8, 116, 115, 101, 103, 105, 100, 0, 8, 116, 117, 107, 101, 115, 107, 101, 0, 7, 6, 109, 101, 0, 116, 8, 114, 117, 111, 103, 3, 65,
+			6, 114, 0, 110, 116, 1, 10, 3, 65, 6, 116, 50, 47, 0, 4, 110, 116, 1, 101, 115, 115, 111, 100, 110, 101, 3, 65, 6, 122, 68,
+			0, 110, 116, 8, 97, 114, 101, 112, 109, 101, 116, 0, 110, 116, 8, 101, 98, 109, 97, 106, 110, 101, 0, 110, 116, 8, 101, 99, 97, 108,
+			112, 101, 100, 0, 110, 116, 8, 101, 99, 110, 97, 118, 97, 0, 110, 116, 8, 101, 100, 114, 97, 98, 109, 111, 98, 0, 110, 116, 8, 101,
+			103, 97, 103, 110, 101, 0, 110, 116, 8, 101, 103, 110, 97, 104, 99, 0, 110, 116, 8, 101, 103, 110, 97, 114, 114, 97, 0, 110, 116, 8,
+			101, 104, 99, 97, 116, 101, 100, 0, 110, 116, 8, 101, 108, 98, 184, 195, 109, 0, 110, 116, 8, 101, 108, 103, 101, 114, 0, 110, 116, 8,
+			101, 108, 108, 101, 118, 105, 110, 0, 110, 116, 8, 101, 108, 112, 112, 117, 115, 0, 110, 116, 8, 101, 110, 105, 102, 102, 97, 114, 0, 110,
+			116, 8, 101, 110, 110, 111, 98, 97, 0, 110, 116, 8, 101, 110, 110, 111, 116, 97, 107, 0, 110, 116, 8, 101, 110, 114, 101, 118, 117, 103,
+			0, 110, 116, 8, 101, 115, 115, 97, 108, 107, 0, 110, 116, 8, 101, 115, 115, 105, 108, 98, 97, 116, 101, 0, 110, 116, 8, 101, 115, 115,
+			105, 116, 114, 101, 118, 97, 0, 110, 116, 8, 101, 115, 115, 105, 116, 114, 101, 118, 105, 100, 0, 110, 116, 8, 101, 115, 115, 111, 110, 97,
+			107, 0, 110, 116, 8, 101, 115, 115, 111, 112, 0, 110, 116, 8, 101, 116, 107, 97, 114, 116, 0, 110, 116, 8, 101, 116, 114, 97, 112, 101,
+			100, 0, 110, 116, 8, 101, 118, 97, 108, 0, 110, 116, 8, 105, 108, 112, 109, 111, 107, 0, 110, 116, 8, 105, 116, 110, 101, 115, 115, 101,
+			114, 0, 110, 116, 8, 105, 116, 114, 111, 115, 0, 4, 110, 116, 8, 101, 108, 97, 110, 103, 105, 115, 3, 65, 7, 121, 68, 0, 110, 116,
+			8, 101, 110, 110, 111, 115, 166, 195, 114, 0, 116, 1, 114, 117, 111, 103, 3, 65, 36, 0, 110, 116, 101, 1, 101, 108, 103, 101, 114, 2,
+			114, 101, 116, 3, 65, 36, 50, 47, 6, 36, 0, 110, 116, 101, 108, 1, 117, 114, 116, 115, 110, 105, 3, 65, 36, 50, 47, 36, 55, 0,
+			110, 116, 101, 8, 101, 108, 103, 101, 114, 2, 114, 101, 3, 65, 114, 50, 47, 6, 114, 0, 110, 116, 101, 108, 8, 117, 114, 116, 115, 110,
+			105, 3, 65, 114, 50, 47, 6, 114, 55, 0, 4, 110, 2, 116, 117, 115, 105, 97, 115, 3, 65, 122, 68, 0, 110, 116, 1, 97, 114, 101,
+			112, 109, 101, 116, 0, 110, 116, 1, 101, 98, 109, 97, 106, 110, 101, 0, 110, 116, 1, 101, 99, 97, 108, 112, 101, 100, 0, 110, 116, 1,
+			101, 99, 110, 97, 118, 97, 0, 110, 116, 1, 101, 100, 114, 97, 98, 109, 111, 98, 0, 110, 116, 1, 101, 103, 97, 103, 110, 101, 0, 110,
+			116, 1, 101, 103, 110, 97, 104, 99, 0, 110, 116, 1, 101, 103, 110, 97, 114, 114, 97, 0, 110, 116, 1, 101, 104, 99, 97, 116, 101, 100,
+			0, 110, 116, 1, 101, 108, 97, 110, 103, 105, 115, 0, 110, 116, 1, 101, 108, 98, 184, 195, 109, 0, 110, 116, 1, 101, 108, 103, 101, 114,
+			0, 110, 116, 1, 101, 108, 108, 101, 118, 105, 110, 0, 110, 116, 1, 101, 108, 112, 112, 117, 115, 0, 110, 116, 1, 101, 110, 105, 102, 102,
+			97, 114, 0, 110, 116, 1, 101, 110, 110, 111, 98, 97, 0, 110, 116, 1, 101, 110, 110, 111, 115, 166, 195, 114, 0, 110, 116, 1, 101, 110,
+			110, 111, 116, 97, 107, 0, 110, 116, 1, 101, 110, 114, 101, 118, 117, 103, 0, 110, 116, 1, 101, 115, 115, 97, 108, 107, 0, 110, 116, 1,
+			101, 115, 115, 105, 108, 98, 97, 116, 101, 0, 110, 116, 1, 101, 115, 115, 105, 116, 114, 101, 118, 97, 0, 110, 116, 1, 101, 115, 115, 105,
+			116, 114, 101, 118, 105, 100, 0, 110, 116, 1, 101, 115, 115, 111, 110, 110, 111, 107, 0, 110, 116, 1, 101, 115, 115, 111, 112, 0, 110, 116,
+			1, 101, 116, 107, 97, 114, 116, 0, 110, 116, 1, 101, 116, 114, 97, 112, 101, 100, 0, 110, 116, 1, 101, 118, 97, 108, 0, 110, 116, 1,
+			105, 108, 112, 109, 111, 107, 0, 110, 116, 1, 105, 116, 110, 101, 115, 115, 101, 114, 0, 110, 116, 1, 105, 116, 114, 111, 115, 0, 7, 6,
+			110, 100, 0, 4, 1, 97, 101, 110, 2, 101, 114, 3, 8, 50, 72, 0, 1, 97, 109, 97, 2, 97, 0, 1, 97, 110, 114, 101, 102, 2,
+			111, 0, 1, 97, 115, 115, 105, 108, 103, 2, 111, 0, 1, 101, 107, 115, 105, 2, 101, 114, 117, 110, 0, 1, 117, 109, 97, 115, 111, 114,
+			2, 101, 0, 4, 1, 17, 65, 3, 50, 0, 1, 97, 98, 2, 101, 108, 0, 1, 97, 98, 32, 103, 101, 106, 2, 101, 114, 0, 1, 97,
+			98, 32, 117, 100, 2, 101, 114, 0, 1, 97, 98, 114, 111, 102, 2, 101, 114, 0, 1, 97, 104, 2, 101, 108, 0, 1, 97, 108, 0, 1,
+			97, 108, 2, 97, 114, 0, 1, 97, 112, 2, 101, 108, 111, 107, 0, 1, 97, 116, 115, 2, 12, 0, 1, 97, 118, 2, 97, 102, 0, 1,
+			101, 2, 101, 12, 0, 1, 101, 2, 101, 108, 105, 103, 0, 1, 101, 107, 2, 101, 108, 0, 1, 105, 2, 101, 114, 107, 114, 101, 100, 115,
+			12, 0, 1, 105, 2, 101, 114, 108, 12, 0, 1, 105, 2, 101, 114, 115, 116, 12, 0, 1, 105, 2, 105, 109, 101, 108, 108, 101, 109, 0,
+			1, 105, 98, 2, 101, 0, 1, 105, 98, 2, 105, 110, 12, 0, 1, 105, 102, 2, 12, 0, 1, 105, 102, 2, 101, 108, 195, 184, 110, 0,
+			1, 105, 109, 2, 101, 0, 1, 105, 116, 2, 105, 110, 0, 1, 105, 118, 2, 101, 0, 1, 105, 118, 2, 105, 110, 0, 1, 105, 118, 107,
+			0, 1, 105, 118, 115, 2, 101, 108, 0, 1, 117, 100, 2, 114, 101, 0, 1, 117, 104, 2, 12, 0, 1, 121, 2, 101, 108, 0, 1, 121,
+			108, 112, 2, 114, 0, 1, 165, 195, 2, 101, 108, 105, 0, 1, 165, 195, 104, 2, 97, 114, 0, 1, 166, 195, 2, 101, 114, 101, 12, 0,
+			2, 101, 108, 115, 101, 12, 0, 8, 97, 98, 32, 101, 100, 2, 101, 114, 0, 8, 97, 98, 32, 105, 2, 101, 114, 0, 8, 97, 98, 32,
+			105, 118, 2, 101, 114, 0, 8, 97, 98, 32, 110, 97, 109, 2, 101, 114, 0, 8, 105, 2, 12, 12, 0, 101, 1, 101, 118, 2, 108, 0,
+			101, 1, 105, 109, 2, 108, 105, 0, 101, 1, 117, 115, 105, 109, 2, 108, 105, 103, 0, 110, 1, 17, 65, 0, 4, 101, 1, 97, 115, 2,
+			108, 105, 103, 3, 50, 14, 0, 101, 1, 105, 118, 101, 2, 108, 105, 0, 101, 108, 1, 97, 109, 3, 50, 14, 55, 0, 1, 97, 98, 2,
+			101, 114, 3, 50, 19, 0, 4, 1, 17, 65, 2, 97, 116, 3, 50, 72, 0, 1, 17, 65, 2, 101, 114, 101, 114, 32, 0, 1, 17, 65,
+			2, 114, 101, 32, 12, 0, 1, 17, 65, 2, 114, 101, 115, 32, 12, 0, 1, 17, 65, 2, 114, 105, 110, 0, 1, 97, 2, 97, 108, 117,
+			115, 0, 1, 97, 2, 101, 108, 0, 1, 97, 2, 101, 114, 101, 0, 1, 97, 2, 101, 115, 98, 106, 0, 1, 97, 2, 114, 101, 0, 1,
+			97, 2, 121, 0, 1, 97, 98, 2, 97, 103, 101, 0, 1, 97, 98, 2, 101, 109, 101, 100, 108, 101, 109, 0, 1, 97, 98, 2, 101, 110,
+			115, 0, 1, 97, 98, 2, 101, 114, 110, 101, 0, 1, 97, 98, 2, 105, 116, 0, 1, 97, 103, 2, 97, 0, 1, 97, 103, 2, 101, 114,
+			101, 0, 1, 97, 104, 2, 105, 0, 1, 97, 107, 115, 2, 97, 0, 1, 97, 107, 115, 2, 105, 110, 97, 118, 0, 1, 97, 107, 115, 114,
+			97, 109, 0, 1, 97, 108, 114, 97, 2, 97, 0, 1, 97, 109, 2, 97, 103, 0, 1, 97, 109, 2, 97, 114, 105, 110, 0, 1, 97, 109,
+			97, 108, 97, 115, 0, 1, 97, 109, 109, 2, 101, 114, 0, 1, 97, 109, 109, 2, 111, 0, 1, 97, 109, 109, 111, 107, 0, 1, 97, 112,
 			2, 97, 0, 1, 97, 114, 101, 118, 2, 97, 0, 1, 97, 114, 105, 109, 2, 97, 0, 1, 97, 115, 2, 97, 108, 0, 1, 97, 116, 115,
 			2, 97, 114, 0, 1, 97, 118, 2, 97, 108, 0, 1, 97, 118, 2, 101, 114, 98, 105, 108, 116, 0, 1, 97, 118, 2, 114, 101, 0, 1,
 			101, 2, 111, 103, 101, 110, 0, 1, 101, 2, 111, 107, 114, 105, 0, 1, 101, 2, 111, 115, 0, 1, 101, 2, 111, 115, 107, 111, 112, 0,
@@ -8988,2370 +9576,2852 @@ FilesInMemory create_espeakdata_dicts () {
 			105, 118, 105, 100, 0, 1, 101, 102, 2, 101, 114, 0, 1, 101, 103, 2, 97, 110, 0, 1, 101, 103, 101, 108, 2, 97, 114, 105, 115, 107,
 			0, 1, 101, 103, 117, 106, 0, 1, 101, 104, 2, 101, 114, 115, 111, 110, 0, 1, 101, 104, 97, 114, 116, 98, 117, 115, 0, 1, 101, 106,
 			101, 2, 101, 108, 0, 1, 101, 107, 2, 105, 115, 0, 1, 101, 108, 98, 2, 101, 0, 1, 101, 108, 101, 2, 105, 103, 0, 1, 101, 112,
-			2, 101, 114, 103, 97, 115, 116, 0, 1, 101, 112, 2, 105, 0, 1, 101, 112, 115, 2, 101, 114, 0, 1, 101, 116, 2, 101, 110, 0, 1,
-			101, 116, 2, 101, 110, 115, 0, 1, 101, 116, 115, 0, 1, 101, 116, 116, 105, 109, 105, 100, 0, 1, 101, 117, 110, 105, 109, 0, 1, 101,
-			118, 100, 184, 195, 110, 2, 105, 103, 0, 1, 101, 119, 2, 101, 108, 0, 1, 101, 119, 2, 121, 0, 1, 101, 119, 103, 2, 97, 0, 1,
-			105, 2, 101, 107, 115, 0, 1, 105, 2, 101, 117, 0, 1, 105, 2, 105, 0, 1, 105, 2, 105, 103, 12, 0, 1, 105, 2, 111, 107, 105,
-			0, 1, 105, 2, 111, 110, 101, 0, 1, 105, 2, 117, 0, 1, 105, 99, 2, 121, 0, 1, 105, 102, 2, 101, 108, 0, 1, 105, 108, 2,
-			97, 0, 1, 105, 108, 2, 121, 0, 1, 105, 118, 2, 114, 105, 107, 0, 1, 105, 118, 2, 117, 0, 1, 111, 2, 105, 0, 1, 111, 98,
-			32, 115, 101, 109, 97, 106, 0, 1, 111, 107, 2, 101, 109, 110, 101, 114, 101, 0, 1, 111, 107, 2, 101, 110, 115, 0, 1, 111, 107, 2,
-			105, 0, 1, 111, 107, 2, 111, 108, 0, 1, 111, 107, 2, 111, 108, 101, 114, 101, 0, 1, 111, 114, 2, 101, 108, 0, 1, 117, 2, 110,
-			101, 0, 1, 117, 2, 114, 101, 0, 1, 117, 102, 2, 97, 0, 1, 117, 102, 2, 101, 114, 0, 1, 117, 104, 2, 106, 195, 166, 118, 101,
-			108, 0, 1, 117, 104, 2, 121, 114, 0, 1, 117, 107, 101, 115, 0, 1, 117, 109, 2, 101, 114, 105, 110, 103, 0, 1, 117, 114, 32, 110,
-			101, 2, 101, 0, 1, 117, 114, 115, 2, 101, 0, 1, 184, 195, 115, 2, 97, 103, 0, 2, 97, 103, 0, 2, 101, 110, 116, 0, 2, 105,
-			100, 97, 0, 2, 105, 103, 0, 2, 111, 109, 0, 2, 121, 114, 0, 2, 195, 165, 115, 101, 0, 2, 195, 184, 100, 0, 2, 195, 184, 114,
-			0, 8, 97, 98, 32, 110, 101, 2, 101, 0, 8, 97, 98, 32, 110, 101, 100, 2, 101, 0, 8, 105, 2, 101, 114, 32, 12, 0, 8, 105,
-			2, 121, 0, 8, 105, 103, 97, 98, 0, 8, 111, 98, 2, 32, 0, 4, 1, 97, 109, 114, 111, 110, 2, 105, 3, 50, 72, 6, 0, 1,
-			97, 112, 2, 111, 114, 97, 0, 1, 101, 109, 2, 111, 122, 97, 0, 1, 101, 112, 2, 117, 108, 0, 101, 8, 97, 109, 2, 108, 97, 3,
-			50, 72, 6, 36, 0, 4, 105, 103, 1, 101, 118, 3, 50, 72, 37, 0, 105, 103, 1, 117, 114, 103, 0, 105, 103, 1, 121, 0, 105, 103,
-			1, 121, 109, 0, 4, 101, 1, 97, 98, 2, 108, 101, 100, 101, 114, 12, 3, 50, 72, 108, 0, 101, 1, 97, 98, 2, 109, 101, 100, 108,
-			101, 109, 0, 101, 1, 97, 98, 2, 111, 112, 103, 195, 184, 114, 0, 101, 1, 97, 98, 32, 101, 108, 101, 104, 0, 101, 1, 97, 98, 32,
-			110, 105, 100, 0, 101, 1, 97, 98, 32, 110, 105, 109, 0, 101, 1, 97, 98, 32, 115, 101, 114, 0, 101, 1, 97, 98, 101, 110, 114, 184,
-			195, 106, 98, 0, 101, 1, 97, 98, 101, 118, 121, 116, 0, 101, 1, 97, 98, 114, 101, 118, 184, 195, 114, 0, 97, 108, 101, 1, 101, 112,
-			112, 105, 104, 99, 3, 50, 72, 109, 57, 55, 0, 101, 1, 97, 115, 2, 108, 105, 103, 3, 50, 108, 0, 7, 6, 110, 103, 0, 1, 105,
-			109, 97, 108, 102, 2, 111, 3, 8, 50, 81, 0, 1, 105, 102, 2, 114, 101, 3, 8, 68, 0, 1, 97, 114, 111, 2, 101, 3, 8, 68,
-			89, 57, 0, 2, 117, 100, 3, 50, 72, 0, 1, 105, 114, 114, 101, 100, 2, 101, 114, 3, 50, 75, 0, 4, 1, 17, 65, 2, 111, 3,
-			50, 81, 0, 1, 97, 2, 105, 118, 0, 1, 97, 116, 2, 101, 110, 116, 0, 1, 97, 118, 101, 2, 101, 108, 0, 1, 101, 103, 2, 105,
-			118, 12, 0, 1, 101, 103, 114, 111, 109, 2, 114, 121, 0, 1, 101, 104, 2, 101, 109, 0, 1, 101, 104, 2, 105, 118, 0, 1, 101, 114,
-			2, 195, 184, 114, 0, 1, 105, 118, 2, 195, 165, 114, 100, 0, 1, 118, 97, 110, 2, 105, 118, 0, 1, 166, 195, 107, 2, 117, 114, 117,
-			0, 2, 97, 0, 2, 101, 118, 195, 166, 114, 0, 2, 108, 97, 115, 0, 2, 114, 97, 100, 0, 2, 117, 108, 118, 0, 2, 121, 109, 110,
-			97, 115, 116, 0, 2, 195, 166, 108, 100, 0, 8, 97, 2, 17, 65, 0, 8, 105, 102, 2, 101, 114, 101, 0, 1, 97, 112, 2, 195, 166,
-			97, 3, 50, 81, 6, 0, 117, 1, 97, 108, 2, 115, 116, 3, 50, 81, 6, 40, 0, 101, 114, 2, 114, 105, 103, 3, 50, 81, 109, 34,
-			0, 101, 110, 105, 1, 105, 2, 195, 184, 3, 50, 91, 37, 50, 0, 4, 3, 68, 0, 1, 97, 102, 2, 97, 114, 109, 0, 1, 105, 102,
-			2, 101, 114, 101, 110, 12, 0, 4, 1, 105, 116, 2, 101, 110, 116, 3, 68, 81, 0, 1, 117, 102, 2, 101, 114, 0, 4, 1, 97, 104,
-			99, 2, 101, 109, 101, 110, 116, 3, 68, 89, 57, 0, 8, 97, 114, 2, 101, 114, 0, 101, 97, 1, 97, 114, 111, 2, 100, 101, 3, 68,
-			89, 57, 6, 110, 0, 4, 1, 97, 114, 2, 101, 114, 101, 3, 68, 91, 0, 1, 97, 114, 114, 97, 0, 1, 111, 108, 108, 97, 2, 101,
-			0, 101, 114, 1, 105, 102, 3, 68, 114, 0, 7, 6, 111, 110, 0, 1, 10, 2, 110, 28, 33, 3, 6, 39, 0, 4, 1, 21, 2, 28,
-			33, 12, 3, 6, 39, 50, 0, 1, 102, 101, 108, 10, 2, 28, 33, 0, 1, 102, 111, 10, 2, 28, 33, 0, 1, 108, 101, 10, 2, 28,
-			33, 0, 1, 116, 111, 102, 0, 1, 116, 111, 110, 111, 109, 0, 8, 100, 101, 107, 97, 109, 0, 110, 1, 108, 111, 107, 3, 6, 114, 50,
-			0, 4, 1, 98, 114, 97, 107, 3, 6, 114, 68, 0, 1, 99, 10, 2, 28, 33, 0, 1, 102, 105, 10, 2, 28, 33, 0, 1, 102, 108,
-			97, 2, 115, 0, 1, 106, 10, 2, 28, 33, 0, 1, 108, 10, 2, 28, 33, 0, 1, 112, 10, 2, 28, 33, 0, 1, 114, 114, 101, 112,
-			0, 1, 115, 166, 195, 10, 2, 28, 33, 0, 1, 116, 10, 2, 28, 33, 0, 1, 116, 114, 97, 107, 0, 8, 108, 97, 115, 0, 8, 108,
-			108, 97, 98, 0, 8, 108, 108, 105, 118, 97, 112, 0, 8, 115, 166, 195, 115, 0, 4, 1, 108, 116, 97, 105, 114, 116, 3, 8, 114, 50,
-			0, 1, 108, 116, 97, 117, 100, 0, 1, 10, 2, 101, 108, 28, 33, 3, 39, 50, 0, 1, 116, 111, 110, 111, 109, 2, 105, 3, 39, 50,
-			6, 0, 4, 1, 98, 98, 105, 103, 3, 114, 50, 0, 1, 98, 101, 100, 101, 114, 0, 1, 101, 110, 0, 1, 101, 114, 102, 0, 1, 103,
-			114, 97, 0, 1, 104, 2, 100, 0, 1, 105, 100, 97, 116, 115, 0, 1, 107, 105, 115, 107, 101, 108, 0, 1, 108, 97, 114, 100, 0, 1,
-			108, 102, 101, 116, 0, 1, 108, 108, 97, 103, 0, 1, 108, 111, 107, 2, 32, 0, 1, 108, 114, 101, 112, 0, 1, 108, 114, 111, 0, 1,
-			110, 97, 98, 105, 108, 0, 1, 112, 2, 116, 0, 1, 115, 2, 100, 0, 1, 115, 105, 98, 0, 1, 115, 105, 108, 97, 0, 1, 115, 110,
-			105, 98, 111, 114, 0, 1, 116, 2, 32, 0, 1, 116, 2, 105, 99, 0, 1, 116, 2, 115, 32, 0, 1, 116, 2, 115, 118, 0, 1, 116,
-			97, 103, 101, 109, 0, 1, 116, 97, 114, 97, 109, 0, 1, 116, 116, 103, 166, 195, 118, 100, 184, 195, 100, 0, 1, 121, 114, 98, 109, 101,
-			0, 2, 100, 18, 69, 0, 2, 116, 111, 108, 0, 8, 109, 2, 116, 101, 32, 0, 110, 1, 114, 100, 2, 105, 110, 103, 0, 116, 121, 1,
-			109, 3, 114, 50, 47, 37, 0, 100, 1, 102, 3, 114, 50, 72, 0, 100, 1, 112, 115, 3, 114, 50, 72, 6, 0, 4, 1, 98, 2, 32,
-			3, 114, 68, 0, 1, 98, 2, 101, 110, 32, 0, 1, 108, 97, 115, 0, 1, 108, 97, 116, 0, 1, 108, 108, 105, 118, 97, 112, 0, 1,
-			110, 103, 0, 1, 114, 98, 0, 1, 115, 166, 195, 115, 0, 103, 1, 107, 0, 98, 111, 110, 1, 98, 3, 114, 68, 71, 114, 50, 0, 106,
-			111, 117, 114, 1, 98, 3, 114, 68, 90, 6, 40, 34, 0, 7, 6, 111, 114, 0, 8, 102, 2, 32, 118, 105, 108, 100, 3, 2, 39, 34,
-			0, 4, 1, 102, 2, 104, 97, 108, 17, 65, 12, 12, 3, 2, 114, 0, 8, 102, 2, 21, 12, 12, 0, 8, 102, 2, 104, 111, 108, 100,
-			101, 0, 8, 102, 2, 115, 107, 101, 108, 108, 105, 12, 3, 2, 114, 34, 0, 101, 116, 97, 103, 8, 102, 2, 115, 111, 109, 3, 2, 114,
-			108, 6, 47, 110, 12, 0, 1, 116, 111, 109, 2, 101, 114, 3, 6, 39, 0, 4, 1, 100, 2, 28, 33, 12, 3, 6, 39, 34, 0, 1,
-			100, 97, 101, 10, 2, 28, 33, 0, 1, 102, 10, 2, 28, 33, 0, 1, 110, 101, 10, 2, 28, 33, 0, 1, 116, 10, 2, 105, 101, 28,
-			33, 0, 105, 117, 109, 1, 116, 10, 2, 28, 33, 12, 3, 6, 39, 34, 37, 113, 65, 0, 8, 102, 2, 101, 116, 32, 12, 3, 6, 39,
-			108, 0, 8, 102, 2, 116, 105, 100, 12, 3, 6, 113, 12, 0, 8, 102, 2, 100, 195, 184, 114, 12, 3, 6, 113, 51, 0, 4, 1, 102,
-			103, 110, 105, 115, 108, 101, 104, 2, 115, 3, 6, 114, 0, 1, 112, 101, 114, 2, 116, 101, 114, 0, 8, 102, 2, 97, 32, 12, 0, 8,
-			102, 2, 97, 110, 32, 12, 0, 8, 102, 2, 97, 110, 107, 195, 184, 114, 101, 110, 100, 101, 12, 0, 8, 102, 2, 97, 110, 110, 195, 166,
-			118, 110, 116, 12, 0, 8, 102, 2, 97, 110, 115, 97, 116, 12, 0, 8, 102, 2, 97, 110, 115, 116, 105, 108, 108, 101, 12, 0, 8, 102,
-			2, 97, 110, 115, 116, 195, 165, 101, 110, 100, 101, 12, 0, 8, 102, 2, 98, 101, 104, 97, 110, 100, 12, 0, 8, 102, 2, 98, 101, 104,
-			111, 12, 0, 8, 102, 2, 98, 101, 110, 32, 12, 0, 8, 102, 2, 98, 101, 110, 101, 110, 101, 12, 0, 8, 102, 2, 98, 101, 110, 115,
-			12, 0, 8, 102, 2, 98, 101, 114, 101, 100, 12, 0, 8, 102, 2, 98, 105, 108, 12, 0, 8, 102, 2, 98, 106, 101, 114, 103, 12, 0,
-			8, 102, 2, 98, 111, 103, 115, 116, 97, 118, 12, 0, 8, 102, 2, 98, 117, 100, 32, 12, 0, 8, 102, 2, 98, 117, 100, 115, 12, 0,
-			8, 102, 2, 98, 117, 110, 100, 12, 0, 8, 102, 2, 98, 195, 184, 110, 12, 0, 8, 102, 2, 99, 101, 110, 115, 117, 114, 12, 0, 8,
-			102, 2, 100, 97, 110, 115, 101, 114, 12, 0, 8, 102, 2, 100, 101, 108, 32, 12, 0, 8, 102, 2, 100, 111, 109, 12, 0, 8, 102, 2,
-			100, 114, 105, 110, 103, 12, 0, 8, 102, 2, 100, 195, 166, 107, 32, 12, 0, 8, 102, 2, 100, 195, 166, 107, 107, 101, 110, 101, 12, 0,
-			8, 102, 2, 100, 195, 166, 107, 115, 12, 0, 8, 102, 2, 102, 97, 100, 101, 114, 12, 0, 8, 102, 2, 102, 97, 114, 12, 0, 8, 102,
-			2, 102, 114, 97, 12, 0, 8, 102, 2, 102, 195, 166, 100, 114, 12, 0, 8, 102, 2, 103, 97, 110, 103, 12, 0, 8, 102, 2, 103, 101,
-			109, 97, 107, 12, 0, 8, 102, 2, 103, 114, 117, 110, 100, 12, 0, 8, 102, 2, 103, 195, 165, 114, 100, 12, 0, 8, 102, 2, 103, 195,
-			166, 110, 103, 101, 114, 12, 0, 8, 102, 2, 103, 195, 166, 114, 101, 12, 0, 8, 102, 2, 104, 97, 108, 12, 0, 8, 102, 2, 104, 97,
-			109, 12, 0, 8, 102, 2, 104, 97, 118, 101, 12, 0, 8, 102, 2, 104, 101, 110, 12, 0, 8, 102, 2, 104, 105, 115, 116, 111, 12, 0,
-			8, 102, 2, 104, 106, 117, 108, 12, 0, 8, 102, 2, 104, 111, 108, 100, 0, 8, 102, 2, 104, 111, 108, 100, 101, 116, 12, 0, 8, 102,
-			2, 104, 117, 100, 12, 0, 8, 102, 2, 104, 117, 115, 12, 0, 8, 102, 2, 104, 195, 165, 110, 100, 12, 0, 8, 102, 2, 104, 195, 165,
-			110, 100, 115, 12, 0, 8, 102, 2, 104, 195, 166, 110, 103, 12, 0, 8, 102, 2, 107, 97, 109, 109, 101, 114, 0, 8, 102, 2, 107, 97,
-			114, 108, 12, 0, 8, 102, 2, 107, 108, 111, 103, 12, 0, 8, 102, 2, 107, 111, 110, 116, 111, 114, 12, 0, 8, 102, 2, 107, 114, 111,
-			112, 12, 0, 8, 102, 2, 107, 118, 105, 110, 100, 101, 12, 0, 8, 102, 2, 107, 195, 166, 109, 112, 101, 114, 12, 0, 8, 102, 2, 107,
-			195, 166, 114, 108, 105, 103, 104, 101, 100, 0, 8, 102, 2, 107, 195, 184, 98, 12, 0, 8, 102, 2, 108, 97, 103, 12, 0, 8, 102, 2,
-			108, 97, 103, 115, 12, 0, 8, 102, 2, 108, 97, 110, 100, 12, 0, 8, 102, 2, 108, 101, 109, 12, 0, 8, 102, 2, 108, 111, 118, 101,
-			114, 12, 0, 8, 102, 2, 108, 121, 100, 12, 0, 8, 102, 2, 108, 121, 115, 12, 0, 8, 102, 2, 108, 195, 166, 103, 103, 101, 114, 0,
-			8, 102, 2, 108, 195, 166, 110, 115, 12, 0, 8, 102, 2, 108, 195, 166, 115, 101, 12, 0, 8, 102, 2, 109, 97, 108, 100, 101, 104, 121,
-			100, 12, 0, 8, 102, 2, 109, 97, 110, 100, 12, 0, 8, 102, 2, 109, 98, 97, 114, 12, 0, 8, 102, 2, 109, 98, 114, 195, 184, 100,
-			12, 0, 8, 102, 2, 109, 101, 12, 12, 0, 8, 102, 2, 109, 101, 108, 105, 103, 12, 0, 8, 102, 2, 109, 108, 101, 12, 0, 8, 102,
-			2, 109, 195, 166, 110, 100, 12, 0, 8, 102, 2, 117, 100, 101, 32, 12, 0, 101, 110, 100, 8, 102, 2, 101, 12, 3, 6, 114, 4, 36,
-			50, 0, 4, 1, 107, 97, 2, 100, 3, 6, 114, 12, 0, 1, 107, 101, 114, 2, 100, 0, 1, 112, 112, 97, 114, 2, 116, 0, 1, 112,
-			115, 107, 101, 2, 116, 0, 8, 107, 115, 101, 2, 116, 101, 0, 8, 112, 115, 110, 97, 114, 116, 2, 116, 0, 8, 102, 109, 111, 107, 2,
-			116, 3, 6, 114, 12, 19, 0, 100, 8, 107, 107, 97, 3, 6, 114, 12, 19, 72, 0, 1, 107, 101, 100, 2, 32, 3, 6, 114, 12, 34,
-			0, 100, 1, 99, 110, 111, 99, 2, 101, 3, 6, 114, 12, 72, 0, 4, 1, 102, 111, 114, 112, 2, 109, 97, 3, 6, 114, 34, 0, 8,
-			98, 97, 2, 116, 0, 8, 102, 2, 102, 117, 108, 100, 101, 110, 100, 116, 12, 0, 8, 102, 2, 108, 121, 103, 116, 101, 12, 0, 8, 102,
-			2, 108, 195, 166, 98, 101, 12, 0, 8, 102, 2, 109, 102, 97, 115, 116, 12, 0, 8, 102, 2, 109, 102, 114, 105, 12, 0, 8, 102, 2,
-			109, 103, 105, 118, 12, 0, 8, 102, 2, 109, 105, 100, 100, 97, 103, 12, 0, 8, 102, 2, 109, 107, 97, 103, 101, 12, 0, 8, 102, 2,
-			109, 108, 195, 166, 114, 101, 12, 0, 8, 102, 2, 109, 108, 195, 184, 115, 12, 0, 8, 102, 2, 109, 110, 105, 110, 103, 12, 0, 8, 102,
-			2, 109, 111, 114, 12, 0, 8, 102, 2, 109, 112, 114, 101, 115, 115, 101, 12, 0, 8, 102, 2, 109, 115, 12, 0, 8, 102, 2, 109, 116,
-			12, 0, 8, 102, 2, 109, 117, 101, 12, 0, 8, 102, 2, 109, 121, 110, 100, 101, 114, 12, 0, 8, 102, 2, 109, 195, 165, 108, 12, 0,
-			8, 102, 2, 109, 195, 184, 100, 114, 101, 12, 0, 8, 102, 2, 110, 97, 118, 110, 12, 0, 8, 102, 2, 110, 101, 109, 32, 12, 0, 8,
-			102, 2, 111, 109, 116, 97, 108, 101, 12, 0, 8, 102, 2, 111, 114, 100, 12, 0, 8, 102, 2, 111, 118, 101, 114, 12, 0, 8, 102, 2,
-			112, 97, 110, 116, 104, 97, 118, 101, 114, 12, 0, 8, 102, 2, 112, 97, 114, 116, 105, 12, 0, 8, 102, 2, 112, 111, 115, 116, 12, 0,
-			8, 102, 2, 112, 114, 97, 107, 116, 105, 107, 12, 0, 8, 102, 2, 112, 114, 101, 109, 105, 101, 114, 101, 12, 0, 8, 102, 2, 112, 114,
-			111, 103, 114, 97, 109, 109, 101, 114, 101, 12, 0, 8, 102, 2, 112, 114, 195, 184, 118, 101, 12, 0, 8, 102, 2, 112, 195, 165, 12, 0,
-			8, 102, 2, 114, 97, 110, 103, 12, 0, 8, 102, 2, 114, 101, 115, 116, 12, 0, 8, 102, 2, 114, 101, 116, 12, 0, 8, 102, 2, 114,
-			105, 100, 101, 114, 12, 0, 8, 102, 2, 114, 105, 103, 101, 12, 0, 8, 102, 2, 114, 117, 100, 101, 12, 0, 8, 102, 2, 114, 195, 165,
-			100, 32, 12, 0, 8, 102, 2, 115, 97, 110, 103, 101, 114, 12, 0, 8, 102, 2, 115, 97, 116, 115, 12, 0, 8, 102, 2, 115, 105, 100,
-			101, 12, 0, 8, 102, 2, 115, 107, 101, 12, 0, 8, 102, 2, 115, 107, 101, 108, 32, 12, 0, 8, 102, 2, 115, 107, 101, 108, 115, 98,
-			101, 104, 97, 110, 100, 108, 12, 0, 8, 102, 2, 115, 107, 101, 108, 115, 108, 195, 184, 115, 12, 0, 8, 102, 2, 115, 107, 101, 114, 12,
-			0, 8, 102, 2, 115, 107, 110, 12, 0, 8, 102, 2, 115, 107, 111, 108, 12, 0, 8, 102, 2, 115, 107, 114, 105, 102, 116, 12, 0, 8,
-			102, 2, 115, 107, 117, 100, 12, 0, 8, 102, 2, 115, 107, 121, 108, 12, 0, 8, 102, 2, 115, 107, 195, 166, 114, 101, 12, 0, 8, 102,
-			2, 115, 107, 195, 166, 114, 109, 12, 0, 8, 102, 2, 115, 108, 97, 103, 12, 0, 8, 102, 2, 115, 108, 97, 103, 32, 12, 0, 8, 102,
-			2, 115, 108, 97, 103, 115, 12, 0, 8, 102, 2, 115, 109, 97, 103, 12, 0, 8, 102, 2, 115, 111, 109, 109, 101, 114, 12, 0, 8, 102,
-			2, 115, 111, 114, 103, 12, 0, 8, 102, 2, 115, 112, 97, 110, 100, 12, 0, 8, 102, 2, 115, 112, 105, 108, 32, 12, 0, 8, 102, 2,
-			115, 112, 105, 108, 108, 101, 110, 101, 12, 0, 8, 102, 2, 115, 112, 105, 108, 108, 101, 116, 12, 0, 8, 102, 2, 115, 112, 105, 114, 12,
-			0, 8, 102, 2, 115, 112, 114, 105, 110, 103, 12, 0, 8, 102, 2, 115, 112, 195, 166, 110, 100, 116, 12, 0, 8, 102, 2, 115, 116, 97,
-			100, 12, 0, 8, 102, 2, 115, 116, 97, 110, 100, 101, 114, 12, 0, 8, 102, 2, 115, 116, 97, 118, 101, 108, 115, 101, 12, 0, 8, 102,
-			2, 115, 116, 97, 118, 110, 12, 0, 8, 102, 2, 115, 116, 98, 111, 116, 97, 110, 105, 107, 12, 0, 8, 102, 2, 115, 116, 107, 97, 110,
-			100, 105, 100, 97, 116, 12, 0, 8, 102, 2, 115, 116, 108, 105, 103, 12, 0, 8, 102, 2, 115, 116, 109, 97, 110, 100, 12, 0, 8, 102,
-			2, 115, 116, 109, 195, 166, 115, 115, 105, 103, 12, 0, 8, 102, 2, 115, 116, 117, 100, 105, 101, 12, 0, 8, 102, 2, 115, 116, 117, 100,
-			105, 117, 109, 12, 0, 8, 102, 2, 115, 116, 117, 101, 12, 0, 8, 102, 2, 115, 116, 118, 195, 166, 115, 101, 110, 12, 0, 8, 102, 2,
-			115, 116, 122, 111, 111, 108, 111, 103, 105, 12, 0, 8, 102, 2, 115, 116, 195, 166, 100, 101, 114, 12, 0, 8, 102, 2, 115, 116, 195, 166,
-			118, 110, 12, 0, 8, 102, 2, 115, 118, 97, 114, 32, 12, 0, 8, 102, 2, 115, 118, 97, 114, 101, 114, 12, 0, 8, 102, 2, 115, 118,
-			97, 114, 115, 12, 0, 8, 102, 2, 115, 195, 165, 32, 12, 0, 8, 102, 2, 115, 195, 166, 100, 101, 12, 0, 8, 102, 2, 115, 195, 166,
-			116, 12, 0, 8, 102, 2, 116, 97, 110, 100, 12, 0, 8, 102, 2, 116, 97, 110, 100, 115, 12, 0, 8, 102, 2, 116, 101, 103, 110, 32,
-			12, 0, 8, 102, 2, 116, 101, 103, 110, 105, 110, 103, 115, 114, 101, 116, 12, 0, 8, 102, 2, 116, 101, 107, 115, 116, 12, 0, 8, 102,
-			2, 116, 101, 108, 116, 12, 0, 8, 102, 2, 116, 102, 97, 114, 101, 110, 100, 101, 12, 0, 8, 102, 2, 116, 105, 108, 12, 0, 8, 102,
-			2, 116, 108, 195, 184, 98, 101, 110, 100, 101, 12, 0, 8, 102, 2, 116, 111, 103, 12, 0, 8, 102, 2, 116, 111, 118, 12, 0, 8, 102,
-			2, 116, 114, 97, 112, 112, 101, 12, 0, 8, 102, 2, 116, 114, 105, 110, 32, 12, 0, 8, 102, 2, 116, 114, 105, 110, 115, 12, 0, 8,
-			102, 2, 116, 114, 111, 112, 12, 0, 8, 102, 2, 116, 114, 121, 107, 12, 0, 8, 102, 2, 116, 115, 195, 166, 116, 116, 101, 12, 0, 8,
-			102, 2, 116, 117, 110, 103, 101, 12, 0, 8, 102, 2, 116, 195, 166, 110, 100, 101, 114, 12, 0, 8, 102, 2, 116, 195, 166, 112, 112, 101,
-			12, 0, 8, 102, 2, 117, 100, 12, 0, 8, 102, 2, 118, 97, 108, 103, 12, 0, 8, 102, 2, 118, 97, 114, 109, 12, 0, 8, 102, 2,
-			118, 97, 114, 115, 12, 0, 8, 102, 2, 118, 97, 115, 107, 32, 12, 0, 8, 102, 2, 118, 101, 106, 101, 110, 12, 0, 8, 102, 2, 118,
-			195, 166, 114, 101, 108, 115, 101, 12, 0, 8, 102, 2, 195, 165, 100, 12, 0, 8, 102, 2, 195, 165, 114, 12, 0, 116, 97, 108, 101, 114,
-			43, 8, 102, 3, 6, 114, 34, 47, 110, 55, 114, 0, 109, 115, 115, 97, 103, 43, 8, 102, 2, 25, 3, 6, 114, 34, 65, 19, 89, 4,
-			89, 35, 0, 109, 101, 114, 8, 102, 2, 32, 12, 3, 6, 114, 34, 65, 114, 0, 4, 100, 1, 118, 2, 105, 3, 6, 114, 34, 72, 0,
-			100, 2, 101, 110, 116, 108, 105, 103, 12, 0, 100, 2, 110, 105, 110, 0, 101, 8, 102, 2, 12, 12, 3, 6, 115, 12, 108, 0, 1, 10,
-			2, 105, 115, 107, 28, 33, 3, 7, 39, 0, 1, 10, 2, 101, 114, 28, 33, 3, 7, 39, 12, 0, 1, 21, 2, 28, 33, 12, 3, 8,
-			8, 114, 0, 101, 1, 17, 67, 2, 32, 3, 39, 12, 114, 0, 4, 1, 115, 2, 116, 3, 39, 34, 0, 1, 115, 2, 116, 101, 0, 1,
-			116, 115, 2, 116, 0, 1, 118, 2, 18, 76, 12, 0, 1, 118, 115, 2, 101, 12, 0, 8, 2, 97, 0, 8, 102, 2, 101, 108, 32, 12,
-			0, 8, 102, 2, 111, 114, 100, 110, 0, 8, 110, 2, 100, 0, 100, 8, 2, 114, 101, 116, 12, 0, 117, 100, 101, 110, 8, 102, 2, 32,
-			12, 3, 39, 34, 6, 40, 86, 20, 50, 0, 101, 110, 115, 105, 115, 8, 102, 2, 107, 3, 39, 34, 6, 111, 50, 89, 37, 89, 0, 4,
-			101, 8, 102, 2, 108, 32, 12, 3, 39, 34, 6, 111, 55, 0, 101, 8, 102, 2, 108, 108, 101, 12, 0, 101, 108, 1, 109, 0, 109, 3,
-			39, 34, 65, 0, 4, 100, 1, 107, 2, 114, 101, 110, 103, 3, 39, 34, 72, 0, 100, 1, 109, 2, 101, 114, 0, 100, 1, 116, 2, 101,
-			110, 101, 110, 12, 0, 100, 8, 116, 2, 12, 12, 0, 100, 114, 117, 112, 3, 39, 34, 72, 34, 115, 71, 0, 100, 101, 1, 98, 2, 110,
-			100, 101, 3, 39, 34, 109, 0, 4, 2, 97, 108, 3, 39, 51, 0, 100, 1, 109, 2, 101, 116, 0, 100, 2, 12, 12, 0, 100, 2, 101,
-			110, 101, 12, 0, 4, 100, 1, 106, 2, 97, 110, 3, 39, 51, 72, 0, 100, 1, 106, 2, 105, 0, 100, 101, 97, 117, 120, 1, 98, 3,
-			39, 51, 72, 6, 39, 0, 100, 105, 1, 110, 2, 115, 107, 3, 39, 51, 72, 37, 0, 100, 1, 106, 2, 101, 110, 3, 39, 114, 0, 4,
-			1, 98, 2, 116, 3, 113, 0, 1, 115, 2, 116, 17, 65, 0, 1, 118, 2, 116, 0, 4, 1, 107, 2, 116, 3, 113, 12, 0, 1, 107,
-			2, 116, 17, 65, 0, 1, 116, 115, 2, 109, 0, 100, 1, 104, 2, 101, 3, 113, 12, 72, 0, 2, 100, 101, 110, 3, 113, 34, 0, 4,
-			1, 102, 3, 114, 0, 1, 102, 2, 101, 110, 0, 1, 102, 2, 116, 101, 114, 12, 0, 1, 109, 117, 104, 0, 1, 116, 107, 101, 114, 0,
-			1, 116, 107, 101, 115, 0, 1, 118, 108, 97, 0, 8, 2, 105, 0, 8, 102, 2, 102, 97, 110, 103, 12, 0, 8, 102, 2, 102, 101, 108,
-			116, 12, 0, 8, 102, 2, 102, 105, 108, 109, 12, 0, 8, 102, 2, 102, 106, 111, 114, 12, 0, 8, 102, 2, 102, 111, 114, 100, 12, 0,
-			8, 102, 2, 102, 111, 114, 102, 111, 100, 12, 0, 8, 102, 2, 102, 111, 114, 115, 116, 195, 166, 114, 107, 12, 0, 8, 102, 2, 102, 111,
-			114, 115, 195, 184, 103, 12, 0, 8, 102, 2, 102, 111, 114, 121, 115, 101, 114, 117, 109, 12, 0, 8, 102, 2, 102, 195, 184, 100, 100, 101,
-			114, 12, 0, 8, 102, 2, 103, 97, 115, 116, 12, 0, 8, 102, 2, 107, 97, 110, 116, 0, 8, 102, 2, 107, 195, 184, 114, 115, 101, 108,
-			115, 114, 101, 116, 0, 1, 102, 2, 21, 3, 114, 4, 0, 4, 1, 10, 2, 105, 28, 33, 12, 3, 114, 6, 0, 8, 102, 2, 101, 108,
-			115, 107, 12, 0, 8, 102, 2, 108, 121, 100, 101, 110, 100, 101, 12, 0, 101, 8, 102, 2, 110, 12, 3, 114, 6, 36, 12, 0, 101, 118,
-			8, 102, 2, 105, 103, 101, 3, 114, 6, 36, 12, 84, 0, 4, 101, 110, 107, 108, 8, 102, 2, 101, 12, 3, 114, 6, 36, 50, 49, 55,
-			0, 101, 110, 107, 108, 8, 102, 2, 105, 110, 103, 0, 4, 1, 109, 2, 102, 3, 114, 12, 0, 1, 109, 2, 109, 0, 1, 109, 2, 115,
-			101, 0, 1, 112, 115, 2, 116, 0, 1, 118, 2, 101, 12, 0, 8, 102, 2, 114, 105, 110, 103, 32, 0, 8, 102, 2, 114, 105, 110, 103,
-			101, 110, 0, 1, 102, 2, 116, 3, 114, 12, 19, 0, 108, 101, 97, 110, 115, 8, 3, 114, 12, 55, 36, 50, 89, 0, 4, 100, 1, 102,
-			2, 12, 3, 114, 12, 72, 0, 100, 1, 103, 2, 111, 110, 0, 100, 8, 108, 2, 32, 0, 116, 104, 1, 110, 3, 114, 12, 87, 0, 103,
-			101, 1, 109, 3, 114, 12, 108, 0, 4, 1, 110, 2, 109, 3, 114, 34, 0, 1, 110, 2, 115, 107, 0, 2, 100, 114, 101, 12, 0, 2,
-			105, 101, 110, 116, 0, 2, 116, 111, 0, 8, 102, 2, 103, 195, 165, 114, 115, 12, 0, 8, 102, 2, 114, 101, 116, 110, 105, 12, 0, 109,
-			111, 110, 8, 104, 3, 114, 34, 65, 6, 39, 50, 0, 4, 100, 1, 107, 2, 101, 108, 3, 114, 34, 72, 0, 100, 1, 118, 2, 101, 0,
-			100, 1, 118, 104, 2, 97, 110, 0, 100, 2, 101, 110, 12, 0, 100, 2, 101, 110, 101, 110, 12, 0, 100, 2, 105, 110, 12, 0, 100, 2,
-			110, 101, 12, 0, 100, 2, 114, 101, 116, 105, 108, 12, 0, 100, 8, 108, 2, 101, 114, 32, 0, 4, 100, 1, 98, 2, 101, 108, 3, 114,
-			34, 72, 6, 0, 100, 2, 114, 117, 107, 0, 100, 111, 110, 110, 97, 110, 115, 3, 114, 34, 72, 39, 50, 6, 110, 50, 89, 0, 101, 1,
-			102, 110, 101, 103, 2, 110, 12, 3, 114, 36, 12, 0, 108, 121, 115, 116, 8, 102, 3, 114, 55, 6, 118, 89, 72, 0, 4, 100, 1, 102,
-			2, 195, 166, 3, 114, 72, 6, 0, 100, 1, 102, 2, 195, 184, 0, 101, 1, 102, 2, 115, 17, 67, 3, 115, 12, 108, 0, 7, 6, 112,
-			104, 0, 2, 105, 108, 3, 83, 0, 111, 101, 3, 83, 37, 0, 105, 108, 108, 105, 112, 112, 101, 3, 83, 37, 55, 6, 37, 12, 48, 0,
-			105, 108, 97, 100, 101, 108, 112, 104, 105, 97, 3, 83, 37, 55, 110, 72, 6, 109, 55, 83, 37, 110, 0, 7, 6, 116, 105, 0, 4, 1,
-			105, 99, 105, 100, 110, 101, 112, 112, 97, 2, 115, 3, 8, 47, 37, 0, 1, 105, 103, 110, 105, 110, 101, 109, 2, 115, 0, 1, 105, 103,
-			110, 121, 114, 97, 108, 2, 115, 0, 1, 105, 107, 97, 114, 2, 115, 0, 1, 105, 107, 110, 111, 114, 98, 2, 115, 0, 1, 105, 108, 117,
-			108, 108, 101, 99, 2, 115, 0, 1, 105, 114, 101, 116, 102, 105, 100, 2, 115, 0, 1, 105, 114, 116, 115, 97, 103, 2, 115, 0, 1, 105,
-			116, 97, 112, 101, 104, 2, 115, 0, 1, 110, 97, 114, 101, 2, 115, 0, 115, 1, 115, 97, 112, 3, 47, 6, 37, 89, 0, 108, 1, 114,
-			2, 32, 3, 47, 36, 55, 0, 4, 108, 2, 98, 97, 103, 101, 3, 47, 36, 55, 6, 0, 108, 2, 102, 111, 114, 110, 0, 108, 2, 102,
-			114, 101, 100, 115, 0, 108, 2, 102, 195, 166, 108, 100, 105, 103, 0, 108, 2, 102, 195, 166, 108, 108, 101, 115, 0, 108, 2, 103, 111, 100,
-			101, 104, 97, 118, 101, 110, 100, 101, 0, 108, 2, 103, 111, 100, 101, 115, 101, 0, 108, 2, 103, 111, 100, 101, 115, 101, 100, 100, 101, 108,
-			0, 108, 2, 103, 111, 100, 101, 115, 107, 114, 105, 118, 101, 0, 108, 2, 103, 114, 117, 110, 100, 108, 105, 103, 103, 101, 110, 100, 101, 0,
-			108, 2, 103, 195, 166, 110, 103, 101, 108, 105, 103, 0, 108, 2, 105, 110, 116, 101, 116, 103, 195, 184, 114, 101, 0, 108, 2, 105, 110, 116,
-			101, 116, 103, 195, 184, 114, 101, 108, 115, 101, 0, 108, 2, 107, 101, 110, 100, 101, 103, 105, 118, 101, 0, 108, 2, 107, 101, 110, 100, 101,
-			103, 105, 118, 101, 108, 115, 101, 0, 108, 2, 108, 97, 100, 101, 108, 105, 103, 0, 108, 2, 108, 105, 103, 101, 0, 108, 2, 108, 105, 103,
-			101, 109, 101, 100, 0, 108, 2, 108, 121, 107, 107, 101, 0, 108, 2, 111, 118, 101, 114, 115, 0, 108, 2, 112, 97, 115, 0, 108, 2, 114,
-			101, 116, 116, 101, 108, 195, 166, 103, 103, 101, 0, 108, 2, 114, 101, 116, 116, 101, 118, 105, 115, 101, 0, 108, 2, 114, 101, 116, 116, 101,
-			118, 105, 115, 110, 105, 110, 103, 0, 108, 2, 115, 97, 109, 109, 101, 110, 0, 108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 109, 101, 110,
-			0, 108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 109, 101, 116, 0, 108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 115, 116, 0, 108, 2,
-			115, 116, 101, 100, 101, 107, 111, 109, 115, 116, 0, 108, 2, 115, 116, 101, 100, 101, 108, 105, 103, 0, 108, 2, 115, 116, 101, 100, 101, 118,
-			195, 166, 114, 0, 108, 2, 115, 116, 101, 100, 101, 118, 195, 166, 114, 101, 108, 115, 101, 0, 108, 2, 115, 116, 101, 100, 101, 118, 195, 166,
-			114, 101, 110, 100, 101, 0, 108, 2, 115, 116, 114, 195, 166, 107, 107, 101, 108, 105, 103, 0, 108, 2, 115, 121, 110, 101, 107, 111, 109, 115,
-			116, 0, 108, 2, 115, 121, 110, 101, 108, 97, 100, 101, 110, 100, 101, 0, 1, 115, 97, 98, 2, 111, 110, 3, 47, 37, 0, 4, 1, 10,
-			2, 111, 110, 12, 3, 91, 0, 1, 97, 112, 2, 101, 110, 116, 0, 1, 107, 97, 2, 101, 0, 1, 107, 101, 108, 2, 101, 0, 1, 111,
-			118, 107, 2, 101, 110, 0, 2, 195, 184, 115, 12, 0, 7, 6, 195, 165, 0, 4, 1, 112, 110, 101, 118, 111, 2, 32, 3, 6, 113, 0,
-			1, 112, 165, 195, 103, 2, 109, 111, 100, 0, 1, 116, 115, 100, 111, 109, 105, 117, 2, 101, 108, 105, 103, 0, 114, 1, 110, 114, 111, 118,
-			104, 3, 6, 113, 19, 0, 98, 101, 110, 116, 108, 105, 103, 1, 104, 114, 111, 102, 3, 6, 113, 71, 109, 50, 47, 55, 37, 0, 1, 115,
-			97, 106, 2, 32, 3, 6, 114, 0, 4, 3, 113, 0, 1, 103, 2, 116, 117, 114, 0, 1, 108, 115, 103, 110, 105, 100, 110, 166, 195, 116,
-			2, 115, 0, 1, 108, 115, 110, 97, 0, 1, 109, 2, 100, 101, 12, 12, 0, 1, 109, 2, 108, 105, 110, 103, 12, 12, 0, 1, 109, 115,
-			103, 97, 108, 115, 2, 108, 0, 1, 109, 115, 103, 114, 184, 195, 112, 115, 2, 108, 0, 1, 109, 115, 114, 101, 100, 111, 109, 2, 108, 0,
-			1, 112, 2, 115, 107, 101, 0, 1, 114, 2, 100, 12, 0, 1, 114, 103, 2, 100, 0, 1, 114, 103, 2, 110, 101, 0, 1, 115, 0, 114,
-			100, 1, 103, 3, 113, 12, 0, 114, 100, 101, 1, 103, 3, 113, 12, 20, 108, 0, 100, 1, 98, 2, 12, 3, 113, 86, 0, 100, 110, 101,
-			1, 114, 116, 2, 116, 3, 113, 86, 50, 109, 0, 114, 100, 101, 110, 3, 113, 114, 50, 0, 4, 1, 100, 2, 100, 121, 114, 3, 114, 0,
-			1, 106, 116, 115, 0, 1, 108, 2, 114, 0, 1, 108, 98, 2, 21, 0, 1, 108, 115, 2, 98, 114, 111, 107, 0, 1, 108, 115, 2, 115,
-			0, 1, 109, 2, 108, 108, 195, 184, 115, 12, 0, 1, 109, 2, 108, 116, 105, 100, 12, 0, 1, 109, 2, 116, 0, 1, 109, 115, 2, 17,
-			67, 21, 12, 0, 1, 112, 2, 115, 0, 1, 112, 115, 2, 100, 111, 109, 0, 1, 112, 115, 2, 107, 111, 110, 101, 0, 1, 112, 115, 2,
-			107, 118, 105, 110, 100, 101, 0, 1, 112, 115, 2, 109, 97, 110, 100, 0, 1, 112, 115, 2, 109, 195, 166, 110, 100, 0, 1, 114, 2, 98,
-			116, 0, 1, 114, 2, 100, 100, 12, 0, 1, 114, 2, 100, 102, 12, 0, 1, 114, 2, 100, 103, 12, 0, 1, 114, 2, 100, 104, 12, 0,
-			1, 114, 2, 100, 108, 195, 184, 115, 0, 1, 114, 2, 100, 109, 97, 110, 100, 0, 1, 114, 2, 100, 110, 12, 0, 1, 114, 2, 100, 115,
-			108, 0, 1, 114, 2, 100, 115, 110, 97, 114, 0, 1, 114, 2, 100, 115, 112, 0, 1, 114, 2, 100, 118, 105, 108, 100, 0, 1, 114, 2,
-			108, 97, 109, 0, 1, 114, 2, 109, 97, 116, 101, 114, 105, 97, 108, 0, 1, 114, 2, 115, 101, 106, 108, 0, 1, 114, 2, 116, 0, 1,
-			114, 18, 73, 2, 116, 0, 1, 114, 103, 2, 21, 0, 1, 114, 107, 115, 2, 112, 0, 1, 114, 116, 2, 100, 116, 0, 1, 114, 116, 115,
-			2, 100, 195, 184, 100, 0, 1, 114, 116, 115, 2, 102, 111, 114, 107, 111, 114, 116, 0, 1, 114, 116, 115, 2, 104, 97, 116, 0, 1, 114,
-			116, 115, 2, 109, 97, 110, 100, 0, 1, 114, 116, 115, 2, 109, 195, 166, 110, 100, 0, 1, 115, 2, 32, 102, 195, 165, 0, 1, 115, 2,
-			32, 115, 110, 97, 114, 116, 0, 1, 115, 2, 100, 0, 1, 115, 2, 107, 97, 108, 100, 0, 1, 115, 2, 109, 195, 166, 110, 100, 0, 1,
-			115, 2, 116, 0, 1, 115, 2, 118, 101, 108, 0, 1, 115, 116, 108, 97, 0, 1, 116, 2, 108, 109, 111, 0, 1, 118, 2, 100, 116, 0,
-			2, 108, 116, 105, 0, 2, 110, 100, 0, 2, 116, 0, 8, 112, 0, 8, 115, 32, 114, 97, 118, 2, 32, 0, 114, 3, 114, 12, 0, 114,
-			1, 104, 3, 114, 12, 19, 0, 114, 100, 101, 1, 104, 3, 114, 12, 20, 108, 0, 114, 100, 101, 115, 116, 1, 104, 3, 114, 12, 34, 13,
-			89, 47, 0, 114, 101, 3, 114, 12, 108, 0, 114, 101, 114, 3, 114, 12, 114, 20, 0, 100, 2, 115, 3, 114, 86, 0, 115, 101, 8, 112,
-			3, 114, 89, 36, 0, 7, 6, 195, 166, 0, 4, 1, 100, 101, 108, 166, 195, 107, 2, 103, 103, 101, 3, 6, 109, 0, 1, 102, 111, 114,
-			116, 0, 1, 116, 115, 101, 106, 97, 109, 2, 116, 0, 1, 118, 101, 103, 2, 114, 0, 1, 118, 115, 101, 98, 2, 114, 32, 0, 8, 100,
-			97, 102, 2, 115, 101, 0, 8, 108, 97, 112, 0, 8, 108, 101, 99, 114, 111, 112, 2, 110, 0, 8, 108, 105, 98, 117, 106, 0, 8, 108,
-			105, 108, 97, 103, 2, 101, 114, 0, 8, 108, 121, 112, 111, 114, 112, 2, 101, 114, 0, 8, 109, 97, 114, 97, 2, 101, 114, 0, 8, 109,
-			103, 121, 112, 0, 8, 109, 111, 100, 2, 110, 101, 0, 8, 110, 97, 97, 110, 97, 107, 2, 101, 114, 0, 8, 110, 97, 97, 110, 97, 107,
-			2, 101, 114, 0, 8, 110, 101, 104, 116, 97, 2, 101, 114, 0, 8, 112, 111, 114, 117, 101, 2, 101, 114, 0, 8, 114, 97, 122, 97, 110,
-			2, 101, 114, 0, 8, 114, 98, 101, 104, 2, 101, 114, 0, 8, 114, 103, 105, 109, 2, 110, 101, 0, 8, 114, 105, 115, 97, 110, 2, 101,
-			114, 0, 8, 114, 111, 103, 97, 104, 116, 121, 112, 2, 101, 114, 0, 8, 114, 111, 109, 2, 110, 101, 12, 0, 8, 114, 117, 107, 105, 112,
-			101, 2, 101, 114, 0, 8, 115, 105, 114, 97, 102, 2, 101, 114, 0, 8, 116, 110, 97, 114, 97, 107, 2, 110, 101, 0, 8, 116, 110, 111,
-			102, 2, 110, 101, 0, 4, 1, 102, 2, 114, 101, 3, 6, 109, 12, 0, 1, 104, 102, 97, 2, 110, 103, 105, 103, 0, 114, 114, 101, 1,
-			118, 115, 101, 100, 3, 6, 110, 34, 108, 0, 110, 1, 114, 102, 101, 114, 3, 6, 110, 68, 0, 8, 114, 116, 114, 111, 112, 2, 116, 3,
-			6, 111, 0, 8, 116, 115, 109, 111, 2, 110, 100, 3, 7, 109, 0, 114, 1, 10, 2, 28, 33, 3, 7, 109, 34, 0, 4, 3, 109, 0,
-			1, 114, 2, 17, 67, 18, 69, 0, 1, 114, 2, 18, 67, 0, 1, 114, 2, 115, 0, 1, 114, 100, 2, 98, 101, 114, 0, 1, 114, 100,
-			2, 110, 12, 0, 1, 114, 107, 2, 32, 0, 1, 114, 111, 102, 2, 100, 108, 101, 0, 1, 114, 112, 2, 103, 110, 0, 1, 114, 112, 2,
-			107, 0, 1, 114, 112, 2, 115, 116, 97, 0, 1, 114, 112, 2, 115, 116, 101, 114, 101, 0, 1, 114, 116, 0, 1, 114, 116, 2, 110, 12,
-			0, 2, 17, 67, 11, 17, 65, 0, 2, 108, 12, 0, 101, 1, 116, 2, 114, 0, 2, 103, 121, 112, 116, 3, 109, 6, 0, 4, 1, 112,
-			115, 2, 110, 101, 3, 109, 12, 0, 1, 114, 2, 17, 67, 17, 65, 0, 1, 114, 116, 2, 17, 67, 101, 12, 12, 0, 2, 17, 67, 17,
-			65, 0, 114, 103, 101, 1, 17, 67, 3, 109, 12, 34, 40, 13, 0, 114, 103, 101, 114, 1, 118, 3, 109, 12, 34, 40, 114, 0, 103, 101,
-			1, 116, 3, 109, 12, 57, 13, 0, 118, 108, 3, 109, 40, 55, 0, 114, 105, 110, 100, 101, 3, 109, 51, 50, 13, 0, 108, 100, 1, 107,
-			2, 114, 3, 109, 55, 0, 108, 100, 2, 114, 12, 3, 109, 55, 72, 0, 103, 1, 114, 116, 2, 104, 101, 100, 3, 109, 57, 0, 100, 105,
-			1, 114, 112, 2, 107, 97, 110, 116, 3, 109, 72, 37, 0, 103, 1, 114, 184, 195, 114, 3, 109, 81, 0, 100, 105, 1, 114, 112, 3, 109,
-			86, 0, 114, 114, 101, 3, 110, 34, 108, 0, 4, 1, 114, 3, 111, 0, 1, 114, 2, 17, 67, 11, 17, 65, 0, 1, 114, 2, 18, 67,
-			11, 0, 1, 114, 2, 18, 67, 116, 0, 1, 114, 2, 100, 101, 12, 12, 0, 1, 114, 2, 109, 0, 1, 114, 2, 116, 12, 0, 1, 114,
-			18, 73, 2, 17, 67, 0, 1, 114, 103, 2, 115, 0, 1, 114, 112, 2, 115, 116, 0, 1, 114, 112, 115, 2, 107, 107, 0, 1, 114, 114,
-			2, 17, 67, 101, 114, 12, 0, 1, 114, 116, 2, 17, 67, 0, 1, 114, 116, 2, 110, 103, 12, 0, 8, 114, 116, 2, 98, 101, 110, 12,
-			12, 0, 7, 6, 195, 169, 0, 3, 6, 36, 0, 7, 6, 195, 184, 0, 103, 1, 108, 3, 6, 114, 57, 0, 4, 1, 100, 114, 111, 110,
-			2, 115, 116, 3, 6, 118, 0, 1, 100, 121, 115, 2, 115, 116, 0, 1, 103, 108, 101, 118, 2, 114, 101, 110, 104, 101, 100, 0, 8, 102,
-			102, 117, 97, 104, 99, 2, 114, 0, 8, 106, 108, 105, 109, 0, 8, 109, 97, 2, 98, 101, 0, 8, 110, 97, 109, 2, 118, 114, 101, 0,
-			8, 118, 101, 110, 0, 4, 1, 107, 115, 98, 111, 2, 110, 3, 6, 118, 12, 0, 1, 109, 105, 2, 100, 101, 107, 111, 109, 0, 8, 110,
-			2, 100, 21, 0, 114, 101, 1, 105, 2, 102, 97, 108, 100, 101, 110, 100, 101, 3, 6, 118, 12, 114, 0, 4, 1, 103, 114, 117, 98, 2,
-			106, 115, 3, 6, 119, 0, 1, 108, 116, 115, 114, 101, 98, 111, 2, 106, 116, 110, 97, 110, 116, 0, 8, 108, 108, 97, 104, 2, 106, 0,
-			4, 1, 18, 74, 2, 103, 3, 114, 0, 1, 104, 2, 106, 0, 2, 106, 101, 0, 106, 43, 3, 114, 12, 57, 0, 4, 103, 1, 100, 2,
-			110, 3, 114, 57, 0, 103, 1, 103, 2, 108, 0, 103, 1, 112, 115, 2, 32, 0, 103, 1, 112, 115, 2, 101, 110, 0, 4, 3, 118, 0,
-			1, 18, 73, 2, 103, 0, 1, 108, 2, 115, 0, 1, 114, 2, 12, 0, 1, 114, 2, 18, 74, 101, 0, 1, 114, 2, 103, 101, 108, 115,
-			101, 0, 1, 114, 2, 103, 116, 101, 0, 1, 114, 2, 118, 101, 114, 0, 1, 114, 100, 2, 110, 0, 1, 114, 100, 2, 118, 101, 116, 0,
-			1, 114, 100, 101, 98, 2, 118, 0, 1, 114, 101, 98, 2, 118, 101, 0, 1, 114, 111, 102, 2, 103, 0, 1, 114, 112, 2, 118, 0, 1,
-			115, 2, 103, 0, 2, 100, 100, 0, 4, 1, 114, 2, 109, 101, 114, 3, 118, 12, 0, 2, 100, 101, 0, 95, 1, 115, 0, 103, 1, 114,
-			111, 102, 2, 32, 3, 118, 12, 19, 0, 114, 1, 112, 115, 2, 103, 3, 118, 12, 34, 0, 4, 114, 101, 3, 118, 12, 114, 0, 114, 101,
-			95, 0, 4, 114, 1, 112, 115, 2, 103, 115, 3, 118, 34, 0, 114, 103, 101, 114, 1, 112, 115, 2, 32, 0, 114, 101, 2, 106, 115, 101,
-			3, 118, 34, 35, 0, 114, 101, 1, 115, 2, 100, 110, 105, 3, 118, 34, 109, 0, 4, 103, 1, 109, 115, 2, 32, 115, 105, 103, 3, 118,
-			57, 0, 103, 8, 2, 32, 0, 100, 116, 8, 110, 2, 32, 3, 118, 72, 0, 4, 103, 1, 108, 107, 2, 116, 3, 118, 81, 0, 103, 1,
-			110, 2, 116, 101, 114, 110, 0, 103, 103, 1, 108, 103, 0, 100, 1, 107, 3, 118, 86, 0, 4, 1, 17, 67, 2, 106, 12, 3, 119, 0,
-			1, 114, 2, 18, 74, 0, 1, 114, 2, 103, 0, 1, 114, 2, 118, 0, 1, 114, 101, 100, 110, 111, 98, 2, 118, 0, 1, 114, 114, 97,
-			110, 2, 118, 0, 2, 106, 110, 0, 8, 114, 2, 118, 101, 110, 0, 106, 101, 114, 3, 119, 57, 114, 0, 115, 1, 10, 2, 28, 33, 3,
-			6, 118, 12, 89, 0, 114, 1, 10, 2, 28, 33, 3, 7, 118, 34, 0, 7, 6, 39, 0, 101, 114, 2, 32, 14, 128, 128, 131, 3, 2,
-			114, 0, 101, 114, 110, 101, 2, 32, 14, 128, 128, 133, 3, 2, 114, 50, 13, 0, 101, 114, 110, 101, 115, 2, 32, 14, 128, 128, 134, 3,
-			2, 114, 50, 13, 89, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 13, 50, 0, 101, 116, 2, 32, 14, 128, 128, 131, 3, 13, 86, 0,
-			115, 2, 32, 14, 128, 128, 130, 3, 89, 0, 101, 114, 101, 2, 32, 14, 128, 128, 132, 3, 114, 34, 114, 0, 7, 6, 97, 0, 103, 2,
-			110, 111, 115, 3, 2, 35, 81, 0, 4, 117, 2, 32, 112, 97, 105, 114, 3, 2, 39, 0, 117, 2, 32, 114, 101, 118, 111, 105, 114, 0,
-			1, 108, 2, 107, 114, 3, 2, 110, 0, 2, 109, 112, 3, 2, 112, 0, 102, 8, 114, 101, 100, 2, 32, 3, 4, 110, 0, 4, 1, 100,
-			114, 101, 116, 115, 109, 97, 2, 109, 3, 6, 35, 0, 1, 102, 108, 105, 116, 2, 110, 103, 101, 0, 1, 103, 110, 101, 2, 110, 103, 0,
-			1, 103, 110, 101, 2, 110, 103, 0, 1, 114, 107, 115, 110, 101, 112, 112, 97, 114, 2, 108, 100, 101, 0, 1, 116, 115, 101, 103, 2, 112,
-			111, 0, 8, 108, 97, 103, 2, 107, 115, 101, 0, 8, 108, 111, 112, 2, 107, 0, 8, 112, 109, 111, 107, 2, 107, 116, 0, 8, 114, 97,
-			116, 97, 107, 2, 107, 116, 0, 8, 114, 116, 110, 111, 107, 2, 107, 116, 0, 8, 114, 116, 115, 98, 97, 2, 107, 116, 0, 8, 114, 116,
-			115, 107, 101, 2, 107, 116, 0, 8, 115, 107, 101, 2, 107, 116, 0, 8, 115, 111, 107, 2, 107, 0, 8, 115, 115, 97, 109, 2, 107, 114,
-			101, 0, 8, 116, 101, 2, 112, 101, 0, 8, 116, 110, 105, 2, 107, 116, 0, 8, 116, 110, 111, 107, 2, 107, 116, 0, 8, 116, 112, 97,
-			107, 2, 106, 110, 0, 109, 1, 114, 103, 10, 2, 109, 28, 33, 12, 0, 1, 108, 115, 105, 2, 109, 3, 6, 35, 12, 0, 117, 8, 115,
-			115, 105, 98, 3, 6, 35, 12, 58, 0, 117, 114, 101, 114, 8, 115, 111, 110, 105, 100, 3, 6, 35, 40, 34, 114, 0, 117, 114, 8, 115,
-			111, 110, 105, 100, 3, 6, 35, 40, 114, 0, 110, 103, 101, 108, 111, 1, 108, 101, 104, 99, 105, 109, 3, 6, 35, 50, 75, 108, 55, 39,
-			0, 105, 1, 116, 101, 100, 2, 108, 3, 6, 35, 57, 0, 117, 1, 110, 111, 114, 116, 115, 97, 2, 116, 3, 6, 35, 58, 0, 109, 1,
-			114, 103, 10, 2, 28, 33, 12, 3, 6, 35, 65, 0, 103, 116, 105, 103, 1, 10, 2, 28, 33, 12, 3, 6, 35, 81, 47, 37, 0, 117,
-			120, 1, 103, 3, 6, 39, 0, 105, 115, 101, 3, 6, 109, 12, 89, 13, 0, 105, 1, 116, 110, 111, 99, 2, 110, 3, 6, 109, 57, 0,
-			105, 99, 104, 101, 1, 114, 102, 3, 6, 109, 91, 0, 4, 1, 98, 97, 108, 97, 2, 109, 3, 6, 110, 0, 1, 98, 101, 108, 97, 116,
-			2, 110, 0, 1, 98, 101, 115, 2, 115, 116, 105, 97, 110, 0, 1, 98, 109, 117, 108, 2, 103, 111, 0, 1, 99, 97, 100, 2, 112, 111,
-			0, 1, 99, 105, 112, 2, 115, 115, 111, 0, 1, 100, 97, 107, 2, 118, 101, 114, 0, 1, 100, 101, 112, 112, 117, 115, 2, 115, 0, 1,
-			100, 114, 101, 100, 110, 117, 2, 110, 105, 103, 0, 1, 100, 114, 111, 118, 104, 2, 110, 0, 1, 100, 117, 97, 108, 2, 110, 117, 109, 0,
-			1, 102, 110, 105, 2, 109, 0, 1, 103, 114, 111, 2, 115, 0, 1, 104, 97, 98, 2, 109, 97, 0, 1, 106, 121, 112, 2, 109, 97, 0,
-			1, 107, 115, 108, 105, 116, 2, 100, 101, 0, 1, 108, 97, 2, 115, 107, 0, 1, 108, 97, 112, 2, 118, 101, 114, 12, 0, 1, 108, 105,
-			112, 2, 116, 117, 115, 0, 1, 108, 111, 122, 0, 1, 108, 115, 111, 103, 117, 106, 2, 118, 0, 1, 108, 116, 97, 2, 110, 116, 105, 115,
-			0, 1, 109, 97, 108, 97, 115, 2, 110, 100, 101, 114, 0, 1, 109, 101, 116, 97, 117, 103, 2, 108, 0, 1, 109, 105, 114, 103, 2, 115,
-			115, 101, 0, 1, 109, 109, 111, 107, 2, 110, 100, 0, 1, 110, 97, 98, 2, 110, 0, 1, 110, 105, 100, 110, 97, 107, 115, 2, 118, 0,
-			1, 110, 105, 104, 2, 110, 0, 1, 112, 111, 116, 2, 115, 0, 1, 114, 101, 118, 111, 2, 108, 116, 0, 1, 115, 101, 109, 114, 97, 112,
-			2, 110, 0, 1, 115, 108, 97, 98, 2, 109, 105, 0, 1, 116, 111, 103, 111, 98, 0, 1, 116, 115, 97, 107, 2, 110, 106, 101, 0, 1,
-			116, 115, 97, 116, 101, 109, 2, 115, 101, 0, 1, 116, 115, 107, 101, 2, 115, 0, 1, 116, 115, 110, 97, 114, 111, 102, 2, 108, 116, 0,
-			1, 116, 115, 112, 111, 2, 110, 100, 101, 108, 115, 101, 0, 1, 116, 115, 114, 101, 2, 116, 110, 105, 110, 103, 0, 1, 116, 117, 112, 115,
-			105, 100, 2, 116, 115, 0, 1, 118, 2, 110, 108, 105, 103, 0, 1, 118, 97, 104, 2, 110, 97, 0, 1, 118, 97, 104, 2, 110, 110, 97,
-			0, 1, 122, 121, 98, 2, 110, 115, 32, 0, 2, 115, 109, 101, 0, 8, 100, 100, 110, 101, 2, 32, 0, 8, 100, 101, 109, 2, 108, 106,
-			101, 0, 8, 101, 116, 2, 116, 101, 114, 0, 8, 103, 97, 112, 111, 114, 112, 2, 110, 100, 0, 8, 105, 100, 110, 105, 2, 110, 97, 0,
-			8, 105, 115, 117, 116, 110, 101, 2, 115, 0, 8, 107, 97, 107, 2, 111, 0, 8, 107, 97, 109, 2, 98, 0, 8, 107, 105, 104, 99, 2,
-			110, 101, 0, 8, 107, 105, 116, 97, 118, 2, 110, 0, 8, 107, 108, 97, 2, 108, 105, 0, 8, 107, 110, 111, 107, 2, 118, 0, 8, 108,
-			107, 101, 114, 2, 109, 101, 0, 8, 108, 107, 110, 101, 2, 118, 101, 12, 0, 8, 108, 115, 105, 116, 97, 114, 98, 2, 118, 0, 8, 109,
-			105, 2, 109, 0, 8, 109, 105, 114, 112, 2, 108, 0, 8, 110, 97, 99, 2, 100, 105, 101, 114, 0, 8, 110, 105, 109, 111, 100, 2, 110,
-			0, 8, 110, 121, 100, 2, 109, 111, 0, 8, 111, 2, 115, 101, 0, 8, 112, 97, 2, 99, 104, 0, 8, 112, 109, 105, 104, 99, 2, 110,
-			0, 8, 115, 97, 102, 2, 110, 0, 8, 115, 107, 101, 2, 109, 12, 0, 8, 116, 97, 98, 2, 108, 106, 101, 0, 8, 116, 101, 100, 2,
-			108, 106, 101, 0, 8, 116, 107, 111, 2, 118, 0, 8, 118, 97, 114, 97, 107, 2, 110, 101, 0, 100, 1, 107, 115, 117, 98, 2, 115, 0,
-			100, 1, 108, 97, 112, 2, 115, 0, 100, 8, 108, 106, 101, 115, 2, 115, 0, 103, 1, 115, 101, 107, 107, 97, 110, 115, 2, 108, 105, 103,
-			0, 4, 1, 103, 101, 114, 111, 2, 110, 111, 3, 6, 110, 12, 0, 1, 108, 105, 109, 2, 110, 111, 0, 1, 116, 114, 97, 107, 2, 103,
-			111, 0, 100, 101, 1, 10, 2, 28, 33, 3, 6, 110, 12, 86, 13, 0, 100, 101, 1, 10, 2, 114, 28, 33, 3, 6, 110, 12, 86, 114,
-			0, 116, 1, 10, 2, 28, 33, 3, 6, 110, 47, 0, 103, 110, 101, 1, 112, 109, 97, 104, 99, 3, 6, 110, 50, 57, 13, 0, 110, 100,
-			101, 1, 98, 97, 114, 116, 110, 111, 107, 3, 6, 110, 50, 72, 108, 0, 110, 115, 1, 10, 2, 28, 33, 3, 6, 110, 50, 89, 0, 4,
-			98, 1, 10, 2, 101, 108, 28, 33, 3, 6, 110, 71, 0, 98, 1, 10, 2, 108, 101, 28, 33, 0, 4, 100, 1, 110, 114, 111, 116, 2,
-			111, 3, 6, 110, 72, 0, 100, 1, 118, 101, 110, 2, 97, 0, 118, 101, 114, 97, 108, 1, 110, 97, 99, 3, 6, 110, 84, 108, 34, 108,
-			55, 0, 118, 101, 114, 8, 108, 107, 110, 101, 3, 6, 110, 84, 114, 0, 4, 1, 98, 110, 101, 98, 165, 195, 2, 114, 105, 110, 103, 3,
-			6, 112, 0, 1, 102, 97, 115, 2, 114, 105, 0, 1, 102, 114, 101, 2, 114, 0, 1, 112, 115, 101, 98, 2, 114, 105, 110, 103, 0, 1,
-			114, 98, 105, 118, 2, 116, 111, 0, 1, 114, 101, 109, 111, 111, 98, 2, 110, 103, 0, 1, 114, 105, 103, 2, 102, 0, 1, 114, 105, 109,
-			2, 107, 0, 1, 114, 108, 165, 195, 107, 2, 98, 105, 0, 1, 114, 116, 115, 97, 112, 2, 109, 105, 0, 1, 118, 97, 104, 2, 114, 116,
-			105, 0, 1, 118, 97, 107, 115, 2, 110, 107, 0, 1, 118, 114, 111, 102, 2, 114, 105, 110, 103, 0, 8, 98, 101, 108, 108, 101, 104, 2,
-			114, 100, 0, 8, 98, 109, 111, 108, 2, 114, 100, 0, 8, 98, 111, 103, 110, 111, 108, 2, 114, 100, 0, 8, 103, 108, 117, 98, 2, 114,
-			0, 8, 104, 97, 115, 2, 114, 97, 0, 8, 105, 108, 108, 105, 109, 2, 114, 0, 8, 105, 108, 108, 105, 114, 116, 2, 114, 0, 8, 108,
-			97, 2, 114, 109, 0, 8, 108, 97, 109, 2, 114, 105, 97, 0, 8, 108, 117, 111, 102, 2, 114, 100, 0, 8, 108, 117, 111, 112, 2, 114,
-			100, 0, 8, 110, 111, 109, 2, 114, 107, 0, 8, 111, 105, 100, 97, 114, 2, 107, 116, 105, 0, 8, 114, 97, 2, 98, 101, 114, 0, 8,
-			114, 97, 98, 2, 107, 0, 8, 114, 100, 97, 109, 2, 115, 0, 8, 114, 114, 117, 104, 0, 8, 115, 97, 104, 2, 114, 100, 0, 8, 115,
-			101, 114, 112, 109, 105, 2, 114, 105, 111, 0, 8, 115, 110, 97, 109, 2, 114, 100, 0, 8, 116, 115, 97, 98, 2, 114, 100, 0, 110, 1,
-			114, 10, 2, 110, 101, 28, 34, 12, 0, 8, 111, 108, 107, 2, 107, 12, 3, 6, 112, 12, 0, 100, 101, 1, 114, 10, 2, 28, 33, 3,
-			6, 112, 12, 86, 13, 0, 100, 101, 1, 114, 10, 2, 114, 28, 33, 3, 6, 112, 12, 86, 114, 0, 116, 1, 114, 10, 2, 28, 33, 3,
-			6, 112, 47, 0, 110, 1, 114, 10, 2, 28, 34, 12, 3, 6, 112, 50, 0, 110, 116, 1, 114, 10, 2, 28, 33, 3, 6, 112, 50, 47,
-			0, 110, 115, 1, 114, 10, 2, 28, 33, 3, 6, 112, 50, 89, 0, 4, 108, 1, 114, 2, 28, 33, 12, 12, 3, 6, 112, 55, 0, 108,
-			1, 114, 10, 2, 101, 32, 28, 33, 12, 0, 118, 1, 104, 110, 101, 98, 184, 195, 107, 2, 110, 3, 6, 112, 58, 0, 110, 116, 1, 114,
-			117, 97, 116, 115, 101, 114, 3, 6, 112, 68, 0, 4, 110, 99, 101, 1, 10, 2, 28, 33, 3, 6, 112, 68, 89, 13, 0, 110, 99, 104,
-			101, 1, 10, 2, 28, 33, 0, 110, 99, 101, 1, 10, 2, 114, 28, 33, 3, 6, 112, 68, 89, 114, 0, 98, 1, 114, 10, 2, 101, 108,
-			28, 33, 3, 6, 112, 71, 0, 114, 98, 101, 114, 8, 98, 97, 114, 3, 6, 112, 71, 114, 0, 100, 111, 1, 114, 111, 108, 111, 99, 3,
-			6, 112, 72, 39, 0, 4, 8, 105, 107, 121, 115, 112, 2, 116, 3, 7, 110, 0, 116, 1, 10, 2, 116, 28, 33, 0, 110, 1, 10, 2,
-			28, 34, 12, 3, 7, 110, 50, 0, 110, 116, 1, 10, 2, 28, 33, 3, 7, 110, 50, 47, 0, 4, 108, 1, 10, 2, 28, 33, 12, 3,
-			7, 110, 55, 0, 108, 1, 10, 2, 101, 32, 28, 33, 12, 0, 1, 108, 114, 111, 102, 2, 103, 116, 32, 3, 7, 112, 0, 114, 1, 10,
-			2, 28, 33, 3, 7, 112, 34, 0, 110, 99, 101, 1, 121, 111, 118, 2, 28, 33, 3, 7, 112, 68, 89, 0, 102, 1, 114, 111, 118, 104,
-			3, 8, 4, 110, 0, 4, 8, 110, 97, 98, 101, 107, 105, 3, 8, 110, 0, 8, 110, 97, 100, 110, 97, 98, 0, 8, 110, 97, 103, 114,
-			111, 109, 97, 116, 97, 102, 0, 8, 110, 97, 107, 114, 97, 0, 8, 110, 97, 117, 104, 105, 114, 97, 109, 0, 8, 110, 97, 118, 114, 105,
-			110, 0, 8, 110, 97, 119, 115, 116, 111, 17, 66, 0, 8, 110, 97, 121, 117, 103, 0, 8, 110, 101, 114, 97, 0, 8, 110, 101, 122, 105,
-			97, 109, 0, 8, 110, 105, 103, 110, 97, 0, 8, 110, 105, 108, 117, 107, 115, 97, 109, 0, 8, 110, 105, 110, 105, 109, 101, 102, 0, 8,
-			110, 105, 114, 97, 107, 111, 0, 8, 110, 105, 114, 97, 109, 0, 8, 110, 105, 114, 97, 115, 116, 0, 8, 110, 105, 114, 97, 122, 0, 8,
-			110, 105, 114, 101, 108, 108, 97, 98, 0, 8, 110, 105, 115, 116, 101, 114, 0, 8, 110, 105, 116, 110, 101, 103, 114, 97, 0, 8, 110, 105,
-			116, 114, 101, 99, 110, 111, 107, 0, 8, 110, 105, 116, 115, 166, 195, 108, 97, 112, 0, 8, 110, 105, 118, 111, 103, 101, 99, 114, 101, 104,
-			0, 8, 110, 110, 97, 105, 115, 111, 104, 0, 8, 110, 110, 111, 100, 97, 109, 0, 8, 110, 110, 111, 100, 97, 109, 105, 114, 112, 0, 8,
-			110, 111, 109, 111, 112, 120, 111, 99, 0, 8, 110, 111, 114, 111, 107, 0, 108, 1, 110, 97, 2, 102, 97, 98, 101, 116, 3, 8, 110, 55,
-			0, 1, 102, 101, 98, 2, 114, 105, 110, 103, 3, 16, 112, 0, 118, 101, 8, 100, 3, 21, 0, 4, 1, 104, 2, 99, 105, 101, 110, 100,
-			97, 3, 21, 101, 115, 0, 108, 101, 106, 97, 110, 100, 114, 111, 0, 4, 1, 17, 67, 2, 18, 71, 11, 3, 35, 0, 1, 17, 67, 2,
-			18, 75, 0, 1, 17, 67, 2, 18, 75, 18, 69, 12, 12, 0, 1, 17, 67, 2, 18, 75, 101, 0, 1, 17, 67, 2, 99, 107, 0, 1,
-			17, 67, 2, 109, 12, 0, 1, 17, 67, 2, 110, 18, 75, 18, 69, 12, 12, 0, 1, 17, 67, 2, 114, 18, 76, 0, 1, 17, 67, 2,
-			114, 114, 0, 1, 17, 67, 2, 120, 12, 0, 1, 18, 73, 2, 109, 0, 1, 18, 74, 2, 106, 0, 1, 18, 75, 2, 112, 12, 0, 1,
-			98, 2, 106, 101, 114, 0, 1, 100, 2, 102, 110, 0, 1, 100, 2, 103, 21, 12, 0, 1, 100, 2, 103, 115, 21, 0, 1, 102, 2, 118,
-			111, 12, 0, 1, 104, 2, 18, 66, 0, 1, 104, 2, 106, 0, 1, 104, 2, 106, 12, 12, 0, 1, 104, 2, 112, 0, 1, 104, 99, 2,
-			110, 0, 1, 105, 108, 108, 105, 119, 2, 109, 0, 1, 106, 2, 112, 112, 0, 1, 106, 2, 112, 115, 0, 1, 107, 2, 106, 0, 1, 107,
-			2, 109, 0, 1, 107, 2, 109, 117, 102, 108, 12, 0, 1, 107, 2, 112, 115, 0, 1, 107, 115, 2, 102, 12, 0, 1, 108, 2, 98, 32,
-			12, 0, 1, 108, 2, 98, 98, 0, 1, 108, 2, 112, 12, 0, 1, 108, 107, 2, 18, 71, 0, 1, 108, 115, 2, 18, 71, 0, 1, 108,
-			115, 2, 110, 103, 101, 12, 0, 1, 108, 115, 118, 105, 108, 2, 110, 103, 12, 0, 1, 109, 105, 108, 107, 2, 107, 115, 0, 1, 112, 2,
-			112, 114, 105, 12, 0, 1, 112, 115, 2, 110, 107, 117, 108, 101, 114, 0, 1, 114, 2, 18, 73, 0, 1, 114, 2, 115, 101, 0, 1, 114,
-			2, 116, 0, 1, 114, 2, 118, 0, 1, 114, 107, 115, 2, 108, 0, 1, 115, 2, 110, 103, 12, 0, 1, 115, 2, 120, 0, 1, 116, 2,
-			98, 116, 0, 1, 116, 2, 112, 0, 1, 118, 2, 99, 99, 0, 1, 118, 2, 102, 12, 12, 0, 1, 118, 2, 106, 0, 2, 18, 66, 12,
-			12, 0, 2, 18, 66, 101, 12, 12, 0, 2, 98, 17, 67, 105, 0, 2, 98, 110, 111, 114, 109, 0, 2, 102, 17, 67, 12, 0, 2, 109,
-			101, 114, 105, 107, 97, 110, 0, 2, 109, 109, 12, 0, 2, 109, 115, 0, 2, 109, 117, 108, 101, 116, 0, 2, 112, 111, 116, 101, 0, 2,
-			112, 112, 97, 114, 0, 2, 112, 112, 101, 108, 115, 105, 110, 0, 2, 112, 112, 101, 116, 105, 116, 0, 2, 114, 114, 101, 115, 116, 0, 8,
-			2, 108, 100, 114, 105, 103, 0, 8, 2, 110, 100, 101, 114, 0, 8, 100, 2, 109, 32, 0, 8, 100, 2, 109, 109, 0, 114, 101, 8, 98,
-			2, 116, 3, 35, 34, 6, 111, 0, 114, 97, 103, 100, 1, 109, 115, 3, 35, 34, 6, 112, 58, 72, 0, 4, 118, 1, 103, 2, 116, 121,
-			118, 3, 35, 40, 0, 118, 1, 104, 32, 101, 100, 184, 195, 0, 118, 101, 114, 116, 1, 106, 3, 35, 40, 34, 47, 0, 116, 116, 101, 110,
-			116, 105, 111, 110, 3, 35, 47, 6, 109, 50, 91, 13, 50, 0, 112, 101, 103, 195, 184, 106, 101, 1, 112, 3, 35, 48, 13, 81, 6, 114,
-			57, 108, 0, 103, 1, 18, 74, 2, 116, 3, 35, 49, 0, 99, 99, 97, 114, 97, 116, 1, 98, 3, 35, 49, 35, 34, 6, 35, 0, 110,
-			100, 97, 1, 114, 2, 108, 3, 35, 50, 72, 20, 115, 0, 4, 110, 103, 1, 109, 2, 111, 3, 35, 50, 81, 0, 110, 103, 2, 117, 108,
-			12, 12, 0, 110, 103, 8, 2, 111, 108, 0, 4, 105, 1, 99, 2, 114, 111, 3, 35, 57, 0, 105, 8, 110, 105, 115, 0, 121, 1, 109,
-			2, 97, 0, 121, 1, 117, 103, 0, 105, 1, 110, 2, 114, 111, 98, 105, 3, 35, 57, 6, 0, 105, 114, 111, 8, 107, 3, 35, 57, 34,
-			39, 0, 121, 114, 101, 117, 116, 104, 1, 98, 3, 35, 57, 51, 6, 114, 57, 47, 0, 121, 97, 116, 111, 108, 108, 97, 104, 3, 35, 57,
-			110, 47, 6, 114, 55, 110, 0, 121, 101, 114, 1, 98, 3, 35, 57, 114, 0, 4, 117, 2, 12, 12, 3, 35, 58, 0, 119, 2, 25, 0,
-			118, 102, 108, 97, 98, 1, 103, 3, 35, 58, 83, 55, 110, 71, 0, 4, 110, 2, 99, 105, 101, 110, 3, 35, 68, 0, 110, 103, 2, 114,
-			101, 0, 110, 103, 8, 2, 101, 17, 67, 0, 98, 97, 114, 101, 116, 1, 107, 3, 35, 71, 35, 34, 6, 109, 0, 98, 101, 114, 110, 97,
-			107, 1, 116, 3, 35, 71, 114, 50, 6, 35, 49, 0, 103, 103, 105, 111, 114, 101, 1, 109, 3, 35, 75, 6, 39, 12, 53, 36, 0, 103,
-			1, 109, 2, 97, 115, 105, 3, 35, 81, 0, 103, 97, 115, 97, 107, 105, 1, 110, 3, 35, 81, 110, 89, 6, 35, 49, 37, 0, 102, 116,
-			101, 114, 115, 104, 97, 118, 101, 3, 35, 83, 47, 114, 91, 109, 57, 84, 0, 122, 122, 105, 1, 114, 3, 35, 91, 57, 0, 99, 104, 1,
-			98, 3, 35, 101, 0, 104, 97, 8, 2, 32, 3, 35, 107, 6, 35, 0, 105, 1, 116, 110, 117, 111, 109, 2, 110, 3, 36, 0, 4, 1,
-			102, 114, 101, 116, 110, 105, 2, 99, 101, 3, 36, 37, 0, 1, 109, 101, 99, 97, 112, 2, 107, 0, 98, 121, 1, 98, 2, 12, 3, 36,
-			37, 71, 37, 0, 99, 101, 1, 112, 3, 36, 37, 89, 0, 4, 117, 1, 104, 99, 2, 102, 3, 39, 0, 117, 1, 104, 99, 2, 118, 105,
-			110, 0, 117, 1, 115, 2, 116, 101, 114, 110, 101, 0, 117, 1, 116, 115, 101, 114, 2, 114, 0, 117, 2, 32, 110, 97, 116, 117, 114, 101,
-			108, 0, 117, 120, 8, 102, 0, 117, 103, 117, 105, 110, 1, 103, 3, 39, 81, 6, 110, 68, 0, 4, 1, 114, 2, 99, 101, 114, 98, 97,
-			110, 101, 3, 109, 0, 1, 114, 2, 99, 101, 114, 98, 105, 108, 0, 1, 114, 2, 99, 101, 114, 99, 121, 107, 0, 1, 114, 2, 99, 101,
-			114, 107, 195, 184, 114, 0, 1, 114, 2, 99, 101, 114, 118, 111, 103, 110, 0, 101, 2, 114, 111, 0, 105, 2, 109, 97, 98, 101, 108, 0,
-			105, 114, 101, 1, 108, 99, 3, 109, 12, 34, 0, 105, 114, 99, 111, 110, 100, 105, 116, 105, 111, 110, 3, 109, 12, 34, 49, 114, 50, 72,
-			37, 12, 91, 13, 50, 0, 105, 114, 3, 109, 34, 0, 105, 100, 115, 3, 109, 37, 72, 89, 0, 4, 1, 104, 2, 115, 116, 105, 110, 103,
-			3, 109, 57, 0, 1, 108, 2, 115, 101, 114, 101, 110, 0, 1, 108, 2, 115, 101, 114, 110, 101, 115, 0, 1, 108, 2, 115, 101, 114, 112,
-			114, 0, 1, 108, 2, 115, 101, 114, 115, 116, 0, 1, 108, 32, 110, 101, 2, 115, 101, 114, 0, 1, 109, 107, 111, 111, 98, 2, 107, 101,
-			114, 0, 1, 114, 2, 116, 105, 110, 103, 0, 121, 1, 100, 0, 121, 2, 25, 0, 121, 8, 98, 2, 32, 0, 116, 101, 1, 109, 121, 97,
-			108, 112, 3, 109, 57, 47, 0, 116, 105, 101, 1, 107, 3, 109, 57, 47, 37, 0, 98, 101, 8, 98, 2, 32, 3, 109, 57, 48, 0, 99,
-			111, 8, 119, 3, 109, 57, 49, 39, 58, 0, 99, 111, 110, 1, 98, 2, 12, 3, 109, 57, 49, 114, 50, 0, 121, 110, 101, 1, 112, 3,
-			109, 57, 50, 0, 4, 105, 108, 1, 116, 107, 99, 111, 99, 3, 109, 57, 55, 0, 108, 101, 1, 32, 114, 101, 103, 110, 105, 103, 0, 109,
-			121, 8, 3, 109, 57, 65, 37, 0, 103, 101, 110, 99, 121, 3, 109, 57, 75, 13, 50, 89, 37, 0, 103, 97, 115, 8, 118, 3, 109, 57,
-			81, 13, 89, 0, 107, 101, 115, 1, 108, 102, 110, 114, 111, 99, 3, 109, 57, 81, 89, 0, 118, 101, 114, 121, 3, 109, 57, 84, 34, 37,
-			0, 121, 101, 115, 1, 17, 67, 3, 109, 57, 89, 0, 116, 105, 111, 110, 1, 116, 115, 2, 99, 97, 114, 3, 109, 57, 91, 108, 50, 0,
-			104, 97, 98, 8, 3, 109, 57, 107, 110, 71, 0, 112, 101, 1, 114, 103, 3, 109, 71, 0, 4, 3, 110, 0, 1, 17, 67, 2, 17, 67,
-			11, 0, 1, 17, 67, 2, 18, 75, 18, 69, 0, 1, 17, 67, 2, 109, 105, 12, 0, 1, 17, 67, 2, 109, 195, 166, 12, 0, 1, 18,
-			67, 2, 18, 67, 101, 0, 1, 18, 67, 2, 18, 67, 108, 101, 0, 1, 18, 71, 2, 110, 0, 1, 18, 73, 2, 18, 75, 18, 69, 0,
-			1, 18, 73, 2, 118, 0, 1, 18, 74, 2, 108, 100, 0, 1, 18, 75, 2, 109, 101, 12, 0, 1, 18, 75, 2, 112, 18, 69, 12, 0,
-			1, 21, 2, 107, 114, 18, 69, 12, 0, 1, 98, 2, 103, 97, 103, 101, 12, 12, 0, 1, 98, 2, 118, 105, 97, 110, 12, 0, 1, 98,
-			32, 103, 105, 98, 2, 110, 103, 0, 1, 98, 114, 105, 97, 2, 103, 0, 1, 99, 2, 109, 112, 12, 0, 1, 100, 2, 109, 18, 76, 12,
-			0, 1, 100, 100, 2, 103, 12, 0, 1, 100, 108, 2, 107, 0, 1, 100, 108, 101, 109, 109, 97, 103, 2, 103, 115, 0, 1, 101, 0, 1,
-			101, 2, 114, 18, 69, 12, 0, 1, 101, 114, 2, 103, 12, 0, 1, 102, 2, 18, 67, 114, 18, 69, 0, 1, 102, 2, 18, 74, 0, 1,
-			102, 2, 99, 18, 76, 0, 1, 102, 2, 110, 107, 108, 117, 98, 12, 0, 1, 102, 111, 115, 0, 1, 103, 2, 98, 114, 105, 101, 108, 0,
-			1, 103, 2, 110, 103, 115, 116, 101, 114, 12, 0, 1, 103, 105, 108, 0, 1, 104, 2, 99, 107, 12, 0, 1, 104, 2, 109, 98, 117, 114,
-			103, 101, 114, 0, 1, 104, 2, 110, 0, 1, 104, 2, 110, 107, 97, 116, 0, 1, 104, 2, 110, 107, 195, 184, 110, 12, 12, 0, 1, 104,
-			2, 112, 112, 17, 65, 0, 1, 104, 101, 98, 2, 103, 0, 1, 104, 115, 2, 109, 18, 76, 0, 1, 104, 116, 2, 110, 107, 115, 0, 1,
-			105, 100, 2, 18, 66, 12, 0, 1, 106, 2, 109, 101, 110, 0, 1, 107, 2, 12, 0, 1, 107, 2, 112, 18, 76, 12, 0, 1, 107, 2,
-			112, 114, 101, 12, 0, 1, 107, 2, 112, 114, 105, 110, 103, 0, 1, 107, 105, 116, 111, 107, 114, 97, 110, 0, 1, 107, 115, 2, 18, 71,
-			12, 0, 1, 108, 2, 98, 101, 0, 1, 108, 2, 109, 17, 65, 12, 0, 1, 108, 2, 110, 0, 1, 108, 2, 118, 101, 110, 100, 101, 108,
-			0, 1, 108, 97, 109, 2, 18, 66, 97, 0, 1, 108, 98, 2, 99, 107, 0, 1, 108, 98, 2, 100, 0, 1, 108, 102, 2, 98, 32, 12,
-			0, 1, 108, 111, 99, 0, 1, 108, 112, 2, 99, 101, 0, 1, 108, 112, 2, 107, 97, 0, 1, 108, 115, 2, 110, 103, 12, 0, 1, 108,
-			115, 105, 2, 109, 105, 0, 1, 109, 2, 106, 111, 12, 0, 1, 109, 2, 107, 97, 0, 1, 109, 105, 108, 107, 0, 1, 109, 105, 114, 112,
-			0, 1, 109, 114, 105, 102, 0, 1, 109, 114, 105, 102, 2, 12, 0, 1, 109, 115, 2, 99, 107, 0, 1, 110, 2, 112, 97, 108, 109, 0,
-			1, 110, 97, 112, 2, 109, 97, 0, 1, 110, 103, 2, 118, 110, 101, 0, 1, 110, 105, 103, 97, 118, 0, 1, 110, 115, 2, 99, 107, 0,
-			1, 112, 2, 103, 18, 76, 12, 0, 1, 112, 2, 103, 110, 12, 0, 1, 112, 2, 112, 105, 0, 1, 112, 2, 118, 12, 0, 1, 114, 2,
-			110, 99, 104, 0, 1, 114, 2, 110, 115, 105, 103, 116, 0, 1, 114, 99, 2, 99, 107, 12, 0, 1, 114, 101, 116, 102, 101, 2, 98, 0,
-			1, 114, 111, 102, 2, 110, 0, 1, 115, 2, 98, 98, 97, 116, 0, 1, 115, 2, 103, 12, 0, 1, 115, 2, 103, 115, 97, 110, 12, 12,
-			0, 1, 115, 2, 103, 115, 98, 101, 104, 97, 110, 100, 108, 12, 12, 0, 1, 115, 2, 103, 115, 109, 97, 12, 12, 0, 1, 115, 2, 103,
-			115, 111, 109, 12, 12, 0, 1, 115, 2, 109, 97, 110, 116, 0, 1, 115, 2, 109, 117, 101, 108, 0, 1, 115, 107, 101, 10, 2, 109, 0,
-			1, 116, 2, 110, 100, 0, 1, 116, 2, 112, 18, 76, 0, 1, 116, 2, 112, 105, 0, 1, 116, 115, 2, 99, 99, 97, 116, 111, 0, 1,
-			116, 115, 2, 102, 102, 97, 103, 101, 0, 1, 116, 115, 2, 107, 97, 0, 1, 116, 115, 101, 116, 2, 109, 0, 1, 118, 2, 110, 100, 114,
-			195, 184, 114, 0, 1, 118, 108, 101, 115, 2, 110, 103, 105, 118, 0, 1, 118, 115, 2, 98, 0, 1, 120, 97, 116, 0, 1, 122, 122, 105,
-			112, 0, 2, 18, 66, 18, 69, 12, 12, 0, 2, 98, 98, 0, 2, 100, 114, 101, 115, 115, 12, 0, 2, 100, 118, 97, 114, 0, 2, 102,
-			102, 117, 116, 97, 103, 101, 0, 2, 102, 102, 195, 166, 114, 101, 12, 0, 2, 102, 115, 116, 101, 100, 12, 0, 2, 103, 103, 114, 101, 115,
-			12, 12, 0, 2, 107, 11, 18, 69, 12, 0, 2, 107, 97, 12, 12, 0, 2, 107, 97, 100, 101, 109, 12, 12, 0, 2, 107, 118, 17, 65,
-			12, 0, 2, 108, 100, 101, 0, 2, 108, 116, 0, 2, 110, 103, 97, 118, 12, 12, 0, 2, 110, 103, 195, 165, 12, 12, 0, 2, 110, 104,
-			111, 12, 12, 0, 2, 110, 107, 108, 97, 103, 12, 12, 0, 2, 110, 108, 195, 166, 103, 12, 0, 2, 110, 115, 116, 0, 2, 110, 115, 116,
-			114, 101, 110, 103, 12, 0, 2, 110, 116, 97, 108, 12, 0, 2, 110, 118, 101, 110, 100, 12, 0, 2, 116, 116, 97, 99, 104, 12, 0, 8,
-			2, 18, 66, 18, 69, 12, 12, 0, 8, 2, 102, 102, 101, 107, 116, 12, 0, 8, 2, 110, 100, 101, 110, 0, 8, 2, 110, 100, 101, 116,
-			0, 100, 1, 108, 106, 101, 115, 2, 115, 0, 103, 1, 100, 101, 114, 102, 2, 115, 0, 103, 1, 100, 110, 97, 109, 2, 115, 0, 103, 1,
-			100, 110, 184, 195, 115, 2, 115, 0, 103, 1, 100, 114, 101, 118, 104, 0, 103, 1, 100, 114, 184, 195, 108, 2, 115, 0, 103, 1, 100, 115,
-			110, 111, 2, 115, 0, 103, 1, 100, 115, 114, 105, 116, 2, 115, 0, 103, 1, 100, 115, 114, 111, 116, 2, 115, 0, 103, 2, 103, 114, 101,
-			103, 97, 116, 0, 104, 1, 104, 115, 0, 114, 1, 107, 2, 108, 101, 110, 101, 0, 114, 1, 107, 21, 2, 108, 0, 114, 1, 108, 110, 101,
-			118, 111, 100, 2, 115, 0, 118, 1, 104, 2, 32, 0, 4, 1, 107, 2, 106, 97, 107, 3, 110, 6, 0, 1, 116, 97, 107, 2, 112, 117,
-			108, 116, 0, 105, 1, 107, 2, 110, 3, 110, 6, 37, 12, 0, 4, 1, 17, 67, 2, 17, 67, 101, 3, 110, 12, 0, 1, 17, 67, 2,
-			110, 101, 0, 1, 18, 73, 2, 98, 18, 76, 0, 1, 18, 73, 2, 100, 0, 1, 18, 74, 2, 18, 67, 101, 0, 1, 18, 74, 2, 108,
-			0, 1, 103, 2, 118, 0, 1, 106, 116, 2, 32, 0, 1, 108, 115, 2, 118, 0, 1, 112, 115, 2, 109, 0, 1, 112, 115, 2, 110, 107,
-			105, 110, 103, 0, 1, 116, 2, 108, 17, 65, 0, 8, 2, 101, 32, 0, 110, 110, 101, 115, 8, 99, 3, 110, 12, 50, 12, 0, 118, 1,
-			108, 2, 101, 116, 3, 110, 12, 84, 0, 118, 101, 1, 108, 2, 109, 101, 110, 116, 3, 110, 13, 0, 114, 97, 112, 97, 104, 111, 101, 3,
-			110, 34, 6, 110, 48, 110, 107, 113, 58, 0, 4, 114, 114, 121, 1, 98, 3, 110, 34, 37, 0, 114, 121, 1, 109, 32, 121, 100, 111, 111,
-			108, 98, 0, 116, 104, 101, 110, 3, 110, 47, 6, 36, 50, 0, 116, 116, 114, 105, 98, 117, 116, 105, 111, 110, 8, 3, 110, 47, 51, 37,
-			71, 40, 91, 6, 39, 50, 0, 116, 116, 114, 105, 98, 117, 116, 105, 111, 110, 3, 110, 47, 51, 37, 71, 40, 91, 39, 50, 0, 116, 97,
-			107, 111, 109, 98, 1, 107, 3, 110, 47, 110, 49, 6, 39, 65, 71, 0, 4, 112, 101, 1, 110, 97, 107, 3, 110, 48, 6, 36, 0, 112,
-			195, 169, 1, 110, 97, 107, 0, 112, 112, 101, 97, 108, 3, 110, 48, 6, 37, 55, 0, 112, 111, 108, 101, 111, 110, 1, 110, 3, 110, 48,
-			6, 39, 55, 57, 114, 50, 0, 107, 107, 111, 114, 100, 101, 111, 110, 3, 110, 49, 6, 114, 12, 72, 36, 114, 50, 0, 107, 114, 121, 108,
-			3, 110, 49, 34, 6, 116, 55, 0, 107, 117, 108, 116, 101, 116, 8, 102, 3, 110, 49, 40, 55, 47, 6, 36, 47, 0, 99, 116, 105, 111,
-			110, 3, 110, 49, 91, 57, 13, 50, 0, 110, 100, 114, 101, 97, 8, 3, 110, 50, 72, 34, 6, 36, 110, 0, 110, 100, 114, 101, 119, 3,
-			110, 50, 72, 34, 40, 0, 110, 100, 114, 101, 119, 115, 3, 110, 50, 72, 51, 40, 12, 89, 0, 110, 100, 111, 8, 114, 98, 3, 110, 50,
-			72, 113, 58, 0, 110, 100, 111, 108, 112, 104, 1, 114, 3, 110, 50, 72, 114, 55, 83, 0, 110, 100, 101, 114, 115, 111, 110, 8, 3, 110,
-			50, 72, 114, 89, 114, 50, 0, 110, 103, 101, 108, 97, 8, 3, 110, 50, 75, 13, 55, 110, 0, 110, 103, 105, 101, 8, 3, 110, 50, 75,
-			37, 0, 110, 103, 101, 108, 101, 115, 3, 110, 50, 75, 108, 55, 109, 89, 0, 4, 110, 103, 2, 114, 101, 98, 3, 110, 50, 81, 0, 110,
-			103, 2, 114, 105, 12, 0, 110, 103, 111, 111, 110, 1, 114, 3, 110, 50, 81, 6, 40, 12, 50, 0, 110, 104, 97, 116, 116, 97, 110, 1,
-			109, 3, 110, 50, 107, 6, 110, 47, 13, 50, 0, 114, 114, 111, 119, 3, 110, 51, 39, 40, 0, 108, 1, 10, 2, 105, 115, 116, 28, 33,
-			12, 3, 110, 55, 0, 4, 108, 1, 10, 2, 105, 115, 109, 28, 33, 12, 3, 110, 55, 6, 0, 108, 1, 110, 97, 2, 121, 12, 0, 108,
-			97, 106, 1, 109, 3, 110, 55, 6, 35, 57, 0, 4, 108, 108, 105, 101, 8, 2, 32, 3, 110, 55, 37, 0, 108, 108, 121, 1, 115, 0,
-			108, 100, 101, 116, 104, 97, 3, 110, 55, 72, 6, 37, 87, 110, 0, 108, 100, 101, 104, 121, 100, 1, 109, 114, 111, 102, 3, 110, 55, 72,
-			108, 107, 6, 116, 86, 0, 108, 97, 107, 108, 97, 118, 1, 98, 2, 97, 3, 110, 55, 110, 49, 55, 6, 110, 12, 84, 0, 108, 97, 99,
-			101, 8, 112, 3, 110, 55, 110, 89, 0, 4, 1, 108, 21, 2, 103, 3, 110, 57, 0, 103, 1, 100, 101, 109, 109, 111, 100, 0, 103, 1,
-			102, 2, 32, 0, 103, 1, 109, 2, 114, 101, 0, 103, 1, 115, 2, 115, 32, 12, 0, 103, 1, 118, 32, 116, 100, 105, 108, 2, 116, 0,
-			103, 8, 109, 2, 32, 12, 0, 103, 8, 118, 2, 32, 0, 103, 8, 118, 2, 101, 32, 0, 108, 98, 117, 113, 117, 101, 114, 113, 117, 101,
-			3, 110, 59, 71, 108, 49, 118, 49, 37, 0, 109, 97, 114, 111, 1, 99, 3, 110, 65, 6, 109, 34, 39, 0, 109, 97, 1, 103, 2, 99,
-			104, 3, 110, 65, 6, 110, 0, 109, 117, 114, 97, 105, 1, 115, 3, 110, 65, 40, 34, 6, 35, 57, 0, 109, 98, 114, 111, 115, 101, 3,
-			110, 65, 71, 51, 115, 40, 89, 0, 103, 110, 97, 1, 109, 114, 97, 2, 99, 3, 110, 68, 6, 112, 0, 98, 98, 121, 8, 3, 110, 71,
-			37, 0, 98, 105, 108, 101, 110, 101, 3, 110, 71, 37, 55, 37, 12, 50, 0, 98, 108, 97, 110, 1, 115, 97, 99, 2, 99, 97, 3, 110,
-			71, 55, 6, 112, 68, 0, 100, 101, 114, 1, 10, 2, 101, 28, 33, 3, 110, 72, 6, 36, 34, 0, 100, 101, 110, 116, 1, 10, 2, 28,
-			33, 3, 110, 72, 6, 36, 50, 47, 0, 100, 98, 117, 114, 121, 1, 114, 98, 3, 110, 72, 71, 14, 34, 36, 0, 4, 103, 1, 109, 2,
-			105, 12, 3, 110, 81, 0, 103, 1, 110, 97, 108, 102, 2, 97, 110, 0, 103, 1, 110, 121, 115, 2, 111, 103, 101, 0, 103, 2, 110, 101,
-			119, 0, 103, 103, 105, 101, 3, 110, 81, 37, 0, 103, 97, 122, 105, 110, 101, 1, 109, 3, 110, 81, 110, 89, 6, 37, 12, 50, 0, 4,
-			118, 1, 108, 2, 97, 17, 67, 3, 110, 84, 0, 118, 1, 108, 2, 97, 32, 0, 118, 1, 108, 2, 97, 101, 0, 118, 1, 108, 2, 101,
-			100, 0, 118, 1, 108, 2, 101, 114, 0, 118, 1, 108, 2, 101, 115, 0, 118, 1, 108, 2, 105, 110, 101, 0, 118, 1, 108, 2, 110, 105,
-			0, 118, 1, 108, 2, 116, 32, 0, 118, 1, 116, 115, 2, 110, 105, 110, 0, 118, 1, 116, 115, 103, 111, 98, 0, 118, 8, 108, 2, 32,
-			0, 118, 101, 114, 1, 108, 107, 2, 32, 3, 110, 84, 6, 36, 34, 0, 118, 101, 1, 108, 2, 32, 3, 110, 84, 13, 0, 118, 101, 116,
-			1, 108, 110, 111, 110, 97, 107, 3, 110, 84, 36, 47, 0, 118, 97, 110, 116, 103, 97, 114, 100, 101, 3, 110, 84, 112, 68, 81, 6, 35,
-			34, 72, 108, 0, 118, 101, 114, 1, 108, 2, 32, 3, 110, 84, 114, 0, 115, 116, 97, 105, 114, 101, 3, 110, 89, 72, 6, 109, 12, 34,
-			0, 115, 101, 114, 98, 97, 106, 100, 115, 106, 97, 110, 3, 110, 89, 114, 71, 110, 91, 6, 110, 50, 0, 99, 104, 101, 1, 116, 116, 97,
-			3, 110, 91, 6, 36, 0, 4, 116, 105, 111, 1, 103, 105, 108, 98, 111, 2, 110, 3, 110, 91, 6, 39, 0, 116, 105, 111, 8, 103, 105,
-			108, 98, 111, 2, 110, 0, 116, 105, 111, 110, 1, 10, 2, 28, 33, 3, 110, 91, 7, 39, 50, 0, 116, 105, 111, 1, 110, 114, 101, 116,
-			110, 105, 2, 110, 97, 108, 3, 110, 91, 39, 0, 104, 101, 110, 1, 104, 115, 3, 110, 108, 50, 0, 1, 114, 114, 101, 116, 2, 115, 3,
-			111, 0, 4, 1, 17, 67, 2, 102, 116, 3, 112, 0, 1, 17, 67, 2, 114, 18, 69, 0, 1, 18, 66, 2, 18, 71, 116, 12, 0, 1,
-			18, 67, 2, 18, 67, 0, 1, 18, 67, 2, 18, 67, 115, 101, 114, 0, 1, 18, 71, 2, 110, 107, 0, 1, 100, 2, 109, 112, 0, 1,
-			100, 97, 2, 109, 0, 1, 102, 2, 109, 108, 101, 12, 0, 1, 105, 114, 2, 109, 0, 1, 106, 2, 18, 75, 111, 12, 0, 1, 106, 109,
-			2, 118, 0, 1, 107, 2, 103, 0, 1, 107, 115, 2, 107, 0, 1, 108, 2, 103, 116, 12, 0, 1, 110, 2, 112, 0, 1, 110, 115, 2,
-			118, 115, 0, 1, 114, 2, 17, 67, 12, 0, 1, 114, 2, 17, 67, 18, 69, 0, 1, 114, 2, 18, 66, 12, 12, 0, 1, 114, 2, 18,
-			67, 18, 69, 12, 0, 1, 114, 2, 18, 71, 0, 1, 114, 2, 32, 0, 1, 114, 2, 100, 0, 1, 114, 2, 101, 110, 0, 1, 114, 2,
-			108, 0, 1, 114, 2, 108, 21, 21, 12, 0, 1, 114, 2, 110, 0, 1, 114, 2, 110, 101, 0, 1, 114, 17, 67, 2, 110, 0, 1, 114,
-			18, 66, 0, 1, 114, 98, 2, 17, 67, 0, 1, 114, 101, 109, 97, 107, 0, 1, 114, 102, 0, 1, 114, 111, 102, 2, 110, 100, 0, 1,
-			114, 111, 102, 2, 110, 107, 0, 1, 114, 116, 0, 1, 114, 116, 2, 17, 67, 0, 1, 114, 116, 115, 0, 1, 114, 117, 97, 108, 0, 1,
-			114, 118, 2, 108, 116, 0, 1, 116, 2, 110, 107, 0, 1, 118, 2, 110, 100, 114, 0, 2, 18, 66, 116, 12, 0, 2, 98, 17, 67, 0,
-			2, 98, 99, 0, 2, 99, 99, 0, 2, 102, 98, 114, 121, 100, 0, 2, 102, 118, 105, 0, 2, 103, 116, 0, 2, 107, 116, 0, 2, 109,
-			102, 0, 2, 109, 116, 0, 2, 110, 100, 114, 101, 0, 2, 114, 12, 0, 2, 118, 108, 0, 2, 118, 110, 12, 0, 8, 2, 98, 115, 0,
-			8, 2, 109, 98, 0, 8, 2, 109, 101, 110, 32, 0, 104, 1, 114, 97, 115, 0, 4, 1, 114, 2, 111, 117, 108, 3, 112, 6, 0, 8,
-			110, 111, 109, 2, 114, 107, 105, 0, 97, 1, 107, 105, 114, 102, 97, 2, 110, 3, 112, 12, 0, 110, 99, 101, 1, 108, 101, 101, 114, 102,
-			3, 112, 12, 68, 89, 0, 114, 1, 10, 2, 105, 97, 116, 28, 33, 3, 112, 34, 0, 97, 114, 111, 110, 3, 112, 34, 114, 50, 0, 4,
-			103, 1, 18, 74, 2, 12, 3, 112, 40, 0, 103, 1, 104, 2, 108, 0, 103, 1, 114, 2, 110, 97, 12, 0, 103, 1, 115, 2, 17, 67,
-			12, 0, 103, 1, 115, 2, 115, 195, 184, 0, 103, 2, 110, 12, 0, 118, 1, 18, 73, 2, 17, 67, 0, 118, 1, 98, 2, 12, 12, 0,
-			118, 1, 103, 2, 109, 105, 0, 118, 1, 104, 2, 17, 67, 0, 118, 1, 104, 2, 97, 98, 111, 114, 114, 0, 118, 1, 104, 2, 105, 115,
-			0, 118, 1, 104, 2, 111, 118, 101, 114, 0, 118, 1, 104, 2, 117, 100, 0, 118, 1, 104, 21, 2, 32, 0, 118, 1, 104, 32, 101, 107,
-			115, 0, 118, 1, 104, 32, 103, 111, 32, 108, 101, 109, 109, 105, 104, 0, 118, 1, 115, 2, 17, 67, 0, 118, 8, 2, 32, 0, 118, 95,
-			1, 104, 21, 0, 103, 110, 101, 1, 109, 2, 116, 3, 112, 40, 50, 6, 36, 0, 116, 1, 114, 10, 2, 105, 28, 33, 3, 112, 47, 0,
-			116, 1, 114, 10, 2, 117, 114, 28, 33, 3, 112, 47, 6, 0, 114, 107, 97, 110, 115, 97, 115, 3, 112, 49, 13, 50, 89, 113, 12, 0,
-			4, 102, 2, 115, 3, 112, 58, 0, 102, 2, 116, 97, 108, 0, 103, 1, 114, 112, 115, 2, 108, 101, 116, 0, 118, 1, 110, 103, 2, 112,
-			111, 116, 0, 118, 1, 116, 2, 115, 0, 118, 2, 108, 12, 0, 118, 8, 108, 0, 118, 8, 108, 2, 118, 0, 118, 8, 116, 2, 32, 0,
-			109, 101, 108, 117, 1, 109, 2, 107, 3, 112, 65, 108, 55, 6, 40, 0, 109, 97, 103, 101, 114, 8, 3, 112, 65, 112, 34, 0, 4, 110,
-			1, 108, 2, 99, 101, 3, 112, 68, 0, 110, 1, 108, 112, 2, 99, 104, 0, 110, 1, 114, 98, 2, 99, 104, 0, 110, 100, 1, 100, 2,
-			101, 114, 101, 3, 112, 68, 72, 0, 110, 99, 101, 1, 10, 2, 114, 101, 28, 33, 3, 112, 68, 89, 6, 36, 0, 110, 99, 101, 1, 10,
-			2, 12, 3, 112, 68, 89, 13, 0, 110, 99, 101, 1, 10, 2, 114, 101, 12, 3, 112, 68, 89, 36, 0, 110, 99, 104, 101, 116, 1, 109,
-			3, 112, 68, 91, 6, 109, 72, 0, 98, 101, 108, 1, 114, 105, 109, 3, 112, 71, 6, 109, 55, 0, 98, 97, 100, 115, 1, 114, 116, 115,
-			3, 112, 71, 6, 110, 89, 0, 98, 100, 111, 2, 109, 3, 112, 71, 72, 6, 39, 0, 98, 115, 111, 108, 117, 116, 105, 111, 110, 8, 3,
-			112, 71, 89, 39, 55, 40, 91, 6, 39, 50, 0, 98, 115, 111, 108, 117, 116, 105, 111, 110, 3, 112, 71, 89, 39, 55, 40, 91, 39, 50,
-			0, 100, 101, 114, 1, 114, 10, 2, 101, 28, 33, 3, 112, 72, 6, 36, 34, 0, 100, 97, 114, 1, 114, 3, 112, 72, 112, 34, 0, 114,
-			103, 101, 1, 108, 3, 112, 75, 0, 103, 103, 101, 114, 1, 100, 2, 116, 3, 112, 81, 114, 0, 102, 97, 101, 1, 114, 3, 112, 83, 110,
-			6, 36, 0, 116, 105, 111, 110, 1, 114, 10, 2, 28, 33, 3, 112, 91, 6, 39, 50, 0, 101, 114, 1, 114, 2, 32, 3, 112, 114, 0,
-			4, 1, 119, 2, 116, 101, 114, 3, 113, 0, 8, 116, 115, 2, 108, 108, 0, 117, 1, 115, 2, 116, 101, 114, 101, 0, 117, 8, 112, 2,
-			108, 0, 119, 1, 114, 0, 117, 1, 115, 2, 99, 101, 3, 113, 12, 0, 108, 108, 1, 98, 121, 101, 108, 108, 111, 118, 3, 113, 12, 55,
-			0, 117, 98, 114, 101, 121, 3, 113, 12, 71, 34, 37, 0, 117, 100, 114, 101, 121, 3, 113, 12, 72, 51, 37, 0, 117, 114, 105, 101, 1,
-			108, 3, 113, 34, 37, 0, 97, 103, 101, 8, 3, 113, 40, 108, 0, 108, 107, 1, 116, 2, 115, 104, 111, 119, 3, 113, 49, 0, 117, 114,
-			101, 101, 110, 1, 109, 3, 113, 51, 6, 37, 12, 50, 0, 108, 108, 2, 32, 114, 105, 103, 104, 116, 3, 113, 55, 0, 108, 100, 105, 110,
-			103, 1, 112, 115, 3, 113, 55, 72, 4, 36, 68, 0, 119, 1, 114, 99, 3, 114, 0, 108, 1, 119, 2, 107, 3, 114, 12, 0, 108, 108,
-			1, 119, 3, 114, 12, 55, 0, 119, 114, 101, 110, 99, 101, 1, 108, 3, 115, 34, 13, 50, 89, 0, 7, 6, 98, 0, 4, 1, 184, 195,
-			107, 2, 109, 97, 3, 0, 1, 184, 195, 107, 2, 109, 195, 166, 3, 0, 4, 114, 111, 119, 110, 3, 21, 0, 121, 114, 111, 110, 0, 2,
-			32, 3, 48, 0, 4, 1, 101, 112, 2, 101, 114, 3, 58, 0, 1, 101, 112, 2, 114, 101, 0, 98, 1, 111, 107, 2, 101, 114, 0, 4,
-			3, 71, 0, 98, 0, 101, 97, 116, 8, 3, 71, 6, 37, 12, 47, 0, 111, 110, 107, 97, 109, 109, 101, 114, 97, 116, 3, 71, 6, 114,
-			68, 49, 35, 65, 13, 34, 112, 47, 0, 114, 97, 105, 108, 108, 101, 3, 71, 34, 35, 57, 12, 0, 114, 105, 110, 116, 105, 111, 110, 3,
-			71, 34, 36, 50, 72, 57, 39, 12, 50, 0, 114, 111, 97, 100, 3, 71, 34, 113, 72, 0, 97, 114, 121, 116, 111, 110, 3, 71, 35, 37,
-			47, 114, 50, 0, 101, 105, 2, 114, 117, 116, 3, 71, 35, 57, 0, 105, 107, 101, 3, 71, 35, 57, 49, 0, 117, 105, 2, 108, 100, 105,
-			110, 103, 3, 71, 36, 0, 97, 115, 101, 98, 97, 108, 108, 3, 71, 36, 57, 89, 82, 113, 12, 59, 0, 105, 110, 103, 104, 97, 109, 3,
-			71, 36, 68, 108, 65, 0, 117, 115, 105, 110, 101, 115, 115, 3, 71, 36, 89, 50, 109, 89, 0, 101, 97, 2, 116, 114, 105, 3, 71, 36,
-			110, 6, 0, 101, 101, 1, 115, 105, 114, 102, 3, 71, 37, 0, 101, 98, 111, 112, 3, 71, 37, 12, 71, 114, 48, 0, 101, 97, 99, 104,
-			3, 71, 37, 12, 76, 0, 101, 97, 103, 108, 101, 3, 71, 37, 12, 81, 13, 55, 0, 105, 108, 108, 105, 101, 3, 71, 37, 59, 37, 0,
-			101, 97, 117, 106, 111, 108, 97, 105, 115, 3, 71, 39, 91, 57, 39, 55, 6, 109, 0, 111, 117, 114, 103, 111, 103, 110, 101, 3, 71, 40,
-			34, 81, 6, 114, 50, 57, 13, 0, 111, 117, 105, 108, 108, 2, 111, 110, 3, 71, 40, 55, 57, 0, 111, 117, 105, 108, 108, 97, 98, 97,
-			105, 115, 115, 101, 3, 71, 40, 57, 35, 71, 6, 109, 89, 0, 111, 117, 100, 111, 105, 114, 3, 71, 40, 72, 58, 6, 112, 12, 0, 114,
-			117, 99, 101, 8, 3, 71, 51, 40, 12, 89, 0, 114, 111, 119, 115, 101, 114, 3, 71, 51, 112, 58, 89, 114, 0, 108, 97, 107, 101, 8,
-			3, 71, 55, 109, 57, 49, 0, 108, 105, 103, 104, 8, 3, 71, 55, 112, 57, 0, 108, 111, 111, 100, 121, 3, 71, 55, 114, 72, 37, 0,
-			117, 116, 116, 101, 8, 2, 32, 3, 71, 57, 40, 12, 47, 0, 117, 105, 99, 8, 3, 71, 57, 40, 37, 49, 0, 101, 108, 108, 101, 118,
-			117, 101, 3, 71, 109, 55, 13, 84, 6, 116, 0, 101, 105, 106, 105, 110, 103, 3, 71, 109, 57, 75, 6, 36, 68, 0, 101, 118, 101, 114,
-			108, 121, 3, 71, 109, 84, 114, 55, 37, 0, 97, 99, 107, 117, 112, 8, 3, 71, 110, 49, 6, 114, 71, 0, 97, 108, 107, 111, 110, 8,
-			3, 71, 110, 55, 49, 6, 114, 68, 0, 97, 108, 107, 111, 110, 3, 71, 110, 55, 49, 114, 68, 0, 97, 98, 121, 108, 111, 110, 2, 101,
-			114, 3, 71, 110, 71, 116, 55, 6, 39, 50, 0, 97, 98, 121, 108, 111, 110, 2, 105, 115, 107, 3, 71, 110, 71, 116, 55, 39, 50, 0,
-			97, 98, 121, 108, 111, 110, 3, 71, 110, 71, 116, 55, 114, 50, 0, 97, 99, 107, 103, 97, 109, 109, 111, 110, 3, 71, 110, 81, 6, 110,
-			65, 108, 50, 0, 97, 115, 115, 105, 110, 1, 10, 3, 71, 110, 89, 6, 109, 68, 0, 97, 114, 98, 105, 101, 3, 71, 112, 34, 71, 37,
-			0, 97, 115, 107, 101, 116, 98, 97, 108, 108, 3, 71, 112, 89, 81, 36, 47, 71, 113, 12, 55, 0, 111, 97, 114, 100, 3, 71, 113, 12,
-			72, 0, 97, 108, 116, 105, 109, 111, 114, 101, 3, 71, 113, 55, 47, 37, 65, 114, 12, 0, 111, 110, 101, 1, 32, 116, 3, 71, 113, 58,
-			50, 0, 111, 114, 111, 117, 103, 104, 3, 71, 114, 34, 114, 0, 117, 116, 116, 101, 114, 102, 108, 121, 3, 71, 114, 47, 114, 83, 55, 35,
-			57, 0, 111, 100, 121, 103, 117, 97, 114, 100, 3, 71, 114, 72, 37, 81, 112, 12, 72, 0, 111, 100, 121, 115, 116, 111, 99, 107, 105, 110,
-			103, 3, 71, 114, 72, 37, 89, 47, 114, 49, 36, 68, 0, 117, 103, 115, 121, 3, 71, 114, 81, 89, 37, 0, 117, 102, 102, 97, 108, 111,
-			3, 71, 114, 83, 108, 55, 113, 58, 0, 4, 117, 102, 102, 101, 116, 1, 21, 3, 71, 116, 83, 6, 36, 0, 117, 102, 102, 101, 116, 8,
-			0, 117, 114, 103, 104, 3, 71, 118, 12, 81, 0, 117, 114, 116, 111, 110, 3, 71, 118, 47, 114, 50, 0, 101, 114, 110, 105, 101, 3, 71,
-			118, 50, 37, 0, 105, 114, 109, 105, 110, 103, 104, 97, 109, 3, 71, 118, 65, 37, 68, 13, 65, 0, 117, 114, 103, 101, 115, 115, 3, 71,
-			118, 75, 36, 89, 0, 7, 6, 99, 0, 4, 1, 115, 2, 104, 97, 3, 0, 2, 107, 3, 0, 99, 1, 101, 98, 101, 114, 2, 97, 3,
-			8, 49, 0, 101, 114, 1, 105, 100, 101, 100, 2, 28, 33, 3, 8, 49, 7, 36, 34, 0, 1, 105, 114, 101, 100, 101, 114, 102, 2, 105,
-			97, 3, 8, 49, 89, 0, 101, 114, 1, 10, 2, 28, 33, 3, 8, 89, 7, 36, 34, 0, 101, 114, 101, 1, 10, 2, 28, 33, 3, 8,
-			89, 7, 36, 34, 108, 0, 4, 101, 1, 10, 2, 32, 28, 33, 3, 8, 89, 13, 0, 101, 1, 10, 2, 110, 28, 33, 0, 101, 1, 10,
-			2, 114, 28, 33, 3, 8, 89, 114, 0, 101, 114, 101, 110, 1, 117, 100, 111, 114, 112, 3, 8, 89, 114, 108, 50, 0, 101, 110, 101, 1,
-			115, 3, 36, 50, 108, 0, 101, 110, 101, 114, 1, 115, 3, 36, 50, 114, 0, 104, 105, 110, 97, 3, 47, 57, 35, 57, 50, 110, 0, 104,
-			97, 2, 116, 3, 47, 57, 110, 0, 4, 3, 49, 0, 1, 97, 108, 108, 105, 100, 97, 99, 0, 99, 1, 105, 112, 2, 111, 0, 99, 1,
-			111, 114, 2, 111, 0, 99, 1, 111, 115, 2, 101, 114, 0, 104, 1, 101, 116, 2, 110, 111, 0, 104, 1, 105, 109, 2, 97, 0, 104, 1,
-			105, 110, 2, 111, 108, 0, 104, 1, 111, 115, 97, 109, 2, 105, 115, 0, 104, 2, 108, 111, 101, 0, 104, 2, 114, 0, 104, 8, 97, 109,
-			2, 32, 0, 115, 1, 110, 97, 114, 102, 0, 99, 1, 97, 116, 115, 2, 97, 116, 111, 3, 49, 6, 0, 114, 101, 101, 107, 3, 49, 34,
-			37, 12, 49, 0, 114, 101, 97, 115, 121, 3, 49, 34, 37, 89, 37, 0, 114, 111, 105, 115, 115, 97, 110, 116, 3, 49, 34, 39, 35, 89,
-			6, 112, 68, 0, 114, 101, 109, 101, 3, 49, 34, 109, 12, 65, 0, 97, 114, 116, 105, 101, 114, 8, 3, 49, 35, 34, 47, 57, 6, 36,
-			0, 111, 119, 98, 111, 121, 3, 49, 35, 40, 71, 113, 57, 0, 97, 109, 101, 109, 98, 101, 114, 116, 3, 49, 35, 65, 112, 68, 71, 6,
-			109, 34, 0, 97, 109, 98, 114, 105, 100, 103, 101, 3, 49, 36, 57, 65, 71, 51, 37, 75, 0, 111, 108, 97, 100, 97, 3, 49, 39, 55,
-			6, 112, 86, 110, 0, 114, 97, 122, 121, 3, 49, 51, 109, 57, 89, 37, 0, 108, 101, 118, 101, 108, 97, 110, 100, 3, 49, 55, 37, 12,
-			84, 55, 110, 50, 0, 108, 97, 105, 114, 2, 118, 111, 121, 3, 49, 55, 109, 34, 0, 108, 97, 114, 101, 110, 99, 101, 8, 3, 49, 55,
-			110, 51, 13, 50, 89, 0, 108, 101, 114, 107, 3, 49, 55, 112, 12, 49, 0, 108, 97, 117, 100, 101, 3, 49, 55, 113, 12, 72, 0, 108,
-			97, 117, 100, 101, 116, 116, 101, 3, 49, 55, 113, 72, 6, 36, 47, 0, 104, 105, 97, 110, 116, 105, 3, 49, 57, 6, 110, 50, 47, 37,
-			0, 99, 3, 49, 89, 0, 97, 116, 101, 114, 105, 110, 103, 3, 49, 109, 37, 47, 13, 34, 37, 68, 0, 97, 112, 101, 8, 2, 32, 116,
-			111, 119, 110, 3, 49, 109, 57, 48, 0, 97, 106, 117, 110, 3, 49, 109, 75, 108, 50, 0, 97, 114, 111, 108, 105, 110, 97, 1, 32, 104,
-			116, 114, 111, 110, 3, 49, 110, 34, 39, 55, 6, 35, 57, 50, 110, 0, 97, 112, 111, 110, 101, 8, 3, 49, 110, 48, 6, 113, 58, 50,
-			0, 97, 110, 116, 101, 114, 98, 117, 114, 121, 3, 49, 110, 50, 47, 114, 71, 34, 37, 0, 97, 103, 110, 101, 121, 8, 3, 49, 110, 81,
-			50, 37, 0, 97, 116, 104, 121, 8, 3, 49, 110, 87, 37, 0, 97, 114, 109, 105, 110, 101, 3, 49, 112, 12, 65, 35, 57, 50, 0, 97,
-			114, 100, 105, 110, 8, 3, 49, 112, 34, 72, 6, 110, 68, 0, 97, 114, 108, 105, 115, 108, 101, 3, 49, 112, 55, 35, 57, 55, 0, 111,
-			117, 114, 116, 110, 101, 121, 3, 49, 113, 12, 47, 50, 37, 0, 111, 104, 101, 110, 3, 49, 113, 40, 13, 50, 0, 111, 108, 101, 114, 105,
-			100, 103, 101, 3, 49, 113, 58, 55, 34, 37, 75, 0, 111, 2, 110, 114, 97, 100, 3, 49, 114, 0, 111, 114, 110, 2, 102, 3, 49, 114,
-			12, 50, 0, 111, 114, 110, 105, 99, 104, 111, 110, 3, 49, 114, 34, 50, 37, 91, 6, 114, 68, 0, 111, 116, 116, 97, 103, 101, 3, 49,
-			114, 47, 37, 75, 0, 117, 116, 108, 101, 114, 3, 49, 114, 47, 55, 114, 0, 111, 99, 107, 110, 101, 121, 3, 49, 114, 49, 50, 37, 0,
-			111, 110, 110, 101, 99, 116, 105, 99, 117, 116, 3, 49, 114, 50, 6, 36, 47, 37, 49, 114, 72, 0, 111, 110, 110, 105, 101, 3, 49, 114,
-			50, 37, 0, 111, 117, 110, 116, 114, 121, 3, 49, 114, 50, 47, 34, 37, 0, 111, 110, 110, 111, 114, 3, 49, 114, 50, 114, 0, 97, 108,
-			108, 103, 105, 114, 108, 3, 49, 114, 55, 81, 118, 12, 55, 0, 111, 109, 112, 117, 116, 101, 114, 3, 49, 114, 65, 48, 57, 6, 40, 12,
-			47, 114, 0, 111, 114, 100, 101, 108, 105, 97, 3, 49, 114, 72, 6, 37, 55, 37, 20, 110, 0, 117, 115, 116, 101, 114, 8, 3, 49, 114,
-			89, 47, 114, 0, 121, 112, 101, 114, 3, 49, 116, 48, 114, 0, 117, 114, 108, 101, 114, 3, 49, 118, 55, 114, 0, 4, 104, 1, 105, 119,
-			3, 76, 0, 104, 2, 101, 101, 115, 101, 0, 104, 2, 105, 0, 4, 1, 114, 111, 99, 115, 2, 101, 115, 101, 3, 76, 6, 0, 8, 97,
-			112, 2, 105, 110, 111, 0, 104, 105, 108, 100, 3, 76, 35, 57, 55, 72, 0, 104, 105, 104, 117, 97, 104, 117, 97, 3, 76, 37, 58, 6,
-			35, 58, 35, 0, 104, 2, 105, 112, 3, 76, 57, 0, 99, 1, 117, 112, 112, 97, 99, 2, 105, 110, 111, 3, 76, 57, 6, 0, 105, 97,
-			111, 8, 2, 32, 3, 76, 57, 112, 58, 0, 104, 101, 108, 115, 101, 97, 3, 76, 109, 55, 89, 37, 0, 104, 97, 112, 108, 105, 110, 3,
-			76, 110, 48, 55, 37, 50, 0, 104, 97, 108, 108, 101, 110, 103, 101, 3, 76, 110, 55, 36, 50, 75, 0, 104, 97, 114, 108, 101, 115, 3,
-			76, 112, 12, 55, 89, 0, 104, 97, 114, 108, 105, 101, 3, 76, 112, 55, 37, 0, 104, 97, 117, 99, 101, 114, 3, 76, 113, 12, 89, 114,
-			0, 104, 117, 99, 107, 8, 3, 76, 114, 49, 0, 104, 117, 114, 99, 104, 105, 108, 108, 3, 76, 118, 12, 91, 37, 55, 0, 4, 1, 17,
-			65, 2, 101, 3, 89, 0, 1, 97, 102, 2, 97, 100, 0, 1, 97, 102, 2, 111, 110, 0, 2, 101, 0, 2, 101, 108, 108, 111, 102, 97,
-			110, 0, 2, 105, 0, 2, 121, 0, 2, 195, 166, 115, 97, 114, 0, 2, 195, 184, 108, 105, 98, 97, 116, 0, 101, 8, 105, 108, 97, 0,
-			101, 8, 105, 102, 102, 111, 2, 114, 3, 89, 6, 36, 0, 195, 169, 114, 1, 10, 2, 32, 3, 89, 6, 36, 34, 0, 101, 2, 114, 116,
-			3, 89, 6, 109, 0, 195, 184, 114, 1, 10, 2, 32, 3, 89, 6, 118, 34, 0, 101, 121, 108, 111, 110, 3, 89, 35, 57, 59, 114, 50,
-			0, 101, 1, 105, 102, 102, 111, 2, 114, 3, 89, 36, 0, 101, 114, 1, 105, 102, 105, 108, 97, 118, 107, 115, 105, 100, 3, 89, 36, 34,
-			0, 121, 110, 116, 104, 105, 97, 3, 89, 36, 50, 87, 37, 110, 0, 105, 110, 99, 105, 110, 110, 97, 116, 105, 3, 89, 36, 50, 89, 37,
-			50, 6, 110, 47, 37, 0, 195, 169, 122, 97, 110, 110, 101, 3, 89, 36, 89, 6, 110, 50, 0, 195, 169, 122, 97, 110, 110, 101, 110, 3,
-			89, 36, 89, 6, 110, 50, 108, 50, 0, 4, 105, 103, 97, 114, 101, 116, 3, 89, 37, 81, 108, 34, 6, 111, 47, 0, 105, 103, 97, 114,
-			101, 116, 116, 0, 105, 101, 117, 120, 3, 89, 57, 6, 118, 0, 105, 114, 99, 117, 115, 1, 32, 121, 108, 108, 105, 100, 97, 99, 99, 105,
-			112, 3, 89, 118, 49, 13, 89, 0, 4, 2, 104, 97, 3, 91, 0, 104, 1, 114, 0, 104, 2, 12, 0, 104, 2, 97, 116, 101, 97, 117,
-			0, 99, 105, 110, 105, 1, 117, 112, 3, 91, 6, 37, 50, 37, 0, 104, 101, 121, 101, 110, 110, 101, 3, 91, 35, 57, 6, 109, 50, 0,
-			104, 105, 99, 97, 103, 111, 3, 91, 37, 49, 6, 112, 81, 113, 58, 0, 104, 111, 112, 105, 110, 3, 91, 39, 48, 109, 68, 0, 2, 101,
-			108, 108, 111, 3, 91, 57, 0, 104, 101, 114, 121, 108, 3, 91, 109, 34, 36, 59, 0, 104, 97, 98, 108, 105, 115, 3, 91, 110, 71, 55,
-			6, 37, 0, 104, 97, 103, 97, 108, 108, 3, 91, 110, 81, 6, 110, 55, 0, 104, 111, 107, 101, 114, 101, 110, 2, 32, 3, 91, 113, 58,
-			49, 114, 34, 13, 50, 0, 7, 6, 100, 0, 4, 1, 17, 65, 2, 116, 32, 12, 12, 3, 0, 4, 1, 17, 65, 2, 116, 101, 32, 12,
-			12, 3, 0, 4, 1, 17, 65, 2, 116, 101, 114, 32, 12, 12, 3, 0, 4, 1, 97, 118, 104, 3, 0, 4, 1, 101, 114, 107, 2, 115,
-			3, 0, 4, 1, 105, 2, 116, 3, 0, 4, 1, 105, 98, 2, 115, 107, 3, 0, 4, 1, 105, 103, 2, 115, 12, 3, 0, 4, 1, 105,
-			116, 2, 115, 101, 108, 3, 0, 4, 1, 108, 3, 0, 4, 1, 108, 101, 109, 2, 105, 110, 103, 3, 0, 4, 1, 108, 117, 103, 3, 0,
-			4, 1, 110, 97, 2, 101, 3, 0, 4, 1, 110, 105, 2, 17, 67, 3, 0, 4, 1, 114, 101, 106, 102, 2, 101, 3, 0, 4, 1, 114,
-			111, 2, 101, 3, 0, 4, 1, 114, 111, 107, 105, 116, 115, 3, 0, 4, 1, 114, 165, 195, 104, 3, 0, 4, 1, 114, 166, 195, 2, 32,
-			3, 0, 4, 1, 114, 166, 195, 102, 3, 0, 4, 1, 114, 166, 195, 118, 2, 115, 3, 0, 4, 1, 114, 166, 195, 118, 115, 3, 0, 4,
-			1, 114, 166, 195, 118, 115, 2, 101, 116, 3, 0, 4, 1, 117, 98, 2, 103, 101, 116, 3, 0, 4, 1, 184, 195, 2, 115, 101, 108, 12,
-			12, 3, 0, 4, 1, 184, 195, 2, 116, 3, 0, 4, 1, 184, 195, 102, 2, 115, 12, 12, 3, 0, 4, 2, 115, 116, 12, 12, 3, 0,
-			4, 8, 97, 109, 2, 115, 101, 110, 3, 0, 4, 8, 114, 117, 116, 2, 101, 3, 0, 101, 8, 110, 97, 102, 2, 109, 101, 3, 0, 4,
-			1, 105, 100, 110, 97, 107, 2, 97, 116, 3, 6, 72, 0, 1, 111, 109, 2, 97, 108, 0, 1, 108, 101, 109, 105, 2, 97, 3, 8, 72,
-			0, 4, 111, 114, 111, 116, 104, 121, 3, 21, 0, 114, 105, 115, 99, 111, 0, 4, 97, 117, 109, 105, 101, 114, 3, 21, 102, 114, 0, 101,
-			103, 97, 115, 8, 0, 105, 1, 114, 101, 106, 102, 2, 110, 103, 3, 36, 0, 4, 1, 111, 111, 119, 3, 47, 0, 116, 1, 101, 102, 2,
-			21, 0, 116, 1, 101, 114, 112, 115, 0, 116, 1, 105, 107, 115, 0, 116, 1, 117, 2, 12, 0, 101, 1, 108, 97, 98, 3, 55, 108, 0,
-			4, 3, 72, 0, 1, 17, 67, 2, 101, 116, 17, 65, 0, 1, 21, 2, 101, 108, 116, 0, 1, 21, 2, 121, 114, 0, 1, 97, 2, 97,
-			109, 0, 1, 97, 2, 111, 112, 116, 101, 114, 0, 1, 97, 109, 2, 114, 97, 115, 0, 1, 101, 2, 103, 97, 114, 0, 1, 101, 109, 2,
-			97, 108, 106, 0, 1, 101, 109, 111, 114, 100, 2, 97, 114, 0, 1, 101, 110, 101, 118, 2, 105, 103, 0, 1, 101, 112, 2, 114, 111, 0,
-			1, 101, 114, 2, 97, 0, 1, 105, 2, 111, 108, 0, 1, 105, 99, 97, 2, 111, 115, 101, 0, 1, 105, 115, 2, 101, 110, 116, 0, 1,
-			105, 118, 101, 2, 101, 110, 0, 1, 108, 2, 97, 107, 105, 110, 0, 1, 108, 2, 105, 103, 0, 1, 108, 2, 117, 103, 0, 1, 108, 97,
-			2, 114, 105, 103, 0, 1, 108, 97, 109, 114, 111, 102, 2, 101, 0, 1, 108, 97, 115, 2, 111, 0, 1, 108, 101, 104, 2, 105, 0, 1,
-			108, 101, 116, 114, 117, 116, 2, 117, 101, 0, 1, 108, 101, 118, 2, 114, 101, 106, 0, 1, 108, 105, 2, 114, 105, 110, 103, 0, 1, 108,
-			105, 98, 2, 195, 166, 107, 0, 1, 108, 105, 100, 2, 111, 0, 1, 108, 105, 107, 2, 114, 101, 0, 1, 108, 108, 117, 98, 2, 111, 0,
-			1, 108, 111, 2, 105, 110, 103, 0, 1, 108, 111, 98, 0, 1, 108, 111, 115, 2, 195, 166, 107, 0, 1, 110, 17, 65, 2, 114, 17, 65,
-			0, 1, 110, 17, 65, 2, 114, 101, 0, 1, 110, 105, 2, 117, 0, 1, 110, 105, 2, 117, 17, 67, 0, 1, 110, 111, 104, 2, 117, 114,
-			97, 0, 1, 111, 98, 2, 101, 103, 97, 0, 1, 111, 109, 2, 101, 108, 0, 1, 111, 109, 2, 101, 109, 0, 1, 111, 109, 2, 101, 114,
-			110, 0, 1, 114, 101, 118, 2, 101, 110, 0, 1, 114, 105, 2, 32, 0, 1, 114, 111, 2, 101, 108, 0, 1, 114, 111, 2, 101, 110, 0,
-			1, 114, 111, 2, 101, 114, 0, 1, 114, 111, 106, 104, 0, 1, 114, 111, 107, 97, 0, 1, 114, 111, 107, 101, 114, 0, 1, 114, 166, 195,
-			102, 2, 101, 17, 67, 0, 1, 114, 166, 195, 108, 2, 32, 0, 1, 114, 166, 195, 118, 2, 105, 0, 1, 117, 98, 2, 97, 112, 101, 115,
-			116, 0, 1, 117, 108, 107, 2, 101, 114, 101, 0, 1, 117, 109, 114, 101, 98, 2, 97, 0, 1, 121, 111, 108, 102, 0, 1, 165, 195, 2,
-			97, 110, 0, 1, 166, 195, 2, 114, 117, 0, 1, 166, 195, 112, 2, 97, 0, 2, 97, 103, 0, 2, 101, 108, 101, 0, 2, 101, 109, 101,
-			110, 115, 0, 2, 105, 0, 2, 111, 98, 108, 0, 2, 111, 107, 0, 2, 111, 108, 108, 0, 2, 111, 109, 0, 2, 111, 110, 110, 97, 0,
-			2, 114, 97, 109, 97, 0, 2, 114, 101, 118, 0, 2, 114, 121, 115, 0, 2, 117, 102, 116, 101, 0, 2, 117, 115, 0, 2, 195, 165, 115,
-			101, 0, 2, 195, 184, 109, 0, 2, 195, 184, 114, 0, 8, 97, 2, 114, 0, 8, 105, 2, 101, 0, 8, 105, 2, 195, 169, 0, 8, 108,
-			105, 104, 2, 97, 0, 39, 0, 100, 1, 105, 109, 2, 97, 0, 100, 104, 1, 117, 98, 0, 100, 104, 1, 117, 98, 2, 105, 115, 116, 0,
-			4, 1, 110, 101, 112, 2, 117, 108, 3, 72, 6, 0, 1, 111, 109, 2, 117, 108, 0, 101, 1, 105, 107, 114, 111, 3, 72, 6, 36, 0,
-			101, 110, 100, 114, 111, 110, 3, 72, 6, 36, 50, 72, 34, 114, 50, 0, 105, 1, 117, 111, 104, 2, 110, 105, 3, 72, 6, 37, 0, 111,
-			115, 1, 101, 110, 114, 117, 111, 116, 3, 72, 6, 39, 0, 4, 117, 1, 97, 105, 118, 2, 107, 116, 3, 72, 6, 113, 0, 117, 8, 111,
-			114, 112, 2, 107, 116, 0, 111, 114, 1, 97, 118, 108, 97, 115, 3, 72, 6, 113, 12, 0, 114, 101, 100, 8, 108, 105, 109, 3, 72, 34,
-			109, 72, 0, 111, 119, 110, 3, 72, 35, 58, 50, 0, 111, 119, 110, 108, 111, 97, 100, 3, 72, 35, 58, 50, 55, 39, 58, 72, 0, 111,
-			117, 98, 116, 102, 105, 114, 101, 3, 72, 35, 58, 72, 83, 35, 57, 114, 0, 4, 101, 1, 105, 117, 103, 2, 110, 3, 72, 36, 0, 101,
-			1, 121, 98, 2, 108, 0, 101, 116, 101, 110, 116, 101, 3, 72, 36, 47, 6, 112, 12, 68, 47, 0, 101, 116, 114, 111, 105, 116, 3, 72,
-			36, 47, 34, 6, 114, 57, 47, 0, 4, 105, 99, 107, 105, 101, 3, 72, 36, 49, 37, 0, 105, 99, 107, 121, 0, 105, 103, 1, 114, 166,
-			195, 102, 3, 72, 37, 0, 101, 97, 110, 8, 3, 72, 37, 12, 50, 0, 111, 114, 97, 100, 111, 1, 108, 101, 3, 72, 39, 34, 6, 112,
-			72, 39, 0, 111, 117, 103, 104, 110, 117, 116, 3, 72, 39, 58, 50, 114, 72, 0, 117, 8, 111, 114, 112, 2, 107, 116, 105, 118, 3, 72,
-			40, 0, 114, 105, 118, 101, 8, 2, 45, 3, 72, 51, 112, 57, 84, 0, 4, 117, 99, 101, 114, 1, 111, 114, 112, 2, 32, 3, 72, 57,
-			6, 40, 89, 114, 0, 117, 99, 101, 114, 1, 111, 114, 112, 2, 97, 115, 115, 105, 115, 116, 101, 110, 116, 0, 101, 119, 101, 121, 3, 72,
-			57, 40, 37, 0, 119, 105, 103, 104, 116, 3, 72, 58, 35, 57, 47, 0, 100, 115, 1, 111, 3, 72, 89, 0, 115, 116, 111, 110, 101, 1,
-			97, 108, 103, 3, 72, 89, 47, 115, 58, 50, 0, 101, 98, 98, 105, 101, 3, 72, 109, 71, 37, 0, 97, 114, 121, 108, 3, 72, 110, 34,
-			108, 59, 0, 97, 105, 113, 117, 105, 114, 105, 3, 72, 110, 49, 13, 34, 37, 0, 97, 114, 108, 101, 110, 101, 3, 72, 112, 55, 6, 37,
-			50, 0, 97, 118, 8, 2, 32, 3, 72, 112, 58, 0, 97, 118, 115, 8, 2, 32, 3, 72, 112, 58, 89, 0, 117, 110, 100, 1, 101, 114,
-			2, 97, 110, 116, 3, 72, 113, 50, 72, 0, 101, 114, 1, 105, 117, 103, 3, 72, 114, 0, 97, 119, 115, 111, 110, 3, 72, 114, 12, 89,
-			108, 50, 0, 111, 99, 8, 2, 32, 3, 72, 114, 49, 0, 111, 117, 98, 108, 101, 3, 72, 114, 71, 13, 55, 0, 111, 117, 98, 108, 101,
-			116, 111, 110, 3, 72, 114, 71, 13, 55, 47, 114, 50, 0, 111, 100, 103, 101, 3, 72, 114, 75, 0, 117, 116, 99, 104, 3, 72, 114, 76,
-			0, 111, 114, 101, 101, 110, 8, 3, 72, 115, 34, 6, 37, 50, 0, 117, 98, 111, 105, 115, 3, 72, 116, 71, 58, 6, 112, 0, 117, 107,
-			101, 8, 3, 75, 40, 12, 49, 0, 101, 117, 99, 101, 3, 75, 40, 12, 89, 0, 4, 1, 17, 65, 3, 86, 0, 1, 17, 65, 2, 17,
-			67, 0, 1, 17, 65, 2, 101, 115, 0, 1, 17, 65, 2, 105, 103, 0, 1, 17, 65, 18, 74, 2, 116, 97, 0, 1, 97, 98, 2, 101,
-			0, 1, 100, 101, 110, 2, 115, 0, 1, 101, 110, 2, 115, 116, 0, 1, 101, 114, 102, 2, 115, 0, 1, 105, 2, 116, 105, 12, 0, 1,
-			105, 98, 2, 101, 0, 1, 105, 112, 115, 2, 115, 116, 101, 103, 0, 1, 105, 114, 2, 101, 0, 1, 105, 114, 116, 115, 2, 115, 0, 1,
-			105, 116, 2, 101, 0, 1, 105, 116, 2, 115, 12, 0, 1, 105, 118, 2, 101, 114, 0, 1, 111, 102, 2, 17, 67, 12, 12, 0, 1, 111,
-			109, 2, 115, 116, 12, 0, 1, 117, 2, 105, 0, 1, 117, 2, 115, 116, 121, 114, 12, 0, 1, 117, 98, 2, 115, 12, 12, 0, 1, 121,
-			2, 115, 116, 97, 116, 12, 0, 1, 121, 98, 2, 101, 108, 105, 103, 0, 1, 121, 108, 0, 1, 166, 195, 114, 2, 115, 101, 108, 0, 1,
-			184, 195, 2, 115, 12, 12, 0, 1, 184, 195, 100, 2, 12, 0, 8, 117, 2, 12, 12, 0, 100, 1, 17, 65, 0, 100, 1, 17, 65, 2,
-			17, 65, 12, 0, 101, 1, 97, 2, 108, 3, 86, 13, 0, 105, 1, 17, 65, 2, 115, 107, 3, 86, 37, 0, 4, 100, 1, 101, 109, 2,
-			101, 108, 3, 86, 72, 0, 100, 1, 117, 2, 97, 110, 110, 0, 100, 1, 117, 2, 195, 184, 12, 0, 100, 1, 117, 103, 2, 12, 12, 0,
-			100, 1, 117, 107, 115, 2, 117, 12, 0, 100, 1, 117, 108, 2, 111, 118, 0, 100, 1, 121, 108, 2, 195, 166, 109, 112, 0, 115, 1, 17,
-			65, 2, 195, 166, 116, 3, 86, 89, 0, 4, 101, 1, 17, 65, 2, 32, 3, 86, 108, 0, 101, 1, 97, 2, 17, 67, 114, 0, 101, 1,
-			121, 0, 101, 1, 121, 98, 100, 110, 105, 0, 101, 1, 166, 195, 2, 108, 12, 0, 101, 1, 121, 115, 2, 110, 103, 3, 86, 109, 0, 101,
-			114, 1, 121, 2, 32, 3, 86, 114, 0, 4, 115, 1, 17, 65, 2, 101, 108, 3, 89, 0, 115, 1, 97, 108, 112, 0, 115, 1, 97, 112,
-			115, 2, 101, 114, 0, 115, 1, 97, 114, 107, 0, 115, 1, 97, 116, 115, 0, 115, 1, 101, 114, 102, 108, 0, 115, 1, 105, 104, 0, 115,
-			1, 105, 104, 2, 101, 0, 115, 1, 105, 112, 0, 115, 1, 105, 114, 0, 115, 1, 117, 109, 115, 0, 115, 1, 117, 112, 0, 115, 1, 117,
-			114, 116, 115, 0, 115, 1, 117, 116, 2, 101, 0, 115, 1, 117, 116, 115, 0, 115, 1, 121, 0, 115, 1, 105, 116, 2, 110, 111, 107, 3,
-			89, 6, 0, 115, 101, 108, 1, 117, 108, 112, 3, 89, 59, 0, 101, 1, 114, 166, 195, 103, 3, 114, 0, 7, 6, 101, 0, 4, 1, 99,
-			97, 102, 114, 101, 116, 110, 105, 3, 0, 4, 1, 99, 97, 112, 2, 109, 97, 107, 101, 114, 3, 0, 4, 1, 99, 97, 112, 114, 111, 116,
-			111, 109, 3, 0, 4, 1, 99, 101, 101, 108, 102, 3, 0, 4, 1, 99, 105, 112, 115, 111, 104, 2, 32, 3, 0, 4, 1, 99, 105, 116,
-			102, 111, 115, 3, 0, 4, 1, 99, 105, 117, 106, 3, 0, 4, 1, 99, 105, 118, 114, 101, 115, 2, 102, 97, 103, 3, 0, 4, 1, 99,
-			105, 118, 114, 101, 115, 2, 109, 101, 100, 3, 0, 4, 1, 99, 105, 118, 114, 101, 115, 2, 115, 101, 107, 116, 111, 114, 3, 0, 4, 1,
-			99, 105, 118, 114, 101, 115, 2, 115, 116, 97, 116, 105, 111, 110, 3, 0, 4, 1, 99, 105, 118, 114, 101, 115, 2, 121, 100, 101, 108, 115,
-			101, 3, 0, 4, 1, 99, 110, 97, 108, 101, 101, 114, 102, 3, 0, 4, 1, 99, 110, 101, 112, 3, 0, 4, 1, 99, 110, 101, 118, 111,
-			114, 112, 3, 0, 4, 1, 99, 117, 97, 115, 3, 0, 4, 1, 99, 121, 111, 106, 3, 0, 4, 1, 105, 112, 117, 111, 114, 103, 3, 0,
-			4, 1, 105, 114, 98, 2, 102, 3, 0, 4, 1, 108, 108, 2, 100, 101, 3, 0, 4, 1, 116, 115, 97, 116, 117, 97, 98, 2, 110, 3,
-			0, 4, 8, 99, 105, 102, 102, 111, 2, 32, 3, 0, 4, 8, 105, 110, 3, 0, 4, 8, 105, 110, 97, 106, 3, 0, 8, 105, 116, 114,
-			97, 3, 0, 1, 110, 114, 2, 100, 12, 3, 4, 36, 0, 1, 115, 2, 114, 118, 105, 99, 101, 101, 102, 116, 101, 114, 115, 121, 110, 3,
-			6, 13, 0, 8, 114, 114, 97, 2, 115, 116, 3, 6, 35, 0, 4, 106, 1, 105, 103, 121, 104, 2, 110, 101, 3, 6, 35, 57, 0, 106,
-			1, 108, 97, 103, 0, 106, 8, 98, 101, 108, 112, 2, 101, 114, 0, 4, 1, 99, 101, 100, 2, 109, 98, 101, 114, 3, 6, 36, 0, 1,
-			99, 114, 101, 109, 2, 100, 101, 115, 0, 1, 100, 111, 98, 2, 103, 97, 0, 1, 100, 117, 116, 115, 2, 114, 101, 0, 1, 107, 115, 111,
-			109, 0, 1, 107, 115, 165, 195, 109, 2, 32, 0, 1, 108, 97, 100, 103, 97, 109, 2, 110, 0, 1, 108, 108, 97, 2, 103, 114, 111, 0,
-			1, 109, 97, 110, 116, 101, 105, 118, 2, 115, 101, 114, 0, 1, 109, 103, 114, 111, 98, 2, 115, 116, 101, 114, 0, 1, 109, 105, 107, 114,
-			97, 2, 100, 101, 115, 0, 1, 109, 114, 117, 111, 103, 0, 1, 110, 97, 118, 105, 100, 2, 115, 101, 114, 0, 1, 110, 101, 118, 2, 100,
-			105, 103, 0, 1, 110, 105, 107, 2, 115, 0, 1, 110, 110, 97, 118, 97, 104, 2, 115, 101, 114, 0, 1, 110, 114, 117, 116, 0, 1, 112,
-			117, 107, 2, 12, 0, 1, 112, 117, 111, 116, 0, 1, 114, 97, 108, 2, 100, 111, 0, 1, 114, 107, 115, 105, 100, 2, 116, 12, 0, 1,
-			114, 116, 115, 107, 101, 2, 109, 0, 1, 114, 117, 114, 111, 102, 2, 110, 101, 0, 1, 114, 121, 116, 115, 2, 110, 0, 1, 115, 101, 114,
-			2, 114, 118, 101, 0, 1, 116, 101, 105, 114, 97, 118, 0, 1, 116, 105, 109, 111, 107, 0, 1, 116, 111, 114, 112, 2, 115, 101, 0, 1,
-			116, 112, 101, 115, 2, 109, 98, 101, 114, 0, 1, 116, 115, 107, 101, 2, 114, 110, 0, 1, 118, 111, 110, 2, 109, 98, 101, 114, 0, 8,
-			98, 100, 184, 195, 114, 2, 100, 101, 0, 8, 98, 115, 97, 2, 115, 116, 0, 8, 100, 105, 0, 8, 100, 105, 118, 105, 100, 2, 110, 116,
-			101, 0, 8, 100, 111, 114, 2, 111, 0, 8, 102, 105, 110, 97, 109, 2, 115, 116, 0, 8, 103, 101, 114, 2, 115, 116, 0, 8, 108, 101,
-			2, 118, 0, 8, 108, 101, 99, 2, 98, 101, 114, 0, 8, 108, 108, 111, 107, 2, 103, 97, 0, 8, 108, 111, 109, 2, 115, 116, 0, 8,
-			109, 97, 114, 107, 97, 115, 2, 110, 116, 101, 0, 8, 109, 97, 116, 115, 101, 116, 2, 110, 116, 101, 0, 8, 109, 105, 2, 110, 115, 12,
-			0, 8, 109, 105, 103, 101, 114, 2, 110, 116, 101, 0, 8, 110, 103, 97, 109, 2, 116, 0, 8, 112, 114, 111, 116, 2, 100, 111, 0, 8,
-			114, 105, 2, 110, 101, 0, 8, 115, 121, 102, 109, 101, 2, 109, 0, 8, 116, 97, 107, 2, 100, 101, 114, 0, 8, 116, 110, 101, 114, 97,
-			112, 2, 115, 0, 8, 116, 111, 114, 112, 2, 115, 116, 0, 8, 116, 116, 97, 2, 115, 116, 0, 103, 1, 116, 115, 101, 98, 2, 32, 0,
-			103, 1, 116, 115, 101, 98, 2, 101, 116, 32, 0, 115, 1, 99, 99, 117, 0, 101, 2, 114, 3, 6, 36, 12, 0, 101, 1, 116, 105, 109,
-			111, 107, 2, 110, 3, 6, 36, 13, 0, 114, 1, 98, 105, 2, 105, 97, 12, 3, 6, 36, 34, 0, 4, 110, 101, 1, 108, 114, 111, 102,
-			3, 6, 36, 50, 13, 0, 110, 101, 1, 114, 117, 2, 32, 116, 97, 110, 107, 101, 114, 0, 4, 110, 101, 1, 108, 114, 97, 109, 3, 6,
-			36, 50, 108, 0, 110, 101, 1, 109, 114, 111, 102, 32, 116, 97, 0, 110, 101, 8, 108, 101, 104, 0, 4, 103, 1, 116, 97, 114, 116, 115,
-			2, 32, 3, 6, 36, 57, 0, 103, 8, 108, 108, 111, 107, 2, 101, 0, 4, 109, 1, 10, 2, 32, 28, 33, 12, 3, 6, 36, 65, 0,
+			2, 101, 114, 103, 97, 115, 116, 0, 1, 101, 112, 2, 105, 0, 1, 101, 112, 2, 108, 101, 0, 1, 101, 112, 115, 2, 101, 114, 0, 1,
+			101, 114, 116, 2, 121, 0, 1, 101, 116, 2, 101, 110, 0, 1, 101, 116, 2, 101, 110, 115, 0, 1, 101, 116, 2, 101, 114, 101, 32, 0,
+			1, 101, 116, 110, 105, 2, 97, 110, 116, 0, 1, 101, 116, 115, 0, 1, 101, 116, 116, 105, 109, 105, 100, 0, 1, 101, 117, 110, 105, 109,
+			0, 1, 101, 118, 100, 184, 195, 110, 2, 105, 103, 0, 1, 101, 119, 2, 101, 108, 0, 1, 101, 119, 2, 121, 0, 1, 101, 119, 103, 2,
+			97, 0, 1, 105, 2, 101, 107, 115, 0, 1, 105, 2, 105, 12, 12, 0, 1, 105, 2, 105, 103, 12, 0, 1, 105, 2, 105, 118, 105, 100,
+			0, 1, 105, 2, 111, 101, 117, 0, 1, 105, 2, 111, 107, 105, 0, 1, 105, 2, 111, 107, 116, 114, 105, 110, 101, 114, 101, 0, 1, 105,
+			2, 111, 110, 101, 0, 1, 105, 2, 117, 12, 12, 0, 1, 105, 99, 2, 121, 0, 1, 105, 108, 2, 97, 0, 1, 105, 108, 2, 121, 0,
+			1, 105, 118, 2, 114, 105, 107, 0, 1, 105, 118, 2, 117, 0, 1, 111, 2, 105, 0, 1, 111, 98, 32, 115, 101, 109, 97, 106, 0, 1,
+			111, 107, 2, 101, 109, 110, 101, 114, 101, 0, 1, 111, 107, 2, 101, 110, 115, 0, 1, 111, 107, 2, 105, 0, 1, 111, 107, 2, 111, 108,
+			0, 1, 111, 107, 2, 111, 108, 101, 114, 101, 0, 1, 111, 114, 2, 101, 108, 0, 1, 117, 2, 110, 101, 0, 1, 117, 2, 114, 101, 0,
+			1, 117, 102, 2, 97, 0, 1, 117, 102, 2, 101, 114, 0, 1, 117, 104, 2, 106, 195, 166, 118, 101, 108, 0, 1, 117, 104, 2, 121, 114,
+			0, 1, 117, 107, 101, 115, 0, 1, 117, 109, 2, 101, 114, 105, 110, 103, 0, 1, 117, 114, 32, 101, 116, 115, 2, 101, 0, 1, 117, 114,
+			32, 110, 101, 2, 101, 0, 1, 117, 114, 115, 2, 101, 0, 1, 184, 195, 115, 2, 97, 103, 0, 2, 97, 103, 0, 2, 101, 110, 116, 0,
+			2, 105, 100, 97, 0, 2, 105, 103, 12, 12, 12, 0, 2, 111, 109, 0, 2, 121, 114, 0, 2, 195, 165, 115, 101, 0, 2, 195, 184, 100,
+			0, 2, 195, 184, 114, 0, 8, 105, 2, 101, 114, 32, 12, 0, 8, 105, 2, 121, 0, 8, 105, 102, 2, 101, 108, 0, 8, 105, 103, 97,
+			98, 0, 8, 111, 98, 2, 32, 0, 4, 1, 97, 109, 114, 111, 110, 2, 105, 3, 50, 72, 6, 0, 1, 97, 112, 2, 111, 114, 97, 0,
+			1, 101, 109, 2, 111, 122, 97, 0, 1, 101, 112, 2, 117, 108, 0, 101, 8, 97, 109, 2, 108, 97, 3, 50, 72, 6, 36, 0, 4, 101,
+			1, 97, 98, 2, 107, 114, 105, 3, 50, 72, 14, 0, 101, 1, 97, 98, 2, 108, 101, 100, 101, 114, 12, 0, 101, 1, 97, 98, 2, 109,
+			101, 100, 108, 101, 109, 0, 101, 1, 97, 98, 2, 111, 112, 103, 195, 184, 114, 0, 101, 1, 97, 98, 2, 117, 118, 195, 166, 115, 101, 110,
+			0, 101, 1, 97, 98, 2, 118, 111, 108, 100, 0, 101, 1, 97, 98, 32, 101, 108, 101, 104, 0, 101, 1, 97, 98, 32, 105, 2, 110, 0,
+			101, 1, 97, 98, 32, 110, 105, 100, 0, 101, 1, 97, 98, 32, 110, 105, 109, 0, 101, 1, 97, 98, 32, 115, 0, 101, 1, 97, 98, 32,
+			115, 101, 114, 0, 101, 1, 97, 98, 101, 110, 114, 184, 195, 106, 98, 0, 101, 1, 97, 98, 101, 118, 121, 116, 0, 101, 1, 97, 98, 114,
+			101, 118, 184, 195, 114, 0, 101, 8, 97, 98, 32, 110, 101, 0, 101, 8, 97, 98, 32, 110, 101, 100, 0, 4, 101, 1, 97, 98, 2, 114,
+			111, 3, 50, 72, 14, 6, 0, 101, 1, 105, 109, 2, 110, 97, 111, 0, 4, 105, 103, 1, 101, 118, 3, 50, 72, 37, 0, 105, 103, 1,
+			117, 114, 103, 0, 105, 103, 1, 121, 0, 105, 103, 1, 121, 109, 0, 97, 108, 101, 1, 101, 112, 112, 105, 104, 99, 3, 50, 72, 115, 57,
+			55, 0, 101, 120, 1, 97, 112, 115, 3, 50, 72, 115, 81, 89, 0, 7, 6, 110, 103, 0, 1, 105, 109, 97, 108, 102, 2, 111, 3, 8,
+			50, 81, 0, 1, 105, 102, 2, 114, 101, 3, 8, 68, 0, 1, 97, 114, 111, 2, 117, 3, 8, 68, 81, 0, 1, 97, 114, 111, 2, 101,
+			3, 8, 68, 89, 57, 0, 2, 117, 100, 3, 50, 72, 0, 1, 105, 114, 114, 101, 100, 2, 101, 114, 3, 50, 75, 0, 4, 1, 17, 65,
+			2, 111, 3, 50, 81, 0, 1, 97, 2, 105, 118, 0, 1, 97, 116, 2, 101, 110, 116, 0, 1, 97, 118, 101, 2, 101, 108, 0, 1, 101,
+			103, 2, 105, 118, 12, 0, 1, 101, 103, 114, 111, 109, 2, 114, 121, 0, 1, 101, 104, 2, 101, 109, 0, 1, 101, 104, 2, 105, 118, 0,
+			1, 101, 114, 2, 195, 184, 114, 0, 1, 105, 118, 2, 195, 165, 114, 100, 0, 1, 118, 97, 110, 2, 105, 118, 0, 1, 166, 195, 107, 2,
+			117, 114, 117, 0, 2, 97, 0, 2, 101, 118, 195, 166, 114, 0, 2, 108, 97, 115, 0, 2, 114, 97, 100, 0, 2, 117, 108, 118, 0, 2,
+			121, 109, 110, 97, 115, 116, 0, 2, 195, 166, 108, 100, 0, 2, 195, 166, 110, 103, 101, 114, 0, 8, 97, 2, 17, 65, 0, 8, 105, 102,
+			2, 101, 114, 101, 0, 1, 97, 112, 2, 195, 166, 97, 3, 50, 81, 6, 0, 117, 1, 97, 108, 2, 115, 116, 3, 50, 81, 6, 40, 0,
+			101, 114, 2, 114, 105, 103, 3, 50, 81, 115, 34, 0, 4, 3, 68, 0, 1, 97, 102, 2, 97, 114, 109, 0, 1, 105, 102, 2, 101, 114,
+			101, 110, 12, 0, 4, 1, 97, 2, 105, 111, 103, 114, 3, 68, 81, 0, 1, 105, 116, 2, 101, 110, 116, 0, 1, 117, 102, 2, 101, 114,
+			0, 4, 1, 97, 104, 99, 2, 101, 109, 101, 110, 116, 3, 68, 89, 57, 0, 8, 97, 114, 2, 101, 114, 0, 101, 97, 1, 97, 114, 111,
+			2, 100, 101, 3, 68, 89, 57, 6, 117, 0, 4, 1, 97, 114, 2, 101, 114, 101, 3, 68, 91, 0, 1, 97, 114, 114, 97, 0, 1, 111,
+			108, 108, 97, 2, 101, 0, 101, 114, 1, 105, 102, 3, 68, 108, 0, 7, 6, 111, 110, 0, 8, 108, 97, 115, 3, 6, 108, 68, 0, 110,
+			1, 108, 111, 107, 3, 6, 109, 50, 0, 4, 1, 98, 114, 97, 107, 3, 6, 109, 68, 0, 1, 99, 10, 2, 28, 33, 12, 12, 0, 1,
+			102, 102, 10, 2, 28, 33, 12, 12, 0, 1, 102, 105, 10, 2, 28, 33, 0, 1, 102, 108, 97, 2, 115, 0, 1, 106, 10, 2, 28, 33,
+			12, 12, 0, 1, 108, 10, 2, 28, 33, 12, 12, 0, 1, 112, 10, 2, 28, 33, 12, 12, 0, 1, 114, 114, 101, 112, 0, 1, 115, 166,
+			195, 10, 2, 28, 33, 12, 12, 0, 1, 116, 10, 2, 28, 33, 0, 1, 116, 101, 98, 2, 28, 33, 12, 12, 0, 1, 116, 114, 97, 107,
+			0, 8, 108, 108, 97, 98, 0, 8, 108, 108, 105, 118, 97, 112, 0, 8, 115, 166, 195, 115, 0, 1, 10, 2, 110, 28, 33, 3, 6, 124,
+			0, 4, 1, 21, 2, 28, 33, 12, 12, 12, 3, 6, 124, 50, 0, 1, 102, 101, 108, 10, 2, 28, 33, 0, 1, 102, 111, 10, 2, 28,
+			33, 0, 1, 108, 101, 10, 2, 28, 33, 12, 12, 0, 1, 116, 111, 102, 0, 1, 116, 111, 110, 111, 109, 0, 8, 100, 101, 107, 97, 109,
+			0, 4, 1, 108, 116, 97, 105, 114, 116, 3, 8, 109, 50, 0, 1, 108, 116, 97, 117, 100, 0, 1, 10, 2, 101, 108, 28, 33, 12, 12,
+			3, 39, 50, 0, 4, 1, 98, 98, 105, 103, 3, 109, 50, 0, 1, 98, 101, 100, 101, 114, 0, 1, 101, 110, 0, 1, 101, 114, 102, 0,
+			1, 103, 114, 97, 0, 1, 104, 2, 100, 0, 1, 105, 100, 97, 116, 115, 2, 12, 0, 1, 107, 105, 115, 107, 101, 108, 0, 1, 108, 97,
+			114, 100, 0, 1, 108, 102, 101, 116, 0, 1, 108, 108, 97, 103, 0, 1, 108, 111, 107, 2, 32, 0, 1, 108, 114, 101, 112, 0, 1, 108,
+			114, 111, 0, 1, 110, 97, 98, 105, 108, 0, 1, 112, 2, 116, 0, 1, 115, 2, 100, 0, 1, 115, 105, 98, 0, 1, 115, 105, 108, 97,
+			0, 1, 115, 110, 105, 98, 111, 114, 0, 1, 116, 2, 32, 0, 1, 116, 2, 105, 99, 0, 1, 116, 2, 115, 32, 0, 1, 116, 2, 115,
+			118, 0, 1, 116, 97, 103, 101, 109, 0, 1, 116, 97, 114, 97, 109, 0, 1, 116, 116, 103, 166, 195, 118, 100, 184, 195, 100, 0, 1, 121,
+			114, 98, 109, 101, 0, 2, 100, 18, 69, 0, 2, 116, 111, 108, 0, 8, 109, 2, 116, 101, 32, 0, 110, 1, 114, 100, 2, 105, 110, 103,
+			0, 116, 121, 1, 109, 3, 109, 50, 47, 111, 0, 100, 1, 102, 3, 109, 50, 72, 0, 100, 1, 112, 115, 3, 109, 50, 72, 6, 0, 4,
+			1, 98, 2, 32, 3, 109, 68, 0, 1, 98, 2, 101, 110, 32, 0, 1, 108, 97, 115, 0, 1, 108, 97, 116, 0, 1, 108, 108, 105, 118,
+			97, 112, 0, 1, 110, 103, 0, 1, 114, 98, 0, 1, 115, 166, 195, 115, 0, 103, 1, 107, 0, 98, 111, 110, 1, 98, 3, 109, 68, 71,
+			109, 50, 0, 106, 111, 117, 114, 1, 98, 3, 109, 68, 90, 6, 40, 34, 0, 1, 98, 114, 97, 107, 2, 97, 116, 3, 124, 50, 0, 1,
+			116, 111, 110, 111, 109, 2, 105, 3, 124, 50, 6, 0, 7, 6, 111, 114, 0, 8, 102, 2, 32, 118, 105, 108, 100, 32, 3, 2, 39, 34,
+			0, 8, 102, 2, 104, 111, 108, 100, 101, 3, 2, 108, 0, 101, 116, 97, 103, 8, 102, 2, 115, 111, 109, 3, 2, 108, 112, 6, 47, 117,
+			12, 0, 8, 102, 2, 21, 12, 12, 3, 2, 109, 0, 1, 102, 2, 104, 97, 108, 17, 65, 12, 12, 3, 2, 125, 0, 8, 102, 2, 115,
+			107, 101, 108, 108, 105, 12, 3, 2, 125, 12, 0, 1, 116, 111, 109, 2, 101, 114, 3, 6, 39, 0, 8, 102, 2, 101, 116, 32, 12, 3,
+			6, 39, 14, 0, 4, 1, 100, 2, 28, 33, 12, 3, 6, 39, 34, 0, 1, 100, 97, 101, 10, 2, 28, 33, 0, 1, 102, 10, 2, 28,
+			33, 0, 1, 110, 2, 28, 33, 12, 0, 1, 110, 101, 10, 2, 28, 33, 0, 1, 116, 10, 2, 105, 101, 28, 33, 0, 105, 117, 109, 1,
+			116, 10, 2, 28, 33, 12, 3, 6, 39, 34, 37, 125, 65, 0, 4, 1, 102, 103, 110, 105, 115, 108, 101, 104, 2, 115, 3, 6, 108, 0,
+			1, 112, 101, 114, 2, 116, 101, 114, 0, 8, 107, 115, 101, 2, 116, 101, 3, 6, 108, 12, 0, 100, 8, 107, 107, 97, 3, 6, 108, 12,
+			19, 72, 0, 1, 107, 101, 100, 2, 32, 3, 6, 108, 12, 34, 0, 100, 1, 99, 110, 111, 99, 2, 101, 3, 6, 108, 12, 72, 0, 100,
+			1, 118, 2, 105, 3, 6, 109, 34, 72, 0, 4, 1, 112, 109, 105, 2, 116, 32, 3, 6, 125, 0, 1, 112, 112, 97, 114, 2, 116, 0,
+			8, 102, 2, 104, 111, 108, 100, 12, 0, 8, 102, 2, 109, 101, 12, 12, 0, 4, 1, 102, 111, 114, 112, 2, 109, 97, 3, 6, 125, 12,
+			0, 1, 107, 97, 2, 100, 0, 1, 107, 101, 114, 2, 100, 0, 1, 112, 115, 107, 101, 2, 116, 0, 8, 98, 97, 2, 116, 0, 8, 102,
+			2, 97, 32, 12, 0, 8, 102, 2, 97, 110, 32, 12, 0, 8, 102, 2, 97, 110, 107, 195, 184, 114, 101, 110, 100, 101, 12, 0, 8, 102,
+			2, 97, 110, 110, 195, 166, 118, 110, 116, 12, 0, 8, 102, 2, 97, 110, 115, 97, 116, 12, 0, 8, 102, 2, 97, 110, 115, 116, 105, 108,
+			108, 101, 12, 0, 8, 102, 2, 97, 110, 115, 116, 195, 165, 101, 110, 100, 101, 12, 0, 8, 102, 2, 98, 101, 104, 97, 110, 100, 12, 0,
+			8, 102, 2, 98, 101, 104, 111, 12, 0, 8, 102, 2, 98, 101, 110, 32, 12, 0, 8, 102, 2, 98, 101, 110, 101, 110, 101, 12, 0, 8,
+			102, 2, 98, 101, 110, 101, 116, 12, 0, 8, 102, 2, 98, 101, 110, 115, 12, 0, 8, 102, 2, 98, 101, 114, 101, 100, 12, 0, 8, 102,
+			2, 98, 105, 108, 12, 0, 8, 102, 2, 98, 106, 101, 114, 103, 12, 0, 8, 102, 2, 98, 111, 103, 115, 116, 97, 118, 12, 0, 8, 102,
+			2, 98, 117, 100, 32, 12, 0, 8, 102, 2, 98, 117, 100, 115, 12, 0, 8, 102, 2, 98, 117, 110, 100, 12, 0, 8, 102, 2, 98, 195,
+			184, 110, 12, 0, 8, 102, 2, 99, 101, 110, 115, 117, 114, 12, 0, 8, 102, 2, 100, 97, 110, 115, 101, 114, 12, 0, 8, 102, 2, 100,
+			101, 108, 32, 12, 0, 8, 102, 2, 100, 101, 108, 101, 110, 32, 12, 0, 8, 102, 2, 100, 101, 108, 101, 110, 101, 32, 12, 0, 8, 102,
+			2, 100, 111, 109, 12, 0, 8, 102, 2, 100, 114, 105, 110, 103, 12, 0, 8, 102, 2, 100, 195, 166, 107, 32, 12, 0, 8, 102, 2, 100,
+			195, 166, 107, 107, 101, 110, 101, 12, 0, 8, 102, 2, 100, 195, 166, 107, 115, 12, 0, 8, 102, 2, 102, 97, 100, 101, 114, 12, 0, 8,
+			102, 2, 102, 97, 114, 12, 0, 8, 102, 2, 102, 114, 97, 12, 0, 8, 102, 2, 102, 195, 166, 100, 114, 12, 0, 8, 102, 2, 103, 97,
+			110, 103, 12, 0, 8, 102, 2, 103, 101, 109, 97, 107, 12, 0, 8, 102, 2, 103, 114, 117, 110, 100, 12, 0, 8, 102, 2, 103, 195, 165,
+			114, 100, 12, 0, 8, 102, 2, 103, 195, 166, 110, 103, 101, 114, 12, 0, 8, 102, 2, 103, 195, 166, 114, 101, 12, 0, 8, 102, 2, 104,
+			97, 108, 12, 0, 8, 102, 2, 104, 97, 109, 12, 0, 8, 102, 2, 104, 97, 118, 101, 12, 0, 8, 102, 2, 104, 101, 110, 12, 0, 8,
+			102, 2, 104, 105, 115, 116, 111, 12, 0, 8, 102, 2, 104, 106, 117, 108, 12, 0, 8, 102, 2, 104, 111, 108, 100, 101, 116, 12, 0, 8,
+			102, 2, 104, 117, 100, 12, 0, 8, 102, 2, 104, 117, 115, 12, 0, 8, 102, 2, 104, 195, 165, 110, 100, 12, 0, 8, 102, 2, 104, 195,
+			165, 110, 100, 115, 12, 0, 8, 102, 2, 104, 195, 166, 110, 103, 12, 0, 8, 102, 2, 107, 97, 109, 109, 101, 114, 0, 8, 102, 2, 107,
+			97, 114, 108, 12, 0, 8, 102, 2, 107, 108, 111, 103, 12, 0, 8, 102, 2, 107, 108, 195, 166, 100, 101, 116, 12, 0, 8, 102, 2, 107,
+			111, 110, 116, 111, 114, 12, 0, 8, 102, 2, 107, 114, 111, 112, 12, 0, 8, 102, 2, 107, 118, 105, 110, 100, 101, 12, 0, 8, 102, 2,
+			107, 195, 166, 109, 112, 101, 114, 12, 0, 8, 102, 2, 107, 195, 166, 114, 108, 105, 103, 104, 101, 100, 0, 8, 102, 2, 107, 195, 184, 98,
+			12, 0, 8, 102, 2, 108, 97, 103, 12, 0, 8, 102, 2, 108, 97, 103, 115, 12, 0, 8, 102, 2, 108, 97, 110, 100, 12, 0, 8, 102,
+			2, 108, 101, 109, 12, 0, 8, 102, 2, 108, 121, 100, 12, 0, 8, 102, 2, 108, 121, 115, 12, 0, 8, 102, 2, 108, 195, 166, 98, 101,
+			12, 0, 8, 102, 2, 108, 195, 166, 103, 103, 101, 114, 12, 0, 8, 102, 2, 108, 195, 166, 110, 115, 12, 0, 8, 102, 2, 108, 195, 166,
+			115, 101, 12, 0, 8, 102, 2, 109, 97, 108, 100, 101, 104, 121, 100, 12, 0, 8, 102, 2, 109, 97, 110, 100, 12, 0, 8, 102, 2, 109,
+			98, 97, 114, 12, 0, 8, 102, 2, 109, 98, 114, 195, 184, 100, 12, 0, 8, 102, 2, 109, 101, 108, 105, 103, 12, 0, 8, 102, 2, 109,
+			108, 101, 12, 0, 8, 102, 2, 109, 115, 12, 0, 8, 102, 2, 109, 116, 195, 184, 12, 0, 8, 102, 2, 109, 117, 101, 12, 0, 8, 102,
+			2, 109, 121, 110, 100, 101, 114, 12, 0, 8, 102, 2, 109, 195, 165, 108, 12, 0, 8, 102, 2, 109, 195, 166, 110, 100, 12, 0, 8, 102,
+			2, 110, 97, 118, 110, 12, 0, 8, 102, 2, 110, 101, 109, 32, 12, 0, 8, 102, 2, 110, 101, 109, 116, 32, 12, 0, 8, 102, 2, 111,
+			109, 116, 97, 108, 101, 12, 0, 8, 102, 2, 111, 114, 100, 12, 0, 8, 102, 2, 111, 118, 101, 114, 12, 0, 8, 102, 2, 112, 97, 110,
+			116, 104, 97, 118, 101, 114, 12, 0, 8, 102, 2, 112, 97, 114, 116, 105, 12, 0, 8, 102, 2, 112, 111, 115, 116, 12, 0, 8, 102, 2,
+			112, 114, 97, 107, 116, 105, 107, 12, 0, 8, 102, 2, 112, 114, 101, 109, 105, 101, 114, 101, 12, 0, 8, 102, 2, 112, 114, 111, 103, 114,
+			97, 109, 109, 101, 114, 101, 12, 0, 8, 102, 2, 112, 114, 195, 184, 118, 101, 12, 0, 8, 102, 2, 112, 195, 165, 12, 0, 8, 102, 2,
+			114, 97, 110, 103, 12, 0, 8, 102, 2, 114, 101, 115, 116, 12, 0, 8, 102, 2, 114, 101, 116, 12, 0, 8, 102, 2, 114, 105, 100, 101,
+			114, 12, 0, 8, 102, 2, 114, 105, 103, 101, 12, 0, 8, 102, 2, 114, 117, 100, 101, 12, 0, 8, 102, 2, 114, 195, 165, 100, 32, 12,
+			0, 8, 102, 2, 115, 97, 110, 103, 101, 114, 12, 0, 8, 102, 2, 115, 97, 116, 115, 12, 0, 8, 102, 2, 115, 105, 100, 101, 12, 0,
+			8, 102, 2, 115, 107, 101, 12, 0, 8, 102, 2, 115, 107, 101, 108, 32, 12, 0, 8, 102, 2, 115, 107, 101, 108, 115, 98, 101, 104, 97,
+			110, 100, 108, 12, 0, 8, 102, 2, 115, 107, 101, 108, 115, 108, 195, 184, 115, 12, 0, 8, 102, 2, 115, 107, 101, 114, 12, 0, 8, 102,
+			2, 115, 107, 110, 12, 0, 8, 102, 2, 115, 107, 111, 108, 12, 0, 8, 102, 2, 115, 107, 114, 105, 102, 116, 12, 0, 8, 102, 2, 115,
+			107, 117, 100, 12, 0, 8, 102, 2, 115, 107, 121, 108, 12, 0, 8, 102, 2, 115, 107, 195, 166, 114, 101, 12, 0, 8, 102, 2, 115, 107,
+			195, 166, 114, 109, 12, 0, 8, 102, 2, 115, 108, 97, 103, 12, 0, 8, 102, 2, 115, 108, 97, 103, 32, 12, 0, 8, 102, 2, 115, 108,
+			97, 103, 115, 12, 0, 8, 102, 2, 115, 109, 97, 103, 12, 0, 8, 102, 2, 115, 111, 109, 109, 101, 114, 12, 0, 8, 102, 2, 115, 111,
+			114, 103, 12, 0, 8, 102, 2, 115, 112, 97, 110, 100, 12, 0, 8, 102, 2, 115, 112, 105, 108, 32, 12, 0, 8, 102, 2, 115, 112, 105,
+			108, 108, 101, 110, 101, 12, 0, 8, 102, 2, 115, 112, 105, 108, 108, 101, 116, 12, 0, 8, 102, 2, 115, 112, 105, 114, 12, 0, 8, 102,
+			2, 115, 112, 114, 105, 110, 103, 12, 0, 8, 102, 2, 115, 112, 195, 166, 110, 100, 116, 12, 0, 8, 102, 2, 115, 116, 97, 100, 12, 0,
+			8, 102, 2, 115, 116, 97, 110, 100, 101, 114, 12, 0, 8, 102, 2, 115, 116, 97, 118, 101, 108, 115, 101, 12, 0, 8, 102, 2, 115, 116,
+			97, 118, 110, 12, 0, 8, 102, 2, 115, 116, 98, 111, 116, 97, 110, 105, 107, 12, 0, 8, 102, 2, 115, 116, 107, 97, 110, 100, 105, 100,
+			97, 116, 12, 0, 8, 102, 2, 115, 116, 108, 105, 103, 12, 0, 8, 102, 2, 115, 116, 109, 97, 110, 100, 12, 0, 8, 102, 2, 115, 116,
+			109, 195, 166, 115, 115, 105, 103, 12, 0, 8, 102, 2, 115, 116, 117, 100, 105, 101, 12, 0, 8, 102, 2, 115, 116, 117, 100, 105, 117, 109,
+			12, 0, 8, 102, 2, 115, 116, 117, 101, 12, 0, 8, 102, 2, 115, 116, 118, 195, 166, 115, 101, 110, 12, 0, 8, 102, 2, 115, 116, 122,
+			111, 111, 108, 111, 103, 105, 12, 0, 8, 102, 2, 115, 116, 195, 166, 100, 101, 114, 12, 0, 8, 102, 2, 115, 116, 195, 166, 118, 110, 12,
+			0, 8, 102, 2, 115, 118, 97, 114, 32, 12, 0, 8, 102, 2, 115, 118, 97, 114, 115, 12, 0, 8, 102, 2, 115, 195, 165, 32, 12, 0,
+			8, 102, 2, 115, 195, 166, 100, 101, 12, 0, 8, 102, 2, 115, 195, 166, 116, 12, 0, 8, 102, 2, 116, 97, 110, 100, 12, 0, 8, 102,
+			2, 116, 97, 110, 100, 115, 12, 0, 8, 102, 2, 116, 101, 103, 110, 32, 12, 0, 8, 102, 2, 116, 101, 103, 110, 105, 110, 103, 115, 114,
+			101, 116, 12, 0, 8, 102, 2, 116, 101, 107, 115, 116, 12, 0, 8, 102, 2, 116, 101, 108, 116, 12, 0, 8, 102, 2, 116, 102, 97, 114,
+			101, 110, 100, 101, 12, 0, 8, 102, 2, 116, 105, 100, 12, 0, 8, 102, 2, 116, 105, 108, 12, 0, 8, 102, 2, 116, 108, 195, 184, 98,
+			101, 110, 100, 101, 12, 0, 8, 102, 2, 116, 111, 103, 12, 0, 8, 102, 2, 116, 111, 118, 12, 0, 8, 102, 2, 116, 114, 97, 112, 112,
+			101, 12, 0, 8, 102, 2, 116, 114, 105, 110, 32, 12, 0, 8, 102, 2, 116, 114, 105, 110, 115, 12, 0, 8, 102, 2, 116, 114, 111, 112,
+			12, 0, 8, 102, 2, 116, 114, 121, 107, 12, 0, 8, 102, 2, 116, 117, 110, 103, 101, 12, 0, 8, 102, 2, 116, 195, 166, 110, 100, 101,
+			114, 12, 0, 8, 102, 2, 116, 195, 166, 112, 112, 101, 12, 0, 8, 102, 2, 117, 100, 12, 12, 0, 8, 102, 2, 117, 100, 101, 32, 12,
+			0, 8, 102, 2, 118, 97, 108, 103, 12, 0, 8, 102, 2, 118, 97, 114, 109, 12, 0, 8, 102, 2, 118, 97, 114, 115, 12, 0, 8, 102,
+			2, 118, 97, 115, 107, 32, 12, 0, 8, 102, 2, 118, 101, 106, 101, 110, 12, 0, 8, 102, 2, 118, 195, 166, 114, 101, 108, 115, 101, 12,
+			0, 8, 102, 2, 195, 165, 100, 12, 0, 8, 102, 2, 195, 165, 114, 12, 12, 0, 8, 102, 32, 110, 101, 2, 115, 118, 97, 114, 101, 114,
+			12, 0, 8, 102, 109, 111, 107, 2, 116, 0, 8, 112, 115, 110, 97, 114, 116, 2, 116, 0, 101, 110, 100, 8, 102, 2, 101, 12, 3, 6,
+			125, 12, 4, 36, 50, 0, 4, 8, 102, 2, 102, 117, 108, 100, 101, 110, 100, 116, 12, 3, 6, 125, 12, 12, 0, 8, 102, 2, 109, 102,
+			97, 115, 116, 12, 0, 8, 102, 2, 109, 102, 114, 105, 12, 0, 8, 102, 2, 109, 103, 105, 118, 12, 0, 8, 102, 2, 109, 105, 100, 100,
+			97, 103, 12, 0, 8, 102, 2, 109, 107, 97, 103, 101, 12, 0, 8, 102, 2, 109, 108, 195, 166, 114, 101, 12, 0, 8, 102, 2, 109, 108,
+			195, 184, 115, 12, 0, 8, 102, 2, 109, 110, 105, 110, 103, 12, 0, 8, 102, 2, 109, 111, 114, 12, 0, 8, 102, 2, 109, 112, 114, 101,
+			115, 115, 101, 12, 0, 8, 102, 2, 109, 195, 184, 100, 114, 101, 12, 0, 109, 101, 114, 8, 102, 2, 32, 12, 3, 6, 125, 12, 12, 65,
+			108, 11, 0, 116, 97, 108, 101, 114, 8, 102, 2, 12, 3, 6, 125, 12, 47, 118, 55, 109, 0, 109, 115, 115, 97, 103, 8, 102, 2, 12,
+			3, 6, 125, 12, 65, 89, 4, 89, 117, 0, 4, 100, 2, 101, 110, 116, 108, 105, 103, 12, 3, 6, 125, 12, 72, 0, 100, 2, 110, 105,
+			110, 0, 8, 102, 2, 100, 195, 184, 114, 12, 3, 6, 125, 51, 0, 116, 8, 102, 2, 115, 195, 166, 116, 116, 101, 12, 3, 6, 125, 72,
+			0, 8, 102, 2, 109, 101, 108, 12, 12, 3, 6, 126, 0, 4, 8, 102, 2, 108, 111, 118, 101, 114, 12, 3, 6, 126, 12, 0, 8, 102,
+			2, 108, 121, 103, 116, 101, 12, 0, 101, 8, 102, 2, 17, 67, 114, 12, 12, 3, 6, 127, 12, 14, 0, 1, 10, 2, 105, 115, 107, 28,
+			33, 3, 7, 39, 0, 1, 10, 2, 101, 114, 28, 33, 3, 7, 39, 12, 0, 1, 10, 2, 28, 33, 12, 3, 8, 8, 108, 0, 100, 1,
+			109, 2, 101, 116, 3, 8, 39, 51, 0, 100, 101, 2, 32, 3, 39, 12, 108, 0, 4, 1, 115, 2, 116, 3, 39, 34, 0, 1, 115, 2,
+			116, 101, 0, 1, 116, 115, 2, 116, 0, 1, 118, 2, 18, 76, 12, 0, 1, 118, 115, 2, 101, 12, 0, 8, 2, 97, 0, 8, 102, 2,
+			101, 108, 32, 12, 0, 8, 110, 2, 100, 0, 100, 8, 2, 114, 101, 116, 12, 0, 101, 110, 115, 105, 115, 8, 102, 2, 107, 3, 39, 34,
+			6, 119, 50, 89, 37, 89, 0, 4, 101, 8, 102, 2, 108, 32, 12, 3, 39, 34, 6, 119, 55, 0, 101, 8, 102, 2, 108, 108, 101, 12,
+			0, 101, 108, 1, 109, 0, 109, 3, 39, 34, 65, 0, 100, 1, 107, 2, 114, 101, 110, 103, 3, 39, 34, 72, 0, 100, 114, 117, 112, 3,
+			39, 34, 72, 34, 127, 71, 0, 2, 97, 108, 3, 39, 51, 0, 101, 114, 1, 98, 3, 39, 108, 0, 101, 1, 98, 3, 39, 108, 11, 0,
+			4, 1, 102, 2, 32, 3, 108, 0, 1, 102, 2, 109, 101, 114, 101, 0, 1, 102, 114, 101, 100, 0, 1, 108, 121, 97, 116, 0, 1, 109,
+			117, 104, 0, 1, 116, 107, 101, 114, 0, 1, 116, 107, 101, 115, 0, 8, 102, 2, 102, 111, 114, 121, 115, 101, 114, 117, 109, 12, 0, 8,
+			102, 2, 109, 101, 110, 101, 12, 12, 0, 8, 102, 2, 109, 101, 110, 116, 101, 12, 12, 0, 8, 102, 2, 109, 101, 114, 101, 12, 12, 0,
+			8, 102, 2, 109, 101, 114, 105, 12, 12, 0, 8, 102, 2, 114, 101, 116, 110, 105, 12, 0, 4, 1, 10, 2, 105, 28, 33, 12, 3, 108,
+			6, 0, 8, 102, 2, 101, 108, 115, 107, 12, 12, 0, 8, 102, 2, 114, 101, 116, 116, 101, 12, 0, 101, 8, 102, 2, 110, 12, 12, 3,
+			108, 6, 36, 12, 0, 101, 118, 8, 102, 2, 105, 103, 101, 3, 108, 6, 36, 12, 84, 0, 4, 101, 110, 107, 108, 8, 102, 2, 101, 12,
+			3, 108, 6, 36, 50, 49, 55, 0, 101, 110, 107, 108, 8, 102, 2, 105, 110, 103, 0, 108, 101, 97, 110, 115, 8, 3, 108, 12, 55, 36,
+			50, 89, 0, 4, 100, 1, 102, 2, 12, 3, 108, 12, 72, 0, 100, 1, 103, 2, 111, 110, 0, 100, 8, 108, 2, 32, 0, 100, 8, 108,
+			2, 101, 114, 32, 0, 116, 104, 1, 110, 3, 108, 12, 87, 0, 4, 100, 1, 107, 2, 101, 108, 3, 108, 34, 72, 0, 100, 1, 118, 2,
+			101, 0, 100, 2, 105, 110, 12, 0, 100, 1, 98, 2, 101, 108, 3, 108, 34, 72, 6, 0, 100, 111, 110, 110, 97, 110, 115, 3, 108, 34,
+			72, 39, 50, 6, 117, 50, 89, 0, 101, 1, 102, 110, 101, 103, 2, 110, 12, 3, 108, 36, 12, 0, 108, 121, 115, 116, 8, 102, 3, 108,
+			55, 6, 132, 89, 72, 0, 100, 2, 114, 117, 107, 3, 108, 72, 6, 0, 1, 102, 115, 105, 109, 2, 115, 116, 195, 165, 3, 109, 0, 1,
+			102, 2, 107, 195, 184, 108, 3, 109, 4, 0, 100, 1, 118, 104, 2, 97, 110, 3, 109, 72, 0, 4, 100, 1, 102, 2, 195, 166, 3, 109,
+			72, 6, 0, 100, 1, 102, 2, 195, 184, 0, 100, 2, 12, 12, 3, 124, 34, 0, 4, 100, 1, 109, 2, 101, 114, 3, 124, 34, 72, 0,
+			100, 1, 116, 2, 101, 110, 101, 110, 12, 0, 100, 8, 116, 2, 12, 12, 0, 100, 105, 115, 107, 1, 110, 3, 124, 34, 72, 111, 89, 81,
+			0, 100, 101, 1, 98, 2, 110, 100, 101, 3, 124, 34, 116, 0, 4, 100, 1, 106, 2, 97, 110, 3, 124, 51, 72, 0, 100, 1, 106, 2,
+			105, 0, 100, 101, 2, 110, 101, 32, 12, 3, 124, 108, 0, 100, 101, 1, 106, 2, 110, 3, 124, 109, 0, 4, 1, 98, 2, 116, 101, 3,
+			125, 0, 1, 102, 2, 101, 110, 0, 1, 102, 2, 116, 101, 114, 12, 0, 1, 110, 2, 109, 0, 1, 112, 2, 116, 114, 195, 166, 116, 0,
+			1, 115, 2, 116, 17, 65, 0, 1, 116, 115, 2, 109, 0, 1, 118, 2, 32, 0, 1, 118, 108, 97, 0, 8, 2, 105, 0, 8, 102, 2,
+			102, 97, 110, 103, 12, 0, 8, 102, 2, 102, 101, 108, 116, 12, 0, 8, 102, 2, 102, 105, 108, 109, 12, 0, 8, 102, 2, 102, 106, 111,
+			114, 12, 0, 8, 102, 2, 102, 111, 114, 100, 12, 0, 8, 102, 2, 102, 111, 114, 102, 111, 100, 12, 0, 8, 102, 2, 102, 111, 114, 115,
+			116, 195, 166, 114, 107, 12, 0, 8, 102, 2, 102, 111, 114, 115, 195, 184, 103, 12, 0, 8, 102, 2, 102, 195, 184, 100, 100, 101, 114, 12,
+			0, 8, 102, 2, 103, 97, 115, 116, 12, 0, 8, 102, 2, 107, 195, 184, 114, 115, 101, 108, 115, 114, 101, 116, 12, 0, 8, 102, 2, 111,
+			114, 100, 110, 0, 8, 102, 2, 115, 107, 121, 108, 100, 116, 12, 3, 125, 6, 0, 8, 102, 2, 107, 97, 110, 116, 12, 3, 125, 6, 12,
+			0, 4, 1, 98, 2, 17, 67, 32, 3, 125, 12, 0, 1, 98, 2, 116, 17, 67, 0, 1, 102, 2, 98, 117, 110, 100, 0, 1, 102, 2,
+			104, 195, 166, 110, 103, 12, 0, 1, 102, 2, 109, 17, 67, 0, 1, 102, 2, 109, 32, 0, 1, 102, 2, 109, 101, 0, 1, 102, 2, 116,
+			32, 0, 1, 102, 100, 117, 2, 115, 107, 101, 0, 1, 109, 2, 102, 0, 1, 109, 2, 109, 0, 1, 109, 2, 115, 101, 0, 1, 110, 2,
+			115, 107, 0, 1, 112, 109, 105, 2, 116, 101, 0, 1, 112, 115, 2, 116, 0, 1, 112, 115, 107, 101, 2, 116, 101, 114, 101, 0, 1, 116,
+			2, 18, 71, 0, 1, 118, 2, 101, 12, 0, 1, 118, 2, 116, 0, 2, 116, 111, 0, 8, 102, 2, 103, 195, 165, 114, 115, 12, 0, 8,
+			102, 2, 107, 108, 195, 166, 100, 101, 12, 0, 8, 102, 2, 114, 105, 110, 103, 32, 0, 8, 102, 2, 114, 105, 110, 103, 101, 110, 0, 4,
+			8, 102, 2, 108, 121, 100, 101, 110, 100, 101, 12, 3, 125, 12, 6, 0, 8, 102, 2, 108, 121, 100, 101, 114, 12, 0, 117, 100, 101, 110,
+			8, 102, 2, 32, 12, 3, 125, 12, 6, 40, 86, 14, 50, 0, 4, 100, 1, 104, 2, 101, 3, 125, 12, 72, 0, 100, 2, 110, 101, 12,
+			0, 116, 1, 102, 2, 115, 195, 166, 116, 0, 100, 114, 101, 2, 12, 3, 125, 12, 72, 34, 108, 0, 101, 1, 102, 2, 115, 17, 67, 12,
+			3, 125, 12, 125, 0, 1, 112, 2, 116, 3, 125, 34, 0, 100, 2, 114, 101, 116, 105, 108, 12, 3, 125, 34, 72, 0, 1, 109, 117, 104,
+			2, 105, 3, 125, 51, 0, 100, 101, 97, 117, 120, 1, 98, 3, 125, 51, 72, 6, 124, 0, 105, 101, 110, 2, 116, 101, 114, 3, 125, 57,
+			13, 50, 0, 109, 111, 110, 8, 104, 3, 125, 65, 6, 39, 50, 0, 101, 8, 102, 2, 21, 12, 12, 3, 125, 126, 0, 103, 101, 1, 109,
+			3, 125, 126, 14, 0, 1, 118, 104, 3, 126, 0, 4, 1, 107, 2, 116, 3, 126, 12, 0, 1, 107, 2, 116, 17, 65, 0, 4, 100, 2,
+			101, 110, 12, 3, 126, 72, 0, 100, 2, 101, 110, 101, 110, 12, 0, 100, 101, 110, 1, 110, 3, 126, 109, 50, 0, 7, 6, 112, 104, 0,
+			2, 105, 108, 3, 83, 0, 111, 101, 3, 83, 37, 0, 105, 108, 108, 105, 112, 112, 101, 3, 83, 37, 55, 6, 37, 12, 48, 0, 105, 108,
+			97, 100, 101, 108, 112, 104, 105, 97, 3, 83, 37, 55, 117, 72, 6, 115, 55, 83, 37, 117, 0, 7, 6, 116, 105, 0, 4, 1, 105, 99,
+			105, 100, 110, 101, 112, 112, 97, 2, 115, 3, 8, 47, 37, 0, 1, 105, 103, 110, 105, 110, 101, 109, 2, 115, 0, 1, 105, 103, 110, 121,
+			114, 97, 108, 2, 115, 0, 1, 105, 107, 97, 114, 2, 115, 0, 1, 105, 107, 110, 111, 114, 98, 2, 115, 0, 1, 105, 108, 117, 108, 108,
+			101, 99, 2, 115, 0, 1, 105, 114, 101, 116, 102, 105, 100, 2, 115, 0, 1, 105, 114, 116, 115, 97, 103, 2, 115, 0, 1, 105, 116, 97,
+			112, 101, 104, 2, 115, 0, 1, 110, 97, 114, 101, 2, 115, 0, 115, 1, 115, 97, 112, 3, 47, 6, 37, 89, 0, 108, 1, 114, 2, 32,
+			3, 47, 36, 55, 0, 4, 108, 2, 98, 97, 103, 101, 3, 47, 36, 55, 6, 0, 108, 2, 102, 111, 114, 110, 0, 108, 2, 102, 114, 101,
+			100, 115, 0, 108, 2, 102, 195, 166, 108, 100, 105, 103, 0, 108, 2, 102, 195, 166, 108, 108, 101, 115, 0, 108, 2, 103, 111, 100, 101, 104,
+			97, 118, 101, 110, 100, 101, 0, 108, 2, 103, 111, 100, 101, 115, 101, 0, 108, 2, 103, 111, 100, 101, 115, 101, 100, 100, 101, 108, 0, 108,
+			2, 103, 111, 100, 101, 115, 107, 114, 105, 118, 101, 0, 108, 2, 103, 114, 117, 110, 100, 108, 105, 103, 103, 101, 110, 100, 101, 0, 108, 2,
+			103, 195, 166, 110, 103, 101, 108, 105, 103, 0, 108, 2, 105, 110, 116, 101, 116, 103, 195, 184, 114, 101, 0, 108, 2, 105, 110, 116, 101, 116,
+			103, 195, 184, 114, 101, 108, 115, 101, 0, 108, 2, 107, 101, 110, 100, 101, 103, 105, 118, 101, 0, 108, 2, 107, 101, 110, 100, 101, 103, 105,
+			118, 101, 108, 115, 101, 0, 108, 2, 108, 97, 100, 101, 108, 105, 103, 0, 108, 2, 108, 105, 103, 101, 0, 108, 2, 108, 105, 103, 101, 109,
+			101, 100, 0, 108, 2, 108, 121, 107, 107, 101, 0, 108, 2, 111, 118, 101, 114, 115, 0, 108, 2, 112, 97, 115, 32, 0, 108, 2, 114, 101,
+			116, 116, 101, 108, 195, 166, 103, 103, 101, 0, 108, 2, 114, 101, 116, 116, 101, 118, 105, 115, 101, 0, 108, 2, 114, 101, 116, 116, 101, 118,
+			105, 115, 110, 105, 110, 103, 0, 108, 2, 115, 97, 109, 109, 101, 110, 0, 108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 109, 101, 110, 0,
+			108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 109, 101, 116, 0, 108, 2, 115, 107, 97, 100, 101, 107, 111, 109, 115, 116, 0, 108, 2, 115,
+			116, 101, 100, 101, 107, 111, 109, 115, 116, 0, 108, 2, 115, 116, 101, 100, 101, 108, 105, 103, 0, 108, 2, 115, 116, 101, 100, 101, 118, 195,
+			166, 114, 0, 108, 2, 115, 116, 101, 100, 101, 118, 195, 166, 114, 101, 108, 115, 101, 0, 108, 2, 115, 116, 101, 100, 101, 118, 195, 166, 114,
+			101, 110, 100, 101, 0, 108, 2, 115, 116, 114, 195, 166, 107, 107, 101, 108, 105, 103, 0, 108, 2, 115, 121, 110, 101, 107, 111, 109, 115, 116,
+			0, 108, 2, 115, 121, 110, 101, 108, 97, 100, 101, 110, 100, 101, 0, 1, 115, 97, 98, 2, 111, 110, 3, 72, 57, 0, 4, 1, 10, 2,
+			111, 110, 12, 3, 91, 0, 1, 97, 112, 2, 101, 110, 116, 0, 1, 107, 97, 2, 101, 0, 1, 107, 101, 108, 2, 101, 0, 1, 111, 118,
+			107, 2, 101, 110, 0, 2, 195, 184, 115, 12, 0, 7, 6, 195, 165, 0, 1, 115, 97, 106, 2, 32, 3, 6, 108, 0, 4, 1, 116, 115,
+			100, 111, 109, 105, 117, 2, 101, 108, 105, 103, 3, 6, 125, 0, 114, 1, 110, 114, 111, 118, 104, 0, 4, 1, 112, 110, 101, 118, 111, 2,
+			32, 3, 6, 126, 0, 1, 112, 165, 195, 103, 2, 109, 111, 100, 0, 101, 1, 103, 100, 110, 117, 2, 108, 105, 103, 0, 101, 1, 110, 112,
+			111, 2, 108, 105, 103, 0, 101, 1, 116, 115, 100, 111, 109, 105, 117, 2, 108, 105, 103, 0, 101, 1, 116, 115, 114, 111, 102, 2, 108, 105,
+			103, 0, 101, 1, 116, 115, 165, 195, 112, 2, 108, 105, 103, 0, 4, 1, 108, 98, 2, 21, 3, 108, 0, 1, 112, 115, 2, 100, 111, 109,
+			0, 1, 112, 115, 2, 107, 111, 110, 101, 0, 1, 112, 115, 2, 107, 118, 105, 110, 100, 101, 0, 1, 112, 115, 2, 109, 97, 110, 100, 0,
+			1, 112, 115, 2, 109, 195, 166, 110, 100, 0, 1, 114, 2, 100, 100, 12, 0, 1, 114, 2, 100, 102, 12, 0, 1, 114, 2, 100, 103, 12,
+			0, 1, 114, 2, 100, 104, 12, 0, 1, 114, 2, 100, 108, 195, 184, 115, 0, 1, 114, 2, 100, 109, 97, 110, 100, 0, 1, 114, 2, 100,
+			110, 12, 0, 1, 114, 2, 100, 115, 108, 0, 1, 114, 2, 100, 115, 110, 97, 114, 0, 1, 114, 2, 100, 115, 112, 0, 1, 114, 2, 100,
+			118, 105, 108, 100, 0, 1, 114, 2, 100, 121, 114, 0, 1, 114, 2, 115, 101, 106, 108, 0, 1, 114, 116, 2, 100, 116, 12, 0, 1, 115,
+			2, 32, 102, 195, 165, 0, 1, 115, 2, 32, 115, 110, 97, 114, 116, 0, 1, 115, 2, 107, 97, 108, 100, 0, 1, 115, 2, 109, 195, 166,
+			110, 100, 0, 1, 115, 2, 118, 101, 108, 0, 1, 115, 116, 108, 97, 0, 8, 115, 32, 114, 97, 118, 2, 32, 0, 100, 2, 115, 3, 108,
+			86, 0, 4, 1, 100, 2, 100, 121, 114, 3, 109, 0, 1, 106, 116, 115, 0, 1, 108, 115, 2, 98, 114, 111, 107, 0, 1, 108, 115, 2,
+			115, 0, 1, 109, 2, 108, 108, 195, 184, 115, 12, 0, 1, 109, 2, 108, 116, 105, 100, 12, 0, 1, 109, 2, 116, 0, 1, 109, 115, 2,
+			17, 67, 21, 12, 0, 1, 112, 2, 115, 116, 0, 1, 114, 2, 98, 116, 0, 1, 114, 2, 108, 97, 109, 0, 1, 114, 2, 109, 97, 116,
+			101, 114, 105, 97, 108, 0, 1, 114, 2, 116, 0, 1, 114, 18, 73, 2, 116, 0, 1, 114, 103, 2, 21, 0, 1, 114, 107, 115, 2, 112,
+			0, 1, 114, 116, 115, 2, 100, 195, 184, 100, 0, 1, 114, 116, 115, 2, 102, 111, 114, 107, 111, 114, 116, 0, 1, 114, 116, 115, 2, 104,
+			97, 116, 0, 1, 114, 116, 115, 2, 109, 97, 110, 100, 0, 1, 114, 116, 115, 2, 109, 195, 166, 110, 100, 0, 1, 115, 2, 100, 0, 1,
+			115, 2, 116, 0, 1, 116, 2, 108, 109, 111, 0, 1, 116, 2, 110, 101, 103, 108, 0, 1, 116, 2, 115, 112, 105, 100, 115, 0, 1, 118,
+			2, 100, 116, 0, 2, 108, 116, 105, 0, 2, 110, 100, 0, 2, 116, 0, 8, 112, 0, 108, 101, 100, 101, 115, 1, 115, 3, 109, 55, 36,
+			86, 14, 89, 0, 115, 101, 8, 112, 3, 109, 89, 36, 0, 4, 1, 108, 115, 2, 115, 32, 105, 104, 106, 101, 108, 3, 125, 0, 1, 109,
+			2, 100, 101, 12, 12, 0, 1, 109, 2, 108, 105, 110, 103, 12, 12, 0, 1, 112, 2, 115, 107, 101, 0, 1, 114, 2, 100, 12, 0, 1,
+			114, 103, 2, 100, 0, 1, 114, 103, 2, 110, 101, 0, 1, 114, 116, 2, 100, 12, 0, 1, 115, 0, 2, 17, 67, 101, 0, 2, 101, 116,
+			32, 0, 114, 1, 104, 0, 114, 1, 108, 115, 110, 97, 0, 114, 8, 2, 32, 0, 114, 101, 3, 125, 2, 125, 0, 4, 1, 115, 2, 104,
+			32, 3, 125, 12, 0, 2, 108, 101, 0, 114, 1, 104, 2, 100, 116, 0, 114, 2, 21, 0, 114, 2, 115, 0, 114, 100, 1, 103, 0, 114,
+			100, 101, 115, 116, 1, 104, 3, 125, 12, 14, 89, 47, 0, 114, 100, 101, 110, 3, 125, 12, 108, 50, 0, 114, 100, 101, 1, 103, 3, 125,
+			12, 109, 0, 100, 1, 98, 2, 101, 12, 3, 125, 86, 0, 100, 110, 101, 1, 114, 116, 2, 116, 3, 125, 86, 50, 115, 0, 114, 100, 101,
+			1, 104, 3, 125, 125, 0, 114, 101, 114, 3, 125, 125, 20, 0, 114, 101, 116, 3, 125, 126, 86, 0, 4, 3, 126, 0, 1, 98, 2, 100,
+			0, 1, 103, 2, 116, 117, 114, 0, 1, 108, 115, 102, 97, 2, 115, 0, 1, 108, 115, 103, 110, 105, 100, 110, 166, 195, 116, 2, 115, 0,
+			1, 108, 115, 110, 97, 0, 1, 109, 115, 103, 97, 108, 115, 2, 108, 0, 1, 109, 115, 103, 114, 184, 195, 112, 115, 2, 108, 0, 1, 109,
+			115, 114, 101, 100, 111, 109, 2, 108, 0, 1, 110, 2, 101, 116, 0, 1, 110, 21, 2, 101, 116, 0, 2, 115, 0, 114, 1, 17, 67, 2,
+			32, 0, 114, 1, 108, 0, 114, 1, 116, 115, 2, 32, 0, 4, 114, 1, 21, 2, 32, 3, 126, 12, 0, 114, 1, 115, 2, 17, 67, 0,
+			100, 1, 98, 2, 101, 110, 12, 3, 126, 86, 0, 4, 1, 118, 2, 98, 101, 110, 3, 128, 0, 1, 118, 2, 103, 110, 0, 7, 6, 195,
+			166, 0, 4, 1, 100, 101, 108, 166, 195, 107, 2, 103, 103, 101, 3, 6, 115, 0, 1, 108, 105, 108, 97, 103, 0, 8, 100, 97, 102, 2,
+			115, 101, 0, 8, 108, 105, 98, 117, 106, 0, 8, 109, 111, 100, 2, 110, 101, 0, 8, 114, 103, 105, 109, 2, 110, 101, 0, 8, 114, 111,
+			109, 2, 110, 101, 12, 0, 8, 116, 110, 97, 114, 97, 107, 2, 110, 101, 0, 8, 116, 110, 111, 102, 2, 110, 101, 0, 1, 102, 2, 114,
+			101, 3, 6, 115, 12, 0, 114, 114, 101, 1, 118, 115, 101, 100, 3, 6, 115, 110, 108, 0, 4, 1, 102, 111, 114, 116, 3, 6, 116, 0,
+			1, 104, 102, 97, 2, 110, 103, 105, 103, 0, 1, 112, 111, 116, 114, 111, 2, 100, 0, 1, 114, 101, 118, 117, 115, 2, 110, 0, 1, 116,
+			115, 101, 106, 97, 109, 2, 116, 0, 8, 108, 97, 112, 0, 8, 108, 101, 99, 114, 111, 112, 2, 110, 0, 8, 108, 105, 108, 97, 103, 2,
+			101, 114, 0, 8, 108, 121, 112, 111, 114, 112, 2, 101, 114, 0, 8, 109, 97, 114, 97, 2, 101, 114, 0, 8, 109, 103, 121, 112, 0, 8,
+			110, 97, 97, 110, 97, 107, 2, 101, 114, 0, 8, 110, 101, 104, 116, 97, 2, 101, 114, 0, 8, 112, 111, 114, 117, 101, 2, 101, 114, 0,
+			8, 114, 97, 122, 97, 110, 2, 101, 114, 0, 8, 114, 98, 101, 104, 2, 101, 114, 0, 8, 114, 105, 115, 97, 110, 2, 101, 114, 0, 8,
+			114, 111, 103, 97, 104, 116, 121, 112, 2, 101, 114, 0, 8, 114, 117, 107, 105, 112, 101, 2, 101, 114, 0, 8, 115, 105, 114, 97, 102, 2,
+			101, 114, 0, 8, 118, 105, 2, 114, 107, 115, 195, 166, 116, 0, 4, 114, 1, 118, 101, 103, 3, 6, 116, 110, 0, 114, 1, 118, 115, 101,
+			98, 2, 32, 0, 110, 1, 114, 102, 101, 114, 3, 6, 117, 68, 0, 8, 114, 116, 114, 111, 112, 2, 116, 3, 6, 120, 0, 8, 116, 115,
+			109, 111, 2, 110, 100, 3, 7, 116, 0, 114, 1, 10, 2, 28, 33, 3, 7, 116, 34, 0, 4, 1, 106, 115, 2, 108, 101, 3, 115, 0,
+			1, 114, 2, 17, 67, 17, 65, 0, 1, 114, 2, 17, 67, 18, 69, 0, 1, 114, 2, 18, 67, 12, 0, 1, 114, 2, 18, 67, 101, 12,
+			0, 1, 114, 2, 115, 0, 1, 114, 100, 2, 98, 101, 114, 0, 1, 114, 100, 2, 110, 12, 0, 1, 114, 112, 2, 107, 0, 1, 114, 116,
+			2, 17, 67, 101, 12, 12, 12, 0, 1, 114, 116, 2, 110, 12, 12, 12, 0, 1, 114, 116, 101, 114, 2, 116, 101, 12, 0, 2, 17, 67,
+			101, 0, 2, 98, 108, 101, 0, 2, 98, 110, 101, 0, 8, 114, 111, 102, 2, 100, 101, 12, 12, 0, 2, 103, 121, 112, 116, 3, 115, 6,
+			0, 4, 1, 21, 2, 98, 108, 101, 3, 115, 12, 0, 1, 107, 2, 108, 110, 101, 0, 1, 112, 115, 2, 110, 101, 0, 8, 108, 32, 101,
+			100, 2, 115, 116, 101, 0, 8, 108, 32, 105, 118, 2, 115, 116, 101, 0, 8, 108, 32, 110, 97, 104, 2, 115, 116, 101, 0, 8, 108, 32,
+			110, 117, 104, 2, 115, 116, 101, 0, 118, 108, 3, 115, 40, 55, 0, 4, 103, 1, 17, 67, 2, 101, 3, 115, 57, 0, 103, 1, 114, 116,
+			2, 32, 0, 103, 1, 114, 116, 2, 101, 32, 0, 103, 1, 114, 116, 2, 104, 101, 100, 0, 100, 105, 1, 114, 112, 3, 115, 86, 0, 114,
+			103, 1, 17, 67, 2, 101, 3, 115, 110, 123, 0, 4, 3, 116, 0, 1, 106, 115, 2, 108, 0, 1, 106, 115, 2, 108, 101, 110, 0, 1,
+			108, 2, 100, 101, 114, 0, 1, 114, 107, 2, 32, 0, 1, 114, 111, 102, 2, 100, 108, 101, 0, 1, 114, 112, 2, 17, 67, 12, 0, 1,
+			114, 112, 2, 103, 110, 0, 1, 114, 112, 2, 115, 116, 97, 0, 1, 114, 112, 2, 115, 116, 101, 114, 101, 0, 1, 114, 116, 2, 12, 0,
+			1, 114, 116, 2, 101, 0, 2, 17, 67, 11, 12, 0, 2, 108, 100, 12, 0, 2, 108, 112, 101, 12, 0, 2, 110, 100, 0, 108, 100, 1,
+			107, 2, 114, 3, 116, 55, 0, 108, 100, 2, 114, 12, 3, 116, 55, 72, 0, 4, 118, 1, 114, 2, 12, 3, 116, 58, 0, 118, 2, 100,
+			101, 0, 100, 105, 1, 114, 112, 2, 107, 97, 110, 116, 3, 116, 72, 37, 0, 103, 1, 114, 184, 195, 114, 3, 116, 81, 0, 101, 114, 1,
+			116, 3, 116, 110, 0, 114, 114, 101, 64, 3, 116, 110, 108, 0, 114, 105, 110, 100, 101, 3, 118, 110, 50, 14, 0, 114, 105, 110, 100, 101,
+			114, 3, 118, 110, 50, 109, 0, 1, 114, 2, 100, 101, 12, 12, 3, 119, 0, 4, 1, 114, 2, 12, 3, 120, 0, 1, 114, 2, 17, 67,
+			11, 101, 12, 0, 1, 114, 2, 17, 67, 17, 67, 0, 1, 114, 2, 18, 67, 11, 0, 1, 114, 2, 18, 67, 116, 12, 0, 1, 114, 2,
+			100, 12, 0, 1, 114, 2, 109, 0, 1, 114, 2, 116, 12, 0, 1, 114, 18, 73, 2, 17, 67, 0, 1, 114, 103, 2, 115, 0, 1, 114,
+			112, 2, 115, 116, 32, 0, 1, 114, 112, 2, 115, 116, 101, 110, 0, 1, 114, 112, 2, 115, 116, 101, 114, 0, 1, 114, 112, 2, 115, 116,
+			101, 114, 110, 101, 0, 1, 114, 112, 2, 115, 116, 105, 110, 0, 1, 114, 112, 115, 2, 17, 67, 12, 0, 1, 114, 112, 115, 2, 107, 107,
+			0, 1, 114, 114, 2, 17, 67, 101, 114, 12, 0, 1, 114, 116, 2, 17, 67, 12, 12, 12, 0, 1, 114, 116, 2, 45, 0, 1, 114, 116,
+			2, 110, 103, 12, 12, 12, 0, 8, 114, 116, 2, 98, 101, 110, 12, 12, 0, 7, 6, 195, 169, 0, 3, 6, 114, 0, 7, 6, 195, 179,
+			0, 114, 3, 124, 34, 0, 7, 6, 195, 184, 0, 4, 1, 103, 114, 117, 98, 2, 106, 115, 3, 6, 109, 0, 1, 108, 116, 115, 114, 101,
+			98, 111, 2, 106, 116, 110, 97, 110, 116, 0, 8, 108, 108, 97, 104, 2, 106, 0, 4, 8, 109, 97, 2, 98, 101, 3, 6, 132, 0, 8,
+			110, 2, 100, 21, 0, 4, 1, 107, 115, 98, 111, 2, 110, 3, 6, 132, 12, 0, 1, 109, 105, 2, 100, 101, 107, 111, 109, 0, 114, 101,
+			1, 105, 2, 102, 97, 108, 100, 101, 110, 100, 101, 3, 6, 132, 108, 0, 4, 1, 100, 114, 111, 110, 2, 115, 116, 3, 6, 133, 0, 1,
+			100, 121, 115, 2, 115, 116, 0, 8, 102, 102, 117, 97, 104, 99, 2, 114, 0, 8, 106, 108, 105, 109, 0, 8, 110, 97, 109, 2, 118, 114,
+			101, 0, 8, 118, 101, 110, 0, 114, 101, 1, 103, 108, 101, 118, 2, 110, 104, 101, 100, 3, 6, 133, 109, 0, 2, 106, 101, 12, 3, 108,
+			0, 106, 43, 3, 108, 12, 57, 0, 103, 1, 100, 2, 110, 3, 108, 57, 0, 106, 101, 114, 3, 108, 57, 109, 0, 4, 1, 17, 67, 2,
+			106, 3, 109, 0, 1, 104, 2, 106, 0, 2, 106, 110, 0, 4, 103, 1, 18, 74, 2, 12, 3, 109, 57, 0, 103, 1, 103, 2, 108, 0,
+			103, 1, 108, 0, 103, 1, 112, 115, 2, 32, 0, 103, 1, 112, 115, 2, 101, 110, 0, 103, 2, 108, 101, 0, 4, 1, 18, 73, 2, 103,
+			101, 3, 132, 0, 1, 100, 2, 100, 101, 0, 1, 107, 115, 2, 100, 101, 0, 1, 114, 2, 18, 74, 101, 0, 1, 114, 2, 100, 101, 12,
+			0, 1, 114, 2, 103, 101, 108, 115, 101, 0, 1, 114, 2, 118, 101, 0, 1, 114, 2, 118, 101, 114, 105, 0, 1, 114, 100, 2, 110, 101,
+			0, 1, 114, 100, 2, 118, 101, 116, 0, 1, 114, 100, 101, 98, 2, 118, 0, 1, 114, 101, 98, 2, 118, 101, 0, 1, 114, 111, 102, 2,
+			103, 0, 1, 114, 112, 2, 118, 17, 65, 0, 2, 17, 67, 101, 0, 2, 17, 67, 105, 0, 2, 100, 101, 0, 2, 100, 105, 115, 107, 0,
+			4, 1, 108, 107, 2, 101, 32, 3, 132, 12, 0, 1, 114, 2, 118, 101, 114, 0, 104, 1, 98, 0, 114, 1, 112, 115, 2, 103, 115, 3,
+			132, 34, 0, 114, 101, 1, 115, 2, 100, 110, 105, 3, 132, 34, 115, 0, 4, 103, 1, 109, 115, 2, 32, 115, 105, 103, 3, 132, 57, 0,
+			103, 1, 115, 2, 101, 0, 4, 114, 101, 3, 132, 109, 0, 114, 101, 114, 2, 32, 0, 114, 101, 114, 2, 110, 0, 114, 103, 101, 114, 1,
+			112, 115, 2, 32, 3, 132, 110, 0, 114, 103, 101, 1, 112, 115, 3, 132, 110, 108, 0, 4, 3, 133, 0, 1, 98, 2, 110, 0, 1, 100,
+			2, 100, 0, 1, 100, 2, 100, 101, 110, 0, 1, 108, 2, 115, 0, 1, 114, 2, 100, 12, 0, 1, 114, 2, 103, 116, 101, 0, 1, 114,
+			2, 109, 101, 114, 0, 1, 114, 100, 2, 110, 0, 1, 114, 102, 2, 12, 0, 1, 114, 112, 2, 118, 0, 1, 115, 2, 103, 116, 12, 12,
+			0, 2, 17, 67, 11, 12, 12, 0, 2, 100, 115, 0, 2, 100, 116, 0, 2, 110, 115, 0, 2, 114, 110, 101, 110, 101, 0, 103, 1, 114,
+			111, 102, 2, 32, 0, 114, 103, 1, 112, 115, 3, 133, 34, 0, 4, 103, 1, 98, 3, 133, 57, 0, 103, 1, 104, 0, 103, 1, 115, 2,
+			32, 0, 103, 1, 115, 114, 111, 102, 0, 103, 8, 2, 32, 0, 4, 103, 1, 108, 107, 2, 116, 3, 133, 81, 0, 103, 1, 110, 2, 116,
+			101, 114, 110, 0, 103, 103, 1, 108, 103, 0, 4, 100, 1, 107, 3, 133, 86, 0, 100, 116, 8, 110, 2, 32, 0, 1, 114, 2, 118, 3,
+			134, 0, 4, 1, 114, 2, 18, 74, 3, 135, 0, 1, 114, 2, 18, 74, 11, 12, 0, 1, 114, 101, 100, 110, 111, 98, 2, 118, 0, 1,
+			114, 101, 103, 110, 166, 195, 104, 2, 118, 0, 1, 114, 114, 97, 110, 2, 118, 0, 8, 114, 2, 118, 101, 110, 0, 103, 1, 114, 3, 135,
+			57, 0, 115, 1, 10, 2, 28, 33, 3, 6, 133, 89, 0, 114, 1, 103, 10, 2, 28, 33, 3, 7, 132, 12, 110, 0, 114, 1, 10, 2,
+			101, 110, 28, 33, 3, 7, 133, 0, 4, 114, 1, 10, 2, 28, 33, 3, 7, 133, 110, 0, 114, 1, 10, 2, 101, 114, 28, 33, 0, 7,
+			6, 39, 0, 101, 114, 2, 32, 14, 128, 128, 131, 3, 2, 108, 0, 101, 114, 110, 101, 2, 32, 14, 128, 128, 133, 3, 2, 108, 50, 14,
+			0, 101, 114, 110, 101, 115, 2, 32, 14, 128, 128, 134, 3, 2, 108, 50, 14, 89, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 14, 50,
+			0, 101, 116, 2, 32, 14, 128, 128, 131, 3, 14, 86, 0, 115, 2, 32, 14, 128, 128, 130, 3, 89, 0, 101, 114, 101, 2, 32, 14, 128,
+			128, 132, 3, 108, 34, 108, 0, 7, 6, 97, 0, 4, 117, 2, 32, 112, 97, 105, 114, 3, 2, 39, 0, 117, 2, 32, 114, 101, 118, 111,
+			105, 114, 0, 1, 108, 2, 107, 114, 3, 2, 117, 0, 103, 2, 110, 111, 115, 3, 2, 121, 81, 0, 2, 109, 112, 3, 2, 122, 0, 102,
+			8, 114, 101, 100, 2, 32, 3, 4, 117, 0, 110, 103, 101, 108, 111, 1, 108, 101, 104, 99, 105, 109, 3, 6, 19, 35, 50, 72, 19, 90,
+			112, 55, 124, 0, 8, 116, 112, 97, 107, 2, 106, 110, 3, 6, 35, 0, 117, 120, 1, 103, 3, 6, 39, 0, 105, 1, 110, 105, 118, 2,
+			103, 114, 101, 3, 6, 115, 0, 105, 115, 101, 1, 110, 3, 6, 115, 12, 89, 14, 0, 105, 99, 104, 101, 1, 114, 102, 3, 6, 115, 91,
+			0, 105, 1, 116, 110, 111, 99, 2, 110, 3, 6, 116, 57, 0, 4, 1, 98, 97, 108, 97, 2, 109, 3, 6, 117, 0, 1, 98, 101, 108,
+			97, 116, 2, 110, 0, 1, 98, 109, 117, 108, 2, 103, 111, 0, 1, 99, 97, 100, 2, 112, 111, 0, 1, 100, 117, 97, 108, 2, 110, 117,
+			109, 0, 1, 103, 114, 111, 2, 115, 0, 1, 104, 97, 98, 2, 109, 97, 0, 1, 106, 121, 112, 2, 109, 97, 0, 1, 107, 115, 108, 105,
+			116, 2, 100, 101, 0, 1, 108, 97, 2, 115, 107, 0, 1, 108, 97, 112, 2, 118, 101, 114, 12, 0, 1, 108, 105, 112, 2, 116, 117, 115,
+			0, 1, 108, 111, 122, 0, 1, 108, 115, 111, 103, 117, 106, 2, 118, 0, 1, 109, 103, 105, 116, 115, 2, 116, 97, 0, 1, 109, 109, 111,
+			107, 2, 110, 100, 0, 1, 110, 105, 100, 110, 97, 107, 115, 2, 118, 0, 1, 116, 111, 103, 111, 98, 0, 1, 116, 115, 97, 107, 2, 110,
+			106, 101, 0, 1, 116, 115, 97, 116, 101, 109, 2, 115, 101, 0, 1, 116, 115, 107, 101, 2, 115, 0, 1, 116, 115, 110, 97, 114, 111, 102,
+			2, 108, 116, 0, 1, 116, 115, 112, 111, 2, 110, 100, 101, 108, 115, 101, 0, 1, 116, 115, 114, 101, 2, 116, 110, 105, 110, 103, 0, 1,
+			116, 117, 112, 115, 105, 100, 2, 116, 115, 0, 1, 118, 2, 110, 108, 105, 103, 0, 2, 115, 109, 101, 0, 8, 100, 101, 109, 2, 108, 106,
+			101, 0, 8, 105, 100, 110, 105, 2, 110, 97, 0, 8, 105, 115, 117, 116, 110, 101, 2, 115, 0, 8, 107, 97, 107, 2, 111, 0, 8, 107,
+			105, 104, 99, 2, 110, 101, 0, 8, 107, 105, 116, 97, 118, 2, 110, 0, 8, 107, 108, 97, 2, 108, 105, 0, 8, 108, 107, 110, 101, 2,
+			118, 101, 12, 0, 8, 108, 115, 105, 116, 97, 114, 98, 2, 118, 0, 8, 109, 105, 114, 112, 2, 108, 0, 8, 110, 97, 99, 2, 100, 105,
+			101, 114, 0, 8, 110, 109, 121, 103, 2, 115, 116, 0, 8, 110, 121, 100, 2, 109, 111, 0, 8, 111, 2, 115, 101, 0, 8, 112, 109, 105,
+			104, 99, 2, 110, 0, 8, 115, 107, 101, 2, 109, 12, 0, 8, 116, 101, 100, 2, 108, 106, 101, 0, 8, 118, 97, 114, 97, 107, 2, 110,
+			101, 0, 100, 1, 107, 115, 117, 98, 2, 115, 0, 100, 1, 108, 97, 112, 2, 115, 0, 4, 1, 103, 101, 114, 111, 2, 110, 111, 3, 6,
+			117, 12, 0, 1, 108, 105, 109, 2, 110, 111, 0, 1, 116, 114, 97, 107, 2, 103, 111, 0, 8, 112, 109, 105, 2, 108, 97, 0, 4, 100,
+			1, 107, 105, 109, 2, 111, 3, 6, 117, 12, 72, 0, 100, 1, 109, 114, 97, 2, 97, 0, 100, 101, 1, 10, 2, 28, 33, 3, 6, 117,
+			12, 86, 14, 0, 100, 101, 1, 10, 2, 114, 28, 33, 3, 6, 117, 12, 86, 109, 0, 4, 103, 110, 101, 1, 112, 109, 97, 104, 99, 3,
+			6, 117, 50, 57, 14, 0, 103, 110, 101, 8, 112, 109, 97, 107, 0, 100, 1, 118, 101, 110, 2, 97, 3, 6, 117, 72, 0, 100, 111, 1,
+			110, 114, 111, 116, 3, 6, 117, 72, 124, 0, 118, 101, 114, 8, 108, 107, 110, 101, 3, 6, 117, 84, 109, 0, 118, 101, 114, 97, 108, 1,
+			110, 97, 99, 3, 6, 117, 84, 112, 34, 112, 55, 0, 4, 1, 98, 101, 115, 2, 115, 116, 105, 97, 110, 3, 6, 118, 0, 1, 99, 105,
+			112, 2, 115, 115, 111, 0, 1, 100, 101, 112, 112, 117, 115, 2, 115, 0, 1, 100, 114, 101, 100, 110, 117, 2, 110, 105, 103, 0, 1, 100,
+			114, 111, 118, 104, 2, 110, 0, 1, 102, 110, 105, 2, 109, 0, 1, 108, 116, 97, 2, 110, 116, 105, 115, 0, 1, 109, 97, 108, 97, 115,
+			2, 110, 100, 101, 114, 0, 1, 109, 101, 116, 97, 117, 103, 2, 108, 0, 1, 109, 105, 114, 103, 2, 115, 115, 101, 0, 1, 110, 97, 98,
+			2, 110, 0, 1, 110, 105, 104, 2, 110, 0, 1, 112, 111, 116, 2, 115, 0, 1, 114, 101, 118, 111, 2, 108, 116, 0, 1, 115, 101, 109,
+			114, 97, 112, 2, 110, 0, 1, 115, 108, 97, 98, 2, 109, 105, 0, 1, 118, 97, 104, 2, 110, 97, 0, 1, 118, 97, 104, 2, 110, 110,
+			97, 0, 1, 122, 121, 98, 2, 110, 115, 32, 0, 8, 100, 100, 110, 101, 2, 32, 0, 8, 101, 116, 2, 116, 101, 114, 0, 8, 103, 97,
+			112, 111, 114, 112, 2, 110, 100, 0, 8, 107, 97, 109, 2, 98, 0, 8, 107, 97, 116, 115, 2, 116, 101, 114, 0, 8, 107, 110, 111, 107,
+			2, 118, 0, 8, 108, 107, 101, 114, 2, 109, 101, 0, 8, 109, 105, 2, 109, 0, 8, 110, 101, 112, 2, 108, 104, 117, 115, 0, 8, 110,
+			105, 109, 111, 100, 2, 110, 0, 8, 112, 97, 2, 99, 104, 0, 8, 115, 97, 102, 2, 110, 0, 8, 116, 97, 98, 2, 108, 106, 101, 0,
+			8, 116, 107, 111, 2, 118, 0, 8, 118, 97, 115, 2, 110, 110, 101, 0, 8, 118, 105, 114, 112, 2, 116, 0, 100, 8, 108, 106, 101, 115,
+			2, 115, 0, 103, 1, 115, 101, 107, 107, 97, 110, 115, 2, 108, 105, 103, 0, 110, 1, 10, 2, 28, 34, 12, 3, 6, 118, 50, 0, 110,
+			100, 8, 109, 105, 114, 112, 101, 114, 2, 101, 3, 6, 118, 50, 72, 0, 110, 100, 101, 1, 98, 97, 114, 116, 110, 111, 107, 3, 6, 118,
+			50, 72, 14, 0, 110, 115, 1, 10, 2, 28, 33, 3, 6, 118, 50, 89, 0, 108, 1, 10, 2, 28, 33, 12, 3, 6, 118, 55, 0, 4,
+			116, 1, 10, 2, 28, 33, 3, 6, 118, 72, 0, 116, 1, 10, 2, 101, 28, 33, 0, 4, 1, 98, 21, 2, 114, 108, 105, 103, 3, 6,
+			121, 0, 1, 98, 110, 101, 98, 165, 195, 2, 114, 105, 110, 103, 0, 1, 100, 114, 101, 116, 115, 109, 97, 2, 109, 0, 1, 102, 97, 115,
+			2, 114, 105, 0, 1, 102, 114, 101, 2, 114, 0, 1, 103, 110, 101, 2, 110, 103, 0, 1, 112, 115, 101, 98, 2, 114, 105, 110, 103, 0,
+			1, 114, 98, 105, 118, 2, 116, 111, 0, 1, 114, 105, 109, 2, 107, 0, 1, 114, 108, 165, 195, 107, 2, 98, 105, 0, 1, 114, 116, 115,
+			97, 112, 2, 109, 105, 0, 1, 118, 97, 104, 2, 114, 116, 105, 0, 1, 118, 114, 111, 102, 2, 114, 105, 110, 103, 0, 8, 98, 101, 108,
+			108, 101, 104, 2, 114, 100, 0, 8, 98, 109, 111, 108, 2, 114, 100, 0, 8, 98, 111, 103, 110, 111, 108, 2, 114, 100, 0, 8, 103, 105,
+			2, 110, 103, 21, 0, 8, 103, 108, 117, 98, 2, 114, 0, 8, 104, 97, 115, 2, 114, 97, 0, 8, 108, 97, 2, 114, 109, 0, 8, 108,
+			97, 109, 2, 114, 105, 97, 0, 8, 108, 117, 111, 102, 2, 114, 100, 0, 8, 108, 117, 111, 112, 2, 114, 100, 0, 8, 110, 111, 109, 2,
+			114, 107, 0, 8, 111, 105, 100, 97, 114, 2, 107, 116, 105, 0, 8, 114, 97, 2, 98, 101, 114, 0, 8, 114, 97, 98, 2, 107, 0, 8,
+			114, 100, 97, 109, 2, 115, 0, 8, 114, 114, 117, 104, 0, 8, 115, 97, 104, 2, 114, 100, 0, 8, 115, 101, 114, 112, 109, 105, 2, 114,
+			105, 111, 0, 8, 115, 110, 97, 109, 2, 114, 100, 0, 8, 116, 115, 97, 98, 2, 114, 100, 0, 4, 1, 105, 116, 2, 114, 97, 3, 6,
+			121, 12, 0, 1, 108, 115, 105, 2, 109, 0, 8, 111, 108, 107, 2, 107, 12, 0, 103, 104, 1, 109, 114, 97, 0, 117, 8, 115, 115, 105,
+			98, 3, 6, 121, 12, 58, 0, 100, 101, 1, 114, 10, 2, 28, 33, 3, 6, 121, 12, 86, 14, 0, 100, 101, 1, 114, 10, 2, 114, 28,
+			33, 3, 6, 121, 12, 86, 109, 0, 114, 1, 110, 97, 107, 2, 105, 101, 3, 6, 121, 34, 0, 108, 1, 114, 10, 2, 101, 32, 28, 33,
+			12, 3, 6, 121, 55, 0, 4, 117, 1, 110, 111, 114, 116, 115, 97, 2, 116, 3, 6, 121, 58, 0, 118, 1, 104, 110, 101, 98, 184, 195,
+			107, 2, 110, 0, 109, 1, 114, 103, 10, 2, 28, 33, 12, 3, 6, 121, 65, 0, 114, 98, 101, 114, 8, 98, 97, 114, 3, 6, 121, 71,
+			108, 0, 100, 111, 1, 114, 111, 108, 111, 99, 3, 6, 121, 72, 39, 0, 103, 116, 105, 103, 1, 10, 2, 28, 33, 12, 3, 6, 121, 81,
+			47, 37, 0, 117, 114, 101, 114, 8, 115, 111, 110, 105, 100, 3, 6, 121, 123, 34, 108, 0, 117, 114, 8, 115, 111, 110, 105, 100, 3, 6,
+			121, 123, 108, 0, 4, 1, 102, 108, 105, 116, 2, 110, 103, 101, 3, 6, 122, 0, 1, 103, 110, 101, 2, 110, 103, 0, 1, 110, 105, 116,
+			115, 97, 112, 2, 107, 0, 1, 114, 101, 109, 111, 111, 98, 2, 110, 103, 0, 1, 114, 105, 103, 2, 102, 0, 1, 114, 107, 115, 110, 101,
+			112, 112, 97, 114, 2, 108, 100, 101, 0, 1, 114, 116, 97, 101, 116, 2, 108, 0, 1, 116, 115, 101, 103, 2, 112, 111, 0, 1, 118, 97,
+			107, 115, 2, 110, 107, 0, 8, 108, 97, 103, 2, 107, 115, 101, 0, 8, 108, 111, 112, 2, 107, 0, 8, 112, 109, 111, 107, 2, 107, 116,
+			0, 8, 114, 97, 116, 97, 107, 2, 107, 116, 0, 8, 114, 116, 110, 111, 107, 2, 107, 116, 0, 8, 114, 116, 115, 98, 97, 2, 107, 116,
+			0, 8, 114, 116, 115, 107, 101, 2, 107, 116, 0, 8, 115, 107, 101, 2, 107, 116, 0, 8, 115, 111, 107, 2, 107, 0, 8, 115, 115, 97,
+			109, 2, 107, 114, 101, 0, 8, 116, 101, 2, 112, 101, 0, 8, 116, 110, 105, 2, 107, 116, 0, 8, 116, 110, 111, 107, 2, 107, 116, 0,
+			109, 1, 114, 103, 10, 2, 109, 28, 33, 12, 0, 110, 1, 114, 10, 2, 110, 101, 28, 34, 12, 0, 114, 8, 105, 108, 108, 105, 109, 0,
+			114, 8, 105, 108, 108, 105, 114, 116, 0, 116, 1, 114, 10, 2, 28, 33, 3, 6, 122, 47, 0, 110, 1, 114, 10, 2, 28, 34, 12, 3,
+			6, 122, 50, 0, 110, 116, 1, 114, 10, 2, 28, 33, 3, 6, 122, 50, 47, 0, 110, 115, 1, 114, 10, 2, 28, 33, 3, 6, 122, 50,
+			89, 0, 108, 1, 114, 2, 28, 33, 12, 12, 3, 6, 122, 55, 0, 118, 1, 100, 97, 107, 2, 101, 114, 3, 6, 122, 58, 0, 110, 116,
+			1, 114, 117, 97, 116, 115, 101, 114, 3, 6, 122, 68, 0, 4, 110, 99, 101, 1, 10, 2, 28, 33, 3, 6, 122, 68, 89, 13, 0, 110,
+			99, 104, 101, 1, 10, 2, 28, 33, 0, 110, 99, 101, 1, 10, 2, 114, 28, 33, 3, 6, 122, 68, 89, 108, 0, 102, 1, 114, 103, 10,
+			2, 28, 33, 3, 6, 122, 83, 0, 4, 105, 1, 116, 101, 100, 2, 108, 3, 6, 136, 0, 106, 1, 115, 101, 2, 97, 115, 0, 8, 105,
+			107, 121, 115, 112, 2, 116, 3, 7, 117, 0, 98, 1, 10, 2, 108, 101, 28, 33, 3, 7, 117, 71, 0, 116, 1, 10, 2, 116, 28, 33,
+			3, 7, 118, 0, 110, 116, 1, 10, 2, 28, 33, 3, 7, 118, 50, 47, 0, 108, 1, 10, 2, 101, 32, 28, 33, 12, 3, 7, 118, 55,
+			0, 98, 1, 10, 2, 101, 108, 28, 33, 3, 7, 118, 71, 0, 4, 114, 1, 10, 2, 28, 33, 12, 12, 12, 3, 7, 121, 0, 114, 1,
+			10, 2, 105, 97, 116, 28, 33, 0, 110, 99, 101, 1, 121, 111, 118, 2, 28, 33, 3, 7, 121, 68, 89, 0, 1, 108, 114, 111, 102, 2,
+			103, 116, 32, 3, 7, 122, 0, 98, 1, 114, 10, 2, 101, 108, 28, 33, 3, 7, 122, 71, 0, 102, 1, 114, 111, 118, 104, 3, 8, 4,
+			117, 0, 4, 8, 110, 97, 98, 101, 107, 105, 3, 8, 117, 0, 8, 110, 97, 100, 110, 97, 98, 0, 8, 110, 97, 103, 114, 111, 109, 97,
+			116, 97, 102, 0, 8, 110, 97, 107, 114, 97, 0, 8, 110, 97, 117, 104, 105, 114, 97, 109, 0, 8, 110, 97, 118, 114, 105, 110, 0, 8,
+			110, 97, 119, 115, 116, 111, 17, 66, 0, 8, 110, 97, 121, 117, 103, 0, 8, 110, 101, 114, 97, 0, 8, 110, 101, 122, 105, 97, 109, 0,
+			8, 110, 105, 103, 110, 97, 0, 8, 110, 105, 108, 117, 107, 115, 97, 109, 0, 8, 110, 105, 110, 105, 109, 101, 102, 0, 8, 110, 105, 114,
+			97, 107, 111, 0, 8, 110, 105, 114, 97, 109, 0, 8, 110, 105, 114, 97, 115, 116, 0, 8, 110, 105, 114, 97, 122, 0, 8, 110, 105, 114,
+			101, 108, 108, 97, 98, 0, 8, 110, 105, 115, 116, 101, 114, 0, 8, 110, 105, 116, 110, 101, 103, 114, 97, 0, 8, 110, 105, 116, 114, 101,
+			99, 110, 111, 107, 0, 8, 110, 105, 116, 115, 166, 195, 108, 97, 112, 0, 8, 110, 105, 118, 111, 103, 101, 99, 114, 101, 104, 0, 8, 110,
+			110, 97, 105, 115, 111, 104, 0, 8, 110, 110, 111, 100, 97, 109, 0, 8, 110, 110, 111, 100, 97, 109, 105, 114, 112, 0, 8, 110, 111, 109,
+			111, 112, 120, 111, 99, 0, 8, 110, 111, 114, 111, 107, 0, 108, 1, 110, 97, 2, 102, 97, 98, 101, 116, 3, 8, 117, 55, 0, 114, 101,
+			116, 1, 103, 114, 97, 109, 3, 14, 51, 119, 47, 0, 1, 102, 101, 98, 2, 114, 105, 110, 103, 3, 16, 121, 0, 118, 1, 103, 2, 116,
+			121, 118, 3, 19, 35, 123, 0, 4, 110, 97, 103, 101, 1, 119, 115, 3, 21, 0, 118, 101, 8, 100, 0, 118, 111, 110, 100, 97, 108, 101,
+			0, 4, 1, 104, 2, 99, 105, 101, 110, 100, 97, 12, 12, 3, 21, 101, 115, 0, 108, 101, 106, 97, 110, 100, 114, 111, 0, 2, 114, 114,
+			101, 115, 116, 3, 35, 0, 114, 111, 107, 107, 111, 1, 109, 3, 35, 34, 6, 108, 49, 39, 0, 116, 116, 101, 110, 116, 105, 111, 110, 3,
+			35, 47, 6, 115, 50, 91, 13, 50, 0, 98, 101, 114, 110, 97, 107, 1, 116, 3, 35, 71, 108, 50, 6, 35, 49, 0, 103, 103, 105, 111,
+			114, 101, 1, 109, 3, 35, 75, 6, 39, 12, 53, 36, 0, 103, 97, 115, 97, 107, 105, 1, 110, 3, 35, 81, 117, 89, 6, 35, 49, 37,
+			0, 4, 117, 1, 104, 99, 2, 102, 3, 39, 0, 117, 1, 115, 2, 116, 101, 114, 110, 101, 0, 117, 1, 116, 115, 101, 114, 2, 114, 0,
+			117, 2, 32, 110, 97, 116, 117, 114, 101, 108, 0, 117, 120, 8, 102, 0, 117, 98, 101, 114, 103, 105, 110, 3, 39, 71, 36, 34, 91, 6,
+			37, 12, 50, 0, 117, 103, 117, 105, 110, 1, 103, 3, 39, 81, 6, 117, 68, 0, 119, 1, 114, 99, 3, 108, 0, 108, 1, 119, 2, 107,
+			3, 108, 12, 0, 108, 108, 1, 119, 3, 108, 12, 55, 0, 105, 1, 116, 110, 117, 111, 109, 2, 110, 3, 114, 0, 1, 108, 98, 2, 122,
+			101, 114, 3, 115, 0, 1, 114, 2, 99, 101, 114, 45, 12, 3, 115, 12, 0, 105, 114, 101, 1, 108, 99, 3, 115, 12, 34, 0, 105, 114,
+			99, 111, 110, 100, 105, 116, 105, 111, 110, 3, 115, 12, 34, 49, 108, 50, 72, 37, 12, 91, 13, 50, 0, 105, 114, 3, 115, 12, 110, 0,
+			4, 1, 102, 114, 101, 116, 110, 105, 2, 99, 101, 3, 115, 37, 0, 1, 109, 101, 99, 97, 112, 2, 107, 0, 99, 101, 1, 112, 3, 115,
+			37, 89, 0, 4, 1, 108, 2, 115, 101, 114, 101, 110, 3, 115, 57, 0, 1, 108, 2, 115, 101, 114, 110, 101, 115, 0, 1, 108, 2, 115,
+			101, 114, 112, 114, 0, 1, 108, 2, 115, 101, 114, 115, 116, 0, 1, 108, 32, 110, 101, 2, 115, 101, 114, 0, 1, 109, 107, 111, 111, 98,
+			2, 107, 101, 114, 0, 1, 114, 2, 116, 105, 110, 103, 0, 105, 1, 114, 116, 2, 108, 101, 114, 0, 121, 8, 98, 2, 32, 0, 4, 116,
+			101, 1, 109, 121, 97, 108, 112, 3, 115, 57, 47, 0, 116, 101, 8, 116, 0, 116, 105, 101, 1, 107, 3, 115, 57, 47, 37, 0, 116, 101,
+			115, 1, 98, 2, 32, 3, 115, 57, 47, 89, 0, 99, 111, 8, 119, 3, 115, 57, 49, 39, 58, 0, 99, 111, 110, 1, 98, 2, 12, 3,
+			115, 57, 49, 108, 50, 0, 121, 110, 101, 1, 112, 3, 115, 57, 50, 0, 108, 101, 1, 32, 114, 101, 103, 110, 105, 103, 3, 115, 57, 55,
+			0, 109, 121, 8, 3, 115, 57, 65, 37, 0, 100, 101, 1, 119, 3, 115, 57, 72, 0, 100, 121, 1, 114, 98, 3, 115, 57, 72, 37, 0,
+			103, 101, 110, 99, 121, 3, 115, 57, 75, 13, 50, 89, 37, 0, 103, 97, 115, 8, 118, 3, 115, 57, 81, 13, 89, 0, 118, 101, 114, 121,
+			3, 115, 57, 84, 34, 37, 0, 121, 101, 115, 1, 17, 67, 3, 115, 57, 89, 0, 116, 105, 111, 110, 1, 116, 115, 2, 99, 97, 114, 3,
+			115, 57, 91, 14, 50, 0, 104, 97, 98, 8, 3, 115, 57, 107, 118, 71, 0, 4, 1, 114, 2, 99, 101, 114, 98, 97, 110, 101, 12, 3,
+			116, 0, 1, 114, 2, 99, 101, 114, 98, 105, 108, 12, 0, 1, 114, 2, 99, 101, 114, 99, 121, 107, 12, 0, 1, 114, 2, 99, 101, 114,
+			107, 195, 184, 114, 12, 0, 1, 114, 2, 99, 101, 114, 118, 111, 103, 110, 12, 0, 101, 2, 114, 111, 0, 105, 1, 114, 98, 2, 115, 101,
+			114, 0, 105, 2, 109, 97, 98, 101, 108, 0, 105, 100, 115, 3, 116, 37, 72, 89, 0, 4, 1, 104, 2, 115, 116, 105, 110, 103, 3, 116,
+			57, 0, 1, 104, 115, 2, 118, 101, 114, 0, 121, 1, 100, 0, 121, 1, 108, 2, 111, 117, 116, 0, 121, 1, 108, 112, 0, 121, 1, 115,
+			0, 121, 1, 119, 0, 98, 101, 8, 98, 2, 32, 3, 116, 57, 48, 0, 112, 105, 101, 114, 1, 110, 3, 116, 57, 48, 111, 109, 0, 105,
+			108, 1, 116, 107, 99, 111, 99, 3, 116, 57, 55, 0, 98, 121, 1, 98, 2, 12, 3, 116, 57, 71, 111, 0, 107, 101, 115, 1, 108, 102,
+			110, 114, 111, 99, 3, 116, 57, 81, 89, 0, 99, 101, 1, 102, 2, 98, 111, 111, 107, 3, 116, 57, 89, 0, 112, 101, 1, 114, 103, 3,
+			116, 71, 0, 4, 1, 17, 67, 2, 110, 101, 3, 117, 0, 1, 17, 67, 2, 110, 101, 110, 0, 1, 17, 67, 2, 110, 101, 114, 0, 1,
+			18, 67, 2, 98, 108, 101, 0, 1, 18, 73, 2, 18, 75, 18, 69, 0, 1, 18, 74, 2, 18, 67, 101, 12, 0, 1, 18, 75, 2, 109,
+			101, 12, 0, 1, 98, 114, 105, 97, 2, 103, 12, 0, 1, 100, 2, 109, 18, 76, 12, 0, 1, 100, 2, 118, 105, 100, 0, 1, 101, 2,
+			114, 18, 69, 12, 0, 1, 102, 2, 18, 74, 0, 1, 103, 2, 118, 101, 0, 1, 104, 116, 2, 110, 107, 115, 0, 1, 107, 2, 12, 0,
+			1, 107, 2, 112, 18, 76, 12, 0, 1, 108, 2, 98, 101, 0, 1, 108, 2, 118, 101, 110, 100, 101, 108, 0, 1, 108, 98, 2, 100, 101,
+			0, 1, 108, 115, 2, 118, 0, 1, 109, 114, 105, 102, 0, 1, 109, 114, 111, 102, 2, 110, 101, 0, 1, 109, 115, 2, 99, 107, 0, 1,
+			110, 2, 112, 97, 108, 109, 0, 1, 110, 103, 2, 118, 110, 101, 0, 1, 112, 2, 118, 12, 12, 0, 1, 112, 115, 2, 100, 101, 0, 1,
+			114, 2, 110, 99, 104, 12, 0, 1, 114, 2, 110, 115, 105, 103, 116, 0, 1, 114, 99, 2, 99, 107, 12, 0, 1, 114, 101, 116, 102, 101,
+			2, 98, 0, 1, 114, 111, 102, 2, 110, 0, 1, 115, 2, 109, 101, 12, 0, 1, 115, 107, 101, 10, 2, 109, 0, 1, 116, 2, 108, 17,
+			65, 0, 1, 116, 115, 2, 99, 99, 97, 116, 111, 0, 1, 116, 115, 97, 112, 0, 1, 116, 115, 101, 116, 2, 109, 0, 1, 118, 115, 2,
+			98, 0, 2, 17, 67, 101, 0, 2, 100, 101, 12, 0, 2, 100, 101, 110, 0, 2, 100, 114, 101, 115, 115, 12, 12, 0, 2, 100, 118, 97,
+			114, 0, 2, 110, 108, 195, 166, 103, 12, 0, 2, 110, 115, 116, 0, 2, 110, 115, 116, 114, 101, 110, 103, 12, 12, 0, 2, 110, 116, 97,
+			108, 12, 0, 2, 110, 118, 101, 110, 100, 12, 0, 2, 116, 116, 97, 99, 104, 12, 0, 8, 2, 101, 32, 0, 8, 110, 109, 121, 103, 2,
+			115, 116, 105, 0, 100, 101, 8, 108, 2, 32, 100, 105, 103, 32, 0, 100, 101, 8, 108, 2, 32, 115, 105, 103, 32, 0, 100, 101, 8, 108,
+			2, 32, 118, 195, 166, 114, 101, 32, 0, 114, 1, 107, 2, 108, 101, 110, 101, 0, 114, 1, 107, 21, 2, 108, 101, 12, 0, 114, 1, 108,
+			110, 101, 118, 111, 100, 2, 115, 0, 116, 8, 2, 32, 0, 118, 1, 104, 2, 32, 0, 4, 1, 18, 73, 2, 98, 18, 76, 3, 117, 12,
+			0, 1, 100, 2, 116, 97, 0, 1, 100, 2, 116, 111, 0, 1, 106, 116, 2, 32, 0, 1, 107, 2, 112, 114, 101, 12, 0, 1, 107, 2,
+			112, 114, 105, 110, 103, 0, 1, 110, 2, 98, 111, 0, 1, 112, 115, 2, 109, 0, 1, 112, 115, 2, 110, 107, 105, 110, 103, 0, 1, 115,
+			2, 103, 111, 12, 12, 0, 2, 116, 117, 115, 0, 4, 110, 1, 100, 2, 100, 121, 3, 117, 12, 50, 0, 110, 1, 114, 98, 2, 100, 121,
+			0, 110, 110, 101, 115, 8, 99, 3, 117, 12, 50, 12, 0, 103, 1, 115, 2, 97, 12, 3, 117, 12, 81, 0, 114, 97, 112, 97, 104, 111,
+			101, 3, 117, 34, 6, 117, 48, 117, 107, 125, 58, 0, 114, 121, 1, 109, 3, 117, 34, 37, 0, 114, 114, 121, 1, 98, 3, 117, 34, 113,
+			0, 116, 104, 101, 110, 3, 117, 47, 6, 36, 50, 0, 116, 116, 114, 105, 98, 117, 116, 105, 111, 110, 8, 3, 117, 47, 51, 37, 71, 40,
+			91, 6, 39, 50, 0, 116, 116, 114, 105, 98, 117, 116, 105, 111, 110, 3, 117, 47, 51, 37, 71, 40, 91, 39, 50, 0, 4, 112, 101, 1,
+			110, 97, 107, 3, 117, 48, 6, 36, 0, 112, 195, 169, 1, 110, 97, 107, 0, 112, 112, 101, 97, 108, 3, 117, 48, 6, 37, 55, 0, 107,
+			107, 111, 114, 100, 101, 111, 110, 3, 117, 49, 6, 108, 12, 72, 36, 108, 50, 0, 107, 117, 108, 116, 101, 116, 8, 102, 3, 117, 49, 40,
+			55, 47, 6, 36, 47, 0, 107, 117, 108, 116, 101, 116, 1, 102, 3, 117, 49, 40, 55, 47, 36, 47, 0, 99, 116, 105, 111, 110, 3, 117,
+			49, 91, 57, 13, 50, 0, 103, 110, 1, 109, 2, 111, 110, 3, 117, 50, 57, 0, 110, 100, 114, 101, 119, 115, 3, 117, 50, 72, 51, 40,
+			12, 89, 0, 110, 100, 111, 108, 112, 104, 1, 114, 3, 117, 50, 72, 108, 55, 83, 0, 110, 100, 97, 8, 114, 2, 108, 3, 117, 50, 72,
+			125, 0, 110, 100, 111, 8, 114, 98, 3, 117, 50, 72, 125, 58, 0, 110, 103, 105, 101, 8, 3, 117, 50, 75, 111, 0, 110, 103, 101, 108,
+			101, 115, 3, 117, 50, 75, 112, 55, 115, 89, 0, 110, 104, 97, 116, 116, 97, 110, 1, 109, 3, 117, 50, 107, 6, 117, 47, 13, 50, 0,
+			114, 114, 111, 119, 3, 117, 51, 39, 40, 0, 108, 1, 10, 2, 105, 115, 116, 28, 33, 12, 3, 117, 55, 0, 108, 1, 10, 2, 105, 115,
+			109, 28, 33, 12, 3, 117, 55, 6, 0, 108, 97, 106, 1, 109, 3, 117, 55, 6, 136, 0, 108, 97, 107, 108, 97, 118, 1, 98, 2, 97,
+			3, 117, 55, 117, 49, 55, 6, 117, 12, 84, 0, 4, 103, 1, 109, 2, 114, 101, 3, 117, 57, 0, 103, 8, 118, 2, 101, 32, 0, 109,
+			98, 114, 111, 115, 101, 3, 117, 65, 71, 51, 127, 40, 89, 0, 103, 110, 97, 1, 109, 114, 97, 2, 99, 3, 117, 68, 6, 121, 0, 98,
+			98, 121, 8, 3, 117, 71, 37, 0, 98, 105, 108, 101, 110, 101, 3, 117, 71, 37, 55, 37, 12, 50, 0, 100, 98, 117, 114, 121, 1, 114,
+			98, 3, 117, 72, 71, 14, 34, 36, 0, 4, 103, 1, 109, 2, 105, 12, 3, 117, 81, 0, 103, 1, 110, 97, 108, 102, 2, 97, 110, 0,
+			103, 1, 110, 121, 115, 2, 111, 103, 101, 0, 103, 2, 110, 101, 119, 0, 103, 103, 105, 101, 3, 117, 81, 37, 0, 103, 97, 122, 105, 110,
+			101, 1, 109, 3, 117, 81, 117, 89, 6, 37, 12, 50, 0, 4, 118, 1, 108, 2, 97, 17, 67, 3, 117, 84, 0, 118, 1, 108, 2, 97,
+			32, 0, 118, 1, 108, 2, 97, 101, 0, 118, 1, 108, 2, 101, 100, 0, 118, 1, 108, 2, 101, 114, 0, 118, 1, 108, 2, 101, 115, 0,
+			118, 1, 108, 2, 101, 116, 0, 118, 1, 108, 2, 105, 110, 101, 0, 118, 1, 108, 2, 110, 105, 0, 118, 1, 108, 2, 116, 32, 0, 118,
+			8, 108, 2, 32, 0, 4, 118, 101, 1, 108, 2, 32, 3, 117, 84, 14, 0, 118, 101, 1, 108, 115, 0, 118, 101, 114, 1, 108, 2, 32,
+			3, 117, 84, 108, 0, 118, 101, 114, 1, 108, 115, 3, 117, 84, 109, 0, 118, 101, 114, 105, 1, 108, 115, 3, 117, 84, 109, 34, 6, 37,
+			0, 118, 97, 110, 116, 103, 97, 114, 100, 101, 3, 117, 84, 121, 68, 81, 6, 121, 72, 14, 0, 115, 101, 114, 98, 97, 106, 100, 115, 106,
+			97, 110, 3, 117, 89, 108, 71, 117, 91, 6, 117, 50, 0, 1, 116, 2, 98, 108, 101, 116, 3, 117, 117, 0, 110, 103, 111, 111, 110, 1,
+			114, 3, 117, 117, 50, 81, 6, 40, 12, 50, 0, 4, 3, 118, 0, 1, 17, 67, 2, 18, 75, 18, 69, 0, 1, 17, 67, 2, 109, 105,
+			12, 0, 1, 17, 67, 2, 109, 195, 166, 12, 0, 1, 17, 67, 2, 109, 195, 184, 12, 0, 1, 17, 67, 2, 110, 100, 0, 1, 18, 67,
+			2, 98, 101, 12, 0, 1, 18, 71, 2, 110, 0, 1, 18, 71, 2, 110, 100, 0, 1, 18, 73, 2, 17, 67, 0, 1, 18, 74, 2, 108,
+			100, 0, 1, 18, 75, 2, 112, 18, 69, 12, 0, 1, 21, 2, 98, 101, 12, 0, 1, 21, 2, 107, 114, 18, 69, 12, 0, 1, 98, 2,
+			103, 97, 103, 101, 12, 12, 0, 1, 98, 2, 106, 111, 110, 101, 116, 0, 1, 98, 2, 118, 105, 97, 110, 12, 0, 1, 98, 32, 103, 105,
+			98, 2, 110, 103, 0, 1, 99, 2, 109, 112, 12, 0, 1, 100, 100, 2, 103, 12, 0, 1, 100, 108, 2, 107, 0, 1, 100, 108, 101, 109,
+			109, 97, 103, 2, 103, 115, 0, 1, 101, 0, 1, 101, 114, 2, 103, 12, 0, 1, 102, 2, 98, 114, 18, 69, 12, 0, 1, 102, 2, 99,
+			18, 69, 12, 12, 0, 1, 102, 2, 99, 18, 76, 0, 1, 102, 2, 110, 100, 0, 1, 102, 2, 110, 107, 108, 117, 98, 12, 0, 1, 102,
+			2, 118, 111, 12, 0, 1, 102, 101, 98, 2, 108, 0, 1, 102, 111, 115, 2, 12, 0, 1, 103, 2, 110, 103, 115, 116, 101, 114, 12, 0,
+			1, 103, 2, 118, 0, 1, 103, 105, 108, 0, 1, 104, 2, 99, 107, 12, 0, 1, 104, 2, 109, 98, 117, 114, 103, 101, 114, 0, 1, 104,
+			2, 110, 0, 1, 104, 2, 110, 100, 108, 0, 1, 104, 2, 110, 107, 97, 110, 105, 110, 0, 1, 104, 2, 110, 107, 97, 116, 0, 1, 104,
+			2, 110, 107, 195, 184, 110, 12, 12, 0, 1, 104, 2, 112, 112, 17, 65, 0, 1, 104, 2, 118, 101, 116, 0, 1, 104, 101, 98, 2, 103,
+			0, 1, 104, 115, 2, 109, 18, 76, 0, 1, 105, 100, 2, 18, 66, 12, 0, 1, 106, 2, 109, 101, 110, 0, 1, 107, 2, 17, 67, 17,
+			67, 0, 1, 107, 2, 107, 97, 111, 12, 12, 0, 1, 107, 2, 115, 0, 1, 107, 2, 118, 105, 97, 114, 0, 1, 107, 100, 111, 118, 0,
+			1, 107, 105, 114, 102, 97, 2, 12, 0, 1, 107, 105, 116, 111, 107, 114, 97, 110, 0, 1, 107, 115, 2, 18, 71, 12, 0, 1, 108, 2,
+			103, 117, 110, 101, 0, 1, 108, 2, 109, 17, 65, 12, 0, 1, 108, 2, 110, 100, 0, 1, 108, 2, 112, 18, 69, 12, 0, 1, 108, 97,
+			109, 2, 18, 66, 97, 0, 1, 108, 98, 2, 99, 107, 0, 1, 108, 98, 2, 100, 0, 1, 108, 102, 2, 98, 32, 12, 0, 1, 108, 111,
+			99, 0, 1, 108, 112, 2, 99, 101, 0, 1, 108, 112, 2, 107, 97, 0, 1, 108, 112, 2, 110, 0, 1, 108, 112, 2, 110, 101, 110, 0,
+			1, 108, 112, 2, 110, 101, 114, 0, 1, 108, 115, 2, 110, 103, 12, 0, 1, 108, 115, 105, 2, 109, 105, 0, 1, 109, 2, 106, 111, 12,
+			0, 1, 109, 2, 107, 97, 0, 1, 109, 105, 108, 107, 0, 1, 109, 105, 114, 112, 0, 1, 109, 114, 101, 112, 115, 0, 1, 109, 114, 105,
+			102, 2, 12, 0, 1, 110, 97, 112, 2, 109, 97, 0, 1, 110, 105, 103, 97, 118, 0, 1, 110, 115, 2, 99, 107, 0, 1, 112, 2, 103,
+			18, 76, 12, 0, 1, 112, 2, 103, 110, 12, 12, 0, 1, 112, 2, 112, 105, 12, 0, 1, 112, 97, 107, 2, 99, 105, 116, 0, 1, 115,
+			2, 98, 98, 97, 116, 0, 1, 115, 2, 98, 108, 101, 0, 1, 115, 2, 102, 114, 97, 110, 0, 1, 115, 2, 103, 12, 12, 0, 1, 115,
+			2, 109, 18, 69, 12, 0, 1, 115, 2, 109, 97, 110, 116, 0, 1, 115, 2, 109, 101, 114, 12, 0, 1, 116, 2, 110, 100, 0, 1, 116,
+			2, 112, 18, 76, 0, 1, 116, 2, 112, 105, 0, 1, 116, 101, 109, 2, 12, 0, 1, 116, 105, 99, 110, 105, 0, 1, 116, 115, 2, 102,
+			102, 97, 103, 101, 0, 1, 116, 115, 2, 107, 97, 0, 1, 118, 2, 110, 100, 114, 195, 184, 114, 0, 1, 118, 108, 101, 115, 2, 110, 103,
+			105, 118, 0, 1, 120, 97, 116, 0, 1, 122, 122, 105, 112, 0, 2, 17, 67, 11, 12, 0, 2, 98, 98, 0, 2, 98, 114, 97, 0, 2,
+			98, 114, 117, 0, 2, 100, 115, 0, 2, 100, 116, 12, 0, 2, 102, 102, 117, 116, 97, 103, 101, 0, 2, 102, 102, 195, 166, 114, 101, 12,
+			0, 2, 102, 115, 116, 101, 100, 12, 0, 2, 103, 103, 114, 101, 115, 12, 12, 0, 2, 103, 111, 12, 12, 12, 0, 2, 107, 11, 111, 12,
+			0, 2, 107, 97, 17, 67, 12, 12, 0, 2, 107, 117, 116, 12, 12, 0, 2, 107, 118, 97, 12, 12, 0, 2, 108, 100, 12, 0, 2, 108,
+			100, 101, 0, 2, 108, 103, 0, 2, 108, 115, 0, 2, 108, 116, 0, 2, 110, 100, 12, 0, 2, 110, 100, 115, 107, 0, 2, 110, 103, 97,
+			118, 12, 12, 0, 2, 110, 103, 195, 165, 12, 12, 0, 2, 110, 104, 111, 12, 12, 0, 2, 110, 107, 108, 97, 103, 12, 12, 0, 2, 110,
+			115, 107, 0, 8, 2, 18, 66, 18, 69, 12, 12, 12, 0, 8, 2, 102, 102, 101, 107, 116, 12, 0, 8, 2, 103, 17, 65, 12, 12, 12,
+			0, 8, 2, 110, 100, 101, 110, 0, 8, 2, 110, 100, 101, 116, 0, 8, 112, 2, 109, 32, 12, 0, 100, 1, 108, 106, 101, 115, 2, 115,
+			0, 102, 1, 116, 115, 2, 102, 0, 103, 1, 100, 101, 114, 102, 2, 115, 0, 103, 1, 100, 110, 97, 109, 2, 115, 0, 103, 1, 100, 110,
+			184, 195, 115, 2, 115, 0, 103, 1, 100, 114, 101, 118, 104, 0, 103, 1, 100, 114, 184, 195, 108, 2, 115, 0, 103, 1, 100, 115, 110, 111,
+			2, 115, 0, 103, 1, 100, 115, 114, 105, 116, 2, 115, 0, 103, 1, 100, 115, 114, 111, 116, 2, 115, 0, 103, 2, 103, 114, 101, 103, 97,
+			116, 12, 0, 104, 1, 104, 115, 0, 114, 1, 107, 21, 2, 108, 12, 0, 114, 1, 107, 32, 110, 101, 2, 108, 0, 118, 101, 8, 104, 2,
+			32, 100, 101, 109, 32, 0, 118, 101, 8, 104, 2, 32, 100, 101, 110, 32, 0, 118, 101, 8, 104, 2, 32, 100, 101, 116, 32, 0, 118, 101,
+			8, 104, 2, 32, 101, 110, 32, 0, 118, 101, 8, 104, 2, 32, 101, 116, 32, 0, 118, 101, 8, 104, 2, 32, 103, 111, 100, 116, 32, 0,
+			118, 101, 8, 104, 2, 32, 116, 195, 166, 110, 107, 116, 32, 0, 118, 101, 8, 104, 32, 100, 105, 116, 108, 97, 2, 32, 0, 118, 101, 8,
+			104, 32, 101, 100, 2, 32, 0, 118, 101, 8, 104, 32, 101, 100, 114, 117, 98, 2, 32, 0, 118, 101, 8, 104, 32, 101, 107, 107, 105, 2,
+			32, 0, 118, 101, 8, 104, 32, 101, 110, 110, 117, 107, 2, 32, 0, 118, 101, 8, 104, 32, 101, 114, 97, 98, 2, 32, 0, 118, 101, 8,
+			104, 32, 103, 101, 106, 2, 32, 0, 118, 101, 8, 104, 32, 103, 105, 100, 97, 116, 115, 2, 32, 0, 118, 101, 8, 104, 32, 103, 105, 100,
+			184, 195, 110, 2, 32, 0, 118, 101, 8, 104, 32, 105, 32, 108, 105, 118, 2, 32, 0, 118, 101, 8, 104, 32, 105, 118, 2, 32, 0, 118,
+			101, 8, 104, 32, 107, 111, 110, 2, 32, 0, 118, 101, 8, 104, 32, 108, 105, 118, 2, 32, 0, 118, 101, 8, 104, 32, 110, 97, 104, 2,
+			32, 0, 118, 101, 8, 104, 32, 110, 97, 107, 2, 32, 0, 118, 101, 8, 104, 32, 110, 117, 104, 2, 32, 0, 118, 101, 8, 104, 32, 110,
+			117, 107, 2, 32, 0, 118, 101, 8, 104, 32, 111, 106, 2, 32, 0, 118, 101, 8, 104, 32, 114, 184, 195, 98, 2, 32, 0, 118, 101, 8,
+			104, 32, 115, 107, 97, 114, 116, 115, 2, 32, 0, 118, 101, 8, 104, 32, 116, 100, 111, 103, 2, 32, 0, 118, 101, 8, 104, 32, 117, 100,
+			2, 32, 0, 118, 101, 8, 104, 32, 165, 195, 109, 2, 32, 0, 118, 101, 8, 104, 32, 165, 195, 115, 103, 111, 2, 32, 0, 4, 1, 107,
+			2, 106, 97, 107, 3, 118, 6, 0, 1, 116, 97, 107, 2, 112, 117, 108, 116, 0, 105, 1, 107, 2, 110, 3, 118, 6, 37, 12, 0, 104,
+			101, 110, 1, 104, 115, 3, 118, 14, 50, 0, 114, 121, 1, 109, 32, 121, 100, 111, 111, 108, 98, 3, 118, 34, 37, 0, 116, 97, 107, 111,
+			109, 98, 1, 107, 3, 118, 47, 118, 49, 6, 124, 65, 71, 0, 112, 111, 108, 101, 111, 110, 1, 110, 3, 118, 48, 6, 39, 55, 57, 108,
+			50, 0, 107, 111, 110, 100, 97, 1, 110, 97, 3, 118, 49, 6, 109, 50, 72, 118, 0, 99, 114, 111, 115, 115, 101, 1, 108, 3, 118, 49,
+			34, 6, 109, 89, 0, 107, 114, 121, 108, 3, 118, 49, 34, 6, 130, 55, 0, 107, 97, 2, 100, 101, 109, 12, 12, 3, 118, 49, 118, 0,
+			110, 100, 1, 118, 2, 114, 101, 116, 116, 101, 3, 118, 50, 0, 110, 1, 10, 2, 105, 28, 34, 12, 3, 118, 50, 6, 0, 110, 100, 114,
+			101, 97, 8, 3, 118, 50, 72, 34, 6, 36, 117, 0, 110, 100, 114, 101, 119, 3, 118, 50, 72, 34, 40, 0, 110, 100, 101, 114, 115, 111,
+			110, 8, 3, 118, 50, 72, 109, 89, 109, 50, 0, 110, 103, 101, 108, 97, 8, 3, 118, 50, 75, 13, 55, 118, 0, 4, 110, 103, 2, 114,
+			101, 98, 3, 118, 50, 81, 0, 110, 103, 2, 114, 105, 12, 0, 108, 1, 110, 97, 2, 121, 12, 3, 118, 55, 6, 0, 4, 108, 108, 105,
+			101, 8, 2, 32, 3, 118, 55, 37, 0, 108, 108, 121, 1, 115, 0, 108, 100, 101, 116, 104, 97, 3, 118, 55, 72, 6, 37, 87, 117, 0,
+			108, 100, 101, 104, 121, 100, 1, 109, 114, 111, 102, 3, 118, 55, 72, 14, 107, 6, 129, 86, 0, 108, 102, 105, 101, 3, 118, 55, 83, 111,
+			0, 108, 97, 99, 101, 8, 112, 3, 118, 55, 118, 89, 0, 4, 1, 108, 21, 2, 103, 3, 118, 57, 0, 103, 1, 100, 101, 109, 109, 111,
+			100, 0, 103, 1, 102, 2, 32, 12, 0, 103, 1, 115, 2, 115, 32, 12, 0, 103, 1, 115, 2, 115, 97, 110, 12, 12, 0, 103, 1, 115,
+			2, 115, 98, 101, 104, 97, 110, 100, 108, 12, 12, 0, 103, 1, 115, 2, 115, 109, 97, 12, 12, 0, 103, 1, 115, 2, 115, 111, 109, 12,
+			12, 0, 103, 1, 118, 32, 116, 100, 105, 108, 2, 116, 0, 103, 8, 109, 2, 32, 12, 0, 103, 8, 118, 2, 32, 0, 108, 98, 117, 113,
+			117, 101, 114, 113, 117, 101, 3, 118, 59, 71, 112, 49, 132, 49, 37, 0, 109, 97, 114, 111, 1, 99, 3, 118, 65, 6, 116, 34, 124, 0,
+			109, 97, 1, 103, 2, 99, 104, 3, 118, 65, 6, 118, 0, 109, 117, 114, 97, 105, 1, 115, 3, 118, 65, 123, 34, 6, 136, 0, 98, 101,
+			116, 101, 115, 1, 105, 100, 3, 118, 71, 6, 36, 47, 14, 89, 0, 98, 108, 97, 110, 1, 115, 97, 99, 2, 99, 97, 3, 118, 71, 55,
+			6, 122, 68, 0, 100, 101, 114, 1, 10, 2, 101, 28, 33, 3, 118, 72, 6, 36, 34, 0, 100, 101, 110, 116, 1, 10, 2, 28, 33, 3,
+			118, 72, 6, 114, 50, 47, 0, 103, 1, 105, 2, 110, 111, 115, 101, 3, 118, 81, 0, 4, 102, 2, 97, 115, 105, 3, 118, 83, 0, 102,
+			2, 97, 116, 105, 115, 107, 0, 102, 2, 111, 108, 107, 0, 102, 2, 111, 114, 0, 4, 102, 101, 1, 99, 3, 118, 83, 6, 114, 0, 102,
+			195, 169, 1, 99, 0, 102, 111, 110, 1, 116, 107, 105, 100, 3, 118, 83, 6, 124, 50, 0, 4, 118, 1, 116, 115, 2, 110, 105, 110, 3,
+			118, 84, 0, 118, 1, 116, 115, 103, 111, 98, 0, 118, 101, 114, 1, 108, 107, 2, 32, 3, 118, 84, 6, 114, 34, 0, 118, 101, 116, 1,
+			108, 110, 111, 110, 97, 107, 3, 118, 84, 116, 72, 0, 116, 104, 121, 1, 107, 3, 118, 87, 36, 0, 115, 116, 97, 105, 114, 101, 3, 118,
+			89, 72, 6, 115, 12, 34, 0, 99, 104, 101, 1, 116, 116, 97, 3, 118, 91, 6, 114, 0, 4, 116, 105, 111, 1, 103, 105, 108, 98, 111,
+			2, 110, 3, 118, 91, 6, 124, 0, 116, 105, 111, 8, 103, 105, 108, 98, 111, 2, 110, 0, 116, 105, 111, 110, 1, 10, 2, 28, 33, 3,
+			118, 91, 7, 124, 50, 0, 116, 105, 111, 1, 110, 114, 101, 116, 110, 105, 2, 110, 97, 108, 3, 118, 91, 124, 0, 4, 1, 17, 67, 2,
+			18, 75, 101, 3, 121, 0, 1, 18, 75, 2, 112, 12, 0, 1, 100, 97, 2, 109, 0, 1, 102, 2, 109, 108, 101, 12, 0, 1, 106, 109,
+			2, 118, 0, 1, 110, 2, 112, 0, 1, 114, 2, 17, 67, 17, 65, 12, 0, 1, 114, 2, 17, 67, 18, 69, 0, 1, 114, 2, 18, 71,
+			0, 1, 114, 2, 32, 0, 1, 114, 2, 100, 0, 1, 114, 2, 100, 105, 111, 12, 12, 0, 1, 114, 2, 101, 110, 0, 1, 114, 2, 108,
+			0, 1, 114, 2, 108, 101, 12, 0, 1, 114, 2, 110, 0, 1, 114, 2, 110, 101, 0, 1, 114, 17, 67, 2, 110, 0, 1, 114, 18, 66,
+			0, 1, 114, 98, 2, 17, 67, 0, 1, 114, 101, 109, 97, 107, 0, 1, 114, 102, 0, 1, 114, 111, 102, 2, 110, 100, 0, 1, 114, 111,
+			102, 2, 110, 107, 0, 1, 114, 116, 0, 1, 114, 117, 97, 108, 0, 1, 114, 118, 2, 108, 116, 0, 2, 18, 66, 116, 12, 0, 2, 102,
+			102, 97, 108, 100, 12, 0, 2, 109, 116, 0, 2, 120, 0, 8, 2, 109, 98, 0, 100, 101, 114, 8, 108, 2, 32, 118, 195, 166, 114, 101,
+			32, 0, 104, 1, 114, 97, 115, 0, 108, 1, 104, 2, 102, 98, 97, 99, 107, 0, 114, 1, 21, 2, 32, 12, 12, 0, 114, 2, 17, 67,
+			12, 0, 114, 2, 17, 67, 17, 65, 12, 12, 0, 114, 2, 17, 67, 105, 12, 12, 0, 114, 2, 32, 12, 12, 0, 114, 2, 110, 12, 0,
+			114, 2, 110, 101, 12, 0, 4, 1, 114, 2, 111, 117, 108, 3, 121, 6, 0, 8, 110, 111, 109, 2, 114, 107, 105, 0, 4, 97, 1, 107,
+			105, 114, 102, 97, 2, 110, 3, 121, 12, 0, 114, 2, 17, 67, 17, 67, 0, 114, 2, 107, 12, 0, 114, 8, 2, 105, 12, 0, 114, 101,
+			1, 107, 2, 110, 12, 0, 110, 99, 101, 1, 108, 101, 101, 114, 102, 3, 121, 12, 68, 89, 0, 114, 101, 114, 1, 102, 2, 12, 12, 3,
+			121, 12, 108, 0, 114, 101, 114, 101, 1, 102, 2, 12, 12, 3, 121, 12, 108, 51, 14, 0, 114, 114, 2, 105, 12, 12, 3, 121, 20, 0,
+			4, 114, 1, 17, 67, 2, 17, 65, 12, 3, 121, 34, 0, 114, 2, 12, 0, 114, 8, 107, 2, 108, 32, 0, 114, 8, 107, 2, 108, 32,
+			115, 109, 97, 114, 116, 0, 114, 101, 8, 98, 2, 116, 3, 121, 34, 6, 119, 0, 114, 97, 103, 100, 1, 109, 115, 3, 121, 34, 6, 121,
+			58, 72, 0, 97, 114, 111, 110, 3, 121, 34, 108, 50, 0, 4, 118, 1, 103, 2, 109, 105, 3, 121, 40, 0, 118, 8, 2, 32, 0, 103,
+			110, 101, 1, 109, 2, 116, 3, 121, 40, 50, 6, 36, 0, 114, 107, 97, 110, 115, 97, 115, 3, 121, 49, 13, 50, 89, 125, 12, 0, 110,
+			99, 104, 101, 1, 108, 98, 3, 121, 50, 76, 0, 4, 114, 1, 109, 2, 105, 110, 3, 121, 51, 0, 114, 1, 112, 2, 101, 12, 0, 114,
+			1, 116, 2, 18, 69, 12, 0, 114, 2, 97, 12, 0, 114, 2, 101, 118, 111, 108, 117, 116, 105, 111, 110, 12, 0, 105, 1, 104, 103, 110,
+			97, 104, 115, 3, 121, 57, 0, 4, 102, 2, 115, 3, 121, 58, 0, 103, 1, 108, 115, 101, 98, 2, 108, 12, 0, 117, 1, 112, 2, 108,
+			117, 115, 0, 117, 2, 12, 12, 0, 118, 1, 110, 103, 2, 112, 111, 116, 0, 118, 1, 115, 2, 17, 67, 0, 118, 1, 116, 2, 115, 0,
+			118, 2, 108, 12, 12, 0, 118, 8, 108, 0, 118, 8, 108, 2, 118, 0, 118, 8, 116, 2, 32, 0, 118, 101, 1, 108, 2, 109, 101, 110,
+			116, 0, 119, 2, 25, 0, 109, 97, 103, 101, 114, 8, 3, 121, 65, 121, 34, 0, 4, 110, 1, 114, 98, 2, 99, 104, 3, 121, 68, 0,
+			110, 2, 99, 105, 101, 110, 0, 110, 100, 1, 100, 2, 101, 114, 101, 3, 121, 68, 72, 0, 110, 99, 104, 101, 1, 109, 2, 116, 3, 121,
+			68, 91, 6, 115, 0, 98, 97, 100, 115, 1, 114, 116, 115, 3, 121, 71, 6, 117, 89, 0, 98, 115, 111, 108, 117, 116, 105, 111, 110, 8,
+			3, 121, 71, 89, 39, 55, 40, 91, 6, 39, 50, 0, 98, 115, 111, 108, 117, 116, 105, 111, 110, 3, 121, 71, 89, 39, 55, 40, 91, 39,
+			50, 0, 98, 97, 114, 101, 116, 1, 107, 3, 121, 71, 121, 34, 6, 115, 0, 122, 122, 105, 97, 1, 114, 2, 12, 3, 121, 72, 91, 117,
+			0, 100, 97, 114, 1, 114, 3, 121, 72, 121, 34, 0, 114, 103, 101, 1, 108, 3, 121, 75, 0, 4, 103, 1, 109, 2, 97, 115, 105, 3,
+			121, 81, 0, 103, 1, 109, 2, 116, 12, 0, 102, 97, 101, 1, 114, 3, 121, 83, 117, 6, 36, 0, 99, 104, 1, 98, 3, 121, 101, 0,
+			101, 114, 1, 114, 2, 32, 3, 121, 108, 0, 114, 1, 102, 2, 101, 116, 12, 12, 3, 121, 110, 0, 4, 114, 97, 1, 17, 67, 2, 107,
+			3, 121, 121, 0, 114, 97, 1, 112, 2, 100, 105, 12, 0, 114, 101, 1, 18, 73, 2, 12, 12, 0, 114, 101, 1, 102, 2, 12, 12, 0,
+			114, 101, 114, 1, 108, 107, 2, 32, 0, 4, 114, 101, 1, 17, 67, 2, 12, 3, 121, 121, 11, 0, 114, 101, 1, 109, 2, 114, 0, 114,
+			101, 1, 17, 67, 2, 100, 101, 12, 3, 121, 122, 0, 114, 101, 116, 2, 12, 3, 121, 122, 14, 86, 0, 114, 101, 114, 110, 101, 1, 17,
+			67, 3, 121, 122, 50, 14, 0, 4, 103, 1, 104, 2, 108, 3, 121, 123, 0, 103, 1, 114, 2, 110, 97, 12, 0, 103, 2, 110, 12, 0,
+			118, 1, 18, 73, 2, 17, 67, 0, 118, 1, 98, 2, 12, 12, 0, 118, 1, 104, 2, 17, 67, 0, 118, 1, 104, 2, 97, 98, 111, 114,
+			114, 0, 118, 1, 104, 2, 105, 115, 0, 118, 1, 104, 2, 111, 118, 101, 114, 0, 118, 1, 104, 2, 117, 100, 0, 118, 1, 104, 21, 2,
+			32, 0, 118, 1, 104, 32, 101, 100, 184, 195, 0, 118, 1, 104, 32, 101, 107, 115, 105, 2, 32, 0, 118, 1, 104, 32, 101, 110, 98, 165,
+			195, 0, 118, 1, 104, 32, 103, 111, 32, 108, 101, 109, 109, 105, 104, 0, 118, 1, 104, 32, 116, 110, 101, 98, 165, 195, 0, 118, 95, 1,
+			104, 21, 0, 118, 101, 114, 116, 1, 106, 3, 121, 123, 108, 72, 0, 4, 1, 17, 67, 2, 18, 71, 11, 3, 122, 0, 1, 17, 67, 2,
+			18, 75, 0, 1, 17, 67, 2, 99, 107, 0, 1, 17, 67, 2, 102, 116, 0, 1, 17, 67, 2, 107, 18, 69, 12, 12, 0, 1, 17, 67,
+			2, 109, 12, 0, 1, 17, 67, 2, 120, 12, 12, 0, 1, 18, 66, 2, 18, 71, 116, 12, 0, 1, 18, 67, 2, 18, 67, 12, 0, 1,
+			18, 67, 2, 18, 67, 115, 101, 114, 0, 1, 18, 71, 2, 110, 107, 0, 1, 18, 75, 2, 112, 112, 12, 0, 1, 98, 2, 106, 101, 114,
+			0, 1, 100, 2, 109, 112, 0, 1, 104, 2, 18, 66, 0, 1, 104, 2, 112, 0, 1, 104, 99, 2, 110, 0, 1, 105, 108, 108, 105, 119,
+			2, 109, 0, 1, 105, 114, 2, 109, 0, 1, 106, 2, 18, 75, 111, 12, 0, 1, 106, 2, 112, 112, 0, 1, 106, 2, 112, 115, 0, 1,
+			107, 2, 102, 12, 0, 1, 107, 2, 103, 0, 1, 107, 2, 107, 97, 12, 12, 0, 1, 107, 115, 2, 107, 0, 1, 108, 2, 98, 32, 12,
+			0, 1, 108, 2, 98, 98, 0, 1, 108, 2, 103, 116, 12, 0, 1, 108, 2, 112, 12, 0, 1, 108, 115, 2, 18, 71, 0, 1, 108, 115,
+			2, 110, 103, 101, 12, 0, 1, 108, 115, 118, 105, 108, 2, 110, 103, 12, 0, 1, 109, 105, 108, 107, 2, 107, 115, 0, 1, 110, 115, 2,
+			118, 115, 0, 1, 112, 2, 112, 114, 105, 12, 0, 1, 112, 115, 2, 110, 107, 117, 108, 101, 114, 0, 1, 114, 2, 17, 67, 11, 12, 12,
+			0, 1, 114, 2, 17, 67, 25, 12, 0, 1, 114, 2, 17, 67, 105, 12, 0, 1, 114, 2, 18, 66, 12, 12, 0, 1, 114, 2, 18, 67,
+			18, 69, 12, 0, 1, 114, 2, 108, 21, 21, 12, 0, 1, 114, 2, 108, 101, 110, 12, 0, 1, 114, 2, 110, 100, 12, 0, 1, 114, 98,
+			0, 1, 114, 107, 115, 2, 108, 0, 1, 114, 116, 2, 18, 67, 0, 1, 116, 2, 98, 116, 0, 1, 116, 2, 110, 107, 0, 1, 116, 2,
+			112, 0, 1, 118, 2, 99, 99, 0, 1, 118, 2, 106, 0, 1, 118, 2, 110, 100, 114, 0, 2, 18, 66, 11, 12, 12, 0, 2, 18, 66,
+			12, 12, 12, 0, 2, 98, 99, 0, 2, 98, 110, 111, 114, 109, 0, 2, 99, 99, 12, 0, 2, 102, 17, 67, 12, 0, 2, 102, 98, 114,
+			121, 100, 0, 2, 102, 118, 105, 0, 2, 103, 116, 0, 2, 107, 11, 117, 12, 0, 2, 109, 101, 114, 105, 107, 97, 110, 0, 2, 109, 102,
+			0, 2, 109, 109, 12, 12, 0, 2, 109, 110, 0, 2, 109, 115, 0, 2, 109, 117, 108, 101, 116, 0, 2, 110, 100, 114, 101, 12, 0, 2,
+			112, 111, 116, 101, 0, 2, 112, 112, 97, 114, 12, 0, 2, 112, 112, 101, 108, 115, 105, 110, 12, 0, 2, 114, 114, 12, 12, 0, 2, 118,
+			110, 12, 0, 8, 2, 98, 17, 67, 0, 8, 2, 98, 115, 0, 8, 2, 108, 100, 114, 105, 103, 12, 0, 8, 2, 109, 101, 110, 32, 0,
+			8, 2, 110, 100, 101, 114, 108, 101, 100, 12, 0, 4, 103, 1, 18, 74, 2, 12, 3, 122, 40, 0, 103, 1, 115, 2, 17, 67, 12, 0,
+			103, 1, 115, 2, 115, 195, 184, 0, 116, 1, 114, 10, 2, 105, 28, 33, 3, 122, 47, 0, 116, 1, 114, 10, 2, 117, 114, 28, 33, 3,
+			122, 47, 6, 0, 99, 99, 97, 114, 97, 116, 1, 98, 3, 122, 49, 122, 34, 6, 122, 0, 110, 1, 114, 10, 2, 105, 28, 34, 12, 3,
+			122, 50, 6, 0, 4, 110, 103, 2, 105, 110, 97, 3, 122, 50, 81, 0, 110, 103, 2, 105, 111, 103, 114, 0, 110, 103, 2, 117, 108, 12,
+			12, 0, 110, 103, 8, 2, 111, 108, 0, 121, 2, 25, 3, 122, 57, 0, 4, 102, 2, 17, 65, 3, 122, 58, 0, 102, 2, 116, 97, 108,
+			0, 103, 1, 114, 112, 115, 2, 108, 101, 116, 0, 118, 102, 108, 97, 98, 1, 103, 3, 122, 58, 83, 55, 118, 71, 0, 109, 101, 108, 117,
+			1, 109, 2, 107, 3, 122, 65, 14, 55, 6, 123, 0, 4, 110, 1, 108, 2, 99, 101, 114, 3, 122, 68, 0, 110, 1, 108, 112, 2, 99,
+			104, 0, 110, 103, 2, 114, 101, 0, 110, 103, 8, 2, 101, 17, 67, 0, 110, 99, 101, 1, 10, 2, 114, 101, 28, 33, 3, 122, 68, 89,
+			6, 36, 0, 110, 99, 101, 1, 10, 2, 12, 3, 122, 68, 89, 13, 0, 110, 99, 101, 1, 10, 2, 114, 101, 12, 3, 122, 68, 89, 36,
+			0, 98, 101, 108, 1, 114, 105, 109, 3, 122, 71, 6, 116, 55, 0, 112, 112, 101, 2, 116, 105, 116, 12, 3, 122, 71, 14, 0, 112, 101,
+			103, 195, 184, 106, 101, 1, 112, 3, 122, 71, 14, 81, 6, 109, 57, 14, 0, 98, 100, 111, 2, 109, 3, 122, 71, 72, 6, 124, 0, 100,
+			101, 114, 1, 114, 10, 2, 101, 28, 33, 3, 122, 72, 6, 114, 34, 0, 103, 103, 101, 114, 1, 100, 2, 116, 3, 122, 81, 109, 0, 102,
+			102, 1, 107, 2, 101, 12, 3, 122, 83, 0, 102, 1, 114, 103, 10, 2, 105, 28, 33, 3, 122, 83, 6, 0, 102, 116, 101, 114, 115, 104,
+			97, 118, 101, 3, 122, 83, 47, 109, 91, 116, 57, 84, 0, 116, 105, 111, 110, 1, 114, 10, 2, 28, 33, 3, 122, 91, 6, 124, 50, 0,
+			104, 97, 8, 2, 32, 3, 122, 107, 6, 122, 0, 114, 101, 114, 1, 17, 67, 3, 122, 109, 0, 118, 1, 104, 2, 101, 110, 103, 3, 122,
+			123, 0, 117, 1, 104, 99, 2, 118, 105, 110, 3, 124, 0, 4, 1, 119, 2, 108, 116, 3, 125, 0, 1, 119, 2, 116, 101, 114, 0, 8,
+			116, 115, 2, 108, 108, 0, 117, 1, 115, 2, 116, 101, 114, 101, 0, 117, 8, 112, 2, 108, 0, 119, 1, 114, 2, 12, 0, 117, 1, 115,
+			2, 99, 101, 3, 125, 12, 0, 108, 108, 1, 98, 121, 101, 108, 108, 111, 118, 3, 125, 12, 55, 0, 117, 98, 114, 101, 121, 3, 125, 12,
+			71, 34, 37, 0, 117, 100, 114, 101, 121, 3, 125, 12, 72, 51, 37, 0, 117, 103, 103, 105, 101, 3, 125, 12, 81, 113, 0, 97, 103, 101,
+			8, 3, 125, 12, 123, 14, 0, 117, 114, 105, 101, 1, 108, 3, 125, 34, 37, 0, 108, 107, 1, 116, 2, 115, 104, 111, 119, 3, 125, 49,
+			0, 117, 114, 101, 101, 110, 1, 109, 3, 125, 51, 6, 37, 12, 50, 0, 108, 108, 2, 32, 114, 105, 103, 104, 116, 3, 125, 55, 0, 108,
+			100, 105, 110, 103, 1, 112, 115, 3, 125, 55, 72, 4, 36, 68, 0, 117, 114, 101, 110, 99, 101, 1, 108, 3, 128, 16, 14, 50, 89, 0,
+			119, 114, 101, 110, 99, 101, 1, 108, 3, 128, 34, 13, 50, 89, 0, 4, 105, 1, 99, 2, 114, 111, 3, 136, 0, 105, 8, 107, 2, 110,
+			0, 105, 8, 110, 105, 115, 0, 121, 1, 109, 2, 97, 0, 121, 1, 117, 103, 0, 105, 1, 110, 2, 114, 111, 98, 105, 3, 136, 6, 0,
+			105, 114, 111, 8, 107, 3, 136, 34, 39, 0, 121, 114, 101, 117, 116, 104, 1, 98, 3, 136, 51, 6, 108, 57, 47, 0, 121, 101, 114, 1,
+			98, 3, 136, 109, 0, 121, 97, 116, 111, 108, 108, 97, 104, 3, 136, 117, 47, 6, 108, 55, 117, 0, 7, 6, 98, 0, 4, 1, 184, 195,
+			107, 2, 109, 97, 3, 0, 1, 184, 195, 107, 2, 109, 195, 166, 3, 0, 4, 114, 111, 119, 110, 3, 21, 0, 121, 114, 111, 110, 0, 111,
+			110, 115, 111, 105, 114, 3, 21, 102, 114, 0, 4, 1, 101, 112, 2, 101, 114, 3, 58, 0, 1, 101, 112, 2, 114, 101, 0, 98, 1, 111,
+			107, 2, 101, 114, 0, 4, 3, 71, 0, 98, 0, 101, 97, 116, 8, 3, 71, 6, 37, 12, 47, 0, 111, 110, 107, 97, 109, 109, 101, 114,
+			97, 116, 3, 71, 6, 108, 68, 49, 35, 65, 13, 34, 121, 47, 0, 114, 105, 110, 116, 105, 111, 110, 3, 71, 34, 36, 50, 72, 57, 39,
+			12, 50, 0, 114, 111, 97, 100, 3, 71, 34, 125, 72, 0, 114, 97, 105, 108, 108, 101, 3, 71, 34, 136, 12, 0, 97, 114, 121, 116, 111,
+			110, 3, 71, 35, 37, 47, 108, 50, 0, 117, 105, 2, 108, 100, 105, 110, 103, 3, 71, 36, 0, 105, 110, 103, 104, 97, 109, 3, 71, 36,
+			68, 112, 65, 0, 117, 115, 105, 110, 101, 115, 115, 3, 71, 36, 89, 50, 115, 89, 0, 101, 97, 2, 116, 114, 105, 3, 71, 36, 117, 6,
+			0, 101, 101, 1, 115, 105, 114, 102, 3, 71, 37, 0, 101, 98, 111, 112, 3, 71, 37, 12, 71, 108, 48, 0, 101, 97, 99, 104, 3, 71,
+			37, 12, 76, 0, 101, 97, 103, 108, 101, 3, 71, 37, 12, 81, 13, 55, 0, 105, 108, 108, 105, 101, 3, 71, 37, 59, 37, 0, 111, 118,
+			97, 114, 121, 3, 71, 39, 84, 35, 34, 6, 111, 0, 101, 97, 117, 106, 111, 108, 97, 105, 115, 3, 71, 39, 91, 57, 39, 55, 6, 115,
+			0, 111, 117, 114, 103, 111, 103, 110, 101, 3, 71, 40, 34, 81, 6, 108, 50, 57, 13, 0, 111, 117, 105, 108, 108, 2, 111, 110, 3, 71,
+			40, 55, 57, 0, 111, 117, 105, 108, 108, 97, 98, 97, 105, 115, 115, 101, 3, 71, 40, 57, 35, 71, 6, 115, 89, 0, 111, 117, 100, 111,
+			105, 114, 3, 71, 40, 72, 58, 6, 121, 12, 0, 114, 117, 99, 101, 8, 3, 71, 51, 40, 12, 89, 0, 114, 101, 97, 107, 100, 97, 110,
+			99, 101, 2, 32, 3, 71, 51, 116, 57, 81, 72, 118, 50, 89, 0, 114, 101, 97, 107, 100, 97, 110, 99, 101, 2, 110, 3, 71, 51, 116,
+			57, 81, 72, 118, 50, 89, 14, 0, 114, 101, 97, 107, 100, 97, 110, 99, 101, 114, 3, 71, 51, 116, 57, 81, 72, 118, 50, 89, 109, 0,
+			114, 111, 119, 115, 101, 114, 3, 71, 51, 121, 58, 89, 108, 0, 108, 111, 111, 100, 121, 3, 71, 55, 108, 72, 37, 0, 108, 97, 107, 101,
+			8, 3, 71, 55, 115, 57, 49, 0, 108, 105, 103, 104, 8, 3, 71, 55, 136, 12, 0, 117, 116, 116, 101, 8, 2, 32, 3, 71, 57, 40,
+			12, 47, 0, 117, 105, 99, 8, 3, 71, 57, 40, 37, 49, 0, 111, 114, 111, 117, 103, 104, 3, 71, 108, 34, 108, 0, 111, 100, 121, 103,
+			117, 97, 114, 100, 3, 71, 108, 72, 37, 81, 121, 12, 72, 0, 111, 100, 121, 115, 116, 111, 99, 107, 105, 110, 103, 3, 71, 108, 72, 37,
+			89, 47, 108, 49, 36, 68, 0, 117, 103, 115, 121, 3, 71, 108, 81, 89, 37, 0, 117, 102, 102, 97, 108, 111, 3, 71, 108, 83, 112, 55,
+			125, 58, 0, 117, 116, 116, 101, 114, 102, 108, 121, 3, 71, 109, 47, 109, 83, 55, 136, 0, 101, 108, 108, 101, 118, 117, 101, 3, 71, 115,
+			55, 13, 84, 6, 129, 0, 101, 105, 106, 105, 110, 103, 3, 71, 115, 57, 75, 6, 36, 68, 0, 101, 118, 101, 114, 108, 121, 3, 71, 115,
+			84, 108, 55, 37, 0, 97, 115, 101, 98, 97, 108, 108, 3, 71, 116, 57, 89, 82, 125, 12, 59, 0, 97, 99, 107, 117, 112, 8, 3, 71,
+			117, 49, 6, 108, 71, 0, 97, 98, 121, 108, 111, 110, 2, 101, 114, 3, 71, 117, 71, 129, 55, 6, 39, 50, 0, 97, 98, 121, 108, 111,
+			110, 2, 105, 115, 107, 3, 71, 117, 71, 129, 55, 39, 50, 0, 97, 98, 121, 108, 111, 110, 3, 71, 117, 71, 129, 55, 108, 50, 0, 97,
+			99, 107, 103, 97, 109, 109, 111, 110, 3, 71, 117, 81, 6, 117, 65, 112, 50, 0, 97, 115, 115, 105, 110, 1, 21, 3, 71, 117, 89, 116,
+			68, 0, 97, 108, 107, 111, 110, 8, 3, 71, 118, 55, 49, 6, 109, 68, 0, 97, 108, 107, 111, 110, 3, 71, 118, 55, 49, 109, 68, 0,
+			97, 114, 98, 105, 101, 3, 71, 121, 34, 71, 37, 0, 97, 115, 107, 101, 116, 98, 97, 108, 108, 3, 71, 121, 89, 81, 116, 47, 71, 125,
+			12, 55, 0, 111, 97, 114, 100, 3, 71, 125, 12, 72, 0, 97, 108, 116, 105, 109, 111, 114, 101, 3, 71, 125, 55, 47, 37, 65, 108, 12,
+			0, 111, 110, 101, 1, 32, 116, 3, 71, 125, 58, 50, 0, 4, 117, 102, 102, 101, 116, 1, 21, 3, 71, 129, 83, 6, 36, 0, 117, 102,
+			102, 101, 116, 8, 0, 117, 114, 103, 104, 3, 71, 132, 12, 81, 0, 117, 114, 116, 111, 110, 3, 71, 132, 47, 108, 50, 0, 101, 114, 110,
+			105, 101, 3, 71, 132, 50, 37, 0, 105, 114, 109, 105, 110, 103, 104, 97, 109, 3, 71, 132, 65, 37, 68, 13, 65, 0, 117, 114, 103, 101,
+			115, 115, 3, 71, 132, 75, 36, 89, 0, 101, 105, 2, 114, 117, 116, 3, 71, 136, 0, 105, 107, 101, 3, 71, 136, 49, 0, 7, 6, 99,
+			0, 4, 1, 115, 2, 104, 97, 3, 0, 2, 107, 3, 0, 99, 97, 1, 101, 98, 3, 2, 49, 118, 0, 99, 1, 101, 98, 101, 114, 2,
+			97, 3, 8, 49, 0, 101, 114, 1, 105, 100, 101, 100, 2, 28, 33, 3, 8, 49, 7, 36, 34, 0, 1, 105, 114, 101, 100, 101, 114, 102,
+			2, 105, 97, 3, 8, 49, 89, 0, 4, 101, 114, 1, 10, 2, 101, 28, 33, 3, 8, 89, 7, 36, 0, 101, 114, 1, 10, 2, 101, 100,
+			101, 115, 28, 33, 0, 101, 114, 1, 10, 2, 101, 114, 28, 33, 0, 101, 114, 1, 10, 2, 28, 33, 3, 8, 89, 7, 36, 34, 0, 101,
+			114, 101, 1, 10, 2, 28, 33, 3, 8, 89, 7, 36, 108, 0, 4, 101, 1, 10, 2, 32, 28, 33, 3, 8, 89, 14, 0, 101, 1, 10,
+			2, 110, 28, 33, 0, 101, 1, 10, 2, 114, 28, 33, 3, 8, 89, 108, 0, 101, 114, 101, 110, 1, 117, 100, 111, 114, 112, 3, 8, 89,
+			108, 108, 50, 0, 101, 110, 101, 1, 115, 3, 36, 50, 14, 0, 101, 110, 101, 114, 1, 115, 3, 36, 50, 108, 0, 104, 97, 2, 116, 3,
+			47, 57, 118, 0, 4, 3, 49, 0, 1, 97, 108, 108, 105, 100, 97, 99, 0, 1, 105, 116, 115, 97, 108, 112, 0, 99, 1, 105, 112, 2,
+			111, 0, 99, 1, 111, 114, 2, 111, 0, 99, 1, 111, 115, 2, 101, 114, 0, 99, 1, 117, 121, 2, 97, 0, 104, 1, 101, 116, 2, 110,
+			111, 0, 104, 1, 105, 109, 2, 97, 0, 104, 1, 105, 110, 2, 111, 108, 0, 104, 1, 111, 115, 97, 109, 2, 105, 115, 0, 104, 2, 108,
+			111, 101, 0, 104, 2, 114, 0, 104, 8, 97, 109, 2, 32, 0, 115, 1, 110, 97, 114, 102, 0, 99, 1, 97, 116, 115, 2, 97, 116, 111,
+			3, 49, 6, 0, 114, 101, 101, 107, 3, 49, 34, 37, 12, 49, 0, 114, 101, 109, 101, 3, 49, 34, 116, 65, 0, 114, 101, 109, 101, 2,
+			110, 3, 49, 34, 116, 65, 13, 0, 114, 111, 105, 115, 115, 97, 110, 116, 3, 49, 34, 124, 19, 35, 89, 6, 121, 68, 0, 111, 119, 98,
+			111, 121, 3, 49, 35, 40, 71, 125, 57, 0, 114, 97, 122, 121, 3, 49, 51, 115, 57, 89, 37, 0, 108, 97, 105, 114, 2, 118, 111, 121,
+			3, 49, 55, 116, 34, 0, 108, 97, 114, 101, 110, 99, 101, 8, 3, 49, 55, 117, 51, 14, 50, 89, 0, 108, 97, 117, 100, 101, 3, 49,
+			55, 125, 12, 72, 0, 108, 97, 117, 100, 101, 116, 116, 101, 3, 49, 55, 126, 72, 6, 36, 47, 0, 104, 105, 97, 110, 116, 105, 3, 49,
+			57, 6, 118, 50, 47, 111, 0, 99, 3, 49, 89, 0, 111, 114, 110, 2, 102, 3, 49, 108, 12, 50, 0, 111, 114, 110, 105, 99, 104, 111,
+			110, 3, 49, 108, 34, 50, 37, 91, 6, 108, 68, 0, 111, 116, 116, 97, 103, 101, 3, 49, 108, 47, 37, 75, 0, 97, 108, 108, 103, 105,
+			114, 108, 3, 49, 108, 55, 81, 132, 12, 55, 0, 111, 109, 112, 117, 116, 101, 114, 3, 49, 108, 65, 48, 57, 6, 40, 47, 108, 0, 111,
+			114, 100, 101, 108, 105, 97, 3, 49, 108, 72, 6, 37, 55, 37, 20, 117, 0, 111, 2, 110, 114, 97, 100, 3, 49, 109, 0, 111, 117, 110,
+			116, 114, 121, 3, 49, 109, 50, 47, 34, 111, 0, 117, 115, 116, 101, 114, 8, 3, 49, 109, 89, 47, 109, 0, 97, 106, 117, 110, 3, 49,
+			115, 75, 112, 50, 0, 97, 116, 101, 114, 105, 110, 103, 3, 49, 116, 37, 47, 13, 34, 111, 68, 0, 97, 112, 111, 110, 101, 8, 3, 49,
+			117, 48, 6, 125, 58, 50, 0, 97, 114, 111, 108, 105, 110, 97, 1, 32, 104, 116, 114, 111, 110, 3, 49, 118, 34, 39, 55, 6, 136, 50,
+			117, 0, 97, 109, 101, 109, 98, 101, 114, 116, 3, 49, 122, 65, 122, 68, 71, 6, 115, 34, 0, 111, 108, 97, 100, 97, 3, 49, 124, 55,
+			6, 121, 86, 117, 0, 121, 112, 101, 114, 3, 49, 129, 48, 108, 0, 117, 114, 108, 101, 114, 3, 49, 132, 55, 108, 0, 4, 2, 101, 109,
+			98, 97, 108, 111, 3, 76, 0, 104, 1, 105, 119, 0, 104, 2, 101, 101, 115, 101, 0, 104, 2, 105, 108, 105, 0, 4, 1, 114, 111, 99,
+			115, 2, 101, 115, 101, 3, 76, 6, 0, 8, 97, 112, 2, 105, 110, 111, 0, 104, 2, 105, 112, 3, 76, 57, 0, 99, 1, 117, 112, 112,
+			97, 99, 2, 105, 110, 111, 3, 76, 57, 6, 0, 105, 97, 111, 8, 2, 32, 3, 76, 57, 122, 58, 0, 104, 101, 108, 115, 101, 97, 3,
+			76, 116, 55, 89, 111, 0, 104, 97, 112, 108, 105, 110, 3, 76, 118, 48, 55, 111, 50, 0, 104, 97, 108, 108, 101, 110, 103, 101, 3, 76,
+			118, 55, 116, 50, 75, 0, 104, 97, 114, 108, 101, 115, 3, 76, 121, 12, 55, 89, 0, 104, 97, 114, 108, 105, 101, 3, 76, 121, 55, 37,
+			0, 104, 97, 117, 99, 101, 114, 3, 76, 125, 12, 89, 109, 0, 104, 117, 114, 99, 104, 3, 76, 132, 12, 76, 0, 104, 105, 108, 100, 3,
+			76, 136, 55, 72, 0, 4, 1, 17, 65, 2, 101, 3, 89, 0, 1, 97, 102, 2, 97, 100, 0, 1, 97, 102, 2, 111, 110, 0, 2, 101,
+			0, 2, 101, 108, 108, 111, 102, 97, 110, 0, 2, 105, 0, 2, 121, 0, 2, 195, 166, 115, 97, 114, 0, 2, 195, 184, 108, 105, 98, 97,
+			116, 0, 101, 8, 105, 108, 97, 0, 101, 8, 105, 102, 102, 111, 2, 114, 3, 89, 6, 36, 0, 195, 169, 114, 1, 10, 2, 32, 3, 89,
+			6, 36, 34, 0, 101, 2, 114, 116, 3, 89, 6, 115, 0, 195, 184, 114, 1, 10, 2, 32, 3, 89, 6, 132, 34, 0, 101, 1, 105, 102,
+			102, 111, 2, 114, 3, 89, 36, 0, 101, 114, 1, 105, 102, 105, 108, 97, 118, 107, 115, 105, 100, 3, 89, 36, 34, 0, 121, 110, 116, 104,
+			105, 97, 3, 89, 36, 50, 87, 37, 117, 0, 105, 101, 117, 120, 3, 89, 57, 6, 132, 0, 4, 105, 103, 97, 114, 101, 116, 3, 89, 111,
+			81, 14, 34, 6, 119, 47, 0, 105, 103, 97, 114, 101, 116, 116, 0, 105, 114, 99, 117, 115, 1, 32, 121, 108, 108, 105, 100, 97, 99, 99,
+			105, 112, 3, 89, 132, 49, 13, 89, 0, 101, 121, 108, 111, 110, 3, 89, 136, 59, 108, 50, 0, 4, 2, 104, 97, 3, 91, 0, 104, 1,
+			114, 0, 104, 2, 12, 0, 104, 2, 97, 116, 101, 97, 117, 0, 99, 105, 110, 105, 1, 117, 112, 3, 91, 6, 37, 50, 111, 0, 2, 101,
+			108, 108, 111, 3, 91, 57, 0, 104, 105, 99, 97, 103, 111, 3, 91, 111, 49, 6, 121, 81, 125, 58, 0, 104, 111, 112, 105, 110, 3, 91,
+			124, 48, 115, 68, 0, 104, 111, 107, 101, 114, 101, 110, 2, 32, 3, 91, 125, 58, 49, 108, 34, 13, 50, 0, 104, 101, 121, 101, 110, 110,
+			101, 3, 91, 136, 6, 116, 50, 0, 104, 101, 121, 101, 110, 110, 101, 114, 3, 91, 136, 6, 116, 50, 109, 0, 7, 6, 100, 0, 4, 1,
+			17, 65, 2, 116, 32, 12, 12, 3, 0, 4, 1, 17, 65, 2, 116, 101, 12, 12, 3, 0, 4, 1, 17, 65, 2, 116, 101, 32, 12, 12,
+			3, 0, 4, 1, 17, 65, 2, 116, 101, 114, 32, 12, 12, 3, 0, 4, 1, 97, 118, 104, 3, 0, 4, 1, 101, 114, 107, 2, 115, 3,
+			0, 4, 1, 105, 2, 116, 3, 0, 4, 1, 105, 98, 2, 115, 107, 3, 0, 4, 1, 105, 116, 2, 115, 101, 108, 3, 0, 4, 1, 108,
+			3, 0, 4, 1, 108, 101, 109, 2, 105, 110, 103, 3, 0, 4, 1, 108, 117, 3, 0, 4, 1, 108, 117, 103, 3, 0, 4, 1, 110, 97,
+			2, 101, 3, 0, 4, 1, 110, 105, 2, 17, 67, 3, 0, 4, 1, 111, 108, 2, 115, 3, 0, 4, 1, 114, 111, 2, 101, 3, 0, 4,
+			1, 114, 111, 107, 105, 116, 115, 3, 0, 4, 1, 114, 165, 195, 104, 3, 0, 4, 1, 114, 166, 195, 2, 32, 3, 0, 4, 1, 114, 166,
+			195, 102, 3, 0, 4, 1, 114, 166, 195, 118, 2, 115, 3, 0, 4, 1, 114, 166, 195, 118, 115, 3, 0, 4, 1, 114, 166, 195, 118, 115,
+			2, 101, 116, 3, 0, 4, 1, 117, 98, 2, 103, 101, 116, 3, 0, 4, 1, 184, 195, 2, 115, 101, 108, 12, 12, 3, 0, 4, 1, 184,
+			195, 2, 116, 3, 0, 4, 1, 184, 195, 102, 2, 115, 12, 12, 3, 0, 4, 2, 115, 116, 12, 12, 3, 0, 4, 8, 97, 109, 2, 115,
+			101, 110, 3, 0, 4, 8, 114, 117, 116, 2, 101, 3, 0, 101, 8, 110, 97, 102, 2, 109, 101, 3, 0, 4, 1, 105, 100, 110, 97, 107,
+			2, 97, 116, 3, 6, 72, 0, 1, 111, 109, 2, 97, 108, 0, 1, 108, 101, 109, 105, 2, 97, 3, 8, 72, 0, 4, 111, 114, 111, 116,
+			104, 121, 3, 21, 0, 114, 105, 115, 99, 111, 0, 4, 97, 117, 109, 105, 101, 114, 3, 21, 102, 114, 0, 101, 103, 97, 115, 8, 0, 105,
+			1, 114, 101, 106, 102, 2, 110, 103, 3, 36, 0, 4, 1, 111, 111, 119, 3, 47, 0, 116, 1, 101, 102, 2, 21, 0, 116, 1, 101, 114,
+			112, 115, 0, 116, 1, 105, 107, 115, 0, 116, 1, 117, 2, 12, 0, 101, 1, 108, 97, 98, 3, 55, 14, 0, 4, 3, 72, 0, 1, 17,
+			67, 2, 101, 116, 17, 65, 0, 1, 21, 2, 101, 108, 116, 0, 1, 21, 2, 101, 111, 0, 1, 21, 2, 117, 101, 0, 1, 21, 2, 121,
+			114, 0, 1, 97, 2, 97, 109, 0, 1, 97, 2, 111, 112, 116, 101, 114, 0, 1, 97, 109, 2, 114, 97, 115, 0, 1, 101, 2, 103, 97,
+			114, 0, 1, 101, 98, 2, 102, 111, 114, 100, 0, 1, 101, 109, 2, 97, 108, 106, 0, 1, 101, 109, 111, 114, 100, 2, 97, 114, 0, 1,
+			101, 110, 101, 118, 2, 105, 103, 0, 1, 101, 112, 2, 114, 111, 0, 1, 101, 114, 2, 97, 0, 1, 105, 2, 111, 108, 0, 1, 105, 99,
+			97, 2, 111, 115, 101, 0, 1, 105, 102, 2, 117, 115, 0, 1, 105, 115, 2, 101, 110, 116, 0, 1, 105, 118, 101, 2, 101, 110, 0, 1,
+			108, 2, 97, 107, 105, 110, 0, 1, 108, 2, 105, 103, 0, 1, 108, 2, 117, 103, 0, 1, 108, 97, 2, 114, 105, 103, 0, 1, 108, 97,
+			105, 100, 97, 114, 2, 195, 166, 107, 0, 1, 108, 97, 109, 114, 111, 102, 2, 101, 0, 1, 108, 97, 114, 101, 109, 115, 101, 2, 97, 0,
+			1, 108, 97, 115, 2, 111, 0, 1, 108, 101, 104, 2, 105, 0, 1, 108, 101, 116, 114, 117, 116, 2, 117, 101, 0, 1, 108, 101, 118, 2,
+			114, 101, 106, 0, 1, 108, 105, 2, 114, 105, 110, 103, 0, 1, 108, 105, 98, 2, 195, 166, 107, 0, 1, 108, 105, 100, 2, 111, 0, 1,
+			108, 105, 107, 2, 114, 101, 0, 1, 108, 108, 117, 98, 2, 111, 0, 1, 108, 111, 2, 105, 110, 103, 0, 1, 108, 111, 98, 0, 1, 108,
+			111, 115, 2, 195, 166, 107, 0, 1, 110, 17, 65, 2, 114, 17, 65, 0, 1, 110, 17, 65, 2, 114, 101, 0, 1, 110, 105, 2, 117, 0,
+			1, 110, 105, 2, 117, 17, 67, 0, 1, 110, 111, 104, 2, 117, 114, 97, 0, 1, 111, 98, 2, 101, 103, 97, 0, 1, 111, 108, 101, 109,
+			2, 105, 0, 1, 111, 109, 2, 101, 108, 0, 1, 111, 109, 2, 101, 109, 0, 1, 111, 109, 2, 101, 114, 110, 0, 1, 111, 111, 118, 2,
+			111, 111, 0, 1, 114, 105, 2, 32, 0, 1, 114, 111, 2, 101, 108, 0, 1, 114, 111, 2, 101, 110, 0, 1, 114, 111, 2, 101, 114, 0,
+			1, 114, 111, 106, 104, 0, 1, 114, 111, 107, 97, 0, 1, 114, 111, 107, 101, 114, 0, 1, 114, 166, 195, 102, 2, 101, 17, 67, 0, 1,
+			114, 166, 195, 108, 2, 32, 0, 1, 114, 166, 195, 118, 2, 105, 0, 1, 117, 98, 2, 97, 112, 101, 115, 116, 0, 1, 117, 106, 2, 97,
+			115, 0, 1, 117, 108, 107, 2, 101, 114, 101, 0, 1, 117, 109, 114, 101, 98, 2, 97, 0, 1, 121, 111, 108, 102, 0, 1, 165, 195, 2,
+			97, 110, 0, 1, 166, 195, 2, 114, 117, 0, 1, 166, 195, 112, 2, 97, 0, 1, 184, 195, 2, 101, 109, 32, 0, 1, 184, 195, 2, 101,
+			109, 101, 114, 32, 0, 1, 184, 195, 2, 101, 109, 101, 116, 32, 0, 2, 97, 103, 12, 0, 2, 97, 109, 112, 0, 2, 97, 110, 115, 0,
+			2, 101, 108, 101, 0, 2, 101, 109, 101, 110, 115, 0, 2, 105, 0, 2, 105, 111, 120, 0, 2, 111, 98, 108, 0, 2, 111, 107, 0, 2,
+			111, 108, 108, 0, 2, 111, 109, 0, 2, 111, 110, 110, 97, 0, 2, 114, 97, 98, 0, 2, 114, 97, 109, 97, 0, 2, 114, 101, 118, 0,
+			2, 114, 111, 110, 110, 105, 110, 103, 0, 2, 114, 121, 115, 0, 2, 117, 102, 116, 101, 0, 2, 117, 107, 107, 101, 0, 2, 117, 115, 0,
+			2, 195, 165, 100, 12, 0, 2, 195, 165, 115, 101, 0, 2, 195, 184, 109, 12, 0, 2, 195, 184, 114, 0, 8, 97, 2, 114, 0, 8, 105,
+			2, 101, 0, 8, 105, 2, 195, 169, 0, 8, 108, 105, 104, 2, 97, 0, 39, 0, 100, 1, 105, 109, 2, 97, 0, 100, 104, 1, 117, 98,
+			0, 100, 104, 1, 117, 98, 2, 105, 115, 116, 0, 4, 1, 110, 101, 112, 2, 117, 108, 3, 72, 6, 0, 1, 111, 109, 2, 117, 108, 0,
+			101, 110, 100, 114, 111, 110, 3, 72, 6, 36, 50, 72, 34, 108, 50, 0, 105, 1, 117, 111, 104, 2, 110, 105, 3, 72, 6, 111, 0, 101,
+			1, 105, 107, 114, 111, 3, 72, 6, 114, 0, 101, 1, 97, 116, 114, 111, 109, 2, 108, 3, 72, 6, 115, 0, 195, 166, 1, 117, 106, 2,
+			97, 3, 72, 6, 115, 12, 0, 111, 115, 1, 101, 110, 114, 117, 111, 116, 3, 72, 6, 124, 0, 117, 1, 97, 105, 118, 2, 107, 116, 3,
+			72, 6, 125, 0, 111, 114, 1, 97, 118, 108, 97, 115, 3, 72, 6, 125, 12, 0, 117, 8, 111, 114, 112, 2, 107, 116, 3, 72, 6, 126,
+			0, 101, 110, 1, 114, 101, 118, 3, 72, 14, 50, 0, 114, 101, 100, 8, 108, 105, 109, 3, 72, 34, 115, 72, 0, 114, 101, 121, 102, 117,
+			115, 3, 72, 34, 116, 83, 6, 130, 89, 0, 104, 111, 119, 3, 72, 35, 58, 0, 101, 116, 101, 110, 116, 101, 3, 72, 36, 47, 6, 121,
+			12, 68, 47, 0, 101, 116, 114, 111, 105, 116, 3, 72, 36, 47, 34, 6, 108, 57, 47, 0, 4, 105, 99, 107, 105, 101, 3, 72, 36, 49,
+			37, 0, 105, 99, 107, 121, 0, 105, 103, 1, 114, 166, 195, 102, 3, 72, 37, 0, 101, 97, 110, 8, 3, 72, 37, 12, 50, 0, 111, 114,
+			97, 100, 111, 1, 108, 101, 3, 72, 39, 34, 6, 121, 72, 39, 0, 111, 117, 103, 104, 110, 117, 116, 3, 72, 39, 58, 50, 108, 72, 0,
+			114, 105, 118, 101, 8, 2, 45, 3, 72, 51, 121, 113, 84, 0, 114, 121, 115, 100, 97, 108, 101, 8, 3, 72, 51, 136, 89, 72, 115, 57,
+			55, 0, 105, 1, 97, 114, 2, 111, 3, 72, 57, 0, 4, 117, 99, 101, 114, 1, 111, 114, 112, 2, 32, 3, 72, 57, 6, 40, 89, 108,
+			0, 117, 99, 101, 114, 1, 111, 114, 112, 2, 97, 115, 115, 105, 115, 116, 101, 110, 116, 0, 101, 119, 101, 121, 3, 72, 57, 40, 37, 0,
+			119, 105, 103, 104, 116, 3, 72, 58, 136, 47, 0, 100, 115, 1, 111, 3, 72, 89, 0, 115, 116, 111, 110, 101, 1, 97, 108, 103, 3, 72,
+			89, 47, 127, 58, 50, 0, 97, 119, 115, 111, 110, 3, 72, 108, 12, 89, 109, 50, 0, 111, 99, 8, 2, 32, 3, 72, 108, 49, 0, 111,
+			117, 98, 108, 101, 3, 72, 108, 71, 13, 55, 0, 111, 117, 98, 108, 101, 116, 111, 110, 3, 72, 108, 71, 13, 55, 47, 108, 50, 0, 111,
+			100, 103, 101, 3, 72, 108, 75, 0, 117, 116, 99, 104, 3, 72, 108, 76, 0, 101, 1, 121, 98, 2, 108, 3, 72, 114, 0, 101, 98, 98,
+			105, 101, 3, 72, 116, 71, 37, 0, 97, 114, 121, 108, 3, 72, 117, 34, 112, 59, 0, 97, 105, 113, 117, 105, 114, 105, 3, 72, 117, 49,
+			13, 34, 37, 0, 97, 114, 108, 101, 110, 101, 3, 72, 121, 55, 6, 37, 50, 0, 97, 118, 8, 2, 32, 3, 72, 121, 58, 0, 111, 119,
+			110, 3, 72, 121, 58, 50, 0, 111, 119, 110, 108, 111, 97, 100, 3, 72, 121, 58, 50, 55, 39, 58, 72, 0, 111, 117, 98, 116, 102, 105,
+			114, 101, 3, 72, 121, 58, 72, 83, 136, 108, 0, 97, 118, 115, 8, 2, 32, 3, 72, 121, 58, 89, 0, 117, 8, 111, 114, 112, 2, 107,
+			116, 105, 118, 3, 72, 123, 0, 111, 114, 115, 101, 116, 8, 3, 72, 125, 12, 89, 115, 47, 0, 117, 110, 100, 1, 101, 114, 2, 97, 110,
+			116, 3, 72, 126, 50, 72, 0, 111, 114, 101, 101, 110, 8, 3, 72, 127, 34, 6, 37, 50, 0, 117, 98, 111, 105, 115, 3, 72, 129, 71,
+			58, 6, 121, 0, 117, 107, 101, 8, 3, 75, 40, 12, 49, 0, 101, 117, 99, 101, 3, 75, 40, 12, 89, 0, 4, 1, 17, 65, 2, 17,
+			65, 3, 86, 0, 1, 17, 65, 2, 17, 67, 0, 1, 17, 65, 2, 32, 0, 1, 17, 65, 2, 101, 115, 0, 1, 17, 65, 2, 105, 103,
+			0, 1, 17, 65, 18, 74, 2, 116, 97, 0, 1, 97, 98, 2, 101, 0, 1, 97, 114, 103, 2, 12, 0, 1, 100, 101, 110, 2, 115, 0,
+			1, 101, 110, 2, 115, 116, 0, 1, 101, 114, 102, 2, 115, 0, 1, 101, 116, 115, 0, 1, 105, 2, 116, 105, 12, 0, 1, 105, 98, 2,
+			101, 0, 1, 105, 112, 115, 2, 115, 116, 101, 103, 0, 1, 105, 114, 116, 115, 2, 115, 0, 1, 105, 116, 2, 101, 0, 1, 105, 116, 2,
+			115, 12, 0, 1, 105, 118, 2, 101, 114, 0, 1, 111, 102, 2, 17, 67, 12, 12, 0, 1, 111, 109, 2, 115, 116, 12, 0, 1, 117, 2,
+			105, 0, 1, 117, 2, 115, 116, 121, 114, 12, 0, 1, 117, 98, 2, 115, 12, 12, 0, 1, 121, 2, 115, 116, 97, 116, 12, 0, 1, 121,
+			98, 2, 101, 108, 105, 103, 0, 1, 121, 108, 0, 1, 166, 195, 114, 2, 115, 101, 108, 0, 1, 184, 195, 2, 115, 12, 12, 0, 1, 184,
+			195, 100, 2, 12, 0, 8, 117, 2, 12, 12, 0, 100, 1, 17, 65, 0, 100, 1, 17, 65, 2, 17, 65, 12, 0, 4, 100, 101, 1, 166,
+			195, 118, 2, 21, 12, 3, 86, 14, 0, 100, 101, 1, 184, 195, 110, 2, 12, 0, 101, 1, 97, 2, 108, 0, 101, 1, 97, 98, 2, 21,
+			0, 101, 1, 97, 103, 2, 21, 0, 101, 1, 97, 104, 2, 21, 0, 101, 1, 101, 102, 2, 21, 0, 101, 1, 101, 103, 2, 21, 0, 101,
+			1, 101, 114, 2, 21, 0, 101, 1, 105, 107, 115, 2, 21, 0, 101, 1, 105, 114, 2, 21, 0, 101, 1, 105, 116, 2, 21, 0, 101, 1,
+			121, 98, 100, 110, 105, 0, 101, 1, 121, 114, 103, 2, 114, 101, 116, 0, 101, 1, 166, 195, 2, 108, 12, 0, 101, 1, 17, 65, 2, 32,
+			3, 86, 14, 11, 0, 105, 1, 17, 65, 2, 115, 107, 3, 86, 37, 0, 4, 100, 1, 101, 109, 2, 101, 108, 3, 86, 72, 0, 100, 1,
+			117, 2, 97, 110, 110, 0, 100, 1, 117, 2, 195, 184, 12, 0, 100, 1, 117, 103, 2, 12, 12, 0, 100, 1, 117, 107, 115, 2, 117, 12,
+			0, 100, 1, 117, 108, 2, 111, 118, 0, 100, 1, 121, 108, 2, 195, 166, 109, 112, 0, 100, 1, 184, 195, 108, 98, 2, 121, 114, 0, 115,
+			1, 17, 65, 2, 195, 166, 116, 3, 86, 89, 0, 4, 100, 101, 114, 1, 184, 195, 110, 2, 12, 3, 86, 108, 0, 101, 114, 1, 105, 114,
+			0, 101, 114, 1, 105, 116, 0, 4, 101, 114, 1, 97, 2, 21, 3, 86, 109, 0, 101, 114, 1, 97, 103, 0, 101, 114, 1, 101, 102, 0,
+			101, 114, 1, 105, 107, 115, 2, 21, 0, 101, 114, 1, 121, 2, 32, 3, 86, 109, 11, 0, 101, 114, 1, 105, 107, 115, 2, 105, 107, 3,
+			86, 109, 51, 0, 101, 1, 121, 115, 2, 110, 103, 3, 86, 116, 0, 4, 115, 1, 17, 65, 2, 101, 108, 3, 89, 0, 115, 1, 17, 65,
+			2, 108, 101, 12, 0, 115, 1, 97, 108, 112, 0, 115, 1, 97, 112, 115, 2, 101, 114, 0, 115, 1, 97, 114, 107, 0, 115, 1, 97, 116,
+			115, 2, 32, 0, 115, 1, 101, 114, 102, 108, 0, 115, 1, 105, 104, 0, 115, 1, 105, 104, 2, 101, 0, 115, 1, 105, 112, 0, 115, 1,
+			105, 114, 0, 115, 1, 117, 109, 115, 0, 115, 1, 117, 112, 0, 115, 1, 117, 114, 116, 115, 0, 115, 1, 117, 116, 2, 101, 0, 115, 1,
+			117, 116, 115, 0, 115, 1, 121, 0, 115, 1, 105, 116, 2, 110, 111, 107, 3, 89, 6, 0, 115, 101, 108, 1, 117, 108, 112, 3, 89, 14,
+			59, 0, 101, 1, 114, 166, 195, 103, 3, 108, 0, 101, 110, 1, 114, 166, 195, 102, 100, 97, 3, 109, 50, 0, 7, 6, 101, 0, 4, 1,
+			98, 98, 111, 100, 2, 108, 3, 0, 4, 1, 99, 97, 102, 114, 101, 116, 110, 105, 3, 0, 4, 1, 99, 97, 112, 2, 109, 97, 107, 101,
+			114, 3, 0, 4, 1, 99, 97, 112, 114, 111, 116, 111, 109, 3, 0, 4, 1, 99, 101, 101, 108, 102, 3, 0, 4, 1, 99, 105, 112, 115,
+			111, 104, 2, 32, 3, 0, 4, 1, 99, 105, 116, 102, 111, 115, 3, 0, 4, 1, 99, 105, 117, 106, 3, 0, 4, 1, 99, 110, 97, 108,
+			101, 101, 114, 102, 3, 0, 4, 1, 99, 110, 101, 112, 2, 12, 3, 0, 4, 1, 99, 110, 101, 118, 111, 114, 112, 3, 0, 4, 1, 99,
+			117, 97, 115, 3, 0, 4, 1, 99, 121, 111, 106, 3, 0, 4, 1, 105, 112, 117, 111, 114, 103, 3, 0, 4, 1, 105, 114, 98, 2, 102,
+			3, 0, 4, 1, 105, 116, 114, 97, 2, 12, 3, 0, 4, 1, 108, 108, 2, 100, 101, 12, 3, 0, 4, 1, 115, 17, 65, 17, 67, 2,
+			110, 101, 114, 3, 0, 4, 8, 99, 105, 102, 102, 111, 2, 32, 3, 0, 4, 8, 105, 110, 3, 0, 4, 8, 105, 110, 97, 106, 3, 0,
+			8, 105, 116, 114, 97, 3, 0, 1, 114, 2, 116, 114, 195, 166, 3, 2, 116, 0, 1, 110, 114, 2, 100, 12, 3, 4, 114, 0, 4, 1,
+			99, 114, 101, 109, 2, 100, 101, 115, 3, 6, 36, 0, 1, 108, 108, 97, 2, 103, 114, 111, 0, 1, 109, 105, 107, 114, 97, 2, 100, 101,
+			115, 0, 1, 112, 117, 111, 116, 0, 1, 114, 116, 115, 107, 101, 2, 109, 0, 8, 98, 100, 184, 195, 114, 2, 100, 101, 0, 8, 112, 114,
+			111, 116, 2, 100, 111, 0, 8, 115, 121, 102, 109, 101, 2, 109, 0, 4, 110, 101, 1, 108, 114, 97, 109, 3, 6, 36, 50, 14, 0, 110,
+			101, 1, 109, 114, 111, 102, 32, 116, 97, 0, 110, 101, 1, 114, 117, 2, 32, 116, 97, 110, 107, 101, 114, 0, 110, 101, 8, 108, 101, 104,
+			0, 100, 101, 110, 1, 110, 114, 111, 102, 3, 6, 36, 86, 14, 50, 0, 115, 101, 1, 10, 2, 28, 33, 3, 6, 36, 89, 14, 0, 115,
+			101, 1, 10, 2, 114, 28, 33, 3, 6, 36, 89, 108, 0, 101, 1, 108, 104, 116, 97, 107, 2, 110, 3, 6, 37, 12, 0, 110, 101, 1,
+			108, 114, 97, 104, 99, 3, 6, 37, 12, 50, 0, 101, 102, 101, 1, 107, 3, 6, 37, 12, 83, 0, 4, 1, 100, 111, 98, 2, 103, 97,
+			3, 6, 114, 0, 1, 100, 117, 116, 115, 2, 114, 101, 0, 1, 107, 105, 110, 117, 109, 109, 111, 107, 2, 32, 0, 1, 107, 105, 110, 117,
+			109, 109, 111, 107, 2, 101, 114, 32, 0, 1, 107, 105, 110, 117, 109, 109, 111, 107, 2, 101, 116, 32, 0, 1, 107, 115, 111, 109, 0, 1,
+			107, 115, 165, 195, 109, 2, 32, 0, 1, 108, 97, 100, 103, 97, 109, 2, 110, 0, 1, 109, 97, 110, 116, 101, 105, 118, 2, 115, 101, 114,
+			0, 1, 109, 114, 117, 111, 103, 0, 1, 110, 97, 100, 117, 115, 2, 115, 101, 114, 0, 1, 110, 97, 118, 105, 100, 2, 115, 101, 114, 0,
+			1, 110, 101, 118, 2, 100, 105, 103, 0, 1, 110, 105, 107, 2, 115, 12, 12, 0, 1, 110, 110, 97, 118, 97, 104, 2, 115, 101, 114, 0,
+			1, 110, 114, 117, 116, 0, 1, 112, 117, 107, 2, 12, 0, 1, 114, 107, 115, 105, 100, 2, 116, 12, 0, 1, 114, 117, 114, 111, 102, 2,
+			110, 101, 0, 1, 114, 121, 116, 115, 2, 110, 0, 1, 115, 115, 97, 104, 99, 0, 1, 116, 101, 105, 114, 97, 118, 0, 1, 116, 105, 109,
+			111, 107, 0, 1, 116, 111, 114, 112, 2, 115, 101, 0, 8, 100, 105, 0, 8, 100, 105, 118, 105, 100, 2, 110, 116, 101, 0, 8, 108, 101,
+			2, 118, 0, 8, 108, 101, 99, 2, 98, 101, 114, 0, 8, 108, 108, 111, 107, 2, 103, 97, 0, 8, 109, 97, 114, 107, 97, 115, 2, 110,
+			116, 101, 0, 8, 109, 97, 116, 115, 101, 116, 2, 110, 116, 101, 0, 8, 109, 105, 2, 110, 115, 12, 0, 8, 109, 105, 103, 101, 114, 2,
+			110, 116, 101, 0, 8, 110, 103, 97, 109, 2, 116, 0, 8, 114, 111, 107, 2, 97, 0, 8, 116, 97, 107, 2, 100, 101, 114, 0, 8, 116,
+			97, 107, 2, 116, 101, 114, 0, 8, 116, 108, 97, 109, 2, 115, 0, 8, 116, 110, 101, 114, 97, 112, 2, 115, 0, 103, 1, 116, 115, 101,
+			98, 2, 32, 0, 103, 1, 116, 115, 101, 98, 2, 101, 116, 32, 0, 115, 1, 99, 99, 117, 0, 2, 110, 100, 110, 117, 3, 6, 114, 6,
+			0, 1, 17, 67, 2, 101, 110, 3, 6, 114, 12, 0, 101, 1, 116, 105, 109, 111, 107, 2, 110, 3, 6, 114, 14, 0, 114, 1, 98, 105,
+			2, 105, 97, 12, 3, 6, 114, 34, 0, 110, 101, 1, 108, 114, 111, 102, 3, 6, 114, 50, 14, 0, 4, 103, 1, 116, 97, 114, 116, 115,
+			2, 32, 3, 6, 114, 57, 0, 103, 8, 108, 108, 111, 107, 2, 101, 0, 4, 109, 1, 10, 2, 32, 28, 33, 12, 3, 6, 114, 65, 0,
 			109, 1, 10, 2, 101, 114, 28, 33, 12, 0, 109, 1, 10, 2, 101, 116, 28, 33, 12, 0, 109, 1, 10, 2, 115, 28, 33, 12, 0, 100,
-			1, 108, 111, 116, 2, 111, 3, 6, 36, 72, 0, 100, 105, 101, 1, 109, 3, 6, 36, 72, 57, 108, 0, 100, 105, 101, 114, 1, 109, 3,
-			6, 36, 72, 57, 114, 0, 100, 101, 110, 1, 110, 114, 111, 102, 3, 6, 36, 86, 108, 50, 0, 115, 116, 101, 114, 1, 107, 114, 111, 3,
-			6, 36, 89, 47, 114, 0, 115, 101, 1, 10, 2, 28, 33, 3, 6, 36, 89, 108, 0, 115, 101, 1, 10, 2, 114, 28, 33, 3, 6, 36,
-			89, 114, 0, 115, 115, 105, 111, 110, 101, 108, 1, 102, 111, 114, 112, 3, 6, 36, 91, 39, 50, 36, 55, 0, 101, 1, 108, 104, 116, 97,
-			107, 2, 110, 3, 6, 37, 12, 0, 101, 102, 101, 1, 107, 3, 6, 37, 12, 83, 0, 97, 117, 3, 6, 39, 0, 4, 1, 98, 101, 108,
-			2, 110, 100, 105, 103, 3, 6, 109, 0, 1, 98, 101, 114, 2, 107, 107, 97, 0, 1, 98, 111, 114, 2, 114, 116, 111, 0, 1, 99, 98,
-			97, 2, 115, 0, 1, 99, 101, 114, 2, 115, 0, 1, 99, 111, 114, 112, 2, 115, 0, 1, 99, 120, 101, 2, 115, 0, 1, 100, 114, 97,
-			2, 110, 110, 101, 114, 0, 1, 107, 115, 117, 109, 2, 116, 12, 0, 1, 108, 97, 112, 2, 114, 109, 111, 0, 1, 108, 97, 118, 2, 110,
-			99, 105, 97, 0, 1, 110, 97, 118, 2, 115, 115, 97, 0, 1, 112, 97, 100, 117, 98, 2, 115, 116, 0, 1, 115, 115, 97, 107, 2, 116,
+			1, 108, 111, 116, 2, 111, 3, 6, 114, 72, 0, 100, 105, 101, 1, 109, 3, 6, 114, 72, 57, 14, 0, 100, 105, 101, 114, 1, 109, 3,
+			6, 114, 72, 57, 109, 0, 101, 114, 2, 12, 3, 6, 114, 109, 0, 111, 8, 100, 111, 114, 3, 6, 114, 124, 0, 4, 1, 98, 111, 114,
+			2, 114, 116, 111, 3, 6, 115, 0, 1, 108, 97, 112, 2, 114, 109, 111, 0, 8, 102, 118, 108, 97, 104, 2, 109, 115, 0, 8, 108, 105,
+			100, 2, 109, 109, 97, 0, 8, 114, 105, 2, 110, 101, 12, 12, 0, 8, 105, 110, 2, 99, 101, 3, 6, 115, 12, 0, 114, 1, 98, 111,
+			114, 2, 116, 97, 3, 6, 115, 34, 0, 116, 116, 101, 1, 100, 111, 3, 6, 115, 47, 0, 110, 100, 8, 107, 114, 101, 2, 101, 32, 12,
+			12, 3, 6, 115, 50, 0, 110, 100, 101, 1, 118, 97, 108, 2, 108, 3, 6, 115, 50, 14, 0, 105, 108, 108, 1, 118, 101, 114, 2, 101,
+			3, 6, 115, 55, 57, 0, 108, 112, 104, 105, 1, 100, 97, 108, 105, 104, 112, 2, 97, 3, 6, 115, 55, 83, 57, 0, 115, 101, 1, 114,
+			10, 2, 28, 33, 3, 6, 115, 89, 14, 0, 115, 101, 1, 114, 10, 2, 114, 28, 33, 3, 6, 115, 89, 108, 0, 4, 1, 98, 97, 98,
+			2, 116, 116, 101, 3, 6, 116, 0, 1, 98, 101, 108, 2, 110, 100, 105, 103, 0, 1, 98, 101, 114, 2, 107, 107, 97, 0, 1, 99, 98,
+			97, 2, 115, 0, 1, 99, 101, 100, 2, 109, 98, 101, 114, 0, 1, 99, 101, 114, 2, 115, 0, 1, 99, 111, 114, 112, 2, 115, 0, 1,
+			99, 120, 101, 2, 115, 0, 1, 100, 114, 97, 2, 110, 110, 101, 114, 0, 1, 107, 115, 117, 109, 2, 116, 12, 0, 1, 108, 97, 107, 2,
+			99, 104, 101, 0, 1, 108, 97, 118, 2, 110, 99, 105, 97, 0, 1, 109, 103, 114, 111, 98, 2, 115, 116, 101, 114, 0, 1, 110, 97, 118,
+			2, 115, 115, 97, 0, 1, 112, 97, 100, 117, 98, 2, 115, 116, 0, 1, 114, 97, 108, 2, 100, 111, 0, 1, 115, 115, 97, 107, 2, 116,
 			116, 101, 0, 1, 115, 117, 109, 2, 101, 116, 0, 1, 115, 117, 109, 2, 117, 109, 0, 1, 116, 107, 110, 97, 115, 2, 108, 109, 115, 105,
-			108, 100, 0, 1, 118, 100, 114, 111, 110, 2, 115, 116, 0, 1, 118, 100, 121, 115, 2, 115, 116, 0, 1, 118, 108, 121, 115, 2, 115, 116,
-			101, 114, 0, 1, 122, 97, 103, 2, 108, 108, 101, 0, 8, 99, 99, 97, 2, 112, 116, 0, 8, 99, 101, 114, 2, 112, 116, 0, 8, 99,
-			110, 105, 2, 115, 116, 0, 8, 99, 110, 111, 107, 2, 112, 116, 0, 8, 99, 110, 111, 107, 2, 114, 110, 0, 8, 102, 101, 100, 2, 107,
-			116, 0, 8, 102, 102, 97, 2, 107, 116, 0, 8, 102, 102, 101, 2, 107, 116, 32, 0, 8, 102, 110, 111, 107, 2, 107, 116, 0, 8, 102,
-			110, 111, 107, 2, 116, 116, 105, 0, 8, 102, 114, 101, 112, 2, 107, 116, 0, 8, 102, 118, 108, 97, 104, 2, 109, 115, 0, 8, 102, 166,
-			195, 114, 112, 2, 107, 116, 0, 8, 106, 98, 111, 2, 107, 116, 0, 8, 106, 98, 117, 115, 2, 107, 116, 0, 8, 106, 111, 114, 112, 2,
-			107, 116, 0, 8, 107, 97, 114, 2, 116, 12, 0, 8, 108, 97, 105, 100, 2, 107, 116, 0, 8, 108, 102, 101, 114, 2, 107, 115, 0, 8,
-			108, 105, 100, 2, 109, 109, 97, 0, 8, 108, 108, 97, 98, 2, 116, 21, 0, 8, 108, 108, 97, 98, 32, 110, 101, 2, 116, 0, 8, 108,
-			108, 97, 98, 32, 114, 111, 118, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 101, 100, 110, 101, 104, 2, 116, 0, 8, 108, 108, 97, 98,
-			32, 115, 101, 114, 101, 100, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 101, 114, 101, 106, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115,
-			101, 114, 111, 118, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 110, 97, 104, 2, 116, 0, 8, 108, 108, 101, 116, 110, 105, 2, 107, 116,
-			0, 8, 108, 108, 111, 107, 2, 107, 116, 32, 0, 8, 108, 108, 111, 107, 2, 107, 116, 101, 0, 8, 108, 111, 105, 99, 111, 115, 2, 107,
-			116, 0, 8, 108, 111, 105, 100, 105, 2, 107, 116, 0, 8, 108, 112, 109, 111, 107, 2, 107, 115, 0, 8, 109, 101, 115, 2, 115, 116, 101,
-			114, 0, 8, 109, 103, 114, 111, 98, 2, 115, 116, 0, 8, 112, 115, 97, 2, 107, 116, 0, 8, 112, 115, 101, 100, 2, 107, 116, 0, 8,
-			112, 115, 101, 114, 2, 107, 116, 0, 8, 112, 115, 111, 114, 112, 2, 107, 116, 0, 8, 112, 115, 117, 115, 2, 107, 116, 0, 8, 114, 105,
-			2, 110, 101, 12, 0, 8, 115, 101, 114, 112, 2, 110, 110, 105, 110, 103, 0, 8, 115, 107, 101, 2, 109, 112, 101, 108, 0, 8, 115, 110,
-			105, 2, 107, 116, 0, 8, 116, 105, 107, 114, 97, 2, 107, 116, 0, 8, 116, 110, 97, 2, 110, 110, 101, 0, 8, 116, 111, 114, 103, 2,
-			115, 0, 8, 105, 110, 2, 99, 101, 3, 6, 109, 12, 0, 4, 114, 1, 98, 111, 114, 2, 116, 97, 3, 6, 109, 34, 0, 114, 1, 112,
-			117, 115, 2, 108, 97, 116, 105, 118, 0, 122, 1, 112, 97, 114, 116, 3, 6, 109, 47, 89, 0, 110, 100, 1, 107, 114, 101, 2, 101, 32,
-			3, 6, 109, 50, 0, 110, 101, 1, 114, 105, 115, 2, 12, 3, 6, 109, 50, 13, 0, 110, 100, 101, 1, 118, 97, 108, 2, 108, 3, 6,
-			109, 50, 108, 0, 105, 108, 108, 1, 118, 101, 114, 2, 101, 3, 6, 109, 55, 57, 0, 108, 112, 104, 105, 1, 100, 97, 108, 105, 104, 112,
-			2, 97, 3, 6, 109, 55, 83, 57, 0, 115, 101, 1, 114, 10, 2, 28, 33, 3, 6, 109, 89, 108, 0, 115, 101, 1, 114, 10, 2, 114,
-			28, 33, 3, 6, 109, 89, 114, 0, 115, 104, 1, 100, 97, 108, 103, 110, 97, 98, 3, 6, 109, 91, 0, 1, 106, 102, 118, 108, 97, 104,
-			2, 114, 100, 115, 3, 6, 110, 0, 4, 1, 114, 97, 109, 2, 110, 103, 3, 6, 111, 0, 1, 114, 105, 107, 105, 116, 115, 2, 110, 100,
-			100, 114, 101, 110, 103, 0, 1, 114, 112, 121, 99, 2, 115, 0, 1, 114, 114, 111, 102, 2, 116, 110, 105, 110, 103, 12, 0, 8, 114, 103,
-			101, 114, 2, 115, 0, 8, 114, 103, 110, 111, 107, 2, 115, 0, 8, 114, 114, 111, 107, 2, 107, 116, 0, 115, 115, 101, 1, 114, 10, 2,
-			28, 33, 3, 6, 111, 89, 108, 0, 115, 115, 101, 1, 114, 10, 2, 114, 28, 33, 3, 6, 111, 89, 114, 0, 1, 118, 111, 114, 112, 2,
-			110, 99, 101, 3, 6, 112, 12, 0, 117, 116, 8, 112, 97, 114, 101, 116, 3, 6, 118, 58, 72, 0, 115, 115, 101, 1, 104, 99, 10, 2,
-			28, 33, 3, 7, 109, 89, 0, 115, 115, 101, 1, 10, 2, 28, 33, 3, 7, 109, 89, 108, 0, 115, 115, 101, 1, 10, 2, 114, 28, 33,
-			3, 7, 109, 89, 114, 0, 8, 108, 108, 105, 116, 115, 2, 98, 101, 110, 3, 8, 6, 36, 0, 4, 1, 18, 73, 2, 32, 3, 13, 0,
-			1, 98, 98, 111, 100, 2, 108, 0, 1, 99, 2, 32, 0, 1, 99, 97, 112, 114, 111, 116, 111, 109, 2, 110, 0, 1, 100, 2, 115, 32,
-			0, 1, 100, 101, 2, 45, 0, 1, 100, 101, 2, 114, 0, 1, 100, 111, 103, 0, 1, 100, 111, 107, 0, 1, 103, 121, 115, 2, 12, 0,
-			1, 108, 97, 118, 2, 114, 105, 12, 12, 0, 1, 108, 109, 97, 0, 1, 108, 111, 107, 2, 17, 67, 0, 1, 108, 114, 101, 112, 0, 1,
-			110, 97, 2, 114, 0, 1, 114, 2, 115, 32, 0, 1, 114, 117, 2, 110, 101, 0, 1, 114, 121, 2, 12, 0, 1, 115, 2, 32, 0, 1,
-			115, 110, 111, 107, 2, 107, 118, 0, 1, 115, 117, 108, 2, 12, 12, 0, 1, 116, 2, 32, 0, 1, 116, 114, 111, 108, 0, 1, 116, 115,
-			101, 104, 2, 110, 12, 0, 1, 116, 115, 114, 97, 99, 2, 110, 0, 1, 116, 115, 114, 97, 107, 2, 110, 0, 1, 118, 114, 101, 115, 0,
-			2, 106, 117, 108, 12, 0, 8, 110, 101, 0, 101, 2, 106, 101, 114, 3, 13, 35, 0, 4, 97, 117, 2, 107, 116, 105, 3, 13, 35, 40,
-			0, 97, 117, 2, 116, 111, 0, 4, 110, 100, 101, 1, 10, 2, 32, 3, 13, 50, 13, 0, 110, 101, 1, 21, 2, 32, 0, 110, 101, 1,
-			103, 103, 21, 2, 32, 14, 128, 128, 132, 0, 110, 101, 115, 1, 21, 2, 32, 3, 13, 50, 13, 89, 0, 106, 2, 97, 103, 116, 3, 13,
-			57, 0, 100, 1, 114, 114, 2, 17, 65, 3, 13, 72, 0, 4, 103, 1, 108, 2, 97, 110, 12, 12, 3, 13, 81, 0, 103, 1, 108, 101,
-			100, 2, 17, 65, 0, 103, 1, 116, 115, 2, 195, 165, 0, 103, 2, 97, 102, 102, 101, 108, 0, 103, 2, 114, 117, 110, 100, 0, 100, 1,
-			114, 114, 3, 13, 86, 0, 100, 101, 116, 1, 118, 111, 2, 32, 3, 13, 86, 108, 72, 0, 110, 1, 100, 17, 65, 2, 21, 3, 14, 50,
-			0, 103, 1, 108, 101, 114, 2, 105, 111, 110, 3, 20, 13, 81, 0, 120, 99, 104, 97, 110, 103, 101, 3, 21, 0, 115, 8, 108, 114, 97,
-			3, 21, 102, 114, 0, 4, 1, 114, 2, 110, 100, 116, 3, 35, 0, 2, 103, 102, 105, 0, 2, 103, 115, 111, 116, 0, 8, 114, 116, 2,
-			116, 116, 101, 110, 0, 103, 101, 116, 8, 2, 32, 3, 35, 12, 57, 13, 86, 0, 110, 100, 101, 1, 114, 118, 184, 195, 114, 2, 32, 3,
-			35, 20, 50, 13, 0, 110, 100, 101, 114, 1, 114, 118, 184, 195, 114, 2, 32, 3, 35, 20, 50, 114, 0, 4, 1, 103, 2, 106, 115, 3,
-			35, 57, 0, 103, 1, 18, 71, 2, 101, 0, 103, 1, 18, 73, 0, 103, 1, 101, 108, 101, 2, 12, 0, 103, 1, 104, 2, 108, 101, 0,
-			103, 1, 107, 2, 108, 101, 0, 103, 1, 108, 2, 101, 12, 0, 103, 1, 108, 98, 0, 103, 1, 108, 115, 98, 97, 107, 115, 108, 101, 115,
-			0, 103, 1, 110, 115, 2, 108, 0, 103, 1, 112, 0, 103, 1, 114, 107, 115, 0, 103, 1, 114, 116, 2, 101, 32, 0, 103, 1, 114, 116,
-			2, 101, 100, 101, 32, 0, 103, 1, 114, 116, 2, 101, 110, 32, 0, 103, 1, 114, 116, 2, 101, 114, 32, 0, 103, 1, 114, 116, 2, 101,
-			115, 32, 0, 103, 1, 114, 116, 115, 0, 103, 1, 115, 2, 108, 0, 103, 1, 116, 2, 108, 0, 103, 2, 110, 0, 103, 2, 114, 195, 184,
-			100, 0, 103, 8, 98, 2, 32, 0, 105, 1, 104, 2, 100, 101, 108, 0, 105, 1, 115, 2, 115, 0, 105, 1, 115, 2, 115, 109, 111, 108,
-			0, 105, 1, 116, 115, 2, 110, 25, 0, 105, 8, 104, 2, 100, 105, 0, 105, 8, 104, 2, 108, 32, 0, 106, 1, 114, 2, 115, 0, 106,
-			1, 114, 100, 2, 12, 0, 106, 1, 118, 109, 101, 106, 104, 0, 106, 2, 12, 12, 0, 107, 1, 115, 2, 115, 116, 101, 110, 0, 121, 1,
-			109, 2, 101, 114, 0, 4, 103, 101, 110, 100, 101, 1, 108, 2, 32, 98, 195, 184, 114, 110, 3, 35, 57, 13, 50, 13, 0, 103, 101, 110,
-			100, 101, 1, 108, 2, 32, 108, 101, 116, 0, 103, 101, 109, 1, 108, 98, 2, 105, 100, 3, 35, 57, 13, 65, 0, 105, 110, 115, 116, 101,
-			105, 110, 3, 35, 57, 50, 89, 47, 35, 57, 50, 0, 105, 110, 100, 104, 111, 118, 101, 110, 3, 35, 57, 50, 107, 6, 39, 12, 83, 13,
-			50, 0, 4, 106, 114, 1, 118, 2, 101, 32, 3, 35, 57, 51, 0, 106, 114, 1, 118, 2, 101, 114, 32, 0, 103, 108, 1, 110, 3, 35,
-			57, 55, 0, 105, 108, 101, 101, 110, 3, 35, 57, 55, 6, 37, 12, 50, 0, 121, 101, 108, 105, 110, 101, 114, 3, 35, 57, 55, 35, 57,
-			50, 114, 0, 105, 103, 101, 114, 3, 35, 57, 81, 114, 0, 105, 102, 102, 101, 108, 3, 35, 57, 83, 108, 55, 0, 105, 115, 101, 110, 104,
-			111, 119, 101, 114, 3, 35, 57, 89, 13, 50, 107, 112, 40, 114, 0, 106, 101, 114, 2, 17, 67, 3, 35, 57, 114, 0, 4, 110, 1, 112,
-			2, 115, 105, 111, 110, 3, 35, 68, 0, 110, 1, 115, 115, 101, 114, 2, 116, 105, 109, 101, 110, 116, 0, 110, 1, 116, 101, 112, 109, 111,
-			2, 99, 101, 0, 110, 2, 116, 114, 195, 169, 0, 110, 8, 2, 116, 114, 101, 0, 110, 103, 97, 103, 2, 101, 3, 35, 68, 81, 110, 91,
-			0, 4, 3, 36, 0, 1, 17, 67, 2, 18, 67, 18, 76, 0, 1, 17, 67, 2, 100, 17, 65, 0, 1, 18, 68, 2, 18, 67, 18, 69,
-			0, 1, 18, 73, 2, 103, 116, 0, 1, 18, 74, 2, 100, 101, 0, 1, 18, 74, 2, 116, 0, 1, 98, 2, 114, 101, 116, 12, 0, 1,
-			98, 2, 114, 105, 103, 0, 1, 98, 114, 111, 102, 0, 1, 100, 2, 112, 0, 1, 104, 2, 100, 100, 0, 1, 104, 2, 110, 32, 12, 0,
-			1, 104, 99, 97, 109, 112, 97, 112, 0, 1, 107, 115, 100, 184, 195, 114, 103, 0, 1, 107, 115, 101, 98, 184, 195, 116, 115, 0, 1, 107,
-			115, 101, 100, 121, 114, 103, 0, 1, 107, 115, 101, 103, 117, 102, 0, 1, 107, 115, 101, 108, 165, 195, 109, 0, 1, 107, 115, 101, 115, 105,
-			112, 115, 0, 1, 107, 115, 101, 116, 0, 1, 107, 115, 108, 117, 104, 0, 1, 107, 115, 110, 97, 107, 0, 1, 107, 115, 114, 117, 109, 0,
-			1, 107, 115, 116, 114, 101, 115, 115, 101, 100, 0, 1, 107, 115, 184, 195, 114, 116, 115, 0, 1, 108, 2, 118, 101, 0, 1, 108, 101, 2,
-			118, 0, 1, 108, 102, 2, 100, 101, 12, 0, 1, 108, 111, 112, 2, 114, 101, 12, 0, 1, 108, 117, 115, 110, 111, 107, 2, 110, 116, 0,
-			1, 109, 2, 100, 105, 12, 0, 1, 110, 2, 100, 103, 97, 110, 103, 0, 1, 110, 2, 100, 115, 108, 97, 103, 0, 1, 110, 2, 100, 115,
-			116, 105, 103, 0, 1, 110, 2, 100, 115, 195, 166, 116, 0, 1, 110, 101, 109, 2, 100, 0, 1, 110, 107, 2, 98, 0, 1, 110, 115, 2,
-			25, 12, 0, 1, 114, 2, 104, 97, 98, 105, 108, 0, 1, 114, 2, 109, 18, 69, 0, 1, 114, 2, 115, 116, 18, 76, 0, 1, 114, 2,
-			116, 97, 98, 0, 1, 114, 2, 116, 97, 114, 100, 0, 1, 114, 2, 116, 101, 110, 116, 105, 111, 110, 0, 1, 114, 2, 116, 105, 0, 1,
-			114, 2, 116, 111, 114, 0, 1, 114, 2, 116, 111, 117, 0, 1, 114, 2, 116, 114, 97, 110, 0, 1, 114, 2, 116, 114, 111, 0, 1, 114,
-			2, 116, 114, 195, 166, 0, 1, 114, 2, 116, 115, 105, 110, 97, 0, 1, 114, 2, 116, 117, 114, 0, 1, 114, 107, 115, 2, 118, 0, 1,
-			114, 111, 101, 116, 2, 116, 0, 1, 114, 116, 2, 109, 105, 108, 101, 0, 1, 115, 100, 110, 105, 0, 1, 115, 100, 110, 105, 2, 114, 32,
-			0, 1, 115, 100, 117, 114, 111, 102, 0, 1, 115, 101, 100, 111, 103, 0, 1, 115, 102, 97, 2, 32, 0, 1, 115, 102, 97, 2, 116, 32,
-			12, 0, 1, 115, 108, 105, 116, 0, 1, 115, 110, 97, 108, 101, 118, 2, 116, 0, 1, 115, 114, 101, 116, 102, 101, 0, 1, 115, 114, 101,
-			118, 111, 2, 32, 0, 1, 115, 116, 114, 111, 98, 2, 12, 0, 1, 116, 101, 108, 108, 105, 109, 97, 107, 0, 1, 116, 101, 116, 114, 117,
-			0, 1, 116, 110, 101, 103, 114, 111, 109, 0, 1, 116, 115, 101, 106, 184, 195, 2, 110, 12, 0, 1, 116, 115, 103, 97, 100, 100, 105, 109,
-			0, 1, 116, 115, 114, 101, 116, 101, 109, 2, 110, 0, 1, 116, 115, 114, 111, 107, 115, 2, 110, 0, 1, 116, 115, 114, 117, 109, 2, 110,
-			0, 1, 118, 109, 101, 106, 104, 0, 2, 100, 116, 0, 2, 108, 101, 103, 105, 0, 8, 100, 2, 115, 32, 0, 8, 107, 115, 2, 32, 0,
-			8, 107, 115, 2, 101, 114, 0, 8, 109, 2, 108, 32, 0, 8, 110, 115, 2, 114, 32, 0, 8, 112, 115, 2, 32, 0, 8, 114, 2, 110,
-			100, 121, 114, 12, 0, 8, 114, 116, 2, 12, 0, 8, 114, 116, 2, 116, 0, 8, 115, 100, 117, 2, 32, 12, 0, 8, 115, 100, 117, 2,
-			114, 32, 12, 0, 8, 115, 110, 97, 2, 12, 12, 0, 8, 116, 2, 32, 0, 8, 116, 115, 105, 0, 100, 1, 116, 115, 2, 100, 97, 0,
-			100, 1, 116, 115, 2, 102, 97, 0, 100, 1, 116, 115, 2, 109, 111, 0, 100, 1, 116, 115, 2, 115, 195, 184, 0, 103, 8, 116, 115, 2,
-			32, 0, 1, 98, 10, 2, 115, 21, 3, 36, 4, 0, 101, 1, 100, 105, 2, 108, 3, 36, 6, 109, 0, 4, 103, 101, 8, 2, 32, 3,
-			36, 12, 57, 13, 0, 103, 101, 8, 2, 98, 108, 97, 100, 0, 103, 101, 8, 2, 108, 195, 184, 118, 0, 103, 101, 8, 2, 116, 114, 195,
-			166, 0, 101, 8, 110, 115, 2, 100, 101, 32, 3, 36, 13, 0, 8, 115, 2, 32, 3, 36, 19, 0, 110, 100, 101, 1, 106, 102, 3, 36,
-			20, 50, 13, 0, 110, 100, 101, 114, 1, 106, 102, 3, 36, 20, 50, 114, 0, 114, 114, 105, 101, 114, 8, 112, 3, 36, 34, 37, 6, 36,
-			0, 101, 1, 98, 2, 100, 3, 36, 36, 0, 116, 97, 103, 101, 114, 101, 3, 36, 47, 110, 91, 6, 109, 12, 51, 0, 100, 107, 101, 114,
-			1, 110, 115, 3, 36, 49, 114, 0, 4, 110, 1, 99, 2, 116, 17, 67, 3, 36, 50, 0, 110, 1, 100, 17, 65, 2, 116, 0, 108, 108,
-			101, 118, 101, 3, 36, 55, 84, 13, 0, 4, 103, 1, 108, 114, 101, 100, 110, 117, 3, 36, 57, 0, 103, 1, 116, 115, 114, 101, 118, 111,
-			0, 103, 8, 118, 2, 32, 0, 103, 8, 118, 2, 101, 116, 32, 0, 106, 2, 97, 107, 117, 0, 103, 101, 110, 8, 2, 21, 3, 36, 57,
-			13, 50, 0, 4, 103, 1, 108, 2, 101, 110, 100, 97, 3, 36, 81, 0, 103, 1, 108, 2, 101, 114, 0, 103, 1, 108, 2, 101, 114, 101,
-			0, 103, 1, 108, 2, 105, 116, 105, 0, 103, 1, 109, 2, 97, 0, 103, 1, 112, 2, 97, 115, 117, 115, 0, 103, 2, 101, 118, 105, 110,
-			115, 116, 12, 0, 103, 8, 107, 115, 2, 97, 102, 102, 101, 108, 0, 103, 101, 110, 100, 101, 8, 108, 2, 32, 3, 36, 81, 6, 109, 50,
-			72, 108, 0, 100, 101, 116, 1, 108, 2, 12, 3, 36, 86, 13, 47, 0, 101, 1, 114, 2, 108, 3, 36, 109, 0, 4, 1, 115, 115, 101,
-			106, 3, 37, 0, 8, 2, 32, 109, 97, 105, 108, 0, 8, 2, 32, 115, 112, 101, 97, 107, 0, 8, 100, 2, 32, 0, 97, 1, 108, 2,
-			115, 101, 0, 97, 1, 108, 2, 115, 105, 110, 103, 0, 121, 1, 17, 67, 2, 32, 0, 121, 1, 107, 0, 121, 1, 108, 108, 0, 121, 1,
-			110, 115, 105, 100, 0, 121, 1, 115, 100, 110, 105, 108, 0, 121, 1, 118, 114, 97, 104, 0, 121, 8, 110, 114, 97, 98, 0, 4, 97, 1,
-			104, 2, 108, 3, 37, 12, 0, 97, 1, 107, 2, 116, 111, 110, 0, 97, 1, 112, 2, 99, 111, 0, 97, 1, 116, 2, 109, 0, 97, 8,
-			112, 2, 107, 32, 0, 101, 1, 104, 115, 2, 108, 97, 0, 101, 1, 107, 2, 112, 101, 114, 0, 101, 1, 114, 102, 0, 101, 1, 114, 102,
-			2, 108, 97, 110, 0, 101, 1, 114, 103, 2, 110, 0, 101, 1, 119, 0, 101, 1, 119, 2, 107, 0, 101, 8, 108, 102, 2, 99, 101, 12,
-			0, 105, 8, 100, 2, 100, 114, 101, 0, 116, 111, 110, 8, 3, 37, 12, 47, 13, 50, 0, 97, 108, 8, 110, 3, 37, 12, 59, 0, 4,
-			101, 100, 1, 112, 115, 3, 37, 12, 72, 0, 101, 100, 1, 119, 116, 0, 101, 100, 8, 114, 2, 25, 0, 97, 99, 104, 8, 112, 3, 37,
-			12, 76, 0, 97, 103, 108, 101, 3, 37, 12, 81, 13, 55, 0, 4, 97, 115, 101, 1, 116, 112, 105, 114, 116, 115, 3, 37, 12, 89, 0,
-			101, 115, 101, 1, 104, 99, 0, 97, 115, 116, 8, 3, 37, 12, 89, 72, 0, 98, 97, 121, 3, 37, 71, 109, 57, 0, 97, 98, 111, 100,
-			121, 1, 112, 3, 37, 71, 114, 72, 37, 0, 100, 105, 101, 8, 2, 32, 3, 37, 72, 37, 0, 103, 101, 1, 108, 108, 111, 99, 3, 37,
-			75, 0, 118, 105, 101, 8, 116, 115, 3, 37, 84, 37, 0, 97, 115, 121, 3, 37, 89, 37, 0, 115, 112, 101, 97, 107, 3, 37, 89, 48,
-			37, 12, 49, 0, 97, 117, 1, 114, 3, 39, 0, 119, 1, 108, 2, 105, 115, 3, 40, 12, 0, 119, 1, 116, 115, 3, 57, 40, 0, 117,
-			103, 101, 110, 101, 3, 57, 40, 75, 6, 37, 12, 50, 0, 116, 1, 103, 111, 110, 2, 32, 3, 86, 0, 4, 1, 21, 2, 32, 12, 3,
-			108, 0, 1, 98, 97, 118, 104, 2, 104, 97, 114, 32, 0, 1, 98, 109, 111, 98, 2, 114, 21, 0, 1, 99, 121, 111, 106, 2, 115, 0,
-			1, 100, 101, 98, 0, 1, 100, 117, 0, 1, 100, 184, 195, 0, 1, 105, 114, 0, 1, 107, 107, 121, 2, 17, 67, 0, 1, 107, 108, 166,
-			195, 109, 0, 1, 108, 98, 111, 98, 0, 1, 108, 98, 166, 195, 2, 103, 114, 195, 184, 100, 0, 1, 108, 98, 184, 195, 2, 109, 0, 1,
-			108, 101, 2, 118, 97, 116, 0, 1, 108, 101, 116, 0, 1, 108, 102, 97, 2, 118, 0, 1, 108, 112, 2, 109, 101, 110, 0, 1, 108, 117,
-			0, 1, 110, 2, 117, 110, 103, 101, 0, 1, 110, 21, 2, 100, 0, 1, 110, 115, 17, 65, 108, 2, 12, 0, 1, 110, 115, 105, 103, 2,
-			12, 0, 1, 110, 115, 105, 118, 2, 12, 0, 1, 110, 115, 107, 111, 118, 0, 1, 114, 2, 104, 0, 1, 114, 2, 114, 101, 0, 1, 114,
-			97, 112, 115, 0, 1, 114, 97, 118, 0, 1, 114, 100, 108, 166, 195, 2, 12, 0, 1, 114, 100, 114, 111, 0, 1, 114, 116, 110, 101, 2,
-			112, 114, 0, 1, 114, 166, 195, 2, 12, 0, 1, 116, 114, 184, 195, 107, 115, 2, 17, 67, 0, 1, 118, 97, 104, 0, 2, 106, 111, 98,
-			12, 0, 2, 106, 111, 117, 114, 12, 0, 2, 106, 195, 166, 103, 101, 114, 12, 0, 8, 97, 2, 32, 0, 8, 100, 2, 32, 103, 97, 117,
-			108, 108, 101, 0, 8, 100, 2, 32, 108, 97, 32, 0, 8, 110, 115, 105, 2, 12, 0, 1, 114, 17, 65, 2, 115, 32, 3, 108, 9, 0,
-			4, 106, 101, 114, 110, 1, 109, 3, 108, 57, 109, 34, 50, 0, 106, 101, 114, 110, 1, 118, 0, 4, 106, 1, 100, 110, 2, 111, 98, 3,
-			108, 75, 0, 106, 1, 109, 2, 111, 98, 0, 4, 103, 1, 107, 115, 105, 102, 3, 108, 81, 0, 103, 1, 108, 101, 116, 2, 114, 0, 103,
-			2, 97, 110, 103, 115, 0, 116, 1, 99, 105, 112, 115, 111, 104, 3, 108, 86, 0, 115, 1, 21, 2, 32, 24, 3, 108, 89, 0, 4, 1,
-			17, 67, 2, 17, 67, 11, 3, 109, 0, 1, 17, 67, 2, 18, 67, 0, 1, 18, 71, 2, 114, 0, 1, 18, 74, 2, 108, 0, 1, 98,
-			2, 114, 103, 12, 0, 1, 98, 117, 116, 2, 114, 107, 117, 0, 1, 106, 98, 111, 2, 107, 116, 105, 118, 0, 1, 107, 97, 114, 2, 116,
-			12, 0, 1, 108, 2, 18, 72, 0, 1, 108, 101, 2, 110, 100, 105, 103, 0, 1, 108, 101, 116, 2, 120, 0, 1, 108, 111, 107, 2, 115,
-			116, 0, 1, 108, 115, 2, 116, 12, 12, 0, 1, 110, 101, 2, 109, 0, 1, 110, 101, 2, 114, 103, 105, 0, 1, 110, 115, 2, 114, 112,
-			0, 1, 112, 115, 101, 114, 2, 107, 116, 97, 98, 101, 108, 0, 1, 114, 2, 17, 67, 11, 0, 1, 114, 2, 110, 103, 195, 184, 0, 1,
-			114, 2, 110, 115, 107, 114, 0, 1, 114, 2, 110, 115, 107, 117, 0, 1, 114, 2, 115, 116, 97, 117, 114, 97, 110, 116, 0, 1, 114, 17,
-			67, 2, 100, 0, 1, 114, 98, 2, 118, 0, 1, 114, 100, 2, 118, 110, 0, 1, 114, 101, 100, 101, 108, 2, 118, 110, 101, 0, 1, 114,
-			103, 2, 116, 0, 1, 114, 112, 2, 109, 0, 1, 114, 112, 101, 100, 2, 115, 115, 0, 1, 114, 112, 111, 2, 118, 0, 1, 114, 112, 115,
-			2, 100, 0, 1, 115, 2, 100, 100, 0, 1, 116, 2, 100, 0, 8, 106, 111, 114, 112, 2, 107, 116, 105, 108, 0, 8, 114, 101, 108, 108,
-			97, 2, 100, 101, 32, 0, 8, 114, 116, 2, 100, 0, 8, 114, 116, 2, 115, 0, 97, 1, 119, 115, 2, 116, 101, 114, 0, 97, 1, 119,
-			115, 2, 116, 114, 101, 0, 106, 1, 118, 2, 114, 0, 4, 1, 114, 112, 2, 115, 115, 101, 114, 101, 110, 100, 101, 3, 109, 6, 0, 1,
-			114, 116, 2, 109, 97, 0, 110, 100, 101, 1, 115, 112, 111, 3, 109, 10, 50, 13, 0, 4, 1, 114, 2, 100, 17, 65, 3, 109, 12, 0,
-			2, 118, 101, 110, 0, 110, 100, 1, 107, 2, 101, 32, 12, 3, 109, 20, 50, 0, 4, 110, 100, 101, 1, 118, 2, 12, 3, 109, 20, 50,
-			13, 0, 110, 100, 101, 1, 118, 110, 97, 2, 32, 0, 110, 100, 101, 1, 118, 110, 101, 104, 2, 32, 0, 110, 100, 101, 1, 118, 115, 2,
-			32, 0, 110, 100, 101, 1, 100, 108, 117, 102, 3, 109, 20, 50, 108, 0, 4, 110, 100, 101, 114, 1, 107, 2, 32, 3, 109, 20, 50, 114,
-			0, 110, 100, 101, 114, 1, 118, 2, 12, 0, 110, 100, 101, 114, 1, 118, 110, 97, 2, 32, 0, 110, 100, 101, 114, 1, 118, 110, 101, 104,
-			2, 32, 0, 114, 118, 101, 114, 1, 115, 101, 114, 2, 32, 101, 110, 3, 109, 34, 84, 6, 36, 34, 0, 116, 97, 108, 1, 109, 32, 121,
-			118, 97, 101, 104, 3, 109, 47, 108, 55, 0, 99, 104, 1, 116, 3, 109, 49, 0, 4, 110, 1, 99, 2, 116, 3, 109, 50, 0, 110, 1,
-			99, 2, 116, 17, 65, 0, 4, 110, 101, 1, 106, 116, 2, 12, 12, 3, 109, 50, 13, 0, 110, 101, 1, 114, 103, 2, 12, 0, 110, 100,
-			101, 1, 118, 2, 116, 116, 97, 3, 109, 50, 72, 6, 109, 0, 110, 100, 97, 1, 114, 98, 3, 109, 50, 72, 110, 0, 110, 103, 101, 1,
-			104, 101, 110, 111, 116, 115, 3, 109, 50, 75, 0, 110, 101, 114, 1, 106, 116, 2, 12, 3, 109, 50, 114, 0, 4, 97, 1, 114, 98, 2,
-			107, 3, 109, 57, 0, 97, 1, 114, 103, 2, 116, 0, 103, 1, 108, 114, 101, 118, 111, 0, 121, 1, 114, 0, 103, 101, 1, 108, 2, 109,
-			101, 3, 109, 57, 20, 13, 0, 4, 103, 101, 108, 1, 114, 3, 109, 57, 55, 0, 103, 108, 1, 114, 0, 109, 112, 105, 114, 101, 2, 32,
-			115, 116, 97, 116, 101, 3, 109, 65, 48, 35, 57, 108, 0, 105, 110, 116, 1, 116, 3, 109, 68, 0, 4, 97, 100, 1, 104, 3, 109, 72,
-			0, 100, 100, 1, 114, 98, 0, 4, 100, 100, 105, 101, 1, 114, 102, 3, 109, 72, 37, 0, 100, 100, 105, 101, 8, 0, 100, 100, 121, 1,
-			114, 102, 0, 100, 100, 105, 107, 101, 3, 109, 72, 49, 108, 0, 100, 97, 103, 1, 114, 102, 3, 109, 72, 110, 0, 4, 103, 1, 114, 2,
-			101, 114, 3, 109, 81, 0, 103, 1, 114, 97, 117, 116, 0, 103, 103, 121, 1, 112, 3, 109, 81, 37, 0, 103, 109, 97, 116, 105, 116, 1,
-			112, 3, 109, 81, 65, 110, 47, 6, 37, 47, 0, 100, 101, 116, 1, 116, 115, 2, 32, 3, 109, 86, 108, 47, 0, 100, 101, 116, 1, 114,
-			2, 32, 3, 109, 86, 108, 72, 0, 115, 116, 105, 103, 101, 1, 114, 112, 2, 32, 3, 109, 89, 47, 6, 37, 91, 0, 4, 99, 115, 116,
-			97, 99, 121, 3, 109, 89, 47, 110, 89, 37, 0, 99, 115, 116, 97, 115, 121, 0, 4, 1, 110, 115, 2, 114, 114, 101, 3, 111, 0, 1,
-			114, 2, 18, 67, 115, 0, 1, 114, 2, 18, 74, 115, 0, 1, 114, 2, 107, 116, 111, 0, 1, 114, 2, 109, 0, 1, 114, 2, 110, 100,
-			32, 0, 1, 114, 2, 110, 100, 101, 0, 1, 114, 2, 110, 103, 0, 1, 114, 2, 110, 115, 101, 0, 1, 114, 2, 110, 115, 110, 105, 110,
-			103, 0, 1, 114, 2, 110, 116, 101, 0, 1, 114, 2, 115, 116, 0, 1, 114, 2, 115, 116, 101, 0, 1, 114, 2, 116, 0, 1, 114, 2,
-			118, 108, 0, 1, 114, 2, 118, 110, 0, 1, 114, 18, 67, 2, 17, 67, 11, 0, 1, 114, 18, 72, 2, 109, 0, 1, 114, 98, 2, 18,
-			74, 0, 1, 114, 101, 98, 2, 116, 12, 12, 0, 1, 114, 102, 2, 108, 0, 1, 114, 102, 2, 109, 0, 1, 114, 102, 2, 109, 111, 118,
-			0, 1, 114, 103, 2, 108, 0, 1, 114, 103, 103, 97, 2, 115, 115, 111, 114, 0, 1, 114, 103, 110, 111, 107, 2, 115, 0, 1, 114, 105,
-			100, 2, 107, 116, 0, 1, 114, 112, 2, 17, 67, 11, 12, 0, 1, 114, 112, 2, 115, 12, 0, 1, 114, 112, 111, 2, 116, 12, 12, 0,
-			1, 114, 114, 111, 102, 2, 116, 12, 12, 0, 1, 114, 121, 114, 114, 97, 107, 2, 116, 12, 0, 2, 103, 97, 110, 115, 105, 103, 116, 0,
-			8, 114, 103, 101, 114, 2, 115, 115, 105, 118, 0, 100, 105, 118, 101, 1, 114, 116, 3, 111, 86, 84, 13, 0, 115, 115, 101, 1, 114, 21,
-			2, 114, 101, 28, 33, 3, 111, 89, 6, 36, 0, 2, 109, 98, 97, 108, 108, 3, 112, 0, 97, 114, 116, 1, 104, 3, 112, 12, 72, 0,
-			110, 1, 114, 2, 99, 101, 3, 112, 68, 0, 110, 116, 101, 110, 116, 101, 3, 112, 68, 47, 6, 112, 68, 47, 0, 97, 117, 120, 1, 114,
-			3, 113, 0, 4, 1, 99, 110, 97, 108, 101, 101, 114, 102, 2, 114, 3, 114, 0, 1, 108, 97, 109, 2, 114, 105, 0, 1, 114, 100, 2,
-			100, 101, 115, 32, 0, 1, 114, 100, 110, 2, 17, 65, 0, 1, 114, 100, 110, 97, 0, 1, 114, 111, 10, 2, 112, 108, 0, 1, 114, 111,
-			104, 0, 1, 114, 111, 116, 115, 0, 1, 114, 116, 97, 108, 107, 0, 1, 114, 116, 115, 110, 101, 118, 0, 1, 114, 121, 110, 2, 12, 0,
-			114, 1, 98, 17, 65, 10, 0, 114, 1, 100, 110, 101, 0, 114, 1, 108, 97, 109, 0, 114, 1, 108, 100, 105, 109, 0, 114, 1, 108, 108,
-			101, 0, 114, 1, 108, 165, 195, 109, 0, 114, 1, 110, 115, 17, 65, 108, 2, 12, 0, 114, 1, 110, 115, 105, 103, 2, 12, 0, 114, 1,
-			110, 115, 105, 118, 2, 12, 0, 114, 1, 112, 117, 115, 0, 114, 1, 115, 100, 117, 112, 2, 12, 0, 114, 1, 115, 117, 108, 2, 12, 0,
-			114, 8, 110, 115, 105, 2, 12, 0, 4, 110, 101, 1, 114, 21, 2, 32, 3, 114, 50, 13, 0, 110, 101, 1, 114, 103, 110, 105, 102, 0,
-			110, 101, 115, 1, 114, 21, 2, 32, 14, 128, 128, 132, 3, 114, 50, 13, 89, 0, 117, 1, 102, 101, 3, 114, 57, 0, 97, 114, 108, 8,
-			3, 118, 12, 59, 0, 97, 114, 112, 8, 3, 118, 12, 71, 0, 117, 1, 110, 3, 118, 40, 0, 117, 2, 114, 111, 3, 118, 58, 0, 117,
-			116, 1, 112, 97, 114, 101, 116, 3, 118, 58, 72, 0, 117, 115, 3, 118, 58, 89, 0, 7, 6, 102, 0, 1, 97, 2, 115, 116, 101, 100,
-			3, 0, 4, 1, 97, 2, 17, 65, 3, 58, 0, 1, 97, 2, 17, 67, 0, 4, 3, 83, 0, 1, 21, 2, 108, 97, 115, 107, 101, 0,
-			1, 97, 2, 97, 115, 105, 0, 1, 97, 2, 97, 116, 105, 115, 107, 0, 1, 97, 2, 105, 116, 0, 1, 97, 2, 111, 110, 0, 1, 97,
-			2, 111, 114, 0, 1, 97, 2, 114, 105, 107, 0, 1, 97, 2, 114, 111, 0, 1, 97, 2, 116, 101, 110, 0, 1, 97, 2, 116, 101, 115,
-			32, 0, 1, 97, 17, 67, 2, 17, 65, 0, 1, 97, 17, 67, 2, 116, 0, 1, 97, 100, 2, 110, 0, 1, 97, 103, 2, 108, 0, 1,
-			97, 107, 115, 0, 1, 97, 108, 2, 114, 101, 0, 1, 97, 114, 2, 102, 111, 114, 0, 1, 97, 114, 2, 102, 114, 0, 1, 97, 114, 2,
-			105, 107, 0, 1, 97, 114, 2, 108, 101, 0, 1, 97, 114, 103, 2, 17, 65, 0, 1, 97, 114, 105, 103, 0, 1, 97, 114, 116, 115, 0,
-			1, 97, 115, 2, 97, 114, 0, 1, 97, 116, 115, 2, 101, 0, 1, 97, 118, 2, 108, 0, 2, 106, 101, 100, 101, 114, 0, 2, 111, 108,
-			107, 0, 102, 0, 102, 1, 97, 2, 97, 98, 101, 108, 0, 102, 1, 97, 2, 97, 103, 101, 0, 102, 1, 97, 2, 101, 107, 116, 0, 102,
-			1, 97, 2, 101, 108, 0, 102, 1, 97, 2, 105, 99, 101, 114, 101, 0, 102, 1, 97, 2, 105, 110, 101, 0, 102, 1, 97, 2, 105, 110,
-			105, 116, 101, 116, 0, 102, 1, 97, 2, 105, 114, 109, 0, 102, 1, 97, 2, 117, 116, 97, 103, 101, 0, 102, 1, 97, 2, 195, 166, 114,
-			101, 0, 102, 1, 97, 106, 2, 97, 0, 102, 1, 97, 114, 2, 101, 0, 111, 114, 101, 8, 2, 100, 101, 32, 3, 83, 2, 6, 39, 34,
-			114, 0, 111, 114, 8, 2, 101, 32, 3, 83, 2, 39, 0, 4, 101, 1, 97, 99, 3, 83, 6, 36, 0, 195, 169, 1, 97, 99, 0, 111,
-			114, 8, 2, 117, 109, 3, 83, 6, 39, 34, 0, 195, 166, 114, 100, 105, 103, 1, 21, 3, 83, 6, 109, 34, 72, 37, 0, 114, 105, 116,
-			101, 115, 1, 32, 115, 101, 3, 83, 34, 37, 47, 0, 114, 97, 110, 107, 105, 101, 3, 83, 34, 110, 50, 49, 37, 0, 114, 97, 110, 195,
-			167, 111, 105, 115, 3, 83, 34, 112, 68, 89, 6, 58, 35, 0, 114, 101, 117, 100, 3, 83, 34, 114, 57, 47, 0, 101, 8, 2, 32, 3,
-			83, 36, 0, 101, 116, 116, 117, 99, 99, 105, 110, 101, 3, 83, 36, 47, 40, 87, 91, 6, 37, 12, 50, 13, 0, 105, 110, 108, 97, 121,
-			3, 83, 36, 50, 55, 37, 0, 105, 101, 108, 100, 3, 83, 37, 12, 59, 72, 0, 4, 105, 114, 101, 3, 83, 37, 12, 114, 0, 105, 114,
-			101, 111, 103, 0, 105, 114, 101, 110, 122, 101, 3, 83, 37, 51, 6, 110, 50, 89, 13, 0, 111, 98, 105, 1, 21, 3, 83, 39, 71, 6,
-			37, 0, 111, 117, 113, 117, 101, 116, 3, 83, 40, 49, 6, 36, 0, 114, 97, 110, 99, 101, 115, 99, 97, 3, 83, 51, 35, 50, 91, 6,
-			109, 89, 49, 110, 0, 108, 117, 115, 104, 3, 83, 55, 114, 91, 0, 195, 166, 114, 100, 105, 103, 1, 21, 21, 3, 83, 109, 34, 72, 37,
-			0, 97, 114, 97, 111, 3, 83, 112, 34, 112, 39, 0, 111, 117, 114, 8, 2, 32, 3, 83, 113, 12, 0, 111, 110, 116, 97, 105, 110, 101,
-			3, 83, 113, 68, 47, 6, 109, 12, 50, 0, 98, 105, 8, 3, 109, 83, 71, 37, 6, 35, 57, 0, 7, 6, 103, 0, 4, 1, 105, 100,
-			184, 195, 2, 116, 32, 3, 0, 4, 1, 105, 107, 2, 104, 111, 115, 116, 3, 0, 4, 1, 105, 116, 103, 2, 101, 114, 101, 3, 0, 4,
-			1, 108, 2, 17, 67, 3, 0, 4, 1, 108, 2, 116, 101, 32, 3, 0, 4, 1, 108, 97, 118, 2, 116, 3, 0, 4, 1, 111, 2, 101,
-			114, 110, 17, 65, 3, 0, 4, 1, 114, 117, 103, 2, 108, 101, 3, 0, 4, 1, 114, 184, 195, 2, 115, 3, 0, 4, 1, 117, 2, 108,
-			3, 0, 4, 1, 117, 100, 32, 110, 101, 3, 0, 4, 1, 117, 100, 101, 100, 101, 118, 115, 3, 0, 4, 1, 117, 100, 101, 115, 121, 108,
-			3, 0, 4, 1, 117, 100, 103, 97, 108, 102, 3, 0, 4, 1, 117, 100, 107, 115, 97, 109, 97, 100, 3, 0, 4, 1, 117, 100, 108, 106,
-			101, 115, 3, 0, 4, 1, 117, 100, 114, 101, 109, 108, 111, 3, 0, 4, 1, 117, 100, 114, 101, 109, 109, 97, 107, 3, 0, 4, 1, 117,
-			100, 115, 107, 111, 118, 3, 0, 4, 1, 117, 100, 116, 108, 101, 116, 3, 0, 4, 1, 117, 114, 3, 0, 4, 1, 117, 116, 114, 101, 104,
-			3, 0, 1, 121, 115, 3, 0, 4, 1, 97, 2, 97, 118, 101, 3, 6, 81, 0, 8, 97, 2, 97, 114, 0, 101, 110, 116, 1, 114, 101,
-			115, 3, 6, 89, 57, 110, 50, 47, 0, 4, 1, 111, 103, 3, 8, 0, 1, 111, 108, 0, 4, 1, 111, 108, 2, 111, 3, 8, 81, 0,
-			1, 111, 108, 98, 2, 115, 0, 105, 1, 10, 2, 115, 107, 28, 33, 3, 8, 81, 37, 0, 101, 115, 1, 114, 97, 112, 115, 97, 3, 8,
-			89, 0, 4, 1, 97, 114, 2, 101, 3, 12, 0, 1, 97, 115, 2, 115, 0, 1, 117, 2, 101, 0, 1, 117, 115, 0, 1, 97, 100, 100,
-			2, 115, 3, 12, 19, 0, 101, 1, 184, 195, 2, 12, 12, 12, 3, 12, 57, 13, 0, 101, 1, 184, 195, 109, 2, 108, 101, 110, 3, 12,
-			57, 36, 0, 4, 1, 97, 98, 2, 101, 3, 13, 0, 1, 97, 107, 2, 101, 0, 4, 101, 110, 1, 114, 2, 32, 3, 13, 50, 0, 101,
-			110, 1, 114, 2, 115, 32, 0, 1, 97, 98, 2, 105, 3, 15, 0, 4, 101, 111, 114, 103, 101, 3, 21, 0, 101, 111, 114, 103, 105, 101,
-			0, 114, 97, 99, 101, 0, 114, 97, 104, 97, 109, 2, 32, 0, 114, 97, 104, 97, 109, 115, 2, 32, 0, 111, 110, 122, 97, 108, 101, 115,
-			3, 21, 101, 115, 0, 4, 97, 99, 104, 101, 116, 3, 21, 102, 114, 0, 117, 105, 108, 108, 97, 117, 109, 105, 110, 0, 4, 1, 97, 98,
-			2, 116, 97, 108, 3, 40, 0, 1, 97, 104, 2, 108, 0, 1, 114, 2, 101, 114, 32, 0, 1, 114, 184, 195, 0, 1, 165, 195, 0, 1,
-			165, 195, 2, 101, 0, 1, 165, 195, 118, 2, 110, 0, 101, 1, 114, 184, 195, 2, 108, 12, 3, 40, 108, 0, 116, 1, 114, 117, 112, 115,
-			3, 47, 0, 116, 101, 1, 114, 117, 112, 115, 3, 47, 13, 0, 4, 1, 105, 107, 3, 49, 0, 1, 111, 98, 2, 115, 116, 0, 110, 1,
-			97, 112, 2, 105, 3, 50, 6, 0, 4, 110, 1, 105, 2, 111, 3, 50, 57, 0, 110, 1, 166, 195, 114, 112, 109, 105, 2, 101, 0, 4,
-			1, 17, 65, 2, 110, 3, 57, 0, 1, 97, 100, 2, 115, 32, 0, 1, 97, 104, 101, 98, 0, 1, 97, 108, 2, 110, 0, 1, 97, 115,
-			0, 1, 101, 2, 101, 110, 115, 107, 97, 98, 0, 1, 101, 2, 101, 110, 116, 108, 0, 1, 101, 18, 73, 0, 1, 101, 108, 98, 2, 97,
-			110, 115, 105, 103, 116, 0, 1, 101, 108, 98, 2, 102, 105, 0, 1, 101, 108, 98, 2, 115, 111, 116, 0, 1, 101, 110, 2, 32, 0, 1,
-			101, 110, 115, 0, 1, 101, 118, 2, 101, 110, 0, 1, 105, 109, 115, 0, 1, 108, 2, 32, 0, 1, 108, 2, 101, 110, 32, 0, 1, 108,
-			2, 101, 116, 32, 0, 1, 108, 2, 115, 0, 1, 108, 97, 2, 101, 0, 1, 108, 97, 118, 0, 1, 108, 97, 118, 2, 195, 165, 114, 0,
-			1, 108, 101, 2, 101, 32, 0, 1, 108, 101, 2, 101, 110, 101, 32, 0, 1, 108, 101, 2, 101, 110, 101, 115, 32, 0, 1, 108, 166, 195,
-			2, 101, 0, 1, 108, 184, 195, 2, 101, 0, 1, 121, 2, 101, 0, 1, 166, 195, 2, 101, 0, 1, 166, 195, 2, 101, 114, 110, 17, 65,
-			0, 1, 166, 195, 108, 2, 100, 111, 109, 0, 1, 166, 195, 108, 2, 102, 111, 108, 107, 0, 1, 166, 195, 108, 2, 109, 0, 1, 166, 195,
-			108, 2, 115, 195, 184, 115, 0, 1, 166, 195, 114, 112, 0, 1, 166, 195, 118, 107, 0, 1, 184, 195, 0, 1, 184, 195, 2, 110, 0, 2,
-			108, 101, 0, 8, 101, 2, 32, 0, 110, 1, 105, 115, 108, 101, 118, 3, 57, 50, 0, 114, 1, 97, 108, 2, 101, 3, 57, 51, 0, 101,
-			1, 101, 2, 114, 3, 57, 114, 0, 4, 1, 97, 98, 2, 105, 110, 3, 58, 0, 1, 97, 100, 2, 17, 67, 0, 1, 97, 114, 98, 0,
-			1, 97, 114, 100, 0, 1, 97, 114, 100, 2, 101, 110, 0, 1, 97, 114, 118, 0, 1, 97, 118, 2, 110, 0, 1, 111, 17, 67, 0, 1,
-			111, 108, 114, 111, 0, 1, 114, 2, 32, 0, 1, 114, 2, 101, 116, 32, 0, 1, 114, 101, 106, 2, 17, 65, 0, 1, 114, 101, 106, 2,
-			17, 67, 0, 1, 114, 166, 195, 106, 2, 101, 0, 8, 97, 114, 112, 0, 101, 114, 1, 114, 166, 195, 2, 108, 105, 103, 3, 58, 13, 0,
-			101, 110, 1, 114, 97, 109, 3, 58, 13, 50, 0, 101, 114, 110, 101, 1, 114, 2, 32, 3, 58, 114, 50, 108, 0, 101, 114, 110, 101, 115,
-			1, 114, 2, 32, 3, 58, 114, 50, 108, 89, 0, 110, 1, 105, 115, 2, 101, 114, 3, 68, 0, 4, 110, 1, 97, 112, 2, 101, 114, 3,
-			68, 57, 0, 110, 1, 97, 112, 2, 111, 110, 0, 101, 110, 116, 108, 101, 109, 101, 110, 3, 72, 57, 109, 50, 47, 13, 55, 65, 109, 50,
-			0, 101, 110, 116, 108, 101, 109, 97, 110, 3, 72, 57, 109, 50, 47, 13, 55, 65, 110, 50, 0, 2, 105, 103, 111, 108, 111, 3, 75, 0,
-			101, 114, 97, 108, 100, 1, 122, 116, 105, 102, 3, 75, 6, 109, 34, 108, 59, 0, 105, 97, 110, 116, 115, 8, 3, 75, 35, 57, 110, 50,
-			47, 89, 0, 105, 8, 2, 110, 3, 75, 36, 0, 101, 114, 111, 110, 105, 109, 111, 3, 75, 36, 34, 6, 114, 50, 37, 65, 113, 12, 40,
-			0, 105, 110, 103, 101, 114, 8, 3, 75, 36, 50, 75, 114, 0, 4, 105, 8, 2, 110, 18, 69, 3, 75, 37, 0, 105, 8, 2, 110, 97,
-			0, 105, 117, 115, 101, 112, 112, 101, 3, 75, 37, 89, 6, 109, 48, 13, 0, 101, 114, 114, 121, 3, 75, 109, 34, 37, 0, 101, 114, 97,
-			108, 100, 3, 75, 109, 34, 108, 59, 0, 101, 114, 97, 108, 100, 105, 110, 101, 3, 75, 109, 34, 108, 59, 72, 37, 12, 50, 0, 101, 111,
-			102, 102, 3, 75, 109, 83, 0, 101, 111, 114, 103, 105, 97, 3, 75, 114, 12, 75, 57, 110, 0, 4, 3, 81, 0, 1, 17, 65, 2, 116,
-			32, 0, 1, 17, 65, 108, 2, 97, 0, 1, 97, 2, 110, 111, 115, 0, 1, 97, 100, 110, 97, 2, 116, 0, 1, 97, 108, 2, 116, 0,
-			1, 97, 114, 98, 2, 116, 0, 1, 97, 114, 100, 2, 111, 110, 0, 1, 97, 114, 100, 2, 116, 0, 1, 97, 114, 112, 2, 116, 0, 1,
-			97, 115, 2, 111, 0, 1, 101, 18, 73, 2, 116, 0, 1, 101, 114, 2, 105, 17, 65, 0, 1, 101, 114, 2, 105, 109, 101, 110, 116, 0,
-			1, 101, 116, 2, 111, 114, 105, 0, 1, 105, 2, 105, 0, 1, 108, 105, 112, 2, 114, 105, 109, 0, 1, 111, 2, 114, 97, 102, 0, 1,
-			111, 2, 114, 97, 109, 0, 1, 111, 98, 2, 111, 116, 97, 0, 1, 111, 108, 2, 97, 0, 1, 111, 108, 2, 102, 105, 108, 0, 1, 111,
-			114, 2, 97, 110, 0, 1, 111, 114, 2, 101, 115, 0, 1, 111, 114, 112, 2, 114, 0, 1, 111, 114, 114, 117, 115, 2, 97, 116, 0, 1,
-			111, 116, 2, 97, 0, 1, 111, 116, 2, 111, 0, 1, 111, 116, 2, 116, 0, 1, 111, 118, 2, 116, 0, 1, 111, 118, 2, 116, 101, 0,
-			1, 117, 2, 101, 110, 18, 66, 0, 1, 117, 2, 101, 110, 110, 0, 1, 117, 104, 2, 110, 105, 110, 103, 0, 1, 117, 109, 2, 110, 0,
-			1, 117, 114, 102, 2, 116, 0, 1, 117, 114, 117, 2, 117, 97, 121, 0, 1, 121, 98, 2, 110, 0, 1, 121, 107, 115, 2, 110, 105, 0,
-			1, 121, 116, 2, 110, 105, 110, 103, 0, 1, 166, 195, 2, 110, 12, 0, 1, 166, 195, 114, 112, 2, 110, 97, 0, 1, 166, 195, 114, 112,
-			2, 116, 105, 103, 0, 1, 184, 195, 114, 2, 116, 101, 114, 0, 1, 184, 195, 115, 2, 97, 110, 103, 0, 2, 101, 110, 115, 116, 97, 110,
-			100, 12, 0, 2, 105, 118, 12, 0, 2, 108, 97, 115, 0, 2, 108, 101, 109, 0, 2, 114, 97, 110, 0, 2, 114, 111, 115, 115, 0, 2,
-			114, 117, 18, 71, 0, 2, 114, 195, 184, 110, 0, 2, 116, 101, 32, 0, 2, 121, 114, 111, 0, 2, 195, 165, 114, 100, 12, 12, 0, 8,
-			2, 108, 101, 100, 0, 8, 111, 98, 2, 97, 114, 116, 0, 8, 111, 98, 2, 101, 121, 0, 8, 111, 108, 2, 32, 0, 8, 111, 108, 2,
-			103, 0, 103, 1, 97, 2, 114, 101, 115, 0, 103, 1, 105, 0, 103, 1, 111, 0, 103, 1, 111, 108, 2, 101, 0, 103, 2, 101, 0, 104,
-			1, 102, 97, 2, 97, 0, 104, 2, 97, 110, 97, 0, 104, 2, 101, 116, 116, 111, 0, 4, 1, 97, 2, 117, 114, 107, 3, 81, 6, 0,
-			1, 111, 108, 2, 105, 0, 8, 101, 114, 2, 105, 115, 116, 0, 101, 114, 1, 21, 2, 28, 33, 3, 81, 6, 36, 34, 0, 4, 101, 110,
-			1, 111, 114, 101, 3, 81, 6, 36, 50, 0, 101, 110, 1, 111, 114, 116, 105, 110, 0, 101, 110, 1, 111, 114, 116, 115, 184, 195, 0, 105,
-			1, 101, 114, 2, 115, 116, 101, 114, 3, 81, 6, 37, 0, 97, 1, 111, 110, 111, 109, 2, 109, 3, 81, 6, 110, 0, 4, 105, 1, 17,
-			67, 21, 2, 28, 33, 3, 81, 7, 37, 0, 105, 1, 21, 2, 28, 33, 0, 108, 101, 1, 111, 111, 103, 3, 81, 20, 13, 55, 0, 114,
-			97, 110, 100, 101, 8, 2, 32, 3, 81, 34, 35, 50, 72, 108, 0, 114, 111, 115, 1, 32, 110, 101, 3, 81, 34, 39, 0, 114, 97, 100,
-			121, 3, 81, 34, 109, 57, 72, 37, 0, 114, 97, 110, 100, 112, 114, 105, 120, 3, 81, 34, 112, 68, 48, 34, 6, 37, 0, 114, 97, 102,
-			102, 105, 116, 105, 3, 81, 34, 112, 83, 6, 37, 47, 37, 0, 114, 117, 110, 103, 101, 8, 2, 32, 3, 81, 34, 114, 50, 75, 0, 114,
-			195, 184, 100, 1, 101, 108, 98, 166, 195, 3, 81, 34, 118, 86, 0, 4, 117, 121, 8, 2, 32, 3, 81, 35, 12, 57, 0, 117, 121, 8,
-			2, 115, 32, 0, 117, 105, 2, 110, 110, 101, 115, 3, 81, 36, 0, 101, 111, 114, 103, 105, 101, 110, 3, 81, 36, 6, 113, 12, 81, 37,
-			108, 50, 0, 105, 110, 115, 98, 101, 114, 103, 3, 81, 36, 50, 89, 71, 118, 12, 81, 0, 4, 105, 1, 101, 114, 2, 109, 101, 110, 28,
-			33, 12, 3, 81, 37, 0, 105, 1, 101, 114, 2, 111, 110, 12, 0, 105, 1, 101, 114, 2, 115, 116, 114, 101, 28, 33, 12, 0, 101, 97,
-			114, 3, 81, 37, 34, 0, 117, 105, 114, 108, 97, 110, 100, 3, 81, 37, 34, 55, 6, 110, 50, 72, 0, 117, 105, 110, 101, 97, 3, 81,
-			37, 50, 6, 36, 110, 0, 117, 105, 108, 108, 111, 116, 105, 110, 101, 3, 81, 37, 57, 40, 47, 6, 37, 12, 50, 13, 0, 111, 100, 97,
-			102, 116, 101, 110, 3, 81, 39, 6, 35, 83, 47, 50, 0, 111, 100, 110, 97, 116, 3, 81, 39, 50, 6, 110, 47, 0, 111, 100, 109, 111,
-			114, 103, 101, 110, 3, 81, 39, 65, 6, 114, 12, 50, 0, 111, 98, 101, 108, 105, 110, 3, 81, 39, 71, 13, 55, 6, 109, 68, 0, 111,
-			100, 100, 97, 103, 3, 81, 39, 72, 6, 110, 0, 117, 100, 115, 107, 101, 108, 111, 118, 8, 2, 32, 3, 81, 40, 89, 81, 13, 55, 114,
-			40, 0, 108, 111, 117, 99, 101, 115, 116, 101, 114, 3, 81, 55, 114, 89, 47, 114, 0, 106, 111, 114, 100, 101, 3, 81, 57, 39, 12, 114,
-			0, 117, 105, 114, 101, 3, 81, 58, 6, 120, 114, 0, 109, 97, 116, 97, 1, 105, 116, 115, 3, 81, 65, 6, 110, 12, 47, 110, 0, 195,
-			166, 1, 110, 3, 81, 109, 0, 97, 116, 101, 115, 8, 2, 32, 3, 81, 109, 57, 47, 89, 0, 97, 98, 108, 101, 8, 3, 81, 109, 57,
-			71, 13, 55, 0, 97, 114, 121, 8, 3, 81, 110, 34, 37, 0, 117, 97, 114, 100, 3, 81, 112, 12, 72, 0, 111, 117, 100, 97, 3, 81,
-			112, 58, 72, 110, 0, 97, 117, 108, 108, 101, 3, 81, 113, 12, 55, 0, 111, 103, 111, 3, 81, 113, 58, 81, 6, 113, 58, 0, 117, 115,
-			116, 97, 118, 3, 81, 113, 89, 47, 35, 58, 0, 117, 108, 102, 115, 116, 114, 101, 97, 109, 3, 81, 114, 55, 83, 89, 47, 34, 37, 12,
-			65, 0, 117, 116, 104, 114, 105, 101, 3, 81, 114, 87, 51, 37, 0, 117, 101, 114, 110, 115, 101, 121, 3, 81, 118, 12, 50, 89, 37, 0,
-			101, 114, 116, 105, 101, 3, 81, 118, 47, 37, 0, 4, 101, 108, 101, 3, 89, 57, 36, 55, 6, 36, 0, 101, 108, 195, 169, 0, 101, 111,
-			105, 115, 1, 114, 117, 111, 98, 3, 90, 58, 6, 112, 0, 101, 111, 105, 115, 105, 1, 114, 117, 111, 98, 3, 90, 58, 112, 89, 6, 37,
-			0, 4, 1, 101, 114, 2, 105, 109, 101, 3, 91, 0, 1, 117, 2, 101, 110, 101, 0, 2, 105, 114, 111, 0, 4, 105, 1, 101, 114, 2,
-			28, 33, 12, 3, 91, 6, 37, 0, 105, 8, 111, 108, 2, 32, 0, 105, 8, 111, 108, 2, 101, 0, 105, 101, 114, 1, 108, 97, 3, 91,
-			6, 37, 34, 0, 101, 1, 110, 105, 2, 110, 105, 195, 184, 114, 3, 91, 36, 0, 4, 101, 110, 101, 114, 2, 32, 100, 101, 109, 3, 91,
-			36, 50, 6, 36, 34, 0, 101, 110, 101, 114, 2, 32, 100, 101, 114, 101, 115, 0, 101, 110, 101, 114, 2, 32, 104, 97, 109, 0, 101, 110,
-			101, 114, 2, 32, 104, 101, 110, 100, 101, 0, 4, 101, 110, 101, 118, 101, 3, 91, 36, 50, 6, 109, 12, 84, 0, 101, 110, 195, 168, 118,
-			101, 0, 101, 114, 97, 114, 100, 8, 3, 91, 36, 51, 6, 112, 12, 0, 105, 1, 111, 108, 116, 97, 110, 3, 91, 37, 0, 105, 98, 114,
-			97, 108, 116, 97, 114, 3, 91, 37, 71, 51, 35, 55, 47, 6, 112, 0, 101, 114, 105, 115, 107, 1, 108, 97, 3, 91, 57, 6, 37, 12,
-			34, 89, 81, 0, 101, 114, 105, 101, 114, 1, 108, 97, 3, 91, 57, 6, 37, 114, 0, 101, 114, 105, 101, 116, 1, 108, 97, 3, 91, 57,
-			108, 34, 6, 37, 13, 72, 0, 101, 110, 100, 97, 114, 109, 3, 91, 110, 50, 72, 6, 35, 34, 65, 0, 4, 101, 114, 1, 101, 110, 2,
-			12, 12, 3, 114, 0, 114, 101, 1, 101, 110, 0, 7, 6, 104, 0, 4, 1, 17, 65, 2, 25, 3, 0, 4, 1, 119, 2, 105, 115, 107,
-			121, 3, 0, 4, 1, 119, 2, 105, 116, 3, 0, 4, 2, 106, 3, 0, 8, 114, 2, 105, 110, 3, 0, 4, 101, 109, 1, 111, 98, 2,
-			101, 3, 6, 109, 12, 65, 0, 101, 109, 101, 1, 111, 98, 2, 32, 0, 111, 1, 103, 2, 115, 116, 3, 39, 58, 0, 117, 101, 1, 108,
-			105, 115, 2, 116, 3, 40, 6, 109, 0, 118, 3, 84, 0, 4, 3, 107, 0, 1, 116, 2, 101, 110, 0, 105, 116, 101, 99, 104, 3, 107,
-			35, 57, 47, 36, 49, 0, 121, 100, 101, 8, 3, 107, 35, 57, 72, 0, 111, 119, 97, 114, 100, 3, 107, 35, 58, 114, 72, 0, 105, 108,
-			108, 97, 114, 121, 3, 107, 36, 55, 13, 16, 36, 0, 101, 97, 116, 3, 107, 37, 12, 47, 0, 105, 101, 114, 111, 103, 108, 121, 2, 102,
-			3, 107, 37, 34, 39, 83, 55, 6, 116, 0, 105, 112, 111, 107, 114, 97, 116, 101, 115, 3, 107, 37, 48, 6, 39, 49, 34, 35, 47, 109,
-			89, 0, 111, 109, 101, 114, 3, 107, 39, 65, 6, 36, 34, 0, 117, 103, 104, 3, 107, 57, 40, 12, 0, 117, 103, 101, 115, 8, 2, 32,
-			3, 107, 57, 40, 12, 89, 0, 111, 117, 115, 116, 111, 110, 3, 107, 57, 40, 12, 89, 72, 114, 50, 0, 97, 105, 103, 8, 3, 107, 109,
-			57, 81, 0, 101, 97, 118, 121, 3, 107, 109, 84, 37, 0, 101, 97, 116, 104, 101, 114, 3, 107, 109, 86, 114, 0, 97, 97, 103, 8, 2,
-			32, 3, 107, 110, 57, 0, 97, 119, 97, 105, 105, 3, 107, 110, 58, 6, 35, 12, 57, 37, 0, 105, 103, 104, 104, 97, 116, 3, 107, 112,
-			12, 57, 107, 110, 72, 0, 111, 117, 115, 101, 99, 111, 97, 116, 3, 107, 112, 40, 89, 49, 39, 58, 72, 0, 97, 119, 116, 104, 111, 114,
-			110, 101, 3, 107, 113, 12, 87, 39, 50, 0, 111, 109, 101, 3, 107, 113, 58, 65, 0, 97, 119, 107, 3, 107, 114, 12, 49, 0, 111, 116,
-			108, 105, 110, 101, 3, 107, 114, 47, 55, 35, 12, 57, 50, 0, 117, 99, 107, 108, 101, 98, 101, 114, 114, 121, 3, 107, 114, 49, 13, 55,
-			71, 109, 34, 37, 0, 111, 110, 101, 121, 3, 107, 114, 50, 37, 0, 117, 110, 116, 8, 2, 32, 3, 107, 114, 50, 47, 0, 111, 108, 108,
-			121, 3, 107, 114, 55, 37, 0, 117, 109, 118, 101, 101, 3, 107, 114, 65, 84, 37, 12, 0, 117, 109, 118, 101, 101, 114, 3, 107, 114, 65,
-			84, 37, 12, 114, 0, 117, 100, 115, 111, 110, 3, 107, 114, 72, 89, 114, 50, 0, 101, 114, 98, 8, 2, 32, 3, 107, 118, 12, 71, 0,
-			101, 97, 114, 115, 116, 8, 3, 107, 118, 89, 47, 0, 101, 105, 109, 3, 107, 120, 65, 0, 101, 114, 99, 117, 108, 101, 8, 3, 109, 34,
-			49, 6, 116, 55, 0, 7, 6, 105, 0, 4, 1, 110, 101, 103, 110, 105, 2, 195, 184, 114, 3, 0, 4, 1, 116, 2, 195, 184, 115, 3,
-			0, 4, 1, 117, 106, 2, 99, 101, 3, 0, 1, 118, 2, 110, 100, 114, 105, 107, 12, 3, 0, 107, 1, 21, 2, 101, 114, 28, 33, 12,
-			12, 3, 2, 37, 49, 0, 4, 1, 103, 101, 114, 116, 115, 109, 105, 104, 2, 109, 115, 3, 6, 36, 0, 1, 107, 121, 114, 2, 110, 100,
-			0, 1, 114, 101, 2, 110, 100, 114, 0, 1, 114, 121, 98, 97, 108, 2, 110, 116, 0, 1, 115, 116, 101, 108, 2, 110, 100, 105, 103, 0,
-			8, 108, 121, 99, 2, 110, 100, 0, 8, 114, 116, 115, 105, 100, 2, 107, 116, 0, 8, 115, 98, 97, 2, 110, 116, 0, 8, 116, 115, 101,
-			118, 2, 110, 100, 105, 0, 8, 116, 115, 110, 105, 2, 110, 107, 116, 0, 110, 100, 101, 1, 10, 2, 28, 33, 3, 6, 36, 50, 13, 0,
-			110, 103, 1, 109, 111, 100, 2, 111, 3, 6, 36, 50, 81, 0, 110, 100, 101, 1, 10, 2, 114, 28, 33, 3, 6, 36, 50, 114, 0, 108,
-			1, 116, 115, 97, 112, 10, 2, 28, 33, 12, 12, 12, 12, 3, 6, 36, 55, 0, 4, 1, 100, 111, 115, 111, 114, 112, 3, 6, 37, 0,
-			1, 100, 114, 166, 195, 118, 0, 1, 100, 117, 111, 104, 2, 110, 105, 0, 1, 102, 108, 121, 115, 2, 100, 101, 0, 1, 103, 105, 115, 107,
-			101, 2, 98, 101, 108, 0, 1, 103, 110, 117, 102, 2, 98, 101, 108, 0, 1, 104, 97, 116, 2, 116, 105, 0, 1, 104, 97, 119, 115, 2,
-			108, 105, 0, 1, 107, 2, 101, 116, 12, 0, 1, 108, 101, 98, 111, 2, 115, 107, 0, 1, 108, 105, 102, 2, 115, 116, 0, 1, 108, 108,
-			105, 99, 105, 112, 109, 97, 2, 110, 0, 1, 108, 111, 98, 2, 118, 105, 97, 0, 1, 108, 111, 115, 115, 117, 109, 2, 110, 105, 0, 1,
-			109, 10, 2, 28, 33, 0, 1, 109, 97, 2, 103, 111, 0, 1, 109, 97, 18, 75, 2, 108, 108, 97, 0, 1, 109, 97, 107, 2, 108, 108,
-			101, 0, 1, 109, 105, 2, 100, 108, 101, 114, 116, 105, 100, 0, 1, 110, 97, 112, 109, 97, 107, 2, 108, 101, 0, 1, 110, 101, 112, 2,
-			98, 101, 108, 0, 1, 110, 111, 112, 115, 105, 100, 2, 98, 101, 108, 0, 1, 112, 115, 97, 2, 99, 0, 1, 114, 10, 2, 101, 116, 28,
-			33, 0, 1, 114, 97, 109, 2, 97, 0, 1, 114, 97, 112, 2, 115, 0, 1, 114, 97, 116, 2, 102, 0, 1, 114, 100, 97, 109, 2, 100,
-			0, 1, 114, 100, 101, 122, 110, 101, 98, 2, 110, 0, 1, 114, 101, 104, 115, 2, 102, 0, 1, 114, 101, 118, 111, 116, 110, 105, 114, 98,
-			2, 108, 116, 101, 0, 1, 114, 105, 112, 115, 97, 2, 110, 0, 1, 114, 110, 101, 104, 2, 118, 101, 110, 100, 101, 0, 1, 114, 114, 111,
-			104, 2, 98, 101, 108, 0, 1, 115, 10, 2, 28, 33, 0, 1, 115, 97, 103, 97, 109, 0, 1, 115, 97, 107, 2, 110, 111, 0, 1, 115,
-			105, 118, 2, 98, 101, 108, 0, 1, 115, 107, 101, 108, 102, 2, 98, 101, 108, 0, 1, 115, 108, 105, 116, 2, 100, 101, 0, 1, 115, 110,
-			101, 115, 2, 98, 101, 108, 0, 1, 115, 114, 101, 118, 101, 114, 2, 98, 101, 108, 0, 1, 115, 114, 101, 118, 101, 114, 114, 105, 2, 98,
-			101, 108, 0, 1, 115, 115, 105, 115, 115, 105, 109, 2, 112, 112, 105, 0, 1, 115, 117, 97, 108, 112, 2, 98, 101, 108, 0, 1, 116, 97,
-			112, 109, 111, 107, 2, 98, 101, 108, 0, 1, 116, 107, 101, 102, 114, 101, 112, 2, 98, 101, 108, 0, 1, 116, 114, 101, 118, 110, 111, 107,
-			2, 98, 101, 108, 0, 1, 116, 114, 111, 115, 2, 101, 0, 1, 116, 115, 101, 103, 103, 117, 115, 2, 98, 101, 108, 0, 1, 116, 120, 105,
-			115, 2, 110, 115, 107, 0, 1, 118, 101, 114, 114, 105, 112, 115, 2, 112, 0, 8, 98, 105, 108, 97, 0, 8, 98, 108, 97, 2, 110, 111,
-			0, 8, 98, 111, 102, 0, 8, 99, 110, 97, 114, 102, 2, 115, 99, 111, 0, 8, 99, 110, 105, 114, 112, 2, 112, 0, 8, 99, 110, 111,
-			107, 2, 115, 0, 8, 99, 114, 101, 115, 107, 101, 2, 116, 115, 0, 8, 99, 166, 195, 114, 112, 2, 115, 0, 8, 100, 97, 114, 2, 115,
-			101, 0, 8, 100, 101, 98, 98, 97, 0, 8, 100, 101, 102, 102, 117, 109, 2, 115, 101, 0, 8, 100, 105, 102, 114, 101, 112, 0, 8, 100,
-			110, 97, 98, 2, 116, 0, 8, 100, 110, 97, 107, 115, 114, 97, 109, 2, 115, 0, 8, 100, 111, 107, 111, 114, 107, 2, 108, 108, 0, 8,
-			100, 111, 108, 101, 109, 0, 8, 100, 111, 114, 97, 112, 0, 8, 100, 111, 115, 112, 97, 114, 0, 8, 100, 166, 195, 112, 111, 116, 114, 111,
-			0, 8, 101, 114, 2, 115, 116, 101, 114, 0, 8, 102, 105, 99, 117, 114, 107, 2, 107, 115, 0, 8, 103, 97, 109, 2, 32, 0, 8, 103,
-			97, 109, 2, 101, 110, 32, 0, 8, 103, 97, 109, 2, 115, 116, 101, 114, 0, 8, 107, 114, 97, 109, 2, 115, 101, 0, 8, 107, 115, 97,
-			109, 2, 110, 0, 8, 108, 97, 103, 101, 109, 111, 114, 107, 97, 0, 8, 108, 97, 107, 2, 98, 101, 114, 0, 8, 108, 97, 109, 111, 110,
-			97, 0, 8, 108, 100, 101, 109, 2, 100, 101, 110, 104, 101, 100, 0, 8, 108, 101, 102, 102, 97, 116, 115, 0, 8, 108, 101, 116, 97, 108,
-			105, 102, 0, 8, 108, 102, 102, 117, 115, 0, 8, 108, 102, 110, 111, 107, 2, 107, 116, 0, 8, 108, 105, 102, 111, 100, 166, 195, 112, 0,
-			8, 108, 105, 102, 111, 105, 108, 98, 105, 98, 0, 8, 108, 105, 102, 111, 109, 111, 104, 0, 8, 108, 105, 102, 111, 111, 122, 0, 8, 108,
-			105, 102, 111, 114, 101, 116, 101, 104, 0, 8, 108, 105, 102, 111, 114, 107, 101, 110, 0, 8, 108, 105, 109, 2, 116, 115, 0, 8, 108, 108,
-			101, 99, 110, 97, 107, 0, 8, 108, 111, 2, 118, 101, 110, 0, 8, 108, 111, 2, 118, 105, 97, 0, 8, 108, 111, 107, 110, 97, 108, 101,
-			109, 0, 8, 108, 111, 115, 2, 100, 0, 8, 108, 115, 117, 109, 2, 109, 0, 8, 108, 117, 107, 2, 115, 115, 0, 8, 109, 97, 114, 121,
-			112, 2, 100, 0, 8, 109, 101, 114, 2, 115, 0, 8, 110, 105, 109, 2, 115, 116, 101, 114, 0, 8, 111, 114, 101, 116, 115, 97, 2, 100,
-			101, 0, 8, 112, 97, 107, 2, 116, 101, 108, 0, 8, 112, 97, 107, 2, 116, 108, 0, 8, 112, 97, 112, 2, 114, 0, 8, 112, 97, 114,
-			101, 116, 0, 8, 112, 97, 116, 2, 114, 0, 8, 112, 101, 107, 115, 97, 109, 0, 8, 112, 111, 107, 0, 8, 112, 111, 107, 115, 101, 108,
-			101, 116, 0, 8, 112, 111, 107, 115, 111, 107, 110, 111, 114, 98, 0, 8, 112, 111, 107, 115, 111, 108, 121, 116, 107, 97, 100, 0, 8, 112,
-			111, 107, 115, 111, 114, 116, 115, 97, 103, 0, 8, 112, 111, 107, 115, 111, 116, 101, 116, 115, 0, 8, 112, 111, 107, 115, 111, 116, 107, 101,
-			114, 0, 8, 112, 111, 107, 115, 111, 116, 111, 0, 8, 112, 111, 114, 116, 110, 97, 108, 105, 102, 0, 8, 112, 111, 114, 116, 110, 97, 115,
-			105, 109, 0, 8, 112, 111, 114, 116, 110, 101, 0, 8, 112, 111, 116, 111, 115, 105, 0, 8, 112, 111, 116, 117, 0, 8, 112, 111, 116, 117,
-			0, 8, 112, 121, 116, 111, 101, 114, 101, 116, 115, 0, 8, 112, 121, 116, 111, 101, 114, 114, 101, 117, 103, 97, 100, 0, 8, 112, 121, 116,
-			111, 110, 97, 118, 108, 97, 103, 0, 8, 112, 121, 116, 111, 110, 111, 109, 0, 8, 112, 121, 116, 111, 116, 105, 108, 0, 8, 112, 121, 116,
-			111, 116, 117, 97, 0, 8, 114, 101, 118, 121, 116, 0, 8, 114, 111, 103, 101, 116, 97, 107, 0, 8, 114, 111, 103, 108, 97, 2, 116, 109,
-			101, 0, 8, 114, 111, 109, 166, 195, 104, 2, 100, 0, 8, 114, 112, 101, 114, 2, 115, 101, 0, 8, 114, 112, 101, 114, 116, 110, 101, 2,
-			115, 101, 0, 8, 114, 116, 110, 101, 118, 2, 107, 0, 8, 115, 108, 101, 118, 2, 103, 110, 0, 8, 115, 115, 101, 109, 2, 97, 115, 0,
-			8, 116, 105, 103, 101, 108, 2, 109, 0, 8, 116, 105, 108, 111, 112, 0, 8, 116, 105, 108, 111, 112, 0, 8, 116, 110, 105, 2, 109, 0,
-			8, 116, 114, 97, 2, 107, 0, 8, 116, 114, 97, 109, 2, 110, 105, 0, 8, 116, 114, 97, 112, 2, 115, 107, 0, 8, 116, 115, 101, 116,
-			2, 107, 101, 108, 0, 8, 116, 115, 101, 116, 2, 107, 108, 0, 8, 116, 115, 117, 106, 2, 116, 115, 0, 8, 118, 97, 2, 115, 0, 8,
-			118, 97, 114, 103, 2, 100, 0, 8, 118, 101, 108, 111, 109, 2, 116, 0, 8, 118, 105, 99, 2, 108, 0, 101, 1, 116, 114, 111, 115, 2,
-			32, 0, 115, 1, 109, 101, 114, 2, 32, 0, 101, 8, 118, 108, 97, 115, 3, 6, 37, 12, 0, 103, 101, 8, 108, 100, 101, 118, 3, 6,
-			37, 13, 0, 103, 101, 118, 101, 108, 1, 108, 108, 97, 3, 6, 37, 13, 84, 109, 55, 0, 108, 1, 10, 2, 28, 33, 12, 12, 12, 12,
-			3, 6, 37, 55, 0, 4, 108, 108, 101, 1, 114, 100, 97, 107, 115, 101, 3, 6, 37, 55, 57, 108, 0, 108, 108, 101, 1, 114, 100, 97,
-			112, 115, 101, 0, 108, 108, 101, 1, 114, 100, 97, 118, 107, 0, 108, 108, 101, 1, 116, 115, 97, 98, 0, 103, 111, 110, 101, 1, 116, 110,
-			97, 3, 6, 37, 81, 39, 50, 13, 0, 115, 1, 117, 111, 108, 2, 101, 3, 6, 37, 89, 0, 115, 109, 101, 1, 10, 2, 114, 28, 33,
-			3, 6, 37, 89, 65, 114, 0, 111, 110, 1, 114, 111, 3, 6, 37, 114, 50, 0, 114, 116, 117, 97, 108, 1, 118, 2, 32, 114, 101, 97,
-			108, 105, 116, 121, 3, 6, 108, 76, 40, 20, 13, 59, 0, 1, 114, 107, 115, 10, 2, 112, 116, 3, 6, 109, 0, 4, 8, 114, 107, 109,
-			111, 2, 110, 103, 3, 7, 36, 0, 107, 1, 114, 10, 2, 107, 28, 33, 0, 107, 1, 114, 21, 2, 107, 28, 33, 12, 12, 12, 12, 0,
-			107, 1, 116, 115, 101, 21, 2, 107, 28, 33, 12, 12, 12, 0, 107, 1, 114, 10, 2, 28, 33, 12, 12, 3, 7, 36, 49, 0, 4, 1,
-			116, 10, 2, 28, 33, 12, 3, 7, 37, 0, 1, 116, 110, 101, 108, 97, 118, 2, 110, 111, 0, 8, 108, 101, 2, 116, 101, 0, 8, 116,
-			114, 101, 112, 115, 107, 101, 2, 115, 101, 0, 107, 1, 10, 2, 107, 28, 33, 12, 0, 107, 1, 21, 2, 107, 28, 33, 12, 12, 12, 0,
-			107, 1, 116, 115, 97, 21, 2, 107, 28, 33, 12, 12, 12, 0, 4, 107, 1, 21, 2, 28, 33, 12, 12, 12, 3, 7, 37, 49, 0, 107,
-			1, 114, 111, 10, 2, 28, 33, 12, 12, 0, 100, 1, 10, 2, 28, 33, 3, 7, 37, 86, 0, 115, 109, 101, 1, 10, 2, 28, 33, 3,
-			7, 37, 89, 65, 13, 0, 1, 114, 10, 2, 117, 109, 28, 33, 3, 8, 8, 37, 0, 103, 1, 109, 101, 112, 108, 166, 195, 106, 104, 100,
-			117, 103, 3, 8, 35, 57, 0, 4, 1, 109, 10, 2, 115, 107, 28, 33, 3, 8, 37, 0, 1, 114, 111, 108, 97, 107, 2, 117, 115, 0,
-			101, 1, 10, 2, 114, 101, 28, 33, 3, 8, 37, 7, 36, 0, 101, 1, 10, 2, 108, 105, 118, 28, 33, 3, 8, 37, 13, 0, 101, 110,
-			1, 10, 2, 28, 33, 3, 8, 37, 13, 50, 0, 116, 117, 109, 1, 21, 2, 109, 28, 33, 3, 8, 37, 47, 113, 0, 116, 117, 109, 1,
-			21, 2, 28, 33, 3, 8, 37, 47, 113, 65, 0, 107, 1, 21, 2, 101, 114, 101, 110, 28, 33, 12, 12, 3, 8, 37, 49, 0, 4, 107,
-			101, 114, 1, 10, 2, 28, 33, 12, 3, 8, 37, 49, 114, 0, 107, 101, 114, 1, 109, 10, 2, 101, 28, 33, 12, 12, 0, 107, 101, 114,
-			1, 110, 97, 107, 21, 2, 101, 32, 28, 33, 12, 12, 12, 0, 107, 101, 114, 1, 114, 116, 10, 2, 101, 28, 33, 12, 0, 107, 101, 114,
-			1, 116, 10, 2, 101, 28, 33, 12, 0, 4, 115, 107, 1, 10, 2, 32, 28, 33, 3, 8, 37, 89, 81, 0, 115, 107, 1, 10, 2, 101,
-			28, 33, 0, 115, 107, 1, 10, 2, 116, 28, 33, 0, 101, 1, 10, 2, 28, 33, 3, 8, 37, 108, 0, 117, 109, 1, 10, 2, 109, 28,
-			33, 3, 8, 37, 113, 0, 117, 109, 1, 10, 2, 28, 33, 3, 8, 37, 113, 65, 0, 101, 1, 115, 10, 2, 28, 33, 3, 8, 57, 108,
-			0, 4, 101, 1, 10, 2, 114, 28, 33, 3, 8, 57, 114, 0, 101, 114, 1, 108, 97, 114, 116, 115, 117, 97, 0, 109, 112, 114, 111, 109,
-			112, 116, 117, 3, 21, 102, 114, 0, 116, 104, 101, 1, 108, 98, 3, 35, 12, 57, 86, 0, 103, 110, 1, 115, 101, 100, 3, 35, 37, 50,
-			0, 4, 1, 108, 115, 117, 115, 107, 117, 108, 2, 110, 101, 114, 3, 35, 57, 0, 1, 114, 2, 108, 101, 121, 0, 1, 116, 2, 109, 105,
-			110, 103, 0, 1, 116, 102, 111, 115, 2, 99, 101, 0, 2, 111, 119, 97, 0, 103, 104, 1, 104, 0, 103, 104, 1, 108, 2, 116, 101, 114,
-			0, 106, 1, 110, 2, 109, 101, 103, 101, 110, 0, 107, 101, 8, 112, 115, 3, 35, 57, 49, 0, 115, 108, 97, 110, 100, 1, 32, 103, 110,
-			111, 108, 3, 35, 57, 55, 13, 50, 72, 0, 109, 101, 1, 116, 2, 111, 117, 116, 3, 35, 57, 65, 0, 4, 109, 101, 115, 1, 114, 103,
-			3, 35, 57, 65, 89, 0, 109, 101, 115, 1, 116, 32, 107, 114, 111, 121, 32, 119, 101, 110, 0, 100, 97, 104, 111, 3, 35, 57, 72, 110,
-			107, 6, 39, 58, 0, 118, 101, 1, 108, 99, 3, 35, 57, 84, 0, 118, 97, 110, 104, 111, 101, 3, 35, 57, 84, 13, 50, 107, 6, 39,
-			58, 0, 114, 101, 1, 119, 3, 35, 57, 114, 0, 114, 111, 110, 8, 2, 32, 3, 35, 57, 114, 50, 0, 4, 1, 17, 67, 2, 109, 17,
-			67, 3, 36, 0, 1, 17, 67, 2, 109, 18, 71, 0, 1, 17, 67, 2, 110, 103, 12, 0, 1, 17, 67, 2, 110, 107, 0, 1, 18, 67,
-			2, 112, 0, 1, 18, 67, 2, 112, 112, 0, 1, 18, 68, 2, 18, 66, 11, 12, 0, 1, 18, 68, 2, 107, 0, 1, 18, 71, 2, 107,
-			0, 1, 18, 71, 2, 108, 108, 101, 0, 1, 18, 72, 2, 102, 116, 101, 0, 1, 18, 73, 2, 108, 108, 0, 1, 18, 74, 2, 18, 68,
-			11, 97, 12, 0, 1, 18, 74, 2, 107, 115, 0, 1, 18, 74, 2, 112, 112, 0, 1, 18, 74, 2, 120, 0, 1, 98, 2, 116, 114, 101,
-			0, 1, 98, 2, 116, 116, 101, 114, 0, 1, 100, 2, 110, 103, 111, 0, 1, 100, 2, 115, 107, 0, 1, 102, 2, 18, 73, 12, 0, 1,
-			102, 2, 107, 115, 0, 1, 102, 2, 110, 108, 97, 110, 100, 0, 1, 102, 2, 110, 116, 101, 32, 0, 1, 102, 2, 120, 0, 1, 104, 2,
-			109, 12, 0, 1, 104, 2, 110, 100, 0, 1, 107, 2, 18, 74, 12, 12, 0, 1, 107, 2, 109, 115, 101, 0, 1, 107, 111, 109, 115, 2,
-			110, 103, 0, 1, 107, 115, 2, 108, 12, 12, 0, 1, 107, 115, 2, 110, 0, 1, 108, 2, 18, 66, 0, 1, 108, 2, 18, 73, 0, 1,
-			108, 2, 108, 108, 97, 0, 1, 108, 2, 110, 110, 101, 100, 0, 1, 108, 2, 110, 115, 0, 1, 108, 2, 110, 116, 0, 1, 108, 17, 67,
-			2, 112, 0, 1, 108, 18, 73, 2, 18, 72, 0, 1, 108, 103, 2, 109, 0, 1, 108, 107, 2, 107, 32, 0, 1, 108, 112, 2, 103, 116,
-			12, 0, 1, 108, 115, 2, 107, 0, 1, 109, 2, 107, 108, 101, 114, 0, 1, 109, 2, 115, 116, 101, 0, 1, 110, 2, 112, 0, 1, 110,
-			2, 115, 115, 101, 0, 1, 110, 2, 116, 116, 101, 110, 0, 1, 110, 107, 2, 112, 0, 1, 112, 2, 108, 114, 0, 1, 112, 2, 115, 115,
-			101, 0, 1, 112, 115, 2, 100, 115, 0, 1, 112, 115, 2, 108, 0, 1, 114, 2, 18, 66, 11, 0, 1, 114, 2, 18, 73, 12, 0, 1,
-			114, 2, 18, 75, 0, 1, 114, 2, 102, 0, 1, 114, 2, 103, 116, 105, 0, 1, 114, 17, 67, 2, 108, 108, 0, 1, 114, 17, 67, 2,
-			109, 17, 67, 0, 1, 114, 18, 71, 2, 110, 116, 0, 1, 114, 100, 2, 115, 116, 105, 103, 0, 1, 114, 102, 2, 115, 116, 101, 100, 101,
-			32, 0, 1, 114, 102, 2, 115, 116, 101, 100, 101, 115, 32, 0, 1, 114, 103, 2, 109, 0, 1, 114, 107, 2, 99, 107, 101, 116, 0, 1,
-			114, 107, 2, 115, 116, 105, 32, 0, 1, 114, 107, 2, 115, 116, 117, 115, 0, 1, 114, 112, 2, 110, 0, 1, 114, 118, 2, 115, 115, 0,
-			1, 115, 2, 18, 66, 18, 72, 0, 1, 115, 2, 100, 32, 0, 1, 115, 2, 100, 100, 101, 0, 1, 115, 2, 100, 110, 105, 110, 103, 0,
-			1, 115, 2, 107, 17, 67, 0, 1, 115, 2, 108, 107, 0, 1, 115, 2, 110, 107, 12, 12, 0, 1, 115, 2, 112, 112, 0, 1, 116, 2,
-			18, 66, 12, 0, 1, 116, 2, 103, 103, 12, 0, 1, 116, 2, 108, 0, 1, 116, 115, 2, 108, 32, 104, 97, 109, 0, 1, 116, 115, 2,
-			108, 32, 111, 112, 32, 0, 1, 116, 115, 2, 108, 108, 105, 110, 103, 12, 12, 0, 1, 116, 115, 100, 110, 166, 195, 116, 2, 107, 12, 0,
-			1, 116, 115, 101, 98, 2, 107, 12, 12, 0, 1, 116, 115, 101, 98, 2, 108, 0, 1, 116, 115, 101, 98, 166, 195, 108, 2, 102, 116, 0,
-			1, 116, 115, 101, 100, 97, 112, 115, 2, 107, 0, 1, 116, 115, 101, 103, 103, 121, 109, 2, 107, 0, 1, 116, 115, 101, 108, 165, 195, 110,
-			2, 107, 12, 0, 1, 116, 115, 101, 110, 103, 101, 116, 2, 102, 116, 0, 1, 116, 115, 101, 114, 111, 102, 2, 108, 0, 1, 116, 115, 103,
-			97, 108, 115, 2, 102, 116, 0, 1, 116, 115, 105, 98, 2, 107, 12, 12, 0, 1, 116, 115, 107, 166, 195, 108, 98, 2, 102, 116, 0, 1,
-			116, 115, 109, 105, 108, 2, 102, 116, 0, 1, 116, 115, 115, 116, 110, 97, 121, 108, 98, 2, 102, 116, 0, 1, 116, 115, 116, 110, 97, 121,
-			108, 98, 2, 102, 116, 0, 1, 116, 115, 118, 105, 110, 107, 2, 107, 0, 1, 118, 2, 18, 66, 0, 1, 118, 2, 18, 66, 17, 67, 12,
-			12, 0, 1, 118, 2, 108, 32, 12, 0, 1, 118, 2, 110, 116, 101, 114, 0, 1, 118, 2, 110, 116, 114, 101, 0, 1, 118, 2, 115, 32,
-			103, 114, 97, 100, 0, 1, 118, 2, 115, 104, 0, 1, 118, 2, 115, 107, 12, 0, 1, 118, 2, 115, 110, 101, 0, 1, 118, 2, 115, 115,
-			0, 1, 118, 2, 115, 116, 32, 105, 107, 107, 101, 0, 1, 118, 18, 72, 2, 115, 116, 12, 0, 1, 118, 32, 101, 107, 115, 110, 97, 103,
-			2, 115, 116, 32, 0, 1, 118, 97, 106, 2, 115, 116, 0, 1, 118, 101, 103, 2, 110, 115, 116, 0, 1, 118, 104, 2, 108, 107, 12, 0,
-			1, 118, 111, 106, 2, 115, 116, 0, 1, 118, 115, 2, 18, 74, 17, 67, 0, 1, 119, 116, 2, 115, 116, 0, 2, 107, 107, 101, 0, 2,
-			109, 112, 0, 2, 109, 112, 111, 0, 2, 110, 99, 0, 2, 110, 100, 0, 2, 110, 102, 97, 110, 116, 0, 2, 110, 110, 0, 2, 110, 110,
-			101, 0, 2, 110, 115, 0, 8, 2, 110, 12, 0, 8, 102, 2, 107, 32, 0, 8, 108, 2, 100, 116, 32, 0, 8, 109, 2, 115, 116, 32,
-			0, 8, 110, 2, 18, 75, 0, 8, 114, 100, 2, 108, 0, 8, 116, 2, 103, 32, 12, 0, 8, 116, 2, 110, 0, 8, 116, 2, 115, 107,
-			101, 32, 0, 8, 118, 2, 102, 116, 32, 0, 8, 118, 2, 115, 116, 32, 0, 100, 1, 118, 2, 115, 116, 0, 100, 8, 109, 2, 116, 0,
-			1, 118, 2, 115, 116, 110, 111, 107, 3, 36, 4, 0, 107, 97, 100, 101, 108, 108, 101, 1, 114, 102, 3, 36, 49, 110, 72, 6, 109, 55,
-			108, 0, 107, 97, 100, 101, 108, 108, 101, 114, 1, 114, 102, 3, 36, 49, 110, 72, 6, 109, 55, 114, 0, 4, 110, 100, 1, 102, 2, 101,
-			108, 195, 184, 110, 3, 36, 50, 0, 110, 100, 2, 101, 108, 115, 101, 12, 0, 110, 117, 112, 1, 112, 3, 36, 50, 6, 114, 48, 0, 110,
-			103, 111, 1, 98, 3, 36, 50, 81, 39, 0, 110, 115, 105, 100, 101, 8, 2, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 3, 36,
-			50, 89, 35, 57, 72, 0, 110, 115, 105, 100, 101, 114, 8, 3, 36, 50, 89, 35, 57, 72, 114, 0, 110, 115, 116, 105, 116, 117, 116, 105,
-			111, 110, 8, 3, 36, 50, 89, 47, 37, 47, 40, 91, 6, 39, 50, 0, 110, 115, 116, 105, 116, 117, 116, 105, 111, 110, 3, 36, 50, 89,
-			47, 37, 47, 40, 91, 39, 50, 0, 109, 112, 111, 116, 101, 110, 3, 36, 65, 48, 39, 47, 109, 50, 0, 109, 97, 108, 97, 121, 97, 1,
-			104, 3, 36, 65, 110, 55, 6, 35, 57, 110, 0, 103, 1, 114, 2, 110, 105, 110, 103, 3, 36, 81, 0, 107, 115, 101, 116, 1, 107, 2,
-			32, 3, 36, 81, 89, 13, 86, 0, 115, 1, 112, 2, 32, 3, 36, 89, 0, 115, 105, 107, 1, 114, 2, 101, 3, 36, 89, 37, 49, 0,
-			4, 3, 37, 0, 1, 18, 67, 2, 18, 71, 101, 0, 1, 18, 67, 2, 18, 71, 114, 101, 0, 1, 18, 68, 2, 18, 75, 97, 0, 1,
-			18, 68, 2, 107, 18, 69, 0, 1, 18, 68, 2, 107, 101, 0, 1, 18, 71, 2, 107, 101, 0, 1, 98, 2, 107, 105, 110, 105, 0, 1,
-			98, 2, 107, 117, 98, 101, 0, 1, 98, 2, 108, 108, 101, 32, 12, 0, 1, 98, 2, 108, 108, 101, 110, 32, 12, 0, 1, 98, 2, 108,
-			108, 101, 114, 32, 12, 0, 1, 98, 2, 108, 108, 101, 116, 12, 0, 1, 98, 2, 112, 12, 0, 1, 99, 2, 110, 110, 0, 1, 100, 2,
-			107, 116, 0, 1, 100, 2, 115, 18, 75, 97, 0, 1, 100, 2, 115, 107, 101, 116, 116, 0, 1, 100, 2, 115, 107, 111, 0, 1, 100, 2,
-			115, 107, 114, 101, 112, 97, 110, 115, 0, 1, 100, 2, 115, 107, 114, 101, 116, 0, 1, 100, 2, 115, 107, 114, 105, 109, 105, 0, 1, 100,
-			2, 115, 107, 117, 0, 1, 100, 2, 115, 107, 118, 97, 0, 1, 100, 110, 105, 2, 115, 107, 0, 1, 100, 114, 111, 106, 2, 115, 107, 0,
-			1, 102, 2, 107, 17, 67, 18, 69, 0, 1, 102, 2, 110, 107, 117, 108, 0, 1, 102, 2, 110, 107, 195, 166, 109, 0, 1, 102, 2, 110,
-			115, 107, 121, 0, 1, 102, 97, 114, 103, 2, 115, 107, 0, 1, 102, 97, 114, 116, 2, 107, 0, 1, 102, 110, 111, 107, 2, 115, 107, 101,
-			114, 0, 1, 102, 110, 111, 107, 2, 115, 107, 101, 114, 101, 0, 1, 104, 2, 110, 0, 1, 104, 99, 2, 107, 12, 0, 1, 107, 2, 12,
-			12, 0, 1, 107, 2, 18, 74, 18, 76, 12, 12, 0, 1, 107, 2, 109, 110, 105, 110, 103, 12, 0, 1, 107, 2, 115, 116, 101, 12, 0,
-			1, 107, 105, 98, 2, 110, 105, 0, 1, 107, 115, 2, 17, 67, 116, 0, 1, 107, 115, 2, 107, 12, 0, 1, 107, 115, 2, 108, 105, 102,
-			116, 12, 0, 1, 107, 115, 2, 108, 195, 184, 98, 12, 12, 0, 1, 107, 115, 2, 109, 111, 12, 0, 1, 107, 115, 21, 2, 108, 100, 12,
-			12, 0, 1, 108, 2, 107, 118, 12, 0, 1, 108, 2, 109, 110, 105, 12, 0, 1, 108, 2, 115, 107, 0, 1, 108, 97, 105, 99, 101, 112,
-			115, 2, 115, 116, 0, 1, 108, 98, 117, 112, 0, 1, 108, 105, 98, 2, 115, 0, 1, 108, 107, 2, 115, 116, 114, 0, 1, 108, 107, 121,
-			99, 21, 2, 115, 116, 0, 1, 108, 112, 2, 18, 66, 18, 76, 12, 0, 1, 108, 112, 2, 107, 0, 1, 108, 114, 111, 102, 2, 115, 0,
-			1, 108, 115, 2, 109, 0, 1, 109, 2, 107, 115, 116, 117, 114, 0, 1, 109, 2, 115, 116, 97, 110, 107, 101, 0, 1, 110, 2, 99, 104,
-			101, 0, 1, 110, 2, 107, 18, 69, 0, 1, 110, 100, 108, 105, 118, 2, 115, 0, 1, 110, 101, 108, 2, 110, 0, 1, 110, 101, 112, 2,
-			115, 0, 1, 110, 105, 108, 107, 2, 107, 0, 1, 110, 107, 2, 118, 0, 1, 110, 107, 101, 116, 2, 107, 0, 1, 112, 2, 110, 115, 101,
-			108, 0, 1, 112, 2, 110, 115, 108, 101, 114, 0, 1, 112, 2, 112, 12, 0, 1, 112, 114, 97, 104, 2, 107, 115, 0, 1, 112, 115, 2,
-			108, 100, 0, 1, 114, 2, 18, 73, 18, 69, 12, 0, 1, 114, 2, 18, 75, 17, 67, 18, 69, 0, 1, 114, 2, 18, 75, 18, 69, 0,
-			1, 114, 2, 18, 75, 18, 76, 0, 1, 114, 2, 99, 101, 0, 1, 114, 2, 115, 116, 105, 107, 12, 0, 1, 114, 10, 2, 115, 107, 0,
-			1, 114, 18, 66, 2, 108, 108, 0, 1, 114, 101, 116, 110, 97, 102, 110, 105, 0, 1, 114, 102, 2, 102, 12, 0, 1, 114, 102, 2, 103,
-			0, 1, 114, 102, 2, 107, 101, 110, 0, 1, 114, 102, 2, 107, 118, 97, 114, 116, 101, 114, 0, 1, 114, 102, 2, 115, 116, 97, 100, 0,
-			1, 114, 102, 2, 115, 116, 101, 100, 0, 1, 114, 103, 2, 18, 73, 12, 0, 1, 114, 112, 2, 109, 12, 0, 1, 114, 112, 2, 115, 0,
-			1, 114, 116, 2, 18, 73, 12, 0, 1, 114, 116, 2, 108, 108, 0, 1, 115, 101, 98, 2, 100, 100, 101, 0, 1, 115, 117, 109, 2, 107,
-			0, 1, 116, 2, 100, 12, 0, 1, 116, 2, 107, 97, 12, 0, 1, 116, 2, 110, 18, 76, 0, 1, 116, 2, 110, 110, 105, 116, 117, 115,
-			0, 1, 116, 21, 2, 107, 32, 12, 12, 0, 1, 116, 105, 108, 111, 112, 2, 107, 0, 1, 116, 107, 101, 106, 111, 114, 112, 2, 108, 0,
-			1, 116, 110, 97, 0, 1, 116, 110, 101, 118, 2, 108, 0, 1, 116, 114, 97, 2, 107, 0, 1, 116, 114, 97, 112, 0, 1, 116, 115, 2,
-			108, 32, 111, 118, 101, 114, 0, 1, 116, 115, 2, 108, 97, 114, 116, 0, 1, 116, 115, 2, 108, 102, 117, 108, 100, 0, 1, 116, 115, 17,
-			65, 2, 108, 32, 0, 1, 116, 115, 32, 101, 100, 118, 97, 104, 2, 108, 32, 0, 1, 116, 115, 32, 101, 114, 101, 109, 2, 108, 32, 111,
-			118, 101, 114, 32, 0, 1, 116, 115, 32, 110, 101, 2, 108, 32, 0, 1, 116, 115, 32, 114, 97, 104, 2, 108, 32, 0, 1, 116, 115, 32,
-			114, 97, 118, 2, 108, 32, 111, 118, 101, 114, 32, 0, 1, 116, 115, 32, 114, 101, 2, 108, 32, 111, 118, 101, 114, 32, 0, 1, 116, 115,
-			97, 108, 112, 2, 18, 75, 0, 1, 116, 115, 115, 118, 105, 108, 2, 108, 0, 1, 116, 117, 98, 2, 107, 0, 1, 118, 2, 18, 66, 97,
-			0, 1, 118, 2, 18, 75, 105, 0, 1, 118, 2, 98, 12, 0, 1, 118, 2, 99, 107, 0, 1, 118, 2, 107, 116, 18, 69, 12, 12, 0,
-			1, 118, 2, 110, 103, 108, 97, 115, 12, 12, 0, 1, 118, 2, 110, 103, 195, 165, 114, 100, 12, 0, 1, 118, 2, 110, 107, 111, 114, 116,
-			0, 1, 118, 2, 110, 107, 195, 166, 108, 100, 12, 0, 1, 118, 2, 115, 116, 101, 12, 0, 1, 118, 101, 98, 2, 115, 0, 1, 118, 104,
-			2, 108, 12, 0, 1, 118, 107, 2, 18, 72, 12, 12, 0, 1, 118, 115, 2, 110, 115, 0, 1, 118, 116, 114, 111, 98, 2, 115, 0, 1,
-			118, 184, 195, 104, 2, 115, 107, 0, 2, 17, 67, 11, 0, 2, 17, 67, 18, 76, 0, 2, 17, 67, 116, 0, 2, 18, 68, 0, 2, 18,
-			74, 0, 2, 99, 104, 0, 2, 99, 107, 0, 2, 103, 103, 106, 111, 12, 12, 0, 2, 103, 103, 195, 184, 114, 12, 12, 0, 2, 103, 110,
-			0, 2, 107, 0, 2, 110, 117, 0, 2, 112, 0, 2, 114, 17, 67, 0, 2, 114, 115, 0, 2, 115, 0, 2, 116, 0, 2, 118, 0, 8,
-			2, 110, 105, 0, 8, 108, 2, 100, 116, 32, 110, 101, 100, 101, 114, 108, 97, 103, 0, 8, 108, 2, 100, 116, 32, 111, 118, 101, 114, 108,
-			97, 115, 116, 0, 8, 108, 2, 100, 116, 32, 115, 107, 97, 100, 101, 0, 8, 108, 2, 100, 116, 32, 117, 110, 100, 101, 114, 0, 8, 108,
-			107, 2, 115, 116, 101, 114, 0, 8, 116, 115, 2, 108, 32, 111, 118, 101, 114, 32, 100, 101, 17, 67, 0, 8, 116, 115, 2, 108, 32, 111,
-			118, 101, 114, 32, 104, 97, 109, 0, 8, 116, 115, 2, 108, 32, 111, 118, 101, 114, 32, 104, 101, 110, 100, 101, 0, 8, 116, 115, 32, 100,
-			101, 109, 2, 108, 32, 0, 8, 116, 115, 32, 110, 105, 100, 2, 108, 32, 0, 8, 116, 115, 32, 110, 105, 109, 2, 108, 32, 0, 8, 116,
-			115, 32, 110, 105, 115, 2, 108, 32, 0, 8, 116, 115, 32, 115, 101, 100, 110, 101, 104, 2, 108, 32, 0, 8, 116, 115, 32, 115, 101, 114,
-			101, 100, 2, 108, 32, 0, 8, 116, 115, 32, 115, 101, 114, 101, 106, 2, 108, 32, 0, 8, 116, 115, 32, 115, 110, 97, 104, 2, 108, 32,
-			0, 8, 116, 115, 32, 121, 110, 2, 108, 32, 0, 8, 118, 2, 115, 116, 32, 115, 105, 103, 0, 101, 1, 100, 2, 115, 101, 108, 0, 101,
-			1, 100, 2, 116, 114, 105, 99, 104, 0, 101, 1, 108, 115, 101, 108, 0, 101, 1, 110, 110, 111, 114, 0, 101, 1, 112, 2, 100, 101, 115,
-			116, 97, 108, 0, 101, 1, 112, 112, 105, 104, 0, 101, 1, 117, 111, 108, 0, 101, 8, 98, 98, 111, 114, 0, 101, 8, 110, 97, 108, 101,
-			109, 0, 101, 8, 110, 110, 97, 0, 101, 8, 115, 117, 115, 0, 101, 8, 122, 117, 115, 0, 103, 1, 100, 114, 166, 195, 118, 0, 103, 1,
-			108, 116, 110, 101, 102, 102, 111, 0, 103, 1, 114, 2, 17, 67, 0, 103, 1, 116, 2, 12, 0, 115, 1, 117, 111, 108, 0, 4, 1, 102,
-			2, 107, 115, 101, 114, 98, 97, 100, 3, 37, 6, 0, 1, 102, 2, 107, 115, 101, 114, 98, 105, 108, 108, 101, 100, 0, 1, 102, 2, 107,
-			115, 101, 114, 101, 0, 1, 102, 2, 107, 115, 101, 114, 105, 110, 103, 0, 1, 102, 2, 107, 115, 101, 114, 118, 195, 166, 115, 107, 101, 0,
-			1, 114, 18, 75, 2, 115, 116, 105, 110, 0, 101, 1, 114, 10, 2, 108, 28, 33, 3, 37, 6, 109, 0, 4, 101, 110, 1, 10, 2, 101,
-			114, 28, 33, 3, 37, 6, 109, 50, 0, 101, 110, 1, 10, 2, 115, 107, 28, 33, 0, 4, 1, 18, 73, 2, 108, 101, 12, 12, 3, 37,
-			12, 0, 1, 114, 103, 2, 109, 18, 76, 0, 1, 116, 115, 2, 108, 101, 0, 100, 101, 108, 8, 2, 32, 3, 37, 12, 86, 13, 55, 0,
-			2, 17, 67, 3, 37, 19, 0, 114, 111, 115, 104, 105, 1, 104, 2, 109, 97, 3, 37, 34, 39, 91, 6, 37, 0, 116, 101, 115, 8, 114,
-			102, 2, 32, 3, 37, 47, 0, 4, 107, 1, 17, 67, 2, 97, 110, 101, 114, 12, 12, 3, 37, 49, 0, 107, 1, 17, 67, 2, 101, 114,
-			12, 0, 107, 1, 21, 2, 97, 116, 28, 33, 12, 12, 0, 107, 1, 21, 2, 101, 116, 28, 33, 12, 12, 12, 0, 4, 107, 1, 10, 2,
-			97, 108, 115, 107, 28, 33, 12, 3, 37, 49, 6, 0, 107, 1, 21, 2, 97, 110, 116, 28, 33, 12, 0, 107, 101, 114, 1, 10, 2, 101,
-			114, 28, 33, 12, 3, 37, 49, 6, 36, 0, 4, 107, 101, 114, 1, 110, 10, 2, 101, 32, 28, 33, 12, 3, 37, 49, 6, 36, 34, 0,
-			107, 101, 114, 1, 110, 10, 2, 101, 116, 32, 28, 33, 12, 0, 107, 101, 114, 1, 110, 117, 10, 2, 28, 33, 12, 0, 107, 101, 114, 1,
-			114, 97, 107, 10, 2, 101, 28, 33, 12, 0, 103, 110, 1, 115, 2, 97, 108, 3, 37, 50, 0, 110, 116, 101, 114, 110, 97, 116, 105, 111,
-			110, 97, 108, 1, 32, 121, 116, 115, 101, 110, 109, 97, 3, 37, 50, 47, 114, 50, 6, 110, 91, 39, 50, 110, 55, 0, 4, 110, 100, 1,
-			102, 2, 101, 108, 3, 37, 50, 72, 0, 110, 100, 1, 102, 2, 121, 114, 107, 0, 110, 100, 1, 118, 2, 114, 117, 101, 0, 110, 103, 1,
-			118, 2, 117, 109, 109, 105, 3, 37, 50, 81, 0, 108, 108, 97, 100, 115, 1, 116, 115, 3, 37, 55, 6, 110, 89, 0, 108, 111, 112, 1,
-			112, 115, 3, 37, 55, 6, 114, 48, 0, 108, 108, 101, 1, 116, 114, 97, 2, 114, 105, 3, 37, 55, 13, 0, 108, 108, 1, 118, 97, 112,
-			2, 111, 3, 37, 55, 57, 0, 4, 103, 1, 108, 2, 17, 67, 3, 37, 57, 0, 103, 1, 108, 108, 101, 104, 0, 4, 98, 101, 1, 112,
-			2, 116, 195, 184, 106, 3, 37, 58, 0, 112, 1, 110, 107, 2, 116, 97, 110, 103, 0, 109, 97, 103, 101, 3, 37, 65, 37, 75, 0, 100,
-			103, 101, 1, 114, 3, 37, 75, 0, 100, 103, 101, 116, 1, 114, 98, 3, 37, 75, 37, 47, 0, 4, 103, 1, 108, 2, 105, 3, 37, 81,
-			0, 103, 1, 108, 105, 102, 2, 114, 97, 110, 0, 103, 1, 114, 102, 2, 106, 111, 0, 103, 1, 116, 115, 2, 109, 97, 0, 103, 2, 114,
-			117, 112, 112, 101, 0, 115, 1, 18, 73, 2, 12, 3, 37, 89, 0, 115, 114, 97, 101, 108, 8, 100, 2, 105, 3, 37, 89, 34, 112, 6,
-			36, 55, 0, 115, 114, 97, 101, 108, 115, 107, 3, 37, 89, 34, 112, 6, 36, 55, 89, 49, 0, 115, 114, 97, 101, 108, 101, 114, 3, 37,
-			89, 34, 112, 6, 36, 55, 114, 0, 115, 114, 97, 101, 108, 3, 37, 89, 34, 112, 12, 55, 0, 115, 105, 107, 111, 1, 114, 3, 37, 89,
-			37, 49, 39, 0, 115, 116, 101, 108, 116, 101, 110, 1, 109, 3, 37, 89, 47, 109, 55, 47, 36, 50, 0, 115, 105, 97, 110, 97, 1, 117,
-			111, 108, 3, 37, 89, 57, 6, 110, 50, 110, 0, 110, 103, 101, 1, 108, 2, 114, 105, 3, 55, 110, 68, 91, 36, 0, 4, 1, 99, 2,
-			97, 3, 57, 0, 1, 108, 2, 101, 0, 1, 110, 117, 106, 2, 111, 114, 0, 1, 115, 2, 111, 110, 0, 1, 115, 97, 2, 101, 0, 1,
-			115, 2, 97, 114, 3, 57, 6, 0, 4, 101, 114, 1, 99, 110, 97, 108, 3, 57, 6, 36, 0, 101, 114, 1, 99, 110, 97, 110, 105, 102,
-			0, 101, 114, 1, 99, 110, 101, 114, 101, 102, 110, 111, 107, 0, 101, 114, 1, 100, 97, 98, 114, 97, 98, 0, 101, 114, 1, 100, 97, 110,
-			101, 114, 103, 0, 101, 114, 1, 107, 110, 97, 98, 0, 101, 114, 1, 108, 97, 112, 115, 0, 101, 114, 1, 108, 97, 112, 115, 101, 0, 101,
-			114, 1, 108, 101, 116, 97, 0, 101, 114, 1, 108, 108, 111, 99, 0, 101, 114, 1, 108, 117, 99, 105, 116, 114, 97, 112, 0, 101, 114, 1,
-			109, 117, 116, 115, 111, 107, 0, 101, 114, 1, 110, 101, 100, 0, 101, 114, 1, 112, 117, 111, 114, 99, 0, 101, 114, 1, 115, 110, 97, 110,
-			105, 102, 0, 101, 114, 1, 115, 115, 111, 100, 0, 101, 114, 1, 116, 101, 109, 0, 101, 114, 1, 116, 110, 97, 103, 101, 108, 101, 0, 101,
-			114, 1, 116, 110, 101, 114, 0, 101, 114, 1, 116, 114, 111, 112, 0, 101, 119, 3, 57, 6, 40, 0, 97, 118, 1, 109, 3, 57, 35, 58,
-			0, 4, 101, 1, 118, 2, 116, 32, 99, 111, 110, 103, 3, 57, 109, 0, 101, 1, 118, 2, 116, 110, 97, 109, 0, 4, 111, 1, 107, 2,
-			115, 107, 3, 57, 114, 0, 111, 114, 1, 110, 101, 115, 0, 110, 1, 108, 101, 104, 99, 105, 109, 3, 109, 68, 0, 114, 1, 108, 102, 2,
-			116, 3, 118, 12, 0, 114, 118, 105, 110, 103, 3, 118, 84, 36, 68, 0, 7, 6, 106, 0, 101, 97, 110, 110, 101, 2, 32, 100, 39, 3,
-			2, 91, 110, 12, 50, 0, 1, 104, 114, 101, 100, 2, 101, 109, 109, 101, 3, 6, 57, 0, 4, 3, 57, 0, 1, 184, 195, 2, 101, 116,
-			0, 2, 117, 110, 107, 116, 0, 1, 97, 109, 2, 111, 114, 3, 57, 6, 0, 101, 104, 111, 118, 97, 3, 57, 36, 107, 6, 39, 84, 110,
-			0, 101, 114, 8, 2, 32, 3, 57, 109, 34, 0, 101, 114, 115, 101, 121, 2, 107, 3, 57, 109, 34, 89, 37, 0, 97, 107, 101, 108, 8,
-			3, 57, 110, 49, 20, 13, 55, 0, 97, 109, 115, 101, 115, 115, 105, 111, 110, 3, 72, 57, 110, 12, 65, 89, 6, 36, 91, 57, 13, 50,
-			0, 4, 1, 105, 102, 2, 105, 3, 75, 0, 1, 110, 105, 110, 2, 97, 0, 2, 97, 119, 0, 2, 97, 122, 122, 0, 2, 101, 110, 110,
-			105, 102, 101, 114, 0, 2, 111, 98, 0, 2, 117, 105, 99, 101, 0, 2, 117, 110, 103, 108, 0, 2, 117, 110, 107, 0, 8, 2, 101, 102,
-			102, 0, 8, 2, 105, 109, 32, 0, 101, 114, 114, 121, 3, 75, 36, 34, 37, 0, 101, 107, 121, 108, 108, 3, 75, 36, 49, 14, 55, 0,
-			105, 110, 103, 108, 101, 3, 75, 36, 50, 81, 108, 55, 0, 4, 105, 109, 109, 105, 101, 3, 75, 36, 65, 37, 0, 105, 109, 109, 121, 0,
-			4, 101, 97, 110, 3, 75, 37, 12, 50, 0, 101, 97, 110, 110, 101, 0, 101, 101, 112, 3, 75, 37, 12, 71, 0, 105, 108, 108, 8, 3,
-			75, 37, 55, 0, 105, 116, 116, 101, 114, 98, 117, 103, 3, 75, 37, 72, 114, 71, 114, 81, 0, 105, 104, 97, 100, 3, 75, 37, 107, 6,
-			110, 47, 0, 117, 107, 101, 2, 98, 111, 107, 115, 3, 75, 40, 12, 49, 0, 4, 101, 119, 101, 108, 3, 75, 40, 12, 55, 0, 111, 117,
-			108, 101, 0, 4, 101, 1, 97, 109, 114, 105, 102, 2, 116, 3, 75, 109, 0, 101, 1, 111, 98, 109, 117, 106, 2, 116, 0, 101, 8, 2,
-			116, 0, 4, 101, 110, 110, 105, 101, 3, 75, 109, 50, 37, 0, 101, 110, 110, 121, 0, 97, 121, 3, 75, 109, 57, 0, 97, 107, 101, 8,
-			3, 75, 109, 57, 49, 0, 97, 110, 101, 121, 3, 75, 109, 57, 50, 37, 0, 97, 109, 105, 101, 3, 75, 109, 57, 65, 37, 0, 97, 109,
-			101, 115, 8, 3, 75, 109, 57, 65, 89, 0, 101, 115, 115, 3, 75, 109, 89, 0, 101, 115, 115, 105, 101, 3, 75, 109, 89, 37, 0, 4,
-			97, 2, 99, 107, 3, 75, 110, 0, 97, 2, 109, 97, 108, 0, 97, 99, 107, 105, 101, 3, 75, 110, 49, 37, 0, 97, 114, 118, 105, 115,
-			8, 3, 75, 112, 12, 84, 36, 89, 0, 97, 109, 98, 97, 108, 97, 121, 97, 3, 75, 112, 65, 71, 110, 55, 6, 35, 57, 110, 0, 111,
-			108, 101, 110, 101, 8, 3, 75, 113, 58, 55, 6, 37, 12, 50, 0, 111, 2, 99, 107, 101, 121, 3, 75, 114, 0, 111, 104, 110, 3, 75,
-			114, 50, 0, 111, 104, 110, 110, 121, 3, 75, 114, 50, 37, 0, 117, 110, 107, 105, 101, 3, 75, 114, 50, 49, 37, 0, 117, 110, 99, 116,
-			105, 111, 110, 3, 75, 114, 50, 49, 91, 13, 50, 0, 111, 121, 3, 75, 114, 57, 0, 111, 105, 110, 116, 3, 75, 114, 57, 50, 47, 0,
-			111, 115, 104, 8, 3, 75, 114, 91, 0, 111, 101, 3, 75, 115, 58, 0, 111, 110, 101, 115, 3, 75, 115, 58, 50, 89, 0, 4, 101, 114,
-			115, 101, 121, 8, 2, 32, 3, 75, 118, 12, 89, 37, 0, 101, 114, 115, 101, 121, 8, 2, 115, 32, 0, 111, 107, 101, 3, 75, 118, 58,
-			49, 0, 97, 99, 113, 117, 101, 115, 3, 90, 35, 49, 0, 4, 1, 110, 101, 2, 97, 109, 98, 101, 3, 91, 0, 1, 111, 114, 2, 101,
-			107, 116, 0, 2, 97, 115, 109, 105, 110, 0, 2, 111, 110, 103, 108, 0, 2, 111, 117, 114, 110, 97, 108, 0, 1, 97, 2, 111, 117, 3,
-			91, 6, 0, 101, 114, 111, 109, 101, 3, 91, 36, 34, 6, 39, 65, 0, 97, 110, 101, 105, 114, 111, 3, 91, 36, 50, 6, 109, 34, 39,
-			0, 97, 117, 98, 101, 114, 116, 3, 91, 39, 71, 6, 109, 34, 0, 117, 97, 110, 8, 3, 91, 40, 6, 112, 68, 0, 101, 116, 111, 110,
-			3, 91, 57, 36, 47, 6, 114, 68, 0, 97, 114, 100, 105, 110, 105, 101, 114, 101, 3, 91, 57, 112, 34, 72, 37, 50, 57, 6, 109, 12,
-			34, 0, 97, 114, 103, 111, 110, 3, 91, 57, 112, 34, 81, 6, 114, 68, 0, 101, 97, 2, 110, 101, 116, 116, 101, 3, 91, 110, 6, 0,
-			101, 97, 110, 111, 116, 3, 91, 110, 50, 6, 39, 0, 97, 108, 111, 117, 115, 105, 8, 3, 91, 110, 55, 40, 89, 6, 37, 0, 97, 108,
-			111, 117, 115, 105, 1, 21, 3, 91, 110, 55, 40, 89, 37, 0, 97, 109, 97, 105, 99, 97, 3, 91, 110, 65, 6, 35, 57, 49, 110, 0,
-			117, 103, 101, 114, 101, 3, 91, 116, 91, 6, 36, 114, 0, 1, 97, 118, 97, 110, 2, 111, 3, 107, 0, 7, 6, 107, 0, 4, 1, 101,
-			112, 115, 2, 116, 97, 107, 107, 3, 0, 1, 101, 112, 115, 2, 116, 97, 107, 108, 3, 0, 4, 8, 101, 112, 115, 2, 116, 97, 107, 107,
-			3, 6, 0, 8, 101, 112, 115, 2, 116, 97, 107, 108, 0, 4, 3, 49, 0, 1, 10, 0, 107, 0, 4, 114, 121, 115, 97, 110, 116, 101,
-			109, 117, 109, 3, 49, 34, 117, 89, 6, 110, 50, 47, 13, 65, 113, 65, 0, 114, 121, 115, 97, 110, 116, 101, 109, 117, 109, 109, 0, 97,
-			107, 101, 114, 108, 97, 2, 107, 3, 49, 35, 49, 13, 55, 6, 35, 0, 97, 110, 116, 101, 114, 101, 108, 3, 49, 35, 50, 47, 13, 34,
-			6, 111, 55, 0, 105, 100, 1, 32, 101, 104, 116, 3, 49, 36, 72, 0, 101, 105, 116, 104, 3, 49, 37, 12, 87, 0, 105, 108, 105, 109,
-			97, 110, 106, 97, 114, 111, 3, 49, 37, 55, 37, 65, 110, 50, 75, 6, 112, 34, 39, 0, 108, 111, 115, 2, 32, 104, 111, 108, 100, 3,
-			49, 55, 114, 89, 0, 118, 97, 114, 116, 101, 114, 1, 10, 3, 49, 84, 35, 34, 47, 36, 34, 0, 97, 116, 101, 8, 2, 32, 3, 49,
-			109, 57, 47, 0, 97, 114, 97, 111, 107, 101, 3, 49, 110, 34, 110, 6, 39, 40, 49, 37, 0, 111, 110, 116, 105, 110, 117, 117, 109, 3,
-			49, 114, 50, 47, 6, 37, 50, 40, 113, 65, 0, 117, 109, 113, 117, 97, 116, 3, 49, 114, 65, 49, 58, 114, 72, 0, 101, 114, 109, 105,
-			116, 8, 3, 49, 118, 12, 65, 36, 47, 0, 110, 105, 103, 104, 116, 3, 50, 112, 57, 47, 0, 110, 111, 99, 107, 3, 50, 114, 49, 0,
-			110, 111, 120, 3, 50, 114, 81, 89, 0, 7, 6, 108, 0, 4, 101, 1, 102, 102, 105, 107, 115, 3, 13, 55, 0, 101, 8, 112, 114, 97,
-			109, 0, 4, 3, 55, 0, 100, 1, 10, 2, 101, 114, 0, 108, 0, 118, 1, 101, 115, 0, 118, 1, 111, 116, 0, 118, 1, 184, 195, 115,
-			0, 101, 111, 100, 1, 32, 99, 97, 109, 3, 55, 6, 35, 58, 72, 0, 111, 103, 1, 10, 2, 28, 33, 3, 55, 6, 39, 0, 4, 101,
-			116, 1, 10, 2, 116, 28, 33, 3, 55, 6, 109, 0, 101, 116, 1, 111, 105, 114, 98, 97, 99, 0, 101, 116, 1, 10, 2, 28, 33, 3,
-			55, 6, 109, 47, 0, 105, 111, 110, 101, 108, 8, 3, 55, 35, 36, 108, 50, 109, 55, 0, 101, 103, 2, 32, 3, 55, 35, 57, 0, 101,
-			103, 101, 114, 2, 32, 3, 55, 35, 57, 114, 0, 111, 117, 110, 103, 101, 3, 55, 35, 58, 50, 75, 0, 4, 101, 116, 1, 105, 102, 101,
-			98, 98, 117, 114, 107, 115, 3, 55, 36, 0, 101, 116, 1, 105, 102, 101, 103, 110, 117, 116, 184, 195, 115, 0, 101, 116, 1, 105, 102, 101,
-			107, 115, 105, 102, 0, 101, 116, 1, 105, 102, 101, 109, 109, 97, 108, 0, 101, 116, 1, 105, 102, 101, 110, 105, 118, 115, 0, 101, 116, 1,
-			105, 102, 101, 114, 121, 100, 0, 101, 116, 1, 105, 102, 101, 115, 107, 111, 0, 101, 116, 1, 105, 102, 101, 116, 114, 111, 106, 104, 0, 101,
-			116, 1, 105, 102, 101, 116, 115, 101, 104, 0, 101, 116, 1, 105, 102, 101, 116, 116, 166, 195, 112, 115, 0, 101, 116, 1, 105, 102, 115, 103,
-			101, 116, 115, 0, 105, 110, 99, 111, 108, 110, 3, 55, 36, 50, 49, 114, 59, 50, 0, 105, 116, 116, 108, 101, 3, 55, 36, 72, 13, 55,
-			0, 101, 103, 101, 2, 114, 105, 110, 103, 3, 55, 36, 81, 6, 36, 0, 105, 118, 105, 110, 103, 115, 116, 111, 110, 101, 3, 55, 36, 84,
-			36, 68, 89, 47, 4, 108, 12, 58, 50, 0, 101, 118, 101, 114, 101, 1, 21, 3, 55, 36, 84, 36, 114, 0, 101, 121, 3, 55, 37, 0,
-			101, 101, 8, 2, 32, 3, 55, 37, 12, 0, 101, 101, 100, 8, 2, 115, 3, 55, 37, 12, 72, 0, 108, 97, 114, 100, 1, 105, 98, 3,
-			55, 37, 35, 72, 0, 105, 109, 111, 103, 101, 115, 3, 55, 37, 65, 6, 39, 12, 90, 0, 105, 122, 122, 105, 101, 3, 55, 37, 89, 37,
-			0, 97, 117, 116, 114, 101, 99, 3, 55, 39, 47, 34, 6, 109, 49, 0, 111, 114, 114, 97, 105, 110, 101, 3, 55, 39, 51, 109, 12, 50,
-			0, 111, 103, 1, 10, 2, 105, 28, 33, 3, 55, 39, 81, 6, 0, 103, 1, 101, 104, 2, 101, 3, 55, 57, 0, 108, 101, 110, 100, 101,
-			8, 97, 3, 55, 57, 6, 109, 50, 72, 108, 0, 4, 100, 1, 111, 98, 3, 55, 72, 0, 100, 1, 111, 115, 2, 97, 116, 0, 118, 101,
-			1, 101, 115, 3, 55, 84, 108, 0, 111, 116, 105, 111, 110, 3, 55, 108, 40, 91, 57, 50, 0, 101, 103, 101, 109, 2, 17, 67, 3, 55,
-			109, 57, 13, 65, 0, 97, 107, 101, 8, 2, 32, 3, 55, 109, 57, 49, 0, 97, 98, 111, 117, 114, 3, 55, 109, 57, 71, 114, 0, 4,
-			97, 100, 121, 1, 110, 114, 101, 106, 3, 55, 109, 57, 72, 37, 0, 97, 100, 121, 8, 0, 101, 97, 118, 101, 110, 119, 111, 114, 116, 104,
-			3, 55, 109, 84, 13, 50, 58, 118, 12, 108, 87, 0, 101, 105, 99, 101, 115, 116, 101, 114, 3, 55, 109, 89, 47, 114, 0, 97, 100, 121,
-			115, 1, 103, 3, 55, 110, 72, 37, 89, 0, 117, 99, 107, 121, 3, 55, 114, 49, 37, 0, 108, 111, 121, 100, 3, 55, 114, 57, 72, 0,
-			111, 110, 103, 2, 32, 105, 115, 108, 97, 110, 100, 3, 55, 114, 68, 0, 117, 100, 108, 111, 119, 3, 55, 114, 72, 55, 39, 58, 0, 4,
-			1, 98, 3, 59, 0, 1, 102, 0, 1, 115, 0, 97, 114, 114, 121, 3, 59, 110, 16, 37, 0, 7, 6, 109, 0, 97, 105, 108, 1, 32,
-			101, 3, 2, 65, 109, 57, 55, 0, 97, 110, 100, 1, 114, 117, 111, 103, 3, 2, 65, 112, 68, 0, 4, 97, 100, 101, 114, 111, 3, 21,
-			101, 115, 0, 105, 103, 117, 101, 108, 0, 111, 110, 116, 112, 101, 108, 108, 105, 101, 114, 3, 21, 102, 114, 0, 4, 3, 65, 0, 109, 0,
-			97, 110, 100, 8, 114, 117, 111, 103, 3, 65, 7, 112, 68, 0, 109, 1, 111, 2, 195, 184, 98, 108, 101, 3, 65, 15, 65, 0, 101, 103,
-			101, 110, 8, 2, 32, 3, 65, 35, 12, 57, 13, 50, 0, 101, 103, 101, 116, 8, 2, 32, 3, 65, 35, 12, 57, 13, 86, 0, 97, 107,
-			97, 114, 111, 110, 105, 3, 65, 35, 49, 108, 34, 6, 114, 50, 37, 0, 97, 114, 115, 101, 105, 108, 108, 101, 3, 65, 35, 51, 89, 6,
-			109, 12, 57, 0, 4, 105, 107, 101, 8, 2, 32, 3, 65, 35, 57, 49, 0, 105, 107, 101, 8, 2, 115, 32, 0, 111, 117, 115, 101, 8,
-			3, 65, 35, 58, 89, 0, 101, 114, 101, 8, 2, 32, 3, 65, 36, 34, 0, 105, 108, 107, 115, 104, 97, 107, 101, 3, 65, 36, 55, 49,
-			91, 109, 57, 49, 0, 105, 108, 119, 97, 117, 107, 101, 101, 3, 65, 36, 55, 58, 6, 113, 49, 37, 0, 101, 100, 101, 97, 8, 3, 65,
-			36, 72, 6, 109, 12, 110, 0, 105, 100, 110, 105, 103, 104, 116, 3, 65, 36, 72, 50, 35, 57, 47, 0, 105, 99, 104, 101, 108, 108, 101,
-			3, 65, 37, 91, 6, 109, 55, 0, 97, 117, 114, 105, 99, 101, 3, 65, 39, 34, 6, 37, 89, 0, 97, 117, 112, 97, 115, 115, 97, 110,
-			116, 3, 65, 39, 48, 110, 89, 6, 112, 68, 0, 111, 117, 108, 105, 110, 3, 65, 40, 55, 6, 110, 68, 0, 117, 115, 107, 101, 116, 101,
-			114, 3, 65, 40, 89, 81, 36, 47, 6, 36, 34, 0, 117, 115, 105, 99, 97, 108, 3, 65, 57, 40, 12, 89, 37, 49, 108, 55, 0, 4,
-			109, 1, 101, 108, 108, 101, 109, 3, 65, 65, 0, 109, 2, 97, 115, 115, 97, 103, 101, 0, 112, 115, 111, 110, 3, 65, 89, 114, 50, 0,
-			97, 107, 101, 117, 2, 112, 3, 65, 109, 57, 49, 6, 114, 0, 97, 105, 110, 101, 8, 3, 65, 109, 57, 50, 0, 97, 105, 108, 3, 65,
-			109, 57, 55, 0, 97, 121, 100, 97, 121, 3, 65, 109, 57, 72, 109, 12, 57, 0, 101, 108, 98, 111, 117, 114, 110, 101, 3, 65, 109, 59,
-			71, 118, 50, 0, 97, 114, 105, 108, 121, 110, 3, 65, 110, 34, 37, 55, 36, 50, 0, 97, 116, 105, 108, 100, 8, 3, 65, 110, 47, 6,
-			37, 55, 72, 0, 97, 116, 105, 110, 101, 3, 65, 110, 47, 37, 50, 6, 36, 0, 99, 8, 2, 17, 67, 21, 3, 65, 110, 49, 0, 97,
-			110, 110, 101, 113, 117, 105, 110, 8, 3, 65, 110, 50, 13, 49, 6, 109, 68, 0, 97, 110, 110, 101, 113, 117, 105, 110, 3, 65, 110, 50,
-			13, 49, 109, 68, 0, 97, 110, 97, 103, 101, 114, 3, 65, 110, 50, 36, 75, 114, 0, 105, 97, 109, 105, 3, 65, 110, 57, 6, 110, 12,
-			65, 37, 0, 97, 100, 97, 103, 97, 115, 107, 97, 114, 3, 65, 110, 72, 110, 81, 6, 110, 89, 49, 110, 0, 97, 116, 116, 104, 101, 119,
-			3, 65, 110, 87, 57, 40, 0, 97, 115, 115, 97, 99, 104, 117, 115, 101, 116, 116, 115, 3, 65, 110, 89, 110, 47, 57, 6, 40, 89, 109,
-			47, 89, 0, 97, 99, 104, 101, 116, 101, 3, 65, 110, 91, 6, 109, 72, 0, 97, 104, 111, 103, 110, 105, 3, 65, 110, 107, 6, 39, 50,
-			37, 0, 97, 114, 101, 114, 105, 100, 116, 3, 65, 112, 12, 13, 34, 37, 47, 0, 97, 114, 106, 111, 114, 105, 101, 3, 65, 112, 75, 113,
-			34, 37, 0, 111, 110, 116, 114, 101, 3, 65, 113, 12, 50, 47, 34, 114, 0, 97, 108, 116, 1, 32, 101, 108, 103, 110, 105, 115, 3, 65,
-			113, 55, 47, 0, 117, 114, 114, 97, 121, 3, 65, 114, 34, 37, 0, 117, 112, 112, 101, 116, 8, 3, 65, 114, 48, 36, 47, 0, 111, 110,
-			114, 111, 101, 3, 65, 114, 50, 34, 6, 113, 58, 0, 111, 110, 101, 121, 3, 65, 114, 50, 37, 0, 111, 110, 116, 103, 111, 109, 101, 114,
-			121, 3, 65, 114, 50, 72, 81, 6, 114, 65, 34, 37, 0, 111, 108, 121, 110, 101, 117, 120, 3, 65, 114, 55, 37, 50, 57, 40, 12, 0,
-			111, 116, 104, 101, 114, 3, 65, 114, 86, 114, 0, 117, 114, 100, 111, 99, 104, 3, 65, 118, 72, 114, 49, 0, 117, 114, 112, 104, 3, 65,
-			118, 83, 0, 4, 117, 114, 112, 104, 101, 121, 3, 65, 118, 83, 37, 0, 117, 114, 112, 104, 121, 0, 7, 6, 110, 0, 95, 1, 97, 107,
-			3, 0, 105, 1, 10, 2, 28, 33, 12, 3, 6, 50, 37, 0, 105, 1, 110, 10, 2, 28, 33, 12, 3, 7, 37, 0, 4, 1, 10, 2,
-			101, 114, 28, 33, 12, 3, 8, 50, 0, 1, 10, 2, 105, 115, 116, 97, 110, 28, 33, 0, 1, 10, 2, 115, 107, 28, 33, 0, 4, 105,
-			1, 10, 2, 115, 107, 28, 33, 12, 3, 8, 50, 37, 0, 105, 1, 97, 109, 2, 111, 12, 0, 105, 1, 105, 107, 105, 98, 0, 105, 107,
-			97, 8, 111, 109, 114, 97, 104, 3, 8, 50, 37, 49, 110, 0, 105, 101, 110, 1, 21, 3, 8, 50, 37, 108, 20, 50, 0, 105, 101, 114,
-			1, 21, 3, 8, 50, 37, 114, 0, 105, 103, 104, 116, 105, 110, 103, 97, 108, 101, 3, 21, 0, 4, 3, 50, 0, 110, 1, 17, 65, 0,
-			110, 1, 111, 115, 166, 195, 114, 0, 105, 97, 103, 97, 114, 97, 8, 3, 50, 35, 57, 6, 110, 81, 108, 34, 35, 0, 105, 103, 104, 116,
-			101, 110, 103, 97, 108, 101, 8, 3, 50, 35, 57, 47, 14, 50, 81, 109, 57, 55, 0, 121, 108, 111, 110, 3, 50, 35, 57, 55, 114, 50,
-			0, 105, 103, 101, 108, 8, 3, 50, 35, 57, 75, 108, 55, 0, 101, 103, 108, 105, 103, 101, 3, 50, 36, 81, 55, 37, 91, 6, 36, 0,
-			101, 105, 108, 3, 50, 37, 12, 55, 0, 105, 99, 111, 108, 101, 8, 3, 50, 37, 49, 6, 114, 55, 0, 105, 99, 111, 108, 8, 2, 101,
-			116, 116, 101, 3, 50, 37, 49, 39, 55, 0, 111, 117, 103, 97, 116, 3, 50, 40, 81, 6, 110, 0, 101, 119, 116, 111, 110, 3, 50, 57,
-			6, 40, 12, 47, 13, 50, 0, 101, 119, 3, 50, 57, 40, 0, 101, 119, 122, 101, 97, 108, 97, 110, 100, 3, 50, 57, 40, 89, 6, 36,
-			55, 110, 50, 0, 101, 108, 108, 105, 101, 8, 3, 50, 109, 55, 37, 0, 101, 118, 105, 108, 108, 101, 8, 3, 50, 109, 84, 36, 59, 0,
-			97, 105, 118, 8, 3, 50, 110, 6, 37, 84, 0, 97, 103, 8, 2, 32, 3, 50, 110, 12, 57, 0, 97, 105, 118, 1, 21, 3, 50, 110,
-			37, 84, 0, 111, 114, 101, 101, 110, 8, 3, 50, 113, 58, 34, 6, 37, 12, 50, 0, 111, 114, 119, 105, 99, 104, 8, 3, 50, 114, 34,
-			37, 76, 0, 111, 115, 116, 114, 97, 100, 97, 109, 117, 115, 3, 50, 114, 89, 47, 34, 112, 72, 6, 110, 65, 40, 89, 0, 107, 2, 116,
-			3, 68, 0, 7, 6, 111, 0, 1, 108, 32, 107, 97, 114, 116, 2, 100, 3, 0, 4, 1, 112, 2, 115, 116, 101, 106, 3, 2, 39, 0,
-			2, 107, 116, 111, 98, 0, 1, 114, 116, 110, 111, 107, 2, 108, 108, 101, 114, 3, 2, 113, 0, 4, 109, 109, 101, 8, 112, 2, 32, 3,
-			2, 114, 65, 0, 109, 109, 101, 115, 8, 112, 2, 32, 0, 119, 1, 108, 98, 3, 6, 13, 58, 0, 4, 117, 116, 8, 101, 109, 105, 116,
-			3, 6, 35, 58, 72, 0, 117, 116, 8, 107, 99, 97, 108, 98, 0, 117, 116, 8, 107, 99, 111, 108, 0, 117, 116, 8, 107, 99, 111, 110,
-			107, 0, 117, 116, 8, 107, 114, 111, 119, 0, 117, 116, 8, 121, 97, 108, 0, 4, 1, 21, 2, 108, 115, 107, 3, 6, 39, 0, 1, 98,
-			109, 97, 99, 2, 100, 106, 0, 1, 99, 101, 100, 32, 116, 114, 97, 0, 1, 100, 97, 116, 97, 109, 2, 114, 0, 1, 100, 105, 114, 114,
-			111, 107, 2, 114, 0, 1, 101, 108, 99, 2, 112, 97, 116, 114, 97, 0, 1, 101, 116, 101, 109, 2, 114, 0, 1, 103, 97, 112, 2, 100,
-			101, 0, 1, 103, 110, 97, 2, 108, 97, 0, 1, 105, 98, 105, 116, 110, 97, 2, 116, 105, 107, 0, 1, 105, 100, 2, 100, 101, 0, 1,
-			105, 114, 101, 112, 2, 100, 101, 0, 1, 105, 118, 97, 114, 2, 108, 105, 0, 1, 106, 97, 103, 2, 108, 0, 1, 107, 97, 108, 2, 116,
-			97, 0, 1, 107, 110, 97, 108, 101, 109, 2, 108, 115, 107, 0, 1, 108, 97, 2, 104, 97, 0, 1, 108, 97, 104, 115, 2, 109, 0, 1,
-			108, 107, 121, 99, 2, 110, 0, 1, 108, 107, 121, 107, 2, 112, 0, 1, 108, 108, 97, 104, 0, 1, 109, 97, 115, 2, 97, 0, 1, 109,
-			101, 109, 2, 114, 105, 97, 109, 0, 1, 109, 109, 111, 107, 2, 100, 101, 0, 1, 112, 101, 2, 107, 101, 0, 1, 114, 97, 2, 109, 97,
-			0, 1, 114, 101, 2, 98, 0, 1, 114, 101, 112, 112, 101, 112, 2, 110, 105, 0, 1, 114, 116, 107, 101, 108, 101, 2, 100, 101, 0, 1,
-			114, 116, 115, 105, 98, 0, 1, 115, 105, 112, 101, 2, 100, 101, 0, 1, 116, 97, 107, 2, 100, 101, 0, 1, 116, 97, 109, 166, 195, 104,
-			2, 109, 0, 1, 116, 101, 98, 2, 110, 105, 110, 103, 0, 1, 116, 101, 109, 2, 100, 101, 0, 1, 116, 110, 111, 107, 2, 114, 0, 1,
-			116, 115, 117, 107, 2, 100, 101, 0, 1, 121, 107, 2, 116, 111, 0, 8, 100, 97, 116, 101, 109, 2, 110, 0, 8, 100, 107, 101, 110, 97,
-			2, 116, 0, 8, 105, 100, 105, 2, 116, 0, 8, 105, 114, 112, 121, 99, 2, 116, 0, 8, 105, 114, 116, 97, 112, 2, 116, 0, 8, 106,
-			108, 97, 116, 97, 98, 2, 110, 0, 8, 106, 115, 110, 97, 2, 115, 0, 8, 106, 117, 107, 2, 110, 0, 8, 107, 105, 108, 105, 115, 2,
-			110, 101, 0, 8, 107, 105, 114, 98, 97, 2, 115, 0, 8, 108, 105, 112, 2, 116, 0, 8, 108, 105, 116, 110, 97, 2, 112, 101, 0, 8,
-			109, 97, 114, 2, 110, 97, 0, 8, 109, 101, 110, 97, 2, 110, 101, 0, 8, 109, 105, 2, 100, 0, 8, 109, 105, 107, 115, 101, 0, 8,
-			109, 114, 111, 109, 2, 110, 0, 8, 109, 166, 195, 100, 2, 110, 0, 8, 110, 97, 107, 2, 110, 0, 8, 110, 103, 105, 115, 2, 114, 0,
-			8, 110, 111, 107, 184, 195, 2, 109, 32, 0, 8, 112, 101, 100, 2, 116, 0, 8, 114, 101, 2, 116, 0, 8, 114, 101, 99, 105, 99, 2,
-			110, 101, 0, 8, 114, 101, 112, 97, 104, 99, 2, 110, 101, 0, 8, 114, 116, 97, 109, 2, 110, 101, 0, 8, 114, 116, 97, 109, 2, 115,
-			0, 8, 114, 117, 101, 2, 112, 97, 0, 8, 115, 111, 108, 105, 102, 2, 102, 105, 115, 107, 0, 8, 116, 101, 99, 97, 2, 110, 101, 0,
-			8, 116, 111, 105, 98, 2, 112, 0, 8, 116, 111, 115, 105, 2, 112, 0, 8, 122, 97, 109, 97, 2, 110, 101, 0, 8, 122, 108, 97, 99,
-			2, 110, 101, 0, 108, 1, 114, 116, 10, 2, 108, 108, 101, 28, 33, 0, 116, 1, 100, 114, 97, 98, 0, 116, 1, 107, 105, 114, 116, 0,
-			116, 1, 108, 114, 101, 109, 0, 1, 116, 105, 108, 2, 116, 101, 3, 6, 39, 12, 0, 102, 101, 1, 114, 116, 115, 97, 116, 97, 107, 3,
-			6, 39, 12, 83, 108, 0, 115, 101, 1, 10, 2, 28, 33, 12, 3, 6, 39, 12, 89, 13, 0, 115, 101, 43, 1, 10, 2, 114, 28, 33,
-			3, 6, 39, 12, 89, 114, 0, 116, 105, 1, 107, 114, 97, 110, 2, 107, 3, 6, 39, 47, 37, 0, 112, 1, 107, 115, 10, 2, 28, 33,
-			12, 12, 3, 6, 39, 48, 0, 110, 100, 1, 107, 101, 115, 2, 108, 195, 184, 106, 116, 110, 97, 110, 116, 3, 6, 39, 50, 72, 0, 4,
-			108, 1, 10, 2, 28, 33, 12, 12, 3, 6, 39, 55, 0, 108, 1, 104, 10, 2, 105, 28, 33, 12, 0, 108, 1, 114, 116, 10, 2, 101,
-			28, 33, 0, 108, 1, 115, 10, 2, 18, 69, 28, 33, 12, 0, 108, 1, 116, 110, 10, 2, 28, 33, 12, 0, 108, 1, 116, 115, 10, 2,
-			12, 28, 33, 0, 109, 1, 21, 2, 28, 33, 12, 12, 12, 3, 6, 39, 65, 0, 4, 111, 1, 122, 97, 107, 3, 6, 40, 0, 117, 1,
-			108, 101, 118, 2, 114, 0, 117, 116, 1, 103, 97, 114, 0, 4, 111, 1, 122, 97, 98, 3, 6, 40, 12, 0, 117, 1, 115, 115, 105, 109,
-			2, 114, 105, 0, 117, 105, 108, 108, 101, 1, 116, 97, 116, 97, 114, 3, 6, 40, 12, 57, 0, 117, 110, 1, 104, 108, 97, 99, 3, 6,
-			40, 50, 0, 105, 114, 101, 1, 116, 114, 101, 112, 101, 114, 3, 6, 58, 112, 12, 0, 110, 100, 1, 98, 97, 103, 97, 118, 3, 6, 113,
-			50, 72, 0, 4, 1, 98, 111, 114, 2, 116, 12, 12, 3, 6, 114, 0, 1, 100, 97, 114, 97, 112, 2, 107, 115, 0, 1, 100, 97, 114,
-			98, 97, 108, 2, 114, 0, 1, 100, 111, 116, 114, 111, 2, 107, 115, 0, 1, 102, 101, 100, 2, 114, 109, 0, 1, 102, 101, 114, 2, 114,
-			109, 0, 1, 102, 105, 110, 117, 2, 114, 109, 0, 1, 102, 110, 111, 107, 2, 114, 109, 0, 1, 102, 111, 114, 111, 108, 107, 2, 114, 109,
-			0, 1, 104, 99, 97, 107, 2, 116, 0, 1, 104, 110, 114, 111, 98, 2, 108, 109, 0, 1, 107, 115, 105, 116, 114, 97, 2, 107, 0, 1,
-			108, 97, 103, 2, 17, 67, 0, 1, 108, 97, 107, 2, 116, 0, 1, 108, 117, 2, 118, 0, 1, 109, 97, 2, 107, 0, 1, 110, 98, 97,
-			2, 114, 109, 0, 1, 110, 101, 2, 114, 109, 12, 0, 1, 110, 111, 109, 2, 107, 0, 1, 112, 97, 2, 108, 108, 111, 12, 12, 0, 1,
-			112, 109, 111, 107, 2, 115, 116, 0, 1, 114, 111, 116, 2, 110, 116, 111, 0, 1, 114, 116, 115, 101, 114, 101, 112, 2, 106, 107, 97, 0,
-			1, 115, 111, 108, 105, 102, 2, 102, 32, 0, 8, 107, 115, 97, 109, 2, 116, 0, 8, 107, 117, 104, 2, 109, 109, 101, 0, 8, 108, 111,
-			107, 2, 115, 0, 8, 112, 115, 101, 114, 2, 110, 115, 0, 8, 115, 105, 114, 111, 104, 2, 110, 0, 8, 116, 114, 97, 107, 2, 102, 0,
-			8, 118, 101, 114, 2, 108, 118, 0, 108, 1, 114, 116, 10, 2, 108, 101, 110, 28, 33, 0, 112, 116, 101, 114, 1, 107, 105, 108, 101, 104,
-			3, 6, 114, 48, 47, 114, 0, 103, 1, 107, 110, 105, 2, 110, 105, 116, 111, 3, 6, 114, 49, 0, 110, 100, 1, 107, 111, 112, 121, 104,
-			2, 101, 114, 3, 6, 114, 50, 72, 0, 4, 108, 1, 104, 10, 2, 28, 33, 12, 3, 6, 114, 55, 0, 108, 1, 107, 111, 10, 2, 28,
-			33, 12, 0, 108, 1, 114, 116, 10, 2, 28, 33, 12, 0, 108, 1, 115, 10, 2, 28, 33, 12, 0, 108, 1, 116, 10, 2, 28, 33, 12,
-			0, 108, 100, 101, 1, 115, 105, 3, 6, 114, 55, 72, 108, 0, 4, 106, 1, 118, 110, 111, 107, 3, 6, 114, 57, 0, 121, 2, 12, 0,
-			105, 97, 8, 110, 97, 114, 97, 112, 3, 6, 114, 57, 110, 0, 4, 103, 110, 101, 1, 99, 115, 97, 103, 3, 6, 114, 68, 57, 108, 0,
-			103, 110, 101, 1, 116, 115, 97, 98, 0, 114, 101, 114, 1, 115, 3, 7, 39, 12, 114, 0, 8, 2, 109, 17, 67, 3, 7, 114, 0, 103,
-			110, 1, 108, 117, 111, 98, 2, 101, 3, 7, 114, 68, 57, 0, 1, 114, 116, 107, 101, 108, 101, 3, 8, 39, 0, 114, 1, 115, 3, 8,
-			114, 0, 98, 108, 105, 103, 101, 1, 32, 101, 115, 115, 101, 108, 98, 111, 110, 3, 21, 102, 114, 0, 1, 100, 2, 119, 110, 105, 110, 103,
-			3, 35, 0, 117, 110, 3, 35, 40, 50, 0, 117, 116, 104, 1, 115, 3, 35, 40, 87, 0, 117, 116, 108, 97, 119, 3, 35, 58, 47, 55,
-			113, 12, 0, 4, 117, 116, 8, 100, 110, 97, 104, 3, 35, 58, 72, 0, 117, 116, 8, 110, 111, 114, 116, 115, 97, 0, 117, 116, 8, 112,
-			111, 114, 100, 0, 117, 116, 115, 105, 100, 101, 114, 3, 35, 58, 72, 89, 35, 57, 72, 114, 0, 4, 3, 39, 0, 1, 17, 67, 2, 18,
-			66, 97, 12, 0, 1, 17, 67, 2, 18, 68, 11, 97, 0, 1, 17, 67, 2, 18, 71, 18, 69, 12, 12, 0, 1, 17, 67, 2, 103, 12,
-			0, 1, 17, 67, 2, 107, 18, 69, 12, 0, 1, 17, 67, 2, 109, 18, 76, 0, 1, 17, 67, 102, 2, 116, 18, 69, 0, 1, 18, 66,
-			2, 109, 18, 69, 0, 1, 18, 66, 2, 109, 101, 0, 1, 18, 66, 2, 109, 109, 97, 110, 12, 0, 1, 18, 68, 2, 18, 74, 18, 69,
-			0, 1, 18, 68, 2, 18, 74, 18, 76, 0, 1, 18, 71, 2, 116, 18, 76, 0, 1, 18, 73, 2, 108, 12, 0, 1, 18, 73, 2, 116,
-			18, 69, 0, 1, 18, 74, 2, 100, 12, 0, 1, 18, 75, 2, 18, 71, 114, 18, 76, 0, 1, 97, 109, 2, 12, 0, 1, 98, 2, 100,
-			0, 1, 98, 2, 103, 111, 114, 109, 0, 1, 98, 2, 109, 0, 1, 98, 2, 109, 109, 12, 12, 0, 1, 98, 2, 112, 195, 166, 108, 0,
-			1, 98, 97, 110, 2, 12, 0, 1, 98, 109, 117, 106, 0, 1, 98, 109, 121, 115, 2, 108, 0, 1, 100, 2, 18, 66, 114, 18, 69, 0,
-			1, 100, 101, 112, 114, 111, 116, 0, 1, 101, 100, 105, 118, 0, 1, 102, 2, 98, 0, 1, 102, 2, 100, 12, 0, 1, 102, 2, 114, 18,
-			69, 12, 0, 1, 103, 2, 100, 12, 0, 1, 103, 2, 115, 108, 97, 118, 0, 1, 103, 97, 100, 2, 103, 0, 1, 104, 2, 18, 74, 18,
-			69, 12, 0, 1, 104, 2, 98, 12, 0, 1, 104, 2, 115, 112, 105, 116, 0, 1, 104, 2, 115, 116, 12, 0, 1, 104, 2, 118, 101, 114,
-			101, 0, 1, 104, 99, 2, 107, 111, 12, 0, 1, 105, 100, 97, 114, 0, 1, 106, 2, 100, 12, 0, 1, 106, 103, 2, 114, 116, 0, 1,
-			106, 107, 2, 114, 116, 0, 1, 106, 115, 2, 102, 0, 1, 107, 2, 17, 67, 11, 18, 69, 12, 12, 0, 1, 107, 2, 100, 12, 0, 1,
-			107, 2, 100, 101, 12, 0, 1, 107, 2, 107, 97, 0, 1, 107, 2, 108, 108, 101, 103, 12, 12, 12, 0, 1, 107, 2, 108, 108, 101, 107,
-			116, 32, 0, 1, 107, 2, 109, 109, 101, 110, 116, 17, 65, 12, 12, 12, 0, 1, 107, 2, 109, 109, 101, 114, 99, 105, 101, 108, 12, 12,
-			0, 1, 107, 2, 109, 112, 97, 103, 0, 1, 107, 2, 110, 116, 111, 114, 0, 1, 107, 2, 115, 107, 111, 0, 1, 107, 2, 115, 116, 18,
-			69, 0, 1, 107, 2, 115, 116, 32, 0, 1, 107, 2, 115, 116, 101, 115, 107, 97, 98, 0, 1, 107, 2, 115, 116, 101, 115, 107, 97, 102,
-			116, 0, 1, 107, 110, 97, 98, 2, 115, 112, 0, 1, 107, 111, 107, 2, 115, 0, 1, 107, 114, 97, 110, 0, 1, 107, 114, 97, 110, 2,
-			17, 67, 0, 1, 107, 115, 2, 115, 118, 195, 166, 114, 116, 101, 0, 1, 107, 115, 97, 107, 0, 1, 107, 115, 105, 100, 0, 1, 107, 115,
-			111, 114, 107, 105, 109, 2, 112, 0, 1, 108, 2, 18, 68, 12, 0, 1, 108, 2, 18, 74, 17, 67, 18, 69, 0, 1, 108, 2, 107, 17,
-			65, 0, 1, 108, 2, 107, 117, 109, 0, 1, 108, 97, 103, 2, 112, 112, 101, 114, 101, 0, 1, 108, 101, 109, 21, 2, 110, 0, 1, 108,
-			105, 107, 0, 1, 108, 105, 112, 2, 116, 0, 1, 108, 107, 2, 110, 0, 1, 108, 111, 107, 2, 115, 115, 97, 0, 1, 108, 111, 107, 2,
-			115, 116, 0, 1, 108, 112, 2, 109, 12, 0, 1, 108, 115, 2, 103, 0, 1, 109, 2, 115, 107, 101, 0, 1, 109, 2, 115, 115, 101, 116,
-			12, 12, 0, 1, 109, 101, 2, 12, 0, 1, 109, 114, 101, 116, 0, 1, 110, 2, 109, 105, 0, 1, 110, 17, 67, 2, 18, 71, 12, 12,
-			0, 1, 110, 97, 107, 2, 110, 0, 1, 110, 103, 2, 109, 0, 1, 110, 103, 111, 107, 101, 114, 2, 115, 99, 101, 114, 101, 0, 1, 110,
-			107, 2, 106, 0, 1, 110, 111, 2, 109, 0, 1, 112, 2, 107, 101, 114, 12, 12, 0, 1, 112, 2, 108, 0, 1, 112, 2, 108, 32, 0,
-			1, 112, 2, 108, 115, 107, 0, 1, 112, 2, 115, 116, 116, 114, 97, 117, 0, 1, 112, 101, 100, 2, 116, 0, 1, 114, 2, 18, 71, 18,
-			70, 12, 0, 1, 114, 2, 100, 12, 0, 1, 114, 2, 107, 18, 76, 12, 0, 1, 114, 2, 109, 17, 67, 18, 70, 0, 1, 114, 2, 115,
-			116, 12, 0, 1, 114, 17, 67, 2, 109, 18, 69, 0, 1, 114, 17, 67, 2, 115, 107, 0, 1, 114, 18, 71, 2, 106, 0, 1, 114, 18,
-			73, 2, 18, 66, 101, 110, 0, 1, 114, 18, 73, 2, 116, 18, 69, 0, 1, 114, 98, 2, 100, 101, 114, 0, 1, 114, 98, 2, 115, 116,
-			101, 110, 0, 1, 114, 100, 110, 121, 115, 2, 109, 0, 1, 114, 100, 121, 104, 0, 1, 114, 101, 116, 101, 104, 0, 1, 114, 102, 2, 109,
-			97, 0, 1, 114, 102, 2, 115, 115, 12, 12, 0, 1, 114, 103, 2, 115, 115, 105, 12, 0, 1, 114, 107, 2, 109, 0, 1, 114, 107, 2,
-			115, 0, 1, 114, 107, 2, 118, 195, 166, 0, 1, 114, 107, 105, 109, 0, 1, 114, 112, 2, 98, 108, 101, 0, 1, 114, 112, 2, 115, 12,
-			0, 1, 114, 112, 2, 115, 116, 105, 0, 1, 114, 112, 2, 118, 17, 65, 12, 0, 1, 114, 116, 2, 17, 67, 18, 69, 0, 1, 114, 116,
-			2, 106, 97, 110, 0, 1, 114, 116, 2, 109, 0, 1, 114, 116, 2, 109, 109, 101, 12, 0, 1, 114, 116, 2, 115, 98, 101, 107, 101, 110,
-			100, 0, 1, 114, 116, 2, 115, 114, 101, 116, 110, 105, 110, 103, 0, 1, 114, 116, 2, 115, 115, 97, 103, 0, 1, 114, 116, 2, 115, 115,
-			107, 105, 102, 116, 12, 0, 1, 114, 116, 2, 118, 12, 0, 1, 114, 116, 101, 109, 0, 1, 114, 116, 110, 111, 107, 2, 108, 108, 195, 184,
-			114, 0, 1, 115, 2, 108, 12, 0, 1, 115, 2, 108, 108, 121, 115, 12, 12, 0, 1, 115, 2, 112, 114, 97, 0, 1, 116, 2, 116, 17,
-			65, 0, 1, 116, 97, 2, 109, 0, 1, 116, 101, 98, 2, 110, 101, 116, 0, 1, 116, 110, 111, 107, 0, 1, 116, 115, 2, 100, 32, 0,
-			1, 116, 115, 2, 109, 18, 69, 0, 1, 116, 115, 101, 116, 2, 115, 116, 101, 114, 111, 110, 0, 1, 116, 115, 105, 114, 97, 2, 107, 0,
-			1, 116, 117, 97, 2, 12, 0, 1, 118, 2, 107, 18, 76, 12, 0, 1, 122, 105, 107, 115, 2, 102, 114, 101, 110, 0, 2, 18, 66, 18,
-			69, 0, 2, 18, 71, 18, 69, 12, 0, 2, 18, 71, 18, 76, 12, 0, 2, 98, 108, 18, 69, 0, 2, 98, 108, 97, 12, 0, 2, 107,
-			97, 17, 67, 0, 2, 108, 115, 101, 110, 0, 2, 112, 112, 111, 115, 105, 116, 0, 2, 115, 107, 111, 12, 0, 2, 115, 116, 105, 110, 100,
-			105, 0, 2, 118, 101, 106, 12, 0, 2, 118, 105, 12, 0, 8, 17, 67, 2, 32, 0, 8, 107, 2, 100, 12, 0, 8, 116, 115, 2, 114,
-			32, 0, 100, 1, 103, 2, 115, 0, 111, 1, 112, 109, 97, 104, 115, 0, 4, 1, 101, 108, 2, 112, 97, 114, 3, 39, 6, 0, 1, 115,
-			2, 109, 97, 108, 0, 8, 107, 2, 109, 112, 97, 115, 0, 8, 114, 107, 2, 107, 101, 116, 116, 0, 8, 115, 111, 108, 105, 102, 2, 102,
-			105, 32, 0, 8, 116, 2, 98, 97, 107, 0, 105, 114, 101, 1, 109, 101, 109, 3, 39, 6, 112, 12, 0, 4, 1, 107, 2, 109, 97, 3,
-			39, 12, 0, 1, 108, 2, 116, 117, 115, 0, 1, 109, 115, 2, 107, 105, 110, 103, 0, 2, 115, 18, 76, 0, 101, 1, 17, 67, 2, 100,
-			101, 0, 111, 1, 122, 0, 4, 103, 101, 100, 1, 102, 3, 39, 12, 13, 86, 0, 118, 101, 100, 1, 104, 0, 4, 101, 1, 107, 115, 2,
-			100, 101, 3, 39, 13, 0, 101, 1, 114, 116, 101, 98, 2, 100, 101, 0, 4, 114, 1, 107, 2, 107, 195, 165, 98, 101, 3, 39, 34, 0,
-			114, 1, 107, 2, 112, 105, 0, 114, 1, 107, 2, 112, 114, 195, 184, 118, 101, 0, 114, 1, 116, 115, 2, 12, 0, 118, 1, 108, 2, 101,
-			12, 3, 39, 40, 0, 39, 8, 3, 39, 40, 6, 0, 108, 108, 8, 114, 2, 105, 110, 103, 32, 115, 116, 111, 110, 101, 3, 39, 40, 55,
-			0, 4, 97, 109, 101, 115, 1, 115, 3, 39, 40, 65, 89, 0, 108, 109, 101, 115, 8, 104, 2, 32, 0, 104, 105, 111, 3, 39, 40, 107,
-			6, 35, 57, 39, 0, 116, 116, 101, 1, 114, 102, 2, 12, 12, 3, 39, 47, 6, 36, 0, 112, 1, 107, 115, 10, 2, 105, 28, 33, 3,
-			39, 48, 6, 0, 112, 111, 115, 1, 114, 112, 97, 3, 39, 48, 6, 39, 0, 107, 111, 1, 103, 110, 105, 110, 101, 109, 2, 107, 3, 39,
-			49, 6, 114, 0, 107, 111, 110, 1, 107, 3, 39, 49, 6, 114, 68, 0, 107, 108, 97, 104, 111, 109, 97, 3, 39, 49, 55, 110, 107, 6,
-			39, 65, 110, 0, 114, 1, 114, 2, 103, 3, 39, 51, 0, 108, 1, 100, 105, 21, 3, 39, 55, 0, 108, 105, 101, 116, 1, 103, 110, 111,
-			109, 3, 39, 55, 6, 37, 13, 86, 0, 4, 103, 1, 108, 107, 3, 39, 58, 0, 103, 1, 114, 112, 115, 0, 103, 1, 116, 2, 116, 117,
-			114, 0, 103, 8, 118, 2, 32, 0, 118, 1, 108, 2, 32, 109, 105, 103, 32, 0, 103, 101, 1, 108, 107, 3, 39, 58, 4, 13, 0, 103,
-			1, 104, 2, 97, 110, 3, 39, 58, 81, 0, 109, 1, 107, 114, 97, 115, 3, 39, 65, 0, 4, 109, 109, 101, 1, 110, 101, 114, 2, 12,
-			3, 39, 65, 6, 36, 0, 109, 109, 195, 169, 1, 110, 101, 114, 2, 12, 0, 109, 101, 116, 1, 107, 3, 39, 65, 6, 36, 47, 0, 109,
-			109, 101, 114, 115, 1, 107, 2, 32, 3, 39, 65, 6, 109, 34, 89, 0, 109, 97, 110, 8, 3, 39, 65, 6, 110, 50, 0, 103, 110, 101,
-			115, 101, 1, 108, 111, 98, 3, 39, 68, 6, 109, 89, 108, 0, 98, 111, 8, 3, 39, 71, 6, 39, 0, 114, 103, 1, 101, 103, 2, 105,
-			110, 101, 3, 39, 81, 0, 103, 101, 1, 116, 111, 102, 2, 110, 3, 39, 81, 6, 36, 0, 103, 110, 1, 114, 112, 2, 111, 3, 39, 81,
-			50, 0, 112, 104, 105, 97, 1, 115, 3, 39, 83, 6, 37, 110, 0, 4, 118, 1, 107, 2, 101, 110, 100, 3, 39, 84, 0, 118, 1, 107,
-			117, 118, 2, 97, 114, 0, 118, 1, 110, 2, 97, 12, 12, 0, 118, 1, 110, 2, 101, 108, 108, 0, 118, 1, 110, 2, 101, 109, 12, 0,
-			118, 1, 110, 2, 105, 99, 17, 65, 0, 118, 1, 110, 101, 114, 2, 101, 114, 0, 118, 1, 114, 116, 110, 111, 107, 2, 101, 114, 115, 0,
-			118, 1, 116, 2, 195, 184, 114, 0, 118, 1, 116, 97, 2, 101, 114, 0, 118, 2, 195, 166, 114, 110, 12, 0, 118, 1, 108, 115, 2, 97,
-			107, 3, 39, 84, 6, 0, 118, 105, 8, 114, 112, 2, 110, 115, 3, 39, 84, 6, 36, 0, 4, 100, 1, 103, 2, 116, 17, 65, 103, 3,
-			39, 86, 0, 100, 1, 103, 2, 116, 114, 0, 100, 1, 108, 98, 0, 115, 1, 114, 116, 2, 115, 97, 109, 102, 117, 110, 100, 3, 39, 89,
-			0, 115, 104, 1, 107, 2, 101, 114, 12, 3, 39, 91, 0, 115, 104, 1, 104, 115, 2, 111, 110, 101, 3, 39, 91, 6, 0, 105, 1, 116,
-			2, 108, 3, 39, 110, 0, 111, 114, 1, 107, 2, 100, 3, 39, 114, 12, 19, 0, 111, 118, 110, 1, 114, 107, 105, 109, 3, 39, 114, 58,
-			50, 0, 4, 111, 1, 119, 3, 40, 0, 117, 0, 117, 1, 108, 0, 4, 111, 3, 40, 12, 0, 111, 1, 122, 2, 109, 0, 4, 111, 100,
-			1, 102, 3, 40, 12, 72, 0, 111, 100, 1, 104, 0, 117, 99, 104, 101, 1, 100, 3, 40, 12, 91, 0, 111, 107, 101, 1, 114, 98, 3,
-			40, 49, 0, 111, 110, 97, 103, 104, 3, 40, 50, 110, 0, 4, 111, 103, 105, 101, 1, 98, 3, 40, 81, 37, 0, 111, 103, 105, 101, 1,
-			119, 0, 103, 110, 1, 108, 111, 99, 2, 101, 3, 55, 6, 114, 68, 57, 0, 105, 120, 1, 114, 99, 3, 58, 6, 35, 0, 105, 115, 1,
-			110, 97, 100, 3, 58, 6, 112, 0, 105, 110, 116, 1, 112, 2, 32, 3, 58, 109, 68, 0, 105, 110, 116, 101, 110, 101, 1, 112, 3, 58,
-			109, 68, 13, 50, 108, 0, 105, 110, 116, 101, 1, 112, 3, 58, 109, 68, 47, 13, 0, 105, 110, 116, 101, 114, 1, 112, 3, 58, 109, 68,
-			47, 114, 0, 119, 1, 116, 2, 101, 114, 3, 112, 40, 0, 117, 1, 114, 103, 2, 99, 104, 111, 3, 112, 58, 0, 117, 115, 101, 1, 104,
-			3, 112, 58, 89, 0, 4, 1, 107, 2, 98, 98, 101, 114, 3, 113, 0, 1, 112, 2, 114, 0, 1, 112, 2, 115, 116, 109, 111, 100, 0,
-			1, 114, 17, 67, 2, 18, 66, 18, 69, 0, 1, 118, 115, 2, 103, 101, 114, 0, 4, 97, 114, 1, 98, 2, 100, 105, 110, 103, 3, 113,
-			12, 0, 114, 2, 108, 0, 117, 114, 110, 101, 1, 98, 3, 113, 12, 50, 0, 114, 103, 2, 101, 108, 3, 113, 12, 58, 0, 121, 101, 114,
-			8, 102, 3, 113, 13, 57, 6, 36, 0, 121, 101, 114, 101, 110, 8, 102, 3, 113, 13, 57, 6, 36, 108, 50, 0, 121, 101, 114, 1, 102,
-			3, 113, 13, 57, 36, 0, 114, 108, 121, 8, 2, 32, 3, 113, 16, 55, 6, 37, 0, 1, 104, 2, 108, 100, 105, 110, 103, 3, 113, 40,
-			0, 118, 2, 101, 114, 104, 101, 97, 100, 3, 113, 40, 84, 0, 97, 115, 116, 98, 101, 101, 102, 1, 114, 3, 113, 40, 89, 72, 71, 37,
-			83, 0, 116, 105, 111, 110, 1, 109, 119, 111, 108, 115, 3, 113, 40, 91, 20, 13, 50, 0, 4, 1, 103, 2, 107, 97, 114, 116, 12, 3,
-			113, 58, 0, 117, 1, 115, 2, 108, 0, 112, 114, 97, 104, 3, 113, 58, 48, 34, 35, 0, 4, 108, 101, 1, 112, 109, 105, 119, 3, 113,
-			58, 55, 0, 108, 108, 8, 114, 2, 32, 12, 0, 108, 108, 115, 8, 114, 2, 32, 3, 113, 58, 55, 89, 0, 4, 118, 1, 108, 2, 101,
-			110, 12, 12, 3, 113, 84, 0, 118, 1, 118, 2, 101, 0, 4, 1, 17, 67, 2, 17, 67, 11, 101, 116, 32, 12, 12, 3, 114, 0, 1,
-			17, 67, 2, 18, 66, 12, 0, 1, 17, 67, 2, 18, 66, 116, 0, 1, 17, 67, 2, 18, 68, 11, 0, 1, 17, 67, 2, 18, 74, 110,
-			0, 1, 17, 67, 2, 98, 98, 101, 114, 32, 12, 12, 0, 1, 17, 67, 2, 103, 103, 12, 0, 1, 17, 67, 2, 109, 0, 1, 17, 67,
-			2, 109, 18, 69, 0, 1, 17, 67, 2, 114, 114, 0, 1, 17, 67, 2, 115, 17, 67, 18, 76, 12, 0, 1, 17, 67, 102, 2, 116, 0,
-			1, 18, 66, 2, 108, 100, 0, 1, 18, 66, 2, 109, 0, 1, 18, 67, 2, 18, 71, 11, 101, 12, 12, 0, 1, 18, 67, 2, 18, 71,
-			108, 101, 12, 0, 1, 18, 67, 2, 115, 116, 0, 1, 18, 68, 2, 18, 74, 0, 1, 18, 71, 2, 116, 0, 1, 18, 73, 2, 102, 0,
-			1, 18, 73, 2, 108, 17, 67, 12, 0, 1, 18, 73, 2, 116, 0, 1, 18, 73, 2, 116, 116, 0, 1, 18, 75, 2, 110, 17, 67, 0,
-			1, 97, 17, 67, 2, 115, 0, 1, 98, 2, 18, 66, 18, 69, 0, 1, 98, 2, 115, 115, 0, 1, 99, 2, 99, 107, 0, 1, 99, 2,
-			114, 115, 0, 1, 100, 2, 103, 32, 12, 0, 1, 100, 2, 110, 97, 108, 100, 0, 1, 102, 2, 110, 116, 0, 1, 103, 2, 100, 116, 12,
-			0, 1, 104, 2, 99, 107, 12, 0, 1, 104, 2, 102, 0, 1, 104, 2, 108, 108, 12, 0, 1, 104, 2, 110, 103, 0, 1, 104, 2, 115,
-			112, 105, 99, 101, 0, 1, 104, 99, 2, 107, 12, 0, 1, 104, 116, 2, 109, 97, 115, 32, 0, 1, 106, 2, 18, 66, 11, 18, 76, 0,
-			1, 106, 2, 98, 21, 0, 1, 106, 2, 114, 116, 0, 1, 107, 2, 98, 108, 105, 110, 103, 0, 1, 107, 2, 103, 108, 12, 0, 1, 107,
-			2, 103, 116, 12, 0, 1, 107, 2, 110, 17, 67, 0, 1, 107, 2, 112, 97, 114, 0, 1, 107, 2, 115, 116, 32, 111, 103, 32, 108, 111,
-			103, 105, 0, 1, 107, 2, 115, 116, 98, 97, 114, 0, 1, 107, 2, 115, 116, 112, 108, 97, 110, 0, 1, 107, 2, 115, 116, 112, 114, 105,
-			115, 0, 1, 107, 2, 115, 116, 114, 195, 165, 100, 0, 1, 107, 2, 115, 116, 115, 107, 111, 108, 101, 0, 1, 107, 2, 115, 116, 116, 105,
-			108, 115, 107, 117, 100, 0, 1, 107, 2, 115, 116, 118, 97, 110, 101, 0, 1, 107, 32, 112, 97, 114, 107, 115, 2, 115, 116, 0, 1, 107,
-			101, 98, 2, 115, 116, 0, 1, 107, 101, 115, 108, 101, 104, 2, 115, 116, 0, 1, 107, 111, 114, 102, 2, 115, 116, 0, 1, 107, 115, 2,
-			100, 0, 1, 107, 115, 100, 101, 104, 100, 110, 117, 115, 2, 115, 116, 0, 1, 107, 115, 103, 97, 100, 114, 101, 118, 104, 2, 115, 116, 0,
-			1, 107, 121, 111, 98, 2, 116, 0, 1, 108, 2, 18, 66, 11, 18, 76, 0, 1, 108, 2, 100, 116, 114, 195, 166, 107, 0, 1, 108, 2,
-			103, 102, 105, 108, 0, 1, 108, 2, 116, 0, 1, 108, 18, 71, 2, 18, 74, 0, 1, 108, 32, 101, 107, 107, 166, 195, 114, 116, 2, 100,
-			0, 1, 108, 32, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 114, 101, 107, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 115,
-			101, 107, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 116, 101, 107, 107, 117, 114, 116, 2, 100, 0, 1, 108, 98, 2, 107, 12, 0,
-			1, 108, 100, 114, 111, 106, 2, 100, 0, 1, 108, 102, 2, 115, 0, 1, 108, 107, 2, 115, 116, 114, 101, 0, 1, 108, 108, 97, 102, 2,
-			115, 0, 1, 108, 114, 111, 102, 2, 100, 115, 0, 1, 109, 2, 110, 105, 116, 111, 114, 0, 1, 110, 2, 110, 17, 67, 0, 1, 110, 2,
-			115, 32, 0, 1, 110, 107, 2, 116, 110, 0, 1, 110, 107, 2, 116, 116, 0, 1, 110, 115, 2, 116, 0, 1, 112, 2, 108, 116, 0, 1,
-			112, 2, 112, 105, 100, 111, 108, 12, 12, 0, 1, 112, 107, 99, 97, 106, 2, 116, 0, 1, 112, 115, 2, 110, 115, 111, 114, 0, 1, 114,
-			2, 17, 67, 11, 12, 12, 0, 1, 114, 2, 99, 107, 0, 1, 114, 2, 109, 107, 97, 103, 101, 0, 1, 114, 18, 73, 2, 18, 66, 0,
-			1, 114, 18, 73, 2, 116, 0, 1, 114, 98, 2, 100, 12, 0, 1, 114, 100, 2, 115, 99, 104, 101, 0, 1, 114, 100, 32, 116, 101, 2,
-			103, 0, 1, 114, 102, 2, 109, 0, 1, 114, 102, 2, 110, 116, 0, 1, 114, 102, 2, 115, 116, 12, 0, 1, 114, 107, 2, 107, 101, 116,
-			17, 67, 0, 1, 114, 108, 97, 118, 104, 2, 115, 0, 1, 114, 112, 2, 102, 32, 0, 1, 114, 116, 2, 106, 12, 0, 1, 114, 116, 2,
-			107, 108, 0, 1, 114, 116, 2, 108, 100, 0, 1, 114, 116, 2, 116, 115, 0, 1, 114, 116, 110, 111, 107, 2, 108, 0, 1, 114, 116, 120,
-			111, 102, 2, 116, 0, 1, 115, 2, 106, 97, 12, 0, 1, 115, 21, 2, 110, 32, 0, 1, 115, 21, 2, 110, 115, 32, 0, 1, 116, 2,
-			103, 116, 12, 0, 1, 116, 2, 108, 107, 0, 1, 116, 2, 109, 97, 115, 32, 0, 1, 116, 2, 116, 0, 1, 116, 115, 2, 112, 12, 12,
-			0, 1, 118, 2, 103, 0, 1, 118, 2, 103, 116, 12, 0, 1, 118, 108, 101, 115, 2, 112, 0, 2, 18, 68, 25, 12, 0, 2, 18, 71,
-			12, 0, 2, 98, 98, 17, 65, 12, 12, 12, 0, 2, 99, 104, 101, 0, 2, 102, 17, 67, 0, 2, 107, 0, 2, 108, 100, 32, 0, 2,
-			108, 100, 101, 0, 2, 108, 100, 101, 32, 0, 2, 109, 32, 0, 2, 109, 97, 100, 114, 101, 115, 115, 101, 0, 2, 109, 101, 103, 110, 0,
-			2, 109, 107, 0, 2, 109, 114, 195, 165, 100, 0, 2, 109, 115, 0, 2, 109, 116, 97, 108, 101, 0, 2, 112, 97, 100, 12, 0, 2, 112,
-			101, 102, 116, 101, 114, 12, 0, 2, 112, 105, 108, 100, 110, 101, 12, 0, 2, 112, 111, 102, 114, 101, 0, 2, 112, 111, 102, 114, 101, 12,
-			0, 2, 114, 103, 97, 12, 0, 2, 115, 17, 67, 18, 69, 0, 2, 116, 116, 97, 119, 97, 0, 2, 116, 116, 101, 110, 100, 101, 0, 2,
-			116, 116, 111, 0, 2, 120, 0, 8, 2, 108, 105, 118, 101, 114, 0, 8, 2, 109, 97, 114, 0, 8, 98, 2, 110, 100, 32, 0, 8, 98,
-			2, 110, 110, 32, 0, 8, 100, 2, 110, 32, 0, 8, 104, 2, 108, 105, 100, 97, 121, 0, 8, 104, 2, 116, 32, 0, 8, 108, 2, 103,
-			32, 0, 8, 108, 2, 115, 0, 8, 109, 2, 114, 116, 0, 8, 112, 2, 116, 32, 0, 8, 114, 2, 98, 105, 110, 12, 12, 0, 100, 1,
-			108, 107, 2, 115, 0, 100, 1, 114, 116, 2, 115, 0, 103, 1, 107, 101, 114, 2, 110, 111, 115, 99, 101, 114, 101, 0, 103, 2, 102, 105,
-			114, 115, 0, 103, 2, 116, 114, 101, 100, 105, 118, 101, 0, 114, 1, 110, 111, 100, 0, 114, 1, 112, 2, 99, 0, 114, 1, 116, 2, 32,
-			0, 114, 1, 116, 2, 101, 110, 0, 114, 1, 116, 2, 110, 121, 0, 114, 1, 116, 2, 115, 0, 114, 1, 116, 111, 109, 0, 114, 1, 116,
-			115, 97, 112, 0, 117, 114, 1, 98, 114, 97, 104, 0, 1, 112, 2, 115, 116, 121, 114, 12, 3, 114, 6, 0, 4, 111, 114, 1, 108, 102,
-			3, 114, 12, 0, 111, 114, 101, 1, 109, 0, 114, 1, 107, 2, 112, 0, 114, 1, 116, 2, 116, 3, 114, 12, 19, 0, 105, 108, 8, 2,
-			32, 3, 114, 12, 37, 59, 0, 105, 115, 1, 110, 105, 108, 108, 105, 3, 114, 12, 57, 0, 114, 103, 2, 12, 3, 114, 12, 58, 0, 4,
-			103, 1, 100, 108, 108, 117, 98, 3, 114, 12, 81, 0, 114, 103, 2, 105, 0, 114, 115, 1, 107, 3, 114, 12, 89, 0, 4, 114, 1, 114,
-			114, 101, 116, 3, 114, 34, 0, 114, 2, 107, 12, 12, 0, 114, 101, 103, 111, 110, 112, 105, 110, 101, 3, 114, 34, 36, 81, 114, 50, 15,
-			48, 35, 57, 50, 0, 4, 103, 1, 110, 107, 3, 114, 40, 0, 118, 2, 101, 12, 0, 118, 2, 114, 101, 0, 116, 101, 108, 101, 1, 107,
-			2, 116, 3, 114, 47, 13, 55, 6, 109, 0, 116, 100, 111, 103, 1, 104, 3, 114, 47, 72, 114, 81, 0, 4, 99, 99, 1, 114, 98, 2,
-			111, 108, 105, 3, 114, 49, 0, 103, 104, 1, 103, 32, 110, 97, 118, 0, 110, 110, 121, 1, 115, 3, 114, 50, 37, 0, 110, 116, 97, 110,
-			97, 1, 109, 3, 114, 50, 47, 6, 110, 50, 110, 0, 110, 100, 1, 108, 98, 3, 114, 50, 72, 0, 110, 100, 111, 110, 1, 108, 3, 114,
-			50, 72, 114, 50, 0, 110, 103, 1, 107, 2, 114, 101, 115, 3, 114, 50, 81, 0, 110, 111, 1, 100, 2, 118, 97, 110, 3, 114, 50, 108,
-			0, 108, 105, 115, 104, 1, 112, 3, 114, 55, 37, 91, 0, 108, 103, 116, 1, 115, 3, 114, 55, 47, 0, 108, 108, 97, 114, 1, 100, 3,
-			114, 55, 114, 0, 105, 1, 110, 97, 104, 3, 114, 57, 0, 4, 105, 110, 116, 1, 112, 2, 101, 114, 101, 3, 114, 57, 50, 47, 0, 105,
-			110, 116, 1, 112, 32, 116, 115, 101, 119, 0, 121, 99, 101, 1, 114, 3, 114, 57, 89, 0, 121, 101, 117, 114, 1, 118, 3, 114, 57, 118,
-			12, 34, 0, 4, 118, 1, 17, 67, 2, 12, 3, 114, 58, 0, 118, 1, 108, 112, 2, 12, 12, 0, 118, 2, 101, 114, 115, 12, 12, 0,
-			118, 2, 110, 0, 103, 114, 101, 1, 108, 3, 114, 58, 34, 114, 0, 103, 110, 1, 17, 67, 3, 114, 58, 50, 0, 118, 106, 101, 116, 1,
-			115, 3, 114, 58, 57, 6, 109, 47, 0, 109, 107, 111, 2, 115, 116, 3, 114, 65, 49, 114, 0, 109, 98, 97, 121, 1, 98, 3, 114, 65,
-			71, 4, 109, 57, 0, 109, 101, 98, 97, 99, 107, 1, 99, 3, 114, 65, 71, 6, 110, 49, 0, 4, 110, 1, 108, 108, 97, 98, 3, 114,
-			68, 0, 110, 1, 110, 110, 97, 2, 99, 17, 65, 0, 110, 1, 112, 109, 97, 116, 0, 110, 1, 112, 109, 111, 112, 0, 110, 1, 112, 117,
-			107, 0, 110, 1, 116, 101, 98, 0, 103, 110, 97, 99, 1, 99, 3, 114, 68, 35, 49, 0, 98, 121, 8, 114, 2, 110, 12, 12, 3, 114,
-			71, 36, 0, 4, 100, 1, 118, 2, 107, 97, 3, 114, 72, 0, 111, 100, 1, 108, 98, 0, 111, 100, 1, 108, 102, 0, 100, 121, 1, 98,
-			3, 114, 72, 37, 0, 100, 121, 98, 117, 105, 108, 100, 101, 114, 1, 98, 3, 114, 72, 37, 71, 37, 55, 72, 114, 0, 100, 108, 101, 1,
-			106, 3, 114, 72, 55, 108, 0, 100, 102, 97, 116, 104, 101, 114, 1, 103, 3, 114, 72, 83, 112, 86, 114, 0, 4, 1, 108, 2, 103, 98,
-			111, 103, 3, 114, 81, 0, 103, 1, 107, 2, 110, 105, 116, 0, 103, 1, 108, 98, 0, 103, 1, 109, 115, 2, 32, 0, 103, 1, 114, 103,
-			0, 103, 103, 1, 114, 103, 0, 114, 103, 2, 105, 101, 0, 117, 103, 1, 100, 0, 103, 103, 121, 1, 114, 103, 3, 114, 81, 37, 0, 120,
-			102, 111, 114, 100, 3, 114, 81, 89, 83, 114, 12, 72, 0, 117, 103, 104, 3, 114, 83, 0, 102, 102, 115, 105, 100, 101, 3, 114, 83, 89,
-			6, 35, 57, 72, 0, 116, 104, 1, 114, 98, 2, 101, 114, 3, 114, 86, 0, 100, 114, 101, 116, 1, 108, 2, 12, 3, 114, 86, 34, 111,
-			47, 0, 4, 114, 115, 101, 116, 1, 107, 32, 116, 101, 3, 114, 89, 6, 109, 47, 0, 114, 115, 101, 116, 116, 1, 107, 0, 115, 107, 118,
-			97, 1, 109, 3, 114, 89, 49, 84, 6, 110, 0, 115, 99, 97, 114, 3, 114, 89, 49, 112, 0, 115, 99, 111, 101, 1, 114, 3, 114, 89,
-			49, 113, 58, 0, 115, 98, 111, 114, 110, 101, 3, 114, 89, 71, 4, 113, 50, 0, 8, 114, 98, 2, 100, 121, 3, 115, 58, 0, 117, 114,
-			98, 111, 110, 1, 98, 3, 118, 12, 71, 13, 50, 0, 97, 107, 108, 97, 110, 100, 3, 118, 58, 49, 55, 13, 50, 72, 0, 101, 98, 98,
-			101, 108, 115, 1, 103, 3, 118, 71, 13, 55, 89, 0, 7, 6, 112, 0, 4, 1, 109, 121, 115, 2, 116, 111, 109, 3, 0, 2, 115, 121,
-			107, 3, 0, 4, 3, 48, 0, 1, 10, 2, 32, 0, 112, 0, 117, 114, 118, 105, 115, 8, 3, 48, 6, 108, 12, 84, 36, 89, 0, 195,
-			165, 8, 2, 115, 107, 101, 3, 48, 6, 113, 0, 195, 165, 8, 2, 14, 128, 132, 130, 3, 48, 6, 114, 0, 4, 114, 111, 116, 101, 103,
-			101, 3, 48, 34, 39, 72, 13, 91, 6, 36, 0, 114, 111, 116, 101, 103, 195, 169, 0, 114, 101, 115, 98, 121, 116, 101, 114, 105, 97, 110,
-			3, 48, 34, 109, 89, 71, 116, 47, 109, 34, 37, 6, 110, 50, 0, 105, 110, 99, 101, 110, 101, 122, 3, 48, 35, 12, 68, 89, 50, 6,
-			36, 0, 105, 112, 101, 108, 105, 110, 101, 3, 48, 35, 57, 48, 55, 35, 57, 50, 0, 195, 169, 116, 97, 105, 110, 8, 3, 48, 36, 47,
-			6, 110, 68, 0, 101, 110, 101, 108, 111, 112, 101, 3, 48, 36, 50, 6, 109, 55, 39, 48, 37, 0, 105, 116, 99, 104, 112, 105, 110, 101,
-			3, 48, 36, 87, 91, 48, 35, 12, 57, 50, 0, 105, 115, 115, 111, 105, 114, 3, 48, 36, 89, 58, 6, 112, 12, 0, 101, 116, 101, 8,
-			2, 32, 3, 48, 37, 12, 47, 0, 101, 116, 101, 121, 8, 3, 48, 37, 12, 47, 37, 0, 101, 97, 110, 117, 116, 3, 48, 37, 12, 50,
-			114, 72, 0, 101, 97, 99, 101, 3, 48, 37, 12, 89, 0, 105, 99, 107, 117, 2, 112, 3, 48, 37, 49, 6, 114, 0, 105, 103, 103, 121,
-			8, 3, 48, 37, 81, 37, 0, 112, 1, 111, 116, 2, 111, 115, 116, 3, 48, 48, 0, 114, 97, 108, 105, 110, 101, 3, 48, 51, 112, 55,
-			37, 50, 6, 36, 0, 105, 101, 114, 114, 101, 3, 48, 57, 109, 12, 34, 0, 105, 97, 102, 8, 3, 48, 57, 112, 83, 0, 111, 105, 114,
-			111, 116, 8, 3, 48, 58, 112, 34, 6, 39, 0, 111, 105, 116, 105, 101, 114, 8, 3, 48, 58, 112, 47, 57, 6, 36, 0, 97, 105, 103,
-			101, 3, 48, 109, 12, 57, 75, 0, 101, 105, 103, 110, 111, 105, 114, 3, 48, 109, 50, 57, 58, 6, 112, 12, 0, 97, 105, 110, 116, 98,
-			97, 108, 108, 3, 48, 109, 57, 50, 47, 71, 113, 12, 55, 0, 97, 105, 108, 108, 101, 2, 116, 3, 48, 110, 57, 6, 109, 0, 97, 115,
-			97, 100, 101, 110, 97, 3, 48, 110, 89, 110, 72, 6, 37, 50, 110, 0, 97, 115, 115, 97, 103, 101, 114, 8, 3, 48, 110, 89, 110, 89,
-			57, 6, 36, 34, 0, 97, 108, 109, 2, 32, 98, 101, 97, 99, 104, 3, 48, 112, 12, 65, 0, 97, 114, 102, 97, 105, 116, 3, 48, 112,
-			83, 6, 109, 0, 111, 115, 116, 104, 117, 109, 3, 48, 113, 89, 47, 107, 6, 40, 65, 0, 4, 195, 165, 2, 102, 117, 110, 100, 3, 48,
-			114, 0, 195, 165, 2, 108, 195, 166, 103, 0, 195, 165, 2, 118, 105, 114, 107, 0, 195, 165, 8, 2, 108, 105, 100, 101, 0, 195, 165, 8,
-			2, 118, 105, 115, 0, 111, 110, 121, 3, 48, 114, 50, 37, 0, 117, 110, 99, 104, 108, 105, 110, 101, 3, 48, 114, 50, 91, 55, 35, 57,
-			50, 0, 101, 97, 114, 108, 8, 2, 32, 3, 48, 118, 12, 55, 0, 101, 114, 116, 104, 3, 48, 118, 12, 87, 0, 101, 114, 107, 105, 110,
-			115, 3, 48, 118, 49, 36, 50, 89, 0, 101, 114, 99, 121, 3, 48, 118, 89, 37, 0, 101, 117, 103, 101, 111, 116, 3, 48, 118, 91, 6,
-			39, 0, 98, 1, 109, 97, 99, 2, 101, 108, 3, 71, 0, 4, 104, 1, 101, 115, 111, 106, 3, 83, 0, 104, 1, 108, 97, 114, 0, 104,
-			97, 101, 108, 1, 97, 114, 3, 83, 110, 6, 109, 55, 0, 115, 101, 117, 3, 89, 118, 58, 0, 7, 6, 113, 0, 117, 1, 101, 116, 2,
-			105, 108, 97, 3, 6, 49, 0, 117, 101, 1, 21, 3, 8, 49, 0, 3, 49, 0, 117, 101, 116, 1, 117, 111, 98, 3, 49, 7, 36, 0,
-			117, 105, 99, 104, 101, 3, 49, 37, 91, 0, 4, 117, 105, 106, 111, 116, 101, 3, 49, 37, 91, 6, 114, 47, 0, 117, 105, 120, 111, 116,
-			101, 0, 117, 101, 101, 110, 3, 49, 58, 37, 12, 50, 0, 117, 97, 114, 116, 101, 114, 3, 49, 58, 113, 47, 114, 0, 117, 2, 105, 115,
-			108, 105, 110, 103, 3, 49, 84, 0, 117, 105, 2, 122, 3, 49, 84, 37, 0, 117, 101, 98, 101, 99, 3, 49, 84, 37, 71, 6, 109, 49,
-			0, 117, 101, 122, 3, 49, 109, 12, 89, 0, 7, 6, 114, 0, 4, 1, 101, 2, 101, 32, 24, 3, 0, 4, 1, 111, 112, 115, 110, 97,
-			114, 116, 2, 116, 3, 0, 4, 1, 166, 195, 2, 101, 114, 32, 24, 3, 0, 100, 1, 165, 195, 104, 3, 0, 105, 1, 10, 2, 115, 107,
-			28, 33, 3, 8, 51, 37, 0, 100, 1, 165, 195, 104, 2, 101, 3, 12, 0, 97, 109, 105, 114, 101, 122, 3, 21, 101, 115, 0, 4, 1,
-			98, 3, 34, 0, 1, 101, 104, 2, 32, 0, 1, 101, 115, 2, 32, 0, 1, 101, 118, 104, 0, 2, 25, 0, 4, 101, 1, 97, 105, 100,
-			3, 34, 6, 36, 0, 101, 1, 114, 97, 105, 100, 0, 101, 110, 111, 105, 114, 3, 34, 13, 50, 58, 6, 112, 12, 0, 101, 118, 111, 105,
-			114, 1, 32, 117, 97, 3, 34, 13, 58, 6, 35, 12, 34, 0, 105, 99, 107, 115, 104, 97, 119, 3, 34, 36, 49, 91, 114, 12, 0, 105,
-			99, 107, 115, 104, 97, 119, 101, 114, 3, 34, 36, 49, 91, 114, 12, 114, 0, 101, 103, 1, 166, 195, 115, 2, 101, 110, 3, 34, 36, 57,
-			0, 101, 115, 101, 114, 118, 111, 105, 114, 8, 3, 34, 36, 89, 109, 34, 84, 39, 6, 35, 12, 0, 101, 115, 101, 114, 118, 111, 105, 114,
-			3, 34, 36, 89, 109, 34, 84, 39, 35, 12, 0, 4, 101, 97, 108, 105, 116, 121, 3, 34, 37, 6, 110, 55, 37, 47, 37, 0, 101, 97,
-			108, 105, 116, 121, 1, 32, 108, 97, 117, 116, 114, 105, 118, 0, 105, 111, 106, 97, 3, 34, 37, 6, 114, 49, 110, 0, 101, 101, 99, 101,
-			3, 34, 37, 12, 89, 0, 101, 99, 117, 116, 3, 34, 37, 49, 114, 72, 0, 101, 115, 101, 97, 114, 99, 104, 3, 34, 37, 89, 6, 118,
-			12, 76, 0, 105, 99, 104, 101, 108, 105, 101, 117, 3, 34, 37, 91, 55, 57, 6, 118, 0, 111, 117, 103, 101, 3, 34, 40, 12, 91, 0,
-			4, 100, 1, 97, 103, 2, 101, 3, 34, 72, 0, 100, 1, 97, 115, 2, 101, 108, 0, 100, 1, 101, 118, 2, 101, 25, 25, 0, 100, 1,
-			111, 2, 101, 108, 12, 12, 0, 100, 1, 111, 2, 101, 110, 12, 12, 0, 100, 1, 117, 98, 2, 101, 25, 0, 100, 1, 121, 2, 101, 32,
-			0, 97, 106, 97, 104, 3, 34, 112, 75, 110, 0, 4, 101, 1, 21, 2, 32, 3, 34, 114, 0, 101, 1, 103, 2, 32, 0, 101, 1, 118,
-			97, 104, 0, 111, 113, 117, 101, 102, 111, 114, 116, 3, 34, 114, 49, 83, 6, 114, 12, 0, 111, 98, 105, 101, 8, 3, 34, 114, 71, 37,
-			0, 111, 100, 110, 101, 121, 3, 34, 114, 72, 50, 37, 0, 111, 103, 101, 114, 3, 34, 114, 75, 114, 0, 117, 115, 115, 101, 108, 108, 3,
-			34, 114, 89, 14, 55, 0, 117, 115, 104, 109, 111, 114, 101, 3, 34, 114, 91, 65, 113, 12, 0, 111, 97, 100, 8, 2, 32, 3, 34, 118,
-			58, 72, 0, 4, 3, 51, 0, 114, 0, 105, 103, 104, 116, 3, 51, 6, 35, 57, 47, 0, 101, 8, 116, 110, 101, 2, 32, 3, 51, 6,
-			36, 0, 105, 1, 10, 2, 28, 33, 3, 51, 7, 37, 0, 105, 99, 104, 105, 101, 3, 51, 37, 76, 37, 0, 101, 103, 103, 97, 101, 3,
-			51, 109, 81, 109, 57, 0, 101, 97, 103, 97, 110, 3, 51, 109, 81, 110, 50, 0, 101, 115, 111, 108, 117, 116, 105, 111, 110, 3, 51, 109,
-			89, 39, 55, 40, 91, 6, 39, 50, 0, 117, 110, 1, 32, 101, 109, 111, 104, 3, 51, 114, 50, 0, 104, 101, 117, 2, 109, 97, 3, 51,
-			114, 57, 0, 117, 103, 98, 121, 3, 51, 114, 81, 71, 37, 0, 104, 111, 100, 101, 8, 3, 51, 118, 58, 72, 0, 100, 1, 111, 2, 114,
-			105, 110, 3, 72, 0, 4, 101, 1, 101, 100, 2, 115, 3, 114, 0, 101, 1, 101, 106, 2, 115, 0, 101, 1, 166, 195, 2, 32, 24, 0,
-			101, 1, 166, 195, 108, 0, 7, 6, 115, 0, 1, 105, 109, 109, 111, 107, 2, 101, 3, 0, 4, 1, 101, 99, 99, 117, 115, 3, 6, 0,
-			1, 105, 109, 111, 114, 112, 109, 111, 107, 0, 97, 99, 101, 1, 108, 97, 3, 6, 89, 110, 89, 0, 1, 105, 109, 109, 111, 107, 2, 32,
-			3, 8, 0, 4, 99, 1, 97, 98, 97, 116, 2, 111, 3, 8, 89, 49, 0, 99, 1, 105, 115, 110, 97, 114, 102, 2, 111, 0, 111, 109,
-			1, 21, 21, 3, 8, 89, 114, 65, 0, 105, 101, 103, 102, 114, 105, 101, 100, 3, 21, 100, 101, 0, 97, 105, 110, 116, 101, 3, 21, 102,
-			114, 0, 105, 103, 110, 111, 114, 101, 3, 21, 105, 116, 0, 4, 3, 89, 0, 1, 10, 2, 32, 28, 33, 14, 128, 128, 129, 0, 1, 101,
-			99, 98, 97, 0, 1, 101, 99, 101, 114, 0, 1, 101, 99, 120, 101, 0, 1, 101, 100, 101, 108, 114, 101, 100, 110, 97, 0, 1, 110, 101,
-			100, 105, 115, 101, 114, 0, 1, 110, 101, 114, 101, 102, 114, 101, 116, 110, 105, 0, 1, 110, 101, 116, 115, 105, 115, 107, 101, 0, 1, 121,
-			107, 0, 2, 17, 65, 0, 2, 99, 105, 103, 97, 114, 0, 2, 105, 101, 0, 2, 106, 0, 2, 111, 109, 107, 111, 115, 116, 12, 0, 2,
-			115, 104, 0, 99, 2, 101, 0, 115, 0, 99, 1, 105, 100, 2, 105, 112, 3, 89, 6, 0, 99, 101, 110, 101, 1, 105, 2, 115, 3, 89,
-			6, 36, 50, 13, 0, 111, 109, 1, 111, 109, 111, 114, 107, 3, 89, 6, 39, 65, 0, 97, 105, 110, 116, 3, 89, 6, 109, 57, 50, 72,
-			0, 4, 105, 103, 1, 32, 97, 114, 102, 2, 32, 3, 89, 35, 57, 0, 105, 103, 1, 32, 100, 101, 114, 2, 32, 0, 105, 103, 1, 32,
-			100, 111, 108, 2, 32, 0, 105, 103, 1, 32, 100, 184, 195, 98, 2, 32, 0, 105, 103, 1, 32, 100, 184, 195, 107, 115, 2, 32, 0, 105,
-			103, 1, 32, 100, 184, 195, 114, 98, 2, 32, 0, 105, 103, 1, 32, 101, 2, 32, 12, 0, 105, 103, 1, 32, 101, 2, 32, 116, 105, 108,
-			0, 105, 103, 1, 32, 101, 100, 2, 32, 0, 105, 103, 1, 32, 101, 100, 110, 101, 118, 2, 32, 0, 105, 103, 1, 32, 101, 103, 103, 121,
-			104, 2, 32, 0, 105, 103, 1, 32, 101, 108, 184, 195, 102, 2, 32, 0, 105, 103, 1, 32, 101, 114, 166, 195, 108, 107, 114, 101, 2, 32,
-			0, 105, 103, 1, 32, 101, 114, 184, 195, 103, 2, 32, 100, 101, 116, 0, 105, 103, 1, 32, 103, 101, 110, 115, 2, 32, 0, 105, 103, 1,
-			32, 103, 110, 97, 118, 116, 2, 32, 0, 105, 103, 1, 32, 103, 111, 108, 115, 2, 32, 0, 105, 103, 1, 32, 103, 111, 116, 2, 32, 0,
-			105, 103, 1, 32, 107, 97, 2, 32, 0, 105, 103, 1, 32, 107, 105, 103, 2, 32, 0, 105, 103, 1, 32, 107, 108, 111, 102, 32, 114, 101,
-			2, 32, 0, 105, 103, 1, 32, 108, 105, 116, 2, 32, 0, 105, 103, 1, 32, 109, 111, 107, 2, 32, 0, 105, 103, 1, 32, 110, 17, 65,
-			2, 32, 116, 105, 108, 0, 105, 103, 1, 32, 110, 97, 104, 2, 32, 0, 105, 103, 1, 32, 110, 97, 109, 2, 32, 0, 105, 103, 1, 32,
-			110, 101, 100, 2, 32, 0, 105, 103, 1, 32, 110, 117, 104, 2, 32, 0, 105, 103, 1, 32, 111, 114, 116, 101, 98, 2, 32, 0, 105, 103,
-			1, 32, 114, 101, 2, 32, 0, 105, 103, 1, 32, 114, 101, 2, 32, 116, 105, 108, 0, 105, 103, 1, 32, 114, 101, 115, 2, 32, 111, 109,
-			0, 105, 103, 1, 32, 114, 111, 102, 2, 32, 0, 105, 103, 1, 32, 114, 111, 114, 116, 101, 98, 2, 32, 0, 105, 103, 1, 32, 114, 165,
-			195, 2, 32, 0, 105, 103, 1, 32, 114, 165, 195, 108, 115, 2, 32, 0, 105, 103, 1, 32, 114, 184, 195, 2, 32, 0, 105, 103, 1, 32,
-			116, 2, 32, 0, 105, 103, 1, 32, 116, 97, 115, 2, 32, 0, 105, 103, 1, 32, 116, 101, 2, 32, 0, 105, 103, 1, 32, 116, 101, 2,
-			32, 116, 105, 108, 0, 105, 103, 1, 32, 118, 97, 103, 2, 32, 0, 105, 103, 1, 32, 118, 97, 103, 2, 32, 116, 105, 108, 0, 105, 103,
-			1, 32, 165, 195, 108, 115, 2, 32, 0, 105, 103, 1, 32, 165, 195, 112, 2, 32, 0, 105, 103, 1, 32, 165, 195, 115, 2, 32, 111, 109,
-			0, 105, 103, 1, 32, 165, 195, 116, 115, 2, 32, 0, 105, 103, 8, 2, 32, 97, 102, 32, 0, 105, 103, 8, 2, 32, 97, 108, 101, 110,
-			101, 0, 105, 103, 8, 2, 32, 102, 111, 114, 0, 105, 103, 8, 2, 32, 105, 32, 100, 101, 17, 67, 0, 105, 103, 8, 2, 32, 105, 110,
-			100, 32, 0, 105, 103, 8, 2, 32, 109, 101, 100, 0, 105, 103, 8, 2, 32, 111, 109, 0, 105, 103, 8, 2, 32, 111, 118, 101, 114, 0,
-			105, 103, 8, 2, 32, 112, 195, 165, 32, 0, 105, 103, 8, 2, 32, 115, 101, 108, 118, 0, 105, 103, 8, 2, 32, 117, 100, 32, 0, 105,
-			103, 8, 32, 101, 100, 2, 32, 116, 105, 108, 0, 105, 103, 8, 32, 102, 97, 2, 32, 0, 105, 103, 8, 32, 105, 2, 32, 0, 105, 103,
-			8, 32, 110, 97, 104, 2, 32, 0, 105, 103, 104, 116, 115, 101, 101, 105, 110, 103, 3, 89, 35, 57, 47, 89, 37, 12, 36, 68, 0, 99,
-			101, 110, 101, 3, 89, 36, 50, 108, 0, 99, 101, 110, 101, 114, 3, 89, 36, 50, 114, 0, 4, 105, 103, 1, 32, 101, 114, 97, 98, 2,
-			32, 3, 89, 37, 0, 105, 103, 1, 32, 101, 114, 97, 98, 2, 32, 116, 105, 108, 0, 105, 103, 2, 32, 100, 101, 116, 0, 105, 103, 2,
-			32, 117, 110, 100, 115, 107, 121, 108, 100, 12, 0, 101, 97, 116, 116, 108, 101, 3, 89, 37, 6, 110, 47, 13, 55, 0, 101, 121, 109, 111,
-			117, 114, 8, 3, 89, 37, 12, 65, 113, 12, 0, 105, 111, 110, 8, 3, 89, 37, 12, 114, 50, 0, 4, 105, 100, 110, 101, 121, 3, 89,
-			37, 72, 50, 37, 0, 121, 100, 110, 101, 121, 0, 105, 99, 105, 108, 105, 101, 110, 3, 89, 37, 89, 6, 37, 55, 37, 13, 50, 0, 101,
-			97, 115, 111, 110, 8, 3, 89, 37, 89, 13, 50, 0, 111, 105, 103, 110, 3, 89, 39, 110, 68, 0, 105, 111, 117, 120, 3, 89, 40, 12,
-			0, 117, 114, 1, 97, 108, 3, 89, 40, 34, 0, 117, 98, 115, 116, 105, 116, 117, 116, 105, 111, 110, 8, 3, 89, 40, 71, 89, 47, 37,
-			47, 40, 91, 6, 39, 50, 0, 117, 98, 115, 116, 105, 116, 117, 116, 105, 111, 110, 3, 89, 40, 71, 89, 47, 37, 47, 40, 91, 39, 50,
-			0, 116, 101, 118, 101, 8, 3, 89, 47, 37, 12, 84, 0, 116, 101, 118, 101, 110, 8, 3, 89, 47, 37, 12, 84, 13, 50, 0, 116, 101,
-			112, 104, 101, 110, 3, 89, 47, 37, 84, 13, 50, 0, 116, 114, 105, 107, 101, 3, 89, 47, 51, 35, 57, 49, 0, 116, 101, 97, 108, 116,
-			104, 3, 89, 47, 109, 55, 87, 0, 116, 97, 116, 101, 1, 32, 101, 114, 105, 112, 109, 101, 2, 32, 3, 89, 47, 109, 57, 47, 0, 116,
-			101, 97, 107, 3, 89, 47, 109, 57, 49, 0, 116, 97, 99, 121, 8, 3, 89, 47, 109, 57, 89, 37, 0, 112, 105, 116, 102, 105, 114, 101,
-			3, 89, 48, 36, 47, 83, 35, 57, 114, 0, 112, 101, 97, 107, 3, 89, 48, 37, 12, 49, 0, 112, 105, 101, 108, 98, 101, 114, 103, 3,
-			89, 48, 37, 55, 71, 118, 12, 81, 0, 112, 101, 99, 105, 97, 108, 2, 32, 98, 114, 97, 110, 99, 104, 3, 89, 48, 109, 89, 57, 108,
-			55, 0, 4, 99, 1, 101, 2, 111, 98, 97, 114, 3, 89, 49, 0, 99, 1, 101, 109, 2, 97, 108, 0, 99, 1, 105, 99, 110, 97, 114,
-			102, 2, 111, 0, 99, 2, 111, 111, 0, 99, 2, 111, 114, 0, 99, 2, 114, 97, 112, 0, 99, 104, 2, 111, 111, 108, 0, 4, 99, 1,
-			97, 109, 2, 97, 114, 97, 3, 89, 49, 6, 0, 99, 1, 105, 100, 2, 111, 117, 110, 116, 0, 99, 111, 114, 116, 1, 101, 3, 89, 49,
-			6, 114, 12, 47, 0, 107, 121, 108, 105, 110, 101, 3, 89, 49, 35, 57, 55, 35, 57, 50, 0, 99, 114, 101, 119, 100, 114, 105, 118, 101,
-			114, 3, 89, 49, 51, 40, 72, 34, 35, 57, 84, 114, 0, 107, 97, 116, 101, 98, 111, 97, 114, 100, 3, 89, 49, 109, 57, 47, 71, 113,
-			12, 72, 0, 99, 111, 2, 116, 3, 89, 49, 114, 0, 99, 111, 110, 101, 3, 89, 49, 114, 50, 0, 108, 105, 109, 108, 105, 110, 101, 3,
-			89, 55, 36, 65, 55, 35, 57, 50, 0, 108, 111, 118, 97, 107, 105, 101, 116, 3, 89, 55, 39, 84, 110, 49, 6, 37, 13, 86, 0, 108,
-			111, 97, 110, 101, 3, 89, 55, 113, 58, 50, 0, 104, 105, 110, 101, 3, 89, 57, 35, 57, 50, 13, 0, 119, 101, 101, 116, 3, 89, 58,
-			37, 12, 47, 0, 119, 97, 110, 101, 101, 3, 89, 58, 114, 50, 37, 0, 109, 105, 108, 101, 121, 3, 89, 65, 35, 57, 55, 37, 0, 109,
-			105, 116, 104, 3, 89, 65, 36, 47, 0, 109, 121, 116, 104, 101, 3, 89, 65, 112, 12, 57, 86, 0, 116, 114, 97, 105, 103, 104, 116, 3,
-			89, 72, 34, 109, 12, 57, 47, 0, 116, 111, 110, 101, 8, 3, 89, 72, 39, 40, 50, 0, 113, 117, 97, 115, 104, 3, 89, 81, 58, 114,
-			91, 0, 99, 104, 119, 101, 105, 122, 3, 89, 84, 35, 57, 47, 89, 0, 101, 105, 110, 101, 3, 89, 109, 50, 108, 0, 97, 105, 100, 1,
-			32, 116, 114, 111, 112, 3, 89, 110, 6, 37, 72, 0, 97, 108, 111, 111, 110, 3, 89, 110, 55, 6, 40, 12, 50, 0, 97, 118, 111, 105,
-			114, 3, 89, 110, 84, 39, 35, 12, 0, 111, 112, 104, 105, 101, 3, 89, 113, 40, 83, 37, 0, 117, 112, 112, 111, 114, 116, 3, 89, 113,
-			48, 6, 114, 34, 72, 0, 4, 195, 165, 1, 32, 100, 101, 109, 2, 32, 3, 89, 114, 0, 195, 165, 1, 32, 100, 108, 111, 104, 2, 32,
-			0, 195, 165, 1, 32, 101, 100, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32, 101, 114, 2, 32, 0, 195, 165, 1, 32, 101, 118, 105,
-			108, 98, 2, 32, 0, 195, 165, 1, 32, 103, 111, 2, 32, 118, 105, 100, 101, 114, 101, 0, 195, 165, 1, 32, 105, 32, 108, 105, 118, 2,
-			32, 0, 195, 165, 1, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32, 114, 2, 32, 98, 97, 110, 103, 101, 0, 195, 165, 1, 32, 114,
-			101, 2, 32, 0, 195, 165, 1, 32, 115, 101, 2, 32, 0, 195, 165, 1, 32, 117, 100, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32,
-			118, 101, 108, 98, 2, 32, 0, 195, 165, 8, 2, 32, 17, 67, 17, 65, 17, 67, 101, 114, 32, 0, 195, 165, 8, 2, 32, 98, 101, 115,
-			118, 195, 166, 114, 108, 105, 103, 0, 195, 165, 8, 2, 32, 98, 108, 101, 118, 32, 0, 195, 165, 8, 2, 32, 98, 108, 105, 118, 101, 114,
-			32, 0, 195, 165, 8, 2, 32, 100, 101, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 100, 101, 110, 32, 109, 195, 165, 0, 195, 165, 8,
-			2, 32, 102, 105, 107, 32, 0, 195, 165, 8, 2, 32, 103, 105, 107, 32, 0, 195, 165, 8, 2, 32, 103, 111, 100, 32, 0, 195, 165, 8,
-			2, 32, 103, 195, 165, 32, 0, 195, 165, 8, 2, 32, 103, 195, 165, 114, 32, 0, 195, 165, 8, 2, 32, 103, 195, 184, 114, 101, 32, 0,
-			195, 165, 8, 2, 32, 104, 17, 65, 110, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 104, 97, 118, 100, 101, 32, 0, 195, 165, 8, 2,
-			32, 104, 97, 118, 101, 32, 0, 195, 165, 8, 2, 32, 104, 101, 114, 32, 0, 195, 165, 8, 2, 32, 104, 111, 108, 100, 32, 0, 195, 165,
-			8, 2, 32, 105, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 107, 97, 110, 32, 0, 195, 165, 8, 2, 32, 107, 111, 109, 32, 0, 195,
-			165, 8, 2, 32, 107, 111, 109, 109, 101, 114, 32, 0, 195, 165, 8, 2, 32, 108, 97, 100, 32, 0, 195, 165, 8, 2, 32, 110, 195, 166,
-			114, 32, 0, 195, 165, 8, 2, 32, 115, 105, 107, 107, 101, 114, 32, 0, 195, 165, 8, 2, 32, 115, 107, 97, 108, 32, 0, 195, 165, 8,
-			2, 32, 115, 107, 101, 116, 101, 32, 0, 195, 165, 8, 2, 32, 116, 97, 103, 101, 114, 32, 0, 195, 165, 8, 2, 32, 118, 101, 100, 32,
-			0, 195, 165, 8, 2, 32, 118, 105, 32, 107, 97, 110, 32, 0, 195, 165, 8, 2, 32, 118, 105, 32, 109, 195, 165, 0, 195, 165, 8, 2,
-			32, 118, 105, 108, 108, 101, 32, 0, 195, 165, 8, 32, 101, 100, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 101, 100, 32,
-			108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 105, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 105, 32, 108, 105, 118, 2,
-			32, 0, 195, 165, 8, 32, 110, 97, 104, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 110, 97, 104, 32, 108, 105, 118, 2,
-			32, 0, 195, 165, 8, 32, 110, 97, 104, 32, 114, 184, 195, 103, 2, 32, 0, 195, 165, 8, 32, 110, 117, 104, 32, 101, 108, 108, 105, 118,
-			2, 32, 0, 195, 165, 8, 32, 110, 117, 104, 32, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 117, 100, 32, 101, 108, 108, 105, 118, 2,
-			32, 0, 195, 165, 8, 32, 117, 100, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 117, 100, 32, 114, 101, 2, 32, 0, 111,
-			110, 121, 97, 3, 89, 114, 50, 57, 110, 0, 117, 110, 100, 97, 121, 3, 89, 114, 50, 72, 37, 0, 117, 110, 115, 101, 116, 8, 3, 89,
-			114, 50, 89, 109, 47, 0, 117, 108, 108, 121, 3, 89, 114, 55, 37, 0, 117, 108, 108, 105, 118, 97, 110, 3, 89, 114, 55, 37, 84, 108,
-			50, 0, 111, 108, 115, 106, 101, 110, 105, 116, 115, 121, 110, 3, 89, 114, 55, 89, 57, 13, 50, 6, 37, 47, 89, 37, 50, 0, 117, 102,
-			102, 111, 108, 107, 3, 89, 114, 83, 114, 49, 0, 111, 116, 104, 101, 98, 121, 3, 89, 114, 86, 108, 71, 37, 0, 117, 116, 104, 101, 114,
-			3, 89, 114, 86, 114, 0, 117, 115, 115, 101, 120, 3, 89, 114, 89, 109, 81, 89, 0, 105, 114, 8, 2, 32, 3, 89, 118, 12, 0, 117,
-			114, 102, 3, 89, 118, 83, 0, 4, 99, 104, 3, 91, 0, 104, 1, 97, 104, 0, 104, 1, 97, 110, 0, 104, 1, 97, 112, 2, 97, 0,
-			104, 1, 105, 98, 2, 111, 112, 0, 104, 1, 105, 102, 2, 101, 114, 0, 104, 1, 105, 114, 116, 0, 104, 1, 111, 109, 2, 101, 0, 104,
-			1, 114, 97, 109, 0, 104, 1, 117, 112, 0, 104, 1, 117, 115, 2, 105, 0, 104, 2, 101, 114, 105, 102, 0, 104, 8, 0, 105, 2, 111,
-			110, 0, 104, 105, 114, 101, 3, 91, 13, 0, 104, 101, 105, 107, 3, 91, 35, 57, 49, 0, 104, 101, 105, 108, 97, 3, 91, 37, 12, 55,
-			110, 0, 104, 111, 119, 3, 91, 39, 40, 0, 117, 103, 97, 114, 8, 2, 32, 3, 91, 40, 81, 114, 0, 104, 105, 114, 116, 3, 91, 108,
-			12, 47, 0, 104, 97, 107, 101, 115, 112, 101, 97, 114, 101, 3, 91, 109, 37, 49, 89, 71, 37, 12, 34, 0, 101, 97, 109, 117, 115, 3,
-			91, 109, 37, 65, 13, 89, 0, 104, 101, 112, 104, 101, 114, 100, 3, 91, 109, 48, 20, 114, 72, 0, 104, 97, 119, 3, 91, 113, 12, 0,
-			101, 97, 110, 8, 2, 32, 3, 91, 113, 12, 50, 0, 101, 97, 110, 115, 8, 2, 32, 3, 91, 113, 12, 50, 89, 0, 104, 97, 117, 103,
-			104, 110, 101, 115, 115, 121, 3, 91, 113, 50, 109, 89, 37, 0, 104, 111, 114, 2, 116, 3, 91, 114, 0, 104, 111, 116, 3, 91, 114, 47,
-			0, 104, 101, 114, 2, 119, 111, 111, 100, 3, 91, 118, 0, 104, 101, 114, 109, 97, 110, 3, 91, 118, 12, 65, 110, 50, 0, 104, 105, 114,
-			108, 101, 121, 8, 3, 91, 118, 55, 37, 0, 104, 101, 114, 108, 111, 99, 107, 3, 91, 118, 55, 114, 49, 0, 7, 6, 116, 0, 8, 114,
-			97, 2, 32, 100, 101, 99, 111, 3, 0, 104, 1, 110, 97, 109, 97, 115, 2, 97, 3, 8, 87, 0, 97, 110, 103, 117, 121, 8, 3, 21,
-			102, 114, 0, 4, 3, 47, 0, 104, 1, 117, 108, 2, 101, 114, 0, 104, 8, 2, 101, 111, 0, 116, 0, 4, 101, 107, 8, 97, 105, 100,
-			101, 109, 3, 47, 6, 36, 49, 0, 101, 107, 8, 101, 103, 101, 108, 0, 101, 107, 8, 111, 101, 100, 105, 118, 0, 101, 107, 8, 111, 105,
-			108, 98, 105, 98, 0, 101, 107, 8, 111, 107, 97, 110, 105, 112, 0, 101, 107, 8, 111, 107, 115, 105, 100, 0, 101, 107, 8, 111, 110, 111,
-			102, 0, 101, 107, 8, 111, 112, 97, 0, 101, 107, 8, 111, 112, 121, 104, 0, 101, 107, 8, 111, 116, 111, 102, 0, 101, 107, 8, 111, 116,
-			112, 121, 108, 103, 0, 101, 107, 8, 111, 116, 114, 97, 107, 0, 101, 107, 8, 114, 97, 104, 99, 0, 4, 8, 2, 32, 98, 111, 110, 101,
-			3, 47, 6, 37, 12, 2, 0, 8, 2, 32, 115, 104, 105, 114, 116, 0, 114, 101, 118, 111, 114, 8, 3, 47, 16, 109, 84, 114, 0, 114,
-			101, 110, 99, 104, 99, 111, 97, 116, 3, 47, 34, 6, 109, 50, 91, 49, 4, 39, 40, 72, 0, 101, 114, 101, 115, 115, 2, 97, 110, 116,
-			3, 47, 34, 108, 89, 0, 101, 114, 101, 115, 115, 101, 114, 101, 116, 1, 110, 105, 3, 47, 34, 108, 89, 6, 36, 34, 108, 86, 0, 4,
-			101, 114, 101, 115, 115, 101, 114, 101, 1, 110, 105, 3, 47, 34, 108, 89, 6, 36, 34, 114, 0, 101, 114, 101, 115, 115, 101, 114, 101, 114,
-			1, 110, 105, 0, 114, 195, 168, 115, 8, 2, 32, 3, 47, 34, 109, 0, 114, 97, 100, 101, 1, 32, 100, 108, 114, 111, 119, 3, 47, 34,
-			109, 57, 72, 0, 4, 114, 97, 99, 101, 121, 8, 3, 47, 34, 109, 57, 89, 37, 0, 114, 97, 99, 121, 8, 0, 4, 114, 101, 100, 105,
-			118, 116, 101, 100, 101, 108, 3, 47, 34, 110, 83, 72, 13, 72, 36, 55, 0, 114, 101, 100, 118, 116, 101, 100, 101, 108, 0, 104, 97, 105,
-			3, 47, 35, 57, 0, 105, 116, 97, 110, 105, 99, 3, 47, 35, 57, 47, 6, 110, 50, 37, 49, 0, 105, 109, 101, 115, 1, 32, 101, 104,
-			116, 3, 47, 35, 57, 65, 89, 0, 105, 109, 101, 115, 104, 97, 114, 101, 3, 47, 35, 57, 65, 91, 109, 12, 34, 0, 8, 2, 32, 3,
-			47, 36, 12, 0, 101, 114, 114, 121, 3, 47, 36, 34, 37, 0, 105, 109, 111, 116, 104, 121, 3, 47, 36, 65, 115, 87, 37, 0, 101, 97,
-			107, 3, 47, 37, 12, 49, 0, 101, 101, 110, 97, 103, 101, 3, 47, 37, 12, 50, 109, 75, 0, 101, 101, 110, 97, 103, 101, 114, 3, 47,
-			37, 12, 50, 109, 75, 114, 0, 101, 97, 99, 104, 8, 3, 47, 37, 12, 76, 0, 111, 109, 98, 115, 3, 47, 40, 12, 65, 89, 0, 111,
-			109, 98, 115, 116, 111, 110, 101, 3, 47, 40, 12, 65, 89, 72, 39, 40, 50, 0, 117, 99, 115, 111, 110, 8, 3, 47, 40, 12, 89, 114,
-			50, 0, 4, 116, 1, 101, 2, 97, 108, 3, 47, 47, 0, 116, 1, 101, 2, 105, 100, 0, 116, 2, 195, 184, 106, 0, 116, 1, 97, 110,
-			2, 195, 184, 106, 3, 47, 47, 4, 0, 104, 3, 47, 107, 0, 101, 114, 101, 115, 115, 101, 1, 110, 105, 3, 47, 108, 34, 6, 35, 89,
-			13, 0, 101, 114, 101, 115, 115, 101, 114, 1, 110, 105, 3, 47, 108, 34, 6, 35, 89, 114, 0, 101, 110, 110, 101, 115, 115, 101, 101, 3,
-			47, 109, 50, 13, 89, 37, 0, 97, 112, 101, 8, 2, 32, 3, 47, 109, 57, 48, 0, 97, 112, 101, 8, 2, 110, 32, 3, 47, 109, 57,
-			48, 108, 0, 97, 106, 8, 2, 32, 109, 97, 104, 97, 108, 3, 47, 110, 91, 0, 111, 119, 110, 3, 47, 112, 58, 50, 0, 111, 114, 113,
-			117, 97, 121, 3, 47, 113, 12, 49, 37, 0, 111, 97, 115, 116, 3, 47, 113, 58, 89, 47, 0, 111, 97, 115, 116, 109, 97, 115, 116, 101,
-			114, 3, 47, 113, 58, 89, 47, 65, 4, 112, 12, 89, 47, 114, 0, 111, 107, 121, 111, 3, 47, 114, 49, 57, 39, 0, 111, 117, 99, 104,
-			100, 111, 119, 110, 3, 47, 114, 76, 72, 35, 58, 50, 0, 106, 8, 3, 76, 0, 104, 1, 114, 97, 109, 2, 97, 3, 87, 0, 104, 101,
-			114, 105, 110, 101, 1, 97, 99, 3, 87, 34, 36, 50, 0, 104, 97, 99, 107, 101, 114, 121, 3, 87, 110, 49, 108, 34, 37, 0, 104, 117,
-			110, 100, 101, 114, 3, 87, 114, 50, 72, 114, 0, 104, 105, 114, 100, 3, 87, 118, 12, 72, 0, 115, 104, 1, 105, 110, 97, 106, 2, 97,
-			114, 3, 91, 0, 7, 6, 117, 0, 1, 115, 2, 98, 108, 105, 3, 2, 40, 0, 4, 1, 100, 101, 115, 117, 114, 107, 2, 108, 108, 101,
-			3, 6, 40, 0, 1, 102, 105, 114, 116, 110, 101, 99, 2, 103, 0, 1, 107, 109, 111, 2, 108, 100, 0, 1, 107, 111, 114, 112, 2, 114,
-			97, 0, 1, 108, 97, 100, 110, 97, 2, 115, 0, 1, 108, 97, 104, 99, 2, 112, 0, 1, 108, 97, 118, 2, 116, 97, 0, 1, 111, 115,
-			115, 101, 114, 2, 114, 115, 0, 1, 112, 97, 99, 97, 2, 108, 99, 111, 0, 1, 112, 108, 97, 118, 2, 114, 103, 105, 115, 0, 1, 112,
-			109, 105, 2, 108, 115, 0, 1, 114, 101, 106, 2, 115, 97, 108, 101, 109, 0, 1, 115, 101, 114, 2, 114, 115, 0, 1, 116, 107, 97, 102,
-			2, 114, 97, 0, 1, 116, 115, 111, 103, 110, 97, 2, 114, 97, 0, 2, 108, 106, 101, 0, 8, 2, 102, 111, 114, 0, 8, 98, 98, 105,
-			107, 2, 116, 122, 0, 8, 98, 111, 114, 2, 115, 116, 0, 8, 100, 105, 102, 2, 115, 0, 8, 102, 110, 111, 107, 2, 115, 0, 8, 103,
-			105, 102, 2, 114, 0, 8, 104, 114, 165, 195, 2, 110, 100, 114, 101, 100, 101, 0, 8, 107, 108, 97, 107, 2, 110, 0, 8, 107, 110, 111,
-			107, 2, 114, 115, 0, 8, 108, 111, 118, 110, 111, 107, 2, 116, 0, 8, 112, 114, 97, 104, 2, 110, 0, 8, 114, 101, 100, 2, 100, 0,
-			8, 114, 116, 115, 110, 105, 2, 107, 115, 0, 8, 115, 97, 98, 2, 110, 0, 8, 115, 97, 108, 103, 2, 114, 0, 8, 115, 98, 97, 2,
-			114, 100, 0, 8, 115, 117, 97, 108, 107, 2, 108, 0, 116, 1, 10, 2, 116, 28, 33, 0, 1, 103, 110, 166, 195, 107, 2, 114, 117, 3,
-			6, 40, 10, 0, 4, 1, 100, 110, 111, 104, 2, 114, 97, 3, 6, 40, 12, 0, 1, 109, 117, 2, 108, 105, 103, 0, 8, 17, 67, 97,
-			108, 2, 110, 101, 0, 8, 109, 109, 111, 107, 2, 110, 101, 0, 4, 114, 1, 115, 97, 108, 3, 6, 40, 34, 0, 114, 1, 115, 97, 108,
-			103, 0, 114, 1, 115, 97, 114, 0, 114, 1, 115, 110, 101, 99, 0, 114, 1, 115, 110, 101, 109, 0, 114, 1, 115, 110, 111, 116, 0, 114,
-			1, 115, 115, 101, 114, 100, 0, 114, 1, 115, 115, 105, 102, 0, 114, 1, 115, 166, 195, 99, 0, 114, 8, 102, 109, 111, 107, 0, 116, 1,
-			10, 2, 28, 33, 3, 6, 40, 47, 0, 4, 100, 8, 2, 97, 116, 12, 14, 128, 132, 130, 3, 6, 40, 72, 0, 100, 8, 2, 101, 108,
-			116, 12, 14, 128, 132, 130, 0, 100, 8, 2, 114, 195, 184, 106, 12, 14, 128, 132, 130, 0, 100, 8, 2, 121, 12, 14, 128, 132, 130, 0,
-			100, 8, 2, 195, 165, 100, 12, 14, 128, 132, 130, 0, 100, 8, 2, 195, 184, 98, 116, 12, 14, 128, 132, 130, 0, 116, 97, 104, 3, 6,
-			57, 40, 12, 47, 112, 0, 114, 102, 101, 114, 1, 115, 3, 6, 108, 12, 83, 114, 0, 4, 1, 103, 117, 97, 2, 115, 116, 3, 6, 113,
-			0, 1, 108, 97, 104, 2, 110, 107, 0, 1, 108, 111, 99, 2, 109, 98, 0, 8, 107, 101, 115, 2, 110, 100, 0, 110, 100, 1, 98, 97,
-			114, 2, 117, 115, 3, 6, 113, 50, 72, 0, 1, 99, 108, 97, 99, 2, 116, 116, 97, 3, 6, 114, 0, 99, 107, 121, 1, 116, 110, 101,
-			107, 3, 6, 114, 49, 37, 0, 4, 1, 98, 105, 116, 115, 101, 118, 2, 108, 3, 6, 116, 0, 1, 100, 101, 99, 111, 114, 112, 2, 114,
-			101, 0, 1, 102, 114, 97, 112, 2, 109, 101, 0, 1, 110, 101, 118, 111, 114, 112, 0, 1, 116, 101, 2, 100, 101, 12, 0, 8, 98, 105,
-			114, 116, 2, 110, 101, 0, 8, 110, 101, 109, 0, 8, 116, 115, 111, 107, 2, 109, 101, 0, 101, 1, 100, 110, 111, 102, 0, 101, 1, 110,
-			101, 118, 97, 0, 116, 8, 98, 101, 100, 0, 114, 101, 1, 116, 117, 111, 10, 2, 28, 33, 3, 6, 116, 12, 34, 0, 4, 114, 1, 100,
-			10, 2, 28, 33, 3, 7, 40, 34, 0, 114, 1, 116, 10, 2, 28, 33, 0, 100, 8, 2, 21, 21, 12, 14, 128, 132, 130, 3, 7, 40,
-			86, 0, 100, 101, 8, 2, 21, 21, 12, 14, 128, 132, 131, 3, 7, 40, 86, 13, 0, 114, 101, 1, 10, 2, 12, 12, 12, 28, 33, 3,
-			7, 116, 12, 114, 0, 101, 122, 1, 103, 3, 8, 36, 89, 0, 1, 112, 109, 105, 2, 108, 115, 105, 118, 3, 8, 40, 0, 109, 1, 10,
-			2, 28, 33, 3, 8, 113, 65, 0, 4, 105, 100, 1, 103, 32, 108, 105, 118, 2, 101, 3, 35, 57, 72, 0, 105, 100, 1, 103, 32, 116,
-			97, 2, 101, 0, 105, 100, 8, 103, 2, 101, 116, 0, 105, 100, 101, 1, 103, 0, 105, 100, 101, 114, 1, 103, 3, 35, 57, 72, 114, 0,
-			105, 1, 103, 2, 116, 97, 114, 3, 37, 0, 4, 3, 40, 0, 1, 17, 67, 2, 18, 66, 18, 76, 0, 1, 18, 74, 115, 2, 17, 67,
-			18, 76, 0, 1, 18, 74, 115, 2, 116, 0, 1, 98, 2, 103, 115, 101, 0, 1, 100, 2, 107, 116, 105, 0, 1, 104, 2, 106, 101, 12,
-			0, 1, 104, 2, 108, 17, 67, 0, 1, 104, 2, 108, 18, 76, 0, 1, 104, 2, 108, 116, 0, 1, 104, 2, 110, 0, 1, 106, 2, 18,
-			66, 18, 69, 0, 1, 107, 2, 107, 0, 1, 107, 2, 108, 18, 69, 0, 1, 107, 2, 108, 18, 70, 0, 1, 107, 2, 108, 100, 0, 1,
-			107, 2, 108, 100, 101, 0, 1, 107, 2, 108, 108, 101, 114, 0, 1, 107, 2, 108, 116, 0, 1, 107, 100, 101, 118, 111, 104, 2, 108, 115,
-			0, 1, 107, 115, 2, 108, 107, 0, 1, 107, 115, 2, 108, 108, 0, 1, 107, 115, 2, 108, 112, 0, 1, 107, 115, 2, 116, 101, 0, 1,
-			108, 2, 107, 97, 115, 0, 1, 108, 2, 107, 114, 18, 76, 0, 1, 108, 2, 107, 114, 101, 114, 101, 0, 1, 108, 2, 110, 32, 0, 1,
-			108, 2, 110, 101, 0, 1, 108, 98, 2, 102, 195, 166, 0, 1, 108, 103, 2, 103, 0, 1, 108, 115, 2, 103, 116, 0, 1, 109, 2, 102,
-			116, 0, 1, 109, 2, 115, 105, 107, 0, 1, 109, 97, 107, 2, 102, 108, 97, 103, 101, 0, 1, 109, 115, 2, 18, 68, 12, 0, 1, 109,
-			115, 2, 103, 108, 0, 1, 110, 102, 2, 103, 0, 1, 110, 115, 2, 98, 108, 101, 0, 1, 112, 2, 99, 107, 12, 0, 1, 112, 2, 110,
-			100, 0, 1, 114, 2, 18, 71, 18, 69, 0, 1, 114, 2, 103, 0, 1, 114, 2, 109, 101, 0, 1, 114, 98, 2, 103, 0, 1, 114, 102,
-			2, 115, 0, 1, 114, 103, 2, 18, 71, 0, 1, 114, 103, 2, 112, 0, 1, 114, 107, 115, 2, 112, 108, 101, 0, 1, 114, 116, 2, 18,
-			71, 0, 1, 114, 116, 2, 107, 116, 18, 69, 0, 1, 114, 116, 2, 109, 97, 110, 0, 1, 115, 2, 98, 115, 0, 1, 115, 2, 103, 0,
-			1, 115, 2, 112, 112, 108, 101, 0, 1, 115, 2, 112, 114, 97, 0, 1, 116, 2, 110, 100, 195, 165, 0, 1, 116, 115, 2, 98, 12, 0,
-			2, 100, 101, 12, 12, 0, 2, 100, 101, 110, 0, 2, 100, 101, 110, 102, 111, 114, 12, 0, 2, 100, 103, 114, 117, 110, 100, 101, 108, 105,
-			103, 12, 0, 2, 103, 101, 12, 12, 0, 2, 103, 108, 12, 0, 2, 103, 108, 101, 12, 0, 2, 104, 121, 114, 101, 12, 0, 2, 105, 109,
-			111, 100, 115, 116, 195, 165, 101, 108, 105, 103, 0, 2, 108, 116, 105, 109, 97, 0, 2, 108, 116, 114, 97, 0, 2, 110, 105, 12, 12, 0,
-			2, 115, 117, 114, 112, 0, 2, 116, 111, 112, 105, 0, 8, 2, 21, 21, 12, 14, 128, 132, 129, 0, 8, 2, 100, 115, 12, 0, 8, 2,
-			114, 12, 12, 0, 8, 2, 114, 101, 116, 102, 195, 166, 12, 12, 14, 128, 132, 129, 0, 8, 107, 2, 108, 108, 101, 100, 101, 0, 8, 114,
-			112, 2, 115, 116, 0, 103, 1, 98, 2, 116, 97, 0, 103, 1, 108, 115, 0, 103, 1, 109, 2, 32, 117, 100, 0, 103, 1, 109, 2, 101,
-			32, 117, 100, 0, 2, 101, 110, 105, 103, 12, 3, 40, 6, 0, 101, 1, 108, 102, 110, 105, 2, 110, 122, 97, 3, 40, 6, 109, 0, 101,
-			116, 1, 110, 101, 109, 3, 40, 6, 109, 47, 0, 4, 1, 104, 2, 108, 101, 3, 40, 12, 0, 1, 106, 2, 105, 99, 101, 0, 1, 107,
-			2, 17, 67, 101, 0, 101, 1, 98, 108, 97, 0, 101, 1, 100, 2, 115, 0, 101, 1, 116, 115, 0, 101, 2, 32, 0, 103, 1, 108, 2,
-			101, 0, 115, 97, 8, 2, 32, 3, 40, 12, 36, 89, 6, 110, 0, 115, 97, 39, 115, 8, 2, 32, 3, 40, 12, 36, 89, 6, 110, 89,
-			0, 4, 101, 1, 116, 115, 2, 32, 3, 40, 13, 0, 101, 1, 116, 115, 2, 110, 32, 0, 114, 1, 98, 109, 97, 116, 3, 40, 34, 0,
-			114, 1, 116, 10, 2, 101, 108, 28, 33, 3, 40, 34, 6, 0, 114, 101, 1, 115, 10, 2, 114, 101, 12, 12, 12, 3, 40, 34, 7, 36,
-			0, 107, 101, 116, 8, 98, 3, 40, 49, 6, 109, 47, 0, 107, 117, 108, 101, 108, 101, 3, 40, 49, 40, 55, 6, 36, 55, 108, 0, 99,
-			99, 101, 115, 115, 111, 114, 1, 115, 3, 40, 49, 89, 6, 109, 89, 114, 0, 99, 99, 101, 115, 115, 111, 114, 101, 114, 1, 115, 3, 40,
-			49, 89, 109, 89, 6, 39, 114, 0, 108, 114, 101, 116, 1, 107, 3, 40, 55, 51, 114, 86, 0, 103, 1, 109, 115, 3, 40, 58, 0, 4,
-			100, 8, 2, 114, 105, 107, 107, 101, 108, 105, 103, 12, 14, 128, 132, 130, 3, 40, 72, 0, 100, 8, 2, 117, 101, 108, 105, 103, 12, 0,
-			100, 8, 2, 195, 184, 100, 12, 14, 128, 132, 130, 0, 102, 111, 114, 109, 101, 108, 3, 40, 83, 114, 65, 6, 36, 55, 0, 4, 100, 8,
-			2, 101, 110, 12, 3, 40, 86, 0, 100, 8, 2, 107, 105, 103, 0, 115, 107, 121, 108, 100, 105, 103, 3, 40, 89, 81, 6, 116, 55, 72,
-			37, 0, 103, 97, 102, 1, 108, 3, 55, 113, 81, 6, 110, 0, 4, 1, 112, 109, 111, 99, 2, 116, 101, 114, 3, 57, 40, 0, 1, 116,
-			2, 110, 101, 0, 1, 116, 2, 110, 105, 110, 103, 12, 0, 1, 116, 2, 116, 111, 114, 0, 8, 116, 115, 2, 97, 114, 116, 0, 110, 105,
-			116, 101, 100, 3, 57, 40, 50, 6, 35, 57, 47, 36, 72, 0, 114, 101, 1, 116, 120, 105, 109, 3, 57, 114, 0, 105, 1, 115, 2, 116,
-			101, 3, 58, 37, 0, 4, 114, 1, 115, 2, 102, 98, 3, 108, 12, 0, 114, 1, 115, 2, 102, 101, 0, 101, 114, 105, 1, 103, 2, 108,
-			108, 97, 3, 109, 51, 6, 37, 0, 4, 1, 17, 67, 2, 18, 66, 101, 12, 3, 113, 0, 1, 17, 67, 2, 18, 66, 116, 0, 1, 18,
-			68, 2, 102, 0, 1, 18, 71, 2, 110, 107, 116, 0, 1, 18, 73, 2, 102, 0, 1, 18, 74, 2, 102, 0, 1, 18, 74, 2, 114, 114,
-			101, 0, 1, 98, 2, 107, 0, 1, 98, 2, 110, 116, 0, 1, 100, 2, 107, 0, 1, 103, 2, 102, 0, 1, 104, 2, 103, 0, 1, 104,
-			2, 108, 0, 1, 104, 2, 108, 98, 195, 165, 110, 100, 0, 1, 104, 2, 108, 106, 101, 114, 110, 0, 1, 104, 2, 108, 108, 101, 0, 1,
-			104, 2, 108, 115, 107, 101, 0, 1, 104, 2, 108, 115, 195, 184, 109, 0, 1, 104, 2, 108, 116, 97, 110, 103, 0, 1, 104, 2, 114, 116,
-			105, 103, 0, 1, 104, 112, 97, 110, 107, 2, 108, 0, 1, 104, 114, 101, 100, 100, 117, 109, 2, 108, 0, 1, 104, 116, 117, 109, 115, 2,
-			108, 0, 1, 106, 2, 110, 107, 116, 117, 114, 12, 12, 0, 1, 106, 104, 2, 108, 112, 0, 1, 107, 2, 102, 102, 101, 114, 116, 0, 1,
-			107, 2, 108, 0, 1, 107, 2, 108, 100, 105, 111, 0, 1, 107, 2, 108, 105, 108, 116, 0, 1, 107, 101, 115, 2, 110, 100, 195, 166, 0,
-			1, 107, 115, 2, 98, 0, 1, 108, 2, 107, 0, 1, 108, 103, 184, 195, 114, 2, 103, 116, 0, 1, 108, 115, 2, 98, 0, 1, 108, 115,
-			2, 112, 0, 1, 109, 115, 2, 17, 67, 0, 1, 110, 18, 66, 2, 18, 71, 0, 1, 112, 2, 102, 0, 1, 112, 2, 107, 107, 101, 0,
-			1, 112, 2, 107, 108, 0, 1, 112, 2, 110, 99, 104, 0, 1, 112, 115, 2, 110, 100, 101, 0, 1, 114, 2, 18, 71, 0, 1, 114, 2,
-			102, 0, 1, 114, 2, 109, 0, 1, 114, 2, 115, 116, 0, 1, 114, 17, 67, 2, 18, 71, 0, 1, 114, 17, 67, 2, 107, 0, 1, 114,
-			98, 2, 103, 116, 0, 1, 114, 116, 2, 102, 102, 0, 1, 116, 115, 2, 107, 107, 101, 116, 0, 1, 118, 115, 2, 112, 0, 2, 107, 115,
-			0, 2, 109, 25, 0, 2, 110, 18, 73, 0, 2, 110, 100, 0, 2, 110, 103, 12, 0, 2, 110, 107, 0, 8, 2, 110, 100, 12, 0, 8,
-			2, 110, 103, 12, 0, 8, 114, 2, 98, 32, 0, 8, 114, 2, 98, 98, 101, 0, 108, 118, 1, 103, 3, 113, 55, 0, 108, 118, 1, 103,
-			2, 101, 3, 113, 55, 84, 0, 109, 98, 117, 103, 1, 104, 3, 113, 65, 71, 113, 81, 0, 107, 97, 102, 1, 108, 3, 113, 81, 6, 110,
-			0, 4, 1, 32, 100, 110, 97, 116, 115, 2, 112, 3, 114, 0, 1, 98, 2, 99, 107, 0, 1, 98, 2, 102, 102, 101, 114, 0, 1, 98,
-			2, 116, 108, 101, 114, 0, 1, 100, 2, 98, 98, 101, 0, 1, 100, 2, 98, 98, 105, 110, 103, 0, 1, 100, 2, 98, 108, 105, 110, 0,
-			1, 100, 2, 100, 108, 101, 121, 0, 1, 100, 2, 110, 99, 97, 110, 0, 1, 102, 2, 99, 107, 12, 12, 0, 1, 104, 2, 110, 116, 101,
-			114, 0, 1, 104, 99, 116, 101, 107, 2, 112, 0, 1, 104, 100, 97, 101, 104, 2, 110, 116, 0, 1, 106, 2, 110, 107, 0, 1, 108, 2,
-			98, 98, 111, 99, 107, 0, 1, 108, 99, 2, 98, 0, 1, 108, 108, 2, 112, 0, 1, 109, 2, 112, 112, 101, 114, 110, 101, 0, 1, 112,
-			2, 98, 98, 0, 1, 114, 116, 2, 99, 107, 0, 1, 116, 115, 2, 110, 116, 0, 8, 100, 2, 115, 116, 105, 110, 0, 8, 102, 2, 110,
-			107, 0, 8, 109, 2, 108, 108, 105, 110, 0, 8, 112, 2, 98, 32, 0, 8, 112, 2, 110, 107, 0, 112, 112, 101, 114, 99, 117, 116, 3,
-			114, 48, 114, 49, 114, 47, 0, 99, 107, 101, 114, 1, 116, 3, 114, 49, 114, 0, 110, 99, 104, 1, 114, 98, 3, 114, 50, 91, 0, 109,
-			112, 104, 114, 101, 121, 1, 104, 3, 114, 65, 83, 34, 37, 0, 100, 100, 1, 98, 2, 121, 3, 114, 72, 0, 102, 102, 105, 110, 1, 109,
-			3, 114, 83, 36, 50, 0, 115, 116, 121, 1, 114, 3, 114, 89, 47, 37, 0, 4, 1, 18, 68, 2, 110, 115, 3, 115, 0, 1, 98, 2,
-			110, 107, 101, 114, 0, 1, 102, 2, 18, 71, 0, 1, 102, 2, 110, 12, 0, 1, 106, 2, 110, 116, 0, 1, 108, 2, 110, 116, 101, 0,
-			1, 108, 107, 2, 110, 115, 0, 1, 109, 2, 18, 66, 0, 1, 109, 2, 110, 116, 0, 1, 110, 115, 2, 18, 71, 0, 1, 112, 2, 108,
-			118, 0, 1, 115, 2, 18, 71, 11, 0, 1, 115, 2, 107, 0, 1, 116, 2, 110, 110, 0, 1, 118, 2, 103, 0, 8, 107, 2, 110, 32,
-			0, 8, 110, 2, 108, 0, 4, 1, 98, 2, 100, 103, 101, 116, 3, 116, 0, 1, 98, 105, 114, 116, 2, 110, 101, 0, 1, 100, 2, 99,
-			104, 101, 115, 115, 101, 0, 1, 102, 101, 114, 2, 115, 101, 114, 0, 1, 108, 103, 2, 107, 111, 115, 101, 0, 1, 110, 2, 97, 110, 99,
-			101, 0, 1, 110, 101, 109, 0, 1, 112, 2, 114, 195, 169, 0, 1, 115, 2, 99, 99, 0, 1, 115, 2, 114, 114, 101, 97, 0, 1, 116,
-			115, 111, 107, 2, 109, 101, 0, 8, 98, 2, 115, 116, 101, 32, 0, 8, 112, 2, 114, 101, 114, 101, 0, 116, 1, 98, 101, 100, 0, 8,
-			116, 97, 110, 2, 114, 101, 108, 32, 12, 3, 116, 6, 0, 114, 101, 1, 116, 117, 111, 99, 3, 116, 12, 34, 0, 4, 114, 101, 1, 99,
-			101, 110, 105, 115, 3, 116, 12, 114, 0, 114, 101, 1, 99, 105, 100, 101, 112, 0, 114, 101, 1, 99, 105, 110, 97, 109, 0, 114, 101, 1,
-			100, 101, 99, 111, 114, 112, 0, 114, 101, 1, 100, 114, 111, 98, 0, 114, 101, 1, 104, 99, 111, 114, 98, 0, 114, 101, 1, 104, 99, 117,
-			111, 98, 109, 101, 0, 114, 101, 1, 108, 101, 110, 110, 97, 107, 0, 114, 101, 1, 110, 114, 117, 111, 116, 0, 114, 101, 1, 115, 105, 114,
-			102, 0, 114, 101, 1, 116, 97, 105, 110, 105, 109, 0, 114, 101, 1, 116, 97, 105, 110, 105, 109, 0, 114, 101, 1, 116, 105, 102, 110, 111,
-			107, 0, 114, 101, 1, 116, 105, 110, 114, 97, 103, 0, 114, 101, 1, 116, 105, 114, 102, 0, 114, 101, 1, 116, 107, 101, 102, 110, 111, 107,
-			0, 114, 101, 1, 116, 107, 101, 108, 0, 114, 101, 1, 116, 114, 101, 118, 117, 111, 0, 114, 101, 1, 118, 97, 114, 103, 0, 114, 101, 1,
-			10, 2, 114, 101, 28, 33, 12, 12, 12, 3, 116, 34, 7, 36, 0, 4, 114, 101, 1, 112, 116, 97, 109, 111, 116, 3, 116, 34, 36, 0,
-			114, 195, 169, 1, 112, 116, 97, 109, 111, 116, 0, 116, 101, 1, 108, 102, 3, 116, 47, 0, 114, 101, 97, 117, 1, 98, 3, 116, 51, 6,
-			39, 0, 4, 109, 101, 1, 115, 101, 114, 3, 116, 65, 6, 36, 0, 109, 195, 169, 1, 115, 101, 114, 0, 120, 101, 108, 108, 101, 115, 1,
-			114, 98, 3, 116, 89, 6, 109, 55, 0, 1, 115, 2, 114, 114, 101, 108, 3, 117, 0, 114, 1, 98, 2, 109, 101, 115, 3, 118, 0, 4,
-			114, 1, 98, 2, 109, 97, 3, 118, 12, 0, 114, 1, 112, 2, 115, 101, 114, 0, 114, 8, 98, 2, 116, 0, 114, 112, 108, 101, 1, 112,
-			3, 118, 12, 48, 20, 13, 55, 0, 114, 110, 1, 98, 121, 97, 114, 3, 118, 12, 50, 0, 114, 100, 108, 101, 1, 104, 3, 118, 72, 13,
-			55, 0, 114, 100, 108, 101, 110, 1, 104, 3, 118, 72, 55, 108, 50, 0, 114, 103, 105, 115, 8, 116, 115, 3, 118, 75, 37, 89, 0, 114,
-			103, 1, 98, 2, 101, 114, 3, 118, 81, 0, 7, 6, 118, 0, 4, 1, 101, 108, 98, 3, 0, 4, 1, 108, 97, 104, 3, 0, 1, 108,
-			101, 2, 17, 67, 3, 0, 1, 97, 108, 2, 101, 109, 101, 110, 116, 3, 13, 0, 108, 101, 103, 1, 108, 97, 104, 3, 35, 57, 0, 4,
-			1, 97, 104, 2, 17, 67, 3, 40, 0, 1, 97, 104, 2, 111, 118, 101, 114, 102, 0, 4, 1, 97, 2, 110, 3, 58, 0, 1, 101, 108,
-			98, 101, 100, 117, 0, 1, 184, 195, 2, 101, 110, 0, 2, 110, 0, 118, 1, 105, 108, 3, 58, 84, 0, 2, 97, 110, 32, 103, 111, 103,
-			104, 3, 83, 0, 111, 110, 8, 2, 32, 3, 83, 114, 50, 0, 4, 3, 84, 0, 1, 17, 65, 10, 2, 17, 65, 0, 1, 17, 65, 10,
-			2, 32, 17, 65, 0, 1, 97, 108, 115, 2, 12, 0, 1, 108, 97, 2, 101, 0, 1, 108, 105, 2, 17, 65, 0, 1, 111, 18, 74, 2,
-			17, 65, 0, 1, 111, 114, 112, 2, 101, 110, 99, 101, 0, 1, 114, 10, 0, 1, 114, 117, 0, 118, 0, 105, 114, 103, 105, 110, 105, 97,
-			3, 84, 13, 75, 6, 37, 68, 57, 110, 0, 105, 110, 99, 101, 3, 84, 36, 50, 89, 0, 105, 108, 108, 97, 103, 101, 3, 84, 36, 55,
-			36, 75, 0, 111, 105, 108, 97, 3, 84, 58, 35, 55, 6, 35, 0, 101, 2, 108, 115, 101, 3, 84, 108, 0, 101, 114, 100, 117, 110, 3,
-			84, 109, 34, 72, 6, 108, 68, 0, 97, 117, 103, 104, 110, 3, 84, 113, 12, 50, 0, 111, 108, 105, 101, 114, 101, 3, 84, 114, 55, 37,
-			6, 109, 12, 34, 0, 7, 6, 119, 0, 114, 105, 103, 104, 116, 3, 21, 0, 3, 58, 0, 121, 111, 109, 105, 110, 103, 3, 58, 35, 57,
-			6, 113, 58, 65, 36, 68, 0, 105, 100, 101, 115, 99, 114, 101, 101, 110, 3, 58, 35, 57, 72, 89, 49, 34, 37, 12, 50, 0, 105, 110,
-			110, 105, 112, 101, 103, 3, 58, 36, 50, 37, 48, 109, 81, 0, 105, 115, 99, 111, 110, 115, 105, 110, 3, 58, 36, 89, 49, 6, 114, 50,
-			89, 36, 50, 0, 101, 101, 107, 101, 110, 100, 3, 58, 37, 12, 81, 109, 50, 72, 0, 101, 97, 118, 101, 114, 3, 58, 37, 12, 84, 114,
-			0, 104, 101, 101, 108, 3, 58, 37, 55, 0, 4, 105, 108, 108, 105, 101, 3, 58, 37, 55, 37, 0, 105, 108, 108, 121, 0, 97, 121, 110,
-			101, 3, 58, 109, 57, 50, 0, 97, 108, 101, 115, 3, 58, 109, 57, 55, 89, 0, 101, 97, 116, 104, 101, 114, 3, 58, 109, 86, 114, 0,
-			97, 114, 101, 3, 58, 110, 12, 34, 0, 105, 108, 100, 8, 3, 58, 112, 57, 55, 72, 0, 97, 116, 101, 114, 103, 97, 116, 101, 3, 58,
-			113, 47, 114, 81, 109, 57, 47, 0, 97, 108, 100, 111, 114, 102, 8, 3, 58, 113, 72, 114, 83, 0, 97, 116, 115, 111, 110, 3, 58, 114,
-			47, 89, 14, 50, 0, 97, 110, 100, 97, 3, 58, 114, 50, 72, 110, 0, 111, 110, 100, 101, 114, 8, 3, 58, 114, 50, 72, 114, 0, 97,
-			110, 115, 101, 97, 1, 115, 3, 58, 114, 50, 89, 4, 37, 0, 97, 108, 108, 97, 99, 101, 3, 58, 114, 55, 36, 89, 0, 97, 115, 104,
-			105, 110, 103, 116, 111, 110, 3, 58, 114, 91, 36, 68, 47, 114, 50, 0, 111, 114, 107, 3, 58, 118, 12, 49, 0, 111, 114, 116, 104, 3,
-			58, 118, 12, 87, 0, 111, 114, 108, 100, 8, 3, 58, 118, 55, 72, 0, 111, 114, 100, 3, 58, 118, 72, 0, 4, 1, 116, 110, 97, 2,
-			101, 114, 112, 101, 110, 3, 84, 0, 2, 97, 100, 101, 114, 115, 0, 2, 97, 100, 105, 0, 2, 97, 108, 105, 115, 0, 2, 97, 115, 115,
-			101, 114, 109, 97, 110, 110, 112, 114, 195, 184, 118, 101, 0, 2, 97, 116, 116, 0, 2, 101, 108, 116, 101, 114, 118, 195, 166, 103, 116, 0,
-			2, 101, 108, 116, 115, 99, 104, 109, 101, 114, 122, 0, 2, 101, 114, 110, 101, 114, 0, 2, 101, 115, 115, 101, 108, 0, 2, 104, 105, 115,
-			116, 0, 2, 105, 101, 110, 101, 114, 115, 99, 104, 110, 105, 116, 122, 101, 108, 0, 2, 111, 108, 102, 103, 97, 110, 103, 0, 2, 111, 108,
-			102, 114, 97, 109, 0, 97, 105, 1, 117, 107, 2, 116, 3, 84, 6, 35, 57, 0, 97, 114, 115, 122, 97, 119, 97, 3, 84, 35, 34, 91,
-			6, 110, 12, 84, 110, 0, 97, 108, 100, 3, 84, 35, 55, 72, 0, 97, 102, 102, 101, 3, 84, 35, 83, 108, 0, 105, 101, 110, 3, 84,
-			37, 50, 0, 105, 101, 115, 101, 110, 116, 104, 97, 108, 3, 84, 37, 89, 13, 50, 47, 112, 55, 0, 7, 6, 120, 0, 4, 3, 81, 89,
+			108, 100, 0, 1, 116, 110, 105, 2, 114, 110, 12, 0, 1, 116, 112, 101, 115, 2, 109, 98, 101, 114, 0, 1, 116, 115, 107, 101, 2, 114,
+			110, 0, 1, 118, 100, 114, 111, 110, 2, 115, 116, 0, 1, 118, 100, 121, 115, 2, 115, 116, 0, 1, 118, 105, 100, 2, 114, 115, 101, 0,
+			1, 118, 108, 121, 115, 2, 115, 116, 101, 114, 0, 1, 118, 111, 110, 2, 109, 98, 101, 114, 0, 1, 122, 97, 103, 2, 108, 108, 101, 0,
+			8, 98, 115, 97, 2, 115, 116, 0, 8, 99, 99, 97, 2, 112, 116, 0, 8, 99, 101, 114, 2, 112, 116, 0, 8, 99, 110, 105, 2, 115,
+			116, 0, 8, 99, 110, 111, 107, 2, 112, 116, 0, 8, 99, 110, 111, 107, 2, 114, 110, 0, 8, 102, 105, 110, 97, 109, 2, 115, 116, 0,
+			8, 102, 110, 111, 107, 2, 116, 116, 105, 0, 8, 103, 101, 114, 2, 115, 116, 0, 8, 107, 97, 114, 2, 116, 12, 0, 8, 107, 97, 114,
+			2, 116, 116, 12, 0, 8, 107, 114, 111, 2, 115, 116, 0, 8, 108, 102, 101, 114, 2, 107, 115, 0, 8, 108, 108, 97, 98, 2, 116, 21,
+			0, 8, 108, 108, 97, 98, 32, 101, 100, 101, 115, 110, 97, 100, 2, 116, 0, 8, 108, 108, 97, 98, 32, 101, 115, 110, 97, 100, 2, 116,
+			0, 8, 108, 108, 97, 98, 32, 110, 101, 2, 116, 0, 8, 108, 108, 97, 98, 32, 114, 101, 115, 110, 97, 100, 2, 116, 0, 8, 108, 108,
+			97, 98, 32, 114, 111, 118, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 101, 100, 110, 101, 104, 2, 116, 0, 8, 108, 108, 97, 98, 32,
+			115, 101, 114, 101, 100, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 101, 114, 101, 106, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 101,
+			114, 111, 118, 2, 116, 0, 8, 108, 108, 97, 98, 32, 115, 110, 97, 104, 2, 116, 0, 8, 108, 111, 109, 2, 115, 116, 0, 8, 108, 112,
+			109, 111, 107, 2, 107, 115, 0, 8, 109, 101, 115, 2, 115, 116, 101, 114, 0, 8, 109, 103, 114, 111, 98, 2, 115, 116, 0, 8, 115, 101,
+			114, 112, 2, 110, 110, 105, 110, 103, 0, 8, 115, 107, 101, 2, 109, 112, 101, 108, 0, 8, 116, 110, 97, 2, 110, 110, 101, 0, 8, 116,
+			111, 114, 103, 2, 115, 0, 8, 116, 111, 114, 112, 2, 115, 116, 0, 8, 116, 116, 97, 2, 115, 116, 0, 114, 1, 112, 117, 115, 2, 108,
+			97, 116, 105, 118, 3, 6, 116, 34, 0, 122, 1, 112, 97, 114, 116, 3, 6, 116, 47, 89, 0, 110, 101, 1, 114, 105, 115, 2, 12, 3,
+			6, 116, 50, 14, 0, 110, 100, 101, 1, 100, 105, 118, 105, 100, 3, 6, 116, 50, 72, 14, 0, 110, 105, 117, 109, 1, 108, 108, 105, 109,
+			3, 6, 116, 50, 111, 126, 65, 0, 4, 107, 2, 116, 32, 12, 3, 6, 116, 81, 0, 107, 2, 116, 101, 32, 12, 0, 107, 2, 116, 101,
+			110, 32, 12, 0, 107, 2, 116, 101, 110, 115, 32, 12, 0, 107, 2, 116, 101, 114, 32, 12, 0, 107, 8, 102, 101, 100, 2, 116, 0, 107,
+			8, 102, 102, 97, 2, 116, 0, 107, 8, 102, 102, 101, 2, 116, 32, 0, 107, 8, 102, 110, 111, 107, 2, 116, 0, 107, 8, 102, 114, 101,
+			112, 2, 116, 0, 107, 8, 102, 166, 195, 114, 112, 2, 116, 0, 107, 8, 106, 98, 111, 2, 116, 0, 107, 8, 106, 98, 117, 115, 2, 116,
+			0, 107, 8, 106, 111, 114, 112, 2, 116, 0, 107, 8, 108, 97, 105, 100, 2, 116, 0, 107, 8, 108, 108, 101, 116, 110, 105, 2, 116, 0,
+			107, 8, 108, 108, 111, 107, 2, 116, 32, 0, 107, 8, 108, 108, 111, 107, 2, 116, 101, 0, 107, 8, 108, 111, 105, 99, 111, 115, 2, 116,
+			0, 107, 8, 108, 111, 105, 100, 105, 2, 116, 0, 107, 8, 112, 115, 97, 2, 116, 0, 107, 8, 112, 115, 101, 100, 2, 116, 0, 107, 8,
+			112, 115, 101, 114, 2, 116, 0, 107, 8, 112, 115, 111, 114, 112, 2, 116, 0, 107, 8, 112, 115, 117, 115, 2, 116, 0, 107, 8, 115, 110,
+			105, 2, 116, 0, 107, 8, 116, 105, 107, 114, 97, 2, 116, 0, 115, 116, 101, 114, 1, 107, 114, 111, 3, 6, 116, 89, 47, 108, 0, 115,
+			104, 1, 100, 97, 108, 103, 110, 97, 98, 3, 6, 116, 91, 0, 115, 115, 105, 111, 110, 101, 108, 1, 102, 111, 114, 112, 3, 6, 116, 91,
+			124, 50, 116, 55, 0, 4, 1, 106, 102, 118, 108, 97, 104, 2, 114, 100, 115, 3, 6, 118, 0, 1, 115, 101, 114, 2, 114, 118, 101, 0,
+			4, 1, 114, 112, 121, 99, 2, 115, 3, 6, 119, 0, 8, 114, 114, 97, 2, 115, 116, 0, 107, 8, 114, 114, 111, 107, 2, 116, 3, 6,
+			119, 81, 0, 115, 115, 101, 1, 114, 10, 2, 28, 33, 3, 6, 119, 89, 14, 0, 115, 115, 101, 1, 114, 10, 2, 114, 28, 33, 3, 6,
+			119, 89, 108, 0, 4, 1, 114, 97, 109, 2, 110, 103, 3, 6, 120, 0, 1, 114, 105, 107, 105, 116, 115, 2, 110, 100, 100, 114, 101, 110,
+			103, 0, 1, 114, 114, 111, 102, 2, 116, 110, 105, 110, 103, 12, 0, 8, 114, 103, 101, 114, 2, 115, 0, 8, 114, 103, 110, 111, 107, 2,
+			115, 0, 8, 114, 112, 115, 107, 101, 2, 115, 0, 107, 1, 114, 2, 116, 12, 3, 6, 120, 81, 0, 1, 118, 111, 114, 112, 2, 110, 99,
+			101, 3, 6, 121, 12, 0, 97, 117, 2, 12, 3, 6, 124, 0, 117, 114, 1, 116, 3, 6, 132, 12, 34, 0, 117, 116, 8, 112, 97, 114,
+			101, 116, 3, 6, 132, 58, 72, 0, 4, 106, 1, 105, 103, 121, 104, 2, 110, 101, 3, 6, 136, 0, 106, 1, 108, 97, 103, 0, 106, 8,
+			98, 101, 108, 112, 2, 101, 114, 0, 4, 1, 110, 105, 108, 112, 105, 99, 115, 105, 100, 21, 2, 114, 101, 3, 7, 114, 0, 8, 116, 115,
+			121, 115, 2, 109, 21, 0, 115, 115, 101, 1, 104, 99, 10, 2, 28, 33, 3, 7, 115, 89, 0, 115, 115, 101, 1, 10, 2, 28, 33, 3,
+			7, 116, 89, 14, 0, 115, 115, 101, 1, 10, 2, 114, 28, 33, 3, 7, 116, 89, 108, 0, 8, 108, 108, 105, 116, 115, 2, 98, 101, 110,
+			3, 8, 6, 36, 0, 8, 108, 108, 105, 108, 3, 13, 11, 0, 4, 97, 117, 2, 107, 116, 105, 3, 13, 121, 40, 0, 97, 117, 2, 116,
+			111, 0, 4, 1, 18, 73, 2, 32, 3, 14, 0, 1, 21, 2, 109, 101, 110, 116, 0, 1, 21, 2, 115, 32, 0, 1, 21, 2, 115, 116,
+			32, 12, 0, 1, 21, 2, 115, 116, 101, 32, 12, 0, 1, 98, 97, 2, 21, 0, 1, 98, 97, 118, 104, 2, 104, 97, 114, 32, 0, 1,
+			98, 98, 2, 21, 0, 1, 98, 98, 111, 110, 115, 0, 1, 98, 105, 98, 2, 108, 0, 1, 98, 109, 111, 98, 2, 21, 0, 1, 98, 109,
+			111, 98, 2, 114, 21, 0, 1, 98, 111, 2, 21, 0, 1, 98, 111, 114, 2, 21, 0, 1, 98, 117, 114, 2, 21, 0, 1, 98, 165, 195,
+			2, 110, 0, 1, 98, 166, 195, 108, 2, 21, 12, 0, 1, 98, 184, 195, 2, 21, 0, 1, 99, 2, 32, 0, 1, 99, 2, 114, 105, 110,
+			0, 1, 99, 97, 112, 114, 111, 116, 111, 109, 2, 110, 0, 1, 99, 105, 118, 2, 21, 0, 1, 99, 114, 97, 102, 2, 21, 0, 1, 99,
+			121, 111, 106, 2, 115, 0, 1, 100, 2, 115, 32, 0, 1, 100, 97, 107, 115, 2, 21, 0, 1, 100, 97, 108, 102, 2, 21, 0, 1, 100,
+			100, 101, 107, 2, 108, 0, 1, 100, 100, 105, 109, 2, 108, 0, 1, 100, 100, 111, 2, 21, 0, 1, 100, 101, 2, 45, 0, 1, 100, 101,
+			98, 0, 1, 100, 101, 118, 2, 21, 0, 1, 100, 105, 98, 2, 21, 0, 1, 100, 105, 108, 2, 21, 0, 1, 100, 105, 109, 2, 21, 12,
+			0, 1, 100, 105, 115, 2, 21, 12, 0, 1, 100, 106, 184, 195, 2, 21, 0, 1, 100, 108, 97, 114, 107, 115, 2, 21, 0, 1, 100, 108,
+			105, 2, 21, 0, 1, 100, 108, 111, 2, 21, 0, 1, 100, 108, 121, 2, 21, 0, 1, 100, 108, 121, 104, 2, 115, 0, 1, 100, 108, 166,
+			195, 106, 115, 2, 110, 0, 1, 100, 110, 2, 21, 0, 1, 100, 110, 111, 2, 21, 0, 1, 100, 110, 117, 2, 21, 12, 0, 1, 100, 111,
+			2, 21, 0, 1, 100, 114, 97, 103, 2, 114, 111, 98, 101, 0, 1, 100, 117, 2, 21, 12, 0, 1, 100, 121, 2, 21, 0, 1, 100, 121,
+			2, 21, 12, 12, 0, 1, 100, 165, 195, 2, 21, 12, 12, 0, 1, 100, 166, 195, 2, 21, 0, 1, 100, 184, 195, 2, 21, 12, 12, 0,
+			1, 102, 101, 114, 2, 114, 101, 110, 0, 1, 102, 102, 97, 2, 21, 0, 1, 102, 102, 105, 100, 2, 114, 101, 110, 0, 1, 102, 102, 111,
+			2, 110, 0, 1, 102, 102, 184, 195, 98, 2, 108, 21, 0, 1, 102, 108, 101, 2, 110, 98, 101, 110, 0, 1, 102, 111, 106, 115, 2, 108,
+			0, 1, 103, 97, 100, 0, 1, 103, 101, 108, 0, 1, 103, 103, 121, 2, 21, 12, 0, 1, 103, 108, 184, 195, 2, 21, 0, 1, 103, 110,
+			97, 2, 21, 0, 1, 103, 110, 101, 2, 21, 12, 0, 1, 103, 110, 111, 2, 21, 0, 1, 103, 110, 117, 2, 21, 0, 1, 103, 111, 108,
+			107, 0, 1, 103, 116, 110, 184, 195, 114, 2, 110, 12, 0, 1, 103, 117, 2, 21, 0, 1, 103, 121, 115, 2, 12, 12, 0, 1, 103, 166,
+			195, 2, 21, 0, 1, 103, 184, 195, 2, 21, 0, 1, 104, 99, 2, 110, 32, 12, 12, 0, 1, 104, 99, 97, 112, 97, 2, 21, 0, 1,
+			105, 100, 117, 116, 115, 2, 21, 0, 1, 105, 114, 97, 110, 97, 107, 2, 21, 0, 1, 105, 114, 166, 195, 2, 21, 0, 1, 105, 118, 2,
+			21, 0, 1, 106, 101, 2, 21, 0, 1, 106, 101, 108, 2, 21, 0, 1, 106, 108, 17, 65, 2, 21, 0, 1, 106, 115, 116, 117, 2, 21,
+			0, 1, 106, 184, 195, 2, 21, 0, 1, 107, 107, 2, 21, 0, 1, 107, 107, 97, 106, 2, 21, 12, 0, 1, 107, 107, 105, 116, 2, 21,
+			12, 12, 12, 12, 12, 0, 1, 107, 107, 117, 0, 1, 107, 107, 166, 195, 2, 110, 101, 116, 32, 0, 1, 107, 108, 97, 2, 21, 12, 0,
+			1, 107, 108, 105, 2, 21, 0, 1, 107, 108, 111, 2, 21, 0, 1, 107, 108, 166, 195, 109, 0, 1, 107, 110, 97, 2, 21, 0, 1, 107,
+			114, 105, 2, 21, 0, 1, 107, 114, 121, 2, 21, 0, 1, 107, 114, 166, 195, 2, 21, 0, 1, 107, 114, 184, 195, 2, 21, 0, 1, 107,
+			114, 184, 195, 2, 110, 0, 1, 107, 115, 97, 0, 1, 107, 115, 100, 110, 97, 104, 2, 21, 0, 1, 107, 115, 101, 110, 110, 101, 109, 2,
+			21, 0, 1, 107, 115, 105, 102, 2, 21, 0, 1, 107, 115, 165, 195, 112, 2, 21, 0, 1, 107, 121, 99, 2, 108, 0, 1, 107, 121, 99,
+			2, 108, 108, 195, 184, 98, 0, 1, 107, 166, 195, 114, 103, 2, 110, 0, 1, 108, 97, 2, 21, 0, 1, 108, 97, 110, 2, 21, 0, 1,
+			108, 97, 118, 2, 114, 105, 12, 12, 0, 1, 108, 98, 111, 98, 0, 1, 108, 98, 166, 195, 2, 21, 0, 1, 108, 98, 166, 195, 2, 103,
+			114, 195, 184, 100, 0, 1, 108, 101, 2, 102, 97, 110, 116, 0, 1, 108, 101, 2, 118, 97, 116, 0, 1, 108, 101, 115, 2, 21, 0, 1,
+			108, 101, 116, 2, 12, 12, 0, 1, 108, 103, 110, 101, 2, 21, 0, 1, 108, 103, 111, 110, 107, 2, 21, 0, 1, 108, 103, 117, 2, 21,
+			0, 1, 108, 103, 184, 195, 2, 21, 0, 1, 108, 105, 97, 109, 0, 1, 108, 105, 112, 2, 21, 0, 1, 108, 105, 118, 104, 2, 21, 0,
+			1, 108, 106, 184, 195, 2, 21, 0, 1, 108, 106, 184, 195, 116, 2, 115, 0, 1, 108, 107, 105, 118, 2, 21, 0, 1, 108, 108, 2, 100,
+			101, 116, 12, 0, 1, 108, 108, 101, 0, 1, 108, 108, 101, 109, 2, 109, 0, 1, 108, 108, 105, 2, 21, 0, 1, 108, 108, 105, 112, 115,
+			2, 21, 12, 0, 1, 108, 108, 117, 2, 21, 0, 1, 108, 108, 121, 2, 21, 0, 1, 108, 108, 166, 195, 2, 21, 0, 1, 108, 108, 184,
+			195, 2, 21, 0, 1, 108, 109, 97, 0, 1, 108, 109, 117, 2, 21, 0, 1, 108, 111, 0, 1, 108, 111, 107, 115, 2, 21, 0, 1, 108,
+			111, 109, 2, 115, 116, 101, 114, 101, 0, 1, 108, 114, 101, 112, 0, 1, 108, 115, 117, 2, 21, 12, 0, 1, 108, 118, 97, 2, 21, 0,
+			1, 108, 118, 166, 195, 106, 2, 21, 0, 1, 108, 165, 195, 2, 17, 67, 0, 1, 108, 166, 195, 2, 21, 0, 1, 108, 184, 195, 2, 21,
+			12, 12, 0, 1, 109, 97, 2, 21, 0, 1, 109, 97, 107, 2, 114, 97, 0, 1, 109, 100, 184, 195, 2, 21, 0, 1, 109, 105, 116, 2,
+			21, 0, 1, 109, 108, 97, 2, 21, 0, 1, 109, 109, 97, 115, 2, 110, 21, 0, 1, 109, 109, 101, 2, 21, 0, 1, 109, 109, 111, 2,
+			21, 0, 1, 109, 109, 117, 2, 21, 12, 0, 1, 109, 109, 184, 195, 2, 21, 0, 1, 109, 114, 97, 2, 21, 0, 1, 109, 114, 166, 195,
+			110, 0, 1, 110, 2, 117, 110, 103, 101, 0, 1, 110, 21, 2, 100, 0, 1, 110, 97, 98, 2, 21, 0, 1, 110, 97, 118, 2, 21, 0,
+			1, 110, 98, 17, 65, 2, 21, 0, 1, 110, 100, 105, 118, 0, 1, 110, 101, 103, 2, 114, 97, 21, 0, 1, 110, 101, 103, 2, 114, 97,
+			108, 0, 1, 110, 101, 115, 2, 115, 116, 0, 1, 110, 103, 101, 2, 21, 0, 1, 110, 105, 2, 21, 12, 12, 0, 1, 110, 105, 109, 2,
+			21, 0, 1, 110, 106, 184, 195, 2, 21, 0, 1, 110, 110, 101, 103, 2, 109, 0, 1, 110, 110, 101, 109, 0, 1, 110, 110, 184, 195, 2,
+			115, 116, 0, 1, 110, 111, 116, 2, 21, 0, 1, 110, 114, 2, 115, 116, 101, 0, 1, 110, 114, 97, 2, 21, 0, 1, 110, 114, 101, 2,
+			21, 0, 1, 110, 114, 101, 106, 104, 2, 21, 0, 1, 110, 114, 166, 195, 2, 21, 0, 1, 110, 114, 184, 195, 2, 21, 0, 1, 110, 115,
+			17, 65, 108, 2, 12, 0, 1, 110, 115, 105, 103, 2, 12, 0, 1, 110, 115, 105, 118, 2, 12, 0, 1, 110, 115, 107, 111, 118, 0, 1,
+			110, 115, 111, 114, 102, 0, 1, 110, 118, 17, 65, 2, 21, 0, 1, 110, 165, 195, 2, 17, 67, 0, 1, 110, 165, 195, 2, 21, 12, 0,
+			1, 110, 165, 195, 109, 2, 100, 0, 1, 111, 114, 2, 21, 0, 1, 112, 2, 100, 101, 114, 101, 0, 1, 112, 109, 97, 2, 21, 0, 1,
+			112, 109, 97, 108, 2, 21, 0, 1, 112, 109, 97, 114, 2, 21, 0, 1, 112, 109, 101, 116, 2, 114, 97, 116, 117, 114, 0, 1, 112, 109,
+			105, 115, 2, 108, 0, 1, 112, 109, 117, 17, 67, 2, 21, 0, 1, 112, 109, 117, 108, 2, 110, 0, 1, 112, 109, 166, 195, 107, 2, 21,
+			0, 1, 112, 109, 184, 195, 114, 2, 21, 0, 1, 112, 111, 2, 114, 0, 1, 112, 112, 101, 104, 2, 21, 0, 1, 112, 112, 105, 108, 2,
+			21, 0, 1, 112, 112, 111, 17, 67, 2, 21, 0, 1, 112, 112, 117, 114, 2, 21, 0, 1, 112, 112, 166, 195, 2, 21, 0, 1, 112, 115,
+			105, 98, 2, 21, 0, 1, 114, 2, 104, 0, 1, 114, 97, 118, 0, 1, 114, 100, 114, 111, 0, 1, 114, 114, 184, 195, 2, 21, 0, 1,
+			114, 117, 2, 110, 101, 0, 1, 114, 165, 195, 2, 21, 12, 0, 1, 115, 2, 32, 0, 1, 115, 97, 17, 67, 2, 21, 0, 1, 115, 100,
+			105, 2, 108, 21, 0, 1, 115, 105, 2, 21, 12, 12, 0, 1, 115, 107, 101, 118, 2, 108, 0, 1, 115, 107, 111, 2, 21, 0, 1, 115,
+			108, 101, 2, 21, 0, 1, 115, 108, 101, 2, 115, 21, 0, 1, 115, 108, 184, 195, 2, 21, 0, 1, 115, 110, 97, 100, 2, 21, 0, 1,
+			115, 110, 97, 115, 2, 21, 0, 1, 115, 110, 111, 107, 2, 107, 118, 0, 1, 115, 110, 166, 195, 2, 21, 0, 1, 115, 110, 184, 195, 104,
+			0, 1, 115, 111, 2, 21, 0, 1, 115, 111, 2, 110, 0, 1, 115, 115, 17, 65, 2, 21, 0, 1, 115, 117, 108, 2, 12, 12, 0, 1,
+			115, 117, 114, 2, 21, 0, 1, 115, 118, 184, 195, 98, 0, 1, 115, 121, 2, 21, 0, 1, 115, 165, 195, 0, 1, 115, 166, 195, 2, 21,
+			0, 1, 115, 166, 195, 110, 2, 21, 0, 1, 115, 166, 195, 118, 2, 110, 0, 1, 115, 184, 195, 2, 21, 0, 1, 116, 2, 32, 0, 1,
+			116, 97, 114, 2, 21, 0, 1, 116, 101, 118, 2, 114, 97, 110, 0, 1, 116, 102, 17, 65, 2, 21, 12, 0, 1, 116, 102, 105, 2, 21,
+			0, 1, 116, 102, 166, 195, 2, 21, 0, 1, 116, 103, 166, 195, 2, 21, 12, 0, 1, 116, 106, 184, 195, 2, 21, 0, 1, 116, 108, 101,
+			109, 2, 21, 0, 1, 116, 108, 121, 2, 21, 0, 1, 116, 110, 97, 2, 21, 0, 1, 116, 110, 101, 118, 2, 21, 0, 1, 116, 110, 105,
+			108, 102, 2, 21, 0, 1, 116, 111, 110, 2, 21, 0, 1, 116, 114, 17, 65, 2, 108, 21, 0, 1, 116, 114, 101, 106, 2, 21, 0, 1,
+			116, 114, 101, 109, 115, 2, 21, 0, 1, 116, 114, 111, 107, 0, 1, 116, 114, 111, 108, 0, 1, 116, 114, 121, 109, 2, 21, 0, 1, 116,
+			115, 97, 2, 21, 0, 1, 116, 115, 100, 101, 98, 2, 21, 0, 1, 116, 115, 100, 110, 105, 109, 2, 21, 0, 1, 116, 115, 101, 104, 2,
+			21, 0, 1, 116, 115, 101, 104, 2, 110, 12, 0, 1, 116, 115, 114, 97, 99, 2, 110, 0, 1, 116, 115, 114, 97, 107, 2, 110, 0, 1,
+			116, 115, 166, 195, 2, 21, 0, 1, 116, 116, 97, 17, 67, 2, 21, 0, 1, 116, 116, 97, 104, 2, 21, 12, 0, 1, 116, 116, 111, 2,
+			21, 0, 1, 116, 116, 111, 108, 102, 2, 115, 116, 0, 1, 116, 116, 121, 2, 21, 0, 1, 116, 116, 166, 195, 2, 21, 12, 0, 1, 117,
+			107, 115, 2, 21, 0, 1, 118, 97, 104, 0, 1, 118, 97, 112, 2, 21, 0, 1, 118, 97, 114, 2, 21, 0, 1, 118, 105, 2, 21, 0,
+			1, 118, 105, 103, 2, 110, 0, 1, 118, 108, 2, 100, 101, 0, 1, 118, 108, 97, 0, 1, 118, 108, 117, 2, 21, 0, 1, 118, 111, 2,
+			21, 0, 1, 118, 111, 2, 110, 0, 1, 118, 114, 97, 2, 21, 0, 1, 118, 114, 101, 110, 2, 21, 0, 1, 118, 114, 101, 115, 0, 1,
+			118, 114, 105, 118, 104, 2, 108, 0, 1, 118, 114, 184, 195, 2, 21, 0, 1, 118, 121, 2, 21, 0, 1, 118, 166, 195, 2, 21, 0, 1,
+			118, 184, 195, 2, 21, 0, 1, 122, 110, 111, 114, 98, 2, 21, 0, 2, 106, 117, 108, 12, 0, 8, 110, 101, 0, 8, 110, 115, 105, 2,
+			12, 0, 8, 116, 111, 114, 112, 2, 115, 116, 101, 114, 0, 8, 118, 101, 108, 2, 21, 12, 12, 0, 4, 1, 21, 2, 32, 12, 12, 3,
+			14, 11, 0, 1, 108, 117, 2, 21, 0, 1, 115, 2, 32, 12, 0, 2, 106, 111, 98, 12, 12, 0, 2, 106, 111, 114, 100, 12, 12, 0,
+			2, 106, 195, 166, 103, 101, 114, 12, 12, 0, 4, 110, 1, 100, 17, 65, 2, 21, 3, 14, 50, 0, 110, 100, 1, 107, 115, 184, 195, 115,
+			2, 101, 12, 12, 0, 110, 97, 100, 101, 8, 109, 111, 114, 112, 3, 14, 50, 6, 117, 86, 14, 0, 110, 97, 100, 101, 114, 8, 109, 111,
+			114, 112, 3, 14, 50, 6, 117, 86, 109, 0, 4, 110, 100, 101, 1, 10, 2, 32, 12, 12, 12, 3, 14, 50, 14, 0, 110, 101, 1, 21,
+			2, 32, 0, 110, 101, 1, 103, 103, 21, 2, 32, 14, 128, 128, 132, 0, 110, 101, 115, 1, 21, 2, 32, 3, 14, 50, 14, 89, 0, 108,
+			111, 116, 1, 122, 111, 3, 14, 55, 6, 109, 47, 0, 108, 108, 101, 1, 116, 110, 105, 2, 107, 116, 117, 12, 3, 14, 55, 116, 0, 106,
+			2, 97, 103, 116, 12, 12, 3, 14, 57, 0, 4, 106, 101, 114, 110, 1, 109, 3, 14, 57, 115, 34, 50, 0, 106, 101, 114, 110, 1, 118,
+			0, 100, 1, 114, 114, 2, 17, 65, 3, 14, 72, 0, 4, 106, 1, 100, 110, 2, 111, 98, 3, 14, 75, 0, 106, 1, 109, 2, 111, 98,
+			0, 4, 103, 1, 107, 115, 105, 102, 3, 14, 81, 0, 103, 1, 107, 115, 114, 111, 116, 0, 103, 1, 108, 2, 97, 110, 12, 12, 0, 103,
+			1, 108, 101, 100, 2, 17, 65, 0, 103, 1, 108, 101, 114, 2, 105, 111, 110, 0, 103, 1, 108, 101, 116, 2, 114, 0, 103, 1, 116, 115,
+			2, 195, 165, 0, 103, 2, 97, 102, 102, 101, 108, 0, 103, 2, 97, 110, 103, 115, 0, 103, 2, 101, 118, 105, 110, 115, 116, 12, 0, 103,
+			2, 114, 117, 110, 100, 0, 103, 2, 195, 165, 12, 0, 118, 101, 1, 108, 102, 97, 2, 114, 3, 14, 84, 36, 0, 4, 100, 1, 114, 114,
+			3, 14, 86, 0, 116, 1, 99, 105, 112, 115, 111, 104, 0, 116, 1, 108, 115, 114, 97, 118, 0, 116, 2, 104, 101, 100, 0, 114, 101, 116,
+			1, 100, 165, 195, 114, 3, 14, 120, 47, 0, 101, 2, 106, 101, 114, 3, 14, 121, 0, 1, 104, 99, 97, 109, 112, 97, 112, 3, 19, 6,
+			36, 0, 120, 99, 104, 97, 110, 103, 101, 3, 21, 0, 115, 8, 108, 114, 97, 3, 21, 102, 114, 0, 4, 110, 2, 116, 114, 195, 169, 3,
+			35, 68, 0, 110, 8, 2, 116, 114, 101, 0, 110, 103, 97, 103, 2, 101, 3, 35, 68, 81, 117, 91, 0, 4, 1, 17, 67, 2, 18, 67,
+			97, 3, 36, 0, 1, 18, 74, 2, 100, 101, 0, 1, 108, 2, 118, 101, 0, 2, 17, 67, 101, 21, 0, 2, 17, 67, 105, 103, 12, 12,
+			0, 2, 110, 101, 32, 0, 2, 110, 101, 114, 32, 0, 103, 1, 116, 115, 2, 101, 116, 0, 101, 1, 100, 105, 2, 108, 3, 36, 6, 116,
+			0, 4, 1, 107, 2, 109, 111, 3, 36, 12, 0, 2, 100, 105, 116, 104, 0, 8, 107, 115, 2, 101, 114, 0, 4, 103, 101, 8, 2, 32,
+			3, 36, 12, 57, 14, 0, 103, 101, 8, 2, 98, 108, 97, 100, 0, 103, 101, 8, 2, 108, 195, 184, 118, 0, 103, 101, 8, 2, 112, 97,
+			114, 107, 101, 116, 0, 103, 101, 8, 2, 116, 114, 195, 166, 0, 4, 103, 1, 108, 114, 101, 100, 110, 117, 3, 36, 57, 0, 106, 2, 97,
+			107, 117, 0, 4, 103, 1, 108, 2, 101, 110, 100, 97, 3, 36, 81, 0, 103, 1, 108, 2, 105, 116, 105, 0, 103, 1, 109, 2, 97, 0,
+			103, 1, 112, 2, 97, 115, 117, 115, 0, 103, 101, 110, 100, 101, 8, 108, 2, 32, 3, 36, 81, 6, 115, 50, 72, 14, 0, 100, 101, 1,
+			118, 104, 3, 36, 86, 14, 0, 4, 8, 2, 32, 115, 112, 101, 97, 107, 3, 37, 0, 97, 1, 108, 2, 115, 101, 0, 97, 1, 108, 2,
+			115, 105, 110, 103, 0, 121, 1, 108, 108, 0, 4, 97, 1, 104, 2, 108, 3, 37, 12, 0, 97, 1, 107, 2, 116, 111, 110, 0, 97, 1,
+			112, 2, 99, 111, 0, 97, 1, 114, 100, 2, 109, 0, 97, 1, 116, 2, 109, 0, 97, 8, 112, 2, 107, 32, 0, 101, 1, 103, 2, 107,
+			0, 101, 1, 104, 115, 2, 108, 97, 0, 101, 1, 107, 2, 112, 101, 114, 0, 101, 1, 114, 102, 0, 101, 1, 114, 102, 2, 108, 97, 110,
+			0, 101, 1, 114, 103, 2, 110, 0, 101, 1, 114, 116, 115, 2, 116, 0, 101, 1, 119, 2, 12, 0, 101, 1, 119, 2, 107, 0, 101, 8,
+			100, 2, 112, 0, 101, 8, 108, 102, 2, 99, 101, 12, 0, 105, 8, 100, 2, 100, 114, 101, 0, 97, 108, 8, 110, 3, 37, 12, 59, 0,
+			4, 97, 100, 8, 109, 2, 32, 3, 37, 12, 72, 0, 101, 100, 1, 112, 115, 0, 101, 100, 1, 119, 116, 0, 101, 100, 8, 100, 0, 101,
+			100, 8, 114, 2, 25, 0, 97, 99, 104, 8, 112, 3, 37, 12, 76, 0, 97, 103, 117, 101, 1, 108, 3, 37, 12, 81, 0, 97, 103, 108,
+			101, 3, 37, 12, 81, 14, 55, 0, 4, 97, 115, 101, 1, 116, 112, 105, 114, 116, 115, 3, 37, 12, 89, 0, 101, 115, 101, 1, 104, 99,
+			0, 97, 115, 116, 8, 3, 37, 12, 89, 72, 0, 103, 1, 108, 2, 101, 114, 101, 3, 37, 20, 81, 0, 116, 111, 110, 8, 3, 37, 47,
+			14, 50, 0, 97, 98, 111, 100, 121, 1, 112, 3, 37, 71, 109, 72, 37, 0, 98, 97, 121, 3, 37, 71, 115, 57, 0, 100, 105, 101, 8,
+			2, 32, 3, 37, 72, 111, 0, 103, 101, 1, 108, 108, 111, 99, 3, 37, 75, 0, 118, 105, 101, 8, 116, 115, 3, 37, 84, 37, 0, 115,
+			112, 101, 97, 107, 3, 37, 89, 48, 37, 12, 49, 0, 97, 115, 121, 3, 37, 89, 111, 0, 119, 1, 108, 2, 105, 115, 3, 40, 12, 0,
+			119, 1, 116, 115, 3, 57, 40, 0, 117, 103, 101, 110, 101, 3, 57, 40, 75, 6, 37, 12, 50, 0, 4, 117, 109, 1, 108, 111, 110, 105,
+			108, 3, 57, 126, 65, 0, 117, 109, 1, 108, 111, 114, 116, 101, 112, 0, 116, 1, 103, 111, 110, 2, 32, 3, 86, 0, 4, 1, 107, 107,
+			105, 116, 2, 114, 21, 12, 12, 12, 12, 12, 3, 108, 0, 114, 1, 108, 108, 105, 112, 115, 2, 101, 0, 114, 1, 116, 110, 105, 108, 112,
+			115, 0, 110, 101, 1, 114, 103, 110, 105, 102, 3, 108, 50, 14, 0, 117, 1, 102, 101, 3, 108, 57, 0, 103, 1, 114, 116, 115, 109, 105,
+			104, 2, 105, 109, 115, 3, 108, 81, 0, 114, 101, 1, 103, 114, 117, 2, 32, 12, 12, 3, 108, 108, 0, 4, 1, 99, 110, 97, 108, 101,
+			101, 114, 102, 2, 114, 3, 109, 0, 1, 108, 97, 109, 2, 114, 105, 0, 1, 114, 21, 2, 32, 12, 12, 0, 1, 114, 100, 2, 100, 101,
+			115, 32, 0, 1, 114, 100, 110, 2, 17, 65, 0, 1, 114, 100, 110, 97, 0, 1, 114, 100, 117, 108, 115, 2, 21, 0, 1, 114, 101, 107,
+			105, 21, 2, 32, 24, 0, 1, 114, 109, 105, 2, 21, 0, 1, 114, 111, 10, 2, 112, 108, 0, 1, 114, 111, 116, 115, 0, 1, 114, 114,
+			184, 195, 116, 2, 115, 116, 0, 1, 114, 116, 97, 108, 107, 0, 1, 114, 116, 110, 101, 2, 112, 114, 0, 1, 114, 116, 110, 101, 108, 115,
+			0, 1, 114, 116, 115, 110, 101, 118, 0, 1, 114, 117, 112, 2, 115, 116, 12, 0, 1, 114, 118, 184, 195, 110, 2, 21, 0, 1, 114, 121,
+			110, 2, 21, 12, 0, 114, 1, 98, 17, 65, 10, 0, 114, 1, 100, 101, 0, 114, 1, 100, 110, 105, 0, 114, 1, 100, 165, 195, 2, 12,
+			12, 0, 114, 1, 102, 102, 2, 115, 111, 110, 0, 114, 1, 105, 100, 117, 116, 115, 0, 114, 1, 108, 97, 109, 0, 114, 1, 108, 100, 105,
+			109, 0, 114, 1, 108, 108, 101, 0, 114, 1, 108, 165, 195, 109, 0, 114, 1, 109, 109, 111, 2, 21, 12, 12, 0, 114, 1, 110, 97, 2,
+			21, 0, 114, 1, 110, 115, 17, 65, 108, 2, 12, 0, 114, 1, 110, 115, 105, 118, 2, 12, 0, 114, 1, 110, 165, 195, 2, 21, 0, 114,
+			1, 112, 21, 2, 17, 67, 21, 0, 114, 1, 112, 117, 115, 0, 114, 1, 115, 100, 117, 112, 2, 12, 0, 114, 1, 115, 117, 108, 2, 12,
+			0, 114, 1, 118, 117, 103, 2, 110, 195, 184, 114, 0, 114, 1, 100, 110, 101, 3, 109, 11, 0, 4, 110, 100, 101, 1, 114, 21, 2, 32,
+			12, 12, 3, 109, 50, 14, 0, 110, 101, 1, 114, 21, 2, 32, 0, 110, 101, 115, 1, 114, 21, 2, 32, 14, 128, 128, 132, 3, 109, 50,
+			14, 89, 0, 4, 116, 1, 114, 100, 110, 111, 115, 3, 109, 86, 0, 116, 1, 114, 101, 107, 105, 21, 2, 32, 0, 115, 1, 114, 21, 2,
+			32, 3, 109, 89, 0, 4, 1, 115, 115, 101, 106, 3, 111, 0, 8, 2, 32, 109, 97, 105, 108, 0, 121, 1, 17, 67, 2, 32, 0, 121,
+			1, 107, 0, 121, 1, 110, 115, 105, 100, 0, 121, 1, 115, 100, 110, 105, 108, 0, 121, 1, 118, 114, 97, 104, 0, 121, 8, 110, 114, 97,
+			98, 0, 8, 100, 2, 32, 3, 111, 11, 0, 4, 3, 114, 0, 1, 18, 68, 2, 18, 67, 105, 0, 1, 18, 73, 2, 103, 116, 0, 1,
+			18, 74, 2, 116, 97, 0, 1, 98, 2, 110, 0, 1, 98, 2, 114, 101, 116, 12, 0, 1, 98, 2, 114, 105, 103, 0, 1, 98, 114, 111,
+			102, 0, 1, 100, 2, 109, 101, 110, 116, 0, 1, 100, 2, 112, 114, 0, 1, 100, 2, 116, 111, 110, 97, 116, 111, 114, 0, 1, 104, 2,
+			98, 101, 114, 97, 114, 101, 110, 0, 1, 104, 2, 100, 100, 0, 1, 104, 2, 108, 100, 97, 103, 115, 0, 1, 104, 2, 108, 102, 108, 117,
+			103, 116, 0, 1, 104, 2, 108, 102, 111, 114, 101, 116, 0, 1, 104, 2, 108, 103, 97, 114, 100, 0, 1, 104, 2, 108, 104, 101, 100, 0,
+			1, 104, 2, 108, 104, 106, 101, 114, 116, 101, 116, 0, 1, 104, 2, 108, 107, 111, 110, 115, 101, 114, 118, 101, 115, 0, 1, 104, 2, 108,
+			115, 107, 105, 110, 100, 101, 116, 0, 1, 104, 2, 108, 115, 116, 101, 103, 116, 0, 1, 104, 2, 108, 115, 116, 195, 184, 98, 116, 0, 1,
+			104, 2, 110, 100, 101, 12, 0, 1, 107, 115, 2, 100, 0, 1, 107, 115, 100, 184, 195, 114, 103, 0, 1, 107, 115, 101, 98, 184, 195, 116,
+			115, 0, 1, 107, 115, 101, 100, 121, 114, 103, 0, 1, 107, 115, 101, 103, 97, 116, 111, 112, 0, 1, 107, 115, 101, 103, 117, 102, 0, 1,
+			107, 115, 101, 108, 165, 195, 109, 0, 1, 107, 115, 101, 112, 112, 117, 115, 0, 1, 107, 115, 101, 115, 105, 112, 115, 0, 1, 107, 115, 101,
+			116, 0, 1, 107, 115, 108, 117, 104, 0, 1, 107, 115, 114, 117, 109, 0, 1, 107, 115, 116, 114, 101, 115, 115, 101, 100, 0, 1, 107, 115,
+			116, 114, 101, 115, 115, 101, 100, 0, 1, 107, 115, 118, 108, 184, 195, 115, 0, 1, 107, 115, 184, 195, 114, 116, 115, 0, 1, 107, 115, 184,
+			195, 114, 116, 115, 0, 1, 108, 2, 100, 101, 114, 0, 1, 108, 2, 118, 101, 114, 97, 110, 0, 1, 108, 2, 118, 101, 114, 105, 110, 103,
+			0, 1, 108, 101, 2, 118, 12, 0, 1, 108, 102, 2, 115, 116, 12, 0, 1, 108, 108, 105, 2, 103, 97, 108, 0, 1, 108, 111, 112, 2,
+			114, 101, 12, 0, 1, 108, 115, 2, 115, 107, 0, 1, 108, 117, 109, 114, 111, 102, 21, 2, 114, 101, 0, 1, 109, 2, 17, 67, 18, 69,
+			0, 1, 109, 2, 100, 97, 0, 1, 109, 2, 100, 97, 108, 106, 101, 0, 1, 109, 2, 100, 105, 12, 0, 1, 109, 114, 101, 108, 108, 97,
+			2, 115, 116, 0, 1, 110, 2, 100, 103, 97, 110, 103, 0, 1, 110, 2, 100, 115, 108, 97, 103, 0, 1, 110, 2, 100, 115, 116, 105, 103,
+			0, 1, 110, 2, 100, 115, 195, 166, 116, 0, 1, 110, 101, 109, 2, 100, 0, 1, 110, 107, 2, 98, 0, 1, 110, 115, 2, 25, 12, 0,
+			1, 112, 2, 98, 101, 114, 0, 1, 112, 2, 116, 101, 114, 0, 1, 114, 107, 115, 2, 118, 0, 1, 115, 2, 114, 105, 101, 12, 0, 1,
+			115, 100, 110, 105, 2, 12, 0, 1, 115, 100, 110, 105, 2, 114, 32, 0, 1, 115, 100, 117, 114, 111, 102, 0, 1, 115, 101, 100, 111, 103,
+			0, 1, 115, 102, 97, 2, 32, 12, 12, 0, 1, 115, 102, 97, 2, 116, 32, 12, 0, 1, 115, 108, 105, 116, 0, 1, 115, 110, 97, 108,
+			101, 118, 2, 116, 0, 1, 115, 114, 101, 116, 102, 101, 0, 1, 115, 114, 101, 118, 111, 2, 32, 0, 1, 115, 114, 101, 118, 111, 2, 115,
+			32, 0, 1, 115, 116, 114, 111, 98, 2, 12, 0, 1, 116, 101, 108, 108, 105, 109, 97, 107, 0, 1, 116, 101, 116, 114, 117, 0, 1, 116,
+			110, 101, 103, 114, 111, 109, 0, 1, 116, 110, 105, 2, 108, 108, 105, 103, 101, 110, 116, 0, 1, 116, 115, 2, 110, 98, 114, 117, 100, 0,
+			1, 116, 115, 2, 110, 114, 105, 103, 0, 1, 116, 115, 103, 97, 100, 100, 105, 109, 0, 1, 118, 109, 101, 106, 104, 0, 2, 17, 67, 11,
+			0, 2, 100, 116, 0, 2, 108, 101, 103, 105, 12, 12, 0, 2, 110, 101, 114, 103, 105, 12, 12, 12, 12, 0, 2, 110, 104, 101, 100, 0,
+			2, 110, 115, 0, 2, 112, 105, 115, 111, 100, 101, 12, 12, 0, 8, 2, 110, 32, 0, 8, 2, 110, 101, 0, 8, 100, 2, 108, 0, 8,
+			100, 2, 115, 32, 0, 8, 107, 115, 2, 32, 0, 8, 107, 115, 110, 97, 107, 2, 32, 0, 8, 108, 2, 110, 32, 0, 8, 109, 2, 108,
+			32, 0, 8, 109, 2, 110, 116, 0, 8, 109, 2, 115, 116, 12, 12, 0, 8, 109, 108, 97, 2, 110, 0, 8, 110, 115, 2, 114, 32, 0,
+			8, 112, 115, 2, 32, 0, 8, 114, 2, 110, 100, 121, 114, 12, 0, 8, 115, 2, 32, 12, 12, 0, 8, 115, 2, 110, 32, 0, 8, 115,
+			2, 110, 116, 32, 0, 8, 115, 100, 117, 2, 32, 12, 0, 8, 115, 100, 117, 2, 114, 32, 12, 0, 8, 115, 110, 97, 2, 12, 12, 0,
+			8, 116, 2, 32, 0, 8, 116, 115, 2, 110, 32, 0, 8, 116, 115, 105, 0, 100, 1, 116, 115, 2, 98, 114, 0, 100, 1, 116, 115, 2,
+			100, 97, 0, 100, 1, 116, 115, 2, 102, 97, 0, 100, 1, 116, 115, 2, 109, 111, 0, 100, 1, 116, 115, 2, 115, 195, 184, 0, 103, 8,
+			116, 115, 2, 32, 0, 1, 98, 10, 2, 115, 116, 97, 3, 114, 4, 0, 101, 8, 110, 115, 2, 100, 101, 32, 3, 114, 14, 0, 101, 1,
+			114, 2, 108, 3, 114, 19, 115, 0, 110, 100, 101, 1, 106, 102, 3, 114, 20, 50, 14, 0, 110, 100, 101, 114, 1, 106, 102, 3, 114, 20,
+			50, 109, 0, 114, 114, 105, 101, 114, 8, 112, 3, 114, 34, 111, 6, 114, 0, 101, 1, 98, 2, 100, 3, 114, 36, 0, 116, 97, 103, 101,
+			114, 101, 3, 114, 47, 118, 91, 6, 115, 12, 51, 0, 100, 107, 101, 114, 1, 110, 115, 3, 114, 49, 109, 0, 4, 103, 1, 116, 115, 114,
+			101, 118, 111, 3, 114, 57, 0, 103, 8, 118, 2, 32, 0, 103, 8, 118, 2, 101, 116, 32, 0, 103, 101, 110, 8, 2, 21, 3, 114, 57,
+			14, 50, 0, 103, 8, 107, 115, 2, 97, 102, 102, 101, 108, 3, 114, 81, 0, 4, 1, 114, 2, 17, 67, 101, 3, 115, 0, 1, 114, 2,
+			100, 0, 1, 114, 2, 114, 101, 32, 0, 1, 114, 98, 2, 100, 0, 1, 116, 114, 111, 107, 2, 103, 101, 0, 1, 116, 116, 97, 21, 2,
+			115, 116, 0, 2, 114, 17, 67, 101, 0, 8, 114, 101, 108, 108, 97, 2, 100, 101, 32, 0, 8, 114, 116, 2, 100, 0, 114, 103, 195, 169,
+			1, 98, 97, 102, 3, 115, 34, 91, 6, 36, 0, 4, 110, 1, 99, 2, 116, 3, 115, 50, 0, 110, 1, 99, 2, 116, 17, 65, 0, 4,
+			110, 101, 1, 106, 116, 2, 12, 12, 3, 115, 50, 14, 0, 110, 101, 1, 114, 103, 2, 12, 0, 4, 110, 116, 114, 101, 2, 104, 97, 103,
+			3, 115, 50, 47, 34, 108, 0, 110, 116, 114, 101, 8, 32, 116, 97, 2, 32, 0, 110, 101, 114, 1, 106, 116, 2, 12, 3, 115, 50, 108,
+			0, 103, 1, 108, 114, 101, 118, 111, 3, 115, 57, 0, 103, 101, 1, 108, 2, 109, 101, 3, 115, 57, 14, 0, 109, 112, 105, 114, 101, 2,
+			32, 115, 116, 97, 116, 101, 3, 115, 65, 48, 136, 112, 0, 4, 97, 100, 1, 104, 3, 115, 72, 0, 100, 100, 1, 114, 98, 0, 100, 100,
+			105, 101, 8, 3, 115, 72, 37, 0, 4, 107, 1, 112, 115, 101, 114, 2, 116, 97, 98, 101, 108, 3, 115, 81, 0, 107, 8, 106, 111, 114,
+			112, 2, 116, 105, 108, 0, 103, 103, 121, 1, 112, 3, 115, 81, 37, 0, 103, 109, 97, 116, 105, 116, 1, 112, 3, 115, 81, 65, 117, 47,
+			6, 37, 47, 0, 118, 101, 1, 114, 98, 3, 115, 84, 14, 0, 99, 115, 116, 97, 99, 121, 3, 115, 89, 47, 117, 89, 37, 0, 114, 8,
+			100, 2, 21, 12, 3, 115, 110, 0, 4, 1, 17, 67, 2, 18, 73, 12, 12, 3, 116, 0, 1, 17, 67, 2, 108, 108, 11, 0, 1, 17,
+			67, 2, 110, 100, 0, 1, 18, 71, 2, 114, 108, 0, 1, 18, 74, 2, 108, 0, 1, 21, 2, 110, 103, 12, 0, 1, 98, 2, 114, 103,
+			12, 0, 1, 102, 2, 109, 0, 1, 102, 21, 2, 115, 116, 12, 0, 1, 103, 101, 108, 2, 110, 100, 0, 1, 104, 2, 110, 12, 12, 0,
+			1, 104, 21, 2, 115, 116, 12, 0, 1, 104, 99, 2, 17, 67, 0, 1, 107, 97, 114, 2, 116, 12, 0, 1, 108, 2, 18, 72, 11, 0,
+			1, 108, 2, 102, 108, 0, 1, 108, 2, 107, 116, 0, 1, 108, 2, 116, 0, 1, 108, 101, 2, 110, 100, 105, 103, 0, 1, 108, 101, 116,
+			2, 120, 0, 1, 108, 111, 107, 2, 115, 116, 0, 1, 108, 115, 100, 117, 2, 116, 12, 12, 0, 1, 108, 117, 2, 109, 112, 0, 1, 108,
+			117, 115, 110, 111, 107, 2, 110, 116, 0, 1, 109, 2, 115, 116, 101, 114, 0, 1, 110, 2, 18, 72, 11, 0, 1, 110, 101, 2, 109, 0,
+			1, 110, 101, 2, 114, 103, 105, 12, 0, 1, 110, 115, 2, 114, 112, 0, 1, 112, 2, 110, 103, 0, 1, 112, 115, 2, 114, 0, 1, 114,
+			2, 12, 0, 1, 114, 2, 17, 67, 11, 0, 1, 114, 2, 100, 17, 67, 0, 1, 114, 2, 100, 115, 0, 1, 114, 2, 104, 97, 98, 105,
+			108, 0, 1, 114, 2, 109, 18, 69, 0, 1, 114, 2, 110, 103, 195, 184, 12, 0, 1, 114, 2, 110, 115, 107, 114, 0, 1, 114, 2, 110,
+			115, 107, 117, 0, 1, 114, 2, 114, 101, 0, 1, 114, 2, 115, 116, 97, 117, 12, 12, 0, 1, 114, 2, 115, 116, 97, 117, 114, 97, 110,
+			116, 0, 1, 114, 2, 115, 116, 101, 114, 101, 12, 12, 0, 1, 114, 2, 116, 97, 98, 0, 1, 114, 2, 116, 97, 114, 100, 0, 1, 114,
+			2, 116, 101, 110, 116, 105, 111, 110, 0, 1, 114, 2, 116, 105, 12, 0, 1, 114, 2, 116, 111, 114, 0, 1, 114, 2, 116, 111, 117, 0,
+			1, 114, 2, 116, 114, 97, 110, 0, 1, 114, 2, 116, 114, 111, 0, 1, 114, 2, 116, 115, 105, 110, 97, 0, 1, 114, 2, 116, 117, 114,
+			0, 1, 114, 2, 118, 0, 1, 114, 100, 2, 118, 110, 0, 1, 114, 101, 100, 101, 108, 2, 118, 110, 101, 0, 1, 114, 102, 2, 100, 12,
+			0, 1, 114, 102, 2, 100, 101, 32, 0, 1, 114, 103, 2, 116, 0, 1, 114, 107, 2, 116, 97, 0, 1, 114, 111, 101, 116, 2, 116, 0,
+			1, 114, 112, 2, 109, 0, 1, 114, 112, 101, 100, 2, 115, 115, 0, 1, 114, 112, 111, 2, 118, 0, 1, 114, 112, 115, 2, 100, 0, 1,
+			114, 116, 2, 109, 105, 108, 101, 0, 1, 115, 2, 100, 100, 0, 1, 115, 2, 107, 115, 117, 101, 108, 12, 0, 1, 115, 121, 100, 2, 110,
+			116, 101, 114, 105, 0, 1, 116, 115, 2, 100, 0, 1, 116, 115, 97, 107, 21, 2, 108, 0, 2, 102, 116, 101, 114, 0, 2, 107, 115, 0,
+			2, 108, 17, 67, 0, 2, 108, 108, 12, 0, 2, 109, 0, 2, 109, 11, 12, 0, 2, 110, 25, 0, 2, 110, 110, 0, 2, 118, 101, 110,
+			116, 121, 0, 2, 120, 0, 8, 100, 2, 109, 32, 0, 8, 109, 2, 100, 0, 8, 114, 116, 2, 12, 0, 8, 114, 116, 2, 115, 0, 8,
+			114, 116, 2, 116, 0, 97, 1, 119, 115, 2, 116, 114, 101, 0, 106, 1, 118, 2, 114, 32, 12, 0, 106, 1, 118, 2, 114, 101, 116, 32,
+			12, 0, 106, 8, 118, 2, 114, 17, 67, 12, 0, 106, 8, 118, 2, 114, 117, 100, 12, 0, 4, 1, 114, 112, 2, 115, 115, 101, 114, 101,
+			110, 100, 101, 3, 116, 6, 0, 1, 114, 116, 2, 109, 97, 0, 4, 110, 100, 1, 107, 110, 101, 103, 2, 101, 32, 12, 12, 12, 3, 116,
+			20, 50, 0, 110, 100, 1, 107, 114, 101, 110, 97, 2, 101, 32, 12, 12, 12, 0, 110, 100, 1, 118, 109, 111, 2, 101, 12, 12, 0, 110,
+			100, 1, 118, 110, 101, 104, 2, 101, 12, 12, 0, 110, 100, 8, 107, 2, 101, 32, 12, 12, 12, 0, 110, 100, 101, 114, 1, 107, 2, 32,
+			3, 116, 20, 50, 108, 0, 4, 114, 1, 98, 2, 108, 12, 12, 12, 3, 116, 34, 0, 114, 1, 106, 104, 2, 116, 12, 0, 114, 1, 115,
+			2, 103, 101, 110, 116, 0, 114, 1, 115, 107, 101, 2, 99, 0, 114, 118, 101, 114, 1, 115, 101, 114, 2, 32, 101, 110, 3, 116, 34, 84,
+			6, 114, 34, 0, 98, 1, 110, 107, 2, 114, 101, 3, 116, 40, 0, 116, 97, 108, 1, 109, 32, 121, 118, 97, 101, 104, 3, 116, 47, 14,
+			55, 0, 97, 116, 101, 114, 1, 119, 115, 3, 116, 47, 109, 0, 99, 104, 1, 116, 3, 116, 49, 0, 4, 110, 1, 100, 17, 65, 2, 116,
+			105, 3, 116, 50, 0, 110, 100, 1, 100, 108, 117, 102, 2, 101, 12, 0, 110, 100, 1, 115, 100, 117, 2, 12, 12, 0, 110, 100, 1, 115,
+			112, 111, 2, 12, 12, 0, 110, 100, 1, 118, 110, 97, 2, 101, 12, 0, 110, 100, 101, 1, 118, 115, 2, 12, 12, 3, 116, 50, 14, 0,
+			110, 100, 101, 1, 118, 2, 116, 116, 97, 3, 116, 50, 72, 6, 116, 0, 110, 100, 97, 1, 114, 98, 3, 116, 50, 72, 118, 0, 110, 103,
+			101, 1, 104, 101, 110, 111, 116, 115, 3, 116, 50, 75, 0, 108, 108, 101, 118, 101, 3, 116, 55, 84, 14, 0, 108, 108, 101, 118, 101, 114,
+			3, 116, 55, 84, 108, 0, 4, 97, 1, 114, 98, 2, 107, 3, 116, 57, 0, 97, 1, 114, 103, 2, 116, 0, 121, 1, 114, 0, 4, 103,
+			101, 108, 1, 114, 3, 116, 57, 55, 0, 103, 108, 1, 114, 0, 118, 1, 114, 98, 2, 12, 3, 116, 58, 0, 105, 110, 116, 1, 116, 3,
+			116, 68, 0, 116, 111, 112, 1, 110, 3, 116, 72, 4, 109, 71, 0, 4, 100, 100, 105, 101, 1, 114, 102, 3, 116, 72, 37, 0, 100, 100,
+			121, 1, 114, 102, 0, 100, 100, 105, 107, 101, 3, 116, 72, 49, 14, 0, 100, 97, 103, 1, 114, 102, 3, 116, 72, 118, 0, 4, 103, 1,
+			114, 2, 101, 114, 3, 116, 81, 0, 103, 1, 114, 97, 117, 116, 0, 107, 1, 106, 98, 111, 2, 116, 105, 118, 0, 107, 1, 118, 2, 115,
+			0, 118, 101, 116, 1, 114, 17, 67, 3, 116, 84, 14, 86, 11, 0, 100, 101, 116, 1, 116, 115, 2, 32, 3, 116, 86, 14, 47, 0, 115,
+			116, 105, 103, 101, 1, 114, 112, 2, 32, 3, 116, 89, 47, 6, 37, 91, 0, 115, 116, 97, 110, 116, 101, 1, 114, 3, 116, 89, 47, 6,
+			122, 68, 72, 14, 0, 99, 115, 116, 97, 115, 121, 3, 116, 89, 47, 118, 89, 111, 0, 4, 114, 1, 98, 117, 116, 2, 107, 117, 3, 116,
+			110, 0, 114, 114, 1, 104, 115, 2, 121, 0, 114, 114, 121, 1, 98, 3, 118, 16, 113, 0, 114, 1, 116, 2, 109, 12, 12, 3, 118, 34,
+			0, 114, 114, 101, 1, 104, 3, 118, 110, 109, 0, 4, 1, 114, 2, 110, 115, 110, 105, 110, 103, 3, 119, 0, 1, 114, 103, 110, 111, 107,
+			2, 115, 0, 8, 114, 103, 101, 114, 2, 115, 115, 105, 118, 0, 115, 115, 101, 1, 114, 21, 2, 114, 101, 28, 33, 3, 119, 89, 6, 36,
+			0, 4, 1, 110, 115, 2, 114, 114, 101, 3, 120, 0, 1, 114, 2, 18, 67, 115, 0, 1, 114, 2, 18, 74, 115, 0, 1, 114, 2, 107,
+			116, 111, 0, 1, 114, 2, 109, 0, 1, 114, 2, 110, 100, 32, 0, 1, 114, 2, 110, 100, 101, 0, 1, 114, 2, 110, 103, 12, 0, 1,
+			114, 2, 110, 115, 101, 0, 1, 114, 2, 110, 116, 101, 0, 1, 114, 2, 115, 116, 12, 12, 0, 1, 114, 2, 116, 12, 0, 1, 114, 2,
+			118, 108, 0, 1, 114, 2, 118, 110, 0, 1, 114, 18, 67, 2, 17, 67, 11, 0, 1, 114, 18, 72, 2, 109, 109, 0, 1, 114, 98, 2,
+			18, 74, 0, 1, 114, 100, 97, 2, 115, 115, 101, 0, 1, 114, 101, 98, 2, 116, 12, 12, 0, 1, 114, 102, 2, 108, 115, 12, 0, 1,
+			114, 102, 2, 109, 0, 1, 114, 102, 2, 109, 111, 118, 0, 1, 114, 103, 2, 108, 0, 1, 114, 103, 103, 97, 2, 115, 115, 111, 114, 0,
+			1, 114, 105, 100, 2, 107, 116, 0, 1, 114, 108, 97, 110, 105, 109, 105, 114, 107, 2, 116, 0, 1, 114, 112, 2, 17, 67, 11, 12, 0,
+			1, 114, 112, 2, 115, 12, 0, 1, 114, 112, 111, 2, 116, 12, 12, 0, 1, 114, 114, 111, 102, 2, 116, 12, 12, 0, 1, 114, 121, 114,
+			114, 97, 107, 2, 116, 12, 0, 8, 114, 2, 115, 116, 101, 110, 32, 12, 0, 100, 105, 118, 101, 116, 101, 1, 114, 116, 3, 120, 86, 83,
+			47, 14, 0, 100, 105, 118, 101, 1, 114, 116, 3, 120, 86, 84, 14, 0, 100, 105, 118, 101, 114, 1, 114, 116, 3, 120, 86, 84, 108, 0,
+			97, 114, 116, 1, 104, 3, 121, 12, 72, 0, 103, 1, 115, 2, 108, 3, 121, 57, 0, 105, 110, 115, 116, 101, 105, 110, 3, 121, 57, 50,
+			89, 47, 121, 57, 50, 0, 105, 110, 100, 104, 111, 118, 101, 110, 3, 121, 57, 50, 107, 6, 39, 12, 83, 14, 50, 0, 121, 101, 108, 105,
+			110, 101, 114, 3, 121, 57, 55, 121, 57, 50, 108, 0, 4, 110, 1, 112, 2, 115, 105, 111, 110, 12, 3, 121, 68, 0, 110, 1, 114, 2,
+			99, 101, 0, 110, 116, 101, 110, 116, 101, 3, 121, 68, 47, 6, 121, 68, 47, 0, 4, 1, 114, 2, 110, 100, 116, 3, 122, 0, 1, 114,
+			101, 102, 102, 105, 100, 2, 110, 0, 2, 109, 98, 97, 108, 108, 0, 110, 100, 101, 1, 114, 118, 184, 195, 114, 2, 32, 12, 3, 122, 20,
+			50, 14, 0, 110, 100, 101, 114, 1, 114, 118, 184, 195, 114, 2, 32, 3, 122, 20, 50, 109, 0, 4, 103, 1, 18, 73, 3, 122, 57, 0,
+			103, 1, 104, 2, 108, 101, 0, 103, 1, 107, 2, 108, 101, 0, 103, 1, 114, 107, 115, 0, 103, 2, 101, 110, 107, 97, 112, 105, 116, 97,
+			108, 12, 0, 103, 2, 110, 0, 106, 2, 12, 12, 12, 0, 106, 101, 2, 110, 12, 12, 3, 122, 57, 14, 0, 103, 101, 116, 8, 2, 32,
+			3, 122, 57, 14, 86, 0, 106, 114, 101, 1, 108, 2, 12, 3, 122, 57, 34, 109, 0, 103, 108, 1, 110, 3, 122, 57, 55, 0, 4, 106,
+			114, 1, 108, 2, 12, 12, 3, 122, 57, 109, 0, 106, 114, 1, 115, 2, 12, 12, 0, 4, 110, 1, 115, 115, 101, 114, 2, 116, 105, 109,
+			101, 110, 116, 3, 122, 68, 0, 110, 1, 116, 101, 112, 109, 111, 2, 99, 101, 0, 97, 117, 1, 114, 3, 124, 0, 97, 117, 120, 1, 114,
+			3, 126, 0, 97, 114, 108, 8, 3, 132, 12, 59, 0, 97, 114, 112, 8, 3, 132, 12, 71, 0, 117, 115, 101, 1, 109, 3, 132, 12, 88,
+			0, 117, 116, 1, 112, 97, 114, 101, 116, 3, 132, 58, 72, 0, 117, 115, 3, 132, 58, 89, 0, 117, 1, 110, 3, 132, 123, 0, 4, 8,
+			100, 2, 32, 103, 97, 117, 108, 108, 101, 3, 133, 0, 8, 100, 2, 32, 108, 97, 32, 0, 114, 1, 102, 2, 103, 117, 115, 111, 110, 0,
+			117, 8, 2, 17, 67, 3, 133, 58, 0, 4, 1, 103, 2, 106, 115, 3, 136, 0, 103, 1, 18, 71, 2, 101, 0, 103, 1, 101, 108, 101,
+			2, 12, 0, 103, 1, 106, 114, 101, 118, 111, 0, 103, 1, 106, 115, 0, 103, 1, 108, 2, 101, 12, 0, 103, 1, 108, 98, 0, 103, 1,
+			108, 115, 98, 97, 107, 115, 108, 101, 115, 0, 103, 1, 110, 115, 2, 108, 0, 103, 1, 112, 0, 103, 1, 114, 116, 2, 101, 32, 0, 103,
+			1, 114, 116, 2, 101, 100, 101, 32, 0, 103, 1, 114, 116, 2, 101, 110, 32, 0, 103, 1, 114, 116, 2, 101, 114, 32, 0, 103, 1, 114,
+			116, 2, 101, 115, 32, 0, 103, 1, 114, 116, 115, 0, 103, 1, 116, 2, 108, 0, 103, 2, 97, 110, 115, 105, 103, 116, 0, 103, 2, 101,
+			110, 98, 101, 115, 107, 121, 100, 12, 0, 103, 2, 102, 105, 0, 103, 2, 114, 195, 184, 100, 0, 103, 2, 115, 111, 116, 0, 103, 8, 98,
+			2, 32, 0, 105, 1, 104, 2, 100, 101, 108, 0, 105, 1, 115, 2, 115, 0, 105, 1, 115, 2, 115, 109, 111, 108, 0, 105, 1, 116, 115,
+			2, 110, 25, 0, 105, 8, 104, 2, 100, 105, 0, 105, 8, 104, 2, 108, 32, 0, 106, 1, 114, 2, 115, 0, 106, 1, 114, 100, 2, 12,
+			0, 106, 1, 118, 109, 101, 106, 104, 0, 107, 1, 115, 2, 115, 116, 101, 110, 0, 121, 1, 109, 2, 101, 114, 0, 103, 101, 109, 1, 108,
+			98, 2, 105, 100, 3, 136, 13, 65, 0, 4, 103, 101, 110, 100, 101, 1, 108, 2, 32, 98, 195, 184, 114, 110, 3, 136, 14, 50, 14, 0,
+			103, 101, 110, 100, 101, 1, 108, 2, 32, 108, 101, 116, 0, 4, 106, 114, 1, 118, 2, 101, 32, 3, 136, 51, 0, 106, 114, 1, 118, 2,
+			101, 114, 32, 0, 105, 108, 101, 101, 110, 3, 136, 55, 6, 37, 12, 50, 0, 105, 103, 101, 114, 3, 136, 81, 108, 0, 105, 102, 102, 101,
+			108, 3, 136, 83, 14, 55, 0, 105, 115, 101, 110, 104, 111, 119, 101, 114, 3, 136, 89, 13, 50, 107, 121, 40, 108, 0, 105, 115, 101, 110,
+			98, 101, 114, 103, 8, 104, 3, 136, 89, 14, 50, 71, 116, 34, 81, 0, 106, 101, 114, 2, 17, 67, 3, 136, 108, 0, 7, 6, 102, 0,
+			1, 97, 2, 115, 116, 101, 100, 3, 0, 111, 114, 1, 105, 108, 97, 99, 3, 6, 83, 125, 12, 0, 105, 99, 116, 105, 111, 110, 3, 21,
+			0, 4, 1, 97, 2, 17, 67, 3, 58, 0, 1, 97, 2, 108, 121, 116, 116, 101, 0, 1, 97, 2, 116, 114, 121, 107, 0, 4, 3, 83,
+			0, 1, 21, 2, 108, 97, 115, 107, 101, 0, 1, 97, 2, 105, 116, 0, 1, 97, 2, 111, 110, 0, 1, 97, 2, 114, 105, 107, 0, 1,
+			97, 2, 114, 111, 0, 1, 97, 2, 116, 101, 110, 0, 1, 97, 2, 116, 101, 115, 32, 0, 1, 97, 17, 67, 2, 17, 65, 0, 1, 97,
+			17, 67, 2, 116, 0, 1, 97, 100, 2, 110, 0, 1, 97, 103, 2, 108, 0, 1, 97, 107, 2, 107, 97, 0, 1, 97, 107, 115, 0, 1,
+			97, 108, 98, 2, 114, 101, 0, 1, 97, 114, 2, 102, 111, 114, 0, 1, 97, 114, 2, 102, 114, 0, 1, 97, 114, 2, 105, 107, 0, 1,
+			97, 114, 2, 108, 101, 0, 1, 97, 114, 103, 2, 17, 65, 0, 1, 97, 114, 105, 103, 0, 1, 97, 114, 116, 115, 0, 1, 97, 115, 2,
+			97, 114, 0, 1, 97, 115, 2, 114, 97, 110, 0, 1, 97, 116, 115, 2, 101, 0, 1, 97, 118, 2, 108, 0, 2, 106, 101, 100, 101, 114,
+			0, 2, 108, 121, 116, 116, 101, 0, 102, 0, 102, 1, 97, 2, 97, 98, 101, 108, 0, 102, 1, 97, 2, 97, 103, 101, 0, 102, 1, 97,
+			2, 101, 107, 116, 0, 102, 1, 97, 2, 101, 108, 0, 102, 1, 97, 2, 105, 99, 101, 114, 101, 0, 102, 1, 97, 2, 105, 110, 101, 0,
+			102, 1, 97, 2, 105, 110, 105, 116, 101, 116, 0, 102, 1, 97, 2, 105, 114, 109, 0, 102, 1, 97, 2, 117, 116, 97, 103, 101, 0, 102,
+			1, 97, 2, 195, 166, 114, 101, 0, 102, 1, 97, 106, 2, 97, 0, 102, 1, 97, 108, 17, 67, 2, 101, 0, 102, 1, 97, 114, 2, 101,
+			0, 111, 114, 8, 2, 117, 109, 3, 83, 6, 39, 34, 0, 4, 111, 114, 101, 8, 2, 32, 3, 83, 6, 39, 108, 0, 111, 114, 101, 8,
+			2, 100, 101, 32, 0, 111, 114, 101, 114, 8, 2, 32, 0, 195, 166, 114, 100, 105, 103, 1, 21, 3, 83, 6, 115, 34, 72, 37, 0, 114,
+			105, 116, 101, 115, 1, 32, 115, 101, 3, 83, 34, 37, 47, 0, 114, 101, 117, 100, 3, 83, 34, 108, 57, 47, 0, 114, 97, 110, 107, 105,
+			101, 3, 83, 34, 117, 50, 49, 37, 0, 114, 97, 110, 195, 167, 111, 105, 115, 3, 83, 34, 121, 68, 89, 6, 58, 35, 0, 101, 8, 2,
+			32, 3, 83, 36, 0, 101, 116, 116, 117, 99, 99, 105, 110, 101, 3, 83, 36, 47, 40, 87, 91, 6, 37, 12, 50, 13, 0, 105, 110, 108,
+			97, 121, 3, 83, 36, 50, 55, 37, 0, 105, 101, 108, 100, 3, 83, 37, 12, 59, 72, 0, 105, 114, 101, 111, 103, 3, 83, 37, 12, 108,
+			0, 105, 114, 101, 110, 122, 101, 3, 83, 37, 51, 6, 117, 50, 89, 13, 0, 105, 114, 101, 3, 83, 37, 108, 0, 111, 98, 105, 1, 21,
+			3, 83, 39, 71, 6, 37, 0, 111, 117, 113, 117, 101, 116, 3, 83, 40, 49, 6, 36, 0, 114, 97, 110, 99, 101, 115, 99, 97, 3, 83,
+			51, 121, 50, 91, 6, 115, 89, 49, 117, 0, 108, 117, 115, 104, 3, 83, 55, 108, 91, 0, 111, 114, 1, 21, 2, 17, 67, 21, 3, 83,
+			108, 12, 0, 195, 166, 114, 100, 105, 103, 1, 21, 21, 3, 83, 115, 34, 72, 37, 0, 97, 114, 97, 111, 3, 83, 121, 34, 121, 39, 0,
+			111, 117, 114, 8, 2, 32, 3, 83, 125, 12, 0, 111, 110, 116, 97, 105, 110, 101, 3, 83, 125, 68, 47, 6, 115, 12, 50, 0, 98, 105,
+			8, 3, 115, 83, 71, 37, 6, 121, 57, 0, 7, 6, 103, 0, 4, 1, 105, 100, 184, 195, 2, 116, 32, 3, 0, 4, 1, 105, 107, 2,
+			104, 111, 115, 116, 3, 0, 4, 1, 105, 116, 103, 2, 101, 114, 101, 3, 0, 4, 1, 108, 2, 17, 67, 3, 0, 4, 1, 108, 2, 115,
+			3, 0, 4, 1, 108, 2, 116, 101, 32, 3, 0, 4, 1, 108, 97, 118, 3, 0, 4, 1, 108, 97, 118, 2, 116, 3, 0, 4, 1, 111,
+			2, 101, 114, 110, 17, 65, 3, 0, 4, 1, 111, 103, 2, 105, 107, 117, 109, 3, 0, 4, 1, 114, 117, 103, 2, 108, 101, 3, 0, 4,
+			1, 114, 184, 195, 2, 115, 3, 0, 4, 1, 117, 2, 108, 3, 0, 4, 1, 117, 98, 2, 21, 3, 0, 4, 1, 117, 100, 32, 110, 101,
+			3, 0, 4, 1, 117, 100, 101, 100, 101, 118, 115, 3, 0, 4, 1, 117, 100, 101, 115, 121, 108, 3, 0, 4, 1, 117, 100, 103, 97, 108,
+			102, 3, 0, 4, 1, 117, 100, 107, 115, 97, 109, 97, 100, 3, 0, 4, 1, 117, 100, 108, 106, 101, 115, 3, 0, 4, 1, 117, 100, 114,
+			101, 109, 108, 111, 3, 0, 4, 1, 117, 100, 114, 101, 109, 109, 97, 107, 3, 0, 4, 1, 117, 100, 115, 107, 111, 118, 3, 0, 4, 1,
+			117, 100, 116, 108, 101, 116, 3, 0, 4, 1, 117, 114, 3, 0, 4, 1, 117, 115, 3, 0, 4, 1, 117, 116, 114, 101, 104, 3, 0, 4,
+			1, 121, 2, 101, 3, 0, 4, 1, 121, 115, 3, 0, 4, 8, 111, 116, 32, 105, 3, 0, 4, 8, 111, 116, 32, 105, 118, 3, 0, 4,
+			8, 111, 116, 32, 110, 97, 104, 3, 0, 8, 111, 116, 32, 110, 117, 104, 3, 0, 4, 1, 97, 2, 97, 118, 101, 3, 6, 81, 0, 8,
+			97, 2, 97, 114, 0, 101, 110, 116, 1, 114, 101, 115, 3, 6, 89, 57, 117, 50, 47, 0, 4, 1, 111, 103, 3, 8, 0, 1, 111, 108,
+			0, 1, 114, 117, 114, 105, 107, 3, 8, 58, 0, 4, 1, 111, 108, 2, 111, 3, 8, 81, 0, 1, 111, 108, 98, 2, 115, 0, 105, 1,
+			10, 2, 115, 107, 28, 33, 3, 8, 81, 111, 0, 101, 115, 1, 114, 97, 112, 115, 97, 3, 8, 89, 0, 4, 101, 110, 1, 114, 2, 32,
+			3, 8, 112, 50, 0, 101, 110, 1, 114, 2, 115, 32, 0, 4, 1, 97, 114, 2, 101, 3, 12, 0, 1, 97, 115, 2, 115, 0, 101, 8,
+			117, 3, 12, 14, 0, 1, 97, 100, 100, 2, 115, 3, 12, 19, 0, 101, 1, 184, 195, 109, 2, 108, 101, 110, 3, 12, 57, 36, 0, 4,
+			1, 97, 98, 2, 101, 3, 14, 0, 1, 97, 107, 2, 101, 0, 1, 97, 98, 2, 105, 3, 15, 0, 4, 101, 111, 114, 103, 101, 3, 21,
+			0, 101, 111, 114, 103, 105, 101, 0, 114, 97, 99, 101, 0, 114, 97, 104, 97, 109, 2, 32, 0, 114, 97, 104, 97, 109, 115, 2, 32, 0,
+			111, 110, 122, 97, 108, 101, 115, 3, 21, 101, 115, 0, 4, 97, 99, 104, 101, 116, 3, 21, 102, 114, 0, 117, 105, 108, 108, 97, 117, 109,
+			105, 110, 0, 4, 1, 97, 98, 2, 116, 97, 108, 3, 40, 0, 1, 97, 104, 2, 108, 0, 1, 114, 2, 101, 114, 32, 0, 1, 114, 184,
+			195, 0, 1, 165, 195, 0, 1, 165, 195, 118, 2, 110, 0, 116, 101, 1, 114, 117, 112, 115, 3, 47, 14, 0, 4, 1, 105, 107, 3, 49,
+			0, 1, 111, 98, 2, 115, 116, 0, 110, 1, 97, 112, 2, 105, 3, 50, 6, 0, 4, 110, 1, 105, 2, 111, 3, 50, 57, 0, 110, 1,
+			105, 115, 2, 17, 65, 0, 110, 1, 166, 195, 114, 112, 109, 105, 2, 101, 0, 4, 1, 17, 65, 2, 110, 3, 57, 0, 1, 97, 100, 2,
+			115, 32, 0, 1, 97, 104, 101, 98, 0, 1, 97, 108, 2, 110, 0, 1, 97, 115, 0, 1, 101, 2, 101, 110, 115, 107, 97, 98, 0, 1,
+			101, 2, 101, 110, 116, 108, 0, 1, 101, 18, 73, 0, 1, 101, 108, 98, 2, 97, 110, 115, 105, 103, 116, 0, 1, 101, 108, 98, 2, 102,
+			105, 0, 1, 101, 108, 98, 2, 115, 111, 116, 0, 1, 101, 110, 2, 32, 0, 1, 101, 110, 115, 0, 1, 101, 118, 2, 101, 110, 0, 1,
+			105, 109, 115, 0, 1, 108, 2, 32, 0, 1, 108, 2, 101, 110, 32, 0, 1, 108, 2, 101, 116, 32, 0, 1, 108, 97, 2, 101, 0, 1,
+			108, 97, 118, 2, 195, 165, 114, 0, 1, 108, 101, 2, 101, 32, 0, 1, 108, 101, 2, 101, 110, 101, 32, 0, 1, 108, 101, 2, 101, 110,
+			101, 115, 32, 0, 1, 108, 166, 195, 2, 101, 0, 1, 108, 184, 195, 2, 101, 0, 1, 166, 195, 2, 101, 0, 1, 166, 195, 2, 101, 114,
+			110, 17, 65, 0, 1, 166, 195, 108, 2, 100, 111, 109, 0, 1, 166, 195, 108, 2, 102, 111, 108, 107, 0, 1, 166, 195, 108, 2, 109, 0,
+			1, 166, 195, 108, 2, 115, 195, 184, 115, 0, 1, 166, 195, 114, 112, 0, 1, 166, 195, 118, 107, 0, 1, 184, 195, 2, 17, 67, 0, 1,
+			184, 195, 2, 110, 0, 2, 108, 101, 0, 8, 101, 2, 32, 0, 1, 184, 195, 2, 17, 65, 3, 57, 11, 0, 101, 1, 184, 195, 2, 12,
+			12, 12, 3, 57, 14, 0, 110, 1, 105, 115, 108, 101, 118, 3, 57, 50, 0, 114, 1, 97, 108, 2, 101, 3, 57, 51, 0, 4, 101, 1,
+			101, 2, 114, 3, 57, 108, 0, 101, 114, 1, 184, 195, 2, 12, 12, 0, 4, 1, 97, 98, 2, 105, 110, 3, 58, 0, 1, 97, 100, 2,
+			17, 67, 0, 1, 97, 114, 98, 0, 1, 97, 114, 100, 0, 1, 97, 114, 100, 2, 101, 110, 0, 1, 97, 114, 118, 0, 1, 97, 118, 2,
+			110, 0, 1, 111, 17, 67, 0, 1, 111, 108, 114, 111, 0, 1, 114, 2, 32, 0, 1, 114, 2, 101, 116, 32, 0, 1, 114, 101, 106, 2,
+			17, 65, 0, 1, 114, 101, 106, 2, 17, 67, 0, 1, 114, 166, 195, 106, 2, 101, 0, 1, 114, 166, 195, 118, 100, 0, 1, 165, 195, 2,
+			101, 0, 8, 97, 114, 112, 0, 101, 1, 114, 184, 195, 2, 12, 3, 58, 14, 0, 101, 110, 1, 114, 97, 109, 3, 58, 14, 50, 0, 101,
+			114, 110, 101, 1, 114, 2, 32, 3, 58, 108, 50, 14, 0, 101, 114, 110, 101, 115, 1, 114, 2, 32, 3, 58, 108, 50, 14, 89, 0, 101,
+			114, 1, 114, 184, 195, 3, 58, 109, 0, 4, 110, 1, 97, 112, 2, 101, 114, 3, 68, 57, 0, 110, 1, 97, 112, 2, 111, 110, 0, 110,
+			1, 97, 112, 109, 97, 107, 0, 116, 1, 114, 117, 112, 115, 3, 72, 0, 4, 2, 105, 103, 111, 108, 111, 3, 75, 0, 101, 8, 114, 97,
+			109, 0, 101, 114, 97, 108, 100, 1, 122, 116, 105, 102, 3, 75, 6, 116, 34, 112, 59, 0, 105, 8, 2, 110, 3, 75, 36, 0, 4, 103,
+			105, 101, 1, 101, 114, 3, 75, 37, 0, 105, 8, 2, 110, 18, 69, 0, 105, 8, 2, 110, 97, 0, 101, 111, 114, 103, 105, 97, 3, 75,
+			108, 12, 75, 57, 117, 0, 105, 117, 115, 101, 112, 112, 101, 3, 75, 111, 89, 6, 116, 48, 13, 0, 101, 114, 111, 110, 105, 109, 111, 3,
+			75, 114, 34, 6, 109, 50, 111, 65, 125, 12, 40, 0, 105, 110, 103, 101, 114, 8, 3, 75, 114, 50, 75, 109, 0, 101, 114, 114, 121, 3,
+			75, 115, 34, 37, 0, 101, 110, 116, 108, 101, 109, 101, 110, 3, 75, 115, 50, 47, 14, 55, 65, 116, 50, 0, 101, 110, 116, 108, 101, 109,
+			97, 110, 3, 75, 115, 50, 47, 14, 55, 65, 117, 50, 0, 101, 114, 97, 108, 100, 3, 75, 116, 34, 112, 59, 0, 101, 114, 97, 108, 100,
+			105, 110, 101, 3, 75, 116, 34, 112, 59, 72, 37, 12, 50, 0, 101, 111, 102, 102, 3, 75, 116, 83, 0, 105, 97, 110, 116, 115, 8, 3,
+			75, 136, 118, 50, 47, 89, 0, 4, 3, 81, 0, 1, 17, 65, 2, 116, 32, 0, 1, 17, 65, 108, 2, 97, 0, 1, 97, 2, 110, 111,
+			115, 0, 1, 97, 100, 110, 97, 2, 116, 0, 1, 97, 108, 2, 116, 0, 1, 97, 114, 98, 2, 116, 0, 1, 97, 114, 100, 2, 111, 110,
+			0, 1, 97, 114, 100, 2, 116, 0, 1, 97, 114, 112, 2, 116, 0, 1, 97, 115, 2, 111, 0, 1, 101, 18, 73, 2, 116, 0, 1, 101,
+			114, 2, 105, 17, 65, 0, 1, 101, 114, 2, 105, 109, 101, 110, 116, 0, 1, 101, 116, 2, 111, 114, 105, 0, 1, 105, 2, 105, 0, 1,
+			108, 105, 112, 2, 114, 105, 109, 0, 1, 111, 2, 114, 97, 102, 0, 1, 111, 2, 114, 97, 109, 0, 1, 111, 98, 2, 111, 116, 97, 0,
+			1, 111, 103, 2, 105, 107, 0, 1, 111, 108, 2, 97, 0, 1, 111, 108, 2, 102, 105, 108, 0, 1, 111, 114, 2, 97, 110, 0, 1, 111,
+			114, 2, 101, 115, 0, 1, 111, 114, 112, 2, 114, 0, 1, 111, 114, 114, 117, 115, 2, 97, 116, 0, 1, 111, 116, 2, 97, 0, 1, 111,
+			116, 2, 111, 0, 1, 111, 116, 2, 116, 0, 1, 111, 118, 2, 116, 0, 1, 111, 118, 2, 116, 101, 0, 1, 117, 2, 101, 110, 18, 66,
+			0, 1, 117, 2, 101, 110, 110, 0, 1, 117, 104, 2, 110, 105, 110, 103, 0, 1, 117, 109, 2, 110, 0, 1, 117, 114, 102, 2, 116, 0,
+			1, 117, 114, 117, 2, 117, 97, 121, 0, 1, 121, 98, 2, 110, 0, 1, 121, 107, 115, 2, 110, 105, 0, 1, 121, 116, 2, 110, 105, 110,
+			103, 0, 1, 166, 195, 2, 110, 12, 0, 1, 166, 195, 114, 112, 2, 110, 97, 0, 1, 166, 195, 114, 112, 2, 116, 105, 103, 0, 1, 184,
+			195, 114, 2, 116, 101, 114, 0, 1, 184, 195, 115, 2, 97, 110, 103, 0, 2, 101, 110, 115, 116, 97, 110, 100, 12, 0, 2, 105, 118, 12,
+			0, 2, 108, 97, 115, 0, 2, 108, 101, 109, 0, 2, 108, 121, 99, 101, 114, 105, 110, 0, 2, 114, 97, 110, 0, 2, 114, 105, 98, 0,
+			2, 114, 111, 115, 115, 0, 2, 114, 117, 18, 71, 0, 2, 114, 117, 110, 100, 108, 97, 103, 0, 2, 114, 195, 184, 110, 0, 2, 116, 101,
+			32, 0, 2, 117, 105, 116, 97, 114, 0, 2, 121, 114, 111, 0, 2, 195, 165, 114, 100, 12, 12, 0, 8, 2, 108, 101, 100, 0, 8, 111,
+			98, 2, 97, 114, 116, 0, 8, 111, 98, 2, 101, 121, 0, 8, 111, 108, 2, 32, 0, 8, 111, 108, 2, 103, 0, 103, 1, 97, 2, 114,
+			101, 115, 0, 103, 1, 105, 0, 103, 1, 111, 0, 103, 1, 111, 108, 2, 101, 0, 103, 2, 101, 0, 104, 1, 102, 97, 2, 97, 0, 104,
+			2, 97, 110, 97, 0, 104, 2, 101, 116, 116, 111, 0, 4, 1, 97, 2, 117, 114, 107, 3, 81, 6, 0, 1, 111, 108, 2, 105, 0, 8,
+			101, 114, 2, 105, 115, 116, 0, 101, 114, 1, 21, 2, 28, 33, 3, 81, 6, 36, 34, 0, 4, 101, 110, 1, 111, 107, 121, 115, 112, 3,
+			81, 6, 36, 50, 0, 101, 110, 1, 111, 114, 101, 0, 101, 110, 1, 111, 114, 116, 105, 110, 0, 101, 110, 1, 111, 114, 116, 115, 184, 195,
+			0, 97, 1, 111, 110, 111, 109, 2, 109, 3, 81, 6, 117, 0, 4, 105, 1, 17, 67, 21, 2, 28, 33, 3, 81, 7, 111, 0, 105, 1,
+			21, 2, 28, 33, 0, 108, 101, 1, 111, 111, 103, 3, 81, 20, 14, 55, 0, 114, 97, 110, 100, 101, 8, 2, 32, 3, 81, 34, 35, 50,
+			72, 14, 0, 114, 117, 110, 103, 101, 8, 2, 32, 3, 81, 34, 108, 50, 75, 0, 114, 97, 100, 121, 3, 81, 34, 115, 57, 72, 37, 0,
+			114, 97, 102, 102, 105, 116, 105, 3, 81, 34, 121, 83, 6, 111, 47, 111, 0, 114, 97, 110, 100, 112, 114, 105, 120, 3, 81, 34, 122, 68,
+			48, 34, 6, 111, 0, 114, 111, 115, 1, 32, 110, 101, 3, 81, 34, 124, 0, 114, 195, 184, 100, 1, 101, 108, 98, 166, 195, 3, 81, 34,
+			132, 86, 0, 117, 105, 2, 110, 110, 101, 115, 3, 81, 36, 0, 101, 111, 114, 103, 105, 101, 110, 3, 81, 36, 6, 125, 12, 81, 37, 14,
+			50, 0, 101, 97, 114, 3, 81, 37, 34, 0, 117, 105, 114, 108, 97, 110, 100, 3, 81, 37, 34, 55, 6, 117, 50, 72, 0, 117, 105, 110,
+			101, 97, 3, 81, 37, 50, 6, 36, 117, 0, 117, 105, 108, 108, 111, 116, 105, 110, 101, 3, 81, 37, 57, 40, 47, 6, 37, 12, 50, 14,
+			0, 111, 100, 97, 102, 116, 101, 110, 3, 81, 39, 6, 121, 83, 47, 50, 0, 117, 100, 115, 107, 101, 108, 111, 118, 8, 2, 32, 3, 81,
+			40, 89, 81, 14, 55, 108, 40, 0, 4, 114, 117, 102, 102, 117, 100, 100, 3, 81, 51, 114, 83, 114, 87, 0, 114, 117, 102, 102, 121, 100,
+			100, 0, 108, 111, 117, 99, 101, 115, 116, 101, 114, 3, 81, 55, 109, 89, 47, 109, 0, 106, 111, 114, 100, 101, 3, 81, 57, 39, 108, 0,
+			117, 105, 114, 101, 3, 81, 58, 6, 136, 109, 0, 109, 97, 116, 97, 1, 105, 116, 115, 3, 81, 65, 6, 117, 12, 47, 117, 0, 111, 116,
+			116, 102, 114, 105, 101, 100, 3, 81, 108, 47, 83, 34, 6, 37, 47, 0, 195, 184, 103, 101, 109, 195, 184, 103, 3, 81, 108, 57, 14, 65,
+			109, 57, 0, 117, 116, 104, 114, 105, 101, 3, 81, 108, 87, 51, 37, 0, 117, 108, 102, 115, 116, 114, 101, 97, 109, 3, 81, 109, 55, 83,
+			89, 47, 34, 37, 12, 65, 0, 4, 105, 1, 101, 114, 2, 109, 101, 110, 28, 33, 12, 3, 81, 111, 0, 105, 1, 101, 114, 2, 111, 110,
+			12, 0, 105, 1, 101, 114, 2, 115, 28, 33, 12, 0, 105, 110, 115, 98, 101, 114, 103, 3, 81, 114, 50, 89, 71, 132, 12, 81, 0, 195,
+			166, 1, 110, 3, 81, 115, 0, 97, 116, 101, 115, 8, 2, 32, 3, 81, 115, 57, 47, 89, 0, 97, 98, 108, 101, 8, 3, 81, 115, 57,
+			71, 14, 55, 0, 97, 114, 121, 8, 3, 81, 118, 34, 111, 0, 4, 117, 121, 8, 2, 32, 3, 81, 121, 12, 57, 0, 117, 121, 8, 2,
+			115, 32, 0, 117, 97, 114, 100, 3, 81, 121, 12, 72, 0, 111, 117, 100, 97, 3, 81, 121, 58, 72, 117, 0, 111, 100, 110, 97, 116, 3,
+			81, 124, 50, 6, 118, 47, 0, 111, 100, 109, 111, 114, 103, 101, 110, 3, 81, 124, 65, 6, 108, 12, 50, 0, 111, 98, 101, 108, 105, 110,
+			3, 81, 124, 71, 14, 55, 6, 116, 68, 0, 111, 100, 100, 97, 103, 3, 81, 124, 72, 6, 118, 0, 97, 117, 108, 108, 101, 3, 81, 125,
+			12, 55, 0, 111, 103, 111, 3, 81, 125, 58, 81, 6, 125, 58, 0, 117, 115, 116, 97, 118, 3, 81, 125, 89, 47, 19, 35, 58, 0, 117,
+			101, 114, 110, 115, 101, 121, 3, 81, 132, 12, 50, 89, 37, 0, 101, 114, 116, 105, 101, 3, 81, 132, 47, 37, 0, 4, 101, 108, 101, 3,
+			89, 57, 114, 55, 6, 114, 0, 101, 108, 195, 169, 0, 101, 111, 105, 115, 1, 114, 117, 111, 98, 3, 90, 58, 6, 122, 0, 101, 111, 105,
+			115, 105, 1, 114, 117, 111, 98, 3, 90, 58, 122, 89, 6, 111, 0, 4, 1, 101, 114, 2, 105, 109, 101, 3, 91, 0, 1, 117, 2, 101,
+			110, 101, 0, 2, 105, 114, 111, 0, 105, 101, 114, 1, 108, 97, 3, 91, 6, 37, 34, 0, 4, 105, 1, 101, 114, 2, 28, 33, 12, 3,
+			91, 6, 111, 0, 105, 8, 111, 108, 2, 32, 0, 105, 8, 111, 108, 2, 101, 0, 101, 1, 110, 105, 2, 110, 105, 195, 184, 114, 3, 91,
+			36, 0, 4, 101, 110, 101, 114, 2, 32, 100, 101, 109, 3, 91, 36, 50, 6, 36, 34, 0, 101, 110, 101, 114, 2, 32, 100, 101, 114, 101,
+			115, 0, 101, 110, 101, 114, 2, 32, 104, 97, 109, 0, 101, 110, 101, 114, 2, 32, 104, 101, 110, 100, 101, 0, 4, 101, 110, 101, 118, 101,
+			3, 91, 36, 50, 6, 115, 12, 84, 0, 101, 110, 195, 168, 118, 101, 0, 101, 114, 97, 114, 100, 8, 3, 91, 36, 51, 6, 121, 12, 0,
+			105, 98, 114, 97, 108, 116, 97, 114, 3, 91, 37, 71, 51, 121, 55, 47, 6, 121, 0, 101, 114, 105, 115, 107, 1, 108, 97, 3, 91, 57,
+			6, 37, 12, 34, 89, 81, 0, 101, 114, 105, 101, 114, 1, 108, 97, 3, 91, 57, 6, 37, 108, 0, 101, 114, 105, 101, 116, 1, 108, 97,
+			3, 91, 57, 14, 34, 6, 37, 14, 72, 0, 105, 1, 111, 108, 116, 97, 110, 3, 91, 111, 0, 101, 110, 100, 97, 114, 109, 3, 91, 121,
+			50, 72, 6, 121, 12, 65, 0, 4, 101, 114, 1, 101, 110, 2, 12, 12, 3, 109, 0, 114, 101, 1, 101, 110, 0, 7, 6, 104, 0, 4,
+			1, 17, 65, 2, 25, 3, 0, 4, 1, 119, 2, 105, 115, 107, 121, 3, 0, 4, 1, 119, 2, 105, 116, 3, 0, 4, 2, 106, 3, 0,
+			8, 114, 2, 17, 65, 3, 0, 4, 101, 109, 1, 111, 98, 2, 101, 3, 6, 115, 12, 65, 0, 101, 109, 101, 1, 111, 98, 2, 32, 0,
+			101, 105, 100, 1, 116, 114, 97, 112, 97, 3, 8, 107, 121, 57, 72, 0, 111, 1, 103, 2, 115, 116, 3, 39, 58, 0, 117, 101, 1, 108,
+			105, 115, 2, 116, 3, 40, 6, 115, 0, 118, 3, 84, 0, 4, 3, 107, 0, 1, 116, 2, 101, 110, 0, 111, 119, 97, 114, 100, 3, 107,
+			35, 58, 108, 72, 0, 101, 97, 116, 3, 107, 37, 12, 47, 0, 105, 101, 114, 111, 103, 108, 121, 2, 102, 3, 107, 37, 34, 39, 83, 55,
+			6, 129, 0, 105, 112, 111, 107, 114, 97, 116, 101, 115, 3, 107, 37, 48, 6, 39, 49, 34, 35, 47, 115, 89, 0, 111, 109, 101, 114, 3,
+			107, 39, 65, 6, 36, 34, 0, 4, 117, 103, 104, 3, 107, 57, 40, 12, 0, 117, 119, 0, 117, 103, 101, 115, 8, 2, 32, 3, 107, 57,
+			40, 12, 89, 0, 111, 117, 115, 116, 111, 110, 3, 107, 57, 40, 12, 89, 72, 109, 50, 0, 97, 119, 107, 3, 107, 108, 12, 49, 0, 111,
+			116, 108, 105, 110, 101, 3, 107, 108, 47, 55, 35, 12, 57, 50, 0, 117, 99, 107, 108, 101, 98, 101, 114, 114, 121, 3, 107, 108, 49, 13,
+			55, 71, 115, 34, 37, 0, 111, 110, 101, 121, 3, 107, 108, 50, 37, 0, 117, 110, 116, 8, 2, 32, 3, 107, 108, 50, 47, 0, 117, 109,
+			118, 101, 101, 3, 107, 108, 65, 84, 37, 12, 0, 117, 109, 118, 101, 101, 114, 3, 107, 108, 65, 84, 37, 12, 108, 0, 117, 100, 115, 111,
+			110, 3, 107, 108, 72, 89, 108, 50, 0, 111, 108, 108, 121, 3, 107, 109, 55, 37, 0, 105, 108, 108, 97, 114, 121, 3, 107, 113, 55, 13,
+			16, 36, 0, 101, 114, 101, 102, 111, 114, 100, 3, 107, 115, 12, 34, 83, 125, 12, 72, 0, 97, 105, 103, 8, 3, 107, 115, 57, 81, 0,
+			101, 97, 118, 121, 3, 107, 115, 84, 37, 0, 101, 97, 116, 104, 101, 114, 3, 107, 116, 86, 109, 0, 97, 97, 103, 8, 2, 32, 3, 107,
+			117, 57, 0, 97, 119, 97, 105, 105, 3, 107, 117, 58, 6, 35, 12, 57, 37, 0, 105, 103, 104, 104, 97, 116, 3, 107, 121, 12, 57, 107,
+			117, 72, 0, 111, 117, 115, 101, 99, 111, 97, 116, 3, 107, 121, 40, 89, 49, 39, 58, 72, 0, 97, 119, 116, 104, 111, 114, 110, 101, 3,
+			107, 125, 12, 87, 39, 50, 0, 111, 109, 101, 3, 107, 125, 58, 65, 0, 101, 114, 98, 8, 2, 32, 3, 107, 132, 12, 71, 0, 101, 97,
+			114, 115, 116, 8, 3, 107, 132, 89, 47, 0, 105, 116, 101, 99, 104, 3, 107, 136, 47, 36, 49, 0, 101, 105, 109, 3, 107, 136, 65, 0,
+			121, 100, 101, 8, 3, 107, 136, 72, 0, 101, 114, 99, 117, 108, 101, 8, 3, 115, 34, 49, 6, 129, 55, 0, 97, 114, 105, 110, 101, 1,
+			116, 97, 107, 3, 117, 34, 6, 37, 50, 14, 0, 7, 6, 105, 0, 4, 1, 110, 101, 103, 110, 105, 2, 195, 184, 114, 3, 0, 4, 1,
+			116, 2, 195, 184, 115, 3, 0, 4, 1, 117, 106, 2, 99, 101, 3, 0, 1, 118, 2, 110, 100, 114, 105, 107, 12, 3, 0, 107, 1, 21,
+			2, 101, 114, 28, 33, 12, 12, 3, 2, 111, 49, 0, 4, 103, 1, 116, 2, 32, 12, 12, 3, 4, 111, 0, 103, 1, 116, 2, 101, 32,
+			12, 0, 108, 1, 116, 115, 97, 112, 10, 2, 28, 33, 12, 12, 12, 12, 3, 6, 36, 55, 0, 4, 1, 99, 114, 97, 103, 2, 97, 3,
+			6, 37, 0, 1, 100, 111, 115, 111, 114, 112, 0, 1, 100, 114, 166, 195, 118, 0, 1, 100, 117, 111, 104, 2, 110, 105, 0, 1, 102, 108,
+			121, 115, 2, 100, 101, 0, 1, 104, 97, 119, 115, 2, 108, 105, 0, 1, 107, 2, 101, 116, 12, 0, 1, 108, 111, 98, 2, 118, 105, 97,
+			0, 1, 108, 111, 115, 115, 117, 109, 2, 110, 105, 0, 1, 108, 115, 117, 109, 2, 110, 32, 0, 1, 109, 97, 2, 103, 111, 0, 1, 110,
+			97, 112, 109, 97, 107, 2, 108, 101, 0, 1, 114, 110, 101, 104, 2, 118, 101, 110, 100, 101, 0, 1, 115, 108, 105, 116, 2, 100, 101, 0,
+			1, 115, 115, 105, 115, 115, 105, 109, 2, 112, 112, 105, 0, 8, 98, 108, 97, 2, 110, 111, 0, 8, 100, 101, 98, 98, 97, 0, 8, 100,
+			105, 102, 114, 101, 112, 0, 8, 100, 111, 108, 101, 109, 0, 8, 100, 111, 114, 97, 112, 0, 8, 100, 111, 115, 112, 97, 114, 0, 8, 100,
+			166, 195, 112, 111, 116, 114, 111, 0, 8, 107, 114, 97, 109, 2, 115, 101, 0, 8, 108, 97, 107, 2, 98, 101, 114, 0, 8, 108, 105, 109,
+			2, 116, 115, 0, 8, 109, 97, 114, 121, 112, 2, 100, 0, 8, 111, 114, 101, 116, 115, 97, 2, 100, 101, 0, 8, 114, 111, 109, 166, 195,
+			104, 2, 100, 0, 8, 114, 112, 101, 114, 2, 115, 101, 0, 8, 114, 112, 101, 114, 116, 110, 101, 2, 115, 101, 0, 8, 116, 114, 97, 109,
+			2, 110, 105, 0, 8, 116, 115, 101, 116, 2, 107, 101, 108, 0, 4, 1, 115, 97, 107, 2, 110, 111, 3, 6, 37, 12, 0, 101, 8, 118,
+			108, 97, 115, 0, 103, 101, 8, 108, 100, 101, 118, 3, 6, 37, 14, 0, 103, 101, 118, 101, 108, 1, 108, 108, 97, 3, 6, 37, 14, 84,
+			115, 55, 0, 108, 1, 10, 2, 28, 33, 12, 12, 12, 12, 3, 6, 37, 55, 0, 108, 108, 101, 1, 116, 115, 97, 98, 3, 6, 37, 55,
+			57, 112, 0, 108, 100, 1, 104, 116, 97, 109, 3, 6, 37, 55, 72, 0, 115, 1, 117, 111, 108, 2, 101, 3, 6, 37, 89, 0, 111, 110,
+			1, 114, 111, 3, 6, 37, 108, 50, 0, 4, 1, 98, 111, 116, 2, 97, 115, 3, 6, 111, 0, 1, 99, 115, 105, 100, 2, 112, 0, 1,
+			103, 105, 115, 107, 101, 2, 98, 101, 108, 0, 1, 103, 110, 117, 102, 2, 98, 101, 108, 0, 1, 103, 114, 105, 107, 2, 115, 0, 1, 103,
+			117, 116, 114, 111, 112, 2, 115, 0, 1, 104, 97, 116, 2, 116, 105, 0, 1, 107, 10, 2, 28, 33, 0, 1, 108, 97, 119, 2, 115, 0,
+			1, 108, 101, 2, 97, 115, 0, 1, 108, 101, 98, 111, 2, 115, 107, 0, 1, 108, 105, 102, 2, 115, 116, 0, 1, 108, 108, 105, 99, 105,
+			112, 109, 97, 2, 110, 0, 1, 109, 10, 2, 32, 28, 33, 0, 1, 109, 10, 2, 101, 110, 28, 33, 0, 1, 109, 10, 2, 101, 114, 28,
+			33, 0, 1, 109, 97, 18, 75, 2, 108, 108, 97, 0, 1, 109, 97, 107, 2, 108, 108, 101, 0, 1, 109, 105, 2, 100, 108, 101, 114, 116,
+			105, 100, 0, 1, 110, 101, 112, 2, 98, 101, 108, 0, 1, 110, 111, 112, 115, 105, 100, 2, 98, 101, 108, 0, 1, 112, 115, 97, 2, 99,
+			0, 1, 114, 10, 2, 101, 116, 28, 33, 0, 1, 114, 97, 109, 2, 97, 0, 1, 114, 97, 112, 2, 115, 0, 1, 114, 97, 116, 2, 102,
+			0, 1, 114, 100, 97, 109, 2, 100, 0, 1, 114, 100, 101, 122, 110, 101, 98, 2, 110, 0, 1, 114, 101, 104, 115, 2, 102, 0, 1, 114,
+			101, 118, 111, 116, 110, 105, 114, 98, 2, 108, 116, 101, 0, 1, 114, 105, 112, 115, 97, 2, 110, 0, 1, 114, 114, 111, 104, 2, 98, 101,
+			108, 0, 1, 115, 10, 2, 28, 33, 0, 1, 115, 97, 103, 97, 109, 0, 1, 115, 105, 118, 2, 98, 101, 108, 0, 1, 115, 107, 101, 108,
+			102, 2, 98, 101, 108, 0, 1, 115, 110, 101, 115, 2, 98, 101, 108, 0, 1, 115, 111, 114, 2, 116, 97, 0, 1, 115, 114, 101, 118, 101,
+			114, 2, 98, 101, 108, 0, 1, 115, 114, 101, 118, 101, 114, 114, 105, 2, 98, 101, 108, 0, 1, 115, 117, 97, 108, 112, 2, 98, 101, 108,
+			0, 1, 116, 10, 2, 28, 33, 12, 0, 1, 116, 97, 112, 109, 111, 107, 2, 98, 101, 108, 0, 1, 116, 105, 108, 111, 112, 2, 101, 116,
+			0, 1, 116, 107, 101, 102, 114, 101, 112, 2, 98, 101, 108, 0, 1, 116, 114, 101, 118, 110, 111, 107, 2, 98, 101, 108, 0, 1, 116, 114,
+			111, 115, 2, 101, 0, 1, 116, 115, 101, 103, 103, 117, 115, 2, 98, 101, 108, 0, 1, 116, 120, 105, 115, 2, 110, 115, 107, 0, 1, 118,
+			101, 114, 114, 105, 112, 115, 2, 112, 0, 8, 98, 105, 108, 97, 0, 8, 98, 111, 102, 0, 8, 99, 110, 97, 114, 102, 2, 115, 99, 111,
+			0, 8, 99, 110, 105, 114, 112, 2, 112, 0, 8, 99, 110, 111, 107, 2, 115, 0, 8, 99, 114, 101, 115, 107, 101, 2, 116, 115, 0, 8,
+			99, 166, 195, 114, 112, 2, 115, 0, 8, 100, 97, 114, 2, 115, 101, 0, 8, 100, 101, 102, 102, 117, 109, 2, 115, 101, 0, 8, 100, 110,
+			97, 98, 2, 116, 0, 8, 100, 110, 97, 107, 115, 114, 97, 109, 2, 115, 0, 8, 100, 111, 107, 111, 114, 107, 2, 108, 108, 0, 8, 102,
+			105, 99, 117, 114, 107, 2, 107, 115, 0, 8, 103, 97, 109, 2, 32, 0, 8, 103, 97, 109, 2, 101, 110, 32, 0, 8, 103, 97, 109, 2,
+			115, 116, 101, 114, 0, 8, 103, 101, 114, 2, 115, 116, 101, 114, 0, 8, 107, 115, 97, 109, 2, 110, 12, 0, 8, 108, 97, 103, 101, 109,
+			111, 114, 107, 97, 0, 8, 108, 97, 109, 111, 110, 97, 0, 8, 108, 100, 101, 109, 2, 100, 101, 110, 104, 101, 100, 0, 8, 108, 101, 102,
+			102, 97, 116, 115, 0, 8, 108, 101, 116, 97, 108, 105, 102, 0, 8, 108, 102, 102, 117, 115, 0, 8, 108, 102, 110, 111, 107, 2, 107, 116,
+			0, 8, 108, 105, 102, 111, 100, 166, 195, 112, 0, 8, 108, 105, 102, 111, 105, 108, 98, 105, 98, 0, 8, 108, 105, 102, 111, 109, 111, 104,
+			0, 8, 108, 105, 102, 111, 111, 122, 0, 8, 108, 105, 102, 111, 114, 101, 116, 101, 104, 0, 8, 108, 105, 102, 111, 114, 107, 101, 110, 0,
+			8, 108, 108, 101, 99, 110, 97, 107, 0, 8, 108, 111, 2, 118, 101, 110, 0, 8, 108, 111, 2, 118, 105, 97, 0, 8, 108, 111, 107, 110,
+			97, 108, 101, 109, 0, 8, 108, 111, 115, 2, 100, 0, 8, 108, 115, 117, 109, 2, 109, 0, 8, 108, 117, 107, 2, 115, 115, 0, 8, 109,
+			101, 114, 2, 115, 0, 8, 110, 105, 109, 2, 115, 116, 101, 114, 0, 8, 112, 97, 107, 2, 116, 101, 108, 0, 8, 112, 97, 107, 2, 116,
+			108, 0, 8, 112, 97, 112, 2, 114, 0, 8, 112, 97, 114, 101, 116, 0, 8, 112, 97, 116, 2, 114, 0, 8, 112, 101, 107, 115, 97, 109,
+			0, 8, 112, 111, 107, 2, 12, 0, 8, 112, 111, 107, 115, 101, 108, 101, 116, 0, 8, 112, 111, 107, 115, 111, 107, 110, 111, 114, 98, 0,
+			8, 112, 111, 107, 115, 111, 108, 121, 116, 107, 97, 100, 0, 8, 112, 111, 107, 115, 111, 114, 116, 115, 97, 103, 0, 8, 112, 111, 107, 115,
+			111, 116, 101, 116, 115, 0, 8, 112, 111, 107, 115, 111, 116, 107, 101, 114, 0, 8, 112, 111, 107, 115, 111, 116, 111, 0, 8, 112, 111, 114,
+			116, 110, 97, 108, 105, 102, 0, 8, 112, 111, 114, 116, 110, 97, 115, 105, 109, 0, 8, 112, 111, 114, 116, 110, 101, 0, 8, 112, 111, 116,
+			111, 115, 105, 0, 8, 112, 111, 116, 117, 0, 8, 112, 111, 116, 117, 0, 8, 112, 121, 116, 111, 101, 114, 101, 116, 115, 0, 8, 112, 121,
+			116, 111, 101, 114, 114, 101, 117, 103, 97, 100, 0, 8, 112, 121, 116, 111, 110, 97, 118, 108, 97, 103, 0, 8, 112, 121, 116, 111, 110, 111,
+			109, 0, 8, 112, 121, 116, 111, 116, 105, 108, 0, 8, 112, 121, 116, 111, 116, 117, 97, 0, 8, 114, 101, 118, 121, 116, 0, 8, 114, 111,
+			103, 101, 116, 97, 107, 0, 8, 114, 111, 103, 108, 97, 2, 116, 109, 101, 0, 8, 114, 116, 110, 101, 118, 2, 107, 0, 8, 115, 108, 101,
+			118, 2, 103, 110, 0, 8, 115, 115, 101, 109, 2, 97, 115, 0, 8, 116, 105, 103, 101, 108, 2, 109, 0, 8, 116, 110, 105, 2, 109, 0,
+			8, 116, 114, 97, 2, 107, 12, 0, 8, 116, 114, 97, 112, 2, 115, 107, 0, 8, 116, 115, 101, 102, 2, 118, 105, 116, 97, 115, 0, 8,
+			116, 115, 101, 116, 2, 107, 108, 0, 8, 116, 115, 117, 106, 2, 116, 115, 0, 8, 118, 97, 2, 115, 12, 0, 8, 118, 97, 114, 103, 2,
+			100, 0, 8, 118, 101, 108, 111, 109, 2, 116, 0, 8, 118, 105, 99, 2, 108, 0, 101, 1, 116, 114, 111, 115, 2, 32, 0, 115, 1, 109,
+			101, 114, 2, 32, 0, 101, 8, 114, 97, 109, 3, 6, 111, 14, 0, 4, 108, 108, 101, 1, 114, 100, 97, 107, 115, 101, 3, 6, 111, 55,
+			57, 14, 0, 108, 108, 101, 1, 114, 100, 97, 112, 115, 101, 0, 108, 108, 101, 1, 114, 100, 97, 118, 107, 0, 103, 111, 110, 101, 1, 116,
+			110, 97, 3, 6, 111, 81, 124, 50, 14, 0, 115, 1, 117, 111, 108, 2, 97, 3, 6, 111, 89, 0, 115, 109, 101, 1, 10, 2, 114, 28,
+			33, 3, 6, 111, 89, 65, 109, 0, 4, 1, 103, 101, 114, 116, 115, 109, 105, 104, 2, 109, 115, 3, 6, 114, 0, 1, 107, 121, 114, 2,
+			110, 100, 0, 1, 114, 121, 98, 97, 108, 2, 110, 116, 0, 1, 115, 116, 101, 108, 2, 110, 100, 105, 103, 0, 8, 108, 121, 99, 2, 110,
+			100, 0, 8, 114, 116, 115, 105, 100, 2, 107, 116, 0, 8, 115, 98, 97, 2, 110, 116, 0, 8, 116, 115, 101, 118, 2, 110, 100, 105, 0,
+			8, 116, 115, 110, 105, 2, 110, 107, 116, 0, 110, 100, 101, 1, 10, 2, 28, 33, 12, 12, 3, 6, 114, 50, 14, 0, 110, 103, 1, 109,
+			111, 100, 2, 111, 3, 6, 114, 50, 81, 0, 110, 100, 101, 1, 10, 2, 114, 28, 33, 12, 12, 3, 6, 114, 50, 109, 0, 1, 114, 107,
+			115, 117, 110, 2, 112, 116, 3, 6, 116, 0, 114, 116, 117, 97, 108, 1, 118, 2, 32, 114, 101, 97, 108, 105, 116, 121, 3, 6, 132, 76,
+			123, 20, 14, 59, 0, 4, 1, 116, 110, 101, 108, 97, 118, 2, 110, 111, 3, 7, 37, 0, 8, 108, 101, 2, 116, 101, 0, 8, 116, 114,
+			101, 112, 115, 107, 101, 2, 115, 101, 0, 4, 107, 1, 10, 2, 107, 28, 33, 12, 3, 7, 111, 0, 107, 1, 21, 2, 107, 28, 33, 12,
+			12, 12, 0, 107, 1, 116, 115, 97, 21, 2, 107, 28, 33, 12, 12, 12, 0, 4, 107, 1, 21, 2, 28, 33, 12, 12, 12, 3, 7, 111,
+			49, 0, 107, 1, 114, 111, 10, 2, 28, 33, 12, 12, 0, 100, 1, 10, 2, 28, 33, 12, 3, 7, 111, 86, 0, 115, 109, 101, 1, 10,
+			2, 28, 33, 3, 7, 111, 89, 65, 14, 0, 4, 8, 114, 107, 109, 111, 2, 110, 103, 12, 12, 3, 7, 114, 0, 107, 1, 114, 10, 2,
+			107, 28, 33, 0, 107, 1, 114, 21, 2, 107, 28, 33, 12, 12, 12, 12, 0, 107, 1, 116, 115, 101, 21, 2, 107, 28, 33, 12, 12, 12,
+			0, 107, 1, 114, 10, 2, 28, 33, 12, 12, 3, 7, 114, 49, 0, 1, 114, 10, 2, 117, 109, 28, 33, 3, 8, 8, 111, 0, 4, 107,
+			101, 114, 1, 10, 2, 101, 116, 28, 33, 12, 12, 3, 8, 37, 49, 7, 36, 0, 107, 101, 114, 1, 114, 98, 10, 2, 101, 28, 33, 12,
+			12, 0, 4, 107, 101, 114, 1, 10, 2, 28, 33, 12, 12, 3, 8, 37, 49, 108, 0, 107, 101, 114, 1, 109, 10, 2, 101, 28, 33, 12,
+			12, 0, 107, 101, 114, 1, 114, 116, 10, 2, 101, 28, 33, 12, 0, 107, 101, 114, 1, 116, 10, 2, 101, 28, 33, 12, 0, 4, 101, 1,
+			10, 2, 28, 33, 12, 12, 12, 12, 3, 8, 57, 14, 0, 101, 1, 10, 2, 108, 105, 118, 28, 33, 0, 101, 1, 115, 10, 2, 28, 33,
+			0, 101, 110, 1, 10, 2, 28, 33, 3, 8, 57, 14, 50, 0, 4, 101, 1, 10, 2, 114, 28, 33, 12, 12, 12, 3, 8, 57, 109, 0,
+			101, 114, 1, 98, 105, 109, 97, 110, 0, 101, 114, 1, 108, 97, 114, 116, 115, 117, 97, 0, 4, 1, 109, 10, 2, 115, 107, 28, 33, 3,
+			8, 111, 0, 1, 114, 111, 108, 97, 107, 2, 117, 115, 0, 101, 1, 10, 2, 114, 101, 28, 33, 3, 8, 111, 7, 114, 0, 116, 117, 109,
+			1, 21, 2, 109, 28, 33, 3, 8, 111, 47, 126, 0, 116, 117, 109, 1, 21, 2, 28, 33, 3, 8, 111, 47, 126, 65, 0, 4, 107, 101,
+			114, 1, 21, 2, 101, 110, 28, 33, 12, 12, 3, 8, 111, 49, 109, 0, 107, 101, 114, 1, 110, 97, 107, 21, 2, 101, 32, 28, 33, 12,
+			12, 12, 0, 4, 115, 107, 1, 10, 2, 32, 28, 33, 12, 3, 8, 111, 89, 81, 0, 115, 107, 1, 10, 2, 101, 28, 33, 12, 0, 115,
+			107, 1, 10, 2, 116, 28, 33, 12, 0, 117, 109, 1, 10, 2, 109, 28, 33, 3, 8, 111, 126, 0, 117, 109, 1, 10, 2, 28, 33, 3,
+			8, 111, 126, 65, 0, 103, 1, 109, 101, 112, 108, 166, 195, 106, 104, 100, 117, 103, 3, 8, 121, 57, 0, 110, 100, 1, 115, 117, 116, 2,
+			12, 12, 3, 14, 50, 0, 4, 108, 101, 1, 100, 111, 3, 21, 102, 114, 0, 109, 112, 114, 111, 109, 112, 116, 117, 0, 116, 104, 101, 1,
+			108, 98, 3, 35, 12, 57, 86, 0, 8, 116, 2, 103, 32, 12, 3, 36, 0, 107, 115, 101, 116, 1, 107, 2, 32, 3, 36, 81, 89, 14,
+			86, 0, 115, 105, 107, 1, 114, 2, 101, 3, 36, 89, 37, 49, 0, 4, 1, 17, 67, 2, 17, 67, 101, 12, 3, 37, 0, 1, 18, 67,
+			2, 18, 71, 101, 0, 1, 18, 67, 2, 18, 71, 114, 101, 0, 1, 18, 68, 2, 107, 101, 0, 1, 18, 73, 2, 108, 101, 12, 12, 0,
+			1, 102, 2, 110, 107, 195, 166, 109, 0, 1, 107, 2, 17, 67, 101, 12, 12, 0, 1, 107, 2, 18, 74, 18, 76, 12, 12, 0, 1, 107,
+			2, 109, 110, 105, 110, 103, 12, 0, 1, 109, 2, 115, 116, 97, 110, 107, 101, 0, 1, 109, 115, 2, 108, 101, 0, 1, 114, 2, 99, 101,
+			0, 1, 114, 101, 116, 110, 97, 102, 110, 105, 0, 1, 116, 2, 100, 101, 21, 0, 1, 116, 2, 110, 18, 76, 0, 1, 116, 115, 2, 108,
+			97, 114, 116, 0, 1, 118, 2, 110, 107, 111, 114, 116, 0, 1, 118, 2, 115, 116, 101, 12, 0, 1, 118, 32, 101, 100, 118, 97, 104, 2,
+			115, 116, 32, 109, 105, 103, 0, 1, 118, 32, 101, 118, 97, 104, 2, 115, 116, 32, 109, 105, 103, 0, 1, 118, 32, 114, 97, 104, 2, 115,
+			116, 32, 109, 105, 103, 0, 1, 118, 104, 2, 108, 12, 0, 8, 118, 2, 115, 116, 32, 100, 101, 110, 32, 116, 105, 108, 0, 8, 118, 2,
+			115, 116, 32, 115, 105, 103, 0, 101, 1, 100, 2, 116, 114, 105, 99, 104, 0, 101, 1, 108, 115, 101, 108, 0, 101, 1, 110, 110, 111, 114,
+			0, 101, 1, 117, 111, 108, 0, 101, 8, 98, 98, 111, 114, 0, 101, 8, 110, 97, 108, 101, 109, 0, 101, 8, 110, 110, 97, 0, 101, 8,
+			115, 117, 115, 0, 101, 8, 122, 117, 115, 0, 103, 1, 100, 114, 166, 195, 118, 0, 103, 1, 108, 2, 110, 101, 0, 118, 8, 108, 98, 2,
+			101, 32, 0, 4, 1, 107, 2, 115, 116, 101, 12, 3, 37, 12, 0, 1, 114, 103, 2, 109, 18, 76, 0, 100, 101, 108, 8, 2, 32, 3,
+			37, 12, 86, 14, 55, 0, 101, 1, 114, 102, 3, 37, 14, 0, 4, 101, 116, 1, 114, 101, 3, 37, 14, 86, 0, 118, 101, 116, 1, 103,
+			2, 32, 0, 114, 111, 115, 104, 105, 1, 104, 2, 109, 97, 3, 37, 34, 39, 91, 6, 37, 0, 107, 101, 114, 1, 10, 2, 101, 114, 28,
+			33, 12, 3, 37, 49, 6, 36, 0, 4, 107, 101, 114, 1, 110, 10, 2, 101, 32, 28, 33, 12, 3, 37, 49, 6, 36, 34, 0, 107, 101,
+			114, 1, 110, 10, 2, 101, 116, 32, 28, 33, 12, 0, 107, 101, 114, 1, 110, 117, 10, 2, 28, 33, 12, 0, 107, 101, 114, 1, 114, 97,
+			107, 10, 2, 101, 28, 33, 12, 0, 103, 110, 1, 115, 2, 97, 108, 3, 37, 50, 0, 108, 108, 111, 116, 1, 112, 97, 112, 2, 12, 3,
+			37, 55, 6, 108, 47, 0, 108, 108, 97, 100, 115, 1, 116, 115, 3, 37, 55, 6, 118, 89, 0, 4, 108, 108, 1, 114, 98, 2, 101, 114,
+			101, 3, 37, 55, 57, 0, 108, 108, 1, 118, 97, 112, 2, 111, 0, 4, 108, 100, 1, 98, 2, 195, 184, 114, 3, 37, 55, 72, 0, 108,
+			100, 1, 118, 2, 105, 103, 0, 4, 98, 101, 1, 112, 2, 116, 195, 184, 106, 3, 37, 58, 0, 112, 1, 110, 107, 2, 116, 97, 110, 103,
+			0, 103, 1, 116, 115, 2, 109, 97, 3, 37, 81, 0, 115, 114, 97, 101, 108, 8, 100, 2, 105, 3, 37, 89, 34, 121, 6, 36, 55, 0,
+			110, 103, 101, 1, 108, 2, 114, 105, 3, 55, 117, 68, 91, 36, 0, 4, 1, 17, 67, 2, 101, 32, 3, 57, 0, 1, 99, 2, 97, 0,
+			1, 99, 2, 101, 110, 110, 105, 0, 1, 100, 117, 2, 101, 0, 1, 108, 111, 2, 101, 0, 1, 110, 117, 106, 2, 111, 114, 0, 1, 115,
+			2, 111, 110, 0, 1, 115, 97, 2, 101, 0, 2, 101, 114, 32, 0, 2, 101, 116, 32, 0, 2, 117, 109, 32, 0, 1, 115, 2, 97, 114,
+			3, 57, 6, 0, 111, 1, 110, 101, 115, 2, 114, 101, 114, 3, 57, 6, 39, 0, 101, 119, 3, 57, 6, 40, 0, 4, 101, 114, 1, 99,
+			110, 97, 108, 3, 57, 6, 114, 0, 101, 114, 1, 99, 110, 97, 110, 105, 102, 0, 101, 114, 1, 99, 110, 101, 114, 101, 102, 110, 111, 107,
+			0, 101, 114, 1, 100, 97, 98, 114, 97, 98, 0, 101, 114, 1, 100, 97, 110, 101, 114, 103, 0, 101, 114, 1, 107, 110, 97, 98, 0, 101,
+			114, 1, 108, 97, 112, 115, 0, 101, 114, 1, 108, 97, 112, 115, 101, 0, 101, 114, 1, 108, 101, 116, 97, 0, 101, 114, 1, 108, 108, 111,
+			99, 0, 101, 114, 1, 108, 117, 99, 105, 116, 114, 97, 112, 0, 101, 114, 1, 109, 117, 116, 115, 111, 107, 0, 101, 114, 1, 110, 101, 100,
+			0, 101, 114, 1, 112, 117, 111, 114, 99, 0, 101, 114, 1, 115, 110, 97, 110, 105, 102, 0, 101, 114, 1, 115, 115, 111, 100, 0, 101, 114,
+			1, 116, 101, 109, 0, 101, 114, 1, 116, 110, 97, 103, 101, 108, 101, 0, 101, 114, 1, 116, 110, 101, 114, 0, 101, 114, 1, 116, 114, 111,
+			112, 0, 101, 114, 101, 116, 1, 115, 115, 111, 100, 3, 57, 6, 114, 14, 86, 0, 4, 101, 110, 1, 10, 2, 101, 114, 28, 33, 3, 57,
+			6, 116, 50, 0, 101, 110, 1, 10, 2, 115, 107, 28, 33, 0, 4, 101, 1, 108, 105, 109, 97, 102, 21, 3, 57, 14, 0, 101, 1, 114,
+			101, 0, 101, 1, 114, 111, 116, 115, 105, 104, 21, 0, 101, 1, 114, 166, 195, 114, 112, 0, 97, 118, 1, 109, 3, 57, 35, 58, 0, 111,
+			1, 107, 2, 115, 107, 3, 57, 108, 0, 4, 101, 114, 1, 114, 101, 3, 57, 109, 0, 111, 114, 1, 110, 101, 115, 0, 4, 101, 1, 118,
+			2, 116, 32, 99, 111, 110, 103, 3, 57, 116, 0, 101, 1, 118, 2, 116, 110, 97, 109, 0, 118, 101, 114, 1, 103, 112, 111, 2, 32, 3,
+			81, 111, 34, 0, 4, 3, 111, 0, 1, 17, 67, 2, 17, 67, 0, 1, 18, 68, 2, 18, 75, 97, 0, 1, 18, 68, 2, 107, 18, 69,
+			12, 0, 1, 18, 71, 2, 107, 97, 110, 116, 12, 0, 1, 18, 71, 2, 107, 101, 0, 1, 98, 2, 17, 67, 12, 12, 12, 0, 1, 98,
+			2, 98, 101, 108, 0, 1, 98, 2, 101, 114, 32, 0, 1, 98, 2, 107, 105, 110, 105, 0, 1, 98, 2, 107, 117, 98, 101, 0, 1, 98,
+			2, 108, 12, 0, 1, 98, 2, 108, 108, 101, 32, 12, 12, 12, 0, 1, 98, 2, 108, 108, 101, 110, 12, 12, 12, 0, 1, 98, 2, 108,
+			108, 101, 110, 32, 12, 0, 1, 98, 2, 108, 108, 101, 114, 32, 12, 0, 1, 98, 2, 108, 108, 101, 116, 12, 12, 12, 0, 1, 98, 2,
+			112, 12, 0, 1, 98, 2, 115, 111, 110, 0, 1, 99, 2, 110, 110, 0, 1, 99, 105, 100, 101, 109, 2, 110, 0, 1, 100, 2, 107, 116,
+			12, 0, 1, 100, 2, 115, 18, 75, 97, 0, 1, 100, 2, 115, 107, 101, 116, 116, 0, 1, 100, 2, 115, 107, 111, 0, 1, 100, 2, 115,
+			107, 114, 101, 112, 97, 110, 115, 0, 1, 100, 2, 115, 107, 114, 101, 116, 0, 1, 100, 2, 115, 107, 114, 105, 109, 105, 0, 1, 100, 2,
+			115, 107, 117, 0, 1, 100, 2, 115, 107, 118, 97, 0, 1, 100, 110, 97, 104, 2, 18, 75, 0, 1, 100, 110, 105, 2, 115, 107, 0, 1,
+			100, 114, 111, 106, 2, 115, 107, 0, 1, 102, 2, 107, 17, 67, 18, 69, 0, 1, 102, 2, 108, 12, 0, 1, 102, 2, 110, 107, 117, 108,
+			0, 1, 102, 2, 110, 115, 107, 121, 0, 1, 102, 97, 114, 103, 2, 115, 107, 0, 1, 102, 97, 114, 116, 2, 107, 0, 1, 102, 110, 111,
+			107, 2, 115, 107, 101, 114, 0, 1, 102, 110, 111, 107, 2, 115, 107, 101, 114, 101, 0, 1, 104, 2, 108, 115, 0, 1, 104, 2, 110, 0,
+			1, 104, 99, 2, 107, 12, 0, 1, 107, 2, 18, 74, 18, 69, 12, 12, 0, 1, 107, 2, 100, 101, 114, 105, 107, 12, 12, 0, 1, 107,
+			2, 107, 12, 12, 0, 1, 107, 105, 98, 2, 110, 105, 0, 1, 107, 114, 111, 2, 100, 101, 12, 0, 1, 107, 115, 2, 17, 67, 116, 0,
+			1, 107, 115, 2, 98, 101, 116, 12, 12, 0, 1, 107, 115, 2, 107, 12, 12, 0, 1, 107, 115, 2, 108, 105, 102, 116, 12, 0, 1, 107,
+			115, 2, 108, 195, 184, 98, 12, 12, 0, 1, 107, 115, 2, 109, 111, 12, 0, 1, 107, 115, 21, 2, 108, 100, 12, 12, 0, 1, 108, 2,
+			107, 118, 12, 0, 1, 108, 2, 109, 110, 105, 12, 0, 1, 108, 2, 115, 107, 0, 1, 108, 2, 116, 101, 114, 0, 1, 108, 97, 105, 99,
+			101, 112, 115, 2, 115, 116, 0, 1, 108, 97, 110, 114, 117, 111, 106, 21, 0, 1, 108, 98, 117, 112, 0, 1, 108, 102, 110, 111, 107, 21,
+			2, 107, 116, 0, 1, 108, 105, 98, 2, 115, 0, 1, 108, 107, 2, 115, 116, 114, 0, 1, 108, 107, 121, 99, 21, 2, 115, 116, 0, 1,
+			108, 108, 97, 98, 2, 115, 116, 105, 107, 0, 1, 108, 112, 2, 18, 66, 18, 76, 12, 0, 1, 108, 112, 2, 107, 12, 0, 1, 108, 114,
+			111, 102, 2, 115, 0, 1, 108, 115, 2, 109, 0, 1, 109, 2, 107, 115, 116, 117, 114, 0, 1, 109, 97, 110, 121, 100, 2, 107, 12, 0,
+			1, 110, 2, 99, 104, 101, 0, 1, 110, 2, 107, 18, 69, 0, 1, 110, 100, 108, 105, 118, 2, 115, 0, 1, 110, 101, 108, 2, 110, 0,
+			1, 110, 101, 112, 2, 115, 0, 1, 110, 105, 108, 107, 2, 107, 0, 1, 110, 107, 2, 118, 0, 1, 110, 107, 101, 116, 2, 107, 0, 1,
+			112, 2, 110, 115, 101, 108, 0, 1, 112, 2, 110, 115, 108, 101, 114, 0, 1, 112, 2, 112, 12, 0, 1, 112, 114, 97, 104, 2, 107, 115,
+			0, 1, 112, 115, 2, 108, 100, 0, 1, 114, 2, 18, 73, 18, 69, 12, 12, 0, 1, 114, 2, 18, 75, 17, 67, 18, 69, 0, 1, 114,
+			2, 18, 75, 18, 69, 0, 1, 114, 2, 18, 75, 18, 76, 0, 1, 114, 2, 115, 107, 97, 103, 101, 12, 0, 1, 114, 2, 115, 116, 105,
+			107, 12, 0, 1, 114, 10, 2, 115, 107, 0, 1, 114, 18, 66, 2, 108, 108, 0, 1, 114, 98, 2, 116, 101, 0, 1, 114, 98, 2, 116,
+			105, 115, 0, 1, 114, 102, 0, 1, 114, 102, 2, 101, 114, 0, 1, 114, 102, 2, 101, 116, 0, 1, 114, 102, 2, 102, 12, 0, 1, 114,
+			102, 2, 103, 0, 1, 114, 102, 2, 107, 101, 110, 0, 1, 114, 102, 2, 107, 118, 97, 114, 116, 101, 114, 0, 1, 114, 102, 2, 115, 112,
+			97, 114, 107, 0, 1, 114, 102, 2, 115, 116, 97, 100, 0, 1, 114, 102, 2, 115, 116, 101, 100, 0, 1, 114, 103, 2, 115, 12, 12, 0,
+			1, 114, 105, 2, 115, 107, 12, 0, 1, 114, 107, 115, 2, 100, 101, 114, 0, 1, 114, 107, 115, 2, 118, 101, 114, 0, 1, 114, 111, 114,
+			114, 101, 116, 21, 2, 115, 0, 1, 114, 112, 2, 109, 12, 0, 1, 114, 112, 2, 115, 12, 12, 0, 1, 114, 116, 2, 18, 73, 12, 12,
+			0, 1, 114, 116, 2, 108, 108, 0, 1, 115, 2, 100, 101, 110, 32, 12, 0, 1, 115, 101, 98, 2, 100, 100, 101, 0, 1, 115, 117, 109,
+			2, 107, 0, 1, 116, 2, 100, 12, 12, 0, 1, 116, 2, 101, 116, 32, 0, 1, 116, 2, 107, 97, 12, 0, 1, 116, 2, 110, 110, 105,
+			116, 117, 115, 0, 1, 116, 2, 116, 0, 1, 116, 2, 116, 12, 0, 1, 116, 2, 116, 12, 12, 0, 1, 116, 10, 2, 115, 195, 184, 114,
+			28, 33, 12, 0, 1, 116, 21, 2, 107, 32, 12, 12, 0, 1, 116, 105, 108, 111, 112, 2, 107, 0, 1, 116, 107, 101, 106, 111, 114, 112,
+			2, 108, 0, 1, 116, 110, 97, 2, 12, 0, 1, 116, 110, 101, 118, 2, 108, 0, 1, 116, 114, 97, 2, 107, 0, 1, 116, 114, 97, 112,
+			0, 1, 116, 115, 2, 103, 12, 12, 0, 1, 116, 115, 2, 108, 32, 111, 118, 101, 114, 0, 1, 116, 115, 2, 108, 102, 117, 108, 100, 0,
+			1, 116, 115, 17, 65, 2, 108, 32, 0, 1, 116, 115, 32, 101, 100, 118, 97, 104, 2, 108, 32, 0, 1, 116, 115, 32, 101, 114, 101, 109,
+			2, 108, 32, 111, 118, 101, 114, 32, 0, 1, 116, 115, 32, 107, 115, 108, 101, 103, 110, 101, 2, 108, 12, 0, 1, 116, 115, 32, 107, 115,
+			110, 97, 100, 2, 108, 12, 0, 1, 116, 115, 32, 110, 101, 100, 111, 109, 2, 108, 32, 0, 1, 116, 115, 32, 110, 101, 100, 111, 109, 117,
+			2, 108, 32, 0, 1, 116, 115, 32, 110, 101, 103, 101, 2, 108, 32, 0, 1, 116, 115, 32, 114, 97, 104, 2, 108, 32, 0, 1, 116, 115,
+			32, 114, 97, 118, 2, 108, 32, 111, 118, 101, 114, 32, 0, 1, 116, 115, 32, 114, 101, 2, 108, 32, 111, 118, 101, 114, 32, 0, 1, 116,
+			115, 32, 114, 111, 116, 115, 2, 108, 32, 0, 1, 116, 115, 97, 108, 112, 2, 18, 75, 0, 1, 116, 115, 105, 116, 97, 116, 115, 21, 2,
+			107, 0, 1, 116, 115, 115, 118, 105, 108, 2, 108, 0, 1, 116, 117, 98, 2, 107, 0, 1, 118, 2, 18, 66, 97, 0, 1, 118, 2, 18,
+			75, 105, 0, 1, 118, 2, 98, 12, 0, 1, 118, 2, 99, 107, 0, 1, 118, 2, 100, 101, 114, 101, 0, 1, 118, 2, 101, 116, 0, 1,
+			118, 2, 107, 116, 18, 69, 12, 12, 0, 1, 118, 2, 110, 103, 108, 97, 115, 12, 12, 12, 0, 1, 118, 2, 110, 103, 195, 165, 114, 100,
+			12, 0, 1, 118, 2, 110, 107, 195, 166, 108, 100, 12, 0, 1, 118, 2, 110, 115, 97, 109, 108, 105, 110, 103, 0, 1, 118, 2, 115, 115,
+			101, 108, 117, 108, 108, 101, 0, 1, 118, 107, 2, 18, 72, 12, 12, 0, 1, 118, 115, 2, 110, 115, 0, 1, 118, 116, 114, 111, 98, 2,
+			115, 0, 1, 118, 184, 195, 104, 2, 115, 107, 0, 2, 17, 67, 11, 0, 2, 100, 115, 0, 2, 100, 116, 0, 2, 103, 103, 106, 111, 12,
+			12, 0, 2, 103, 103, 195, 184, 114, 12, 12, 0, 2, 110, 117, 0, 8, 2, 110, 105, 0, 8, 108, 2, 100, 116, 32, 110, 101, 100, 101,
+			114, 108, 97, 103, 0, 8, 108, 2, 100, 116, 32, 111, 118, 101, 114, 108, 97, 115, 116, 0, 8, 108, 2, 100, 116, 32, 115, 107, 97, 100,
+			101, 0, 8, 108, 2, 100, 116, 32, 117, 110, 100, 101, 114, 0, 8, 108, 107, 2, 115, 116, 101, 114, 0, 8, 116, 2, 101, 114, 32, 0,
+			8, 116, 115, 2, 108, 32, 111, 118, 101, 114, 32, 100, 101, 17, 67, 0, 8, 116, 115, 2, 108, 32, 111, 118, 101, 114, 32, 104, 97, 109,
+			0, 8, 116, 115, 2, 108, 32, 111, 118, 101, 114, 32, 104, 101, 110, 100, 101, 0, 8, 116, 115, 32, 100, 101, 109, 2, 108, 32, 0, 8,
+			116, 115, 32, 101, 100, 118, 97, 104, 2, 108, 32, 0, 8, 116, 115, 32, 101, 116, 102, 105, 107, 115, 2, 108, 32, 0, 8, 116, 115, 32,
+			101, 118, 97, 104, 2, 108, 32, 0, 8, 116, 115, 32, 107, 115, 110, 97, 100, 2, 108, 32, 0, 8, 116, 115, 32, 110, 101, 2, 108, 32,
+			0, 8, 116, 115, 32, 110, 105, 100, 2, 108, 32, 0, 8, 116, 115, 32, 110, 105, 109, 2, 108, 32, 0, 8, 116, 115, 32, 110, 105, 115,
+			2, 108, 32, 0, 8, 116, 115, 32, 114, 97, 104, 2, 108, 32, 0, 8, 116, 115, 32, 114, 101, 116, 102, 105, 107, 115, 2, 108, 32, 0,
+			8, 116, 115, 32, 115, 101, 100, 110, 101, 104, 2, 108, 32, 0, 8, 116, 115, 32, 115, 101, 114, 101, 100, 2, 108, 32, 0, 8, 116, 115,
+			32, 115, 101, 114, 101, 106, 2, 108, 32, 0, 8, 116, 115, 32, 115, 110, 97, 104, 2, 108, 32, 0, 8, 116, 115, 32, 116, 102, 105, 107,
+			115, 2, 108, 32, 0, 8, 116, 115, 32, 121, 110, 2, 108, 32, 0, 100, 101, 1, 108, 2, 32, 97, 110, 100, 114, 101, 0, 100, 101, 1,
+			108, 2, 32, 100, 101, 109, 0, 100, 101, 1, 108, 2, 32, 100, 101, 110, 0, 100, 101, 1, 108, 2, 32, 100, 101, 114, 101, 115, 0, 100,
+			101, 1, 108, 2, 32, 100, 101, 116, 0, 100, 101, 1, 108, 2, 32, 100, 105, 103, 0, 100, 101, 1, 108, 2, 32, 104, 97, 109, 0, 100,
+			101, 1, 108, 2, 32, 104, 101, 110, 100, 101, 0, 100, 101, 1, 108, 2, 32, 106, 101, 114, 0, 100, 101, 1, 108, 2, 32, 106, 101, 114,
+			101, 115, 0, 100, 101, 1, 108, 2, 32, 109, 105, 103, 0, 100, 101, 1, 108, 2, 32, 111, 115, 0, 100, 101, 1, 108, 2, 32, 118, 111,
+			114, 101, 115, 0, 100, 101, 8, 108, 32, 101, 107, 107, 105, 0, 100, 101, 8, 108, 32, 101, 110, 110, 117, 107, 0, 100, 101, 8, 108, 32,
+			103, 101, 106, 32, 110, 97, 107, 0, 100, 101, 8, 108, 32, 105, 0, 100, 101, 8, 108, 32, 105, 32, 110, 97, 107, 0, 100, 101, 8, 108,
+			32, 105, 118, 0, 100, 101, 8, 108, 32, 105, 118, 32, 110, 97, 107, 0, 100, 101, 8, 108, 32, 110, 97, 107, 0, 100, 101, 8, 108, 32,
+			116, 100, 111, 103, 0, 100, 101, 8, 108, 32, 116, 101, 110, 110, 117, 107, 0, 100, 101, 8, 108, 32, 116, 115, 100, 101, 98, 0, 100, 101,
+			8, 108, 32, 117, 100, 0, 100, 101, 8, 108, 32, 117, 100, 32, 110, 97, 107, 0, 101, 1, 100, 2, 115, 101, 108, 0, 101, 1, 112, 2,
+			100, 101, 115, 116, 97, 108, 0, 101, 1, 112, 112, 105, 104, 0, 103, 1, 100, 101, 108, 2, 12, 12, 0, 103, 1, 108, 116, 110, 101, 102,
+			102, 111, 0, 103, 1, 114, 2, 17, 67, 0, 115, 1, 117, 111, 108, 0, 118, 1, 103, 2, 32, 0, 118, 101, 1, 103, 2, 32, 0, 4,
+			1, 102, 2, 107, 115, 101, 114, 98, 97, 100, 3, 111, 6, 0, 1, 102, 2, 107, 115, 101, 114, 98, 105, 108, 108, 101, 100, 0, 1, 102,
+			2, 107, 115, 101, 114, 101, 0, 1, 102, 2, 107, 115, 101, 114, 105, 110, 103, 0, 1, 102, 2, 107, 115, 101, 114, 118, 195, 166, 115, 107,
+			101, 0, 1, 114, 18, 75, 2, 115, 116, 105, 110, 12, 0, 101, 1, 114, 114, 2, 114, 101, 3, 111, 6, 115, 12, 0, 101, 114, 101, 114,
+			1, 114, 114, 3, 111, 6, 115, 12, 109, 0, 4, 101, 1, 114, 10, 2, 108, 28, 33, 12, 12, 3, 111, 6, 116, 0, 101, 1, 114, 111,
+			2, 110, 116, 32, 0, 101, 1, 114, 111, 2, 110, 116, 101, 110, 32, 0, 101, 1, 114, 111, 2, 110, 116, 101, 110, 115, 32, 0, 118, 101,
+			114, 1, 103, 2, 32, 3, 111, 34, 0, 116, 101, 115, 8, 114, 102, 2, 32, 3, 111, 47, 0, 4, 107, 1, 17, 67, 2, 97, 110, 101,
+			114, 12, 12, 3, 111, 49, 0, 107, 1, 17, 67, 2, 101, 114, 12, 0, 107, 1, 21, 2, 97, 116, 28, 33, 12, 12, 0, 107, 1, 21,
+			2, 101, 116, 28, 33, 12, 12, 12, 0, 4, 107, 1, 10, 2, 97, 108, 115, 107, 28, 33, 12, 3, 111, 49, 6, 0, 107, 1, 21, 2,
+			97, 110, 116, 28, 33, 12, 0, 110, 107, 1, 118, 2, 101, 110, 100, 101, 114, 3, 111, 50, 49, 0, 4, 110, 100, 1, 102, 2, 101, 108,
+			3, 111, 50, 72, 0, 110, 100, 1, 102, 2, 121, 114, 107, 0, 110, 100, 1, 118, 2, 114, 117, 101, 0, 110, 103, 1, 118, 2, 117, 109,
+			109, 105, 12, 3, 111, 50, 81, 0, 108, 100, 3, 111, 55, 0, 108, 111, 112, 1, 112, 115, 3, 111, 55, 6, 109, 48, 0, 108, 108, 101,
+			1, 116, 114, 97, 2, 114, 105, 3, 111, 55, 14, 0, 108, 100, 1, 100, 2, 111, 3, 111, 55, 72, 0, 4, 103, 1, 108, 108, 101, 104,
+			3, 111, 57, 0, 103, 8, 108, 2, 17, 67, 0, 118, 1, 108, 2, 25, 12, 12, 3, 111, 58, 0, 109, 97, 103, 101, 3, 111, 65, 111,
+			75, 0, 100, 103, 101, 1, 114, 3, 111, 75, 0, 4, 103, 1, 108, 105, 102, 2, 114, 97, 110, 3, 111, 81, 0, 103, 1, 114, 102, 2,
+			106, 111, 0, 103, 2, 114, 117, 112, 112, 101, 0, 103, 105, 1, 108, 3, 111, 81, 57, 0, 118, 1, 108, 2, 101, 116, 32, 3, 111, 84,
+			0, 118, 101, 114, 1, 103, 100, 165, 195, 114, 3, 111, 84, 109, 0, 115, 1, 18, 73, 2, 12, 3, 111, 89, 0, 115, 114, 97, 101, 108,
+			115, 107, 3, 111, 89, 34, 121, 6, 114, 55, 89, 49, 0, 115, 114, 97, 101, 108, 101, 114, 3, 111, 89, 34, 121, 6, 114, 55, 108, 0,
+			115, 114, 97, 101, 108, 3, 111, 89, 34, 121, 12, 55, 0, 115, 116, 101, 108, 116, 101, 110, 1, 109, 3, 111, 89, 47, 115, 55, 47, 36,
+			50, 0, 115, 105, 97, 110, 97, 1, 117, 111, 108, 3, 111, 89, 57, 6, 118, 50, 118, 0, 115, 107, 1, 118, 17, 65, 2, 32, 3, 111,
+			89, 81, 0, 115, 105, 107, 111, 1, 114, 3, 111, 89, 111, 49, 124, 0, 101, 1, 114, 101, 116, 2, 108, 3, 111, 116, 0, 1, 108, 99,
+			2, 102, 3, 113, 0, 100, 103, 101, 116, 1, 114, 98, 3, 113, 75, 37, 47, 0, 4, 1, 17, 67, 2, 109, 17, 67, 12, 3, 114, 0,
+			1, 17, 67, 2, 109, 18, 71, 0, 1, 17, 67, 2, 110, 103, 12, 12, 12, 0, 1, 17, 67, 2, 110, 107, 101, 0, 1, 18, 67, 2,
+			112, 0, 1, 18, 67, 2, 112, 112, 0, 1, 18, 68, 2, 18, 66, 11, 12, 0, 1, 18, 68, 2, 107, 12, 0, 1, 18, 71, 2, 107,
+			12, 0, 1, 18, 71, 2, 108, 108, 101, 12, 12, 0, 1, 18, 72, 2, 102, 116, 101, 0, 1, 18, 73, 2, 18, 66, 12, 12, 0, 1,
+			18, 73, 2, 108, 108, 12, 12, 0, 1, 18, 74, 2, 18, 68, 11, 97, 12, 0, 1, 18, 74, 2, 107, 115, 0, 1, 18, 74, 2, 112,
+			112, 0, 1, 18, 74, 2, 120, 0, 1, 98, 2, 109, 115, 12, 12, 12, 0, 1, 98, 2, 116, 114, 101, 12, 12, 0, 1, 98, 2, 116,
+			116, 101, 114, 12, 12, 0, 1, 100, 2, 110, 103, 111, 0, 1, 100, 2, 115, 107, 0, 1, 102, 2, 18, 73, 12, 0, 1, 102, 2, 107,
+			115, 0, 1, 102, 2, 110, 108, 97, 110, 100, 0, 1, 102, 2, 110, 116, 101, 0, 1, 102, 2, 120, 0, 1, 104, 2, 109, 12, 0, 1,
+			104, 2, 110, 100, 0, 1, 107, 2, 18, 74, 12, 12, 0, 1, 107, 2, 109, 115, 101, 0, 1, 107, 111, 109, 115, 2, 110, 103, 0, 1,
+			107, 115, 2, 108, 12, 12, 0, 1, 107, 115, 2, 110, 12, 0, 1, 108, 2, 18, 73, 12, 0, 1, 108, 2, 108, 108, 97, 0, 1, 108,
+			2, 110, 107, 0, 1, 108, 2, 110, 110, 101, 100, 0, 1, 108, 2, 110, 115, 0, 1, 108, 2, 110, 116, 0, 1, 108, 17, 67, 2, 112,
+			0, 1, 108, 17, 67, 2, 112, 112, 0, 1, 108, 18, 73, 2, 18, 72, 0, 1, 108, 103, 2, 109, 0, 1, 108, 107, 2, 107, 32, 0,
+			1, 108, 112, 2, 103, 116, 12, 0, 1, 108, 115, 2, 107, 0, 1, 109, 2, 107, 108, 101, 114, 0, 1, 110, 2, 112, 0, 1, 110, 2,
+			115, 115, 101, 0, 1, 110, 2, 116, 116, 101, 110, 0, 1, 110, 107, 2, 112, 0, 1, 112, 2, 108, 114, 0, 1, 112, 2, 110, 107, 0,
+			1, 112, 2, 110, 107, 111, 100, 101, 0, 1, 112, 2, 115, 115, 101, 0, 1, 112, 115, 2, 100, 115, 0, 1, 112, 115, 2, 108, 0, 1,
+			114, 2, 18, 66, 11, 0, 1, 114, 2, 18, 73, 12, 12, 0, 1, 114, 2, 18, 75, 0, 1, 114, 2, 102, 0, 1, 114, 2, 103, 116,
+			105, 0, 1, 114, 17, 67, 2, 108, 108, 0, 1, 114, 18, 71, 2, 110, 116, 0, 1, 114, 100, 2, 110, 107, 0, 1, 114, 100, 2, 115,
+			116, 105, 103, 12, 0, 1, 114, 101, 2, 110, 100, 114, 0, 1, 114, 102, 2, 115, 116, 101, 100, 101, 32, 0, 1, 114, 102, 2, 115, 116,
+			101, 100, 101, 115, 32, 0, 1, 114, 103, 2, 109, 0, 1, 114, 107, 2, 99, 107, 101, 116, 0, 1, 114, 107, 2, 115, 116, 105, 32, 0,
+			1, 114, 107, 2, 115, 116, 117, 115, 12, 0, 1, 114, 111, 107, 2, 110, 116, 0, 1, 114, 112, 2, 110, 0, 1, 114, 116, 115, 2, 110,
+			116, 0, 1, 114, 118, 2, 115, 115, 0, 1, 115, 2, 18, 66, 18, 72, 0, 1, 115, 2, 100, 32, 0, 1, 115, 2, 100, 100, 101, 0,
+			1, 115, 2, 100, 110, 105, 110, 103, 0, 1, 115, 2, 107, 17, 67, 0, 1, 115, 2, 108, 107, 0, 1, 115, 2, 110, 107, 12, 12, 0,
+			1, 115, 2, 112, 112, 0, 1, 116, 2, 103, 103, 12, 0, 1, 116, 2, 108, 12, 12, 0, 1, 116, 115, 2, 108, 32, 104, 97, 109, 0,
+			1, 116, 115, 2, 108, 32, 111, 112, 32, 0, 1, 116, 115, 2, 108, 108, 105, 110, 103, 12, 12, 0, 1, 116, 115, 100, 110, 105, 2, 108,
+			0, 1, 116, 115, 100, 110, 166, 195, 116, 2, 107, 12, 0, 1, 116, 115, 101, 98, 2, 107, 12, 12, 0, 1, 116, 115, 101, 98, 2, 108,
+			0, 1, 116, 115, 101, 98, 166, 195, 108, 2, 102, 116, 0, 1, 116, 115, 101, 100, 97, 112, 115, 2, 107, 0, 1, 116, 115, 101, 103, 103,
+			121, 109, 2, 107, 0, 1, 116, 115, 101, 108, 165, 195, 110, 2, 107, 12, 0, 1, 116, 115, 101, 110, 103, 101, 116, 2, 102, 116, 0, 1,
+			116, 115, 101, 114, 111, 102, 2, 108, 0, 1, 116, 115, 103, 97, 108, 115, 2, 102, 116, 0, 1, 116, 115, 105, 98, 2, 107, 12, 12, 0,
+			1, 116, 115, 107, 166, 195, 108, 98, 2, 102, 116, 0, 1, 116, 115, 108, 111, 115, 2, 107, 12, 12, 0, 1, 116, 115, 109, 105, 108, 2,
+			102, 116, 0, 1, 116, 115, 115, 116, 110, 97, 121, 108, 98, 2, 102, 116, 0, 1, 116, 115, 116, 110, 97, 121, 108, 98, 2, 102, 116, 0,
+			1, 116, 115, 118, 105, 110, 107, 2, 107, 0, 1, 118, 2, 18, 66, 17, 67, 12, 12, 0, 1, 118, 2, 108, 32, 12, 0, 1, 118, 2,
+			110, 107, 0, 1, 118, 2, 110, 115, 116, 111, 107, 0, 1, 118, 2, 110, 116, 101, 114, 0, 1, 118, 2, 110, 116, 114, 101, 0, 1, 118,
+			2, 115, 32, 103, 114, 97, 100, 0, 1, 118, 2, 115, 104, 0, 1, 118, 2, 115, 107, 12, 0, 1, 118, 2, 115, 110, 101, 0, 1, 118,
+			2, 115, 115, 0, 1, 118, 2, 115, 116, 32, 105, 107, 107, 101, 0, 1, 118, 2, 115, 116, 110, 111, 107, 0, 1, 118, 18, 72, 2, 115,
+			116, 12, 0, 1, 118, 32, 101, 107, 115, 110, 97, 103, 2, 115, 116, 32, 0, 1, 118, 97, 106, 2, 115, 116, 0, 1, 118, 101, 103, 2,
+			110, 115, 116, 0, 1, 118, 104, 2, 108, 107, 12, 0, 1, 118, 111, 106, 2, 115, 116, 0, 1, 118, 115, 2, 18, 74, 17, 67, 0, 1,
+			118, 117, 2, 115, 0, 1, 119, 116, 2, 115, 116, 0, 2, 107, 107, 101, 12, 0, 2, 109, 112, 0, 2, 109, 112, 111, 0, 2, 110, 99,
+			12, 0, 2, 110, 100, 12, 12, 12, 12, 0, 2, 110, 100, 101, 12, 0, 2, 110, 102, 0, 2, 110, 102, 97, 110, 116, 0, 2, 110, 110,
+			0, 2, 110, 110, 101, 12, 12, 12, 0, 2, 110, 115, 12, 0, 2, 110, 116, 101, 114, 0, 2, 110, 116, 111, 108, 101, 114, 97, 110, 116,
+			0, 2, 110, 118, 105, 0, 8, 2, 110, 12, 0, 8, 102, 2, 107, 32, 0, 8, 108, 2, 100, 116, 32, 12, 0, 8, 109, 2, 115, 116,
+			32, 0, 8, 109, 2, 115, 116, 101, 32, 0, 8, 109, 2, 115, 116, 101, 100, 101, 32, 0, 8, 109, 2, 115, 116, 101, 100, 101, 115, 32,
+			0, 8, 109, 2, 115, 116, 101, 114, 32, 0, 8, 109, 2, 115, 116, 101, 116, 32, 0, 8, 110, 2, 18, 75, 0, 8, 114, 100, 2, 108,
+			0, 8, 116, 2, 110, 0, 8, 116, 2, 115, 107, 101, 32, 0, 8, 116, 115, 2, 108, 32, 100, 101, 109, 0, 8, 116, 115, 2, 108, 32,
+			100, 101, 110, 0, 8, 116, 115, 2, 108, 32, 106, 101, 114, 0, 8, 116, 115, 2, 108, 32, 109, 105, 103, 0, 8, 116, 115, 2, 108, 32,
+			111, 115, 0, 8, 116, 115, 2, 108, 32, 118, 111, 114, 101, 115, 0, 8, 118, 2, 102, 116, 32, 0, 8, 118, 2, 115, 116, 32, 0, 100,
+			1, 118, 2, 115, 116, 0, 100, 8, 109, 2, 116, 0, 107, 97, 100, 101, 108, 108, 101, 1, 114, 102, 3, 114, 49, 118, 72, 6, 116, 55,
+			14, 0, 107, 97, 100, 101, 108, 108, 101, 114, 1, 114, 102, 3, 114, 49, 118, 72, 6, 116, 55, 108, 0, 4, 110, 100, 1, 102, 2, 101,
+			108, 195, 184, 110, 3, 114, 50, 0, 110, 100, 2, 101, 108, 115, 101, 12, 0, 110, 117, 112, 1, 112, 3, 114, 50, 6, 109, 48, 0, 110,
+			116, 101, 114, 110, 97, 116, 105, 111, 110, 97, 108, 1, 32, 121, 116, 115, 101, 110, 109, 97, 3, 114, 50, 47, 109, 50, 6, 118, 91, 124,
+			50, 14, 55, 0, 110, 103, 111, 1, 98, 3, 114, 50, 81, 39, 0, 110, 115, 116, 105, 116, 117, 116, 105, 111, 110, 8, 3, 114, 50, 89,
+			47, 111, 47, 123, 91, 6, 124, 50, 0, 110, 115, 116, 105, 116, 117, 116, 105, 111, 110, 3, 114, 50, 89, 47, 111, 47, 123, 91, 124, 50,
+			0, 110, 115, 105, 100, 101, 8, 2, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 3, 114, 50, 89, 136, 72, 0, 110, 115, 105, 100,
+			101, 114, 8, 3, 114, 50, 89, 136, 72, 108, 0, 110, 103, 101, 110, 105, 2, 195, 184, 3, 114, 50, 91, 14, 50, 57, 0, 108, 108, 101,
+			1, 118, 104, 115, 97, 110, 3, 114, 59, 0, 109, 112, 111, 116, 101, 110, 3, 114, 65, 48, 124, 47, 116, 50, 0, 109, 97, 108, 97, 121,
+			97, 1, 104, 3, 114, 65, 117, 55, 6, 136, 117, 0, 4, 103, 1, 114, 2, 110, 105, 110, 103, 3, 114, 81, 0, 103, 103, 1, 114, 0,
+			115, 1, 112, 2, 32, 3, 114, 89, 0, 4, 1, 114, 17, 67, 2, 109, 17, 67, 3, 116, 0, 1, 114, 17, 67, 2, 109, 109, 0, 110,
+			1, 108, 101, 104, 99, 105, 109, 3, 116, 68, 0, 101, 8, 112, 2, 32, 3, 121, 57, 0, 103, 110, 1, 115, 101, 100, 3, 122, 37, 50,
+			0, 114, 1, 108, 102, 2, 116, 3, 132, 12, 0, 114, 118, 105, 110, 103, 3, 132, 84, 36, 68, 0, 4, 1, 108, 115, 117, 115, 107, 117,
+			108, 2, 110, 101, 114, 3, 136, 0, 1, 114, 2, 108, 101, 121, 0, 1, 114, 98, 2, 101, 110, 0, 1, 116, 2, 109, 105, 110, 103, 0,
+			1, 116, 102, 111, 115, 2, 99, 101, 0, 2, 111, 119, 97, 0, 103, 104, 1, 104, 0, 103, 104, 1, 108, 2, 116, 101, 114, 0, 106, 1,
+			110, 2, 109, 101, 103, 101, 110, 0, 103, 104, 116, 8, 116, 3, 136, 47, 0, 107, 101, 8, 112, 115, 3, 136, 49, 0, 115, 108, 97, 110,
+			100, 1, 32, 103, 110, 111, 108, 3, 136, 55, 13, 50, 72, 0, 109, 101, 1, 116, 2, 111, 117, 116, 3, 136, 65, 0, 4, 109, 101, 115,
+			1, 114, 103, 3, 136, 65, 89, 0, 109, 101, 115, 1, 116, 32, 107, 114, 111, 121, 32, 119, 101, 110, 0, 100, 97, 104, 111, 3, 136, 72,
+			118, 107, 6, 39, 58, 0, 118, 101, 1, 108, 99, 3, 136, 84, 0, 118, 97, 110, 104, 111, 101, 3, 136, 84, 13, 50, 107, 6, 39, 58,
+			0, 114, 101, 1, 119, 3, 136, 108, 0, 114, 111, 110, 8, 2, 32, 3, 136, 108, 50, 0, 7, 6, 106, 0, 101, 97, 110, 110, 101, 2,
+			32, 100, 39, 3, 2, 91, 117, 12, 50, 0, 1, 104, 114, 101, 100, 2, 101, 109, 109, 101, 3, 6, 57, 0, 4, 3, 57, 0, 1, 184,
+			195, 2, 101, 116, 0, 2, 117, 110, 107, 116, 0, 1, 97, 109, 2, 111, 114, 3, 57, 6, 0, 101, 104, 111, 118, 97, 3, 57, 36, 107,
+			6, 39, 84, 117, 0, 101, 114, 8, 2, 32, 3, 57, 115, 34, 0, 101, 114, 115, 101, 121, 2, 107, 3, 57, 115, 34, 89, 37, 0, 101,
+			114, 101, 115, 8, 2, 32, 3, 57, 115, 108, 89, 0, 97, 107, 101, 108, 8, 3, 57, 118, 49, 13, 55, 0, 97, 109, 115, 101, 115, 115,
+			105, 111, 110, 3, 72, 57, 117, 12, 65, 89, 6, 36, 91, 57, 13, 50, 0, 4, 1, 105, 102, 2, 105, 3, 75, 0, 1, 110, 105, 110,
+			2, 97, 0, 2, 97, 119, 0, 2, 97, 122, 122, 0, 2, 101, 110, 107, 105, 110, 115, 0, 2, 101, 110, 110, 105, 102, 101, 114, 0, 2,
+			111, 98, 0, 2, 117, 105, 99, 101, 0, 2, 117, 110, 103, 108, 0, 2, 117, 110, 107, 0, 8, 2, 101, 102, 102, 0, 4, 101, 97, 110,
+			3, 75, 37, 12, 50, 0, 101, 97, 110, 110, 101, 0, 101, 101, 112, 3, 75, 37, 71, 0, 117, 107, 101, 2, 98, 111, 107, 115, 3, 75,
+			40, 12, 49, 0, 4, 101, 119, 101, 108, 3, 75, 40, 12, 55, 0, 111, 117, 108, 101, 0, 111, 104, 110, 3, 75, 108, 50, 0, 117, 110,
+			99, 116, 105, 111, 110, 3, 75, 108, 50, 49, 91, 13, 50, 0, 111, 121, 3, 75, 108, 57, 0, 111, 105, 110, 116, 3, 75, 108, 57, 50,
+			47, 0, 111, 2, 99, 107, 101, 121, 3, 75, 109, 0, 111, 104, 110, 110, 121, 3, 75, 109, 50, 37, 0, 117, 110, 107, 105, 101, 3, 75,
+			109, 50, 49, 37, 0, 111, 115, 104, 8, 3, 75, 109, 91, 0, 105, 116, 116, 101, 114, 98, 117, 103, 3, 75, 111, 72, 109, 71, 109, 81,
+			0, 105, 104, 97, 100, 3, 75, 111, 107, 6, 118, 47, 0, 4, 105, 8, 2, 109, 32, 3, 75, 113, 0, 105, 8, 2, 109, 115, 32, 0,
+			105, 108, 108, 8, 3, 75, 113, 55, 0, 4, 105, 109, 109, 105, 101, 3, 75, 113, 65, 37, 0, 105, 109, 109, 121, 0, 101, 114, 114, 121,
+			3, 75, 114, 34, 37, 0, 105, 110, 103, 108, 101, 3, 75, 114, 50, 81, 112, 55, 0, 4, 101, 1, 97, 109, 114, 105, 102, 2, 116, 3,
+			75, 115, 0, 101, 1, 111, 98, 109, 117, 106, 2, 116, 0, 101, 8, 2, 116, 0, 97, 121, 3, 75, 115, 57, 0, 97, 107, 101, 8, 3,
+			75, 115, 57, 49, 0, 97, 110, 101, 121, 3, 75, 115, 57, 50, 37, 0, 97, 109, 101, 115, 111, 110, 8, 3, 75, 115, 57, 65, 14, 89,
+			112, 50, 0, 97, 109, 105, 101, 3, 75, 115, 57, 65, 37, 0, 97, 109, 101, 115, 8, 3, 75, 115, 57, 65, 89, 0, 101, 107, 121, 108,
+			108, 3, 75, 116, 49, 14, 55, 0, 4, 101, 110, 110, 105, 101, 3, 75, 116, 50, 37, 0, 101, 110, 110, 121, 0, 101, 115, 115, 3, 75,
+			116, 89, 0, 4, 101, 115, 115, 101, 3, 75, 116, 89, 111, 0, 101, 115, 115, 105, 101, 0, 97, 2, 99, 107, 3, 75, 117, 0, 97, 2,
+			109, 97, 108, 3, 75, 118, 0, 97, 99, 107, 105, 101, 3, 75, 118, 49, 37, 0, 97, 114, 118, 105, 115, 8, 3, 75, 121, 12, 84, 36,
+			89, 0, 97, 109, 98, 97, 108, 97, 121, 97, 3, 75, 122, 65, 71, 118, 55, 6, 136, 117, 0, 4, 111, 97, 111, 8, 3, 75, 122, 124,
+			0, 111, 195, 163, 111, 8, 0, 111, 108, 101, 110, 101, 8, 3, 75, 125, 58, 55, 6, 37, 12, 50, 0, 111, 101, 3, 75, 127, 58, 0,
+			111, 110, 101, 115, 3, 75, 127, 58, 50, 89, 0, 4, 101, 114, 115, 101, 121, 8, 2, 32, 3, 75, 132, 12, 89, 37, 0, 101, 114, 115,
+			101, 121, 8, 2, 115, 32, 0, 111, 107, 101, 3, 75, 132, 58, 49, 0, 101, 1, 114, 101, 112, 2, 116, 3, 89, 90, 115, 0, 97, 99,
+			113, 117, 101, 115, 3, 90, 35, 49, 0, 4, 1, 110, 101, 2, 97, 109, 98, 101, 3, 91, 0, 1, 111, 114, 2, 101, 107, 116, 0, 2,
+			97, 115, 109, 105, 110, 0, 2, 111, 110, 103, 108, 0, 2, 111, 117, 114, 110, 97, 108, 0, 1, 97, 2, 111, 117, 3, 91, 6, 0, 101,
+			114, 111, 109, 101, 3, 91, 36, 34, 6, 39, 65, 0, 97, 110, 101, 105, 114, 111, 3, 91, 36, 50, 6, 115, 34, 39, 0, 97, 117, 98,
+			101, 114, 116, 3, 91, 39, 71, 6, 115, 34, 0, 117, 97, 110, 8, 3, 91, 40, 6, 122, 68, 0, 101, 116, 111, 110, 3, 91, 57, 36,
+			47, 6, 108, 68, 0, 97, 114, 100, 105, 110, 105, 101, 114, 101, 3, 91, 57, 121, 34, 72, 37, 50, 57, 6, 115, 12, 34, 0, 97, 114,
+			103, 111, 110, 3, 91, 57, 121, 34, 81, 6, 108, 68, 0, 101, 97, 2, 110, 101, 116, 116, 101, 3, 91, 117, 6, 0, 101, 97, 110, 111,
+			116, 3, 91, 117, 50, 6, 39, 0, 97, 108, 111, 117, 115, 105, 8, 3, 91, 117, 55, 40, 89, 6, 37, 0, 97, 108, 111, 117, 115, 105,
+			1, 21, 3, 91, 117, 55, 40, 89, 37, 0, 97, 109, 97, 105, 99, 97, 3, 91, 117, 65, 6, 136, 49, 117, 0, 117, 103, 101, 114, 101,
+			3, 91, 129, 91, 6, 36, 108, 0, 1, 97, 118, 97, 110, 2, 111, 3, 107, 0, 7, 6, 107, 0, 4, 1, 101, 112, 115, 2, 116, 97,
+			107, 107, 3, 0, 1, 101, 112, 115, 2, 116, 97, 107, 108, 3, 0, 4, 8, 101, 112, 115, 2, 116, 97, 107, 107, 3, 6, 0, 8, 101,
+			112, 115, 2, 116, 97, 107, 108, 0, 4, 3, 49, 0, 1, 10, 0, 2, 114, 105, 103, 0, 2, 114, 195, 166, 110, 107, 12, 0, 107, 0,
+			4, 114, 121, 115, 97, 110, 116, 101, 109, 117, 109, 3, 49, 34, 131, 89, 6, 117, 50, 47, 14, 65, 125, 65, 0, 114, 121, 115, 97, 110,
+			116, 101, 109, 117, 109, 109, 0, 97, 107, 101, 114, 108, 97, 2, 107, 3, 49, 35, 49, 14, 55, 6, 35, 0, 97, 110, 116, 101, 114, 101,
+			108, 3, 49, 35, 50, 47, 14, 34, 6, 119, 55, 0, 105, 100, 1, 32, 101, 104, 116, 3, 49, 36, 72, 0, 101, 105, 116, 104, 3, 49,
+			37, 12, 87, 0, 105, 108, 105, 109, 97, 110, 106, 97, 114, 111, 3, 49, 37, 55, 37, 65, 117, 50, 75, 6, 121, 34, 39, 0, 108, 111,
+			115, 2, 32, 104, 111, 108, 100, 3, 49, 55, 108, 89, 0, 118, 97, 114, 116, 101, 114, 1, 10, 3, 49, 84, 35, 34, 47, 36, 34, 0,
+			111, 110, 116, 105, 110, 117, 117, 109, 3, 49, 108, 50, 47, 6, 37, 50, 40, 125, 65, 0, 117, 109, 113, 117, 97, 116, 3, 49, 108, 65,
+			49, 58, 108, 72, 0, 4, 97, 116, 101, 8, 2, 32, 3, 49, 115, 57, 47, 0, 97, 116, 101, 8, 2, 115, 32, 0, 97, 114, 97, 111,
+			107, 101, 3, 49, 117, 34, 117, 6, 39, 40, 49, 37, 0, 101, 114, 109, 105, 116, 8, 3, 49, 132, 12, 65, 36, 47, 0, 110, 111, 99,
+			107, 3, 50, 108, 49, 0, 110, 111, 120, 3, 50, 108, 81, 89, 0, 110, 105, 103, 104, 116, 3, 50, 121, 57, 47, 0, 1, 115, 2, 114,
+			3, 81, 0, 7, 6, 108, 0, 4, 101, 1, 102, 102, 105, 107, 115, 3, 14, 55, 0, 101, 8, 112, 114, 97, 109, 0, 4, 3, 55, 0,
+			100, 1, 10, 2, 101, 114, 0, 100, 1, 111, 98, 2, 103, 97, 100, 101, 0, 108, 0, 118, 1, 111, 116, 0, 118, 1, 184, 195, 115, 0,
+			118, 8, 101, 115, 0, 101, 111, 100, 1, 32, 99, 97, 109, 3, 55, 6, 35, 58, 72, 0, 101, 101, 1, 114, 97, 109, 2, 110, 3, 55,
+			6, 37, 12, 0, 4, 111, 103, 1, 10, 2, 28, 33, 3, 55, 6, 39, 0, 111, 103, 1, 10, 2, 105, 115, 107, 28, 33, 0, 4, 101,
+			116, 1, 10, 2, 116, 28, 33, 3, 55, 6, 116, 0, 101, 116, 1, 111, 105, 114, 98, 97, 99, 0, 4, 101, 116, 1, 10, 2, 28, 33,
+			3, 55, 6, 116, 47, 0, 101, 116, 116, 1, 10, 2, 28, 33, 0, 101, 103, 2, 117, 109, 109, 105, 3, 55, 14, 81, 0, 4, 101, 116,
+			8, 105, 116, 115, 32, 101, 100, 118, 97, 104, 2, 32, 3, 55, 14, 86, 0, 101, 116, 8, 105, 116, 115, 32, 114, 97, 104, 2, 32, 0,
+			101, 116, 8, 105, 116, 115, 32, 114, 97, 118, 2, 32, 0, 101, 116, 8, 105, 116, 115, 32, 114, 101, 2, 32, 0, 111, 117, 110, 103, 101,
+			3, 55, 35, 58, 50, 75, 0, 105, 110, 99, 111, 108, 110, 3, 55, 36, 50, 49, 108, 59, 50, 0, 105, 116, 116, 108, 101, 3, 55, 36,
+			72, 14, 55, 0, 105, 118, 105, 110, 103, 115, 116, 111, 110, 101, 3, 55, 36, 84, 36, 68, 89, 47, 4, 112, 12, 58, 50, 0, 101, 121,
+			3, 55, 37, 0, 4, 101, 101, 8, 2, 32, 3, 55, 37, 12, 0, 101, 101, 8, 2, 115, 32, 0, 101, 101, 100, 8, 2, 115, 3, 55,
+			37, 12, 72, 0, 108, 97, 114, 100, 1, 105, 98, 3, 55, 37, 35, 34, 72, 0, 105, 109, 111, 103, 101, 115, 3, 55, 37, 65, 6, 39,
+			12, 90, 0, 97, 117, 116, 114, 101, 99, 3, 55, 39, 47, 34, 6, 115, 49, 0, 111, 103, 1, 10, 2, 105, 28, 33, 3, 55, 39, 81,
+			6, 0, 4, 103, 1, 101, 104, 2, 101, 3, 55, 57, 0, 108, 105, 1, 97, 2, 101, 114, 0, 108, 101, 110, 100, 101, 8, 97, 3, 55,
+			57, 6, 115, 50, 72, 14, 0, 4, 100, 1, 111, 98, 3, 55, 72, 0, 100, 1, 111, 115, 2, 97, 116, 0, 118, 101, 1, 101, 115, 3,
+			55, 84, 14, 0, 117, 99, 107, 121, 3, 55, 108, 49, 37, 0, 108, 111, 121, 100, 3, 55, 108, 57, 72, 0, 111, 110, 103, 2, 32, 105,
+			115, 108, 97, 110, 100, 3, 55, 108, 68, 0, 117, 100, 108, 111, 119, 3, 55, 108, 72, 55, 39, 58, 0, 105, 122, 122, 105, 101, 3, 55,
+			111, 89, 111, 0, 4, 101, 116, 1, 105, 102, 101, 98, 98, 117, 114, 107, 115, 3, 55, 114, 0, 101, 116, 1, 105, 102, 101, 103, 110, 105,
+			108, 108, 121, 107, 0, 101, 116, 1, 105, 102, 101, 103, 110, 117, 116, 184, 195, 115, 0, 101, 116, 1, 105, 102, 101, 107, 115, 105, 102, 0,
+			101, 116, 1, 105, 102, 101, 109, 109, 97, 108, 0, 101, 116, 1, 105, 102, 101, 110, 105, 118, 115, 0, 101, 116, 1, 105, 102, 101, 114, 121,
+			100, 0, 101, 116, 1, 105, 102, 101, 115, 107, 111, 0, 101, 116, 1, 105, 102, 101, 116, 114, 111, 106, 104, 0, 101, 116, 1, 105, 102, 101,
+			116, 115, 101, 104, 0, 101, 116, 1, 105, 102, 101, 116, 116, 166, 195, 112, 115, 0, 101, 116, 1, 105, 102, 115, 103, 101, 116, 115, 0, 101,
+			103, 101, 2, 114, 105, 110, 103, 3, 55, 114, 81, 6, 114, 0, 4, 195, 166, 103, 1, 107, 3, 55, 115, 57, 0, 195, 166, 103, 2, 112,
+			114, 195, 166, 100, 0, 101, 103, 101, 109, 2, 17, 67, 3, 55, 115, 57, 14, 65, 0, 97, 107, 101, 8, 2, 32, 3, 55, 115, 57, 49,
+			0, 97, 98, 111, 117, 114, 3, 55, 115, 57, 71, 108, 0, 4, 97, 100, 121, 1, 110, 114, 101, 106, 3, 55, 115, 57, 72, 37, 0, 97,
+			100, 121, 8, 0, 4, 101, 103, 8, 111, 3, 55, 115, 81, 0, 195, 166, 103, 2, 110, 105, 110, 103, 0, 101, 105, 99, 101, 115, 116, 101,
+			114, 3, 55, 115, 89, 47, 108, 0, 195, 166, 103, 103, 2, 101, 3, 55, 116, 81, 0, 101, 97, 118, 101, 110, 119, 111, 114, 116, 104, 3,
+			55, 116, 84, 14, 50, 58, 132, 12, 87, 0, 97, 100, 121, 115, 1, 103, 3, 55, 117, 72, 37, 89, 0, 97, 114, 114, 121, 3, 55, 118,
+			16, 37, 0, 101, 103, 1, 98, 2, 21, 3, 55, 122, 57, 0, 111, 114, 114, 97, 105, 110, 101, 3, 55, 124, 51, 115, 12, 50, 0, 111,
+			116, 105, 111, 110, 3, 55, 128, 58, 91, 57, 14, 50, 0, 101, 103, 2, 32, 3, 55, 136, 0, 105, 111, 110, 101, 108, 8, 3, 55, 136,
+			14, 50, 115, 55, 0, 101, 103, 101, 114, 2, 32, 3, 55, 136, 108, 0, 7, 6, 109, 0, 97, 105, 108, 1, 32, 101, 3, 2, 65, 115,
+			57, 55, 0, 97, 110, 100, 1, 114, 117, 111, 103, 3, 2, 65, 121, 68, 0, 4, 97, 100, 101, 114, 111, 3, 21, 101, 115, 0, 105, 103,
+			117, 101, 108, 0, 111, 110, 116, 112, 101, 108, 108, 105, 101, 114, 3, 21, 102, 114, 0, 4, 3, 65, 0, 109, 0, 97, 110, 100, 8, 114,
+			117, 111, 103, 3, 65, 7, 121, 68, 0, 109, 1, 111, 2, 195, 184, 98, 108, 101, 3, 65, 15, 65, 0, 109, 105, 103, 101, 106, 1, 101,
+			108, 103, 114, 111, 102, 3, 65, 15, 65, 121, 57, 11, 121, 57, 0, 97, 107, 97, 114, 111, 110, 105, 3, 65, 19, 35, 49, 14, 34, 6,
+			109, 50, 111, 0, 97, 114, 115, 101, 105, 108, 108, 101, 3, 65, 35, 51, 89, 6, 115, 12, 57, 0, 111, 117, 115, 101, 8, 3, 65, 35,
+			58, 89, 0, 101, 114, 101, 8, 2, 32, 3, 65, 36, 34, 0, 105, 108, 107, 115, 104, 97, 107, 101, 3, 65, 36, 55, 49, 91, 115, 57,
+			49, 0, 101, 100, 101, 97, 8, 3, 65, 36, 72, 6, 115, 12, 117, 0, 105, 99, 104, 101, 108, 108, 101, 3, 65, 37, 91, 6, 115, 55,
+			0, 97, 117, 114, 105, 99, 101, 3, 65, 39, 34, 6, 37, 89, 0, 97, 117, 112, 97, 115, 115, 97, 110, 116, 3, 65, 39, 48, 117, 89,
+			6, 121, 68, 0, 117, 115, 107, 101, 116, 101, 114, 3, 65, 40, 89, 81, 36, 47, 6, 36, 34, 0, 117, 115, 105, 99, 97, 108, 3, 65,
+			57, 40, 12, 89, 37, 49, 112, 55, 0, 4, 109, 1, 101, 108, 108, 101, 109, 3, 65, 65, 0, 109, 2, 97, 115, 115, 97, 103, 101, 0,
+			112, 115, 111, 110, 3, 65, 89, 108, 50, 0, 117, 114, 114, 97, 121, 3, 65, 108, 34, 37, 0, 111, 110, 114, 111, 101, 3, 65, 108, 50,
+			34, 6, 125, 58, 0, 111, 110, 101, 121, 3, 65, 108, 50, 37, 0, 111, 110, 116, 103, 111, 109, 101, 114, 121, 3, 65, 108, 50, 72, 81,
+			6, 108, 65, 34, 37, 0, 111, 108, 121, 110, 101, 117, 120, 3, 65, 108, 55, 37, 50, 57, 40, 12, 0, 117, 112, 112, 101, 116, 8, 3,
+			65, 109, 48, 114, 47, 0, 111, 116, 104, 101, 114, 3, 65, 109, 86, 109, 0, 105, 108, 119, 97, 117, 107, 101, 101, 3, 65, 113, 55, 58,
+			6, 125, 49, 37, 0, 105, 100, 110, 105, 103, 104, 116, 3, 65, 114, 72, 50, 136, 47, 0, 97, 107, 101, 117, 2, 112, 3, 65, 115, 57,
+			49, 6, 108, 0, 97, 105, 110, 101, 8, 3, 65, 115, 57, 50, 0, 97, 105, 108, 3, 65, 115, 57, 55, 0, 97, 121, 100, 97, 121, 3,
+			65, 115, 57, 72, 115, 12, 57, 0, 101, 108, 98, 111, 117, 114, 110, 101, 3, 65, 115, 59, 71, 132, 50, 0, 97, 114, 105, 108, 121, 110,
+			3, 65, 117, 34, 37, 55, 36, 50, 0, 97, 116, 105, 108, 100, 8, 3, 65, 117, 47, 6, 37, 55, 72, 0, 97, 116, 105, 110, 101, 3,
+			65, 117, 47, 37, 50, 6, 36, 0, 99, 8, 2, 17, 67, 21, 3, 65, 117, 49, 0, 97, 110, 110, 101, 113, 117, 105, 110, 8, 3, 65,
+			117, 50, 14, 49, 6, 115, 68, 0, 97, 110, 110, 101, 113, 117, 105, 110, 3, 65, 117, 50, 14, 49, 115, 68, 0, 97, 100, 97, 103, 97,
+			115, 107, 97, 114, 3, 65, 117, 72, 117, 81, 6, 117, 89, 49, 117, 0, 97, 116, 116, 104, 101, 119, 3, 65, 117, 87, 57, 40, 0, 97,
+			99, 104, 101, 116, 101, 3, 65, 117, 91, 6, 115, 72, 0, 97, 110, 97, 103, 101, 114, 3, 65, 118, 50, 114, 75, 109, 0, 97, 115, 115,
+			97, 99, 104, 117, 115, 101, 116, 116, 115, 3, 65, 118, 89, 118, 47, 57, 6, 40, 89, 116, 47, 89, 0, 97, 104, 111, 103, 110, 105, 3,
+			65, 118, 107, 6, 39, 50, 37, 0, 101, 103, 101, 116, 8, 2, 32, 3, 65, 121, 12, 14, 86, 0, 101, 103, 101, 110, 8, 2, 32, 3,
+			65, 121, 57, 14, 50, 0, 97, 114, 106, 111, 114, 105, 101, 3, 65, 121, 75, 125, 34, 37, 0, 111, 117, 108, 105, 110, 3, 65, 123, 55,
+			6, 118, 68, 0, 111, 110, 116, 114, 101, 3, 65, 125, 12, 50, 47, 34, 108, 0, 97, 108, 116, 1, 32, 101, 108, 103, 110, 105, 115, 3,
+			65, 125, 55, 47, 0, 117, 114, 100, 111, 99, 104, 3, 65, 132, 72, 108, 49, 0, 117, 114, 112, 104, 3, 65, 132, 83, 0, 4, 117, 114,
+			112, 104, 101, 121, 3, 65, 132, 83, 37, 0, 117, 114, 112, 104, 121, 0, 105, 97, 109, 105, 3, 65, 136, 6, 117, 65, 37, 0, 4, 105,
+			107, 101, 8, 2, 32, 3, 65, 136, 49, 0, 105, 107, 101, 8, 2, 115, 32, 0, 7, 6, 110, 0, 95, 1, 97, 107, 3, 0, 105, 1,
+			10, 2, 28, 33, 12, 12, 12, 3, 6, 50, 111, 0, 105, 1, 110, 10, 2, 28, 33, 12, 12, 3, 6, 111, 0, 4, 1, 10, 2, 101,
+			114, 28, 33, 12, 3, 8, 50, 0, 1, 10, 2, 105, 115, 116, 97, 110, 28, 33, 0, 1, 10, 2, 115, 107, 28, 33, 0, 105, 101, 110,
+			1, 21, 3, 8, 50, 57, 14, 50, 0, 105, 101, 114, 1, 21, 3, 8, 50, 57, 108, 0, 4, 105, 1, 10, 2, 115, 107, 28, 33, 12,
+			3, 8, 50, 111, 0, 105, 1, 97, 109, 2, 111, 12, 0, 105, 1, 105, 107, 105, 98, 2, 12, 12, 0, 105, 107, 97, 8, 111, 109, 114,
+			97, 104, 3, 8, 50, 111, 49, 118, 0, 105, 103, 104, 116, 105, 110, 103, 97, 108, 101, 3, 21, 0, 4, 3, 50, 0, 1, 97, 2, 107,
+			108, 97, 103, 101, 0, 1, 97, 2, 107, 111, 109, 0, 1, 97, 114, 103, 0, 1, 101, 103, 2, 107, 0, 1, 101, 103, 114, 111, 109, 0,
+			1, 166, 195, 114, 107, 2, 107, 101, 0, 110, 1, 17, 65, 0, 110, 1, 111, 115, 166, 195, 114, 0, 101, 103, 108, 105, 103, 101, 3, 50,
+			36, 81, 55, 37, 91, 6, 36, 0, 101, 105, 108, 3, 50, 37, 12, 55, 0, 105, 101, 110, 1, 111, 109, 21, 3, 50, 37, 14, 50, 0,
+			105, 99, 111, 108, 101, 8, 3, 50, 37, 49, 6, 108, 55, 0, 105, 99, 111, 108, 8, 2, 101, 116, 116, 101, 3, 50, 37, 49, 39, 55,
+			0, 111, 117, 103, 97, 116, 3, 50, 40, 81, 117, 0, 107, 2, 116, 105, 111, 3, 50, 49, 0, 107, 97, 116, 104, 97, 1, 105, 3, 50,
+			49, 6, 118, 47, 118, 0, 110, 2, 101, 100, 103, 97, 110, 103, 3, 50, 50, 0, 101, 119, 116, 111, 110, 3, 50, 57, 6, 40, 12, 47,
+			14, 50, 0, 101, 119, 3, 50, 57, 40, 0, 101, 119, 122, 101, 97, 108, 97, 110, 100, 3, 50, 57, 40, 89, 6, 36, 55, 117, 50, 0,
+			111, 114, 119, 105, 99, 104, 8, 3, 50, 108, 34, 37, 76, 0, 111, 115, 116, 114, 97, 100, 97, 109, 117, 115, 3, 50, 108, 89, 47, 34,
+			121, 72, 6, 117, 65, 40, 89, 0, 101, 108, 108, 105, 101, 8, 3, 50, 115, 55, 37, 0, 101, 118, 105, 108, 108, 101, 8, 3, 50, 115,
+			84, 36, 59, 0, 97, 103, 8, 2, 32, 3, 50, 117, 12, 57, 0, 97, 105, 118, 1, 21, 3, 50, 117, 37, 84, 0, 97, 105, 118, 8,
+			3, 50, 118, 6, 111, 58, 0, 121, 108, 111, 110, 3, 50, 121, 57, 55, 108, 50, 0, 111, 114, 101, 101, 110, 8, 3, 50, 125, 58, 34,
+			6, 37, 12, 50, 0, 105, 97, 103, 97, 114, 97, 8, 3, 50, 136, 6, 117, 81, 112, 34, 35, 0, 105, 103, 104, 116, 101, 110, 103, 97,
+			108, 101, 8, 3, 50, 136, 47, 14, 50, 81, 115, 57, 55, 0, 105, 103, 101, 108, 8, 3, 50, 136, 75, 112, 55, 0, 4, 1, 111, 107,
+			2, 107, 3, 68, 0, 107, 2, 116, 0, 7, 6, 111, 0, 1, 108, 32, 107, 97, 114, 116, 2, 100, 3, 0, 4, 109, 109, 101, 8, 112,
+			2, 32, 3, 2, 109, 65, 0, 109, 109, 101, 115, 8, 112, 2, 32, 0, 4, 1, 112, 2, 115, 116, 101, 106, 12, 3, 2, 124, 0, 2,
+			107, 116, 111, 98, 0, 1, 114, 116, 110, 111, 107, 2, 108, 108, 101, 114, 3, 2, 126, 0, 4, 1, 98, 109, 97, 99, 2, 100, 106, 3,
+			6, 39, 0, 1, 103, 110, 97, 2, 108, 97, 0, 1, 105, 100, 2, 100, 101, 0, 1, 105, 118, 97, 114, 2, 108, 105, 0, 1, 107, 97,
+			108, 2, 116, 97, 0, 1, 108, 97, 104, 115, 2, 109, 0, 1, 109, 97, 115, 2, 97, 0, 1, 109, 109, 111, 107, 2, 100, 101, 0, 1,
+			112, 101, 2, 107, 101, 0, 1, 114, 116, 115, 105, 98, 0, 1, 121, 107, 2, 116, 111, 0, 8, 100, 107, 101, 110, 97, 2, 116, 0, 8,
+			103, 97, 112, 2, 100, 101, 0, 8, 105, 114, 101, 112, 2, 100, 101, 0, 8, 106, 117, 107, 2, 110, 0, 8, 107, 105, 108, 105, 115, 2,
+			110, 101, 0, 8, 108, 105, 116, 110, 97, 2, 112, 101, 0, 8, 109, 97, 114, 2, 110, 97, 0, 8, 109, 101, 110, 97, 2, 110, 101, 0,
+			8, 110, 103, 105, 115, 2, 114, 0, 8, 114, 101, 99, 105, 99, 2, 110, 101, 0, 8, 114, 101, 112, 97, 104, 99, 2, 110, 101, 0, 8,
+			114, 116, 97, 109, 2, 110, 101, 0, 8, 114, 116, 107, 101, 108, 101, 2, 100, 101, 0, 8, 114, 117, 101, 2, 112, 97, 0, 8, 115, 105,
+			112, 101, 2, 100, 101, 0, 8, 116, 97, 107, 2, 100, 101, 0, 8, 116, 101, 99, 97, 2, 110, 101, 0, 8, 116, 101, 109, 2, 100, 101,
+			0, 8, 116, 115, 117, 107, 2, 100, 101, 0, 8, 122, 97, 109, 97, 2, 110, 101, 0, 8, 122, 108, 97, 99, 2, 110, 101, 0, 116, 1,
+			100, 114, 97, 98, 0, 116, 1, 107, 105, 114, 116, 0, 4, 1, 114, 101, 112, 112, 101, 112, 2, 110, 105, 3, 6, 39, 12, 0, 1, 116,
+			105, 108, 2, 116, 101, 0, 1, 122, 105, 114, 97, 2, 110, 97, 0, 114, 101, 1, 114, 117, 102, 3, 6, 39, 12, 108, 0, 110, 100, 1,
+			107, 101, 115, 2, 108, 195, 184, 106, 116, 110, 97, 110, 116, 3, 6, 39, 50, 72, 0, 4, 108, 1, 104, 10, 2, 105, 28, 33, 12, 3,
+			6, 39, 55, 0, 108, 1, 114, 116, 10, 2, 101, 28, 33, 0, 108, 1, 115, 10, 2, 18, 69, 28, 33, 12, 0, 102, 101, 1, 114, 116,
+			115, 97, 116, 97, 107, 3, 6, 39, 83, 14, 0, 102, 101, 114, 1, 114, 116, 115, 97, 116, 97, 107, 3, 6, 39, 83, 108, 0, 115, 101,
+			1, 10, 2, 28, 33, 12, 3, 6, 39, 89, 14, 0, 115, 101, 43, 1, 10, 2, 114, 28, 33, 3, 6, 39, 89, 108, 0, 4, 111, 1,
+			122, 97, 107, 3, 6, 40, 0, 117, 1, 108, 101, 118, 2, 114, 0, 117, 116, 1, 103, 97, 114, 0, 4, 111, 1, 122, 97, 98, 3, 6,
+			40, 12, 0, 117, 1, 115, 115, 105, 109, 2, 114, 105, 0, 117, 105, 108, 108, 101, 1, 116, 97, 116, 97, 114, 3, 6, 40, 12, 57, 0,
+			117, 110, 1, 104, 108, 97, 99, 3, 6, 40, 50, 0, 105, 114, 101, 1, 116, 114, 101, 112, 101, 114, 3, 6, 58, 121, 12, 0, 4, 1,
+			103, 110, 111, 103, 2, 110, 103, 3, 6, 108, 0, 1, 107, 111, 114, 2, 107, 111, 0, 1, 112, 109, 111, 107, 2, 115, 116, 0, 1, 114,
+			111, 116, 2, 110, 116, 111, 0, 108, 100, 101, 1, 115, 105, 3, 6, 108, 55, 72, 14, 0, 121, 2, 12, 3, 6, 108, 57, 0, 4, 1,
+			98, 111, 114, 2, 116, 12, 12, 3, 6, 109, 0, 1, 100, 97, 114, 97, 112, 2, 107, 115, 0, 1, 100, 97, 114, 98, 97, 108, 2, 114,
+			0, 1, 100, 111, 116, 114, 111, 2, 107, 115, 0, 1, 103, 97, 102, 2, 116, 0, 1, 104, 99, 97, 107, 2, 116, 0, 1, 104, 110, 114,
+			111, 98, 2, 108, 109, 0, 1, 107, 115, 105, 116, 114, 97, 2, 107, 0, 1, 108, 97, 103, 2, 17, 67, 0, 1, 108, 97, 107, 2, 116,
+			0, 1, 108, 117, 2, 118, 0, 1, 109, 97, 2, 107, 0, 1, 110, 111, 109, 2, 107, 0, 1, 112, 97, 2, 108, 108, 111, 12, 12, 0,
+			1, 114, 116, 115, 101, 114, 101, 112, 2, 106, 107, 97, 0, 1, 115, 105, 114, 2, 116, 116, 111, 0, 1, 115, 111, 108, 105, 102, 2, 102,
+			32, 0, 8, 107, 115, 97, 109, 2, 116, 0, 8, 107, 117, 104, 2, 109, 109, 101, 0, 8, 108, 101, 107, 115, 97, 107, 2, 116, 0, 8,
+			108, 111, 107, 2, 115, 0, 8, 108, 112, 109, 111, 107, 2, 116, 0, 8, 112, 115, 101, 114, 2, 110, 115, 0, 8, 115, 105, 114, 111, 104,
+			2, 110, 0, 8, 116, 114, 97, 107, 2, 102, 0, 8, 118, 101, 114, 2, 108, 118, 0, 108, 1, 114, 116, 10, 2, 108, 101, 110, 28, 33,
+			0, 112, 116, 101, 114, 1, 107, 105, 108, 101, 104, 3, 6, 109, 48, 47, 108, 0, 103, 1, 107, 110, 105, 2, 110, 105, 116, 111, 3, 6,
+			109, 49, 0, 99, 99, 104, 105, 111, 1, 110, 105, 112, 3, 6, 109, 49, 57, 124, 0, 110, 100, 1, 107, 111, 112, 121, 104, 2, 101, 114,
+			3, 6, 109, 50, 72, 0, 4, 108, 1, 104, 10, 2, 28, 33, 12, 3, 6, 109, 55, 0, 108, 1, 107, 111, 10, 2, 28, 33, 12, 0,
+			108, 1, 114, 116, 10, 2, 28, 33, 12, 0, 108, 1, 115, 10, 2, 28, 33, 12, 0, 108, 1, 116, 10, 2, 28, 33, 12, 0, 106, 1,
+			118, 110, 111, 107, 3, 6, 109, 57, 0, 105, 97, 8, 110, 97, 114, 97, 112, 3, 6, 109, 57, 117, 0, 4, 103, 110, 101, 1, 99, 115,
+			97, 103, 3, 6, 109, 68, 57, 14, 0, 103, 110, 101, 1, 116, 115, 97, 98, 0, 4, 117, 116, 8, 101, 109, 105, 116, 3, 6, 121, 58,
+			72, 0, 117, 116, 8, 107, 99, 97, 108, 98, 0, 117, 116, 8, 107, 99, 111, 108, 0, 117, 116, 8, 107, 99, 111, 110, 107, 0, 117, 116,
+			8, 107, 114, 111, 119, 0, 117, 116, 8, 121, 97, 108, 0, 4, 1, 21, 2, 108, 115, 107, 3, 6, 124, 0, 1, 99, 101, 100, 32, 116,
+			114, 97, 0, 1, 100, 97, 116, 97, 109, 2, 114, 0, 1, 100, 105, 114, 114, 111, 107, 2, 114, 0, 1, 101, 108, 99, 2, 112, 97, 116,
+			114, 97, 0, 1, 101, 116, 101, 109, 2, 114, 0, 1, 105, 98, 105, 116, 110, 97, 2, 116, 105, 107, 0, 1, 106, 97, 103, 2, 108, 0,
+			1, 107, 110, 97, 108, 101, 109, 2, 108, 115, 107, 0, 1, 108, 97, 2, 104, 97, 0, 1, 108, 101, 122, 2, 116, 0, 1, 108, 107, 121,
+			99, 2, 110, 0, 1, 108, 107, 121, 107, 2, 112, 0, 1, 108, 108, 97, 104, 0, 1, 109, 101, 109, 2, 114, 105, 97, 109, 0, 1, 112,
+			101, 100, 2, 116, 0, 1, 114, 97, 2, 109, 97, 0, 1, 114, 101, 2, 98, 0, 1, 116, 101, 98, 2, 110, 105, 110, 103, 0, 1, 116,
+			101, 114, 112, 2, 114, 105, 97, 0, 1, 116, 110, 111, 107, 2, 114, 0, 8, 100, 97, 116, 101, 109, 2, 110, 0, 8, 105, 100, 105, 2,
+			116, 0, 8, 105, 114, 112, 121, 99, 2, 116, 0, 8, 105, 114, 116, 97, 112, 2, 116, 0, 8, 106, 108, 97, 116, 97, 98, 2, 110, 0,
+			8, 106, 115, 110, 97, 2, 115, 0, 8, 107, 105, 114, 98, 97, 2, 115, 0, 8, 108, 105, 112, 2, 116, 0, 8, 109, 105, 2, 100, 0,
+			8, 109, 105, 107, 115, 101, 0, 8, 109, 114, 111, 109, 2, 110, 0, 8, 109, 166, 195, 100, 2, 110, 0, 8, 110, 97, 107, 2, 110, 0,
+			8, 110, 111, 107, 184, 195, 2, 109, 32, 0, 8, 112, 101, 100, 2, 116, 0, 8, 114, 101, 2, 116, 0, 8, 114, 116, 97, 109, 2, 115,
+			0, 8, 115, 111, 108, 105, 102, 2, 102, 105, 115, 107, 0, 8, 116, 97, 109, 166, 195, 104, 2, 109, 0, 8, 116, 111, 105, 98, 2, 112,
+			0, 8, 116, 111, 115, 105, 2, 112, 0, 108, 1, 114, 116, 10, 2, 108, 108, 101, 28, 33, 0, 116, 1, 108, 114, 101, 109, 0, 116, 105,
+			1, 107, 114, 97, 110, 2, 107, 3, 6, 124, 47, 111, 0, 4, 112, 1, 107, 115, 10, 2, 28, 33, 12, 12, 3, 6, 124, 48, 0, 112,
+			1, 114, 116, 10, 2, 28, 33, 12, 12, 0, 4, 108, 1, 10, 2, 28, 33, 12, 12, 3, 6, 124, 55, 0, 108, 1, 116, 110, 10, 2,
+			28, 33, 12, 0, 108, 1, 116, 115, 10, 2, 12, 28, 33, 0, 109, 1, 21, 2, 28, 33, 12, 12, 12, 3, 6, 124, 65, 0, 4, 114,
+			1, 102, 111, 114, 111, 108, 107, 2, 109, 3, 6, 125, 12, 0, 114, 1, 110, 98, 97, 2, 109, 0, 114, 1, 110, 101, 2, 109, 12, 0,
+			114, 8, 102, 101, 100, 2, 109, 0, 114, 8, 102, 101, 114, 2, 109, 0, 114, 8, 102, 105, 110, 117, 2, 109, 0, 114, 8, 102, 110, 111,
+			107, 2, 109, 0, 110, 100, 1, 98, 97, 103, 97, 118, 3, 6, 125, 50, 72, 0, 119, 1, 108, 98, 3, 6, 126, 58, 0, 114, 101, 114,
+			1, 115, 3, 7, 39, 12, 108, 0, 8, 2, 109, 17, 67, 3, 7, 109, 0, 103, 110, 1, 108, 117, 111, 98, 2, 101, 3, 7, 109, 68,
+			57, 0, 114, 1, 115, 3, 8, 109, 0, 1, 114, 116, 107, 101, 108, 101, 3, 8, 124, 0, 1, 107, 115, 2, 115, 118, 195, 166, 114, 116,
+			101, 3, 19, 124, 0, 115, 119, 97, 108, 100, 3, 21, 0, 98, 108, 105, 103, 101, 1, 32, 101, 115, 115, 101, 108, 98, 111, 110, 3, 21,
+			102, 114, 0, 4, 1, 18, 73, 2, 108, 12, 3, 39, 0, 1, 18, 75, 2, 18, 71, 114, 18, 76, 0, 1, 97, 109, 2, 12, 0, 1,
+			102, 2, 98, 0, 1, 103, 2, 100, 12, 0, 1, 104, 2, 115, 116, 101, 12, 12, 0, 1, 106, 115, 2, 102, 0, 1, 107, 2, 17, 67,
+			11, 18, 69, 12, 12, 0, 1, 107, 2, 100, 101, 12, 12, 0, 1, 107, 2, 109, 97, 0, 1, 107, 114, 97, 110, 0, 1, 108, 102, 2,
+			100, 101, 114, 0, 1, 109, 2, 100, 101, 12, 0, 1, 109, 114, 111, 102, 2, 100, 101, 0, 1, 114, 2, 115, 116, 12, 12, 0, 1, 114,
+			18, 73, 2, 116, 18, 69, 0, 1, 114, 98, 2, 100, 101, 114, 0, 2, 17, 67, 101, 12, 12, 0, 2, 17, 67, 105, 0, 2, 115, 18,
+			76, 0, 2, 115, 107, 111, 12, 0, 2, 116, 18, 76, 12, 12, 0, 8, 107, 2, 100, 12, 0, 101, 1, 17, 67, 2, 100, 101, 0, 105,
+			114, 101, 1, 109, 101, 109, 3, 39, 6, 121, 12, 0, 4, 1, 108, 2, 116, 117, 115, 3, 39, 12, 0, 1, 109, 115, 2, 107, 105, 110,
+			103, 0, 1, 115, 2, 102, 97, 0, 2, 116, 105, 115, 107, 0, 111, 1, 122, 0, 103, 101, 100, 1, 102, 3, 39, 12, 14, 86, 0, 100,
+			101, 114, 1, 109, 2, 21, 3, 39, 12, 86, 108, 0, 4, 101, 1, 107, 115, 2, 100, 101, 3, 39, 14, 0, 101, 1, 114, 116, 101, 98,
+			2, 100, 101, 0, 103, 101, 1, 110, 2, 110, 0, 118, 101, 100, 1, 104, 3, 39, 14, 86, 0, 114, 1, 107, 2, 107, 195, 165, 98, 101,
+			3, 39, 34, 0, 114, 111, 1, 108, 107, 2, 102, 111, 114, 109, 3, 39, 39, 0, 108, 108, 8, 114, 2, 105, 110, 103, 32, 115, 116, 111,
+			110, 101, 3, 39, 40, 55, 0, 4, 97, 109, 101, 115, 1, 115, 3, 39, 40, 65, 89, 0, 108, 109, 101, 115, 8, 104, 2, 32, 0, 104,
+			105, 111, 3, 39, 40, 107, 6, 136, 39, 0, 107, 111, 1, 103, 110, 105, 110, 101, 109, 2, 107, 3, 39, 49, 6, 109, 0, 107, 111, 110,
+			1, 107, 3, 39, 49, 6, 109, 68, 0, 108, 1, 100, 105, 21, 3, 39, 55, 0, 108, 105, 101, 116, 1, 103, 110, 111, 109, 3, 39, 55,
+			6, 37, 14, 86, 0, 4, 103, 1, 114, 112, 115, 3, 39, 58, 0, 103, 1, 116, 2, 116, 117, 114, 0, 103, 101, 114, 101, 1, 108, 107,
+			3, 39, 58, 108, 108, 0, 109, 109, 101, 114, 115, 1, 107, 2, 32, 3, 39, 65, 6, 116, 34, 89, 0, 4, 118, 1, 108, 2, 101, 12,
+			3, 39, 84, 0, 118, 1, 110, 2, 97, 12, 12, 0, 100, 101, 114, 1, 109, 110, 97, 3, 39, 86, 108, 0, 4, 115, 1, 114, 116, 2,
+			115, 97, 103, 12, 3, 39, 89, 0, 115, 1, 114, 116, 2, 115, 107, 114, 105, 102, 116, 12, 0, 4, 103, 1, 100, 2, 101, 3, 39, 91,
+			0, 115, 104, 1, 107, 2, 101, 114, 12, 0, 111, 103, 1, 17, 67, 3, 39, 108, 0, 111, 118, 110, 1, 114, 107, 105, 109, 3, 39, 109,
+			58, 50, 0, 105, 1, 116, 2, 108, 3, 39, 117, 0, 111, 114, 1, 107, 2, 100, 3, 39, 125, 12, 0, 4, 111, 1, 119, 3, 40, 0,
+			117, 1, 108, 0, 4, 111, 3, 40, 12, 0, 111, 1, 122, 2, 109, 0, 4, 111, 100, 1, 102, 3, 40, 12, 72, 0, 111, 100, 1, 104,
+			0, 111, 100, 111, 111, 1, 118, 3, 40, 12, 72, 123, 0, 111, 103, 101, 1, 114, 99, 115, 3, 40, 12, 75, 0, 117, 99, 104, 101, 1,
+			100, 3, 40, 12, 91, 0, 111, 107, 101, 1, 114, 98, 3, 40, 49, 0, 111, 110, 101, 1, 98, 3, 40, 50, 0, 111, 110, 97, 103, 104,
+			3, 40, 50, 117, 0, 111, 103, 108, 101, 1, 103, 3, 40, 81, 14, 55, 0, 4, 111, 103, 105, 101, 1, 98, 3, 40, 81, 37, 0, 111,
+			103, 105, 101, 1, 119, 0, 103, 110, 1, 108, 111, 99, 2, 101, 3, 55, 6, 109, 68, 57, 0, 105, 120, 1, 114, 99, 3, 58, 6, 35,
+			0, 105, 115, 1, 110, 97, 100, 3, 58, 6, 121, 0, 105, 110, 116, 1, 112, 2, 32, 3, 58, 115, 68, 0, 105, 110, 116, 101, 110, 101,
+			1, 112, 3, 58, 115, 68, 13, 50, 14, 0, 105, 110, 116, 101, 1, 112, 3, 58, 115, 68, 47, 14, 0, 105, 110, 116, 101, 114, 1, 112,
+			3, 58, 115, 68, 47, 108, 0, 121, 101, 114, 8, 102, 3, 58, 121, 57, 6, 36, 0, 121, 101, 114, 101, 110, 8, 102, 3, 58, 121, 57,
+			6, 36, 14, 50, 0, 121, 101, 114, 1, 102, 3, 58, 121, 57, 36, 0, 4, 1, 104, 2, 99, 107, 12, 3, 108, 0, 1, 116, 2, 103,
+			116, 12, 0, 8, 98, 2, 110, 110, 32, 0, 114, 1, 110, 111, 100, 0, 114, 1, 116, 2, 101, 110, 0, 114, 1, 116, 2, 110, 121, 0,
+			114, 1, 116, 111, 109, 0, 4, 111, 114, 1, 108, 102, 3, 108, 12, 0, 111, 114, 101, 1, 109, 0, 105, 108, 8, 2, 32, 3, 108, 12,
+			37, 59, 0, 105, 115, 1, 110, 105, 108, 108, 105, 3, 108, 12, 57, 0, 103, 1, 100, 108, 108, 117, 98, 3, 108, 12, 81, 0, 114, 1,
+			98, 2, 110, 104, 111, 108, 109, 3, 108, 34, 0, 114, 101, 103, 111, 110, 112, 105, 110, 101, 3, 108, 34, 36, 81, 108, 50, 15, 48, 136,
+			50, 0, 116, 101, 108, 101, 1, 107, 2, 116, 3, 108, 47, 14, 55, 6, 115, 0, 110, 110, 121, 1, 115, 3, 108, 50, 37, 0, 110, 116,
+			97, 110, 97, 1, 109, 3, 108, 50, 47, 6, 117, 50, 117, 0, 105, 1, 110, 97, 104, 3, 108, 57, 0, 105, 110, 116, 1, 112, 2, 101,
+			114, 101, 3, 108, 57, 50, 47, 0, 121, 99, 101, 1, 114, 3, 108, 57, 89, 0, 121, 101, 117, 114, 1, 118, 3, 108, 57, 132, 12, 34,
+			0, 110, 1, 110, 110, 97, 2, 99, 17, 65, 3, 108, 68, 0, 4, 111, 100, 1, 108, 98, 3, 108, 72, 0, 111, 100, 1, 108, 102, 0,
+			100, 121, 98, 117, 105, 108, 100, 101, 114, 1, 98, 3, 108, 72, 37, 71, 37, 55, 72, 108, 0, 100, 102, 97, 116, 104, 101, 114, 1, 103,
+			3, 108, 72, 83, 121, 86, 108, 0, 117, 103, 1, 100, 3, 108, 81, 0, 120, 102, 111, 114, 100, 3, 108, 81, 89, 83, 108, 12, 72, 0,
+			117, 103, 104, 3, 108, 83, 0, 100, 114, 101, 116, 1, 108, 2, 12, 3, 108, 86, 34, 119, 47, 0, 115, 107, 118, 97, 1, 109, 3, 108,
+			89, 49, 84, 6, 117, 0, 4, 1, 17, 67, 2, 17, 67, 11, 101, 116, 32, 12, 12, 3, 109, 0, 1, 17, 67, 2, 18, 66, 11, 12,
+			0, 1, 17, 67, 2, 18, 66, 12, 0, 1, 17, 67, 2, 18, 66, 116, 0, 1, 17, 67, 2, 18, 68, 11, 12, 0, 1, 17, 67, 2,
+			18, 74, 110, 0, 1, 17, 67, 2, 98, 98, 101, 114, 32, 12, 12, 0, 1, 17, 67, 2, 103, 103, 12, 0, 1, 17, 67, 2, 109, 0,
+			1, 17, 67, 2, 109, 18, 69, 0, 1, 17, 67, 2, 115, 17, 67, 18, 76, 12, 12, 0, 1, 17, 67, 102, 2, 116, 0, 1, 18, 66,
+			2, 109, 0, 1, 18, 67, 2, 18, 71, 11, 101, 12, 12, 0, 1, 18, 67, 2, 18, 71, 108, 101, 12, 0, 1, 18, 68, 2, 18, 74,
+			0, 1, 18, 71, 2, 116, 0, 1, 18, 73, 2, 102, 12, 12, 0, 1, 18, 73, 2, 108, 17, 67, 12, 0, 1, 18, 73, 2, 116, 116,
+			0, 1, 18, 75, 2, 110, 17, 67, 0, 1, 97, 17, 67, 2, 115, 0, 1, 98, 2, 18, 66, 18, 69, 0, 1, 98, 2, 115, 115, 0,
+			1, 99, 2, 99, 107, 0, 1, 100, 2, 103, 32, 12, 0, 1, 100, 2, 110, 97, 108, 100, 0, 1, 102, 2, 110, 116, 0, 1, 103, 2,
+			100, 116, 12, 0, 1, 103, 2, 116, 116, 101, 0, 1, 104, 2, 102, 0, 1, 104, 2, 108, 108, 97, 12, 0, 1, 104, 2, 110, 103, 0,
+			1, 104, 2, 115, 112, 105, 99, 101, 0, 1, 104, 99, 2, 107, 12, 0, 1, 104, 116, 2, 109, 97, 115, 32, 0, 1, 106, 2, 18, 66,
+			11, 18, 76, 0, 1, 106, 2, 98, 21, 0, 1, 106, 2, 114, 116, 0, 1, 107, 2, 98, 108, 105, 110, 103, 0, 1, 107, 2, 103, 116,
+			12, 0, 1, 107, 2, 110, 17, 67, 0, 1, 107, 2, 112, 97, 114, 0, 1, 107, 2, 115, 116, 32, 111, 103, 32, 108, 111, 103, 105, 0,
+			1, 107, 2, 115, 116, 98, 97, 114, 0, 1, 107, 2, 115, 116, 112, 108, 97, 110, 0, 1, 107, 2, 115, 116, 112, 114, 105, 115, 0, 1,
+			107, 2, 115, 116, 114, 195, 165, 100, 0, 1, 107, 2, 115, 116, 115, 107, 111, 108, 101, 0, 1, 107, 2, 115, 116, 116, 105, 108, 115, 107,
+			117, 100, 0, 1, 107, 2, 115, 116, 118, 97, 110, 101, 0, 1, 107, 32, 112, 97, 114, 107, 115, 2, 115, 116, 0, 1, 107, 101, 98, 2,
+			115, 116, 0, 1, 107, 101, 115, 108, 101, 104, 2, 115, 116, 0, 1, 107, 111, 114, 102, 2, 115, 116, 0, 1, 107, 115, 2, 100, 12, 0,
+			1, 107, 115, 2, 108, 108, 12, 12, 0, 1, 107, 115, 2, 116, 0, 1, 107, 115, 100, 101, 104, 100, 110, 117, 115, 2, 115, 116, 0, 1,
+			107, 115, 103, 97, 100, 114, 101, 118, 104, 2, 115, 116, 0, 1, 107, 121, 111, 98, 2, 116, 0, 1, 108, 2, 18, 66, 11, 18, 76, 0,
+			1, 108, 2, 100, 116, 114, 195, 166, 107, 0, 1, 108, 2, 103, 98, 111, 103, 0, 1, 108, 2, 103, 102, 105, 108, 0, 1, 108, 2, 110,
+			110, 17, 65, 0, 1, 108, 2, 116, 0, 1, 108, 18, 71, 2, 18, 74, 0, 1, 108, 32, 101, 107, 107, 166, 195, 114, 116, 2, 100, 0,
+			1, 108, 32, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 114, 101, 107, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 115, 101,
+			107, 107, 166, 195, 114, 116, 2, 100, 0, 1, 108, 32, 116, 101, 107, 107, 117, 114, 116, 2, 100, 0, 1, 108, 98, 2, 107, 12, 0, 1,
+			108, 100, 114, 111, 106, 2, 100, 0, 1, 108, 102, 2, 115, 0, 1, 108, 107, 2, 115, 116, 114, 101, 0, 1, 108, 108, 97, 102, 2, 115,
+			0, 1, 108, 114, 111, 102, 2, 100, 115, 0, 1, 109, 2, 110, 105, 116, 111, 114, 0, 1, 109, 2, 110, 115, 116, 101, 0, 1, 109, 115,
+			111, 107, 2, 115, 0, 1, 110, 2, 110, 17, 67, 0, 1, 110, 2, 115, 32, 0, 1, 110, 107, 2, 116, 110, 0, 1, 110, 107, 2, 116,
+			116, 0, 1, 110, 115, 2, 116, 12, 0, 1, 112, 2, 108, 116, 0, 1, 112, 2, 110, 0, 1, 112, 2, 112, 105, 100, 111, 108, 12, 12,
+			0, 1, 112, 101, 2, 115, 0, 1, 112, 107, 99, 97, 106, 2, 116, 0, 1, 112, 115, 2, 110, 115, 111, 114, 0, 1, 114, 2, 17, 67,
+			11, 12, 12, 0, 1, 114, 2, 99, 104, 101, 0, 1, 114, 2, 99, 107, 0, 1, 114, 2, 109, 107, 97, 103, 101, 0, 1, 114, 18, 73,
+			2, 18, 66, 0, 1, 114, 18, 73, 2, 116, 0, 1, 114, 98, 2, 100, 12, 0, 1, 114, 100, 2, 115, 99, 104, 101, 0, 1, 114, 100,
+			32, 116, 101, 2, 103, 0, 1, 114, 102, 2, 109, 0, 1, 114, 102, 2, 110, 116, 0, 1, 114, 102, 2, 115, 116, 12, 12, 0, 1, 114,
+			107, 2, 107, 101, 116, 17, 67, 0, 1, 114, 108, 97, 118, 104, 2, 115, 0, 1, 114, 112, 2, 102, 32, 0, 1, 114, 112, 2, 115, 116,
+			97, 116, 97, 0, 1, 114, 116, 2, 106, 12, 0, 1, 114, 116, 2, 107, 108, 0, 1, 114, 116, 2, 108, 100, 0, 1, 114, 116, 2, 116,
+			115, 0, 1, 114, 116, 97, 98, 108, 97, 2, 115, 0, 1, 114, 116, 110, 111, 107, 2, 108, 0, 1, 114, 116, 120, 111, 102, 2, 116, 0,
+			1, 115, 2, 106, 97, 12, 0, 1, 115, 2, 108, 118, 101, 110, 116, 12, 0, 1, 115, 21, 2, 110, 32, 0, 1, 115, 21, 2, 110, 115,
+			32, 0, 1, 116, 2, 108, 107, 0, 1, 116, 2, 109, 97, 115, 32, 0, 1, 116, 2, 116, 0, 1, 116, 115, 2, 112, 12, 12, 0, 1,
+			118, 2, 103, 116, 0, 1, 118, 2, 103, 116, 12, 0, 1, 118, 108, 101, 115, 2, 112, 0, 2, 18, 68, 25, 12, 0, 2, 18, 71, 11,
+			12, 0, 2, 18, 71, 12, 0, 2, 98, 98, 17, 65, 12, 12, 12, 0, 2, 102, 17, 67, 0, 2, 107, 0, 2, 108, 100, 12, 12, 0,
+			2, 109, 32, 0, 2, 109, 97, 100, 114, 101, 115, 115, 101, 0, 2, 109, 101, 103, 110, 0, 2, 109, 107, 0, 2, 109, 109, 12, 0, 2,
+			109, 114, 195, 165, 100, 0, 2, 109, 115, 0, 2, 109, 116, 97, 108, 101, 0, 2, 112, 97, 100, 12, 0, 2, 112, 97, 114, 98, 101, 106,
+			100, 101, 12, 0, 2, 112, 101, 102, 116, 101, 114, 12, 0, 2, 112, 105, 108, 100, 110, 101, 12, 0, 2, 112, 111, 102, 114, 101, 0, 2,
+			112, 111, 102, 114, 101, 12, 0, 2, 115, 17, 67, 18, 69, 0, 2, 116, 116, 97, 119, 97, 0, 2, 116, 116, 101, 110, 100, 101, 0, 2,
+			116, 116, 111, 0, 2, 120, 12, 12, 12, 0, 8, 2, 108, 105, 118, 101, 114, 0, 8, 2, 109, 97, 114, 0, 8, 98, 2, 110, 100, 32,
+			0, 8, 100, 2, 110, 32, 0, 8, 104, 2, 108, 105, 100, 97, 121, 0, 8, 104, 2, 116, 32, 0, 8, 108, 2, 103, 32, 0, 8, 108,
+			2, 115, 0, 8, 109, 2, 114, 116, 0, 8, 112, 2, 116, 32, 0, 8, 114, 2, 98, 105, 110, 12, 12, 0, 8, 114, 32, 116, 101, 103,
+			111, 110, 2, 115, 32, 0, 100, 1, 108, 107, 2, 115, 0, 100, 1, 114, 116, 2, 115, 0, 103, 1, 107, 101, 114, 2, 110, 111, 115, 99,
+			101, 114, 101, 0, 103, 2, 102, 105, 114, 115, 0, 103, 2, 116, 114, 101, 100, 105, 118, 101, 0, 103, 2, 116, 121, 118, 101, 0, 114, 1,
+			102, 2, 97, 110, 0, 114, 1, 102, 21, 2, 17, 65, 0, 114, 1, 116, 2, 32, 0, 114, 1, 116, 2, 115, 32, 0, 114, 1, 116, 115,
+			97, 112, 0, 117, 114, 1, 98, 114, 97, 104, 0, 1, 112, 2, 115, 116, 121, 114, 12, 3, 109, 6, 0, 116, 100, 111, 103, 1, 104, 3,
+			109, 47, 72, 109, 81, 0, 4, 99, 99, 1, 114, 98, 2, 111, 108, 105, 3, 109, 49, 0, 103, 104, 1, 103, 32, 110, 97, 118, 0, 107,
+			101, 116, 8, 114, 107, 2, 32, 3, 109, 49, 14, 47, 0, 110, 100, 1, 108, 98, 2, 101, 3, 109, 50, 0, 110, 111, 1, 100, 2, 118,
+			97, 110, 3, 109, 50, 14, 0, 110, 116, 101, 118, 105, 100, 101, 111, 1, 109, 3, 109, 50, 47, 14, 84, 111, 72, 6, 114, 124, 0, 4,
+			110, 100, 1, 108, 98, 3, 109, 50, 72, 0, 110, 100, 1, 108, 98, 2, 101, 110, 32, 0, 110, 100, 1, 108, 98, 2, 101, 114, 0, 110,
+			100, 8, 108, 98, 32, 110, 101, 2, 101, 32, 0, 110, 100, 111, 110, 1, 108, 3, 109, 50, 72, 109, 50, 0, 110, 103, 1, 107, 2, 114,
+			101, 115, 3, 109, 50, 81, 0, 108, 105, 115, 104, 1, 112, 3, 109, 55, 37, 91, 0, 108, 103, 116, 1, 115, 3, 109, 55, 47, 0, 108,
+			108, 97, 114, 1, 100, 3, 109, 55, 109, 0, 105, 110, 116, 1, 112, 32, 116, 115, 101, 119, 3, 109, 57, 50, 47, 0, 103, 1, 100, 2,
+			12, 3, 109, 58, 0, 103, 114, 101, 1, 108, 3, 109, 58, 34, 109, 0, 103, 110, 1, 17, 67, 3, 109, 58, 50, 0, 118, 106, 101, 116,
+			1, 115, 3, 109, 58, 57, 6, 116, 47, 0, 109, 107, 111, 2, 115, 116, 3, 109, 65, 49, 109, 0, 109, 98, 97, 121, 1, 98, 3, 109,
+			65, 71, 4, 115, 57, 0, 109, 101, 98, 97, 99, 107, 1, 99, 3, 109, 65, 71, 6, 118, 49, 0, 4, 110, 1, 108, 108, 97, 98, 3,
+			109, 68, 0, 110, 1, 112, 109, 97, 116, 0, 110, 1, 112, 109, 111, 112, 0, 110, 1, 112, 117, 107, 0, 110, 1, 116, 101, 98, 0, 103,
+			110, 97, 99, 1, 99, 3, 109, 68, 121, 49, 0, 98, 121, 8, 114, 2, 110, 12, 12, 3, 109, 71, 36, 0, 100, 1, 118, 2, 107, 97,
+			3, 109, 72, 0, 100, 121, 1, 98, 3, 109, 72, 37, 0, 100, 108, 101, 1, 106, 3, 109, 72, 55, 14, 0, 4, 103, 1, 107, 2, 110,
+			105, 116, 3, 109, 81, 0, 103, 1, 108, 98, 0, 103, 1, 109, 115, 2, 32, 0, 103, 1, 114, 103, 0, 103, 103, 1, 114, 103, 0, 103,
+			103, 121, 1, 114, 103, 3, 109, 81, 111, 0, 102, 102, 115, 105, 100, 101, 3, 109, 83, 89, 6, 136, 72, 0, 116, 104, 1, 114, 98, 2,
+			101, 114, 3, 109, 86, 0, 115, 99, 97, 114, 3, 109, 89, 49, 121, 0, 115, 99, 111, 101, 1, 114, 3, 109, 89, 49, 126, 58, 0, 115,
+			98, 111, 114, 110, 101, 3, 109, 89, 71, 4, 125, 50, 0, 115, 116, 1, 18, 67, 3, 109, 89, 72, 0, 117, 1, 114, 103, 2, 99, 104,
+			111, 3, 121, 58, 0, 117, 116, 108, 97, 119, 3, 121, 58, 47, 55, 125, 12, 0, 117, 110, 3, 121, 58, 50, 0, 4, 117, 116, 8, 100,
+			110, 97, 104, 3, 121, 58, 72, 0, 117, 116, 8, 110, 111, 114, 116, 115, 97, 0, 117, 116, 8, 112, 111, 114, 100, 0, 117, 116, 115, 105,
+			100, 101, 114, 3, 121, 58, 72, 89, 136, 72, 108, 0, 117, 115, 101, 1, 104, 3, 121, 58, 89, 0, 119, 101, 114, 112, 111, 119, 101, 114,
+			1, 108, 102, 3, 121, 58, 108, 48, 121, 58, 108, 0, 1, 100, 2, 119, 110, 105, 110, 103, 3, 122, 0, 119, 1, 116, 2, 101, 114, 3,
+			122, 40, 0, 119, 105, 101, 1, 104, 3, 122, 58, 37, 0, 117, 116, 104, 1, 115, 3, 122, 123, 87, 0, 117, 3, 123, 0, 4, 3, 124,
+			0, 1, 17, 67, 2, 18, 71, 18, 69, 12, 12, 0, 1, 17, 67, 2, 107, 18, 69, 12, 0, 1, 17, 67, 2, 107, 18, 70, 12, 0,
+			1, 17, 67, 2, 109, 18, 76, 0, 1, 17, 67, 102, 2, 116, 18, 69, 0, 1, 18, 66, 2, 109, 18, 69, 0, 1, 18, 66, 2, 109,
+			101, 0, 1, 18, 66, 2, 109, 109, 97, 110, 12, 0, 1, 18, 68, 2, 18, 66, 97, 12, 0, 1, 18, 68, 2, 18, 74, 18, 69, 0,
+			1, 18, 68, 2, 18, 74, 18, 76, 0, 1, 18, 71, 2, 116, 18, 69, 0, 1, 18, 73, 2, 116, 18, 69, 0, 1, 18, 74, 2, 100,
+			12, 0, 1, 98, 2, 100, 12, 0, 1, 98, 2, 103, 111, 114, 109, 0, 1, 98, 2, 109, 0, 1, 98, 2, 109, 109, 12, 12, 0, 1,
+			98, 2, 112, 195, 166, 108, 0, 1, 98, 97, 110, 2, 12, 12, 0, 1, 98, 97, 115, 2, 116, 0, 1, 98, 109, 117, 106, 0, 1, 98,
+			109, 121, 115, 2, 108, 0, 1, 100, 2, 18, 66, 114, 18, 69, 0, 1, 100, 2, 109, 195, 166, 110, 101, 0, 1, 100, 2, 110, 107, 114,
+			97, 102, 116, 0, 1, 100, 2, 115, 115, 105, 101, 114, 0, 1, 100, 101, 112, 114, 111, 116, 0, 1, 100, 110, 97, 109, 109, 111, 107, 0,
+			1, 102, 2, 100, 12, 0, 1, 102, 2, 114, 18, 69, 12, 0, 1, 103, 2, 115, 108, 97, 118, 12, 0, 1, 103, 97, 100, 2, 103, 0,
+			1, 104, 2, 18, 74, 18, 69, 12, 0, 1, 104, 2, 98, 12, 0, 1, 104, 2, 115, 112, 105, 116, 0, 1, 104, 2, 115, 116, 12, 12,
+			0, 1, 104, 2, 118, 101, 114, 101, 0, 1, 104, 99, 2, 107, 111, 12, 0, 1, 105, 100, 97, 114, 0, 1, 106, 2, 100, 12, 0, 1,
+			106, 102, 2, 114, 116, 0, 1, 106, 103, 2, 114, 116, 0, 1, 106, 107, 2, 114, 116, 0, 1, 107, 2, 100, 12, 0, 1, 107, 2, 107,
+			97, 0, 1, 107, 2, 108, 108, 101, 103, 12, 12, 12, 0, 1, 107, 2, 108, 108, 101, 107, 116, 32, 0, 1, 107, 2, 109, 109, 101, 110,
+			116, 17, 65, 12, 12, 12, 0, 1, 107, 2, 109, 109, 101, 114, 99, 105, 101, 108, 12, 12, 0, 1, 107, 2, 109, 112, 97, 103, 0, 1,
+			107, 2, 110, 116, 111, 114, 0, 1, 107, 2, 115, 107, 111, 0, 1, 107, 2, 115, 116, 18, 69, 0, 1, 107, 2, 115, 116, 32, 0, 1,
+			107, 2, 115, 116, 101, 115, 107, 97, 98, 0, 1, 107, 2, 115, 116, 101, 115, 107, 97, 102, 116, 0, 1, 107, 107, 101, 106, 116, 2, 115,
+			108, 111, 118, 0, 1, 107, 110, 97, 98, 2, 115, 112, 0, 1, 107, 111, 107, 2, 115, 0, 1, 107, 114, 97, 110, 2, 17, 67, 0, 1,
+			107, 115, 2, 102, 97, 98, 0, 1, 107, 115, 2, 116, 195, 184, 106, 0, 1, 107, 115, 97, 107, 0, 1, 107, 115, 105, 100, 0, 1, 107,
+			121, 115, 112, 2, 12, 0, 1, 108, 2, 18, 68, 12, 0, 1, 108, 2, 18, 74, 17, 67, 18, 69, 0, 1, 108, 2, 107, 17, 65, 0,
+			1, 108, 2, 107, 117, 109, 0, 1, 108, 97, 103, 2, 112, 112, 101, 114, 101, 0, 1, 108, 101, 109, 21, 2, 110, 0, 1, 108, 102, 2,
+			100, 101, 110, 0, 1, 108, 105, 107, 2, 12, 0, 1, 108, 105, 112, 2, 116, 0, 1, 108, 107, 2, 110, 0, 1, 108, 111, 107, 2, 115,
+			115, 97, 0, 1, 108, 111, 107, 2, 115, 116, 0, 1, 108, 112, 2, 109, 12, 0, 1, 108, 115, 2, 103, 12, 0, 1, 109, 2, 115, 107,
+			101, 12, 0, 1, 109, 101, 2, 12, 0, 1, 109, 114, 101, 116, 2, 115, 116, 97, 0, 1, 110, 2, 109, 105, 0, 1, 110, 2, 112, 114,
+			101, 0, 1, 110, 2, 116, 101, 114, 101, 12, 0, 1, 110, 17, 67, 2, 18, 71, 12, 12, 0, 1, 110, 97, 107, 2, 110, 0, 1, 110,
+			103, 2, 109, 0, 1, 110, 103, 111, 107, 101, 114, 2, 115, 99, 101, 114, 101, 0, 1, 110, 107, 2, 106, 0, 1, 110, 111, 2, 109, 0,
+			1, 110, 111, 103, 2, 114, 114, 0, 1, 110, 114, 111, 112, 2, 12, 12, 0, 1, 112, 2, 107, 101, 114, 12, 12, 0, 1, 112, 2, 108,
+			12, 0, 1, 112, 2, 108, 32, 0, 1, 112, 2, 108, 115, 107, 0, 1, 112, 2, 115, 116, 116, 114, 97, 117, 0, 1, 112, 101, 100, 2,
+			115, 105, 116, 117, 109, 0, 1, 114, 2, 18, 68, 11, 97, 12, 12, 0, 1, 114, 2, 18, 71, 18, 70, 12, 0, 1, 114, 2, 100, 12,
+			0, 1, 114, 2, 107, 18, 76, 12, 0, 1, 114, 2, 109, 17, 67, 18, 70, 0, 1, 114, 2, 109, 117, 108, 117, 115, 0, 1, 114, 17,
+			67, 2, 109, 18, 69, 0, 1, 114, 17, 67, 2, 115, 107, 12, 12, 0, 1, 114, 18, 71, 2, 106, 0, 1, 114, 18, 73, 2, 18, 66,
+			101, 110, 0, 1, 114, 98, 2, 115, 116, 101, 110, 0, 1, 114, 100, 110, 121, 115, 2, 109, 0, 1, 114, 100, 121, 104, 0, 1, 114, 101,
+			116, 101, 104, 0, 1, 114, 102, 2, 109, 97, 0, 1, 114, 102, 2, 115, 110, 101, 0, 1, 114, 102, 2, 115, 115, 12, 12, 0, 1, 114,
+			103, 2, 115, 115, 105, 12, 0, 1, 114, 107, 2, 109, 0, 1, 114, 107, 2, 115, 0, 1, 114, 107, 2, 115, 110, 97, 107, 0, 1, 114,
+			107, 2, 118, 195, 166, 0, 1, 114, 107, 105, 109, 0, 1, 114, 112, 2, 98, 108, 101, 0, 1, 114, 112, 2, 115, 112, 12, 0, 1, 114,
+			112, 2, 115, 116, 105, 0, 1, 114, 112, 2, 118, 17, 65, 12, 0, 1, 114, 116, 2, 17, 67, 18, 69, 0, 1, 114, 116, 2, 106, 97,
+			110, 0, 1, 114, 116, 2, 109, 0, 1, 114, 116, 2, 109, 109, 101, 12, 0, 1, 114, 116, 2, 115, 98, 101, 107, 101, 110, 100, 0, 1,
+			114, 116, 2, 115, 114, 101, 116, 110, 105, 110, 103, 0, 1, 114, 116, 2, 115, 115, 195, 166, 116, 110, 105, 110, 103, 0, 1, 114, 116, 2,
+			118, 12, 0, 1, 114, 116, 101, 109, 2, 12, 12, 0, 1, 114, 116, 110, 111, 107, 2, 108, 108, 195, 184, 114, 0, 1, 114, 116, 114, 111,
+			102, 2, 108, 105, 103, 0, 1, 114, 117, 101, 2, 12, 12, 12, 0, 1, 115, 2, 100, 12, 0, 1, 115, 2, 108, 12, 12, 0, 1, 115,
+			2, 108, 108, 121, 115, 12, 12, 0, 1, 115, 2, 112, 114, 97, 0, 1, 115, 114, 101, 112, 17, 67, 2, 110, 0, 1, 116, 2, 108, 101,
+			114, 97, 110, 116, 12, 0, 1, 116, 2, 116, 17, 65, 0, 1, 116, 97, 2, 109, 0, 1, 116, 101, 98, 2, 110, 101, 116, 0, 1, 116,
+			108, 97, 115, 2, 109, 111, 114, 0, 1, 116, 110, 111, 107, 0, 1, 116, 111, 102, 2, 12, 0, 1, 116, 115, 2, 100, 32, 0, 1, 116,
+			115, 2, 109, 18, 69, 0, 1, 116, 115, 101, 116, 2, 115, 116, 101, 114, 111, 110, 0, 1, 116, 115, 105, 114, 97, 2, 107, 0, 1, 116,
+			117, 97, 2, 12, 0, 1, 118, 2, 107, 18, 76, 12, 0, 1, 122, 105, 107, 115, 2, 102, 114, 101, 110, 0, 2, 18, 66, 18, 69, 0,
+			2, 18, 71, 18, 69, 12, 0, 2, 18, 71, 18, 76, 12, 0, 2, 98, 108, 18, 69, 0, 2, 98, 108, 97, 12, 0, 2, 107, 97, 17,
+			67, 0, 2, 108, 115, 101, 110, 12, 0, 2, 110, 100, 0, 2, 112, 112, 111, 115, 105, 116, 0, 2, 115, 116, 105, 110, 100, 105, 0, 2,
+			118, 101, 106, 12, 0, 2, 118, 105, 12, 0, 8, 17, 67, 2, 32, 0, 8, 116, 115, 2, 114, 32, 0, 103, 1, 114, 100, 0, 111, 1,
+			112, 109, 97, 104, 115, 0, 4, 1, 101, 108, 2, 112, 97, 114, 3, 124, 6, 0, 1, 115, 2, 109, 97, 108, 0, 8, 107, 2, 109, 112,
+			97, 115, 0, 8, 114, 107, 2, 107, 101, 116, 116, 0, 8, 115, 111, 108, 105, 102, 2, 102, 105, 32, 0, 8, 116, 2, 98, 97, 107, 0,
+			1, 101, 100, 105, 118, 2, 21, 3, 124, 11, 0, 4, 100, 101, 114, 1, 109, 3, 124, 34, 0, 114, 1, 107, 2, 112, 105, 103, 0, 114,
+			1, 107, 2, 112, 114, 195, 184, 118, 101, 0, 39, 8, 3, 124, 40, 6, 0, 116, 116, 101, 1, 114, 102, 2, 12, 12, 3, 124, 47, 6,
+			36, 0, 116, 111, 110, 1, 108, 101, 112, 3, 124, 47, 6, 109, 68, 0, 112, 1, 107, 115, 10, 2, 105, 28, 33, 3, 124, 48, 6, 0,
+			112, 111, 115, 1, 114, 112, 97, 3, 124, 48, 6, 124, 0, 107, 114, 97, 116, 101, 115, 1, 115, 3, 124, 49, 34, 122, 47, 116, 89, 0,
+			107, 108, 97, 104, 111, 109, 97, 3, 124, 49, 55, 118, 107, 6, 39, 65, 118, 0, 114, 1, 114, 2, 103, 3, 124, 51, 0, 4, 103, 8,
+			118, 2, 32, 3, 124, 58, 0, 118, 1, 108, 2, 32, 109, 105, 103, 32, 0, 103, 1, 104, 2, 97, 110, 3, 124, 58, 81, 0, 109, 1,
+			107, 114, 97, 115, 3, 124, 65, 0, 4, 109, 109, 101, 1, 110, 101, 114, 2, 12, 3, 124, 65, 6, 36, 0, 109, 109, 195, 169, 1, 110,
+			101, 114, 2, 12, 0, 109, 101, 116, 1, 107, 3, 124, 65, 6, 114, 47, 0, 109, 97, 110, 8, 3, 124, 65, 6, 117, 50, 0, 103, 110,
+			101, 115, 101, 1, 108, 111, 98, 3, 124, 68, 6, 115, 89, 14, 0, 98, 111, 8, 2, 12, 3, 124, 71, 6, 124, 0, 4, 100, 101, 114,
+			8, 109, 2, 110, 101, 3, 124, 72, 6, 116, 34, 0, 100, 101, 114, 8, 109, 2, 110, 105, 0, 100, 101, 114, 1, 109, 114, 101, 112, 121,
+			104, 2, 110, 101, 3, 124, 72, 116, 34, 0, 114, 103, 1, 101, 103, 2, 105, 110, 101, 3, 124, 81, 0, 103, 101, 1, 116, 111, 102, 2,
+			110, 3, 124, 81, 6, 114, 0, 103, 110, 1, 114, 112, 2, 111, 3, 124, 81, 50, 0, 112, 104, 105, 97, 1, 115, 3, 124, 83, 6, 37,
+			117, 0, 4, 118, 1, 107, 2, 101, 110, 100, 3, 124, 84, 0, 118, 1, 107, 117, 118, 2, 97, 114, 0, 118, 1, 110, 2, 101, 108, 108,
+			0, 118, 1, 110, 2, 101, 109, 12, 0, 118, 1, 110, 2, 105, 99, 17, 65, 0, 118, 1, 110, 101, 114, 2, 101, 114, 0, 118, 1, 114,
+			116, 110, 111, 107, 2, 101, 114, 115, 0, 118, 1, 116, 2, 195, 184, 114, 0, 118, 1, 116, 97, 2, 101, 114, 12, 0, 118, 2, 195, 166,
+			114, 110, 12, 0, 4, 118, 1, 106, 2, 105, 115, 116, 3, 124, 84, 6, 0, 118, 1, 108, 115, 2, 97, 107, 0, 118, 105, 8, 114, 112,
+			2, 110, 115, 3, 124, 84, 6, 114, 0, 4, 100, 1, 103, 2, 116, 17, 65, 103, 3, 124, 86, 0, 100, 1, 103, 2, 116, 114, 0, 100,
+			1, 108, 98, 2, 12, 0, 100, 1, 108, 102, 2, 12, 0, 115, 1, 114, 116, 2, 115, 97, 109, 102, 117, 110, 100, 3, 124, 89, 0, 115,
+			115, 101, 117, 109, 1, 108, 111, 99, 3, 124, 89, 6, 115, 126, 65, 0, 115, 104, 1, 104, 115, 2, 111, 110, 101, 3, 124, 91, 6, 0,
+			106, 97, 118, 101, 1, 109, 3, 124, 107, 6, 121, 84, 114, 0, 4, 114, 1, 107, 2, 115, 116, 111, 108, 3, 124, 110, 0, 114, 1, 116,
+			115, 2, 12, 0, 100, 101, 114, 101, 110, 1, 109, 3, 124, 110, 108, 50, 0, 4, 1, 17, 67, 2, 103, 101, 12, 3, 125, 0, 1, 99,
+			2, 114, 115, 0, 1, 118, 115, 2, 103, 101, 114, 0, 114, 2, 107, 101, 115, 116, 101, 114, 12, 0, 4, 97, 114, 1, 98, 2, 100, 105,
+			110, 103, 3, 125, 12, 0, 114, 1, 17, 67, 2, 18, 72, 18, 70, 0, 114, 1, 107, 2, 112, 115, 0, 114, 1, 112, 2, 110, 0, 114,
+			1, 116, 2, 115, 0, 114, 1, 116, 2, 116, 0, 114, 2, 107, 12, 12, 0, 114, 2, 108, 0, 114, 8, 2, 110, 0, 117, 114, 110, 101,
+			1, 98, 3, 125, 12, 50, 0, 114, 103, 2, 12, 3, 125, 12, 58, 0, 114, 103, 2, 105, 3, 125, 12, 81, 0, 117, 114, 116, 104, 1,
+			102, 3, 125, 12, 87, 0, 114, 114, 101, 107, 1, 107, 2, 116, 117, 114, 3, 125, 14, 81, 0, 114, 108, 121, 8, 2, 32, 3, 125, 16,
+			55, 6, 37, 0, 1, 104, 2, 108, 100, 105, 110, 103, 3, 125, 40, 0, 108, 100, 101, 110, 8, 103, 2, 32, 3, 125, 40, 55, 72, 20,
+			13, 50, 0, 108, 100, 105, 101, 8, 103, 3, 125, 40, 55, 72, 37, 0, 118, 2, 101, 114, 104, 101, 97, 100, 3, 125, 40, 84, 0, 97,
+			115, 116, 98, 101, 101, 102, 1, 114, 3, 125, 40, 89, 72, 71, 37, 83, 0, 116, 105, 111, 110, 1, 109, 119, 111, 108, 115, 3, 125, 40,
+			91, 20, 14, 50, 0, 4, 103, 1, 108, 107, 2, 12, 3, 125, 58, 0, 114, 103, 2, 101, 108, 0, 114, 103, 2, 101, 114, 0, 117, 1,
+			115, 2, 108, 0, 118, 2, 101, 114, 115, 12, 12, 0, 118, 101, 1, 115, 2, 21, 3, 125, 58, 14, 0, 97, 116, 101, 115, 3, 125, 58,
+			47, 89, 0, 112, 114, 97, 104, 3, 125, 58, 48, 34, 121, 0, 4, 108, 101, 1, 112, 109, 105, 119, 3, 125, 58, 55, 0, 108, 108, 8,
+			114, 2, 32, 12, 0, 108, 108, 115, 8, 114, 2, 32, 3, 125, 58, 55, 89, 0, 97, 100, 105, 101, 1, 114, 3, 125, 58, 72, 113, 0,
+			97, 100, 105, 101, 114, 1, 114, 3, 125, 58, 72, 113, 109, 0, 99, 104, 105, 115, 101, 1, 99, 3, 125, 58, 91, 6, 37, 12, 89, 0,
+			4, 118, 1, 108, 2, 101, 110, 12, 12, 3, 125, 84, 0, 118, 1, 118, 2, 101, 0, 4, 114, 115, 101, 116, 1, 107, 32, 116, 101, 3,
+			125, 89, 6, 115, 47, 0, 114, 115, 101, 116, 116, 1, 107, 0, 114, 99, 101, 1, 112, 3, 125, 89, 14, 0, 4, 1, 17, 67, 2, 103,
+			12, 3, 126, 0, 1, 107, 2, 98, 98, 101, 114, 12, 12, 12, 0, 1, 107, 2, 103, 108, 12, 0, 1, 109, 2, 115, 115, 101, 12, 12,
+			12, 0, 1, 112, 2, 115, 116, 109, 111, 100, 0, 100, 1, 103, 2, 115, 0, 114, 1, 107, 115, 2, 112, 0, 114, 1, 116, 2, 110, 97,
+			0, 114, 2, 17, 67, 0, 114, 2, 103, 97, 12, 0, 114, 115, 1, 107, 3, 126, 12, 89, 0, 118, 2, 114, 101, 3, 126, 40, 0, 4,
+			1, 103, 2, 107, 97, 114, 116, 12, 3, 126, 58, 0, 103, 1, 110, 107, 0, 118, 1, 17, 67, 2, 101, 110, 12, 0, 118, 1, 115, 2,
+			101, 0, 118, 2, 101, 12, 12, 0, 118, 2, 101, 114, 12, 12, 0, 118, 2, 110, 0, 118, 101, 114, 2, 104, 111, 118, 101, 100, 12, 3,
+			126, 58, 109, 0, 114, 103, 2, 105, 101, 3, 126, 81, 0, 114, 114, 1, 17, 67, 3, 126, 110, 0, 8, 114, 98, 2, 100, 121, 3, 127,
+			58, 0, 1, 114, 17, 67, 2, 18, 66, 18, 69, 12, 3, 128, 0, 4, 118, 1, 17, 67, 2, 12, 3, 128, 58, 0, 118, 1, 17, 67,
+			2, 18, 73, 0, 117, 114, 98, 111, 110, 1, 98, 3, 132, 12, 71, 14, 50, 0, 101, 116, 104, 101, 1, 103, 3, 132, 47, 14, 0, 97,
+			107, 108, 97, 110, 100, 3, 132, 58, 49, 55, 14, 50, 72, 0, 101, 98, 98, 101, 108, 115, 1, 103, 3, 132, 71, 14, 55, 89, 0, 7,
+			6, 112, 0, 4, 1, 109, 121, 115, 2, 116, 111, 109, 3, 0, 2, 115, 121, 107, 3, 0, 4, 3, 48, 0, 1, 10, 2, 32, 0, 112,
+			0, 195, 165, 8, 2, 14, 128, 132, 130, 3, 48, 6, 109, 0, 195, 165, 8, 2, 115, 107, 101, 3, 48, 6, 125, 12, 0, 117, 114, 118,
+			105, 115, 8, 3, 48, 6, 132, 12, 84, 113, 89, 0, 4, 114, 111, 116, 101, 103, 101, 3, 48, 34, 39, 72, 13, 91, 6, 36, 0, 114,
+			111, 116, 101, 103, 195, 169, 0, 114, 101, 115, 98, 121, 116, 101, 114, 105, 97, 110, 3, 48, 34, 115, 89, 71, 129, 47, 115, 34, 37, 6,
+			117, 50, 0, 105, 110, 99, 101, 110, 101, 122, 3, 48, 35, 12, 68, 89, 50, 6, 36, 0, 195, 169, 116, 97, 105, 110, 8, 3, 48, 36,
+			47, 6, 117, 68, 0, 101, 110, 101, 108, 111, 112, 101, 3, 48, 36, 50, 6, 115, 55, 39, 48, 37, 0, 105, 116, 99, 104, 112, 105, 110,
+			101, 3, 48, 36, 87, 91, 48, 121, 12, 57, 50, 0, 101, 116, 101, 8, 2, 32, 3, 48, 37, 12, 47, 0, 101, 116, 101, 121, 8, 3,
+			48, 37, 12, 47, 37, 0, 101, 97, 110, 117, 116, 3, 48, 37, 12, 50, 108, 72, 0, 101, 97, 99, 101, 3, 48, 37, 12, 89, 0, 105,
+			103, 103, 121, 8, 3, 48, 37, 81, 37, 0, 112, 1, 111, 116, 2, 111, 115, 116, 3, 48, 48, 0, 114, 97, 108, 105, 110, 101, 3, 48,
+			51, 121, 55, 37, 50, 6, 36, 0, 105, 101, 114, 114, 101, 3, 48, 57, 115, 12, 34, 0, 105, 97, 102, 8, 3, 48, 57, 121, 83, 0,
+			111, 105, 114, 111, 116, 8, 3, 48, 58, 121, 34, 6, 39, 0, 111, 105, 116, 105, 101, 114, 8, 3, 48, 58, 121, 47, 57, 6, 36, 0,
+			111, 110, 121, 3, 48, 108, 50, 37, 0, 117, 110, 99, 104, 108, 105, 110, 101, 3, 48, 108, 50, 91, 55, 136, 50, 0, 4, 195, 165, 2,
+			102, 117, 110, 100, 3, 48, 109, 0, 195, 165, 2, 108, 195, 166, 103, 0, 195, 165, 2, 118, 105, 114, 107, 0, 195, 165, 8, 2, 108, 105,
+			100, 101, 0, 195, 165, 8, 2, 118, 105, 115, 0, 105, 99, 107, 117, 2, 112, 3, 48, 111, 49, 6, 109, 0, 101, 114, 117, 3, 48, 114,
+			34, 6, 123, 0, 105, 115, 115, 111, 105, 114, 3, 48, 114, 89, 58, 6, 121, 12, 0, 97, 105, 103, 101, 3, 48, 115, 12, 57, 75, 0,
+			101, 105, 103, 110, 111, 105, 114, 3, 48, 116, 50, 57, 58, 6, 121, 12, 0, 97, 105, 110, 116, 98, 97, 108, 108, 3, 48, 116, 57, 50,
+			47, 71, 125, 12, 55, 0, 97, 105, 108, 108, 101, 2, 116, 3, 48, 117, 57, 6, 116, 0, 97, 115, 115, 97, 103, 101, 114, 8, 3, 48,
+			117, 89, 117, 89, 57, 6, 36, 34, 0, 97, 115, 97, 100, 101, 110, 97, 3, 48, 118, 89, 118, 72, 6, 37, 50, 118, 0, 97, 108, 109,
+			2, 32, 98, 101, 97, 99, 104, 3, 48, 121, 12, 65, 0, 97, 114, 102, 97, 105, 116, 3, 48, 121, 83, 6, 115, 0, 111, 115, 116, 104,
+			117, 109, 3, 48, 125, 89, 47, 107, 6, 40, 65, 0, 101, 97, 114, 108, 8, 2, 32, 3, 48, 132, 12, 55, 0, 101, 114, 116, 104, 3,
+			48, 132, 12, 87, 0, 101, 114, 107, 105, 110, 115, 3, 48, 132, 49, 36, 50, 89, 0, 101, 114, 99, 121, 3, 48, 132, 89, 37, 0, 101,
+			117, 103, 101, 111, 116, 3, 48, 132, 91, 6, 39, 0, 105, 112, 101, 108, 105, 110, 101, 3, 48, 136, 48, 55, 136, 50, 0, 98, 1, 109,
+			97, 99, 2, 101, 108, 3, 71, 0, 4, 104, 1, 101, 115, 111, 106, 3, 83, 0, 104, 1, 108, 97, 114, 0, 104, 1, 109, 101, 109, 2,
+			105, 115, 0, 104, 97, 101, 108, 1, 97, 114, 3, 83, 117, 6, 115, 55, 0, 115, 101, 117, 3, 89, 132, 58, 0, 7, 6, 113, 0, 117,
+			1, 101, 116, 2, 105, 108, 97, 3, 6, 49, 0, 117, 101, 1, 21, 3, 8, 49, 0, 3, 49, 0, 117, 101, 116, 1, 117, 111, 98, 3,
+			49, 7, 36, 0, 117, 105, 99, 104, 101, 3, 49, 37, 91, 0, 4, 117, 105, 106, 111, 116, 101, 3, 49, 37, 91, 6, 108, 47, 0, 117,
+			105, 120, 111, 116, 101, 0, 117, 101, 101, 110, 3, 49, 58, 37, 12, 50, 0, 117, 97, 114, 116, 101, 114, 3, 49, 58, 125, 47, 108, 0,
+			117, 2, 105, 115, 108, 105, 110, 103, 3, 49, 84, 0, 117, 105, 2, 122, 3, 49, 84, 37, 0, 117, 101, 98, 101, 99, 3, 49, 84, 37,
+			71, 6, 115, 49, 0, 117, 101, 122, 3, 49, 115, 12, 89, 0, 7, 6, 114, 0, 4, 1, 101, 2, 101, 32, 24, 3, 0, 4, 1, 166,
+			195, 2, 101, 114, 32, 24, 3, 0, 100, 1, 165, 195, 104, 3, 0, 4, 101, 116, 8, 117, 98, 97, 116, 2, 12, 12, 3, 6, 34, 120,
+			47, 0, 101, 116, 116, 8, 117, 98, 97, 116, 2, 12, 12, 0, 101, 116, 8, 97, 122, 97, 108, 2, 12, 12, 3, 6, 119, 47, 0, 101,
+			114, 1, 21, 2, 101, 32, 28, 33, 12, 12, 12, 3, 7, 34, 115, 0, 101, 114, 1, 21, 2, 32, 28, 33, 12, 12, 12, 3, 7, 34,
+			115, 34, 0, 105, 1, 10, 2, 115, 107, 28, 33, 3, 8, 51, 37, 0, 100, 1, 165, 195, 104, 2, 101, 3, 12, 0, 104, 121, 115, 3,
+			16, 37, 12, 89, 0, 97, 109, 105, 114, 101, 122, 3, 21, 101, 115, 0, 4, 3, 34, 0, 1, 101, 104, 2, 32, 0, 1, 101, 115, 2,
+			32, 0, 1, 101, 118, 104, 0, 114, 0, 4, 101, 1, 97, 105, 100, 3, 34, 6, 36, 0, 101, 1, 114, 97, 105, 100, 0, 4, 101, 116,
+			1, 107, 101, 100, 2, 12, 3, 34, 6, 115, 47, 0, 101, 116, 1, 107, 101, 115, 2, 32, 12, 0, 101, 116, 1, 107, 101, 115, 2, 101,
+			114, 12, 0, 101, 116, 1, 107, 101, 115, 2, 101, 116, 12, 0, 101, 116, 1, 107, 110, 111, 107, 2, 12, 0, 101, 116, 1, 107, 115, 105,
+			100, 2, 12, 0, 101, 110, 101, 1, 117, 114, 111, 102, 3, 34, 6, 116, 50, 14, 0, 101, 114, 1, 21, 2, 101, 115, 32, 28, 33, 12,
+			12, 12, 3, 34, 7, 115, 0, 101, 110, 111, 105, 114, 3, 34, 13, 50, 58, 6, 121, 12, 0, 101, 118, 111, 105, 114, 1, 32, 117, 97,
+			3, 34, 13, 58, 6, 35, 12, 34, 0, 105, 99, 107, 115, 104, 97, 119, 3, 34, 36, 49, 91, 108, 12, 0, 105, 99, 107, 115, 104, 97,
+			119, 101, 114, 3, 34, 36, 49, 91, 108, 12, 108, 0, 101, 115, 101, 114, 118, 111, 105, 114, 8, 3, 34, 36, 89, 115, 34, 84, 39, 6,
+			35, 12, 0, 101, 115, 101, 114, 118, 111, 105, 114, 3, 34, 36, 89, 115, 34, 84, 39, 35, 12, 0, 105, 111, 106, 97, 3, 34, 37, 6,
+			108, 49, 117, 0, 4, 101, 97, 108, 105, 116, 121, 3, 34, 37, 6, 117, 55, 37, 47, 37, 0, 101, 97, 108, 105, 116, 121, 1, 32, 108,
+			97, 117, 116, 114, 105, 118, 0, 101, 101, 99, 101, 3, 34, 37, 12, 89, 0, 101, 99, 117, 116, 3, 34, 37, 49, 108, 72, 0, 101, 115,
+			101, 97, 114, 99, 104, 3, 34, 37, 89, 6, 132, 12, 76, 0, 105, 99, 104, 101, 108, 105, 101, 117, 3, 34, 37, 91, 55, 57, 6, 132,
+			0, 111, 117, 103, 101, 3, 34, 40, 12, 91, 0, 4, 100, 1, 97, 115, 2, 101, 108, 3, 34, 72, 0, 100, 1, 111, 2, 101, 108, 12,
+			12, 0, 100, 1, 111, 2, 101, 110, 12, 12, 0, 100, 1, 117, 98, 2, 101, 25, 0, 100, 1, 121, 2, 101, 32, 0, 100, 101, 1, 97,
+			103, 3, 34, 72, 14, 0, 101, 1, 118, 97, 104, 3, 34, 108, 0, 111, 113, 117, 101, 102, 111, 114, 116, 3, 34, 108, 49, 83, 6, 108,
+			12, 0, 111, 98, 105, 101, 8, 3, 34, 108, 71, 37, 0, 111, 100, 110, 101, 121, 3, 34, 108, 72, 50, 37, 0, 111, 103, 101, 114, 3,
+			34, 108, 75, 108, 0, 101, 116, 1, 109, 121, 107, 101, 98, 3, 34, 108, 86, 0, 117, 115, 115, 101, 108, 108, 3, 34, 108, 89, 14, 55,
+			0, 117, 115, 104, 109, 111, 114, 101, 3, 34, 108, 91, 65, 125, 12, 0, 4, 101, 1, 100, 97, 108, 115, 2, 21, 3, 34, 109, 0, 101,
+			1, 106, 184, 195, 104, 2, 21, 0, 101, 114, 1, 17, 67, 2, 32, 12, 12, 0, 4, 101, 116, 1, 17, 67, 2, 32, 12, 12, 3, 34,
+			109, 86, 0, 101, 116, 1, 115, 110, 97, 112, 2, 12, 0, 105, 118, 101, 114, 115, 105, 100, 101, 3, 34, 113, 84, 108, 89, 136, 72, 0,
+			101, 116, 1, 101, 116, 116, 97, 107, 115, 2, 12, 12, 3, 34, 119, 0, 4, 101, 116, 1, 100, 184, 195, 107, 2, 12, 12, 3, 34, 119,
+			47, 0, 101, 116, 1, 101, 98, 184, 195, 107, 2, 12, 12, 0, 101, 116, 1, 101, 100, 121, 114, 103, 2, 12, 12, 0, 101, 116, 1, 101,
+			100, 165, 195, 114, 2, 12, 12, 0, 101, 116, 1, 101, 100, 184, 195, 109, 2, 12, 12, 0, 101, 116, 1, 101, 102, 102, 97, 114, 116, 115,
+			2, 12, 12, 0, 101, 116, 1, 101, 103, 97, 108, 107, 2, 12, 12, 0, 101, 116, 1, 101, 103, 103, 121, 98, 2, 12, 12, 0, 101, 116,
+			1, 101, 103, 105, 108, 2, 12, 12, 0, 101, 116, 1, 101, 103, 110, 101, 112, 103, 97, 100, 2, 12, 12, 0, 101, 116, 1, 101, 105, 108,
+			105, 109, 97, 102, 2, 12, 12, 0, 101, 116, 1, 101, 107, 115, 101, 110, 110, 101, 109, 2, 12, 12, 0, 101, 116, 1, 101, 107, 115, 105,
+			102, 2, 12, 12, 0, 101, 116, 1, 101, 108, 97, 116, 2, 12, 12, 0, 101, 116, 1, 101, 108, 97, 116, 165, 195, 112, 2, 12, 12, 0,
+			101, 116, 1, 101, 108, 111, 107, 115, 2, 12, 12, 0, 101, 116, 1, 101, 109, 109, 101, 116, 115, 2, 12, 12, 0, 101, 116, 1, 101, 110,
+			97, 118, 100, 166, 195, 115, 2, 12, 12, 0, 101, 116, 1, 101, 110, 101, 2, 12, 12, 0, 101, 116, 1, 101, 116, 115, 114, 184, 195, 102,
+			2, 12, 12, 0, 101, 116, 1, 101, 116, 116, 121, 98, 2, 12, 12, 0, 101, 116, 1, 101, 117, 107, 115, 2, 12, 12, 0, 101, 116, 1,
+			101, 118, 114, 97, 2, 12, 12, 0, 101, 116, 1, 103, 105, 100, 114, 166, 195, 102, 2, 12, 12, 0, 101, 116, 1, 108, 101, 103, 101, 114,
+			2, 12, 12, 0, 101, 116, 1, 110, 101, 104, 2, 32, 0, 101, 116, 1, 111, 116, 101, 118, 2, 12, 12, 0, 101, 116, 1, 114, 101, 100,
+			110, 117, 2, 12, 12, 0, 101, 116, 1, 114, 101, 103, 114, 111, 98, 0, 101, 116, 1, 114, 111, 102, 2, 12, 12, 0, 101, 116, 1, 115,
+			2, 12, 12, 12, 0, 101, 116, 1, 115, 100, 110, 97, 108, 2, 12, 12, 0, 101, 116, 1, 117, 32, 101, 114, 184, 195, 103, 2, 12, 12,
+			0, 101, 116, 1, 117, 32, 101, 114, 184, 195, 103, 2, 12, 12, 0, 101, 116, 1, 117, 32, 101, 118, 97, 104, 2, 12, 12, 0, 101, 116,
+			1, 117, 32, 103, 105, 100, 2, 12, 12, 0, 101, 116, 1, 117, 32, 103, 105, 100, 32, 101, 2, 12, 12, 0, 101, 116, 1, 117, 32, 103,
+			105, 100, 32, 116, 2, 12, 12, 0, 101, 116, 1, 117, 32, 103, 105, 109, 32, 101, 2, 12, 12, 0, 101, 116, 1, 117, 32, 103, 105, 109,
+			32, 116, 2, 12, 12, 0, 101, 116, 1, 117, 32, 103, 111, 32, 116, 101, 114, 2, 12, 0, 101, 116, 1, 117, 32, 109, 101, 100, 32, 101,
+			2, 12, 12, 0, 101, 116, 1, 117, 32, 109, 101, 100, 32, 116, 2, 12, 12, 0, 101, 116, 1, 117, 32, 110, 101, 2, 12, 12, 0, 101,
+			116, 1, 117, 32, 114, 97, 104, 2, 12, 12, 0, 101, 116, 1, 117, 32, 114, 101, 106, 32, 116, 2, 12, 12, 0, 101, 116, 1, 117, 32,
+			114, 184, 195, 103, 2, 12, 12, 0, 101, 116, 1, 117, 32, 115, 111, 32, 101, 2, 12, 12, 0, 101, 116, 1, 117, 32, 115, 111, 32, 116,
+			2, 12, 12, 0, 101, 116, 1, 117, 32, 116, 114, 111, 106, 103, 2, 12, 12, 0, 101, 116, 1, 118, 105, 108, 2, 12, 12, 0, 101, 116,
+			1, 121, 98, 2, 12, 12, 0, 101, 116, 8, 2, 32, 12, 12, 0, 101, 116, 8, 100, 97, 109, 2, 12, 12, 0, 101, 116, 8, 100, 110,
+			105, 2, 12, 12, 0, 101, 116, 8, 100, 114, 111, 2, 12, 12, 0, 101, 116, 8, 112, 111, 2, 12, 12, 0, 101, 116, 8, 117, 2, 32,
+			109, 111, 100, 32, 12, 12, 0, 101, 116, 8, 117, 32, 114, 101, 108, 108, 101, 32, 116, 101, 114, 2, 32, 12, 12, 0, 101, 116, 116, 2,
+			12, 12, 12, 12, 12, 12, 12, 3, 34, 120, 47, 0, 97, 106, 97, 104, 3, 34, 121, 75, 117, 0, 111, 97, 100, 8, 2, 32, 3, 34,
+			132, 58, 72, 0, 4, 101, 8, 116, 110, 101, 2, 32, 3, 51, 6, 115, 0, 101, 8, 116, 110, 101, 2, 101, 110, 32, 0, 101, 8, 116,
+			110, 101, 2, 101, 114, 32, 0, 101, 8, 116, 110, 101, 2, 101, 114, 110, 101, 32, 0, 101, 8, 116, 110, 101, 2, 101, 114, 110, 101, 115,
+			32, 0, 101, 8, 116, 110, 101, 2, 101, 114, 115, 32, 0, 101, 110, 101, 1, 105, 115, 2, 12, 3, 51, 6, 115, 50, 14, 0, 105, 103,
+			104, 116, 3, 51, 6, 136, 47, 0, 105, 1, 10, 2, 28, 33, 3, 51, 7, 37, 0, 101, 2, 116, 105, 111, 110, 12, 12, 12, 12, 3,
+			51, 14, 0, 104, 111, 100, 101, 2, 115, 105, 3, 51, 39, 72, 114, 0, 117, 110, 1, 32, 101, 109, 111, 104, 3, 51, 108, 50, 0, 104,
+			101, 117, 2, 109, 97, 3, 51, 108, 57, 0, 117, 103, 98, 121, 3, 51, 108, 81, 71, 37, 0, 4, 101, 1, 17, 67, 2, 32, 3, 51,
+			109, 0, 101, 1, 17, 67, 2, 115, 116, 32, 0, 101, 1, 17, 67, 2, 115, 116, 101, 32, 0, 101, 1, 100, 108, 166, 195, 0, 101, 1,
+			100, 110, 105, 109, 2, 21, 0, 101, 1, 121, 100, 0, 105, 99, 104, 105, 101, 3, 51, 111, 76, 37, 0, 101, 103, 103, 97, 101, 3, 51,
+			115, 81, 115, 57, 0, 101, 97, 103, 97, 110, 3, 51, 115, 81, 117, 50, 0, 101, 115, 111, 108, 117, 116, 105, 111, 110, 3, 51, 115, 89,
+			39, 55, 40, 91, 6, 39, 50, 0, 101, 1, 101, 117, 116, 115, 2, 110, 3, 51, 116, 0, 104, 111, 100, 101, 115, 105, 97, 3, 51, 124,
+			72, 6, 114, 89, 57, 118, 0, 104, 111, 100, 101, 8, 3, 51, 132, 58, 72, 0, 100, 1, 111, 2, 114, 105, 110, 3, 72, 0, 4, 100,
+			101, 1, 101, 106, 102, 3, 108, 0, 101, 1, 101, 100, 2, 115, 0, 101, 1, 101, 106, 2, 115, 0, 101, 1, 111, 104, 0, 101, 1, 166,
+			195, 2, 12, 0, 101, 1, 166, 195, 2, 32, 24, 0, 101, 1, 166, 195, 108, 0, 101, 1, 184, 195, 107, 0, 101, 1, 184, 195, 109, 115,
+			0, 101, 114, 1, 17, 65, 2, 32, 12, 12, 0, 101, 116, 1, 117, 2, 32, 12, 12, 3, 108, 20, 86, 0, 4, 101, 1, 100, 108, 121,
+			109, 2, 21, 3, 109, 0, 101, 1, 105, 108, 2, 21, 0, 101, 1, 111, 99, 115, 2, 21, 0, 101, 1, 121, 2, 21, 12, 0, 101, 1,
+			121, 115, 2, 110, 101, 100, 115, 195, 166, 116, 116, 101, 110, 100, 101, 0, 101, 1, 17, 65, 2, 32, 12, 12, 3, 109, 11, 0, 4, 101,
+			110, 101, 1, 17, 65, 2, 32, 3, 109, 50, 14, 0, 101, 110, 101, 1, 17, 65, 2, 115, 32, 0, 101, 114, 110, 101, 1, 17, 65, 2,
+			32, 12, 12, 0, 101, 114, 110, 101, 1, 17, 65, 2, 115, 32, 12, 12, 0, 101, 116, 1, 166, 195, 2, 32, 12, 12, 12, 3, 109, 86,
+			0, 101, 115, 1, 17, 65, 2, 32, 3, 109, 89, 0, 4, 1, 98, 3, 110, 0, 2, 25, 0, 4, 101, 103, 1, 166, 195, 115, 2, 101,
+			110, 3, 110, 36, 57, 0, 101, 103, 1, 166, 195, 115, 2, 110, 101, 0, 103, 114, 101, 1, 166, 195, 3, 110, 58, 51, 108, 0, 103, 101,
+			114, 1, 166, 195, 3, 110, 58, 108, 0, 4, 101, 1, 17, 65, 2, 110, 32, 3, 110, 109, 0, 101, 1, 17, 65, 2, 110, 115, 32, 0,
+			114, 101, 2, 32, 0, 114, 101, 114, 2, 32, 0, 114, 101, 114, 2, 110, 101, 32, 0, 101, 116, 1, 17, 65, 2, 32, 12, 12, 3, 110,
+			109, 86, 0, 4, 101, 116, 1, 97, 103, 114, 97, 109, 2, 12, 12, 3, 119, 47, 0, 101, 116, 1, 97, 122, 97, 110, 2, 12, 12, 0,
+			101, 116, 1, 101, 116, 115, 101, 106, 184, 195, 104, 2, 12, 12, 0, 7, 6, 115, 0, 1, 105, 109, 109, 111, 107, 2, 101, 3, 0, 4,
+			1, 101, 99, 99, 117, 115, 3, 6, 0, 1, 105, 109, 111, 114, 112, 109, 111, 107, 0, 97, 99, 101, 1, 108, 97, 3, 6, 89, 118, 89,
+			0, 1, 105, 109, 109, 111, 107, 2, 32, 3, 8, 0, 4, 99, 1, 97, 98, 97, 116, 2, 111, 3, 8, 89, 49, 0, 99, 1, 105, 115,
+			110, 97, 114, 102, 2, 111, 0, 4, 111, 109, 1, 21, 21, 3, 8, 89, 109, 65, 0, 111, 109, 109, 1, 21, 21, 2, 101, 0, 105, 101,
+			103, 102, 114, 105, 101, 100, 3, 21, 100, 101, 0, 97, 105, 110, 116, 101, 3, 21, 102, 114, 0, 105, 103, 110, 111, 114, 101, 3, 21, 105,
+			116, 0, 4, 3, 89, 0, 1, 10, 2, 32, 28, 33, 14, 128, 128, 129, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 1, 101, 99, 98,
+			97, 0, 1, 101, 99, 101, 114, 0, 1, 101, 99, 120, 101, 0, 1, 101, 100, 101, 108, 114, 101, 100, 110, 97, 0, 1, 103, 108, 97, 115,
+			0, 1, 110, 101, 100, 105, 115, 101, 114, 0, 1, 110, 101, 114, 101, 102, 114, 101, 116, 110, 105, 0, 1, 110, 101, 116, 115, 105, 115, 107,
+			101, 0, 1, 121, 107, 0, 2, 17, 65, 0, 2, 99, 105, 103, 97, 114, 0, 2, 105, 101, 0, 2, 106, 0, 2, 111, 109, 107, 111, 115,
+			116, 12, 0, 2, 115, 104, 0, 99, 1, 97, 102, 0, 99, 2, 101, 0, 115, 0, 99, 1, 105, 100, 2, 105, 112, 3, 89, 6, 0, 99,
+			101, 110, 101, 1, 105, 2, 115, 3, 89, 6, 36, 50, 13, 0, 115, 105, 115, 1, 97, 104, 99, 3, 89, 6, 111, 0, 97, 105, 110, 116,
+			3, 89, 6, 115, 57, 50, 72, 0, 117, 114, 1, 97, 108, 3, 89, 6, 123, 34, 0, 111, 109, 1, 111, 109, 111, 114, 107, 3, 89, 6,
+			124, 65, 0, 99, 101, 110, 101, 3, 89, 36, 50, 14, 0, 99, 101, 110, 101, 114, 3, 89, 36, 50, 109, 0, 4, 105, 103, 1, 32, 101,
+			114, 97, 98, 2, 32, 3, 89, 37, 0, 105, 103, 1, 32, 101, 114, 97, 98, 2, 32, 116, 105, 108, 0, 105, 103, 2, 32, 100, 101, 116,
+			0, 105, 103, 2, 32, 117, 110, 100, 115, 107, 121, 108, 100, 12, 0, 105, 103, 8, 2, 32, 109, 105, 103, 0, 101, 97, 116, 116, 108, 101,
+			3, 89, 37, 6, 117, 47, 13, 55, 0, 101, 121, 109, 111, 117, 114, 8, 3, 89, 37, 12, 65, 125, 12, 0, 105, 111, 110, 8, 3, 89,
+			37, 12, 109, 50, 0, 105, 100, 110, 101, 121, 3, 89, 37, 72, 50, 37, 0, 101, 97, 115, 111, 110, 8, 3, 89, 37, 89, 13, 50, 0,
+			111, 105, 103, 110, 3, 89, 39, 117, 68, 0, 105, 111, 117, 120, 3, 89, 40, 12, 0, 116, 101, 112, 104, 101, 110, 3, 89, 47, 37, 84,
+			13, 50, 0, 116, 114, 105, 107, 101, 3, 89, 47, 51, 136, 49, 0, 116, 101, 97, 108, 116, 104, 3, 89, 47, 115, 55, 87, 0, 116, 97,
+			116, 101, 1, 32, 101, 114, 105, 112, 109, 101, 2, 32, 3, 89, 47, 115, 57, 47, 0, 116, 101, 97, 107, 3, 89, 47, 115, 57, 49, 0,
+			116, 97, 99, 121, 8, 3, 89, 47, 115, 57, 89, 37, 0, 112, 101, 97, 107, 3, 89, 48, 37, 12, 49, 0, 112, 101, 99, 105, 97, 108,
+			2, 32, 98, 114, 97, 110, 99, 104, 3, 89, 48, 115, 89, 57, 112, 55, 0, 4, 99, 1, 101, 2, 111, 98, 97, 114, 3, 89, 49, 0,
+			99, 1, 101, 109, 2, 97, 108, 0, 99, 1, 105, 99, 110, 97, 114, 102, 2, 111, 0, 99, 2, 111, 111, 0, 99, 2, 111, 114, 0, 99,
+			2, 114, 97, 112, 0, 99, 104, 2, 111, 111, 108, 0, 4, 99, 1, 97, 109, 2, 97, 114, 97, 3, 89, 49, 6, 0, 99, 1, 105, 100,
+			2, 111, 117, 110, 116, 0, 99, 111, 114, 116, 1, 101, 3, 89, 49, 6, 108, 12, 47, 0, 99, 114, 101, 119, 100, 114, 105, 118, 101, 114,
+			3, 89, 49, 51, 40, 72, 34, 136, 84, 108, 0, 99, 111, 2, 116, 3, 89, 49, 108, 0, 99, 111, 110, 101, 3, 89, 49, 108, 50, 0,
+			107, 97, 116, 101, 98, 111, 97, 114, 100, 3, 89, 49, 115, 57, 47, 71, 125, 12, 72, 0, 107, 121, 108, 105, 110, 101, 3, 89, 49, 136,
+			55, 136, 50, 0, 108, 105, 109, 108, 105, 110, 101, 3, 89, 55, 113, 65, 55, 136, 50, 0, 104, 105, 110, 101, 3, 89, 57, 136, 50, 13,
+			0, 119, 101, 101, 116, 3, 89, 58, 37, 12, 47, 0, 109, 105, 116, 104, 3, 89, 65, 36, 47, 0, 109, 121, 116, 104, 101, 3, 89, 65,
+			121, 12, 57, 86, 0, 109, 105, 108, 101, 121, 3, 89, 65, 136, 55, 37, 0, 116, 114, 97, 105, 103, 104, 116, 3, 89, 72, 34, 115, 12,
+			57, 47, 0, 113, 117, 97, 115, 104, 3, 89, 81, 58, 108, 91, 0, 4, 195, 165, 1, 32, 100, 101, 109, 2, 32, 3, 89, 108, 0, 195,
+			165, 1, 32, 100, 108, 111, 104, 2, 32, 0, 195, 165, 1, 32, 101, 100, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32, 101, 114, 2,
+			32, 0, 195, 165, 1, 32, 101, 118, 105, 108, 98, 2, 32, 0, 195, 165, 1, 32, 103, 111, 2, 32, 118, 105, 100, 101, 114, 101, 0, 195,
+			165, 1, 32, 105, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32, 108, 105, 118, 2, 32, 0, 195, 165, 1, 32, 114, 2, 32, 98, 97,
+			110, 103, 101, 0, 195, 165, 1, 32, 114, 101, 2, 32, 0, 195, 165, 1, 32, 115, 101, 2, 32, 0, 195, 165, 1, 32, 117, 100, 32, 108,
+			105, 118, 2, 32, 0, 195, 165, 1, 32, 118, 101, 108, 98, 2, 32, 0, 195, 165, 8, 2, 32, 98, 101, 115, 118, 195, 166, 114, 108, 105,
+			103, 0, 195, 165, 8, 2, 32, 98, 108, 101, 118, 32, 0, 195, 165, 8, 2, 32, 98, 108, 105, 118, 101, 114, 32, 0, 195, 165, 8, 2,
+			32, 100, 101, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 100, 101, 110, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 102, 105, 107, 32,
+			0, 195, 165, 8, 2, 32, 103, 105, 107, 32, 0, 195, 165, 8, 2, 32, 103, 195, 165, 32, 0, 195, 165, 8, 2, 32, 103, 195, 165, 114,
+			32, 0, 195, 165, 8, 2, 32, 103, 195, 184, 114, 101, 32, 0, 195, 165, 8, 2, 32, 104, 17, 65, 110, 32, 109, 195, 165, 0, 195, 165,
+			8, 2, 32, 104, 97, 118, 100, 101, 32, 0, 195, 165, 8, 2, 32, 104, 97, 118, 101, 32, 0, 195, 165, 8, 2, 32, 104, 101, 114, 32,
+			0, 195, 165, 8, 2, 32, 104, 111, 108, 100, 32, 0, 195, 165, 8, 2, 32, 105, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 107, 97,
+			110, 32, 0, 195, 165, 8, 2, 32, 107, 111, 109, 32, 0, 195, 165, 8, 2, 32, 107, 111, 109, 109, 101, 114, 32, 0, 195, 165, 8, 2,
+			32, 108, 97, 100, 32, 0, 195, 165, 8, 2, 32, 108, 97, 110, 103, 32, 0, 195, 165, 8, 2, 32, 110, 195, 166, 114, 32, 0, 195, 165,
+			8, 2, 32, 115, 105, 107, 107, 101, 114, 32, 0, 195, 165, 8, 2, 32, 115, 107, 97, 108, 32, 0, 195, 165, 8, 2, 32, 115, 107, 101,
+			116, 101, 32, 0, 195, 165, 8, 2, 32, 116, 97, 103, 101, 114, 32, 0, 195, 165, 8, 2, 32, 118, 101, 100, 32, 0, 195, 165, 8, 2,
+			32, 118, 105, 32, 107, 97, 110, 32, 0, 195, 165, 8, 2, 32, 118, 105, 32, 109, 195, 165, 0, 195, 165, 8, 2, 32, 118, 105, 108, 108,
+			101, 32, 0, 195, 165, 8, 32, 101, 100, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 101, 100, 32, 108, 105, 118, 2, 32,
+			0, 195, 165, 8, 32, 103, 105, 100, 2, 32, 0, 195, 165, 8, 32, 105, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 105,
+			32, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 110, 97, 104, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 110, 97, 104,
+			32, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 110, 97, 104, 32, 114, 184, 195, 103, 2, 32, 0, 195, 165, 8, 32, 110, 117, 104, 32,
+			101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 110, 117, 104, 32, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 114, 111, 102, 0,
+			195, 165, 8, 32, 117, 100, 32, 101, 108, 108, 105, 118, 2, 32, 0, 195, 165, 8, 32, 117, 100, 32, 101, 108, 108, 105, 118, 2, 32, 0,
+			195, 165, 8, 32, 117, 100, 32, 114, 101, 2, 32, 0, 117, 110, 100, 97, 121, 3, 89, 108, 50, 72, 37, 0, 117, 110, 115, 101, 116, 8,
+			3, 89, 108, 50, 89, 115, 47, 0, 117, 108, 108, 105, 118, 97, 110, 3, 89, 108, 55, 37, 84, 112, 50, 0, 117, 116, 104, 101, 114, 3,
+			89, 108, 86, 108, 0, 105, 99, 105, 108, 105, 101, 110, 3, 89, 111, 89, 6, 111, 55, 57, 14, 50, 0, 101, 105, 110, 101, 3, 89, 115,
+			50, 112, 0, 97, 105, 100, 1, 32, 116, 114, 111, 112, 3, 89, 117, 6, 37, 72, 0, 97, 118, 111, 105, 114, 3, 89, 117, 84, 39, 35,
+			12, 0, 97, 108, 111, 111, 110, 3, 89, 118, 55, 6, 40, 12, 50, 0, 105, 103, 1, 32, 114, 101, 2, 32, 116, 105, 108, 3, 89, 121,
+			57, 0, 117, 98, 115, 116, 105, 116, 117, 116, 105, 111, 110, 8, 3, 89, 123, 71, 89, 47, 111, 47, 123, 91, 6, 124, 50, 0, 117, 98,
+			115, 116, 105, 116, 117, 116, 105, 111, 110, 3, 89, 123, 71, 89, 47, 111, 47, 123, 91, 124, 50, 0, 195, 165, 8, 2, 32, 104, 97, 109,
+			12, 3, 89, 125, 0, 117, 112, 112, 111, 114, 116, 3, 89, 125, 48, 6, 108, 34, 72, 0, 105, 114, 8, 2, 32, 3, 89, 132, 12, 0,
+			4, 117, 114, 102, 3, 89, 132, 12, 83, 0, 117, 114, 102, 2, 101, 0, 4, 105, 103, 1, 32, 97, 114, 102, 2, 32, 3, 89, 136, 0,
+			105, 103, 1, 32, 100, 101, 114, 2, 32, 0, 105, 103, 1, 32, 100, 111, 108, 2, 32, 0, 105, 103, 1, 32, 100, 184, 195, 98, 2, 32,
+			0, 105, 103, 1, 32, 100, 184, 195, 107, 115, 2, 32, 0, 105, 103, 1, 32, 100, 184, 195, 114, 98, 2, 32, 0, 105, 103, 1, 32, 101,
+			2, 32, 12, 0, 105, 103, 1, 32, 101, 2, 32, 109, 105, 103, 0, 105, 103, 1, 32, 101, 2, 32, 116, 105, 108, 0, 105, 103, 1, 32,
+			101, 100, 2, 32, 0, 105, 103, 1, 32, 101, 100, 110, 101, 118, 2, 32, 0, 105, 103, 1, 32, 101, 103, 103, 121, 104, 2, 32, 0, 105,
+			103, 1, 32, 101, 108, 184, 195, 102, 2, 32, 0, 105, 103, 1, 32, 101, 114, 166, 195, 108, 107, 114, 101, 2, 32, 0, 105, 103, 1, 32,
+			101, 114, 184, 195, 103, 2, 32, 100, 101, 116, 0, 105, 103, 1, 32, 103, 101, 110, 115, 2, 32, 0, 105, 103, 1, 32, 103, 110, 97, 118,
+			116, 2, 32, 0, 105, 103, 1, 32, 103, 111, 108, 115, 2, 32, 0, 105, 103, 1, 32, 103, 111, 116, 2, 32, 0, 105, 103, 1, 32, 107,
+			97, 2, 32, 0, 105, 103, 1, 32, 107, 105, 103, 2, 32, 0, 105, 103, 1, 32, 107, 108, 111, 102, 32, 114, 101, 2, 32, 0, 105, 103,
+			1, 32, 108, 105, 116, 2, 32, 0, 105, 103, 1, 32, 109, 111, 107, 2, 32, 0, 105, 103, 1, 32, 110, 17, 65, 2, 32, 116, 105, 108,
+			0, 105, 103, 1, 32, 110, 97, 104, 2, 32, 0, 105, 103, 1, 32, 110, 97, 109, 2, 32, 0, 105, 103, 1, 32, 110, 101, 100, 2, 32,
+			0, 105, 103, 1, 32, 110, 117, 104, 2, 32, 0, 105, 103, 1, 32, 111, 114, 116, 101, 98, 2, 32, 0, 105, 103, 1, 32, 114, 101, 2,
+			32, 0, 105, 103, 1, 32, 114, 101, 115, 2, 32, 111, 109, 0, 105, 103, 1, 32, 114, 111, 102, 2, 32, 0, 105, 103, 1, 32, 114, 111,
+			110, 115, 2, 32, 0, 105, 103, 1, 32, 114, 111, 114, 116, 101, 98, 2, 32, 0, 105, 103, 1, 32, 114, 165, 195, 2, 32, 0, 105, 103,
+			1, 32, 114, 165, 195, 108, 115, 2, 32, 0, 105, 103, 1, 32, 114, 184, 195, 2, 32, 0, 105, 103, 1, 32, 116, 2, 32, 0, 105, 103,
+			1, 32, 116, 97, 115, 2, 32, 0, 105, 103, 1, 32, 116, 101, 2, 32, 0, 105, 103, 1, 32, 116, 101, 2, 32, 116, 105, 108, 0, 105,
+			103, 1, 32, 118, 97, 103, 2, 32, 0, 105, 103, 1, 32, 118, 97, 103, 2, 32, 116, 105, 108, 0, 105, 103, 1, 32, 165, 195, 102, 2,
+			32, 0, 105, 103, 1, 32, 165, 195, 103, 2, 32, 0, 105, 103, 1, 32, 165, 195, 108, 115, 2, 32, 0, 105, 103, 1, 32, 165, 195, 112,
+			2, 32, 0, 105, 103, 1, 32, 165, 195, 115, 2, 32, 111, 109, 0, 105, 103, 1, 32, 165, 195, 116, 115, 2, 32, 0, 105, 103, 8, 2,
+			32, 97, 102, 32, 0, 105, 103, 8, 2, 32, 97, 108, 101, 110, 101, 0, 105, 103, 8, 2, 32, 102, 111, 114, 0, 105, 103, 8, 2, 32,
+			105, 32, 100, 101, 17, 67, 0, 105, 103, 8, 2, 32, 105, 110, 100, 32, 0, 105, 103, 8, 2, 32, 109, 101, 100, 0, 105, 103, 8, 2,
+			32, 111, 109, 0, 105, 103, 8, 2, 32, 111, 118, 101, 114, 0, 105, 103, 8, 2, 32, 112, 195, 165, 32, 0, 105, 103, 8, 2, 32, 115,
+			101, 108, 118, 0, 105, 103, 8, 2, 32, 117, 100, 32, 0, 105, 103, 8, 32, 100, 101, 109, 2, 32, 0, 105, 103, 8, 32, 101, 100, 2,
+			32, 116, 105, 108, 0, 105, 103, 8, 32, 102, 97, 2, 32, 0, 105, 103, 8, 32, 105, 2, 32, 0, 105, 103, 8, 32, 110, 97, 104, 2,
+			32, 0, 105, 103, 8, 32, 184, 195, 108, 107, 2, 32, 0, 105, 103, 104, 116, 115, 101, 101, 105, 110, 103, 3, 89, 136, 47, 89, 37, 12,
+			36, 68, 0, 4, 99, 104, 3, 91, 0, 104, 1, 97, 104, 0, 104, 1, 97, 109, 115, 0, 104, 1, 97, 110, 0, 104, 1, 97, 112, 2,
+			97, 0, 104, 1, 105, 98, 2, 111, 112, 0, 104, 1, 105, 102, 2, 101, 114, 0, 104, 1, 105, 114, 116, 0, 104, 1, 111, 109, 2, 101,
+			0, 104, 1, 114, 97, 109, 0, 104, 1, 117, 112, 0, 104, 1, 117, 115, 2, 105, 0, 104, 2, 101, 114, 105, 102, 0, 104, 8, 0, 105,
+			2, 111, 110, 0, 115, 105, 2, 111, 0, 104, 105, 114, 101, 3, 91, 13, 0, 104, 111, 119, 3, 91, 39, 40, 0, 106, 2, 111, 3, 91,
+			57, 0, 104, 111, 116, 3, 91, 108, 47, 0, 104, 101, 112, 104, 101, 114, 100, 3, 91, 115, 48, 20, 108, 72, 0, 104, 101, 105, 107, 3,
+			91, 121, 113, 49, 0, 117, 103, 97, 114, 8, 2, 32, 3, 91, 123, 81, 108, 0, 104, 111, 114, 2, 116, 3, 91, 125, 0, 101, 97, 110,
+			8, 2, 32, 3, 91, 125, 12, 50, 0, 101, 97, 110, 115, 8, 2, 32, 3, 91, 125, 12, 50, 89, 0, 104, 101, 114, 2, 119, 111, 111,
+			100, 3, 91, 132, 12, 0, 104, 101, 114, 109, 97, 110, 3, 91, 132, 12, 65, 118, 50, 0, 104, 105, 114, 116, 3, 91, 132, 47, 0, 104,
+			105, 114, 116, 101, 110, 3, 91, 132, 47, 13, 50, 0, 104, 101, 114, 108, 111, 99, 107, 3, 91, 132, 55, 108, 49, 0, 7, 6, 116, 0,
+			8, 114, 97, 2, 32, 100, 101, 99, 111, 3, 0, 104, 1, 110, 97, 109, 97, 115, 2, 97, 3, 8, 87, 0, 101, 1, 116, 2, 32, 3,
+			14, 11, 0, 97, 110, 103, 117, 121, 8, 3, 21, 102, 114, 0, 4, 3, 47, 0, 1, 114, 111, 116, 2, 101, 114, 101, 0, 104, 1, 117,
+			108, 2, 101, 114, 0, 104, 1, 117, 114, 0, 104, 8, 2, 101, 111, 0, 116, 0, 116, 1, 106, 184, 195, 104, 2, 97, 108, 101, 114, 0,
+			4, 101, 107, 8, 97, 105, 100, 101, 109, 3, 47, 6, 36, 49, 0, 101, 107, 8, 101, 103, 101, 108, 0, 101, 107, 8, 111, 101, 100, 105,
+			118, 0, 101, 107, 8, 111, 105, 108, 98, 105, 98, 0, 101, 107, 8, 111, 107, 97, 110, 105, 112, 0, 101, 107, 8, 111, 107, 115, 105, 100,
+			0, 101, 107, 8, 111, 110, 111, 102, 0, 101, 107, 8, 111, 112, 97, 0, 101, 107, 8, 111, 112, 121, 104, 0, 101, 107, 8, 111, 116, 111,
+			102, 0, 101, 107, 8, 111, 116, 112, 121, 108, 103, 0, 101, 107, 8, 111, 116, 114, 97, 107, 0, 101, 107, 8, 114, 97, 104, 99, 0, 4,
+			8, 2, 32, 98, 111, 110, 101, 3, 47, 6, 37, 12, 2, 0, 8, 2, 32, 115, 104, 105, 114, 116, 0, 101, 1, 103, 121, 108, 2, 21,
+			3, 47, 14, 0, 101, 102, 195, 184, 1, 114, 111, 112, 2, 108, 106, 101, 3, 47, 14, 83, 6, 133, 0, 114, 101, 118, 111, 114, 8, 3,
+			47, 16, 115, 84, 108, 0, 114, 101, 110, 99, 104, 99, 111, 97, 116, 3, 47, 34, 6, 115, 50, 91, 49, 4, 39, 40, 72, 0, 101, 114,
+			101, 115, 115, 2, 97, 110, 116, 3, 47, 34, 112, 89, 0, 4, 101, 114, 101, 115, 115, 101, 114, 101, 1, 110, 105, 3, 47, 34, 112, 89,
+			6, 36, 108, 0, 101, 114, 101, 115, 115, 101, 114, 101, 114, 1, 110, 105, 0, 101, 114, 101, 115, 115, 101, 114, 101, 116, 1, 110, 105, 3,
+			47, 34, 112, 89, 6, 36, 108, 86, 0, 114, 195, 168, 115, 8, 2, 32, 3, 47, 34, 115, 0, 114, 97, 100, 101, 1, 32, 100, 108, 114,
+			111, 119, 3, 47, 34, 115, 57, 72, 0, 4, 114, 97, 99, 101, 121, 8, 3, 47, 34, 115, 57, 89, 37, 0, 114, 97, 99, 121, 8, 0,
+			4, 114, 101, 100, 105, 118, 116, 101, 100, 101, 108, 3, 47, 34, 117, 83, 72, 13, 72, 36, 55, 0, 114, 101, 100, 118, 116, 101, 100, 101,
+			108, 0, 4, 101, 8, 2, 32, 3, 47, 36, 0, 101, 8, 115, 105, 2, 32, 0, 8, 2, 32, 3, 47, 36, 12, 0, 101, 97, 107, 8,
+			3, 47, 37, 12, 49, 0, 101, 101, 110, 97, 103, 101, 3, 47, 37, 12, 50, 115, 75, 0, 101, 101, 110, 97, 103, 101, 114, 3, 47, 37,
+			12, 50, 115, 75, 108, 0, 101, 97, 99, 104, 8, 3, 47, 37, 12, 76, 0, 111, 109, 98, 115, 3, 47, 40, 12, 65, 89, 0, 111, 109,
+			98, 115, 116, 111, 110, 101, 3, 47, 40, 12, 65, 89, 72, 39, 40, 50, 0, 119, 111, 115, 116, 101, 112, 3, 47, 40, 12, 89, 47, 115,
+			48, 0, 117, 99, 115, 111, 110, 8, 3, 47, 40, 12, 89, 108, 50, 0, 4, 116, 1, 101, 2, 97, 108, 3, 47, 47, 0, 116, 1, 101,
+			2, 105, 100, 0, 116, 2, 195, 184, 106, 0, 116, 1, 97, 110, 2, 195, 184, 106, 3, 47, 47, 4, 0, 117, 100, 111, 114, 3, 47, 57,
+			40, 72, 108, 0, 111, 107, 121, 111, 3, 47, 108, 49, 57, 39, 0, 101, 114, 101, 115, 115, 101, 8, 110, 105, 3, 47, 108, 51, 6, 120,
+			89, 14, 0, 101, 114, 101, 115, 115, 101, 114, 1, 110, 105, 3, 47, 108, 51, 6, 120, 89, 108, 0, 111, 117, 99, 104, 100, 111, 119, 110,
+			3, 47, 108, 76, 72, 35, 58, 50, 0, 105, 109, 111, 116, 104, 121, 3, 47, 113, 65, 127, 87, 37, 0, 101, 1, 105, 109, 111, 107, 21,
+			3, 47, 114, 0, 101, 110, 110, 101, 115, 115, 101, 101, 3, 47, 115, 50, 13, 89, 37, 0, 97, 112, 101, 8, 2, 32, 3, 47, 115, 57,
+			48, 0, 97, 112, 101, 8, 2, 110, 32, 3, 47, 115, 57, 48, 112, 0, 101, 114, 114, 121, 8, 3, 47, 116, 16, 37, 0, 97, 106, 8,
+			2, 32, 109, 97, 104, 97, 108, 3, 47, 117, 91, 0, 111, 119, 110, 3, 47, 121, 58, 50, 0, 111, 114, 113, 117, 97, 121, 3, 47, 125,
+			12, 49, 37, 0, 111, 97, 115, 116, 3, 47, 125, 58, 89, 47, 0, 111, 97, 115, 116, 109, 97, 115, 116, 101, 114, 3, 47, 125, 58, 89,
+			47, 65, 4, 121, 12, 89, 47, 108, 0, 121, 118, 101, 3, 47, 129, 12, 58, 0, 104, 97, 105, 3, 47, 136, 0, 105, 116, 97, 110, 105,
+			99, 3, 47, 136, 47, 6, 118, 50, 111, 49, 0, 105, 109, 101, 115, 1, 32, 101, 104, 116, 3, 47, 136, 65, 89, 0, 105, 109, 101, 115,
+			104, 97, 114, 101, 3, 47, 136, 65, 91, 115, 12, 34, 0, 4, 2, 101, 110, 32, 3, 72, 0, 116, 2, 101, 110, 0, 4, 101, 1, 108,
+			101, 104, 2, 21, 3, 72, 14, 0, 101, 1, 114, 111, 115, 2, 112, 21, 0, 101, 1, 115, 101, 110, 101, 2, 21, 0, 101, 2, 32, 3,
+			72, 14, 11, 0, 4, 101, 114, 1, 103, 121, 108, 3, 72, 109, 0, 101, 114, 1, 115, 101, 110, 101, 2, 21, 0, 106, 8, 3, 76, 0,
+			104, 1, 114, 97, 109, 2, 97, 3, 87, 0, 104, 114, 111, 97, 116, 3, 87, 34, 13, 58, 47, 0, 104, 101, 114, 105, 110, 101, 1, 97,
+			99, 3, 87, 34, 36, 50, 0, 104, 117, 110, 100, 101, 114, 3, 87, 108, 50, 72, 108, 0, 104, 97, 99, 107, 101, 114, 121, 3, 87, 118,
+			49, 14, 34, 113, 0, 104, 105, 114, 100, 3, 87, 132, 12, 72, 0, 115, 104, 1, 105, 110, 97, 106, 2, 97, 114, 3, 91, 0, 7, 6,
+			117, 0, 1, 115, 2, 98, 108, 105, 3, 2, 123, 0, 4, 1, 100, 101, 115, 117, 114, 107, 2, 108, 108, 101, 3, 6, 40, 0, 1, 102,
+			105, 114, 116, 110, 101, 99, 2, 103, 0, 1, 107, 111, 114, 112, 2, 114, 97, 0, 1, 108, 97, 100, 110, 97, 2, 115, 0, 1, 108, 97,
+			104, 99, 2, 112, 0, 1, 112, 97, 99, 97, 2, 108, 99, 111, 0, 1, 114, 101, 106, 2, 115, 97, 108, 101, 109, 0, 1, 116, 107, 97,
+			102, 2, 114, 97, 0, 1, 116, 115, 111, 103, 110, 97, 2, 114, 97, 0, 2, 108, 106, 101, 0, 8, 98, 111, 114, 2, 115, 116, 0, 8,
+			100, 105, 102, 2, 115, 0, 8, 102, 110, 111, 107, 2, 115, 0, 8, 103, 105, 102, 2, 114, 0, 8, 104, 114, 165, 195, 2, 110, 100, 114,
+			101, 100, 101, 0, 8, 107, 108, 97, 107, 2, 110, 0, 8, 107, 110, 111, 107, 2, 114, 115, 0, 8, 108, 111, 118, 2, 109, 101, 0, 8,
+			108, 111, 118, 110, 111, 107, 2, 116, 0, 8, 112, 114, 97, 104, 2, 110, 0, 8, 115, 97, 98, 2, 110, 0, 8, 115, 97, 108, 103, 2,
+			114, 0, 8, 115, 98, 97, 2, 114, 100, 0, 8, 115, 117, 97, 108, 107, 2, 108, 0, 1, 103, 110, 166, 195, 107, 2, 114, 117, 3, 6,
+			40, 10, 0, 4, 1, 100, 110, 111, 104, 2, 114, 97, 3, 6, 40, 12, 0, 8, 17, 67, 97, 108, 2, 110, 101, 0, 8, 109, 109, 111,
+			107, 2, 110, 101, 0, 98, 101, 8, 2, 12, 3, 6, 40, 71, 36, 0, 4, 100, 8, 2, 114, 195, 184, 106, 12, 14, 128, 132, 130, 3,
+			6, 40, 72, 0, 100, 8, 2, 195, 184, 98, 116, 12, 14, 128, 132, 130, 0, 116, 97, 104, 3, 6, 57, 40, 12, 47, 121, 0, 1, 99,
+			108, 97, 99, 2, 116, 116, 97, 3, 6, 108, 0, 99, 107, 121, 1, 116, 110, 101, 107, 3, 6, 108, 49, 37, 0, 4, 1, 107, 109, 111,
+			2, 108, 100, 3, 6, 123, 0, 1, 108, 97, 118, 2, 116, 97, 0, 1, 108, 101, 115, 105, 118, 2, 108, 108, 101, 0, 1, 111, 115, 115,
+			101, 114, 2, 114, 115, 0, 1, 112, 108, 97, 118, 2, 114, 103, 105, 115, 0, 1, 112, 109, 105, 2, 108, 115, 0, 1, 114, 98, 97, 2,
+			112, 116, 0, 1, 115, 101, 114, 2, 114, 115, 0, 8, 2, 108, 195, 166, 107, 107, 101, 114, 0, 8, 98, 98, 105, 107, 2, 116, 122, 0,
+			8, 114, 101, 100, 2, 100, 0, 8, 114, 116, 115, 110, 105, 2, 107, 115, 0, 116, 1, 10, 2, 116, 28, 33, 0, 117, 100, 8, 3, 6,
+			123, 6, 123, 86, 0, 4, 114, 1, 115, 97, 108, 3, 6, 123, 34, 0, 114, 1, 115, 97, 108, 103, 0, 114, 1, 115, 97, 114, 0, 114,
+			1, 115, 110, 101, 99, 0, 114, 1, 115, 110, 101, 109, 0, 114, 1, 115, 110, 111, 116, 0, 114, 1, 115, 115, 101, 114, 100, 0, 114, 1,
+			115, 115, 105, 102, 0, 114, 1, 115, 166, 195, 99, 0, 114, 8, 102, 109, 111, 107, 0, 116, 1, 10, 2, 28, 33, 3, 6, 123, 47, 0,
+			4, 100, 8, 2, 97, 116, 12, 14, 128, 132, 130, 3, 6, 123, 72, 0, 100, 8, 2, 101, 108, 116, 12, 14, 128, 132, 130, 0, 100, 8,
+			2, 121, 12, 14, 128, 132, 130, 0, 100, 8, 2, 195, 165, 100, 12, 14, 128, 132, 130, 0, 102, 111, 114, 8, 3, 6, 123, 83, 108, 12,
+			4, 0, 4, 1, 108, 111, 99, 2, 109, 98, 3, 6, 125, 0, 8, 107, 101, 115, 2, 110, 100, 0, 4, 1, 103, 117, 97, 2, 115, 116,
+			3, 6, 126, 0, 1, 108, 97, 104, 2, 110, 107, 0, 110, 100, 1, 98, 97, 114, 2, 117, 115, 3, 6, 126, 50, 72, 0, 4, 1, 98,
+			105, 116, 115, 101, 118, 2, 108, 3, 6, 129, 0, 1, 100, 101, 99, 111, 114, 112, 2, 114, 101, 0, 1, 102, 114, 97, 112, 2, 109, 101,
+			0, 1, 116, 101, 2, 100, 101, 12, 0, 8, 98, 105, 114, 116, 2, 110, 101, 0, 101, 1, 100, 110, 111, 102, 0, 101, 1, 110, 101, 118,
+			97, 0, 116, 8, 98, 101, 100, 0, 114, 101, 1, 116, 117, 111, 10, 2, 28, 33, 3, 6, 129, 12, 34, 0, 109, 101, 8, 116, 115, 111,
+			107, 3, 6, 129, 65, 14, 0, 4, 1, 110, 101, 118, 111, 114, 112, 3, 6, 130, 0, 8, 110, 101, 109, 0, 100, 101, 8, 2, 21, 21,
+			12, 14, 128, 132, 131, 3, 7, 40, 86, 14, 0, 103, 101, 2, 110, 101, 114, 116, 12, 3, 7, 40, 91, 36, 0, 4, 114, 1, 100, 10,
+			2, 28, 33, 12, 3, 7, 123, 34, 0, 114, 1, 116, 10, 2, 28, 33, 12, 0, 100, 8, 2, 21, 21, 12, 14, 128, 132, 130, 3, 7,
+			123, 86, 0, 114, 101, 1, 10, 2, 12, 12, 12, 28, 33, 3, 7, 129, 12, 108, 0, 101, 122, 1, 103, 3, 8, 36, 89, 0, 1, 112,
+			109, 105, 2, 108, 115, 105, 118, 3, 8, 40, 0, 109, 1, 10, 2, 28, 33, 3, 8, 125, 65, 0, 105, 100, 101, 1, 103, 3, 35, 12,
+			57, 72, 0, 114, 2, 103, 116, 3, 39, 110, 0, 4, 1, 17, 67, 2, 107, 116, 18, 69, 3, 40, 0, 1, 18, 74, 115, 2, 17, 67,
+			18, 76, 0, 1, 104, 2, 106, 101, 12, 0, 1, 104, 2, 108, 18, 76, 0, 1, 104, 2, 108, 101, 0, 1, 104, 2, 108, 116, 0, 1,
+			107, 2, 17, 67, 101, 0, 1, 107, 2, 108, 18, 69, 0, 1, 107, 2, 108, 18, 70, 0, 1, 107, 2, 108, 100, 0, 1, 107, 100, 101,
+			118, 111, 104, 2, 108, 115, 0, 1, 107, 115, 2, 108, 112, 0, 1, 108, 2, 107, 97, 115, 0, 1, 108, 2, 110, 32, 0, 1, 108, 2,
+			110, 101, 0, 1, 108, 98, 2, 102, 195, 166, 0, 1, 108, 115, 2, 103, 116, 0, 1, 109, 2, 108, 105, 103, 0, 1, 109, 115, 2, 18,
+			68, 12, 0, 1, 109, 115, 2, 103, 108, 0, 1, 114, 2, 18, 71, 18, 69, 0, 1, 114, 98, 2, 103, 0, 1, 114, 102, 2, 115, 0,
+			1, 114, 116, 2, 18, 71, 0, 1, 114, 116, 2, 109, 97, 110, 0, 1, 115, 2, 103, 0, 2, 17, 67, 101, 0, 2, 103, 108, 101, 12,
+			0, 2, 115, 101, 0, 8, 114, 112, 2, 115, 116, 0, 101, 1, 100, 110, 105, 118, 0, 103, 1, 98, 2, 116, 97, 0, 103, 2, 101, 12,
+			12, 0, 2, 101, 110, 105, 103, 12, 3, 40, 6, 0, 101, 8, 108, 102, 110, 105, 2, 110, 122, 97, 3, 40, 6, 115, 0, 8, 2, 21,
+			21, 12, 14, 128, 132, 129, 3, 40, 11, 0, 4, 1, 106, 2, 105, 99, 101, 3, 40, 12, 0, 2, 104, 121, 114, 101, 12, 0, 8, 2,
+			114, 101, 116, 102, 195, 166, 12, 12, 14, 128, 132, 129, 0, 101, 1, 98, 108, 97, 0, 101, 1, 100, 2, 115, 0, 101, 1, 104, 0, 101,
+			1, 114, 107, 115, 2, 17, 67, 0, 101, 2, 32, 0, 103, 1, 98, 2, 103, 106, 111, 114, 100, 0, 103, 1, 108, 2, 101, 0, 103, 1,
+			109, 2, 101, 32, 117, 100, 0, 101, 1, 116, 115, 3, 40, 12, 14, 0, 115, 97, 8, 2, 32, 3, 40, 12, 36, 89, 6, 117, 0, 115,
+			97, 39, 115, 8, 2, 32, 3, 40, 12, 36, 89, 6, 117, 89, 0, 114, 100, 101, 1, 116, 3, 40, 12, 108, 0, 4, 101, 1, 100, 2,
+			108, 105, 103, 3, 40, 14, 0, 101, 1, 116, 115, 2, 32, 0, 101, 1, 116, 115, 2, 110, 32, 0, 101, 116, 1, 100, 110, 105, 118, 3,
+			40, 14, 86, 0, 114, 101, 1, 115, 10, 2, 114, 101, 12, 12, 12, 3, 40, 34, 7, 36, 0, 107, 101, 116, 8, 98, 3, 40, 49, 6,
+			115, 47, 0, 108, 114, 101, 116, 1, 107, 3, 40, 55, 51, 108, 86, 0, 98, 101, 115, 101, 116, 8, 2, 32, 3, 40, 71, 114, 89, 114,
+			72, 0, 102, 111, 114, 109, 101, 108, 3, 40, 83, 125, 65, 6, 116, 55, 0, 4, 101, 114, 1, 100, 110, 105, 118, 3, 40, 108, 0, 103,
+			101, 114, 2, 12, 0, 4, 101, 114, 2, 32, 3, 40, 109, 0, 114, 101, 2, 32, 0, 114, 101, 114, 2, 32, 0, 103, 101, 1, 115, 2,
+			114, 195, 184, 114, 3, 40, 112, 0, 103, 97, 102, 1, 108, 3, 55, 126, 81, 6, 118, 0, 4, 1, 100, 111, 114, 112, 2, 99, 101, 114,
+			101, 110, 3, 57, 40, 0, 1, 112, 109, 111, 99, 2, 116, 101, 114, 0, 1, 116, 2, 110, 101, 32, 0, 1, 116, 2, 110, 101, 114, 32,
+			0, 1, 116, 2, 110, 101, 115, 32, 0, 1, 116, 2, 110, 105, 110, 103, 12, 0, 1, 116, 2, 116, 111, 114, 0, 8, 116, 115, 2, 97,
+			114, 116, 0, 114, 101, 1, 116, 120, 105, 109, 3, 57, 108, 0, 110, 105, 116, 101, 100, 3, 57, 123, 50, 6, 136, 47, 36, 72, 0, 105,
+			1, 115, 2, 116, 101, 3, 58, 37, 0, 97, 119, 1, 113, 115, 3, 58, 125, 12, 0, 4, 1, 32, 100, 110, 97, 116, 115, 2, 112, 3,
+			108, 0, 1, 100, 2, 98, 108, 105, 110, 0, 1, 100, 2, 110, 99, 97, 110, 0, 1, 102, 2, 99, 107, 12, 12, 0, 1, 104, 99, 116,
+			101, 107, 2, 112, 0, 1, 108, 99, 2, 98, 0, 1, 110, 2, 109, 108, 111, 99, 107, 0, 1, 114, 116, 2, 115, 116, 0, 1, 116, 115,
+			2, 110, 116, 0, 112, 112, 101, 114, 99, 117, 116, 3, 108, 48, 108, 49, 108, 47, 0, 110, 99, 104, 1, 114, 98, 3, 108, 50, 91, 0,
+			109, 112, 104, 114, 101, 121, 1, 104, 3, 108, 65, 83, 34, 37, 0, 115, 116, 121, 1, 114, 3, 108, 89, 47, 37, 0, 4, 1, 98, 2,
+			99, 107, 3, 109, 0, 1, 98, 2, 102, 102, 101, 114, 0, 1, 98, 2, 116, 108, 101, 114, 0, 1, 100, 2, 98, 98, 101, 0, 1, 100,
+			2, 98, 98, 105, 110, 103, 0, 1, 100, 2, 100, 108, 101, 121, 0, 1, 104, 2, 110, 116, 101, 114, 0, 1, 104, 100, 97, 101, 104, 2,
+			110, 116, 0, 1, 106, 2, 110, 107, 0, 1, 108, 2, 98, 98, 111, 99, 107, 0, 1, 108, 108, 2, 112, 0, 1, 109, 2, 112, 112, 101,
+			114, 110, 101, 0, 1, 112, 2, 98, 98, 0, 1, 112, 2, 98, 108, 105, 99, 0, 1, 114, 116, 2, 99, 107, 0, 1, 115, 32, 110, 97,
+			105, 100, 110, 105, 2, 109, 109, 101, 114, 0, 8, 100, 2, 115, 116, 105, 110, 0, 8, 102, 2, 110, 107, 0, 8, 109, 2, 108, 108, 105,
+			110, 0, 8, 112, 2, 98, 32, 0, 8, 112, 2, 110, 107, 0, 116, 116, 111, 110, 1, 104, 3, 109, 47, 13, 50, 0, 99, 107, 101, 114,
+			1, 116, 3, 109, 49, 109, 0, 110, 110, 121, 1, 98, 3, 109, 50, 37, 0, 110, 110, 105, 110, 103, 104, 97, 109, 1, 99, 3, 109, 50,
+			113, 68, 107, 14, 65, 0, 108, 115, 116, 101, 114, 3, 109, 55, 89, 47, 109, 0, 100, 100, 1, 98, 2, 121, 3, 109, 72, 0, 102, 102,
+			105, 110, 1, 109, 3, 109, 83, 113, 50, 0, 105, 1, 103, 2, 116, 97, 114, 3, 111, 0, 101, 114, 105, 108, 108, 1, 103, 2, 97, 3,
+			114, 51, 6, 111, 55, 57, 0, 4, 3, 123, 0, 1, 17, 67, 2, 18, 66, 18, 76, 0, 1, 18, 74, 115, 2, 116, 0, 1, 18, 74,
+			115, 2, 116, 116, 0, 1, 98, 2, 103, 115, 101, 0, 1, 98, 2, 116, 105, 107, 12, 0, 1, 100, 2, 107, 116, 105, 0, 1, 103, 2,
+			100, 101, 110, 12, 0, 1, 104, 2, 100, 25, 0, 1, 104, 2, 100, 101, 17, 67, 0, 1, 104, 2, 103, 111, 32, 0, 1, 104, 2, 108,
+			17, 67, 0, 1, 104, 2, 110, 12, 0, 1, 106, 2, 18, 66, 18, 69, 0, 1, 107, 2, 107, 0, 1, 107, 2, 107, 107, 12, 0, 1,
+			107, 2, 108, 100, 101, 0, 1, 107, 2, 108, 108, 101, 114, 0, 1, 107, 2, 108, 109, 105, 110, 101, 114, 101, 0, 1, 107, 2, 108, 116,
+			0, 1, 107, 115, 2, 108, 107, 0, 1, 107, 115, 2, 108, 108, 0, 1, 107, 115, 2, 116, 101, 0, 1, 108, 2, 100, 101, 114, 0, 1,
+			108, 2, 107, 114, 18, 76, 0, 1, 108, 2, 107, 114, 101, 114, 101, 0, 1, 108, 103, 2, 103, 0, 1, 108, 117, 122, 0, 1, 109, 2,
+			102, 116, 0, 1, 109, 2, 115, 105, 107, 0, 1, 109, 97, 107, 2, 102, 108, 97, 103, 101, 0, 1, 109, 115, 97, 114, 2, 115, 0, 1,
+			110, 2, 108, 101, 118, 101, 110, 100, 101, 0, 1, 110, 102, 2, 103, 0, 1, 110, 115, 2, 98, 108, 101, 0, 1, 112, 2, 99, 107, 12,
+			0, 1, 112, 2, 110, 100, 0, 1, 114, 2, 103, 0, 1, 114, 2, 109, 101, 0, 1, 114, 103, 2, 18, 71, 0, 1, 114, 103, 2, 112,
+			112, 0, 1, 114, 107, 115, 2, 112, 101, 108, 0, 1, 114, 107, 115, 2, 112, 108, 101, 0, 1, 115, 2, 98, 115, 0, 1, 115, 2, 112,
+			101, 114, 0, 1, 115, 2, 112, 112, 108, 101, 0, 1, 115, 2, 112, 114, 97, 0, 1, 116, 2, 100, 25, 0, 1, 116, 2, 100, 101, 110,
+			0, 1, 116, 2, 110, 100, 195, 165, 0, 1, 116, 115, 2, 98, 12, 0, 1, 116, 115, 2, 100, 25, 0, 1, 116, 115, 2, 100, 101, 110,
+			0, 1, 118, 115, 2, 108, 115, 116, 12, 0, 2, 17, 67, 11, 12, 0, 2, 17, 67, 101, 110, 32, 0, 2, 100, 101, 102, 114, 97, 12,
+			0, 2, 100, 103, 114, 117, 110, 100, 101, 108, 105, 103, 12, 0, 2, 103, 108, 12, 0, 2, 105, 109, 111, 100, 115, 116, 195, 165, 101, 108,
+			105, 103, 0, 2, 108, 100, 12, 0, 2, 108, 116, 105, 109, 97, 0, 2, 108, 116, 114, 97, 0, 2, 108, 118, 101, 12, 0, 2, 109, 105,
+			100, 100, 101, 108, 0, 2, 110, 105, 12, 12, 0, 2, 115, 101, 116, 0, 2, 115, 117, 114, 112, 0, 2, 116, 111, 112, 105, 0, 8, 2,
+			100, 115, 12, 0, 8, 2, 114, 12, 12, 0, 8, 107, 2, 108, 108, 101, 100, 101, 0, 103, 1, 108, 115, 0, 103, 1, 109, 2, 32, 117,
+			100, 0, 101, 116, 1, 110, 101, 109, 3, 123, 6, 116, 47, 0, 114, 1, 98, 109, 97, 116, 3, 123, 34, 0, 114, 1, 116, 10, 2, 101,
+			108, 28, 33, 12, 3, 123, 34, 6, 0, 99, 99, 101, 115, 115, 111, 114, 1, 115, 3, 123, 49, 89, 6, 116, 89, 109, 0, 99, 99, 101,
+			115, 115, 111, 114, 101, 114, 1, 115, 3, 123, 49, 89, 116, 89, 6, 39, 109, 0, 107, 117, 108, 101, 108, 101, 3, 123, 49, 123, 55, 6,
+			36, 55, 14, 0, 4, 110, 1, 104, 2, 103, 101, 100, 3, 123, 50, 0, 110, 1, 104, 2, 103, 101, 112, 97, 114, 100, 12, 12, 0, 114,
+			101, 114, 8, 107, 3, 123, 51, 6, 116, 34, 0, 103, 1, 109, 115, 3, 123, 58, 0, 4, 100, 8, 2, 114, 105, 107, 107, 101, 108, 105,
+			103, 12, 14, 128, 132, 130, 3, 123, 72, 0, 100, 8, 2, 117, 101, 108, 105, 103, 12, 0, 100, 8, 2, 195, 184, 100, 12, 14, 128, 132,
+			130, 0, 4, 100, 8, 2, 101, 110, 12, 3, 123, 86, 0, 100, 8, 2, 107, 105, 103, 0, 115, 107, 121, 108, 100, 105, 103, 3, 123, 89,
+			81, 6, 129, 55, 72, 37, 0, 1, 110, 107, 2, 114, 3, 124, 0, 4, 1, 107, 101, 115, 2, 110, 100, 195, 166, 3, 125, 0, 1, 112,
+			2, 110, 99, 104, 0, 1, 114, 2, 115, 116, 0, 2, 110, 18, 73, 12, 0, 109, 98, 117, 103, 1, 104, 3, 125, 65, 71, 125, 81, 0,
+			4, 1, 17, 67, 2, 18, 66, 101, 12, 3, 126, 0, 1, 17, 67, 2, 18, 66, 116, 0, 1, 17, 67, 2, 107, 107, 12, 0, 1, 18,
+			68, 2, 102, 0, 1, 18, 68, 2, 102, 102, 12, 0, 1, 18, 71, 2, 110, 107, 116, 0, 1, 18, 73, 2, 102, 0, 1, 18, 74, 2,
+			102, 0, 1, 18, 74, 2, 102, 102, 0, 1, 18, 74, 2, 114, 114, 101, 0, 1, 98, 2, 107, 0, 1, 98, 2, 110, 116, 0, 1, 100,
+			2, 107, 0, 1, 102, 2, 18, 71, 11, 0, 1, 103, 2, 102, 0, 1, 104, 2, 103, 0, 1, 104, 2, 108, 0, 1, 104, 2, 108, 98,
+			195, 165, 110, 100, 0, 1, 104, 2, 108, 106, 101, 114, 110, 0, 1, 104, 2, 108, 107, 111, 114, 116, 0, 1, 104, 2, 108, 108, 101, 0,
+			1, 104, 2, 108, 115, 107, 101, 0, 1, 104, 2, 108, 115, 195, 184, 109, 0, 1, 104, 2, 108, 116, 97, 110, 103, 0, 1, 104, 2, 114,
+			116, 105, 103, 0, 1, 104, 112, 97, 110, 107, 2, 108, 0, 1, 104, 114, 101, 100, 100, 117, 109, 2, 108, 0, 1, 104, 116, 117, 109, 115,
+			2, 108, 0, 1, 106, 2, 110, 107, 116, 117, 114, 12, 12, 0, 1, 106, 104, 2, 108, 112, 0, 1, 107, 2, 102, 102, 101, 114, 116, 0,
+			1, 107, 2, 108, 0, 1, 107, 2, 108, 100, 105, 111, 0, 1, 107, 2, 108, 105, 108, 116, 0, 1, 107, 2, 108, 108, 101, 116, 0, 1,
+			107, 115, 2, 98, 0, 1, 108, 2, 107, 0, 1, 108, 103, 184, 195, 114, 2, 103, 116, 0, 1, 108, 115, 2, 98, 0, 1, 108, 115, 2,
+			112, 0, 1, 109, 115, 2, 17, 67, 0, 1, 110, 18, 66, 2, 18, 71, 0, 1, 112, 2, 102, 0, 1, 112, 2, 107, 107, 101, 0, 1,
+			112, 2, 107, 108, 0, 1, 112, 115, 2, 110, 100, 101, 0, 1, 114, 2, 18, 71, 0, 1, 114, 2, 18, 71, 11, 0, 1, 114, 2, 102,
+			0, 1, 114, 2, 109, 0, 1, 114, 17, 67, 2, 18, 71, 0, 1, 114, 17, 67, 2, 107, 0, 1, 114, 98, 2, 103, 116, 0, 1, 114,
+			116, 2, 102, 102, 0, 1, 118, 2, 103, 103, 0, 1, 118, 115, 2, 112, 112, 0, 2, 109, 25, 12, 0, 2, 110, 100, 12, 0, 2, 110,
+			103, 12, 12, 0, 2, 110, 107, 0, 8, 2, 110, 100, 12, 0, 8, 2, 110, 103, 12, 0, 8, 110, 2, 108, 0, 8, 114, 2, 98, 32,
+			0, 8, 114, 2, 98, 98, 101, 0, 108, 118, 1, 103, 3, 126, 55, 0, 108, 118, 1, 103, 2, 101, 3, 126, 55, 84, 0, 107, 97, 102,
+			1, 108, 3, 126, 81, 6, 117, 0, 4, 1, 106, 2, 110, 116, 3, 127, 0, 1, 108, 2, 110, 116, 101, 0, 4, 1, 17, 67, 2, 103,
+			103, 3, 128, 0, 1, 18, 68, 2, 110, 115, 0, 1, 98, 2, 110, 107, 101, 114, 0, 1, 102, 2, 18, 71, 0, 1, 107, 115, 2, 18,
+			67, 11, 0, 1, 108, 107, 2, 110, 115, 0, 1, 109, 2, 18, 66, 0, 1, 109, 2, 110, 116, 0, 1, 110, 115, 2, 18, 71, 0, 1,
+			112, 2, 108, 118, 12, 0, 1, 115, 2, 18, 71, 11, 0, 1, 115, 2, 107, 0, 1, 116, 2, 110, 110, 0, 2, 107, 115, 0, 8, 107,
+			2, 110, 32, 0, 110, 107, 1, 102, 2, 116, 105, 111, 110, 3, 128, 68, 0, 4, 1, 98, 101, 100, 2, 116, 101, 114, 101, 3, 129, 0,
+			1, 98, 105, 114, 116, 2, 110, 101, 0, 116, 1, 98, 101, 100, 0, 114, 101, 1, 116, 117, 111, 99, 3, 129, 12, 34, 0, 4, 114, 101,
+			1, 99, 101, 110, 105, 115, 3, 129, 12, 108, 0, 114, 101, 1, 99, 105, 100, 101, 112, 0, 114, 101, 1, 99, 105, 110, 97, 109, 0, 114,
+			101, 1, 100, 101, 99, 111, 114, 112, 0, 114, 101, 1, 100, 114, 111, 98, 0, 114, 101, 1, 104, 99, 111, 114, 98, 0, 114, 101, 1, 104,
+			99, 117, 111, 98, 109, 101, 0, 114, 101, 1, 108, 101, 110, 110, 97, 107, 0, 114, 101, 1, 110, 114, 117, 111, 116, 0, 114, 101, 1, 115,
+			105, 114, 102, 0, 114, 101, 1, 116, 97, 105, 110, 105, 109, 0, 114, 101, 1, 116, 97, 105, 110, 105, 109, 0, 114, 101, 1, 116, 105, 102,
+			110, 111, 107, 0, 114, 101, 1, 116, 105, 110, 114, 97, 103, 0, 114, 101, 1, 116, 105, 114, 102, 0, 114, 101, 1, 116, 107, 101, 102, 110,
+			111, 107, 0, 114, 101, 1, 116, 107, 101, 108, 0, 114, 101, 1, 116, 114, 101, 118, 117, 111, 0, 114, 101, 1, 118, 97, 114, 103, 0, 114,
+			101, 1, 10, 2, 114, 101, 28, 33, 12, 12, 12, 3, 129, 34, 7, 36, 0, 116, 101, 1, 108, 102, 3, 129, 47, 0, 109, 101, 1, 116,
+			115, 111, 107, 3, 129, 65, 14, 0, 4, 1, 98, 2, 100, 103, 101, 116, 3, 130, 0, 1, 100, 2, 99, 104, 101, 115, 115, 101, 0, 1,
+			102, 101, 114, 2, 115, 101, 114, 0, 1, 108, 103, 2, 107, 111, 115, 101, 0, 1, 110, 2, 97, 110, 99, 101, 0, 1, 110, 101, 109, 0,
+			1, 112, 2, 114, 195, 169, 0, 1, 115, 2, 99, 99, 0, 1, 115, 2, 114, 114, 101, 97, 0, 8, 98, 2, 115, 116, 101, 32, 0, 8,
+			112, 2, 114, 101, 114, 101, 0, 8, 116, 97, 110, 2, 114, 101, 108, 32, 12, 3, 130, 6, 0, 4, 114, 101, 1, 112, 116, 97, 109, 111,
+			116, 3, 130, 34, 36, 0, 114, 195, 169, 1, 112, 116, 97, 109, 111, 116, 0, 114, 101, 97, 117, 1, 98, 3, 130, 51, 6, 124, 0, 4,
+			109, 101, 1, 115, 101, 114, 3, 130, 65, 6, 114, 0, 109, 195, 169, 1, 115, 101, 114, 0, 120, 101, 108, 108, 101, 115, 1, 114, 98, 3,
+			130, 89, 6, 115, 55, 0, 99, 105, 101, 110, 110, 101, 1, 108, 3, 130, 89, 57, 6, 115, 50, 0, 1, 115, 2, 114, 114, 101, 108, 3,
+			131, 131, 0, 114, 1, 98, 2, 109, 101, 115, 3, 132, 0, 4, 114, 1, 98, 2, 109, 97, 3, 132, 12, 0, 114, 1, 112, 2, 115, 101,
+			114, 0, 114, 1, 115, 2, 102, 98, 0, 114, 8, 98, 2, 116, 0, 114, 110, 1, 98, 121, 97, 114, 3, 132, 12, 50, 0, 114, 110, 115,
+			8, 98, 3, 132, 12, 50, 89, 0, 114, 112, 108, 101, 1, 112, 3, 132, 48, 20, 14, 55, 0, 114, 107, 101, 121, 1, 116, 3, 132, 49,
+			37, 0, 114, 100, 108, 101, 1, 104, 3, 132, 72, 14, 55, 0, 114, 100, 108, 101, 110, 1, 104, 3, 132, 72, 55, 14, 50, 0, 114, 103,
+			105, 115, 8, 116, 115, 3, 132, 75, 113, 89, 0, 114, 103, 1, 98, 2, 101, 114, 3, 132, 81, 0, 4, 105, 100, 1, 103, 32, 108, 105,
+			118, 2, 101, 3, 136, 72, 0, 105, 100, 1, 103, 32, 116, 97, 2, 101, 0, 105, 100, 8, 103, 2, 101, 116, 0, 105, 100, 101, 110, 1,
+			103, 3, 136, 72, 14, 50, 0, 105, 100, 101, 114, 1, 103, 3, 136, 72, 108, 0, 7, 6, 118, 0, 4, 1, 101, 108, 98, 2, 25, 3,
+			0, 4, 1, 101, 108, 98, 2, 101, 116, 3, 0, 4, 1, 108, 97, 104, 3, 0, 1, 108, 101, 2, 17, 67, 3, 0, 1, 97, 108, 2,
+			101, 109, 101, 110, 116, 3, 14, 0, 4, 1, 97, 104, 2, 17, 67, 3, 40, 0, 1, 97, 104, 2, 111, 118, 101, 114, 102, 0, 4, 1,
+			17, 65, 2, 32, 3, 58, 0, 1, 17, 65, 2, 115, 0, 1, 97, 2, 110, 0, 1, 97, 114, 2, 17, 67, 0, 1, 101, 108, 2, 32,
+			0, 1, 101, 108, 98, 101, 100, 117, 0, 1, 105, 2, 32, 0, 1, 105, 2, 116, 32, 0, 1, 105, 114, 100, 2, 17, 67, 0, 1, 105,
+			118, 116, 2, 108, 0, 1, 166, 195, 110, 115, 2, 12, 0, 1, 184, 195, 2, 101, 110, 0, 1, 184, 195, 100, 0, 1, 184, 195, 104, 2,
+			108, 0, 1, 184, 195, 108, 2, 17, 67, 0, 2, 110, 0, 1, 184, 195, 109, 2, 101, 12, 3, 58, 11, 0, 118, 1, 105, 108, 3, 58,
+			84, 0, 2, 97, 110, 32, 103, 111, 103, 104, 3, 83, 0, 111, 110, 8, 2, 32, 3, 83, 108, 50, 0, 4, 3, 84, 0, 1, 17, 65,
+			10, 2, 32, 17, 65, 0, 1, 97, 108, 115, 2, 12, 0, 1, 105, 116, 2, 17, 65, 0, 1, 108, 97, 2, 101, 0, 1, 108, 105, 2,
+			17, 65, 0, 1, 111, 18, 74, 2, 17, 65, 0, 1, 111, 114, 112, 2, 101, 110, 99, 101, 0, 1, 114, 10, 0, 1, 114, 117, 0, 1,
+			184, 195, 108, 2, 101, 0, 118, 0, 105, 114, 103, 105, 110, 105, 97, 3, 84, 13, 75, 6, 37, 68, 57, 117, 0, 101, 2, 108, 115, 101,
+			3, 84, 14, 0, 105, 110, 99, 101, 3, 84, 36, 50, 89, 0, 105, 108, 108, 97, 103, 101, 3, 84, 36, 55, 36, 75, 0, 111, 105, 108,
+			97, 3, 84, 58, 35, 55, 6, 35, 0, 111, 108, 105, 101, 114, 101, 3, 84, 108, 55, 37, 6, 115, 12, 34, 0, 101, 114, 100, 117, 110,
+			3, 84, 115, 34, 72, 6, 112, 68, 0, 97, 117, 103, 104, 110, 3, 84, 125, 12, 50, 0, 105, 115, 99, 111, 117, 110, 116, 3, 84, 136,
+			49, 121, 58, 50, 47, 0, 108, 101, 103, 1, 108, 97, 104, 3, 136, 0, 7, 6, 119, 0, 114, 105, 103, 104, 116, 3, 21, 0, 3, 58,
+			0, 104, 105, 116, 101, 99, 104, 97, 112, 101, 108, 3, 58, 35, 37, 47, 76, 117, 48, 13, 59, 0, 105, 110, 110, 105, 112, 101, 103, 3,
+			58, 36, 50, 37, 48, 115, 81, 0, 105, 115, 99, 111, 110, 115, 105, 110, 3, 58, 36, 89, 49, 6, 108, 50, 89, 36, 50, 0, 104, 101,
+			101, 108, 3, 58, 37, 12, 55, 0, 101, 101, 107, 101, 110, 100, 3, 58, 37, 12, 81, 115, 50, 72, 0, 101, 97, 118, 101, 114, 3, 58,
+			37, 12, 84, 108, 0, 4, 105, 108, 108, 105, 101, 3, 58, 37, 55, 37, 0, 105, 108, 108, 121, 0, 97, 116, 115, 111, 110, 3, 58, 108,
+			47, 89, 14, 50, 0, 111, 110, 100, 101, 114, 8, 3, 58, 108, 50, 72, 108, 0, 97, 110, 100, 97, 3, 58, 108, 50, 72, 117, 0, 97,
+			110, 115, 101, 97, 1, 115, 3, 58, 108, 50, 89, 4, 37, 0, 97, 108, 108, 97, 99, 101, 3, 58, 108, 55, 36, 89, 0, 97, 115, 104,
+			105, 110, 103, 116, 111, 110, 3, 58, 108, 91, 36, 68, 47, 108, 50, 0, 97, 121, 110, 101, 3, 58, 115, 57, 50, 0, 97, 108, 101, 115,
+			3, 58, 115, 57, 55, 89, 0, 101, 97, 116, 104, 101, 114, 3, 58, 115, 86, 108, 0, 97, 114, 101, 3, 58, 117, 12, 34, 0, 105, 108,
+			100, 8, 3, 58, 121, 113, 55, 72, 0, 97, 116, 101, 114, 103, 97, 116, 101, 3, 58, 125, 47, 108, 81, 115, 57, 47, 0, 97, 108, 100,
+			111, 114, 102, 8, 3, 58, 125, 72, 108, 83, 0, 111, 114, 107, 3, 58, 132, 12, 49, 0, 111, 114, 116, 104, 3, 58, 132, 12, 87, 0,
+			111, 114, 108, 100, 8, 3, 58, 132, 55, 72, 0, 111, 114, 100, 3, 58, 132, 72, 0, 121, 111, 109, 105, 110, 103, 3, 58, 136, 6, 125,
+			58, 65, 36, 68, 0, 105, 100, 101, 115, 99, 114, 101, 101, 110, 3, 58, 136, 72, 89, 49, 34, 37, 12, 50, 0, 4, 1, 116, 110, 97,
+			2, 101, 114, 112, 101, 110, 3, 84, 0, 2, 97, 100, 101, 114, 115, 0, 2, 97, 100, 105, 0, 2, 97, 108, 105, 115, 0, 2, 97, 115,
+			115, 101, 114, 109, 97, 110, 110, 112, 114, 195, 184, 118, 101, 0, 2, 97, 116, 116, 0, 2, 101, 108, 116, 101, 114, 118, 195, 166, 103, 116,
+			0, 2, 101, 108, 116, 115, 99, 104, 109, 101, 114, 122, 0, 2, 101, 114, 110, 101, 114, 0, 2, 101, 115, 115, 101, 108, 0, 2, 104, 105,
+			115, 116, 0, 2, 105, 101, 110, 101, 114, 115, 99, 104, 110, 105, 116, 122, 101, 108, 0, 2, 111, 108, 102, 103, 97, 110, 103, 0, 2, 111,
+			108, 102, 114, 97, 109, 0, 97, 105, 1, 117, 107, 2, 116, 3, 84, 6, 136, 0, 97, 108, 100, 3, 84, 35, 55, 72, 0, 97, 102, 102,
+			101, 3, 84, 35, 83, 14, 0, 105, 101, 2, 110, 3, 84, 37, 0, 105, 101, 115, 101, 110, 116, 104, 97, 108, 3, 84, 37, 89, 13, 50,
+			47, 121, 55, 0, 97, 114, 115, 122, 97, 119, 97, 3, 84, 121, 34, 91, 6, 117, 12, 84, 117, 0, 7, 6, 120, 0, 4, 3, 81, 89,
 			0, 99, 0, 4, 105, 100, 8, 111, 2, 32, 3, 81, 89, 6, 37, 86, 0, 121, 100, 8, 111, 2, 32, 0, 97, 108, 1, 111, 3, 81,
-			89, 6, 110, 55, 0, 4, 105, 100, 101, 8, 111, 2, 114, 101, 3, 81, 89, 37, 72, 6, 36, 0, 105, 100, 101, 8, 111, 2, 114, 105,
+			89, 6, 117, 55, 0, 4, 105, 100, 101, 8, 111, 2, 114, 101, 3, 81, 89, 37, 72, 6, 36, 0, 105, 100, 101, 8, 111, 2, 114, 105,
 			0, 121, 100, 101, 8, 111, 2, 114, 101, 0, 121, 100, 101, 8, 111, 2, 114, 105, 0, 121, 103, 101, 110, 1, 111, 3, 81, 89, 37, 81,
-			6, 36, 50, 0, 111, 110, 3, 81, 89, 114, 50, 0, 4, 1, 110, 3, 89, 0, 8, 0, 7, 6, 121, 0, 1, 98, 100, 110, 97, 116,
-			115, 3, 6, 35, 57, 0, 4, 1, 110, 111, 100, 117, 101, 115, 112, 2, 109, 3, 6, 116, 0, 8, 107, 101, 108, 111, 109, 2, 108, 101,
-			0, 8, 108, 112, 97, 114, 97, 112, 0, 8, 110, 105, 118, 2, 108, 0, 8, 115, 97, 2, 108, 0, 8, 116, 97, 108, 2, 114, 117, 115,
-			0, 8, 116, 111, 101, 114, 101, 116, 115, 2, 112, 0, 8, 118, 101, 114, 0, 8, 122, 110, 101, 2, 109, 0, 4, 1, 110, 97, 107, 2,
-			108, 101, 3, 6, 117, 0, 8, 98, 97, 107, 2, 115, 0, 8, 104, 97, 107, 2, 116, 0, 4, 1, 109, 2, 110, 116, 101, 3, 6, 118,
-			0, 8, 114, 97, 112, 2, 107, 0, 111, 114, 107, 115, 104, 105, 114, 101, 3, 10, 57, 113, 49, 91, 13, 0, 103, 1, 114, 2, 32, 3,
-			13, 49, 0, 4, 1, 99, 2, 98, 101, 114, 3, 35, 57, 0, 1, 107, 115, 2, 108, 105, 103, 104, 116, 0, 1, 116, 115, 2, 108, 105,
-			115, 116, 0, 116, 101, 1, 98, 3, 35, 57, 47, 0, 112, 97, 115, 115, 1, 98, 3, 35, 57, 48, 35, 12, 89, 0, 4, 108, 101, 1,
-			108, 114, 97, 99, 3, 35, 57, 55, 0, 108, 101, 8, 108, 0, 100, 101, 1, 108, 99, 3, 35, 57, 72, 0, 100, 101, 108, 108, 1, 114,
-			3, 35, 57, 72, 6, 109, 59, 0, 107, 101, 115, 8, 115, 3, 35, 57, 81, 89, 0, 97, 8, 119, 2, 116, 116, 3, 35, 57, 108, 0,
-			110, 100, 111, 110, 8, 108, 3, 36, 50, 72, 114, 50, 0, 110, 116, 104, 101, 115, 105, 122, 101, 114, 1, 115, 3, 36, 50, 87, 36, 89,
-			35, 57, 89, 114, 0, 108, 118, 97, 110, 105, 97, 1, 115, 110, 110, 101, 112, 3, 36, 55, 84, 6, 109, 57, 50, 57, 110, 0, 4, 1,
-			98, 98, 111, 3, 37, 0, 1, 98, 105, 108, 0, 1, 99, 110, 97, 110, 0, 1, 99, 117, 108, 0, 1, 100, 2, 32, 0, 1, 100, 2,
-			108, 97, 110, 0, 1, 100, 2, 115, 32, 0, 1, 107, 99, 97, 106, 0, 1, 107, 99, 101, 98, 0, 1, 107, 115, 105, 104, 119, 0, 1,
-			108, 105, 109, 101, 0, 1, 108, 107, 111, 111, 114, 98, 2, 110, 0, 1, 108, 108, 101, 104, 115, 0, 1, 108, 108, 101, 107, 0, 1, 108,
-			108, 105, 98, 0, 1, 108, 108, 105, 108, 0, 1, 108, 111, 114, 97, 99, 2, 110, 0, 1, 110, 110, 101, 112, 0, 1, 110, 110, 111, 100,
-			0, 1, 110, 110, 111, 114, 0, 1, 112, 112, 97, 104, 0, 1, 114, 97, 109, 2, 115, 0, 1, 114, 111, 103, 101, 114, 103, 0, 1, 114,
-			114, 97, 107, 2, 12, 0, 1, 114, 114, 101, 104, 115, 0, 1, 116, 102, 105, 102, 0, 1, 116, 105, 99, 0, 1, 116, 105, 110, 105, 114,
-			116, 0, 1, 116, 110, 117, 111, 99, 0, 1, 116, 114, 97, 112, 0, 1, 116, 115, 101, 110, 109, 97, 0, 1, 116, 116, 101, 98, 0, 1,
-			116, 116, 105, 107, 0, 1, 118, 108, 101, 109, 2, 110, 0, 8, 98, 97, 110, 114, 97, 98, 0, 8, 114, 114, 97, 104, 0, 1, 108, 111,
-			112, 2, 101, 115, 116, 3, 37, 6, 0, 112, 114, 101, 115, 8, 3, 37, 12, 48, 51, 20, 108, 0, 118, 101, 115, 8, 3, 37, 12, 84,
-			0, 102, 108, 111, 115, 115, 1, 100, 110, 97, 99, 3, 37, 83, 55, 114, 89, 0, 4, 1, 110, 2, 97, 3, 57, 0, 2, 97, 109, 115,
-			0, 2, 101, 109, 101, 110, 0, 2, 111, 103, 97, 0, 2, 111, 110, 110, 0, 101, 110, 110, 101, 1, 97, 99, 3, 57, 6, 109, 50, 108,
-			0, 97, 114, 100, 3, 57, 35, 34, 72, 0, 97, 99, 104, 116, 3, 57, 35, 81, 72, 0, 111, 107, 111, 104, 97, 109, 97, 3, 57, 39,
-			49, 39, 107, 6, 110, 65, 110, 0, 111, 121, 111, 3, 57, 39, 57, 6, 39, 0, 117, 112, 112, 105, 101, 3, 57, 40, 48, 37, 0, 111,
-			110, 1, 110, 97, 99, 3, 57, 108, 50, 0, 101, 110, 8, 3, 57, 109, 50, 0, 97, 116, 101, 115, 8, 3, 57, 109, 57, 47, 89, 0,
-			97, 108, 101, 3, 57, 109, 57, 59, 0, 101, 97, 103, 101, 114, 3, 57, 109, 81, 114, 0, 97, 116, 122, 121, 3, 57, 110, 47, 89, 37,
-			0, 97, 110, 107, 101, 101, 3, 57, 110, 50, 49, 37, 0, 111, 117, 110, 103, 3, 57, 114, 68, 0, 111, 114, 107, 3, 79, 114, 12, 49,
-			0, 2, 97, 115, 109, 105, 110, 3, 91, 0, 4, 3, 116, 0, 1, 17, 67, 2, 18, 73, 12, 0, 1, 98, 2, 17, 65, 0, 1, 107,
-			2, 108, 108, 105, 110, 103, 12, 0, 1, 107, 2, 115, 107, 12, 0, 1, 107, 115, 2, 115, 12, 0, 1, 107, 115, 2, 116, 101, 114, 0,
-			1, 107, 115, 2, 116, 105, 0, 1, 108, 2, 110, 32, 0, 1, 108, 102, 97, 2, 116, 0, 1, 108, 102, 97, 2, 116, 116, 0, 1, 110,
-			107, 2, 116, 0, 1, 114, 2, 17, 67, 17, 65, 12, 0, 1, 114, 2, 18, 71, 12, 0, 1, 114, 2, 100, 12, 0, 1, 114, 2, 103,
-			101, 12, 0, 1, 114, 2, 108, 108, 101, 0, 1, 114, 2, 115, 107, 12, 0, 1, 114, 2, 116, 12, 0, 1, 114, 98, 2, 110, 0, 1,
-			114, 102, 2, 115, 12, 0, 1, 114, 103, 2, 110, 0, 1, 114, 107, 2, 98, 98, 12, 0, 1, 114, 107, 2, 115, 12, 0, 1, 114, 116,
-			115, 2, 17, 67, 0, 1, 115, 2, 110, 100, 114, 111, 109, 0, 1, 115, 2, 110, 107, 114, 0, 1, 115, 2, 110, 116, 0, 1, 116, 2,
-			18, 66, 11, 101, 0, 8, 108, 2, 110, 0, 103, 1, 114, 2, 32, 101, 110, 0, 103, 1, 114, 2, 110, 105, 110, 103, 0, 103, 1, 114,
-			112, 2, 108, 0, 103, 1, 114, 116, 2, 108, 101, 0, 1, 107, 2, 115, 101, 12, 3, 116, 12, 0, 103, 101, 1, 114, 116, 115, 3, 116,
-			12, 13, 0, 110, 103, 1, 108, 2, 108, 105, 109, 116, 3, 116, 50, 81, 0, 4, 103, 1, 109, 100, 121, 3, 116, 57, 0, 103, 1, 114,
-			116, 115, 0, 118, 1, 115, 3, 116, 58, 0, 103, 101, 108, 107, 110, 97, 98, 101, 1, 114, 112, 3, 116, 81, 109, 55, 49, 50, 112, 71,
-			108, 0, 4, 1, 110, 2, 116, 3, 117, 0, 1, 114, 17, 67, 2, 18, 73, 0, 4, 114, 114, 101, 1, 102, 2, 107, 3, 117, 12, 114,
-			0, 114, 114, 101, 1, 102, 2, 116, 114, 0, 4, 1, 18, 73, 2, 116, 3, 118, 0, 1, 100, 2, 18, 66, 116, 0, 1, 100, 2, 107,
-			0, 1, 100, 2, 112, 0, 1, 107, 2, 109, 25, 0, 1, 107, 2, 115, 12, 0, 1, 107, 115, 2, 108, 32, 0, 1, 107, 115, 2, 108,
-			108, 0, 1, 107, 115, 2, 108, 110, 105, 0, 1, 108, 2, 103, 116, 0, 1, 108, 2, 107, 115, 97, 108, 105, 103, 0, 1, 108, 2, 107,
-			195, 184, 0, 1, 108, 2, 109, 17, 67, 0, 1, 108, 2, 110, 99, 104, 0, 1, 108, 2, 115, 116, 32, 116, 105, 108, 32, 0, 1, 108,
-			2, 115, 116, 98, 0, 1, 108, 2, 115, 116, 101, 108, 105, 103, 0, 1, 108, 2, 115, 116, 101, 110, 0, 1, 108, 2, 115, 116, 101, 114,
-			0, 1, 108, 2, 115, 116, 102, 105, 115, 107, 0, 1, 108, 2, 115, 116, 103, 195, 165, 114, 100, 0, 1, 108, 2, 115, 116, 104, 117, 115,
-			0, 1, 108, 2, 115, 116, 105, 103, 0, 1, 108, 2, 115, 116, 108, 195, 184, 103, 110, 0, 1, 108, 2, 115, 116, 109, 111, 114, 100, 0,
-			1, 108, 2, 115, 116, 110, 101, 0, 1, 108, 2, 115, 116, 115, 101, 106, 108, 0, 1, 108, 2, 115, 116, 115, 112, 105, 108, 0, 1, 108,
-			2, 115, 116, 121, 97, 99, 104, 116, 0, 1, 108, 32, 101, 107, 107, 105, 2, 115, 116, 0, 1, 108, 32, 114, 97, 104, 2, 115, 116, 0,
-			1, 108, 32, 114, 111, 116, 115, 2, 115, 116, 0, 1, 108, 32, 114, 165, 195, 102, 2, 115, 116, 0, 1, 108, 100, 97, 109, 2, 115, 116,
-			0, 1, 108, 101, 100, 105, 118, 2, 115, 116, 0, 1, 108, 101, 100, 166, 195, 2, 115, 116, 0, 1, 108, 101, 103, 114, 184, 195, 112, 115,
-			2, 115, 116, 0, 1, 108, 101, 107, 114, 105, 118, 2, 115, 116, 0, 1, 108, 101, 112, 112, 97, 107, 2, 115, 116, 0, 1, 108, 101, 114,
-			100, 110, 97, 118, 2, 115, 116, 0, 1, 108, 101, 114, 166, 195, 108, 2, 115, 116, 0, 1, 108, 101, 118, 105, 114, 107, 115, 2, 115, 116,
-			0, 1, 108, 102, 2, 116, 32, 0, 1, 108, 102, 2, 116, 98, 97, 114, 0, 1, 108, 102, 2, 116, 110, 0, 1, 108, 102, 2, 116, 116,
-			0, 1, 108, 108, 101, 118, 2, 115, 116, 0, 1, 108, 110, 101, 106, 184, 195, 2, 115, 116, 0, 1, 108, 110, 118, 166, 195, 104, 2, 115,
-			116, 0, 1, 108, 115, 110, 101, 106, 184, 195, 2, 115, 116, 0, 1, 108, 115, 110, 101, 114, 184, 195, 2, 115, 116, 0, 1, 108, 115, 118,
-			105, 108, 2, 115, 116, 0, 1, 108, 117, 2, 115, 116, 0, 1, 109, 115, 2, 107, 110, 0, 1, 110, 2, 107, 32, 0, 1, 110, 2, 107,
-			101, 114, 0, 1, 110, 2, 109, 102, 0, 1, 110, 2, 110, 110, 101, 0, 1, 110, 2, 116, 116, 0, 1, 110, 100, 117, 2, 116, 0, 1,
-			110, 101, 98, 2, 116, 0, 1, 112, 2, 110, 116, 0, 1, 114, 2, 17, 67, 12, 0, 1, 114, 100, 2, 112, 0, 1, 114, 103, 2, 110,
-			116, 0, 1, 114, 107, 2, 18, 66, 11, 12, 0, 1, 115, 2, 110, 107, 114, 111, 99, 0, 1, 115, 2, 116, 116, 101, 110, 0, 1, 116,
-			115, 2, 107, 12, 0, 1, 116, 115, 2, 109, 112, 101, 114, 0, 2, 107, 107, 12, 0, 2, 110, 100, 12, 0, 2, 110, 107, 0, 8, 110,
-			2, 110, 32, 0, 1, 110, 107, 2, 116, 116, 3, 118, 12, 0, 114, 114, 101, 1, 102, 3, 118, 12, 114, 0, 110, 100, 105, 1, 115, 2,
-			107, 3, 118, 50, 72, 37, 0, 110, 103, 2, 97, 3, 118, 50, 81, 0, 4, 110, 103, 3, 118, 68, 0, 110, 103, 1, 108, 0, 115, 115,
-			1, 107, 3, 118, 89, 0, 114, 111, 110, 101, 1, 116, 3, 120, 34, 6, 113, 58, 50, 0, 7, 6, 122, 0, 1, 101, 104, 99, 2, 32,
-			3, 0, 122, 1, 105, 112, 2, 97, 3, 47, 89, 0, 4, 3, 89, 0, 122, 0, 101, 97, 2, 108, 97, 110, 3, 89, 36, 0, 4, 111,
-			109, 98, 105, 3, 89, 114, 65, 71, 37, 0, 111, 109, 98, 105, 101, 0, 7, 6, 0, 195, 177, 3, 21, 101, 115, 0, 195, 175, 3, 37,
-			12, 0, 36, 3, 72, 114, 55, 114, 0, 195, 167, 3, 89, 0, 195, 160, 3, 110, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts10 = FileInMemory_createWithData (193791, reinterpret_cast<const char *> (&espeakdata_dicts10_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/da_dict", 
+			6, 36, 50, 0, 99, 104, 3, 81, 89, 91, 0, 111, 110, 3, 81, 89, 108, 50, 0, 4, 1, 110, 3, 89, 0, 8, 0, 7, 6, 121,
+			0, 4, 1, 103, 101, 2, 112, 116, 3, 6, 129, 0, 1, 112, 97, 108, 111, 118, 0, 8, 107, 101, 108, 111, 109, 2, 108, 101, 0, 8,
+			107, 101, 114, 2, 108, 0, 8, 115, 97, 2, 108, 0, 8, 116, 97, 108, 2, 114, 117, 115, 0, 8, 116, 111, 101, 114, 101, 116, 115, 2,
+			112, 0, 114, 8, 112, 109, 97, 118, 3, 6, 129, 110, 0, 4, 1, 110, 111, 100, 117, 101, 115, 112, 2, 109, 3, 6, 130, 0, 8, 98,
+			97, 107, 2, 115, 0, 8, 102, 111, 114, 111, 108, 107, 2, 108, 0, 8, 104, 97, 107, 2, 116, 0, 8, 108, 112, 97, 114, 97, 112, 0,
+			8, 110, 105, 118, 2, 108, 0, 8, 118, 101, 114, 0, 8, 122, 110, 101, 2, 109, 0, 1, 110, 97, 107, 2, 108, 101, 3, 6, 131, 0,
+			1, 109, 2, 110, 116, 101, 3, 6, 132, 0, 8, 114, 97, 112, 2, 107, 3, 6, 133, 0, 1, 98, 100, 110, 97, 116, 115, 3, 6, 136,
+			0, 111, 114, 107, 115, 104, 105, 114, 101, 3, 10, 57, 125, 12, 49, 91, 13, 0, 4, 1, 110, 110, 111, 108, 3, 36, 0, 1, 116, 116,
+			111, 99, 115, 0, 110, 100, 111, 110, 8, 108, 3, 36, 50, 72, 108, 50, 0, 110, 116, 104, 101, 115, 105, 122, 101, 114, 1, 115, 3, 36,
+			50, 87, 36, 89, 136, 89, 108, 0, 108, 118, 97, 110, 105, 97, 1, 115, 110, 110, 101, 112, 3, 36, 55, 84, 6, 115, 57, 50, 57, 117,
+			0, 4, 1, 98, 98, 111, 3, 37, 0, 1, 99, 110, 97, 110, 0, 1, 99, 117, 108, 0, 1, 100, 2, 32, 0, 1, 100, 2, 108, 97,
+			110, 0, 1, 100, 2, 115, 32, 0, 1, 107, 99, 97, 106, 0, 1, 107, 99, 101, 98, 0, 1, 107, 99, 105, 0, 1, 107, 115, 105, 104,
+			119, 0, 1, 108, 105, 109, 101, 0, 1, 108, 107, 111, 111, 114, 98, 2, 110, 0, 1, 108, 108, 101, 104, 115, 0, 1, 108, 108, 101, 107,
+			0, 1, 108, 108, 105, 98, 0, 1, 108, 108, 105, 108, 0, 1, 108, 111, 114, 97, 99, 2, 110, 0, 1, 110, 110, 101, 112, 0, 1, 110,
+			110, 111, 100, 0, 1, 110, 110, 111, 114, 0, 1, 114, 97, 109, 2, 115, 0, 1, 114, 111, 103, 101, 114, 103, 0, 1, 114, 114, 101, 104,
+			115, 0, 1, 116, 102, 105, 102, 0, 1, 116, 105, 99, 0, 1, 116, 105, 110, 105, 114, 116, 0, 1, 116, 110, 117, 111, 99, 0, 1, 116,
+			115, 101, 110, 109, 97, 0, 1, 116, 116, 101, 98, 0, 1, 116, 116, 105, 107, 0, 1, 118, 108, 101, 109, 2, 110, 0, 8, 98, 97, 110,
+			114, 97, 98, 0, 8, 114, 114, 97, 104, 0, 1, 108, 111, 112, 2, 101, 115, 116, 3, 37, 6, 0, 111, 110, 8, 108, 3, 37, 6, 108,
+			68, 0, 112, 114, 101, 115, 8, 3, 37, 12, 48, 51, 14, 0, 118, 101, 115, 8, 3, 37, 12, 84, 0, 114, 97, 99, 117, 115, 101, 1,
+			115, 3, 37, 34, 108, 49, 57, 40, 89, 0, 102, 108, 111, 115, 115, 1, 100, 110, 97, 99, 3, 37, 83, 55, 108, 89, 0, 4, 1, 110,
+			2, 97, 3, 57, 0, 2, 97, 109, 115, 0, 2, 101, 109, 101, 110, 0, 2, 111, 103, 97, 0, 2, 111, 110, 110, 0, 2, 117, 0, 101,
+			110, 110, 101, 1, 97, 99, 3, 57, 6, 115, 50, 14, 0, 97, 99, 104, 116, 3, 57, 35, 81, 72, 0, 111, 101, 108, 3, 57, 39, 6,
+			115, 55, 0, 111, 107, 111, 104, 97, 109, 97, 3, 57, 39, 49, 39, 107, 6, 117, 65, 117, 0, 111, 121, 111, 3, 57, 39, 57, 6, 39,
+			0, 117, 112, 112, 105, 101, 3, 57, 40, 48, 37, 0, 97, 114, 100, 3, 57, 51, 34, 72, 0, 111, 117, 110, 103, 3, 57, 108, 68, 0,
+			111, 110, 1, 110, 97, 99, 3, 57, 112, 50, 0, 101, 2, 108, 108, 111, 119, 3, 57, 115, 0, 101, 110, 8, 3, 57, 115, 50, 0, 97,
+			116, 101, 115, 8, 3, 57, 115, 57, 47, 89, 0, 97, 108, 101, 3, 57, 115, 57, 59, 0, 101, 97, 103, 101, 114, 3, 57, 115, 81, 108,
+			0, 97, 116, 122, 121, 3, 57, 117, 47, 89, 37, 0, 97, 110, 107, 101, 101, 3, 57, 117, 50, 49, 37, 0, 111, 114, 107, 3, 79, 108,
+			12, 49, 0, 2, 97, 115, 109, 105, 110, 3, 91, 0, 4, 1, 98, 105, 108, 3, 111, 0, 1, 109, 109, 17, 65, 0, 1, 110, 97, 102,
+			102, 105, 116, 0, 1, 112, 112, 97, 104, 0, 1, 114, 114, 97, 107, 2, 12, 0, 1, 116, 114, 97, 112, 0, 98, 97, 103, 1, 103, 103,
+			111, 100, 3, 111, 71, 118, 81, 0, 4, 1, 108, 108, 97, 2, 115, 111, 110, 3, 113, 0, 1, 119, 2, 110, 0, 1, 108, 102, 2, 110,
+			110, 3, 114, 0, 4, 1, 17, 67, 2, 17, 67, 101, 3, 129, 0, 1, 17, 67, 2, 17, 67, 105, 0, 1, 17, 67, 2, 101, 0, 1,
+			17, 67, 2, 115, 101, 12, 0, 1, 107, 2, 115, 101, 12, 0, 1, 107, 2, 115, 107, 12, 0, 1, 107, 115, 2, 115, 12, 0, 1, 107,
+			115, 2, 116, 101, 114, 0, 1, 107, 115, 2, 116, 105, 0, 1, 108, 102, 97, 2, 116, 0, 1, 110, 2, 116, 0, 1, 114, 2, 17, 67,
+			101, 12, 12, 0, 1, 114, 2, 18, 71, 17, 65, 12, 0, 1, 114, 2, 100, 101, 12, 12, 0, 103, 1, 114, 2, 32, 101, 110, 0, 103,
+			1, 114, 112, 2, 108, 0, 103, 1, 114, 116, 2, 108, 101, 0, 103, 1, 114, 2, 110, 105, 110, 103, 3, 129, 12, 0, 103, 101, 1, 114,
+			116, 115, 3, 129, 14, 0, 103, 1, 114, 116, 115, 3, 129, 57, 0, 118, 1, 115, 3, 129, 58, 0, 103, 101, 108, 107, 110, 97, 98, 101,
+			1, 114, 112, 3, 129, 81, 116, 55, 49, 50, 121, 71, 14, 0, 103, 101, 114, 1, 114, 116, 115, 3, 129, 108, 0, 4, 3, 130, 0, 1,
+			17, 67, 2, 17, 67, 101, 114, 0, 1, 17, 67, 2, 18, 73, 12, 0, 1, 17, 67, 2, 108, 108, 0, 1, 18, 73, 2, 114, 114, 0,
+			1, 98, 2, 17, 65, 0, 1, 99, 2, 107, 101, 108, 0, 1, 100, 2, 115, 115, 101, 0, 1, 104, 2, 108, 100, 0, 1, 104, 2, 112,
+			0, 1, 107, 2, 108, 108, 105, 110, 103, 12, 0, 1, 108, 2, 100, 101, 110, 0, 1, 108, 2, 100, 101, 110, 101, 114, 103, 105, 0, 1,
+			108, 2, 110, 32, 0, 1, 108, 2, 115, 101, 17, 67, 12, 0, 1, 108, 102, 0, 1, 108, 102, 97, 2, 116, 116, 0, 1, 108, 112, 2,
+			115, 115, 0, 1, 110, 107, 2, 116, 0, 1, 110, 107, 2, 116, 116, 0, 1, 114, 2, 18, 71, 12, 0, 1, 114, 2, 100, 17, 67, 12,
+			12, 0, 1, 114, 2, 100, 32, 12, 12, 0, 1, 114, 2, 108, 108, 101, 12, 12, 0, 1, 114, 2, 115, 107, 12, 0, 1, 114, 2, 116,
+			12, 0, 1, 114, 98, 2, 110, 0, 1, 114, 98, 114, 111, 102, 2, 100, 12, 12, 0, 1, 114, 102, 2, 115, 12, 0, 1, 114, 103, 2,
+			110, 0, 1, 114, 107, 2, 98, 98, 12, 0, 1, 114, 107, 2, 115, 12, 0, 1, 114, 116, 2, 100, 101, 0, 1, 114, 116, 2, 108, 12,
+			12, 0, 1, 114, 116, 115, 2, 17, 67, 0, 1, 115, 2, 110, 101, 115, 0, 1, 115, 2, 110, 107, 114, 0, 1, 115, 2, 110, 116, 0,
+			1, 115, 112, 2, 107, 0, 1, 116, 2, 107, 107, 101, 12, 12, 0, 1, 116, 101, 98, 2, 100, 0, 2, 103, 103, 101, 12, 12, 0, 2,
+			116, 116, 12, 12, 0, 8, 108, 2, 110, 12, 0, 8, 114, 2, 32, 0, 8, 114, 2, 101, 116, 32, 0, 103, 1, 109, 100, 121, 0, 110,
+			100, 1, 115, 2, 114, 111, 109, 3, 130, 50, 72, 0, 110, 103, 1, 108, 2, 108, 105, 109, 116, 3, 130, 50, 81, 0, 4, 114, 114, 101,
+			1, 102, 2, 107, 3, 131, 108, 0, 114, 114, 101, 1, 102, 2, 116, 114, 0, 4, 1, 107, 2, 115, 12, 3, 132, 0, 1, 107, 115, 2,
+			108, 110, 105, 0, 1, 108, 2, 115, 116, 32, 116, 105, 108, 32, 0, 1, 108, 2, 115, 116, 98, 0, 1, 108, 2, 115, 116, 101, 108, 105,
+			103, 0, 1, 108, 2, 115, 116, 101, 110, 0, 1, 108, 2, 115, 116, 101, 114, 0, 1, 108, 2, 115, 116, 102, 105, 115, 107, 0, 1, 108,
+			2, 115, 116, 104, 117, 115, 0, 1, 108, 2, 115, 116, 105, 103, 0, 1, 108, 2, 115, 116, 108, 195, 184, 103, 110, 0, 1, 108, 2, 115,
+			116, 109, 111, 114, 100, 0, 1, 108, 2, 115, 116, 110, 101, 0, 1, 108, 2, 115, 116, 115, 101, 106, 108, 0, 1, 108, 2, 115, 116, 115,
+			112, 105, 108, 0, 1, 108, 2, 115, 116, 121, 97, 99, 104, 116, 0, 1, 108, 32, 101, 107, 107, 105, 2, 115, 116, 0, 1, 108, 32, 114,
+			97, 104, 2, 115, 116, 0, 1, 108, 32, 114, 111, 116, 115, 2, 115, 116, 0, 1, 108, 32, 114, 165, 195, 102, 2, 115, 116, 0, 1, 108,
+			100, 97, 109, 2, 115, 116, 0, 1, 108, 101, 100, 105, 118, 2, 115, 116, 0, 1, 108, 101, 100, 166, 195, 2, 115, 116, 0, 1, 108, 101,
+			103, 114, 184, 195, 112, 115, 2, 115, 116, 0, 1, 108, 101, 107, 114, 105, 118, 2, 115, 116, 0, 1, 108, 101, 112, 112, 97, 107, 2, 115,
+			116, 0, 1, 108, 101, 114, 100, 110, 97, 118, 2, 115, 116, 0, 1, 108, 101, 114, 166, 195, 108, 2, 115, 116, 0, 1, 108, 101, 118, 105,
+			114, 107, 115, 2, 115, 116, 0, 1, 108, 102, 2, 116, 32, 0, 1, 108, 102, 2, 116, 98, 97, 114, 0, 1, 108, 102, 2, 116, 110, 0,
+			1, 108, 108, 101, 118, 2, 115, 116, 0, 1, 108, 110, 101, 106, 184, 195, 2, 115, 116, 0, 1, 108, 110, 118, 166, 195, 104, 2, 115, 116,
+			0, 1, 108, 115, 110, 101, 106, 184, 195, 2, 115, 116, 0, 1, 108, 115, 110, 101, 114, 184, 195, 2, 115, 116, 0, 1, 108, 115, 118, 105,
+			108, 2, 115, 116, 0, 1, 108, 117, 2, 115, 116, 0, 1, 110, 2, 107, 32, 0, 1, 114, 100, 2, 112, 0, 1, 115, 2, 110, 107, 114,
+			111, 99, 0, 4, 103, 1, 114, 2, 32, 3, 132, 81, 0, 103, 1, 114, 2, 32, 101, 110, 100, 32, 0, 4, 1, 18, 73, 2, 116, 12,
+			12, 3, 133, 0, 1, 100, 2, 18, 66, 116, 0, 1, 100, 2, 107, 0, 1, 100, 2, 112, 0, 1, 107, 2, 109, 25, 0, 1, 107, 115,
+			2, 108, 32, 0, 1, 107, 115, 2, 108, 108, 0, 1, 107, 115, 2, 116, 12, 0, 1, 108, 2, 103, 116, 0, 1, 108, 2, 107, 107, 12,
+			12, 0, 1, 108, 2, 107, 115, 97, 108, 105, 103, 0, 1, 108, 2, 107, 195, 184, 0, 1, 108, 2, 109, 17, 67, 0, 1, 108, 2, 110,
+			99, 104, 0, 1, 108, 2, 115, 116, 103, 195, 165, 114, 100, 0, 1, 108, 102, 2, 116, 116, 101, 0, 1, 108, 102, 97, 114, 102, 2, 116,
+			0, 1, 109, 2, 107, 107, 12, 12, 0, 1, 109, 115, 2, 107, 110, 0, 1, 110, 2, 107, 107, 101, 114, 0, 1, 110, 2, 109, 102, 0,
+			1, 110, 2, 110, 110, 101, 0, 1, 110, 2, 116, 116, 12, 0, 1, 110, 100, 117, 2, 116, 0, 1, 110, 101, 98, 2, 116, 0, 1, 112,
+			2, 110, 116, 0, 1, 114, 2, 17, 67, 12, 0, 1, 114, 2, 18, 66, 11, 12, 12, 0, 1, 114, 103, 2, 110, 116, 0, 1, 115, 2,
+			116, 116, 101, 110, 12, 0, 1, 116, 115, 2, 107, 12, 0, 1, 116, 115, 2, 107, 107, 12, 12, 0, 1, 116, 115, 2, 109, 112, 101, 114,
+			0, 2, 110, 100, 12, 0, 2, 110, 107, 12, 0, 8, 110, 2, 110, 32, 0, 114, 114, 101, 1, 102, 3, 133, 12, 23, 108, 0, 110, 100,
+			105, 1, 115, 2, 107, 3, 133, 50, 72, 37, 0, 110, 103, 2, 97, 3, 133, 50, 81, 0, 4, 110, 103, 3, 133, 68, 0, 110, 103, 1,
+			108, 0, 115, 115, 1, 107, 3, 133, 89, 0, 4, 1, 99, 2, 98, 101, 114, 3, 136, 0, 1, 107, 115, 2, 108, 105, 103, 104, 116, 0,
+			1, 116, 115, 2, 108, 105, 115, 116, 0, 114, 111, 110, 101, 1, 116, 3, 136, 34, 6, 125, 58, 50, 0, 116, 101, 1, 98, 3, 136, 47,
+			0, 112, 97, 115, 115, 1, 98, 3, 136, 48, 35, 12, 89, 0, 4, 108, 101, 1, 108, 114, 97, 99, 3, 136, 55, 0, 108, 101, 8, 108,
+			0, 100, 101, 1, 108, 99, 3, 136, 72, 0, 100, 101, 108, 108, 1, 114, 3, 136, 72, 6, 115, 59, 0, 107, 101, 115, 8, 115, 3, 136,
+			81, 89, 0, 97, 8, 119, 2, 116, 116, 3, 136, 112, 0, 7, 6, 122, 0, 1, 101, 104, 99, 2, 32, 3, 0, 122, 1, 105, 112, 2,
+			97, 3, 47, 89, 0, 4, 3, 89, 0, 122, 0, 101, 97, 2, 108, 97, 110, 3, 89, 36, 0, 4, 111, 109, 98, 105, 3, 89, 108, 65,
+			71, 37, 0, 111, 109, 98, 105, 101, 0, 7, 6, 0, 195, 177, 3, 21, 101, 115, 0, 195, 175, 3, 37, 12, 0, 36, 3, 72, 108, 55,
+			108, 0, 195, 167, 3, 89, 0, 195, 171, 3, 115, 0, 195, 160, 3, 117, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts11 = FileInMemory_createWithData (208489, reinterpret_cast<const char *> (&espeakdata_dicts11_data), 
+			U"espeak-1.48.04-source/espeak-data/da_dict", 
 			U"da");
-		Collection_addItem (me.peek(), espeakdata_dicts10.transfer());
+		my addItem_move (espeakdata_dicts11.move());
 
-		static unsigned char espeakdata_dicts11_data[21637] = {
-			0, 4, 0, 0, 140, 33, 0, 0, 0, 0, 0, 0, 0, 21, 65, 4, 116, 15, 116, 15, 10, 127, 0, 85, 46, 32, 97, 32, 46, 32,
-			111, 32, 46, 32, 0, 0, 0, 0, 0, 12, 201, 36, 228, 194, 21, 51, 206, 16, 84, 133, 67, 11, 70, 9, 35, 215, 76, 84, 128, 21,
-			0, 10, 0, 0, 9, 68, 76, 208, 76, 48, 21, 0, 10, 0, 0, 10, 135, 26, 21, 18, 195, 188, 3, 11, 66, 0, 13, 4, 95, 8,
-			1, 3, 107, 6, 35, 76, 109, 49, 0, 0, 0, 8, 67, 69, 82, 90, 21, 0, 10, 0, 0, 0, 0, 11, 67, 44, 19, 142, 4, 49,
-			35, 50, 0, 9, 0, 16, 70, 76, 243, 12, 80, 83, 128, 4, 88, 113, 55, 47, 13, 50, 0, 0, 11, 67, 76, 147, 132, 88, 111, 50,
-			47, 0, 72, 16, 4, 95, 48, 67, 15, 6, 107, 114, 50, 72, 108, 132, 47, 13, 0, 0, 0, 17, 7, 8, 195, 164, 20, 20, 5, 14,
-			107, 4, 109, 47, 13, 50, 0, 9, 0, 0, 0, 7, 196, 48, 147, 9, 20, 20, 7, 196, 45, 84, 137, 20, 20, 0, 0, 0, 8, 67,
-			28, 147, 128, 21, 0, 10, 17, 7, 8, 195, 164, 20, 20, 5, 20, 107, 4, 109, 47, 13, 47, 0, 9, 0, 0, 0, 0, 11, 67, 92,
-			148, 132, 84, 4, 111, 34, 72, 0, 17, 67, 9, 165, 192, 71, 13, 132, 118, 114, 68, 89, 84, 122, 88, 13, 0, 0, 6, 195, 21, 69,
-			193, 72, 9, 1, 35, 50, 114, 65, 108, 0, 27, 0, 0, 13, 1, 37, 48, 34, 127, 132, 6, 109, 50, 47, 0, 27, 0, 11, 67, 92,
-			148, 128, 84, 118, 34, 0, 72, 9, 7, 1, 38, 114, 50, 47, 0, 0, 0, 0, 0, 20, 71, 5, 97, 78, 81, 84, 137, 56, 35, 84,
-			109, 50, 47, 120, 34, 6, 118, 50, 0, 11, 67, 92, 20, 128, 2, 84, 116, 34, 0, 9, 22, 67, 28, 20, 128, 81, 4, 116, 34, 50,
-			6, 111, 99, 47, 0, 81, 110, 105, 99, 104, 116, 32, 10, 1, 42, 91, 47, 109, 34, 50, 0, 27, 0, 9, 1, 43, 48, 55, 114, 89,
-			0, 27, 0, 12, 201, 52, 149, 5, 36, 224, 78, 16, 84, 128, 65, 16, 69, 21, 133, 18, 20, 208, 109, 49, 89, 47, 34, 6, 126, 65,
-			0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 8, 80, 133, 56, 71, 126, 71, 13, 50, 0, 0, 0, 0, 0, 9, 68, 77, 82, 84, 20,
-			21, 0, 10, 0, 13, 5, 95, 48, 1, 14, 4, 15, 23, 114, 50, 47, 0, 0, 20, 9, 1, 21, 195, 159, 5, 18, 4, 5, 13, 6,
-			121, 89, 108, 72, 4, 126, 65, 0, 0, 0, 0, 12, 67, 28, 19, 154, 81, 4, 35, 50, 132, 0, 9, 0, 21, 73, 77, 2, 78, 61,
-			160, 73, 76, 50, 0, 89, 48, 118, 50, 6, 127, 132, 122, 91, 0, 9, 1, 61, 81, 55, 122, 99, 0, 27, 0, 19, 71, 21, 38, 135,
-			20, 34, 82, 28, 126, 34, 132, 81, 13, 71, 111, 34, 81, 0, 0, 7, 196, 64, 147, 137, 20, 20, 0, 15, 1, 64, 49, 55, 6, 35,
-			65, 108, 10, 4, 35, 83, 13, 0, 0, 9, 66, 4, 32, 35, 48, 0, 76, 28, 0, 11, 67, 76, 144, 200, 88, 111, 99, 0, 72, 9,
-			0, 0, 0, 0, 0, 0, 0, 16, 70, 20, 147, 137, 28, 84, 192, 122, 50, 111, 81, 13, 89, 0, 76, 8, 67, 48, 243, 203, 21, 0,
-			10, 0, 8, 67, 80, 129, 64, 86, 13, 0, 0, 0, 8, 197, 4, 195, 5, 36, 224, 66, 0, 16, 70, 77, 0, 82, 76, 19, 64, 91,
-			48, 116, 34, 88, 116, 65, 0, 8, 67, 77, 0, 77, 21, 0, 10, 0, 17, 70, 16, 160, 75, 5, 37, 1, 75, 35, 49, 6, 35, 34,
-			47, 116, 0, 9, 67, 5, 37, 0, 116, 34, 47, 0, 10, 67, 5, 81, 128, 121, 83, 0, 76, 28, 11, 67, 8, 65, 64, 71, 109, 50,
-			72, 13, 0, 0, 0, 10, 69, 76, 84, 150, 21, 32, 21, 0, 10, 0, 12, 137, 20, 18, 1, 7, 195, 182, 4, 9, 5, 20, 0, 0,
-			15, 68, 32, 16, 133, 56, 107, 4, 116, 71, 13, 50, 0, 9, 12, 8, 196, 56, 80, 133, 56, 76, 28, 0, 10, 69, 92, 147, 132, 61,
-			112, 21, 0, 10, 0, 13, 5, 195, 182, 4, 5, 13, 130, 72, 6, 126, 65, 0, 0, 0, 0, 10, 69, 12, 128, 78, 28, 80, 21, 0,
-			10, 6, 65, 88, 83, 121, 0, 0, 0, 16, 67, 4, 227, 64, 6, 35, 50, 65, 4, 109, 34, 49, 114, 68, 0, 0, 0, 11, 1, 92,
-			71, 35, 49, 89, 55, 35, 91, 0, 0, 0, 17, 71, 92, 20, 211, 21, 37, 78, 28, 84, 35, 89, 13, 34, 114, 68, 0, 19, 71, 36,
-			195, 9, 8, 84, 129, 48, 111, 55, 118, 71, 13, 34, 6, 116, 55, 0, 12, 67, 92, 20, 148, 2, 84, 116, 34, 47, 0, 9, 10, 67,
-			16, 240, 200, 72, 113, 101, 0, 76, 0, 7, 196, 53, 83, 73, 20, 20, 0, 7, 65, 96, 111, 49, 89, 0, 0, 20, 4, 95, 49, 77,
-			50, 10, 6, 122, 50, 13, 15, 65, 111, 55, 111, 6, 127, 50, 0, 0, 22, 4, 95, 49, 77, 51, 10, 6, 122, 50, 13, 15, 65, 111,
-			55, 111, 6, 35, 34, 72, 13, 0, 0, 12, 68, 28, 80, 133, 56, 81, 126, 71, 13, 50, 0, 13, 68, 44, 243, 142, 80, 4, 49, 113,
-			50, 47, 0, 9, 0, 0, 0, 15, 67, 21, 101, 12, 126, 84, 109, 50, 47, 120, 6, 109, 55, 0, 0, 0, 21, 65, 104, 132, 114, 65,
-			71, 6, 122, 91, 48, 118, 55, 0, 83, 46, 32, 98, 32, 46, 32, 0, 0, 9, 67, 92, 20, 192, 84, 35, 89, 0, 0, 0, 8, 197,
-			105, 147, 66, 4, 192, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 69, 92, 82, 84, 84, 208, 84, 122, 47, 23, 6,
-			114, 65, 0, 0, 0, 10, 67, 76, 17, 212, 88, 116, 81, 47, 0, 9, 198, 44, 20, 212, 4, 226, 69, 20, 9, 198, 4, 227, 205, 4,
-			194, 69, 66, 0, 12, 68, 52, 241, 5, 52, 65, 127, 72, 109, 65, 0, 9, 68, 25, 32, 77, 20, 21, 0, 10, 0, 15, 69, 32, 21,
-			20, 20, 224, 107, 4, 35, 47, 13, 50, 0, 9, 0, 0, 8, 67, 84, 226, 88, 21, 0, 10, 9, 1, 126, 47, 111, 55, 72, 13, 0,
-			0, 0, 8, 197, 76, 19, 15, 65, 0, 66, 0, 9, 66, 8, 64, 71, 35, 50, 72, 0, 0, 7, 195, 21, 80, 200, 76, 9, 0, 9,
-			68, 25, 33, 65, 44, 21, 0, 10, 0, 0, 0, 15, 6, 8, 195, 164, 20, 20, 5, 107, 4, 109, 47, 13, 0, 9, 0, 9, 68, 21,
-			97, 78, 80, 21, 0, 10, 0, 0, 8, 67, 80, 19, 11, 21, 0, 10, 0, 0, 0, 0, 0, 9, 67, 5, 97, 64, 116, 84, 109, 0,
-			9, 67, 5, 80, 200, 4, 121, 101, 0, 0, 0, 0, 5, 194, 16, 16, 76, 0, 0, 0, 0, 0, 10, 67, 77, 34, 64, 89, 34, 4,
-			118, 0, 0, 11, 68, 81, 32, 73, 56, 47, 34, 126, 50, 0, 13, 68, 84, 210, 9, 56, 114, 65, 107, 6, 111, 50, 0, 0, 8, 197,
-			32, 244, 212, 36, 80, 20, 0, 0, 0, 0, 0, 0, 0, 13, 68, 36, 225, 5, 52, 111, 50, 72, 6, 126, 65, 0, 9, 198, 16, 86,
-			133, 52, 33, 82, 66, 0, 0, 0, 0, 13, 68, 36, 225, 5, 56, 111, 50, 72, 6, 126, 50, 0, 0, 0, 9, 198, 16, 83, 83, 20,
-			192, 128, 66, 0, 11, 67, 5, 84, 192, 4, 121, 89, 0, 28, 11, 0, 12, 68, 20, 147, 137, 28, 122, 50, 111, 99, 0, 9, 0, 14,
-			69, 52, 241, 5, 48, 192, 65, 127, 72, 6, 109, 55, 0, 10, 69, 64, 145, 7, 36, 224, 21, 0, 10, 0, 12, 66, 17, 32, 72, 113,
-			49, 47, 6, 127, 34, 0, 0, 0, 0, 0, 13, 138, 16, 18, 195, 164, 19, 9, 4, 5, 14, 20, 67, 9, 198, 16, 80, 129, 81, 65,
-			64, 66, 0, 0, 12, 68, 44, 19, 143, 20, 49, 35, 50, 6, 120, 0, 0, 8, 197, 76, 245, 197, 37, 64, 66, 0, 0, 8, 67, 4,
-			145, 0, 21, 0, 10, 0, 11, 68, 36, 225, 5, 72, 111, 50, 72, 108, 0, 0, 0, 0, 9, 198, 32, 148, 212, 61, 34, 69, 20, 0,
-			13, 68, 36, 225, 5, 76, 111, 50, 72, 6, 109, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 10, 7, 5, 7,
-			5, 14, 195, 188, 2, 5, 18, 81, 126, 81, 13, 50, 6, 128, 71, 108, 0, 0, 8, 67, 64, 18, 82, 21, 0, 10, 0, 9, 198, 16,
-			145, 83, 20, 192, 128, 66, 0, 20, 71, 56, 81, 204, 36, 113, 78, 80, 50, 126, 81, 55, 118, 75, 6, 109, 50, 47, 0, 0, 12, 68,
-			104, 195, 212, 100, 89, 55, 113, 47, 118, 0, 13, 68, 84, 228, 210, 20, 114, 50, 88, 34, 13, 0, 72, 0, 0, 10, 66, 21, 32, 109,
-			34, 0, 72, 28, 9, 0, 10, 199, 4, 36, 212, 36, 225, 78, 80, 67, 9, 67, 16, 145, 64, 2, 72, 118, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 198, 44, 19, 69, 48, 145, 64, 20, 17, 70, 28, 84, 129, 56, 145, 64, 81, 126, 34, 6, 116, 50, 111, 13, 0, 0, 9,
-			67, 8, 80, 84, 21, 0, 9, 10, 0, 10, 67, 36, 226, 193, 111, 68, 49, 116, 0, 0, 0, 0, 16, 70, 16, 17, 21, 72, 50, 0,
-			72, 116, 72, 6, 114, 34, 99, 0, 11, 67, 8, 82, 64, 71, 122, 0, 76, 28, 9, 0, 12, 4, 95, 4, 16, 20, 10, 49, 113, 65,
-			35, 0, 0, 0, 17, 66, 21, 48, 2, 109, 89, 2, 111, 89, 47, 0, 81, 105, 115, 116, 32, 9, 66, 21, 48, 109, 89, 0, 72, 9,
-			6, 194, 17, 80, 72, 9, 0, 9, 67, 80, 147, 64, 47, 111, 65, 0, 0, 7, 196, 52, 147, 149, 80, 66, 11, 67, 8, 82, 77, 71,
-			122, 65, 0, 76, 28, 0, 8, 67, 40, 80, 78, 21, 0, 10, 0, 10, 67, 16, 145, 83, 72, 118, 88, 0, 72, 17, 70, 84, 228, 197,
-			72, 83, 64, 114, 50, 89, 13, 34, 13, 65, 0, 72, 0, 16, 67, 36, 226, 204, 111, 50, 49, 55, 120, 88, 6, 118, 84, 13, 0, 0,
-			11, 67, 60, 35, 197, 127, 71, 6, 127, 13, 0, 0, 0, 0, 11, 67, 36, 228, 192, 111, 50, 89, 0, 76, 28, 0, 13, 4, 95, 20,
-			12, 4, 47, 6, 111, 55, 72, 13, 0, 17, 3, 95, 35, 57, 47, 4, 35, 71, 120, 55, 6, 116, 47, 127, 108, 0, 0, 0, 15, 70,
-			32, 21, 83, 36, 84, 128, 107, 121, 88, 6, 118, 34, 0, 0, 7, 195, 84, 228, 192, 76, 9, 0, 11, 200, 56, 85, 83, 20, 83, 1,
-			56, 64, 66, 12, 68, 4, 225, 18, 20, 35, 50, 72, 34, 13, 0, 13, 68, 84, 210, 5, 72, 114, 65, 107, 6, 109, 34, 0, 0, 0,
-			8, 66, 25, 32, 83, 34, 121, 0, 0, 19, 71, 4, 36, 197, 57, 66, 69, 72, 35, 48, 88, 109, 50, 47, 6, 118, 34, 0, 0, 0,
-			12, 67, 25, 35, 0, 83, 34, 124, 55, 122, 50, 0, 0, 9, 198, 80, 243, 142, 4, 113, 64, 20, 0, 0, 0, 0, 9, 198, 20, 225,
-			9, 88, 145, 64, 20, 9, 66, 4, 208, 35, 65, 0, 76, 28, 0, 0, 0, 8, 197, 4, 176, 90, 36, 80, 20, 10, 69, 72, 83, 65,
-			44, 80, 21, 0, 10, 14, 69, 76, 243, 12, 80, 80, 4, 88, 113, 55, 47, 13, 0, 0, 0, 0, 13, 68, 92, 242, 5, 72, 84, 127,
-			107, 6, 126, 34, 0, 12, 68, 92, 243, 12, 80, 2, 84, 113, 55, 47, 0, 8, 196, 36, 131, 133, 56, 76, 9, 0, 8, 197, 28, 195,
-			210, 36, 80, 20, 0, 17, 70, 81, 53, 78, 4, 210, 64, 132, 120, 50, 6, 35, 12, 65, 118, 0, 0, 18, 71, 28, 81, 204, 36, 50,
-			5, 56, 81, 13, 81, 55, 111, 99, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 4, 224, 35, 50, 0, 76, 28, 0, 16,
-			70, 12, 128, 78, 28, 145, 82, 91, 35, 68, 90, 6, 118, 34, 0, 0, 0, 0, 12, 67, 32, 16, 133, 2, 107, 116, 71, 13, 0, 9,
-			0, 0, 0, 13, 69, 16, 85, 1, 36, 192, 72, 126, 47, 6, 122, 0, 0, 0, 0, 0, 15, 69, 92, 147, 12, 77, 64, 2, 84, 111,
-			55, 89, 47, 0, 9, 0, 0, 0, 13, 72, 77, 113, 65, 81, 50, 9, 73, 64, 21, 0, 10, 0, 0, 11, 70, 72, 84, 197, 5, 32,
-			200, 21, 0, 10, 0, 0, 19, 8, 8, 195, 164, 20, 20, 5, 19, 20, 107, 4, 109, 47, 109, 89, 47, 0, 9, 0, 9, 198, 72, 83,
-			9, 69, 82, 69, 20, 12, 201, 44, 243, 147, 21, 37, 129, 80, 149, 128, 65, 11, 67, 32, 21, 0, 2, 107, 35, 47, 0, 9, 0, 12,
-			5, 11, 23, 1, 195, 159, 49, 84, 35, 89, 0, 0, 0, 11, 136, 23, 195, 164, 8, 18, 5, 14, 4, 72, 12, 68, 76, 50, 15, 56,
-			91, 4, 127, 50, 0, 12, 11, 136, 23, 195, 164, 8, 18, 5, 14, 4, 8, 0, 0, 0, 0, 0, 12, 67, 25, 81, 82, 83, 128, 34,
-			0, 76, 8, 9, 0, 9, 198, 16, 17, 197, 28, 83, 128, 66, 0, 11, 67, 105, 83, 64, 132, 114, 65, 0, 76, 8, 9, 67, 32, 147,
-			128, 107, 111, 50, 0, 0, 11, 70, 16, 80, 149, 28, 113, 82, 21, 0, 10, 0, 8, 197, 92, 244, 129, 85, 48, 66, 0, 18, 70, 16,
-			149, 137, 16, 83, 132, 72, 118, 84, 118, 72, 6, 109, 50, 47, 0, 7, 66, 16, 160, 21, 0, 10, 0, 7, 195, 16, 148, 128, 76, 9,
-			0, 12, 68, 20, 147, 133, 56, 122, 50, 13, 50, 0, 72, 0, 13, 69, 28, 83, 69, 36, 224, 81, 13, 65, 122, 50, 0, 6, 195, 16,
-			19, 142, 72, 0, 16, 70, 17, 32, 71, 36, 84, 128, 72, 34, 35, 90, 6, 118, 34, 0, 0, 0, 0, 23, 73, 65, 34, 86, 5, 66,
-			83, 36, 84, 128, 48, 34, 118, 84, 35, 47, 118, 88, 6, 118, 34, 0, 8, 197, 44, 243, 147, 84, 192, 65, 15, 69, 28, 83, 137, 4,
-			192, 81, 126, 50, 111, 6, 35, 55, 0, 0, 16, 70, 92, 82, 84, 32, 84, 128, 84, 122, 47, 107, 6, 109, 34, 0, 15, 70, 64, 240,
-			200, 36, 84, 128, 48, 113, 91, 6, 118, 34, 0, 8, 66, 33, 32, 107, 109, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
-			68, 17, 81, 84, 80, 72, 120, 6, 109, 47, 0, 0, 0, 0, 0, 13, 68, 4, 229, 9, 44, 35, 50, 47, 6, 118, 49, 0, 0, 0,
-			0, 0, 12, 68, 36, 132, 133, 52, 118, 34, 13, 65, 0, 72, 0, 0, 0, 17, 71, 92, 82, 84, 21, 37, 78, 28, 84, 122, 47, 13,
-			34, 114, 68, 0, 0, 12, 68, 20, 147, 133, 52, 122, 50, 13, 65, 0, 72, 0, 14, 73, 5, 52, 207, 12, 144, 84, 36, 243, 128, 21,
-			0, 10, 0, 0, 9, 67, 80, 160, 64, 47, 57, 116, 0, 8, 67, 76, 194, 80, 21, 0, 10, 0, 0, 0, 0, 0, 12, 68, 32, 19,
-			132, 100, 107, 109, 50, 72, 118, 0, 11, 68, 36, 132, 133, 72, 118, 34, 108, 0, 72, 13, 3, 95, 49, 15, 10, 6, 126, 34, 89, 47,
-			13, 0, 0, 13, 69, 28, 84, 211, 20, 224, 81, 109, 89, 13, 50, 0, 8, 197, 92, 244, 129, 84, 96, 66, 0, 10, 3, 95, 49, 1,
-			10, 6, 122, 50, 0, 0, 9, 3, 226, 130, 172, 124, 34, 127, 0, 0, 0, 11, 70, 32, 243, 69, 64, 17, 197, 21, 0, 10, 0, 0,
-			9, 67, 80, 17, 192, 47, 116, 81, 0, 0, 0, 16, 70, 52, 83, 149, 21, 69, 5, 65, 109, 50, 120, 6, 109, 47, 0, 0, 0, 0,
-			12, 68, 4, 50, 19, 60, 35, 101, 88, 6, 127, 0, 11, 68, 20, 147, 133, 72, 122, 50, 108, 0, 72, 7, 195, 36, 50, 0, 72, 9,
-			14, 68, 16, 84, 133, 56, 72, 126, 34, 13, 50, 0, 76, 28, 0, 0, 0, 15, 70, 20, 225, 12, 36, 50, 0, 109, 50, 47, 55, 111,
-			99, 0, 0, 10, 67, 52, 244, 147, 65, 113, 34, 89, 0, 13, 68, 92, 84, 132, 20, 84, 4, 109, 34, 72, 13, 0, 12, 68, 20, 147,
-			133, 76, 122, 50, 13, 89, 0, 72, 12, 3, 95, 51, 15, 72, 34, 6, 111, 47, 13, 0, 9, 4, 95, 15, 18, 4, 47, 13, 0, 0,
-			0, 0, 7, 195, 16, 144, 200, 76, 9, 0, 0, 10, 67, 37, 53, 0, 111, 89, 47, 0, 72, 0, 0, 8, 67, 73, 83, 128, 21, 0,
-			10, 7, 195, 36, 131, 64, 76, 9, 0, 0, 0, 0, 20, 71, 21, 2, 83, 44, 244, 1, 48, 126, 48, 111, 89, 49, 127, 48, 6, 116,
-			55, 0, 6, 195, 57, 84, 128, 28, 0, 0, 12, 67, 33, 34, 18, 107, 35, 34, 107, 35, 34, 0, 0, 8, 67, 76, 197, 77, 21, 0,
-			10, 0, 11, 67, 105, 84, 128, 132, 120, 34, 0, 76, 8, 10, 67, 16, 20, 192, 2, 72, 35, 89, 0, 0, 0, 0, 14, 4, 95, 13,
-			3, 14, 65, 6, 116, 49, 34, 113, 50, 0, 0, 0, 0, 0, 0, 11, 70, 40, 246, 83, 80, 144, 203, 21, 0, 10, 0, 0, 10, 69,
-			80, 80, 83, 21, 32, 21, 0, 10, 0, 0, 10, 67, 8, 84, 212, 71, 109, 89, 47, 0, 0, 13, 68, 92, 244, 129, 56, 84, 127, 34,
-			6, 35, 50, 0, 0, 0, 0, 19, 71, 25, 34, 69, 17, 99, 204, 48, 83, 34, 6, 118, 47, 83, 4, 113, 55, 0, 12, 67, 32, 20,
-			212, 2, 107, 35, 89, 47, 0, 9, 0, 10, 67, 16, 20, 211, 72, 35, 89, 0, 76, 12, 3, 95, 55, 15, 88, 6, 118, 71, 47, 13,
-			0, 0, 14, 69, 20, 147, 137, 28, 80, 122, 50, 111, 81, 13, 0, 76, 0, 0, 0, 0, 11, 67, 60, 65, 82, 127, 72, 108, 0, 76,
-			8, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 88, 6, 72, 34, 122, 89, 111, 99, 0, 0, 12, 68, 84, 229, 5, 56, 114, 50, 47,
-			13, 50, 0, 9, 68, 76, 85, 133, 56, 21, 0, 10, 13, 3, 95, 48, 67, 6, 107, 114, 50, 72, 108, 47, 0, 0, 13, 69, 52, 16,
-			200, 20, 224, 65, 35, 101, 13, 50, 0, 0, 0, 8, 67, 81, 34, 80, 21, 0, 10, 0, 12, 68, 8, 85, 5, 56, 71, 126, 47, 13,
-			50, 0, 0, 0, 0, 14, 203, 88, 145, 76, 8, 84, 208, 72, 240, 200, 20, 224, 67, 0, 12, 68, 20, 147, 147, 80, 6, 122, 50, 89,
-			47, 0, 0, 0, 0, 0, 0, 0, 7, 66, 32, 144, 107, 122, 0, 5, 194, 40, 80, 72, 13, 3, 95, 49, 57, 6, 50, 124, 50, 132,
-			126, 50, 0, 0, 13, 3, 95, 49, 56, 6, 10, 35, 101, 132, 126, 50, 0, 0, 15, 68, 84, 229, 5, 72, 4, 114, 50, 47, 108, 0,
-			8, 11, 9, 0, 8, 67, 40, 85, 0, 21, 0, 10, 0, 8, 67, 32, 148, 0, 21, 0, 10, 0, 0, 0, 14, 69, 8, 84, 212, 36,
-			80, 71, 109, 89, 47, 111, 13, 0, 0, 11, 70, 8, 20, 197, 8, 19, 12, 21, 0, 10, 11, 3, 95, 49, 49, 6, 10, 109, 55, 83,
-			0, 0, 10, 3, 95, 49, 48, 6, 132, 126, 50, 0, 0, 9, 68, 48, 85, 133, 48, 21, 0, 10, 13, 3, 95, 49, 51, 6, 72, 34,
-			122, 132, 126, 50, 0, 0, 12, 3, 95, 49, 50, 6, 132, 84, 131, 55, 83, 0, 0, 14, 3, 95, 49, 53, 6, 83, 129, 50, 83, 132,
-			126, 50, 0, 0, 7, 195, 36, 131, 128, 76, 9, 14, 5, 195, 188, 2, 5, 18, 4, 129, 71, 108, 0, 8, 11, 13, 3, 95, 49, 52,
-			6, 83, 111, 34, 132, 126, 50, 0, 0, 13, 68, 76, 84, 137, 20, 89, 126, 34, 111, 38, 13, 0, 7, 196, 61, 33, 201, 20, 20, 13,
-			3, 95, 49, 55, 6, 88, 118, 48, 132, 126, 50, 0, 0, 13, 3, 95, 49, 54, 6, 88, 109, 99, 132, 126, 50, 0, 0, 10, 67, 36,
-			132, 133, 118, 34, 13, 0, 72, 0, 13, 3, 95, 55, 88, 6, 88, 118, 48, 132, 111, 99, 0, 0, 13, 68, 92, 20, 133, 56, 2, 84,
-			116, 34, 13, 50, 0, 0, 8, 197, 8, 19, 11, 4, 224, 65, 0, 9, 198, 16, 83, 147, 20, 192, 128, 66, 17, 70, 16, 20, 211, 20,
-			192, 128, 72, 35, 89, 88, 6, 109, 55, 71, 0, 17, 70, 16, 84, 211, 20, 192, 128, 72, 109, 89, 88, 6, 109, 55, 71, 0, 9, 198,
-			16, 84, 147, 20, 192, 128, 66, 0, 9, 67, 36, 132, 128, 118, 34, 0, 72, 0, 0, 0, 0, 0, 0, 0, 11, 70, 92, 80, 147, 37,
-			65, 64, 21, 0, 10, 8, 67, 76, 86, 25, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 48, 20,
-			20, 61, 0, 21, 0, 10, 14, 3, 95, 50, 88, 6, 132, 84, 35, 50, 132, 111, 99, 0, 0, 0, 0, 0, 10, 199, 36, 211, 79, 8,
-			147, 9, 20, 20, 0, 12, 3, 95, 56, 15, 10, 6, 35, 101, 47, 13, 0, 0, 0, 15, 70, 36, 226, 193, 37, 48, 200, 111, 68, 49,
-			116, 111, 91, 0, 0, 11, 67, 76, 82, 84, 88, 122, 47, 0, 72, 9, 0, 0, 0, 11, 70, 24, 148, 133, 92, 19, 12, 21, 0, 10,
-			0, 0, 9, 68, 77, 21, 65, 92, 21, 0, 10, 13, 3, 95, 63, 63, 88, 129, 65, 71, 6, 127, 55, 0, 0, 0, 0, 13, 3, 95,
-			52, 88, 6, 83, 111, 34, 132, 111, 99, 0, 0, 0, 10, 69, 77, 2, 82, 37, 64, 21, 0, 10, 0, 0, 11, 136, 11, 15, 13, 195,
-			182, 4, 9, 5, 20, 6, 195, 92, 82, 76, 8, 0, 0, 14, 69, 20, 147, 136, 21, 32, 122, 50, 107, 6, 126, 34, 0, 0, 8, 66,
-			52, 48, 65, 14, 49, 0, 8, 66, 32, 208, 107, 13, 65, 0, 0, 14, 3, 95, 53, 88, 6, 83, 129, 50, 83, 132, 111, 99, 0, 0,
-			14, 68, 8, 85, 143, 72, 71, 13, 83, 127, 34, 0, 66, 8, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 6, 88, 109, 99,
-			132, 111, 99, 0, 0, 0, 6, 195, 76, 82, 78, 72, 0, 0, 11, 67, 88, 243, 64, 83, 113, 65, 0, 76, 28, 0, 0, 0, 0, 8,
-			67, 24, 245, 76, 21, 0, 10, 0, 0, 0, 0, 10, 199, 56, 85, 77, 21, 130, 75, 60, 66, 0, 0, 0, 9, 66, 57, 32, 50, 114,
-			65, 108, 0, 0, 20, 71, 20, 33, 78, 16, 18, 5, 72, 126, 71, 13, 50, 72, 35, 107, 6, 126, 34, 0, 8, 67, 52, 18, 76, 21,
-			0, 10, 13, 3, 95, 56, 88, 6, 10, 35, 101, 132, 111, 99, 0, 0, 0, 13, 69, 76, 16, 130, 5, 64, 88, 35, 71, 35, 47, 0,
-			0, 16, 70, 64, 20, 211, 4, 113, 64, 48, 35, 89, 6, 35, 90, 13, 0, 9, 198, 36, 226, 149, 72, 145, 64, 20, 9, 198, 5, 37,
-			5, 72, 145, 64, 20, 0, 0, 11, 70, 32, 243, 204, 36, 112, 78, 21, 0, 10, 0, 9, 67, 44, 145, 0, 49, 111, 72, 0, 12, 137,
-			1, 20, 15, 13, 13, 195, 188, 12, 12, 65, 0, 9, 198, 52, 21, 5, 72, 145, 64, 20, 9, 66, 36, 208, 111, 65, 0, 76, 28, 0,
-			13, 3, 95, 57, 88, 6, 50, 124, 50, 132, 111, 99, 0, 0, 11, 200, 36, 226, 207, 57, 53, 1, 57, 64, 65, 13, 68, 32, 21, 20,
-			20, 107, 4, 35, 47, 13, 0, 9, 0, 8, 197, 57, 83, 69, 72, 240, 65, 0, 0, 0, 0, 0, 15, 3, 95, 63, 65, 71, 6, 120,
-			101, 89, 47, 116, 71, 13, 0, 0, 20, 71, 20, 33, 78, 16, 18, 9, 56, 126, 71, 13, 50, 72, 35, 107, 6, 111, 50, 0, 0, 13,
-			72, 20, 229, 5, 73, 4, 137, 76, 80, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 66, 60, 32, 4, 113, 71, 0, 8, 11, 9,
-			9, 66, 36, 224, 111, 50, 0, 76, 28, 0, 17, 70, 20, 225, 193, 28, 145, 82, 35, 68, 81, 35, 90, 6, 118, 34, 0, 8, 67, 40,
-			240, 128, 21, 0, 10, 0, 0, 0, 15, 70, 80, 129, 65, 80, 84, 128, 47, 126, 6, 116, 47, 108, 0, 0, 15, 4, 95, 15, 7, 15,
-			6, 127, 81, 113, 50, 4, 109, 49, 0, 0, 13, 68, 40, 85, 26, 80, 57, 4, 109, 132, 47, 0, 12, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 14, 69, 48, 241, 201, 21, 32, 55, 127, 90, 6, 118, 34, 0, 0, 0, 0, 0, 15, 69, 73, 112, 78, 16, 16, 34, 114, 6,
-			35, 50, 72, 116, 0, 12, 67, 92, 83, 142, 4, 84, 109, 50, 0, 8, 11, 0, 0, 10, 67, 28, 80, 148, 81, 126, 71, 47, 0, 0,
-			0, 0, 0, 9, 67, 20, 147, 128, 122, 50, 0, 76, 11, 67, 65, 35, 192, 4, 48, 34, 127, 0, 8, 0, 14, 4, 95, 48, 77, 52,
-			71, 111, 55, 111, 6, 127, 50, 0, 0, 0, 15, 70, 25, 84, 131, 32, 83, 128, 83, 114, 34, 99, 13, 50, 0, 17, 4, 95, 48, 77,
-			50, 15, 65, 111, 55, 111, 6, 127, 50, 13, 50, 0, 0, 11, 67, 52, 19, 128, 65, 35, 50, 0, 72, 9, 11, 67, 88, 243, 128, 83,
-			113, 50, 0, 76, 28, 18, 4, 95, 48, 77, 51, 15, 65, 111, 55, 111, 6, 35, 34, 72, 13, 50, 0, 0, 10, 67, 20, 147, 133, 122,
-			50, 13, 0, 72, 0, 14, 4, 95, 48, 77, 49, 6, 47, 121, 88, 13, 50, 47, 0, 0, 9, 66, 60, 64, 127, 72, 108, 0, 9, 14,
-			4, 95, 2, 18, 22, 71, 14, 16, 6, 125, 84, 13, 0, 0, 7, 195, 52, 148, 128, 76, 9, 0, 0, 10, 69, 5, 4, 5, 4, 192,
-			21, 0, 10, 0, 16, 67, 33, 36, 199, 107, 109, 34, 6, 121, 89, 81, 126, 71, 108, 0, 0, 11, 67, 88, 244, 128, 4, 83, 113, 34,
-			0, 11, 0, 0, 0, 0, 0, 0, 12, 69, 76, 50, 21, 49, 64, 91, 120, 55, 47, 0, 0, 0, 0, 0, 0, 13, 66, 44, 208, 49,
-			118, 55, 127, 65, 126, 47, 108, 0, 0, 0, 11, 200, 88, 145, 76, 48, 82, 67, 33, 64, 66, 0, 12, 67, 105, 112, 82, 132, 84, 4,
-			35, 12, 34, 0, 0, 0, 11, 67, 52, 149, 0, 65, 111, 47, 0, 76, 8, 0, 0, 0, 7, 66, 53, 144, 21, 0, 10, 0, 18, 9,
-			8, 195, 164, 21, 19, 3, 8, 5, 14, 107, 124, 89, 99, 13, 50, 0, 0, 0, 0, 9, 198, 52, 243, 143, 80, 243, 128, 67, 0, 8,
-			67, 61, 85, 0, 21, 0, 10, 0, 9, 68, 12, 240, 67, 32, 21, 0, 10, 0, 0, 0, 0, 0, 0, 11, 70, 4, 48, 207, 84, 229,
-			0, 21, 0, 10, 0, 15, 70, 20, 147, 133, 72, 193, 73, 122, 50, 13, 34, 55, 122, 0, 0, 0, 0, 9, 198, 56, 80, 149, 48, 244,
-			192, 67, 0, 7, 195, 52, 144, 200, 72, 9, 0, 10, 67, 21, 33, 5, 126, 34, 72, 13, 0, 0, 0, 0, 24, 67, 56, 240, 200, 50,
-			6, 113, 101, 15, 50, 6, 111, 99, 47, 0, 28, 81, 110, 105, 99, 104, 116, 32, 6, 195, 56, 240, 200, 8, 0, 11, 68, 64, 240, 200,
-			76, 48, 113, 101, 89, 0, 0, 0, 0, 9, 198, 77, 2, 79, 56, 17, 197, 20, 0, 0, 0, 0, 0, 8, 67, 40, 242, 197, 21, 0,
-			10, 0, 11, 67, 4, 33, 82, 116, 71, 108, 0, 76, 8, 0, 16, 70, 5, 32, 200, 4, 146, 192, 35, 34, 99, 6, 116, 111, 49, 0,
-			0, 0, 16, 70, 20, 147, 129, 56, 65, 82, 122, 50, 6, 35, 50, 72, 108, 0, 0, 0, 19, 4, 95, 3, 9, 18, 132, 6, 111, 34,
-			49, 114, 65, 83, 55, 109, 49, 89, 0, 0, 0, 0, 0, 0, 0, 9, 68, 76, 130, 82, 80, 21, 0, 10, 0, 0, 0, 0, 0, 15,
-			69, 36, 229, 5, 72, 224, 111, 50, 47, 6, 109, 34, 50, 0, 15, 69, 92, 243, 12, 20, 224, 2, 84, 113, 55, 13, 50, 0, 9, 0,
-			0, 17, 4, 95, 19, 20, 11, 91, 34, 6, 126, 81, 89, 47, 34, 111, 99, 0, 0, 0, 15, 69, 64, 192, 78, 21, 64, 48, 55, 35,
-			50, 6, 126, 47, 0, 12, 4, 95, 1, 3, 21, 35, 49, 6, 120, 47, 0, 0, 10, 198, 60, 33, 204, 20, 144, 200, 66, 8, 21, 3,
-			95, 194, 171, 6, 35, 50, 83, 128, 51, 114, 68, 89, 132, 4, 122, 99, 13, 50, 0, 0, 0, 0, 0, 11, 70, 80, 84, 141, 36, 224,
-			76, 21, 0, 10, 0, 0, 0, 15, 69, 16, 144, 68, 20, 208, 72, 118, 35, 72, 6, 126, 65, 0, 10, 69, 72, 240, 68, 36, 80, 21,
-			0, 10, 0, 0, 9, 198, 48, 20, 16, 4, 194, 69, 20, 15, 4, 95, 18, 14, 7, 49, 34, 6, 127, 58, 90, 109, 49, 0, 0, 0,
-			0, 0, 0, 13, 68, 105, 81, 5, 52, 132, 120, 6, 72, 126, 65, 0, 0, 0, 0, 0, 0, 0, 0, 20, 71, 77, 64, 76, 4, 115,
-			73, 80, 89, 47, 35, 55, 35, 81, 65, 6, 111, 47, 0, 16, 67, 4, 32, 128, 6, 35, 71, 71, 4, 111, 55, 72, 114, 68, 0, 0,
-			7, 196, 76, 241, 193, 72, 66, 0, 0, 0, 0, 9, 67, 104, 243, 205, 88, 120, 65, 0, 11, 68, 16, 145, 78, 80, 72, 118, 50, 47,
-			0, 0, 14, 69, 21, 36, 212, 20, 224, 126, 34, 89, 47, 13, 50, 0, 0, 0, 0, 0, 14, 69, 76, 83, 2, 77, 64, 88, 109, 55,
-			48, 89, 47, 0, 0, 18, 4, 95, 1, 3, 50, 72, 6, 113, 48, 13, 55, 35, 49, 4, 120, 47, 0, 0, 0, 0, 0, 9, 66, 60,
-			176, 127, 49, 6, 126, 0, 0, 0, 0, 18, 70, 88, 244, 136, 21, 34, 71, 83, 127, 34, 107, 6, 126, 34, 111, 134, 0, 14, 69, 52,
-			243, 148, 4, 112, 65, 127, 50, 47, 116, 49, 0, 0, 0, 10, 67, 76, 243, 12, 4, 88, 113, 55, 0, 0, 6, 195, 5, 34, 69, 20,
-			0, 0, 0, 0, 0, 0, 25, 3, 95, 194, 187, 6, 35, 50, 83, 128, 51, 114, 68, 89, 132, 4, 122, 99, 13, 50, 15, 132, 6, 120,
-			0, 0, 10, 199, 20, 33, 78, 24, 19, 12, 76, 8, 0, 11, 70, 72, 80, 197, 37, 97, 82, 21, 0, 10, 0, 0, 0, 0, 14, 68,
-			28, 81, 197, 56, 81, 126, 81, 13, 50, 0, 76, 8, 0, 0, 0, 0, 0, 0, 10, 66, 77, 64, 6, 109, 89, 47, 126, 0, 12, 6,
-			95, 15, 18, 4, 50, 48, 89, 47, 13, 0, 0, 5, 130, 196, 141, 43, 0, 0, 12, 201, 21, 133, 18, 5, 96, 71, 4, 229, 0, 65,
-			0, 0, 0, 0, 0, 11, 70, 88, 83, 148, 85, 33, 64, 21, 0, 10, 0, 0, 8, 67, 76, 86, 0, 21, 0, 10, 23, 68, 56, 144,
-			200, 80, 50, 6, 111, 99, 47, 15, 50, 6, 120, 34, 0, 8, 81, 110, 117, 114, 32, 24, 68, 56, 144, 200, 80, 50, 4, 111, 99, 47,
-			15, 65, 6, 126, 34, 0, 14, 81, 109, 101, 104, 114, 32, 23, 68, 56, 144, 200, 80, 50, 6, 111, 99, 47, 15, 4, 65, 126, 34, 0,
-			81, 109, 101, 104, 114, 32, 0, 9, 2, 194, 163, 48, 121, 50, 72, 0, 0, 0, 0, 17, 70, 21, 36, 212, 52, 19, 0, 126, 34, 89,
-			47, 65, 35, 12, 55, 0, 5, 130, 195, 166, 43, 0, 10, 69, 76, 245, 82, 12, 80, 21, 0, 10, 5, 130, 195, 167, 43, 0, 0, 0,
-			0, 0, 0, 0, 11, 70, 12, 243, 80, 85, 65, 82, 21, 0, 10, 0, 0, 0, 0, 7, 196, 16, 82, 78, 20, 76, 0, 0, 9, 2,
-			194, 176, 81, 34, 116, 47, 0, 0, 16, 70, 16, 162, 66, 61, 85, 9, 75, 37, 71, 6, 120, 47, 118, 0, 5, 130, 195, 169, 43, 17,
-			2, 194, 177, 48, 55, 6, 114, 89, 15, 65, 6, 118, 50, 114, 89, 0, 0, 0, 0, 9, 198, 5, 52, 8, 4, 197, 0, 66, 0, 18,
-			71, 5, 36, 129, 56, 114, 69, 72, 35, 34, 35, 68, 90, 6, 118, 13, 0, 18, 71, 5, 36, 5, 28, 114, 69, 72, 35, 34, 48, 109,
-			75, 6, 118, 34, 0, 8, 67, 64, 195, 212, 21, 0, 10, 0, 13, 4, 95, 3, 5, 4, 89, 126, 72, 6, 118, 57, 0, 0, 0, 0,
-			5, 130, 197, 161, 43, 16, 4, 95, 12, 9, 7, 55, 6, 118, 81, 35, 47, 4, 120, 108, 0, 0, 0, 0, 0, 0, 0, 13, 69, 28,
-			83, 210, 28, 80, 75, 113, 12, 34, 75, 0, 18, 7, 11, 195, 182, 14, 14, 5, 14, 4, 49, 131, 50, 13, 50, 0, 9, 12, 0, 0,
-			0, 0, 8, 67, 76, 227, 194, 21, 0, 10, 6, 195, 16, 82, 78, 76, 0, 0, 0, 0, 9, 198, 64, 20, 129, 16, 145, 83, 67, 0,
-			0, 10, 67, 16, 83, 64, 2, 72, 126, 65, 0, 0, 9, 68, 53, 148, 209, 48, 21, 0, 10, 5, 130, 197, 190, 43, 0, 0, 9, 198,
-			76, 243, 132, 21, 35, 128, 8, 0, 11, 4, 4, 1, 195, 159, 72, 35, 89, 0, 76, 0, 9, 68, 12, 128, 82, 80, 21, 0, 10, 7,
-			196, 76, 82, 78, 20, 76, 0, 16, 69, 76, 241, 66, 20, 224, 88, 127, 10, 6, 126, 71, 13, 50, 0, 0, 0, 0, 0, 0, 15, 6,
-			11, 195, 182, 14, 14, 20, 4, 49, 131, 50, 47, 0, 9, 0, 0, 8, 67, 9, 149, 5, 21, 0, 10, 12, 68, 16, 145, 83, 20, 72,
-			118, 88, 13, 0, 72, 0, 14, 69, 49, 80, 197, 57, 64, 55, 120, 89, 109, 50, 47, 0, 15, 69, 93, 84, 132, 21, 64, 84, 4, 114,
-			34, 72, 13, 47, 0, 15, 69, 92, 84, 132, 21, 64, 84, 4, 109, 34, 72, 13, 47, 0, 0, 0, 12, 71, 64, 83, 148, 32, 245, 83,
-			20, 21, 0, 10, 0, 0, 0, 11, 70, 29, 35, 213, 64, 145, 64, 21, 0, 10, 13, 4, 6, 195, 188, 18, 83, 128, 34, 0, 76, 8,
-			9, 0, 9, 198, 64, 84, 144, 48, 86, 0, 66, 0, 0, 13, 69, 17, 34, 84, 80, 80, 72, 34, 111, 47, 13, 0, 0, 0, 0, 9,
-			68, 76, 244, 146, 100, 21, 0, 10, 0, 0, 0, 8, 67, 12, 245, 80, 49, 120, 0, 0, 0, 0, 0, 0, 0, 0, 15, 70, 28, 84,
-			212, 21, 35, 128, 81, 109, 89, 47, 108, 50, 0, 17, 70, 93, 84, 132, 21, 53, 0, 84, 4, 114, 34, 72, 109, 89, 47, 0, 0, 0,
-			0, 11, 68, 44, 131, 69, 72, 49, 65, 126, 34, 0, 11, 68, 8, 81, 82, 20, 71, 126, 34, 13, 0, 9, 68, 81, 83, 133, 72, 21,
-			0, 10, 0, 0, 0, 0, 12, 68, 88, 244, 137, 28, 83, 127, 34, 111, 134, 0, 0, 0, 11, 70, 76, 48, 78, 56, 84, 128, 21, 0,
-			10, 0, 0, 13, 68, 92, 148, 147, 80, 84, 4, 111, 34, 89, 47, 0, 0, 0, 10, 135, 16, 18, 195, 164, 13, 9, 5, 20, 16, 70,
-			32, 84, 130, 21, 33, 192, 107, 109, 34, 71, 109, 34, 81, 0, 0, 0, 0, 0, 0, 29, 75, 65, 35, 194, 48, 83, 65, 80, 148, 201,
-			21, 32, 48, 34, 127, 71, 55, 126, 65, 6, 35, 12, 47, 111, 88, 118, 34, 0, 10, 199, 44, 20, 148, 60, 224, 71, 20, 20, 0, 0,
-			14, 69, 84, 228, 197, 72, 80, 114, 50, 88, 34, 13, 0, 72, 0, 0, 0, 14, 67, 4, 195, 7, 6, 35, 55, 81, 13, 65, 122, 50,
-			0, 11, 2, 95, 34, 132, 118, 47, 6, 116, 47, 0, 0, 20, 2, 95, 33, 6, 121, 89, 23, 34, 4, 120, 83, 13, 132, 4, 122, 99,
-			13, 50, 0, 0, 0, 15, 2, 95, 39, 4, 35, 48, 127, 89, 47, 34, 6, 113, 83, 0, 0, 8, 67, 76, 243, 135, 21, 0, 10, 0,
-			18, 70, 20, 228, 197, 52, 35, 5, 113, 50, 89, 6, 113, 65, 71, 13, 55, 0, 0, 0, 10, 67, 8, 147, 128, 71, 111, 50, 0, 72,
-			10, 67, 16, 83, 128, 2, 72, 126, 50, 0, 0, 13, 68, 92, 20, 149, 52, 84, 116, 34, 6, 114, 65, 0, 9, 68, 20, 208, 73, 48,
-			21, 0, 10, 12, 4, 95, 3, 1, 16, 81, 34, 6, 127, 89, 0, 0, 11, 67, 16, 83, 142, 72, 109, 50, 0, 76, 8, 15, 2, 95,
-			41, 49, 55, 6, 35, 65, 108, 15, 132, 6, 120, 0, 0, 17, 70, 105, 81, 197, 28, 83, 128, 132, 120, 81, 6, 126, 81, 13, 50, 0,
-			17, 70, 105, 81, 197, 28, 83, 128, 132, 120, 81, 6, 126, 81, 13, 50, 0, 16, 2, 95, 40, 49, 55, 6, 35, 65, 108, 15, 23, 6,
-			121, 83, 0, 0, 8, 67, 92, 244, 132, 21, 0, 10, 11, 67, 64, 84, 128, 48, 109, 34, 0, 76, 28, 15, 2, 95, 47, 91, 34, 6,
-			126, 81, 91, 47, 34, 111, 99, 0, 0, 17, 70, 36, 225, 5, 77, 49, 78, 111, 50, 72, 6, 109, 89, 13, 50, 0, 10, 2, 95, 46,
-			48, 114, 50, 49, 47, 0, 0, 17, 2, 95, 45, 71, 6, 111, 50, 72, 13, 89, 47, 34, 4, 111, 99, 0, 0, 9, 2, 95, 44, 49,
-			113, 65, 35, 0, 0, 10, 67, 16, 84, 128, 2, 72, 109, 34, 0, 9, 2, 95, 51, 6, 72, 34, 122, 0, 0, 9, 2, 95, 50, 6,
-			132, 84, 122, 0, 0, 10, 2, 95, 49, 10, 6, 122, 50, 89, 0, 0, 9, 2, 95, 48, 6, 50, 114, 55, 0, 0, 11, 2, 95, 55,
-			6, 88, 118, 71, 13, 50, 0, 0, 14, 68, 92, 20, 147, 80, 2, 84, 116, 34, 89, 47, 0, 9, 10, 2, 95, 54, 6, 88, 109, 49,
-			89, 0, 0, 10, 2, 95, 53, 6, 83, 129, 50, 83, 0, 0, 9, 2, 95, 52, 6, 83, 118, 34, 0, 0, 15, 67, 88, 115, 0, 83,
-			109, 34, 81, 55, 6, 122, 99, 13, 0, 16, 2, 95, 59, 91, 47, 34, 6, 111, 99, 48, 114, 68, 49, 47, 0, 0, 17, 2, 95, 58,
-			72, 6, 113, 48, 13, 55, 48, 4, 114, 68, 49, 47, 0, 0, 8, 197, 8, 150, 129, 73, 32, 66, 15, 69, 44, 19, 142, 77, 64, 4,
-			49, 35, 50, 89, 47, 0, 9, 9, 2, 95, 57, 6, 50, 124, 50, 0, 0, 10, 2, 95, 56, 6, 10, 35, 101, 47, 0, 0, 10, 67,
-			21, 36, 212, 126, 34, 89, 47, 0, 12, 71, 36, 229, 5, 72, 96, 67, 20, 21, 0, 10, 17, 2, 95, 63, 83, 34, 6, 117, 81, 13,
-			132, 4, 122, 99, 13, 50, 0, 0, 13, 68, 92, 244, 137, 56, 84, 127, 34, 6, 111, 50, 0, 10, 2, 95, 62, 81, 34, 130, 89, 108,
-			0, 0, 0, 10, 2, 95, 60, 49, 55, 122, 50, 108, 0, 0, 0, 0, 0, 0, 0, 10, 68, 56, 148, 195, 32, 50, 118, 91, 0, 19,
-			72, 52, 146, 210, 60, 98, 67, 32, 80, 65, 118, 49, 34, 127, 83, 118, 91, 0, 0, 0, 17, 70, 80, 83, 5, 28, 83, 128, 47, 126,
-			55, 126, 81, 6, 126, 50, 0, 0, 0, 9, 68, 52, 16, 200, 60, 21, 0, 10, 8, 196, 76, 245, 201, 20, 66, 8, 0, 0, 0, 0,
-			9, 68, 48, 20, 197, 72, 21, 0, 10, 7, 196, 52, 82, 78, 20, 76, 0, 14, 69, 88, 84, 133, 36, 224, 83, 109, 34, 6, 122, 50,
-			0, 0, 0, 0, 9, 68, 40, 242, 78, 80, 21, 0, 10, 0, 8, 197, 52, 243, 147, 84, 224, 66, 0, 6, 195, 56, 17, 197, 20, 0,
-			0, 13, 4, 95, 4, 15, 20, 48, 6, 114, 50, 49, 47, 0, 0, 0, 9, 198, 24, 85, 69, 73, 35, 212, 67, 0, 8, 67, 80, 80,
-			200, 21, 0, 10, 17, 67, 85, 49, 128, 2, 114, 50, 47, 88, 127, 83, 6, 113, 34, 47, 0, 22, 2, 95, 91, 6, 109, 49, 111, 81,
-			13, 49, 55, 6, 35, 65, 108, 15, 23, 6, 121, 83, 0, 0, 13, 68, 28, 83, 210, 28, 81, 126, 113, 34, 49, 0, 9, 0, 0, 8,
-			66, 76, 240, 88, 127, 0, 76, 0, 8, 67, 12, 128, 84, 21, 0, 10, 16, 2, 95, 95, 4, 114, 50, 47, 108, 91, 47, 34, 6, 111,
-			99, 0, 0, 16, 2, 95, 94, 132, 111, 34, 49, 114, 65, 83, 55, 109, 49, 89, 0, 0, 13, 69, 12, 194, 81, 84, 80, 49, 55, 111,
-			49, 13, 0, 10, 69, 60, 227, 9, 56, 80, 21, 0, 10, 21, 2, 95, 93, 6, 109, 49, 111, 81, 13, 49, 55, 6, 35, 65, 108, 15,
-			132, 6, 120, 0, 0, 8, 67, 12, 242, 197, 21, 0, 10, 0, 17, 70, 36, 229, 5, 72, 84, 211, 111, 50, 47, 13, 34, 6, 109, 89,
-			0, 8, 67, 12, 243, 204, 21, 0, 10, 0, 13, 68, 93, 84, 132, 20, 84, 4, 114, 34, 72, 13, 0, 12, 68, 84, 228, 197, 72, 114,
-			50, 88, 108, 0, 72, 22, 4, 95, 226, 128, 148, 81, 13, 72, 6, 35, 68, 49, 13, 50, 91, 47, 34, 4, 111, 99, 0, 0, 8, 197,
-			16, 18, 12, 36, 80, 20, 9, 198, 9, 35, 206, 12, 130, 69, 20, 10, 69, 41, 83, 139, 36, 80, 21, 0, 10, 0, 9, 2, 95, 96,
-			81, 34, 116, 84, 0, 0, 0, 8, 196, 17, 84, 131, 32, 76, 8, 0, 0, 0, 11, 67, 56, 16, 200, 50, 116, 101, 0, 76, 28, 0,
-			0, 0, 14, 4, 95, 7, 18, 22, 81, 34, 6, 116, 84, 111, 89, 0, 0, 0, 0, 8, 197, 8, 19, 11, 60, 224, 66, 0, 0, 12,
-			71, 72, 240, 83, 80, 33, 69, 24, 21, 0, 10, 11, 67, 8, 148, 192, 71, 111, 89, 0, 76, 8, 10, 67, 16, 84, 192, 2, 72, 109,
-			89, 0, 0, 7, 196, 84, 213, 197, 28, 65, 0, 14, 69, 76, 243, 12, 20, 224, 4, 88, 113, 55, 13, 50, 0, 0, 0, 0, 0, 16,
-			69, 32, 16, 133, 77, 64, 107, 116, 71, 109, 89, 47, 0, 9, 72, 0, 0, 13, 4, 95, 4, 9, 1, 6, 114, 65, 55, 121, 47, 0,
-			25, 2, 95, 123, 81, 13, 91, 84, 6, 122, 83, 47, 13, 49, 55, 6, 35, 65, 108, 15, 23, 6, 121, 83, 0, 0, 0, 0, 11, 70,
-			60, 97, 140, 36, 225, 64, 21, 0, 10, 9, 66, 84, 208, 114, 65, 0, 76, 28, 0, 11, 67, 8, 148, 212, 71, 111, 89, 47, 0, 72,
-			0, 0, 24, 2, 95, 125, 81, 13, 91, 84, 6, 122, 83, 47, 13, 49, 55, 6, 35, 65, 108, 15, 132, 6, 120, 0, 0, 8, 2, 95,
-			124, 48, 122, 48, 0, 0, 0, 9, 68, 5, 4, 12, 20, 21, 0, 10, 0, 0, 0, 0, 7, 196, 73, 84, 9, 20, 20, 11, 200, 64,
-			85, 5, 73, 50, 76, 36, 80, 20, 0, 10, 69, 4, 48, 197, 77, 48, 21, 0, 10, 0, 0, 0, 9, 68, 12, 245, 67, 32, 21, 0,
-			10, 13, 68, 16, 19, 73, 80, 72, 116, 65, 6, 111, 47, 0, 0, 11, 67, 84, 225, 0, 114, 50, 47, 0, 76, 8, 0, 0, 0, 0,
-			8, 197, 76, 245, 207, 32, 192, 66, 15, 69, 93, 84, 132, 20, 224, 84, 4, 114, 34, 72, 13, 50, 0, 16, 69, 92, 84, 132, 20, 224,
-			84, 4, 109, 34, 72, 13, 50, 0, 12, 0, 0, 0, 7, 196, 72, 148, 201, 44, 65, 13, 68, 4, 35, 210, 80, 35, 71, 6, 113, 34,
-			47, 0, 0, 9, 197, 60, 37, 207, 32, 192, 66, 8, 0, 9, 198, 16, 84, 200, 4, 192, 128, 66, 0, 0, 0, 14, 69, 40, 19, 149,
-			5, 32, 57, 35, 50, 120, 116, 34, 0, 8, 197, 32, 82, 77, 5, 64, 65, 0, 17, 4, 95, 35, 51, 50, 55, 6, 126, 34, 132, 6,
-			122, 99, 13, 50, 0, 0, 0, 0, 14, 69, 76, 243, 12, 77, 64, 4, 88, 113, 55, 89, 47, 0, 0, 0, 0, 0, 14, 69, 84, 228,
-			197, 72, 208, 114, 50, 89, 108, 65, 0, 72, 0, 0, 11, 67, 92, 147, 12, 2, 84, 111, 55, 0, 9, 0, 11, 200, 52, 20, 135, 36,
-			224, 76, 36, 80, 20, 0, 10, 69, 76, 147, 135, 48, 80, 21, 0, 10, 0, 9, 66, 105, 80, 132, 120, 0, 76, 28, 0, 0, 0, 0,
-			0, 0, 0, 0, 17, 70, 36, 229, 5, 72, 225, 84, 111, 50, 47, 13, 34, 50, 109, 47, 0, 0, 0, 0, 0, 0, 12, 71, 12, 19,
-			67, 61, 33, 5, 72, 21, 0, 10, 14, 67, 12, 132, 128, 49, 13, 34, 111, 89, 47, 114, 89, 0, 0, 0, 8, 197, 16, 19, 129, 12,
-			128, 66, 0, 0, 0, 0, 0, 0, 18, 67, 85, 53, 192, 2, 114, 50, 47, 88, 127, 84, 6, 122, 47, 108, 0, 8, 0, 0, 10, 69,
-			64, 244, 212, 21, 32, 21, 0, 10, 0, 0, 0, 7, 196, 81, 84, 137, 56, 66, 0, 14, 69, 32, 244, 147, 4, 208, 107, 113, 108, 88,
-			116, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 71, 36, 195, 5, 28, 149, 9, 52, 111, 55, 126, 81, 118, 47, 6, 118,
-			65, 0, 0, 0, 0, 0, 8, 67, 8, 32, 192, 21, 0, 10, 0, 0, 0, 0, 0, 8, 67, 12, 144, 79, 76, 121, 0, 8, 67, 76,
-			131, 215, 21, 0, 10, 9, 68, 24, 246, 69, 72, 21, 0, 10, 0, 0, 0, 7, 195, 92, 145, 64, 72, 8, 0, 0, 8, 197, 76, 241,
-			143, 73, 64, 66, 0, 11, 70, 52, 84, 211, 4, 113, 64, 21, 0, 10, 0, 10, 67, 76, 145, 64, 88, 118, 0, 72, 9, 0, 0, 10,
-			69, 13, 84, 147, 61, 32, 21, 0, 10, 0, 8, 66, 92, 240, 84, 4, 127, 0, 0, 0, 0, 8, 197, 29, 32, 90, 36, 80, 20, 0,
-			0, 20, 73, 5, 84, 199, 21, 48, 200, 4, 213, 0, 121, 89, 81, 13, 91, 116, 65, 47, 0, 0, 12, 68, 28, 84, 212, 20, 81, 126,
-			89, 47, 13, 0, 0, 0, 0, 9, 67, 80, 243, 64, 47, 113, 65, 0, 19, 71, 8, 19, 132, 4, 114, 69, 72, 71, 35, 50, 72, 35,
-			90, 6, 118, 13, 0, 10, 67, 44, 19, 64, 4, 49, 116, 65, 0, 0, 0, 0, 16, 70, 49, 81, 84, 37, 48, 200, 55, 120, 6, 126,
-			47, 111, 91, 0, 0, 0, 7, 196, 25, 84, 137, 20, 20, 0, 0, 16, 70, 56, 16, 200, 16, 83, 64, 50, 35, 101, 72, 6, 126, 65,
-			0, 0, 0, 9, 68, 48, 241, 201, 56, 21, 0, 10, 0, 0, 0, 11, 67, 4, 196, 192, 35, 55, 89, 0, 76, 28, 0, 6, 195, 4,
-			196, 207, 8, 0, 6, 195, 52, 82, 78, 76, 0, 0, 0, 0, 0, 11, 70, 76, 50, 69, 56, 49, 64, 21, 0, 10, 0, 0, 0, 0,
-			15, 70, 76, 84, 150, 36, 49, 64, 89, 109, 34, 84, 111, 89, 0, 9, 198, 8, 192, 77, 4, 113, 64, 20, 0, 0, 0, 0, 16, 70,
-			36, 195, 15, 100, 19, 0, 111, 55, 113, 35, 57, 116, 55, 0, 0, 0, 9, 198, 77, 80, 138, 20, 181, 0, 65, 0, 8, 197, 20, 33,
-			78, 76, 240, 65, 0, 0, 0, 0, 6, 18, 66, 108, 0, 114, 0, 7, 6, 18, 67, 99, 0, 102, 0, 104, 0, 107, 0, 112, 0, 113,
-			0, 115, 0, 116, 0, 122, 0, 7, 6, 18, 68, 195, 164, 0, 97, 0, 7, 6, 18, 69, 195, 182, 0, 111, 0, 7, 6, 99, 104, 0,
-			4, 1, 117, 102, 2, 115, 3, 49, 0, 2, 111, 114, 32, 0, 2, 111, 114, 100, 0, 2, 195, 182, 114, 0, 8, 2, 18, 66, 17, 65,
-			0, 8, 2, 111, 0, 97, 114, 97, 2, 107, 116, 3, 49, 2, 35, 34, 35, 0, 114, 111, 3, 49, 34, 127, 0, 115, 3, 49, 89, 0,
-			115, 116, 117, 1, 97, 119, 2, 109, 3, 49, 89, 47, 120, 0, 105, 112, 2, 32, 3, 76, 111, 48, 0, 4, 8, 2, 97, 3, 91, 0,
-			8, 2, 105, 99, 0, 8, 2, 105, 102, 0, 8, 2, 105, 108, 0, 97, 110, 99, 101, 3, 91, 138, 89, 13, 0, 4, 3, 99, 0, 1,
-			117, 101, 0, 1, 117, 164, 195, 0, 8, 2, 17, 65, 0, 4, 101, 110, 1, 17, 67, 2, 32, 14, 128, 128, 132, 3, 99, 13, 50, 0,
-			101, 110, 1, 101, 2, 32, 0, 101, 110, 1, 164, 195, 2, 32, 0, 101, 110, 1, 188, 195, 2, 32, 0, 115, 1, 164, 195, 110, 2, 116,
-			3, 99, 89, 0, 4, 1, 97, 3, 101, 0, 1, 101, 114, 98, 2, 101, 110, 0, 1, 111, 0, 1, 117, 0, 7, 6, 103, 101, 0, 8,
-			2, 111, 114, 103, 3, 81, 2, 126, 0, 111, 8, 3, 81, 4, 126, 127, 0, 4, 1, 115, 103, 110, 117, 2, 17, 67, 21, 3, 81, 13,
-			0, 2, 109, 97, 99, 104, 0, 2, 109, 97, 108, 0, 2, 114, 195, 164, 116, 0, 2, 116, 114, 0, 8, 2, 21, 14, 128, 132, 130, 0,
-			8, 2, 105, 109, 112, 0, 8, 2, 111, 114, 14, 128, 132, 130, 0, 98, 105, 114, 103, 101, 2, 32, 14, 128, 128, 135, 3, 81, 13, 71,
-			111, 34, 81, 13, 0, 4, 2, 114, 109, 97, 110, 3, 81, 109, 0, 2, 115, 116, 114, 105, 103, 0, 8, 2, 18, 66, 25, 0, 8, 2,
-			109, 25, 0, 8, 2, 110, 25, 0, 8, 2, 110, 101, 114, 0, 105, 2, 12, 3, 81, 122, 0, 4, 8, 2, 98, 101, 29, 3, 81, 126,
-			0, 104, 8, 2, 101, 29, 0, 104, 101, 110, 3, 81, 126, 13, 50, 0, 110, 101, 114, 97, 108, 2, 105, 115, 3, 81, 126, 50, 13, 34,
-			35, 55, 0, 110, 101, 114, 97, 108, 3, 81, 126, 50, 109, 34, 6, 35, 55, 0, 98, 101, 110, 3, 81, 126, 71, 13, 50, 0, 4, 103,
-			101, 110, 3, 81, 126, 81, 13, 50, 0, 103, 101, 110, 8, 2, 21, 14, 128, 132, 133, 0, 103, 110, 3, 81, 126, 81, 50, 0, 7, 6,
-			105, 101, 0, 4, 1, 10, 2, 114, 32, 3, 6, 118, 0, 1, 10, 2, 114, 108, 105, 99, 104, 0, 1, 21, 2, 32, 0, 1, 21, 2,
-			114, 101, 29, 0, 2, 114, 115, 21, 0, 4, 110, 1, 103, 21, 2, 32, 3, 6, 118, 13, 50, 0, 110, 1, 104, 112, 2, 32, 0, 110,
-			1, 109, 21, 2, 32, 0, 110, 1, 112, 21, 2, 32, 0, 110, 1, 114, 101, 115, 2, 32, 0, 110, 1, 114, 101, 116, 116, 2, 32, 0,
-			110, 1, 114, 111, 101, 2, 32, 0, 110, 1, 114, 111, 103, 2, 32, 0, 110, 1, 114, 116, 101, 2, 32, 0, 110, 1, 114, 116, 115, 117,
-			100, 2, 32, 0, 110, 1, 115, 21, 2, 32, 0, 110, 1, 116, 21, 2, 32, 0, 114, 117, 110, 103, 3, 6, 118, 34, 114, 68, 0, 114,
-			117, 110, 103, 115, 3, 6, 118, 34, 114, 68, 89, 0, 4, 1, 21, 2, 32, 28, 17, 3, 8, 111, 13, 0, 1, 100, 117, 116, 115, 2,
-			32, 0, 1, 108, 97, 109, 114, 111, 102, 0, 1, 108, 105, 109, 97, 102, 0, 1, 108, 111, 102, 2, 32, 0, 1, 114, 101, 102, 2, 110,
-			0, 1, 114, 101, 116, 107, 97, 98, 0, 110, 1, 10, 2, 32, 3, 8, 111, 13, 50, 0, 110, 115, 1, 10, 2, 32, 3, 8, 111, 38,
-			13, 50, 89, 0, 4, 110, 1, 98, 10, 2, 32, 3, 8, 118, 13, 50, 0, 110, 1, 114, 10, 2, 32, 0, 1, 117, 2, 114, 32, 3,
-			23, 6, 118, 0, 1, 10, 2, 108, 108, 32, 3, 111, 6, 109, 0, 110, 116, 2, 32, 3, 111, 6, 109, 50, 47, 0, 110, 122, 1, 10,
-			2, 32, 3, 111, 6, 109, 50, 132, 0, 4, 1, 99, 110, 97, 110, 105, 102, 2, 114, 3, 111, 6, 126, 0, 1, 103, 121, 104, 2, 110,
-			0, 1, 107, 110, 97, 98, 2, 114, 0, 1, 108, 97, 116, 105, 2, 110, 0, 1, 108, 101, 116, 111, 104, 2, 114, 0, 1, 109, 101, 114,
-			112, 2, 114, 0, 1, 114, 114, 97, 2, 114, 0, 1, 114, 114, 97, 98, 2, 114, 0, 1, 110, 105, 2, 32, 3, 111, 13, 0, 110, 1,
-			110, 10, 2, 32, 3, 111, 13, 50, 0, 110, 1, 114, 2, 21, 3, 111, 109, 50, 0, 4, 3, 118, 0, 1, 104, 99, 115, 2, 110, 0,
-			104, 0, 110, 115, 116, 1, 100, 3, 118, 50, 89, 47, 0, 7, 6, 195, 159, 0, 3, 89, 0, 8, 2, 32, 3, 109, 89, 132, 109, 47,
-			0, 7, 6, 195, 164, 0, 2, 117, 109, 32, 24, 3, 6, 125, 0, 116, 1, 116, 2, 32, 3, 6, 125, 47, 0, 4, 2, 17, 67, 11,
-			3, 109, 0, 2, 17, 67, 17, 67, 0, 2, 115, 99, 104, 0, 117, 3, 124, 0, 4, 3, 125, 0, 104, 2, 12, 0, 98, 2, 116, 32,
-			3, 125, 48, 0, 103, 2, 116, 32, 3, 125, 49, 0, 7, 6, 195, 182, 0, 2, 32, 3, 6, 130, 0, 4, 3, 130, 0, 104, 2, 12,
-			0, 4, 2, 17, 67, 11, 3, 131, 0, 2, 17, 67, 17, 67, 0, 2, 115, 99, 104, 0, 7, 6, 195, 188, 0, 98, 101, 114, 8, 2,
-			98, 101, 21, 14, 128, 132, 132, 3, 11, 6, 128, 71, 108, 0, 98, 101, 114, 8, 2, 21, 14, 128, 132, 132, 3, 23, 4, 128, 71, 108,
-			0, 4, 3, 128, 0, 104, 2, 12, 0, 98, 2, 116, 32, 3, 128, 48, 0, 103, 2, 116, 32, 3, 128, 49, 0, 98, 101, 114, 8, 2,
-			103, 97, 110, 103, 115, 3, 128, 71, 108, 0, 4, 2, 17, 67, 11, 3, 129, 0, 2, 17, 67, 17, 67, 0, 2, 115, 99, 104, 0, 2,
-			120, 0, 7, 6, 97, 0, 114, 99, 104, 97, 8, 2, 105, 3, 2, 35, 34, 99, 117, 0, 116, 111, 8, 2, 109, 3, 2, 35, 47, 127,
-			0, 4, 98, 8, 2, 110, 111, 114, 3, 2, 35, 48, 0, 98, 8, 2, 115, 111, 0, 98, 8, 2, 115, 111, 114, 0, 98, 8, 2, 115,
-			116, 114, 0, 98, 8, 2, 115, 117, 114, 0, 107, 113, 117, 3, 2, 35, 49, 84, 0, 110, 8, 2, 97, 3, 2, 35, 50, 0, 110, 105,
-			8, 2, 115, 3, 2, 35, 50, 118, 0, 98, 98, 8, 2, 97, 3, 2, 35, 71, 0, 117, 115, 116, 114, 97, 2, 108, 3, 2, 121, 89,
-			47, 34, 117, 0, 112, 112, 101, 8, 2, 108, 108, 21, 3, 4, 35, 48, 109, 0, 110, 116, 104, 114, 111, 112, 111, 8, 3, 4, 35, 50,
-			47, 34, 127, 48, 2, 127, 0, 110, 116, 105, 8, 2, 21, 14, 128, 132, 132, 3, 4, 35, 50, 47, 111, 0, 110, 116, 105, 8, 2, 21,
-			14, 128, 132, 132, 3, 4, 35, 50, 47, 118, 0, 110, 105, 109, 8, 3, 4, 35, 50, 118, 65, 0, 110, 105, 109, 97, 108, 8, 3, 4,
-			35, 50, 118, 65, 116, 55, 0, 110, 103, 108, 111, 8, 2, 21, 3, 4, 35, 68, 81, 55, 127, 0, 4, 108, 1, 110, 97, 107, 10, 2,
-			32, 3, 4, 116, 55, 0, 108, 1, 110, 103, 105, 115, 10, 2, 32, 0, 1, 114, 103, 2, 109, 109, 32, 3, 6, 35, 0, 98, 8, 2,
-			101, 114, 21, 14, 128, 132, 130, 3, 6, 35, 48, 0, 98, 122, 117, 8, 2, 21, 14, 128, 132, 132, 3, 6, 35, 48, 132, 120, 0, 4,
-			99, 104, 115, 8, 2, 21, 14, 128, 132, 132, 3, 6, 35, 49, 89, 0, 99, 104, 115, 8, 2, 101, 108, 0, 4, 110, 1, 110, 105, 101,
-			2, 100, 101, 114, 3, 6, 35, 50, 0, 110, 8, 2, 21, 14, 128, 132, 130, 0, 110, 8, 2, 110, 18, 68, 104, 14, 128, 132, 130, 0,
-			110, 8, 2, 110, 97, 100, 14, 128, 132, 130, 0, 110, 116, 1, 21, 2, 32, 3, 6, 35, 50, 47, 0, 108, 108, 101, 114, 8, 2, 21,
-			14, 128, 132, 133, 3, 6, 35, 55, 13, 34, 0, 4, 1, 21, 2, 98, 101, 108, 32, 3, 6, 116, 0, 1, 21, 2, 98, 108, 32, 0,
-			2, 17, 67, 111, 32, 0, 2, 114, 99, 104, 32, 0, 8, 2, 110, 97, 116, 105, 111, 14, 128, 132, 129, 0, 4, 114, 1, 108, 21, 2,
-			32, 3, 6, 116, 34, 0, 114, 1, 116, 21, 2, 32, 0, 114, 105, 101, 114, 2, 32, 24, 3, 6, 116, 34, 118, 108, 0, 116, 1, 21,
-			2, 32, 3, 6, 116, 47, 0, 116, 105, 115, 99, 104, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 116, 47, 111, 91, 0, 110, 1, 21,
-			2, 32, 3, 6, 116, 50, 0, 110, 105, 101, 114, 2, 32, 24, 3, 6, 116, 50, 118, 108, 0, 4, 108, 1, 17, 65, 21, 2, 32, 3,
-			6, 116, 55, 0, 108, 1, 98, 2, 32, 0, 108, 1, 103, 2, 32, 0, 108, 1, 107, 2, 32, 0, 108, 1, 110, 2, 32, 0, 108, 1,
-			114, 2, 32, 0, 108, 1, 116, 2, 32, 0, 109, 1, 114, 101, 107, 2, 105, 107, 3, 6, 116, 65, 0, 4, 103, 101, 2, 32, 28, 17,
-			3, 6, 116, 90, 13, 0, 103, 101, 2, 110, 32, 28, 33, 0, 110, 99, 101, 1, 115, 2, 32, 3, 6, 138, 89, 0, 110, 99, 101, 1,
-			114, 102, 2, 32, 3, 6, 138, 89, 13, 0, 110, 99, 101, 110, 1, 115, 2, 32, 3, 6, 138, 89, 13, 50, 0, 1, 17, 67, 17, 67,
-			10, 2, 32, 3, 8, 116, 0, 4, 98, 8, 2, 17, 67, 21, 14, 128, 132, 130, 3, 11, 6, 35, 48, 0, 98, 8, 2, 17, 67, 21,
-			14, 128, 132, 130, 0, 98, 8, 2, 195, 164, 14, 128, 132, 130, 0, 117, 102, 8, 2, 21, 14, 128, 132, 131, 3, 11, 6, 121, 83, 0,
-			117, 115, 8, 2, 21, 14, 128, 132, 131, 3, 11, 6, 121, 89, 0, 105, 114, 8, 3, 21, 0, 4, 2, 17, 67, 11, 3, 35, 0, 2,
-			17, 67, 17, 67, 0, 2, 105, 115, 105, 101, 114, 0, 2, 115, 99, 104, 0, 2, 116, 105, 111, 110, 0, 2, 120, 0, 100, 8, 2, 106,
-			117, 3, 35, 47, 0, 4, 98, 8, 2, 105, 3, 35, 48, 0, 98, 8, 2, 106, 0, 98, 8, 2, 115, 101, 0, 98, 8, 2, 115, 122,
-			0, 98, 8, 2, 111, 114, 3, 35, 48, 23, 0, 98, 100, 8, 2, 12, 3, 35, 48, 72, 0, 4, 110, 8, 2, 100, 101, 114, 3, 35,
-			50, 0, 110, 8, 2, 116, 101, 110, 0, 110, 8, 2, 116, 104, 0, 110, 8, 2, 116, 119, 0, 110, 110, 8, 0, 110, 97, 116, 104, 8,
-			3, 35, 50, 35, 47, 0, 110, 104, 101, 105, 109, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 35, 50, 107, 6, 122, 65, 0, 110, 103,
-			108, 105, 8, 2, 17, 67, 3, 35, 68, 81, 55, 118, 0, 98, 98, 8, 2, 114, 101, 118, 3, 35, 71, 0, 98, 101, 114, 114, 8, 3,
-			35, 71, 23, 109, 34, 0, 99, 8, 2, 101, 116, 3, 35, 132, 0, 101, 2, 17, 67, 17, 67, 3, 109, 0, 105, 110, 1, 114, 116, 3,
-			109, 50, 0, 4, 1, 108, 21, 2, 103, 3, 116, 0, 1, 108, 99, 115, 2, 103, 0, 1, 114, 112, 115, 2, 99, 104, 0, 1, 115, 2,
-			103, 0, 1, 115, 2, 109, 32, 0, 1, 115, 2, 109, 107, 101, 105, 116, 0, 2, 17, 67, 32, 0, 2, 32, 0, 2, 112, 104, 0, 8,
-			2, 32, 0, 97, 0, 104, 2, 12, 0, 116, 105, 115, 105, 101, 114, 101, 110, 1, 21, 2, 32, 14, 128, 128, 137, 3, 116, 47, 111, 89,
-			6, 118, 34, 13, 50, 0, 98, 2, 116, 32, 3, 116, 48, 0, 4, 103, 1, 106, 2, 100, 3, 116, 49, 0, 103, 1, 108, 104, 99, 115,
-			2, 103, 101, 0, 103, 2, 116, 32, 0, 1, 109, 2, 108, 116, 32, 3, 116, 55, 0, 98, 101, 110, 8, 2, 100, 3, 116, 71, 13, 50,
-			0, 101, 108, 3, 116, 109, 55, 0, 105, 2, 115, 99, 104, 3, 116, 111, 0, 3, 117, 0, 4, 117, 3, 121, 0, 117, 8, 2, 17, 67,
-			101, 105, 110, 97, 110, 100, 0, 117, 104, 2, 32, 0, 117, 116, 104, 101, 110, 8, 3, 121, 47, 109, 50, 0, 117, 102, 101, 110, 116, 8,
-			3, 121, 83, 13, 50, 47, 0, 117, 115, 8, 2, 107, 117, 3, 121, 89, 0, 4, 105, 3, 122, 0, 121, 0, 4, 105, 114, 1, 109, 2,
-			32, 3, 122, 108, 0, 121, 114, 1, 109, 2, 32, 0, 4, 121, 1, 112, 3, 123, 0, 121, 2, 32, 24, 0, 101, 3, 125, 0, 105, 114,
-			2, 32, 3, 125, 34, 0, 7, 6, 98, 0, 1, 98, 3, 0, 4, 97, 98, 121, 3, 21, 0, 105, 107, 101, 8, 0, 108, 117, 101, 8,
-			0, 111, 97, 114, 100, 0, 111, 111, 109, 8, 0, 4, 2, 18, 67, 3, 48, 0, 2, 32, 24, 0, 8, 111, 2, 17, 67, 0, 116, 2,
-			32, 24, 3, 48, 47, 0, 4, 3, 71, 0, 2, 115, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 101, 17, 68, 17, 67, 0,
-			8, 2, 101, 98, 17, 67, 0, 8, 2, 101, 99, 17, 67, 0, 8, 2, 101, 101, 116, 0, 8, 2, 101, 110, 122, 105, 110, 0, 8, 2,
-			101, 114, 17, 67, 0, 8, 2, 101, 115, 101, 110, 0, 8, 2, 101, 115, 115, 0, 8, 2, 101, 115, 116, 101, 110, 0, 8, 2, 101, 117,
-			103, 0, 8, 2, 101, 117, 108, 0, 8, 2, 101, 117, 116, 0, 8, 2, 106, 17, 65, 0, 4, 97, 8, 2, 108, 17, 65, 3, 71, 2,
-			35, 0, 97, 8, 2, 108, 108, 21, 0, 105, 115, 8, 2, 104, 14, 128, 132, 131, 3, 71, 2, 111, 89, 0, 101, 111, 8, 2, 98, 3,
-			71, 4, 13, 127, 0, 117, 110, 100, 101, 115, 8, 3, 71, 6, 114, 50, 72, 13, 89, 0, 101, 105, 8, 3, 71, 6, 122, 0, 4, 101,
-			1, 110, 101, 17, 67, 10, 2, 17, 67, 21, 3, 71, 13, 0, 101, 1, 115, 103, 110, 117, 2, 17, 67, 21, 0, 101, 2, 114, 101, 105,
-			99, 104, 0, 101, 8, 2, 21, 14, 128, 132, 130, 0, 101, 8, 2, 105, 110, 104, 14, 128, 132, 130, 0, 101, 8, 2, 17, 67, 11, 3,
-			71, 109, 0, 101, 115, 116, 105, 97, 3, 71, 109, 89, 47, 118, 6, 116, 0, 97, 114, 1, 10, 2, 32, 14, 128, 128, 131, 3, 71, 116,
-			34, 0, 97, 114, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 71, 116, 34, 13, 0, 97, 114, 101, 110, 1, 10, 2, 32, 14, 128, 128,
-			133, 3, 71, 116, 34, 13, 50, 0, 97, 114, 101, 109, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71, 116, 34, 13, 65, 0, 97, 114, 101,
-			115, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71, 116, 34, 13, 89, 0, 97, 114, 101, 114, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71,
-			116, 34, 108, 0, 101, 105, 103, 101, 8, 2, 21, 3, 71, 122, 81, 13, 0, 8, 2, 32, 3, 71, 126, 0, 101, 116, 101, 110, 3, 71,
-			126, 47, 13, 50, 0, 101, 105, 103, 101, 8, 2, 32, 3, 71, 126, 91, 0, 111, 2, 115, 104, 3, 71, 127, 0, 7, 6, 99, 0, 1,
-			99, 3, 0, 4, 111, 97, 116, 2, 32, 3, 21, 0, 111, 119, 8, 0, 114, 101, 119, 0, 117, 112, 0, 4, 3, 49, 0, 8, 2, 18,
-			66, 17, 65, 0, 107, 0, 111, 109, 112, 117, 116, 101, 114, 8, 2, 21, 14, 128, 132, 128, 3, 49, 113, 65, 48, 57, 6, 120, 47, 108,
-			0, 111, 100, 101, 8, 3, 49, 127, 47, 0, 4, 2, 105, 101, 3, 89, 0, 2, 121, 0, 121, 98, 101, 114, 8, 3, 89, 122, 71, 108,
-			0, 8, 2, 32, 3, 89, 126, 0, 104, 101, 102, 2, 32, 3, 91, 109, 83, 0, 4, 1, 97, 102, 2, 101, 116, 3, 132, 0, 1, 97,
-			108, 112, 2, 105, 101, 0, 8, 2, 101, 108, 0, 8, 2, 101, 110, 116, 0, 101, 121, 8, 3, 132, 122, 0, 7, 6, 100, 0, 1, 100,
-			3, 0, 4, 101, 97, 108, 8, 3, 21, 0, 101, 115, 105, 103, 110, 0, 103, 101, 2, 32, 0, 114, 105, 118, 101, 0, 114, 117, 103, 8,
-			0, 4, 2, 18, 67, 3, 47, 0, 2, 32, 24, 0, 100, 116, 0, 116, 0, 4, 3, 72, 0, 1, 110, 117, 111, 115, 0, 2, 115, 17,
-			65, 0, 8, 2, 114, 17, 65, 0, 8, 2, 115, 99, 104, 17, 65, 0, 8, 2, 115, 104, 17, 65, 0, 4, 117, 114, 99, 104, 8, 2,
+		static unsigned char espeakdata_dicts12_data[21817] = {
+			0, 4, 0, 0, 44, 34, 0, 0, 0, 0, 13, 68, 92, 244, 129, 56, 84, 127, 34, 6, 35, 50, 0, 0, 19, 71, 28, 81, 197, 58,
+			176, 133, 72, 81, 126, 81, 13, 50, 6, 128, 71, 108, 0, 0, 0, 21, 65, 4, 116, 15, 116, 15, 10, 127, 0, 85, 46, 32, 97, 32,
+			46, 32, 111, 32, 46, 32, 0, 9, 68, 5, 4, 12, 20, 21, 0, 47, 0, 14, 69, 20, 147, 137, 28, 80, 122, 50, 111, 81, 13, 0,
+			76, 0, 17, 70, 81, 53, 78, 4, 210, 64, 132, 120, 50, 6, 35, 12, 65, 118, 0, 0, 0, 17, 70, 36, 225, 5, 77, 49, 78, 111,
+			50, 72, 6, 109, 89, 13, 50, 0, 0, 8, 196, 36, 131, 133, 56, 76, 46, 0, 0, 8, 197, 20, 33, 78, 76, 240, 65, 0, 0, 15,
+			69, 92, 82, 84, 84, 208, 84, 122, 47, 23, 6, 114, 65, 0, 0, 0, 0, 0, 8, 197, 28, 195, 210, 36, 80, 15, 0, 12, 67, 32,
+			20, 212, 2, 107, 35, 89, 47, 0, 46, 11, 67, 8, 148, 212, 71, 111, 89, 47, 0, 72, 12, 4, 95, 100, 112, 116, 10, 49, 113, 65,
+			35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 32, 148, 212, 61, 34, 69, 15, 0, 0, 13, 68, 92, 242, 5, 72, 84, 127,
+			107, 6, 126, 34, 0, 8, 67, 28, 147, 128, 21, 0, 47, 0, 0, 12, 68, 92, 243, 12, 80, 2, 84, 113, 55, 47, 0, 0, 0, 17,
+			67, 9, 165, 192, 71, 13, 132, 118, 114, 68, 89, 84, 122, 88, 13, 0, 0, 9, 1, 35, 50, 114, 65, 108, 0, 27, 0, 0, 7, 196,
+			73, 84, 9, 20, 15, 9, 68, 25, 32, 77, 20, 21, 0, 47, 13, 1, 37, 48, 34, 127, 132, 6, 109, 50, 47, 0, 27, 0, 11, 67,
+			92, 148, 128, 84, 118, 34, 0, 72, 46, 7, 1, 38, 114, 50, 47, 0, 0, 0, 0, 0, 11, 67, 92, 20, 128, 2, 84, 116, 34, 0,
+			46, 22, 67, 28, 20, 128, 81, 4, 116, 34, 50, 6, 111, 99, 47, 0, 81, 110, 105, 99, 104, 116, 32, 10, 1, 42, 91, 47, 109, 34,
+			50, 0, 27, 0, 9, 1, 43, 48, 55, 114, 89, 0, 27, 0, 0, 13, 68, 105, 81, 5, 52, 132, 120, 6, 72, 126, 65, 0, 12, 68,
+			52, 241, 5, 52, 65, 127, 72, 109, 65, 0, 0, 0, 11, 70, 24, 148, 133, 92, 19, 12, 21, 0, 47, 15, 69, 32, 21, 20, 20, 224,
+			107, 4, 35, 47, 13, 50, 0, 46, 0, 13, 4, 95, 100, 105, 97, 6, 114, 65, 55, 121, 47, 0, 0, 0, 10, 67, 16, 20, 211, 72,
+			35, 89, 0, 76, 0, 10, 67, 76, 17, 212, 88, 116, 81, 47, 0, 0, 0, 9, 68, 76, 244, 146, 100, 21, 0, 47, 0, 0, 0, 0,
+			0, 0, 0, 0, 21, 73, 77, 2, 78, 61, 160, 73, 76, 50, 0, 89, 48, 118, 50, 6, 127, 132, 122, 91, 0, 9, 1, 61, 81, 55,
+			122, 99, 0, 27, 0, 0, 0, 15, 1, 64, 49, 55, 6, 35, 65, 108, 10, 4, 35, 83, 13, 0, 0, 9, 66, 4, 32, 35, 48, 0,
+			76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 60, 65, 82, 127, 72, 108, 0, 76, 8, 0, 8, 67, 80, 129, 64, 86, 13, 0,
+			0, 13, 4, 95, 100, 111, 116, 48, 6, 114, 50, 49, 47, 0, 0, 15, 70, 28, 84, 212, 21, 35, 128, 81, 109, 89, 47, 108, 50, 0,
+			19, 71, 25, 34, 69, 17, 99, 204, 48, 83, 34, 6, 118, 47, 83, 4, 113, 55, 0, 0, 16, 70, 77, 0, 82, 76, 19, 64, 91, 48,
+			116, 34, 88, 116, 65, 0, 8, 67, 77, 0, 77, 21, 0, 47, 0, 9, 67, 5, 37, 0, 116, 34, 47, 0, 10, 67, 5, 81, 128, 121,
+			83, 0, 76, 28, 11, 67, 8, 65, 64, 71, 109, 50, 72, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 83, 121,
+			0, 0, 0, 16, 67, 4, 227, 64, 6, 35, 50, 65, 4, 109, 34, 49, 114, 68, 0, 0, 10, 199, 56, 85, 77, 21, 130, 75, 60, 66,
+			8, 67, 12, 245, 80, 49, 120, 0, 0, 10, 69, 4, 48, 197, 77, 48, 21, 0, 47, 11, 1, 92, 71, 35, 49, 89, 55, 35, 91, 0,
+			0, 0, 0, 8, 67, 84, 226, 88, 21, 0, 47, 0, 7, 65, 96, 111, 49, 89, 0, 0, 20, 4, 95, 49, 77, 50, 10, 6, 122, 50,
+			13, 15, 65, 111, 55, 111, 6, 127, 50, 0, 0, 22, 4, 95, 49, 77, 51, 10, 6, 122, 50, 13, 15, 65, 111, 55, 111, 6, 35, 34,
+			72, 13, 0, 0, 0, 0, 0, 0, 0, 21, 65, 104, 132, 114, 65, 71, 6, 122, 91, 48, 118, 55, 0, 83, 46, 32, 98, 32, 46, 32,
+			0, 11, 68, 8, 81, 82, 20, 71, 126, 34, 13, 0, 0, 9, 67, 92, 20, 192, 84, 35, 89, 0, 0, 0, 0, 0, 0, 7, 195, 21,
+			80, 200, 76, 46, 0, 0, 0, 0, 9, 68, 25, 33, 65, 44, 21, 0, 47, 0, 9, 198, 9, 35, 206, 12, 130, 69, 15, 13, 68, 16,
+			19, 73, 80, 72, 116, 65, 6, 111, 47, 0, 0, 0, 16, 4, 95, 48, 67, 111, 6, 107, 114, 50, 72, 108, 132, 47, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 12, 68, 84, 229, 5, 56, 114, 50, 47, 13, 50, 0, 20, 71, 20, 33, 78, 16, 18, 9, 56, 126, 71, 13,
+			50, 72, 35, 107, 6, 111, 50, 0, 9, 68, 76, 85, 133, 56, 21, 0, 47, 9, 1, 126, 47, 111, 55, 72, 13, 0, 0, 13, 69, 52,
+			16, 200, 20, 224, 65, 35, 101, 13, 50, 0, 13, 4, 95, 116, 108, 100, 47, 6, 111, 55, 72, 13, 0, 0, 8, 197, 76, 19, 15, 65,
+			0, 66, 9, 68, 12, 245, 67, 32, 21, 0, 47, 0, 9, 66, 8, 64, 71, 35, 50, 72, 0, 0, 0, 4, 193, 124, 43, 0, 0, 0,
+			0, 0, 0, 13, 138, 112, 114, 195, 164, 115, 105, 100, 101, 110, 116, 67, 0, 0, 12, 68, 88, 244, 137, 28, 83, 127, 34, 111, 134, 0,
+			0, 9, 198, 16, 84, 200, 4, 192, 128, 66, 17, 7, 104, 195, 164, 116, 116, 101, 110, 107, 4, 109, 47, 13, 50, 0, 46, 0, 0, 9,
+			67, 5, 97, 64, 116, 84, 109, 0, 0, 14, 69, 21, 36, 212, 20, 224, 126, 34, 89, 47, 13, 50, 0, 11, 70, 16, 245, 206, 48, 240,
+			68, 21, 0, 47, 0, 12, 67, 32, 16, 133, 2, 107, 116, 71, 13, 0, 46, 0, 5, 194, 16, 16, 76, 0, 0, 0, 9, 68, 21, 97,
+			78, 80, 21, 0, 47, 0, 0, 10, 67, 77, 34, 64, 89, 34, 4, 118, 0, 11, 68, 44, 131, 69, 72, 49, 65, 126, 34, 0, 9, 68,
+			81, 83, 133, 72, 21, 0, 47, 0, 8, 67, 81, 34, 80, 21, 0, 47, 0, 15, 70, 80, 129, 65, 80, 84, 128, 47, 126, 6, 116, 47,
+			108, 0, 11, 70, 9, 35, 215, 76, 84, 128, 21, 0, 47, 16, 69, 46, 131, 142, 20, 224, 4, 49, 131, 50, 13, 50, 0, 46, 10, 0,
+			0, 7, 196, 76, 241, 193, 72, 66, 0, 0, 0, 8, 197, 76, 245, 207, 32, 192, 66, 0, 12, 68, 8, 85, 5, 56, 71, 126, 47, 13,
+			50, 0, 0, 15, 69, 93, 84, 132, 20, 224, 84, 4, 114, 34, 72, 13, 50, 0, 16, 69, 92, 84, 132, 20, 224, 84, 4, 109, 34, 72,
+			13, 50, 0, 10, 0, 0, 13, 69, 16, 85, 1, 36, 192, 72, 126, 47, 6, 122, 0, 0, 19, 71, 8, 19, 132, 4, 114, 69, 72, 71,
+			35, 50, 72, 35, 90, 6, 118, 13, 0, 17, 7, 104, 195, 164, 116, 116, 101, 116, 107, 4, 109, 47, 13, 47, 0, 46, 0, 0, 4, 193,
+			128, 43, 0, 0, 20, 71, 20, 33, 78, 16, 18, 5, 72, 126, 71, 13, 50, 72, 35, 107, 6, 126, 34, 0, 18, 71, 5, 36, 129, 56,
+			114, 69, 72, 35, 34, 35, 68, 90, 6, 118, 13, 0, 18, 71, 5, 36, 5, 28, 114, 69, 72, 35, 34, 48, 109, 75, 6, 118, 34, 0,
+			19, 71, 4, 36, 197, 57, 66, 69, 72, 35, 48, 88, 109, 50, 47, 6, 118, 34, 0, 11, 67, 5, 84, 192, 4, 121, 89, 0, 28, 9,
+			0, 0, 12, 201, 52, 149, 5, 36, 224, 78, 16, 84, 128, 65, 10, 199, 4, 36, 212, 36, 225, 78, 80, 67, 0, 12, 66, 17, 32, 72,
+			113, 49, 47, 6, 127, 34, 0, 0, 20, 71, 5, 97, 78, 81, 84, 137, 56, 35, 84, 109, 50, 47, 120, 34, 6, 118, 50, 0, 8, 67,
+			80, 19, 11, 21, 0, 47, 0, 0, 0, 16, 70, 32, 84, 130, 21, 33, 192, 107, 109, 34, 71, 109, 34, 81, 0, 0, 0, 0, 9, 68,
+			76, 208, 76, 48, 21, 0, 47, 0, 0, 17, 70, 36, 229, 5, 72, 84, 211, 111, 50, 47, 13, 34, 6, 109, 89, 0, 8, 67, 4, 145,
+			0, 21, 0, 47, 0, 9, 4, 95, 111, 114, 100, 47, 13, 0, 0, 9, 67, 104, 243, 205, 88, 120, 65, 0, 11, 68, 16, 145, 78, 80,
+			72, 118, 50, 47, 0, 13, 68, 4, 35, 210, 80, 35, 71, 6, 113, 34, 47, 0, 12, 68, 20, 147, 147, 80, 6, 122, 50, 89, 47, 0,
+			0, 14, 4, 95, 109, 99, 110, 65, 6, 116, 49, 34, 113, 50, 0, 0, 0, 0, 11, 70, 76, 48, 78, 56, 84, 128, 21, 0, 47, 13,
+			68, 40, 85, 26, 80, 57, 4, 109, 132, 47, 0, 10, 0, 15, 69, 92, 147, 12, 77, 64, 2, 84, 111, 55, 89, 47, 0, 46, 0, 0,
+			0, 0, 9, 197, 60, 37, 207, 32, 192, 66, 8, 0, 0, 0, 0, 0, 0, 7, 196, 72, 148, 201, 44, 65, 0, 0, 11, 67, 160, 65,
+			77, 130, 72, 6, 126, 65, 0, 0, 13, 72, 20, 229, 5, 73, 4, 137, 76, 80, 21, 0, 47, 0, 0, 0, 10, 66, 21, 32, 109, 34,
+			0, 72, 28, 46, 0, 9, 67, 16, 145, 64, 2, 72, 118, 0, 0, 0, 0, 0, 0, 9, 67, 5, 80, 200, 4, 121, 101, 0, 0, 0,
+			0, 0, 0, 0, 14, 69, 76, 83, 2, 77, 64, 88, 109, 55, 48, 89, 47, 0, 8, 197, 32, 82, 77, 5, 64, 65, 0, 16, 70, 16,
+			17, 21, 72, 50, 0, 72, 116, 72, 6, 114, 34, 99, 0, 11, 67, 8, 82, 64, 71, 122, 0, 76, 28, 46, 0, 0, 13, 68, 92, 148,
+			147, 80, 84, 4, 111, 34, 89, 47, 0, 0, 17, 66, 21, 48, 2, 109, 89, 2, 111, 89, 47, 0, 81, 105, 115, 116, 32, 9, 66, 21,
+			48, 109, 89, 0, 72, 46, 6, 194, 17, 80, 72, 46, 0, 10, 67, 80, 147, 64, 47, 111, 65, 0, 46, 0, 14, 69, 40, 19, 149, 5,
+			32, 57, 35, 50, 120, 116, 34, 0, 0, 0, 20, 9, 97, 117, 195, 159, 101, 114, 100, 101, 109, 6, 121, 89, 108, 72, 4, 126, 65, 0,
+			0, 18, 71, 28, 81, 204, 36, 50, 5, 56, 81, 13, 81, 55, 111, 99, 13, 50, 0, 0, 0, 0, 0, 11, 67, 36, 228, 192, 111, 50,
+			89, 0, 76, 28, 0, 17, 3, 95, 35, 57, 47, 4, 35, 71, 120, 55, 6, 116, 47, 127, 108, 0, 0, 0, 0, 15, 69, 73, 112, 78,
+			16, 16, 34, 114, 6, 35, 50, 72, 116, 0, 7, 195, 84, 228, 192, 76, 46, 0, 0, 14, 69, 52, 243, 148, 4, 112, 65, 127, 50, 47,
+			116, 49, 0, 0, 8, 66, 25, 32, 83, 34, 121, 0, 0, 14, 69, 84, 228, 197, 72, 80, 114, 50, 88, 34, 13, 0, 72, 0, 0, 12,
+			67, 25, 35, 0, 83, 34, 124, 55, 122, 50, 0, 0, 8, 67, 69, 82, 90, 21, 0, 47, 0, 4, 193, 136, 43, 0, 10, 135, 112, 114,
+			195, 164, 109, 105, 101, 15, 0, 0, 9, 66, 4, 208, 35, 65, 0, 76, 28, 0, 0, 0, 16, 70, 76, 243, 12, 80, 83, 128, 4, 88,
+			113, 55, 47, 13, 50, 0, 0, 14, 69, 76, 243, 12, 77, 64, 4, 88, 113, 55, 89, 47, 0, 0, 0, 14, 69, 48, 241, 201, 21, 32,
+			55, 127, 90, 6, 118, 34, 0, 0, 0, 0, 15, 68, 84, 229, 5, 72, 4, 114, 50, 47, 108, 0, 8, 9, 46, 0, 0, 0, 0, 0,
+			0, 0, 11, 67, 44, 19, 142, 4, 49, 35, 50, 0, 46, 0, 9, 66, 4, 224, 35, 50, 0, 76, 28, 0, 0, 0, 8, 197, 32, 244,
+			212, 36, 80, 15, 14, 69, 8, 84, 212, 36, 80, 71, 109, 89, 47, 111, 13, 0, 10, 69, 76, 147, 135, 48, 80, 21, 0, 47, 0, 0,
+			0, 11, 67, 76, 147, 132, 88, 111, 50, 47, 0, 72, 0, 15, 6, 104, 195, 164, 116, 116, 101, 107, 4, 109, 47, 13, 0, 46, 0, 0,
+			6, 195, 5, 34, 69, 15, 0, 10, 67, 76, 243, 12, 4, 88, 113, 55, 0, 0, 0, 0, 11, 68, 81, 32, 73, 56, 47, 34, 126, 50,
+			0, 13, 68, 84, 210, 9, 56, 114, 65, 107, 6, 111, 50, 0, 0, 0, 0, 0, 9, 198, 48, 20, 16, 4, 194, 69, 15, 9, 198, 44,
+			20, 212, 4, 226, 69, 15, 9, 198, 4, 227, 205, 4, 194, 69, 66, 0, 0, 11, 67, 32, 21, 0, 2, 107, 35, 47, 0, 46, 0, 0,
+			0, 0, 0, 0, 0, 0, 14, 69, 84, 228, 197, 72, 208, 114, 50, 89, 108, 65, 0, 72, 0, 0, 11, 67, 105, 83, 64, 132, 114, 65,
+			0, 76, 8, 9, 67, 32, 147, 128, 107, 111, 50, 0, 0, 0, 0, 7, 66, 16, 160, 21, 0, 47, 12, 67, 92, 83, 142, 4, 84, 109,
+			50, 0, 8, 9, 0, 12, 68, 76, 50, 15, 56, 91, 4, 127, 50, 0, 10, 7, 195, 16, 148, 128, 76, 46, 0, 0, 0, 0, 0, 7,
+			196, 48, 147, 9, 20, 15, 7, 196, 45, 84, 137, 20, 15, 0, 0, 8, 66, 33, 32, 107, 109, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 16, 70, 16, 162, 66, 61, 85, 9, 75, 37, 71, 6, 120, 47, 118, 0, 0, 0, 15, 70, 25, 84, 131, 32, 83, 128, 83, 114,
+			34, 99, 13, 50, 0, 0, 0, 0, 10, 67, 28, 80, 148, 81, 126, 71, 47, 0, 0, 0, 0, 0, 11, 67, 92, 147, 12, 2, 84, 111,
+			55, 0, 46, 0, 9, 68, 48, 85, 133, 48, 21, 0, 47, 0, 0, 0, 0, 14, 67, 4, 195, 7, 6, 35, 55, 81, 13, 65, 122, 50,
+			0, 0, 0, 9, 67, 80, 160, 64, 47, 57, 116, 0, 0, 13, 68, 76, 84, 137, 20, 89, 126, 34, 111, 38, 13, 0, 7, 196, 61, 33,
+			201, 20, 15, 11, 70, 8, 20, 197, 8, 19, 12, 21, 0, 47, 0, 9, 198, 16, 17, 197, 28, 83, 128, 66, 0, 12, 67, 25, 81, 82,
+			83, 128, 34, 0, 76, 8, 46, 0, 0, 0, 0, 0, 9, 3, 226, 130, 172, 124, 34, 127, 0, 0, 13, 68, 36, 225, 5, 52, 111, 50,
+			72, 6, 126, 65, 0, 0, 0, 0, 9, 67, 80, 17, 192, 47, 116, 81, 0, 10, 67, 20, 147, 133, 122, 50, 13, 0, 72, 0, 19, 8,
+			104, 195, 164, 116, 116, 101, 115, 116, 107, 4, 109, 47, 109, 89, 47, 0, 46, 0, 0, 0, 0, 7, 195, 36, 50, 0, 72, 46, 0, 11,
+			200, 52, 20, 135, 36, 224, 76, 36, 80, 15, 15, 4, 95, 111, 103, 111, 6, 127, 81, 113, 50, 4, 109, 49, 0, 0, 0, 15, 70, 20,
+			225, 12, 36, 50, 0, 109, 50, 47, 55, 111, 99, 0, 8, 197, 92, 244, 129, 85, 48, 66, 0, 0, 0, 0, 0, 11, 136, 119, 195, 164,
+			104, 114, 101, 110, 100, 72, 11, 136, 119, 195, 164, 104, 114, 101, 110, 100, 8, 0, 10, 67, 37, 53, 0, 111, 89, 47, 0, 72, 0, 0,
+			8, 67, 73, 83, 128, 21, 0, 47, 7, 195, 36, 131, 64, 76, 46, 0, 0, 8, 67, 76, 243, 135, 21, 0, 47, 0, 0, 6, 195, 57,
+			84, 128, 28, 0, 0, 0, 0, 11, 67, 105, 84, 128, 132, 120, 34, 0, 76, 8, 10, 67, 16, 20, 192, 2, 72, 35, 89, 0, 0, 8,
+			67, 92, 244, 132, 21, 0, 47, 11, 67, 92, 148, 132, 84, 4, 111, 34, 72, 0, 0, 0, 14, 4, 95, 98, 114, 118, 71, 14, 16, 6,
+			125, 84, 13, 0, 0, 6, 195, 21, 69, 193, 72, 10, 67, 36, 132, 133, 118, 34, 13, 0, 72, 0, 0, 19, 71, 36, 195, 9, 8, 84,
+			129, 48, 111, 55, 118, 71, 13, 34, 6, 116, 55, 0, 9, 198, 16, 83, 147, 20, 192, 128, 66, 9, 198, 16, 83, 83, 20, 192, 128, 66,
+			17, 70, 16, 20, 211, 20, 192, 128, 72, 35, 89, 88, 6, 109, 55, 71, 0, 17, 70, 16, 84, 211, 20, 192, 128, 72, 109, 89, 88, 6,
+			109, 55, 71, 0, 9, 198, 16, 84, 147, 20, 192, 128, 66, 0, 18, 4, 95, 97, 99, 50, 72, 6, 113, 48, 13, 55, 35, 49, 4, 120,
+			47, 0, 0, 13, 68, 36, 225, 5, 56, 111, 50, 72, 6, 126, 50, 0, 14, 68, 28, 81, 197, 56, 81, 126, 81, 13, 50, 0, 76, 8,
+			0, 0, 0, 10, 69, 5, 4, 5, 4, 192, 21, 0, 47, 11, 67, 16, 83, 142, 72, 109, 50, 0, 76, 8, 0, 0, 0, 0, 0, 0,
+			0, 16, 70, 17, 32, 71, 36, 84, 128, 72, 34, 35, 90, 6, 118, 34, 0, 0, 0, 0, 8, 197, 105, 84, 171, 12, 176, 66, 10, 198,
+			60, 33, 204, 20, 144, 200, 66, 8, 0, 0, 0, 13, 68, 92, 20, 133, 56, 2, 84, 116, 34, 13, 50, 0, 0, 13, 68, 92, 20, 149,
+			52, 84, 116, 34, 6, 114, 65, 0, 8, 197, 8, 19, 11, 4, 224, 65, 0, 9, 68, 20, 208, 73, 48, 21, 0, 47, 0, 0, 12, 68,
+			20, 147, 133, 56, 122, 50, 13, 50, 0, 72, 13, 3, 95, 51, 88, 6, 72, 34, 122, 89, 111, 99, 0, 0, 13, 69, 28, 83, 69, 36,
+			224, 81, 13, 65, 122, 50, 0, 13, 3, 95, 48, 67, 6, 107, 114, 50, 72, 108, 47, 0, 0, 17, 70, 105, 81, 197, 28, 83, 128, 132,
+			120, 81, 6, 126, 81, 13, 50, 0, 17, 70, 105, 81, 197, 28, 83, 128, 132, 120, 81, 6, 126, 81, 13, 50, 0, 0, 12, 68, 20, 147,
+			137, 28, 122, 50, 111, 99, 0, 46, 0, 0, 0, 0, 0, 18, 70, 20, 228, 197, 52, 35, 5, 113, 50, 89, 6, 113, 65, 71, 13, 55,
+			0, 0, 0, 0, 14, 69, 52, 241, 5, 48, 192, 65, 127, 72, 6, 109, 55, 0, 0, 0, 10, 69, 64, 145, 7, 36, 224, 21, 0, 47,
+			0, 0, 7, 66, 32, 144, 107, 122, 0, 5, 194, 40, 80, 72, 6, 195, 16, 19, 142, 72, 13, 3, 95, 49, 57, 6, 50, 124, 50, 132,
+			126, 50, 0, 0, 13, 3, 95, 49, 56, 6, 10, 35, 101, 132, 126, 50, 0, 0, 0, 8, 67, 40, 85, 0, 21, 0, 47, 0, 8, 67,
+			32, 148, 0, 21, 0, 47, 0, 0, 16, 70, 49, 81, 84, 37, 48, 200, 55, 120, 6, 126, 47, 111, 91, 0, 0, 16, 70, 92, 82, 84,
+			32, 84, 128, 84, 122, 47, 107, 6, 109, 34, 0, 15, 70, 64, 240, 200, 36, 84, 128, 48, 113, 91, 6, 118, 34, 0, 0, 12, 67, 26,
+			180, 128, 83, 128, 34, 0, 76, 8, 46, 11, 3, 95, 49, 49, 6, 10, 109, 55, 83, 0, 0, 10, 3, 95, 49, 48, 6, 132, 126, 50,
+			0, 0, 13, 3, 95, 49, 51, 6, 72, 34, 122, 132, 126, 50, 0, 0, 12, 3, 95, 49, 50, 6, 132, 84, 131, 55, 83, 0, 0, 14,
+			3, 95, 49, 53, 6, 83, 129, 50, 83, 132, 126, 50, 0, 15, 4, 95, 99, 121, 114, 49, 128, 51, 6, 111, 55, 111, 91, 0, 0, 7,
+			195, 36, 131, 128, 76, 46, 13, 3, 95, 49, 52, 6, 83, 111, 34, 132, 126, 50, 0, 0, 13, 3, 95, 49, 55, 6, 88, 118, 48, 132,
+			126, 50, 0, 0, 16, 67, 33, 36, 199, 107, 109, 34, 6, 121, 89, 81, 126, 71, 108, 0, 13, 3, 95, 49, 54, 6, 88, 109, 99, 132,
+			126, 50, 0, 0, 8, 197, 44, 243, 147, 84, 192, 65, 15, 69, 28, 83, 137, 4, 192, 81, 126, 50, 111, 6, 35, 55, 0, 0, 13, 3,
+			95, 55, 88, 6, 88, 118, 48, 132, 111, 99, 0, 0, 0, 0, 9, 198, 16, 80, 129, 81, 65, 64, 66, 11, 70, 92, 80, 147, 37, 65,
+			64, 21, 0, 47, 0, 9, 67, 36, 132, 128, 118, 34, 0, 72, 0, 13, 3, 95, 49, 111, 10, 6, 126, 34, 89, 47, 13, 0, 0, 0,
+			10, 3, 95, 49, 97, 10, 6, 122, 50, 0, 0, 0, 0, 0, 0, 12, 4, 95, 97, 99, 117, 35, 49, 6, 120, 47, 0, 0, 9, 198,
+			81, 32, 71, 160, 66, 69, 15, 0, 16, 69, 21, 133, 18, 20, 208, 109, 49, 89, 47, 34, 6, 126, 65, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 3, 95, 51, 111, 72, 34, 6, 111, 47, 13, 0, 0, 0, 10, 199, 20, 33, 78, 24, 19, 12, 76, 8, 0, 10, 69, 48, 20,
+			20, 61, 0, 21, 0, 47, 14, 3, 95, 50, 88, 6, 132, 84, 35, 50, 132, 111, 99, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 16,
+			19, 129, 12, 128, 66, 0, 0, 12, 68, 44, 19, 143, 20, 49, 35, 50, 6, 120, 0, 0, 0, 11, 70, 88, 83, 148, 85, 33, 64, 21,
+			0, 47, 0, 0, 13, 3, 95, 63, 63, 88, 129, 65, 71, 6, 127, 55, 0, 0, 0, 0, 13, 3, 95, 52, 88, 6, 83, 111, 34, 132,
+			111, 99, 0, 0, 0, 0, 0, 9, 198, 44, 243, 104, 16, 145, 64, 15, 0, 0, 0, 8, 66, 52, 48, 65, 14, 49, 0, 8, 66, 32,
+			208, 107, 13, 65, 0, 23, 4, 95, 115, 117, 98, 6, 114, 50, 47, 13, 51, 108, 11, 4, 111, 50, 72, 109, 49, 89, 15, 0, 0, 14,
+			3, 95, 53, 88, 6, 83, 129, 50, 83, 132, 111, 99, 0, 0, 0, 15, 4, 95, 114, 110, 103, 49, 34, 6, 127, 58, 90, 109, 49, 0,
+			0, 8, 197, 76, 245, 197, 37, 64, 66, 0, 8, 67, 76, 86, 25, 21, 0, 47, 0, 12, 3, 95, 55, 111, 88, 6, 118, 71, 47, 13,
+			0, 0, 14, 68, 92, 20, 147, 80, 2, 84, 116, 34, 89, 47, 0, 46, 0, 12, 69, 76, 50, 21, 49, 64, 91, 120, 55, 47, 0, 0,
+			13, 3, 95, 54, 88, 6, 88, 109, 99, 132, 111, 99, 0, 0, 0, 0, 17, 71, 92, 20, 211, 21, 37, 78, 28, 84, 35, 89, 13, 34,
+			114, 68, 0, 0, 11, 70, 32, 243, 69, 64, 17, 197, 21, 0, 47, 11, 67, 88, 243, 64, 83, 113, 65, 0, 76, 28, 0, 0, 0, 0,
+			0, 0, 0, 12, 5, 107, 119, 97, 195, 159, 49, 84, 35, 89, 0, 0, 0, 14, 203, 65, 35, 194, 48, 83, 65, 80, 148, 201, 21, 32,
+			67, 0, 0, 9, 66, 57, 32, 50, 114, 65, 108, 0, 12, 6, 95, 111, 114, 100, 50, 48, 89, 47, 13, 0, 0, 13, 3, 95, 56, 88,
+			6, 10, 35, 101, 132, 111, 99, 0, 0, 0, 0, 0, 0, 0, 9, 67, 44, 145, 0, 49, 111, 72, 0, 0, 9, 66, 36, 208, 111, 65,
+			0, 76, 28, 0, 12, 68, 8, 80, 133, 56, 71, 126, 71, 13, 50, 0, 13, 3, 95, 57, 88, 6, 50, 124, 50, 132, 111, 99, 0, 0,
+			0, 0, 0, 0, 8, 197, 8, 150, 129, 73, 32, 66, 0, 12, 68, 17, 81, 84, 80, 72, 120, 6, 109, 47, 0, 0, 15, 69, 44, 19,
+			142, 77, 64, 4, 49, 35, 50, 89, 47, 0, 46, 15, 3, 95, 63, 65, 71, 6, 120, 101, 89, 47, 116, 71, 13, 0, 0, 11, 68, 36,
+			225, 5, 72, 111, 50, 72, 108, 0, 0, 10, 69, 64, 244, 212, 21, 32, 21, 0, 47, 0, 0, 19, 71, 21, 38, 135, 20, 34, 82, 28,
+			126, 34, 132, 81, 13, 71, 111, 34, 81, 0, 0, 0, 22, 4, 95, 115, 117, 112, 6, 127, 71, 13, 51, 108, 11, 4, 111, 50, 72, 109,
+			49, 89, 15, 0, 0, 17, 4, 95, 115, 116, 107, 91, 34, 6, 126, 81, 89, 47, 34, 111, 99, 0, 0, 9, 198, 16, 86, 133, 52, 33,
+			82, 66, 0, 12, 67, 105, 112, 82, 132, 84, 4, 35, 12, 34, 0, 11, 66, 60, 32, 4, 113, 71, 0, 8, 9, 46, 9, 66, 36, 224,
+			111, 50, 0, 76, 28, 0, 8, 67, 40, 240, 128, 21, 0, 47, 0, 0, 0, 11, 70, 32, 243, 204, 36, 112, 78, 21, 0, 47, 0, 10,
+			69, 76, 245, 82, 12, 80, 21, 0, 47, 0, 0, 0, 13, 72, 77, 113, 65, 81, 50, 9, 73, 64, 21, 0, 47, 9, 68, 77, 82, 84,
+			20, 21, 0, 47, 0, 10, 69, 85, 1, 1, 80, 80, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 68, 56, 144, 200,
+			80, 50, 6, 111, 99, 47, 15, 50, 6, 120, 34, 0, 8, 81, 110, 117, 114, 32, 24, 68, 56, 144, 200, 80, 50, 4, 111, 99, 47, 15,
+			65, 6, 126, 34, 0, 49, 81, 109, 101, 104, 114, 32, 23, 68, 56, 144, 200, 80, 50, 6, 111, 99, 47, 15, 4, 65, 126, 34, 0, 81,
+			109, 101, 104, 114, 32, 0, 0, 0, 13, 68, 36, 225, 5, 76, 111, 50, 72, 6, 109, 89, 0, 10, 67, 21, 36, 212, 126, 34, 89, 47,
+			0, 0, 0, 19, 4, 95, 99, 105, 114, 132, 6, 111, 34, 49, 114, 65, 83, 55, 109, 49, 89, 0, 0, 7, 196, 81, 84, 137, 56, 66,
+			9, 67, 20, 147, 128, 122, 50, 0, 76, 11, 67, 65, 35, 192, 4, 48, 34, 127, 0, 8, 0, 13, 68, 4, 229, 9, 44, 35, 50, 47,
+			6, 118, 49, 0, 14, 4, 95, 48, 77, 52, 71, 111, 55, 111, 6, 127, 50, 0, 0, 0, 11, 70, 16, 80, 149, 28, 113, 82, 21, 0,
+			47, 12, 3, 95, 56, 111, 10, 6, 35, 101, 47, 13, 0, 17, 4, 95, 48, 77, 50, 15, 65, 111, 55, 111, 6, 127, 50, 13, 50, 0,
+			0, 14, 69, 32, 244, 147, 4, 208, 107, 113, 108, 88, 116, 65, 0, 11, 67, 52, 19, 128, 65, 35, 50, 0, 72, 46, 13, 68, 92, 244,
+			137, 56, 84, 127, 34, 6, 111, 50, 0, 11, 67, 88, 243, 128, 83, 113, 50, 0, 76, 28, 18, 4, 95, 48, 77, 51, 15, 65, 111, 55,
+			111, 6, 35, 34, 72, 13, 50, 0, 0, 0, 14, 4, 95, 48, 77, 49, 6, 47, 121, 88, 13, 50, 47, 0, 0, 9, 66, 60, 64, 127,
+			72, 108, 0, 46, 0, 7, 195, 52, 148, 128, 76, 46, 0, 0, 0, 0, 11, 67, 88, 244, 128, 4, 83, 113, 34, 0, 9, 0, 0, 21,
+			71, 21, 132, 5, 16, 145, 78, 80, 109, 49, 89, 48, 126, 72, 111, 6, 109, 50, 47, 0, 0, 0, 16, 4, 95, 108, 105, 103, 55, 6,
+			118, 81, 35, 47, 4, 120, 108, 0, 0, 0, 0, 0, 19, 72, 52, 146, 210, 60, 98, 67, 32, 80, 65, 118, 49, 34, 127, 83, 118, 91,
+			0, 0, 0, 9, 198, 52, 243, 143, 80, 243, 128, 67, 0, 13, 66, 44, 208, 49, 118, 55, 127, 65, 126, 47, 108, 0, 0, 0, 0, 0,
+			0, 11, 67, 52, 149, 0, 65, 111, 47, 0, 76, 8, 0, 0, 0, 7, 66, 53, 144, 21, 0, 47, 0, 11, 70, 40, 246, 83, 80, 144,
+			203, 21, 0, 47, 0, 0, 0, 16, 70, 20, 147, 129, 56, 65, 82, 122, 50, 6, 35, 50, 72, 108, 0, 0, 8, 67, 61, 85, 0, 21,
+			0, 47, 0, 0, 0, 12, 68, 36, 132, 133, 52, 118, 34, 13, 65, 0, 72, 0, 0, 0, 0, 11, 70, 4, 48, 207, 84, 229, 0, 21,
+			0, 47, 0, 0, 0, 0, 7, 196, 64, 147, 137, 20, 15, 12, 67, 28, 19, 154, 81, 4, 35, 50, 132, 0, 46, 8, 196, 76, 245, 201,
+			20, 66, 8, 0, 0, 0, 17, 70, 16, 160, 75, 5, 37, 1, 75, 35, 49, 6, 35, 34, 47, 116, 0, 9, 68, 12, 240, 67, 32, 21,
+			0, 47, 14, 73, 5, 52, 207, 12, 144, 84, 36, 243, 128, 21, 0, 47, 0, 0, 0, 13, 4, 95, 99, 101, 100, 89, 126, 72, 6, 118,
+			57, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36, 211, 79, 8, 147, 9, 20, 15, 0, 11, 200, 64, 85, 5, 73, 50, 76, 36, 80, 15,
+			0, 0, 0, 0, 0, 17, 71, 92, 82, 84, 21, 37, 78, 28, 84, 122, 47, 13, 34, 114, 68, 0, 12, 4, 95, 99, 97, 112, 81, 34,
+			6, 127, 89, 0, 0, 10, 68, 56, 148, 195, 32, 50, 118, 91, 0, 0, 0, 9, 198, 64, 20, 129, 16, 145, 83, 67, 0, 0, 17, 70,
+			80, 83, 5, 28, 83, 128, 47, 126, 55, 126, 81, 6, 126, 50, 0, 0, 12, 68, 20, 147, 133, 52, 122, 50, 13, 65, 0, 72, 0, 0,
+			0, 0, 7, 196, 16, 82, 78, 20, 76, 0, 0, 11, 70, 80, 84, 141, 36, 224, 76, 21, 0, 47, 0, 9, 198, 16, 145, 83, 20, 192,
+			128, 66, 0, 7, 196, 52, 82, 78, 20, 76, 0, 4, 193, 188, 43, 0, 11, 67, 76, 144, 200, 88, 111, 99, 0, 72, 46, 0, 20, 71,
+			21, 2, 83, 44, 244, 1, 48, 126, 48, 111, 89, 49, 127, 48, 6, 116, 55, 0, 0, 21, 3, 95, 194, 171, 6, 35, 50, 83, 128, 51,
+			114, 68, 89, 132, 4, 122, 99, 13, 50, 0, 0, 0, 0, 0, 0, 0, 8, 67, 76, 194, 80, 21, 0, 47, 11, 67, 76, 82, 84, 88,
+			122, 47, 0, 72, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 203, 88, 145, 76, 8, 84, 208, 72, 240, 200, 20, 224,
+			67, 9, 68, 52, 16, 200, 60, 21, 0, 47, 0, 0, 12, 71, 36, 229, 5, 72, 96, 67, 20, 21, 0, 47, 0, 16, 67, 4, 32, 128,
+			6, 35, 71, 71, 4, 111, 55, 72, 114, 68, 0, 0, 17, 70, 36, 229, 5, 72, 225, 84, 111, 50, 47, 13, 34, 50, 109, 47, 0, 0,
+			0, 8, 67, 64, 18, 82, 21, 0, 47, 13, 68, 84, 228, 210, 20, 114, 50, 88, 34, 13, 0, 72, 0, 0, 15, 70, 36, 226, 193, 37,
+			48, 200, 111, 68, 49, 116, 111, 91, 0, 8, 197, 92, 244, 129, 84, 96, 66, 0, 0, 0, 0, 11, 70, 72, 84, 197, 5, 32, 200, 21,
+			0, 47, 0, 0, 0, 0, 0, 0, 9, 66, 60, 176, 127, 49, 6, 126, 0, 0, 9, 68, 48, 20, 197, 72, 21, 0, 47, 11, 68, 36,
+			132, 133, 72, 118, 34, 108, 0, 72, 0, 9, 68, 77, 21, 65, 92, 21, 0, 47, 0, 0, 16, 70, 20, 147, 137, 28, 84, 192, 122, 50,
+			111, 81, 13, 89, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 25, 3, 95, 194, 187, 6, 35, 50, 83, 128, 51, 114, 68, 89, 132, 4,
+			122, 99, 13, 50, 15, 132, 6, 120, 0, 0, 0, 14, 69, 88, 84, 133, 36, 224, 83, 109, 34, 6, 122, 50, 0, 13, 69, 28, 84, 211,
+			20, 224, 81, 109, 89, 13, 50, 0, 0, 0, 12, 68, 104, 195, 212, 100, 89, 55, 113, 47, 118, 0, 10, 199, 44, 20, 148, 60, 224, 71,
+			20, 15, 0, 8, 67, 48, 243, 203, 21, 0, 47, 0, 0, 0, 14, 4, 95, 103, 114, 118, 81, 34, 6, 116, 84, 111, 89, 0, 0, 0,
+			11, 70, 52, 84, 211, 4, 113, 64, 21, 0, 47, 0, 0, 10, 66, 77, 64, 6, 109, 89, 47, 126, 0, 0, 8, 67, 76, 131, 215, 21,
+			0, 47, 0, 7, 195, 52, 144, 200, 72, 46, 0, 12, 201, 21, 133, 18, 5, 96, 71, 4, 229, 0, 65, 0, 12, 68, 32, 19, 132, 100,
+			107, 109, 50, 72, 118, 0, 0, 0, 8, 197, 4, 195, 5, 36, 224, 66, 0, 6, 195, 56, 17, 197, 15, 10, 67, 21, 33, 5, 126, 34,
+			72, 13, 0, 9, 198, 5, 67, 205, 54, 179, 12, 65, 0, 0, 8, 67, 12, 144, 79, 76, 121, 0, 0, 8, 67, 76, 86, 0, 21, 0,
+			47, 0, 9, 2, 194, 163, 48, 121, 50, 72, 0, 0, 9, 198, 56, 80, 149, 48, 244, 192, 67, 10, 69, 77, 2, 82, 37, 64, 21, 0,
+			47, 0, 9, 68, 24, 246, 69, 72, 21, 0, 47, 0, 17, 70, 21, 36, 212, 52, 19, 0, 126, 34, 89, 47, 65, 35, 12, 55, 0, 0,
+			9, 68, 40, 242, 78, 80, 21, 0, 47, 0, 11, 200, 88, 145, 76, 48, 82, 67, 33, 64, 66, 0, 0, 0, 0, 0, 0, 8, 197, 52,
+			243, 147, 84, 224, 66, 0, 0, 0, 0, 0, 0, 9, 2, 194, 176, 81, 34, 116, 47, 0, 0, 17, 2, 194, 177, 48, 55, 6, 114, 89,
+			15, 65, 6, 118, 50, 114, 89, 0, 0, 13, 68, 28, 83, 210, 28, 81, 126, 113, 34, 49, 0, 46, 9, 198, 44, 19, 69, 48, 145, 64,
+			15, 17, 70, 28, 84, 129, 56, 145, 64, 81, 126, 34, 6, 116, 50, 111, 13, 0, 0, 0, 9, 198, 5, 52, 8, 4, 197, 0, 66, 0,
+			0, 24, 67, 56, 240, 200, 50, 6, 113, 101, 15, 50, 6, 111, 99, 47, 0, 28, 81, 110, 105, 99, 104, 116, 32, 6, 195, 56, 240, 200,
+			8, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 76, 84, 150, 21, 32, 21, 0, 47, 8, 67, 64, 195, 212, 21, 0, 47, 0, 0, 8,
+			197, 76, 241, 143, 73, 64, 66, 0, 0, 14, 69, 20, 147, 136, 21, 32, 122, 50, 107, 6, 126, 34, 0, 0, 0, 0, 0, 6, 195, 92,
+			82, 76, 8, 0, 0, 17, 70, 20, 225, 193, 28, 145, 82, 35, 68, 81, 35, 90, 6, 118, 34, 0, 0, 10, 67, 16, 83, 64, 2, 72,
+			126, 65, 0, 0, 0, 9, 198, 77, 2, 79, 56, 17, 197, 15, 0, 0, 0, 0, 20, 71, 77, 64, 76, 4, 115, 73, 80, 89, 47, 35,
+			55, 35, 81, 65, 6, 111, 47, 0, 0, 0, 13, 69, 28, 83, 210, 28, 80, 75, 113, 12, 34, 75, 0, 8, 197, 29, 32, 90, 36, 80,
+			15, 0, 0, 0, 0, 13, 69, 12, 194, 81, 84, 80, 49, 55, 111, 49, 13, 0, 10, 69, 60, 227, 9, 56, 80, 21, 0, 47, 0, 0,
+			0, 0, 15, 68, 32, 16, 133, 56, 107, 4, 116, 71, 13, 50, 0, 46, 10, 8, 196, 56, 80, 133, 56, 76, 28, 0, 0, 10, 67, 36,
+			226, 193, 111, 68, 49, 116, 0, 0, 0, 9, 198, 64, 84, 144, 48, 86, 0, 66, 11, 68, 20, 147, 133, 72, 122, 50, 108, 0, 72, 0,
+			11, 68, 64, 240, 200, 76, 48, 113, 101, 89, 0, 9, 67, 8, 80, 84, 21, 0, 46, 47, 0, 0, 0, 14, 68, 8, 85, 143, 72, 71,
+			13, 83, 127, 34, 0, 66, 8, 0, 10, 69, 13, 84, 147, 61, 32, 21, 0, 47, 0, 10, 69, 92, 147, 132, 61, 112, 21, 0, 47, 0,
+			0, 12, 67, 172, 33, 82, 4, 129, 71, 108, 0, 8, 9, 0, 8, 67, 80, 80, 200, 21, 0, 47, 0, 0, 11, 70, 72, 80, 197, 37,
+			97, 82, 21, 0, 47, 0, 14, 68, 16, 84, 133, 56, 72, 126, 34, 13, 50, 0, 76, 28, 0, 12, 68, 4, 50, 19, 60, 35, 101, 88,
+			6, 127, 0, 0, 0, 17, 70, 93, 84, 132, 21, 53, 0, 84, 4, 114, 34, 72, 109, 89, 47, 0, 0, 0, 0, 12, 68, 28, 84, 212,
+			20, 81, 126, 89, 47, 13, 0, 0, 0, 0, 0, 13, 68, 93, 84, 132, 20, 84, 4, 114, 34, 72, 13, 0, 13, 68, 92, 84, 132, 20,
+			84, 4, 109, 34, 72, 13, 0, 0, 8, 197, 16, 18, 12, 36, 80, 15, 10, 69, 41, 83, 139, 36, 80, 21, 0, 47, 10, 69, 12, 128,
+			78, 28, 80, 21, 0, 47, 0, 0, 0, 16, 70, 5, 32, 200, 4, 146, 192, 35, 34, 99, 6, 116, 111, 49, 0, 0, 0, 0, 8, 67,
+			40, 242, 197, 21, 0, 47, 8, 67, 12, 242, 197, 21, 0, 47, 0, 0, 11, 4, 100, 97, 195, 159, 72, 35, 89, 0, 76, 0, 12, 68,
+			20, 147, 133, 76, 122, 50, 13, 89, 0, 72, 0, 0, 0, 0, 0, 0, 8, 67, 12, 128, 84, 21, 0, 47, 11, 2, 95, 34, 132, 118,
+			47, 6, 116, 47, 0, 0, 20, 2, 95, 33, 6, 121, 89, 23, 34, 4, 120, 83, 13, 132, 4, 122, 99, 13, 50, 0, 0, 0, 15, 2,
+			95, 39, 4, 35, 48, 127, 89, 47, 34, 6, 113, 83, 0, 0, 0, 0, 11, 70, 12, 243, 80, 85, 65, 82, 21, 0, 47, 0, 10, 67,
+			8, 147, 128, 71, 111, 50, 0, 72, 10, 67, 16, 83, 128, 2, 72, 126, 50, 0, 0, 12, 71, 64, 83, 148, 32, 245, 83, 20, 21, 0,
+			47, 0, 15, 2, 95, 41, 49, 55, 6, 35, 65, 108, 15, 132, 6, 120, 0, 0, 11, 67, 4, 33, 82, 116, 71, 108, 0, 76, 8, 16,
+			2, 95, 40, 49, 55, 6, 35, 65, 108, 15, 23, 6, 121, 83, 0, 0, 11, 67, 64, 84, 128, 48, 109, 34, 0, 76, 28, 15, 2, 95,
+			47, 91, 34, 6, 126, 81, 91, 47, 34, 111, 99, 0, 0, 10, 2, 95, 46, 48, 114, 50, 49, 47, 0, 0, 17, 2, 95, 45, 71, 6,
+			111, 50, 72, 13, 89, 47, 34, 4, 111, 99, 0, 0, 9, 2, 95, 44, 49, 113, 65, 35, 0, 0, 10, 67, 16, 84, 128, 2, 72, 109,
+			34, 0, 9, 2, 95, 51, 6, 72, 34, 122, 0, 0, 9, 2, 95, 50, 6, 132, 84, 122, 0, 0, 10, 67, 52, 244, 147, 65, 113, 34,
+			89, 0, 10, 2, 95, 49, 10, 6, 122, 50, 89, 0, 0, 11, 200, 36, 226, 207, 57, 53, 1, 57, 64, 65, 9, 2, 95, 48, 6, 50,
+			114, 55, 0, 0, 11, 2, 95, 55, 6, 88, 118, 71, 13, 50, 0, 0, 10, 2, 95, 54, 6, 88, 109, 49, 89, 0, 0, 10, 2, 95,
+			53, 6, 83, 129, 50, 83, 0, 0, 17, 70, 84, 228, 197, 72, 83, 64, 114, 50, 89, 13, 34, 13, 65, 0, 72, 9, 2, 95, 52, 6,
+			83, 118, 34, 0, 0, 15, 67, 88, 115, 0, 83, 109, 34, 81, 55, 6, 122, 99, 13, 0, 16, 2, 95, 59, 91, 47, 34, 6, 111, 99,
+			48, 114, 68, 49, 47, 0, 0, 17, 2, 95, 58, 72, 6, 113, 48, 13, 55, 48, 4, 114, 68, 49, 47, 0, 0, 9, 2, 95, 57, 6,
+			50, 124, 50, 0, 0, 10, 2, 95, 56, 6, 10, 35, 101, 47, 0, 0, 12, 68, 84, 228, 197, 72, 114, 50, 88, 108, 0, 72, 11, 67,
+			8, 82, 77, 71, 122, 65, 0, 76, 28, 17, 2, 95, 63, 83, 34, 6, 117, 81, 13, 132, 4, 122, 99, 13, 50, 0, 0, 10, 2, 95,
+			62, 81, 34, 130, 89, 108, 0, 0, 7, 196, 52, 147, 149, 80, 66, 0, 8, 67, 76, 227, 194, 21, 0, 47, 10, 2, 95, 60, 49, 55,
+			122, 50, 108, 0, 0, 0, 0, 0, 8, 67, 40, 80, 78, 21, 0, 47, 6, 195, 16, 82, 78, 76, 0, 12, 201, 36, 228, 194, 21, 51,
+			206, 16, 84, 133, 67, 0, 7, 195, 16, 144, 200, 76, 46, 0, 0, 0, 0, 8, 67, 12, 243, 204, 21, 0, 47, 0, 12, 201, 44, 243,
+			147, 21, 37, 129, 80, 149, 128, 65, 0, 0, 0, 7, 196, 25, 84, 137, 20, 15, 0, 4, 193, 212, 43, 0, 0, 16, 70, 52, 83, 149,
+			21, 69, 5, 65, 109, 50, 120, 6, 109, 47, 0, 0, 7, 196, 53, 83, 73, 20, 15, 0, 0, 6, 195, 76, 82, 78, 72, 0, 11, 67,
+			60, 35, 197, 127, 71, 6, 127, 13, 0, 8, 67, 80, 147, 69, 21, 0, 47, 0, 10, 67, 16, 240, 200, 72, 113, 101, 0, 76, 16, 67,
+			36, 226, 204, 111, 50, 49, 55, 120, 88, 6, 118, 84, 13, 0, 0, 9, 68, 53, 148, 209, 48, 21, 0, 47, 10, 67, 16, 145, 83, 72,
+			118, 88, 0, 72, 9, 198, 76, 243, 132, 21, 35, 128, 8, 0, 30, 4, 95, 226, 128, 158, 55, 6, 111, 68, 49, 13, 89, 11, 4, 35,
+			50, 83, 128, 51, 114, 68, 89, 132, 4, 122, 99, 13, 50, 0, 0, 17, 67, 85, 49, 128, 2, 114, 50, 47, 88, 127, 83, 6, 113, 34,
+			47, 0, 31, 4, 95, 226, 128, 157, 14, 34, 6, 109, 99, 47, 13, 89, 11, 4, 35, 50, 83, 128, 51, 114, 68, 89, 132, 4, 122, 99,
+			13, 50, 0, 22, 2, 95, 91, 6, 109, 49, 111, 81, 13, 49, 55, 6, 35, 65, 108, 15, 23, 6, 121, 83, 0, 0, 9, 198, 24, 85,
+			69, 73, 35, 212, 67, 0, 0, 8, 66, 76, 240, 88, 127, 0, 76, 0, 16, 2, 95, 95, 4, 114, 50, 47, 108, 91, 47, 34, 6, 111,
+			99, 0, 0, 16, 2, 95, 94, 132, 111, 34, 49, 114, 65, 83, 55, 109, 49, 89, 0, 0, 21, 2, 95, 93, 6, 109, 49, 111, 81, 13,
+			49, 55, 6, 35, 65, 108, 15, 132, 6, 120, 0, 0, 0, 0, 12, 67, 92, 20, 148, 2, 84, 116, 34, 47, 0, 46, 22, 4, 95, 226,
+			128, 148, 81, 13, 72, 6, 35, 68, 49, 13, 50, 91, 47, 34, 4, 111, 99, 0, 0, 13, 3, 95, 97, 114, 35, 51, 6, 117, 71, 111,
+			91, 0, 0, 9, 2, 95, 96, 81, 34, 116, 84, 0, 0, 0, 18, 70, 16, 149, 137, 16, 83, 132, 72, 118, 84, 118, 72, 6, 109, 50,
+			47, 0, 0, 8, 196, 17, 84, 131, 32, 76, 8, 0, 16, 70, 12, 128, 78, 28, 145, 82, 91, 35, 68, 90, 6, 118, 34, 0, 0, 0,
+			0, 0, 0, 0, 7, 196, 76, 82, 78, 20, 76, 0, 0, 14, 3, 95, 104, 101, 107, 109, 71, 34, 6, 125, 111, 91, 0, 0, 11, 67,
+			8, 148, 192, 71, 111, 89, 0, 76, 8, 10, 67, 16, 84, 192, 2, 72, 109, 89, 0, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35,
+			76, 109, 49, 0, 0, 0, 0, 16, 69, 76, 241, 66, 20, 224, 88, 127, 10, 6, 126, 71, 13, 50, 0, 0, 0, 0, 9, 198, 72, 83,
+			9, 69, 82, 69, 15, 12, 68, 28, 80, 133, 56, 81, 126, 71, 13, 50, 0, 25, 2, 95, 123, 81, 13, 91, 84, 6, 122, 83, 47, 13,
+			49, 55, 6, 35, 65, 108, 15, 23, 6, 121, 83, 0, 0, 0, 0, 9, 66, 84, 208, 114, 65, 0, 76, 28, 0, 0, 0, 24, 2, 95,
+			125, 81, 13, 91, 84, 6, 122, 83, 47, 13, 49, 55, 6, 35, 65, 108, 15, 132, 6, 120, 0, 0, 8, 2, 95, 124, 48, 122, 48, 0,
+			0, 0, 0, 15, 70, 32, 21, 83, 36, 84, 128, 107, 121, 88, 6, 118, 34, 0, 13, 68, 44, 243, 142, 80, 4, 49, 113, 50, 47, 0,
+			46, 13, 5, 95, 48, 97, 110, 100, 15, 23, 114, 50, 47, 0, 0, 0, 0, 19, 71, 36, 195, 5, 28, 149, 9, 52, 111, 55, 126, 81,
+			118, 47, 6, 118, 65, 0, 8, 67, 24, 245, 76, 21, 0, 47, 11, 67, 56, 16, 200, 50, 116, 101, 0, 76, 28, 0, 0, 16, 70, 56,
+			16, 200, 16, 83, 64, 50, 35, 101, 72, 6, 126, 65, 0, 0, 12, 71, 12, 19, 67, 61, 33, 5, 72, 21, 0, 47, 0, 0, 11, 67,
+			84, 225, 0, 114, 50, 47, 0, 76, 8, 0, 12, 67, 33, 34, 18, 107, 35, 34, 107, 35, 34, 0, 0, 0, 12, 68, 4, 225, 18, 20,
+			35, 50, 72, 34, 13, 0, 0, 0, 7, 196, 84, 213, 197, 28, 65, 0, 18, 9, 104, 195, 164, 117, 115, 99, 104, 101, 110, 107, 124, 89,
+			99, 13, 50, 0, 8, 67, 76, 197, 77, 21, 0, 47, 0, 0, 0, 0, 0, 0, 18, 70, 88, 244, 136, 21, 34, 71, 83, 127, 34, 107,
+			6, 126, 34, 111, 134, 0, 0, 17, 4, 95, 35, 51, 50, 55, 6, 126, 34, 132, 6, 122, 99, 13, 50, 0, 0, 0, 15, 69, 36, 229,
+			5, 72, 224, 111, 50, 47, 6, 109, 34, 50, 0, 15, 69, 92, 243, 12, 20, 224, 2, 84, 113, 55, 13, 50, 0, 46, 15, 67, 21, 101,
+			12, 126, 84, 109, 50, 47, 120, 6, 109, 55, 0, 0, 0, 0, 12, 71, 72, 240, 83, 80, 33, 69, 24, 21, 0, 47, 0, 0, 9, 68,
+			12, 128, 82, 80, 21, 0, 47, 0, 0, 13, 68, 84, 210, 5, 72, 114, 65, 107, 6, 109, 34, 0, 0, 0, 9, 68, 76, 130, 82, 80,
+			21, 0, 47, 0, 9, 66, 105, 80, 132, 120, 0, 76, 28, 0, 9, 68, 48, 241, 201, 56, 21, 0, 47, 0, 0, 0, 0, 0, 8, 197,
+			8, 19, 11, 60, 224, 66, 0, 12, 201, 65, 34, 86, 5, 66, 83, 36, 84, 128, 68, 0, 0, 0, 12, 68, 16, 145, 83, 20, 72, 118,
+			88, 13, 0, 72, 0, 0, 9, 198, 80, 243, 142, 4, 113, 64, 15, 16, 70, 64, 20, 211, 4, 113, 64, 48, 35, 89, 6, 35, 90, 13,
+			0, 9, 198, 36, 226, 149, 72, 145, 64, 15, 9, 198, 5, 37, 5, 72, 145, 64, 15, 11, 70, 76, 50, 69, 56, 49, 64, 21, 0, 47,
+			0, 14, 67, 12, 132, 128, 49, 13, 34, 111, 89, 47, 114, 89, 0, 0, 0, 0, 13, 68, 46, 131, 142, 80, 4, 49, 131, 50, 47, 0,
+			46, 6, 195, 52, 82, 78, 76, 0, 8, 67, 9, 149, 5, 21, 0, 47, 0, 0, 20, 71, 56, 81, 204, 36, 113, 78, 80, 50, 126, 81,
+			55, 118, 75, 6, 109, 50, 47, 0, 0, 0, 18, 67, 85, 53, 192, 2, 114, 50, 47, 88, 127, 84, 6, 122, 47, 108, 0, 8, 0, 0,
+			6, 195, 4, 196, 207, 8, 0, 8, 197, 105, 147, 66, 4, 192, 65, 0, 0, 0, 0, 13, 69, 76, 16, 130, 5, 64, 88, 35, 71, 35,
+			47, 0, 0, 0, 0, 0, 0, 0, 8, 67, 52, 18, 76, 21, 0, 47, 0, 0, 11, 200, 56, 85, 83, 20, 83, 1, 56, 64, 66, 0,
+			0, 14, 69, 76, 243, 12, 20, 224, 4, 88, 113, 55, 13, 50, 0, 0, 0, 0, 8, 67, 8, 32, 192, 21, 0, 47, 0, 0, 0, 15,
+			70, 76, 84, 150, 36, 49, 64, 89, 109, 34, 84, 111, 89, 0, 9, 198, 52, 21, 5, 72, 145, 64, 15, 9, 198, 20, 225, 9, 88, 145,
+			64, 15, 9, 198, 8, 192, 77, 4, 113, 64, 15, 11, 70, 29, 35, 213, 64, 145, 64, 21, 0, 47, 0, 0, 0, 0, 11, 70, 60, 97,
+			140, 36, 225, 64, 21, 0, 47, 0, 7, 195, 92, 145, 64, 72, 8, 0, 0, 0, 0, 10, 67, 76, 145, 64, 88, 118, 0, 72, 46, 0,
+			0, 0, 8, 66, 92, 240, 84, 4, 127, 0, 0, 0, 10, 69, 80, 80, 83, 21, 32, 21, 0, 47, 0, 0, 14, 69, 49, 80, 197, 57,
+			64, 55, 120, 89, 109, 50, 47, 0, 15, 69, 93, 84, 132, 21, 64, 84, 4, 114, 34, 72, 13, 47, 0, 15, 69, 92, 84, 132, 21, 64,
+			84, 4, 109, 34, 72, 13, 47, 0, 0, 20, 73, 5, 84, 199, 21, 48, 200, 4, 213, 0, 121, 89, 81, 13, 91, 116, 65, 47, 0, 0,
+			4, 193, 228, 43, 0, 0, 15, 69, 64, 192, 78, 21, 64, 48, 55, 35, 50, 6, 126, 47, 0, 16, 69, 32, 16, 133, 77, 64, 107, 116,
+			71, 109, 89, 47, 0, 46, 72, 0, 10, 67, 80, 243, 64, 47, 113, 65, 0, 46, 10, 67, 44, 19, 64, 4, 49, 116, 65, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 68, 32, 21, 20, 20, 107, 4, 35, 47, 13, 0, 46, 0, 13, 69, 17, 34, 84, 80, 80, 72, 34,
+			111, 47, 13, 0, 8, 197, 4, 176, 90, 36, 80, 15, 10, 69, 72, 83, 65, 44, 80, 21, 0, 47, 14, 69, 76, 243, 12, 80, 80, 4,
+			88, 113, 55, 47, 13, 0, 0, 0, 11, 67, 4, 196, 192, 35, 55, 89, 0, 76, 28, 0, 0, 10, 69, 72, 240, 68, 36, 80, 21, 0,
+			47, 0, 0, 14, 3, 95, 122, 104, 99, 118, 50, 6, 126, 88, 111, 91, 0, 0, 0, 0, 0, 0, 0, 15, 69, 16, 144, 68, 20, 208,
+			72, 118, 35, 72, 6, 126, 65, 0, 0, 0, 0, 0, 0, 16, 70, 36, 195, 15, 100, 19, 0, 111, 55, 113, 35, 57, 116, 55, 0, 0,
+			15, 70, 20, 147, 133, 72, 193, 73, 122, 50, 13, 34, 55, 122, 0, 0, 9, 198, 77, 80, 138, 20, 181, 0, 65, 10, 67, 8, 84, 212,
+			71, 109, 89, 47, 0, 0, 0, 0, 8, 197, 57, 83, 69, 72, 240, 65, 0, 0, 6, 18, 66, 108, 0, 114, 0, 7, 6, 18, 67, 99,
+			0, 102, 0, 104, 0, 107, 0, 112, 0, 113, 0, 115, 0, 116, 0, 122, 0, 7, 6, 18, 68, 195, 164, 0, 97, 0, 7, 6, 18, 69,
+			195, 182, 0, 111, 0, 7, 6, 99, 104, 0, 4, 1, 117, 102, 2, 115, 3, 49, 0, 2, 111, 114, 32, 0, 2, 111, 114, 100, 0, 2,
+			195, 182, 114, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 111, 0, 97, 114, 97, 2, 107, 116, 3, 49, 2, 35, 34, 35, 0, 114, 111,
+			3, 49, 34, 127, 0, 115, 3, 49, 89, 0, 115, 116, 117, 1, 97, 119, 2, 109, 3, 49, 89, 47, 120, 0, 105, 112, 2, 32, 3, 76,
+			111, 48, 0, 4, 8, 2, 97, 3, 91, 0, 8, 2, 105, 99, 0, 8, 2, 105, 102, 0, 8, 2, 105, 108, 0, 97, 110, 99, 101, 3,
+			91, 137, 89, 13, 0, 4, 3, 99, 0, 1, 117, 101, 0, 1, 117, 164, 195, 0, 8, 2, 17, 65, 0, 4, 101, 110, 1, 17, 67, 2,
+			32, 14, 128, 128, 132, 3, 99, 13, 50, 0, 101, 110, 1, 101, 2, 32, 0, 101, 110, 1, 164, 195, 2, 32, 0, 101, 110, 1, 188, 195,
+			2, 32, 0, 115, 1, 164, 195, 110, 2, 116, 3, 99, 89, 0, 4, 1, 97, 3, 101, 0, 1, 101, 114, 98, 2, 101, 110, 0, 1, 111,
+			0, 1, 117, 0, 7, 6, 103, 101, 0, 8, 2, 111, 114, 103, 3, 81, 2, 126, 0, 111, 8, 3, 81, 4, 126, 127, 0, 4, 1, 115,
+			103, 110, 117, 2, 17, 67, 21, 3, 81, 13, 0, 2, 109, 97, 99, 104, 0, 2, 109, 97, 108, 0, 2, 114, 195, 164, 116, 0, 2, 116,
+			114, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 105, 109, 112, 0, 8, 2, 111, 114, 14, 128, 132, 130, 0, 98, 105, 114, 103, 101,
+			2, 32, 14, 128, 128, 135, 3, 81, 13, 71, 111, 34, 81, 13, 0, 4, 2, 114, 109, 97, 110, 3, 81, 109, 0, 2, 115, 116, 114, 105,
+			103, 0, 8, 2, 18, 66, 25, 0, 8, 2, 109, 25, 0, 8, 2, 110, 25, 0, 8, 2, 110, 101, 114, 0, 105, 2, 12, 3, 81, 122,
+			0, 4, 8, 2, 98, 101, 29, 3, 81, 126, 0, 104, 8, 2, 101, 29, 0, 104, 101, 110, 3, 81, 126, 13, 50, 0, 110, 101, 114, 97,
+			108, 2, 105, 115, 3, 81, 126, 50, 13, 34, 35, 55, 0, 110, 101, 114, 97, 108, 3, 81, 126, 50, 109, 34, 6, 35, 55, 0, 98, 101,
+			110, 3, 81, 126, 71, 13, 50, 0, 4, 103, 101, 110, 3, 81, 126, 81, 13, 50, 0, 103, 101, 110, 8, 2, 21, 14, 128, 132, 133, 0,
+			103, 110, 3, 81, 126, 81, 50, 0, 7, 6, 105, 101, 0, 4, 1, 10, 2, 114, 32, 3, 6, 118, 0, 1, 10, 2, 114, 108, 105, 99,
+			104, 0, 1, 21, 2, 32, 0, 1, 21, 2, 114, 101, 29, 0, 2, 114, 115, 21, 0, 4, 110, 1, 103, 21, 2, 32, 3, 6, 118, 13,
+			50, 0, 110, 1, 104, 112, 2, 32, 0, 110, 1, 109, 21, 2, 32, 0, 110, 1, 112, 21, 2, 32, 0, 110, 1, 114, 101, 115, 2, 32,
+			0, 110, 1, 114, 101, 116, 116, 2, 32, 0, 110, 1, 114, 111, 101, 2, 32, 0, 110, 1, 114, 111, 103, 2, 32, 0, 110, 1, 114, 116,
+			101, 2, 32, 0, 110, 1, 114, 116, 115, 117, 100, 2, 32, 0, 110, 1, 115, 21, 2, 32, 0, 110, 1, 116, 21, 2, 32, 0, 114, 117,
+			110, 103, 3, 6, 118, 34, 114, 68, 0, 114, 117, 110, 103, 115, 3, 6, 118, 34, 114, 68, 89, 0, 4, 1, 21, 2, 32, 28, 17, 3,
+			8, 111, 13, 0, 1, 100, 117, 116, 115, 2, 32, 0, 1, 108, 97, 109, 114, 111, 102, 0, 1, 108, 105, 109, 97, 102, 0, 1, 108, 111,
+			102, 2, 32, 0, 1, 114, 101, 102, 2, 110, 0, 1, 114, 101, 116, 107, 97, 98, 0, 110, 1, 10, 2, 32, 3, 8, 111, 13, 50, 0,
+			110, 115, 1, 10, 2, 32, 3, 8, 111, 38, 13, 50, 89, 0, 4, 110, 1, 98, 10, 2, 32, 3, 8, 118, 13, 50, 0, 110, 1, 114,
+			10, 2, 32, 0, 1, 117, 2, 114, 32, 3, 23, 6, 118, 0, 1, 10, 2, 108, 108, 32, 3, 111, 6, 109, 0, 110, 116, 2, 32, 3,
+			111, 6, 109, 50, 47, 0, 110, 122, 1, 10, 2, 32, 3, 111, 6, 109, 50, 132, 0, 4, 1, 99, 110, 97, 110, 105, 102, 2, 114, 3,
+			111, 6, 126, 0, 1, 103, 121, 104, 2, 110, 0, 1, 107, 110, 97, 98, 2, 114, 0, 1, 108, 97, 116, 105, 2, 110, 0, 1, 108, 101,
+			116, 111, 104, 2, 114, 0, 1, 109, 101, 114, 112, 2, 114, 0, 1, 114, 114, 97, 2, 114, 0, 1, 114, 114, 97, 98, 2, 114, 0, 1,
+			110, 105, 2, 32, 3, 111, 13, 0, 110, 1, 110, 10, 2, 32, 3, 111, 13, 50, 0, 110, 1, 114, 2, 21, 3, 111, 109, 50, 0, 4,
+			3, 118, 0, 1, 104, 99, 115, 2, 110, 0, 104, 0, 110, 116, 1, 100, 2, 32, 3, 118, 50, 47, 0, 110, 115, 116, 1, 100, 3, 118,
+			50, 89, 47, 0, 7, 6, 195, 159, 0, 3, 89, 0, 8, 2, 32, 3, 109, 89, 132, 109, 47, 0, 7, 6, 195, 164, 0, 2, 117, 109,
+			32, 24, 3, 6, 125, 0, 116, 1, 116, 2, 32, 3, 6, 125, 47, 0, 4, 2, 17, 67, 11, 3, 109, 0, 2, 17, 67, 17, 67, 0,
+			2, 115, 99, 104, 0, 117, 3, 124, 0, 4, 3, 125, 0, 104, 2, 12, 0, 98, 2, 116, 32, 3, 125, 48, 0, 103, 2, 116, 32, 3,
+			125, 49, 0, 7, 6, 195, 182, 0, 2, 32, 3, 6, 130, 0, 4, 3, 130, 0, 104, 2, 12, 0, 4, 2, 17, 67, 11, 3, 131, 0,
+			2, 17, 67, 17, 67, 0, 2, 115, 99, 104, 0, 7, 6, 195, 188, 0, 98, 101, 114, 8, 2, 98, 101, 21, 14, 128, 132, 132, 3, 11,
+			6, 128, 71, 108, 0, 98, 101, 114, 8, 2, 21, 14, 128, 132, 132, 3, 23, 4, 128, 71, 108, 0, 4, 3, 128, 0, 104, 2, 12, 0,
+			98, 2, 116, 32, 3, 128, 48, 0, 103, 2, 116, 32, 3, 128, 49, 0, 98, 101, 114, 8, 2, 103, 97, 110, 103, 115, 3, 128, 71, 108,
+			0, 4, 2, 17, 67, 11, 3, 129, 0, 2, 17, 67, 17, 67, 0, 2, 115, 99, 104, 0, 2, 120, 0, 7, 6, 97, 0, 114, 99, 104,
+			97, 8, 2, 105, 3, 2, 35, 34, 99, 117, 0, 116, 111, 8, 2, 109, 3, 2, 35, 47, 127, 0, 4, 98, 8, 2, 110, 111, 114, 3,
+			2, 35, 48, 0, 98, 8, 2, 115, 111, 0, 98, 8, 2, 115, 111, 114, 0, 98, 8, 2, 115, 116, 114, 0, 98, 8, 2, 115, 117, 114,
+			0, 107, 113, 117, 3, 2, 35, 49, 84, 0, 110, 8, 2, 97, 3, 2, 35, 50, 0, 110, 105, 8, 2, 115, 3, 2, 35, 50, 118, 0,
+			98, 98, 8, 2, 97, 3, 2, 35, 71, 0, 117, 115, 116, 114, 97, 2, 108, 3, 2, 121, 89, 47, 34, 117, 0, 112, 112, 101, 8, 2,
+			108, 108, 21, 3, 4, 35, 48, 109, 0, 110, 116, 104, 114, 111, 112, 111, 8, 3, 4, 35, 50, 47, 34, 127, 48, 2, 127, 0, 110, 116,
+			105, 8, 2, 21, 14, 128, 132, 132, 3, 4, 35, 50, 47, 111, 0, 110, 116, 105, 8, 2, 21, 14, 128, 132, 132, 3, 4, 35, 50, 47,
+			118, 0, 110, 105, 109, 8, 3, 4, 35, 50, 118, 65, 0, 110, 105, 109, 97, 108, 8, 3, 4, 35, 50, 118, 65, 116, 55, 0, 110, 103,
+			108, 111, 8, 2, 21, 3, 4, 35, 68, 81, 55, 127, 0, 4, 108, 1, 110, 97, 107, 10, 2, 32, 3, 4, 116, 55, 0, 108, 1, 110,
+			103, 105, 115, 10, 2, 32, 0, 1, 114, 103, 2, 109, 109, 32, 3, 6, 35, 0, 98, 8, 2, 101, 114, 21, 14, 128, 132, 130, 3, 6,
+			35, 48, 0, 98, 122, 117, 8, 2, 21, 14, 128, 132, 132, 3, 6, 35, 48, 132, 120, 0, 4, 99, 104, 115, 8, 2, 21, 14, 128, 132,
+			132, 3, 6, 35, 49, 89, 0, 99, 104, 115, 8, 2, 101, 108, 0, 4, 110, 1, 110, 105, 101, 2, 100, 101, 114, 3, 6, 35, 50, 0,
+			110, 8, 2, 21, 14, 128, 132, 130, 0, 110, 8, 2, 110, 18, 68, 104, 14, 128, 132, 130, 0, 110, 8, 2, 110, 97, 100, 14, 128, 132,
+			130, 0, 110, 116, 1, 21, 2, 32, 3, 6, 35, 50, 47, 0, 108, 108, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 6, 35, 55, 13,
+			34, 0, 4, 1, 21, 2, 98, 101, 108, 32, 3, 6, 116, 0, 1, 21, 2, 98, 108, 32, 0, 2, 17, 67, 111, 32, 0, 2, 114, 99,
+			104, 32, 0, 8, 2, 110, 97, 116, 105, 111, 14, 128, 132, 129, 0, 4, 114, 1, 108, 21, 2, 32, 3, 6, 116, 34, 0, 114, 1, 116,
+			21, 2, 32, 0, 114, 105, 101, 114, 2, 32, 24, 3, 6, 116, 34, 118, 108, 0, 116, 1, 21, 2, 32, 3, 6, 116, 47, 0, 116, 105,
+			115, 99, 104, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 116, 47, 111, 91, 0, 110, 1, 21, 2, 32, 3, 6, 116, 50, 0, 110, 105,
+			101, 114, 2, 32, 24, 3, 6, 116, 50, 118, 108, 0, 4, 108, 1, 17, 65, 21, 2, 32, 3, 6, 116, 55, 0, 108, 1, 98, 2, 32,
+			0, 108, 1, 103, 2, 32, 0, 108, 1, 107, 2, 32, 0, 108, 1, 110, 2, 32, 0, 108, 1, 114, 2, 32, 0, 108, 1, 116, 2, 32,
+			0, 109, 1, 114, 101, 107, 2, 105, 107, 3, 6, 116, 65, 0, 4, 103, 101, 2, 32, 28, 17, 3, 6, 116, 90, 13, 0, 103, 101, 2,
+			110, 32, 28, 33, 0, 110, 99, 101, 1, 115, 2, 32, 3, 6, 137, 89, 0, 110, 99, 101, 1, 114, 102, 2, 32, 3, 6, 137, 89, 13,
+			0, 110, 99, 101, 110, 1, 115, 2, 32, 3, 6, 137, 89, 13, 50, 0, 1, 17, 67, 17, 67, 10, 2, 32, 3, 8, 116, 0, 4, 98,
+			8, 2, 17, 67, 21, 14, 128, 132, 130, 3, 11, 6, 35, 48, 0, 98, 8, 2, 17, 67, 21, 14, 128, 132, 130, 0, 98, 8, 2, 195,
+			164, 14, 128, 132, 130, 0, 117, 102, 8, 2, 21, 14, 128, 132, 131, 3, 11, 6, 121, 83, 0, 117, 115, 8, 2, 21, 14, 128, 132, 131,
+			3, 11, 6, 121, 89, 0, 105, 114, 8, 3, 21, 0, 4, 2, 17, 67, 11, 3, 35, 0, 2, 17, 67, 17, 67, 0, 2, 105, 115, 105,
+			101, 114, 0, 2, 115, 99, 104, 0, 2, 116, 105, 111, 110, 0, 2, 120, 0, 100, 8, 2, 106, 117, 3, 35, 47, 0, 4, 98, 8, 2,
+			105, 3, 35, 48, 0, 98, 8, 2, 106, 0, 98, 8, 2, 115, 101, 0, 98, 8, 2, 115, 122, 0, 98, 8, 2, 111, 114, 3, 35, 48,
+			23, 0, 98, 100, 8, 2, 12, 3, 35, 48, 72, 0, 4, 110, 8, 2, 100, 101, 114, 3, 35, 50, 0, 110, 8, 2, 116, 101, 110, 0,
+			110, 8, 2, 116, 104, 0, 110, 8, 2, 116, 119, 0, 110, 110, 8, 0, 110, 97, 116, 104, 8, 3, 35, 50, 35, 47, 0, 110, 104, 101,
+			105, 109, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 35, 50, 107, 6, 122, 65, 0, 110, 103, 108, 105, 8, 2, 17, 67, 3, 35, 68,
+			81, 55, 118, 0, 98, 98, 8, 2, 114, 101, 118, 3, 35, 71, 0, 98, 101, 114, 114, 8, 3, 35, 71, 23, 109, 34, 0, 99, 8, 2,
+			101, 116, 3, 35, 132, 0, 101, 2, 17, 67, 17, 67, 3, 109, 0, 105, 110, 1, 114, 116, 3, 109, 50, 0, 4, 1, 108, 21, 2, 103,
+			3, 116, 0, 1, 108, 99, 115, 2, 103, 0, 1, 114, 112, 115, 2, 99, 104, 0, 1, 115, 2, 103, 0, 1, 115, 2, 109, 32, 0, 1,
+			115, 2, 109, 107, 101, 105, 116, 0, 2, 17, 67, 32, 0, 2, 32, 0, 2, 112, 104, 0, 8, 2, 32, 0, 97, 0, 104, 2, 12, 0,
+			116, 105, 115, 105, 101, 114, 101, 110, 1, 21, 2, 32, 14, 128, 128, 137, 3, 116, 47, 111, 89, 6, 118, 34, 13, 50, 0, 98, 2, 116,
+			32, 3, 116, 48, 0, 4, 103, 1, 106, 2, 100, 3, 116, 49, 0, 103, 1, 108, 104, 99, 115, 2, 103, 101, 0, 103, 2, 116, 32, 0,
+			1, 109, 2, 108, 116, 32, 3, 116, 55, 0, 98, 101, 110, 8, 2, 100, 3, 116, 71, 13, 50, 0, 101, 108, 3, 116, 109, 55, 0, 105,
+			2, 115, 99, 104, 3, 116, 111, 0, 3, 117, 0, 4, 117, 3, 121, 0, 117, 8, 2, 17, 67, 101, 105, 110, 97, 110, 100, 0, 117, 104,
+			2, 32, 0, 117, 116, 104, 101, 110, 8, 3, 121, 47, 109, 50, 0, 117, 102, 101, 110, 116, 8, 3, 121, 83, 13, 50, 47, 0, 117, 115,
+			8, 2, 107, 117, 3, 121, 89, 0, 4, 105, 3, 122, 0, 121, 0, 4, 105, 114, 1, 109, 2, 32, 3, 122, 108, 0, 121, 114, 1, 109,
+			2, 32, 0, 4, 121, 1, 112, 3, 123, 0, 121, 2, 32, 24, 0, 101, 3, 125, 0, 105, 114, 2, 32, 3, 125, 34, 0, 7, 6, 98,
+			0, 1, 98, 3, 0, 4, 97, 98, 121, 3, 21, 0, 105, 107, 101, 8, 0, 108, 117, 101, 8, 0, 111, 97, 114, 100, 0, 111, 111, 109,
+			8, 0, 4, 2, 18, 67, 3, 48, 0, 2, 32, 24, 0, 8, 111, 2, 17, 67, 0, 116, 2, 32, 24, 3, 48, 47, 0, 4, 3, 71,
+			0, 2, 115, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 101, 17, 68, 17, 67, 0, 8, 2, 101, 98, 17, 67, 0, 8, 2,
+			101, 99, 17, 67, 0, 8, 2, 101, 101, 116, 0, 8, 2, 101, 110, 122, 105, 110, 0, 8, 2, 101, 114, 17, 67, 0, 8, 2, 101, 115,
+			101, 110, 0, 8, 2, 101, 115, 115, 0, 8, 2, 101, 115, 116, 101, 110, 0, 8, 2, 101, 117, 103, 0, 8, 2, 101, 117, 108, 0, 8,
+			2, 101, 117, 116, 0, 8, 2, 106, 17, 65, 0, 4, 97, 8, 2, 108, 17, 65, 3, 71, 2, 35, 0, 97, 8, 2, 108, 108, 21, 0,
+			105, 115, 8, 2, 104, 14, 128, 132, 131, 3, 71, 2, 111, 89, 0, 101, 111, 8, 2, 98, 3, 71, 4, 13, 127, 0, 117, 110, 100, 101,
+			115, 8, 3, 71, 6, 114, 50, 72, 13, 89, 0, 101, 105, 8, 3, 71, 6, 122, 0, 4, 101, 1, 110, 101, 17, 67, 10, 2, 17, 67,
+			21, 3, 71, 13, 0, 101, 1, 115, 103, 110, 117, 2, 17, 67, 21, 0, 101, 2, 114, 101, 105, 99, 104, 0, 101, 8, 2, 21, 14, 128,
+			132, 130, 0, 101, 8, 2, 105, 110, 104, 14, 128, 132, 130, 0, 101, 8, 2, 17, 67, 11, 3, 71, 109, 0, 101, 115, 116, 105, 97, 3,
+			71, 109, 89, 47, 118, 6, 116, 0, 97, 114, 1, 10, 2, 32, 14, 128, 128, 131, 3, 71, 116, 34, 0, 97, 114, 101, 1, 10, 2, 32,
+			14, 128, 128, 132, 3, 71, 116, 34, 13, 0, 97, 114, 101, 110, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71, 116, 34, 13, 50, 0, 97,
+			114, 101, 109, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71, 116, 34, 13, 65, 0, 97, 114, 101, 115, 1, 10, 2, 32, 14, 128, 128, 133,
+			3, 71, 116, 34, 13, 89, 0, 97, 114, 101, 114, 1, 10, 2, 32, 14, 128, 128, 133, 3, 71, 116, 34, 108, 0, 101, 105, 103, 101, 8,
+			2, 21, 3, 71, 122, 81, 13, 0, 8, 2, 32, 3, 71, 126, 0, 101, 116, 101, 110, 3, 71, 126, 47, 13, 50, 0, 101, 105, 103, 101,
+			8, 2, 32, 3, 71, 126, 91, 0, 111, 2, 115, 104, 3, 71, 127, 0, 7, 6, 99, 0, 1, 99, 3, 0, 4, 111, 97, 116, 2, 32,
+			3, 21, 0, 111, 119, 8, 0, 114, 101, 119, 0, 117, 112, 0, 4, 3, 49, 0, 8, 2, 18, 66, 17, 65, 0, 107, 0, 111, 109, 112,
+			117, 116, 101, 114, 8, 2, 21, 14, 128, 132, 128, 3, 49, 113, 65, 48, 57, 6, 120, 47, 108, 0, 111, 100, 101, 8, 3, 49, 127, 47,
+			0, 4, 2, 105, 101, 3, 89, 0, 2, 121, 0, 121, 98, 101, 114, 8, 3, 89, 122, 71, 108, 0, 8, 2, 32, 3, 89, 126, 0, 104,
+			101, 102, 2, 32, 3, 91, 109, 83, 0, 4, 1, 97, 102, 2, 101, 116, 3, 132, 0, 1, 97, 108, 112, 2, 105, 101, 0, 8, 2, 101,
+			108, 0, 8, 2, 101, 110, 116, 0, 101, 121, 8, 3, 132, 122, 0, 7, 6, 100, 0, 1, 100, 3, 0, 4, 101, 97, 108, 8, 3, 21,
+			0, 103, 101, 2, 32, 0, 114, 105, 118, 101, 0, 114, 117, 103, 8, 0, 4, 2, 18, 67, 3, 47, 0, 2, 32, 24, 0, 100, 116, 0,
+			116, 0, 4, 3, 72, 0, 1, 110, 117, 111, 115, 0, 2, 115, 17, 65, 0, 8, 2, 114, 17, 65, 0, 8, 2, 115, 99, 104, 17, 65,
+			0, 8, 2, 115, 104, 17, 65, 0, 101, 115, 105, 103, 110, 2, 32, 3, 72, 2, 111, 88, 122, 50, 0, 4, 117, 114, 99, 104, 8, 2,
 			98, 3, 72, 2, 114, 34, 99, 0, 117, 114, 99, 104, 8, 2, 102, 0, 117, 114, 99, 104, 8, 2, 107, 114, 0, 117, 114, 99, 104, 8,
 			2, 108, 97, 0, 117, 114, 99, 104, 8, 2, 115, 99, 104, 97, 117, 0, 117, 114, 99, 104, 8, 2, 115, 116, 0, 117, 114, 99, 104, 8,
 			2, 115, 117, 0, 117, 114, 99, 104, 8, 2, 116, 114, 101, 0, 117, 114, 99, 104, 8, 2, 119, 0, 117, 114, 99, 104, 113, 117, 101, 8,
@@ -11492,19 +12562,19 @@ FilesInMemory create_espeakdata_dicts () {
 			47, 0, 101, 104, 114, 8, 2, 17, 67, 21, 14, 128, 132, 132, 3, 55, 6, 126, 34, 0, 111, 1, 21, 2, 103, 105, 115, 99, 104, 3,
 			55, 6, 127, 0, 101, 120, 105, 8, 2, 21, 3, 55, 109, 49, 89, 118, 0, 101, 98, 8, 2, 17, 67, 3, 55, 126, 48, 0, 101, 98,
 			101, 110, 8, 2, 100, 105, 103, 3, 55, 126, 71, 6, 109, 50, 0, 8, 2, 32, 3, 109, 55, 0, 105, 99, 104, 1, 10, 2, 32, 14,
-			128, 128, 132, 3, 139, 111, 99, 0, 105, 99, 104, 117, 110, 103, 1, 10, 2, 32, 14, 128, 128, 135, 3, 139, 111, 99, 2, 114, 68, 0,
-			105, 99, 104, 101, 1, 10, 2, 32, 14, 128, 128, 133, 3, 139, 111, 99, 13, 0, 105, 99, 104, 101, 114, 101, 1, 10, 2, 32, 14, 128,
-			128, 135, 3, 139, 111, 99, 13, 34, 13, 0, 105, 99, 104, 101, 114, 101, 110, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 13,
-			34, 13, 50, 0, 105, 99, 104, 101, 114, 101, 109, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 13, 34, 13, 65, 0, 105, 99,
-			104, 101, 114, 101, 115, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 13, 34, 13, 89, 0, 105, 99, 104, 101, 114, 101, 114, 1,
-			10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 13, 34, 13, 108, 0, 105, 99, 104, 101, 110, 1, 10, 2, 32, 14, 128, 128, 134, 3,
-			139, 111, 99, 13, 50, 0, 105, 99, 104, 101, 109, 1, 10, 2, 32, 14, 128, 128, 134, 3, 139, 111, 99, 13, 65, 0, 105, 99, 104, 101,
-			115, 1, 10, 2, 32, 14, 128, 128, 134, 3, 139, 111, 99, 13, 89, 0, 105, 99, 104, 107, 101, 105, 116, 1, 10, 2, 32, 14, 128, 128,
-			136, 3, 139, 111, 99, 49, 122, 47, 0, 105, 99, 104, 115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 139, 111, 99, 89, 47, 13,
-			0, 105, 99, 104, 115, 116, 101, 114, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 89, 47, 13, 34, 0, 105, 99, 104, 115, 116,
-			101, 110, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139, 111, 99, 89, 47, 13, 50, 0, 105, 99, 104, 115, 116, 101, 109, 1, 10, 2, 32,
-			14, 128, 128, 136, 3, 139, 111, 99, 89, 47, 13, 65, 0, 105, 99, 104, 115, 116, 101, 115, 1, 10, 2, 32, 14, 128, 128, 136, 3, 139,
-			111, 99, 89, 47, 13, 89, 0, 105, 99, 104, 101, 114, 1, 10, 2, 32, 14, 128, 128, 134, 3, 139, 111, 99, 108, 0, 7, 6, 109, 0,
+			128, 128, 132, 3, 138, 111, 99, 0, 105, 99, 104, 117, 110, 103, 1, 10, 2, 32, 14, 128, 128, 135, 3, 138, 111, 99, 2, 114, 68, 0,
+			105, 99, 104, 101, 1, 10, 2, 32, 14, 128, 128, 133, 3, 138, 111, 99, 13, 0, 105, 99, 104, 101, 114, 101, 1, 10, 2, 32, 14, 128,
+			128, 135, 3, 138, 111, 99, 13, 34, 13, 0, 105, 99, 104, 101, 114, 101, 110, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 13,
+			34, 13, 50, 0, 105, 99, 104, 101, 114, 101, 109, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 13, 34, 13, 65, 0, 105, 99,
+			104, 101, 114, 101, 115, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 13, 34, 13, 89, 0, 105, 99, 104, 101, 114, 101, 114, 1,
+			10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 13, 34, 13, 108, 0, 105, 99, 104, 101, 110, 1, 10, 2, 32, 14, 128, 128, 134, 3,
+			138, 111, 99, 13, 50, 0, 105, 99, 104, 101, 109, 1, 10, 2, 32, 14, 128, 128, 134, 3, 138, 111, 99, 13, 65, 0, 105, 99, 104, 101,
+			115, 1, 10, 2, 32, 14, 128, 128, 134, 3, 138, 111, 99, 13, 89, 0, 105, 99, 104, 107, 101, 105, 116, 1, 10, 2, 32, 14, 128, 128,
+			136, 3, 138, 111, 99, 49, 122, 47, 0, 105, 99, 104, 115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 138, 111, 99, 89, 47, 13,
+			0, 105, 99, 104, 115, 116, 101, 114, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 89, 47, 13, 34, 0, 105, 99, 104, 115, 116,
+			101, 110, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138, 111, 99, 89, 47, 13, 50, 0, 105, 99, 104, 115, 116, 101, 109, 1, 10, 2, 32,
+			14, 128, 128, 136, 3, 138, 111, 99, 89, 47, 13, 65, 0, 105, 99, 104, 115, 116, 101, 115, 1, 10, 2, 32, 14, 128, 128, 136, 3, 138,
+			111, 99, 89, 47, 13, 89, 0, 105, 99, 104, 101, 114, 1, 10, 2, 32, 14, 128, 128, 134, 3, 138, 111, 99, 108, 0, 7, 6, 109, 0,
 			1, 109, 3, 0, 4, 105, 99, 114, 111, 8, 3, 21, 0, 115, 8, 0, 4, 3, 65, 0, 8, 2, 110, 101, 109, 0, 111, 8, 2, 114,
 			98, 3, 65, 2, 113, 0, 117, 115, 105, 107, 3, 65, 2, 120, 88, 118, 49, 0, 4, 101, 116, 8, 2, 97, 108, 108, 3, 65, 2, 126,
 			47, 0, 101, 116, 104, 8, 0, 101, 110, 97, 103, 8, 3, 65, 2, 126, 50, 116, 90, 0, 105, 107, 114, 111, 8, 2, 21, 14, 128, 132,
@@ -11684,276 +12754,149 @@ FilesInMemory create_espeakdata_dicts () {
 			3, 65, 118, 50, 114, 89, 0, 36, 3, 72, 113, 55, 6, 116, 0, 196, 141, 3, 76, 0, 195, 167, 3, 89, 0, 197, 190, 3, 90, 0,
 			197, 161, 3, 91, 0, 45, 1, 32, 15, 2, 32, 15, 3, 91, 47, 34, 111, 99, 0, 195, 166, 3, 109, 0, 195, 169, 3, 126, 0, 195,
 			184, 3, 131, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts11 = FileInMemory_createWithData (21636, reinterpret_cast<const char *> (&espeakdata_dicts11_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/de_dict", 
+		autoFileInMemory espeakdata_dicts12 = FileInMemory_createWithData (21816, reinterpret_cast<const char *> (&espeakdata_dicts12_data), 
+			U"espeak-1.48.04-source/espeak-data/de_dict", 
 			U"de");
-		Collection_addItem (me.peek(), espeakdata_dicts11.transfer());
-
-		static unsigned char espeakdata_dicts12_data[3607] = {
-			0, 4, 0, 0, 154, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 14, 3, 95, 51, 57, 122, 50, 47, 118, 55, 6, 113, 89, 0, 12, 3, 95, 50, 49, 113, 49, 12, 6, 113, 89, 0, 0,
-			12, 3, 95, 51, 56, 35, 34, 47, 6, 113, 89, 0, 10, 3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11, 3, 95, 50, 51, 47, 6,
-			114, 113, 89, 0, 0, 11, 3, 95, 50, 50, 71, 6, 118, 113, 89, 0, 0, 13, 3, 95, 50, 53, 48, 13, 80, 12, 6, 113, 89, 0,
-			0, 12, 3, 95, 50, 52, 80, 6, 120, 71, 113, 89, 0, 0, 14, 3, 95, 50, 55, 89, 13, 47, 12, 6, 118, 113, 89, 0, 0, 14,
-			3, 95, 50, 54, 144, 13, 71, 71, 6, 112, 34, 89, 0, 0, 14, 3, 95, 51, 49, 113, 49, 13, 47, 12, 6, 113, 89, 0, 0, 10,
-			3, 95, 51, 48, 47, 6, 112, 89, 0, 0, 12, 3, 95, 51, 51, 47, 127, 47, 6, 113, 89, 0, 0, 13, 3, 95, 51, 50, 71, 35,
-			47, 12, 6, 113, 89, 0, 0, 12, 3, 95, 51, 53, 48, 127, 47, 6, 113, 89, 0, 0, 12, 3, 95, 51, 52, 80, 130, 47, 6, 113,
-			89, 0, 0, 12, 3, 95, 51, 55, 89, 127, 47, 6, 113, 89, 0, 0, 13, 3, 95, 51, 54, 144, 35, 87, 6, 47, 113, 89, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 55, 57, 4, 122, 67, 113, 118, 89, 6, 112, 0,
-			12, 3, 95, 54, 49, 6, 113, 49, 89, 13, 142, 0, 0, 16, 3, 95, 55, 56, 35, 138, 107, 35, 47, 12, 6, 109, 34, 12, 0, 10,
-			3, 95, 54, 48, 89, 6, 118, 142, 0, 0, 14, 3, 95, 48, 67, 89, 35, 6, 138, 36, 113, 49, 35, 0, 13, 3, 95, 54, 51, 47,
-			6, 113, 34, 89, 13, 142, 0, 0, 12, 3, 95, 54, 50, 71, 6, 118, 89, 13, 142, 0, 0, 12, 3, 95, 54, 53, 48, 134, 50, 89,
-			13, 142, 0, 0, 12, 3, 95, 54, 52, 80, 6, 130, 89, 13, 142, 0, 0, 13, 3, 95, 54, 55, 89, 6, 109, 34, 89, 13, 142, 0,
-			0, 14, 3, 95, 54, 54, 144, 6, 113, 57, 118, 89, 13, 142, 0, 0, 15, 3, 95, 55, 49, 113, 146, 35, 47, 12, 6, 109, 34, 12,
-			0, 0, 14, 3, 95, 55, 48, 89, 35, 47, 12, 6, 109, 34, 12, 0, 0, 16, 3, 95, 55, 51, 47, 113, 107, 35, 47, 12, 6, 109,
-			34, 12, 0, 0, 16, 3, 95, 55, 50, 71, 13, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 17, 3, 95, 55, 53, 48, 35, 144, 4,
-			35, 47, 12, 6, 109, 34, 12, 0, 0, 16, 3, 95, 55, 52, 80, 120, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 18, 3, 95, 55,
-			55, 89, 13, 47, 13, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 16, 3, 95, 55, 54, 144, 113, 107, 35, 47, 12, 6, 109, 34, 12,
-			0, 0, 12, 3, 95, 49, 57, 122, 50, 50, 6, 113, 89, 0, 0, 13, 3, 95, 49, 56, 109, 142, 12, 6, 118, 34, 111, 0, 0, 0,
-			0, 0, 0, 0, 0, 12, 3, 95, 50, 57, 122, 50, 47, 6, 113, 89, 0, 15, 3, 95, 49, 49, 36, 6, 81, 57, 6, 118, 34, 13,
-			17, 0, 0, 13, 3, 95, 50, 56, 35, 138, 12, 6, 118, 113, 89, 0, 13, 3, 95, 49, 48, 72, 6, 37, 107, 35, 36, 113, 0, 0,
-			11, 3, 95, 49, 51, 47, 6, 115, 34, 111, 0, 0, 11, 3, 95, 49, 50, 71, 6, 35, 34, 111, 0, 0, 13, 3, 95, 49, 53, 48,
-			6, 109, 50, 72, 34, 111, 0, 0, 11, 3, 95, 49, 52, 144, 6, 120, 72, 111, 0, 0, 13, 3, 95, 49, 55, 89, 6, 109, 47, 12,
-			34, 111, 0, 0, 11, 3, 95, 49, 54, 89, 6, 119, 55, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 57, 6,
-			122, 67, 80, 118, 89, 0, 0, 14, 3, 95, 52, 56, 35, 34, 47, 118, 55, 6, 113, 89, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3,
-			95, 53, 57, 122, 50, 89, 6, 109, 138, 0, 14, 3, 95, 52, 49, 113, 49, 47, 118, 55, 6, 113, 89, 0, 0, 14, 3, 95, 53, 56,
-			35, 138, 12, 6, 118, 58, 13, 50, 0, 12, 3, 95, 52, 48, 80, 118, 55, 6, 113, 89, 0, 0, 14, 3, 95, 52, 51, 47, 127, 47,
-			118, 55, 6, 113, 89, 0, 0, 13, 3, 95, 52, 50, 71, 134, 118, 55, 6, 113, 89, 0, 0, 16, 3, 95, 52, 53, 48, 134, 6, 50,
-			47, 118, 55, 6, 113, 89, 0, 0, 14, 3, 95, 52, 52, 80, 120, 58, 118, 55, 6, 113, 89, 0, 0, 14, 3, 95, 52, 55, 89, 127,
-			47, 118, 55, 6, 113, 89, 0, 0, 15, 3, 95, 52, 54, 144, 107, 113, 57, 118, 55, 6, 113, 89, 0, 0, 18, 3, 95, 54, 57, 122,
-			50, 13, 107, 4, 35, 47, 12, 6, 109, 34, 12, 0, 14, 3, 95, 53, 49, 113, 49, 57, 6, 118, 58, 109, 50, 0, 0, 11, 3, 95,
-			54, 56, 35, 34, 89, 13, 142, 0, 12, 3, 95, 53, 48, 48, 13, 80, 6, 118, 89, 0, 0, 13, 3, 95, 53, 51, 47, 6, 113, 34,
-			48, 109, 50, 0, 0, 12, 3, 95, 53, 50, 71, 6, 118, 58, 109, 50, 0, 0, 13, 3, 95, 53, 53, 48, 6, 35, 144, 48, 109, 50,
-			0, 0, 13, 3, 95, 53, 52, 80, 6, 121, 123, 58, 109, 50, 0, 0, 15, 3, 95, 53, 55, 89, 109, 47, 12, 6, 118, 58, 13, 50,
-			0, 0, 14, 3, 95, 53, 54, 144, 107, 13, 48, 12, 6, 109, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 57,
-			50, 109, 58, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 56, 35, 138, 12, 118, 89, 6, 112, 0, 0, 0, 0, 0, 0, 0, 0, 16,
-			3, 95, 57, 57, 50, 113, 67, 57, 6, 118, 50, 13, 58, 114, 0, 13, 3, 95, 56, 49, 113, 49, 57, 118, 89, 6, 112, 0, 0, 15,
-			3, 95, 57, 56, 35, 138, 12, 6, 118, 50, 13, 58, 114, 0, 12, 3, 95, 56, 48, 4, 109, 89, 89, 6, 112, 0, 0, 13, 3, 95,
-			56, 51, 47, 113, 34, 118, 89, 6, 112, 0, 0, 12, 3, 95, 56, 50, 71, 134, 118, 89, 6, 112, 0, 0, 14, 3, 95, 56, 53, 48,
-			113, 6, 80, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 52, 80, 120, 34, 118, 89, 6, 112, 0, 0, 14, 3, 95, 56, 55, 89, 109,
-			47, 12, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 54, 144, 113, 57, 118, 89, 6, 112, 0, 0, 15, 3, 95, 57, 49, 113, 49, 57,
-			6, 118, 50, 13, 58, 114, 0, 0, 12, 3, 95, 57, 48, 50, 109, 71, 12, 6, 114, 0, 0, 15, 3, 95, 57, 51, 47, 113, 34, 6,
-			118, 50, 13, 58, 114, 0, 0, 13, 3, 95, 57, 50, 71, 6, 118, 50, 13, 58, 114, 0, 0, 15, 3, 95, 57, 53, 48, 13, 80, 6,
-			118, 50, 13, 58, 114, 0, 0, 15, 3, 95, 57, 52, 80, 120, 34, 6, 118, 65, 13, 58, 114, 0, 0, 16, 3, 95, 57, 55, 89, 13,
-			47, 12, 6, 118, 50, 13, 58, 114, 0, 0, 15, 3, 95, 57, 54, 144, 113, 57, 6, 118, 50, 13, 58, 114, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95,
-			48, 77, 50, 55, 6, 118, 146, 0, 0, 13, 4, 95, 48, 77, 51, 80, 34, 6, 39, 34, 36, 0, 0, 0, 13, 4, 95, 48, 77, 49,
-			107, 13, 88, 6, 118, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 5, 131, 239, 187, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 2, 95, 51, 47, 37, 50, 36, 113, 0, 0, 9, 2, 95, 50, 72, 6, 36, 113, 0, 0, 10, 2, 95, 49,
-			36, 6, 49, 36, 113, 0, 0, 11, 2, 95, 48, 89, 6, 40, 65, 36, 113, 0, 0, 11, 2, 95, 55, 107, 35, 6, 138, 36, 113, 0,
-			0, 10, 2, 95, 54, 107, 35, 6, 36, 113, 0, 0, 11, 2, 95, 53, 83, 35, 6, 107, 36, 113, 0, 0, 14, 2, 95, 52, 107, 35,
-			6, 138, 35, 6, 34, 36, 113, 0, 0, 0, 0, 11, 2, 95, 57, 50, 6, 40, 35, 36, 113, 0, 0, 10, 2, 95, 56, 35, 6, 91,
-			36, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 11, 2, 222, 135, 6, 35, 55, 37, 83, 40, 0, 0, 10, 2, 222, 134, 49, 6, 118, 83, 40, 0, 0, 15, 2, 222,
-			133, 62, 6, 35, 84, 4, 37, 57, 35, 50, 37, 0, 0, 8, 2, 222, 132, 71, 6, 118, 0, 0, 8, 2, 222, 131, 51, 6, 118, 0,
-			0, 10, 2, 222, 130, 50, 6, 123, 50, 40, 0, 0, 14, 2, 222, 129, 93, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 8, 2, 222,
-			128, 107, 6, 118, 0, 0, 14, 2, 222, 143, 67, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 10, 2, 222, 142, 81, 6, 118, 83, 40,
-			0, 0, 10, 2, 222, 141, 55, 6, 118, 65, 40, 0, 0, 8, 2, 222, 140, 47, 6, 118, 0, 0, 10, 2, 222, 139, 72, 6, 118, 55,
-			40, 0, 0, 10, 2, 222, 138, 83, 6, 118, 83, 40, 0, 0, 10, 2, 222, 137, 65, 6, 112, 65, 40, 0, 0, 10, 2, 222, 136, 84,
-			6, 118, 84, 40, 0, 0, 14, 2, 222, 151, 76, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 14, 2, 222, 150, 75, 6, 35, 84, 37,
-			57, 35, 50, 37, 0, 0, 14, 2, 222, 149, 48, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 8, 2, 222, 148, 57, 6, 118, 0, 0,
-			14, 2, 222, 147, 140, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 14, 2, 222, 146, 88, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0,
-			14, 2, 222, 145, 141, 6, 35, 84, 37, 57, 35, 50, 37, 0, 0, 10, 2, 222, 144, 89, 6, 112, 50, 40, 0, 0, 10, 2, 222, 159,
-			72, 6, 118, 72, 40, 0, 0, 10, 2, 222, 158, 89, 6, 118, 72, 40, 0, 0, 10, 2, 222, 157, 91, 6, 112, 50, 40, 0, 0, 8,
-			2, 222, 156, 88, 6, 118, 0, 0, 10, 2, 222, 155, 86, 6, 118, 55, 40, 0, 0, 8, 2, 222, 154, 101, 6, 118, 0, 0, 9, 2,
-			222, 153, 107, 107, 6, 118, 0, 0, 8, 2, 222, 152, 87, 6, 118, 0, 0, 15, 2, 222, 167, 6, 118, 71, 118, 15, 83, 4, 37, 55,
-			37, 0, 0, 15, 2, 222, 166, 6, 35, 71, 35, 15, 83, 4, 37, 55, 37, 0, 0, 10, 2, 222, 165, 58, 6, 118, 84, 40, 0, 0,
-			10, 2, 222, 164, 104, 6, 118, 83, 40, 0, 0, 11, 2, 222, 163, 100, 35, 6, 37, 50, 40, 0, 0, 10, 2, 222, 162, 35, 6, 37,
-			50, 40, 0, 0, 8, 2, 222, 161, 88, 6, 39, 0, 0, 8, 2, 222, 160, 47, 6, 39, 0, 0, 15, 2, 222, 175, 6, 119, 71, 119,
-			15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 174, 6, 39, 71, 39, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 173, 6, 114,
-			71, 114, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 172, 6, 36, 71, 36, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 171,
-			6, 123, 71, 123, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 170, 6, 40, 71, 40, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2,
-			222, 169, 6, 112, 71, 112, 15, 83, 4, 37, 55, 37, 0, 0, 15, 2, 222, 168, 6, 37, 71, 37, 15, 83, 4, 37, 55, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 15, 2, 222, 177, 50, 6, 35, 15, 84, 37, 57, 35, 50, 37, 0, 0, 11, 2, 222, 176, 89, 6, 40, 49,
-			40, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 1, 1, 0, 3, 107, 0, 7, 6, 1, 2, 0, 3, 93, 0, 7, 6, 1, 3, 0, 3, 50, 0, 222, 176, 2, 222, 130, 3, 50,
-			50, 0, 222, 176, 2, 222, 137, 3, 65, 65, 0, 222, 176, 2, 222, 143, 3, 67, 67, 0, 7, 6, 1, 4, 0, 3, 51, 0, 7, 6,
-			1, 5, 0, 3, 71, 0, 7, 6, 1, 6, 0, 3, 62, 0, 7, 6, 1, 7, 0, 3, 49, 0, 7, 6, 1, 8, 0, 3, 0, 222,
-			176, 2, 32, 3, 36, 107, 0, 222, 176, 2, 222, 140, 3, 47, 0, 222, 176, 2, 222, 149, 3, 48, 0, 222, 176, 2, 222, 134, 3, 49,
-			0, 222, 176, 2, 222, 130, 3, 50, 0, 222, 176, 2, 222, 131, 3, 51, 0, 222, 176, 2, 222, 141, 3, 55, 0, 222, 176, 2, 222, 148,
-			3, 57, 0, 222, 176, 2, 222, 133, 3, 62, 0, 222, 176, 2, 222, 137, 3, 65, 0, 222, 176, 2, 222, 143, 3, 68, 0, 222, 176, 2,
-			222, 132, 3, 71, 0, 222, 176, 2, 222, 139, 3, 72, 0, 222, 176, 2, 222, 150, 3, 75, 0, 222, 176, 2, 222, 151, 3, 76, 0, 222,
-			176, 2, 222, 142, 3, 81, 0, 222, 176, 2, 222, 134, 3, 84, 0, 222, 176, 2, 222, 146, 3, 88, 0, 222, 176, 2, 222, 144, 3, 89,
-			0, 222, 176, 2, 222, 156, 3, 90, 0, 222, 176, 2, 222, 128, 3, 93, 0, 4, 222, 176, 2, 222, 128, 3, 107, 0, 222, 176, 2, 222,
-			129, 0, 222, 176, 2, 222, 147, 3, 140, 0, 222, 176, 2, 222, 145, 3, 141, 0, 7, 6, 1, 9, 0, 3, 84, 0, 7, 6, 1, 10,
-			0, 3, 65, 0, 7, 6, 1, 11, 0, 3, 83, 0, 7, 6, 1, 12, 0, 3, 72, 0, 7, 6, 1, 13, 0, 3, 47, 0, 7, 6,
-			1, 14, 0, 3, 55, 0, 7, 6, 1, 15, 0, 3, 81, 0, 7, 6, 1, 16, 0, 3, 67, 0, 7, 6, 1, 17, 0, 3, 89, 0,
-			7, 6, 1, 18, 0, 3, 141, 0, 7, 6, 1, 19, 0, 3, 88, 0, 7, 6, 1, 20, 0, 3, 140, 0, 7, 6, 1, 21, 0, 3,
-			57, 0, 7, 6, 1, 22, 0, 3, 48, 0, 7, 6, 1, 23, 0, 3, 75, 0, 7, 6, 1, 24, 0, 3, 76, 0, 7, 6, 1, 25,
-			0, 3, 87, 0, 7, 6, 1, 26, 0, 3, 107, 0, 7, 6, 1, 27, 0, 3, 101, 0, 7, 6, 1, 28, 0, 3, 86, 0, 7, 6,
-			1, 29, 0, 3, 90, 0, 7, 6, 1, 30, 0, 3, 91, 0, 7, 6, 1, 31, 0, 3, 89, 0, 7, 6, 1, 32, 0, 3, 72, 0,
-			7, 6, 1, 33, 0, 3, 47, 0, 7, 6, 1, 34, 0, 3, 88, 0, 7, 6, 1, 35, 0, 3, 19, 0, 7, 6, 1, 36, 0, 3,
-			100, 0, 7, 6, 1, 37, 0, 3, 104, 0, 7, 6, 1, 38, 0, 3, 58, 0, 7, 6, 1, 39, 0, 3, 35, 0, 7, 6, 1, 40,
-			0, 3, 118, 0, 7, 6, 1, 41, 0, 3, 37, 0, 7, 6, 1, 42, 0, 3, 112, 0, 7, 6, 1, 43, 0, 3, 40, 0, 7, 6,
-			1, 44, 0, 3, 123, 0, 7, 6, 1, 45, 0, 3, 36, 0, 7, 6, 1, 46, 0, 3, 114, 0, 7, 6, 1, 47, 0, 3, 39, 0,
-			7, 6, 1, 48, 0, 3, 119, 0, 7, 6, 1, 49, 0, 3, 0, 7, 6, 1, 50, 0, 3, 66, 0, 7, 6, 0, 36, 3, 72, 39,
-			55, 35, 51, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts12 = FileInMemory_createWithData (3606, reinterpret_cast<const char *> (&espeakdata_dicts12_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/dv_dict", 
-			U"dv");
-		Collection_addItem (me.peek(), espeakdata_dicts12.transfer());
+		my addItem_move (espeakdata_dicts12.move());
 
 		static unsigned char espeakdata_dicts13_data[5352] = {
 			0, 4, 0, 0, 19, 16, 0, 0, 0, 0, 0, 0, 13, 138, 206, 181, 206, 175, 207, 135, 206, 177, 206, 189, 72, 0, 0, 0, 0, 17,
 			142, 206, 174, 207, 131, 206, 177, 207, 131, 207, 132, 206, 177, 206, 189, 72, 17, 142, 206, 174, 206, 188, 206, 177, 207, 131, 207, 132, 206, 177,
 			206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 140, 207, 132, 206, 185, 8, 10, 134, 207, 140, 207, 132, 206,
-			185, 72, 8, 0, 0, 0, 0, 0, 9, 134, 206, 188, 206, 177, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 51, 88, 15,
-			47, 34, 37, 35, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 12, 1, 36, 86, 39, 55, 6, 35, 34, 37, 35, 0, 0, 14,
-			1, 37, 47, 37, 89, 36, 49, 35, 47, 6, 39, 0, 27, 0, 0, 0, 0, 0, 9, 134, 207, 132, 207, 137, 206, 189, 72, 9, 1, 42,
-			36, 48, 37, 0, 72, 27, 0, 9, 1, 43, 89, 37, 50, 0, 72, 27, 0, 11, 136, 207, 131, 207, 132, 207, 137, 206, 189, 72, 0, 9,
-			1, 45, 65, 6, 37, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 206, 188, 206, 185, 206, 177, 207, 130,
-			72, 0, 0, 0, 0, 9, 1, 61, 37, 89, 39, 50, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 206,
-			181, 206, 175, 206, 188, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 206, 185,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 67, 15, 36, 49, 35, 47, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 4, 95, 49, 77, 49, 99, 6, 37, 61, 35, 0, 0, 22, 4, 95, 49, 77, 50, 6, 36, 50, 35, 36, 49, 35,
-			47, 39, 65, 6, 37, 34, 37, 39, 0, 0, 25, 4, 95, 49, 77, 51, 6, 36, 50, 35, 86, 37, 89, 36, 49, 35, 47, 39, 65, 6,
-			37, 34, 37, 39, 0, 0, 0, 0, 0, 12, 6, 206, 186, 206, 177, 206, 185, 49, 36, 0, 72, 0, 0, 0, 0, 0, 0, 11, 136, 206,
-			174, 207, 132, 206, 177, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 67, 48, 36, 49, 35, 47, 6, 39, 0, 0, 0, 0, 0,
-			0, 0, 0, 17, 4, 95, 50, 67, 15, 86, 38, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			13, 138, 206, 184, 206, 177, 206, 173, 207, 135, 207, 137, 72, 0, 0, 0, 15, 140, 206, 181, 207, 128, 206, 181, 206, 185, 206, 180, 206, 174,
-			8, 0, 9, 134, 207, 131, 206, 191, 207, 133, 72, 0, 0, 7, 132, 206, 189, 206, 177, 72, 7, 132, 206, 189, 206, 177, 72, 0, 0, 15,
-			4, 95, 49, 49, 15, 36, 50, 86, 6, 36, 49, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			18, 4, 95, 51, 67, 15, 47, 34, 38, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 13, 4, 95, 4, 16, 20, 10, 49, 6, 39, 65,
-			35, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 48, 15, 86, 6, 36, 49, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 132, 207, 132, 206, 183, 72, 0, 0, 9, 134, 207, 131, 207, 132, 206, 183, 72, 7, 132, 207, 132, 206, 177, 72, 0, 0, 9, 134, 207,
-			131, 207, 132, 206, 177, 72, 13, 138, 206, 181, 206, 175, 207, 131, 207, 132, 206, 181, 72, 0, 0, 15, 140, 206, 181, 206, 175, 207, 135, 206,
-			177, 206, 188, 206, 181, 72, 15, 140, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206, 181, 72, 0, 0, 17, 142, 206, 189, 206, 177, 206,
-			181, 206, 175, 207, 131, 207, 132, 206, 181, 72, 7, 132, 207, 132, 206, 191, 72, 15, 4, 95, 49, 50, 15, 86, 39, 86, 6, 36, 49, 35,
-			47, 0, 0, 0, 9, 134, 207, 131, 207, 132, 206, 191, 72, 19, 144, 206, 189, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206,
-			181, 72, 0, 0, 10, 134, 206, 181, 206, 172, 206, 189, 72, 8, 0, 0, 0, 0, 0, 18, 5, 95, 50, 77, 49, 15, 86, 37, 89, 99,
-			37, 61, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 206, 186, 206, 191, 206, 189, 207, 132, 206, 172, 28,
-			0, 9, 134, 207, 128, 206, 191, 207, 133, 72, 0, 0, 0, 0, 0, 0, 0, 13, 138, 206, 173, 207, 135, 206, 181, 207, 132, 206, 181, 72,
-			0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206, 173, 207, 135, 206, 181, 207, 132, 206, 181, 72, 17, 142, 206, 184, 206, 177, 206, 181, 206,
-			175, 207, 131, 207, 132, 206, 181, 72, 0, 0, 0, 0, 21, 146, 206, 184, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 207, 131, 207, 132,
-			206, 181, 72, 0, 0, 0, 0, 13, 138, 206, 180, 206, 185, 207, 140, 207, 132, 206, 185, 8, 19, 4, 95, 52, 67, 15, 47, 36, 47, 34,
-			35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 15, 5, 95, 48, 77, 49, 15, 99, 37, 61, 39, 89, 47, 6, 0, 0,
-			0, 0, 18, 4, 95, 55, 88, 15, 36, 84, 86, 39, 65, 37, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 11, 136, 207, 128, 207,
-			129, 206, 191, 207, 130, 28, 0, 0, 11, 6, 95, 35, 206, 191, 207, 130, 39, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 207, 131, 206, 177, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 9, 134, 207, 131, 206, 177, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 15, 48, 34, 6, 39,
-			47, 0, 0, 0, 0, 7, 132, 206, 191, 206, 185, 72, 11, 3, 226, 130, 172, 36, 84, 34, 6, 39, 0, 0, 0, 0, 0, 0, 13, 3,
-			95, 50, 15, 86, 6, 36, 83, 47, 36, 34, 0, 0, 13, 138, 206, 181, 206, 175, 207, 131, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17,
-			142, 206, 189, 206, 177, 206, 181, 206, 175, 207, 131, 206, 177, 206, 185, 72, 18, 4, 95, 53, 67, 15, 48, 36, 72, 35, 49, 39, 95, 39,
-			89, 47, 6, 0, 0, 0, 0, 11, 3, 95, 51, 15, 47, 34, 6, 37, 47, 0, 9, 4, 95, 15, 18, 4, 39, 89, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 6, 47, 34, 6, 37, 89, 0, 0, 0, 0, 0, 15, 140, 207, 128, 206, 177, 207, 129, 207,
-			140, 206, 187, 206, 191, 8, 8, 4, 95, 35, 206, 183, 37, 0, 0, 0, 0, 12, 3, 95, 53, 15, 48, 6, 36, 65, 48, 47, 0, 0,
-			14, 3, 95, 52, 6, 47, 6, 36, 89, 36, 34, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 54, 15, 6, 36, 49, 47,
-			0, 0, 0, 0, 19, 144, 206, 184, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206, 181, 72, 0, 0, 0, 0, 0, 12, 3,
-			95, 55, 15, 6, 36, 84, 86, 39, 65, 0, 0, 0, 0, 0, 0, 8, 4, 95, 35, 206, 191, 39, 0, 0, 0, 0, 14, 3, 95, 48,
-			15, 65, 37, 86, 36, 50, 37, 49, 6, 0, 0, 0, 0, 14, 3, 95, 51, 88, 47, 34, 37, 6, 35, 50, 72, 35, 0, 0, 14, 3,
-			95, 48, 67, 36, 49, 35, 47, 6, 39, 50, 10, 0, 0, 0, 0, 0, 11, 3, 95, 57, 15, 6, 36, 50, 35, 47, 0, 0, 9, 134,
-			206, 173, 207, 135, 207, 137, 72, 0, 0, 0, 14, 3, 95, 49, 67, 36, 49, 35, 47, 6, 39, 50, 10, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 15, 3, 95, 50, 67, 86, 38, 35, 49, 6, 39, 95, 35, 10, 0, 0, 18, 4, 95, 54, 67, 15, 36, 49, 89, 35, 49, 39,
-			95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 49, 6, 36, 50, 86, 36, 49, 35, 0, 0, 0, 16, 3, 95, 51,
-			67, 47, 34, 37, 35, 49, 6, 39, 95, 35, 10, 0, 0, 13, 4, 95, 49, 88, 15, 86, 6, 36, 49, 35, 47, 0, 13, 3, 95, 49,
-			50, 86, 6, 39, 86, 36, 49, 35, 0, 0, 0, 0, 13, 3, 95, 52, 15, 47, 6, 36, 47, 35, 34, 47, 0, 0, 9, 134, 206, 188,
-			206, 191, 207, 133, 72, 0, 0, 16, 3, 95, 55, 88, 36, 71, 72, 39, 65, 6, 37, 50, 72, 35, 0, 0, 17, 3, 95, 52, 67, 47,
-			36, 47, 34, 35, 49, 6, 39, 95, 35, 10, 0, 0, 13, 6, 207, 129, 206, 185, 206, 177, 34, 100, 38, 35, 0, 0, 0, 0, 0, 9,
-			134, 206, 173, 206, 189, 206, 177, 72, 0, 0, 0, 17, 3, 95, 53, 67, 48, 36, 50, 72, 35, 49, 6, 39, 95, 35, 10, 0, 0, 0,
-			0, 0, 0, 0, 0, 11, 3, 95, 49, 88, 86, 6, 36, 49, 35, 0, 0, 16, 3, 95, 54, 67, 36, 49, 89, 35, 49, 6, 39, 95,
-			35, 10, 0, 0, 17, 142, 206, 184, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 189, 72, 0, 0, 0, 0, 0, 0, 12, 3, 95,
-			50, 88, 6, 37, 49, 39, 89, 37, 0, 0, 16, 3, 95, 55, 67, 36, 48, 47, 35, 49, 6, 39, 95, 35, 10, 0, 0, 0, 0, 0,
-			11, 3, 95, 56, 15, 6, 39, 100, 86, 39, 0, 0, 0, 0, 0, 16, 3, 95, 56, 67, 39, 49, 47, 35, 49, 6, 39, 95, 35, 10,
-			0, 0, 0, 0, 0, 0, 9, 134, 206, 188, 206, 175, 206, 177, 72, 0, 0, 14, 3, 95, 52, 88, 89, 35, 34, 6, 35, 50, 72, 35,
-			0, 0, 17, 142, 206, 184, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 207, 130, 72, 15, 3, 95, 57, 67, 36, 67, 35, 49, 6, 39,
-			95, 35, 10, 0, 0, 0, 0, 0, 12, 136, 207, 128, 206, 177, 207, 129, 206, 172, 72, 28, 0, 13, 138, 206, 174, 207, 131, 206, 191, 207,
-			133, 206, 189, 72, 0, 0, 14, 3, 95, 53, 88, 48, 36, 50, 6, 37, 50, 72, 35, 0, 0, 0, 13, 138, 206, 188, 206, 173, 207, 135,
-			207, 129, 206, 185, 28, 18, 4, 95, 55, 67, 15, 36, 48, 47, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 14,
-			3, 95, 54, 88, 36, 49, 89, 6, 37, 50, 72, 35, 0, 0, 0, 13, 4, 95, 50, 88, 15, 37, 49, 39, 89, 47, 6, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 56, 88, 39, 81, 72, 6, 39, 50, 72, 35, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 3, 95, 57, 88, 36, 50, 36, 50, 6, 37, 50, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 9, 134, 206, 181, 207, 128, 206, 175, 72, 0, 0, 9, 134, 207, 132, 206, 191, 207, 133, 72, 13, 138, 206, 173, 207, 135, 206, 191, 207,
-			133, 206, 189, 72, 13, 138, 206, 174, 206, 188, 206, 191, 207, 133, 206, 189, 72, 9, 134, 207, 132, 206, 191, 207, 133, 72, 0, 0, 11, 136,
-			207, 131, 207, 132, 206, 191, 207, 133, 72, 0, 0, 17, 142, 206, 189, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 189, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 56, 67, 15, 39, 49, 47, 35, 49, 39, 95, 39, 89, 47, 6,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 48, 77, 50, 36, 49, 35, 47, 39, 65, 6, 37, 34, 37, 35, 0,
-			0, 21, 4, 95, 48, 77, 51, 86, 37, 89, 36, 49, 35, 47, 39, 65, 6, 37, 34, 37, 35, 0, 0, 0, 15, 4, 95, 48, 77, 49,
-			99, 37, 61, 6, 35, 86, 36, 89, 0, 0, 0, 0, 0, 7, 132, 207, 131, 206, 181, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 9, 134, 207, 132, 206, 191, 206, 189, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 191, 206, 189, 72, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 206, 188, 206, 185, 206, 177, 65, 67, 35, 0, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 57, 67, 15, 36, 50, 36, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 19, 4, 95, 52, 88, 15, 47, 36, 89, 89, 35, 34, 35, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 136, 206, 177, 206, 187, 206, 187, 206, 172, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 136, 206, 188, 206, 173,
-			207, 131, 206, 177, 72, 28, 15, 140, 206, 181, 206, 175, 207, 135, 206, 177, 207, 132, 206, 181, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 185, 207, 130, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 185, 207, 130, 72, 0, 0,
-			0, 13, 138, 206, 179, 206, 185, 206, 177, 207, 132, 206, 175, 8, 0, 11, 136, 207, 132, 206, 191, 207, 133, 207, 130, 72, 11, 136, 207, 132,
-			206, 191, 207, 133, 207, 130, 72, 0, 0, 13, 138, 207, 131, 207, 132, 206, 191, 207, 133, 207, 130, 72, 0, 0, 0, 0, 0, 8, 132, 206,
-			188, 206, 181, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 136, 206, 188, 206, 177, 206, 182, 206, 175, 72, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 4, 95, 53, 88, 15, 48, 36, 72, 37, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 173, 207, 135, 206, 181, 207, 132, 206, 181, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 138, 206, 181, 206, 175, 206, 189, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206,
-			181, 206, 175, 206, 189, 206, 177, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 206, 183, 6, 37, 47, 35, 0, 0, 0, 13,
-			138, 206, 181, 206, 175, 207, 135, 206, 181, 207, 130, 72, 0, 0, 0, 0, 0, 16, 3, 95, 206, 174, 4, 37, 47, 35, 47, 6, 39, 50,
-			39, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 54, 88, 15, 36, 49, 89,
-			37, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 206, 181, 206, 189, 207, 140, 207, 130, 72, 0, 0, 32, 10, 206,
-			181, 206, 186, 207, 132, 207, 140, 207, 130, 36, 49, 47, 6, 39, 89, 36, 4, 35, 50, 0, 8, 81, 206, 181, 206, 172, 206, 189, 32, 0,
-			11, 136, 206, 173, 207, 135, 206, 181, 206, 185, 72, 0, 22, 12, 206, 188, 206, 185, 206, 181, 207, 129, 207, 140, 207, 130, 65, 37, 36, 34,
-			6, 39, 89, 0, 0, 0, 0, 15, 140, 206, 189, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 19, 5, 95, 51, 77, 49, 15, 47, 34, 37, 89, 99, 37, 61, 39, 89, 47, 6, 0, 0, 0, 0, 0, 7, 2, 207, 134,
-			83, 37, 0, 15, 5, 95, 49, 77, 49, 15, 99, 37, 61, 39, 89, 47, 6, 0, 0, 7, 2, 207, 135, 99, 37, 0, 0, 8, 2, 207,
-			132, 47, 35, 83, 0, 14, 3, 95, 206, 191, 6, 39, 65, 37, 49, 34, 39, 50, 0, 0, 13, 2, 207, 133, 6, 37, 48, 89, 37, 55,
-			39, 50, 0, 0, 11, 2, 207, 130, 89, 6, 37, 100, 65, 35, 0, 0, 11, 2, 207, 131, 89, 6, 37, 100, 65, 35, 0, 0, 7, 2,
-			207, 128, 48, 37, 0, 7, 132, 206, 181, 206, 186, 72, 0, 7, 2, 207, 129, 51, 39, 0, 0, 0, 17, 2, 207, 142, 39, 65, 4, 36,
-			100, 35, 47, 6, 39, 50, 39, 89, 0, 0, 19, 2, 207, 141, 4, 37, 48, 89, 37, 55, 39, 50, 47, 6, 39, 50, 39, 89, 0, 0,
-			19, 2, 207, 140, 4, 39, 65, 37, 49, 34, 39, 50, 47, 6, 39, 50, 39, 89, 0, 0, 13, 2, 207, 139, 6, 37, 48, 89, 37, 55,
-			39, 50, 0, 0, 10, 2, 207, 138, 37, 6, 39, 47, 35, 0, 0, 11, 2, 207, 137, 39, 65, 6, 36, 100, 35, 0, 0, 8, 2, 207,
-			136, 48, 89, 37, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 206, 189, 206, 177, 206, 185, 72, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 206, 175, 37, 4, 39, 47, 35, 47, 6, 39, 50, 39, 89, 0, 0, 16, 2, 206, 174,
-			4, 37, 47, 35, 47, 6, 39, 50, 39, 89, 0, 14, 6, 130, 206, 174, 72, 8, 0, 19, 2, 206, 173, 4, 36, 48, 89, 37, 55, 39,
-			50, 47, 6, 39, 50, 39, 89, 0, 0, 16, 2, 206, 172, 4, 35, 55, 83, 35, 47, 6, 39, 50, 39, 89, 0, 0, 0, 0, 0, 0,
-			10, 2, 206, 183, 6, 37, 47, 35, 0, 14, 7, 2, 206, 183, 37, 0, 72, 0, 9, 2, 206, 182, 88, 37, 47, 35, 0, 0, 13, 2,
-			206, 181, 6, 36, 48, 89, 37, 55, 39, 50, 0, 0, 10, 2, 206, 180, 86, 36, 55, 47, 35, 0, 0, 9, 2, 206, 179, 100, 35, 65,
-			35, 0, 0, 11, 2, 95, 46, 47, 36, 55, 6, 37, 35, 0, 9, 2, 206, 178, 84, 37, 47, 35, 0, 13, 138, 206, 173, 207, 135, 206,
-			181, 206, 185, 207, 130, 72, 11, 2, 95, 46, 47, 36, 55, 6, 37, 35, 0, 0, 9, 2, 206, 177, 35, 55, 83, 35, 0, 0, 10, 2,
-			95, 44, 49, 6, 39, 65, 35, 0, 19, 2, 206, 176, 4, 37, 48, 89, 37, 55, 39, 50, 47, 6, 39, 50, 39, 89, 0, 0, 14, 2,
-			206, 191, 6, 39, 65, 37, 49, 34, 39, 50, 0, 14, 11, 136, 206, 181, 206, 175, 207, 135, 206, 181, 72, 7, 2, 206, 191, 39, 0, 72,
-			10, 2, 95, 51, 47, 34, 6, 37, 35, 0, 0, 8, 2, 206, 190, 49, 89, 37, 0, 17, 142, 206, 189, 206, 177, 206, 173, 207, 135, 206,
-			181, 206, 185, 207, 130, 72, 9, 2, 95, 50, 86, 6, 37, 39, 0, 0, 7, 2, 206, 189, 50, 37, 0, 9, 2, 95, 49, 6, 36, 50,
-			35, 0, 0, 7, 2, 206, 188, 65, 37, 0, 11, 2, 95, 48, 65, 37, 86, 6, 36, 50, 0, 0, 10, 2, 206, 187, 55, 35, 65, 86,
-			35, 0, 11, 136, 206, 181, 206, 175, 207, 135, 206, 177, 72, 10, 2, 95, 55, 36, 48, 47, 6, 35, 0, 0, 9, 2, 206, 186, 49, 35,
-			48, 35, 0, 10, 2, 95, 54, 6, 36, 49, 89, 37, 0, 0, 10, 2, 206, 185, 37, 6, 39, 47, 35, 0, 11, 2, 95, 53, 48, 6,
-			36, 50, 47, 36, 0, 0, 9, 2, 206, 184, 87, 37, 47, 35, 0, 12, 2, 95, 52, 47, 6, 36, 89, 36, 34, 35, 0, 0, 0, 0,
-			10, 2, 95, 57, 36, 50, 6, 36, 35, 0, 0, 10, 2, 95, 56, 39, 49, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 206, 177, 207, 128, 207, 140, 72, 0, 0, 0, 21, 6, 206, 179, 206, 185, 206,
-			177, 57, 35, 50, 6, 35, 0, 72, 81, 206, 189, 206, 177, 32, 9, 134, 206, 179, 206, 185, 206, 177, 8, 0, 0, 0, 0, 11, 136, 207,
-			128, 206, 181, 207, 129, 206, 175, 28, 0, 10, 134, 206, 180, 206, 185, 206, 172, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			16, 4, 95, 56, 88, 15, 39, 100, 86, 120, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			15, 140, 206, 184, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 72, 0, 0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 206, 188, 206,
-			177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 181, 206, 175, 206, 188, 206, 177, 207, 131, 207, 132, 206, 181, 72, 0, 0, 0, 0, 21,
-			146, 206, 189, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 207, 131, 207, 132, 206, 181, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 134, 206, 181, 206, 185, 207, 130, 72, 28, 0, 0, 0, 7, 132, 206, 184, 206, 177, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 57, 88, 15, 36, 50, 36, 50, 37, 49, 39,
-			89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 183, 207, 130, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 183,
-			207, 130, 72, 11, 136, 206, 188, 206, 175, 206, 177, 207, 130, 72, 11, 136, 206, 173, 206, 189, 206, 177, 207, 130, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 183,
-			206, 189, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 183, 206, 189, 72, 11, 136, 206, 173, 206, 189, 206, 177, 206, 189, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 132, 206, 177, 206,
+			185, 72, 8, 0, 13, 4, 95, 100, 112, 116, 10, 49, 6, 39, 65, 35, 0, 0, 0, 0, 0, 9, 134, 206, 188, 206, 177, 207, 130, 72,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 36, 86, 39, 55, 6, 35, 34, 37, 35, 0, 0, 14, 1, 37, 47,
+			37, 89, 36, 49, 35, 47, 6, 39, 0, 27, 0, 0, 0, 0, 0, 9, 134, 207, 132, 207, 137, 206, 189, 72, 9, 1, 42, 36, 48, 37,
+			0, 72, 27, 0, 9, 1, 43, 89, 37, 50, 0, 72, 27, 0, 11, 136, 207, 131, 207, 132, 207, 137, 206, 189, 72, 0, 9, 1, 45, 65,
+			6, 37, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 206, 188, 206, 185, 206, 177, 207, 130, 72, 0, 0,
+			0, 0, 9, 1, 61, 37, 89, 39, 50, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 206, 181, 206, 175,
+			206, 188, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 206, 185, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 49, 77, 49, 99, 6, 37, 61, 35, 0, 0, 22,
+			4, 95, 49, 77, 50, 6, 36, 50, 35, 36, 49, 35, 47, 39, 65, 6, 37, 34, 37, 39, 0, 0, 25, 4, 95, 49, 77, 51, 6, 36,
+			50, 35, 86, 37, 89, 36, 49, 35, 47, 39, 65, 6, 37, 34, 37, 39, 0, 0, 0, 0, 0, 12, 6, 206, 186, 206, 177, 206, 185, 49,
+			36, 0, 72, 0, 0, 0, 0, 0, 0, 11, 136, 206, 174, 207, 132, 206, 177, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 51, 88, 111, 47, 34, 37, 35, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 67, 48, 36, 49, 35, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			9, 4, 95, 111, 114, 100, 39, 89, 0, 0, 0, 0, 15, 4, 95, 49, 67, 111, 36, 49, 35, 47, 39, 89, 47, 6, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 138, 206, 184, 206, 177, 206, 173, 207, 135, 207, 137, 72, 0, 0, 0, 15, 140, 206, 181, 207, 128, 206, 181, 206,
+			185, 206, 180, 206, 174, 8, 0, 9, 134, 207, 131, 206, 191, 207, 133, 72, 0, 0, 7, 132, 206, 189, 206, 177, 72, 7, 132, 206, 189, 206,
+			177, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 132, 207, 132, 206, 183, 72, 0, 0, 9, 134, 207, 131, 207, 132, 206, 183, 72, 7, 132, 207, 132, 206, 177,
+			72, 0, 0, 9, 134, 207, 131, 207, 132, 206, 177, 72, 13, 138, 206, 181, 206, 175, 207, 131, 207, 132, 206, 181, 72, 0, 0, 15, 140, 206,
+			181, 206, 175, 207, 135, 206, 177, 206, 188, 206, 181, 72, 15, 140, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206, 181, 72, 0, 0, 17,
+			142, 206, 189, 206, 177, 206, 181, 206, 175, 207, 131, 207, 132, 206, 181, 72, 7, 132, 207, 132, 206, 191, 72, 0, 0, 9, 134, 207, 131, 207,
+			132, 206, 191, 72, 19, 144, 206, 189, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206, 181, 72, 0, 0, 10, 134, 206, 181, 206,
+			172, 206, 189, 72, 8, 0, 0, 0, 0, 17, 4, 95, 50, 67, 111, 86, 38, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 138, 206, 186, 206, 191, 206, 189, 207, 132, 206, 172, 28, 0, 9, 134, 207, 128, 206, 191, 207, 133, 72,
+			0, 0, 0, 0, 0, 0, 0, 13, 138, 206, 173, 207, 135, 206, 181, 207, 132, 206, 181, 72, 0, 0, 0, 0, 17, 142, 206, 189, 206, 177,
+			206, 173, 207, 135, 206, 181, 207, 132, 206, 181, 72, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 207, 131, 207, 132, 206, 181, 72, 0, 0,
+			0, 0, 21, 146, 206, 184, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 207, 131, 207, 132, 206, 181, 72, 0, 0, 0, 0, 13, 138, 206,
+			180, 206, 185, 207, 140, 207, 132, 206, 185, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 207, 128, 207, 129, 206,
+			191, 207, 130, 28, 0, 0, 11, 6, 95, 35, 206, 191, 207, 130, 39, 89, 0, 0, 15, 4, 95, 49, 49, 111, 36, 50, 86, 6, 36, 49,
+			35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 207,
+			131, 206, 177, 206, 185, 72, 18, 4, 95, 51, 67, 111, 47, 34, 38, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 4, 95, 49, 48, 111, 86, 6, 36, 49, 35, 47, 0, 0, 0, 0, 9, 134, 207, 131, 206, 177, 207, 130, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 206, 191, 206, 185, 72, 11, 3, 226, 130, 172, 36, 84, 34, 6, 39, 0, 0, 0, 15, 4,
+			95, 49, 50, 111, 86, 39, 86, 6, 36, 49, 35, 47, 0, 0, 0, 0, 0, 13, 138, 206, 181, 206, 175, 207, 131, 206, 177, 206, 185, 72,
+			0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206, 181, 206, 175, 207, 131, 206, 177, 206, 185, 72, 0, 18, 5, 95, 50, 77, 49, 111, 86,
+			37, 89, 99, 37, 61, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 207, 128, 206,
+			177, 207, 129, 207, 140, 206, 187, 206, 191, 8, 8, 4, 95, 35, 206, 183, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 19, 144, 206, 184, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 188, 206, 181, 72, 0, 0, 19, 4, 95, 52, 67, 111, 47,
+			36, 47, 34, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 15, 5, 95, 48, 77, 49, 111, 99, 37, 61, 39, 89, 47,
+			6, 0, 0, 0, 0, 18, 4, 95, 55, 88, 111, 36, 84, 86, 39, 65, 37, 49, 39, 89, 47, 6, 0, 8, 4, 95, 35, 206, 191, 39,
+			0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 51, 88, 47, 34, 37, 6, 35, 50, 72, 35, 0, 0, 14, 3, 95, 48, 67, 36, 49, 35,
+			47, 6, 39, 50, 10, 0, 0, 0, 0, 0, 0, 9, 134, 206, 173, 207, 135, 207, 137, 72, 0, 0, 0, 14, 3, 95, 49, 67, 36, 49,
+			35, 47, 6, 39, 50, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 50, 67, 86, 38, 35, 49, 6, 39, 95, 35, 10, 0,
+			0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 49, 6, 36, 50, 86, 36, 49, 35, 0, 0, 0, 16, 3, 95, 51, 67, 47, 34, 37, 35,
+			49, 6, 39, 95, 35, 10, 0, 0, 13, 3, 95, 49, 50, 86, 6, 39, 86, 36, 49, 35, 0, 0, 0, 0, 0, 9, 134, 206, 188, 206,
+			191, 207, 133, 72, 0, 0, 16, 3, 95, 55, 88, 36, 71, 72, 39, 65, 6, 37, 50, 72, 35, 0, 0, 17, 3, 95, 52, 67, 47, 36,
+			47, 34, 35, 49, 6, 39, 95, 35, 10, 0, 0, 13, 6, 207, 129, 206, 185, 206, 177, 34, 100, 38, 35, 0, 0, 0, 0, 11, 3, 95,
+			49, 111, 48, 34, 6, 39, 47, 0, 0, 9, 134, 206, 173, 206, 189, 206, 177, 72, 0, 0, 0, 17, 3, 95, 53, 67, 48, 36, 50, 72,
+			35, 49, 6, 39, 95, 35, 10, 0, 0, 0, 0, 0, 13, 3, 95, 50, 111, 86, 6, 36, 83, 47, 36, 34, 0, 0, 0, 0, 11, 3,
+			95, 49, 88, 86, 6, 36, 49, 35, 0, 0, 16, 3, 95, 54, 67, 36, 49, 89, 35, 49, 6, 39, 95, 35, 10, 0, 0, 17, 142, 206,
+			184, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 189, 72, 18, 4, 95, 53, 67, 111, 48, 36, 72, 35, 49, 39, 95, 39, 89, 47,
+			6, 0, 0, 0, 0, 11, 3, 95, 51, 111, 47, 34, 6, 37, 47, 0, 0, 0, 0, 12, 3, 95, 50, 88, 6, 37, 49, 39, 89, 37,
+			0, 0, 16, 3, 95, 55, 67, 36, 48, 47, 35, 49, 6, 39, 95, 35, 10, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 102, 47, 34,
+			6, 37, 89, 0, 0, 0, 0, 16, 3, 95, 56, 67, 39, 49, 47, 35, 49, 6, 39, 95, 35, 10, 0, 0, 0, 0, 0, 12, 3, 95,
+			53, 111, 48, 6, 36, 65, 48, 47, 0, 0, 9, 134, 206, 188, 206, 175, 206, 177, 72, 14, 3, 95, 52, 102, 47, 6, 36, 89, 36, 34,
+			37, 89, 0, 0, 0, 14, 3, 95, 52, 88, 89, 35, 34, 6, 35, 50, 72, 35, 0, 0, 17, 142, 206, 184, 206, 177, 206, 173, 207, 135,
+			206, 181, 206, 185, 207, 130, 72, 15, 3, 95, 57, 67, 36, 67, 35, 49, 6, 39, 95, 35, 10, 0, 0, 0, 0, 0, 12, 136, 207, 128,
+			206, 177, 207, 129, 206, 172, 72, 28, 10, 3, 95, 54, 111, 6, 36, 49, 47, 0, 0, 13, 138, 206, 174, 207, 131, 206, 191, 207, 133, 206,
+			189, 72, 0, 0, 14, 3, 95, 53, 88, 48, 36, 50, 6, 37, 50, 72, 35, 0, 0, 0, 13, 138, 206, 188, 206, 173, 207, 135, 207, 129,
+			206, 185, 28, 0, 0, 0, 12, 3, 95, 55, 111, 6, 36, 84, 86, 39, 65, 0, 0, 0, 0, 14, 3, 95, 54, 88, 36, 49, 89, 6,
+			37, 50, 72, 35, 0, 0, 0, 0, 0, 0, 14, 3, 95, 48, 111, 65, 37, 86, 36, 50, 37, 49, 6, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 11, 3, 95, 57, 111, 6, 36, 50, 35, 47, 0, 0, 0, 0, 14, 3, 95, 56, 88, 39, 81, 72, 6, 39, 50, 72, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 57, 88, 36, 50, 36, 50, 6, 37, 50, 72, 35, 0, 0, 0, 18, 4, 95, 54, 67,
+			111, 36, 49, 89, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 88, 111, 86, 6, 36,
+			49, 35, 47, 0, 0, 0, 9, 134, 206, 181, 207, 128, 206, 175, 72, 0, 13, 3, 95, 52, 111, 47, 6, 36, 47, 35, 34, 47, 0, 0,
+			9, 134, 207, 132, 206, 191, 207, 133, 72, 13, 138, 206, 173, 207, 135, 206, 191, 207, 133, 206, 189, 72, 13, 138, 206, 174, 206, 188, 206, 191,
+			207, 133, 206, 189, 72, 9, 134, 207, 132, 206, 191, 207, 133, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 191, 207, 133, 72, 0, 0, 17,
+			142, 206, 189, 206, 177, 206, 173, 207, 135, 206, 191, 207, 133, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 56, 111, 6, 39, 100, 86, 39, 0, 18, 4, 95, 48, 77, 50, 36,
+			49, 35, 47, 39, 65, 6, 37, 34, 37, 35, 0, 0, 21, 4, 95, 48, 77, 51, 86, 37, 89, 36, 49, 35, 47, 39, 65, 6, 37, 34,
+			37, 35, 0, 0, 0, 15, 4, 95, 48, 77, 49, 99, 37, 61, 6, 35, 86, 36, 89, 0, 0, 0, 0, 0, 7, 132, 207, 131, 206, 181,
+			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 191, 206, 189, 72, 18, 4, 95, 55, 67, 111,
+			36, 48, 47, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 11, 136, 207, 131, 207, 132, 206, 191, 206, 189, 72, 0, 0, 0, 0, 0,
+			0, 13, 4, 95, 50, 88, 111, 37, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 206, 188,
+			206, 185, 206, 177, 65, 67, 35, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 136, 206, 177, 206, 187, 206, 187, 206, 172, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+			136, 206, 188, 206, 173, 207, 131, 206, 177, 72, 28, 15, 140, 206, 181, 206, 175, 207, 135, 206, 177, 207, 132, 206, 181, 72, 0, 0, 0, 0,
+			0, 0, 18, 4, 95, 56, 67, 111, 39, 49, 47, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+			134, 207, 132, 206, 185, 207, 130, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 185, 207, 130, 72, 0, 0, 0, 13, 138, 206, 179, 206, 185,
+			206, 177, 207, 132, 206, 175, 8, 0, 11, 136, 207, 132, 206, 191, 207, 133, 207, 130, 72, 11, 136, 207, 132, 206, 191, 207, 133, 207, 130, 72,
+			0, 0, 13, 138, 207, 131, 207, 132, 206, 191, 207, 133, 207, 130, 72, 0, 0, 0, 0, 0, 8, 132, 206, 188, 206, 181, 72, 28, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 136, 206, 188, 206, 177, 206, 182, 206, 175, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 173, 207, 135, 206, 181,
+			207, 132, 206, 181, 72, 0, 0, 0, 0, 18, 4, 95, 57, 67, 111, 36, 50, 36, 35, 49, 39, 95, 39, 89, 47, 6, 0, 0, 0, 0,
+			0, 13, 138, 206, 181, 206, 175, 206, 189, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 189, 206, 177, 206, 181, 206, 175, 206, 189,
+			206, 177, 206, 185, 72, 19, 4, 95, 52, 88, 111, 47, 36, 89, 89, 35, 34, 35, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
+			0, 10, 3, 95, 206, 183, 6, 37, 47, 35, 0, 0, 0, 13, 138, 206, 181, 206, 175, 207, 135, 206, 181, 207, 130, 72, 0, 0, 0, 0,
+			0, 16, 3, 95, 206, 174, 4, 37, 47, 35, 47, 6, 39, 50, 39, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 206, 181, 206, 189, 207, 140, 207, 130, 72, 0, 0, 32, 10, 206, 181, 206,
+			186, 207, 132, 207, 140, 207, 130, 36, 49, 47, 6, 39, 89, 36, 4, 35, 50, 0, 8, 81, 206, 181, 206, 172, 206, 189, 32, 0, 11, 136,
+			206, 173, 207, 135, 206, 181, 206, 185, 72, 0, 22, 12, 206, 188, 206, 185, 206, 181, 207, 129, 207, 140, 207, 130, 65, 37, 36, 34, 6, 39,
+			89, 0, 0, 0, 0, 15, 140, 206, 189, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 2, 207, 134, 83, 37, 0, 0, 7, 2, 207, 135, 99, 37, 0, 0, 8, 2, 207, 132, 47, 35, 83, 0, 14,
+			3, 95, 206, 191, 6, 39, 65, 37, 49, 34, 39, 50, 0, 0, 13, 2, 207, 133, 6, 37, 48, 89, 37, 55, 39, 50, 0, 16, 4, 95,
+			53, 88, 111, 48, 36, 72, 37, 49, 39, 89, 47, 6, 0, 0, 11, 2, 207, 130, 89, 6, 37, 100, 65, 35, 0, 0, 11, 2, 207, 131,
+			89, 6, 37, 100, 65, 35, 0, 0, 7, 2, 207, 128, 48, 37, 0, 7, 132, 206, 181, 206, 186, 72, 0, 7, 2, 207, 129, 51, 39, 0,
+			0, 0, 17, 2, 207, 142, 39, 65, 4, 36, 100, 35, 47, 6, 39, 50, 39, 89, 0, 0, 19, 2, 207, 141, 4, 37, 48, 89, 37, 55,
+			39, 50, 47, 6, 39, 50, 39, 89, 0, 0, 19, 2, 207, 140, 4, 39, 65, 37, 49, 34, 39, 50, 47, 6, 39, 50, 39, 89, 0, 0,
+			13, 2, 207, 139, 6, 37, 48, 89, 37, 55, 39, 50, 0, 0, 10, 2, 207, 138, 37, 6, 39, 47, 35, 0, 0, 11, 2, 207, 137, 39,
+			65, 6, 36, 100, 35, 0, 0, 8, 2, 207, 136, 48, 89, 37, 0, 0, 0, 0, 0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 206,
+			189, 206, 177, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 206, 175, 37, 4, 39, 47, 35, 47, 6,
+			39, 50, 39, 89, 0, 0, 16, 2, 206, 174, 4, 37, 47, 35, 47, 6, 39, 50, 39, 89, 0, 49, 6, 130, 206, 174, 72, 8, 0, 19,
+			2, 206, 173, 4, 36, 48, 89, 37, 55, 39, 50, 47, 6, 39, 50, 39, 89, 0, 0, 16, 2, 206, 172, 4, 35, 55, 83, 35, 47, 6,
+			39, 50, 39, 89, 0, 0, 0, 0, 0, 0, 10, 2, 206, 183, 6, 37, 47, 35, 0, 49, 7, 2, 206, 183, 37, 0, 72, 0, 9, 2,
+			206, 182, 88, 37, 47, 35, 0, 0, 13, 2, 206, 181, 6, 36, 48, 89, 37, 55, 39, 50, 0, 0, 10, 2, 206, 180, 86, 36, 55, 47,
+			35, 0, 0, 9, 2, 206, 179, 100, 35, 65, 35, 0, 0, 11, 2, 95, 46, 47, 36, 55, 6, 37, 35, 0, 9, 2, 206, 178, 84, 37,
+			47, 35, 0, 13, 138, 206, 173, 207, 135, 206, 181, 206, 185, 207, 130, 72, 11, 2, 95, 46, 47, 36, 55, 6, 37, 35, 0, 0, 9, 2,
+			206, 177, 35, 55, 83, 35, 0, 0, 10, 2, 95, 44, 49, 6, 39, 65, 35, 0, 19, 2, 206, 176, 4, 37, 48, 89, 37, 55, 39, 50,
+			47, 6, 39, 50, 39, 89, 0, 0, 14, 2, 206, 191, 6, 39, 65, 37, 49, 34, 39, 50, 0, 49, 11, 136, 206, 181, 206, 175, 207, 135,
+			206, 181, 72, 7, 2, 206, 191, 39, 0, 72, 10, 2, 95, 51, 47, 34, 6, 37, 35, 0, 0, 8, 2, 206, 190, 49, 89, 37, 0, 17,
+			142, 206, 189, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 207, 130, 72, 9, 2, 95, 50, 86, 6, 37, 39, 0, 0, 7, 2, 206, 189,
+			50, 37, 0, 9, 2, 95, 49, 6, 36, 50, 35, 0, 0, 7, 2, 206, 188, 65, 37, 0, 11, 2, 95, 48, 65, 37, 86, 6, 36, 50,
+			0, 0, 10, 2, 206, 187, 55, 35, 65, 86, 35, 0, 11, 136, 206, 181, 206, 175, 207, 135, 206, 177, 72, 10, 2, 95, 55, 36, 48, 47,
+			6, 35, 0, 0, 9, 2, 206, 186, 49, 35, 48, 35, 0, 10, 2, 95, 54, 6, 36, 49, 89, 37, 0, 0, 10, 2, 206, 185, 37, 6,
+			39, 47, 35, 0, 11, 2, 95, 53, 48, 6, 36, 50, 47, 36, 0, 0, 9, 2, 206, 184, 87, 37, 47, 35, 0, 12, 2, 95, 52, 47,
+			6, 36, 89, 36, 34, 35, 0, 0, 0, 0, 10, 2, 95, 57, 36, 50, 6, 36, 35, 0, 0, 10, 2, 95, 56, 39, 49, 47, 6, 39,
+			0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 54, 88, 111, 36, 49, 89, 37, 49, 39, 89, 47, 6, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 9, 134, 206, 177, 207, 128, 207, 140, 72, 0, 0, 0, 21, 6, 206, 179, 206, 185, 206, 177, 57, 35, 50,
+			6, 35, 0, 72, 81, 206, 189, 206, 177, 32, 9, 134, 206, 179, 206, 185, 206, 177, 8, 0, 0, 0, 0, 11, 136, 207, 128, 206, 181, 207,
+			129, 206, 175, 28, 0, 10, 134, 206, 180, 206, 185, 206, 172, 72, 28, 0, 0, 0, 0, 19, 5, 95, 51, 77, 49, 111, 47, 34, 37, 89,
+			99, 37, 61, 39, 89, 47, 6, 0, 0, 0, 0, 0, 15, 5, 95, 49, 77, 49, 111, 99, 37, 61, 39, 89, 47, 6, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 206, 184, 206, 177, 206, 173, 207, 135, 206, 181, 206, 185, 72, 0,
+			0, 17, 142, 206, 184, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 206, 185, 72, 0, 0, 0, 0, 17, 142, 206, 181, 206, 175, 206, 188,
+			206, 177, 207, 131, 207, 132, 206, 181, 72, 0, 0, 0, 0, 21, 146, 206, 189, 206, 177, 206, 181, 206, 175, 206, 188, 206, 177, 207, 131, 207,
+			132, 206, 181, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 206, 181, 206, 185, 207, 130, 72, 28, 0,
+			0, 0, 7, 132, 206, 184, 206, 177, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 183, 207, 130, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 183, 207, 130, 72,
+			11, 136, 206, 188, 206, 175, 206, 177, 207, 130, 72, 11, 136, 206, 173, 206, 189, 206, 177, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 56, 88, 111, 39, 100, 86, 120, 49, 39, 89, 47, 6,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 9, 134, 207, 132, 206, 183, 206, 189, 72, 0, 0, 11, 136, 207, 131, 207, 132, 206, 183, 206, 189, 72, 11,
+			136, 206, 173, 206, 189, 206, 177, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 17, 4, 95, 57, 88, 111, 36, 50, 36, 50, 37, 49, 39, 89, 47, 6, 0, 0, 0, 8, 132, 206, 177, 206,
 			189, 72, 8, 0, 0, 6, 18, 66, 206, 177, 206, 185, 0, 206, 191, 206, 185, 0, 206, 181, 206, 185, 0, 206, 177, 206, 175, 0, 206, 191,
 			206, 175, 0, 206, 181, 206, 175, 0, 206, 181, 0, 206, 185, 0, 206, 183, 0, 207, 133, 0, 206, 173, 0, 206, 175, 0, 206, 174, 0, 207,
 			141, 0, 7, 6, 1, 61, 0, 3, 71, 0, 7, 6, 1, 50, 0, 207, 141, 2, 17, 66, 3, 6, 35, 83, 0, 207, 141, 3, 6, 35,
@@ -11997,3289 +12940,4014 @@ FilesInMemory create_espeakdata_dicts () {
 			3, 37, 0, 207, 139, 0, 46, 3, 47, 36, 55, 6, 37, 35, 0, 44, 2, 15, 3, 49, 6, 39, 65, 35, 0, 33, 3, 87, 35, 84,
 			65, 35, 89, 47, 37, 49, 6, 39, 0, 7, 0, 0};
 		autoFileInMemory espeakdata_dicts13 = FileInMemory_createWithData (5351, reinterpret_cast<const char *> (&espeakdata_dicts13_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/el_dict", 
+			U"espeak-1.48.04-source/espeak-data/el_dict", 
 			U"el");
-		Collection_addItem (me.peek(), espeakdata_dicts13.transfer());
+		my addItem_move (espeakdata_dicts13.move());
 
-		static unsigned char espeakdata_dicts14_data[94548] = {
-			0, 4, 0, 0, 180, 191, 0, 0, 13, 69, 65, 33, 67, 37, 48, 48, 34, 138, 89, 129, 0, 0, 14, 70, 56, 21, 83, 20, 19, 64,
-			50, 130, 88, 141, 65, 0, 0, 17, 71, 52, 16, 203, 20, 230, 137, 20, 65, 13, 49, 121, 50, 88, 37, 0, 0, 12, 68, 76, 81, 213,
-			20, 89, 121, 81, 58, 138, 0, 11, 200, 24, 244, 133, 76, 128, 68, 61, 112, 66, 10, 68, 21, 148, 137, 20, 141, 34, 37, 0, 0, 14,
-			69, 52, 147, 4, 21, 112, 65, 122, 55, 72, 57, 134, 0, 12, 68, 32, 20, 212, 100, 107, 138, 89, 47, 122, 0, 0, 11, 65, 4, 35,
-			55, 35, 0, 81, 108, 97, 32, 16, 65, 4, 119, 15, 58, 137, 55, 0, 81, 119, 104, 105, 108, 101, 32, 12, 69, 12, 243, 142, 61, 32,
-			49, 124, 50, 114, 0, 16, 70, 80, 244, 142, 4, 67, 192, 47, 132, 50, 6, 138, 72, 136, 0, 13, 69, 80, 129, 83, 37, 48, 87, 129,
-			89, 122, 89, 0, 19, 65, 4, 35, 49, 119, 11, 0, 85, 46, 32, 107, 32, 46, 32, 97, 32, 46, 32, 6, 65, 4, 138, 0, 14, 4,
-			193, 4, 34, 0, 11, 67, 84, 225, 15, 125, 50, 72, 6, 134, 0, 14, 70, 61, 85, 23, 5, 33, 0, 135, 47, 58, 114, 72, 0, 19,
-			71, 52, 21, 83, 60, 193, 85, 52, 65, 130, 89, 13, 6, 55, 129, 13, 65, 0, 16, 70, 12, 243, 150, 20, 229, 0, 49, 124, 50, 84,
-			13, 50, 47, 0, 13, 69, 5, 0, 67, 32, 80, 119, 48, 35, 76, 37, 0, 0, 0, 10, 68, 72, 81, 83, 20, 34, 129, 89, 0, 11,
-			68, 37, 48, 65, 12, 137, 89, 13, 49, 0, 13, 68, 9, 86, 15, 52, 71, 125, 49, 89, 13, 65, 0, 21, 72, 4, 229, 9, 80, 129,
-			83, 37, 48, 35, 50, 47, 6, 122, 87, 13, 89, 122, 89, 0, 0, 14, 69, 8, 84, 140, 36, 224, 71, 128, 55, 6, 122, 50, 0, 13,
-			69, 72, 83, 9, 76, 128, 34, 121, 55, 113, 91, 0, 11, 67, 13, 144, 78, 89, 137, 6, 35, 50, 0, 15, 69, 12, 243, 150, 20, 224,
-			49, 124, 50, 84, 6, 129, 50, 0, 23, 73, 12, 243, 80, 21, 66, 84, 36, 243, 128, 49, 124, 65, 48, 13, 47, 6, 122, 91, 13, 50,
-			0, 6, 65, 8, 71, 129, 0, 0, 16, 70, 4, 229, 9, 29, 80, 64, 35, 50, 47, 6, 129, 81, 13, 0, 15, 70, 88, 17, 213, 21,
-			53, 0, 84, 138, 81, 13, 89, 47, 0, 14, 70, 76, 227, 207, 44, 84, 128, 89, 50, 134, 49, 114, 0, 15, 70, 61, 85, 12, 36, 84,
-			128, 6, 135, 47, 55, 4, 145, 0, 15, 70, 36, 51, 206, 8, 20, 128, 137, 49, 124, 50, 71, 127, 0, 15, 70, 12, 21, 5, 72, 84,
-			128, 49, 138, 47, 114, 34, 114, 0, 0, 6, 195, 85, 64, 192, 17, 14, 67, 21, 64, 192, 121, 47, 6, 89, 121, 47, 34, 13, 0, 0,
-			10, 67, 12, 17, 133, 49, 35, 83, 138, 0, 0, 12, 69, 16, 145, 83, 20, 192, 72, 129, 88, 118, 0, 17, 70, 4, 224, 76, 101, 50,
-			83, 119, 50, 35, 55, 13, 89, 122, 89, 0, 6, 65, 12, 89, 129, 0, 0, 9, 198, 4, 193, 201, 21, 36, 192, 66, 16, 70, 76, 83,
-			148, 36, 83, 148, 89, 121, 50, 47, 141, 50, 47, 0, 0, 19, 71, 21, 132, 5, 73, 66, 83, 20, 121, 49, 89, 48, 114, 47, 6, 129,
-			88, 0, 14, 4, 95, 8, 1, 3, 107, 6, 35, 76, 4, 121, 49, 0, 0, 12, 68, 85, 48, 71, 20, 57, 134, 89, 113, 75, 0, 0,
-			13, 69, 53, 84, 141, 85, 32, 65, 148, 65, 114, 0, 105, 12, 69, 53, 84, 141, 85, 32, 65, 128, 65, 114, 0, 13, 69, 8, 19, 12,
-			61, 64, 71, 35, 55, 13, 47, 0, 6, 65, 16, 72, 129, 0, 0, 15, 70, 65, 81, 82, 36, 193, 64, 48, 57, 143, 34, 118, 0, 103,
-			14, 70, 72, 82, 78, 36, 225, 192, 34, 138, 50, 122, 68, 0, 17, 70, 36, 224, 197, 57, 49, 64, 122, 50, 89, 6, 121, 50, 89, 0,
-			36, 0, 16, 70, 64, 20, 211, 21, 32, 153, 48, 35, 89, 114, 71, 6, 137, 0, 19, 71, 36, 212, 18, 20, 50, 83, 20, 122, 65, 48,
-			34, 122, 89, 6, 137, 89, 0, 20, 71, 4, 35, 210, 36, 114, 78, 20, 35, 71, 13, 34, 6, 122, 75, 13, 50, 37, 0, 0, 12, 68,
-			29, 84, 149, 76, 81, 134, 34, 134, 88, 0, 12, 68, 24, 198, 66, 100, 83, 55, 137, 71, 137, 0, 0, 8, 197, 52, 81, 21, 76, 16,
-			66, 15, 69, 37, 64, 76, 36, 16, 122, 47, 6, 35, 55, 113, 13, 0, 18, 70, 5, 48, 133, 77, 67, 211, 35, 89, 71, 6, 121, 89,
-			47, 13, 89, 0, 21, 65, 20, 83, 132, 121, 81, 88, 6, 120, 65, 48, 118, 0, 83, 46, 32, 103, 32, 46, 32, 5, 65, 20, 129, 0,
-			0, 14, 70, 52, 147, 12, 36, 243, 128, 65, 122, 55, 141, 50, 0, 15, 70, 8, 148, 195, 84, 149, 0, 71, 122, 89, 49, 122, 47, 0,
-			0, 17, 70, 36, 225, 21, 77, 68, 153, 122, 50, 72, 125, 89, 47, 34, 122, 0, 0, 12, 68, 56, 147, 138, 4, 50, 122, 50, 75, 13,
-			0, 15, 70, 52, 85, 1, 64, 131, 210, 65, 121, 47, 13, 83, 132, 0, 13, 68, 4, 69, 76, 80, 35, 72, 125, 55, 47, 0, 135, 0,
-			15, 69, 16, 210, 84, 72, 144, 72, 13, 65, 129, 47, 34, 37, 0, 8, 197, 52, 86, 9, 12, 240, 65, 14, 69, 32, 21, 193, 36, 144,
-			107, 13, 58, 6, 137, 129, 0, 13, 69, 17, 84, 136, 4, 208, 72, 125, 34, 13, 65, 0, 13, 69, 72, 80, 129, 80, 80, 34, 129, 71,
-			138, 47, 0, 13, 69, 64, 148, 129, 80, 80, 48, 137, 34, 13, 47, 0, 14, 69, 52, 18, 143, 72, 16, 65, 119, 75, 133, 34, 13, 0,
-			14, 69, 44, 20, 129, 80, 80, 49, 13, 34, 126, 47, 37, 0, 13, 69, 4, 84, 129, 80, 80, 140, 34, 6, 138, 47, 0, 6, 65, 24,
-			121, 83, 0, 0, 17, 70, 65, 33, 84, 21, 133, 0, 48, 34, 129, 108, 121, 49, 89, 47, 0, 0, 17, 71, 5, 32, 200, 36, 32, 76,
-			16, 127, 76, 122, 71, 130, 55, 72, 0, 19, 67, 92, 147, 132, 58, 6, 137, 50, 72, 15, 6, 125, 48, 0, 81, 117, 112, 32, 23, 67,
-			92, 147, 132, 58, 6, 122, 50, 72, 15, 48, 6, 135, 114, 0, 81, 112, 111, 119, 101, 114, 32, 11, 67, 92, 147, 132, 58, 137, 50, 72,
-			0, 36, 0, 9, 67, 16, 243, 133, 72, 125, 50, 0, 18, 72, 64, 130, 76, 48, 148, 9, 56, 80, 83, 122, 55, 113, 48, 129, 50, 0,
-			9, 67, 80, 243, 133, 47, 136, 50, 0, 13, 68, 20, 208, 133, 16, 121, 65, 71, 6, 121, 72, 0, 0, 14, 69, 52, 243, 129, 12, 240,
-			65, 124, 50, 13, 49, 136, 0, 13, 69, 72, 17, 9, 76, 128, 34, 35, 72, 122, 91, 0, 13, 69, 24, 147, 137, 80, 80, 83, 137, 50,
-			137, 47, 0, 14, 69, 16, 148, 205, 4, 192, 72, 122, 88, 65, 13, 55, 0, 6, 65, 28, 75, 129, 0, 0, 14, 70, 64, 197, 77, 8,
-			84, 128, 48, 55, 125, 65, 114, 0, 0, 17, 70, 21, 97, 82, 100, 243, 133, 121, 84, 34, 122, 58, 125, 50, 0, 106, 16, 70, 21, 97,
-			82, 100, 243, 133, 121, 84, 34, 122, 58, 124, 50, 0, 15, 7, 20, 8, 5, 25, 39, 12, 12, 86, 138, 55, 0, 72, 32, 13, 67, 12,
-			19, 128, 2, 49, 35, 50, 0, 32, 9, 12, 16, 70, 88, 20, 197, 48, 147, 133, 84, 35, 89, 13, 55, 129, 50, 0, 10, 67, 80, 243,
-			128, 47, 125, 50, 0, 10, 11, 67, 76, 19, 128, 4, 89, 35, 50, 0, 9, 14, 4, 95, 54, 48, 15, 89, 6, 122, 49, 89, 47, 141,
-			0, 0, 0, 14, 69, 44, 19, 147, 5, 48, 49, 35, 50, 88, 13, 89, 0, 13, 69, 24, 82, 83, 81, 144, 83, 137, 89, 47, 37, 0,
-			6, 65, 32, 138, 76, 0, 0, 16, 70, 32, 245, 83, 80, 243, 128, 107, 57, 134, 89, 47, 13, 50, 0, 17, 70, 36, 226, 5, 72, 149,
-			0, 122, 50, 107, 6, 121, 34, 122, 47, 0, 14, 70, 13, 84, 2, 60, 20, 132, 49, 125, 71, 13, 72, 0, 9, 198, 4, 229, 9, 28,
-			83, 128, 65, 0, 17, 71, 52, 17, 5, 48, 82, 78, 20, 65, 35, 72, 13, 55, 113, 50, 0, 20, 71, 65, 33, 83, 20, 229, 12, 100,
-			48, 34, 121, 88, 13, 50, 47, 55, 122, 0, 32, 0, 11, 67, 4, 229, 9, 35, 50, 47, 137, 0, 103, 11, 68, 37, 33, 78, 20, 137,
-			34, 129, 50, 0, 12, 68, 80, 242, 217, 60, 47, 136, 49, 122, 136, 0, 10, 68, 60, 50, 18, 20, 136, 49, 114, 0, 10, 67, 36, 225,
-			25, 122, 50, 72, 37, 0, 8, 1, 35, 107, 35, 91, 0, 27, 0, 14, 65, 36, 2, 137, 35, 65, 0, 14, 42, 81, 97, 109, 32, 13,
-			65, 36, 2, 137, 119, 65, 0, 42, 81, 97, 109, 32, 9, 65, 36, 137, 0, 76, 32, 9, 42, 16, 70, 88, 84, 148, 36, 49, 83, 84,
-			128, 47, 122, 89, 129, 88, 0, 5, 65, 36, 137, 0, 0, 12, 67, 84, 229, 15, 4, 125, 50, 108, 117, 0, 103, 11, 67, 84, 229, 15,
-			4, 125, 50, 47, 117, 0, 17, 70, 37, 0, 78, 20, 208, 64, 122, 48, 119, 50, 6, 129, 65, 13, 0, 15, 70, 88, 147, 133, 100, 20,
-			132, 84, 122, 50, 57, 114, 72, 0, 14, 70, 76, 129, 80, 32, 84, 132, 91, 121, 48, 13, 72, 0, 16, 70, 16, 80, 146, 36, 81, 128,
-			72, 129, 71, 34, 6, 129, 83, 0, 13, 1, 37, 48, 148, 89, 6, 121, 50, 47, 0, 105, 27, 12, 1, 37, 48, 114, 89, 6, 121, 50,
-			47, 0, 27, 0, 11, 67, 37, 68, 192, 122, 47, 89, 0, 72, 34, 13, 70, 12, 129, 83, 32, 148, 133, 76, 121, 91, 114, 0, 8, 67,
-			100, 84, 128, 57, 114, 0, 9, 1, 38, 10, 35, 50, 72, 0, 76, 0, 16, 70, 60, 48, 213, 64, 145, 82, 124, 49, 57, 134, 48, 137,
-			114, 0, 0, 24, 73, 92, 244, 139, 77, 64, 84, 36, 243, 128, 58, 6, 148, 49, 89, 47, 4, 138, 91, 13, 50, 0, 105, 23, 73, 92,
-			244, 139, 77, 64, 84, 36, 243, 128, 58, 6, 128, 49, 89, 47, 4, 138, 91, 13, 50, 0, 13, 69, 61, 33, 5, 4, 192, 132, 72, 6,
-			141, 55, 0, 16, 70, 52, 16, 200, 37, 51, 79, 65, 119, 76, 122, 88, 65, 136, 0, 18, 8, 4, 195, 169, 20, 5, 14, 20, 5, 72,
-			138, 47, 6, 124, 50, 47, 0, 23, 73, 12, 243, 148, 72, 20, 20, 36, 243, 128, 49, 13, 50, 47, 34, 6, 35, 48, 91, 13, 50, 0,
-			6, 65, 40, 75, 138, 0, 0, 15, 70, 80, 129, 82, 21, 48, 64, 47, 13, 34, 129, 88, 13, 0, 16, 70, 84, 229, 207, 84, 225, 0,
-			125, 50, 58, 6, 135, 50, 72, 0, 9, 198, 32, 245, 197, 88, 84, 128, 66, 0, 11, 67, 76, 148, 128, 89, 4, 148, 0, 105, 9, 10,
-			67, 76, 148, 128, 89, 4, 128, 0, 9, 11, 67, 16, 243, 148, 72, 136, 50, 47, 0, 9, 15, 70, 8, 245, 84, 37, 21, 69, 71, 134,
-			47, 6, 129, 49, 0, 17, 71, 4, 116, 133, 77, 50, 86, 20, 119, 81, 34, 121, 89, 122, 84, 0, 13, 1, 42, 35, 89, 47, 13, 34,
-			122, 89, 49, 0, 27, 0, 12, 68, 56, 17, 9, 4, 50, 126, 72, 57, 13, 0, 9, 1, 43, 48, 55, 125, 89, 0, 27, 0, 15, 70,
-			36, 195, 9, 56, 242, 83, 122, 55, 13, 50, 6, 139, 0, 12, 69, 76, 145, 206, 21, 32, 89, 137, 50, 114, 0, 16, 70, 36, 224, 207,
-			52, 147, 135, 122, 50, 49, 125, 65, 122, 68, 0, 16, 69, 21, 133, 18, 20, 208, 121, 49, 89, 47, 34, 6, 129, 65, 0, 6, 65, 44,
-			49, 138, 0, 0, 15, 70, 76, 84, 135, 20, 19, 148, 89, 127, 75, 13, 50, 47, 0, 16, 70, 61, 4, 15, 56, 83, 148, 13, 48, 136,
-			50, 13, 50, 47, 0, 14, 70, 16, 145, 72, 5, 33, 0, 72, 137, 107, 127, 72, 0, 0, 19, 4, 9, 20, 39, 19, 122, 47, 89, 107,
-			35, 72, 0, 78, 81, 104, 97, 100, 32, 16, 70, 72, 83, 1, 80, 149, 133, 34, 121, 55, 13, 47, 122, 84, 0, 17, 70, 65, 83, 129,
-			80, 149, 133, 48, 57, 134, 50, 13, 47, 122, 84, 0, 15, 70, 56, 244, 197, 16, 149, 133, 50, 136, 88, 72, 137, 84, 0, 17, 71, 20,
-			229, 15, 85, 32, 71, 20, 124, 50, 108, 117, 34, 126, 90, 0, 10, 67, 5, 67, 208, 119, 47, 124, 48, 0, 0, 24, 67, 25, 35, 205,
-			2, 83, 34, 125, 65, 15, 58, 6, 122, 76, 0, 8, 81, 119, 104, 105, 99, 104, 32, 23, 67, 25, 35, 205, 2, 83, 34, 125, 65, 15,
-			58, 6, 140, 0, 8, 81, 119, 104, 101, 114, 101, 32, 12, 67, 25, 35, 205, 83, 34, 125, 65, 0, 103, 72, 11, 67, 25, 35, 205, 83,
-			34, 124, 65, 0, 72, 11, 68, 56, 21, 82, 84, 50, 135, 34, 134, 0, 9, 198, 20, 229, 18, 4, 147, 0, 65, 10, 67, 4, 229, 5,
-			35, 50, 47, 129, 0, 9, 1, 47, 89, 55, 35, 91, 0, 27, 0, 6, 65, 48, 121, 55, 0, 0, 14, 70, 80, 129, 82, 21, 49, 64,
-			47, 13, 34, 129, 88, 0, 9, 198, 12, 130, 78, 21, 49, 64, 66, 9, 198, 77, 81, 134, 85, 49, 64, 66, 0, 19, 71, 80, 20, 203,
-			24, 244, 131, 20, 47, 6, 35, 89, 49, 83, 4, 133, 89, 0, 19, 71, 36, 212, 5, 16, 19, 131, 20, 122, 65, 48, 6, 129, 72, 13,
-			50, 89, 0, 0, 12, 68, 56, 17, 10, 4, 50, 126, 72, 57, 13, 0, 10, 67, 28, 20, 153, 81, 35, 34, 37, 0, 12, 68, 72, 83,
-			9, 12, 34, 121, 55, 122, 49, 0, 13, 68, 60, 20, 197, 76, 136, 6, 138, 89, 129, 88, 0, 15, 70, 12, 130, 70, 25, 35, 206, 91,
-			122, 83, 34, 124, 50, 0, 0, 22, 73, 92, 129, 69, 48, 32, 82, 72, 245, 192, 58, 6, 129, 55, 10, 71, 4, 35, 34, 136, 0, 13,
-			69, 5, 98, 65, 73, 144, 138, 84, 141, 34, 37, 0, 6, 65, 52, 121, 65, 0, 0, 15, 70, 65, 33, 67, 37, 49, 64, 48, 34, 113,
-			89, 137, 89, 0, 0, 10, 199, 56, 240, 212, 85, 35, 129, 48, 66, 0, 11, 68, 100, 17, 83, 84, 57, 138, 89, 134, 0, 21, 72, 81,
-			32, 74, 20, 53, 15, 73, 144, 47, 34, 13, 75, 121, 49, 47, 13, 34, 122, 0, 12, 68, 77, 82, 84, 20, 89, 58, 129, 47, 0, 10,
-			0, 15, 69, 8, 84, 201, 16, 80, 71, 122, 89, 137, 72, 0, 74, 12, 14, 69, 32, 80, 193, 80, 80, 107, 121, 49, 13, 47, 138, 0,
-			11, 67, 49, 99, 214, 55, 14, 84, 124, 84, 0, 22, 73, 72, 84, 197, 73, 96, 84, 36, 243, 128, 34, 121, 88, 114, 84, 6, 138, 91,
-			13, 50, 0, 15, 69, 24, 81, 15, 72, 16, 83, 113, 72, 6, 133, 34, 13, 0, 23, 73, 16, 80, 204, 5, 32, 84, 36, 243, 128, 72,
-			121, 49, 55, 13, 6, 34, 138, 91, 13, 50, 0, 11, 5, 95, 48, 1, 14, 4, 13, 50, 0, 135, 6, 65, 56, 121, 50, 0, 0, 10,
-			67, 36, 225, 15, 122, 50, 72, 136, 0, 0, 20, 71, 88, 145, 201, 48, 19, 148, 20, 84, 122, 75, 113, 55, 6, 35, 50, 47, 37, 0,
-			9, 198, 76, 83, 73, 80, 243, 133, 65, 19, 71, 52, 20, 137, 41, 80, 78, 4, 65, 35, 34, 113, 58, 6, 126, 50, 13, 0, 17, 71,
-			21, 98, 76, 16, 241, 82, 76, 129, 84, 118, 72, 134, 114, 88, 0, 16, 70, 16, 240, 212, 72, 147, 133, 72, 124, 49, 47, 34, 113, 50,
-			0, 0, 13, 68, 72, 80, 133, 48, 34, 113, 71, 121, 55, 0, 36, 18, 72, 8, 192, 78, 12, 208, 78, 28, 80, 71, 55, 13, 65, 124,
-			50, 90, 0, 18, 72, 4, 195, 5, 28, 144, 78, 12, 80, 119, 55, 129, 75, 13, 50, 89, 0, 0, 14, 69, 32, 82, 193, 80, 80, 107,
-			121, 49, 13, 47, 138, 0, 13, 69, 8, 160, 82, 56, 80, 71, 57, 127, 50, 13, 0, 13, 69, 16, 19, 12, 5, 48, 72, 35, 55, 13,
-			89, 0, 5, 65, 60, 136, 0, 0, 14, 6, 19, 8, 5, 39, 12, 12, 91, 129, 55, 0, 72, 32, 10, 67, 81, 112, 83, 47, 58, 124,
-			88, 0, 13, 69, 61, 0, 81, 84, 80, 136, 48, 6, 138, 49, 0, 12, 1, 61, 9, 129, 49, 58, 118, 88, 9, 0, 27, 0, 16, 70,
-			52, 17, 5, 48, 147, 133, 65, 35, 72, 13, 55, 113, 50, 0, 18, 70, 16, 144, 83, 64, 244, 129, 72, 137, 6, 35, 89, 48, 13, 34,
-			13, 0, 0, 12, 4, 9, 20, 39, 4, 2, 122, 47, 13, 72, 0, 0, 12, 201, 16, 148, 212, 72, 144, 149, 80, 244, 128, 66, 14, 69,
-			16, 84, 195, 73, 144, 72, 113, 89, 49, 34, 138, 0, 9, 1, 64, 10, 35, 47, 10, 0, 76, 6, 65, 64, 48, 129, 0, 0, 15, 6,
-			20, 8, 1, 20, 39, 4, 2, 86, 35, 47, 13, 72, 0, 15, 70, 80, 129, 82, 21, 67, 192, 4, 86, 140, 6, 47, 134, 0, 9, 198,
-			65, 33, 83, 20, 229, 0, 36, 17, 70, 65, 33, 83, 20, 229, 0, 48, 34, 121, 88, 13, 50, 47, 0, 9, 15, 70, 61, 3, 211, 77,
-			83, 64, 13, 48, 124, 89, 13, 65, 0, 23, 74, 12, 243, 135, 72, 84, 211, 36, 243, 129, 48, 49, 13, 50, 81, 34, 121, 91, 13, 50,
-			118, 0, 0, 10, 67, 8, 193, 72, 71, 55, 121, 107, 0, 0, 0, 13, 69, 76, 145, 206, 85, 0, 89, 137, 50, 125, 48, 0, 18, 70,
-			4, 224, 76, 101, 49, 83, 35, 50, 13, 55, 137, 88, 123, 88, 0, 36, 17, 70, 4, 224, 76, 101, 49, 83, 119, 50, 35, 55, 13, 89,
-			129, 88, 0, 7, 65, 68, 49, 57, 134, 0, 0, 21, 67, 80, 130, 83, 86, 6, 122, 89, 58, 4, 125, 50, 0, 103, 33, 81, 111, 110,
-			101, 32, 20, 67, 80, 130, 83, 86, 6, 122, 89, 58, 4, 124, 50, 0, 33, 81, 111, 110, 101, 32, 12, 67, 80, 130, 83, 86, 122, 89,
-			0, 76, 34, 33, 17, 70, 52, 243, 148, 4, 224, 64, 65, 124, 50, 47, 6, 35, 50, 13, 0, 15, 70, 64, 148, 129, 56, 128, 64, 48,
-			13, 34, 126, 50, 13, 0, 15, 70, 64, 17, 197, 4, 229, 0, 48, 35, 75, 13, 50, 47, 0, 16, 70, 12, 130, 77, 21, 32, 64, 49,
-			137, 65, 6, 141, 34, 13, 0, 16, 70, 4, 64, 77, 4, 229, 0, 35, 72, 13, 65, 13, 50, 47, 0, 0, 10, 67, 84, 224, 64, 57,
-			134, 50, 13, 0, 15, 70, 81, 33, 65, 80, 148, 197, 47, 34, 129, 47, 122, 88, 0, 0, 11, 67, 80, 129, 77, 4, 86, 121, 65, 0,
-			9, 26, 68, 76, 19, 148, 4, 89, 6, 35, 50, 47, 13, 15, 49, 55, 6, 130, 88, 0, 81, 99, 108, 97, 117, 115, 32, 11, 68, 61,
-			48, 193, 72, 124, 89, 49, 114, 0, 11, 68, 17, 80, 78, 20, 72, 58, 138, 50, 0, 10, 68, 93, 34, 84, 32, 34, 137, 86, 0, 13,
-			68, 76, 19, 15, 56, 89, 119, 55, 124, 50, 0, 103, 12, 68, 64, 83, 137, 76, 48, 129, 50, 113, 89, 0, 17, 70, 20, 193, 67, 81,
-			35, 206, 113, 55, 121, 49, 47, 34, 124, 50, 0, 0, 10, 67, 80, 129, 78, 86, 121, 50, 0, 32, 13, 69, 28, 144, 130, 60, 224, 81,
-			122, 71, 13, 50, 0, 5, 65, 72, 127, 0, 0, 14, 70, 80, 80, 82, 28, 20, 192, 47, 142, 81, 35, 89, 0, 15, 70, 52, 246, 137,
-			48, 192, 64, 65, 13, 88, 122, 55, 13, 0, 16, 70, 49, 83, 129, 80, 144, 192, 55, 134, 50, 13, 47, 122, 49, 0, 17, 70, 48, 20,
-			193, 28, 224, 64, 55, 13, 88, 126, 50, 57, 13, 0, 103, 16, 70, 48, 20, 193, 28, 224, 64, 55, 13, 88, 35, 50, 57, 13, 0, 0,
-			19, 67, 80, 129, 64, 86, 115, 15, 58, 137, 55, 0, 81, 119, 104, 105, 108, 101, 32, 10, 67, 80, 129, 64, 86, 115, 0, 9, 34, 17,
-			70, 25, 84, 197, 48, 17, 197, 83, 57, 134, 88, 13, 55, 126, 90, 0, 0, 0, 14, 69, 9, 32, 90, 36, 192, 71, 34, 119, 88, 122,
-			55, 0, 13, 69, 77, 2, 78, 4, 192, 89, 48, 137, 50, 118, 0, 12, 69, 76, 130, 86, 21, 32, 91, 122, 84, 114, 0, 13, 69, 65,
-			149, 8, 60, 224, 48, 137, 87, 13, 50, 0, 14, 69, 8, 243, 130, 60, 224, 71, 124, 50, 71, 124, 50, 0, 16, 8, 95, 2, 18, 1,
-			9, 12, 12, 5, 71, 34, 6, 138, 55, 0, 0, 9, 198, 85, 4, 212, 5, 37, 0, 65, 13, 68, 77, 0, 83, 52, 89, 48, 35, 89,
-			13, 65, 0, 17, 71, 77, 0, 71, 32, 85, 20, 36, 89, 48, 119, 81, 121, 47, 37, 0, 9, 198, 76, 20, 132, 36, 225, 64, 66, 9,
-			198, 72, 245, 84, 36, 225, 64, 66, 15, 70, 72, 80, 193, 48, 193, 68, 34, 113, 49, 130, 55, 72, 0, 9, 198, 53, 83, 132, 4, 225,
-			64, 66, 16, 70, 36, 225, 9, 12, 84, 192, 122, 50, 72, 113, 89, 129, 88, 0, 0, 9, 67, 48, 240, 200, 55, 124, 101, 0, 9, 67,
-			28, 145, 192, 81, 122, 81, 0, 19, 71, 12, 243, 80, 21, 66, 78, 28, 49, 13, 65, 48, 6, 129, 47, 122, 68, 0, 9, 67, 12, 16,
-			200, 49, 35, 91, 0, 0, 9, 67, 80, 129, 69, 4, 86, 129, 0, 10, 67, 76, 17, 193, 89, 126, 81, 13, 0, 11, 200, 4, 229, 9,
-			12, 132, 137, 77, 64, 65, 0, 14, 69, 8, 82, 82, 85, 64, 71, 138, 34, 6, 134, 47, 0, 8, 197, 85, 4, 143, 61, 64, 66, 14,
-			69, 81, 37, 69, 77, 64, 47, 34, 134, 13, 89, 47, 0, 6, 65, 80, 47, 129, 0, 0, 15, 70, 25, 32, 71, 36, 193, 64, 83, 34,
-			35, 75, 118, 0, 103, 14, 70, 52, 21, 20, 32, 85, 192, 65, 35, 87, 57, 134, 0, 17, 70, 48, 20, 193, 28, 225, 64, 108, 97, 115,
-			97, 103, 110, 97, 0, 29, 5, 194, 4, 48, 17, 0, 9, 67, 76, 146, 200, 89, 129, 49, 0, 13, 70, 12, 21, 1, 73, 34, 0, 49,
-			13, 47, 127, 0, 6, 195, 12, 147, 192, 17, 0, 16, 70, 69, 81, 83, 80, 147, 206, 49, 58, 121, 89, 76, 13, 50, 0, 13, 68, 44,
-			80, 129, 8, 49, 13, 71, 126, 71, 0, 103, 12, 68, 44, 80, 129, 8, 49, 13, 71, 35, 71, 0, 11, 68, 20, 208, 133, 72, 121, 65,
-			71, 114, 0, 0, 14, 69, 8, 245, 212, 36, 80, 71, 4, 136, 47, 6, 137, 0, 6, 65, 84, 57, 134, 0, 0, 9, 66, 85, 0, 4,
-			125, 48, 0, 12, 10, 67, 77, 147, 131, 89, 122, 68, 49, 0, 16, 70, 16, 83, 9, 52, 149, 0, 72, 113, 55, 122, 65, 122, 47, 0,
-			16, 70, 12, 195, 211, 20, 198, 64, 49, 55, 136, 89, 55, 122, 0, 32, 0, 10, 67, 84, 226, 64, 57, 134, 50, 37, 0, 28, 75, 77,
-			84, 5, 72, 147, 148, 20, 225, 5, 57, 64, 89, 134, 48, 114, 122, 50, 47, 6, 121, 50, 72, 13, 50, 47, 0, 0, 22, 7, 20, 8,
-			5, 25, 39, 22, 5, 86, 138, 84, 107, 35, 72, 0, 78, 81, 104, 97, 100, 32, 15, 7, 20, 8, 5, 25, 39, 22, 5, 86, 138, 84,
-			0, 72, 35, 13, 68, 17, 80, 78, 4, 72, 58, 6, 126, 50, 13, 0, 12, 68, 52, 243, 148, 20, 65, 124, 50, 108, 37, 0, 11, 67,
-			84, 229, 25, 125, 50, 47, 6, 137, 0, 0, 12, 69, 72, 81, 199, 36, 80, 34, 121, 75, 37, 0, 14, 69, 76, 195, 214, 4, 176, 89,
-			55, 136, 84, 35, 49, 0, 14, 69, 69, 81, 66, 20, 48, 49, 58, 113, 71, 121, 49, 0, 13, 69, 80, 245, 67, 32, 80, 47, 134, 91,
-			138, 0, 9, 14, 69, 76, 84, 193, 52, 80, 89, 121, 89, 119, 65, 37, 0, 9, 67, 4, 96, 82, 119, 83, 127, 0, 6, 65, 88, 84,
-			129, 0, 0, 21, 66, 5, 48, 4, 35, 88, 122, 47, 4, 122, 88, 0, 76, 82, 105, 116, 32, 105, 115, 32, 16, 66, 5, 48, 4, 35,
-			88, 4, 122, 88, 0, 8, 81, 105, 115, 32, 9, 66, 5, 48, 2, 35, 88, 0, 9, 12, 67, 36, 229, 15, 4, 122, 50, 108, 117, 0,
-			103, 11, 67, 36, 229, 15, 4, 122, 50, 47, 117, 0, 9, 198, 65, 35, 202, 20, 53, 0, 36, 17, 70, 65, 35, 202, 20, 53, 0, 48,
-			34, 124, 75, 121, 49, 47, 0, 10, 0, 23, 73, 36, 228, 212, 4, 195, 1, 80, 147, 206, 122, 50, 89, 47, 13, 55, 6, 138, 91, 13,
-			50, 0, 17, 71, 12, 128, 77, 60, 210, 76, 20, 49, 35, 65, 13, 65, 137, 55, 0, 0, 11, 4, 9, 39, 12, 12, 137, 55, 0, 72,
-			32, 12, 68, 88, 147, 153, 48, 84, 137, 50, 113, 55, 0, 12, 200, 77, 64, 76, 4, 115, 73, 80, 80, 103, 66, 20, 72, 12, 243, 77,
-			84, 226, 81, 84, 80, 49, 13, 65, 57, 134, 50, 113, 49, 138, 0, 13, 68, 12, 16, 129, 48, 49, 119, 71, 126, 55, 0, 103, 12, 68,
-			12, 16, 129, 48, 49, 119, 71, 35, 55, 0, 0, 13, 69, 52, 20, 137, 4, 224, 65, 35, 34, 141, 50, 0, 14, 69, 76, 145, 206, 4,
-			192, 89, 122, 81, 50, 13, 55, 0, 22, 73, 65, 84, 144, 61, 37, 5, 16, 198, 64, 48, 114, 48, 6, 133, 47, 113, 72, 55, 122, 0,
-			13, 69, 64, 85, 9, 80, 80, 48, 13, 47, 129, 47, 0, 12, 1, 92, 71, 35, 49, 89, 55, 35, 91, 0, 27, 11, 65, 92, 72, 6,
-			125, 71, 118, 57, 134, 0, 0, 14, 70, 32, 145, 5, 61, 85, 0, 107, 137, 72, 135, 47, 0, 0, 20, 67, 80, 243, 192, 47, 6, 134,
-			15, 65, 4, 125, 76, 0, 81, 109, 117, 99, 104, 32, 21, 67, 80, 243, 192, 47, 6, 134, 15, 65, 4, 121, 50, 37, 0, 81, 109, 97,
-			110, 121, 32, 19, 67, 80, 243, 192, 47, 6, 134, 15, 83, 4, 57, 134, 0, 81, 102, 101, 119, 32, 15, 70, 5, 1, 78, 56, 147, 133,
-			35, 48, 13, 50, 137, 50, 0, 9, 67, 4, 224, 76, 138, 50, 118, 0, 15, 4, 95, 55, 48, 15, 89, 6, 121, 84, 13, 50, 47, 141,
-			0, 0, 12, 4, 23, 5, 39, 4, 58, 129, 72, 0, 72, 35, 19, 72, 92, 147, 4, 21, 35, 133, 77, 48, 58, 122, 55, 72, 114, 50,
-			121, 89, 0, 13, 68, 84, 225, 133, 16, 125, 50, 83, 6, 121, 72, 0, 17, 70, 16, 144, 77, 21, 65, 82, 72, 137, 6, 35, 65, 113,
-			47, 114, 0, 0, 13, 69, 72, 80, 76, 49, 144, 34, 141, 55, 122, 0, 32, 7, 65, 96, 121, 49, 89, 0, 0, 16, 70, 52, 20, 137,
-			49, 147, 128, 65, 35, 34, 13, 55, 113, 50, 0, 10, 67, 4, 225, 87, 119, 50, 134, 0, 103, 10, 67, 4, 225, 87, 119, 50, 57, 134,
-			0, 0, 16, 70, 76, 130, 73, 80, 18, 197, 91, 129, 47, 6, 126, 49, 152, 0, 16, 70, 65, 32, 67, 80, 148, 197, 48, 34, 35, 49,
-			47, 113, 89, 0, 8, 67, 4, 65, 0, 35, 72, 0, 0, 11, 68, 92, 19, 12, 100, 58, 124, 55, 37, 0, 12, 68, 17, 32, 67, 60,
-			72, 34, 138, 49, 136, 0, 21, 72, 81, 32, 78, 77, 3, 210, 81, 48, 47, 34, 35, 50, 89, 48, 133, 47, 89, 0, 34, 10, 67, 60,
-			33, 89, 136, 71, 6, 138, 0, 9, 67, 16, 244, 197, 72, 136, 89, 0, 0, 12, 67, 16, 245, 206, 4, 72, 135, 50, 0, 9, 12, 0,
-			9, 198, 56, 21, 1, 76, 128, 64, 66, 10, 67, 4, 211, 211, 138, 65, 124, 89, 0, 16, 70, 64, 84, 147, 60, 224, 64, 48, 128, 89,
-			6, 136, 50, 13, 0, 16, 70, 8, 83, 9, 76, 128, 64, 71, 13, 55, 6, 129, 91, 13, 0, 0, 18, 70, 77, 83, 1, 92, 84, 201,
-			89, 134, 55, 119, 58, 6, 138, 89, 37, 0, 15, 70, 56, 80, 203, 48, 16, 197, 50, 121, 49, 55, 13, 89, 0, 11, 67, 48, 244, 192,
-			4, 55, 124, 89, 0, 9, 0, 13, 68, 84, 225, 15, 76, 125, 50, 72, 6, 134, 88, 0, 0, 12, 69, 72, 16, 200, 20, 192, 34, 138,
-			76, 118, 0, 13, 69, 76, 19, 13, 60, 224, 89, 35, 65, 13, 50, 0, 7, 65, 104, 88, 129, 0, 103, 7, 65, 104, 88, 121, 72, 0,
-			0, 18, 66, 5, 64, 119, 47, 10, 58, 6, 122, 55, 0, 81, 119, 105, 108, 108, 32, 19, 66, 5, 64, 119, 47, 10, 58, 125, 50, 89,
-			0, 106, 81, 111, 110, 99, 101, 32, 18, 66, 5, 64, 119, 47, 10, 58, 124, 50, 89, 0, 81, 111, 110, 99, 101, 32, 13, 66, 5, 64,
-			2, 35, 47, 13, 0, 34, 81, 97, 32, 10, 66, 5, 64, 35, 47, 0, 34, 9, 72, 16, 70, 9, 34, 65, 56, 224, 64, 71, 34, 122,
-			6, 35, 50, 13, 0, 16, 70, 64, 245, 15, 52, 16, 192, 48, 13, 47, 136, 65, 13, 49, 0, 17, 70, 64, 243, 9, 80, 144, 192, 48,
-			124, 55, 13, 47, 122, 49, 0, 10, 0, 17, 67, 92, 20, 192, 58, 2, 125, 88, 86, 115, 0, 81, 116, 104, 101, 32, 14, 67, 92, 20,
-			192, 58, 2, 125, 88, 119, 0, 81, 97, 32, 13, 67, 92, 20, 192, 2, 58, 125, 88, 0, 103, 35, 9, 12, 67, 92, 20, 192, 2, 58,
-			124, 88, 0, 35, 9, 9, 67, 80, 133, 64, 87, 147, 0, 105, 8, 67, 80, 133, 64, 87, 128, 0, 9, 67, 21, 84, 128, 57, 143, 0,
-			9, 0, 12, 201, 40, 242, 1, 56, 225, 83, 9, 84, 135, 66, 0, 13, 69, 44, 145, 82, 4, 224, 49, 141, 34, 13, 50, 0, 14, 69,
-			80, 19, 5, 57, 64, 47, 35, 55, 13, 50, 47, 0, 12, 69, 76, 244, 130, 21, 64, 89, 132, 71, 138, 0, 0, 16, 70, 72, 19, 69,
-			76, 84, 192, 34, 35, 65, 13, 89, 129, 88, 0, 14, 70, 80, 129, 82, 52, 244, 192, 87, 128, 65, 13, 89, 0, 9, 198, 61, 85, 12,
-			36, 225, 64, 65, 9, 198, 9, 34, 71, 4, 65, 64, 66, 14, 70, 5, 3, 211, 80, 193, 64, 119, 48, 124, 89, 118, 0, 16, 70, 4,
-			225, 77, 60, 225, 64, 119, 50, 121, 65, 13, 50, 37, 0, 10, 67, 4, 211, 203, 119, 65, 124, 49, 0, 0, 10, 199, 84, 225, 5, 72,
-			194, 78, 28, 65, 8, 67, 16, 245, 192, 72, 135, 0, 0, 12, 68, 64, 147, 15, 80, 48, 137, 55, 13, 47, 0, 19, 72, 4, 69, 133,
-			73, 66, 83, 21, 32, 35, 72, 84, 114, 47, 137, 88, 114, 0, 0, 15, 69, 65, 84, 137, 77, 64, 48, 57, 134, 44, 122, 89, 47, 0,
-			14, 69, 4, 65, 9, 13, 64, 35, 72, 122, 49, 47, 0, 10, 0, 14, 70, 52, 148, 211, 36, 193, 64, 65, 122, 89, 118, 0, 103, 14,
-			70, 56, 85, 137, 48, 193, 64, 50, 121, 84, 122, 55, 0, 15, 70, 21, 66, 69, 56, 225, 64, 121, 47, 122, 6, 121, 50, 0, 13, 70,
-			12, 129, 65, 16, 193, 64, 76, 129, 72, 118, 0, 0, 11, 67, 32, 245, 192, 4, 107, 135, 0, 12, 10, 12, 67, 4, 230, 64, 4, 121,
-			50, 37, 0, 34, 9, 9, 67, 80, 134, 64, 4, 86, 137, 0, 9, 198, 12, 19, 3, 85, 69, 1, 66, 16, 70, 16, 17, 197, 56, 128,
-			77, 72, 35, 81, 13, 50, 13, 65, 0, 0, 10, 67, 80, 129, 89, 86, 138, 0, 72, 32, 0, 18, 4, 9, 39, 22, 5, 137, 84, 107,
-			35, 72, 0, 78, 81, 104, 97, 100, 32, 11, 4, 9, 39, 22, 5, 137, 84, 0, 72, 35, 13, 69, 80, 243, 129, 28, 80, 47, 125, 50,
-			122, 75, 0, 13, 69, 76, 242, 82, 20, 80, 89, 58, 126, 34, 138, 0, 14, 69, 64, 20, 212, 73, 144, 48, 138, 89, 47, 34, 37, 0,
-			0, 16, 70, 81, 34, 80, 60, 194, 64, 47, 34, 122, 48, 13, 55, 37, 0, 15, 70, 5, 85, 15, 65, 54, 64, 130, 108, 124, 48, 89,
-			37, 0, 0, 17, 67, 80, 128, 84, 2, 86, 35, 47, 86, 115, 0, 81, 116, 104, 101, 32, 20, 67, 80, 128, 84, 86, 6, 35, 47, 58,
-			4, 125, 50, 0, 103, 81, 111, 110, 101, 32, 19, 67, 80, 128, 84, 86, 6, 35, 47, 58, 4, 124, 50, 0, 81, 111, 110, 101, 32, 17,
-			67, 80, 128, 84, 4, 86, 119, 47, 122, 47, 0, 33, 81, 105, 116, 32, 17, 67, 80, 128, 84, 4, 86, 35, 47, 13, 50, 0, 34, 81,
-			97, 110, 32, 15, 67, 80, 128, 84, 4, 86, 35, 47, 13, 0, 34, 81, 97, 32, 13, 67, 80, 128, 84, 86, 35, 47, 0, 72, 34, 12,
-			33, 17, 71, 72, 84, 197, 73, 99, 201, 72, 34, 121, 88, 114, 84, 58, 127, 0, 18, 71, 20, 229, 133, 48, 244, 5, 76, 121, 50, 84,
-			13, 55, 136, 48, 89, 0, 0, 14, 7, 20, 8, 5, 25, 39, 18, 5, 2, 86, 138, 114, 0, 20, 72, 64, 84, 147, 21, 2, 15, 56,
-			80, 48, 114, 89, 6, 121, 83, 13, 50, 37, 0, 13, 70, 12, 18, 83, 20, 19, 0, 49, 35, 91, 118, 0, 11, 68, 77, 81, 68, 20,
-			89, 58, 138, 72, 0, 16, 70, 76, 243, 21, 80, 147, 206, 89, 13, 55, 134, 91, 13, 50, 0, 12, 68, 76, 147, 149, 76, 89, 137, 50,
-			13, 89, 0, 20, 72, 48, 149, 5, 72, 21, 21, 72, 80, 55, 122, 47, 114, 34, 13, 76, 114, 0, 103, 18, 72, 48, 149, 5, 72, 21,
-			21, 72, 80, 55, 122, 47, 34, 123, 76, 114, 0, 11, 68, 8, 144, 140, 20, 71, 137, 71, 118, 0, 0, 14, 69, 56, 144, 207, 48, 16,
-			50, 122, 49, 13, 55, 13, 0, 17, 70, 12, 243, 131, 21, 37, 15, 49, 13, 50, 76, 6, 140, 47, 136, 0, 15, 70, 12, 21, 8, 60,
-			194, 67, 49, 35, 87, 55, 122, 49, 0, 0, 18, 70, 4, 196, 133, 4, 70, 64, 130, 55, 34, 121, 72, 37, 0, 74, 32, 12, 10, 67,
-			52, 83, 215, 65, 37, 6, 135, 0, 16, 70, 12, 244, 143, 56, 85, 0, 49, 124, 34, 13, 50, 121, 47, 0, 14, 70, 8, 245, 81, 84,
-			85, 0, 71, 134, 49, 6, 138, 0, 7, 66, 5, 80, 4, 136, 0, 0, 20, 71, 48, 245, 73, 76, 144, 78, 4, 55, 134, 4, 129, 88,
-			129, 6, 35, 50, 13, 0, 17, 71, 80, 147, 69, 80, 16, 140, 20, 47, 137, 65, 47, 138, 71, 118, 0, 20, 71, 76, 83, 73, 12, 243,
-			15, 56, 89, 121, 65, 122, 49, 6, 136, 55, 13, 50, 0, 17, 71, 12, 128, 82, 48, 21, 1, 56, 91, 127, 55, 13, 47, 13, 50, 0,
-			0, 12, 68, 72, 16, 137, 16, 34, 138, 71, 122, 72, 0, 20, 72, 64, 82, 143, 72, 21, 9, 88, 80, 48, 13, 75, 124, 34, 13, 47,
-			122, 84, 0, 13, 68, 52, 241, 5, 52, 65, 136, 72, 13, 65, 0, 103, 12, 68, 52, 241, 5, 52, 65, 136, 72, 121, 65, 0, 10, 67,
-			44, 149, 201, 49, 129, 58, 129, 0, 0, 0, 10, 67, 4, 229, 83, 138, 50, 125, 89, 0, 0, 10, 1, 126, 47, 122, 55, 72, 13, 0,
-			27, 0, 11, 68, 28, 144, 130, 76, 81, 122, 71, 88, 0, 11, 68, 80, 145, 1, 48, 47, 137, 72, 118, 0, 0, 17, 67, 80, 128, 78,
-			4, 86, 35, 50, 13, 50, 0, 34, 81, 97, 110, 32, 15, 67, 80, 128, 78, 4, 86, 35, 50, 13, 0, 34, 81, 97, 32, 11, 67, 80,
-			128, 78, 86, 119, 50, 0, 72, 9, 14, 69, 81, 37, 69, 49, 144, 47, 34, 134, 55, 122, 0, 32, 13, 69, 52, 148, 211, 21, 48, 65,
-			122, 89, 113, 88, 0, 0, 16, 70, 12, 240, 207, 57, 85, 0, 49, 136, 49, 13, 50, 125, 47, 0, 0, 9, 67, 21, 96, 64, 129, 84,
-			13, 0, 0, 0, 17, 70, 4, 229, 9, 48, 193, 83, 35, 50, 47, 6, 122, 55, 129, 88, 0, 13, 69, 92, 144, 203, 20, 64, 58, 122,
-			49, 123, 72, 0, 15, 69, 84, 228, 133, 4, 64, 125, 50, 34, 6, 121, 72, 0, 9, 0, 15, 70, 72, 146, 1, 56, 224, 64, 34, 122,
-			6, 126, 50, 13, 0, 9, 67, 81, 115, 211, 47, 134, 88, 0, 0, 17, 71, 92, 129, 82, 20, 85, 133, 72, 58, 2, 140, 44, 121, 84,
-			114, 0, 0, 7, 196, 80, 16, 143, 60, 66, 10, 67, 40, 81, 9, 75, 121, 72, 137, 0, 11, 68, 21, 113, 69, 44, 129, 58, 129, 49,
-			0, 16, 70, 12, 147, 142, 4, 211, 206, 89, 122, 50, 13, 65, 13, 50, 0, 0, 11, 69, 80, 131, 213, 28, 128, 4, 86, 136, 0, 12,
-			69, 52, 148, 211, 20, 64, 65, 122, 89, 47, 0, 0, 9, 198, 64, 19, 132, 61, 32, 64, 66, 16, 70, 85, 68, 133, 12, 133, 0, 57,
-			134, 47, 34, 121, 99, 47, 0, 0, 18, 71, 8, 20, 143, 52, 85, 5, 72, 71, 13, 34, 124, 65, 113, 47, 114, 0, 0, 9, 67, 8,
-			81, 5, 71, 129, 72, 0, 13, 70, 16, 245, 71, 4, 195, 0, 72, 134, 81, 118, 0, 15, 70, 92, 19, 19, 4, 195, 0, 58, 130, 55,
-			89, 130, 55, 0, 10, 68, 4, 32, 133, 100, 35, 71, 37, 0, 7, 196, 57, 148, 19, 16, 17, 0, 14, 69, 28, 144, 147, 60, 224, 81,
-			122, 71, 89, 13, 50, 0, 22, 73, 77, 84, 5, 72, 99, 21, 61, 84, 192, 89, 134, 48, 6, 128, 83, 55, 134, 13, 89, 0, 13, 69,
-			28, 86, 83, 21, 32, 81, 137, 88, 114, 0, 103, 12, 69, 28, 86, 83, 21, 32, 81, 129, 88, 114, 0, 13, 69, 24, 21, 8, 60, 208,
-			83, 35, 86, 13, 65, 0, 21, 73, 12, 193, 65, 56, 194, 78, 21, 52, 192, 49, 55, 121, 50, 55, 122, 50, 13, 89, 0, 0, 14, 70,
-			76, 145, 206, 4, 113, 64, 89, 137, 50, 113, 75, 0, 16, 70, 64, 244, 148, 20, 225, 0, 48, 133, 47, 6, 121, 50, 72, 0, 0, 17,
-			71, 12, 19, 66, 72, 145, 7, 20, 49, 138, 65, 71, 34, 122, 75, 0, 0, 12, 68, 76, 243, 137, 4, 89, 124, 50, 57, 13, 0, 11,
-			200, 80, 132, 143, 84, 114, 15, 85, 64, 66, 0, 21, 73, 56, 243, 133, 80, 129, 76, 21, 52, 192, 50, 125, 50, 86, 13, 55, 6, 121,
-			89, 0, 12, 69, 48, 243, 211, 21, 32, 55, 134, 88, 114, 0, 12, 69, 8, 22, 129, 5, 32, 71, 119, 88, 127, 0, 0, 10, 66, 8,
-			80, 71, 129, 0, 35, 9, 76, 14, 70, 76, 85, 137, 48, 193, 64, 89, 13, 84, 122, 55, 0, 15, 70, 20, 228, 143, 85, 65, 64, 124,
-			50, 34, 6, 134, 47, 0, 0, 11, 67, 48, 244, 212, 55, 131, 89, 47, 0, 103, 17, 70, 76, 84, 133, 56, 17, 5, 89, 121, 34, 113,
-			50, 6, 138, 72, 0, 16, 70, 24, 21, 143, 72, 149, 5, 83, 138, 84, 14, 34, 113, 47, 0, 10, 199, 12, 243, 147, 81, 37, 67, 80,
-			36, 20, 71, 12, 243, 147, 81, 37, 67, 80, 49, 124, 50, 89, 47, 34, 125, 49, 47, 0, 10, 0, 14, 68, 84, 225, 5, 72, 125, 50,
-			72, 114, 0, 72, 12, 9, 16, 70, 80, 240, 143, 28, 112, 78, 47, 13, 71, 124, 81, 13, 50, 0, 12, 68, 65, 34, 86, 100, 48, 34,
-			122, 84, 37, 0, 11, 68, 44, 81, 137, 72, 49, 129, 83, 114, 0, 11, 67, 32, 18, 1, 107, 126, 107, 6, 126, 0, 0, 15, 69, 8,
-			19, 129, 56, 16, 71, 119, 50, 35, 50, 13, 0, 103, 17, 70, 52, 147, 132, 4, 224, 79, 65, 122, 50, 72, 13, 50, 6, 135, 0, 14,
-			69, 20, 198, 83, 20, 80, 138, 55, 6, 129, 88, 138, 0, 14, 69, 76, 145, 82, 72, 16, 89, 129, 6, 140, 34, 13, 0, 13, 69, 20,
-			229, 18, 20, 80, 124, 50, 47, 34, 138, 0, 8, 197, 20, 212, 9, 72, 80, 65, 13, 69, 12, 18, 143, 48, 80, 49, 119, 75, 136, 55,
-			0, 14, 69, 8, 19, 129, 56, 16, 71, 13, 50, 126, 50, 13, 0, 23, 73, 5, 4, 18, 61, 130, 77, 5, 65, 64, 119, 48, 34, 124,
-			49, 89, 122, 65, 138, 47, 0, 36, 23, 73, 5, 4, 18, 61, 130, 77, 5, 65, 64, 119, 48, 34, 124, 49, 89, 122, 65, 13, 47, 0,
-			9, 12, 69, 4, 50, 9, 56, 112, 138, 49, 122, 68, 0, 0, 15, 70, 92, 245, 78, 16, 81, 0, 58, 134, 50, 72, 123, 72, 0, 0,
-			10, 67, 77, 34, 64, 89, 34, 4, 129, 0, 18, 70, 48, 147, 135, 21, 34, 69, 55, 124, 50, 90, 13, 34, 6, 138, 0, 103, 16, 70,
-			48, 147, 135, 21, 34, 69, 55, 124, 50, 90, 13, 34, 37, 0, 10, 199, 25, 37, 83, 81, 32, 84, 20, 66, 16, 70, 9, 35, 195, 12,
-			243, 9, 71, 34, 124, 49, 13, 55, 37, 0, 0, 12, 68, 76, 81, 1, 56, 89, 113, 72, 35, 50, 0, 12, 68, 28, 243, 142, 4, 81,
-			4, 13, 50, 13, 0, 12, 68, 12, 240, 146, 4, 49, 136, 71, 34, 13, 0, 10, 68, 5, 81, 197, 72, 130, 81, 114, 0, 0, 12, 69,
-			65, 32, 71, 84, 80, 48, 34, 126, 81, 0, 13, 69, 61, 32, 78, 28, 80, 124, 34, 113, 50, 75, 0, 24, 73, 20, 193, 67, 81, 34,
-			67, 37, 70, 64, 113, 55, 121, 49, 47, 34, 6, 122, 89, 113, 47, 37, 0, 22, 73, 4, 227, 137, 88, 84, 147, 5, 38, 64, 35, 50,
-			122, 84, 6, 128, 89, 13, 34, 37, 0, 14, 69, 4, 69, 193, 72, 80, 6, 35, 72, 58, 4, 140, 0, 0, 0, 16, 70, 28, 147, 214,
-			4, 227, 137, 75, 13, 84, 6, 126, 50, 37, 0, 18, 71, 64, 20, 211, 21, 36, 194, 100, 48, 35, 89, 114, 88, 71, 6, 137, 0, 19,
-			71, 44, 147, 15, 52, 85, 5, 72, 49, 122, 55, 6, 124, 65, 113, 47, 114, 0, 17, 71, 24, 244, 148, 84, 224, 84, 20, 83, 132, 76,
-			13, 50, 13, 47, 0, 18, 71, 4, 67, 73, 72, 16, 140, 20, 35, 72, 65, 13, 34, 13, 71, 118, 0, 0, 12, 68, 81, 32, 67, 100,
-			47, 34, 138, 89, 37, 0, 15, 70, 76, 48, 76, 64, 83, 0, 89, 49, 35, 55, 48, 118, 0, 0, 13, 69, 16, 148, 206, 21, 144, 72,
-			122, 88, 50, 37, 0, 13, 69, 32, 83, 9, 84, 208, 107, 129, 55, 141, 65, 0, 17, 70, 17, 32, 77, 5, 66, 67, 72, 34, 13, 65,
-			35, 47, 122, 49, 0, 14, 69, 4, 194, 193, 48, 144, 35, 55, 49, 13, 55, 137, 0, 0, 10, 67, 80, 133, 83, 86, 125, 89, 0, 8,
-			13, 202, 92, 244, 132, 65, 35, 195, 21, 52, 207, 72, 66, 15, 70, 32, 244, 212, 21, 52, 192, 107, 136, 89, 47, 121, 89, 0, 18, 70,
-			12, 192, 82, 36, 225, 84, 49, 55, 35, 34, 13, 50, 6, 121, 47, 0, 0, 12, 67, 9, 85, 0, 4, 71, 125, 47, 0, 8, 9, 14,
-			67, 92, 20, 212, 2, 58, 124, 89, 47, 0, 9, 35, 9, 10, 67, 92, 20, 212, 58, 138, 89, 47, 0, 0, 11, 68, 28, 198, 78, 56,
-			81, 55, 122, 50, 0, 21, 72, 72, 130, 78, 60, 49, 82, 61, 48, 34, 137, 50, 6, 124, 89, 13, 34, 13, 89, 0, 0, 10, 67, 21,
-			96, 78, 121, 84, 13, 50, 0, 13, 69, 32, 80, 146, 21, 112, 107, 129, 71, 34, 134, 0, 15, 69, 84, 225, 5, 57, 144, 125, 50, 72,
-			122, 50, 6, 137, 0, 13, 69, 81, 35, 208, 33, 144, 47, 34, 136, 83, 37, 0, 8, 197, 77, 84, 150, 21, 144, 36, 14, 69, 77, 84,
-			150, 21, 144, 89, 148, 84, 138, 0, 105, 10, 13, 69, 77, 84, 150, 21, 144, 89, 128, 84, 138, 0, 10, 0, 15, 70, 52, 20, 135, 5,
-			33, 84, 65, 127, 81, 34, 13, 47, 0, 9, 198, 52, 20, 148, 36, 225, 84, 67, 0, 12, 67, 32, 21, 8, 2, 107, 35, 87, 0, 35,
-			9, 19, 71, 65, 148, 129, 52, 145, 1, 48, 48, 113, 34, 6, 35, 65, 122, 72, 118, 0, 18, 71, 24, 192, 71, 20, 195, 21, 52, 83,
-			55, 119, 75, 121, 55, 13, 65, 0, 19, 71, 4, 225, 67, 16, 245, 1, 48, 35, 50, 122, 49, 72, 6, 136, 47, 118, 0, 0, 13, 68,
-			64, 20, 212, 4, 48, 126, 89, 47, 13, 0, 103, 17, 70, 92, 129, 78, 21, 97, 82, 58, 121, 50, 121, 84, 114, 0, 74, 8, 11, 67,
-			64, 20, 1, 48, 126, 48, 13, 0, 103, 11, 67, 64, 20, 1, 48, 119, 48, 6, 126, 0, 12, 68, 52, 19, 9, 12, 65, 35, 55, 122,
-			49, 0, 0, 12, 69, 32, 19, 135, 20, 64, 107, 35, 68, 72, 0, 0, 15, 70, 81, 114, 76, 36, 114, 20, 47, 58, 137, 55, 137, 47,
-			0, 0, 17, 70, 65, 33, 84, 20, 228, 197, 48, 34, 129, 47, 121, 50, 89, 0, 103, 10, 67, 21, 98, 84, 121, 84, 113, 47, 0, 10,
-			199, 4, 229, 9, 25, 33, 90, 20, 65, 0, 12, 68, 88, 83, 149, 76, 84, 129, 50, 13, 89, 0, 10, 68, 80, 243, 142, 20, 47, 125,
-			50, 0, 16, 70, 76, 245, 86, 20, 226, 82, 89, 134, 84, 13, 50, 6, 142, 0, 13, 68, 56, 240, 140, 100, 50, 136, 71, 55, 122, 0,
-			32, 12, 68, 52, 83, 15, 56, 65, 121, 55, 13, 50, 0, 11, 68, 12, 81, 1, 72, 89, 129, 72, 114, 0, 0, 0, 10, 67, 45, 34,
-			83, 49, 34, 122, 89, 0, 14, 70, 32, 20, 142, 21, 52, 192, 107, 127, 50, 123, 89, 0, 11, 66, 17, 32, 72, 124, 49, 47, 114, 0,
-			24, 0, 18, 71, 64, 84, 137, 52, 85, 5, 72, 48, 13, 34, 122, 65, 113, 47, 114, 0, 17, 71, 52, 147, 5, 77, 67, 206, 20, 65,
-			137, 55, 89, 47, 136, 50, 0, 17, 70, 52, 18, 143, 72, 149, 25, 65, 13, 75, 124, 34, 113, 47, 37, 0, 19, 70, 21, 48, 193, 64,
-			148, 205, 121, 89, 49, 6, 138, 48, 113, 88, 13, 65, 0, 0, 11, 68, 37, 50, 65, 32, 137, 88, 6, 144, 0, 11, 68, 80, 241, 1,
-			100, 47, 13, 72, 138, 0, 11, 68, 72, 18, 129, 32, 34, 126, 75, 126, 0, 12, 68, 21, 32, 83, 20, 113, 34, 138, 89, 0, 103, 11,
-			68, 21, 32, 83, 20, 113, 34, 138, 88, 0, 0, 13, 69, 76, 243, 4, 21, 32, 89, 126, 72, 114, 0, 103, 13, 69, 76, 243, 4, 21,
-			32, 89, 124, 55, 72, 114, 0, 20, 73, 52, 148, 195, 32, 145, 86, 61, 84, 192, 65, 122, 89, 76, 113, 84, 13, 89, 0, 0, 16, 6,
-			8, 1, 4, 14, 39, 20, 107, 35, 72, 13, 50, 47, 0, 35, 15, 70, 84, 224, 87, 5, 33, 64, 125, 50, 13, 58, 6, 140, 0, 10,
-			67, 72, 84, 15, 34, 129, 48, 136, 0, 15, 70, 25, 34, 71, 5, 65, 64, 83, 34, 122, 81, 13, 47, 0, 14, 70, 12, 244, 144, 61,
-			32, 76, 49, 132, 48, 34, 118, 0, 0, 25, 67, 53, 84, 212, 65, 4, 125, 89, 47, 35, 84, 47, 116, 0, 35, 82, 104, 97, 118, 101,
-			32, 116, 111, 32, 21, 67, 53, 84, 212, 65, 125, 89, 47, 107, 35, 84, 0, 35, 14, 81, 104, 97, 118, 101, 32, 20, 67, 53, 84, 212,
-			65, 125, 89, 47, 119, 84, 0, 35, 65, 81, 104, 97, 118, 101, 32, 6, 195, 53, 84, 212, 32, 18, 71, 65, 33, 67, 37, 2, 67, 20,
-			48, 34, 121, 89, 113, 48, 122, 89, 0, 18, 70, 29, 32, 68, 84, 21, 5, 81, 34, 35, 72, 57, 134, 138, 47, 0, 36, 17, 70, 29,
-			32, 68, 84, 21, 5, 81, 34, 35, 72, 57, 134, 13, 47, 0, 16, 70, 16, 83, 9, 12, 21, 5, 72, 121, 55, 113, 49, 13, 47, 0,
-			0, 11, 67, 8, 85, 1, 71, 138, 47, 13, 0, 103, 12, 68, 76, 147, 131, 20, 89, 122, 50, 89, 0, 8, 11, 67, 80, 22, 25, 47,
-			35, 49, 89, 37, 0, 10, 67, 64, 21, 5, 48, 35, 108, 138, 0, 9, 67, 24, 85, 5, 83, 138, 47, 0, 10, 67, 8, 85, 1, 71,
-			129, 47, 13, 0, 0, 14, 69, 64, 84, 141, 37, 64, 48, 114, 65, 122, 47, 0, 36, 14, 69, 64, 84, 141, 37, 64, 48, 128, 65, 122,
-			47, 0, 10, 12, 69, 16, 144, 80, 21, 32, 72, 137, 48, 114, 0, 0, 15, 6, 4, 9, 4, 14, 39, 20, 72, 122, 72, 50, 47, 0,
-			32, 15, 70, 61, 85, 12, 37, 97, 64, 135, 47, 55, 6, 122, 84, 0, 17, 70, 21, 129, 67, 85, 65, 64, 121, 49, 89, 113, 49, 57,
-			134, 47, 0, 16, 70, 13, 33, 77, 5, 65, 64, 49, 34, 129, 65, 138, 47, 0, 103, 14, 70, 12, 83, 147, 85, 33, 64, 89, 121, 50,
-			91, 114, 0, 14, 70, 12, 21, 137, 5, 33, 64, 49, 35, 84, 122, 127, 0, 5, 194, 4, 144, 17, 0, 17, 70, 17, 83, 135, 5, 33,
-			69, 72, 125, 68, 81, 119, 34, 6, 129, 0, 0, 33, 8, 3, 15, 21, 12, 4, 14, 39, 20, 6, 49, 117, 72, 13, 50, 47, 35, 84,
-			47, 116, 0, 32, 12, 82, 104, 97, 118, 101, 32, 116, 111, 32, 27, 8, 3, 15, 21, 12, 4, 14, 39, 20, 49, 117, 72, 13, 50, 47,
-			13, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 20, 8, 3, 15, 21, 12, 4, 14, 39, 20, 4, 49, 117, 72, 13, 50, 47, 0, 32,
-			12, 18, 8, 19, 8, 1, 12, 12, 14, 39, 20, 4, 91, 126, 50, 47, 0, 32, 12, 12, 68, 32, 17, 5, 76, 107, 138, 72, 129, 88,
-			0, 10, 67, 80, 145, 25, 47, 137, 72, 37, 0, 10, 67, 48, 147, 25, 55, 122, 55, 37, 0, 12, 68, 5, 33, 78, 4, 119, 34, 129,
-			50, 13, 0, 0, 13, 69, 76, 51, 5, 72, 16, 89, 49, 55, 141, 34, 0, 12, 201, 36, 228, 212, 36, 224, 212, 37, 97, 64, 66, 13,
-			69, 16, 83, 135, 84, 80, 72, 121, 50, 81, 37, 0, 12, 69, 5, 3, 133, 60, 16, 35, 48, 50, 141, 0, 22, 73, 4, 197, 5, 72,
-			224, 84, 37, 97, 64, 130, 55, 47, 6, 128, 50, 13, 47, 122, 84, 0, 0, 10, 67, 72, 81, 15, 34, 129, 72, 134, 0, 0, 13, 70,
-			72, 19, 5, 36, 114, 0, 34, 126, 55, 37, 0, 19, 71, 21, 84, 8, 72, 21, 5, 76, 57, 134, 83, 34, 6, 138, 47, 129, 88, 0,
-			18, 71, 24, 21, 143, 72, 149, 5, 76, 83, 138, 84, 14, 34, 113, 47, 89, 0, 0, 12, 68, 4, 225, 5, 76, 35, 50, 72, 129, 88,
-			0, 15, 70, 72, 85, 18, 36, 19, 0, 34, 129, 47, 34, 144, 55, 0, 10, 67, 72, 83, 25, 34, 113, 55, 137, 0, 11, 68, 72, 17,
-			1, 72, 34, 138, 72, 127, 0, 10, 68, 53, 148, 146, 32, 65, 148, 0, 105, 9, 68, 53, 148, 146, 32, 65, 128, 0, 12, 68, 36, 225,
-			133, 72, 122, 50, 83, 6, 128, 0, 10, 67, 8, 83, 25, 71, 113, 55, 137, 0, 0, 14, 69, 57, 80, 78, 12, 80, 50, 134, 124, 50,
-			89, 0, 103, 0, 16, 70, 60, 33, 76, 37, 50, 192, 124, 71, 13, 55, 113, 89, 49, 0, 13, 70, 28, 245, 82, 52, 85, 0, 81, 143,
-			65, 138, 0, 15, 70, 24, 148, 200, 56, 85, 0, 83, 122, 91, 50, 121, 47, 0, 0, 17, 71, 77, 84, 146, 60, 112, 84, 20, 89, 128,
-			13, 81, 13, 47, 0, 103, 17, 71, 77, 84, 146, 60, 112, 84, 20, 89, 125, 34, 13, 81, 138, 47, 0, 17, 71, 4, 195, 5, 52, 19,
-			132, 20, 35, 55, 13, 65, 35, 50, 72, 0, 0, 21, 72, 49, 86, 5, 52, 35, 213, 72, 112, 55, 125, 49, 89, 13, 65, 71, 148, 81,
-			0, 105, 20, 72, 49, 86, 5, 52, 35, 213, 72, 112, 55, 125, 49, 89, 13, 65, 71, 128, 81, 0, 10, 68, 32, 243, 13, 20, 107, 136,
-			65, 0, 0, 0, 17, 70, 4, 211, 206, 29, 53, 0, 119, 65, 125, 68, 89, 47, 0, 74, 12, 15, 70, 77, 84, 144, 49, 84, 192, 89,
-			128, 48, 55, 13, 89, 0, 0, 0, 13, 68, 49, 82, 71, 36, 55, 134, 6, 129, 75, 37, 0, 20, 72, 72, 80, 201, 65, 35, 195, 4,
-			192, 34, 113, 89, 122, 48, 34, 13, 49, 118, 0, 19, 72, 24, 21, 143, 85, 34, 84, 21, 48, 83, 138, 84, 14, 34, 113, 47, 89, 0,
-			11, 68, 8, 145, 5, 80, 71, 129, 72, 138, 0, 0, 14, 69, 16, 81, 133, 57, 48, 72, 113, 83, 121, 50, 89, 0, 0, 8, 67, 101,
-			97, 83, 129, 84, 0, 16, 70, 24, 243, 212, 32, 243, 4, 83, 117, 47, 107, 136, 55, 72, 0, 12, 4, 95, 20, 21, 18, 47, 6, 128,
-			50, 72, 0, 0, 11, 67, 72, 80, 68, 34, 121, 72, 0, 38, 9, 9, 67, 72, 80, 68, 34, 129, 72, 0, 0, 11, 68, 88, 147, 12,
-			36, 84, 122, 55, 137, 0, 12, 68, 85, 34, 78, 20, 57, 143, 34, 122, 50, 0, 11, 68, 12, 17, 18, 20, 49, 126, 72, 114, 0, 11,
-			68, 5, 33, 207, 56, 127, 81, 124, 50, 0, 11, 68, 4, 65, 15, 56, 35, 72, 124, 50, 0, 0, 14, 69, 52, 17, 18, 36, 64, 65,
-			13, 72, 34, 122, 72, 0, 13, 69, 64, 22, 80, 4, 192, 48, 138, 48, 35, 55, 0, 0, 17, 70, 33, 148, 15, 96, 144, 64, 107, 137,
-			48, 6, 124, 49, 89, 141, 0, 0, 0, 12, 68, 45, 80, 76, 4, 49, 58, 126, 55, 119, 0, 11, 68, 4, 65, 9, 76, 35, 72, 122,
-			89, 0, 10, 68, 17, 34, 69, 72, 72, 34, 145, 0, 20, 72, 5, 35, 83, 48, 83, 135, 80, 128, 4, 127, 65, 88, 55, 6, 121, 68,
-			87, 0, 0, 10, 67, 13, 37, 90, 49, 34, 134, 88, 0, 8, 197, 72, 80, 207, 72, 64, 36, 15, 69, 72, 80, 207, 72, 64, 34, 121,
-			49, 114, 72, 0, 103, 10, 14, 69, 72, 80, 207, 72, 64, 34, 121, 49, 132, 72, 0, 10, 14, 69, 12, 19, 148, 60, 224, 49, 35, 50,
-			47, 124, 50, 0, 0, 17, 70, 48, 144, 133, 72, 144, 64, 55, 137, 71, 6, 141, 34, 129, 13, 0, 10, 67, 48, 147, 79, 55, 122, 65,
-			136, 0, 15, 70, 24, 244, 133, 80, 83, 12, 83, 133, 47, 6, 121, 55, 0, 17, 70, 16, 147, 5, 52, 208, 64, 72, 123, 55, 6, 121,
-			65, 13, 0, 103, 16, 70, 16, 147, 5, 52, 208, 64, 72, 137, 55, 6, 121, 65, 13, 0, 0, 10, 67, 100, 245, 64, 57, 134, 0, 72,
-			32, 9, 67, 4, 113, 68, 138, 75, 72, 0, 0, 12, 68, 16, 243, 3, 20, 72, 124, 55, 76, 138, 0, 0, 14, 69, 17, 83, 131, 4,
-			224, 72, 125, 50, 49, 13, 50, 0, 14, 69, 48, 243, 132, 60, 224, 55, 125, 50, 72, 13, 50, 0, 0, 14, 70, 65, 85, 20, 36, 225,
-			192, 48, 117, 47, 122, 68, 0, 15, 70, 80, 129, 82, 20, 241, 128, 4, 86, 140, 6, 124, 84, 0, 9, 198, 77, 84, 16, 61, 49, 64,
-			66, 17, 70, 65, 33, 84, 72, 144, 76, 48, 34, 129, 47, 34, 6, 137, 118, 0, 16, 70, 21, 2, 84, 60, 209, 64, 113, 48, 122, 47,
-			13, 65, 122, 0, 16, 70, 12, 243, 131, 37, 49, 64, 49, 124, 50, 89, 6, 137, 89, 0, 0, 10, 199, 16, 148, 195, 61, 84, 147, 20,
-			65, 0, 8, 67, 80, 131, 213, 86, 135, 0, 10, 67, 48, 144, 77, 55, 129, 13, 65, 0, 10, 68, 72, 245, 83, 20, 34, 135, 88, 0,
-			0, 8, 197, 61, 85, 6, 37, 64, 65, 13, 69, 60, 209, 76, 21, 64, 124, 65, 55, 13, 47, 0, 0, 18, 66, 16, 80, 72, 138, 75,
-			6, 143, 34, 37, 0, 81, 106, 117, 114, 101, 32, 14, 70, 52, 21, 82, 36, 49, 64, 65, 124, 34, 122, 89, 0, 14, 70, 48, 83, 206,
-			5, 33, 0, 55, 121, 50, 13, 72, 0, 8, 66, 16, 80, 72, 13, 0, 9, 0, 9, 67, 72, 82, 68, 34, 129, 72, 0, 9, 67, 76,
-			178, 64, 89, 49, 129, 0, 17, 71, 56, 84, 195, 36, 83, 131, 20, 50, 121, 89, 122, 13, 50, 89, 0, 0, 12, 68, 81, 34, 78, 4,
-			47, 34, 129, 50, 13, 0, 13, 68, 17, 98, 78, 4, 72, 13, 84, 129, 50, 13, 0, 15, 204, 56, 245, 23, 37, 66, 19, 80, 19, 132,
-			36, 225, 192, 67, 12, 68, 48, 147, 1, 12, 55, 137, 55, 13, 49, 0, 12, 68, 37, 32, 84, 20, 137, 34, 6, 138, 47, 0, 12, 68,
-			33, 86, 154, 4, 107, 13, 88, 6, 126, 0, 0, 13, 67, 8, 81, 78, 4, 71, 122, 50, 0, 103, 35, 9, 12, 67, 8, 81, 78, 4,
-			71, 129, 50, 0, 35, 9, 13, 69, 8, 20, 129, 12, 176, 71, 119, 34, 126, 49, 0, 12, 69, 61, 4, 15, 76, 80, 13, 48, 136, 88,
-			0, 8, 197, 33, 83, 65, 56, 80, 66, 0, 14, 70, 48, 16, 143, 72, 81, 0, 55, 138, 71, 13, 72, 0, 9, 198, 12, 243, 150, 36,
-			53, 0, 36, 17, 70, 12, 243, 150, 36, 53, 0, 49, 124, 50, 84, 122, 49, 47, 0, 10, 0, 15, 70, 12, 20, 142, 20, 114, 69, 49,
-			127, 50, 13, 81, 37, 0, 10, 199, 92, 130, 67, 32, 85, 133, 72, 66, 0, 10, 67, 41, 81, 25, 75, 134, 72, 37, 0, 11, 68, 76,
-			21, 84, 20, 89, 130, 47, 138, 0, 10, 68, 60, 97, 133, 72, 124, 83, 114, 0, 12, 68, 52, 147, 149, 76, 65, 137, 50, 13, 89, 0,
-			21, 72, 16, 145, 76, 20, 53, 18, 36, 48, 72, 144, 55, 6, 121, 49, 47, 34, 122, 49, 0, 11, 4, 95, 4, 16, 20, 48, 139, 50,
-			47, 0, 0, 15, 69, 8, 80, 207, 52, 80, 71, 122, 49, 125, 65, 0, 74, 12, 13, 69, 61, 69, 1, 92, 16, 124, 47, 119, 58, 13,
-			0, 13, 69, 88, 19, 9, 76, 80, 84, 119, 55, 129, 89, 0, 14, 69, 76, 145, 67, 48, 80, 89, 57, 121, 49, 55, 14, 0, 15, 69,
-			21, 84, 133, 44, 16, 57, 134, 6, 34, 129, 49, 119, 0, 13, 69, 8, 85, 1, 44, 80, 71, 113, 47, 138, 49, 0, 10, 67, 4, 227,
-			206, 119, 50, 124, 50, 0, 9, 67, 4, 112, 82, 138, 81, 127, 0, 0, 8, 66, 9, 144, 71, 137, 0, 76, 0, 10, 199, 92, 244, 139,
-			80, 16, 140, 20, 20, 9, 67, 80, 131, 192, 86, 136, 0, 9, 15, 70, 64, 131, 197, 56, 150, 0, 83, 129, 50, 122, 49, 89, 0, 6,
-			195, 84, 99, 192, 17, 0, 11, 68, 4, 193, 137, 20, 35, 55, 83, 37, 0, 10, 67, 48, 147, 65, 55, 129, 65, 119, 0, 12, 68, 52,
-			147, 149, 80, 65, 122, 50, 122, 47, 0, 19, 72, 12, 132, 143, 52, 244, 207, 52, 80, 49, 34, 136, 65, 13, 89, 136, 65, 0, 0, 12,
-			67, 100, 245, 82, 57, 143, 0, 106, 72, 34, 9, 11, 67, 100, 245, 82, 57, 132, 0, 72, 34, 9, 18, 8, 6, 195, 173, 18, 9, 14,
-			14, 5, 83, 129, 34, 122, 50, 38, 13, 0, 14, 69, 84, 227, 5, 77, 48, 125, 50, 55, 6, 121, 89, 0, 8, 197, 80, 21, 20, 60,
-			240, 66, 9, 67, 72, 82, 78, 34, 138, 50, 0, 14, 69, 32, 147, 132, 85, 48, 107, 122, 50, 72, 134, 88, 0, 10, 67, 4, 114, 78,
-			119, 81, 122, 50, 0, 0, 15, 70, 4, 195, 25, 76, 243, 128, 35, 55, 122, 89, 13, 50, 0, 15, 70, 80, 129, 82, 20, 243, 128, 4,
-			86, 140, 6, 124, 50, 0, 9, 198, 65, 35, 212, 21, 53, 0, 36, 17, 70, 65, 35, 212, 21, 53, 0, 48, 34, 136, 47, 121, 89, 47,
-			0, 10, 9, 198, 12, 243, 148, 21, 53, 0, 36, 17, 70, 12, 243, 148, 21, 53, 0, 49, 124, 50, 108, 121, 89, 47, 0, 10, 0, 11,
-			67, 32, 147, 64, 4, 107, 122, 65, 0, 9, 6, 195, 21, 53, 0, 17, 6, 195, 4, 115, 64, 17, 0, 18, 70, 92, 128, 84, 21, 97,
-			82, 58, 125, 47, 121, 84, 114, 0, 103, 66, 8, 17, 70, 92, 128, 84, 21, 97, 82, 58, 124, 47, 121, 84, 114, 0, 66, 8, 12, 68,
-			32, 19, 143, 36, 107, 35, 50, 6, 139, 0, 12, 68, 12, 17, 5, 80, 49, 119, 72, 121, 47, 0, 0, 0, 10, 67, 100, 246, 79, 57,
-			136, 57, 136, 0, 16, 70, 80, 19, 12, 100, 131, 192, 47, 35, 55, 122, 6, 107, 136, 0, 0, 0, 16, 70, 92, 129, 82, 21, 97, 82,
-			58, 2, 140, 44, 121, 84, 114, 0, 17, 70, 76, 16, 143, 80, 85, 82, 89, 35, 71, 13, 47, 6, 148, 0, 105, 16, 70, 76, 16, 143,
-			80, 85, 82, 89, 35, 71, 13, 47, 6, 128, 0, 11, 68, 16, 243, 143, 72, 72, 136, 50, 114, 0, 12, 68, 4, 66, 5, 72, 35, 72,
-			107, 6, 142, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 13, 4, 95, 20, 12, 4, 47, 6, 122, 55, 72, 13, 0, 0, 14, 69, 37,
-			48, 66, 20, 192, 122, 88, 13, 71, 121, 55, 0, 12, 69, 76, 130, 76, 60, 128, 91, 137, 55, 136, 0, 14, 69, 92, 21, 19, 60, 224,
-			58, 124, 47, 89, 13, 50, 0, 12, 69, 36, 227, 129, 72, 64, 122, 50, 114, 72, 0, 9, 67, 4, 195, 0, 130, 55, 0, 42, 0, 14,
-			70, 72, 86, 78, 60, 193, 0, 34, 121, 50, 118, 72, 0, 17, 70, 52, 242, 1, 52, 208, 68, 65, 136, 107, 6, 35, 65, 113, 72, 0,
-			0, 18, 71, 88, 19, 5, 57, 66, 78, 20, 84, 35, 55, 13, 50, 47, 137, 50, 0, 12, 6, 19, 195, 173, 4, 8, 5, 91, 129, 13,
-			0, 10, 199, 76, 83, 73, 9, 33, 86, 20, 65, 6, 195, 20, 69, 0, 17, 0, 11, 68, 12, 242, 5, 56, 49, 136, 13, 50, 0, 12,
-			68, 4, 225, 18, 20, 124, 50, 72, 34, 138, 0, 7, 196, 12, 17, 9, 104, 66, 11, 67, 41, 83, 25, 75, 134, 55, 6, 137, 0, 11,
-			68, 12, 243, 15, 72, 49, 125, 55, 114, 0, 0, 13, 69, 85, 49, 70, 84, 192, 57, 134, 89, 83, 118, 0, 15, 69, 52, 148, 204, 20,
-			64, 65, 122, 89, 55, 6, 121, 72, 0, 0, 9, 198, 61, 97, 82, 48, 244, 132, 65, 16, 70, 24, 244, 141, 36, 48, 64, 83, 132, 65,
-			6, 137, 49, 13, 0, 10, 67, 16, 18, 83, 72, 138, 122, 89, 0, 0, 18, 71, 20, 194, 90, 4, 33, 84, 32, 113, 55, 122, 88, 13,
-			71, 13, 87, 0, 16, 70, 65, 35, 214, 20, 224, 197, 48, 34, 124, 84, 6, 150, 89, 0, 0, 11, 68, 40, 243, 129, 32, 75, 136, 50,
-			13, 0, 11, 68, 16, 147, 129, 32, 72, 137, 50, 13, 0, 10, 67, 76, 181, 65, 89, 49, 134, 13, 0, 11, 68, 64, 244, 211, 20, 48,
-			124, 89, 37, 0, 20, 72, 32, 19, 12, 20, 197, 73, 4, 128, 107, 35, 55, 113, 6, 55, 134, 57, 13, 0, 10, 67, 4, 117, 69, 138,
-			81, 57, 134, 0, 0, 15, 69, 72, 240, 149, 77, 64, 34, 136, 71, 6, 125, 89, 47, 0, 14, 69, 16, 148, 212, 72, 240, 72, 122, 89,
-			47, 34, 136, 0, 0, 15, 70, 32, 20, 212, 36, 225, 192, 107, 138, 89, 47, 122, 68, 0, 9, 198, 77, 80, 140, 36, 209, 64, 66, 17,
-			70, 65, 35, 212, 20, 113, 64, 48, 34, 136, 47, 13, 90, 138, 0, 103, 16, 70, 65, 35, 212, 20, 113, 64, 48, 34, 124, 47, 13, 90,
-			138, 0, 9, 198, 61, 85, 18, 4, 113, 64, 65, 15, 70, 8, 20, 146, 4, 113, 64, 71, 114, 34, 126, 90, 0, 103, 14, 70, 8, 20,
-			146, 4, 113, 64, 71, 35, 34, 126, 90, 0, 0, 17, 70, 52, 243, 148, 4, 117, 69, 65, 124, 50, 108, 13, 81, 57, 134, 0, 10, 199,
-			52, 19, 135, 4, 225, 83, 20, 65, 18, 71, 8, 243, 15, 28, 225, 83, 20, 71, 124, 55, 13, 50, 6, 138, 88, 0, 0, 13, 68, 32,
-			83, 9, 96, 107, 129, 55, 122, 49, 89, 0, 0, 14, 69, 36, 225, 9, 13, 64, 122, 50, 72, 6, 137, 47, 0, 13, 69, 33, 84, 211,
-			5, 32, 107, 125, 88, 6, 127, 0, 15, 69, 21, 48, 207, 73, 64, 121, 89, 49, 6, 132, 47, 0, 36, 0, 15, 70, 92, 21, 6, 61,
-			33, 0, 58, 124, 47, 83, 13, 72, 0, 15, 70, 92, 80, 144, 4, 113, 64, 58, 121, 71, 48, 138, 75, 0, 13, 70, 76, 51, 213, 72,
-			113, 64, 89, 49, 128, 75, 0, 15, 70, 72, 85, 133, 72, 145, 64, 34, 121, 84, 13, 34, 37, 0, 16, 70, 16, 85, 143, 80, 81, 64,
-			72, 121, 84, 136, 47, 6, 129, 0, 0, 13, 6, 3, 18, 195, 168, 13, 5, 49, 34, 121, 65, 0, 6, 195, 16, 150, 64, 17, 0, 15,
-			70, 32, 21, 193, 36, 144, 78, 107, 13, 58, 6, 144, 50, 0, 12, 68, 80, 147, 4, 20, 47, 122, 55, 72, 13, 0, 15, 70, 76, 246,
-			65, 8, 80, 78, 89, 139, 13, 71, 129, 50, 0, 11, 68, 13, 33, 80, 20, 49, 34, 138, 48, 0, 22, 72, 4, 229, 5, 12, 81, 5,
-			57, 64, 35, 50, 47, 122, 89, 6, 129, 72, 13, 50, 47, 0, 0, 10, 67, 56, 80, 82, 4, 50, 142, 0, 12, 0, 17, 70, 60, 33,
-			83, 37, 70, 64, 136, 71, 6, 129, 89, 13, 47, 37, 0, 0, 20, 71, 52, 243, 69, 57, 64, 82, 100, 65, 136, 65, 13, 50, 108, 140,
-			34, 37, 0, 103, 19, 71, 52, 243, 69, 57, 64, 82, 100, 65, 136, 65, 13, 50, 47, 13, 34, 37, 0, 17, 71, 21, 66, 81, 84, 85,
-			20, 20, 121, 47, 123, 49, 13, 47, 0, 103, 10, 199, 21, 66, 81, 84, 85, 20, 20, 65, 0, 7, 196, 77, 66, 76, 48, 32, 10, 68,
-			48, 245, 73, 76, 55, 134, 37, 0, 11, 68, 9, 34, 69, 56, 71, 34, 144, 50, 0, 7, 196, 52, 147, 1, 56, 66, 17, 70, 77, 1,
-			67, 36, 209, 78, 89, 48, 121, 89, 113, 65, 13, 50, 0, 19, 72, 76, 147, 8, 61, 81, 84, 80, 80, 89, 113, 55, 117, 58, 6, 121,
-			47, 0, 9, 67, 32, 150, 65, 107, 137, 119, 0, 12, 68, 12, 243, 15, 56, 49, 136, 55, 13, 50, 0, 0, 14, 69, 8, 83, 9, 104,
-			80, 71, 121, 55, 6, 129, 88, 0, 13, 69, 85, 49, 65, 28, 80, 57, 134, 89, 113, 75, 0, 14, 69, 52, 244, 143, 76, 80, 65, 13,
-			34, 6, 136, 89, 0, 10, 67, 48, 145, 78, 55, 129, 13, 50, 0, 0, 9, 198, 16, 18, 15, 52, 86, 64, 66, 5, 194, 21, 80, 17,
-			0, 11, 67, 52, 241, 84, 65, 136, 6, 121, 47, 0, 19, 71, 4, 208, 82, 100, 195, 9, 76, 35, 65, 13, 34, 6, 122, 55, 122, 89,
-			0, 0, 12, 68, 52, 83, 5, 20, 65, 138, 55, 138, 0, 103, 11, 68, 52, 83, 5, 20, 65, 121, 55, 138, 0, 11, 68, 32, 83, 12,
-			60, 107, 13, 55, 136, 0, 15, 70, 24, 19, 73, 48, 144, 82, 83, 13, 65, 122, 55, 142, 0, 14, 68, 16, 80, 149, 80, 72, 138, 71,
-			6, 57, 134, 0, 103, 12, 68, 16, 80, 149, 80, 72, 138, 71, 57, 134, 0, 19, 72, 5, 4, 18, 20, 229, 9, 12, 80, 119, 48, 34,
-			121, 50, 108, 122, 89, 0, 0, 13, 69, 8, 85, 19, 21, 144, 71, 121, 47, 89, 37, 0, 15, 69, 8, 244, 212, 60, 224, 71, 131, 89,
-			47, 13, 50, 0, 103, 8, 67, 48, 145, 82, 55, 145, 0, 8, 197, 17, 147, 129, 52, 240, 65, 0, 9, 198, 36, 229, 5, 72, 147, 64,
-			65, 16, 70, 8, 84, 212, 21, 53, 0, 71, 121, 89, 47, 13, 89, 47, 0, 0, 17, 71, 25, 34, 67, 5, 52, 197, 20, 83, 34, 122,
-			49, 119, 89, 138, 0, 0, 12, 68, 29, 82, 68, 60, 81, 58, 129, 72, 136, 0, 13, 68, 76, 18, 5, 48, 89, 126, 107, 6, 121, 55,
-			0, 12, 68, 85, 50, 78, 28, 57, 134, 88, 122, 68, 0, 16, 70, 77, 4, 129, 100, 48, 78, 89, 48, 34, 138, 49, 35, 50, 0, 12,
-			68, 76, 19, 1, 16, 89, 35, 55, 13, 72, 0, 10, 67, 60, 176, 89, 136, 49, 6, 138, 0, 0, 8, 67, 64, 145, 82, 48, 142, 0,
-			15, 70, 12, 245, 83, 12, 245, 83, 49, 134, 89, 49, 134, 89, 0, 0, 12, 67, 4, 225, 0, 35, 50, 72, 0, 72, 8, 9, 9, 67,
-			72, 81, 83, 34, 129, 89, 0, 18, 70, 52, 243, 148, 72, 80, 76, 65, 124, 50, 47, 34, 122, 6, 130, 55, 0, 14, 70, 76, 242, 143,
-			85, 35, 128, 89, 136, 75, 128, 50, 0, 0, 9, 66, 4, 224, 119, 50, 0, 34, 9, 10, 67, 80, 147, 153, 47, 137, 50, 37, 0, 16,
-			71, 21, 52, 197, 57, 66, 65, 48, 113, 89, 121, 50, 91, 118, 0, 0, 17, 70, 20, 118, 80, 80, 144, 78, 122, 75, 6, 122, 48, 91,
-			13, 50, 0, 16, 70, 77, 84, 5, 72, 208, 78, 89, 134, 48, 114, 65, 35, 50, 0, 12, 201, 76, 147, 85, 49, 64, 78, 20, 245, 83,
-			67, 0, 10, 67, 72, 83, 143, 34, 129, 50, 136, 0, 11, 68, 76, 243, 129, 72, 89, 136, 50, 127, 0, 7, 196, 84, 226, 3, 72, 17,
-			0, 16, 69, 8, 86, 79, 56, 64, 71, 122, 57, 124, 50, 72, 0, 74, 12, 13, 69, 12, 240, 207, 60, 224, 49, 13, 49, 134, 50, 0,
-			0, 0, 19, 71, 65, 35, 193, 13, 66, 86, 20, 48, 34, 136, 6, 35, 49, 47, 122, 84, 0, 0, 12, 68, 4, 115, 133, 76, 35, 81,
-			50, 13, 89, 0, 12, 68, 12, 243, 135, 60, 49, 124, 68, 81, 136, 0, 12, 68, 76, 147, 133, 92, 89, 122, 50, 57, 134, 0, 19, 72,
-			76, 130, 76, 48, 83, 1, 28, 128, 91, 4, 113, 55, 6, 138, 55, 13, 0, 0, 9, 197, 16, 85, 1, 36, 192, 103, 66, 15, 70, 12,
-			20, 200, 52, 84, 133, 49, 35, 90, 65, 142, 0, 103, 14, 70, 12, 20, 200, 52, 84, 133, 49, 35, 91, 65, 142, 0, 0, 16, 70, 8,
-			145, 5, 24, 244, 132, 71, 122, 72, 122, 83, 13, 72, 0, 15, 70, 65, 33, 77, 36, 84, 128, 48, 34, 13, 65, 142, 0, 103, 15, 70,
-			65, 33, 77, 36, 84, 128, 48, 34, 121, 65, 122, 114, 0, 9, 198, 60, 53, 15, 8, 84, 128, 66, 14, 70, 12, 20, 200, 36, 84, 128,
-			49, 35, 91, 6, 142, 0, 14, 70, 4, 227, 212, 32, 84, 128, 119, 50, 125, 86, 114, 0, 0, 10, 67, 64, 147, 148, 48, 137, 50, 47,
-			0, 8, 67, 21, 113, 64, 57, 134, 0, 0, 21, 72, 8, 19, 135, 48, 81, 5, 76, 128, 71, 35, 68, 81, 55, 13, 72, 6, 121, 91,
-			0, 12, 68, 12, 240, 143, 48, 49, 136, 71, 124, 55, 0, 11, 68, 5, 34, 83, 20, 119, 34, 137, 88, 0, 0, 17, 70, 80, 83, 133,
-			72, 145, 133, 47, 121, 50, 114, 34, 6, 129, 83, 0, 13, 69, 12, 20, 133, 21, 32, 49, 13, 34, 6, 142, 0, 0, 15, 70, 92, 147,
-			132, 36, 225, 192, 58, 137, 50, 72, 122, 68, 0, 0, 0, 11, 68, 12, 131, 15, 20, 49, 55, 136, 37, 0, 21, 68, 92, 147, 132, 76,
-			58, 6, 137, 50, 72, 88, 15, 6, 125, 48, 0, 81, 117, 112, 32, 24, 68, 92, 147, 132, 76, 58, 6, 137, 50, 72, 88, 15, 72, 6,
-			135, 50, 0, 81, 100, 111, 119, 110, 32, 13, 68, 72, 85, 83, 20, 34, 129, 6, 57, 134, 88, 0, 11, 68, 8, 146, 143, 84, 71, 129,
-			90, 134, 0, 0, 19, 67, 16, 145, 0, 72, 122, 72, 50, 124, 47, 0, 32, 78, 81, 110, 111, 116, 32, 10, 67, 16, 145, 0, 72, 122,
-			72, 0, 32, 19, 67, 32, 17, 0, 107, 4, 35, 72, 86, 121, 65, 0, 81, 116, 104, 101, 109, 32, 16, 67, 32, 17, 0, 107, 4, 35,
-			72, 113, 47, 0, 81, 105, 116, 32, 21, 67, 32, 17, 0, 2, 107, 119, 72, 2, 71, 122, 50, 0, 35, 81, 98, 101, 101, 110, 32, 16,
-			67, 32, 17, 0, 107, 35, 72, 47, 134, 0, 14, 81, 116, 111, 32, 16, 67, 32, 17, 0, 107, 2, 35, 72, 47, 116, 0, 81, 116, 111,
-			32, 11, 67, 32, 17, 0, 4, 107, 35, 72, 0, 14, 13, 67, 32, 17, 0, 2, 107, 119, 72, 0, 35, 12, 9, 20, 73, 4, 192, 149,
-			69, 81, 82, 69, 81, 64, 35, 55, 71, 13, 49, 128, 49, 37, 0, 14, 69, 17, 33, 65, 53, 64, 72, 34, 121, 65, 48, 47, 0, 0,
-			15, 70, 24, 244, 148, 84, 225, 64, 83, 132, 76, 13, 50, 0, 103, 8, 66, 16, 144, 72, 137, 0, 41, 14, 70, 92, 20, 146, 36, 225,
-			192, 58, 132, 34, 122, 68, 0, 18, 70, 25, 33, 81, 84, 83, 148, 83, 34, 113, 49, 58, 121, 50, 47, 0, 36, 14, 70, 24, 244, 148,
-			84, 225, 64, 83, 132, 76, 134, 50, 0, 9, 66, 16, 144, 72, 4, 122, 0, 9, 16, 66, 20, 112, 83, 132, 121, 81, 88, 6, 120, 65,
-			48, 118, 0, 9, 0, 17, 71, 88, 83, 135, 20, 19, 131, 20, 84, 121, 50, 75, 13, 50, 89, 0, 18, 71, 20, 51, 205, 52, 84, 131,
-			20, 6, 129, 49, 4, 124, 65, 128, 89, 0, 6, 195, 4, 243, 0, 17, 0, 11, 68, 4, 195, 5, 56, 35, 55, 13, 50, 0, 12, 68,
-			48, 147, 133, 56, 55, 122, 50, 113, 50, 0, 11, 68, 48, 16, 143, 72, 55, 138, 71, 114, 0, 12, 68, 5, 50, 197, 92, 119, 89, 49,
-			57, 134, 0, 11, 68, 5, 34, 69, 76, 140, 34, 129, 88, 0, 0, 14, 69, 64, 19, 69, 48, 16, 48, 35, 65, 13, 55, 13, 0, 13,
-			69, 12, 129, 82, 36, 80, 91, 140, 34, 6, 129, 0, 14, 69, 64, 82, 201, 56, 112, 48, 129, 49, 6, 122, 68, 0, 14, 69, 80, 148,
-			129, 16, 80, 47, 137, 34, 6, 138, 72, 0, 20, 73, 72, 21, 1, 80, 245, 73, 48, 193, 64, 34, 35, 47, 13, 47, 6, 134, 122, 0,
-			14, 69, 24, 147, 129, 48, 80, 83, 113, 50, 126, 55, 37, 0, 17, 70, 4, 195, 5, 49, 82, 65, 35, 55, 113, 55, 6, 134, 57, 13,
-			0, 12, 69, 4, 195, 5, 48, 80, 119, 55, 129, 55, 0, 0, 0, 16, 70, 41, 82, 197, 8, 246, 0, 75, 134, 49, 71, 124, 49, 89,
-			0, 17, 71, 24, 21, 143, 85, 34, 84, 20, 83, 138, 84, 14, 34, 113, 47, 0, 0, 11, 68, 76, 243, 142, 100, 89, 125, 50, 122, 0,
-			12, 68, 37, 35, 206, 100, 137, 34, 13, 50, 122, 0, 15, 70, 13, 35, 195, 32, 85, 0, 49, 34, 136, 91, 6, 138, 0, 0, 13, 69,
-			52, 240, 137, 48, 80, 65, 136, 71, 118, 0, 103, 14, 69, 76, 16, 137, 56, 16, 89, 119, 71, 129, 50, 13, 0, 15, 69, 24, 144, 83,
-			12, 240, 83, 129, 6, 35, 89, 49, 136, 0, 0, 10, 67, 80, 147, 129, 47, 129, 50, 13, 0, 0, 13, 69, 64, 147, 5, 85, 0, 48,
-			137, 55, 125, 48, 0, 0, 11, 200, 4, 229, 1, 72, 53, 9, 12, 16, 66, 11, 68, 72, 83, 129, 48, 34, 129, 50, 118, 0, 11, 68,
-			64, 83, 129, 48, 48, 129, 50, 118, 0, 20, 72, 16, 83, 9, 8, 84, 129, 80, 80, 72, 113, 55, 122, 71, 13, 34, 13, 47, 0, 12,
-			68, 12, 19, 129, 48, 49, 13, 50, 35, 55, 0, 11, 68, 8, 19, 129, 48, 71, 138, 50, 118, 0, 0, 13, 69, 77, 64, 82, 73, 144,
-			89, 47, 126, 34, 122, 0, 10, 67, 73, 82, 78, 34, 134, 113, 50, 0, 17, 70, 52, 81, 9, 12, 147, 133, 65, 121, 72, 13, 89, 13,
-			50, 0, 103, 15, 70, 52, 81, 9, 12, 147, 133, 65, 121, 72, 89, 13, 50, 0, 0, 10, 67, 16, 19, 129, 72, 138, 50, 13, 0, 9,
-			198, 8, 18, 18, 4, 147, 128, 66, 17, 70, 32, 243, 73, 56, 83, 64, 107, 124, 65, 13, 50, 13, 65, 0, 103, 16, 70, 32, 243, 73,
-			56, 83, 64, 107, 124, 65, 122, 50, 121, 65, 0, 0, 19, 71, 64, 85, 18, 60, 193, 85, 52, 48, 13, 47, 34, 136, 55, 129, 13, 65,
-			0, 16, 71, 12, 245, 78, 80, 84, 133, 16, 49, 135, 50, 47, 114, 72, 0, 19, 71, 4, 97, 137, 16, 21, 137, 80, 35, 83, 122, 72,
-			6, 138, 84, 122, 47, 0, 0, 10, 67, 104, 85, 83, 88, 57, 134, 89, 0, 10, 67, 81, 148, 15, 47, 137, 48, 136, 0, 14, 70, 77,
-			84, 16, 48, 145, 82, 89, 13, 48, 55, 145, 0, 15, 70, 61, 85, 16, 61, 53, 0, 135, 47, 48, 136, 89, 47, 0, 12, 68, 52, 244,
-			5, 16, 65, 136, 48, 121, 72, 0, 11, 68, 5, 33, 213, 20, 127, 81, 57, 134, 0, 0, 13, 69, 76, 80, 77, 85, 48, 91, 138, 65,
-			13, 89, 0, 15, 70, 93, 34, 84, 4, 35, 5, 34, 137, 47, 13, 71, 118, 0, 13, 69, 76, 84, 137, 21, 48, 89, 129, 34, 129, 88,
-			0, 15, 70, 24, 19, 12, 36, 35, 5, 83, 35, 55, 13, 71, 118, 0, 0, 15, 70, 77, 65, 80, 32, 83, 128, 89, 47, 129, 84, 13,
-			50, 0, 17, 70, 4, 225, 207, 48, 19, 128, 35, 68, 81, 6, 136, 55, 13, 50, 0, 9, 198, 32, 16, 137, 81, 80, 76, 66, 6, 66,
-			20, 128, 138, 0, 0, 15, 70, 64, 192, 71, 84, 147, 135, 48, 55, 138, 81, 122, 68, 0, 17, 71, 20, 21, 133, 76, 68, 143, 64, 129,
-			84, 88, 72, 34, 124, 48, 0, 0, 14, 70, 72, 82, 78, 16, 81, 82, 34, 138, 50, 72, 142, 0, 21, 73, 52, 17, 5, 52, 242, 83,
-			20, 195, 5, 65, 35, 72, 13, 65, 13, 88, 121, 55, 0, 17, 70, 13, 84, 212, 60, 209, 82, 49, 6, 125, 89, 47, 13, 65, 114, 0,
-			11, 68, 4, 34, 15, 72, 119, 71, 107, 133, 0, 0, 14, 69, 5, 34, 83, 20, 224, 13, 34, 122, 88, 13, 50, 0, 0, 15, 70, 92,
-			131, 197, 88, 84, 128, 107, 134, 121, 84, 114, 0, 66, 14, 70, 76, 49, 80, 80, 84, 128, 89, 121, 48, 47, 114, 0, 0, 0, 12, 68,
-			16, 84, 133, 44, 72, 121, 34, 122, 49, 0, 0, 28, 69, 76, 131, 213, 48, 64, 91, 117, 72, 107, 35, 84, 47, 116, 0, 74, 32, 12,
-			82, 104, 97, 118, 101, 32, 116, 111, 32, 21, 69, 76, 131, 213, 48, 64, 91, 117, 72, 13, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32,
-			15, 69, 76, 131, 213, 48, 64, 4, 91, 117, 72, 0, 32, 9, 12, 13, 69, 52, 20, 129, 84, 64, 65, 13, 34, 130, 72, 0, 13, 69,
-			33, 84, 146, 4, 128, 107, 125, 34, 6, 138, 0, 13, 69, 33, 84, 146, 4, 128, 107, 13, 34, 6, 126, 0, 13, 3, 226, 132, 162, 47,
-			34, 138, 72, 65, 127, 49, 0, 0, 13, 70, 48, 242, 78, 56, 148, 128, 55, 125, 50, 141, 0, 14, 70, 64, 147, 206, 20, 84, 128, 48,
-			144, 50, 6, 142, 0, 13, 202, 12, 243, 148, 20, 212, 12, 5, 66, 86, 20, 66, 25, 74, 5, 85, 8, 61, 34, 84, 5, 66, 86, 20,
-			119, 87, 6, 131, 34, 13, 108, 138, 108, 122, 84, 0, 103, 24, 74, 5, 85, 8, 61, 34, 84, 5, 66, 86, 20, 130, 87, 6, 124, 34,
-			113, 47, 13, 47, 122, 84, 0, 0, 0, 20, 72, 32, 19, 12, 20, 197, 74, 4, 128, 107, 35, 55, 113, 6, 55, 134, 57, 13, 0, 0,
-			0, 19, 67, 32, 21, 133, 107, 119, 84, 50, 124, 47, 0, 35, 14, 81, 110, 111, 116, 32, 19, 67, 32, 21, 133, 107, 119, 84, 50, 4,
-			124, 47, 0, 35, 81, 110, 111, 116, 32, 21, 67, 32, 21, 133, 2, 107, 119, 84, 2, 71, 122, 50, 0, 35, 81, 98, 101, 101, 110, 32,
-			13, 67, 32, 21, 133, 107, 35, 84, 0, 35, 9, 72, 12, 10, 67, 48, 149, 133, 55, 122, 84, 0, 36, 10, 67, 48, 149, 133, 55, 137,
-			84, 0, 10, 10, 67, 48, 21, 129, 55, 126, 84, 13, 0, 13, 70, 12, 240, 203, 21, 145, 64, 49, 124, 49, 137, 0, 0, 6, 195, 72,
-			85, 128, 24, 6, 195, 32, 149, 128, 17, 0, 14, 68, 44, 244, 133, 4, 49, 114, 34, 6, 129, 13, 0, 103, 13, 68, 44, 244, 133, 4,
-			49, 131, 34, 6, 129, 13, 0, 10, 68, 24, 244, 131, 20, 83, 133, 89, 0, 11, 68, 12, 19, 143, 20, 49, 13, 50, 134, 0, 12, 68,
-			5, 35, 205, 4, 119, 34, 136, 65, 13, 0, 0, 15, 69, 72, 81, 140, 21, 128, 34, 129, 83, 55, 121, 49, 89, 0, 16, 69, 52, 147,
-			149, 21, 64, 65, 122, 50, 57, 134, 6, 121, 47, 0, 12, 69, 32, 82, 70, 21, 32, 107, 121, 83, 114, 0, 8, 67, 20, 145, 0, 129,
-			72, 0, 0, 16, 70, 20, 195, 213, 37, 49, 64, 121, 55, 134, 58, 6, 129, 88, 0, 10, 67, 80, 16, 149, 47, 35, 71, 134, 0, 0,
-			18, 71, 36, 225, 133, 72, 83, 131, 20, 122, 50, 83, 13, 34, 13, 50, 89, 0, 0, 0, 13, 69, 88, 148, 137, 48, 80, 84, 122, 34,
-			118, 0, 103, 13, 69, 16, 240, 201, 48, 80, 72, 136, 89, 118, 0, 103, 13, 67, 28, 85, 0, 2, 81, 121, 47, 0, 12, 35, 9, 14,
-			69, 32, 84, 143, 36, 48, 107, 113, 34, 136, 122, 49, 0, 18, 73, 4, 48, 207, 84, 50, 5, 52, 83, 148, 119, 49, 134, 91, 65, 151,
-			0, 13, 3, 226, 132, 150, 50, 57, 134, 65, 13, 34, 136, 0, 0, 15, 70, 76, 19, 131, 32, 86, 128, 89, 35, 50, 76, 121, 88, 0,
-			10, 67, 52, 243, 153, 65, 125, 50, 122, 0, 0, 17, 71, 76, 19, 9, 76, 37, 82, 100, 89, 130, 55, 89, 71, 34, 37, 0, 19, 71,
-			37, 51, 211, 12, 83, 5, 76, 137, 89, 6, 124, 89, 13, 55, 129, 88, 0, 0, 12, 68, 61, 34, 79, 56, 124, 34, 6, 144, 50, 0,
-			10, 68, 36, 227, 133, 72, 122, 50, 114, 0, 12, 68, 32, 21, 143, 12, 107, 35, 84, 13, 49, 0, 14, 68, 21, 128, 76, 80, 121, 81,
-			88, 6, 124, 55, 47, 0, 19, 72, 5, 85, 15, 52, 240, 137, 48, 80, 130, 47, 13, 65, 13, 71, 141, 55, 0, 0, 13, 69, 16, 20,
-			8, 56, 80, 72, 35, 83, 50, 37, 0, 8, 197, 72, 245, 1, 80, 80, 66, 18, 70, 72, 80, 68, 60, 227, 25, 4, 34, 129, 72, 6,
-			136, 50, 55, 122, 0, 13, 69, 56, 81, 193, 80, 80, 50, 113, 81, 138, 47, 0, 13, 69, 48, 145, 193, 80, 80, 55, 129, 81, 138, 47,
-			0, 14, 69, 13, 84, 129, 80, 80, 49, 57, 143, 34, 138, 47, 0, 8, 197, 5, 84, 143, 72, 16, 66, 0, 16, 70, 12, 149, 1, 16,
-			83, 0, 89, 122, 47, 13, 72, 121, 55, 0, 0, 18, 71, 88, 81, 197, 80, 16, 140, 20, 84, 121, 75, 113, 47, 13, 71, 118, 0, 11,
-			199, 36, 229, 5, 73, 37, 80, 80, 67, 36, 11, 199, 36, 229, 5, 73, 37, 80, 80, 65, 10, 20, 71, 36, 225, 140, 84, 83, 154, 4,
-			122, 50, 83, 55, 134, 6, 121, 50, 88, 13, 0, 13, 3, 226, 133, 148, 47, 134, 87, 6, 128, 72, 88, 0, 0, 11, 68, 44, 21, 9,
-			20, 49, 138, 47, 37, 0, 0, 15, 70, 49, 82, 197, 92, 20, 141, 55, 134, 49, 58, 132, 65, 0, 13, 69, 32, 84, 141, 21, 48, 107,
-			128, 65, 129, 88, 0, 13, 69, 4, 66, 69, 85, 48, 119, 72, 57, 134, 88, 0, 0, 15, 70, 28, 147, 12, 36, 19, 128, 75, 122, 55,
-			129, 13, 50, 0, 14, 70, 76, 80, 76, 36, 243, 128, 89, 129, 55, 144, 50, 0, 16, 70, 12, 20, 129, 88, 19, 128, 49, 35, 34, 13,
-			84, 35, 50, 0, 0, 9, 198, 4, 229, 9, 32, 84, 143, 65, 0, 13, 68, 56, 84, 1, 48, 50, 121, 48, 6, 130, 55, 0, 13, 68,
-			88, 19, 5, 80, 84, 35, 55, 6, 138, 0, 103, 11, 68, 88, 19, 5, 80, 84, 35, 55, 138, 0, 12, 68, 84, 229, 9, 20, 125, 50,
-			47, 6, 137, 0, 12, 68, 72, 84, 5, 48, 34, 113, 48, 121, 55, 0, 11, 68, 64, 20, 1, 48, 48, 138, 48, 118, 0, 12, 68, 8,
-			148, 5, 16, 71, 137, 48, 121, 72, 0, 15, 70, 8, 19, 12, 5, 53, 0, 71, 35, 55, 13, 89, 47, 0, 13, 3, 226, 133, 147, 58,
-			124, 50, 87, 6, 128, 72, 0, 0, 23, 73, 72, 84, 212, 61, 32, 84, 36, 243, 128, 34, 121, 89, 47, 13, 34, 6, 138, 91, 13, 50,
-			0, 23, 73, 72, 84, 208, 37, 32, 84, 36, 243, 128, 34, 121, 89, 48, 113, 34, 6, 138, 91, 13, 50, 0, 23, 73, 65, 33, 80, 5,
-			32, 84, 36, 243, 128, 48, 34, 121, 48, 13, 34, 6, 138, 91, 13, 50, 0, 14, 69, 52, 148, 197, 73, 144, 65, 122, 88, 13, 34, 122,
-			0, 13, 69, 32, 17, 199, 37, 48, 107, 35, 81, 122, 89, 0, 21, 73, 4, 97, 137, 72, 208, 84, 36, 243, 128, 35, 83, 114, 65, 6,
-			138, 91, 13, 50, 0, 0, 17, 70, 8, 85, 23, 20, 83, 128, 71, 122, 47, 58, 129, 50, 0, 74, 12, 16, 70, 32, 17, 18, 36, 19,
-			128, 107, 138, 72, 34, 129, 13, 50, 0, 16, 70, 76, 52, 143, 81, 83, 64, 89, 49, 34, 136, 47, 13, 65, 0, 16, 70, 48, 144, 73,
-			76, 243, 128, 55, 129, 6, 138, 88, 124, 50, 0, 0, 0, 12, 68, 44, 20, 133, 56, 49, 35, 34, 13, 50, 0, 11, 68, 16, 83, 8,
-			36, 72, 121, 55, 37, 0, 15, 70, 64, 148, 85, 4, 229, 0, 48, 129, 49, 13, 50, 47, 0, 12, 68, 61, 2, 78, 20, 136, 48, 6,
-			137, 50, 0, 11, 68, 44, 244, 10, 20, 49, 124, 48, 37, 0, 12, 201, 16, 148, 210, 21, 5, 84, 4, 35, 5, 66, 12, 68, 12, 18,
-			149, 56, 49, 138, 75, 13, 50, 0, 12, 68, 9, 84, 197, 76, 71, 125, 89, 123, 88, 0, 0, 13, 69, 48, 21, 78, 12, 128, 55, 126,
-			50, 76, 0, 103, 14, 69, 8, 147, 141, 4, 224, 71, 122, 50, 65, 35, 50, 0, 13, 69, 8, 19, 12, 4, 64, 71, 35, 55, 13, 72,
-			0, 0, 16, 70, 52, 21, 9, 48, 64, 64, 65, 119, 47, 122, 55, 72, 13, 0, 0, 18, 71, 64, 19, 5, 77, 66, 78, 20, 48, 35,
-			55, 13, 89, 47, 137, 50, 0, 17, 71, 44, 148, 139, 12, 19, 4, 100, 49, 147, 49, 6, 124, 72, 37, 0, 18, 71, 36, 229, 133, 72,
-			225, 83, 76, 122, 50, 84, 114, 50, 6, 121, 89, 0, 9, 67, 4, 128, 64, 126, 107, 126, 0, 0, 12, 68, 52, 147, 132, 100, 65, 122,
-			50, 72, 37, 0, 10, 67, 12, 193, 79, 49, 55, 129, 136, 0, 12, 68, 40, 20, 1, 56, 75, 13, 48, 35, 50, 0, 12, 68, 28, 83,
-			146, 20, 90, 124, 50, 34, 13, 0, 20, 72, 4, 229, 9, 64, 131, 206, 4, 192, 35, 50, 47, 6, 122, 83, 13, 50, 118, 0, 9, 3,
-			95, 49, 15, 83, 6, 128, 0, 0, 10, 67, 4, 128, 66, 138, 107, 35, 71, 0, 10, 67, 56, 83, 206, 50, 129, 124, 50, 0, 0, 0,
-			9, 67, 88, 81, 192, 84, 121, 75, 0, 10, 67, 60, 193, 68, 136, 55, 121, 72, 0, 8, 67, 20, 113, 192, 121, 81, 0, 15, 71, 8,
-			245, 82, 28, 83, 201, 76, 71, 143, 90, 58, 126, 0, 11, 3, 226, 130, 172, 57, 143, 34, 136, 88, 0, 0, 11, 68, 76, 20, 129, 32,
-			89, 140, 34, 13, 0, 12, 5, 16, 9, 195, 177, 1, 48, 129, 67, 119, 0, 12, 68, 60, 244, 129, 32, 6, 134, 34, 6, 126, 0, 0,
-			13, 5, 13, 15, 195, 171, 20, 65, 136, 6, 121, 47, 0, 13, 69, 69, 82, 86, 21, 32, 49, 58, 122, 84, 114, 0, 15, 70, 32, 243,
-			69, 64, 17, 197, 107, 136, 65, 48, 138, 75, 0, 14, 70, 12, 20, 211, 21, 69, 5, 49, 119, 89, 121, 47, 0, 0, 15, 70, 40, 20,
-			205, 36, 225, 64, 75, 35, 88, 65, 122, 50, 0, 16, 70, 21, 48, 193, 72, 115, 212, 113, 89, 49, 6, 127, 81, 136, 0, 9, 198, 12,
-			20, 195, 4, 65, 64, 66, 9, 3, 226, 130, 169, 58, 124, 50, 0, 0, 9, 67, 72, 81, 192, 34, 121, 75, 0, 10, 3, 226, 130, 168,
-			34, 134, 48, 129, 0, 0, 10, 68, 4, 195, 1, 100, 119, 55, 138, 0, 10, 3, 95, 50, 15, 89, 6, 121, 49, 0, 0, 16, 69, 72,
-			84, 15, 77, 64, 34, 4, 129, 48, 6, 136, 89, 47, 0, 17, 70, 65, 33, 83, 80, 145, 197, 48, 34, 121, 89, 47, 6, 129, 90, 0,
-			14, 69, 12, 245, 133, 73, 64, 49, 136, 84, 6, 128, 47, 0, 0, 9, 66, 32, 80, 107, 129, 0, 72, 33, 13, 70, 76, 128, 76, 48,
-			245, 192, 91, 35, 55, 136, 0, 17, 70, 65, 34, 77, 21, 96, 76, 48, 34, 137, 65, 6, 129, 84, 118, 0, 7, 66, 40, 16, 57, 126,
-			0, 15, 70, 36, 208, 71, 36, 225, 64, 113, 65, 35, 75, 113, 50, 0, 8, 66, 24, 144, 83, 4, 137, 0, 16, 70, 5, 69, 1, 12,
-			129, 64, 35, 108, 35, 6, 91, 138, 0, 103, 16, 70, 5, 69, 1, 12, 129, 64, 35, 47, 6, 35, 91, 138, 0, 9, 11, 67, 4, 129,
-			77, 119, 107, 6, 121, 65, 0, 14, 70, 4, 50, 9, 48, 193, 64, 119, 49, 122, 55, 129, 0, 0, 0, 12, 68, 8, 83, 137, 56, 71,
-			121, 50, 122, 50, 0, 12, 68, 64, 20, 133, 56, 48, 119, 34, 121, 50, 0, 13, 68, 44, 244, 129, 56, 49, 132, 34, 6, 126, 50, 0,
-			10, 67, 32, 82, 0, 107, 121, 107, 0, 9, 21, 72, 12, 148, 131, 84, 213, 133, 57, 64, 89, 147, 49, 13, 65, 84, 121, 50, 47, 0,
-			105, 20, 72, 12, 148, 131, 84, 213, 133, 57, 64, 89, 128, 49, 13, 65, 84, 121, 50, 47, 0, 16, 70, 12, 16, 137, 56, 85, 0, 49,
-			35, 71, 123, 50, 13, 47, 0, 11, 68, 4, 35, 5, 72, 138, 71, 55, 114, 0, 0, 15, 69, 16, 144, 76, 60, 112, 72, 137, 13, 55,
-			130, 81, 0, 103, 15, 69, 17, 99, 210, 4, 176, 72, 14, 84, 133, 90, 35, 49, 0, 13, 69, 8, 243, 199, 36, 80, 71, 117, 81, 37,
-			0, 103, 12, 69, 8, 243, 199, 36, 80, 71, 134, 81, 37, 0, 0, 10, 67, 48, 146, 197, 55, 137, 49, 0, 12, 15, 70, 44, 20, 129,
-			12, 130, 64, 49, 119, 34, 127, 76, 37, 0, 15, 70, 49, 83, 12, 4, 38, 64, 55, 125, 55, 13, 71, 137, 0, 9, 198, 12, 243, 134,
-			48, 144, 212, 36, 18, 70, 12, 243, 134, 48, 144, 212, 49, 124, 50, 83, 55, 122, 49, 47, 0, 10, 0, 0, 12, 68, 16, 19, 148, 20,
-			72, 126, 50, 108, 138, 0, 20, 72, 65, 33, 67, 20, 65, 78, 12, 80, 48, 34, 121, 89, 113, 72, 13, 50, 89, 0, 16, 70, 64, 84,
-			134, 20, 53, 0, 48, 114, 83, 121, 49, 47, 0, 36, 16, 70, 64, 84, 134, 20, 53, 0, 48, 128, 83, 121, 49, 47, 0, 10, 17, 70,
-			25, 37, 73, 80, 147, 206, 83, 34, 134, 6, 122, 91, 13, 50, 0, 10, 67, 24, 150, 0, 83, 122, 49, 89, 0, 19, 72, 12, 243, 12,
-			20, 114, 65, 80, 80, 49, 13, 55, 129, 75, 122, 13, 47, 0, 9, 3, 95, 51, 15, 87, 6, 128, 0, 8, 4, 95, 15, 18, 4, 87,
-			0, 0, 14, 69, 76, 16, 137, 56, 80, 89, 119, 71, 6, 129, 50, 0, 13, 69, 52, 19, 9, 12, 80, 65, 35, 55, 113, 89, 0, 11,
-			69, 28, 21, 67, 32, 80, 81, 136, 91, 0, 0, 10, 66, 37, 48, 2, 122, 88, 0, 35, 9, 16, 70, 37, 52, 129, 20, 194, 64, 122,
-			88, 34, 6, 138, 55, 37, 0, 16, 70, 76, 132, 137, 48, 198, 64, 91, 34, 122, 55, 55, 122, 0, 32, 0, 14, 70, 29, 82, 78, 56,
-			84, 211, 81, 122, 50, 122, 89, 0, 13, 67, 9, 99, 4, 71, 117, 55, 13, 84, 127, 72, 0, 0, 12, 68, 40, 20, 133, 16, 75, 35,
-			34, 121, 72, 0, 11, 68, 88, 148, 129, 48, 84, 145, 34, 118, 0, 11, 68, 28, 21, 133, 48, 81, 35, 84, 118, 0, 11, 68, 12, 244,
-			129, 48, 49, 124, 34, 118, 0, 10, 67, 4, 115, 199, 119, 81, 124, 81, 0, 0, 13, 69, 24, 147, 133, 77, 48, 83, 113, 50, 121, 89,
-			0, 13, 69, 16, 147, 135, 33, 144, 72, 122, 68, 81, 37, 0, 0, 0, 17, 71, 80, 83, 142, 21, 52, 197, 20, 47, 121, 50, 13, 89,
-			6, 129, 0, 0, 19, 72, 65, 54, 67, 32, 144, 84, 73, 144, 89, 137, 49, 6, 144, 47, 34, 122, 0, 13, 68, 32, 20, 133, 52, 107,
-			126, 34, 6, 129, 65, 0, 15, 70, 24, 18, 82, 21, 53, 0, 83, 140, 34, 13, 89, 47, 0, 12, 68, 16, 147, 135, 100, 72, 122, 50,
-			75, 122, 0, 0, 13, 69, 76, 17, 133, 81, 144, 89, 138, 83, 47, 37, 0, 8, 197, 61, 85, 3, 73, 144, 65, 13, 69, 48, 149, 133,
-			49, 144, 55, 137, 84, 55, 122, 0, 0, 9, 66, 20, 192, 4, 121, 55, 0, 9, 5, 194, 36, 64, 17, 0, 10, 67, 32, 20, 192, 107,
-			35, 88, 0, 42, 17, 67, 32, 20, 192, 107, 4, 35, 88, 113, 47, 0, 14, 81, 105, 116, 32, 19, 67, 32, 20, 192, 107, 119, 88, 50,
-			124, 47, 0, 35, 14, 81, 110, 111, 116, 32, 19, 67, 32, 20, 192, 107, 13, 88, 50, 2, 124, 47, 0, 35, 81, 110, 111, 116, 32, 16,
-			67, 32, 20, 192, 107, 35, 88, 47, 134, 0, 14, 81, 116, 111, 32, 21, 67, 32, 20, 192, 2, 107, 119, 88, 2, 71, 122, 50, 0, 35,
-			81, 98, 101, 101, 110, 32, 11, 67, 32, 20, 192, 107, 35, 88, 0, 9, 14, 12, 67, 32, 20, 192, 2, 107, 119, 88, 0, 35, 9, 8,
-			67, 81, 148, 128, 47, 145, 0, 10, 67, 80, 148, 192, 47, 122, 88, 0, 9, 18, 71, 12, 129, 86, 72, 243, 5, 80, 91, 121, 84, 34,
-			13, 55, 6, 138, 0, 0, 10, 67, 16, 148, 195, 72, 122, 89, 49, 0, 11, 68, 12, 19, 22, 20, 49, 35, 84, 0, 103, 10, 68, 12,
-			19, 22, 20, 49, 126, 84, 0, 0, 16, 69, 8, 82, 9, 56, 64, 71, 122, 107, 137, 50, 72, 0, 74, 12, 12, 69, 16, 20, 146, 100,
-			192, 72, 35, 34, 118, 0, 9, 198, 61, 97, 82, 81, 84, 133, 65, 14, 69, 4, 211, 210, 4, 192, 138, 65, 6, 124, 34, 118, 0, 0,
-			15, 70, 80, 84, 85, 36, 192, 64, 47, 13, 49, 129, 55, 13, 0, 15, 70, 25, 34, 78, 28, 84, 128, 83, 34, 122, 50, 75, 114, 0,
-			14, 70, 5, 36, 197, 56, 144, 192, 127, 89, 50, 122, 49, 0, 0, 13, 67, 32, 148, 192, 107, 122, 88, 0, 72, 34, 9, 12, 16, 71,
-			44, 21, 8, 21, 34, 78, 20, 49, 35, 87, 34, 113, 50, 0, 19, 71, 80, 19, 135, 21, 34, 78, 20, 47, 35, 50, 75, 13, 34, 6,
-			129, 50, 0, 12, 67, 48, 20, 192, 4, 55, 126, 89, 0, 103, 9, 11, 67, 48, 20, 192, 4, 55, 35, 89, 0, 9, 0, 16, 70, 72,
-			83, 78, 4, 229, 0, 34, 121, 65, 50, 13, 50, 47, 0, 12, 68, 13, 147, 82, 84, 49, 125, 65, 34, 37, 0, 10, 3, 95, 53, 15,
-			83, 6, 122, 83, 0, 0, 23, 73, 52, 147, 142, 20, 20, 15, 48, 148, 192, 65, 122, 50, 129, 6, 35, 48, 13, 55, 113, 89, 0, 14,
-			69, 12, 244, 146, 4, 192, 49, 13, 34, 6, 35, 55, 0, 16, 70, 12, 240, 203, 77, 84, 133, 4, 49, 124, 49, 91, 6, 143, 0, 17,
-			70, 9, 35, 195, 33, 84, 133, 71, 34, 136, 6, 91, 143, 34, 0, 103, 14, 70, 9, 35, 195, 33, 84, 133, 71, 34, 136, 91, 114, 0,
-			0, 6, 194, 37, 64, 42, 17, 19, 66, 37, 64, 2, 122, 47, 15, 58, 125, 88, 0, 103, 14, 81, 119, 97, 115, 32, 18, 66, 37, 64,
-			2, 122, 47, 15, 58, 124, 88, 0, 14, 81, 119, 97, 115, 32, 16, 66, 37, 64, 2, 122, 47, 15, 122, 88, 0, 14, 81, 105, 115, 32,
-			18, 66, 37, 64, 2, 122, 47, 15, 107, 35, 88, 0, 14, 81, 104, 97, 115, 32, 9, 66, 37, 64, 122, 47, 0, 72, 33, 10, 67, 36,
-			245, 193, 137, 13, 58, 13, 0, 17, 70, 65, 35, 212, 60, 51, 204, 48, 34, 136, 47, 13, 49, 124, 55, 0, 15, 70, 52, 17, 208, 36,
-			84, 192, 65, 35, 81, 48, 137, 88, 0, 15, 4, 95, 13, 3, 14, 65, 6, 35, 49, 34, 4, 124, 50, 0, 0, 19, 67, 24, 85, 192,
-			83, 6, 57, 134, 65, 4, 133, 0, 81, 109, 111, 114, 101, 32, 0, 0, 13, 69, 4, 66, 69, 85, 128, 119, 72, 57, 134, 88, 0, 0,
-			15, 70, 48, 82, 80, 104, 145, 192, 55, 137, 48, 89, 122, 81, 0, 15, 70, 77, 80, 147, 36, 65, 64, 89, 13, 71, 89, 137, 72, 0,
-			15, 70, 76, 245, 70, 24, 193, 64, 89, 134, 83, 55, 6, 138, 0, 14, 70, 21, 2, 83, 80, 193, 64, 113, 48, 122, 89, 118, 0, 16,
-			70, 16, 83, 79, 48, 148, 200, 72, 113, 65, 124, 55, 122, 91, 0, 11, 67, 76, 52, 201, 89, 49, 125, 88, 37, 0, 0, 16, 71, 21,
-			66, 5, 72, 145, 7, 20, 121, 87, 14, 34, 122, 75, 0, 0, 11, 68, 12, 148, 131, 20, 89, 128, 89, 37, 0, 13, 68, 12, 19, 9,
-			96, 49, 138, 55, 122, 49, 89, 0, 0, 15, 69, 64, 21, 5, 57, 64, 48, 35, 47, 13, 50, 47, 0, 103, 14, 69, 77, 69, 65, 73,
-			64, 89, 47, 134, 114, 47, 0, 103, 14, 69, 77, 69, 65, 73, 64, 89, 47, 57, 134, 114, 47, 0, 9, 67, 36, 115, 210, 129, 81, 133,
-			0, 14, 69, 76, 80, 210, 21, 64, 89, 129, 49, 34, 13, 47, 0, 13, 69, 72, 21, 197, 77, 64, 34, 130, 13, 89, 47, 0, 14, 69,
-			21, 32, 83, 21, 32, 113, 34, 138, 89, 114, 0, 103, 13, 69, 21, 32, 83, 21, 32, 113, 34, 138, 88, 114, 0, 11, 69, 17, 32, 87,
-			21, 32, 72, 34, 132, 0, 15, 69, 16, 145, 197, 77, 64, 72, 137, 75, 121, 89, 47, 0, 37, 16, 70, 8, 85, 133, 72, 17, 197, 71,
-			121, 84, 13, 34, 113, 75, 0, 14, 69, 4, 69, 133, 73, 64, 119, 72, 84, 128, 47, 0, 36, 0, 15, 66, 16, 240, 72, 134, 15, 89,
-			136, 0, 14, 81, 115, 111, 32, 17, 66, 16, 240, 72, 134, 50, 124, 47, 0, 32, 78, 81, 110, 111, 116, 32, 8, 66, 16, 240, 72, 134,
-			0, 32, 9, 198, 64, 19, 129, 12, 129, 64, 66, 10, 66, 36, 80, 137, 129, 11, 0, 8, 9, 0, 21, 71, 21, 133, 18, 20, 210, 83,
-			80, 121, 49, 89, 47, 34, 6, 129, 65, 122, 89, 47, 0, 10, 67, 8, 84, 212, 71, 121, 89, 47, 0, 0, 13, 68, 8, 83, 15, 92,
-			71, 122, 55, 136, 0, 74, 12, 13, 5, 10, 15, 19, 195, 169, 107, 136, 89, 6, 138, 0, 12, 68, 4, 229, 15, 56, 35, 50, 47, 124,
-			50, 0, 7, 196, 21, 130, 76, 20, 65, 12, 68, 16, 149, 129, 56, 72, 113, 84, 35, 50, 0, 0, 14, 69, 16, 18, 207, 80, 16, 72,
-			119, 49, 136, 47, 13, 0, 14, 69, 52, 148, 129, 28, 80, 65, 114, 34, 126, 90, 0, 103, 13, 69, 52, 148, 129, 28, 80, 65, 122, 34,
-			126, 90, 0, 13, 69, 5, 32, 66, 48, 80, 35, 34, 119, 71, 118, 0, 14, 69, 4, 224, 76, 60, 112, 35, 50, 13, 55, 124, 81, 0,
-			0, 14, 70, 8, 84, 151, 36, 50, 192, 71, 121, 34, 122, 49, 0, 14, 70, 92, 244, 139, 76, 134, 64, 58, 128, 49, 91, 137, 0, 0,
-			16, 70, 56, 144, 200, 60, 192, 83, 50, 122, 49, 13, 55, 13, 89, 0, 17, 70, 77, 1, 67, 36, 98, 67, 89, 48, 13, 89, 122, 83,
-			122, 49, 0, 9, 198, 72, 81, 3, 72, 244, 211, 66, 0, 11, 68, 4, 148, 133, 76, 137, 34, 122, 88, 0, 11, 200, 52, 85, 1, 77,
-			64, 66, 48, 80, 20, 21, 72, 32, 244, 208, 37, 64, 66, 48, 80, 107, 124, 89, 48, 6, 122, 47, 13, 71, 118, 0, 12, 68, 12, 84,
-			133, 76, 89, 141, 34, 129, 88, 0, 0, 14, 6, 14, 1, 195, 175, 22, 5, 50, 137, 6, 129, 84, 0, 13, 69, 52, 22, 72, 20, 208,
-			65, 138, 107, 121, 65, 0, 12, 69, 5, 35, 213, 76, 80, 119, 34, 135, 88, 0, 0, 13, 70, 44, 82, 71, 32, 194, 64, 49, 138, 55,
-			37, 0, 15, 70, 16, 243, 129, 28, 134, 64, 72, 124, 50, 6, 107, 129, 0, 0, 17, 70, 52, 85, 1, 48, 194, 67, 65, 13, 47, 6,
-			35, 55, 122, 49, 0, 10, 199, 21, 133, 18, 36, 48, 84, 20, 65, 0, 15, 70, 4, 112, 73, 57, 53, 0, 119, 81, 121, 50, 89, 47,
-			0, 19, 72, 64, 244, 148, 84, 117, 69, 76, 80, 48, 133, 76, 13, 81, 6, 129, 88, 0, 14, 68, 85, 4, 197, 80, 125, 48, 89, 6,
-			121, 47, 0, 38, 8, 196, 85, 4, 197, 80, 65, 10, 11, 68, 48, 149, 133, 16, 55, 122, 84, 72, 0, 15, 6, 95, 18, 15, 13, 1,
-			14, 34, 136, 65, 13, 50, 10, 0, 0, 14, 69, 8, 197, 82, 73, 144, 71, 55, 148, 34, 122, 0, 105, 13, 69, 8, 197, 82, 73, 144,
-			71, 55, 128, 34, 122, 0, 0, 10, 67, 73, 80, 153, 34, 134, 71, 37, 0, 9, 67, 5, 116, 153, 119, 34, 137, 0, 0, 17, 70, 32,
-			84, 131, 84, 193, 83, 107, 128, 49, 57, 117, 55, 129, 88, 0, 0, 14, 70, 76, 131, 213, 48, 65, 82, 91, 136, 55, 72, 114, 0, 13,
-			68, 52, 245, 5, 48, 65, 136, 47, 6, 121, 55, 0, 15, 70, 52, 20, 129, 84, 65, 82, 65, 13, 34, 130, 72, 114, 0, 6, 195, 21,
-			132, 15, 65, 0, 14, 69, 56, 144, 197, 81, 144, 50, 137, 89, 13, 47, 37, 0, 15, 69, 9, 84, 201, 49, 144, 71, 122, 88, 113, 55,
-			122, 0, 32, 0, 7, 194, 36, 96, 72, 8, 9, 20, 66, 20, 224, 4, 124, 50, 15, 34, 6, 134, 47, 0, 81, 114, 111, 117, 116, 101,
-			32, 20, 66, 20, 224, 4, 124, 50, 15, 65, 6, 35, 89, 0, 81, 109, 97, 115, 115, 101, 32, 15, 70, 72, 144, 207, 12, 129, 84, 34,
-			122, 49, 13, 91, 138, 0, 0, 15, 70, 5, 69, 1, 12, 129, 83, 119, 47, 35, 76, 123, 88, 0, 12, 3, 95, 51, 88, 87, 6, 147,
-			47, 37, 0, 105, 11, 3, 95, 51, 88, 87, 6, 128, 47, 37, 0, 0, 17, 70, 48, 198, 87, 20, 198, 78, 105, 13, 58, 6, 121, 55,
-			122, 50, 0, 9, 198, 81, 32, 78, 76, 97, 82, 36, 10, 198, 81, 32, 78, 76, 97, 82, 65, 10, 11, 68, 72, 85, 133, 72, 34, 113,
-			84, 142, 0, 10, 198, 12, 243, 148, 20, 229, 0, 36, 38, 17, 70, 12, 243, 148, 20, 229, 0, 49, 124, 50, 47, 121, 50, 47, 0, 10,
-			14, 3, 95, 48, 67, 107, 6, 125, 50, 72, 34, 13, 72, 0, 0, 14, 69, 52, 145, 213, 20, 192, 65, 129, 100, 6, 121, 55, 0, 8,
-			197, 12, 86, 76, 60, 224, 66, 18, 70, 20, 229, 18, 4, 224, 197, 121, 50, 47, 34, 6, 120, 50, 89, 0, 36, 10, 198, 20, 229, 18,
-			4, 224, 197, 65, 10, 13, 69, 12, 245, 80, 60, 224, 49, 134, 48, 124, 50, 0, 0, 0, 17, 71, 64, 130, 76, 37, 2, 78, 20, 83,
-			122, 55, 113, 48, 129, 50, 0, 18, 71, 64, 84, 134, 20, 53, 12, 100, 48, 128, 83, 121, 49, 47, 55, 122, 0, 19, 71, 64, 20, 129,
-			49, 148, 201, 76, 48, 13, 34, 35, 55, 13, 89, 122, 89, 0, 18, 71, 52, 20, 135, 5, 34, 78, 20, 65, 127, 75, 114, 34, 13, 50,
-			0, 103, 17, 71, 52, 20, 135, 5, 34, 78, 20, 65, 127, 75, 114, 34, 129, 50, 0, 17, 71, 5, 85, 8, 61, 34, 84, 100, 119, 87,
-			124, 34, 113, 47, 37, 0, 0, 9, 198, 88, 84, 141, 60, 229, 0, 66, 11, 68, 68, 21, 1, 72, 49, 35, 47, 127, 0, 12, 68, 64,
-			20, 137, 76, 48, 35, 34, 122, 89, 0, 12, 68, 80, 149, 1, 56, 47, 137, 47, 13, 50, 0, 11, 68, 77, 80, 86, 20, 89, 58, 126,
-			84, 0, 0, 17, 70, 76, 50, 65, 80, 144, 193, 89, 137, 6, 35, 47, 122, 49, 13, 0, 13, 69, 13, 85, 15, 24, 96, 49, 125, 47,
-			124, 83, 0, 12, 69, 8, 144, 83, 20, 64, 71, 144, 89, 47, 0, 0, 11, 67, 52, 17, 5, 65, 4, 138, 72, 0, 12, 13, 67, 52,
-			17, 5, 65, 4, 138, 72, 0, 12, 9, 76, 16, 70, 77, 67, 205, 5, 64, 64, 89, 47, 136, 65, 13, 47, 13, 0, 15, 70, 12, 131,
-			204, 21, 32, 64, 49, 124, 55, 13, 34, 13, 0, 17, 70, 12, 19, 4, 21, 32, 64, 49, 124, 55, 72, 6, 140, 34, 13, 0, 14, 70,
-			4, 230, 9, 61, 84, 192, 35, 68, 91, 13, 89, 0, 0, 9, 67, 65, 34, 88, 48, 34, 129, 0, 0, 12, 68, 12, 20, 143, 48, 49,
-			35, 34, 13, 55, 0, 0, 12, 201, 92, 244, 132, 65, 35, 195, 21, 52, 192, 66, 17, 70, 52, 241, 5, 72, 21, 5, 65, 124, 72, 13,
-			34, 138, 47, 0, 36, 9, 198, 48, 149, 5, 72, 21, 5, 21, 15, 69, 4, 192, 133, 37, 64, 130, 55, 71, 6, 129, 122, 47, 0, 15,
-			3, 226, 136, 158, 122, 50, 83, 6, 122, 50, 113, 47, 113, 0, 0, 20, 5, 19, 8, 5, 39, 19, 91, 129, 88, 107, 35, 72, 0, 78,
-			81, 104, 97, 100, 32, 13, 5, 19, 8, 5, 39, 19, 91, 129, 88, 0, 72, 35, 17, 6, 23, 1, 19, 14, 39, 20, 58, 125, 88, 50,
-			47, 0, 103, 35, 9, 17, 6, 23, 1, 19, 14, 39, 20, 58, 4, 124, 88, 50, 47, 0, 35, 9, 15, 70, 64, 148, 5, 81, 65, 64,
-			48, 122, 48, 6, 121, 47, 0, 0, 17, 7, 4, 15, 5, 19, 14, 39, 20, 72, 125, 88, 13, 50, 47, 0, 32, 10, 199, 28, 83, 204,
-			60, 114, 83, 80, 66, 16, 3, 226, 137, 160, 50, 124, 47, 6, 129, 49, 58, 118, 47, 117, 0, 0, 12, 68, 16, 84, 15, 80, 72, 129,
-			48, 136, 0, 103, 12, 68, 81, 38, 83, 80, 47, 34, 122, 89, 47, 0, 12, 200, 81, 32, 78, 76, 52, 137, 65, 64, 65, 10, 11, 68,
-			16, 84, 15, 80, 72, 121, 48, 136, 0, 0, 9, 198, 8, 83, 7, 72, 17, 5, 66, 13, 69, 12, 21, 137, 5, 32, 49, 35, 84, 122,
-			127, 0, 9, 198, 8, 195, 195, 44, 17, 5, 66, 16, 70, 4, 48, 213, 72, 21, 5, 35, 49, 57, 117, 34, 13, 47, 0, 15, 3, 226,
-			136, 154, 89, 49, 58, 4, 140, 34, 6, 134, 47, 0, 0, 16, 70, 52, 16, 193, 9, 33, 64, 65, 13, 49, 126, 71, 34, 13, 0, 9,
-			66, 48, 16, 4, 55, 35, 0, 9, 13, 3, 95, 49, 57, 50, 6, 137, 50, 47, 129, 50, 0, 0, 17, 67, 52, 244, 212, 65, 136, 89,
-			47, 15, 13, 84, 0, 81, 111, 102, 32, 10, 67, 72, 84, 212, 34, 121, 89, 47, 0, 10, 67, 52, 19, 12, 65, 130, 55, 0, 103, 9,
-			67, 52, 19, 12, 65, 35, 55, 0, 6, 195, 5, 2, 64, 17, 11, 3, 95, 49, 56, 6, 138, 47, 129, 50, 0, 0, 12, 68, 48, 85,
-			133, 56, 55, 129, 84, 13, 50, 0, 11, 68, 16, 245, 133, 72, 72, 136, 84, 114, 0, 22, 73, 36, 229, 5, 72, 209, 68, 36, 21, 5,
-			122, 50, 47, 114, 65, 6, 129, 72, 141, 47, 0, 16, 3, 226, 151, 143, 71, 55, 4, 35, 49, 89, 6, 128, 49, 118, 0, 0, 12, 201,
-			20, 193, 67, 81, 35, 195, 85, 65, 64, 66, 13, 69, 16, 240, 66, 48, 80, 72, 134, 13, 71, 118, 0, 0, 10, 67, 52, 19, 9, 65,
-			126, 55, 37, 0, 15, 70, 88, 20, 137, 21, 70, 64, 84, 13, 34, 144, 47, 37, 0, 19, 70, 4, 36, 212, 72, 16, 212, 119, 71, 89,
-			47, 34, 6, 35, 49, 47, 0, 36, 18, 70, 4, 36, 212, 72, 16, 212, 35, 71, 89, 47, 34, 35, 49, 47, 0, 9, 0, 10, 199, 53,
-			83, 20, 37, 69, 68, 20, 65, 16, 70, 16, 83, 79, 56, 84, 211, 72, 129, 65, 13, 50, 121, 89, 0, 0, 12, 68, 52, 21, 137, 76,
-			65, 138, 84, 122, 89, 0, 12, 68, 76, 21, 1, 56, 89, 138, 47, 13, 50, 0, 0, 14, 69, 72, 81, 5, 100, 80, 34, 6, 121, 72,
-			4, 137, 0, 14, 69, 64, 20, 143, 48, 80, 48, 119, 34, 6, 136, 55, 0, 13, 69, 48, 244, 201, 56, 112, 55, 134, 88, 122, 68, 0,
-			14, 69, 12, 246, 79, 80, 80, 49, 137, 6, 136, 47, 37, 0, 11, 3, 226, 136, 146, 65, 137, 50, 13, 89, 0, 0, 14, 70, 76, 85,
-			133, 72, 19, 0, 89, 121, 84, 34, 118, 0, 13, 3, 95, 49, 49, 122, 55, 6, 121, 84, 13, 50, 0, 0, 17, 71, 81, 84, 142, 80,
-			16, 140, 20, 47, 128, 50, 108, 138, 71, 118, 0, 19, 71, 65, 34, 86, 5, 66, 79, 56, 48, 34, 137, 84, 6, 138, 91, 13, 50, 0,
-			10, 3, 95, 49, 48, 47, 6, 121, 50, 0, 0, 10, 67, 81, 34, 79, 47, 34, 129, 136, 0, 12, 68, 36, 229, 5, 48, 122, 50, 108,
-			121, 55, 0, 18, 72, 21, 97, 82, 101, 66, 9, 56, 112, 121, 84, 34, 113, 87, 122, 68, 0, 12, 68, 16, 243, 149, 80, 72, 136, 50,
-			125, 47, 0, 13, 3, 95, 49, 51, 87, 6, 147, 47, 129, 50, 0, 105, 12, 3, 95, 49, 51, 87, 6, 128, 47, 129, 50, 0, 0, 13,
-			69, 12, 19, 143, 21, 48, 49, 13, 50, 134, 88, 0, 12, 4, 95, 52, 48, 15, 83, 6, 133, 47, 141, 0, 12, 3, 95, 49, 50, 47,
-			58, 6, 121, 55, 84, 0, 0, 13, 3, 95, 49, 53, 83, 6, 122, 83, 47, 129, 50, 0, 0, 18, 71, 52, 81, 9, 4, 85, 129, 48,
-			65, 121, 72, 122, 6, 129, 84, 118, 0, 20, 71, 12, 243, 148, 72, 19, 20, 60, 49, 13, 50, 47, 34, 6, 35, 55, 47, 136, 0, 19,
-			71, 5, 85, 15, 13, 32, 67, 100, 130, 47, 6, 124, 49, 34, 13, 89, 37, 0, 12, 3, 95, 49, 52, 83, 6, 133, 47, 129, 50, 0,
-			0, 12, 68, 64, 21, 5, 48, 48, 119, 47, 121, 55, 0, 11, 68, 36, 225, 9, 20, 122, 50, 72, 37, 0, 13, 68, 32, 245, 5, 48,
-			107, 136, 47, 6, 121, 55, 0, 11, 67, 5, 129, 83, 35, 49, 89, 123, 88, 0, 16, 3, 95, 49, 55, 89, 6, 13, 84, 13, 50, 47,
-			129, 50, 0, 107, 15, 3, 95, 49, 55, 89, 6, 121, 84, 13, 50, 47, 129, 50, 0, 0, 13, 69, 80, 131, 205, 5, 48, 47, 124, 65,
-			13, 89, 0, 8, 197, 61, 85, 12, 5, 112, 65, 9, 197, 56, 80, 82, 9, 144, 66, 14, 14, 3, 95, 49, 54, 89, 6, 122, 49, 89,
-			47, 129, 50, 0, 0, 0, 17, 70, 52, 84, 131, 20, 65, 83, 65, 128, 89, 6, 138, 72, 129, 88, 0, 10, 67, 5, 115, 204, 138, 58,
-			124, 55, 0, 15, 3, 95, 55, 88, 89, 6, 13, 84, 13, 50, 47, 37, 0, 107, 14, 3, 95, 55, 88, 89, 6, 121, 84, 13, 50, 47,
-			37, 0, 0, 21, 72, 12, 243, 77, 20, 229, 1, 73, 144, 49, 124, 65, 13, 50, 47, 121, 34, 37, 0, 103, 7, 196, 56, 85, 133, 72,
-			32, 11, 68, 12, 132, 137, 76, 49, 34, 122, 89, 0, 13, 6, 2, 10, 195, 184, 18, 14, 71, 57, 128, 50, 0, 12, 68, 16, 85, 143,
-			56, 72, 121, 84, 13, 50, 0, 12, 68, 72, 84, 12, 100, 34, 113, 48, 55, 137, 0, 19, 72, 12, 243, 77, 20, 229, 1, 73, 144, 49,
-			124, 65, 13, 50, 47, 34, 122, 0, 13, 68, 4, 212, 12, 100, 35, 65, 48, 55, 122, 0, 32, 20, 72, 4, 36, 212, 20, 210, 79, 85,
-			48, 119, 71, 89, 47, 6, 129, 65, 141, 89, 0, 12, 200, 4, 36, 207, 49, 85, 5, 49, 144, 67, 32, 0, 13, 69, 72, 80, 71, 4,
-			224, 34, 138, 81, 13, 50, 0, 17, 70, 64, 83, 133, 48, 244, 5, 48, 13, 50, 121, 55, 13, 48, 37, 0, 14, 69, 80, 18, 87, 4,
-			224, 47, 137, 6, 58, 126, 50, 0, 13, 69, 72, 20, 195, 4, 192, 34, 120, 89, 49, 118, 0, 12, 69, 9, 35, 207, 12, 128, 71, 34,
-			136, 76, 0, 0, 15, 70, 77, 21, 73, 73, 33, 76, 89, 49, 58, 122, 34, 118, 0, 15, 70, 12, 243, 131, 32, 84, 192, 49, 124, 50,
-			76, 123, 88, 0, 0, 18, 71, 65, 54, 67, 32, 245, 9, 12, 89, 137, 49, 6, 124, 47, 122, 49, 0, 11, 67, 21, 130, 84, 121, 81,
-			88, 122, 47, 0, 9, 67, 9, 84, 192, 71, 125, 89, 0, 0, 11, 68, 32, 21, 133, 76, 107, 35, 84, 88, 0, 15, 70, 72, 18, 77,
-			20, 229, 0, 34, 138, 65, 13, 50, 47, 0, 12, 68, 48, 144, 146, 20, 55, 129, 71, 34, 13, 0, 10, 68, 20, 20, 140, 100, 128, 55,
-			122, 0, 0, 13, 69, 76, 147, 133, 4, 64, 91, 113, 50, 138, 72, 0, 14, 69, 80, 19, 80, 60, 224, 47, 35, 65, 48, 124, 50, 0,
-			9, 198, 56, 21, 9, 88, 149, 25, 66, 0, 0, 9, 67, 81, 165, 64, 47, 89, 134, 0, 17, 71, 72, 83, 132, 21, 99, 213, 76, 34,
-			124, 50, 72, 113, 84, 134, 0, 18, 71, 64, 20, 129, 52, 85, 5, 72, 48, 13, 34, 35, 65, 113, 47, 114, 0, 17, 71, 5, 85, 15,
-			29, 32, 80, 32, 130, 47, 13, 81, 34, 35, 83, 0, 11, 3, 224, 165, 164, 72, 125, 50, 72, 119, 0, 0, 18, 72, 32, 83, 131, 20,
-			99, 210, 80, 128, 107, 121, 50, 89, 83, 133, 87, 0, 0, 12, 69, 92, 149, 8, 21, 32, 58, 122, 86, 114, 0, 9, 198, 77, 64, 77,
-			64, 81, 5, 66, 16, 70, 72, 83, 133, 28, 17, 5, 34, 121, 50, 13, 81, 138, 72, 0, 16, 70, 64, 20, 129, 76, 149, 5, 48, 35,
-			34, 13, 89, 137, 47, 0, 9, 198, 4, 229, 9, 16, 245, 5, 65, 0, 15, 6, 1, 18, 5, 14, 39, 20, 4, 127, 50, 47, 0, 35,
-			12, 15, 70, 92, 80, 147, 37, 65, 64, 58, 121, 71, 89, 137, 47, 0, 9, 198, 64, 194, 67, 5, 65, 64, 66, 14, 70, 8, 150, 129,
-			73, 33, 64, 71, 122, 88, 6, 127, 0, 9, 198, 4, 230, 77, 61, 33, 64, 67, 0, 17, 7, 8, 1, 22, 5, 14, 39, 20, 107, 35,
-			84, 13, 50, 47, 0, 35, 16, 70, 92, 147, 142, 37, 1, 71, 58, 122, 50, 113, 48, 121, 81, 0, 0, 0, 28, 5, 23, 15, 14, 39,
-			20, 58, 6, 136, 50, 47, 35, 84, 47, 116, 0, 32, 12, 82, 104, 97, 118, 101, 32, 116, 111, 32, 23, 5, 23, 15, 14, 39, 20, 58,
-			136, 50, 47, 107, 35, 84, 0, 35, 14, 81, 104, 97, 118, 101, 32, 22, 5, 23, 15, 14, 39, 20, 58, 136, 50, 47, 119, 84, 0, 35,
-			73, 81, 104, 97, 118, 101, 32, 16, 5, 23, 15, 14, 39, 20, 58, 136, 50, 47, 0, 76, 32, 12, 9, 9, 198, 77, 64, 71, 56, 21,
-			5, 66, 17, 70, 76, 84, 1, 72, 21, 5, 89, 121, 48, 114, 34, 138, 47, 0, 36, 16, 70, 76, 84, 1, 72, 21, 5, 89, 121, 48,
-			14, 34, 13, 47, 0, 13, 69, 72, 21, 8, 21, 32, 34, 126, 86, 114, 0, 135, 10, 67, 21, 5, 66, 129, 48, 125, 71, 0, 21, 73,
-			12, 84, 148, 36, 98, 67, 5, 65, 64, 89, 114, 47, 122, 83, 122, 49, 13, 47, 0, 11, 69, 4, 85, 8, 21, 32, 129, 87, 13, 0,
-			0, 15, 70, 72, 81, 133, 73, 32, 76, 34, 113, 83, 128, 34, 118, 0, 13, 70, 56, 245, 200, 21, 33, 64, 50, 136, 58, 140, 0, 14,
-			70, 5, 84, 212, 21, 33, 64, 130, 89, 47, 6, 142, 0, 0, 6, 195, 41, 84, 212, 32, 17, 7, 23, 5, 18, 5, 14, 39, 20, 4,
-			58, 128, 50, 47, 0, 35, 12, 18, 71, 49, 83, 131, 33, 35, 207, 52, 55, 125, 50, 76, 15, 34, 134, 65, 0, 17, 71, 25, 33, 69,
-			48, 19, 131, 20, 83, 34, 129, 55, 120, 50, 89, 0, 0, 11, 68, 4, 20, 143, 56, 140, 34, 13, 50, 0, 19, 72, 24, 18, 18, 20,
-			226, 5, 37, 64, 83, 35, 34, 13, 50, 107, 137, 47, 0, 16, 70, 16, 81, 137, 12, 149, 0, 72, 121, 83, 113, 89, 122, 47, 0, 20,
-			72, 4, 197, 15, 28, 85, 8, 21, 32, 4, 130, 55, 47, 13, 81, 121, 86, 114, 0, 0, 20, 73, 80, 83, 80, 21, 32, 84, 85, 33,
-			64, 47, 121, 65, 48, 34, 113, 76, 114, 0, 9, 198, 61, 85, 3, 72, 244, 0, 65, 8, 197, 5, 32, 66, 36, 48, 65, 0, 16, 70,
-			4, 230, 9, 21, 70, 64, 35, 68, 88, 6, 144, 47, 37, 0, 0, 12, 201, 84, 197, 18, 5, 98, 79, 48, 85, 0, 67, 16, 3, 226,
-			150, 160, 71, 55, 6, 35, 49, 89, 49, 58, 6, 140, 0, 0, 13, 68, 104, 80, 146, 4, 88, 129, 71, 34, 13, 0, 103, 9, 198, 36,
-			228, 212, 20, 17, 0, 8, 11, 68, 80, 21, 1, 72, 47, 126, 47, 114, 0, 11, 68, 48, 149, 5, 72, 55, 129, 47, 114, 0, 0, 14,
-			69, 72, 80, 201, 64, 80, 34, 121, 89, 113, 48, 129, 0, 13, 69, 32, 84, 133, 80, 240, 107, 142, 6, 47, 134, 0, 0, 0, 15, 70,
-			40, 82, 15, 88, 18, 0, 75, 13, 107, 136, 84, 13, 0, 13, 3, 95, 50, 88, 47, 58, 6, 121, 50, 108, 37, 0, 0, 11, 68, 21,
-			21, 65, 48, 129, 49, 58, 118, 0, 0, 14, 69, 64, 148, 129, 13, 144, 48, 145, 34, 13, 89, 37, 0, 15, 69, 12, 244, 205, 61, 48,
-			49, 124, 88, 65, 136, 89, 0, 103, 14, 69, 12, 244, 205, 61, 48, 49, 124, 88, 65, 124, 89, 0, 14, 69, 12, 241, 9, 25, 144, 49,
-			136, 72, 113, 83, 137, 0, 0, 13, 202, 36, 229, 5, 73, 35, 199, 5, 67, 210, 100, 67, 0, 17, 70, 76, 49, 78, 5, 34, 79, 89,
-			13, 50, 35, 34, 37, 136, 0, 103, 16, 70, 76, 49, 78, 5, 34, 79, 89, 13, 50, 127, 34, 37, 136, 0, 17, 71, 52, 19, 135, 21,
-			67, 213, 80, 65, 124, 50, 90, 47, 6, 134, 0, 19, 71, 16, 240, 212, 72, 147, 129, 48, 72, 124, 49, 47, 34, 6, 137, 50, 118, 0,
-			0, 11, 68, 16, 21, 137, 20, 72, 138, 84, 37, 0, 0, 14, 69, 88, 17, 193, 73, 144, 84, 138, 81, 13, 34, 122, 0, 14, 69, 80,
-			84, 212, 21, 48, 47, 121, 89, 47, 129, 88, 0, 8, 197, 61, 85, 12, 5, 144, 65, 0, 15, 70, 72, 84, 212, 25, 83, 0, 34, 121,
-			89, 47, 83, 118, 0, 17, 70, 52, 145, 20, 21, 35, 64, 65, 6, 122, 72, 47, 4, 128, 65, 0, 0, 20, 71, 25, 35, 206, 81, 0,
-			71, 20, 83, 34, 6, 125, 50, 47, 48, 4, 138, 75, 0, 0, 22, 72, 28, 193, 78, 72, 245, 8, 21, 48, 81, 55, 4, 121, 50, 34,
-			6, 124, 87, 123, 89, 0, 0, 12, 69, 48, 85, 8, 4, 192, 55, 129, 87, 118, 0, 14, 69, 32, 84, 143, 36, 224, 107, 121, 34, 136,
-			122, 50, 0, 0, 11, 67, 76, 83, 73, 89, 121, 65, 137, 0, 103, 0, 0, 11, 68, 76, 16, 146, 20, 89, 138, 71, 114, 0, 11, 3,
-			95, 63, 63, 89, 122, 65, 71, 118, 0, 0, 13, 69, 5, 35, 213, 56, 64, 119, 34, 135, 50, 72, 0, 14, 69, 80, 245, 193, 72, 64,
-			47, 117, 58, 132, 72, 0, 66, 14, 69, 64, 20, 212, 20, 64, 48, 138, 89, 47, 123, 72, 0, 13, 69, 9, 34, 68, 4, 192, 71, 34,
-			137, 72, 118, 0, 13, 67, 49, 65, 0, 55, 122, 65, 113, 47, 113, 72, 0, 0, 5, 194, 49, 64, 24, 11, 66, 53, 32, 65, 122, 89,
-			47, 114, 0, 24, 0, 19, 71, 5, 85, 15, 52, 21, 15, 56, 130, 47, 6, 124, 65, 13, 47, 13, 50, 0, 11, 3, 95, 52, 88, 83,
-			6, 133, 47, 37, 0, 0, 26, 68, 24, 148, 147, 80, 83, 6, 147, 89, 47, 10, 48, 55, 4, 138, 89, 0, 105, 81, 112, 108, 97, 99,
-			101, 32, 25, 68, 24, 148, 147, 80, 83, 6, 128, 89, 47, 10, 48, 55, 4, 138, 89, 0, 81, 112, 108, 97, 99, 101, 32, 0, 9, 67,
-			76, 80, 78, 91, 130, 50, 0, 17, 70, 104, 147, 66, 4, 37, 197, 88, 113, 65, 71, 126, 71, 58, 37, 0, 11, 67, 60, 208, 78, 136,
-			65, 6, 35, 50, 0, 8, 197, 85, 3, 9, 25, 64, 66, 8, 197, 36, 228, 197, 13, 64, 65, 0, 0, 9, 67, 56, 240, 72, 50, 136,
-			125, 0, 0, 0, 13, 69, 8, 241, 193, 73, 64, 71, 136, 81, 127, 47, 0, 8, 197, 60, 34, 133, 13, 64, 36, 9, 197, 60, 34, 133,
-			13, 64, 65, 10, 0, 10, 66, 28, 240, 4, 81, 136, 0, 12, 9, 15, 66, 48, 80, 55, 129, 6, 35, 50, 0, 81, 97, 110, 110, 32,
-			15, 70, 64, 244, 148, 84, 112, 76, 48, 133, 76, 13, 81, 118, 0, 15, 70, 65, 33, 70, 4, 49, 64, 48, 34, 121, 83, 13, 89, 0,
-			9, 66, 48, 80, 55, 13, 23, 0, 9, 15, 70, 32, 244, 212, 4, 113, 64, 107, 124, 89, 47, 113, 75, 0, 9, 198, 24, 147, 129, 56,
-			49, 64, 36, 16, 70, 24, 147, 129, 56, 49, 64, 83, 137, 50, 35, 50, 89, 0, 9, 0, 17, 71, 72, 81, 133, 72, 83, 131, 20, 34,
-			121, 83, 34, 13, 50, 89, 0, 14, 70, 52, 19, 77, 61, 66, 0, 65, 35, 65, 13, 87, 0, 12, 3, 95, 53, 88, 83, 6, 122, 83,
-			47, 37, 0, 0, 10, 68, 76, 145, 8, 20, 91, 129, 13, 0, 11, 68, 48, 21, 20, 20, 55, 126, 108, 138, 0, 0, 13, 67, 28, 245,
-			0, 2, 81, 124, 47, 0, 12, 35, 9, 15, 69, 28, 243, 69, 72, 16, 81, 136, 65, 6, 140, 34, 13, 0, 17, 70, 81, 32, 86, 21,
-			53, 25, 47, 34, 35, 84, 13, 89, 47, 37, 0, 13, 69, 25, 84, 195, 36, 16, 83, 57, 134, 91, 13, 0, 13, 69, 16, 148, 15, 48,
-			80, 72, 137, 48, 136, 55, 0, 20, 73, 8, 245, 82, 28, 83, 201, 76, 145, 64, 71, 143, 90, 58, 126, 88, 6, 129, 0, 0, 16, 70,
-			52, 148, 129, 8, 83, 0, 65, 122, 34, 13, 71, 121, 55, 0, 14, 70, 56, 244, 134, 60, 194, 192, 50, 132, 83, 13, 49, 0, 15, 70,
-			56, 21, 21, 72, 19, 0, 50, 35, 76, 13, 34, 118, 0, 0, 16, 71, 76, 86, 67, 32, 83, 12, 20, 89, 138, 91, 6, 121, 55, 0,
-			20, 71, 21, 131, 206, 21, 32, 84, 20, 121, 81, 88, 6, 124, 50, 13, 34, 138, 47, 0, 18, 71, 16, 148, 208, 5, 32, 84, 20, 72,
-			122, 89, 48, 13, 34, 13, 47, 0, 0, 9, 198, 21, 132, 12, 60, 149, 0, 36, 10, 198, 21, 132, 12, 60, 149, 0, 65, 10, 0, 13,
-			69, 81, 34, 65, 28, 80, 47, 34, 129, 126, 90, 0, 14, 69, 76, 85, 133, 72, 80, 89, 113, 84, 6, 142, 0, 9, 13, 69, 76, 49,
-			78, 36, 48, 89, 129, 50, 122, 49, 0, 14, 69, 64, 81, 1, 48, 240, 48, 121, 72, 13, 55, 136, 0, 13, 69, 52, 19, 149, 72, 80,
-			65, 13, 50, 57, 143, 0, 0, 9, 198, 28, 243, 196, 16, 22, 64, 66, 15, 70, 13, 85, 1, 92, 22, 64, 49, 125, 47, 13, 58, 138,
-			0, 0, 9, 67, 56, 245, 20, 50, 124, 47, 0, 18, 71, 20, 193, 67, 81, 35, 196, 20, 113, 55, 121, 49, 47, 34, 136, 72, 0, 6,
-			195, 60, 83, 64, 17, 13, 3, 95, 54, 88, 89, 6, 122, 49, 89, 47, 37, 0, 0, 11, 68, 69, 80, 83, 32, 49, 58, 124, 91, 0,
-			0, 13, 69, 72, 16, 130, 37, 48, 34, 35, 71, 137, 88, 0, 13, 69, 32, 245, 11, 21, 144, 107, 124, 47, 49, 129, 0, 22, 73, 9,
-			84, 133, 5, 80, 210, 4, 54, 64, 71, 57, 143, 6, 124, 49, 34, 13, 89, 37, 0, 13, 4, 95, 53, 48, 15, 83, 6, 122, 83, 47,
-			141, 0, 0, 10, 67, 12, 195, 197, 49, 55, 136, 37, 0, 17, 7, 2, 15, 7, 15, 20, 195, 161, 98, 111, 103, 111, 116, 97, 0, 29,
-			15, 70, 52, 19, 22, 21, 35, 128, 65, 130, 55, 84, 114, 50, 0, 10, 67, 52, 19, 65, 65, 126, 65, 119, 0, 0, 16, 71, 29, 33,
-			69, 57, 114, 67, 32, 81, 34, 121, 50, 122, 76, 0, 0, 10, 67, 56, 245, 19, 50, 124, 47, 89, 0, 15, 70, 52, 243, 147, 36, 85,
-			82, 65, 13, 89, 57, 148, 0, 105, 14, 70, 52, 243, 147, 36, 85, 82, 65, 13, 89, 57, 128, 0, 0, 15, 69, 4, 52, 143, 77, 48,
-			13, 49, 34, 124, 89, 0, 74, 12, 13, 69, 32, 84, 144, 21, 48, 107, 128, 48, 129, 88, 0, 14, 69, 12, 19, 80, 85, 48, 49, 35,
-			65, 48, 13, 89, 0, 0, 0, 21, 73, 12, 243, 142, 20, 53, 9, 13, 85, 0, 49, 13, 50, 121, 47, 113, 49, 13, 47, 0, 16, 70,
-			36, 225, 129, 52, 245, 83, 122, 50, 83, 13, 65, 13, 89, 0, 0, 12, 68, 64, 17, 18, 20, 48, 126, 72, 34, 138, 0, 0, 16, 69,
-			92, 149, 8, 36, 224, 58, 122, 86, 122, 50, 0, 74, 12, 28, 13, 69, 56, 21, 8, 4, 224, 50, 138, 87, 13, 50, 0, 15, 70, 12,
-			243, 77, 20, 224, 197, 49, 13, 65, 121, 50, 89, 0, 0, 0, 7, 195, 48, 36, 192, 17, 42, 11, 67, 48, 36, 192, 48, 135, 50, 72,
-			88, 0, 0, 12, 68, 16, 21, 137, 76, 72, 138, 84, 122, 89, 0, 12, 68, 52, 150, 5, 72, 65, 122, 49, 89, 114, 0, 0, 13, 69,
-			4, 97, 200, 4, 224, 35, 83, 81, 35, 50, 0, 15, 69, 36, 228, 212, 4, 192, 122, 50, 89, 47, 6, 130, 55, 0, 0, 14, 70, 12,
-			243, 142, 20, 195, 0, 49, 124, 50, 13, 55, 0, 0, 9, 67, 104, 241, 64, 88, 136, 37, 0, 17, 71, 48, 147, 79, 85, 50, 78, 20,
-			55, 122, 65, 13, 88, 129, 50, 0, 13, 67, 13, 68, 140, 49, 13, 50, 47, 34, 136, 55, 0, 10, 3, 95, 56, 88, 6, 138, 47, 37,
-			0, 0, 11, 200, 36, 228, 201, 28, 133, 6, 84, 192, 66, 12, 68, 32, 84, 143, 16, 107, 121, 34, 13, 72, 0, 0, 8, 197, 61, 85,
-			16, 85, 64, 65, 16, 70, 56, 81, 204, 36, 113, 69, 50, 121, 81, 55, 122, 90, 138, 0, 14, 69, 52, 84, 133, 77, 64, 65, 141, 34,
-			13, 89, 47, 0, 20, 67, 52, 18, 78, 65, 6, 138, 50, 89, 47, 34, 4, 129, 47, 0, 81, 115, 116, 32, 8, 197, 21, 132, 15, 73,
-			64, 36, 9, 197, 21, 132, 15, 73, 64, 65, 10, 0, 16, 70, 93, 147, 205, 36, 225, 192, 58, 137, 6, 136, 65, 122, 68, 0, 15, 70,
-			65, 33, 83, 4, 113, 64, 48, 34, 121, 89, 122, 75, 0, 0, 0, 12, 68, 52, 20, 137, 4, 65, 119, 34, 129, 13, 0, 11, 68, 32,
-			84, 143, 20, 107, 141, 34, 136, 0, 19, 72, 12, 128, 78, 16, 83, 9, 21, 32, 91, 35, 50, 72, 13, 55, 6, 142, 0, 20, 72, 12,
-			20, 130, 85, 33, 84, 61, 32, 49, 127, 71, 13, 34, 138, 47, 114, 0, 103, 20, 72, 12, 20, 130, 85, 33, 84, 61, 32, 49, 127, 71,
-			13, 34, 6, 121, 47, 114, 0, 0, 9, 67, 36, 18, 78, 129, 13, 50, 0, 14, 69, 8, 197, 69, 77, 64, 71, 55, 134, 13, 89, 47,
-			0, 0, 9, 66, 52, 80, 65, 129, 0, 15, 14, 9, 66, 52, 80, 4, 65, 129, 0, 9, 14, 70, 80, 16, 140, 20, 21, 64, 47, 35,
-			71, 55, 136, 0, 14, 70, 52, 147, 5, 4, 113, 64, 65, 137, 55, 113, 75, 0, 16, 70, 12, 20, 18, 36, 49, 64, 49, 119, 48, 34,
-			6, 129, 89, 0, 0, 12, 3, 95, 57, 88, 50, 6, 137, 50, 47, 37, 0, 0, 14, 70, 32, 20, 146, 36, 85, 0, 107, 35, 34, 141,
-			47, 0, 16, 70, 56, 81, 204, 20, 53, 0, 50, 113, 81, 55, 121, 49, 47, 0, 15, 70, 13, 35, 207, 44, 81, 0, 49, 34, 117, 49,
-			122, 72, 0, 19, 72, 9, 81, 7, 21, 34, 71, 5, 32, 71, 125, 75, 13, 34, 122, 81, 127, 0, 0, 17, 69, 32, 21, 137, 56, 112,
-			4, 107, 35, 84, 122, 68, 0, 12, 35, 9, 13, 69, 72, 80, 68, 52, 80, 34, 129, 72, 65, 129, 0, 16, 69, 25, 84, 143, 72, 80,
-			83, 57, 134, 34, 6, 130, 34, 37, 0, 14, 69, 12, 241, 206, 4, 48, 49, 124, 50, 57, 35, 49, 0, 15, 70, 8, 243, 136, 60, 210,
-			69, 71, 124, 50, 13, 65, 129, 0, 0, 14, 70, 48, 147, 132, 76, 86, 64, 55, 122, 50, 88, 37, 0, 8, 67, 52, 22, 65, 65, 144,
-			0, 14, 70, 77, 81, 134, 60, 194, 192, 89, 125, 83, 13, 49, 0, 13, 202, 12, 148, 131, 84, 209, 133, 72, 83, 131, 20, 66, 16, 70,
-			8, 148, 5, 16, 19, 0, 71, 137, 48, 6, 129, 72, 118, 0, 9, 67, 4, 131, 217, 119, 107, 139, 0, 0, 26, 67, 52, 22, 64, 4,
-			65, 138, 107, 6, 35, 84, 47, 116, 0, 32, 14, 82, 104, 97, 118, 101, 32, 116, 111, 32, 19, 67, 52, 22, 64, 65, 138, 107, 119, 84,
-			0, 35, 77, 81, 104, 97, 118, 101, 32, 10, 67, 52, 22, 64, 65, 138, 0, 32, 12, 15, 71, 12, 128, 82, 48, 245, 20, 20, 91, 127,
-			55, 13, 47, 0, 18, 71, 76, 80, 210, 21, 64, 82, 100, 89, 121, 49, 34, 13, 47, 34, 122, 0, 20, 71, 37, 66, 78, 21, 32, 82,
-			100, 137, 47, 6, 122, 50, 13, 34, 13, 34, 122, 0, 17, 71, 29, 35, 211, 88, 83, 143, 72, 81, 34, 136, 84, 13, 50, 114, 0, 0,
-			13, 68, 52, 83, 149, 76, 65, 121, 50, 57, 134, 88, 0, 16, 70, 12, 244, 9, 48, 245, 0, 49, 136, 48, 137, 55, 13, 47, 0, 0,
-			15, 69, 4, 230, 79, 56, 80, 121, 50, 122, 58, 125, 50, 0, 106, 14, 69, 4, 230, 79, 56, 80, 121, 50, 122, 58, 124, 50, 0, 9,
-			67, 60, 208, 82, 136, 65, 127, 0, 14, 69, 56, 245, 77, 20, 16, 50, 134, 65, 6, 138, 13, 0, 14, 69, 12, 20, 9, 80, 16, 49,
-			35, 48, 122, 47, 13, 0, 12, 69, 8, 195, 213, 76, 80, 71, 55, 135, 88, 0, 0, 17, 70, 65, 34, 86, 4, 54, 64, 48, 34, 137,
-			84, 13, 89, 37, 0, 103, 16, 70, 81, 34, 76, 60, 118, 64, 47, 34, 122, 55, 13, 75, 37, 0, 15, 70, 72, 80, 201, 80, 19, 0,
-			34, 113, 89, 137, 47, 118, 0, 11, 3, 95, 63, 65, 55, 4, 121, 47, 114, 0, 0, 10, 199, 76, 80, 129, 77, 66, 65, 56, 66, 18,
-			71, 4, 69, 133, 73, 48, 82, 100, 35, 72, 84, 114, 89, 13, 34, 37, 0, 0, 20, 72, 77, 68, 153, 12, 131, 137, 56, 80, 89, 47,
-			34, 6, 122, 49, 50, 129, 50, 0, 12, 68, 72, 81, 137, 80, 34, 129, 83, 122, 47, 0, 0, 0, 0, 0, 9, 198, 92, 245, 76, 17,
-			53, 0, 76, 16, 70, 52, 144, 200, 36, 112, 78, 65, 122, 91, 122, 81, 13, 50, 0, 10, 68, 12, 244, 144, 76, 49, 132, 0, 9, 0,
-			17, 70, 77, 84, 137, 56, 19, 69, 89, 143, 34, 122, 50, 6, 35, 65, 0, 14, 69, 64, 19, 20, 73, 144, 48, 130, 55, 47, 34, 122,
-			0, 14, 69, 33, 80, 146, 37, 48, 107, 134, 71, 34, 122, 89, 0, 0, 11, 67, 85, 3, 206, 13, 48, 124, 50, 0, 74, 16, 70, 72,
-			84, 85, 36, 83, 64, 34, 121, 49, 58, 113, 121, 65, 0, 17, 70, 61, 33, 71, 4, 227, 192, 124, 34, 122, 81, 6, 126, 50, 136, 0,
-			0, 19, 66, 36, 224, 122, 50, 119, 15, 34, 6, 136, 0, 82, 97, 32, 114, 111, 119, 32, 20, 66, 36, 224, 122, 50, 15, 58, 122, 76,
-			0, 74, 8, 81, 119, 104, 105, 99, 104, 32, 15, 66, 36, 224, 2, 122, 50, 86, 115, 0, 81, 116, 104, 101, 32, 11, 66, 36, 224, 2,
-			122, 50, 0, 11, 9, 34, 20, 71, 52, 83, 129, 28, 84, 137, 20, 65, 13, 50, 6, 35, 75, 57, 13, 34, 37, 0, 5, 194, 56, 64,
-			9, 9, 3, 226, 153, 175, 91, 127, 48, 0, 0, 15, 70, 16, 147, 143, 76, 21, 82, 72, 137, 50, 13, 89, 132, 0, 6, 195, 61, 67,
-			200, 17, 6, 195, 53, 144, 64, 17, 11, 4, 95, 8, 15, 11, 107, 6, 117, 49, 0, 0, 11, 68, 104, 18, 82, 20, 88, 137, 6, 142,
-			0, 10, 68, 76, 131, 206, 20, 91, 124, 50, 0, 12, 68, 32, 84, 143, 56, 107, 121, 34, 13, 50, 0, 10, 3, 226, 153, 173, 83, 55,
-			35, 47, 0, 0, 0, 16, 70, 13, 84, 146, 20, 229, 0, 49, 6, 114, 13, 50, 47, 0, 103, 18, 70, 53, 82, 1, 52, 208, 68, 109,
-			111, 104, 97, 109, 109, 97, 100, 0, 29, 9, 198, 85, 5, 9, 28, 133, 0, 66, 16, 70, 64, 243, 9, 80, 84, 128, 48, 13, 55, 6,
-			137, 47, 114, 0, 0, 19, 71, 33, 148, 5, 72, 35, 204, 4, 107, 137, 48, 6, 128, 71, 13, 55, 13, 0, 15, 4, 95, 15, 7, 15,
-			6, 124, 81, 124, 50, 4, 121, 49, 0, 0, 13, 68, 56, 243, 206, 20, 50, 136, 58, 125, 50, 0, 106, 12, 68, 56, 243, 206, 20, 50,
-			136, 58, 124, 50, 0, 12, 68, 61, 97, 82, 80, 136, 84, 6, 128, 47, 0, 0, 13, 69, 72, 81, 9, 4, 192, 34, 129, 72, 144, 55,
-			0, 0, 9, 66, 61, 32, 132, 0, 72, 8, 9, 10, 67, 65, 35, 211, 48, 34, 136, 88, 0, 15, 70, 32, 243, 19, 80, 84, 128, 107,
-			136, 55, 89, 47, 114, 0, 13, 202, 16, 83, 79, 57, 53, 18, 5, 66, 86, 20, 66, 0, 0, 0, 0, 10, 67, 76, 83, 147, 89, 121,
-			50, 89, 0, 0, 13, 67, 92, 83, 148, 2, 58, 121, 50, 47, 0, 12, 9, 17, 71, 4, 69, 133, 73, 66, 83, 20, 35, 72, 84, 114,
-			47, 137, 88, 0, 0, 21, 72, 52, 17, 1, 28, 20, 195, 5, 32, 65, 35, 72, 13, 81, 6, 35, 89, 49, 114, 0, 0, 11, 69, 48,
-			21, 217, 21, 32, 55, 139, 114, 0, 12, 69, 9, 84, 147, 5, 32, 71, 128, 89, 114, 0, 0, 15, 70, 16, 148, 197, 5, 49, 64, 72,
-			122, 88, 6, 129, 88, 0, 17, 70, 12, 243, 134, 72, 243, 148, 49, 13, 50, 83, 34, 125, 50, 47, 0, 15, 70, 4, 229, 9, 69, 81,
-			64, 35, 50, 47, 6, 129, 49, 0, 0, 10, 67, 29, 82, 64, 81, 134, 37, 0, 10, 0, 16, 8, 20, 8, 5, 18, 5, 39, 12, 12,
-			86, 140, 55, 0, 72, 32, 10, 67, 72, 243, 137, 34, 124, 50, 37, 0, 13, 68, 80, 86, 1, 76, 47, 121, 49, 89, 13, 89, 0, 9,
-			198, 61, 134, 77, 61, 35, 206, 67, 10, 67, 28, 83, 137, 75, 129, 50, 37, 0, 0, 14, 69, 52, 19, 1, 92, 144, 65, 119, 55, 126,
-			58, 37, 0, 14, 69, 28, 83, 133, 88, 16, 75, 13, 50, 129, 84, 13, 0, 13, 69, 60, 85, 86, 72, 80, 148, 84, 34, 13, 0, 105,
-			12, 69, 60, 85, 86, 72, 80, 128, 84, 34, 13, 0, 17, 70, 24, 244, 133, 57, 50, 67, 83, 13, 34, 121, 50, 89, 122, 49, 0, 8,
-			197, 5, 32, 193, 16, 80, 66, 0, 16, 70, 76, 243, 9, 12, 149, 0, 89, 13, 55, 122, 89, 113, 47, 0, 0, 18, 71, 80, 83, 80,
-			61, 32, 82, 100, 47, 121, 65, 48, 34, 13, 34, 122, 0, 20, 71, 52, 85, 1, 8, 243, 9, 12, 65, 121, 47, 13, 71, 6, 124, 55,
-			122, 49, 0, 0, 12, 68, 4, 32, 66, 4, 35, 71, 119, 71, 13, 0, 12, 68, 72, 80, 68, 16, 34, 129, 6, 35, 72, 0, 0, 12,
-			69, 64, 84, 147, 36, 16, 48, 128, 90, 13, 0, 14, 69, 44, 244, 207, 88, 240, 49, 124, 89, 13, 84, 136, 0, 12, 69, 65, 54, 67,
-			32, 80, 89, 137, 49, 129, 0, 8, 67, 40, 245, 82, 90, 143, 0, 0, 13, 70, 65, 54, 67, 32, 81, 0, 89, 137, 49, 72, 0, 9,
-			198, 61, 85, 2, 85, 36, 212, 65, 5, 194, 61, 48, 17, 0, 9, 67, 36, 19, 128, 129, 13, 50, 0, 14, 203, 36, 225, 146, 5, 53,
-			18, 84, 53, 21, 72, 80, 65, 17, 71, 24, 244, 133, 77, 64, 76, 48, 83, 133, 89, 47, 6, 130, 55, 0, 16, 71, 5, 48, 197, 73,
-			64, 73, 56, 35, 89, 114, 47, 138, 50, 0, 0, 9, 67, 56, 243, 133, 50, 125, 50, 0, 11, 68, 8, 84, 153, 48, 71, 121, 34, 118,
-			0, 0, 13, 69, 84, 225, 9, 21, 48, 125, 50, 72, 37, 88, 0, 12, 201, 12, 243, 148, 72, 245, 133, 73, 54, 64, 65, 14, 69, 12,
-			19, 129, 73, 144, 49, 13, 50, 140, 34, 37, 0, 15, 70, 4, 230, 84, 32, 147, 135, 121, 50, 113, 87, 122, 68, 0, 6, 195, 65, 35,
-			198, 24, 0, 17, 70, 32, 84, 143, 37, 51, 64, 107, 121, 34, 136, 122, 88, 13, 65, 0, 15, 70, 20, 66, 84, 36, 243, 128, 113, 72,
-			122, 91, 13, 50, 0, 17, 70, 8, 149, 21, 52, 83, 128, 71, 122, 76, 134, 65, 13, 50, 0, 135, 13, 4, 95, 48, 77, 50, 65, 6,
-			122, 55, 141, 50, 0, 0, 10, 198, 12, 17, 134, 20, 147, 133, 103, 66, 19, 71, 40, 84, 149, 76, 19, 5, 52, 75, 13, 34, 134, 89,
-			13, 55, 13, 65, 0, 9, 67, 72, 245, 84, 34, 135, 47, 0, 17, 71, 72, 81, 133, 73, 34, 78, 28, 34, 113, 83, 128, 34, 122, 68,
-			0, 13, 4, 95, 48, 77, 51, 71, 6, 122, 55, 141, 50, 0, 0, 11, 68, 52, 20, 137, 20, 65, 119, 34, 129, 0, 12, 68, 44, 20,
-			21, 80, 49, 119, 48, 117, 47, 0, 0, 23, 73, 56, 85, 198, 61, 83, 132, 48, 19, 132, 50, 57, 134, 83, 13, 50, 72, 55, 119, 50,
-			72, 0, 14, 69, 77, 68, 137, 65, 144, 89, 47, 34, 137, 48, 122, 0, 13, 69, 64, 21, 8, 61, 48, 48, 138, 87, 124, 89, 0, 14,
-			4, 95, 48, 77, 49, 87, 6, 135, 88, 13, 50, 72, 0, 0, 17, 70, 88, 243, 3, 4, 227, 192, 84, 124, 55, 49, 6, 138, 50, 136,
-			0, 12, 4, 95, 2, 18, 22, 71, 34, 6, 129, 84, 0, 0, 0, 12, 68, 8, 85, 23, 76, 71, 121, 47, 117, 89, 0, 0, 10, 67,
-			77, 81, 90, 89, 134, 113, 88, 0, 12, 201, 77, 84, 5, 73, 98, 83, 36, 243, 128, 67, 14, 69, 52, 20, 131, 20, 192, 65, 127, 89,
-			6, 121, 55, 0, 17, 70, 20, 212, 8, 5, 50, 83, 121, 65, 83, 13, 89, 122, 89, 0, 9, 12, 69, 12, 130, 83, 20, 192, 76, 122,
-			88, 118, 0, 0, 15, 70, 52, 83, 9, 77, 48, 64, 65, 13, 55, 122, 89, 13, 0, 9, 198, 52, 83, 12, 37, 48, 64, 66, 9, 198,
-			92, 81, 75, 20, 225, 0, 66, 13, 70, 52, 19, 136, 61, 84, 128, 65, 35, 50, 146, 0, 0, 10, 67, 56, 244, 128, 50, 132, 0, 8,
-			9, 18, 67, 24, 244, 128, 83, 132, 58, 124, 50, 0, 66, 14, 81, 111, 110, 101, 32, 23, 67, 24, 244, 128, 83, 13, 13, 15, 58, 6,
-			137, 55, 0, 82, 97, 32, 119, 104, 105, 108, 101, 32, 16, 67, 24, 244, 128, 83, 114, 86, 115, 0, 34, 81, 116, 104, 101, 32, 15, 67,
-			24, 244, 128, 83, 13, 13, 50, 0, 34, 81, 97, 110, 32, 13, 67, 24, 244, 128, 83, 13, 13, 0, 34, 81, 97, 32, 9, 67, 24, 244,
-			128, 83, 132, 0, 72, 18, 71, 76, 80, 210, 21, 66, 86, 20, 89, 129, 49, 34, 13, 47, 122, 84, 0, 15, 71, 13, 35, 201, 77, 48,
-			78, 80, 49, 58, 126, 89, 150, 0, 0, 16, 67, 52, 19, 153, 65, 121, 50, 122, 13, 84, 0, 81, 111, 102, 32, 11, 67, 52, 19, 153,
-			65, 121, 50, 37, 0, 34, 11, 67, 92, 84, 133, 2, 58, 128, 0, 35, 9, 15, 70, 8, 244, 215, 20, 195, 0, 71, 124, 88, 58, 121,
-			55, 0, 12, 68, 76, 147, 79, 56, 89, 137, 65, 13, 50, 0, 9, 67, 20, 148, 133, 140, 34, 13, 0, 0, 14, 69, 8, 21, 13, 4,
-			224, 71, 35, 47, 65, 35, 50, 0, 0, 15, 70, 76, 83, 129, 80, 244, 128, 89, 121, 50, 13, 47, 114, 0, 0, 10, 199, 64, 243, 25,
-			80, 129, 78, 20, 65, 0, 12, 68, 32, 243, 193, 32, 107, 6, 134, 6, 126, 0, 0, 14, 69, 8, 83, 143, 37, 64, 71, 121, 50, 58,
-			6, 126, 0, 12, 201, 53, 83, 20, 37, 3, 5, 96, 84, 128, 65, 13, 69, 4, 35, 1, 85, 64, 35, 71, 55, 135, 47, 0, 0, 16,
-			70, 8, 80, 193, 85, 49, 64, 71, 122, 49, 125, 88, 0, 66, 8, 0, 0, 0, 13, 5, 23, 5, 39, 12, 12, 58, 129, 55, 0, 72,
-			32, 14, 69, 20, 194, 67, 37, 64, 113, 55, 122, 89, 113, 47, 0, 0, 14, 70, 12, 129, 77, 37, 49, 64, 91, 13, 65, 129, 88, 0,
-			24, 66, 44, 208, 89, 49, 58, 4, 140, 49, 122, 55, 6, 124, 65, 122, 47, 114, 88, 0, 81, 194, 178, 32, 0, 19, 71, 9, 80, 200,
-			5, 33, 83, 80, 71, 134, 49, 119, 34, 6, 121, 89, 47, 0, 16, 70, 8, 20, 130, 21, 21, 69, 71, 127, 71, 13, 49, 57, 134, 0,
-			0, 11, 68, 52, 242, 82, 4, 65, 139, 34, 13, 0, 13, 68, 80, 22, 9, 76, 47, 35, 49, 89, 37, 88, 0, 12, 68, 24, 85, 21,
-			76, 83, 129, 47, 13, 89, 0, 0, 14, 69, 80, 18, 80, 20, 144, 47, 4, 137, 48, 6, 138, 0, 15, 69, 8, 146, 201, 56, 144, 71,
-			122, 49, 6, 129, 50, 37, 0, 0, 16, 70, 52, 147, 4, 72, 81, 0, 65, 122, 55, 72, 34, 113, 72, 0, 9, 198, 61, 85, 19, 44,
-			148, 148, 65, 16, 70, 8, 19, 145, 84, 85, 0, 71, 35, 68, 49, 58, 113, 47, 0, 0, 14, 70, 56, 244, 151, 36, 50, 0, 50, 124,
-			34, 113, 76, 0, 19, 71, 80, 83, 5, 52, 85, 18, 100, 47, 13, 55, 121, 65, 13, 47, 34, 37, 0, 19, 71, 33, 148, 5, 72, 35,
-			204, 20, 107, 137, 48, 6, 128, 71, 13, 55, 37, 0, 16, 70, 21, 2, 80, 32, 19, 153, 113, 48, 122, 83, 13, 50, 122, 0, 17, 71,
-			12, 132, 137, 77, 67, 65, 76, 49, 34, 122, 89, 65, 13, 89, 0, 0, 11, 67, 60, 227, 25, 136, 50, 55, 37, 0, 40, 12, 68, 16,
-			244, 137, 76, 72, 124, 34, 122, 89, 0, 15, 70, 13, 34, 67, 33, 67, 206, 49, 34, 137, 47, 13, 50, 0, 12, 68, 8, 244, 137, 76,
-			71, 124, 34, 122, 89, 0, 11, 68, 16, 128, 66, 36, 72, 126, 71, 37, 0, 11, 68, 69, 81, 83, 60, 49, 138, 89, 136, 0, 18, 72,
-			65, 33, 83, 12, 145, 78, 12, 80, 48, 34, 129, 89, 141, 50, 89, 0, 0, 13, 69, 24, 16, 201, 48, 80, 83, 35, 89, 118, 0, 103,
-			13, 69, 12, 80, 201, 48, 80, 89, 121, 89, 129, 55, 0, 8, 197, 85, 1, 1, 80, 80, 36, 9, 197, 85, 1, 1, 80, 80, 65, 10,
-			13, 69, 76, 81, 1, 80, 80, 89, 113, 72, 138, 47, 0, 15, 69, 12, 194, 67, 32, 80, 49, 55, 129, 91, 6, 138, 0, 103, 13, 69,
-			12, 194, 67, 32, 80, 49, 55, 129, 91, 138, 0, 0, 10, 66, 53, 144, 65, 137, 0, 72, 34, 12, 0, 10, 67, 77, 81, 84, 89, 134,
-			113, 47, 0, 19, 71, 65, 35, 205, 20, 224, 68, 20, 48, 34, 124, 65, 13, 50, 6, 126, 72, 0, 28, 75, 36, 225, 9, 76, 52, 137,
-			52, 147, 129, 80, 80, 122, 50, 72, 113, 89, 49, 34, 6, 122, 65, 113, 50, 13, 47, 0, 0, 18, 72, 93, 35, 206, 28, 67, 201, 56,
-			112, 34, 124, 68, 72, 134, 122, 68, 0, 0, 0, 15, 70, 80, 131, 213, 76, 19, 132, 87, 135, 88, 13, 50, 72, 0, 13, 202, 32, 84,
-			141, 5, 2, 18, 60, 66, 84, 20, 66, 16, 70, 12, 131, 210, 37, 163, 192, 76, 131, 34, 6, 129, 88, 136, 0, 15, 70, 8, 20, 212,
-			36, 243, 128, 71, 35, 89, 47, 141, 50, 0, 0, 15, 67, 61, 85, 0, 4, 135, 47, 13, 84, 0, 81, 111, 102, 32, 19, 71, 20, 66,
-			78, 9, 84, 135, 32, 121, 72, 122, 50, 71, 2, 125, 34, 13, 0, 18, 71, 21, 21, 73, 88, 240, 193, 48, 113, 49, 58, 122, 84, 13,
-			49, 118, 0, 0, 11, 68, 48, 84, 143, 100, 55, 129, 34, 139, 0, 0, 13, 69, 52, 245, 137, 21, 48, 65, 134, 84, 122, 88, 0, 0,
-			20, 66, 60, 96, 125, 84, 58, 122, 76, 0, 106, 66, 8, 81, 119, 104, 105, 99, 104, 32, 17, 66, 60, 96, 2, 125, 84, 86, 115, 0,
-			106, 34, 81, 116, 104, 101, 32, 16, 66, 60, 96, 3, 124, 84, 86, 115, 0, 34, 81, 116, 104, 101, 32, 19, 66, 60, 96, 124, 84, 58,
-			122, 76, 0, 66, 8, 81, 119, 104, 105, 99, 104, 32, 14, 66, 60, 96, 13, 84, 13, 50, 0, 34, 81, 97, 110, 32, 12, 66, 60, 96,
-			13, 84, 13, 0, 34, 81, 97, 32, 10, 66, 60, 96, 125, 84, 0, 106, 72, 9, 9, 66, 60, 96, 124, 84, 0, 72, 9, 14, 70, 76,
-			147, 194, 32, 19, 128, 91, 13, 84, 130, 50, 0, 14, 70, 8, 19, 12, 60, 243, 128, 71, 13, 55, 134, 50, 0, 16, 70, 4, 33, 15,
-			52, 83, 128, 35, 71, 72, 13, 65, 13, 50, 0, 0, 16, 70, 52, 243, 143, 80, 243, 133, 65, 124, 50, 13, 47, 136, 50, 0, 9, 67,
-			52, 144, 192, 65, 137, 49, 0, 17, 70, 24, 193, 88, 36, 35, 5, 83, 55, 121, 49, 89, 122, 71, 118, 0, 0, 9, 68, 92, 131, 210,
-			20, 107, 133, 0, 13, 68, 88, 242, 76, 4, 84, 58, 35, 55, 6, 35, 0, 11, 68, 88, 144, 193, 72, 84, 122, 49, 114, 0, 10, 67,
-			52, 144, 193, 65, 137, 49, 13, 0, 0, 16, 69, 44, 244, 133, 4, 224, 49, 114, 34, 6, 129, 13, 50, 0, 103, 15, 69, 44, 244, 133,
-			4, 224, 49, 131, 34, 6, 129, 13, 50, 0, 14, 69, 77, 84, 5, 72, 32, 89, 134, 48, 6, 128, 71, 0, 13, 69, 76, 80, 66, 20,
-			64, 89, 129, 71, 121, 72, 0, 0, 16, 70, 64, 16, 201, 24, 144, 192, 48, 119, 89, 122, 83, 122, 49, 0, 12, 201, 80, 129, 82, 52,
-			244, 212, 4, 35, 5, 20, 17, 70, 65, 148, 137, 80, 84, 192, 48, 137, 34, 6, 137, 47, 129, 88, 0, 14, 70, 48, 148, 85, 21, 84,
-			128, 55, 113, 49, 128, 0, 103, 14, 70, 48, 148, 85, 21, 84, 128, 55, 113, 49, 57, 143, 0, 0, 0, 22, 72, 12, 244, 5, 56, 128,
-			71, 20, 224, 49, 136, 48, 13, 50, 107, 6, 138, 81, 13, 50, 0, 10, 67, 52, 17, 201, 65, 138, 75, 137, 0, 0, 14, 69, 4, 198,
-			67, 20, 224, 35, 55, 122, 89, 13, 50, 0, 18, 70, 76, 19, 148, 36, 17, 207, 89, 35, 50, 47, 122, 6, 126, 81, 136, 0, 12, 69,
-			76, 48, 82, 20, 64, 89, 49, 140, 72, 0, 0, 28, 74, 36, 229, 133, 77, 66, 71, 5, 66, 86, 20, 122, 50, 84, 4, 121, 89, 47,
-			113, 81, 6, 138, 47, 122, 84, 0, 103, 15, 70, 28, 84, 129, 36, 229, 0, 81, 121, 34, 137, 50, 47, 0, 15, 70, 56, 20, 195, 20,
-			229, 0, 50, 138, 89, 13, 50, 47, 0, 15, 70, 8, 243, 138, 61, 84, 128, 71, 130, 50, 90, 6, 143, 0, 15, 70, 4, 116, 143, 84,
-			225, 0, 119, 81, 34, 135, 50, 72, 0, 0, 8, 67, 4, 33, 64, 138, 71, 0, 19, 71, 65, 33, 68, 20, 98, 78, 20, 48, 34, 129,
-			72, 113, 83, 6, 137, 50, 0, 17, 70, 36, 224, 210, 20, 20, 197, 122, 50, 49, 34, 6, 129, 89, 0, 36, 14, 70, 13, 33, 65, 81,
-			84, 133, 49, 34, 129, 76, 114, 0, 0, 13, 68, 92, 131, 211, 20, 4, 107, 134, 88, 0, 8, 9, 16, 7, 8, 1, 23, 1, 9, 39,
-			9, 107, 13, 58, 6, 137, 129, 0, 0, 14, 69, 16, 84, 197, 73, 64, 72, 113, 88, 128, 47, 0, 36, 14, 69, 16, 84, 197, 73, 64,
-			72, 121, 89, 114, 47, 0, 9, 13, 69, 16, 84, 197, 73, 64, 72, 113, 88, 128, 47, 0, 14, 69, 12, 243, 80, 5, 64, 49, 13, 65,
-			48, 35, 47, 0, 0, 15, 70, 77, 65, 82, 36, 193, 64, 89, 47, 121, 34, 118, 0, 103, 15, 70, 36, 211, 199, 20, 225, 64, 122, 65,
-			13, 75, 13, 50, 0, 15, 70, 28, 192, 83, 28, 245, 192, 81, 55, 120, 88, 81, 136, 0, 13, 70, 88, 82, 9, 12, 193, 64, 84, 141,
-			49, 118, 0, 18, 70, 84, 181, 76, 20, 193, 64, 57, 134, 49, 13, 55, 6, 138, 55, 37, 0, 15, 70, 77, 65, 82, 36, 193, 64, 89,
-			47, 121, 34, 137, 55, 0, 14, 70, 52, 244, 129, 36, 225, 64, 65, 13, 34, 138, 50, 0, 15, 70, 12, 240, 193, 36, 225, 64, 49, 136,
-			49, 6, 138, 50, 0, 0, 13, 67, 60, 225, 64, 58, 125, 50, 0, 106, 34, 10, 13, 12, 67, 60, 225, 64, 58, 124, 50, 0, 34, 10,
-			13, 16, 67, 20, 16, 200, 129, 76, 15, 13, 84, 0, 8, 81, 111, 102, 32, 14, 70, 60, 209, 76, 21, 69, 5, 124, 65, 55, 13, 47,
-			0, 10, 67, 4, 33, 68, 119, 71, 121, 72, 0, 6, 195, 60, 209, 192, 17, 0, 0, 14, 69, 17, 34, 69, 77, 64, 72, 34, 137, 13,
-			89, 47, 0, 0, 16, 70, 12, 243, 82, 4, 65, 64, 49, 124, 65, 34, 35, 72, 0, 103, 13, 67, 60, 229, 15, 4, 124, 50, 108, 117,
-			0, 103, 12, 12, 67, 60, 229, 15, 4, 124, 50, 47, 117, 0, 12, 14, 70, 28, 84, 136, 5, 33, 0, 81, 140, 107, 127, 47, 0, 16,
-			70, 77, 3, 203, 4, 225, 64, 89, 48, 136, 49, 6, 35, 50, 0, 15, 70, 92, 19, 142, 4, 33, 64, 58, 124, 50, 119, 71, 129, 0,
-			15, 70, 32, 84, 143, 36, 225, 64, 107, 121, 34, 136, 122, 50, 0, 15, 70, 29, 33, 78, 4, 65, 64, 81, 34, 13, 50, 138, 72, 0,
-			9, 198, 4, 229, 9, 48, 241, 192, 65, 0, 20, 71, 76, 147, 131, 21, 33, 83, 80, 89, 122, 50, 89, 6, 141, 34, 13, 89, 47, 0,
-			15, 70, 4, 229, 9, 60, 50, 0, 35, 50, 108, 129, 124, 49, 0, 0, 12, 68, 80, 129, 73, 72, 86, 140, 0, 72, 34, 9, 11, 67,
-			52, 18, 197, 65, 4, 138, 49, 0, 12, 12, 67, 52, 18, 197, 65, 4, 138, 49, 0, 12, 9, 12, 68, 64, 80, 193, 56, 48, 129, 49,
-			13, 50, 0, 11, 68, 12, 145, 193, 72, 89, 113, 81, 127, 0, 8, 4, 95, 35, 18, 4, 72, 0, 0, 14, 69, 25, 85, 9, 48, 80,
-			83, 57, 134, 47, 118, 0, 103, 12, 69, 80, 129, 78, 12, 80, 86, 121, 50, 89, 0, 13, 69, 44, 20, 133, 56, 80, 49, 119, 34, 129,
-			50, 0, 8, 197, 4, 208, 78, 16, 16, 66, 14, 69, 32, 20, 129, 72, 80, 107, 119, 34, 126, 34, 37, 0, 14, 69, 85, 48, 66, 48,
-			80, 57, 134, 88, 13, 71, 118, 0, 13, 69, 76, 84, 133, 56, 80, 89, 13, 34, 129, 50, 0, 13, 69, 12, 20, 129, 24, 80, 49, 119,
-			34, 35, 83, 0, 9, 67, 4, 160, 82, 119, 75, 127, 0, 0, 0, 10, 67, 36, 34, 68, 122, 71, 123, 72, 0, 0, 12, 68, 4, 192,
-			78, 4, 119, 55, 35, 50, 13, 0, 12, 68, 48, 17, 207, 76, 55, 138, 81, 124, 89, 0, 12, 68, 76, 48, 76, 16, 89, 49, 124, 55,
-			72, 0, 0, 15, 70, 5, 34, 193, 57, 48, 83, 127, 49, 13, 50, 89, 130, 0, 13, 69, 84, 228, 213, 72, 80, 125, 50, 91, 6, 143,
-			0, 14, 69, 76, 81, 21, 12, 80, 89, 113, 72, 57, 134, 89, 0, 14, 69, 28, 83, 73, 56, 144, 75, 121, 65, 113, 50, 137, 0, 0,
-			11, 5, 23, 5, 39, 18, 5, 2, 58, 142, 0, 17, 70, 65, 83, 138, 4, 34, 64, 48, 125, 50, 75, 6, 126, 71, 37, 0, 20, 70,
-			37, 53, 1, 56, 37, 76, 4, 122, 89, 47, 4, 35, 50, 71, 6, 117, 55, 0, 17, 70, 76, 21, 1, 56, 148, 212, 89, 138, 47, 13,
-			50, 122, 89, 47, 0, 5, 194, 57, 144, 17, 0, 13, 6, 25, 15, 21, 39, 18, 5, 2, 57, 143, 0, 106, 12, 6, 25, 15, 21, 39,
-			18, 5, 2, 57, 132, 0, 9, 67, 65, 81, 0, 48, 117, 72, 0, 6, 195, 36, 35, 64, 17, 0, 12, 68, 8, 85, 19, 100, 71, 121,
-			47, 89, 37, 0, 21, 72, 77, 67, 206, 20, 129, 78, 28, 80, 89, 47, 4, 136, 50, 107, 6, 121, 50, 75, 0, 13, 68, 60, 209, 71,
-			4, 136, 65, 6, 138, 81, 13, 0, 14, 70, 4, 148, 144, 61, 113, 82, 6, 140, 48, 4, 146, 0, 0, 15, 69, 84, 229, 9, 17, 144,
-			125, 50, 47, 6, 137, 72, 37, 0, 13, 69, 65, 33, 84, 81, 144, 48, 34, 122, 47, 37, 0, 0, 15, 70, 104, 130, 86, 4, 115, 192,
-			90, 113, 84, 126, 81, 136, 0, 19, 4, 95, 3, 9, 18, 89, 6, 128, 49, 125, 65, 83, 55, 4, 121, 49, 89, 0, 0, 14, 7, 20,
-			8, 5, 18, 5, 39, 4, 2, 86, 140, 72, 0, 12, 67, 65, 85, 0, 4, 48, 117, 47, 0, 10, 12, 11, 67, 4, 160, 88, 138, 75,
-			35, 49, 89, 0, 10, 67, 4, 33, 84, 119, 71, 121, 47, 0, 6, 195, 57, 149, 0, 17, 6, 195, 12, 83, 192, 17, 0, 16, 70, 12,
-			132, 153, 76, 193, 82, 49, 34, 137, 89, 55, 114, 0, 103, 15, 70, 12, 132, 153, 76, 193, 82, 49, 34, 137, 88, 55, 114, 0, 11, 68,
-			80, 146, 203, 4, 47, 129, 49, 13, 0, 12, 68, 48, 147, 73, 80, 55, 122, 65, 113, 47, 0, 9, 198, 24, 244, 133, 92, 20, 142, 66,
-			9, 67, 20, 32, 89, 129, 71, 138, 0, 0, 14, 69, 72, 20, 137, 81, 144, 34, 140, 34, 13, 47, 37, 0, 0, 14, 6, 25, 15, 21,
-			39, 12, 12, 57, 134, 55, 0, 72, 32, 15, 70, 52, 19, 3, 60, 195, 64, 65, 35, 55, 49, 13, 65, 0, 15, 70, 65, 35, 206, 61,
-			83, 128, 48, 34, 136, 50, 135, 50, 0, 13, 3, 95, 194, 183, 65, 122, 72, 118, 72, 124, 47, 0, 0, 12, 67, 61, 84, 128, 135, 114,
-			0, 103, 72, 34, 9, 10, 67, 61, 84, 128, 146, 0, 72, 34, 9, 15, 71, 80, 19, 201, 76, 80, 67, 32, 47, 129, 91, 13, 101, 0,
-			9, 198, 52, 17, 193, 104, 147, 133, 67, 16, 71, 12, 243, 77, 37, 69, 5, 20, 49, 13, 65, 122, 47, 37, 0, 17, 3, 95, 194, 180,
-			119, 49, 57, 134, 47, 35, 49, 89, 121, 50, 47, 0, 0, 12, 68, 60, 208, 72, 4, 136, 65, 119, 107, 126, 0, 13, 68, 44, 240, 76,
-			4, 49, 136, 6, 126, 55, 13, 0, 19, 72, 4, 195, 8, 4, 195, 15, 93, 48, 130, 55, 107, 6, 35, 55, 136, 88, 0, 0, 14, 69,
-			80, 82, 18, 4, 224, 47, 140, 34, 6, 126, 50, 0, 13, 69, 48, 84, 201, 60, 224, 55, 129, 90, 13, 50, 0, 12, 69, 12, 83, 9,
-			16, 128, 49, 138, 55, 37, 0, 19, 3, 95, 194, 178, 89, 134, 48, 13, 89, 49, 34, 122, 48, 47, 47, 6, 134, 0, 0, 9, 67, 72,
-			134, 83, 34, 129, 89, 0, 17, 70, 4, 193, 129, 48, 96, 64, 35, 55, 83, 6, 35, 55, 83, 13, 0, 20, 3, 95, 194, 179, 89, 134,
-			48, 13, 89, 49, 34, 122, 48, 47, 87, 6, 34, 129, 0, 0, 20, 71, 4, 225, 18, 60, 209, 68, 4, 35, 50, 72, 34, 6, 124, 65,
-			122, 72, 13, 0, 16, 71, 12, 21, 8, 21, 34, 78, 20, 49, 35, 87, 34, 113, 50, 0, 19, 71, 65, 33, 67, 20, 65, 78, 80, 48,
-			34, 121, 89, 113, 72, 13, 50, 47, 0, 0, 11, 67, 40, 244, 197, 107, 136, 89, 6, 138, 0, 11, 200, 84, 225, 5, 73, 115, 210, 48,
-			64, 65, 0, 14, 69, 61, 33, 71, 60, 224, 124, 34, 113, 81, 13, 50, 0, 12, 69, 92, 148, 146, 4, 192, 58, 122, 34, 118, 0, 14,
-			69, 76, 16, 210, 20, 64, 89, 138, 49, 34, 13, 72, 0, 9, 197, 36, 229, 5, 72, 224, 65, 10, 14, 69, 36, 229, 5, 72, 224, 122,
-			50, 47, 128, 50, 0, 37, 13, 69, 12, 20, 144, 20, 192, 49, 127, 48, 13, 55, 0, 14, 69, 9, 33, 65, 80, 128, 71, 34, 129, 86,
-			0, 36, 10, 13, 69, 9, 33, 65, 80, 128, 71, 34, 121, 87, 0, 10, 0, 0, 19, 4, 8, 5, 39, 19, 107, 129, 88, 107, 35, 72,
-			0, 78, 81, 104, 97, 100, 32, 12, 4, 8, 5, 39, 19, 107, 129, 88, 0, 72, 35, 9, 67, 4, 37, 64, 35, 71, 134, 0, 9, 67,
-			72, 245, 192, 34, 135, 0, 37, 8, 67, 72, 245, 192, 34, 136, 0, 21, 71, 36, 225, 197, 57, 82, 84, 100, 122, 50, 75, 113, 50, 6,
-			57, 134, 113, 47, 37, 0, 9, 67, 8, 245, 192, 71, 135, 0, 36, 8, 67, 8, 245, 192, 71, 136, 0, 13, 4, 95, 19, 20, 11, 89,
-			47, 34, 6, 136, 49, 0, 0, 14, 68, 80, 131, 211, 20, 86, 136, 88, 0, 72, 34, 12, 9, 9, 4, 95, 35, 19, 20, 89, 47, 0,
-			12, 3, 95, 194, 173, 65, 35, 49, 34, 124, 50, 0, 11, 4, 95, 3, 18, 12, 49, 6, 128, 55, 0, 0, 14, 69, 16, 81, 133, 13,
-			64, 72, 129, 83, 121, 49, 47, 0, 19, 3, 95, 194, 170, 83, 121, 65, 113, 50, 122, 50, 6, 132, 72, 113, 50, 118, 0, 13, 4, 95,
-			1, 3, 21, 119, 49, 57, 6, 134, 47, 0, 0, 15, 70, 13, 66, 21, 48, 133, 64, 49, 14, 87, 134, 105, 134, 0, 14, 70, 93, 33,
-			84, 12, 129, 68, 34, 121, 76, 123, 72, 0, 15, 70, 76, 84, 85, 36, 225, 64, 89, 129, 49, 58, 113, 50, 0, 18, 70, 76, 80, 207,
-			56, 65, 68, 89, 121, 49, 6, 124, 50, 72, 123, 72, 0, 15, 70, 65, 84, 144, 61, 37, 0, 48, 128, 48, 6, 133, 47, 0, 16, 70,
-			28, 83, 149, 36, 225, 64, 75, 121, 50, 57, 134, 123, 50, 0, 18, 3, 95, 194, 171, 55, 121, 83, 47, 6, 81, 122, 55, 13, 65, 121,
-			47, 0, 0, 10, 67, 56, 245, 192, 50, 135, 0, 32, 42, 6, 195, 56, 245, 192, 32, 9, 67, 16, 69, 64, 86, 122, 0, 9, 15, 3,
-			95, 194, 168, 72, 137, 119, 34, 6, 129, 89, 122, 89, 0, 0, 10, 67, 77, 86, 153, 89, 134, 88, 37, 0, 13, 68, 81, 83, 9, 64,
-			47, 57, 134, 55, 122, 48, 0, 11, 68, 48, 192, 77, 4, 55, 126, 65, 13, 0, 8, 4, 95, 35, 20, 8, 87, 0, 0, 15, 3, 95,
-			194, 166, 71, 34, 136, 49, 13, 50, 71, 6, 127, 0, 0, 13, 202, 88, 83, 148, 72, 147, 15, 69, 82, 83, 80, 66, 16, 70, 65, 33,
-			76, 84, 65, 64, 48, 34, 138, 55, 134, 72, 0, 103, 16, 70, 65, 33, 76, 84, 65, 64, 48, 34, 121, 55, 57, 134, 72, 0, 0, 18,
-			71, 65, 34, 86, 36, 193, 71, 20, 48, 34, 122, 84, 113, 55, 113, 75, 0, 0, 12, 68, 64, 17, 193, 56, 48, 138, 81, 13, 50, 0,
-			11, 68, 48, 80, 70, 100, 55, 129, 83, 37, 0, 0, 16, 70, 77, 66, 76, 21, 69, 15, 89, 47, 113, 55, 121, 47, 136, 0, 13, 69,
-			52, 147, 137, 56, 112, 65, 137, 50, 122, 68, 0, 13, 69, 24, 244, 129, 28, 80, 83, 124, 34, 113, 75, 0, 0, 15, 70, 80, 84, 141,
-			36, 226, 64, 47, 128, 65, 122, 50, 137, 0, 16, 70, 77, 64, 78, 16, 38, 64, 89, 47, 35, 50, 72, 71, 137, 0, 0, 13, 3, 95,
-			194, 160, 107, 127, 72, 89, 48, 138, 89, 0, 12, 4, 95, 18, 14, 7, 34, 6, 122, 68, 81, 0, 0, 18, 72, 44, 19, 7, 60, 244,
-			140, 36, 80, 49, 35, 55, 81, 143, 55, 37, 0, 10, 68, 56, 144, 200, 20, 50, 129, 91, 0, 17, 72, 8, 245, 82, 28, 83, 201, 76,
-			80, 71, 143, 90, 58, 126, 88, 0, 27, 3, 95, 194, 161, 2, 122, 50, 84, 4, 128, 47, 113, 72, 121, 49, 89, 49, 55, 13, 65, 6,
-			138, 91, 13, 50, 0, 0, 19, 8, 16, 18, 15, 20, 5, 7, 195, 169, 112, 114, 111, 116, 101, 103, 101, 0, 29, 8, 197, 61, 85, 9,
-			56, 112, 65, 13, 69, 24, 83, 9, 56, 80, 83, 129, 55, 137, 50, 0, 12, 69, 13, 80, 203, 60, 240, 49, 117, 49, 134, 0, 0, 20,
-			5, 23, 5, 39, 22, 5, 58, 129, 84, 107, 35, 72, 0, 78, 81, 104, 97, 100, 32, 13, 5, 23, 5, 39, 22, 5, 58, 129, 84, 0,
-			72, 35, 15, 70, 16, 244, 143, 80, 134, 64, 72, 124, 34, 13, 87, 37, 0, 15, 70, 4, 229, 8, 60, 230, 64, 35, 50, 47, 13, 50,
-			37, 0, 17, 70, 9, 84, 149, 56, 66, 64, 71, 117, 34, 6, 117, 50, 72, 37, 0, 20, 9, 16, 18, 15, 20, 195, 169, 7, 195, 169,
-			112, 114, 111, 116, 101, 103, 101, 0, 29, 0, 21, 6, 25, 15, 21, 39, 22, 5, 57, 134, 84, 107, 35, 72, 0, 78, 81, 104, 97, 100,
-			32, 14, 6, 25, 15, 21, 39, 22, 5, 57, 134, 84, 0, 72, 35, 9, 67, 72, 134, 76, 34, 122, 55, 0, 14, 70, 92, 130, 84, 37,
-			50, 0, 58, 137, 47, 122, 91, 0, 17, 71, 52, 245, 83, 80, 16, 200, 20, 65, 13, 89, 47, 6, 120, 91, 0, 18, 71, 8, 16, 203,
-			77, 67, 210, 100, 71, 35, 49, 89, 47, 133, 34, 37, 0, 21, 67, 33, 69, 16, 138, 76, 108, 129, 108, 129, 6, 48, 129, 10, 0, 81,
-			58, 47, 47, 32, 0, 17, 70, 80, 241, 197, 80, 129, 82, 47, 13, 81, 121, 86, 114, 0, 74, 12, 11, 68, 4, 129, 65, 16, 119, 107,
-			121, 72, 0, 11, 68, 96, 131, 211, 4, 49, 130, 89, 13, 0, 13, 68, 17, 145, 133, 16, 72, 6, 125, 84, 122, 72, 0, 20, 72, 12,
-			243, 80, 72, 243, 73, 76, 80, 49, 124, 65, 48, 34, 13, 65, 137, 88, 0, 11, 200, 12, 130, 77, 64, 19, 154, 20, 80, 67, 0, 14,
-			69, 76, 144, 201, 49, 144, 89, 122, 89, 113, 55, 37, 0, 13, 69, 72, 80, 197, 77, 48, 34, 129, 89, 121, 89, 0, 22, 73, 64, 131,
-			212, 60, 116, 129, 64, 134, 64, 83, 13, 47, 6, 124, 81, 34, 13, 83, 37, 0, 14, 69, 13, 34, 83, 21, 48, 49, 34, 137, 89, 129,
-			88, 0, 15, 69, 72, 148, 195, 61, 48, 34, 122, 89, 49, 136, 121, 89, 0, 0, 13, 67, 60, 225, 83, 58, 125, 50, 88, 0, 106, 9,
-			13, 12, 67, 60, 225, 83, 58, 124, 50, 88, 0, 9, 13, 17, 70, 72, 244, 193, 72, 147, 192, 34, 136, 88, 6, 127, 34, 122, 136, 0,
-			17, 70, 28, 19, 9, 48, 83, 192, 81, 35, 55, 113, 55, 6, 138, 136, 0, 0, 0, 22, 72, 84, 226, 86, 21, 36, 201, 81, 144, 57,
-			134, 50, 122, 84, 6, 128, 89, 113, 47, 37, 0, 14, 68, 72, 83, 73, 80, 34, 129, 65, 6, 122, 47, 0, 36, 12, 68, 72, 83, 73,
-			80, 34, 129, 65, 122, 47, 0, 11, 68, 12, 128, 78, 28, 76, 35, 68, 0, 10, 11, 68, 12, 128, 78, 28, 76, 138, 50, 75, 0, 0,
-			15, 69, 84, 37, 78, 81, 80, 134, 71, 6, 134, 50, 108, 134, 0, 15, 70, 72, 241, 5, 72, 144, 203, 34, 124, 72, 34, 122, 49, 0,
-			10, 67, 5, 32, 66, 35, 34, 13, 71, 0, 0, 10, 198, 12, 243, 80, 61, 83, 132, 66, 36, 5, 194, 72, 64, 9, 0, 22, 73, 64,
-			131, 212, 60, 116, 129, 64, 129, 82, 83, 13, 47, 6, 124, 81, 34, 13, 83, 13, 0, 0, 10, 68, 76, 243, 212, 32, 89, 134, 86, 0,
-			11, 68, 48, 17, 197, 72, 55, 126, 81, 114, 0, 0, 14, 69, 81, 35, 202, 4, 224, 47, 34, 136, 75, 13, 50, 0, 0, 15, 70, 92,
-			144, 200, 37, 64, 64, 58, 122, 76, 113, 47, 127, 0, 9, 198, 20, 225, 137, 20, 193, 0, 65, 0, 17, 70, 20, 229, 133, 48, 244, 5,
-			126, 50, 84, 13, 55, 136, 48, 0, 103, 10, 199, 81, 32, 78, 77, 3, 210, 80, 36, 19, 71, 81, 32, 78, 77, 3, 210, 80, 47, 34,
-			35, 50, 89, 48, 133, 47, 0, 9, 20, 71, 80, 20, 129, 57, 69, 76, 4, 47, 13, 34, 35, 50, 47, 57, 117, 55, 13, 0, 9, 198,
-			20, 229, 133, 48, 244, 5, 36, 17, 70, 20, 229, 133, 48, 244, 5, 121, 50, 84, 13, 55, 136, 48, 0, 9, 15, 70, 13, 33, 86, 5,
-			52, 197, 49, 34, 13, 84, 35, 89, 0, 16, 71, 5, 80, 133, 72, 114, 78, 20, 136, 71, 114, 90, 129, 50, 0, 0, 11, 68, 80, 130,
-			78, 20, 4, 86, 137, 50, 0, 12, 68, 88, 81, 193, 76, 84, 138, 81, 13, 89, 0, 12, 68, 48, 83, 206, 20, 55, 129, 6, 136, 50,
-			0, 10, 68, 64, 147, 213, 76, 48, 144, 89, 0, 11, 68, 60, 49, 65, 56, 136, 91, 13, 50, 0, 0, 16, 70, 77, 148, 8, 36, 194,
-			83, 89, 122, 83, 13, 55, 123, 89, 0, 13, 69, 24, 20, 212, 20, 224, 83, 120, 89, 13, 50, 0, 0, 15, 70, 8, 20, 130, 5, 32,
-			64, 71, 127, 71, 13, 34, 13, 0, 0, 10, 67, 5, 33, 64, 2, 127, 0, 35, 9, 11, 67, 85, 32, 76, 57, 134, 13, 34, 118, 0,
-			21, 71, 64, 83, 137, 57, 53, 76, 4, 48, 13, 50, 6, 122, 50, 89, 57, 117, 55, 13, 0, 9, 198, 61, 85, 8, 61, 84, 197, 65,
-			0, 13, 68, 52, 144, 77, 36, 65, 137, 6, 35, 65, 37, 0, 13, 68, 64, 144, 78, 60, 48, 122, 6, 35, 50, 136, 0, 0, 30, 5,
-			3, 1, 14, 39, 20, 4, 49, 35, 50, 47, 6, 35, 84, 47, 116, 0, 103, 32, 14, 82, 104, 97, 118, 101, 32, 116, 111, 32, 22, 5,
-			3, 1, 14, 39, 20, 49, 35, 50, 47, 119, 84, 0, 103, 35, 81, 104, 97, 118, 101, 32, 16, 5, 3, 1, 14, 39, 20, 49, 35, 50,
-			47, 0, 103, 32, 9, 12, 29, 5, 3, 1, 14, 39, 20, 4, 49, 126, 50, 47, 6, 35, 84, 47, 116, 0, 32, 14, 82, 104, 97, 118,
-			101, 32, 116, 111, 32, 21, 5, 3, 1, 14, 39, 20, 49, 126, 50, 47, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 15, 5, 3, 1,
-			14, 39, 20, 49, 126, 50, 47, 0, 32, 9, 12, 24, 73, 4, 36, 129, 12, 17, 1, 9, 32, 64, 35, 71, 34, 13, 49, 13, 72, 6,
-			35, 71, 34, 13, 0, 0, 17, 70, 56, 18, 86, 21, 65, 64, 50, 137, 6, 129, 84, 13, 47, 138, 0, 9, 198, 12, 243, 131, 21, 37,
-			0, 36, 16, 70, 12, 243, 131, 21, 37, 0, 49, 124, 50, 89, 114, 47, 0, 10, 18, 70, 12, 243, 80, 21, 65, 68, 49, 13, 65, 48,
-			6, 129, 47, 122, 72, 0, 14, 202, 4, 69, 133, 73, 66, 83, 20, 209, 78, 80, 103, 67, 24, 74, 4, 69, 133, 73, 66, 83, 20, 209,
-			78, 80, 119, 72, 84, 128, 47, 122, 89, 65, 13, 50, 47, 0, 18, 4, 95, 1, 3, 50, 72, 125, 71, 13, 55, 119, 49, 57, 6, 134,
-			47, 0, 0, 17, 70, 80, 83, 80, 48, 21, 5, 47, 121, 65, 48, 55, 13, 47, 0, 103, 18, 67, 77, 80, 200, 89, 125, 76, 15, 10,
-			119, 88, 0, 8, 81, 97, 115, 32, 16, 70, 60, 36, 207, 48, 85, 5, 124, 71, 89, 13, 55, 129, 47, 0, 8, 67, 21, 33, 64, 140,
-			0, 9, 0, 19, 72, 4, 208, 129, 77, 48, 68, 61, 32, 119, 65, 71, 35, 89, 13, 72, 114, 0, 0, 16, 5, 9, 19, 14, 39, 20,
-			4, 122, 88, 13, 50, 47, 0, 35, 12, 13, 69, 52, 19, 135, 21, 32, 65, 138, 50, 75, 114, 0, 10, 4, 4, 39, 25, 5, 72, 57,
-			13, 0, 13, 69, 17, 81, 207, 85, 64, 72, 125, 81, 135, 47, 0, 0, 16, 6, 8, 1, 19, 14, 39, 20, 107, 35, 88, 13, 50, 47,
-			0, 35, 16, 70, 93, 148, 201, 93, 145, 192, 58, 122, 88, 129, 58, 122, 81, 0, 9, 66, 72, 80, 34, 4, 129, 0, 9, 14, 70, 8,
-			150, 154, 5, 33, 64, 71, 122, 88, 6, 127, 0, 5, 194, 60, 176, 17, 0, 17, 70, 12, 243, 148, 72, 149, 5, 49, 124, 50, 47, 34,
-			6, 137, 47, 0, 16, 70, 4, 225, 67, 16, 245, 5, 35, 50, 122, 49, 72, 136, 47, 0, 0, 14, 68, 76, 128, 76, 48, 4, 91, 35,
-			55, 0, 32, 9, 12, 12, 68, 72, 83, 85, 76, 34, 129, 65, 13, 89, 0, 13, 70, 72, 16, 200, 4, 83, 0, 34, 138, 76, 118, 0,
-			9, 67, 21, 34, 69, 141, 34, 37, 0, 12, 68, 105, 83, 21, 76, 88, 134, 55, 134, 88, 0, 17, 70, 64, 80, 213, 48, 144, 82, 48,
-			113, 49, 57, 134, 55, 122, 114, 0, 11, 68, 16, 80, 207, 72, 72, 138, 49, 132, 0, 0, 14, 69, 88, 145, 78, 56, 16, 84, 122, 6,
-			121, 50, 13, 0, 15, 69, 72, 144, 133, 56, 16, 34, 137, 71, 6, 129, 50, 13, 0, 13, 69, 16, 244, 193, 28, 80, 72, 136, 89, 113,
-			75, 0, 0, 0, 18, 71, 12, 20, 137, 8, 33, 65, 56, 49, 35, 34, 13, 71, 6, 141, 50, 0, 16, 71, 92, 82, 18, 52, 16, 200,
-			80, 84, 140, 65, 35, 101, 47, 0, 17, 71, 12, 244, 144, 61, 32, 84, 20, 49, 132, 48, 13, 34, 13, 47, 0, 17, 71, 5, 96, 76,
-			4, 224, 200, 20, 35, 84, 13, 55, 120, 50, 91, 0, 0, 13, 68, 92, 130, 76, 20, 58, 4, 137, 55, 0, 8, 11, 13, 6, 5, 9,
-			14, 195, 173, 14, 121, 50, 129, 50, 0, 13, 68, 77, 81, 1, 56, 89, 134, 72, 6, 35, 50, 0, 12, 68, 4, 192, 77, 60, 35, 55,
-			13, 65, 136, 0, 11, 68, 4, 48, 210, 4, 35, 49, 34, 119, 0, 11, 200, 76, 83, 73, 12, 148, 131, 48, 80, 65, 11, 67, 32, 82,
-			5, 107, 129, 107, 6, 129, 0, 16, 70, 9, 33, 84, 33, 33, 78, 71, 34, 121, 86, 34, 13, 50, 0, 0, 13, 69, 77, 83, 132, 4,
-			80, 89, 125, 50, 72, 138, 0, 0, 10, 67, 5, 33, 83, 140, 34, 129, 88, 0, 16, 70, 64, 192, 89, 80, 84, 212, 48, 55, 138, 47,
-			121, 89, 47, 0, 23, 3, 95, 194, 191, 2, 122, 50, 84, 4, 128, 47, 113, 72, 49, 58, 6, 121, 89, 76, 13, 50, 0, 0, 17, 71,
-			64, 147, 133, 5, 4, 12, 20, 48, 6, 137, 50, 35, 48, 118, 0, 11, 4, 95, 56, 48, 15, 6, 138, 47, 141, 0, 0, 10, 68, 76,
-			83, 213, 48, 89, 136, 55, 0, 18, 72, 24, 243, 11, 21, 53, 15, 56, 80, 83, 136, 49, 89, 47, 136, 50, 0, 11, 68, 72, 81, 193,
-			48, 34, 129, 81, 118, 0, 0, 13, 69, 72, 84, 12, 5, 144, 34, 129, 48, 55, 138, 0, 17, 70, 16, 144, 66, 21, 65, 83, 72, 144,
-			71, 6, 129, 47, 129, 88, 0, 13, 69, 12, 243, 69, 49, 144, 49, 125, 65, 55, 122, 0, 13, 3, 95, 194, 186, 72, 113, 81, 34, 6,
-			129, 88, 0, 0, 10, 67, 64, 197, 83, 48, 55, 125, 89, 0, 17, 3, 95, 194, 187, 34, 137, 47, 6, 81, 122, 55, 13, 65, 121, 47,
-			0, 0, 14, 70, 12, 129, 89, 20, 227, 133, 91, 137, 6, 35, 50, 0, 20, 71, 16, 148, 12, 60, 208, 67, 100, 72, 122, 48, 55, 6,
-			136, 65, 13, 89, 37, 0, 13, 3, 95, 194, 184, 89, 121, 72, 6, 122, 55, 13, 0, 0, 11, 200, 72, 145, 9, 13, 83, 15, 85, 48,
-			66, 11, 68, 4, 225, 197, 48, 138, 50, 75, 118, 0, 6, 195, 84, 51, 1, 17, 20, 3, 95, 194, 185, 89, 134, 48, 13, 89, 49, 34,
-			122, 48, 47, 58, 6, 124, 50, 0, 0, 12, 67, 32, 212, 6, 107, 6, 13, 65, 48, 83, 0, 13, 69, 4, 197, 193, 101, 48, 130, 55,
-			58, 138, 88, 0, 0, 16, 70, 92, 149, 8, 61, 85, 0, 58, 122, 86, 135, 47, 0, 74, 12, 9, 198, 92, 149, 8, 61, 85, 0, 66,
-			10, 67, 37, 34, 83, 137, 34, 122, 89, 0, 10, 67, 28, 245, 15, 81, 136, 47, 134, 0, 10, 67, 56, 21, 15, 50, 138, 47, 136, 0,
-			0, 16, 71, 76, 243, 69, 80, 130, 78, 28, 89, 125, 65, 87, 122, 68, 0, 0, 10, 67, 77, 84, 197, 89, 134, 89, 13, 0, 12, 68,
-			76, 48, 76, 100, 89, 49, 138, 55, 122, 0, 0, 13, 69, 76, 243, 5, 52, 224, 89, 124, 55, 13, 65, 0, 14, 69, 53, 148, 137, 4,
-			64, 65, 122, 34, 122, 35, 72, 0, 0, 9, 198, 40, 18, 193, 73, 64, 64, 66, 14, 70, 80, 243, 137, 28, 133, 0, 47, 13, 50, 137,
-			47, 0, 13, 70, 52, 20, 147, 32, 19, 12, 65, 127, 91, 118, 0, 0, 15, 70, 80, 245, 76, 61, 84, 197, 47, 134, 55, 6, 134, 88,
-			0, 0, 13, 68, 88, 147, 204, 4, 84, 137, 6, 136, 55, 13, 0, 10, 67, 16, 83, 9, 72, 121, 55, 122, 0, 12, 68, 12, 16, 212,
-			36, 49, 35, 49, 47, 137, 0, 11, 68, 4, 112, 73, 56, 119, 81, 121, 50, 0, 0, 18, 70, 5, 67, 1, 57, 66, 83, 35, 47, 55,
-			6, 35, 50, 47, 122, 89, 0, 9, 2, 195, 151, 47, 137, 65, 88, 0, 0, 15, 70, 4, 197, 8, 61, 81, 200, 131, 55, 86, 6, 136,
-			0, 8, 5, 194, 77, 64, 24, 5, 194, 77, 64, 9, 9, 66, 77, 64, 89, 13, 50, 47, 0, 0, 20, 71, 92, 148, 195, 60, 228, 201,
-			56, 58, 113, 89, 49, 6, 124, 50, 89, 113, 50, 0, 18, 71, 52, 148, 195, 72, 80, 78, 80, 65, 122, 89, 49, 34, 141, 50, 47, 0,
-			16, 4, 95, 19, 13, 3, 89, 65, 6, 130, 55, 49, 4, 35, 48, 0, 5, 130, 196, 141, 43, 0, 20, 72, 5, 35, 65, 28, 81, 4,
-			60, 224, 127, 65, 119, 81, 6, 121, 72, 13, 50, 0, 9, 67, 4, 50, 25, 138, 49, 37, 0, 0, 12, 197, 12, 19, 142, 61, 64, 103,
-			66, 32, 9, 12, 15, 69, 48, 244, 133, 57, 160, 55, 124, 34, 13, 50, 47, 89, 0, 15, 69, 12, 21, 133, 5, 64, 49, 35, 84, 122,
-			126, 47, 0, 103, 14, 69, 12, 21, 133, 5, 64, 49, 35, 84, 122, 35, 47, 0, 0, 16, 70, 72, 84, 208, 37, 65, 64, 34, 121, 89,
-			48, 113, 47, 0, 103, 15, 70, 72, 148, 15, 77, 65, 64, 34, 113, 48, 124, 89, 47, 0, 15, 70, 72, 84, 208, 37, 65, 64, 34, 121,
-			89, 48, 137, 47, 0, 15, 70, 36, 228, 208, 37, 33, 64, 122, 50, 89, 48, 6, 145, 0, 16, 70, 20, 229, 5, 57, 65, 64, 124, 50,
-			47, 6, 124, 50, 47, 0, 17, 70, 12, 83, 5, 9, 33, 64, 89, 121, 55, 6, 121, 71, 34, 13, 0, 0, 16, 70, 8, 83, 133, 5,
-			66, 0, 71, 113, 50, 129, 87, 0, 74, 12, 15, 70, 4, 65, 76, 4, 145, 5, 35, 72, 13, 55, 138, 72, 0, 9, 198, 48, 83, 79,
-			56, 17, 5, 67, 0, 11, 68, 4, 194, 67, 20, 35, 55, 122, 89, 0, 12, 68, 8, 192, 83, 20, 71, 55, 126, 88, 138, 0, 0, 13,
-			5, 4, 15, 14, 39, 20, 72, 136, 50, 47, 0, 32, 8, 197, 61, 85, 19, 21, 64, 65, 13, 69, 52, 148, 212, 21, 32, 65, 122, 89,
-			47, 114, 0, 21, 73, 25, 84, 148, 32, 84, 141, 61, 33, 64, 83, 148, 86, 114, 65, 6, 133, 0, 105, 8, 20, 73, 25, 84, 148, 32,
-			84, 141, 61, 33, 64, 83, 128, 86, 114, 65, 6, 133, 0, 8, 12, 2, 195, 159, 91, 4, 127, 48, 6, 121, 89, 0, 11, 2, 194, 167,
-			89, 121, 49, 91, 13, 50, 0, 0, 17, 66, 56, 240, 50, 6, 136, 4, 65, 133, 0, 81, 109, 111, 114, 101, 32, 23, 66, 56, 240, 50,
-			4, 136, 15, 55, 6, 124, 68, 81, 114, 0, 81, 108, 111, 110, 103, 101, 114, 32, 18, 66, 56, 240, 6, 50, 136, 6, 58, 125, 50, 0,
-			106, 81, 111, 110, 101, 32, 17, 66, 56, 240, 6, 50, 136, 6, 58, 124, 50, 0, 81, 111, 110, 101, 32, 9, 198, 8, 243, 66, 5, 33,
-			0, 66, 8, 66, 56, 240, 50, 136, 0, 42, 15, 2, 194, 164, 49, 125, 34, 13, 50, 89, 122, 89, 137, 50, 0, 0, 15, 67, 16, 84,
-			20, 72, 113, 48, 127, 47, 65, 13, 50, 47, 0, 8, 2, 194, 165, 57, 121, 50, 0, 0, 14, 68, 76, 128, 76, 80, 4, 91, 35, 55,
-			47, 0, 32, 9, 10, 67, 76, 86, 0, 89, 121, 49, 89, 0, 11, 68, 4, 112, 80, 20, 119, 81, 138, 48, 0, 10, 4, 95, 35, 14,
-			4, 13, 50, 72, 0, 10, 2, 194, 162, 89, 121, 50, 47, 89, 0, 0, 15, 69, 53, 84, 197, 84, 208, 65, 57, 134, 88, 6, 141, 65,
-			0, 15, 69, 52, 242, 137, 80, 240, 65, 136, 107, 6, 129, 47, 136, 0, 18, 70, 28, 145, 193, 57, 66, 67, 75, 137, 81, 6, 35, 50,
-			47, 122, 49, 0, 8, 2, 197, 139, 121, 68, 81, 0, 9, 2, 194, 163, 48, 135, 50, 72, 0, 0, 16, 70, 65, 35, 199, 20, 230, 64,
-			48, 34, 124, 75, 13, 50, 37, 0, 24, 73, 16, 148, 195, 60, 228, 207, 48, 21, 5, 72, 122, 89, 49, 6, 124, 50, 89, 13, 55, 13,
-			47, 0, 0, 11, 67, 56, 245, 0, 50, 124, 47, 0, 42, 40, 15, 67, 56, 245, 0, 4, 50, 124, 47, 13, 0, 34, 81, 97, 32, 26,
-			67, 56, 245, 0, 4, 50, 124, 47, 107, 35, 84, 47, 116, 0, 35, 11, 82, 104, 97, 118, 101, 32, 116, 111, 32, 20, 67, 56, 245, 0,
-			50, 124, 47, 107, 35, 84, 0, 35, 14, 81, 104, 97, 118, 101, 32, 19, 67, 56, 245, 0, 50, 124, 47, 119, 84, 0, 35, 73, 81, 104,
-			97, 118, 101, 32, 13, 67, 56, 245, 0, 4, 50, 124, 47, 0, 40, 9, 11, 10, 199, 52, 19, 136, 5, 69, 5, 56, 66, 17, 70, 64,
-			150, 154, 21, 34, 65, 48, 129, 47, 89, 13, 34, 6, 141, 0, 13, 70, 64, 128, 82, 4, 242, 0, 83, 140, 34, 136, 0, 9, 67, 56,
-			245, 0, 50, 136, 47, 0, 18, 71, 16, 84, 208, 21, 32, 84, 20, 72, 121, 89, 48, 13, 34, 13, 47, 0, 0, 18, 72, 12, 243, 147,
-			12, 145, 78, 12, 80, 49, 124, 50, 91, 13, 50, 89, 0, 13, 2, 194, 174, 34, 121, 75, 122, 89, 47, 114, 72, 0, 0, 12, 67, 61,
-			97, 82, 136, 84, 114, 0, 72, 12, 9, 11, 69, 100, 245, 78, 28, 80, 57, 125, 68, 0, 19, 70, 32, 243, 132, 85, 32, 83, 107, 124,
-			50, 72, 6, 57, 143, 34, 13, 89, 0, 13, 69, 28, 83, 143, 52, 80, 75, 129, 50, 136, 65, 0, 12, 69, 12, 243, 77, 36, 80, 49,
-			124, 65, 122, 0, 5, 130, 195, 167, 43, 0, 13, 66, 77, 80, 89, 134, 89, 13, 0, 81, 115, 101, 32, 9, 198, 65, 35, 195, 20, 81,
-			0, 9, 9, 198, 65, 35, 195, 20, 81, 0, 36, 16, 70, 65, 35, 195, 20, 81, 0, 48, 34, 136, 89, 129, 72, 0, 10, 12, 2, 194,
-			172, 50, 124, 47, 23, 89, 137, 50, 0, 5, 130, 195, 164, 43, 0, 10, 199, 76, 84, 85, 21, 53, 5, 72, 66, 20, 71, 29, 80, 67,
-			4, 211, 204, 20, 81, 58, 126, 49, 119, 65, 6, 136, 55, 129, 0, 22, 73, 12, 131, 204, 21, 53, 5, 72, 243, 0, 49, 13, 55, 121,
-			89, 47, 13, 34, 124, 55, 0, 16, 71, 12, 131, 195, 60, 192, 84, 20, 76, 124, 49, 55, 13, 47, 0, 0, 15, 68, 92, 130, 67, 32,
-			4, 58, 122, 76, 0, 8, 12, 9, 32, 23, 73, 52, 144, 200, 20, 192, 78, 28, 83, 15, 65, 137, 49, 118, 6, 35, 50, 75, 13, 55,
-			136, 0, 11, 68, 56, 145, 197, 48, 50, 137, 75, 118, 0, 11, 68, 40, 19, 73, 20, 75, 138, 65, 37, 0, 11, 68, 12, 80, 201, 48,
-			89, 121, 89, 118, 0, 13, 68, 69, 80, 137, 80, 49, 57, 134, 71, 122, 47, 0, 12, 68, 56, 18, 197, 16, 50, 138, 49, 123, 72, 0,
-			15, 70, 52, 19, 149, 21, 97, 82, 65, 13, 50, 134, 84, 114, 0, 15, 70, 52, 19, 133, 85, 97, 82, 65, 13, 50, 134, 84, 114, 0,
-			11, 68, 48, 83, 77, 20, 55, 121, 65, 37, 0, 11, 68, 8, 17, 197, 48, 71, 138, 81, 118, 0, 0, 13, 69, 64, 148, 195, 21, 48,
-			48, 137, 89, 129, 88, 0, 0, 14, 4, 95, 18, 5, 22, 34, 122, 84, 6, 128, 89, 72, 0, 6, 130, 195, 160, 43, 14, 0, 12, 2,
-			194, 169, 49, 124, 48, 122, 34, 137, 47, 0, 0, 10, 68, 4, 113, 201, 20, 35, 81, 37, 0, 11, 68, 76, 178, 69, 16, 89, 49, 129,
-			72, 0, 22, 72, 65, 33, 70, 21, 32, 66, 49, 144, 48, 34, 121, 83, 14, 34, 13, 71, 55, 122, 0, 32, 11, 68, 16, 80, 207, 100,
-			72, 129, 49, 139, 0, 13, 2, 194, 182, 48, 35, 34, 13, 81, 34, 35, 83, 0, 0, 13, 69, 52, 243, 132, 5, 144, 65, 125, 50, 72,
-			138, 0, 17, 70, 16, 85, 18, 37, 69, 83, 72, 113, 47, 34, 137, 47, 13, 89, 0, 5, 130, 197, 159, 43, 5, 130, 195, 175, 43, 0,
-			15, 66, 60, 224, 2, 124, 50, 86, 115, 0, 81, 116, 104, 101, 32, 9, 66, 60, 224, 4, 124, 50, 0, 12, 0, 16, 70, 60, 36, 212,
-			4, 51, 5, 124, 71, 89, 47, 13, 49, 118, 0, 9, 67, 48, 80, 68, 55, 129, 72, 0, 6, 195, 4, 32, 192, 17, 10, 2, 194, 181,
-			65, 137, 49, 34, 136, 0, 0, 6, 195, 60, 224, 197, 8, 12, 68, 52, 81, 193, 56, 65, 121, 81, 13, 50, 0, 11, 68, 32, 82, 68,
-			36, 107, 137, 72, 37, 0, 10, 68, 4, 242, 70, 20, 129, 83, 13, 0, 12, 68, 92, 131, 201, 76, 107, 134, 6, 122, 88, 0, 12, 68,
-			72, 21, 9, 60, 34, 138, 91, 122, 136, 0, 11, 68, 52, 144, 79, 92, 65, 129, 6, 135, 0, 21, 72, 4, 229, 9, 80, 129, 83, 21,
-			48, 35, 50, 47, 6, 122, 87, 13, 89, 129, 88, 0, 12, 68, 4, 67, 194, 20, 119, 72, 136, 71, 37, 0, 5, 130, 195, 170, 43, 0,
-			13, 69, 56, 117, 89, 20, 224, 50, 134, 57, 121, 50, 0, 5, 130, 195, 171, 43, 0, 14, 70, 25, 80, 200, 76, 144, 64, 83, 57, 134,
-			91, 13, 0, 12, 2, 194, 176, 72, 122, 81, 34, 6, 129, 88, 0, 0, 16, 70, 16, 162, 66, 61, 85, 9, 75, 122, 71, 6, 134, 47,
-			37, 0, 13, 5, 3, 39, 13, 15, 14, 49, 13, 65, 124, 50, 0, 9, 67, 4, 176, 64, 35, 49, 119, 0, 17, 71, 4, 69, 133, 73,
-			66, 90, 20, 35, 72, 84, 114, 47, 137, 88, 0, 16, 2, 194, 177, 48, 55, 125, 89, 132, 65, 6, 137, 50, 13, 89, 0, 5, 130, 195,
-			169, 43, 0, 11, 68, 80, 80, 200, 100, 47, 121, 49, 37, 0, 13, 68, 52, 245, 9, 24, 65, 136, 47, 6, 129, 83, 0, 13, 2, 194,
-			190, 87, 34, 129, 49, 58, 132, 47, 114, 0, 5, 130, 195, 182, 43, 0, 14, 69, 52, 148, 212, 20, 64, 65, 122, 89, 47, 123, 72, 0,
-			6, 195, 85, 35, 0, 17, 13, 2, 195, 183, 72, 113, 84, 6, 137, 72, 71, 137, 0, 0, 15, 70, 12, 19, 80, 8, 83, 12, 49, 35,
-			65, 71, 13, 55, 0, 17, 70, 81, 83, 137, 76, 144, 64, 47, 134, 50, 6, 129, 90, 13, 0, 103, 11, 2, 194, 188, 119, 49, 58, 132,
-			47, 114, 0, 0, 15, 70, 48, 21, 82, 20, 224, 197, 55, 124, 34, 13, 50, 89, 0, 17, 70, 76, 85, 133, 72, 83, 25, 89, 113, 84,
-			6, 142, 55, 122, 0, 32, 16, 70, 56, 243, 147, 20, 228, 197, 50, 124, 50, 89, 13, 50, 89, 0, 9, 2, 194, 189, 119, 107, 126, 83,
-			0, 0, 16, 70, 52, 244, 143, 12, 48, 78, 65, 13, 34, 124, 49, 13, 50, 0, 11, 68, 52, 144, 79, 84, 65, 129, 6, 135, 0, 18,
-			4, 95, 18, 6, 24, 34, 6, 121, 47, 34, 13, 83, 55, 121, 49, 89, 0, 14, 4, 95, 3, 5, 4, 89, 13, 72, 6, 122, 55, 119,
-			0, 0, 10, 67, 44, 240, 78, 49, 136, 126, 50, 0, 14, 69, 16, 80, 197, 57, 64, 72, 129, 89, 13, 50, 47, 0, 14, 69, 8, 19,
-			12, 21, 64, 71, 35, 55, 6, 138, 0, 103, 12, 69, 8, 19, 12, 21, 64, 71, 35, 55, 138, 0, 0, 15, 70, 100, 241, 200, 85, 37,
-			0, 57, 136, 81, 114, 47, 0, 103, 14, 70, 100, 241, 200, 85, 37, 0, 57, 124, 81, 114, 47, 0, 14, 70, 52, 20, 145, 84, 81, 64,
-			65, 127, 49, 6, 129, 0, 7, 2, 195, 176, 121, 86, 0, 0, 19, 71, 36, 212, 5, 72, 97, 67, 80, 122, 65, 48, 6, 128, 83, 121,
-			49, 47, 0, 10, 67, 12, 241, 68, 49, 136, 121, 72, 0, 14, 4, 95, 12, 9, 7, 55, 4, 122, 81, 119, 76, 13, 0, 5, 130, 195,
-			177, 43, 5, 130, 197, 161, 43, 0, 19, 72, 72, 84, 212, 5, 84, 129, 57, 64, 34, 121, 89, 47, 34, 124, 50, 47, 0, 8, 2, 195,
-			190, 87, 132, 50, 0, 0, 12, 69, 72, 85, 84, 21, 32, 34, 139, 47, 114, 0, 22, 67, 80, 83, 0, 47, 4, 121, 55, 15, 119, 84,
-			6, 129, 84, 0, 81, 97, 118, 105, 118, 32, 11, 67, 56, 18, 70, 50, 137, 6, 129, 83, 0, 14, 69, 12, 243, 66, 5, 64, 49, 124,
-			65, 71, 35, 47, 0, 0, 16, 6, 19, 8, 1, 14, 39, 20, 4, 91, 126, 50, 47, 0, 32, 12, 9, 67, 93, 84, 211, 58, 117, 89,
-			0, 17, 70, 65, 35, 196, 84, 49, 64, 48, 34, 124, 72, 57, 134, 89, 0, 37, 13, 70, 12, 128, 84, 20, 21, 64, 91, 35, 47, 136,
-			0, 5, 130, 195, 188, 43, 0, 14, 70, 80, 132, 143, 84, 114, 0, 87, 34, 134, 0, 72, 12, 0, 11, 68, 4, 114, 76, 20, 35, 75,
-			118, 0, 103, 10, 67, 32, 211, 77, 107, 6, 13, 65, 0, 10, 68, 24, 194, 69, 72, 83, 55, 145, 0, 0, 15, 69, 56, 85, 129, 16,
-			16, 50, 113, 84, 35, 72, 13, 0, 103, 14, 69, 56, 85, 129, 16, 16, 50, 113, 84, 126, 72, 13, 0, 21, 73, 72, 83, 129, 37, 52,
-			193, 56, 49, 64, 34, 121, 50, 13, 89, 124, 50, 89, 0, 103, 12, 69, 49, 144, 200, 20, 80, 55, 129, 76, 129, 0, 14, 69, 24, 18,
-			137, 80, 16, 83, 119, 107, 129, 47, 13, 0, 7, 2, 202, 131, 121, 91, 0, 0, 9, 198, 77, 84, 208, 20, 53, 0, 36, 17, 70, 77,
-			84, 208, 20, 53, 0, 89, 125, 89, 48, 121, 49, 47, 0, 10, 15, 70, 24, 192, 67, 12, 145, 0, 83, 55, 35, 89, 122, 72, 0, 9,
-			67, 8, 144, 83, 71, 144, 89, 0, 0, 10, 67, 65, 52, 212, 48, 89, 89, 47, 0, 10, 67, 24, 144, 84, 83, 129, 13, 47, 0, 0,
-			17, 70, 85, 65, 78, 76, 147, 0, 57, 134, 47, 6, 121, 50, 89, 118, 0, 10, 68, 72, 82, 71, 56, 34, 138, 50, 0, 15, 70, 12,
-			20, 9, 80, 243, 0, 49, 35, 48, 122, 47, 118, 0, 12, 68, 4, 194, 66, 36, 35, 55, 13, 71, 137, 0, 0, 14, 69, 8, 81, 143,
-			72, 80, 71, 122, 83, 133, 0, 74, 12, 13, 69, 81, 34, 67, 36, 16, 47, 34, 122, 91, 13, 0, 13, 69, 48, 83, 143, 72, 80, 55,
-			121, 50, 6, 133, 0, 13, 69, 29, 32, 72, 4, 208, 81, 34, 138, 13, 65, 0, 11, 69, 4, 242, 70, 24, 80, 129, 83, 13, 0, 8,
-			197, 4, 226, 193, 72, 16, 65, 16, 70, 64, 19, 131, 72, 80, 83, 48, 35, 50, 49, 34, 141, 89, 0, 14, 69, 64, 17, 76, 48, 16,
-			48, 137, 6, 121, 55, 13, 0, 6, 195, 4, 178, 78, 66, 9, 67, 4, 49, 82, 138, 89, 114, 0, 0, 6, 194, 85, 48, 17, 42, 9,
-			66, 85, 48, 4, 125, 89, 0, 9, 9, 198, 12, 243, 132, 84, 53, 0, 36, 16, 70, 12, 243, 132, 84, 53, 0, 49, 124, 50, 72, 125,
-			49, 47, 0, 12, 2, 201, 148, 136, 48, 13, 50, 6, 130, 10, 0, 0, 18, 71, 77, 67, 210, 101, 65, 76, 48, 89, 47, 130, 34, 122,
-			47, 121, 55, 0, 18, 71, 65, 54, 67, 32, 244, 201, 76, 89, 137, 49, 6, 136, 89, 122, 89, 0, 18, 71, 36, 229, 133, 57, 67, 210,
-			100, 122, 50, 84, 13, 50, 47, 34, 122, 0, 18, 71, 20, 116, 133, 28, 147, 213, 76, 122, 81, 34, 6, 129, 75, 13, 89, 0, 13, 4,
-			95, 57, 48, 15, 50, 6, 137, 50, 47, 141, 0, 0, 9, 67, 37, 51, 1, 137, 55, 13, 0, 12, 68, 4, 131, 69, 16, 35, 101, 65,
-			121, 72, 0, 11, 68, 28, 147, 77, 20, 81, 122, 65, 37, 0, 0, 11, 69, 80, 129, 73, 73, 48, 86, 140, 88, 0, 16, 70, 76, 144,
-			133, 48, 149, 83, 89, 113, 71, 138, 55, 141, 89, 0, 15, 69, 56, 240, 143, 17, 144, 6, 50, 136, 71, 124, 72, 37, 0, 12, 69, 52,
-			80, 68, 61, 112, 65, 121, 72, 136, 0, 15, 69, 21, 131, 196, 85, 48, 121, 49, 89, 13, 72, 13, 89, 0, 13, 69, 12, 20, 133, 77,
-			48, 49, 13, 34, 121, 89, 0, 14, 69, 12, 19, 150, 5, 48, 49, 35, 50, 84, 13, 89, 0, 0, 12, 67, 28, 241, 83, 2, 81, 136,
-			88, 0, 12, 9, 8, 2, 196, 184, 49, 34, 126, 0, 11, 4, 95, 2, 1, 18, 10, 71, 6, 127, 0, 0, 15, 70, 52, 16, 203, 20,
-			227, 129, 65, 13, 49, 121, 50, 13, 0, 18, 70, 60, 179, 1, 32, 243, 65, 136, 49, 55, 119, 107, 6, 136, 65, 13, 0, 9, 198, 61,
-			97, 82, 80, 147, 69, 65, 9, 67, 32, 211, 64, 107, 13, 65, 0, 0, 18, 67, 76, 243, 69, 89, 125, 65, 58, 124, 50, 0, 106, 81,
-			111, 110, 101, 32, 18, 67, 76, 243, 69, 89, 125, 65, 58, 125, 50, 0, 106, 81, 111, 110, 101, 32, 17, 67, 76, 243, 69, 89, 125, 65,
-			58, 124, 50, 0, 81, 111, 110, 101, 32, 13, 67, 76, 243, 69, 4, 89, 125, 65, 0, 34, 13, 9, 11, 68, 88, 81, 199, 100, 84, 121,
-			75, 122, 0, 10, 2, 204, 134, 71, 34, 121, 84, 10, 0, 5, 130, 197, 190, 43, 0, 11, 67, 8, 17, 90, 71, 137, 6, 121, 88, 0,
-			17, 70, 17, 83, 70, 72, 145, 83, 72, 125, 65, 83, 34, 6, 129, 89, 0, 12, 69, 60, 97, 133, 73, 48, 124, 83, 114, 88, 0, 15,
-			69, 32, 144, 84, 85, 48, 107, 137, 6, 138, 47, 13, 89, 0, 14, 69, 16, 80, 146, 37, 48, 72, 13, 71, 34, 129, 0, 103, 13, 69,
-			16, 80, 146, 37, 48, 72, 121, 71, 34, 129, 0, 0, 10, 67, 16, 83, 79, 72, 121, 65, 136, 0, 12, 2, 204, 132, 65, 35, 49, 34,
-			124, 50, 10, 0, 20, 2, 203, 140, 89, 6, 121, 49, 13, 50, 72, 34, 122, 89, 47, 34, 4, 121, 89, 0, 15, 2, 202, 148, 81, 55,
-			6, 124, 19, 118, 89, 47, 124, 48, 0, 0, 0, 10, 68, 52, 17, 86, 20, 65, 138, 84, 0, 10, 67, 49, 84, 5, 55, 134, 48, 138,
-			0, 11, 68, 52, 149, 18, 20, 65, 137, 47, 114, 0, 11, 67, 17, 84, 5, 72, 57, 134, 48, 0, 135, 16, 2, 204, 130, 89, 128, 49,
-			125, 65, 83, 55, 121, 49, 89, 10, 0, 7, 2, 202, 146, 121, 90, 0, 0, 8, 197, 12, 243, 146, 4, 64, 65, 13, 69, 76, 19, 15,
-			60, 224, 89, 119, 55, 134, 50, 0, 12, 69, 64, 20, 137, 4, 128, 48, 13, 34, 144, 0, 11, 2, 204, 131, 47, 122, 55, 72, 13, 10,
-			0, 13, 2, 201, 155, 136, 48, 13, 50, 6, 121, 12, 10, 0, 0, 16, 8, 19, 9, 15, 2, 8, 195, 161, 14, 91, 13, 84, 130, 50,
-			0, 17, 70, 56, 144, 207, 76, 144, 64, 50, 122, 49, 13, 89, 6, 129, 13, 0, 10, 2, 204, 128, 81, 34, 126, 84, 10, 0, 10, 2,
-			203, 136, 89, 47, 34, 121, 89, 0, 0, 8, 67, 21, 36, 128, 140, 0, 103, 16, 70, 12, 19, 130, 21, 36, 129, 49, 35, 50, 71, 13,
-			34, 13, 0, 15, 71, 52, 244, 133, 12, 19, 66, 20, 65, 133, 49, 13, 65, 0, 7, 67, 21, 36, 128, 128, 0, 19, 71, 4, 229, 9,
-			64, 21, 8, 100, 35, 50, 47, 6, 122, 48, 13, 87, 37, 0, 6, 195, 57, 148, 4, 17, 11, 2, 204, 129, 119, 49, 57, 134, 47, 10,
-			0, 8, 2, 201, 153, 91, 58, 126, 0, 0, 22, 72, 72, 84, 21, 80, 21, 9, 60, 224, 34, 121, 48, 57, 134, 47, 6, 138, 91, 13,
-			50, 0, 17, 7, 16, 9, 195, 177, 1, 20, 1, 48, 129, 67, 6, 35, 47, 119, 0, 12, 68, 64, 84, 149, 76, 48, 13, 34, 134, 88,
-			0, 11, 200, 32, 244, 137, 104, 243, 148, 4, 192, 67, 11, 200, 16, 148, 195, 61, 83, 148, 20, 64, 66, 11, 68, 4, 194, 65, 76, 138,
-			55, 141, 89, 0, 0, 14, 69, 76, 18, 71, 60, 224, 89, 137, 81, 6, 124, 50, 0, 14, 69, 92, 147, 132, 20, 64, 58, 122, 50, 72,
-			123, 72, 0, 12, 67, 28, 242, 78, 4, 81, 136, 113, 50, 0, 9, 0, 12, 2, 201, 164, 34, 35, 65, 89, 107, 132, 50, 0, 0, 27,
-			75, 72, 80, 207, 52, 209, 78, 16, 21, 9, 60, 224, 34, 121, 49, 13, 65, 121, 50, 72, 6, 138, 91, 13, 50, 0, 0, 15, 68, 8,
-			82, 78, 28, 4, 71, 129, 122, 68, 0, 35, 9, 12, 12, 68, 8, 16, 213, 64, 71, 138, 49, 13, 48, 0, 10, 68, 28, 81, 83, 20,
-			81, 129, 89, 0, 12, 68, 20, 66, 67, 80, 129, 72, 122, 49, 47, 0, 12, 68, 12, 243, 66, 60, 49, 124, 65, 71, 136, 0, 11, 68,
-			4, 114, 78, 28, 138, 75, 122, 68, 0, 10, 2, 204, 138, 34, 122, 68, 81, 10, 0, 0, 14, 69, 80, 16, 140, 21, 64, 47, 35, 71,
-			55, 13, 47, 0, 14, 69, 4, 195, 79, 77, 64, 130, 55, 65, 136, 89, 47, 0, 14, 69, 4, 35, 5, 77, 64, 138, 71, 55, 13, 89,
-			47, 0, 0, 15, 70, 77, 65, 87, 5, 37, 0, 89, 47, 134, 114, 47, 0, 103, 15, 70, 77, 65, 87, 5, 37, 0, 89, 47, 57, 134,
-			114, 47, 0, 15, 70, 12, 19, 132, 4, 49, 64, 49, 35, 50, 72, 122, 89, 0, 16, 70, 72, 81, 133, 72, 81, 64, 34, 121, 83, 13,
-			34, 6, 129, 0, 14, 70, 72, 20, 16, 61, 37, 0, 34, 35, 48, 6, 133, 0, 12, 2, 204, 136, 72, 145, 34, 129, 89, 113, 89, 0,
-			13, 2, 203, 144, 55, 121, 68, 87, 13, 50, 72, 10, 0, 0, 0, 12, 68, 48, 80, 78, 56, 55, 129, 6, 35, 50, 0, 22, 72, 84,
-			226, 78, 80, 84, 133, 77, 64, 125, 50, 6, 122, 50, 47, 13, 34, 13, 89, 47, 0, 13, 68, 72, 82, 197, 100, 34, 4, 129, 49, 6,
-			129, 0, 22, 72, 72, 18, 78, 24, 244, 133, 77, 64, 34, 6, 138, 50, 83, 4, 124, 34, 113, 89, 47, 0, 0, 13, 69, 100, 84, 211,
-			37, 32, 57, 121, 89, 89, 128, 0, 11, 69, 65, 32, 89, 21, 32, 48, 34, 140, 0, 8, 67, 64, 80, 82, 48, 140, 0, 8, 197, 61,
-			85, 12, 21, 64, 65, 13, 69, 12, 128, 82, 37, 64, 76, 35, 34, 122, 47, 0, 12, 69, 12, 17, 83, 5, 32, 89, 129, 88, 114, 0,
-			8, 2, 202, 167, 76, 121, 91, 0, 0, 7, 66, 76, 144, 89, 129, 0, 14, 70, 29, 35, 213, 64, 145, 64, 81, 34, 134, 48, 37, 0,
-			15, 70, 5, 50, 193, 56, 49, 64, 119, 89, 49, 120, 50, 89, 0, 8, 2, 202, 164, 75, 121, 90, 0, 0, 0, 12, 68, 40, 16, 207,
-			8, 75, 138, 49, 13, 71, 0, 12, 68, 8, 19, 66, 36, 71, 35, 65, 71, 129, 0, 11, 68, 76, 178, 69, 76, 89, 49, 137, 88, 0,
-			11, 68, 4, 208, 83, 76, 119, 65, 35, 89, 0, 0, 15, 69, 80, 243, 65, 80, 240, 47, 13, 65, 138, 47, 136, 0, 103, 18, 67, 80,
-			80, 82, 47, 6, 140, 15, 6, 124, 83, 0, 81, 111, 102, 102, 32, 21, 67, 80, 80, 82, 47, 4, 140, 15, 119, 48, 127, 47, 0, 81,
-			97, 112, 97, 114, 116, 32, 9, 67, 80, 80, 82, 47, 140, 0, 36, 9, 67, 80, 80, 82, 47, 142, 0, 10, 13, 69, 76, 19, 9, 56,
-			80, 89, 138, 55, 137, 50, 0, 12, 69, 61, 85, 1, 28, 80, 135, 47, 113, 75, 0, 12, 69, 28, 19, 15, 72, 80, 81, 119, 55, 133,
-			0, 0, 15, 70, 64, 198, 77, 61, 85, 8, 48, 55, 122, 65, 13, 87, 0, 12, 67, 96, 208, 83, 121, 49, 89, 65, 119, 89, 0, 10,
-			198, 21, 133, 18, 4, 53, 0, 66, 36, 10, 198, 21, 133, 18, 4, 53, 0, 65, 9, 10, 198, 21, 133, 18, 4, 53, 0, 65, 10, 0,
-			20, 71, 65, 34, 77, 5, 97, 82, 4, 48, 34, 129, 65, 13, 84, 6, 140, 34, 13, 0, 18, 71, 12, 145, 193, 72, 85, 20, 20, 89,
-			122, 81, 13, 6, 34, 121, 47, 0, 0, 11, 68, 12, 130, 76, 20, 76, 122, 55, 37, 0, 12, 68, 76, 83, 69, 56, 89, 129, 65, 13,
-			50, 0, 17, 70, 52, 20, 129, 80, 131, 206, 65, 35, 34, 13, 87, 124, 50, 0, 103, 11, 68, 16, 147, 196, 20, 72, 137, 136, 72, 0,
-			11, 68, 4, 81, 201, 76, 129, 75, 122, 89, 0, 18, 2, 204, 158, 119, 48, 34, 6, 124, 49, 89, 122, 65, 13, 50, 47, 10, 0, 0,
-			12, 69, 12, 243, 142, 36, 80, 49, 124, 50, 37, 0, 8, 197, 76, 85, 20, 20, 80, 66, 14, 69, 72, 81, 15, 56, 80, 34, 129, 72,
-			6, 125, 50, 0, 13, 69, 72, 21, 137, 56, 80, 34, 13, 84, 129, 50, 0, 17, 70, 52, 244, 209, 84, 149, 15, 65, 13, 89, 49, 6,
-			129, 47, 136, 0, 14, 69, 5, 85, 9, 76, 208, 130, 108, 122, 88, 13, 65, 0, 0, 15, 70, 81, 84, 142, 44, 86, 64, 47, 148, 50,
-			49, 129, 0, 105, 14, 70, 81, 84, 142, 44, 86, 64, 47, 128, 50, 49, 129, 0, 0, 16, 70, 64, 21, 18, 36, 50, 65, 48, 119, 47,
-			34, 122, 91, 13, 0, 18, 71, 12, 20, 211, 4, 225, 18, 4, 49, 13, 89, 35, 50, 72, 34, 13, 0, 19, 71, 72, 84, 21, 80, 16,
-			140, 20, 34, 121, 48, 57, 134, 47, 13, 71, 118, 0, 10, 199, 12, 244, 143, 48, 192, 82, 100, 66, 6, 2, 95, 1, 138, 0, 0, 15,
-			70, 12, 245, 207, 72, 177, 82, 49, 136, 58, 128, 49, 114, 0, 9, 198, 12, 21, 129, 48, 145, 82, 67, 7, 2, 201, 178, 67, 121, 0,
-			0, 14, 69, 64, 145, 211, 81, 144, 48, 122, 81, 89, 47, 137, 0, 15, 69, 28, 19, 1, 97, 144, 81, 35, 55, 119, 49, 89, 37, 0,
-			14, 69, 13, 34, 83, 37, 48, 49, 34, 137, 89, 122, 89, 0, 0, 10, 67, 16, 85, 83, 72, 138, 117, 89, 0, 0, 15, 70, 76, 192,
-			86, 37, 50, 0, 89, 55, 138, 84, 122, 91, 0, 14, 70, 44, 224, 86, 37, 50, 0, 50, 138, 84, 122, 91, 0, 0, 11, 200, 72, 81,
-			193, 72, 67, 5, 77, 48, 8, 11, 68, 76, 21, 143, 100, 89, 119, 84, 139, 0, 17, 70, 36, 229, 5, 72, 210, 78, 122, 50, 47, 6,
-			128, 65, 122, 50, 0, 11, 68, 12, 240, 207, 4, 49, 136, 49, 136, 0, 0, 17, 70, 16, 19, 65, 76, 53, 83, 72, 119, 65, 35, 89,
-			49, 13, 89, 0, 9, 198, 61, 85, 2, 72, 80, 75, 65, 13, 69, 16, 148, 200, 21, 48, 72, 122, 91, 123, 88, 0, 14, 69, 4, 194,
-			66, 37, 48, 35, 55, 13, 71, 137, 88, 0, 11, 2, 201, 190, 10, 6, 127, 47, 35, 48, 0, 0, 10, 2, 204, 165, 34, 122, 68, 81,
-			10, 0, 0, 5, 194, 80, 128, 9, 6, 66, 80, 128, 87, 0, 0, 8, 67, 5, 32, 192, 127, 49, 0, 6, 195, 37, 32, 192, 17, 0,
-			10, 68, 44, 131, 69, 72, 49, 65, 142, 0, 12, 2, 202, 178, 65, 4, 124, 72, 75, 6, 138, 0, 0, 14, 69, 16, 80, 204, 4, 224,
-			72, 121, 49, 55, 119, 50, 0, 14, 69, 4, 194, 83, 60, 224, 35, 55, 122, 89, 13, 50, 0, 17, 70, 4, 117, 73, 48, 84, 129, 35,
-			81, 129, 55, 6, 140, 34, 13, 0, 14, 69, 77, 83, 148, 4, 224, 89, 125, 50, 47, 35, 50, 0, 12, 69, 61, 36, 8, 4, 224, 132,
-			83, 13, 50, 0, 0, 15, 70, 88, 19, 133, 77, 48, 64, 84, 119, 50, 121, 89, 13, 0, 13, 70, 73, 84, 211, 20, 195, 0, 34, 125,
-			89, 118, 0, 15, 70, 80, 147, 73, 16, 84, 128, 47, 122, 65, 122, 72, 114, 0, 15, 2, 202, 176, 35, 89, 48, 113, 34, 138, 47, 113,
-			72, 10, 0, 0, 18, 71, 20, 194, 83, 4, 33, 84, 32, 113, 55, 122, 88, 13, 71, 13, 87, 0, 19, 71, 48, 19, 132, 61, 115, 133,
-			72, 55, 6, 35, 50, 72, 4, 136, 50, 114, 0, 18, 67, 24, 21, 88, 83, 6, 136, 15, 48, 6, 126, 0, 81, 112, 97, 115, 32, 6,
-			195, 85, 48, 64, 17, 17, 2, 204, 175, 50, 4, 124, 50, 89, 113, 55, 6, 35, 71, 113, 49, 0, 7, 2, 95, 19, 121, 89, 0, 0,
-			10, 68, 21, 83, 5, 72, 139, 55, 114, 0, 12, 68, 17, 147, 1, 56, 72, 122, 55, 13, 50, 0, 11, 68, 80, 147, 79, 72, 47, 129,
-			65, 133, 0, 20, 68, 92, 245, 78, 16, 58, 4, 135, 50, 72, 15, 6, 125, 48, 0, 81, 117, 112, 32, 23, 68, 92, 245, 78, 16, 58,
-			4, 135, 50, 72, 15, 6, 72, 135, 50, 0, 81, 100, 111, 119, 110, 32, 12, 68, 92, 245, 78, 16, 58, 135, 50, 72, 0, 38, 11, 68,
-			92, 245, 78, 16, 58, 134, 50, 72, 0, 11, 68, 52, 80, 78, 80, 65, 121, 50, 47, 0, 11, 68, 48, 80, 78, 80, 55, 121, 50, 47,
-			0, 12, 68, 5, 67, 1, 76, 35, 47, 55, 13, 89, 0, 0, 13, 69, 32, 19, 73, 76, 128, 107, 138, 65, 122, 91, 0, 14, 69, 8,
-			133, 84, 4, 224, 71, 134, 47, 6, 35, 50, 0, 8, 197, 88, 147, 204, 36, 224, 66, 13, 69, 33, 86, 154, 4, 128, 107, 13, 88, 6,
-			126, 0, 0, 10, 67, 76, 241, 129, 89, 136, 83, 13, 0, 21, 67, 93, 114, 73, 72, 125, 71, 118, 57, 134, 72, 125, 71, 118, 57, 134,
-			47, 6, 134, 0, 13, 2, 202, 188, 113, 75, 121, 49, 47, 113, 84, 10, 0, 0, 8, 67, 5, 32, 200, 127, 76, 0, 0, 11, 2, 204,
-			170, 72, 121, 50, 47, 118, 10, 0, 0, 12, 69, 16, 83, 137, 21, 32, 72, 113, 50, 145, 0, 0, 14, 70, 24, 147, 133, 77, 49, 64,
-			83, 113, 50, 121, 89, 0, 0, 10, 67, 85, 49, 64, 57, 134, 88, 0, 36, 9, 67, 85, 49, 64, 57, 134, 89, 0, 10, 199, 32, 80,
-			68, 24, 148, 147, 80, 66, 0, 11, 68, 20, 194, 83, 20, 113, 55, 129, 88, 0, 7, 196, 36, 64, 72, 60, 65, 9, 198, 52, 18, 78,
-			80, 18, 78, 66, 7, 196, 36, 229, 18, 60, 65, 12, 68, 12, 193, 82, 44, 49, 55, 127, 49, 0, 135, 0, 14, 69, 60, 49, 76, 61,
-			64, 124, 89, 13, 55, 124, 47, 0, 9, 197, 36, 228, 213, 49, 64, 65, 10, 8, 197, 36, 228, 213, 49, 64, 66, 23, 73, 36, 212, 18,
-			20, 115, 129, 8, 193, 64, 122, 65, 48, 34, 6, 121, 81, 50, 13, 71, 118, 0, 14, 69, 4, 97, 140, 85, 128, 119, 83, 55, 125, 49,
-			89, 0, 0, 13, 70, 76, 19, 201, 73, 49, 64, 89, 141, 91, 13, 0, 14, 70, 12, 193, 65, 57, 49, 64, 49, 55, 121, 50, 88, 0,
-			0, 18, 71, 21, 52, 9, 60, 224, 71, 20, 121, 89, 48, 122, 13, 50, 126, 90, 0, 6, 195, 5, 48, 80, 17, 0, 11, 68, 25, 147,
-			4, 20, 83, 137, 55, 72, 0, 10, 67, 88, 86, 0, 84, 121, 49, 89, 0, 0, 13, 69, 29, 32, 69, 52, 80, 81, 34, 138, 13, 65,
-			0, 13, 69, 5, 33, 217, 48, 80, 127, 81, 6, 137, 55, 0, 13, 69, 52, 244, 129, 48, 80, 65, 13, 34, 35, 55, 0, 8, 67, 37,
-			35, 206, 145, 50, 0, 0, 11, 67, 16, 82, 129, 72, 138, 90, 126, 0, 9, 0, 11, 67, 72, 21, 76, 34, 135, 6, 134, 55, 0, 14,
-			70, 32, 20, 151, 36, 50, 0, 107, 35, 34, 122, 75, 0, 10, 199, 64, 149, 21, 37, 64, 82, 100, 66, 10, 199, 28, 243, 196, 56, 145,
-			200, 80, 66, 0, 18, 70, 52, 242, 1, 52, 81, 0, 109, 111, 104, 97, 109, 109, 97, 100, 0, 29, 12, 68, 12, 129, 82, 36, 91, 140,
-			34, 6, 129, 0, 19, 72, 64, 130, 76, 37, 53, 9, 56, 80, 83, 122, 55, 113, 89, 47, 137, 50, 0, 11, 200, 52, 243, 25, 8, 65,
-			78, 84, 208, 66, 11, 68, 48, 80, 80, 80, 55, 121, 48, 47, 0, 11, 200, 36, 195, 9, 80, 84, 129, 80, 80, 21, 11, 68, 28, 83,
-			196, 20, 75, 129, 136, 72, 0, 12, 68, 16, 80, 210, 100, 72, 113, 49, 34, 137, 0, 21, 72, 12, 243, 210, 16, 147, 129, 80, 80, 49,
-			136, 6, 130, 72, 113, 50, 138, 47, 0, 36, 10, 2, 95, 34, 49, 58, 136, 47, 89, 0, 0, 8, 197, 101, 99, 206, 56, 80, 66, 12,
-			69, 64, 131, 197, 8, 80, 83, 129, 71, 129, 0, 15, 70, 4, 225, 204, 21, 49, 89, 35, 68, 81, 118, 89, 37, 0, 14, 69, 76, 145,
-			78, 56, 16, 89, 129, 6, 121, 50, 13, 0, 11, 69, 69, 82, 67, 32, 80, 49, 129, 91, 0, 14, 69, 65, 146, 129, 52, 16, 48, 13,
-			75, 126, 65, 13, 0, 14, 69, 52, 147, 149, 80, 80, 65, 122, 50, 122, 47, 0, 10, 13, 69, 16, 18, 12, 36, 16, 72, 138, 55, 129,
-			13, 0, 11, 69, 5, 84, 211, 36, 80, 124, 88, 37, 0, 17, 2, 95, 33, 121, 49, 89, 49, 55, 13, 65, 6, 138, 91, 13, 50, 0,
-			0, 13, 67, 28, 243, 133, 2, 81, 131, 50, 0, 103, 12, 9, 12, 67, 28, 243, 133, 2, 81, 124, 50, 0, 12, 9, 0, 9, 67, 76,
-			243, 128, 89, 125, 50, 0, 17, 70, 24, 192, 77, 20, 224, 207, 83, 55, 119, 65, 121, 68, 49, 136, 0, 12, 67, 17, 81, 84, 72, 57,
-			134, 6, 121, 47, 0, 9, 67, 12, 243, 128, 49, 124, 50, 0, 9, 2, 95, 39, 49, 58, 136, 47, 0, 0, 11, 68, 72, 82, 75, 36,
-			34, 138, 49, 129, 0, 21, 72, 36, 212, 5, 72, 21, 9, 88, 80, 122, 65, 48, 6, 121, 34, 13, 47, 122, 84, 0, 13, 2, 95, 38,
-			35, 65, 48, 13, 89, 35, 50, 72, 0, 0, 17, 70, 20, 228, 197, 52, 35, 5, 124, 50, 89, 6, 124, 65, 71, 118, 0, 14, 4, 95,
-			50, 48, 15, 47, 58, 6, 121, 50, 47, 141, 0, 13, 2, 95, 37, 48, 148, 89, 6, 121, 50, 47, 0, 105, 12, 2, 95, 37, 48, 114,
-			89, 6, 121, 50, 47, 0, 0, 9, 67, 12, 243, 133, 49, 136, 50, 0, 9, 2, 95, 36, 72, 124, 55, 114, 0, 0, 16, 67, 88, 19,
-			128, 84, 35, 50, 72, 128, 0, 81, 100, 101, 114, 32, 17, 67, 88, 19, 128, 84, 35, 50, 72, 121, 50, 0, 81, 100, 101, 110, 32, 9,
-			67, 80, 83, 128, 47, 121, 50, 0, 19, 71, 36, 212, 9, 56, 114, 78, 28, 122, 65, 48, 6, 122, 50, 75, 122, 68, 0, 0, 9, 198,
-			61, 85, 3, 5, 53, 0, 65, 11, 68, 4, 66, 69, 84, 119, 72, 57, 134, 0, 13, 2, 95, 42, 35, 89, 47, 13, 34, 122, 89, 49,
-			0, 14, 4, 95, 3, 1, 16, 49, 4, 35, 48, 14, 47, 118, 0, 0, 9, 67, 32, 84, 130, 128, 71, 0, 103, 12, 69, 12, 20, 211,
-			21, 144, 49, 138, 89, 37, 0, 14, 69, 9, 81, 78, 61, 48, 71, 58, 138, 50, 124, 89, 0, 17, 70, 80, 20, 5, 77, 68, 153, 47,
-			35, 48, 13, 89, 47, 34, 122, 0, 13, 2, 95, 41, 34, 137, 47, 48, 119, 34, 121, 50, 0, 0, 16, 70, 80, 244, 143, 57, 67, 192,
-			47, 13, 34, 124, 50, 47, 136, 0, 18, 70, 36, 66, 84, 5, 35, 196, 137, 72, 6, 122, 47, 13, 34, 124, 72, 0, 16, 70, 76, 245,
-			84, 32, 83, 132, 89, 126, 83, 6, 121, 50, 72, 0, 10, 67, 36, 67, 25, 137, 72, 55, 122, 0, 14, 2, 95, 40, 55, 121, 83, 47,
-			48, 119, 34, 121, 50, 0, 0, 11, 67, 32, 84, 128, 107, 128, 0, 72, 34, 9, 17, 67, 64, 84, 128, 48, 4, 128, 15, 89, 6, 138,
-			0, 81, 115, 101, 32, 20, 67, 64, 84, 128, 48, 114, 15, 89, 6, 121, 50, 47, 0, 81, 99, 101, 110, 116, 32, 9, 67, 64, 84, 128,
-			48, 128, 0, 72, 19, 71, 16, 243, 7, 20, 195, 1, 84, 72, 124, 55, 81, 6, 121, 99, 55, 137, 0, 6, 195, 37, 36, 192, 17, 0,
-			10, 67, 49, 82, 83, 55, 134, 122, 89, 0, 13, 68, 44, 80, 78, 84, 49, 122, 6, 126, 50, 134, 0, 11, 68, 20, 66, 84, 32, 129,
-			72, 122, 87, 0, 11, 68, 20, 35, 207, 44, 129, 71, 117, 49, 0, 8, 2, 95, 46, 72, 124, 47, 0, 0, 13, 69, 4, 68, 137, 4,
-			224, 138, 72, 34, 141, 50, 0, 14, 69, 53, 83, 137, 12, 128, 65, 57, 134, 50, 122, 49, 0, 15, 70, 5, 69, 15, 72, 225, 89, 119,
-			47, 148, 50, 37, 0, 105, 14, 70, 5, 69, 15, 72, 225, 89, 119, 47, 128, 50, 37, 0, 12, 69, 4, 195, 9, 20, 64, 35, 55, 137,
-			72, 0, 9, 2, 95, 45, 72, 35, 91, 0, 103, 11, 2, 95, 45, 107, 4, 137, 83, 13, 50, 0, 0, 28, 67, 32, 84, 133, 107, 6,
-			142, 15, 13, 50, 72, 15, 86, 6, 140, 0, 82, 97, 110, 100, 32, 116, 104, 101, 114, 101, 32, 14, 70, 76, 243, 4, 36, 84, 128, 89,
-			136, 55, 75, 114, 0, 9, 198, 24, 244, 133, 88, 84, 128, 66, 15, 70, 4, 195, 15, 88, 84, 128, 130, 55, 6, 136, 84, 114, 0, 9,
-			2, 95, 44, 49, 124, 65, 13, 0, 0, 19, 67, 24, 20, 128, 83, 6, 127, 10, 65, 4, 133, 0, 81, 109, 111, 114, 101, 32, 16, 71,
-			32, 243, 69, 61, 115, 133, 72, 107, 136, 65, 136, 50, 114, 0, 20, 71, 5, 4, 1, 72, 21, 21, 76, 35, 48, 13, 34, 6, 35, 47,
-			13, 89, 0, 103, 19, 71, 5, 4, 1, 72, 21, 21, 76, 35, 48, 13, 34, 6, 138, 47, 13, 89, 0, 12, 67, 53, 36, 192, 65, 122,
-			89, 113, 88, 0, 24, 9, 2, 95, 51, 87, 34, 6, 129, 0, 0, 12, 68, 4, 226, 84, 4, 119, 50, 129, 47, 13, 0, 21, 72, 104,
-			147, 66, 4, 37, 197, 4, 224, 88, 113, 65, 71, 126, 71, 58, 122, 13, 50, 0, 8, 2, 95, 50, 47, 6, 134, 0, 0, 13, 69, 77,
-			147, 66, 60, 192, 89, 122, 65, 71, 118, 0, 9, 198, 12, 243, 150, 21, 36, 197, 36, 10, 198, 12, 243, 150, 21, 36, 197, 65, 9, 10,
-			2, 95, 49, 58, 6, 125, 50, 0, 106, 9, 2, 95, 49, 58, 6, 124, 50, 0, 0, 16, 70, 8, 20, 133, 57, 68, 192, 71, 35, 34,
-			13, 50, 47, 89, 0, 14, 70, 61, 4, 15, 76, 84, 128, 13, 48, 136, 88, 114, 0, 15, 70, 48, 16, 143, 72, 84, 128, 55, 138, 71,
-			13, 34, 114, 0, 10, 2, 95, 48, 88, 6, 141, 34, 136, 0, 0, 19, 71, 72, 80, 207, 52, 209, 78, 16, 34, 4, 121, 49, 13, 65,
-			121, 50, 72, 0, 12, 2, 95, 55, 89, 6, 13, 84, 13, 50, 0, 107, 11, 2, 95, 55, 89, 6, 121, 84, 13, 50, 0, 0, 10, 67,
-			56, 148, 143, 50, 141, 34, 136, 0, 10, 67, 21, 35, 211, 141, 34, 124, 89, 0, 10, 2, 95, 54, 89, 6, 122, 49, 89, 0, 0, 9,
-			2, 95, 53, 83, 6, 137, 84, 0, 0, 16, 70, 72, 84, 18, 37, 48, 76, 34, 113, 48, 34, 137, 88, 118, 0, 17, 70, 64, 83, 131,
-			32, 19, 148, 48, 121, 50, 91, 13, 50, 47, 0, 103, 15, 70, 64, 83, 131, 32, 19, 148, 48, 124, 50, 91, 124, 50, 0, 14, 70, 24,
-			21, 9, 29, 81, 64, 83, 119, 47, 129, 81, 0, 8, 2, 95, 52, 83, 6, 133, 0, 0, 15, 2, 95, 59, 89, 121, 65, 122, 49, 6,
-			136, 55, 13, 50, 0, 0, 11, 67, 32, 84, 147, 107, 128, 88, 0, 72, 12, 11, 68, 4, 226, 83, 20, 35, 50, 122, 89, 0, 10, 2,
-			95, 58, 49, 136, 55, 13, 50, 0, 0, 15, 69, 92, 130, 76, 77, 64, 58, 4, 137, 55, 89, 47, 0, 8, 13, 5, 8, 5, 39, 12,
-			12, 107, 129, 55, 0, 72, 32, 13, 69, 21, 131, 79, 61, 32, 121, 49, 89, 65, 143, 0, 15, 69, 72, 81, 140, 85, 128, 34, 129, 83,
-			55, 125, 49, 89, 0, 9, 2, 95, 57, 50, 6, 137, 50, 0, 0, 10, 66, 92, 80, 58, 129, 0, 72, 32, 9, 13, 202, 52, 20, 211,
-			4, 50, 21, 76, 85, 20, 76, 67, 8, 66, 100, 16, 57, 119, 0, 9, 9, 198, 77, 84, 18, 37, 49, 64, 66, 18, 70, 12, 240, 88,
-			36, 19, 0, 49, 136, 6, 35, 49, 89, 122, 13, 55, 0, 16, 70, 12, 20, 129, 52, 83, 0, 49, 35, 34, 13, 65, 121, 55, 0, 16,
-			70, 4, 48, 213, 73, 49, 68, 119, 49, 148, 89, 123, 72, 0, 105, 15, 70, 4, 48, 213, 73, 49, 68, 119, 49, 128, 89, 123, 72, 0,
-			5, 194, 84, 144, 17, 8, 2, 95, 56, 6, 138, 47, 0, 0, 16, 70, 64, 84, 147, 64, 86, 0, 48, 128, 89, 48, 121, 49, 89, 0,
-			10, 199, 36, 229, 5, 72, 96, 67, 20, 65, 18, 71, 12, 243, 131, 36, 84, 135, 20, 49, 124, 50, 89, 122, 6, 140, 90, 0, 12, 2,
-			95, 63, 49, 58, 121, 89, 76, 13, 50, 0, 0, 11, 68, 24, 145, 82, 100, 83, 145, 34, 122, 0, 12, 68, 12, 19, 69, 60, 49, 35,
-			65, 122, 136, 0, 13, 2, 95, 62, 81, 34, 138, 47, 13, 86, 35, 50, 0, 0, 15, 69, 28, 64, 78, 76, 176, 81, 14, 72, 35, 50,
-			89, 49, 0, 14, 69, 48, 240, 193, 48, 80, 55, 136, 49, 6, 120, 55, 0, 12, 69, 29, 82, 78, 20, 16, 81, 122, 50, 37, 0, 13,
-			69, 24, 16, 193, 16, 80, 83, 13, 89, 126, 72, 0, 13, 69, 16, 80, 193, 16, 80, 72, 121, 49, 138, 72, 0, 10, 2, 95, 61, 129,
-			49, 58, 118, 88, 0, 0, 17, 70, 16, 243, 133, 28, 19, 0, 72, 124, 50, 113, 81, 6, 130, 55, 0, 10, 67, 16, 83, 153, 72, 113,
-			50, 137, 0, 11, 2, 95, 60, 55, 121, 89, 86, 35, 50, 0, 0, 0, 27, 68, 92, 245, 76, 16, 58, 117, 72, 107, 35, 84, 47, 116,
-			0, 74, 32, 12, 82, 104, 97, 118, 101, 32, 116, 111, 32, 21, 68, 92, 245, 76, 16, 58, 117, 72, 107, 35, 84, 0, 35, 14, 81, 104,
-			97, 118, 101, 32, 22, 68, 92, 245, 76, 16, 58, 2, 117, 72, 107, 2, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 10, 196, 92, 245,
-			76, 16, 76, 32, 9, 12, 12, 68, 4, 211, 65, 56, 119, 65, 6, 126, 50, 0, 10, 67, 5, 53, 83, 138, 89, 13, 89, 0, 13, 68,
-			4, 66, 79, 76, 35, 86, 57, 6, 149, 89, 0, 0, 15, 69, 81, 34, 65, 56, 144, 47, 34, 129, 6, 35, 50, 37, 0, 14, 69, 76,
-			243, 21, 80, 80, 89, 124, 55, 57, 134, 47, 0, 15, 69, 16, 80, 149, 56, 176, 72, 129, 71, 6, 125, 50, 49, 0, 9, 198, 4, 229,
-			9, 52, 243, 153, 66, 0, 10, 2, 95, 64, 35, 47, 89, 137, 50, 0, 0, 19, 71, 21, 133, 18, 4, 66, 84, 20, 121, 49, 89, 47,
-			34, 13, 72, 137, 47, 0, 0, 20, 72, 65, 35, 202, 20, 53, 9, 48, 80, 48, 34, 13, 75, 121, 49, 47, 118, 0, 103, 11, 68, 5,
-			4, 1, 48, 119, 48, 130, 55, 0, 0, 16, 70, 12, 20, 143, 48, 147, 133, 49, 35, 34, 13, 55, 137, 50, 0, 16, 70, 24, 83, 73,
-			56, 147, 133, 83, 121, 65, 13, 50, 122, 50, 0, 12, 69, 5, 52, 197, 77, 48, 119, 89, 121, 89, 0, 0, 17, 70, 88, 149, 1, 52,
-			147, 128, 84, 137, 47, 13, 65, 122, 50, 0, 103, 17, 70, 88, 149, 1, 52, 147, 128, 84, 137, 47, 13, 65, 123, 50, 0, 103, 16, 70,
-			88, 149, 1, 52, 147, 128, 84, 122, 47, 13, 65, 123, 50, 0, 14, 70, 80, 84, 146, 4, 147, 128, 47, 13, 34, 138, 50, 0, 15, 70,
-			29, 34, 70, 24, 243, 128, 81, 34, 122, 83, 13, 50, 0, 0, 24, 75, 72, 80, 207, 56, 224, 73, 77, 48, 78, 12, 80, 34, 113, 49,
-			124, 50, 122, 89, 13, 50, 89, 0, 0, 10, 67, 48, 81, 207, 55, 121, 81, 136, 0, 15, 70, 12, 193, 65, 57, 49, 82, 49, 55, 121,
-			50, 88, 114, 0, 11, 68, 4, 113, 210, 60, 35, 81, 34, 136, 0, 0, 14, 70, 52, 144, 200, 20, 195, 5, 65, 113, 91, 121, 55, 0,
-			13, 69, 5, 53, 12, 21, 144, 35, 89, 47, 55, 37, 0, 18, 70, 12, 20, 143, 48, 147, 129, 49, 35, 34, 13, 55, 6, 137, 50, 13,
-			0, 9, 198, 84, 208, 146, 20, 195, 1, 66, 15, 70, 80, 244, 148, 36, 195, 1, 47, 132, 47, 6, 129, 119, 0, 15, 69, 77, 80, 148,
-			49, 144, 89, 125, 47, 13, 55, 122, 0, 32, 17, 70, 72, 81, 137, 56, 84, 153, 34, 113, 83, 137, 50, 13, 34, 122, 0, 19, 8, 16,
-			9, 195, 177, 1, 20, 1, 19, 48, 129, 67, 6, 35, 47, 119, 88, 0, 13, 69, 52, 245, 84, 33, 48, 65, 135, 86, 88, 0, 9, 12,
-			201, 24, 244, 133, 76, 131, 210, 80, 83, 128, 66, 18, 70, 12, 243, 148, 72, 20, 153, 49, 124, 50, 47, 34, 140, 34, 37, 0, 103, 17,
-			70, 12, 243, 148, 72, 20, 153, 49, 124, 50, 47, 34, 13, 34, 122, 0, 12, 4, 95, 226, 128, 163, 71, 117, 55, 113, 47, 0, 0, 9,
-			198, 12, 243, 12, 20, 83, 128, 66, 19, 70, 25, 35, 206, 80, 83, 132, 83, 34, 6, 125, 50, 47, 4, 121, 50, 72, 0, 16, 4, 194,
-			182, 194, 182, 48, 35, 34, 13, 81, 34, 35, 83, 89, 0, 12, 4, 95, 226, 128, 162, 71, 117, 55, 113, 47, 0, 0, 10, 67, 4, 64,
-			64, 138, 72, 13, 0, 10, 18, 71, 12, 243, 15, 77, 49, 85, 52, 49, 124, 55, 13, 89, 6, 141, 65, 0, 15, 4, 95, 226, 128, 161,
-			72, 125, 71, 118, 72, 35, 81, 114, 0, 0, 11, 68, 48, 20, 197, 72, 55, 138, 88, 114, 0, 11, 68, 24, 147, 210, 16, 83, 129, 132,
-			72, 0, 16, 70, 8, 16, 203, 20, 225, 0, 71, 35, 49, 6, 121, 50, 72, 0, 11, 4, 95, 226, 128, 160, 72, 35, 81, 114, 0, 0,
-			12, 67, 92, 129, 78, 4, 58, 121, 50, 0, 15, 10, 12, 67, 92, 129, 78, 58, 2, 121, 50, 0, 12, 10, 16, 70, 65, 33, 78, 80,
-			144, 197, 48, 34, 121, 50, 108, 122, 89, 0, 14, 69, 36, 211, 199, 20, 224, 122, 65, 13, 75, 13, 50, 0, 8, 197, 4, 81, 197, 4,
-			224, 66, 0, 16, 70, 4, 225, 197, 48, 84, 192, 35, 50, 75, 13, 55, 129, 88, 0, 15, 7, 6, 1, 195, 167, 1, 4, 5, 83, 13,
-			89, 126, 72, 0, 15, 4, 95, 226, 128, 166, 122, 55, 6, 122, 48, 89, 122, 89, 0, 0, 13, 70, 12, 82, 76, 36, 66, 0, 49, 138,
-			55, 37, 0, 6, 195, 85, 48, 128, 17, 13, 4, 95, 226, 128, 165, 47, 134, 72, 124, 47, 89, 0, 0, 11, 68, 52, 148, 200, 4, 65,
-			129, 91, 13, 0, 10, 4, 95, 226, 128, 164, 72, 124, 47, 0, 0, 14, 69, 4, 193, 146, 20, 64, 35, 55, 83, 34, 113, 72, 0, 10,
-			67, 4, 192, 78, 35, 55, 13, 50, 0, 12, 69, 72, 82, 78, 20, 64, 34, 138, 50, 72, 0, 14, 69, 32, 21, 18, 20, 64, 107, 138,
-			47, 34, 123, 72, 0, 15, 4, 95, 226, 128, 155, 55, 121, 83, 47, 49, 58, 136, 47, 0, 0, 15, 70, 52, 83, 80, 32, 148, 192, 65,
-			121, 65, 83, 113, 89, 0, 13, 4, 95, 226, 128, 154, 55, 136, 49, 58, 136, 47, 0, 0, 15, 70, 76, 21, 67, 21, 0, 78, 89, 130,
-			89, 48, 13, 50, 0, 14, 4, 95, 226, 128, 153, 34, 137, 47, 49, 58, 136, 47, 0, 0, 14, 68, 28, 242, 78, 28, 4, 81, 136, 122,
-			68, 0, 12, 9, 10, 67, 4, 193, 67, 35, 55, 122, 49, 0, 14, 70, 48, 83, 208, 5, 33, 0, 55, 121, 48, 114, 72, 0, 10, 68,
-			28, 21, 71, 20, 81, 138, 75, 0, 15, 4, 95, 226, 128, 152, 55, 121, 83, 47, 49, 58, 136, 47, 0, 18, 4, 95, 4, 15, 20, 58,
-			122, 86, 72, 6, 124, 47, 119, 71, 125, 84, 0, 0, 14, 69, 76, 80, 193, 57, 64, 89, 129, 49, 13, 50, 47, 0, 14, 69, 21, 132,
-			5, 73, 64, 121, 49, 89, 48, 128, 47, 0, 13, 69, 4, 211, 213, 57, 64, 119, 65, 135, 50, 47, 0, 16, 4, 95, 226, 128, 159, 55,
-			121, 83, 47, 49, 58, 136, 47, 89, 0, 0, 18, 70, 81, 34, 66, 84, 224, 76, 47, 34, 137, 71, 6, 57, 134, 50, 118, 0, 16, 70,
-			77, 3, 207, 56, 97, 68, 89, 48, 134, 50, 83, 121, 72, 0, 11, 67, 56, 22, 137, 50, 126, 47, 89, 122, 0, 14, 70, 28, 148, 129,
-			24, 97, 64, 75, 113, 34, 120, 83, 0, 10, 67, 4, 64, 77, 35, 72, 13, 65, 0, 14, 4, 95, 226, 128, 158, 55, 136, 49, 58, 136,
-			47, 89, 0, 0, 11, 67, 76, 129, 64, 91, 129, 0, 72, 9, 33, 15, 4, 95, 226, 128, 157, 34, 137, 47, 49, 58, 136, 47, 89, 0,
-			15, 2, 95, 91, 55, 121, 83, 47, 71, 34, 35, 49, 113, 47, 0, 0, 16, 70, 65, 33, 67, 21, 5, 0, 48, 34, 129, 89, 121, 48,
-			47, 0, 11, 200, 52, 18, 78, 80, 18, 78, 21, 32, 66, 11, 68, 32, 82, 83, 80, 107, 137, 89, 47, 0, 16, 4, 95, 226, 128, 156,
-			55, 121, 83, 47, 49, 58, 136, 47, 89, 0, 0, 10, 67, 48, 83, 206, 55, 129, 124, 50, 0, 16, 70, 52, 148, 211, 61, 84, 137, 65,
-			122, 88, 6, 143, 34, 37, 0, 18, 70, 60, 34, 84, 84, 20, 153, 124, 71, 6, 122, 76, 117, 140, 37, 0, 103, 16, 70, 60, 34, 84,
-			84, 20, 153, 124, 71, 6, 122, 76, 143, 37, 0, 10, 67, 20, 65, 78, 129, 72, 13, 50, 0, 18, 70, 16, 147, 1, 80, 244, 153, 72,
-			122, 55, 35, 47, 149, 34, 122, 0, 103, 17, 70, 16, 147, 1, 80, 244, 153, 72, 122, 55, 13, 47, 13, 34, 122, 0, 14, 69, 12, 21,
-			143, 73, 64, 49, 119, 84, 6, 132, 47, 0, 10, 4, 95, 226, 128, 147, 72, 35, 91, 0, 0, 16, 70, 76, 243, 69, 60, 225, 64, 89,
-			125, 65, 58, 125, 50, 0, 106, 15, 70, 76, 243, 69, 60, 225, 64, 89, 125, 65, 58, 124, 50, 0, 19, 66, 76, 240, 89, 6, 136, 15,
-			65, 4, 125, 76, 0, 81, 109, 117, 99, 104, 32, 20, 66, 76, 240, 89, 4, 136, 15, 65, 6, 121, 50, 37, 0, 81, 109, 97, 110, 121,
-			32, 18, 66, 76, 240, 89, 6, 136, 15, 83, 4, 127, 0, 12, 81, 102, 97, 114, 32, 9, 66, 76, 240, 4, 89, 136, 0, 12, 15, 70,
-			65, 33, 84, 104, 83, 0, 48, 34, 121, 47, 89, 118, 0, 16, 70, 29, 33, 68, 36, 83, 148, 81, 34, 129, 72, 141, 50, 47, 0, 16,
-			70, 16, 80, 129, 12, 193, 64, 72, 138, 71, 6, 126, 49, 118, 0, 6, 194, 88, 144, 17, 42, 5, 194, 84, 176, 17, 10, 4, 95, 226,
-			128, 146, 72, 35, 91, 0, 0, 13, 70, 4, 19, 9, 100, 18, 0, 13, 55, 129, 13, 0, 12, 4, 95, 226, 128, 145, 107, 137, 83, 13,
-			50, 0, 14, 2, 95, 95, 6, 125, 50, 72, 114, 89, 49, 4, 133, 0, 0, 12, 68, 72, 148, 197, 56, 34, 122, 88, 13, 50, 0, 12,
-			68, 72, 85, 18, 100, 34, 129, 47, 34, 137, 0, 9, 67, 12, 130, 67, 91, 129, 49, 0, 11, 67, 4, 192, 83, 119, 55, 6, 35, 89,
-			0, 11, 4, 95, 226, 130, 160, 57, 143, 34, 136, 0, 12, 4, 95, 226, 128, 144, 107, 137, 83, 13, 50, 0, 17, 2, 95, 94, 89, 147,
-			49, 125, 65, 83, 55, 4, 121, 49, 89, 0, 105, 16, 2, 95, 94, 89, 128, 49, 125, 65, 83, 55, 4, 121, 49, 89, 0, 0, 6, 195,
-			76, 243, 206, 32, 15, 69, 8, 80, 193, 52, 80, 71, 122, 49, 138, 65, 0, 74, 12, 10, 67, 4, 65, 78, 138, 72, 13, 50, 0, 14,
-			69, 64, 20, 1, 100, 16, 48, 119, 48, 137, 38, 13, 0, 10, 67, 36, 51, 206, 137, 49, 124, 50, 0, 13, 69, 12, 19, 137, 56, 80,
-			49, 138, 50, 137, 50, 0, 14, 2, 95, 93, 34, 137, 47, 71, 34, 35, 49, 113, 47, 0, 0, 10, 67, 64, 84, 149, 48, 13, 34, 134,
-			0, 16, 70, 56, 18, 82, 60, 34, 64, 50, 137, 34, 6, 136, 71, 37, 0, 18, 70, 9, 81, 1, 64, 84, 212, 71, 134, 72, 13, 48,
-			6, 121, 89, 47, 0, 15, 70, 77, 83, 132, 36, 19, 0, 89, 125, 50, 72, 144, 55, 0, 9, 67, 76, 130, 65, 91, 129, 13, 0, 27,
-			74, 52, 144, 210, 60, 244, 135, 4, 226, 83, 52, 65, 137, 49, 34, 136, 6, 132, 81, 13, 50, 122, 88, 13, 65, 0, 15, 4, 95, 226,
-			128, 150, 72, 4, 125, 71, 118, 71, 6, 127, 0, 0, 20, 4, 95, 226, 128, 149, 107, 124, 34, 113, 88, 4, 124, 50, 47, 118, 71, 6,
-			127, 0, 0, 27, 68, 12, 245, 76, 16, 49, 117, 72, 107, 35, 84, 47, 116, 0, 74, 32, 12, 82, 104, 97, 118, 101, 32, 116, 111, 32,
-			21, 68, 12, 245, 76, 16, 49, 117, 72, 107, 35, 84, 0, 35, 14, 81, 104, 97, 118, 101, 32, 20, 68, 12, 245, 76, 16, 4, 49, 117,
-			72, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 14, 68, 12, 245, 76, 16, 2, 49, 117, 72, 0, 32, 12, 9, 13, 68, 60, 20, 201,
-			76, 136, 6, 138, 89, 113, 89, 0, 12, 68, 16, 83, 79, 56, 72, 129, 65, 13, 50, 0, 11, 68, 12, 243, 69, 72, 49, 125, 65, 114,
-			0, 9, 68, 12, 241, 85, 72, 49, 128, 0, 12, 4, 95, 226, 128, 148, 121, 65, 72, 35, 91, 0, 0, 16, 70, 76, 19, 65, 57, 66,
-			1, 89, 13, 65, 35, 50, 87, 13, 0, 14, 69, 72, 85, 9, 56, 16, 34, 121, 47, 122, 50, 13, 0, 14, 69, 72, 81, 201, 52, 80,
-			34, 138, 90, 6, 129, 65, 0, 16, 70, 56, 84, 5, 57, 66, 5, 50, 113, 48, 121, 50, 87, 37, 0, 15, 69, 53, 85, 1, 80, 80,
-			65, 57, 134, 47, 6, 138, 47, 0, 23, 73, 4, 197, 5, 72, 224, 84, 20, 198, 64, 130, 55, 47, 6, 128, 50, 13, 47, 55, 122, 0,
-			32, 0, 9, 198, 61, 85, 2, 4, 50, 192, 65, 12, 2, 95, 96, 71, 35, 49, 48, 34, 137, 65, 0, 0, 20, 71, 48, 165, 66, 48,
-			160, 78, 4, 55, 57, 134, 71, 55, 57, 6, 126, 50, 13, 0, 17, 71, 76, 245, 78, 16, 34, 84, 20, 89, 135, 50, 72, 71, 137, 47,
-			0, 0, 11, 67, 60, 130, 79, 136, 107, 6, 137, 136, 0, 11, 68, 12, 18, 82, 60, 49, 137, 34, 136, 0, 9, 198, 61, 85, 13, 61,
-			53, 0, 65, 11, 68, 8, 20, 193, 48, 71, 138, 89, 118, 0, 20, 72, 5, 34, 84, 32, 209, 84, 36, 48, 119, 34, 122, 87, 65, 13,
-			47, 122, 49, 0, 0, 8, 67, 12, 129, 82, 91, 140, 0, 14, 69, 52, 244, 129, 77, 48, 65, 124, 34, 6, 35, 89, 0, 16, 70, 16,
-			148, 195, 37, 3, 5, 72, 122, 89, 6, 137, 48, 118, 0, 12, 69, 4, 148, 130, 85, 48, 140, 71, 125, 89, 0, 12, 4, 95, 51, 48,
-			15, 87, 6, 128, 47, 141, 0, 0, 11, 67, 81, 83, 129, 47, 57, 134, 50, 13, 0, 15, 70, 24, 195, 213, 72, 148, 200, 83, 55, 128,
-			113, 91, 0, 103, 15, 70, 24, 195, 213, 72, 148, 200, 83, 55, 125, 34, 113, 91, 0, 0, 9, 67, 72, 147, 192, 34, 129, 136, 0, 9,
-			198, 12, 243, 21, 52, 37, 83, 66, 9, 67, 48, 83, 192, 55, 129, 136, 0, 18, 71, 32, 84, 133, 80, 144, 193, 48, 107, 113, 34, 121,
-			47, 113, 49, 118, 0, 16, 70, 25, 34, 78, 28, 147, 135, 83, 34, 122, 50, 75, 122, 68, 0, 12, 201, 12, 131, 15, 72, 244, 12, 5,
-			53, 0, 65, 9, 67, 8, 147, 192, 71, 137, 136, 0, 8, 67, 4, 195, 64, 126, 65, 0, 0, 22, 72, 52, 243, 148, 28, 243, 69, 73,
-			144, 65, 124, 50, 47, 81, 6, 124, 65, 13, 34, 37, 0, 13, 68, 84, 229, 197, 16, 125, 50, 58, 6, 121, 72, 0, 20, 72, 69, 80,
-			84, 21, 35, 129, 73, 144, 49, 58, 13, 47, 128, 50, 13, 34, 122, 0, 11, 68, 32, 245, 212, 60, 107, 135, 47, 134, 0, 12, 68, 12,
-			243, 69, 80, 49, 124, 65, 113, 47, 0, 0, 14, 69, 13, 148, 18, 85, 48, 89, 137, 48, 34, 13, 89, 0, 13, 69, 36, 229, 18, 5,
-			144, 122, 50, 47, 34, 138, 0, 0, 15, 70, 52, 244, 143, 12, 51, 192, 65, 13, 34, 124, 49, 136, 0, 10, 67, 88, 148, 193, 84, 129,
-			88, 13, 0, 10, 67, 88, 20, 197, 84, 126, 88, 0, 135, 9, 198, 80, 240, 129, 12, 51, 192, 66, 5, 194, 100, 64, 17, 12, 4, 95,
-			7, 18, 22, 81, 34, 6, 126, 84, 0, 0, 10, 67, 20, 66, 84, 121, 72, 122, 47, 0, 0, 13, 68, 53, 83, 20, 36, 65, 125, 55,
-			47, 137, 0, 103, 13, 68, 4, 35, 214, 20, 13, 71, 125, 84, 0, 74, 12, 12, 68, 48, 18, 84, 100, 55, 138, 13, 47, 37, 0, 13,
-			68, 16, 82, 84, 100, 72, 129, 13, 108, 37, 0, 103, 12, 68, 16, 82, 84, 100, 72, 138, 13, 47, 37, 0, 12, 68, 8, 148, 207, 56,
-			71, 137, 89, 13, 50, 0, 0, 12, 69, 12, 129, 82, 100, 192, 91, 121, 34, 118, 0, 15, 69, 84, 229, 201, 56, 64, 125, 50, 58, 6,
-			137, 50, 72, 0, 17, 69, 48, 149, 133, 12, 64, 55, 6, 137, 84, 89, 129, 72, 6, 129, 0, 13, 69, 21, 36, 129, 56, 64, 121, 34,
-			13, 50, 72, 0, 0, 16, 70, 16, 243, 73, 56, 144, 192, 72, 124, 65, 113, 50, 122, 49, 0, 10, 67, 56, 20, 193, 50, 35, 89, 119,
-			0, 0, 11, 67, 4, 193, 88, 35, 55, 122, 49, 89, 0, 19, 67, 16, 84, 192, 72, 13, 65, 139, 50, 0, 81, 109, 111, 105, 110, 101,
-			115, 32, 12, 201, 4, 99, 210, 20, 209, 78, 80, 147, 206, 66, 0, 0, 13, 69, 28, 244, 208, 20, 192, 81, 124, 89, 48, 118, 0, 23,
-			73, 12, 128, 82, 37, 51, 65, 80, 144, 192, 49, 35, 34, 122, 89, 65, 6, 35, 47, 122, 49, 0, 12, 69, 12, 128, 80, 20, 192, 76,
-			35, 48, 118, 0, 9, 198, 4, 195, 19, 64, 144, 197, 65, 0, 15, 70, 52, 18, 197, 56, 224, 64, 65, 13, 49, 121, 50, 13, 0, 15,
-			70, 44, 19, 142, 4, 64, 64, 49, 126, 50, 13, 72, 13, 0, 16, 70, 8, 243, 15, 28, 224, 64, 71, 13, 55, 136, 50, 38, 13, 0,
-			17, 70, 60, 49, 65, 56, 144, 192, 136, 91, 122, 6, 35, 50, 122, 49, 0, 0, 9, 67, 12, 243, 208, 49, 134, 48, 0, 19, 71, 12,
-			243, 77, 84, 226, 84, 100, 49, 13, 65, 57, 134, 50, 113, 47, 37, 0, 23, 73, 5, 81, 205, 20, 229, 1, 80, 147, 206, 130, 81, 65,
-			121, 50, 47, 6, 138, 91, 13, 50, 0, 10, 199, 4, 229, 9, 12, 194, 78, 20, 65, 0, 22, 73, 56, 243, 69, 56, 51, 1, 81, 84,
-			133, 50, 13, 65, 121, 68, 49, 55, 13, 76, 114, 0, 12, 68, 12, 195, 211, 20, 49, 55, 136, 88, 0, 36, 12, 68, 12, 195, 211, 20,
-			49, 55, 136, 89, 0, 9, 21, 72, 4, 67, 79, 56, 149, 9, 60, 224, 35, 72, 65, 13, 50, 6, 122, 91, 13, 50, 0, 0, 9, 198,
-			76, 128, 78, 28, 128, 73, 66, 13, 69, 12, 195, 211, 21, 32, 49, 55, 136, 89, 114, 0, 12, 69, 9, 81, 134, 21, 64, 71, 125, 83,
-			138, 0, 16, 69, 4, 36, 197, 57, 64, 35, 71, 89, 6, 121, 50, 47, 0, 36, 15, 69, 4, 36, 197, 57, 64, 35, 71, 89, 13, 50,
-			47, 0, 10, 15, 69, 4, 36, 197, 57, 64, 35, 71, 89, 6, 121, 50, 47, 0, 0, 14, 70, 52, 144, 200, 20, 193, 64, 65, 113, 91,
-			121, 55, 0, 15, 70, 76, 80, 84, 80, 193, 64, 89, 129, 6, 35, 47, 118, 0, 14, 70, 12, 243, 15, 28, 225, 64, 49, 13, 55, 136,
-			50, 0, 0, 13, 2, 95, 123, 55, 121, 83, 47, 71, 34, 138, 89, 0, 13, 4, 95, 4, 9, 1, 6, 117, 65, 55, 135, 47, 0, 0,
-			18, 72, 81, 35, 213, 8, 17, 15, 85, 32, 47, 34, 134, 71, 13, 72, 133, 0, 12, 68, 20, 69, 67, 20, 113, 72, 57, 134, 89, 0,
-			9, 67, 8, 20, 211, 71, 138, 89, 0, 20, 4, 95, 226, 128, 188, 121, 49, 89, 49, 55, 119, 65, 6, 138, 91, 13, 50, 88, 0, 0,
-			15, 69, 16, 241, 83, 57, 64, 72, 125, 88, 13, 50, 47, 0, 32, 13, 69, 24, 243, 7, 21, 32, 83, 136, 55, 75, 114, 0, 16, 70,
-			88, 145, 206, 21, 69, 5, 84, 122, 50, 57, 6, 121, 47, 0, 16, 70, 76, 16, 143, 80, 17, 197, 89, 35, 71, 13, 47, 126, 90, 0,
-			16, 70, 36, 229, 5, 72, 225, 69, 122, 50, 47, 6, 128, 50, 129, 0, 23, 73, 12, 21, 1, 77, 68, 143, 64, 129, 64, 49, 119, 47,
-			35, 89, 47, 34, 13, 83, 2, 37, 0, 15, 4, 95, 226, 128, 179, 72, 125, 71, 118, 48, 34, 137, 65, 0, 0, 15, 70, 32, 244, 212,
-			36, 193, 64, 107, 124, 89, 47, 118, 0, 103, 14, 70, 24, 84, 148, 36, 193, 64, 83, 128, 47, 118, 0, 103, 9, 66, 80, 240, 47, 134,
-			0, 72, 42, 9, 66, 80, 240, 47, 134, 0, 72, 14, 23, 66, 80, 240, 47, 134, 13, 50, 72, 83, 34, 6, 136, 0, 82, 97, 110, 100,
-			32, 102, 114, 111, 32, 16, 66, 80, 240, 2, 47, 117, 10, 47, 116, 0, 32, 81, 116, 111, 32, 16, 66, 80, 240, 47, 13, 15, 6, 71,
-			129, 0, 14, 81, 98, 101, 32, 15, 66, 80, 240, 47, 13, 71, 2, 37, 0, 35, 81, 98, 101, 32, 8, 66, 80, 240, 47, 116, 0, 32,
-			7, 66, 100, 80, 57, 129, 0, 9, 198, 85, 1, 210, 4, 65, 64, 36, 10, 198, 85, 1, 210, 4, 65, 64, 65, 10, 11, 67, 65, 83,
-			153, 48, 57, 134, 50, 37, 0, 14, 70, 12, 128, 82, 4, 65, 64, 91, 119, 34, 126, 72, 0, 11, 4, 95, 226, 128, 178, 48, 34, 137,
-			65, 0, 0, 11, 67, 92, 134, 64, 4, 58, 137, 0, 12, 10, 9, 67, 20, 198, 64, 129, 55, 37, 0, 9, 198, 65, 35, 199, 72, 84,
-			211, 36, 18, 70, 65, 35, 199, 72, 84, 211, 48, 34, 124, 81, 34, 121, 89, 0, 103, 9, 17, 70, 65, 35, 199, 72, 84, 211, 48, 34,
-			136, 81, 34, 121, 89, 0, 9, 0, 13, 4, 95, 226, 128, 176, 48, 128, 65, 6, 129, 55, 0, 0, 14, 69, 28, 20, 129, 28, 80, 81,
-			119, 34, 126, 90, 0, 103, 13, 69, 16, 83, 137, 76, 80, 72, 13, 50, 129, 89, 0, 11, 69, 5, 32, 200, 36, 80, 127, 76, 37, 0,
-			16, 70, 12, 243, 15, 52, 34, 65, 49, 13, 55, 125, 65, 71, 141, 0, 16, 69, 8, 241, 207, 80, 16, 71, 136, 81, 13, 47, 6, 126,
-			0, 103, 15, 69, 8, 241, 207, 80, 16, 71, 124, 81, 13, 47, 6, 126, 0, 14, 69, 84, 224, 66, 48, 80, 125, 50, 6, 138, 71, 118,
-			0, 12, 2, 95, 125, 34, 137, 47, 71, 34, 138, 89, 0, 0, 8, 3, 19, 195, 173, 91, 129, 0, 19, 70, 12, 243, 148, 72, 20, 212,
-			49, 124, 50, 47, 34, 6, 35, 89, 47, 0, 36, 10, 2, 95, 124, 84, 129, 71, 6, 127, 0, 0, 13, 67, 92, 128, 84, 4, 58, 125,
-			47, 0, 103, 12, 10, 12, 67, 92, 128, 84, 4, 58, 124, 47, 0, 15, 10, 12, 67, 92, 128, 84, 58, 2, 124, 47, 0, 12, 10, 19,
-			71, 80, 83, 5, 64, 131, 206, 100, 47, 121, 55, 6, 121, 83, 13, 50, 37, 0, 0, 18, 70, 77, 80, 138, 20, 53, 0, 89, 125, 71,
-			75, 6, 121, 49, 47, 0, 36, 8, 67, 76, 129, 87, 91, 136, 0, 12, 68, 25, 85, 15, 56, 83, 134, 47, 124, 50, 0, 16, 70, 21,
-			21, 65, 80, 147, 206, 113, 49, 58, 138, 90, 13, 50, 0, 11, 68, 20, 98, 76, 20, 129, 83, 137, 55, 0, 14, 70, 12, 243, 15, 72,
-			81, 0, 49, 125, 55, 114, 72, 0, 9, 68, 4, 148, 204, 20, 144, 55, 0, 16, 4, 95, 226, 128, 180, 47, 34, 122, 48, 118, 48, 34,
-			137, 65, 0, 0, 12, 69, 76, 244, 8, 36, 80, 89, 136, 83, 37, 0, 15, 70, 4, 36, 201, 57, 66, 5, 35, 71, 89, 122, 50, 87,
-			0, 0, 16, 70, 61, 97, 82, 80, 198, 64, 136, 84, 6, 128, 47, 55, 122, 0, 0, 15, 71, 72, 145, 200, 80, 83, 213, 76, 34, 137,
-			76, 13, 89, 0, 18, 71, 72, 21, 9, 60, 224, 76, 20, 34, 35, 91, 13, 50, 6, 35, 55, 0, 0, 18, 70, 9, 80, 200, 4, 224,
-			78, 71, 57, 134, 49, 6, 35, 50, 13, 50, 0, 9, 67, 92, 129, 87, 83, 57, 134, 0, 0, 14, 69, 28, 192, 68, 101, 48, 81, 55,
-			35, 72, 122, 89, 0, 22, 73, 65, 54, 67, 32, 144, 84, 72, 148, 212, 89, 137, 49, 6, 144, 47, 34, 122, 89, 47, 0, 14, 69, 4,
-			48, 197, 77, 48, 35, 49, 89, 121, 89, 0, 36, 14, 69, 4, 48, 197, 77, 48, 35, 49, 89, 121, 89, 0, 10, 0, 9, 198, 76, 128,
-			77, 64, 243, 192, 66, 16, 70, 48, 243, 135, 4, 115, 192, 55, 124, 68, 81, 13, 81, 136, 0, 0, 17, 70, 32, 80, 146, 36, 65, 83,
-			107, 121, 71, 34, 13, 72, 129, 88, 0, 14, 70, 12, 130, 83, 92, 144, 203, 76, 122, 88, 122, 49, 0, 0, 10, 67, 76, 147, 15, 89,
-			137, 55, 136, 0, 11, 68, 61, 85, 5, 16, 135, 47, 123, 72, 0, 16, 70, 52, 145, 5, 5, 53, 0, 65, 122, 72, 6, 129, 89, 47,
-			0, 12, 68, 4, 226, 77, 20, 35, 50, 122, 65, 138, 0, 0, 0, 9, 198, 76, 21, 129, 56, 224, 72, 66, 16, 70, 12, 16, 133, 72,
-			225, 84, 49, 35, 71, 114, 50, 6, 138, 0, 6, 194, 84, 224, 17, 42, 0, 20, 67, 92, 19, 12, 58, 6, 130, 55, 89, 47, 34, 4,
-			129, 47, 0, 81, 115, 116, 32, 9, 67, 64, 243, 12, 48, 136, 55, 0, 18, 71, 64, 145, 67, 20, 209, 65, 48, 48, 6, 129, 89, 65,
-			4, 129, 55, 0, 20, 71, 4, 197, 77, 36, 226, 85, 52, 35, 55, 57, 117, 65, 6, 122, 50, 141, 65, 0, 0, 10, 67, 80, 241, 15,
-			47, 13, 72, 134, 0, 11, 68, 76, 21, 68, 36, 89, 135, 72, 37, 0, 0, 15, 69, 64, 243, 9, 76, 128, 48, 136, 55, 122, 91, 0,
-			41, 9, 13, 69, 5, 33, 217, 48, 192, 127, 81, 38, 137, 55, 0, 13, 69, 73, 81, 199, 20, 64, 34, 125, 81, 123, 72, 0, 9, 197,
-			72, 80, 193, 48, 192, 66, 36, 13, 69, 72, 80, 193, 48, 192, 34, 129, 49, 130, 55, 0, 13, 69, 48, 144, 200, 20, 224, 55, 137, 49,
-			13, 50, 0, 14, 69, 9, 83, 137, 60, 224, 71, 125, 50, 113, 13, 50, 0, 0, 14, 70, 64, 149, 5, 61, 84, 192, 48, 122, 47, 141,
-			89, 0, 17, 70, 5, 50, 65, 80, 144, 192, 138, 91, 122, 6, 35, 47, 122, 49, 0, 0, 18, 71, 80, 81, 4, 100, 33, 65, 72, 47,
-			6, 121, 72, 122, 71, 4, 140, 0, 18, 71, 16, 19, 132, 20, 194, 79, 56, 72, 35, 50, 72, 113, 55, 144, 50, 0, 0, 12, 68, 12,
-			195, 212, 32, 49, 55, 136, 86, 0, 36, 12, 68, 8, 20, 201, 76, 71, 138, 89, 122, 89, 0, 0, 14, 69, 105, 84, 137, 12, 128, 88,
-			57, 117, 34, 122, 49, 0, 11, 67, 85, 64, 78, 134, 47, 6, 35, 50, 0, 13, 69, 72, 81, 201, 60, 224, 34, 129, 75, 13, 50, 0,
-			15, 69, 28, 147, 5, 4, 64, 81, 6, 122, 55, 122, 35, 72, 0, 0, 15, 70, 52, 147, 133, 73, 96, 64, 65, 113, 50, 128, 84, 13,
-			0, 0, 16, 71, 52, 83, 2, 61, 84, 142, 20, 65, 121, 55, 71, 114, 50, 0, 11, 67, 61, 1, 68, 124, 48, 6, 121, 72, 0, 18,
-			71, 4, 49, 84, 100, 193, 78, 20, 119, 89, 121, 47, 13, 55, 129, 50, 0, 0, 6, 195, 97, 134, 0, 17, 0, 17, 70, 21, 53, 9,
-			52, 21, 5, 121, 89, 47, 113, 65, 138, 47, 0, 36, 14, 69, 12, 195, 211, 21, 64, 49, 55, 124, 88, 113, 47, 0, 0, 14, 70, 48,
-			82, 83, 85, 33, 64, 55, 129, 90, 114, 0, 103, 13, 70, 48, 82, 83, 85, 33, 64, 55, 121, 90, 114, 0, 11, 4, 95, 35, 51, 50,
-			89, 48, 138, 89, 0, 0, 11, 67, 85, 64, 72, 57, 134, 108, 131, 0, 103, 10, 67, 85, 64, 72, 57, 134, 108, 126, 0, 0, 13, 68,
-			4, 211, 206, 28, 119, 65, 125, 68, 0, 74, 12, 10, 67, 44, 147, 15, 49, 129, 55, 136, 0, 12, 68, 4, 114, 83, 80, 138, 75, 122,
-			89, 47, 0, 0, 14, 69, 65, 33, 83, 21, 64, 48, 34, 129, 89, 121, 47, 0, 13, 69, 33, 83, 135, 21, 32, 107, 125, 68, 81, 114,
-			0, 9, 198, 21, 53, 18, 4, 225, 197, 66, 13, 69, 13, 85, 15, 85, 64, 49, 125, 47, 135, 47, 0, 13, 69, 12, 243, 135, 21, 32,
-			49, 124, 68, 81, 114, 0, 12, 69, 8, 243, 199, 21, 32, 71, 117, 81, 114, 0, 0, 15, 70, 76, 129, 82, 36, 97, 128, 91, 6, 121,
-			34, 113, 83, 0, 14, 70, 76, 49, 80, 81, 33, 64, 89, 121, 48, 47, 114, 0, 15, 70, 52, 16, 200, 21, 65, 64, 65, 119, 91, 121,
-			47, 37, 0, 14, 70, 5, 36, 197, 56, 19, 0, 127, 89, 13, 50, 118, 0, 0, 0, 12, 68, 72, 84, 201, 56, 34, 121, 88, 122, 50,
-			0, 0, 13, 69, 24, 19, 73, 56, 80, 83, 35, 65, 122, 50, 0, 9, 198, 4, 229, 9, 8, 241, 25, 65, 18, 70, 4, 36, 197, 57,
-			66, 65, 35, 71, 89, 6, 121, 50, 108, 129, 13, 0, 0, 17, 70, 36, 228, 85, 37, 38, 64, 122, 50, 49, 58, 13, 34, 37, 0, 103,
-			19, 70, 36, 225, 9, 72, 80, 212, 122, 50, 72, 114, 34, 6, 121, 49, 47, 0, 103, 9, 198, 36, 225, 9, 72, 80, 212, 67, 9, 198,
-			24, 20, 133, 92, 83, 12, 66, 9, 198, 12, 243, 148, 72, 16, 212, 36, 10, 198, 12, 243, 148, 72, 16, 212, 65, 10, 9, 67, 9, 34,
-			69, 71, 34, 129, 0, 0, 15, 67, 92, 147, 12, 58, 122, 55, 47, 116, 0, 81, 116, 111, 32, 9, 195, 92, 147, 12, 76, 9, 32, 12,
-			10, 199, 88, 19, 131, 61, 85, 133, 72, 66, 17, 70, 72, 129, 84, 61, 34, 67, 34, 121, 47, 13, 34, 122, 49, 0, 10, 19, 71, 36,
-			224, 78, 36, 208, 84, 20, 122, 50, 6, 35, 50, 122, 65, 13, 47, 0, 20, 71, 36, 115, 143, 72, 19, 85, 76, 122, 81, 50, 133, 34,
-			6, 138, 65, 13, 89, 0, 0, 22, 72, 64, 19, 5, 77, 66, 78, 36, 16, 48, 35, 55, 13, 89, 47, 6, 122, 50, 129, 13, 0, 21,
-			72, 12, 147, 131, 36, 227, 129, 80, 144, 89, 122, 50, 89, 122, 50, 6, 35, 47, 37, 0, 17, 70, 16, 148, 213, 76, 81, 0, 72, 122,
-			89, 6, 57, 134, 88, 72, 0, 6, 195, 4, 65, 147, 17, 0, 15, 69, 100, 19, 65, 32, 16, 57, 126, 65, 13, 107, 126, 0, 103, 14,
-			69, 100, 19, 65, 32, 16, 57, 35, 65, 13, 107, 126, 0, 23, 73, 72, 85, 1, 48, 144, 84, 61, 38, 64, 34, 113, 47, 35, 55, 129,
-			13, 47, 13, 34, 122, 0, 23, 73, 72, 84, 208, 37, 32, 84, 61, 38, 64, 34, 121, 89, 48, 34, 13, 47, 149, 34, 37, 0, 103, 23,
-			73, 72, 84, 208, 37, 32, 84, 61, 38, 64, 34, 113, 89, 48, 122, 34, 13, 47, 13, 34, 122, 0, 13, 69, 64, 84, 149, 76, 80, 48,
-			13, 34, 134, 88, 0, 15, 69, 16, 148, 213, 76, 80, 72, 122, 89, 6, 57, 134, 89, 0, 0, 9, 198, 61, 85, 12, 60, 242, 192, 65,
-			5, 194, 97, 144, 17, 0, 18, 71, 4, 227, 206, 100, 211, 213, 76, 119, 50, 124, 50, 13, 65, 13, 89, 0, 6, 195, 5, 67, 64, 17,
-			0, 14, 68, 16, 242, 78, 28, 4, 72, 134, 122, 68, 0, 12, 9, 20, 72, 72, 80, 207, 53, 1, 78, 76, 80, 34, 121, 49, 13, 65,
-			48, 121, 50, 89, 0, 20, 72, 16, 81, 137, 56, 149, 9, 88, 80, 72, 113, 83, 122, 50, 113, 47, 122, 84, 0, 10, 68, 8, 242, 78,
-			28, 71, 139, 68, 0, 0, 15, 69, 52, 145, 4, 5, 144, 65, 4, 122, 72, 72, 6, 138, 0, 13, 69, 24, 17, 67, 21, 48, 83, 129,
-			89, 129, 88, 0, 0, 10, 67, 28, 19, 1, 81, 126, 55, 13, 0, 0, 0, 12, 68, 12, 197, 217, 16, 49, 55, 134, 122, 72, 0, 18,
-			72, 72, 83, 132, 21, 165, 143, 85, 48, 34, 124, 50, 72, 113, 84, 134, 0, 0, 16, 70, 88, 243, 1, 80, 147, 5, 84, 124, 55, 119,
-			47, 118, 0, 103, 9, 198, 44, 83, 148, 84, 50, 217, 66, 14, 69, 72, 83, 69, 17, 144, 34, 121, 65, 13, 72, 37, 0, 17, 70, 64,
-			20, 129, 8, 243, 1, 48, 13, 34, 35, 71, 13, 55, 13, 0, 0, 11, 67, 60, 18, 21, 136, 6, 126, 107, 134, 0, 15, 70, 48, 147,
-			131, 60, 195, 128, 55, 122, 50, 49, 13, 50, 0, 16, 70, 36, 229, 5, 72, 225, 84, 122, 50, 47, 114, 50, 121, 47, 0, 0, 18, 67,
-			92, 149, 8, 58, 2, 122, 86, 86, 115, 0, 34, 81, 116, 104, 101, 32, 10, 67, 92, 149, 8, 58, 122, 86, 0, 72, 8, 67, 5, 52,
-			192, 35, 89, 0, 0, 17, 70, 36, 229, 5, 73, 97, 78, 122, 50, 47, 114, 84, 6, 129, 50, 0, 15, 70, 12, 243, 77, 20, 229, 0,
-			49, 124, 65, 121, 50, 47, 0, 0, 15, 70, 12, 19, 12, 36, 244, 5, 49, 119, 55, 144, 48, 37, 0, 13, 69, 16, 19, 137, 76, 128,
-			72, 138, 50, 122, 91, 0, 13, 69, 72, 17, 199, 20, 64, 34, 35, 81, 123, 72, 0, 13, 69, 40, 17, 199, 20, 64, 75, 35, 81, 123,
-			72, 0, 13, 69, 16, 241, 199, 20, 64, 72, 124, 81, 123, 72, 0, 0, 12, 70, 40, 16, 209, 84, 84, 192, 90, 35, 49, 0, 14, 70,
-			12, 128, 83, 76, 148, 192, 76, 35, 89, 37, 0, 103, 13, 70, 12, 128, 83, 76, 148, 192, 91, 35, 89, 37, 0, 6, 195, 57, 148, 197,
-			17, 0, 17, 71, 8, 81, 84, 32, 245, 133, 56, 71, 138, 108, 136, 84, 13, 50, 0, 0, 10, 68, 61, 85, 5, 72, 135, 47, 114, 0,
-			15, 70, 12, 243, 77, 20, 225, 0, 49, 13, 65, 121, 50, 72, 0, 12, 68, 5, 4, 143, 56, 138, 48, 34, 13, 50, 0, 0, 14, 69,
-			52, 84, 131, 20, 64, 65, 128, 89, 6, 121, 72, 0, 16, 69, 8, 83, 135, 4, 192, 71, 4, 121, 50, 81, 6, 130, 55, 0, 13, 69,
-			92, 83, 23, 100, 224, 58, 121, 55, 122, 50, 0, 12, 69, 92, 147, 135, 20, 64, 58, 122, 68, 72, 0, 12, 69, 64, 147, 135, 20, 64,
-			48, 122, 68, 72, 0, 14, 69, 24, 244, 141, 36, 64, 83, 132, 65, 6, 122, 72, 0, 13, 69, 8, 19, 135, 20, 64, 71, 35, 68, 81,
-			72, 0, 0, 9, 67, 76, 149, 5, 89, 137, 47, 0, 9, 198, 60, 211, 137, 9, 84, 192, 65, 16, 70, 52, 147, 137, 9, 84, 192, 65,
-			122, 50, 122, 71, 125, 89, 0, 0, 9, 67, 33, 85, 192, 107, 57, 134, 0, 17, 71, 64, 20, 211, 20, 225, 197, 72, 48, 35, 89, 113,
-			50, 75, 114, 0, 17, 71, 12, 128, 77, 64, 17, 206, 20, 91, 35, 65, 48, 6, 138, 50, 0, 0, 0, 13, 69, 44, 147, 20, 21, 32,
-			49, 122, 55, 47, 114, 0, 10, 67, 12, 19, 22, 49, 35, 84, 0, 103, 9, 67, 12, 19, 22, 49, 126, 84, 0, 0, 9, 198, 16, 84,
-			208, 37, 65, 64, 8, 11, 67, 92, 22, 25, 58, 35, 49, 89, 37, 0, 15, 70, 72, 84, 212, 37, 97, 64, 34, 121, 89, 47, 122, 84,
-			0, 10, 198, 52, 19, 132, 5, 65, 64, 66, 36, 16, 70, 16, 85, 5, 57, 65, 64, 72, 138, 47, 6, 124, 50, 47, 0, 0, 31, 7,
-			13, 21, 19, 20, 14, 39, 20, 65, 6, 125, 89, 50, 47, 107, 35, 84, 47, 116, 0, 35, 82, 104, 97, 118, 101, 32, 116, 111, 32, 26,
-			7, 13, 21, 19, 20, 14, 39, 20, 65, 125, 89, 50, 47, 107, 119, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 16, 7, 13, 21, 19,
-			20, 14, 39, 20, 65, 125, 89, 50, 47, 0, 32, 0, 32, 8, 23, 15, 21, 12, 4, 14, 39, 20, 4, 58, 117, 72, 50, 47, 35, 84,
-			47, 116, 0, 32, 12, 82, 104, 97, 118, 101, 32, 116, 111, 32, 27, 8, 23, 15, 21, 12, 4, 14, 39, 20, 58, 117, 72, 50, 47, 13,
-			84, 0, 73, 35, 12, 81, 104, 97, 118, 101, 32, 11, 68, 13, 84, 147, 20, 49, 148, 89, 0, 105, 10, 68, 13, 84, 147, 20, 49, 128,
-			89, 0, 0, 33, 9, 19, 8, 15, 21, 12, 4, 14, 39, 20, 6, 91, 117, 72, 50, 47, 35, 84, 47, 116, 0, 32, 12, 82, 104, 97,
-			118, 101, 32, 116, 111, 32, 28, 9, 19, 8, 15, 21, 12, 4, 14, 39, 20, 91, 117, 72, 50, 47, 107, 13, 84, 0, 35, 77, 81, 104,
-			97, 118, 101, 32, 21, 9, 19, 8, 15, 21, 12, 4, 14, 39, 20, 4, 91, 117, 72, 50, 47, 0, 32, 12, 9, 14, 69, 21, 129, 84,
-			21, 32, 121, 49, 89, 122, 47, 114, 0, 17, 70, 21, 132, 5, 16, 149, 5, 121, 49, 89, 48, 13, 72, 137, 47, 0, 16, 70, 16, 84,
-			207, 48, 21, 5, 72, 121, 89, 13, 55, 13, 47, 0, 17, 70, 12, 242, 78, 12, 145, 5, 49, 136, 122, 50, 89, 6, 137, 72, 0, 0,
-			14, 70, 56, 20, 146, 5, 65, 64, 50, 119, 34, 138, 47, 0, 0, 18, 71, 76, 16, 210, 36, 98, 67, 20, 89, 35, 49, 34, 113, 83,
-			137, 89, 0, 0, 11, 200, 4, 229, 9, 52, 21, 20, 21, 32, 65, 12, 68, 4, 226, 79, 56, 35, 50, 138, 13, 50, 0, 21, 72, 4,
-			225, 77, 60, 209, 84, 21, 32, 35, 50, 122, 65, 6, 124, 65, 113, 47, 114, 0, 0, 15, 69, 80, 35, 9, 76, 144, 47, 14, 71, 55,
-			129, 89, 37, 0, 12, 201, 77, 80, 143, 72, 66, 78, 5, 65, 64, 66, 13, 69, 76, 80, 78, 12, 80, 89, 138, 124, 50, 89, 0, 11,
-			67, 61, 129, 78, 124, 49, 89, 13, 50, 0, 0, 10, 67, 64, 243, 25, 48, 124, 55, 122, 0, 9, 67, 4, 70, 133, 35, 72, 88, 0,
-			16, 70, 4, 34, 76, 37, 70, 64, 119, 71, 122, 55, 13, 47, 37, 0, 10, 3, 9, 46, 5, 137, 129, 11, 0, 8, 0, 15, 70, 77,
-			2, 78, 4, 50, 0, 89, 48, 122, 50, 113, 76, 0, 18, 71, 65, 33, 68, 36, 48, 84, 20, 48, 34, 121, 72, 113, 49, 138, 47, 0,
-			19, 71, 64, 243, 25, 4, 210, 68, 20, 48, 124, 55, 122, 6, 138, 65, 137, 72, 0, 0, 12, 68, 28, 20, 197, 76, 81, 35, 89, 123,
-			88, 0, 0, 17, 70, 56, 80, 146, 5, 50, 193, 50, 13, 71, 34, 35, 89, 49, 13, 0, 14, 69, 88, 17, 201, 56, 16, 84, 13, 75,
-			137, 50, 13, 0, 9, 198, 52, 243, 69, 57, 69, 77, 66, 8, 197, 16, 243, 73, 56, 240, 65, 0, 24, 74, 36, 224, 80, 65, 35, 208,
-			72, 144, 84, 20, 4, 122, 50, 119, 48, 34, 136, 48, 34, 141, 47, 0, 0, 18, 71, 4, 197, 5, 72, 224, 84, 20, 130, 55, 47, 114,
-			50, 138, 47, 0, 36, 19, 71, 4, 197, 5, 72, 224, 84, 20, 130, 55, 47, 6, 128, 50, 13, 47, 0, 9, 0, 20, 72, 21, 146, 129,
-			24, 160, 76, 48, 16, 138, 57, 119, 83, 57, 35, 47, 55, 119, 0, 11, 68, 17, 85, 133, 80, 72, 134, 84, 138, 0, 0, 15, 69, 16,
-			148, 195, 85, 48, 72, 122, 89, 49, 13, 89, 0, 9, 0, 15, 70, 36, 229, 5, 73, 96, 76, 122, 50, 47, 114, 84, 118, 0, 6, 195,
-			36, 212, 9, 65, 10, 67, 32, 244, 9, 107, 136, 48, 129, 0, 0, 0, 10, 67, 48, 242, 83, 55, 136, 122, 89, 0, 11, 68, 8, 163,
-			210, 56, 71, 57, 132, 50, 0, 21, 72, 65, 149, 8, 4, 115, 210, 5, 48, 48, 137, 87, 6, 35, 81, 13, 34, 13, 89, 0, 0, 13,
-			69, 56, 20, 12, 21, 48, 50, 138, 48, 118, 88, 0, 14, 69, 52, 17, 18, 5, 48, 65, 13, 72, 34, 120, 89, 0, 13, 69, 88, 84,
-			147, 85, 48, 84, 128, 89, 113, 88, 0, 14, 69, 61, 97, 82, 49, 144, 136, 84, 114, 55, 122, 0, 9, 0, 0, 8, 67, 100, 80, 64,
-			57, 138, 0, 0, 21, 72, 48, 16, 143, 72, 21, 15, 73, 144, 55, 35, 71, 34, 13, 47, 130, 34, 37, 0, 103, 12, 68, 20, 210, 76,
-			100, 121, 65, 113, 55, 37, 0, 10, 198, 80, 244, 141, 20, 229, 0, 66, 36, 9, 198, 80, 244, 141, 20, 229, 0, 65, 21, 72, 48, 16,
-			143, 72, 21, 15, 73, 144, 55, 119, 71, 6, 124, 34, 13, 47, 34, 122, 0, 0, 15, 70, 48, 21, 210, 20, 224, 197, 55, 124, 34, 13,
-			50, 89, 0, 0, 15, 70, 52, 147, 9, 80, 144, 64, 65, 13, 55, 122, 91, 13, 0, 0, 17, 71, 33, 84, 146, 36, 48, 78, 20, 107,
-			128, 13, 49, 138, 50, 0, 103, 17, 71, 33, 84, 146, 36, 48, 78, 20, 107, 125, 34, 113, 49, 138, 50, 0, 17, 71, 12, 128, 77, 20,
-			193, 79, 56, 49, 13, 65, 129, 55, 141, 50, 0, 6, 195, 12, 144, 64, 17, 0, 13, 68, 92, 129, 82, 20, 4, 58, 140, 0, 8, 12,
-			10, 12, 68, 40, 84, 213, 76, 75, 129, 88, 13, 89, 0, 12, 68, 81, 81, 15, 72, 47, 57, 134, 72, 114, 0, 9, 198, 52, 19, 139,
-			36, 225, 0, 66, 12, 68, 44, 147, 211, 44, 49, 129, 124, 89, 49, 0, 12, 68, 40, 84, 213, 76, 75, 129, 88, 13, 89, 0, 10, 68,
-			24, 246, 69, 72, 83, 139, 138, 0, 8, 67, 12, 144, 79, 76, 135, 0, 0, 8, 197, 36, 225, 210, 36, 64, 65, 15, 69, 72, 81, 149,
-			56, 64, 34, 129, 83, 125, 50, 72, 0, 37, 14, 6, 195, 169, 12, 9, 20, 5, 122, 55, 6, 129, 47, 0, 0, 15, 70, 12, 240, 200,
-			48, 80, 64, 49, 124, 49, 55, 129, 13, 0, 0, 18, 71, 48, 193, 87, 20, 195, 25, 56, 105, 13, 58, 6, 121, 55, 122, 50, 0, 6,
-			195, 76, 17, 64, 17, 0, 0, 12, 69, 44, 244, 200, 21, 32, 49, 136, 91, 114, 0, 12, 69, 12, 243, 208, 21, 32, 49, 134, 48, 114,
-			0, 0, 9, 198, 8, 82, 74, 36, 225, 192, 66, 9, 198, 28, 243, 196, 9, 145, 64, 66, 14, 70, 21, 97, 78, 36, 225, 192, 129, 84,
-			50, 122, 68, 0, 16, 70, 4, 48, 68, 20, 209, 64, 119, 49, 35, 72, 13, 65, 37, 0, 15, 70, 4, 36, 197, 56, 49, 64, 35, 71,
-			89, 13, 50, 89, 0, 0, 18, 71, 9, 33, 65, 44, 96, 83, 80, 71, 34, 121, 49, 83, 13, 89, 47, 0, 0, 21, 72, 77, 80, 147,
-			21, 21, 69, 57, 64, 89, 125, 71, 89, 113, 49, 58, 13, 50, 47, 0, 11, 68, 56, 245, 193, 100, 50, 136, 58, 138, 0, 10, 67, 52,
-			83, 79, 65, 121, 65, 136, 0, 0, 13, 67, 4, 209, 78, 4, 138, 65, 6, 121, 50, 0, 103, 9, 197, 36, 225, 15, 61, 32, 65, 9,
-			13, 67, 4, 209, 78, 4, 126, 65, 6, 121, 50, 0, 10, 13, 69, 4, 114, 1, 77, 64, 119, 81, 120, 89, 47, 0, 0, 18, 70, 28,
-			85, 20, 36, 225, 192, 4, 81, 121, 47, 122, 68, 0, 12, 35, 9, 14, 70, 77, 81, 134, 36, 49, 64, 89, 13, 83, 137, 89, 0, 14,
-			70, 72, 80, 68, 36, 225, 192, 34, 129, 72, 122, 68, 0, 14, 70, 64, 19, 12, 36, 225, 192, 48, 35, 55, 122, 68, 0, 15, 70, 16,
-			84, 129, 56, 113, 64, 72, 113, 34, 138, 50, 75, 0, 0, 9, 67, 92, 146, 64, 58, 129, 12, 0, 15, 70, 4, 195, 5, 72, 114, 67,
-			119, 55, 128, 75, 122, 49, 0, 0, 11, 68, 84, 224, 204, 20, 125, 68, 49, 118, 0, 15, 7, 15, 39, 3, 12, 15, 3, 11, 13, 49,
-			55, 124, 49, 0, 11, 68, 56, 244, 201, 72, 50, 136, 89, 128, 0, 13, 68, 48, 241, 207, 56, 55, 124, 81, 6, 124, 50, 0, 0, 13,
-			69, 16, 245, 1, 28, 80, 72, 136, 47, 113, 75, 0, 6, 195, 85, 52, 210, 17, 0, 16, 70, 76, 80, 210, 20, 54, 64, 89, 129, 49,
-			34, 13, 89, 37, 0, 16, 70, 21, 53, 15, 65, 1, 76, 121, 89, 47, 6, 124, 48, 118, 0, 9, 198, 5, 32, 200, 92, 22, 64, 65,
-			0, 9, 67, 92, 131, 204, 107, 136, 55, 0, 17, 71, 32, 22, 129, 72, 67, 213, 76, 107, 35, 88, 114, 72, 13, 89, 0, 18, 71, 20,
-			69, 193, 72, 66, 65, 56, 121, 72, 58, 6, 132, 72, 141, 50, 0, 0, 19, 67, 16, 241, 83, 72, 125, 88, 50, 124, 47, 0, 32, 78,
-			81, 110, 111, 116, 32, 10, 67, 16, 241, 83, 72, 125, 88, 0, 32, 13, 68, 20, 194, 90, 4, 122, 55, 6, 137, 88, 13, 0, 10, 68,
-			52, 22, 65, 56, 65, 144, 50, 0, 15, 70, 12, 16, 129, 72, 85, 0, 49, 35, 71, 13, 34, 138, 0, 11, 68, 8, 20, 212, 20, 71,
-			138, 89, 47, 0, 0, 13, 69, 48, 80, 78, 56, 80, 55, 129, 6, 35, 50, 0, 13, 69, 24, 18, 78, 56, 80, 83, 35, 50, 38, 13,
-			0, 14, 69, 76, 245, 197, 80, 240, 89, 13, 58, 121, 47, 136, 0, 15, 69, 52, 242, 129, 88, 80, 65, 136, 107, 6, 126, 84, 37, 0,
-			14, 69, 52, 19, 137, 48, 16, 65, 119, 50, 122, 55, 13, 0, 10, 67, 44, 145, 86, 49, 129, 121, 83, 0, 14, 69, 12, 19, 129, 16,
-			16, 49, 35, 50, 13, 72, 13, 0, 16, 70, 29, 32, 70, 24, 149, 9, 81, 34, 119, 83, 129, 47, 37, 0, 9, 67, 16, 241, 82, 72,
-			134, 114, 0, 0, 9, 67, 20, 211, 65, 121, 65, 13, 0, 9, 67, 92, 131, 193, 107, 58, 136, 0, 0, 13, 67, 92, 131, 192, 4, 107,
-			134, 0, 32, 8, 12, 10, 16, 70, 52, 19, 4, 37, 97, 83, 65, 130, 55, 72, 6, 129, 84, 0, 19, 71, 36, 225, 15, 12, 130, 78,
-			4, 122, 50, 72, 136, 76, 6, 137, 50, 13, 0, 19, 71, 12, 243, 150, 60, 197, 84, 20, 49, 124, 50, 84, 13, 55, 6, 134, 47, 0,
-			9, 67, 4, 67, 192, 119, 72, 134, 0, 0, 16, 70, 52, 18, 13, 61, 81, 0, 65, 35, 101, 65, 6, 134, 72, 0, 0, 16, 70, 77,
-			80, 144, 60, 83, 129, 89, 134, 48, 6, 129, 50, 13, 0, 12, 69, 5, 32, 200, 21, 48, 127, 76, 123, 88, 0, 0, 16, 70, 4, 36,
-			129, 32, 19, 64, 138, 71, 34, 13, 107, 35, 65, 0, 25, 74, 36, 225, 5, 80, 84, 141, 36, 224, 84, 20, 122, 50, 72, 113, 47, 6,
-			128, 65, 113, 50, 13, 47, 0, 12, 201, 4, 208, 137, 16, 86, 20, 72, 245, 83, 67, 0, 17, 70, 65, 148, 133, 56, 81, 83, 48, 122,
-			34, 13, 50, 6, 129, 88, 0, 0, 13, 68, 4, 35, 213, 80, 119, 71, 135, 47, 0, 74, 12, 9, 67, 76, 22, 83, 89, 121, 88, 0,
-			20, 72, 5, 32, 200, 36, 209, 68, 21, 48, 127, 49, 122, 65, 6, 129, 72, 129, 88, 0, 0, 13, 69, 5, 66, 5, 57, 48, 35, 87,
-			113, 50, 88, 0, 15, 69, 76, 147, 135, 49, 144, 89, 122, 68, 81, 55, 122, 0, 32, 0, 9, 67, 20, 211, 89, 121, 65, 37, 0, 16,
-			70, 48, 84, 207, 80, 131, 192, 55, 13, 89, 6, 134, 47, 134, 0, 0, 17, 71, 92, 21, 5, 73, 50, 5, 16, 58, 130, 47, 114, 91,
-			121, 72, 0, 0, 16, 70, 80, 83, 5, 64, 131, 206, 47, 121, 55, 113, 83, 136, 50, 0, 13, 68, 72, 80, 83, 44, 34, 129, 6, 120,
-			89, 49, 0, 12, 68, 48, 241, 201, 56, 55, 124, 81, 122, 50, 0, 12, 68, 8, 244, 213, 56, 71, 136, 89, 13, 50, 0, 0, 13, 69,
-			80, 20, 137, 24, 96, 47, 35, 34, 122, 83, 0, 0, 17, 70, 64, 19, 129, 12, 80, 64, 48, 35, 50, 119, 89, 6, 129, 13, 0, 0,
-			0, 20, 68, 80, 129, 82, 20, 86, 2, 140, 4, 58, 128, 0, 11, 81, 119, 101, 114, 101, 32, 16, 68, 80, 129, 82, 20, 86, 140, 71,
-			6, 129, 0, 81, 98, 101, 32, 18, 68, 80, 129, 82, 20, 86, 2, 140, 4, 127, 0, 11, 81, 97, 114, 101, 32, 12, 68, 80, 129, 82,
-			20, 86, 140, 0, 72, 12, 9, 12, 68, 72, 81, 201, 76, 34, 129, 75, 113, 89, 0, 11, 68, 80, 129, 84, 4, 87, 129, 47, 13, 0,
-			12, 68, 48, 20, 211, 60, 55, 35, 89, 136, 0, 103, 12, 68, 48, 20, 211, 60, 55, 35, 89, 6, 134, 0, 0, 0, 0, 10, 67, 20,
-			213, 64, 129, 65, 57, 134, 0, 0, 18, 72, 72, 144, 207, 12, 129, 84, 20, 64, 34, 122, 49, 13, 91, 138, 72, 0, 11, 68, 32, 245,
-			83, 20, 107, 135, 88, 0, 36, 15, 70, 12, 240, 85, 80, 131, 210, 49, 136, 6, 130, 87, 114, 0, 0, 13, 69, 77, 84, 133, 77, 64,
-			91, 143, 13, 89, 47, 0, 12, 69, 76, 16, 200, 21, 64, 89, 35, 91, 138, 0, 12, 69, 72, 20, 9, 21, 32, 34, 138, 48, 142, 0,
-			15, 69, 36, 228, 197, 73, 64, 122, 50, 89, 6, 128, 47, 0, 36, 14, 69, 36, 228, 197, 73, 64, 122, 50, 89, 128, 47, 0, 10, 10,
-			67, 16, 242, 78, 72, 134, 122, 50, 0, 12, 69, 12, 245, 71, 5, 32, 49, 134, 81, 114, 0, 12, 69, 12, 128, 76, 21, 64, 91, 35,
-			55, 138, 0, 12, 69, 12, 16, 200, 21, 64, 49, 35, 91, 138, 0, 0, 15, 70, 56, 21, 1, 48, 145, 64, 50, 35, 47, 119, 55, 37,
-			0, 15, 70, 92, 20, 212, 4, 113, 64, 58, 138, 89, 47, 113, 75, 0, 15, 70, 88, 84, 212, 36, 113, 64, 84, 121, 89, 47, 113, 75,
-			0, 14, 70, 80, 80, 82, 36, 225, 192, 47, 140, 44, 122, 68, 0, 15, 70, 76, 48, 82, 36, 225, 192, 89, 49, 140, 34, 122, 68, 0,
-			15, 70, 64, 244, 212, 4, 113, 64, 48, 136, 89, 47, 113, 75, 0, 15, 70, 52, 20, 211, 4, 113, 64, 65, 119, 89, 126, 90, 0, 103,
-			14, 70, 52, 20, 211, 4, 113, 64, 65, 35, 89, 126, 90, 0, 0, 18, 70, 8, 20, 130, 4, 67, 211, 71, 127, 6, 71, 138, 72, 136,
-			89, 0, 103, 17, 70, 8, 20, 130, 4, 67, 211, 71, 127, 6, 71, 138, 72, 124, 89, 0, 0, 14, 68, 80, 129, 83, 20, 86, 129, 88,
-			0, 72, 34, 12, 9, 0, 22, 73, 60, 211, 137, 76, 50, 69, 56, 49, 64, 124, 65, 50, 6, 122, 89, 122, 13, 50, 89, 0, 14, 70,
-			52, 84, 137, 56, 117, 69, 65, 13, 34, 35, 68, 0, 12, 69, 12, 244, 9, 21, 32, 49, 124, 48, 142, 0, 16, 70, 8, 18, 197, 48,
-			149, 5, 71, 138, 49, 13, 55, 137, 47, 0, 15, 70, 4, 224, 76, 60, 117, 69, 35, 50, 13, 55, 124, 81, 0, 0, 16, 70, 72, 243,
-			65, 56, 49, 64, 34, 136, 65, 6, 35, 50, 89, 0, 15, 70, 64, 20, 212, 36, 225, 192, 48, 138, 89, 47, 122, 68, 0, 15, 70, 61,
-			97, 82, 4, 113, 64, 136, 84, 13, 44, 138, 75, 0, 9, 198, 61, 85, 3, 60, 209, 64, 65, 14, 70, 56, 245, 8, 36, 225, 192, 50,
-			125, 87, 122, 68, 0, 14, 70, 56, 80, 203, 80, 145, 64, 50, 121, 49, 47, 137, 0, 14, 70, 12, 243, 12, 20, 113, 64, 49, 124, 55,
-			113, 75, 0, 15, 70, 5, 97, 82, 4, 113, 64, 35, 84, 14, 34, 113, 75, 0, 0, 0, 28, 68, 52, 145, 200, 80, 4, 65, 137, 47,
-			107, 6, 35, 84, 47, 116, 0, 32, 14, 82, 104, 97, 118, 101, 32, 116, 111, 32, 21, 68, 52, 145, 200, 80, 65, 137, 47, 107, 119, 84,
-			0, 35, 77, 81, 104, 97, 118, 101, 32, 14, 68, 52, 145, 200, 80, 4, 65, 137, 47, 0, 32, 12, 9, 18, 72, 16, 83, 143, 84, 83,
-			69, 57, 64, 72, 138, 50, 6, 134, 65, 151, 0, 9, 67, 5, 85, 15, 130, 47, 136, 0, 0, 8, 197, 84, 229, 201, 76, 80, 66, 13,
-			69, 36, 229, 1, 44, 80, 122, 50, 108, 138, 49, 0, 15, 69, 21, 84, 143, 64, 16, 57, 143, 34, 6, 136, 48, 13, 0, 0, 14, 70,
-			12, 243, 15, 56, 83, 0, 49, 148, 50, 118, 0, 105, 13, 70, 12, 243, 15, 56, 83, 0, 49, 128, 50, 118, 0, 0, 9, 67, 4, 214,
-			64, 138, 65, 37, 0, 18, 71, 9, 34, 71, 4, 66, 69, 72, 71, 34, 122, 81, 119, 72, 6, 142, 0, 0, 0, 12, 69, 76, 129, 73,
-			48, 16, 91, 129, 55, 13, 0, 14, 69, 48, 245, 73, 76, 80, 55, 134, 58, 6, 129, 88, 0, 14, 69, 64, 19, 129, 52, 16, 48, 35,
-			50, 13, 65, 126, 0, 12, 69, 80, 245, 80, 20, 80, 47, 134, 48, 138, 0, 12, 69, 53, 148, 148, 48, 80, 65, 128, 47, 118, 0, 0,
-			14, 70, 48, 147, 132, 76, 22, 64, 55, 122, 50, 88, 37, 0, 15, 70, 8, 19, 15, 56, 86, 64, 71, 13, 55, 136, 50, 37, 0, 0,
-			16, 70, 88, 244, 148, 36, 49, 83, 84, 132, 47, 122, 89, 129, 88, 0, 16, 70, 72, 21, 133, 56, 245, 83, 34, 35, 84, 13, 50, 13,
-			89, 0, 15, 70, 21, 97, 78, 36, 225, 211, 129, 84, 50, 122, 68, 88, 0, 11, 199, 5, 69, 18, 36, 37, 84, 20, 66, 36, 18, 71,
-			5, 69, 18, 36, 37, 84, 20, 35, 47, 34, 122, 71, 57, 134, 47, 0, 0, 19, 72, 4, 197, 18, 36, 224, 200, 4, 208, 130, 55, 47,
-			34, 122, 68, 13, 65, 0, 19, 72, 36, 227, 143, 88, 21, 9, 88, 80, 122, 50, 13, 84, 138, 47, 122, 84, 0, 11, 200, 36, 225, 9,
-			12, 21, 9, 88, 80, 66, 19, 72, 16, 80, 207, 72, 21, 9, 88, 80, 72, 121, 49, 34, 13, 47, 122, 84, 0, 0, 6, 18, 66, 108,
-			0, 114, 0, 7, 6, 18, 67, 105, 0, 121, 0, 7, 6, 18, 68, 97, 0, 105, 0, 111, 0, 117, 0, 7, 6, 18, 70, 99, 0, 103,
-			0, 107, 0, 7, 6, 18, 71, 115, 0, 122, 0, 7, 6, 18, 75, 103, 114, 97, 112, 0, 115, 99, 111, 112, 0, 108, 111, 103, 0, 109,
-			101, 116, 0, 7, 6, 20, 0, 0, 0, 251, 0, 0, 102, 0, 102, 0, 1, 251, 0, 0, 102, 0, 105, 0, 2, 251, 0, 0, 102, 0,
-			108, 0, 0, 0, 0, 0, 6, 97, 98, 0, 4, 2, 111, 108, 105, 116, 3, 4, 35, 71, 0, 8, 2, 111, 114, 105, 0, 115, 101, 110,
-			2, 116, 3, 4, 35, 71, 89, 13, 50, 0, 101, 114, 8, 2, 21, 3, 4, 35, 71, 114, 0, 2, 117, 108, 97, 114, 3, 6, 35, 71,
-			0, 4, 8, 110, 101, 2, 108, 3, 6, 138, 71, 0, 8, 110, 117, 2, 108, 101, 0, 8, 115, 105, 100, 2, 108, 101, 0, 108, 105, 110,
-			103, 3, 6, 138, 71, 55, 122, 68, 0, 108, 101, 1, 116, 99, 21, 2, 32, 3, 8, 13, 71, 118, 0, 97, 100, 1, 21, 2, 32, 3,
-			8, 119, 71, 35, 72, 0, 1, 17, 67, 2, 105, 108, 105, 116, 12, 3, 13, 71, 0, 105, 108, 105, 116, 121, 1, 10, 2, 14, 128, 139,
-			135, 3, 13, 71, 6, 122, 55, 113, 47, 2, 37, 0, 105, 108, 105, 116, 105, 101, 115, 1, 10, 2, 14, 128, 139, 137, 3, 13, 71, 6,
-			122, 55, 113, 47, 2, 37, 88, 0, 4, 108, 121, 1, 10, 2, 32, 14, 128, 171, 132, 3, 13, 71, 55, 2, 122, 0, 108, 121, 1, 99,
-			10, 2, 32, 14, 128, 168, 132, 0, 4, 108, 101, 1, 10, 2, 32, 14, 128, 139, 132, 3, 13, 71, 118, 0, 108, 101, 1, 99, 10, 2,
-			32, 0, 4, 1, 98, 2, 121, 108, 3, 35, 71, 0, 2, 97, 99, 17, 65, 0, 2, 97, 116, 116, 0, 2, 106, 101, 99, 116, 0, 2,
-			108, 97, 116, 105, 118, 0, 2, 110, 101, 103, 0, 2, 114, 111, 103, 0, 2, 114, 117, 99, 0, 2, 115, 99, 101, 0, 2, 115, 101, 105,
-			0, 2, 115, 111, 108, 117, 0, 2, 115, 116, 105, 0, 8, 2, 100, 0, 8, 2, 105, 0, 8, 2, 114, 97, 99, 0, 98, 8, 0, 98,
-			111, 8, 3, 35, 71, 13, 0, 101, 114, 1, 17, 67, 2, 21, 3, 35, 71, 114, 0, 4, 8, 2, 21, 3, 119, 71, 0, 8, 2, 100,
-			117, 99, 0, 8, 2, 105, 100, 101, 0, 8, 2, 114, 97, 0, 98, 8, 2, 114, 101, 118, 0, 111, 118, 101, 8, 2, 21, 14, 128, 132,
-			133, 3, 119, 71, 4, 125, 84, 0, 101, 114, 8, 2, 114, 97, 110, 3, 119, 71, 121, 0, 4, 1, 17, 67, 29, 2, 108, 101, 3, 138,
-			71, 0, 1, 98, 2, 121, 0, 1, 108, 2, 111, 117, 114, 0, 1, 116, 115, 2, 105, 108, 0, 8, 2, 114, 97, 109, 0, 8, 108, 2,
-			105, 0, 108, 121, 3, 138, 71, 55, 122, 0, 101, 114, 8, 115, 2, 21, 3, 138, 71, 114, 0, 4, 101, 108, 8, 3, 138, 71, 118, 0,
-			108, 101, 0, 108, 101, 1, 10, 2, 32, 28, 17, 0, 7, 6, 97, 99, 0, 2, 99, 101, 110, 116, 117, 3, 2, 35, 49, 0, 2, 113,
-			117, 105, 101, 3, 4, 35, 0, 4, 2, 97, 32, 3, 6, 35, 49, 0, 2, 116, 111, 114, 121, 0, 2, 116, 117, 114, 101, 0, 2, 117,
-			108, 97, 114, 0, 104, 105, 97, 3, 6, 138, 91, 13, 0, 101, 97, 110, 2, 32, 3, 6, 138, 91, 13, 50, 0, 105, 111, 117, 115, 3,
-			6, 138, 91, 13, 89, 0, 1, 114, 99, 2, 121, 32, 3, 8, 13, 89, 0, 4, 1, 10, 2, 108, 101, 32, 3, 13, 49, 0, 104, 1,
-			114, 116, 2, 101, 0, 114, 101, 1, 115, 115, 97, 109, 3, 13, 49, 114, 0, 4, 1, 10, 2, 121, 32, 3, 13, 89, 0, 1, 102, 2,
-			105, 108, 105, 116, 0, 1, 108, 112, 2, 101, 98, 0, 8, 108, 112, 2, 101, 110, 116, 0, 104, 105, 1, 109, 2, 110, 17, 65, 13, 3,
-			13, 91, 129, 0, 4, 2, 99, 101, 110, 116, 3, 35, 49, 0, 2, 99, 105, 100, 0, 2, 111, 110, 0, 2, 114, 111, 0, 2, 117, 109,
-			0, 2, 117, 112, 0, 8, 2, 111, 0, 8, 2, 114, 105, 0, 8, 2, 116, 0, 99, 2, 111, 108, 0, 104, 2, 114, 111, 109, 0, 107,
-			8, 0, 97, 2, 100, 101, 109, 3, 35, 49, 13, 0, 114, 111, 1, 109, 2, 21, 3, 35, 49, 34, 13, 0, 110, 101, 3, 35, 49, 50,
-			122, 0, 99, 117, 2, 114, 97, 3, 35, 49, 57, 117, 0, 109, 101, 3, 35, 49, 65, 122, 0, 116, 117, 2, 17, 65, 3, 35, 49, 76,
-			134, 0, 4, 2, 101, 114, 98, 3, 35, 89, 0, 2, 105, 100, 32, 0, 4, 101, 8, 2, 116, 3, 35, 89, 122, 0, 101, 8, 109, 2,
-			100, 0, 104, 105, 110, 97, 1, 109, 2, 116, 3, 35, 91, 113, 50, 138, 0, 4, 1, 108, 112, 2, 97, 116, 3, 119, 49, 0, 8, 2,
-			21, 0, 99, 8, 2, 21, 0, 107, 8, 2, 110, 0, 97, 2, 100, 101, 109, 121, 3, 119, 49, 35, 0, 99, 117, 115, 2, 17, 65, 3,
-			119, 49, 57, 134, 88, 0, 113, 117, 8, 3, 119, 49, 58, 0, 99, 8, 2, 101, 3, 119, 49, 89, 0, 4, 99, 111, 117, 2, 116, 3,
-			119, 49, 134, 0, 111, 117, 2, 115, 116, 0, 104, 8, 3, 119, 76, 0, 4, 8, 2, 101, 3, 119, 89, 0, 8, 2, 101, 114, 98, 105,
-			0, 8, 2, 105, 0, 101, 8, 2, 116, 105, 3, 119, 89, 129, 0, 4, 1, 102, 114, 117, 2, 101, 32, 3, 122, 89, 0, 1, 108, 97,
-			2, 101, 32, 0, 1, 108, 111, 115, 2, 101, 32, 0, 1, 109, 105, 2, 101, 32, 0, 1, 110, 21, 2, 101, 32, 0, 1, 114, 114, 2,
-			101, 32, 0, 104, 1, 121, 2, 116, 3, 124, 0, 4, 1, 118, 2, 97, 3, 138, 49, 0, 2, 111, 114, 110, 0, 8, 98, 2, 111, 0,
-			104, 101, 1, 100, 2, 32, 0, 104, 101, 1, 104, 2, 32, 0, 104, 101, 1, 107, 2, 32, 0, 104, 101, 1, 114, 2, 32, 0, 104, 101,
-			1, 116, 114, 2, 32, 0, 104, 101, 1, 121, 2, 32, 0, 104, 101, 8, 2, 12, 0, 114, 101, 8, 3, 138, 49, 13, 0, 4, 104, 101,
-			115, 1, 100, 2, 32, 3, 138, 49, 89, 0, 104, 101, 115, 1, 104, 2, 32, 0, 104, 101, 115, 1, 114, 2, 32, 0, 104, 101, 115, 1,
-			116, 114, 2, 32, 0, 4, 1, 112, 115, 2, 101, 13, 3, 138, 89, 0, 8, 114, 2, 101, 0, 8, 114, 2, 105, 115, 0, 101, 2, 32,
-			0, 7, 6, 97, 100, 0, 1, 115, 117, 114, 99, 3, 6, 138, 72, 0, 1, 108, 97, 109, 2, 121, 3, 13, 72, 0, 105, 111, 8, 114,
-			2, 21, 14, 128, 132, 133, 3, 34, 4, 138, 72, 122, 2, 136, 0, 2, 106, 117, 116, 97, 110, 3, 35, 0, 4, 1, 108, 103, 2, 105,
-			3, 35, 72, 0, 1, 114, 2, 105, 99, 0, 1, 120, 101, 104, 2, 101, 0, 2, 97, 103, 0, 2, 97, 109, 0, 2, 101, 110, 0, 2,
-			101, 113, 0, 2, 106, 117, 110, 99, 116, 32, 0, 2, 109, 97, 110, 32, 0, 2, 109, 105, 110, 32, 0, 2, 109, 105, 114, 97, 0, 2,
-			111, 108, 0, 2, 111, 110, 0, 2, 117, 108, 97, 0, 2, 118, 101, 110, 116, 0, 2, 118, 101, 114, 0, 2, 118, 101, 114, 116, 32, 0,
-			2, 118, 111, 0, 8, 2, 105, 0, 8, 2, 114, 105, 21, 0, 8, 2, 117, 109, 0, 100, 2, 101, 114, 0, 100, 2, 105, 116, 105, 118,
-			0, 100, 8, 2, 108, 0, 101, 1, 108, 2, 115, 104, 3, 35, 72, 6, 121, 0, 111, 2, 108, 101, 115, 3, 35, 72, 13, 0, 118, 101,
-			114, 2, 115, 3, 35, 72, 84, 6, 128, 0, 101, 113, 117, 97, 3, 35, 72, 122, 49, 58, 13, 0, 106, 101, 99, 3, 35, 75, 121, 49,
-			0, 4, 2, 118, 101, 110, 116, 117, 3, 119, 72, 0, 2, 118, 101, 114, 115, 97, 0, 2, 118, 101, 114, 116, 0, 8, 2, 21, 0, 8,
-			114, 116, 2, 105, 116, 0, 100, 8, 2, 21, 0, 97, 1, 99, 2, 118, 101, 114, 3, 119, 72, 35, 0, 106, 8, 3, 119, 75, 0, 1,
-			117, 113, 3, 124, 72, 0, 4, 1, 98, 2, 111, 115, 32, 3, 138, 72, 0, 1, 99, 2, 101, 110, 99, 0, 1, 108, 2, 101, 110, 0,
-			1, 108, 2, 121, 0, 1, 110, 114, 111, 116, 0, 1, 114, 99, 0, 1, 115, 2, 105, 115, 0, 2, 105, 17, 65, 0, 2, 108, 101, 0,
-			8, 114, 2, 17, 65, 0, 105, 1, 114, 2, 111, 18, 75, 12, 3, 138, 72, 122, 0, 7, 6, 97, 102, 0, 1, 21, 2, 116, 101, 114,
-			3, 6, 120, 83, 0, 4, 2, 114, 105, 3, 35, 83, 0, 8, 2, 103, 0, 102, 2, 97, 98, 0, 102, 2, 101, 114, 0, 102, 2, 108,
-			117, 0, 114, 111, 8, 3, 35, 83, 34, 136, 0, 4, 2, 101, 97, 3, 119, 83, 0, 8, 2, 21, 0, 102, 8, 2, 21, 0, 111, 114,
-			101, 3, 119, 83, 133, 0, 102, 105, 97, 8, 3, 119, 83, 144, 0, 4, 2, 116, 12, 3, 120, 83, 0, 102, 1, 116, 115, 0, 102, 1,
-			119, 3, 124, 83, 0, 7, 6, 97, 103, 0, 8, 116, 110, 97, 3, 6, 35, 81, 0, 117, 97, 1, 21, 2, 32, 3, 6, 35, 81, 57,
-			134, 13, 0, 105, 111, 2, 32, 3, 6, 126, 75, 122, 136, 0, 2, 97, 32, 3, 6, 126, 81, 0, 105, 2, 32, 3, 6, 126, 81, 122,
-			0, 4, 1, 103, 110, 2, 101, 32, 3, 6, 138, 75, 0, 1, 114, 110, 101, 2, 101, 32, 0, 101, 1, 103, 2, 109, 101, 110, 116, 0,
-			104, 2, 32, 3, 13, 0, 1, 109, 2, 101, 110, 116, 97, 3, 13, 75, 0, 1, 10, 2, 111, 110, 32, 3, 13, 81, 0, 8, 114, 116,
-			3, 35, 75, 0, 4, 103, 8, 2, 114, 97, 118, 3, 35, 81, 0, 103, 8, 2, 114, 101, 103, 0, 4, 111, 110, 1, 114, 100, 3, 35,
-			81, 13, 50, 0, 111, 110, 1, 119, 2, 12, 0, 4, 101, 1, 21, 2, 32, 3, 113, 75, 0, 101, 1, 21, 2, 109, 101, 110, 116, 0,
-			101, 1, 112, 112, 2, 32, 0, 101, 114, 1, 21, 2, 32, 3, 113, 75, 114, 0, 2, 101, 110, 100, 3, 119, 75, 0, 4, 2, 114, 101,
-			101, 3, 119, 81, 0, 8, 2, 108, 21, 0, 8, 2, 111, 32, 0, 8, 2, 114, 111, 110, 0, 103, 2, 114, 101, 115, 0, 103, 2, 114,
-			105, 101, 118, 0, 103, 8, 2, 21, 0, 101, 110, 1, 104, 10, 2, 32, 3, 126, 81, 13, 50, 0, 4, 1, 116, 110, 111, 109, 2, 101,
-			32, 3, 126, 90, 0, 101, 1, 108, 102, 2, 32, 0, 4, 1, 110, 101, 101, 116, 2, 101, 3, 138, 75, 0, 1, 114, 101, 100, 2, 101,
-			32, 0, 1, 114, 116, 117, 111, 2, 101, 32, 0, 1, 116, 115, 2, 101, 0, 8, 2, 101, 0, 8, 2, 105, 115, 0, 101, 1, 99, 2,
-			32, 0, 101, 1, 99, 98, 0, 101, 1, 99, 100, 0, 101, 1, 112, 17, 67, 2, 32, 0, 101, 8, 2, 105, 0, 101, 8, 2, 108, 0,
-			105, 1, 116, 2, 111, 3, 138, 75, 57, 0, 4, 1, 108, 102, 2, 114, 97, 110, 3, 138, 81, 0, 1, 114, 102, 2, 114, 0, 1, 118,
-			2, 114, 97, 0, 2, 111, 32, 0, 117, 101, 0, 7, 6, 97, 105, 0, 4, 1, 21, 2, 17, 67, 97, 32, 3, 6, 138, 0, 1, 116,
-			110, 101, 2, 108, 0, 1, 116, 114, 117, 99, 2, 108, 0, 103, 2, 110, 0, 110, 1, 100, 2, 32, 3, 6, 138, 50, 0, 110, 101, 100,
-			1, 100, 2, 32, 3, 6, 138, 50, 72, 0, 115, 101, 2, 32, 3, 6, 138, 88, 0, 4, 99, 2, 32, 3, 6, 138, 122, 49, 0, 99,
-			2, 97, 108, 0, 114, 101, 3, 6, 140, 0, 4, 1, 108, 108, 105, 118, 3, 13, 0, 1, 116, 102, 0, 1, 116, 105, 114, 98, 0, 1,
-			116, 114, 101, 99, 0, 1, 116, 114, 117, 99, 0, 4, 115, 8, 2, 108, 105, 3, 35, 91, 0, 115, 8, 99, 2, 108, 0, 1, 115, 2,
-			100, 3, 121, 0, 4, 1, 103, 114, 97, 98, 3, 122, 0, 1, 108, 112, 97, 0, 1, 108, 114, 101, 98, 0, 1, 116, 110, 117, 111, 0,
-			1, 116, 112, 0, 4, 2, 32, 3, 137, 0, 2, 105, 0, 1, 110, 2, 118, 3, 137, 6, 129, 0, 4, 3, 138, 0, 8, 0, 115, 1,
-			108, 21, 2, 32, 0, 101, 3, 138, 13, 0, 4, 114, 3, 140, 0, 114, 8, 0, 114, 101, 2, 32, 0, 7, 6, 97, 108, 0, 1, 109,
-			2, 110, 111, 3, 2, 35, 55, 0, 2, 109, 105, 103, 3, 2, 124, 55, 0, 8, 2, 114, 3, 2, 130, 55, 0, 2, 105, 116, 121, 3,
-			6, 35, 55, 0, 100, 101, 2, 104, 121, 3, 6, 35, 55, 72, 122, 0, 103, 105, 97, 1, 21, 2, 32, 3, 6, 35, 55, 75, 13, 0,
-			4, 1, 103, 2, 105, 32, 3, 6, 126, 55, 0, 1, 122, 110, 111, 103, 0, 97, 110, 100, 1, 21, 2, 32, 3, 8, 13, 55, 119, 50,
-			72, 0, 4, 1, 10, 2, 105, 17, 66, 97, 116, 105, 3, 13, 55, 0, 1, 10, 2, 105, 17, 66, 101, 0, 1, 10, 2, 105, 115, 17,
-			67, 105, 99, 0, 1, 10, 2, 111, 117, 115, 32, 0, 1, 115, 2, 117, 116, 0, 1, 117, 113, 101, 0, 1, 118, 17, 65, 2, 101, 110,
-			0, 97, 121, 1, 109, 3, 13, 55, 6, 138, 0, 105, 1, 10, 2, 115, 17, 67, 32, 3, 13, 55, 122, 0, 111, 1, 10, 2, 32, 3,
-			13, 55, 136, 0, 101, 105, 1, 107, 2, 100, 3, 13, 55, 137, 0, 4, 5, 3, 1, 99, 2, 102, 3, 35, 0, 5, 3, 1, 104, 2,
-			102, 0, 5, 3, 1, 104, 2, 118, 0, 4, 1, 29, 2, 101, 100, 3, 35, 55, 0, 1, 112, 2, 101, 116, 0, 1, 115, 2, 117, 116,
-			97, 0, 1, 116, 101, 114, 2, 105, 97, 0, 1, 118, 2, 105, 97, 0, 2, 116, 111, 0, 2, 117, 109, 32, 0, 8, 2, 97, 115, 116,
-			0, 8, 2, 98, 0, 8, 2, 99, 0, 8, 2, 103, 0, 8, 2, 105, 0, 8, 2, 107, 0, 8, 2, 112, 0, 8, 2, 115, 0, 8,
-			2, 118, 0, 8, 2, 121, 0, 8, 99, 2, 101, 0, 108, 1, 102, 2, 97, 0, 108, 1, 102, 2, 105, 98, 0, 108, 1, 116, 2, 17,
-			65, 0, 108, 2, 101, 108, 0, 108, 2, 101, 114, 0, 108, 2, 111, 116, 114, 0, 108, 8, 2, 97, 0, 108, 8, 2, 101, 103, 0, 108,
-			8, 2, 105, 0, 108, 8, 2, 111, 0, 108, 8, 17, 67, 2, 111, 119, 0, 108, 111, 8, 2, 99, 97, 3, 35, 55, 13, 0, 97, 98,
-			97, 8, 3, 35, 55, 13, 71, 6, 35, 0, 122, 3, 35, 55, 47, 89, 0, 116, 105, 8, 3, 35, 55, 47, 122, 0, 112, 2, 104, 111,
-			3, 35, 55, 48, 0, 99, 111, 2, 104, 3, 35, 55, 49, 13, 0, 98, 101, 114, 8, 2, 116, 17, 65, 3, 35, 55, 71, 6, 128, 0,
-			4, 102, 97, 8, 3, 35, 55, 83, 13, 0, 112, 104, 97, 0, 101, 112, 104, 3, 35, 55, 121, 83, 0, 4, 108, 101, 121, 3, 35, 55,
-			122, 0, 108, 121, 1, 116, 0, 101, 120, 97, 110, 8, 3, 35, 55, 122, 81, 88, 6, 120, 50, 0, 108, 121, 8, 3, 35, 55, 137, 0,
-			4, 108, 121, 1, 21, 2, 32, 14, 128, 128, 130, 3, 55, 2, 37, 0, 108, 121, 1, 99, 21, 21, 2, 32, 14, 128, 128, 132, 0, 108,
-			121, 1, 99, 97, 2, 32, 0, 4, 1, 10, 2, 32, 3, 118, 0, 1, 10, 2, 100, 32, 0, 1, 10, 2, 116, 121, 32, 0, 114, 121,
-			1, 10, 2, 32, 3, 118, 34, 2, 122, 0, 4, 1, 104, 2, 117, 99, 105, 110, 3, 119, 55, 0, 2, 111, 110, 103, 0, 5, 8, 1,
-			10, 2, 32, 0, 8, 2, 21, 0, 8, 2, 105, 103, 0, 8, 99, 2, 97, 109, 105, 116, 0, 108, 2, 101, 103, 114, 0, 108, 8, 2,
-			21, 0, 108, 8, 2, 105, 97, 110, 0, 108, 8, 2, 105, 116, 101, 114, 0, 108, 8, 2, 111, 116, 0, 108, 8, 2, 111, 119, 0, 108,
-			101, 2, 103, 101, 3, 119, 55, 121, 0, 105, 8, 2, 17, 66, 101, 3, 119, 55, 137, 0, 4, 1, 102, 2, 107, 3, 124, 55, 0, 1,
+		static unsigned char espeakdata_dicts14_data[116292] = {
+			0, 4, 0, 0, 193, 251, 0, 0, 14, 69, 92, 131, 193, 52, 144, 107, 137, 119, 65, 6, 140, 0, 16, 70, 77, 66, 76, 21, 69, 15,
+			89, 47, 113, 55, 122, 47, 139, 0, 14, 69, 64, 20, 212, 73, 144, 48, 141, 89, 47, 34, 37, 0, 8, 197, 40, 19, 15, 65, 144, 17,
+			0, 12, 68, 52, 21, 5, 60, 65, 119, 47, 141, 139, 0, 10, 199, 56, 81, 129, 72, 147, 213, 76, 17, 10, 199, 52, 19, 9, 12, 147,
+			213, 76, 17, 18, 71, 12, 132, 153, 76, 19, 9, 76, 49, 34, 124, 89, 13, 55, 124, 89, 0, 15, 70, 5, 85, 15, 65, 54, 64, 133,
+			108, 126, 48, 89, 37, 0, 0, 12, 68, 4, 229, 15, 56, 35, 50, 47, 126, 50, 0, 12, 68, 16, 149, 129, 56, 72, 113, 84, 35, 50,
+			0, 20, 72, 16, 144, 80, 32, 19, 143, 85, 48, 72, 140, 6, 35, 83, 13, 50, 13, 89, 0, 0, 18, 71, 80, 18, 87, 4, 225, 83,
+			20, 47, 140, 58, 13, 50, 6, 132, 88, 0, 14, 70, 77, 81, 134, 60, 194, 192, 89, 129, 83, 13, 49, 0, 13, 68, 72, 82, 197, 100,
+			34, 4, 132, 49, 6, 132, 0, 10, 199, 12, 83, 5, 9, 34, 84, 100, 17, 17, 71, 5, 85, 8, 61, 34, 84, 100, 119, 87, 126, 34,
+			113, 47, 37, 0, 0, 24, 73, 32, 85, 5, 72, 241, 197, 56, 245, 83, 107, 122, 47, 114, 6, 126, 75, 13, 50, 13, 89, 0, 103, 23,
+			73, 32, 85, 5, 72, 241, 197, 56, 245, 83, 107, 122, 47, 34, 139, 75, 6, 132, 50, 13, 89, 0, 11, 200, 12, 128, 76, 12, 81, 15,
+			57, 144, 66, 0, 11, 65, 4, 35, 55, 35, 0, 81, 108, 97, 32, 16, 65, 4, 119, 15, 58, 140, 55, 0, 81, 119, 104, 105, 108, 101,
+			32, 17, 70, 60, 33, 83, 37, 70, 64, 139, 71, 6, 132, 89, 13, 47, 37, 0, 9, 67, 32, 150, 65, 107, 140, 119, 0, 17, 71, 24,
+			16, 197, 80, 147, 213, 76, 83, 119, 89, 132, 91, 13, 89, 0, 11, 65, 4, 141, 119, 50, 72, 0, 81, 38, 32, 19, 65, 4, 35, 49,
+			119, 11, 0, 85, 46, 32, 107, 32, 46, 32, 97, 32, 46, 32, 6, 65, 4, 141, 0, 49, 4, 193, 4, 34, 0, 11, 68, 77, 81, 68,
+			20, 89, 58, 141, 72, 0, 14, 70, 61, 85, 23, 5, 33, 0, 138, 47, 58, 114, 72, 0, 7, 196, 20, 98, 76, 20, 20, 16, 70, 12,
+			243, 150, 20, 229, 0, 49, 126, 50, 84, 13, 50, 47, 0, 11, 68, 8, 144, 140, 20, 71, 140, 71, 118, 0, 13, 69, 5, 0, 67, 32,
+			80, 119, 48, 35, 76, 37, 0, 9, 68, 4, 148, 204, 20, 147, 55, 0, 6, 65, 108, 2, 35, 0, 12, 4, 95, 116, 117, 114, 47, 6,
+			131, 50, 72, 0, 5, 193, 108, 43, 49, 0, 8, 197, 52, 19, 15, 56, 80, 17, 13, 69, 12, 20, 15, 56, 80, 49, 119, 48, 139, 50,
+			0, 12, 69, 76, 244, 8, 36, 80, 89, 139, 83, 37, 0, 8, 197, 48, 18, 15, 72, 80, 17, 12, 67, 96, 208, 83, 122, 49, 89, 65,
+			119, 89, 0, 13, 69, 60, 53, 1, 88, 80, 126, 49, 47, 124, 84, 0, 8, 197, 37, 2, 15, 56, 80, 20, 13, 69, 24, 83, 9, 56,
+			80, 83, 132, 55, 140, 50, 0, 12, 69, 5, 35, 213, 76, 80, 119, 34, 138, 88, 0, 0, 12, 201, 76, 147, 85, 49, 64, 78, 20, 245,
+			83, 67, 0, 7, 196, 77, 66, 76, 48, 32, 10, 67, 80, 129, 89, 86, 141, 0, 72, 32, 8, 197, 61, 85, 9, 56, 112, 65, 17, 70,
+			24, 193, 88, 36, 35, 5, 83, 55, 122, 49, 89, 124, 71, 118, 0, 24, 73, 20, 193, 67, 81, 34, 67, 37, 70, 64, 113, 55, 122, 49,
+			47, 34, 6, 124, 89, 113, 47, 37, 0, 22, 73, 12, 243, 77, 60, 228, 197, 57, 49, 64, 49, 126, 65, 13, 50, 89, 6, 122, 50, 89,
+			0, 6, 65, 8, 71, 132, 0, 0, 17, 71, 76, 19, 9, 76, 37, 82, 100, 89, 133, 55, 89, 71, 34, 37, 0, 15, 70, 88, 17, 213,
+			21, 53, 0, 84, 141, 81, 13, 89, 47, 0, 18, 71, 76, 80, 210, 21, 64, 82, 100, 89, 122, 49, 34, 13, 47, 34, 124, 0, 20, 71,
+			52, 243, 69, 57, 64, 82, 100, 65, 139, 65, 13, 50, 108, 143, 34, 37, 0, 103, 19, 71, 52, 243, 69, 57, 64, 82, 100, 65, 139, 65,
+			13, 50, 47, 13, 34, 37, 0, 0, 14, 69, 56, 144, 207, 48, 16, 50, 124, 49, 13, 55, 13, 0, 11, 68, 9, 34, 69, 56, 71, 34,
+			147, 50, 0, 7, 196, 52, 147, 1, 56, 66, 24, 68, 8, 21, 15, 56, 71, 35, 47, 13, 50, 15, 34, 6, 137, 90, 0, 81, 114, 111,
+			117, 103, 101, 32, 21, 72, 81, 32, 74, 20, 53, 15, 73, 144, 47, 34, 13, 75, 122, 49, 47, 13, 34, 124, 0, 12, 68, 76, 83, 69,
+			56, 89, 132, 65, 13, 50, 0, 7, 196, 72, 21, 15, 56, 17, 15, 69, 52, 144, 83, 52, 16, 65, 140, 6, 35, 88, 65, 13, 0, 7,
+			196, 24, 83, 15, 56, 16, 12, 68, 12, 243, 15, 56, 49, 139, 55, 13, 50, 0, 8, 196, 8, 21, 15, 56, 103, 17, 14, 69, 5, 85,
+			9, 76, 208, 133, 108, 124, 88, 13, 65, 0, 15, 70, 4, 195, 5, 72, 114, 67, 119, 55, 131, 75, 124, 49, 0, 6, 195, 85, 64, 192,
+			13, 14, 67, 21, 64, 192, 122, 47, 6, 89, 122, 47, 34, 13, 0, 0, 0, 15, 70, 12, 20, 142, 20, 114, 69, 49, 130, 50, 13, 81,
+			37, 0, 13, 69, 5, 21, 73, 56, 240, 119, 49, 132, 50, 139, 0, 9, 198, 88, 19, 8, 4, 195, 1, 66, 14, 69, 56, 21, 129, 40,
+			240, 50, 121, 84, 13, 107, 139, 0, 18, 70, 48, 147, 135, 21, 34, 69, 55, 126, 50, 90, 13, 34, 6, 141, 0, 103, 16, 70, 48, 147,
+			135, 21, 34, 69, 55, 126, 50, 90, 13, 34, 37, 0, 9, 67, 4, 131, 217, 119, 107, 142, 0, 14, 202, 4, 69, 133, 73, 66, 83, 20,
+			209, 78, 80, 103, 67, 24, 74, 4, 69, 133, 73, 66, 83, 20, 209, 78, 80, 119, 72, 84, 131, 47, 124, 89, 65, 13, 50, 47, 0, 6,
+			65, 12, 89, 132, 0, 0, 15, 6, 100, 105, 100, 110, 39, 116, 72, 124, 72, 50, 47, 0, 32, 10, 67, 56, 80, 82, 4, 50, 145, 0,
+			10, 17, 70, 52, 20, 148, 36, 225, 90, 65, 130, 47, 6, 132, 50, 122, 88, 0, 18, 67, 80, 80, 82, 47, 6, 143, 15, 6, 126, 83,
+			0, 81, 111, 102, 102, 32, 21, 67, 80, 80, 82, 47, 4, 143, 15, 119, 48, 130, 47, 0, 81, 97, 112, 97, 114, 116, 32, 9, 67, 80,
+			80, 82, 47, 143, 0, 36, 9, 67, 80, 80, 82, 47, 145, 0, 47, 14, 70, 16, 85, 137, 48, 81, 0, 72, 122, 84, 118, 72, 0, 0,
+			12, 68, 72, 19, 79, 56, 34, 119, 65, 139, 50, 0, 14, 69, 12, 147, 133, 52, 16, 89, 124, 50, 13, 65, 13, 0, 0, 13, 68, 52,
+			83, 149, 76, 65, 122, 50, 57, 137, 88, 0, 0, 14, 69, 74, 36, 213, 54, 32, 34, 122, 88, 137, 65, 141, 0, 12, 69, 13, 80, 203,
+			60, 240, 49, 117, 49, 137, 0, 6, 65, 16, 72, 132, 0, 0, 19, 73, 16, 84, 204, 5, 84, 137, 21, 36, 192, 72, 113, 55, 136, 34,
+			124, 141, 0, 11, 68, 12, 130, 76, 20, 76, 124, 55, 37, 0, 11, 68, 16, 147, 196, 20, 72, 140, 139, 72, 0, 0, 8, 197, 32, 244,
+			129, 12, 80, 16, 12, 69, 12, 243, 142, 36, 80, 49, 126, 50, 37, 0, 14, 69, 8, 83, 9, 104, 80, 71, 122, 55, 6, 132, 88, 0,
+			13, 69, 85, 49, 65, 28, 80, 57, 137, 89, 113, 75, 0, 8, 197, 76, 85, 20, 20, 80, 66, 14, 69, 72, 81, 15, 56, 80, 34, 132,
+			72, 6, 129, 50, 0, 13, 69, 72, 21, 137, 56, 80, 34, 13, 84, 132, 50, 0, 14, 69, 52, 244, 143, 76, 80, 65, 13, 34, 6, 139,
+			89, 0, 13, 69, 12, 84, 137, 76, 80, 89, 13, 34, 132, 88, 0, 0, 26, 67, 80, 128, 84, 86, 119, 47, 107, 119, 88, 71, 124, 50,
+			0, 76, 82, 104, 97, 115, 32, 98, 101, 101, 110, 32, 17, 67, 80, 128, 84, 2, 86, 35, 47, 86, 115, 0, 81, 116, 104, 101, 32, 19,
+			67, 80, 128, 84, 86, 6, 35, 47, 58, 4, 128, 50, 0, 81, 111, 110, 101, 32, 19, 67, 80, 128, 84, 86, 119, 47, 15, 58, 128, 88,
+			0, 49, 81, 119, 97, 115, 32, 17, 67, 80, 128, 84, 4, 86, 119, 47, 124, 47, 0, 33, 81, 105, 116, 32, 17, 67, 80, 128, 84, 4,
+			86, 35, 47, 13, 50, 0, 34, 81, 97, 110, 32, 15, 67, 80, 128, 84, 4, 86, 35, 47, 13, 0, 34, 81, 97, 32, 13, 67, 80, 128,
+			84, 86, 35, 47, 0, 72, 34, 10, 33, 13, 70, 85, 36, 85, 32, 20, 148, 131, 49, 130, 47, 0, 14, 70, 28, 128, 78, 16, 130, 64,
+			81, 35, 50, 72, 37, 0, 15, 70, 52, 19, 1, 12, 130, 64, 65, 35, 55, 13, 49, 140, 0, 17, 70, 9, 84, 149, 56, 66, 64, 71,
+			117, 34, 6, 117, 50, 72, 37, 0, 15, 70, 92, 244, 139, 76, 134, 64, 58, 151, 49, 91, 140, 0, 105, 14, 70, 92, 244, 139, 76, 134,
+			64, 58, 131, 49, 91, 140, 0, 16, 70, 81, 148, 129, 56, 230, 64, 47, 145, 34, 13, 50, 37, 0, 103, 15, 70, 81, 148, 129, 56, 230,
+			64, 47, 124, 34, 13, 50, 37, 0, 10, 3, 105, 46, 101, 140, 132, 11, 0, 8, 11, 4, 95, 100, 112, 116, 48, 142, 50, 47, 0, 0,
+			8, 67, 52, 22, 65, 65, 147, 0, 13, 69, 8, 84, 137, 56, 112, 71, 143, 34, 124, 68, 0, 21, 65, 20, 83, 135, 122, 81, 88, 6,
+			120, 65, 48, 118, 0, 83, 46, 32, 103, 32, 46, 32, 5, 65, 20, 132, 0, 0, 17, 71, 52, 18, 143, 72, 85, 20, 20, 65, 141, 75,
+			114, 6, 122, 47, 0, 17, 71, 24, 21, 143, 85, 34, 84, 20, 83, 141, 84, 14, 34, 113, 47, 0, 16, 70, 21, 0, 85, 48, 85, 0,
+			122, 48, 13, 55, 6, 122, 47, 0, 15, 70, 8, 148, 195, 84, 149, 0, 71, 124, 89, 49, 124, 47, 0, 0, 21, 72, 48, 16, 143, 72,
+			21, 15, 73, 144, 55, 35, 71, 34, 13, 47, 133, 34, 37, 0, 103, 21, 72, 48, 16, 143, 72, 21, 15, 73, 144, 55, 119, 71, 6, 126,
+			34, 13, 47, 34, 124, 0, 11, 200, 12, 243, 147, 84, 211, 65, 80, 80, 65, 0, 14, 70, 48, 147, 132, 76, 86, 64, 55, 124, 50, 88,
+			37, 0, 14, 70, 48, 147, 132, 76, 22, 64, 55, 124, 50, 88, 37, 0, 9, 198, 16, 18, 15, 52, 86, 64, 17, 15, 70, 8, 19, 15,
+			56, 86, 64, 71, 13, 55, 139, 50, 37, 0, 0, 15, 70, 81, 37, 80, 32, 243, 133, 47, 34, 137, 83, 139, 50, 0, 16, 71, 77, 64,
+			82, 8, 240, 82, 16, 89, 47, 130, 71, 114, 72, 0, 11, 67, 65, 83, 153, 48, 57, 137, 50, 37, 0, 16, 70, 52, 243, 143, 80, 243,
+			133, 65, 126, 50, 13, 47, 139, 50, 0, 9, 198, 52, 17, 193, 104, 147, 133, 67, 19, 72, 4, 195, 8, 4, 195, 15, 93, 48, 133, 55,
+			107, 6, 35, 55, 139, 88, 0, 6, 65, 24, 122, 83, 0, 0, 19, 71, 65, 35, 193, 13, 66, 86, 20, 48, 34, 139, 6, 35, 49, 47,
+			124, 84, 0, 17, 70, 65, 33, 84, 21, 133, 0, 48, 34, 132, 108, 122, 49, 89, 47, 0, 10, 67, 48, 145, 78, 55, 132, 13, 50, 0,
+			16, 70, 32, 82, 78, 20, 177, 78, 107, 140, 50, 13, 49, 13, 50, 0, 20, 71, 21, 132, 12, 21, 66, 86, 20, 122, 49, 89, 48, 55,
+			125, 47, 124, 84, 0, 103, 20, 71, 21, 132, 12, 21, 66, 86, 20, 122, 49, 89, 48, 55, 6, 132, 47, 124, 84, 0, 19, 71, 12, 243,
+			66, 5, 66, 86, 20, 49, 13, 65, 71, 35, 47, 124, 84, 0, 103, 0, 17, 71, 29, 35, 211, 88, 83, 143, 72, 81, 34, 139, 84, 13,
+			50, 114, 0, 0, 15, 70, 16, 85, 133, 72, 21, 88, 72, 122, 84, 114, 34, 139, 0, 11, 68, 4, 148, 133, 76, 140, 34, 124, 88, 0,
+			12, 68, 76, 147, 149, 76, 89, 140, 50, 13, 89, 0, 12, 68, 12, 84, 133, 76, 89, 144, 34, 132, 88, 0, 0, 19, 71, 9, 80, 200,
+			5, 33, 83, 80, 71, 137, 49, 119, 34, 6, 122, 89, 47, 0, 14, 70, 52, 84, 137, 56, 117, 69, 65, 13, 34, 35, 68, 0, 15, 70,
+			4, 224, 76, 60, 117, 69, 35, 50, 13, 55, 126, 81, 0, 6, 65, 28, 75, 132, 0, 0, 27, 67, 92, 80, 82, 58, 6, 143, 15, 119,
+			50, 72, 15, 47, 6, 143, 0, 82, 97, 110, 100, 32, 116, 101, 97, 114, 32, 10, 199, 12, 243, 131, 61, 84, 147, 20, 65, 0, 13, 67,
+			12, 19, 128, 2, 49, 35, 50, 0, 32, 46, 10, 14, 69, 56, 245, 77, 20, 16, 50, 137, 65, 6, 141, 13, 0, 10, 67, 80, 243, 128,
+			47, 129, 50, 0, 47, 11, 67, 76, 19, 128, 4, 89, 35, 50, 0, 46, 8, 197, 64, 18, 129, 52, 16, 17, 12, 68, 52, 84, 207, 56,
+			65, 132, 88, 126, 50, 0, 13, 69, 52, 22, 72, 20, 208, 65, 141, 107, 122, 65, 0, 14, 69, 12, 20, 9, 80, 16, 49, 35, 48, 124,
+			47, 13, 0, 0, 12, 68, 72, 242, 129, 76, 34, 139, 107, 121, 89, 0, 10, 68, 48, 245, 73, 76, 55, 137, 37, 0, 11, 68, 76, 178,
+			69, 76, 89, 49, 140, 88, 0, 11, 68, 4, 208, 83, 76, 119, 65, 35, 89, 0, 0, 12, 201, 12, 148, 131, 84, 212, 212, 4, 224, 197,
+			15, 6, 65, 32, 141, 76, 0, 0, 11, 68, 48, 80, 70, 100, 55, 132, 83, 37, 0, 17, 70, 36, 226, 5, 72, 149, 0, 124, 50, 107,
+			6, 122, 34, 124, 47, 0, 0, 14, 69, 4, 230, 79, 56, 80, 122, 50, 124, 58, 128, 50, 0, 8, 197, 28, 240, 84, 20, 80, 66, 12,
+			68, 136, 194, 84, 20, 124, 55, 6, 132, 47, 0, 12, 69, 8, 195, 213, 76, 80, 71, 55, 138, 88, 0, 0, 18, 70, 4, 196, 133, 4,
+			70, 64, 133, 55, 34, 122, 72, 37, 0, 74, 32, 10, 15, 70, 72, 150, 154, 60, 194, 64, 34, 113, 88, 139, 55, 37, 0, 13, 70, 44,
+			82, 71, 32, 194, 64, 49, 141, 55, 37, 0, 16, 70, 77, 64, 78, 16, 38, 64, 89, 47, 35, 50, 72, 71, 140, 0, 8, 1, 35, 107,
+			35, 91, 0, 27, 0, 16, 65, 36, 140, 15, 107, 6, 35, 72, 0, 49, 81, 104, 97, 100, 32, 18, 65, 36, 140, 91, 6, 35, 55, 0,
+			49, 42, 81, 115, 104, 97, 108, 108, 32, 18, 65, 36, 2, 140, 91, 4, 119, 55, 0, 42, 81, 115, 104, 97, 108, 108, 32, 14, 65, 36,
+			2, 140, 35, 65, 0, 49, 42, 81, 97, 109, 32, 13, 65, 36, 2, 140, 119, 65, 0, 42, 81, 97, 109, 32, 9, 65, 36, 140, 0, 76,
+			32, 46, 42, 11, 68, 4, 129, 65, 16, 119, 107, 122, 72, 0, 13, 68, 17, 145, 133, 16, 72, 6, 129, 84, 124, 72, 0, 12, 68, 72,
+			16, 137, 16, 34, 141, 71, 124, 72, 0, 11, 68, 48, 149, 133, 16, 55, 124, 84, 72, 0, 16, 70, 8, 18, 197, 48, 149, 5, 71, 141,
+			49, 13, 55, 140, 47, 0, 5, 65, 36, 140, 0, 0, 17, 70, 37, 0, 78, 20, 208, 64, 124, 48, 119, 50, 6, 132, 65, 13, 0, 20,
+			71, 88, 145, 5, 61, 64, 80, 20, 84, 6, 124, 72, 132, 139, 108, 4, 141, 48, 0, 17, 70, 60, 193, 20, 36, 209, 82, 139, 55, 72,
+			47, 6, 140, 65, 114, 0, 16, 70, 60, 48, 213, 64, 145, 82, 126, 49, 57, 137, 48, 140, 114, 0, 6, 195, 37, 0, 68, 20, 21, 72,
+			21, 128, 67, 80, 83, 69, 57, 64, 122, 81, 88, 35, 49, 47, 13, 65, 6, 153, 0, 18, 72, 16, 83, 143, 84, 83, 69, 57, 64, 72,
+			141, 50, 6, 137, 65, 154, 0, 6, 195, 37, 0, 195, 13, 6, 195, 37, 0, 64, 13, 13, 1, 37, 48, 151, 89, 6, 122, 50, 47, 0,
+			105, 27, 12, 1, 37, 48, 114, 89, 6, 122, 50, 47, 0, 27, 0, 11, 67, 37, 68, 192, 124, 47, 89, 0, 72, 34, 9, 67, 100, 84,
+			128, 57, 114, 0, 76, 16, 70, 12, 245, 133, 80, 245, 83, 49, 129, 84, 13, 47, 13, 89, 0, 18, 70, 8, 244, 133, 4, 194, 83, 71,
+			136, 34, 124, 6, 35, 55, 124, 89, 0, 9, 1, 38, 10, 35, 50, 72, 0, 76, 5, 193, 112, 43, 49, 0, 18, 73, 8, 245, 84, 60,
+			227, 137, 21, 33, 64, 71, 137, 19, 50, 6, 145, 0, 19, 71, 5, 52, 1, 72, 17, 213, 76, 119, 89, 48, 35, 34, 13, 81, 13, 89,
+			0, 0, 18, 70, 60, 34, 84, 84, 20, 153, 139, 71, 6, 124, 76, 137, 143, 37, 0, 103, 16, 70, 60, 34, 84, 84, 20, 153, 126, 71,
+			6, 124, 76, 146, 37, 0, 9, 198, 48, 147, 143, 48, 85, 77, 66, 18, 70, 16, 147, 1, 80, 244, 153, 72, 124, 55, 35, 47, 152, 34,
+			124, 0, 103, 17, 70, 16, 147, 1, 80, 244, 153, 72, 124, 55, 13, 47, 13, 34, 124, 0, 6, 65, 40, 75, 141, 0, 0, 11, 68, 96,
+			131, 211, 4, 49, 133, 89, 13, 0, 16, 70, 84, 229, 207, 84, 225, 0, 129, 50, 58, 6, 138, 50, 72, 0, 0, 11, 67, 76, 148, 128,
+			89, 4, 151, 0, 105, 46, 10, 67, 76, 148, 128, 89, 4, 131, 0, 46, 13, 1, 42, 35, 89, 47, 13, 34, 124, 89, 49, 0, 27, 0,
+			16, 70, 92, 147, 12, 36, 19, 64, 58, 124, 55, 57, 13, 65, 0, 103, 15, 69, 8, 244, 212, 60, 224, 71, 134, 89, 47, 13, 50, 0,
+			103, 9, 67, 72, 134, 76, 34, 124, 55, 0, 14, 70, 12, 128, 84, 32, 19, 64, 76, 35, 47, 13, 65, 0, 12, 201, 77, 80, 131, 5,
+			65, 71, 61, 38, 64, 66, 9, 198, 36, 229, 5, 72, 147, 64, 65, 11, 68, 32, 83, 12, 60, 107, 13, 55, 139, 0, 22, 73, 4, 227,
+			137, 88, 84, 147, 5, 38, 64, 35, 50, 124, 84, 6, 131, 89, 13, 34, 37, 0, 6, 195, 5, 2, 0, 13, 8, 1, 43, 48, 55, 129,
+			89, 0, 0, 8, 197, 17, 147, 129, 52, 240, 65, 11, 5, 99, 39, 101, 115, 116, 89, 141, 0, 72, 6, 65, 44, 49, 141, 0, 0, 16,
+			70, 20, 69, 65, 72, 67, 192, 122, 72, 58, 6, 130, 72, 139, 0, 13, 68, 52, 241, 5, 52, 65, 139, 72, 13, 65, 0, 103, 12, 68,
+			52, 241, 5, 52, 65, 139, 72, 122, 65, 0, 14, 70, 16, 145, 72, 5, 33, 0, 72, 140, 107, 130, 72, 0, 17, 70, 4, 193, 146, 20,
+			67, 192, 35, 55, 83, 34, 6, 141, 72, 139, 0, 0, 21, 72, 88, 145, 84, 56, 19, 69, 76, 80, 84, 132, 122, 47, 50, 13, 65, 6,
+			132, 88, 0, 8, 67, 76, 129, 87, 91, 139, 0, 14, 203, 36, 225, 9, 76, 52, 137, 52, 147, 129, 80, 80, 16, 0, 9, 198, 20, 229,
+			18, 4, 147, 0, 65, 6, 195, 20, 68, 212, 13, 9, 1, 47, 89, 55, 35, 91, 0, 27, 0, 28, 68, 52, 145, 200, 80, 4, 65, 140,
+			47, 107, 6, 35, 84, 47, 116, 0, 32, 49, 82, 104, 97, 118, 101, 32, 116, 111, 32, 21, 68, 52, 145, 200, 80, 65, 140, 47, 107, 119,
+			84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 14, 68, 52, 145, 200, 80, 4, 65, 140, 47, 0, 32, 10, 46, 14, 69, 80, 82, 129, 56,
+			240, 47, 125, 107, 121, 50, 139, 0, 12, 68, 72, 81, 137, 80, 34, 132, 83, 124, 47, 0, 10, 67, 52, 84, 193, 65, 141, 89, 13, 0,
+			13, 4, 95, 100, 105, 97, 6, 117, 65, 55, 138, 47, 0, 6, 65, 48, 122, 55, 0, 0, 17, 70, 72, 244, 193, 72, 147, 192, 34, 139,
+			88, 6, 130, 34, 124, 139, 0, 12, 68, 52, 83, 5, 20, 65, 141, 55, 141, 0, 103, 11, 68, 52, 83, 5, 20, 65, 122, 55, 141, 0,
+			17, 70, 28, 19, 9, 48, 83, 192, 81, 35, 55, 113, 55, 6, 141, 139, 0, 0, 19, 72, 69, 81, 83, 4, 66, 76, 48, 16, 49, 141,
+			89, 13, 6, 72, 132, 13, 0, 9, 67, 5, 85, 15, 133, 47, 139, 0, 0, 13, 67, 92, 128, 84, 4, 58, 129, 47, 0, 103, 10, 47,
+			12, 67, 92, 128, 84, 4, 58, 126, 47, 0, 50, 47, 12, 67, 92, 128, 84, 58, 2, 126, 47, 0, 10, 47, 15, 70, 80, 147, 79, 80,
+			134, 64, 47, 124, 65, 13, 87, 37, 0, 15, 70, 16, 243, 129, 28, 134, 64, 72, 126, 50, 6, 107, 132, 0, 16, 70, 61, 97, 82, 80,
+			198, 64, 139, 84, 6, 131, 47, 55, 124, 0, 0, 8, 196, 85, 4, 197, 80, 65, 37, 17, 70, 72, 81, 137, 56, 84, 153, 34, 113, 83,
+			140, 50, 13, 34, 124, 0, 12, 68, 20, 116, 133, 80, 132, 81, 34, 13, 47, 0, 9, 198, 12, 243, 148, 72, 149, 5, 66, 18, 70, 12,
+			243, 148, 72, 20, 153, 49, 126, 50, 47, 34, 143, 34, 37, 0, 103, 17, 70, 12, 243, 148, 72, 20, 153, 49, 126, 50, 47, 34, 13, 34,
+			124, 0, 6, 65, 52, 122, 65, 0, 0, 16, 71, 76, 86, 67, 32, 83, 12, 20, 89, 141, 91, 6, 122, 55, 0, 6, 195, 53, 0, 65,
+			13, 0, 13, 69, 8, 85, 19, 21, 144, 71, 122, 47, 89, 37, 0, 11, 200, 64, 84, 137, 92, 147, 139, 48, 80, 65, 0, 15, 70, 65,
+			33, 83, 48, 86, 64, 48, 34, 122, 89, 55, 37, 0, 15, 70, 81, 84, 142, 44, 86, 64, 47, 151, 50, 49, 132, 0, 105, 14, 70, 81,
+			84, 142, 44, 86, 64, 47, 131, 50, 49, 132, 0, 16, 70, 81, 34, 76, 60, 118, 64, 47, 34, 124, 55, 13, 75, 37, 0, 17, 70, 65,
+			34, 86, 4, 54, 64, 48, 34, 140, 84, 13, 89, 37, 0, 103, 17, 71, 52, 243, 129, 72, 50, 9, 12, 65, 13, 50, 130, 49, 124, 49,
+			0, 0, 16, 70, 52, 148, 211, 61, 84, 137, 65, 124, 88, 6, 146, 34, 37, 0, 13, 70, 12, 129, 83, 32, 148, 133, 76, 122, 91, 114,
+			0, 15, 70, 65, 33, 77, 36, 84, 133, 48, 34, 13, 65, 145, 0, 103, 9, 198, 61, 97, 82, 81, 84, 133, 65, 10, 67, 44, 149, 201,
+			49, 132, 58, 132, 0, 6, 65, 56, 122, 50, 0, 0, 17, 71, 64, 130, 76, 37, 2, 78, 20, 83, 124, 55, 113, 48, 132, 50, 0, 18,
+			71, 52, 20, 135, 5, 34, 78, 20, 65, 130, 75, 114, 34, 13, 50, 0, 103, 17, 71, 52, 20, 135, 5, 34, 78, 20, 65, 130, 75, 114,
+			34, 132, 50, 0, 18, 71, 12, 243, 15, 77, 49, 85, 52, 49, 126, 55, 13, 89, 6, 144, 65, 0, 0, 26, 74, 16, 80, 207, 53, 2,
+			76, 5, 66, 79, 56, 72, 132, 49, 126, 65, 48, 113, 55, 6, 141, 91, 13, 50, 0, 0, 33, 8, 99, 111, 117, 108, 100, 110, 39, 116,
+			6, 49, 117, 72, 14, 50, 47, 35, 84, 47, 116, 0, 32, 10, 82, 104, 97, 118, 101, 32, 116, 111, 32, 27, 8, 99, 111, 117, 108, 100,
+			110, 39, 116, 49, 117, 72, 14, 50, 47, 13, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 20, 8, 99, 111, 117, 108, 100, 110, 39, 116,
+			4, 49, 117, 72, 14, 50, 47, 0, 32, 10, 16, 71, 48, 145, 200, 80, 226, 78, 28, 55, 140, 47, 50, 124, 68, 0, 9, 198, 12, 243,
+			137, 12, 19, 0, 65, 24, 73, 12, 243, 15, 56, 244, 195, 61, 6, 64, 49, 139, 55, 13, 50, 6, 126, 89, 49, 13, 48, 37, 0, 0,
+			34, 9, 115, 104, 111, 117, 108, 100, 110, 39, 116, 6, 91, 117, 72, 14, 50, 47, 35, 84, 47, 116, 0, 32, 10, 82, 104, 97, 118, 101,
+			32, 116, 111, 32, 29, 9, 115, 104, 111, 117, 108, 100, 110, 39, 116, 91, 117, 72, 14, 50, 47, 107, 13, 84, 0, 35, 77, 81, 104, 97,
+			118, 101, 32, 22, 9, 115, 104, 111, 117, 108, 100, 110, 39, 116, 4, 91, 117, 72, 14, 50, 47, 0, 32, 10, 46, 13, 70, 76, 86, 77,
+			61, 84, 128, 89, 132, 65, 136, 0, 18, 70, 77, 83, 1, 92, 84, 201, 89, 137, 55, 119, 58, 6, 141, 89, 37, 0, 5, 65, 60, 139,
+			0, 0, 9, 67, 60, 208, 82, 139, 65, 130, 0, 15, 70, 16, 243, 15, 72, 84, 192, 72, 13, 55, 136, 125, 89, 0, 12, 68, 64, 192,
+			90, 4, 48, 55, 121, 88, 13, 0, 13, 69, 61, 0, 81, 84, 80, 139, 48, 6, 141, 49, 0, 12, 1, 61, 9, 132, 49, 58, 118, 88,
+			9, 0, 27, 0, 9, 67, 104, 249, 0, 88, 139, 37, 0, 12, 69, 76, 129, 73, 48, 16, 91, 132, 55, 13, 0, 14, 69, 64, 19, 129,
+			52, 16, 48, 35, 50, 13, 65, 121, 0, 12, 68, 25, 85, 15, 56, 83, 137, 47, 126, 50, 0, 8, 197, 64, 51, 67, 36, 16, 13, 0,
+			11, 67, 52, 241, 84, 65, 139, 6, 122, 47, 0, 11, 68, 4, 81, 201, 76, 132, 75, 124, 89, 0, 0, 15, 70, 81, 33, 65, 80, 148,
+			197, 47, 34, 132, 47, 124, 88, 0, 14, 68, 16, 80, 149, 80, 72, 141, 71, 6, 57, 137, 0, 103, 12, 68, 16, 80, 149, 80, 72, 141,
+			71, 57, 137, 0, 9, 1, 64, 10, 35, 47, 10, 0, 76, 6, 65, 64, 48, 132, 0, 0, 9, 198, 65, 33, 83, 20, 229, 0, 36, 17,
+			70, 65, 33, 83, 20, 229, 0, 48, 34, 122, 88, 13, 50, 47, 0, 46, 0, 14, 69, 48, 245, 73, 76, 80, 55, 137, 58, 6, 132, 88,
+			0, 12, 69, 80, 245, 80, 20, 80, 47, 137, 48, 141, 0, 12, 69, 53, 148, 148, 48, 80, 65, 131, 47, 118, 0, 6, 195, 36, 211, 192,
+			13, 0, 15, 70, 16, 244, 143, 80, 134, 64, 72, 126, 34, 13, 87, 37, 0, 16, 70, 4, 229, 8, 60, 230, 64, 35, 50, 47, 13, 50,
+			37, 0, 135, 17, 70, 77, 112, 72, 36, 194, 64, 89, 58, 121, 107, 6, 132, 55, 37, 0, 0, 13, 69, 76, 145, 206, 85, 0, 89, 140,
+			50, 129, 48, 0, 11, 68, 61, 85, 5, 16, 138, 47, 125, 72, 0, 17, 70, 21, 132, 5, 16, 149, 5, 122, 49, 89, 48, 13, 72, 140,
+			47, 0, 16, 70, 16, 84, 207, 48, 21, 5, 72, 122, 89, 13, 55, 13, 47, 0, 7, 65, 68, 49, 57, 137, 0, 0, 12, 68, 88, 83,
+			149, 20, 84, 122, 50, 57, 137, 0, 10, 68, 80, 134, 77, 20, 47, 140, 65, 0, 18, 71, 64, 84, 134, 20, 53, 12, 100, 48, 131, 83,
+			122, 49, 47, 55, 124, 0, 15, 70, 64, 17, 197, 4, 229, 0, 48, 35, 75, 13, 50, 47, 0, 15, 70, 8, 20, 146, 4, 50, 192, 71,
+			122, 34, 13, 49, 0, 103, 14, 70, 8, 20, 146, 4, 50, 192, 71, 35, 34, 13, 49, 0, 12, 68, 4, 226, 77, 20, 35, 50, 124, 65,
+			141, 0, 16, 70, 4, 64, 77, 4, 229, 0, 35, 72, 13, 65, 13, 50, 47, 0, 0, 16, 70, 25, 32, 78, 12, 242, 83, 83, 34, 35,
+			50, 89, 58, 121, 0, 10, 67, 16, 85, 83, 72, 141, 117, 89, 0, 6, 195, 60, 144, 192, 13, 0, 11, 68, 12, 128, 78, 28, 76, 35,
+			68, 0, 47, 11, 68, 12, 128, 78, 28, 76, 141, 50, 75, 0, 0, 17, 70, 64, 83, 133, 48, 244, 5, 48, 13, 50, 122, 55, 13, 48,
+			37, 0, 13, 68, 76, 18, 5, 48, 89, 121, 107, 6, 122, 55, 0, 17, 70, 36, 225, 21, 77, 68, 153, 124, 50, 72, 129, 89, 47, 34,
+			124, 0, 5, 65, 72, 130, 0, 0, 17, 70, 20, 193, 67, 81, 35, 206, 113, 55, 122, 49, 47, 34, 126, 50, 0, 0, 19, 67, 80, 129,
+			64, 86, 115, 15, 58, 140, 55, 0, 81, 119, 104, 105, 108, 101, 32, 10, 67, 80, 129, 64, 86, 115, 0, 46, 34, 18, 70, 72, 80, 204,
+			85, 49, 83, 34, 122, 49, 55, 137, 89, 125, 88, 0, 103, 17, 70, 72, 80, 204, 85, 49, 83, 34, 113, 49, 55, 137, 89, 125, 88, 0,
+			0, 12, 68, 29, 82, 68, 60, 81, 58, 132, 72, 139, 0, 16, 70, 72, 84, 85, 36, 83, 64, 34, 122, 49, 58, 113, 122, 65, 0, 18,
+			4, 95, 100, 111, 116, 58, 124, 86, 72, 6, 126, 47, 119, 71, 129, 84, 0, 0, 11, 68, 80, 145, 1, 48, 47, 140, 72, 118, 0, 15,
+			70, 76, 242, 143, 85, 35, 128, 89, 139, 75, 151, 50, 0, 105, 14, 70, 76, 242, 143, 85, 35, 128, 89, 139, 75, 131, 50, 0, 0, 15,
+			70, 40, 84, 137, 12, 131, 192, 75, 122, 34, 124, 49, 139, 0, 9, 198, 85, 4, 212, 5, 37, 0, 65, 16, 70, 80, 244, 142, 4, 67,
+			192, 47, 135, 50, 6, 141, 72, 139, 0, 17, 71, 77, 0, 71, 32, 85, 20, 36, 89, 48, 119, 81, 122, 47, 37, 0, 17, 70, 61, 33,
+			71, 4, 227, 192, 126, 34, 124, 81, 6, 121, 50, 139, 0, 8, 67, 48, 145, 82, 55, 148, 0, 11, 68, 12, 240, 207, 4, 49, 139, 49,
+			139, 0, 0, 15, 70, 48, 19, 66, 21, 66, 0, 55, 35, 65, 71, 13, 87, 0, 9, 67, 92, 129, 87, 83, 57, 137, 0, 9, 67, 28,
+			145, 192, 81, 124, 81, 0, 0, 10, 68, 12, 244, 144, 76, 49, 135, 0, 46, 12, 68, 8, 192, 78, 12, 71, 55, 153, 50, 49, 0, 0,
+			16, 70, 52, 17, 5, 49, 147, 128, 65, 35, 72, 13, 55, 113, 50, 0, 12, 68, 76, 19, 1, 16, 89, 35, 55, 13, 72, 0, 14, 69,
+			33, 80, 146, 37, 48, 107, 137, 71, 34, 124, 89, 0, 6, 65, 80, 47, 132, 0, 0, 5, 194, 4, 48, 13, 0, 12, 67, 60, 225, 83,
+			58, 128, 50, 88, 0, 46, 11, 13, 70, 12, 21, 1, 73, 34, 0, 49, 13, 47, 130, 0, 14, 69, 8, 197, 82, 73, 144, 71, 55, 151,
+			34, 124, 0, 105, 13, 69, 8, 197, 82, 73, 144, 71, 55, 131, 34, 124, 0, 10, 67, 4, 229, 83, 141, 50, 129, 89, 0, 10, 67, 4,
+			211, 192, 35, 65, 139, 0, 103, 6, 195, 12, 147, 192, 13, 0, 12, 68, 85, 50, 78, 28, 57, 137, 88, 124, 68, 0, 17, 70, 36, 229,
+			5, 73, 3, 204, 124, 50, 47, 114, 48, 139, 55, 0, 103, 9, 198, 36, 229, 5, 73, 3, 204, 65, 16, 70, 29, 33, 68, 36, 83, 148,
+			81, 34, 132, 72, 144, 50, 47, 0, 0, 9, 198, 76, 85, 133, 72, 149, 25, 17, 14, 69, 52, 147, 4, 21, 112, 65, 124, 55, 72, 57,
+			137, 0, 12, 68, 24, 16, 197, 80, 83, 35, 89, 122, 47, 0, 6, 65, 84, 57, 137, 0, 0, 9, 66, 85, 0, 4, 129, 48, 0, 10,
+			16, 70, 64, 85, 71, 20, 245, 0, 48, 57, 137, 90, 6, 139, 0, 103, 11, 200, 81, 34, 85, 53, 2, 1, 57, 64, 66, 9, 198, 32,
+			19, 1, 80, 147, 206, 17, 16, 70, 16, 83, 9, 52, 149, 0, 72, 113, 55, 124, 65, 124, 47, 0, 0, 14, 69, 64, 145, 211, 81, 144,
+			48, 124, 81, 89, 47, 140, 0, 15, 69, 28, 19, 1, 97, 144, 81, 35, 55, 119, 49, 89, 37, 0, 6, 195, 21, 132, 15, 65, 0, 16,
+			70, 76, 245, 84, 32, 83, 132, 89, 121, 83, 6, 122, 50, 72, 0, 18, 71, 65, 54, 67, 32, 245, 9, 12, 89, 140, 49, 6, 126, 47,
+			124, 49, 0, 19, 70, 25, 35, 206, 80, 83, 132, 83, 34, 6, 129, 50, 47, 4, 122, 50, 72, 0, 21, 67, 33, 69, 16, 141, 76, 108,
+			132, 108, 132, 6, 48, 132, 10, 0, 81, 58, 47, 47, 32, 0, 17, 70, 81, 32, 86, 21, 53, 25, 47, 34, 35, 84, 13, 89, 47, 37,
+			0, 10, 67, 73, 80, 153, 34, 137, 71, 37, 0, 9, 67, 5, 116, 153, 119, 34, 140, 0, 6, 65, 88, 84, 132, 0, 0, 21, 66, 5,
+			48, 4, 35, 88, 124, 47, 4, 124, 88, 0, 76, 82, 105, 116, 32, 105, 115, 32, 16, 66, 5, 48, 4, 35, 88, 4, 124, 88, 0, 8,
+			81, 105, 115, 32, 9, 66, 5, 48, 2, 35, 88, 0, 46, 17, 70, 48, 198, 87, 20, 198, 78, 55, 117, 58, 6, 122, 55, 124, 50, 0,
+			16, 71, 44, 21, 8, 21, 34, 78, 20, 49, 35, 87, 34, 113, 50, 0, 18, 71, 64, 19, 5, 77, 66, 78, 20, 48, 35, 55, 13, 89,
+			47, 140, 50, 0, 19, 71, 80, 19, 135, 21, 34, 78, 20, 47, 35, 50, 75, 13, 34, 6, 132, 50, 0, 9, 198, 65, 35, 202, 20, 53,
+			0, 36, 17, 70, 65, 35, 202, 20, 53, 0, 48, 34, 126, 75, 122, 49, 47, 0, 47, 9, 198, 64, 21, 137, 48, 147, 206, 17, 11, 199,
+			9, 150, 129, 57, 66, 78, 20, 103, 65, 0, 0, 17, 70, 12, 246, 149, 52, 83, 0, 49, 126, 88, 13, 65, 6, 122, 55, 0, 26, 67,
+			12, 245, 80, 49, 137, 72, 13, 15, 81, 34, 6, 121, 0, 82, 100, 101, 32, 103, 114, 195, 162, 99, 101, 32, 25, 67, 12, 245, 80, 49,
+			137, 72, 13, 15, 81, 34, 6, 121, 0, 82, 100, 101, 32, 103, 114, 97, 99, 101, 32, 0, 14, 69, 28, 192, 68, 101, 48, 81, 55, 35,
+			72, 124, 89, 0, 14, 69, 13, 84, 148, 37, 48, 49, 151, 47, 125, 89, 0, 105, 13, 69, 13, 84, 148, 37, 48, 49, 131, 47, 125, 89,
+			0, 11, 68, 8, 20, 197, 48, 71, 121, 88, 118, 0, 14, 69, 76, 224, 70, 85, 48, 89, 50, 35, 83, 137, 88, 0, 13, 69, 72, 80,
+			197, 77, 48, 34, 132, 89, 122, 89, 0, 16, 70, 64, 193, 84, 32, 244, 129, 48, 55, 122, 87, 114, 34, 13, 0, 22, 73, 56, 243, 69,
+			56, 51, 1, 81, 84, 133, 50, 13, 65, 122, 68, 49, 55, 13, 76, 114, 0, 13, 68, 52, 245, 5, 48, 65, 139, 47, 6, 122, 55, 0,
+			13, 69, 52, 148, 211, 21, 48, 65, 124, 89, 113, 88, 0, 8, 197, 17, 84, 133, 77, 48, 66, 14, 69, 13, 34, 83, 21, 48, 49, 34,
+			140, 89, 132, 88, 0, 16, 70, 8, 20, 130, 21, 21, 69, 71, 130, 71, 13, 49, 57, 137, 0, 14, 69, 4, 48, 197, 77, 48, 35, 49,
+			89, 122, 89, 0, 36, 14, 69, 4, 48, 197, 77, 48, 35, 49, 89, 122, 89, 0, 47, 15, 69, 72, 148, 195, 61, 48, 34, 124, 89, 49,
+			139, 122, 89, 0, 12, 1, 92, 71, 35, 49, 89, 55, 35, 91, 0, 27, 11, 65, 92, 72, 6, 129, 71, 118, 57, 137, 0, 0, 17, 67,
+			80, 128, 78, 4, 86, 35, 50, 13, 50, 0, 34, 81, 97, 110, 32, 15, 67, 80, 128, 78, 4, 86, 35, 50, 13, 0, 34, 81, 97, 32,
+			11, 67, 80, 128, 78, 86, 119, 50, 0, 72, 46, 14, 70, 32, 145, 5, 61, 85, 0, 107, 140, 72, 138, 47, 0, 18, 70, 5, 1, 82,
+			37, 66, 70, 119, 48, 122, 34, 13, 47, 6, 132, 83, 0, 0, 19, 67, 80, 243, 192, 47, 6, 137, 15, 65, 129, 76, 0, 81, 109, 117,
+			99, 104, 32, 20, 67, 80, 243, 192, 47, 6, 137, 15, 65, 122, 50, 37, 0, 81, 109, 97, 110, 121, 32, 18, 67, 80, 243, 192, 47, 6,
+			137, 15, 83, 57, 137, 0, 81, 102, 101, 119, 32, 8, 67, 100, 83, 192, 57, 139, 0, 0, 18, 70, 36, 66, 84, 5, 35, 196, 140, 72,
+			6, 124, 47, 13, 34, 126, 72, 0, 0, 17, 70, 65, 33, 84, 20, 228, 197, 48, 34, 132, 47, 122, 50, 89, 0, 103, 14, 69, 13, 34,
+			83, 37, 48, 49, 34, 140, 89, 124, 89, 0, 7, 65, 96, 122, 49, 89, 0, 0, 9, 198, 76, 128, 77, 64, 243, 192, 66, 16, 70, 48,
+			243, 135, 4, 115, 192, 55, 126, 68, 81, 13, 81, 139, 0, 0, 13, 69, 77, 80, 129, 73, 80, 89, 137, 71, 114, 137, 0, 14, 69, 76,
+			144, 201, 49, 144, 89, 124, 89, 113, 55, 37, 0, 8, 197, 12, 243, 151, 5, 144, 65, 14, 69, 81, 37, 69, 49, 144, 47, 34, 137, 55,
+			124, 0, 32, 13, 69, 77, 84, 133, 81, 144, 91, 146, 13, 47, 37, 0, 8, 67, 4, 65, 0, 35, 72, 0, 0, 20, 71, 17, 80, 146,
+			61, 99, 137, 44, 72, 137, 71, 34, 6, 126, 84, 50, 124, 49, 0, 0, 17, 70, 80, 20, 5, 77, 68, 153, 47, 35, 48, 13, 89, 47,
+			34, 124, 0, 12, 69, 21, 48, 200, 21, 112, 113, 89, 76, 137, 0, 9, 198, 12, 243, 131, 48, 21, 133, 65, 0, 13, 69, 32, 20, 143,
+			48, 64, 107, 35, 34, 118, 72, 0, 13, 69, 92, 144, 203, 20, 64, 58, 124, 49, 125, 72, 0, 15, 69, 84, 228, 133, 4, 64, 129, 50,
+			34, 6, 122, 72, 0, 46, 16, 70, 76, 245, 86, 20, 226, 82, 89, 137, 84, 13, 50, 6, 145, 0, 13, 69, 73, 81, 199, 20, 64, 34,
+			129, 81, 125, 72, 0, 7, 196, 20, 35, 204, 4, 20, 15, 70, 16, 147, 143, 76, 21, 82, 72, 140, 50, 13, 89, 135, 0, 13, 69, 16,
+			83, 79, 20, 64, 72, 122, 65, 139, 72, 0, 6, 195, 37, 5, 22, 13, 0, 9, 67, 72, 81, 83, 34, 132, 89, 0, 11, 67, 48, 244,
+			192, 4, 55, 126, 89, 0, 46, 19, 72, 5, 85, 15, 52, 240, 137, 48, 80, 133, 47, 13, 65, 13, 71, 144, 55, 0, 0, 9, 198, 88,
+			19, 133, 77, 48, 64, 17, 19, 71, 64, 20, 129, 49, 148, 201, 76, 48, 13, 34, 35, 55, 13, 89, 124, 89, 0, 0, 16, 70, 76, 19,
+			65, 57, 66, 1, 89, 119, 65, 35, 50, 87, 13, 0, 11, 68, 52, 241, 213, 48, 65, 139, 81, 118, 0, 7, 65, 104, 88, 132, 0, 103,
+			7, 65, 104, 88, 122, 72, 0, 0, 16, 69, 8, 86, 79, 56, 64, 71, 124, 57, 126, 50, 72, 0, 74, 10, 19, 66, 5, 64, 6, 141,
+			108, 132, 13, 50, 47, 6, 132, 0, 82, 38, 32, 116, 32, 18, 66, 5, 64, 119, 47, 10, 58, 6, 124, 55, 0, 81, 119, 105, 108, 108,
+			32, 18, 66, 5, 64, 119, 47, 10, 58, 128, 50, 89, 0, 81, 111, 110, 99, 101, 32, 14, 66, 5, 64, 35, 47, 113, 47, 0, 49, 81,
+			105, 116, 32, 13, 66, 5, 64, 2, 35, 47, 13, 0, 34, 81, 97, 32, 10, 66, 5, 64, 35, 47, 0, 34, 46, 72, 13, 69, 40, 84,
+			129, 48, 64, 75, 143, 34, 118, 72, 0, 11, 68, 104, 18, 82, 20, 88, 140, 6, 145, 0, 23, 73, 52, 147, 142, 20, 20, 15, 48, 148,
+			192, 65, 124, 50, 132, 6, 35, 48, 13, 55, 113, 89, 0, 10, 68, 76, 131, 206, 20, 91, 126, 50, 0, 16, 70, 64, 244, 197, 36, 67,
+			206, 48, 13, 89, 140, 72, 13, 50, 0, 15, 70, 52, 85, 1, 64, 131, 210, 65, 122, 47, 13, 83, 135, 0, 0, 17, 67, 92, 20, 192,
+			58, 2, 129, 88, 86, 115, 0, 81, 116, 104, 101, 32, 14, 67, 92, 20, 192, 58, 2, 129, 88, 119, 0, 81, 97, 32, 13, 67, 92, 20,
+			192, 2, 58, 129, 88, 0, 103, 35, 46, 12, 67, 92, 20, 192, 2, 58, 126, 88, 0, 35, 46, 16, 70, 56, 144, 200, 60, 192, 83, 50,
+			124, 49, 13, 55, 13, 89, 0, 12, 201, 40, 242, 1, 56, 225, 83, 9, 84, 135, 66, 9, 67, 80, 133, 64, 87, 150, 0, 105, 8, 67,
+			80, 133, 64, 87, 131, 0, 9, 67, 21, 84, 128, 57, 146, 0, 46, 0, 17, 70, 45, 147, 195, 21, 32, 64, 49, 140, 13, 89, 6, 144,
+			34, 13, 0, 15, 70, 72, 146, 1, 56, 224, 64, 34, 124, 6, 121, 50, 13, 0, 15, 70, 92, 144, 200, 37, 64, 64, 58, 124, 76, 113,
+			47, 130, 0, 20, 72, 5, 161, 82, 8, 18, 74, 4, 224, 35, 88, 114, 71, 140, 75, 6, 121, 50, 0, 15, 70, 80, 17, 134, 21, 64,
+			64, 47, 35, 83, 125, 47, 13, 0, 14, 70, 56, 21, 83, 20, 19, 64, 50, 133, 88, 144, 65, 0, 9, 198, 12, 17, 1, 9, 32, 64,
+			17, 16, 70, 4, 193, 197, 9, 32, 64, 35, 55, 75, 113, 71, 34, 13, 0, 18, 73, 4, 48, 207, 84, 50, 5, 52, 83, 148, 119, 49,
+			137, 91, 65, 154, 0, 6, 195, 61, 67, 200, 13, 0, 18, 70, 80, 148, 129, 52, 148, 213, 47, 124, 34, 35, 65, 124, 6, 89, 137, 0,
+			10, 67, 60, 176, 89, 139, 49, 6, 141, 0, 16, 70, 56, 84, 5, 57, 66, 5, 50, 113, 48, 122, 50, 87, 37, 0, 10, 4, 100, 39,
+			121, 101, 72, 57, 13, 0, 0, 14, 69, 72, 84, 197, 48, 192, 34, 132, 89, 6, 122, 55, 0, 8, 67, 64, 145, 82, 48, 145, 0, 10,
+			199, 36, 229, 5, 72, 197, 68, 20, 65, 20, 72, 32, 19, 12, 20, 197, 74, 4, 128, 107, 35, 55, 113, 6, 55, 137, 57, 13, 0, 18,
+			71, 20, 193, 67, 81, 35, 196, 20, 113, 55, 122, 49, 47, 34, 139, 72, 0, 17, 70, 5, 50, 65, 80, 144, 192, 141, 91, 124, 6, 35,
+			47, 124, 49, 0, 17, 71, 4, 195, 5, 52, 19, 132, 20, 35, 55, 13, 65, 35, 50, 72, 0, 0, 19, 4, 105, 116, 39, 115, 124, 47,
+			89, 107, 35, 72, 0, 78, 81, 104, 97, 100, 32, 8, 67, 16, 245, 192, 72, 138, 0, 0, 14, 70, 44, 83, 132, 20, 195, 0, 49, 122,
+			50, 72, 118, 0, 0, 10, 68, 76, 243, 212, 32, 89, 137, 86, 0, 13, 69, 65, 33, 67, 37, 48, 48, 34, 141, 89, 132, 0, 6, 195,
+			25, 64, 65, 13, 0, 15, 70, 92, 128, 84, 56, 245, 0, 58, 128, 47, 50, 126, 47, 0, 18, 72, 72, 144, 207, 12, 129, 84, 20, 64,
+			34, 124, 49, 13, 91, 141, 72, 0, 5, 194, 4, 80, 13, 0, 11, 67, 32, 245, 192, 4, 107, 138, 0, 10, 47, 12, 67, 4, 230, 64,
+			4, 122, 50, 37, 0, 34, 46, 9, 67, 80, 134, 64, 4, 86, 140, 0, 14, 69, 56, 144, 197, 81, 144, 50, 140, 89, 13, 47, 37, 0,
+			15, 69, 9, 84, 201, 49, 144, 71, 124, 88, 113, 55, 124, 0, 32, 0, 0, 16, 70, 88, 144, 207, 16, 147, 128, 84, 140, 49, 13, 72,
+			125, 50, 0, 16, 70, 64, 242, 197, 52, 243, 128, 48, 139, 49, 141, 65, 126, 50, 0, 10, 67, 80, 147, 153, 47, 140, 50, 37, 0, 14,
+			68, 72, 83, 73, 80, 34, 132, 65, 6, 124, 47, 0, 36, 12, 68, 72, 83, 73, 80, 34, 132, 65, 124, 47, 0, 9, 198, 64, 192, 84,
+			60, 243, 128, 17, 16, 70, 32, 20, 132, 12, 244, 25, 107, 130, 72, 49, 126, 48, 37, 0, 0, 7, 196, 76, 21, 143, 100, 17, 18, 71,
+			80, 83, 5, 64, 21, 8, 100, 47, 13, 55, 122, 48, 13, 87, 37, 0, 16, 70, 76, 243, 21, 80, 147, 206, 89, 13, 55, 137, 91, 13,
+			50, 0, 16, 70, 56, 81, 193, 80, 147, 206, 50, 113, 81, 141, 91, 13, 50, 0, 17, 70, 12, 149, 1, 80, 147, 206, 89, 140, 47, 6,
+			141, 91, 13, 50, 0, 0, 11, 68, 76, 243, 129, 72, 89, 139, 50, 130, 0, 10, 67, 76, 147, 15, 89, 140, 55, 139, 0, 14, 69, 64,
+			19, 20, 73, 144, 48, 133, 55, 47, 34, 124, 0, 11, 200, 12, 130, 77, 64, 19, 154, 20, 80, 67, 7, 196, 84, 226, 3, 72, 13, 0,
+			12, 69, 12, 243, 142, 61, 32, 49, 126, 50, 114, 0, 13, 70, 12, 18, 83, 20, 19, 0, 49, 35, 91, 118, 0, 12, 68, 80, 17, 213,
+			76, 47, 141, 81, 13, 89, 0, 0, 15, 70, 64, 84, 146, 36, 84, 128, 48, 122, 34, 124, 6, 141, 0, 14, 70, 49, 84, 211, 36, 84,
+			128, 55, 129, 89, 124, 141, 0, 13, 69, 80, 129, 83, 37, 48, 87, 132, 89, 124, 89, 0, 0, 16, 70, 12, 244, 143, 56, 85, 0, 49,
+			126, 34, 13, 50, 122, 47, 0, 14, 70, 8, 245, 81, 84, 85, 0, 71, 137, 49, 6, 141, 0, 7, 66, 5, 80, 4, 139, 0, 10, 67,
+			5, 32, 66, 35, 34, 13, 71, 0, 6, 195, 85, 48, 70, 13, 0, 10, 67, 72, 83, 143, 34, 132, 50, 139, 0, 20, 71, 76, 84, 143,
+			80, 243, 137, 56, 89, 122, 34, 13, 47, 6, 139, 50, 124, 50, 0, 11, 68, 72, 85, 133, 72, 34, 113, 84, 145, 0, 0, 15, 70, 4,
+			197, 8, 61, 81, 200, 126, 55, 86, 6, 139, 0, 8, 21, 72, 45, 148, 135, 101, 164, 212, 4, 224, 49, 131, 34, 81, 124, 89, 47, 6,
+			121, 50, 0, 22, 72, 29, 80, 84, 20, 208, 76, 4, 224, 81, 58, 121, 47, 124, 65, 6, 121, 55, 13, 50, 0, 0, 0, 14, 69, 52,
+			145, 213, 20, 192, 65, 132, 100, 6, 122, 55, 0, 12, 68, 32, 20, 212, 100, 107, 141, 89, 47, 124, 0, 0, 14, 4, 95, 54, 48, 111,
+			89, 6, 124, 49, 89, 47, 144, 0, 10, 1, 126, 47, 124, 55, 72, 13, 0, 27, 0, 12, 4, 105, 116, 39, 100, 2, 124, 47, 13, 72,
+			0, 8, 197, 12, 86, 76, 60, 224, 66, 8, 197, 52, 20, 143, 60, 224, 17, 13, 69, 12, 245, 80, 60, 224, 49, 137, 48, 126, 50, 0,
+			15, 4, 95, 101, 116, 104, 132, 87, 124, 6, 126, 48, 124, 49, 0, 13, 4, 95, 116, 108, 100, 47, 6, 124, 55, 72, 13, 0, 0, 9,
+			198, 12, 243, 142, 60, 195, 25, 65, 14, 69, 77, 64, 83, 37, 48, 89, 47, 141, 89, 125, 89, 0, 11, 68, 64, 85, 9, 80, 48, 13,
+			47, 132, 0, 14, 69, 4, 194, 66, 37, 48, 35, 55, 13, 71, 140, 88, 0, 0, 11, 67, 85, 3, 206, 13, 48, 126, 50, 0, 74, 11,
+			68, 77, 84, 200, 36, 89, 137, 91, 37, 0, 12, 68, 76, 81, 213, 20, 89, 122, 81, 58, 141, 0, 10, 68, 21, 148, 137, 20, 144, 34,
+			37, 0, 16, 70, 12, 240, 207, 57, 85, 0, 49, 139, 49, 13, 50, 129, 47, 0, 0, 9, 67, 21, 96, 64, 132, 84, 13, 0, 22, 72,
+			32, 148, 208, 4, 226, 79, 48, 16, 107, 124, 89, 48, 13, 50, 57, 6, 139, 55, 13, 0, 11, 200, 4, 229, 1, 72, 53, 9, 12, 16,
+			66, 19, 71, 44, 147, 15, 52, 85, 5, 72, 49, 124, 55, 6, 126, 65, 113, 47, 114, 0, 0, 12, 69, 65, 85, 20, 36, 224, 48, 117,
+			19, 50, 0, 13, 69, 12, 240, 207, 60, 224, 49, 13, 49, 137, 50, 0, 19, 71, 4, 208, 82, 100, 195, 9, 76, 35, 65, 13, 34, 6,
+			124, 55, 124, 89, 0, 0, 15, 70, 88, 145, 206, 21, 69, 5, 84, 113, 50, 57, 122, 47, 0, 0, 11, 68, 80, 130, 78, 20, 4, 86,
+			140, 50, 0, 12, 68, 48, 83, 206, 20, 55, 132, 6, 139, 50, 0, 11, 68, 77, 80, 86, 20, 89, 58, 121, 84, 0, 12, 69, 52, 148,
+			211, 20, 64, 65, 124, 89, 47, 0, 15, 69, 28, 147, 5, 4, 64, 81, 6, 124, 55, 124, 35, 72, 0, 13, 202, 24, 244, 133, 44, 227,
+			215, 48, 81, 7, 20, 66, 12, 69, 8, 144, 83, 20, 64, 71, 147, 89, 47, 0, 0, 12, 200, 72, 245, 78, 17, 64, 66, 48, 80, 15,
+			66, 18, 71, 64, 84, 137, 52, 85, 5, 72, 48, 13, 34, 124, 65, 113, 47, 114, 0, 17, 71, 64, 20, 211, 20, 225, 197, 72, 48, 35,
+			89, 113, 50, 75, 114, 0, 18, 71, 64, 20, 129, 52, 85, 5, 72, 48, 13, 34, 35, 65, 113, 47, 114, 0, 11, 200, 52, 85, 1, 77,
+			64, 66, 48, 80, 15, 21, 72, 32, 244, 208, 37, 64, 66, 48, 80, 107, 126, 89, 48, 6, 124, 47, 13, 71, 118, 0, 18, 71, 8, 20,
+			143, 52, 85, 5, 72, 71, 13, 34, 126, 65, 113, 47, 114, 0, 18, 72, 4, 195, 5, 28, 144, 78, 12, 80, 119, 55, 132, 75, 13, 50,
+			89, 0, 0, 9, 198, 44, 21, 18, 36, 224, 64, 17, 11, 68, 37, 48, 65, 12, 140, 89, 13, 49, 0, 16, 70, 4, 229, 9, 29, 80,
+			64, 35, 50, 47, 6, 132, 81, 13, 0, 13, 69, 13, 85, 15, 24, 96, 49, 129, 47, 126, 83, 0, 0, 27, 68, 29, 32, 78, 16, 81,
+			34, 6, 35, 50, 72, 89, 13, 55, 6, 132, 50, 0, 81, 115, 97, 108, 105, 110, 101, 32, 20, 68, 92, 245, 78, 16, 58, 4, 138, 50,
+			72, 15, 6, 129, 48, 0, 81, 117, 112, 32, 23, 68, 92, 245, 78, 16, 58, 4, 138, 50, 72, 15, 6, 72, 138, 50, 0, 81, 100, 111,
+			119, 110, 32, 13, 68, 92, 245, 78, 16, 58, 138, 50, 72, 0, 38, 46, 11, 68, 92, 245, 78, 16, 58, 137, 50, 72, 0, 0, 12, 68,
+			56, 243, 206, 20, 50, 139, 58, 128, 50, 0, 14, 69, 52, 244, 211, 4, 64, 65, 139, 89, 6, 121, 72, 0, 10, 68, 72, 81, 83, 20,
+			34, 132, 89, 0, 13, 68, 48, 83, 204, 4, 55, 132, 6, 139, 55, 13, 0, 16, 70, 85, 68, 133, 12, 133, 0, 57, 137, 47, 34, 122,
+			99, 47, 0, 0, 11, 67, 84, 225, 15, 129, 50, 72, 6, 137, 0, 16, 70, 52, 16, 200, 37, 51, 79, 65, 119, 76, 124, 88, 65, 139,
+			0, 6, 195, 20, 97, 128, 13, 0, 9, 198, 64, 19, 132, 61, 32, 64, 66, 15, 70, 52, 147, 133, 73, 96, 64, 65, 113, 50, 131, 84,
+			13, 0, 13, 70, 16, 245, 71, 4, 195, 0, 72, 137, 81, 118, 0, 15, 70, 8, 20, 130, 5, 32, 64, 71, 130, 71, 13, 34, 13, 0,
+			16, 70, 56, 144, 71, 5, 32, 64, 50, 140, 6, 35, 81, 34, 13, 0, 9, 198, 5, 81, 213, 77, 64, 64, 66, 15, 70, 92, 19, 19,
+			4, 195, 0, 58, 133, 55, 89, 133, 55, 0, 16, 70, 77, 67, 205, 5, 64, 64, 89, 47, 139, 65, 13, 47, 13, 0, 9, 198, 72, 240,
+			149, 77, 64, 64, 66, 15, 70, 32, 83, 12, 85, 96, 64, 107, 122, 55, 13, 84, 13, 0, 15, 70, 12, 131, 204, 21, 32, 64, 49, 126,
+			55, 13, 34, 13, 0, 17, 70, 12, 19, 4, 21, 32, 64, 49, 126, 55, 72, 6, 143, 34, 13, 0, 22, 73, 9, 84, 133, 5, 80, 210,
+			4, 54, 64, 71, 57, 146, 6, 126, 49, 34, 13, 89, 37, 0, 0, 16, 70, 12, 243, 65, 56, 50, 5, 49, 13, 65, 35, 50, 76, 37,
+			0, 15, 70, 4, 36, 201, 57, 66, 5, 35, 71, 89, 124, 50, 87, 0, 6, 195, 53, 48, 65, 13, 0, 13, 69, 8, 244, 133, 48, 192,
+			71, 13, 34, 122, 55, 0, 13, 69, 76, 195, 213, 28, 128, 89, 55, 129, 83, 0, 36, 19, 71, 72, 84, 21, 80, 16, 140, 20, 34, 122,
+			48, 57, 137, 47, 13, 71, 118, 0, 13, 69, 72, 83, 9, 76, 128, 34, 122, 55, 113, 91, 0, 19, 71, 65, 35, 205, 20, 224, 68, 20,
+			48, 34, 126, 65, 13, 50, 6, 121, 72, 0, 16, 70, 64, 244, 148, 20, 225, 0, 48, 136, 47, 6, 122, 50, 72, 0, 20, 72, 32, 19,
+			12, 20, 197, 73, 4, 128, 107, 35, 55, 113, 6, 55, 137, 57, 13, 0, 0, 13, 69, 76, 147, 162, 4, 64, 91, 113, 50, 141, 72, 0,
+			0, 7, 196, 80, 16, 143, 60, 66, 13, 69, 24, 20, 212, 20, 224, 83, 120, 89, 13, 50, 0, 0, 9, 198, 28, 19, 12, 21, 34, 65,
+			15, 9, 198, 4, 229, 9, 52, 243, 153, 66, 0, 11, 69, 80, 131, 213, 28, 128, 4, 86, 139, 0, 10, 66, 8, 80, 71, 132, 0, 35,
+			46, 76, 19, 66, 16, 16, 72, 119, 84, 124, 50, 76, 37, 0, 81, 118, 105, 110, 99, 105, 32, 13, 69, 72, 81, 9, 4, 192, 34, 132,
+			72, 147, 55, 0, 13, 69, 12, 20, 9, 76, 128, 49, 119, 48, 132, 91, 0, 13, 68, 9, 86, 15, 52, 71, 129, 49, 89, 13, 65, 0,
+			0, 12, 68, 64, 84, 133, 104, 48, 114, 34, 122, 88, 0, 10, 67, 61, 66, 83, 139, 47, 124, 89, 0, 9, 67, 81, 115, 211, 47, 137,
+			88, 0, 16, 70, 80, 84, 146, 36, 98, 67, 47, 114, 34, 124, 83, 124, 49, 0, 9, 198, 64, 21, 8, 21, 66, 67, 17, 15, 70, 12,
+			21, 8, 60, 194, 67, 49, 35, 87, 55, 124, 49, 0, 0, 7, 196, 21, 113, 69, 44, 20, 15, 69, 12, 243, 150, 20, 224, 49, 127, 50,
+			84, 6, 132, 50, 0, 17, 70, 5, 21, 69, 17, 80, 212, 35, 49, 58, 125, 72, 129, 49, 47, 0, 6, 195, 77, 50, 80, 13, 0, 10,
+			67, 92, 145, 137, 58, 140, 83, 140, 0, 0, 15, 70, 92, 245, 78, 16, 81, 0, 58, 137, 50, 72, 125, 72, 0, 0, 10, 67, 77, 34,
+			64, 89, 34, 4, 132, 0, 10, 68, 44, 131, 69, 72, 49, 65, 145, 0, 10, 67, 80, 241, 15, 47, 13, 72, 137, 0, 17, 70, 52, 244,
+			209, 84, 149, 15, 65, 13, 89, 49, 6, 132, 47, 139, 0, 0, 12, 68, 4, 115, 133, 76, 35, 81, 50, 13, 89, 0, 0, 13, 70, 32,
+			243, 211, 36, 84, 128, 107, 137, 90, 114, 0, 15, 70, 53, 144, 78, 52, 20, 128, 65, 57, 121, 50, 65, 130, 0, 15, 70, 80, 147, 73,
+			16, 84, 128, 47, 124, 65, 124, 72, 114, 0, 14, 70, 76, 227, 207, 44, 84, 128, 89, 50, 137, 49, 114, 0, 9, 67, 69, 83, 201, 49,
+			58, 121, 0, 15, 70, 65, 33, 77, 36, 84, 128, 48, 34, 13, 65, 145, 0, 103, 15, 70, 65, 33, 77, 36, 84, 128, 48, 34, 122, 65,
+			124, 114, 0, 16, 70, 64, 243, 9, 80, 84, 128, 48, 13, 55, 6, 140, 47, 114, 0, 15, 70, 61, 85, 12, 36, 84, 128, 6, 138, 47,
+			55, 4, 148, 0, 16, 70, 60, 53, 15, 8, 84, 128, 126, 49, 47, 6, 139, 71, 114, 0, 10, 67, 40, 81, 9, 75, 122, 72, 140, 0,
+			15, 70, 36, 51, 206, 8, 20, 128, 140, 49, 126, 50, 71, 130, 0, 14, 70, 16, 244, 211, 36, 84, 128, 72, 126, 89, 124, 141, 0, 15,
+			70, 12, 21, 5, 72, 84, 128, 49, 141, 47, 114, 34, 114, 0, 14, 70, 12, 20, 200, 36, 84, 128, 49, 35, 91, 6, 145, 0, 14, 70,
+			4, 227, 212, 32, 84, 128, 119, 50, 129, 86, 114, 0, 0, 0, 15, 70, 16, 80, 143, 72, 18, 0, 72, 122, 71, 13, 34, 13, 0, 11,
+			68, 68, 21, 1, 72, 49, 35, 47, 130, 0, 11, 68, 48, 17, 197, 72, 55, 121, 81, 114, 0, 7, 196, 44, 21, 1, 72, 17, 11, 68,
+			25, 33, 69, 72, 83, 34, 132, 114, 0, 0, 20, 67, 92, 19, 12, 58, 6, 133, 55, 89, 47, 34, 4, 132, 47, 0, 81, 115, 116, 32,
+			15, 70, 76, 48, 76, 64, 83, 0, 89, 49, 35, 55, 48, 118, 0, 9, 67, 64, 243, 12, 48, 139, 55, 0, 22, 72, 28, 20, 135, 4,
+			229, 21, 4, 224, 81, 130, 81, 6, 35, 50, 76, 137, 13, 50, 0, 103, 11, 200, 28, 20, 135, 4, 229, 21, 4, 224, 66, 0, 18, 71,
+			72, 243, 211, 21, 97, 76, 80, 34, 139, 88, 13, 84, 122, 55, 47, 0, 0, 13, 69, 5, 33, 217, 48, 192, 130, 81, 38, 140, 55, 0,
+			16, 70, 80, 85, 1, 57, 84, 192, 47, 122, 47, 13, 50, 13, 89, 0, 9, 197, 72, 80, 193, 48, 192, 66, 36, 13, 69, 72, 80, 193,
+			48, 192, 34, 132, 49, 133, 55, 0, 14, 70, 64, 149, 5, 61, 84, 192, 48, 124, 47, 144, 89, 0, 16, 70, 64, 81, 193, 77, 84, 192,
+			48, 122, 81, 13, 89, 13, 89, 0, 15, 70, 13, 148, 18, 21, 52, 192, 89, 140, 48, 34, 13, 89, 0, 14, 70, 4, 230, 9, 61, 84,
+			192, 35, 68, 91, 13, 89, 0, 0, 12, 67, 9, 85, 0, 4, 71, 129, 47, 0, 8, 46, 18, 72, 64, 130, 76, 37, 4, 9, 56, 80,
+			83, 124, 55, 113, 48, 132, 50, 0, 20, 71, 12, 243, 15, 72, 17, 1, 56, 49, 126, 55, 114, 34, 6, 121, 72, 13, 50, 0, 20, 72,
+			77, 68, 153, 12, 131, 137, 56, 80, 89, 47, 34, 6, 124, 49, 50, 132, 50, 0, 17, 71, 12, 128, 82, 48, 21, 1, 56, 91, 130, 55,
+			13, 47, 13, 50, 0, 0, 16, 70, 88, 149, 18, 36, 243, 0, 84, 124, 47, 34, 132, 13, 55, 0, 13, 69, 48, 144, 200, 20, 224, 55,
+			140, 49, 13, 50, 0, 14, 69, 9, 83, 137, 60, 224, 71, 129, 50, 113, 13, 50, 0, 0, 9, 198, 4, 225, 197, 48, 146, 193, 66, 17,
+			70, 56, 80, 146, 5, 50, 193, 50, 13, 71, 34, 35, 89, 49, 13, 0, 0, 15, 69, 64, 243, 9, 76, 128, 48, 139, 55, 124, 91, 0,
+			41, 46, 11, 68, 76, 21, 68, 36, 89, 138, 72, 37, 0, 9, 197, 16, 85, 1, 36, 192, 103, 66, 11, 67, 13, 144, 78, 89, 140, 6,
+			35, 50, 0, 0, 17, 71, 24, 244, 146, 21, 53, 5, 72, 83, 126, 34, 125, 89, 47, 114, 0, 16, 70, 88, 244, 148, 36, 49, 83, 84,
+			135, 47, 124, 89, 132, 88, 0, 10, 199, 76, 84, 85, 21, 53, 5, 72, 66, 12, 68, 56, 146, 207, 56, 50, 140, 49, 126, 50, 0, 0,
+			14, 69, 16, 80, 204, 4, 224, 72, 122, 49, 55, 119, 50, 0, 14, 69, 4, 194, 83, 60, 224, 35, 55, 124, 89, 13, 50, 0, 12, 68,
+			12, 243, 135, 60, 49, 126, 68, 81, 139, 0, 14, 69, 77, 83, 148, 4, 224, 89, 129, 50, 47, 35, 50, 0, 12, 69, 61, 36, 8, 4,
+			224, 135, 83, 13, 50, 0, 11, 67, 61, 1, 68, 126, 48, 6, 122, 72, 0, 8, 197, 48, 17, 207, 60, 224, 17, 0, 21, 67, 93, 114,
+			73, 72, 129, 71, 118, 57, 137, 72, 129, 71, 118, 57, 137, 47, 6, 137, 0, 7, 196, 57, 148, 19, 16, 13, 4, 193, 128, 43, 0, 0,
+			16, 71, 28, 19, 12, 4, 114, 5, 72, 81, 35, 55, 13, 81, 114, 0, 18, 70, 5, 67, 1, 57, 66, 83, 35, 47, 55, 6, 35, 50,
+			47, 124, 89, 0, 21, 72, 77, 67, 206, 20, 129, 78, 28, 80, 89, 47, 4, 139, 50, 107, 6, 122, 50, 75, 0, 16, 70, 77, 148, 8,
+			36, 194, 83, 89, 124, 83, 13, 55, 125, 89, 0, 18, 72, 8, 192, 78, 12, 208, 78, 28, 80, 71, 55, 13, 65, 126, 50, 90, 0, 19,
+			71, 4, 198, 136, 20, 147, 69, 72, 121, 55, 47, 89, 107, 140, 65, 114, 0, 103, 17, 71, 4, 198, 136, 20, 147, 69, 72, 35, 55, 47,
+			89, 140, 65, 114, 0, 0, 14, 70, 8, 192, 78, 12, 129, 64, 71, 55, 121, 50, 91, 0, 14, 70, 76, 145, 206, 4, 113, 64, 89, 140,
+			50, 113, 75, 0, 15, 70, 64, 148, 5, 81, 65, 64, 48, 124, 48, 6, 122, 47, 0, 17, 70, 56, 18, 86, 21, 65, 64, 50, 140, 6,
+			132, 84, 13, 47, 141, 0, 14, 70, 48, 82, 83, 85, 33, 64, 55, 132, 90, 114, 0, 103, 13, 70, 48, 82, 83, 85, 33, 64, 55, 122,
+			90, 114, 0, 14, 70, 12, 245, 84, 85, 33, 64, 49, 137, 47, 6, 146, 0, 15, 70, 9, 34, 79, 12, 129, 64, 71, 34, 132, 6, 139,
+			91, 0, 0, 19, 71, 52, 144, 210, 61, 51, 198, 80, 65, 140, 49, 34, 13, 89, 126, 83, 47, 0, 12, 201, 53, 83, 20, 37, 3, 5,
+			96, 84, 128, 65, 0, 16, 70, 24, 84, 135, 85, 51, 206, 83, 131, 81, 13, 89, 13, 50, 0, 11, 68, 5, 34, 83, 20, 119, 34, 140,
+			88, 0, 6, 194, 17, 32, 13, 42, 11, 66, 17, 32, 72, 126, 49, 47, 114, 0, 24, 0, 0, 11, 67, 85, 32, 76, 57, 137, 13, 34,
+			118, 0, 18, 72, 12, 128, 82, 48, 84, 212, 60, 224, 76, 130, 55, 89, 47, 13, 50, 0, 14, 70, 24, 147, 133, 77, 49, 64, 83, 113,
+			50, 122, 89, 0, 18, 67, 24, 21, 88, 83, 4, 139, 15, 48, 6, 121, 0, 81, 112, 97, 115, 32, 8, 67, 24, 21, 88, 83, 139, 0,
+			0, 11, 67, 52, 17, 5, 65, 4, 141, 72, 0, 10, 13, 67, 52, 17, 5, 65, 4, 141, 72, 0, 10, 46, 76, 9, 67, 8, 81, 5,
+			71, 132, 72, 0, 10, 67, 76, 241, 129, 89, 139, 83, 13, 0, 6, 195, 21, 97, 193, 13, 0, 10, 199, 92, 244, 139, 80, 16, 140, 20,
+			15, 15, 70, 92, 147, 132, 36, 225, 192, 58, 140, 50, 72, 124, 68, 0, 11, 67, 85, 64, 78, 137, 47, 6, 35, 50, 0, 17, 71, 80,
+			147, 69, 80, 16, 140, 20, 47, 140, 65, 47, 141, 71, 118, 0, 17, 71, 64, 147, 133, 5, 4, 12, 20, 48, 6, 140, 50, 35, 48, 118,
+			0, 21, 71, 64, 83, 137, 57, 53, 76, 4, 48, 13, 50, 6, 124, 50, 89, 57, 117, 55, 13, 0, 20, 71, 29, 80, 67, 4, 211, 204,
+			20, 81, 58, 121, 49, 119, 65, 6, 139, 55, 132, 0, 18, 71, 4, 67, 73, 72, 16, 140, 20, 35, 72, 65, 13, 34, 13, 71, 118, 0,
+			0, 10, 67, 65, 35, 211, 48, 34, 139, 88, 0, 13, 69, 24, 21, 8, 60, 208, 83, 35, 86, 13, 65, 0, 17, 71, 5, 48, 197, 73,
+			64, 73, 56, 35, 89, 114, 47, 6, 141, 50, 0, 6, 195, 21, 5, 0, 13, 0, 14, 69, 28, 144, 147, 60, 224, 81, 124, 71, 89, 13,
+			50, 0, 15, 70, 12, 19, 80, 8, 83, 12, 49, 35, 65, 71, 13, 55, 0, 13, 68, 64, 144, 78, 60, 48, 124, 6, 35, 50, 139, 0,
+			15, 70, 24, 244, 133, 80, 83, 12, 83, 136, 47, 6, 122, 55, 0, 0, 10, 67, 12, 17, 133, 49, 35, 83, 141, 0, 0, 13, 68, 52,
+			144, 77, 36, 65, 140, 6, 35, 65, 37, 0, 17, 70, 65, 35, 212, 136, 120, 128, 112, 114, 111, 116, 101, 103, 101, 0, 29, 12, 69, 16,
+			145, 83, 20, 192, 72, 132, 88, 118, 0, 5, 194, 4, 144, 13, 0, 15, 70, 21, 97, 78, 36, 225, 211, 132, 84, 50, 124, 68, 88, 0,
+			0, 8, 4, 95, 111, 114, 100, 87, 0, 0, 0, 23, 73, 12, 243, 145, 84, 148, 212, 4, 67, 210, 49, 126, 50, 49, 6, 132, 89, 47,
+			13, 72, 136, 0, 15, 69, 4, 192, 133, 37, 64, 133, 55, 71, 6, 132, 124, 47, 0, 15, 4, 95, 109, 99, 110, 65, 6, 35, 49, 34,
+			4, 126, 50, 0, 0, 10, 68, 21, 83, 5, 72, 142, 55, 114, 0, 11, 68, 80, 147, 79, 72, 47, 132, 65, 136, 0, 13, 70, 72, 19,
+			5, 36, 114, 0, 34, 121, 55, 37, 0, 17, 70, 12, 243, 131, 21, 37, 15, 49, 13, 50, 76, 6, 143, 47, 139, 0, 19, 72, 12, 132,
+			143, 52, 244, 207, 52, 80, 49, 34, 139, 65, 13, 89, 139, 65, 0, 6, 195, 12, 85, 0, 13, 0, 15, 70, 72, 85, 18, 36, 19, 0,
+			34, 132, 47, 34, 147, 55, 0, 10, 67, 64, 147, 148, 48, 140, 50, 47, 0, 8, 197, 12, 20, 133, 21, 32, 17, 12, 68, 5, 67, 1,
+			76, 35, 47, 55, 13, 89, 0, 0, 12, 68, 61, 97, 82, 80, 139, 84, 6, 131, 47, 0, 11, 68, 52, 80, 78, 80, 65, 122, 50, 47,
+			0, 11, 68, 48, 80, 78, 80, 55, 122, 50, 47, 0, 15, 70, 32, 243, 19, 80, 84, 128, 107, 139, 55, 89, 47, 114, 0, 0, 20, 71,
+			48, 245, 73, 76, 144, 78, 4, 55, 137, 4, 132, 88, 132, 6, 35, 50, 13, 0, 9, 198, 4, 193, 201, 21, 36, 192, 66, 9, 198, 64,
+			85, 9, 80, 147, 206, 17, 17, 71, 52, 147, 5, 77, 67, 206, 20, 65, 140, 55, 89, 47, 139, 50, 0, 18, 70, 29, 32, 78, 17, 51,
+			206, 81, 34, 6, 35, 50, 72, 89, 129, 50, 0, 13, 70, 28, 245, 82, 52, 85, 0, 81, 146, 65, 141, 0, 9, 198, 24, 148, 200, 56,
+			85, 0, 15, 25, 74, 5, 4, 18, 61, 130, 77, 5, 65, 76, 100, 119, 48, 34, 126, 49, 89, 124, 65, 13, 47, 55, 37, 0, 0, 24,
+			6, 110, 195, 180, 116, 114, 101, 50, 139, 47, 34, 13, 6, 72, 121, 65, 0, 81, 100, 97, 109, 101, 32, 0, 12, 68, 88, 81, 193, 76,
+			84, 141, 81, 13, 89, 0, 20, 72, 5, 35, 65, 28, 81, 4, 60, 224, 130, 65, 119, 81, 6, 122, 72, 13, 50, 0, 17, 70, 81, 34,
+			83, 69, 81, 76, 47, 34, 124, 89, 49, 6, 122, 55, 0, 20, 72, 76, 129, 78, 4, 226, 71, 4, 224, 91, 125, 50, 35, 50, 124, 81,
+			13, 50, 0, 10, 68, 64, 147, 213, 76, 48, 147, 89, 0, 13, 69, 28, 86, 83, 21, 32, 81, 140, 88, 114, 0, 103, 12, 69, 28, 86,
+			83, 21, 32, 81, 132, 88, 114, 0, 12, 68, 8, 20, 201, 76, 71, 141, 89, 124, 89, 0, 0, 11, 68, 12, 20, 143, 48, 49, 35, 34,
+			118, 0, 17, 70, 52, 243, 148, 21, 33, 89, 65, 126, 50, 47, 13, 34, 6, 141, 0, 0, 17, 70, 4, 211, 206, 29, 53, 0, 119, 65,
+			129, 68, 89, 47, 0, 74, 10, 13, 69, 32, 19, 73, 76, 128, 107, 141, 65, 124, 91, 0, 15, 70, 56, 149, 18, 61, 84, 192, 50, 140,
+			47, 34, 13, 89, 0, 13, 69, 33, 86, 154, 4, 128, 107, 13, 88, 6, 121, 0, 0, 19, 71, 29, 85, 9, 21, 36, 133, 104, 81, 137,
+			47, 57, 6, 122, 34, 122, 88, 0, 18, 72, 24, 243, 11, 21, 53, 15, 56, 80, 83, 139, 49, 89, 47, 139, 50, 0, 19, 71, 12, 83,
+			148, 85, 34, 79, 56, 89, 122, 50, 76, 6, 146, 34, 144, 50, 0, 15, 4, 95, 55, 48, 111, 89, 6, 122, 84, 13, 50, 47, 144, 0,
+			0, 13, 69, 72, 81, 201, 60, 224, 34, 132, 75, 13, 50, 0, 19, 71, 52, 18, 143, 72, 67, 205, 60, 65, 141, 75, 114, 72, 6, 139,
+			65, 139, 0, 0, 18, 70, 72, 80, 68, 60, 227, 25, 4, 34, 132, 72, 6, 139, 50, 55, 124, 0, 18, 72, 24, 193, 68, 28, 83, 9,
+			56, 112, 83, 55, 122, 75, 55, 124, 68, 0, 12, 68, 12, 240, 143, 48, 49, 139, 71, 126, 55, 0, 12, 68, 12, 195, 212, 32, 49, 55,
+			139, 86, 0, 36, 9, 198, 4, 195, 19, 64, 144, 197, 65, 0, 14, 69, 105, 84, 137, 12, 128, 88, 57, 117, 34, 124, 49, 0, 12, 69,
+			5, 35, 65, 28, 128, 130, 65, 6, 121, 0, 18, 71, 64, 20, 211, 21, 36, 194, 100, 48, 35, 89, 114, 88, 71, 6, 140, 0, 10, 68,
+			4, 32, 133, 100, 35, 71, 37, 0, 6, 194, 4, 160, 13, 41, 0, 12, 68, 17, 147, 1, 56, 72, 124, 55, 13, 50, 0, 10, 199, 81,
+			32, 70, 4, 193, 193, 72, 17, 9, 198, 77, 64, 67, 12, 21, 15, 17, 0, 14, 69, 8, 133, 84, 4, 224, 71, 137, 47, 6, 35, 50,
+			0, 8, 197, 88, 147, 204, 36, 224, 66, 0, 15, 70, 12, 243, 142, 20, 195, 25, 49, 126, 50, 13, 55, 37, 0, 21, 73, 18, 32, 207,
+			48, 193, 84, 4, 113, 64, 72, 141, 49, 126, 55, 47, 6, 121, 90, 0, 0, 0, 18, 72, 12, 129, 83, 5, 1, 65, 44, 80, 76, 122,
+			89, 13, 48, 132, 49, 0, 19, 72, 5, 4, 18, 20, 229, 9, 12, 80, 119, 48, 34, 122, 50, 108, 124, 89, 0, 0, 13, 68, 4, 211,
+			206, 28, 119, 65, 129, 68, 0, 74, 10, 16, 70, 69, 82, 74, 61, 65, 64, 49, 132, 6, 107, 139, 47, 141, 0, 14, 70, 76, 85, 137,
+			48, 193, 64, 89, 13, 84, 124, 55, 0, 14, 70, 76, 49, 80, 81, 33, 64, 89, 122, 48, 47, 114, 0, 15, 70, 52, 16, 200, 21, 65,
+			64, 65, 119, 91, 122, 47, 37, 0, 16, 70, 52, 16, 193, 9, 33, 64, 65, 13, 49, 121, 71, 34, 13, 0, 14, 70, 28, 20, 146, 61,
+			65, 64, 81, 119, 34, 126, 47, 0, 15, 70, 20, 228, 143, 85, 65, 64, 126, 50, 34, 6, 137, 47, 0, 14, 70, 8, 150, 154, 5, 33,
+			64, 71, 125, 88, 6, 130, 0, 0, 15, 70, 76, 145, 206, 60, 97, 128, 89, 6, 140, 50, 126, 83, 0, 15, 70, 76, 129, 82, 36, 97,
+			128, 91, 6, 122, 34, 113, 83, 0, 18, 71, 52, 148, 195, 72, 80, 78, 80, 65, 124, 89, 49, 34, 144, 50, 47, 0, 0, 12, 68, 76,
+			243, 137, 4, 89, 126, 50, 57, 13, 0, 11, 68, 20, 194, 83, 20, 113, 55, 132, 88, 0, 11, 68, 12, 131, 15, 20, 49, 55, 139, 37,
+			0, 16, 70, 93, 148, 201, 93, 145, 192, 58, 124, 88, 132, 58, 124, 81, 0, 12, 68, 85, 48, 71, 20, 57, 137, 89, 113, 75, 0, 13,
+			68, 72, 85, 83, 20, 34, 132, 6, 57, 137, 88, 0, 9, 198, 8, 197, 68, 28, 83, 206, 16, 0, 10, 67, 100, 245, 64, 57, 137, 0,
+			72, 32, 20, 71, 92, 148, 195, 60, 228, 201, 56, 58, 113, 89, 49, 6, 126, 50, 89, 113, 50, 0, 18, 71, 76, 80, 210, 21, 66, 79,
+			56, 89, 113, 49, 34, 132, 91, 13, 50, 0, 0, 9, 198, 65, 81, 82, 36, 193, 64, 16, 13, 70, 76, 19, 201, 73, 49, 64, 89, 144,
+			91, 13, 0, 16, 70, 20, 228, 137, 69, 81, 64, 122, 50, 34, 6, 132, 49, 141, 0, 17, 70, 36, 224, 197, 57, 49, 64, 124, 50, 89,
+			6, 122, 50, 89, 0, 36, 15, 70, 16, 148, 197, 5, 49, 64, 72, 124, 88, 6, 132, 88, 0, 14, 70, 12, 193, 65, 57, 49, 64, 49,
+			55, 122, 50, 88, 0, 15, 70, 4, 229, 9, 69, 81, 64, 35, 50, 47, 6, 132, 49, 0, 0, 17, 71, 5, 32, 200, 36, 32, 76, 16,
+			130, 76, 124, 71, 133, 55, 72, 0, 0, 14, 70, 92, 20, 146, 36, 225, 192, 58, 135, 34, 124, 68, 0, 15, 71, 76, 128, 82, 20, 16,
+			140, 20, 91, 143, 13, 71, 118, 0, 14, 70, 72, 82, 78, 36, 225, 192, 34, 141, 50, 124, 68, 0, 17, 71, 52, 245, 83, 80, 16, 200,
+			20, 65, 13, 89, 47, 6, 120, 91, 0, 16, 70, 21, 21, 65, 80, 147, 206, 113, 49, 58, 141, 90, 13, 50, 0, 17, 71, 12, 128, 77,
+			60, 210, 76, 20, 49, 35, 65, 13, 65, 140, 55, 0, 11, 199, 5, 69, 18, 36, 37, 84, 20, 17, 36, 18, 71, 5, 69, 18, 36, 37,
+			84, 20, 35, 47, 34, 124, 71, 57, 137, 47, 0, 0, 10, 67, 76, 83, 147, 89, 122, 50, 89, 0, 20, 71, 76, 83, 73, 12, 243, 15,
+			56, 89, 122, 65, 124, 49, 6, 139, 55, 13, 50, 0, 0, 18, 67, 77, 80, 200, 89, 129, 76, 15, 10, 119, 88, 0, 8, 81, 97, 115,
+			32, 9, 67, 65, 34, 88, 48, 34, 132, 0, 0, 0, 14, 70, 48, 83, 206, 5, 33, 0, 55, 122, 50, 114, 72, 0, 18, 66, 16, 80,
+			72, 141, 75, 6, 146, 34, 37, 0, 81, 106, 117, 114, 101, 32, 8, 66, 16, 80, 72, 13, 0, 46, 0, 9, 67, 76, 178, 64, 89, 49,
+			132, 0, 0, 16, 70, 76, 243, 5, 56, 242, 68, 89, 139, 55, 13, 50, 142, 72, 0, 0, 12, 68, 81, 38, 83, 80, 47, 34, 124, 89,
+			47, 0, 12, 68, 16, 84, 15, 80, 72, 132, 48, 139, 0, 103, 11, 68, 16, 84, 15, 80, 72, 122, 48, 139, 0, 0, 14, 70, 48, 16,
+			143, 72, 81, 0, 55, 141, 71, 13, 72, 0, 10, 198, 12, 243, 150, 36, 53, 0, 66, 36, 9, 198, 12, 243, 150, 36, 53, 0, 65, 14,
+			69, 12, 195, 211, 21, 64, 49, 55, 126, 88, 113, 47, 0, 0, 16, 67, 80, 18, 64, 47, 140, 6, 76, 132, 0, 81, 99, 104, 105, 32,
+			8, 67, 76, 50, 64, 89, 140, 0, 9, 67, 52, 242, 64, 65, 58, 121, 0, 6, 195, 4, 98, 192, 13, 0, 21, 68, 92, 147, 132, 76,
+			58, 6, 140, 50, 72, 88, 15, 6, 129, 48, 0, 81, 117, 112, 32, 24, 68, 92, 147, 132, 76, 58, 6, 140, 50, 72, 88, 15, 72, 6,
+			138, 50, 0, 81, 100, 111, 119, 110, 32, 13, 69, 53, 84, 141, 85, 32, 65, 151, 65, 114, 0, 105, 12, 69, 53, 84, 141, 85, 32, 65,
+			131, 65, 114, 0, 12, 69, 16, 83, 137, 21, 32, 72, 113, 50, 148, 0, 0, 15, 70, 4, 225, 204, 21, 49, 89, 35, 68, 81, 118, 89,
+			37, 0, 7, 196, 5, 96, 83, 80, 17, 0, 8, 66, 9, 144, 71, 140, 0, 76, 19, 71, 65, 33, 68, 20, 98, 78, 20, 48, 34, 132,
+			72, 113, 83, 6, 140, 50, 0, 10, 199, 64, 243, 25, 80, 129, 78, 20, 65, 14, 69, 17, 33, 65, 53, 64, 72, 34, 122, 65, 48, 47,
+			0, 11, 68, 8, 146, 143, 84, 71, 132, 90, 137, 0, 13, 69, 8, 19, 12, 61, 64, 71, 35, 55, 13, 47, 0, 0, 9, 67, 80, 131,
+			192, 86, 139, 0, 46, 15, 70, 64, 131, 197, 56, 150, 0, 83, 132, 50, 124, 49, 89, 0, 14, 6, 110, 97, 195, 175, 118, 101, 50, 140,
+			6, 132, 84, 0, 6, 195, 84, 99, 192, 13, 0, 12, 69, 76, 128, 75, 85, 32, 91, 119, 49, 146, 0, 14, 69, 5, 50, 77, 61, 96,
+			35, 88, 125, 65, 126, 83, 0, 12, 69, 48, 243, 211, 21, 32, 55, 137, 88, 114, 0, 8, 197, 12, 243, 139, 21, 32, 65, 13, 69, 12,
+			21, 137, 5, 32, 49, 35, 84, 124, 130, 0, 8, 197, 8, 22, 129, 5, 32, 17, 8, 67, 5, 32, 200, 130, 76, 0, 0, 0, 9, 198,
+			65, 35, 212, 21, 53, 0, 36, 17, 70, 65, 35, 212, 21, 53, 0, 48, 34, 139, 108, 122, 89, 47, 0, 47, 17, 70, 25, 37, 73, 80,
+			147, 206, 83, 34, 137, 6, 124, 91, 13, 50, 0, 9, 198, 12, 243, 148, 21, 53, 0, 36, 17, 70, 12, 243, 148, 21, 53, 0, 49, 126,
+			50, 108, 122, 89, 47, 0, 47, 0, 11, 67, 32, 147, 64, 4, 107, 124, 65, 0, 46, 9, 67, 84, 227, 192, 137, 50, 139, 0, 19, 72,
+			36, 227, 143, 88, 21, 9, 88, 80, 124, 50, 13, 84, 141, 47, 124, 84, 0, 11, 200, 36, 225, 9, 12, 21, 9, 88, 80, 66, 6, 195,
+			21, 53, 0, 13, 6, 195, 4, 115, 64, 13, 0, 0, 15, 70, 48, 21, 82, 20, 224, 197, 55, 126, 34, 13, 50, 89, 0, 16, 70, 65,
+			35, 214, 20, 224, 197, 48, 34, 126, 84, 6, 153, 89, 0, 18, 72, 93, 35, 206, 28, 67, 201, 56, 112, 34, 126, 68, 72, 137, 124, 68,
+			0, 11, 67, 88, 83, 149, 84, 122, 50, 57, 137, 0, 16, 70, 37, 52, 213, 4, 224, 197, 124, 91, 137, 13, 50, 89, 0, 103, 17, 70,
+			25, 84, 197, 48, 17, 197, 83, 57, 137, 88, 13, 55, 121, 90, 0, 0, 13, 68, 88, 242, 76, 108, 84, 58, 121, 55, 6, 121, 0, 0,
+			6, 195, 36, 145, 3, 13, 0, 22, 73, 64, 131, 212, 60, 116, 129, 64, 134, 64, 83, 13, 47, 6, 126, 81, 34, 13, 83, 37, 0, 9,
+			3, 95, 35, 57, 47, 35, 71, 0, 0, 17, 70, 76, 50, 65, 80, 144, 193, 89, 140, 6, 35, 47, 124, 49, 13, 0, 17, 71, 24, 244,
+			133, 77, 64, 76, 48, 83, 136, 89, 47, 6, 133, 55, 0, 9, 67, 4, 195, 0, 133, 55, 0, 42, 0, 14, 70, 72, 86, 78, 60, 193,
+			0, 34, 122, 50, 118, 72, 0, 11, 68, 64, 21, 8, 20, 48, 35, 87, 141, 0, 19, 71, 4, 67, 73, 72, 16, 140, 100, 35, 72, 65,
+			13, 34, 13, 71, 55, 37, 0, 0, 8, 197, 52, 81, 21, 76, 16, 17, 14, 69, 64, 19, 69, 48, 16, 48, 35, 65, 13, 55, 13, 0,
+			15, 69, 80, 244, 5, 44, 16, 47, 139, 48, 6, 132, 49, 13, 0, 15, 69, 37, 64, 76, 36, 16, 124, 47, 6, 35, 55, 113, 13, 0,
+			14, 69, 28, 83, 133, 88, 16, 75, 13, 50, 132, 84, 13, 0, 14, 69, 20, 198, 83, 20, 80, 141, 55, 6, 132, 88, 141, 0, 13, 69,
+			24, 19, 73, 56, 80, 83, 35, 65, 124, 50, 0, 13, 69, 20, 229, 18, 20, 80, 126, 50, 47, 34, 141, 0, 8, 197, 20, 212, 9, 72,
+			80, 65, 8, 197, 20, 208, 143, 48, 80, 65, 13, 69, 16, 244, 193, 28, 80, 72, 139, 89, 113, 75, 0, 13, 69, 16, 240, 66, 48, 80,
+			72, 137, 13, 71, 118, 0, 14, 69, 12, 19, 129, 64, 80, 49, 35, 50, 13, 48, 141, 0, 8, 197, 12, 18, 143, 48, 80, 17, 9, 67,
+			4, 197, 0, 126, 55, 47, 0, 6, 195, 20, 69, 0, 13, 0, 6, 195, 77, 50, 68, 13, 0, 12, 69, 4, 50, 9, 56, 112, 141, 49,
+			124, 68, 0, 0, 11, 68, 25, 147, 4, 20, 83, 140, 55, 72, 0, 12, 68, 49, 144, 210, 4, 55, 140, 49, 34, 13, 0, 11, 200, 36,
+			228, 201, 28, 133, 6, 84, 192, 66, 0, 13, 69, 48, 19, 65, 104, 80, 55, 119, 65, 121, 88, 0, 13, 69, 29, 32, 69, 52, 80, 81,
+			34, 141, 13, 65, 0, 13, 69, 12, 129, 82, 36, 80, 91, 143, 34, 6, 132, 0, 13, 69, 4, 198, 83, 76, 16, 119, 55, 124, 89, 13,
+			0, 14, 69, 88, 145, 78, 56, 16, 84, 124, 6, 122, 50, 13, 0, 14, 69, 32, 21, 129, 56, 16, 107, 119, 84, 35, 50, 13, 0, 8,
+			197, 5, 32, 66, 36, 16, 17, 13, 69, 5, 33, 217, 48, 80, 130, 81, 6, 140, 55, 0, 14, 69, 80, 148, 129, 16, 80, 47, 140, 34,
+			6, 141, 72, 0, 14, 69, 80, 145, 82, 72, 16, 47, 124, 6, 143, 34, 13, 0, 14, 69, 76, 145, 82, 72, 16, 89, 132, 6, 143, 34,
+			13, 0, 13, 69, 72, 148, 209, 84, 80, 34, 113, 89, 49, 141, 0, 15, 69, 72, 144, 133, 56, 16, 34, 140, 71, 6, 132, 50, 13, 0,
+			13, 69, 60, 85, 86, 72, 80, 151, 84, 34, 13, 0, 105, 12, 69, 60, 85, 86, 72, 80, 131, 84, 34, 13, 0, 9, 197, 56, 85, 193,
+			28, 80, 15, 66, 13, 69, 52, 244, 129, 48, 80, 65, 13, 34, 35, 55, 0, 10, 199, 52, 81, 1, 48, 194, 79, 56, 17, 14, 69, 28,
+			19, 1, 28, 16, 81, 35, 55, 13, 81, 13, 0, 14, 69, 24, 147, 129, 48, 80, 83, 113, 50, 121, 55, 37, 0, 15, 69, 8, 19, 129,
+			56, 16, 71, 119, 50, 35, 50, 13, 0, 103, 8, 197, 8, 19, 129, 56, 16, 17, 8, 197, 5, 32, 193, 16, 80, 66, 12, 69, 4, 195,
+			5, 48, 80, 119, 55, 132, 55, 0, 0, 9, 198, 61, 85, 19, 44, 148, 148, 65, 0, 14, 68, 76, 128, 76, 48, 4, 91, 35, 55, 0,
+			32, 46, 10, 14, 69, 64, 82, 201, 56, 112, 48, 132, 49, 6, 124, 68, 0, 9, 67, 21, 34, 69, 144, 34, 37, 0, 10, 67, 8, 18,
+			129, 71, 121, 107, 121, 0, 0, 20, 71, 8, 83, 133, 88, 83, 148, 20, 71, 122, 50, 124, 84, 6, 122, 50, 47, 141, 0, 17, 71, 77,
+			84, 146, 60, 112, 84, 20, 89, 131, 13, 81, 13, 47, 0, 103, 17, 71, 77, 84, 146, 60, 112, 84, 20, 89, 129, 34, 13, 81, 141, 47,
+			0, 18, 71, 65, 33, 68, 36, 48, 84, 20, 48, 34, 122, 72, 113, 49, 141, 47, 0, 10, 199, 36, 224, 78, 36, 208, 84, 20, 16, 17,
+			71, 24, 244, 148, 84, 224, 84, 20, 83, 135, 76, 13, 50, 13, 47, 0, 10, 199, 21, 133, 18, 36, 48, 84, 20, 65, 10, 199, 16, 84,
+			208, 21, 32, 84, 20, 16, 17, 71, 12, 244, 146, 84, 112, 84, 20, 49, 126, 34, 13, 81, 141, 47, 0, 10, 199, 12, 244, 144, 61, 32,
+			84, 20, 16, 16, 70, 9, 33, 84, 33, 33, 78, 71, 34, 122, 86, 34, 13, 50, 0, 14, 69, 4, 97, 140, 85, 128, 119, 83, 55, 129,
+			49, 89, 0, 0, 8, 197, 52, 19, 1, 92, 144, 17, 6, 195, 73, 67, 211, 13, 4, 193, 136, 43, 0, 16, 70, 52, 84, 133, 16, 149,
+			8, 65, 122, 34, 13, 72, 124, 87, 0, 0, 11, 67, 32, 18, 1, 107, 121, 107, 6, 121, 0, 6, 195, 57, 66, 65, 13, 0, 16, 6,
+			104, 97, 100, 110, 39, 116, 107, 35, 72, 14, 50, 47, 0, 35, 15, 70, 92, 21, 6, 61, 33, 0, 58, 126, 47, 83, 13, 72, 0, 19,
+			71, 80, 83, 5, 52, 85, 18, 100, 47, 13, 55, 122, 65, 13, 47, 34, 37, 0, 0, 9, 198, 72, 81, 3, 72, 244, 211, 66, 16, 70,
+			16, 83, 79, 56, 84, 211, 72, 132, 65, 13, 50, 122, 89, 0, 6, 195, 16, 150, 64, 13, 6, 195, 4, 209, 0, 13, 0, 17, 67, 52,
+			244, 212, 65, 139, 89, 47, 15, 13, 84, 0, 81, 111, 102, 32, 18, 70, 9, 81, 1, 64, 84, 212, 71, 137, 72, 13, 48, 6, 122, 89,
+			47, 0, 17, 70, 76, 85, 133, 72, 84, 212, 89, 13, 84, 144, 34, 13, 89, 47, 0, 10, 67, 72, 84, 212, 34, 122, 89, 47, 0, 12,
+			201, 65, 84, 144, 61, 37, 5, 16, 198, 64, 66, 11, 67, 48, 244, 212, 55, 134, 89, 47, 0, 103, 0, 12, 68, 4, 114, 83, 80, 141,
+			75, 124, 89, 47, 0, 0, 14, 69, 65, 33, 83, 21, 64, 48, 34, 132, 89, 122, 47, 0, 9, 198, 52, 83, 69, 57, 67, 192, 17, 13,
+			69, 17, 81, 207, 85, 64, 72, 129, 81, 138, 47, 0, 13, 69, 13, 85, 15, 85, 64, 49, 129, 47, 138, 47, 0, 0, 11, 68, 48, 16,
+			143, 72, 55, 141, 71, 114, 0, 10, 67, 44, 147, 15, 49, 132, 55, 139, 0, 0, 13, 67, 92, 83, 148, 2, 58, 122, 50, 47, 0, 10,
+			46, 16, 70, 8, 145, 5, 24, 244, 132, 71, 124, 72, 124, 83, 13, 72, 0, 12, 68, 29, 84, 149, 76, 81, 137, 34, 137, 88, 0, 13,
+			69, 9, 84, 147, 5, 32, 71, 151, 89, 114, 0, 105, 12, 69, 9, 84, 147, 5, 32, 71, 131, 89, 114, 0, 11, 68, 5, 34, 69, 76,
+			143, 34, 132, 88, 0, 0, 13, 69, 76, 85, 77, 85, 48, 91, 137, 65, 13, 89, 0, 0, 15, 69, 41, 83, 9, 21, 64, 75, 137, 55,
+			124, 6, 122, 47, 0, 17, 71, 29, 82, 78, 21, 97, 82, 20, 81, 58, 124, 50, 125, 84, 145, 0, 14, 69, 60, 49, 76, 61, 64, 126,
+			89, 13, 55, 126, 47, 0, 8, 197, 60, 48, 213, 49, 64, 17, 9, 197, 36, 228, 213, 49, 64, 65, 47, 8, 197, 36, 228, 213, 49, 64,
+			66, 5, 194, 21, 80, 13, 0, 14, 68, 84, 225, 5, 72, 129, 50, 72, 114, 0, 72, 10, 46, 11, 68, 16, 245, 133, 72, 72, 139, 84,
+			114, 0, 11, 68, 44, 81, 137, 72, 49, 132, 83, 114, 0, 0, 13, 69, 45, 35, 199, 21, 32, 49, 34, 139, 81, 114, 0, 13, 69, 52,
+			19, 135, 21, 32, 65, 141, 50, 75, 114, 0, 10, 67, 52, 19, 12, 65, 133, 55, 0, 103, 9, 67, 52, 19, 12, 65, 35, 55, 0, 13,
+			69, 40, 17, 213, 5, 32, 75, 35, 81, 58, 130, 0, 13, 69, 33, 83, 135, 21, 32, 107, 129, 68, 81, 114, 0, 13, 69, 12, 243, 135,
+			21, 32, 49, 126, 68, 81, 114, 0, 12, 69, 8, 243, 199, 21, 32, 71, 117, 81, 114, 0, 12, 68, 5, 50, 197, 92, 119, 89, 49, 57,
+			137, 0, 0, 0, 11, 67, 73, 82, 90, 34, 137, 6, 132, 88, 0, 9, 67, 76, 85, 206, 89, 139, 50, 0, 12, 68, 24, 198, 66, 100,
+			83, 55, 140, 71, 140, 0, 16, 70, 8, 84, 212, 21, 53, 0, 71, 122, 89, 47, 13, 89, 47, 0, 0, 12, 68, 48, 85, 133, 56, 55,
+			132, 84, 13, 50, 0, 20, 72, 64, 82, 143, 72, 21, 9, 88, 80, 48, 13, 75, 126, 34, 13, 47, 124, 84, 0, 17, 72, 32, 84, 133,
+			80, 241, 143, 72, 80, 107, 145, 108, 117, 83, 136, 0, 13, 69, 8, 243, 199, 21, 144, 71, 117, 81, 37, 0, 103, 0, 11, 67, 85, 64,
+			72, 57, 137, 108, 134, 0, 103, 10, 67, 85, 64, 72, 57, 137, 108, 121, 0, 12, 68, 12, 193, 82, 44, 49, 55, 130, 49, 0, 135, 0,
+			0, 12, 67, 4, 225, 0, 35, 50, 72, 0, 72, 8, 46, 24, 73, 81, 34, 67, 21, 32, 84, 61, 4, 192, 47, 34, 140, 89, 6, 122,
+			34, 13, 47, 126, 48, 89, 0, 12, 68, 65, 34, 86, 100, 48, 34, 124, 84, 37, 0, 0, 9, 66, 4, 224, 119, 50, 0, 34, 46, 12,
+			68, 12, 243, 129, 56, 49, 139, 50, 13, 50, 0, 11, 68, 4, 195, 5, 56, 35, 55, 13, 50, 0, 21, 72, 12, 147, 131, 36, 227, 129,
+			80, 144, 89, 124, 50, 89, 124, 50, 6, 35, 47, 37, 0, 12, 68, 48, 147, 133, 56, 55, 124, 50, 113, 50, 0, 14, 69, 32, 243, 73,
+			49, 144, 107, 126, 65, 13, 55, 37, 0, 0, 7, 196, 36, 64, 72, 60, 65, 18, 71, 65, 54, 67, 32, 244, 201, 76, 89, 140, 49, 6,
+			139, 89, 124, 89, 0, 7, 196, 36, 229, 18, 60, 65, 20, 71, 36, 115, 143, 72, 19, 85, 76, 124, 81, 50, 136, 34, 6, 141, 65, 13,
+			89, 0, 15, 70, 24, 16, 213, 49, 70, 64, 83, 35, 49, 118, 108, 37, 0, 0, 13, 68, 92, 130, 76, 20, 58, 4, 140, 55, 0, 28,
+			9, 12, 68, 4, 32, 66, 4, 35, 71, 119, 71, 13, 0, 12, 68, 56, 147, 138, 4, 50, 124, 50, 75, 13, 0, 0, 14, 69, 72, 149,
+			133, 72, 16, 34, 113, 84, 143, 34, 13, 0, 8, 197, 76, 16, 137, 56, 16, 17, 14, 69, 4, 225, 197, 48, 16, 35, 50, 75, 13, 55,
+			13, 0, 13, 69, 4, 194, 67, 36, 16, 119, 55, 132, 91, 13, 0, 12, 69, 65, 32, 71, 84, 80, 48, 34, 121, 81, 0, 12, 69, 64,
+			84, 147, 36, 16, 48, 131, 90, 13, 0, 13, 69, 77, 83, 132, 4, 80, 89, 129, 50, 72, 141, 0, 14, 69, 76, 145, 78, 56, 16, 89,
+			132, 6, 122, 50, 13, 0, 14, 69, 72, 81, 5, 100, 80, 34, 6, 122, 72, 4, 140, 0, 14, 69, 65, 146, 129, 52, 16, 48, 13, 75,
+			121, 65, 13, 0, 8, 197, 64, 20, 143, 48, 80, 17, 13, 69, 61, 32, 78, 28, 80, 126, 34, 113, 50, 75, 0, 8, 197, 52, 18, 143,
+			72, 16, 17, 18, 72, 32, 83, 131, 20, 99, 210, 80, 128, 107, 122, 50, 89, 83, 136, 87, 0, 13, 69, 28, 20, 143, 80, 80, 81, 119,
+			34, 126, 47, 0, 13, 69, 21, 36, 129, 80, 16, 113, 34, 121, 47, 13, 0, 15, 69, 16, 148, 213, 76, 80, 72, 124, 89, 6, 57, 137,
+			89, 0, 13, 69, 16, 18, 12, 36, 16, 72, 141, 55, 132, 13, 0, 14, 69, 12, 246, 79, 80, 80, 49, 140, 6, 139, 47, 37, 0, 11,
+			69, 12, 128, 73, 76, 80, 91, 141, 88, 0, 12, 69, 12, 20, 143, 48, 80, 49, 35, 34, 118, 0, 20, 71, 4, 227, 206, 100, 210, 84,
+			100, 35, 50, 13, 50, 6, 124, 65, 113, 47, 37, 0, 14, 69, 4, 69, 193, 72, 80, 6, 35, 72, 58, 4, 143, 0, 0, 0, 14, 69,
+			81, 80, 82, 20, 112, 47, 58, 130, 34, 122, 81, 0, 10, 67, 52, 19, 9, 65, 121, 55, 37, 0, 17, 71, 72, 83, 132, 21, 99, 213,
+			76, 34, 126, 50, 72, 113, 84, 137, 0, 13, 69, 48, 244, 201, 56, 112, 55, 137, 88, 124, 68, 0, 16, 70, 29, 32, 78, 17, 0, 64,
+			81, 34, 35, 50, 72, 48, 121, 0, 6, 195, 5, 96, 192, 13, 0, 11, 68, 4, 48, 210, 4, 35, 49, 34, 119, 0, 13, 68, 48, 83,
+			206, 4, 55, 132, 6, 139, 50, 13, 0, 12, 68, 28, 243, 142, 4, 81, 4, 13, 50, 13, 0, 11, 68, 28, 83, 196, 20, 75, 132, 139,
+			72, 0, 12, 68, 12, 240, 146, 4, 49, 139, 71, 34, 13, 0, 6, 195, 4, 66, 4, 13, 0, 8, 197, 52, 240, 137, 48, 80, 16, 15,
+			69, 100, 19, 65, 32, 16, 57, 121, 65, 13, 107, 121, 0, 103, 14, 69, 100, 19, 65, 32, 16, 57, 35, 65, 13, 107, 121, 0, 8, 197,
+			101, 99, 206, 56, 80, 66, 12, 69, 64, 131, 197, 8, 80, 83, 132, 71, 132, 0, 15, 69, 52, 22, 9, 56, 80, 65, 35, 49, 89, 6,
+			132, 50, 0, 10, 67, 92, 147, 143, 58, 140, 50, 139, 0, 22, 73, 77, 84, 5, 72, 99, 21, 61, 84, 192, 89, 137, 48, 6, 131, 83,
+			55, 137, 13, 89, 0, 13, 69, 72, 80, 129, 80, 80, 34, 132, 71, 141, 47, 0, 12, 68, 72, 80, 68, 16, 34, 132, 6, 35, 72, 0,
+			11, 69, 69, 82, 67, 32, 80, 49, 132, 91, 0, 12, 69, 65, 54, 67, 32, 80, 89, 140, 49, 132, 0, 13, 69, 64, 148, 129, 80, 80,
+			48, 140, 34, 13, 47, 0, 20, 73, 52, 148, 195, 32, 145, 86, 61, 84, 192, 65, 124, 89, 76, 113, 84, 13, 89, 0, 14, 69, 52, 147,
+			149, 80, 80, 65, 124, 50, 124, 47, 0, 47, 13, 69, 52, 17, 1, 52, 80, 65, 35, 72, 13, 65, 0, 14, 69, 44, 20, 129, 80, 80,
+			49, 13, 34, 121, 47, 37, 0, 13, 69, 21, 98, 78, 12, 80, 113, 84, 124, 50, 89, 0, 12, 69, 5, 84, 211, 36, 80, 126, 89, 37,
+			0, 103, 11, 69, 5, 84, 211, 36, 80, 126, 88, 37, 0, 13, 69, 4, 84, 129, 80, 80, 143, 34, 6, 141, 47, 0, 0, 0, 11, 67,
+			32, 82, 5, 107, 132, 107, 6, 132, 0, 8, 67, 21, 113, 64, 57, 137, 0, 11, 67, 16, 82, 129, 72, 141, 90, 121, 0, 46, 9, 67,
+			9, 34, 69, 71, 34, 132, 0, 8, 197, 52, 211, 210, 64, 112, 13, 0, 20, 71, 88, 145, 201, 48, 19, 148, 20, 84, 124, 75, 113, 55,
+			6, 35, 50, 47, 37, 0, 0, 15, 69, 16, 210, 84, 72, 144, 72, 13, 65, 132, 47, 34, 37, 0, 14, 69, 32, 21, 193, 36, 144, 107,
+			13, 58, 6, 140, 132, 0, 11, 200, 81, 34, 80, 48, 144, 193, 80, 80, 16, 8, 197, 76, 17, 129, 72, 144, 17, 11, 200, 52, 243, 25,
+			8, 65, 78, 84, 208, 66, 11, 200, 36, 195, 9, 80, 84, 129, 80, 80, 16, 11, 200, 16, 83, 9, 8, 84, 129, 80, 80, 16, 21, 72,
+			12, 243, 210, 16, 147, 129, 80, 80, 49, 139, 6, 135, 72, 113, 50, 141, 47, 0, 36, 20, 72, 12, 19, 148, 4, 195, 213, 64, 80, 49,
+			35, 50, 47, 13, 55, 139, 48, 0, 103, 0, 21, 72, 8, 19, 135, 48, 81, 5, 76, 128, 71, 35, 68, 81, 55, 13, 72, 6, 122, 91,
+			0, 12, 68, 4, 192, 77, 60, 35, 55, 13, 65, 139, 0, 0, 32, 7, 109, 117, 115, 116, 110, 39, 116, 65, 6, 129, 89, 14, 50, 47,
+			107, 35, 84, 47, 116, 0, 35, 82, 104, 97, 118, 101, 32, 116, 111, 32, 27, 7, 109, 117, 115, 116, 110, 39, 116, 65, 129, 89, 14, 50,
+			47, 107, 119, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 17, 7, 109, 117, 115, 116, 110, 39, 116, 65, 129, 89, 14, 50, 47, 0, 32,
+			16, 70, 28, 147, 214, 4, 227, 137, 75, 13, 84, 6, 121, 50, 37, 0, 13, 68, 77, 81, 1, 56, 89, 137, 72, 6, 35, 50, 0, 12,
+			68, 76, 81, 1, 56, 89, 113, 72, 35, 50, 0, 9, 198, 64, 150, 154, 21, 34, 65, 15, 13, 69, 21, 98, 76, 16, 240, 132, 84, 118,
+			72, 137, 0, 16, 70, 21, 2, 80, 32, 19, 153, 113, 48, 124, 83, 13, 50, 124, 0, 16, 69, 4, 192, 137, 56, 240, 35, 55, 71, 6,
+			140, 50, 139, 0, 103, 0, 33, 8, 119, 111, 117, 108, 100, 110, 39, 116, 4, 58, 117, 72, 14, 50, 47, 35, 84, 47, 116, 0, 32, 10,
+			82, 104, 97, 118, 101, 32, 116, 111, 32, 28, 8, 119, 111, 117, 108, 100, 110, 39, 116, 58, 117, 72, 14, 50, 47, 13, 84, 0, 73, 35,
+			10, 81, 104, 97, 118, 101, 32, 11, 68, 8, 128, 74, 36, 71, 121, 75, 37, 0, 4, 193, 140, 43, 0, 19, 67, 16, 145, 0, 72, 124,
+			72, 50, 126, 47, 0, 32, 78, 81, 110, 111, 116, 32, 10, 67, 16, 145, 0, 72, 124, 72, 0, 32, 20, 67, 32, 17, 0, 107, 4, 35,
+			72, 15, 89, 129, 65, 0, 81, 115, 111, 109, 101, 32, 19, 67, 32, 17, 0, 107, 4, 35, 72, 15, 122, 50, 37, 0, 81, 97, 110, 121,
+			32, 17, 67, 32, 17, 0, 107, 35, 72, 58, 129, 50, 0, 81, 111, 110, 101, 32, 19, 67, 32, 17, 0, 107, 4, 35, 72, 86, 122, 65,
+			0, 81, 116, 104, 101, 109, 32, 16, 67, 32, 17, 0, 107, 4, 35, 72, 113, 47, 0, 81, 105, 116, 32, 21, 67, 32, 17, 0, 2, 107,
+			119, 72, 2, 71, 124, 50, 0, 35, 81, 98, 101, 101, 110, 32, 16, 67, 32, 17, 0, 107, 35, 72, 47, 137, 0, 49, 81, 116, 111, 32,
+			16, 67, 32, 17, 0, 107, 2, 35, 72, 47, 116, 0, 81, 116, 111, 32, 11, 67, 32, 17, 0, 4, 107, 35, 72, 0, 49, 13, 67, 32,
+			17, 0, 2, 107, 119, 72, 0, 35, 10, 46, 16, 70, 72, 19, 73, 72, 86, 128, 34, 119, 65, 145, 34, 122, 88, 0, 13, 69, 28, 19,
+			132, 32, 144, 81, 35, 50, 72, 37, 0, 13, 69, 17, 84, 136, 4, 208, 72, 129, 34, 13, 65, 0, 9, 198, 76, 16, 130, 5, 66, 67,
+			17, 17, 70, 72, 129, 84, 61, 34, 67, 34, 122, 47, 13, 34, 124, 49, 0, 47, 18, 70, 16, 241, 205, 5, 66, 67, 72, 126, 81, 65,
+			6, 35, 47, 124, 49, 0, 0, 20, 66, 16, 144, 72, 125, 65, 121, 90, 124, 139, 0, 81, 109, 97, 103, 103, 105, 111, 32, 8, 66, 16,
+			144, 72, 140, 0, 41, 15, 70, 88, 20, 137, 21, 70, 64, 84, 13, 34, 147, 47, 37, 0, 8, 67, 37, 35, 206, 148, 50, 0, 17, 70,
+			36, 228, 85, 37, 38, 64, 124, 50, 49, 58, 13, 34, 37, 0, 103, 9, 66, 16, 144, 72, 4, 124, 0, 46, 16, 66, 20, 112, 83, 135,
+			122, 81, 88, 6, 120, 65, 48, 118, 0, 46, 0, 10, 67, 72, 243, 137, 34, 126, 50, 37, 0, 8, 197, 52, 86, 9, 12, 240, 65, 14,
+			69, 44, 244, 207, 88, 240, 49, 126, 89, 13, 84, 139, 0, 12, 68, 81, 38, 73, 56, 47, 34, 140, 124, 50, 0, 10, 67, 28, 83, 137,
+			75, 132, 50, 37, 0, 8, 197, 12, 20, 201, 56, 240, 17, 6, 195, 4, 243, 0, 13, 0, 6, 195, 5, 48, 80, 13, 0, 15, 70, 12,
+			16, 146, 36, 195, 15, 49, 119, 71, 34, 132, 139, 0, 18, 71, 20, 194, 83, 4, 33, 84, 32, 113, 55, 124, 88, 13, 71, 13, 87, 0,
+			17, 70, 52, 85, 8, 36, 226, 211, 65, 132, 87, 6, 124, 68, 49, 89, 0, 20, 72, 12, 243, 77, 84, 226, 81, 84, 80, 49, 13, 65,
+			57, 137, 50, 113, 49, 141, 0, 0, 11, 199, 65, 34, 69, 77, 65, 83, 76, 103, 16, 0, 9, 198, 76, 19, 135, 84, 147, 133, 16, 9,
+			198, 65, 34, 83, 80, 147, 133, 66, 16, 70, 41, 82, 197, 8, 246, 0, 75, 137, 49, 71, 126, 49, 89, 0, 0, 10, 199, 80, 129, 82,
+			20, 99, 210, 20, 65, 18, 71, 76, 80, 210, 21, 66, 86, 20, 89, 132, 49, 34, 13, 47, 124, 84, 0, 9, 198, 61, 97, 82, 48, 244,
+			132, 65, 17, 71, 56, 20, 146, 5, 66, 86, 20, 50, 35, 34, 13, 47, 124, 84, 0, 15, 70, 13, 35, 195, 32, 85, 0, 49, 34, 139,
+			91, 6, 141, 0, 17, 71, 4, 116, 133, 77, 50, 86, 20, 119, 81, 34, 122, 89, 124, 84, 0, 10, 199, 4, 66, 133, 13, 66, 86, 20,
+			65, 0, 19, 73, 92, 129, 82, 21, 114, 84, 32, 19, 0, 58, 143, 58, 124, 86, 133, 55, 0, 13, 68, 4, 69, 76, 80, 35, 72, 129,
+			55, 47, 0, 135, 0, 12, 68, 72, 83, 85, 76, 34, 132, 65, 13, 89, 0, 12, 68, 52, 21, 137, 76, 65, 141, 84, 124, 89, 0, 12,
+			68, 105, 83, 21, 76, 88, 137, 55, 137, 88, 0, 10, 68, 81, 35, 201, 76, 47, 58, 121, 0, 0, 12, 68, 12, 84, 193, 72, 89, 141,
+			88, 6, 130, 0, 9, 198, 76, 83, 73, 80, 243, 133, 65, 13, 69, 64, 147, 5, 85, 0, 48, 140, 55, 129, 48, 0, 16, 70, 16, 240,
+			212, 72, 147, 133, 72, 126, 49, 47, 34, 113, 50, 0, 13, 68, 16, 80, 207, 72, 72, 141, 49, 6, 135, 0, 103, 11, 68, 16, 80, 207,
+			72, 72, 141, 49, 135, 0, 10, 68, 5, 81, 197, 72, 133, 81, 114, 0, 0, 0, 22, 73, 56, 80, 78, 16, 84, 148, 32, 19, 0, 50,
+			132, 6, 35, 50, 72, 114, 87, 121, 55, 0, 11, 199, 36, 229, 5, 73, 37, 80, 80, 67, 36, 11, 199, 36, 229, 5, 73, 37, 80, 80,
+			65, 47, 0, 13, 202, 52, 20, 211, 4, 50, 21, 76, 85, 20, 76, 67, 0, 17, 70, 80, 21, 193, 44, 243, 137, 47, 119, 58, 121, 49,
+			13, 50, 37, 0, 21, 72, 49, 86, 5, 52, 35, 213, 72, 112, 55, 129, 49, 89, 13, 65, 71, 151, 81, 0, 105, 20, 72, 49, 86, 5,
+			52, 35, 213, 72, 112, 55, 129, 49, 89, 13, 65, 71, 131, 81, 0, 12, 68, 72, 84, 201, 56, 34, 122, 88, 124, 50, 0, 0, 19, 71,
+			80, 83, 80, 61, 32, 82, 100, 47, 122, 65, 48, 34, 13, 34, 124, 0, 135, 10, 199, 64, 149, 21, 37, 64, 82, 100, 66, 15, 70, 61,
+			85, 16, 61, 53, 0, 138, 47, 48, 139, 89, 47, 0, 0, 14, 69, 9, 37, 78, 20, 144, 71, 34, 137, 50, 6, 140, 0, 22, 73, 77,
+			67, 210, 101, 65, 76, 48, 147, 135, 89, 47, 133, 34, 124, 47, 122, 55, 124, 68, 0, 16, 70, 72, 21, 133, 56, 245, 83, 34, 35, 84,
+			13, 50, 13, 89, 0, 0, 15, 70, 40, 16, 213, 105, 162, 64, 75, 13, 49, 137, 88, 37, 0, 17, 71, 32, 22, 129, 72, 67, 213, 76,
+			107, 35, 88, 114, 72, 13, 89, 0, 6, 66, 20, 128, 141, 0, 11, 68, 4, 213, 67, 44, 119, 65, 129, 49, 0, 0, 15, 69, 24, 144,
+			83, 12, 240, 83, 132, 6, 35, 89, 49, 139, 0, 6, 195, 60, 52, 128, 13, 0, 6, 195, 9, 147, 196, 13, 6, 195, 9, 51, 196, 13,
+			0, 18, 71, 20, 194, 90, 4, 33, 84, 32, 113, 55, 124, 88, 13, 71, 13, 87, 0, 19, 72, 64, 244, 148, 84, 117, 69, 76, 80, 48,
+			136, 76, 13, 81, 6, 132, 88, 0, 17, 72, 8, 245, 82, 28, 83, 201, 76, 80, 71, 146, 90, 58, 121, 88, 0, 17, 71, 5, 85, 15,
+			29, 32, 80, 32, 133, 47, 13, 81, 34, 35, 83, 0, 0, 14, 68, 16, 242, 78, 28, 4, 72, 137, 124, 68, 0, 10, 46, 8, 67, 40,
+			245, 82, 90, 146, 0, 10, 68, 8, 242, 78, 28, 71, 142, 68, 0, 20, 71, 5, 4, 1, 72, 21, 21, 76, 35, 48, 13, 34, 6, 35,
+			47, 13, 89, 0, 103, 19, 71, 5, 4, 1, 72, 21, 21, 76, 35, 48, 13, 34, 6, 141, 47, 13, 89, 0, 0, 14, 70, 64, 130, 76,
+			37, 4, 5, 83, 113, 55, 132, 48, 0, 0, 19, 67, 92, 147, 132, 58, 6, 140, 50, 72, 15, 6, 129, 48, 0, 81, 117, 112, 32, 23,
+			67, 92, 147, 132, 58, 6, 124, 50, 72, 15, 48, 6, 138, 114, 0, 81, 112, 111, 119, 101, 114, 32, 11, 67, 92, 147, 132, 58, 140, 50,
+			72, 0, 36, 13, 70, 76, 193, 73, 28, 133, 0, 89, 55, 140, 47, 0, 0, 10, 199, 81, 32, 78, 77, 3, 210, 80, 36, 19, 71, 81,
+			32, 78, 77, 3, 210, 80, 47, 34, 35, 50, 89, 48, 136, 47, 0, 46, 13, 69, 24, 147, 137, 80, 80, 83, 140, 50, 140, 47, 0, 13,
+			68, 20, 208, 133, 16, 122, 65, 71, 6, 122, 72, 0, 13, 3, 226, 132, 162, 47, 34, 141, 72, 65, 130, 49, 0, 0, 0, 10, 67, 80,
+			147, 129, 47, 132, 50, 13, 0, 17, 71, 12, 128, 77, 20, 193, 79, 56, 49, 13, 65, 132, 55, 144, 50, 0, 19, 71, 5, 85, 15, 52,
+			21, 15, 56, 133, 47, 6, 126, 65, 13, 47, 13, 50, 0, 0, 10, 199, 81, 84, 142, 80, 16, 140, 20, 15, 11, 68, 76, 243, 142, 100,
+			89, 129, 50, 124, 0, 24, 74, 36, 224, 80, 65, 35, 208, 72, 144, 84, 20, 124, 50, 119, 48, 34, 6, 139, 48, 34, 144, 47, 0, 12,
+			68, 16, 80, 210, 100, 72, 113, 49, 34, 140, 0, 9, 198, 12, 243, 148, 21, 133, 0, 65, 0, 10, 68, 76, 83, 213, 48, 89, 139, 55,
+			0, 11, 68, 72, 81, 193, 48, 34, 132, 81, 118, 0, 13, 69, 32, 83, 9, 84, 208, 107, 132, 55, 144, 65, 0, 11, 200, 21, 129, 67,
+			85, 64, 66, 48, 80, 67, 0, 13, 69, 72, 17, 9, 76, 128, 34, 35, 72, 124, 91, 0, 17, 70, 52, 20, 129, 80, 131, 206, 65, 35,
+			34, 13, 87, 126, 50, 0, 103, 15, 70, 21, 48, 200, 20, 195, 206, 122, 91, 13, 55, 126, 50, 0, 0, 9, 67, 56, 243, 133, 50, 129,
+			50, 0, 9, 67, 16, 243, 133, 72, 129, 50, 0, 13, 67, 28, 243, 133, 2, 81, 134, 50, 0, 103, 10, 46, 12, 67, 28, 243, 133, 2,
+			81, 126, 50, 0, 10, 46, 9, 67, 80, 243, 133, 47, 139, 50, 0, 6, 195, 72, 85, 128, 24, 6, 195, 32, 149, 128, 13, 4, 193, 144,
+			43, 0, 9, 198, 16, 147, 12, 5, 33, 0, 16, 9, 198, 52, 149, 3, 32, 83, 12, 16, 0, 10, 67, 5, 33, 83, 143, 34, 132, 88,
+			0, 8, 67, 20, 145, 0, 132, 72, 0, 11, 68, 8, 84, 153, 48, 71, 122, 34, 118, 0, 0, 17, 70, 32, 84, 143, 37, 51, 64, 107,
+			122, 34, 139, 124, 88, 13, 65, 0, 14, 69, 16, 148, 205, 4, 192, 72, 124, 88, 65, 13, 55, 0, 0, 14, 69, 52, 243, 129, 12, 240,
+			65, 126, 50, 13, 49, 139, 0, 16, 70, 16, 162, 66, 61, 85, 9, 75, 124, 71, 6, 137, 47, 37, 0, 0, 10, 198, 12, 243, 148, 72,
+			20, 212, 66, 36, 14, 67, 80, 36, 208, 47, 141, 71, 118, 89, 48, 137, 50, 0, 0, 13, 67, 28, 85, 0, 2, 81, 122, 47, 0, 10,
+			35, 46, 16, 70, 32, 20, 137, 76, 243, 128, 107, 35, 34, 124, 89, 13, 50, 0, 10, 67, 81, 34, 79, 47, 34, 132, 139, 0, 15, 70,
+			20, 66, 84, 36, 243, 128, 113, 72, 124, 91, 13, 50, 0, 12, 68, 16, 243, 149, 80, 72, 139, 50, 129, 47, 0, 16, 70, 12, 128, 71,
+			72, 147, 128, 91, 119, 81, 34, 124, 50, 0, 103, 15, 70, 12, 128, 71, 72, 147, 128, 91, 35, 81, 34, 124, 50, 0, 17, 70, 8, 149,
+			21, 52, 83, 128, 71, 124, 76, 137, 65, 13, 50, 0, 135, 13, 3, 226, 132, 150, 50, 57, 137, 65, 13, 34, 139, 0, 0, 6, 195, 36,
+			227, 2, 13, 0, 13, 202, 92, 244, 132, 65, 35, 195, 21, 52, 207, 72, 66, 16, 70, 12, 240, 203, 77, 84, 133, 4, 49, 126, 49, 91,
+			6, 146, 0, 15, 70, 12, 20, 200, 52, 84, 133, 49, 35, 90, 65, 145, 0, 103, 14, 70, 12, 20, 200, 52, 84, 133, 49, 35, 91, 65,
+			145, 0, 17, 70, 9, 35, 195, 33, 84, 133, 71, 34, 139, 6, 91, 146, 34, 0, 103, 14, 70, 9, 35, 195, 33, 84, 133, 71, 34, 139,
+			91, 114, 0, 0, 20, 71, 65, 34, 77, 5, 97, 82, 4, 48, 34, 132, 65, 13, 84, 6, 143, 34, 13, 0, 12, 201, 92, 244, 132, 65,
+			35, 195, 21, 52, 192, 66, 17, 71, 48, 147, 79, 85, 50, 78, 20, 55, 124, 65, 13, 88, 132, 50, 0, 17, 71, 33, 84, 146, 36, 48,
+			78, 20, 107, 131, 13, 49, 141, 50, 0, 103, 17, 71, 33, 84, 146, 36, 48, 78, 20, 107, 129, 34, 113, 49, 141, 50, 0, 21, 73, 12,
+			193, 65, 56, 194, 78, 21, 52, 192, 49, 55, 122, 50, 55, 124, 50, 13, 89, 0, 23, 73, 12, 128, 82, 37, 51, 65, 80, 144, 192, 49,
+			35, 34, 124, 89, 65, 6, 35, 47, 124, 49, 0, 0, 12, 68, 52, 243, 133, 80, 65, 139, 50, 6, 141, 0, 14, 70, 64, 197, 77, 8,
+			84, 128, 48, 55, 129, 65, 114, 0, 15, 69, 52, 147, 9, 21, 80, 65, 132, 55, 6, 57, 137, 0, 103, 13, 69, 52, 147, 9, 21, 80,
+			65, 132, 55, 57, 131, 0, 11, 68, 48, 80, 80, 80, 55, 122, 48, 47, 0, 0, 16, 70, 12, 149, 1, 16, 83, 0, 89, 124, 47, 13,
+			72, 122, 55, 0, 0, 17, 70, 4, 117, 73, 48, 84, 129, 35, 81, 132, 55, 6, 143, 34, 13, 0, 13, 69, 12, 19, 143, 21, 48, 49,
+			13, 50, 137, 88, 0, 13, 3, 226, 133, 148, 47, 137, 87, 6, 131, 72, 88, 0, 0, 15, 67, 92, 147, 12, 58, 124, 55, 47, 116, 0,
+			81, 116, 111, 32, 9, 195, 92, 147, 12, 76, 46, 32, 10, 12, 68, 12, 129, 82, 36, 91, 143, 34, 6, 132, 0, 15, 70, 32, 244, 212,
+			21, 52, 192, 107, 139, 89, 47, 122, 89, 0, 0, 12, 68, 36, 229, 5, 48, 124, 50, 108, 122, 55, 0, 10, 199, 28, 243, 196, 56, 145,
+			200, 80, 66, 0, 0, 10, 199, 76, 80, 129, 77, 66, 65, 56, 17, 16, 70, 88, 145, 78, 56, 84, 197, 84, 132, 13, 50, 6, 132, 88,
+			0, 19, 71, 65, 34, 86, 5, 66, 79, 56, 48, 34, 140, 84, 6, 141, 91, 13, 50, 0, 18, 72, 21, 97, 82, 101, 66, 9, 56, 112,
+			122, 84, 34, 113, 87, 124, 68, 0, 9, 198, 16, 144, 71, 56, 244, 197, 67, 10, 199, 8, 21, 20, 4, 194, 79, 56, 17, 0, 12, 68,
+			81, 32, 67, 100, 47, 34, 141, 89, 37, 0, 11, 67, 72, 21, 76, 34, 138, 6, 137, 55, 0, 15, 70, 8, 19, 12, 5, 53, 0, 71,
+			35, 55, 13, 89, 47, 0, 13, 3, 226, 133, 147, 58, 126, 50, 87, 6, 131, 72, 0, 0, 13, 69, 16, 148, 206, 21, 144, 72, 124, 88,
+			50, 37, 0, 18, 70, 12, 243, 15, 72, 17, 15, 49, 126, 55, 114, 34, 6, 121, 72, 139, 0, 14, 203, 77, 84, 5, 73, 53, 18, 84,
+			53, 21, 72, 80, 65, 11, 68, 72, 83, 129, 48, 34, 132, 50, 118, 0, 11, 68, 64, 83, 129, 48, 48, 132, 50, 118, 0, 13, 69, 57,
+			83, 66, 49, 144, 50, 129, 65, 55, 37, 0, 14, 203, 36, 225, 146, 5, 53, 18, 84, 53, 21, 72, 80, 65, 12, 68, 12, 19, 129, 48,
+			49, 13, 50, 35, 55, 0, 11, 68, 8, 19, 129, 48, 71, 141, 50, 118, 0, 0, 17, 70, 20, 33, 78, 21, 160, 82, 122, 71, 13, 50,
+			6, 132, 88, 114, 0, 23, 73, 72, 84, 208, 37, 32, 84, 61, 38, 64, 34, 122, 89, 48, 34, 13, 47, 152, 34, 37, 0, 103, 23, 73,
+			72, 84, 208, 37, 32, 84, 61, 38, 64, 34, 113, 89, 48, 124, 34, 13, 47, 13, 34, 124, 0, 17, 70, 32, 243, 73, 56, 83, 64, 107,
+			126, 65, 13, 50, 13, 65, 0, 103, 16, 70, 32, 243, 73, 56, 83, 64, 107, 126, 65, 124, 50, 122, 65, 0, 15, 70, 24, 19, 73, 48,
+			144, 82, 83, 13, 65, 124, 55, 145, 0, 0, 6, 195, 76, 192, 64, 13, 0, 15, 70, 64, 148, 85, 4, 229, 0, 48, 132, 49, 13, 50,
+			47, 0, 9, 198, 61, 85, 12, 60, 242, 192, 65, 11, 68, 36, 225, 9, 20, 124, 50, 72, 37, 0, 9, 198, 24, 20, 133, 92, 83, 12,
+			66, 0, 17, 70, 100, 84, 133, 88, 19, 128, 57, 122, 34, 13, 84, 6, 35, 50, 0, 9, 198, 8, 18, 18, 4, 147, 128, 66, 12, 68,
+			12, 197, 217, 16, 49, 55, 137, 124, 72, 0, 17, 71, 48, 16, 153, 72, 147, 148, 32, 55, 35, 71, 114, 124, 50, 87, 0, 0, 0, 15,
+			70, 12, 19, 12, 36, 244, 5, 49, 119, 55, 147, 48, 37, 0, 9, 198, 20, 229, 133, 48, 244, 5, 36, 17, 70, 20, 229, 133, 48, 244,
+			5, 121, 50, 84, 13, 55, 139, 48, 0, 103, 17, 70, 20, 229, 133, 48, 244, 5, 122, 50, 84, 13, 55, 139, 48, 0, 46, 10, 67, 4,
+			128, 64, 121, 107, 6, 121, 0, 16, 8, 95, 98, 114, 97, 105, 108, 108, 101, 71, 34, 6, 141, 55, 0, 0, 11, 68, 52, 20, 137, 20,
+			65, 119, 34, 132, 0, 11, 68, 5, 33, 213, 20, 130, 81, 57, 137, 0, 0, 18, 70, 76, 19, 148, 36, 17, 207, 89, 35, 50, 47, 124,
+			6, 121, 81, 139, 0, 10, 68, 78, 81, 8, 20, 91, 132, 13, 0, 12, 68, 52, 244, 5, 16, 65, 139, 48, 122, 72, 0, 0, 0, 10,
+			67, 16, 19, 129, 72, 141, 50, 13, 0, 9, 67, 88, 81, 192, 84, 122, 75, 0, 13, 201, 84, 225, 5, 72, 116, 143, 84, 225, 0, 65,
+			37, 21, 73, 52, 17, 5, 52, 242, 83, 20, 195, 5, 65, 35, 72, 13, 65, 13, 88, 122, 55, 0, 8, 67, 20, 113, 192, 122, 81, 0,
+			18, 71, 16, 19, 132, 20, 194, 79, 56, 72, 35, 50, 72, 113, 55, 147, 50, 0, 11, 3, 226, 130, 172, 57, 146, 34, 139, 88, 0, 0,
+			18, 71, 12, 145, 193, 72, 85, 20, 20, 89, 124, 81, 13, 6, 34, 122, 47, 0, 0, 13, 69, 77, 64, 82, 73, 144, 89, 47, 121, 34,
+			124, 0, 0, 15, 70, 13, 34, 67, 33, 67, 206, 49, 34, 140, 47, 13, 50, 0, 9, 3, 226, 130, 169, 58, 126, 50, 0, 0, 17, 70,
+			52, 244, 137, 5, 37, 25, 65, 126, 34, 124, 6, 130, 47, 37, 0, 11, 68, 28, 198, 78, 56, 81, 55, 124, 50, 0, 9, 67, 72, 81,
+			192, 34, 122, 75, 0, 10, 67, 32, 243, 1, 21, 101, 115, 0, 47, 17, 70, 32, 84, 133, 16, 149, 25, 107, 114, 34, 122, 72, 113, 47,
+			37, 0, 11, 67, 28, 19, 1, 81, 141, 55, 13, 0, 103, 9, 67, 12, 243, 133, 49, 139, 50, 0, 15, 70, 8, 245, 84, 37, 21, 69,
+			71, 137, 47, 6, 132, 49, 0, 6, 195, 84, 51, 1, 13, 10, 3, 226, 130, 168, 34, 137, 48, 132, 0, 0, 15, 70, 64, 198, 77, 61,
+			85, 8, 48, 55, 124, 65, 13, 87, 0, 19, 71, 80, 83, 5, 64, 131, 206, 100, 47, 13, 55, 6, 122, 83, 13, 50, 37, 0, 0, 10,
+			67, 80, 133, 83, 86, 129, 89, 0, 8, 22, 72, 64, 19, 5, 77, 66, 78, 36, 16, 48, 35, 55, 13, 89, 47, 6, 124, 50, 132, 13,
+			0, 10, 67, 64, 197, 83, 48, 55, 129, 89, 0, 15, 69, 52, 145, 4, 5, 144, 65, 4, 124, 72, 72, 6, 141, 0, 11, 67, 21, 129,
+			83, 122, 49, 89, 125, 88, 0, 0, 18, 66, 32, 80, 107, 132, 15, 107, 6, 35, 72, 0, 49, 81, 104, 97, 100, 32, 9, 66, 32, 80,
+			107, 132, 0, 72, 33, 10, 67, 73, 82, 78, 34, 137, 113, 50, 0, 7, 66, 40, 16, 57, 121, 0, 8, 66, 24, 144, 83, 4, 140, 0,
+			0, 9, 198, 56, 21, 9, 88, 149, 25, 17, 17, 70, 52, 18, 143, 72, 149, 25, 65, 13, 75, 126, 34, 113, 47, 37, 0, 0, 14, 67,
+			92, 20, 212, 2, 58, 126, 89, 47, 0, 46, 35, 46, 10, 67, 92, 20, 212, 58, 141, 89, 47, 0, 17, 70, 88, 243, 3, 4, 227, 192,
+			84, 126, 55, 49, 6, 141, 50, 139, 0, 10, 67, 32, 82, 0, 107, 122, 107, 0, 46, 16, 70, 12, 16, 137, 56, 85, 0, 49, 35, 71,
+			125, 50, 13, 47, 0, 0, 16, 70, 32, 245, 83, 80, 243, 128, 107, 57, 137, 89, 47, 13, 50, 0, 9, 198, 4, 229, 9, 28, 83, 128,
+			65, 15, 4, 95, 111, 103, 111, 6, 126, 81, 126, 50, 4, 122, 49, 0, 0, 0, 13, 69, 76, 80, 77, 85, 48, 91, 141, 65, 13, 89,
+			0, 14, 69, 44, 19, 147, 5, 48, 49, 35, 50, 88, 13, 89, 0, 13, 69, 32, 80, 146, 21, 112, 107, 132, 71, 34, 137, 0, 13, 69,
+			84, 225, 9, 21, 48, 129, 50, 72, 37, 88, 0, 13, 69, 76, 84, 137, 21, 48, 89, 145, 34, 37, 88, 0, 8, 197, 61, 85, 12, 5,
+			112, 65, 14, 70, 32, 145, 200, 24, 149, 133, 107, 140, 83, 140, 84, 0, 19, 70, 21, 48, 193, 64, 148, 205, 122, 89, 49, 6, 141, 48,
+			113, 88, 13, 65, 0, 18, 70, 12, 243, 9, 76, 85, 77, 49, 126, 55, 13, 89, 6, 132, 13, 65, 0, 0, 17, 70, 65, 35, 212, 60,
+			51, 204, 48, 34, 139, 47, 13, 49, 126, 55, 0, 16, 70, 64, 84, 134, 20, 53, 0, 48, 114, 83, 122, 49, 47, 0, 36, 16, 70, 64,
+			84, 134, 20, 53, 0, 48, 131, 83, 122, 49, 47, 0, 47, 10, 67, 24, 150, 0, 83, 124, 49, 89, 0, 12, 67, 17, 81, 84, 72, 57,
+			137, 6, 122, 47, 0, 17, 71, 4, 69, 133, 73, 66, 90, 20, 35, 72, 84, 114, 47, 140, 88, 0, 0, 10, 67, 81, 148, 15, 47, 140,
+			48, 139, 0, 11, 4, 95, 104, 111, 107, 107, 6, 117, 49, 0, 0, 10, 66, 37, 48, 2, 124, 88, 0, 35, 46, 16, 70, 32, 19, 73,
+			49, 67, 206, 107, 35, 65, 118, 47, 13, 50, 0, 16, 70, 4, 192, 193, 80, 83, 0, 35, 55, 49, 119, 47, 122, 55, 0, 6, 195, 65,
+			35, 198, 24, 0, 13, 69, 80, 131, 205, 5, 48, 47, 126, 65, 13, 89, 0, 16, 70, 12, 19, 130, 21, 36, 129, 49, 35, 50, 71, 13,
+			34, 13, 0, 13, 69, 24, 17, 67, 21, 48, 83, 132, 89, 132, 88, 0, 0, 11, 68, 72, 82, 75, 36, 34, 141, 49, 132, 0, 0, 7,
+			196, 64, 21, 5, 48, 17, 11, 200, 88, 81, 197, 80, 21, 9, 88, 80, 15, 11, 68, 80, 245, 1, 48, 47, 139, 47, 118, 0, 19, 72,
+			64, 130, 76, 37, 53, 9, 56, 80, 83, 124, 55, 113, 89, 47, 140, 50, 0, 13, 69, 24, 82, 83, 81, 144, 83, 140, 89, 47, 37, 0,
+			14, 69, 12, 19, 129, 73, 144, 49, 13, 50, 143, 34, 37, 0, 12, 68, 8, 20, 201, 48, 71, 141, 88, 118, 0, 103, 0, 10, 67, 21,
+			96, 78, 122, 84, 13, 50, 0, 6, 195, 37, 52, 0, 13, 0, 15, 70, 80, 245, 76, 61, 84, 197, 47, 137, 55, 6, 137, 88, 0, 15,
+			70, 77, 83, 77, 60, 228, 197, 89, 129, 65, 13, 50, 88, 0, 9, 67, 72, 83, 192, 34, 132, 139, 0, 10, 199, 64, 244, 131, 20, 192,
+			73, 56, 16, 15, 70, 13, 33, 86, 5, 52, 197, 49, 34, 13, 84, 35, 89, 0, 0, 15, 70, 24, 18, 82, 21, 53, 0, 83, 143, 34,
+			13, 89, 47, 0, 15, 70, 5, 32, 200, 37, 51, 192, 130, 76, 6, 140, 89, 139, 0, 0, 15, 70, 5, 34, 193, 57, 48, 83, 130, 49,
+			13, 50, 89, 133, 0, 15, 69, 84, 225, 5, 57, 144, 129, 50, 72, 124, 50, 6, 140, 0, 13, 69, 81, 35, 208, 33, 144, 47, 34, 139,
+			83, 37, 0, 8, 197, 77, 84, 150, 21, 144, 36, 14, 69, 77, 84, 150, 21, 144, 89, 151, 84, 141, 0, 105, 47, 13, 69, 77, 84, 150,
+			21, 144, 89, 131, 84, 141, 0, 47, 13, 69, 72, 84, 12, 5, 144, 34, 132, 48, 55, 141, 0, 15, 69, 49, 86, 21, 73, 144, 55, 129,
+			49, 91, 114, 34, 37, 0, 13, 69, 12, 243, 69, 49, 144, 49, 129, 65, 55, 124, 0, 0, 9, 66, 20, 192, 4, 122, 55, 0, 46, 5,
+			194, 36, 64, 13, 0, 10, 67, 32, 20, 192, 107, 35, 88, 0, 42, 17, 67, 32, 20, 192, 107, 4, 35, 88, 113, 47, 0, 49, 81, 105,
+			116, 32, 19, 67, 32, 20, 192, 107, 119, 88, 50, 126, 47, 0, 35, 49, 81, 110, 111, 116, 32, 19, 67, 32, 20, 192, 107, 13, 88, 50,
+			2, 126, 47, 0, 35, 81, 110, 111, 116, 32, 16, 67, 32, 20, 192, 107, 35, 88, 47, 137, 0, 49, 81, 116, 111, 32, 21, 67, 32, 20,
+			192, 2, 107, 119, 88, 2, 71, 124, 50, 0, 35, 81, 98, 101, 101, 110, 32, 11, 67, 32, 20, 192, 107, 35, 88, 0, 46, 49, 12, 67,
+			32, 20, 192, 2, 107, 119, 88, 0, 35, 46, 9, 198, 52, 83, 12, 37, 52, 193, 17, 8, 67, 81, 148, 128, 47, 148, 0, 10, 67, 80,
+			148, 192, 47, 124, 88, 0, 46, 6, 195, 36, 244, 192, 13, 0, 15, 70, 40, 19, 133, 37, 35, 192, 90, 119, 50, 143, 34, 139, 0, 6,
+			195, 48, 20, 4, 13, 0, 15, 70, 77, 65, 80, 32, 83, 128, 89, 47, 132, 84, 13, 50, 0, 15, 70, 20, 209, 82, 76, 243, 128, 122,
+			65, 114, 89, 13, 50, 0, 17, 70, 4, 225, 207, 48, 19, 128, 35, 68, 81, 6, 139, 55, 13, 50, 0, 10, 67, 28, 245, 15, 81, 139,
+			47, 137, 0, 10, 67, 56, 21, 15, 50, 141, 47, 139, 0, 0, 9, 198, 52, 83, 9, 77, 48, 64, 17, 9, 198, 52, 83, 12, 37, 48,
+			64, 17, 13, 69, 72, 17, 199, 20, 64, 34, 35, 81, 125, 72, 0, 14, 69, 53, 148, 137, 4, 64, 65, 124, 34, 124, 35, 72, 0, 13,
+			69, 40, 17, 199, 20, 64, 75, 35, 81, 125, 72, 0, 12, 69, 32, 19, 135, 20, 64, 107, 35, 68, 72, 0, 13, 69, 16, 241, 199, 20,
+			64, 72, 126, 81, 125, 72, 0, 15, 71, 8, 245, 82, 28, 83, 201, 76, 71, 146, 90, 58, 121, 0, 0, 13, 67, 32, 148, 192, 107, 124,
+			88, 0, 72, 34, 46, 10, 17, 71, 44, 132, 149, 76, 50, 5, 88, 49, 34, 137, 89, 76, 122, 83, 0, 12, 67, 48, 20, 192, 4, 55,
+			121, 89, 0, 103, 46, 11, 67, 48, 20, 192, 4, 55, 35, 89, 0, 46, 0, 11, 68, 37, 33, 78, 20, 140, 34, 132, 50, 0, 15, 70,
+			29, 37, 70, 25, 145, 4, 81, 34, 124, 83, 124, 87, 0, 16, 70, 72, 84, 18, 37, 48, 76, 34, 113, 48, 34, 140, 88, 118, 0, 16,
+			70, 72, 83, 78, 4, 229, 0, 34, 122, 65, 50, 13, 50, 47, 0, 13, 68, 64, 20, 212, 4, 48, 121, 89, 47, 13, 0, 103, 10, 68,
+			60, 50, 18, 20, 139, 49, 114, 0, 0, 10, 199, 28, 19, 12, 37, 96, 78, 80, 15, 10, 67, 8, 19, 11, 71, 133, 49, 0, 103, 0,
+			6, 194, 37, 64, 42, 13, 19, 66, 37, 64, 2, 124, 47, 15, 58, 129, 88, 0, 103, 49, 81, 119, 97, 115, 32, 18, 66, 37, 64, 2,
+			124, 47, 15, 58, 126, 88, 0, 49, 81, 119, 97, 115, 32, 16, 66, 37, 64, 2, 124, 47, 15, 124, 88, 0, 49, 81, 105, 115, 32, 18,
+			66, 37, 64, 2, 124, 47, 15, 107, 35, 88, 0, 49, 81, 104, 97, 115, 32, 9, 66, 37, 64, 124, 47, 0, 72, 33, 15, 70, 32, 84,
+			146, 21, 32, 64, 107, 13, 34, 143, 34, 13, 0, 9, 198, 40, 18, 193, 73, 64, 64, 17, 16, 70, 72, 80, 204, 85, 49, 64, 34, 122,
+			49, 55, 137, 89, 0, 103, 12, 69, 4, 195, 9, 20, 64, 35, 55, 140, 72, 0, 12, 4, 95, 98, 114, 118, 71, 34, 6, 132, 84, 0,
+			0, 19, 67, 24, 85, 192, 83, 6, 57, 137, 65, 4, 136, 0, 81, 109, 111, 114, 101, 32, 16, 70, 81, 34, 67, 100, 51, 5, 47, 34,
+			140, 89, 124, 49, 118, 0, 10, 67, 77, 84, 197, 89, 137, 89, 13, 0, 0, 9, 198, 77, 84, 193, 56, 224, 72, 66, 19, 71, 52, 19,
+			1, 100, 19, 1, 52, 65, 35, 55, 141, 6, 121, 55, 13, 65, 0, 14, 69, 28, 149, 8, 84, 32, 81, 124, 47, 107, 129, 71, 0, 0,
+			10, 67, 104, 85, 83, 88, 137, 89, 0, 103, 10, 67, 104, 85, 83, 88, 57, 137, 89, 0, 10, 199, 56, 21, 8, 4, 226, 69, 48, 17,
+			12, 69, 12, 20, 211, 21, 144, 49, 141, 89, 37, 0, 16, 70, 16, 80, 146, 36, 81, 128, 72, 132, 71, 34, 6, 132, 83, 0, 0, 14,
+			69, 32, 244, 141, 20, 192, 107, 136, 65, 6, 122, 55, 0, 14, 69, 37, 52, 129, 20, 192, 124, 88, 34, 132, 118, 0, 103, 18, 4, 95,
+			97, 99, 50, 72, 129, 71, 13, 55, 119, 49, 57, 6, 137, 47, 0, 0, 11, 67, 64, 20, 1, 48, 121, 48, 13, 0, 103, 11, 67, 64,
+			20, 1, 48, 119, 48, 6, 121, 0, 10, 67, 4, 36, 129, 35, 71, 34, 13, 0, 0, 12, 67, 32, 21, 8, 2, 107, 35, 87, 0, 35,
+			46, 15, 69, 4, 208, 90, 60, 224, 35, 65, 119, 88, 126, 50, 0, 103, 13, 69, 76, 243, 5, 52, 224, 89, 126, 55, 13, 65, 0, 18,
+			70, 12, 243, 80, 21, 65, 68, 49, 13, 65, 48, 6, 132, 47, 124, 72, 0, 16, 70, 8, 84, 137, 56, 113, 68, 71, 113, 34, 124, 68,
+			81, 72, 0, 6, 195, 37, 70, 0, 13, 0, 14, 69, 72, 83, 69, 17, 144, 34, 122, 65, 13, 72, 37, 0, 9, 197, 56, 80, 82, 9,
+			144, 66, 49, 10, 67, 37, 34, 83, 140, 34, 124, 89, 0, 11, 67, 5, 129, 83, 35, 49, 89, 125, 88, 0, 0, 15, 66, 16, 240, 72,
+			137, 15, 89, 139, 0, 49, 81, 115, 111, 32, 17, 66, 16, 240, 72, 137, 50, 126, 47, 0, 32, 78, 81, 110, 111, 116, 32, 8, 66, 16,
+			240, 72, 137, 0, 32, 12, 68, 80, 242, 217, 60, 47, 139, 49, 124, 139, 0, 14, 69, 52, 20, 131, 20, 192, 65, 130, 89, 6, 122, 55,
+			0, 10, 67, 49, 146, 78, 55, 140, 124, 50, 0, 11, 200, 12, 245, 78, 80, 84, 129, 13, 64, 67, 12, 69, 12, 130, 83, 20, 192, 76,
+			124, 88, 118, 0, 23, 73, 4, 197, 5, 72, 224, 84, 20, 198, 64, 133, 55, 47, 6, 131, 50, 13, 47, 55, 124, 0, 32, 10, 66, 36,
+			80, 140, 132, 11, 0, 8, 46, 0, 11, 67, 4, 229, 9, 35, 50, 47, 140, 0, 103, 0, 10, 199, 52, 147, 23, 5, 82, 197, 20, 66,
+			15, 69, 76, 145, 206, 60, 224, 89, 4, 140, 50, 6, 126, 50, 0, 0, 17, 70, 52, 145, 5, 88, 83, 128, 65, 4, 124, 72, 6, 132,
+			84, 50, 0, 0, 12, 67, 32, 212, 6, 107, 6, 13, 65, 48, 83, 0, 9, 67, 32, 84, 130, 131, 71, 0, 103, 0, 14, 69, 9, 81,
+			78, 61, 48, 71, 58, 141, 50, 126, 89, 0, 16, 70, 77, 80, 144, 60, 83, 129, 89, 137, 48, 6, 132, 50, 13, 0, 13, 69, 64, 21,
+			8, 61, 48, 48, 141, 87, 126, 89, 0, 0, 9, 67, 72, 245, 84, 34, 138, 47, 0, 11, 68, 4, 66, 69, 84, 119, 72, 57, 137, 0,
+			0, 15, 70, 92, 131, 197, 88, 84, 128, 107, 137, 122, 84, 114, 0, 66, 14, 70, 76, 49, 80, 80, 84, 128, 89, 122, 48, 47, 114, 0,
+			22, 73, 65, 33, 68, 20, 49, 83, 76, 244, 128, 48, 34, 122, 72, 125, 89, 122, 89, 114, 0, 103, 7, 196, 44, 20, 21, 80, 17, 0,
+			11, 68, 12, 132, 137, 76, 49, 34, 124, 89, 0, 0, 7, 196, 56, 85, 133, 72, 32, 13, 69, 80, 240, 137, 5, 48, 47, 13, 71, 147,
+			89, 0, 10, 199, 52, 145, 4, 48, 83, 65, 56, 15, 13, 69, 4, 197, 193, 101, 48, 133, 55, 58, 141, 88, 0, 0, 15, 70, 4, 112,
+			73, 57, 53, 0, 119, 81, 122, 50, 89, 47, 0, 16, 70, 64, 20, 25, 73, 84, 192, 48, 119, 48, 140, 34, 13, 89, 0, 12, 68, 44,
+			128, 75, 36, 49, 35, 49, 37, 0, 103, 11, 68, 16, 148, 200, 100, 72, 124, 91, 37, 0, 15, 70, 12, 243, 131, 32, 84, 192, 49, 126,
+			50, 76, 125, 88, 0, 10, 67, 5, 115, 204, 141, 58, 126, 55, 0, 0, 14, 69, 77, 68, 137, 65, 144, 89, 47, 34, 140, 48, 124, 0,
+			0, 13, 69, 72, 20, 195, 4, 192, 34, 120, 89, 49, 118, 0, 0, 12, 68, 16, 85, 143, 56, 72, 122, 84, 13, 50, 0, 0, 13, 69,
+			72, 80, 71, 4, 224, 34, 141, 81, 13, 50, 0, 14, 69, 80, 18, 87, 4, 224, 47, 140, 6, 58, 121, 50, 0, 17, 71, 12, 19, 66,
+			72, 145, 7, 20, 49, 141, 65, 71, 34, 124, 75, 0, 0, 12, 68, 40, 19, 65, 48, 75, 119, 65, 126, 55, 0, 19, 70, 32, 243, 132,
+			85, 32, 83, 107, 126, 50, 72, 6, 57, 146, 34, 13, 89, 0, 15, 70, 48, 147, 131, 60, 195, 128, 55, 124, 50, 49, 13, 50, 0, 11,
+			68, 77, 112, 84, 32, 89, 58, 126, 87, 0, 16, 70, 64, 19, 131, 72, 80, 83, 48, 35, 50, 49, 34, 144, 89, 0, 0, 7, 194, 36,
+			96, 72, 8, 46, 19, 66, 20, 224, 126, 50, 15, 34, 6, 137, 47, 0, 81, 114, 111, 117, 116, 101, 32, 19, 66, 20, 224, 126, 50, 15,
+			65, 6, 35, 89, 0, 81, 109, 97, 115, 115, 101, 32, 12, 69, 9, 35, 207, 12, 128, 71, 34, 139, 76, 0, 11, 67, 5, 131, 206, 35,
+			49, 89, 126, 50, 0, 0, 10, 67, 36, 225, 25, 124, 50, 72, 37, 0, 12, 3, 95, 51, 88, 87, 6, 150, 47, 37, 0, 105, 11, 3,
+			95, 51, 88, 87, 6, 131, 47, 37, 0, 13, 3, 95, 46, 112, 48, 144, 34, 124, 13, 72, 0, 103, 0, 7, 196, 4, 226, 84, 4, 17,
+			16, 70, 80, 244, 143, 57, 67, 192, 47, 13, 34, 126, 50, 47, 139, 0, 10, 68, 80, 243, 142, 20, 47, 129, 50, 0, 9, 198, 12, 243,
+			148, 20, 229, 0, 38, 9, 198, 12, 243, 148, 20, 229, 0, 36, 10, 198, 12, 243, 148, 20, 229, 0, 65, 47, 18, 70, 12, 192, 82, 36,
+			225, 84, 49, 55, 35, 34, 13, 50, 6, 122, 47, 0, 14, 69, 5, 34, 83, 20, 224, 13, 34, 124, 88, 13, 50, 0, 14, 3, 95, 48,
+			67, 107, 6, 129, 50, 72, 34, 13, 72, 0, 0, 15, 70, 36, 195, 9, 56, 242, 83, 124, 55, 13, 50, 6, 142, 0, 17, 70, 4, 224,
+			76, 101, 50, 83, 119, 50, 35, 55, 13, 89, 124, 89, 0, 0, 15, 70, 80, 129, 82, 21, 48, 64, 47, 13, 34, 132, 88, 13, 0, 13,
+			69, 76, 147, 133, 4, 64, 91, 113, 50, 141, 72, 0, 14, 69, 52, 84, 131, 20, 64, 65, 131, 89, 6, 122, 72, 0, 12, 69, 92, 147,
+			135, 20, 64, 58, 124, 68, 72, 0, 12, 69, 64, 147, 135, 20, 64, 48, 124, 68, 72, 0, 14, 69, 24, 244, 141, 36, 64, 83, 135, 65,
+			6, 124, 72, 0, 13, 69, 8, 19, 135, 20, 64, 71, 35, 68, 81, 72, 0, 0, 16, 70, 52, 20, 131, 20, 195, 1, 65, 130, 89, 6,
+			122, 55, 13, 0, 0, 9, 198, 88, 84, 141, 60, 229, 0, 66, 21, 72, 52, 17, 1, 28, 20, 195, 5, 32, 65, 35, 72, 13, 81, 6,
+			35, 89, 49, 114, 0, 13, 68, 88, 147, 204, 4, 84, 140, 6, 139, 55, 13, 0, 16, 70, 64, 81, 5, 77, 64, 76, 48, 122, 72, 113,
+			89, 47, 118, 0, 14, 70, 12, 244, 144, 61, 32, 76, 49, 135, 48, 34, 118, 0, 0, 12, 67, 84, 229, 15, 4, 129, 50, 108, 117, 0,
+			103, 11, 67, 84, 229, 15, 4, 129, 50, 47, 117, 0, 19, 71, 20, 66, 78, 9, 84, 135, 32, 122, 72, 124, 50, 71, 2, 129, 34, 13,
+			0, 18, 72, 12, 128, 82, 16, 243, 142, 5, 144, 91, 130, 72, 13, 50, 6, 141, 0, 0, 28, 69, 76, 131, 213, 48, 64, 91, 117, 72,
+			107, 35, 84, 47, 116, 0, 74, 32, 10, 82, 104, 97, 118, 101, 32, 116, 111, 32, 26, 69, 76, 131, 213, 48, 64, 91, 117, 72, 107, 35,
+			84, 124, 47, 0, 78, 82, 104, 97, 118, 101, 32, 105, 116, 32, 21, 69, 76, 131, 213, 48, 64, 91, 117, 72, 13, 84, 0, 35, 77, 81,
+			104, 97, 118, 101, 32, 15, 69, 76, 131, 213, 48, 64, 4, 91, 117, 72, 0, 32, 46, 10, 16, 70, 72, 240, 133, 73, 64, 64, 34, 129,
+			71, 6, 131, 47, 13, 0, 16, 70, 88, 83, 148, 85, 32, 64, 84, 122, 50, 47, 6, 146, 13, 0, 13, 69, 52, 20, 129, 84, 64, 65,
+			13, 34, 133, 72, 0, 0, 10, 67, 64, 84, 5, 48, 122, 48, 141, 0, 9, 198, 12, 129, 86, 20, 195, 5, 17, 8, 67, 61, 84, 197,
+			137, 88, 0, 10, 67, 60, 180, 129, 139, 49, 34, 13, 0, 17, 70, 20, 228, 197, 52, 35, 5, 126, 50, 89, 6, 126, 65, 71, 118, 0,
+			16, 70, 16, 148, 195, 37, 3, 5, 72, 124, 89, 6, 140, 48, 118, 0, 16, 70, 12, 130, 80, 61, 67, 5, 76, 113, 48, 139, 47, 55,
+			141, 0, 6, 195, 60, 65, 128, 13, 6, 195, 57, 148, 197, 13, 6, 195, 21, 129, 64, 13, 0, 19, 71, 40, 84, 149, 76, 19, 5, 52,
+			75, 13, 34, 137, 89, 13, 55, 13, 65, 0, 0, 10, 67, 49, 82, 83, 55, 137, 124, 89, 0, 18, 71, 52, 81, 9, 4, 85, 129, 48,
+			65, 122, 72, 124, 6, 132, 84, 118, 0, 15, 3, 226, 136, 158, 124, 50, 83, 6, 124, 50, 113, 47, 37, 0, 0, 15, 69, 72, 17, 129,
+			20, 192, 34, 121, 83, 140, 6, 122, 55, 0, 15, 69, 52, 19, 149, 20, 192, 65, 35, 50, 58, 6, 122, 55, 0, 10, 67, 77, 81, 90,
+			89, 137, 113, 88, 0, 12, 68, 25, 81, 71, 60, 83, 58, 141, 81, 139, 0, 23, 73, 5, 81, 205, 20, 229, 1, 80, 147, 206, 133, 81,
+			65, 122, 50, 47, 6, 141, 91, 13, 50, 0, 0, 11, 67, 92, 84, 133, 2, 58, 131, 0, 35, 46, 28, 67, 32, 84, 133, 107, 6, 145,
+			15, 13, 50, 72, 15, 86, 6, 143, 0, 82, 97, 110, 100, 32, 116, 104, 101, 114, 101, 32, 12, 68, 21, 134, 15, 56, 122, 49, 89, 126,
+			50, 0, 9, 67, 20, 148, 133, 143, 34, 13, 0, 12, 68, 25, 33, 79, 56, 83, 34, 132, 126, 50, 0, 11, 68, 4, 112, 73, 56, 119,
+			81, 122, 50, 0, 16, 3, 226, 137, 160, 50, 126, 47, 6, 132, 49, 58, 118, 47, 117, 0, 0, 12, 68, 81, 37, 68, 100, 47, 34, 137,
+			72, 37, 0, 14, 70, 93, 33, 84, 12, 129, 68, 34, 122, 76, 125, 72, 0, 16, 70, 77, 3, 207, 56, 97, 68, 89, 48, 137, 50, 83,
+			122, 72, 0, 17, 70, 76, 80, 207, 56, 65, 68, 89, 13, 49, 126, 50, 72, 125, 72, 0, 12, 68, 72, 84, 12, 100, 34, 113, 48, 55,
+			140, 0, 15, 70, 72, 80, 193, 48, 193, 68, 34, 113, 49, 133, 55, 72, 0, 12, 68, 12, 16, 212, 36, 49, 35, 49, 47, 140, 0, 13,
+			68, 4, 212, 12, 100, 35, 65, 48, 55, 124, 0, 32, 0, 19, 71, 36, 212, 5, 72, 97, 67, 80, 124, 65, 48, 6, 131, 83, 122, 49,
+			47, 0, 17, 70, 17, 32, 77, 5, 66, 67, 72, 34, 13, 65, 35, 47, 124, 49, 0, 15, 3, 226, 136, 154, 89, 49, 58, 4, 143, 34,
+			6, 137, 47, 0, 0, 13, 68, 52, 20, 137, 60, 65, 130, 34, 124, 139, 0, 103, 17, 66, 48, 16, 55, 119, 107, 142, 13, 0, 81, 106,
+			111, 108, 108, 97, 32, 13, 69, 61, 33, 5, 4, 192, 135, 72, 6, 144, 55, 0, 16, 66, 48, 16, 55, 35, 15, 84, 6, 132, 0, 81,
+			118, 105, 101, 32, 6, 194, 48, 16, 13, 42, 9, 66, 48, 16, 4, 55, 35, 0, 46, 18, 66, 40, 80, 90, 13, 47, 122, 65, 0, 81,
+			116, 39, 97, 105, 109, 101, 32, 21, 66, 40, 80, 90, 13, 50, 13, 89, 6, 141, 0, 82, 110, 101, 32, 115, 97, 105, 115, 32, 13, 3,
+			95, 49, 57, 50, 6, 140, 50, 47, 132, 50, 0, 0, 9, 198, 28, 243, 9, 5, 66, 0, 17, 12, 68, 76, 147, 79, 56, 89, 140, 65,
+			13, 50, 0, 15, 70, 29, 84, 141, 84, 178, 9, 81, 146, 65, 117, 49, 37, 0, 19, 72, 84, 225, 5, 72, 194, 78, 29, 48, 129, 50,
+			72, 114, 55, 124, 68, 88, 0, 10, 67, 36, 67, 25, 140, 72, 55, 124, 0, 6, 195, 5, 2, 64, 13, 11, 3, 95, 49, 56, 6, 141,
+			47, 132, 50, 0, 0, 17, 71, 80, 83, 142, 21, 52, 197, 20, 47, 122, 50, 13, 89, 6, 132, 0, 8, 197, 76, 148, 8, 60, 224, 16,
+			11, 67, 21, 130, 84, 122, 81, 88, 124, 47, 0, 10, 67, 21, 98, 84, 122, 84, 113, 47, 0, 14, 69, 8, 21, 13, 4, 224, 71, 35,
+			47, 65, 35, 50, 0, 16, 3, 226, 151, 143, 71, 55, 4, 35, 49, 89, 6, 131, 49, 118, 0, 0, 18, 71, 77, 68, 133, 4, 208, 133,
+			16, 89, 47, 34, 132, 65, 71, 122, 72, 0, 16, 71, 12, 245, 78, 80, 84, 133, 16, 49, 138, 50, 47, 114, 72, 0, 0, 12, 68, 8,
+			85, 23, 76, 71, 122, 47, 117, 89, 0, 6, 195, 21, 36, 194, 13, 0, 16, 70, 28, 83, 210, 28, 147, 129, 75, 135, 6, 75, 132, 50,
+			13, 0, 9, 198, 32, 243, 143, 49, 83, 21, 67, 0, 13, 68, 44, 80, 78, 84, 49, 124, 6, 121, 50, 137, 0, 18, 70, 81, 34, 66,
+			84, 224, 76, 47, 34, 140, 71, 6, 57, 137, 50, 118, 0, 15, 70, 80, 81, 84, 61, 64, 76, 47, 132, 108, 139, 47, 118, 0, 15, 70,
+			64, 20, 133, 57, 64, 76, 48, 114, 122, 50, 47, 118, 0, 0, 13, 70, 48, 242, 78, 56, 148, 128, 55, 129, 50, 144, 0, 16, 71, 29,
+			33, 69, 57, 114, 67, 32, 81, 34, 122, 50, 124, 76, 0, 14, 70, 76, 243, 4, 36, 84, 128, 89, 139, 55, 75, 114, 0, 14, 70, 64,
+			147, 206, 20, 84, 128, 48, 147, 50, 6, 145, 0, 13, 70, 52, 19, 136, 61, 84, 128, 65, 35, 50, 149, 0, 16, 70, 36, 224, 207, 52,
+			147, 135, 124, 50, 49, 129, 65, 124, 68, 0, 9, 198, 32, 245, 197, 88, 84, 128, 66, 14, 70, 28, 192, 67, 36, 84, 128, 81, 55, 141,
+			91, 114, 0, 14, 70, 25, 35, 212, 32, 84, 128, 83, 34, 126, 87, 114, 0, 15, 70, 4, 195, 15, 88, 84, 128, 133, 55, 6, 139, 84,
+			114, 0, 11, 3, 226, 136, 146, 65, 140, 50, 13, 89, 0, 0, 11, 68, 32, 21, 133, 76, 107, 35, 84, 88, 0, 12, 68, 88, 83, 149,
+			76, 84, 132, 50, 13, 89, 0, 14, 70, 76, 85, 133, 72, 19, 0, 89, 122, 84, 34, 118, 0, 13, 3, 95, 49, 49, 124, 55, 6, 122,
+			84, 13, 50, 0, 0, 16, 70, 12, 20, 143, 48, 147, 133, 49, 35, 34, 13, 55, 140, 50, 0, 11, 67, 60, 18, 21, 139, 6, 121, 107,
+			137, 0, 17, 70, 52, 81, 9, 12, 147, 133, 65, 122, 72, 13, 89, 13, 50, 0, 103, 15, 70, 52, 81, 9, 12, 147, 133, 65, 122, 72,
+			89, 13, 50, 0, 16, 70, 44, 84, 143, 76, 83, 133, 49, 122, 34, 13, 89, 132, 50, 0, 9, 198, 36, 225, 5, 24, 147, 133, 67, 18,
+			71, 28, 83, 148, 48, 83, 69, 56, 75, 122, 50, 47, 118, 65, 13, 50, 0, 16, 70, 24, 83, 73, 56, 147, 133, 83, 122, 65, 13, 50,
+			124, 50, 0, 11, 68, 12, 81, 1, 72, 89, 132, 72, 114, 0, 10, 3, 95, 49, 48, 47, 6, 122, 50, 0, 0, 12, 70, 40, 16, 209,
+			84, 84, 192, 90, 35, 49, 0, 9, 198, 88, 148, 135, 36, 224, 76, 15, 14, 70, 32, 20, 142, 21, 52, 192, 107, 130, 50, 125, 89, 0,
+			14, 70, 12, 128, 83, 76, 148, 192, 76, 35, 89, 37, 0, 103, 13, 70, 12, 128, 83, 76, 148, 192, 91, 35, 89, 37, 0, 13, 3, 95,
+			49, 51, 87, 6, 150, 47, 132, 50, 0, 105, 12, 3, 95, 49, 51, 87, 6, 131, 47, 132, 50, 0, 0, 11, 68, 20, 66, 84, 32, 132,
+			72, 124, 87, 0, 18, 71, 21, 21, 73, 88, 240, 193, 48, 113, 49, 58, 124, 84, 13, 49, 118, 0, 10, 199, 12, 19, 143, 56, 144, 193,
+			48, 17, 15, 70, 4, 230, 84, 32, 147, 135, 122, 50, 113, 87, 124, 68, 0, 6, 195, 60, 196, 3, 13, 12, 3, 95, 49, 50, 47, 58,
+			6, 122, 55, 84, 0, 0, 13, 69, 20, 194, 74, 4, 128, 113, 55, 140, 75, 13, 0, 12, 68, 16, 84, 133, 44, 72, 122, 34, 124, 49,
+			0, 14, 69, 53, 83, 137, 12, 128, 65, 57, 137, 50, 124, 49, 0, 12, 69, 33, 84, 146, 4, 128, 107, 13, 34, 121, 0, 13, 69, 28,
+			20, 137, 76, 128, 81, 143, 34, 124, 91, 0, 7, 196, 20, 35, 207, 44, 20, 13, 69, 8, 197, 73, 76, 128, 71, 55, 137, 124, 91, 0,
+			12, 201, 4, 99, 210, 20, 209, 78, 80, 147, 206, 66, 13, 3, 95, 49, 53, 83, 6, 124, 83, 47, 132, 50, 0, 15, 4, 95, 99, 121,
+			114, 89, 113, 34, 6, 124, 55, 124, 49, 0, 0, 12, 3, 95, 49, 52, 83, 6, 136, 47, 132, 50, 0, 0, 10, 67, 16, 245, 8, 72,
+			129, 87, 0, 76, 18, 67, 92, 149, 8, 58, 2, 124, 86, 86, 115, 0, 34, 81, 116, 104, 101, 32, 10, 67, 92, 149, 8, 58, 124, 86,
+			0, 72, 14, 69, 56, 148, 211, 4, 224, 50, 124, 89, 121, 50, 0, 103, 16, 71, 21, 66, 5, 72, 145, 7, 20, 122, 87, 14, 34, 124,
+			75, 0, 14, 69, 80, 19, 80, 60, 224, 47, 35, 65, 48, 126, 50, 0, 12, 68, 76, 48, 76, 100, 89, 49, 141, 55, 124, 0, 18, 71,
+			65, 33, 67, 37, 2, 67, 20, 48, 34, 122, 89, 113, 48, 124, 89, 0, 13, 68, 56, 240, 140, 100, 50, 139, 71, 55, 124, 0, 32, 17,
+			71, 20, 229, 15, 85, 32, 71, 20, 126, 50, 108, 117, 34, 121, 90, 0, 16, 3, 95, 49, 55, 89, 6, 13, 84, 13, 50, 47, 132, 50,
+			0, 107, 15, 3, 95, 49, 55, 89, 6, 122, 84, 13, 50, 47, 132, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 124, 49, 89, 47, 132,
+			50, 0, 0, 12, 69, 56, 144, 200, 60, 192, 50, 124, 49, 118, 0, 13, 69, 16, 19, 137, 76, 128, 72, 141, 50, 124, 91, 0, 22, 73,
+			60, 211, 137, 76, 50, 69, 56, 49, 64, 126, 65, 50, 6, 124, 89, 124, 13, 50, 89, 0, 11, 68, 44, 22, 65, 44, 49, 140, 35, 49,
+			0, 21, 73, 12, 243, 69, 85, 4, 1, 56, 49, 64, 49, 129, 65, 6, 129, 48, 13, 50, 89, 0, 0, 16, 67, 52, 19, 153, 65, 122,
+			50, 124, 13, 84, 0, 81, 111, 102, 32, 11, 67, 52, 19, 153, 65, 122, 50, 37, 0, 34, 11, 200, 33, 148, 15, 13, 34, 84, 21, 48,
+			16, 19, 72, 24, 21, 143, 85, 34, 84, 21, 48, 83, 141, 84, 14, 34, 113, 47, 89, 0, 20, 72, 5, 32, 200, 36, 209, 68, 21, 48,
+			130, 49, 124, 65, 6, 132, 72, 132, 88, 0, 15, 3, 95, 55, 88, 89, 6, 13, 84, 13, 50, 47, 37, 0, 107, 14, 3, 95, 55, 88,
+			89, 6, 122, 84, 13, 50, 47, 37, 0, 0, 18, 72, 44, 132, 149, 76, 128, 200, 21, 96, 49, 34, 137, 89, 76, 122, 83, 0, 15, 69,
+			16, 21, 19, 84, 224, 72, 121, 47, 89, 13, 50, 0, 103, 12, 68, 56, 17, 9, 4, 50, 121, 72, 57, 13, 0, 11, 68, 16, 83, 9,
+			4, 72, 132, 55, 144, 0, 13, 69, 4, 68, 137, 4, 224, 141, 72, 34, 144, 50, 0, 12, 68, 21, 32, 83, 20, 113, 34, 141, 89, 0,
+			103, 11, 68, 21, 32, 83, 20, 113, 34, 141, 88, 0, 12, 68, 16, 82, 67, 20, 72, 132, 6, 140, 89, 0, 10, 68, 8, 82, 71, 20,
+			71, 141, 90, 0, 6, 195, 52, 245, 4, 13, 0, 20, 71, 76, 182, 82, 60, 50, 197, 80, 89, 49, 6, 140, 34, 4, 126, 49, 124, 47,
+			0, 17, 70, 12, 194, 84, 61, 34, 83, 49, 55, 124, 47, 114, 34, 125, 89, 0, 0, 9, 198, 16, 84, 208, 37, 65, 64, 8, 14, 70,
+			48, 17, 137, 81, 65, 64, 55, 119, 83, 132, 47, 0, 15, 70, 92, 80, 147, 37, 65, 64, 58, 122, 71, 89, 140, 47, 0, 15, 70, 84,
+			224, 87, 5, 33, 64, 129, 50, 13, 58, 6, 143, 0, 15, 70, 76, 80, 210, 21, 65, 64, 89, 113, 49, 34, 132, 47, 0, 15, 70, 72,
+			148, 15, 77, 65, 64, 34, 113, 48, 126, 89, 47, 0, 16, 70, 72, 84, 208, 37, 65, 64, 34, 122, 89, 48, 124, 47, 0, 103, 15, 70,
+			72, 84, 208, 37, 65, 64, 34, 122, 89, 48, 140, 47, 0, 15, 70, 72, 84, 212, 37, 97, 64, 34, 122, 89, 47, 124, 84, 0, 16, 70,
+			72, 84, 208, 37, 65, 64, 34, 122, 89, 48, 113, 47, 0, 103, 15, 70, 65, 33, 76, 5, 65, 64, 48, 34, 122, 55, 13, 47, 0, 9,
+			198, 64, 194, 67, 5, 65, 64, 66, 10, 198, 52, 19, 132, 5, 65, 64, 66, 36, 15, 70, 36, 228, 208, 37, 33, 64, 124, 50, 89, 48,
+			6, 148, 0, 9, 198, 25, 34, 71, 5, 65, 64, 16, 16, 70, 20, 229, 5, 57, 65, 64, 126, 50, 47, 6, 126, 50, 47, 0, 16, 70,
+			20, 224, 204, 5, 97, 64, 126, 50, 49, 55, 141, 84, 0, 103, 16, 70, 16, 85, 5, 57, 65, 64, 72, 141, 47, 6, 126, 50, 47, 0,
+			16, 70, 16, 85, 1, 57, 65, 64, 72, 141, 47, 6, 126, 50, 47, 0, 16, 70, 12, 243, 131, 5, 97, 64, 49, 126, 50, 49, 6, 141,
+			84, 0, 15, 70, 12, 243, 12, 5, 65, 64, 49, 139, 55, 141, 47, 0, 103, 17, 70, 12, 83, 5, 9, 33, 64, 89, 122, 55, 6, 122,
+			71, 34, 13, 0, 14, 70, 8, 150, 129, 73, 33, 64, 71, 125, 88, 6, 130, 0, 9, 198, 4, 230, 77, 61, 33, 64, 67, 0, 15, 70,
+			4, 65, 76, 4, 145, 5, 35, 72, 13, 55, 141, 72, 0, 9, 198, 77, 64, 77, 64, 81, 5, 66, 16, 70, 72, 83, 133, 28, 17, 5,
+			34, 122, 50, 13, 81, 141, 72, 0, 9, 198, 48, 83, 79, 56, 17, 5, 67, 9, 67, 9, 84, 192, 71, 129, 89, 0, 0, 15, 70, 72,
+			18, 77, 20, 229, 0, 34, 141, 65, 13, 50, 47, 0, 11, 200, 32, 19, 2, 21, 33, 9, 21, 32, 15, 20, 71, 16, 148, 12, 60, 208,
+			67, 100, 72, 124, 48, 55, 6, 139, 65, 13, 89, 37, 0, 19, 72, 12, 128, 78, 16, 83, 9, 21, 32, 91, 35, 50, 72, 13, 55, 6,
+			145, 0, 19, 71, 5, 85, 15, 13, 32, 67, 100, 133, 47, 6, 126, 49, 34, 13, 89, 37, 0, 10, 3, 95, 49, 111, 83, 6, 150, 0,
+			105, 9, 3, 95, 49, 111, 83, 6, 131, 0, 0, 16, 70, 8, 83, 215, 84, 193, 128, 71, 141, 13, 58, 117, 55, 83, 0, 0, 16, 70,
+			8, 80, 193, 85, 49, 64, 71, 124, 49, 129, 88, 0, 66, 8, 19, 72, 72, 84, 212, 5, 84, 129, 57, 64, 34, 122, 89, 47, 34, 126,
+			50, 47, 0, 9, 198, 24, 21, 9, 29, 81, 64, 17, 23, 72, 16, 81, 146, 4, 115, 69, 57, 64, 72, 132, 83, 34, 35, 81, 65, 6,
+			122, 50, 47, 0, 135, 13, 70, 12, 240, 203, 21, 145, 64, 49, 126, 49, 140, 0, 9, 198, 8, 20, 143, 69, 81, 64, 17, 9, 198, 4,
+			69, 133, 73, 49, 64, 66, 0, 9, 67, 81, 165, 64, 47, 89, 137, 0, 9, 198, 76, 128, 78, 28, 128, 73, 66, 9, 67, 76, 149, 5,
+			89, 140, 47, 0, 18, 70, 40, 84, 143, 8, 240, 77, 75, 122, 34, 13, 71, 6, 139, 13, 65, 0, 11, 3, 224, 165, 164, 72, 129, 50,
+			72, 119, 0, 0, 6, 195, 4, 116, 12, 13, 0, 11, 68, 52, 144, 193, 32, 65, 140, 49, 13, 0, 8, 197, 76, 128, 90, 4, 208, 17,
+			12, 68, 32, 243, 193, 32, 107, 6, 137, 6, 121, 0, 0, 13, 69, 64, 83, 131, 36, 192, 48, 122, 50, 89, 118, 0, 0, 16, 70, 72,
+			84, 1, 73, 65, 69, 34, 122, 48, 130, 47, 6, 141, 0, 16, 70, 56, 81, 204, 36, 113, 69, 50, 122, 81, 55, 124, 90, 141, 0, 10,
+			67, 16, 245, 133, 72, 139, 84, 0, 38, 10, 67, 16, 245, 133, 72, 139, 84, 0, 36, 13, 4, 95, 97, 99, 117, 119, 49, 57, 6, 137,
+			47, 0, 0, 7, 196, 44, 146, 5, 36, 66, 10, 68, 20, 20, 140, 100, 131, 55, 124, 0, 10, 3, 95, 50, 111, 89, 6, 122, 49, 0,
+			11, 4, 95, 99, 114, 108, 49, 6, 131, 55, 0, 0, 14, 70, 29, 82, 78, 56, 84, 211, 81, 124, 50, 124, 89, 0, 10, 67, 45, 34,
+			83, 49, 34, 124, 89, 0, 11, 68, 37, 50, 65, 32, 140, 88, 6, 147, 0, 11, 68, 72, 18, 129, 32, 34, 121, 75, 121, 0, 16, 69,
+			21, 133, 18, 20, 208, 122, 49, 89, 47, 34, 6, 132, 65, 0, 0, 0, 14, 67, 52, 134, 128, 65, 122, 81, 13, 107, 131, 47, 89, 0,
+			0, 10, 199, 64, 81, 5, 77, 68, 137, 4, 17, 19, 71, 52, 16, 193, 16, 19, 73, 4, 65, 35, 49, 13, 72, 6, 141, 65, 144, 0,
+			16, 70, 16, 81, 137, 12, 149, 0, 72, 122, 83, 113, 89, 124, 47, 0, 4, 193, 160, 43, 0, 12, 68, 64, 84, 143, 80, 48, 122, 34,
+			6, 139, 0, 9, 198, 61, 85, 3, 72, 244, 0, 65, 0, 8, 197, 28, 20, 146, 61, 64, 17, 15, 70, 12, 240, 85, 80, 131, 210, 49,
+			139, 6, 133, 87, 114, 0, 0, 12, 201, 84, 197, 18, 5, 98, 79, 48, 85, 0, 67, 10, 67, 16, 83, 9, 72, 122, 55, 124, 0, 16,
+			3, 226, 150, 160, 71, 55, 6, 35, 49, 89, 49, 58, 6, 143, 0, 0, 9, 198, 36, 228, 212, 20, 17, 0, 8, 16, 70, 8, 20, 133,
+			57, 68, 192, 71, 35, 34, 13, 50, 47, 89, 0, 12, 69, 76, 145, 206, 21, 32, 89, 140, 50, 114, 0, 17, 70, 65, 33, 84, 72, 144,
+			76, 48, 34, 132, 47, 34, 6, 140, 118, 0, 20, 71, 36, 225, 140, 84, 83, 154, 4, 124, 50, 83, 55, 137, 6, 122, 50, 88, 13, 0,
+			11, 67, 16, 243, 148, 72, 139, 50, 47, 0, 46, 10, 3, 95, 51, 111, 87, 6, 150, 0, 105, 9, 3, 95, 51, 111, 87, 6, 131, 0,
+			8, 4, 95, 35, 114, 100, 72, 0, 0, 15, 70, 76, 83, 129, 80, 244, 128, 89, 122, 50, 13, 47, 114, 0, 14, 70, 61, 4, 15, 76,
+			84, 128, 13, 48, 139, 88, 114, 0, 15, 70, 48, 16, 143, 72, 84, 128, 55, 141, 71, 13, 34, 114, 0, 9, 198, 37, 3, 1, 100, 84,
+			128, 20, 0, 0, 10, 68, 61, 85, 5, 72, 138, 47, 114, 0, 15, 70, 40, 82, 15, 88, 18, 0, 75, 13, 107, 139, 84, 13, 0, 13,
+			3, 95, 50, 88, 47, 58, 6, 122, 50, 108, 37, 0, 0, 12, 69, 92, 149, 8, 21, 32, 58, 124, 86, 114, 0, 13, 69, 76, 243, 4,
+			21, 32, 89, 121, 72, 114, 0, 103, 13, 69, 76, 243, 4, 21, 32, 89, 126, 55, 72, 114, 0, 9, 198, 60, 211, 137, 9, 84, 192, 65,
+			16, 70, 52, 147, 137, 9, 84, 192, 65, 124, 50, 124, 71, 129, 89, 0, 15, 70, 36, 229, 5, 73, 96, 76, 124, 50, 47, 114, 84, 118,
+			0, 10, 198, 28, 241, 4, 21, 52, 192, 103, 16, 20, 73, 8, 83, 12, 100, 16, 200, 36, 225, 192, 71, 122, 55, 124, 141, 49, 124, 68,
+			0, 0, 10, 199, 16, 240, 212, 72, 147, 129, 48, 15, 0, 16, 70, 52, 144, 200, 36, 112, 78, 65, 124, 91, 124, 81, 13, 50, 0, 15,
+			69, 8, 241, 207, 81, 192, 98, 111, 103, 111, 116, 97, 0, 29, 16, 69, 8, 83, 135, 4, 192, 71, 4, 122, 50, 81, 6, 133, 55, 0,
+			20, 72, 72, 80, 201, 65, 35, 195, 4, 192, 34, 113, 89, 124, 48, 34, 13, 49, 118, 0, 0, 12, 68, 5, 4, 143, 56, 141, 48, 34,
+			13, 50, 0, 0, 14, 69, 9, 33, 77, 20, 224, 71, 34, 122, 65, 13, 50, 0, 13, 69, 92, 83, 23, 100, 224, 58, 122, 55, 124, 50,
+			0, 14, 69, 89, 83, 3, 4, 224, 84, 129, 55, 49, 13, 50, 0, 11, 68, 80, 241, 1, 100, 47, 13, 72, 141, 0, 13, 3, 226, 136,
+			171, 124, 50, 47, 124, 81, 34, 118, 0, 0, 19, 8, 112, 105, 195, 177, 97, 116, 97, 115, 48, 132, 67, 6, 35, 47, 119, 88, 0, 12,
+			201, 24, 244, 133, 76, 131, 210, 80, 83, 128, 66, 0, 13, 69, 77, 147, 66, 60, 192, 89, 124, 65, 71, 118, 0, 15, 70, 72, 84, 212,
+			25, 83, 0, 34, 122, 89, 47, 83, 118, 0, 0, 21, 72, 65, 149, 8, 4, 115, 210, 5, 48, 48, 140, 87, 6, 35, 81, 13, 34, 13,
+			89, 0, 20, 71, 25, 35, 206, 81, 0, 71, 20, 83, 34, 6, 129, 50, 47, 48, 4, 141, 75, 0, 6, 195, 4, 16, 64, 13, 0, 12,
+			68, 76, 147, 131, 20, 89, 124, 50, 89, 0, 8, 11, 68, 4, 194, 67, 20, 35, 55, 124, 89, 0, 14, 68, 44, 244, 133, 4, 49, 114,
+			34, 6, 132, 13, 0, 103, 13, 68, 44, 244, 133, 4, 49, 134, 34, 6, 132, 13, 0, 11, 68, 13, 84, 147, 20, 49, 151, 89, 0, 105,
+			10, 68, 13, 84, 147, 20, 49, 131, 89, 0, 13, 68, 8, 192, 83, 20, 71, 55, 121, 88, 6, 141, 0, 12, 68, 5, 35, 205, 4, 119,
+			34, 139, 65, 13, 0, 0, 10, 67, 72, 84, 15, 34, 132, 48, 139, 0, 0, 14, 70, 92, 146, 77, 61, 65, 64, 58, 132, 65, 139, 47,
+			0, 14, 70, 52, 17, 213, 37, 33, 64, 65, 13, 81, 58, 148, 0, 16, 7, 104, 97, 119, 97, 105, 39, 105, 107, 13, 58, 6, 140, 132,
+			0, 15, 70, 61, 85, 12, 37, 97, 64, 138, 47, 55, 6, 124, 84, 0, 13, 70, 56, 245, 200, 21, 33, 64, 50, 139, 58, 143, 0, 9,
+			198, 28, 20, 143, 81, 65, 64, 17, 17, 70, 21, 129, 67, 85, 65, 64, 122, 49, 89, 113, 49, 57, 137, 47, 0, 16, 70, 13, 33, 77,
+			5, 65, 64, 49, 34, 132, 65, 141, 47, 0, 103, 14, 70, 12, 83, 147, 85, 33, 64, 89, 122, 50, 91, 114, 0, 14, 70, 12, 21, 137,
+			5, 33, 64, 49, 35, 84, 124, 130, 0, 10, 67, 12, 19, 22, 49, 35, 84, 0, 103, 9, 67, 12, 19, 22, 49, 121, 84, 0, 14, 70,
+			5, 84, 212, 21, 33, 64, 133, 89, 47, 6, 145, 0, 0, 9, 67, 4, 50, 25, 141, 49, 37, 0, 0, 11, 68, 40, 244, 135, 20, 107,
+			136, 107, 141, 0, 11, 68, 20, 147, 165, 56, 122, 50, 132, 50, 0, 11, 200, 52, 18, 78, 80, 18, 78, 21, 32, 66, 10, 68, 24, 244,
+			131, 20, 83, 136, 89, 0, 11, 68, 12, 19, 143, 20, 49, 13, 50, 137, 0, 11, 68, 4, 226, 83, 20, 35, 50, 124, 89, 0, 19, 72,
+			4, 69, 133, 73, 66, 83, 21, 32, 35, 72, 84, 114, 47, 140, 88, 114, 0, 10, 3, 95, 53, 111, 83, 6, 124, 83, 0, 11, 3, 95,
+			63, 63, 89, 124, 65, 71, 118, 0, 0, 13, 67, 49, 65, 0, 55, 124, 65, 113, 47, 113, 72, 0, 0, 14, 70, 80, 129, 82, 21, 49,
+			64, 47, 13, 34, 132, 88, 0, 16, 70, 20, 195, 213, 37, 49, 64, 122, 55, 137, 58, 6, 132, 88, 0, 9, 198, 77, 84, 18, 37, 49,
+			64, 66, 9, 198, 77, 81, 134, 85, 49, 64, 66, 21, 72, 76, 80, 207, 56, 67, 69, 57, 64, 89, 13, 49, 126, 50, 72, 65, 13, 50,
+			47, 0, 14, 70, 12, 129, 77, 37, 49, 64, 91, 13, 65, 132, 88, 0, 5, 194, 49, 64, 24, 11, 66, 53, 32, 65, 124, 89, 47, 114,
+			0, 24, 0, 10, 67, 64, 21, 5, 48, 35, 108, 141, 0, 10, 67, 48, 21, 129, 55, 121, 84, 13, 0, 9, 67, 24, 85, 5, 83, 141,
+			47, 0, 10, 67, 16, 85, 129, 72, 132, 84, 13, 0, 11, 3, 95, 52, 88, 83, 6, 136, 47, 37, 0, 0, 10, 68, 37, 51, 1, 100,
+			140, 55, 13, 0, 9, 198, 12, 240, 84, 80, 18, 76, 18, 0, 23, 67, 32, 244, 147, 135, 6, 72, 131, 84, 88, 0, 81, 100, 39, 111,
+			101, 117, 118, 114, 101, 115, 32, 10, 67, 21, 35, 211, 144, 34, 126, 89, 0, 0, 13, 68, 64, 16, 140, 60, 48, 121, 71, 55, 139, 0,
+			103, 0, 19, 67, 32, 21, 133, 107, 119, 84, 50, 126, 47, 0, 35, 49, 81, 110, 111, 116, 32, 19, 67, 32, 21, 133, 107, 119, 84, 50,
+			4, 126, 47, 0, 35, 81, 110, 111, 116, 32, 21, 67, 32, 21, 133, 2, 107, 119, 84, 2, 71, 124, 50, 0, 35, 81, 98, 101, 101, 110,
+			32, 13, 67, 32, 21, 133, 107, 35, 84, 0, 35, 46, 72, 10, 10, 67, 48, 149, 133, 55, 124, 84, 0, 36, 10, 67, 48, 149, 133, 55,
+			140, 84, 0, 47, 11, 67, 8, 85, 1, 71, 141, 47, 13, 0, 103, 10, 67, 8, 85, 1, 71, 132, 47, 13, 0, 10, 67, 4, 229, 5,
+			35, 50, 47, 132, 0, 0, 14, 70, 40, 84, 146, 5, 33, 0, 75, 114, 34, 130, 72, 0, 9, 198, 37, 48, 193, 72, 147, 212, 66, 13,
+			68, 56, 19, 205, 36, 50, 141, 6, 139, 65, 37, 0, 11, 68, 76, 147, 129, 36, 89, 140, 50, 140, 0, 9, 198, 32, 20, 150, 5, 33,
+			0, 16, 9, 4, 95, 35, 115, 116, 89, 47, 0, 0, 11, 68, 13, 40, 77, 20, 49, 34, 122, 65, 0, 0, 10, 66, 28, 240, 4, 81,
+			139, 0, 10, 46, 15, 66, 48, 80, 55, 132, 6, 35, 50, 0, 81, 97, 110, 110, 32, 15, 69, 77, 147, 148, 5, 128, 89, 124, 50, 108,
+			35, 49, 89, 0, 9, 66, 48, 80, 55, 13, 23, 0, 46, 16, 69, 12, 243, 150, 21, 128, 49, 126, 50, 84, 6, 122, 49, 89, 0, 18,
+			4, 95, 115, 117, 98, 89, 4, 129, 71, 89, 49, 34, 124, 48, 47, 15, 0, 0, 21, 72, 72, 130, 78, 60, 49, 82, 61, 48, 34, 140,
+			50, 6, 126, 89, 13, 34, 13, 89, 0, 14, 70, 52, 19, 77, 61, 66, 0, 65, 35, 65, 13, 87, 0, 12, 3, 95, 53, 88, 83, 6,
+			124, 83, 47, 37, 0, 0, 25, 67, 53, 84, 212, 65, 4, 129, 89, 47, 35, 84, 47, 116, 0, 35, 82, 104, 97, 118, 101, 32, 116, 111,
+			32, 21, 67, 53, 84, 212, 65, 129, 89, 47, 107, 35, 84, 0, 35, 49, 81, 104, 97, 118, 101, 32, 20, 67, 53, 84, 212, 65, 129, 89,
+			47, 119, 84, 0, 35, 65, 81, 104, 97, 118, 101, 32, 6, 195, 53, 84, 212, 32, 16, 71, 29, 82, 76, 48, 21, 77, 20, 81, 132, 57,
+			6, 139, 65, 0, 17, 71, 28, 147, 12, 21, 52, 9, 20, 81, 113, 55, 122, 89, 48, 37, 0, 11, 68, 32, 18, 75, 84, 107, 140, 49,
+			137, 0, 17, 71, 25, 34, 67, 5, 52, 197, 20, 83, 34, 124, 49, 119, 89, 141, 0, 10, 67, 5, 67, 208, 119, 47, 126, 48, 0, 0,
+			13, 67, 28, 245, 0, 2, 81, 126, 47, 0, 10, 35, 46, 12, 201, 16, 148, 212, 72, 144, 149, 80, 244, 128, 66, 12, 4, 95, 114, 110,
+			103, 34, 6, 124, 68, 81, 0, 0, 12, 197, 12, 19, 142, 61, 64, 103, 66, 32, 46, 10, 16, 70, 52, 148, 129, 8, 83, 0, 65, 124,
+			34, 13, 71, 122, 55, 0, 14, 69, 64, 84, 141, 37, 64, 48, 114, 65, 124, 47, 0, 36, 14, 69, 64, 84, 141, 37, 64, 48, 131, 65,
+			124, 47, 0, 47, 15, 70, 56, 21, 21, 72, 19, 0, 50, 35, 76, 13, 34, 118, 0, 15, 69, 12, 21, 133, 5, 64, 49, 35, 84, 124,
+			121, 47, 0, 103, 14, 69, 12, 21, 133, 5, 64, 49, 35, 84, 124, 35, 47, 0, 0, 24, 67, 25, 35, 205, 2, 83, 34, 129, 65, 15,
+			58, 6, 124, 76, 0, 8, 81, 119, 104, 105, 99, 104, 32, 23, 67, 25, 35, 205, 2, 83, 34, 129, 65, 15, 58, 6, 143, 0, 8, 81,
+			119, 104, 101, 114, 101, 32, 18, 67, 25, 35, 205, 2, 83, 34, 129, 65, 86, 115, 0, 81, 116, 104, 101, 32, 12, 67, 25, 35, 205, 83,
+			34, 129, 65, 0, 103, 72, 11, 67, 25, 35, 205, 83, 34, 126, 65, 0, 72, 17, 70, 80, 83, 133, 72, 145, 133, 47, 122, 50, 114, 34,
+			6, 132, 83, 0, 0, 11, 68, 56, 21, 82, 84, 50, 138, 34, 137, 0, 17, 70, 52, 147, 129, 72, 85, 0, 65, 124, 50, 13, 34, 6,
+			122, 47, 0, 12, 69, 32, 82, 70, 21, 32, 107, 122, 83, 114, 0, 12, 69, 28, 81, 90, 21, 32, 81, 132, 88, 114, 0, 9, 198, 21,
+			132, 12, 60, 149, 0, 36, 10, 198, 21, 132, 12, 60, 149, 0, 65, 47, 9, 198, 12, 20, 143, 80, 145, 0, 17, 13, 69, 5, 96, 84,
+			5, 32, 35, 84, 119, 47, 130, 0, 19, 72, 4, 208, 129, 77, 48, 68, 61, 32, 119, 65, 71, 35, 89, 13, 72, 114, 0, 0, 10, 67,
+			56, 148, 143, 50, 144, 34, 139, 0, 0, 14, 69, 8, 83, 143, 37, 64, 71, 122, 50, 58, 6, 121, 0, 10, 199, 84, 225, 5, 72, 194,
+			78, 28, 65, 15, 70, 77, 65, 78, 12, 147, 0, 89, 47, 122, 50, 89, 118, 0, 16, 69, 52, 147, 149, 21, 64, 65, 124, 50, 57, 137,
+			6, 122, 47, 0, 13, 69, 52, 84, 140, 61, 64, 65, 131, 55, 6, 139, 0, 6, 195, 21, 5, 66, 20, 19, 71, 12, 243, 80, 21, 66,
+			78, 28, 49, 13, 65, 48, 6, 132, 47, 124, 68, 0, 12, 201, 12, 192, 78, 16, 84, 212, 36, 225, 64, 66, 13, 69, 4, 35, 1, 85,
+			64, 35, 71, 55, 138, 47, 0, 6, 195, 4, 149, 2, 13, 0, 15, 70, 80, 133, 82, 76, 64, 89, 87, 151, 88, 72, 141, 0, 105, 14,
+			70, 80, 133, 82, 76, 64, 89, 87, 131, 88, 72, 141, 0, 6, 195, 60, 83, 64, 13, 13, 3, 95, 54, 88, 89, 6, 124, 49, 89, 47,
+			37, 0, 0, 13, 69, 72, 21, 8, 21, 32, 34, 121, 86, 114, 0, 135, 13, 69, 44, 147, 20, 21, 32, 49, 124, 55, 47, 114, 0, 15,
+			70, 28, 245, 82, 52, 19, 132, 81, 146, 65, 121, 50, 72, 0, 12, 69, 16, 144, 80, 21, 32, 72, 140, 48, 114, 0, 11, 69, 4, 85,
+			8, 21, 32, 132, 87, 13, 0, 8, 4, 95, 35, 116, 104, 87, 0, 0, 0, 17, 71, 72, 81, 133, 73, 34, 78, 28, 34, 113, 83, 131,
+			34, 124, 68, 0, 0, 14, 7, 116, 104, 101, 114, 101, 39, 100, 2, 86, 143, 72, 0, 15, 70, 32, 243, 69, 64, 17, 197, 107, 139, 65,
+			48, 141, 75, 0, 0, 0, 16, 70, 76, 144, 133, 48, 149, 83, 89, 113, 71, 141, 55, 144, 89, 0, 22, 72, 65, 33, 70, 21, 32, 66,
+			49, 144, 48, 34, 122, 83, 14, 34, 13, 71, 55, 124, 0, 32, 0, 0, 21, 73, 12, 243, 142, 20, 53, 9, 13, 85, 0, 49, 13, 50,
+			122, 47, 113, 49, 13, 47, 0, 23, 73, 80, 83, 5, 64, 131, 206, 37, 53, 0, 47, 13, 55, 6, 122, 83, 13, 50, 124, 89, 47, 0,
+			10, 67, 5, 4, 128, 35, 48, 34, 13, 0, 0, 12, 68, 56, 17, 10, 4, 50, 121, 72, 57, 13, 0, 11, 68, 52, 242, 82, 4, 65,
+			142, 34, 13, 0, 15, 69, 48, 244, 133, 57, 160, 55, 126, 34, 13, 50, 47, 89, 0, 13, 202, 36, 229, 5, 73, 35, 199, 5, 67, 210,
+			100, 67, 16, 70, 28, 84, 212, 4, 197, 0, 81, 13, 91, 47, 121, 55, 47, 0, 11, 68, 4, 112, 80, 20, 119, 81, 141, 48, 0, 0,
+			14, 69, 80, 84, 133, 76, 16, 47, 13, 34, 132, 89, 13, 0, 15, 69, 4, 197, 21, 72, 16, 133, 55, 47, 6, 146, 34, 13, 0, 13,
+			69, 76, 80, 78, 12, 80, 89, 141, 126, 50, 89, 0, 12, 69, 29, 82, 78, 20, 16, 81, 124, 50, 37, 0, 13, 69, 16, 83, 135, 84,
+			80, 72, 122, 50, 81, 37, 0, 0, 12, 68, 72, 83, 9, 12, 34, 122, 55, 124, 49, 0, 0, 11, 67, 80, 22, 25, 47, 35, 49, 89,
+			37, 0, 14, 69, 32, 84, 143, 36, 48, 107, 113, 34, 139, 124, 49, 0, 7, 195, 48, 36, 192, 13, 42, 11, 67, 48, 36, 192, 48, 138,
+			50, 72, 88, 0, 0, 17, 71, 88, 246, 69, 85, 34, 83, 52, 84, 142, 114, 124, 88, 13, 65, 0, 15, 70, 76, 84, 135, 20, 19, 148,
+			89, 130, 75, 13, 50, 47, 0, 16, 70, 61, 4, 15, 56, 83, 148, 13, 48, 139, 50, 13, 50, 47, 0, 12, 68, 5, 33, 78, 4, 119,
+			34, 132, 50, 13, 0, 0, 8, 197, 88, 148, 137, 48, 80, 16, 8, 197, 16, 240, 201, 48, 80, 16, 13, 69, 76, 51, 5, 72, 16, 89,
+			49, 55, 144, 34, 0, 8, 197, 76, 19, 9, 88, 16, 17, 13, 69, 72, 84, 193, 48, 80, 34, 132, 89, 141, 55, 0, 14, 69, 48, 240,
+			193, 48, 80, 55, 139, 49, 6, 120, 55, 0, 8, 197, 28, 19, 5, 56, 16, 17, 13, 69, 24, 16, 193, 16, 80, 83, 13, 89, 121, 72,
+			0, 13, 69, 16, 80, 193, 16, 80, 72, 122, 49, 141, 72, 0, 12, 69, 5, 3, 133, 60, 16, 35, 48, 50, 144, 0, 0, 14, 70, 12,
+			243, 142, 20, 195, 0, 49, 126, 50, 13, 55, 0, 15, 70, 65, 33, 67, 37, 49, 64, 48, 34, 113, 89, 140, 89, 0, 21, 73, 12, 84,
+			148, 36, 98, 67, 5, 65, 64, 89, 114, 47, 124, 83, 124, 49, 13, 47, 0, 0, 9, 67, 104, 241, 64, 88, 139, 37, 0, 8, 197, 5,
+			32, 66, 36, 48, 65, 10, 3, 95, 56, 88, 6, 141, 47, 37, 0, 0, 19, 72, 48, 84, 18, 20, 50, 1, 84, 224, 55, 122, 48, 34,
+			13, 49, 133, 50, 0, 19, 71, 12, 243, 150, 60, 197, 84, 20, 49, 126, 50, 84, 13, 55, 6, 137, 47, 0, 16, 71, 12, 131, 195, 60,
+			192, 84, 20, 76, 126, 49, 55, 13, 47, 0, 16, 71, 5, 4, 5, 48, 192, 84, 20, 119, 48, 122, 55, 13, 47, 0, 18, 71, 4, 197,
+			5, 72, 224, 84, 20, 133, 55, 47, 114, 50, 141, 47, 0, 36, 19, 71, 4, 197, 5, 72, 224, 84, 20, 133, 55, 47, 6, 131, 50, 13,
+			47, 0, 46, 0, 11, 67, 32, 84, 147, 107, 131, 88, 0, 72, 10, 13, 5, 100, 111, 110, 39, 116, 72, 139, 50, 47, 0, 32, 14, 69,
+			80, 18, 80, 20, 144, 47, 4, 140, 48, 6, 141, 0, 15, 69, 53, 84, 197, 84, 208, 65, 57, 137, 88, 6, 144, 65, 0, 15, 69, 8,
+			146, 201, 56, 144, 71, 124, 49, 6, 132, 50, 37, 0, 0, 15, 69, 72, 81, 140, 85, 128, 34, 132, 83, 55, 129, 49, 89, 0, 15, 69,
+			72, 81, 140, 21, 128, 34, 132, 83, 55, 122, 49, 89, 0, 0, 15, 69, 52, 242, 137, 80, 240, 65, 139, 107, 6, 132, 47, 139, 0, 8,
+			197, 21, 50, 201, 52, 240, 65, 0, 0, 0, 9, 66, 52, 80, 65, 132, 0, 50, 49, 9, 66, 52, 80, 4, 65, 132, 0, 46, 11, 200,
+			4, 229, 9, 12, 132, 137, 77, 64, 65, 0, 19, 72, 92, 147, 4, 21, 35, 133, 77, 48, 58, 124, 55, 72, 114, 50, 13, 89, 0, 12,
+			69, 32, 18, 82, 16, 240, 107, 143, 72, 137, 0, 12, 3, 95, 57, 88, 50, 6, 140, 50, 47, 37, 0, 0, 6, 195, 41, 84, 212, 32,
+			14, 70, 32, 20, 146, 36, 85, 0, 107, 35, 34, 144, 47, 0, 16, 70, 88, 144, 146, 5, 67, 192, 84, 113, 71, 34, 121, 47, 139, 0,
+			16, 70, 56, 81, 204, 20, 53, 0, 50, 113, 81, 55, 122, 49, 47, 0, 8, 67, 52, 82, 0, 65, 122, 0, 15, 70, 13, 35, 207, 44,
+			81, 0, 49, 34, 117, 49, 124, 72, 0, 0, 0, 12, 68, 13, 148, 149, 76, 89, 140, 34, 13, 89, 0, 8, 197, 61, 85, 19, 21, 64,
+			65, 13, 68, 60, 20, 197, 76, 139, 6, 141, 89, 132, 88, 0, 16, 70, 8, 148, 5, 16, 19, 0, 71, 140, 48, 6, 132, 72, 118, 0,
+			0, 26, 67, 52, 22, 64, 4, 65, 141, 107, 6, 35, 84, 47, 116, 0, 32, 49, 82, 104, 97, 118, 101, 32, 116, 111, 32, 19, 67, 52,
+			22, 64, 65, 141, 107, 119, 84, 0, 35, 77, 81, 104, 97, 118, 101, 32, 10, 67, 52, 22, 64, 65, 141, 0, 32, 10, 11, 67, 92, 22,
+			25, 58, 35, 49, 89, 37, 0, 0, 13, 69, 21, 131, 79, 61, 32, 122, 49, 89, 65, 146, 0, 16, 70, 12, 244, 9, 48, 245, 0, 49,
+			139, 48, 140, 55, 13, 47, 0, 0, 0, 15, 69, 92, 130, 76, 77, 64, 58, 4, 140, 55, 89, 47, 0, 8, 11, 68, 76, 16, 200, 76,
+			89, 35, 49, 89, 0, 12, 68, 32, 17, 5, 76, 107, 141, 72, 132, 88, 0, 8, 197, 104, 80, 76, 61, 64, 16, 15, 70, 72, 80, 201,
+			80, 19, 0, 34, 113, 89, 140, 47, 118, 0, 13, 69, 64, 20, 146, 61, 64, 48, 35, 34, 13, 47, 0, 14, 69, 20, 194, 67, 37, 64,
+			113, 55, 124, 89, 113, 47, 0, 8, 197, 5, 34, 71, 33, 64, 17, 11, 3, 95, 63, 65, 55, 4, 122, 47, 114, 0, 0, 12, 68, 72,
+			18, 137, 88, 34, 121, 75, 132, 84, 0, 18, 71, 48, 193, 87, 20, 195, 25, 56, 55, 117, 58, 6, 122, 55, 124, 50, 0, 22, 68, 36,
+			229, 5, 72, 124, 50, 47, 114, 15, 6, 141, 55, 144, 0, 81, 97, 108, 105, 97, 32, 0, 12, 69, 21, 53, 8, 21, 32, 122, 89, 47,
+			114, 0, 14, 69, 21, 129, 84, 21, 32, 122, 49, 89, 124, 47, 114, 0, 13, 69, 52, 148, 212, 21, 32, 65, 124, 89, 47, 114, 0, 16,
+			70, 16, 83, 79, 48, 148, 200, 72, 113, 65, 126, 55, 124, 91, 0, 0, 20, 72, 16, 81, 137, 56, 149, 9, 88, 80, 72, 113, 83, 124,
+			50, 113, 47, 124, 84, 0, 13, 69, 5, 98, 65, 73, 144, 141, 84, 144, 34, 37, 0, 12, 4, 95, 52, 48, 111, 83, 6, 136, 47, 144,
+			0, 0, 14, 69, 88, 244, 148, 21, 128, 84, 135, 108, 122, 49, 89, 0, 8, 197, 88, 84, 148, 21, 128, 18, 0, 11, 68, 4, 20, 143,
+			56, 143, 34, 13, 50, 0, 10, 67, 80, 16, 149, 47, 35, 71, 137, 0, 0, 9, 198, 92, 245, 76, 17, 53, 0, 76, 9, 67, 81, 84,
+			200, 47, 117, 91, 0, 19, 71, 21, 132, 5, 73, 66, 83, 20, 122, 49, 89, 48, 114, 47, 6, 132, 88, 0, 12, 68, 12, 20, 18, 36,
+			49, 119, 48, 34, 132, 0, 19, 4, 95, 115, 117, 112, 89, 4, 137, 48, 114, 89, 49, 34, 124, 48, 47, 15, 0, 0, 13, 4, 95, 115,
+			116, 107, 89, 47, 34, 6, 139, 49, 0, 0, 17, 70, 80, 241, 197, 80, 129, 82, 47, 13, 81, 122, 86, 114, 0, 74, 10, 10, 198, 52,
+			18, 193, 77, 48, 82, 17, 16, 11, 200, 80, 132, 143, 84, 114, 15, 85, 64, 66, 11, 200, 80, 129, 82, 20, 16, 143, 85, 64, 67, 14,
+			70, 76, 131, 213, 48, 65, 82, 91, 139, 55, 72, 114, 0, 9, 198, 76, 83, 69, 77, 65, 82, 17, 15, 71, 72, 145, 200, 80, 83, 213,
+			76, 34, 140, 76, 13, 89, 0, 21, 72, 74, 36, 201, 77, 64, 78, 12, 80, 34, 141, 88, 124, 89, 47, 6, 153, 50, 89, 0, 15, 70,
+			52, 20, 129, 84, 65, 82, 65, 13, 34, 133, 72, 114, 0, 0, 19, 66, 36, 224, 124, 50, 119, 15, 34, 6, 139, 0, 82, 97, 32, 114,
+			111, 119, 32, 20, 66, 36, 224, 124, 50, 15, 58, 124, 76, 0, 74, 8, 81, 119, 104, 105, 99, 104, 32, 15, 66, 36, 224, 2, 124, 50,
+			86, 115, 0, 81, 116, 104, 101, 32, 11, 66, 36, 224, 2, 124, 50, 0, 9, 46, 34, 18, 72, 12, 130, 86, 4, 196, 143, 85, 48, 91,
+			124, 84, 118, 34, 13, 89, 0, 5, 194, 56, 64, 46, 9, 3, 226, 153, 175, 91, 130, 48, 0, 0, 10, 67, 72, 81, 15, 34, 132, 72,
+			137, 0, 10, 199, 4, 69, 133, 73, 50, 84, 100, 66, 6, 195, 65, 48, 64, 13, 6, 195, 53, 144, 64, 13, 0, 12, 68, 32, 21, 143,
+			12, 107, 35, 84, 13, 49, 0, 10, 3, 226, 153, 173, 83, 55, 35, 47, 0, 0, 19, 71, 16, 243, 129, 80, 83, 12, 60, 72, 126, 50,
+			13, 47, 6, 122, 55, 139, 0, 10, 67, 28, 20, 153, 81, 35, 34, 37, 0, 10, 199, 48, 16, 143, 72, 147, 213, 76, 17, 20, 71, 12,
+			243, 148, 72, 19, 20, 60, 49, 13, 50, 47, 34, 6, 35, 55, 47, 139, 0, 0, 9, 198, 85, 5, 9, 28, 133, 0, 66, 16, 70, 13,
+			84, 146, 20, 229, 0, 49, 6, 131, 13, 50, 47, 0, 103, 0, 11, 69, 100, 245, 78, 28, 80, 57, 129, 68, 0, 8, 197, 56, 144, 207,
+			48, 80, 66, 14, 69, 24, 83, 9, 64, 80, 83, 125, 55, 132, 48, 141, 0, 13, 69, 4, 225, 18, 20, 16, 35, 50, 72, 34, 144, 0,
+			15, 69, 76, 18, 1, 72, 16, 89, 119, 107, 35, 34, 13, 0, 103, 8, 197, 76, 18, 1, 72, 16, 17, 14, 69, 72, 80, 201, 64, 80,
+			34, 122, 89, 113, 48, 132, 0, 14, 69, 57, 80, 78, 12, 80, 50, 137, 126, 50, 89, 0, 103, 13, 69, 28, 83, 143, 52, 80, 75, 132,
+			50, 139, 65, 0, 15, 69, 24, 81, 15, 72, 16, 83, 113, 72, 6, 136, 34, 13, 0, 12, 69, 12, 243, 77, 36, 80, 49, 126, 65, 124,
+			0, 0, 0, 27, 68, 92, 245, 76, 16, 58, 117, 72, 107, 35, 84, 47, 116, 0, 74, 32, 10, 82, 104, 97, 118, 101, 32, 116, 111, 32,
+			21, 68, 92, 245, 76, 16, 58, 117, 72, 107, 35, 84, 0, 35, 49, 81, 104, 97, 118, 101, 32, 22, 68, 92, 245, 76, 16, 58, 2, 117,
+			72, 107, 2, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 10, 196, 92, 245, 76, 16, 76, 32, 46, 10, 10, 67, 80, 145, 25, 47, 140,
+			72, 37, 0, 10, 67, 48, 147, 25, 55, 124, 55, 37, 0, 0, 9, 66, 61, 32, 135, 0, 72, 8, 46, 18, 72, 76, 132, 133, 88, 84,
+			15, 73, 64, 91, 34, 132, 84, 48, 136, 47, 0, 13, 68, 104, 80, 146, 4, 88, 132, 71, 34, 13, 0, 103, 12, 68, 77, 82, 84, 20,
+			89, 58, 132, 47, 0, 47, 11, 67, 61, 129, 78, 126, 49, 89, 13, 50, 0, 12, 68, 20, 51, 204, 20, 124, 49, 6, 139, 55, 0, 0,
+			8, 197, 24, 16, 201, 48, 80, 16, 15, 69, 8, 84, 201, 16, 80, 71, 124, 89, 140, 72, 0, 74, 10, 8, 197, 76, 20, 137, 76, 16,
+			17, 14, 69, 32, 80, 193, 80, 80, 107, 122, 49, 13, 47, 141, 0, 13, 69, 16, 20, 8, 56, 80, 72, 35, 83, 50, 37, 0, 13, 69,
+			12, 80, 201, 48, 80, 89, 122, 89, 132, 55, 0, 14, 69, 88, 17, 201, 56, 16, 84, 13, 75, 140, 50, 13, 0, 8, 197, 85, 1, 1,
+			80, 80, 36, 9, 197, 85, 1, 1, 80, 80, 65, 47, 14, 69, 76, 243, 21, 80, 80, 89, 126, 55, 57, 137, 47, 0, 13, 69, 76, 81,
+			1, 80, 80, 89, 113, 72, 141, 47, 0, 8, 197, 72, 245, 1, 80, 80, 66, 15, 69, 72, 81, 201, 56, 16, 34, 125, 75, 132, 50, 13,
+			0, 103, 13, 69, 72, 81, 193, 48, 80, 34, 113, 81, 141, 55, 0, 13, 69, 56, 81, 193, 80, 80, 50, 113, 81, 141, 47, 0, 13, 69,
+			48, 145, 193, 80, 80, 55, 132, 81, 141, 47, 0, 14, 69, 13, 84, 129, 80, 80, 49, 57, 146, 34, 141, 47, 0, 15, 69, 12, 194, 67,
+			32, 80, 49, 55, 132, 91, 6, 141, 0, 103, 13, 69, 12, 194, 67, 32, 80, 49, 55, 132, 91, 141, 0, 0, 20, 70, 37, 53, 1, 56,
+			37, 76, 4, 124, 89, 47, 4, 35, 50, 71, 6, 117, 55, 0, 12, 201, 12, 243, 148, 72, 245, 133, 73, 54, 64, 65, 10, 67, 5, 149,
+			72, 119, 57, 6, 13, 0, 0, 13, 5, 104, 101, 39, 108, 108, 107, 132, 55, 0, 72, 32, 15, 70, 76, 19, 131, 32, 86, 128, 89, 35,
+			50, 76, 122, 88, 0, 9, 67, 4, 70, 133, 35, 72, 88, 0, 0, 16, 6, 104, 97, 115, 110, 39, 116, 107, 35, 88, 14, 50, 47, 0,
+			35, 16, 6, 115, 104, 97, 110, 39, 116, 4, 91, 121, 50, 47, 0, 32, 10, 13, 68, 16, 243, 2, 100, 72, 139, 55, 71, 37, 0, 103,
+			19, 71, 5, 2, 18, 60, 66, 84, 20, 35, 83, 34, 13, 72, 6, 140, 47, 37, 0, 11, 68, 16, 128, 66, 36, 72, 121, 71, 37, 0,
+			17, 71, 76, 245, 78, 16, 34, 84, 20, 89, 138, 50, 72, 71, 140, 47, 0, 11, 68, 72, 16, 130, 36, 34, 35, 71, 140, 0, 19, 71,
+			64, 85, 18, 60, 193, 85, 52, 48, 13, 47, 34, 139, 55, 132, 13, 65, 0, 11, 68, 24, 145, 82, 100, 83, 148, 34, 124, 0, 19, 71,
+			21, 133, 18, 4, 66, 84, 20, 122, 49, 89, 47, 34, 13, 72, 140, 47, 0, 11, 199, 12, 243, 80, 61, 50, 84, 20, 103, 66, 0, 15,
+			7, 116, 104, 101, 121, 39, 108, 108, 86, 141, 55, 0, 72, 32, 16, 4, 95, 115, 109, 99, 89, 65, 6, 133, 55, 49, 4, 35, 48, 0,
+			0, 0, 10, 68, 53, 148, 146, 32, 65, 151, 0, 105, 9, 68, 53, 148, 146, 32, 65, 131, 0, 0, 16, 70, 60, 33, 76, 37, 50, 192,
+			126, 71, 13, 55, 113, 89, 49, 0, 0, 8, 67, 61, 82, 64, 58, 132, 0, 10, 68, 36, 227, 133, 72, 124, 50, 114, 0, 10, 67, 29,
+			82, 64, 81, 137, 37, 0, 47, 0, 12, 68, 80, 149, 21, 76, 47, 140, 47, 13, 89, 0, 20, 73, 4, 192, 149, 69, 81, 82, 69, 81,
+			64, 35, 55, 71, 13, 49, 131, 49, 37, 0, 13, 68, 80, 22, 9, 76, 47, 35, 49, 89, 37, 88, 0, 9, 198, 61, 85, 2, 85, 36,
+			212, 65, 15, 70, 36, 208, 71, 21, 38, 64, 124, 65, 124, 75, 34, 37, 0, 12, 68, 24, 85, 21, 76, 83, 132, 47, 13, 89, 0, 9,
+			198, 24, 84, 146, 5, 34, 64, 17, 15, 70, 12, 130, 65, 57, 66, 64, 49, 57, 121, 50, 47, 37, 0, 16, 70, 4, 230, 9, 21, 70,
+			64, 35, 68, 88, 6, 147, 47, 37, 0, 16, 70, 4, 34, 76, 37, 70, 64, 119, 71, 124, 55, 13, 47, 37, 0, 15, 67, 16, 84, 20,
+			72, 113, 48, 130, 47, 65, 13, 50, 47, 0, 0, 14, 68, 76, 128, 76, 80, 4, 91, 35, 55, 47, 0, 32, 46, 10, 67, 52, 243, 153,
+			65, 129, 50, 124, 0, 0, 18, 70, 77, 83, 65, 81, 32, 78, 89, 137, 65, 6, 121, 47, 34, 13, 50, 0, 16, 70, 76, 243, 9, 12,
+			149, 0, 89, 13, 55, 124, 89, 113, 47, 0, 16, 70, 52, 83, 1, 52, 81, 0, 65, 122, 55, 13, 65, 122, 72, 0, 16, 71, 12, 130,
+			72, 84, 18, 21, 4, 76, 113, 58, 121, 58, 13, 0, 0, 11, 68, 80, 21, 1, 72, 47, 121, 47, 114, 0, 11, 68, 72, 17, 1, 72,
+			34, 141, 72, 130, 0, 11, 68, 48, 149, 5, 72, 55, 132, 47, 114, 0, 12, 68, 36, 225, 133, 72, 124, 50, 83, 6, 131, 0, 13, 5,
+			99, 39, 109, 111, 110, 49, 13, 65, 126, 50, 0, 0, 12, 68, 4, 225, 5, 76, 35, 50, 72, 132, 88, 0, 10, 4, 95, 35, 110, 100,
+			13, 50, 72, 0, 0, 14, 68, 21, 128, 76, 80, 122, 81, 88, 6, 126, 55, 47, 0, 0, 11, 68, 100, 17, 83, 84, 57, 141, 89, 137,
+			0, 18, 70, 9, 80, 200, 4, 224, 78, 71, 57, 137, 49, 6, 35, 50, 13, 50, 0, 12, 200, 81, 32, 78, 76, 52, 137, 65, 64, 65,
+			47, 13, 70, 65, 54, 67, 32, 81, 0, 89, 140, 49, 72, 0, 5, 194, 61, 48, 13, 11, 4, 95, 98, 97, 114, 10, 71, 6, 130, 0,
+			19, 4, 95, 99, 105, 114, 89, 6, 131, 49, 129, 65, 83, 55, 4, 122, 49, 89, 0, 4, 193, 172, 43, 0, 9, 67, 36, 19, 128, 132,
+			13, 50, 0, 23, 67, 8, 243, 128, 71, 126, 50, 15, 84, 142, 6, 121, 90, 0, 81, 118, 111, 121, 97, 103, 101, 32, 0, 6, 195, 61,
+			54, 0, 13, 0, 16, 70, 21, 97, 82, 100, 243, 133, 122, 84, 34, 124, 58, 128, 50, 0, 16, 70, 52, 17, 5, 48, 147, 133, 65, 35,
+			72, 13, 55, 113, 50, 0, 15, 69, 28, 64, 78, 76, 176, 81, 14, 72, 35, 50, 89, 49, 0, 15, 70, 5, 1, 78, 56, 147, 133, 35,
+			48, 13, 50, 140, 50, 0, 16, 70, 88, 20, 197, 48, 147, 133, 84, 35, 89, 13, 55, 132, 50, 0, 8, 197, 32, 148, 8, 61, 0, 18,
+			13, 69, 32, 84, 133, 80, 240, 107, 145, 6, 47, 137, 0, 0, 17, 70, 92, 128, 84, 21, 97, 82, 58, 128, 47, 122, 84, 114, 0, 66,
+			8, 14, 70, 77, 84, 16, 48, 145, 82, 89, 13, 48, 55, 148, 0, 9, 198, 52, 244, 133, 61, 97, 82, 66, 15, 70, 52, 19, 149, 21,
+			97, 82, 65, 13, 50, 137, 84, 114, 0, 15, 70, 52, 19, 133, 85, 97, 82, 65, 13, 50, 137, 84, 114, 0, 9, 198, 52, 19, 9, 56,
+			113, 82, 17, 13, 4, 95, 48, 77, 50, 65, 6, 124, 55, 144, 50, 0, 0, 17, 71, 64, 243, 80, 4, 67, 213, 72, 48, 126, 65, 48,
+			119, 72, 136, 0, 14, 69, 92, 20, 193, 8, 144, 58, 119, 89, 121, 71, 37, 0, 12, 68, 61, 34, 79, 56, 126, 34, 6, 147, 50, 0,
+			21, 72, 36, 212, 5, 72, 21, 9, 88, 80, 124, 65, 48, 6, 122, 34, 13, 47, 124, 84, 0, 11, 200, 16, 84, 143, 28, 21, 9, 88,
+			80, 66, 21, 67, 13, 83, 64, 49, 117, 65, 55, 6, 138, 72, 37, 0, 81, 108, 97, 117, 100, 101, 32, 13, 4, 95, 48, 77, 51, 71,
+			6, 124, 55, 144, 50, 0, 0, 18, 71, 20, 116, 133, 28, 147, 213, 76, 124, 81, 34, 6, 132, 75, 13, 89, 0, 12, 68, 12, 19, 69,
+			60, 49, 35, 65, 124, 139, 0, 24, 73, 4, 36, 129, 12, 17, 1, 9, 32, 64, 35, 71, 34, 13, 49, 13, 72, 6, 35, 71, 34, 13,
+			0, 0, 8, 197, 4, 208, 78, 16, 240, 17, 15, 69, 16, 144, 66, 48, 240, 72, 132, 6, 121, 71, 55, 139, 0, 14, 4, 95, 48, 77,
+			49, 87, 6, 138, 88, 13, 50, 72, 0, 0, 10, 199, 52, 19, 135, 4, 225, 83, 20, 65, 10, 199, 16, 148, 195, 61, 84, 147, 20, 65,
+			18, 71, 8, 243, 15, 28, 225, 83, 20, 71, 126, 55, 13, 50, 6, 141, 88, 0, 0, 15, 69, 80, 35, 9, 76, 144, 47, 14, 71, 55,
+			132, 89, 37, 0, 19, 72, 65, 54, 67, 32, 144, 84, 73, 144, 89, 140, 49, 6, 147, 47, 34, 124, 0, 8, 67, 52, 148, 128, 65, 145,
+			0, 0, 16, 70, 65, 35, 199, 20, 230, 64, 48, 34, 126, 75, 13, 50, 37, 0, 0, 11, 67, 60, 227, 25, 139, 50, 55, 37, 0, 40,
+			17, 70, 76, 85, 133, 72, 83, 25, 89, 113, 84, 6, 145, 55, 124, 0, 32, 12, 68, 56, 18, 197, 16, 50, 141, 49, 125, 72, 0, 17,
+			71, 52, 19, 135, 21, 67, 213, 80, 65, 126, 50, 90, 47, 6, 137, 0, 10, 199, 48, 245, 68, 52, 245, 84, 32, 15, 10, 199, 28, 240,
+			76, 52, 245, 84, 32, 15, 0, 12, 67, 61, 97, 82, 139, 84, 114, 0, 72, 10, 46, 11, 68, 40, 19, 73, 20, 75, 141, 65, 37, 0,
+			11, 67, 49, 99, 214, 55, 14, 84, 126, 84, 0, 9, 198, 92, 81, 75, 20, 225, 0, 66, 11, 68, 48, 83, 77, 20, 55, 122, 65, 37,
+			0, 10, 68, 32, 243, 13, 20, 107, 139, 65, 0, 0, 10, 67, 56, 244, 128, 50, 135, 0, 8, 46, 18, 67, 24, 244, 128, 83, 135, 58,
+			128, 50, 0, 66, 49, 81, 111, 110, 101, 32, 23, 67, 24, 244, 128, 83, 114, 13, 15, 58, 6, 140, 55, 0, 82, 97, 32, 119, 104, 105,
+			108, 101, 32, 16, 67, 24, 244, 128, 83, 114, 86, 115, 0, 34, 81, 116, 104, 101, 32, 15, 67, 24, 244, 128, 83, 114, 13, 50, 0, 34,
+			81, 97, 110, 32, 13, 67, 24, 244, 128, 83, 114, 13, 0, 34, 81, 97, 32, 9, 67, 24, 244, 128, 83, 135, 0, 72, 20, 72, 72, 80,
+			207, 53, 1, 78, 76, 80, 34, 122, 49, 13, 65, 48, 122, 50, 89, 0, 10, 67, 36, 225, 15, 124, 50, 72, 139, 0, 20, 72, 12, 243,
+			80, 72, 243, 73, 76, 80, 49, 126, 65, 48, 34, 13, 65, 140, 88, 0, 0, 15, 70, 8, 244, 215, 20, 195, 0, 71, 126, 88, 58, 122,
+			55, 0, 0, 18, 70, 100, 244, 197, 52, 149, 5, 57, 139, 89, 6, 122, 65, 13, 47, 37, 0, 10, 67, 72, 83, 25, 34, 113, 55, 140,
+			0, 16, 70, 64, 20, 129, 76, 149, 5, 48, 35, 34, 13, 89, 140, 47, 0, 9, 198, 60, 33, 21, 72, 21, 5, 16, 17, 70, 52, 241,
+			5, 72, 21, 5, 65, 126, 72, 13, 34, 141, 47, 0, 36, 9, 198, 48, 149, 5, 72, 21, 5, 16, 18, 70, 29, 32, 68, 84, 21, 5,
+			81, 34, 35, 72, 57, 137, 141, 47, 0, 36, 9, 198, 29, 32, 68, 84, 21, 5, 16, 9, 198, 16, 83, 9, 12, 21, 5, 16, 10, 67,
+			8, 83, 25, 71, 113, 55, 140, 0, 9, 198, 4, 229, 9, 16, 245, 5, 65, 0, 11, 68, 44, 21, 9, 20, 49, 141, 47, 37, 0, 11,
+			68, 80, 84, 5, 20, 47, 132, 48, 132, 0, 17, 70, 52, 20, 212, 60, 67, 206, 65, 35, 89, 47, 13, 72, 126, 50, 0, 24, 74, 12,
+			148, 131, 84, 209, 133, 72, 83, 131, 20, 89, 131, 49, 6, 129, 65, 83, 34, 13, 50, 89, 0, 0, 14, 69, 32, 82, 193, 80, 80, 107,
+			122, 49, 13, 47, 141, 0, 13, 69, 8, 160, 82, 56, 80, 71, 57, 130, 50, 13, 0, 20, 72, 21, 146, 129, 24, 160, 76, 48, 16, 141,
+			57, 119, 83, 57, 35, 47, 55, 119, 0, 16, 70, 48, 147, 69, 72, 144, 203, 55, 124, 65, 13, 34, 124, 49, 0, 10, 67, 5, 53, 83,
+			141, 89, 13, 89, 0, 6, 195, 65, 53, 64, 13, 14, 4, 95, 108, 105, 103, 55, 4, 124, 81, 119, 76, 13, 0, 0, 16, 70, 72, 82,
+			78, 32, 243, 4, 34, 140, 50, 107, 139, 55, 72, 0, 16, 70, 72, 81, 201, 56, 19, 4, 34, 122, 75, 124, 50, 118, 72, 0, 31, 76,
+			88, 145, 5, 60, 51, 206, 24, 84, 133, 56, 49, 64, 84, 6, 124, 72, 132, 139, 15, 49, 6, 126, 50, 83, 34, 13, 50, 89, 0, 0,
+			16, 5, 105, 115, 110, 39, 116, 4, 124, 88, 13, 50, 47, 0, 35, 10, 17, 70, 40, 147, 69, 56, 86, 128, 107, 124, 65, 6, 122, 50,
+			122, 88, 0, 11, 68, 56, 145, 197, 48, 50, 140, 75, 118, 0, 11, 68, 12, 80, 201, 48, 89, 122, 89, 118, 0, 12, 68, 80, 146, 193,
+			48, 47, 113, 49, 121, 55, 0, 11, 68, 80, 18, 197, 48, 47, 35, 49, 118, 0, 11, 68, 8, 17, 197, 48, 71, 141, 81, 118, 0, 0,
+			18, 71, 72, 21, 9, 60, 224, 76, 20, 34, 35, 91, 13, 50, 6, 35, 55, 0, 11, 68, 29, 80, 195, 36, 81, 137, 76, 37, 0, 0,
+			14, 69, 40, 16, 207, 8, 144, 75, 119, 49, 139, 71, 37, 0, 16, 70, 92, 147, 142, 37, 1, 71, 58, 124, 50, 113, 48, 122, 81, 0,
+			0, 0, 15, 68, 92, 130, 67, 32, 4, 58, 124, 76, 0, 8, 10, 46, 32, 30, 5, 99, 97, 110, 39, 116, 4, 49, 35, 50, 47, 6,
+			35, 84, 47, 116, 0, 103, 32, 49, 82, 104, 97, 118, 101, 32, 116, 111, 32, 22, 5, 99, 97, 110, 39, 116, 49, 35, 50, 47, 119, 84,
+			0, 103, 35, 81, 104, 97, 118, 101, 32, 16, 5, 99, 97, 110, 39, 116, 49, 35, 50, 47, 0, 103, 32, 46, 10, 29, 5, 99, 97, 110,
+			39, 116, 4, 49, 121, 50, 47, 6, 35, 84, 47, 116, 0, 32, 49, 82, 104, 97, 118, 101, 32, 116, 111, 32, 21, 5, 99, 97, 110, 39,
+			116, 49, 121, 50, 47, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 15, 5, 99, 97, 110, 39, 116, 49, 121, 50, 47, 0, 32, 46, 10,
+			17, 70, 52, 243, 148, 4, 117, 69, 65, 126, 50, 108, 13, 81, 57, 137, 0, 16, 70, 64, 21, 18, 36, 50, 65, 48, 119, 47, 34, 124,
+			91, 13, 0, 13, 68, 72, 80, 133, 48, 34, 113, 71, 122, 55, 0, 36, 10, 199, 28, 83, 204, 60, 114, 83, 80, 66, 17, 70, 16, 84,
+			137, 76, 244, 153, 72, 113, 34, 140, 88, 13, 34, 37, 0, 15, 70, 8, 20, 212, 36, 243, 128, 71, 35, 89, 47, 144, 50, 0, 21, 72,
+			5, 34, 84, 32, 209, 84, 36, 48, 119, 34, 124, 87, 65, 13, 47, 124, 49, 0, 47, 0, 16, 70, 12, 131, 210, 37, 163, 192, 76, 134,
+			34, 6, 132, 88, 139, 0, 18, 71, 8, 16, 203, 77, 67, 210, 100, 71, 35, 49, 89, 47, 136, 34, 37, 0, 24, 66, 44, 208, 89, 49,
+			58, 4, 143, 49, 124, 55, 6, 126, 65, 124, 47, 114, 88, 0, 81, 194, 178, 32, 0, 9, 198, 77, 147, 65, 57, 65, 67, 66, 0, 12,
+			68, 16, 244, 137, 76, 72, 126, 34, 124, 89, 0, 12, 68, 8, 244, 137, 76, 71, 126, 34, 124, 89, 0, 16, 70, 64, 192, 89, 80, 84,
+			212, 48, 55, 141, 47, 122, 89, 47, 0, 14, 70, 12, 244, 132, 36, 19, 0, 49, 135, 75, 118, 0, 103, 20, 72, 12, 20, 130, 85, 33,
+			84, 61, 32, 49, 130, 71, 13, 34, 141, 47, 114, 0, 103, 20, 72, 12, 20, 130, 85, 33, 84, 61, 32, 49, 130, 71, 13, 34, 6, 122,
+			47, 114, 0, 9, 198, 5, 4, 1, 72, 19, 0, 17, 13, 68, 4, 66, 79, 76, 35, 86, 57, 6, 152, 89, 0, 0, 13, 69, 16, 19,
+			12, 5, 48, 72, 35, 55, 13, 89, 0, 12, 69, 44, 245, 212, 61, 112, 49, 138, 108, 138, 0, 13, 69, 32, 84, 141, 21, 48, 107, 131,
+			65, 132, 88, 0, 10, 67, 16, 83, 153, 72, 113, 50, 140, 0, 13, 69, 4, 66, 69, 85, 48, 119, 72, 57, 137, 88, 0, 0, 16, 70,
+			52, 147, 4, 72, 81, 0, 65, 124, 55, 72, 34, 113, 72, 0, 16, 70, 52, 244, 143, 12, 48, 78, 65, 13, 34, 126, 49, 13, 50, 0,
+			21, 73, 56, 243, 133, 80, 129, 76, 21, 52, 192, 50, 129, 50, 86, 13, 55, 6, 122, 89, 0, 21, 71, 36, 225, 197, 57, 82, 84, 100,
+			124, 50, 75, 113, 50, 6, 57, 137, 113, 47, 37, 0, 19, 71, 12, 243, 77, 84, 226, 84, 100, 49, 13, 65, 57, 137, 50, 113, 47, 37,
+			0, 16, 70, 8, 19, 145, 84, 85, 0, 71, 35, 68, 49, 58, 113, 47, 0, 0, 14, 70, 56, 244, 151, 36, 50, 0, 50, 126, 34, 113,
+			76, 0, 7, 195, 52, 149, 0, 13, 42, 0, 12, 68, 28, 20, 197, 76, 81, 35, 89, 125, 88, 0, 11, 200, 21, 48, 213, 80, 50, 5,
+			60, 224, 66, 6, 195, 85, 80, 208, 13, 0, 9, 198, 80, 129, 79, 16, 244, 133, 65, 10, 67, 64, 243, 25, 48, 126, 55, 124, 0, 8,
+			197, 52, 243, 1, 77, 48, 17, 18, 70, 16, 144, 83, 64, 244, 129, 72, 140, 6, 35, 89, 48, 13, 34, 13, 0, 14, 70, 13, 33, 65,
+			81, 84, 133, 49, 34, 132, 76, 114, 0, 15, 69, 12, 244, 205, 61, 48, 49, 126, 88, 65, 139, 89, 0, 103, 14, 69, 12, 244, 205, 61,
+			48, 49, 126, 88, 65, 126, 89, 0, 0, 10, 66, 53, 144, 65, 140, 0, 72, 34, 10, 18, 71, 12, 20, 211, 4, 225, 18, 4, 49, 13,
+			89, 35, 50, 72, 34, 13, 0, 16, 71, 52, 83, 2, 61, 84, 142, 20, 65, 122, 55, 71, 114, 50, 0, 19, 71, 36, 225, 15, 12, 130,
+			78, 4, 124, 50, 72, 139, 76, 6, 140, 50, 13, 0, 16, 70, 77, 84, 144, 49, 84, 192, 89, 131, 48, 55, 129, 89, 0, 103, 16, 70,
+			77, 4, 129, 100, 48, 78, 89, 48, 34, 141, 49, 35, 50, 0, 17, 70, 64, 193, 66, 20, 144, 78, 48, 55, 13, 71, 6, 132, 13, 50,
+			0, 10, 199, 52, 148, 129, 56, 66, 90, 20, 66, 16, 70, 12, 194, 67, 32, 81, 0, 49, 55, 132, 91, 6, 141, 72, 0, 17, 71, 12,
+			128, 77, 64, 17, 206, 20, 91, 35, 65, 48, 6, 141, 50, 0, 18, 71, 4, 49, 84, 100, 193, 78, 20, 119, 89, 122, 47, 13, 55, 132,
+			50, 0, 14, 4, 95, 114, 101, 118, 34, 124, 84, 6, 131, 89, 72, 0, 0, 17, 70, 76, 49, 78, 5, 34, 79, 89, 13, 50, 35, 34,
+			37, 139, 0, 103, 16, 70, 76, 49, 78, 5, 34, 79, 89, 13, 50, 130, 34, 37, 139, 0, 17, 70, 24, 192, 77, 20, 224, 207, 83, 55,
+			119, 65, 122, 68, 49, 139, 0, 13, 4, 95, 53, 48, 111, 83, 6, 124, 83, 47, 144, 0, 0, 0, 14, 69, 29, 34, 71, 36, 240, 81,
+			34, 132, 90, 6, 139, 0, 16, 70, 76, 22, 79, 56, 20, 129, 89, 140, 13, 50, 6, 130, 13, 0, 11, 68, 21, 21, 65, 48, 132, 49,
+			58, 118, 0, 8, 197, 16, 243, 73, 56, 240, 65, 15, 69, 16, 80, 149, 56, 176, 72, 132, 71, 6, 129, 50, 49, 0, 0, 17, 70, 16,
+			144, 77, 21, 65, 82, 72, 140, 6, 35, 65, 113, 47, 114, 0, 15, 70, 8, 20, 211, 37, 53, 0, 71, 141, 89, 124, 89, 47, 0, 14,
+			70, 4, 148, 144, 61, 113, 82, 6, 143, 48, 4, 149, 0, 0, 15, 67, 61, 85, 0, 4, 138, 47, 13, 84, 0, 81, 111, 102, 32, 15,
+			69, 81, 34, 65, 56, 144, 47, 34, 132, 6, 35, 50, 37, 0, 7, 196, 100, 83, 69, 56, 16, 12, 68, 4, 211, 65, 56, 119, 65, 6,
+			121, 50, 0, 19, 72, 4, 197, 18, 36, 224, 200, 4, 208, 133, 55, 47, 34, 124, 68, 13, 65, 0, 17, 70, 32, 84, 131, 84, 193, 83,
+			107, 131, 49, 57, 117, 55, 132, 88, 0, 17, 70, 16, 144, 66, 21, 65, 83, 72, 147, 71, 6, 132, 47, 132, 88, 0, 0, 18, 4, 95,
+			114, 102, 120, 34, 6, 122, 47, 34, 13, 83, 55, 122, 49, 89, 0, 0, 15, 70, 28, 147, 12, 36, 19, 128, 75, 124, 55, 132, 13, 50,
+			0, 17, 70, 104, 147, 66, 4, 37, 197, 88, 113, 65, 71, 121, 71, 58, 37, 0, 17, 70, 56, 84, 1, 48, 84, 197, 50, 122, 48, 13,
+			55, 6, 132, 88, 0, 9, 198, 81, 32, 86, 21, 36, 197, 17, 10, 67, 80, 241, 149, 47, 139, 83, 137, 0, 14, 70, 76, 80, 76, 36,
+			243, 128, 89, 132, 55, 147, 50, 0, 16, 70, 64, 20, 129, 16, 148, 197, 48, 35, 34, 13, 72, 140, 89, 0, 17, 70, 48, 81, 193, 48,
+			84, 197, 55, 132, 81, 13, 55, 6, 132, 88, 0, 17, 70, 36, 224, 210, 20, 20, 197, 124, 50, 49, 34, 6, 132, 89, 0, 36, 9, 198,
+			12, 243, 150, 21, 36, 197, 36, 10, 198, 12, 243, 150, 21, 36, 197, 65, 46, 0, 16, 66, 60, 96, 3, 128, 84, 86, 115, 0, 34, 81,
+			116, 104, 101, 32, 19, 66, 60, 96, 128, 84, 58, 124, 76, 0, 66, 8, 81, 119, 104, 105, 99, 104, 32, 14, 66, 60, 96, 13, 84, 13,
+			50, 0, 34, 81, 97, 110, 32, 12, 66, 60, 96, 13, 84, 13, 0, 34, 81, 97, 32, 9, 66, 60, 96, 128, 84, 0, 72, 46, 12, 68,
+			64, 19, 19, 100, 48, 133, 55, 88, 37, 0, 20, 71, 36, 229, 133, 57, 67, 210, 100, 124, 50, 84, 13, 50, 47, 152, 34, 37, 0, 103,
+			18, 71, 36, 229, 133, 57, 67, 210, 100, 124, 50, 84, 13, 50, 47, 34, 37, 0, 13, 202, 12, 243, 148, 20, 212, 12, 5, 66, 86, 20,
+			66, 24, 74, 5, 85, 8, 61, 34, 84, 5, 66, 86, 20, 119, 87, 6, 135, 125, 108, 141, 47, 124, 84, 0, 103, 24, 74, 5, 85, 8,
+			61, 34, 84, 5, 66, 86, 20, 133, 87, 6, 126, 34, 113, 47, 13, 47, 124, 84, 0, 0, 9, 67, 52, 144, 192, 65, 140, 49, 0, 0,
+			0, 11, 68, 76, 178, 69, 16, 89, 49, 132, 72, 0, 15, 70, 49, 82, 197, 92, 20, 141, 55, 137, 49, 58, 135, 65, 0, 19, 71, 4,
+			97, 137, 16, 21, 137, 80, 35, 83, 124, 72, 6, 141, 84, 124, 47, 0, 0, 11, 68, 16, 21, 137, 20, 72, 141, 84, 37, 0, 10, 68,
+			4, 113, 201, 20, 35, 81, 37, 0, 0, 0, 0, 11, 68, 5, 52, 193, 16, 119, 89, 121, 72, 0, 6, 195, 36, 212, 9, 65, 10, 67,
+			32, 244, 9, 107, 139, 48, 132, 0, 9, 198, 12, 20, 211, 21, 69, 5, 17, 12, 68, 8, 148, 5, 16, 71, 140, 48, 122, 72, 0, 0,
+			15, 70, 28, 84, 129, 36, 229, 0, 81, 122, 34, 140, 50, 47, 0, 12, 68, 84, 229, 9, 20, 129, 50, 47, 6, 140, 0, 15, 70, 56,
+			20, 195, 20, 229, 0, 50, 141, 89, 13, 50, 47, 0, 11, 68, 8, 147, 205, 20, 71, 140, 139, 65, 0, 15, 70, 4, 116, 143, 84, 225,
+			0, 119, 81, 34, 138, 50, 72, 0, 0, 8, 67, 4, 33, 64, 141, 71, 0, 10, 67, 81, 112, 83, 47, 58, 126, 88, 0, 0, 0, 10,
+			68, 60, 208, 71, 32, 139, 65, 121, 0, 12, 201, 80, 129, 82, 52, 244, 212, 4, 35, 5, 15, 23, 73, 72, 84, 212, 61, 32, 84, 36,
+			243, 128, 34, 122, 89, 47, 13, 34, 6, 141, 91, 13, 50, 0, 23, 73, 72, 84, 208, 37, 32, 84, 36, 243, 128, 34, 122, 89, 48, 125,
+			34, 6, 141, 91, 13, 50, 0, 13, 201, 65, 35, 199, 72, 19, 77, 4, 35, 5, 103, 66, 23, 73, 65, 33, 80, 5, 32, 84, 36, 243,
+			128, 48, 34, 122, 48, 13, 34, 6, 141, 91, 13, 50, 0, 21, 73, 64, 131, 206, 20, 209, 84, 4, 35, 5, 83, 139, 50, 132, 65, 47,
+			141, 71, 118, 0, 12, 201, 16, 148, 210, 21, 5, 84, 4, 35, 5, 66, 21, 73, 4, 97, 137, 72, 208, 84, 36, 243, 128, 35, 83, 114,
+			65, 6, 141, 91, 13, 50, 0, 0, 9, 198, 48, 83, 212, 5, 33, 0, 18, 13, 202, 36, 225, 5, 80, 84, 141, 36, 224, 84, 20, 16,
+			0, 11, 200, 65, 35, 202, 20, 53, 9, 48, 80, 16, 12, 67, 60, 225, 64, 58, 128, 50, 0, 34, 47, 11, 6, 195, 60, 209, 192, 13,
+			0, 16, 70, 21, 48, 193, 72, 115, 212, 113, 89, 49, 6, 130, 81, 139, 0, 14, 4, 95, 99, 101, 100, 89, 13, 72, 6, 124, 55, 119,
+			0, 0, 14, 70, 76, 147, 194, 32, 19, 128, 91, 13, 84, 133, 50, 0, 16, 70, 48, 80, 129, 56, 243, 128, 55, 122, 71, 13, 50, 126,
+			50, 0, 16, 70, 32, 244, 137, 104, 243, 128, 107, 13, 34, 140, 88, 13, 50, 0, 15, 70, 25, 34, 83, 76, 243, 128, 83, 34, 132, 89,
+			6, 154, 0, 14, 70, 8, 19, 12, 60, 243, 128, 71, 13, 55, 137, 50, 0, 16, 70, 4, 33, 15, 52, 83, 128, 35, 71, 72, 13, 65,
+			13, 50, 0, 0, 13, 68, 49, 82, 71, 36, 55, 137, 6, 132, 75, 37, 0, 14, 70, 28, 84, 136, 5, 33, 0, 81, 143, 107, 130, 47,
+			0, 14, 70, 80, 129, 82, 21, 67, 192, 86, 143, 47, 6, 137, 0, 10, 199, 12, 244, 143, 48, 192, 82, 100, 66, 0, 14, 69, 64, 148,
+			129, 13, 144, 48, 148, 34, 13, 89, 37, 0, 14, 69, 12, 241, 9, 25, 144, 49, 139, 72, 113, 83, 140, 0, 15, 70, 4, 229, 9, 60,
+			50, 0, 35, 50, 108, 132, 126, 49, 0, 0, 17, 70, 72, 20, 8, 4, 83, 0, 34, 121, 83, 140, 6, 122, 55, 0, 103, 15, 70, 80,
+			83, 132, 72, 147, 0, 47, 122, 50, 72, 34, 118, 0, 19, 71, 77, 68, 129, 80, 81, 201, 12, 89, 47, 34, 13, 47, 132, 75, 124, 49,
+			0, 15, 70, 61, 3, 211, 77, 83, 64, 13, 48, 126, 89, 13, 65, 0, 23, 73, 12, 19, 65, 72, 17, 5, 72, 145, 64, 49, 35, 65,
+			13, 34, 6, 121, 72, 13, 34, 37, 0, 0, 14, 69, 21, 33, 66, 85, 48, 122, 34, 125, 71, 13, 89, 0, 13, 68, 69, 80, 137, 80,
+			49, 57, 137, 71, 124, 47, 0, 13, 69, 32, 17, 199, 37, 48, 107, 35, 81, 124, 89, 0, 11, 68, 17, 85, 133, 80, 72, 137, 84, 141,
+			0, 11, 68, 8, 145, 5, 80, 71, 132, 72, 141, 0, 12, 69, 5, 52, 197, 77, 48, 119, 89, 122, 89, 0, 0, 19, 71, 41, 83, 66,
+			4, 192, 89, 4, 75, 129, 65, 71, 13, 55, 6, 140, 13, 0, 0, 0, 10, 67, 77, 81, 84, 89, 137, 113, 47, 0, 21, 72, 4, 67,
+			79, 56, 149, 9, 60, 224, 35, 72, 65, 13, 50, 6, 124, 91, 13, 50, 0, 0, 13, 68, 88, 19, 5, 80, 84, 35, 55, 6, 141, 0,
+			103, 11, 68, 88, 19, 5, 80, 84, 35, 55, 141, 0, 14, 69, 80, 84, 212, 21, 48, 47, 122, 89, 47, 132, 88, 0, 16, 70, 72, 83,
+			1, 80, 149, 133, 34, 122, 55, 13, 47, 124, 84, 0, 19, 71, 72, 80, 207, 52, 209, 78, 16, 34, 4, 122, 49, 13, 65, 122, 50, 72,
+			0, 17, 70, 65, 83, 129, 80, 149, 133, 48, 57, 137, 50, 13, 47, 124, 84, 0, 13, 69, 64, 148, 195, 21, 48, 48, 140, 89, 132, 88,
+			0, 15, 70, 56, 244, 197, 16, 149, 133, 50, 139, 88, 72, 140, 84, 0, 18, 70, 20, 229, 5, 56, 68, 133, 126, 50, 47, 6, 126, 50,
+			72, 34, 14, 0, 15, 69, 16, 148, 195, 85, 48, 72, 124, 89, 49, 13, 89, 0, 46, 14, 69, 16, 81, 133, 57, 48, 72, 113, 83, 122,
+			50, 89, 0, 0, 20, 71, 48, 165, 66, 48, 160, 78, 4, 55, 57, 137, 71, 55, 57, 6, 121, 50, 13, 0, 17, 71, 52, 86, 154, 4,
+			226, 78, 20, 65, 122, 88, 13, 50, 132, 50, 0, 10, 199, 4, 229, 9, 12, 194, 78, 20, 65, 5, 194, 57, 144, 13, 0, 9, 67, 65,
+			81, 0, 48, 117, 72, 0, 9, 67, 28, 83, 192, 75, 132, 139, 0, 6, 195, 36, 35, 64, 13, 0, 14, 4, 95, 99, 97, 112, 49, 4,
+			35, 48, 14, 47, 118, 0, 0, 9, 198, 52, 243, 69, 57, 69, 77, 66, 0, 13, 202, 16, 83, 79, 57, 53, 18, 5, 66, 86, 20, 17,
+			15, 70, 12, 245, 207, 72, 177, 82, 49, 139, 58, 131, 49, 114, 0, 9, 198, 12, 21, 129, 48, 145, 82, 15, 0, 12, 67, 65, 85, 0,
+			4, 48, 117, 47, 0, 47, 10, 16, 70, 52, 19, 4, 37, 97, 83, 65, 133, 55, 72, 6, 132, 84, 0, 14, 69, 72, 244, 193, 73, 144,
+			34, 139, 88, 13, 34, 37, 0, 14, 69, 16, 84, 195, 73, 144, 72, 113, 89, 49, 34, 141, 0, 11, 200, 4, 229, 9, 25, 33, 69, 104,
+			80, 65, 6, 195, 57, 149, 0, 13, 6, 195, 12, 83, 192, 13, 0, 17, 70, 52, 145, 20, 21, 35, 64, 65, 6, 124, 72, 47, 4, 131,
+			65, 0, 0, 17, 70, 8, 85, 23, 20, 83, 128, 71, 124, 47, 58, 132, 50, 0, 74, 10, 16, 70, 32, 17, 18, 36, 19, 128, 107, 141,
+			72, 34, 132, 13, 50, 0, 13, 68, 56, 84, 1, 48, 50, 122, 48, 6, 133, 55, 0, 17, 70, 88, 149, 1, 52, 147, 128, 84, 140, 47,
+			13, 65, 125, 50, 0, 103, 16, 70, 88, 149, 1, 52, 147, 128, 84, 124, 47, 13, 65, 125, 50, 0, 14, 70, 80, 84, 146, 4, 147, 128,
+			47, 13, 34, 141, 50, 0, 12, 68, 72, 84, 5, 48, 34, 113, 48, 122, 55, 0, 11, 68, 64, 20, 1, 48, 48, 141, 48, 118, 0, 9,
+			198, 61, 85, 8, 61, 84, 197, 65, 15, 70, 61, 69, 15, 52, 19, 128, 126, 47, 13, 65, 13, 50, 0, 16, 70, 56, 243, 147, 20, 228,
+			197, 50, 126, 50, 89, 13, 50, 89, 0, 17, 70, 52, 242, 9, 12, 19, 128, 65, 139, 107, 6, 132, 49, 13, 50, 0, 16, 70, 48, 144,
+			73, 76, 243, 128, 55, 132, 6, 141, 88, 126, 50, 0, 7, 196, 48, 20, 5, 48, 17, 15, 70, 29, 34, 70, 24, 243, 128, 81, 34, 124,
+			83, 13, 50, 0, 9, 198, 29, 32, 70, 24, 149, 9, 17, 11, 68, 5, 4, 1, 48, 119, 48, 133, 55, 0, 0, 13, 3, 95, 194, 183,
+			65, 124, 72, 118, 72, 126, 47, 0, 0, 12, 67, 61, 84, 128, 138, 114, 0, 103, 72, 34, 46, 10, 67, 61, 84, 128, 149, 0, 72, 34,
+			46, 17, 3, 95, 194, 180, 119, 49, 57, 137, 47, 35, 49, 89, 122, 50, 47, 0, 0, 14, 69, 77, 84, 5, 72, 32, 89, 137, 48, 6,
+			131, 71, 0, 16, 70, 76, 52, 143, 81, 83, 64, 89, 49, 34, 139, 47, 13, 65, 0, 11, 67, 72, 80, 68, 34, 122, 72, 0, 38, 46,
+			9, 67, 72, 80, 68, 34, 132, 72, 0, 9, 67, 48, 80, 68, 55, 132, 72, 0, 0, 18, 70, 76, 148, 129, 13, 84, 193, 89, 145, 13,
+			49, 57, 6, 137, 89, 13, 0, 9, 198, 5, 32, 80, 4, 131, 197, 17, 0, 12, 68, 25, 33, 68, 4, 83, 34, 132, 72, 13, 0, 10,
+			68, 4, 242, 70, 20, 132, 83, 13, 0, 9, 198, 64, 16, 201, 24, 144, 192, 17, 14, 69, 52, 17, 18, 36, 64, 65, 13, 72, 34, 124,
+			72, 0, 13, 68, 88, 242, 76, 4, 84, 58, 121, 55, 6, 121, 0, 12, 68, 85, 34, 78, 20, 57, 146, 34, 124, 50, 0, 11, 68, 12,
+			17, 18, 20, 49, 121, 72, 114, 0, 12, 68, 4, 67, 194, 20, 119, 72, 139, 71, 37, 0, 0, 19, 72, 12, 19, 79, 84, 99, 1, 28,
+			80, 49, 35, 65, 13, 83, 55, 121, 90, 0, 6, 195, 36, 148, 192, 13, 0, 9, 198, 52, 21, 9, 48, 64, 64, 17, 16, 70, 80, 146,
+			149, 4, 224, 64, 47, 144, 58, 6, 121, 50, 13, 0, 17, 70, 52, 243, 148, 4, 224, 64, 65, 126, 50, 47, 6, 35, 50, 13, 0, 15,
+			70, 64, 148, 129, 56, 128, 64, 48, 13, 34, 121, 50, 13, 0, 9, 198, 52, 17, 15, 56, 224, 64, 17, 16, 70, 32, 244, 141, 60, 224,
+			76, 107, 136, 65, 6, 139, 50, 118, 0, 19, 70, 25, 32, 71, 52, 83, 148, 83, 34, 35, 81, 65, 6, 122, 50, 47, 0, 36, 15, 70,
+			12, 244, 143, 48, 192, 64, 49, 13, 34, 139, 55, 13, 0, 16, 70, 12, 130, 77, 21, 32, 64, 49, 140, 65, 6, 144, 34, 13, 0, 0,
+			10, 67, 52, 147, 73, 65, 132, 65, 37, 0, 17, 70, 64, 20, 129, 8, 243, 1, 48, 13, 34, 35, 71, 13, 55, 13, 0, 11, 68, 24,
+			147, 210, 16, 83, 132, 135, 72, 0, 0, 9, 68, 92, 131, 210, 20, 107, 136, 0, 14, 3, 33, 63, 51, 89, 36, 50, 47, 37, 36, 50,
+			47, 0, 13, 69, 76, 80, 66, 20, 64, 89, 132, 71, 122, 72, 0, 12, 68, 61, 2, 78, 20, 139, 48, 6, 140, 50, 0, 11, 68, 44,
+			244, 10, 20, 49, 126, 48, 37, 0, 13, 3, 33, 63, 51, 83, 39, 34, 47, 40, 50, 36, 0, 13, 69, 8, 19, 12, 4, 64, 71, 35,
+			55, 13, 72, 0, 0, 12, 68, 52, 81, 193, 56, 65, 122, 81, 13, 50, 0, 9, 67, 4, 37, 64, 35, 71, 137, 0, 9, 67, 72, 245,
+			192, 34, 138, 0, 37, 8, 67, 72, 245, 192, 34, 139, 0, 20, 67, 8, 245, 192, 71, 4, 138, 15, 72, 6, 138, 50, 0, 81, 100, 111,
+			119, 110, 32, 9, 67, 8, 245, 192, 71, 138, 0, 36, 8, 67, 8, 245, 192, 71, 139, 0, 11, 68, 5, 33, 207, 56, 130, 81, 126, 50,
+			0, 11, 68, 4, 65, 15, 56, 35, 72, 126, 50, 0, 4, 193, 188, 43, 0, 8, 197, 88, 84, 142, 60, 224, 16, 13, 69, 56, 117, 89,
+			20, 224, 50, 137, 57, 122, 50, 0, 16, 70, 20, 118, 80, 80, 144, 64, 124, 75, 6, 124, 48, 91, 13, 0, 12, 68, 64, 21, 9, 60,
+			48, 35, 47, 124, 139, 0, 15, 70, 52, 147, 9, 80, 144, 64, 65, 13, 55, 124, 91, 13, 0, 9, 198, 52, 83, 79, 72, 144, 76, 17,
+			17, 70, 33, 148, 15, 96, 144, 64, 107, 140, 48, 6, 126, 49, 89, 144, 0, 9, 198, 32, 16, 137, 81, 80, 76, 17, 14, 70, 25, 80,
+			200, 76, 144, 64, 83, 57, 137, 91, 13, 0, 17, 70, 9, 83, 9, 52, 144, 64, 71, 117, 55, 6, 124, 65, 144, 0, 103, 10, 67, 8,
+			193, 72, 71, 55, 122, 107, 0, 12, 3, 95, 194, 173, 65, 35, 49, 34, 126, 50, 0, 0, 16, 70, 88, 243, 1, 80, 147, 5, 84, 126,
+			55, 119, 47, 118, 0, 103, 6, 195, 60, 224, 197, 8, 10, 67, 52, 144, 193, 65, 140, 49, 13, 0, 6, 195, 16, 208, 193, 13, 0, 9,
+			198, 65, 84, 144, 61, 37, 0, 66, 13, 69, 64, 22, 80, 4, 192, 48, 141, 48, 35, 55, 0, 12, 68, 52, 19, 135, 100, 65, 141, 50,
+			75, 37, 0, 18, 3, 95, 194, 171, 55, 122, 83, 47, 6, 81, 124, 55, 13, 65, 122, 47, 0, 0, 10, 67, 56, 245, 192, 50, 138, 0,
+			32, 42, 6, 195, 56, 245, 192, 32, 8, 67, 101, 97, 83, 132, 84, 0, 10, 67, 48, 242, 83, 55, 139, 124, 89, 0, 13, 69, 5, 53,
+			12, 21, 144, 35, 89, 47, 55, 37, 0, 15, 69, 77, 80, 148, 49, 144, 89, 129, 47, 13, 55, 124, 0, 32, 14, 69, 52, 148, 197, 73,
+			144, 65, 124, 88, 13, 34, 124, 0, 9, 67, 16, 69, 64, 86, 124, 0, 46, 15, 3, 95, 194, 168, 72, 140, 119, 34, 6, 132, 89, 124,
+			89, 0, 0, 16, 70, 28, 241, 6, 72, 145, 68, 81, 126, 72, 83, 34, 132, 72, 0, 16, 69, 44, 244, 133, 4, 224, 49, 114, 34, 6,
+			132, 13, 50, 0, 103, 15, 69, 44, 244, 133, 4, 224, 49, 134, 34, 6, 132, 13, 50, 0, 16, 70, 77, 68, 137, 56, 113, 68, 89, 47,
+			34, 124, 68, 81, 72, 0, 0, 10, 67, 36, 224, 193, 124, 68, 49, 13, 0, 15, 3, 95, 194, 166, 71, 34, 139, 49, 13, 50, 71, 6,
+			130, 0, 0, 11, 68, 32, 82, 68, 36, 107, 140, 72, 37, 0, 11, 68, 88, 147, 12, 36, 84, 124, 55, 140, 0, 9, 198, 24, 244, 133,
+			92, 20, 142, 66, 0, 14, 69, 88, 17, 193, 73, 144, 84, 141, 81, 13, 34, 124, 0, 14, 69, 61, 97, 82, 49, 144, 139, 84, 114, 55,
+			124, 0, 46, 8, 197, 61, 85, 12, 5, 144, 65, 0, 14, 69, 20, 198, 83, 136, 80, 141, 55, 6, 132, 88, 141, 0, 12, 68, 73, 84,
+			197, 76, 34, 137, 88, 125, 88, 0, 12, 68, 9, 84, 197, 76, 71, 129, 89, 125, 88, 0, 10, 67, 5, 149, 80, 119, 57, 129, 48, 0,
+			0, 8, 197, 92, 147, 12, 37, 48, 15, 17, 71, 92, 21, 5, 73, 50, 5, 16, 58, 133, 47, 114, 91, 122, 72, 0, 13, 69, 52, 245,
+			137, 21, 48, 65, 137, 84, 124, 88, 0, 13, 69, 52, 245, 84, 33, 48, 65, 138, 86, 88, 0, 46, 8, 197, 29, 32, 84, 37, 48, 15,
+			0, 20, 71, 52, 83, 129, 28, 84, 137, 20, 65, 13, 50, 6, 35, 75, 57, 13, 34, 37, 0, 0, 10, 67, 48, 81, 207, 55, 122, 81,
+			139, 0, 13, 3, 95, 194, 160, 107, 130, 72, 89, 48, 141, 89, 0, 0, 27, 3, 95, 194, 161, 2, 124, 50, 84, 4, 131, 47, 113, 72,
+			122, 49, 89, 49, 55, 13, 65, 6, 141, 91, 13, 50, 0, 0, 13, 69, 56, 20, 12, 21, 48, 50, 141, 48, 118, 88, 0, 14, 69, 52,
+			17, 18, 5, 48, 65, 13, 72, 34, 120, 89, 0, 13, 69, 88, 84, 147, 85, 48, 84, 131, 89, 113, 88, 0, 15, 71, 80, 19, 201, 76,
+			80, 67, 32, 47, 132, 91, 13, 101, 0, 0, 9, 198, 17, 32, 71, 56, 85, 0, 15, 0, 12, 68, 92, 150, 133, 56, 58, 124, 88, 13,
+			50, 0, 14, 70, 92, 130, 84, 37, 50, 0, 58, 140, 47, 124, 91, 0, 0, 14, 69, 32, 84, 143, 36, 224, 107, 122, 34, 139, 124, 50,
+			0, 8, 197, 12, 20, 133, 20, 224, 17, 0, 0, 11, 68, 48, 84, 143, 100, 55, 132, 34, 142, 0, 11, 68, 16, 83, 8, 36, 72, 122,
+			55, 37, 0, 12, 69, 48, 85, 8, 4, 192, 55, 132, 87, 118, 0, 13, 69, 48, 21, 78, 12, 128, 55, 121, 50, 76, 0, 103, 0, 12,
+			68, 44, 20, 133, 56, 49, 35, 34, 13, 50, 0, 16, 70, 20, 212, 8, 5, 49, 83, 122, 65, 83, 13, 89, 132, 88, 0, 12, 68, 12,
+			18, 149, 56, 49, 141, 75, 13, 50, 0, 0, 16, 8, 116, 104, 101, 114, 101, 39, 108, 108, 86, 143, 55, 0, 72, 32, 20, 71, 65, 35,
+			199, 56, 244, 201, 76, 48, 34, 126, 81, 50, 6, 139, 89, 124, 89, 0, 16, 70, 64, 244, 148, 72, 18, 84, 48, 136, 47, 34, 141, 47,
+			0, 135, 14, 69, 8, 147, 141, 4, 224, 71, 124, 50, 65, 35, 50, 0, 11, 68, 4, 113, 210, 60, 35, 81, 34, 139, 0, 0, 9, 198,
+			12, 243, 12, 20, 83, 128, 66, 17, 70, 12, 130, 76, 20, 19, 128, 76, 124, 55, 6, 132, 13, 50, 0, 103, 9, 198, 44, 147, 12, 20,
+			83, 128, 66, 15, 70, 77, 70, 71, 36, 19, 128, 89, 47, 124, 75, 144, 50, 0, 16, 70, 32, 19, 15, 28, 83, 128, 107, 35, 55, 13,
+			75, 13, 50, 0, 15, 70, 20, 50, 5, 48, 243, 128, 122, 91, 13, 55, 126, 50, 0, 15, 70, 8, 81, 15, 84, 147, 128, 71, 122, 72,
+			137, 125, 50, 0, 0, 17, 71, 88, 83, 135, 20, 19, 131, 20, 84, 122, 50, 75, 13, 50, 89, 0, 19, 71, 80, 20, 203, 24, 244, 131,
+			20, 47, 6, 35, 89, 49, 83, 4, 136, 89, 0, 10, 199, 36, 229, 5, 72, 96, 67, 20, 65, 18, 71, 36, 225, 133, 72, 83, 131, 20,
+			124, 50, 83, 13, 34, 13, 50, 89, 0, 19, 71, 36, 212, 5, 16, 19, 131, 20, 124, 65, 48, 6, 132, 72, 13, 50, 89, 0, 18, 71,
+			20, 51, 205, 52, 84, 131, 20, 6, 132, 49, 4, 126, 65, 131, 89, 0, 11, 68, 16, 80, 207, 100, 72, 132, 49, 142, 0, 5, 194, 72,
+			64, 46, 0, 12, 69, 32, 20, 150, 21, 144, 107, 130, 84, 37, 0, 11, 200, 64, 144, 195, 4, 66, 76, 49, 144, 67, 13, 68, 52, 245,
+			9, 24, 65, 139, 47, 6, 132, 83, 0, 13, 69, 52, 243, 132, 5, 144, 65, 129, 50, 72, 141, 0, 0, 15, 70, 52, 20, 135, 5, 33,
+			84, 65, 130, 81, 34, 13, 47, 0, 15, 70, 72, 144, 207, 12, 129, 84, 34, 124, 49, 13, 91, 141, 0, 9, 198, 52, 20, 148, 36, 225,
+			84, 67, 16, 70, 36, 229, 5, 72, 225, 84, 124, 50, 47, 114, 50, 122, 47, 0, 21, 73, 16, 80, 207, 48, 193, 84, 4, 113, 64, 72,
+			141, 49, 126, 55, 47, 6, 121, 90, 0, 11, 200, 12, 240, 84, 32, 19, 135, 21, 32, 18, 16, 70, 12, 16, 133, 72, 225, 84, 49, 35,
+			71, 114, 50, 6, 141, 0, 11, 200, 4, 229, 9, 52, 21, 20, 21, 32, 65, 21, 72, 4, 225, 77, 60, 209, 84, 21, 32, 35, 50, 124,
+			65, 6, 126, 65, 113, 47, 114, 0, 20, 72, 4, 197, 15, 28, 85, 8, 21, 32, 4, 133, 55, 47, 13, 81, 122, 86, 114, 0, 0, 19,
+			70, 28, 83, 205, 21, 68, 153, 75, 37, 38, 6, 126, 65, 13, 47, 34, 37, 0, 0, 13, 68, 92, 129, 82, 20, 4, 58, 143, 0, 8,
+			10, 47, 13, 69, 5, 35, 213, 56, 64, 119, 34, 138, 50, 72, 0, 14, 69, 80, 245, 193, 72, 64, 47, 117, 58, 135, 72, 0, 66, 26,
+			68, 76, 19, 148, 4, 89, 6, 35, 50, 47, 13, 15, 49, 55, 6, 133, 88, 0, 81, 99, 108, 97, 117, 115, 32, 11, 68, 52, 148, 200,
+			4, 65, 132, 91, 13, 0, 8, 197, 36, 225, 210, 36, 64, 65, 9, 198, 20, 225, 137, 20, 193, 0, 65, 19, 71, 16, 243, 7, 20, 195,
+			1, 84, 72, 126, 55, 81, 6, 122, 99, 55, 140, 0, 12, 68, 88, 149, 146, 20, 84, 132, 84, 34, 14, 0, 11, 68, 76, 16, 146, 20,
+			89, 141, 71, 114, 0, 15, 69, 72, 81, 149, 56, 64, 34, 132, 83, 129, 50, 72, 0, 37, 8, 197, 72, 80, 207, 72, 64, 36, 15, 69,
+			72, 80, 207, 72, 64, 34, 122, 49, 114, 72, 0, 103, 47, 14, 69, 72, 80, 207, 72, 64, 34, 122, 49, 135, 72, 0, 47, 14, 69, 64,
+			20, 212, 20, 64, 48, 141, 89, 47, 125, 72, 0, 14, 69, 52, 148, 212, 20, 64, 65, 124, 89, 47, 125, 72, 0, 16, 70, 49, 83, 129,
+			80, 144, 192, 55, 137, 50, 13, 47, 124, 49, 0, 0, 16, 70, 16, 147, 65, 28, 114, 79, 72, 125, 65, 121, 90, 124, 139, 0, 0, 17,
+			70, 52, 147, 133, 60, 192, 64, 65, 124, 50, 132, 6, 139, 55, 13, 0, 15, 70, 72, 81, 133, 73, 32, 76, 34, 113, 83, 131, 34, 118,
+			0, 15, 70, 52, 246, 137, 48, 192, 64, 65, 13, 88, 124, 55, 13, 0, 17, 70, 48, 20, 193, 28, 224, 64, 55, 13, 88, 121, 50, 57,
+			13, 0, 103, 16, 70, 48, 20, 193, 28, 224, 64, 55, 13, 88, 35, 50, 57, 13, 0, 15, 70, 28, 244, 137, 48, 192, 64, 81, 114, 34,
+			124, 55, 13, 0, 6, 195, 60, 80, 196, 13, 0, 17, 70, 72, 17, 129, 20, 195, 1, 34, 121, 83, 140, 6, 122, 55, 13, 0, 9, 198,
+			84, 208, 146, 20, 195, 1, 66, 15, 70, 80, 244, 148, 36, 195, 1, 47, 135, 47, 6, 132, 119, 0, 11, 67, 76, 83, 73, 89, 122, 65,
+			140, 0, 103, 0, 11, 68, 17, 80, 78, 20, 72, 58, 141, 50, 0, 14, 69, 4, 193, 146, 20, 64, 35, 55, 83, 34, 113, 72, 0, 12,
+			68, 45, 80, 76, 4, 49, 58, 121, 55, 119, 0, 12, 69, 76, 48, 82, 20, 64, 89, 49, 143, 72, 0, 12, 69, 72, 82, 78, 20, 64,
+			34, 141, 50, 72, 0, 14, 69, 32, 21, 18, 20, 64, 107, 141, 47, 34, 125, 72, 0, 12, 68, 28, 83, 146, 20, 90, 126, 50, 34, 13,
+			0, 0, 20, 67, 80, 130, 83, 86, 6, 124, 89, 58, 4, 128, 50, 0, 33, 81, 111, 110, 101, 32, 12, 67, 80, 130, 83, 86, 124, 89,
+			0, 76, 34, 33, 10, 67, 5, 33, 64, 2, 130, 0, 35, 46, 0, 17, 70, 81, 83, 137, 76, 144, 64, 47, 137, 50, 6, 132, 90, 13,
+			0, 103, 17, 70, 48, 144, 133, 72, 144, 64, 55, 140, 71, 6, 144, 34, 132, 13, 0, 9, 198, 64, 85, 21, 56, 144, 64, 17, 16, 70,
+			29, 32, 78, 16, 208, 64, 81, 34, 35, 50, 72, 65, 121, 0, 17, 70, 16, 147, 5, 52, 208, 64, 72, 125, 55, 6, 122, 65, 13, 0,
+			103, 16, 70, 16, 147, 5, 52, 208, 64, 72, 140, 55, 6, 122, 65, 13, 0, 15, 70, 12, 240, 200, 48, 80, 64, 49, 126, 49, 55, 132,
+			13, 0, 14, 69, 12, 19, 148, 60, 224, 49, 35, 50, 47, 126, 50, 0, 15, 70, 8, 22, 143, 60, 176, 64, 71, 119, 88, 137, 49, 13,
+			0, 9, 198, 5, 32, 66, 36, 48, 64, 17, 0, 14, 70, 52, 144, 200, 20, 195, 5, 65, 113, 91, 122, 55, 0, 10, 68, 93, 34, 84,
+			32, 34, 140, 86, 0, 15, 70, 93, 34, 84, 4, 35, 5, 34, 140, 47, 13, 71, 118, 0, 19, 71, 65, 148, 129, 52, 145, 1, 48, 48,
+			113, 34, 6, 35, 65, 124, 72, 118, 0, 15, 70, 24, 19, 12, 36, 35, 5, 83, 35, 55, 13, 71, 118, 0, 0, 12, 67, 92, 129, 78,
+			4, 58, 122, 50, 0, 50, 47, 12, 67, 92, 129, 78, 58, 2, 122, 50, 0, 10, 47, 14, 6, 115, 104, 101, 39, 108, 108, 91, 132, 55,
+			0, 72, 32, 13, 69, 28, 20, 133, 80, 128, 81, 35, 34, 13, 87, 0, 10, 67, 64, 83, 206, 48, 132, 13, 50, 0, 9, 198, 12, 243,
+			131, 21, 37, 0, 36, 10, 198, 12, 243, 131, 21, 37, 0, 65, 47, 0, 8, 196, 76, 19, 15, 56, 103, 17, 10, 67, 64, 242, 83, 48,
+			58, 121, 0, 46, 8, 67, 21, 33, 64, 143, 0, 46, 0, 14, 69, 4, 198, 67, 20, 224, 35, 55, 124, 89, 13, 50, 0, 16, 70, 4,
+			48, 213, 73, 49, 68, 119, 49, 151, 89, 125, 72, 0, 105, 15, 70, 4, 48, 213, 73, 49, 68, 119, 49, 131, 89, 125, 72, 0, 0, 6,
+			195, 72, 144, 65, 13, 0, 12, 68, 20, 210, 76, 100, 122, 65, 113, 55, 37, 0, 10, 67, 4, 128, 66, 141, 107, 35, 71, 0, 9, 66,
+			72, 80, 34, 4, 132, 0, 46, 5, 194, 60, 176, 13, 0, 11, 68, 61, 48, 193, 72, 126, 89, 49, 114, 0, 11, 68, 88, 144, 193, 72,
+			84, 124, 49, 114, 0, 11, 68, 48, 20, 197, 72, 55, 141, 88, 114, 0, 0, 13, 70, 72, 16, 200, 4, 83, 0, 34, 141, 76, 118, 0,
+			12, 68, 64, 83, 137, 76, 48, 132, 50, 113, 89, 0, 11, 68, 52, 144, 79, 92, 65, 132, 6, 138, 0, 0, 8, 197, 104, 243, 20, 112,
+			224, 65, 14, 70, 48, 148, 85, 21, 84, 128, 55, 113, 49, 131, 0, 103, 14, 70, 48, 148, 85, 21, 84, 128, 55, 113, 49, 57, 146, 0,
+			0, 17, 70, 4, 225, 18, 20, 20, 192, 121, 50, 72, 34, 6, 141, 13, 89, 0, 17, 70, 4, 225, 197, 48, 84, 192, 35, 50, 75, 13,
+			55, 125, 89, 0, 103, 16, 70, 4, 225, 197, 48, 84, 192, 35, 50, 75, 13, 55, 132, 89, 0, 17, 70, 88, 149, 1, 48, 148, 192, 84,
+			140, 47, 6, 35, 55, 125, 89, 0, 14, 70, 80, 80, 82, 28, 20, 192, 47, 145, 81, 35, 89, 0, 17, 70, 65, 148, 137, 80, 84, 192,
+			48, 140, 34, 6, 140, 47, 132, 88, 0, 19, 71, 33, 145, 18, 4, 225, 197, 4, 107, 140, 72, 34, 6, 141, 50, 75, 13, 0, 10, 199,
+			29, 80, 82, 4, 229, 5, 20, 67, 16, 71, 12, 243, 77, 37, 69, 5, 20, 49, 13, 65, 124, 47, 37, 0, 16, 70, 12, 242, 143, 56,
+			84, 192, 49, 13, 107, 139, 50, 141, 89, 0, 9, 198, 12, 130, 76, 36, 84, 192, 19, 16, 70, 4, 48, 213, 76, 84, 192, 119, 49, 57,
+			137, 88, 125, 88, 0, 5, 131, 239, 187, 191, 0, 10, 68, 17, 34, 69, 72, 72, 34, 148, 0, 0, 9, 198, 76, 21, 129, 56, 224, 72,
+			17, 11, 68, 4, 65, 9, 76, 35, 72, 124, 89, 0, 12, 68, 92, 131, 201, 76, 107, 137, 6, 124, 88, 0, 17, 70, 65, 34, 77, 21,
+			96, 76, 48, 34, 140, 65, 6, 132, 84, 118, 0, 0, 11, 67, 80, 129, 77, 4, 86, 122, 65, 0, 46, 10, 67, 72, 83, 73, 34, 13,
+			65, 132, 0, 18, 70, 12, 20, 143, 48, 147, 129, 49, 35, 34, 13, 55, 6, 140, 50, 13, 0, 0, 23, 3, 95, 194, 191, 2, 124, 50,
+			84, 4, 131, 47, 113, 72, 49, 58, 6, 122, 89, 76, 13, 50, 0, 0, 12, 201, 29, 32, 77, 52, 21, 9, 12, 19, 0, 17, 0, 16,
+			70, 77, 84, 5, 72, 224, 76, 89, 137, 48, 6, 131, 50, 118, 0, 27, 75, 72, 80, 207, 52, 209, 78, 16, 21, 9, 60, 224, 34, 122,
+			49, 13, 65, 122, 50, 72, 6, 141, 91, 13, 50, 0, 0, 9, 198, 48, 244, 146, 4, 147, 133, 17, 18, 71, 64, 145, 67, 20, 209, 65,
+			48, 48, 6, 132, 89, 65, 4, 132, 55, 0, 23, 73, 20, 112, 76, 37, 64, 82, 36, 19, 128, 113, 81, 35, 55, 113, 47, 6, 143, 34,
+			144, 50, 0, 10, 199, 12, 21, 8, 20, 68, 129, 48, 17, 0, 10, 67, 80, 129, 78, 86, 122, 50, 0, 32, 15, 70, 64, 20, 129, 52,
+			245, 82, 48, 35, 34, 119, 65, 146, 0, 15, 70, 52, 243, 147, 36, 85, 82, 65, 13, 89, 57, 151, 0, 105, 14, 70, 52, 243, 147, 36,
+			85, 82, 65, 13, 89, 57, 131, 0, 13, 69, 9, 34, 68, 4, 192, 71, 34, 140, 72, 118, 0, 17, 3, 95, 194, 187, 34, 140, 47, 6,
+			81, 124, 55, 13, 65, 122, 47, 0, 0, 9, 198, 16, 19, 65, 76, 53, 83, 17, 12, 68, 40, 20, 1, 56, 75, 13, 48, 35, 50, 0,
+			15, 70, 12, 245, 83, 12, 245, 83, 49, 137, 89, 49, 137, 89, 0, 13, 3, 95, 194, 184, 89, 122, 72, 6, 124, 55, 13, 0, 0, 14,
+			69, 36, 211, 199, 20, 224, 124, 65, 13, 75, 13, 50, 0, 15, 69, 12, 19, 131, 84, 224, 49, 35, 50, 49, 6, 137, 50, 0, 8, 197,
+			4, 81, 197, 4, 224, 66, 8, 197, 32, 84, 133, 36, 224, 66, 18, 71, 13, 33, 83, 12, 83, 132, 60, 49, 34, 13, 91, 122, 50, 72,
+			139, 0, 0, 22, 72, 28, 193, 78, 72, 245, 8, 21, 48, 81, 55, 4, 122, 50, 34, 6, 126, 87, 125, 89, 0, 21, 72, 4, 229, 9,
+			80, 129, 83, 21, 48, 35, 50, 47, 6, 124, 87, 13, 89, 132, 88, 0, 0, 16, 70, 92, 149, 8, 61, 85, 0, 58, 124, 86, 138, 47,
+			0, 74, 10, 9, 198, 92, 149, 8, 61, 85, 0, 66, 19, 72, 80, 245, 82, 56, 148, 85, 21, 64, 47, 131, 50, 125, 49, 125, 47, 0,
+			103, 18, 71, 76, 16, 210, 36, 98, 67, 20, 89, 35, 49, 34, 113, 83, 140, 89, 0, 17, 71, 72, 81, 133, 72, 83, 131, 20, 34, 122,
+			83, 34, 13, 50, 89, 0, 18, 71, 65, 34, 86, 36, 193, 71, 20, 48, 34, 124, 84, 113, 55, 113, 75, 0, 17, 71, 56, 84, 195, 36,
+			83, 131, 20, 50, 122, 89, 124, 13, 50, 89, 0, 17, 71, 25, 33, 69, 48, 19, 131, 20, 83, 34, 132, 55, 120, 50, 89, 0, 18, 71,
+			21, 52, 9, 60, 224, 71, 20, 122, 89, 48, 124, 13, 50, 121, 90, 0, 18, 71, 12, 243, 131, 36, 84, 135, 20, 49, 126, 50, 89, 124,
+			6, 143, 90, 0, 0, 10, 67, 48, 147, 79, 55, 124, 65, 139, 0, 0, 21, 73, 72, 83, 129, 37, 52, 193, 56, 49, 64, 34, 122, 50,
+			13, 89, 126, 50, 89, 0, 103, 19, 72, 8, 243, 66, 5, 33, 9, 21, 32, 71, 126, 65, 71, 114, 72, 6, 145, 0, 9, 67, 4, 113,
+			68, 141, 75, 72, 0, 0, 11, 67, 76, 144, 77, 89, 140, 6, 35, 65, 0, 15, 70, 80, 129, 82, 20, 241, 128, 86, 143, 34, 6, 126,
+			84, 0, 19, 71, 12, 16, 146, 36, 243, 5, 80, 49, 35, 71, 34, 132, 13, 55, 6, 141, 0, 0, 14, 70, 65, 85, 20, 36, 225, 192,
+			48, 117, 47, 124, 68, 0, 15, 70, 24, 193, 77, 36, 225, 192, 83, 55, 122, 65, 124, 68, 0, 12, 68, 16, 243, 3, 20, 72, 126, 55,
+			76, 141, 0, 9, 198, 8, 82, 74, 36, 225, 192, 66, 14, 70, 80, 243, 137, 28, 133, 0, 47, 13, 50, 140, 47, 0, 14, 70, 21, 97,
+			78, 36, 225, 192, 132, 84, 50, 124, 68, 0, 12, 4, 95, 103, 114, 118, 81, 34, 6, 121, 84, 0, 0, 10, 67, 92, 16, 207, 58, 141,
+			49, 139, 0, 0, 14, 68, 28, 242, 78, 28, 4, 81, 139, 124, 68, 0, 10, 46, 14, 70, 24, 245, 83, 32, 81, 64, 83, 137, 91, 6,
+			141, 0, 14, 70, 92, 19, 12, 4, 49, 64, 58, 126, 55, 125, 89, 0, 15, 70, 72, 244, 193, 48, 145, 64, 34, 139, 88, 119, 55, 37,
+			0, 9, 198, 77, 84, 16, 61, 49, 64, 66, 10, 67, 60, 193, 68, 139, 55, 122, 72, 0, 14, 70, 52, 20, 145, 84, 81, 64, 65, 130,
+			49, 6, 132, 0, 9, 198, 28, 243, 196, 9, 145, 64, 66, 16, 70, 21, 2, 84, 60, 209, 64, 113, 48, 124, 47, 13, 65, 124, 0, 16,
+			70, 12, 243, 131, 37, 49, 64, 49, 127, 50, 89, 6, 140, 89, 0, 16, 70, 4, 48, 68, 20, 209, 64, 119, 49, 35, 72, 13, 65, 37,
+			0, 0, 9, 198, 44, 83, 148, 84, 50, 217, 66, 9, 198, 8, 83, 7, 72, 17, 5, 66, 9, 198, 76, 84, 133, 56, 17, 5, 67, 17,
+			70, 12, 242, 78, 12, 145, 5, 49, 139, 124, 50, 89, 6, 140, 72, 0, 16, 70, 8, 195, 195, 44, 17, 5, 71, 55, 126, 49, 6, 141,
+			72, 0, 9, 2, 195, 151, 47, 140, 65, 88, 0, 0, 13, 68, 92, 131, 211, 20, 4, 107, 137, 88, 0, 8, 46, 9, 198, 92, 20, 148,
+			32, 241, 192, 18, 10, 68, 28, 21, 71, 20, 81, 141, 75, 0, 22, 72, 4, 229, 5, 12, 81, 5, 57, 64, 35, 50, 47, 124, 89, 6,
+			132, 72, 13, 50, 47, 0, 5, 194, 77, 64, 24, 5, 194, 77, 64, 46, 9, 66, 77, 64, 89, 13, 50, 47, 0, 0, 0, 9, 198, 77,
+			65, 82, 36, 193, 64, 16, 16, 70, 56, 84, 195, 4, 97, 64, 50, 122, 89, 49, 35, 83, 141, 0, 15, 70, 36, 211, 199, 20, 225, 64,
+			124, 65, 13, 75, 13, 50, 0, 14, 69, 17, 83, 131, 4, 224, 72, 129, 50, 49, 13, 50, 0, 14, 70, 12, 244, 137, 56, 225, 64, 49,
+			13, 34, 132, 50, 0, 15, 69, 60, 130, 79, 4, 224, 139, 107, 6, 140, 139, 13, 50, 0, 13, 70, 88, 82, 9, 12, 193, 64, 84, 144,
+			49, 118, 0, 18, 70, 84, 181, 76, 20, 193, 64, 57, 137, 49, 13, 55, 6, 141, 55, 37, 0, 15, 70, 77, 65, 82, 36, 193, 64, 89,
+			47, 122, 34, 140, 55, 0, 7, 66, 78, 80, 91, 132, 0, 9, 198, 76, 20, 132, 36, 225, 64, 66, 9, 198, 72, 245, 84, 36, 225, 64,
+			66, 9, 198, 53, 83, 132, 4, 225, 64, 66, 14, 70, 52, 244, 129, 36, 225, 64, 65, 13, 34, 141, 50, 0, 9, 198, 48, 21, 18, 36,
+			225, 64, 17, 15, 70, 40, 20, 205, 36, 225, 64, 75, 35, 88, 65, 124, 50, 0, 14, 70, 28, 148, 129, 24, 97, 64, 75, 113, 34, 120,
+			83, 0, 16, 70, 24, 243, 212, 32, 243, 4, 83, 117, 47, 107, 139, 55, 72, 0, 15, 70, 12, 240, 193, 36, 225, 64, 49, 139, 49, 6,
+			141, 50, 0, 9, 198, 12, 20, 195, 4, 65, 64, 17, 0, 17, 70, 44, 21, 193, 76, 18, 201, 49, 138, 13, 89, 6, 121, 49, 37, 0,
+			9, 198, 8, 85, 8, 21, 49, 1, 17, 10, 67, 88, 81, 193, 84, 132, 81, 13, 0, 9, 198, 52, 83, 79, 72, 144, 77, 17, 0, 12,
+			68, 52, 147, 132, 100, 65, 124, 50, 72, 37, 0, 10, 67, 4, 192, 78, 35, 55, 13, 50, 0, 10, 67, 13, 37, 90, 49, 34, 137, 88,
+			0, 12, 5, 112, 105, 195, 177, 97, 48, 132, 67, 119, 0, 10, 67, 56, 83, 206, 50, 132, 126, 50, 0, 0, 16, 70, 8, 83, 133, 5,
+			66, 0, 71, 113, 50, 132, 87, 0, 74, 10, 0, 13, 69, 65, 149, 8, 60, 224, 48, 140, 87, 13, 50, 0, 14, 69, 8, 243, 130, 60,
+			224, 71, 126, 50, 71, 126, 50, 0, 0, 17, 70, 17, 83, 135, 5, 33, 69, 72, 129, 68, 81, 119, 34, 6, 132, 0, 10, 199, 12, 243,
+			147, 81, 37, 67, 80, 36, 11, 199, 12, 243, 147, 81, 37, 67, 80, 65, 47, 9, 198, 4, 36, 197, 57, 65, 69, 67, 12, 2, 195, 159,
+			91, 4, 130, 48, 6, 122, 89, 0, 11, 2, 194, 167, 89, 122, 49, 91, 13, 50, 0, 0, 17, 66, 56, 240, 50, 6, 139, 4, 65, 136,
+			0, 81, 109, 111, 114, 101, 32, 23, 66, 56, 240, 50, 4, 139, 15, 55, 6, 126, 68, 81, 114, 0, 81, 108, 111, 110, 103, 101, 114, 32,
+			17, 66, 56, 240, 6, 50, 139, 6, 58, 128, 50, 0, 81, 111, 110, 101, 32, 11, 68, 64, 131, 143, 52, 48, 50, 126, 65, 0, 8, 197,
+			9, 32, 90, 36, 192, 17, 21, 73, 80, 130, 78, 29, 83, 65, 40, 145, 192, 87, 124, 68, 13, 65, 13, 75, 124, 81, 0, 11, 68, 12,
+			243, 77, 36, 49, 126, 65, 124, 0, 9, 198, 8, 243, 66, 5, 33, 0, 66, 8, 66, 56, 240, 50, 139, 0, 42, 15, 2, 194, 164, 49,
+			129, 34, 13, 50, 89, 124, 89, 140, 50, 0, 0, 8, 67, 12, 144, 79, 76, 138, 0, 8, 2, 194, 165, 57, 122, 50, 0, 0, 12, 69,
+			76, 130, 86, 21, 32, 91, 124, 84, 114, 0, 10, 67, 76, 86, 0, 89, 122, 49, 89, 0, 13, 69, 69, 82, 86, 21, 32, 49, 58, 124,
+			84, 114, 0, 10, 2, 194, 162, 89, 122, 50, 47, 89, 0, 0, 26, 68, 24, 148, 147, 80, 83, 6, 150, 89, 47, 10, 48, 55, 4, 141,
+			89, 0, 105, 81, 112, 108, 97, 99, 101, 32, 25, 68, 24, 148, 147, 80, 83, 6, 131, 89, 47, 10, 48, 55, 4, 141, 89, 0, 81, 112,
+			108, 97, 99, 101, 32, 10, 67, 52, 17, 201, 65, 141, 75, 140, 0, 15, 70, 8, 243, 138, 61, 84, 128, 71, 133, 50, 90, 6, 146, 0,
+			8, 2, 197, 139, 122, 68, 81, 0, 9, 2, 194, 163, 48, 138, 50, 72, 0, 0, 16, 70, 5, 68, 143, 64, 244, 192, 35, 47, 34, 13,
+			48, 126, 89, 0, 15, 70, 52, 83, 80, 32, 148, 192, 65, 122, 65, 83, 113, 89, 0, 8, 197, 85, 3, 9, 25, 64, 66, 9, 198, 52,
+			18, 78, 80, 18, 78, 66, 8, 197, 36, 228, 197, 13, 64, 65, 16, 70, 36, 225, 9, 12, 84, 192, 124, 50, 72, 113, 89, 132, 88, 0,
+			13, 69, 5, 81, 213, 77, 64, 133, 81, 13, 89, 47, 0, 16, 70, 5, 4, 143, 64, 244, 192, 35, 48, 34, 13, 48, 6, 139, 0, 0,
+			11, 67, 56, 245, 0, 50, 126, 47, 0, 42, 40, 15, 67, 56, 245, 0, 4, 50, 126, 47, 13, 0, 34, 81, 97, 32, 26, 67, 56, 245,
+			0, 4, 50, 126, 47, 107, 35, 84, 47, 116, 0, 35, 9, 82, 104, 97, 118, 101, 32, 116, 111, 32, 20, 67, 56, 245, 0, 50, 126, 47,
+			107, 35, 84, 0, 35, 49, 81, 104, 97, 118, 101, 32, 19, 67, 56, 245, 0, 50, 126, 47, 119, 84, 0, 35, 73, 81, 104, 97, 118, 101,
+			32, 13, 67, 56, 245, 0, 4, 50, 126, 47, 0, 40, 46, 9, 12, 68, 81, 81, 15, 72, 47, 57, 137, 72, 114, 0, 13, 70, 64, 128,
+			82, 4, 242, 0, 83, 143, 34, 139, 0, 9, 67, 56, 245, 0, 50, 139, 47, 0, 10, 68, 24, 246, 69, 72, 83, 142, 141, 0, 10, 67,
+			16, 80, 207, 72, 122, 49, 139, 0, 0, 14, 7, 116, 104, 101, 121, 39, 114, 101, 2, 86, 141, 114, 0, 12, 68, 40, 84, 213, 76, 75,
+			132, 88, 13, 89, 0, 15, 70, 64, 244, 148, 84, 112, 76, 48, 136, 76, 13, 81, 118, 0, 12, 68, 40, 84, 213, 76, 75, 132, 88, 13,
+			89, 0, 13, 2, 194, 174, 34, 122, 75, 124, 89, 47, 114, 72, 0, 0, 15, 8, 116, 104, 101, 114, 101, 39, 118, 101, 86, 143, 84, 0,
+			72, 0, 13, 66, 77, 80, 89, 137, 89, 13, 0, 81, 115, 101, 32, 9, 198, 65, 35, 195, 20, 81, 0, 46, 9, 198, 65, 35, 195, 20,
+			81, 0, 36, 16, 70, 65, 35, 195, 20, 81, 0, 48, 34, 139, 89, 132, 72, 0, 47, 8, 197, 12, 18, 15, 61, 64, 17, 12, 2, 194,
+			172, 50, 126, 47, 23, 89, 140, 50, 0, 5, 130, 195, 164, 43, 0, 22, 73, 12, 131, 204, 21, 53, 5, 72, 243, 0, 49, 13, 55, 122,
+			89, 47, 13, 34, 126, 55, 0, 13, 68, 8, 192, 83, 136, 71, 55, 121, 88, 6, 141, 0, 0, 18, 70, 52, 243, 148, 72, 80, 76, 65,
+			126, 50, 47, 34, 124, 6, 133, 55, 0, 10, 198, 12, 243, 80, 61, 83, 132, 66, 36, 0, 11, 68, 76, 20, 129, 32, 89, 143, 34, 13,
+			0, 17, 70, 65, 35, 212, 20, 120, 128, 112, 114, 111, 116, 101, 103, 101, 0, 29, 12, 68, 60, 244, 129, 32, 6, 137, 34, 6, 121, 0,
+			16, 71, 21, 52, 197, 57, 66, 65, 48, 113, 89, 122, 50, 91, 118, 0, 0, 0, 9, 198, 76, 16, 129, 81, 69, 83, 17, 12, 2, 194,
+			169, 49, 126, 48, 124, 34, 140, 47, 0, 0, 12, 68, 44, 147, 211, 44, 49, 132, 126, 89, 49, 0, 13, 2, 194, 182, 48, 35, 34, 13,
+			81, 34, 35, 83, 0, 0, 9, 198, 21, 53, 18, 4, 225, 197, 66, 5, 130, 197, 159, 43, 5, 130, 195, 175, 43, 0, 15, 66, 60, 224,
+			2, 126, 50, 86, 115, 0, 81, 116, 104, 101, 32, 9, 66, 60, 224, 4, 126, 50, 0, 10, 22, 73, 8, 20, 148, 32, 243, 15, 52, 85,
+			192, 71, 130, 87, 6, 126, 55, 13, 65, 57, 137, 0, 22, 73, 64, 131, 212, 60, 116, 129, 64, 129, 82, 83, 13, 47, 6, 126, 81, 34,
+			13, 83, 114, 0, 0, 9, 198, 4, 229, 9, 32, 84, 143, 65, 6, 195, 4, 32, 192, 13, 10, 2, 194, 181, 65, 140, 49, 34, 139, 0,
+			0, 10, 67, 12, 241, 68, 49, 139, 122, 72, 0, 20, 72, 12, 19, 148, 36, 193, 86, 21, 32, 49, 35, 50, 47, 125, 55, 132, 84, 114,
+			0, 19, 72, 9, 81, 7, 21, 34, 71, 5, 32, 71, 129, 75, 13, 34, 124, 81, 130, 0, 8, 2, 194, 178, 47, 137, 0, 51, 0, 11,
+			67, 56, 22, 137, 50, 121, 47, 89, 124, 0, 18, 71, 12, 129, 86, 72, 243, 5, 80, 91, 122, 84, 34, 13, 55, 6, 141, 0, 9, 2,
+			194, 179, 87, 34, 132, 0, 51, 0, 18, 70, 28, 85, 20, 36, 225, 192, 4, 81, 122, 47, 124, 68, 0, 10, 35, 46, 11, 68, 40, 84,
+			211, 20, 75, 122, 89, 37, 0, 10, 68, 72, 245, 83, 20, 34, 138, 88, 0, 14, 70, 72, 80, 68, 36, 225, 192, 34, 132, 72, 124, 68,
+			0, 14, 70, 64, 19, 12, 36, 225, 192, 48, 35, 55, 124, 68, 0, 12, 2, 194, 176, 72, 124, 81, 34, 6, 132, 88, 0, 0, 9, 67,
+			4, 176, 64, 35, 49, 119, 0, 16, 2, 194, 177, 48, 55, 129, 89, 135, 65, 6, 140, 50, 13, 89, 0, 0, 14, 70, 52, 21, 82, 36,
+			49, 64, 65, 126, 34, 124, 89, 0, 14, 70, 77, 81, 134, 36, 49, 64, 89, 13, 83, 140, 89, 0, 18, 70, 65, 35, 196, 84, 49, 64,
+			48, 34, 126, 72, 57, 137, 89, 0, 37, 46, 15, 70, 65, 33, 70, 4, 49, 64, 48, 34, 122, 83, 13, 89, 0, 15, 70, 52, 21, 9,
+			56, 81, 64, 65, 35, 47, 13, 50, 141, 0, 17, 70, 44, 20, 129, 60, 177, 64, 49, 35, 34, 124, 6, 139, 49, 37, 0, 9, 198, 36,
+			65, 86, 36, 49, 64, 20, 15, 70, 32, 244, 212, 4, 113, 64, 107, 126, 89, 47, 113, 75, 0, 9, 198, 24, 147, 129, 56, 49, 64, 36,
+			16, 70, 24, 147, 129, 56, 49, 64, 83, 140, 50, 35, 50, 89, 0, 46, 15, 70, 16, 84, 129, 56, 113, 64, 72, 113, 34, 141, 50, 75,
+			0, 10, 67, 4, 33, 68, 119, 71, 122, 72, 0, 13, 2, 194, 190, 87, 34, 132, 49, 58, 135, 47, 114, 0, 0, 15, 70, 28, 149, 133,
+			5, 112, 89, 81, 124, 84, 119, 58, 141, 0, 10, 67, 4, 64, 77, 35, 72, 13, 65, 0, 6, 195, 85, 35, 0, 13, 13, 2, 195, 183,
+			72, 113, 84, 6, 140, 72, 71, 140, 0, 0, 9, 67, 76, 80, 78, 91, 133, 50, 0, 17, 70, 8, 83, 138, 4, 210, 78, 71, 122, 50,
+			75, 13, 65, 125, 50, 0, 11, 67, 60, 208, 78, 139, 65, 6, 35, 50, 0, 21, 72, 60, 211, 137, 76, 50, 69, 57, 64, 126, 65, 50,
+			6, 124, 91, 13, 50, 47, 0, 103, 16, 70, 16, 84, 195, 4, 229, 0, 72, 122, 89, 49, 35, 50, 47, 0, 9, 198, 4, 229, 9, 48,
+			241, 192, 65, 11, 2, 194, 188, 119, 49, 58, 135, 47, 114, 0, 0, 19, 4, 104, 101, 39, 115, 107, 132, 88, 107, 35, 72, 0, 78, 81,
+			104, 97, 100, 32, 12, 4, 104, 101, 39, 115, 107, 132, 88, 0, 72, 35, 8, 67, 72, 17, 64, 34, 141, 0, 8, 67, 20, 177, 64, 132,
+			49, 0, 9, 2, 194, 189, 119, 107, 121, 83, 0, 0, 9, 198, 25, 32, 71, 36, 193, 64, 16, 15, 70, 76, 243, 69, 60, 225, 64, 89,
+			129, 65, 58, 128, 50, 0, 20, 5, 115, 104, 101, 39, 115, 91, 132, 88, 107, 35, 72, 0, 78, 81, 104, 97, 100, 32, 13, 5, 115, 104,
+			101, 39, 115, 91, 132, 88, 0, 72, 35, 16, 67, 20, 16, 200, 132, 76, 15, 13, 84, 0, 8, 81, 111, 102, 32, 14, 70, 12, 19, 73,
+			48, 193, 64, 49, 119, 65, 132, 55, 0, 16, 70, 77, 3, 203, 4, 225, 64, 89, 48, 139, 49, 6, 35, 50, 0, 15, 70, 100, 245, 84,
+			84, 33, 64, 57, 137, 108, 137, 71, 0, 103, 15, 70, 92, 19, 142, 4, 33, 64, 58, 126, 50, 119, 71, 132, 0, 9, 198, 88, 16, 195,
+			36, 225, 64, 66, 9, 67, 48, 240, 200, 55, 126, 101, 0, 17, 70, 48, 20, 193, 28, 225, 64, 108, 97, 115, 97, 103, 110, 97, 0, 29,
+			20, 73, 37, 36, 133, 64, 20, 129, 8, 193, 64, 113, 34, 122, 48, 114, 13, 71, 118, 0, 15, 70, 36, 208, 71, 36, 225, 64, 113, 65,
+			35, 75, 113, 50, 0, 15, 70, 32, 84, 143, 36, 225, 64, 107, 122, 34, 139, 124, 50, 0, 15, 70, 29, 33, 78, 4, 65, 64, 81, 34,
+			13, 50, 141, 72, 0, 16, 70, 16, 80, 129, 12, 193, 64, 72, 141, 71, 6, 121, 49, 118, 0, 16, 70, 12, 243, 82, 4, 65, 64, 49,
+			126, 65, 34, 35, 72, 0, 103, 15, 70, 12, 19, 9, 12, 129, 64, 49, 119, 55, 132, 76, 37, 0, 9, 67, 12, 16, 200, 49, 35, 91,
+			0, 9, 198, 8, 148, 12, 4, 225, 64, 65, 16, 70, 5, 69, 1, 12, 129, 64, 35, 108, 35, 6, 91, 141, 0, 103, 16, 70, 5, 69,
+			1, 12, 129, 64, 35, 47, 6, 35, 91, 141, 0, 46, 14, 70, 4, 50, 9, 48, 193, 64, 119, 49, 124, 55, 132, 0, 0, 10, 67, 76,
+			81, 193, 89, 141, 81, 13, 0, 10, 67, 76, 17, 193, 89, 121, 81, 13, 0, 18, 70, 32, 16, 201, 20, 225, 1, 107, 121, 89, 124, 6,
+			122, 50, 72, 13, 0, 6, 195, 36, 81, 69, 13, 0, 16, 70, 8, 84, 142, 5, 33, 0, 71, 131, 50, 6, 130, 72, 0, 103, 14, 70,
+			8, 84, 142, 5, 33, 0, 71, 131, 50, 13, 72, 0, 15, 70, 100, 241, 200, 85, 37, 0, 57, 139, 81, 114, 47, 0, 103, 14, 70, 100,
+			241, 200, 85, 37, 0, 57, 126, 81, 114, 47, 0, 11, 68, 72, 83, 1, 100, 34, 132, 55, 141, 0, 7, 2, 195, 176, 122, 86, 0, 0,
+			5, 130, 195, 177, 43, 0, 8, 2, 195, 190, 87, 135, 50, 0, 0, 9, 67, 80, 129, 69, 4, 86, 132, 0, 6, 195, 36, 177, 65, 66,
+			22, 67, 80, 83, 0, 47, 4, 122, 55, 15, 119, 84, 6, 132, 84, 0, 81, 97, 118, 105, 118, 32, 16, 70, 36, 229, 5, 72, 225, 69,
+			124, 50, 47, 6, 131, 50, 132, 0, 6, 195, 85, 49, 1, 13, 0, 0, 14, 70, 80, 132, 143, 84, 114, 0, 87, 34, 137, 0, 72, 10,
+			15, 70, 56, 147, 133, 88, 82, 0, 50, 124, 50, 124, 84, 13, 0, 0, 0, 18, 4, 105, 39, 118, 101, 140, 84, 107, 35, 72, 0, 78,
+			81, 104, 97, 100, 32, 11, 4, 105, 39, 118, 101, 140, 84, 0, 72, 35, 10, 67, 48, 144, 77, 55, 132, 13, 65, 0, 16, 70, 64, 20,
+			211, 21, 32, 153, 48, 35, 89, 114, 71, 6, 140, 0, 12, 68, 8, 145, 207, 80, 71, 124, 81, 13, 47, 0, 7, 2, 202, 131, 122, 91,
+			0, 5, 130, 195, 187, 43, 0, 13, 69, 8, 241, 193, 73, 64, 71, 139, 81, 130, 47, 0, 14, 69, 48, 85, 129, 57, 64, 55, 13, 84,
+			35, 50, 47, 0, 9, 198, 77, 84, 208, 20, 53, 0, 36, 17, 70, 77, 84, 208, 20, 53, 0, 89, 129, 89, 48, 122, 49, 47, 0, 47,
+			8, 197, 61, 85, 6, 37, 64, 65, 13, 69, 60, 209, 76, 21, 64, 126, 65, 55, 13, 47, 0, 8, 197, 60, 34, 133, 13, 64, 36, 9,
+			197, 60, 34, 133, 13, 64, 65, 47, 11, 68, 52, 144, 79, 84, 65, 132, 6, 138, 0, 15, 70, 24, 192, 67, 12, 145, 0, 83, 55, 35,
+			89, 124, 72, 0, 14, 69, 16, 80, 197, 57, 64, 72, 132, 89, 13, 50, 47, 0, 14, 69, 8, 19, 12, 21, 64, 71, 35, 55, 6, 141,
+			0, 103, 12, 69, 8, 19, 12, 21, 64, 71, 35, 55, 141, 0, 0, 0, 22, 7, 116, 104, 101, 121, 39, 118, 101, 86, 141, 84, 107, 35,
+			72, 0, 78, 81, 104, 97, 100, 32, 15, 7, 116, 104, 101, 121, 39, 118, 101, 86, 141, 84, 0, 72, 35, 14, 70, 52, 146, 200, 4, 147,
+			0, 65, 124, 49, 140, 55, 0, 12, 69, 84, 145, 200, 85, 32, 58, 132, 81, 146, 0, 17, 70, 85, 65, 78, 76, 147, 0, 57, 137, 47,
+			6, 122, 50, 89, 118, 0, 12, 69, 44, 244, 200, 21, 32, 49, 139, 91, 114, 0, 12, 69, 12, 243, 208, 21, 32, 49, 137, 48, 114, 0,
+			15, 70, 12, 20, 9, 80, 243, 0, 49, 35, 48, 124, 47, 118, 0, 6, 195, 85, 3, 144, 13, 0, 9, 198, 52, 19, 132, 4, 192, 89,
+			67, 9, 198, 92, 148, 133, 80, 20, 0, 18, 0, 6, 194, 85, 48, 13, 42, 9, 66, 85, 48, 4, 129, 89, 0, 46, 14, 70, 52, 21,
+			20, 32, 85, 192, 65, 35, 87, 57, 137, 0, 14, 69, 8, 82, 82, 85, 64, 71, 141, 34, 6, 137, 47, 0, 15, 70, 28, 192, 83, 28,
+			245, 192, 81, 55, 120, 88, 81, 139, 0, 8, 197, 85, 4, 143, 61, 64, 66, 14, 69, 81, 37, 69, 77, 64, 47, 34, 137, 13, 89, 47,
+			0, 13, 70, 76, 128, 76, 48, 245, 192, 91, 35, 55, 139, 0, 14, 69, 76, 80, 193, 57, 64, 89, 132, 49, 13, 50, 47, 0, 15, 69,
+			76, 21, 129, 57, 64, 89, 119, 84, 121, 50, 47, 0, 103, 16, 69, 72, 84, 15, 77, 64, 34, 4, 132, 48, 6, 139, 89, 47, 0, 15,
+			70, 48, 80, 82, 56, 81, 0, 55, 131, 50, 125, 72, 0, 37, 10, 67, 44, 240, 78, 49, 139, 121, 50, 0, 9, 198, 32, 18, 82, 56,
+			85, 0, 15, 14, 69, 21, 132, 5, 73, 64, 122, 49, 89, 48, 131, 47, 0, 14, 69, 16, 84, 197, 73, 64, 72, 113, 88, 131, 47, 0,
+			36, 14, 69, 16, 84, 197, 73, 64, 72, 122, 89, 114, 47, 0, 46, 13, 69, 16, 84, 197, 73, 64, 72, 113, 88, 131, 47, 0, 14, 69,
+			12, 245, 133, 73, 64, 49, 139, 84, 6, 131, 47, 0, 9, 198, 12, 243, 132, 84, 53, 0, 36, 9, 198, 12, 243, 132, 84, 53, 0, 65,
+			14, 69, 12, 243, 80, 5, 64, 49, 13, 65, 48, 35, 47, 0, 13, 69, 4, 211, 213, 57, 64, 119, 65, 138, 50, 47, 0, 20, 71, 4,
+			35, 210, 36, 114, 78, 20, 35, 71, 13, 34, 6, 124, 75, 13, 50, 37, 0, 12, 2, 201, 148, 139, 48, 13, 50, 6, 133, 10, 0, 0,
+			10, 67, 4, 193, 67, 35, 55, 124, 49, 0, 0, 0, 8, 67, 80, 131, 213, 86, 138, 0, 0, 17, 71, 52, 17, 5, 48, 82, 78, 20,
+			65, 35, 72, 13, 55, 113, 50, 0, 19, 71, 52, 21, 83, 60, 193, 85, 52, 65, 133, 89, 13, 6, 55, 132, 13, 65, 0, 8, 2, 196,
+			184, 49, 34, 121, 0, 0, 17, 70, 16, 85, 18, 37, 69, 83, 72, 113, 47, 34, 140, 47, 13, 89, 0, 9, 67, 32, 211, 64, 107, 13,
+			65, 0, 0, 13, 69, 12, 128, 86, 21, 160, 76, 121, 84, 122, 88, 0, 9, 67, 56, 240, 72, 50, 139, 129, 0, 10, 2, 204, 134, 71,
+			34, 122, 84, 10, 0, 0, 16, 70, 76, 16, 143, 80, 17, 197, 89, 35, 71, 13, 47, 121, 90, 0, 17, 70, 65, 33, 83, 80, 145, 197,
+			48, 34, 122, 89, 47, 6, 132, 90, 0, 16, 70, 21, 21, 73, 64, 17, 197, 122, 49, 58, 124, 48, 124, 75, 0, 16, 70, 8, 85, 133,
+			72, 17, 197, 71, 122, 84, 13, 34, 113, 75, 0, 0, 12, 2, 204, 132, 65, 35, 49, 34, 126, 50, 10, 0, 20, 2, 203, 140, 89, 6,
+			122, 49, 13, 50, 72, 34, 124, 89, 47, 34, 4, 122, 89, 0, 15, 2, 202, 148, 81, 55, 6, 126, 19, 118, 89, 47, 126, 48, 0, 0,
+			13, 68, 44, 80, 129, 8, 49, 13, 71, 121, 71, 0, 103, 12, 68, 44, 80, 129, 8, 49, 13, 71, 35, 71, 0, 0, 9, 67, 72, 82,
+			68, 34, 132, 72, 0, 23, 74, 52, 148, 195, 20, 195, 1, 56, 83, 213, 76, 65, 124, 89, 13, 55, 6, 141, 50, 144, 89, 0, 16, 2,
+			204, 130, 89, 131, 49, 129, 65, 83, 55, 122, 49, 89, 10, 0, 7, 2, 202, 146, 122, 90, 0, 0, 11, 2, 204, 131, 47, 124, 55, 72,
+			13, 10, 0, 13, 2, 201, 155, 139, 48, 13, 50, 6, 122, 12, 10, 0, 0, 7, 196, 4, 114, 76, 20, 16, 11, 68, 84, 224, 204, 20,
+			129, 68, 49, 118, 0, 10, 68, 76, 145, 8, 20, 91, 132, 13, 0, 11, 68, 48, 21, 20, 20, 55, 121, 108, 141, 0, 12, 68, 37, 32,
+			84, 20, 140, 34, 6, 141, 47, 0, 10, 198, 36, 212, 12, 4, 229, 0, 66, 36, 10, 2, 204, 128, 81, 34, 121, 84, 10, 0, 10, 2,
+			203, 136, 89, 47, 34, 122, 89, 0, 0, 13, 67, 60, 229, 15, 4, 126, 50, 108, 117, 0, 103, 10, 12, 67, 60, 229, 15, 4, 126, 50,
+			47, 117, 0, 10, 13, 69, 48, 85, 137, 56, 80, 55, 13, 84, 132, 50, 0, 8, 197, 4, 208, 78, 16, 16, 17, 15, 69, 88, 144, 71,
+			72, 16, 84, 140, 6, 35, 81, 34, 13, 0, 14, 69, 64, 20, 1, 100, 16, 48, 119, 48, 140, 38, 13, 0, 12, 69, 61, 4, 15, 76,
+			80, 13, 48, 139, 88, 0, 12, 69, 49, 144, 200, 20, 80, 55, 132, 76, 132, 0, 8, 197, 33, 83, 65, 56, 80, 66, 8, 67, 21, 36,
+			128, 143, 0, 103, 7, 67, 21, 36, 128, 131, 0, 13, 69, 16, 245, 1, 28, 80, 72, 139, 47, 113, 75, 0, 13, 69, 16, 148, 15, 48,
+			80, 72, 140, 48, 139, 55, 0, 12, 68, 16, 80, 193, 24, 72, 132, 49, 35, 83, 0, 8, 197, 5, 32, 193, 56, 80, 66, 11, 2, 204,
+			129, 119, 49, 57, 137, 47, 10, 0, 8, 2, 201, 153, 91, 58, 121, 0, 0, 12, 68, 48, 147, 1, 12, 55, 140, 55, 13, 49, 0, 17,
+			70, 16, 80, 197, 16, 83, 148, 72, 125, 89, 132, 72, 13, 50, 47, 0, 0, 15, 69, 16, 144, 76, 60, 112, 72, 140, 13, 55, 133, 81,
+			0, 103, 9, 67, 5, 81, 9, 138, 72, 37, 0, 11, 67, 4, 129, 77, 13, 107, 6, 13, 65, 0, 0, 13, 68, 4, 53, 82, 4, 35,
+			49, 57, 117, 34, 13, 0, 12, 68, 81, 34, 78, 4, 47, 34, 132, 50, 13, 0, 13, 68, 17, 98, 78, 4, 72, 13, 84, 132, 50, 13,
+			0, 12, 68, 33, 86, 154, 4, 107, 13, 88, 6, 121, 0, 14, 67, 4, 209, 78, 4, 141, 65, 6, 122, 50, 0, 103, 47, 11, 67, 4,
+			209, 78, 119, 65, 122, 50, 0, 103, 13, 67, 4, 209, 78, 4, 121, 65, 6, 122, 50, 0, 47, 12, 2, 201, 164, 34, 35, 65, 89, 107,
+			135, 50, 0, 0, 8, 197, 25, 85, 9, 48, 80, 16, 15, 69, 8, 80, 193, 52, 80, 71, 124, 49, 141, 65, 0, 74, 10, 12, 69, 80,
+			129, 78, 12, 80, 86, 122, 50, 89, 0, 14, 69, 72, 19, 79, 56, 16, 34, 119, 65, 139, 50, 13, 0, 8, 197, 44, 20, 133, 56, 80,
+			17, 15, 69, 56, 85, 129, 16, 16, 50, 113, 84, 35, 72, 13, 0, 103, 14, 69, 56, 85, 129, 16, 16, 50, 113, 84, 121, 72, 13, 0,
+			14, 69, 32, 20, 129, 72, 80, 107, 119, 34, 121, 34, 37, 0, 15, 69, 28, 243, 69, 72, 16, 81, 139, 65, 6, 143, 34, 13, 0, 14,
+			69, 85, 48, 66, 48, 80, 57, 137, 88, 13, 71, 118, 0, 13, 69, 80, 147, 66, 72, 80, 47, 35, 65, 71, 114, 0, 13, 69, 76, 84,
+			133, 56, 80, 89, 13, 34, 132, 50, 0, 8, 197, 61, 35, 129, 80, 80, 66, 13, 69, 25, 84, 195, 36, 16, 83, 57, 137, 91, 13, 0,
+			14, 69, 24, 18, 137, 80, 16, 83, 119, 107, 132, 47, 13, 0, 13, 69, 12, 20, 129, 24, 80, 49, 119, 34, 35, 83, 0, 13, 69, 12,
+			19, 137, 56, 80, 49, 141, 50, 140, 50, 0, 14, 69, 8, 245, 212, 36, 80, 71, 4, 139, 47, 6, 140, 0, 13, 69, 8, 243, 199, 36,
+			80, 71, 117, 81, 37, 0, 103, 12, 69, 8, 243, 199, 36, 80, 71, 137, 81, 37, 0, 0, 8, 197, 12, 244, 148, 21, 160, 66, 9, 67,
+			76, 146, 200, 89, 132, 49, 0, 12, 201, 20, 193, 67, 81, 35, 195, 85, 65, 64, 66, 23, 73, 5, 4, 18, 61, 130, 77, 5, 65, 64,
+			119, 48, 34, 126, 49, 89, 124, 65, 141, 47, 0, 36, 23, 73, 5, 4, 18, 61, 130, 77, 5, 65, 64, 119, 48, 34, 126, 49, 89, 124,
+			65, 13, 47, 0, 46, 10, 2, 204, 138, 34, 124, 68, 81, 10, 0, 0, 23, 74, 12, 243, 135, 72, 84, 211, 36, 243, 129, 48, 49, 13,
+			50, 81, 34, 122, 91, 13, 50, 118, 0, 0, 15, 6, 97, 114, 101, 110, 39, 116, 4, 130, 50, 47, 0, 35, 10, 15, 70, 77, 65, 87,
+			5, 37, 0, 89, 47, 137, 114, 47, 0, 103, 15, 70, 77, 65, 87, 5, 37, 0, 89, 47, 57, 137, 114, 47, 0, 10, 67, 48, 83, 206,
+			55, 132, 126, 50, 0, 14, 70, 72, 20, 16, 61, 37, 0, 34, 35, 48, 6, 136, 0, 15, 70, 52, 148, 195, 32, 145, 70, 65, 124, 89,
+			76, 125, 83, 0, 10, 199, 24, 192, 71, 20, 195, 21, 52, 17, 10, 67, 20, 65, 78, 132, 72, 13, 50, 0, 10, 68, 4, 195, 1, 100,
+			119, 55, 141, 0, 12, 2, 204, 136, 72, 148, 34, 132, 89, 113, 89, 0, 13, 2, 203, 144, 55, 122, 68, 87, 13, 50, 72, 10, 0, 0,
+			9, 67, 93, 84, 211, 58, 117, 89, 0, 12, 68, 64, 80, 193, 56, 48, 125, 49, 121, 50, 0, 12, 68, 64, 80, 193, 56, 48, 132, 49,
+			13, 50, 0, 13, 69, 28, 241, 4, 4, 208, 81, 126, 72, 35, 65, 0, 0, 0, 11, 67, 52, 18, 197, 65, 4, 141, 49, 0, 10, 12,
+			67, 52, 18, 197, 65, 4, 141, 49, 0, 10, 46, 13, 69, 8, 20, 129, 12, 176, 71, 119, 34, 121, 49, 0, 18, 70, 60, 179, 1, 32,
+			243, 65, 139, 49, 55, 119, 107, 6, 139, 65, 13, 0, 21, 71, 21, 133, 18, 20, 210, 83, 80, 122, 49, 89, 47, 34, 6, 132, 65, 124,
+			89, 47, 0, 8, 2, 202, 167, 76, 122, 91, 0, 0, 22, 73, 92, 129, 69, 48, 32, 82, 72, 245, 192, 58, 6, 132, 55, 10, 71, 4,
+			35, 34, 139, 0, 7, 66, 76, 144, 89, 132, 0, 20, 71, 65, 33, 83, 20, 229, 12, 100, 48, 34, 122, 88, 13, 50, 47, 55, 124, 0,
+			32, 11, 68, 56, 245, 193, 100, 50, 139, 58, 141, 0, 11, 67, 56, 18, 70, 50, 140, 6, 132, 83, 0, 6, 195, 72, 226, 66, 13, 8,
+			2, 202, 164, 75, 122, 90, 0, 0, 17, 7, 104, 97, 118, 101, 110, 39, 116, 107, 35, 84, 14, 50, 47, 0, 35, 18, 70, 8, 20, 130,
+			4, 67, 211, 71, 130, 6, 71, 141, 72, 139, 89, 0, 103, 17, 70, 8, 20, 130, 4, 67, 211, 71, 130, 6, 71, 141, 72, 126, 89, 0,
+			10, 67, 52, 83, 79, 65, 122, 65, 139, 0, 11, 68, 20, 208, 133, 72, 122, 65, 71, 114, 0, 11, 68, 4, 35, 5, 72, 141, 71, 55,
+			114, 0, 0, 14, 69, 76, 192, 86, 21, 32, 89, 55, 35, 84, 114, 0, 36, 15, 70, 33, 149, 78, 16, 18, 64, 107, 129, 50, 72, 141,
+			0, 103, 17, 70, 21, 48, 193, 48, 195, 208, 122, 89, 49, 6, 121, 55, 13, 48, 0, 14, 69, 20, 194, 88, 37, 32, 113, 55, 124, 49,
+			89, 114, 0, 0, 9, 198, 61, 97, 82, 80, 147, 69, 65, 0, 13, 69, 24, 147, 12, 21, 64, 83, 113, 55, 141, 0, 103, 10, 198, 21,
+			133, 18, 4, 53, 0, 66, 36, 10, 198, 21, 133, 18, 4, 53, 0, 65, 46, 10, 198, 21, 133, 18, 4, 53, 0, 65, 47, 14, 69, 12,
+			243, 66, 5, 64, 49, 126, 65, 71, 35, 47, 0, 13, 69, 4, 114, 1, 77, 64, 119, 81, 120, 89, 47, 0, 0, 9, 198, 61, 85, 2,
+			72, 80, 75, 65, 21, 73, 36, 225, 143, 52, 84, 131, 36, 19, 0, 124, 50, 83, 139, 65, 6, 131, 91, 118, 0, 10, 67, 16, 81, 207,
+			72, 141, 81, 139, 0, 0, 12, 69, 72, 85, 84, 21, 32, 34, 142, 47, 114, 0, 10, 198, 64, 192, 84, 20, 21, 64, 103, 66, 9, 197,
+			36, 225, 15, 61, 32, 65, 46, 15, 70, 24, 195, 213, 72, 148, 200, 83, 55, 131, 113, 91, 0, 103, 15, 70, 24, 195, 213, 72, 148, 200,
+			83, 55, 129, 34, 113, 91, 0, 13, 70, 12, 128, 84, 20, 21, 64, 91, 35, 47, 139, 0, 18, 2, 204, 158, 119, 48, 34, 6, 126, 49,
+			89, 124, 65, 13, 50, 47, 10, 0, 0, 15, 70, 52, 16, 203, 20, 227, 129, 65, 13, 49, 122, 50, 13, 0, 11, 68, 32, 82, 83, 80,
+			107, 140, 89, 47, 0, 0, 13, 67, 8, 81, 78, 4, 71, 124, 50, 0, 103, 35, 46, 12, 67, 8, 81, 78, 4, 71, 132, 50, 0, 35,
+			46, 14, 69, 52, 246, 129, 73, 64, 65, 139, 47, 89, 130, 47, 0, 25, 73, 80, 245, 1, 48, 149, 1, 72, 144, 78, 47, 139, 47, 4,
+			35, 55, 113, 47, 6, 143, 34, 144, 50, 0, 8, 197, 80, 244, 8, 5, 64, 18, 17, 70, 36, 229, 5, 72, 210, 78, 124, 50, 47, 6,
+			131, 65, 124, 50, 0, 19, 71, 21, 84, 8, 20, 210, 83, 52, 57, 137, 83, 13, 65, 124, 88, 13, 65, 0, 14, 69, 17, 34, 69, 77,
+			64, 72, 34, 140, 13, 89, 47, 0, 8, 197, 12, 21, 143, 73, 64, 17, 14, 4, 95, 103, 117, 114, 81, 6, 146, 65, 117, 49, 37, 0,
+			0, 10, 67, 77, 147, 131, 89, 124, 68, 49, 0, 11, 4, 95, 56, 48, 111, 6, 141, 47, 144, 0, 0, 19, 70, 77, 80, 141, 20, 229,
+			64, 89, 6, 129, 71, 65, 4, 122, 50, 57, 137, 0, 12, 201, 36, 228, 212, 36, 224, 212, 37, 97, 64, 66, 14, 70, 13, 84, 2, 60,
+			20, 132, 49, 129, 71, 13, 72, 0, 22, 73, 4, 197, 5, 72, 224, 84, 37, 97, 64, 133, 55, 47, 6, 131, 50, 13, 47, 124, 84, 0,
+			7, 2, 201, 178, 67, 122, 0, 0, 15, 69, 17, 99, 210, 4, 176, 72, 14, 84, 136, 90, 35, 49, 0, 14, 70, 12, 129, 89, 20, 227,
+			133, 91, 140, 6, 35, 50, 0, 0, 17, 70, 92, 129, 78, 21, 97, 82, 58, 122, 50, 122, 84, 114, 0, 74, 8, 9, 198, 81, 32, 78,
+			76, 97, 82, 36, 10, 198, 81, 32, 78, 76, 97, 82, 65, 47, 16, 70, 60, 193, 65, 56, 65, 82, 139, 55, 124, 35, 50, 72, 114, 0,
+			16, 70, 48, 21, 133, 56, 65, 82, 55, 35, 84, 13, 50, 72, 114, 0, 9, 198, 33, 83, 135, 61, 97, 82, 66, 0, 9, 198, 12, 243,
+			21, 52, 37, 83, 17, 12, 68, 8, 83, 137, 56, 71, 122, 50, 124, 50, 0, 14, 69, 77, 66, 78, 29, 144, 89, 47, 124, 50, 75, 37,
+			0, 15, 70, 76, 192, 86, 37, 50, 0, 89, 55, 141, 84, 124, 91, 0, 8, 197, 76, 19, 1, 52, 144, 17, 7, 196, 64, 20, 133, 56,
+			17, 13, 68, 44, 244, 129, 56, 49, 135, 34, 6, 121, 50, 0, 14, 70, 44, 224, 86, 37, 50, 0, 50, 141, 84, 124, 91, 0, 12, 68,
+			12, 19, 143, 56, 49, 35, 50, 13, 50, 0, 0, 15, 70, 44, 20, 129, 12, 130, 64, 49, 119, 34, 130, 76, 37, 0, 16, 70, 12, 195,
+			211, 20, 198, 64, 49, 55, 139, 89, 55, 124, 0, 32, 16, 70, 4, 227, 205, 4, 198, 64, 119, 50, 126, 65, 13, 55, 37, 0, 0, 11,
+			200, 81, 33, 77, 20, 225, 15, 85, 48, 17, 11, 200, 72, 145, 9, 13, 83, 15, 85, 48, 66, 18, 72, 72, 83, 132, 21, 165, 143, 85,
+			48, 34, 126, 50, 72, 113, 84, 137, 0, 11, 200, 48, 20, 195, 37, 98, 79, 85, 48, 17, 20, 72, 4, 36, 212, 20, 210, 79, 85, 48,
+			119, 71, 89, 47, 6, 132, 65, 144, 89, 0, 11, 2, 201, 190, 10, 6, 130, 47, 35, 48, 0, 0, 14, 70, 56, 244, 134, 60, 194, 192,
+			50, 135, 83, 13, 49, 0, 19, 71, 36, 212, 18, 20, 50, 83, 20, 124, 65, 48, 34, 124, 89, 6, 140, 89, 0, 17, 71, 4, 69, 133,
+			73, 66, 83, 20, 35, 72, 84, 114, 47, 140, 88, 0, 10, 2, 204, 165, 34, 124, 68, 81, 10, 0, 0, 22, 72, 84, 226, 86, 21, 36,
+			201, 81, 144, 57, 137, 50, 124, 84, 6, 131, 89, 113, 47, 37, 0, 9, 67, 4, 160, 82, 119, 75, 130, 0, 5, 194, 80, 128, 46, 6,
+			66, 80, 128, 87, 0, 0, 14, 69, 69, 81, 66, 20, 48, 49, 58, 113, 71, 122, 49, 0, 8, 67, 5, 32, 192, 130, 49, 0, 6, 195,
+			37, 32, 192, 13, 0, 13, 68, 17, 80, 78, 4, 72, 58, 6, 121, 50, 13, 0, 12, 68, 4, 192, 78, 4, 119, 55, 35, 50, 13, 0,
+			16, 70, 76, 130, 73, 80, 18, 197, 91, 132, 47, 6, 121, 49, 155, 0, 11, 68, 76, 21, 84, 20, 89, 133, 47, 141, 0, 11, 68, 8,
+			20, 212, 20, 71, 141, 89, 47, 0, 12, 2, 202, 178, 65, 4, 126, 72, 75, 6, 141, 0, 0, 15, 69, 8, 80, 207, 52, 80, 71, 124,
+			49, 129, 65, 0, 74, 10, 14, 69, 8, 81, 143, 72, 80, 71, 124, 83, 136, 0, 74, 10, 13, 69, 77, 65, 86, 36, 80, 89, 47, 132,
+			84, 37, 0, 13, 69, 48, 83, 143, 72, 80, 55, 122, 50, 6, 136, 0, 13, 69, 48, 80, 78, 56, 80, 55, 132, 6, 35, 50, 0, 13,
+			69, 40, 19, 137, 56, 80, 75, 13, 50, 132, 50, 0, 13, 69, 24, 18, 78, 56, 80, 83, 35, 50, 38, 13, 0, 11, 69, 4, 242, 70,
+			24, 80, 132, 83, 13, 0, 13, 69, 4, 112, 84, 32, 16, 35, 81, 119, 87, 13, 0, 15, 69, 52, 242, 129, 88, 80, 65, 139, 107, 6,
+			121, 84, 37, 0, 13, 69, 37, 66, 1, 12, 16, 124, 87, 13, 49, 13, 0, 13, 69, 88, 19, 9, 76, 80, 84, 119, 55, 132, 89, 0,
+			13, 69, 81, 34, 65, 28, 80, 47, 34, 132, 121, 90, 0, 14, 69, 76, 145, 67, 48, 80, 89, 57, 122, 49, 55, 14, 0, 14, 69, 76,
+			85, 133, 72, 80, 89, 113, 84, 6, 145, 0, 46, 14, 69, 72, 85, 9, 56, 16, 34, 122, 47, 124, 50, 13, 0, 14, 69, 64, 21, 9,
+			56, 16, 48, 35, 47, 124, 50, 13, 0, 13, 69, 52, 19, 149, 72, 80, 65, 13, 50, 57, 146, 0, 13, 69, 8, 85, 1, 44, 80, 71,
+			113, 47, 141, 49, 0, 0, 13, 70, 73, 84, 211, 20, 195, 0, 34, 129, 89, 118, 0, 15, 70, 32, 21, 193, 36, 144, 78, 107, 13, 58,
+			6, 147, 50, 0, 18, 70, 16, 17, 197, 77, 64, 78, 72, 121, 81, 124, 89, 47, 6, 121, 50, 0, 15, 70, 76, 246, 65, 8, 80, 78,
+			89, 142, 13, 71, 132, 50, 0, 6, 195, 85, 52, 210, 13, 15, 2, 202, 176, 35, 89, 48, 113, 34, 141, 47, 113, 72, 10, 0, 0, 17,
+			70, 28, 241, 26, 36, 195, 1, 81, 126, 72, 88, 6, 124, 55, 13, 0, 13, 69, 76, 49, 78, 36, 48, 89, 132, 50, 124, 49, 0, 6,
+			195, 85, 48, 64, 13, 17, 2, 204, 175, 50, 4, 126, 50, 89, 113, 55, 6, 35, 71, 113, 49, 0, 8, 2, 209, 135, 76, 122, 12, 0,
+			0, 12, 68, 16, 19, 148, 20, 72, 121, 50, 108, 141, 0, 13, 68, 20, 194, 90, 4, 124, 55, 6, 140, 88, 13, 0, 12, 68, 52, 243,
+			148, 20, 65, 126, 50, 108, 37, 0, 11, 68, 61, 82, 74, 4, 58, 132, 75, 13, 0, 10, 67, 36, 34, 68, 124, 71, 125, 72, 0, 9,
+			2, 209, 134, 47, 89, 122, 12, 0, 0, 27, 68, 12, 245, 76, 16, 49, 117, 72, 107, 35, 84, 47, 116, 0, 74, 32, 10, 82, 104, 97,
+			118, 101, 32, 116, 111, 32, 21, 68, 12, 245, 76, 16, 49, 117, 72, 107, 35, 84, 0, 35, 49, 81, 104, 97, 118, 101, 32, 20, 68, 12,
+			245, 76, 16, 4, 49, 117, 72, 119, 84, 0, 35, 81, 104, 97, 118, 101, 32, 14, 68, 12, 245, 76, 16, 2, 49, 117, 72, 0, 32, 10,
+			46, 13, 69, 81, 34, 67, 36, 16, 47, 34, 124, 91, 13, 0, 14, 69, 76, 16, 137, 56, 80, 89, 119, 71, 6, 132, 50, 0, 12, 69,
+			72, 81, 199, 36, 80, 34, 122, 75, 37, 0, 13, 69, 61, 69, 1, 92, 16, 126, 47, 119, 58, 13, 0, 8, 197, 52, 19, 137, 48, 16,
+			17, 14, 69, 12, 19, 129, 16, 16, 49, 35, 50, 13, 72, 13, 0, 8, 197, 4, 226, 193, 72, 16, 65, 8, 197, 104, 21, 129, 48, 16,
+			17, 12, 69, 88, 81, 199, 36, 80, 84, 122, 75, 124, 0, 13, 69, 84, 228, 213, 72, 80, 129, 50, 91, 6, 146, 0, 13, 69, 80, 245,
+			67, 32, 80, 47, 137, 91, 141, 0, 46, 14, 69, 76, 84, 193, 52, 80, 89, 122, 89, 119, 65, 37, 0, 12, 68, 76, 48, 76, 16, 89,
+			49, 126, 55, 72, 0, 13, 69, 72, 246, 65, 48, 80, 34, 142, 6, 35, 55, 0, 14, 69, 72, 81, 201, 52, 80, 34, 141, 90, 6, 132,
+			65, 0, 14, 69, 64, 17, 76, 48, 16, 48, 140, 6, 122, 55, 13, 0, 15, 69, 53, 85, 1, 80, 80, 65, 57, 137, 47, 6, 141, 47,
+			0, 11, 69, 28, 21, 67, 32, 80, 81, 139, 91, 0, 15, 69, 21, 84, 133, 44, 16, 57, 137, 6, 34, 132, 49, 119, 0, 11, 67, 4,
+			192, 83, 119, 55, 6, 35, 89, 0, 8, 2, 209, 133, 101, 35, 12, 0, 0, 9, 198, 77, 83, 12, 37, 96, 78, 16, 24, 75, 72, 80,
+			207, 56, 224, 73, 77, 48, 78, 12, 80, 34, 113, 49, 126, 50, 124, 89, 13, 50, 89, 0, 5, 194, 85, 96, 13, 13, 2, 202, 188, 113,
+			75, 122, 49, 47, 113, 84, 10, 0, 7, 2, 209, 132, 122, 83, 0, 0, 14, 69, 76, 195, 214, 4, 176, 89, 55, 139, 84, 35, 49, 0,
+			9, 67, 76, 130, 65, 91, 132, 13, 0, 10, 68, 72, 82, 71, 56, 34, 141, 50, 0, 9, 67, 40, 242, 69, 90, 58, 121, 0, 6, 195,
+			64, 50, 69, 13, 7, 2, 209, 131, 40, 12, 0, 0, 11, 68, 5, 97, 82, 100, 141, 84, 114, 37, 0, 12, 68, 72, 85, 18, 100, 34,
+			132, 47, 34, 140, 0, 6, 195, 96, 19, 76, 13, 11, 2, 204, 170, 72, 122, 50, 47, 118, 10, 0, 8, 2, 209, 130, 47, 122, 12, 0,
+			0, 13, 69, 29, 32, 72, 4, 208, 81, 34, 141, 13, 65, 0, 14, 69, 28, 83, 73, 56, 144, 75, 122, 65, 113, 50, 140, 0, 9, 67,
+			8, 144, 83, 71, 147, 89, 0, 7, 2, 209, 129, 122, 89, 0, 0, 6, 195, 76, 243, 206, 32, 10, 67, 96, 83, 206, 88, 132, 126, 50,
+			0, 17, 70, 65, 83, 138, 4, 34, 64, 48, 129, 50, 75, 6, 121, 71, 37, 0, 10, 67, 4, 65, 78, 141, 72, 13, 50, 0, 15, 70,
+			49, 83, 12, 4, 38, 64, 55, 129, 55, 13, 71, 140, 0, 10, 67, 36, 51, 206, 140, 49, 126, 50, 0, 7, 2, 209, 128, 122, 34, 0,
+			0, 10, 67, 48, 146, 197, 55, 140, 49, 0, 10, 17, 7, 100, 111, 101, 115, 110, 39, 116, 72, 129, 88, 13, 50, 47, 0, 32, 9, 67,
+			28, 18, 65, 81, 140, 13, 0, 10, 67, 85, 49, 64, 57, 137, 88, 0, 36, 9, 67, 85, 49, 64, 57, 137, 89, 0, 21, 72, 52, 19,
+			129, 28, 84, 133, 77, 48, 65, 35, 50, 113, 75, 13, 34, 6, 122, 89, 0, 8, 2, 209, 143, 57, 35, 12, 0, 0, 27, 74, 52, 144,
+			210, 60, 244, 135, 4, 226, 83, 52, 65, 140, 49, 34, 139, 6, 135, 81, 13, 50, 124, 88, 13, 65, 0, 12, 68, 4, 194, 66, 36, 35,
+			55, 13, 71, 140, 0, 8, 2, 209, 142, 57, 40, 12, 0, 0, 28, 5, 119, 111, 110, 39, 116, 58, 6, 139, 50, 47, 35, 84, 47, 116,
+			0, 32, 10, 82, 104, 97, 118, 101, 32, 116, 111, 32, 27, 5, 119, 111, 110, 39, 116, 58, 139, 50, 47, 107, 35, 84, 124, 47, 0, 78,
+			82, 104, 97, 118, 101, 32, 105, 116, 32, 23, 5, 119, 111, 110, 39, 116, 58, 139, 50, 47, 107, 35, 84, 0, 35, 49, 81, 104, 97, 118,
+			101, 32, 22, 5, 119, 111, 110, 39, 116, 58, 139, 50, 47, 119, 84, 0, 35, 73, 81, 104, 97, 118, 101, 32, 16, 5, 119, 111, 110, 39,
+			116, 58, 139, 50, 47, 0, 76, 32, 10, 46, 10, 199, 32, 80, 68, 24, 148, 147, 80, 66, 17, 71, 16, 20, 142, 20, 65, 83, 80, 72,
+			130, 50, 72, 13, 89, 47, 0, 18, 71, 9, 33, 65, 44, 96, 83, 80, 71, 34, 122, 49, 83, 13, 89, 47, 0, 7, 2, 209, 141, 122,
+			12, 0, 0, 22, 72, 84, 226, 78, 80, 84, 133, 77, 64, 129, 50, 6, 124, 50, 47, 13, 34, 13, 89, 47, 0, 16, 70, 76, 80, 210,
+			20, 54, 64, 89, 132, 49, 34, 13, 89, 37, 0, 22, 72, 72, 18, 78, 24, 244, 133, 77, 64, 34, 6, 141, 50, 83, 4, 126, 34, 113,
+			89, 47, 0, 9, 198, 5, 32, 200, 92, 22, 64, 65, 10, 2, 209, 140, 57, 6, 36, 34, 37, 0, 0, 12, 68, 80, 129, 73, 72, 86,
+			143, 0, 72, 34, 46, 10, 67, 32, 211, 77, 107, 6, 13, 65, 0, 11, 68, 12, 145, 193, 72, 89, 113, 81, 130, 0, 6, 195, 25, 146,
+			64, 13, 10, 2, 209, 139, 57, 6, 122, 34, 40, 0, 0, 10, 67, 88, 86, 0, 84, 122, 49, 89, 0, 8, 2, 209, 138, 57, 122, 34,
+			0, 0, 9, 2, 209, 137, 91, 76, 35, 12, 0, 0, 16, 70, 80, 240, 143, 28, 112, 78, 47, 13, 71, 126, 81, 13, 50, 0, 12, 68,
+			52, 147, 149, 76, 65, 140, 50, 13, 89, 0, 8, 2, 209, 136, 91, 35, 12, 0, 0, 14, 70, 32, 20, 151, 36, 50, 0, 107, 35, 34,
+			124, 75, 0, 10, 68, 60, 97, 133, 72, 126, 83, 114, 0, 11, 68, 56, 244, 201, 72, 50, 139, 89, 131, 0, 10, 68, 24, 194, 69, 72,
+			83, 55, 148, 0, 0, 18, 70, 52, 242, 1, 52, 81, 0, 109, 111, 104, 97, 109, 109, 97, 100, 0, 29, 10, 2, 95, 34, 49, 58, 139,
+			47, 89, 0, 0, 16, 70, 72, 21, 133, 56, 147, 135, 34, 35, 84, 13, 50, 113, 68, 0, 15, 70, 64, 192, 71, 84, 147, 135, 48, 55,
+			141, 81, 124, 68, 0, 16, 70, 25, 34, 78, 28, 147, 135, 83, 34, 124, 50, 75, 124, 68, 0, 9, 67, 12, 130, 67, 91, 132, 49, 0,
+			17, 2, 95, 33, 122, 49, 89, 49, 55, 13, 65, 6, 141, 91, 13, 50, 0, 0, 20, 73, 80, 83, 80, 21, 32, 84, 85, 33, 64, 47,
+			122, 65, 48, 34, 113, 76, 114, 0, 21, 73, 25, 84, 148, 32, 84, 141, 61, 33, 64, 83, 151, 86, 114, 65, 6, 136, 0, 105, 8, 20,
+			73, 25, 84, 148, 32, 84, 141, 61, 33, 64, 83, 131, 86, 114, 65, 6, 136, 0, 8, 10, 67, 4, 227, 206, 119, 50, 126, 50, 0, 0,
+			16, 70, 9, 34, 83, 8, 19, 133, 71, 34, 124, 89, 71, 13, 50, 0, 9, 67, 76, 243, 128, 89, 129, 50, 0, 14, 69, 64, 81, 1,
+			48, 240, 48, 122, 72, 13, 55, 139, 0, 13, 68, 48, 241, 207, 56, 55, 126, 81, 6, 126, 50, 0, 9, 67, 12, 243, 128, 49, 126, 50,
+			0, 10, 198, 12, 17, 134, 20, 147, 133, 103, 66, 9, 2, 95, 39, 49, 58, 139, 47, 0, 0, 9, 2, 209, 146, 72, 57, 122, 12, 0,
+			13, 2, 95, 38, 35, 65, 48, 13, 89, 35, 50, 72, 0, 0, 7, 2, 209, 145, 57, 152, 0, 13, 2, 95, 37, 48, 151, 89, 6, 122,
+			50, 47, 0, 105, 12, 2, 95, 37, 48, 114, 89, 6, 122, 50, 47, 0, 0, 16, 70, 92, 129, 82, 21, 97, 82, 58, 2, 143, 44, 122,
+			84, 114, 0, 15, 70, 12, 128, 82, 80, 145, 82, 91, 130, 47, 37, 6, 141, 0, 16, 70, 56, 18, 82, 60, 34, 64, 50, 140, 34, 6,
+			139, 71, 37, 0, 16, 70, 37, 52, 129, 20, 194, 64, 124, 88, 34, 6, 141, 55, 37, 0, 14, 70, 72, 82, 78, 16, 81, 82, 34, 141,
+			50, 72, 145, 0, 15, 70, 28, 244, 211, 4, 209, 82, 81, 126, 89, 13, 65, 114, 0, 17, 70, 25, 35, 206, 80, 145, 82, 83, 34, 129,
+			50, 47, 6, 145, 0, 103, 15, 70, 25, 35, 206, 80, 145, 82, 83, 34, 129, 50, 47, 145, 0, 17, 70, 13, 84, 212, 60, 209, 82, 49,
+			6, 129, 89, 47, 13, 65, 114, 0, 9, 2, 95, 36, 72, 126, 55, 114, 0, 0, 16, 67, 88, 19, 128, 84, 35, 50, 72, 131, 0, 81,
+			100, 101, 114, 32, 17, 67, 88, 19, 128, 84, 35, 50, 72, 122, 50, 0, 81, 100, 101, 110, 32, 9, 67, 80, 83, 128, 47, 122, 50, 0,
+			19, 72, 77, 83, 16, 33, 84, 143, 85, 48, 89, 129, 55, 83, 114, 34, 13, 89, 0, 12, 68, 72, 148, 197, 56, 34, 124, 88, 13, 50,
+			0, 0, 9, 198, 61, 85, 3, 5, 53, 0, 65, 13, 2, 95, 42, 35, 89, 47, 13, 34, 124, 89, 49, 0, 0, 22, 72, 52, 243, 148,
+			28, 243, 69, 73, 144, 65, 126, 50, 47, 81, 6, 126, 65, 13, 34, 37, 0, 20, 72, 69, 80, 84, 21, 35, 129, 73, 144, 49, 58, 13,
+			47, 131, 50, 13, 34, 124, 0, 13, 2, 95, 41, 34, 140, 47, 48, 119, 34, 122, 50, 0, 0, 10, 67, 44, 145, 86, 49, 132, 122, 83,
+			0, 16, 70, 36, 225, 129, 56, 54, 64, 124, 50, 83, 13, 50, 89, 37, 0, 9, 67, 4, 96, 82, 119, 83, 130, 0, 9, 2, 209, 156,
+			49, 57, 122, 12, 0, 14, 2, 95, 40, 55, 122, 83, 47, 48, 119, 34, 122, 50, 0, 0, 11, 67, 32, 84, 128, 107, 131, 0, 72, 34,
+			46, 17, 67, 64, 84, 128, 48, 4, 131, 15, 89, 6, 141, 0, 81, 115, 101, 32, 20, 67, 64, 84, 128, 48, 114, 15, 89, 6, 122, 50,
+			47, 0, 81, 99, 101, 110, 116, 32, 9, 67, 64, 84, 128, 48, 131, 0, 72, 11, 67, 84, 229, 25, 129, 50, 47, 6, 140, 0, 6, 195,
+			37, 36, 192, 13, 8, 2, 209, 155, 78, 122, 12, 0, 0, 11, 68, 4, 193, 137, 20, 35, 55, 83, 37, 0, 13, 68, 60, 209, 71, 4,
+			139, 65, 6, 141, 81, 13, 0, 15, 7, 111, 39, 99, 108, 111, 99, 107, 13, 49, 55, 126, 49, 0, 11, 68, 28, 147, 77, 20, 81, 124,
+			65, 37, 0, 8, 2, 95, 46, 72, 126, 47, 0, 0, 12, 67, 36, 229, 15, 4, 124, 50, 108, 117, 0, 103, 11, 67, 36, 229, 15, 4,
+			124, 50, 47, 117, 0, 23, 73, 52, 144, 200, 20, 192, 78, 28, 83, 15, 65, 140, 49, 118, 6, 35, 50, 75, 13, 55, 139, 0, 12, 68,
+			4, 131, 69, 16, 35, 101, 65, 122, 72, 0, 9, 2, 209, 153, 55, 57, 122, 12, 0, 9, 2, 95, 45, 72, 35, 91, 0, 103, 11, 2,
+			95, 45, 107, 4, 140, 83, 13, 50, 0, 0, 9, 67, 4, 112, 82, 141, 81, 130, 0, 9, 67, 4, 49, 82, 141, 89, 114, 0, 6, 195,
+			48, 245, 18, 13, 9, 2, 95, 44, 49, 126, 65, 13, 0, 0, 19, 67, 24, 20, 128, 83, 6, 130, 10, 65, 4, 136, 0, 81, 109, 111,
+			114, 101, 32, 10, 67, 41, 81, 25, 75, 137, 72, 37, 0, 10, 198, 80, 83, 80, 48, 21, 5, 103, 16, 9, 198, 77, 64, 71, 56, 21,
+			5, 66, 17, 70, 76, 84, 1, 72, 21, 5, 89, 122, 48, 114, 34, 141, 47, 0, 36, 16, 70, 76, 84, 1, 72, 21, 5, 89, 122, 48,
+			14, 34, 13, 47, 0, 16, 70, 60, 36, 207, 48, 85, 5, 126, 71, 89, 13, 55, 132, 47, 0, 17, 70, 21, 53, 9, 52, 21, 5, 122,
+			89, 47, 113, 65, 141, 47, 0, 36, 9, 198, 4, 48, 213, 72, 21, 5, 16, 12, 67, 53, 36, 192, 65, 124, 89, 113, 88, 0, 24, 9,
+			2, 95, 51, 87, 34, 6, 132, 0, 0, 16, 70, 81, 83, 129, 24, 148, 200, 47, 137, 50, 13, 83, 124, 91, 0, 13, 67, 9, 99, 4,
+			71, 117, 55, 13, 84, 130, 72, 0, 8, 2, 95, 50, 47, 6, 137, 0, 0, 12, 68, 40, 20, 133, 16, 75, 35, 34, 13, 72, 0, 13,
+			69, 64, 85, 9, 80, 80, 48, 13, 47, 132, 47, 0, 9, 2, 95, 49, 58, 6, 128, 50, 0, 0, 21, 72, 77, 80, 147, 21, 21, 69,
+			57, 64, 89, 129, 71, 89, 113, 49, 58, 13, 50, 47, 0, 17, 7, 112, 105, 195, 177, 97, 116, 97, 48, 132, 67, 6, 35, 47, 119, 0,
+			16, 70, 52, 240, 195, 5, 50, 78, 65, 126, 49, 13, 89, 125, 50, 0, 11, 200, 12, 243, 77, 4, 225, 1, 57, 64, 15, 12, 201, 12,
+			21, 1, 77, 68, 143, 64, 129, 64, 17, 10, 2, 95, 48, 88, 6, 144, 34, 139, 0, 0, 8, 197, 80, 21, 20, 60, 240, 66, 22, 73,
+			36, 229, 5, 72, 209, 68, 36, 21, 5, 124, 50, 47, 114, 65, 6, 132, 72, 144, 47, 0, 24, 73, 16, 148, 195, 60, 228, 207, 48, 21,
+			5, 72, 124, 89, 49, 6, 126, 50, 89, 13, 55, 13, 47, 0, 22, 73, 12, 243, 77, 20, 228, 213, 72, 21, 5, 49, 13, 65, 122, 50,
+			89, 114, 34, 13, 47, 0, 9, 67, 4, 195, 197, 35, 55, 139, 0, 12, 2, 95, 55, 89, 6, 13, 84, 13, 50, 0, 107, 11, 2, 95,
+			55, 89, 6, 122, 84, 13, 50, 0, 0, 15, 70, 76, 19, 5, 72, 227, 192, 89, 119, 55, 143, 50, 139, 0, 17, 70, 16, 144, 66, 60,
+			195, 192, 72, 140, 6, 35, 71, 13, 55, 139, 0, 10, 2, 95, 54, 89, 6, 124, 49, 89, 0, 0, 19, 67, 16, 241, 83, 72, 129, 88,
+			50, 126, 47, 0, 32, 78, 81, 110, 111, 116, 32, 10, 67, 16, 241, 83, 72, 129, 88, 0, 32, 15, 70, 4, 195, 25, 76, 243, 128, 35,
+			55, 124, 89, 13, 50, 0, 9, 2, 95, 53, 83, 6, 140, 84, 0, 14, 3, 95, 98, 110, 71, 122, 50, 81, 6, 121, 55, 37, 0, 0,
+			17, 6, 119, 97, 115, 110, 39, 116, 58, 129, 88, 50, 47, 0, 103, 35, 46, 17, 6, 119, 97, 115, 110, 39, 116, 58, 4, 126, 88, 50,
+			47, 0, 35, 46, 16, 70, 76, 132, 137, 48, 198, 64, 91, 34, 124, 55, 55, 124, 0, 32, 8, 2, 95, 52, 83, 6, 136, 0, 0, 17,
+			7, 119, 101, 114, 101, 110, 39, 116, 4, 58, 131, 50, 47, 0, 35, 10, 9, 67, 105, 83, 133, 88, 137, 50, 0, 9, 67, 37, 51, 1,
+			140, 55, 13, 0, 9, 67, 20, 211, 65, 122, 65, 13, 0, 10, 67, 48, 147, 65, 55, 132, 65, 119, 0, 8, 67, 92, 131, 193, 58, 139,
+			0, 10, 67, 33, 83, 1, 107, 137, 55, 13, 0, 18, 70, 8, 84, 137, 8, 84, 137, 71, 122, 34, 124, 71, 6, 122, 34, 37, 0, 8,
+			2, 208, 183, 88, 122, 12, 0, 15, 2, 95, 59, 89, 122, 65, 124, 49, 6, 139, 55, 13, 50, 0, 0, 15, 70, 104, 130, 86, 4, 115,
+			192, 90, 113, 84, 121, 81, 139, 0, 12, 68, 20, 211, 210, 100, 122, 65, 114, 34, 37, 0, 13, 69, 52, 20, 137, 4, 224, 65, 35, 34,
+			144, 50, 0, 8, 2, 208, 182, 90, 122, 12, 0, 10, 2, 95, 58, 49, 139, 55, 13, 50, 0, 0, 13, 68, 56, 240, 133, 48, 50, 139,
+			71, 6, 122, 55, 0, 15, 70, 5, 81, 21, 8, 243, 128, 133, 72, 13, 71, 126, 50, 0, 12, 68, 88, 147, 153, 48, 84, 140, 50, 125,
+			55, 0, 7, 196, 12, 16, 129, 48, 17, 9, 2, 95, 57, 50, 6, 140, 50, 0, 8, 2, 208, 181, 57, 122, 12, 0, 0, 19, 66, 92,
+			80, 58, 132, 91, 6, 35, 55, 0, 49, 81, 115, 104, 97, 108, 108, 32, 19, 66, 92, 80, 58, 2, 132, 91, 4, 119, 55, 0, 81, 115,
+			104, 97, 108, 108, 32, 10, 66, 92, 80, 58, 132, 0, 72, 32, 46, 12, 68, 48, 17, 207, 76, 55, 141, 81, 126, 89, 0, 8, 66, 100,
+			16, 57, 119, 0, 46, 13, 69, 76, 145, 206, 4, 192, 89, 124, 81, 50, 118, 0, 14, 70, 64, 131, 5, 28, 214, 64, 83, 55, 122, 65,
+			37, 0, 13, 68, 60, 20, 201, 76, 139, 6, 141, 89, 113, 89, 0, 13, 70, 32, 80, 82, 76, 22, 64, 107, 145, 89, 141, 0, 9, 198,
+			28, 243, 196, 16, 22, 64, 66, 16, 70, 24, 20, 129, 92, 22, 64, 83, 130, 34, 13, 58, 6, 141, 0, 15, 70, 13, 85, 1, 92, 22,
+			64, 49, 129, 47, 13, 58, 141, 0, 18, 70, 12, 240, 88, 36, 19, 0, 49, 139, 6, 35, 49, 89, 124, 13, 55, 0, 18, 70, 12, 20,
+			129, 52, 83, 0, 49, 35, 34, 13, 65, 122, 55, 0, 135, 47, 5, 194, 84, 144, 13, 8, 2, 95, 56, 6, 141, 47, 0, 8, 2, 208,
+			180, 72, 122, 12, 0, 0, 16, 70, 64, 84, 147, 64, 86, 0, 48, 131, 89, 48, 122, 49, 89, 0, 13, 69, 24, 147, 133, 77, 48, 83,
+			113, 50, 122, 89, 0, 11, 68, 12, 243, 69, 72, 49, 129, 65, 114, 0, 9, 68, 12, 241, 85, 72, 49, 131, 0, 8, 2, 208, 179, 81,
+			122, 12, 0, 12, 2, 95, 63, 49, 58, 122, 89, 76, 13, 50, 0, 0, 10, 67, 65, 52, 212, 48, 89, 89, 47, 0, 9, 67, 56, 245,
+			20, 50, 126, 47, 0, 10, 67, 24, 144, 84, 83, 132, 13, 47, 0, 8, 2, 208, 178, 84, 122, 12, 0, 13, 2, 95, 62, 81, 34, 141,
+			47, 13, 86, 35, 50, 0, 0, 12, 68, 52, 147, 149, 80, 65, 124, 50, 124, 47, 0, 23, 73, 21, 132, 15, 56, 83, 148, 36, 19, 0,
+			122, 49, 89, 48, 13, 50, 6, 122, 50, 91, 118, 0, 8, 2, 208, 177, 71, 122, 12, 0, 10, 2, 95, 61, 132, 49, 58, 118, 88, 0,
+			0, 17, 70, 16, 243, 133, 28, 19, 0, 72, 126, 50, 113, 81, 6, 133, 55, 0, 7, 2, 208, 176, 35, 12, 0, 11, 2, 95, 60, 55,
+			122, 89, 86, 35, 50, 0, 0, 13, 69, 17, 83, 12, 21, 48, 72, 129, 55, 13, 89, 0, 13, 69, 16, 83, 142, 37, 48, 72, 122, 50,
+			125, 89, 0, 14, 69, 84, 227, 5, 77, 48, 129, 50, 55, 6, 122, 89, 0, 21, 72, 81, 32, 78, 77, 3, 210, 81, 48, 47, 34, 35,
+			50, 89, 48, 136, 47, 89, 0, 34, 13, 69, 80, 83, 142, 37, 48, 47, 122, 50, 125, 89, 0, 13, 69, 72, 16, 130, 37, 48, 34, 35,
+			71, 140, 88, 0, 9, 198, 60, 211, 137, 88, 244, 133, 65, 14, 69, 32, 147, 132, 85, 48, 107, 124, 50, 72, 137, 88, 0, 8, 2, 208,
+			191, 48, 122, 12, 0, 0, 22, 73, 65, 54, 67, 32, 144, 84, 72, 148, 212, 89, 140, 49, 6, 147, 47, 34, 124, 89, 47, 0, 18, 71,
+			49, 83, 131, 33, 35, 207, 52, 55, 129, 50, 76, 15, 34, 137, 65, 0, 6, 2, 208, 190, 152, 0, 0, 11, 68, 52, 147, 133, 80, 65,
+			113, 50, 141, 0, 13, 4, 95, 57, 48, 111, 50, 6, 140, 50, 47, 144, 0, 7, 2, 208, 189, 122, 50, 0, 0, 17, 70, 20, 118, 80,
+			80, 144, 78, 124, 75, 6, 124, 48, 91, 13, 50, 0, 9, 67, 72, 82, 78, 34, 141, 50, 0, 9, 198, 52, 17, 201, 12, 144, 78, 17,
+			17, 67, 48, 80, 78, 55, 132, 50, 15, 47, 137, 0, 44, 81, 116, 111, 32, 10, 67, 4, 114, 78, 119, 81, 124, 50, 0, 7, 2, 208,
+			188, 122, 65, 0, 10, 2, 95, 64, 35, 47, 89, 140, 50, 0, 0, 14, 69, 76, 245, 197, 80, 240, 89, 13, 58, 122, 47, 139, 0, 10,
+			68, 52, 22, 65, 56, 65, 147, 50, 0, 8, 2, 208, 187, 122, 56, 17, 0, 0, 11, 4, 105, 39, 108, 108, 140, 55, 0, 72, 32, 9,
+			67, 92, 131, 204, 107, 139, 55, 0, 15, 70, 88, 19, 12, 20, 163, 192, 84, 119, 55, 141, 107, 139, 0, 9, 198, 61, 85, 2, 4, 50,
+			192, 65, 14, 70, 16, 145, 66, 4, 50, 192, 72, 140, 71, 35, 49, 0, 12, 2, 215, 130, 89, 124, 50, 72, 126, 47, 10, 0, 8, 2,
+			208, 186, 49, 35, 12, 0, 0, 17, 70, 32, 80, 146, 36, 65, 83, 107, 122, 71, 34, 13, 72, 132, 88, 0, 17, 70, 4, 229, 9, 48,
+			193, 83, 35, 50, 47, 6, 124, 55, 132, 88, 0, 15, 70, 52, 19, 22, 21, 35, 128, 65, 133, 55, 84, 114, 50, 0, 17, 70, 52, 84,
+			131, 20, 65, 83, 65, 131, 89, 6, 141, 72, 132, 88, 0, 15, 70, 5, 69, 1, 12, 129, 83, 119, 47, 35, 76, 125, 88, 0, 10, 67,
+			4, 115, 199, 119, 81, 126, 81, 0, 12, 2, 215, 129, 91, 124, 50, 72, 126, 47, 10, 0, 17, 2, 208, 185, 4, 124, 49, 14, 16, 6,
+			35, 47, 49, 134, 57, 37, 0, 0, 15, 70, 12, 132, 153, 76, 193, 82, 49, 34, 140, 89, 55, 114, 0, 15, 70, 12, 193, 65, 57, 49,
+			82, 49, 55, 122, 50, 88, 114, 0, 7, 2, 208, 184, 124, 12, 0, 0, 10, 67, 64, 84, 149, 48, 13, 34, 137, 0, 17, 70, 64, 82,
+			201, 56, 84, 197, 48, 132, 49, 125, 50, 6, 132, 88, 0, 15, 70, 32, 80, 68, 4, 50, 25, 107, 122, 72, 141, 49, 37, 0, 12, 68,
+			16, 83, 79, 56, 72, 132, 65, 13, 50, 0, 0, 12, 68, 5, 52, 193, 52, 35, 89, 6, 35, 65, 0, 0, 11, 68, 88, 148, 129, 48,
+			84, 148, 34, 118, 0, 16, 70, 72, 19, 65, 16, 19, 128, 34, 35, 65, 119, 72, 121, 50, 0, 11, 68, 69, 80, 83, 32, 49, 58, 126,
+			91, 0, 11, 68, 28, 21, 133, 48, 81, 35, 84, 118, 0, 11, 68, 12, 244, 129, 48, 49, 126, 34, 118, 0, 21, 72, 12, 243, 77, 20,
+			229, 1, 73, 144, 49, 126, 65, 13, 50, 47, 122, 34, 37, 0, 103, 19, 72, 12, 243, 77, 20, 229, 1, 73, 144, 49, 126, 65, 13, 50,
+			47, 34, 124, 0, 12, 4, 95, 226, 128, 163, 71, 117, 55, 113, 47, 0, 0, 8, 67, 12, 129, 82, 91, 143, 0, 9, 198, 4, 224, 84,
+			60, 214, 64, 17, 16, 4, 194, 182, 194, 182, 48, 35, 34, 13, 81, 34, 35, 83, 89, 0, 12, 4, 95, 226, 128, 162, 71, 117, 55, 113,
+			47, 0, 0, 10, 67, 4, 64, 64, 141, 72, 13, 0, 47, 16, 70, 65, 32, 67, 80, 148, 197, 48, 34, 35, 49, 47, 113, 89, 0, 15,
+			4, 95, 226, 128, 161, 72, 129, 71, 118, 72, 35, 81, 114, 0, 0, 18, 72, 81, 35, 213, 8, 17, 15, 85, 32, 47, 34, 137, 71, 13,
+			72, 136, 0, 11, 68, 80, 146, 203, 4, 47, 132, 49, 13, 0, 16, 70, 8, 16, 203, 20, 225, 0, 71, 35, 49, 6, 122, 50, 72, 0,
+			11, 4, 95, 226, 128, 160, 72, 35, 81, 114, 0, 0, 10, 68, 4, 50, 5, 16, 141, 49, 47, 0, 4, 193, 212, 43, 0, 12, 67, 100,
+			245, 82, 57, 146, 0, 106, 72, 34, 46, 11, 67, 100, 245, 82, 57, 135, 0, 72, 34, 46, 15, 4, 95, 226, 128, 166, 124, 55, 6, 124,
+			48, 89, 124, 89, 0, 0, 14, 70, 60, 209, 76, 21, 69, 5, 126, 65, 55, 13, 47, 0, 13, 70, 12, 82, 76, 36, 66, 0, 49, 141,
+			55, 37, 0, 6, 195, 85, 48, 128, 13, 9, 2, 215, 151, 101, 36, 47, 10, 0, 7, 2, 217, 135, 107, 35, 0, 11, 3, 95, 101, 108,
+			81, 34, 6, 132, 49, 0, 13, 4, 95, 226, 128, 165, 47, 137, 72, 126, 47, 89, 0, 0, 12, 68, 65, 84, 133, 20, 48, 57, 146, 34,
+			141, 0, 12, 2, 215, 150, 88, 6, 35, 57, 37, 50, 10, 0, 9, 2, 217, 134, 50, 40, 12, 50, 0, 10, 4, 95, 226, 128, 164, 72,
+			126, 47, 0, 0, 13, 68, 84, 229, 197, 16, 129, 50, 58, 6, 122, 72, 0, 13, 68, 84, 225, 133, 16, 129, 50, 83, 6, 122, 72, 0,
+			9, 2, 215, 149, 84, 35, 84, 10, 0, 8, 2, 217, 133, 65, 132, 65, 0, 15, 4, 95, 226, 128, 155, 55, 122, 83, 47, 49, 58, 139,
+			47, 0, 0, 20, 73, 72, 21, 1, 80, 245, 73, 48, 193, 64, 34, 35, 47, 13, 47, 6, 137, 124, 0, 21, 72, 12, 148, 131, 84, 213,
+			133, 57, 64, 89, 150, 49, 13, 65, 84, 122, 50, 47, 0, 105, 20, 72, 12, 148, 131, 84, 213, 133, 57, 64, 89, 131, 49, 13, 65, 84,
+			122, 50, 47, 0, 8, 2, 215, 148, 107, 36, 10, 0, 8, 2, 217, 132, 55, 35, 65, 0, 13, 4, 95, 226, 128, 154, 55, 139, 49, 58,
+			139, 47, 0, 0, 17, 67, 76, 243, 69, 89, 129, 65, 58, 128, 50, 0, 81, 111, 110, 101, 32, 13, 67, 76, 243, 69, 4, 89, 129, 65,
+			0, 34, 11, 46, 10, 67, 12, 195, 197, 49, 55, 139, 37, 0, 9, 198, 12, 19, 3, 85, 69, 1, 66, 11, 67, 81, 83, 129, 47, 137,
+			50, 13, 0, 103, 11, 67, 81, 83, 129, 47, 57, 137, 50, 13, 0, 15, 70, 76, 21, 67, 21, 0, 78, 89, 133, 89, 48, 13, 50, 0,
+			12, 2, 215, 147, 6, 72, 35, 55, 36, 47, 10, 0, 8, 2, 217, 131, 49, 35, 83, 0, 14, 4, 95, 226, 128, 153, 34, 140, 47, 49,
+			58, 139, 47, 0, 0, 16, 70, 80, 19, 12, 100, 131, 192, 47, 35, 55, 124, 6, 107, 139, 0, 9, 67, 52, 16, 200, 65, 121, 49, 0,
+			14, 70, 48, 83, 208, 5, 33, 0, 55, 122, 48, 114, 72, 0, 13, 202, 32, 84, 141, 5, 2, 18, 60, 66, 84, 20, 66, 12, 2, 215,
+			146, 6, 81, 37, 65, 36, 55, 10, 0, 9, 2, 217, 130, 104, 35, 12, 83, 0, 15, 4, 95, 226, 128, 152, 55, 122, 83, 47, 49, 58,
+			139, 47, 0, 0, 12, 67, 28, 241, 83, 2, 81, 139, 88, 0, 10, 46, 13, 69, 16, 147, 135, 33, 144, 72, 124, 68, 81, 37, 0, 9,
+			2, 215, 145, 71, 36, 47, 10, 0, 7, 2, 217, 129, 83, 35, 0, 16, 4, 95, 226, 128, 159, 55, 122, 83, 47, 49, 58, 139, 47, 89,
+			0, 0, 15, 70, 40, 240, 67, 32, 147, 64, 75, 139, 13, 49, 124, 65, 0, 6, 195, 37, 48, 142, 13, 11, 2, 215, 144, 6, 35, 55,
+			36, 83, 10, 0, 15, 3, 95, 103, 117, 81, 137, 75, 114, 34, 6, 121, 47, 37, 0, 14, 4, 95, 226, 128, 158, 55, 139, 49, 58, 139,
+			47, 89, 0, 0, 11, 200, 72, 81, 193, 72, 67, 5, 77, 48, 8, 11, 67, 76, 129, 64, 91, 132, 0, 72, 46, 33, 10, 67, 52, 19,
+			65, 65, 121, 65, 119, 0, 9, 2, 215, 159, 50, 40, 50, 10, 0, 6, 2, 217, 143, 40, 0, 15, 4, 95, 226, 128, 157, 34, 140, 47,
+			49, 58, 139, 47, 89, 0, 15, 2, 95, 91, 55, 122, 83, 47, 71, 34, 35, 49, 113, 47, 0, 0, 12, 68, 32, 19, 143, 36, 107, 35,
+			50, 6, 142, 0, 16, 70, 65, 33, 67, 21, 5, 0, 48, 34, 132, 89, 122, 48, 47, 0, 10, 198, 12, 243, 150, 21, 37, 0, 65, 37,
+			9, 198, 12, 243, 147, 61, 37, 0, 36, 9, 198, 12, 243, 147, 61, 37, 0, 65, 9, 67, 4, 224, 76, 141, 50, 118, 0, 9, 2, 215,
+			158, 65, 36, 65, 10, 0, 6, 2, 217, 142, 35, 0, 7, 2, 218, 134, 76, 35, 0, 16, 4, 95, 226, 128, 156, 55, 122, 83, 47, 49,
+			58, 139, 47, 89, 0, 0, 16, 70, 52, 20, 137, 49, 147, 128, 65, 35, 34, 13, 55, 113, 50, 0, 15, 70, 65, 35, 206, 61, 83, 128,
+			48, 34, 139, 50, 138, 50, 0, 13, 69, 32, 245, 11, 21, 144, 107, 126, 47, 49, 132, 0, 12, 200, 4, 36, 207, 49, 85, 5, 49, 144,
+			67, 32, 9, 2, 215, 157, 65, 36, 65, 10, 0, 10, 4, 95, 226, 128, 147, 72, 35, 91, 0, 0, 19, 66, 76, 240, 89, 6, 139, 15,
+			65, 4, 129, 76, 0, 81, 109, 117, 99, 104, 32, 20, 66, 76, 240, 89, 4, 139, 15, 65, 6, 122, 50, 37, 0, 81, 109, 97, 110, 121,
+			32, 18, 66, 76, 240, 89, 6, 139, 15, 83, 4, 130, 0, 10, 81, 102, 97, 114, 32, 9, 66, 76, 240, 4, 89, 139, 0, 10, 15, 70,
+			52, 19, 3, 60, 195, 64, 65, 35, 55, 49, 13, 65, 0, 15, 70, 65, 33, 84, 104, 83, 0, 48, 34, 122, 47, 89, 118, 0, 20, 73,
+			8, 245, 82, 28, 83, 201, 76, 145, 64, 71, 146, 90, 58, 121, 88, 6, 132, 0, 6, 194, 88, 144, 13, 42, 5, 194, 84, 176, 13, 12,
+			2, 215, 156, 55, 6, 35, 65, 36, 72, 10, 0, 10, 4, 95, 226, 128, 146, 72, 35, 91, 0, 0, 15, 69, 12, 144, 76, 37, 48, 89,
+			132, 6, 35, 55, 125, 89, 0, 13, 70, 4, 19, 9, 100, 18, 0, 13, 55, 132, 13, 0, 17, 70, 77, 84, 137, 56, 19, 69, 89, 146,
+			34, 124, 50, 6, 35, 65, 0, 14, 69, 52, 244, 129, 77, 48, 65, 126, 34, 6, 35, 89, 0, 12, 69, 52, 80, 68, 61, 112, 65, 122,
+			72, 139, 0, 12, 69, 4, 148, 130, 85, 48, 143, 71, 129, 89, 0, 9, 2, 215, 155, 49, 35, 83, 10, 0, 12, 4, 95, 226, 128, 145,
+			107, 140, 83, 13, 50, 0, 14, 2, 95, 95, 6, 129, 50, 72, 114, 89, 49, 4, 136, 0, 0, 19, 71, 4, 227, 129, 52, 20, 137, 4,
+			35, 50, 13, 65, 119, 34, 6, 132, 13, 0, 9, 2, 215, 154, 49, 35, 83, 10, 0, 8, 2, 217, 138, 57, 122, 19, 0, 11, 4, 95,
+			226, 130, 160, 57, 146, 34, 139, 0, 12, 4, 95, 226, 128, 144, 107, 140, 83, 13, 50, 0, 17, 2, 95, 94, 89, 150, 49, 129, 65, 83,
+			55, 4, 122, 49, 89, 0, 105, 16, 2, 95, 94, 89, 131, 49, 129, 65, 83, 55, 4, 122, 49, 89, 0, 0, 11, 67, 60, 130, 79, 139,
+			107, 6, 140, 139, 0, 17, 70, 52, 147, 132, 4, 224, 79, 65, 124, 50, 72, 13, 50, 6, 138, 0, 7, 196, 12, 17, 5, 80, 17, 9,
+			2, 215, 153, 57, 39, 72, 10, 0, 19, 2, 217, 137, 35, 55, 6, 37, 83, 10, 65, 35, 49, 89, 6, 40, 34, 35, 0, 14, 2, 95,
+			93, 34, 140, 47, 71, 34, 35, 49, 113, 47, 0, 0, 15, 70, 77, 83, 132, 36, 19, 0, 89, 129, 50, 72, 147, 55, 0, 13, 70, 40,
+			245, 82, 56, 19, 0, 75, 131, 50, 118, 0, 15, 70, 12, 130, 70, 25, 35, 206, 91, 124, 83, 34, 126, 50, 0, 9, 2, 215, 152, 47,
+			36, 47, 10, 0, 8, 2, 217, 136, 58, 35, 58, 0, 15, 4, 95, 226, 128, 150, 72, 4, 129, 71, 118, 71, 6, 130, 0, 0, 11, 69,
+			80, 129, 73, 73, 48, 86, 143, 88, 0, 15, 69, 4, 52, 143, 77, 48, 13, 49, 34, 126, 89, 0, 74, 10, 8, 197, 32, 20, 146, 37,
+			48, 15, 16, 70, 26, 84, 137, 56, 225, 64, 83, 132, 34, 124, 50, 38, 13, 0, 13, 69, 32, 84, 144, 21, 48, 107, 131, 48, 132, 88,
+			0, 15, 69, 21, 131, 196, 85, 48, 122, 49, 89, 13, 72, 13, 89, 0, 13, 69, 12, 20, 133, 77, 48, 49, 13, 34, 122, 89, 0, 14,
+			69, 12, 19, 150, 5, 48, 49, 35, 50, 84, 13, 89, 0, 14, 69, 12, 19, 80, 85, 48, 49, 35, 65, 48, 13, 89, 0, 12, 69, 5,
+			32, 200, 21, 48, 130, 76, 125, 88, 0, 9, 2, 215, 167, 49, 40, 83, 10, 0, 20, 4, 95, 226, 128, 149, 107, 126, 34, 113, 88, 4,
+			126, 50, 47, 118, 71, 6, 130, 0, 0, 12, 2, 215, 166, 47, 89, 6, 35, 72, 37, 10, 0, 12, 4, 95, 226, 128, 148, 122, 65, 72,
+			35, 91, 0, 0, 12, 68, 24, 147, 5, 80, 83, 113, 55, 141, 0, 103, 12, 2, 215, 165, 47, 89, 6, 35, 72, 37, 10, 0, 13, 3,
+			95, 97, 114, 6, 35, 34, 13, 71, 124, 49, 0, 6, 2, 95, 97, 141, 0, 0, 19, 71, 36, 212, 9, 56, 114, 78, 28, 124, 65, 48,
+			6, 124, 50, 75, 124, 68, 0, 8, 2, 215, 164, 48, 36, 10, 0, 12, 2, 95, 96, 71, 35, 49, 48, 34, 140, 65, 0, 0, 10, 67,
+			16, 145, 85, 21, 102, 114, 0, 47, 8, 2, 215, 163, 48, 36, 10, 0, 0, 12, 68, 8, 85, 19, 100, 71, 122, 47, 89, 37, 0, 9,
+			198, 61, 85, 13, 61, 53, 0, 65, 28, 74, 36, 229, 133, 77, 66, 71, 5, 66, 86, 20, 124, 50, 84, 4, 122, 89, 47, 113, 81, 6,
+			141, 47, 124, 84, 0, 103, 12, 2, 215, 162, 19, 6, 35, 57, 37, 50, 10, 0, 11, 2, 217, 146, 89, 40, 49, 6, 40, 50, 0, 0,
+			12, 68, 4, 69, 137, 48, 35, 72, 84, 124, 55, 0, 17, 70, 65, 148, 133, 56, 81, 83, 48, 124, 34, 13, 50, 6, 132, 88, 0, 17,
+			70, 17, 83, 70, 72, 145, 83, 72, 129, 65, 83, 34, 6, 132, 89, 0, 16, 70, 88, 84, 148, 36, 49, 83, 84, 131, 47, 124, 89, 132,
+			88, 0, 15, 69, 84, 229, 9, 17, 144, 129, 50, 47, 6, 140, 72, 37, 0, 13, 69, 72, 80, 76, 49, 144, 34, 144, 55, 124, 0, 32,
+			13, 69, 65, 33, 84, 81, 144, 48, 34, 124, 47, 37, 0, 12, 2, 215, 161, 89, 6, 35, 65, 36, 101, 10, 0, 10, 2, 217, 145, 91,
+			6, 35, 72, 119, 0, 0, 16, 70, 4, 36, 129, 32, 19, 64, 141, 71, 34, 13, 107, 35, 65, 0, 11, 68, 12, 18, 82, 60, 49, 140,
+			34, 139, 0, 9, 2, 215, 160, 50, 40, 50, 10, 0, 6, 2, 217, 144, 37, 0, 7, 2, 218, 136, 72, 36, 0, 0, 9, 67, 72, 147,
+			192, 34, 132, 139, 0, 16, 70, 76, 21, 129, 28, 84, 153, 89, 35, 84, 124, 75, 34, 37, 0, 21, 72, 64, 131, 212, 60, 198, 83, 37,
+			48, 83, 139, 47, 6, 126, 55, 13, 89, 124, 89, 0, 21, 72, 52, 85, 18, 61, 3, 204, 37, 48, 65, 13, 47, 34, 126, 48, 13, 55,
+			124, 89, 0, 9, 198, 16, 83, 9, 88, 84, 153, 16, 12, 201, 12, 131, 15, 72, 244, 12, 5, 53, 0, 65, 9, 67, 8, 147, 192, 71,
+			140, 139, 0, 8, 67, 4, 195, 64, 121, 65, 0, 6, 2, 214, 183, 35, 0, 10, 2, 216, 167, 35, 55, 6, 37, 83, 0, 0, 12, 68,
+			32, 148, 129, 52, 107, 140, 34, 13, 65, 0, 9, 198, 80, 16, 129, 76, 51, 192, 17, 13, 68, 32, 20, 133, 52, 107, 121, 34, 6, 132,
+			65, 0, 6, 2, 214, 182, 122, 0, 19, 2, 216, 166, 107, 6, 35, 65, 88, 35, 10, 19, 55, 35, 10, 57, 122, 19, 0, 0, 14, 70,
+			32, 84, 141, 4, 227, 128, 107, 131, 65, 13, 50, 0, 12, 69, 12, 129, 78, 21, 144, 76, 141, 50, 37, 0, 10, 67, 100, 246, 79, 57,
+			139, 57, 139, 0, 15, 69, 56, 240, 143, 17, 144, 6, 50, 139, 71, 126, 72, 37, 0, 10, 67, 16, 83, 79, 72, 122, 65, 139, 0, 11,
+			68, 8, 20, 193, 48, 71, 141, 89, 118, 0, 6, 2, 214, 181, 122, 0, 22, 2, 216, 165, 35, 55, 6, 37, 83, 10, 47, 35, 107, 47,
+			10, 107, 6, 35, 65, 88, 35, 0, 0, 19, 72, 24, 18, 18, 20, 226, 5, 37, 64, 83, 35, 34, 13, 50, 107, 140, 47, 0, 18, 67,
+			18, 34, 155, 72, 141, 90, 121, 15, 84, 6, 137, 0, 81, 118, 117, 32, 5, 194, 100, 64, 13, 6, 2, 214, 180, 132, 0, 14, 2, 219,
+			140, 83, 6, 130, 89, 37, 15, 57, 6, 36, 0, 19, 2, 216, 164, 107, 6, 35, 65, 88, 35, 10, 19, 55, 35, 10, 58, 35, 58, 0,
+			0, 20, 67, 88, 148, 192, 84, 132, 88, 119, 84, 6, 132, 0, 82, 97, 32, 118, 105, 115, 32, 21, 67, 88, 148, 192, 84, 132, 88, 119,
+			84, 6, 132, 0, 82, 195, 160, 32, 118, 105, 115, 32, 6, 195, 20, 32, 89, 20, 6, 2, 214, 179, 39, 0, 22, 2, 216, 163, 107, 6,
+			35, 65, 88, 35, 10, 47, 35, 107, 47, 10, 35, 55, 6, 37, 83, 0, 0, 10, 68, 52, 17, 86, 20, 65, 141, 84, 0, 16, 70, 16,
+			243, 73, 56, 144, 192, 72, 126, 65, 113, 50, 124, 49, 0, 12, 68, 60, 208, 72, 4, 139, 65, 119, 107, 121, 0, 13, 69, 80, 20, 137,
+			24, 96, 47, 35, 34, 124, 83, 0, 9, 198, 76, 21, 1, 56, 144, 192, 17, 11, 68, 68, 17, 68, 4, 49, 140, 72, 13, 0, 12, 68,
+			64, 17, 18, 20, 48, 121, 72, 34, 141, 0, 11, 68, 52, 149, 18, 20, 65, 140, 47, 114, 0, 13, 68, 44, 240, 76, 4, 49, 139, 6,
+			121, 55, 13, 0, 16, 70, 44, 147, 133, 80, 144, 192, 49, 125, 50, 122, 47, 124, 49, 0, 14, 70, 5, 36, 197, 56, 144, 192, 130, 89,
+			50, 124, 49, 0, 6, 2, 214, 178, 35, 0, 9, 2, 215, 170, 47, 35, 84, 10, 0, 19, 2, 216, 162, 35, 55, 6, 37, 83, 10, 65,
+			35, 65, 72, 6, 40, 72, 119, 0, 0, 15, 70, 72, 241, 5, 72, 144, 203, 34, 126, 72, 34, 124, 49, 0, 14, 70, 12, 130, 83, 92,
+			144, 203, 76, 124, 88, 124, 49, 0, 17, 71, 81, 33, 66, 84, 50, 5, 80, 47, 34, 122, 71, 117, 91, 141, 0, 6, 2, 214, 177, 122,
+			0, 9, 2, 215, 169, 91, 37, 50, 10, 0, 7, 2, 218, 145, 92, 36, 0, 11, 2, 216, 161, 107, 6, 35, 65, 88, 35, 0, 0, 18,
+			70, 80, 21, 9, 4, 224, 64, 47, 121, 47, 57, 6, 121, 50, 13, 0, 103, 17, 70, 80, 21, 9, 4, 224, 64, 47, 35, 47, 124, 6,
+			121, 50, 13, 0, 9, 198, 56, 21, 1, 76, 128, 64, 17, 8, 197, 12, 243, 146, 4, 64, 65, 16, 70, 5, 34, 65, 56, 224, 64, 35,
+			34, 124, 6, 121, 50, 13, 0, 15, 70, 80, 84, 85, 36, 192, 64, 47, 13, 49, 132, 55, 13, 0, 15, 69, 72, 245, 21, 56, 64, 34,
+			139, 47, 6, 129, 50, 72, 0, 16, 70, 64, 84, 147, 60, 224, 64, 48, 131, 89, 6, 139, 50, 13, 0, 12, 69, 36, 227, 129, 72, 64,
+			124, 50, 114, 72, 0, 13, 70, 8, 149, 5, 12, 128, 64, 71, 140, 76, 13, 0, 16, 70, 8, 83, 9, 76, 128, 64, 71, 13, 55, 6,
+			132, 91, 13, 0, 17, 70, 4, 193, 129, 48, 96, 64, 35, 55, 83, 6, 35, 55, 83, 13, 0, 17, 70, 4, 48, 80, 20, 192, 64, 35,
+			49, 119, 48, 6, 122, 55, 13, 0, 8, 2, 214, 176, 91, 84, 121, 0, 9, 2, 215, 168, 51, 36, 91, 10, 0, 12, 3, 95, 104, 101,
+			107, 6, 132, 71, 34, 137, 0, 0, 19, 67, 16, 84, 192, 72, 13, 65, 142, 50, 0, 81, 109, 111, 105, 110, 101, 115, 32, 31, 67, 48,
+			84, 192, 55, 141, 65, 124, 88, 122, 34, 6, 121, 71, 55, 14, 0, 81, 109, 105, 115, 195, 169, 114, 97, 98, 108, 101, 115, 32, 9, 2,
+			216, 175, 72, 35, 56, 17, 0, 7, 2, 95, 115, 122, 89, 0, 0, 13, 68, 4, 35, 214, 20, 13, 71, 129, 84, 0, 74, 10, 11, 67,
+			40, 244, 226, 107, 139, 89, 6, 141, 0, 19, 71, 64, 243, 25, 4, 210, 68, 20, 48, 126, 55, 124, 6, 141, 65, 140, 72, 0, 18, 70,
+			64, 85, 21, 48, 19, 148, 48, 122, 76, 13, 55, 13, 50, 47, 0, 103, 17, 70, 64, 83, 131, 32, 19, 148, 48, 122, 50, 91, 13, 50,
+			47, 0, 103, 15, 70, 64, 83, 131, 32, 19, 148, 48, 126, 50, 91, 126, 50, 0, 10, 199, 53, 83, 20, 37, 69, 68, 20, 65, 11, 68,
+			12, 19, 22, 20, 49, 35, 84, 0, 103, 10, 68, 12, 19, 22, 20, 49, 121, 84, 0, 8, 2, 216, 174, 101, 122, 19, 0, 0, 10, 199,
+			56, 240, 212, 85, 35, 129, 48, 66, 8, 2, 216, 173, 107, 122, 19, 0, 14, 4, 95, 104, 97, 99, 107, 6, 35, 76, 4, 122, 49, 0,
+			0, 16, 69, 8, 82, 9, 56, 64, 71, 124, 107, 140, 50, 72, 0, 74, 10, 9, 198, 56, 21, 129, 76, 48, 64, 17, 14, 69, 72, 20,
+			200, 36, 64, 34, 121, 91, 6, 132, 72, 0, 17, 70, 56, 144, 207, 76, 144, 64, 50, 124, 49, 13, 89, 6, 132, 13, 0, 15, 70, 12,
+			80, 201, 48, 144, 64, 89, 113, 89, 132, 55, 144, 0, 15, 69, 84, 229, 201, 56, 64, 129, 50, 58, 6, 140, 50, 72, 0, 17, 70, 64,
+			19, 129, 12, 80, 64, 48, 35, 50, 119, 89, 6, 132, 13, 0, 17, 69, 48, 149, 133, 12, 64, 55, 6, 140, 84, 89, 132, 72, 6, 132,
+			0, 13, 69, 21, 36, 129, 56, 64, 122, 34, 13, 50, 72, 0, 11, 2, 214, 188, 72, 6, 35, 81, 122, 91, 0, 8, 2, 216, 172, 75,
+			132, 65, 0, 0, 17, 71, 8, 81, 84, 32, 245, 133, 56, 71, 141, 108, 139, 84, 13, 50, 0, 10, 67, 49, 84, 5, 55, 137, 48, 141,
+			0, 10, 67, 88, 148, 193, 84, 132, 88, 13, 0, 10, 199, 32, 19, 12, 61, 113, 69, 56, 67, 11, 67, 17, 84, 5, 72, 57, 137, 48,
+			0, 135, 6, 2, 214, 187, 40, 0, 8, 2, 216, 171, 87, 122, 19, 0, 0, 21, 72, 104, 147, 66, 4, 37, 197, 4, 224, 88, 113, 65,
+			71, 121, 71, 58, 124, 13, 50, 0, 14, 69, 92, 21, 19, 60, 224, 58, 126, 47, 89, 13, 50, 0, 15, 70, 77, 21, 73, 73, 33, 76,
+			89, 49, 58, 131, 64, 0, 103, 15, 70, 77, 21, 73, 73, 33, 76, 89, 49, 58, 124, 34, 118, 0, 8, 197, 76, 19, 15, 60, 224, 17,
+			12, 68, 16, 147, 135, 100, 72, 124, 50, 75, 124, 0, 12, 2, 219, 146, 71, 35, 34, 37, 57, 6, 36, 0, 7, 2, 216, 170, 47, 35,
+			0, 0, 9, 67, 76, 22, 83, 89, 122, 88, 0, 13, 69, 76, 17, 133, 81, 144, 89, 141, 83, 47, 37, 0, 8, 197, 61, 85, 3, 73,
+			144, 65, 10, 67, 56, 245, 19, 50, 126, 47, 89, 0, 13, 69, 48, 149, 133, 49, 144, 55, 140, 84, 55, 124, 0, 13, 69, 36, 229, 18,
+			5, 144, 124, 50, 47, 34, 141, 0, 12, 69, 33, 84, 146, 5, 144, 107, 13, 34, 141, 0, 10, 67, 4, 225, 87, 119, 50, 137, 0, 103,
+			10, 67, 4, 225, 87, 119, 50, 57, 137, 0, 6, 2, 214, 185, 39, 0, 17, 2, 216, 169, 47, 6, 122, 19, 65, 35, 52, 71, 6, 40,
+			47, 119, 0, 0, 14, 6, 121, 111, 117, 39, 108, 108, 57, 137, 55, 0, 72, 32, 14, 69, 37, 48, 66, 20, 192, 124, 88, 13, 71, 122,
+			55, 0, 12, 68, 17, 32, 67, 60, 72, 34, 141, 49, 139, 0, 11, 67, 8, 17, 90, 71, 140, 6, 122, 88, 0, 18, 72, 80, 244, 146,
+			20, 229, 9, 4, 192, 47, 13, 34, 122, 50, 91, 118, 0, 23, 73, 36, 228, 212, 4, 195, 1, 80, 147, 206, 124, 50, 89, 47, 13, 55,
+			6, 141, 91, 13, 50, 0, 19, 72, 12, 243, 12, 61, 21, 73, 4, 192, 49, 13, 55, 139, 49, 58, 124, 118, 0, 13, 69, 12, 128, 78,
+			20, 192, 91, 119, 50, 122, 55, 0, 12, 69, 12, 83, 9, 16, 128, 49, 141, 55, 37, 0, 6, 2, 214, 184, 35, 0, 7, 2, 218, 152,
+			90, 35, 0, 7, 2, 216, 168, 71, 35, 0, 0, 11, 68, 32, 82, 78, 104, 107, 140, 50, 88, 0, 10, 67, 88, 20, 197, 84, 121, 88,
+			0, 135, 9, 67, 80, 20, 197, 47, 141, 88, 0, 9, 67, 16, 244, 197, 72, 139, 89, 0, 9, 2, 216, 183, 47, 107, 121, 19, 0, 13,
+			2, 95, 123, 55, 122, 83, 47, 71, 34, 141, 89, 0, 0, 14, 69, 80, 82, 18, 4, 224, 47, 143, 34, 6, 121, 50, 0, 13, 69, 48,
+			84, 201, 60, 224, 55, 132, 90, 13, 50, 0, 9, 198, 12, 243, 134, 48, 144, 212, 36, 10, 198, 12, 243, 134, 48, 144, 212, 65, 47, 10,
+			2, 216, 182, 72, 35, 12, 72, 14, 0, 20, 4, 95, 226, 128, 188, 122, 49, 89, 49, 55, 119, 65, 6, 141, 91, 13, 50, 88, 0, 0,
+			10, 199, 64, 83, 143, 9, 48, 207, 80, 17, 15, 69, 76, 147, 135, 49, 144, 89, 124, 68, 81, 55, 124, 0, 32, 12, 69, 64, 80, 82,
+			49, 144, 48, 131, 55, 37, 0, 17, 70, 24, 244, 133, 57, 50, 67, 83, 13, 34, 122, 50, 89, 124, 49, 0, 17, 71, 20, 21, 133, 76,
+			68, 143, 64, 132, 84, 88, 72, 34, 126, 48, 0, 10, 2, 216, 181, 89, 35, 12, 72, 14, 0, 15, 4, 95, 226, 128, 179, 72, 129, 71,
+			118, 48, 34, 140, 65, 0, 0, 9, 66, 80, 240, 47, 137, 0, 72, 42, 9, 66, 80, 240, 47, 137, 0, 72, 49, 23, 66, 80, 240, 47,
+			137, 13, 50, 72, 83, 34, 6, 139, 0, 82, 97, 110, 100, 32, 102, 114, 111, 32, 16, 66, 80, 240, 2, 47, 117, 10, 47, 116, 0, 32,
+			81, 116, 111, 32, 16, 66, 80, 240, 47, 13, 15, 6, 71, 132, 0, 49, 81, 98, 101, 32, 15, 66, 80, 240, 47, 13, 71, 2, 37, 0,
+			35, 81, 98, 101, 32, 8, 66, 80, 240, 47, 116, 0, 32, 12, 69, 76, 130, 76, 60, 128, 91, 140, 55, 139, 0, 8, 66, 100, 80, 57,
+			132, 0, 76, 12, 69, 64, 20, 137, 4, 128, 48, 13, 34, 147, 0, 15, 70, 16, 80, 201, 8, 83, 0, 72, 122, 89, 125, 71, 118, 0,
+			15, 70, 8, 16, 200, 20, 195, 210, 71, 35, 76, 13, 55, 114, 0, 8, 2, 216, 180, 91, 132, 50, 0, 14, 3, 95, 106, 97, 75, 6,
+			35, 48, 13, 50, 132, 88, 0, 11, 4, 95, 226, 128, 178, 48, 34, 140, 65, 0, 0, 11, 67, 92, 134, 64, 4, 58, 140, 0, 10, 47,
+			14, 69, 13, 148, 18, 85, 48, 89, 140, 48, 34, 13, 89, 0, 16, 70, 12, 243, 15, 52, 34, 65, 49, 13, 55, 129, 65, 71, 144, 0,
+			9, 67, 20, 198, 64, 132, 55, 37, 0, 17, 70, 4, 195, 5, 49, 82, 65, 35, 55, 113, 55, 6, 137, 57, 13, 0, 8, 2, 216, 179,
+			89, 132, 50, 0, 0, 17, 71, 52, 16, 203, 20, 230, 137, 20, 65, 13, 49, 122, 50, 88, 37, 0, 18, 70, 53, 82, 1, 52, 208, 68,
+			109, 111, 104, 97, 109, 109, 97, 100, 0, 29, 9, 2, 216, 178, 88, 122, 57, 50, 0, 13, 3, 95, 107, 111, 107, 6, 35, 50, 81, 40,
+			55, 0, 13, 4, 95, 226, 128, 176, 48, 131, 65, 6, 132, 55, 0, 0, 13, 68, 4, 35, 213, 80, 119, 71, 138, 47, 0, 74, 10, 15,
+			70, 25, 34, 78, 28, 84, 128, 83, 34, 124, 50, 75, 114, 0, 8, 2, 216, 177, 52, 121, 19, 0, 13, 3, 95, 107, 110, 49, 6, 121,
+			50, 119, 72, 13, 0, 11, 3, 95, 100, 118, 47, 6, 121, 50, 119, 0, 12, 2, 95, 125, 34, 140, 47, 71, 34, 141, 89, 0, 0, 11,
+			68, 80, 80, 200, 76, 47, 122, 49, 89, 0, 21, 73, 32, 81, 66, 36, 82, 133, 20, 38, 64, 107, 132, 71, 132, 75, 6, 132, 71, 37,
+			0, 11, 200, 16, 148, 195, 61, 83, 148, 20, 64, 66, 9, 2, 216, 176, 86, 35, 56, 17, 0, 10, 2, 95, 124, 84, 132, 71, 6, 130,
+			0, 0, 13, 69, 5, 66, 5, 57, 48, 35, 87, 113, 50, 88, 0, 12, 69, 60, 97, 133, 73, 48, 126, 83, 114, 88, 0, 15, 69, 32,
+			144, 84, 85, 48, 107, 140, 6, 141, 47, 13, 89, 0, 11, 68, 16, 243, 143, 72, 72, 139, 50, 114, 0, 14, 69, 16, 80, 146, 37, 48,
+			72, 13, 71, 34, 132, 0, 103, 13, 69, 16, 80, 146, 37, 48, 72, 122, 71, 34, 132, 0, 12, 68, 4, 66, 5, 72, 35, 72, 107, 6,
+			145, 0, 8, 197, 36, 35, 84, 81, 48, 13, 9, 2, 218, 175, 81, 35, 12, 83, 0, 0, 12, 68, 66, 36, 133, 104, 48, 122, 34, 122,
+			88, 0, 18, 70, 77, 80, 138, 20, 53, 0, 89, 129, 71, 75, 6, 122, 49, 47, 0, 36, 14, 70, 12, 243, 15, 72, 81, 0, 49, 129,
+			55, 114, 72, 0, 10, 67, 4, 33, 84, 119, 71, 122, 47, 0, 16, 4, 95, 226, 128, 180, 47, 34, 124, 48, 118, 48, 34, 140, 65, 0,
+			0, 10, 67, 16, 148, 195, 72, 124, 89, 49, 0, 12, 68, 12, 243, 69, 80, 49, 126, 65, 113, 47, 0, 11, 5, 95, 48, 97, 110, 100,
+			13, 50, 0, 135, 0, 12, 3, 95, 107, 97, 75, 6, 135, 75, 13, 50, 0, 0, 0, 16, 69, 92, 149, 8, 36, 224, 58, 124, 86, 124,
+			50, 0, 74, 10, 28, 11, 68, 92, 19, 12, 100, 58, 126, 55, 37, 0, 13, 69, 56, 21, 8, 4, 224, 50, 141, 87, 13, 50, 0, 16,
+			70, 48, 84, 207, 80, 131, 192, 55, 13, 89, 6, 137, 47, 137, 0, 11, 67, 4, 160, 88, 141, 75, 35, 49, 89, 0, 10, 2, 216, 186,
+			6, 103, 122, 37, 50, 0, 0, 15, 70, 16, 145, 201, 61, 35, 143, 72, 125, 90, 136, 50, 139, 0, 17, 70, 16, 19, 79, 12, 193, 83,
+			72, 35, 65, 13, 49, 55, 132, 88, 0, 14, 69, 72, 20, 137, 81, 144, 34, 143, 34, 13, 47, 37, 0, 17, 70, 20, 212, 8, 5, 50,
+			83, 122, 65, 83, 13, 89, 124, 89, 0, 46, 18, 70, 4, 224, 76, 101, 49, 83, 35, 50, 13, 55, 140, 88, 125, 88, 0, 36, 17, 70,
+			4, 224, 76, 101, 49, 83, 119, 50, 35, 55, 13, 89, 132, 88, 0, 11, 68, 4, 210, 83, 32, 121, 65, 124, 91, 0, 14, 4, 95, 50,
+			48, 111, 47, 58, 6, 122, 50, 47, 144, 0, 10, 2, 218, 169, 49, 6, 35, 12, 83, 0, 10, 2, 216, 185, 6, 19, 122, 37, 50, 0,
+			0, 12, 67, 16, 245, 206, 4, 72, 138, 50, 0, 46, 10, 19, 71, 72, 241, 18, 36, 117, 69, 76, 34, 126, 72, 34, 6, 132, 81, 122,
+			88, 0, 14, 69, 54, 35, 129, 28, 80, 65, 141, 50, 6, 121, 90, 0, 11, 68, 32, 245, 212, 60, 107, 138, 47, 137, 0, 8, 2, 216,
+			184, 86, 121, 19, 0, 0, 17, 71, 92, 129, 82, 20, 85, 133, 72, 58, 2, 143, 44, 122, 84, 114, 0, 0, 15, 70, 52, 244, 143, 12,
+			51, 192, 65, 13, 34, 126, 49, 139, 0, 11, 68, 88, 81, 199, 100, 84, 122, 75, 124, 0, 7, 2, 217, 190, 48, 35, 0, 0, 18, 72,
+			65, 33, 83, 12, 145, 78, 12, 80, 48, 34, 132, 89, 144, 50, 89, 0, 20, 72, 65, 33, 67, 20, 65, 78, 12, 80, 48, 34, 122, 89,
+			113, 72, 13, 50, 89, 0, 19, 72, 36, 229, 5, 73, 53, 9, 12, 80, 113, 50, 47, 131, 89, 47, 124, 89, 0, 0, 18, 71, 24, 84,
+			142, 4, 225, 5, 76, 83, 114, 50, 121, 50, 72, 122, 89, 0, 12, 69, 16, 20, 146, 100, 192, 72, 35, 34, 118, 0, 19, 71, 21, 84,
+			8, 72, 21, 5, 76, 57, 137, 83, 34, 6, 141, 47, 132, 88, 0, 17, 71, 12, 132, 137, 77, 67, 65, 76, 49, 34, 124, 89, 65, 13,
+			89, 0, 14, 69, 4, 211, 210, 4, 192, 141, 65, 6, 126, 34, 118, 0, 6, 194, 84, 224, 13, 42, 0, 10, 199, 88, 19, 131, 61, 85,
+			133, 72, 66, 10, 67, 60, 33, 89, 139, 71, 6, 141, 0, 10, 199, 13, 84, 8, 60, 193, 5, 72, 18, 0, 20, 68, 80, 129, 82, 20,
+			86, 2, 143, 4, 58, 131, 0, 9, 81, 119, 101, 114, 101, 32, 21, 68, 80, 129, 82, 20, 86, 2, 143, 58, 4, 129, 88, 0, 103, 9,
+			81, 119, 97, 115, 32, 20, 68, 80, 129, 82, 20, 86, 2, 143, 58, 4, 126, 88, 0, 9, 81, 119, 97, 115, 32, 16, 68, 80, 129, 82,
+			20, 86, 143, 71, 6, 132, 0, 81, 98, 101, 32, 17, 68, 80, 129, 82, 20, 86, 143, 6, 124, 88, 0, 49, 81, 105, 115, 32, 18, 68,
+			80, 129, 82, 20, 86, 2, 143, 4, 130, 0, 9, 81, 97, 114, 101, 32, 12, 68, 80, 129, 82, 20, 86, 143, 0, 72, 10, 46, 12, 68,
+			4, 225, 18, 20, 126, 50, 72, 34, 141, 0, 16, 70, 64, 245, 15, 52, 16, 192, 48, 13, 47, 139, 65, 13, 49, 0, 9, 198, 76, 21,
+			9, 72, 144, 192, 17, 17, 70, 64, 243, 9, 80, 144, 192, 48, 126, 55, 13, 47, 124, 49, 0, 47, 16, 70, 52, 81, 5, 88, 16, 192,
+			65, 122, 72, 124, 84, 35, 49, 0, 6, 195, 57, 148, 4, 13, 0, 7, 2, 217, 185, 47, 36, 0, 0, 9, 198, 52, 83, 9, 56, 64,
+			64, 17, 15, 70, 52, 18, 197, 56, 224, 64, 65, 13, 49, 122, 50, 13, 0, 13, 69, 40, 20, 146, 4, 64, 75, 35, 34, 13, 72, 0,
+			16, 70, 9, 34, 65, 56, 224, 64, 71, 34, 124, 6, 35, 50, 13, 0, 15, 70, 44, 19, 142, 4, 64, 64, 49, 121, 50, 13, 72, 13,
+			0, 17, 70, 8, 243, 15, 28, 224, 64, 71, 13, 55, 139, 50, 38, 13, 0, 41, 14, 69, 92, 147, 132, 20, 64, 58, 124, 50, 72, 125,
+			72, 0, 9, 198, 88, 19, 137, 48, 192, 64, 17, 15, 69, 52, 148, 204, 20, 64, 65, 124, 89, 55, 6, 122, 72, 0, 13, 69, 24, 24,
+			1, 16, 80, 83, 13, 89, 121, 72, 0, 15, 70, 8, 243, 15, 28, 224, 64, 71, 13, 55, 139, 50, 37, 0, 0, 9, 67, 52, 21, 73,
+			65, 138, 132, 0, 15, 3, 95, 109, 108, 65, 35, 55, 141, 6, 121, 55, 13, 65, 0, 0, 20, 71, 4, 225, 18, 60, 209, 68, 4, 35,
+			50, 72, 34, 6, 126, 65, 124, 72, 13, 0, 11, 68, 80, 129, 84, 4, 87, 132, 47, 13, 0, 8, 2, 218, 190, 107, 6, 13, 0, 0,
+			9, 67, 72, 134, 83, 34, 132, 89, 0, 10, 67, 4, 211, 211, 141, 65, 126, 89, 0, 12, 3, 95, 111, 114, 133, 34, 6, 37, 35, 12,
+			0, 0, 16, 70, 80, 149, 1, 56, 144, 64, 47, 124, 47, 6, 121, 50, 144, 0, 11, 69, 92, 20, 146, 20, 64, 58, 135, 72, 0, 14,
+			69, 76, 16, 210, 20, 64, 89, 141, 49, 34, 13, 72, 0, 16, 70, 24, 244, 141, 36, 48, 64, 83, 135, 65, 6, 140, 49, 13, 0, 13,
+			3, 95, 104, 121, 130, 65, 6, 132, 50, 144, 50, 0, 0, 11, 68, 12, 242, 5, 56, 49, 139, 13, 50, 0, 10, 67, 56, 20, 193, 50,
+			35, 89, 119, 0, 6, 195, 4, 65, 128, 13, 0, 14, 69, 76, 18, 71, 60, 224, 89, 140, 81, 6, 126, 50, 0, 20, 72, 52, 147, 142,
+			21, 51, 212, 4, 224, 65, 113, 50, 113, 89, 139, 47, 13, 50, 0, 12, 68, 48, 18, 84, 100, 55, 141, 13, 47, 37, 0, 13, 68, 16,
+			82, 84, 100, 72, 132, 13, 108, 37, 0, 103, 12, 68, 16, 82, 84, 100, 72, 141, 13, 47, 37, 0, 17, 70, 12, 20, 143, 85, 49, 76,
+			49, 35, 34, 13, 89, 6, 122, 55, 0, 6, 195, 97, 134, 0, 13, 0, 6, 195, 56, 50, 83, 13, 0, 13, 69, 85, 49, 70, 84, 192,
+			57, 137, 89, 83, 118, 0, 11, 200, 32, 244, 137, 104, 243, 148, 4, 192, 67, 14, 69, 9, 33, 65, 80, 128, 71, 34, 132, 86, 0, 36,
+			47, 13, 69, 9, 33, 65, 80, 128, 71, 34, 122, 87, 0, 47, 11, 4, 95, 35, 51, 50, 89, 48, 141, 89, 0, 0, 23, 6, 116, 104,
+			97, 116, 39, 115, 86, 119, 47, 89, 71, 124, 50, 0, 76, 81, 98, 101, 101, 110, 32, 20, 6, 116, 104, 97, 116, 39, 115, 86, 35, 47,
+			89, 6, 124, 47, 0, 81, 105, 116, 32, 11, 67, 40, 244, 197, 107, 139, 89, 6, 141, 0, 15, 70, 8, 243, 136, 60, 210, 69, 71, 126,
+			50, 13, 65, 132, 0, 0, 14, 69, 69, 88, 130, 20, 48, 49, 58, 113, 71, 122, 49, 0, 14, 69, 61, 33, 71, 60, 224, 126, 34, 113,
+			81, 13, 50, 0, 17, 70, 77, 80, 195, 36, 224, 212, 89, 13, 49, 89, 124, 68, 49, 47, 0, 13, 69, 76, 19, 13, 60, 224, 89, 35,
+			65, 13, 50, 0, 9, 197, 36, 229, 5, 72, 224, 65, 47, 14, 69, 36, 229, 5, 72, 224, 124, 50, 47, 131, 50, 0, 37, 0, 12, 68,
+			28, 241, 84, 32, 81, 139, 13, 87, 0, 76, 11, 67, 52, 249, 20, 65, 139, 6, 122, 47, 0, 9, 198, 76, 17, 9, 77, 66, 67, 17,
+			23, 74, 72, 20, 16, 72, 240, 200, 20, 209, 78, 80, 34, 35, 48, 34, 139, 91, 65, 6, 153, 0, 103, 9, 198, 32, 243, 9, 77, 66,
+			67, 17, 18, 70, 28, 145, 193, 57, 66, 67, 75, 140, 81, 6, 35, 50, 47, 124, 49, 0, 9, 198, 28, 19, 1, 13, 66, 67, 17, 0,
+			12, 69, 72, 16, 200, 20, 192, 34, 141, 76, 118, 0, 12, 69, 92, 148, 146, 4, 192, 58, 124, 34, 118, 0, 13, 68, 84, 225, 15, 76,
+			129, 50, 72, 6, 137, 88, 0, 13, 69, 12, 20, 144, 20, 192, 49, 130, 48, 13, 55, 0, 14, 70, 5, 36, 197, 56, 19, 0, 130, 89,
+			13, 50, 118, 0, 0, 18, 70, 4, 36, 197, 57, 66, 65, 35, 71, 89, 6, 122, 50, 108, 132, 13, 0, 6, 195, 5, 66, 64, 13, 0,
+			15, 70, 77, 69, 82, 28, 148, 192, 89, 47, 131, 75, 124, 89, 0, 15, 70, 28, 83, 135, 32, 148, 192, 75, 122, 68, 81, 124, 89, 0,
+			17, 70, 52, 242, 1, 52, 208, 68, 65, 139, 107, 6, 35, 65, 113, 72, 0, 16, 70, 56, 83, 69, 76, 148, 192, 50, 122, 65, 13, 89,
+			125, 89, 0, 15, 70, 52, 20, 145, 84, 148, 192, 65, 130, 34, 49, 6, 132, 0, 15, 70, 52, 17, 208, 36, 84, 192, 65, 35, 81, 48,
+			140, 88, 0, 0, 15, 70, 16, 18, 77, 48, 84, 128, 72, 140, 65, 55, 114, 0, 103, 0, 12, 68, 16, 21, 137, 76, 72, 141, 84, 124,
+			89, 0, 11, 200, 76, 83, 65, 64, 131, 210, 20, 64, 15, 0, 9, 67, 20, 211, 89, 122, 65, 37, 0, 10, 199, 52, 19, 136, 5, 69,
+			1, 56, 66, 18, 71, 12, 20, 137, 8, 33, 65, 56, 49, 35, 34, 13, 71, 6, 144, 50, 0, 12, 68, 52, 150, 5, 72, 65, 124, 49,
+			89, 114, 0, 17, 71, 12, 245, 82, 80, 84, 193, 56, 49, 136, 47, 125, 88, 13, 50, 0, 11, 68, 12, 243, 15, 72, 49, 129, 55, 114,
+			0, 0, 16, 70, 21, 53, 15, 65, 1, 76, 122, 89, 47, 6, 126, 48, 118, 0, 10, 67, 20, 66, 84, 122, 72, 124, 47, 0, 17, 70,
+			16, 148, 213, 76, 81, 0, 72, 124, 89, 6, 57, 137, 88, 72, 0, 12, 68, 13, 147, 82, 84, 49, 129, 65, 34, 37, 0, 6, 195, 4,
+			194, 84, 17, 0, 0, 5, 194, 97, 144, 13, 12, 3, 95, 104, 105, 107, 6, 124, 50, 72, 37, 0, 0, 12, 68, 48, 241, 201, 56, 55,
+			126, 81, 124, 50, 0, 22, 73, 48, 16, 153, 72, 147, 148, 32, 147, 133, 55, 35, 71, 114, 6, 124, 50, 87, 132, 50, 0, 12, 68, 8,
+			244, 213, 56, 71, 139, 89, 13, 50, 0, 6, 195, 5, 67, 64, 13, 0, 14, 69, 72, 17, 5, 60, 224, 34, 141, 72, 132, 126, 50, 0,
+			13, 69, 4, 97, 200, 4, 224, 35, 83, 81, 35, 50, 0, 15, 71, 52, 244, 133, 12, 19, 66, 20, 65, 136, 49, 13, 65, 0, 13, 68,
+			53, 83, 20, 36, 65, 129, 55, 47, 140, 0, 103, 0, 13, 5, 119, 101, 39, 108, 108, 58, 132, 55, 0, 72, 32, 0, 15, 6, 116, 104,
+			97, 116, 39, 100, 2, 86, 35, 47, 13, 72, 0, 18, 71, 76, 20, 211, 4, 100, 129, 76, 89, 35, 89, 119, 83, 34, 35, 89, 0, 17,
+			70, 76, 16, 143, 80, 85, 82, 89, 35, 71, 13, 47, 6, 151, 0, 105, 16, 70, 76, 16, 143, 80, 85, 82, 89, 35, 71, 13, 47, 6,
+			131, 0, 13, 68, 72, 80, 83, 44, 34, 132, 6, 120, 89, 49, 0, 15, 69, 36, 228, 212, 4, 192, 124, 50, 89, 47, 6, 133, 55, 0,
+			20, 72, 4, 229, 9, 64, 131, 206, 4, 192, 35, 50, 47, 6, 124, 83, 13, 50, 118, 0, 0, 13, 68, 53, 83, 143, 104, 65, 137, 50,
+			57, 139, 88, 0, 23, 74, 48, 145, 67, 33, 65, 78, 77, 65, 73, 56, 55, 124, 101, 47, 13, 50, 89, 47, 140, 50, 0, 10, 199, 28,
+			144, 146, 4, 197, 1, 72, 66, 7, 196, 12, 17, 9, 104, 17, 18, 71, 80, 81, 4, 100, 33, 65, 72, 47, 6, 122, 72, 124, 71, 4,
+			143, 0, 19, 71, 48, 19, 132, 61, 115, 133, 72, 55, 6, 35, 50, 72, 4, 139, 50, 114, 0, 16, 71, 32, 243, 69, 61, 115, 133, 72,
+			107, 139, 65, 139, 50, 114, 0, 12, 68, 8, 148, 207, 56, 71, 140, 89, 13, 50, 0, 0, 23, 73, 56, 85, 198, 61, 83, 132, 48, 19,
+			132, 50, 57, 137, 83, 13, 50, 72, 55, 119, 50, 72, 0, 29, 69, 72, 18, 83, 60, 224, 34, 141, 88, 126, 50, 15, 72, 6, 122, 47,
+			34, 14, 0, 81, 100, 39, 195, 170, 116, 114, 101, 32, 0, 16, 70, 28, 147, 210, 16, 147, 143, 75, 135, 72, 6, 132, 50, 139, 0, 18,
+			72, 12, 243, 147, 12, 145, 78, 12, 80, 49, 126, 50, 91, 13, 50, 89, 0, 12, 201, 8, 240, 82, 16, 209, 77, 8, 84, 128, 65, 0,
+			15, 68, 8, 82, 78, 28, 4, 71, 132, 124, 68, 0, 35, 46, 10, 12, 69, 12, 129, 82, 100, 192, 91, 122, 34, 118, 0, 19, 71, 37,
+			51, 211, 12, 83, 5, 76, 140, 89, 6, 126, 89, 13, 55, 132, 88, 0, 14, 69, 12, 244, 146, 4, 192, 49, 13, 34, 6, 35, 55, 0,
+			14, 69, 12, 20, 148, 20, 192, 49, 130, 47, 6, 122, 55, 0, 11, 68, 4, 114, 78, 28, 141, 75, 124, 68, 0, 0, 10, 199, 92, 130,
+			67, 32, 85, 133, 72, 66, 19, 71, 76, 243, 77, 20, 194, 69, 72, 89, 129, 65, 13, 55, 57, 6, 141, 0, 103, 17, 71, 76, 243, 77,
+			20, 194, 69, 72, 89, 126, 65, 6, 122, 55, 144, 0, 18, 71, 9, 34, 71, 4, 66, 69, 72, 71, 34, 124, 81, 119, 72, 6, 145, 0,
+			8, 67, 5, 52, 192, 35, 89, 0, 0, 16, 70, 93, 147, 205, 36, 225, 192, 58, 140, 6, 139, 65, 124, 68, 0, 11, 68, 80, 18, 15,
+			20, 47, 121, 107, 139, 0, 15, 70, 32, 20, 212, 36, 225, 192, 107, 141, 89, 47, 124, 68, 0, 14, 70, 80, 80, 82, 36, 225, 192, 47,
+			143, 44, 124, 68, 0, 7, 196, 76, 84, 9, 4, 20, 15, 70, 76, 48, 82, 36, 225, 192, 89, 49, 143, 34, 124, 68, 0, 11, 68, 64,
+			244, 211, 20, 48, 126, 89, 37, 0, 11, 68, 32, 245, 83, 20, 107, 138, 88, 0, 36, 10, 68, 28, 81, 83, 20, 81, 132, 89, 0, 15,
+			70, 12, 243, 77, 20, 229, 0, 49, 126, 65, 122, 50, 47, 0, 0, 12, 68, 32, 84, 143, 16, 107, 122, 34, 13, 72, 0, 0, 15, 70,
+			88, 84, 147, 4, 49, 64, 84, 114, 89, 121, 76, 37, 0, 15, 70, 56, 21, 1, 48, 145, 64, 50, 35, 47, 119, 55, 37, 0, 15, 70,
+			12, 19, 132, 4, 49, 64, 49, 35, 50, 72, 124, 89, 0, 15, 70, 92, 20, 212, 4, 113, 64, 58, 141, 89, 47, 113, 75, 0, 15, 70,
+			88, 84, 212, 36, 113, 64, 84, 122, 89, 47, 113, 75, 0, 9, 198, 77, 80, 140, 36, 209, 64, 66, 16, 70, 72, 81, 133, 72, 81, 64,
+			34, 122, 83, 13, 34, 6, 132, 0, 17, 70, 65, 35, 212, 20, 113, 64, 48, 34, 139, 47, 13, 90, 141, 0, 103, 16, 70, 65, 35, 212,
+			20, 113, 64, 48, 34, 126, 47, 13, 90, 141, 0, 15, 70, 65, 33, 83, 4, 113, 64, 48, 34, 122, 89, 124, 75, 0, 15, 70, 64, 244,
+			212, 4, 113, 64, 48, 139, 89, 47, 113, 75, 0, 9, 198, 61, 85, 18, 4, 113, 64, 65, 15, 70, 53, 148, 208, 4, 49, 64, 65, 140,
+			89, 48, 141, 89, 0, 15, 70, 52, 20, 211, 4, 113, 64, 65, 119, 89, 121, 90, 0, 103, 14, 70, 52, 20, 211, 4, 113, 64, 65, 35,
+			89, 121, 90, 0, 15, 70, 12, 244, 147, 4, 113, 64, 49, 135, 89, 6, 121, 90, 0, 15, 70, 12, 243, 12, 4, 113, 64, 49, 126, 55,
+			6, 121, 90, 0, 15, 70, 8, 20, 146, 4, 113, 64, 71, 114, 34, 121, 90, 0, 103, 14, 70, 8, 20, 146, 4, 113, 64, 71, 35, 34,
+			121, 90, 0, 0, 11, 67, 41, 83, 25, 75, 137, 55, 6, 140, 0, 0, 14, 68, 80, 131, 211, 20, 86, 139, 88, 0, 72, 34, 10, 46,
+			14, 71, 56, 145, 84, 105, 48, 200, 20, 50, 132, 76, 37, 0, 15, 70, 48, 82, 80, 104, 145, 192, 55, 140, 48, 89, 124, 81, 0, 20,
+			71, 80, 20, 129, 57, 69, 76, 4, 47, 13, 34, 35, 50, 47, 57, 117, 55, 13, 0, 12, 68, 65, 34, 77, 4, 48, 34, 132, 65, 13,
+			0, 17, 71, 61, 33, 193, 56, 83, 12, 20, 135, 81, 13, 50, 6, 122, 55, 0, 16, 70, 16, 81, 129, 80, 145, 192, 72, 113, 83, 35,
+			47, 124, 81, 0, 15, 70, 12, 243, 77, 20, 225, 0, 49, 13, 65, 122, 50, 72, 0, 12, 68, 12, 195, 211, 20, 49, 55, 139, 88, 0,
+			36, 12, 68, 12, 195, 211, 20, 49, 55, 139, 89, 0, 46, 10, 199, 12, 194, 69, 57, 65, 76, 20, 66, 0, 11, 200, 76, 83, 73, 12,
+			148, 131, 48, 80, 65, 21, 72, 36, 212, 12, 4, 48, 66, 48, 80, 124, 65, 48, 55, 6, 35, 49, 13, 71, 118, 0, 0, 9, 198, 77,
+			84, 193, 56, 225, 64, 66, 14, 70, 52, 144, 200, 20, 193, 64, 65, 113, 91, 122, 55, 0, 15, 70, 76, 80, 84, 80, 193, 64, 89, 132,
+			6, 35, 47, 118, 0, 14, 70, 12, 243, 15, 28, 225, 64, 49, 13, 55, 139, 50, 0, 15, 70, 77, 80, 147, 36, 65, 64, 89, 13, 71,
+			89, 140, 72, 0, 15, 70, 76, 245, 70, 24, 193, 64, 89, 137, 83, 55, 6, 141, 0, 19, 72, 76, 130, 76, 48, 83, 1, 28, 128, 91,
+			4, 113, 55, 6, 141, 55, 13, 0, 15, 70, 76, 84, 85, 36, 225, 64, 89, 132, 49, 58, 113, 50, 0, 9, 198, 61, 85, 12, 36, 225,
+			64, 65, 16, 70, 28, 83, 149, 36, 225, 64, 75, 122, 50, 57, 137, 125, 50, 0, 14, 70, 21, 2, 83, 80, 193, 64, 113, 48, 124, 89,
+			118, 0, 13, 70, 20, 20, 140, 60, 33, 64, 145, 55, 139, 71, 0, 12, 68, 12, 243, 66, 60, 49, 126, 65, 71, 139, 0, 9, 198, 9,
+			34, 71, 4, 65, 64, 66, 14, 70, 5, 3, 211, 80, 193, 64, 119, 48, 126, 89, 118, 0, 16, 70, 4, 225, 77, 60, 225, 64, 119, 50,
+			122, 65, 13, 50, 37, 0, 0, 9, 67, 33, 85, 192, 107, 57, 137, 0, 10, 67, 36, 245, 193, 140, 13, 58, 13, 0, 14, 69, 16, 148,
+			212, 72, 240, 72, 124, 89, 47, 34, 139, 0, 10, 67, 4, 117, 69, 141, 81, 57, 137, 0, 0, 11, 67, 4, 193, 88, 35, 55, 124, 49,
+			89, 0, 0, 18, 71, 36, 229, 5, 72, 209, 78, 80, 113, 50, 47, 131, 65, 13, 50, 47, 0, 10, 67, 16, 18, 83, 72, 141, 124, 89,
+			0, 0, 10, 199, 77, 64, 84, 37, 53, 9, 12, 17, 12, 201, 12, 245, 20, 60, 227, 79, 85, 66, 0, 15, 19, 71, 4, 84, 212, 32,
+			85, 9, 12, 122, 89, 87, 6, 122, 47, 124, 49, 0, 103, 0, 10, 67, 76, 181, 65, 89, 49, 137, 13, 0, 8, 197, 28, 22, 133, 8,
+			240, 17, 0, 13, 69, 44, 145, 82, 4, 224, 49, 144, 34, 13, 50, 0, 19, 70, 36, 225, 9, 72, 80, 212, 124, 50, 72, 114, 34, 6,
+			122, 49, 47, 0, 103, 9, 198, 36, 225, 9, 72, 80, 212, 67, 9, 198, 12, 243, 148, 72, 16, 212, 36, 10, 198, 12, 243, 148, 72, 16,
+			212, 65, 47, 19, 70, 4, 36, 212, 72, 16, 212, 119, 71, 89, 47, 34, 6, 35, 49, 47, 0, 36, 18, 70, 4, 36, 212, 72, 16, 212,
+			35, 71, 89, 47, 34, 35, 49, 47, 0, 46, 0, 11, 68, 40, 243, 129, 32, 75, 139, 50, 13, 0, 11, 68, 16, 147, 129, 32, 72, 140,
+			50, 13, 0, 18, 72, 44, 19, 7, 60, 244, 140, 36, 80, 49, 35, 55, 81, 146, 55, 37, 0, 9, 198, 65, 35, 199, 72, 84, 211, 36,
+			18, 70, 65, 35, 199, 72, 84, 211, 48, 34, 126, 81, 34, 122, 89, 0, 103, 46, 17, 70, 65, 35, 199, 72, 84, 211, 48, 34, 139, 81,
+			34, 122, 89, 0, 46, 19, 70, 40, 19, 1, 64, 83, 143, 107, 121, 55, 13, 48, 6, 141, 50, 38, 139, 0, 18, 70, 5, 48, 133, 77,
+			67, 211, 35, 89, 71, 6, 122, 89, 47, 13, 89, 0, 0, 19, 71, 76, 50, 5, 52, 21, 9, 12, 89, 49, 13, 65, 35, 47, 124, 49,
+			0, 103, 20, 71, 52, 85, 1, 8, 243, 9, 12, 65, 122, 47, 13, 71, 6, 126, 55, 124, 49, 0, 13, 3, 95, 109, 121, 65, 57, 6,
+			121, 50, 65, 130, 0, 14, 3, 95, 115, 105, 89, 6, 124, 68, 107, 13, 55, 13, 0, 0, 11, 200, 24, 244, 133, 76, 128, 68, 61, 112,
+			66, 14, 67, 28, 134, 128, 81, 124, 81, 13, 107, 131, 47, 89, 0, 0, 20, 5, 119, 101, 39, 118, 101, 58, 132, 84, 107, 35, 72, 0,
+			78, 81, 104, 97, 100, 32, 13, 5, 119, 101, 39, 118, 101, 58, 132, 84, 0, 72, 35, 16, 70, 72, 19, 69, 76, 84, 192, 34, 35, 65,
+			13, 89, 132, 88, 0, 14, 70, 80, 129, 82, 52, 244, 192, 87, 131, 65, 13, 89, 0, 19, 70, 21, 128, 213, 76, 84, 192, 122, 49, 89,
+			49, 57, 6, 137, 89, 125, 88, 0, 0, 21, 6, 121, 111, 117, 39, 118, 101, 57, 137, 84, 107, 35, 72, 0, 78, 81, 104, 97, 100, 32,
+			14, 6, 121, 111, 117, 39, 118, 101, 57, 137, 84, 0, 72, 35, 0, 9, 198, 80, 131, 210, 20, 21, 64, 17, 12, 68, 72, 81, 201, 76,
+			34, 132, 75, 113, 89, 0, 15, 69, 72, 240, 149, 77, 64, 34, 139, 71, 6, 129, 89, 47, 0, 12, 68, 64, 84, 149, 76, 48, 13, 34,
+			137, 88, 0, 8, 197, 61, 85, 16, 85, 64, 65, 14, 69, 52, 84, 133, 77, 64, 65, 144, 34, 13, 89, 47, 0, 13, 69, 52, 16, 200,
+			21, 64, 65, 35, 91, 6, 141, 0, 14, 69, 44, 147, 133, 13, 64, 49, 113, 50, 122, 49, 47, 0, 12, 68, 24, 144, 213, 76, 83, 140,
+			49, 13, 89, 0, 8, 197, 21, 132, 15, 73, 64, 36, 9, 197, 21, 132, 15, 73, 64, 65, 47, 11, 68, 4, 194, 65, 76, 141, 55, 144,
+			89, 0, 0, 15, 70, 77, 2, 78, 4, 50, 0, 89, 48, 124, 50, 113, 76, 0, 18, 71, 20, 69, 193, 72, 66, 65, 56, 122, 72, 58,
+			6, 135, 72, 144, 50, 0, 18, 72, 12, 128, 78, 28, 83, 9, 56, 112, 76, 141, 50, 75, 55, 124, 68, 0, 0, 12, 68, 76, 224, 70,
+			84, 89, 50, 35, 83, 137, 0, 0, 11, 68, 64, 147, 143, 80, 48, 132, 50, 139, 0, 0, 14, 70, 76, 147, 194, 33, 195, 128, 91, 13,
+			84, 133, 50, 0, 14, 69, 100, 241, 213, 73, 64, 57, 139, 81, 114, 47, 0, 103, 14, 69, 88, 145, 206, 21, 64, 84, 113, 50, 57, 122,
+			47, 0, 16, 70, 80, 83, 5, 64, 131, 206, 47, 122, 55, 113, 83, 139, 50, 0, 14, 69, 80, 19, 5, 57, 64, 47, 35, 55, 13, 50,
+			47, 0, 12, 69, 76, 244, 130, 21, 64, 89, 135, 71, 141, 0, 12, 68, 48, 20, 211, 60, 55, 35, 89, 139, 0, 103, 12, 68, 48, 20,
+			211, 60, 55, 35, 89, 6, 137, 0, 12, 67, 28, 242, 78, 4, 81, 139, 113, 50, 0, 46, 6, 195, 21, 52, 14, 13, 0, 0, 23, 72,
+			88, 243, 11, 77, 112, 71, 20, 224, 84, 6, 139, 55, 49, 89, 84, 4, 121, 81, 13, 50, 0, 22, 72, 12, 244, 5, 56, 128, 71, 20,
+			224, 49, 139, 48, 13, 50, 107, 6, 141, 81, 13, 50, 0, 22, 72, 72, 84, 21, 80, 21, 9, 60, 224, 34, 122, 48, 57, 137, 47, 6,
+			141, 91, 13, 50, 0, 14, 69, 13, 33, 84, 36, 224, 49, 34, 132, 19, 42, 0, 103, 16, 71, 5, 80, 133, 72, 114, 78, 20, 139, 71,
+			114, 90, 132, 50, 0, 21, 72, 4, 48, 213, 76, 21, 9, 60, 224, 35, 49, 57, 137, 88, 6, 141, 91, 13, 50, 0, 13, 67, 13, 68,
+			140, 49, 13, 50, 47, 34, 139, 55, 0, 9, 3, 95, 108, 111, 55, 6, 138, 0, 0, 9, 198, 4, 67, 204, 64, 133, 83, 17, 13, 4,
+			95, 51, 48, 111, 87, 6, 150, 47, 144, 0, 105, 12, 4, 95, 51, 48, 111, 87, 6, 131, 47, 144, 0, 0, 11, 200, 76, 80, 129, 77,
+			67, 208, 60, 192, 17, 0, 21, 72, 4, 229, 9, 80, 129, 83, 37, 48, 35, 50, 47, 6, 124, 87, 13, 89, 124, 89, 0, 0, 17, 71,
+			44, 148, 139, 12, 19, 4, 100, 49, 150, 49, 6, 126, 72, 37, 0, 0, 10, 67, 4, 211, 203, 119, 65, 126, 49, 0, 0, 13, 69, 28,
+			244, 208, 20, 192, 81, 126, 89, 48, 118, 0, 19, 71, 20, 229, 133, 48, 244, 5, 76, 121, 50, 84, 13, 55, 139, 48, 89, 0, 103, 18,
+			71, 20, 229, 133, 48, 244, 5, 76, 122, 50, 84, 13, 55, 139, 48, 89, 0, 12, 69, 12, 128, 80, 20, 192, 76, 35, 48, 118, 0, 5,
+			194, 96, 192, 13, 12, 3, 95, 116, 97, 47, 6, 35, 65, 113, 55, 0, 0, 16, 70, 65, 33, 78, 80, 144, 197, 48, 34, 122, 50, 108,
+			124, 89, 0, 8, 67, 100, 80, 64, 57, 141, 0, 15, 70, 56, 80, 203, 48, 16, 197, 50, 122, 49, 55, 13, 89, 0, 9, 198, 4, 229,
+			9, 8, 241, 25, 65, 11, 67, 76, 52, 201, 89, 49, 129, 88, 37, 0, 0, 14, 68, 80, 129, 83, 20, 86, 132, 88, 0, 72, 34, 10,
+			46, 10, 198, 80, 244, 141, 20, 229, 0, 66, 36, 9, 198, 80, 244, 141, 20, 229, 0, 65, 14, 70, 76, 129, 66, 4, 225, 192, 91, 125,
+			71, 35, 68, 0, 15, 70, 64, 20, 212, 36, 225, 192, 48, 141, 89, 47, 124, 68, 0, 14, 70, 56, 245, 8, 36, 225, 192, 50, 129, 87,
+			124, 68, 0, 13, 70, 52, 20, 147, 32, 19, 12, 65, 130, 91, 118, 0, 11, 68, 48, 192, 77, 4, 55, 121, 65, 13, 0, 11, 68, 32,
+			84, 143, 20, 107, 144, 34, 139, 0, 0, 0, 15, 70, 92, 80, 144, 4, 113, 64, 58, 122, 71, 48, 141, 75, 0, 14, 70, 76, 51, 213,
+			72, 113, 64, 89, 49, 151, 75, 0, 105, 13, 70, 76, 51, 213, 72, 113, 64, 89, 49, 131, 75, 0, 16, 70, 72, 243, 65, 56, 49, 64,
+			34, 139, 65, 6, 35, 50, 89, 0, 15, 70, 72, 85, 133, 72, 145, 64, 34, 122, 84, 13, 34, 37, 0, 9, 198, 64, 20, 148, 4, 177,
+			64, 66, 15, 70, 61, 97, 82, 4, 113, 64, 139, 84, 13, 44, 141, 75, 0, 9, 198, 61, 85, 3, 60, 209, 64, 65, 14, 70, 56, 80,
+			203, 80, 145, 64, 50, 122, 49, 47, 140, 0, 14, 70, 52, 147, 5, 4, 113, 64, 65, 140, 55, 113, 75, 0, 16, 70, 48, 147, 133, 4,
+			113, 64, 55, 124, 50, 124, 38, 125, 75, 0, 14, 70, 29, 35, 213, 64, 145, 64, 81, 34, 137, 48, 37, 0, 16, 70, 16, 85, 143, 80,
+			81, 64, 72, 122, 84, 139, 47, 6, 132, 0, 14, 70, 12, 243, 12, 20, 113, 64, 49, 126, 55, 113, 75, 0, 15, 70, 12, 20, 18, 36,
+			49, 64, 49, 119, 48, 34, 132, 89, 0, 15, 70, 5, 97, 82, 4, 113, 64, 35, 84, 14, 34, 113, 75, 0, 15, 70, 5, 50, 193, 56,
+			49, 64, 119, 89, 49, 120, 50, 89, 0, 13, 3, 95, 116, 101, 47, 6, 122, 55, 40, 81, 40, 0, 0, 9, 67, 44, 144, 64, 49, 132,
+			119, 0, 6, 195, 12, 144, 64, 13, 0, 12, 68, 52, 20, 137, 4, 65, 119, 34, 132, 13, 0, 11, 68, 12, 148, 131, 20, 89, 131, 89,
+			37, 0, 13, 202, 84, 225, 5, 72, 48, 82, 72, 144, 71, 20, 65, 18, 71, 76, 244, 1, 64, 147, 12, 4, 89, 139, 48, 13, 48, 6,
+			132, 13, 0, 9, 198, 52, 19, 139, 36, 225, 0, 66, 11, 68, 48, 83, 147, 20, 55, 122, 50, 88, 0, 18, 71, 36, 225, 129, 57, 66,
+			76, 20, 124, 50, 83, 13, 50, 47, 140, 55, 0, 19, 71, 33, 148, 5, 72, 35, 204, 20, 107, 140, 48, 6, 131, 71, 13, 55, 37, 0,
+			19, 71, 33, 148, 5, 72, 35, 204, 4, 107, 140, 48, 6, 131, 71, 13, 55, 13, 0, 12, 68, 20, 69, 67, 20, 113, 72, 57, 137, 89,
+			0, 17, 71, 5, 96, 76, 4, 224, 200, 20, 35, 84, 13, 55, 120, 50, 91, 0, 0, 18, 72, 56, 145, 200, 81, 64, 66, 48, 80, 50,
+			140, 19, 47, 141, 71, 118, 0, 0, 9, 198, 80, 83, 147, 36, 193, 64, 16, 14, 70, 52, 148, 211, 36, 193, 64, 65, 124, 89, 118, 0,
+			103, 9, 198, 32, 244, 212, 36, 193, 64, 16, 9, 198, 24, 84, 148, 36, 193, 64, 16, 9, 198, 17, 80, 212, 36, 193, 64, 16, 12, 70,
+			64, 244, 147, 12, 129, 64, 48, 136, 91, 0, 14, 70, 56, 85, 137, 48, 193, 64, 50, 122, 84, 124, 55, 0, 15, 70, 21, 66, 69, 56,
+			225, 64, 122, 47, 124, 6, 122, 50, 0, 13, 70, 12, 129, 65, 16, 193, 64, 76, 132, 72, 118, 0, 15, 70, 104, 84, 16, 60, 193, 64,
+			88, 122, 48, 13, 55, 37, 0, 9, 198, 85, 1, 210, 4, 65, 64, 36, 10, 198, 85, 1, 210, 4, 65, 64, 65, 47, 16, 70, 65, 33,
+			76, 84, 65, 64, 48, 34, 141, 55, 137, 72, 0, 103, 16, 70, 65, 33, 76, 84, 65, 64, 48, 34, 122, 55, 57, 137, 72, 0, 9, 198,
+			64, 19, 129, 12, 129, 64, 17, 20, 67, 52, 18, 78, 65, 6, 141, 50, 89, 47, 34, 4, 132, 47, 0, 81, 115, 116, 32, 10, 67, 16,
+			242, 78, 72, 137, 124, 50, 0, 15, 70, 12, 128, 82, 4, 65, 64, 91, 119, 34, 141, 72, 0, 103, 14, 70, 12, 128, 82, 4, 65, 64,
+			91, 119, 34, 121, 72, 0, 17, 70, 12, 19, 26, 60, 225, 64, 49, 35, 55, 88, 6, 139, 50, 37, 0, 9, 198, 5, 53, 18, 36, 65,
+			64, 17, 0, 12, 68, 48, 80, 78, 56, 55, 132, 6, 35, 50, 0, 6, 195, 76, 17, 64, 13, 0, 14, 69, 45, 148, 135, 101, 160, 49,
+			131, 34, 81, 124, 88, 0, 0, 19, 71, 65, 33, 67, 20, 65, 78, 80, 48, 34, 122, 89, 113, 72, 13, 50, 47, 0, 10, 199, 12, 243,
+			134, 36, 64, 78, 80, 15, 0, 11, 200, 84, 225, 5, 73, 115, 210, 48, 64, 65, 13, 69, 4, 66, 69, 85, 128, 119, 72, 57, 137, 88,
+			0, 0, 0, 0, 0, 0, 9, 67, 92, 146, 64, 58, 132, 12, 0, 21, 72, 16, 145, 76, 20, 53, 18, 36, 48, 72, 147, 55, 6, 122,
+			49, 47, 34, 124, 49, 0, 0, 11, 5, 119, 101, 39, 114, 101, 2, 58, 145, 0, 8, 197, 52, 145, 1, 37, 32, 66, 14, 69, 21, 32,
+			83, 21, 32, 113, 34, 141, 89, 114, 0, 103, 13, 69, 21, 32, 83, 21, 32, 113, 34, 141, 88, 114, 0, 11, 69, 17, 32, 87, 21, 32,
+			72, 34, 135, 0, 9, 67, 12, 243, 208, 49, 137, 48, 0, 13, 69, 12, 195, 211, 21, 32, 49, 55, 139, 89, 114, 0, 0, 13, 6, 121,
+			111, 117, 39, 114, 101, 2, 57, 146, 0, 106, 12, 6, 121, 111, 117, 39, 114, 101, 2, 57, 135, 0, 12, 68, 20, 66, 67, 80, 132, 72,
+			124, 49, 47, 0, 0, 14, 69, 80, 16, 140, 21, 64, 47, 35, 71, 55, 13, 47, 0, 14, 70, 80, 16, 140, 20, 21, 64, 47, 35, 71,
+			55, 139, 0, 13, 69, 77, 84, 133, 77, 64, 91, 146, 13, 89, 47, 0, 12, 69, 76, 16, 200, 21, 64, 89, 35, 91, 141, 0, 15, 69,
+			36, 228, 197, 73, 64, 124, 50, 89, 6, 131, 47, 0, 36, 14, 69, 36, 228, 197, 73, 64, 124, 50, 89, 131, 47, 0, 47, 14, 69, 36,
+			225, 9, 13, 64, 124, 50, 72, 6, 140, 47, 0, 15, 69, 21, 48, 207, 73, 64, 122, 89, 49, 6, 135, 47, 0, 36, 12, 69, 12, 128,
+			76, 21, 64, 91, 35, 55, 141, 0, 12, 69, 12, 16, 200, 21, 64, 49, 35, 91, 141, 0, 14, 69, 8, 197, 69, 77, 64, 71, 55, 137,
+			13, 89, 47, 0, 14, 69, 4, 195, 79, 77, 64, 133, 55, 65, 139, 89, 47, 0, 14, 69, 4, 35, 5, 77, 64, 141, 71, 55, 13, 89,
+			47, 0, 0, 15, 70, 5, 69, 15, 72, 225, 89, 119, 47, 151, 50, 37, 0, 105, 14, 70, 5, 69, 15, 72, 225, 89, 119, 47, 131, 50,
+			37, 0, 0, 12, 69, 72, 20, 9, 21, 32, 34, 141, 48, 145, 0, 13, 69, 33, 84, 211, 5, 32, 107, 129, 88, 6, 130, 0, 12, 69,
+			12, 245, 71, 5, 32, 49, 137, 81, 114, 0, 15, 70, 12, 16, 129, 72, 85, 0, 49, 35, 71, 13, 34, 141, 0, 4, 193, 228, 43, 0,
+			20, 72, 64, 84, 147, 21, 2, 15, 56, 80, 48, 114, 89, 6, 122, 83, 13, 50, 37, 0, 12, 68, 8, 16, 213, 64, 71, 141, 49, 13,
+			48, 0, 16, 71, 92, 82, 18, 52, 16, 200, 80, 84, 143, 65, 35, 101, 47, 0, 17, 72, 76, 16, 195, 32, 20, 137, 56, 80, 89, 35,
+			49, 114, 124, 50, 0, 22, 73, 72, 84, 197, 73, 96, 84, 36, 243, 128, 34, 122, 88, 114, 84, 6, 141, 91, 13, 50, 0, 12, 68, 64,
+			147, 15, 80, 48, 140, 55, 13, 47, 0, 23, 73, 16, 80, 204, 5, 32, 84, 36, 243, 128, 72, 122, 49, 55, 13, 6, 34, 141, 91, 13,
+			50, 0, 18, 72, 12, 243, 12, 5, 32, 143, 56, 80, 49, 126, 55, 114, 71, 139, 50, 0, 0, 15, 70, 13, 66, 21, 48, 133, 64, 49,
+			14, 87, 137, 105, 137, 0, 14, 69, 77, 69, 65, 73, 64, 89, 47, 137, 114, 47, 0, 103, 14, 69, 77, 69, 65, 73, 64, 89, 47, 57,
+			137, 114, 47, 0, 14, 69, 76, 80, 210, 21, 64, 89, 132, 49, 34, 13, 47, 0, 13, 69, 72, 21, 197, 77, 64, 34, 133, 13, 89, 47,
+			0, 14, 69, 65, 84, 137, 77, 64, 48, 57, 146, 124, 89, 47, 0, 14, 69, 64, 21, 5, 57, 64, 48, 35, 19, 42, 47, 0, 103, 15,
+			69, 16, 145, 197, 77, 64, 72, 140, 75, 122, 89, 47, 0, 37, 14, 69, 16, 81, 133, 13, 64, 72, 132, 83, 122, 49, 47, 0, 13, 69,
+			9, 81, 134, 21, 64, 71, 129, 83, 141, 0, 37, 21, 73, 4, 196, 8, 4, 33, 84, 37, 161, 64, 35, 55, 83, 13, 71, 13, 47, 140,
+			88, 0, 14, 69, 4, 69, 133, 73, 64, 119, 72, 84, 131, 47, 0, 36, 14, 69, 4, 65, 9, 13, 64, 35, 72, 124, 49, 47, 0, 47,
+			16, 69, 4, 36, 197, 57, 64, 35, 71, 89, 6, 122, 50, 47, 0, 36, 0, 13, 67, 92, 131, 192, 4, 107, 137, 0, 32, 8, 10, 47,
+			9, 67, 4, 67, 192, 119, 72, 137, 0, 0, 12, 4, 119, 101, 39, 100, 58, 132, 72, 0, 72, 35, 16, 70, 52, 18, 13, 61, 81, 0,
+			65, 35, 101, 65, 6, 137, 72, 0, 11, 199, 12, 132, 137, 77, 66, 78, 20, 103, 66, 16, 71, 12, 21, 8, 21, 34, 78, 20, 49, 35,
+			87, 34, 113, 50, 0, 15, 70, 81, 114, 76, 36, 114, 20, 47, 58, 140, 55, 140, 47, 0, 18, 71, 36, 229, 5, 77, 66, 78, 20, 113,
+			50, 47, 122, 89, 47, 125, 50, 0, 0, 22, 72, 92, 147, 8, 20, 195, 73, 56, 16, 58, 124, 55, 107, 13, 55, 65, 6, 132, 50, 13,
+			0, 18, 70, 76, 20, 129, 40, 85, 143, 89, 35, 34, 119, 57, 6, 141, 84, 139, 0, 24, 73, 92, 244, 139, 77, 64, 84, 36, 243, 128,
+			58, 6, 151, 49, 89, 47, 4, 141, 91, 13, 50, 0, 105, 23, 73, 92, 244, 139, 77, 64, 84, 36, 243, 128, 58, 6, 131, 49, 89, 47,
+			4, 141, 91, 13, 50, 0, 15, 70, 77, 1, 67, 36, 245, 83, 89, 48, 132, 91, 13, 89, 0, 24, 73, 16, 85, 5, 77, 64, 84, 36,
+			243, 128, 72, 124, 47, 4, 122, 89, 47, 6, 141, 91, 13, 50, 0, 23, 73, 12, 243, 148, 72, 20, 20, 36, 243, 128, 49, 13, 50, 47,
+			34, 6, 35, 48, 91, 13, 50, 0, 6, 195, 36, 149, 67, 13, 0, 10, 199, 16, 145, 201, 80, 19, 9, 76, 15, 0, 0, 0, 13, 68,
+			32, 83, 9, 96, 107, 132, 55, 124, 49, 89, 0, 0, 9, 67, 36, 115, 210, 132, 81, 136, 0, 7, 196, 36, 100, 143, 28, 20, 0, 17,
+			69, 32, 21, 137, 56, 112, 4, 107, 35, 84, 124, 68, 0, 10, 35, 46, 10, 67, 77, 86, 153, 89, 137, 88, 37, 0, 15, 70, 48, 21,
+			210, 20, 224, 197, 55, 126, 34, 13, 50, 89, 0, 10, 198, 64, 83, 154, 4, 224, 197, 15, 66, 17, 71, 72, 84, 197, 73, 99, 201, 72,
+			34, 122, 88, 114, 84, 58, 130, 0, 18, 70, 20, 229, 18, 4, 224, 197, 122, 50, 47, 34, 6, 120, 50, 89, 0, 36, 10, 198, 20, 229,
+			18, 4, 224, 197, 65, 47, 15, 70, 12, 243, 77, 20, 224, 197, 49, 13, 65, 122, 50, 89, 0, 0, 12, 68, 80, 147, 4, 20, 47, 124,
+			55, 72, 13, 0, 12, 68, 76, 53, 66, 4, 89, 49, 137, 71, 13, 0, 11, 68, 13, 33, 80, 20, 49, 34, 141, 48, 0, 0, 12, 69,
+			40, 243, 133, 76, 80, 75, 139, 50, 88, 0, 12, 69, 21, 97, 84, 80, 80, 113, 84, 122, 47, 0, 8, 197, 16, 18, 207, 80, 16, 17,
+			16, 69, 8, 241, 207, 80, 16, 71, 139, 81, 13, 47, 6, 121, 0, 103, 15, 69, 8, 241, 207, 80, 16, 71, 126, 81, 13, 47, 6, 121,
+			0, 8, 197, 84, 229, 201, 76, 80, 66, 14, 69, 76, 19, 9, 56, 80, 89, 141, 55, 132, 50, 0, 103, 13, 69, 76, 19, 9, 56, 80,
+			89, 141, 55, 140, 50, 0, 13, 69, 72, 80, 68, 52, 80, 34, 132, 72, 65, 132, 0, 12, 69, 61, 85, 1, 28, 80, 138, 47, 113, 75,
+			0, 13, 69, 36, 229, 1, 44, 80, 124, 50, 108, 141, 49, 0, 8, 197, 28, 19, 15, 72, 80, 17, 16, 69, 25, 84, 143, 72, 80, 83,
+			57, 137, 34, 6, 133, 34, 37, 0, 12, 201, 4, 208, 137, 16, 86, 20, 72, 245, 83, 67, 0, 17, 70, 77, 1, 67, 36, 209, 78, 89,
+			48, 122, 89, 113, 65, 13, 50, 0, 8, 67, 64, 80, 82, 48, 143, 0, 0, 12, 68, 40, 16, 207, 8, 75, 141, 49, 13, 71, 0, 13,
+			69, 52, 147, 137, 56, 112, 65, 140, 50, 124, 68, 0, 16, 70, 18, 37, 5, 57, 65, 64, 72, 141, 47, 6, 126, 50, 47, 0, 14, 69,
+			12, 241, 206, 4, 48, 49, 126, 50, 57, 35, 49, 0, 14, 69, 4, 224, 76, 60, 112, 35, 50, 13, 55, 126, 81, 0, 0, 15, 71, 12,
+			128, 82, 48, 245, 20, 20, 91, 130, 55, 13, 47, 0, 10, 199, 25, 37, 83, 81, 32, 84, 20, 66, 20, 71, 21, 131, 206, 21, 32, 84,
+			20, 122, 81, 88, 6, 126, 50, 13, 34, 141, 47, 0, 7, 196, 21, 130, 76, 20, 65, 17, 71, 21, 66, 81, 84, 85, 20, 20, 122, 47,
+			125, 49, 13, 47, 0, 103, 10, 199, 21, 66, 81, 84, 85, 20, 20, 65, 18, 71, 16, 148, 208, 5, 32, 84, 20, 72, 124, 89, 48, 13,
+			34, 13, 47, 0, 0, 13, 69, 80, 84, 133, 76, 80, 47, 13, 34, 141, 88, 0, 14, 69, 56, 17, 9, 56, 80, 50, 141, 72, 6, 132,
+			50, 0, 13, 69, 52, 20, 131, 36, 16, 65, 130, 91, 13, 0, 103, 13, 69, 16, 83, 137, 76, 80, 72, 13, 50, 132, 89, 0, 11, 69,
+			5, 32, 200, 36, 80, 130, 76, 37, 0, 14, 69, 84, 224, 66, 48, 80, 129, 50, 6, 141, 71, 118, 0, 13, 69, 80, 243, 129, 28, 80,
+			47, 129, 50, 124, 75, 0, 14, 69, 77, 81, 82, 80, 80, 89, 58, 143, 34, 47, 141, 0, 13, 69, 76, 242, 82, 20, 80, 89, 58, 121,
+			34, 141, 0, 14, 69, 52, 148, 129, 28, 80, 65, 114, 34, 121, 90, 0, 103, 13, 69, 52, 148, 129, 28, 80, 65, 124, 34, 121, 90, 0,
+			8, 197, 52, 20, 193, 48, 16, 17, 14, 69, 28, 20, 129, 28, 80, 81, 119, 34, 121, 90, 0, 103, 13, 69, 24, 244, 129, 28, 80, 83,
+			126, 34, 113, 75, 0, 15, 69, 21, 84, 143, 64, 16, 57, 146, 34, 6, 139, 48, 13, 0, 15, 69, 12, 144, 193, 16, 16, 89, 125, 49,
+			141, 72, 13, 0, 103, 9, 67, 8, 20, 211, 71, 141, 89, 0, 13, 69, 5, 32, 66, 48, 80, 35, 34, 119, 71, 118, 0, 0, 9, 67,
+			36, 18, 78, 132, 13, 50, 0, 12, 201, 77, 80, 143, 72, 66, 78, 5, 65, 64, 66, 17, 70, 36, 229, 5, 73, 97, 78, 124, 50, 47,
+			114, 84, 6, 132, 50, 0, 22, 73, 8, 20, 130, 37, 69, 82, 5, 65, 64, 71, 130, 71, 6, 124, 76, 146, 34, 13, 47, 0, 0, 15,
+			69, 80, 243, 65, 80, 240, 47, 13, 65, 141, 47, 139, 0, 103, 16, 70, 60, 36, 212, 4, 51, 5, 126, 71, 89, 47, 13, 49, 118, 0,
+			10, 67, 20, 213, 64, 132, 65, 57, 137, 0, 12, 3, 95, 122, 104, 76, 6, 140, 50, 132, 88, 0, 0, 0, 13, 202, 69, 80, 68, 72,
+			147, 1, 80, 84, 129, 48, 67, 15, 71, 13, 35, 201, 77, 48, 78, 80, 49, 58, 121, 89, 153, 0, 23, 73, 12, 243, 80, 21, 66, 84,
+			36, 243, 128, 49, 126, 65, 48, 13, 47, 6, 124, 91, 13, 50, 0, 13, 68, 12, 19, 9, 96, 49, 141, 55, 124, 49, 89, 0, 0, 16,
+			70, 81, 34, 80, 60, 194, 64, 47, 34, 124, 48, 13, 55, 37, 0, 18, 71, 36, 229, 133, 72, 225, 83, 76, 124, 50, 84, 114, 50, 6,
+			122, 89, 0, 15, 70, 80, 84, 141, 36, 226, 64, 47, 131, 65, 124, 50, 140, 0, 0, 13, 68, 28, 16, 143, 56, 81, 119, 71, 139, 50,
+			0, 103, 12, 68, 28, 16, 143, 56, 81, 35, 71, 126, 50, 0, 12, 68, 64, 17, 193, 56, 48, 141, 81, 13, 50, 0, 0, 18, 8, 115,
+			104, 97, 108, 108, 110, 39, 116, 4, 91, 121, 50, 47, 0, 32, 10, 12, 68, 8, 19, 66, 36, 71, 35, 65, 71, 132, 0, 19, 71, 4,
+			229, 9, 64, 21, 8, 100, 35, 50, 47, 6, 124, 48, 13, 87, 37, 0, 0, 17, 70, 77, 1, 67, 36, 98, 67, 89, 48, 13, 89, 124,
+			83, 124, 49, 0, 20, 71, 76, 147, 131, 21, 33, 83, 80, 89, 124, 50, 89, 6, 144, 34, 13, 89, 47, 0, 0, 20, 72, 5, 35, 83,
+			48, 83, 135, 80, 128, 4, 130, 65, 88, 55, 6, 122, 68, 87, 0, 15, 70, 4, 84, 143, 28, 83, 0, 143, 34, 139, 75, 122, 55, 0,
+			0, 16, 70, 9, 35, 195, 12, 243, 9, 71, 34, 126, 49, 13, 55, 37, 0, 0, 13, 69, 24, 243, 7, 21, 32, 83, 139, 55, 75, 114,
+			0, 12, 69, 16, 85, 15, 85, 32, 72, 132, 108, 146, 0, 15, 6, 95, 114, 111, 109, 97, 110, 34, 139, 65, 13, 50, 10, 0, 0, 13,
+			68, 81, 83, 9, 64, 47, 57, 137, 55, 124, 48, 0, 0, 13, 68, 8, 83, 15, 92, 71, 124, 55, 139, 0, 74, 10, 8, 197, 61, 85,
+			12, 21, 64, 65, 14, 70, 12, 243, 15, 56, 83, 0, 49, 151, 50, 118, 0, 105, 13, 70, 12, 243, 15, 56, 83, 0, 49, 131, 50, 118,
+			0, 13, 69, 12, 128, 82, 37, 64, 76, 35, 34, 124, 47, 0, 0, 11, 68, 12, 243, 143, 72, 49, 126, 50, 114, 0, 9, 67, 4, 214,
+			64, 141, 65, 37, 0, 0, 12, 69, 8, 21, 77, 21, 32, 71, 138, 65, 114, 0, 13, 69, 100, 84, 211, 37, 32, 57, 122, 89, 89, 131,
+			0, 11, 69, 65, 32, 89, 21, 32, 48, 34, 143, 0, 12, 69, 12, 244, 9, 21, 32, 49, 126, 48, 145, 0, 12, 69, 12, 17, 83, 5,
+			32, 89, 132, 88, 114, 0, 10, 67, 8, 84, 212, 71, 122, 89, 47, 0, 0, 20, 72, 48, 149, 5, 72, 21, 21, 72, 80, 55, 124, 47,
+			114, 34, 13, 76, 114, 0, 103, 18, 72, 48, 149, 5, 72, 21, 21, 72, 80, 55, 124, 47, 34, 125, 76, 114, 0, 22, 72, 16, 147, 73,
+			57, 85, 9, 88, 80, 72, 125, 65, 124, 50, 57, 137, 47, 124, 84, 0, 103, 0, 15, 69, 16, 241, 83, 57, 64, 72, 129, 88, 13, 50,
+			47, 0, 32, 14, 3, 95, 116, 105, 47, 113, 71, 6, 122, 47, 13, 50, 0, 0, 12, 68, 16, 85, 137, 56, 72, 122, 84, 124, 50, 0,
+			14, 70, 8, 84, 139, 20, 193, 89, 71, 131, 49, 55, 37, 0, 15, 70, 48, 85, 8, 5, 33, 217, 55, 122, 87, 114, 75, 37, 0, 9,
+			3, 95, 116, 104, 47, 6, 140, 0, 0, 14, 70, 8, 84, 151, 36, 50, 192, 71, 122, 34, 124, 49, 0, 15, 70, 88, 147, 133, 100, 20,
+			132, 84, 124, 50, 57, 114, 72, 0, 14, 70, 76, 129, 80, 32, 84, 132, 91, 122, 48, 114, 72, 0, 10, 199, 76, 83, 73, 9, 33, 86,
+			20, 65, 10, 199, 64, 19, 12, 4, 66, 85, 52, 17, 15, 204, 56, 245, 23, 37, 66, 19, 80, 19, 132, 36, 225, 192, 67, 15, 70, 32,
+			84, 133, 24, 244, 132, 107, 131, 83, 114, 72, 0, 103, 20, 71, 4, 197, 77, 36, 226, 85, 52, 35, 55, 57, 117, 65, 6, 124, 50, 144,
+			65, 0, 6, 195, 4, 68, 204, 13, 0, 6, 18, 66, 108, 0, 114, 0, 7, 6, 18, 67, 105, 0, 121, 0, 7, 6, 18, 68, 97, 0,
+			105, 0, 111, 0, 117, 0, 7, 6, 18, 70, 99, 0, 103, 0, 107, 0, 7, 6, 18, 71, 115, 0, 122, 0, 7, 6, 18, 72, 98, 69,
+			0, 100, 69, 0, 108, 69, 0, 110, 69, 0, 98, 0, 100, 0, 103, 0, 109, 0, 110, 0, 114, 0, 7, 6, 18, 73, 116, 0, 100, 0,
+			115, 0, 122, 0, 110, 0, 120, 0, 7, 6, 18, 75, 103, 114, 97, 112, 104, 0, 115, 99, 111, 112, 0, 108, 111, 103, 0, 109, 101, 116,
+			0, 7, 6, 20, 0, 251, 0, 0, 102, 0, 102, 0, 1, 251, 0, 0, 102, 0, 105, 0, 2, 251, 0, 0, 102, 0, 108, 0, 0, 0,
+			0, 0, 6, 97, 98, 0, 4, 2, 111, 108, 105, 116, 3, 4, 35, 71, 0, 8, 2, 111, 114, 105, 0, 115, 101, 8, 2, 110, 116, 17,
+			67, 3, 4, 35, 71, 89, 13, 0, 101, 114, 8, 2, 21, 3, 4, 35, 71, 114, 0, 2, 117, 108, 97, 114, 3, 6, 35, 71, 0, 4,
+			8, 110, 101, 2, 108, 3, 6, 141, 71, 0, 8, 110, 117, 2, 108, 101, 0, 8, 115, 105, 100, 2, 108, 101, 0, 108, 105, 110, 103, 3,
+			6, 141, 71, 55, 124, 68, 0, 108, 101, 1, 116, 99, 21, 2, 32, 3, 8, 13, 71, 118, 0, 97, 100, 1, 21, 2, 32, 3, 8, 119,
+			71, 35, 72, 0, 1, 17, 67, 2, 105, 108, 105, 116, 12, 3, 13, 71, 0, 105, 108, 105, 116, 121, 1, 10, 2, 14, 128, 139, 135, 3,
+			13, 71, 6, 124, 55, 113, 47, 2, 37, 0, 105, 108, 105, 116, 105, 101, 115, 1, 10, 2, 14, 128, 139, 137, 3, 13, 71, 6, 124, 55,
+			113, 47, 2, 37, 88, 0, 4, 108, 121, 1, 10, 2, 32, 14, 128, 171, 132, 3, 13, 71, 55, 2, 124, 0, 108, 121, 1, 99, 10, 2,
+			32, 14, 128, 168, 132, 0, 108, 121, 1, 110, 105, 109, 2, 32, 0, 4, 108, 101, 1, 10, 2, 32, 14, 128, 139, 132, 3, 13, 71, 118,
+			0, 108, 101, 1, 99, 10, 2, 32, 0, 108, 101, 1, 110, 105, 109, 2, 32, 0, 108, 101, 1, 116, 101, 2, 32, 14, 128, 128, 132, 0,
+			4, 1, 98, 2, 121, 108, 3, 35, 71, 0, 2, 97, 99, 17, 65, 0, 2, 97, 116, 116, 0, 2, 106, 101, 99, 116, 0, 2, 108, 97,
+			116, 105, 118, 0, 2, 110, 101, 103, 0, 2, 114, 111, 103, 0, 2, 114, 117, 99, 0, 2, 115, 99, 101, 0, 2, 115, 101, 105, 0, 2,
+			115, 111, 108, 117, 0, 2, 115, 116, 105, 0, 8, 2, 100, 0, 8, 2, 105, 0, 8, 2, 114, 97, 99, 0, 8, 2, 115, 101, 110, 0,
+			98, 8, 0, 98, 111, 8, 3, 35, 71, 13, 0, 101, 114, 1, 17, 67, 2, 21, 3, 35, 71, 114, 0, 4, 8, 2, 21, 3, 119, 71,
+			0, 8, 2, 100, 117, 99, 0, 8, 2, 105, 100, 101, 0, 8, 2, 114, 97, 0, 98, 8, 2, 114, 101, 118, 0, 111, 118, 101, 8, 2,
+			21, 14, 128, 132, 133, 3, 119, 71, 4, 129, 84, 0, 101, 114, 8, 2, 114, 97, 110, 3, 119, 71, 122, 0, 4, 1, 17, 67, 29, 2,
+			108, 101, 3, 141, 71, 0, 1, 98, 2, 121, 0, 1, 108, 2, 111, 117, 114, 0, 1, 116, 115, 2, 105, 108, 0, 8, 2, 114, 97, 109,
+			0, 8, 108, 2, 105, 0, 108, 121, 3, 141, 71, 55, 124, 0, 101, 114, 8, 115, 2, 21, 3, 141, 71, 114, 0, 4, 101, 108, 8, 3,
+			141, 71, 118, 0, 108, 101, 0, 108, 101, 1, 10, 2, 32, 28, 17, 0, 7, 6, 97, 99, 0, 2, 99, 101, 110, 116, 117, 3, 2, 35,
+			49, 0, 2, 113, 117, 105, 101, 3, 4, 35, 0, 4, 2, 97, 32, 3, 6, 35, 49, 0, 2, 116, 111, 114, 121, 0, 2, 116, 117, 114,
+			101, 0, 2, 117, 108, 97, 114, 0, 99, 105, 2, 32, 3, 6, 121, 76, 37, 0, 2, 114, 117, 109, 32, 3, 6, 141, 49, 0, 104, 105,
+			97, 3, 6, 141, 91, 13, 0, 101, 97, 110, 2, 32, 3, 6, 141, 91, 13, 50, 0, 105, 111, 117, 115, 3, 6, 141, 91, 13, 89, 0,
+			1, 114, 99, 2, 121, 32, 3, 8, 13, 89, 0, 1, 10, 2, 108, 101, 32, 3, 13, 49, 0, 114, 101, 1, 115, 115, 97, 109, 3, 13,
+			49, 114, 0, 4, 1, 10, 2, 121, 32, 3, 13, 89, 0, 1, 102, 2, 105, 108, 105, 116, 0, 1, 108, 112, 2, 101, 98, 0, 8, 108,
+			112, 2, 101, 110, 116, 0, 104, 105, 1, 109, 2, 110, 17, 65, 13, 3, 13, 91, 132, 0, 4, 2, 99, 101, 110, 116, 3, 35, 49, 0,
+			2, 99, 105, 100, 0, 2, 111, 110, 0, 2, 114, 111, 0, 2, 117, 109, 0, 2, 117, 112, 0, 8, 2, 111, 0, 8, 2, 114, 105, 0,
+			8, 2, 116, 0, 99, 2, 111, 108, 0, 104, 2, 114, 111, 109, 0, 107, 8, 0, 97, 2, 100, 101, 109, 3, 35, 49, 13, 0, 114, 111,
+			1, 109, 2, 21, 3, 35, 49, 34, 13, 0, 110, 101, 3, 35, 49, 50, 124, 0, 99, 117, 2, 114, 97, 3, 35, 49, 57, 117, 0, 109,
+			101, 3, 35, 49, 65, 124, 0, 116, 117, 2, 17, 65, 3, 35, 49, 76, 137, 0, 104, 105, 110, 97, 1, 109, 2, 116, 3, 35, 49, 113,
+			50, 141, 0, 4, 2, 101, 114, 98, 3, 35, 89, 0, 2, 105, 100, 32, 0, 4, 101, 8, 2, 116, 3, 35, 89, 124, 0, 101, 8, 109,
+			2, 100, 0, 4, 1, 108, 112, 2, 97, 116, 3, 119, 49, 0, 8, 2, 21, 0, 99, 8, 2, 21, 0, 104, 1, 114, 116, 2, 101, 0,
+			107, 8, 2, 110, 0, 97, 2, 100, 101, 109, 121, 3, 119, 49, 35, 0, 99, 117, 115, 2, 17, 65, 3, 119, 49, 57, 137, 88, 0, 113,
+			117, 8, 3, 119, 49, 58, 0, 99, 8, 2, 101, 3, 119, 49, 89, 0, 4, 99, 111, 117, 2, 116, 3, 119, 49, 137, 0, 111, 117, 2,
+			115, 116, 0, 104, 8, 3, 119, 76, 0, 4, 8, 2, 101, 3, 119, 89, 0, 8, 2, 101, 114, 98, 105, 0, 8, 2, 105, 0, 4, 101,
+			8, 2, 116, 105, 3, 119, 89, 132, 0, 101, 8, 114, 2, 109, 0, 101, 117, 1, 109, 114, 97, 104, 112, 3, 119, 89, 137, 0, 104, 8,
+			98, 3, 121, 49, 0, 4, 104, 101, 114, 1, 98, 2, 32, 3, 121, 49, 114, 0, 104, 101, 114, 1, 109, 2, 32, 0, 104, 1, 98, 2,
+			32, 3, 121, 101, 0, 4, 1, 102, 114, 117, 2, 101, 32, 3, 124, 89, 0, 1, 108, 97, 2, 101, 32, 0, 1, 108, 111, 115, 2, 101,
+			32, 0, 1, 109, 105, 2, 101, 32, 0, 1, 110, 21, 2, 101, 32, 0, 1, 114, 114, 2, 101, 32, 0, 101, 2, 32, 28, 18, 3, 125,
+			89, 0, 104, 1, 121, 2, 116, 3, 126, 0, 4, 1, 118, 2, 97, 3, 141, 49, 0, 2, 111, 114, 110, 0, 5, 3, 8, 108, 112, 2,
+			97, 116, 0, 8, 98, 2, 111, 0, 104, 101, 1, 100, 2, 32, 0, 104, 101, 1, 104, 2, 32, 0, 104, 101, 1, 107, 2, 32, 0, 104,
+			101, 1, 114, 2, 32, 0, 104, 101, 1, 116, 114, 2, 32, 0, 104, 101, 1, 121, 2, 32, 0, 104, 101, 8, 2, 12, 0, 4, 104, 101,
+			115, 1, 100, 2, 32, 3, 141, 49, 89, 0, 104, 101, 115, 1, 104, 2, 32, 0, 104, 101, 115, 1, 107, 2, 32, 0, 104, 101, 115, 1,
+			114, 2, 32, 0, 104, 101, 115, 1, 116, 114, 2, 32, 0, 114, 101, 8, 3, 141, 49, 114, 0, 4, 1, 112, 115, 2, 101, 13, 3, 141,
+			89, 0, 8, 114, 2, 105, 115, 0, 101, 2, 32, 0, 101, 8, 114, 0, 7, 6, 97, 100, 0, 111, 8, 115, 2, 109, 97, 3, 4, 141,
+			72, 139, 0, 1, 115, 117, 114, 99, 3, 6, 141, 72, 0, 1, 108, 97, 109, 2, 121, 3, 13, 72, 0, 105, 111, 8, 114, 2, 21, 14,
+			128, 132, 133, 3, 34, 4, 141, 72, 124, 2, 139, 0, 2, 106, 117, 116, 97, 110, 3, 35, 0, 4, 1, 108, 103, 2, 105, 3, 35, 72,
+			0, 1, 114, 2, 105, 99, 0, 1, 120, 101, 104, 2, 101, 0, 2, 97, 103, 0, 2, 97, 109, 0, 2, 101, 110, 0, 2, 101, 113, 0,
+			2, 106, 117, 110, 99, 116, 32, 0, 2, 109, 97, 110, 32, 0, 2, 109, 105, 110, 32, 0, 2, 109, 105, 114, 97, 0, 2, 111, 108, 0,
+			2, 111, 110, 0, 2, 117, 108, 97, 0, 2, 118, 101, 110, 116, 0, 2, 118, 101, 114, 0, 2, 118, 101, 114, 116, 32, 0, 8, 2, 105,
+			0, 8, 2, 108, 0, 8, 2, 111, 114, 97, 116, 0, 8, 2, 114, 105, 21, 0, 8, 2, 117, 109, 0, 100, 2, 101, 114, 0, 100, 2,
+			105, 116, 105, 118, 0, 100, 8, 0, 100, 8, 2, 108, 0, 101, 1, 108, 2, 115, 104, 3, 35, 72, 6, 122, 0, 111, 2, 108, 101, 115,
+			3, 35, 72, 13, 0, 118, 111, 8, 3, 35, 72, 84, 13, 0, 101, 113, 117, 97, 3, 35, 72, 124, 49, 58, 13, 0, 117, 5, 3, 2,
+			108, 97, 3, 35, 75, 13, 0, 106, 101, 99, 3, 35, 75, 122, 49, 0, 4, 2, 118, 101, 110, 116, 117, 3, 119, 72, 0, 2, 118, 101,
+			114, 116, 0, 8, 2, 21, 0, 8, 114, 116, 2, 105, 116, 0, 100, 8, 2, 101, 110, 100, 0, 100, 8, 2, 105, 99, 116, 0, 100, 8,
+			2, 105, 116, 105, 111, 0, 100, 8, 2, 114, 0, 100, 8, 2, 117, 0, 97, 1, 99, 2, 118, 101, 114, 3, 119, 72, 35, 0, 106, 8,
+			3, 119, 75, 0, 1, 117, 113, 3, 126, 72, 0, 4, 1, 98, 2, 111, 115, 32, 3, 141, 72, 0, 1, 99, 2, 101, 110, 99, 0, 1,
+			108, 2, 101, 110, 0, 1, 108, 2, 121, 0, 1, 110, 114, 111, 116, 0, 1, 114, 99, 2, 108, 0, 1, 115, 2, 105, 115, 0, 2, 105,
+			17, 65, 0, 2, 108, 101, 32, 0, 8, 108, 98, 2, 101, 13, 0, 8, 114, 2, 18, 68, 0, 105, 1, 114, 2, 111, 18, 75, 12, 3,
+			141, 72, 124, 0, 7, 6, 97, 102, 0, 1, 21, 2, 116, 101, 114, 3, 6, 120, 83, 0, 4, 2, 114, 105, 3, 35, 83, 0, 8, 2,
+			103, 0, 102, 2, 97, 98, 0, 102, 2, 101, 114, 0, 102, 2, 108, 117, 0, 114, 111, 8, 3, 35, 83, 34, 139, 0, 4, 2, 101, 97,
+			3, 119, 83, 0, 8, 2, 21, 0, 102, 8, 2, 21, 0, 111, 114, 101, 3, 119, 83, 136, 0, 102, 105, 97, 8, 3, 119, 83, 147, 0,
+			4, 2, 116, 12, 3, 120, 83, 0, 102, 1, 116, 115, 0, 102, 1, 119, 3, 126, 83, 0, 7, 6, 97, 103, 0, 8, 116, 110, 97, 3,
+			6, 35, 81, 0, 117, 97, 2, 32, 3, 6, 35, 81, 57, 137, 13, 0, 105, 111, 2, 32, 3, 6, 121, 75, 124, 139, 0, 2, 97, 32,
+			3, 6, 121, 81, 0, 117, 97, 5, 3, 2, 32, 3, 6, 121, 81, 58, 13, 0, 105, 2, 32, 3, 6, 121, 81, 124, 0, 4, 1, 103,
+			110, 2, 101, 32, 3, 6, 141, 75, 0, 1, 114, 110, 101, 2, 101, 32, 0, 101, 1, 103, 2, 109, 101, 110, 116, 0, 1, 109, 2, 101,
+			110, 116, 97, 3, 13, 75, 0, 1, 10, 2, 111, 110, 32, 3, 13, 81, 0, 4, 8, 108, 102, 2, 101, 108, 3, 35, 75, 0, 8, 114,
+			116, 0, 4, 103, 8, 2, 114, 97, 118, 3, 35, 81, 0, 103, 8, 2, 114, 101, 103, 0, 4, 101, 110, 8, 100, 3, 35, 81, 13, 50,
+			0, 111, 110, 1, 114, 100, 0, 111, 110, 1, 119, 2, 12, 0, 4, 101, 1, 21, 2, 32, 3, 113, 75, 0, 101, 1, 21, 2, 109, 101,
+			110, 116, 0, 101, 1, 112, 112, 2, 32, 0, 101, 114, 1, 21, 2, 32, 14, 128, 128, 129, 3, 114, 0, 101, 114, 115, 1, 21, 2, 32,
+			14, 128, 128, 130, 3, 114, 88, 0, 4, 2, 101, 110, 100, 3, 119, 75, 0, 8, 109, 2, 101, 108, 108, 0, 4, 2, 114, 101, 101, 3,
+			119, 81, 0, 8, 2, 108, 21, 0, 8, 2, 111, 32, 0, 8, 2, 114, 111, 110, 0, 103, 2, 114, 101, 115, 0, 103, 2, 114, 105, 101,
+			118, 0, 103, 8, 2, 21, 0, 104, 2, 32, 3, 121, 81, 0, 101, 110, 1, 104, 10, 2, 32, 3, 121, 81, 13, 50, 0, 4, 1, 116,
+			110, 111, 109, 2, 101, 32, 3, 121, 90, 0, 101, 1, 108, 102, 2, 32, 0, 4, 1, 110, 101, 101, 116, 2, 101, 3, 141, 75, 0, 1,
+			114, 101, 100, 2, 101, 32, 0, 1, 114, 116, 117, 111, 2, 101, 32, 0, 1, 116, 115, 2, 101, 0, 8, 2, 101, 0, 8, 2, 105, 115,
+			0, 101, 1, 21, 2, 32, 28, 17, 0, 101, 1, 99, 2, 32, 0, 101, 1, 99, 98, 0, 101, 1, 99, 100, 0, 101, 1, 112, 17, 67,
+			2, 32, 0, 101, 8, 2, 105, 0, 101, 8, 2, 108, 0, 105, 1, 116, 2, 111, 0, 105, 97, 8, 108, 112, 3, 141, 75, 13, 0, 4,
+			1, 108, 102, 2, 114, 97, 110, 3, 141, 81, 0, 1, 114, 102, 2, 114, 0, 1, 118, 2, 114, 97, 0, 2, 111, 32, 0, 117, 101, 0,
+			7, 6, 97, 105, 0, 4, 1, 21, 2, 17, 67, 97, 32, 3, 6, 141, 0, 1, 116, 110, 101, 2, 108, 0, 1, 116, 114, 117, 99, 2,
+			108, 0, 103, 2, 110, 0, 110, 1, 100, 2, 32, 3, 6, 141, 50, 0, 110, 101, 100, 1, 100, 2, 32, 3, 6, 141, 50, 72, 0, 115,
+			101, 2, 32, 3, 6, 141, 88, 0, 4, 99, 2, 32, 3, 6, 141, 124, 49, 0, 99, 2, 97, 108, 0, 4, 114, 101, 3, 6, 143, 0,
+			114, 101, 1, 21, 2, 32, 0, 4, 1, 108, 108, 105, 118, 3, 13, 0, 1, 116, 102, 0, 1, 116, 105, 114, 98, 0, 1, 116, 114, 117,
+			99, 0, 8, 116, 114, 101, 99, 0, 4, 115, 8, 2, 108, 105, 3, 35, 91, 0, 115, 8, 99, 2, 108, 0, 1, 115, 2, 100, 3, 122,
+			0, 4, 1, 10, 2, 110, 32, 28, 18, 3, 124, 0, 1, 103, 114, 97, 98, 0, 1, 108, 112, 97, 0, 1, 108, 114, 101, 98, 0, 1,
+			116, 110, 117, 111, 0, 1, 116, 112, 0, 1, 114, 116, 114, 111, 112, 2, 116, 3, 125, 0, 4, 2, 32, 3, 140, 0, 2, 105, 0, 8,
+			107, 0, 1, 110, 2, 118, 3, 140, 6, 132, 0, 4, 3, 141, 0, 1, 119, 2, 115, 17, 67, 32, 0, 8, 0, 115, 1, 108, 21, 2,
+			32, 0, 101, 3, 141, 13, 0, 2, 115, 17, 67, 32, 3, 141, 124, 0, 4, 114, 3, 143, 0, 114, 8, 0, 7, 6, 97, 108, 0, 1,
+			109, 2, 110, 111, 3, 2, 35, 55, 0, 108, 121, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 37, 0, 2, 109, 105, 103, 3, 2, 126,
+			55, 0, 8, 2, 114, 3, 2, 133, 55, 0, 2, 105, 116, 121, 3, 6, 35, 55, 0, 100, 101, 2, 104, 121, 3, 6, 35, 55, 72, 124,
+			0, 103, 105, 97, 1, 21, 2, 32, 3, 6, 35, 55, 75, 13, 0, 4, 1, 122, 110, 111, 103, 3, 6, 121, 55, 0, 2, 105, 32, 0,
+			97, 110, 100, 1, 21, 2, 32, 3, 8, 13, 55, 119, 50, 72, 0, 4, 1, 10, 2, 105, 17, 66, 97, 116, 105, 3, 13, 55, 0, 1,
+			10, 2, 105, 17, 66, 101, 0, 1, 10, 2, 105, 115, 17, 67, 105, 99, 0, 1, 10, 2, 111, 117, 115, 32, 0, 1, 115, 2, 117, 116,
+			0, 1, 117, 113, 101, 0, 1, 118, 17, 65, 2, 101, 110, 0, 8, 112, 111, 2, 101, 115, 0, 97, 121, 1, 109, 3, 13, 55, 6, 141,
+			0, 105, 1, 10, 2, 115, 17, 67, 32, 3, 13, 55, 124, 0, 111, 1, 10, 2, 32, 3, 13, 55, 139, 0, 101, 105, 1, 107, 2, 100,
+			3, 13, 55, 140, 0, 4, 5, 3, 1, 99, 2, 102, 3, 35, 0, 5, 3, 1, 104, 2, 102, 0, 5, 3, 1, 104, 2, 118, 0, 4,
+			1, 29, 2, 101, 100, 3, 35, 55, 0, 1, 112, 2, 101, 116, 0, 1, 115, 2, 117, 116, 97, 0, 1, 116, 101, 114, 2, 105, 97, 0,
+			1, 118, 2, 105, 97, 0, 2, 116, 111, 0, 2, 117, 109, 32, 0, 8, 2, 97, 115, 116, 0, 8, 2, 98, 0, 8, 2, 98, 97, 110,
+			105, 0, 8, 2, 99, 0, 8, 2, 103, 0, 8, 2, 105, 0, 8, 2, 107, 0, 8, 2, 112, 0, 8, 2, 115, 0, 8, 2, 118, 0,
+			8, 2, 121, 0, 8, 99, 2, 101, 0, 108, 1, 102, 2, 97, 0, 108, 1, 102, 2, 105, 98, 0, 108, 1, 116, 2, 17, 65, 0, 108,
+			2, 101, 108, 0, 108, 2, 101, 114, 0, 108, 2, 111, 116, 114, 0, 108, 8, 2, 97, 0, 108, 8, 2, 101, 103, 0, 108, 8, 2, 105,
+			0, 108, 8, 2, 111, 0, 108, 8, 17, 67, 2, 111, 119, 0, 108, 111, 8, 2, 99, 97, 3, 35, 55, 13, 0, 101, 110, 8, 118, 2,
+			116, 3, 35, 55, 13, 50, 0, 97, 98, 97, 8, 3, 35, 55, 13, 71, 6, 35, 0, 122, 3, 35, 55, 47, 89, 0, 116, 105, 8, 3,
+			35, 55, 47, 124, 0, 112, 2, 104, 111, 3, 35, 55, 48, 0, 99, 111, 2, 104, 3, 35, 55, 49, 13, 0, 107, 97, 108, 105, 3, 35,
+			55, 49, 13, 55, 140, 0, 98, 101, 114, 8, 2, 116, 17, 65, 3, 35, 55, 71, 6, 131, 0, 103, 111, 8, 2, 114, 3, 35, 55, 81,
+			13, 0, 4, 102, 97, 8, 3, 35, 55, 83, 13, 0, 112, 104, 97, 0, 101, 112, 104, 3, 35, 55, 122, 83, 0, 4, 108, 101, 121, 3,
+			35, 55, 124, 0, 108, 121, 1, 116, 0, 101, 120, 97, 110, 8, 3, 35, 55, 124, 81, 88, 6, 120, 50, 0, 108, 121, 8, 3, 35, 55,
+			140, 0, 4, 108, 121, 1, 99, 97, 2, 32, 3, 55, 2, 37, 0, 108, 121, 1, 99, 105, 21, 21, 2, 32, 14, 128, 128, 132, 0, 4,
+			1, 10, 2, 32, 3, 118, 0, 1, 10, 2, 99, 121, 32, 0, 1, 10, 2, 100, 32, 0, 1, 10, 2, 100, 114, 121, 32, 0, 1, 10,
+			2, 116, 121, 32, 0, 1, 99, 105, 21, 2, 32, 14, 128, 128, 130, 0, 114, 121, 1, 10, 2, 32, 3, 118, 34, 2, 124, 0, 4, 1,
+			104, 2, 117, 99, 105, 110, 3, 119, 55, 0, 2, 111, 110, 103, 0, 5, 3, 8, 116, 115, 2, 97, 17, 67, 17, 67, 105, 0, 5, 8,
+			1, 10, 2, 32, 0, 8, 2, 21, 0, 8, 2, 105, 103, 0, 8, 99, 2, 97, 109, 105, 116, 0, 108, 1, 104, 2, 117, 99, 0, 108,
+			2, 101, 103, 114, 0, 108, 8, 2, 21, 0, 108, 8, 2, 105, 97, 110, 0, 108, 8, 2, 105, 116, 101, 114, 0, 108, 8, 2, 111, 116,
+			0, 108, 8, 2, 111, 119, 0, 108, 101, 2, 103, 101, 3, 119, 55, 122, 0, 101, 110, 99, 8, 118, 2, 105, 3, 119, 55, 122, 50, 91,
+			0, 105, 8, 2, 17, 66, 101, 3, 119, 55, 140, 0, 4, 1, 98, 2, 109, 3, 121, 0, 1, 99, 2, 102, 0, 1, 99, 2, 109, 0,
+			1, 104, 2, 102, 0, 1, 104, 2, 118, 0, 1, 112, 2, 109, 0, 1, 115, 112, 2, 109, 0, 1, 117, 113, 2, 109, 0, 8, 2, 109,
+			115, 0, 4, 1, 116, 115, 2, 105, 110, 3, 121, 55, 0, 1, 116, 117, 98, 2, 32, 0, 4, 1, 102, 2, 107, 3, 126, 55, 0, 1,
 			102, 2, 115, 0, 1, 115, 2, 102, 0, 1, 115, 2, 116, 0, 1, 117, 113, 2, 21, 0, 1, 119, 2, 17, 67, 0, 2, 116, 17, 65,
-			114, 0, 2, 116, 32, 0, 8, 2, 109, 0, 8, 17, 67, 2, 116, 17, 65, 0, 8, 104, 2, 116, 0, 108, 1, 119, 2, 17, 65, 0,
-			108, 1, 119, 2, 97, 0, 108, 1, 119, 2, 101, 116, 0, 115, 111, 3, 124, 55, 89, 136, 0, 4, 1, 98, 2, 109, 3, 126, 0, 1,
-			99, 2, 102, 0, 1, 99, 2, 109, 0, 1, 104, 2, 102, 0, 1, 104, 2, 118, 0, 1, 112, 2, 109, 0, 1, 115, 112, 2, 109, 0,
-			1, 117, 113, 2, 109, 0, 8, 2, 109, 115, 0, 4, 1, 104, 99, 2, 107, 3, 130, 0, 1, 116, 2, 107, 0, 1, 119, 2, 107, 0,
-			4, 1, 98, 2, 100, 12, 3, 130, 55, 0, 1, 98, 2, 107, 0, 1, 116, 115, 2, 119, 0, 1, 116, 115, 110, 105, 2, 32, 0, 8,
-			2, 100, 0, 8, 2, 116, 0, 108, 1, 98, 2, 25, 0, 108, 1, 98, 10, 2, 101, 114, 32, 0, 108, 1, 99, 2, 25, 0, 108, 1,
-			99, 2, 105, 110, 0, 108, 1, 102, 0, 108, 1, 104, 2, 17, 67, 0, 108, 1, 109, 115, 0, 108, 1, 114, 104, 116, 0, 108, 1, 116,
-			0, 108, 1, 116, 2, 101, 0, 108, 1, 116, 115, 0, 108, 1, 119, 0, 108, 2, 32, 0, 108, 8, 2, 17, 67, 21, 14, 128, 132, 131,
-			0, 108, 101, 1, 119, 0, 108, 101, 114, 2, 32, 3, 130, 55, 114, 0, 108, 101, 114, 115, 2, 32, 3, 130, 55, 114, 88, 0, 2, 116,
-			101, 114, 110, 97, 116, 111, 3, 131, 55, 0, 119, 8, 3, 131, 55, 58, 0, 4, 1, 29, 2, 105, 110, 3, 138, 55, 0, 2, 105, 97,
-			0, 2, 105, 101, 110, 0, 8, 99, 115, 2, 17, 65, 0, 8, 104, 2, 111, 0, 101, 2, 32, 0, 101, 2, 104, 0, 7, 6, 97, 109,
-			0, 8, 2, 32, 3, 2, 35, 65, 0, 101, 8, 108, 2, 110, 116, 3, 2, 35, 65, 121, 0, 4, 1, 32, 15, 2, 32, 3, 4, 138,
-			6, 121, 65, 0, 1, 32, 32, 15, 2, 32, 0, 112, 116, 111, 110, 3, 6, 35, 65, 48, 47, 13, 50, 0, 4, 1, 114, 21, 2, 97,
-			32, 3, 6, 126, 65, 0, 2, 105, 32, 0, 101, 1, 115, 17, 65, 2, 32, 3, 6, 126, 65, 121, 0, 1, 103, 10, 2, 111, 117, 115,
-			3, 8, 119, 65, 0, 105, 110, 101, 1, 10, 2, 32, 3, 8, 119, 65, 129, 50, 0, 4, 1, 10, 2, 101, 110, 116, 3, 13, 65, 0,
-			1, 10, 2, 101, 110, 116, 0, 1, 10, 2, 111, 32, 0, 1, 100, 10, 2, 32, 0, 1, 100, 110, 117, 2, 101, 110, 0, 1, 115, 10,
-			2, 32, 0, 5, 35, 1, 104, 10, 2, 32, 24, 0, 101, 1, 10, 2, 110, 116, 97, 3, 13, 65, 6, 121, 0, 4, 1, 99, 2, 101,
-			108, 3, 35, 65, 0, 1, 100, 114, 101, 21, 2, 32, 0, 1, 108, 2, 112, 108, 0, 97, 116, 101, 117, 114, 3, 35, 65, 13, 47, 114,
-			0, 97, 122, 2, 111, 3, 35, 65, 13, 88, 0, 98, 105, 118, 3, 35, 65, 71, 6, 122, 84, 0, 98, 105, 2, 100, 3, 35, 65, 71,
-			122, 0, 112, 104, 105, 98, 3, 35, 65, 83, 6, 122, 71, 0, 105, 108, 1, 102, 3, 35, 65, 122, 55, 0, 4, 2, 117, 115, 101, 3,
-			119, 65, 0, 8, 2, 97, 108, 0, 8, 2, 101, 110, 0, 8, 2, 105, 100, 0, 8, 2, 105, 110, 111, 0, 8, 2, 105, 115, 115, 0,
-			8, 2, 111, 114, 17, 67, 0, 109, 2, 101, 110, 100, 0, 101, 8, 2, 110, 116, 3, 119, 65, 121, 0, 101, 114, 2, 105, 99, 3, 119,
-			65, 121, 34, 0, 4, 101, 2, 110, 97, 98, 3, 119, 65, 129, 0, 101, 8, 2, 108, 0, 105, 2, 103, 0, 111, 101, 98, 3, 119, 65,
-			129, 71, 0, 97, 122, 3, 119, 65, 138, 88, 0, 4, 1, 17, 67, 2, 100, 3, 120, 65, 0, 1, 17, 67, 2, 112, 108, 0, 4, 1,
-			102, 2, 111, 117, 115, 3, 138, 65, 0, 1, 104, 99, 2, 98, 0, 8, 100, 2, 105, 0, 101, 1, 108, 102, 0, 101, 8, 110, 0, 7,
-			6, 97, 110, 0, 8, 114, 116, 2, 115, 3, 2, 35, 50, 0, 115, 102, 101, 114, 1, 114, 116, 3, 2, 35, 50, 89, 83, 128, 0, 116,
-			105, 8, 2, 21, 14, 128, 132, 132, 3, 4, 35, 50, 47, 122, 0, 100, 117, 1, 21, 2, 32, 3, 4, 35, 50, 72, 6, 134, 0, 4,
-			1, 21, 2, 17, 67, 97, 32, 3, 6, 35, 50, 0, 1, 103, 97, 112, 111, 114, 112, 2, 100, 0, 1, 110, 105, 102, 2, 99, 0, 2,
-			103, 117, 108, 0, 2, 122, 97, 0, 100, 111, 2, 32, 3, 6, 35, 50, 72, 136, 0, 97, 1, 21, 2, 32, 3, 6, 126, 50, 13, 0,
-			105, 1, 10, 2, 32, 3, 6, 126, 50, 122, 0, 2, 105, 97, 3, 6, 138, 50, 0, 105, 97, 2, 99, 32, 3, 6, 138, 50, 122, 35,
-			0, 101, 97, 110, 2, 32, 3, 6, 138, 50, 141, 50, 0, 101, 111, 117, 115, 1, 21, 3, 6, 138, 50, 141, 89, 0, 4, 1, 10, 2,
-			32, 3, 13, 50, 0, 1, 10, 2, 99, 101, 32, 0, 1, 10, 2, 99, 121, 0, 1, 10, 2, 101, 115, 101, 0, 1, 10, 2, 105, 101,
-			32, 0, 1, 10, 2, 105, 101, 115, 32, 0, 1, 10, 2, 116, 32, 0, 1, 10, 2, 116, 121, 32, 0, 1, 10, 2, 121, 32, 0, 1,
-			98, 115, 117, 2, 100, 0, 1, 104, 112, 2, 97, 103, 101, 0, 1, 108, 10, 2, 100, 0, 1, 108, 101, 109, 2, 99, 104, 111, 108, 0,
-			1, 108, 108, 2, 32, 0, 1, 109, 10, 2, 32, 0, 1, 109, 114, 101, 112, 0, 1, 109, 117, 104, 2, 32, 0, 1, 114, 21, 21, 2,
-			32, 0, 110, 1, 10, 2, 105, 101, 32, 0, 105, 112, 117, 1, 109, 3, 13, 50, 122, 48, 57, 117, 0, 111, 101, 117, 1, 109, 2, 118,
-			3, 13, 50, 134, 0, 4, 1, 99, 2, 99, 3, 35, 50, 0, 1, 99, 17, 67, 2, 32, 0, 1, 102, 2, 99, 0, 1, 108, 2, 32,
-			0, 1, 108, 10, 2, 100, 105, 0, 1, 108, 112, 2, 116, 32, 0, 1, 108, 121, 2, 100, 0, 1, 109, 2, 32, 0, 1, 110, 2, 99,
-			0, 1, 112, 2, 32, 0, 1, 112, 2, 99, 0, 1, 112, 2, 101, 108, 0, 1, 112, 115, 2, 105, 97, 0, 1, 114, 116, 2, 32, 0,
-			1, 114, 116, 2, 115, 105, 0, 1, 114, 116, 2, 115, 111, 109, 0, 1, 116, 115, 2, 32, 0, 1, 118, 100, 97, 2, 99, 0, 8, 108,
-			2, 105, 97, 0, 8, 119, 2, 103, 0, 8, 119, 2, 107, 0, 110, 97, 8, 3, 35, 50, 13, 0, 116, 8, 2, 105, 113, 12, 3, 35,
-			50, 47, 0, 116, 101, 2, 110, 110, 3, 35, 50, 47, 6, 121, 0, 116, 105, 2, 99, 105, 3, 35, 50, 47, 6, 122, 0, 4, 103, 1,
-			108, 102, 2, 101, 3, 35, 50, 75, 0, 103, 2, 101, 108, 0, 103, 105, 110, 103, 1, 108, 102, 3, 35, 50, 75, 122, 68, 0, 115, 105,
-			115, 1, 114, 116, 3, 35, 50, 88, 6, 122, 89, 0, 101, 8, 2, 115, 3, 35, 50, 122, 0, 103, 1, 104, 2, 101, 114, 3, 35, 68,
-			0, 103, 2, 101, 114, 3, 35, 68, 81, 0, 103, 101, 108, 1, 109, 3, 35, 68, 81, 118, 0, 4, 1, 105, 21, 2, 32, 14, 128, 128,
-			129, 3, 50, 0, 1, 117, 21, 2, 32, 14, 128, 128, 129, 0, 103, 101, 100, 1, 114, 2, 14, 128, 128, 129, 3, 72, 0, 4, 2, 97,
-			108, 111, 103, 3, 119, 50, 0, 2, 97, 116, 104, 0, 5, 8, 1, 10, 2, 32, 0, 5, 8, 1, 10, 2, 99, 101, 32, 0, 5, 8,
-			1, 10, 2, 116, 32, 0, 5, 8, 1, 109, 10, 2, 32, 0, 8, 2, 101, 109, 0, 8, 2, 111, 105, 0, 8, 99, 2, 97, 100, 105,
-			0, 110, 2, 101, 97, 108, 0, 110, 2, 105, 104, 0, 110, 2, 111, 117, 110, 0, 110, 2, 117, 105, 0, 110, 2, 117, 108, 0, 110, 2,
-			117, 110, 0, 110, 8, 2, 111, 121, 0, 105, 97, 1, 122, 3, 119, 50, 6, 141, 0, 111, 109, 8, 3, 119, 50, 124, 65, 0, 101, 8,
-			2, 109, 105, 3, 119, 50, 129, 0, 105, 97, 2, 99, 3, 119, 50, 144, 0, 4, 1, 17, 67, 2, 99, 3, 120, 50, 0, 1, 17, 67,
-			2, 116, 0, 1, 104, 2, 99, 101, 32, 0, 1, 108, 115, 2, 100, 0, 1, 109, 21, 2, 100, 0, 1, 122, 2, 99, 101, 32, 0, 115,
-			119, 2, 101, 114, 3, 120, 50, 89, 0, 121, 8, 3, 121, 50, 113, 0, 4, 1, 119, 2, 116, 32, 3, 124, 50, 0, 8, 117, 113, 0,
-			8, 119, 2, 17, 67, 0, 8, 2, 99, 105, 101, 3, 138, 50, 0, 4, 103, 1, 100, 2, 101, 114, 3, 138, 50, 75, 0, 103, 1, 104,
-			99, 2, 101, 0, 103, 1, 114, 2, 101, 0, 103, 2, 101, 108, 32, 0, 103, 101, 1, 104, 99, 2, 21, 0, 4, 103, 105, 110, 103, 1,
-			104, 99, 3, 138, 50, 75, 122, 68, 0, 103, 105, 110, 103, 1, 114, 0, 7, 6, 97, 112, 0, 104, 1, 114, 103, 10, 2, 121, 3, 8,
-			13, 83, 0, 104, 101, 114, 1, 114, 103, 10, 3, 8, 13, 83, 114, 0, 1, 99, 2, 97, 99, 3, 13, 48, 0, 101, 1, 114, 116, 2,
-			122, 3, 13, 48, 129, 0, 4, 2, 97, 116, 104, 3, 35, 48, 0, 2, 101, 108, 32, 0, 2, 105, 99, 0, 2, 111, 103, 0, 2, 111,
-			108, 105, 0, 8, 2, 115, 0, 8, 2, 116, 0, 112, 2, 97, 114, 97, 0, 112, 2, 101, 116, 105, 0, 112, 2, 108, 101, 0, 112, 2,
-			108, 105, 99, 0, 112, 2, 114, 101, 104, 0, 101, 114, 8, 2, 116, 3, 35, 48, 13, 0, 114, 101, 115, 3, 35, 48, 34, 138, 0, 101,
-			1, 114, 116, 2, 122, 111, 3, 35, 48, 122, 0, 104, 8, 2, 111, 3, 35, 83, 0, 104, 114, 111, 3, 35, 83, 34, 13, 0, 4, 8,
-			2, 21, 3, 119, 48, 0, 112, 2, 101, 97, 114, 0, 112, 2, 108, 105, 99, 97, 98, 0, 112, 8, 2, 21, 0, 112, 114, 101, 99, 8,
-			2, 18, 67, 3, 119, 48, 34, 129, 91, 0, 101, 114, 105, 8, 2, 116, 3, 119, 48, 121, 34, 13, 0, 101, 114, 2, 105, 101, 3, 119,
-			48, 141, 34, 0, 104, 8, 2, 21, 3, 119, 83, 0, 4, 1, 99, 2, 111, 110, 3, 138, 48, 0, 1, 109, 2, 108, 101, 0, 1, 112,
-			2, 101, 114, 0, 1, 116, 115, 2, 108, 0, 2, 105, 97, 0, 2, 105, 115, 0, 2, 114, 111, 0, 8, 2, 101, 0, 8, 2, 114, 105,
-			0, 8, 112, 2, 105, 115, 0, 8, 118, 2, 111, 0, 104, 8, 2, 105, 100, 3, 138, 83, 0, 7, 6, 97, 114, 0, 8, 2, 116, 105,
-			108, 3, 2, 127, 0, 98, 111, 1, 99, 2, 104, 3, 4, 127, 71, 136, 0, 99, 104, 8, 2, 21, 14, 128, 132, 132, 3, 4, 127, 76,
-			0, 5, 3, 1, 21, 2, 105, 111, 32, 3, 6, 35, 34, 0, 105, 108, 121, 1, 21, 2, 32, 3, 6, 121, 34, 13, 55, 2, 122, 0,
-			4, 2, 97, 32, 3, 6, 126, 34, 0, 2, 105, 32, 0, 4, 2, 105, 97, 17, 67, 32, 3, 6, 140, 0, 2, 105, 97, 32, 0, 2,
-			105, 117, 12, 3, 6, 140, 34, 0, 4, 1, 10, 2, 105, 110, 32, 3, 13, 34, 0, 1, 103, 111, 108, 2, 105, 0, 1, 104, 2, 97,
-			115, 115, 0, 1, 109, 2, 105, 0, 1, 109, 2, 105, 110, 0, 8, 116, 97, 107, 0, 121, 1, 10, 2, 32, 3, 13, 34, 2, 37, 0,
-			97, 110, 1, 109, 10, 3, 13, 34, 35, 50, 0, 101, 1, 112, 2, 110, 116, 104, 101, 3, 13, 34, 121, 0, 105, 115, 101, 1, 10, 2,
-			32, 3, 13, 34, 137, 88, 0, 97, 8, 112, 2, 100, 101, 3, 13, 34, 138, 0, 105, 110, 103, 1, 103, 3, 13, 44, 113, 68, 0, 2,
-			114, 3, 35, 0, 4, 1, 21, 2, 105, 116, 121, 3, 35, 34, 0, 1, 99, 2, 101, 101, 114, 0, 1, 99, 2, 105, 0, 1, 104, 99,
-			2, 105, 116, 0, 1, 104, 112, 2, 105, 0, 1, 107, 2, 121, 0, 1, 108, 99, 2, 105, 0, 1, 109, 2, 105, 110, 101, 114, 0, 1,
-			109, 2, 105, 111, 0, 1, 109, 2, 105, 116, 0, 1, 112, 2, 105, 0, 1, 112, 112, 2, 101, 110, 17, 67, 0, 1, 112, 115, 2, 101,
-			110, 17, 67, 0, 2, 97, 0, 2, 101, 110, 0, 2, 105, 99, 0, 2, 111, 0, 8, 2, 17, 65, 0, 8, 98, 2, 18, 67, 116, 0,
-			8, 109, 2, 105, 0, 8, 109, 2, 105, 110, 97, 17, 67, 0, 114, 8, 2, 97, 110, 116, 0, 114, 8, 2, 111, 0, 4, 97, 8, 112,
-			3, 35, 34, 13, 0, 101, 2, 116, 0, 114, 111, 8, 2, 103, 0, 4, 1, 10, 2, 100, 105, 115, 3, 114, 0, 1, 10, 2, 100, 105,
-			122, 0, 1, 10, 2, 100, 121, 32, 0, 1, 100, 10, 2, 32, 0, 1, 100, 10, 2, 100, 32, 0, 1, 103, 10, 2, 32, 0, 1, 103,
-			103, 2, 100, 32, 0, 1, 104, 10, 2, 100, 32, 0, 1, 104, 99, 10, 2, 100, 0, 1, 107, 10, 2, 100, 32, 0, 1, 108, 10, 2,
-			32, 0, 1, 108, 10, 2, 105, 115, 116, 0, 1, 109, 10, 2, 32, 0, 1, 112, 2, 116, 105, 99, 117, 0, 1, 112, 10, 2, 100, 32,
-			0, 1, 116, 10, 2, 32, 0, 1, 116, 115, 10, 2, 100, 32, 0, 1, 119, 2, 100, 0, 1, 119, 10, 2, 100, 32, 0, 1, 122, 10,
-			2, 100, 32, 0, 2, 100, 114, 121, 0, 1, 112, 101, 115, 2, 97, 116, 3, 114, 34, 0, 105, 110, 103, 1, 17, 67, 11, 2, 32, 3,
+			114, 0, 2, 116, 32, 0, 8, 2, 109, 0, 8, 17, 67, 2, 116, 17, 65, 0, 8, 99, 2, 100, 0, 8, 104, 2, 116, 0, 108, 1,
+			119, 2, 17, 65, 12, 0, 108, 1, 119, 2, 97, 0, 115, 111, 3, 126, 55, 89, 139, 0, 4, 1, 104, 99, 2, 107, 3, 133, 0, 1,
+			116, 2, 107, 0, 1, 119, 2, 107, 0, 4, 1, 98, 2, 100, 12, 3, 133, 55, 0, 1, 98, 2, 107, 0, 1, 116, 115, 2, 119, 0,
+			1, 116, 115, 110, 105, 2, 32, 0, 8, 2, 98, 97, 110, 0, 8, 2, 100, 0, 8, 2, 116, 0, 8, 98, 2, 115, 97, 0, 108, 1,
+			98, 2, 25, 0, 108, 1, 98, 10, 2, 101, 114, 32, 0, 108, 1, 99, 2, 25, 0, 108, 1, 99, 2, 105, 110, 0, 108, 1, 102, 0,
+			108, 1, 104, 2, 17, 67, 0, 108, 1, 109, 115, 0, 108, 1, 114, 104, 116, 0, 108, 1, 116, 0, 108, 1, 116, 2, 101, 0, 108, 1,
+			116, 115, 0, 108, 1, 119, 0, 108, 2, 32, 0, 108, 8, 2, 17, 67, 21, 14, 128, 132, 131, 0, 108, 101, 1, 119, 0, 108, 101, 114,
+			2, 32, 3, 133, 55, 114, 0, 108, 101, 114, 115, 2, 32, 3, 133, 55, 114, 88, 0, 2, 116, 101, 114, 110, 97, 116, 111, 3, 134, 55,
+			0, 119, 8, 3, 134, 55, 58, 0, 4, 1, 29, 2, 105, 110, 3, 141, 55, 0, 2, 105, 97, 0, 2, 105, 101, 110, 0, 8, 99, 115,
+			2, 97, 0, 8, 104, 2, 111, 0, 101, 2, 32, 0, 101, 2, 104, 0, 7, 6, 97, 109, 0, 8, 2, 32, 3, 2, 35, 65, 0, 4,
+			1, 32, 15, 2, 32, 3, 4, 141, 6, 122, 65, 0, 1, 32, 32, 15, 2, 32, 0, 112, 116, 111, 110, 3, 6, 35, 65, 48, 47, 13,
+			50, 0, 4, 2, 105, 32, 3, 6, 121, 65, 0, 8, 108, 115, 105, 0, 101, 1, 115, 17, 65, 2, 32, 3, 6, 121, 65, 122, 0, 1,
+			10, 2, 111, 117, 115, 32, 3, 8, 119, 65, 0, 105, 110, 101, 1, 10, 2, 32, 3, 8, 119, 65, 132, 50, 0, 4, 1, 10, 2, 101,
+			110, 116, 3, 13, 65, 0, 1, 10, 2, 101, 110, 116, 0, 1, 10, 2, 111, 32, 0, 1, 100, 10, 2, 32, 0, 1, 100, 110, 117, 2,
+			101, 110, 0, 1, 114, 97, 99, 2, 101, 108, 0, 1, 115, 10, 2, 32, 0, 5, 35, 1, 104, 10, 2, 32, 24, 0, 101, 1, 10, 2,
+			110, 116, 97, 3, 13, 65, 6, 122, 0, 111, 110, 1, 10, 2, 32, 3, 13, 65, 13, 50, 0, 4, 1, 99, 2, 101, 108, 3, 35, 65,
+			0, 1, 99, 2, 101, 114, 111, 0, 1, 100, 114, 101, 21, 2, 32, 0, 1, 108, 2, 112, 108, 0, 97, 116, 101, 117, 114, 3, 35, 65,
+			13, 47, 114, 0, 97, 116, 101, 117, 114, 5, 3, 3, 35, 65, 13, 76, 114, 0, 97, 122, 2, 111, 3, 35, 65, 13, 88, 0, 98, 105,
+			118, 3, 35, 65, 71, 6, 124, 84, 0, 98, 105, 2, 100, 3, 35, 65, 71, 124, 0, 112, 104, 105, 98, 3, 35, 65, 83, 6, 124, 71,
+			0, 105, 108, 1, 102, 3, 35, 65, 124, 55, 0, 4, 2, 117, 115, 101, 3, 119, 65, 0, 8, 2, 97, 108, 0, 8, 2, 101, 110, 0,
+			8, 2, 105, 100, 0, 8, 2, 105, 110, 111, 0, 8, 2, 105, 115, 115, 0, 8, 2, 111, 114, 17, 67, 0, 8, 108, 2, 101, 110, 116,
+			0, 8, 115, 2, 97, 114, 105, 0, 109, 2, 101, 110, 100, 0, 101, 8, 2, 110, 116, 3, 119, 65, 122, 0, 101, 114, 2, 105, 99, 3,
+			119, 65, 122, 34, 0, 4, 101, 2, 110, 97, 98, 3, 119, 65, 132, 0, 101, 8, 2, 108, 0, 105, 2, 103, 0, 111, 101, 98, 3, 119,
+			65, 132, 71, 0, 97, 122, 3, 119, 65, 141, 88, 0, 4, 1, 17, 67, 2, 100, 3, 120, 65, 0, 1, 17, 67, 2, 112, 108, 0, 1,
+			110, 21, 2, 32, 3, 121, 65, 0, 4, 1, 102, 2, 111, 117, 115, 3, 141, 65, 0, 1, 104, 99, 2, 98, 0, 8, 100, 2, 105, 0,
+			101, 1, 108, 102, 0, 101, 8, 110, 0, 101, 8, 114, 102, 0, 7, 6, 97, 110, 0, 8, 114, 116, 2, 115, 3, 2, 35, 50, 0, 115,
+			102, 101, 114, 1, 114, 116, 3, 2, 35, 50, 89, 83, 131, 0, 116, 105, 8, 2, 21, 14, 128, 132, 132, 3, 4, 35, 50, 47, 124, 0,
+			100, 117, 1, 21, 2, 32, 3, 4, 35, 50, 72, 6, 137, 0, 4, 1, 21, 2, 17, 67, 97, 32, 3, 6, 35, 50, 0, 1, 103, 97,
+			112, 111, 114, 112, 2, 100, 0, 1, 110, 105, 102, 2, 99, 0, 2, 103, 117, 108, 0, 2, 116, 104, 114, 111, 112, 121, 0, 2, 122, 97,
+			0, 100, 111, 2, 32, 3, 6, 35, 50, 72, 139, 0, 97, 1, 21, 2, 32, 3, 6, 121, 50, 13, 0, 116, 101, 1, 10, 2, 32, 3,
+			6, 121, 50, 47, 141, 0, 105, 1, 10, 2, 32, 3, 6, 121, 50, 124, 0, 2, 105, 97, 3, 6, 141, 50, 0, 105, 97, 2, 99, 32,
+			3, 6, 141, 50, 124, 35, 0, 101, 97, 110, 2, 32, 3, 6, 141, 50, 144, 50, 0, 101, 111, 117, 115, 1, 21, 3, 6, 141, 50, 144,
+			89, 0, 1, 99, 115, 17, 65, 10, 2, 32, 3, 8, 13, 50, 0, 97, 108, 1, 10, 2, 32, 3, 8, 13, 50, 118, 0, 105, 1, 116,
+			115, 21, 2, 32, 14, 128, 128, 129, 3, 8, 37, 0, 4, 1, 10, 2, 32, 3, 13, 50, 0, 1, 10, 2, 32, 28, 18, 12, 0, 1,
+			10, 2, 99, 101, 32, 0, 1, 10, 2, 99, 121, 0, 1, 10, 2, 101, 115, 101, 0, 1, 10, 2, 105, 101, 32, 0, 1, 10, 2, 105,
+			101, 115, 32, 0, 1, 10, 2, 116, 32, 0, 1, 10, 2, 116, 121, 32, 0, 1, 10, 2, 121, 32, 0, 1, 98, 115, 117, 2, 100, 0,
+			1, 104, 112, 2, 97, 103, 101, 0, 1, 108, 10, 2, 100, 0, 1, 108, 17, 67, 10, 2, 32, 0, 1, 108, 101, 109, 2, 99, 104, 111,
+			108, 0, 1, 109, 10, 2, 32, 0, 1, 109, 114, 101, 112, 0, 1, 109, 117, 104, 2, 32, 0, 1, 114, 21, 21, 2, 32, 0, 1, 118,
+			108, 2, 32, 0, 110, 1, 10, 2, 105, 101, 32, 0, 105, 112, 117, 1, 109, 3, 13, 50, 124, 48, 57, 117, 0, 111, 101, 117, 1, 109,
+			2, 118, 3, 13, 50, 137, 0, 4, 1, 10, 2, 32, 28, 17, 12, 3, 35, 50, 0, 1, 10, 2, 99, 101, 32, 28, 17, 0, 1, 10,
+			2, 116, 32, 28, 17, 0, 1, 99, 2, 99, 0, 1, 99, 17, 67, 2, 32, 0, 1, 102, 2, 99, 0, 1, 108, 2, 32, 0, 1, 108,
+			10, 2, 100, 105, 0, 1, 108, 112, 2, 32, 12, 0, 1, 108, 112, 2, 116, 32, 0, 1, 108, 121, 2, 100, 0, 1, 109, 2, 32, 0,
+			1, 110, 2, 99, 0, 1, 112, 2, 32, 0, 1, 112, 2, 99, 0, 1, 112, 2, 101, 108, 0, 1, 112, 115, 2, 105, 97, 0, 1, 114,
+			116, 2, 32, 0, 1, 114, 116, 2, 115, 105, 0, 1, 114, 116, 2, 115, 111, 109, 0, 1, 116, 115, 21, 21, 2, 32, 0, 1, 118, 2,
+			32, 0, 1, 118, 100, 97, 2, 99, 0, 8, 108, 2, 105, 97, 0, 8, 119, 2, 103, 0, 8, 119, 2, 107, 0, 110, 97, 8, 3, 35,
+			50, 13, 0, 97, 101, 115, 116, 104, 8, 2, 101, 115, 105, 97, 3, 35, 50, 13, 89, 87, 0, 97, 101, 115, 116, 104, 101, 8, 2, 116,
+			105, 99, 3, 35, 50, 13, 89, 87, 6, 122, 0, 116, 8, 2, 105, 113, 12, 3, 35, 50, 47, 0, 116, 101, 2, 110, 110, 3, 35, 50,
+			47, 6, 122, 0, 116, 105, 8, 2, 99, 105, 3, 35, 50, 47, 6, 124, 0, 4, 103, 1, 108, 102, 2, 101, 3, 35, 50, 75, 0, 103,
+			2, 101, 108, 0, 103, 105, 110, 103, 1, 108, 102, 3, 35, 50, 75, 124, 68, 0, 115, 105, 115, 1, 114, 116, 3, 35, 50, 88, 6, 124,
+			89, 0, 4, 101, 8, 2, 115, 3, 35, 50, 124, 0, 105, 8, 0, 101, 99, 100, 111, 8, 3, 35, 50, 124, 49, 72, 139, 0, 105, 8,
+			2, 111, 110, 3, 35, 50, 140, 0, 103, 1, 104, 2, 101, 114, 3, 35, 68, 0, 103, 2, 101, 114, 3, 35, 68, 81, 0, 103, 101, 108,
+			1, 109, 3, 35, 68, 81, 118, 0, 4, 1, 105, 21, 2, 32, 14, 128, 128, 129, 3, 50, 0, 1, 117, 21, 2, 32, 14, 128, 128, 129,
+			0, 103, 101, 100, 1, 114, 2, 14, 128, 128, 129, 3, 72, 0, 4, 2, 97, 108, 111, 103, 3, 119, 50, 0, 2, 97, 116, 104, 0, 5,
+			8, 1, 10, 2, 32, 0, 5, 8, 1, 10, 2, 99, 101, 32, 0, 5, 8, 1, 10, 2, 116, 32, 0, 5, 8, 1, 109, 10, 2, 32,
+			0, 8, 2, 97, 101, 109, 0, 8, 2, 101, 109, 0, 8, 2, 111, 105, 0, 8, 99, 2, 97, 100, 105, 0, 8, 102, 2, 97, 116, 0,
+			110, 2, 101, 97, 108, 0, 110, 2, 105, 104, 0, 110, 2, 111, 117, 110, 0, 110, 2, 117, 105, 0, 110, 2, 117, 108, 0, 110, 2, 117,
+			110, 0, 110, 8, 2, 111, 121, 0, 105, 97, 1, 122, 3, 119, 50, 6, 144, 0, 97, 101, 115, 116, 104, 101, 5, 3, 8, 3, 119, 50,
+			122, 89, 87, 13, 0, 111, 110, 121, 8, 2, 109, 3, 119, 50, 126, 50, 13, 0, 111, 109, 8, 3, 119, 50, 126, 65, 0, 101, 8, 2,
+			109, 105, 3, 119, 50, 132, 0, 97, 101, 115, 116, 104, 101, 8, 3, 119, 50, 132, 89, 87, 13, 0, 105, 97, 2, 99, 3, 119, 50, 147,
+			0, 4, 1, 17, 67, 2, 99, 3, 120, 50, 0, 1, 17, 67, 2, 116, 0, 1, 104, 2, 99, 101, 32, 0, 1, 109, 21, 2, 100, 0,
+			8, 108, 115, 2, 100, 0, 115, 119, 2, 101, 114, 3, 120, 50, 89, 0, 5, 3, 1, 10, 2, 116, 32, 28, 17, 3, 121, 50, 0, 121,
+			8, 3, 122, 50, 113, 0, 4, 1, 119, 2, 116, 32, 3, 126, 50, 0, 8, 117, 113, 0, 8, 119, 2, 17, 67, 0, 8, 2, 99, 105,
+			101, 3, 141, 50, 0, 4, 103, 1, 100, 2, 101, 114, 3, 141, 50, 75, 0, 103, 1, 104, 99, 2, 101, 0, 103, 1, 114, 2, 101, 0,
+			103, 2, 101, 108, 32, 0, 103, 101, 1, 104, 99, 2, 21, 0, 103, 101, 108, 8, 2, 25, 3, 141, 50, 75, 118, 0, 4, 103, 105, 110,
+			103, 1, 104, 99, 3, 141, 50, 75, 124, 68, 0, 103, 105, 110, 103, 1, 114, 0, 7, 6, 97, 112, 0, 104, 1, 114, 103, 10, 2, 121,
+			3, 8, 13, 83, 0, 104, 101, 114, 1, 114, 103, 10, 3, 8, 13, 83, 114, 0, 4, 1, 10, 2, 121, 32, 3, 13, 48, 0, 1, 99,
+			2, 97, 99, 0, 101, 1, 114, 116, 2, 122, 3, 13, 48, 132, 0, 104, 8, 114, 101, 115, 3, 13, 83, 0, 4, 2, 97, 116, 104, 3,
+			35, 48, 0, 2, 101, 108, 32, 0, 2, 105, 99, 0, 2, 111, 103, 0, 2, 111, 108, 105, 0, 8, 2, 111, 112, 108, 0, 8, 2, 115,
+			0, 8, 2, 116, 0, 112, 2, 101, 116, 105, 0, 112, 2, 108, 101, 0, 112, 2, 108, 105, 99, 0, 112, 2, 114, 101, 104, 0, 112, 8,
+			2, 17, 67, 0, 4, 101, 114, 8, 2, 116, 3, 35, 48, 13, 0, 112, 97, 8, 2, 114, 0, 114, 101, 115, 3, 35, 48, 34, 141, 0,
+			101, 1, 114, 116, 2, 122, 111, 3, 35, 48, 124, 0, 104, 8, 2, 111, 3, 35, 83, 0, 104, 114, 111, 3, 35, 83, 34, 13, 0, 4,
+			8, 2, 21, 3, 119, 48, 0, 8, 99, 2, 105, 116, 117, 108, 0, 112, 2, 101, 97, 114, 0, 112, 8, 2, 17, 65, 0, 112, 8, 2,
+			18, 66, 0, 112, 114, 101, 99, 8, 2, 18, 67, 3, 119, 48, 34, 132, 91, 0, 112, 97, 8, 2, 114, 101, 110, 3, 119, 48, 35, 0,
+			112, 108, 105, 99, 97, 98, 3, 119, 48, 55, 124, 49, 13, 71, 0, 101, 114, 2, 105, 101, 3, 119, 48, 144, 34, 0, 104, 8, 2, 21,
+			3, 119, 83, 0, 97, 114, 97, 122, 122, 1, 112, 3, 121, 48, 114, 34, 6, 121, 47, 89, 0, 4, 1, 99, 2, 111, 110, 3, 141, 48,
+			0, 1, 109, 2, 108, 101, 0, 1, 112, 2, 101, 114, 0, 1, 116, 115, 2, 108, 0, 2, 105, 97, 0, 2, 105, 115, 0, 2, 114, 111,
+			0, 8, 2, 101, 0, 8, 2, 114, 105, 0, 8, 112, 2, 105, 115, 0, 8, 118, 2, 111, 0, 104, 8, 2, 105, 100, 3, 141, 83, 0,
+			7, 6, 97, 114, 0, 4, 8, 2, 116, 105, 99, 117, 3, 2, 130, 0, 8, 2, 116, 105, 108, 0, 98, 111, 1, 99, 2, 104, 3, 4,
+			130, 71, 139, 0, 99, 104, 8, 2, 21, 14, 128, 132, 132, 3, 4, 130, 76, 0, 5, 3, 1, 21, 2, 105, 111, 32, 3, 6, 35, 34,
+			0, 105, 108, 121, 1, 21, 2, 32, 3, 6, 122, 34, 13, 55, 2, 124, 0, 1, 116, 105, 117, 103, 3, 6, 130, 0, 4, 2, 97, 32,
+			3, 6, 130, 34, 0, 2, 105, 32, 0, 101, 1, 122, 2, 32, 3, 6, 130, 34, 141, 0, 4, 2, 105, 97, 17, 66, 32, 3, 6, 143,
+			0, 2, 105, 97, 32, 0, 2, 105, 117, 12, 3, 6, 143, 34, 0, 105, 108, 121, 5, 3, 1, 21, 2, 32, 3, 6, 143, 34, 13, 55,
+			2, 124, 0, 101, 97, 3, 6, 143, 34, 144, 0, 1, 110, 117, 108, 2, 32, 3, 8, 114, 0, 4, 1, 10, 2, 105, 18, 71, 97, 116,
+			105, 111, 110, 3, 13, 34, 0, 1, 10, 2, 105, 110, 32, 0, 1, 21, 2, 111, 108, 0, 1, 29, 2, 28, 19, 12, 12, 12, 12, 12,
+			0, 1, 99, 2, 101, 101, 114, 0, 1, 103, 111, 108, 2, 105, 0, 1, 104, 2, 97, 115, 115, 0, 1, 109, 2, 105, 0, 1, 109, 2,
+			105, 110, 0, 2, 101, 122, 32, 0, 8, 116, 97, 107, 2, 21, 0, 121, 1, 10, 2, 32, 3, 13, 34, 2, 37, 0, 97, 110, 1, 109,
+			10, 3, 13, 34, 35, 50, 0, 101, 1, 112, 2, 110, 116, 104, 101, 3, 13, 34, 122, 0, 4, 105, 115, 101, 1, 10, 2, 32, 3, 13,
+			34, 140, 88, 0, 105, 122, 101, 1, 10, 2, 32, 0, 97, 8, 112, 2, 100, 101, 3, 13, 34, 141, 0, 105, 110, 103, 1, 103, 3, 13,
+			44, 113, 68, 0, 2, 114, 3, 35, 0, 4, 1, 21, 2, 105, 116, 121, 3, 35, 34, 0, 1, 99, 2, 105, 0, 1, 104, 99, 2, 105,
+			116, 0, 1, 104, 112, 2, 105, 0, 1, 107, 2, 121, 0, 1, 108, 99, 2, 105, 0, 1, 109, 2, 105, 110, 101, 114, 0, 1, 109, 2,
+			105, 111, 0, 1, 109, 2, 105, 116, 0, 1, 112, 2, 105, 0, 1, 112, 112, 2, 101, 110, 17, 67, 0, 1, 112, 115, 110, 2, 101, 110,
+			17, 67, 0, 2, 97, 0, 2, 101, 110, 0, 2, 101, 116, 0, 2, 105, 99, 0, 2, 111, 0, 8, 2, 17, 65, 0, 8, 98, 2, 18,
+			67, 116, 0, 8, 108, 2, 121, 110, 0, 8, 109, 2, 105, 0, 8, 109, 2, 105, 110, 97, 17, 67, 0, 114, 8, 2, 97, 110, 116, 0,
+			114, 8, 2, 111, 0, 4, 97, 8, 112, 3, 35, 34, 13, 0, 114, 111, 8, 2, 103, 0, 4, 1, 10, 2, 32, 28, 18, 3, 114, 0,
+			1, 10, 2, 100, 32, 28, 18, 0, 1, 10, 2, 100, 105, 115, 0, 1, 10, 2, 100, 105, 122, 0, 1, 10, 2, 100, 121, 32, 0, 1,
+			17, 67, 11, 2, 100, 32, 0, 1, 100, 10, 2, 32, 0, 1, 100, 10, 2, 100, 32, 0, 1, 100, 110, 101, 108, 97, 99, 0, 1, 103,
+			10, 2, 32, 0, 1, 104, 10, 2, 100, 32, 0, 1, 104, 99, 10, 2, 100, 0, 1, 107, 10, 2, 100, 32, 0, 1, 108, 10, 2, 32,
+			0, 1, 108, 10, 2, 105, 115, 116, 0, 1, 109, 10, 2, 32, 0, 1, 110, 114, 101, 98, 2, 100, 0, 1, 112, 2, 116, 105, 99, 117,
+			0, 1, 112, 10, 2, 100, 32, 0, 1, 116, 10, 2, 32, 0, 1, 116, 115, 10, 2, 100, 32, 0, 1, 119, 2, 100, 0, 1, 119, 10,
+			2, 100, 32, 0, 1, 122, 10, 2, 100, 32, 0, 2, 100, 114, 121, 0, 101, 2, 17, 67, 11, 17, 65, 32, 3, 114, 6, 122, 0, 1,
+			112, 101, 115, 2, 97, 116, 3, 114, 34, 0, 1, 103, 114, 97, 109, 2, 17, 65, 116, 17, 65, 32, 3, 114, 34, 6, 0, 97, 8, 112,
+			101, 115, 2, 98, 3, 114, 34, 13, 0, 121, 101, 1, 10, 2, 32, 3, 114, 34, 37, 0, 105, 110, 103, 1, 17, 67, 11, 2, 32, 3,
 			114, 34, 113, 68, 0, 4, 99, 104, 1, 110, 97, 3, 114, 49, 0, 99, 104, 1, 110, 111, 109, 0, 101, 100, 1, 17, 67, 11, 2, 32,
-			3, 114, 72, 0, 4, 8, 2, 111, 115, 3, 119, 34, 0, 8, 2, 111, 117, 0, 114, 8, 2, 21, 0, 97, 99, 104, 8, 3, 119, 34,
-			35, 49, 0, 111, 109, 2, 97, 116, 3, 119, 34, 136, 65, 0, 121, 5, 3, 1, 110, 111, 105, 2, 32, 3, 121, 34, 2, 37, 0, 4,
-			1, 117, 113, 2, 114, 3, 124, 0, 1, 119, 2, 114, 0, 1, 119, 2, 114, 0, 4, 1, 117, 113, 2, 97, 3, 124, 34, 0, 119, 1,
-			119, 2, 105, 0, 2, 17, 65, 3, 126, 34, 0, 4, 3, 127, 0, 1, 104, 2, 100, 121, 32, 0, 1, 116, 105, 117, 103, 2, 32, 0,
-			1, 116, 111, 101, 2, 100, 32, 0, 1, 116, 115, 2, 32, 0, 2, 32, 0, 8, 116, 2, 32, 0, 39, 2, 110, 116, 0, 114, 2, 32,
-			0, 114, 101, 2, 32, 0, 4, 99, 104, 1, 21, 2, 105, 3, 127, 49, 0, 99, 104, 1, 21, 2, 121, 0, 99, 104, 8, 2, 17, 65,
-			17, 65, 0, 99, 104, 8, 2, 101, 116, 0, 99, 104, 97, 105, 8, 3, 127, 49, 6, 138, 122, 0, 99, 104, 105, 8, 2, 21, 3, 127,
-			49, 122, 0, 99, 104, 105, 118, 8, 2, 12, 3, 127, 49, 137, 84, 0, 108, 105, 97, 8, 112, 3, 127, 55, 13, 0, 114, 101, 100, 2,
-			32, 3, 127, 72, 0, 99, 104, 8, 2, 101, 114, 3, 127, 76, 0, 114, 105, 110, 103, 2, 32, 3, 127, 113, 68, 0, 4, 1, 104, 119,
-			3, 132, 0, 1, 117, 113, 2, 116, 0, 1, 119, 0, 1, 119, 97, 2, 100, 0, 1, 119, 101, 114, 2, 100, 0, 1, 119, 104, 99, 2,
-			100, 0, 1, 119, 115, 2, 100, 0, 8, 119, 2, 100, 0, 1, 119, 111, 116, 2, 100, 3, 133, 0, 4, 1, 109, 116, 104, 3, 140, 0,
-			1, 112, 2, 105, 110, 0, 1, 119, 2, 105, 0, 1, 119, 2, 121, 0, 2, 105, 111, 117, 115, 0, 8, 109, 2, 121, 0, 101, 0, 101,
-			1, 99, 2, 17, 67, 21, 0, 101, 1, 119, 0, 4, 1, 112, 2, 101, 110, 116, 3, 140, 34, 0, 1, 117, 2, 105, 115, 104, 0, 1,
-			118, 2, 105, 17, 65, 0, 121, 1, 17, 67, 29, 2, 32, 3, 140, 34, 2, 37, 0, 101, 115, 116, 2, 32, 3, 140, 34, 13, 89, 47,
-			0, 4, 121, 5, 3, 1, 17, 65, 21, 21, 2, 32, 3, 140, 34, 37, 0, 121, 5, 3, 1, 17, 67, 17, 65, 21, 21, 2, 32, 0,
-			101, 97, 3, 140, 34, 141, 0, 105, 110, 103, 3, 140, 44, 113, 68, 0, 7, 6, 97, 115, 0, 2, 101, 120, 117, 3, 2, 138, 89, 0,
-			2, 105, 118, 101, 3, 6, 138, 89, 0, 4, 115, 1, 99, 10, 2, 32, 3, 13, 89, 0, 115, 1, 108, 116, 10, 2, 32, 0, 115, 1,
-			112, 109, 111, 2, 32, 0, 115, 1, 112, 115, 10, 2, 32, 0, 115, 1, 114, 114, 0, 115, 1, 118, 10, 2, 32, 0, 115, 1, 118, 10,
-			2, 32, 0, 4, 101, 121, 1, 10, 2, 32, 3, 13, 89, 2, 37, 0, 121, 1, 10, 2, 32, 0, 115, 2, 117, 3, 13, 91, 0, 115,
-			117, 114, 3, 13, 91, 57, 143, 0, 1, 98, 2, 105, 108, 3, 35, 88, 0, 4, 1, 109, 2, 111, 110, 105, 3, 35, 89, 0, 1, 116,
-			110, 2, 116, 0, 2, 112, 104, 97, 0, 2, 112, 105, 0, 2, 116, 104, 109, 0, 2, 116, 114, 97, 108, 0, 2, 116, 114, 111, 0, 2,
-			121, 109, 112, 0, 8, 2, 101, 0, 8, 2, 105, 110, 0, 8, 2, 112, 101, 0, 115, 1, 108, 99, 2, 105, 17, 67, 0, 115, 1, 112,
-			2, 111, 0, 115, 2, 97, 103, 0, 115, 2, 101, 116, 0, 115, 2, 111, 110, 0, 115, 2, 121, 109, 0, 115, 8, 2, 104, 0, 99, 105,
-			105, 3, 35, 89, 49, 122, 0, 104, 8, 3, 35, 91, 0, 115, 105, 111, 110, 1, 112, 3, 35, 91, 13, 50, 0, 99, 105, 1, 102, 2,
-			115, 3, 35, 91, 122, 0, 2, 115, 105, 115, 116, 3, 119, 0, 4, 1, 10, 2, 116, 121, 32, 3, 119, 89, 0, 2, 116, 101, 114, 110,
-			0, 2, 116, 114, 111, 108, 111, 103, 0, 2, 116, 114, 111, 110, 111, 0, 8, 2, 21, 0, 8, 2, 112, 101, 114, 0, 8, 2, 112, 105,
-			114, 101, 0, 115, 2, 117, 109, 112, 0, 115, 8, 2, 21, 0, 4, 104, 8, 2, 97, 3, 119, 91, 0, 104, 8, 2, 111, 0, 4, 1,
-			17, 67, 2, 112, 3, 120, 89, 0, 1, 17, 67, 2, 112, 101, 0, 1, 17, 67, 2, 116, 0, 2, 107, 0, 2, 116, 101, 114, 0, 8,
-			2, 107, 0, 115, 1, 108, 17, 67, 0, 115, 1, 112, 0, 115, 1, 114, 17, 67, 0, 1, 104, 99, 114, 117, 112, 2, 101, 3, 122, 89,
-			0, 1, 119, 2, 112, 3, 124, 89, 0, 4, 101, 1, 104, 112, 2, 32, 3, 138, 88, 0, 101, 1, 114, 2, 32, 0, 4, 1, 98, 2,
-			105, 3, 138, 89, 0, 1, 104, 2, 116, 101, 0, 1, 106, 2, 111, 110, 0, 1, 109, 2, 111, 110, 0, 1, 112, 2, 116, 101, 32, 0,
-			1, 116, 2, 116, 0, 8, 2, 111, 0, 116, 1, 119, 2, 101, 13, 3, 138, 89, 47, 0, 105, 97, 5, 3, 8, 3, 138, 90, 13, 0,
-			99, 1, 102, 2, 105, 97, 3, 138, 91, 0, 105, 97, 8, 3, 138, 91, 13, 0, 7, 6, 97, 116, 0, 111, 8, 2, 110, 97, 3, 2,
-			138, 47, 136, 0, 4, 1, 21, 2, 114, 97, 32, 3, 6, 126, 47, 0, 2, 117, 109, 0, 105, 1, 21, 2, 32, 3, 6, 126, 47, 122,
-			0, 4, 1, 21, 2, 111, 114, 32, 3, 6, 138, 47, 0, 1, 100, 2, 117, 109, 32, 0, 1, 108, 117, 2, 111, 114, 121, 0, 1, 109,
-			2, 117, 109, 32, 0, 2, 105, 109, 32, 0, 114, 105, 99, 101, 115, 3, 6, 138, 47, 34, 113, 89, 129, 88, 0, 114, 105, 120, 3, 6,
-			138, 47, 34, 122, 49, 89, 0, 105, 2, 97, 29, 3, 6, 138, 91, 0, 114, 121, 1, 21, 2, 32, 3, 8, 13, 47, 34, 122, 0, 104,
-			1, 21, 2, 105, 115, 3, 8, 13, 87, 0, 104, 121, 1, 10, 3, 8, 13, 87, 113, 0, 4, 1, 10, 2, 101, 101, 114, 32, 3, 13,
-			47, 0, 1, 10, 2, 105, 118, 101, 0, 1, 109, 2, 101, 114, 105, 0, 1, 109, 105, 108, 99, 2, 101, 0, 1, 110, 101, 115, 0, 1,
-			112, 2, 101, 114, 110, 0, 1, 116, 115, 2, 105, 115, 116, 0, 8, 115, 114, 101, 118, 0, 101, 1, 10, 2, 32, 28, 18, 0, 101, 1,
-			108, 97, 112, 2, 32, 0, 101, 1, 108, 117, 99, 97, 109, 2, 32, 0, 101, 1, 108, 117, 115, 110, 111, 99, 2, 32, 0, 101, 1, 109,
-			105, 116, 2, 32, 0, 101, 1, 110, 105, 100, 2, 32, 0, 101, 1, 110, 111, 105, 2, 32, 0, 101, 1, 114, 101, 100, 2, 32, 0, 101,
-			1, 114, 101, 112, 109, 2, 32, 0, 101, 8, 114, 97, 112, 101, 115, 32, 116, 105, 2, 32, 0, 111, 114, 121, 1, 10, 3, 13, 47, 114,
-			34, 37, 0, 105, 115, 109, 1, 10, 3, 13, 47, 122, 88, 13, 65, 0, 101, 114, 1, 109, 2, 110, 3, 13, 47, 128, 0, 111, 114, 121,
-			5, 3, 1, 10, 3, 13, 47, 149, 34, 37, 0, 117, 114, 101, 1, 108, 2, 32, 3, 13, 76, 114, 0, 4, 117, 114, 1, 99, 3, 13,
-			76, 143, 0, 117, 114, 1, 109, 0, 4, 1, 99, 2, 101, 17, 67, 3, 35, 47, 0, 1, 103, 2, 101, 97, 117, 0, 1, 108, 112, 2,
-			101, 97, 0, 1, 109, 2, 101, 114, 0, 1, 114, 116, 115, 2, 101, 103, 0, 8, 107, 2, 101, 114, 0, 116, 2, 105, 99, 0, 116, 2,
-			105, 116, 0, 101, 8, 115, 2, 108, 108, 3, 35, 47, 13, 0, 117, 115, 5, 3, 1, 116, 115, 3, 35, 47, 13, 89, 0, 101, 103, 111,
-			1, 99, 2, 114, 105, 99, 3, 35, 47, 122, 81, 6, 124, 0, 101, 103, 111, 1, 99, 3, 35, 47, 122, 81, 13, 0, 105, 8, 99, 2,
-			111, 110, 3, 35, 47, 137, 0, 104, 2, 108, 111, 110, 3, 35, 87, 0, 4, 1, 114, 102, 2, 101, 114, 110, 3, 119, 47, 0, 2, 111,
-			109, 105, 0, 8, 2, 108, 97, 110, 0, 8, 2, 114, 111, 99, 0, 116, 8, 2, 21, 0, 114, 111, 108, 1, 112, 3, 119, 47, 34, 136,
-			55, 0, 111, 8, 2, 110, 3, 119, 47, 136, 0, 4, 104, 1, 98, 3, 120, 87, 0, 104, 1, 112, 0, 1, 119, 2, 116, 3, 124, 47,
-			0, 104, 1, 102, 2, 101, 114, 3, 126, 86, 0, 4, 1, 21, 21, 2, 111, 114, 32, 3, 138, 47, 0, 1, 99, 2, 101, 114, 32, 0,
-			1, 102, 2, 97, 108, 0, 1, 108, 98, 2, 17, 65, 0, 1, 110, 2, 105, 118, 101, 0, 2, 111, 114, 32, 0, 5, 3, 1, 112, 2,
-			114, 105, 17, 65, 0, 101, 1, 110, 111, 105, 110, 2, 32, 0, 97, 1, 100, 3, 138, 47, 13, 0, 117, 115, 1, 116, 115, 3, 138, 47,
-			13, 89, 0, 114, 111, 110, 2, 32, 3, 138, 47, 34, 13, 50, 0, 101, 115, 1, 114, 97, 112, 2, 32, 3, 138, 47, 89, 0, 101, 100,
-			1, 109, 105, 116, 2, 32, 3, 138, 47, 113, 72, 0, 111, 114, 8, 103, 3, 138, 47, 114, 0, 4, 105, 110, 103, 1, 21, 2, 12, 12,
-			32, 3, 138, 47, 122, 68, 0, 105, 110, 103, 1, 109, 105, 116, 2, 32, 0, 101, 100, 1, 21, 2, 12, 12, 32, 3, 138, 47, 122, 72,
-			0, 104, 1, 98, 2, 101, 3, 138, 86, 0, 104, 101, 100, 2, 32, 3, 138, 86, 72, 0, 104, 101, 105, 3, 138, 87, 113, 122, 0, 2,
-			105, 97, 3, 138, 91, 0, 7, 6, 97, 117, 0, 116, 111, 8, 2, 110, 3, 2, 130, 47, 124, 0, 103, 109, 101, 110, 116, 3, 2, 130,
-			81, 65, 121, 50, 47, 0, 116, 104, 101, 110, 3, 2, 130, 87, 121, 50, 0, 99, 104, 8, 3, 2, 130, 101, 0, 116, 111, 8, 2, 21,
-			14, 128, 132, 132, 3, 4, 130, 47, 136, 0, 4, 1, 21, 2, 114, 105, 3, 6, 130, 0, 1, 115, 2, 114, 117, 115, 32, 0, 100, 2,
-			32, 3, 6, 130, 72, 0, 8, 2, 110, 116, 3, 120, 0, 4, 103, 104, 1, 108, 3, 120, 83, 0, 103, 104, 1, 114, 100, 0, 4, 1,
-			99, 2, 108, 105, 3, 124, 0, 5, 35, 1, 115, 2, 115, 0, 5, 35, 2, 115, 116, 114, 0, 108, 2, 116, 3, 124, 55, 0, 4, 3,
-			130, 0, 1, 110, 2, 116, 32, 0, 103, 104, 0, 103, 104, 1, 108, 115, 0, 108, 2, 107, 0, 116, 111, 2, 109, 97, 3, 130, 47, 13,
-			0, 114, 2, 32, 3, 132, 0, 4, 1, 21, 2, 116, 32, 3, 135, 0, 1, 103, 2, 115, 0, 2, 32, 0, 115, 1, 17, 67, 2, 32,
-			3, 135, 89, 0, 2, 118, 3, 136, 0, 7, 6, 97, 118, 0, 1, 108, 97, 2, 101, 114, 3, 6, 126, 84, 0, 4, 1, 99, 115, 2,
-			101, 110, 3, 35, 84, 0, 1, 100, 2, 101, 110, 0, 1, 106, 2, 101, 108, 0, 1, 108, 2, 101, 110, 0, 1, 108, 2, 105, 0, 1,
-			114, 2, 101, 108, 0, 97, 114, 2, 105, 99, 3, 35, 84, 13, 34, 0, 4, 2, 97, 105, 108, 3, 119, 84, 0, 2, 101, 110, 103, 0,
-			2, 111, 17, 65, 0, 8, 2, 101, 114, 17, 67, 0, 111, 119, 3, 119, 84, 135, 0, 4, 1, 106, 2, 97, 3, 126, 84, 0, 1, 108,
-			115, 2, 105, 0, 4, 1, 100, 2, 105, 100, 3, 138, 84, 0, 1, 102, 2, 111, 0, 1, 108, 102, 2, 111, 0, 1, 115, 2, 105, 0,
-			1, 115, 2, 111, 0, 8, 2, 111, 110, 0, 105, 8, 2, 17, 65, 3, 138, 84, 122, 0, 7, 6, 98, 101, 0, 103, 8, 2, 17, 65,
-			110, 25, 3, 71, 2, 122, 81, 0, 116, 97, 8, 3, 71, 4, 129, 47, 13, 0, 116, 97, 5, 3, 8, 3, 71, 4, 138, 47, 13, 0,
-			110, 101, 118, 111, 3, 71, 13, 50, 121, 84, 13, 0, 4, 2, 103, 17, 65, 3, 71, 113, 0, 2, 103, 114, 0, 2, 108, 97, 116, 0,
-			2, 108, 105, 101, 0, 2, 109, 117, 0, 2, 113, 117, 0, 2, 115, 101, 101, 0, 2, 115, 105, 101, 0, 2, 116, 114, 97, 121, 0, 8,
-			2, 17, 67, 17, 65, 0, 8, 2, 99, 108, 0, 8, 2, 100, 114, 97, 0, 8, 2, 102, 0, 8, 2, 108, 108, 105, 0, 8, 2, 115,
-			17, 67, 0, 8, 2, 115, 116, 111, 0, 8, 2, 116, 17, 67, 0, 8, 2, 119, 0, 104, 97, 2, 118, 3, 71, 113, 107, 138, 0, 114,
-			8, 2, 115, 3, 71, 114, 0, 4, 8, 2, 17, 67, 11, 3, 71, 121, 0, 8, 2, 99, 107, 0, 8, 2, 99, 113, 0, 8, 2, 100,
-			17, 67, 0, 8, 2, 103, 103, 0, 8, 2, 108, 17, 67, 0, 8, 2, 115, 116, 105, 97, 0, 8, 2, 116, 104, 0, 8, 2, 118, 17,
-			65, 0, 110, 101, 8, 3, 71, 121, 50, 122, 0, 4, 100, 1, 104, 2, 32, 3, 71, 121, 72, 0, 100, 1, 114, 101, 2, 32, 0, 100,
-			1, 116, 2, 32, 0, 4, 1, 121, 97, 109, 2, 32, 3, 71, 129, 0, 8, 2, 98, 0, 7, 6, 98, 105, 0, 8, 2, 17, 67, 21,
-			21, 3, 2, 71, 137, 0, 4, 2, 115, 101, 99, 3, 71, 2, 137, 0, 8, 2, 101, 110, 0, 111, 8, 2, 21, 14, 128, 132, 131, 3,
-			71, 4, 137, 136, 0, 2, 110, 111, 99, 3, 71, 113, 0, 4, 2, 98, 108, 105, 3, 71, 122, 0, 2, 98, 117, 0, 2, 99, 107, 0,
-			2, 103, 12, 0, 2, 108, 105, 111, 0, 2, 110, 109, 0, 2, 111, 17, 67, 32, 0, 2, 111, 117, 115, 0, 2, 114, 105, 0, 2, 114,
-			121, 0, 2, 115, 99, 0, 2, 115, 104, 0, 2, 115, 109, 0, 2, 122, 12, 0, 8, 2, 17, 67, 11, 0, 8, 2, 108, 17, 67, 0,
-			8, 2, 110, 103, 0, 8, 2, 116, 17, 67, 0, 8, 2, 116, 117, 109, 101, 110, 3, 71, 123, 0, 114, 2, 17, 67, 3, 71, 128, 0,
-			4, 2, 115, 113, 3, 71, 129, 0, 2, 115, 116, 114, 0, 4, 1, 21, 2, 111, 115, 17, 65, 3, 71, 137, 0, 1, 111, 2, 116, 17,
-			65, 0, 2, 99, 121, 99, 0, 2, 107, 101, 114, 0, 2, 110, 97, 114, 121, 0, 2, 110, 100, 0, 2, 111, 116, 105, 99, 0, 8, 2,
-			32, 0, 8, 2, 111, 18, 75, 12, 0, 103, 104, 2, 116, 0, 4, 111, 2, 110, 105, 3, 71, 137, 6, 124, 0, 111, 2, 112, 115, 0,
-			114, 5, 5, 2, 17, 67, 3, 71, 147, 0, 7, 6, 99, 104, 0, 101, 109, 101, 110, 116, 2, 32, 3, 8, 91, 65, 151, 0, 4, 1,
-			21, 2, 105, 97, 3, 49, 0, 1, 97, 2, 105, 108, 0, 1, 97, 114, 98, 0, 1, 97, 114, 116, 0, 1, 101, 2, 111, 0, 1, 101,
-			109, 2, 97, 0, 1, 101, 116, 2, 25, 0, 1, 105, 109, 2, 97, 0, 1, 110, 111, 114, 98, 0, 1, 111, 2, 32, 0, 1, 114, 97,
-			2, 105, 118, 101, 0, 1, 114, 97, 17, 67, 21, 21, 2, 32, 0, 1, 114, 111, 2, 105, 0, 2, 97, 101, 0, 2, 97, 115, 109, 0,
-			2, 101, 109, 0, 2, 105, 99, 32, 0, 2, 105, 111, 0, 2, 105, 114, 17, 65, 0, 2, 105, 115, 17, 67, 0, 2, 111, 108, 0, 2,
-			111, 110, 100, 0, 2, 111, 114, 17, 65, 0, 2, 111, 114, 100, 0, 2, 114, 0, 8, 2, 18, 66, 17, 71, 0, 8, 97, 116, 0, 8,
-			114, 97, 2, 17, 65, 0, 8, 114, 97, 2, 97, 0, 8, 114, 111, 2, 101, 115, 0, 4, 97, 2, 114, 105, 115, 3, 49, 13, 0, 111,
-			114, 1, 110, 97, 0, 114, 121, 2, 115, 97, 3, 49, 34, 122, 0, 108, 111, 114, 111, 3, 49, 55, 4, 133, 34, 136, 0, 108, 111, 2,
-			114, 3, 49, 55, 133, 0, 111, 105, 114, 3, 49, 58, 145, 0, 105, 8, 114, 97, 2, 21, 3, 49, 122, 0, 97, 8, 2, 111, 3, 49,
-			138, 0, 97, 111, 115, 3, 49, 138, 124, 89, 0, 4, 3, 76, 0, 1, 97, 116, 0, 1, 111, 111, 2, 32, 0, 1, 114, 97, 2, 101,
-			114, 0, 2, 111, 114, 101, 32, 0, 8, 2, 17, 71, 0, 8, 2, 111, 108, 97, 0, 101, 1, 97, 98, 3, 76, 13, 0, 97, 114, 105,
-			111, 2, 116, 3, 76, 35, 34, 141, 0, 4, 1, 97, 17, 67, 2, 101, 3, 91, 0, 1, 97, 116, 115, 0, 1, 101, 2, 101, 108, 0,
+			3, 114, 72, 0, 4, 5, 3, 8, 2, 105, 115, 116, 111, 99, 114, 97, 116, 3, 119, 34, 0, 8, 2, 111, 115, 0, 8, 2, 111, 117,
+			0, 8, 104, 2, 97, 110, 103, 0, 114, 8, 2, 21, 0, 114, 8, 110, 2, 97, 116, 0, 97, 99, 104, 8, 3, 119, 34, 35, 49, 0,
+			111, 109, 2, 97, 116, 3, 119, 34, 139, 65, 0, 121, 5, 3, 1, 110, 111, 105, 2, 32, 3, 122, 34, 2, 37, 0, 4, 1, 117, 113,
+			2, 114, 3, 126, 0, 1, 119, 2, 114, 0, 1, 119, 2, 114, 0, 4, 1, 117, 113, 2, 97, 3, 126, 34, 0, 119, 1, 119, 2, 105,
+			0, 4, 3, 130, 0, 1, 104, 2, 100, 121, 32, 0, 1, 108, 108, 2, 100, 32, 0, 1, 116, 111, 101, 2, 100, 32, 0, 1, 116, 115,
+			2, 32, 0, 2, 32, 0, 8, 116, 2, 32, 0, 39, 2, 110, 116, 0, 114, 2, 32, 0, 114, 101, 2, 32, 0, 4, 99, 104, 1, 21,
+			2, 105, 3, 130, 49, 0, 99, 104, 1, 21, 2, 121, 0, 99, 104, 8, 2, 17, 65, 17, 65, 0, 99, 104, 8, 2, 101, 116, 0, 99,
+			104, 97, 105, 8, 3, 130, 49, 6, 141, 124, 0, 99, 104, 105, 8, 2, 21, 3, 130, 49, 124, 0, 99, 104, 105, 118, 8, 2, 12, 3,
+			130, 49, 140, 84, 0, 99, 104, 97, 8, 2, 105, 18, 71, 101, 3, 130, 49, 141, 0, 108, 105, 97, 8, 112, 3, 130, 55, 13, 0, 114,
+			101, 100, 2, 32, 3, 130, 72, 0, 99, 104, 8, 2, 101, 114, 3, 130, 76, 0, 114, 105, 110, 103, 2, 32, 3, 130, 113, 68, 0, 4,
+			1, 104, 119, 3, 135, 0, 1, 117, 113, 2, 116, 0, 1, 119, 0, 1, 119, 97, 2, 100, 0, 1, 119, 101, 114, 2, 100, 0, 1, 119,
+			104, 99, 2, 100, 0, 1, 119, 115, 2, 100, 0, 8, 119, 2, 100, 0, 1, 119, 111, 116, 2, 100, 3, 136, 0, 4, 1, 109, 116, 104,
+			3, 143, 0, 1, 112, 2, 105, 110, 0, 1, 119, 2, 105, 0, 1, 119, 2, 121, 0, 2, 105, 111, 117, 115, 0, 8, 109, 2, 121, 0,
+			101, 0, 101, 1, 99, 2, 17, 67, 21, 0, 101, 1, 119, 0, 4, 1, 117, 2, 105, 115, 104, 3, 143, 34, 0, 1, 118, 2, 105, 17,
+			65, 0, 121, 1, 17, 67, 29, 2, 32, 3, 143, 34, 2, 37, 0, 101, 110, 1, 112, 2, 116, 3, 143, 34, 13, 50, 0, 101, 115, 116,
+			2, 32, 3, 143, 34, 13, 89, 47, 0, 4, 121, 5, 3, 1, 17, 65, 21, 21, 2, 32, 3, 143, 34, 37, 0, 121, 5, 3, 1, 17,
+			67, 17, 65, 21, 21, 2, 32, 0, 121, 5, 3, 1, 114, 2, 32, 0, 105, 110, 103, 3, 143, 44, 113, 68, 0, 7, 6, 97, 115, 0,
+			2, 101, 120, 117, 3, 2, 141, 89, 0, 2, 105, 118, 101, 3, 6, 141, 89, 0, 4, 115, 1, 99, 10, 2, 32, 3, 13, 89, 0, 115,
+			1, 108, 116, 10, 2, 32, 0, 115, 1, 112, 109, 111, 2, 32, 0, 115, 1, 112, 115, 10, 2, 32, 0, 115, 1, 114, 114, 0, 115, 1,
+			118, 10, 2, 32, 0, 115, 1, 118, 10, 2, 32, 0, 4, 101, 121, 1, 10, 2, 32, 3, 13, 89, 2, 37, 0, 121, 1, 10, 2, 32,
+			0, 115, 2, 117, 3, 13, 91, 0, 115, 117, 114, 3, 13, 91, 57, 146, 0, 4, 1, 98, 2, 105, 108, 3, 35, 88, 0, 8, 2, 100,
+			0, 8, 2, 110, 0, 116, 104, 5, 3, 8, 2, 109, 0, 4, 1, 98, 2, 97, 108, 3, 35, 89, 0, 1, 109, 2, 111, 110, 105, 0,
+			1, 116, 110, 2, 116, 0, 2, 112, 104, 97, 0, 2, 112, 105, 0, 2, 116, 114, 97, 108, 0, 2, 116, 114, 111, 0, 2, 121, 109, 112,
+			0, 8, 2, 101, 0, 8, 2, 105, 110, 0, 8, 2, 112, 101, 0, 8, 2, 116, 114, 105, 0, 115, 1, 108, 99, 2, 105, 17, 67, 0,
+			115, 1, 112, 2, 111, 0, 115, 2, 97, 103, 0, 115, 2, 111, 110, 0, 115, 8, 2, 101, 116, 0, 115, 8, 2, 104, 0, 116, 104, 8,
+			2, 109, 0, 112, 105, 8, 2, 114, 97, 3, 35, 89, 48, 13, 0, 99, 105, 105, 2, 32, 3, 35, 89, 49, 124, 0, 104, 8, 3, 35,
+			91, 0, 115, 105, 111, 110, 1, 112, 3, 35, 91, 13, 50, 0, 99, 105, 1, 102, 2, 115, 3, 35, 91, 124, 0, 2, 115, 105, 115, 116,
+			3, 119, 0, 4, 1, 10, 2, 116, 121, 32, 3, 119, 89, 0, 2, 116, 101, 114, 110, 0, 8, 2, 21, 0, 8, 2, 112, 101, 114, 0,
+			8, 2, 112, 105, 114, 101, 0, 8, 2, 116, 114, 105, 110, 0, 8, 2, 116, 114, 111, 108, 111, 103, 0, 8, 2, 116, 114, 111, 110, 111,
+			0, 115, 2, 117, 109, 112, 0, 115, 8, 2, 21, 0, 4, 104, 8, 2, 97, 3, 119, 91, 0, 104, 8, 2, 111, 0, 4, 1, 17, 67,
+			2, 112, 3, 120, 89, 0, 1, 17, 67, 2, 112, 101, 0, 1, 17, 67, 2, 116, 0, 2, 107, 0, 2, 116, 101, 114, 0, 8, 2, 107,
+			0, 115, 1, 108, 17, 67, 0, 115, 1, 112, 0, 115, 1, 114, 17, 67, 0, 1, 104, 99, 114, 117, 112, 2, 101, 3, 124, 89, 0, 1,
+			119, 2, 112, 3, 126, 89, 0, 4, 2, 97, 108, 3, 141, 88, 0, 8, 17, 67, 2, 101, 114, 32, 0, 101, 1, 104, 112, 2, 32, 0,
+			101, 1, 114, 2, 32, 0, 4, 1, 98, 2, 105, 3, 141, 89, 0, 1, 104, 2, 116, 101, 0, 1, 106, 2, 111, 110, 0, 1, 109, 2,
+			111, 110, 0, 1, 112, 2, 116, 101, 32, 0, 1, 116, 2, 116, 0, 1, 116, 2, 116, 101, 13, 0, 8, 2, 111, 0, 8, 2, 121, 109,
+			0, 116, 1, 119, 2, 101, 13, 3, 141, 89, 47, 0, 105, 97, 5, 3, 8, 3, 141, 90, 13, 0, 99, 1, 102, 2, 105, 97, 3, 141,
+			91, 0, 105, 97, 8, 3, 141, 91, 13, 0, 7, 6, 97, 116, 0, 111, 8, 2, 110, 97, 3, 2, 141, 47, 139, 0, 4, 1, 21, 2,
+			114, 97, 32, 3, 6, 121, 47, 0, 2, 117, 109, 0, 105, 1, 21, 2, 32, 3, 6, 121, 47, 37, 0, 4, 1, 21, 2, 111, 114, 32,
+			3, 6, 141, 47, 0, 1, 100, 2, 117, 109, 32, 0, 1, 108, 117, 2, 111, 114, 121, 0, 1, 109, 2, 117, 109, 32, 0, 2, 105, 109,
+			32, 0, 114, 105, 99, 101, 115, 3, 6, 141, 47, 34, 113, 89, 132, 88, 0, 114, 105, 120, 3, 6, 141, 47, 34, 124, 49, 89, 0, 105,
+			2, 97, 29, 3, 6, 141, 91, 0, 114, 121, 1, 21, 2, 32, 3, 8, 13, 47, 34, 124, 0, 104, 1, 21, 2, 105, 115, 3, 8, 13,
+			87, 0, 104, 121, 1, 10, 2, 32, 3, 8, 13, 87, 113, 0, 101, 1, 116, 99, 2, 32, 3, 8, 141, 47, 0, 4, 1, 10, 2, 101,
+			101, 114, 32, 3, 13, 47, 0, 1, 10, 2, 105, 118, 101, 0, 1, 109, 2, 101, 114, 105, 0, 1, 109, 105, 108, 99, 2, 101, 0, 1,
+			110, 101, 115, 0, 1, 112, 2, 101, 114, 110, 0, 8, 115, 114, 101, 118, 0, 101, 1, 10, 2, 32, 28, 18, 0, 101, 1, 108, 97, 112,
+			2, 32, 0, 101, 1, 108, 117, 99, 97, 109, 2, 32, 0, 101, 1, 108, 117, 115, 110, 111, 99, 2, 32, 0, 101, 1, 109, 105, 116, 2,
+			32, 0, 101, 1, 110, 105, 100, 2, 32, 0, 101, 1, 110, 111, 105, 2, 32, 0, 101, 1, 114, 101, 100, 2, 32, 0, 101, 1, 114, 101,
+			112, 109, 2, 32, 0, 101, 8, 114, 97, 112, 101, 115, 32, 116, 105, 2, 32, 0, 111, 114, 121, 1, 10, 3, 13, 47, 114, 34, 37, 0,
+			105, 115, 109, 1, 10, 3, 13, 47, 124, 88, 13, 65, 0, 101, 114, 1, 109, 2, 110, 3, 13, 47, 131, 0, 111, 114, 121, 5, 3, 1,
+			10, 2, 32, 3, 13, 47, 152, 34, 37, 0, 117, 114, 101, 1, 108, 2, 32, 3, 13, 76, 114, 0, 4, 117, 114, 1, 99, 3, 13, 76,
+			146, 0, 117, 114, 1, 109, 0, 104, 1, 10, 2, 17, 65, 110, 32, 3, 13, 87, 0, 4, 1, 99, 2, 101, 17, 67, 3, 35, 47, 0,
+			1, 103, 2, 101, 97, 117, 0, 1, 108, 112, 2, 101, 97, 0, 1, 109, 2, 101, 114, 21, 0, 1, 114, 116, 115, 2, 101, 103, 0, 8,
+			2, 111, 109, 105, 122, 0, 8, 107, 2, 101, 114, 0, 116, 2, 105, 99, 0, 116, 2, 105, 116, 0, 101, 8, 115, 2, 108, 108, 3, 35,
+			47, 13, 0, 117, 115, 5, 3, 1, 116, 115, 3, 35, 47, 13, 89, 0, 101, 103, 111, 1, 99, 2, 114, 105, 99, 3, 35, 47, 124, 81,
+			6, 126, 0, 101, 103, 111, 1, 99, 3, 35, 47, 124, 81, 13, 0, 105, 8, 99, 2, 111, 110, 3, 35, 47, 140, 0, 104, 2, 108, 111,
+			110, 3, 35, 87, 0, 4, 1, 114, 102, 2, 101, 114, 110, 3, 119, 47, 0, 2, 111, 109, 105, 0, 8, 2, 108, 97, 110, 0, 8, 2,
+			114, 111, 99, 0, 116, 8, 2, 21, 0, 114, 111, 108, 1, 112, 3, 119, 47, 34, 139, 55, 0, 111, 8, 2, 110, 3, 119, 47, 139, 0,
+			4, 104, 1, 98, 3, 120, 87, 0, 104, 1, 112, 2, 25, 0, 104, 1, 102, 2, 101, 114, 3, 121, 86, 0, 1, 119, 2, 116, 3, 126,
+			47, 0, 4, 1, 10, 2, 105, 118, 101, 32, 28, 17, 3, 141, 47, 0, 1, 21, 21, 2, 111, 114, 32, 0, 1, 99, 2, 101, 114, 32,
+			0, 1, 102, 2, 97, 108, 0, 1, 108, 98, 2, 17, 65, 0, 2, 111, 114, 32, 0, 5, 3, 1, 112, 2, 114, 105, 17, 65, 0, 8,
+			2, 121, 0, 8, 110, 2, 105, 118, 101, 0, 101, 1, 110, 111, 105, 110, 2, 32, 0, 4, 97, 1, 100, 3, 141, 47, 13, 0, 97, 8,
+			115, 2, 110, 0, 117, 115, 1, 116, 115, 3, 141, 47, 13, 89, 0, 114, 111, 110, 1, 29, 2, 32, 3, 141, 47, 34, 13, 50, 0, 101,
+			115, 1, 114, 97, 112, 2, 32, 3, 141, 47, 89, 0, 111, 114, 8, 103, 3, 141, 47, 114, 0, 4, 105, 110, 103, 1, 21, 2, 12, 12,
+			32, 3, 141, 47, 124, 68, 0, 105, 110, 103, 1, 109, 105, 116, 2, 32, 0, 101, 100, 1, 21, 2, 12, 12, 32, 3, 141, 47, 124, 72,
+			0, 4, 101, 100, 1, 109, 105, 116, 2, 32, 3, 141, 47, 125, 72, 0, 101, 100, 1, 114, 101, 100, 2, 32, 0, 104, 1, 98, 2, 101,
+			3, 141, 86, 0, 104, 101, 100, 2, 32, 3, 141, 86, 72, 0, 104, 101, 105, 3, 141, 87, 113, 124, 0, 4, 2, 105, 97, 3, 141, 91,
+			0, 2, 105, 111, 32, 0, 7, 6, 97, 117, 0, 116, 111, 8, 2, 110, 3, 2, 133, 47, 126, 0, 103, 109, 101, 110, 116, 3, 2, 133,
+			81, 65, 122, 50, 47, 0, 116, 104, 101, 110, 3, 2, 133, 87, 122, 50, 0, 99, 104, 8, 3, 2, 133, 101, 0, 116, 111, 8, 2, 21,
+			14, 128, 132, 132, 3, 4, 133, 47, 139, 0, 4, 1, 21, 2, 114, 105, 3, 6, 133, 0, 1, 115, 2, 114, 117, 115, 32, 0, 100, 2,
+			32, 3, 6, 133, 72, 0, 8, 2, 114, 111, 114, 3, 119, 0, 8, 2, 110, 116, 3, 120, 0, 4, 103, 104, 1, 108, 3, 120, 83, 0,
+			103, 104, 1, 114, 100, 0, 4, 1, 99, 2, 108, 105, 3, 126, 0, 5, 35, 1, 115, 2, 115, 0, 5, 35, 2, 115, 116, 114, 0, 108,
+			2, 116, 3, 126, 55, 0, 4, 3, 133, 0, 1, 110, 2, 116, 32, 0, 1, 116, 2, 116, 32, 0, 103, 104, 0, 103, 104, 1, 108, 115,
+			0, 108, 2, 107, 0, 116, 111, 2, 109, 97, 3, 133, 47, 13, 0, 4, 100, 8, 2, 105, 111, 108, 111, 3, 133, 72, 0, 100, 8, 2,
+			105, 111, 109, 0, 100, 105, 111, 3, 133, 72, 113, 139, 0, 114, 2, 32, 3, 135, 0, 4, 1, 103, 2, 115, 3, 138, 0, 2, 32, 0,
+			2, 109, 32, 0, 2, 115, 99, 104, 0, 2, 116, 32, 0, 115, 1, 17, 67, 2, 32, 3, 138, 89, 0, 101, 114, 3, 138, 114, 0, 2,
+			118, 3, 139, 0, 7, 6, 97, 118, 0, 1, 108, 97, 2, 101, 114, 3, 6, 121, 84, 0, 4, 1, 99, 115, 2, 101, 110, 3, 35, 84,
+			0, 1, 106, 2, 101, 108, 0, 1, 108, 2, 105, 0, 1, 114, 2, 101, 108, 0, 8, 17, 66, 2, 101, 110, 0, 8, 114, 116, 0, 97,
+			114, 2, 105, 99, 3, 35, 84, 13, 34, 0, 4, 2, 97, 105, 108, 3, 119, 84, 0, 2, 101, 110, 103, 0, 2, 111, 17, 65, 0, 8,
+			2, 101, 114, 17, 67, 0, 111, 119, 3, 119, 84, 138, 0, 4, 1, 106, 2, 97, 3, 121, 84, 0, 1, 108, 115, 2, 105, 0, 4, 1,
+			100, 2, 105, 100, 3, 141, 84, 0, 1, 102, 2, 111, 0, 1, 108, 102, 2, 111, 0, 1, 115, 2, 105, 111, 0, 1, 115, 2, 111, 0,
+			8, 2, 111, 110, 0, 105, 8, 2, 17, 65, 3, 141, 84, 124, 0, 7, 6, 98, 101, 0, 114, 108, 105, 110, 8, 3, 2, 71, 131, 55,
+			124, 50, 0, 103, 8, 2, 17, 65, 110, 25, 3, 71, 2, 124, 81, 0, 8, 2, 97, 116, 105, 17, 67, 3, 71, 2, 132, 0, 116, 97,
+			8, 3, 71, 4, 132, 47, 13, 0, 116, 97, 5, 3, 8, 3, 71, 4, 141, 47, 13, 0, 8, 2, 28, 19, 12, 3, 71, 13, 0, 110,
+			101, 118, 111, 3, 71, 13, 50, 122, 84, 13, 0, 4, 2, 103, 17, 65, 3, 71, 113, 0, 2, 103, 114, 0, 2, 108, 97, 116, 0, 2,
+			108, 105, 101, 0, 2, 109, 117, 0, 2, 113, 117, 0, 2, 115, 101, 101, 0, 2, 115, 105, 101, 0, 2, 116, 114, 97, 121, 0, 8, 2,
+			17, 67, 17, 65, 0, 8, 2, 99, 108, 0, 8, 2, 100, 114, 97, 0, 8, 2, 102, 0, 8, 2, 107, 110, 0, 8, 2, 108, 108, 105,
+			103, 0, 8, 2, 115, 17, 67, 0, 8, 2, 115, 116, 111, 0, 8, 2, 116, 17, 67, 0, 8, 2, 119, 0, 104, 97, 2, 118, 3, 71,
+			113, 107, 141, 0, 114, 8, 2, 115, 3, 71, 114, 0, 4, 8, 2, 17, 67, 11, 3, 71, 122, 0, 8, 2, 99, 107, 0, 8, 2, 99,
+			113, 0, 8, 2, 100, 17, 67, 0, 8, 2, 103, 103, 0, 8, 2, 108, 17, 67, 0, 8, 2, 110, 97, 0, 8, 2, 115, 116, 105, 97,
+			0, 8, 2, 116, 17, 66, 0, 8, 2, 116, 104, 0, 8, 2, 118, 17, 65, 0, 8, 2, 122, 17, 65, 0, 110, 101, 8, 3, 71, 122,
+			50, 124, 0, 108, 97, 114, 117, 115, 8, 3, 71, 122, 55, 13, 34, 6, 137, 89, 0, 108, 108, 121, 3, 71, 122, 55, 113, 0, 4, 100,
+			1, 69, 2, 32, 3, 71, 122, 72, 0, 100, 1, 100, 2, 32, 0, 100, 1, 104, 2, 32, 0, 100, 1, 114, 101, 2, 32, 0, 100, 1,
+			116, 2, 32, 0, 115, 116, 115, 101, 8, 2, 108, 108, 3, 71, 122, 89, 47, 89, 6, 122, 0, 4, 1, 121, 97, 109, 2, 32, 3, 71,
+			132, 0, 8, 2, 98, 0, 97, 2, 110, 0, 8, 2, 111, 3, 71, 141, 0, 7, 6, 98, 105, 0, 8, 2, 17, 67, 21, 21, 3, 2,
+			71, 140, 0, 4, 2, 115, 101, 99, 3, 71, 2, 140, 0, 8, 2, 97, 110, 110, 117, 0, 8, 2, 101, 110, 0, 111, 8, 2, 21, 14,
+			128, 132, 131, 3, 71, 4, 140, 139, 0, 2, 110, 111, 99, 3, 71, 113, 0, 4, 2, 98, 108, 105, 3, 71, 124, 0, 2, 98, 117, 0,
+			2, 99, 107, 0, 2, 108, 105, 111, 0, 2, 108, 108, 105, 111, 0, 2, 110, 109, 0, 2, 111, 17, 67, 32, 0, 2, 111, 117, 115, 0,
+			2, 115, 99, 0, 2, 115, 109, 0, 2, 122, 12, 0, 8, 2, 17, 67, 11, 0, 8, 2, 103, 12, 0, 8, 2, 108, 17, 67, 0, 8,
+			2, 110, 103, 0, 8, 2, 115, 104, 0, 8, 2, 116, 17, 67, 0, 103, 104, 1, 110, 101, 0, 4, 114, 105, 8, 3, 71, 124, 34, 124,
+			0, 114, 121, 8, 0, 8, 2, 116, 117, 109, 101, 110, 3, 71, 125, 0, 114, 2, 17, 67, 3, 71, 131, 0, 4, 2, 115, 113, 3, 71,
+			132, 0, 2, 115, 116, 114, 0, 4, 1, 21, 2, 111, 115, 17, 65, 3, 71, 140, 0, 1, 111, 2, 116, 17, 65, 0, 2, 99, 121, 99,
+			0, 2, 107, 101, 114, 0, 2, 110, 97, 114, 121, 0, 2, 110, 100, 0, 2, 111, 108, 0, 2, 111, 116, 105, 99, 0, 8, 2, 32, 0,
+			8, 2, 111, 18, 75, 12, 0, 103, 104, 2, 116, 0, 4, 111, 2, 110, 105, 3, 71, 140, 6, 126, 0, 111, 2, 112, 115, 0, 114, 5,
+			5, 2, 17, 67, 3, 71, 150, 0, 7, 6, 99, 104, 0, 101, 109, 101, 110, 116, 2, 32, 3, 8, 91, 65, 154, 0, 4, 1, 21, 2,
+			105, 97, 3, 49, 0, 1, 97, 2, 105, 108, 0, 1, 97, 114, 98, 0, 1, 97, 114, 116, 0, 1, 97, 122, 0, 1, 101, 109, 2, 97,
+			0, 1, 101, 116, 2, 25, 0, 1, 105, 109, 2, 97, 0, 1, 110, 111, 114, 98, 0, 1, 111, 2, 32, 0, 1, 114, 97, 2, 105, 118,
+			101, 0, 1, 114, 97, 17, 67, 21, 21, 2, 32, 0, 1, 114, 111, 2, 105, 0, 2, 97, 101, 0, 2, 97, 115, 109, 0, 2, 101, 109,
+			0, 2, 105, 99, 32, 0, 2, 105, 111, 0, 2, 105, 115, 17, 67, 0, 2, 111, 108, 0, 2, 111, 110, 100, 0, 2, 111, 114, 17, 65,
+			0, 2, 111, 114, 100, 0, 2, 114, 0, 8, 2, 18, 66, 17, 71, 0, 8, 97, 116, 0, 8, 101, 2, 111, 0, 8, 101, 116, 0, 8,
+			114, 97, 2, 17, 65, 0, 8, 114, 97, 2, 97, 0, 8, 114, 111, 2, 101, 115, 0, 101, 109, 111, 8, 2, 21, 3, 49, 4, 132, 65,
+			139, 0, 4, 97, 2, 114, 105, 115, 3, 49, 13, 0, 97, 8, 2, 114, 121, 98, 0, 114, 121, 2, 115, 97, 3, 49, 34, 124, 0, 108,
+			111, 114, 111, 3, 49, 55, 4, 136, 34, 139, 0, 108, 111, 2, 114, 3, 49, 55, 136, 0, 111, 105, 114, 3, 49, 58, 148, 0, 105, 8,
+			2, 114, 111, 112, 17, 65, 3, 49, 113, 0, 111, 114, 1, 110, 97, 3, 49, 114, 0, 105, 8, 114, 97, 2, 21, 3, 49, 124, 0, 105,
+			2, 114, 17, 65, 3, 49, 140, 0, 97, 8, 2, 111, 3, 49, 141, 0, 97, 111, 115, 3, 49, 141, 126, 89, 0, 4, 3, 76, 0, 1,
+			97, 116, 0, 1, 111, 111, 2, 32, 0, 1, 114, 97, 2, 101, 114, 0, 2, 111, 114, 101, 32, 0, 8, 2, 17, 71, 0, 8, 2, 111,
+			108, 97, 0, 97, 114, 105, 111, 2, 116, 3, 76, 35, 34, 144, 0, 4, 1, 97, 17, 67, 2, 101, 3, 91, 0, 1, 97, 116, 115, 0,
 			1, 101, 114, 99, 0, 1, 105, 102, 0, 1, 105, 108, 99, 0, 1, 105, 110, 0, 1, 111, 99, 105, 0, 1, 111, 108, 99, 0, 2, 97,
 			115, 115, 0, 2, 97, 116, 101, 97, 0, 2, 101, 102, 0, 2, 101, 118, 0, 2, 105, 111, 32, 0, 2, 117, 114, 101, 0, 2, 117, 116,
-			101, 0, 2, 195, 169, 12, 0, 8, 2, 97, 110, 100, 17, 65, 0, 8, 2, 97, 114, 116, 114, 101, 0, 8, 111, 2, 101, 0, 101, 1,
-			105, 2, 32, 24, 0, 105, 111, 110, 3, 91, 13, 50, 0, 97, 112, 2, 101, 114, 111, 3, 91, 35, 48, 0, 105, 99, 97, 2, 103, 3,
-			91, 113, 49, 126, 0, 105, 99, 97, 2, 110, 3, 91, 113, 49, 138, 0, 4, 97, 117, 2, 102, 3, 91, 136, 0, 97, 117, 2, 118, 0,
-			101, 122, 3, 91, 138, 0, 7, 6, 99, 111, 0, 4, 2, 110, 115, 116, 105, 116, 117, 17, 65, 3, 49, 2, 124, 0, 8, 2, 110, 102,
-			105, 100, 101, 0, 8, 2, 110, 115, 117, 108, 116, 0, 110, 8, 2, 21, 3, 49, 2, 124, 50, 0, 110, 116, 114, 97, 99, 2, 116, 3,
-			49, 2, 124, 50, 47, 34, 35, 49, 0, 110, 116, 114, 97, 114, 3, 49, 2, 124, 50, 47, 34, 140, 0, 110, 115, 101, 114, 2, 118, 3,
-			49, 2, 124, 50, 89, 128, 0, 109, 112, 8, 2, 116, 114, 3, 49, 2, 124, 65, 0, 4, 2, 104, 97, 98, 3, 49, 2, 136, 0, 8,
-			2, 97, 103, 0, 97, 2, 108, 101, 115, 3, 49, 2, 136, 13, 0, 4, 2, 109, 112, 117, 116, 97, 3, 49, 4, 124, 0, 8, 2, 110,
-			116, 114, 111, 118, 0, 114, 114, 101, 115, 112, 111, 3, 49, 4, 124, 34, 122, 89, 48, 6, 124, 0, 110, 116, 114, 97, 8, 2, 17, 67,
-			21, 14, 128, 132, 134, 3, 49, 4, 124, 50, 47, 34, 13, 0, 110, 100, 101, 8, 2, 115, 99, 3, 49, 4, 124, 50, 72, 113, 0, 8,
-			2, 101, 17, 67, 14, 128, 132, 130, 3, 49, 4, 136, 0, 117, 110, 116, 101, 114, 8, 2, 21, 14, 128, 132, 135, 3, 49, 6, 135, 50,
-			47, 13, 0, 112, 111, 108, 121, 8, 3, 49, 6, 136, 48, 4, 124, 55, 122, 0, 4, 2, 108, 108, 97, 98, 3, 49, 13, 0, 2, 108,
-			108, 97, 112, 0, 2, 108, 108, 97, 116, 0, 2, 108, 108, 101, 99, 0, 2, 108, 108, 105, 100, 0, 2, 108, 108, 105, 115, 0, 2, 108,
-			108, 117, 0, 2, 108, 111, 115, 115, 0, 2, 109, 109, 101, 110, 115, 0, 2, 110, 115, 101, 99, 117, 0, 2, 110, 116, 114, 111, 108, 12,
-			0, 2, 114, 114, 101, 99, 116, 0, 2, 114, 114, 111, 0, 2, 114, 114, 117, 112, 0, 8, 2, 109, 21, 0, 8, 2, 109, 112, 108, 0,
-			8, 2, 110, 99, 105, 0, 8, 2, 110, 102, 105, 103, 117, 0, 8, 2, 110, 110, 101, 99, 116, 0, 8, 2, 110, 110, 101, 120, 0, 8,
-			2, 110, 115, 105, 0, 8, 2, 110, 118, 101, 110, 17, 65, 0, 8, 2, 110, 118, 105, 0, 110, 115, 105, 100, 101, 114, 3, 49, 13, 50,
-			89, 122, 72, 114, 0, 110, 110, 105, 118, 3, 49, 13, 50, 137, 84, 0, 108, 108, 101, 2, 103, 105, 3, 49, 13, 55, 129, 0, 4, 109,
-			109, 117, 110, 2, 97, 3, 49, 13, 65, 57, 134, 50, 0, 109, 109, 117, 110, 2, 105, 99, 0, 109, 101, 2, 100, 105, 3, 49, 13, 65,
-			129, 0, 4, 2, 109, 98, 97, 3, 49, 124, 0, 2, 109, 98, 105, 110, 97, 0, 2, 109, 101, 100, 121, 0, 2, 109, 109, 97, 32, 0,
-			2, 109, 109, 97, 110, 100, 97, 0, 2, 109, 109, 101, 110, 0, 2, 109, 109, 101, 114, 99, 101, 0, 2, 109, 109, 111, 100, 111, 114, 0,
-			2, 109, 109, 117, 116, 97, 0, 2, 109, 112, 101, 110, 115, 0, 2, 109, 112, 101, 114, 0, 2, 109, 112, 105, 108, 97, 0, 2, 109, 112,
-			108, 101, 109, 0, 2, 109, 112, 108, 101, 120, 32, 0, 2, 109, 112, 108, 105, 99, 97, 0, 2, 109, 112, 108, 105, 109, 0, 2, 109, 112,
-			111, 115, 105, 116, 0, 2, 109, 112, 111, 115, 116, 0, 2, 109, 112, 111, 117, 0, 2, 109, 112, 114, 101, 104, 101, 110, 0, 2, 109, 112,
-			114, 111, 109, 0, 2, 110, 115, 101, 99, 0, 2, 110, 115, 111, 110, 0, 2, 110, 115, 116, 97, 110, 0, 2, 110, 115, 116, 105, 116, 0,
-			2, 110, 116, 105, 110, 101, 0, 8, 2, 109, 105, 0, 8, 2, 109, 114, 0, 8, 2, 110, 99, 101, 112, 116, 32, 0, 8, 2, 110, 99,
-			114, 101, 116, 0, 8, 2, 110, 100, 105, 109, 0, 8, 2, 110, 100, 111, 109, 0, 8, 2, 110, 100, 111, 114, 0, 8, 2, 110, 100, 117,
-			105, 116, 0, 8, 2, 110, 102, 101, 114, 101, 110, 0, 8, 2, 110, 102, 105, 100, 0, 8, 2, 110, 102, 105, 115, 0, 8, 2, 110, 102,
-			108, 117, 0, 8, 2, 110, 103, 114, 101, 0, 8, 2, 110, 105, 0, 8, 2, 110, 106, 117, 103, 0, 8, 2, 110, 113, 117, 101, 0, 8,
-			2, 110, 115, 99, 0, 8, 2, 110, 115, 111, 108, 101, 0, 8, 2, 110, 115, 116, 97, 98, 108, 0, 8, 2, 110, 115, 116, 105, 112, 0,
-			8, 2, 110, 115, 117, 108, 0, 8, 2, 110, 116, 97, 99, 116, 0, 8, 2, 110, 116, 101, 109, 112, 108, 0, 8, 2, 110, 116, 101, 120,
-			116, 0, 8, 2, 110, 116, 111, 117, 114, 0, 8, 2, 110, 116, 114, 17, 65, 0, 8, 2, 110, 116, 114, 105, 98, 0, 8, 2, 110, 118,
-			111, 121, 0, 8, 2, 110, 119, 0, 8, 2, 114, 114, 105, 0, 114, 111, 2, 108, 108, 3, 49, 124, 34, 124, 0, 112, 121, 8, 3, 49,
-			124, 48, 122, 0, 110, 110, 111, 105, 8, 2, 115, 3, 49, 124, 50, 13, 0, 110, 116, 114, 97, 115, 116, 8, 3, 49, 124, 50, 47, 34,
-			120, 89, 47, 0, 110, 103, 114, 101, 115, 115, 5, 3, 8, 3, 49, 124, 50, 81, 34, 13, 89, 0, 110, 103, 114, 117, 3, 49, 124, 50,
-			81, 34, 134, 0, 110, 102, 105, 8, 2, 100, 101, 110, 3, 49, 124, 50, 83, 122, 0, 110, 118, 97, 2, 108, 3, 49, 124, 50, 84, 13,
-			0, 4, 110, 99, 101, 8, 2, 110, 116, 114, 97, 3, 49, 124, 50, 89, 13, 0, 110, 115, 101, 114, 2, 118, 97, 116, 105, 111, 0, 110,
-			115, 101, 8, 2, 113, 3, 49, 124, 50, 89, 122, 0, 109, 109, 111, 110, 3, 49, 124, 65, 13, 50, 0, 109, 112, 97, 114, 97, 98, 3,
-			49, 124, 65, 48, 13, 34, 13, 71, 0, 109, 112, 101, 2, 116, 17, 65, 110, 3, 49, 124, 65, 48, 122, 0, 109, 109, 117, 110, 3, 49,
-			124, 65, 57, 134, 50, 0, 4, 2, 109, 101, 32, 3, 49, 125, 0, 2, 109, 112, 97, 110, 121, 0, 2, 109, 112, 97, 115, 115, 32, 0,
-			8, 2, 109, 102, 0, 8, 2, 110, 106, 117, 114, 0, 109, 101, 2, 98, 3, 49, 125, 65, 0, 109, 102, 111, 114, 116, 97, 98, 3, 49,
-			125, 65, 83, 47, 13, 71, 0, 109, 102, 111, 114, 2, 116, 3, 49, 125, 65, 83, 114, 0, 109, 105, 110, 103, 3, 49, 125, 65, 113, 68,
-			0, 8, 2, 109, 97, 3, 49, 136, 0, 97, 2, 108, 105, 116, 3, 49, 136, 13, 0, 115, 116, 97, 114, 8, 3, 49, 136, 89, 47, 127,
-			0, 101, 8, 2, 108, 3, 89, 129, 0, 7, 6, 100, 101, 0, 8, 2, 104, 121, 100, 3, 4, 72, 129, 0, 4, 2, 97, 99, 116, 3,
-			72, 2, 129, 0, 2, 97, 114, 99, 0, 2, 102, 108, 97, 116, 0, 2, 112, 101, 114, 0, 2, 112, 111, 108, 0, 2, 112, 111, 112, 0,
-			2, 114, 101, 103, 0, 2, 116, 111, 120, 0, 2, 116, 114, 97, 105, 0, 2, 118, 97, 108, 0, 8, 2, 101, 109, 112, 0, 8, 2, 111,
-			0, 8, 2, 116, 104, 0, 110, 105, 2, 116, 114, 105, 3, 72, 2, 129, 50, 137, 0, 4, 115, 2, 101, 103, 3, 72, 2, 129, 89, 0,
-			115, 2, 101, 110, 0, 115, 2, 117, 108, 0, 115, 116, 97, 2, 98, 3, 72, 2, 129, 89, 47, 138, 0, 115, 101, 2, 108, 3, 72, 4,
-			129, 89, 113, 0, 4, 2, 99, 111, 114, 117, 3, 72, 113, 0, 2, 100, 117, 0, 2, 109, 97, 0, 2, 109, 101, 110, 0, 2, 109, 105,
-			115, 101, 0, 2, 109, 111, 99, 114, 97, 99, 0, 2, 109, 111, 114, 0, 2, 109, 111, 116, 0, 2, 109, 117, 114, 0, 2, 114, 105, 17,
-			67, 0, 2, 114, 111, 103, 0, 8, 2, 98, 97, 0, 8, 2, 102, 21, 0, 8, 2, 103, 21, 0, 8, 2, 106, 0, 8, 2, 108, 21,
-			0, 8, 2, 110, 111, 0, 8, 2, 112, 21, 0, 8, 2, 114, 97, 105, 0, 8, 2, 116, 21, 0, 8, 2, 118, 17, 65, 0, 116, 101,
-			115, 116, 3, 72, 113, 47, 121, 89, 47, 0, 116, 101, 114, 3, 72, 113, 47, 128, 0, 116, 101, 114, 2, 105, 3, 72, 113, 47, 141, 34,
-			0, 110, 105, 8, 2, 97, 3, 72, 113, 50, 137, 0, 109, 101, 97, 3, 72, 113, 65, 6, 129, 0, 109, 111, 2, 98, 105, 3, 72, 113,
-			65, 136, 0, 4, 115, 8, 2, 101, 114, 3, 72, 113, 88, 0, 115, 8, 2, 105, 0, 115, 115, 8, 0, 4, 115, 2, 105, 115, 3, 72,
-			113, 89, 0, 115, 8, 2, 21, 0, 4, 2, 99, 105, 98, 3, 72, 121, 0, 2, 99, 105, 108, 0, 2, 99, 105, 109, 0, 2, 99, 107,
-			0, 2, 99, 111, 114, 0, 2, 99, 114, 101, 109, 0, 2, 102, 101, 114, 101, 110, 0, 2, 102, 105, 110, 105, 116, 0, 2, 102, 116, 0,
-			2, 108, 97, 119, 0, 2, 108, 101, 103, 0, 2, 108, 105, 99, 97, 0, 2, 108, 112, 104, 0, 2, 108, 118, 12, 0, 2, 109, 97, 103,
-			111, 103, 0, 2, 112, 114, 101, 99, 97, 0, 2, 112, 116, 0, 2, 112, 117, 116, 0, 2, 114, 17, 65, 17, 67, 97, 116, 105, 111, 0,
-			2, 114, 101, 108, 0, 2, 116, 111, 110, 0, 2, 116, 114, 105, 0, 2, 118, 105, 108, 0, 2, 118, 111, 110, 0, 8, 2, 108, 108, 0,
-			8, 2, 108, 116, 0, 115, 2, 99, 97, 0, 112, 111, 2, 115, 105, 116, 105, 3, 72, 121, 48, 13, 0, 99, 97, 2, 100, 101, 110, 3,
-			72, 121, 49, 13, 0, 108, 117, 2, 103, 3, 72, 121, 55, 57, 134, 0, 118, 97, 115, 8, 3, 72, 121, 84, 13, 89, 0, 115, 2, 105,
-			103, 110, 97, 3, 72, 121, 88, 0, 4, 115, 2, 101, 99, 3, 72, 121, 89, 0, 115, 2, 105, 99, 0, 115, 2, 111, 108, 0, 115, 2,
-			112, 111, 116, 0, 115, 8, 2, 104, 0, 115, 8, 2, 107, 0, 115, 116, 105, 3, 72, 121, 89, 47, 122, 0, 4, 8, 2, 98, 105, 108,
-			3, 72, 123, 0, 8, 2, 99, 21, 0, 4, 2, 99, 101, 110, 99, 3, 72, 129, 0, 2, 99, 111, 109, 0, 2, 99, 114, 101, 97, 115,
-			0, 2, 116, 97, 105, 108, 0, 2, 116, 111, 117, 0, 2, 118, 105, 97, 0, 2, 118, 105, 111, 0, 109, 8, 2, 111, 110, 105, 3, 72,
-			129, 65, 0, 98, 117, 2, 103, 3, 72, 129, 71, 4, 125, 0, 7, 6, 100, 105, 0, 4, 2, 115, 98, 101, 21, 3, 4, 72, 122, 0,
-			2, 115, 99, 111, 110, 0, 2, 115, 111, 98, 0, 2, 115, 112, 111, 115, 115, 0, 2, 115, 112, 114, 111, 112, 0, 8, 2, 115, 97, 21,
-			0, 8, 2, 115, 114, 101, 0, 4, 8, 2, 115, 101, 14, 128, 132, 131, 3, 4, 72, 122, 89, 0, 115, 8, 2, 105, 110, 14, 128, 132,
-			131, 0, 115, 97, 8, 2, 112, 3, 4, 72, 122, 89, 13, 0, 4, 2, 103, 114, 101, 115, 3, 72, 2, 137, 0, 2, 109, 101, 110, 115,
-			0, 2, 111, 120, 0, 2, 118, 101, 114, 17, 67, 0, 2, 118, 101, 115, 116, 0, 2, 118, 117, 108, 0, 8, 2, 104, 21, 0, 103, 101,
-			2, 115, 116, 3, 72, 2, 137, 75, 121, 0, 4, 2, 99, 116, 97, 116, 3, 72, 113, 0, 2, 102, 102, 114, 97, 99, 0, 2, 102, 102,
-			117, 115, 0, 2, 109, 105, 110, 0, 2, 115, 97, 115, 116, 0, 2, 115, 99, 111, 118, 0, 2, 115, 105, 110, 116, 0, 2, 118, 105, 100,
-			0, 2, 118, 105, 110, 0, 2, 118, 105, 115, 0, 2, 118, 111, 114, 99, 0, 8, 2, 115, 21, 0, 8, 2, 115, 104, 101, 118, 12, 0,
-			115, 8, 2, 104, 17, 65, 3, 72, 113, 89, 0, 4, 2, 115, 99, 32, 3, 72, 122, 0, 2, 115, 99, 111, 32, 0, 2, 115, 99, 111,
-			114, 100, 32, 0, 2, 115, 99, 111, 116, 0, 2, 115, 99, 111, 117, 110, 116, 0, 2, 115, 104, 17, 67, 0, 2, 115, 104, 32, 0, 2,
-			115, 107, 0, 2, 115, 111, 108, 0, 2, 115, 112, 111, 115, 105, 116, 0, 2, 115, 115, 105, 100, 0, 2, 115, 115, 105, 112, 0, 2, 115,
-			115, 111, 108, 117, 0, 2, 115, 115, 111, 110, 0, 2, 115, 116, 97, 110, 0, 2, 115, 116, 105, 108, 108, 97, 116, 101, 0, 2, 115, 116,
-			114, 105, 0, 108, 105, 2, 103, 3, 72, 122, 55, 122, 0, 118, 105, 2, 100, 101, 110, 3, 72, 122, 84, 122, 0, 115, 99, 105, 112, 108,
-			105, 3, 72, 122, 89, 122, 48, 55, 122, 0, 4, 2, 99, 104, 114, 111, 3, 72, 137, 0, 2, 115, 115, 101, 99, 116, 0, 2, 115, 117,
-			108, 0, 4, 97, 8, 2, 103, 111, 110, 3, 72, 137, 6, 35, 0, 97, 8, 2, 110, 0, 97, 8, 3, 72, 137, 13, 0, 99, 104, 111,
-			2, 116, 3, 72, 137, 49, 6, 124, 0, 108, 117, 2, 116, 3, 72, 137, 55, 6, 134, 0, 97, 8, 2, 108, 3, 72, 144, 0, 7, 6,
-			101, 97, 0, 4, 1, 104, 2, 100, 109, 17, 65, 21, 3, 2, 121, 0, 1, 104, 2, 100, 113, 0, 1, 114, 2, 32, 3, 6, 141, 0,
-			110, 1, 112, 2, 32, 3, 6, 141, 50, 0, 1, 21, 2, 116, 105, 118, 101, 3, 8, 141, 0, 4, 1, 10, 2, 98, 105, 108, 105, 3,
-			13, 0, 1, 10, 2, 98, 108, 0, 98, 108, 121, 1, 10, 3, 13, 71, 55, 2, 122, 0, 117, 2, 116, 3, 57, 134, 0, 4, 1, 17,
-			67, 2, 108, 116, 3, 121, 0, 1, 17, 67, 2, 118, 101, 110, 0, 1, 100, 2, 102, 0, 1, 100, 2, 116, 104, 0, 1, 100, 110, 101,
-			2, 118, 0, 1, 102, 2, 116, 104, 0, 1, 104, 2, 116, 104, 101, 114, 0, 1, 108, 2, 100, 101, 110, 0, 1, 114, 2, 100, 105, 101,
-			100, 0, 1, 114, 2, 100, 105, 108, 121, 0, 1, 114, 2, 100, 121, 0, 1, 114, 98, 2, 100, 0, 1, 114, 98, 2, 115, 0, 1, 114,
-			98, 2, 116, 104, 0, 1, 114, 104, 116, 2, 100, 0, 1, 114, 104, 116, 2, 116, 0, 1, 114, 112, 115, 2, 100, 0, 1, 114, 116, 2,
-			99, 104, 101, 114, 0, 1, 114, 116, 2, 100, 0, 1, 116, 115, 2, 100, 0, 1, 119, 115, 2, 116, 0, 1, 122, 2, 108, 111, 0, 8,
-			104, 2, 118, 105, 0, 8, 108, 2, 109, 105, 0, 8, 114, 100, 2, 100, 0, 112, 111, 1, 119, 3, 121, 48, 13, 0, 108, 111, 117, 1,
-			106, 3, 121, 55, 13, 0, 109, 2, 116, 32, 3, 121, 65, 48, 0, 4, 100, 1, 100, 3, 121, 72, 0, 100, 1, 104, 0, 100, 101, 100,
-			8, 108, 3, 121, 72, 113, 72, 0, 118, 121, 1, 104, 3, 121, 84, 37, 0, 4, 116, 104, 1, 108, 3, 121, 86, 0, 116, 104, 1, 119,
-			0, 4, 115, 2, 97, 110, 3, 121, 88, 0, 115, 2, 101, 110, 0, 115, 117, 114, 3, 121, 90, 114, 0, 4, 114, 1, 104, 2, 107, 3,
-			127, 0, 114, 1, 104, 2, 116, 0, 114, 1, 104, 2, 116, 104, 0, 4, 114, 1, 104, 2, 100, 3, 128, 0, 114, 1, 104, 2, 115, 101,
-			0, 114, 1, 104, 101, 114, 2, 115, 0, 114, 1, 108, 2, 110, 0, 114, 1, 112, 2, 108, 0, 114, 1, 115, 2, 99, 104, 0, 114, 1,
-			121, 2, 110, 0, 114, 2, 116, 104, 0, 114, 8, 2, 108, 0, 114, 8, 2, 110, 0, 4, 3, 129, 0, 1, 17, 67, 29, 2, 110, 32,
-			0, 1, 98, 2, 110, 0, 1, 102, 2, 108, 116, 0, 1, 104, 2, 118, 0, 1, 109, 2, 108, 116, 0, 1, 115, 17, 67, 2, 32, 0,
-			2, 110, 100, 101, 114, 3, 129, 6, 35, 0, 1, 114, 99, 2, 116, 3, 129, 6, 138, 0, 1, 104, 116, 2, 116, 114, 105, 3, 129, 35,
-			0, 100, 109, 101, 1, 114, 3, 129, 72, 65, 129, 0, 103, 101, 114, 3, 129, 81, 114, 0, 116, 104, 1, 114, 98, 2, 101, 3, 129, 86,
-			0, 115, 111, 2, 110, 3, 129, 88, 13, 0, 115, 101, 2, 21, 3, 129, 89, 0, 4, 117, 3, 136, 0, 117, 120, 0, 4, 1, 114, 98,
-			2, 107, 3, 138, 0, 1, 114, 103, 2, 116, 0, 1, 116, 115, 2, 107, 0, 4, 114, 1, 98, 3, 140, 0, 114, 1, 116, 2, 17, 65,
-			0, 114, 1, 119, 0, 114, 1, 119, 115, 0, 4, 1, 21, 2, 32, 3, 141, 0, 1, 104, 116, 2, 116, 0, 8, 98, 2, 116, 114, 105,
-			0, 110, 2, 32, 3, 141, 50, 0, 108, 1, 10, 2, 32, 3, 141, 55, 0, 4, 114, 3, 142, 0, 114, 1, 98, 2, 100, 0, 114, 1,
-			119, 2, 121, 0, 7, 6, 101, 100, 0, 4, 1, 21, 2, 105, 101, 110, 3, 6, 129, 72, 0, 1, 99, 2, 101, 32, 0, 1, 104, 2,
-			114, 97, 0, 1, 104, 2, 114, 97, 108, 0, 1, 104, 2, 114, 111, 110, 0, 1, 115, 114, 2, 101, 0, 117, 114, 1, 21, 3, 6, 129,
-			75, 114, 0, 1, 10, 2, 121, 3, 13, 72, 0, 4, 1, 99, 21, 2, 32, 14, 128, 155, 130, 3, 47, 0, 1, 102, 21, 2, 32, 14,
+			101, 0, 2, 195, 169, 12, 0, 8, 2, 97, 110, 100, 17, 65, 0, 8, 2, 97, 114, 116, 114, 101, 0, 8, 111, 2, 101, 0, 105, 111,
+			110, 3, 91, 13, 50, 0, 97, 112, 101, 114, 111, 110, 3, 91, 35, 48, 114, 139, 50, 0, 105, 99, 97, 2, 103, 3, 91, 113, 49, 121,
+			0, 105, 99, 97, 2, 110, 3, 91, 113, 49, 141, 0, 4, 97, 117, 2, 102, 3, 91, 139, 0, 97, 117, 2, 118, 0, 101, 122, 3, 91,
+			141, 0, 7, 6, 99, 111, 0, 109, 112, 8, 2, 116, 114, 3, 49, 2, 126, 65, 0, 4, 8, 2, 109, 21, 3, 49, 2, 127, 0, 8,
+			2, 110, 102, 105, 100, 101, 0, 8, 2, 110, 115, 117, 108, 116, 0, 4, 110, 8, 2, 21, 3, 49, 2, 127, 50, 0, 110, 8, 2, 118,
+			105, 0, 110, 116, 114, 97, 99, 2, 116, 3, 49, 2, 127, 50, 47, 34, 35, 49, 0, 110, 116, 114, 97, 114, 3, 49, 2, 127, 50, 47,
+			34, 143, 0, 4, 2, 104, 97, 98, 3, 49, 2, 139, 0, 8, 2, 97, 103, 0, 97, 2, 108, 101, 115, 3, 49, 2, 139, 13, 0, 4,
+			2, 109, 112, 117, 116, 97, 3, 49, 4, 126, 0, 8, 2, 110, 116, 114, 111, 118, 0, 114, 114, 101, 115, 112, 111, 3, 49, 4, 126, 34,
+			124, 89, 48, 6, 126, 0, 110, 116, 114, 97, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 49, 4, 126, 50, 47, 34, 13, 0, 110, 100,
+			101, 8, 2, 115, 99, 3, 49, 4, 126, 50, 72, 113, 0, 4, 8, 2, 99, 111, 110, 3, 49, 4, 139, 0, 8, 2, 100, 101, 112, 101,
+			110, 14, 128, 132, 130, 0, 8, 2, 101, 17, 67, 14, 128, 132, 130, 0, 8, 2, 99, 104, 97, 105, 114, 3, 49, 4, 139, 6, 0, 117,
+			110, 116, 101, 114, 8, 2, 21, 14, 128, 132, 135, 3, 49, 6, 138, 50, 47, 114, 0, 112, 111, 108, 121, 8, 3, 49, 6, 139, 48, 4,
+			126, 55, 124, 0, 4, 2, 108, 108, 97, 98, 3, 49, 13, 0, 2, 108, 108, 97, 112, 0, 2, 108, 108, 97, 116, 0, 2, 108, 108, 101,
+			99, 0, 2, 108, 108, 105, 100, 0, 2, 108, 108, 105, 115, 0, 2, 108, 108, 117, 0, 2, 108, 111, 115, 115, 0, 2, 109, 109, 101, 110,
+			115, 0, 2, 110, 115, 101, 99, 117, 0, 2, 110, 116, 114, 111, 108, 12, 0, 2, 114, 114, 101, 99, 116, 0, 2, 114, 114, 111, 0, 2,
+			114, 114, 117, 112, 0, 8, 2, 109, 112, 108, 0, 8, 2, 110, 100, 111, 108, 0, 8, 2, 110, 100, 111, 110, 0, 8, 2, 110, 118, 101,
+			110, 17, 65, 0, 110, 115, 105, 100, 101, 114, 3, 49, 13, 50, 89, 124, 72, 114, 0, 110, 110, 105, 118, 3, 49, 13, 50, 140, 84, 0,
+			108, 108, 101, 2, 103, 105, 3, 49, 13, 55, 132, 0, 108, 108, 111, 2, 113, 117, 105, 17, 65, 3, 49, 13, 55, 139, 0, 4, 109, 109,
+			117, 110, 2, 97, 3, 49, 13, 65, 57, 137, 50, 0, 109, 109, 117, 110, 2, 105, 0, 109, 101, 2, 100, 105, 3, 49, 13, 65, 132, 0,
+			4, 2, 109, 98, 97, 3, 49, 126, 0, 2, 109, 98, 105, 110, 97, 0, 2, 109, 101, 100, 121, 0, 2, 109, 109, 97, 32, 0, 2, 109,
+			109, 97, 110, 100, 97, 0, 2, 109, 109, 101, 110, 0, 2, 109, 109, 101, 114, 99, 101, 0, 2, 109, 109, 111, 100, 111, 114, 0, 2, 109,
+			109, 117, 116, 97, 0, 2, 109, 112, 101, 110, 115, 0, 2, 109, 112, 101, 114, 0, 2, 109, 112, 105, 108, 97, 0, 2, 109, 112, 108, 101,
+			109, 0, 2, 109, 112, 108, 101, 120, 32, 0, 2, 109, 112, 108, 105, 99, 97, 0, 2, 109, 112, 108, 105, 109, 0, 2, 109, 112, 111, 115,
+			116, 0, 2, 109, 112, 111, 117, 0, 2, 109, 112, 114, 101, 104, 101, 110, 0, 2, 109, 112, 114, 111, 109, 0, 2, 110, 115, 101, 99, 0,
+			2, 110, 115, 111, 110, 0, 2, 110, 115, 116, 97, 110, 0, 2, 110, 116, 105, 110, 101, 0, 8, 2, 103, 0, 8, 2, 109, 99, 0, 8,
+			2, 109, 105, 0, 8, 2, 109, 114, 0, 8, 2, 110, 99, 101, 112, 116, 32, 0, 8, 2, 110, 99, 105, 111, 117, 115, 0, 8, 2, 110,
+			99, 114, 101, 116, 0, 8, 2, 110, 100, 105, 109, 0, 8, 2, 110, 100, 111, 0, 8, 2, 110, 100, 117, 105, 116, 0, 8, 2, 110, 102,
+			101, 114, 101, 110, 0, 8, 2, 110, 102, 105, 100, 0, 8, 2, 110, 102, 105, 115, 0, 8, 2, 110, 102, 108, 117, 0, 8, 2, 110, 103,
+			114, 101, 0, 8, 2, 110, 105, 0, 8, 2, 110, 106, 117, 103, 0, 8, 2, 110, 113, 117, 101, 0, 8, 2, 110, 115, 99, 0, 8, 2,
+			110, 115, 111, 108, 101, 0, 8, 2, 110, 115, 116, 97, 98, 108, 0, 8, 2, 110, 115, 116, 105, 112, 0, 8, 2, 110, 115, 116, 105, 116,
+			117, 116, 0, 8, 2, 110, 115, 117, 108, 0, 8, 2, 110, 116, 97, 99, 116, 0, 8, 2, 110, 116, 111, 117, 114, 0, 8, 2, 110, 118,
+			111, 121, 0, 8, 2, 110, 119, 0, 8, 2, 114, 114, 0, 8, 2, 115, 109, 0, 112, 121, 8, 3, 49, 126, 48, 124, 0, 110, 110, 111,
+			105, 8, 2, 115, 3, 49, 126, 50, 13, 0, 110, 103, 114, 101, 115, 115, 5, 3, 8, 3, 49, 126, 50, 81, 34, 13, 89, 0, 110, 103,
+			114, 117, 3, 49, 126, 50, 81, 34, 137, 0, 110, 102, 105, 8, 2, 100, 101, 110, 3, 49, 126, 50, 83, 124, 0, 110, 118, 97, 2, 108,
+			3, 49, 126, 50, 84, 13, 0, 110, 99, 101, 8, 2, 110, 116, 114, 97, 3, 49, 126, 50, 89, 13, 0, 110, 115, 101, 114, 2, 118, 97,
+			116, 105, 111, 3, 49, 126, 50, 89, 114, 0, 110, 115, 101, 8, 2, 113, 3, 49, 126, 50, 89, 124, 0, 109, 109, 111, 110, 3, 49, 126,
+			65, 13, 50, 0, 109, 112, 97, 114, 97, 98, 3, 49, 126, 65, 48, 13, 34, 13, 71, 0, 109, 112, 101, 2, 116, 17, 65, 110, 3, 49,
+			126, 65, 48, 124, 0, 109, 112, 111, 5, 3, 2, 115, 116, 3, 49, 126, 65, 48, 139, 0, 109, 109, 117, 110, 2, 105, 115, 3, 49, 126,
+			65, 57, 137, 50, 0, 103, 110, 111, 8, 3, 49, 126, 81, 50, 13, 0, 4, 2, 109, 112, 111, 115, 105, 116, 3, 49, 127, 0, 5, 35,
+			8, 2, 114, 18, 68, 0, 8, 2, 110, 116, 101, 109, 112, 108, 0, 8, 2, 110, 116, 114, 17, 65, 0, 8, 2, 110, 116, 114, 105, 98,
+			0, 114, 111, 2, 108, 108, 3, 49, 127, 34, 126, 0, 110, 8, 2, 107, 3, 49, 127, 50, 0, 110, 116, 114, 97, 115, 116, 8, 3, 49,
+			127, 50, 47, 34, 120, 89, 47, 0, 109, 109, 117, 110, 3, 49, 127, 65, 57, 137, 50, 0, 4, 2, 109, 101, 32, 3, 49, 129, 0, 2,
+			109, 112, 97, 110, 121, 0, 2, 109, 112, 97, 115, 115, 32, 0, 8, 2, 109, 102, 0, 8, 2, 110, 106, 117, 114, 0, 109, 101, 2, 98,
+			3, 49, 129, 65, 0, 109, 102, 111, 114, 116, 97, 98, 3, 49, 129, 65, 83, 47, 13, 71, 0, 109, 102, 111, 114, 2, 116, 3, 49, 129,
+			65, 83, 114, 0, 109, 105, 110, 103, 3, 49, 129, 65, 113, 68, 0, 4, 8, 2, 102, 111, 117, 110, 3, 49, 139, 0, 8, 2, 103, 101,
+			110, 0, 8, 2, 108, 111, 99, 0, 8, 2, 109, 97, 0, 8, 2, 112, 101, 114, 112, 14, 128, 132, 130, 0, 8, 2, 112, 114, 111, 99,
+			14, 128, 132, 130, 0, 97, 2, 108, 105, 116, 3, 49, 139, 13, 0, 115, 116, 97, 114, 8, 3, 49, 139, 89, 47, 130, 0, 101, 8, 2,
+			108, 3, 89, 132, 0, 7, 6, 100, 101, 0, 8, 2, 104, 121, 100, 3, 4, 72, 132, 0, 4, 2, 97, 114, 99, 3, 72, 2, 132, 0,
+			2, 102, 108, 97, 116, 0, 2, 112, 101, 114, 0, 2, 112, 111, 108, 0, 2, 112, 111, 112, 0, 2, 114, 101, 103, 0, 2, 116, 111, 120,
+			0, 2, 116, 114, 97, 105, 0, 2, 118, 97, 108, 0, 8, 2, 97, 99, 116, 0, 8, 2, 97, 110, 105, 109, 0, 8, 2, 97, 117, 116,
+			104, 0, 8, 2, 101, 109, 112, 0, 8, 2, 109, 105, 108, 105, 116, 0, 8, 2, 111, 0, 8, 2, 116, 104, 0, 99, 97, 102, 102, 101,
+			105, 8, 3, 72, 2, 132, 49, 35, 83, 124, 0, 110, 105, 2, 116, 114, 105, 3, 72, 2, 132, 50, 140, 0, 4, 115, 2, 101, 103, 3,
+			72, 2, 132, 89, 0, 115, 2, 101, 110, 0, 115, 2, 117, 108, 0, 115, 116, 97, 2, 98, 3, 72, 2, 132, 89, 47, 141, 0, 4, 8,
+			2, 99, 111, 109, 3, 72, 4, 132, 0, 8, 2, 99, 111, 110, 0, 8, 2, 102, 114, 97, 103, 14, 128, 132, 130, 0, 8, 2, 114, 101,
+			115, 116, 0, 115, 101, 2, 108, 3, 72, 4, 132, 89, 113, 0, 4, 1, 108, 2, 32, 3, 72, 13, 0, 2, 118, 105, 108, 108, 0, 4,
+			2, 99, 111, 114, 117, 3, 72, 113, 0, 2, 100, 117, 0, 2, 109, 97, 0, 2, 109, 101, 110, 0, 2, 109, 105, 115, 101, 0, 2, 109,
+			111, 99, 114, 97, 99, 0, 2, 109, 111, 99, 114, 97, 116, 105, 18, 71, 0, 2, 109, 111, 114, 0, 2, 109, 111, 116, 0, 2, 109, 117,
+			114, 0, 2, 114, 105, 17, 67, 0, 2, 114, 111, 103, 97, 116, 111, 0, 8, 2, 98, 97, 0, 8, 2, 102, 21, 0, 8, 2, 103, 21,
+			0, 8, 2, 106, 0, 8, 2, 108, 21, 0, 8, 2, 110, 111, 0, 8, 2, 110, 117, 0, 8, 2, 112, 21, 0, 8, 2, 114, 97, 105,
+			0, 8, 2, 116, 21, 0, 8, 2, 118, 17, 65, 0, 116, 101, 115, 116, 3, 72, 113, 47, 122, 89, 47, 0, 116, 101, 114, 3, 72, 113,
+			47, 131, 0, 116, 101, 114, 2, 105, 3, 72, 113, 47, 144, 34, 0, 110, 105, 8, 2, 97, 3, 72, 113, 50, 140, 0, 109, 101, 97, 3,
+			72, 113, 65, 6, 132, 0, 109, 111, 2, 98, 105, 3, 72, 113, 65, 139, 0, 4, 115, 8, 2, 101, 114, 3, 72, 113, 88, 0, 115, 8,
+			2, 105, 0, 115, 115, 8, 2, 101, 114, 0, 4, 115, 2, 105, 115, 3, 72, 113, 89, 0, 115, 8, 2, 21, 0, 4, 2, 99, 105, 98,
+			3, 72, 122, 0, 2, 99, 105, 108, 0, 2, 99, 105, 109, 0, 2, 99, 111, 114, 0, 2, 99, 114, 101, 109, 0, 2, 102, 101, 114, 101,
+			110, 0, 2, 102, 105, 110, 105, 116, 0, 2, 102, 116, 0, 2, 108, 97, 119, 0, 2, 108, 101, 103, 0, 2, 108, 105, 99, 97, 0, 2,
+			108, 118, 12, 0, 2, 109, 97, 103, 111, 103, 0, 2, 112, 114, 101, 99, 97, 0, 2, 112, 116, 0, 2, 112, 117, 116, 0, 2, 114, 17,
+			65, 17, 67, 97, 116, 105, 111, 0, 2, 114, 101, 108, 0, 2, 116, 111, 110, 0, 2, 116, 114, 105, 0, 2, 118, 105, 108, 0, 2, 118,
+			111, 110, 0, 8, 2, 99, 107, 0, 8, 2, 108, 17, 67, 0, 8, 2, 114, 17, 65, 29, 0, 8, 2, 116, 17, 66, 0, 112, 111, 2,
+			115, 105, 116, 105, 3, 72, 122, 48, 13, 0, 99, 97, 2, 100, 101, 110, 3, 72, 122, 49, 13, 0, 108, 117, 2, 103, 3, 72, 122, 55,
+			57, 137, 0, 118, 97, 115, 8, 3, 72, 122, 84, 13, 89, 0, 115, 2, 105, 103, 110, 97, 3, 72, 122, 88, 0, 4, 115, 2, 101, 99,
+			3, 72, 122, 89, 0, 115, 2, 105, 99, 0, 115, 2, 111, 108, 0, 115, 2, 112, 111, 116, 0, 115, 8, 2, 104, 0, 115, 8, 2, 107,
+			0, 115, 8, 2, 112, 101, 114, 97, 116, 0, 115, 116, 105, 3, 72, 122, 89, 47, 124, 0, 4, 8, 2, 98, 105, 108, 3, 72, 125, 0,
+			8, 2, 99, 21, 0, 4, 2, 99, 101, 110, 99, 3, 72, 132, 0, 2, 99, 114, 101, 97, 115, 0, 2, 116, 97, 105, 108, 0, 2, 116,
+			111, 117, 0, 2, 118, 105, 97, 0, 2, 118, 105, 111, 0, 109, 8, 2, 111, 110, 105, 3, 72, 132, 65, 0, 98, 117, 2, 103, 3, 72,
+			132, 71, 4, 129, 0, 8, 2, 105, 115, 116, 3, 72, 141, 0, 7, 6, 100, 105, 0, 4, 2, 115, 98, 101, 21, 3, 4, 72, 124, 0,
+			2, 115, 99, 111, 110, 0, 2, 115, 111, 98, 0, 2, 115, 112, 111, 115, 115, 0, 2, 115, 112, 114, 111, 112, 0, 8, 2, 115, 114, 101,
+			0, 4, 8, 2, 115, 101, 14, 128, 132, 131, 3, 4, 72, 124, 89, 0, 115, 8, 2, 97, 21, 14, 128, 132, 131, 0, 115, 8, 2, 105,
+			110, 14, 128, 132, 131, 0, 4, 2, 103, 114, 101, 115, 3, 72, 2, 140, 0, 2, 109, 101, 110, 115, 0, 2, 111, 120, 0, 2, 118, 101,
+			114, 17, 67, 0, 2, 118, 101, 115, 116, 0, 2, 118, 117, 108, 0, 8, 2, 104, 21, 0, 103, 101, 2, 115, 116, 3, 72, 2, 140, 75,
+			122, 0, 4, 2, 99, 116, 97, 116, 3, 72, 113, 0, 2, 102, 102, 114, 97, 99, 0, 2, 102, 102, 117, 115, 0, 2, 109, 105, 110, 0,
+			2, 115, 97, 115, 116, 0, 2, 115, 99, 111, 118, 0, 2, 115, 105, 110, 116, 0, 2, 118, 105, 100, 0, 2, 118, 105, 110, 0, 2, 118,
+			105, 115, 0, 2, 118, 111, 114, 99, 0, 5, 3, 2, 109, 101, 110, 115, 0, 8, 2, 115, 21, 0, 8, 2, 115, 104, 101, 118, 12, 0,
+			115, 8, 2, 104, 17, 65, 14, 128, 132, 131, 3, 72, 113, 89, 0, 4, 2, 115, 99, 32, 3, 72, 124, 0, 2, 115, 99, 111, 32, 0,
+			2, 115, 99, 111, 114, 100, 32, 0, 2, 115, 99, 111, 116, 0, 2, 115, 99, 111, 117, 110, 116, 0, 2, 115, 104, 17, 67, 0, 2, 115,
+			104, 32, 0, 2, 115, 107, 0, 2, 115, 111, 108, 0, 2, 115, 112, 111, 115, 105, 116, 0, 2, 115, 115, 105, 100, 0, 2, 115, 115, 105,
+			112, 0, 2, 115, 115, 111, 108, 117, 0, 2, 115, 115, 111, 110, 0, 2, 115, 116, 97, 110, 0, 2, 115, 116, 105, 108, 108, 97, 116, 101,
+			0, 2, 115, 116, 114, 105, 0, 108, 105, 2, 103, 3, 72, 124, 55, 124, 0, 118, 105, 2, 100, 101, 110, 3, 72, 124, 84, 124, 0, 115,
+			99, 105, 112, 108, 105, 3, 72, 124, 89, 124, 48, 55, 124, 0, 4, 2, 99, 104, 114, 111, 3, 72, 140, 0, 2, 115, 115, 101, 99, 116,
+			0, 2, 115, 117, 108, 0, 8, 2, 111, 110, 18, 67, 0, 97, 8, 2, 110, 3, 72, 140, 6, 35, 0, 97, 103, 111, 8, 3, 72, 140,
+			6, 35, 81, 13, 0, 97, 8, 3, 72, 140, 13, 0, 99, 104, 111, 2, 116, 3, 72, 140, 49, 6, 126, 0, 108, 117, 2, 116, 3, 72,
+			140, 55, 6, 137, 0, 97, 8, 2, 108, 3, 72, 147, 0, 97, 109, 111, 110, 100, 8, 3, 72, 147, 65, 13, 50, 72, 0, 7, 6, 101,
+			97, 0, 4, 1, 104, 2, 100, 109, 17, 65, 21, 3, 2, 122, 0, 1, 104, 2, 100, 113, 0, 1, 114, 2, 32, 3, 6, 144, 0, 110,
+			1, 112, 2, 32, 3, 6, 144, 50, 0, 1, 21, 2, 116, 105, 118, 101, 3, 8, 144, 0, 4, 1, 10, 2, 98, 105, 108, 105, 3, 13,
+			0, 1, 10, 2, 98, 108, 0, 98, 108, 121, 1, 10, 3, 13, 71, 55, 2, 124, 0, 117, 2, 116, 3, 57, 137, 0, 4, 1, 17, 67,
+			2, 108, 116, 3, 122, 0, 1, 17, 67, 2, 118, 101, 110, 0, 1, 100, 2, 102, 0, 1, 100, 2, 116, 104, 0, 1, 100, 110, 101, 2,
+			118, 0, 1, 102, 2, 116, 104, 0, 1, 104, 2, 116, 104, 101, 114, 0, 1, 106, 2, 108, 111, 117, 0, 1, 108, 2, 100, 101, 110, 0,
+			1, 114, 2, 100, 105, 101, 100, 0, 1, 114, 2, 100, 105, 108, 121, 0, 1, 114, 2, 100, 121, 0, 1, 114, 98, 2, 100, 0, 1, 114,
+			98, 2, 115, 0, 1, 114, 98, 2, 116, 104, 0, 1, 114, 104, 116, 2, 100, 0, 1, 114, 104, 116, 2, 116, 0, 1, 114, 112, 115, 2,
+			100, 0, 1, 114, 116, 2, 99, 104, 101, 114, 0, 1, 114, 116, 2, 100, 0, 1, 116, 115, 2, 100, 0, 1, 119, 115, 2, 116, 0, 1,
+			122, 2, 108, 111, 0, 8, 104, 2, 118, 105, 0, 8, 108, 2, 109, 105, 0, 8, 114, 100, 2, 100, 0, 112, 111, 1, 119, 3, 122, 48,
+			13, 0, 109, 2, 116, 32, 3, 122, 65, 48, 0, 4, 100, 1, 100, 3, 122, 72, 0, 100, 1, 104, 0, 100, 101, 100, 8, 108, 3, 122,
+			72, 113, 72, 0, 118, 121, 1, 104, 3, 122, 84, 37, 0, 4, 116, 104, 1, 108, 3, 122, 86, 0, 116, 104, 1, 119, 0, 4, 115, 2,
+			97, 110, 3, 122, 88, 0, 115, 2, 101, 110, 0, 115, 117, 114, 3, 122, 90, 114, 0, 4, 114, 1, 104, 2, 107, 3, 130, 0, 114, 1,
+			104, 2, 116, 0, 114, 1, 104, 2, 116, 104, 0, 4, 114, 1, 104, 2, 100, 3, 131, 0, 114, 1, 104, 2, 115, 0, 114, 1, 108, 2,
+			110, 0, 114, 1, 112, 2, 108, 0, 114, 1, 115, 2, 99, 104, 0, 114, 1, 121, 2, 110, 0, 114, 2, 116, 104, 0, 114, 8, 2, 108,
+			0, 114, 8, 2, 110, 0, 4, 3, 132, 0, 1, 17, 67, 29, 2, 110, 32, 0, 1, 102, 2, 108, 116, 0, 1, 104, 2, 118, 0, 1,
+			109, 2, 108, 116, 0, 1, 115, 17, 67, 2, 32, 0, 2, 110, 100, 101, 114, 3, 132, 6, 35, 0, 1, 114, 99, 2, 116, 3, 132, 6,
+			141, 0, 1, 104, 116, 2, 116, 114, 105, 3, 132, 35, 0, 100, 109, 101, 1, 114, 3, 132, 72, 65, 132, 0, 103, 101, 114, 3, 132, 81,
+			114, 0, 116, 104, 1, 114, 98, 2, 101, 3, 132, 86, 0, 115, 1, 102, 2, 97, 110, 3, 132, 88, 0, 115, 111, 2, 110, 3, 132, 88,
+			13, 0, 115, 101, 2, 21, 3, 132, 89, 0, 4, 117, 3, 139, 0, 117, 120, 0, 4, 1, 114, 98, 2, 107, 3, 141, 0, 1, 114, 103,
+			2, 116, 0, 1, 116, 115, 2, 107, 0, 4, 114, 1, 98, 3, 143, 0, 114, 1, 116, 2, 17, 65, 0, 114, 1, 119, 0, 114, 1, 119,
+			115, 0, 4, 1, 21, 2, 32, 3, 144, 0, 1, 104, 116, 2, 116, 0, 8, 98, 2, 116, 114, 105, 0, 110, 2, 32, 3, 144, 50, 0,
+			108, 1, 10, 2, 32, 3, 144, 55, 0, 4, 114, 3, 145, 0, 114, 1, 98, 2, 100, 0, 114, 1, 119, 2, 121, 0, 7, 6, 101, 100,
+			0, 4, 1, 21, 2, 105, 101, 110, 3, 6, 132, 72, 0, 1, 99, 2, 101, 32, 0, 1, 104, 2, 114, 97, 0, 1, 104, 2, 114, 97,
+			108, 0, 1, 104, 2, 114, 111, 110, 0, 1, 115, 114, 2, 101, 0, 117, 114, 1, 21, 3, 6, 132, 75, 114, 0, 4, 1, 10, 2, 121,
+			3, 13, 72, 0, 1, 21, 2, 116, 104, 32, 0, 4, 1, 99, 21, 2, 32, 14, 128, 155, 130, 3, 47, 0, 1, 102, 21, 2, 32, 14,
 			128, 155, 130, 0, 1, 104, 99, 10, 2, 32, 14, 128, 139, 130, 0, 1, 104, 115, 10, 2, 32, 14, 128, 139, 130, 0, 1, 107, 21, 2,
 			32, 14, 128, 155, 130, 0, 1, 112, 21, 2, 32, 14, 128, 155, 130, 0, 1, 115, 115, 21, 2, 32, 14, 128, 152, 130, 0, 1, 120, 21,
 			2, 32, 14, 128, 138, 130, 0, 4, 1, 17, 67, 21, 2, 32, 14, 128, 155, 130, 3, 72, 0, 1, 21, 21, 2, 32, 14, 128, 155, 130,
 			0, 1, 103, 21, 2, 32, 14, 128, 138, 129, 0, 1, 105, 17, 65, 2, 32, 14, 128, 153, 130, 0, 1, 108, 99, 2, 32, 14, 128, 136,
 			129, 0, 1, 108, 101, 2, 32, 14, 128, 152, 130, 0, 1, 110, 101, 10, 2, 32, 14, 128, 136, 130, 0, 1, 114, 101, 21, 21, 2, 32,
-			14, 128, 136, 130, 0, 1, 121, 2, 32, 14, 128, 136, 130, 0, 4, 1, 104, 115, 17, 67, 21, 2, 32, 3, 121, 72, 0, 1, 119, 121,
-			2, 32, 0, 5, 8, 1, 100, 21, 2, 32, 14, 128, 155, 130, 0, 5, 8, 1, 116, 21, 2, 32, 14, 128, 155, 130, 0, 97, 108, 1,
-			112, 3, 121, 72, 118, 0, 105, 98, 1, 114, 99, 3, 121, 72, 122, 71, 0, 103, 2, 101, 13, 3, 121, 75, 0, 4, 1, 114, 100, 21,
-			2, 32, 3, 122, 72, 0, 1, 114, 102, 21, 2, 32, 14, 128, 136, 130, 0, 108, 121, 2, 32, 3, 122, 72, 55, 2, 122, 0, 4, 1,
-			100, 21, 2, 32, 14, 128, 155, 130, 3, 123, 72, 0, 1, 116, 21, 2, 32, 14, 128, 155, 130, 0, 4, 1, 109, 2, 105, 97, 3, 129,
-			72, 0, 1, 109, 2, 105, 111, 0, 1, 109, 2, 105, 117, 0, 1, 112, 2, 101, 32, 0, 1, 116, 2, 105, 0, 1, 119, 115, 0, 105,
-			97, 116, 101, 1, 109, 21, 3, 129, 72, 113, 13, 47, 0, 7, 6, 101, 105, 0, 4, 1, 108, 2, 115, 3, 121, 0, 99, 101, 1, 108,
-			2, 115, 116, 0, 4, 1, 102, 2, 116, 32, 3, 122, 0, 1, 102, 2, 116, 101, 0, 2, 110, 97, 116, 101, 0, 4, 1, 21, 2, 110,
-			32, 3, 129, 0, 1, 21, 2, 110, 101, 0, 1, 99, 0, 2, 116, 104, 0, 2, 118, 0, 2, 122, 0, 103, 104, 1, 108, 0, 108, 1,
-			110, 3, 129, 55, 0, 103, 104, 1, 107, 3, 129, 87, 0, 4, 1, 98, 2, 110, 103, 3, 129, 122, 0, 1, 104, 116, 2, 115, 17, 67,
-			0, 4, 1, 104, 2, 116, 32, 3, 137, 0, 2, 115, 116, 101, 114, 0, 5, 35, 2, 116, 104, 101, 114, 0, 8, 0, 103, 104, 1, 104,
-			2, 116, 0, 114, 8, 3, 137, 34, 0, 4, 115, 2, 101, 3, 137, 88, 0, 115, 8, 115, 2, 109, 0, 99, 104, 3, 137, 101, 0, 4,
-			3, 138, 0, 103, 2, 110, 0, 103, 104, 0, 103, 104, 1, 108, 115, 0, 103, 104, 116, 104, 3, 138, 47, 87, 0, 114, 3, 140, 0, 114,
-			1, 119, 3, 142, 0, 7, 6, 101, 108, 0, 4, 8, 2, 17, 65, 3, 2, 122, 55, 0, 108, 8, 2, 105, 112, 0, 101, 8, 2, 99,
-			116, 114, 111, 3, 2, 122, 55, 4, 121, 0, 101, 8, 2, 99, 116, 114, 111, 108, 3, 2, 122, 55, 121, 0, 105, 116, 8, 3, 2, 122,
-			55, 129, 47, 0, 4, 1, 99, 120, 2, 32, 3, 6, 121, 55, 0, 1, 108, 108, 97, 2, 111, 0, 1, 110, 110, 111, 2, 32, 0, 1,
-			112, 2, 32, 0, 2, 105, 103, 105, 0, 108, 97, 1, 10, 2, 32, 3, 6, 121, 55, 13, 0, 111, 112, 1, 118, 3, 6, 121, 55, 13,
-			48, 0, 108, 105, 1, 21, 2, 32, 3, 6, 121, 55, 122, 0, 4, 1, 100, 2, 105, 118, 3, 13, 55, 0, 1, 118, 2, 111, 99, 0,
-			108, 1, 10, 2, 111, 117, 115, 0, 108, 101, 114, 1, 118, 10, 2, 32, 3, 13, 55, 13, 0, 108, 105, 110, 103, 1, 10, 3, 13, 55,
-			113, 68, 0, 1, 115, 2, 101, 99, 116, 3, 113, 55, 0, 4, 1, 10, 2, 32, 3, 118, 0, 1, 10, 2, 115, 32, 0, 1, 116, 2,
-			112, 0, 4, 1, 98, 105, 99, 2, 32, 3, 121, 55, 0, 1, 108, 108, 97, 0, 5, 8, 1, 10, 2, 32, 0, 5, 8, 1, 10, 2,
-			115, 32, 0, 111, 2, 113, 3, 121, 55, 13, 0, 115, 101, 8, 3, 121, 55, 89, 0, 101, 8, 2, 99, 116, 114, 111, 110, 3, 121, 55,
-			121, 0, 4, 101, 8, 2, 103, 3, 121, 55, 122, 0, 101, 8, 2, 112, 0, 101, 8, 2, 118, 97, 0, 101, 109, 8, 3, 121, 55, 122,
-			65, 0, 101, 1, 107, 115, 2, 116, 3, 121, 55, 123, 0, 1, 102, 2, 105, 120, 3, 129, 55, 0, 7, 6, 101, 109, 0, 8, 3, 2,
-			121, 65, 0, 1, 21, 2, 98, 101, 114, 3, 6, 121, 65, 0, 1, 104, 112, 115, 2, 101, 3, 6, 129, 65, 0, 4, 1, 10, 2, 32,
-			3, 13, 65, 0, 1, 10, 2, 121, 32, 0, 1, 104, 112, 115, 0, 4, 2, 105, 115, 115, 105, 3, 113, 65, 0, 2, 117, 108, 115, 0,
-			8, 2, 97, 0, 8, 2, 101, 0, 8, 2, 105, 116, 0, 8, 2, 111, 0, 109, 2, 97, 110, 0, 4, 2, 97, 110, 97, 3, 121, 65,
-			0, 2, 98, 108, 101, 109, 0, 2, 98, 114, 121, 0, 2, 101, 114, 97, 108, 0, 2, 101, 114, 121, 0, 2, 105, 0, 2, 112, 97, 116,
-			104, 0, 2, 112, 101, 114, 0, 2, 112, 104, 97, 115, 0, 2, 112, 114, 101, 115, 0, 2, 112, 116, 105, 0, 2, 112, 116, 121, 0, 2,
-			117, 108, 0, 109, 2, 101, 0, 111, 114, 114, 104, 1, 104, 3, 121, 65, 13, 34, 0, 98, 97, 2, 115, 3, 121, 65, 71, 13, 0, 4,
-			1, 102, 2, 97, 108, 101, 3, 129, 65, 0, 1, 104, 2, 111, 0, 2, 97, 105, 108, 0, 7, 6, 101, 110, 0, 4, 2, 100, 101, 97,
-			3, 2, 121, 50, 0, 2, 105, 103, 109, 97, 32, 0, 2, 109, 101, 115, 0, 8, 2, 21, 0, 8, 2, 100, 97, 0, 8, 2, 100, 117,
-			0, 8, 2, 116, 105, 0, 110, 8, 0, 114, 111, 108, 3, 2, 121, 50, 34, 136, 55, 0, 114, 97, 103, 101, 3, 2, 121, 50, 34, 138,
-			75, 0, 116, 105, 99, 101, 1, 10, 3, 2, 121, 50, 47, 137, 89, 0, 108, 105, 2, 118, 3, 2, 121, 50, 55, 137, 0, 100, 111, 114,
-			8, 3, 2, 121, 50, 72, 133, 0, 99, 104, 97, 8, 2, 110, 3, 2, 121, 50, 76, 120, 0, 118, 105, 114, 111, 3, 2, 121, 50, 84,
-			137, 34, 13, 0, 116, 104, 114, 97, 2, 108, 3, 2, 121, 50, 87, 34, 130, 0, 99, 121, 2, 99, 108, 105, 3, 2, 121, 50, 89, 122,
-			0, 115, 104, 114, 105, 110, 101, 3, 2, 121, 50, 91, 34, 137, 50, 0, 2, 116, 101, 114, 116, 3, 4, 121, 50, 0, 2, 116, 114, 101,
-			112, 3, 4, 124, 50, 0, 4, 1, 21, 2, 100, 111, 32, 3, 6, 121, 50, 0, 1, 21, 2, 116, 18, 68, 32, 0, 1, 21, 2, 116,
-			97, 108, 0, 1, 21, 2, 116, 111, 117, 115, 0, 1, 21, 2, 116, 117, 0, 1, 108, 108, 105, 109, 2, 105, 97, 0, 1, 115, 101, 114,
-			112, 101, 2, 116, 0, 1, 115, 115, 2, 116, 0, 1, 116, 115, 111, 2, 115, 0, 2, 100, 17, 65, 32, 0, 2, 116, 105, 97, 108, 0,
-			110, 2, 105, 97, 0, 116, 97, 114, 121, 1, 109, 2, 32, 3, 6, 121, 50, 47, 13, 34, 2, 37, 0, 107, 111, 1, 10, 2, 32, 3,
-			6, 121, 50, 49, 136, 0, 100, 114, 111, 110, 2, 32, 3, 6, 121, 50, 72, 34, 13, 50, 0, 115, 107, 2, 32, 3, 6, 121, 50, 89,
-			49, 0, 103, 2, 32, 3, 6, 121, 68, 0, 4, 2, 97, 32, 3, 6, 129, 50, 0, 2, 97, 114, 121, 0, 2, 105, 97, 0, 111, 117,
-			115, 1, 21, 2, 32, 3, 8, 13, 50, 13, 89, 0, 101, 115, 1, 104, 116, 21, 21, 2, 32, 3, 8, 13, 50, 129, 88, 0, 4, 1,
-			10, 2, 17, 65, 110, 99, 101, 3, 13, 50, 0, 1, 10, 2, 32, 0, 1, 10, 2, 99, 101, 32, 0, 1, 10, 2, 101, 100, 32, 0,
-			1, 10, 2, 101, 114, 32, 0, 1, 10, 2, 109, 101, 110, 116, 0, 1, 10, 2, 116, 32, 0, 1, 10, 2, 116, 104, 32, 0, 1, 99,
-			114, 101, 109, 0, 1, 103, 101, 2, 100, 0, 1, 112, 114, 97, 99, 0, 1, 118, 18, 66, 2, 116, 32, 0, 1, 118, 21, 21, 2, 116,
-			32, 0, 99, 121, 1, 10, 2, 32, 3, 13, 50, 89, 2, 37, 0, 105, 110, 101, 1, 10, 3, 13, 50, 129, 50, 0, 4, 8, 2, 111,
-			3, 113, 50, 0, 8, 2, 111, 117, 103, 104, 0, 8, 2, 117, 0, 97, 8, 2, 109, 3, 113, 50, 35, 0, 4, 1, 10, 2, 99, 104,
-			3, 121, 50, 0, 1, 99, 114, 101, 112, 2, 116, 0, 1, 99, 115, 97, 2, 116, 0, 1, 102, 2, 99, 101, 32, 0, 1, 107, 2, 100,
-			32, 0, 1, 115, 110, 2, 116, 0, 1, 116, 110, 2, 116, 0, 1, 116, 120, 2, 116, 0, 1, 118, 2, 116, 32, 0, 2, 100, 111, 117,
-			115, 0, 2, 105, 103, 0, 2, 115, 105, 103, 0, 2, 116, 101, 114, 0, 2, 116, 105, 0, 2, 116, 105, 116, 121, 0, 2, 116, 114, 97,
-			110, 0, 2, 116, 114, 105, 0, 2, 116, 114, 111, 0, 2, 118, 105, 17, 65, 0, 2, 118, 111, 121, 0, 2, 118, 121, 0, 2, 122, 121,
-			0, 5, 8, 1, 10, 2, 99, 101, 32, 0, 5, 8, 1, 10, 2, 116, 32, 0, 8, 2, 100, 0, 8, 2, 101, 0, 8, 2, 109, 0,
-			8, 2, 116, 114, 121, 0, 8, 99, 115, 101, 100, 2, 116, 0, 8, 115, 101, 114, 2, 116, 0, 101, 109, 1, 116, 3, 121, 50, 13, 65,
-			0, 116, 105, 8, 99, 3, 121, 50, 47, 122, 0, 99, 108, 97, 118, 3, 121, 50, 49, 55, 138, 84, 0, 100, 111, 119, 3, 121, 50, 72,
-			6, 135, 0, 100, 111, 8, 3, 121, 50, 72, 136, 0, 103, 105, 110, 3, 121, 50, 75, 122, 50, 0, 103, 105, 110, 103, 3, 121, 50, 75,
-			122, 68, 0, 101, 114, 8, 3, 121, 50, 114, 0, 103, 2, 116, 104, 3, 121, 68, 0, 4, 1, 10, 2, 103, 101, 114, 3, 122, 50, 0,
-			1, 107, 99, 105, 104, 99, 0, 103, 2, 108, 17, 65, 3, 122, 68, 81, 0, 4, 2, 99, 111, 114, 101, 3, 124, 50, 0, 2, 116, 114,
-			101, 99, 0, 4, 1, 99, 115, 2, 101, 3, 129, 50, 0, 1, 103, 2, 105, 17, 65, 0, 2, 97, 108, 32, 0, 8, 115, 2, 105, 0,
-			101, 2, 32, 0, 4, 105, 1, 108, 2, 101, 3, 129, 50, 122, 0, 105, 1, 118, 2, 101, 0, 101, 97, 8, 103, 3, 129, 50, 122, 6,
-			35, 0, 7, 6, 101, 111, 0, 8, 103, 3, 4, 122, 124, 0, 1, 21, 21, 2, 32, 3, 6, 138, 136, 0, 117, 115, 1, 10, 2, 32,
-			3, 8, 141, 89, 0, 4, 110, 1, 103, 3, 13, 50, 0, 110, 1, 104, 99, 0, 1, 104, 116, 2, 21, 3, 113, 13, 0, 1, 103, 3,
-			113, 124, 0, 4, 101, 115, 2, 32, 3, 113, 136, 88, 0, 115, 2, 32, 0, 4, 1, 103, 2, 102, 102, 3, 121, 0, 1, 106, 2, 112,
-			0, 4, 1, 104, 116, 2, 99, 114, 97, 99, 121, 3, 122, 6, 124, 0, 1, 104, 116, 2, 108, 111, 103, 105, 115, 0, 1, 104, 116, 2,
-			108, 111, 103, 121, 0, 4, 1, 102, 3, 129, 0, 1, 112, 2, 112, 108, 0, 115, 105, 115, 1, 21, 3, 129, 6, 136, 89, 122, 89, 0,
-			114, 8, 103, 3, 132, 0, 2, 100, 32, 3, 135, 0, 118, 101, 114, 3, 136, 84, 13, 0, 114, 8, 3, 138, 114, 0, 4, 1, 104, 116,
-			2, 114, 3, 141, 0, 8, 108, 0, 97, 2, 32, 0, 7, 6, 101, 114, 0, 109, 101, 8, 102, 2, 110, 116, 3, 2, 128, 65, 121, 0,
-			4, 1, 21, 2, 105, 116, 121, 3, 6, 121, 34, 0, 2, 105, 99, 32, 0, 2, 105, 99, 97, 108, 0, 4, 1, 21, 2, 17, 67, 97,
-			108, 32, 3, 6, 128, 0, 1, 21, 2, 17, 67, 105, 99, 32, 0, 1, 21, 2, 115, 105, 97, 108, 0, 1, 109, 2, 103, 101, 0, 1,
-			118, 2, 103, 101, 0, 1, 118, 2, 115, 97, 108, 0, 2, 98, 105, 97, 108, 0, 2, 103, 105, 99, 32, 0, 2, 110, 97, 108, 32, 0,
-			2, 115, 105, 111, 110, 0, 114, 101, 100, 2, 32, 3, 6, 128, 72, 0, 103, 105, 110, 103, 3, 6, 128, 75, 113, 68, 0, 1, 21, 2,
-			111, 32, 3, 6, 140, 34, 0, 105, 2, 17, 65, 3, 6, 141, 34, 2, 122, 0, 101, 97, 108, 3, 6, 141, 34, 113, 118, 0, 4, 1,
-			104, 100, 97, 2, 101, 3, 6, 142, 0, 1, 104, 111, 99, 2, 101, 0, 101, 1, 99, 2, 32, 0, 4, 1, 10, 2, 111, 17, 67, 101,
-			32, 3, 8, 13, 34, 0, 1, 10, 2, 111, 117, 115, 0, 4, 105, 115, 101, 1, 10, 2, 32, 3, 8, 13, 34, 137, 88, 0, 105, 122,
-			101, 1, 10, 2, 32, 0, 121, 2, 32, 3, 13, 34, 2, 37, 0, 97, 108, 1, 21, 2, 105, 116, 121, 3, 13, 34, 6, 35, 55, 0,
-			4, 105, 115, 1, 10, 2, 97, 3, 13, 34, 137, 88, 0, 105, 122, 1, 10, 2, 97, 0, 116, 111, 1, 104, 2, 32, 3, 13, 47, 134,
-			0, 97, 1, 109, 97, 99, 3, 14, 34, 13, 0, 4, 1, 21, 2, 101, 110, 99, 101, 32, 3, 34, 0, 2, 101, 110, 116, 32, 0, 97,
-			109, 1, 10, 2, 101, 110, 116, 3, 34, 13, 65, 0, 105, 101, 115, 2, 32, 14, 128, 130, 130, 3, 88, 0, 4, 1, 99, 2, 97, 109,
-			3, 113, 34, 0, 8, 2, 17, 65, 0, 8, 104, 2, 101, 100, 0, 101, 1, 104, 2, 100, 105, 3, 113, 34, 121, 0, 101, 1, 105, 2,
-			32, 3, 113, 140, 0, 4, 1, 10, 3, 114, 0, 1, 10, 2, 32, 0, 1, 10, 2, 110, 32, 0, 1, 10, 2, 115, 32, 0, 1, 10,
-			2, 116, 32, 0, 1, 17, 67, 11, 2, 32, 14, 128, 128, 131, 0, 1, 21, 21, 21, 2, 32, 14, 128, 145, 130, 0, 1, 98, 109, 2,
-			32, 0, 1, 99, 115, 97, 2, 116, 0, 1, 108, 108, 2, 32, 14, 128, 128, 130, 0, 1, 108, 108, 97, 2, 32, 0, 1, 110, 105, 108,
-			2, 32, 14, 128, 128, 129, 0, 1, 110, 114, 2, 32, 14, 128, 128, 130, 0, 1, 112, 2, 99, 101, 110, 0, 1, 112, 2, 104, 97, 112,
-			0, 1, 114, 101, 2, 32, 14, 128, 128, 130, 0, 1, 115, 115, 2, 32, 14, 128, 128, 130, 0, 101, 1, 10, 2, 32, 0, 101, 1, 10,
-			2, 32, 0, 4, 1, 10, 2, 17, 65, 3, 114, 34, 0, 1, 10, 2, 105, 110, 103, 0, 2, 105, 101, 0, 2, 105, 101, 32, 0, 121,
-			2, 17, 65, 3, 114, 57, 0, 4, 115, 1, 17, 67, 11, 2, 32, 14, 128, 128, 132, 3, 114, 88, 0, 115, 1, 108, 108, 2, 32, 14,
-			128, 128, 131, 0, 115, 1, 110, 105, 108, 2, 32, 14, 128, 128, 130, 0, 115, 1, 114, 101, 2, 32, 14, 128, 128, 131, 0, 115, 1, 115,
-			115, 2, 32, 14, 128, 128, 131, 0, 5, 8, 1, 10, 2, 32, 3, 119, 0, 115, 5, 8, 1, 17, 67, 11, 2, 32, 14, 128, 128, 132,
-			3, 119, 88, 0, 2, 114, 17, 65, 3, 121, 0, 4, 2, 105, 17, 67, 3, 121, 34, 0, 8, 2, 117, 100, 0, 8, 17, 67, 17, 67,
-			2, 17, 65, 0, 8, 104, 2, 17, 65, 0, 114, 1, 17, 67, 29, 0, 114, 8, 2, 17, 65, 0, 114, 121, 5, 3, 1, 98, 2, 32,
-			3, 121, 34, 2, 122, 0, 4, 101, 1, 104, 2, 115, 3, 121, 34, 13, 0, 101, 1, 104, 2, 116, 0, 4, 101, 1, 99, 2, 109, 111,
-			110, 3, 121, 34, 113, 0, 101, 1, 104, 2, 102, 0, 121, 8, 118, 0, 101, 111, 1, 116, 115, 3, 121, 34, 113, 136, 0, 97, 108, 1,
-			103, 2, 100, 3, 121, 34, 118, 0, 4, 5, 35, 1, 104, 2, 116, 102, 3, 127, 0, 5, 35, 8, 100, 2, 98, 0, 4, 3, 128, 0,
-			1, 17, 67, 29, 0, 1, 21, 2, 115, 121, 0, 1, 99, 2, 110, 32, 0, 1, 99, 2, 116, 0, 1, 99, 110, 111, 99, 2, 116, 32,
-			0, 1, 104, 2, 116, 122, 0, 1, 109, 2, 99, 0, 1, 115, 2, 118, 97, 110, 0, 1, 118, 2, 116, 0, 1, 118, 21, 2, 116, 32,
-			0, 2, 17, 66, 32, 0, 2, 32, 0, 2, 115, 101, 0, 2, 115, 105, 98, 0, 2, 115, 105, 102, 0, 2, 115, 105, 118, 0, 2, 116,
-			105, 111, 110, 0, 2, 118, 101, 0, 8, 0, 8, 117, 113, 0, 101, 2, 32, 0, 2, 17, 65, 3, 128, 34, 0, 109, 101, 97, 1, 112,
-			2, 98, 3, 128, 65, 141, 0, 4, 101, 1, 112, 109, 2, 32, 3, 140, 0, 114, 2, 32, 24, 0, 4, 1, 104, 2, 101, 110, 3, 141,
-			34, 0, 1, 122, 2, 111, 0, 8, 17, 67, 2, 111, 32, 0, 97, 1, 29, 2, 32, 3, 141, 34, 13, 0, 105, 1, 112, 120, 101, 2,
-			101, 110, 3, 141, 34, 113, 0, 105, 111, 8, 112, 2, 100, 105, 99, 3, 141, 34, 113, 6, 124, 0, 105, 111, 8, 112, 2, 100, 3, 141,
-			34, 113, 13, 0, 121, 1, 117, 113, 3, 141, 34, 122, 0, 4, 101, 1, 17, 67, 29, 2, 32, 3, 142, 0, 101, 1, 104, 112, 115, 2,
-			32, 0, 101, 1, 109, 2, 32, 0, 101, 1, 118, 101, 2, 32, 0, 101, 8, 104, 0, 7, 6, 101, 115, 0, 4, 2, 99, 97, 112, 101,
-			3, 2, 121, 89, 0, 2, 99, 97, 112, 105, 0, 8, 2, 112, 21, 0, 4, 2, 116, 114, 97, 108, 32, 3, 6, 121, 89, 0, 99, 1,
-			21, 2, 101, 110, 17, 67, 0, 113, 117, 101, 3, 6, 121, 89, 49, 0, 4, 2, 105, 97, 110, 32, 3, 6, 129, 88, 0, 2, 105, 99,
-			0, 101, 1, 110, 21, 2, 32, 0, 2, 105, 118, 101, 3, 6, 129, 89, 0, 105, 115, 2, 32, 3, 6, 129, 89, 122, 89, 0, 4, 1,
-			10, 2, 116, 32, 3, 13, 89, 0, 1, 10, 2, 121, 32, 0, 1, 104, 116, 2, 105, 18, 71, 101, 32, 0, 1, 118, 2, 116, 121, 0,
-			115, 1, 114, 101, 2, 32, 0, 115, 1, 114, 116, 10, 2, 32, 0, 115, 97, 1, 99, 101, 110, 2, 114, 121, 3, 13, 89, 13, 0, 105,
-			115, 1, 104, 116, 2, 32, 3, 13, 89, 122, 89, 0, 101, 115, 1, 104, 116, 2, 32, 3, 13, 89, 129, 88, 0, 4, 1, 10, 2, 32,
-			14, 128, 130, 129, 3, 88, 0, 1, 17, 67, 10, 2, 32, 14, 128, 130, 129, 0, 1, 104, 112, 10, 2, 32, 14, 128, 128, 129, 0, 1,
-			104, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 105, 114, 101, 110, 2, 32, 14, 128, 130, 130, 0, 1, 114, 10, 2, 32, 14, 128, 128,
-			129, 0, 4, 1, 102, 10, 2, 32, 14, 128, 128, 129, 3, 89, 0, 1, 107, 10, 2, 32, 14, 128, 128, 129, 0, 1, 112, 10, 2, 32,
-			14, 128, 128, 129, 0, 1, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 117, 113, 10, 2, 32, 14, 128, 128, 129, 0, 4, 2, 99, 97,
-			114, 112, 3, 113, 89, 0, 2, 112, 101, 99, 105, 0, 2, 116, 97, 116, 101, 0, 8, 2, 116, 97, 98, 0, 1, 114, 112, 2, 101, 110,
-			116, 3, 121, 88, 0, 4, 1, 114, 17, 67, 2, 116, 3, 121, 89, 0, 1, 118, 2, 116, 12, 0, 8, 2, 112, 108, 0, 115, 1, 116,
-			115, 105, 100, 2, 32, 0, 116, 105, 2, 109, 3, 121, 89, 47, 123, 0, 1, 118, 114, 97, 104, 2, 116, 3, 122, 89, 0, 111, 112, 104,
-			97, 3, 122, 89, 6, 124, 83, 13, 0, 4, 1, 99, 10, 2, 32, 14, 128, 128, 129, 3, 123, 88, 0, 1, 103, 10, 2, 32, 14, 128,
-			128, 129, 0, 1, 104, 99, 10, 2, 32, 14, 128, 128, 129, 0, 1, 104, 115, 2, 32, 14, 128, 128, 130, 0, 1, 115, 10, 2, 32, 14,
-			128, 128, 129, 0, 1, 115, 115, 10, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 10, 2, 32, 14, 128, 129, 130, 0, 1, 115, 117, 114,
-			10, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 116, 10, 2, 32, 14, 128, 128, 130, 0, 1, 120, 10, 2, 32, 14, 128, 128, 130, 0,
-			1, 122, 10, 2, 32, 14, 128, 128, 130, 0, 4, 2, 105, 17, 65, 3, 129, 88, 0, 8, 120, 97, 0, 101, 2, 32, 0, 8, 2, 112,
-			101, 97, 107, 3, 129, 89, 0, 7, 6, 101, 116, 0, 4, 2, 105, 116, 111, 114, 3, 6, 121, 47, 0, 116, 101, 2, 32, 0, 116, 97,
-			2, 32, 3, 6, 121, 47, 13, 0, 105, 110, 103, 1, 108, 2, 32, 3, 6, 129, 47, 122, 68, 0, 4, 101, 100, 1, 108, 2, 32, 3,
-			6, 129, 47, 123, 72, 0, 101, 100, 1, 114, 99, 2, 32, 0, 114, 121, 1, 109, 2, 32, 3, 8, 13, 47, 34, 2, 122, 0, 4, 1,
-			108, 10, 2, 32, 3, 13, 47, 0, 8, 109, 2, 105, 99, 0, 116, 1, 108, 97, 112, 2, 101, 0, 104, 1, 17, 67, 21, 2, 32, 14,
-			128, 129, 131, 3, 13, 87, 0, 114, 121, 2, 32, 14, 128, 128, 130, 3, 34, 122, 0, 114, 105, 101, 115, 2, 32, 14, 128, 128, 132, 3,
-			34, 122, 88, 0, 4, 1, 21, 2, 32, 3, 113, 47, 0, 8, 2, 101, 114, 110, 0, 116, 1, 10, 2, 32, 0, 4, 1, 98, 97, 104,
-			112, 2, 32, 3, 121, 47, 0, 1, 106, 2, 32, 0, 1, 110, 17, 65, 21, 21, 2, 32, 0, 1, 114, 103, 2, 12, 0, 1, 115, 2,
-			32, 0, 1, 116, 2, 32, 0, 4, 104, 2, 105, 99, 3, 121, 87, 0, 104, 2, 121, 108, 101, 110, 0, 104, 8, 2, 97, 0, 104, 8,
-			2, 101, 108, 0, 4, 1, 21, 2, 97, 116, 101, 3, 122, 47, 0, 1, 21, 2, 97, 116, 105, 111, 110, 0, 1, 107, 114, 0, 1, 108,
-			108, 2, 32, 0, 105, 110, 103, 1, 10, 2, 32, 3, 123, 47, 2, 122, 68, 0, 101, 100, 1, 10, 2, 32, 14, 128, 128, 130, 3, 123,
-			72, 0, 4, 1, 102, 2, 97, 3, 129, 47, 0, 8, 2, 111, 110, 0, 8, 109, 2, 101, 0, 8, 112, 2, 101, 0, 101, 2, 32, 0,
-			4, 101, 114, 1, 109, 2, 32, 3, 129, 47, 114, 0, 114, 101, 1, 109, 0, 4, 104, 2, 121, 108, 3, 129, 87, 0, 104, 5, 35, 2,
-			97, 110, 101, 0, 104, 8, 2, 17, 65, 0, 1, 114, 101, 98, 2, 32, 3, 138, 0, 7, 6, 101, 118, 0, 4, 101, 114, 2, 99, 3,
-			4, 121, 84, 114, 0, 101, 114, 2, 108, 0, 101, 114, 2, 109, 0, 4, 8, 3, 113, 84, 0, 8, 2, 105, 99, 116, 0, 8, 2, 105,
-			115, 0, 101, 8, 2, 110, 116, 3, 113, 84, 121, 0, 101, 114, 8, 2, 115, 3, 113, 84, 128, 0, 4, 1, 108, 2, 101, 108, 3, 121,
-			84, 0, 5, 3, 8, 2, 111, 108, 117, 0, 8, 2, 105, 0, 97, 8, 2, 110, 101, 3, 121, 84, 13, 0, 101, 114, 121, 3, 121, 84,
-			34, 113, 0, 4, 101, 114, 1, 108, 99, 3, 121, 84, 114, 0, 101, 114, 2, 32, 0, 101, 114, 8, 0, 4, 1, 108, 108, 97, 3, 129,
-			84, 0, 1, 114, 98, 98, 97, 0, 1, 116, 115, 2, 101, 0, 2, 105, 108, 0, 101, 1, 108, 99, 2, 108, 0, 101, 8, 0, 101, 110,
-			8, 3, 129, 84, 13, 50, 0, 4, 101, 114, 1, 102, 2, 12, 3, 129, 84, 114, 0, 101, 114, 5, 35, 8, 108, 0, 7, 6, 101, 120,
-			0, 4, 8, 3, 2, 121, 49, 89, 0, 99, 2, 105, 0, 99, 8, 2, 101, 0, 116, 114, 97, 2, 111, 114, 3, 2, 121, 49, 89, 47,
-			34, 0, 116, 114, 97, 118, 97, 2, 103, 3, 2, 121, 49, 89, 47, 34, 35, 84, 13, 0, 112, 101, 114, 105, 109, 3, 2, 121, 49, 89,
-			48, 121, 34, 122, 65, 0, 4, 8, 2, 17, 65, 3, 2, 121, 81, 88, 0, 104, 8, 0, 1, 21, 2, 105, 97, 3, 6, 121, 49, 89,
-			0, 4, 1, 17, 67, 2, 101, 3, 121, 49, 89, 0, 2, 101, 114, 99, 0, 2, 112, 101, 114, 116, 0, 99, 101, 2, 108, 108, 101, 110,
-			3, 121, 49, 89, 13, 0, 116, 101, 114, 2, 17, 67, 3, 121, 49, 89, 47, 6, 128, 0, 116, 114, 97, 2, 112, 111, 108, 3, 121, 49,
-			89, 47, 34, 6, 35, 0, 4, 116, 114, 97, 3, 121, 49, 89, 47, 34, 13, 0, 116, 114, 111, 8, 0, 116, 114, 97, 2, 99, 116, 3,
-			121, 49, 89, 47, 34, 35, 0, 116, 114, 97, 2, 110, 21, 3, 121, 49, 89, 47, 34, 138, 0, 112, 101, 100, 2, 105, 116, 3, 121, 49,
-			89, 48, 13, 72, 0, 99, 97, 118, 3, 121, 49, 89, 49, 13, 84, 0, 111, 114, 2, 99, 3, 121, 49, 89, 114, 0, 101, 2, 99, 117,
-			116, 105, 111, 3, 121, 49, 89, 122, 0, 8, 2, 105, 116, 3, 121, 81, 88, 0, 1, 115, 115, 2, 32, 3, 122, 49, 89, 0, 7, 6,
-			101, 121, 0, 1, 10, 2, 32, 3, 2, 122, 0, 111, 114, 2, 32, 3, 6, 138, 114, 0, 101, 100, 2, 32, 14, 128, 128, 130, 3, 72,
-			0, 1, 21, 2, 17, 67, 21, 3, 122, 0, 8, 107, 2, 12, 3, 129, 0, 4, 3, 137, 0, 101, 1, 21, 2, 32, 14, 128, 128, 131,
-			0, 101, 8, 0, 4, 1, 17, 67, 29, 3, 138, 0, 1, 118, 17, 67, 2, 32, 0, 2, 97, 110, 0, 8, 98, 97, 0, 101, 0, 101,
-			114, 1, 109, 21, 2, 32, 3, 145, 0, 7, 6, 105, 97, 0, 4, 1, 102, 2, 110, 116, 3, 6, 144, 0, 1, 102, 101, 2, 110, 99,
-			101, 0, 1, 108, 2, 110, 99, 101, 0, 1, 108, 112, 2, 110, 116, 0, 104, 2, 32, 0, 116, 104, 3, 6, 144, 87, 0, 1, 21, 2,
-			32, 3, 8, 37, 13, 0, 114, 121, 1, 10, 3, 8, 57, 13, 34, 2, 122, 0, 116, 101, 1, 21, 2, 32, 3, 8, 113, 138, 47, 0,
-			99, 1, 10, 2, 32, 3, 8, 122, 35, 49, 0, 4, 1, 21, 2, 116, 105, 118, 101, 3, 8, 141, 0, 1, 21, 21, 2, 32, 0, 114,
-			121, 1, 108, 10, 3, 8, 141, 34, 2, 122, 0, 2, 110, 103, 32, 3, 57, 35, 0, 4, 1, 114, 2, 98, 3, 113, 13, 0, 1, 116,
-			2, 98, 0, 2, 109, 0, 103, 101, 1, 10, 2, 32, 3, 113, 75, 0, 114, 100, 2, 32, 3, 113, 114, 72, 0, 114, 99, 104, 3, 113,
-			127, 49, 0, 105, 3, 113, 137, 0, 4, 1, 21, 2, 110, 105, 99, 3, 122, 6, 35, 0, 1, 21, 2, 110, 105, 116, 0, 8, 102, 2,
-			110, 99, 3, 122, 6, 124, 0, 110, 99, 101, 8, 102, 3, 122, 6, 124, 50, 89, 138, 0, 114, 97, 2, 32, 3, 122, 6, 126, 34, 13,
-			0, 4, 1, 108, 97, 2, 110, 116, 3, 122, 13, 0, 1, 108, 108, 105, 2, 110, 116, 0, 4, 116, 101, 1, 103, 2, 32, 3, 122, 13,
-			47, 0, 116, 101, 1, 114, 112, 111, 2, 32, 0, 110, 1, 21, 2, 99, 121, 3, 122, 13, 50, 0, 1, 112, 2, 110, 111, 3, 122, 35,
-			0, 114, 2, 105, 116, 121, 3, 122, 35, 34, 0, 105, 115, 1, 108, 3, 122, 138, 88, 0, 1, 21, 2, 110, 97, 3, 129, 6, 35, 0,
-			1, 108, 10, 2, 110, 99, 101, 3, 129, 13, 0, 4, 1, 17, 67, 29, 3, 137, 13, 0, 1, 102, 2, 98, 0, 114, 5, 8, 1, 17,
-			67, 3, 137, 119, 0, 4, 1, 10, 2, 110, 3, 141, 0, 8, 112, 2, 110, 17, 65, 0, 110, 8, 3, 141, 50, 0, 4, 114, 1, 108,
-			21, 2, 32, 3, 142, 0, 114, 2, 105, 17, 67, 0, 4, 114, 3, 145, 0, 114, 1, 17, 67, 0, 7, 6, 105, 101, 0, 1, 10, 2,
-			32, 3, 2, 37, 0, 117, 1, 108, 2, 116, 101, 3, 2, 121, 83, 0, 8, 118, 2, 116, 3, 2, 141, 0, 110, 101, 1, 100, 2, 32,
-			3, 6, 137, 129, 50, 0, 116, 121, 1, 21, 3, 6, 144, 47, 2, 122, 0, 108, 1, 114, 10, 2, 32, 3, 8, 129, 118, 0, 115, 116,
-			1, 10, 2, 32, 14, 128, 130, 131, 3, 13, 89, 47, 0, 121, 2, 32, 3, 37, 0, 108, 1, 110, 10, 2, 32, 3, 57, 118, 0, 4,
-			119, 3, 57, 134, 0, 119, 2, 32, 0, 100, 2, 32, 14, 128, 130, 130, 3, 72, 0, 100, 115, 2, 32, 14, 128, 130, 131, 3, 72, 88,
-			0, 115, 2, 32, 14, 128, 130, 130, 3, 88, 0, 4, 2, 108, 108, 17, 65, 3, 113, 6, 121, 0, 2, 110, 17, 67, 105, 17, 65, 0,
-			2, 116, 116, 0, 114, 1, 10, 2, 121, 3, 113, 13, 34, 0, 115, 99, 3, 113, 121, 89, 0, 1, 100, 101, 109, 2, 118, 97, 108, 3,
-			113, 129, 0, 114, 114, 101, 2, 32, 3, 113, 140, 0, 114, 1, 10, 2, 32, 24, 14, 128, 130, 130, 3, 114, 0, 114, 39, 115, 1, 10,
-			2, 32, 24, 14, 128, 130, 132, 3, 114, 88, 0, 1, 114, 102, 2, 110, 100, 3, 121, 0, 4, 3, 122, 0, 1, 112, 112, 2, 32, 0,
-			1, 115, 2, 118, 101, 0, 2, 110, 116, 97, 108, 3, 122, 6, 121, 0, 110, 110, 3, 122, 6, 121, 50, 0, 2, 103, 111, 3, 122, 6,
-			138, 0, 114, 2, 97, 3, 122, 6, 140, 34, 0, 100, 108, 121, 3, 122, 72, 55, 2, 122, 0, 4, 1, 29, 3, 129, 0, 1, 102, 2,
+			14, 128, 136, 130, 0, 1, 114, 117, 101, 2, 32, 14, 128, 136, 130, 0, 1, 116, 117, 98, 101, 100, 2, 32, 14, 128, 128, 130, 0, 1,
+			121, 2, 32, 14, 128, 136, 130, 0, 2, 32, 28, 21, 12, 12, 14, 128, 128, 130, 0, 4, 1, 104, 115, 17, 67, 21, 2, 32, 3, 122,
+			72, 0, 1, 119, 121, 2, 32, 0, 5, 8, 1, 100, 21, 2, 32, 14, 128, 155, 130, 0, 5, 8, 1, 116, 21, 2, 32, 14, 128, 155,
+			130, 0, 97, 108, 1, 112, 3, 122, 72, 118, 0, 105, 98, 1, 114, 99, 3, 122, 72, 124, 71, 0, 4, 1, 114, 100, 21, 2, 32, 3,
+			124, 72, 0, 1, 114, 102, 21, 2, 32, 14, 128, 136, 130, 0, 108, 121, 2, 32, 3, 124, 72, 55, 2, 124, 0, 4, 1, 100, 21, 2,
+			32, 14, 128, 155, 130, 3, 125, 72, 0, 1, 116, 21, 2, 32, 14, 128, 155, 130, 0, 4, 1, 109, 2, 105, 97, 3, 132, 72, 0, 1,
+			109, 2, 105, 111, 0, 1, 109, 2, 105, 117, 0, 1, 112, 2, 101, 32, 0, 1, 116, 2, 105, 0, 1, 119, 115, 0, 8, 109, 2, 105,
+			97, 116, 0, 8, 112, 2, 105, 97, 116, 0, 105, 97, 116, 101, 1, 109, 21, 3, 132, 72, 113, 13, 47, 0, 105, 97, 8, 109, 3, 132,
+			72, 132, 13, 0, 7, 6, 101, 105, 0, 110, 103, 2, 32, 14, 128, 128, 131, 3, 113, 68, 0, 4, 1, 108, 2, 115, 3, 122, 0, 99,
+			101, 1, 108, 2, 115, 116, 0, 4, 1, 102, 2, 116, 32, 3, 124, 0, 1, 102, 2, 116, 101, 0, 2, 110, 97, 116, 101, 0, 4, 1,
+			21, 2, 110, 32, 3, 132, 0, 1, 21, 2, 110, 101, 0, 1, 99, 0, 2, 116, 104, 0, 2, 118, 0, 2, 122, 0, 8, 110, 0, 103,
+			104, 1, 108, 0, 103, 104, 1, 107, 3, 132, 87, 0, 110, 103, 1, 98, 3, 132, 113, 68, 0, 1, 104, 116, 2, 115, 17, 67, 3, 132,
+			124, 0, 4, 1, 104, 2, 116, 32, 3, 140, 0, 1, 108, 17, 67, 2, 110, 32, 0, 2, 109, 0, 5, 35, 2, 116, 104, 101, 114, 0,
+			8, 0, 8, 119, 0, 103, 104, 1, 104, 2, 116, 0, 114, 8, 3, 140, 34, 0, 103, 2, 101, 114, 32, 3, 140, 81, 0, 4, 115, 2,
+			101, 3, 140, 88, 0, 115, 8, 115, 2, 109, 0, 115, 116, 101, 114, 3, 140, 89, 47, 114, 0, 99, 104, 3, 140, 101, 0, 101, 114, 2,
+			32, 3, 140, 114, 0, 4, 3, 141, 0, 103, 2, 110, 0, 103, 104, 0, 103, 104, 1, 108, 115, 0, 103, 104, 8, 119, 0, 103, 104, 116,
+			104, 3, 141, 47, 87, 0, 114, 3, 143, 0, 114, 1, 119, 3, 145, 0, 7, 6, 101, 108, 0, 101, 99, 116, 8, 2, 114, 111, 108, 3,
+			2, 122, 55, 122, 49, 47, 0, 4, 8, 2, 17, 65, 3, 2, 124, 55, 0, 108, 8, 2, 105, 112, 0, 101, 99, 116, 114, 111, 8, 3,
+			2, 124, 55, 4, 122, 49, 47, 34, 139, 0, 105, 116, 8, 3, 2, 124, 55, 132, 47, 0, 4, 1, 99, 120, 2, 32, 3, 6, 122, 55,
+			0, 1, 108, 108, 97, 2, 111, 0, 1, 110, 110, 111, 115, 2, 32, 0, 1, 112, 2, 32, 0, 2, 105, 103, 105, 0, 108, 1, 110, 2,
+			32, 0, 4, 97, 2, 32, 3, 6, 122, 55, 13, 0, 108, 97, 2, 32, 0, 111, 112, 1, 118, 3, 6, 122, 55, 13, 48, 0, 108, 105,
+			1, 21, 2, 32, 3, 6, 122, 55, 124, 0, 4, 1, 10, 2, 111, 117, 115, 32, 3, 13, 55, 0, 1, 100, 2, 105, 118, 0, 1, 118,
+			2, 111, 99, 0, 108, 1, 10, 2, 111, 117, 115, 0, 4, 105, 110, 103, 1, 10, 3, 13, 55, 113, 68, 0, 108, 105, 110, 103, 1, 10,
+			0, 4, 101, 114, 1, 17, 67, 10, 2, 32, 3, 13, 55, 114, 0, 108, 101, 114, 1, 17, 67, 10, 2, 32, 0, 1, 115, 2, 101, 99,
+			116, 3, 113, 55, 0, 101, 99, 116, 8, 2, 114, 111, 99, 117, 3, 113, 55, 122, 49, 47, 0, 4, 1, 10, 2, 32, 3, 118, 0, 1,
+			10, 2, 114, 121, 32, 0, 1, 10, 2, 115, 32, 0, 1, 10, 2, 116, 121, 32, 0, 1, 112, 112, 111, 100, 0, 1, 116, 2, 112, 0,
+			108, 1, 10, 2, 32, 28, 18, 0, 108, 1, 110, 110, 2, 32, 0, 108, 1, 114, 10, 2, 32, 0, 4, 1, 98, 105, 99, 2, 32, 3,
+			122, 55, 0, 1, 108, 108, 97, 0, 5, 8, 1, 10, 2, 32, 0, 5, 8, 1, 10, 2, 115, 32, 0, 8, 2, 101, 114, 0, 8, 2,
+			105, 111, 116, 0, 111, 2, 113, 3, 122, 55, 13, 0, 115, 101, 8, 3, 122, 55, 89, 0, 108, 101, 114, 1, 116, 2, 32, 12, 3, 122,
+			55, 114, 0, 101, 99, 116, 8, 2, 114, 111, 110, 3, 122, 55, 122, 49, 47, 0, 4, 101, 8, 2, 103, 3, 122, 55, 124, 0, 101, 8,
+			2, 112, 0, 101, 8, 2, 118, 97, 0, 108, 121, 1, 106, 0, 101, 109, 8, 3, 122, 55, 124, 65, 0, 101, 1, 107, 115, 2, 116, 3,
+			122, 55, 125, 0, 1, 102, 2, 105, 120, 3, 132, 55, 0, 7, 6, 101, 109, 0, 8, 3, 2, 122, 65, 0, 1, 21, 2, 98, 101, 114,
+			3, 6, 122, 65, 0, 1, 104, 112, 115, 2, 101, 3, 6, 132, 65, 0, 4, 1, 10, 2, 32, 3, 13, 65, 0, 1, 10, 2, 97, 32,
+			0, 1, 10, 2, 121, 32, 0, 1, 104, 112, 115, 0, 1, 116, 115, 121, 0, 97, 8, 115, 2, 110, 116, 105, 3, 13, 65, 35, 0, 4,
+			2, 105, 115, 115, 105, 3, 113, 65, 0, 2, 117, 108, 115, 0, 8, 2, 97, 0, 8, 2, 101, 0, 8, 2, 105, 116, 0, 8, 2, 111,
+			0, 109, 2, 97, 110, 0, 4, 1, 116, 115, 121, 2, 105, 3, 122, 65, 0, 2, 97, 110, 97, 0, 2, 98, 108, 101, 109, 0, 2, 98,
+			114, 121, 0, 2, 101, 114, 97, 108, 0, 2, 101, 114, 121, 0, 2, 105, 0, 2, 112, 97, 116, 104, 0, 2, 112, 101, 114, 0, 2, 112,
+			104, 97, 115, 0, 2, 112, 114, 101, 115, 0, 2, 112, 116, 105, 0, 2, 112, 116, 121, 0, 2, 117, 108, 0, 109, 2, 101, 0, 111, 114,
+			114, 104, 1, 104, 3, 122, 65, 13, 34, 0, 98, 97, 2, 115, 3, 122, 65, 71, 13, 0, 4, 1, 102, 2, 97, 108, 101, 3, 132, 65,
+			0, 1, 104, 2, 111, 0, 2, 97, 105, 108, 0, 8, 2, 97, 99, 0, 7, 6, 101, 110, 0, 4, 2, 100, 101, 97, 3, 2, 122, 50,
+			0, 2, 105, 103, 109, 97, 32, 0, 2, 109, 101, 115, 0, 8, 2, 21, 0, 8, 2, 100, 97, 0, 8, 2, 100, 117, 0, 8, 2, 116,
+			105, 0, 110, 8, 0, 114, 111, 108, 3, 2, 122, 50, 34, 139, 55, 0, 114, 97, 103, 101, 3, 2, 122, 50, 34, 141, 75, 0, 116, 105,
+			99, 101, 1, 10, 3, 2, 122, 50, 47, 140, 89, 0, 108, 105, 2, 118, 3, 2, 122, 50, 55, 140, 0, 100, 111, 114, 8, 3, 2, 122,
+			50, 72, 136, 0, 99, 104, 97, 8, 2, 110, 3, 2, 122, 50, 76, 120, 0, 118, 105, 114, 111, 3, 2, 122, 50, 84, 140, 34, 13, 0,
+			116, 104, 114, 97, 2, 108, 3, 2, 122, 50, 87, 34, 133, 0, 99, 121, 2, 99, 108, 105, 3, 2, 122, 50, 89, 124, 0, 115, 104, 114,
+			105, 110, 101, 3, 2, 122, 50, 91, 34, 140, 50, 0, 2, 116, 101, 114, 116, 3, 4, 122, 50, 0, 2, 116, 114, 101, 112, 3, 4, 126,
+			50, 0, 4, 1, 21, 2, 100, 111, 32, 3, 6, 122, 50, 0, 1, 21, 2, 116, 18, 68, 32, 0, 1, 21, 2, 116, 97, 108, 0, 1,
+			21, 2, 116, 111, 117, 115, 0, 1, 21, 2, 116, 117, 0, 1, 108, 108, 105, 109, 2, 105, 97, 0, 1, 115, 101, 114, 112, 101, 2, 116,
+			0, 1, 115, 115, 2, 116, 0, 1, 116, 115, 111, 2, 115, 0, 2, 100, 17, 65, 32, 0, 2, 116, 97, 116, 105, 118, 101, 0, 2, 116,
+			105, 97, 32, 12, 0, 2, 116, 105, 97, 108, 0, 110, 2, 105, 97, 0, 116, 97, 114, 121, 1, 109, 2, 32, 3, 6, 122, 50, 47, 13,
+			34, 2, 37, 0, 107, 111, 1, 10, 2, 32, 3, 6, 122, 50, 49, 139, 0, 100, 114, 111, 110, 2, 32, 3, 6, 122, 50, 72, 34, 13,
+			50, 0, 115, 107, 2, 32, 3, 6, 122, 50, 89, 49, 0, 103, 2, 32, 3, 6, 122, 68, 0, 4, 2, 97, 32, 3, 6, 132, 50, 0,
+			2, 97, 114, 121, 0, 2, 105, 97, 0, 111, 117, 115, 1, 21, 2, 32, 3, 8, 13, 50, 13, 89, 0, 101, 115, 1, 104, 116, 21, 21,
+			2, 32, 3, 8, 13, 50, 132, 88, 0, 4, 1, 10, 2, 17, 65, 110, 99, 101, 3, 13, 50, 0, 1, 10, 2, 32, 0, 1, 10, 2,
+			99, 101, 32, 0, 1, 10, 2, 101, 100, 32, 0, 1, 10, 2, 101, 114, 32, 0, 1, 10, 2, 109, 101, 110, 116, 0, 1, 10, 2, 116,
+			32, 0, 1, 10, 2, 116, 104, 32, 0, 1, 99, 114, 101, 109, 0, 1, 103, 101, 2, 100, 0, 1, 108, 97, 99, 2, 100, 101, 114, 0,
+			1, 112, 114, 97, 99, 0, 1, 118, 18, 66, 2, 116, 32, 0, 1, 118, 21, 21, 2, 116, 32, 0, 99, 121, 1, 10, 2, 32, 3, 13,
+			50, 89, 2, 37, 0, 101, 114, 1, 103, 2, 105, 3, 13, 50, 122, 34, 0, 105, 110, 101, 1, 10, 3, 13, 50, 132, 50, 0, 4, 8,
+			2, 111, 3, 113, 50, 0, 8, 2, 111, 117, 103, 104, 0, 8, 2, 117, 0, 97, 8, 2, 109, 3, 113, 50, 35, 0, 4, 1, 10, 2,
+			99, 104, 3, 122, 50, 0, 1, 17, 67, 17, 67, 11, 2, 32, 0, 1, 99, 114, 101, 112, 2, 116, 0, 1, 99, 115, 97, 2, 116, 0,
+			1, 102, 2, 99, 101, 32, 0, 1, 107, 2, 100, 32, 0, 1, 115, 2, 100, 32, 0, 1, 115, 110, 2, 116, 0, 1, 116, 2, 100, 32,
+			0, 1, 116, 110, 2, 116, 0, 1, 116, 120, 2, 116, 0, 1, 118, 2, 116, 32, 0, 2, 100, 101, 114, 0, 2, 100, 111, 117, 115, 0,
+			2, 105, 103, 0, 2, 115, 105, 97, 0, 2, 115, 105, 103, 0, 2, 116, 101, 114, 0, 2, 116, 105, 0, 2, 116, 105, 116, 121, 0, 2,
+			116, 114, 97, 110, 0, 2, 116, 114, 105, 0, 2, 116, 114, 111, 0, 2, 116, 115, 105, 0, 2, 118, 105, 17, 65, 0, 2, 118, 111, 121,
+			0, 2, 118, 121, 0, 2, 122, 121, 0, 5, 8, 1, 10, 2, 99, 101, 32, 0, 5, 8, 1, 10, 2, 116, 32, 0, 8, 2, 100, 0,
+			8, 2, 101, 0, 8, 2, 109, 0, 8, 2, 116, 114, 121, 0, 8, 99, 115, 101, 100, 2, 116, 0, 8, 115, 101, 114, 2, 116, 0, 101,
+			109, 1, 116, 3, 122, 50, 13, 65, 0, 116, 105, 8, 99, 3, 122, 50, 47, 124, 0, 99, 108, 97, 118, 3, 122, 50, 49, 55, 141, 84,
+			0, 117, 1, 109, 3, 122, 50, 57, 137, 0, 100, 111, 119, 3, 122, 50, 72, 6, 138, 0, 100, 111, 8, 3, 122, 50, 72, 139, 0, 103,
+			105, 110, 3, 122, 50, 75, 124, 50, 0, 103, 105, 110, 103, 3, 122, 50, 75, 124, 68, 0, 101, 114, 8, 3, 122, 50, 114, 0, 103, 2,
+			116, 104, 3, 122, 68, 0, 4, 1, 10, 2, 103, 101, 114, 3, 124, 50, 0, 1, 107, 99, 105, 104, 99, 0, 103, 2, 108, 17, 65, 3,
+			124, 68, 81, 0, 4, 2, 99, 111, 114, 101, 3, 126, 50, 0, 2, 116, 114, 101, 99, 0, 4, 1, 99, 115, 2, 101, 3, 132, 50, 0,
+			1, 103, 2, 105, 17, 65, 0, 2, 97, 108, 32, 0, 8, 115, 2, 105, 0, 101, 2, 32, 0, 4, 105, 1, 108, 2, 101, 3, 132, 50,
+			124, 0, 105, 1, 118, 2, 101, 0, 101, 97, 8, 103, 3, 132, 50, 124, 6, 35, 0, 7, 6, 101, 111, 0, 1, 104, 116, 2, 21, 3,
+			2, 132, 13, 0, 8, 103, 3, 4, 132, 2, 139, 0, 1, 21, 21, 2, 32, 3, 6, 141, 139, 0, 117, 115, 1, 10, 2, 32, 3, 8,
+			144, 89, 0, 4, 110, 1, 103, 3, 13, 50, 0, 110, 1, 104, 99, 0, 1, 103, 3, 113, 126, 0, 4, 101, 115, 2, 32, 3, 113, 139,
+			88, 0, 115, 2, 32, 0, 4, 1, 103, 2, 102, 102, 3, 122, 0, 1, 106, 2, 112, 0, 4, 1, 104, 116, 2, 99, 114, 97, 99, 121,
+			3, 124, 6, 126, 0, 1, 104, 116, 2, 108, 111, 103, 105, 115, 0, 1, 104, 116, 2, 108, 111, 103, 121, 0, 4, 8, 103, 2, 103, 114,
+			3, 124, 126, 0, 8, 103, 2, 108, 111, 103, 0, 4, 1, 102, 3, 132, 0, 1, 112, 2, 112, 108, 0, 115, 105, 115, 1, 21, 3, 132,
+			6, 139, 89, 124, 89, 0, 8, 3, 132, 126, 0, 1, 29, 2, 32, 12, 3, 132, 139, 0, 114, 8, 103, 3, 135, 0, 2, 100, 32, 3,
+			138, 0, 118, 101, 114, 3, 139, 84, 13, 0, 114, 8, 3, 141, 114, 0, 4, 1, 104, 116, 2, 114, 3, 144, 0, 8, 108, 0, 8, 112,
+			2, 110, 0, 97, 2, 32, 0, 7, 6, 101, 114, 0, 109, 101, 8, 102, 2, 110, 116, 3, 2, 131, 65, 122, 0, 121, 5, 3, 1, 17,
+			67, 17, 65, 21, 21, 2, 32, 3, 4, 143, 34, 37, 0, 4, 1, 21, 2, 105, 116, 121, 3, 6, 122, 34, 0, 2, 105, 99, 32, 0,
+			2, 105, 99, 97, 108, 0, 4, 1, 21, 2, 17, 67, 97, 108, 32, 3, 6, 131, 0, 1, 21, 2, 17, 67, 105, 99, 32, 0, 1, 109,
+			2, 103, 101, 0, 1, 118, 2, 103, 101, 0, 1, 118, 2, 115, 97, 108, 0, 2, 98, 105, 97, 108, 0, 2, 103, 105, 99, 32, 0, 2,
+			110, 97, 108, 32, 0, 2, 115, 105, 111, 110, 0, 114, 101, 114, 2, 32, 3, 6, 131, 34, 114, 0, 114, 101, 100, 2, 32, 3, 6, 131,
+			72, 0, 103, 105, 110, 103, 3, 6, 131, 75, 113, 68, 0, 115, 105, 1, 21, 2, 97, 108, 3, 6, 131, 91, 0, 1, 21, 2, 111, 32,
+			3, 6, 143, 34, 0, 105, 2, 17, 65, 3, 6, 144, 34, 2, 124, 0, 101, 97, 108, 3, 6, 144, 34, 113, 118, 0, 4, 1, 104, 100,
+			97, 2, 101, 3, 6, 145, 0, 1, 104, 111, 99, 2, 101, 0, 101, 1, 99, 2, 32, 0, 4, 1, 10, 2, 111, 17, 67, 101, 32, 3,
+			8, 13, 34, 0, 1, 10, 2, 111, 117, 115, 0, 4, 105, 115, 101, 1, 10, 2, 32, 3, 8, 13, 34, 140, 88, 0, 105, 122, 101, 1,
+			10, 2, 32, 0, 121, 2, 32, 3, 13, 34, 2, 37, 0, 97, 108, 1, 21, 2, 105, 116, 121, 3, 13, 34, 6, 35, 55, 0, 105, 97,
+			2, 32, 28, 17, 3, 13, 34, 6, 144, 0, 121, 5, 3, 2, 32, 12, 12, 28, 18, 3, 13, 34, 124, 0, 4, 105, 115, 1, 10, 2,
+			97, 3, 13, 34, 140, 88, 0, 105, 122, 1, 10, 2, 97, 0, 116, 111, 1, 104, 2, 32, 3, 13, 47, 137, 0, 97, 1, 109, 97, 99,
+			3, 14, 34, 13, 0, 4, 1, 21, 2, 101, 110, 99, 101, 32, 3, 34, 0, 2, 101, 110, 116, 32, 0, 97, 109, 1, 10, 2, 101, 110,
+			116, 3, 34, 13, 65, 0, 105, 101, 115, 2, 32, 14, 128, 130, 130, 3, 88, 0, 4, 1, 99, 2, 97, 109, 3, 113, 34, 0, 8, 2,
+			17, 65, 0, 8, 104, 2, 101, 100, 0, 101, 1, 104, 2, 100, 105, 3, 113, 34, 122, 0, 101, 116, 105, 99, 97, 108, 8, 104, 3, 113,
+			34, 122, 47, 124, 49, 118, 0, 101, 1, 105, 2, 32, 3, 113, 143, 0, 4, 1, 10, 3, 114, 0, 1, 10, 2, 32, 0, 1, 10, 2,
+			110, 32, 0, 1, 10, 2, 115, 32, 0, 1, 10, 2, 116, 32, 0, 1, 17, 67, 11, 2, 32, 14, 128, 128, 131, 0, 1, 21, 21, 21,
+			2, 32, 14, 128, 145, 130, 0, 1, 98, 109, 2, 32, 0, 1, 99, 110, 2, 32, 14, 128, 128, 129, 0, 1, 99, 115, 97, 2, 116, 0,
+			1, 108, 108, 2, 32, 14, 128, 128, 130, 0, 1, 108, 108, 97, 2, 32, 0, 1, 109, 109, 2, 32, 0, 1, 110, 105, 108, 2, 32, 14,
+			128, 128, 129, 0, 1, 110, 114, 2, 32, 14, 128, 128, 130, 0, 1, 112, 2, 99, 101, 110, 0, 1, 112, 2, 104, 97, 112, 0, 1, 114,
+			101, 2, 32, 14, 128, 128, 130, 0, 1, 115, 115, 2, 32, 14, 128, 128, 130, 0, 101, 1, 10, 2, 32, 0, 101, 1, 10, 2, 32, 0,
+			4, 1, 10, 2, 17, 65, 3, 114, 34, 0, 1, 10, 2, 105, 110, 103, 0, 2, 105, 101, 0, 2, 105, 101, 32, 0, 101, 8, 99, 2,
+			98, 114, 3, 114, 34, 132, 0, 121, 2, 17, 65, 3, 114, 57, 0, 4, 115, 1, 17, 67, 11, 2, 32, 14, 128, 128, 132, 3, 114, 88,
+			0, 115, 1, 108, 108, 2, 32, 14, 128, 128, 131, 0, 115, 1, 110, 105, 108, 2, 32, 14, 128, 128, 130, 0, 115, 1, 114, 101, 2, 32,
+			14, 128, 128, 131, 0, 115, 1, 115, 115, 2, 32, 14, 128, 128, 131, 0, 5, 8, 1, 10, 2, 32, 3, 119, 0, 115, 5, 8, 1, 17,
+			67, 11, 2, 32, 14, 128, 128, 132, 3, 119, 88, 0, 2, 114, 17, 65, 3, 122, 0, 4, 1, 103, 2, 105, 97, 116, 3, 122, 34, 0,
+			2, 105, 17, 67, 0, 8, 2, 117, 100, 0, 8, 103, 2, 111, 110, 0, 8, 115, 2, 101, 110, 0, 114, 1, 17, 67, 29, 0, 114, 8,
+			2, 17, 65, 0, 114, 121, 5, 3, 1, 98, 2, 32, 3, 122, 34, 2, 124, 0, 4, 101, 8, 104, 2, 115, 3, 122, 34, 13, 0, 101,
+			8, 104, 2, 116, 0, 4, 101, 1, 99, 2, 109, 111, 110, 3, 122, 34, 113, 0, 101, 1, 104, 2, 102, 0, 121, 8, 118, 0, 101, 111,
+			1, 116, 115, 3, 122, 34, 113, 139, 0, 97, 108, 1, 103, 2, 100, 3, 122, 34, 118, 0, 1, 29, 2, 17, 65, 3, 123, 34, 0, 4,
+			5, 35, 1, 104, 2, 116, 102, 3, 130, 0, 5, 35, 8, 100, 2, 98, 0, 4, 3, 131, 0, 1, 17, 67, 29, 0, 1, 21, 2, 115,
+			121, 0, 1, 99, 2, 110, 32, 0, 1, 99, 2, 116, 0, 1, 99, 110, 111, 99, 2, 116, 32, 0, 1, 104, 2, 116, 122, 0, 1, 109,
+			2, 99, 0, 1, 115, 2, 118, 97, 110, 0, 1, 118, 2, 116, 0, 1, 118, 21, 2, 116, 32, 0, 2, 17, 66, 32, 0, 2, 32, 0,
+			2, 115, 101, 0, 2, 115, 105, 98, 0, 2, 115, 105, 102, 0, 2, 115, 105, 118, 0, 2, 116, 105, 111, 110, 0, 2, 118, 101, 0, 8,
+			0, 8, 117, 113, 0, 101, 2, 32, 0, 2, 17, 65, 3, 131, 34, 0, 109, 101, 97, 1, 112, 2, 98, 3, 131, 65, 144, 0, 4, 101,
+			1, 112, 109, 2, 32, 3, 143, 0, 114, 2, 32, 24, 0, 4, 1, 104, 2, 101, 110, 3, 144, 34, 0, 8, 17, 67, 2, 111, 32, 0,
+			8, 120, 2, 111, 0, 8, 122, 2, 111, 12, 0, 97, 1, 29, 2, 32, 3, 144, 34, 13, 0, 105, 1, 112, 120, 101, 2, 101, 110, 3,
+			144, 34, 113, 0, 105, 111, 8, 112, 2, 100, 105, 99, 3, 144, 34, 113, 6, 126, 0, 105, 111, 8, 112, 2, 100, 3, 144, 34, 113, 13,
+			0, 121, 1, 117, 113, 3, 144, 34, 124, 0, 4, 101, 1, 17, 67, 29, 2, 32, 3, 145, 0, 101, 1, 100, 2, 32, 0, 101, 1, 104,
+			112, 115, 2, 32, 0, 101, 1, 109, 2, 32, 0, 101, 1, 118, 101, 2, 32, 0, 101, 8, 104, 0, 7, 6, 101, 115, 0, 4, 2, 99,
+			97, 112, 101, 3, 2, 122, 89, 0, 2, 99, 97, 112, 105, 0, 8, 2, 112, 21, 0, 4, 2, 116, 114, 97, 108, 32, 3, 6, 122, 89,
+			0, 99, 1, 21, 2, 101, 110, 99, 101, 32, 0, 99, 1, 21, 2, 101, 110, 116, 32, 0, 113, 117, 101, 3, 6, 122, 89, 49, 0, 4,
+			1, 21, 2, 105, 99, 3, 6, 132, 88, 0, 2, 105, 97, 110, 32, 0, 101, 1, 110, 21, 2, 32, 0, 2, 105, 118, 101, 3, 6, 132,
+			89, 0, 105, 115, 2, 32, 3, 6, 132, 89, 124, 89, 0, 105, 97, 5, 3, 2, 32, 3, 6, 132, 90, 13, 0, 4, 1, 10, 2, 116,
+			32, 3, 13, 89, 0, 1, 10, 2, 116, 121, 0, 1, 10, 2, 121, 32, 0, 1, 104, 116, 2, 105, 18, 71, 101, 32, 0, 115, 1, 114,
+			101, 2, 32, 0, 115, 1, 114, 116, 10, 2, 32, 0, 115, 2, 32, 28, 18, 0, 115, 97, 1, 99, 101, 110, 2, 114, 121, 3, 13, 89,
+			13, 0, 105, 115, 1, 104, 116, 2, 32, 3, 13, 89, 124, 89, 0, 101, 115, 1, 104, 116, 2, 32, 3, 13, 89, 132, 88, 0, 4, 1,
+			10, 2, 32, 14, 128, 130, 129, 3, 88, 0, 1, 17, 67, 10, 2, 32, 14, 128, 130, 129, 0, 1, 104, 112, 10, 2, 32, 14, 128, 128,
+			129, 0, 1, 104, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 105, 114, 101, 110, 2, 32, 14, 128, 130, 130, 0, 1, 114, 10, 2, 32,
+			14, 128, 128, 129, 0, 4, 1, 102, 10, 2, 32, 14, 128, 128, 129, 3, 89, 0, 1, 107, 10, 2, 32, 14, 128, 128, 129, 0, 1, 112,
+			10, 2, 32, 14, 128, 128, 129, 0, 1, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 117, 113, 10, 2, 32, 14, 128, 128, 129, 0, 4,
+			2, 99, 97, 114, 112, 3, 113, 89, 0, 2, 112, 101, 99, 105, 0, 2, 116, 97, 116, 101, 0, 8, 2, 116, 97, 98, 0, 1, 114, 112,
+			2, 101, 110, 116, 3, 122, 88, 0, 4, 1, 114, 17, 67, 2, 116, 3, 122, 89, 0, 1, 118, 2, 116, 12, 0, 8, 2, 112, 108, 0,
+			115, 1, 116, 115, 105, 100, 2, 32, 0, 116, 105, 2, 109, 3, 122, 89, 47, 125, 0, 1, 118, 114, 97, 104, 2, 116, 3, 124, 89, 0,
+			111, 112, 104, 97, 3, 124, 89, 6, 126, 83, 13, 0, 4, 1, 99, 10, 2, 32, 14, 128, 128, 129, 3, 125, 88, 0, 1, 103, 10, 2,
+			32, 14, 128, 128, 129, 0, 1, 104, 99, 10, 2, 32, 14, 128, 128, 129, 0, 1, 104, 115, 2, 32, 14, 128, 128, 130, 0, 1, 115, 10,
+			2, 32, 14, 128, 128, 129, 0, 1, 115, 115, 10, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 2, 32, 14, 128, 129, 130, 0, 1, 115,
+			117, 99, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 108, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 114, 10, 10, 2, 32, 14, 128,
+			128, 130, 0, 1, 115, 117, 116, 10, 10, 2, 32, 14, 128, 128, 130, 0, 1, 115, 117, 120, 2, 32, 14, 128, 128, 130, 0, 1, 120, 10,
+			2, 32, 14, 128, 128, 130, 0, 1, 122, 10, 2, 32, 14, 128, 128, 130, 0, 4, 1, 115, 101, 10, 2, 32, 3, 132, 88, 0, 2, 105,
+			17, 65, 0, 8, 120, 97, 0, 101, 2, 32, 0, 8, 2, 112, 101, 97, 107, 3, 132, 89, 0, 7, 6, 101, 116, 0, 4, 1, 116, 2,
+			32, 3, 6, 122, 47, 0, 2, 105, 116, 111, 114, 0, 116, 101, 2, 32, 0, 116, 97, 2, 32, 3, 6, 122, 47, 13, 0, 105, 110, 103,
+			1, 108, 2, 32, 3, 6, 132, 47, 124, 68, 0, 4, 101, 100, 1, 108, 2, 32, 3, 6, 132, 47, 125, 72, 0, 101, 100, 1, 114, 99,
+			2, 32, 0, 114, 121, 1, 109, 2, 32, 3, 8, 13, 47, 34, 2, 124, 0, 4, 1, 108, 10, 2, 32, 3, 13, 47, 0, 1, 114, 17,
+			65, 10, 2, 32, 0, 116, 1, 108, 97, 112, 2, 101, 0, 104, 1, 17, 67, 21, 2, 32, 14, 128, 129, 131, 3, 13, 87, 0, 4, 1,
+			10, 2, 32, 3, 113, 47, 0, 1, 10, 2, 114, 121, 32, 0, 1, 10, 2, 121, 32, 0, 8, 2, 101, 114, 110, 0, 8, 2, 114, 0,
+			116, 1, 10, 2, 32, 0, 4, 1, 10, 2, 32, 28, 17, 3, 122, 47, 0, 1, 98, 97, 104, 112, 2, 32, 0, 1, 106, 2, 32, 0,
+			1, 110, 17, 65, 21, 21, 2, 32, 0, 1, 114, 103, 2, 12, 0, 1, 115, 2, 32, 0, 4, 104, 2, 105, 99, 3, 122, 87, 0, 104,
+			2, 121, 108, 101, 110, 0, 104, 8, 2, 97, 21, 0, 104, 8, 2, 101, 108, 0, 4, 1, 21, 2, 97, 116, 101, 3, 124, 47, 0, 1,
+			21, 2, 97, 116, 105, 111, 110, 0, 1, 107, 114, 0, 1, 108, 108, 2, 32, 0, 105, 110, 103, 1, 10, 2, 32, 3, 125, 47, 2, 124,
+			68, 0, 101, 100, 1, 10, 2, 32, 14, 128, 128, 130, 3, 125, 72, 0, 4, 1, 102, 2, 97, 3, 132, 47, 0, 8, 2, 111, 110, 0,
+			8, 109, 2, 101, 0, 8, 112, 2, 101, 0, 101, 2, 32, 0, 4, 101, 114, 1, 109, 2, 32, 3, 132, 47, 114, 0, 114, 101, 1, 109,
+			0, 4, 104, 2, 121, 108, 3, 132, 87, 0, 104, 5, 35, 2, 97, 110, 101, 0, 104, 8, 2, 17, 65, 0, 1, 114, 101, 98, 2, 32,
+			3, 141, 0, 7, 6, 101, 117, 0, 114, 2, 32, 3, 6, 131, 0, 115, 101, 1, 21, 2, 32, 3, 6, 131, 88, 0, 2, 109, 32, 3,
+			6, 132, 13, 0, 115, 101, 5, 3, 1, 21, 2, 32, 3, 6, 137, 88, 0, 1, 115, 2, 109, 32, 3, 6, 144, 0, 114, 5, 3, 2,
+			32, 3, 6, 146, 0, 114, 5, 5, 2, 32, 3, 6, 151, 0, 115, 1, 10, 2, 32, 3, 8, 113, 13, 89, 0, 3, 57, 137, 0, 114,
+			111, 8, 3, 57, 146, 34, 139, 0, 114, 111, 8, 2, 112, 101, 3, 57, 146, 44, 13, 0, 114, 1, 108, 3, 131, 0, 4, 1, 108, 3,
+			137, 0, 5, 3, 1, 110, 0, 4, 1, 100, 2, 116, 115, 3, 142, 0, 1, 114, 2, 100, 0, 5, 3, 1, 110, 2, 114, 21, 3, 146,
+			0, 114, 5, 5, 3, 151, 0, 7, 6, 101, 118, 0, 4, 101, 114, 2, 99, 3, 4, 122, 84, 114, 0, 101, 114, 2, 108, 0, 101, 114,
+			2, 109, 0, 4, 8, 3, 113, 84, 0, 8, 2, 105, 99, 116, 0, 8, 2, 105, 115, 0, 97, 110, 103, 8, 3, 113, 84, 35, 50, 75,
+			0, 101, 8, 2, 110, 116, 3, 113, 84, 122, 0, 101, 114, 8, 2, 115, 3, 113, 84, 131, 0, 4, 1, 108, 2, 101, 108, 3, 122, 84,
+			0, 5, 3, 8, 2, 111, 108, 117, 0, 8, 2, 25, 0, 8, 2, 105, 0, 97, 8, 2, 110, 101, 3, 122, 84, 13, 0, 101, 114, 121,
+			3, 122, 84, 34, 113, 0, 4, 101, 114, 1, 108, 99, 3, 122, 84, 114, 0, 101, 114, 2, 32, 0, 101, 114, 8, 0, 8, 114, 116, 2,
+			21, 21, 3, 125, 84, 0, 4, 1, 108, 108, 97, 3, 132, 84, 0, 1, 114, 98, 98, 97, 0, 1, 116, 115, 2, 101, 0, 101, 1, 108,
+			99, 2, 108, 0, 101, 8, 0, 101, 110, 8, 3, 132, 84, 13, 50, 0, 97, 110, 8, 2, 103, 101, 108, 105, 99, 3, 132, 84, 35, 50,
+			0, 4, 101, 114, 1, 102, 2, 12, 3, 132, 84, 114, 0, 101, 114, 5, 35, 8, 108, 0, 105, 108, 8, 2, 25, 3, 132, 84, 118, 0,
+			7, 6, 101, 120, 0, 4, 8, 2, 21, 3, 2, 122, 49, 89, 0, 8, 2, 104, 97, 108, 0, 99, 2, 105, 0, 99, 8, 2, 101, 0,
+			104, 8, 2, 105, 98, 105, 116, 105, 0, 116, 114, 97, 2, 111, 114, 3, 2, 122, 49, 89, 47, 34, 0, 116, 114, 97, 118, 97, 2, 103,
+			3, 2, 122, 49, 89, 47, 34, 35, 84, 13, 0, 112, 101, 114, 105, 109, 3, 2, 122, 49, 89, 48, 122, 34, 124, 65, 0, 4, 8, 2,
+			17, 65, 3, 2, 122, 81, 88, 0, 104, 8, 0, 104, 117, 5, 3, 8, 3, 2, 122, 81, 88, 137, 0, 1, 21, 2, 105, 97, 3, 6,
+			122, 49, 89, 0, 111, 8, 2, 115, 14, 128, 132, 131, 3, 6, 122, 49, 89, 139, 0, 4, 1, 17, 67, 2, 101, 3, 122, 49, 89, 0,
+			2, 101, 114, 99, 0, 2, 112, 101, 114, 116, 0, 8, 2, 99, 114, 101, 109, 0, 99, 101, 2, 108, 108, 101, 110, 3, 122, 49, 89, 13,
+			0, 116, 101, 114, 2, 17, 67, 3, 122, 49, 89, 47, 6, 131, 0, 116, 114, 97, 2, 112, 111, 108, 3, 122, 49, 89, 47, 34, 6, 35,
+			0, 4, 116, 114, 97, 3, 122, 49, 89, 47, 34, 13, 0, 116, 114, 111, 8, 0, 116, 114, 97, 2, 99, 116, 3, 122, 49, 89, 47, 34,
+			35, 0, 116, 114, 97, 2, 110, 21, 3, 122, 49, 89, 47, 34, 141, 0, 112, 101, 100, 2, 105, 116, 3, 122, 49, 89, 48, 13, 72, 0,
+			99, 97, 118, 3, 122, 49, 89, 49, 13, 84, 0, 111, 114, 2, 99, 3, 122, 49, 89, 114, 0, 101, 2, 99, 117, 116, 105, 111, 3, 122,
+			49, 89, 124, 0, 8, 2, 105, 116, 3, 122, 81, 88, 0, 1, 115, 115, 2, 32, 3, 124, 49, 89, 0, 7, 6, 101, 121, 0, 1, 10,
+			2, 32, 3, 2, 124, 0, 111, 114, 2, 32, 3, 6, 141, 114, 0, 101, 100, 2, 32, 14, 128, 128, 130, 3, 72, 0, 1, 21, 2, 17,
+			67, 21, 3, 124, 0, 8, 107, 2, 12, 3, 132, 0, 4, 3, 140, 0, 101, 1, 21, 2, 32, 14, 128, 128, 131, 0, 101, 8, 0, 4,
+			1, 17, 67, 29, 3, 141, 0, 1, 118, 17, 67, 2, 32, 0, 2, 97, 110, 0, 8, 98, 97, 0, 101, 0, 101, 114, 1, 109, 21, 2,
+			32, 3, 148, 0, 7, 6, 105, 97, 0, 4, 1, 102, 2, 110, 116, 3, 6, 147, 0, 1, 102, 101, 2, 110, 99, 101, 0, 1, 108, 2,
+			110, 99, 101, 0, 1, 108, 112, 2, 110, 116, 0, 104, 2, 32, 0, 116, 104, 3, 6, 147, 87, 0, 1, 10, 2, 32, 24, 3, 8, 37,
+			13, 0, 114, 121, 1, 10, 3, 8, 57, 13, 34, 2, 124, 0, 116, 101, 1, 21, 2, 32, 3, 8, 113, 141, 47, 0, 99, 1, 10, 2,
+			32, 3, 8, 124, 35, 49, 0, 101, 1, 21, 2, 32, 3, 8, 124, 132, 0, 4, 1, 10, 2, 32, 3, 8, 144, 0, 1, 21, 2, 116,
+			105, 118, 101, 0, 1, 21, 21, 2, 32, 0, 114, 121, 1, 108, 10, 3, 8, 144, 34, 2, 124, 0, 2, 110, 103, 32, 3, 57, 35, 0,
+			4, 1, 114, 2, 98, 3, 113, 13, 0, 1, 116, 2, 98, 0, 103, 101, 1, 10, 2, 32, 3, 113, 75, 0, 103, 101, 1, 108, 10, 2,
+			32, 3, 113, 113, 75, 0, 114, 100, 2, 32, 3, 113, 114, 72, 0, 114, 99, 104, 3, 113, 130, 49, 0, 105, 3, 113, 140, 0, 4, 1,
+			21, 2, 110, 100, 3, 124, 6, 35, 0, 1, 21, 2, 110, 105, 99, 0, 1, 21, 2, 110, 105, 116, 0, 114, 97, 2, 32, 3, 124, 6,
+			121, 34, 13, 0, 8, 102, 2, 110, 99, 3, 124, 6, 126, 0, 110, 99, 101, 8, 102, 3, 124, 6, 126, 50, 89, 141, 0, 4, 1, 108,
+			97, 2, 110, 116, 3, 124, 13, 0, 1, 108, 108, 105, 2, 110, 116, 0, 4, 116, 101, 1, 103, 2, 32, 3, 124, 13, 47, 0, 116, 101,
+			1, 114, 112, 111, 2, 32, 0, 110, 1, 21, 2, 99, 121, 3, 124, 13, 50, 0, 1, 112, 2, 110, 111, 3, 124, 35, 0, 114, 2, 105,
+			116, 121, 3, 124, 35, 34, 0, 105, 115, 1, 108, 3, 124, 141, 88, 0, 1, 21, 2, 110, 97, 32, 3, 132, 6, 35, 0, 1, 108, 10,
+			2, 110, 99, 101, 3, 132, 13, 0, 4, 1, 17, 67, 29, 3, 140, 13, 0, 1, 102, 2, 98, 0, 114, 5, 8, 1, 17, 67, 3, 140,
+			119, 0, 4, 1, 10, 2, 110, 3, 144, 0, 2, 109, 0, 8, 112, 2, 110, 17, 65, 0, 110, 8, 3, 144, 50, 0, 4, 114, 1, 108,
+			21, 2, 32, 3, 145, 0, 114, 2, 105, 17, 67, 0, 4, 114, 3, 148, 0, 114, 1, 17, 67, 0, 7, 6, 105, 101, 0, 1, 10, 2,
+			32, 3, 2, 37, 0, 117, 1, 108, 2, 116, 101, 3, 2, 122, 83, 0, 110, 101, 1, 100, 2, 32, 3, 6, 140, 132, 50, 0, 114, 2,
+			32, 28, 17, 3, 6, 145, 0, 116, 121, 1, 21, 3, 6, 147, 47, 2, 124, 0, 108, 1, 114, 10, 2, 32, 3, 8, 132, 118, 0, 1,
+			10, 2, 110, 32, 3, 8, 144, 0, 115, 116, 1, 10, 2, 32, 14, 128, 130, 131, 3, 13, 89, 47, 0, 121, 2, 32, 3, 37, 0, 2,
+			17, 67, 97, 32, 3, 37, 6, 122, 0, 114, 101, 2, 32, 3, 37, 6, 143, 0, 108, 1, 110, 10, 2, 32, 3, 57, 118, 0, 4, 117,
+			1, 108, 17, 65, 3, 57, 137, 0, 119, 0, 119, 2, 32, 0, 100, 2, 32, 14, 128, 130, 130, 3, 72, 0, 100, 115, 2, 32, 14, 128,
+			130, 131, 3, 72, 88, 0, 4, 115, 2, 32, 14, 128, 130, 130, 3, 88, 0, 115, 2, 32, 28, 21, 14, 128, 128, 129, 0, 4, 2, 108,
+			108, 17, 65, 3, 113, 6, 122, 0, 2, 110, 17, 67, 105, 17, 65, 0, 2, 116, 116, 0, 114, 1, 10, 2, 121, 3, 113, 13, 34, 0,
+			115, 99, 3, 113, 122, 89, 0, 1, 100, 101, 109, 2, 118, 97, 108, 3, 113, 132, 0, 114, 114, 101, 2, 32, 3, 113, 143, 0, 114, 1,
+			10, 2, 32, 24, 14, 128, 130, 130, 3, 114, 0, 1, 114, 102, 2, 110, 100, 3, 122, 0, 4, 3, 124, 0, 1, 112, 112, 2, 32, 0,
+			1, 115, 2, 118, 101, 0, 2, 110, 116, 97, 108, 3, 124, 6, 122, 0, 110, 110, 3, 124, 6, 122, 50, 0, 2, 103, 111, 3, 124, 6,
+			141, 0, 114, 2, 97, 3, 124, 6, 143, 34, 0, 100, 108, 121, 3, 124, 72, 55, 2, 124, 0, 4, 1, 29, 3, 132, 0, 1, 102, 2,
 			110, 100, 0, 1, 103, 2, 110, 0, 1, 114, 112, 2, 115, 116, 0, 2, 99, 101, 0, 2, 102, 0, 2, 107, 0, 2, 108, 0, 2, 118,
-			0, 2, 118, 101, 0, 2, 122, 0, 8, 114, 0, 8, 122, 0, 104, 2, 17, 67, 0, 115, 116, 97, 3, 129, 6, 121, 89, 47, 13, 0,
-			106, 3, 129, 6, 138, 0, 103, 2, 101, 13, 3, 129, 75, 0, 4, 115, 1, 99, 101, 112, 115, 2, 32, 3, 129, 88, 0, 115, 1, 114,
-			101, 115, 2, 32, 0, 105, 2, 32, 3, 129, 137, 0, 117, 1, 108, 3, 134, 0, 117, 116, 101, 5, 3, 1, 108, 3, 134, 47, 6, 121,
-			0, 4, 1, 112, 2, 32, 3, 137, 0, 2, 32, 0, 2, 99, 0, 8, 116, 2, 17, 66, 0, 8, 116, 103, 111, 104, 0, 5, 8, 8,
-			99, 115, 2, 110, 3, 137, 119, 0, 4, 1, 10, 2, 116, 32, 3, 141, 0, 1, 21, 2, 116, 104, 0, 2, 110, 0, 4, 114, 3, 142,
-			0, 114, 2, 99, 0, 4, 1, 99, 115, 2, 110, 99, 3, 144, 0, 1, 108, 99, 2, 110, 116, 0, 2, 110, 116, 105, 17, 67, 0, 2,
-			116, 0, 8, 99, 115, 2, 110, 0, 4, 8, 104, 2, 114, 3, 145, 0, 114, 1, 108, 112, 2, 32, 0, 114, 8, 114, 17, 67, 0, 7,
-			6, 105, 103, 0, 110, 1, 115, 2, 111, 3, 2, 122, 50, 57, 0, 4, 2, 110, 111, 3, 2, 122, 81, 0, 8, 2, 110, 105, 0, 8,
-			109, 2, 114, 97, 116, 3, 2, 137, 81, 0, 110, 101, 2, 32, 3, 6, 129, 50, 0, 4, 117, 2, 32, 3, 6, 129, 81, 0, 117, 2,
-			101, 0, 97, 110, 1, 110, 2, 32, 3, 8, 122, 81, 13, 50, 0, 110, 111, 110, 2, 32, 3, 37, 50, 57, 124, 50, 0, 101, 111, 3,
-			122, 75, 13, 0, 105, 98, 1, 10, 3, 122, 75, 13, 71, 0, 4, 1, 100, 2, 110, 17, 65, 3, 122, 81, 0, 2, 110, 97, 0, 2,
-			110, 111, 109, 0, 110, 111, 2, 114, 97, 110, 3, 122, 81, 50, 114, 0, 1, 109, 97, 2, 97, 32, 3, 129, 81, 0, 4, 1, 21, 2,
-			110, 32, 3, 137, 0, 1, 21, 2, 110, 101, 0, 104, 1, 104, 0, 104, 1, 110, 0, 104, 1, 115, 0, 104, 2, 116, 0, 4, 110, 2,
-			17, 67, 3, 137, 50, 0, 110, 2, 32, 0, 109, 2, 32, 3, 137, 65, 0, 4, 1, 116, 2, 101, 12, 3, 137, 81, 0, 8, 109, 2,
-			114, 97, 0, 8, 116, 2, 114, 0, 7, 6, 105, 109, 0, 4, 8, 2, 21, 3, 2, 122, 65, 0, 8, 2, 112, 101, 114, 17, 67, 21,
-			14, 128, 132, 130, 0, 8, 2, 112, 114, 101, 21, 14, 128, 132, 130, 0, 109, 8, 2, 21, 0, 4, 2, 112, 101, 99, 117, 3, 4, 122,
-			65, 0, 2, 112, 111, 114, 116, 117, 0, 2, 112, 114, 101, 103, 110, 97, 0, 2, 112, 114, 101, 115, 97, 0, 109, 2, 97, 116, 0, 109,
-			2, 101, 109, 0, 105, 108, 101, 1, 115, 3, 6, 122, 65, 113, 55, 122, 0, 1, 104, 115, 2, 97, 32, 3, 6, 129, 65, 0, 111, 117,
-			115, 1, 21, 2, 32, 3, 8, 122, 65, 13, 89, 0, 4, 1, 21, 2, 101, 116, 114, 3, 122, 65, 0, 1, 108, 0, 1, 108, 2, 101,
-			114, 0, 2, 97, 103, 101, 0, 2, 101, 110, 116, 12, 0, 2, 105, 116, 0, 2, 112, 97, 99, 0, 2, 112, 101, 116, 117, 115, 0, 2,
-			112, 108, 97, 110, 116, 32, 0, 2, 112, 108, 101, 0, 2, 112, 108, 105, 99, 97, 0, 2, 112, 114, 111, 118, 105, 115, 0, 2, 112, 117,
-			108, 115, 101, 32, 0, 2, 117, 109, 0, 109, 2, 105, 103, 0, 109, 2, 105, 110, 0, 109, 2, 117, 110, 105, 115, 0, 101, 2, 110, 116,
-			111, 3, 122, 65, 6, 121, 0, 109, 111, 2, 98, 105, 3, 122, 65, 6, 136, 0, 112, 111, 2, 116, 101, 110, 3, 122, 65, 48, 13, 0,
-			4, 101, 2, 116, 101, 114, 32, 3, 122, 65, 129, 0, 101, 2, 116, 114, 101, 0, 1, 10, 2, 32, 3, 123, 65, 0, 4, 1, 108, 99,
-			3, 137, 65, 0, 5, 3, 1, 115, 2, 117, 108, 116, 0, 8, 114, 112, 2, 97, 0, 98, 1, 108, 99, 0, 101, 1, 108, 0, 101, 1,
-			100, 2, 110, 115, 3, 137, 65, 121, 0, 7, 6, 105, 110, 0, 4, 8, 2, 21, 14, 128, 132, 130, 3, 2, 122, 50, 0, 8, 2, 99,
-			111, 114, 112, 0, 8, 2, 99, 114, 101, 100, 0, 8, 2, 115, 116, 105, 108, 0, 8, 2, 116, 101, 103, 114, 105, 0, 110, 8, 2, 117,
-			109, 0, 116, 8, 2, 101, 114, 105, 111, 12, 3, 2, 122, 50, 47, 0, 116, 101, 114, 8, 2, 114, 111, 103, 3, 2, 122, 50, 47, 121,
-			0, 4, 116, 101, 114, 8, 2, 110, 32, 3, 2, 122, 50, 47, 128, 0, 116, 101, 114, 8, 2, 110, 97, 108, 0, 116, 101, 114, 8, 2,
-			112, 111, 108, 21, 0, 116, 101, 114, 8, 2, 112, 114, 0, 116, 101, 114, 112, 114, 101, 2, 116, 3, 2, 122, 50, 47, 128, 48, 34, 122,
-			0, 100, 8, 2, 101, 102, 105, 110, 3, 2, 122, 50, 72, 0, 102, 114, 97, 8, 2, 99, 3, 2, 122, 50, 83, 34, 35, 0, 102, 97,
-			8, 2, 108, 3, 2, 122, 50, 83, 35, 0, 4, 103, 1, 21, 2, 32, 12, 14, 128, 153, 131, 3, 2, 122, 68, 0, 103, 1, 108, 101,
-			2, 32, 12, 14, 128, 152, 131, 0, 103, 1, 109, 111, 21, 21, 2, 32, 14, 128, 152, 131, 0, 103, 1, 110, 101, 2, 32, 14, 128, 136,
-			131, 0, 103, 1, 114, 17, 66, 10, 2, 32, 0, 103, 1, 114, 101, 2, 32, 14, 128, 136, 131, 0, 103, 1, 117, 103, 111, 108, 2, 32,
-			14, 128, 136, 132, 0, 103, 1, 120, 10, 2, 32, 12, 14, 128, 136, 131, 0, 4, 103, 108, 121, 1, 21, 2, 32, 14, 128, 153, 133, 3,
-			2, 122, 68, 55, 2, 122, 0, 103, 108, 121, 1, 110, 101, 2, 32, 14, 128, 168, 133, 0, 103, 108, 121, 1, 114, 101, 2, 32, 14, 128,
-			168, 133, 0, 4, 103, 109, 101, 110, 116, 1, 21, 2, 32, 14, 128, 153, 135, 3, 2, 122, 68, 65, 13, 50, 47, 0, 103, 109, 101, 110,
-			116, 1, 114, 101, 2, 32, 14, 128, 136, 135, 0, 4, 103, 115, 1, 21, 2, 32, 14, 128, 153, 132, 3, 2, 122, 68, 88, 0, 103, 115,
-			1, 110, 101, 2, 32, 14, 128, 136, 132, 0, 103, 115, 1, 114, 101, 2, 32, 14, 128, 136, 132, 0, 4, 8, 2, 100, 101, 14, 128, 132,
-			130, 3, 4, 122, 50, 0, 8, 2, 100, 105, 115, 14, 128, 132, 130, 0, 8, 2, 100, 105, 118, 14, 128, 132, 130, 0, 8, 2, 101, 120,
-			14, 128, 132, 130, 0, 8, 2, 115, 101, 99, 14, 128, 132, 130, 0, 8, 2, 115, 105, 103, 110, 105, 102, 14, 128, 132, 130, 0, 8, 2,
-			115, 105, 110, 99, 14, 128, 132, 130, 0, 116, 101, 114, 8, 2, 17, 65, 14, 128, 132, 133, 3, 4, 122, 50, 47, 13, 34, 0, 116, 114,
-			111, 8, 2, 21, 3, 4, 122, 50, 47, 34, 13, 0, 116, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 4, 122, 50, 47, 114, 0, 102,
-			114, 97, 8, 2, 14, 128, 132, 133, 3, 4, 122, 50, 83, 34, 13, 0, 1, 21, 2, 99, 105, 97, 108, 3, 6, 122, 50, 0, 100, 97,
-			1, 21, 2, 32, 3, 6, 122, 50, 72, 13, 0, 2, 103, 97, 32, 3, 6, 122, 68, 0, 4, 1, 98, 2, 97, 32, 3, 6, 129, 50,
-			0, 1, 107, 2, 97, 32, 0, 1, 108, 2, 97, 32, 0, 1, 114, 2, 97, 32, 0, 1, 116, 2, 97, 32, 0, 105, 1, 21, 2, 32,
-			3, 6, 129, 50, 122, 0, 111, 2, 32, 3, 6, 129, 50, 136, 0, 105, 110, 1, 10, 2, 32, 3, 8, 13, 50, 122, 50, 0, 1, 109,
-			10, 2, 97, 108, 32, 3, 8, 122, 50, 0, 111, 117, 115, 1, 21, 2, 32, 3, 8, 122, 50, 13, 89, 0, 1, 21, 2, 97, 116, 101,
-			3, 8, 123, 50, 0, 4, 1, 115, 97, 98, 2, 32, 3, 13, 50, 0, 5, 7, 1, 10, 2, 32, 0, 101, 115, 115, 1, 103, 2, 32,
-			14, 128, 130, 132, 3, 50, 13, 89, 0, 4, 1, 109, 97, 120, 2, 101, 3, 113, 50, 0, 101, 1, 109, 114, 101, 2, 32, 0, 4, 116,
-			114, 97, 8, 2, 99, 116, 3, 113, 50, 47, 34, 35, 0, 116, 114, 97, 8, 2, 110, 115, 0, 4, 1, 10, 2, 101, 110, 17, 67, 3,
-			122, 50, 0, 1, 99, 2, 101, 0, 1, 99, 110, 105, 2, 101, 0, 1, 103, 2, 101, 0, 1, 107, 2, 100, 101, 114, 103, 0, 1, 107,
-			2, 100, 108, 0, 1, 107, 2, 100, 114, 0, 1, 114, 116, 2, 105, 0, 2, 100, 101, 120, 0, 2, 100, 105, 97, 0, 2, 101, 97, 0,
-			2, 101, 101, 0, 2, 102, 105, 110, 105, 116, 101, 0, 2, 115, 101, 99, 116, 0, 8, 2, 98, 0, 8, 2, 99, 97, 110, 0, 8, 2,
-			99, 101, 110, 115, 0, 8, 2, 99, 104, 0, 8, 2, 99, 111, 109, 17, 65, 0, 8, 2, 99, 114, 101, 0, 8, 2, 99, 117, 98, 0,
-			8, 2, 99, 117, 108, 0, 8, 2, 100, 105, 99, 0, 8, 2, 100, 105, 103, 111, 0, 8, 2, 100, 111, 108, 0, 8, 2, 102, 97, 109,
-			0, 8, 2, 102, 105, 100, 0, 8, 2, 102, 105, 108, 0, 8, 2, 102, 108, 111, 0, 8, 2, 102, 108, 117, 0, 8, 2, 102, 111, 32,
-			0, 8, 2, 106, 117, 114, 0, 8, 2, 108, 0, 8, 2, 109, 0, 8, 2, 111, 102, 0, 8, 2, 111, 114, 103, 0, 8, 2, 112, 0,
-			8, 2, 113, 117, 101, 0, 8, 2, 113, 117, 105, 115, 0, 8, 2, 114, 0, 8, 2, 115, 101, 116, 0, 8, 2, 115, 104, 0, 8, 2,
-			115, 105, 103, 104, 0, 8, 2, 115, 111, 102, 0, 8, 2, 115, 111, 108, 97, 0, 8, 2, 115, 111, 108, 101, 0, 8, 2, 115, 111, 109,
-			117, 0, 8, 2, 115, 112, 105, 114, 0, 8, 2, 115, 116, 97, 110, 0, 8, 2, 115, 116, 105, 0, 8, 2, 115, 116, 114, 117, 109, 0,
-			8, 2, 115, 117, 98, 0, 8, 2, 115, 117, 108, 0, 8, 2, 116, 101, 103, 0, 8, 2, 116, 105, 109, 97, 0, 8, 2, 116, 111, 110,
-			97, 0, 8, 2, 117, 110, 0, 8, 2, 118, 111, 105, 0, 8, 2, 119, 97, 0, 101, 1, 108, 97, 110, 2, 32, 0, 101, 1, 108, 117,
-			2, 32, 0, 110, 8, 2, 25, 0, 101, 120, 8, 2, 111, 114, 3, 122, 50, 6, 121, 49, 89, 0, 4, 105, 1, 102, 21, 2, 116, 101,
-			3, 122, 50, 13, 0, 110, 111, 8, 2, 99, 101, 0, 110, 111, 8, 2, 118, 0, 101, 114, 97, 1, 109, 2, 108, 3, 122, 50, 13, 34,
-			13, 0, 116, 101, 2, 108, 108, 101, 99, 3, 122, 50, 47, 13, 0, 116, 101, 114, 102, 101, 114, 3, 122, 50, 47, 13, 83, 6, 142, 0,
-			116, 101, 114, 2, 101, 115, 116, 3, 122, 50, 47, 34, 0, 116, 114, 105, 103, 117, 3, 122, 50, 47, 34, 6, 129, 81, 0, 4, 116, 114,
-			97, 8, 3, 122, 50, 47, 34, 13, 0, 116, 114, 111, 8, 2, 118, 0, 116, 114, 105, 99, 97, 3, 122, 50, 47, 34, 122, 49, 13, 0,
-			116, 101, 114, 2, 118, 105, 101, 119, 3, 122, 50, 47, 114, 0, 99, 114, 101, 109, 3, 122, 50, 49, 34, 122, 65, 0, 100, 101, 108, 105,
-			8, 2, 98, 3, 122, 50, 72, 6, 121, 55, 13, 0, 100, 105, 8, 2, 103, 101, 110, 3, 122, 50, 72, 6, 122, 0, 100, 105, 103, 101,
-			8, 2, 115, 3, 122, 50, 72, 122, 75, 6, 121, 0, 103, 1, 114, 102, 110, 3, 122, 50, 75, 0, 102, 97, 110, 8, 3, 122, 50, 83,
-			13, 50, 0, 102, 111, 114, 2, 109, 97, 116, 105, 111, 3, 122, 50, 83, 114, 0, 115, 116, 97, 110, 116, 8, 3, 122, 50, 89, 47, 13,
-			50, 47, 0, 99, 105, 2, 100, 101, 3, 122, 50, 89, 122, 0, 4, 105, 1, 109, 100, 97, 3, 122, 50, 122, 0, 105, 8, 109, 0, 117,
-			116, 101, 8, 109, 2, 109, 3, 122, 50, 122, 47, 0, 105, 97, 116, 117, 114, 1, 109, 3, 122, 50, 122, 76, 114, 0, 105, 115, 109, 2,
-			32, 3, 122, 50, 122, 88, 13, 65, 0, 101, 1, 118, 2, 103, 3, 122, 50, 123, 0, 4, 2, 103, 111, 116, 3, 122, 68, 0, 8, 2,
-			103, 114, 111, 0, 8, 2, 107, 0, 1, 21, 2, 97, 116, 105, 111, 110, 3, 123, 50, 0, 4, 101, 1, 99, 21, 2, 32, 3, 129, 50,
-			0, 101, 1, 100, 10, 2, 32, 0, 101, 1, 104, 99, 17, 65, 2, 32, 0, 101, 1, 104, 112, 2, 32, 0, 101, 1, 108, 105, 2, 32,
-			0, 101, 1, 108, 111, 2, 32, 0, 101, 1, 114, 21, 2, 32, 0, 101, 1, 116, 21, 2, 32, 0, 101, 1, 122, 2, 32, 0, 4, 1,
-			98, 2, 100, 3, 137, 50, 0, 1, 102, 2, 97, 0, 1, 102, 2, 100, 0, 1, 103, 21, 2, 97, 32, 0, 1, 104, 2, 100, 17, 66,
-			0, 1, 104, 2, 100, 32, 0, 1, 104, 99, 2, 97, 0, 1, 104, 101, 98, 2, 100, 0, 1, 104, 115, 2, 105, 0, 1, 107, 2, 100,
-			0, 1, 108, 98, 2, 100, 0, 1, 109, 2, 100, 0, 1, 114, 103, 2, 100, 0, 1, 119, 2, 100, 101, 114, 32, 0, 1, 119, 2, 100,
-			105, 110, 103, 0, 1, 119, 101, 114, 2, 100, 0, 1, 119, 110, 117, 2, 100, 0, 8, 114, 2, 100, 0, 101, 1, 112, 2, 32, 0, 101,
-			1, 114, 99, 2, 32, 0, 101, 1, 116, 110, 101, 21, 21, 2, 32, 0, 117, 8, 109, 2, 116, 101, 3, 137, 50, 6, 57, 134, 0, 7,
-			6, 105, 111, 0, 110, 101, 2, 32, 3, 6, 144, 50, 37, 0, 117, 115, 1, 103, 2, 32, 3, 8, 13, 89, 0, 117, 115, 1, 21, 2,
-			32, 3, 8, 113, 13, 89, 0, 1, 10, 2, 32, 3, 8, 113, 136, 0, 110, 5, 8, 1, 10, 2, 32, 3, 8, 122, 125, 50, 0, 5,
-			7, 1, 10, 2, 32, 3, 8, 129, 136, 0, 4, 110, 1, 10, 2, 32, 3, 8, 141, 50, 0, 110, 1, 110, 0, 4, 1, 103, 2, 110,
-			12, 3, 13, 0, 1, 104, 115, 2, 110, 0, 117, 2, 114, 17, 65, 3, 57, 13, 0, 4, 114, 1, 10, 2, 32, 3, 57, 114, 0, 117,
-			114, 2, 25, 0, 2, 108, 105, 32, 3, 113, 6, 136, 0, 1, 109, 2, 110, 3, 113, 124, 0, 1, 100, 114, 97, 99, 3, 113, 136, 0,
-			114, 105, 116, 121, 3, 122, 6, 124, 34, 113, 47, 2, 122, 0, 2, 116, 32, 3, 122, 13, 0, 114, 1, 114, 2, 32, 3, 122, 114, 0,
-			2, 32, 3, 129, 136, 0, 117, 120, 3, 134, 0, 4, 1, 98, 2, 108, 111, 103, 121, 3, 137, 124, 0, 1, 118, 0, 8, 2, 110, 0,
-			114, 1, 10, 2, 12, 3, 142, 0, 4, 1, 118, 2, 108, 3, 144, 0, 1, 122, 2, 110, 0, 8, 114, 2, 116, 0, 110, 8, 108, 3,
-			144, 50, 0, 7, 6, 105, 114, 0, 4, 2, 97, 116, 3, 2, 137, 34, 0, 2, 101, 99, 116, 0, 4, 1, 21, 2, 111, 32, 3, 6,
-			141, 34, 0, 2, 97, 32, 0, 2, 105, 32, 0, 2, 97, 98, 108, 101, 3, 6, 145, 0, 2, 97, 116, 101, 3, 8, 141, 34, 0, 1,
-			112, 115, 97, 2, 105, 3, 34, 0, 8, 2, 114, 101, 21, 14, 128, 132, 130, 3, 113, 0, 4, 2, 111, 3, 113, 34, 0, 8, 2, 97,
-			0, 4, 2, 114, 111, 3, 122, 0, 2, 114, 117, 0, 8, 2, 114, 17, 65, 0, 4, 1, 21, 2, 97, 116, 105, 111, 110, 3, 122, 34,
-			0, 1, 109, 2, 97, 99, 0, 1, 112, 0, 2, 105, 0, 4, 3, 128, 0, 1, 116, 115, 2, 32, 0, 4, 1, 103, 2, 111, 3, 137,
-			34, 0, 1, 118, 2, 117, 115, 0, 2, 101, 116, 121, 0, 8, 2, 105, 115, 104, 0, 8, 17, 67, 2, 111, 32, 0, 111, 110, 2, 17,
-			65, 3, 137, 34, 6, 124, 50, 0, 4, 101, 1, 99, 2, 110, 3, 137, 34, 13, 0, 111, 1, 118, 2, 110, 0, 101, 5, 8, 3, 137,
-			119, 0, 1, 17, 67, 21, 2, 32, 3, 142, 0, 4, 1, 115, 2, 101, 110, 3, 145, 0, 1, 115, 101, 100, 0, 2, 101, 101, 0, 97,
-			8, 112, 2, 99, 0, 101, 0, 101, 1, 112, 0, 101, 114, 2, 32, 3, 145, 34, 114, 0, 97, 108, 1, 112, 115, 3, 145, 34, 118, 0,
-			121, 2, 32, 3, 145, 34, 122, 0, 111, 110, 8, 3, 145, 50, 0, 4, 5, 5, 3, 147, 0, 5, 5, 1, 116, 115, 2, 32, 0, 7,
-			6, 105, 115, 0, 4, 1, 21, 2, 99, 111, 32, 3, 6, 122, 89, 0, 1, 21, 2, 116, 105, 99, 0, 99, 1, 21, 2, 101, 110, 17,
-			67, 0, 115, 2, 97, 32, 0, 115, 105, 109, 111, 2, 32, 3, 6, 122, 89, 122, 65, 136, 0, 116, 101, 1, 21, 2, 32, 3, 6, 129,
-			89, 47, 0, 1, 114, 2, 121, 32, 3, 8, 13, 89, 0, 1, 115, 17, 67, 21, 2, 32, 3, 8, 122, 89, 0, 116, 97, 110, 1, 21,
-			2, 32, 3, 8, 122, 89, 47, 35, 50, 0, 97, 5, 3, 2, 116, 105, 111, 110, 3, 13, 88, 138, 0, 8, 100, 2, 101, 3, 113, 89,
-			0, 104, 1, 10, 2, 32, 3, 113, 91, 0, 1, 118, 2, 105, 116, 3, 122, 88, 0, 4, 109, 1, 17, 66, 105, 21, 2, 32, 14, 128,
-			144, 131, 3, 122, 88, 13, 65, 0, 109, 1, 21, 2, 32, 14, 128, 145, 131, 0, 109, 1, 110, 97, 2, 32, 14, 128, 144, 131, 0, 4,
-			1, 98, 2, 32, 3, 122, 89, 0, 1, 99, 2, 32, 0, 1, 109, 17, 65, 114, 112, 0, 116, 97, 110, 105, 1, 21, 2, 32, 3, 122,
-			89, 47, 6, 126, 50, 122, 0, 4, 1, 118, 2, 99, 111, 117, 110, 3, 137, 0, 2, 108, 101, 32, 0, 8, 2, 108, 101, 0, 108, 97,
-			110, 100, 8, 3, 137, 55, 13, 50, 72, 0, 4, 1, 10, 2, 97, 98, 108, 3, 137, 88, 0, 1, 118, 100, 97, 0, 2, 101, 114, 12,
-			32, 0, 2, 111, 32, 0, 2, 111, 114, 32, 0, 101, 2, 32, 0, 101, 2, 100, 32, 0, 101, 114, 2, 32, 3, 137, 88, 114, 0, 97,
-			2, 116, 105, 111, 110, 3, 137, 88, 138, 0, 4, 1, 114, 104, 99, 2, 116, 32, 3, 137, 89, 0, 2, 105, 118, 101, 0, 7, 6, 105,
-			116, 0, 105, 117, 115, 2, 32, 3, 6, 122, 91, 13, 89, 0, 4, 1, 116, 17, 65, 17, 67, 2, 32, 3, 6, 129, 47, 0, 2, 97,
-			32, 24, 0, 2, 105, 32, 0, 2, 111, 32, 0, 105, 115, 2, 32, 3, 6, 137, 47, 122, 89, 0, 1, 10, 2, 105, 118, 101, 32, 3,
-			8, 113, 47, 0, 4, 121, 1, 10, 2, 32, 3, 8, 113, 47, 2, 37, 0, 121, 1, 100, 10, 2, 32, 14, 128, 128, 131, 0, 121, 1,
-			100, 117, 29, 2, 32, 0, 1, 21, 21, 2, 97, 110, 32, 3, 8, 122, 47, 0, 111, 117, 115, 1, 10, 3, 8, 122, 47, 13, 89, 0,
-			97, 114, 121, 5, 3, 1, 10, 2, 32, 3, 13, 47, 121, 34, 2, 122, 0, 4, 1, 10, 2, 101, 32, 3, 122, 47, 0, 1, 98, 114,
-			111, 0, 1, 100, 101, 114, 99, 0, 1, 108, 2, 101, 114, 0, 1, 110, 97, 114, 103, 2, 101, 0, 1, 110, 105, 102, 110, 2, 101, 0,
-			1, 114, 99, 2, 101, 32, 0, 1, 114, 117, 2, 101, 0, 1, 115, 105, 117, 113, 2, 101, 0, 1, 115, 111, 112, 2, 101, 0, 2, 101,
-			114, 97, 116, 0, 8, 100, 101, 0, 121, 8, 17, 67, 2, 32, 3, 122, 47, 37, 0, 101, 115, 1, 115, 111, 112, 2, 32, 3, 122, 47,
-			89, 0, 104, 1, 108, 2, 101, 114, 3, 122, 86, 0, 114, 101, 1, 108, 3, 129, 47, 114, 0, 4, 1, 10, 2, 101, 32, 24, 3, 137,
-			47, 0, 1, 99, 2, 101, 32, 0, 1, 99, 2, 101, 114, 32, 0, 1, 109, 97, 2, 101, 0, 1, 110, 2, 114, 17, 65, 0, 1, 110,
-			117, 2, 101, 0, 1, 116, 2, 108, 0, 1, 118, 2, 97, 108, 0, 1, 118, 2, 101, 114, 32, 0, 2, 117, 109, 0, 8, 109, 2, 111,
-			0, 8, 112, 115, 2, 101, 0, 8, 115, 2, 101, 0, 101, 1, 114, 119, 0, 101, 1, 120, 2, 32, 0, 114, 111, 1, 110, 2, 103, 101,
-			3, 137, 47, 34, 13, 0, 114, 111, 1, 110, 3, 137, 47, 34, 136, 0, 101, 115, 1, 10, 2, 32, 3, 137, 47, 89, 0, 4, 104, 8,
-			116, 3, 137, 86, 0, 104, 101, 1, 108, 0, 104, 101, 2, 32, 0, 7, 6, 105, 118, 0, 4, 1, 114, 116, 110, 111, 99, 3, 6, 137,
-			84, 0, 1, 116, 99, 2, 97, 108, 0, 1, 118, 21, 2, 97, 108, 0, 97, 1, 108, 21, 2, 32, 3, 6, 137, 84, 13, 0, 4, 1,
-			17, 67, 17, 67, 29, 2, 101, 110, 3, 122, 84, 0, 1, 17, 67, 29, 2, 101, 108, 0, 1, 21, 2, 101, 0, 1, 104, 115, 2, 101,
-			114, 0, 1, 108, 2, 101, 114, 0, 1, 114, 2, 101, 108, 0, 1, 114, 2, 101, 110, 0, 1, 114, 2, 101, 114, 0, 1, 114, 2, 101,
-			116, 0, 8, 103, 2, 101, 0, 8, 108, 2, 101, 0, 8, 114, 2, 101, 114, 32, 0, 101, 2, 110, 101, 115, 115, 0, 4, 1, 100, 121,
-			2, 101, 3, 137, 84, 0, 1, 104, 2, 101, 32, 0, 1, 108, 2, 101, 110, 0, 1, 110, 2, 101, 32, 0, 1, 114, 100, 2, 101, 32,
-			0, 1, 114, 100, 2, 101, 114, 0, 1, 114, 101, 100, 2, 101, 0, 1, 114, 112, 101, 100, 2, 101, 0, 1, 118, 2, 101, 0, 1, 119,
-			2, 101, 32, 0, 2, 101, 13, 0, 2, 111, 114, 32, 0, 8, 2, 97, 110, 0, 8, 108, 2, 101, 17, 66, 0, 8, 108, 97, 2, 101,
-			0, 8, 114, 114, 97, 2, 101, 0, 101, 8, 108, 2, 17, 66, 0, 97, 108, 1, 114, 3, 137, 84, 118, 0, 7, 6, 108, 101, 0, 1,
-			116, 116, 2, 21, 3, 14, 55, 0, 4, 1, 10, 2, 32, 3, 55, 0, 1, 114, 10, 2, 32, 0, 1, 17, 67, 11, 2, 17, 66, 105,
-			97, 3, 55, 6, 129, 0, 4, 1, 17, 67, 10, 2, 115, 115, 3, 55, 13, 0, 1, 98, 17, 65, 2, 17, 67, 32, 0, 114, 1, 98,
-			17, 65, 2, 32, 0, 115, 115, 1, 21, 2, 32, 14, 128, 130, 132, 3, 55, 13, 89, 0, 115, 115, 110, 101, 115, 115, 1, 21, 2, 32,
-			14, 128, 130, 136, 3, 55, 13, 89, 50, 13, 89, 0, 115, 115, 108, 121, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 13, 89, 55, 2,
-			122, 0, 114, 1, 98, 21, 2, 17, 67, 21, 3, 55, 114, 0, 103, 103, 101, 100, 3, 55, 121, 81, 122, 72, 0, 115, 115, 5, 8, 1,
-			21, 2, 32, 14, 128, 130, 132, 3, 55, 121, 89, 0, 115, 115, 110, 101, 115, 115, 5, 8, 1, 21, 2, 32, 14, 128, 130, 136, 3, 55,
-			121, 89, 50, 121, 89, 0, 115, 115, 108, 121, 5, 8, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 121, 89, 55, 2, 122, 0, 109, 1,
-			112, 10, 2, 101, 110, 116, 3, 55, 122, 65, 0, 4, 1, 17, 67, 2, 116, 111, 110, 32, 3, 118, 0, 1, 17, 67, 10, 2, 32, 0,
-			1, 17, 67, 11, 2, 17, 66, 21, 0, 1, 98, 21, 2, 17, 67, 21, 0, 1, 100, 21, 2, 17, 66, 21, 0, 1, 116, 21, 2, 17,
-			67, 21, 0, 109, 1, 10, 2, 101, 110, 116, 3, 118, 65, 0, 100, 1, 98, 17, 65, 2, 32, 3, 118, 72, 0, 5, 8, 1, 17, 67,
-			10, 2, 32, 3, 121, 55, 0, 7, 6, 109, 105, 0, 4, 115, 8, 2, 116, 105, 109, 3, 65, 2, 122, 89, 0, 115, 8, 2, 116, 105,
-			116, 0, 115, 8, 2, 105, 110, 3, 65, 4, 122, 89, 0, 2, 115, 116, 97, 3, 65, 113, 0, 108, 108, 101, 110, 3, 65, 113, 55, 121,
-			50, 0, 115, 8, 2, 21, 14, 128, 132, 131, 3, 65, 113, 89, 0, 4, 2, 115, 115, 105, 3, 65, 122, 0, 8, 2, 110, 101, 114, 97,
-			0, 108, 108, 105, 8, 3, 65, 122, 55, 122, 0, 115, 101, 114, 97, 98, 3, 65, 122, 88, 14, 34, 13, 71, 0, 4, 115, 2, 99, 104,
-			105, 101, 3, 65, 122, 89, 0, 115, 2, 100, 101, 109, 0, 115, 2, 102, 105, 0, 115, 2, 104, 97, 112, 0, 115, 2, 116, 114, 97, 108,
-			0, 115, 2, 116, 114, 101, 115, 0, 115, 2, 116, 121, 0, 115, 8, 2, 116, 105, 0, 115, 115, 0, 115, 99, 105, 8, 2, 98, 3, 65,
-			122, 89, 13, 0, 115, 116, 108, 101, 3, 65, 122, 89, 118, 0, 115, 104, 2, 109, 97, 3, 65, 122, 91, 0, 8, 2, 110, 17, 65, 114,
-			3, 65, 137, 0, 99, 114, 2, 111, 3, 65, 137, 49, 34, 0, 99, 114, 111, 2, 17, 67, 17, 67, 21, 3, 65, 137, 49, 34, 124, 0,
-			99, 114, 111, 2, 17, 67, 17, 65, 21, 3, 65, 137, 49, 34, 136, 0, 115, 2, 101, 114, 3, 65, 137, 88, 0, 7, 6, 110, 103, 0,
-			4, 1, 17, 65, 109, 2, 121, 3, 50, 75, 0, 1, 105, 98, 2, 101, 114, 0, 1, 105, 103, 2, 101, 114, 0, 1, 117, 2, 121, 0,
-			2, 101, 0, 2, 105, 101, 32, 0, 2, 105, 116, 105, 0, 105, 2, 98, 3, 50, 75, 13, 0, 4, 101, 100, 3, 50, 75, 72, 0, 101,
-			100, 1, 111, 112, 115, 0, 4, 105, 110, 103, 1, 105, 104, 3, 50, 75, 113, 68, 0, 105, 110, 103, 1, 105, 114, 99, 0, 105, 110, 103,
-			1, 117, 2, 32, 0, 101, 1, 111, 99, 2, 115, 116, 3, 50, 75, 121, 0, 4, 1, 105, 114, 2, 101, 114, 3, 68, 0, 1, 105, 115,
-			2, 101, 114, 0, 2, 121, 0, 117, 101, 0, 4, 101, 100, 1, 97, 3, 68, 72, 0, 101, 100, 1, 111, 0, 4, 1, 97, 98, 2, 101,
-			114, 3, 68, 81, 0, 1, 97, 108, 99, 2, 101, 114, 0, 1, 105, 2, 101, 114, 0, 1, 111, 2, 101, 114, 0, 1, 117, 111, 121, 2,
-			101, 114, 0, 2, 17, 65, 0, 2, 101, 115, 116, 0, 2, 108, 0, 2, 114, 0, 8, 97, 2, 101, 114, 0, 8, 105, 114, 2, 101, 0,
-			105, 110, 103, 2, 32, 3, 68, 113, 68, 0, 7, 6, 111, 108, 0, 121, 1, 112, 32, 24, 3, 4, 124, 55, 122, 0, 111, 2, 103, 105,
-			3, 6, 124, 55, 13, 0, 4, 1, 21, 21, 2, 97, 114, 3, 6, 136, 55, 0, 1, 21, 21, 2, 117, 115, 0, 105, 115, 1, 112, 10,
-			3, 8, 13, 55, 122, 89, 0, 4, 1, 10, 2, 101, 110, 17, 67, 3, 13, 55, 0, 1, 10, 2, 111, 117, 115, 32, 0, 1, 109, 2,
-			101, 99, 0, 1, 112, 2, 105, 116, 101, 0, 1, 115, 2, 105, 99, 0, 1, 115, 2, 105, 100, 105, 0, 1, 115, 2, 105, 108, 0, 108,
-			1, 112, 2, 117, 0, 108, 1, 114, 97, 99, 0, 111, 2, 103, 105, 99, 3, 13, 55, 6, 124, 0, 101, 1, 109, 2, 115, 116, 3, 13,
-			55, 121, 0, 105, 99, 101, 1, 112, 3, 13, 55, 129, 89, 0, 102, 1, 119, 3, 117, 55, 83, 0, 118, 1, 119, 3, 117, 55, 84, 0,
-			4, 1, 114, 116, 101, 112, 2, 32, 3, 118, 0, 1, 116, 115, 10, 2, 32, 0, 8, 100, 105, 0, 4, 1, 10, 2, 105, 32, 3, 124,
-			55, 0, 1, 21, 2, 111, 32, 0, 1, 104, 2, 97, 114, 0, 1, 109, 2, 101, 99, 117, 108, 101, 0, 1, 115, 2, 101, 109, 0, 1,
-			116, 2, 101, 114, 0, 8, 100, 105, 2, 97, 0, 108, 1, 114, 98, 0, 108, 1, 114, 116, 2, 17, 65, 0, 108, 1, 116, 97, 0, 1,
-			99, 2, 111, 117, 114, 3, 125, 55, 0, 4, 1, 102, 2, 107, 3, 136, 0, 1, 121, 2, 107, 0, 4, 1, 114, 116, 110, 111, 99, 3,
-			136, 55, 0, 1, 116, 120, 101, 0, 2, 97, 110, 100, 32, 0, 2, 97, 114, 0, 8, 2, 97, 29, 0, 108, 1, 114, 0, 108, 1, 116,
-			0, 108, 1, 119, 0, 116, 3, 136, 55, 47, 0, 100, 3, 136, 55, 72, 0, 109, 2, 32, 3, 136, 65, 0, 7, 6, 111, 109, 0, 8,
-			2, 105, 17, 67, 3, 2, 136, 65, 0, 101, 1, 21, 2, 116, 114, 121, 3, 6, 124, 65, 13, 0, 4, 101, 1, 21, 2, 116, 114, 101,
-			3, 6, 124, 65, 122, 0, 101, 2, 116, 101, 114, 0, 105, 110, 2, 111, 3, 6, 124, 65, 122, 50, 0, 101, 1, 110, 105, 21, 21, 2,
-			32, 3, 6, 136, 65, 138, 0, 4, 1, 10, 2, 105, 115, 101, 32, 3, 8, 13, 65, 0, 1, 10, 2, 105, 122, 101, 32, 0, 1, 21,
-			2, 105, 115, 116, 32, 0, 121, 1, 10, 2, 32, 3, 8, 13, 65, 2, 122, 0, 4, 1, 10, 2, 32, 3, 13, 65, 0, 1, 100, 2,
-			101, 115, 116, 0, 1, 100, 2, 105, 110, 105, 0, 8, 100, 2, 97, 0, 97, 1, 116, 2, 116, 111, 3, 13, 65, 126, 0, 97, 1, 119,
-			2, 110, 3, 117, 65, 13, 0, 101, 1, 119, 2, 110, 3, 122, 65, 122, 0, 4, 1, 99, 2, 32, 3, 124, 65, 0, 1, 108, 103, 2,
-			101, 114, 0, 1, 114, 2, 32, 0, 8, 112, 2, 101, 0, 110, 105, 8, 2, 21, 3, 124, 65, 50, 6, 122, 0, 4, 1, 99, 2, 101,
-			3, 125, 65, 0, 1, 99, 2, 112, 97, 110, 0, 1, 115, 2, 101, 32, 0, 101, 8, 115, 0, 109, 1, 99, 2, 101, 0, 97, 99, 104,
-			1, 116, 115, 3, 125, 65, 13, 49, 0, 4, 98, 1, 116, 2, 25, 3, 134, 65, 0, 98, 1, 119, 2, 32, 0, 98, 101, 1, 99, 2,
-			32, 0, 4, 1, 110, 2, 97, 100, 3, 136, 65, 0, 1, 114, 2, 97, 110, 0, 1, 114, 104, 99, 0, 98, 1, 99, 2, 32, 0, 97,
-			110, 1, 114, 2, 116, 105, 3, 136, 65, 6, 35, 50, 0, 7, 6, 111, 110, 0, 1, 100, 2, 97, 116, 3, 2, 136, 50, 0, 4, 1,
-			21, 2, 105, 99, 97, 3, 6, 124, 50, 0, 1, 115, 114, 101, 112, 2, 105, 0, 121, 109, 111, 117, 115, 3, 6, 124, 50, 122, 65, 13,
-			89, 0, 4, 1, 112, 116, 115, 111, 112, 3, 6, 136, 50, 0, 2, 105, 32, 0, 105, 115, 109, 1, 10, 2, 32, 3, 8, 13, 50, 122,
-			88, 13, 65, 0, 105, 115, 116, 1, 10, 2, 32, 3, 8, 13, 50, 122, 89, 47, 0, 4, 1, 10, 2, 101, 114, 32, 3, 13, 50, 0,
-			1, 17, 67, 11, 2, 32, 0, 1, 21, 21, 2, 32, 0, 1, 98, 10, 2, 32, 0, 1, 99, 10, 2, 32, 0, 1, 99, 101, 2, 100,
-			0, 1, 100, 17, 67, 2, 32, 0, 1, 103, 114, 2, 32, 0, 1, 104, 112, 2, 101, 116, 105, 0, 1, 109, 2, 100, 32, 0, 1, 109,
-			10, 2, 32, 0, 1, 114, 97, 2, 32, 0, 1, 114, 100, 2, 32, 0, 1, 115, 10, 2, 32, 0, 1, 115, 114, 101, 112, 0, 1, 116,
-			10, 2, 32, 0, 1, 116, 111, 104, 112, 0, 121, 1, 10, 2, 32, 3, 13, 50, 2, 122, 0, 111, 117, 115, 1, 10, 3, 13, 50, 13,
-			89, 0, 101, 8, 3, 58, 124, 50, 0, 99, 101, 8, 2, 32, 3, 58, 124, 50, 89, 0, 101, 5, 6, 8, 3, 58, 125, 50, 0, 99,
-			101, 5, 6, 8, 2, 32, 3, 58, 125, 50, 89, 0, 101, 100, 1, 17, 67, 10, 2, 32, 14, 128, 136, 130, 3, 72, 0, 105, 110, 103,
-			1, 17, 67, 10, 2, 32, 14, 128, 136, 131, 3, 113, 68, 0, 4, 1, 103, 2, 101, 3, 124, 50, 0, 1, 108, 102, 2, 32, 0, 1,
-			108, 105, 2, 32, 0, 1, 108, 121, 2, 32, 0, 1, 110, 2, 101, 0, 1, 112, 2, 32, 12, 0, 1, 114, 99, 2, 32, 0, 1, 114,
-			111, 2, 32, 0, 1, 114, 116, 10, 2, 32, 0, 1, 119, 2, 107, 0, 1, 119, 2, 116, 0, 1, 120, 2, 32, 12, 0, 2, 97, 108,
-			100, 0, 5, 3, 1, 103, 97, 2, 32, 0, 5, 8, 1, 21, 2, 32, 12, 12, 0, 101, 1, 109, 2, 116, 105, 3, 124, 50, 113, 0,
-			4, 1, 109, 2, 101, 121, 3, 125, 50, 0, 1, 109, 2, 107, 0, 1, 109, 2, 116, 104, 0, 1, 114, 102, 2, 116, 0, 1, 115, 100,
-			2, 32, 0, 1, 119, 0, 8, 2, 105, 111, 0, 8, 104, 2, 101, 121, 0, 101, 1, 100, 110, 117, 2, 32, 0, 103, 8, 112, 115, 3,
-			125, 50, 75, 0, 101, 1, 109, 2, 116, 97, 3, 125, 50, 122, 0, 103, 5, 35, 1, 109, 2, 101, 114, 3, 125, 68, 81, 0, 4, 2,
-			97, 110, 32, 3, 136, 50, 0, 8, 112, 2, 121, 0, 101, 8, 2, 114, 3, 136, 50, 13, 0, 117, 115, 3, 136, 50, 13, 89, 0, 7,
-			6, 111, 111, 0, 1, 10, 2, 110, 3, 6, 134, 0, 4, 1, 17, 67, 2, 107, 3, 117, 0, 1, 102, 2, 116, 0, 1, 103, 2, 100,
-			0, 1, 104, 2, 100, 0, 1, 104, 2, 100, 0, 1, 104, 2, 107, 0, 1, 115, 2, 116, 0, 1, 116, 115, 2, 100, 0, 1, 119, 2,
-			100, 0, 1, 119, 2, 108, 0, 4, 1, 108, 98, 2, 100, 3, 125, 0, 1, 108, 102, 2, 100, 0, 4, 114, 3, 133, 0, 114, 2, 32,
-			0, 4, 3, 134, 0, 1, 107, 2, 107, 0, 1, 109, 2, 110, 32, 0, 1, 112, 2, 107, 0, 1, 112, 115, 2, 110, 32, 0, 1, 115,
-			2, 116, 104, 0, 8, 2, 114, 0, 116, 2, 105, 99, 32, 3, 134, 6, 124, 47, 0, 115, 101, 1, 104, 99, 3, 134, 88, 0, 4, 115,
-			2, 101, 3, 134, 89, 0, 115, 101, 1, 103, 0, 8, 99, 2, 112, 3, 136, 6, 124, 0, 114, 1, 99, 2, 100, 3, 136, 6, 132, 0,
-			115, 1, 104, 99, 2, 101, 110, 3, 136, 88, 0, 4, 114, 1, 112, 3, 143, 0, 114, 8, 109, 0, 7, 6, 111, 114, 0, 8, 102, 2,
-			115, 21, 3, 2, 132, 0, 4, 101, 1, 102, 2, 99, 108, 111, 3, 2, 133, 0, 101, 1, 102, 2, 103, 111, 0, 101, 1, 102, 2, 115,
-			101, 0, 101, 1, 102, 2, 116, 111, 0, 4, 1, 21, 2, 105, 99, 32, 3, 6, 124, 34, 0, 1, 21, 2, 105, 99, 97, 108, 0, 1,
-			21, 2, 99, 97, 32, 3, 6, 132, 0, 2, 105, 32, 3, 6, 132, 34, 0, 2, 117, 109, 32, 3, 6, 133, 34, 0, 116, 101, 1, 102,
-			2, 32, 3, 6, 133, 47, 138, 0, 105, 108, 121, 1, 21, 2, 32, 3, 8, 13, 34, 13, 55, 2, 122, 0, 4, 1, 10, 2, 97, 116,
-			105, 111, 110, 3, 13, 34, 0, 2, 105, 103, 105, 110, 97, 0, 121, 1, 10, 2, 32, 3, 13, 34, 2, 122, 0, 101, 115, 99, 3, 13,
-			34, 6, 121, 89, 0, 105, 1, 104, 2, 122, 3, 13, 34, 137, 0, 101, 100, 1, 10, 2, 32, 3, 13, 72, 0, 103, 8, 102, 2, 17,
-			65, 118, 3, 13, 81, 0, 101, 100, 1, 104, 2, 32, 14, 128, 128, 129, 3, 72, 0, 4, 1, 10, 2, 32, 3, 114, 0, 1, 98, 98,
-			2, 110, 0, 1, 100, 110, 2, 32, 0, 1, 102, 2, 103, 17, 65, 116, 0, 1, 102, 10, 2, 100, 32, 0, 1, 102, 102, 101, 2, 116,
-			0, 1, 114, 114, 101, 116, 0, 1, 116, 110, 101, 118, 2, 32, 0, 101, 1, 116, 21, 2, 32, 0, 4, 1, 10, 2, 97, 116, 101, 3,
-			114, 34, 0, 1, 10, 2, 111, 117, 115, 0, 99, 101, 1, 119, 2, 115, 116, 3, 117, 0, 2, 114, 3, 124, 0, 4, 1, 21, 2, 105,
-			116, 105, 3, 124, 34, 0, 1, 21, 2, 105, 116, 121, 0, 1, 108, 102, 2, 105, 0, 1, 109, 2, 97, 108, 0, 2, 101, 17, 66, 32,
-			0, 2, 101, 110, 17, 67, 0, 2, 105, 103, 0, 5, 35, 8, 104, 2, 111, 0, 8, 2, 105, 17, 67, 0, 114, 8, 109, 0, 4, 97,
-			2, 99, 108, 3, 124, 34, 13, 0, 97, 8, 2, 116, 111, 0, 101, 105, 103, 110, 1, 102, 3, 124, 34, 13, 50, 0, 4, 101, 1, 102,
-			2, 115, 116, 3, 124, 34, 122, 0, 105, 1, 104, 2, 122, 111, 110, 116, 0, 1, 119, 2, 114, 3, 125, 0, 111, 117, 103, 104, 3, 125,
-			34, 13, 0, 111, 117, 103, 104, 5, 3, 3, 125, 34, 136, 0, 4, 1, 119, 3, 128, 0, 1, 119, 2, 109, 0, 1, 119, 2, 115, 101,
-			0, 1, 119, 2, 116, 104, 0, 5, 3, 2, 114, 3, 130, 0, 4, 1, 99, 2, 107, 3, 132, 0, 1, 102, 2, 101, 118, 101, 114, 0,
-			1, 102, 2, 107, 0, 1, 104, 99, 2, 100, 0, 1, 108, 2, 100, 0, 1, 121, 2, 107, 0, 2, 99, 104, 32, 0, 2, 101, 115, 105,
-			115, 0, 2, 109, 32, 0, 2, 110, 32, 0, 2, 115, 101, 32, 0, 2, 116, 0, 8, 0, 8, 99, 2, 21, 0, 8, 102, 2, 21, 0,
-			8, 109, 0, 101, 8, 102, 2, 17, 65, 0, 101, 8, 102, 2, 17, 67, 0, 116, 1, 109, 101, 2, 32, 0, 4, 3, 133, 0, 1, 99,
-			2, 101, 32, 0, 1, 100, 2, 32, 0, 1, 108, 112, 0, 1, 112, 2, 116, 0, 1, 116, 110, 2, 32, 0, 1, 116, 115, 2, 109, 0,
-			1, 119, 2, 101, 0, 1, 119, 2, 110, 0, 1, 119, 2, 116, 32, 0, 1, 119, 115, 2, 100, 0, 5, 8, 1, 10, 2, 32, 0, 5,
-			8, 1, 21, 21, 2, 32, 14, 128, 144, 130, 0, 101, 0, 101, 1, 116, 115, 2, 32, 0, 101, 8, 109, 0, 114, 2, 32, 0, 4, 1,
-			108, 104, 99, 2, 105, 99, 3, 133, 34, 0, 1, 108, 104, 99, 2, 111, 117, 115, 0, 2, 17, 65, 0, 2, 101, 17, 65, 0, 2, 101,
-			116, 0, 2, 101, 120, 0, 121, 8, 116, 115, 3, 133, 34, 122, 0, 4, 5, 5, 1, 119, 3, 148, 0, 5, 5, 1, 119, 2, 109, 0,
-			5, 5, 1, 119, 2, 115, 101, 0, 5, 5, 1, 119, 2, 116, 104, 0, 121, 5, 3, 1, 116, 17, 65, 21, 21, 2, 32, 3, 149, 34,
-			37, 0, 7, 6, 111, 115, 0, 2, 105, 116, 121, 3, 6, 124, 89, 0, 111, 1, 21, 2, 112, 104, 3, 6, 124, 89, 13, 0, 2, 97,
-			108, 32, 3, 6, 136, 88, 0, 2, 105, 118, 101, 3, 6, 136, 89, 0, 105, 115, 2, 32, 3, 6, 136, 89, 122, 89, 0, 117, 114, 101,
-			3, 6, 136, 90, 114, 0, 4, 1, 112, 2, 105, 116, 105, 111, 3, 13, 88, 0, 115, 1, 112, 2, 101, 115, 115, 0, 101, 1, 112, 114,
-			117, 112, 3, 13, 89, 0, 111, 1, 21, 2, 112, 104, 105, 99, 3, 13, 89, 6, 124, 0, 4, 116, 1, 112, 2, 101, 114, 105, 3, 124,
-			89, 47, 0, 116, 1, 112, 2, 117, 0, 116, 1, 112, 97, 0, 116, 1, 112, 101, 114, 0, 116, 1, 112, 101, 114, 112, 0, 116, 1, 112,
-			109, 105, 0, 116, 1, 112, 109, 111, 99, 0, 116, 1, 112, 120, 101, 0, 116, 1, 112, 121, 104, 0, 4, 5, 3, 1, 99, 2, 116, 3,
-			131, 89, 0, 5, 3, 1, 114, 102, 2, 116, 0, 115, 5, 3, 1, 98, 0, 115, 5, 3, 1, 108, 0, 115, 5, 3, 1, 109, 0, 115,
-			5, 3, 1, 114, 0, 8, 108, 2, 101, 3, 134, 88, 0, 4, 1, 29, 2, 121, 3, 136, 88, 0, 8, 114, 2, 101, 13, 0, 101, 2,
-			32, 0, 4, 1, 99, 2, 101, 99, 3, 136, 89, 0, 1, 99, 2, 105, 110, 101, 32, 0, 115, 1, 114, 103, 0, 4, 116, 1, 104, 2,
-			32, 3, 136, 89, 47, 0, 116, 1, 104, 103, 0, 116, 1, 109, 0, 116, 1, 112, 0, 7, 6, 111, 117, 0, 116, 8, 2, 21, 14, 128,
-			132, 131, 3, 2, 135, 47, 0, 1, 21, 2, 109, 32, 3, 6, 134, 0, 4, 115, 1, 17, 66, 10, 2, 32, 3, 8, 13, 89, 0, 115,
-			1, 114, 100, 10, 2, 32, 0, 4, 103, 104, 1, 114, 98, 2, 32, 3, 13, 0, 103, 104, 1, 114, 111, 0, 114, 101, 100, 1, 10, 3,
-			13, 72, 0, 4, 115, 1, 10, 2, 32, 3, 13, 89, 0, 115, 1, 108, 10, 2, 32, 0, 115, 1, 109, 10, 2, 32, 0, 115, 1, 110,
-			10, 2, 32, 0, 115, 121, 1, 10, 2, 32, 3, 13, 89, 2, 37, 0, 1, 104, 2, 109, 3, 57, 134, 0, 97, 3, 58, 126, 0, 4,
-			114, 1, 10, 2, 32, 3, 114, 0, 114, 1, 112, 17, 65, 0, 108, 2, 100, 3, 117, 0, 99, 101, 1, 108, 103, 2, 115, 3, 124, 0,
-			4, 103, 104, 1, 99, 3, 124, 83, 0, 103, 104, 1, 114, 116, 0, 4, 1, 99, 2, 110, 116, 114, 3, 125, 0, 1, 99, 2, 112, 108,
-			0, 1, 99, 2, 114, 97, 103, 0, 1, 99, 2, 115, 105, 0, 1, 100, 2, 98, 0, 1, 100, 2, 103, 0, 1, 110, 2, 114, 105, 0,
-			1, 114, 116, 2, 98, 108, 0, 1, 115, 2, 116, 104, 101, 114, 0, 1, 116, 2, 99, 104, 0, 1, 121, 2, 110, 103, 0, 4, 103, 104,
-			1, 108, 3, 125, 83, 0, 103, 104, 1, 110, 0, 103, 104, 1, 114, 0, 103, 104, 1, 116, 0, 4, 114, 3, 128, 0, 114, 1, 99, 2,
-			116, 101, 0, 114, 2, 110, 0, 114, 5, 3, 1, 99, 2, 97, 103, 0, 114, 5, 3, 1, 110, 2, 105, 0, 4, 103, 104, 1, 98, 2,
-			116, 3, 130, 0, 103, 104, 1, 104, 2, 116, 0, 103, 104, 1, 110, 2, 116, 0, 103, 104, 1, 114, 98, 2, 116, 0, 103, 104, 1, 114,
-			119, 0, 103, 104, 2, 116, 0, 103, 104, 8, 0, 4, 103, 104, 5, 3, 1, 99, 3, 131, 83, 0, 103, 104, 5, 3, 1, 114, 116, 0,
-			4, 114, 1, 98, 2, 110, 3, 133, 0, 114, 1, 99, 2, 115, 0, 114, 1, 99, 2, 116, 0, 114, 1, 99, 2, 116, 101, 115, 97, 0,
-			114, 1, 109, 2, 110, 0, 114, 1, 112, 0, 114, 1, 112, 110, 2, 32, 0, 114, 8, 102, 0, 114, 8, 121, 0, 114, 99, 101, 1, 115,
-			3, 133, 89, 0, 4, 1, 98, 2, 100, 3, 134, 0, 1, 98, 2, 108, 108, 0, 1, 99, 2, 116, 104, 0, 1, 104, 103, 2, 108, 0,
-			1, 107, 0, 1, 109, 2, 115, 115, 101, 0, 1, 110, 2, 103, 97, 0, 1, 114, 2, 98, 108, 0, 1, 114, 2, 116, 105, 110, 0, 1,
-			116, 2, 99, 97, 110, 0, 1, 119, 2, 110, 100, 17, 65, 0, 1, 119, 2, 110, 100, 17, 67, 0, 1, 121, 2, 116, 0, 2, 32, 0,
-			2, 102, 0, 2, 105, 0, 2, 108, 17, 65, 0, 2, 112, 0, 2, 118, 0, 2, 122, 0, 5, 35, 1, 114, 2, 116, 101, 0, 103, 104,
-			1, 114, 104, 116, 0, 120, 2, 32, 0, 103, 101, 1, 114, 3, 134, 90, 0, 99, 104, 1, 100, 3, 134, 91, 0, 4, 3, 135, 0, 1,
-			102, 2, 108, 101, 0, 1, 114, 17, 67, 2, 116, 0, 1, 121, 2, 116, 32, 0, 2, 116, 0, 98, 1, 100, 2, 116, 0, 103, 104, 1,
-			98, 0, 103, 104, 1, 100, 2, 116, 0, 103, 104, 1, 108, 112, 0, 103, 104, 1, 108, 115, 0, 103, 104, 1, 114, 100, 0, 4, 1, 98,
-			2, 108, 100, 3, 136, 0, 1, 104, 115, 2, 108, 100, 101, 114, 0, 1, 109, 2, 108, 17, 67, 0, 1, 112, 2, 108, 116, 0, 1, 115,
-			2, 108, 0, 103, 104, 0, 103, 104, 1, 100, 0, 103, 104, 1, 104, 0, 103, 104, 1, 108, 114, 0, 4, 114, 1, 98, 2, 115, 101, 3,
-			143, 0, 114, 1, 116, 0, 114, 1, 116, 2, 32, 0, 114, 1, 116, 2, 110, 0, 114, 5, 7, 8, 121, 0, 114, 8, 103, 2, 100, 0,
-			4, 114, 1, 99, 115, 3, 146, 0, 114, 1, 104, 0, 114, 1, 108, 102, 0, 114, 1, 115, 0, 114, 1, 116, 115, 0, 114, 1, 118, 101,
-			2, 101, 100, 0, 114, 1, 118, 101, 100, 0, 114, 8, 0, 114, 8, 100, 0, 4, 114, 5, 5, 3, 148, 0, 114, 5, 5, 1, 99, 2,
-			116, 101, 0, 114, 5, 5, 2, 110, 0, 7, 6, 111, 118, 0, 101, 114, 8, 2, 21, 14, 128, 132, 132, 3, 4, 136, 84, 114, 0, 105,
-			116, 99, 104, 1, 21, 2, 32, 3, 8, 13, 84, 122, 76, 0, 4, 1, 99, 2, 101, 110, 17, 67, 3, 124, 84, 0, 1, 104, 2, 101,
-			108, 0, 1, 104, 2, 101, 114, 0, 1, 110, 2, 101, 108, 0, 1, 114, 103, 2, 101, 108, 0, 1, 114, 112, 2, 101, 114, 0, 1, 114,
-			116, 2, 101, 114, 0, 8, 2, 117, 108, 0, 101, 114, 1, 112, 2, 21, 3, 124, 84, 13, 0, 101, 114, 101, 105, 103, 110, 1, 115, 3,
-			124, 84, 13, 34, 122, 50, 0, 4, 1, 99, 2, 101, 110, 3, 125, 84, 0, 1, 99, 2, 101, 116, 0, 1, 104, 115, 2, 12, 0, 1,
-			108, 0, 1, 108, 2, 101, 0, 8, 2, 101, 110, 0, 101, 1, 100, 0, 101, 8, 108, 0, 4, 101, 114, 1, 99, 3, 125, 84, 114, 0,
-			101, 114, 1, 99, 2, 32, 0, 101, 114, 110, 1, 103, 3, 125, 84, 114, 50, 0, 4, 1, 21, 2, 97, 108, 3, 134, 84, 0, 1, 109,
-			2, 17, 65, 0, 1, 109, 2, 105, 0, 1, 114, 112, 2, 101, 13, 0, 101, 114, 1, 114, 112, 2, 32, 3, 134, 84, 114, 0, 4, 1,
-			108, 99, 2, 101, 3, 136, 84, 0, 1, 108, 108, 117, 112, 0, 1, 108, 112, 0, 2, 101, 114, 0, 8, 2, 17, 65, 0, 8, 108, 115,
-			2, 101, 110, 17, 65, 0, 4, 101, 114, 1, 10, 2, 32, 3, 136, 84, 114, 0, 101, 114, 2, 99, 111, 97, 0, 101, 114, 2, 100, 111,
-			115, 0, 101, 114, 2, 100, 114, 97, 0, 101, 114, 2, 100, 114, 105, 0, 101, 114, 2, 115, 105, 103, 0, 101, 114, 2, 116, 111, 110, 0,
-			101, 114, 2, 118, 105, 101, 0, 7, 6, 111, 119, 0, 2, 105, 116, 122, 32, 3, 8, 136, 84, 0, 2, 97, 121, 32, 3, 13, 58, 0,
-			108, 101, 1, 110, 107, 2, 100, 3, 124, 55, 122, 0, 4, 1, 97, 3, 135, 0, 1, 98, 2, 101, 108, 0, 1, 98, 2, 101, 114, 0,
-			1, 98, 2, 115, 17, 65, 0, 1, 98, 2, 115, 112, 0, 1, 99, 0, 1, 100, 2, 110, 0, 1, 100, 110, 101, 0, 1, 102, 0, 1,
-			103, 0, 1, 104, 0, 1, 104, 99, 0, 1, 104, 115, 2, 101, 114, 0, 1, 104, 119, 0, 1, 104, 121, 0, 1, 106, 0, 1, 107, 0,
-			1, 108, 99, 0, 1, 108, 102, 2, 101, 114, 0, 1, 108, 103, 2, 101, 114, 0, 1, 108, 108, 97, 115, 105, 0, 1, 108, 112, 0, 1,
-			110, 2, 97, 100, 0, 1, 110, 101, 2, 110, 0, 1, 112, 0, 1, 114, 2, 100, 0, 1, 114, 98, 0, 1, 114, 99, 2, 110, 0, 1,
-			114, 100, 0, 1, 114, 102, 0, 1, 114, 103, 2, 108, 0, 1, 114, 112, 0, 1, 114, 116, 2, 101, 0, 1, 116, 2, 101, 108, 0, 1,
-			116, 2, 101, 114, 0, 1, 116, 2, 110, 0, 1, 118, 0, 1, 119, 0, 1, 121, 0, 8, 2, 108, 0, 8, 100, 0, 8, 108, 108, 97,
-			0, 8, 110, 2, 32, 0, 8, 110, 2, 116, 0, 4, 3, 136, 0, 1, 99, 115, 111, 109, 0, 1, 104, 115, 0, 7, 6, 112, 101, 0,
-			8, 2, 110, 114, 3, 48, 2, 121, 0, 4, 2, 110, 105, 110, 115, 117, 3, 48, 13, 0, 114, 2, 115, 112, 0, 114, 2, 105, 112, 104,
-			3, 48, 13, 34, 0, 4, 8, 2, 114, 111, 103, 3, 48, 114, 0, 114, 2, 99, 101, 105, 0, 114, 2, 99, 101, 112, 0, 114, 2, 99,
-			117, 108, 105, 0, 114, 2, 99, 117, 115, 0, 114, 2, 102, 101, 99, 0, 114, 2, 102, 111, 114, 109, 0, 114, 2, 102, 117, 110, 0, 114,
-			2, 102, 117, 115, 0, 114, 2, 109, 105, 115, 115, 0, 114, 2, 109, 105, 116, 0, 114, 2, 112, 101, 116, 0, 114, 2, 112, 108, 101, 0,
-			114, 2, 115, 105, 115, 0, 114, 2, 115, 117, 0, 114, 2, 115, 117, 0, 114, 2, 116, 97, 105, 0, 114, 2, 116, 117, 0, 114, 2, 118,
-			21, 0, 114, 101, 103, 114, 105, 110, 8, 3, 48, 121, 34, 13, 81, 34, 122, 50, 0, 4, 114, 2, 112, 101, 116, 114, 3, 48, 128, 0,
-			114, 2, 118, 105, 0, 114, 109, 101, 2, 97, 3, 48, 128, 65, 122, 0, 114, 115, 112, 105, 2, 114, 97, 3, 48, 128, 89, 48, 13, 0,
-			114, 115, 101, 118, 101, 114, 3, 48, 128, 89, 122, 84, 6, 142, 0, 97, 99, 101, 3, 48, 129, 89, 0, 7, 6, 112, 114, 0, 101, 8,
-			2, 100, 105, 14, 128, 132, 131, 3, 48, 34, 2, 37, 0, 4, 101, 8, 2, 17, 67, 21, 3, 48, 34, 2, 122, 0, 101, 8, 2, 100,
-			105, 99, 0, 101, 8, 2, 115, 99, 114, 0, 101, 115, 8, 2, 101, 110, 116, 3, 48, 34, 2, 122, 88, 0, 4, 101, 8, 2, 101, 109,
-			3, 48, 34, 2, 129, 0, 101, 8, 2, 109, 111, 108, 0, 101, 8, 2, 117, 0, 101, 8, 2, 105, 110, 21, 14, 128, 132, 131, 3, 48,
-			34, 4, 129, 0, 111, 2, 112, 97, 110, 3, 48, 34, 6, 136, 0, 4, 111, 2, 99, 101, 100, 3, 48, 34, 13, 0, 111, 2, 99, 101,
-			101, 0, 111, 2, 99, 101, 115, 115, 105, 0, 111, 2, 99, 108, 97, 105, 0, 111, 2, 99, 117, 114, 0, 111, 2, 100, 117, 99, 0, 111,
-			2, 102, 97, 110, 0, 111, 2, 102, 101, 115, 0, 111, 2, 102, 105, 99, 0, 111, 2, 102, 111, 117, 0, 111, 2, 102, 117, 0, 111, 2,
-			103, 114, 101, 115, 0, 111, 2, 104, 105, 98, 0, 111, 2, 106, 101, 99, 0, 111, 2, 108, 105, 102, 0, 111, 2, 108, 111, 110, 0, 111,
-			2, 109, 111, 116, 0, 111, 2, 110, 111, 117, 110, 99, 0, 111, 2, 110, 117, 110, 0, 111, 2, 112, 101, 108, 0, 111, 2, 112, 101, 110,
-			115, 0, 111, 2, 112, 105, 116, 0, 111, 2, 112, 114, 105, 101, 0, 111, 2, 112, 117, 108, 0, 111, 2, 115, 112, 101, 99, 116, 17, 65,
-			0, 111, 2, 116, 101, 99, 0, 111, 2, 116, 101, 115, 116, 0, 111, 2, 116, 114, 97, 99, 0, 111, 2, 116, 114, 117, 0, 111, 2, 118,
-			105, 100, 0, 111, 2, 118, 105, 115, 0, 111, 2, 118, 111, 99, 0, 111, 2, 118, 111, 107, 0, 111, 8, 2, 112, 17, 65, 0, 111, 8,
-			2, 115, 97, 0, 111, 8, 2, 115, 99, 0, 4, 101, 2, 99, 105, 111, 3, 48, 34, 121, 0, 101, 2, 106, 117, 100, 105, 0, 101, 8,
-			2, 17, 67, 11, 0, 101, 8, 2, 102, 101, 114, 101, 110, 0, 101, 8, 2, 103, 110, 0, 101, 8, 2, 109, 105, 0, 101, 8, 2, 110,
-			25, 0, 101, 8, 2, 112, 32, 0, 101, 8, 2, 112, 111, 115, 105, 0, 101, 8, 2, 115, 99, 111, 0, 101, 8, 2, 115, 116, 0, 101,
-			100, 97, 2, 116, 111, 3, 48, 34, 121, 72, 13, 0, 101, 118, 8, 2, 97, 108, 3, 48, 34, 121, 84, 0, 4, 101, 115, 2, 101, 110,
-			99, 3, 48, 34, 121, 88, 0, 101, 115, 8, 2, 101, 110, 116, 97, 0, 101, 115, 105, 2, 100, 101, 110, 3, 48, 34, 121, 88, 122, 0,
-			105, 110, 99, 2, 101, 13, 3, 48, 34, 122, 50, 89, 0, 4, 111, 2, 100, 117, 99, 116, 3, 48, 34, 124, 0, 111, 2, 112, 101, 114,
-			0, 111, 2, 112, 104, 0, 111, 2, 112, 111, 115, 105, 116, 0, 111, 2, 115, 101, 99, 0, 111, 2, 116, 101, 115, 116, 97, 110, 0, 111,
-			2, 118, 105, 100, 101, 110, 0, 111, 5, 3, 2, 99, 101, 115, 115, 0, 111, 8, 2, 112, 97, 103, 0, 111, 98, 97, 98, 3, 48, 34,
-			124, 71, 13, 71, 0, 4, 101, 2, 102, 105, 120, 3, 48, 34, 129, 0, 101, 2, 104, 105, 115, 116, 0, 101, 8, 2, 32, 0, 101, 8,
-			2, 97, 109, 0, 101, 8, 2, 99, 105, 110, 99, 0, 101, 8, 2, 102, 101, 99, 0, 101, 8, 2, 109, 105, 117, 0, 101, 8, 2, 113,
-			117, 0, 101, 8, 2, 115, 99, 0, 101, 8, 2, 118, 105, 101, 119, 0, 101, 8, 2, 118, 105, 111, 0, 101, 97, 8, 2, 99, 104, 0,
-			101, 100, 101, 2, 99, 101, 115, 3, 48, 34, 129, 72, 122, 0, 4, 111, 2, 102, 105, 108, 3, 48, 34, 136, 0, 111, 2, 103, 114, 97,
-			0, 111, 2, 108, 111, 103, 0, 111, 109, 101, 2, 116, 104, 3, 48, 34, 136, 65, 129, 0, 105, 8, 2, 111, 3, 48, 34, 137, 0, 105,
-			111, 2, 114, 105, 116, 3, 48, 34, 137, 6, 124, 0, 105, 118, 97, 116, 8, 3, 48, 34, 137, 84, 13, 47, 0, 7, 6, 114, 101, 0,
-			4, 2, 103, 101, 110, 101, 114, 3, 2, 34, 129, 0, 8, 2, 97, 114, 109, 0, 4, 8, 2, 97, 108, 105, 103, 3, 4, 34, 129, 0,
-			8, 2, 97, 108, 108, 0, 8, 2, 97, 117, 21, 14, 128, 132, 130, 0, 8, 2, 99, 111, 110, 14, 128, 132, 130, 0, 8, 2, 99, 114,
-			101, 97, 116, 0, 8, 2, 100, 101, 17, 67, 14, 128, 132, 130, 0, 97, 8, 2, 108, 108, 111, 14, 128, 132, 130, 0, 100, 101, 1, 110,
-			117, 2, 17, 67, 3, 4, 34, 129, 72, 113, 0, 1, 118, 117, 3, 13, 0, 100, 1, 116, 17, 67, 10, 2, 32, 3, 13, 72, 0, 4,
-			8, 2, 100, 114, 3, 34, 2, 129, 0, 8, 2, 101, 100, 117, 14, 128, 132, 130, 0, 8, 2, 101, 109, 14, 128, 132, 130, 0, 8, 2,
-			101, 110, 14, 128, 132, 130, 0, 8, 2, 101, 113, 14, 128, 132, 130, 0, 8, 2, 101, 115, 14, 128, 132, 130, 0, 8, 2, 101, 120, 14,
-			128, 132, 130, 0, 116, 114, 111, 2, 14, 128, 132, 133, 3, 34, 4, 121, 47, 34, 136, 0, 4, 8, 2, 99, 111, 109, 14, 128, 132, 130,
-			3, 34, 4, 129, 0, 8, 2, 105, 21, 14, 128, 132, 130, 0, 8, 2, 117, 110, 14, 128, 132, 130, 0, 4, 97, 2, 17, 67, 11, 3,
-			34, 4, 129, 13, 0, 97, 8, 2, 100, 17, 67, 0, 4, 1, 17, 65, 2, 32, 3, 34, 13, 0, 1, 114, 2, 32, 0, 2, 109, 101,
-			110, 116, 0, 114, 2, 32, 0, 100, 1, 17, 66, 10, 2, 32, 3, 34, 13, 72, 0, 4, 1, 110, 117, 2, 17, 67, 21, 3, 34, 113,
-			0, 2, 97, 99, 116, 0, 2, 100, 101, 109, 12, 0, 8, 2, 17, 67, 21, 0, 8, 99, 2, 109, 97, 116, 0, 97, 2, 108, 105, 116,
-			3, 34, 113, 35, 0, 112, 101, 2, 116, 105, 116, 105, 118, 3, 34, 113, 48, 121, 0, 108, 101, 2, 110, 116, 3, 34, 113, 55, 121, 0,
-			4, 108, 105, 1, 110, 117, 2, 97, 3, 34, 113, 55, 137, 0, 108, 105, 2, 97, 0, 4, 115, 2, 105, 103, 110, 3, 34, 113, 88, 0,
-			115, 2, 117, 108, 116, 0, 97, 2, 108, 116, 101, 3, 34, 113, 124, 0, 97, 2, 103, 101, 110, 3, 34, 113, 138, 0, 4, 2, 17, 67,
-			101, 108, 32, 3, 34, 121, 0, 2, 99, 107, 0, 2, 99, 116, 0, 2, 100, 17, 67, 0, 2, 102, 117, 103, 0, 2, 103, 105, 115, 116,
-			0, 2, 112, 108, 105, 0, 2, 112, 114, 105, 109, 0, 2, 112, 116, 0, 2, 115, 105, 100, 117, 101, 0, 2, 115, 111, 108, 117, 0, 2,
-			115, 111, 110, 0, 2, 115, 116, 108, 0, 2, 116, 105, 99, 0, 2, 116, 105, 110, 97, 0, 2, 118, 101, 108, 0, 2, 118, 101, 114, 101,
-			110, 0, 2, 118, 111, 108, 117, 0, 8, 2, 17, 67, 17, 67, 32, 0, 8, 2, 17, 67, 32, 0, 8, 2, 99, 114, 101, 97, 116, 105,
-			0, 8, 2, 100, 17, 67, 0, 8, 2, 100, 111, 108, 101, 110, 0, 8, 2, 110, 17, 67, 0, 8, 2, 115, 99, 117, 0, 97, 2, 108,
-			109, 0, 112, 101, 2, 116, 105, 116, 3, 34, 121, 48, 13, 0, 112, 114, 101, 115, 101, 110, 116, 3, 34, 121, 48, 34, 113, 88, 6, 121,
-			50, 47, 0, 112, 101, 114, 8, 2, 116, 3, 34, 121, 48, 114, 0, 99, 111, 2, 103, 3, 34, 121, 49, 13, 0, 4, 99, 107, 111, 110,
-			3, 34, 121, 49, 13, 50, 0, 99, 111, 110, 2, 99, 0, 99, 114, 101, 8, 2, 97, 110, 3, 34, 121, 49, 34, 129, 0, 108, 101, 8,
-			2, 103, 3, 34, 121, 55, 113, 0, 108, 101, 2, 118, 3, 34, 121, 55, 123, 0, 100, 1, 98, 17, 67, 2, 32, 12, 3, 34, 121, 72,
-			0, 103, 105, 109, 3, 34, 121, 75, 122, 65, 0, 103, 117, 2, 108, 3, 34, 121, 81, 57, 134, 0, 102, 101, 114, 101, 110, 100, 3, 34,
-			121, 83, 13, 34, 6, 121, 50, 72, 0, 118, 101, 2, 110, 17, 65, 3, 34, 121, 84, 13, 0, 115, 105, 2, 100, 101, 110, 3, 34, 121,
-			88, 113, 0, 109, 101, 110, 116, 3, 34, 122, 65, 13, 50, 47, 0, 104, 101, 110, 3, 34, 122, 107, 6, 121, 50, 0, 4, 2, 103, 101,
-			110, 3, 34, 129, 0, 2, 103, 105, 111, 110, 0, 2, 116, 97, 105, 108, 0, 8, 2, 97, 110, 0, 8, 2, 99, 101, 110, 116, 0, 97,
-			2, 109, 0, 97, 5, 3, 2, 108, 3, 34, 129, 14, 0, 115, 101, 2, 108, 3, 34, 129, 89, 121, 0, 4, 105, 8, 2, 99, 3, 34,
-			137, 0, 105, 8, 2, 108, 0, 97, 2, 108, 3, 34, 141, 0, 1, 10, 2, 32, 3, 114, 0, 7, 6, 115, 117, 0, 1, 101, 114, 2,
-			109, 17, 65, 3, 88, 57, 134, 0, 109, 97, 98, 1, 101, 114, 3, 88, 57, 134, 65, 13, 71, 0, 5, 3, 1, 101, 114, 2, 109, 17,
-			65, 3, 88, 134, 0, 4, 2, 98, 100, 117, 101, 3, 89, 2, 125, 0, 2, 98, 115, 101, 114, 0, 2, 98, 115, 105, 115, 0, 2, 98,
-			116, 114, 97, 0, 4, 2, 98, 109, 105, 3, 89, 13, 0, 2, 98, 115, 99, 114, 105, 98, 0, 2, 98, 117, 114, 98, 97, 0, 2, 98,
-			118, 0, 2, 99, 99, 17, 65, 0, 2, 102, 102, 105, 99, 0, 2, 112, 112, 108, 0, 2, 112, 112, 111, 114, 0, 2, 112, 112, 114, 101,
-			115, 0, 8, 2, 98, 109, 101, 114, 0, 98, 115, 116, 97, 2, 110, 116, 3, 89, 13, 71, 89, 47, 35, 0, 4, 115, 8, 2, 112, 3,
-			89, 13, 89, 0, 115, 8, 2, 116, 97, 105, 0, 115, 99, 8, 2, 101, 0, 1, 110, 2, 97, 108, 3, 89, 57, 134, 0, 4, 114, 1,
-			110, 117, 2, 112, 3, 89, 114, 0, 114, 2, 109, 0, 114, 2, 112, 97, 0, 114, 2, 112, 114, 0, 114, 2, 114, 0, 114, 2, 118, 0,
-			4, 2, 99, 99, 117, 108, 3, 89, 125, 0, 2, 112, 112, 108, 101, 0, 2, 112, 112, 108, 105, 99, 0, 8, 2, 98, 0, 114, 2, 114,
-			101, 121, 0, 4, 114, 3, 89, 128, 0, 114, 8, 0, 115, 8, 2, 17, 65, 3, 89, 134, 88, 0, 4, 114, 5, 5, 3, 89, 148, 0,
-			114, 5, 5, 8, 0, 4, 114, 1, 97, 101, 3, 90, 114, 0, 114, 1, 111, 0, 114, 101, 1, 10, 2, 32, 0, 4, 2, 97, 108, 3,
-			90, 134, 0, 8, 97, 99, 0, 103, 97, 114, 3, 91, 117, 81, 114, 0, 4, 114, 1, 110, 101, 3, 91, 143, 0, 114, 1, 110, 105, 2,
-			17, 65, 0, 114, 2, 97, 110, 99, 0, 114, 101, 8, 0, 7, 6, 116, 104, 0, 1, 32, 48, 15, 2, 32, 3, 13, 87, 0, 8, 2,
-			111, 109, 21, 3, 47, 0, 4, 2, 97, 110, 100, 3, 47, 107, 0, 2, 101, 97, 100, 0, 2, 101, 97, 114, 116, 0, 2, 105, 108, 108,
-			0, 2, 111, 108, 101, 0, 2, 111, 111, 100, 0, 2, 111, 117, 115, 101, 0, 101, 113, 117, 101, 3, 47, 121, 49, 0, 97, 109, 101, 115,
-			8, 3, 47, 121, 65, 88, 0, 97, 105, 3, 47, 137, 0, 4, 1, 97, 101, 2, 101, 114, 3, 86, 0, 1, 111, 111, 109, 115, 0, 1,
-			114, 2, 105, 101, 114, 0, 1, 114, 2, 121, 0, 1, 114, 111, 2, 105, 0, 2, 101, 110, 32, 0, 2, 101, 114, 17, 67, 0, 2, 101,
-			114, 110, 32, 0, 2, 101, 115, 116, 0, 2, 105, 116, 104, 0, 101, 2, 32, 0, 101, 109, 8, 3, 86, 2, 121, 65, 0, 101, 108, 101,
-			115, 115, 3, 86, 13, 55, 6, 121, 89, 0, 101, 100, 1, 117, 111, 2, 32, 3, 86, 72, 0, 105, 110, 103, 1, 101, 101, 3, 86, 113,
-			68, 0, 4, 101, 114, 2, 32, 3, 86, 114, 0, 101, 114, 2, 101, 114, 0, 101, 114, 101, 2, 32, 0, 101, 114, 101, 8, 3, 86, 140,
-			0, 4, 3, 87, 0, 1, 32, 48, 48, 2, 32, 0, 1, 32, 48, 49, 2, 32, 0, 1, 97, 99, 2, 101, 114, 105, 0, 1, 103, 2,
-			101, 110, 32, 0, 1, 104, 112, 0, 1, 110, 2, 101, 114, 12, 0, 1, 114, 97, 101, 2, 121, 0, 1, 114, 111, 119, 2, 32, 0, 2,
-			101, 114, 109, 0, 8, 2, 17, 71, 0, 8, 2, 114, 17, 71, 0, 8, 2, 119, 17, 71, 0, 8, 101, 2, 101, 114, 0, 105, 111, 8,
-			3, 87, 4, 137, 136, 0, 101, 114, 97, 112, 3, 87, 121, 34, 13, 48, 0, 101, 8, 2, 109, 17, 65, 3, 87, 129, 0, 7, 6, 117,
-			101, 0, 3, 57, 134, 0, 2, 110, 100, 3, 57, 134, 6, 121, 0, 4, 2, 110, 3, 57, 134, 13, 0, 2, 116, 0, 8, 17, 67, 2,
-			108, 0, 101, 3, 57, 134, 129, 0, 110, 101, 2, 32, 3, 57, 134, 129, 50, 0, 114, 2, 116, 3, 58, 140, 0, 4, 1, 108, 3, 134,
-			0, 1, 114, 0, 8, 115, 0, 1, 108, 2, 110, 116, 105, 3, 134, 6, 121, 0, 4, 1, 108, 2, 110, 3, 134, 13, 0, 8, 17, 67,
-			17, 67, 2, 108, 0, 7, 6, 117, 105, 0, 1, 21, 2, 116, 121, 3, 6, 57, 134, 122, 0, 1, 99, 114, 2, 116, 111, 117, 115, 3,
-			7, 57, 134, 122, 0, 1, 110, 2, 115, 3, 57, 134, 0, 1, 115, 101, 106, 2, 116, 3, 57, 134, 113, 0, 114, 2, 32, 3, 57, 143,
-			0, 115, 1, 99, 3, 58, 122, 88, 0, 115, 105, 110, 101, 1, 99, 3, 58, 122, 88, 129, 50, 0, 1, 103, 2, 116, 97, 3, 113, 0,
-			4, 1, 98, 2, 108, 3, 122, 0, 1, 99, 114, 2, 116, 0, 1, 103, 2, 108, 17, 67, 0, 8, 103, 2, 110, 0, 4, 1, 106, 2,
-			99, 3, 134, 0, 1, 108, 115, 0, 1, 114, 2, 116, 0, 1, 115, 2, 116, 0, 115, 1, 114, 2, 101, 3, 134, 88, 0, 1, 114, 103,
-			2, 116, 3, 134, 113, 0, 4, 1, 108, 102, 2, 100, 3, 134, 122, 0, 1, 114, 100, 2, 100, 0, 4, 1, 103, 2, 100, 17, 65, 13,
-			3, 137, 0, 1, 103, 2, 115, 101, 0, 1, 103, 101, 98, 2, 108, 0, 8, 103, 2, 108, 101, 0, 100, 101, 1, 103, 2, 108, 3, 137,
-			72, 0, 7, 6, 117, 110, 0, 4, 2, 97, 110, 105, 3, 2, 57, 134, 50, 0, 8, 2, 105, 113, 0, 4, 2, 114, 101, 103, 105, 3,
-			2, 125, 50, 0, 8, 2, 17, 65, 14, 128, 132, 130, 0, 8, 2, 21, 14, 128, 132, 130, 0, 110, 8, 3, 2, 125, 50, 50, 0, 8,
-			2, 105, 108, 3, 4, 57, 134, 50, 0, 4, 8, 2, 100, 101, 14, 128, 132, 130, 3, 4, 125, 50, 0, 8, 2, 101, 110, 14, 128, 132,
-			130, 0, 8, 2, 101, 120, 14, 128, 132, 130, 0, 8, 2, 105, 100, 101, 0, 8, 2, 105, 109, 14, 128, 132, 130, 0, 8, 2, 105, 110,
-			14, 128, 132, 130, 0, 8, 2, 114, 101, 17, 67, 21, 14, 128, 132, 130, 0, 100, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 4, 125,
-			50, 72, 114, 0, 97, 8, 2, 98, 3, 4, 125, 50, 119, 0, 1, 21, 2, 97, 108, 3, 6, 57, 134, 50, 0, 4, 1, 17, 67, 2,
-			101, 114, 3, 57, 134, 50, 0, 1, 116, 2, 101, 0, 2, 105, 0, 8, 2, 105, 111, 0, 8, 2, 105, 120, 0, 101, 2, 32, 0, 105,
-			116, 2, 101, 3, 57, 134, 50, 6, 137, 47, 0, 105, 8, 3, 57, 134, 50, 122, 0, 4, 1, 112, 2, 105, 115, 104, 3, 125, 50, 0,
-			2, 17, 65, 0, 8, 2, 100, 117, 108, 97, 0, 8, 2, 103, 117, 0, 4, 1, 106, 2, 17, 65, 3, 134, 50, 0, 1, 114, 2, 105,
-			0, 5, 3, 1, 116, 2, 101, 0, 101, 1, 108, 2, 32, 0, 101, 1, 114, 2, 32, 0, 101, 5, 3, 1, 100, 2, 32, 0, 101, 5,
-			3, 1, 116, 2, 32, 0, 7, 6, 117, 112, 0, 4, 8, 2, 98, 3, 2, 125, 48, 0, 8, 2, 99, 0, 8, 2, 100, 0, 8, 2,
-			101, 0, 8, 2, 103, 0, 8, 2, 104, 0, 8, 2, 115, 101, 0, 8, 2, 115, 116, 0, 1, 115, 2, 114, 101, 3, 2, 134, 48, 0,
-			1, 99, 99, 111, 3, 57, 117, 48, 0, 121, 1, 99, 99, 111, 3, 57, 117, 48, 137, 0, 111, 110, 3, 125, 48, 124, 50, 0, 4, 1,
-			17, 67, 2, 108, 101, 3, 134, 48, 0, 1, 17, 67, 2, 108, 105, 0, 2, 108, 32, 0, 101, 114, 105, 1, 115, 2, 111, 3, 134, 48,
-			6, 141, 34, 122, 0, 101, 114, 1, 115, 3, 134, 48, 114, 0, 7, 6, 117, 114, 0, 1, 106, 2, 121, 3, 13, 34, 0, 101, 100, 1,
-			103, 2, 32, 3, 13, 72, 0, 1, 116, 2, 17, 65, 3, 57, 13, 34, 0, 101, 1, 115, 10, 2, 32, 3, 57, 13, 114, 0, 4, 101,
-			1, 110, 101, 2, 32, 3, 57, 114, 0, 101, 5, 3, 1, 103, 2, 32, 0, 4, 1, 17, 67, 2, 17, 65, 3, 57, 117, 34, 0, 1,
-			21, 2, 97, 116, 105, 111, 110, 0, 1, 21, 2, 121, 0, 97, 1, 21, 2, 116, 3, 57, 117, 34, 138, 0, 4, 2, 101, 100, 32, 3,
-			57, 143, 0, 8, 2, 17, 65, 0, 8, 102, 2, 17, 65, 0, 8, 102, 2, 121, 0, 101, 1, 116, 97, 99, 105, 2, 32, 0, 101, 2,
-			32, 0, 1, 98, 2, 101, 3, 57, 143, 34, 0, 4, 1, 103, 10, 2, 32, 3, 114, 0, 1, 104, 10, 2, 32, 0, 1, 109, 10, 2,
-			32, 0, 1, 116, 97, 115, 2, 100, 0, 101, 1, 103, 2, 32, 0, 101, 1, 106, 110, 2, 32, 0, 101, 1, 122, 105, 0, 4, 1, 98,
-			2, 105, 3, 121, 34, 0, 1, 98, 2, 121, 0, 114, 5, 35, 1, 98, 2, 111, 3, 125, 34, 0, 4, 1, 112, 115, 2, 32, 3, 128,
-			0, 2, 17, 66, 0, 2, 32, 0, 114, 1, 102, 2, 121, 0, 114, 2, 32, 0, 114, 5, 3, 0, 103, 1, 98, 2, 101, 114, 3, 128,
-			81, 0, 4, 101, 1, 108, 105, 2, 32, 3, 142, 0, 101, 1, 114, 2, 32, 0, 4, 1, 106, 2, 105, 3, 143, 0, 1, 108, 2, 17,
-			65, 12, 0, 1, 112, 10, 2, 32, 0, 8, 106, 2, 121, 0, 1, 114, 2, 17, 65, 12, 3, 143, 34, 0, 4, 5, 5, 1, 112, 115,
-			2, 32, 3, 148, 0, 5, 5, 2, 17, 66, 0, 5, 5, 2, 32, 0, 114, 5, 5, 1, 102, 2, 121, 0, 114, 5, 5, 2, 32, 0,
-			103, 5, 5, 1, 98, 2, 101, 114, 3, 148, 81, 0, 7, 6, 39, 0, 114, 101, 2, 32, 14, 128, 128, 131, 3, 13, 0, 118, 101, 2,
-			32, 14, 128, 128, 131, 3, 13, 84, 0, 100, 2, 32, 14, 128, 128, 130, 3, 72, 0, 4, 115, 1, 32, 54, 49, 2, 32, 3, 88, 0,
-			115, 2, 32, 14, 128, 128, 130, 0, 4, 115, 1, 102, 2, 32, 14, 128, 128, 130, 3, 89, 0, 115, 1, 104, 99, 111, 2, 32, 14, 128,
-			128, 130, 0, 115, 1, 107, 2, 32, 14, 128, 128, 130, 0, 115, 1, 112, 2, 32, 14, 128, 128, 130, 0, 115, 1, 116, 2, 32, 14, 128,
-			128, 130, 0, 4, 115, 1, 32, 54, 2, 32, 3, 113, 88, 0, 115, 1, 101, 99, 2, 32, 14, 128, 128, 130, 0, 115, 1, 101, 115, 2,
-			32, 14, 128, 128, 130, 0, 115, 1, 104, 99, 2, 32, 14, 128, 128, 130, 0, 115, 1, 104, 115, 2, 32, 14, 128, 128, 130, 0, 115, 1,
-			115, 2, 32, 14, 128, 128, 130, 0, 115, 1, 120, 2, 32, 14, 128, 128, 130, 0, 115, 1, 122, 2, 32, 14, 128, 128, 130, 0, 108, 108,
-			2, 32, 14, 128, 128, 131, 3, 118, 0, 7, 6, 69, 0, 3, 0, 4, 1, 21, 2, 109, 98, 101, 114, 3, 6, 121, 0, 2, 110, 116,
-			105, 0, 2, 110, 116, 111, 117, 115, 0, 2, 110, 116, 117, 0, 116, 116, 101, 2, 32, 3, 6, 121, 47, 0, 116, 116, 97, 2, 32, 3,
-			6, 121, 47, 13, 0, 99, 116, 111, 109, 121, 2, 32, 14, 128, 128, 134, 3, 6, 121, 49, 47, 13, 65, 122, 0, 110, 2, 100, 17, 65,
-			32, 3, 6, 121, 50, 0, 110, 115, 107, 2, 32, 3, 6, 121, 50, 89, 49, 0, 108, 108, 97, 2, 32, 3, 6, 121, 55, 13, 0, 115,
-			113, 117, 101, 3, 6, 121, 89, 49, 0, 4, 2, 17, 67, 105, 97, 3, 6, 129, 0, 2, 115, 105, 97, 0, 109, 2, 105, 99, 32, 3,
-			6, 129, 65, 0, 97, 2, 110, 32, 3, 6, 141, 0, 114, 105, 2, 17, 65, 3, 6, 141, 34, 113, 0, 101, 114, 2, 32, 3, 6, 142,
-			0, 111, 117, 115, 2, 32, 3, 8, 57, 13, 89, 0, 97, 2, 32, 3, 8, 141, 0, 110, 101, 114, 2, 32, 3, 10, 50, 13, 0, 110,
-			105, 110, 103, 2, 32, 3, 10, 50, 113, 68, 0, 4, 2, 17, 66, 17, 67, 32, 3, 13, 0, 2, 17, 66, 17, 67, 101, 32, 0, 2,
-			17, 66, 32, 0, 2, 110, 116, 32, 0, 114, 2, 105, 101, 32, 3, 13, 34, 0, 114, 121, 2, 32, 3, 13, 34, 2, 122, 0, 4, 110,
-			2, 32, 3, 13, 50, 0, 110, 2, 97, 116, 17, 65, 0, 110, 101, 100, 2, 32, 3, 13, 50, 72, 0, 109, 2, 32, 3, 13, 65, 0,
-			115, 1, 114, 17, 67, 2, 32, 14, 128, 129, 130, 3, 13, 88, 0, 116, 114, 121, 2, 32, 14, 128, 128, 130, 3, 34, 122, 0, 4, 100,
-			1, 99, 10, 2, 32, 14, 128, 139, 130, 3, 47, 0, 100, 1, 104, 99, 10, 2, 32, 14, 128, 139, 130, 0, 100, 1, 107, 10, 2, 32,
-			14, 128, 139, 130, 0, 100, 1, 112, 10, 2, 32, 14, 128, 139, 130, 0, 100, 1, 120, 10, 2, 32, 14, 128, 136, 130, 0, 4, 100, 1,
-			21, 21, 2, 32, 14, 128, 139, 130, 3, 72, 0, 100, 1, 109, 111, 21, 21, 10, 2, 32, 14, 128, 136, 130, 0, 100, 1, 114, 117, 2,
-			32, 14, 128, 138, 129, 0, 100, 1, 121, 2, 32, 0, 115, 1, 10, 2, 32, 14, 128, 129, 130, 3, 88, 0, 100, 1, 17, 67, 10, 2,
-			32, 14, 128, 139, 130, 3, 109, 0, 4, 115, 1, 102, 2, 32, 14, 128, 129, 130, 3, 110, 0, 115, 1, 107, 2, 32, 14, 128, 129, 130,
-			0, 115, 1, 112, 2, 32, 14, 128, 129, 130, 0, 115, 1, 116, 2, 32, 14, 128, 129, 130, 0, 2, 111, 32, 3, 113, 0, 117, 115, 2,
-			32, 3, 113, 13, 89, 0, 4, 114, 1, 100, 97, 2, 32, 14, 128, 128, 129, 3, 114, 0, 114, 2, 17, 67, 0, 114, 2, 32, 0, 114,
-			115, 1, 100, 97, 2, 32, 14, 128, 128, 130, 3, 114, 88, 0, 4, 108, 2, 32, 3, 118, 0, 108, 101, 2, 32, 0, 108, 108, 2, 12,
-			0, 4, 1, 108, 2, 112, 115, 3, 121, 0, 1, 108, 2, 112, 116, 0, 2, 110, 100, 111, 117, 115, 0, 2, 110, 105, 110, 103, 0, 2,
-			115, 115, 0, 2, 116, 105, 99, 32, 0, 2, 116, 114, 105, 99, 0, 2, 120, 32, 0, 114, 2, 105, 99, 32, 3, 121, 34, 0, 110, 5,
-			8, 2, 32, 3, 121, 50, 0, 110, 105, 110, 103, 5, 8, 2, 32, 3, 121, 50, 113, 68, 0, 108, 5, 8, 2, 32, 3, 121, 55, 0,
-			115, 115, 2, 32, 3, 121, 89, 0, 1, 107, 97, 110, 2, 100, 3, 122, 0, 100, 108, 121, 2, 32, 14, 128, 129, 132, 3, 122, 72, 55,
-			2, 122, 0, 4, 100, 1, 100, 10, 2, 32, 14, 128, 139, 130, 3, 123, 72, 0, 100, 1, 116, 10, 2, 32, 14, 128, 139, 130, 0, 4,
-			39, 115, 1, 99, 2, 32, 14, 128, 129, 131, 3, 123, 88, 0, 39, 115, 1, 115, 2, 32, 14, 128, 129, 130, 0, 115, 1, 99, 2, 32,
-			14, 128, 129, 130, 0, 115, 1, 103, 2, 32, 14, 128, 129, 130, 0, 115, 1, 104, 99, 2, 32, 14, 128, 129, 130, 0, 115, 1, 104, 112,
-			2, 32, 14, 128, 129, 130, 0, 115, 1, 104, 115, 2, 32, 14, 128, 129, 130, 0, 115, 1, 115, 2, 32, 14, 128, 129, 130, 0, 115, 1,
-			120, 2, 32, 14, 128, 128, 130, 0, 4, 2, 100, 105, 97, 32, 3, 129, 0, 2, 100, 105, 99, 32, 0, 2, 116, 101, 32, 0, 69, 2,
-			32, 0, 101, 2, 32, 0, 101, 2, 100, 0, 105, 2, 110, 32, 0, 110, 101, 2, 32, 3, 129, 50, 0, 109, 101, 2, 32, 3, 129, 65,
-			0, 115, 101, 2, 32, 3, 129, 88, 0, 119, 2, 32, 3, 134, 0, 105, 2, 32, 3, 137, 0, 121, 1, 98, 111, 2, 32, 3, 138, 0,
-			7, 6, 97, 0, 8, 2, 113, 117, 3, 2, 35, 0, 101, 114, 8, 99, 3, 2, 140, 0, 8, 2, 32, 15, 3, 4, 138, 0, 4, 1,
-			21, 2, 107, 105, 32, 3, 6, 35, 0, 1, 104, 2, 122, 97, 114, 0, 2, 122, 122, 32, 0, 4, 1, 21, 2, 122, 105, 32, 3, 6,
-			126, 0, 2, 17, 66, 111, 32, 0, 2, 17, 66, 117, 32, 0, 2, 17, 67, 97, 32, 0, 107, 117, 2, 32, 3, 6, 126, 49, 134, 0,
-			119, 105, 1, 21, 2, 32, 3, 6, 126, 58, 122, 0, 122, 101, 1, 107, 21, 2, 32, 3, 6, 126, 88, 122, 0, 4, 97, 114, 3, 6,
-			127, 0, 101, 114, 1, 114, 0, 101, 2, 118, 97, 108, 3, 6, 129, 0, 4, 1, 21, 2, 17, 66, 105, 97, 3, 6, 138, 0, 1, 21,
-			2, 17, 66, 105, 117, 0, 1, 21, 2, 116, 105, 111, 117, 115, 0, 2, 17, 67, 97, 98, 108, 101, 0, 2, 17, 67, 97, 98, 108, 121,
-			0, 2, 17, 67, 105, 98, 108, 101, 0, 2, 116, 105, 111, 110, 0, 2, 122, 105, 100, 101, 0, 8, 2, 45, 0, 101, 97, 3, 6, 141,
-			0, 1, 98, 10, 2, 32, 3, 8, 13, 0, 111, 2, 32, 3, 8, 135, 0, 4, 1, 10, 2, 32, 3, 13, 0, 1, 103, 2, 122, 101,
-			17, 67, 11, 0, 1, 109, 2, 104, 111, 103, 0, 1, 119, 111, 2, 100, 0, 2, 119, 97, 121, 32, 0, 104, 1, 10, 2, 32, 0, 113,
-			117, 97, 2, 116, 3, 13, 49, 58, 35, 0, 4, 3, 35, 0, 1, 17, 67, 2, 120, 12, 0, 1, 109, 2, 106, 101, 115, 0, 1, 110,
-			2, 116, 105, 111, 110, 97, 108, 0, 1, 110, 2, 116, 117, 114, 97, 0, 1, 114, 98, 2, 122, 105, 108, 0, 1, 114, 114, 105, 2, 116,
-			105, 111, 0, 1, 119, 115, 2, 103, 0, 1, 119, 115, 2, 109, 32, 0, 1, 119, 115, 2, 110, 107, 0, 2, 17, 66, 101, 17, 67, 111,
-			32, 0, 2, 17, 66, 101, 114, 17, 65, 0, 2, 17, 66, 101, 114, 17, 67, 0, 2, 17, 66, 101, 116, 0, 2, 17, 67, 101, 101, 12,
-			0, 2, 119, 17, 65, 0, 8, 2, 118, 101, 0, 8, 2, 120, 12, 0, 8, 114, 2, 116, 105, 111, 110, 0, 4, 97, 1, 97, 97, 3,
-			35, 12, 0, 97, 2, 97, 0, 107, 1, 21, 2, 105, 97, 3, 35, 49, 0, 113, 117, 2, 97, 3, 35, 49, 58, 0, 113, 117, 105, 3,
-			35, 49, 58, 122, 0, 101, 100, 1, 21, 2, 32, 14, 128, 128, 130, 3, 72, 0, 4, 1, 45, 2, 45, 3, 119, 0, 8, 2, 32, 0,
-			8, 2, 45, 104, 97, 108, 102, 0, 8, 2, 107, 21, 0, 8, 2, 119, 104, 21, 0, 113, 117, 2, 97, 114, 105, 17, 65, 3, 119, 49,
-			58, 0, 4, 119, 8, 2, 97, 12, 3, 119, 58, 0, 119, 8, 2, 111, 107, 0, 1, 108, 2, 116, 104, 3, 120, 0, 2, 17, 66, 105,
-			110, 103, 3, 121, 0, 101, 109, 111, 114, 114, 104, 1, 104, 3, 121, 65, 114, 34, 0, 1, 110, 103, 105, 115, 2, 116, 117, 114, 101, 3,
-			122, 0, 4, 1, 117, 113, 115, 2, 115, 104, 3, 124, 0, 1, 119, 2, 98, 0, 1, 119, 2, 100, 0, 1, 119, 2, 115, 0, 1, 119,
-			2, 116, 99, 0, 1, 119, 115, 2, 17, 66, 0, 4, 1, 17, 67, 29, 2, 32, 3, 126, 0, 1, 17, 67, 100, 110, 97, 114, 103, 2,
-			32, 0, 1, 119, 115, 2, 122, 0, 97, 0, 104, 2, 17, 67, 0, 104, 2, 32, 0, 4, 101, 3, 129, 0, 101, 1, 104, 2, 109, 0,
-			101, 8, 2, 111, 110, 0, 111, 105, 115, 2, 32, 3, 129, 91, 0, 111, 105, 115, 101, 2, 32, 3, 129, 91, 13, 0, 4, 1, 119, 2,
-			116, 101, 114, 3, 130, 0, 119, 0, 119, 8, 2, 102, 0, 119, 8, 2, 107, 0, 119, 101, 2, 17, 66, 0, 119, 101, 2, 32, 0, 119,
-			101, 8, 0, 119, 97, 108, 3, 130, 55, 0, 4, 111, 1, 109, 3, 135, 0, 111, 1, 109, 2, 114, 105, 0, 111, 1, 116, 0, 4, 101,
-			1, 109, 2, 115, 116, 3, 137, 0, 121, 8, 0, 4, 1, 17, 67, 29, 2, 17, 66, 121, 32, 3, 138, 0, 1, 32, 15, 2, 32, 0,
-			1, 104, 2, 122, 17, 65, 0, 1, 108, 2, 122, 17, 71, 0, 1, 108, 98, 2, 122, 111, 110, 0, 1, 108, 103, 2, 99, 105, 0, 1,
-			109, 2, 106, 111, 114, 32, 0, 1, 109, 2, 106, 111, 114, 101, 0, 1, 110, 2, 17, 67, 97, 108, 0, 1, 110, 2, 116, 117, 114, 0,
-			1, 112, 2, 116, 105, 101, 110, 0, 1, 114, 2, 99, 105, 17, 65, 0, 1, 114, 2, 122, 105, 0, 1, 114, 101, 2, 115, 117, 114, 0,
-			1, 119, 2, 17, 66, 101, 13, 0, 1, 119, 115, 2, 116, 104, 0, 2, 17, 66, 101, 13, 0, 2, 17, 67, 97, 98, 105, 108, 105, 116,
-			121, 0, 2, 115, 105, 111, 110, 0, 2, 116, 104, 101, 32, 12, 0, 2, 122, 121, 0, 8, 2, 32, 45, 0, 8, 2, 118, 105, 97, 116,
-			0, 8, 2, 118, 111, 110, 0, 101, 2, 108, 0, 121, 0, 121, 1, 119, 0, 111, 114, 3, 138, 6, 133, 0, 111, 1, 103, 2, 108, 3,
-			138, 13, 0, 113, 117, 101, 2, 111, 3, 138, 49, 58, 122, 0, 39, 115, 8, 2, 32, 3, 138, 88, 0, 122, 111, 114, 1, 114, 3, 138,
-			88, 114, 0, 121, 108, 101, 8, 3, 138, 118, 0, 111, 3, 138, 124, 0, 4, 101, 114, 3, 140, 0, 101, 114, 8, 2, 111, 0, 121, 114,
-			8, 0, 4, 101, 114, 111, 2, 112, 108, 97, 110, 3, 140, 34, 13, 0, 101, 114, 111, 2, 115, 111, 108, 0, 101, 114, 111, 8, 3, 140,
-			34, 136, 0, 119, 114, 2, 32, 3, 146, 0, 7, 6, 98, 0, 4, 1, 109, 2, 32, 3, 0, 2, 98, 3, 0, 4, 116, 1, 101, 100,
-			3, 47, 0, 116, 1, 117, 115, 2, 108, 0, 4, 3, 71, 0, 8, 2, 18, 66, 17, 71, 0, 104, 8, 0, 97, 8, 2, 109, 98, 21,
-			3, 71, 2, 35, 0, 4, 97, 108, 108, 105, 8, 2, 21, 3, 71, 4, 35, 55, 113, 0, 97, 108, 108, 121, 8, 2, 21, 0, 97, 116,
-			116, 108, 101, 8, 2, 21, 14, 128, 132, 134, 3, 71, 6, 35, 47, 118, 0, 111, 111, 107, 8, 2, 21, 21, 14, 128, 132, 132, 3, 71,
-			6, 117, 49, 0, 117, 114, 121, 1, 21, 2, 32, 14, 128, 130, 132, 3, 71, 34, 2, 122, 0, 114, 122, 8, 2, 101, 3, 71, 34, 88,
-			0, 117, 103, 8, 2, 108, 101, 3, 71, 57, 134, 81, 0, 111, 8, 2, 115, 111, 109, 3, 71, 117, 0, 97, 108, 108, 105, 2, 115, 116,
-			3, 71, 119, 55, 6, 122, 0, 117, 114, 121, 5, 3, 1, 21, 2, 32, 14, 128, 130, 132, 3, 71, 121, 34, 2, 122, 0, 121, 116, 101,
-			8, 3, 71, 137, 47, 0, 97, 121, 111, 117, 8, 3, 71, 137, 134, 0, 7, 6, 99, 0, 4, 1, 115, 2, 101, 3, 0, 2, 113, 3,
-			0, 122, 8, 2, 97, 114, 3, 47, 89, 0, 4, 3, 49, 0, 1, 97, 109, 2, 105, 110, 0, 2, 101, 108, 116, 0, 8, 2, 18, 66,
-			17, 71, 0, 99, 0, 99, 1, 111, 99, 2, 105, 32, 0, 99, 1, 111, 115, 2, 101, 114, 0, 99, 104, 0, 107, 0, 104, 97, 114, 97,
-			2, 99, 116, 3, 49, 35, 34, 113, 0, 117, 97, 1, 101, 3, 49, 58, 35, 0, 4, 99, 2, 101, 3, 49, 89, 0, 99, 2, 105, 0,
-			119, 109, 8, 3, 49, 117, 65, 0, 97, 99, 111, 2, 112, 104, 3, 49, 119, 49, 6, 124, 0, 105, 97, 8, 2, 114, 97, 3, 49, 141,
-			0, 4, 99, 2, 105, 110, 111, 3, 76, 0, 122, 8, 2, 101, 0, 2, 101, 108, 108, 18, 68, 32, 3, 76, 6, 0, 122, 101, 99, 104,
-			3, 76, 121, 49, 0, 4, 2, 69, 3, 89, 0, 2, 97, 101, 115, 0, 2, 101, 0, 2, 105, 0, 2, 121, 0, 2, 195, 169, 0, 101,
-			8, 2, 108, 101, 115, 116, 3, 89, 13, 0, 101, 109, 101, 110, 116, 8, 3, 89, 113, 65, 121, 50, 47, 0, 105, 115, 109, 2, 32, 3,
-			89, 122, 88, 13, 65, 0, 105, 112, 104, 2, 101, 114, 3, 89, 137, 83, 0, 105, 97, 2, 114, 121, 3, 91, 8, 13, 0, 4, 101, 111,
-			117, 115, 3, 91, 8, 13, 89, 0, 105, 111, 117, 115, 0, 4, 105, 97, 110, 2, 32, 3, 91, 13, 50, 0, 105, 101, 110, 0, 105, 111,
-			110, 0, 105, 97, 108, 3, 91, 13, 55, 0, 105, 97, 108, 2, 32, 3, 91, 118, 0, 105, 97, 108, 5, 8, 2, 32, 3, 91, 119, 55,
-			0, 105, 101, 110, 5, 8, 3, 91, 121, 50, 0, 105, 97, 2, 108, 105, 116, 121, 3, 91, 122, 35, 0, 105, 97, 2, 98, 3, 91, 141,
-			0, 105, 97, 110, 3, 91, 141, 50, 0, 7, 6, 100, 0, 2, 100, 3, 0, 117, 109, 1, 21, 2, 32, 3, 8, 72, 13, 65, 0, 116,
-			2, 32, 3, 47, 0, 110, 101, 1, 101, 119, 2, 115, 100, 3, 50, 0, 4, 3, 72, 0, 1, 101, 21, 21, 2, 32, 14, 128, 128, 129,
-			0, 8, 2, 18, 66, 17, 71, 0, 8, 2, 104, 21, 21, 0, 8, 2, 110, 105, 101, 0, 8, 2, 119, 17, 71, 0, 39, 8, 2, 17,
-			65, 14, 128, 132, 130, 0, 100, 104, 0, 104, 2, 25, 0, 98, 2, 32, 3, 72, 4, 129, 71, 129, 0, 109, 105, 8, 2, 116, 114, 3,
-			72, 13, 65, 129, 0, 117, 5, 35, 2, 112, 108, 3, 72, 57, 134, 0, 4, 117, 114, 2, 17, 65, 3, 72, 57, 143, 0, 117, 114, 2,
-			32, 0, 117, 8, 2, 112, 3, 72, 134, 0, 121, 101, 8, 3, 72, 137, 0, 105, 114, 8, 2, 32, 3, 72, 145, 0, 4, 103, 2, 17,
-			66, 3, 75, 0, 103, 2, 32, 0, 103, 2, 101, 0, 103, 2, 105, 0, 103, 2, 121, 0, 106, 0, 106, 8, 2, 17, 71, 0, 103, 101,
-			100, 2, 32, 3, 75, 72, 0, 117, 114, 101, 1, 101, 99, 3, 75, 114, 0, 4, 117, 2, 97, 108, 32, 3, 75, 134, 0, 117, 2, 99,
-			97, 116, 0, 117, 5, 3, 1, 10, 2, 17, 67, 17, 65, 0, 7, 6, 101, 0, 4, 1, 10, 2, 32, 3, 0, 4, 1, 21, 21, 2,
-			109, 101, 110, 116, 32, 3, 0, 4, 2, 102, 117, 108, 3, 0, 2, 119, 111, 114, 107, 3, 0, 4, 1, 17, 66, 99, 97, 2, 32, 3,
-			2, 122, 0, 2, 102, 102, 101, 99, 0, 2, 102, 102, 105, 99, 0, 2, 113, 117, 105, 112, 0, 8, 2, 99, 108, 0, 8, 2, 102, 102,
-			117, 0, 8, 2, 106, 17, 65, 0, 8, 2, 112, 104, 101, 109, 0, 8, 2, 113, 117, 97, 116, 0, 113, 117, 105, 118, 3, 2, 122, 49,
-			58, 122, 84, 0, 2, 17, 67, 105, 99, 97, 108, 3, 6, 121, 0, 117, 114, 2, 32, 3, 6, 128, 0, 117, 115, 101, 1, 21, 2, 32,
-			3, 6, 128, 88, 0, 4, 1, 21, 2, 17, 67, 105, 97, 32, 3, 6, 129, 0, 1, 21, 2, 103, 105, 99, 0, 1, 104, 2, 115, 105,
-			111, 110, 0, 2, 17, 66, 111, 32, 0, 2, 17, 66, 111, 101, 32, 0, 101, 1, 116, 2, 110, 32, 0, 101, 2, 109, 0, 117, 115, 101,
-			5, 3, 1, 21, 2, 32, 3, 6, 134, 88, 0, 117, 1, 115, 2, 109, 32, 3, 6, 141, 0, 101, 114, 3, 6, 142, 0, 117, 114, 5,
-			3, 2, 32, 3, 6, 143, 0, 117, 114, 5, 5, 2, 32, 3, 6, 148, 0, 117, 115, 1, 10, 2, 32, 3, 8, 113, 13, 89, 0, 122,
-			1, 21, 2, 32, 3, 8, 121, 88, 0, 4, 1, 10, 2, 110, 3, 13, 0, 1, 108, 2, 103, 105, 116, 0, 1, 108, 101, 99, 2, 98,
-			114, 97, 0, 98, 108, 101, 1, 21, 21, 2, 32, 3, 13, 71, 118, 0, 103, 1, 10, 2, 121, 3, 13, 75, 0, 39, 115, 1, 114, 17,
-			67, 10, 2, 32, 3, 13, 88, 0, 99, 121, 1, 10, 2, 32, 3, 13, 89, 2, 37, 0, 4, 117, 3, 57, 134, 0, 119, 0, 119, 2,
-			32, 0, 117, 114, 111, 8, 3, 57, 143, 34, 136, 0, 117, 114, 111, 8, 2, 112, 101, 3, 57, 143, 44, 13, 0, 119, 97, 121, 2, 32,
-			14, 128, 128, 131, 3, 58, 138, 0, 4, 39, 115, 1, 17, 67, 10, 2, 32, 14, 128, 130, 130, 3, 88, 0, 39, 115, 1, 104, 116, 10,
-			2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 114, 10, 2, 32, 14, 128, 130, 130, 0, 4, 39, 115, 1, 102, 10, 2, 32, 14, 128, 130,
-			130, 3, 89, 0, 39, 115, 1, 107, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 112, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115,
-			1, 116, 10, 2, 32, 14, 128, 130, 130, 0, 4, 1, 110, 2, 103, 111, 116, 3, 113, 0, 2, 111, 0, 4, 112, 2, 111, 120, 3, 113,
-			48, 0, 112, 8, 2, 105, 115, 17, 67, 0, 102, 121, 1, 21, 21, 2, 32, 3, 113, 83, 137, 0, 102, 105, 101, 114, 2, 32, 3, 113,
-			83, 145, 0, 4, 3, 121, 0, 1, 104, 17, 65, 2, 110, 0, 1, 112, 115, 2, 99, 105, 97, 0, 1, 114, 10, 2, 110, 0, 1, 114,
-			99, 2, 112, 101, 12, 0, 1, 114, 99, 115, 105, 100, 2, 116, 105, 111, 110, 0, 2, 17, 67, 105, 99, 32, 0, 112, 105, 8, 3, 121,
-			48, 122, 0, 112, 105, 100, 101, 114, 8, 3, 121, 48, 122, 72, 6, 128, 0, 99, 104, 1, 116, 2, 32, 3, 121, 49, 0, 103, 105, 1,
-			108, 2, 98, 3, 121, 75, 13, 0, 4, 1, 108, 108, 2, 110, 103, 101, 3, 122, 0, 1, 109, 2, 99, 104, 97, 110, 105, 99, 0, 1,
-			116, 110, 105, 2, 103, 101, 0, 1, 116, 110, 105, 2, 103, 114, 97, 0, 1, 116, 114, 101, 118, 2, 98, 0, 8, 108, 101, 2, 109, 101,
-			110, 0, 101, 1, 102, 102, 111, 99, 0, 99, 111, 110, 111, 2, 109, 3, 122, 49, 6, 124, 50, 13, 0, 4, 39, 115, 1, 99, 10, 2,
-			32, 14, 128, 130, 130, 3, 122, 88, 0, 39, 115, 1, 103, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 104, 99, 10, 2, 32, 14,
-			128, 130, 130, 0, 39, 115, 1, 104, 112, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 104, 115, 10, 2, 32, 14, 128, 130, 130, 0,
-			39, 115, 1, 115, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 120, 10, 2, 32, 14, 128, 130, 130, 0, 117, 114, 1, 108, 3, 128,
-			0, 4, 1, 17, 67, 29, 2, 17, 66, 101, 32, 3, 129, 0, 1, 17, 67, 29, 2, 32, 24, 0, 1, 21, 2, 116, 105, 111, 0, 1,
-			29, 2, 103, 97, 110, 32, 0, 1, 100, 2, 102, 97, 117, 108, 116, 0, 1, 108, 2, 103, 97, 108, 0, 1, 110, 2, 103, 114, 111, 0,
-			1, 112, 115, 2, 99, 105, 101, 115, 0, 1, 114, 2, 103, 97, 108, 0, 1, 114, 102, 2, 113, 0, 2, 17, 67, 105, 117, 17, 66, 0,
-			2, 98, 114, 105, 97, 0, 2, 109, 101, 32, 0, 2, 109, 101, 111, 117, 0, 2, 113, 117, 97, 108, 0, 8, 2, 113, 117, 97, 0, 8,
-			17, 67, 2, 109, 117, 114, 0, 8, 115, 2, 113, 117, 101, 0, 101, 0, 117, 2, 109, 32, 0, 99, 111, 110, 111, 2, 109, 105, 99, 3,
-			129, 49, 13, 50, 6, 124, 0, 99, 111, 8, 2, 115, 3, 129, 49, 136, 0, 103, 105, 111, 110, 1, 108, 3, 129, 75, 13, 50, 0, 103,
-			121, 2, 112, 116, 3, 129, 75, 122, 0, 4, 101, 115, 101, 1, 104, 99, 3, 129, 88, 0, 101, 122, 101, 2, 21, 0, 4, 119, 1, 106,
-			2, 12, 3, 134, 0, 119, 1, 108, 2, 12, 0, 119, 1, 114, 2, 12, 0, 119, 5, 3, 1, 100, 0, 119, 5, 3, 1, 110, 0, 119,
-			5, 3, 1, 116, 0, 119, 8, 115, 0, 119, 101, 1, 106, 2, 108, 3, 134, 13, 0, 119, 8, 115, 2, 32, 3, 136, 0, 4, 104, 2,
-			25, 3, 138, 0, 106, 1, 118, 2, 32, 0, 4, 117, 1, 100, 2, 116, 115, 3, 139, 0, 117, 1, 114, 2, 100, 0, 39, 101, 114, 3,
-			140, 0, 117, 114, 5, 5, 3, 148, 0, 7, 6, 102, 0, 2, 102, 3, 0, 4, 3, 83, 0, 8, 2, 18, 66, 17, 71, 0, 116, 2,
-			101, 110, 0, 111, 114, 2, 115, 101, 101, 3, 83, 2, 132, 0, 111, 114, 2, 119, 97, 114, 100, 3, 83, 6, 133, 0, 4, 97, 2, 109,
-			105, 108, 105, 97, 114, 3, 83, 13, 0, 111, 114, 2, 98, 97, 100, 0, 111, 114, 2, 98, 105, 100, 0, 105, 8, 2, 116, 122, 21, 3,
-			83, 113, 0, 101, 100, 1, 114, 101, 2, 32, 3, 83, 121, 72, 0, 106, 8, 2, 111, 114, 100, 3, 83, 122, 6, 0, 97, 2, 99, 105,
-			17, 65, 3, 83, 138, 0, 7, 6, 103, 0, 8, 2, 110, 17, 71, 3, 0, 2, 121, 110, 111, 117, 115, 32, 3, 8, 75, 0, 111, 2,
-			110, 97, 108, 32, 3, 8, 81, 124, 0, 104, 116, 3, 47, 0, 110, 2, 32, 3, 50, 0, 109, 2, 32, 3, 65, 0, 4, 1, 101, 118,
-			2, 101, 116, 3, 75, 0, 1, 111, 2, 101, 116, 0, 1, 114, 101, 2, 101, 116, 0, 2, 69, 0, 2, 101, 0, 2, 101, 116, 116, 101,
-			32, 0, 2, 105, 0, 2, 121, 0, 103, 1, 97, 120, 101, 2, 101, 114, 0, 101, 2, 110, 105, 99, 32, 3, 75, 6, 121, 0, 101, 110,
-			101, 115, 105, 115, 3, 75, 6, 121, 50, 113, 89, 122, 89, 0, 101, 111, 117, 115, 3, 75, 8, 13, 89, 0, 4, 105, 97, 1, 10, 2,
-			17, 67, 32, 3, 75, 13, 0, 105, 97, 1, 10, 2, 32, 0, 105, 117, 1, 10, 2, 109, 0, 4, 105, 110, 103, 1, 108, 3, 75, 113,
-			68, 0, 105, 110, 103, 1, 114, 0, 97, 111, 108, 8, 3, 75, 138, 55, 0, 4, 3, 81, 0, 1, 17, 65, 11, 2, 101, 114, 0, 1,
-			110, 117, 104, 0, 1, 111, 2, 121, 32, 0, 1, 111, 98, 2, 69, 121, 0, 1, 111, 103, 2, 105, 99, 32, 0, 2, 101, 97, 114, 0,
-			2, 101, 101, 107, 0, 2, 101, 116, 0, 2, 105, 102, 116, 0, 2, 105, 103, 103, 0, 2, 105, 108, 17, 67, 0, 2, 105, 108, 116, 0,
-			2, 105, 114, 25, 0, 2, 105, 118, 101, 0, 8, 2, 18, 66, 17, 71, 0, 8, 2, 101, 99, 0, 8, 2, 101, 107, 0, 8, 2, 101,
-			114, 116, 0, 8, 2, 105, 100, 0, 8, 2, 105, 108, 25, 0, 8, 2, 105, 109, 0, 8, 2, 105, 116, 0, 8, 2, 105, 122, 0, 8,
-			2, 119, 17, 71, 0, 8, 2, 121, 110, 0, 103, 0, 104, 1, 17, 67, 2, 17, 65, 0, 104, 2, 17, 67, 0, 104, 2, 32, 0, 104,
-			2, 97, 110, 0, 104, 8, 2, 17, 71, 0, 117, 101, 2, 32, 0, 105, 2, 32, 3, 81, 2, 122, 0, 101, 2, 100, 100, 3, 81, 6,
-			121, 0, 110, 117, 8, 3, 81, 13, 50, 134, 0, 117, 97, 121, 1, 21, 2, 32, 3, 81, 58, 137, 0, 4, 101, 1, 114, 111, 102, 2,
-			116, 3, 81, 121, 0, 117, 101, 8, 0, 105, 103, 97, 8, 3, 81, 122, 81, 13, 0, 117, 101, 114, 8, 2, 110, 3, 81, 128, 0, 105,
-			1, 97, 2, 32, 3, 81, 137, 0, 7, 6, 104, 0, 4, 2, 32, 3, 0, 4, 2, 104, 3, 0, 4, 8, 2, 111, 110, 111, 114, 3,
-			0, 4, 8, 2, 111, 110, 111, 117, 3, 0, 8, 17, 66, 3, 0, 101, 39, 8, 3, 2, 107, 129, 0, 108, 1, 25, 3, 105, 0, 3,
-			107, 0, 111, 109, 111, 8, 2, 115, 3, 107, 4, 136, 65, 136, 0, 4, 121, 112, 111, 2, 100, 101, 3, 107, 4, 137, 48, 13, 0, 121,
-			112, 111, 2, 116, 104, 101, 116, 0, 121, 112, 111, 8, 2, 21, 14, 128, 132, 132, 3, 107, 4, 137, 48, 136, 0, 97, 109, 109, 101, 100,
-			1, 21, 3, 107, 6, 35, 65, 122, 72, 0, 97, 110, 1, 101, 2, 32, 3, 107, 13, 50, 0, 97, 110, 1, 17, 65, 2, 32, 3, 107,
-			35, 50, 0, 111, 111, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 117, 72, 0, 111, 111, 100, 115, 1, 10, 2, 32, 14, 128, 128,
-			133, 3, 107, 117, 72, 88, 0, 101, 116, 101, 114, 111, 8, 3, 107, 121, 47, 34, 136, 0, 101, 97, 100, 1, 21, 2, 32, 14, 128, 128,
-			132, 3, 107, 121, 72, 0, 121, 112, 111, 8, 2, 99, 114, 3, 107, 122, 48, 124, 0, 111, 114, 114, 105, 8, 3, 107, 124, 34, 122, 0,
-			111, 114, 115, 101, 8, 3, 107, 132, 89, 0, 111, 117, 115, 101, 115, 2, 32, 14, 128, 128, 134, 3, 107, 135, 88, 113, 88, 0, 4, 111,
-			117, 115, 101, 2, 32, 14, 128, 128, 133, 3, 107, 135, 89, 0, 111, 117, 115, 101, 8, 2, 21, 0, 111, 108, 100, 1, 10, 2, 32, 14,
-			128, 128, 132, 3, 107, 136, 55, 72, 0, 111, 108, 109, 101, 3, 107, 136, 65, 0, 111, 109, 101, 8, 2, 111, 3, 107, 136, 65, 129, 0,
-			111, 109, 111, 101, 111, 8, 3, 107, 136, 65, 129, 136, 0, 4, 121, 112, 111, 2, 116, 101, 110, 117, 3, 107, 137, 48, 6, 124, 0, 121,
-			112, 111, 2, 116, 104, 101, 115, 0, 97, 2, 115, 116, 3, 107, 138, 0, 101, 114, 111, 3, 107, 141, 34, 136, 0, 111, 110, 101, 2, 115,
-			116, 3, 124, 50, 122, 0, 101, 105, 114, 3, 140, 0, 111, 117, 114, 3, 146, 0, 7, 6, 105, 0, 108, 8, 2, 108, 21, 3, 2, 122,
-			55, 0, 4, 8, 100, 2, 108, 97, 116, 3, 2, 137, 0, 39, 8, 0, 4, 1, 21, 2, 98, 117, 116, 105, 118, 101, 3, 6, 122, 0,
-			1, 21, 2, 98, 117, 116, 111, 114, 0, 1, 21, 2, 99, 105, 112, 0, 2, 17, 67, 17, 67, 105, 32, 0, 2, 99, 105, 97, 108, 0,
-			2, 103, 101, 110, 111, 117, 115, 0, 2, 116, 105, 111, 110, 0, 4, 108, 97, 1, 21, 2, 32, 3, 6, 122, 55, 13, 0, 108, 108, 97,
-			1, 21, 2, 32, 0, 102, 2, 105, 99, 17, 65, 110, 17, 67, 3, 6, 122, 83, 0, 99, 105, 97, 110, 3, 6, 122, 91, 13, 50, 0,
-			4, 1, 21, 2, 100, 111, 32, 3, 6, 129, 0, 2, 98, 97, 32, 0, 2, 113, 117, 101, 32, 0, 2, 119, 111, 0, 4, 1, 99, 2,
-			100, 97, 108, 3, 6, 137, 0, 2, 122, 111, 110, 32, 0, 99, 104, 97, 101, 108, 1, 109, 3, 6, 137, 49, 118, 0, 97, 108, 1, 10,
-			2, 32, 3, 8, 113, 13, 55, 0, 117, 115, 1, 10, 3, 8, 113, 13, 89, 0, 99, 111, 1, 10, 2, 32, 3, 8, 113, 49, 136, 0,
-			102, 121, 1, 10, 2, 32, 3, 8, 113, 83, 137, 0, 4, 1, 10, 2, 99, 32, 3, 8, 122, 0, 1, 10, 2, 99, 97, 32, 0, 1,
-			10, 2, 99, 97, 108, 0, 1, 10, 2, 99, 105, 17, 67, 101, 32, 0, 1, 10, 2, 99, 105, 115, 109, 32, 0, 1, 10, 2, 99, 105,
-			115, 116, 32, 0, 1, 100, 2, 32, 0, 1, 104, 21, 21, 2, 32, 0, 1, 107, 115, 10, 2, 32, 0, 2, 99, 117, 115, 32, 0, 1,
-			21, 2, 17, 67, 97, 116, 101, 32, 3, 8, 123, 0, 1, 104, 2, 32, 3, 8, 137, 0, 117, 1, 10, 2, 109, 3, 8, 141, 0, 4,
-			108, 2, 105, 115, 101, 3, 13, 55, 0, 108, 2, 105, 122, 101, 0, 108, 101, 1, 10, 2, 103, 101, 3, 13, 55, 122, 0, 98, 108, 121,
-			1, 21, 2, 32, 14, 128, 169, 132, 3, 13, 71, 55, 2, 122, 0, 98, 108, 101, 1, 21, 2, 32, 14, 128, 137, 132, 3, 13, 71, 118,
-			0, 122, 97, 5, 3, 2, 116, 105, 111, 110, 3, 13, 88, 138, 0, 4, 1, 98, 98, 2, 32, 3, 37, 0, 1, 104, 115, 2, 32, 0,
-			2, 32, 0, 100, 104, 2, 32, 0, 108, 121, 1, 10, 2, 32, 14, 128, 130, 130, 3, 55, 2, 122, 0, 4, 1, 21, 2, 99, 101, 32,
-			3, 113, 0, 1, 21, 2, 99, 101, 100, 32, 0, 1, 102, 2, 100, 101, 108, 0, 2, 111, 0, 2, 122, 101, 110, 0, 4, 99, 101, 1,
-			102, 102, 111, 3, 113, 89, 0, 99, 101, 1, 118, 114, 101, 115, 0, 4, 108, 1, 98, 21, 2, 32, 3, 118, 0, 108, 1, 99, 17, 67,
-			21, 2, 32, 0, 108, 1, 112, 21, 2, 32, 0, 108, 1, 114, 21, 2, 32, 0, 108, 1, 115, 21, 2, 32, 0, 108, 1, 116, 110, 2,
-			32, 0, 108, 1, 118, 21, 2, 32, 0, 4, 3, 122, 0, 1, 10, 2, 17, 67, 101, 110, 99, 0, 1, 10, 2, 17, 67, 101, 110, 116,
-			0, 1, 17, 67, 2, 120, 12, 12, 0, 1, 21, 2, 17, 67, 101, 114, 0, 1, 21, 2, 99, 101, 110, 99, 101, 0, 1, 21, 2, 108,
-			101, 115, 115, 0, 1, 21, 2, 110, 101, 115, 115, 0, 1, 99, 99, 97, 2, 100, 0, 1, 104, 99, 2, 108, 100, 114, 0, 1, 108, 2,
-			98, 101, 114, 0, 1, 108, 108, 101, 116, 110, 0, 1, 112, 117, 2, 100, 101, 0, 1, 114, 98, 2, 100, 103, 0, 1, 114, 105, 2, 100,
-			0, 1, 115, 115, 111, 103, 2, 112, 0, 1, 119, 2, 108, 100, 101, 114, 17, 67, 0, 2, 17, 66, 101, 101, 0, 2, 17, 66, 101, 108,
-			32, 0, 2, 17, 66, 101, 116, 32, 0, 2, 97, 110, 105, 32, 0, 2, 98, 105, 108, 105, 116, 0, 2, 100, 101, 111, 0, 2, 108, 101,
-			17, 65, 0, 8, 2, 100, 105, 0, 8, 108, 2, 17, 67, 121, 32, 0, 8, 112, 2, 116, 121, 32, 0, 112, 101, 100, 101, 3, 122, 48,
-			129, 72, 0, 99, 104, 8, 3, 122, 49, 0, 4, 108, 8, 2, 108, 110, 3, 122, 55, 0, 108, 8, 2, 108, 117, 115, 116, 0, 108, 101,
-			1, 114, 99, 97, 115, 3, 122, 55, 122, 0, 98, 101, 1, 116, 2, 116, 3, 122, 71, 6, 121, 0, 102, 101, 1, 110, 97, 109, 2, 115,
-			3, 122, 83, 121, 0, 102, 105, 101, 114, 2, 32, 3, 122, 83, 145, 0, 105, 2, 32, 3, 122, 137, 0, 4, 1, 17, 67, 29, 2, 17,
-			67, 97, 32, 3, 129, 0, 1, 17, 67, 29, 2, 17, 67, 111, 32, 0, 1, 102, 2, 106, 0, 2, 98, 111, 32, 0, 2, 113, 117, 32,
-			0, 5, 7, 2, 111, 0, 8, 108, 2, 98, 114, 101, 0, 122, 122, 8, 112, 3, 129, 47, 89, 0, 108, 108, 97, 114, 100, 1, 10, 2,
-			32, 3, 129, 126, 0, 4, 1, 10, 2, 122, 97, 98, 108, 3, 137, 0, 1, 17, 67, 2, 108, 101, 114, 0, 1, 17, 67, 29, 2, 17,
-			67, 101, 114, 32, 0, 1, 17, 67, 29, 2, 17, 67, 121, 32, 0, 1, 17, 67, 29, 2, 32, 0, 1, 21, 2, 17, 67, 105, 110, 103,
-			0, 1, 98, 2, 32, 0, 1, 98, 2, 98, 108, 101, 32, 0, 1, 99, 2, 32, 0, 1, 102, 2, 98, 114, 101, 0, 1, 104, 2, 106,
-			0, 1, 104, 99, 2, 108, 100, 0, 1, 108, 2, 98, 101, 108, 0, 1, 114, 2, 102, 108, 0, 1, 114, 98, 2, 100, 108, 0, 1, 114,
-			99, 115, 2, 98, 101, 114, 0, 1, 114, 102, 2, 100, 97, 121, 0, 1, 114, 112, 2, 99, 101, 0, 1, 115, 2, 108, 101, 110, 0, 1,
-			115, 2, 122, 17, 65, 0, 1, 116, 110, 101, 2, 99, 101, 0, 1, 116, 115, 2, 102, 108, 0, 1, 118, 2, 98, 114, 0, 1, 118, 100,
-			97, 2, 99, 101, 0, 1, 118, 101, 100, 2, 99, 101, 0, 2, 17, 66, 101, 13, 0, 2, 98, 101, 114, 32, 0, 2, 100, 101, 114, 12,
-			32, 0, 2, 100, 101, 114, 32, 12, 0, 8, 2, 17, 66, 111, 0, 8, 2, 17, 67, 121, 32, 0, 8, 2, 97, 0, 8, 2, 98, 0,
-			8, 2, 99, 0, 8, 2, 100, 0, 8, 2, 100, 108, 101, 0, 8, 2, 104, 0, 8, 2, 111, 0, 8, 17, 67, 2, 108, 97, 103, 101,
-			0, 8, 17, 67, 2, 108, 111, 0, 8, 108, 2, 98, 114, 0, 8, 109, 2, 108, 100, 0, 8, 115, 2, 100, 101, 114, 0, 8, 115, 2,
-			100, 108, 0, 8, 115, 2, 112, 104, 0, 8, 119, 2, 108, 100, 0, 104, 105, 1, 110, 3, 137, 13, 0, 108, 1, 108, 2, 97, 104, 32,
-			3, 137, 55, 0, 98, 97, 98, 1, 21, 3, 137, 71, 13, 71, 0, 100, 101, 97, 8, 3, 137, 72, 6, 141, 0, 4, 122, 2, 101, 114,
-			32, 3, 137, 88, 0, 122, 101, 2, 32, 0, 122, 101, 2, 100, 32, 0, 122, 97, 2, 116, 105, 111, 110, 3, 137, 88, 138, 0, 7, 6,
-			106, 0, 2, 106, 3, 0, 4, 1, 110, 2, 97, 32, 3, 57, 0, 2, 195, 188, 0, 4, 111, 107, 117, 108, 108, 2, 32, 14, 128, 128,
-			134, 3, 57, 128, 49, 134, 47, 107, 0, 195, 182, 107, 117, 108, 108, 2, 32, 14, 128, 128, 134, 0, 3, 75, 0, 97, 8, 2, 109, 97,
-			105, 3, 75, 119, 0, 101, 114, 101, 8, 2, 17, 67, 3, 75, 121, 34, 13, 0, 101, 115, 8, 2, 117, 105, 3, 75, 121, 88, 0, 111,
-			97, 8, 2, 110, 21, 3, 75, 136, 6, 35, 0, 117, 97, 110, 3, 107, 58, 126, 50, 0, 7, 6, 107, 0, 2, 107, 3, 0, 4, 3,
-			49, 0, 8, 2, 18, 66, 17, 71, 0, 8, 2, 104, 17, 71, 0, 8, 2, 119, 17, 71, 0, 105, 110, 101, 115, 105, 115, 3, 49, 13,
-			50, 6, 129, 89, 123, 89, 0, 106, 8, 2, 101, 21, 3, 49, 57, 0, 117, 97, 110, 3, 49, 58, 35, 50, 0, 105, 8, 2, 108, 17,
-			67, 21, 3, 49, 113, 0, 105, 8, 2, 108, 108, 21, 3, 49, 122, 0, 105, 108, 111, 8, 2, 21, 3, 49, 122, 55, 13, 0, 104, 97,
-			3, 49, 126, 0, 104, 97, 114, 3, 49, 127, 0, 117, 2, 99, 104, 3, 49, 134, 0, 117, 119, 97, 105, 116, 3, 49, 134, 58, 6, 138,
-			47, 0, 4, 110, 2, 105, 102, 3, 50, 0, 110, 2, 105, 116, 0, 110, 2, 105, 118, 0, 110, 2, 111, 98, 0, 110, 2, 111, 119, 0,
-			110, 8, 2, 17, 71, 0, 7, 6, 108, 0, 4, 1, 108, 3, 0, 1, 108, 17, 65, 2, 32, 3, 0, 111, 1, 21, 2, 103, 111, 117,
-			115, 3, 8, 55, 13, 0, 105, 110, 103, 1, 116, 10, 2, 32, 3, 10, 55, 122, 68, 0, 105, 110, 103, 1, 103, 110, 2, 32, 3, 14,
-			55, 122, 68, 0, 121, 1, 108, 21, 2, 32, 14, 128, 128, 130, 3, 37, 0, 4, 3, 55, 0, 1, 17, 65, 2, 108, 121, 32, 0, 1,
-			114, 2, 32, 0, 1, 119, 2, 32, 0, 2, 17, 67, 0, 2, 32, 0, 2, 69, 0, 8, 2, 104, 17, 71, 0, 108, 1, 17, 65, 0,
-			108, 1, 17, 65, 2, 17, 65, 0, 108, 1, 39, 17, 65, 0, 108, 1, 121, 0, 108, 2, 17, 67, 0, 108, 8, 2, 17, 71, 0, 108,
-			101, 2, 32, 0, 4, 121, 1, 21, 2, 32, 14, 128, 130, 130, 3, 55, 2, 37, 0, 121, 1, 102, 101, 105, 2, 32, 14, 128, 128, 130,
-			0, 121, 1, 102, 102, 2, 32, 14, 128, 128, 130, 0, 121, 1, 102, 111, 2, 32, 14, 128, 128, 130, 0, 121, 1, 111, 2, 32, 0, 121,
-			1, 112, 10, 2, 32, 14, 128, 128, 130, 0, 69, 115, 115, 1, 21, 2, 32, 14, 128, 130, 132, 3, 55, 13, 89, 0, 69, 115, 115, 108,
-			121, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 13, 89, 55, 2, 37, 0, 106, 117, 8, 3, 55, 57, 134, 0, 121, 8, 2, 100, 3,
-			55, 122, 0, 105, 110, 117, 120, 3, 55, 122, 50, 125, 49, 89, 0, 105, 109, 1, 10, 2, 101, 110, 116, 3, 55, 122, 65, 0, 105, 110,
-			103, 1, 17, 66, 10, 2, 32, 3, 55, 122, 68, 0, 105, 110, 103, 115, 1, 17, 66, 10, 2, 32, 3, 55, 122, 68, 88, 0, 105, 115,
-			116, 101, 110, 3, 55, 122, 89, 13, 50, 0, 111, 5, 3, 8, 2, 103, 25, 3, 55, 131, 0, 117, 2, 110, 97, 3, 55, 134, 0, 4,
-			121, 1, 102, 2, 32, 3, 55, 137, 0, 121, 1, 112, 2, 32, 0, 121, 1, 112, 105, 116, 108, 117, 109, 0, 4, 108, 101, 100, 1, 21,
-			21, 2, 32, 14, 128, 136, 131, 3, 72, 0, 108, 101, 100, 1, 111, 21, 21, 2, 32, 14, 128, 136, 131, 0, 108, 97, 110, 8, 3, 105,
-			2, 35, 50, 0, 1, 17, 66, 2, 32, 3, 118, 0, 105, 110, 103, 1, 108, 10, 2, 32, 14, 128, 152, 132, 3, 122, 68, 0, 7, 6,
-			109, 0, 4, 1, 17, 66, 2, 32, 3, 13, 65, 0, 1, 104, 2, 32, 0, 110, 8, 2, 101, 3, 50, 0, 4, 3, 65, 0, 1, 108,
-			2, 32, 0, 98, 1, 111, 2, 101, 0, 98, 2, 32, 0, 98, 8, 111, 98, 2, 25, 0, 98, 8, 117, 100, 0, 109, 0, 110, 2, 32,
-			0, 101, 116, 97, 8, 2, 108, 108, 117, 3, 65, 2, 121, 47, 35, 0, 101, 1, 17, 66, 10, 2, 32, 3, 65, 2, 122, 0, 4, 97,
-			108, 8, 2, 102, 14, 128, 132, 131, 3, 65, 4, 35, 55, 0, 97, 108, 8, 2, 110, 14, 128, 132, 131, 0, 97, 108, 8, 2, 112, 14,
-			128, 132, 131, 0, 97, 108, 8, 2, 116, 114, 14, 128, 132, 131, 0, 101, 116, 97, 8, 2, 21, 3, 65, 4, 121, 47, 13, 0, 117, 108,
-			116, 105, 8, 2, 21, 21, 14, 128, 132, 133, 3, 65, 4, 125, 55, 47, 122, 0, 101, 1, 114, 111, 116, 2, 110, 116, 12, 3, 65, 6,
-			121, 0, 69, 110, 116, 97, 114, 121, 2, 32, 3, 65, 6, 121, 50, 47, 13, 34, 2, 122, 0, 101, 110, 116, 101, 100, 1, 17, 67, 3,
-			65, 6, 121, 50, 47, 122, 72, 0, 4, 99, 8, 2, 18, 70, 3, 65, 13, 0, 99, 8, 2, 32, 18, 70, 0, 111, 2, 110, 111, 116,
-			111, 0, 4, 97, 99, 8, 2, 97, 100, 14, 128, 132, 131, 3, 65, 13, 49, 0, 97, 99, 8, 2, 98, 14, 128, 132, 131, 0, 97, 99,
-			8, 2, 100, 14, 128, 132, 131, 0, 97, 99, 8, 2, 108, 14, 128, 132, 131, 0, 97, 99, 8, 2, 109, 14, 128, 132, 131, 0, 99, 8,
-			2, 17, 67, 0, 99, 8, 2, 32, 17, 67, 0, 111, 110, 2, 111, 112, 111, 108, 3, 65, 13, 50, 0, 111, 110, 111, 2, 103, 97, 3,
-			65, 13, 50, 6, 124, 0, 4, 69, 110, 116, 2, 32, 3, 65, 13, 50, 47, 0, 101, 110, 116, 1, 10, 2, 32, 14, 128, 128, 132, 0,
-			101, 110, 116, 1, 117, 2, 32, 0, 4, 101, 110, 116, 115, 1, 10, 2, 32, 14, 128, 128, 133, 3, 65, 13, 50, 47, 89, 0, 101, 110,
-			116, 115, 1, 117, 2, 32, 0, 4, 97, 108, 8, 2, 101, 118, 3, 65, 13, 55, 0, 97, 108, 8, 2, 105, 0, 111, 98, 105, 108, 101,
-			3, 65, 13, 71, 129, 55, 0, 111, 117, 116, 104, 1, 10, 2, 32, 3, 65, 13, 87, 0, 97, 8, 2, 109, 3, 65, 35, 0, 4, 99,
-			8, 2, 17, 65, 3, 65, 35, 49, 0, 99, 8, 2, 32, 17, 65, 0, 98, 108, 121, 3, 65, 71, 55, 2, 122, 0, 101, 116, 97, 98,
-			111, 3, 65, 121, 47, 6, 35, 71, 124, 0, 101, 116, 97, 108, 8, 2, 17, 67, 3, 65, 121, 47, 118, 0, 101, 110, 1, 21, 2, 32,
-			3, 65, 121, 50, 0, 101, 110, 116, 5, 8, 1, 10, 2, 32, 14, 128, 128, 132, 3, 65, 121, 50, 47, 0, 101, 110, 116, 115, 5, 8,
-			1, 10, 2, 32, 14, 128, 128, 133, 3, 65, 121, 50, 47, 89, 0, 101, 103, 97, 8, 3, 65, 121, 81, 13, 0, 111, 110, 2, 111, 120,
-			3, 65, 124, 50, 0, 111, 110, 111, 8, 3, 65, 124, 50, 136, 0, 117, 108, 116, 105, 8, 3, 65, 125, 55, 47, 122, 0, 111, 98, 105,
-			108, 101, 8, 3, 65, 136, 71, 137, 55, 0, 111, 115, 116, 1, 21, 2, 32, 14, 128, 128, 132, 3, 65, 136, 89, 47, 0, 97, 121, 111,
-			114, 5, 35, 3, 65, 140, 0, 7, 6, 110, 0, 4, 1, 110, 3, 0, 4, 1, 110, 2, 32, 3, 0, 4, 100, 1, 32, 50, 2, 32,
-			3, 0, 101, 1, 110, 10, 2, 32, 3, 0, 2, 17, 67, 111, 32, 3, 8, 50, 0, 4, 1, 17, 66, 2, 32, 3, 13, 50, 0, 1,
-			69, 2, 32, 0, 8, 2, 103, 17, 71, 12, 3, 14, 68, 0, 4, 3, 50, 0, 1, 21, 2, 99, 104, 0, 1, 97, 105, 10, 2, 32,
-			14, 128, 128, 129, 0, 1, 103, 2, 32, 0, 1, 103, 2, 105, 110, 103, 12, 0, 1, 108, 2, 32, 0, 2, 107, 110, 0, 101, 1, 17,
-			66, 10, 2, 32, 3, 50, 2, 122, 0, 97, 110, 111, 8, 2, 14, 128, 132, 132, 3, 50, 4, 35, 50, 136, 0, 111, 110, 8, 2, 21,
-			14, 128, 132, 131, 3, 50, 4, 124, 50, 0, 101, 119, 115, 8, 2, 14, 128, 132, 132, 3, 50, 6, 57, 134, 88, 0, 101, 119, 115, 5,
-			3, 8, 2, 14, 128, 132, 132, 3, 50, 6, 134, 88, 0, 101, 115, 115, 1, 10, 2, 32, 14, 128, 130, 132, 3, 50, 13, 89, 0, 101,
-			99, 101, 115, 115, 105, 116, 3, 50, 13, 89, 121, 89, 122, 47, 0, 39, 116, 3, 50, 47, 0, 107, 5, 7, 3, 50, 49, 0, 115, 1,
-			97, 105, 10, 2, 32, 14, 128, 128, 130, 3, 50, 88, 0, 101, 115, 115, 5, 8, 1, 10, 2, 32, 14, 128, 130, 132, 3, 50, 121, 89,
-			0, 111, 110, 99, 104, 97, 108, 97, 5, 3, 2, 110, 3, 50, 124, 50, 91, 13, 55, 6, 126, 0, 111, 110, 99, 104, 97, 108, 97, 2,
-			110, 3, 50, 124, 50, 91, 13, 55, 13, 0, 117, 114, 115, 101, 8, 2, 17, 66, 3, 50, 128, 89, 0, 101, 111, 8, 3, 50, 129, 136,
-			0, 97, 117, 115, 101, 3, 50, 130, 89, 122, 0, 105, 110, 116, 104, 3, 50, 137, 50, 87, 0, 97, 109, 101, 1, 10, 2, 32, 14, 128,
-			128, 132, 3, 50, 138, 65, 0, 4, 1, 21, 2, 99, 17, 67, 3, 68, 0, 2, 99, 32, 0, 2, 120, 0, 103, 0, 107, 3, 68, 49,
-			0, 7, 6, 111, 0, 4, 2, 98, 106, 101, 3, 2, 124, 0, 2, 98, 108, 105, 103, 97, 116, 111, 0, 8, 2, 98, 108, 0, 8, 2,
-			98, 115, 0, 8, 2, 98, 116, 0, 112, 112, 111, 114, 2, 116, 117, 3, 2, 124, 48, 114, 0, 98, 115, 8, 2, 101, 114, 3, 2, 124,
-			71, 88, 0, 4, 1, 99, 2, 105, 110, 99, 105, 3, 2, 136, 0, 1, 100, 2, 100, 101, 99, 0, 1, 108, 2, 99, 97, 116, 0, 8,
-			2, 98, 101, 115, 0, 39, 8, 2, 14, 128, 132, 130, 0, 1, 108, 2, 99, 111, 109, 3, 4, 136, 0, 101, 2, 118, 101, 3, 4, 136,
-			6, 121, 0, 4, 2, 17, 67, 105, 99, 32, 3, 6, 124, 0, 2, 17, 67, 105, 99, 97, 108, 0, 2, 103, 101, 110, 111, 117, 115, 0,
-			2, 103, 101, 110, 121, 0, 116, 114, 111, 2, 112, 121, 3, 6, 124, 47, 34, 13, 0, 112, 111, 108, 1, 21, 2, 18, 67, 3, 6, 124,
-			48, 13, 55, 0, 99, 114, 97, 116, 101, 115, 2, 32, 3, 6, 124, 49, 34, 119, 47, 129, 88, 0, 120, 2, 105, 100, 101, 3, 6, 124,
-			49, 89, 0, 109, 101, 116, 101, 114, 1, 21, 3, 6, 124, 65, 122, 47, 114, 0, 103, 114, 97, 112, 104, 101, 114, 1, 21, 3, 6, 124,
-			81, 34, 13, 83, 114, 0, 112, 104, 97, 1, 99, 114, 2, 103, 3, 6, 124, 83, 13, 0, 4, 1, 116, 115, 117, 99, 2, 100, 105, 3,
-			6, 136, 0, 2, 17, 66, 97, 32, 0, 2, 17, 66, 101, 111, 110, 0, 2, 17, 66, 105, 17, 65, 0, 2, 17, 67, 105, 32, 0, 2,
-			17, 67, 111, 32, 0, 2, 17, 67, 111, 105, 115, 116, 0, 2, 98, 105, 99, 32, 0, 2, 99, 114, 101, 32, 0, 97, 2, 32, 3, 6,
-			136, 13, 0, 4, 105, 2, 110, 97, 32, 3, 6, 139, 0, 121, 2, 17, 65, 32, 0, 101, 97, 2, 32, 3, 6, 141, 0, 4, 1, 10,
-			2, 112, 104, 101, 114, 3, 8, 13, 0, 2, 99, 121, 116, 101, 32, 0, 103, 1, 108, 21, 2, 121, 3, 8, 13, 75, 0, 103, 105, 115,
-			109, 1, 108, 3, 8, 13, 75, 122, 88, 13, 65, 0, 112, 104, 101, 1, 10, 2, 32, 3, 8, 13, 83, 2, 122, 0, 1, 17, 67, 21,
-			21, 2, 32, 3, 8, 136, 0, 4, 1, 10, 2, 103, 101, 110, 32, 3, 13, 0, 1, 10, 2, 112, 32, 0, 1, 102, 102, 2, 99, 17,
-			65, 0, 1, 104, 115, 105, 98, 2, 112, 0, 1, 104, 116, 101, 109, 2, 100, 32, 0, 1, 105, 114, 101, 112, 2, 100, 32, 0, 1, 109,
-			2, 120, 0, 1, 109, 109, 2, 100, 111, 114, 0, 1, 112, 2, 116, 101, 110, 116, 105, 0, 1, 115, 2, 112, 104, 105, 115, 116, 105, 99,
-			0, 1, 116, 2, 98, 97, 99, 99, 0, 1, 116, 115, 117, 99, 2, 100, 0, 1, 118, 105, 112, 2, 116, 0, 2, 99, 99, 97, 115, 105,
-			0, 2, 99, 99, 108, 117, 0, 2, 102, 102, 105, 99, 105, 0, 2, 112, 105, 110, 105, 0, 102, 2, 102, 101, 110, 0, 4, 116, 1, 103,
-			10, 2, 32, 3, 13, 47, 0, 116, 1, 114, 114, 2, 32, 0, 112, 112, 2, 114, 101, 115, 3, 13, 48, 0, 112, 111, 108, 105, 116, 97,
-			110, 3, 13, 48, 6, 124, 55, 122, 47, 13, 50, 0, 112, 101, 100, 1, 10, 2, 32, 3, 13, 48, 72, 0, 99, 107, 1, 17, 67, 11,
-			10, 2, 32, 3, 13, 49, 0, 4, 99, 99, 117, 114, 3, 13, 49, 128, 0, 99, 99, 117, 114, 114, 0, 4, 99, 99, 117, 114, 5, 5,
-			3, 13, 49, 148, 0, 99, 99, 117, 114, 114, 5, 5, 0, 105, 120, 2, 32, 3, 58, 35, 0, 105, 115, 1, 21, 2, 32, 3, 58, 126,
-			0, 4, 105, 114, 3, 58, 127, 0, 105, 114, 101, 0, 101, 1, 10, 2, 115, 32, 14, 128, 128, 130, 3, 88, 0, 101, 115, 111, 112, 104,
-			97, 3, 113, 89, 124, 83, 13, 0, 4, 3, 124, 0, 1, 98, 2, 116, 104, 101, 114, 0, 1, 104, 2, 112, 32, 0, 1, 108, 102, 2,
-			112, 32, 0, 1, 109, 2, 100, 101, 108, 0, 1, 109, 2, 100, 101, 114, 0, 1, 109, 2, 100, 101, 115, 116, 0, 1, 112, 2, 112, 32,
-			0, 1, 114, 2, 103, 101, 114, 0, 1, 114, 2, 112, 32, 0, 1, 114, 112, 2, 112, 101, 0, 1, 116, 2, 112, 32, 0, 2, 17, 66,
-			101, 17, 67, 111, 32, 0, 2, 17, 67, 101, 109, 105, 99, 0, 2, 17, 67, 101, 116, 32, 0, 2, 98, 108, 105, 103, 97, 0, 2, 98,
-			108, 111, 0, 2, 98, 115, 116, 105, 110, 0, 2, 102, 102, 105, 99, 0, 2, 120, 12, 12, 0, 8, 2, 17, 67, 121, 12, 0, 8, 2,
-			112, 101, 114, 0, 8, 98, 2, 100, 121, 0, 8, 114, 2, 98, 101, 114, 0, 8, 114, 2, 116, 104, 101, 114, 0, 104, 1, 106, 2, 110,
-			0, 116, 121, 108, 101, 1, 99, 3, 124, 47, 122, 55, 6, 129, 0, 120, 121, 3, 124, 49, 89, 122, 0, 98, 115, 111, 2, 108, 3, 124,
-			71, 89, 13, 0, 4, 103, 101, 1, 108, 21, 2, 32, 3, 124, 81, 0, 103, 117, 101, 1, 21, 21, 0, 4, 1, 100, 2, 122, 101, 110,
-			3, 125, 0, 1, 116, 2, 110, 103, 117, 0, 2, 116, 104, 101, 114, 12, 0, 4, 101, 1, 102, 2, 116, 17, 65, 3, 129, 0, 101, 8,
-			2, 100, 0, 101, 8, 2, 115, 0, 97, 1, 114, 98, 2, 100, 3, 130, 0, 4, 5, 3, 1, 10, 2, 102, 102, 3, 131, 0, 5, 3,
-			1, 99, 2, 102, 102, 0, 5, 3, 1, 103, 2, 110, 103, 0, 5, 3, 1, 108, 99, 2, 116, 104, 0, 5, 3, 1, 109, 2, 116, 104,
-			0, 5, 3, 1, 114, 2, 110, 103, 0, 5, 3, 1, 115, 2, 110, 103, 0, 5, 3, 2, 102, 116, 0, 5, 3, 8, 2, 102, 102, 0,
-			4, 39, 101, 114, 3, 133, 0, 97, 114, 0, 97, 114, 2, 32, 0, 4, 1, 100, 2, 105, 110, 103, 3, 134, 0, 101, 1, 104, 115, 2,
-			12, 0, 4, 1, 17, 67, 29, 2, 17, 66, 97, 108, 3, 136, 0, 1, 17, 67, 29, 2, 17, 66, 117, 115, 32, 0, 1, 21, 2, 105,
-			115, 116, 0, 1, 29, 2, 17, 66, 121, 32, 0, 1, 29, 2, 112, 104, 101, 114, 0, 1, 98, 2, 116, 104, 0, 1, 99, 2, 116, 97,
-			110, 0, 1, 100, 2, 99, 105, 108, 0, 1, 102, 2, 99, 17, 65, 0, 1, 103, 105, 2, 32, 0, 1, 107, 2, 100, 17, 65, 0, 1,
-			109, 2, 116, 105, 118, 0, 1, 110, 2, 98, 105, 108, 0, 1, 110, 2, 98, 108, 0, 1, 110, 2, 116, 97, 0, 1, 110, 2, 116, 111,
-			114, 0, 1, 114, 2, 116, 97, 0, 1, 114, 2, 116, 111, 0, 1, 114, 99, 2, 97, 116, 0, 1, 114, 99, 2, 99, 117, 0, 1, 114,
-			112, 112, 97, 2, 112, 0, 1, 116, 2, 116, 97, 0, 2, 17, 66, 101, 13, 0, 2, 17, 66, 101, 110, 17, 67, 0, 2, 17, 66, 105,
-			110, 103, 0, 2, 17, 67, 97, 103, 104, 32, 0, 2, 32, 0, 2, 98, 97, 0, 2, 98, 101, 100, 0, 2, 98, 121, 32, 0, 2, 100,
-			97, 32, 0, 2, 103, 97, 110, 32, 0, 2, 104, 17, 65, 0, 2, 105, 110, 103, 0, 2, 105, 115, 109, 0, 2, 107, 121, 32, 0, 2,
-			115, 104, 17, 65, 32, 0, 2, 116, 97, 116, 0, 2, 116, 105, 111, 110, 0, 8, 2, 17, 66, 97, 108, 0, 8, 2, 122, 111, 0, 8,
-			17, 67, 2, 116, 105, 0, 8, 104, 2, 99, 117, 0, 8, 108, 2, 99, 17, 65, 0, 8, 109, 2, 98, 105, 108, 0, 8, 114, 2, 98,
-			111, 0, 8, 118, 2, 99, 17, 65, 0, 97, 0, 101, 0, 104, 0, 101, 114, 3, 136, 13, 0, 116, 105, 99, 1, 110, 2, 17, 65, 3,
-			136, 47, 113, 89, 0, 116, 111, 114, 1, 109, 3, 136, 47, 114, 0, 116, 111, 1, 114, 112, 2, 110, 3, 136, 47, 124, 0, 116, 111, 1,
-			114, 112, 3, 136, 47, 136, 0, 4, 112, 101, 1, 110, 117, 2, 110, 3, 136, 48, 13, 0, 112, 101, 8, 2, 110, 0, 112, 101, 100, 1,
-			99, 2, 32, 3, 136, 48, 72, 0, 99, 104, 1, 114, 116, 3, 136, 49, 0, 100, 111, 2, 114, 17, 65, 3, 136, 72, 13, 0, 4, 100,
-			111, 114, 3, 136, 72, 114, 0, 100, 111, 117, 114, 0, 103, 101, 110, 105, 2, 99, 3, 136, 75, 6, 121, 50, 122, 0, 4, 103, 8, 2,
-			114, 101, 3, 136, 81, 0, 103, 117, 101, 1, 114, 0, 103, 117, 101, 1, 118, 0, 4, 116, 104, 1, 108, 2, 105, 3, 136, 86, 0, 116,
-			104, 1, 108, 2, 105, 97, 110, 0, 116, 104, 1, 114, 116, 101, 98, 0, 116, 104, 101, 1, 108, 99, 0, 116, 104, 101, 1, 114, 116, 0,
-			105, 2, 99, 3, 136, 113, 0, 101, 1, 112, 2, 116, 105, 3, 136, 121, 0, 4, 101, 1, 112, 2, 109, 3, 136, 122, 0, 101, 1, 112,
-			2, 116, 0, 4, 105, 3, 139, 0, 105, 2, 99, 101, 0, 105, 2, 99, 101, 13, 0, 105, 2, 99, 107, 0, 121, 0, 105, 97, 3, 139,
-			13, 0, 7, 6, 112, 0, 4, 1, 115, 97, 114, 2, 98, 3, 0, 2, 112, 3, 0, 104, 111, 110, 121, 1, 10, 2, 32, 3, 8, 83,
-			13, 50, 122, 0, 4, 116, 1, 105, 101, 3, 47, 0, 116, 8, 2, 17, 71, 0, 4, 3, 48, 0, 2, 104, 97, 122, 97, 0, 2, 104,
-			111, 108, 101, 0, 8, 2, 18, 66, 17, 71, 0, 104, 2, 97, 109, 32, 0, 104, 2, 101, 114, 100, 0, 111, 114, 2, 116, 114, 97, 121,
-			3, 48, 2, 133, 0, 111, 108, 121, 2, 21, 21, 3, 48, 4, 124, 55, 122, 0, 121, 114, 111, 8, 2, 21, 21, 14, 128, 132, 132, 3,
-			48, 4, 137, 34, 136, 0, 97, 108, 101, 111, 8, 2, 21, 14, 128, 132, 133, 3, 48, 4, 138, 55, 129, 136, 0, 97, 1, 109, 121, 115,
-			3, 48, 13, 0, 111, 116, 97, 2, 116, 3, 48, 13, 47, 138, 0, 121, 111, 110, 3, 48, 57, 124, 50, 0, 117, 114, 8, 2, 115, 117,
-			3, 48, 114, 0, 117, 116, 2, 32, 3, 48, 117, 47, 0, 111, 108, 121, 2, 21, 3, 48, 124, 55, 122, 0, 117, 116, 1, 115, 2, 32,
-			3, 48, 125, 47, 0, 105, 99, 111, 8, 3, 48, 129, 49, 136, 0, 105, 101, 99, 101, 2, 32, 14, 128, 128, 133, 3, 48, 129, 89, 0,
-			121, 114, 111, 109, 2, 101, 3, 48, 137, 34, 6, 124, 65, 0, 110, 8, 2, 101, 117, 3, 50, 0, 110, 101, 117, 3, 50, 57, 134, 0,
-			4, 102, 8, 2, 17, 71, 3, 83, 0, 104, 0, 104, 8, 2, 17, 71, 0, 104, 8, 2, 18, 66, 17, 71, 0, 104, 101, 110, 121, 108,
-			3, 83, 4, 129, 50, 137, 55, 0, 104, 111, 116, 111, 8, 2, 21, 21, 14, 128, 132, 133, 3, 83, 4, 136, 47, 136, 0, 104, 121, 99,
-			111, 8, 3, 83, 4, 137, 49, 136, 0, 104, 116, 104, 8, 2, 17, 65, 3, 83, 87, 0, 104, 101, 110, 111, 109, 101, 2, 110, 3, 83,
-			113, 50, 124, 65, 122, 0, 104, 105, 108, 97, 3, 83, 122, 55, 35, 0, 4, 104, 111, 116, 2, 111, 103, 114, 97, 112, 104, 12, 3, 83,
-			136, 47, 0, 104, 111, 116, 8, 2, 111, 18, 75, 12, 12, 0, 104, 111, 116, 111, 99, 111, 112, 3, 83, 136, 47, 13, 49, 124, 48, 0,
-			104, 111, 116, 111, 110, 3, 83, 136, 47, 124, 50, 0, 104, 111, 116, 111, 3, 83, 136, 47, 136, 0, 115, 8, 2, 17, 71, 3, 89, 0,
-			115, 121, 99, 104, 111, 2, 108, 111, 3, 89, 2, 137, 49, 124, 0, 115, 101, 117, 100, 111, 3, 89, 134, 72, 136, 0, 115, 121, 99, 104,
-			3, 89, 137, 49, 0, 115, 121, 99, 104, 111, 3, 89, 137, 49, 136, 0, 7, 6, 113, 0, 2, 113, 3, 0, 4, 3, 49, 0, 117, 1,
-			99, 97, 106, 0, 117, 2, 32, 0, 117, 2, 101, 114, 32, 0, 117, 101, 1, 21, 2, 32, 0, 117, 101, 1, 101, 104, 99, 0, 117, 101,
-			116, 116, 3, 49, 6, 121, 47, 0, 117, 105, 1, 115, 101, 109, 2, 116, 3, 49, 6, 129, 0, 117, 101, 117, 3, 49, 57, 134, 0, 117,
-			3, 49, 58, 0, 117, 2, 17, 67, 3, 49, 58, 13, 0, 117, 101, 8, 2, 32, 3, 49, 58, 121, 0, 117, 101, 115, 116, 3, 49, 58,
-			121, 89, 47, 0, 117, 121, 3, 49, 58, 122, 0, 117, 97, 1, 115, 2, 17, 66, 3, 49, 58, 124, 0, 117, 97, 115, 2, 17, 65, 3,
-			49, 58, 138, 88, 0, 117, 97, 115, 105, 3, 49, 58, 138, 88, 137, 0, 117, 101, 116, 1, 97, 114, 3, 49, 113, 47, 0, 117, 111, 114,
-			1, 105, 108, 3, 49, 114, 0, 117, 97, 121, 3, 49, 129, 0, 117, 101, 116, 2, 32, 3, 49, 138, 0, 7, 6, 114, 0, 4, 1, 114,
-			2, 32, 3, 0, 100, 1, 32, 51, 2, 32, 3, 0, 109, 8, 3, 4, 127, 121, 65, 0, 1, 21, 2, 17, 66, 3, 13, 0, 4, 3,
-			34, 0, 104, 1, 17, 67, 0, 104, 8, 2, 17, 71, 0, 114, 0, 119, 8, 2, 97, 3, 34, 2, 117, 0, 121, 1, 116, 110, 97, 10,
-			2, 32, 14, 128, 128, 130, 3, 34, 2, 122, 0, 4, 114, 104, 101, 97, 3, 34, 6, 141, 0, 114, 104, 111, 101, 97, 0, 1, 17, 67,
-			2, 32, 24, 3, 34, 13, 0, 69, 114, 2, 32, 3, 34, 114, 0, 104, 121, 116, 104, 3, 34, 122, 86, 0, 4, 117, 110, 8, 2, 97,
-			3, 34, 125, 50, 0, 117, 110, 8, 2, 111, 0, 4, 104, 101, 117, 3, 34, 134, 0, 117, 8, 2, 98, 18, 66, 0, 4, 104, 111, 8,
-			2, 100, 3, 34, 136, 0, 104, 111, 8, 2, 116, 0, 104, 111, 100, 111, 8, 2, 21, 3, 34, 136, 72, 13, 0, 4, 104, 105, 2, 110,
-			3, 34, 137, 0, 104, 105, 2, 122, 0, 1, 101, 2, 32, 3, 114, 0, 7, 6, 115, 0, 4, 2, 99, 105, 111, 117, 115, 3, 0, 4,
-			2, 115, 3, 0, 116, 1, 32, 49, 2, 32, 3, 0, 104, 101, 39, 8, 3, 2, 91, 129, 0, 101, 108, 102, 2, 32, 3, 6, 89, 121,
-			55, 83, 0, 101, 108, 118, 101, 115, 2, 32, 3, 6, 89, 121, 55, 84, 88, 0, 105, 97, 2, 32, 3, 8, 88, 141, 0, 99, 111, 112,
-			121, 1, 21, 2, 32, 3, 8, 89, 49, 13, 48, 2, 122, 0, 99, 105, 115, 2, 32, 3, 8, 89, 49, 122, 89, 0, 99, 105, 2, 32,
-			3, 8, 89, 49, 137, 0, 105, 97, 1, 17, 67, 2, 32, 3, 8, 89, 141, 0, 105, 97, 5, 3, 2, 32, 3, 8, 90, 13, 0, 115,
-			105, 111, 110, 3, 8, 91, 13, 50, 0, 115, 105, 111, 110, 5, 8, 2, 32, 3, 8, 91, 125, 50, 0, 105, 97, 110, 1, 21, 2, 32,
-			14, 128, 128, 129, 3, 50, 0, 4, 1, 10, 2, 105, 99, 32, 3, 88, 0, 1, 17, 65, 2, 105, 116, 105, 118, 0, 1, 21, 2, 32,
-			14, 128, 128, 129, 0, 1, 32, 15, 2, 32, 0, 1, 32, 54, 49, 2, 32, 0, 1, 39, 32, 15, 2, 32, 0, 1, 97, 2, 101, 108,
-			32, 0, 1, 97, 2, 109, 0, 1, 97, 101, 2, 105, 101, 0, 1, 97, 101, 2, 105, 108, 0, 1, 97, 101, 2, 121, 0, 1, 97, 101,
-			108, 112, 2, 101, 0, 1, 97, 101, 112, 2, 101, 0, 1, 97, 101, 116, 2, 101, 0, 1, 97, 104, 112, 2, 101, 0, 1, 97, 108, 2,
-			101, 0, 1, 97, 109, 2, 101, 0, 1, 97, 112, 2, 101, 0, 1, 97, 114, 2, 101, 0, 1, 103, 110, 2, 32, 14, 128, 128, 129, 0,
-			1, 105, 17, 65, 2, 121, 0, 1, 105, 97, 2, 101, 0, 1, 105, 114, 112, 2, 111, 0, 1, 109, 2, 105, 0, 1, 109, 2, 121, 0,
-			1, 110, 2, 32, 14, 128, 128, 129, 0, 1, 111, 2, 109, 0, 1, 111, 17, 67, 2, 69, 110, 0, 1, 111, 17, 67, 2, 69, 114, 0,
-			1, 114, 2, 100, 0, 1, 117, 109, 2, 105, 99, 0, 2, 32, 0, 8, 97, 101, 2, 101, 0, 8, 97, 104, 2, 32, 0, 8, 101, 114,
-			2, 111, 0, 8, 105, 111, 17, 67, 2, 101, 0, 101, 1, 105, 117, 2, 32, 0, 101, 1, 111, 2, 32, 0, 101, 1, 111, 100, 2, 32,
-			0, 101, 1, 111, 111, 104, 99, 0, 101, 1, 111, 116, 2, 32, 0, 101, 1, 117, 97, 2, 32, 0, 101, 1, 117, 102, 2, 32, 0, 101,
-			1, 119, 0, 4, 105, 110, 1, 105, 97, 2, 32, 3, 88, 13, 50, 0, 105, 110, 1, 117, 2, 32, 0, 105, 98, 1, 17, 65, 3, 88,
-			13, 71, 0, 4, 3, 89, 0, 1, 21, 2, 104, 101, 97, 100, 32, 0, 1, 21, 2, 104, 105, 108, 108, 32, 0, 1, 21, 2, 104, 111,
-			117, 115, 0, 1, 97, 2, 101, 0, 1, 99, 2, 32, 0, 1, 99, 10, 2, 32, 14, 128, 128, 129, 0, 1, 101, 112, 10, 2, 32, 14,
-			128, 128, 129, 0, 1, 101, 116, 2, 32, 14, 128, 128, 129, 0, 1, 102, 2, 32, 0, 1, 102, 10, 2, 32, 14, 128, 128, 129, 0, 1,
-			104, 116, 2, 32, 0, 1, 104, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 105, 114, 2, 32, 14, 128, 128, 129, 0, 1, 107, 2, 32,
-			0, 1, 107, 10, 2, 32, 14, 128, 128, 129, 0, 1, 112, 2, 32, 0, 1, 112, 10, 2, 32, 14, 128, 128, 129, 0, 1, 116, 2, 32,
-			14, 128, 128, 129, 0, 1, 116, 10, 2, 32, 14, 128, 128, 129, 0, 2, 115, 104, 0, 5, 3, 1, 101, 114, 2, 111, 117, 114, 0, 8,
-			2, 99, 17, 71, 0, 8, 2, 99, 18, 66, 17, 71, 0, 8, 2, 107, 17, 71, 0, 8, 2, 107, 18, 66, 17, 71, 0, 8, 2, 108,
-			17, 71, 0, 8, 2, 109, 17, 71, 0, 8, 2, 110, 17, 71, 0, 8, 2, 112, 17, 71, 0, 8, 2, 112, 18, 66, 17, 71, 0, 8,
-			2, 112, 104, 17, 71, 0, 8, 2, 113, 117, 0, 8, 2, 114, 105, 0, 8, 2, 116, 17, 71, 0, 8, 2, 116, 114, 17, 71, 0, 8,
-			2, 117, 0, 8, 2, 118, 97, 0, 8, 2, 118, 101, 0, 8, 2, 119, 17, 71, 0, 8, 2, 122, 17, 71, 0, 8, 17, 65, 17, 66,
-			2, 32, 0, 8, 105, 109, 2, 104, 0, 99, 1, 117, 109, 2, 108, 0, 99, 2, 18, 67, 0, 101, 1, 111, 111, 2, 32, 0, 115, 1,
-			111, 114, 99, 2, 104, 0, 115, 2, 32, 0, 115, 101, 2, 32, 0, 101, 109, 105, 8, 2, 21, 21, 14, 128, 132, 132, 3, 89, 4, 121,
-			65, 113, 0, 99, 105, 2, 98, 3, 89, 13, 0, 105, 110, 1, 97, 2, 32, 3, 89, 13, 50, 0, 116, 8, 2, 32, 3, 89, 13, 50,
-			47, 0, 111, 109, 97, 8, 2, 108, 105, 3, 89, 13, 65, 126, 0, 105, 98, 1, 10, 3, 89, 13, 71, 0, 111, 99, 105, 101, 8, 2,
-			116, 3, 89, 13, 89, 144, 0, 116, 101, 105, 110, 3, 89, 47, 137, 50, 0, 116, 97, 116, 101, 8, 2, 21, 3, 89, 47, 138, 47, 0,
-			4, 99, 2, 101, 112, 116, 3, 89, 49, 0, 99, 104, 2, 111, 0, 99, 104, 5, 3, 2, 101, 100, 0, 99, 104, 8, 2, 105, 115, 109,
-			0, 99, 97, 114, 8, 2, 97, 3, 89, 49, 35, 34, 0, 99, 104, 105, 122, 8, 3, 89, 49, 122, 47, 89, 0, 99, 104, 101, 2, 109,
-			3, 89, 49, 129, 0, 99, 97, 114, 8, 2, 17, 65, 3, 89, 49, 140, 0, 99, 97, 114, 99, 3, 89, 49, 140, 89, 0, 101, 8, 2,
-			99, 108, 117, 3, 89, 113, 0, 101, 99, 117, 114, 3, 89, 113, 49, 57, 143, 0, 101, 109, 105, 110, 8, 3, 89, 121, 65, 122, 50, 0,
-			121, 2, 110, 101, 114, 103, 3, 89, 122, 0, 111, 109, 101, 1, 21, 2, 32, 14, 128, 128, 132, 3, 89, 125, 65, 0, 111, 109, 101, 1,
-			111, 21, 21, 2, 32, 14, 128, 128, 132, 3, 89, 136, 65, 0, 105, 122, 101, 8, 2, 17, 67, 21, 3, 89, 137, 88, 0, 4, 105, 111,
-			110, 1, 17, 65, 3, 90, 13, 50, 0, 105, 111, 110, 5, 3, 1, 114, 101, 0, 105, 111, 110, 5, 8, 1, 17, 65, 3, 90, 125, 50,
-			0, 4, 99, 104, 2, 17, 67, 3, 91, 0, 99, 104, 2, 32, 0, 99, 104, 8, 0, 99, 104, 8, 2, 105, 108, 0, 99, 104, 8, 101,
-			0, 104, 0, 104, 8, 2, 17, 71, 0, 104, 8, 2, 18, 66, 17, 71, 0, 115, 2, 117, 101, 0, 115, 117, 114, 101, 1, 97, 3, 91,
-			6, 143, 0, 4, 104, 105, 114, 101, 1, 10, 2, 32, 14, 128, 128, 133, 3, 91, 13, 0, 115, 105, 97, 2, 32, 0, 105, 111, 110, 1,
-			17, 67, 3, 91, 13, 50, 0, 115, 117, 114, 3, 91, 114, 0, 104, 105, 112, 1, 10, 2, 32, 14, 128, 128, 132, 3, 91, 122, 48, 0,
-			104, 105, 112, 115, 1, 10, 2, 32, 14, 128, 128, 133, 3, 91, 122, 48, 89, 0, 105, 111, 110, 5, 8, 1, 17, 67, 3, 91, 125, 50,
-			0, 195, 173, 111, 8, 3, 91, 129, 0, 115, 117, 101, 1, 105, 116, 3, 91, 134, 0, 104, 105, 114, 101, 5, 3, 1, 10, 2, 32, 14,
-			128, 128, 133, 3, 91, 141, 0, 115, 117, 114, 1, 97, 3, 91, 143, 0, 1, 32, 54, 2, 32, 3, 113, 88, 0, 8, 2, 32, 3, 121,
-			89, 0, 4, 1, 101, 99, 21, 2, 32, 14, 128, 128, 129, 3, 123, 88, 0, 1, 101, 115, 10, 2, 32, 14, 128, 128, 129, 0, 1, 101,
-			115, 115, 10, 2, 32, 14, 128, 128, 130, 0, 7, 6, 116, 0, 4, 1, 115, 2, 108, 3, 0, 1, 116, 3, 0, 105, 118, 101, 1, 17,
-			67, 17, 65, 2, 32, 3, 8, 47, 122, 84, 0, 117, 1, 21, 2, 108, 97, 116, 101, 3, 8, 76, 117, 0, 117, 1, 99, 2, 97, 108,
-			32, 3, 8, 76, 134, 0, 4, 3, 47, 0, 1, 105, 112, 2, 105, 97, 0, 1, 115, 105, 2, 105, 97, 110, 12, 0, 8, 2, 114, 17,
-			71, 0, 8, 2, 115, 17, 71, 0, 8, 2, 119, 17, 71, 0, 115, 107, 8, 3, 47, 6, 13, 89, 49, 0, 4, 111, 2, 109, 111, 114,
-			114, 3, 47, 13, 0, 116, 117, 2, 114, 0, 4, 114, 105, 8, 2, 98, 117, 3, 47, 34, 122, 0, 114, 105, 8, 2, 103, 0, 114, 105,
-			8, 2, 110, 105, 0, 114, 105, 8, 2, 118, 105, 0, 114, 105, 8, 2, 120, 17, 65, 0, 4, 114, 105, 8, 2, 17, 65, 3, 47, 34,
-			137, 0, 114, 105, 8, 2, 17, 67, 17, 65, 0, 114, 105, 8, 2, 17, 67, 121, 0, 114, 105, 101, 8, 0, 114, 105, 98, 101, 3, 47,
-			34, 137, 71, 0, 105, 97, 110, 8, 3, 47, 57, 35, 50, 0, 105, 97, 108, 1, 115, 10, 3, 47, 57, 118, 0, 4, 122, 3, 47, 89,
-			0, 122, 8, 2, 97, 114, 0, 4, 115, 101, 2, 32, 3, 47, 89, 37, 0, 122, 101, 2, 32, 0, 115, 117, 8, 3, 47, 89, 134, 0,
-			101, 114, 97, 8, 3, 47, 121, 34, 13, 0, 101, 108, 101, 8, 3, 47, 121, 55, 113, 0, 111, 8, 2, 110, 110, 3, 47, 125, 0, 119,
-			111, 8, 3, 47, 134, 0, 111, 119, 110, 1, 21, 2, 32, 14, 128, 128, 132, 3, 47, 135, 50, 0, 4, 99, 104, 3, 76, 0, 115, 99,
-			104, 0, 117, 114, 1, 21, 2, 97, 108, 32, 3, 76, 8, 13, 34, 0, 105, 97, 1, 115, 10, 2, 32, 3, 76, 13, 0, 4, 117, 114,
-			1, 21, 2, 17, 65, 3, 76, 13, 34, 0, 117, 114, 1, 21, 2, 121, 0, 105, 111, 110, 1, 115, 10, 3, 76, 13, 50, 0, 4, 117,
-			114, 1, 21, 2, 32, 3, 76, 114, 0, 117, 114, 101, 2, 32, 0, 105, 111, 110, 5, 8, 1, 115, 10, 3, 76, 125, 50, 0, 4, 117,
-			1, 21, 2, 97, 108, 3, 76, 134, 0, 117, 8, 97, 116, 115, 0, 103, 97, 1, 114, 2, 103, 3, 81, 122, 0, 1, 21, 2, 105, 97,
-			3, 91, 0, 105, 111, 110, 1, 10, 3, 91, 8, 13, 50, 0, 105, 111, 117, 115, 1, 10, 3, 91, 8, 13, 89, 0, 105, 111, 110, 2,
-			97, 108, 3, 91, 8, 14, 50, 0, 105, 111, 110, 5, 8, 1, 10, 3, 91, 8, 125, 50, 0, 4, 105, 97, 1, 10, 2, 32, 3, 91,
-			13, 0, 105, 97, 1, 105, 2, 108, 105, 18, 71, 0, 4, 105, 97, 110, 1, 10, 2, 32, 3, 91, 13, 50, 0, 105, 101, 110, 1, 10,
-			0, 105, 101, 110, 99, 101, 1, 10, 3, 91, 13, 50, 89, 0, 105, 97, 108, 1, 10, 3, 91, 118, 0, 105, 1, 10, 2, 97, 108, 105,
-			3, 91, 122, 0, 2, 105, 109, 101, 32, 3, 108, 0, 101, 2, 114, 114, 101, 115, 116, 3, 108, 13, 0, 7, 6, 117, 0, 8, 2, 107,
-			114, 97, 105, 110, 3, 2, 57, 134, 0, 108, 1, 102, 2, 102, 105, 108, 3, 2, 117, 55, 0, 108, 116, 114, 97, 8, 2, 21, 3, 4,
-			117, 55, 47, 34, 35, 0, 4, 1, 21, 2, 100, 97, 32, 3, 6, 57, 134, 0, 1, 102, 2, 103, 97, 108, 0, 2, 17, 67, 105, 17,
-			65, 0, 2, 115, 105, 111, 110, 0, 2, 116, 105, 111, 110, 0, 4, 1, 108, 2, 115, 105, 111, 110, 3, 6, 134, 0, 1, 114, 2, 17,
-			67, 105, 17, 65, 0, 1, 114, 2, 115, 105, 111, 110, 0, 1, 115, 2, 17, 67, 17, 65, 32, 0, 2, 103, 97, 32, 0, 2, 107, 105,
-			32, 0, 2, 109, 97, 32, 0, 2, 109, 111, 32, 0, 2, 122, 122, 105, 32, 0, 121, 2, 17, 65, 32, 3, 6, 134, 57, 0, 4, 1,
-			10, 2, 108, 111, 117, 115, 32, 3, 8, 57, 117, 0, 1, 21, 2, 108, 97, 32, 0, 1, 21, 2, 108, 97, 114, 0, 1, 21, 2, 108,
-			97, 116, 101, 0, 1, 21, 2, 108, 117, 109, 0, 108, 105, 1, 21, 2, 32, 3, 8, 57, 117, 55, 137, 0, 2, 97, 32, 3, 8, 57,
-			134, 0, 111, 117, 115, 1, 21, 3, 8, 57, 134, 13, 89, 0, 1, 104, 2, 32, 3, 8, 134, 0, 111, 117, 115, 1, 18, 66, 21, 3,
-			8, 134, 13, 89, 0, 108, 108, 121, 1, 102, 10, 2, 32, 3, 13, 55, 2, 122, 0, 109, 1, 114, 2, 101, 110, 116, 3, 13, 65, 0,
-			103, 103, 101, 1, 115, 2, 115, 116, 3, 13, 75, 121, 0, 4, 115, 1, 10, 2, 32, 3, 13, 89, 0, 115, 1, 99, 111, 102, 0, 97,
-			1, 103, 2, 114, 17, 65, 3, 35, 0, 2, 108, 17, 65, 3, 57, 117, 0, 4, 1, 25, 2, 116, 114, 105, 3, 57, 134, 0, 1, 100,
-			2, 108, 121, 0, 1, 104, 2, 109, 97, 110, 0, 1, 108, 97, 118, 0, 1, 108, 108, 2, 108, 0, 1, 108, 111, 118, 2, 109, 0, 1,
-			110, 97, 109, 0, 1, 110, 101, 109, 2, 32, 0, 1, 115, 2, 108, 101, 32, 0, 2, 17, 67, 17, 65, 0, 2, 17, 67, 101, 17, 67,
-			111, 32, 0, 2, 32, 0, 2, 97, 0, 2, 97, 108, 32, 0, 2, 101, 115, 113, 0, 2, 105, 0, 2, 108, 101, 32, 0, 2, 109, 101,
-			0, 2, 111, 0, 2, 116, 121, 0, 8, 2, 116, 105, 108, 0, 8, 108, 111, 115, 2, 17, 67, 0, 103, 1, 112, 109, 2, 110, 0, 103,
-			104, 1, 104, 0, 117, 1, 99, 97, 118, 0, 117, 2, 109, 3, 57, 134, 13, 0, 97, 114, 121, 2, 32, 3, 57, 134, 13, 34, 2, 122,
-			0, 99, 108, 101, 1, 110, 3, 57, 134, 49, 55, 122, 0, 99, 108, 101, 97, 114, 1, 110, 3, 57, 134, 49, 55, 142, 0, 115, 8, 2,
-			17, 65, 3, 57, 134, 88, 0, 115, 117, 114, 112, 3, 57, 134, 88, 6, 128, 48, 0, 115, 117, 114, 112, 5, 5, 3, 57, 134, 88, 6,
-			148, 48, 0, 115, 117, 2, 97, 108, 3, 57, 134, 90, 134, 0, 1, 103, 2, 105, 3, 58, 0, 97, 1, 103, 21, 2, 103, 101, 3, 58,
-			122, 0, 97, 8, 103, 3, 58, 126, 0, 4, 97, 1, 115, 2, 100, 101, 3, 58, 138, 0, 97, 1, 115, 2, 115, 0, 97, 103, 1, 115,
-			3, 58, 138, 75, 0, 4, 1, 98, 2, 100, 100, 104, 3, 117, 0, 1, 98, 2, 115, 104, 0, 1, 98, 2, 116, 99, 104, 0, 1, 99,
-			2, 115, 104, 0, 1, 112, 2, 115, 104, 0, 1, 112, 2, 115, 115, 0, 8, 102, 2, 108, 17, 67, 0, 4, 108, 1, 98, 2, 114, 3,
-			117, 55, 0, 108, 1, 98, 2, 119, 0, 108, 108, 1, 98, 0, 108, 108, 1, 102, 0, 108, 108, 1, 112, 0, 108, 108, 121, 1, 98, 3,
-			117, 55, 122, 0, 4, 108, 1, 99, 105, 10, 2, 116, 32, 3, 118, 0, 108, 1, 102, 10, 2, 32, 0, 1, 116, 116, 101, 108, 2, 99,
-			101, 3, 122, 0, 4, 115, 1, 98, 2, 105, 17, 65, 3, 122, 88, 0, 115, 1, 98, 2, 121, 0, 115, 105, 110, 101, 115, 115, 1, 98,
-			3, 122, 88, 50, 13, 89, 0, 4, 3, 125, 0, 1, 102, 2, 108, 99, 114, 0, 1, 108, 2, 99, 107, 0, 2, 103, 117, 17, 67, 0,
-			2, 108, 117, 108, 0, 2, 115, 104, 0, 2, 120, 17, 65, 12, 0, 99, 117, 108, 3, 125, 49, 57, 117, 55, 0, 108, 5, 8, 1, 102,
-			10, 2, 32, 3, 125, 55, 0, 108, 108, 121, 5, 8, 1, 102, 10, 2, 32, 3, 125, 55, 2, 122, 0, 103, 1, 108, 112, 2, 17, 65,
-			3, 125, 81, 0, 120, 117, 114, 1, 108, 3, 125, 81, 90, 134, 114, 0, 115, 8, 2, 32, 3, 125, 88, 0, 97, 114, 1, 103, 2, 100,
-			3, 127, 0, 4, 1, 18, 66, 2, 32, 3, 134, 0, 1, 104, 99, 2, 17, 67, 17, 65, 0, 1, 104, 114, 2, 17, 67, 17, 65, 0,
-			1, 106, 2, 17, 67, 17, 65, 0, 1, 106, 2, 108, 105, 0, 1, 106, 10, 2, 17, 67, 17, 65, 0, 1, 108, 2, 17, 67, 17, 65,
-			0, 1, 108, 2, 97, 0, 1, 108, 2, 98, 114, 105, 0, 1, 114, 2, 17, 67, 17, 65, 0, 1, 114, 2, 97, 17, 67, 12, 0, 1,
-			114, 2, 105, 0, 1, 114, 2, 116, 104, 0, 1, 115, 2, 17, 67, 17, 65, 0, 1, 115, 2, 105, 0, 1, 119, 2, 17, 67, 17, 65,
-			0, 1, 119, 2, 99, 104, 17, 65, 0, 2, 17, 67, 117, 32, 0, 2, 32, 24, 0, 2, 108, 121, 0, 5, 3, 1, 100, 2, 17, 67,
-			17, 65, 0, 5, 3, 1, 100, 2, 116, 121, 0, 5, 3, 1, 110, 2, 17, 67, 17, 65, 0, 5, 3, 1, 116, 2, 17, 67, 17, 65,
-			12, 0, 5, 3, 1, 116, 2, 105, 0, 8, 2, 108, 17, 65, 0, 8, 108, 2, 97, 0, 8, 108, 2, 99, 0, 104, 2, 17, 67, 0,
-			97, 114, 121, 1, 114, 2, 32, 3, 134, 34, 2, 122, 0, 99, 108, 101, 5, 3, 1, 110, 3, 134, 49, 55, 122, 0, 99, 108, 101, 97,
-			114, 5, 3, 1, 110, 3, 134, 49, 55, 142, 0, 103, 2, 101, 114, 32, 3, 134, 81, 0, 121, 3, 137, 0, 111, 121, 3, 139, 0, 111,
-			114, 1, 108, 102, 3, 143, 0, 7, 6, 118, 0, 2, 118, 3, 0, 4, 3, 84, 0, 8, 2, 108, 97, 0, 105, 98, 114, 97, 8, 2,
-			116, 3, 84, 2, 137, 71, 34, 138, 0, 105, 118, 105, 2, 21, 3, 84, 122, 84, 122, 0, 105, 118, 2, 32, 3, 84, 137, 84, 0, 97,
-			1, 21, 2, 108, 101, 110, 3, 84, 138, 0, 101, 104, 101, 109, 8, 3, 84, 141, 65, 0, 7, 6, 119, 0, 4, 1, 109, 2, 105, 99,
-			104, 32, 3, 0, 4, 1, 115, 17, 65, 2, 105, 99, 107, 3, 0, 2, 119, 3, 0, 101, 1, 17, 67, 2, 32, 3, 8, 58, 122, 0,
-			4, 114, 3, 34, 0, 114, 8, 2, 17, 71, 0, 4, 3, 58, 0, 104, 0, 104, 8, 2, 17, 71, 0, 4, 105, 116, 104, 2, 17, 65,
-			3, 58, 2, 122, 86, 0, 105, 116, 104, 2, 17, 67, 0, 101, 115, 116, 1, 17, 67, 3, 58, 6, 121, 89, 47, 0, 105, 116, 104, 1,
-			101, 2, 32, 3, 58, 6, 122, 86, 0, 101, 114, 101, 8, 2, 14, 128, 132, 132, 3, 58, 6, 140, 23, 0, 1, 17, 67, 2, 32, 3,
-			58, 13, 0, 111, 111, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 58, 117, 72, 0, 105, 107, 105, 3, 58, 122, 49, 37, 0, 4, 105,
-			110, 103, 1, 17, 66, 2, 32, 3, 58, 122, 68, 0, 105, 110, 103, 1, 17, 66, 2, 115, 32, 0, 104, 105, 99, 104, 3, 58, 122, 76,
-			0, 105, 116, 104, 2, 101, 3, 58, 122, 86, 0, 104, 97, 116, 3, 58, 124, 47, 0, 4, 111, 114, 1, 115, 115, 2, 100, 3, 58, 128,
-			0, 111, 114, 2, 116, 104, 32, 0, 101, 2, 119, 3, 58, 129, 0, 105, 115, 101, 1, 21, 2, 32, 14, 128, 128, 132, 3, 58, 137, 88,
-			0, 97, 121, 1, 69, 2, 32, 14, 128, 128, 131, 3, 58, 138, 0, 104, 101, 114, 101, 3, 58, 140, 0, 4, 111, 114, 5, 5, 1, 115,
-			115, 2, 100, 3, 58, 148, 0, 111, 114, 5, 5, 2, 116, 104, 32, 0, 104, 2, 111, 108, 3, 107, 0, 4, 104, 111, 2, 32, 3, 107,
-			134, 0, 104, 111, 2, 100, 0, 104, 111, 2, 109, 0, 104, 111, 2, 115, 0, 104, 111, 39, 0, 1, 17, 67, 2, 29, 3, 117, 0, 111,
-			114, 1, 115, 2, 100, 3, 133, 0, 7, 6, 120, 0, 1, 120, 2, 17, 65, 3, 0, 105, 115, 2, 32, 3, 8, 49, 89, 122, 89, 0,
-			105, 111, 117, 115, 3, 8, 49, 91, 13, 89, 0, 117, 2, 97, 3, 8, 49, 91, 134, 0, 3, 49, 89, 0, 117, 114, 101, 2, 32, 3,
-			49, 91, 2, 143, 0, 105, 111, 2, 110, 3, 49, 91, 13, 0, 8, 2, 17, 71, 3, 88, 0, 121, 8, 3, 88, 137, 0, 7, 6, 121,
-			0, 1, 10, 2, 32, 24, 3, 2, 37, 0, 111, 117, 39, 3, 2, 57, 134, 0, 4, 1, 10, 2, 32, 3, 2, 122, 0, 1, 17, 67,
-			0, 1, 102, 17, 65, 11, 2, 32, 0, 1, 102, 17, 67, 2, 32, 0, 1, 104, 2, 112, 111, 99, 114, 0, 4, 2, 17, 67, 105, 99,
-			32, 3, 6, 122, 0, 2, 17, 67, 105, 99, 97, 108, 0, 2, 17, 67, 105, 102, 121, 0, 2, 110, 97, 32, 3, 6, 129, 0, 4, 1,
-			21, 2, 114, 97, 32, 3, 6, 137, 0, 2, 112, 97, 108, 0, 115, 105, 115, 1, 10, 2, 32, 3, 8, 13, 89, 122, 89, 0, 1, 107,
-			115, 10, 2, 32, 3, 8, 37, 0, 1, 17, 67, 10, 2, 108, 101, 110, 101, 32, 3, 8, 122, 0, 4, 1, 45, 2, 45, 3, 13, 0,
-			114, 2, 32, 0, 1, 17, 66, 11, 2, 32, 24, 14, 128, 144, 129, 3, 37, 0, 4, 3, 57, 0, 2, 97, 114, 0, 2, 101, 97, 114,
-			0, 2, 105, 17, 67, 32, 0, 97, 110, 103, 3, 57, 6, 35, 68, 0, 39, 8, 2, 17, 67, 14, 128, 132, 130, 3, 57, 13, 0, 101,
-			115, 8, 3, 57, 121, 89, 0, 101, 97, 104, 3, 57, 121, 107, 0, 117, 2, 21, 3, 57, 134, 0, 101, 111, 2, 17, 67, 3, 57, 136,
-			0, 8, 2, 32, 3, 58, 137, 0, 1, 17, 67, 2, 97, 98, 108, 3, 113, 0, 114, 105, 110, 103, 1, 115, 3, 113, 34, 122, 50, 75,
-			0, 4, 1, 17, 66, 11, 2, 32, 14, 128, 144, 129, 3, 122, 0, 1, 17, 66, 111, 29, 2, 21, 12, 0, 1, 17, 67, 2, 105, 0,
-			1, 17, 67, 17, 67, 2, 110, 32, 0, 1, 17, 67, 21, 2, 103, 101, 110, 0, 1, 17, 67, 21, 2, 109, 17, 65, 110, 32, 0, 1,
-			99, 2, 108, 105, 110, 0, 1, 99, 2, 110, 105, 0, 1, 99, 2, 114, 0, 1, 99, 105, 98, 2, 99, 108, 0, 1, 102, 102, 2, 32,
-			0, 1, 108, 2, 114, 105, 0, 1, 108, 102, 2, 110, 0, 1, 108, 103, 2, 99, 101, 114, 0, 1, 108, 103, 2, 112, 104, 0, 1, 112,
-			2, 114, 97, 0, 1, 112, 2, 114, 105, 0, 1, 116, 2, 112, 105, 99, 0, 1, 116, 2, 114, 97, 110, 110, 0, 1, 119, 2, 110, 0,
-			2, 17, 67, 0, 2, 17, 67, 17, 67, 0, 2, 17, 67, 32, 0, 2, 115, 116, 0, 5, 35, 1, 100, 2, 110, 97, 115, 0, 8, 2,
-			17, 67, 21, 0, 8, 115, 0, 101, 105, 103, 104, 116, 1, 116, 2, 32, 3, 122, 6, 138, 47, 0, 116, 119, 111, 1, 116, 2, 32, 3,
-			122, 47, 6, 134, 0, 112, 111, 99, 114, 105, 1, 104, 2, 116, 3, 122, 48, 13, 49, 34, 122, 0, 120, 1, 17, 67, 2, 32, 3, 122,
-			49, 89, 0, 110, 99, 104, 1, 115, 3, 122, 50, 49, 0, 111, 110, 101, 1, 116, 2, 32, 3, 122, 58, 6, 124, 50, 0, 111, 110, 101,
-			5, 6, 1, 116, 2, 32, 3, 122, 58, 6, 125, 50, 0, 102, 111, 117, 114, 1, 116, 2, 32, 3, 122, 83, 6, 133, 0, 102, 105, 118,
-			101, 1, 116, 2, 32, 3, 122, 83, 6, 137, 84, 0, 115, 1, 104, 112, 2, 105, 3, 122, 88, 0, 115, 101, 118, 101, 110, 1, 116, 2,
-			32, 3, 122, 89, 6, 121, 84, 13, 50, 0, 115, 101, 1, 100, 2, 110, 3, 122, 89, 13, 0, 4, 8, 2, 110, 21, 3, 125, 0, 8,
-			2, 115, 21, 0, 4, 1, 17, 67, 21, 2, 17, 66, 101, 13, 3, 137, 0, 1, 17, 67, 29, 0, 1, 98, 101, 114, 101, 2, 32, 0,
-			1, 98, 114, 97, 101, 2, 32, 0, 1, 99, 2, 99, 108, 0, 1, 99, 2, 99, 108, 105, 99, 32, 0, 1, 102, 2, 32, 0, 1, 102,
-			115, 2, 32, 0, 1, 104, 2, 17, 67, 114, 0, 1, 104, 116, 2, 108, 32, 0, 1, 107, 2, 108, 32, 0, 1, 108, 101, 98, 2, 32,
-			0, 1, 108, 102, 0, 1, 110, 2, 108, 32, 0, 1, 110, 101, 100, 2, 32, 0, 1, 112, 2, 116, 104, 0, 1, 116, 2, 108, 32, 0,
-			1, 116, 2, 112, 32, 0, 1, 116, 2, 112, 105, 115, 116, 0, 1, 116, 115, 2, 114, 101, 0, 2, 17, 66, 101, 13, 0, 2, 32, 0,
-			2, 101, 114, 32, 0, 2, 108, 117, 109, 0, 2, 116, 104, 101, 32, 0, 8, 17, 67, 0, 8, 17, 67, 2, 17, 67, 101, 0, 8, 17,
-			67, 2, 112, 104, 0, 8, 17, 67, 115, 0, 8, 98, 2, 12, 0, 101, 2, 32, 0, 116, 101, 2, 32, 3, 137, 47, 0, 112, 101, 1,
-			116, 3, 137, 48, 0, 110, 97, 109, 1, 100, 3, 137, 50, 35, 65, 0, 4, 101, 115, 1, 17, 67, 2, 32, 3, 137, 88, 0, 115, 101,
-			2, 32, 12, 0, 4, 115, 101, 100, 2, 32, 3, 137, 88, 72, 0, 122, 101, 100, 2, 32, 0, 115, 105, 110, 103, 2, 32, 3, 137, 88,
-			113, 68, 0, 114, 101, 2, 32, 3, 145, 0, 7, 6, 122, 0, 2, 122, 3, 0, 117, 2, 32, 3, 8, 88, 134, 0, 4, 3, 88, 0,
-			8, 2, 108, 111, 116, 0, 8, 2, 119, 17, 71, 0, 115, 8, 2, 17, 71, 0, 97, 108, 101, 115, 1, 21, 2, 32, 3, 88, 6, 126,
-			55, 13, 89, 0, 117, 101, 3, 88, 58, 6, 138, 0, 101, 115, 2, 32, 3, 88, 113, 88, 0, 111, 2, 111, 108, 111, 3, 88, 134, 0,
-			4, 104, 3, 90, 0, 104, 8, 2, 17, 71, 0, 117, 114, 101, 3, 90, 114, 0, 7, 6, 206, 0, 4, 172, 3, 6, 35, 55, 83, 13,
-			10, 0, 177, 0, 4, 173, 3, 6, 121, 48, 89, 122, 55, 124, 50, 10, 0, 181, 0, 4, 174, 3, 6, 129, 47, 13, 10, 0, 183, 0,
-			191, 3, 6, 136, 65, 122, 49, 34, 124, 50, 10, 0, 186, 3, 49, 6, 35, 48, 13, 10, 0, 190, 3, 49, 89, 6, 137, 10, 0, 189,
-			3, 50, 6, 57, 134, 10, 0, 187, 3, 55, 6, 35, 65, 72, 13, 10, 0, 188, 3, 65, 6, 57, 134, 10, 0, 178, 3, 71, 6, 129,
-			47, 13, 10, 0, 178, 5, 3, 3, 71, 6, 138, 47, 13, 10, 0, 180, 3, 72, 6, 121, 55, 47, 13, 10, 0, 179, 3, 81, 6, 35,
-			65, 13, 10, 0, 184, 3, 87, 6, 129, 47, 13, 10, 0, 182, 3, 88, 6, 129, 47, 13, 10, 0, 4, 175, 3, 137, 6, 136, 47, 13,
-			10, 0, 185, 0, 7, 6, 207, 0, 4, 133, 3, 6, 117, 48, 89, 122, 55, 124, 50, 10, 0, 141, 0, 140, 3, 6, 136, 65, 122, 49,
-			34, 124, 50, 10, 0, 4, 137, 3, 6, 136, 65, 122, 81, 13, 10, 0, 142, 0, 129, 3, 34, 6, 136, 10, 0, 132, 3, 47, 6, 135,
-			10, 0, 128, 3, 48, 6, 137, 10, 0, 136, 3, 48, 89, 6, 137, 10, 0, 135, 3, 76, 6, 137, 10, 0, 134, 3, 83, 6, 137, 10,
-			0, 4, 130, 3, 89, 6, 122, 81, 65, 13, 10, 0, 131, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 4, 39, 3, 0, 4, 46, 1,
-			46, 3, 0, 58, 1, 32, 15, 2, 32, 15, 15, 32, 3, 0, 195, 169, 8, 3, 2, 122, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9,
-			121, 49, 89, 49, 55, 13, 65, 138, 91, 13, 50, 9, 0, 45, 8, 2, 32, 15, 3, 10, 0, 195, 177, 3, 21, 101, 115, 0, 195, 160,
-			3, 35, 0, 58, 3, 49, 136, 55, 13, 50, 0, 33, 61, 3, 50, 124, 47, 129, 49, 58, 118, 88, 0, 60, 61, 3, 55, 121, 89, 132,
-			129, 49, 58, 118, 0, 45, 8, 32, 2, 32, 15, 3, 65, 137, 50, 13, 89, 0, 45, 1, 32, 15, 2, 32, 15, 3, 72, 35, 91, 0,
-			46, 3, 72, 124, 47, 0, 36, 3, 72, 124, 55, 114, 0, 196, 141, 3, 76, 0, 62, 61, 3, 81, 34, 138, 47, 13, 132, 129, 49, 58,
-			118, 0, 195, 176, 3, 86, 0, 195, 190, 3, 87, 0, 4, 195, 159, 3, 89, 0, 195, 167, 0, 197, 190, 3, 90, 0, 4, 197, 159, 3,
-			91, 0, 197, 161, 0, 4, 195, 164, 3, 121, 0, 195, 171, 0, 195, 170, 3, 121, 12, 0, 195, 182, 3, 128, 0, 4, 195, 169, 101, 3,
-			129, 0, 195, 175, 0, 195, 188, 3, 134, 0, 195, 169, 3, 138, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts14 = FileInMemory_createWithData (94547, reinterpret_cast<const char *> (&espeakdata_dicts14_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/en_dict", 
+			0, 2, 118, 101, 0, 2, 122, 0, 8, 114, 0, 8, 122, 0, 104, 2, 17, 67, 0, 115, 115, 97, 3, 132, 6, 122, 89, 13, 0, 115,
+			116, 97, 3, 132, 6, 122, 89, 47, 13, 0, 106, 3, 132, 6, 141, 0, 8, 118, 2, 116, 3, 132, 13, 6, 0, 103, 2, 101, 13, 3,
+			132, 75, 0, 4, 115, 1, 99, 101, 112, 115, 2, 32, 3, 132, 88, 0, 115, 1, 114, 101, 115, 2, 32, 0, 105, 2, 32, 3, 132, 140,
+			0, 117, 1, 108, 3, 137, 0, 117, 116, 101, 5, 3, 1, 108, 3, 137, 47, 6, 122, 0, 4, 1, 112, 2, 32, 3, 140, 0, 2, 32,
+			0, 2, 99, 0, 8, 116, 2, 17, 66, 0, 8, 116, 103, 111, 104, 0, 5, 8, 8, 99, 115, 2, 110, 3, 140, 119, 0, 4, 1, 10,
+			2, 116, 32, 3, 144, 0, 1, 21, 2, 116, 104, 0, 2, 110, 0, 4, 114, 3, 145, 0, 114, 2, 99, 0, 4, 1, 99, 115, 2, 110,
+			99, 3, 147, 0, 1, 108, 99, 2, 110, 116, 0, 2, 110, 116, 105, 17, 67, 0, 2, 116, 0, 8, 99, 115, 2, 110, 0, 4, 8, 104,
+			2, 114, 3, 148, 0, 114, 1, 108, 112, 2, 32, 0, 114, 8, 114, 17, 67, 0, 7, 6, 105, 103, 0, 110, 1, 115, 2, 111, 3, 2,
+			124, 50, 57, 0, 4, 2, 110, 111, 3, 2, 124, 81, 0, 8, 2, 110, 105, 0, 8, 109, 2, 114, 97, 116, 3, 2, 140, 81, 0, 110,
+			101, 2, 32, 3, 6, 132, 50, 0, 4, 117, 2, 32, 3, 6, 132, 81, 0, 117, 2, 101, 0, 97, 110, 1, 110, 2, 32, 3, 8, 124,
+			81, 13, 50, 0, 110, 111, 110, 2, 32, 3, 37, 50, 57, 126, 50, 0, 101, 111, 3, 124, 75, 13, 0, 105, 98, 1, 10, 3, 124, 75,
+			13, 71, 0, 4, 1, 100, 2, 110, 17, 65, 3, 124, 81, 0, 2, 110, 97, 0, 2, 110, 111, 109, 0, 110, 111, 2, 114, 97, 110, 3,
+			124, 81, 50, 114, 0, 1, 109, 97, 2, 97, 32, 3, 132, 81, 0, 4, 1, 21, 2, 110, 32, 3, 140, 0, 1, 21, 2, 110, 101, 0,
+			104, 1, 104, 0, 104, 1, 110, 0, 104, 1, 115, 0, 104, 2, 116, 0, 4, 110, 2, 17, 67, 3, 140, 50, 0, 110, 2, 32, 0, 109,
+			2, 32, 3, 140, 65, 0, 4, 1, 116, 2, 101, 12, 3, 140, 81, 0, 8, 109, 2, 114, 97, 0, 8, 116, 2, 114, 0, 7, 6, 105,
+			108, 0, 8, 2, 108, 21, 3, 2, 124, 55, 0, 8, 100, 2, 97, 116, 3, 2, 140, 55, 0, 4, 97, 1, 21, 2, 32, 3, 6, 124,
+			55, 13, 0, 108, 97, 1, 21, 2, 32, 0, 111, 113, 117, 105, 3, 6, 124, 55, 13, 49, 58, 124, 0, 4, 2, 105, 115, 101, 3, 13,
+			55, 0, 2, 105, 122, 101, 0, 101, 1, 10, 2, 103, 101, 3, 13, 55, 124, 0, 121, 1, 10, 2, 32, 14, 128, 130, 130, 3, 55, 2,
+			124, 0, 4, 1, 99, 17, 67, 21, 2, 32, 3, 118, 0, 1, 112, 21, 2, 32, 0, 1, 114, 21, 2, 32, 0, 1, 115, 21, 2, 32,
+			0, 1, 116, 110, 2, 32, 0, 1, 118, 21, 2, 32, 0, 101, 5, 3, 1, 10, 2, 32, 28, 18, 0, 4, 1, 104, 99, 2, 100, 114,
+			3, 124, 55, 0, 1, 119, 2, 100, 101, 114, 17, 67, 0, 2, 101, 17, 65, 0, 8, 2, 108, 110, 0, 8, 2, 108, 117, 115, 116, 0,
+			101, 1, 114, 99, 97, 115, 3, 124, 55, 124, 0, 108, 97, 114, 100, 1, 10, 2, 32, 3, 132, 121, 0, 4, 1, 17, 67, 2, 101, 114,
+			3, 140, 55, 0, 1, 104, 99, 2, 100, 0, 1, 108, 2, 97, 104, 32, 0, 1, 115, 2, 101, 110, 0, 8, 17, 67, 2, 97, 103, 101,
+			0, 8, 17, 67, 2, 111, 0, 8, 109, 2, 100, 0, 8, 119, 2, 100, 0, 7, 6, 105, 109, 0, 4, 8, 2, 21, 3, 2, 124, 65,
+			0, 8, 2, 112, 101, 114, 17, 67, 21, 14, 128, 132, 130, 0, 8, 2, 112, 114, 101, 21, 14, 128, 132, 130, 0, 109, 8, 2, 21, 0,
+			4, 2, 112, 101, 99, 117, 3, 4, 124, 65, 0, 2, 112, 111, 114, 116, 117, 0, 2, 112, 114, 101, 115, 97, 0, 109, 2, 97, 116, 0,
+			109, 2, 101, 109, 0, 105, 108, 101, 1, 115, 3, 6, 124, 65, 113, 55, 124, 0, 1, 104, 115, 2, 97, 32, 3, 6, 132, 65, 0, 111,
+			117, 115, 1, 21, 2, 32, 3, 8, 124, 65, 13, 89, 0, 105, 110, 101, 1, 10, 2, 32, 3, 8, 124, 65, 132, 50, 0, 109, 117, 8,
+			2, 110, 111, 3, 113, 65, 57, 137, 0, 4, 1, 21, 2, 101, 116, 114, 3, 124, 65, 0, 2, 101, 110, 116, 12, 0, 2, 105, 116, 0,
+			2, 112, 97, 99, 0, 2, 112, 101, 116, 117, 115, 0, 2, 112, 108, 97, 110, 116, 32, 0, 2, 112, 108, 101, 0, 2, 112, 108, 105, 99,
+			97, 0, 2, 112, 114, 111, 118, 105, 115, 0, 2, 112, 117, 108, 115, 101, 32, 0, 2, 117, 109, 0, 109, 2, 105, 103, 0, 109, 2, 105,
+			110, 0, 109, 2, 117, 110, 105, 18, 71, 0, 101, 2, 110, 116, 111, 3, 124, 65, 6, 122, 0, 109, 111, 2, 98, 105, 3, 124, 65, 6,
+			139, 0, 112, 111, 2, 116, 101, 110, 3, 124, 65, 48, 13, 0, 112, 114, 101, 103, 5, 35, 2, 110, 97, 116, 3, 124, 65, 48, 34, 4,
+			122, 81, 0, 112, 114, 101, 103, 3, 124, 65, 48, 34, 6, 122, 81, 0, 97, 103, 2, 101, 13, 3, 124, 65, 113, 75, 0, 4, 101, 2,
+			116, 101, 114, 32, 3, 124, 65, 132, 0, 101, 2, 116, 114, 101, 0, 1, 10, 2, 32, 3, 125, 65, 0, 4, 1, 108, 99, 3, 140, 65,
+			0, 5, 3, 1, 115, 2, 117, 108, 116, 0, 8, 114, 112, 2, 97, 0, 98, 1, 108, 99, 0, 7, 6, 105, 110, 0, 8, 2, 110, 101,
+			114, 118, 12, 14, 128, 132, 130, 3, 2, 124, 0, 4, 8, 2, 21, 14, 128, 132, 130, 3, 2, 124, 50, 0, 8, 2, 99, 111, 114, 112,
+			0, 8, 2, 99, 114, 101, 100, 0, 8, 2, 115, 116, 105, 108, 0, 8, 2, 116, 101, 103, 114, 105, 0, 110, 8, 2, 117, 109, 0, 4,
+			116, 8, 2, 101, 114, 105, 111, 12, 3, 2, 124, 50, 47, 0, 116, 8, 2, 101, 114, 109, 105, 110, 12, 0, 116, 101, 114, 8, 2, 114,
+			111, 103, 3, 2, 124, 50, 47, 122, 0, 4, 116, 101, 114, 8, 2, 110, 25, 3, 2, 124, 50, 47, 131, 0, 116, 101, 114, 8, 2, 110,
+			97, 108, 0, 116, 101, 114, 8, 2, 112, 111, 108, 21, 0, 116, 101, 114, 8, 2, 112, 114, 0, 116, 101, 114, 112, 114, 101, 2, 116, 3,
+			2, 124, 50, 47, 131, 48, 34, 124, 0, 100, 8, 2, 101, 102, 105, 110, 3, 2, 124, 50, 72, 0, 102, 114, 97, 8, 2, 99, 3, 2,
+			124, 50, 83, 34, 35, 0, 102, 97, 8, 2, 108, 3, 2, 124, 50, 83, 35, 0, 4, 103, 1, 21, 2, 32, 12, 14, 128, 153, 131, 3,
+			2, 124, 68, 0, 103, 1, 108, 101, 2, 32, 12, 14, 128, 152, 131, 0, 103, 1, 109, 111, 21, 21, 2, 32, 14, 128, 152, 131, 0, 103,
+			1, 110, 101, 2, 32, 14, 128, 136, 131, 0, 103, 1, 114, 17, 66, 10, 2, 32, 0, 103, 1, 114, 101, 2, 32, 14, 128, 136, 131, 0,
+			103, 1, 114, 117, 101, 2, 32, 14, 128, 136, 131, 0, 103, 1, 117, 103, 111, 108, 2, 32, 14, 128, 136, 132, 0, 103, 1, 120, 10, 2,
+			32, 12, 14, 128, 136, 131, 0, 4, 103, 108, 121, 1, 21, 2, 32, 14, 128, 153, 133, 3, 2, 124, 68, 55, 2, 124, 0, 103, 108, 121,
+			1, 110, 101, 2, 32, 14, 128, 168, 133, 0, 103, 108, 121, 1, 114, 101, 2, 32, 14, 128, 168, 133, 0, 4, 103, 109, 101, 110, 116, 1,
+			21, 2, 32, 14, 128, 153, 135, 3, 2, 124, 68, 65, 13, 50, 47, 0, 103, 109, 101, 110, 116, 1, 114, 101, 2, 32, 14, 128, 136, 135,
+			0, 4, 103, 115, 1, 110, 101, 2, 32, 14, 128, 136, 132, 3, 2, 124, 68, 88, 0, 103, 115, 1, 114, 101, 2, 32, 14, 128, 136, 132,
+			0, 4, 8, 2, 100, 101, 14, 128, 132, 130, 3, 4, 124, 50, 0, 8, 2, 100, 105, 115, 14, 128, 132, 130, 0, 8, 2, 100, 105, 118,
+			14, 128, 132, 130, 0, 8, 2, 101, 120, 14, 128, 132, 130, 0, 8, 2, 115, 101, 99, 14, 128, 132, 130, 0, 8, 2, 115, 105, 103, 110,
+			105, 102, 14, 128, 132, 130, 0, 8, 2, 115, 105, 110, 99, 14, 128, 132, 130, 0, 116, 101, 114, 8, 2, 17, 65, 14, 128, 132, 133, 3,
+			4, 124, 50, 47, 13, 34, 0, 116, 114, 111, 8, 2, 21, 3, 4, 124, 50, 47, 34, 13, 0, 116, 101, 114, 8, 2, 21, 14, 128, 132,
+			133, 3, 4, 124, 50, 47, 114, 0, 102, 114, 97, 8, 2, 14, 128, 132, 133, 3, 4, 124, 50, 83, 34, 13, 0, 102, 111, 8, 2, 116,
+			3, 4, 124, 50, 83, 139, 0, 1, 21, 2, 99, 105, 97, 108, 3, 6, 124, 50, 0, 100, 97, 1, 21, 2, 32, 3, 6, 124, 50, 72,
+			13, 0, 2, 103, 97, 32, 3, 6, 124, 68, 0, 4, 1, 98, 2, 97, 32, 3, 6, 132, 50, 0, 1, 104, 112, 2, 97, 32, 0, 1,
+			107, 2, 97, 32, 0, 1, 108, 2, 97, 32, 0, 1, 114, 2, 97, 32, 0, 1, 116, 2, 97, 32, 0, 105, 1, 21, 2, 32, 3, 6,
+			132, 50, 124, 0, 111, 2, 32, 3, 6, 132, 50, 139, 0, 4, 1, 112, 115, 2, 97, 108, 32, 3, 6, 140, 50, 0, 2, 97, 108, 32,
+			28, 17, 0, 105, 110, 1, 10, 2, 32, 3, 8, 13, 50, 124, 50, 0, 1, 109, 10, 2, 97, 108, 32, 3, 8, 124, 50, 0, 111, 117,
+			115, 1, 21, 2, 32, 3, 8, 124, 50, 13, 89, 0, 1, 21, 2, 97, 116, 101, 3, 8, 125, 50, 0, 4, 1, 115, 97, 98, 2, 32,
+			3, 13, 50, 0, 5, 7, 1, 10, 2, 32, 0, 101, 115, 115, 1, 103, 2, 32, 14, 128, 130, 132, 3, 50, 13, 89, 0, 103, 115, 1,
+			21, 2, 32, 14, 136, 128, 129, 3, 88, 0, 4, 1, 109, 97, 120, 2, 101, 3, 113, 50, 0, 8, 2, 105, 109, 0, 101, 1, 109, 114,
+			101, 2, 32, 0, 4, 116, 114, 97, 8, 2, 99, 116, 3, 113, 50, 47, 34, 35, 0, 116, 114, 97, 8, 2, 110, 115, 0, 97, 8, 102,
+			2, 103, 108, 3, 113, 50, 141, 0, 4, 1, 10, 2, 101, 110, 17, 67, 3, 124, 50, 0, 1, 99, 2, 101, 0, 1, 99, 110, 105, 2,
+			101, 0, 1, 103, 2, 101, 0, 1, 107, 2, 100, 101, 114, 17, 67, 0, 1, 107, 2, 100, 108, 0, 1, 107, 2, 100, 114, 0, 1, 114,
+			116, 2, 105, 0, 2, 100, 101, 120, 0, 2, 100, 105, 97, 0, 2, 101, 97, 0, 2, 101, 101, 0, 2, 101, 115, 99, 0, 2, 102, 105,
+			110, 105, 116, 101, 0, 2, 115, 101, 99, 116, 0, 8, 2, 98, 0, 8, 2, 99, 97, 110, 0, 8, 2, 99, 101, 110, 115, 0, 8, 2,
+			99, 104, 0, 8, 2, 99, 111, 109, 17, 65, 0, 8, 2, 99, 114, 101, 0, 8, 2, 99, 117, 98, 0, 8, 2, 99, 117, 108, 0, 8,
+			2, 100, 105, 99, 0, 8, 2, 100, 105, 103, 111, 0, 8, 2, 100, 111, 108, 0, 8, 2, 102, 105, 100, 0, 8, 2, 102, 105, 108, 0,
+			8, 2, 102, 108, 111, 0, 8, 2, 102, 108, 117, 0, 8, 2, 102, 111, 32, 0, 8, 2, 106, 117, 114, 0, 8, 2, 108, 0, 8, 2,
+			109, 0, 8, 2, 111, 114, 103, 0, 8, 2, 112, 0, 8, 2, 113, 117, 101, 0, 8, 2, 113, 117, 105, 115, 0, 8, 2, 114, 0, 8,
+			2, 115, 101, 116, 0, 8, 2, 115, 104, 0, 8, 2, 115, 105, 103, 104, 0, 8, 2, 115, 111, 102, 0, 8, 2, 115, 111, 108, 97, 0,
+			8, 2, 115, 111, 108, 101, 0, 8, 2, 115, 111, 109, 117, 0, 8, 2, 115, 112, 105, 114, 0, 8, 2, 115, 116, 97, 103, 0, 8, 2,
+			115, 116, 97, 110, 0, 8, 2, 115, 116, 105, 0, 8, 2, 115, 116, 114, 117, 109, 0, 8, 2, 115, 117, 108, 0, 8, 2, 116, 101, 103,
+			0, 8, 2, 116, 105, 109, 97, 0, 8, 2, 116, 111, 110, 97, 0, 8, 2, 117, 110, 0, 8, 2, 118, 111, 105, 0, 8, 2, 119, 97,
+			0, 101, 1, 108, 97, 110, 2, 32, 0, 101, 1, 108, 117, 2, 32, 0, 101, 2, 32, 28, 18, 0, 110, 8, 2, 25, 0, 110, 8, 2,
+			101, 114, 0, 101, 120, 8, 2, 111, 114, 3, 124, 50, 6, 122, 49, 89, 0, 4, 105, 1, 102, 21, 2, 116, 101, 3, 124, 50, 13, 0,
+			110, 111, 8, 2, 99, 101, 0, 110, 111, 8, 2, 118, 0, 101, 114, 97, 1, 109, 2, 108, 3, 124, 50, 13, 34, 13, 0, 116, 101, 2,
+			108, 108, 101, 99, 3, 124, 50, 47, 13, 0, 116, 101, 114, 102, 101, 114, 3, 124, 50, 47, 13, 83, 6, 145, 0, 116, 101, 114, 8, 2,
+			101, 115, 116, 3, 124, 50, 47, 34, 0, 116, 114, 105, 103, 117, 3, 124, 50, 47, 34, 6, 132, 81, 0, 4, 116, 114, 97, 8, 3, 124,
+			50, 47, 34, 13, 0, 116, 114, 111, 8, 2, 118, 0, 116, 114, 105, 99, 97, 3, 124, 50, 47, 34, 124, 49, 13, 0, 116, 101, 114, 2,
+			118, 105, 101, 119, 3, 124, 50, 47, 114, 0, 99, 114, 101, 109, 3, 124, 50, 49, 34, 124, 65, 0, 101, 119, 8, 115, 3, 124, 50, 57,
+			137, 0, 100, 101, 108, 105, 8, 2, 98, 3, 124, 50, 72, 6, 122, 55, 13, 0, 100, 105, 8, 2, 103, 101, 110, 3, 124, 50, 72, 6,
+			124, 0, 100, 105, 103, 101, 8, 2, 115, 3, 124, 50, 72, 124, 75, 6, 122, 0, 103, 1, 114, 102, 110, 3, 124, 50, 75, 0, 4, 102,
+			97, 8, 2, 109, 3, 124, 50, 83, 13, 0, 102, 97, 8, 2, 110, 116, 25, 0, 102, 111, 114, 2, 109, 97, 116, 105, 111, 3, 124, 50,
+			83, 114, 0, 99, 105, 2, 100, 101, 3, 124, 50, 89, 124, 0, 115, 117, 98, 8, 3, 124, 50, 89, 129, 71, 0, 4, 105, 1, 109, 100,
+			97, 3, 124, 50, 124, 0, 105, 8, 109, 0, 117, 116, 101, 8, 109, 2, 109, 3, 124, 50, 124, 47, 0, 105, 97, 116, 117, 114, 1, 109,
+			3, 124, 50, 124, 76, 114, 0, 105, 115, 109, 2, 32, 3, 124, 50, 124, 88, 13, 65, 0, 101, 1, 118, 2, 103, 3, 124, 50, 125, 0,
+			4, 2, 103, 111, 116, 3, 124, 68, 0, 8, 2, 103, 114, 111, 0, 8, 2, 107, 0, 1, 21, 2, 97, 116, 105, 111, 110, 3, 125, 50,
+			0, 4, 101, 1, 99, 21, 2, 32, 3, 132, 50, 0, 101, 1, 100, 10, 2, 32, 0, 101, 1, 104, 99, 17, 65, 2, 32, 0, 101, 1,
+			104, 112, 2, 32, 0, 101, 1, 108, 105, 2, 32, 0, 101, 1, 108, 111, 2, 32, 0, 101, 1, 114, 21, 2, 32, 0, 101, 1, 116, 21,
+			2, 32, 0, 101, 1, 122, 2, 32, 0, 4, 1, 98, 2, 100, 3, 140, 50, 0, 1, 102, 2, 97, 0, 1, 102, 2, 100, 0, 1, 103,
+			21, 2, 97, 32, 0, 1, 104, 2, 100, 17, 66, 0, 1, 104, 2, 100, 32, 0, 1, 104, 99, 2, 97, 0, 1, 104, 101, 98, 2, 100,
+			0, 1, 104, 115, 2, 105, 0, 1, 107, 2, 100, 0, 1, 108, 98, 2, 100, 0, 1, 109, 2, 100, 0, 1, 114, 103, 2, 100, 0, 1,
+			119, 2, 100, 101, 114, 32, 0, 1, 119, 2, 100, 105, 110, 103, 0, 1, 119, 101, 114, 2, 100, 0, 1, 119, 110, 117, 2, 100, 0, 8,
+			114, 2, 100, 0, 101, 1, 112, 2, 32, 0, 101, 1, 114, 99, 2, 32, 0, 101, 1, 116, 110, 101, 21, 21, 2, 32, 0, 117, 8, 109,
+			2, 116, 101, 3, 140, 50, 6, 57, 137, 0, 7, 6, 105, 111, 0, 110, 101, 1, 21, 2, 32, 3, 6, 147, 50, 37, 0, 117, 115, 1,
+			103, 3, 8, 13, 89, 0, 117, 115, 1, 21, 3, 8, 113, 13, 89, 0, 1, 10, 2, 32, 3, 8, 113, 139, 0, 110, 5, 8, 1, 10,
+			2, 32, 3, 8, 124, 129, 50, 0, 5, 7, 1, 10, 2, 32, 3, 8, 132, 139, 0, 4, 110, 1, 10, 2, 32, 3, 8, 144, 50, 0,
+			110, 1, 108, 108, 2, 32, 0, 110, 1, 110, 0, 4, 1, 103, 2, 110, 12, 3, 13, 0, 1, 104, 115, 2, 110, 0, 117, 2, 114, 17,
+			65, 3, 57, 13, 0, 4, 114, 1, 10, 2, 32, 3, 57, 114, 0, 114, 1, 10, 2, 97, 108, 32, 0, 117, 114, 2, 25, 0, 2, 108,
+			105, 32, 3, 113, 6, 139, 0, 1, 109, 2, 110, 3, 113, 126, 0, 1, 100, 114, 97, 99, 3, 113, 139, 0, 114, 105, 116, 121, 3, 124,
+			6, 126, 34, 113, 47, 2, 124, 0, 2, 116, 29, 3, 124, 13, 0, 114, 1, 114, 2, 32, 3, 124, 114, 0, 2, 32, 3, 132, 139, 0,
+			117, 120, 3, 137, 0, 110, 101, 2, 32, 3, 140, 6, 139, 50, 37, 0, 4, 1, 98, 2, 108, 111, 103, 121, 3, 140, 126, 0, 1, 118,
+			0, 8, 2, 110, 0, 110, 1, 108, 108, 3, 144, 50, 0, 114, 1, 10, 2, 12, 3, 145, 0, 4, 1, 118, 2, 108, 3, 147, 0, 1,
+			122, 2, 110, 0, 8, 114, 2, 116, 0, 110, 8, 108, 3, 147, 50, 0, 7, 6, 105, 114, 0, 2, 101, 99, 116, 3, 2, 140, 34, 0,
+			4, 1, 21, 2, 111, 32, 3, 6, 144, 34, 0, 2, 97, 32, 0, 2, 105, 32, 0, 2, 97, 98, 108, 101, 3, 6, 148, 0, 1, 21,
+			2, 97, 116, 105, 111, 110, 3, 13, 34, 0, 1, 112, 115, 97, 2, 105, 3, 34, 0, 4, 8, 2, 114, 97, 116, 3, 113, 0, 8, 2,
+			114, 101, 21, 14, 128, 132, 130, 0, 8, 2, 97, 3, 113, 34, 0, 5, 3, 2, 101, 99, 116, 3, 114, 34, 0, 4, 2, 114, 111, 3,
+			124, 0, 2, 114, 117, 0, 8, 2, 114, 17, 65, 0, 4, 1, 109, 2, 97, 99, 3, 124, 34, 0, 1, 112, 115, 2, 18, 68, 0, 2,
+			105, 0, 2, 111, 0, 4, 97, 1, 112, 115, 110, 111, 99, 2, 116, 3, 124, 34, 13, 0, 117, 1, 118, 2, 108, 0, 4, 3, 131, 0,
+			1, 116, 115, 2, 32, 0, 4, 1, 103, 2, 111, 3, 140, 34, 0, 1, 118, 2, 117, 115, 0, 2, 101, 116, 121, 0, 8, 2, 105, 115,
+			104, 0, 8, 2, 111, 110, 18, 67, 12, 0, 8, 17, 67, 2, 111, 32, 0, 4, 101, 1, 99, 2, 110, 3, 140, 34, 13, 0, 111, 1,
+			118, 2, 110, 0, 101, 5, 8, 3, 140, 119, 0, 1, 17, 67, 21, 2, 32, 3, 145, 0, 4, 1, 115, 2, 101, 110, 3, 148, 0, 1,
+			115, 101, 100, 0, 2, 101, 101, 0, 97, 8, 112, 2, 99, 0, 101, 0, 101, 1, 112, 0, 111, 1, 25, 2, 110, 0, 101, 114, 2, 32,
+			3, 148, 34, 114, 0, 97, 108, 1, 112, 115, 3, 148, 34, 118, 0, 121, 2, 32, 3, 148, 34, 124, 0, 4, 5, 5, 3, 150, 0, 5,
+			5, 1, 116, 115, 2, 32, 0, 7, 6, 105, 115, 0, 4, 1, 21, 2, 99, 111, 32, 3, 6, 124, 89, 0, 1, 21, 2, 116, 105, 99,
+			32, 0, 99, 1, 21, 2, 101, 110, 17, 67, 0, 115, 2, 97, 32, 0, 115, 105, 109, 111, 2, 32, 3, 6, 124, 89, 124, 65, 139, 0,
+			116, 101, 1, 21, 2, 32, 3, 6, 132, 89, 47, 0, 104, 2, 17, 65, 32, 3, 6, 132, 91, 0, 1, 114, 2, 121, 32, 3, 8, 13,
+			89, 0, 1, 115, 17, 67, 21, 2, 32, 3, 8, 124, 89, 0, 116, 97, 110, 1, 21, 2, 32, 24, 3, 8, 124, 89, 47, 35, 50, 0,
+			116, 97, 110, 1, 21, 2, 32, 3, 8, 124, 89, 47, 121, 50, 0, 97, 5, 3, 2, 116, 105, 111, 110, 3, 13, 88, 141, 0, 1, 109,
+			97, 2, 32, 14, 128, 128, 129, 3, 88, 0, 8, 100, 2, 101, 3, 113, 89, 0, 104, 1, 10, 2, 32, 3, 113, 91, 0, 1, 118, 2,
+			105, 116, 3, 124, 88, 0, 4, 109, 1, 17, 66, 105, 21, 2, 32, 14, 128, 144, 131, 3, 124, 88, 13, 65, 0, 109, 1, 21, 2, 32,
+			14, 128, 145, 131, 0, 109, 1, 110, 97, 2, 32, 14, 128, 144, 131, 0, 109, 1, 116, 101, 2, 32, 14, 128, 128, 131, 0, 109, 1, 116,
+			111, 2, 32, 14, 128, 128, 131, 0, 4, 1, 98, 2, 32, 3, 124, 89, 0, 1, 99, 2, 32, 0, 1, 109, 17, 65, 114, 112, 0, 1,
+			109, 21, 21, 2, 32, 0, 1, 114, 2, 32, 0, 1, 118, 2, 32, 0, 4, 1, 118, 2, 99, 111, 117, 110, 3, 140, 0, 2, 108, 101,
+			32, 0, 8, 2, 108, 101, 0, 108, 97, 110, 100, 8, 3, 140, 55, 13, 50, 72, 0, 4, 1, 10, 2, 97, 98, 108, 3, 140, 88, 0,
+			1, 118, 100, 97, 0, 2, 101, 114, 12, 32, 0, 2, 111, 32, 0, 2, 111, 114, 32, 0, 101, 1, 108, 97, 105, 2, 32, 14, 128, 128,
+			131, 0, 101, 2, 32, 0, 101, 2, 100, 32, 0, 101, 114, 2, 32, 3, 140, 88, 114, 0, 97, 2, 116, 105, 111, 110, 3, 140, 88, 141,
+			0, 4, 1, 114, 104, 99, 2, 116, 32, 3, 140, 89, 0, 2, 105, 118, 101, 0, 7, 6, 105, 116, 0, 8, 2, 105, 110, 101, 114, 3,
+			2, 140, 47, 0, 114, 111, 8, 110, 2, 21, 3, 4, 140, 47, 34, 139, 0, 105, 117, 115, 2, 32, 3, 6, 124, 91, 13, 89, 0, 4,
+			1, 114, 101, 117, 103, 114, 3, 6, 132, 47, 0, 1, 116, 17, 65, 17, 67, 2, 32, 0, 2, 97, 32, 24, 0, 2, 105, 32, 0, 2,
+			111, 32, 0, 105, 115, 2, 32, 3, 6, 140, 47, 124, 89, 0, 1, 10, 2, 105, 118, 101, 32, 3, 8, 113, 47, 0, 4, 121, 1, 10,
+			2, 32, 3, 8, 113, 47, 2, 37, 0, 121, 1, 100, 10, 2, 32, 14, 128, 128, 131, 0, 121, 1, 100, 117, 29, 2, 32, 0, 1, 21,
+			21, 2, 97, 110, 32, 3, 8, 124, 47, 0, 111, 117, 115, 1, 10, 3, 8, 125, 47, 13, 89, 0, 97, 114, 121, 5, 3, 1, 10, 2,
+			32, 3, 13, 47, 122, 34, 2, 124, 0, 101, 115, 2, 32, 28, 18, 14, 128, 128, 129, 3, 89, 0, 4, 1, 10, 2, 101, 32, 3, 124,
+			47, 0, 1, 98, 114, 111, 0, 1, 100, 101, 114, 99, 0, 1, 108, 2, 101, 114, 0, 1, 110, 97, 114, 103, 2, 101, 0, 1, 110, 105,
+			102, 110, 2, 101, 0, 1, 114, 99, 2, 101, 32, 0, 1, 114, 117, 2, 101, 0, 1, 115, 105, 117, 113, 2, 101, 0, 1, 115, 111, 112,
+			2, 101, 0, 2, 101, 114, 97, 116, 0, 8, 100, 101, 0, 121, 8, 17, 67, 2, 32, 3, 124, 47, 37, 0, 101, 115, 1, 115, 111, 112,
+			2, 32, 3, 124, 47, 89, 0, 104, 1, 108, 2, 101, 114, 3, 124, 86, 0, 97, 1, 10, 2, 116, 105, 118, 101, 32, 3, 125, 47, 141,
+			0, 114, 101, 1, 108, 3, 132, 47, 114, 0, 4, 1, 10, 2, 101, 32, 24, 3, 140, 47, 0, 1, 99, 2, 101, 32, 0, 1, 99, 2,
+			101, 114, 32, 0, 1, 109, 97, 2, 101, 0, 1, 110, 2, 114, 17, 65, 0, 1, 110, 117, 2, 101, 0, 1, 116, 2, 108, 0, 1, 118,
+			2, 97, 108, 0, 1, 118, 2, 101, 114, 32, 0, 2, 101, 101, 32, 0, 2, 117, 109, 0, 8, 109, 2, 111, 0, 8, 112, 115, 2, 101,
+			0, 8, 115, 2, 101, 0, 8, 116, 2, 97, 110, 0, 101, 1, 114, 119, 0, 101, 1, 120, 2, 32, 0, 101, 8, 2, 109, 3, 140, 47,
+			13, 0, 114, 111, 1, 110, 2, 103, 101, 3, 140, 47, 34, 13, 0, 114, 111, 1, 110, 3, 140, 47, 34, 139, 0, 101, 115, 1, 10, 2,
+			32, 3, 140, 47, 89, 0, 4, 104, 8, 116, 3, 140, 86, 0, 104, 101, 1, 108, 0, 104, 101, 2, 32, 0, 7, 6, 105, 118, 0, 2,
+			111, 114, 111, 117, 115, 3, 6, 124, 84, 0, 4, 1, 114, 116, 110, 111, 99, 3, 6, 140, 84, 0, 1, 116, 99, 2, 97, 108, 0, 1,
+			118, 21, 2, 97, 108, 0, 97, 1, 108, 21, 2, 32, 3, 6, 140, 84, 13, 0, 4, 1, 17, 67, 17, 67, 29, 2, 101, 110, 3, 124,
+			84, 0, 1, 17, 67, 29, 2, 101, 108, 0, 1, 21, 2, 101, 0, 1, 104, 115, 2, 101, 114, 0, 1, 108, 2, 101, 114, 0, 1, 114,
+			2, 101, 108, 0, 1, 114, 2, 101, 110, 0, 1, 114, 2, 101, 114, 0, 1, 114, 2, 101, 116, 0, 8, 103, 2, 101, 0, 8, 114, 2,
+			101, 114, 32, 0, 101, 2, 110, 101, 115, 115, 0, 8, 116, 2, 111, 3, 132, 84, 0, 4, 1, 100, 121, 2, 101, 3, 140, 84, 0, 1,
+			104, 2, 101, 32, 0, 1, 108, 2, 101, 110, 0, 1, 110, 2, 101, 32, 0, 1, 114, 100, 2, 101, 32, 0, 1, 114, 100, 2, 101, 114,
+			0, 1, 114, 101, 100, 2, 101, 0, 1, 114, 112, 101, 100, 2, 101, 0, 1, 118, 2, 101, 0, 1, 119, 2, 101, 32, 0, 2, 101, 13,
+			0, 2, 111, 114, 32, 0, 8, 2, 97, 110, 0, 8, 108, 2, 101, 17, 66, 0, 8, 108, 97, 2, 101, 0, 8, 114, 114, 97, 2, 101,
+			0, 101, 8, 108, 2, 17, 66, 0, 97, 108, 1, 114, 3, 140, 84, 118, 0, 7, 6, 108, 101, 0, 1, 116, 116, 2, 21, 3, 14, 55,
+			0, 4, 1, 10, 2, 32, 3, 55, 0, 1, 114, 10, 2, 32, 0, 1, 17, 67, 11, 2, 17, 66, 105, 97, 3, 55, 6, 132, 0, 4,
+			1, 17, 67, 10, 2, 115, 115, 3, 55, 13, 0, 1, 98, 17, 65, 2, 17, 66, 32, 0, 115, 115, 1, 21, 2, 32, 14, 128, 130, 132,
+			3, 55, 13, 89, 0, 115, 115, 110, 101, 115, 115, 1, 21, 2, 32, 14, 128, 130, 136, 3, 55, 13, 89, 50, 13, 89, 0, 115, 115, 108,
+			121, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 13, 89, 55, 2, 124, 0, 4, 1, 116, 21, 2, 114, 121, 32, 3, 55, 114, 0, 114,
+			1, 98, 17, 65, 2, 32, 0, 114, 1, 98, 21, 2, 17, 67, 21, 0, 103, 103, 101, 100, 3, 55, 122, 81, 124, 72, 0, 115, 115, 5,
+			8, 1, 21, 2, 32, 14, 128, 130, 132, 3, 55, 122, 89, 0, 115, 115, 110, 101, 115, 115, 5, 8, 1, 21, 2, 32, 14, 128, 130, 136,
+			3, 55, 122, 89, 50, 122, 89, 0, 115, 115, 108, 121, 5, 8, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 122, 89, 55, 2, 124, 0,
+			109, 1, 112, 10, 2, 101, 110, 116, 3, 55, 124, 65, 0, 4, 1, 17, 67, 2, 116, 111, 110, 32, 3, 118, 0, 1, 17, 67, 10, 2,
+			32, 0, 1, 17, 67, 11, 2, 17, 66, 21, 0, 1, 98, 21, 2, 17, 67, 21, 0, 1, 100, 21, 2, 17, 67, 21, 0, 1, 103, 21,
+			2, 17, 67, 21, 0, 1, 116, 21, 2, 17, 67, 21, 0, 109, 1, 10, 2, 101, 110, 116, 3, 118, 65, 0, 100, 1, 98, 17, 65, 2,
+			32, 3, 118, 72, 0, 5, 8, 1, 17, 67, 10, 2, 32, 3, 122, 55, 0, 7, 6, 109, 105, 0, 4, 115, 8, 2, 116, 105, 109, 3,
+			65, 2, 124, 89, 0, 115, 8, 2, 116, 105, 116, 0, 100, 100, 108, 101, 8, 2, 101, 3, 65, 4, 124, 72, 118, 0, 115, 8, 2, 105,
+			110, 3, 65, 4, 124, 89, 0, 99, 114, 111, 8, 2, 21, 21, 21, 14, 128, 132, 133, 3, 65, 4, 140, 49, 34, 139, 0, 99, 114, 111,
+			8, 2, 21, 14, 128, 132, 133, 3, 65, 6, 140, 49, 34, 139, 0, 2, 115, 116, 97, 3, 65, 113, 0, 108, 108, 101, 110, 3, 65, 113,
+			55, 122, 50, 0, 4, 100, 8, 2, 101, 3, 65, 113, 72, 0, 100, 8, 2, 112, 114, 0, 4, 115, 8, 2, 21, 14, 128, 132, 131, 3,
+			65, 113, 89, 0, 115, 8, 2, 115, 17, 67, 14, 128, 132, 131, 0, 115, 99, 8, 2, 101, 0, 4, 8, 2, 110, 101, 114, 97, 3, 65,
+			124, 0, 8, 2, 115, 115, 105, 0, 108, 108, 8, 2, 105, 111, 110, 3, 65, 124, 55, 0, 108, 108, 105, 8, 3, 65, 124, 55, 124, 0,
+			115, 101, 114, 97, 98, 3, 65, 124, 88, 14, 34, 13, 71, 0, 4, 115, 2, 99, 104, 105, 101, 3, 65, 124, 89, 0, 115, 2, 100, 101,
+			109, 0, 115, 2, 102, 105, 0, 115, 2, 104, 97, 112, 0, 115, 2, 116, 114, 97, 108, 0, 115, 2, 116, 114, 101, 115, 0, 115, 2, 116,
+			121, 0, 115, 8, 2, 116, 105, 0, 115, 115, 8, 0, 115, 99, 105, 8, 2, 98, 3, 65, 124, 89, 13, 0, 115, 116, 108, 101, 3, 65,
+			124, 89, 118, 0, 115, 104, 2, 109, 97, 3, 65, 124, 91, 0, 8, 2, 110, 17, 65, 114, 3, 65, 140, 0, 99, 114, 2, 111, 3, 65,
+			140, 49, 34, 0, 4, 99, 114, 111, 2, 103, 114, 97, 112, 3, 65, 140, 49, 34, 13, 0, 99, 114, 111, 2, 115, 99, 111, 0, 99, 114,
+			111, 8, 2, 112, 104, 0, 99, 114, 111, 8, 2, 98, 3, 65, 140, 49, 34, 139, 0, 115, 2, 101, 114, 3, 65, 140, 88, 0, 7, 6,
+			110, 103, 0, 4, 1, 17, 65, 109, 2, 121, 3, 50, 75, 0, 1, 105, 98, 2, 101, 114, 0, 1, 105, 103, 2, 101, 114, 0, 1, 117,
+			2, 121, 0, 2, 101, 0, 2, 105, 101, 32, 0, 2, 105, 116, 105, 0, 8, 111, 108, 2, 105, 116, 0, 105, 2, 98, 3, 50, 75, 13,
+			0, 4, 101, 100, 3, 50, 75, 72, 0, 101, 100, 1, 111, 112, 115, 0, 4, 105, 110, 103, 1, 105, 104, 3, 50, 75, 113, 68, 0, 105,
+			110, 103, 1, 105, 114, 99, 0, 105, 110, 103, 1, 117, 2, 32, 0, 101, 1, 111, 99, 2, 115, 116, 3, 50, 75, 122, 0, 4, 3, 68,
+			0, 1, 105, 114, 2, 101, 114, 0, 1, 105, 115, 2, 101, 114, 0, 2, 121, 0, 117, 101, 0, 4, 101, 100, 1, 97, 3, 68, 72, 0,
+			101, 100, 1, 105, 108, 0, 101, 100, 1, 111, 0, 4, 1, 97, 98, 2, 101, 114, 3, 68, 81, 0, 1, 97, 108, 99, 2, 101, 114, 0,
+			1, 105, 2, 101, 114, 0, 1, 111, 2, 101, 114, 0, 1, 117, 111, 121, 2, 101, 114, 0, 2, 17, 65, 0, 2, 101, 115, 116, 0, 2,
+			108, 0, 2, 114, 0, 8, 97, 2, 101, 114, 0, 8, 105, 114, 2, 101, 0, 105, 110, 103, 2, 32, 3, 68, 113, 68, 0, 7, 6, 111,
+			108, 0, 4, 105, 1, 112, 2, 116, 101, 99, 3, 4, 126, 55, 124, 0, 121, 1, 112, 32, 24, 0, 111, 2, 103, 105, 3, 6, 126, 55,
+			13, 0, 4, 1, 21, 21, 2, 97, 114, 3, 6, 139, 55, 0, 1, 21, 21, 2, 117, 115, 0, 105, 115, 1, 112, 10, 3, 8, 13, 55,
+			124, 89, 0, 4, 1, 10, 2, 101, 110, 17, 67, 3, 13, 55, 0, 1, 10, 2, 111, 117, 115, 32, 0, 1, 109, 2, 101, 99, 0, 1,
+			112, 2, 105, 116, 101, 0, 1, 115, 2, 105, 99, 0, 1, 115, 2, 105, 100, 105, 0, 1, 115, 2, 105, 108, 0, 8, 2, 121, 109, 0,
+			108, 1, 112, 2, 117, 0, 108, 1, 114, 97, 99, 0, 111, 2, 103, 105, 99, 3, 13, 55, 6, 126, 0, 101, 1, 109, 2, 115, 116, 3,
+			13, 55, 122, 0, 105, 99, 101, 1, 112, 3, 13, 55, 132, 89, 0, 102, 1, 119, 3, 117, 55, 83, 0, 118, 1, 119, 3, 117, 55, 84,
+			0, 4, 1, 114, 116, 101, 112, 2, 32, 3, 118, 0, 1, 116, 115, 10, 2, 32, 0, 8, 100, 105, 0, 4, 1, 10, 2, 105, 32, 3,
+			126, 55, 0, 1, 21, 2, 111, 32, 0, 1, 104, 2, 97, 114, 0, 1, 109, 2, 101, 99, 117, 108, 101, 0, 1, 115, 2, 101, 109, 0,
+			1, 116, 2, 101, 114, 0, 1, 118, 2, 17, 67, 0, 8, 100, 105, 2, 97, 0, 108, 1, 114, 98, 0, 108, 1, 114, 116, 2, 17, 65,
+			0, 108, 1, 116, 97, 0, 1, 99, 2, 111, 117, 114, 3, 129, 55, 0, 111, 114, 1, 99, 3, 129, 55, 114, 0, 4, 1, 102, 2, 107,
+			3, 139, 0, 1, 121, 2, 107, 0, 4, 1, 114, 116, 110, 111, 99, 3, 139, 55, 0, 1, 116, 120, 101, 0, 2, 97, 110, 100, 32, 0,
+			2, 97, 114, 0, 8, 2, 97, 29, 0, 8, 98, 2, 115, 116, 0, 8, 99, 2, 98, 0, 108, 1, 110, 0, 108, 1, 114, 0, 108, 1,
+			116, 0, 108, 1, 119, 0, 4, 116, 3, 139, 55, 47, 0, 116, 1, 118, 0, 100, 3, 139, 55, 72, 0, 109, 2, 32, 3, 139, 65, 0,
+			7, 6, 111, 109, 0, 98, 111, 8, 114, 116, 2, 110, 3, 2, 126, 65, 71, 139, 0, 8, 2, 105, 17, 67, 3, 2, 139, 65, 0, 101,
+			1, 21, 2, 116, 114, 121, 3, 6, 126, 65, 13, 0, 4, 101, 1, 21, 2, 116, 114, 101, 3, 6, 126, 65, 124, 0, 101, 2, 116, 101,
+			114, 0, 105, 110, 2, 111, 3, 6, 126, 65, 124, 50, 0, 101, 1, 115, 2, 116, 104, 3, 6, 129, 65, 0, 101, 1, 110, 105, 21, 21,
+			2, 32, 3, 6, 139, 65, 141, 0, 4, 1, 10, 2, 105, 115, 101, 32, 3, 8, 13, 65, 0, 1, 10, 2, 105, 122, 101, 32, 0, 1,
+			21, 2, 105, 115, 116, 32, 0, 121, 1, 10, 2, 32, 3, 8, 13, 65, 2, 124, 0, 4, 1, 10, 2, 32, 3, 13, 65, 0, 1, 10,
+			2, 111, 117, 115, 32, 0, 1, 100, 2, 101, 115, 116, 0, 1, 100, 2, 105, 110, 105, 0, 8, 100, 2, 97, 0, 101, 114, 1, 10, 2,
+			32, 3, 13, 65, 114, 0, 97, 1, 116, 2, 116, 111, 3, 13, 65, 121, 0, 97, 1, 119, 2, 110, 3, 117, 65, 13, 0, 101, 1, 119,
+			2, 110, 3, 124, 65, 124, 0, 4, 1, 99, 2, 32, 3, 126, 65, 0, 1, 108, 103, 2, 101, 114, 0, 1, 114, 2, 32, 0, 8, 112,
+			2, 101, 0, 110, 105, 8, 2, 21, 3, 126, 65, 50, 6, 124, 0, 4, 1, 99, 2, 101, 3, 129, 65, 0, 1, 99, 2, 112, 97, 110,
+			0, 1, 115, 2, 101, 32, 0, 101, 8, 115, 0, 109, 1, 99, 2, 101, 0, 97, 99, 104, 1, 116, 115, 3, 129, 65, 13, 49, 0, 101,
+			114, 1, 99, 2, 32, 3, 129, 65, 114, 0, 4, 98, 1, 116, 2, 25, 3, 137, 65, 0, 98, 1, 119, 2, 32, 0, 98, 101, 1, 99,
+			2, 32, 0, 4, 1, 110, 2, 97, 100, 3, 139, 65, 0, 1, 114, 2, 97, 110, 0, 1, 114, 104, 99, 0, 98, 1, 99, 2, 32, 0,
+			101, 1, 114, 104, 99, 0, 97, 110, 1, 114, 2, 116, 105, 3, 139, 65, 6, 35, 50, 0, 7, 6, 111, 110, 0, 1, 100, 2, 97, 116,
+			3, 2, 139, 50, 0, 4, 1, 21, 2, 105, 99, 97, 3, 6, 126, 50, 0, 1, 115, 114, 101, 112, 2, 105, 0, 121, 109, 111, 117, 115,
+			3, 6, 126, 50, 124, 65, 13, 89, 0, 4, 1, 112, 116, 115, 111, 112, 3, 6, 139, 50, 0, 2, 105, 32, 0, 105, 115, 109, 1, 10,
+			2, 32, 3, 8, 13, 50, 124, 88, 13, 65, 0, 105, 115, 116, 1, 10, 2, 32, 3, 8, 13, 50, 124, 89, 47, 0, 4, 1, 10, 2,
+			97, 103, 101, 32, 3, 13, 50, 0, 1, 10, 2, 101, 114, 32, 0, 1, 17, 67, 11, 10, 2, 32, 0, 1, 21, 2, 32, 28, 18, 0,
+			1, 21, 21, 2, 32, 0, 1, 98, 10, 2, 32, 0, 1, 99, 10, 2, 32, 0, 1, 99, 101, 2, 100, 0, 1, 100, 17, 67, 2, 32,
+			0, 1, 103, 114, 2, 32, 0, 1, 104, 112, 2, 101, 116, 105, 0, 1, 107, 10, 2, 32, 0, 1, 108, 101, 2, 32, 0, 1, 108, 110,
+			2, 32, 0, 1, 109, 2, 100, 32, 0, 1, 109, 10, 2, 32, 0, 1, 114, 97, 2, 32, 0, 1, 114, 100, 2, 32, 0, 1, 115, 10,
+			2, 32, 0, 1, 115, 10, 2, 97, 110, 0, 1, 115, 114, 101, 112, 0, 1, 116, 10, 2, 32, 0, 1, 116, 111, 104, 112, 0, 1, 120,
+			10, 2, 32, 0, 121, 1, 10, 2, 32, 3, 13, 50, 2, 124, 0, 111, 117, 115, 1, 10, 3, 13, 50, 13, 89, 0, 101, 8, 3, 58,
+			128, 50, 0, 99, 101, 8, 2, 32, 3, 58, 128, 50, 89, 0, 101, 100, 1, 17, 67, 10, 2, 32, 14, 128, 136, 130, 3, 72, 0, 105,
+			110, 103, 1, 17, 67, 10, 2, 32, 14, 128, 136, 131, 3, 113, 68, 0, 4, 1, 103, 2, 101, 3, 126, 50, 0, 1, 110, 2, 101, 0,
+			1, 112, 2, 32, 12, 0, 1, 114, 99, 2, 32, 0, 1, 114, 111, 2, 32, 0, 1, 114, 116, 10, 2, 32, 0, 1, 119, 2, 107, 0,
+			1, 119, 2, 116, 0, 2, 97, 108, 100, 0, 5, 3, 1, 103, 97, 2, 32, 0, 5, 8, 1, 21, 2, 32, 12, 12, 0, 8, 112, 115,
+			0, 101, 1, 109, 2, 116, 105, 3, 126, 50, 113, 0, 101, 5, 3, 1, 109, 2, 116, 97, 3, 126, 50, 124, 0, 4, 1, 109, 2, 101,
+			121, 3, 129, 50, 0, 1, 109, 2, 107, 0, 1, 109, 2, 116, 104, 0, 1, 114, 102, 2, 116, 0, 1, 119, 0, 8, 2, 105, 111, 0,
+			8, 104, 2, 101, 121, 0, 8, 108, 2, 100, 111, 110, 0, 8, 112, 115, 2, 103, 0, 101, 1, 100, 110, 117, 2, 32, 0, 101, 1, 109,
+			2, 116, 97, 3, 129, 50, 124, 0, 103, 5, 35, 1, 109, 2, 101, 114, 3, 129, 68, 81, 0, 4, 2, 97, 110, 32, 3, 139, 50, 0,
+			8, 112, 2, 121, 0, 101, 8, 2, 114, 3, 139, 50, 13, 0, 117, 115, 3, 139, 50, 13, 89, 0, 7, 6, 111, 111, 0, 1, 10, 2,
+			110, 3, 6, 137, 0, 4, 1, 17, 67, 2, 107, 3, 117, 0, 1, 102, 2, 116, 0, 1, 103, 2, 100, 0, 1, 104, 2, 100, 0, 1,
+			104, 2, 100, 0, 1, 104, 2, 107, 0, 1, 115, 2, 116, 0, 1, 116, 115, 2, 100, 0, 1, 119, 2, 100, 0, 1, 119, 2, 108, 0,
+			4, 1, 108, 98, 2, 100, 3, 129, 0, 1, 108, 102, 2, 100, 0, 4, 114, 3, 136, 0, 114, 2, 32, 0, 4, 3, 137, 0, 1, 107,
+			2, 107, 0, 1, 109, 2, 110, 32, 0, 1, 112, 2, 107, 0, 1, 112, 115, 2, 110, 32, 0, 1, 115, 2, 116, 104, 0, 8, 2, 114,
+			0, 116, 2, 105, 99, 32, 3, 137, 6, 126, 47, 0, 115, 101, 1, 104, 99, 3, 137, 88, 0, 4, 115, 2, 101, 3, 137, 89, 0, 115,
+			101, 1, 103, 0, 8, 99, 2, 112, 3, 139, 6, 126, 0, 114, 1, 99, 2, 100, 3, 139, 6, 135, 0, 115, 1, 104, 99, 2, 101, 110,
+			3, 139, 88, 0, 4, 114, 1, 112, 3, 146, 0, 114, 8, 109, 0, 7, 6, 111, 114, 0, 8, 102, 2, 115, 21, 3, 2, 135, 0, 4,
+			101, 1, 102, 2, 99, 108, 111, 3, 2, 136, 0, 101, 1, 102, 2, 103, 111, 0, 101, 1, 102, 2, 115, 101, 0, 101, 1, 102, 2, 116,
+			111, 0, 121, 5, 3, 1, 116, 17, 65, 21, 21, 2, 32, 3, 4, 152, 34, 37, 0, 4, 1, 21, 2, 105, 99, 32, 3, 6, 126, 34,
+			0, 1, 21, 2, 105, 99, 97, 108, 0, 1, 21, 2, 99, 97, 32, 3, 6, 135, 0, 4, 2, 105, 32, 3, 6, 135, 34, 0, 2, 105,
+			120, 0, 2, 117, 109, 32, 3, 6, 136, 34, 0, 116, 101, 1, 102, 2, 32, 3, 6, 136, 47, 141, 0, 105, 108, 121, 1, 21, 2, 32,
+			3, 8, 114, 34, 13, 55, 37, 0, 4, 1, 10, 2, 97, 108, 32, 3, 13, 34, 0, 2, 105, 103, 105, 110, 97, 0, 97, 109, 97, 2,
+			32, 3, 13, 34, 6, 35, 65, 13, 0, 101, 115, 99, 3, 13, 34, 6, 122, 89, 0, 121, 1, 10, 2, 32, 3, 13, 34, 37, 0, 111,
+			1, 98, 2, 32, 3, 13, 34, 139, 0, 103, 8, 102, 2, 17, 65, 118, 3, 13, 81, 0, 1, 10, 2, 97, 116, 105, 118, 101, 3, 14,
+			34, 0, 101, 100, 1, 10, 2, 32, 28, 17, 14, 128, 128, 129, 3, 72, 0, 4, 1, 10, 2, 32, 3, 114, 0, 1, 10, 2, 101, 110,
+			101, 32, 0, 1, 98, 98, 2, 110, 0, 1, 100, 110, 101, 2, 32, 0, 1, 102, 2, 101, 118, 101, 114, 0, 1, 102, 2, 103, 17, 65,
+			116, 0, 1, 102, 10, 2, 100, 32, 0, 1, 102, 102, 101, 2, 116, 0, 1, 114, 114, 101, 116, 0, 1, 116, 110, 101, 118, 2, 32, 0,
+			8, 109, 101, 109, 2, 97, 0, 101, 1, 116, 21, 2, 32, 0, 4, 1, 10, 2, 97, 110, 116, 32, 3, 114, 34, 0, 1, 10, 2, 97,
+			116, 101, 0, 1, 10, 2, 97, 116, 105, 111, 110, 0, 1, 10, 2, 111, 117, 115, 0, 2, 97, 114, 18, 67, 0, 2, 105, 122, 17, 65,
+			0, 101, 100, 1, 10, 2, 32, 3, 114, 72, 0, 105, 116, 8, 118, 97, 102, 3, 114, 125, 47, 0, 99, 101, 1, 119, 2, 115, 116, 3,
+			117, 0, 2, 114, 3, 126, 0, 4, 1, 21, 2, 105, 116, 105, 3, 126, 34, 0, 1, 21, 2, 105, 116, 121, 0, 1, 108, 102, 2, 105,
+			0, 1, 109, 2, 97, 108, 0, 2, 101, 17, 66, 32, 0, 2, 101, 110, 17, 67, 0, 2, 105, 103, 0, 5, 35, 8, 104, 2, 111, 0,
+			8, 2, 105, 17, 67, 0, 114, 8, 109, 0, 4, 97, 2, 99, 108, 3, 126, 34, 13, 0, 97, 8, 2, 116, 111, 0, 101, 105, 103, 110,
+			1, 102, 3, 126, 34, 13, 50, 0, 4, 101, 1, 102, 2, 115, 116, 3, 126, 34, 124, 0, 105, 1, 104, 2, 122, 111, 110, 116, 0, 1,
+			119, 2, 114, 3, 129, 0, 111, 117, 103, 104, 3, 129, 34, 13, 0, 111, 117, 103, 104, 5, 3, 3, 129, 34, 139, 0, 4, 1, 119, 2,
+			25, 3, 131, 0, 1, 119, 2, 109, 0, 1, 119, 2, 115, 101, 0, 1, 119, 2, 116, 104, 0, 5, 3, 2, 114, 3, 133, 0, 4, 1,
+			99, 2, 107, 3, 135, 0, 1, 102, 2, 107, 0, 1, 104, 99, 2, 100, 0, 1, 108, 2, 100, 0, 1, 121, 2, 107, 0, 2, 99, 104,
+			32, 0, 2, 101, 115, 105, 115, 0, 2, 109, 32, 0, 2, 110, 32, 0, 2, 115, 101, 32, 0, 2, 116, 0, 8, 0, 8, 99, 2, 21,
+			0, 8, 102, 2, 21, 0, 8, 109, 0, 101, 8, 102, 2, 17, 65, 0, 101, 8, 102, 2, 17, 67, 0, 116, 1, 109, 101, 2, 32, 0,
+			101, 8, 102, 2, 107, 110, 3, 135, 4, 0, 103, 97, 110, 111, 8, 2, 21, 14, 128, 132, 134, 3, 135, 81, 4, 35, 50, 139, 0, 4,
+			3, 136, 0, 1, 99, 2, 101, 32, 0, 1, 100, 2, 32, 0, 1, 108, 112, 0, 1, 112, 2, 116, 0, 1, 116, 110, 2, 32, 0, 1,
+			116, 115, 2, 109, 0, 1, 119, 2, 101, 0, 1, 119, 2, 110, 0, 1, 119, 2, 116, 32, 0, 1, 119, 115, 2, 100, 0, 2, 32, 28,
+			17, 12, 12, 0, 5, 8, 1, 10, 2, 32, 0, 5, 8, 1, 21, 21, 2, 32, 14, 128, 144, 130, 0, 101, 0, 101, 1, 116, 115, 2,
+			32, 0, 101, 8, 109, 0, 114, 2, 32, 0, 4, 1, 108, 104, 99, 2, 105, 99, 3, 136, 34, 0, 1, 108, 104, 99, 2, 111, 117, 115,
+			0, 2, 17, 65, 0, 2, 101, 17, 65, 0, 2, 101, 116, 0, 2, 101, 120, 0, 105, 108, 121, 5, 3, 1, 21, 2, 32, 3, 136, 34,
+			13, 55, 37, 0, 121, 8, 116, 115, 3, 136, 34, 124, 0, 4, 5, 5, 1, 119, 2, 25, 3, 151, 0, 5, 5, 1, 119, 2, 109, 0,
+			5, 5, 1, 119, 2, 115, 101, 0, 5, 5, 1, 119, 2, 116, 104, 0, 7, 6, 111, 115, 0, 2, 105, 116, 121, 3, 6, 126, 89, 0,
+			111, 1, 21, 2, 112, 104, 3, 6, 126, 89, 13, 0, 2, 97, 108, 32, 3, 6, 139, 88, 0, 2, 105, 118, 101, 3, 6, 139, 89, 0,
+			105, 115, 2, 32, 3, 6, 139, 89, 124, 89, 0, 117, 114, 101, 3, 6, 139, 90, 114, 0, 1, 17, 67, 10, 2, 97, 117, 114, 32, 3,
+			8, 13, 89, 0, 105, 115, 1, 104, 112, 114, 2, 32, 3, 8, 13, 89, 124, 89, 0, 4, 1, 112, 2, 105, 116, 105, 111, 3, 13, 88,
+			0, 115, 1, 112, 2, 101, 115, 115, 0, 4, 1, 21, 2, 121, 32, 3, 13, 89, 0, 101, 1, 112, 114, 117, 112, 0, 111, 1, 21, 2,
+			112, 104, 105, 99, 3, 13, 89, 6, 126, 0, 101, 116, 1, 108, 99, 3, 126, 88, 125, 47, 0, 1, 112, 2, 116, 117, 3, 126, 89, 0,
+			99, 105, 108, 108, 111, 8, 3, 126, 89, 6, 124, 55, 126, 0, 4, 116, 1, 112, 2, 101, 114, 105, 3, 126, 89, 47, 0, 116, 1, 112,
+			97, 0, 116, 1, 112, 101, 114, 0, 116, 1, 112, 101, 114, 112, 0, 116, 1, 112, 109, 105, 0, 116, 1, 112, 109, 111, 99, 0, 116, 1,
+			112, 120, 101, 0, 116, 1, 112, 121, 104, 0, 4, 5, 3, 1, 99, 2, 116, 3, 134, 89, 0, 5, 3, 1, 114, 102, 2, 116, 0, 115,
+			5, 3, 1, 98, 0, 115, 5, 3, 1, 108, 0, 115, 5, 3, 1, 109, 0, 115, 5, 3, 1, 114, 0, 8, 108, 2, 101, 3, 137, 88,
+			0, 4, 1, 29, 2, 121, 3, 139, 88, 0, 8, 114, 2, 101, 13, 0, 101, 2, 32, 0, 4, 1, 99, 2, 101, 99, 3, 139, 89, 0,
+			1, 99, 2, 105, 110, 101, 32, 0, 101, 1, 99, 2, 32, 0, 115, 1, 114, 103, 0, 4, 116, 1, 104, 2, 32, 3, 139, 89, 47, 0,
+			116, 1, 104, 103, 0, 116, 1, 109, 0, 116, 1, 112, 0, 7, 6, 111, 116, 0, 101, 1, 104, 2, 108, 3, 2, 139, 47, 122, 0, 114,
+			111, 2, 112, 121, 3, 6, 126, 47, 34, 13, 0, 4, 1, 10, 2, 32, 28, 18, 3, 13, 47, 0, 1, 10, 2, 114, 121, 0, 1, 103,
+			10, 2, 32, 0, 1, 112, 2, 101, 110, 116, 105, 0, 1, 114, 114, 10, 2, 32, 0, 1, 118, 105, 112, 0, 121, 108, 101, 1, 99, 3,
+			126, 47, 124, 55, 6, 132, 0, 4, 104, 1, 98, 2, 101, 114, 3, 126, 86, 0, 104, 8, 114, 2, 101, 114, 0, 104, 2, 101, 114, 12,
+			3, 129, 86, 0, 104, 5, 3, 1, 108, 99, 3, 134, 87, 0, 4, 1, 99, 2, 97, 110, 3, 139, 47, 0, 1, 109, 2, 105, 118, 0,
+			1, 110, 2, 97, 0, 1, 110, 2, 111, 114, 0, 1, 114, 2, 97, 0, 1, 114, 2, 111, 0, 1, 116, 2, 97, 0, 2, 97, 116, 0,
+			105, 99, 101, 1, 110, 3, 139, 47, 113, 89, 0, 111, 114, 1, 109, 3, 139, 47, 114, 0, 111, 1, 114, 112, 2, 110, 3, 139, 47, 126,
+			0, 111, 1, 114, 112, 2, 17, 67, 3, 139, 47, 139, 0, 4, 104, 1, 108, 2, 105, 3, 139, 86, 0, 104, 1, 108, 2, 105, 97, 110,
+			0, 104, 1, 114, 116, 101, 98, 0, 104, 101, 1, 108, 99, 0, 104, 1, 98, 3, 139, 87, 0, 104, 101, 2, 114, 97, 112, 12, 3, 139,
+			87, 122, 0, 7, 6, 111, 117, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 2, 138, 47, 0, 1, 21, 2, 109, 32, 3, 6, 137, 0,
+			4, 115, 1, 17, 66, 10, 2, 32, 3, 8, 13, 89, 0, 115, 1, 114, 100, 10, 2, 32, 0, 4, 103, 104, 1, 114, 98, 2, 32, 3,
+			13, 0, 103, 104, 1, 114, 111, 0, 4, 115, 1, 10, 2, 32, 3, 13, 89, 0, 115, 1, 108, 10, 2, 32, 0, 115, 1, 109, 10, 2,
+			32, 0, 115, 1, 110, 10, 2, 32, 0, 115, 121, 1, 10, 2, 32, 3, 13, 89, 2, 37, 0, 1, 104, 2, 109, 3, 57, 137, 0, 97,
+			3, 58, 121, 0, 4, 114, 1, 10, 2, 32, 3, 114, 0, 114, 1, 112, 17, 65, 0, 114, 101, 100, 1, 10, 3, 114, 72, 0, 108, 2,
+			100, 3, 117, 0, 99, 101, 1, 108, 103, 2, 115, 3, 126, 0, 4, 103, 104, 1, 99, 3, 126, 83, 0, 103, 104, 1, 114, 116, 0, 4,
+			1, 99, 2, 110, 116, 114, 3, 129, 0, 1, 99, 2, 112, 108, 0, 1, 99, 2, 114, 97, 103, 0, 1, 99, 2, 115, 105, 0, 1, 100,
+			2, 98, 0, 1, 100, 2, 103, 0, 1, 110, 2, 114, 105, 0, 1, 114, 116, 2, 98, 108, 0, 1, 115, 2, 116, 104, 101, 114, 0, 1,
+			116, 2, 99, 104, 0, 1, 121, 2, 110, 103, 0, 4, 103, 104, 1, 108, 3, 129, 83, 0, 103, 104, 1, 110, 0, 103, 104, 1, 114, 0,
+			103, 104, 1, 116, 0, 4, 114, 3, 131, 0, 114, 1, 99, 2, 116, 101, 0, 114, 2, 110, 0, 114, 5, 3, 1, 99, 2, 97, 103, 0,
+			114, 5, 3, 1, 110, 2, 105, 0, 4, 103, 104, 1, 98, 2, 116, 3, 133, 0, 103, 104, 1, 104, 2, 116, 0, 103, 104, 1, 110, 2,
+			116, 0, 103, 104, 1, 114, 98, 2, 116, 0, 103, 104, 1, 114, 119, 0, 103, 104, 2, 116, 0, 103, 104, 8, 0, 4, 103, 104, 5, 3,
+			1, 99, 3, 134, 83, 0, 103, 104, 5, 3, 1, 114, 116, 0, 4, 114, 1, 98, 2, 110, 3, 136, 0, 114, 1, 99, 2, 115, 0, 114,
+			1, 99, 2, 116, 0, 114, 1, 99, 2, 116, 101, 115, 97, 0, 114, 1, 109, 2, 110, 0, 114, 1, 112, 0, 114, 1, 112, 110, 2, 32,
+			0, 114, 8, 102, 0, 114, 8, 121, 0, 114, 99, 101, 1, 115, 3, 136, 89, 0, 4, 1, 98, 2, 100, 3, 137, 0, 1, 98, 2, 108,
+			108, 0, 1, 99, 2, 116, 104, 0, 1, 104, 103, 2, 108, 0, 1, 107, 0, 1, 109, 2, 115, 115, 101, 0, 1, 110, 2, 103, 97, 0,
+			1, 114, 2, 98, 108, 0, 1, 114, 2, 116, 105, 110, 0, 1, 116, 2, 99, 97, 110, 0, 1, 119, 2, 110, 100, 17, 65, 0, 1, 119,
+			2, 110, 100, 17, 67, 0, 1, 121, 2, 116, 0, 2, 32, 0, 2, 102, 0, 2, 105, 0, 2, 108, 17, 65, 0, 2, 112, 0, 2, 118,
+			0, 2, 122, 0, 5, 35, 1, 114, 2, 116, 101, 0, 103, 104, 1, 114, 104, 116, 0, 120, 2, 32, 0, 103, 101, 1, 114, 3, 137, 90,
+			0, 99, 104, 1, 100, 3, 137, 91, 0, 4, 3, 138, 0, 1, 102, 2, 108, 101, 0, 1, 114, 17, 67, 2, 116, 0, 1, 121, 2, 116,
+			32, 0, 2, 116, 0, 98, 1, 100, 2, 116, 0, 103, 104, 1, 98, 0, 103, 104, 1, 100, 2, 116, 0, 103, 104, 1, 108, 112, 0, 103,
+			104, 1, 108, 115, 0, 103, 104, 1, 114, 100, 0, 4, 1, 98, 2, 108, 100, 3, 139, 0, 1, 104, 115, 2, 108, 100, 101, 114, 0, 1,
+			109, 2, 108, 17, 67, 0, 1, 115, 2, 108, 0, 2, 108, 116, 0, 103, 104, 0, 103, 104, 1, 100, 0, 103, 104, 1, 104, 0, 103, 104,
+			1, 108, 114, 0, 4, 114, 1, 98, 2, 115, 101, 3, 146, 0, 114, 1, 116, 0, 114, 1, 116, 2, 32, 0, 114, 1, 116, 2, 110, 0,
+			114, 5, 7, 8, 121, 0, 114, 8, 103, 2, 100, 0, 4, 114, 1, 99, 115, 3, 149, 0, 114, 1, 104, 0, 114, 1, 108, 102, 0, 114,
+			1, 115, 0, 114, 1, 116, 115, 0, 114, 1, 118, 101, 2, 101, 100, 0, 114, 1, 118, 101, 100, 0, 114, 8, 0, 114, 8, 100, 0, 4,
+			114, 5, 5, 3, 151, 0, 114, 5, 5, 1, 99, 2, 116, 101, 0, 114, 5, 5, 2, 110, 0, 7, 6, 111, 118, 0, 101, 114, 8, 2,
+			21, 14, 128, 132, 132, 3, 4, 139, 84, 114, 0, 2, 18, 67, 99, 104, 32, 3, 6, 139, 84, 0, 105, 116, 99, 104, 1, 21, 2, 32,
+			3, 8, 13, 84, 124, 76, 0, 4, 1, 99, 2, 101, 110, 17, 67, 3, 126, 84, 0, 1, 104, 2, 101, 108, 0, 1, 104, 2, 101, 114,
+			0, 1, 110, 2, 101, 108, 0, 1, 114, 103, 2, 101, 108, 0, 1, 114, 116, 2, 101, 114, 0, 8, 2, 117, 108, 0, 101, 114, 101, 105,
+			103, 110, 1, 115, 3, 126, 84, 13, 34, 124, 50, 0, 101, 114, 1, 112, 2, 21, 3, 126, 84, 114, 0, 1, 114, 112, 2, 101, 114, 3,
+			127, 84, 0, 4, 1, 99, 2, 101, 110, 3, 129, 84, 0, 1, 99, 2, 101, 116, 0, 1, 104, 115, 2, 12, 0, 1, 108, 0, 1, 108,
+			2, 101, 0, 5, 3, 1, 104, 2, 101, 114, 0, 8, 2, 101, 110, 0, 101, 1, 100, 0, 101, 8, 108, 2, 21, 0, 4, 101, 114, 1,
+			99, 3, 129, 84, 114, 0, 101, 114, 1, 99, 2, 32, 0, 101, 114, 110, 1, 103, 3, 129, 84, 114, 50, 0, 4, 1, 21, 2, 97, 108,
+			3, 137, 84, 0, 1, 109, 2, 17, 65, 12, 12, 12, 0, 1, 114, 112, 2, 101, 13, 0, 101, 114, 1, 114, 112, 2, 32, 3, 137, 84,
+			114, 0, 4, 1, 108, 99, 2, 101, 3, 139, 84, 0, 1, 108, 108, 117, 112, 0, 1, 108, 112, 0, 2, 101, 114, 0, 8, 2, 17, 65,
+			0, 8, 98, 2, 105, 0, 8, 108, 115, 2, 101, 110, 17, 65, 0, 4, 101, 114, 1, 10, 2, 32, 3, 139, 84, 114, 0, 101, 114, 2,
+			99, 111, 97, 0, 101, 114, 2, 100, 111, 115, 0, 101, 114, 2, 100, 114, 97, 0, 101, 114, 2, 100, 114, 105, 0, 101, 114, 2, 115, 105,
+			103, 0, 101, 114, 2, 116, 111, 110, 0, 101, 114, 2, 118, 105, 101, 0, 7, 6, 111, 119, 0, 2, 105, 116, 122, 32, 3, 8, 139, 84,
+			0, 2, 97, 121, 32, 3, 13, 58, 0, 108, 101, 1, 110, 107, 2, 100, 3, 126, 55, 124, 0, 4, 1, 97, 3, 138, 0, 1, 98, 2,
+			101, 108, 0, 1, 98, 2, 101, 114, 0, 1, 98, 2, 115, 17, 65, 0, 1, 98, 2, 115, 112, 0, 1, 99, 0, 1, 100, 2, 110, 0,
+			1, 100, 110, 101, 0, 1, 101, 109, 0, 1, 102, 0, 1, 103, 0, 1, 104, 0, 1, 104, 99, 0, 1, 104, 115, 2, 101, 114, 0, 1,
+			104, 119, 0, 1, 104, 121, 0, 1, 106, 0, 1, 107, 0, 1, 108, 99, 0, 1, 108, 103, 2, 101, 114, 0, 1, 108, 108, 97, 115, 105,
+			0, 1, 108, 112, 0, 1, 110, 2, 97, 100, 0, 1, 110, 101, 2, 110, 0, 1, 112, 0, 1, 114, 2, 100, 0, 1, 114, 98, 0, 1,
+			114, 99, 2, 110, 0, 1, 114, 100, 0, 1, 114, 102, 0, 1, 114, 103, 2, 108, 0, 1, 114, 112, 0, 1, 114, 116, 2, 101, 0, 1,
+			116, 2, 101, 108, 0, 1, 116, 2, 101, 114, 0, 1, 116, 2, 110, 0, 1, 118, 0, 1, 119, 0, 1, 121, 0, 8, 2, 108, 0, 8,
+			100, 0, 8, 108, 108, 97, 0, 8, 110, 2, 32, 0, 8, 110, 2, 116, 0, 101, 114, 1, 108, 102, 3, 138, 114, 0, 4, 3, 139, 0,
+			1, 99, 115, 111, 109, 0, 1, 104, 115, 0, 7, 6, 112, 101, 0, 8, 2, 110, 114, 3, 48, 2, 122, 0, 114, 8, 2, 105, 17, 67,
+			21, 21, 3, 48, 4, 122, 34, 0, 2, 110, 105, 110, 115, 117, 3, 48, 13, 0, 4, 8, 2, 114, 111, 103, 3, 48, 114, 0, 114, 2,
+			99, 101, 105, 0, 114, 2, 99, 101, 112, 0, 114, 2, 99, 117, 108, 105, 0, 114, 2, 99, 117, 115, 0, 114, 2, 102, 101, 99, 0, 114,
+			2, 102, 111, 114, 109, 0, 114, 2, 102, 117, 110, 0, 114, 2, 102, 117, 115, 0, 114, 2, 109, 105, 115, 115, 0, 114, 2, 109, 105, 116,
+			0, 114, 2, 112, 101, 116, 0, 114, 2, 112, 108, 101, 0, 114, 2, 115, 105, 115, 0, 114, 2, 115, 112, 0, 114, 2, 115, 117, 0, 114,
+			2, 115, 117, 0, 114, 2, 116, 97, 105, 0, 114, 2, 116, 117, 0, 114, 2, 118, 21, 0, 114, 8, 2, 105, 112, 104, 3, 48, 114, 34,
+			0, 114, 117, 115, 8, 3, 48, 114, 34, 137, 88, 0, 4, 114, 8, 2, 105, 115, 99, 3, 48, 122, 34, 0, 114, 8, 2, 105, 115, 104,
+			0, 114, 101, 103, 114, 105, 110, 8, 3, 48, 122, 34, 13, 81, 34, 124, 50, 0, 114, 105, 8, 2, 17, 66, 101, 3, 48, 122, 34, 113,
+			0, 114, 105, 110, 105, 8, 3, 48, 122, 34, 124, 50, 6, 132, 0, 8, 2, 99, 117, 108, 105, 3, 48, 124, 2, 0, 4, 114, 2, 112,
+			101, 116, 114, 3, 48, 131, 0, 114, 2, 118, 105, 0, 114, 109, 101, 2, 97, 3, 48, 131, 65, 124, 0, 114, 115, 101, 118, 101, 114, 3,
+			48, 131, 89, 124, 84, 6, 145, 0, 97, 99, 101, 3, 48, 132, 89, 0, 7, 6, 112, 114, 0, 8, 2, 17, 65, 17, 67, 17, 71, 32,
+			12, 3, 48, 34, 0, 4, 101, 8, 2, 17, 67, 21, 3, 48, 34, 2, 124, 0, 101, 8, 2, 99, 111, 99, 0, 101, 8, 2, 100, 105,
+			99, 0, 101, 8, 2, 115, 99, 114, 0, 101, 115, 8, 2, 101, 110, 116, 3, 48, 34, 2, 124, 88, 0, 111, 2, 118, 111, 99, 3, 48,
+			34, 2, 127, 0, 4, 101, 8, 2, 97, 100, 14, 128, 132, 131, 3, 48, 34, 2, 132, 0, 101, 8, 2, 97, 112, 112, 14, 128, 132, 131,
+			0, 101, 8, 2, 97, 115, 115, 14, 128, 132, 131, 0, 101, 8, 2, 100, 105, 14, 128, 132, 131, 0, 101, 8, 2, 101, 109, 0, 101, 8,
+			2, 109, 111, 108, 0, 101, 8, 2, 117, 0, 4, 111, 8, 2, 99, 111, 3, 48, 34, 2, 139, 0, 111, 8, 2, 99, 114, 117, 115, 0,
+			111, 8, 2, 115, 117, 109, 101, 114, 0, 4, 101, 8, 2, 99, 111, 14, 128, 132, 131, 3, 48, 34, 4, 132, 0, 101, 8, 2, 105, 110,
+			21, 14, 128, 132, 131, 0, 101, 8, 2, 114, 101, 14, 128, 132, 131, 0, 101, 8, 2, 115, 117, 112, 112, 14, 128, 132, 131, 0, 101, 100,
+			105, 8, 2, 108, 101, 99, 3, 48, 34, 4, 132, 72, 113, 0, 111, 2, 112, 97, 110, 3, 48, 34, 6, 139, 0, 111, 112, 121, 108, 5,
+			3, 3, 48, 34, 6, 139, 48, 118, 0, 111, 112, 121, 108, 3, 48, 34, 6, 139, 48, 140, 55, 0, 4, 111, 2, 99, 101, 100, 3, 48,
+			34, 13, 0, 111, 2, 99, 101, 101, 0, 111, 2, 99, 101, 115, 115, 105, 0, 111, 2, 99, 108, 97, 105, 0, 111, 2, 99, 117, 114, 0,
+			111, 2, 100, 117, 99, 0, 111, 2, 102, 97, 110, 0, 111, 2, 102, 101, 115, 0, 111, 2, 102, 105, 99, 0, 111, 2, 102, 111, 117, 0,
+			111, 2, 102, 117, 0, 111, 2, 103, 114, 101, 115, 0, 111, 2, 104, 105, 98, 0, 111, 2, 106, 101, 99, 0, 111, 2, 108, 105, 102, 0,
+			111, 2, 108, 111, 110, 0, 111, 2, 109, 111, 116, 0, 111, 2, 110, 111, 117, 110, 99, 0, 111, 2, 110, 117, 110, 0, 111, 2, 112, 101,
+			108, 0, 111, 2, 112, 101, 110, 115, 0, 111, 2, 112, 105, 116, 0, 111, 2, 112, 114, 105, 101, 0, 111, 2, 112, 117, 108, 0, 111, 2,
+			115, 112, 101, 99, 116, 17, 65, 0, 111, 2, 116, 101, 99, 0, 111, 2, 116, 101, 115, 116, 0, 111, 2, 116, 114, 97, 99, 0, 111, 2,
+			116, 114, 117, 0, 111, 2, 116, 117, 0, 111, 2, 118, 105, 100, 0, 111, 2, 118, 105, 115, 0, 111, 2, 118, 111, 107, 0, 111, 8, 2,
+			112, 17, 65, 0, 111, 8, 2, 115, 97, 0, 111, 8, 2, 115, 99, 0, 4, 101, 2, 99, 105, 111, 3, 48, 34, 122, 0, 101, 2, 106,
+			117, 100, 105, 0, 101, 8, 2, 17, 67, 11, 0, 101, 8, 2, 102, 101, 114, 101, 110, 0, 101, 8, 2, 103, 110, 0, 101, 8, 2, 109,
+			105, 0, 101, 8, 2, 110, 25, 0, 101, 8, 2, 112, 32, 0, 101, 8, 2, 112, 111, 115, 105, 0, 101, 8, 2, 115, 99, 111, 0, 101,
+			8, 2, 115, 116, 0, 4, 101, 100, 97, 2, 116, 111, 3, 48, 34, 122, 72, 13, 0, 101, 100, 105, 5, 3, 8, 2, 108, 101, 99, 0,
+			101, 118, 8, 2, 97, 108, 3, 48, 34, 122, 84, 0, 4, 101, 115, 2, 101, 110, 99, 3, 48, 34, 122, 88, 0, 101, 115, 8, 2, 101,
+			110, 116, 97, 0, 101, 115, 105, 2, 100, 101, 110, 3, 48, 34, 122, 88, 124, 0, 105, 110, 99, 2, 101, 13, 3, 48, 34, 124, 50, 89,
+			0, 4, 111, 2, 112, 101, 114, 3, 48, 34, 126, 0, 111, 2, 112, 104, 0, 111, 2, 112, 111, 115, 105, 116, 0, 111, 2, 115, 101, 99,
+			0, 111, 2, 118, 105, 100, 101, 110, 0, 111, 5, 3, 2, 99, 101, 115, 115, 0, 111, 8, 2, 112, 97, 103, 0, 111, 116, 101, 2, 115,
+			116, 97, 110, 3, 48, 34, 126, 47, 113, 0, 111, 98, 97, 98, 3, 48, 34, 126, 71, 13, 71, 0, 111, 115, 101, 8, 2, 108, 3, 48,
+			34, 126, 89, 0, 111, 2, 100, 117, 99, 116, 3, 48, 34, 127, 0, 4, 101, 2, 102, 105, 120, 3, 48, 34, 132, 0, 101, 2, 104, 105,
+			115, 116, 0, 101, 8, 2, 32, 0, 101, 8, 2, 97, 109, 0, 101, 8, 2, 99, 105, 110, 99, 0, 101, 8, 2, 102, 101, 99, 0, 101,
+			8, 2, 109, 105, 117, 0, 101, 8, 2, 113, 117, 0, 101, 8, 2, 115, 99, 0, 101, 8, 2, 118, 105, 101, 119, 0, 101, 8, 2, 118,
+			105, 111, 0, 101, 97, 8, 2, 99, 104, 0, 101, 100, 101, 2, 99, 101, 115, 3, 48, 34, 132, 72, 124, 0, 4, 111, 2, 102, 105, 108,
+			3, 48, 34, 139, 0, 111, 2, 103, 114, 97, 0, 111, 2, 108, 111, 103, 0, 111, 109, 101, 2, 116, 104, 3, 48, 34, 139, 65, 132, 0,
+			111, 103, 101, 8, 3, 48, 34, 139, 75, 6, 122, 0, 105, 8, 2, 111, 3, 48, 34, 140, 0, 105, 111, 2, 114, 105, 116, 3, 48, 34,
+			140, 6, 126, 0, 105, 118, 97, 116, 8, 3, 48, 34, 140, 84, 13, 47, 0, 7, 6, 114, 101, 0, 4, 2, 103, 101, 110, 101, 114, 3,
+			2, 34, 132, 0, 8, 2, 97, 114, 109, 0, 4, 8, 2, 97, 108, 105, 103, 3, 4, 34, 132, 0, 8, 2, 97, 108, 108, 0, 8, 2,
+			97, 117, 21, 14, 128, 132, 130, 0, 8, 2, 99, 111, 110, 14, 128, 132, 130, 0, 8, 2, 99, 114, 101, 97, 116, 0, 8, 2, 100, 101,
+			17, 67, 14, 128, 132, 130, 0, 8, 2, 100, 105, 114, 0, 8, 2, 100, 105, 115, 0, 97, 8, 2, 108, 108, 111, 14, 128, 132, 130, 0,
+			100, 101, 1, 110, 117, 2, 17, 67, 3, 4, 34, 132, 72, 113, 0, 1, 118, 117, 3, 13, 0, 100, 1, 116, 17, 67, 10, 2, 32, 3,
+			13, 72, 0, 4, 8, 2, 100, 114, 3, 34, 2, 132, 0, 8, 2, 101, 100, 117, 14, 128, 132, 130, 0, 8, 2, 101, 109, 14, 128, 132,
+			130, 0, 8, 2, 101, 110, 14, 128, 132, 130, 0, 8, 2, 101, 113, 14, 128, 132, 130, 0, 8, 2, 101, 115, 14, 128, 132, 130, 0, 8,
+			2, 101, 118, 97, 108, 14, 128, 132, 130, 0, 8, 2, 101, 120, 14, 128, 132, 130, 0, 8, 2, 105, 115, 115, 0, 116, 114, 111, 2, 14,
+			128, 132, 133, 3, 34, 4, 122, 47, 34, 139, 0, 4, 8, 2, 97, 17, 67, 11, 14, 128, 132, 130, 3, 34, 4, 132, 0, 8, 2, 97,
+			100, 106, 14, 128, 132, 130, 0, 8, 2, 99, 111, 109, 14, 128, 132, 130, 0, 8, 2, 105, 21, 14, 128, 132, 130, 0, 8, 2, 114, 101,
+			108, 14, 128, 132, 130, 0, 8, 2, 115, 99, 97, 110, 14, 128, 132, 130, 0, 8, 2, 115, 111, 108, 100, 14, 128, 132, 130, 0, 8, 2,
+			116, 105, 116, 14, 128, 132, 130, 0, 8, 2, 116, 114, 97, 110, 14, 128, 132, 130, 0, 8, 2, 117, 110, 14, 128, 132, 130, 0, 4, 1,
+			17, 65, 2, 32, 3, 34, 13, 0, 1, 114, 2, 32, 0, 2, 109, 101, 110, 116, 0, 114, 2, 32, 0, 100, 1, 17, 66, 10, 2, 32,
+			3, 34, 13, 72, 0, 4, 1, 110, 117, 2, 17, 67, 21, 3, 34, 113, 0, 2, 97, 99, 116, 0, 2, 100, 101, 109, 12, 0, 8, 2,
+			17, 67, 21, 0, 8, 2, 116, 105, 114, 0, 8, 99, 2, 100, 101, 110, 116, 0, 8, 99, 2, 100, 101, 110, 122, 0, 8, 99, 2, 109,
+			97, 116, 0, 97, 2, 108, 105, 116, 3, 34, 113, 35, 0, 112, 101, 2, 116, 105, 116, 105, 118, 3, 34, 113, 48, 122, 0, 108, 101, 2,
+			110, 116, 3, 34, 113, 55, 122, 0, 4, 108, 105, 1, 110, 117, 2, 97, 3, 34, 113, 55, 140, 0, 108, 105, 2, 97, 0, 4, 115, 2,
+			105, 103, 110, 3, 34, 113, 88, 0, 115, 2, 117, 108, 116, 0, 97, 2, 108, 116, 101, 3, 34, 113, 126, 0, 97, 2, 103, 101, 110, 3,
+			34, 113, 141, 0, 4, 2, 17, 67, 101, 108, 32, 3, 34, 122, 0, 2, 99, 107, 0, 2, 99, 116, 0, 2, 102, 117, 103, 0, 2, 103,
+			105, 115, 116, 0, 2, 110, 111, 118, 97, 0, 2, 112, 108, 105, 0, 2, 112, 114, 105, 109, 0, 2, 112, 116, 0, 2, 113, 117, 105, 115,
+			0, 2, 115, 105, 100, 117, 101, 0, 2, 115, 111, 108, 117, 0, 2, 115, 111, 110, 0, 2, 115, 116, 108, 0, 2, 115, 116, 114, 111, 0,
+			2, 116, 105, 0, 2, 116, 114, 105, 98, 0, 2, 118, 101, 114, 101, 110, 0, 2, 118, 111, 108, 117, 0, 8, 2, 17, 67, 17, 67, 32,
+			0, 8, 2, 17, 67, 32, 0, 8, 2, 99, 114, 101, 97, 116, 105, 0, 8, 2, 100, 17, 67, 0, 8, 2, 100, 17, 67, 0, 8, 2,
+			100, 111, 108, 101, 110, 0, 8, 2, 109, 111, 110, 115, 0, 8, 2, 110, 17, 67, 0, 8, 2, 115, 99, 117, 0, 8, 2, 118, 101, 108,
+			0, 97, 2, 108, 109, 0, 112, 101, 2, 116, 105, 116, 3, 34, 122, 48, 13, 0, 112, 114, 101, 115, 101, 110, 116, 3, 34, 122, 48, 34,
+			113, 88, 6, 122, 50, 47, 0, 112, 101, 114, 8, 2, 116, 3, 34, 122, 48, 114, 0, 99, 111, 2, 103, 3, 34, 122, 49, 13, 0, 99,
+			111, 110, 2, 99, 3, 34, 122, 49, 13, 50, 0, 99, 114, 101, 8, 2, 97, 110, 3, 34, 122, 49, 34, 132, 0, 108, 101, 8, 2, 103,
+			3, 34, 122, 55, 113, 0, 108, 101, 2, 118, 3, 34, 122, 55, 125, 0, 109, 105, 110, 105, 8, 3, 34, 122, 65, 125, 50, 6, 124, 0,
+			100, 1, 98, 17, 67, 2, 32, 12, 3, 34, 122, 72, 0, 103, 105, 109, 3, 34, 122, 75, 124, 65, 0, 103, 117, 2, 108, 3, 34, 122,
+			81, 57, 137, 0, 102, 101, 114, 101, 110, 100, 3, 34, 122, 83, 13, 34, 6, 122, 50, 72, 0, 118, 101, 2, 110, 17, 65, 3, 34, 122,
+			84, 13, 0, 115, 105, 2, 100, 101, 110, 3, 34, 122, 88, 113, 0, 109, 101, 110, 116, 3, 34, 124, 65, 13, 50, 47, 0, 104, 101, 110,
+			3, 34, 124, 107, 6, 122, 50, 0, 4, 2, 103, 101, 110, 3, 34, 132, 0, 2, 103, 105, 111, 110, 0, 8, 2, 97, 110, 0, 8, 2,
+			99, 101, 110, 116, 0, 97, 2, 109, 0, 97, 5, 3, 2, 108, 3, 34, 132, 14, 0, 115, 101, 2, 108, 3, 34, 132, 89, 122, 0, 116,
+			2, 97, 105, 108, 3, 34, 132, 108, 0, 4, 105, 8, 2, 99, 3, 34, 140, 0, 105, 8, 2, 108, 0, 105, 8, 2, 110, 104, 0, 105,
+			115, 8, 3, 34, 140, 88, 0, 105, 99, 104, 3, 34, 140, 101, 0, 97, 2, 108, 3, 34, 144, 0, 1, 10, 2, 32, 3, 114, 0, 7,
+			6, 115, 117, 0, 1, 101, 114, 2, 109, 17, 65, 3, 88, 57, 137, 0, 5, 3, 1, 101, 114, 2, 109, 17, 65, 3, 88, 137, 0, 4,
+			2, 98, 100, 117, 101, 3, 89, 2, 129, 0, 2, 98, 115, 101, 114, 0, 2, 98, 115, 105, 115, 0, 2, 98, 116, 114, 97, 0, 8, 2,
+			98, 111, 112, 0, 112, 101, 114, 2, 118, 105, 115, 105, 3, 89, 2, 137, 48, 114, 0, 112, 101, 114, 2, 105, 111, 3, 89, 2, 137, 48,
+			144, 34, 0, 8, 2, 98, 100, 105, 3, 89, 4, 129, 0, 112, 101, 114, 8, 2, 21, 21, 21, 14, 128, 132, 133, 3, 89, 4, 137, 48,
+			114, 0, 112, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 89, 6, 137, 48, 114, 0, 4, 2, 98, 109, 105, 3, 89, 13, 0, 2, 98,
+			115, 99, 114, 105, 98, 0, 2, 98, 117, 114, 98, 97, 0, 2, 98, 118, 0, 2, 99, 99, 17, 65, 0, 2, 102, 102, 105, 99, 0, 2,
+			112, 112, 108, 0, 2, 112, 112, 111, 114, 0, 2, 112, 112, 114, 101, 115, 0, 8, 2, 98, 109, 101, 114, 0, 98, 115, 116, 97, 2, 110,
+			116, 3, 89, 13, 71, 89, 47, 35, 0, 4, 115, 8, 2, 112, 3, 89, 13, 89, 0, 115, 8, 2, 116, 97, 105, 0, 115, 99, 8, 2,
+			101, 0, 1, 110, 2, 97, 108, 3, 89, 57, 137, 0, 4, 114, 1, 110, 117, 2, 112, 3, 89, 114, 0, 114, 2, 109, 0, 114, 2, 112,
+			97, 0, 114, 2, 112, 114, 0, 114, 2, 114, 0, 114, 2, 118, 0, 4, 2, 99, 99, 117, 108, 3, 89, 129, 0, 2, 112, 112, 108, 101,
+			0, 2, 112, 112, 108, 105, 99, 0, 8, 2, 98, 0, 114, 2, 114, 101, 121, 0, 4, 114, 3, 89, 131, 0, 114, 2, 103, 12, 0, 114,
+			8, 0, 112, 101, 114, 2, 108, 97, 3, 89, 137, 48, 6, 131, 0, 112, 101, 114, 3, 89, 137, 48, 114, 0, 115, 8, 2, 17, 65, 3,
+			89, 137, 88, 0, 4, 114, 5, 5, 3, 89, 151, 0, 114, 5, 5, 8, 0, 4, 114, 1, 97, 101, 3, 90, 114, 0, 114, 1, 111, 0,
+			114, 101, 1, 10, 2, 32, 0, 4, 2, 97, 108, 3, 90, 137, 0, 8, 97, 99, 0, 103, 97, 114, 3, 91, 117, 81, 114, 0, 5, 3,
+			1, 110, 2, 97, 108, 3, 91, 137, 0, 4, 114, 1, 110, 101, 3, 91, 146, 0, 114, 1, 110, 105, 2, 17, 65, 0, 114, 2, 97, 110,
+			99, 0, 114, 101, 8, 0, 7, 6, 116, 104, 0, 1, 10, 2, 18, 68, 32, 3, 8, 87, 0, 1, 32, 48, 15, 2, 32, 3, 13, 87,
+			0, 8, 2, 111, 109, 21, 3, 47, 0, 4, 1, 104, 103, 2, 17, 65, 3, 47, 107, 0, 2, 97, 110, 100, 0, 2, 101, 97, 100, 0,
+			2, 101, 97, 114, 116, 0, 2, 105, 108, 108, 0, 2, 111, 108, 100, 0, 2, 111, 108, 101, 0, 2, 111, 111, 100, 0, 2, 111, 117, 115,
+			101, 0, 101, 113, 117, 101, 3, 47, 122, 49, 0, 97, 109, 101, 115, 8, 3, 47, 122, 65, 88, 0, 97, 105, 3, 47, 140, 0, 4, 1,
+			97, 101, 2, 101, 114, 3, 86, 0, 1, 111, 111, 109, 115, 0, 1, 114, 2, 105, 101, 114, 0, 1, 114, 2, 121, 0, 1, 114, 111, 2,
+			105, 0, 2, 101, 110, 32, 0, 2, 101, 114, 17, 67, 0, 2, 101, 114, 110, 32, 0, 2, 101, 115, 116, 0, 2, 105, 116, 104, 0, 101,
+			2, 32, 0, 101, 109, 8, 3, 86, 2, 122, 65, 0, 101, 114, 101, 8, 2, 21, 3, 86, 2, 143, 0, 101, 108, 101, 115, 115, 3, 86,
+			13, 55, 6, 122, 89, 0, 101, 100, 1, 117, 111, 2, 32, 3, 86, 72, 0, 105, 110, 103, 1, 101, 101, 3, 86, 113, 68, 0, 4, 101,
+			114, 2, 32, 3, 86, 114, 0, 101, 114, 2, 101, 114, 0, 101, 114, 101, 2, 32, 0, 101, 114, 101, 8, 3, 86, 143, 0, 4, 3, 87,
+			0, 1, 32, 48, 48, 2, 32, 0, 1, 32, 48, 49, 2, 32, 0, 1, 97, 99, 2, 101, 114, 105, 0, 1, 103, 2, 101, 110, 32, 0,
+			1, 104, 112, 0, 1, 110, 2, 101, 114, 12, 0, 1, 114, 97, 101, 2, 121, 0, 1, 114, 111, 119, 2, 32, 0, 2, 101, 114, 109, 0,
+			8, 2, 17, 71, 0, 8, 2, 114, 17, 71, 0, 8, 2, 119, 17, 71, 0, 8, 101, 2, 101, 114, 0, 105, 111, 8, 3, 87, 4, 140,
+			139, 0, 101, 114, 97, 112, 3, 87, 122, 34, 13, 48, 0, 101, 8, 2, 109, 17, 65, 3, 87, 132, 0, 111, 117, 115, 97, 110, 100, 3,
+			87, 138, 88, 13, 50, 72, 0, 7, 6, 116, 105, 0, 118, 101, 1, 17, 67, 17, 65, 2, 32, 3, 8, 47, 124, 84, 0, 97, 110, 1,
+			10, 2, 32, 3, 8, 91, 13, 50, 0, 97, 110, 8, 3, 47, 57, 35, 50, 0, 97, 108, 1, 115, 3, 47, 57, 118, 0, 4, 1, 105,
+			112, 111, 114, 112, 2, 97, 3, 47, 124, 0, 1, 115, 2, 97, 108, 105, 0, 2, 97, 99, 0, 97, 1, 115, 10, 2, 32, 3, 76, 13,
+			0, 4, 97, 110, 1, 115, 10, 2, 32, 3, 76, 13, 50, 0, 111, 110, 1, 115, 10, 0, 111, 110, 5, 8, 1, 115, 10, 3, 76, 129,
+			50, 0, 111, 110, 1, 10, 3, 91, 8, 13, 50, 0, 111, 117, 115, 1, 10, 3, 91, 8, 13, 89, 0, 111, 110, 2, 97, 108, 32, 3,
+			91, 8, 14, 50, 0, 111, 110, 5, 8, 1, 10, 3, 91, 8, 129, 50, 0, 4, 97, 1, 10, 2, 32, 3, 91, 13, 0, 97, 1, 105,
+			2, 108, 105, 18, 71, 0, 4, 101, 110, 1, 10, 3, 91, 13, 50, 0, 111, 110, 2, 97, 108, 105, 116, 121, 0, 101, 110, 99, 101, 1,
+			10, 3, 91, 13, 50, 89, 0, 111, 110, 2, 97, 108, 3, 91, 14, 50, 0, 97, 108, 1, 10, 3, 91, 118, 0, 1, 10, 2, 97, 108,
+			105, 3, 91, 124, 0, 2, 109, 101, 32, 3, 108, 140, 0, 7, 6, 116, 117, 0, 1, 21, 2, 108, 97, 116, 3, 8, 76, 117, 0, 4,
+			1, 99, 2, 97, 108, 32, 3, 8, 76, 137, 0, 2, 111, 117, 115, 0, 114, 1, 21, 2, 97, 108, 32, 3, 76, 8, 13, 34, 0, 4,
+			5, 3, 2, 108, 97, 3, 76, 13, 0, 5, 3, 8, 97, 116, 115, 2, 116, 111, 0, 4, 114, 1, 10, 2, 121, 3, 76, 13, 34, 0,
+			114, 1, 21, 2, 17, 65, 0, 110, 101, 5, 3, 1, 114, 111, 102, 3, 76, 13, 50, 0, 4, 114, 1, 10, 2, 32, 3, 76, 114, 0,
+			114, 101, 1, 10, 2, 32, 0, 4, 1, 21, 2, 97, 108, 3, 76, 137, 0, 1, 21, 2, 97, 116, 0, 5, 3, 2, 17, 65, 110, 99,
+			121, 0, 5, 3, 2, 17, 65, 110, 116, 0, 8, 97, 116, 115, 0, 101, 1, 114, 2, 32, 0, 110, 101, 1, 114, 111, 102, 3, 76, 137,
+			50, 0, 7, 6, 117, 101, 0, 3, 57, 137, 0, 2, 110, 100, 3, 57, 137, 6, 122, 0, 4, 2, 110, 3, 57, 137, 13, 0, 2, 116,
+			0, 8, 17, 67, 2, 108, 0, 101, 3, 57, 137, 132, 0, 110, 101, 2, 32, 3, 57, 137, 132, 50, 0, 114, 2, 116, 3, 58, 143, 0,
+			4, 1, 108, 3, 137, 0, 1, 114, 0, 5, 3, 1, 18, 73, 0, 8, 115, 0, 1, 108, 2, 110, 116, 105, 3, 137, 6, 122, 0, 4,
+			1, 108, 2, 110, 3, 137, 13, 0, 5, 3, 8, 18, 73, 2, 108, 0, 8, 17, 67, 17, 67, 2, 108, 0, 7, 6, 117, 105, 0, 1,
+			21, 2, 116, 121, 3, 6, 57, 137, 124, 0, 1, 99, 114, 2, 116, 111, 117, 115, 3, 7, 57, 137, 124, 0, 1, 110, 2, 115, 3, 57,
+			137, 0, 1, 115, 101, 106, 2, 116, 3, 57, 137, 113, 0, 114, 2, 32, 3, 57, 146, 0, 114, 1, 99, 2, 97, 3, 58, 113, 34, 0,
+			115, 105, 110, 101, 1, 99, 3, 58, 113, 88, 132, 50, 0, 115, 1, 99, 3, 58, 124, 88, 0, 1, 103, 2, 116, 97, 3, 113, 0, 4,
+			1, 98, 2, 108, 3, 124, 0, 1, 99, 114, 2, 116, 0, 1, 103, 2, 108, 17, 67, 0, 8, 103, 2, 110, 0, 4, 1, 106, 2, 99,
+			3, 137, 0, 1, 108, 115, 0, 1, 114, 2, 116, 0, 1, 115, 2, 116, 0, 115, 1, 114, 2, 101, 3, 137, 88, 0, 1, 114, 103, 2,
+			116, 3, 137, 113, 0, 4, 1, 108, 102, 2, 100, 3, 137, 124, 0, 1, 114, 100, 2, 100, 0, 4, 1, 103, 2, 100, 17, 65, 13, 3,
+			140, 0, 1, 103, 2, 115, 101, 0, 1, 103, 101, 98, 2, 108, 0, 8, 103, 2, 108, 101, 0, 100, 101, 1, 103, 2, 108, 3, 140, 72,
+			0, 7, 6, 117, 110, 0, 4, 2, 97, 110, 105, 3, 2, 57, 137, 50, 0, 8, 2, 105, 113, 0, 4, 2, 114, 101, 103, 105, 3, 2,
+			129, 50, 0, 8, 2, 17, 65, 14, 128, 132, 130, 0, 8, 2, 21, 14, 128, 132, 130, 0, 8, 2, 103, 117, 97, 14, 128, 132, 130, 0,
+			8, 2, 105, 103, 110, 14, 128, 132, 130, 0, 110, 8, 3, 2, 129, 50, 50, 0, 4, 8, 114, 98, 2, 104, 105, 108, 3, 2, 137, 50,
+			0, 110, 8, 114, 98, 2, 104, 105, 108, 0, 105, 8, 2, 108, 3, 4, 57, 137, 50, 124, 0, 4, 8, 2, 100, 101, 14, 128, 132, 130,
+			3, 4, 129, 50, 0, 8, 2, 101, 110, 14, 128, 132, 130, 0, 8, 2, 101, 120, 14, 128, 132, 130, 0, 8, 2, 105, 100, 101, 0, 8,
+			2, 105, 109, 14, 128, 132, 130, 0, 8, 2, 105, 110, 14, 128, 132, 130, 0, 8, 2, 114, 101, 17, 67, 21, 14, 128, 132, 130, 0, 100,
+			101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 4, 129, 50, 72, 114, 0, 97, 8, 2, 98, 3, 4, 129, 50, 119, 0, 1, 21, 2, 97,
+			108, 3, 6, 57, 137, 50, 0, 2, 17, 65, 32, 3, 6, 137, 50, 0, 4, 1, 17, 67, 2, 101, 114, 3, 57, 137, 50, 0, 1, 116,
+			2, 101, 13, 0, 2, 105, 0, 8, 2, 17, 65, 32, 0, 8, 2, 105, 111, 0, 8, 2, 105, 120, 0, 101, 2, 32, 0, 105, 116, 2,
+			101, 3, 57, 137, 50, 6, 140, 47, 0, 105, 8, 3, 57, 137, 50, 124, 0, 4, 1, 112, 2, 105, 115, 104, 3, 129, 50, 0, 2, 17,
+			65, 0, 8, 2, 100, 117, 108, 97, 0, 8, 2, 103, 117, 0, 4, 1, 106, 2, 17, 65, 3, 137, 50, 0, 1, 114, 2, 105, 0, 5,
+			3, 1, 116, 2, 101, 13, 12, 0, 101, 1, 108, 2, 32, 0, 101, 1, 114, 2, 32, 0, 101, 5, 3, 1, 100, 2, 32, 0, 101, 5,
+			3, 1, 116, 2, 32, 0, 101, 8, 114, 0, 7, 6, 117, 112, 0, 4, 8, 2, 98, 3, 2, 129, 48, 0, 8, 2, 99, 0, 8, 2,
+			100, 0, 8, 2, 101, 0, 8, 2, 103, 0, 8, 2, 104, 0, 8, 2, 115, 101, 0, 8, 2, 115, 116, 0, 1, 115, 2, 114, 101, 3,
+			2, 137, 48, 0, 1, 108, 111, 118, 3, 6, 129, 48, 0, 1, 99, 99, 111, 3, 57, 117, 48, 0, 121, 1, 99, 99, 111, 3, 57, 117,
+			48, 140, 0, 104, 111, 2, 108, 115, 116, 3, 129, 48, 6, 139, 0, 111, 110, 3, 129, 48, 126, 50, 0, 4, 1, 17, 67, 2, 108, 101,
+			3, 137, 48, 0, 1, 17, 67, 2, 108, 105, 0, 2, 108, 32, 0, 7, 6, 117, 114, 0, 1, 17, 67, 2, 97, 32, 3, 6, 57, 146,
+			0, 1, 106, 2, 121, 3, 13, 34, 0, 1, 116, 2, 17, 65, 3, 57, 13, 34, 0, 101, 1, 115, 10, 2, 32, 3, 57, 13, 114, 0,
+			4, 101, 1, 110, 101, 2, 32, 3, 57, 114, 0, 101, 5, 3, 1, 103, 2, 32, 0, 4, 1, 17, 67, 2, 17, 65, 3, 57, 117, 34,
+			0, 1, 21, 2, 97, 116, 105, 111, 110, 0, 1, 21, 2, 121, 0, 97, 1, 21, 2, 116, 3, 57, 117, 34, 141, 0, 4, 2, 101, 100,
+			32, 3, 57, 146, 0, 8, 2, 17, 65, 0, 8, 102, 2, 17, 65, 0, 8, 102, 2, 121, 0, 101, 1, 116, 97, 99, 105, 2, 32, 0,
+			101, 2, 32, 0, 1, 98, 2, 101, 3, 57, 146, 34, 0, 4, 1, 103, 10, 2, 32, 3, 114, 0, 1, 104, 10, 2, 32, 0, 1, 109,
+			10, 2, 32, 0, 1, 116, 97, 115, 2, 100, 0, 101, 1, 103, 2, 32, 0, 101, 1, 106, 110, 2, 32, 0, 101, 1, 122, 105, 0, 101,
+			100, 1, 103, 2, 32, 3, 114, 72, 0, 4, 1, 98, 2, 105, 3, 122, 34, 0, 1, 98, 2, 121, 0, 114, 5, 35, 1, 98, 2, 111,
+			3, 129, 34, 0, 4, 1, 112, 115, 2, 32, 3, 131, 0, 2, 17, 66, 0, 2, 32, 0, 114, 1, 102, 2, 121, 0, 114, 2, 32, 0,
+			114, 5, 3, 0, 103, 1, 98, 2, 101, 114, 3, 131, 81, 0, 4, 101, 1, 108, 105, 2, 32, 3, 145, 0, 101, 1, 114, 2, 32, 0,
+			4, 1, 106, 2, 105, 3, 146, 0, 1, 108, 2, 17, 65, 12, 0, 1, 112, 10, 2, 32, 0, 8, 106, 2, 121, 0, 1, 114, 2, 17,
+			65, 12, 3, 146, 34, 0, 4, 5, 5, 1, 112, 115, 2, 32, 3, 151, 0, 5, 5, 2, 17, 66, 0, 5, 5, 2, 32, 0, 114, 5,
+			5, 1, 102, 2, 121, 0, 114, 5, 5, 2, 32, 0, 103, 5, 5, 1, 98, 2, 101, 114, 3, 151, 81, 0, 7, 6, 39, 0, 114, 101,
+			2, 32, 14, 128, 128, 131, 3, 13, 0, 118, 101, 2, 32, 14, 128, 128, 131, 3, 13, 84, 0, 100, 2, 32, 14, 128, 128, 130, 3, 72,
+			0, 4, 115, 1, 32, 54, 49, 2, 32, 3, 88, 0, 115, 2, 32, 14, 136, 128, 130, 0, 4, 115, 1, 102, 2, 32, 14, 136, 128, 130,
+			3, 89, 0, 115, 1, 104, 99, 111, 2, 32, 14, 136, 128, 130, 0, 115, 1, 107, 2, 32, 14, 136, 128, 130, 0, 115, 1, 112, 2, 32,
+			14, 136, 128, 130, 0, 115, 1, 116, 2, 32, 14, 136, 128, 130, 0, 4, 115, 1, 32, 54, 2, 32, 3, 113, 88, 0, 115, 1, 101, 99,
+			2, 32, 14, 136, 128, 130, 0, 115, 1, 101, 115, 2, 32, 14, 136, 128, 130, 0, 115, 1, 104, 99, 2, 32, 14, 136, 128, 130, 0, 115,
+			1, 104, 115, 2, 32, 14, 136, 128, 130, 0, 115, 1, 115, 2, 32, 14, 136, 128, 130, 0, 115, 1, 120, 2, 32, 14, 136, 128, 130, 0,
+			115, 1, 122, 2, 32, 14, 136, 128, 130, 0, 108, 108, 2, 32, 14, 128, 128, 131, 3, 118, 0, 7, 6, 69, 0, 3, 0, 4, 1, 21,
+			2, 109, 98, 101, 114, 3, 6, 122, 0, 2, 110, 116, 105, 0, 2, 110, 116, 111, 117, 115, 0, 2, 110, 116, 117, 0, 116, 116, 101, 2,
+			32, 3, 6, 122, 47, 0, 116, 116, 97, 2, 32, 3, 6, 122, 47, 13, 0, 99, 116, 111, 109, 121, 2, 32, 14, 128, 128, 134, 3, 6,
+			122, 49, 47, 13, 65, 124, 0, 110, 2, 100, 17, 65, 32, 3, 6, 122, 50, 0, 110, 115, 107, 2, 32, 3, 6, 122, 50, 89, 49, 0,
+			108, 108, 97, 2, 32, 3, 6, 122, 55, 13, 0, 115, 113, 117, 101, 3, 6, 122, 89, 49, 0, 4, 2, 17, 67, 105, 97, 3, 6, 132,
+			0, 2, 115, 105, 97, 0, 109, 2, 105, 99, 32, 3, 6, 132, 65, 0, 115, 101, 2, 32, 3, 6, 132, 88, 0, 97, 2, 110, 32, 3,
+			6, 144, 0, 114, 105, 2, 17, 65, 3, 6, 144, 34, 113, 0, 101, 114, 2, 32, 3, 6, 145, 0, 97, 2, 32, 3, 8, 144, 0, 111,
+			117, 115, 2, 32, 3, 8, 144, 89, 0, 110, 101, 114, 2, 32, 3, 10, 50, 13, 0, 110, 105, 110, 103, 2, 32, 3, 10, 50, 113, 68,
+			0, 4, 2, 17, 66, 17, 67, 32, 3, 13, 0, 2, 17, 66, 17, 67, 101, 32, 0, 2, 17, 66, 32, 0, 2, 110, 116, 0, 4, 114,
+			2, 105, 101, 32, 3, 13, 34, 0, 114, 2, 111, 117, 115, 32, 0, 114, 121, 2, 32, 3, 13, 34, 2, 124, 0, 4, 110, 2, 32, 3,
+			13, 50, 0, 110, 2, 97, 116, 17, 65, 0, 110, 2, 103, 0, 109, 2, 32, 3, 13, 65, 0, 115, 1, 114, 17, 67, 2, 32, 14, 128,
+			129, 130, 3, 13, 88, 0, 116, 114, 121, 2, 32, 14, 128, 128, 130, 3, 34, 124, 0, 4, 100, 1, 99, 10, 2, 32, 14, 128, 139, 130,
+			3, 47, 0, 100, 1, 104, 99, 10, 2, 32, 14, 128, 139, 130, 0, 100, 1, 107, 10, 2, 32, 14, 128, 139, 130, 0, 100, 1, 112, 10,
+			2, 32, 14, 128, 139, 130, 0, 100, 1, 120, 10, 2, 32, 14, 128, 136, 130, 0, 4, 100, 1, 21, 21, 2, 32, 14, 128, 139, 130, 3,
+			72, 0, 100, 1, 109, 111, 21, 21, 10, 2, 32, 14, 128, 136, 130, 0, 100, 1, 114, 117, 2, 32, 14, 128, 138, 129, 0, 100, 1, 121,
+			2, 32, 0, 110, 101, 100, 2, 32, 14, 128, 128, 130, 0, 115, 1, 10, 2, 32, 14, 128, 129, 130, 3, 88, 0, 100, 1, 17, 67, 10,
+			2, 32, 14, 128, 139, 130, 3, 109, 0, 4, 115, 1, 102, 2, 32, 14, 128, 129, 130, 3, 110, 0, 115, 1, 107, 2, 32, 14, 128, 129,
+			130, 0, 115, 1, 112, 2, 32, 14, 128, 129, 130, 0, 115, 1, 116, 2, 32, 14, 128, 129, 130, 0, 2, 111, 32, 3, 113, 0, 117, 115,
+			2, 32, 3, 113, 13, 89, 0, 4, 114, 1, 100, 97, 2, 32, 14, 128, 128, 129, 3, 114, 0, 114, 2, 17, 67, 0, 114, 2, 32, 0,
+			114, 115, 1, 100, 97, 2, 32, 14, 128, 128, 130, 3, 114, 88, 0, 4, 108, 2, 32, 3, 118, 0, 108, 101, 2, 32, 0, 108, 108, 2,
+			12, 0, 4, 1, 108, 2, 112, 115, 3, 122, 0, 1, 108, 2, 112, 116, 0, 2, 110, 100, 111, 117, 115, 0, 2, 110, 105, 110, 103, 0,
+			2, 115, 115, 0, 2, 116, 105, 99, 32, 0, 2, 116, 114, 105, 99, 0, 2, 120, 32, 0, 2, 122, 32, 0, 114, 2, 105, 99, 32, 3,
+			122, 34, 0, 110, 5, 8, 2, 32, 3, 122, 50, 0, 110, 105, 110, 103, 5, 8, 2, 32, 3, 122, 50, 113, 68, 0, 108, 5, 8, 2,
+			32, 3, 122, 55, 0, 115, 115, 2, 32, 3, 122, 89, 0, 1, 107, 97, 110, 2, 100, 3, 124, 0, 100, 108, 121, 2, 32, 14, 128, 129,
+			132, 3, 124, 72, 55, 2, 124, 0, 4, 100, 1, 100, 10, 2, 32, 14, 128, 139, 130, 3, 125, 72, 0, 100, 1, 116, 10, 2, 32, 14,
+			128, 139, 130, 0, 4, 39, 115, 1, 99, 2, 32, 14, 128, 129, 131, 3, 125, 88, 0, 39, 115, 1, 115, 2, 32, 14, 128, 129, 130, 0,
+			115, 1, 99, 2, 32, 14, 128, 129, 130, 0, 115, 1, 103, 2, 32, 14, 128, 129, 130, 0, 115, 1, 104, 99, 2, 32, 14, 128, 129, 130,
+			0, 115, 1, 104, 112, 2, 32, 14, 128, 129, 130, 0, 115, 1, 104, 115, 2, 32, 14, 128, 129, 130, 0, 115, 1, 115, 2, 32, 14, 128,
+			129, 130, 0, 115, 1, 120, 2, 32, 14, 128, 128, 130, 0, 4, 2, 100, 105, 97, 32, 3, 132, 0, 2, 100, 105, 99, 32, 0, 2, 116,
+			101, 32, 0, 69, 2, 32, 0, 101, 2, 32, 0, 101, 2, 100, 0, 105, 2, 110, 32, 0, 117, 109, 2, 32, 3, 132, 13, 65, 0, 110,
+			101, 2, 32, 3, 132, 50, 0, 109, 101, 2, 32, 3, 132, 65, 0, 119, 2, 32, 3, 137, 0, 105, 2, 32, 3, 140, 0, 121, 1, 98,
+			111, 2, 32, 3, 141, 0, 7, 6, 97, 0, 8, 2, 113, 117, 3, 2, 35, 0, 101, 114, 8, 99, 3, 2, 143, 0, 8, 2, 32, 15,
+			3, 4, 141, 0, 4, 1, 21, 2, 107, 105, 32, 3, 6, 35, 0, 1, 104, 2, 122, 97, 114, 0, 2, 122, 122, 32, 0, 4, 1, 21,
+			2, 122, 105, 32, 3, 6, 121, 0, 2, 17, 66, 111, 32, 0, 2, 17, 66, 117, 32, 0, 2, 17, 67, 97, 32, 0, 107, 117, 2, 32,
+			3, 6, 121, 49, 137, 0, 119, 105, 1, 21, 2, 32, 3, 6, 121, 58, 124, 0, 122, 101, 1, 107, 21, 2, 32, 3, 6, 121, 88, 124,
+			0, 4, 97, 114, 3, 6, 130, 0, 101, 114, 1, 114, 0, 101, 2, 118, 97, 108, 3, 6, 132, 0, 4, 1, 21, 2, 17, 66, 105, 97,
+			3, 6, 141, 0, 1, 21, 2, 17, 66, 105, 117, 0, 1, 21, 2, 116, 105, 111, 117, 115, 0, 2, 17, 67, 97, 98, 108, 101, 0, 2,
+			17, 67, 97, 98, 108, 121, 0, 2, 17, 67, 105, 98, 108, 101, 0, 2, 116, 105, 111, 110, 0, 2, 122, 105, 100, 101, 0, 8, 2, 45,
+			0, 101, 97, 3, 6, 144, 0, 4, 1, 98, 10, 2, 32, 3, 8, 13, 0, 1, 116, 108, 2, 32, 0, 111, 2, 32, 3, 8, 138, 0,
+			4, 1, 10, 2, 32, 3, 13, 0, 1, 10, 2, 116, 117, 114, 101, 32, 0, 1, 103, 2, 122, 101, 17, 67, 11, 0, 1, 109, 2, 104,
+			111, 103, 0, 1, 119, 111, 2, 100, 0, 2, 119, 97, 121, 32, 0, 101, 8, 110, 97, 2, 115, 0, 104, 1, 10, 2, 32, 0, 113, 117,
+			97, 2, 116, 3, 13, 49, 58, 35, 0, 4, 3, 35, 0, 1, 17, 67, 2, 120, 12, 0, 1, 109, 2, 106, 101, 115, 0, 1, 110, 2,
+			116, 117, 114, 97, 0, 1, 114, 98, 2, 122, 105, 108, 0, 1, 114, 114, 105, 2, 116, 105, 111, 0, 1, 119, 115, 2, 103, 0, 1, 119,
+			115, 2, 109, 32, 0, 1, 119, 115, 2, 110, 107, 0, 2, 17, 66, 101, 17, 67, 111, 32, 0, 2, 17, 66, 101, 114, 17, 65, 0, 2,
+			17, 66, 101, 114, 17, 67, 0, 2, 17, 66, 101, 116, 0, 2, 17, 66, 101, 117, 0, 2, 17, 67, 101, 101, 12, 0, 2, 119, 17, 65,
+			0, 8, 2, 118, 101, 0, 8, 2, 120, 12, 0, 8, 110, 2, 116, 105, 111, 110, 97, 108, 0, 8, 114, 2, 116, 105, 111, 110, 0, 4,
+			97, 1, 97, 97, 3, 35, 12, 0, 97, 2, 97, 0, 107, 1, 21, 2, 105, 97, 3, 35, 49, 0, 113, 117, 2, 97, 3, 35, 49, 58,
+			0, 113, 117, 105, 3, 35, 49, 58, 124, 0, 101, 100, 1, 21, 2, 32, 14, 128, 128, 130, 3, 72, 0, 4, 1, 29, 2, 28, 19, 12,
+			12, 12, 12, 12, 12, 3, 119, 0, 1, 45, 2, 45, 0, 1, 107, 2, 122, 111, 111, 0, 8, 2, 32, 0, 8, 2, 45, 104, 97, 108,
+			102, 0, 8, 2, 107, 105, 0, 8, 2, 119, 104, 21, 0, 8, 109, 2, 106, 111, 114, 21, 0, 113, 117, 2, 97, 114, 105, 17, 65, 3,
+			119, 49, 58, 0, 4, 119, 8, 2, 97, 12, 3, 119, 58, 0, 119, 8, 2, 111, 107, 0, 1, 108, 2, 116, 104, 3, 120, 0, 4, 1,
+			17, 67, 29, 2, 32, 3, 121, 0, 1, 119, 115, 2, 122, 0, 97, 0, 104, 2, 25, 0, 2, 17, 66, 105, 110, 103, 3, 122, 0, 101,
+			109, 111, 114, 114, 104, 1, 104, 3, 122, 65, 114, 34, 0, 1, 110, 103, 105, 115, 2, 116, 117, 114, 101, 3, 124, 0, 4, 1, 117, 113,
+			115, 2, 115, 104, 3, 126, 0, 1, 119, 2, 98, 0, 1, 119, 2, 100, 0, 1, 119, 2, 115, 0, 1, 119, 2, 116, 99, 0, 1, 119,
+			115, 2, 17, 66, 0, 104, 114, 2, 32, 24, 3, 130, 0, 4, 101, 3, 132, 0, 101, 1, 104, 2, 109, 0, 111, 105, 115, 2, 32, 3,
+			132, 91, 0, 111, 105, 115, 101, 2, 32, 3, 132, 91, 13, 0, 101, 111, 110, 2, 32, 3, 132, 126, 50, 0, 4, 1, 119, 2, 116, 101,
+			114, 3, 133, 0, 119, 0, 119, 8, 2, 102, 0, 119, 8, 2, 107, 0, 119, 101, 2, 17, 66, 0, 119, 101, 2, 32, 0, 119, 101, 8,
+			0, 119, 97, 108, 3, 133, 55, 0, 4, 111, 1, 109, 3, 138, 0, 111, 1, 109, 2, 114, 105, 0, 111, 1, 112, 0, 111, 1, 116, 0,
+			4, 101, 1, 109, 2, 115, 116, 3, 140, 0, 121, 8, 0, 4, 1, 17, 67, 29, 2, 17, 66, 121, 32, 3, 141, 0, 1, 32, 15, 2,
+			32, 0, 1, 104, 2, 122, 17, 65, 0, 1, 108, 25, 2, 122, 17, 71, 0, 1, 108, 98, 2, 122, 111, 110, 0, 1, 108, 103, 2, 99,
+			105, 0, 1, 109, 2, 106, 111, 114, 32, 0, 1, 110, 2, 17, 67, 97, 108, 0, 1, 110, 2, 116, 117, 114, 0, 1, 112, 2, 116, 105,
+			101, 110, 0, 1, 114, 2, 99, 105, 17, 65, 0, 1, 114, 2, 122, 105, 0, 1, 114, 101, 2, 115, 117, 114, 0, 1, 119, 2, 17, 66,
+			101, 13, 0, 1, 119, 115, 2, 116, 104, 0, 2, 17, 66, 101, 13, 0, 2, 17, 66, 101, 114, 111, 17, 65, 13, 0, 2, 17, 66, 101,
+			117, 112, 13, 0, 2, 17, 67, 97, 98, 105, 108, 105, 116, 121, 0, 2, 115, 105, 111, 110, 0, 2, 116, 104, 101, 32, 12, 0, 2, 122,
+			121, 0, 8, 2, 32, 45, 0, 8, 2, 118, 105, 97, 116, 0, 8, 2, 118, 111, 110, 0, 101, 2, 108, 0, 121, 0, 121, 1, 119, 0,
+			111, 114, 3, 141, 6, 136, 0, 111, 1, 103, 2, 108, 3, 141, 13, 0, 113, 117, 101, 2, 111, 3, 141, 49, 58, 124, 0, 101, 103, 2,
+			101, 114, 3, 141, 81, 0, 39, 115, 8, 2, 32, 3, 141, 88, 0, 122, 111, 114, 1, 114, 3, 141, 88, 114, 0, 121, 108, 101, 8, 3,
+			141, 118, 0, 111, 3, 141, 126, 0, 119, 121, 2, 101, 114, 32, 3, 142, 0, 4, 101, 114, 3, 143, 0, 101, 114, 8, 2, 111, 0, 121,
+			114, 8, 0, 4, 101, 114, 111, 2, 112, 108, 97, 110, 3, 143, 34, 13, 0, 101, 114, 111, 2, 115, 111, 108, 0, 101, 114, 111, 8, 3,
+			143, 34, 139, 0, 119, 114, 2, 32, 3, 149, 0, 7, 6, 98, 0, 4, 1, 109, 2, 32, 3, 0, 2, 98, 3, 0, 4, 116, 1, 101,
+			100, 3, 47, 0, 116, 1, 117, 115, 2, 108, 0, 4, 3, 71, 0, 8, 2, 18, 66, 17, 71, 0, 104, 8, 2, 21, 0, 97, 8, 2,
+			109, 98, 21, 3, 71, 2, 35, 0, 121, 8, 2, 122, 97, 110, 3, 71, 2, 124, 0, 4, 97, 108, 108, 105, 8, 2, 21, 3, 71, 4,
+			35, 55, 113, 0, 97, 108, 108, 121, 8, 2, 21, 0, 97, 116, 116, 108, 101, 8, 2, 21, 14, 128, 132, 134, 3, 71, 6, 35, 47, 118,
+			0, 111, 111, 107, 8, 2, 21, 21, 14, 128, 132, 132, 3, 71, 6, 117, 49, 0, 117, 114, 121, 1, 21, 2, 32, 14, 128, 130, 132, 3,
+			71, 34, 2, 124, 0, 114, 122, 8, 2, 101, 3, 71, 34, 88, 0, 108, 117, 101, 8, 2, 21, 14, 128, 132, 132, 3, 71, 55, 6, 137,
+			0, 106, 8, 2, 17, 65, 3, 71, 57, 0, 117, 103, 8, 2, 108, 101, 3, 71, 57, 137, 81, 0, 111, 8, 2, 115, 111, 109, 3, 71,
+			117, 0, 111, 111, 107, 1, 21, 2, 32, 14, 128, 128, 132, 3, 71, 117, 49, 0, 97, 108, 108, 105, 2, 115, 116, 3, 71, 119, 55, 6,
+			124, 0, 117, 114, 121, 5, 3, 1, 21, 2, 32, 14, 128, 130, 132, 3, 71, 122, 34, 2, 124, 0, 121, 116, 101, 8, 3, 71, 140, 47,
+			0, 121, 100, 101, 115, 105, 103, 110, 2, 32, 14, 128, 128, 136, 3, 71, 140, 72, 113, 88, 6, 140, 50, 0, 97, 121, 111, 117, 8, 3,
+			71, 140, 137, 0, 7, 6, 99, 0, 4, 1, 115, 2, 101, 3, 0, 2, 113, 3, 0, 122, 8, 2, 97, 114, 3, 47, 89, 0, 4, 3,
+			49, 0, 1, 97, 109, 2, 105, 110, 0, 2, 101, 108, 116, 0, 2, 105, 115, 104, 0, 8, 2, 18, 66, 17, 71, 0, 99, 0, 99, 1,
+			111, 99, 2, 105, 32, 0, 99, 1, 111, 115, 2, 101, 114, 0, 99, 104, 0, 107, 0, 114, 121, 112, 116, 8, 2, 97, 21, 14, 128, 132,
+			133, 3, 49, 34, 124, 48, 47, 0, 104, 97, 114, 97, 2, 99, 116, 3, 49, 35, 34, 113, 0, 117, 8, 2, 111, 3, 49, 58, 0, 117,
+			97, 1, 101, 3, 49, 58, 35, 0, 4, 99, 1, 97, 118, 2, 105, 110, 3, 49, 89, 0, 99, 2, 101, 0, 99, 2, 105, 0, 119, 109,
+			8, 3, 49, 117, 65, 0, 97, 99, 111, 2, 112, 104, 3, 49, 119, 49, 6, 126, 0, 105, 97, 8, 2, 114, 97, 3, 49, 144, 0, 4,
+			1, 110, 2, 101, 115, 99, 3, 76, 0, 99, 2, 105, 110, 17, 65, 32, 0, 122, 8, 2, 101, 0, 2, 101, 108, 108, 18, 68, 32, 3,
+			76, 6, 0, 122, 101, 99, 104, 3, 76, 122, 49, 0, 4, 2, 69, 3, 89, 0, 2, 97, 101, 115, 0, 2, 101, 0, 2, 105, 0, 2,
+			121, 0, 2, 195, 169, 0, 121, 98, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 89, 6, 140, 71, 114, 0, 101, 8, 2, 108, 101, 115,
+			116, 3, 89, 13, 0, 101, 109, 101, 110, 116, 8, 3, 89, 113, 65, 122, 50, 47, 0, 105, 115, 109, 2, 32, 3, 89, 124, 88, 13, 65,
+			0, 105, 112, 104, 2, 101, 114, 3, 89, 140, 83, 0, 4, 1, 101, 2, 105, 97, 3, 91, 0, 1, 105, 2, 105, 97, 0, 1, 117, 2,
+			105, 97, 0, 105, 97, 2, 114, 121, 3, 91, 8, 13, 0, 4, 101, 111, 117, 115, 3, 91, 8, 13, 89, 0, 105, 111, 117, 115, 0, 105,
+			97, 1, 10, 2, 29, 3, 91, 13, 0, 4, 105, 101, 110, 3, 91, 13, 50, 0, 105, 111, 110, 0, 105, 117, 115, 2, 32, 3, 91, 13,
+			89, 0, 105, 97, 108, 1, 10, 3, 91, 118, 0, 105, 97, 5, 8, 1, 10, 2, 29, 3, 91, 119, 0, 105, 101, 110, 5, 8, 3, 91,
+			122, 50, 0, 105, 97, 2, 108, 105, 116, 121, 3, 91, 124, 35, 0, 105, 97, 1, 10, 2, 98, 3, 91, 144, 0, 105, 97, 110, 1, 10,
+			3, 91, 144, 50, 0, 7, 6, 100, 0, 2, 100, 3, 0, 1, 109, 2, 32, 3, 4, 72, 132, 0, 117, 109, 1, 21, 2, 32, 3, 8,
+			72, 13, 65, 0, 116, 2, 32, 3, 47, 0, 110, 101, 1, 101, 119, 2, 115, 100, 3, 50, 0, 4, 3, 72, 0, 1, 101, 21, 21, 2,
+			32, 14, 128, 128, 129, 0, 8, 2, 104, 21, 21, 0, 8, 2, 110, 105, 101, 0, 8, 2, 114, 17, 71, 0, 8, 2, 119, 17, 71, 0,
+			39, 8, 2, 17, 65, 14, 128, 132, 130, 0, 100, 104, 0, 104, 2, 25, 0, 98, 2, 32, 3, 72, 4, 132, 71, 132, 0, 109, 105, 8,
+			2, 116, 114, 3, 72, 13, 65, 132, 0, 117, 5, 35, 2, 112, 108, 3, 72, 57, 137, 0, 4, 117, 114, 2, 17, 65, 3, 72, 57, 146,
+			0, 117, 114, 2, 32, 0, 4, 117, 5, 3, 8, 2, 111, 3, 72, 137, 0, 117, 8, 2, 112, 0, 121, 101, 8, 3, 72, 140, 0, 117,
+			114, 5, 3, 2, 17, 65, 3, 72, 146, 0, 105, 114, 8, 2, 32, 3, 72, 148, 0, 4, 103, 2, 17, 66, 3, 75, 0, 103, 2, 32,
+			0, 103, 2, 101, 0, 103, 2, 105, 0, 103, 2, 121, 0, 103, 101, 2, 21, 0, 106, 0, 106, 8, 2, 17, 71, 0, 103, 101, 116, 3,
+			75, 113, 47, 0, 4, 117, 114, 5, 3, 8, 98, 111, 3, 75, 114, 0, 117, 114, 101, 1, 101, 99, 0, 117, 114, 101, 5, 3, 1, 10,
+			2, 32, 0, 4, 117, 1, 21, 2, 97, 108, 32, 3, 75, 137, 0, 117, 1, 21, 2, 97, 108, 105, 115, 0, 117, 2, 99, 97, 116, 0,
+			117, 5, 3, 1, 10, 2, 17, 67, 17, 65, 0, 117, 5, 3, 2, 97, 116, 0, 7, 6, 101, 0, 4, 1, 10, 2, 32, 3, 0, 4,
+			1, 21, 21, 2, 109, 101, 110, 116, 32, 3, 0, 4, 2, 102, 117, 108, 3, 0, 2, 119, 111, 114, 107, 3, 0, 4, 1, 17, 66, 99,
+			97, 2, 32, 3, 2, 124, 0, 2, 102, 102, 101, 99, 0, 2, 102, 102, 105, 99, 0, 8, 2, 98, 117, 108, 108, 105, 0, 8, 2, 99,
+			108, 0, 8, 2, 102, 102, 97, 99, 0, 8, 2, 102, 102, 117, 0, 8, 2, 106, 17, 65, 0, 8, 2, 112, 104, 101, 109, 0, 8, 2,
+			113, 117, 97, 116, 0, 113, 117, 105, 8, 2, 112, 3, 2, 124, 49, 58, 124, 0, 113, 117, 105, 118, 2, 21, 3, 2, 124, 49, 58, 124,
+			84, 0, 113, 117, 105, 8, 2, 21, 3, 4, 132, 49, 58, 125, 0, 2, 17, 67, 105, 99, 97, 108, 3, 6, 122, 0, 4, 1, 21, 2,
+			17, 67, 105, 97, 32, 3, 6, 132, 0, 1, 21, 2, 103, 105, 99, 0, 1, 104, 2, 115, 105, 111, 110, 32, 0, 2, 17, 66, 111, 32,
+			0, 2, 17, 66, 111, 101, 32, 0, 101, 1, 116, 2, 110, 32, 0, 101, 2, 109, 0, 101, 114, 3, 6, 145, 0, 1, 10, 2, 109, 117,
+			109, 32, 3, 8, 13, 0, 122, 1, 21, 2, 32, 3, 8, 122, 88, 0, 4, 1, 10, 2, 110, 3, 13, 0, 1, 29, 2, 28, 19, 12,
+			12, 12, 0, 1, 108, 2, 103, 105, 116, 0, 1, 108, 101, 99, 2, 98, 114, 97, 0, 98, 108, 101, 1, 21, 21, 2, 32, 3, 13, 71,
+			118, 0, 103, 1, 10, 2, 121, 3, 13, 75, 0, 39, 115, 1, 114, 17, 67, 10, 2, 32, 3, 13, 88, 0, 99, 121, 1, 10, 2, 32,
+			3, 13, 89, 2, 37, 0, 4, 119, 3, 57, 137, 0, 119, 2, 32, 0, 119, 97, 121, 2, 32, 14, 128, 128, 131, 3, 58, 141, 0, 4,
+			39, 115, 1, 17, 67, 10, 2, 32, 14, 128, 130, 130, 3, 88, 0, 39, 115, 1, 104, 116, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115,
+			1, 114, 10, 2, 32, 14, 128, 130, 130, 0, 4, 39, 115, 1, 102, 10, 2, 32, 14, 128, 130, 130, 3, 89, 0, 39, 115, 1, 107, 10,
+			2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 112, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 116, 10, 2, 32, 14, 128, 130, 130,
+			0, 4, 1, 110, 2, 103, 111, 116, 3, 113, 0, 2, 111, 0, 4, 112, 2, 111, 120, 3, 113, 48, 0, 112, 8, 2, 105, 115, 17, 67,
+			0, 99, 99, 108, 101, 115, 8, 2, 105, 3, 113, 49, 55, 132, 88, 0, 102, 121, 1, 21, 21, 2, 32, 3, 113, 83, 140, 0, 102, 105,
+			101, 114, 2, 32, 3, 113, 83, 148, 0, 4, 3, 122, 0, 1, 104, 17, 65, 2, 110, 0, 1, 112, 115, 2, 99, 105, 97, 0, 1, 114,
+			10, 2, 110, 0, 1, 114, 99, 2, 112, 101, 12, 0, 1, 114, 99, 115, 105, 100, 2, 116, 105, 111, 110, 0, 2, 17, 67, 105, 99, 32,
+			0, 2, 102, 102, 105, 99, 97, 0, 112, 105, 8, 3, 122, 48, 124, 0, 112, 105, 100, 101, 114, 8, 3, 122, 48, 124, 72, 6, 131, 0,
+			99, 104, 1, 116, 2, 32, 3, 122, 49, 0, 4, 113, 117, 8, 2, 105, 110, 21, 3, 122, 49, 58, 0, 113, 117, 8, 2, 105, 116, 21,
+			0, 103, 105, 1, 108, 2, 98, 3, 122, 75, 13, 0, 103, 111, 8, 2, 116, 3, 122, 81, 13, 0, 4, 1, 108, 108, 2, 110, 103, 101,
+			3, 124, 0, 1, 109, 2, 99, 104, 97, 110, 105, 99, 0, 1, 116, 110, 105, 2, 103, 101, 0, 1, 116, 110, 105, 2, 103, 114, 97, 0,
+			1, 116, 114, 101, 118, 2, 98, 0, 8, 108, 101, 2, 109, 101, 110, 0, 101, 1, 102, 102, 111, 99, 0, 99, 111, 110, 111, 2, 109, 3,
+			124, 49, 6, 126, 50, 13, 0, 4, 39, 115, 1, 99, 10, 2, 32, 14, 128, 130, 130, 3, 124, 88, 0, 39, 115, 1, 103, 10, 2, 32,
+			14, 128, 130, 130, 0, 39, 115, 1, 104, 99, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 104, 112, 10, 2, 32, 14, 128, 130, 130,
+			0, 39, 115, 1, 104, 115, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 115, 10, 2, 32, 14, 128, 130, 130, 0, 39, 115, 1, 120,
+			10, 2, 32, 14, 128, 130, 130, 0, 4, 1, 17, 67, 29, 2, 17, 66, 101, 32, 3, 132, 0, 1, 17, 67, 29, 2, 32, 24, 0, 1,
+			21, 2, 116, 105, 111, 0, 1, 29, 2, 28, 22, 12, 12, 12, 0, 1, 29, 2, 103, 97, 110, 32, 0, 1, 100, 2, 102, 97, 117, 108,
+			116, 0, 1, 108, 2, 103, 97, 108, 0, 1, 110, 2, 103, 114, 111, 0, 1, 112, 115, 2, 99, 105, 101, 115, 0, 1, 114, 2, 103, 97,
+			108, 0, 1, 114, 102, 2, 113, 0, 2, 17, 67, 105, 117, 17, 66, 0, 2, 98, 114, 105, 97, 0, 2, 109, 101, 32, 0, 2, 109, 101,
+			111, 117, 0, 2, 113, 117, 97, 108, 0, 8, 2, 113, 117, 97, 0, 8, 17, 67, 2, 109, 117, 114, 0, 8, 115, 2, 113, 117, 101, 0,
+			101, 0, 99, 111, 110, 111, 2, 109, 105, 99, 3, 132, 49, 13, 50, 6, 126, 0, 99, 111, 8, 2, 115, 3, 132, 49, 139, 0, 103, 105,
+			111, 110, 1, 108, 3, 132, 75, 13, 50, 0, 103, 121, 2, 112, 116, 3, 132, 75, 124, 0, 103, 111, 8, 3, 132, 81, 139, 0, 4, 101,
+			115, 101, 1, 104, 99, 3, 132, 88, 0, 101, 122, 101, 2, 21, 0, 99, 1, 114, 112, 101, 100, 2, 18, 67, 3, 132, 91, 0, 4, 119,
+			1, 106, 2, 12, 3, 137, 0, 119, 1, 108, 2, 12, 0, 119, 1, 114, 2, 12, 0, 119, 5, 3, 1, 100, 0, 119, 5, 3, 1, 110,
+			0, 119, 5, 3, 1, 116, 0, 119, 8, 115, 0, 119, 101, 1, 106, 2, 108, 3, 137, 13, 0, 119, 8, 115, 2, 32, 3, 139, 0, 4,
+			104, 2, 25, 3, 141, 0, 106, 1, 118, 2, 32, 0, 39, 101, 114, 3, 143, 0, 7, 6, 102, 0, 2, 102, 3, 0, 4, 3, 83, 0,
+			8, 2, 18, 66, 17, 71, 0, 116, 2, 101, 110, 0, 111, 114, 2, 115, 101, 101, 3, 83, 2, 135, 0, 111, 114, 2, 119, 97, 114, 100,
+			3, 83, 6, 136, 0, 4, 97, 2, 109, 105, 108, 105, 97, 114, 3, 83, 13, 0, 111, 114, 2, 98, 97, 100, 0, 111, 114, 2, 98, 105,
+			100, 0, 105, 8, 2, 116, 122, 21, 3, 83, 113, 0, 117, 108, 1, 10, 2, 32, 14, 128, 130, 131, 3, 83, 118, 0, 101, 100, 1, 114,
+			101, 2, 32, 3, 83, 122, 72, 0, 106, 8, 2, 111, 114, 100, 3, 83, 124, 6, 0, 97, 2, 99, 105, 17, 65, 3, 83, 141, 0, 97,
+			99, 101, 8, 3, 83, 141, 89, 0, 7, 6, 103, 0, 8, 2, 110, 17, 71, 3, 0, 2, 121, 110, 111, 117, 115, 32, 3, 8, 75, 0,
+			4, 2, 114, 97, 32, 3, 8, 81, 0, 2, 114, 111, 32, 0, 111, 1, 10, 2, 110, 97, 108, 32, 3, 8, 81, 13, 0, 104, 116, 3,
+			47, 0, 110, 2, 32, 3, 50, 0, 110, 8, 105, 111, 112, 3, 50, 57, 0, 109, 2, 32, 3, 65, 0, 4, 1, 101, 118, 2, 101, 116,
+			3, 75, 0, 1, 111, 2, 101, 116, 0, 1, 114, 101, 2, 101, 116, 0, 2, 69, 0, 2, 101, 0, 2, 101, 116, 116, 101, 32, 0, 2,
+			105, 0, 2, 105, 98, 98, 101, 0, 2, 121, 0, 8, 2, 105, 97, 110, 116, 0, 8, 2, 105, 108, 108, 101, 0, 103, 1, 97, 120, 101,
+			2, 101, 114, 0, 101, 2, 110, 105, 99, 32, 3, 75, 6, 122, 0, 101, 110, 101, 115, 105, 115, 3, 75, 6, 122, 50, 113, 89, 124, 89,
+			0, 101, 111, 117, 115, 3, 75, 8, 13, 89, 0, 4, 105, 97, 1, 10, 2, 17, 67, 32, 3, 75, 13, 0, 105, 97, 1, 10, 2, 32,
+			0, 105, 117, 1, 10, 2, 109, 0, 4, 105, 110, 103, 1, 108, 3, 75, 113, 68, 0, 105, 110, 103, 1, 114, 0, 105, 97, 8, 2, 21,
+			21, 3, 75, 119, 0, 97, 111, 108, 8, 3, 75, 141, 55, 0, 4, 3, 81, 0, 1, 17, 65, 11, 2, 101, 114, 0, 1, 110, 117, 104,
+			0, 1, 111, 2, 121, 32, 0, 1, 111, 98, 2, 69, 121, 0, 1, 111, 103, 2, 105, 99, 32, 0, 1, 111, 111, 2, 101, 121, 0, 2,
+			101, 97, 114, 0, 2, 101, 101, 107, 0, 2, 101, 108, 100, 0, 2, 101, 116, 0, 2, 105, 98, 98, 0, 2, 105, 102, 116, 0, 2, 105,
+			103, 103, 0, 2, 105, 108, 17, 67, 0, 2, 105, 108, 116, 0, 2, 105, 114, 25, 0, 2, 105, 118, 101, 0, 8, 2, 18, 66, 17, 71,
+			0, 8, 2, 101, 99, 0, 8, 2, 101, 107, 0, 8, 2, 101, 114, 116, 0, 8, 2, 105, 100, 0, 8, 2, 105, 108, 25, 0, 8, 2,
+			105, 109, 0, 8, 2, 105, 116, 0, 8, 2, 105, 122, 0, 8, 2, 119, 17, 71, 0, 8, 2, 121, 110, 0, 103, 0, 104, 1, 17, 67,
+			2, 17, 65, 0, 104, 2, 17, 67, 0, 104, 2, 32, 0, 104, 2, 97, 110, 0, 104, 8, 2, 17, 71, 0, 117, 2, 101, 0, 117, 8,
+			2, 105, 0, 117, 101, 2, 32, 0, 105, 2, 32, 3, 81, 2, 124, 0, 101, 2, 100, 100, 3, 81, 6, 122, 0, 110, 117, 8, 3, 81,
+			13, 50, 137, 0, 117, 97, 121, 1, 21, 2, 32, 3, 81, 58, 140, 0, 101, 108, 1, 117, 108, 2, 25, 3, 81, 118, 0, 101, 1, 114,
+			111, 102, 2, 116, 3, 81, 122, 0, 105, 103, 97, 8, 3, 81, 124, 81, 13, 0, 4, 101, 105, 2, 115, 116, 32, 3, 81, 140, 0, 105,
+			1, 97, 2, 32, 0, 117, 105, 8, 2, 100, 17, 65, 0, 117, 105, 100, 101, 2, 21, 3, 81, 140, 72, 0, 7, 6, 104, 0, 4, 1,
+			17, 67, 2, 97, 109, 32, 3, 0, 4, 2, 32, 3, 0, 4, 2, 104, 3, 0, 4, 8, 2, 111, 110, 111, 114, 3, 0, 4, 8, 2,
+			111, 110, 111, 117, 3, 0, 8, 17, 66, 3, 0, 101, 39, 8, 3, 2, 107, 132, 0, 108, 1, 25, 3, 105, 0, 4, 3, 107, 0, 8,
+			2, 114, 111, 21, 0, 111, 109, 111, 8, 2, 115, 3, 107, 4, 139, 65, 139, 0, 4, 121, 112, 111, 2, 100, 101, 3, 107, 4, 140, 48,
+			13, 0, 121, 112, 111, 2, 116, 104, 101, 116, 0, 121, 112, 111, 8, 2, 21, 14, 128, 132, 132, 3, 107, 4, 140, 48, 139, 0, 97, 109,
+			109, 101, 100, 1, 21, 3, 107, 6, 35, 65, 124, 72, 0, 97, 110, 1, 101, 2, 32, 3, 107, 13, 50, 0, 97, 110, 1, 17, 65, 2,
+			32, 3, 107, 35, 50, 0, 111, 111, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 117, 72, 0, 111, 111, 100, 115, 1, 10, 2, 32,
+			14, 128, 128, 133, 3, 107, 117, 72, 88, 0, 101, 114, 111, 8, 2, 110, 3, 107, 122, 34, 13, 0, 101, 116, 101, 114, 111, 8, 3, 107,
+			122, 47, 34, 139, 0, 101, 97, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 122, 72, 0, 121, 112, 111, 8, 2, 99, 114, 3, 107,
+			124, 48, 126, 0, 111, 114, 114, 105, 8, 3, 107, 126, 34, 124, 0, 111, 114, 115, 101, 8, 3, 107, 135, 89, 0, 111, 117, 115, 101, 115,
+			2, 32, 14, 128, 128, 134, 3, 107, 138, 88, 113, 88, 0, 4, 111, 117, 115, 101, 2, 32, 14, 128, 128, 133, 3, 107, 138, 89, 0, 111,
+			117, 115, 101, 8, 2, 21, 0, 111, 108, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 139, 55, 72, 0, 111, 108, 109, 101, 3, 107,
+			139, 65, 0, 111, 109, 101, 8, 2, 111, 3, 107, 139, 65, 132, 0, 111, 109, 111, 101, 111, 8, 3, 107, 139, 65, 132, 139, 0, 4, 121,
+			112, 111, 2, 116, 101, 110, 117, 3, 107, 140, 48, 6, 126, 0, 121, 112, 111, 2, 116, 104, 101, 115, 0, 97, 2, 115, 116, 3, 107, 141,
+			0, 101, 114, 111, 3, 107, 144, 34, 139, 0, 111, 117, 101, 116, 116, 1, 108, 105, 115, 3, 117, 58, 6, 122, 47, 0, 111, 110, 101, 2,
+			115, 116, 3, 126, 50, 124, 0, 101, 105, 114, 3, 143, 0, 111, 117, 114, 3, 149, 0, 7, 6, 105, 0, 39, 8, 3, 2, 140, 0, 122,
+			105, 110, 103, 1, 108, 10, 2, 32, 14, 128, 128, 133, 3, 4, 140, 88, 124, 68, 0, 4, 1, 21, 2, 98, 117, 116, 105, 118, 101, 3,
+			6, 124, 0, 1, 21, 2, 98, 117, 116, 111, 114, 0, 1, 21, 2, 99, 105, 112, 0, 2, 17, 67, 17, 67, 105, 32, 0, 2, 99, 105,
+			97, 108, 0, 2, 103, 101, 110, 111, 117, 115, 0, 2, 116, 105, 111, 110, 0, 102, 2, 105, 99, 17, 65, 110, 17, 67, 3, 6, 124, 83,
+			0, 99, 105, 97, 110, 3, 6, 124, 91, 13, 50, 0, 4, 1, 21, 2, 100, 111, 32, 3, 6, 132, 0, 2, 98, 97, 32, 0, 2, 113,
+			117, 101, 32, 0, 2, 119, 111, 0, 99, 104, 101, 2, 32, 24, 3, 6, 132, 91, 0, 4, 1, 99, 2, 100, 97, 108, 3, 6, 140, 0,
+			2, 122, 111, 110, 32, 0, 97, 108, 1, 10, 2, 32, 3, 8, 113, 13, 55, 0, 117, 115, 1, 10, 3, 8, 113, 13, 89, 0, 99, 111,
+			1, 10, 2, 32, 3, 8, 113, 49, 139, 0, 102, 121, 1, 10, 2, 32, 3, 8, 113, 83, 140, 0, 4, 1, 10, 2, 99, 32, 3, 8,
+			124, 0, 1, 10, 2, 99, 97, 32, 0, 1, 10, 2, 99, 97, 108, 0, 1, 10, 2, 99, 105, 17, 67, 101, 32, 0, 1, 10, 2, 99,
+			105, 115, 109, 32, 0, 1, 10, 2, 99, 105, 115, 116, 32, 0, 1, 100, 2, 32, 0, 1, 104, 21, 21, 2, 32, 0, 1, 107, 115, 10,
+			2, 32, 0, 2, 99, 117, 115, 32, 0, 4, 1, 21, 2, 17, 67, 97, 116, 101, 32, 3, 8, 125, 0, 1, 21, 2, 17, 67, 97, 116,
+			111, 114, 32, 0, 1, 104, 2, 32, 3, 8, 140, 0, 117, 1, 10, 2, 109, 3, 8, 144, 0, 98, 108, 121, 1, 21, 2, 32, 14, 128,
+			169, 132, 3, 13, 71, 55, 2, 124, 0, 98, 108, 101, 1, 21, 2, 32, 14, 128, 137, 132, 3, 13, 71, 118, 0, 98, 108, 101, 115, 1,
+			21, 2, 32, 14, 128, 137, 133, 3, 13, 71, 118, 88, 0, 4, 1, 98, 98, 2, 32, 3, 37, 0, 1, 104, 115, 2, 32, 0, 2, 32,
+			0, 100, 104, 2, 32, 0, 4, 1, 21, 2, 99, 101, 32, 3, 113, 0, 1, 21, 2, 99, 101, 100, 32, 0, 1, 102, 2, 100, 101, 108,
+			0, 2, 111, 0, 4, 99, 101, 1, 102, 102, 111, 3, 113, 89, 0, 99, 101, 1, 118, 114, 101, 115, 0, 4, 3, 124, 0, 1, 10, 2,
+			17, 67, 101, 110, 99, 0, 1, 10, 2, 17, 67, 101, 110, 116, 0, 1, 10, 2, 122, 101, 110, 0, 1, 17, 67, 2, 120, 12, 12, 0,
+			1, 21, 2, 17, 67, 101, 114, 0, 1, 21, 2, 99, 101, 110, 99, 101, 0, 1, 21, 2, 108, 101, 115, 115, 0, 1, 21, 2, 110, 101,
+			115, 115, 0, 1, 99, 99, 97, 2, 100, 0, 1, 108, 2, 98, 101, 114, 0, 1, 108, 108, 101, 116, 110, 0, 1, 112, 117, 2, 100, 101,
+			0, 1, 114, 98, 2, 100, 103, 0, 1, 114, 105, 2, 100, 0, 1, 115, 115, 111, 103, 2, 112, 0, 2, 17, 66, 101, 101, 0, 2, 17,
+			66, 101, 108, 32, 0, 2, 17, 66, 101, 116, 32, 0, 2, 97, 110, 105, 32, 0, 2, 98, 105, 108, 105, 116, 0, 2, 100, 101, 111, 0,
+			8, 2, 100, 105, 0, 8, 103, 111, 108, 0, 8, 108, 2, 17, 67, 121, 32, 0, 8, 112, 2, 116, 121, 32, 0, 112, 101, 100, 101, 3,
+			124, 48, 132, 72, 0, 99, 104, 8, 3, 124, 49, 0, 98, 101, 1, 116, 2, 116, 3, 124, 71, 6, 122, 0, 102, 101, 1, 110, 97, 109,
+			2, 115, 3, 124, 83, 122, 0, 102, 105, 101, 114, 2, 32, 3, 124, 83, 148, 0, 4, 99, 104, 1, 108, 2, 32, 3, 124, 101, 0, 99,
+			104, 1, 108, 2, 101, 114, 32, 0, 105, 2, 32, 3, 124, 140, 0, 99, 101, 2, 108, 108, 105, 32, 3, 125, 76, 6, 122, 0, 4, 1,
+			17, 67, 29, 2, 17, 67, 97, 32, 3, 132, 0, 1, 17, 67, 29, 2, 17, 67, 111, 32, 0, 1, 102, 2, 106, 0, 2, 98, 111, 32,
+			0, 2, 113, 117, 32, 0, 5, 7, 2, 111, 0, 8, 108, 2, 98, 114, 101, 0, 122, 122, 8, 112, 3, 132, 47, 89, 0, 4, 1, 10,
+			2, 122, 97, 98, 108, 3, 140, 0, 1, 17, 67, 29, 2, 17, 67, 101, 114, 32, 0, 1, 17, 67, 29, 2, 17, 67, 121, 32, 0, 1,
+			17, 67, 29, 2, 32, 0, 1, 21, 2, 17, 67, 105, 110, 103, 0, 1, 29, 2, 28, 22, 12, 12, 12, 0, 1, 98, 2, 32, 0, 1,
+			98, 2, 98, 108, 101, 32, 0, 1, 99, 2, 32, 0, 1, 102, 2, 98, 114, 101, 0, 1, 104, 2, 106, 0, 1, 108, 2, 98, 101, 108,
+			0, 1, 114, 2, 102, 108, 0, 1, 114, 98, 2, 100, 108, 0, 1, 114, 99, 115, 2, 98, 101, 114, 0, 1, 114, 102, 2, 100, 97, 121,
+			0, 1, 114, 112, 2, 99, 101, 0, 1, 115, 2, 122, 17, 65, 0, 1, 116, 110, 101, 2, 99, 101, 0, 1, 116, 115, 2, 102, 108, 0,
+			1, 118, 2, 98, 114, 0, 1, 118, 100, 97, 2, 99, 101, 0, 1, 118, 101, 100, 2, 99, 101, 0, 2, 17, 66, 101, 13, 0, 2, 98,
+			101, 114, 32, 0, 2, 100, 101, 111, 108, 0, 2, 100, 101, 114, 12, 32, 0, 2, 100, 101, 114, 32, 12, 0, 8, 2, 17, 66, 111, 0,
+			8, 2, 17, 67, 121, 32, 0, 8, 2, 97, 0, 8, 2, 98, 0, 8, 2, 99, 0, 8, 2, 100, 0, 8, 2, 100, 108, 101, 0, 8,
+			2, 104, 0, 8, 2, 111, 0, 8, 108, 2, 98, 114, 0, 8, 114, 116, 115, 2, 97, 116, 0, 8, 115, 2, 100, 101, 114, 0, 8, 115,
+			2, 100, 108, 0, 8, 115, 2, 112, 104, 0, 104, 105, 1, 110, 3, 140, 13, 0, 99, 104, 97, 101, 108, 1, 109, 3, 140, 49, 118, 0,
+			98, 97, 98, 1, 21, 3, 140, 71, 13, 71, 0, 100, 101, 97, 8, 3, 140, 72, 6, 144, 0, 4, 122, 2, 101, 114, 32, 3, 140, 88,
+			0, 122, 101, 1, 108, 10, 2, 32, 14, 128, 128, 131, 0, 122, 101, 2, 32, 0, 122, 101, 2, 100, 32, 0, 122, 101, 100, 1, 108, 10,
+			2, 32, 14, 128, 128, 132, 3, 140, 88, 72, 0, 122, 101, 115, 1, 108, 10, 2, 32, 14, 128, 128, 132, 3, 140, 88, 125, 88, 0, 122,
+			97, 2, 116, 105, 111, 110, 3, 140, 88, 141, 0, 106, 2, 17, 67, 3, 141, 0, 7, 6, 106, 0, 2, 106, 3, 0, 4, 1, 110, 2,
+			97, 32, 3, 57, 0, 2, 195, 188, 0, 4, 111, 107, 117, 108, 108, 2, 32, 14, 128, 128, 134, 3, 57, 131, 49, 137, 47, 107, 0, 195,
+			182, 107, 117, 108, 108, 2, 32, 14, 128, 128, 134, 0, 97, 103, 101, 114, 3, 57, 141, 81, 114, 0, 117, 97, 110, 3, 58, 6, 121, 50,
+			0, 3, 75, 0, 105, 104, 97, 8, 2, 100, 3, 75, 113, 107, 121, 0, 97, 8, 2, 109, 97, 105, 3, 75, 119, 0, 101, 114, 101, 8,
+			2, 17, 67, 3, 75, 122, 34, 13, 0, 101, 115, 8, 2, 117, 105, 3, 75, 122, 88, 0, 117, 100, 101, 111, 8, 3, 75, 137, 6, 72,
+			141, 139, 0, 111, 97, 8, 2, 110, 21, 3, 75, 139, 6, 35, 0, 117, 97, 110, 8, 3, 107, 58, 121, 50, 0, 7, 6, 107, 0, 2,
+			107, 3, 0, 4, 3, 49, 0, 8, 2, 18, 66, 17, 71, 0, 8, 2, 104, 17, 71, 0, 8, 2, 119, 17, 71, 0, 104, 2, 17, 65,
+			32, 0, 104, 8, 2, 114, 21, 21, 0, 105, 110, 101, 115, 105, 115, 3, 49, 13, 50, 6, 132, 89, 125, 89, 0, 106, 8, 2, 101, 21,
+			3, 49, 57, 0, 117, 97, 110, 3, 49, 58, 35, 50, 0, 105, 8, 2, 108, 17, 67, 21, 3, 49, 113, 0, 104, 97, 8, 3, 49, 121,
+			0, 105, 8, 2, 108, 108, 21, 3, 49, 124, 0, 105, 108, 111, 8, 2, 21, 3, 49, 124, 55, 13, 0, 104, 97, 114, 3, 49, 130, 0,
+			117, 2, 99, 104, 3, 49, 137, 0, 117, 119, 97, 105, 116, 3, 49, 137, 58, 6, 141, 47, 0, 121, 111, 3, 49, 140, 139, 0, 4, 110,
+			2, 105, 102, 3, 50, 0, 110, 2, 105, 116, 0, 110, 2, 105, 118, 0, 110, 2, 111, 98, 0, 110, 2, 111, 119, 0, 110, 8, 2, 17,
+			71, 0, 7, 6, 108, 0, 4, 1, 108, 3, 0, 1, 108, 17, 65, 2, 32, 3, 0, 111, 1, 21, 2, 103, 111, 117, 115, 3, 8, 55,
+			13, 0, 105, 110, 103, 1, 116, 10, 2, 32, 3, 10, 55, 124, 68, 0, 105, 110, 103, 1, 103, 110, 2, 32, 3, 14, 55, 124, 68, 0,
+			121, 1, 108, 21, 2, 32, 14, 128, 128, 130, 3, 37, 0, 4, 3, 55, 0, 1, 17, 65, 2, 108, 121, 32, 0, 1, 114, 2, 32, 0,
+			1, 119, 2, 32, 0, 2, 17, 67, 0, 2, 32, 0, 2, 69, 0, 8, 2, 104, 17, 71, 0, 108, 1, 17, 65, 0, 108, 1, 17, 65,
+			2, 17, 65, 0, 108, 1, 39, 17, 65, 0, 108, 1, 121, 0, 108, 2, 17, 67, 0, 108, 8, 2, 17, 71, 0, 108, 101, 2, 32, 0,
+			4, 121, 1, 21, 2, 32, 14, 128, 130, 130, 3, 55, 2, 37, 0, 121, 1, 102, 101, 105, 2, 32, 14, 128, 128, 130, 0, 121, 1, 102,
+			102, 2, 32, 14, 128, 128, 130, 0, 121, 1, 102, 111, 2, 32, 14, 128, 128, 130, 0, 121, 1, 108, 117, 102, 10, 2, 32, 14, 136, 128,
+			130, 0, 121, 1, 111, 2, 32, 0, 121, 1, 112, 10, 2, 32, 14, 128, 128, 130, 0, 69, 115, 115, 1, 21, 2, 32, 14, 128, 130, 132,
+			3, 55, 13, 89, 0, 69, 115, 115, 108, 121, 1, 21, 2, 32, 14, 128, 130, 134, 3, 55, 13, 89, 55, 2, 37, 0, 106, 117, 8, 3,
+			55, 57, 137, 0, 105, 98, 8, 2, 114, 101, 116, 116, 3, 55, 113, 71, 0, 121, 8, 2, 100, 3, 55, 124, 0, 105, 110, 117, 120, 3,
+			55, 124, 50, 129, 49, 89, 0, 105, 109, 1, 10, 2, 101, 110, 116, 3, 55, 124, 65, 0, 105, 110, 103, 1, 17, 66, 10, 2, 32, 3,
+			55, 124, 68, 0, 105, 110, 103, 115, 1, 17, 66, 10, 2, 32, 3, 55, 124, 68, 88, 0, 105, 115, 116, 101, 110, 3, 55, 124, 89, 13,
+			50, 0, 105, 98, 114, 101, 8, 2, 14, 128, 132, 133, 3, 55, 132, 71, 34, 13, 0, 111, 5, 3, 8, 2, 103, 25, 3, 55, 134, 0,
+			117, 2, 110, 97, 3, 55, 137, 0, 4, 121, 1, 102, 2, 32, 3, 55, 140, 0, 121, 1, 112, 2, 32, 0, 121, 1, 112, 105, 116, 108,
+			117, 109, 0, 105, 107, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 140, 49, 0, 4, 108, 101, 100, 1, 21, 21, 2, 32, 14, 128,
+			136, 131, 3, 72, 0, 108, 101, 100, 1, 111, 21, 21, 2, 32, 14, 128, 136, 131, 0, 108, 97, 110, 8, 3, 105, 2, 35, 50, 0, 1,
+			17, 66, 2, 32, 3, 118, 0, 105, 110, 103, 1, 108, 10, 2, 32, 14, 128, 152, 132, 3, 124, 68, 0, 7, 6, 109, 0, 4, 1, 17,
+			66, 2, 32, 3, 13, 65, 0, 1, 104, 2, 32, 0, 110, 8, 2, 101, 3, 50, 0, 4, 3, 65, 0, 1, 108, 2, 32, 0, 98, 1,
+			111, 2, 101, 0, 98, 2, 32, 0, 98, 8, 111, 98, 2, 25, 0, 98, 8, 117, 100, 0, 109, 0, 110, 2, 32, 0, 101, 116, 97, 8,
+			2, 108, 108, 117, 3, 65, 2, 122, 47, 35, 0, 101, 1, 17, 66, 10, 2, 32, 3, 65, 2, 124, 0, 4, 97, 108, 8, 2, 102, 14,
+			128, 132, 131, 3, 65, 4, 35, 55, 0, 97, 108, 8, 2, 110, 14, 128, 132, 131, 0, 97, 108, 8, 2, 112, 14, 128, 132, 131, 0, 97,
+			108, 8, 2, 116, 114, 14, 128, 132, 131, 0, 101, 116, 97, 8, 2, 21, 3, 65, 4, 122, 47, 13, 0, 117, 108, 116, 105, 8, 2, 21,
+			21, 14, 128, 132, 133, 3, 65, 4, 129, 55, 47, 124, 0, 101, 1, 114, 111, 116, 2, 110, 116, 12, 3, 65, 6, 122, 0, 69, 110, 116,
+			97, 114, 121, 2, 32, 3, 65, 6, 122, 50, 47, 13, 34, 2, 124, 0, 101, 110, 116, 101, 100, 1, 17, 67, 3, 65, 6, 122, 50, 47,
+			124, 72, 0, 4, 99, 8, 2, 18, 70, 21, 3, 65, 13, 0, 99, 8, 2, 32, 18, 70, 0, 111, 2, 110, 111, 116, 111, 0, 101, 116,
+			97, 98, 111, 3, 65, 13, 47, 6, 35, 71, 126, 0, 101, 116, 97, 108, 108, 8, 2, 105, 99, 3, 65, 13, 47, 35, 55, 0, 4, 97,
+			99, 8, 2, 97, 100, 14, 128, 132, 131, 3, 65, 13, 49, 0, 97, 99, 8, 2, 98, 14, 128, 132, 131, 0, 97, 99, 8, 2, 100, 14,
+			128, 132, 131, 0, 97, 99, 8, 2, 108, 14, 128, 132, 131, 0, 97, 99, 8, 2, 109, 14, 128, 132, 131, 0, 99, 8, 2, 17, 65, 0,
+			99, 8, 2, 17, 67, 21, 0, 99, 8, 2, 32, 17, 65, 0, 99, 8, 2, 32, 17, 67, 0, 4, 101, 110, 1, 21, 2, 32, 28, 18,
+			3, 65, 13, 50, 0, 111, 110, 2, 111, 112, 111, 108, 18, 67, 0, 111, 110, 111, 2, 103, 97, 3, 65, 13, 50, 6, 126, 0, 4, 69,
+			110, 116, 2, 32, 3, 65, 13, 50, 47, 0, 101, 110, 116, 1, 10, 2, 32, 14, 128, 128, 132, 0, 4, 101, 110, 116, 39, 115, 1, 10,
+			2, 32, 14, 128, 128, 134, 3, 65, 13, 50, 47, 89, 0, 101, 110, 116, 115, 1, 10, 2, 32, 14, 128, 128, 133, 0, 4, 97, 108, 8,
+			2, 101, 118, 3, 65, 13, 55, 0, 97, 108, 8, 2, 105, 103, 0, 111, 98, 105, 108, 101, 1, 10, 3, 65, 13, 71, 132, 55, 0, 111,
+			117, 116, 104, 1, 10, 2, 32, 3, 65, 13, 87, 0, 97, 8, 2, 109, 3, 65, 35, 0, 99, 8, 2, 105, 110, 3, 65, 35, 49, 0,
+			97, 99, 104, 105, 97, 8, 3, 65, 35, 49, 144, 0, 98, 108, 121, 3, 65, 71, 55, 2, 124, 0, 101, 116, 97, 108, 8, 2, 17, 67,
+			3, 65, 122, 47, 118, 0, 101, 110, 1, 21, 2, 32, 3, 65, 122, 50, 0, 101, 110, 116, 5, 8, 1, 10, 2, 32, 14, 128, 128, 132,
+			3, 65, 122, 50, 47, 0, 101, 110, 116, 115, 5, 8, 1, 10, 2, 32, 14, 128, 128, 133, 3, 65, 122, 50, 47, 89, 0, 101, 103, 97,
+			8, 3, 65, 122, 81, 13, 0, 111, 110, 111, 8, 3, 65, 126, 50, 139, 0, 111, 110, 2, 111, 120, 3, 65, 129, 50, 0, 117, 108, 116,
+			105, 8, 3, 65, 129, 55, 47, 124, 0, 111, 117, 116, 104, 1, 10, 2, 32, 28, 17, 3, 65, 138, 87, 0, 111, 99, 104, 97, 8, 3,
+			65, 139, 49, 13, 0, 111, 115, 116, 1, 21, 2, 32, 14, 128, 128, 132, 3, 65, 139, 89, 47, 0, 97, 121, 111, 114, 5, 35, 3, 65,
+			143, 0, 7, 6, 110, 0, 4, 1, 110, 3, 0, 4, 1, 110, 2, 32, 3, 0, 4, 100, 1, 32, 50, 2, 32, 3, 0, 101, 1, 110,
+			10, 2, 32, 3, 0, 2, 17, 67, 111, 32, 3, 8, 50, 0, 121, 97, 1, 10, 2, 32, 3, 8, 50, 57, 13, 0, 4, 1, 17, 66,
+			2, 32, 3, 13, 50, 0, 1, 69, 2, 32, 0, 39, 116, 3, 14, 50, 47, 0, 8, 2, 103, 17, 71, 12, 3, 14, 68, 0, 4, 3,
+			50, 0, 1, 21, 2, 99, 104, 0, 1, 97, 105, 10, 2, 32, 14, 128, 128, 129, 0, 1, 103, 2, 32, 0, 1, 103, 2, 105, 110, 103,
+			12, 0, 1, 108, 2, 32, 0, 2, 107, 110, 0, 101, 1, 17, 66, 10, 2, 32, 3, 50, 2, 124, 0, 97, 110, 111, 8, 2, 14, 128,
+			132, 132, 3, 50, 4, 35, 50, 139, 0, 111, 110, 8, 2, 21, 14, 128, 132, 131, 3, 50, 4, 126, 50, 0, 101, 119, 115, 8, 2, 14,
+			128, 132, 132, 3, 50, 6, 57, 137, 88, 0, 101, 119, 115, 5, 3, 8, 2, 14, 128, 132, 132, 3, 50, 6, 137, 88, 0, 101, 115, 115,
+			1, 10, 2, 32, 14, 136, 130, 132, 3, 50, 13, 89, 0, 101, 99, 101, 115, 115, 105, 116, 3, 50, 13, 89, 122, 89, 124, 47, 0, 97,
+			118, 105, 103, 8, 3, 50, 35, 84, 124, 81, 0, 39, 116, 1, 17, 65, 3, 50, 47, 0, 107, 5, 7, 3, 50, 49, 0, 115, 1, 97,
+			105, 10, 2, 32, 14, 128, 128, 130, 3, 50, 88, 0, 101, 115, 115, 5, 8, 1, 10, 2, 32, 14, 136, 130, 132, 3, 50, 122, 89, 0,
+			111, 110, 99, 104, 97, 108, 97, 5, 3, 2, 110, 3, 50, 126, 50, 91, 13, 55, 6, 121, 0, 111, 110, 99, 104, 97, 108, 97, 2, 110,
+			3, 50, 126, 50, 91, 13, 55, 13, 0, 117, 114, 115, 101, 8, 2, 17, 66, 3, 50, 131, 89, 0, 101, 111, 8, 3, 50, 132, 139, 0,
+			97, 117, 115, 101, 3, 50, 133, 89, 124, 0, 111, 97, 117, 116, 111, 8, 2, 14, 128, 132, 134, 3, 50, 139, 133, 47, 139, 0, 105, 110,
+			116, 104, 3, 50, 140, 50, 87, 0, 97, 109, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 50, 141, 65, 0, 4, 1, 21, 2, 99, 17,
+			67, 3, 68, 0, 2, 99, 32, 0, 2, 120, 0, 107, 3, 68, 49, 0, 7, 6, 111, 0, 4, 2, 98, 106, 101, 3, 2, 126, 0, 8,
+			2, 98, 115, 0, 8, 2, 98, 116, 0, 112, 112, 111, 114, 2, 116, 117, 3, 2, 126, 48, 114, 0, 98, 115, 8, 2, 101, 114, 3, 2,
+			126, 71, 88, 0, 4, 1, 29, 2, 28, 19, 12, 12, 12, 3, 2, 127, 0, 2, 98, 108, 105, 103, 97, 116, 111, 0, 5, 3, 8, 2,
+			98, 115, 0, 5, 3, 8, 2, 98, 116, 0, 8, 2, 98, 108, 0, 4, 1, 99, 2, 105, 110, 99, 105, 3, 2, 139, 0, 1, 100, 2,
+			100, 101, 99, 0, 1, 108, 2, 99, 97, 116, 0, 8, 2, 98, 101, 115, 0, 39, 8, 2, 14, 128, 132, 130, 0, 120, 121, 8, 2, 21,
+			21, 3, 4, 126, 49, 89, 113, 0, 1, 108, 2, 99, 111, 109, 3, 4, 139, 0, 101, 2, 118, 101, 3, 4, 139, 6, 122, 0, 4, 2,
+			17, 67, 105, 99, 32, 3, 6, 126, 0, 2, 17, 67, 105, 99, 97, 108, 0, 2, 103, 101, 110, 111, 117, 115, 0, 2, 103, 101, 110, 121,
+			0, 4, 112, 111, 108, 1, 21, 2, 18, 67, 3, 6, 126, 48, 13, 55, 0, 112, 111, 108, 1, 21, 2, 105, 18, 71, 0, 99, 114, 97,
+			116, 101, 115, 2, 32, 3, 6, 126, 49, 34, 119, 47, 132, 88, 0, 120, 2, 105, 100, 101, 3, 6, 126, 49, 89, 0, 109, 101, 116, 101,
+			114, 1, 21, 3, 6, 126, 65, 124, 47, 114, 0, 103, 114, 97, 112, 104, 101, 114, 1, 21, 3, 6, 126, 81, 34, 13, 83, 114, 0, 112,
+			104, 97, 1, 99, 114, 2, 103, 3, 6, 126, 83, 13, 0, 4, 1, 116, 115, 117, 99, 2, 100, 105, 3, 6, 139, 0, 2, 17, 66, 97,
+			32, 0, 2, 17, 66, 101, 111, 110, 0, 2, 17, 66, 105, 17, 65, 0, 2, 17, 67, 105, 32, 0, 2, 17, 67, 111, 32, 0, 2, 17,
+			67, 111, 105, 115, 116, 0, 2, 98, 105, 99, 32, 0, 2, 99, 114, 101, 32, 0, 97, 2, 32, 3, 6, 139, 13, 0, 4, 105, 2, 110,
+			97, 32, 3, 6, 142, 0, 121, 2, 17, 65, 32, 0, 101, 97, 2, 32, 3, 6, 144, 0, 4, 1, 10, 2, 112, 104, 101, 114, 3, 8,
+			13, 0, 2, 99, 121, 116, 101, 32, 0, 103, 1, 108, 21, 2, 121, 3, 8, 13, 75, 0, 103, 105, 115, 109, 1, 108, 3, 8, 13, 75,
+			124, 88, 13, 65, 0, 112, 104, 101, 1, 10, 2, 32, 3, 8, 13, 83, 2, 124, 0, 1, 17, 67, 21, 21, 2, 32, 3, 8, 139, 0,
+			4, 1, 10, 2, 100, 121, 32, 3, 13, 0, 1, 10, 2, 103, 101, 110, 32, 0, 1, 10, 2, 112, 32, 0, 1, 10, 2, 112, 104, 121,
+			0, 1, 102, 102, 2, 99, 17, 65, 0, 1, 104, 115, 105, 98, 2, 112, 0, 1, 104, 116, 101, 109, 2, 100, 32, 0, 1, 105, 114, 101,
+			112, 2, 100, 32, 0, 1, 109, 2, 120, 0, 1, 109, 109, 2, 100, 111, 114, 0, 1, 115, 2, 112, 104, 105, 115, 116, 105, 99, 0, 1,
+			116, 2, 98, 97, 99, 99, 0, 1, 116, 115, 117, 99, 2, 100, 0, 2, 102, 102, 105, 99, 105, 0, 2, 112, 105, 110, 105, 0, 8, 2,
+			99, 99, 97, 115, 105, 0, 8, 2, 99, 99, 108, 117, 0, 102, 2, 102, 101, 110, 0, 4, 112, 1, 10, 2, 121, 32, 3, 13, 48, 0,
+			112, 112, 2, 114, 101, 115, 0, 112, 111, 108, 105, 116, 97, 110, 3, 13, 48, 6, 126, 55, 124, 47, 13, 50, 0, 112, 101, 100, 1, 10,
+			2, 32, 3, 13, 48, 72, 0, 112, 105, 110, 103, 1, 10, 2, 32, 3, 13, 48, 124, 68, 0, 99, 107, 1, 17, 67, 11, 10, 2, 32,
+			3, 13, 49, 0, 4, 99, 99, 117, 114, 3, 13, 49, 131, 0, 99, 99, 117, 114, 114, 0, 4, 99, 99, 117, 114, 5, 5, 3, 13, 49,
+			151, 0, 99, 99, 117, 114, 114, 5, 5, 0, 103, 2, 101, 116, 105, 99, 3, 13, 75, 0, 4, 105, 115, 101, 1, 112, 114, 111, 3, 13,
+			89, 0, 105, 115, 101, 1, 116, 114, 0, 105, 120, 2, 32, 3, 58, 35, 0, 105, 115, 1, 21, 2, 32, 3, 58, 121, 0, 4, 105, 114,
+			3, 58, 130, 0, 105, 114, 101, 0, 101, 1, 10, 2, 115, 32, 14, 128, 128, 130, 3, 88, 0, 101, 115, 111, 112, 104, 97, 3, 113, 89,
+			126, 83, 13, 0, 4, 3, 126, 0, 1, 29, 2, 99, 116, 0, 1, 98, 2, 100, 121, 32, 0, 1, 104, 2, 112, 32, 0, 1, 108, 102,
+			2, 112, 32, 0, 1, 109, 2, 100, 101, 108, 0, 1, 109, 2, 100, 101, 114, 0, 1, 109, 2, 100, 101, 115, 116, 0, 1, 112, 2, 112,
+			32, 0, 1, 114, 2, 103, 101, 114, 0, 1, 114, 2, 112, 32, 0, 1, 114, 112, 2, 112, 101, 0, 1, 116, 2, 112, 32, 0, 2, 17,
+			66, 101, 17, 67, 111, 32, 0, 2, 17, 67, 101, 109, 105, 99, 0, 2, 17, 67, 101, 116, 32, 0, 2, 98, 108, 105, 103, 97, 0, 2,
+			98, 108, 111, 0, 2, 98, 115, 116, 105, 110, 0, 2, 102, 102, 105, 99, 0, 2, 120, 12, 12, 0, 8, 0, 8, 2, 17, 67, 121, 12,
+			0, 8, 2, 112, 101, 114, 0, 8, 98, 2, 100, 121, 0, 8, 114, 2, 98, 101, 114, 0, 104, 1, 106, 2, 110, 0, 112, 116, 111, 8,
+			3, 126, 48, 47, 139, 0, 99, 116, 111, 8, 2, 21, 3, 126, 49, 47, 13, 0, 4, 120, 121, 3, 126, 49, 89, 124, 0, 120, 121, 8,
+			2, 103, 0, 98, 115, 111, 2, 108, 3, 126, 71, 89, 13, 0, 4, 103, 101, 1, 108, 21, 2, 32, 3, 126, 81, 0, 103, 117, 101, 1,
+			21, 21, 0, 1, 29, 3, 127, 0, 4, 1, 100, 2, 122, 101, 110, 3, 129, 0, 1, 116, 2, 110, 103, 117, 0, 4, 101, 1, 102, 2,
+			116, 17, 65, 3, 132, 0, 101, 8, 2, 100, 0, 101, 8, 2, 115, 0, 97, 1, 114, 98, 2, 100, 3, 133, 0, 4, 5, 3, 1, 10,
+			2, 102, 102, 3, 134, 0, 5, 3, 1, 99, 2, 102, 102, 0, 5, 3, 1, 103, 2, 110, 103, 0, 5, 3, 1, 114, 2, 110, 103, 0,
+			5, 3, 1, 115, 2, 110, 103, 0, 5, 3, 2, 102, 116, 0, 5, 3, 8, 2, 102, 102, 0, 4, 39, 101, 114, 3, 136, 0, 97, 114,
+			0, 97, 114, 2, 32, 0, 4, 1, 100, 2, 105, 110, 103, 3, 137, 0, 101, 1, 104, 115, 2, 12, 0, 101, 114, 1, 100, 2, 32, 3,
+			137, 114, 0, 4, 1, 17, 67, 29, 2, 17, 66, 97, 108, 3, 139, 0, 1, 17, 67, 29, 2, 17, 66, 117, 115, 32, 0, 1, 21, 2,
+			105, 115, 116, 0, 1, 29, 2, 17, 66, 121, 32, 0, 1, 29, 2, 98, 97, 0, 1, 29, 2, 112, 104, 101, 114, 0, 1, 100, 2, 99,
+			105, 108, 0, 1, 102, 2, 99, 17, 65, 0, 1, 103, 105, 2, 32, 0, 1, 107, 2, 100, 17, 65, 0, 1, 110, 2, 98, 105, 108, 0,
+			1, 110, 2, 98, 108, 0, 1, 114, 99, 2, 97, 116, 0, 1, 114, 99, 2, 99, 117, 0, 1, 114, 112, 112, 97, 2, 112, 0, 1, 114,
+			116, 2, 106, 97, 110, 0, 2, 17, 66, 101, 13, 0, 2, 17, 66, 101, 110, 17, 67, 0, 2, 17, 66, 105, 110, 103, 0, 2, 17, 67,
+			97, 103, 104, 32, 0, 2, 32, 0, 2, 98, 101, 100, 0, 2, 98, 121, 32, 0, 2, 103, 97, 110, 32, 0, 2, 104, 17, 65, 0, 2,
+			105, 110, 103, 0, 2, 105, 115, 109, 0, 2, 107, 117, 0, 2, 107, 121, 32, 0, 2, 113, 117, 101, 32, 0, 2, 115, 104, 17, 65, 32,
+			0, 2, 116, 105, 111, 110, 0, 8, 2, 17, 66, 97, 108, 0, 8, 2, 100, 17, 65, 0, 8, 2, 122, 111, 0, 8, 17, 67, 2, 116,
+			105, 0, 8, 104, 2, 99, 117, 0, 8, 108, 2, 99, 17, 65, 0, 8, 109, 2, 98, 105, 108, 0, 8, 114, 2, 98, 111, 0, 8, 118,
+			2, 99, 17, 65, 0, 97, 0, 101, 0, 104, 0, 4, 112, 101, 1, 110, 117, 2, 110, 3, 139, 48, 13, 0, 112, 101, 8, 2, 110, 0,
+			112, 101, 100, 1, 99, 2, 32, 3, 139, 48, 72, 0, 112, 105, 110, 103, 1, 99, 2, 32, 3, 139, 48, 124, 68, 0, 99, 104, 1, 114,
+			116, 3, 139, 49, 0, 100, 111, 2, 114, 17, 65, 3, 139, 72, 13, 0, 4, 100, 111, 114, 3, 139, 72, 114, 0, 100, 111, 117, 114, 0,
+			103, 101, 110, 105, 2, 99, 3, 139, 75, 6, 122, 50, 124, 0, 4, 103, 8, 2, 114, 101, 3, 139, 81, 0, 103, 117, 101, 1, 114, 0,
+			103, 117, 101, 1, 118, 0, 99, 101, 97, 110, 3, 139, 91, 13, 50, 0, 99, 101, 97, 110, 2, 105, 99, 3, 139, 91, 124, 35, 50, 0,
+			105, 2, 99, 3, 139, 113, 0, 101, 114, 3, 139, 114, 0, 101, 1, 112, 2, 116, 105, 3, 139, 122, 0, 4, 101, 1, 112, 2, 109, 3,
+			139, 124, 0, 101, 1, 112, 2, 116, 0, 105, 2, 122, 17, 65, 3, 139, 140, 0, 4, 105, 3, 142, 0, 105, 2, 99, 101, 0, 105, 2,
+			99, 101, 13, 0, 105, 2, 99, 107, 0, 105, 115, 1, 117, 2, 32, 0, 121, 0, 105, 97, 3, 142, 13, 0, 7, 6, 112, 0, 4, 1,
+			115, 97, 114, 2, 98, 3, 0, 4, 2, 112, 3, 0, 2, 112, 104, 3, 0, 104, 111, 110, 121, 1, 10, 2, 32, 3, 8, 83, 13, 50,
+			124, 0, 104, 101, 108, 101, 115, 2, 32, 3, 8, 83, 13, 55, 132, 88, 0, 4, 116, 1, 105, 101, 3, 47, 0, 116, 8, 2, 17, 71,
+			0, 4, 3, 48, 0, 2, 104, 28, 20, 0, 2, 104, 97, 122, 97, 0, 2, 104, 111, 108, 101, 0, 8, 2, 18, 66, 17, 71, 0, 104,
+			2, 101, 114, 100, 0, 111, 114, 2, 116, 114, 97, 121, 3, 48, 2, 136, 0, 111, 108, 121, 2, 21, 21, 3, 48, 4, 126, 55, 124, 0,
+			121, 114, 111, 8, 2, 21, 21, 14, 128, 132, 132, 3, 48, 4, 140, 34, 139, 0, 97, 108, 101, 111, 8, 2, 21, 14, 128, 132, 133, 3,
+			48, 4, 141, 55, 132, 139, 0, 4, 97, 1, 109, 121, 115, 3, 48, 13, 0, 104, 97, 2, 109, 32, 0, 111, 116, 97, 2, 116, 3, 48,
+			13, 47, 141, 0, 121, 111, 110, 3, 48, 57, 126, 50, 0, 117, 8, 2, 116, 114, 3, 48, 57, 137, 0, 117, 114, 8, 2, 115, 117, 3,
+			48, 114, 0, 117, 116, 2, 32, 3, 48, 117, 47, 0, 111, 108, 121, 2, 21, 3, 48, 126, 55, 124, 0, 117, 116, 1, 115, 2, 32, 3,
+			48, 129, 47, 0, 105, 99, 111, 8, 3, 48, 132, 49, 139, 0, 107, 103, 3, 48, 132, 49, 141, 75, 6, 132, 0, 105, 101, 99, 101, 2,
+			32, 14, 128, 128, 133, 3, 48, 132, 89, 0, 121, 114, 111, 109, 2, 101, 3, 48, 140, 34, 6, 126, 65, 0, 110, 8, 2, 101, 117, 3,
+			50, 0, 110, 101, 117, 3, 50, 57, 137, 0, 4, 102, 8, 2, 17, 71, 3, 83, 0, 104, 0, 104, 8, 2, 17, 71, 0, 104, 8, 2,
+			18, 66, 17, 71, 0, 104, 101, 110, 121, 108, 3, 83, 4, 132, 50, 140, 55, 0, 104, 111, 116, 111, 8, 2, 21, 21, 14, 128, 132, 133,
+			3, 83, 4, 139, 47, 139, 0, 104, 121, 99, 111, 8, 3, 83, 4, 140, 49, 139, 0, 104, 116, 104, 8, 2, 17, 65, 3, 83, 87, 0,
+			104, 101, 110, 111, 109, 101, 2, 110, 3, 83, 113, 50, 126, 65, 124, 0, 104, 105, 108, 97, 8, 3, 83, 113, 55, 35, 0, 4, 104, 111,
+			116, 2, 111, 103, 114, 97, 112, 104, 12, 3, 83, 139, 47, 0, 104, 111, 116, 8, 2, 111, 18, 75, 12, 12, 0, 104, 111, 116, 111, 99,
+			111, 112, 3, 83, 139, 47, 13, 49, 126, 48, 0, 104, 111, 116, 111, 110, 3, 83, 139, 47, 126, 50, 0, 104, 111, 116, 111, 3, 83, 139,
+			47, 139, 0, 115, 8, 2, 17, 71, 3, 89, 0, 115, 121, 99, 104, 111, 2, 108, 111, 3, 89, 2, 140, 49, 126, 0, 115, 101, 117, 100,
+			111, 3, 89, 137, 72, 139, 0, 115, 121, 99, 104, 3, 89, 140, 49, 0, 115, 121, 99, 104, 111, 3, 89, 140, 49, 139, 0, 7, 6, 113,
+			0, 2, 113, 3, 0, 4, 3, 49, 0, 117, 1, 21, 2, 195, 169, 32, 0, 117, 1, 99, 97, 106, 0, 117, 2, 32, 0, 117, 2, 101,
+			114, 32, 0, 117, 101, 1, 21, 2, 32, 0, 117, 101, 1, 101, 104, 99, 0, 117, 101, 116, 116, 3, 49, 6, 122, 47, 0, 117, 105, 1,
+			115, 101, 109, 2, 116, 3, 49, 6, 132, 0, 117, 101, 117, 3, 49, 57, 137, 0, 117, 3, 49, 58, 0, 117, 2, 17, 67, 3, 49, 58,
+			13, 0, 117, 101, 8, 2, 32, 3, 49, 58, 122, 0, 117, 101, 115, 116, 3, 49, 58, 122, 89, 47, 0, 117, 101, 115, 116, 105, 111, 2,
+			110, 3, 49, 58, 122, 89, 76, 13, 0, 117, 121, 3, 49, 58, 124, 0, 4, 117, 97, 1, 115, 2, 17, 66, 3, 49, 58, 126, 0, 117,
+			97, 8, 2, 102, 0, 117, 97, 115, 2, 17, 65, 3, 49, 58, 141, 88, 0, 117, 97, 115, 105, 3, 49, 58, 141, 88, 140, 0, 117, 101,
+			116, 1, 97, 114, 3, 49, 113, 47, 0, 117, 111, 114, 1, 105, 108, 3, 49, 114, 0, 117, 97, 121, 3, 49, 132, 0, 117, 101, 116, 2,
+			32, 3, 49, 141, 0, 117, 101, 115, 8, 2, 17, 65, 3, 49, 141, 89, 0, 7, 6, 114, 0, 4, 1, 114, 2, 32, 3, 0, 100, 1,
+			32, 51, 2, 32, 3, 0, 109, 8, 2, 17, 65, 3, 4, 130, 122, 65, 0, 1, 21, 2, 17, 66, 3, 13, 0, 4, 3, 34, 0, 104,
+			1, 17, 67, 0, 104, 8, 2, 17, 71, 0, 114, 0, 119, 8, 2, 97, 3, 34, 2, 117, 0, 4, 114, 104, 101, 97, 3, 34, 6, 144,
+			0, 114, 104, 111, 101, 97, 0, 4, 121, 1, 110, 97, 10, 2, 32, 14, 128, 128, 130, 3, 34, 37, 0, 121, 1, 116, 110, 97, 10, 2,
+			32, 14, 128, 128, 130, 0, 105, 101, 115, 1, 116, 110, 97, 10, 2, 32, 14, 128, 128, 132, 3, 34, 37, 88, 0, 69, 114, 2, 32, 3,
+			34, 114, 0, 104, 121, 116, 104, 3, 34, 124, 86, 0, 4, 117, 110, 8, 2, 97, 3, 34, 129, 50, 0, 117, 110, 8, 2, 111, 0, 4,
+			104, 101, 117, 3, 34, 137, 0, 117, 8, 2, 98, 18, 66, 0, 117, 108, 101, 8, 2, 21, 3, 34, 137, 55, 0, 4, 104, 111, 8, 2,
+			100, 3, 34, 139, 0, 104, 111, 8, 2, 116, 0, 104, 111, 100, 111, 8, 2, 21, 3, 34, 139, 72, 13, 0, 4, 104, 105, 2, 110, 13,
+			3, 34, 140, 0, 104, 105, 2, 122, 0, 4, 1, 17, 67, 2, 32, 24, 3, 114, 0, 1, 101, 2, 32, 0, 7, 6, 115, 0, 4, 1,
+			10, 2, 99, 105, 111, 110, 3, 0, 4, 2, 99, 105, 111, 117, 115, 3, 0, 4, 2, 115, 3, 0, 116, 1, 32, 49, 2, 32, 3, 0,
+			104, 101, 39, 8, 3, 2, 91, 132, 0, 101, 108, 102, 2, 32, 3, 6, 89, 122, 55, 83, 0, 101, 108, 118, 101, 115, 2, 32, 3, 6,
+			89, 122, 55, 84, 88, 0, 105, 97, 2, 32, 3, 8, 88, 144, 0, 1, 10, 2, 117, 32, 3, 8, 89, 0, 99, 111, 112, 121, 1, 21,
+			2, 32, 3, 8, 89, 49, 13, 48, 2, 124, 0, 99, 105, 115, 2, 32, 3, 8, 89, 49, 124, 89, 0, 99, 105, 2, 32, 3, 8, 89,
+			49, 140, 0, 105, 97, 1, 17, 67, 2, 32, 3, 8, 89, 144, 0, 105, 97, 5, 3, 2, 32, 3, 8, 90, 13, 0, 104, 1, 17, 65,
+			2, 17, 65, 32, 3, 8, 91, 0, 115, 105, 111, 110, 3, 8, 91, 13, 50, 0, 115, 105, 111, 110, 5, 8, 2, 32, 3, 8, 91, 129,
+			50, 0, 105, 97, 110, 1, 21, 2, 32, 14, 128, 128, 129, 3, 50, 0, 4, 1, 10, 2, 105, 99, 32, 3, 88, 0, 1, 17, 65, 2,
+			105, 116, 105, 118, 0, 1, 18, 72, 2, 109, 17, 65, 110, 32, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 1, 32, 15, 2, 32, 0,
+			1, 32, 54, 49, 2, 32, 0, 1, 39, 32, 15, 2, 32, 0, 1, 97, 2, 101, 108, 32, 0, 1, 97, 2, 109, 0, 1, 97, 101, 2,
+			105, 101, 0, 1, 97, 101, 2, 105, 108, 0, 1, 97, 101, 2, 121, 0, 1, 97, 101, 108, 112, 2, 101, 0, 1, 97, 101, 112, 2, 101,
+			0, 1, 97, 101, 116, 2, 101, 0, 1, 97, 104, 112, 2, 101, 0, 1, 97, 108, 2, 101, 0, 1, 97, 109, 2, 101, 0, 1, 97, 112,
+			2, 101, 0, 1, 97, 114, 2, 101, 0, 1, 101, 2, 100, 0, 1, 103, 110, 2, 32, 14, 128, 128, 129, 0, 1, 105, 17, 65, 2, 121,
+			0, 1, 105, 97, 2, 101, 0, 1, 105, 111, 112, 2, 111, 110, 0, 1, 105, 114, 112, 2, 111, 0, 1, 109, 2, 105, 0, 1, 109, 2,
+			121, 0, 1, 110, 2, 32, 14, 128, 128, 129, 0, 1, 110, 2, 121, 32, 0, 1, 111, 2, 109, 0, 1, 111, 17, 67, 2, 69, 110, 0,
+			1, 111, 17, 67, 2, 69, 114, 0, 1, 117, 109, 2, 105, 99, 0, 2, 32, 0, 2, 109, 25, 0, 8, 97, 101, 2, 101, 0, 8, 97,
+			104, 2, 32, 0, 8, 101, 114, 2, 111, 0, 8, 105, 111, 17, 67, 2, 101, 0, 101, 1, 105, 117, 2, 32, 0, 101, 1, 111, 2, 32,
+			0, 101, 1, 111, 100, 2, 32, 0, 101, 1, 111, 111, 104, 99, 0, 101, 1, 111, 116, 2, 32, 0, 101, 1, 117, 97, 2, 32, 0, 101,
+			1, 117, 102, 2, 32, 0, 101, 1, 119, 0, 4, 105, 110, 1, 105, 97, 2, 32, 3, 88, 13, 50, 0, 105, 110, 1, 117, 2, 32, 0,
+			105, 98, 1, 17, 65, 3, 88, 13, 71, 0, 105, 1, 117, 2, 97, 3, 88, 124, 0, 4, 3, 89, 0, 1, 21, 2, 32, 28, 17, 14,
+			128, 128, 129, 0, 1, 21, 2, 104, 101, 97, 100, 32, 0, 1, 21, 2, 104, 105, 108, 108, 32, 0, 1, 21, 2, 104, 111, 117, 115, 0,
+			1, 97, 2, 101, 0, 1, 99, 2, 32, 0, 1, 99, 10, 2, 32, 14, 128, 128, 129, 0, 1, 101, 112, 10, 2, 32, 14, 128, 128, 129,
+			0, 1, 101, 116, 2, 32, 14, 128, 128, 129, 0, 1, 102, 2, 32, 0, 1, 102, 10, 2, 32, 14, 128, 128, 129, 0, 1, 104, 116, 2,
+			32, 0, 1, 104, 116, 10, 2, 32, 14, 128, 128, 129, 0, 1, 107, 2, 32, 0, 1, 107, 10, 2, 32, 14, 128, 128, 129, 0, 1, 112,
+			2, 32, 0, 1, 112, 10, 2, 32, 14, 128, 128, 129, 0, 1, 116, 2, 32, 14, 128, 128, 129, 0, 1, 116, 10, 2, 32, 14, 128, 128,
+			129, 0, 2, 115, 104, 0, 5, 3, 1, 101, 114, 2, 111, 117, 114, 0, 8, 2, 99, 17, 71, 0, 8, 2, 99, 18, 66, 17, 71, 0,
+			8, 2, 107, 17, 71, 0, 8, 2, 107, 18, 66, 17, 71, 0, 8, 2, 108, 17, 71, 0, 8, 2, 109, 17, 71, 0, 8, 2, 110, 17,
+			71, 0, 8, 2, 112, 17, 71, 0, 8, 2, 112, 18, 66, 17, 71, 0, 8, 2, 112, 104, 17, 71, 0, 8, 2, 113, 117, 0, 8, 2,
+			114, 105, 0, 8, 2, 116, 17, 71, 0, 8, 2, 116, 114, 17, 71, 0, 8, 2, 117, 0, 8, 2, 118, 97, 0, 8, 2, 118, 101, 0,
+			8, 2, 119, 17, 71, 0, 8, 17, 65, 17, 66, 2, 32, 24, 0, 8, 105, 109, 2, 104, 0, 99, 1, 117, 109, 2, 108, 0, 99, 2,
+			18, 67, 0, 101, 1, 111, 111, 2, 32, 0, 115, 1, 111, 114, 99, 2, 104, 0, 115, 2, 32, 0, 115, 2, 105, 99, 0, 115, 101, 2,
+			32, 0, 101, 109, 105, 8, 2, 21, 21, 14, 128, 132, 132, 3, 89, 4, 122, 65, 113, 0, 99, 105, 2, 98, 3, 89, 13, 0, 116, 8,
+			2, 32, 3, 89, 13, 50, 47, 0, 111, 109, 97, 8, 2, 108, 105, 3, 89, 13, 65, 121, 0, 105, 98, 1, 10, 3, 89, 13, 71, 0,
+			111, 99, 105, 101, 8, 2, 116, 3, 89, 13, 89, 147, 0, 116, 101, 105, 110, 3, 89, 47, 140, 50, 0, 112, 101, 97, 107, 1, 10, 2,
+			32, 14, 128, 128, 133, 3, 89, 48, 132, 49, 0, 4, 99, 2, 101, 112, 116, 3, 89, 49, 0, 99, 104, 2, 111, 0, 99, 104, 5, 3,
+			2, 101, 100, 0, 99, 104, 8, 2, 105, 115, 109, 0, 99, 97, 114, 8, 2, 97, 3, 89, 49, 35, 34, 0, 99, 104, 105, 122, 8, 3,
+			89, 49, 124, 47, 89, 0, 99, 104, 101, 2, 109, 3, 89, 49, 132, 0, 99, 97, 114, 99, 3, 89, 49, 143, 89, 0, 4, 101, 8, 2,
+			99, 108, 117, 3, 89, 113, 0, 101, 8, 2, 100, 117, 99, 0, 101, 99, 117, 114, 3, 89, 113, 49, 57, 146, 0, 101, 109, 105, 110, 8,
+			3, 89, 122, 65, 124, 50, 0, 121, 2, 110, 101, 114, 103, 3, 89, 124, 0, 105, 110, 103, 1, 108, 2, 32, 3, 89, 124, 68, 0, 111,
+			109, 101, 1, 21, 2, 32, 14, 128, 128, 132, 3, 89, 129, 65, 0, 111, 109, 101, 1, 111, 21, 21, 2, 32, 14, 128, 128, 132, 3, 89,
+			139, 65, 0, 105, 122, 101, 8, 2, 17, 67, 21, 3, 89, 140, 88, 0, 4, 105, 111, 110, 1, 17, 65, 3, 90, 13, 50, 0, 105, 111,
+			110, 5, 3, 1, 114, 101, 0, 105, 111, 110, 5, 8, 1, 17, 65, 3, 90, 129, 50, 0, 4, 99, 104, 2, 17, 67, 3, 91, 0, 99,
+			104, 2, 32, 0, 99, 104, 2, 101, 114, 32, 0, 99, 104, 8, 0, 99, 104, 8, 2, 105, 108, 0, 99, 104, 8, 101, 0, 104, 0, 104,
+			8, 2, 17, 71, 0, 104, 8, 2, 18, 66, 17, 71, 0, 115, 117, 114, 101, 1, 97, 3, 91, 6, 146, 0, 115, 105, 97, 2, 32, 3,
+			91, 13, 0, 105, 111, 110, 1, 17, 67, 3, 91, 13, 50, 0, 122, 8, 2, 21, 21, 3, 91, 88, 0, 4, 104, 105, 114, 101, 1, 10,
+			2, 32, 14, 128, 128, 133, 3, 91, 114, 0, 115, 117, 114, 0, 4, 104, 105, 112, 1, 10, 2, 32, 14, 128, 128, 132, 3, 91, 124, 48,
+			0, 104, 105, 112, 101, 1, 10, 2, 32, 0, 104, 105, 112, 115, 1, 10, 2, 32, 14, 128, 128, 133, 3, 91, 124, 48, 89, 0, 105, 111,
+			110, 5, 8, 1, 17, 67, 3, 91, 129, 50, 0, 195, 173, 111, 8, 3, 91, 132, 0, 115, 117, 101, 3, 91, 137, 0, 115, 117, 114, 1,
+			97, 3, 91, 146, 0, 1, 32, 54, 2, 32, 3, 113, 88, 0, 8, 2, 32, 3, 122, 89, 0, 4, 1, 101, 99, 21, 2, 32, 14, 128,
+			128, 129, 3, 125, 88, 0, 1, 101, 115, 10, 2, 32, 14, 128, 128, 129, 0, 1, 101, 115, 115, 10, 2, 32, 14, 128, 128, 130, 0, 7,
+			6, 116, 0, 4, 1, 115, 2, 108, 3, 0, 1, 116, 3, 0, 116, 2, 105, 32, 3, 8, 47, 0, 4, 101, 110, 5, 3, 1, 10, 2,
+			32, 3, 19, 42, 0, 116, 97, 110, 5, 3, 1, 10, 2, 32, 0, 116, 101, 110, 5, 3, 1, 10, 2, 32, 0, 116, 111, 110, 5, 3,
+			1, 10, 0, 116, 105, 110, 1, 101, 29, 2, 32, 3, 19, 50, 0, 4, 3, 47, 0, 2, 104, 28, 20, 0, 8, 2, 114, 17, 71, 0,
+			8, 2, 115, 17, 71, 0, 8, 2, 119, 17, 71, 0, 8, 105, 112, 2, 105, 97, 0, 116, 2, 105, 97, 32, 0, 115, 107, 8, 3, 47,
+			6, 13, 89, 49, 0, 4, 111, 2, 109, 111, 114, 114, 3, 47, 13, 0, 116, 117, 2, 114, 0, 114, 97, 110, 115, 8, 2, 110, 14, 128,
+			132, 133, 3, 47, 34, 35, 50, 89, 0, 4, 114, 105, 8, 2, 98, 117, 3, 47, 34, 124, 0, 114, 105, 8, 2, 103, 0, 114, 105, 8,
+			2, 103, 111, 110, 17, 65, 0, 114, 105, 8, 2, 110, 105, 0, 114, 105, 8, 2, 118, 105, 0, 114, 105, 8, 2, 120, 17, 65, 0, 4,
+			114, 105, 8, 2, 17, 65, 3, 47, 34, 140, 0, 114, 105, 8, 2, 17, 67, 17, 65, 0, 114, 105, 8, 2, 17, 67, 121, 0, 114, 105,
+			101, 8, 0, 114, 105, 98, 101, 3, 47, 34, 140, 71, 0, 4, 122, 3, 47, 89, 0, 122, 8, 2, 97, 114, 0, 4, 115, 101, 2, 32,
+			3, 47, 89, 37, 0, 122, 101, 2, 32, 0, 115, 117, 8, 3, 47, 89, 137, 0, 101, 114, 97, 8, 3, 47, 122, 34, 13, 0, 101, 107,
+			1, 21, 2, 32, 14, 128, 128, 131, 3, 47, 122, 49, 0, 101, 108, 101, 8, 3, 47, 122, 55, 113, 0, 111, 8, 2, 110, 110, 3, 47,
+			129, 0, 118, 2, 32, 3, 47, 132, 84, 132, 0, 119, 111, 8, 3, 47, 137, 0, 111, 119, 110, 1, 21, 2, 32, 14, 128, 128, 132, 3,
+			47, 138, 50, 0, 4, 99, 104, 3, 76, 0, 115, 99, 104, 0, 103, 97, 1, 114, 2, 103, 3, 81, 124, 0, 1, 21, 2, 105, 97, 3,
+			91, 0, 4, 1, 101, 105, 2, 97, 114, 121, 32, 3, 108, 0, 2, 17, 65, 28, 20, 0, 2, 97, 112, 32, 0, 2, 111, 111, 116, 104,
+			0, 101, 2, 114, 114, 101, 115, 116, 3, 108, 13, 0, 121, 112, 101, 3, 108, 140, 48, 0, 7, 6, 117, 0, 8, 2, 107, 114, 97, 105,
+			110, 3, 2, 57, 137, 0, 108, 1, 102, 2, 102, 105, 108, 3, 2, 117, 55, 0, 108, 116, 114, 97, 8, 2, 21, 3, 4, 117, 55, 47,
+			34, 35, 0, 4, 1, 21, 2, 100, 97, 32, 3, 6, 57, 137, 0, 1, 102, 2, 103, 97, 108, 0, 2, 17, 67, 105, 17, 65, 0, 2,
+			115, 105, 111, 110, 0, 2, 116, 105, 111, 110, 0, 101, 110, 116, 101, 3, 6, 58, 122, 50, 47, 141, 0, 4, 1, 108, 2, 115, 105, 111,
+			110, 3, 6, 137, 0, 1, 114, 2, 17, 67, 105, 17, 65, 0, 1, 114, 2, 115, 105, 111, 110, 0, 1, 115, 2, 17, 67, 17, 65, 32,
+			0, 1, 122, 2, 108, 32, 0, 2, 103, 97, 32, 0, 2, 107, 105, 32, 0, 2, 109, 97, 32, 0, 2, 109, 111, 32, 0, 2, 122, 122,
+			105, 32, 0, 5, 3, 1, 18, 73, 21, 2, 100, 97, 32, 0, 5, 3, 1, 104, 116, 2, 17, 67, 105, 17, 65, 0, 121, 2, 17, 65,
+			32, 3, 6, 137, 57, 0, 109, 1, 108, 108, 10, 2, 32, 3, 8, 13, 65, 0, 4, 1, 10, 2, 108, 111, 117, 115, 32, 3, 8, 57,
+			117, 0, 1, 21, 2, 108, 97, 32, 0, 1, 21, 2, 108, 97, 114, 0, 1, 21, 2, 108, 97, 116, 101, 0, 1, 21, 2, 108, 117, 109,
+			0, 1, 21, 2, 108, 117, 115, 32, 0, 108, 105, 1, 21, 2, 32, 3, 8, 57, 117, 55, 140, 0, 2, 97, 32, 3, 8, 57, 137, 0,
+			111, 117, 115, 1, 21, 3, 8, 57, 137, 13, 89, 0, 1, 104, 2, 32, 3, 8, 137, 0, 111, 117, 115, 1, 18, 66, 21, 3, 8, 137,
+			13, 89, 0, 108, 108, 121, 1, 102, 10, 2, 32, 3, 13, 55, 2, 124, 0, 4, 109, 1, 10, 2, 32, 3, 13, 65, 0, 109, 1, 99,
+			114, 105, 99, 0, 109, 1, 114, 2, 101, 110, 116, 0, 103, 103, 101, 1, 115, 2, 115, 116, 3, 13, 75, 122, 0, 4, 115, 1, 10, 2,
+			32, 3, 13, 89, 0, 115, 1, 99, 111, 102, 0, 97, 1, 103, 2, 114, 17, 65, 3, 35, 0, 2, 108, 17, 65, 3, 57, 117, 0, 4,
+			1, 25, 2, 116, 114, 105, 3, 57, 137, 0, 1, 100, 2, 108, 121, 0, 1, 104, 2, 109, 97, 110, 0, 1, 108, 97, 118, 0, 1, 108,
+			108, 2, 108, 0, 1, 108, 111, 118, 2, 109, 101, 0, 1, 110, 2, 97, 108, 32, 0, 1, 110, 2, 97, 116, 0, 1, 110, 97, 109, 0,
+			1, 110, 105, 116, 110, 111, 99, 0, 1, 115, 2, 108, 101, 32, 0, 2, 17, 67, 17, 65, 0, 2, 17, 67, 101, 17, 67, 111, 32, 0,
+			2, 32, 0, 2, 97, 0, 2, 97, 108, 32, 0, 2, 101, 115, 113, 0, 2, 105, 0, 2, 108, 101, 32, 0, 2, 109, 101, 0, 2, 111,
+			0, 2, 116, 121, 0, 8, 2, 116, 105, 108, 0, 8, 108, 111, 115, 2, 17, 67, 0, 103, 1, 112, 109, 2, 110, 0, 103, 104, 1, 104,
+			0, 117, 1, 99, 97, 118, 0, 117, 2, 109, 3, 57, 137, 13, 0, 97, 114, 121, 2, 32, 3, 57, 137, 13, 34, 37, 0, 99, 108, 101,
+			1, 110, 3, 57, 137, 49, 55, 124, 0, 99, 108, 101, 97, 114, 1, 110, 3, 57, 137, 49, 55, 145, 0, 109, 2, 101, 110, 116, 3, 57,
+			137, 65, 0, 115, 8, 2, 17, 65, 3, 57, 137, 88, 0, 115, 117, 114, 112, 3, 57, 137, 88, 6, 131, 48, 0, 115, 117, 114, 112, 5,
+			5, 3, 57, 137, 88, 6, 151, 48, 0, 115, 117, 2, 97, 108, 3, 57, 137, 90, 137, 0, 97, 114, 121, 5, 3, 2, 32, 3, 57, 137,
+			143, 34, 37, 0, 4, 1, 103, 2, 97, 108, 32, 3, 58, 0, 1, 103, 2, 105, 0, 97, 8, 103, 3, 58, 121, 0, 97, 1, 103, 21,
+			2, 103, 101, 3, 58, 124, 0, 4, 97, 1, 115, 2, 100, 101, 3, 58, 141, 0, 97, 1, 115, 2, 115, 0, 97, 103, 1, 115, 3, 58,
+			141, 75, 0, 4, 1, 98, 2, 100, 100, 104, 3, 117, 0, 1, 98, 2, 115, 104, 0, 1, 98, 2, 116, 99, 104, 0, 1, 99, 2, 115,
+			104, 0, 1, 112, 2, 115, 104, 0, 1, 112, 2, 115, 115, 0, 8, 102, 2, 108, 17, 67, 0, 4, 108, 1, 98, 2, 114, 3, 117, 55,
+			0, 108, 1, 98, 2, 119, 0, 108, 108, 1, 98, 0, 108, 108, 1, 102, 0, 108, 108, 1, 112, 0, 108, 108, 121, 1, 98, 3, 117, 55,
+			124, 0, 4, 108, 1, 99, 105, 10, 2, 116, 32, 3, 118, 0, 108, 1, 102, 10, 2, 32, 0, 1, 116, 116, 101, 108, 2, 99, 101, 3,
+			124, 0, 4, 115, 1, 98, 2, 105, 17, 65, 3, 124, 88, 0, 115, 1, 98, 2, 121, 0, 115, 105, 110, 101, 115, 115, 1, 98, 3, 124,
+			88, 50, 13, 89, 0, 4, 3, 129, 0, 1, 102, 2, 108, 99, 114, 0, 1, 108, 2, 99, 107, 0, 2, 103, 117, 17, 67, 0, 2, 108,
+			117, 108, 0, 2, 115, 104, 0, 2, 120, 17, 65, 12, 12, 12, 0, 8, 104, 115, 2, 116, 17, 67, 0, 8, 104, 115, 2, 116, 111, 0,
+			99, 117, 108, 3, 129, 49, 57, 117, 55, 0, 108, 5, 8, 1, 102, 10, 2, 32, 3, 129, 55, 0, 108, 108, 121, 5, 8, 1, 102, 10,
+			2, 32, 3, 129, 55, 2, 124, 0, 103, 1, 108, 112, 2, 17, 65, 3, 129, 81, 0, 115, 8, 2, 32, 3, 129, 88, 0, 97, 114, 1,
+			103, 2, 100, 3, 130, 0, 4, 1, 18, 66, 2, 32, 3, 137, 0, 1, 102, 2, 106, 105, 0, 1, 104, 99, 2, 17, 67, 17, 65, 0,
+			1, 104, 114, 2, 17, 67, 17, 65, 0, 1, 106, 2, 17, 67, 17, 65, 0, 1, 106, 2, 108, 105, 0, 1, 106, 10, 2, 17, 67, 17,
+			65, 0, 1, 108, 2, 17, 67, 17, 65, 0, 1, 108, 2, 97, 0, 1, 108, 2, 98, 114, 105, 0, 1, 110, 2, 99, 108, 0, 1, 114,
+			2, 17, 67, 17, 65, 0, 1, 114, 2, 97, 17, 67, 12, 0, 1, 114, 2, 105, 0, 1, 114, 2, 116, 104, 0, 1, 115, 2, 17, 67,
+			17, 65, 0, 1, 115, 2, 105, 0, 1, 119, 2, 17, 67, 17, 65, 0, 1, 119, 2, 99, 104, 17, 65, 0, 2, 17, 67, 117, 32, 0,
+			2, 32, 24, 0, 2, 108, 121, 0, 5, 3, 1, 18, 73, 2, 97, 0, 5, 3, 1, 18, 73, 2, 105, 0, 5, 3, 1, 98, 2, 100,
+			100, 104, 0, 5, 3, 1, 100, 2, 17, 67, 17, 65, 0, 5, 3, 1, 100, 2, 116, 121, 0, 5, 3, 1, 110, 2, 17, 67, 17, 65,
+			0, 5, 3, 1, 116, 2, 17, 67, 17, 65, 12, 0, 8, 2, 108, 17, 65, 0, 8, 108, 2, 97, 0, 8, 108, 2, 99, 0, 8, 108,
+			2, 116, 104, 101, 114, 0, 104, 2, 17, 67, 0, 97, 114, 121, 1, 114, 2, 32, 3, 137, 34, 37, 0, 99, 108, 101, 5, 3, 1, 110,
+			3, 137, 49, 55, 124, 0, 99, 108, 101, 97, 114, 5, 3, 1, 110, 3, 137, 49, 55, 145, 0, 98, 117, 110, 116, 117, 3, 137, 71, 6,
+			137, 50, 108, 137, 0, 99, 99, 2, 105, 3, 137, 76, 0, 103, 2, 101, 114, 32, 3, 137, 81, 0, 97, 114, 121, 5, 3, 1, 114, 2,
+			32, 3, 137, 143, 34, 37, 0, 121, 3, 140, 0, 111, 121, 3, 142, 0, 111, 114, 1, 108, 102, 3, 146, 0, 7, 6, 118, 0, 2, 118,
+			3, 0, 4, 3, 84, 0, 8, 2, 108, 97, 0, 105, 98, 114, 97, 8, 2, 116, 3, 84, 2, 140, 71, 34, 141, 0, 105, 98, 114, 97,
+			5, 3, 8, 2, 116, 3, 84, 6, 140, 71, 34, 141, 0, 105, 100, 101, 2, 111, 103, 114, 3, 84, 124, 72, 113, 0, 105, 100, 101, 111,
+			3, 84, 124, 72, 113, 2, 139, 0, 105, 118, 105, 2, 21, 3, 84, 124, 84, 124, 0, 105, 118, 2, 32, 3, 84, 140, 84, 0, 97, 1,
+			21, 2, 108, 101, 110, 3, 84, 141, 0, 101, 104, 101, 109, 8, 3, 84, 144, 65, 0, 105, 108, 108, 101, 1, 115, 10, 2, 32, 14, 128,
+			128, 134, 3, 88, 84, 124, 55, 0, 7, 6, 119, 0, 4, 1, 109, 2, 105, 99, 104, 32, 3, 0, 4, 1, 115, 17, 65, 2, 105, 99,
+			107, 3, 0, 2, 119, 3, 0, 101, 1, 17, 67, 2, 32, 3, 8, 58, 124, 0, 4, 114, 3, 34, 0, 114, 8, 2, 17, 71, 0, 4,
+			3, 58, 0, 104, 0, 104, 8, 2, 17, 71, 0, 4, 105, 116, 104, 2, 17, 65, 3, 58, 2, 124, 86, 0, 105, 116, 104, 2, 17, 67,
+			0, 101, 115, 116, 1, 17, 67, 3, 58, 6, 122, 89, 47, 0, 105, 116, 104, 1, 101, 2, 32, 3, 58, 6, 124, 86, 0, 101, 114, 101,
+			8, 2, 14, 128, 132, 132, 3, 58, 6, 143, 23, 0, 1, 17, 67, 2, 32, 3, 58, 13, 0, 111, 111, 100, 1, 10, 2, 32, 14, 128,
+			128, 132, 3, 58, 117, 72, 0, 105, 107, 105, 3, 58, 124, 49, 37, 0, 4, 105, 110, 103, 1, 17, 66, 2, 32, 3, 58, 124, 68, 0,
+			105, 110, 103, 1, 17, 66, 2, 115, 32, 0, 104, 105, 99, 104, 3, 58, 124, 76, 0, 105, 116, 104, 2, 101, 3, 58, 124, 86, 0, 104,
+			97, 116, 3, 58, 128, 47, 0, 4, 111, 114, 1, 115, 115, 2, 100, 3, 58, 131, 0, 111, 114, 2, 116, 104, 32, 0, 111, 114, 107, 1,
+			10, 2, 32, 14, 128, 128, 132, 3, 58, 131, 49, 0, 101, 2, 119, 3, 58, 132, 0, 105, 115, 101, 1, 21, 2, 32, 14, 128, 128, 132,
+			3, 58, 140, 88, 0, 97, 121, 1, 69, 2, 32, 14, 128, 128, 131, 3, 58, 141, 0, 97, 121, 115, 1, 69, 2, 32, 14, 128, 128, 132,
+			3, 58, 141, 88, 0, 104, 101, 114, 101, 3, 58, 143, 0, 4, 111, 114, 5, 5, 1, 115, 115, 2, 100, 3, 58, 151, 0, 111, 114, 5,
+			5, 2, 116, 104, 32, 0, 104, 2, 111, 108, 3, 107, 0, 4, 104, 111, 2, 32, 3, 107, 137, 0, 104, 111, 2, 100, 0, 104, 111, 2,
+			109, 0, 104, 111, 2, 115, 0, 104, 111, 39, 0, 1, 17, 67, 2, 29, 3, 117, 0, 111, 114, 1, 115, 2, 100, 3, 136, 0, 7, 6,
+			120, 0, 1, 117, 101, 2, 32, 3, 0, 4, 97, 115, 2, 32, 3, 8, 49, 89, 13, 89, 0, 117, 115, 2, 32, 0, 105, 115, 2, 32,
+			3, 8, 49, 89, 124, 89, 0, 105, 111, 117, 115, 3, 8, 49, 91, 13, 89, 0, 117, 2, 97, 3, 8, 49, 91, 137, 0, 4, 3, 49,
+			89, 0, 120, 0, 117, 114, 101, 2, 32, 3, 49, 91, 2, 146, 0, 105, 111, 2, 110, 3, 49, 91, 13, 0, 1, 117, 108, 2, 117, 114,
+			3, 81, 90, 0, 117, 5, 3, 1, 117, 108, 2, 114, 3, 81, 90, 146, 0, 8, 2, 17, 71, 3, 88, 0, 121, 8, 3, 88, 140, 0,
+			4, 1, 99, 2, 32, 3, 122, 49, 89, 0, 1, 116, 2, 32, 0, 7, 6, 121, 0, 1, 10, 2, 32, 24, 3, 2, 37, 0, 111, 117,
+			39, 3, 2, 57, 137, 0, 4, 1, 10, 2, 32, 3, 2, 124, 0, 1, 17, 67, 0, 1, 102, 17, 65, 11, 2, 32, 0, 1, 102, 17,
+			67, 2, 32, 0, 1, 104, 2, 112, 111, 99, 114, 0, 4, 2, 17, 67, 105, 99, 32, 3, 6, 124, 0, 2, 17, 67, 105, 99, 97, 108,
+			0, 2, 17, 67, 105, 102, 121, 0, 2, 110, 97, 32, 3, 6, 132, 0, 4, 1, 21, 2, 114, 97, 32, 3, 6, 140, 0, 2, 112, 97,
+			108, 0, 115, 105, 115, 1, 10, 2, 32, 3, 8, 13, 89, 124, 89, 0, 1, 107, 115, 10, 2, 32, 3, 8, 37, 0, 4, 1, 17, 67,
+			10, 2, 97, 110, 32, 3, 8, 124, 0, 1, 17, 67, 10, 2, 101, 110, 32, 0, 1, 17, 67, 10, 2, 108, 101, 110, 101, 32, 0, 4,
+			1, 45, 2, 45, 3, 13, 0, 114, 2, 32, 0, 4, 1, 17, 66, 11, 2, 32, 24, 14, 128, 144, 129, 3, 37, 0, 1, 107, 17, 67,
+			10, 2, 32, 14, 128, 128, 129, 0, 4, 3, 57, 0, 2, 97, 114, 0, 2, 101, 97, 114, 0, 2, 105, 17, 67, 32, 0, 97, 110, 103,
+			3, 57, 6, 35, 68, 0, 39, 8, 2, 17, 67, 14, 128, 132, 130, 3, 57, 13, 0, 101, 115, 8, 3, 57, 122, 89, 0, 101, 97, 104,
+			3, 57, 122, 107, 0, 4, 101, 119, 3, 57, 137, 0, 117, 2, 21, 0, 101, 111, 2, 17, 67, 3, 57, 139, 0, 8, 2, 32, 3, 58,
+			140, 0, 1, 17, 67, 2, 97, 98, 108, 3, 113, 0, 114, 105, 110, 103, 1, 115, 3, 113, 34, 124, 50, 75, 0, 4, 1, 17, 66, 11,
+			2, 32, 14, 128, 144, 129, 3, 124, 0, 1, 17, 66, 111, 29, 2, 21, 12, 0, 1, 17, 67, 2, 105, 0, 1, 17, 67, 17, 67, 2,
+			110, 32, 0, 1, 17, 67, 21, 2, 103, 101, 110, 0, 1, 17, 67, 21, 2, 109, 17, 65, 110, 32, 0, 1, 99, 2, 108, 105, 110, 0,
+			1, 99, 2, 110, 105, 0, 1, 99, 2, 114, 0, 1, 99, 105, 98, 2, 99, 108, 0, 1, 102, 102, 2, 32, 0, 1, 108, 2, 114, 105,
+			0, 1, 108, 102, 2, 110, 0, 1, 108, 103, 2, 99, 101, 114, 0, 1, 108, 103, 2, 112, 104, 0, 1, 112, 2, 114, 97, 0, 1, 112,
+			2, 114, 105, 0, 1, 116, 2, 112, 105, 99, 0, 1, 116, 2, 114, 97, 110, 110, 0, 1, 119, 2, 110, 0, 2, 17, 67, 0, 2, 17,
+			67, 17, 67, 0, 2, 17, 67, 32, 0, 2, 115, 116, 0, 5, 35, 1, 100, 2, 110, 97, 115, 0, 8, 2, 17, 67, 21, 0, 8, 115,
+			0, 101, 105, 103, 104, 116, 1, 116, 2, 32, 3, 124, 6, 141, 47, 0, 116, 119, 111, 1, 116, 2, 32, 3, 124, 47, 6, 137, 0, 112,
+			111, 99, 114, 105, 1, 104, 2, 116, 3, 124, 48, 13, 49, 34, 124, 0, 120, 1, 17, 67, 2, 32, 3, 124, 49, 89, 0, 110, 99, 104,
+			1, 115, 3, 124, 50, 49, 0, 111, 110, 101, 1, 116, 2, 32, 3, 124, 58, 6, 128, 50, 0, 102, 111, 117, 114, 1, 116, 2, 32, 3,
+			124, 83, 6, 136, 0, 102, 105, 118, 101, 1, 116, 2, 32, 3, 124, 83, 6, 140, 84, 0, 115, 1, 104, 112, 2, 105, 3, 124, 88, 0,
+			115, 101, 118, 101, 110, 1, 116, 2, 32, 3, 124, 89, 6, 122, 84, 13, 50, 0, 115, 101, 1, 100, 2, 110, 3, 124, 89, 13, 0, 4,
+			8, 2, 110, 21, 3, 129, 0, 8, 2, 115, 21, 0, 4, 1, 17, 67, 21, 2, 17, 66, 101, 13, 3, 140, 0, 1, 17, 67, 29, 0,
+			1, 98, 101, 114, 101, 2, 32, 0, 1, 98, 114, 97, 101, 2, 32, 0, 1, 99, 2, 99, 108, 0, 1, 99, 2, 99, 108, 105, 99, 32,
+			0, 1, 102, 2, 32, 0, 1, 102, 115, 2, 32, 0, 1, 104, 2, 17, 67, 114, 0, 1, 104, 116, 2, 108, 32, 0, 1, 107, 2, 108,
+			32, 0, 1, 108, 101, 98, 2, 32, 0, 1, 108, 102, 0, 1, 110, 2, 108, 32, 0, 1, 110, 101, 100, 2, 32, 0, 1, 112, 2, 116,
+			104, 0, 1, 116, 2, 108, 32, 0, 1, 116, 2, 112, 32, 0, 1, 116, 2, 112, 105, 115, 116, 0, 1, 116, 115, 2, 114, 101, 0, 2,
+			17, 66, 101, 13, 0, 2, 32, 0, 2, 101, 114, 32, 0, 2, 108, 117, 109, 0, 2, 116, 104, 101, 32, 0, 8, 17, 67, 0, 8, 17,
+			67, 2, 17, 67, 101, 0, 8, 17, 67, 2, 112, 104, 0, 8, 17, 67, 115, 0, 8, 98, 2, 12, 0, 101, 2, 32, 0, 116, 101, 2,
+			32, 3, 140, 47, 0, 110, 97, 109, 1, 100, 3, 140, 50, 35, 65, 0, 4, 101, 115, 1, 17, 67, 2, 32, 3, 140, 88, 0, 115, 101,
+			2, 32, 12, 0, 4, 115, 101, 100, 2, 32, 3, 140, 88, 72, 0, 122, 101, 100, 2, 32, 0, 115, 105, 110, 103, 2, 32, 3, 140, 88,
+			113, 68, 0, 104, 114, 3, 144, 0, 114, 101, 2, 32, 3, 148, 0, 7, 6, 122, 0, 2, 122, 3, 0, 117, 2, 32, 3, 8, 88, 137,
+			0, 1, 110, 2, 32, 24, 3, 47, 89, 0, 4, 3, 88, 0, 8, 2, 108, 111, 116, 0, 8, 2, 119, 17, 71, 0, 115, 8, 2, 17,
+			71, 0, 97, 108, 101, 115, 1, 21, 2, 32, 3, 88, 6, 121, 55, 13, 89, 0, 117, 101, 3, 88, 58, 6, 141, 0, 101, 115, 2, 32,
+			3, 88, 113, 88, 0, 111, 2, 111, 108, 111, 3, 88, 137, 0, 101, 105, 3, 88, 140, 0, 4, 104, 3, 90, 0, 104, 8, 2, 17, 71,
+			0, 117, 114, 101, 3, 90, 114, 0, 7, 6, 206, 0, 4, 172, 3, 6, 35, 55, 83, 13, 10, 0, 177, 0, 4, 173, 3, 6, 122, 48,
+			89, 124, 55, 126, 50, 10, 0, 181, 0, 4, 174, 3, 6, 132, 47, 13, 10, 0, 183, 0, 191, 3, 6, 139, 65, 124, 49, 34, 126, 50,
+			10, 0, 186, 3, 49, 6, 35, 48, 13, 10, 0, 190, 3, 49, 89, 6, 140, 10, 0, 189, 3, 50, 6, 57, 137, 10, 0, 187, 3, 55,
+			6, 35, 65, 72, 13, 10, 0, 188, 3, 65, 6, 57, 137, 10, 0, 178, 3, 71, 6, 132, 47, 13, 10, 0, 178, 5, 3, 3, 71, 6,
+			141, 47, 13, 10, 0, 180, 3, 72, 6, 122, 55, 47, 13, 10, 0, 179, 3, 81, 6, 35, 65, 13, 10, 0, 184, 3, 87, 6, 132, 47,
+			13, 10, 0, 182, 3, 88, 6, 132, 47, 13, 10, 0, 4, 175, 3, 140, 6, 139, 47, 13, 10, 0, 185, 0, 7, 6, 207, 0, 4, 133,
+			3, 6, 117, 48, 89, 124, 55, 126, 50, 10, 0, 141, 0, 140, 3, 6, 139, 65, 124, 49, 34, 126, 50, 10, 0, 4, 137, 3, 6, 139,
+			65, 124, 81, 13, 10, 0, 142, 0, 129, 3, 34, 6, 139, 10, 0, 132, 3, 47, 6, 138, 10, 0, 128, 3, 48, 6, 140, 10, 0, 136,
+			3, 48, 89, 6, 140, 10, 0, 135, 3, 76, 6, 140, 10, 0, 134, 3, 83, 6, 140, 10, 0, 4, 130, 3, 89, 6, 124, 81, 65, 13,
+			10, 0, 131, 0, 137, 5, 3, 3, 139, 65, 6, 141, 81, 13, 10, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 4, 39, 3, 0, 4,
+			46, 1, 46, 3, 0, 58, 1, 32, 15, 2, 32, 15, 15, 32, 3, 0, 195, 169, 8, 3, 2, 124, 0, 195, 161, 2, 29, 3, 6, 121,
+			0, 195, 179, 2, 110, 3, 6, 126, 0, 4, 195, 169, 2, 17, 67, 17, 65, 32, 3, 6, 141, 0, 195, 169, 2, 29, 0, 46, 2, 46,
+			3, 9, 0, 33, 3, 9, 122, 49, 89, 49, 55, 13, 65, 141, 91, 13, 50, 9, 0, 45, 8, 2, 32, 15, 3, 10, 0, 202, 187, 8,
+			2, 17, 65, 3, 19, 0, 195, 177, 3, 21, 101, 115, 0, 195, 160, 3, 35, 0, 58, 3, 49, 139, 55, 13, 50, 0, 33, 61, 3, 50,
+			126, 47, 132, 49, 58, 118, 88, 0, 60, 61, 3, 55, 122, 89, 135, 132, 49, 58, 118, 0, 45, 8, 32, 2, 32, 15, 3, 65, 140, 50,
+			13, 89, 0, 45, 1, 32, 15, 2, 32, 15, 3, 72, 35, 91, 0, 46, 3, 72, 126, 47, 0, 36, 3, 72, 126, 55, 114, 0, 196, 141,
+			3, 76, 0, 62, 61, 3, 81, 34, 141, 47, 13, 135, 132, 49, 58, 118, 0, 195, 176, 3, 86, 0, 195, 190, 3, 87, 0, 4, 195, 159,
+			3, 89, 0, 195, 167, 0, 197, 190, 3, 90, 0, 4, 197, 159, 3, 91, 0, 197, 161, 0, 4, 195, 164, 3, 122, 0, 195, 171, 0, 195,
+			170, 3, 122, 12, 0, 4, 195, 182, 3, 131, 0, 195, 182, 114, 0, 4, 195, 169, 101, 3, 132, 0, 195, 175, 0, 4, 195, 187, 3, 137,
+			0, 195, 188, 0, 195, 169, 3, 141, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts14 = FileInMemory_createWithData (116291, reinterpret_cast<const char *> (&espeakdata_dicts14_data), 
+			U"espeak-1.48.04-source/espeak-data/en_dict", 
 			U"en");
-		Collection_addItem (me.peek(), espeakdata_dicts14.transfer());
+		my addItem_move (espeakdata_dicts14.move());
 
-		static unsigned char espeakdata_dicts15_data[4669] = {
-			0, 4, 0, 0, 9, 14, 0, 0, 0, 0, 0, 12, 67, 57, 35, 192, 50, 40, 65, 36, 51, 39, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 4, 95, 8, 1, 3, 107, 35, 76, 6, 36, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 44,
-			18, 128, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 53, 9, 76, 76, 0, 0, 0, 10, 134, 1, 14, 20, 1, 197,
-			173, 76, 8, 0, 0, 0, 14, 1, 37, 48, 14, 16, 39, 114, 36, 50, 47, 39, 0, 27, 0, 7, 1, 38, 10, 49, 110, 0, 0, 0,
-			0, 0, 7, 195, 64, 244, 128, 76, 8, 14, 1, 42, 35, 89, 47, 36, 51, 37, 89, 49, 39, 0, 27, 0, 0, 0, 15, 66, 45, 0,
-			49, 4, 39, 65, 48, 6, 35, 34, 40, 0, 24, 0, 0, 11, 1, 47, 39, 71, 55, 37, 49, 84, 39, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 3, 11, 46, 1, 49, 110, 35, 55, 6, 37, 110, 0, 0, 0, 15, 3, 11, 46, 3, 49, 110, 114, 36, 47, 6, 36, 51,
-			36, 0, 0, 0, 0, 0, 10, 1, 61, 36, 81, 35, 55, 35, 0, 27, 0, 0, 7, 196, 21, 53, 21, 76, 76, 0, 8, 1, 64, 10,
-			76, 36, 10, 0, 0, 0, 7, 195, 44, 147, 192, 76, 8, 0, 0, 0, 0, 0, 0, 0, 16, 3, 11, 46, 19, 49, 110, 4, 89, 37,
-			6, 65, 37, 55, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 39, 0, 0, 0, 0,
-			0, 11, 1, 92, 72, 36, 49, 55, 37, 84, 39, 0, 0, 0, 0, 0, 8, 65, 96, 37, 49, 89, 39, 0, 12, 4, 95, 49, 77, 49,
-			65, 6, 37, 55, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 14, 1, 124, 72, 40, 49, 47, 39, 89, 37, 81, 50, 39, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 39, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 12, 39, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 16, 76,
-			0, 15, 4, 1, 197, 173, 7, 35, 40, 81, 40, 89, 47, 39, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195,
-			64, 244, 212, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 66, 9, 96, 71, 39, 50, 4, 84, 39, 55, 40, 2, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 144, 64,
-			76, 0, 0, 0, 0, 6, 195, 8, 80, 64, 17, 0, 0, 0, 0, 0, 0, 6, 195, 48, 144, 74, 76, 0, 0, 0, 0, 0, 15, 66,
-			16, 80, 72, 36, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 16, 80, 76, 28, 0, 0, 0, 0, 0, 0, 13, 4, 95, 4, 16,
-			20, 10, 49, 39, 65, 39, 10, 0, 0, 0, 0, 0, 8, 3, 95, 35, 1, 2, 35, 0, 0, 0, 0, 0, 0, 0, 15, 66, 4, 192,
-			35, 55, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 4, 192, 76, 28, 0, 0, 11, 3, 95, 35, 57, 47, 6, 35, 71, 39, 0,
-			13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 12,
-			144, 72, 0, 0, 0, 0, 0, 14, 67, 4, 228, 212, 35, 50, 89, 47, 35, 47, 108, 0, 24, 0, 0, 17, 3, 14, 46, 2, 50, 6,
-			39, 47, 40, 15, 71, 6, 39, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 80, 144, 77, 28, 0, 0, 0, 0, 17, 67, 24,
-			80, 128, 83, 4, 36, 71, 14, 16, 40, 6, 35, 51, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 21, 137, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 36, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 196, 32, 21, 137, 76, 76, 0, 0, 0, 8, 133, 197, 157, 9, 1, 10, 76, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 195, 56, 82, 192, 72, 8, 0, 7, 196, 52, 85, 15, 76, 76, 0, 0, 0, 0, 7, 196, 64, 245, 129, 76, 76, 0, 0, 0, 6,
-			195, 80, 147, 192, 76, 0, 0, 0, 0, 12, 67, 41, 83, 128, 37, 40, 50, 6, 37, 39, 0, 0, 0, 0, 15, 66, 20, 192, 36, 55,
-			55, 35, 0, 72, 8, 81, 108, 97, 32, 6, 194, 20, 192, 76, 8, 0, 0, 7, 196, 52, 85, 9, 76, 76, 0, 21, 5, 11, 46, 20,
-			46, 16, 49, 110, 47, 6, 37, 36, 55, 4, 48, 55, 4, 40, 10, 0, 0, 0, 11, 5, 95, 35, 45, 1, 14, 2, 35, 50, 0, 0,
-			0, 0, 7, 131, 196, 137, 5, 76, 8, 14, 4, 95, 13, 3, 14, 89, 47, 14, 16, 6, 37, 35, 0, 0, 8, 133, 196, 157, 9, 1,
-			10, 76, 10, 5, 95, 35, 45, 1, 10, 2, 110, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 240, 8, 0, 0, 0, 0, 0, 0,
-			7, 196, 32, 21, 143, 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 16, 46, 11, 48, 4, 39, 89, 47, 49, 14, 16, 6, 37,
-			89, 47, 39, 0, 24, 0, 0, 15, 66, 20, 224, 36, 50, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 20, 224, 76, 28, 0, 14,
-			3, 95, 51, 88, 47, 14, 16, 6, 37, 72, 36, 49, 0, 0, 10, 3, 95, 48, 67, 114, 36, 50, 47, 0, 0, 0, 0, 7, 195, 81,
-			32, 64, 72, 8, 0, 7, 196, 32, 21, 129, 76, 76, 20, 3, 16, 46, 19, 48, 4, 39, 89, 47, 35, 89, 49, 14, 16, 6, 37, 71,
-			39, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 114, 6, 36, 50, 47, 0, 0, 0, 0, 0, 0, 0, 6, 194, 40, 80, 72, 28, 8,
-			66, 48, 16, 2, 55, 35, 0, 0, 7, 195, 65, 34, 64, 76, 8, 0, 0, 0, 6, 131, 196, 137, 9, 72, 0, 0, 0, 0, 6, 194,
-			41, 80, 72, 28, 7, 131, 196, 137, 21, 72, 28, 0, 12, 67, 41, 83, 0, 37, 40, 55, 6, 37, 39, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 3, 95, 55, 88, 89, 6, 36, 48, 72, 36, 49, 0, 0, 7, 196, 52, 85, 1, 76, 76, 0, 0, 0, 0, 7, 196, 16,
-			85, 129, 76, 76, 0, 0, 0, 7, 132, 197, 157, 9, 1, 76, 0, 0, 0, 19, 67, 45, 68, 0, 49, 110, 47, 6, 37, 36, 55, 4,
-			48, 55, 4, 40, 10, 0, 0, 7, 195, 5, 5, 68, 76, 8, 0, 0, 0, 6, 194, 44, 80, 72, 8, 0, 10, 3, 95, 49, 88, 72,
-			6, 36, 49, 0, 0, 8, 196, 36, 229, 5, 72, 76, 8, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88, 72, 6, 40, 72, 36,
-			49, 0, 0, 20, 3, 1, 46, 11, 4, 35, 50, 47, 108, 49, 14, 16, 6, 37, 89, 47, 39, 0, 24, 0, 0, 0, 0, 0, 0, 0,
-			6, 195, 52, 144, 64, 76, 0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 55, 37, 47, 4, 36, 51, 39, 0, 0, 0, 0, 14, 3, 95,
-			52, 88, 49, 84, 6, 35, 51, 72, 36, 49, 0, 0, 0, 6, 195, 52, 144, 74, 76, 0, 0, 0, 0, 0, 17, 66, 44, 112, 49, 6,
-			37, 55, 39, 81, 14, 16, 6, 35, 65, 112, 0, 0, 17, 67, 76, 84, 20, 89, 36, 48, 4, 47, 36, 65, 71, 14, 16, 39, 0, 14,
-			3, 95, 53, 88, 49, 84, 6, 37, 50, 72, 36, 49, 0, 0, 0, 0, 0, 0, 7, 196, 16, 85, 143, 76, 76, 0, 0, 0, 13, 3,
+		static unsigned char espeakdata_dicts15_data[4678] = {
+			0, 4, 0, 0, 9, 14, 0, 0, 0, 0, 0, 12, 67, 57, 35, 192, 50, 40, 65, 36, 51, 39, 0, 12, 6, 95, 35, 45, 97, 106,
+			110, 2, 110, 50, 0, 0, 0, 9, 4, 95, 35, 45, 97, 2, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 13, 4, 95, 100, 112, 116, 10, 49, 39, 65, 39, 10, 0, 0, 0, 0, 7, 195, 44, 18, 128, 72, 8, 0, 10, 3, 105, 46, 97,
+			6, 37, 6, 35, 0, 0, 0, 0, 0, 7, 196, 32, 21, 143, 76, 76, 0, 0, 0, 0, 14, 67, 4, 228, 212, 35, 50, 89, 47, 35,
+			47, 108, 0, 24, 0, 0, 10, 67, 64, 193, 74, 48, 55, 4, 111, 0, 0, 0, 6, 131, 101, 196, 137, 28, 0, 0, 14, 1, 37, 48,
+			14, 16, 39, 114, 36, 50, 47, 39, 0, 27, 0, 7, 1, 38, 10, 49, 110, 0, 0, 0, 0, 0, 7, 195, 64, 244, 128, 76, 8, 14,
+			1, 42, 35, 89, 47, 36, 51, 37, 89, 49, 39, 0, 27, 0, 0, 0, 15, 66, 45, 0, 49, 4, 39, 65, 48, 6, 35, 34, 40, 0,
+			24, 0, 0, 11, 1, 47, 39, 71, 55, 37, 49, 84, 39, 0, 0, 15, 4, 95, 100, 105, 97, 72, 40, 48, 40, 50, 49, 47, 35, 0,
+			0, 0, 0, 0, 0, 6, 195, 88, 144, 74, 76, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 53, 9, 76, 0, 10, 1, 61, 36, 81,
+			35, 55, 35, 0, 27, 0, 0, 7, 196, 64, 245, 149, 76, 76, 0, 8, 1, 64, 10, 76, 36, 10, 0, 0, 0, 7, 195, 44, 147, 192,
+			76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 100, 111, 116, 48, 6, 40, 50, 49, 47, 35, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 39, 0, 0, 0, 0, 0, 11, 1, 92, 72, 36, 49, 55, 37, 84, 39, 0, 0,
+			0, 0, 0, 6, 195, 80, 144, 77, 28, 8, 65, 96, 37, 49, 89, 39, 0, 12, 4, 95, 49, 77, 49, 65, 6, 37, 55, 10, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 97, 197, 173, 103, 35, 40, 81, 40, 89, 47, 39,
+			2, 0, 0, 0, 0, 0, 10, 5, 95, 35, 45, 97, 106, 2, 110, 0, 0, 0, 0, 0, 11, 5, 95, 35, 45, 97, 110, 2, 35, 50,
+			0, 0, 0, 14, 1, 124, 72, 40, 49, 47, 39, 89, 37, 81, 50, 39, 0, 0, 0, 7, 196, 44, 149, 74, 56, 8, 9, 1, 126, 47,
+			37, 55, 72, 39, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+			3, 107, 46, 115, 49, 110, 4, 89, 37, 6, 65, 37, 55, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 16, 76, 0, 0,
+			0, 0, 0, 0, 7, 196, 52, 85, 21, 76, 76, 13, 3, 107, 46, 97, 49, 110, 35, 55, 6, 37, 110, 0, 0, 0, 15, 3, 107, 46,
+			99, 49, 110, 114, 36, 47, 6, 36, 51, 36, 0, 0, 0, 7, 196, 32, 21, 129, 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 8, 133, 196, 157, 105, 97, 106, 76, 0, 0, 0, 14, 66, 9, 96, 71, 39, 50, 4, 84, 39, 55, 40, 2, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 109, 99, 110, 89, 47, 14, 16, 6, 37, 35, 0, 0, 0, 7, 196, 16, 85, 149, 76,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 80, 19, 69, 56, 8, 6, 195, 48, 144, 64, 76, 0, 0, 0, 0, 8,
+			133, 197, 157, 105, 97, 106, 76, 6, 195, 8, 80, 64, 13, 0, 0, 0, 0, 0, 0, 6, 195, 20, 177, 5, 8, 0, 0, 0, 0, 0,
+			15, 66, 16, 80, 72, 36, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 16, 80, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 15, 66, 4, 192, 35, 55, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 4, 192, 76, 28, 0, 0,
+			11, 3, 95, 35, 57, 47, 6, 35, 71, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 12, 144, 72,
+			0, 6, 195, 37, 32, 83, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 67, 24, 80, 128, 83,
+			4, 36, 71, 14, 16, 40, 6, 35, 51, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 197, 157, 105, 97, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 20, 35, 5, 72, 0, 0, 0, 5, 194, 36, 16, 72, 0, 0, 0, 0, 7, 196, 64, 245, 137, 76, 76, 0, 0, 0,
+			0, 8, 3, 95, 35, 97, 2, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 195, 56, 82, 192, 72, 8, 0, 7, 195, 64, 244, 212, 76, 8, 0, 15, 4, 95, 111, 103, 111, 89, 40, 71, 107,
+			6, 39, 49, 35, 0, 0, 7, 196, 21, 53, 9, 76, 76, 0, 0, 0, 17, 3, 110, 46, 98, 50, 6, 39, 47, 40, 15, 71, 6, 39,
+			50, 36, 0, 0, 0, 6, 195, 80, 147, 192, 76, 0, 0, 0, 0, 12, 67, 41, 83, 128, 37, 40, 50, 6, 37, 39, 0, 0, 0, 0,
+			15, 66, 20, 192, 36, 55, 55, 35, 0, 72, 8, 81, 108, 97, 32, 6, 194, 20, 192, 76, 8, 0, 6, 195, 32, 21, 137, 76, 0, 0,
+			0, 0, 0, 0, 0, 12, 4, 95, 98, 114, 118, 107, 6, 39, 49, 35, 0, 0, 0, 0, 0, 19, 4, 95, 97, 99, 50, 72, 40, 39,
+			71, 55, 35, 49, 6, 39, 51, 50, 35, 0, 0, 21, 67, 24, 20, 133, 83, 35, 14, 16, 36, 2, 72, 6, 36, 0, 76, 28, 81, 100,
+			101, 32, 0, 0, 6, 195, 37, 34, 83, 76, 0, 5, 194, 16, 240, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 85, 1, 76,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 15, 66, 20, 224, 36, 50, 55, 35, 0, 72, 28, 81, 108, 97, 32, 6, 194, 20, 224, 76, 28,
+			0, 11, 5, 95, 35, 97, 106, 110, 2, 110, 50, 0, 14, 3, 95, 51, 88, 47, 14, 16, 6, 37, 72, 36, 49, 0, 0, 10, 3, 95,
+			48, 67, 114, 36, 50, 47, 0, 0, 0, 0, 7, 195, 81, 32, 64, 72, 8, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 114, 6, 36,
+			50, 47, 0, 0, 0, 0, 21, 67, 64, 84, 133, 48, 36, 14, 16, 36, 2, 72, 6, 36, 0, 76, 28, 81, 100, 101, 32, 0, 0, 0,
+			6, 194, 40, 80, 72, 28, 8, 66, 48, 16, 2, 55, 35, 0, 0, 7, 195, 65, 34, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 6,
+			194, 41, 80, 72, 28, 7, 196, 16, 85, 129, 76, 76, 0, 12, 67, 41, 83, 0, 37, 40, 55, 6, 37, 39, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 13, 3, 95, 55, 88, 89, 6, 36, 48, 72, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 37, 35,
+			211, 76, 0, 19, 67, 45, 68, 0, 49, 110, 47, 6, 37, 36, 55, 4, 48, 55, 4, 40, 10, 0, 0, 21, 4, 95, 97, 99, 117, 72,
+			36, 49, 89, 47, 14, 16, 35, 49, 6, 39, 51, 50, 35, 0, 0, 0, 0, 6, 194, 44, 80, 72, 8, 0, 10, 3, 95, 49, 88, 72,
+			6, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88, 72, 6, 40, 72, 36, 49, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 52, 144, 64, 76, 0, 7, 195, 5, 5, 68, 76, 8, 0, 21, 5, 107, 46, 116, 46, 112, 49, 110, 47, 6, 37, 36,
+			55, 4, 48, 55, 4, 40, 10, 0, 0, 0, 0, 20, 3, 112, 46, 115, 48, 4, 39, 89, 47, 35, 89, 49, 14, 16, 6, 37, 71, 39,
+			0, 13, 3, 95, 63, 63, 55, 37, 47, 4, 36, 51, 39, 0, 0, 0, 7, 131, 196, 137, 101, 76, 8, 0, 14, 3, 95, 52, 88, 49,
+			84, 6, 35, 51, 72, 36, 49, 0, 0, 0, 0, 0, 0, 20, 3, 112, 46, 107, 48, 4, 39, 89, 47, 49, 14, 16, 6, 37, 89, 47,
+			39, 0, 24, 0, 0, 17, 66, 44, 112, 49, 6, 37, 55, 39, 81, 14, 16, 6, 35, 65, 112, 0, 0, 14, 3, 95, 53, 88, 49, 84,
+			6, 37, 50, 72, 36, 49, 0, 0, 0, 13, 4, 95, 114, 110, 103, 51, 6, 37, 50, 81, 35, 0, 0, 0, 0, 0, 0, 0, 13, 3,
 			95, 54, 88, 89, 6, 36, 89, 72, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 67, 5, 4, 128, 35, 48, 14, 16, 6, 37,
-			55, 39, 0, 0, 0, 0, 0, 14, 67, 77, 68, 128, 89, 47, 14, 16, 6, 35, 47, 39, 0, 0, 7, 196, 16, 85, 137, 76, 76, 0,
-			0, 0, 12, 3, 95, 56, 88, 6, 39, 49, 72, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 57, 88, 50, 6, 108,
-			72, 36, 49, 0, 0, 0, 0, 6, 131, 196, 157, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196,
-			52, 85, 21, 76, 76, 0, 0, 0, 15, 4, 95, 15, 7, 15, 89, 40, 71, 107, 6, 39, 49, 35, 0, 0, 7, 196, 16, 85, 149, 76,
-			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 144, 72, 5, 194, 56, 80, 76, 0, 0, 0, 0, 0, 11, 67, 52, 18,
-			128, 65, 6, 110, 39, 2, 0, 0, 0, 0, 0, 7, 195, 65, 35, 192, 76, 8, 0, 6, 195, 20, 35, 5, 72, 16, 4, 95, 48, 77,
-			52, 72, 40, 37, 55, 37, 6, 39, 50, 39, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6, 39, 50, 39, 0, 0, 7,
-			195, 76, 83, 128, 76, 8, 16, 4, 95, 48, 77, 51, 65, 37, 55, 37, 6, 35, 34, 72, 39, 0, 0, 0, 12, 4, 95, 48, 77, 49,
-			65, 4, 37, 55, 10, 0, 0, 12, 4, 95, 2, 18, 22, 107, 6, 39, 49, 35, 0, 0, 0, 0, 0, 0, 13, 67, 52, 20, 128, 65,
-			6, 35, 14, 16, 47, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 72, 17, 66, 44, 208, 49, 6, 37,
-			55, 39, 65, 6, 36, 47, 20, 16, 112, 0, 0, 0, 0, 0, 0, 0, 6, 131, 197, 157, 9, 72, 0, 0, 19, 66, 65, 48, 48, 4,
-			39, 89, 47, 35, 89, 49, 14, 16, 6, 37, 71, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 80,
-			128, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 56, 144, 72, 0, 0, 0, 0, 0, 6, 195, 60, 226, 64, 72,
-			10, 67, 64, 194, 64, 48, 55, 4, 37, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 3, 9, 18, 114, 37, 51, 49, 40, 65, 83,
-			55, 6, 36, 49, 89, 35, 0, 0, 7, 195, 45, 83, 128, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 84, 128, 76, 8,
-			0, 0, 0, 0, 14, 4, 95, 19, 20, 11, 89, 47, 14, 16, 36, 49, 35, 0, 0, 0, 21, 4, 95, 1, 3, 21, 72, 36, 49, 89,
-			47, 14, 16, 35, 49, 6, 39, 51, 50, 35, 0, 0, 21, 3, 95, 194, 171, 72, 40, 6, 39, 71, 55, 35, 49, 14, 16, 6, 35, 65,
-			48, 39, 0, 0, 0, 0, 0, 0, 0, 15, 3, 20, 46, 5, 47, 37, 39, 4, 36, 89, 47, 35, 89, 0, 0, 10, 67, 64, 193, 74,
-			48, 55, 4, 111, 0, 0, 0, 13, 4, 95, 18, 14, 7, 51, 6, 37, 50, 81, 35, 0, 0, 0, 19, 3, 20, 46, 14, 47, 6, 37,
-			36, 55, 4, 50, 39, 65, 6, 35, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 19, 4, 95, 1, 3, 50, 72, 40, 39, 71, 55, 35, 49, 6, 39, 51, 50, 35, 0, 0, 0, 6, 195, 20, 177, 5, 8, 0,
-			0, 6, 195, 37, 32, 83, 76, 0, 0, 0, 0, 0, 15, 67, 60, 181, 0, 39, 49, 4, 47, 39, 71, 14, 16, 39, 0, 0, 0, 0,
-			0, 0, 0, 0, 27, 3, 95, 194, 187, 83, 6, 36, 51, 65, 35, 72, 40, 4, 39, 71, 55, 35, 49, 14, 16, 6, 35, 65, 48, 39,
-			0, 0, 0, 0, 0, 6, 195, 37, 34, 83, 76, 6, 194, 60, 192, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 194, 76, 80, 72, 8, 0, 7, 195, 76, 81, 0, 72, 8, 0, 0, 0, 0, 0, 0, 0, 6, 195, 37, 37, 83, 76,
-			0, 11, 5, 95, 35, 1, 10, 14, 2, 110, 50, 0, 0, 0, 0, 0, 13, 2, 194, 169, 49, 39, 48, 37, 51, 110, 47, 39, 0, 0,
-			0, 0, 0, 6, 195, 88, 144, 64, 76, 6, 195, 56, 144, 64, 76, 0, 7, 196, 36, 194, 65, 40, 76, 0, 0, 10, 2, 194, 176, 81,
-			34, 35, 72, 112, 0, 0, 0, 0, 6, 195, 56, 144, 74, 76, 0, 0, 0, 14, 4, 95, 3, 5, 4, 114, 36, 72, 6, 37, 55, 35,
-			0, 0, 0, 0, 16, 4, 95, 12, 9, 7, 55, 37, 81, 35, 47, 6, 40, 51, 35, 0, 0, 11, 3, 16, 196, 157, 48, 35, 75, 39,
-			0, 24, 0, 0, 10, 4, 95, 35, 1, 14, 2, 35, 50, 0, 0, 0, 0, 0, 9, 4, 95, 35, 1, 10, 2, 110, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72,
-			0, 0, 0, 0, 0, 0, 7, 196, 64, 245, 149, 76, 76, 6, 195, 21, 53, 9, 76, 0, 6, 195, 88, 144, 74, 76, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 8, 132, 12, 1, 197, 173, 76, 28, 0, 0, 0, 0, 0, 7, 196, 80, 19, 69, 56, 8, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 7, 131, 1, 197, 173, 72, 8, 0, 0, 0, 0, 0, 0, 7, 196, 64, 245, 137, 76, 76, 9, 2, 95,
-			34, 114, 37, 47, 39, 0, 0, 16, 2, 95, 33, 10, 49, 14, 16, 37, 89, 37, 81, 50, 39, 10, 0, 0, 0, 15, 67, 40, 19, 128,
-			37, 4, 35, 50, 40, 6, 35, 51, 39, 0, 16, 2, 95, 39, 35, 48, 39, 89, 47, 14, 16, 6, 39, 83, 39, 0, 0, 0, 0, 0,
-			7, 195, 17, 83, 64, 72, 8, 0, 15, 4, 95, 3, 1, 16, 65, 110, 4, 40, 89, 49, 55, 35, 0, 0, 21, 2, 95, 41, 83, 6,
-			36, 51, 65, 35, 48, 35, 34, 36, 50, 47, 6, 36, 88, 39, 0, 0, 21, 67, 24, 20, 133, 83, 35, 14, 16, 36, 2, 72, 6, 36,
-			0, 76, 28, 81, 100, 101, 32, 14, 2, 95, 40, 48, 35, 34, 36, 50, 47, 36, 88, 39, 0, 0, 7, 195, 64, 84, 128, 76, 28, 0,
-			11, 2, 95, 46, 48, 40, 50, 49, 47, 39, 0, 0, 18, 2, 95, 45, 72, 37, 84, 37, 72, 39, 89, 47, 14, 16, 36, 49, 39, 0,
-			0, 21, 67, 64, 84, 133, 48, 36, 14, 16, 36, 2, 72, 6, 36, 0, 76, 28, 81, 100, 101, 32, 9, 2, 95, 44, 49, 39, 65, 39,
-			0, 0, 10, 2, 95, 51, 47, 14, 34, 6, 37, 0, 0, 6, 195, 37, 35, 211, 76, 8, 2, 95, 50, 72, 6, 40, 0, 0, 9, 2,
-			95, 49, 6, 40, 50, 40, 0, 0, 8, 2, 95, 48, 50, 40, 55, 0, 0, 9, 2, 95, 55, 89, 6, 36, 48, 0, 0, 9, 2, 95,
-			54, 89, 6, 36, 89, 0, 0, 10, 2, 95, 53, 49, 84, 6, 37, 50, 0, 0, 10, 2, 95, 52, 49, 84, 6, 35, 51, 0, 0, 15,
-			2, 95, 59, 48, 40, 50, 49, 47, 39, 49, 39, 65, 39, 0, 0, 13, 2, 95, 58, 72, 40, 48, 40, 50, 49, 47, 39, 0, 0, 8,
-			2, 95, 57, 50, 6, 108, 0, 0, 8, 2, 95, 56, 6, 39, 49, 0, 0, 18, 67, 20, 182, 128, 36, 49, 88, 36, 65, 48, 55, 36,
-			0, 44, 81, 101, 32, 15, 67, 20, 182, 128, 36, 49, 88, 36, 65, 48, 55, 36, 0, 24, 17, 2, 95, 63, 72, 36, 65, 35, 50, 72,
-			39, 89, 37, 81, 50, 39, 0, 0, 24, 2, 95, 62, 83, 6, 36, 51, 65, 35, 35, 50, 81, 40, 55, 49, 14, 16, 6, 35, 65, 48,
-			39, 0, 0, 0, 18, 2, 95, 60, 35, 50, 81, 40, 55, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 16, 80, 192, 72, 36, 114, 36, 65, 71, 14, 16, 39, 0, 0, 7, 196, 64, 245, 143,
-			76, 76, 0, 0, 0, 0, 14, 4, 95, 4, 15, 20, 48, 6, 40, 50, 49, 47, 35, 0, 0, 0, 0, 19, 2, 95, 91, 51, 6, 36,
-			49, 47, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 12, 6, 95, 35, 45, 1, 10, 14, 2, 110, 50, 0, 0, 0, 8, 66, 88,
-			144, 84, 37, 0, 72, 5, 194, 84, 176, 17, 0, 15, 2, 95, 95, 89, 40, 71, 89, 47, 14, 16, 36, 49, 39, 0, 0, 0, 24, 2,
-			95, 93, 83, 6, 36, 51, 65, 35, 51, 36, 49, 47, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 6, 195, 36, 194, 65, 76, 0,
-			6, 195, 36, 194, 64, 72, 13, 67, 4, 178, 192, 35, 55, 37, 50, 39, 65, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			24, 4, 95, 7, 18, 22, 65, 35, 55, 72, 36, 49, 89, 47, 14, 16, 35, 49, 6, 39, 51, 50, 35, 0, 0, 0, 0, 0, 0, 7,
-			195, 16, 84, 192, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 95, 123, 49, 6, 40, 51, 71, 35, 49, 14, 16, 6, 35, 65,
-			48, 39, 0, 15, 4, 95, 4, 9, 1, 72, 40, 48, 40, 50, 49, 47, 35, 0, 0, 0, 0, 0, 0, 0, 24, 2, 95, 125, 83, 6,
-			36, 51, 65, 35, 49, 40, 51, 71, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 0, 0, 8, 132, 196, 137, 1, 18, 72,
-			8, 0, 0, 0, 0, 0, 0, 7, 196, 44, 149, 74, 56, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4,
-			95, 35, 51, 50, 89, 48, 6, 35, 114, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 196, 157, 9, 1, 76, 9, 4, 95, 35, 45, 1, 2, 35, 0,
-			0, 0, 9, 197, 65, 33, 84, 21, 32, 76, 28, 0, 10, 3, 9, 46, 1, 6, 37, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 132, 196, 157, 9, 19, 76, 8, 0, 0, 0, 0, 0, 0, 7, 195, 44, 145, 76, 76, 8, 0, 7, 196, 21, 53, 15,
-			76, 76, 0, 0, 0, 7, 195, 44, 144, 64, 76, 8, 6, 195, 76, 144, 64, 76, 6, 195, 12, 144, 64, 76, 6, 195, 84, 80, 64, 17,
-			0, 0, 0, 0, 0, 0, 6, 195, 76, 144, 74, 76, 6, 195, 12, 144, 74, 76, 0, 0, 7, 195, 44, 145, 64, 76, 8, 0, 0, 0,
-			0, 0, 7, 196, 21, 53, 1, 76, 76, 0, 0, 0, 0, 0, 0, 7, 195, 44, 144, 77, 76, 8, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 44, 149, 78, 8, 0, 0, 0, 0, 7, 195, 44, 149, 74, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 5, 196, 137,
-			28, 0, 7, 195, 44, 149, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 99, 0, 120, 0,
+			55, 39, 0, 0, 0, 0, 0, 14, 67, 77, 68, 128, 89, 47, 14, 16, 6, 35, 47, 39, 0, 0, 0, 0, 0, 12, 3, 95, 56, 88,
+			6, 39, 49, 72, 36, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 57, 88, 50, 6, 108, 72, 36, 49, 0, 0, 0, 0,
+			6, 131, 196, 137, 105, 72, 0, 0, 0, 0, 7, 131, 196, 137, 117, 72, 28, 0, 8, 196, 36, 229, 5, 72, 76, 8, 0, 9, 197, 65,
+			33, 84, 21, 32, 76, 28, 0, 0, 0, 0, 0, 14, 4, 95, 115, 116, 107, 89, 47, 14, 16, 36, 49, 35, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 20, 3, 97, 46, 107, 4, 35, 50, 47, 108, 49, 14, 16, 6, 37, 89, 47, 39, 0, 24, 0, 0, 0, 0, 0,
+			0, 0, 0, 5, 194, 48, 144, 72, 5, 194, 56, 80, 76, 0, 0, 0, 0, 0, 11, 67, 52, 18, 128, 65, 6, 110, 39, 2, 0, 0,
+			0, 0, 20, 4, 95, 99, 105, 114, 114, 37, 51, 49, 40, 65, 83, 55, 6, 36, 49, 89, 35, 0, 0, 7, 195, 65, 35, 192, 76, 8,
+			0, 16, 4, 95, 48, 77, 52, 72, 40, 37, 55, 37, 6, 39, 50, 39, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6,
+			39, 50, 39, 0, 0, 7, 195, 76, 83, 128, 76, 8, 16, 4, 95, 48, 77, 51, 65, 37, 55, 37, 6, 35, 34, 72, 39, 0, 0, 0,
+			12, 4, 95, 48, 77, 49, 65, 4, 37, 55, 10, 0, 0, 9, 4, 95, 35, 97, 106, 2, 110, 0, 0, 0, 0, 0, 10, 4, 95, 35,
+			97, 110, 2, 35, 50, 0, 0, 13, 67, 52, 20, 128, 65, 6, 35, 14, 16, 47, 39, 0, 0, 0, 0, 0, 16, 4, 95, 108, 105, 103,
+			55, 37, 81, 35, 47, 6, 40, 51, 35, 0, 0, 0, 0, 0, 6, 195, 37, 37, 83, 76, 0, 0, 0, 5, 194, 52, 144, 72, 17, 66,
+			44, 208, 49, 6, 37, 55, 39, 65, 6, 36, 47, 20, 16, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 66, 65, 48, 48, 4, 39,
+			89, 47, 35, 89, 49, 14, 16, 6, 37, 71, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 80, 128,
+			76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 99, 101, 100, 114, 36, 72, 6, 37, 55, 35, 0, 0, 0, 5, 194, 56,
+			144, 72, 0, 0, 7, 196, 21, 53, 21, 76, 76, 0, 0, 0, 6, 195, 60, 226, 64, 72, 10, 67, 64, 194, 64, 48, 55, 4, 37, 0,
+			0, 6, 131, 196, 157, 105, 72, 0, 0, 0, 0, 15, 4, 95, 99, 97, 112, 65, 110, 4, 40, 89, 49, 55, 35, 0, 0, 0, 0, 7,
+			195, 45, 83, 128, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 84, 128, 76, 8, 0, 0, 0, 0, 0, 0, 0, 21, 3,
+			95, 194, 171, 72, 40, 6, 39, 71, 55, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 7, 196, 36, 194, 65, 40, 76, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 196, 32, 21, 137, 76, 76, 0, 0, 0, 15, 67, 60, 181, 0, 39, 49, 4, 47, 39, 71, 14, 16, 39, 0, 0,
+			7, 196, 21, 53, 15, 76, 76, 6, 131, 197, 157, 105, 72, 0, 0, 0, 0, 7, 195, 44, 145, 76, 76, 8, 0, 0, 27, 3, 95, 194,
+			187, 83, 6, 36, 51, 65, 35, 72, 40, 4, 39, 71, 55, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 11, 3, 112, 196, 157,
+			48, 35, 75, 39, 0, 24, 0, 0, 6, 194, 60, 192, 76, 28, 0, 0, 0, 0, 24, 4, 95, 103, 114, 118, 65, 35, 55, 72, 36, 49,
+			89, 47, 14, 16, 35, 49, 6, 39, 51, 50, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 76, 80, 72, 8,
+			0, 7, 195, 76, 81, 0, 72, 8, 0, 7, 196, 64, 245, 143, 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 144,
+			74, 76, 6, 195, 48, 144, 74, 76, 0, 13, 2, 194, 169, 49, 39, 48, 37, 51, 110, 47, 39, 0, 0, 0, 0, 0, 6, 195, 88, 144,
+			64, 76, 6, 195, 56, 144, 64, 76, 0, 0, 0, 10, 2, 194, 176, 81, 34, 35, 72, 112, 0, 0, 0, 0, 19, 3, 116, 46, 110, 47,
+			6, 37, 36, 55, 4, 50, 39, 65, 6, 35, 47, 35, 0, 0, 0, 0, 0, 0, 6, 195, 76, 144, 74, 76, 6, 195, 12, 144, 74, 76,
+			6, 195, 52, 144, 74, 76, 0, 0, 0, 0, 0, 0, 15, 3, 116, 46, 101, 47, 37, 39, 4, 36, 89, 47, 35, 89, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 8, 132, 196, 137, 97, 114, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 0, 0, 7, 196, 52, 85, 15, 76, 76, 17, 67, 76, 84, 20, 89, 36, 48, 4, 47, 36,
+			65, 71, 14, 16, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 131, 97, 197, 173, 72, 8, 0, 0,
+			0, 10, 134, 97, 110, 116, 97, 197, 173, 76, 8, 0, 0, 0, 0, 0, 0, 6, 195, 36, 194, 65, 76, 7, 132, 196, 157, 105, 97, 76,
+			0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 245, 129, 76, 76, 0, 8, 132, 108, 97, 197, 173, 76, 28, 0, 0, 0, 7, 196, 16, 85,
+			143, 76, 76, 7, 196, 21, 53, 1, 76, 76, 0, 0, 9, 2, 95, 34, 114, 37, 47, 39, 0, 0, 16, 2, 95, 33, 10, 49, 14, 16,
+			37, 89, 37, 81, 50, 39, 10, 0, 0, 0, 15, 67, 40, 19, 128, 37, 4, 35, 50, 40, 6, 35, 51, 39, 0, 16, 2, 95, 39, 35,
+			48, 39, 89, 47, 14, 16, 6, 39, 83, 39, 0, 0, 0, 0, 0, 7, 195, 17, 83, 64, 72, 8, 0, 0, 21, 2, 95, 41, 83, 6,
+			36, 51, 65, 35, 48, 35, 34, 36, 50, 47, 6, 36, 88, 39, 0, 0, 14, 2, 95, 40, 48, 35, 34, 36, 50, 47, 36, 88, 39, 0,
+			0, 7, 195, 44, 144, 77, 76, 8, 7, 195, 64, 84, 128, 76, 28, 0, 11, 2, 95, 46, 48, 40, 50, 49, 47, 39, 0, 0, 18, 2,
+			95, 45, 72, 37, 84, 37, 72, 39, 89, 47, 14, 16, 36, 49, 39, 0, 0, 9, 2, 95, 44, 49, 39, 65, 39, 0, 0, 10, 2, 95,
+			51, 47, 14, 34, 6, 37, 0, 0, 8, 2, 95, 50, 72, 6, 40, 0, 0, 9, 2, 95, 49, 6, 40, 50, 40, 0, 0, 8, 2, 95,
+			48, 50, 40, 55, 0, 0, 9, 2, 95, 55, 89, 6, 36, 48, 0, 0, 9, 2, 95, 54, 89, 6, 36, 89, 0, 0, 10, 2, 95, 53,
+			49, 84, 6, 37, 50, 0, 0, 10, 2, 95, 52, 49, 84, 6, 35, 51, 0, 0, 15, 2, 95, 59, 48, 40, 50, 49, 47, 39, 49, 39,
+			65, 39, 0, 0, 13, 2, 95, 58, 72, 40, 48, 40, 50, 49, 47, 39, 0, 0, 8, 2, 95, 57, 50, 6, 108, 0, 0, 8, 2, 95,
+			56, 6, 39, 49, 0, 0, 18, 67, 20, 182, 128, 36, 49, 88, 36, 65, 48, 55, 36, 0, 44, 81, 101, 32, 15, 67, 20, 182, 128, 36,
+			49, 88, 36, 65, 48, 55, 36, 0, 24, 17, 2, 95, 63, 72, 36, 65, 35, 50, 72, 39, 89, 37, 81, 50, 39, 0, 0, 24, 2, 95,
+			62, 83, 6, 36, 51, 65, 35, 35, 50, 81, 40, 55, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 18, 2, 95, 60, 35, 50, 81,
+			40, 55, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 8, 132, 196, 157, 105, 115, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 67, 16, 80, 192, 72, 36, 114, 36, 65, 71, 14, 16, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
+			2, 95, 91, 51, 6, 36, 49, 47, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 8, 66, 88, 144, 84, 37, 0, 72, 5,
+			194, 84, 176, 13, 0, 15, 2, 95, 95, 89, 40, 71, 89, 47, 14, 16, 36, 49, 39, 0, 0, 0, 24, 2, 95, 93, 83, 6, 36, 51,
+			65, 35, 51, 36, 49, 47, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 6, 195, 36, 194, 64, 72, 13, 67, 4, 178, 192, 35,
+			55, 37, 50, 39, 65, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 16, 84, 192, 72, 8,
+			0, 0, 14, 4, 95, 104, 97, 99, 107, 35, 76, 6, 36, 49, 35, 0, 0, 6, 195, 44, 149, 78, 8, 0, 0, 0, 0, 0, 19, 2,
+			95, 123, 49, 6, 40, 51, 71, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 7, 196, 52, 85, 9, 76, 76, 0, 0, 0,
+			24, 2, 95, 125, 83, 6, 36, 51, 65, 35, 49, 40, 51, 71, 35, 49, 14, 16, 6, 35, 65, 48, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 108, 39, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 44, 149,
+			74, 76, 8, 13, 4, 95, 35, 51, 50, 89, 48, 6, 35, 114, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 16, 85, 137, 76,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 44, 144, 64, 76, 8, 6, 195, 76,
+			144, 64, 76, 6, 195, 12, 144, 64, 76, 6, 195, 84, 80, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 44, 145, 64, 76, 8,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 195, 44, 149, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 99, 0, 120, 0,
 			9, 1, 0, 0, 103, 0, 120, 0, 29, 1, 0, 0, 104, 0, 120, 0, 37, 1, 0, 0, 106, 0, 120, 0, 53, 1, 0, 0, 115, 0,
 			120, 0, 93, 1, 0, 0, 117, 0, 120, 0, 109, 1, 0, 0, 0, 0, 0, 0, 6, 97, 0, 4, 3, 35, 0, 8, 2, 32, 0, 197,
 			173, 3, 108, 0, 106, 3, 110, 0, 7, 6, 98, 0, 3, 71, 0, 8, 2, 32, 3, 71, 39, 0, 7, 6, 99, 0, 4, 104, 1, 25,
@@ -15308,5025 +16976,13184 @@ FilesInMemory create_espeakdata_dicts () {
 			39, 0, 7, 6, 120, 0, 8, 2, 32, 3, 37, 49, 89, 39, 0, 3, 49, 89, 0, 8, 3, 88, 0, 7, 6, 121, 0, 1, 25, 2,
 			25, 3, 37, 0, 8, 2, 32, 3, 37, 48, 89, 37, 55, 39, 50, 39, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 8, 2, 32,
 			3, 88, 39, 0, 7, 6, 0, 4, 39, 3, 0, 4, 45, 1, 45, 45, 3, 0, 4, 45, 2, 32, 97, 3, 0, 46, 1, 46, 3, 0,
-			46, 2, 46, 3, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 194, 163, 2,
-			32, 15, 3, 10, 48, 40, 50, 72, 112, 9, 0, 36, 2, 32, 15, 3, 10, 72, 39, 55, 35, 51, 112, 9, 0, 46, 3, 48, 40, 50,
-			49, 47, 39, 0, 194, 163, 3, 48, 40, 50, 72, 39, 0, 43, 3, 48, 55, 40, 89, 10, 0, 43, 43, 8, 2, 32, 3, 48, 55, 40,
-			89, 48, 55, 40, 89, 0, 197, 173, 3, 58, 0, 197, 173, 8, 2, 32, 3, 58, 39, 0, 4, 45, 3, 65, 37, 50, 40, 89, 10, 0,
-			45, 8, 32, 2, 32, 15, 0, 36, 3, 72, 39, 55, 35, 51, 39, 0, 196, 157, 3, 75, 0, 196, 157, 8, 2, 32, 3, 75, 39, 0,
-			196, 137, 3, 76, 0, 196, 137, 8, 2, 32, 3, 76, 39, 0, 45, 1, 32, 15, 2, 32, 15, 3, 89, 47, 14, 16, 36, 49, 6, 36,
-			47, 39, 10, 0, 196, 181, 3, 90, 0, 196, 181, 8, 2, 32, 3, 90, 39, 0, 197, 157, 3, 91, 0, 197, 157, 8, 2, 32, 3, 91,
-			39, 0, 196, 165, 3, 101, 0, 196, 165, 8, 2, 32, 3, 101, 39, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts15 = FileInMemory_createWithData (4668, reinterpret_cast<const char *> (&espeakdata_dicts15_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/eo_dict", 
+			39, 1, 17, 67, 2, 32, 3, 8, 0, 46, 2, 46, 3, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32,
+			17, 67, 2, 32, 15, 0, 194, 163, 2, 32, 15, 3, 10, 48, 40, 50, 72, 112, 9, 0, 36, 2, 32, 15, 3, 10, 72, 39, 55, 35,
+			51, 112, 9, 0, 46, 3, 48, 40, 50, 49, 47, 39, 0, 194, 163, 3, 48, 40, 50, 72, 39, 0, 43, 3, 48, 55, 40, 89, 10, 0,
+			43, 43, 8, 2, 32, 3, 48, 55, 40, 89, 48, 55, 40, 89, 0, 197, 173, 3, 58, 0, 197, 173, 8, 2, 32, 3, 58, 39, 0, 4,
+			45, 3, 65, 37, 50, 40, 89, 10, 0, 45, 8, 32, 2, 32, 15, 0, 36, 3, 72, 39, 55, 35, 51, 39, 0, 196, 157, 3, 75, 0,
+			196, 157, 8, 2, 32, 3, 75, 39, 0, 196, 137, 3, 76, 0, 196, 137, 8, 2, 32, 3, 76, 39, 0, 45, 1, 32, 15, 2, 32, 15,
+			3, 89, 47, 14, 16, 36, 49, 6, 36, 47, 39, 10, 0, 196, 181, 3, 90, 0, 196, 181, 8, 2, 32, 3, 90, 39, 0, 197, 157, 3,
+			91, 0, 197, 157, 8, 2, 32, 3, 91, 39, 0, 196, 165, 3, 101, 0, 196, 165, 8, 2, 32, 3, 101, 39, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts15 = FileInMemory_createWithData (4677, reinterpret_cast<const char *> (&espeakdata_dicts15_data), 
+			U"espeak-1.48.04-source/espeak-data/eo_dict", 
 			U"eo");
-		Collection_addItem (me.peek(), espeakdata_dicts15.transfer());
+		my addItem_move (espeakdata_dicts15.move());
 
-		static unsigned char espeakdata_dicts16_data[6340] = {
-			0, 4, 0, 0, 218, 19, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 14, 4, 193, 4, 72, 0, 0, 17, 70, 32, 20, 132, 92, 20,
-			133, 107, 6, 35, 34, 72, 58, 36, 34, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12, 87, 36, 0, 0, 0,
-			11, 67, 81, 114, 84, 47, 58, 6, 37, 47, 0, 6, 195, 69, 81, 64, 14, 6, 195, 69, 81, 64, 72, 13, 4, 95, 8, 1, 3, 49,
-			35, 34, 6, 110, 50, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 6, 195, 76, 147, 128, 14, 6, 195, 76, 147, 128, 72, 0, 0,
-			17, 65, 20, 37, 89, 48, 6, 37, 49, 0, 81, 115, 112, 101, 97, 107, 32, 4, 193, 20, 14, 5, 193, 20, 72, 9, 0, 0, 16, 4,
-			95, 48, 67, 15, 87, 109, 50, 47, 6, 109, 89, 37, 65, 0, 0, 0, 8, 65, 24, 23, 109, 83, 36, 0, 0, 0, 0, 0, 6, 65,
-			28, 101, 36, 0, 0, 0, 16, 4, 95, 51, 88, 15, 47, 34, 37, 101, 6, 109, 89, 37, 65, 0, 0, 0, 7, 65, 32, 35, 76, 36,
-			0, 0, 9, 198, 89, 81, 83, 81, 35, 192, 14, 9, 198, 89, 81, 83, 81, 35, 192, 72, 9, 198, 57, 81, 83, 81, 35, 192, 14, 9,
-			198, 57, 81, 83, 81, 35, 192, 72, 0, 0, 15, 1, 35, 35, 55, 65, 110, 35, 86, 6, 37, 98, 35, 0, 27, 0, 14, 65, 36, 6,
-			117, 48, 39, 72, 0, 81, 112, 111, 100, 32, 16, 65, 36, 6, 117, 83, 39, 50, 0, 81, 112, 104, 111, 110, 101, 32, 0, 15, 1, 37,
-			48, 110, 34, 87, 57, 6, 109, 50, 47, 39, 0, 27, 0, 14, 1, 38, 35, 65, 48, 109, 34, 89, 6, 35, 50, 47, 0, 0, 0, 8,
-			65, 40, 101, 110, 47, 35, 0, 0, 0, 6, 195, 64, 244, 128, 14, 6, 195, 64, 244, 128, 72, 15, 1, 42, 35, 89, 47, 109, 34, 6,
-			37, 89, 49, 39, 0, 27, 0, 9, 1, 43, 65, 6, 35, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 10, 1, 46, 48, 40,
-			50, 47, 39, 0, 27, 0, 6, 195, 4, 229, 5, 14, 7, 195, 4, 229, 5, 72, 9, 9, 1, 47, 71, 35, 51, 52, 35, 0, 0, 8,
-			65, 48, 23, 109, 55, 36, 0, 0, 0, 0, 0, 8, 65, 52, 23, 109, 65, 36, 0, 9, 198, 89, 81, 83, 81, 35, 211, 14, 9, 198,
-			89, 81, 83, 81, 35, 211, 72, 9, 198, 57, 81, 83, 81, 35, 211, 14, 9, 198, 57, 81, 83, 81, 35, 211, 72, 0, 0, 0, 0, 8,
-			65, 56, 23, 109, 50, 36, 0, 9, 5, 95, 48, 1, 14, 4, 37, 0, 0, 0, 0, 0, 4, 193, 60, 14, 4, 193, 60, 72, 0, 11,
-			1, 61, 37, 100, 58, 6, 35, 55, 0, 27, 0, 0, 0, 6, 65, 64, 48, 36, 0, 11, 1, 64, 35, 51, 52, 6, 39, 82, 35, 0,
-			0, 0, 0, 0, 6, 65, 68, 49, 40, 0, 0, 0, 0, 0, 8, 65, 72, 23, 109, 34, 36, 0, 0, 16, 70, 52, 246, 137, 48, 192,
-			64, 65, 39, 87, 6, 37, 55, 35, 0, 0, 0, 0, 8, 65, 76, 23, 109, 89, 36, 0, 0, 16, 70, 77, 0, 78, 37, 50, 0, 89,
-			48, 6, 35, 50, 37, 91, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 15, 69, 92, 147, 132, 61, 112, 58, 6, 37,
-			50, 72, 39, 58, 0, 4, 193, 84, 14, 4, 193, 84, 72, 0, 0, 16, 4, 95, 49, 67, 15, 87, 109, 50, 47, 6, 109, 89, 37, 65,
-			0, 0, 0, 8, 65, 88, 23, 40, 82, 36, 0, 0, 0, 0, 18, 4, 95, 49, 77, 52, 6, 40, 50, 71, 37, 57, 12, 6, 110, 50,
-			0, 102, 16, 4, 95, 49, 77, 52, 6, 40, 50, 71, 37, 98, 6, 110, 50, 0, 0, 14, 65, 92, 40, 82, 36, 15, 72, 6, 110, 82,
-			55, 36, 0, 0, 0, 16, 1, 94, 87, 37, 34, 49, 40, 65, 83, 55, 6, 36, 101, 39, 0, 0, 0, 9, 65, 96, 23, 109, 49, 37,
-			89, 0, 0, 18, 4, 95, 49, 77, 50, 6, 40, 50, 65, 37, 57, 12, 6, 110, 50, 0, 102, 16, 4, 95, 49, 77, 50, 6, 40, 50,
-			65, 37, 98, 6, 110, 50, 0, 0, 0, 0, 13, 65, 100, 37, 81, 34, 37, 6, 36, 100, 35, 0, 14, 6, 65, 100, 2, 37, 0, 0,
-			0, 6, 195, 48, 244, 192, 14, 6, 195, 48, 244, 192, 72, 0, 0, 8, 65, 104, 87, 109, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0,
-			18, 67, 77, 37, 1, 115, 101, 195, 177, 111, 114, 105, 116, 97, 0, 41, 24, 29, 0, 0, 0, 0, 0, 0, 19, 67, 17, 5, 15, 100,
-			101, 112, 97, 114, 116, 97, 109, 101, 110, 116, 111, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			16, 67, 77, 32, 64, 115, 101, 195, 177, 111, 114, 97, 0, 41, 24, 29, 19, 4, 95, 49, 57, 15, 86, 36, 87, 37, 65, 39, 50, 39,
-			82, 6, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 49, 67, 48, 87, 57, 6, 36, 50, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 49, 56, 15, 86, 36, 87, 37, 65, 110, 49, 47, 6, 35, 82, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 66, 17, 32, 100, 111, 99, 116, 111, 114, 0, 41, 24, 29, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 67, 77, 32, 83, 115, 101, 195, 177, 111, 114, 97, 115, 0, 41, 24, 29, 0, 0, 0,
-			0, 0, 0, 0, 0, 17, 67, 77, 33, 83, 115, 101, 195, 177, 111, 114, 101, 115, 0, 41, 24, 29, 0, 0, 7, 196, 69, 82, 69, 56,
-			14, 7, 196, 69, 82, 69, 56, 72, 0, 0, 0, 15, 4, 95, 49, 49, 15, 40, 50, 72, 6, 109, 87, 37, 65, 0, 0, 0, 0, 0,
-			0, 7, 196, 48, 147, 149, 96, 65, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 14, 5, 194, 16, 80, 72, 0, 0, 0, 6, 195, 16,
-			83, 0, 14, 6, 195, 16, 83, 0, 72, 0, 0, 20, 4, 95, 49, 51, 15, 86, 36, 87, 37, 65, 39, 47, 109, 34, 87, 6, 109, 34,
-			0, 0, 7, 196, 16, 243, 132, 20, 14, 7, 196, 16, 243, 132, 20, 72, 11, 4, 95, 4, 16, 20, 49, 39, 65, 35, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 4, 95, 49, 48, 15, 86, 6, 109, 87, 37, 65, 0, 0, 0, 0, 7, 66, 12, 128, 76, 36, 0, 5, 194, 4,
-			192, 14, 5, 194, 4, 192, 72, 0, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 36, 0, 0, 0, 0, 18, 4, 95, 49, 53,
-			15, 86, 36, 87, 37, 65, 39, 49, 6, 37, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 50, 15, 86, 58, 39,
-			86, 6, 109, 87, 37, 65, 0, 0, 23, 68, 21, 128, 205, 4, 101, 120, 99, 101, 108, 101, 110, 116, 195, 173, 115, 105, 109, 97, 0, 24,
-			29, 0, 0, 0, 0, 0, 0, 16, 70, 4, 225, 18, 60, 145, 0, 6, 35, 50, 72, 34, 120, 72, 0, 0, 20, 4, 95, 49, 55, 15,
-			86, 36, 87, 37, 65, 39, 89, 6, 109, 48, 47, 37, 65, 0, 0, 0, 8, 197, 13, 80, 78, 80, 240, 14, 8, 197, 13, 80, 78, 80,
-			240, 72, 0, 0, 0, 0, 0, 0, 19, 4, 95, 49, 52, 15, 86, 36, 87, 37, 65, 39, 49, 58, 6, 35, 34, 47, 0, 0, 0, 0,
-			0, 0, 0, 18, 68, 37, 164, 68, 4, 105, 122, 113, 117, 105, 101, 114, 100, 97, 0, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			19, 4, 95, 49, 54, 15, 86, 36, 87, 37, 65, 39, 89, 6, 109, 49, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 21,
-			52, 5, 4, 176, 37, 89, 48, 6, 37, 49, 0, 0, 0, 0, 0, 0, 16, 5, 95, 48, 77, 49, 15, 65, 37, 55, 6, 109, 89, 37,
-			65, 0, 0, 0, 0, 19, 4, 95, 55, 88, 15, 89, 109, 48, 47, 58, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0, 6,
-			195, 64, 20, 129, 14, 6, 195, 64, 20, 129, 72, 0, 0, 0, 17, 70, 76, 241, 148, 92, 20, 133, 89, 6, 39, 83, 47, 58, 36, 34,
-			0, 0, 0, 0, 23, 68, 21, 128, 205, 60, 101, 120, 99, 101, 108, 101, 110, 116, 195, 173, 115, 105, 109, 111, 0, 24, 29, 0, 0, 0,
-			0, 0, 0, 10, 67, 48, 149, 133, 55, 6, 117, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 15, 48, 34, 37, 65, 6, 109, 34, 0, 0, 0, 0, 9, 3, 226, 130, 172,
-			115, 34, 39, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 15, 89, 36, 100, 6, 40, 50, 72, 0, 0, 0, 0, 0, 0, 8, 197, 64,
-			244, 145, 84, 80, 14, 8, 197, 64, 244, 145, 84, 80, 72, 0, 0, 16, 70, 24, 16, 197, 8, 243, 203, 83, 6, 118, 89, 71, 40, 49,
-			0, 0, 13, 3, 95, 51, 15, 47, 109, 34, 87, 6, 109, 34, 0, 8, 4, 95, 15, 18, 4, 39, 0, 0, 0, 0, 0, 18, 68, 37,
-			164, 68, 60, 105, 122, 113, 117, 105, 101, 114, 100, 111, 0, 24, 29, 0, 0, 0, 18, 70, 20, 225, 204, 37, 50, 0, 195, 173, 110, 103,
-			108, 105, 115, 104, 0, 29, 0, 0, 0, 5, 194, 20, 192, 14, 5, 194, 20, 192, 72, 0, 12, 3, 95, 50, 48, 71, 6, 118, 50, 47,
-			36, 0, 0, 0, 0, 0, 6, 195, 48, 20, 192, 14, 6, 195, 48, 20, 192, 72, 0, 10, 3, 95, 53, 15, 49, 37, 50, 47, 0, 0,
-			0, 14, 4, 95, 13, 3, 14, 65, 35, 49, 34, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 54, 15, 89, 6, 109, 49,
-			89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 55, 15, 89, 6, 109, 47, 37, 65, 0, 0, 13, 69, 37, 2, 15, 56,
-			80, 6, 117, 83, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 224, 14, 5, 194, 20, 224, 72, 0, 13, 3, 95,
-			51, 88, 47, 34, 6, 118, 50, 47, 35, 0, 0, 14, 3, 95, 48, 67, 87, 57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 16, 67,
-			17, 32, 64, 100, 111, 99, 116, 111, 114, 97, 0, 41, 24, 29, 0, 7, 196, 76, 240, 146, 20, 14, 7, 196, 76, 240, 146, 20, 72, 12,
-			3, 95, 57, 15, 50, 39, 82, 6, 36, 50, 0, 0, 0, 0, 0, 13, 3, 95, 49, 67, 87, 57, 6, 36, 50, 47, 39, 0, 0, 0,
-			0, 0, 0, 0, 5, 194, 48, 16, 14, 5, 194, 48, 16, 72, 8, 4, 95, 35, 194, 170, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			11, 3, 95, 49, 49, 6, 110, 50, 87, 36, 0, 0, 0, 12, 3, 95, 49, 51, 47, 34, 6, 36, 87, 36, 0, 0, 11, 3, 95, 49,
-			50, 72, 6, 39, 87, 36, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37, 50, 87, 36, 0, 0, 14, 3, 95, 49, 52, 49, 35, 47, 6,
-			110, 34, 87, 36, 0, 0, 12, 3, 95, 52, 15, 49, 58, 6, 35, 34, 47, 0, 0, 0, 8, 4, 95, 35, 194, 186, 39, 0, 0, 14,
-			3, 95, 55, 88, 89, 109, 47, 6, 109, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 53, 67, 49, 37, 50,
-			57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 88, 72, 57, 6, 109, 87, 0, 0, 0, 0, 0,
-			0, 6, 195, 81, 32, 83, 14, 6, 195, 81, 32, 83, 72, 0, 0, 0, 11, 3, 95, 50, 88, 71, 6, 118, 50, 47, 0, 0, 19, 3,
-			95, 55, 67, 89, 4, 36, 47, 36, 87, 57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 0, 12, 3, 95, 56, 15, 110, 49, 47, 6,
-			35, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 63, 63, 89, 6, 37, 65, 71, 110, 55, 39, 0, 0, 0, 0, 15, 3,
-			95, 52, 88, 49, 58, 35, 34, 6, 109, 50, 47, 35, 0, 0, 19, 3, 95, 57, 67, 50, 4, 110, 82, 36, 87, 57, 6, 109, 50, 47,
-			110, 89, 0, 0, 0, 0, 0, 0, 0, 16, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 111, 0, 24, 29, 5, 194, 48, 80, 14,
-			5, 194, 48, 80, 72, 0, 19, 71, 20, 195, 209, 84, 83, 131, 20, 6, 36, 55, 39, 49, 58, 36, 50, 89, 0, 16, 3, 95, 53, 88,
-			87, 37, 50, 49, 58, 6, 109, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 13, 69, 60, 97, 137, 12, 80, 6, 39, 83, 37, 89, 0,
-			0, 0, 14, 3, 95, 54, 88, 89, 109, 89, 6, 109, 50, 47, 35, 0, 0, 0, 15, 4, 95, 50, 88, 15, 82, 37, 101, 6, 109, 89,
-			37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 110, 76, 6, 109, 50, 47, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80, 14, 6, 194, 52, 80, 72, 9, 0, 14, 3, 95, 57, 88, 50, 110, 82, 6, 109, 50,
-			47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 15, 7, 15,
-			49, 39, 55, 6, 37, 47, 35, 0, 0, 7, 196, 20, 229, 18, 20, 14, 7, 196, 20, 229, 18, 20, 72, 0, 15, 3, 13, 194, 170, 109,
-			97, 114, 195, 173, 97, 0, 41, 24, 29, 0, 0, 20, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 49, 34, 39, 89, 39, 83, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 70, 52, 86, 9, 12, 19, 143, 65, 109, 101, 37, 49, 35, 50,
-			39, 0, 0, 9, 67, 21, 145, 83, 6, 117, 89, 0, 5, 194, 61, 48, 14, 5, 194, 61, 48, 72, 0, 0, 18, 4, 95, 48, 77, 52,
-			10, 71, 37, 57, 12, 6, 39, 50, 109, 89, 0, 102, 16, 4, 95, 48, 77, 52, 10, 71, 37, 98, 6, 39, 50, 109, 89, 0, 0, 0,
-			24, 5, 5, 5, 46, 21, 21, 109, 89, 47, 6, 35, 86, 39, 89, 15, 40, 50, 6, 37, 86, 39, 89, 0, 17, 4, 95, 48, 77, 50,
-			65, 37, 57, 12, 6, 39, 50, 36, 89, 0, 102, 15, 4, 95, 48, 77, 50, 65, 37, 98, 6, 39, 50, 36, 89, 0, 0, 11, 67, 37,
-			3, 196, 6, 117, 48, 39, 72, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 13, 4, 95, 2, 18, 22, 71, 34,
-			6, 36, 82, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 14, 5, 194, 52, 144,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 48, 192, 6, 109, 61, 36, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 5, 83, 145, 84, 80, 14, 8, 197, 5,
-			83, 145, 84, 80, 72, 0, 0, 19, 4, 95, 52, 88, 15, 49, 58, 35, 86, 34, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 19,
-			4, 95, 3, 9, 18, 87, 37, 34, 49, 40, 65, 83, 55, 6, 36, 101, 39, 0, 0, 0, 0, 0, 0, 6, 195, 52, 148, 192, 14, 6,
-			195, 52, 148, 192, 72, 0, 0, 0, 0, 6, 195, 56, 244, 192, 14, 6, 195, 56, 244, 192, 72, 0, 0, 0, 0, 13, 4, 95, 19, 20,
-			11, 71, 6, 35, 51, 52, 35, 0, 0, 0, 13, 4, 95, 1, 3, 21, 35, 100, 6, 40, 86, 39, 0, 0, 19, 3, 95, 195, 179, 6,
-			39, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 25, 3, 95, 194, 171, 49, 39, 65, 6, 37, 98, 35, 89, 15, 37, 87, 49,
-			98, 6, 109, 34, 86, 35, 89, 0, 0, 0, 0, 13, 4, 4, 195, 177, 1, 100, 111, 195, 177, 97, 0, 29, 0, 5, 194, 48, 240, 14,
-			5, 194, 48, 240, 72, 0, 0, 0, 0, 0, 13, 4, 95, 18, 14, 7, 35, 50, 6, 37, 98, 39, 0, 0, 23, 3, 95, 194, 161, 35,
-			82, 34, 6, 37, 34, 35, 86, 65, 37, 34, 35, 87, 57, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 66, 77, 32, 115, 101, 195, 177, 111, 114, 0, 41, 24, 29, 0, 19, 67, 65, 65, 64, 112, 114, 101, 115, 105,
-			100, 101, 110, 116, 101, 0, 41, 24, 29, 0, 0, 0, 20, 4, 95, 1, 3, 50, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86,
-			39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 131, 239, 187, 191, 0, 0, 0, 0, 27, 3, 95, 194, 191, 35, 82, 34, 6, 37, 34,
-			37, 50, 47, 109, 51, 52, 4, 39, 100, 35, 87, 57, 6, 110, 50, 0, 0, 19, 4, 95, 53, 88, 15, 49, 37, 50, 49, 58, 35, 101,
-			6, 109, 89, 37, 65, 0, 0, 0, 0, 23, 3, 95, 194, 187, 49, 39, 65, 6, 37, 98, 35, 89, 15, 72, 109, 34, 6, 109, 76, 35,
-			89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 67, 37, 164, 64, 105, 122, 113, 117, 105, 101, 114, 100, 97, 0, 24, 29, 6, 195,
-			77, 84, 192, 14, 6, 195, 77, 84, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 89, 109, 49, 87, 57, 6,
-			110, 50, 0, 0, 5, 194, 76, 80, 14, 5, 194, 76, 80, 72, 0, 0, 0, 11, 2, 194, 163, 55, 37, 82, 34, 35, 89, 0, 0, 0,
-			0, 0, 0, 5, 194, 77, 80, 14, 5, 194, 77, 80, 72, 0, 0, 6, 2, 194, 170, 35, 0, 0, 0, 0, 18, 2, 195, 161, 6, 35,
-			15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 14, 2, 194, 169, 49, 39, 48, 37, 51, 52, 6, 117, 47, 0, 0, 13, 2, 194,
-			182, 48, 6, 35, 51, 52, 35, 83, 39, 0, 0, 0, 0, 18, 2, 195, 173, 6, 37, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35,
-			0, 0, 0, 0, 0, 18, 2, 195, 169, 6, 36, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 0, 0, 0, 0, 12, 68,
-			88, 242, 67, 20, 98, 111, 105, 115, 0, 29, 6, 2, 194, 186, 39, 0, 14, 4, 95, 3, 5, 4, 87, 36, 86, 6, 37, 98, 35, 0,
-			0, 0, 0, 9, 2, 195, 177, 23, 109, 67, 36, 0, 16, 4, 95, 12, 9, 7, 55, 37, 100, 35, 86, 6, 40, 34, 35, 0, 0, 7,
-			196, 32, 16, 201, 4, 14, 7, 196, 32, 16, 201, 4, 72, 0, 23, 73, 80, 133, 78, 16, 84, 130, 37, 33, 0, 47, 6, 35, 50, 72,
-			36, 34, 71, 37, 34, 72, 0, 0, 16, 2, 195, 188, 4, 40, 86, 57, 6, 109, 34, 109, 89, 37, 89, 0, 5, 194, 80, 80, 14, 5,
-			194, 80, 80, 72, 0, 0, 18, 2, 195, 186, 6, 40, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 0, 6, 195, 12, 243,
-			79, 14, 6, 195, 12, 243, 79, 72, 0, 0, 0, 0, 5, 194, 81, 80, 14, 5, 194, 81, 80, 72, 0, 18, 4, 95, 54, 88, 15, 89,
-			36, 100, 89, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 84, 64, 117, 115, 116, 101, 100, 0, 41, 24,
-			29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 14, 5, 194, 76, 144, 72, 0, 0, 0,
-			8, 197, 13, 80, 78, 16, 240, 14, 8, 197, 13, 80, 78, 16, 240, 72, 0, 0, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0,
-			0, 0, 6, 2, 95, 5, 36, 0, 0, 0, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 81, 114,
-			84, 80, 84, 128, 47, 58, 6, 37, 47, 36, 34, 0, 0, 0, 0, 17, 70, 64, 192, 84, 24, 244, 141, 48, 55, 6, 35, 47, 83, 39,
-			65, 0, 0, 0, 0, 0, 13, 2, 95, 25, 37, 81, 34, 37, 6, 36, 100, 35, 0, 0, 0, 0, 12, 68, 76, 182, 80, 20, 89, 49,
-			6, 117, 48, 0, 0, 0, 0, 0, 13, 2, 95, 34, 49, 39, 65, 6, 37, 98, 35, 89, 0, 0, 23, 2, 95, 33, 87, 109, 51, 52,
-			6, 35, 34, 35, 86, 65, 37, 34, 35, 87, 57, 6, 110, 50, 0, 0, 0, 6, 195, 12, 243, 128, 14, 6, 195, 12, 243, 128, 72, 15,
-			2, 95, 39, 35, 48, 110, 89, 47, 34, 6, 39, 83, 39, 0, 0, 6, 195, 8, 18, 143, 14, 6, 195, 8, 18, 143, 72, 0, 0, 0,
-			19, 2, 95, 43, 89, 6, 37, 100, 50, 110, 72, 36, 89, 40, 65, 6, 35, 34, 0, 0, 13, 4, 95, 3, 1, 16, 65, 6, 35, 98,
-			40, 89, 0, 0, 23, 2, 95, 41, 87, 57, 4, 109, 51, 52, 35, 48, 35, 34, 6, 109, 50, 47, 36, 89, 37, 89, 0, 0, 21, 2,
-			95, 40, 4, 35, 82, 34, 36, 48, 35, 34, 6, 109, 50, 47, 36, 89, 37, 89, 0, 0, 10, 2, 95, 47, 71, 35, 51, 52, 35, 0,
-			0, 10, 2, 95, 46, 48, 40, 50, 47, 39, 0, 0, 9, 2, 95, 45, 81, 98, 110, 50, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35,
-			0, 0, 10, 2, 95, 51, 47, 34, 6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 110, 89, 0, 0, 9, 2, 95, 49, 6, 40, 50,
-			39, 0, 0, 10, 2, 95, 48, 87, 6, 36, 34, 39, 0, 0, 11, 2, 95, 55, 89, 57, 6, 36, 47, 36, 0, 0, 6, 195, 64, 84,
-			143, 14, 6, 195, 64, 84, 143, 72, 9, 2, 95, 54, 89, 6, 118, 89, 0, 0, 11, 2, 95, 53, 87, 6, 37, 50, 49, 39, 0, 20,
-			4, 95, 4, 1, 3, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86, 39, 0, 0, 12, 2, 95, 52, 49, 58, 6, 35, 47, 34,
-			39, 0, 0, 17, 2, 95, 59, 48, 4, 40, 50, 47, 39, 37, 49, 6, 39, 65, 35, 0, 0, 16, 2, 95, 58, 72, 4, 110, 89, 48,
-			6, 40, 50, 47, 110, 89, 0, 0, 11, 2, 95, 57, 50, 58, 6, 36, 82, 36, 0, 0, 9, 2, 95, 56, 6, 110, 76, 39, 0, 0,
-			27, 2, 95, 63, 87, 109, 51, 52, 6, 35, 34, 37, 50, 47, 109, 51, 52, 4, 39, 100, 35, 87, 57, 6, 110, 50, 0, 0, 13, 2,
-			95, 62, 65, 35, 98, 6, 110, 34, 49, 36, 0, 0, 0, 13, 2, 95, 60, 65, 36, 50, 6, 110, 34, 49, 36, 0, 0, 0, 7, 196,
-			16, 84, 196, 20, 14, 7, 196, 16, 84, 196, 20, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 69, 82,
-			69, 56, 84, 192, 14, 9, 198, 69, 82, 69, 56, 84, 192, 72, 0, 0, 0, 0, 0, 0, 13, 4, 95, 4, 15, 20, 48, 6, 40, 50,
-			47, 39, 0, 0, 0, 0, 18, 2, 95, 91, 4, 35, 82, 34, 36, 49, 110, 34, 76, 6, 36, 47, 36, 0, 0, 20, 67, 36, 195, 79,
-			105, 108, 117, 115, 116, 114, 195, 173, 115, 105, 109, 111, 0, 24, 29, 0, 0, 7, 66, 88, 144, 71, 37, 0, 0, 7, 195, 16, 226, 64,
-			17, 42, 15, 2, 95, 95, 89, 40, 82, 34, 35, 98, 6, 35, 86, 39, 0, 0, 0, 20, 2, 95, 93, 87, 57, 4, 109, 51, 52, 35,
-			49, 110, 34, 76, 6, 36, 47, 36, 0, 0, 21, 2, 95, 92, 71, 6, 35, 51, 52, 35, 37, 65, 71, 109, 34, 47, 6, 37, 86, 35,
-			0, 0, 0, 0, 10, 67, 40, 22, 154, 75, 6, 35, 89, 0, 17, 4, 95, 56, 88, 15, 110, 49, 47, 39, 101, 6, 109, 89, 37, 65,
-			0, 0, 18, 2, 95, 96, 35, 87, 6, 109, 50, 47, 110, 81, 34, 6, 35, 82, 36, 0, 0, 0, 0, 0, 20, 67, 36, 195, 65, 105,
-			108, 117, 115, 116, 114, 195, 173, 115, 105, 109, 97, 0, 24, 29, 0, 0, 0, 0, 13, 4, 95, 7, 18, 22, 81, 34, 6, 35, 82, 36,
-			0, 0, 0, 17, 7, 13, 195, 169, 24, 9, 3, 15, 65, 6, 109, 101, 37, 49, 39, 0, 0, 0, 17, 70, 92, 147, 132, 61, 116, 192,
-			58, 6, 37, 50, 72, 39, 58, 89, 0, 0, 6, 195, 48, 84, 192, 14, 6, 195, 48, 84, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0,
-			15, 2, 95, 123, 4, 35, 82, 34, 36, 98, 6, 35, 82, 36, 0, 16, 4, 95, 4, 9, 1, 72, 57, 6, 109, 34, 36, 89, 37, 89,
-			0, 0, 0, 0, 0, 0, 13, 68, 64, 245, 197, 72, 48, 6, 35, 58, 36, 34, 0, 0, 17, 2, 95, 125, 87, 57, 4, 109, 51, 52,
-			35, 98, 6, 35, 82, 36, 0, 0, 0, 17, 70, 24, 148, 133, 24, 246, 0, 83, 6, 117, 34, 83, 39, 49, 89, 0, 0, 10, 67, 40,
-			21, 211, 75, 6, 39, 89, 0, 12, 68, 5, 4, 12, 20, 6, 35, 48, 13, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 69, 77, 1, 69, 12, 128, 89, 48, 6, 37, 76, 0, 0, 9, 198, 89, 81, 83, 81, 32, 64, 14, 9, 198, 89, 81, 83,
-			81, 32, 64, 72, 9, 198, 57, 81, 83, 81, 32, 64, 14, 9, 198, 57, 81, 83, 81, 32, 64, 72, 0, 0, 0, 0, 10, 67, 25, 33,
-			69, 83, 34, 6, 37, 0, 0, 0, 0, 0, 15, 4, 95, 35, 51, 50, 109, 89, 48, 6, 35, 87, 57, 39, 0, 0, 0, 0, 0, 0,
-			9, 198, 89, 81, 83, 81, 32, 83, 14, 9, 198, 89, 81, 83, 81, 32, 83, 72, 9, 198, 57, 81, 83, 81, 32, 83, 14, 9, 198, 57,
-			81, 83, 81, 32, 83, 72, 0, 0, 14, 69, 12, 132, 143, 52, 80, 49, 34, 6, 39, 58, 65, 0, 0, 0, 9, 198, 52, 145, 78, 81,
-			32, 83, 14, 9, 198, 52, 145, 78, 81, 32, 83, 72, 0, 0, 17, 4, 95, 57, 88, 15, 50, 39, 50, 35, 101, 6, 109, 89, 37, 65,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 81, 84, 192, 14, 6, 195, 81, 84, 192, 72, 0, 7, 196,
-			32, 20, 212, 4, 14, 7, 196, 32, 20, 212, 4, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
-			69, 28, 243, 199, 48, 80, 81, 6, 40, 81, 13, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 71, 52, 84, 211, 20, 225, 197, 72, 65, 6, 36, 89,
-			36, 50, 75, 36, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 84, 68, 192, 117, 115, 116, 101, 100, 101, 115,
-			0, 41, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 76, 84, 150, 36, 49, 64, 89, 6, 36, 34, 82, 37, 89,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 108, 0, 114, 0, 121, 0, 7, 6, 18, 67, 98, 0, 100, 0, 103,
-			0, 110, 0, 109, 0, 7, 6, 18, 68, 102, 0, 104, 0, 106, 0, 115, 0, 121, 0, 122, 0, 114, 0, 7, 6, 18, 69, 98, 0, 118,
-			0, 102, 0, 112, 0, 7, 6, 18, 70, 103, 0, 107, 0, 7, 6, 18, 71, 106, 0, 119, 0, 108, 0, 114, 0, 98, 0, 100, 0, 103,
-			0, 110, 0, 109, 0, 112, 0, 116, 0, 107, 0, 99, 0, 7, 6, 97, 0, 117, 2, 32, 3, 6, 114, 0, 121, 2, 32, 3, 6, 117,
-			0, 3, 35, 0, 117, 3, 114, 0, 4, 105, 3, 117, 0, 121, 2, 25, 0, 7, 6, 98, 0, 4, 3, 71, 0, 1, 109, 0, 1, 110,
-			0, 2, 105, 17, 65, 0, 2, 117, 17, 65, 0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 28, 1, 0, 4, 2,
-			17, 65, 3, 82, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 7, 6, 99, 0, 4, 3, 49, 0, 8, 2, 18, 66, 17, 65, 0, 107,
-			1, 17, 65, 0, 4, 104, 3, 76, 0, 104, 8, 2, 17, 65, 0, 2, 17, 71, 3, 87, 0, 7, 6, 100, 0, 4, 3, 72, 0, 1,
-			108, 0, 1, 109, 0, 1, 110, 0, 1, 114, 0, 8, 2, 17, 65, 0, 8, 2, 28, 1, 0, 8, 2, 114, 17, 65, 0, 4, 2, 17,
-			65, 3, 86, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 7, 6, 101, 0, 117, 2, 32, 3, 6, 115, 0, 121, 2, 32, 3, 6, 118,
-			0, 4, 3, 36, 0, 2, 17, 67, 104, 0, 4, 1, 114, 17, 65, 3, 109, 0, 2, 110, 25, 0, 2, 114, 0, 117, 3, 115, 0, 4,
-			105, 3, 118, 0, 121, 2, 25, 0, 7, 6, 102, 0, 4, 3, 83, 0, 8, 2, 18, 66, 17, 65, 0, 7, 6, 103, 0, 110, 8, 2,
-			17, 65, 3, 50, 0, 4, 3, 81, 0, 1, 109, 0, 1, 110, 0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 28,
-			1, 0, 104, 8, 2, 17, 65, 0, 4, 2, 17, 65, 3, 100, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 2, 17, 71, 12, 3, 101,
+		static unsigned char espeakdata_dicts16_data[6112] = {
+			0, 4, 0, 0, 212, 18, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 12, 68, 5, 4, 12, 20, 6, 35, 48, 13, 55, 0,
+			0, 13, 69, 37, 2, 15, 56, 80, 6, 117, 83, 39, 50, 0, 19, 67, 17, 5, 15, 100, 101, 112, 97, 114, 116, 97, 109, 101, 110, 116,
+			111, 0, 29, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12, 87, 36, 0, 8, 197, 13, 80, 78, 80, 240, 76, 0,
+			0, 6, 195, 69, 81, 64, 76, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 16, 70, 24, 16, 197, 8, 243, 203, 83, 6, 118, 89, 71,
+			40, 49, 0, 6, 195, 76, 147, 128, 76, 0, 11, 4, 95, 100, 112, 116, 49, 39, 65, 35, 0, 0, 18, 65, 20, 6, 37, 89, 48, 6,
+			37, 49, 0, 81, 115, 112, 101, 97, 107, 32, 5, 193, 20, 76, 46, 0, 0, 0, 0, 7, 65, 24, 109, 83, 36, 0, 0, 0, 13, 68,
+			64, 245, 197, 72, 48, 6, 35, 58, 36, 34, 0, 0, 0, 6, 65, 28, 101, 36, 0, 0, 0, 0, 0, 7, 65, 32, 35, 76, 36, 0,
+			0, 0, 0, 15, 1, 35, 35, 55, 65, 110, 35, 86, 6, 37, 98, 35, 0, 27, 0, 14, 65, 36, 6, 117, 48, 39, 72, 0, 81, 112,
+			111, 100, 32, 16, 65, 36, 6, 117, 83, 39, 50, 0, 81, 112, 104, 111, 110, 101, 32, 0, 15, 1, 37, 48, 110, 34, 87, 57, 6, 109,
+			50, 47, 39, 0, 27, 0, 17, 65, 112, 6, 35, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 14, 1, 38, 35, 65, 48, 109,
+			34, 89, 6, 35, 50, 47, 0, 0, 0, 8, 65, 40, 101, 110, 47, 35, 0, 0, 0, 6, 195, 64, 244, 128, 76, 15, 1, 42, 35, 89,
+			47, 109, 34, 6, 37, 89, 49, 39, 0, 27, 0, 9, 1, 43, 65, 6, 35, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 10,
+			1, 46, 48, 40, 50, 47, 39, 0, 27, 0, 9, 1, 47, 71, 35, 51, 52, 35, 0, 0, 7, 65, 48, 109, 55, 36, 0, 16, 4, 95,
+			100, 105, 97, 72, 57, 6, 109, 34, 36, 89, 37, 89, 0, 0, 0, 10, 67, 40, 21, 211, 75, 6, 39, 89, 0, 0, 0, 7, 65, 52,
+			109, 65, 36, 0, 0, 0, 0, 0, 17, 70, 32, 20, 132, 92, 20, 133, 107, 6, 35, 34, 72, 58, 36, 34, 0, 17, 70, 76, 241, 148,
+			92, 20, 133, 89, 6, 39, 83, 47, 58, 36, 34, 0, 7, 65, 56, 109, 50, 36, 0, 0, 0, 0, 0, 4, 193, 60, 76, 0, 11, 1,
+			61, 37, 100, 58, 6, 35, 55, 0, 27, 0, 0, 0, 6, 65, 64, 48, 36, 0, 11, 1, 64, 35, 51, 52, 6, 39, 82, 35, 0, 0,
+			0, 0, 0, 6, 65, 68, 49, 40, 0, 0, 0, 0, 0, 7, 65, 72, 109, 34, 36, 0, 0, 0, 0, 13, 4, 95, 100, 111, 116, 48,
+			6, 40, 50, 47, 39, 0, 0, 7, 65, 76, 109, 89, 36, 0, 0, 16, 70, 77, 0, 78, 37, 50, 0, 89, 48, 6, 35, 50, 37, 91,
+			0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 4, 193, 84, 76, 0, 0, 0, 0, 7, 65, 88, 40, 82, 36, 0, 0,
+			0, 9, 198, 89, 81, 83, 81, 32, 83, 76, 9, 198, 57, 81, 83, 81, 32, 83, 76, 0, 18, 4, 95, 49, 77, 52, 6, 40, 50, 71,
+			37, 57, 12, 6, 110, 50, 0, 102, 16, 4, 95, 49, 77, 52, 6, 40, 50, 71, 37, 98, 6, 110, 50, 0, 0, 14, 65, 92, 40, 82,
+			36, 15, 72, 6, 110, 82, 55, 36, 0, 0, 0, 16, 1, 94, 87, 37, 34, 49, 40, 65, 83, 55, 6, 36, 101, 39, 0, 0, 0, 8,
+			65, 96, 109, 49, 37, 89, 0, 0, 18, 4, 95, 49, 77, 50, 6, 40, 50, 65, 37, 57, 12, 6, 110, 50, 0, 102, 16, 4, 95, 49,
+			77, 50, 6, 40, 50, 65, 37, 98, 6, 110, 50, 0, 0, 0, 0, 6, 65, 100, 2, 37, 0, 0, 18, 68, 37, 164, 68, 4, 105, 122,
+			113, 117, 105, 101, 114, 100, 97, 0, 24, 29, 0, 6, 195, 48, 244, 192, 76, 0, 0, 8, 65, 104, 87, 109, 47, 35, 0, 0, 0, 0,
+			9, 198, 89, 81, 83, 81, 32, 64, 76, 9, 198, 57, 81, 83, 81, 32, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
+			4, 95, 48, 67, 111, 87, 109, 50, 47, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 24, 5, 101, 101, 46, 117, 117, 109,
+			89, 47, 6, 35, 86, 39, 89, 15, 40, 50, 6, 37, 86, 39, 89, 0, 0, 16, 4, 95, 51, 88, 111, 47, 34, 37, 101, 6, 109, 89,
+			37, 65, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 240, 146, 20, 76,
+			0, 16, 67, 77, 32, 64, 115, 101, 195, 177, 111, 114, 97, 0, 41, 24, 29, 0, 0, 0, 7, 196, 20, 229, 18, 20, 76, 0, 0, 0,
+			0, 0, 0, 12, 4, 95, 49, 67, 48, 87, 57, 6, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			69, 54, 38, 9, 12, 240, 65, 6, 109, 101, 37, 49, 39, 0, 0, 0, 0, 0, 13, 69, 77, 1, 69, 12, 128, 89, 48, 6, 37, 76,
+			0, 0, 19, 71, 52, 84, 211, 20, 225, 197, 72, 65, 6, 36, 89, 36, 50, 75, 36, 34, 0, 0, 0, 0, 0, 0, 0, 20, 71, 52,
+			144, 210, 61, 51, 198, 80, 65, 6, 117, 49, 34, 39, 89, 39, 83, 47, 0, 0, 14, 66, 17, 32, 100, 111, 99, 116, 111, 114, 0, 41,
+			24, 29, 0, 0, 0, 10, 67, 25, 33, 69, 83, 34, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 95, 111, 114, 100, 39, 0,
+			0, 0, 14, 4, 95, 109, 99, 110, 65, 35, 49, 34, 6, 110, 50, 0, 0, 16, 4, 95, 49, 67, 111, 87, 109, 50, 47, 6, 109, 89,
+			37, 65, 0, 0, 0, 16, 70, 81, 114, 84, 80, 84, 128, 47, 58, 6, 37, 47, 36, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 76, 0, 0, 0, 6, 195, 16, 83, 0, 76,
+			0, 0, 0, 11, 67, 81, 114, 84, 47, 58, 6, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 12, 128, 76, 36,
+			0, 5, 194, 4, 192, 76, 0, 0, 0, 0, 0, 14, 69, 12, 132, 143, 52, 80, 49, 34, 6, 39, 58, 65, 0, 19, 4, 95, 49, 57,
+			111, 86, 36, 87, 37, 65, 39, 50, 39, 82, 6, 36, 50, 0, 0, 0, 0, 12, 68, 76, 182, 80, 20, 89, 49, 6, 117, 48, 0, 0,
+			0, 0, 0, 0, 17, 65, 136, 6, 36, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70,
+			4, 225, 18, 60, 145, 0, 6, 35, 50, 72, 34, 120, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 49, 56, 111, 86,
+			36, 87, 37, 65, 110, 49, 47, 6, 35, 82, 0, 0, 0, 15, 69, 21, 52, 5, 4, 176, 6, 37, 89, 48, 6, 37, 49, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 15, 4, 95, 49, 49, 111, 40, 50, 72, 6, 109, 87, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67,
+			21, 145, 83, 6, 117, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 49, 51, 111, 86, 36, 87, 37, 65, 39, 47, 109, 34,
+			87, 6, 109, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 48, 111, 86, 6, 109, 87, 37, 65, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 18, 4, 95, 49, 53, 111, 86, 36, 87, 37, 65, 39, 49, 6, 37, 50, 47, 0, 0, 0, 0, 11, 67, 37, 3, 196,
+			6, 117, 48, 39, 72, 0, 0, 17, 65, 148, 6, 37, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 0, 0, 9, 3, 226, 130,
+			172, 115, 34, 39, 0, 0, 0, 16, 4, 95, 49, 50, 111, 86, 58, 39, 86, 6, 109, 87, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+			9, 198, 89, 81, 83, 81, 35, 192, 76, 9, 198, 57, 81, 83, 81, 35, 192, 76, 0, 20, 4, 95, 49, 55, 111, 86, 36, 87, 37, 65,
+			39, 89, 6, 109, 48, 47, 37, 65, 0, 14, 4, 95, 111, 103, 111, 49, 39, 55, 6, 37, 47, 35, 0, 0, 0, 0, 0, 7, 195, 8,
+			18, 143, 76, 46, 0, 0, 0, 0, 19, 4, 95, 49, 52, 111, 86, 36, 87, 37, 65, 39, 49, 58, 6, 35, 34, 47, 0, 0, 0, 18,
+			70, 20, 225, 204, 37, 50, 0, 195, 173, 110, 103, 108, 105, 115, 104, 0, 29, 0, 0, 9, 198, 52, 145, 78, 81, 32, 83, 76, 0, 5,
+			194, 20, 192, 76, 0, 12, 3, 95, 50, 48, 71, 6, 118, 50, 47, 36, 0, 0, 0, 0, 0, 6, 195, 48, 20, 192, 76, 0, 0, 0,
+			13, 4, 95, 98, 114, 118, 71, 34, 6, 36, 82, 36, 0, 0, 6, 195, 64, 20, 129, 76, 0, 0, 19, 4, 95, 49, 54, 111, 86, 36,
+			87, 37, 65, 39, 89, 6, 109, 49, 89, 47, 0, 0, 20, 4, 95, 97, 99, 50, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86,
+			39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5, 95, 48, 77, 49, 111, 65, 37, 55, 6, 109, 89, 37, 65, 0,
+			0, 0, 0, 19, 4, 95, 55, 88, 111, 89, 109, 48, 47, 58, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0, 5, 194, 20,
+			224, 76, 0, 13, 3, 95, 51, 88, 47, 34, 6, 118, 50, 47, 35, 0, 0, 0, 0, 0, 16, 67, 17, 32, 64, 100, 111, 99, 116, 111,
+			114, 97, 0, 41, 24, 29, 0, 7, 196, 32, 20, 212, 4, 76, 0, 0, 0, 0, 13, 3, 95, 49, 67, 87, 57, 6, 36, 50, 47, 39,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 16, 76, 8, 4, 95, 35, 194, 170, 35, 0, 0, 0, 17, 3, 95, 50, 67, 72, 39, 89,
+			87, 57, 6, 36, 50, 47, 39, 89, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 110, 50, 87, 36, 0, 0, 0, 18, 3,
+			95, 51, 67, 47, 34, 36, 89, 87, 57, 6, 36, 50, 47, 39, 89, 0, 12, 3, 95, 49, 51, 47, 34, 6, 36, 87, 36, 0, 0, 11,
+			3, 95, 49, 50, 72, 6, 39, 87, 36, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37, 50, 87, 36, 0, 0, 14, 3, 95, 49, 52, 49,
+			35, 47, 6, 110, 34, 87, 36, 0, 0, 0, 0, 23, 68, 21, 128, 205, 60, 101, 120, 99, 101, 108, 101, 110, 116, 195, 173, 115, 105, 109,
+			111, 0, 24, 29, 8, 4, 95, 35, 194, 186, 39, 0, 0, 14, 3, 95, 55, 88, 89, 109, 47, 6, 109, 50, 47, 35, 0, 0, 20, 3,
+			95, 52, 67, 49, 58, 35, 47, 34, 39, 87, 57, 6, 36, 50, 47, 39, 89, 0, 0, 0, 0, 0, 13, 3, 95, 49, 111, 48, 34, 37,
+			65, 6, 109, 34, 0, 0, 0, 0, 0, 16, 3, 95, 53, 67, 49, 37, 50, 57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 13, 4,
+			95, 97, 99, 117, 35, 100, 6, 40, 86, 39, 0, 0, 13, 3, 95, 50, 111, 89, 36, 100, 6, 40, 50, 72, 0, 0, 0, 0, 11, 3,
+			95, 49, 88, 72, 57, 6, 109, 87, 0, 0, 17, 3, 95, 54, 67, 89, 118, 89, 87, 57, 6, 36, 50, 47, 39, 89, 0, 0, 0, 0,
+			0, 13, 3, 95, 51, 111, 47, 109, 34, 87, 6, 109, 34, 0, 0, 0, 0, 10, 3, 95, 50, 88, 71, 118, 50, 47, 0, 0, 19, 3,
+			95, 55, 67, 89, 4, 36, 47, 36, 87, 57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56, 67,
+			39, 76, 39, 87, 57, 6, 36, 50, 47, 39, 89, 0, 0, 0, 0, 0, 10, 3, 95, 53, 111, 49, 37, 50, 47, 0, 14, 3, 95, 63,
+			63, 89, 6, 37, 65, 71, 110, 55, 39, 0, 0, 0, 0, 15, 3, 95, 52, 88, 49, 58, 35, 34, 6, 109, 50, 47, 35, 0, 0, 19,
+			3, 95, 57, 67, 50, 4, 110, 82, 36, 87, 57, 6, 109, 50, 47, 110, 89, 0, 0, 0, 0, 10, 67, 48, 149, 133, 55, 6, 117, 82,
+			0, 13, 4, 100, 195, 177, 97, 100, 111, 195, 177, 97, 0, 29, 7, 195, 4, 229, 5, 76, 46, 0, 12, 3, 95, 54, 111, 89, 6, 109,
+			49, 89, 47, 0, 0, 0, 16, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 111, 0, 24, 29, 5, 194, 48, 80, 76, 0, 16, 3,
+			95, 53, 88, 87, 37, 50, 49, 58, 6, 109, 50, 47, 35, 0, 0, 0, 13, 4, 95, 114, 110, 103, 35, 50, 6, 37, 98, 39, 0, 0,
+			0, 0, 12, 3, 95, 55, 111, 89, 6, 109, 47, 37, 65, 0, 0, 6, 195, 64, 84, 143, 76, 0, 0, 14, 3, 95, 54, 88, 89, 109,
+			89, 6, 109, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 57, 111, 50, 39, 82, 6, 36,
+			50, 0, 0, 0, 0, 13, 3, 95, 56, 88, 110, 76, 6, 109, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 52, 80, 76,
+			46, 0, 14, 3, 95, 57, 88, 50, 110, 82, 6, 109, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+			65, 168, 6, 40, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 12, 3, 95, 52, 111, 49, 58, 6, 35, 34, 47, 0, 0, 13,
+			4, 95, 115, 116, 107, 71, 6, 35, 51, 52, 35, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 28, 243, 199, 48, 80, 81, 6, 40, 81,
+			13, 55, 0, 0, 0, 0, 7, 196, 16, 84, 196, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3,
+			109, 194, 170, 109, 97, 114, 195, 173, 97, 0, 41, 24, 29, 0, 20, 65, 172, 6, 40, 15, 49, 39, 50, 15, 72, 57, 6, 109, 34, 109,
+			89, 37, 89, 0, 5, 194, 61, 48, 76, 19, 4, 95, 99, 105, 114, 87, 37, 34, 49, 40, 65, 83, 55, 6, 36, 101, 39, 0, 0, 0,
+			18, 4, 95, 48, 77, 52, 10, 71, 37, 57, 12, 6, 39, 50, 109, 89, 0, 102, 16, 4, 95, 48, 77, 52, 10, 71, 37, 98, 6, 39,
+			50, 109, 89, 0, 0, 0, 12, 3, 95, 56, 111, 110, 49, 47, 6, 35, 82, 0, 17, 4, 95, 48, 77, 50, 65, 37, 57, 12, 6, 39,
+			50, 36, 89, 0, 102, 15, 4, 95, 48, 77, 50, 65, 37, 98, 6, 39, 50, 36, 89, 0, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65,
+			6, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 108, 105, 103, 55, 37, 100, 35, 86, 6, 40, 34, 35, 0,
+			0, 0, 0, 0, 17, 67, 77, 32, 83, 115, 101, 195, 177, 111, 114, 97, 115, 0, 41, 24, 29, 6, 195, 81, 32, 83, 76, 0, 0, 0,
+			5, 194, 52, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 50, 88, 111, 82, 37, 101, 6, 109, 89, 37, 65, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 66, 48, 192, 6, 109, 61, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+			4, 95, 99, 101, 100, 87, 36, 86, 6, 37, 98, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 99, 97,
+			112, 65, 6, 35, 98, 40, 89, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 148, 192, 76, 0, 0, 0, 0, 6, 195, 56, 244, 192,
+			76, 0, 0, 0, 0, 7, 196, 69, 82, 69, 56, 76, 20, 4, 95, 100, 97, 99, 72, 6, 110, 71, 55, 36, 15, 35, 100, 6, 40, 86,
+			39, 0, 0, 0, 0, 19, 3, 95, 195, 179, 6, 39, 15, 35, 87, 109, 50, 47, 58, 6, 35, 86, 35, 0, 25, 3, 95, 194, 171, 49,
+			39, 65, 6, 37, 98, 35, 89, 15, 37, 87, 49, 98, 6, 109, 34, 86, 35, 89, 0, 0, 17, 67, 77, 33, 83, 115, 101, 195, 177, 111,
+			114, 101, 115, 0, 41, 24, 29, 0, 0, 0, 5, 194, 48, 240, 76, 0, 0, 0, 0, 0, 0, 23, 3, 95, 194, 161, 35, 82, 34, 6,
+			37, 34, 35, 86, 65, 37, 34, 35, 87, 57, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			16, 70, 52, 246, 137, 48, 192, 64, 65, 39, 87, 6, 37, 55, 35, 0, 0, 0, 14, 66, 77, 32, 115, 101, 195, 177, 111, 114, 0, 41,
+			24, 29, 0, 19, 67, 65, 65, 64, 112, 114, 101, 115, 105, 100, 101, 110, 116, 101, 0, 41, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 9, 198, 69, 82, 69, 56, 84, 192, 76, 5, 131, 239, 187, 191, 0, 0, 0, 0, 27, 3, 95, 194, 191, 35, 82, 34, 6,
+			37, 34, 37, 50, 47, 109, 51, 52, 4, 39, 100, 35, 87, 57, 6, 110, 50, 0, 0, 0, 0, 0, 23, 3, 95, 194, 187, 49, 39, 65,
+			6, 37, 98, 35, 89, 15, 72, 109, 34, 6, 109, 76, 35, 89, 0, 0, 0, 0, 0, 19, 71, 20, 195, 209, 84, 83, 131, 20, 6, 36,
+			55, 39, 49, 58, 36, 50, 89, 0, 0, 0, 0, 0, 12, 68, 88, 242, 67, 20, 98, 111, 105, 115, 0, 29, 13, 4, 95, 103, 114, 118,
+			81, 34, 6, 35, 82, 36, 0, 0, 17, 67, 37, 164, 64, 105, 122, 113, 117, 105, 101, 114, 100, 97, 0, 24, 29, 6, 195, 77, 84, 192,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 89, 109, 49, 87, 57, 6, 110, 50, 0, 0, 5, 194, 76, 80, 76,
+			0, 0, 0, 11, 2, 194, 163, 55, 37, 82, 34, 35, 89, 0, 0, 0, 0, 0, 0, 5, 194, 77, 80, 76, 0, 19, 4, 95, 52, 88,
+			111, 49, 58, 35, 86, 34, 35, 101, 6, 109, 89, 37, 65, 0, 0, 6, 2, 194, 170, 35, 0, 0, 0, 0, 14, 2, 194, 169, 49, 39,
+			48, 37, 51, 52, 6, 117, 47, 0, 0, 13, 2, 194, 182, 48, 6, 35, 51, 52, 35, 83, 39, 0, 0, 7, 196, 48, 147, 149, 96, 65,
+			0, 0, 0, 0, 0, 11, 2, 194, 176, 81, 34, 35, 72, 39, 89, 0, 0, 0, 0, 0, 7, 196, 32, 16, 201, 4, 76, 0, 0, 6,
+			2, 194, 186, 39, 0, 0, 0, 0, 8, 2, 195, 177, 109, 67, 36, 0, 0, 0, 23, 73, 80, 133, 78, 16, 84, 130, 37, 33, 0, 47,
+			6, 35, 50, 72, 36, 34, 71, 37, 34, 72, 0, 18, 3, 194, 186, 102, 81, 34, 6, 35, 72, 39, 89, 15, 6, 109, 83, 36, 0, 0,
+			5, 194, 80, 80, 76, 0, 0, 0, 0, 17, 3, 194, 186, 99, 81, 34, 6, 35, 72, 39, 89, 15, 87, 6, 36, 0, 0, 0, 0, 0,
+			5, 194, 81, 80, 76, 0, 0, 0, 0, 17, 3, 194, 186, 107, 81, 34, 6, 35, 72, 39, 89, 15, 49, 6, 35, 0, 0, 0, 0, 0,
+			13, 66, 84, 64, 117, 115, 116, 101, 100, 0, 41, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 64, 244, 145, 84, 80, 76,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 76, 0, 0, 0, 0, 0, 20, 67, 36, 195, 79, 105, 108, 117, 115, 116, 114, 195, 173,
+			115, 105, 109, 111, 0, 24, 29, 0, 0, 15, 69, 92, 147, 132, 61, 112, 58, 6, 37, 50, 72, 39, 58, 0, 0, 0, 19, 4, 95, 53,
+			88, 111, 49, 37, 50, 49, 58, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 243, 79, 76, 0, 0,
+			0, 7, 196, 16, 243, 132, 20, 76, 0, 13, 69, 60, 97, 137, 12, 80, 6, 39, 83, 37, 89, 0, 0, 0, 0, 0, 8, 197, 5, 83,
+			145, 84, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 49, 39, 65, 6, 37, 98, 35,
+			89, 0, 0, 23, 2, 95, 33, 87, 109, 51, 52, 6, 35, 34, 35, 86, 65, 37, 34, 35, 87, 57, 6, 110, 50, 0, 0, 0, 6, 195,
+			12, 243, 128, 76, 15, 2, 95, 39, 35, 48, 110, 89, 47, 34, 6, 39, 83, 39, 0, 0, 0, 0, 0, 19, 2, 95, 43, 89, 6, 37,
+			100, 50, 110, 72, 36, 89, 40, 65, 6, 35, 34, 0, 0, 0, 23, 2, 95, 41, 87, 57, 4, 109, 51, 52, 35, 48, 35, 34, 6, 109,
+			50, 47, 36, 89, 37, 89, 0, 0, 21, 2, 95, 40, 4, 35, 82, 34, 36, 48, 35, 34, 6, 109, 50, 47, 36, 89, 37, 89, 0, 0,
+			10, 2, 95, 47, 71, 35, 51, 52, 35, 0, 0, 10, 2, 95, 46, 48, 40, 50, 47, 39, 0, 0, 9, 2, 95, 45, 81, 98, 110, 50,
+			0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 10, 2, 95, 51, 47, 34, 6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 110,
+			89, 0, 0, 9, 2, 95, 49, 6, 40, 50, 39, 0, 0, 10, 2, 95, 48, 87, 6, 36, 34, 39, 0, 0, 11, 2, 95, 55, 89, 57,
+			6, 36, 47, 36, 0, 0, 9, 2, 95, 54, 89, 6, 118, 89, 0, 0, 11, 2, 95, 53, 87, 6, 37, 50, 49, 39, 0, 0, 12, 2,
+			95, 52, 49, 58, 6, 35, 47, 34, 39, 0, 0, 17, 2, 95, 59, 48, 4, 40, 50, 47, 39, 37, 49, 6, 39, 65, 35, 0, 0, 16,
+			2, 95, 58, 72, 4, 110, 89, 48, 6, 40, 50, 47, 110, 89, 0, 0, 11, 2, 95, 57, 50, 58, 6, 36, 82, 36, 0, 0, 9, 2,
+			95, 56, 6, 110, 76, 39, 0, 0, 27, 2, 95, 63, 87, 109, 51, 52, 6, 35, 34, 37, 50, 47, 109, 51, 52, 4, 39, 100, 35, 87,
+			57, 6, 110, 50, 0, 0, 13, 2, 95, 62, 65, 35, 98, 6, 110, 34, 49, 36, 0, 0, 0, 13, 2, 95, 60, 65, 36, 50, 6, 110,
+			34, 49, 36, 0, 0, 0, 0, 18, 4, 95, 54, 88, 111, 89, 36, 100, 89, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 0,
+			18, 68, 37, 164, 68, 60, 105, 122, 113, 117, 105, 101, 114, 100, 111, 0, 24, 29, 0, 17, 70, 64, 192, 84, 24, 244, 141, 48, 55, 6,
+			35, 47, 83, 39, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 67, 36, 195, 65, 105, 108, 117, 115, 116, 114, 195,
+			173, 115, 105, 109, 97, 0, 24, 29, 0, 0, 0, 9, 198, 88, 145, 84, 56, 19, 64, 66, 0, 18, 2, 95, 91, 4, 35, 82, 34, 36,
+			49, 110, 34, 76, 6, 36, 47, 36, 0, 0, 0, 0, 7, 66, 88, 144, 71, 37, 0, 0, 7, 195, 16, 226, 64, 13, 42, 15, 2, 95,
+			95, 89, 40, 82, 34, 35, 98, 6, 35, 86, 39, 0, 0, 0, 20, 2, 95, 93, 87, 57, 4, 109, 51, 52, 35, 49, 110, 34, 76, 6,
+			36, 47, 36, 0, 0, 21, 2, 95, 92, 71, 6, 35, 51, 52, 35, 37, 65, 71, 109, 34, 47, 6, 37, 86, 35, 0, 0, 0, 0, 6,
+			2, 95, 97, 35, 0, 0, 10, 67, 40, 22, 154, 75, 6, 35, 89, 0, 18, 2, 95, 96, 35, 87, 6, 109, 50, 47, 110, 81, 34, 6,
+			35, 82, 36, 0, 0, 0, 0, 6, 2, 95, 101, 36, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 111, 39, 0, 0, 0, 0, 0, 6,
+			195, 48, 84, 192, 76, 0, 0, 13, 4, 95, 104, 97, 99, 49, 35, 34, 6, 110, 50, 0, 0, 0, 0, 0, 0, 0, 15, 2, 95, 123,
+			4, 35, 82, 34, 36, 98, 6, 35, 82, 36, 0, 0, 0, 13, 2, 95, 121, 37, 81, 34, 37, 6, 36, 100, 35, 0, 0, 0, 0, 0,
+			17, 2, 95, 125, 87, 57, 4, 109, 51, 52, 35, 98, 6, 35, 82, 36, 0, 0, 0, 17, 70, 24, 148, 133, 24, 246, 0, 83, 6, 117,
+			34, 83, 39, 49, 89, 0, 0, 0, 9, 5, 95, 48, 97, 110, 100, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 35, 51, 50, 109, 89, 48, 6, 35, 87, 57, 39, 0, 0, 0, 0, 0, 0, 0, 17,
+			70, 92, 147, 132, 61, 116, 192, 58, 6, 37, 50, 72, 39, 58, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 195, 81, 84, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 89, 81, 83, 81, 35, 211, 76,
+			9, 198, 57, 81, 83, 81, 35, 211, 76, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 56, 88, 111, 110, 49, 47, 39, 101, 6, 109,
+			89, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 76, 84, 150, 36, 49, 64, 89, 6, 36, 34, 82,
+			37, 89, 0, 0, 0, 23, 68, 21, 128, 205, 4, 101, 120, 99, 101, 108, 101, 110, 116, 195, 173, 115, 105, 109, 97, 0, 24, 29, 0, 0,
+			0, 18, 67, 77, 37, 1, 115, 101, 195, 177, 111, 114, 105, 116, 97, 0, 41, 24, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 84, 68, 192, 117, 115, 116, 101, 100, 101, 115, 0,
+			41, 24, 29, 0, 0, 0, 0, 8, 197, 13, 80, 78, 16, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+			4, 95, 57, 88, 111, 50, 39, 50, 35, 101, 6, 109, 89, 37, 65, 0, 0, 0, 0, 0, 6, 18, 66, 108, 0, 114, 0, 121, 0, 7,
+			6, 18, 67, 98, 0, 100, 0, 103, 0, 110, 0, 109, 0, 7, 6, 18, 68, 102, 0, 104, 0, 106, 0, 114, 0, 115, 0, 121, 0, 122,
+			0, 7, 6, 18, 69, 98, 0, 118, 0, 102, 0, 112, 0, 7, 6, 18, 70, 103, 0, 107, 0, 7, 6, 18, 71, 106, 0, 119, 0, 108,
+			0, 114, 0, 98, 0, 100, 0, 103, 0, 110, 0, 109, 0, 112, 0, 116, 0, 107, 0, 99, 0, 7, 6, 97, 0, 117, 2, 32, 3, 6,
+			114, 0, 121, 2, 32, 3, 6, 117, 0, 3, 35, 0, 117, 3, 114, 0, 4, 105, 3, 117, 0, 121, 2, 25, 0, 7, 6, 98, 0, 4,
+			3, 71, 0, 1, 109, 0, 1, 110, 0, 2, 105, 17, 65, 0, 2, 117, 17, 65, 0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65,
+			0, 8, 2, 28, 1, 0, 4, 2, 17, 65, 3, 82, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 7, 6, 99, 0, 4, 3, 49, 0,
+			8, 2, 18, 66, 17, 65, 0, 107, 1, 17, 65, 0, 4, 104, 3, 76, 0, 104, 8, 0, 2, 17, 71, 3, 87, 0, 7, 6, 100, 0,
+			4, 3, 72, 0, 1, 108, 0, 1, 109, 0, 1, 110, 0, 1, 114, 0, 2, 32, 0, 8, 2, 17, 65, 0, 8, 2, 28, 1, 0, 8,
+			2, 114, 17, 65, 0, 4, 2, 17, 65, 3, 86, 0, 2, 18, 68, 0, 2, 32, 17, 65, 0, 2, 99, 17, 71, 0, 2, 118, 0, 7,
+			6, 101, 0, 117, 2, 32, 3, 6, 115, 0, 121, 2, 32, 3, 6, 118, 0, 4, 3, 36, 0, 2, 17, 67, 104, 0, 4, 1, 114, 17,
+			65, 3, 109, 0, 2, 110, 25, 0, 2, 114, 0, 117, 3, 115, 0, 4, 105, 3, 118, 0, 121, 2, 25, 0, 7, 6, 102, 0, 4, 3,
+			83, 0, 8, 2, 18, 66, 17, 65, 0, 7, 6, 103, 0, 1, 110, 2, 32, 3, 0, 110, 8, 2, 17, 65, 3, 50, 0, 4, 3, 81,
+			0, 1, 109, 0, 1, 110, 0, 2, 32, 0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 28, 1, 0, 104, 8, 2,
+			17, 65, 0, 4, 2, 17, 65, 3, 100, 0, 2, 18, 68, 0, 2, 32, 17, 65, 0, 2, 99, 17, 71, 0, 2, 17, 71, 12, 3, 101,
 			0, 7, 6, 104, 0, 3, 0, 105, 8, 2, 17, 65, 3, 57, 0, 7, 6, 105, 0, 4, 5, 35, 1, 108, 2, 17, 65, 3, 2, 37,
 			0, 5, 35, 1, 114, 2, 17, 65, 0, 3, 37, 0, 4, 1, 17, 67, 2, 17, 65, 3, 57, 0, 1, 117, 103, 2, 17, 65, 0, 2,
-			17, 65, 0, 7, 6, 106, 0, 3, 101, 0, 7, 6, 107, 0, 4, 3, 49, 0, 8, 2, 18, 66, 17, 65, 0, 7, 6, 108, 0, 4,
-			3, 55, 0, 108, 2, 32, 0, 108, 5, 2, 3, 57, 12, 0, 4, 108, 3, 61, 0, 108, 8, 2, 17, 65, 0, 108, 5, 2, 1, 32,
-			110, 2, 17, 65, 3, 75, 0, 108, 5, 2, 8, 2, 17, 65, 3, 98, 0, 7, 6, 109, 0, 1, 21, 2, 32, 3, 8, 65, 0, 110,
-			8, 2, 101, 109, 3, 50, 0, 3, 65, 0, 98, 8, 2, 17, 65, 3, 65, 71, 0, 7, 6, 110, 0, 4, 3, 50, 0, 104, 8, 2,
-			17, 65, 0, 4, 2, 18, 69, 3, 65, 0, 2, 32, 18, 69, 0, 121, 2, 17, 65, 3, 67, 0, 4, 2, 18, 70, 3, 68, 0, 2,
-			32, 18, 70, 0, 2, 106, 0, 7, 6, 111, 0, 121, 2, 32, 3, 6, 120, 0, 4, 3, 39, 0, 2, 17, 67, 104, 0, 117, 3, 39,
-			58, 0, 4, 1, 114, 17, 65, 3, 110, 0, 2, 17, 67, 25, 0, 2, 114, 0, 4, 105, 3, 120, 0, 121, 2, 25, 0, 7, 6, 112,
-			0, 4, 116, 8, 2, 101, 114, 111, 3, 47, 0, 116, 8, 2, 111, 108, 0, 4, 3, 48, 0, 8, 2, 18, 66, 17, 65, 0, 2, 116,
-			3, 48, 12, 0, 4, 104, 2, 21, 3, 83, 0, 104, 2, 25, 0, 104, 8, 2, 17, 65, 0, 4, 115, 8, 2, 101, 117, 100, 111, 3,
-			89, 0, 115, 8, 2, 105, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 17, 71, 0, 119, 8, 2, 17, 65, 3, 49, 58, 0, 7,
-			6, 114, 0, 4, 3, 34, 0, 1, 17, 65, 2, 17, 65, 0, 1, 17, 67, 2, 17, 65, 0, 2, 32, 0, 2, 116, 0, 4, 1, 108,
-			2, 17, 65, 3, 51, 0, 1, 109, 2, 17, 65, 0, 1, 110, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 8, 2, 17, 65, 0, 114,
-			3, 51, 52, 0, 7, 6, 115, 0, 4, 3, 89, 0, 1, 10, 2, 32, 14, 128, 128, 129, 0, 8, 2, 25, 21, 0, 99, 5, 33, 2,
-			17, 71, 0, 115, 0, 4, 104, 2, 25, 3, 91, 0, 104, 8, 2, 17, 65, 0, 104, 8, 2, 18, 66, 17, 65, 0, 7, 6, 116, 0,
-			4, 3, 47, 0, 8, 2, 18, 66, 17, 65, 0, 104, 2, 25, 0, 104, 8, 2, 21, 0, 4, 120, 3, 76, 0, 120, 8, 2, 17, 65,
-			0, 7, 6, 117, 0, 4, 1, 103, 2, 101, 3, 0, 4, 1, 103, 2, 105, 3, 0, 4, 1, 103, 2, 195, 169, 3, 0, 1, 103, 2,
-			195, 173, 3, 0, 4, 5, 35, 1, 108, 2, 17, 65, 3, 2, 40, 0, 5, 35, 1, 114, 2, 17, 65, 0, 4, 3, 40, 0, 2, 117,
-			0, 2, 17, 65, 3, 58, 0, 7, 6, 118, 0, 4, 3, 71, 0, 1, 109, 0, 1, 110, 0, 2, 105, 17, 65, 0, 2, 117, 17, 65,
-			0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 28, 1, 0, 4, 2, 17, 65, 3, 82, 0, 2, 18, 68, 0, 2,
-			99, 17, 71, 0, 7, 6, 119, 0, 4, 3, 58, 0, 104, 8, 2, 17, 65, 0, 7, 6, 120, 0, 4, 3, 49, 89, 0, 99, 5, 33,
-			2, 17, 71, 0, 8, 2, 28, 1, 3, 89, 0, 7, 6, 121, 0, 4, 3, 37, 0, 2, 32, 0, 4, 8, 108, 2, 17, 65, 3, 57,
-			0, 8, 109, 2, 17, 65, 0, 4, 1, 117, 2, 25, 3, 57, 12, 0, 2, 17, 65, 0, 1, 32, 110, 2, 17, 65, 3, 75, 0, 8,
-			2, 28, 1, 3, 79, 0, 8, 2, 17, 65, 3, 98, 0, 7, 6, 122, 0, 3, 87, 0, 5, 2, 2, 18, 67, 3, 88, 0, 122, 3,
-			123, 0, 7, 6, 0, 195, 161, 3, 7, 35, 0, 195, 173, 3, 7, 37, 0, 195, 186, 3, 7, 40, 0, 195, 169, 3, 7, 109, 0, 195,
-			179, 3, 7, 110, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 188, 3, 40,
-			0, 44, 2, 15, 3, 49, 110, 65, 35, 0, 45, 8, 2, 32, 15, 3, 65, 6, 109, 50, 110, 89, 0, 195, 177, 3, 67, 0, 36, 3,
-			72, 6, 110, 55, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts16 = FileInMemory_createWithData (6339, reinterpret_cast<const char *> (&espeakdata_dicts16_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/es_dict", 
+			17, 65, 0, 5, 35, 1, 108, 17, 65, 2, 17, 65, 0, 5, 35, 1, 114, 17, 65, 2, 17, 65, 0, 7, 6, 106, 0, 3, 101, 0,
+			7, 6, 107, 0, 4, 3, 49, 0, 8, 2, 18, 66, 17, 65, 0, 7, 6, 108, 0, 3, 55, 0, 108, 5, 2, 3, 57, 12, 0, 4,
+			108, 3, 61, 0, 108, 2, 32, 0, 108, 8, 2, 17, 65, 0, 108, 5, 2, 1, 32, 110, 2, 17, 65, 3, 75, 0, 108, 5, 2, 8,
+			2, 17, 65, 3, 98, 0, 7, 6, 109, 0, 110, 8, 2, 101, 109, 3, 50, 0, 3, 65, 0, 98, 8, 2, 17, 65, 3, 65, 71, 0,
+			7, 6, 110, 0, 4, 3, 50, 0, 104, 8, 2, 17, 65, 0, 4, 2, 18, 69, 3, 65, 0, 2, 32, 18, 69, 0, 121, 2, 17, 65,
+			3, 67, 0, 4, 2, 18, 70, 3, 68, 0, 2, 32, 18, 70, 0, 2, 106, 0, 7, 6, 111, 0, 121, 2, 32, 3, 6, 120, 0, 4,
+			3, 39, 0, 2, 17, 67, 104, 0, 117, 3, 39, 58, 0, 4, 1, 114, 17, 65, 3, 110, 0, 2, 17, 67, 25, 0, 2, 114, 0, 4,
+			105, 3, 120, 0, 121, 2, 25, 0, 7, 6, 112, 0, 4, 116, 8, 2, 101, 114, 111, 3, 47, 0, 116, 8, 2, 111, 108, 0, 4, 3,
+			48, 0, 8, 2, 18, 66, 17, 65, 0, 2, 116, 3, 48, 12, 0, 4, 104, 2, 21, 3, 83, 0, 104, 2, 25, 0, 104, 8, 2, 17,
+			65, 0, 4, 115, 8, 2, 101, 117, 100, 111, 3, 89, 0, 115, 8, 2, 105, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 17, 71,
+			0, 119, 8, 2, 17, 65, 3, 49, 58, 0, 7, 6, 114, 0, 4, 3, 34, 0, 1, 17, 65, 2, 17, 65, 0, 1, 17, 67, 2, 17,
+			65, 0, 2, 32, 0, 2, 116, 0, 4, 1, 108, 2, 17, 65, 3, 52, 0, 1, 109, 2, 17, 65, 0, 1, 110, 2, 17, 65, 0, 1,
+			115, 2, 17, 65, 0, 8, 2, 17, 65, 0, 114, 0, 7, 6, 115, 0, 4, 3, 89, 0, 1, 10, 2, 32, 14, 128, 128, 129, 0, 8,
+			2, 25, 21, 0, 99, 5, 33, 2, 17, 71, 0, 115, 3, 89, 12, 0, 4, 104, 2, 25, 3, 91, 0, 104, 8, 2, 17, 65, 0, 104,
+			8, 2, 18, 66, 17, 65, 0, 7, 6, 116, 0, 4, 3, 47, 0, 8, 2, 18, 66, 17, 65, 0, 104, 2, 25, 0, 104, 8, 2, 21,
+			0, 4, 120, 3, 76, 0, 120, 8, 2, 17, 65, 0, 7, 6, 117, 0, 4, 1, 103, 2, 101, 3, 0, 4, 1, 103, 2, 105, 3, 0,
+			4, 1, 103, 2, 195, 169, 3, 0, 1, 103, 2, 195, 173, 3, 0, 4, 5, 35, 1, 108, 2, 17, 65, 3, 2, 40, 0, 5, 35, 1,
+			114, 2, 17, 65, 0, 4, 3, 40, 0, 2, 117, 0, 2, 17, 65, 3, 58, 0, 7, 6, 118, 0, 4, 3, 71, 0, 1, 109, 0, 1,
+			110, 0, 2, 105, 17, 65, 0, 2, 117, 17, 65, 0, 8, 2, 17, 65, 0, 8, 2, 18, 66, 17, 65, 0, 8, 2, 28, 1, 0, 4,
+			2, 17, 65, 3, 82, 0, 2, 18, 68, 0, 2, 99, 17, 71, 0, 7, 6, 119, 0, 4, 3, 58, 0, 104, 8, 2, 17, 65, 0, 7,
+			6, 120, 0, 4, 3, 49, 89, 0, 99, 5, 33, 2, 17, 71, 0, 8, 2, 28, 1, 3, 89, 0, 1, 101, 109, 2, 105, 99, 3, 101,
+			0, 7, 6, 121, 0, 4, 3, 37, 0, 2, 32, 0, 4, 8, 108, 2, 17, 65, 3, 57, 0, 8, 109, 2, 17, 65, 0, 4, 1, 117,
+			2, 25, 3, 57, 12, 0, 2, 17, 65, 0, 1, 32, 110, 2, 17, 65, 3, 75, 0, 8, 2, 28, 1, 3, 79, 0, 8, 2, 17, 65,
+			3, 98, 0, 7, 6, 122, 0, 3, 87, 0, 122, 3, 123, 0, 7, 6, 0, 195, 161, 3, 7, 35, 0, 195, 173, 3, 7, 37, 0, 195,
+			186, 3, 7, 40, 0, 195, 169, 3, 7, 109, 0, 195, 179, 3, 7, 110, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45,
+			1, 32, 17, 67, 2, 32, 15, 0, 195, 188, 3, 40, 0, 44, 2, 15, 3, 49, 110, 65, 35, 0, 45, 8, 2, 32, 15, 3, 65, 6,
+			109, 50, 110, 89, 0, 195, 177, 3, 67, 0, 36, 3, 72, 6, 110, 55, 35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts16 = FileInMemory_createWithData (6111, reinterpret_cast<const char *> (&espeakdata_dicts16_data), 
+			U"espeak-1.48.04-source/espeak-data/es_dict", 
 			U"es");
-		Collection_addItem (me.peek(), espeakdata_dicts16.transfer());
+		my addItem_move (espeakdata_dicts16.move());
 
-		static unsigned char espeakdata_dicts17_data[6778] = {
-			0, 4, 0, 0, 55, 19, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 108, 0, 0, 7, 194, 5, 0, 17, 42, 42, 0, 0, 0,
-			7, 65, 8, 71, 36, 110, 0, 0, 0, 17, 67, 21, 64, 192, 36, 47, 15, 47, 89, 36, 47, 36, 34, 35, 0, 24, 0, 0, 8, 65,
-			12, 47, 89, 36, 110, 0, 0, 0, 0, 0, 7, 65, 16, 72, 36, 110, 0, 0, 0, 0, 7, 196, 76, 83, 12, 20, 76, 6, 195, 76,
-			147, 129, 72, 0, 42, 65, 20, 6, 36, 50, 50, 36, 15, 65, 4, 36, 37, 57, 36, 15, 4, 35, 57, 109, 15, 6, 35, 34, 12, 84,
-			35, 65, 37, 89, 47, 0, 24, 84, 46, 32, 109, 32, 46, 32, 97, 32, 25, 65, 20, 6, 36, 50, 50, 36, 15, 49, 34, 6, 37, 89,
-			12, 47, 40, 89, 47, 0, 24, 81, 107, 114, 32, 6, 65, 20, 36, 110, 0, 0, 0, 16, 67, 76, 18, 128, 89, 6, 35, 57, 109, 50,
-			72, 37, 55, 0, 24, 20, 67, 41, 34, 192, 57, 4, 121, 34, 57, 36, 15, 49, 6, 39, 34, 34, 72, 0, 24, 0, 0, 7, 65, 24,
-			36, 83, 83, 0, 0, 0, 0, 0, 7, 65, 28, 81, 36, 110, 0, 0, 0, 0, 0, 7, 65, 32, 107, 35, 108, 0, 0, 0, 0, 0,
-			13, 1, 36, 47, 39, 55, 12, 55, 35, 34, 37, 47, 0, 6, 65, 36, 37, 112, 0, 0, 16, 1, 37, 48, 34, 39, 47, 89, 6, 36,
-			50, 47, 12, 37, 0, 27, 0, 7, 1, 38, 10, 36, 47, 0, 0, 0, 8, 65, 40, 57, 39, 47, 12, 0, 0, 0, 10, 1, 42, 47,
-			121, 51, 12, 50, 0, 27, 0, 11, 1, 43, 48, 55, 40, 89, 12, 89, 0, 27, 0, 7, 65, 44, 49, 35, 108, 0, 0, 14, 66, 45,
-			0, 49, 6, 117, 48, 6, 121, 36, 84, 0, 24, 0, 0, 15, 1, 47, 49, 35, 55, 12, 72, 15, 49, 34, 112, 48, 89, 0, 0, 7,
-			65, 48, 36, 55, 55, 0, 0, 18, 66, 49, 0, 55, 4, 40, 81, 118, 15, 48, 6, 110, 47, 40, 72, 0, 24, 0, 0, 7, 196, 52,
-			147, 12, 20, 76, 0, 42, 65, 52, 65, 4, 36, 37, 57, 36, 15, 6, 35, 57, 109, 15, 6, 35, 34, 84, 35, 65, 4, 37, 89, 36,
-			15, 57, 6, 121, 34, 81, 37, 0, 84, 46, 32, 97, 32, 46, 32, 106, 32, 7, 65, 52, 36, 65, 65, 0, 0, 0, 0, 0, 7, 65,
-			56, 36, 50, 50, 0, 0, 0, 0, 0, 6, 65, 60, 39, 115, 0, 0, 18, 1, 61, 84, 119, 51, 12, 72, 40, 89, 15, 65, 121, 34,
-			49, 12, 0, 27, 0, 0, 0, 26, 65, 64, 48, 6, 121, 34, 109, 89, 47, 15, 49, 34, 6, 37, 89, 47, 40, 89, 47, 0, 24, 81,
-			107, 114, 32, 7, 1, 64, 10, 121, 47, 0, 7, 65, 64, 48, 36, 110, 0, 0, 0, 0, 0, 7, 65, 68, 49, 40, 117, 0, 0, 0,
-			0, 0, 7, 65, 72, 36, 51, 51, 0, 0, 0, 0, 0, 21, 65, 76, 89, 6, 36, 55, 15, 6, 108, 89, 47, 35, 55, 0, 24, 82,
-			46, 32, 97, 32, 7, 65, 76, 36, 89, 89, 0, 0, 0, 0, 0, 7, 65, 80, 47, 36, 110, 0, 0, 0, 0, 0, 5, 65, 84, 117,
-			0, 0, 0, 0, 0, 7, 65, 88, 84, 36, 110, 0, 0, 7, 194, 5, 48, 17, 42, 42, 0, 0, 13, 4, 95, 49, 77, 52, 71, 37,
-			61, 57, 39, 50, 0, 0, 14, 1, 92, 55, 121, 68, 81, 15, 49, 34, 112, 48, 89, 0, 14, 65, 92, 49, 6, 35, 49, 89, 37, 89,
-			84, 36, 110, 0, 0, 0, 0, 7, 196, 60, 195, 149, 16, 72, 0, 12, 4, 95, 49, 77, 49, 47, 40, 107, 109, 47, 0, 8, 65, 96,
-			37, 49, 12, 89, 0, 0, 6, 194, 4, 64, 17, 24, 13, 4, 95, 49, 77, 50, 65, 37, 61, 57, 39, 50, 0, 0, 14, 4, 95, 49,
-			77, 51, 65, 37, 61, 57, 35, 34, 72, 0, 0, 0, 9, 65, 100, 37, 81, 34, 36, 49, 0, 0, 0, 0, 0, 9, 65, 104, 47, 89,
-			36, 47, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 12, 16, 47, 89, 6, 37, 34, 49, 35, 0, 24, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 48, 147,
-			12, 55, 6, 37, 55, 12, 0, 0, 0, 8, 132, 1, 195, 188, 5, 17, 42, 0, 0, 0, 0, 13, 5, 16, 195, 181, 12, 12, 48, 6,
-			119, 55, 12, 0, 0, 0, 14, 67, 5, 81, 192, 6, 35, 117, 81, 40, 89, 47, 0, 24, 0, 0, 0, 0, 0, 7, 196, 44, 83, 12,
-			20, 76, 0, 0, 0, 18, 67, 41, 50, 192, 57, 4, 35, 39, 89, 49, 6, 39, 50, 50, 72, 0, 24, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 20, 66, 16, 32, 47, 4, 36, 114, 132, 89, 37, 15, 71, 6, 36, 55, 55, 37, 0, 24, 0, 0, 0, 0, 20, 67,
-			72, 213, 11, 34, 6, 108, 65, 35, 47, 40, 15, 49, 6, 39, 81, 40, 0, 24, 0, 0, 0, 0, 14, 66, 17, 32, 47, 6, 39, 49,
-			12, 47, 39, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 195, 20, 112, 64, 72, 8, 0, 0, 0, 0, 7, 195, 4, 112, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56,
-			81, 68, 76, 0, 0, 0, 0, 0, 0, 0, 0, 23, 67, 73, 66, 128, 34, 4, 35, 40, 72, 15, 47, 6, 36, 110, 15, 57, 6, 35,
-			108, 65, 0, 24, 6, 195, 56, 82, 68, 76, 0, 11, 4, 95, 4, 16, 20, 49, 39, 65, 109, 0, 0, 0, 0, 0, 0, 0, 0, 15,
-			67, 77, 35, 128, 89, 6, 40, 34, 34, 50, 40, 72, 0, 24, 6, 195, 56, 82, 76, 76, 0, 0, 0, 0, 0, 12, 4, 95, 20, 12,
-			4, 47, 37, 55, 72, 36, 0, 15, 3, 95, 35, 57, 47, 35, 71, 40, 55, 108, 47, 39, 34, 0, 0, 10, 67, 4, 195, 0, 6, 35,
-			55, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 56, 83, 132, 20, 76, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 67, 60, 176, 89, 39, 49, 6, 36, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 52, 240,
-			128, 65, 4, 39, 71, 6, 37, 112, 55, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 66, 32, 16, 107, 6, 36, 49,
-			12, 47, 35, 34, 37, 47, 0, 24, 14, 66, 20, 112, 50, 6, 127, 47, 12, 36, 49, 89, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 195, 60, 195, 1, 72, 0, 0, 0, 0, 0, 18, 67, 16, 148, 128, 72, 4, 37, 34, 6, 36, 49, 12, 47, 39,
-			34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 12, 66, 33, 32, 107, 6, 121, 51, 51, 35, 0, 24, 0, 19, 67, 33, 35, 0, 107, 6,
-			35, 34, 113, 55, 4, 37, 49, 40, 55, 47, 0, 24, 0, 0, 0, 0, 0, 0, 0, 20, 66, 12, 208, 89, 6, 36, 50, 47, 37, 15,
-			65, 4, 110, 47, 34, 37, 47, 0, 24, 5, 194, 20, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 15, 66, 37, 16, 6, 37, 112, 15,
-			49, 6, 40, 117, 0, 24, 42, 0, 0, 0, 0, 0, 0, 0, 0, 22, 66, 16, 192, 47, 4, 36, 114, 132, 89, 37, 15, 55, 6, 112,
-			47, 12, 34, 37, 47, 0, 24, 0, 8, 195, 72, 224, 64, 17, 42, 42, 0, 0, 0, 0, 0, 0, 11, 67, 57, 83, 142, 50, 6, 40,
-			50, 12, 0, 0, 0, 21, 67, 40, 225, 64, 57, 4, 108, 15, 50, 4, 112, 15, 6, 36, 72, 35, 89, 37, 0, 24, 6, 195, 60, 193,
-			68, 72, 11, 3, 226, 130, 172, 36, 40, 34, 39, 47, 0, 0, 0, 0, 0, 6, 195, 60, 193, 64, 72, 0, 0, 0, 21, 66, 16, 208,
-			47, 4, 36, 114, 132, 89, 37, 15, 65, 6, 110, 47, 34, 37, 47, 0, 24, 6, 194, 40, 16, 72, 8, 0, 6, 195, 60, 194, 68, 72,
-			0, 0, 0, 0, 8, 195, 20, 242, 192, 17, 42, 42, 6, 195, 60, 194, 64, 72, 0, 0, 0, 0, 0, 0, 6, 195, 60, 194, 78, 72,
-			0, 0, 0, 0, 0, 0, 24, 67, 40, 212, 192, 57, 4, 108, 15, 65, 6, 40, 117, 15, 89, 6, 36, 55, 55, 37, 50, 36, 0, 24,
-			0, 0, 0, 0, 29, 67, 88, 212, 192, 84, 4, 119, 37, 15, 65, 6, 40, 117, 15, 89, 6, 36, 110, 15, 89, 4, 40, 81, 40, 50,
-			36, 0, 24, 0, 0, 0, 13, 66, 41, 32, 57, 6, 117, 67, 37, 39, 34, 0, 24, 7, 194, 37, 64, 17, 42, 42, 0, 16, 67, 45,
-			3, 0, 49, 6, 35, 40, 48, 12, 55, 40, 89, 0, 24, 0, 0, 15, 67, 45, 5, 0, 49, 6, 35, 48, 12, 47, 36, 50, 0, 24,
-			14, 69, 100, 241, 213, 73, 64, 57, 39, 81, 40, 34, 47, 0, 0, 0, 0, 0, 0, 6, 194, 20, 208, 17, 24, 0, 0, 0, 6, 195,
-			60, 193, 78, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 194, 20, 224, 17, 42, 42, 0, 20, 3, 95, 51, 88,
+		static unsigned char espeakdata_dicts17_data[6768] = {
+			0, 4, 0, 0, 45, 19, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 108, 0, 0, 7, 194, 5, 0, 13, 42, 42, 15, 65, 108,
+			6, 35, 108, 15, 55, 108, 0, 24, 81, 108, 97, 32, 0, 0, 0, 7, 65, 8, 71, 36, 110, 0, 0, 0, 17, 67, 21, 64, 192, 36,
+			47, 15, 47, 89, 36, 47, 36, 34, 35, 0, 24, 0, 0, 8, 65, 12, 47, 89, 36, 110, 0, 0, 6, 195, 60, 193, 78, 72, 0, 0,
+			0, 7, 65, 16, 72, 36, 110, 0, 0, 7, 196, 56, 83, 132, 20, 76, 0, 0, 14, 5, 109, 195, 164, 115, 115, 65, 6, 121, 89, 12,
+			89, 0, 11, 4, 95, 100, 112, 116, 49, 39, 65, 109, 0, 0, 42, 65, 20, 6, 36, 50, 50, 36, 15, 65, 4, 36, 37, 57, 36, 15,
+			4, 35, 57, 109, 15, 6, 35, 34, 12, 84, 35, 65, 37, 89, 47, 0, 24, 84, 46, 32, 109, 32, 46, 32, 97, 32, 25, 65, 20, 6,
+			36, 50, 50, 36, 15, 49, 34, 6, 37, 89, 12, 47, 40, 89, 47, 0, 24, 81, 107, 114, 32, 6, 65, 20, 36, 110, 0, 0, 0, 16,
+			67, 76, 18, 128, 89, 6, 35, 57, 109, 50, 72, 37, 55, 0, 24, 20, 67, 41, 34, 192, 57, 4, 121, 34, 57, 36, 15, 49, 6, 39,
+			34, 34, 72, 0, 24, 0, 0, 7, 65, 24, 36, 83, 83, 0, 0, 0, 0, 0, 7, 65, 28, 81, 36, 110, 0, 0, 0, 0, 0, 7,
+			65, 32, 107, 35, 108, 0, 0, 0, 0, 0, 13, 1, 36, 47, 39, 55, 12, 55, 35, 34, 37, 47, 0, 6, 65, 36, 37, 112, 0, 0,
+			16, 1, 37, 48, 34, 39, 47, 89, 6, 36, 50, 47, 12, 37, 0, 27, 0, 7, 1, 38, 10, 36, 47, 0, 0, 0, 13, 5, 112, 195,
+			181, 108, 108, 48, 6, 119, 55, 12, 0, 8, 65, 40, 57, 39, 47, 12, 0, 0, 0, 10, 1, 42, 47, 121, 51, 12, 50, 0, 27, 0,
+			11, 1, 43, 48, 55, 40, 89, 12, 89, 0, 27, 0, 7, 65, 44, 49, 35, 108, 0, 0, 14, 66, 45, 0, 49, 6, 117, 48, 6, 121,
+			36, 84, 0, 24, 0, 0, 15, 1, 47, 49, 35, 55, 12, 72, 15, 49, 34, 112, 48, 89, 0, 0, 12, 4, 95, 100, 105, 97, 47, 121,
+			48, 37, 72, 0, 7, 65, 48, 36, 55, 55, 0, 0, 18, 66, 49, 0, 55, 4, 40, 81, 118, 15, 48, 6, 110, 47, 40, 72, 0, 24,
+			0, 0, 0, 42, 65, 52, 65, 4, 36, 37, 57, 36, 15, 6, 35, 57, 109, 15, 6, 35, 34, 84, 35, 65, 4, 37, 89, 36, 15, 57,
+			6, 121, 34, 81, 37, 0, 84, 46, 32, 97, 32, 46, 32, 106, 32, 7, 65, 52, 36, 65, 65, 0, 0, 0, 0, 0, 7, 65, 56, 36,
+			50, 50, 0, 0, 0, 0, 0, 6, 65, 60, 39, 115, 0, 0, 18, 1, 61, 84, 119, 51, 12, 72, 40, 89, 15, 65, 121, 34, 49, 12,
+			0, 27, 0, 0, 0, 26, 65, 64, 48, 6, 121, 34, 109, 89, 47, 15, 49, 34, 6, 37, 89, 47, 40, 89, 47, 0, 24, 81, 107, 114,
+			32, 7, 1, 64, 10, 121, 47, 0, 7, 65, 64, 48, 36, 110, 0, 0, 0, 0, 0, 7, 65, 68, 49, 40, 117, 0, 0, 0, 0, 0,
+			7, 65, 72, 36, 51, 51, 0, 0, 0, 0, 0, 21, 65, 76, 89, 6, 36, 55, 15, 6, 108, 89, 47, 35, 55, 0, 24, 82, 46, 32,
+			97, 32, 7, 65, 76, 36, 89, 89, 0, 0, 0, 0, 0, 7, 65, 80, 47, 36, 110, 0, 0, 0, 0, 0, 5, 65, 84, 117, 0, 0,
+			0, 0, 0, 7, 65, 88, 84, 36, 110, 0, 0, 7, 194, 5, 48, 13, 42, 42, 0, 0, 13, 4, 95, 49, 77, 52, 71, 37, 61, 57,
+			39, 50, 0, 0, 14, 1, 92, 55, 121, 68, 81, 15, 49, 34, 112, 48, 89, 0, 14, 65, 92, 49, 6, 35, 49, 89, 37, 89, 84, 36,
+			110, 0, 0, 0, 0, 0, 12, 4, 95, 49, 77, 49, 47, 40, 107, 109, 47, 0, 8, 65, 96, 37, 49, 12, 89, 0, 0, 6, 194, 4,
+			64, 13, 24, 13, 4, 95, 49, 77, 50, 65, 37, 61, 57, 39, 50, 0, 0, 14, 4, 95, 49, 77, 51, 65, 37, 61, 57, 35, 34, 72,
+			0, 0, 0, 9, 65, 100, 37, 81, 34, 36, 49, 0, 0, 0, 0, 0, 9, 65, 104, 47, 89, 36, 47, 12, 0, 0, 0, 0, 0, 11,
+			67, 60, 176, 89, 39, 49, 6, 36, 112, 0, 0, 0, 0, 0, 0, 13, 66, 12, 16, 47, 89, 6, 37, 34, 49, 35, 0, 24, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 12, 4, 95, 116, 108, 100, 47, 37, 55,
+			72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 48, 147, 12, 55, 6, 37, 55, 12, 0, 0, 0, 0, 14,
+			67, 5, 81, 192, 6, 35, 117, 81, 40, 89, 47, 0, 24, 0, 0, 0, 11, 67, 44, 243, 142, 49, 6, 39, 50, 12, 0, 0, 0, 0,
+			0, 0, 18, 67, 41, 50, 192, 57, 4, 35, 39, 89, 49, 6, 39, 50, 50, 72, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 20, 66, 16, 32, 47, 4, 36, 114, 132, 89, 37, 15, 71, 6, 36, 55, 55, 37, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+			66, 17, 32, 47, 6, 39, 49, 12, 47, 39, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 145, 1, 76, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 20, 112, 64, 72, 8, 0, 0, 0, 0, 7, 195, 4, 112, 64,
+			72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 44, 81, 1, 76, 6, 195, 76, 81, 1, 76, 0, 0, 0, 0, 0, 0,
+			23, 67, 73, 66, 128, 34, 4, 35, 40, 72, 15, 47, 6, 36, 110, 15, 57, 6, 35, 108, 65, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+			0, 15, 67, 77, 35, 128, 89, 6, 40, 34, 34, 50, 40, 72, 0, 24, 0, 0, 0, 0, 0, 15, 3, 95, 35, 57, 47, 35, 71, 40,
+			55, 108, 47, 39, 34, 0, 0, 10, 67, 4, 195, 0, 6, 35, 55, 12, 0, 0, 7, 196, 44, 83, 12, 20, 76, 0, 0, 0, 0, 7,
+			196, 76, 83, 12, 20, 76, 0, 0, 0, 6, 195, 76, 147, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			11, 67, 44, 83, 12, 49, 6, 36, 55, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 52, 240, 128, 65, 4,
+			39, 71, 6, 37, 112, 55, 0, 24, 0, 7, 196, 60, 194, 84, 20, 72, 0, 0, 0, 0, 11, 67, 88, 147, 12, 84, 6, 37, 55, 12,
+			0, 0, 0, 0, 0, 0, 0, 16, 66, 32, 16, 107, 6, 36, 49, 12, 47, 35, 34, 37, 47, 0, 24, 14, 66, 20, 112, 50, 6, 127,
+			47, 12, 36, 49, 89, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 67, 16, 148, 128, 72,
+			4, 37, 34, 6, 36, 49, 12, 47, 39, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 12, 66, 33, 32, 107, 6, 121, 51, 51, 35, 0,
+			24, 0, 19, 67, 33, 35, 0, 107, 6, 35, 34, 113, 55, 4, 37, 49, 40, 55, 47, 0, 24, 6, 195, 52, 147, 129, 72, 0, 0, 0,
+			0, 0, 0, 0, 20, 66, 12, 208, 89, 6, 36, 50, 47, 37, 15, 65, 4, 110, 47, 34, 37, 47, 0, 24, 5, 194, 20, 144, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 15, 66, 37, 16, 6, 37, 112, 15, 49, 6, 40, 117, 0, 24, 42, 0, 0, 0, 0, 0, 0, 0, 0,
+			22, 66, 16, 192, 47, 4, 36, 114, 132, 89, 37, 15, 55, 6, 112, 47, 12, 34, 37, 47, 0, 24, 0, 8, 195, 72, 224, 64, 13, 42,
+			42, 0, 7, 196, 60, 193, 77, 20, 72, 0, 0, 0, 0, 0, 0, 0, 21, 67, 40, 225, 64, 57, 4, 108, 15, 50, 4, 112, 15, 6,
+			36, 72, 35, 89, 37, 0, 24, 6, 195, 60, 195, 1, 72, 11, 3, 226, 130, 172, 36, 40, 34, 39, 47, 0, 0, 0, 0, 0, 6, 195,
+			60, 193, 64, 72, 0, 0, 0, 21, 66, 16, 208, 47, 4, 36, 114, 132, 89, 37, 15, 65, 6, 110, 47, 34, 37, 47, 0, 24, 6, 194,
+			40, 16, 72, 8, 0, 0, 0, 0, 0, 8, 195, 20, 242, 192, 13, 42, 42, 6, 195, 60, 194, 64, 72, 0, 0, 0, 18, 67, 65, 35,
+			198, 48, 34, 4, 39, 83, 6, 36, 89, 130, 39, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 7, 195, 56, 147, 135, 72, 8, 0, 0,
+			24, 67, 40, 212, 192, 57, 4, 108, 15, 65, 6, 40, 117, 15, 89, 6, 36, 55, 55, 37, 50, 36, 0, 24, 0, 0, 0, 0, 29, 67,
+			88, 212, 192, 84, 4, 119, 37, 15, 65, 6, 40, 117, 15, 89, 6, 36, 110, 15, 89, 4, 40, 81, 40, 50, 36, 0, 24, 0, 0, 0,
+			13, 66, 41, 32, 57, 6, 117, 67, 37, 39, 34, 0, 24, 7, 194, 37, 64, 13, 42, 42, 10, 4, 95, 98, 114, 118, 49, 108, 34, 0,
+			0, 16, 67, 45, 3, 0, 49, 6, 35, 40, 48, 12, 55, 40, 89, 0, 24, 0, 0, 15, 67, 45, 5, 0, 49, 6, 35, 48, 12, 47,
+			36, 50, 0, 24, 0, 0, 0, 0, 0, 6, 194, 20, 208, 13, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 68, 88, 81, 66, 72,
+			84, 6, 110, 71, 34, 40, 35, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 7, 194, 20, 224, 13, 42, 42, 0, 20, 3, 95, 51, 88,
 			49, 6, 39, 55, 65, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 11, 3, 95, 48, 67, 89, 35, 72, 109, 10, 0, 0, 0, 0,
-			24, 3, 11, 195, 188, 49, 6, 39, 34, 47, 36, 34, 37, 15, 6, 125, 107, 4, 37, 89, 47, 40, 0, 24, 0, 0, 0, 17, 66, 41,
-			64, 57, 4, 108, 15, 47, 6, 36, 37, 89, 36, 72, 0, 24, 6, 195, 52, 145, 1, 76, 0, 0, 10, 3, 95, 49, 67, 89, 35, 72,
-			109, 0, 0, 14, 67, 45, 37, 0, 49, 6, 39, 34, 47, 36, 34, 0, 24, 0, 6, 195, 44, 81, 1, 76, 6, 195, 76, 81, 1, 76,
-			0, 0, 0, 0, 18, 3, 95, 49, 57, 6, 125, 107, 36, 49, 89, 35, 47, 36, 37, 89, 47, 0, 0, 11, 67, 44, 83, 12, 49, 6,
-			36, 55, 12, 0, 18, 67, 61, 50, 192, 6, 39, 89, 109, 15, 49, 6, 39, 50, 50, 72, 0, 24, 19, 3, 95, 49, 56, 49, 6, 35,
-			107, 36, 49, 89, 35, 47, 36, 37, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49, 125, 49, 89, 47, 36, 37, 89,
-			47, 0, 0, 12, 3, 95, 49, 48, 49, 6, 125, 65, 65, 36, 0, 0, 16, 3, 95, 49, 51, 49, 6, 39, 55, 65, 47, 36, 37, 89,
-			47, 0, 0, 16, 3, 95, 49, 50, 49, 6, 35, 49, 89, 47, 36, 37, 89, 47, 0, 0, 15, 3, 95, 49, 53, 84, 6, 112, 89, 47,
-			36, 37, 89, 47, 0, 0, 16, 3, 95, 49, 52, 50, 6, 36, 55, 37, 47, 36, 37, 89, 47, 0, 0, 18, 3, 95, 49, 55, 89, 6,
-			36, 37, 47, 89, 36, 47, 36, 37, 89, 47, 0, 0, 15, 3, 95, 49, 54, 49, 6, 117, 89, 47, 36, 37, 89, 47, 0, 0, 11, 66,
-			44, 64, 49, 6, 128, 72, 36, 0, 24, 0, 22, 3, 95, 55, 88, 89, 6, 36, 37, 47, 89, 36, 15, 49, 4, 125, 65, 65, 36, 50,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 66, 41, 96, 57, 6, 121, 34, 34, 84, 0, 24, 6, 194, 45, 64, 17, 24, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 194, 52, 16, 17, 42, 42, 5, 194, 52, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 50,
-			88, 49, 6, 35, 49, 89, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 8, 197, 52, 147, 12, 21, 48, 76, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 63, 63, 65, 6, 121, 34, 49, 0, 0, 0, 13, 66, 53, 32, 65, 6, 37, 89, 47, 36,
-			34, 0, 24, 0, 20, 3, 95, 52, 88, 50, 6, 36, 55, 113, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 6, 195,
-			76, 81, 64, 76, 0, 0, 6, 195, 56, 17, 0, 72, 0, 17, 66, 44, 112, 49, 4, 37, 55, 116, 81, 34, 6, 35, 65, 65, 0, 24,
-			0, 19, 67, 76, 84, 20, 89, 6, 36, 48, 47, 6, 36, 65, 65, 71, 36, 34, 0, 24, 7, 195, 20, 130, 192, 72, 8, 19, 3, 95,
-			53, 88, 84, 6, 112, 89, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 54, 88, 49,
-			6, 117, 89, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 21, 66, 40, 160, 57, 4, 108, 15, 57, 6,
-			121, 34, 34, 81, 65, 37, 89, 36, 72, 0, 24, 0, 16, 67, 5, 4, 128, 4, 35, 48, 48, 34, 6, 37, 61, 61, 0, 24, 0, 0,
-			0, 0, 0, 14, 4, 14, 195, 164, 4, 50, 6, 121, 72, 109, 55, 0, 24, 0, 0, 14, 66, 57, 32, 50, 6, 40, 65, 65, 71, 36,
-			34, 0, 24, 0, 23, 3, 95, 56, 88, 49, 6, 35, 107, 36, 49, 89, 35, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 0,
-			0, 0, 0, 0, 5, 194, 52, 80, 72, 0, 22, 3, 95, 57, 88, 6, 125, 107, 36, 49, 89, 35, 15, 49, 4, 125, 65, 65, 36, 50,
-			72, 0, 0, 8, 132, 13, 20, 195, 188, 17, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 66, 57, 64, 50, 6, 127, 47, 36, 49, 89, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 20, 66, 52, 112, 65,
-			4, 37, 61, 61, 37, 15, 81, 34, 6, 35, 65, 65, 37, 0, 24, 15, 66, 40, 208, 57, 4, 108, 15, 65, 6, 40, 117, 72, 0, 24,
-			0, 18, 67, 65, 34, 192, 48, 6, 36, 34, 111, 15, 49, 6, 39, 50, 72, 0, 24, 0, 0, 0, 0, 24, 67, 40, 213, 0, 57, 4,
-			108, 15, 65, 6, 40, 117, 72, 15, 47, 6, 36, 37, 89, 36, 72, 0, 24, 29, 67, 76, 82, 128, 89, 6, 115, 57, 40, 89, 15, 36,
-			55, 6, 36, 49, 47, 34, 37, 15, 57, 6, 35, 108, 65, 0, 42, 42, 0, 7, 196, 60, 194, 84, 20, 72, 0, 0, 0, 19, 67, 93,
-			67, 192, 84, 4, 110, 15, 47, 4, 110, 15, 6, 39, 115, 0, 42, 42, 0, 6, 195, 52, 147, 129, 72, 13, 4, 95, 48, 77, 52, 71,
-			37, 61, 57, 39, 50, 0, 0, 18, 67, 65, 35, 198, 48, 34, 4, 39, 83, 6, 36, 89, 130, 39, 34, 0, 24, 0, 13, 4, 95, 48,
-			77, 50, 65, 37, 61, 57, 39, 50, 0, 0, 14, 4, 95, 48, 77, 51, 65, 37, 61, 57, 35, 34, 72, 0, 0, 0, 12, 4, 95, 48,
-			77, 49, 47, 40, 107, 109, 47, 0, 0, 18, 66, 52, 128, 65, 6, 40, 117, 15, 107, 6, 40, 55, 81, 35, 89, 0, 24, 12, 66, 40,
-			224, 57, 6, 115, 67, 37, 89, 0, 24, 10, 4, 95, 2, 18, 22, 49, 108, 34, 0, 0, 0, 0, 0, 0, 0, 0, 14, 67, 65, 35,
-			0, 48, 34, 6, 36, 37, 55, 37, 0, 24, 0, 12, 66, 65, 32, 48, 34, 6, 39, 40, 35, 0, 24, 0, 0, 0, 0, 0, 18, 67,
-			56, 245, 128, 50, 4, 39, 84, 6, 36, 65, 65, 71, 36, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 19,
-			46, 15, 89, 6, 36, 110, 15, 6, 39, 50, 50, 0, 24, 0, 0, 0, 0, 0, 18, 67, 65, 53, 0, 48, 6, 40, 37, 57, 36, 89,
-			15, 47, 4, 110, 0, 24, 0, 0, 0, 0, 17, 67, 44, 225, 0, 49, 4, 35, 67, 72, 37, 72, 6, 108, 47, 0, 24, 0, 0, 8,
-			197, 52, 147, 12, 20, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 195, 181, 1, 6, 119, 48, 12, 36, 15, 4,
-			108, 89, 47, 35, 0, 24, 0, 0, 16, 66, 52, 176, 65, 6, 108, 15, 49, 6, 39, 50, 50, 72, 0, 24, 0, 15, 67, 44, 241, 0,
-			49, 6, 39, 72, 109, 50, 37, 49, 0, 24, 0, 0, 8, 132, 22, 195, 181, 9, 72, 8, 0, 0, 16, 67, 76, 82, 192, 89, 6, 36,
-			49, 118, 50, 72, 37, 47, 0, 24, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 3, 9, 18, 49, 35, 47, 40, 89, 0, 0, 21, 67,
-			28, 211, 192, 81, 6, 36, 110, 15, 4, 36, 65, 65, 15, 6, 39, 115, 0, 24, 42, 0, 0, 13, 67, 72, 35, 0, 34, 6, 40, 71,
-			55, 35, 0, 24, 0, 20, 66, 52, 192, 65, 4, 37, 61, 61, 37, 15, 55, 6, 112, 47, 34, 37, 47, 0, 24, 0, 17, 67, 52, 193,
-			0, 65, 6, 37, 61, 57, 35, 34, 72, 37, 47, 0, 24, 6, 195, 52, 148, 192, 76, 0, 0, 0, 0, 6, 195, 44, 84, 192, 76, 0,
-			21, 68, 76, 80, 76, 32, 89, 6, 36, 35, 55, 15, 107, 4, 40, 55, 81, 35, 89, 0, 24, 0, 26, 67, 77, 3, 0, 89, 6, 40,
-			48, 113, 15, 55, 4, 40, 89, 37, 49, 35, 15, 47, 6, 127, 47, 12, 0, 24, 0, 0, 0, 0, 12, 4, 95, 1, 3, 21, 35, 49,
-			6, 117, 47, 0, 0, 0, 0, 0, 0, 5, 194, 76, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 195,
-			181, 16, 6, 119, 48, 111, 47, 4, 35, 57, 35, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 72, 69, 0, 34, 4, 35, 40,
-			72, 15, 47, 6, 110, 0, 24, 16, 67, 52, 229, 0, 65, 6, 108, 50, 15, 47, 6, 36, 110, 0, 24, 6, 131, 15, 195, 188, 17, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 66, 60, 176, 39, 49, 6, 36, 112, 0, 5, 194, 80, 16, 72, 0, 0, 0, 0, 0,
-			11, 67, 88, 147, 12, 84, 6, 37, 55, 12, 0, 16, 67, 60, 181, 0, 4, 39, 49, 47, 6, 115, 71, 36, 34, 0, 24, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 16, 68, 88, 81, 66, 72, 84, 6, 110, 71, 34, 40, 35, 34, 0, 24, 0, 0, 22, 66, 56, 224, 50, 6,
-			37, 112, 15, 50, 6, 37, 65, 36, 47, 4, 35, 47, 40, 72, 0, 24, 0, 13, 67, 52, 164, 128, 65, 6, 35, 57, 116, 34, 0, 24,
-			0, 0, 0, 0, 0, 0, 0, 12, 66, 81, 32, 47, 34, 6, 125, 49, 12, 0, 24, 20, 66, 77, 64, 89, 6, 36, 110, 15, 47, 6,
-			121, 107, 36, 50, 72, 35, 71, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 164, 84, 35, 55, 6, 117, 47, 35, 0, 0,
-			0, 0, 10, 2, 194, 163, 50, 35, 110, 55, 35, 0, 0, 0, 0, 0, 0, 7, 2, 195, 164, 121, 122, 0, 0, 0, 0, 0, 19, 67,
-			16, 85, 19, 47, 4, 36, 47, 89, 6, 36, 65, 65, 71, 36, 34, 0, 24, 16, 2, 195, 160, 6, 35, 108, 15, 55, 108, 0, 24, 81,
-			108, 97, 32, 0, 0, 0, 0, 5, 194, 60, 224, 72, 0, 6, 195, 4, 32, 192, 17, 0, 7, 196, 88, 82, 68, 36, 72, 0, 0, 0,
-			0, 7, 2, 195, 182, 123, 124, 0, 0, 0, 0, 7, 2, 195, 181, 119, 120, 0, 0, 11, 4, 95, 3, 5, 4, 89, 36, 72, 112, 0,
-			0, 0, 15, 70, 100, 241, 200, 85, 37, 0, 57, 39, 81, 40, 34, 47, 0, 0, 8, 2, 197, 161, 91, 35, 108, 0, 0, 0, 15, 67,
-			80, 83, 0, 47, 6, 36, 55, 111, 83, 39, 50, 0, 24, 0, 5, 194, 80, 80, 72, 7, 2, 195, 188, 125, 126, 0, 0, 16, 67, 80,
-			194, 192, 47, 6, 119, 61, 49, 37, 50, 40, 72, 0, 24, 0, 6, 195, 80, 82, 69, 72, 0, 0, 0, 11, 67, 33, 83, 12, 107, 6,
-			40, 55, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 60, 194, 77, 20, 72, 6, 195, 80, 83, 65, 72, 8, 2, 197, 190,
-			90, 36, 110, 0, 0, 0, 19, 66, 76, 128, 89, 6, 36, 35, 55, 15, 107, 4, 40, 55, 81, 35, 89, 0, 24, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 67, 89, 33, 0, 84, 6, 119, 34, 34, 72, 55, 36, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196,
-			56, 82, 76, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 44, 243, 142, 49, 6,
-			39, 50, 12, 0, 0, 0, 8, 195, 85, 48, 64, 17, 42, 42, 0, 0, 0, 12, 66, 89, 64, 84, 6, 35, 108, 47, 35, 0, 24, 7,
-			194, 85, 96, 17, 42, 42, 0, 6, 195, 37, 49, 64, 72, 0, 0, 0, 0, 0, 0, 0, 16, 66, 92, 48, 84, 6, 36, 110, 15, 47,
-			89, 6, 36, 110, 0, 24, 0, 17, 67, 65, 66, 192, 48, 4, 36, 35, 15, 47, 6, 125, 49, 12, 0, 24, 14, 3, 1, 195, 188, 6,
-			35, 108, 15, 6, 125, 126, 0, 24, 0, 0, 0, 0, 12, 2, 95, 35, 47, 34, 36, 61, 61, 37, 72, 0, 0, 15, 2, 95, 34, 57,
-			40, 47, 118, 65, 4, 121, 34, 49, 12, 0, 0, 16, 2, 95, 33, 107, 129, 12, 57, 40, 65, 4, 121, 34, 49, 12, 0, 0, 0, 13,
-			2, 95, 39, 125, 55, 109, 15, 49, 39, 65, 35, 0, 0, 7, 195, 56, 147, 135, 72, 8, 16, 2, 95, 38, 57, 6, 35, 108, 15, 65,
-			4, 121, 34, 49, 12, 0, 0, 15, 2, 95, 37, 48, 34, 39, 47, 89, 36, 50, 47, 12, 0, 66, 15, 2, 95, 37, 48, 34, 39, 47,
-			89, 6, 36, 50, 47, 12, 0, 0, 12, 2, 95, 36, 47, 39, 55, 12, 55, 35, 34, 0, 0, 0, 10, 4, 95, 3, 1, 16, 89, 117,
-			34, 0, 0, 18, 2, 95, 41, 55, 119, 48, 36, 47, 35, 84, 15, 89, 40, 55, 12, 81, 0, 0, 18, 2, 95, 40, 35, 55, 118, 89,
-			47, 35, 84, 15, 89, 40, 55, 12, 81, 0, 0, 0, 11, 2, 95, 46, 48, 40, 50, 49, 12, 47, 0, 0, 10, 2, 95, 45, 49, 34,
-			112, 48, 89, 0, 0, 9, 2, 95, 44, 49, 39, 65, 109, 0, 0, 14, 67, 53, 36, 192, 65, 6, 37, 131, 131, 37, 89, 0, 24, 11,
-			2, 95, 51, 49, 6, 39, 55, 12, 65, 0, 0, 11, 2, 95, 50, 49, 6, 35, 49, 12, 89, 0, 0, 10, 2, 95, 49, 6, 125, 49,
-			12, 89, 0, 0, 11, 2, 95, 48, 50, 6, 40, 55, 12, 55, 0, 0, 12, 2, 95, 55, 89, 6, 36, 37, 47, 89, 36, 0, 0, 10,
-			2, 95, 54, 49, 6, 40, 117, 89, 0, 0, 10, 2, 95, 53, 84, 6, 37, 112, 89, 0, 0, 10, 2, 95, 52, 50, 6, 36, 55, 113,
-			0, 0, 0, 10, 2, 95, 58, 49, 115, 55, 39, 50, 0, 0, 12, 2, 95, 57, 6, 125, 107, 36, 49, 89, 35, 0, 0, 12, 66, 80,
-			176, 47, 6, 125, 49, 12, 37, 0, 24, 13, 2, 95, 56, 49, 6, 35, 107, 36, 49, 89, 35, 0, 0, 15, 2, 95, 63, 49, 125, 131,
-			113, 65, 4, 121, 34, 49, 12, 0, 0, 10, 2, 95, 62, 89, 117, 34, 36, 65, 0, 0, 0, 12, 2, 95, 60, 84, 127, 49, 12, 89,
-			36, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 67, 76, 225, 0, 89, 6, 125, 67, 67, 72, 37, 50, 40, 72, 0,
-			24, 0, 0, 8, 195, 16, 224, 64, 17, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 21, 67, 20, 177, 192, 6, 36, 110, 15, 49, 4,
-			35, 108, 15, 81, 6, 36, 110, 0, 24, 42, 0, 0, 0, 0, 31, 2, 95, 91, 6, 35, 55, 118, 89, 47, 35, 84, 15, 49, 6, 35,
-			50, 72, 37, 62, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0, 0, 11, 4, 95, 226, 130, 172, 36, 40, 34, 39, 0, 0, 0, 0,
-			14, 2, 95, 95, 35, 55, 12, 55, 49, 34, 112, 48, 89, 0, 0, 0, 32, 2, 95, 93, 55, 6, 119, 48, 36, 47, 35, 84, 15, 49,
-			6, 35, 50, 72, 37, 55, 4, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 12, 66, 80, 224, 47, 6, 121, 50, 109, 84, 0, 24, 13, 4, 95, 7, 18, 22, 81, 34, 108, 84, 37, 89, 0, 0, 0, 0, 0,
-			0, 17, 67, 64, 212, 192, 48, 6, 36, 35, 65, 37, 89, 36, 55, 47, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 4,
-			9, 1, 47, 121, 48, 37, 72, 0, 30, 2, 95, 123, 35, 55, 118, 89, 47, 35, 84, 15, 55, 6, 115, 81, 36, 55, 4, 37, 50, 36,
-			15, 89, 6, 40, 55, 12, 81, 0, 0, 0, 0, 0, 0, 0, 30, 2, 95, 125, 55, 119, 48, 36, 47, 35, 84, 15, 55, 6, 115, 81,
-			36, 55, 4, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 35, 51, 50, 47, 6, 125, 107, 37, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 67, 52, 195, 128, 65, 6, 37, 61, 57, 39, 50, 37, 47, 0, 24, 8, 195, 5, 67, 64, 17, 42, 42, 0,
-			0, 0, 0, 0, 7, 196, 60, 193, 77, 20, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 13, 195, 164,
-			19, 19, 65, 6, 121, 89, 12, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			20, 67, 8, 32, 192, 71, 4, 112, 15, 71, 4, 112, 15, 89, 6, 37, 112, 0, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			12, 4, 195, 164, 19, 19, 6, 121, 89, 12, 89, 0, 0, 0, 0, 0, 0, 6, 195, 52, 82, 69, 72, 0, 0, 0, 0, 0, 18, 67,
-			44, 130, 192, 49, 4, 37, 107, 111, 55, 49, 6, 39, 50, 72, 0, 24, 0, 7, 196, 60, 193, 84, 20, 72, 0, 0, 0, 11, 67, 76,
-			149, 20, 89, 6, 37, 47, 12, 0, 0, 0, 0, 9, 198, 60, 193, 75, 76, 147, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 195, 5, 69, 128, 17, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			18, 66, 105, 0, 106, 0, 7, 6, 18, 67, 98, 0, 100, 0, 102, 0, 103, 0, 104, 0, 106, 0, 108, 0, 109, 0, 110, 0, 114, 0,
-			115, 0, 118, 0, 7, 6, 18, 68, 108, 0, 109, 0, 110, 0, 114, 0, 7, 6, 18, 69, 195, 181, 0, 195, 164, 0, 195, 182, 0, 195,
-			188, 0, 97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0,
-			111, 0, 112, 0, 113, 0, 114, 0, 115, 0, 116, 0, 117, 0, 118, 0, 7, 6, 18, 70, 195, 181, 0, 195, 164, 0, 195, 182, 0, 195,
-			188, 0, 97, 0, 101, 0, 105, 0, 108, 0, 109, 0, 110, 0, 111, 0, 114, 0, 117, 0, 7, 6, 195, 164, 0, 101, 2, 32, 3, 6,
-			121, 110, 0, 111, 3, 6, 121, 115, 0, 117, 2, 32, 3, 6, 121, 117, 0, 4, 195, 164, 1, 29, 2, 18, 67, 32, 3, 6, 121, 122,
-			0, 195, 164, 1, 29, 2, 32, 0, 195, 164, 3, 6, 122, 0, 105, 2, 32, 3, 6, 127, 12, 0, 3, 121, 0, 105, 3, 127, 0, 7,
-			6, 195, 181, 0, 97, 3, 6, 119, 108, 0, 101, 2, 32, 3, 6, 119, 110, 0, 105, 2, 32, 3, 6, 119, 112, 0, 111, 3, 6, 119,
-			115, 0, 117, 2, 32, 3, 6, 119, 117, 0, 4, 195, 181, 1, 29, 2, 18, 67, 32, 3, 6, 119, 120, 0, 195, 181, 1, 29, 2, 32,
-			0, 195, 181, 3, 6, 120, 0, 3, 119, 0, 117, 3, 119, 40, 0, 7, 6, 195, 182, 0, 97, 3, 6, 123, 108, 0, 101, 3, 6, 123,
-			110, 0, 4, 195, 182, 1, 29, 2, 18, 67, 32, 3, 6, 123, 124, 0, 195, 182, 1, 29, 2, 32, 0, 195, 182, 3, 6, 124, 0, 3,
-			123, 0, 105, 3, 128, 0, 7, 6, 195, 188, 0, 4, 195, 188, 1, 29, 2, 18, 67, 32, 3, 6, 125, 126, 0, 195, 188, 1, 29, 2,
-			32, 0, 195, 188, 3, 6, 126, 0, 3, 125, 0, 109, 98, 114, 105, 3, 125, 65, 71, 34, 37, 0, 4, 105, 3, 129, 0, 195, 188, 2,
-			106, 97, 0, 195, 188, 2, 97, 3, 129, 57, 0, 7, 6, 97, 0, 4, 97, 1, 29, 2, 18, 67, 32, 3, 6, 35, 108, 0, 97, 1,
-			29, 2, 32, 0, 101, 2, 32, 3, 6, 35, 110, 0, 105, 2, 32, 3, 6, 35, 112, 0, 111, 3, 6, 35, 115, 0, 117, 2, 32, 3,
-			6, 35, 117, 0, 97, 3, 6, 108, 0, 3, 35, 0, 109, 98, 105, 3, 35, 65, 71, 37, 0, 1, 105, 17, 65, 3, 57, 35, 0, 4,
-			1, 117, 97, 3, 58, 35, 0, 1, 117, 117, 0, 1, 117, 181, 195, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 109, 0, 8, 18, 67,
-			17, 65, 17, 67, 2, 25, 0, 7, 6, 98, 0, 8, 3, 48, 0, 3, 71, 0, 7, 6, 99, 0, 4, 2, 101, 3, 47, 89, 0, 2,
-			105, 0, 3, 49, 0, 104, 8, 3, 76, 0, 8, 2, 101, 3, 89, 0, 105, 116, 121, 3, 89, 37, 47, 37, 0, 7, 6, 100, 0, 8,
-			3, 47, 0, 4, 3, 72, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 1, 10, 2, 18, 66, 3, 133, 0, 7, 6,
-			101, 0, 97, 2, 32, 3, 6, 36, 108, 0, 4, 101, 1, 29, 2, 18, 67, 32, 3, 6, 36, 110, 0, 101, 1, 29, 2, 32, 0, 105,
-			2, 32, 3, 6, 36, 112, 0, 111, 3, 6, 36, 115, 0, 101, 3, 6, 110, 0, 3, 36, 0, 1, 105, 17, 65, 3, 57, 36, 0, 4,
-			1, 117, 97, 3, 58, 36, 0, 1, 117, 117, 0, 1, 117, 181, 195, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 111, 0, 8, 18, 67,
-			17, 65, 17, 67, 2, 25, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 8, 3, 49, 0, 3, 81, 0, 7, 6, 104, 0, 3,
-			107, 0, 1, 97, 108, 2, 116, 105, 3, 107, 107, 0, 7, 6, 105, 0, 4, 105, 1, 29, 2, 18, 67, 32, 3, 6, 37, 112, 0, 105,
-			1, 29, 2, 32, 0, 105, 3, 6, 112, 0, 3, 37, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 113, 0, 8, 18, 67, 17, 65, 17,
-			67, 2, 25, 0, 7, 6, 106, 0, 97, 122, 122, 3, 47, 90, 121, 89, 12, 0, 3, 57, 0, 106, 3, 57, 12, 0, 117, 109, 98, 117,
-			3, 57, 40, 65, 71, 40, 0, 7, 6, 107, 0, 3, 49, 0, 97, 117, 103, 101, 3, 49, 6, 35, 117, 81, 36, 0, 4, 1, 17, 65,
-			2, 18, 68, 3, 49, 12, 0, 1, 17, 65, 17, 65, 2, 18, 70, 0, 1, 18, 68, 17, 65, 2, 18, 70, 0, 107, 0, 97, 109, 98,
-			97, 3, 49, 35, 65, 71, 35, 0, 105, 109, 98, 97, 116, 117, 115, 3, 49, 37, 65, 71, 35, 47, 40, 89, 0, 105, 109, 98, 117, 3,
-			49, 37, 65, 71, 40, 0, 7, 6, 108, 0, 4, 3, 55, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 4, 108, 1,
-			21, 21, 2, 105, 3, 55, 12, 0, 108, 1, 25, 2, 105, 0, 4, 1, 10, 2, 18, 66, 3, 61, 0, 1, 10, 2, 100, 18, 66, 0,
-			1, 10, 2, 103, 18, 66, 0, 1, 10, 2, 107, 18, 66, 0, 1, 10, 2, 110, 105, 0, 1, 10, 2, 115, 11, 105, 0, 1, 10, 2,
-			115, 105, 0, 1, 10, 2, 116, 105, 0, 2, 115, 115, 32, 0, 108, 1, 10, 2, 105, 3, 61, 12, 0, 108, 1, 17, 65, 2, 32, 3,
-			114, 61, 12, 0, 7, 6, 109, 0, 4, 3, 65, 0, 1, 10, 2, 98, 17, 65, 11, 0, 1, 10, 2, 98, 3, 65, 65, 0, 7, 6,
-			110, 0, 4, 3, 50, 0, 1, 17, 65, 10, 2, 108, 18, 66, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 110, 1,
-			105, 2, 32, 3, 50, 12, 0, 4, 110, 1, 17, 65, 21, 2, 32, 3, 50, 50, 0, 110, 1, 21, 21, 2, 105, 0, 110, 1, 25, 2,
-			105, 0, 4, 1, 10, 2, 18, 66, 3, 67, 0, 1, 10, 2, 100, 18, 66, 0, 1, 10, 2, 115, 105, 0, 1, 10, 2, 116, 32, 0,
-			1, 10, 2, 116, 105, 0, 2, 115, 116, 32, 0, 110, 1, 10, 2, 105, 3, 67, 12, 0, 4, 2, 32, 103, 3, 68, 0, 2, 32, 107,
-			0, 2, 103, 0, 2, 107, 0, 110, 1, 17, 65, 2, 32, 3, 114, 67, 12, 0, 7, 6, 111, 0, 97, 3, 6, 39, 108, 0, 101, 2,
-			32, 3, 6, 39, 110, 0, 105, 2, 32, 3, 6, 39, 112, 0, 4, 111, 1, 29, 2, 18, 67, 32, 3, 6, 39, 115, 0, 111, 1, 29,
-			2, 32, 0, 111, 3, 6, 115, 0, 4, 3, 39, 0, 1, 105, 105, 0, 1, 105, 17, 65, 3, 57, 39, 0, 4, 8, 18, 67, 17, 65,
-			2, 25, 3, 116, 0, 8, 18, 67, 17, 65, 17, 67, 2, 25, 0, 7, 6, 112, 0, 3, 48, 0, 4, 1, 17, 65, 17, 65, 2, 18,
-			70, 3, 48, 12, 0, 1, 18, 68, 17, 65, 2, 32, 0, 112, 0, 7, 6, 113, 0, 3, 49, 0, 113, 3, 49, 12, 0, 117, 3, 49,
-			84, 0, 7, 6, 114, 0, 3, 34, 0, 4, 1, 101, 107, 2, 103, 101, 3, 51, 51, 0, 1, 181, 195, 107, 2, 103, 101, 0, 114, 0,
-			7, 6, 115, 0, 4, 3, 89, 0, 1, 10, 2, 108, 18, 66, 0, 1, 10, 2, 110, 18, 66, 0, 1, 21, 21, 2, 18, 66, 0, 1,
-			25, 2, 18, 66, 0, 195, 188, 109, 98, 111, 108, 105, 115, 101, 101, 114, 3, 89, 4, 125, 65, 71, 39, 55, 37, 89, 6, 110, 34, 0,
-			111, 109, 98, 117, 3, 89, 39, 65, 71, 40, 0, 4, 115, 1, 21, 21, 2, 105, 3, 89, 89, 0, 115, 1, 25, 2, 105, 0, 115, 3,
-			89, 130, 0, 4, 99, 104, 1, 25, 3, 91, 0, 104, 1, 25, 0, 115, 1, 17, 65, 2, 32, 3, 114, 131, 12, 0, 4, 1, 10, 2,
-			18, 66, 3, 131, 0, 1, 10, 2, 100, 105, 0, 1, 17, 65, 2, 116, 105, 0, 115, 1, 10, 2, 105, 3, 131, 131, 0, 7, 6, 116,
-			0, 4, 3, 47, 0, 1, 21, 21, 2, 18, 66, 0, 1, 21, 21, 2, 115, 105, 0, 1, 25, 2, 18, 66, 0, 4, 1, 17, 65, 2,
-			18, 68, 3, 47, 12, 0, 1, 17, 65, 17, 65, 2, 18, 70, 0, 1, 97, 109, 10, 2, 97, 32, 0, 116, 0, 116, 1, 21, 21, 2,
-			105, 0, 116, 1, 25, 2, 105, 0, 97, 109, 98, 117, 3, 47, 35, 65, 71, 40, 0, 117, 109, 98, 97, 3, 47, 40, 65, 71, 35, 0,
-			1, 17, 65, 10, 2, 115, 105, 3, 114, 132, 0, 116, 1, 17, 65, 29, 2, 32, 3, 114, 132, 12, 0, 4, 1, 10, 2, 18, 66, 3,
-			132, 0, 1, 10, 2, 108, 18, 66, 0, 1, 10, 2, 110, 18, 66, 0, 116, 1, 10, 2, 105, 3, 132, 12, 0, 7, 6, 117, 0, 105,
-			2, 32, 3, 6, 40, 112, 0, 4, 117, 1, 29, 2, 18, 67, 32, 3, 6, 40, 117, 0, 117, 1, 29, 2, 32, 0, 117, 3, 6, 117,
-			0, 4, 3, 40, 0, 1, 105, 105, 0, 1, 105, 17, 65, 3, 57, 40, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 118, 0, 8, 18,
-			67, 17, 65, 17, 67, 2, 25, 0, 7, 6, 118, 0, 3, 84, 0, 97, 98, 97, 114, 105, 105, 3, 84, 6, 35, 71, 35, 34, 4, 37,
-			37, 0, 101, 109, 98, 117, 3, 84, 36, 65, 71, 40, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 120, 3, 49, 12, 89, 0,
-			3, 49, 89, 0, 7, 6, 121, 0, 3, 37, 0, 105, 3, 57, 37, 0, 121, 3, 126, 0, 7, 6, 122, 0, 122, 3, 47, 89, 0, 3,
-			88, 0, 104, 1, 25, 3, 90, 0, 7, 6, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32,
-			15, 0, 45, 8, 32, 2, 32, 15, 3, 65, 112, 50, 40, 89, 0, 197, 190, 3, 90, 0, 197, 161, 3, 91, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts17 = FileInMemory_createWithData (6777, reinterpret_cast<const char *> (&espeakdata_dicts17_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/et_dict", 
+			0, 0, 20, 67, 72, 213, 11, 34, 6, 108, 65, 35, 47, 40, 15, 49, 6, 39, 81, 40, 0, 24, 0, 17, 66, 41, 64, 57, 4, 108,
+			15, 47, 6, 36, 37, 89, 36, 72, 0, 24, 0, 0, 10, 3, 95, 49, 67, 89, 35, 72, 109, 0, 0, 14, 67, 45, 37, 0, 49, 6,
+			39, 34, 47, 36, 34, 0, 24, 0, 0, 0, 0, 0, 18, 3, 95, 49, 57, 6, 125, 107, 36, 49, 89, 35, 47, 36, 37, 89, 47, 0,
+			0, 18, 67, 61, 50, 192, 6, 39, 89, 109, 15, 49, 6, 39, 50, 50, 72, 0, 24, 19, 3, 95, 49, 56, 49, 6, 35, 107, 36, 49,
+			89, 35, 47, 36, 37, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49, 125, 49, 89, 47, 36, 37, 89, 47, 0, 0,
+			12, 3, 95, 49, 48, 49, 6, 125, 65, 65, 36, 0, 0, 16, 3, 95, 49, 51, 49, 6, 39, 55, 65, 47, 36, 37, 89, 47, 0, 0,
+			16, 3, 95, 49, 50, 49, 6, 35, 49, 89, 47, 36, 37, 89, 47, 0, 0, 15, 3, 95, 49, 53, 84, 6, 112, 89, 47, 36, 37, 89,
+			47, 0, 0, 16, 3, 95, 49, 52, 50, 6, 36, 55, 37, 47, 36, 37, 89, 47, 0, 0, 18, 3, 95, 49, 55, 89, 6, 36, 37, 47,
+			89, 36, 47, 36, 37, 89, 47, 0, 0, 15, 3, 95, 49, 54, 49, 6, 117, 89, 47, 36, 37, 89, 47, 0, 0, 11, 66, 44, 64, 49,
+			6, 128, 72, 36, 0, 24, 0, 22, 3, 95, 55, 88, 89, 6, 36, 37, 47, 89, 36, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 12, 66, 41, 96, 57, 6, 121, 34, 34, 84, 0, 24, 6, 194, 45, 64, 13, 24, 0, 0, 0, 0, 0, 12,
+			4, 95, 97, 99, 117, 35, 49, 6, 117, 47, 0, 0, 0, 0, 7, 194, 52, 16, 13, 42, 42, 5, 194, 52, 16, 72, 0, 0, 6, 65,
+			160, 123, 124, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 50, 88, 49, 6, 35, 49, 89, 15, 49, 4, 125, 65, 65, 36, 50, 72,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 63, 63, 65, 6, 121, 34, 49, 0, 0, 0, 13, 66, 53,
+			32, 65, 6, 37, 89, 47, 36, 34, 0, 24, 0, 20, 3, 95, 52, 88, 50, 6, 36, 55, 113, 15, 49, 4, 125, 65, 65, 36, 50, 72,
+			0, 0, 0, 0, 0, 6, 195, 76, 81, 64, 76, 0, 0, 6, 195, 56, 17, 0, 72, 0, 17, 66, 44, 112, 49, 4, 37, 55, 116, 81,
+			34, 6, 35, 65, 65, 0, 24, 0, 7, 195, 20, 130, 192, 72, 8, 19, 3, 95, 53, 88, 84, 6, 112, 89, 15, 49, 4, 125, 65, 65,
+			36, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 62, 176, 13, 19, 3, 95, 54, 88, 49, 6, 117, 89, 15, 49, 4, 125,
+			65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 23, 66, 46, 176, 49, 6, 39, 34, 47, 36, 34, 37, 15, 6, 125, 107, 4, 37, 89, 47,
+			40, 0, 24, 0, 0, 0, 21, 66, 40, 160, 57, 4, 108, 15, 57, 6, 121, 34, 34, 81, 65, 37, 89, 36, 72, 0, 24, 0, 16, 67,
+			5, 4, 128, 4, 35, 48, 48, 34, 6, 37, 61, 61, 0, 24, 0, 0, 0, 0, 0, 7, 196, 52, 147, 12, 20, 76, 0, 0, 14, 66,
+			57, 32, 50, 6, 40, 65, 65, 71, 36, 34, 0, 24, 0, 23, 3, 95, 56, 88, 49, 6, 35, 107, 36, 49, 89, 35, 15, 49, 4, 125,
+			65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80, 72, 0, 22, 3, 95, 57, 88, 6, 125, 107, 36, 49, 89,
+			35, 15, 49, 4, 125, 65, 65, 36, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 66, 57, 64, 50, 6, 127, 47, 36, 49, 89, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 20, 66, 52, 112,
+			65, 4, 37, 61, 61, 37, 15, 81, 34, 6, 35, 65, 65, 37, 0, 24, 15, 66, 40, 208, 57, 4, 108, 15, 65, 6, 40, 117, 72, 0,
+			24, 0, 18, 67, 65, 34, 192, 48, 6, 36, 34, 111, 15, 49, 6, 39, 50, 72, 0, 24, 0, 0, 0, 0, 24, 67, 40, 213, 0, 57,
+			4, 108, 15, 65, 6, 40, 117, 72, 15, 47, 6, 36, 37, 89, 36, 72, 0, 24, 29, 67, 76, 82, 128, 89, 6, 115, 57, 40, 89, 15,
+			36, 55, 6, 36, 49, 47, 34, 37, 15, 57, 6, 35, 108, 65, 0, 42, 42, 0, 0, 0, 12, 4, 95, 99, 105, 114, 49, 35, 47, 40,
+			89, 0, 6, 65, 172, 125, 126, 0, 0, 19, 67, 93, 67, 192, 84, 4, 110, 15, 47, 4, 110, 15, 6, 39, 115, 0, 42, 42, 0, 13,
+			4, 95, 48, 77, 52, 71, 37, 61, 57, 39, 50, 0, 0, 0, 13, 4, 95, 48, 77, 50, 65, 37, 61, 57, 39, 50, 0, 0, 14, 4,
+			95, 48, 77, 51, 65, 37, 61, 57, 35, 34, 72, 0, 0, 0, 12, 4, 95, 48, 77, 49, 47, 40, 107, 109, 47, 0, 0, 18, 66, 52,
+			128, 65, 6, 40, 117, 15, 107, 6, 40, 55, 81, 35, 89, 0, 24, 12, 66, 40, 224, 57, 6, 115, 67, 37, 89, 0, 24, 0, 0, 0,
+			0, 0, 0, 0, 14, 67, 65, 35, 0, 48, 34, 6, 36, 37, 55, 37, 0, 24, 0, 12, 66, 65, 32, 48, 34, 6, 39, 40, 35, 0,
+			24, 0, 0, 0, 0, 0, 18, 67, 56, 245, 128, 50, 4, 39, 84, 6, 36, 65, 65, 71, 36, 34, 0, 24, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 8, 197, 52, 147, 12, 21, 48, 76, 0, 0, 0, 0, 0, 0, 18, 67, 65, 53, 0, 48, 6, 40, 37, 57, 36, 89,
+			15, 47, 4, 110, 0, 24, 0, 0, 0, 0, 17, 67, 44, 225, 0, 49, 4, 35, 67, 72, 37, 72, 6, 108, 47, 0, 24, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 67, 16, 85, 19, 47, 4, 36, 47, 89, 6, 36, 65, 65, 71, 36, 34, 0, 24, 0, 11,
+			4, 95, 99, 101, 100, 89, 36, 72, 112, 0, 0, 0, 16, 66, 52, 176, 65, 6, 108, 15, 49, 6, 39, 50, 50, 72, 0, 24, 0, 15,
+			67, 44, 241, 0, 49, 6, 39, 72, 109, 50, 37, 49, 0, 24, 0, 0, 0, 0, 16, 67, 76, 82, 192, 89, 6, 36, 49, 118, 50, 72,
+			37, 47, 0, 24, 0, 0, 0, 0, 0, 10, 4, 95, 99, 97, 112, 89, 117, 34, 0, 0, 0, 0, 21, 67, 28, 211, 192, 81, 6, 36,
+			110, 15, 4, 36, 65, 65, 15, 6, 39, 115, 0, 24, 42, 0, 0, 13, 67, 72, 35, 0, 34, 6, 40, 71, 55, 35, 0, 24, 0, 20,
+			66, 52, 192, 65, 4, 37, 61, 61, 37, 15, 55, 6, 112, 47, 34, 37, 47, 0, 24, 0, 17, 67, 52, 193, 0, 65, 6, 37, 61, 57,
+			35, 34, 72, 37, 47, 0, 24, 6, 195, 52, 148, 192, 76, 0, 0, 0, 0, 6, 195, 44, 84, 192, 76, 0, 0, 26, 67, 77, 3, 0,
+			89, 6, 40, 48, 113, 15, 55, 4, 40, 89, 37, 49, 35, 15, 47, 6, 127, 47, 12, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 196, 88, 82, 68, 36, 72, 8, 197, 52, 147, 12, 20, 192, 76, 5, 194, 76, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 72, 69, 0, 34, 4, 35, 40, 72, 15, 47, 6, 110, 0, 24, 16, 67, 52,
+			229, 0, 65, 6, 108, 50, 15, 47, 6, 36, 110, 0, 24, 0, 0, 0, 16, 3, 115, 46, 111, 89, 6, 36, 110, 15, 6, 39, 50, 50,
+			0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 10, 66, 60, 176, 39, 49, 6, 36, 112, 0, 5, 194, 80, 16, 72, 0, 0, 0, 0, 0,
+			16, 67, 60, 181, 0, 4, 39, 49, 47, 6, 115, 71, 36, 34, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 66, 56,
+			224, 50, 6, 37, 112, 15, 50, 6, 37, 65, 36, 47, 4, 35, 47, 40, 72, 0, 24, 0, 13, 67, 52, 164, 128, 65, 6, 35, 57, 116,
+			34, 0, 24, 0, 0, 0, 13, 4, 95, 103, 114, 118, 81, 34, 108, 84, 37, 89, 0, 0, 0, 6, 195, 60, 193, 68, 72, 0, 0, 12,
+			66, 81, 32, 47, 34, 6, 125, 49, 12, 0, 24, 20, 66, 77, 64, 89, 6, 36, 110, 15, 47, 6, 121, 107, 36, 50, 72, 35, 71, 0,
+			24, 0, 0, 0, 0, 11, 67, 57, 83, 142, 50, 6, 40, 50, 12, 0, 0, 0, 18, 3, 195, 181, 97, 6, 119, 48, 12, 36, 15, 4,
+			108, 89, 47, 35, 0, 24, 0, 0, 12, 2, 194, 164, 84, 35, 55, 6, 117, 47, 35, 0, 0, 0, 0, 10, 2, 194, 163, 50, 35, 110,
+			55, 35, 0, 0, 0, 0, 0, 0, 7, 2, 195, 164, 121, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 60, 224, 72, 0, 6,
+			195, 4, 32, 192, 13, 0, 6, 195, 56, 81, 68, 76, 0, 0, 0, 0, 0, 7, 195, 6, 177, 64, 13, 42, 0, 0, 7, 2, 195, 181,
+			119, 120, 0, 0, 0, 0, 15, 70, 100, 241, 200, 85, 37, 0, 57, 39, 81, 40, 34, 47, 0, 0, 0, 0, 15, 67, 80, 83, 0, 47,
+			6, 36, 55, 111, 83, 39, 50, 0, 24, 0, 5, 194, 80, 80, 72, 0, 16, 67, 80, 194, 192, 47, 6, 119, 61, 49, 37, 50, 40, 72,
+			0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 195, 181, 112, 6, 119, 48, 111, 47, 4, 35, 57, 35, 0, 24,
+			0, 0, 0, 19, 66, 76, 128, 89, 6, 36, 35, 55, 15, 107, 4, 40, 55, 81, 35, 89, 0, 24, 0, 0, 0, 0, 0, 0, 6, 195,
+			60, 194, 68, 72, 0, 0, 0, 15, 67, 89, 33, 0, 84, 6, 119, 34, 34, 72, 55, 36, 0, 24, 0, 0, 6, 195, 80, 82, 69, 72,
+			6, 195, 52, 82, 69, 72, 0, 0, 0, 0, 0, 0, 0, 19, 67, 76, 84, 20, 89, 6, 36, 48, 47, 6, 36, 65, 65, 71, 36, 34,
+			0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 53, 74, 192, 13, 42, 0, 0, 0, 0, 0, 7, 196, 60, 193,
+			84, 20, 72, 6, 195, 56, 82, 68, 76, 0, 0, 0, 8, 195, 85, 48, 64, 13, 42, 42, 0, 0, 12, 4, 195, 164, 115, 115, 6, 121,
+			89, 12, 89, 0, 0, 12, 66, 89, 64, 84, 6, 35, 108, 47, 35, 0, 24, 7, 194, 85, 96, 13, 42, 42, 0, 6, 195, 37, 49, 64,
+			72, 0, 11, 67, 33, 83, 12, 107, 6, 40, 55, 12, 0, 0, 0, 0, 0, 0, 0, 16, 66, 92, 48, 84, 6, 36, 110, 15, 47, 89,
+			6, 36, 110, 0, 24, 0, 17, 67, 65, 66, 192, 48, 4, 36, 35, 15, 47, 6, 125, 49, 12, 0, 24, 0, 0, 0, 0, 12, 2, 95,
+			35, 47, 34, 36, 61, 61, 37, 72, 0, 0, 15, 2, 95, 34, 57, 40, 47, 118, 65, 4, 121, 34, 49, 12, 0, 0, 16, 2, 95, 33,
+			107, 129, 12, 57, 40, 65, 4, 121, 34, 49, 12, 0, 0, 0, 13, 2, 95, 39, 125, 55, 109, 15, 49, 39, 65, 35, 0, 0, 16, 2,
+			95, 38, 57, 6, 35, 108, 15, 65, 4, 121, 34, 49, 12, 0, 0, 15, 2, 95, 37, 48, 34, 39, 47, 89, 36, 50, 47, 12, 0, 66,
+			15, 2, 95, 37, 48, 34, 39, 47, 89, 6, 36, 50, 47, 12, 0, 0, 12, 2, 95, 36, 47, 39, 55, 12, 55, 35, 34, 0, 0, 0,
+			0, 18, 2, 95, 41, 55, 119, 48, 36, 47, 35, 84, 15, 89, 40, 55, 12, 81, 0, 0, 18, 2, 95, 40, 35, 55, 118, 89, 47, 35,
+			84, 15, 89, 40, 55, 12, 81, 0, 0, 0, 11, 2, 95, 46, 48, 40, 50, 49, 12, 47, 0, 0, 10, 2, 95, 45, 49, 34, 112, 48,
+			89, 0, 0, 9, 2, 95, 44, 49, 39, 65, 109, 0, 0, 14, 67, 53, 36, 192, 65, 6, 37, 131, 131, 37, 89, 0, 24, 11, 2, 95,
+			51, 49, 6, 39, 55, 12, 65, 0, 0, 11, 2, 95, 50, 49, 6, 35, 49, 12, 89, 0, 0, 10, 2, 95, 49, 6, 125, 49, 12, 89,
+			0, 0, 11, 2, 95, 48, 50, 6, 40, 55, 12, 55, 0, 0, 12, 2, 95, 55, 89, 6, 36, 37, 47, 89, 36, 0, 0, 10, 2, 95,
+			54, 49, 6, 40, 117, 89, 0, 0, 10, 2, 95, 53, 84, 6, 37, 112, 89, 0, 0, 10, 2, 95, 52, 50, 6, 36, 55, 113, 0, 0,
+			0, 10, 2, 95, 58, 49, 115, 55, 39, 50, 0, 0, 12, 2, 95, 57, 6, 125, 107, 36, 49, 89, 35, 0, 0, 12, 66, 80, 176, 47,
+			6, 125, 49, 12, 37, 0, 24, 13, 2, 95, 56, 49, 6, 35, 107, 36, 49, 89, 35, 0, 0, 15, 2, 95, 63, 49, 125, 131, 113, 65,
+			4, 121, 34, 49, 12, 0, 0, 10, 2, 95, 62, 89, 117, 34, 36, 65, 0, 0, 0, 12, 2, 95, 60, 84, 127, 49, 12, 89, 36, 65,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 67, 76, 225, 0, 89, 6, 125, 67, 67, 72, 37, 50, 40, 72, 0, 24, 0,
+			0, 8, 195, 16, 224, 64, 13, 42, 42, 0, 7, 196, 60, 194, 77, 20, 72, 0, 7, 65, 212, 91, 35, 108, 0, 0, 0, 0, 14, 4,
+			110, 195, 164, 100, 50, 6, 121, 72, 109, 55, 0, 24, 0, 7, 196, 60, 195, 149, 16, 72, 0, 0, 21, 67, 20, 177, 192, 6, 36, 110,
+			15, 49, 4, 35, 108, 15, 81, 6, 36, 110, 0, 24, 42, 0, 6, 195, 56, 82, 76, 76, 0, 0, 6, 195, 60, 194, 78, 72, 0, 6,
+			195, 80, 83, 65, 72, 31, 2, 95, 91, 6, 35, 55, 118, 89, 47, 35, 84, 15, 49, 6, 35, 50, 72, 37, 62, 37, 50, 36, 15, 89,
+			6, 40, 55, 12, 81, 0, 0, 11, 4, 95, 226, 130, 172, 36, 40, 34, 39, 0, 0, 0, 0, 14, 2, 95, 95, 35, 55, 12, 55, 49,
+			34, 112, 48, 89, 0, 0, 11, 67, 76, 149, 20, 89, 6, 37, 47, 12, 0, 0, 32, 2, 95, 93, 55, 6, 119, 48, 36, 47, 35, 84,
+			15, 49, 6, 35, 50, 72, 37, 55, 4, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198,
+			60, 193, 75, 76, 147, 128, 72, 0, 0, 0, 0, 0, 12, 66, 80, 224, 47, 6, 121, 50, 109, 84, 0, 24, 0, 0, 0, 0, 0, 17,
+			67, 64, 212, 192, 48, 6, 36, 35, 65, 37, 89, 36, 55, 47, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 95, 123, 35, 55,
+			118, 89, 47, 35, 84, 15, 55, 6, 115, 81, 36, 55, 4, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0, 0, 0, 0, 0, 0, 0,
+			30, 2, 95, 125, 55, 119, 48, 36, 47, 35, 84, 15, 55, 6, 115, 81, 36, 55, 4, 37, 50, 36, 15, 89, 6, 40, 55, 12, 81, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 68, 76, 80, 76, 32,
+			89, 6, 36, 35, 55, 15, 107, 4, 40, 55, 81, 35, 89, 0, 24, 0, 13, 4, 95, 35, 51, 50, 47, 6, 125, 107, 37, 49, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 52, 195, 128, 65, 6, 37, 61, 57, 39, 50, 37, 47, 0, 24, 8, 195,
+			5, 67, 64, 13, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			8, 132, 118, 195, 181, 105, 72, 8, 0, 0, 0, 0, 0, 0, 0, 14, 69, 100, 241, 213, 73, 64, 57, 39, 81, 40, 34, 47, 0, 0,
+			13, 66, 6, 176, 6, 35, 108, 15, 6, 125, 126, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 20, 67, 8, 32, 192, 71, 4, 112, 15,
+			71, 4, 112, 15, 89, 6, 37, 112, 0, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 18, 67, 44, 130, 192, 49, 4, 37, 107, 111, 55, 49, 6, 39, 50, 72, 0, 24, 0, 7, 65, 228, 90, 36, 110, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 56, 82, 76, 20, 76, 0, 0, 0, 0, 0, 0, 0, 8, 195, 5, 69, 128, 13, 42,
+			42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 105, 0, 106, 0, 7, 6, 18, 67,
+			98, 0, 100, 0, 102, 0, 103, 0, 104, 0, 106, 0, 108, 0, 109, 0, 110, 0, 114, 0, 115, 0, 118, 0, 7, 6, 18, 68, 108, 0,
+			109, 0, 110, 0, 114, 0, 7, 6, 18, 69, 195, 181, 0, 195, 164, 0, 195, 182, 0, 195, 188, 0, 97, 0, 98, 0, 99, 0, 100, 0,
+			101, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, 0, 115, 0,
+			116, 0, 117, 0, 118, 0, 7, 6, 18, 70, 195, 181, 0, 195, 164, 0, 195, 182, 0, 195, 188, 0, 97, 0, 101, 0, 105, 0, 108, 0,
+			109, 0, 110, 0, 111, 0, 114, 0, 117, 0, 7, 6, 195, 164, 0, 101, 2, 32, 3, 6, 121, 110, 0, 111, 3, 6, 121, 115, 0, 117,
+			2, 32, 3, 6, 121, 117, 0, 4, 195, 164, 1, 29, 2, 18, 67, 32, 3, 6, 121, 122, 0, 195, 164, 1, 29, 2, 32, 0, 195, 164,
+			3, 6, 122, 0, 105, 2, 32, 3, 6, 127, 12, 0, 3, 121, 0, 105, 3, 127, 0, 7, 6, 195, 181, 0, 97, 3, 6, 119, 108, 0,
+			101, 2, 32, 3, 6, 119, 110, 0, 105, 2, 32, 3, 6, 119, 112, 0, 111, 3, 6, 119, 115, 0, 117, 2, 32, 3, 6, 119, 117, 0,
+			4, 195, 181, 1, 29, 2, 18, 67, 32, 3, 6, 119, 120, 0, 195, 181, 1, 29, 2, 32, 0, 195, 181, 3, 6, 120, 0, 3, 119, 0,
+			117, 3, 119, 40, 0, 7, 6, 195, 182, 0, 97, 3, 6, 123, 108, 0, 101, 3, 6, 123, 110, 0, 4, 195, 182, 1, 29, 2, 18, 67,
+			32, 3, 6, 123, 124, 0, 195, 182, 1, 29, 2, 32, 0, 195, 182, 3, 6, 124, 0, 3, 123, 0, 105, 3, 128, 0, 7, 6, 195, 188,
+			0, 4, 195, 188, 1, 29, 2, 18, 67, 32, 3, 6, 125, 126, 0, 195, 188, 1, 29, 2, 32, 0, 195, 188, 3, 6, 126, 0, 3, 125,
+			0, 109, 98, 114, 105, 3, 125, 65, 71, 34, 37, 0, 4, 105, 3, 129, 0, 195, 188, 2, 106, 97, 0, 195, 188, 2, 97, 3, 129, 57,
+			0, 7, 6, 97, 0, 4, 97, 1, 29, 2, 18, 67, 32, 3, 6, 35, 108, 0, 97, 1, 29, 2, 32, 0, 101, 2, 32, 3, 6, 35,
+			110, 0, 105, 2, 32, 3, 6, 35, 112, 0, 111, 3, 6, 35, 115, 0, 117, 2, 32, 3, 6, 35, 117, 0, 97, 3, 6, 108, 0, 3,
+			35, 0, 109, 98, 105, 3, 35, 65, 71, 37, 0, 1, 105, 17, 65, 3, 57, 35, 0, 4, 1, 117, 97, 3, 58, 35, 0, 1, 117, 117,
+			0, 1, 117, 181, 195, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 109, 0, 8, 18, 67, 17, 65, 17, 67, 2, 25, 0, 7, 6, 98,
+			0, 8, 3, 48, 0, 3, 71, 0, 7, 6, 99, 0, 4, 2, 101, 3, 47, 89, 0, 2, 105, 0, 3, 49, 0, 104, 8, 3, 76, 0,
+			8, 2, 101, 3, 89, 0, 105, 116, 121, 3, 89, 37, 47, 37, 0, 7, 6, 100, 0, 8, 3, 47, 0, 4, 3, 72, 0, 1, 21, 21,
+			2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 1, 10, 2, 18, 66, 3, 133, 0, 7, 6, 101, 0, 97, 2, 32, 3, 6, 36, 108, 0,
+			4, 101, 1, 29, 2, 18, 67, 32, 3, 6, 36, 110, 0, 101, 1, 29, 2, 32, 0, 105, 2, 32, 3, 6, 36, 112, 0, 111, 3, 6,
+			36, 115, 0, 101, 3, 6, 110, 0, 3, 36, 0, 1, 105, 17, 65, 3, 57, 36, 0, 4, 1, 117, 97, 3, 58, 36, 0, 1, 117, 117,
+			0, 1, 117, 181, 195, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 111, 0, 8, 18, 67, 17, 65, 17, 67, 2, 25, 0, 7, 6, 102,
+			0, 3, 83, 0, 7, 6, 103, 0, 8, 3, 49, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 1, 97, 108, 2, 116, 105, 3, 107,
+			107, 0, 7, 6, 105, 0, 4, 105, 1, 29, 2, 18, 67, 32, 3, 6, 37, 112, 0, 105, 1, 29, 2, 32, 0, 105, 3, 6, 112, 0,
+			3, 37, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 113, 0, 8, 18, 67, 17, 65, 17, 67, 2, 25, 0, 7, 6, 106, 0, 97, 122,
+			122, 3, 47, 90, 121, 89, 12, 0, 3, 57, 0, 106, 3, 57, 12, 0, 117, 109, 98, 117, 3, 57, 40, 65, 71, 40, 0, 7, 6, 107,
+			0, 3, 49, 0, 97, 117, 103, 101, 3, 49, 6, 35, 117, 81, 36, 0, 4, 1, 17, 65, 2, 18, 68, 3, 49, 12, 0, 1, 17, 65,
+			17, 65, 2, 18, 70, 0, 1, 18, 68, 17, 65, 2, 18, 70, 0, 107, 0, 97, 109, 98, 97, 3, 49, 35, 65, 71, 35, 0, 105, 109,
+			98, 97, 116, 117, 115, 3, 49, 37, 65, 71, 35, 47, 40, 89, 0, 105, 109, 98, 117, 3, 49, 37, 65, 71, 40, 0, 7, 6, 108, 0,
+			4, 3, 55, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 4, 108, 1, 21, 21, 2, 105, 3, 55, 12, 0, 108, 1,
+			25, 2, 105, 0, 4, 1, 10, 2, 18, 66, 3, 61, 0, 1, 10, 2, 100, 18, 66, 0, 1, 10, 2, 103, 18, 66, 0, 1, 10, 2,
+			107, 18, 66, 0, 1, 10, 2, 110, 105, 0, 1, 10, 2, 115, 11, 105, 0, 1, 10, 2, 115, 105, 0, 1, 10, 2, 116, 105, 0, 2,
+			115, 115, 32, 0, 108, 1, 10, 2, 105, 3, 61, 12, 0, 108, 1, 17, 65, 2, 32, 3, 114, 61, 12, 0, 7, 6, 109, 0, 4, 3,
+			65, 0, 1, 10, 2, 98, 17, 65, 11, 0, 1, 10, 2, 98, 3, 65, 65, 0, 7, 6, 110, 0, 4, 3, 50, 0, 1, 17, 65, 10,
+			2, 108, 18, 66, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 110, 1, 105, 2, 32, 3, 50, 12, 0, 4, 110, 1,
+			17, 65, 21, 2, 32, 3, 50, 50, 0, 110, 1, 21, 21, 2, 105, 0, 110, 1, 25, 2, 105, 0, 4, 1, 10, 2, 18, 66, 3, 67,
+			0, 1, 10, 2, 100, 18, 66, 0, 1, 10, 2, 115, 105, 0, 1, 10, 2, 116, 32, 0, 1, 10, 2, 116, 105, 0, 2, 115, 116, 32,
+			0, 110, 1, 10, 2, 105, 3, 67, 12, 0, 4, 2, 32, 103, 3, 68, 0, 2, 32, 107, 0, 2, 103, 0, 2, 107, 0, 110, 1, 17,
+			65, 2, 32, 3, 114, 67, 12, 0, 7, 6, 111, 0, 97, 3, 6, 39, 108, 0, 101, 2, 32, 3, 6, 39, 110, 0, 105, 2, 32, 3,
+			6, 39, 112, 0, 4, 111, 1, 29, 2, 18, 67, 32, 3, 6, 39, 115, 0, 111, 1, 29, 2, 32, 0, 111, 3, 6, 115, 0, 4, 3,
+			39, 0, 1, 105, 105, 0, 1, 105, 17, 65, 3, 57, 39, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 116, 0, 8, 18, 67, 17, 65,
+			17, 67, 2, 25, 0, 7, 6, 112, 0, 3, 48, 0, 4, 1, 17, 65, 17, 65, 2, 18, 70, 3, 48, 12, 0, 1, 18, 68, 17, 65,
+			2, 32, 0, 112, 0, 7, 6, 113, 0, 3, 49, 0, 113, 3, 49, 12, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 3, 34, 0, 4,
+			1, 101, 107, 2, 103, 101, 3, 51, 51, 0, 1, 181, 195, 107, 2, 103, 101, 0, 114, 0, 7, 6, 115, 0, 4, 3, 89, 0, 1, 10,
+			2, 108, 18, 66, 0, 1, 10, 2, 110, 18, 66, 0, 1, 21, 21, 2, 18, 66, 0, 1, 25, 2, 18, 66, 0, 195, 188, 109, 98, 111,
+			108, 105, 115, 101, 101, 114, 3, 89, 4, 125, 65, 71, 39, 55, 37, 89, 6, 110, 34, 0, 111, 109, 98, 117, 3, 89, 39, 65, 71, 40,
+			0, 4, 115, 1, 21, 21, 2, 105, 3, 89, 89, 0, 115, 1, 25, 2, 105, 0, 115, 3, 89, 130, 0, 4, 99, 104, 1, 25, 3, 91,
+			0, 104, 1, 25, 0, 115, 1, 17, 65, 2, 32, 3, 114, 131, 12, 0, 4, 1, 10, 2, 18, 66, 3, 131, 0, 1, 10, 2, 100, 105,
+			0, 1, 17, 65, 2, 116, 105, 0, 115, 1, 10, 2, 105, 3, 131, 131, 0, 7, 6, 116, 0, 4, 3, 47, 0, 1, 21, 21, 2, 18,
+			66, 0, 1, 21, 21, 2, 115, 105, 0, 1, 25, 2, 18, 66, 0, 4, 1, 17, 65, 2, 18, 68, 3, 47, 12, 0, 1, 17, 65, 17,
+			65, 2, 18, 70, 0, 1, 97, 109, 10, 2, 97, 32, 0, 116, 0, 116, 1, 21, 21, 2, 105, 0, 116, 1, 25, 2, 105, 0, 97, 109,
+			98, 117, 3, 47, 35, 65, 71, 40, 0, 117, 109, 98, 97, 3, 47, 40, 65, 71, 35, 0, 1, 17, 65, 10, 2, 115, 105, 3, 114, 132,
+			0, 116, 1, 17, 65, 29, 2, 32, 3, 114, 132, 12, 0, 4, 1, 10, 2, 18, 66, 3, 132, 0, 1, 10, 2, 108, 18, 66, 0, 1,
+			10, 2, 110, 18, 66, 0, 116, 1, 10, 2, 105, 3, 132, 12, 0, 7, 6, 117, 0, 105, 2, 32, 3, 6, 40, 112, 0, 4, 117, 1,
+			29, 2, 18, 67, 32, 3, 6, 40, 117, 0, 117, 1, 29, 2, 32, 0, 117, 3, 6, 117, 0, 4, 3, 40, 0, 1, 105, 105, 0, 1,
+			105, 17, 65, 3, 57, 40, 0, 4, 8, 18, 67, 17, 65, 2, 25, 3, 118, 0, 8, 18, 67, 17, 65, 17, 67, 2, 25, 0, 7, 6,
+			118, 0, 3, 84, 0, 97, 98, 97, 114, 105, 105, 3, 84, 6, 35, 71, 35, 34, 4, 37, 37, 0, 101, 109, 98, 117, 3, 84, 36, 65,
+			71, 40, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 120, 3, 49, 12, 89, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 37,
+			0, 105, 3, 57, 37, 0, 121, 3, 126, 0, 7, 6, 122, 0, 122, 3, 47, 89, 0, 3, 88, 0, 104, 1, 25, 3, 90, 0, 7, 6,
+			0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 45, 8, 32, 2, 32, 15, 3, 65,
+			112, 50, 40, 89, 0, 197, 190, 3, 90, 0, 197, 161, 3, 91, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts17 = FileInMemory_createWithData (6767, reinterpret_cast<const char *> (&espeakdata_dicts17_data), 
+			U"espeak-1.48.04-source/espeak-data/et_dict", 
 			U"et");
-		Collection_addItem (me.peek(), espeakdata_dicts17.transfer());
+		my addItem_move (espeakdata_dicts17.move());
 
-		static unsigned char espeakdata_dicts18_data[5131] = {
-			0, 4, 0, 0, 161, 16, 0, 0, 9, 198, 48, 145, 78, 20, 211, 69, 72, 0, 0, 0, 13, 67, 57, 35, 192, 50, 40, 65, 36, 34,
-			39, 0, 24, 0, 0, 6, 65, 4, 35, 12, 0, 0, 10, 135, 20, 195, 164, 12, 20, 195, 164, 76, 0, 0, 6, 195, 52, 83, 133, 19,
-			7, 196, 48, 21, 83, 20, 19, 0, 7, 65, 8, 71, 36, 12, 0, 0, 0, 16, 67, 21, 64, 192, 36, 47, 10, 89, 36, 47, 36, 34,
-			35, 0, 24, 0, 0, 7, 65, 12, 89, 36, 12, 0, 0, 0, 0, 0, 7, 65, 16, 72, 36, 12, 0, 0, 0, 0, 7, 196, 81, 83,
-			206, 4, 76, 0, 6, 65, 20, 36, 12, 0, 0, 0, 0, 0, 6, 65, 24, 109, 83, 0, 0, 0, 0, 0, 8, 197, 56, 242, 76, 48,
-			80, 76, 7, 65, 28, 81, 36, 12, 0, 0, 0, 0, 7, 196, 40, 243, 139, 4, 76, 0, 7, 65, 32, 107, 39, 12, 0, 0, 0, 0,
-			6, 195, 60, 148, 133, 19, 7, 196, 40, 243, 12, 4, 76, 7, 195, 37, 68, 197, 76, 19, 0, 6, 65, 36, 37, 12, 0, 0, 14, 1,
-			37, 48, 34, 39, 89, 36, 50, 47, 12, 108, 0, 27, 13, 1, 37, 48, 34, 39, 89, 36, 50, 47, 12, 37, 0, 0, 17, 70, 44, 243,
-			134, 85, 68, 197, 49, 39, 50, 83, 40, 47, 89, 36, 0, 7, 1, 38, 10, 36, 47, 0, 0, 0, 8, 197, 81, 83, 200, 60, 224, 76,
-			7, 65, 40, 57, 37, 12, 0, 0, 0, 14, 1, 42, 35, 89, 47, 36, 34, 37, 89, 49, 37, 0, 27, 0, 9, 1, 43, 48, 55, 40,
-			89, 0, 27, 0, 7, 65, 44, 49, 39, 12, 0, 0, 0, 0, 9, 1, 47, 49, 122, 47, 12, 35, 0, 0, 6, 65, 48, 109, 55, 0,
-			0, 0, 0, 12, 68, 64, 243, 12, 20, 48, 39, 55, 55, 36, 0, 7, 196, 40, 243, 12, 20, 76, 0, 6, 65, 52, 109, 65, 0, 0,
-			0, 0, 0, 6, 65, 56, 109, 50, 0, 0, 0, 0, 0, 6, 65, 60, 39, 12, 0, 0, 14, 1, 61, 6, 114, 107, 47, 109, 49, 6,
-			120, 50, 0, 27, 0, 0, 0, 7, 1, 64, 10, 109, 47, 0, 7, 65, 64, 48, 36, 12, 0, 0, 0, 0, 7, 196, 81, 83, 212, 4,
-			76, 0, 7, 65, 68, 49, 40, 12, 0, 0, 0, 0, 0, 6, 65, 72, 109, 34, 0, 0, 0, 0, 0, 6, 65, 76, 109, 89, 0, 0,
-			0, 0, 0, 7, 65, 80, 47, 36, 12, 0, 0, 0, 0, 12, 68, 64, 83, 12, 20, 48, 36, 55, 55, 36, 0, 0, 6, 65, 84, 40,
-			12, 0, 0, 0, 0, 0, 7, 65, 88, 84, 36, 12, 0, 0, 0, 0, 16, 4, 95, 49, 77, 52, 71, 6, 37, 55, 57, 39, 12, 50,
-			35, 0, 0, 8, 197, 60, 194, 77, 52, 80, 72, 8, 133, 13, 9, 14, 195, 164, 72, 8, 1, 92, 49, 36, 50, 39, 0, 13, 65, 92,
-			49, 35, 49, 89, 117, 89, 84, 36, 12, 0, 0, 0, 0, 0, 13, 4, 95, 49, 77, 49, 47, 6, 40, 107, 35, 47, 0, 7, 65, 96,
-			109, 49, 89, 0, 0, 6, 194, 4, 64, 17, 24, 16, 4, 95, 49, 77, 50, 65, 6, 37, 55, 57, 39, 12, 50, 35, 0, 0, 16, 4,
-			95, 49, 77, 51, 65, 6, 37, 55, 57, 35, 34, 72, 37, 0, 0, 7, 196, 81, 83, 210, 20, 19, 7, 196, 40, 243, 20, 4, 76, 0,
-			6, 65, 100, 114, 12, 0, 0, 0, 0, 0, 8, 65, 104, 47, 89, 36, 47, 0, 0, 0, 0, 0, 0, 16, 70, 77, 84, 193, 56, 225,
-			64, 89, 40, 89, 35, 50, 50, 36, 0, 0, 0, 0, 0, 6, 194, 12, 16, 17, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 52, 19, 142, 20, 65, 35, 50, 50,
-			36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 32, 147, 12, 20, 107, 37, 55, 55, 36, 0, 7, 196, 65, 84,
-			146, 4, 19, 0, 0, 0, 0, 0, 8, 197, 56, 242, 83, 80, 16, 76, 0, 0, 0, 7, 196, 60, 195, 21, 80, 72, 7, 196, 40, 244,
-			211, 4, 76, 0, 0, 0, 0, 11, 67, 4, 227, 133, 35, 50, 50, 36, 0, 41, 0, 0, 0, 0, 12, 68, 72, 148, 212, 36, 51, 37,
-			89, 47, 108, 0, 7, 196, 40, 244, 212, 4, 76, 0, 0, 0, 0, 12, 68, 40, 19, 142, 20, 57, 35, 50, 50, 36, 0, 0, 0, 0,
-			0, 7, 196, 65, 82, 197, 4, 19, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 56, 19, 12, 20, 50, 35, 55, 55, 36, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 14, 195, 164, 9, 20, 195, 164, 76, 0, 0, 0, 0, 0, 12, 68, 72, 20, 212, 36,
-			51, 35, 89, 47, 108, 0, 12, 68, 44, 244, 212, 36, 49, 39, 89, 47, 108, 0, 0, 0, 0, 6, 195, 80, 16, 64, 19, 0, 12, 68,
-			32, 19, 142, 20, 107, 35, 50, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 92, 147, 12, 20, 84, 37,
-			55, 55, 36, 0, 12, 68, 88, 147, 12, 20, 84, 37, 55, 55, 36, 0, 12, 68, 44, 19, 12, 20, 49, 35, 55, 55, 36, 0, 0, 8,
-			197, 40, 242, 76, 48, 16, 76, 8, 197, 56, 242, 76, 80, 16, 76, 0, 0, 7, 195, 80, 18, 64, 72, 8, 0, 13, 4, 95, 4, 16,
-			20, 48, 37, 55, 49, 12, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 20, 12, 4, 47, 37, 55, 72,
-			36, 0, 12, 3, 95, 35, 57, 89, 35, 34, 49, 115, 50, 0, 0, 8, 197, 56, 242, 72, 36, 224, 76, 0, 0, 0, 0, 0, 5, 194,
-			21, 64, 72, 0, 0, 0, 8, 197, 60, 194, 86, 5, 64, 72, 0, 0, 0, 0, 0, 0, 0, 7, 196, 49, 83, 196, 20, 19, 0, 8,
-			197, 60, 193, 84, 80, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 20, 195, 164, 13, 195, 164, 76, 0, 0, 9, 67, 60,
-			176, 89, 39, 49, 118, 0, 0, 0, 0, 0, 0, 12, 68, 64, 244, 212, 36, 48, 39, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 11,
-			136, 14, 195, 164, 9, 20, 20, 5, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 17, 66, 20, 112, 36, 89, 37, 65, 36, 34, 49, 37,
-			49, 89, 37, 0, 24, 0, 0, 0, 8, 197, 40, 242, 76, 48, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 83, 133,
-			19, 7, 195, 60, 195, 1, 72, 19, 9, 198, 56, 242, 84, 80, 83, 128, 76, 0, 0, 0, 17, 70, 65, 35, 205, 36, 195, 5, 48, 51,
-			39, 65, 108, 55, 55, 36, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 40, 242, 15, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 5, 194, 20, 144, 72, 0, 0, 12, 68, 28, 19, 12, 20, 81, 35, 55, 55, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 134, 20, 195, 164, 14, 195, 164, 76, 0, 0, 0, 0, 0, 6, 195, 60, 194, 84, 72, 0, 11, 136, 14, 195, 164, 9, 19, 19, 195,
-			164, 76, 0, 0, 0, 0, 0, 0, 0, 7, 195, 40, 225, 64, 17, 24, 9, 3, 226, 130, 172, 124, 34, 39, 0, 10, 3, 226, 130, 172,
-			124, 34, 39, 35, 0, 0, 0, 0, 15, 7, 18, 25, 195, 182, 19, 20, 9, 51, 132, 89, 47, 108, 0, 0, 7, 195, 60, 193, 64, 72,
-			19, 0, 0, 0, 6, 194, 40, 16, 72, 8, 5, 194, 32, 80, 72, 0, 17, 8, 16, 195, 164, 195, 164, 19, 20, 9, 48, 109, 12, 89,
-			47, 108, 0, 0, 0, 23, 73, 76, 148, 139, 85, 52, 5, 48, 193, 64, 89, 37, 51, 49, 40, 89, 48, 36, 55, 55, 36, 0, 0, 0,
-			6, 195, 60, 194, 64, 72, 0, 0, 0, 6, 195, 36, 131, 69, 19, 0, 0, 0, 6, 195, 60, 194, 78, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 8, 197, 56, 242, 68, 20, 224, 76, 0, 0, 0, 0, 16, 69, 100, 241, 213, 73, 64, 57, 39, 81, 40, 34,
-			47, 12, 37, 0, 0, 0, 0, 0, 9, 198, 60, 194, 83, 37, 69, 5, 72, 0, 6, 194, 20, 208, 17, 24, 0, 0, 0, 6, 195, 60,
-			193, 78, 72, 0, 0, 0, 0, 8, 197, 81, 83, 211, 80, 16, 76, 0, 0, 6, 195, 60, 193, 84, 72, 0, 0, 0, 0, 0, 0, 0,
-			5, 194, 20, 224, 72, 0, 6, 195, 61, 64, 64, 19, 20, 3, 95, 51, 88, 49, 6, 39, 55, 65, 36, 49, 114, 65, 65, 36, 50, 47,
-			109, 0, 0, 13, 3, 95, 48, 67, 89, 6, 35, 47, 35, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 89,
-			6, 35, 47, 35, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 146, 5, 19, 21, 3, 95, 49, 57, 6, 114, 107, 72, 36, 49, 89, 109,
-			50, 47, 4, 117, 89, 47, 35, 0, 0, 22, 3, 95, 49, 56, 49, 6, 35, 107, 72, 36, 49, 89, 35, 50, 47, 4, 117, 89, 47, 35,
-			0, 0, 0, 0, 0, 0, 0, 8, 197, 44, 146, 78, 56, 144, 19, 8, 197, 81, 83, 211, 76, 16, 76, 0, 16, 3, 95, 49, 49, 6,
-			114, 49, 89, 37, 47, 117, 89, 47, 35, 0, 0, 6, 195, 57, 83, 192, 76, 15, 3, 95, 49, 48, 49, 6, 114, 65, 65, 36, 50, 36,
-			50, 0, 0, 17, 3, 95, 49, 51, 49, 6, 39, 55, 65, 36, 47, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 50, 49, 6, 35, 49,
-			89, 37, 47, 117, 89, 47, 35, 0, 0, 15, 7, 11, 25, 195, 182, 19, 20, 9, 49, 132, 89, 47, 108, 0, 17, 3, 95, 49, 53, 84,
-			6, 37, 12, 89, 37, 47, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 52, 50, 6, 36, 55, 57, 109, 47, 117, 89, 47, 35, 0, 0,
-			21, 3, 95, 49, 55, 89, 6, 118, 47, 89, 36, 65, 109, 50, 47, 4, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 54, 49, 6, 40,
-			12, 89, 37, 47, 117, 89, 47, 35, 0, 0, 0, 10, 135, 20, 195, 164, 19, 19, 195, 164, 76, 24, 3, 95, 55, 88, 89, 6, 118, 47,
-			89, 36, 65, 109, 68, 49, 4, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 40, 245, 1, 76, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 50, 88, 49, 6, 35, 49, 89, 37, 49, 114, 65, 65,
-			36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 11, 136, 14, 195, 164, 9, 12, 12, 195, 164, 76, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-			3, 95, 63, 63, 65, 6, 36, 34, 49, 12, 108, 0, 0, 0, 0, 20, 3, 95, 52, 88, 50, 6, 36, 55, 57, 109, 49, 114, 65, 65,
-			36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 53, 88, 84, 6, 37, 12, 89, 37, 49, 114, 65, 65, 36, 50,
-			47, 109, 0, 0, 0, 8, 197, 40, 242, 76, 80, 16, 76, 0, 0, 0, 0, 0, 0, 20, 3, 95, 54, 88, 49, 6, 40, 12, 89, 37,
-			49, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 10, 135, 20, 195, 164, 8, 195, 164, 14, 76, 0, 0, 10, 135, 20,
-			195, 164, 12, 12, 195, 164, 76, 10, 135, 20, 195, 164, 19, 20, 195, 164, 76, 0, 7, 196, 61, 65, 84, 4, 19, 0, 0, 0, 0, 7,
-			196, 65, 81, 84, 4, 19, 0, 0, 10, 135, 14, 195, 164, 9, 12, 12, 5, 76, 0, 25, 3, 95, 56, 88, 49, 6, 35, 107, 72, 36,
-			49, 89, 35, 68, 49, 4, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 7, 132, 8, 195, 164, 14, 72, 0, 0, 0, 0, 5, 194,
-			52, 80, 72, 0, 24, 3, 95, 57, 88, 6, 114, 107, 72, 36, 49, 89, 109, 68, 49, 4, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0,
-			0, 0, 0, 0, 0, 6, 194, 45, 144, 17, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 14, 195, 164, 9, 19, 20, 195,
-			164, 76, 0, 7, 196, 81, 83, 12, 4, 19, 0, 0, 0, 0, 7, 196, 81, 83, 142, 20, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 5, 194, 56, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 61, 48, 17, 24, 0, 0, 6, 195, 40, 243, 129, 76, 17, 4,
-			95, 48, 77, 52, 71, 6, 37, 55, 57, 39, 12, 50, 35, 12, 0, 0, 0, 17, 4, 95, 48, 77, 50, 65, 6, 37, 55, 57, 39, 12,
-			50, 35, 12, 0, 0, 17, 4, 95, 48, 77, 51, 65, 6, 37, 55, 57, 35, 34, 72, 37, 35, 0, 0, 0, 15, 4, 95, 48, 77, 49,
-			47, 6, 40, 107, 35, 47, 12, 35, 0, 0, 13, 4, 95, 2, 18, 22, 71, 34, 6, 36, 84, 36, 0, 0, 0, 7, 196, 40, 242, 84,
-			4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 134, 14, 195, 164, 13, 195, 164, 76, 0, 0, 0, 0, 0, 6, 195, 4, 160, 64, 19, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 197, 48, 145, 78, 21, 64, 72, 0, 0, 9, 198, 48, 145, 78, 21, 69, 5, 72, 0, 6, 195, 40, 242, 193, 76, 0, 0,
-			0, 0, 0, 8, 197, 60, 193, 77, 52, 80, 72, 10, 135, 14, 195, 164, 9, 4, 5, 14, 76, 0, 0, 0, 0, 0, 21, 4, 95, 3,
-			9, 18, 89, 6, 37, 34, 49, 40, 65, 83, 55, 4, 36, 49, 89, 108, 0, 0, 0, 7, 196, 60, 194, 83, 36, 72, 0, 0, 9, 134,
-			13, 5, 14, 14, 195, 164, 19, 0, 0, 0, 0, 0, 9, 134, 20, 195, 164, 12, 12, 5, 76, 0, 0, 8, 197, 40, 242, 68, 20, 224,
-			76, 0, 0, 0, 0, 15, 4, 95, 1, 3, 21, 6, 35, 49, 40, 12, 47, 12, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 197, 48, 145, 78, 20, 80, 72, 0, 5, 194, 61, 144, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 196, 80, 84, 150, 20, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 66, 60, 176, 6, 39, 12, 10, 4, 49, 39, 12, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 64, 83, 1, 77, 66, 64, 48, 36, 55, 35, 89, 47, 108, 0, 0, 0, 7, 196, 40, 245,
-			11, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 65, 148, 212, 36, 48, 114, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 80, 72, 13, 2, 194, 164, 84, 35, 55, 40, 12, 47, 12, 35, 0, 0, 0, 0, 8, 197,
-			40, 242, 83, 76, 16, 76, 8, 197, 81, 83, 204, 48, 16, 76, 10, 2, 194, 163, 48, 40, 50, 47, 35, 0, 0, 0, 6, 195, 61, 96,
-			84, 72, 0, 0, 0, 9, 198, 60, 194, 83, 37, 96, 84, 72, 7, 2, 195, 164, 109, 12, 0, 0, 19, 2, 195, 165, 34, 6, 130, 47,
-			89, 35, 55, 115, 50, 36, 50, 6, 39, 12, 0, 0, 0, 0, 14, 2, 195, 160, 6, 35, 55, 35, 0, 24, 81, 108, 97, 32, 0, 0,
-			0, 0, 5, 194, 60, 224, 72, 9, 134, 20, 195, 164, 20, 195, 164, 76, 0, 6, 195, 4, 32, 192, 17, 0, 0, 0, 0, 0, 7, 196,
-			4, 161, 84, 4, 19, 7, 2, 195, 182, 111, 12, 0, 0, 0, 0, 0, 15, 4, 95, 3, 5, 4, 89, 6, 36, 72, 108, 55, 57, 108,
-			0, 0, 0, 17, 70, 100, 241, 200, 85, 37, 0, 57, 39, 81, 40, 34, 47, 12, 37, 0, 0, 13, 2, 197, 161, 107, 6, 35, 47, 12,
-			40, 109, 89, 0, 0, 7, 196, 88, 148, 139, 20, 19, 0, 0, 5, 194, 80, 80, 72, 0, 0, 7, 196, 56, 242, 78, 4, 76, 0, 0,
-			0, 7, 195, 88, 18, 64, 72, 8, 0, 6, 195, 65, 82, 5, 19, 0, 0, 0, 0, 6, 195, 81, 83, 5, 19, 0, 0, 0, 9, 198,
-			60, 194, 83, 36, 211, 69, 72, 0, 16, 2, 197, 190, 107, 6, 35, 47, 12, 40, 47, 89, 4, 36, 47, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 197, 48, 145, 78, 20, 224, 72, 0, 0, 17, 70, 64, 144, 78, 37, 53, 9, 48, 37, 35, 50, 37, 89, 47, 108, 0,
-			0, 0, 10, 135, 22, 195, 164, 8, 195, 164, 14, 76, 0, 0, 0, 6, 195, 5, 53, 5, 19, 0, 0, 0, 0, 7, 196, 40, 242, 78,
-			4, 76, 0, 8, 197, 60, 194, 84, 80, 80, 72, 8, 197, 81, 83, 204, 48, 80, 76, 0, 0, 0, 7, 196, 88, 148, 136, 20, 19, 0,
-			10, 135, 14, 195, 164, 9, 8, 9, 14, 76, 0, 9, 134, 5, 9, 22, 195, 164, 20, 72, 0, 0, 0, 12, 137, 12, 9, 5, 14, 5,
-			22, 195, 164, 20, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 65, 81, 64, 19, 0, 0, 0, 7,
-			132, 19, 25, 195, 182, 19, 0, 0, 0, 0, 0, 0, 7, 196, 48, 18, 84, 20, 19, 0, 16, 70, 88, 149, 76, 37, 53, 9, 84, 125,
-			55, 108, 89, 47, 108, 0, 0, 0, 6, 195, 4, 66, 4, 17, 9, 2, 95, 35, 34, 37, 89, 40, 0, 0, 10, 2, 95, 34, 55, 115,
-			50, 122, 89, 0, 0, 8, 197, 5, 85, 5, 80, 16, 19, 16, 2, 95, 33, 107, 40, 12, 47, 39, 65, 36, 34, 49, 12, 37, 0, 0,
-			0, 10, 2, 95, 39, 107, 118, 47, 12, 39, 0, 0, 13, 2, 95, 38, 36, 47, 65, 36, 34, 49, 12, 37, 0, 0, 14, 2, 95, 37,
-			48, 34, 39, 89, 36, 50, 47, 12, 37, 0, 0, 6, 195, 44, 243, 133, 19, 9, 198, 48, 145, 78, 56, 81, 84, 72, 13, 2, 95, 36,
-			72, 39, 55, 55, 35, 34, 37, 50, 0, 0, 0, 11, 4, 95, 3, 1, 16, 6, 37, 89, 39, 0, 0, 15, 2, 95, 41, 55, 39, 48,
-			12, 40, 89, 40, 55, 49, 40, 0, 0, 14, 2, 95, 40, 35, 55, 49, 40, 89, 40, 55, 49, 40, 0, 0, 7, 195, 20, 180, 128, 17,
-			24, 0, 10, 2, 95, 46, 48, 37, 89, 47, 36, 0, 0, 10, 2, 95, 45, 84, 37, 12, 84, 35, 0, 0, 0, 11, 2, 95, 51, 49,
-			6, 39, 55, 65, 36, 0, 0, 11, 2, 95, 50, 49, 6, 35, 49, 89, 37, 0, 0, 10, 2, 95, 49, 6, 114, 49, 89, 37, 0, 0,
-			11, 2, 95, 48, 50, 6, 39, 55, 55, 35, 0, 0, 14, 2, 95, 55, 89, 6, 118, 47, 89, 36, 65, 109, 50, 0, 0, 11, 2, 95,
-			54, 49, 6, 40, 12, 89, 37, 0, 0, 8, 197, 60, 194, 83, 37, 64, 72, 11, 2, 95, 53, 84, 6, 37, 12, 89, 37, 0, 0, 11,
-			2, 95, 52, 50, 6, 36, 55, 57, 109, 0, 0, 0, 16, 2, 95, 58, 49, 35, 49, 89, 117, 89, 48, 37, 89, 47, 36, 0, 0, 8,
-			197, 60, 195, 5, 21, 64, 72, 14, 2, 95, 57, 6, 114, 107, 72, 36, 49, 89, 109, 50, 0, 0, 15, 2, 95, 56, 49, 6, 35, 107,
-			72, 36, 49, 89, 35, 50, 0, 0, 18, 2, 95, 63, 49, 114, 89, 114, 65, 114, 89, 65, 36, 34, 49, 12, 108, 0, 0, 18, 2, 95,
-			62, 89, 6, 40, 12, 34, 36, 65, 48, 108, 49, 6, 120, 50, 0, 0, 0, 17, 2, 95, 60, 48, 6, 131, 50, 36, 65, 48, 108, 49,
-			6, 120, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 14, 195, 164, 9, 14, 195, 164, 76, 0, 0, 8, 133, 19, 9, 14,
-			195, 164, 72, 0, 0, 0, 0, 0, 0, 0, 7, 196, 65, 84, 138, 20, 19, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 91, 35, 55,
-			49, 40, 107, 35, 49, 35, 0, 0, 0, 0, 0, 13, 2, 95, 95, 35, 55, 35, 84, 37, 12, 84, 35, 0, 0, 0, 14, 2, 95, 93,
-			55, 39, 48, 12, 40, 107, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 70, 52, 20, 137, 4, 227, 133,
-			65, 35, 51, 108, 35, 50, 50, 36, 0, 0, 14, 4, 95, 7, 18, 22, 81, 34, 6, 35, 84, 108, 89, 0, 0, 0, 0, 0, 6, 195,
-			65, 84, 133, 19, 0, 0, 0, 0, 6, 195, 21, 69, 5, 72, 0, 0, 0, 0, 0, 13, 4, 95, 4, 9, 1, 6, 40, 65, 55, 122,
-			47, 0, 14, 2, 95, 123, 35, 55, 49, 40, 35, 12, 55, 47, 39, 0, 0, 0, 0, 0, 0, 0, 15, 2, 95, 125, 55, 39, 48, 12,
-			40, 35, 12, 55, 47, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 81, 83, 206, 76, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 35, 51, 50, 84, 109, 55, 37, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 40, 242,
-			83, 80, 16, 76, 0, 16, 70, 88, 20, 129, 77, 66, 64, 84, 35, 51, 35, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 195, 49, 83, 192, 19, 6, 195, 81, 83, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 44, 84, 212, 36, 49, 36, 89,
-			47, 108, 0, 12, 68, 44, 20, 212, 36, 49, 35, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197,
-			56, 242, 83, 76, 16, 76, 8, 197, 81, 83, 204, 80, 16, 76, 0, 16, 70, 65, 84, 137, 77, 66, 64, 48, 40, 51, 108, 89, 47, 108,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 48, 145, 78, 20, 72, 19, 8, 196, 53, 85, 20, 4, 76,
-			8, 11, 136, 14, 195, 164, 9, 12, 20, 195, 164, 76, 0, 8, 197, 60, 194, 83, 36, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			135, 20, 195, 164, 13, 195, 164, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 56, 242, 76, 48, 16, 76, 0,
-			0, 0, 0, 9, 133, 5, 14, 20, 195, 164, 72, 8, 0, 6, 195, 20, 211, 69, 72, 0, 0, 0, 0, 0, 10, 135, 19, 25, 195, 182,
-			4, 195, 164, 19, 0, 0, 9, 134, 14, 195, 164, 25, 20, 5, 19, 0, 0, 0, 0, 8, 197, 40, 242, 72, 36, 224, 76, 0, 6, 195,
-			5, 85, 1, 19, 0, 0, 0, 0, 0, 18, 71, 45, 83, 135, 25, 85, 19, 20, 49, 40, 68, 83, 40, 47, 89, 36, 0, 0, 0, 0,
-			16, 66, 100, 208, 114, 50, 50, 109, 10, 65, 40, 12, 47, 35, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 164,
-			0, 1, 10, 2, 108, 108, 97, 32, 3, 2, 109, 0, 3, 109, 0, 195, 164, 3, 109, 12, 0, 105, 105, 3, 109, 37, 12, 0, 121, 121,
-			3, 109, 114, 12, 0, 105, 3, 116, 0, 121, 3, 126, 0, 7, 6, 195, 182, 0, 3, 111, 0, 195, 182, 3, 111, 12, 0, 105, 105, 3,
-			111, 37, 12, 0, 121, 121, 3, 111, 114, 12, 0, 105, 3, 119, 0, 121, 3, 128, 0, 7, 6, 97, 0, 1, 10, 2, 108, 108, 97, 32,
-			3, 2, 35, 0, 3, 35, 0, 4, 8, 114, 116, 115, 117, 97, 2, 108, 3, 35, 12, 0, 97, 0, 105, 105, 3, 35, 37, 12, 0, 117,
-			117, 3, 35, 40, 12, 0, 105, 3, 115, 0, 117, 3, 122, 0, 7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12, 0, 7, 6, 99, 0,
-			4, 3, 49, 0, 104, 1, 25, 2, 114, 0, 99, 3, 49, 12, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2, 121, 0, 105, 116, 121,
-			3, 89, 37, 47, 37, 0, 7, 6, 100, 0, 3, 72, 0, 100, 3, 72, 12, 0, 7, 6, 101, 0, 4, 1, 10, 2, 108, 108, 97, 32,
-			3, 2, 36, 0, 1, 10, 2, 108, 108, 195, 164, 32, 0, 3, 36, 0, 101, 3, 36, 12, 0, 105, 105, 3, 36, 37, 12, 0, 117, 117,
-			3, 36, 40, 12, 0, 121, 121, 3, 36, 114, 12, 0, 105, 3, 118, 0, 117, 3, 124, 0, 121, 3, 127, 0, 7, 6, 102, 0, 3, 83,
-			0, 7, 6, 103, 0, 3, 81, 0, 103, 3, 81, 12, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 1, 10, 2, 108, 108, 97,
-			32, 3, 2, 37, 0, 3, 37, 0, 105, 3, 37, 12, 0, 101, 101, 3, 37, 36, 12, 0, 117, 117, 3, 37, 40, 12, 0, 121, 121, 3,
-			37, 114, 12, 0, 117, 3, 125, 0, 121, 3, 129, 0, 101, 3, 131, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0,
-			107, 3, 49, 12, 0, 7, 6, 108, 0, 3, 55, 0, 108, 101, 1, 21, 2, 32, 3, 55, 55, 36, 22, 0, 7, 6, 109, 0, 3, 65,
-			0, 8, 164, 195, 100, 121, 115, 2, 17, 65, 3, 65, 12, 0, 7, 6, 110, 0, 3, 50, 0, 110, 101, 1, 21, 2, 32, 3, 50, 50,
-			36, 22, 0, 4, 2, 32, 112, 3, 65, 0, 2, 112, 0, 4, 2, 32, 107, 3, 68, 0, 2, 107, 0, 103, 2, 25, 0, 103, 3, 68,
-			12, 0, 7, 6, 111, 0, 4, 3, 39, 0, 1, 98, 109, 121, 115, 2, 108, 111, 105, 0, 4, 1, 98, 109, 121, 115, 2, 108, 3, 39,
-			12, 0, 111, 0, 105, 105, 3, 39, 37, 12, 0, 117, 117, 3, 39, 40, 12, 0, 105, 3, 117, 0, 117, 3, 123, 0, 7, 6, 112, 0,
-			3, 48, 0, 4, 1, 109, 97, 104, 115, 2, 111, 3, 48, 12, 0, 1, 109, 97, 107, 2, 97, 110, 106, 0, 8, 97, 116, 111, 2, 97,
-			0, 8, 101, 108, 111, 2, 97, 0, 112, 0, 7, 6, 113, 0, 3, 49, 0, 113, 3, 49, 12, 0, 7, 6, 114, 0, 3, 34, 0, 7,
-			6, 115, 0, 3, 89, 0, 116, 105, 1, 17, 65, 2, 32, 3, 89, 47, 37, 22, 0, 4, 104, 1, 21, 2, 97, 110, 32, 3, 89, 107,
-			0, 104, 1, 21, 2, 195, 164, 110, 32, 0, 115, 3, 89, 133, 0, 4, 99, 104, 1, 25, 3, 91, 0, 104, 1, 25, 0, 7, 6, 116,
-			0, 3, 47, 0, 116, 3, 47, 12, 0, 122, 3, 47, 89, 0, 115, 101, 1, 21, 2, 32, 3, 47, 89, 36, 22, 0, 7, 6, 117, 0,
-			3, 40, 0, 117, 3, 40, 12, 0, 105, 105, 3, 40, 37, 12, 0, 111, 111, 3, 40, 39, 12, 0, 105, 3, 58, 37, 0, 4, 105, 8,
-			3, 120, 0, 105, 8, 106, 0, 111, 3, 130, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 120,
-			3, 49, 12, 89, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 114, 0, 121, 3, 114, 12, 0, 105, 105, 3, 114, 37, 12, 0, 195, 182,
-			195, 182, 3, 114, 111, 12, 0, 105, 3, 121, 0, 195, 182, 3, 132, 0, 7, 6, 122, 0, 4, 3, 47, 89, 0, 122, 0, 104, 1, 25,
-			3, 90, 0, 7, 6, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 165, 3,
-			39, 0, 195, 165, 195, 165, 3, 39, 12, 0, 45, 8, 32, 2, 32, 15, 3, 65, 37, 12, 50, 40, 89, 0, 36, 3, 72, 39, 55, 55,
-			35, 34, 37, 50, 0, 197, 190, 3, 90, 0, 197, 161, 3, 91, 0, 195, 188, 3, 114, 0, 195, 188, 195, 188, 3, 114, 12, 0, 7, 0,
-			0};
-		autoFileInMemory espeakdata_dicts18 = FileInMemory_createWithData (5130, reinterpret_cast<const char *> (&espeakdata_dicts18_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/fi_dict", 
+		static unsigned char espeakdata_dicts18_data[2218] = {
+			0, 4, 0, 0, 90, 7, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 72, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0,
+			0, 6, 65, 12, 88, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 12, 4, 95, 100, 112, 116, 10, 49, 39, 65,
+			35, 0, 0, 0, 0, 0, 0, 7, 65, 24, 36, 83, 36, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 7, 65,
+			32, 35, 76, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 65, 40, 101, 39, 47, 35, 0, 0, 0, 0, 0, 6, 65, 44, 49, 35,
+			0, 0, 0, 0, 0, 7, 65, 48, 36, 55, 36, 0, 0, 0, 0, 0, 7, 65, 52, 36, 65, 36, 0, 0, 0, 0, 0, 7, 65, 56,
+			36, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 40, 0, 0, 6,
+			195, 56, 18, 90, 72, 0, 0, 0, 7, 65, 72, 36, 52, 36, 0, 0, 0, 0, 0, 7, 65, 76, 36, 89, 36, 0, 0, 0, 0, 0,
+			6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65, 88, 40, 82, 36, 0, 0, 0, 0, 0, 15, 65, 92, 40, 82,
+			36, 15, 71, 37, 49, 39, 37, 125, 35, 0, 0, 0, 0, 0, 7, 65, 96, 37, 91, 35, 0, 0, 0, 0, 0, 12, 65, 100, 37, 15,
+			81, 34, 36, 49, 39, 35, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			5, 194, 16, 16, 72, 6, 195, 105, 81, 78, 76, 0, 0, 0, 0, 0, 6, 195, 105, 81, 75, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 104, 21, 68, 20, 72, 0, 0, 0, 0, 0, 6, 195, 32, 21, 64, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 224, 72, 0, 0,
+			0, 0, 0, 0, 0, 8, 197, 104, 20, 133, 80, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 29, 80, 76, 0, 0, 0, 0, 6, 195, 37, 160, 78, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 48, 107,
+			39, 100, 6, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 148, 129, 72, 6, 195, 104, 20, 129, 72, 0, 0, 0, 0, 6,
+			195, 8, 84, 133, 76, 0, 0, 0, 0, 6, 195, 32, 244, 137, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 14, 3, 95, 54, 48, 37, 34, 6, 40, 34, 39, 100, 118, 0, 0, 11, 3, 95, 48, 67, 52, 36, 4, 40, 50, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 10, 3, 95, 49, 67, 36, 6, 40, 50, 0, 0, 0, 0, 6, 195, 56, 148, 133, 76, 0, 0, 0, 14, 3, 95,
+			49, 57, 36, 65, 36, 34, 36, 125, 6, 37, 0, 0, 15, 3, 95, 49, 56, 36, 65, 36, 88, 39, 34, 47, 6, 37, 0, 0, 13, 3,
+			95, 50, 67, 71, 6, 36, 52, 36, 40, 50, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 49, 35, 65, 6, 117, 49, 35, 0, 0,
+			11, 3, 95, 49, 48, 35, 65, 6, 35, 52, 0, 0, 14, 3, 95, 49, 51, 35, 65, 35, 6, 37, 34, 4, 40, 0, 0, 12, 3, 95,
+			49, 50, 35, 65, 35, 82, 6, 37, 0, 0, 14, 3, 95, 49, 53, 35, 65, 35, 82, 6, 39, 89, 47, 0, 0, 12, 3, 95, 49, 52,
+			35, 65, 35, 55, 6, 114, 0, 0, 15, 3, 95, 49, 55, 35, 65, 35, 88, 35, 88, 48, 6, 37, 0, 0, 12, 3, 95, 49, 54, 35,
+			65, 35, 89, 6, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 28, 20, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			13, 3, 95, 52, 48, 71, 6, 36, 52, 39, 100, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 107, 39, 100, 6,
+			118, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 104, 21, 68, 21, 65, 64, 72, 0, 0, 0, 0, 0, 15,
+			3, 95, 52, 88, 71, 6, 36, 52, 39, 100, 118, 47, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 48, 55, 6, 114,
+			34, 39, 100, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 54, 88, 37, 34, 6, 40, 34, 39, 100, 118, 47, 124, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 88, 55, 6, 114, 34, 39, 100, 118, 47, 124, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 8, 84, 133, 56,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+			4, 95, 48, 77, 50, 65, 37, 61, 6, 37, 38, 120, 0, 0, 6, 195, 20, 19, 128, 72, 0, 0, 12, 4, 95, 48, 77, 49, 65, 37,
+			55, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 44, 240, 72, 5, 194,
+			56, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 17, 207, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 21, 32, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 195, 177, 36, 67, 36, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 16, 21, 84, 20, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 18, 69, 44, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 196, 32, 20, 133, 56, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 107, 37, 34, 6, 40, 0, 0, 8,
+			2, 95, 50, 71, 6, 37, 0, 0, 9, 2, 95, 49, 71, 6, 35, 47, 0, 0, 10, 2, 95, 48, 88, 36, 34, 6, 39, 0, 0, 11,
+			2, 95, 55, 88, 35, 88, 48, 6, 37, 0, 0, 8, 2, 95, 54, 89, 6, 118, 0, 0, 10, 2, 95, 53, 71, 6, 39, 89, 47, 0,
+			0, 6, 195, 20, 115, 206, 72, 8, 2, 95, 52, 55, 6, 114, 0, 0, 0, 0, 14, 2, 95, 57, 71, 36, 86, 6, 36, 34, 35, 125,
+			37, 0, 0, 11, 2, 95, 56, 88, 39, 34, 47, 6, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 97, 35, 0, 0,
+			0, 6, 195, 20, 179, 192, 72, 0, 0, 6, 2, 95, 101, 36, 0, 0, 0, 0, 0, 6, 2, 95, 105, 37, 0, 0, 0, 6, 2, 95,
+			111, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 33, 84, 129, 76, 6, 195, 33, 84, 129, 76, 0, 0, 6, 2, 95, 117, 40,
+			0, 0, 0, 6, 195, 105, 84, 133, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 95, 48, 97, 110, 100, 36, 47, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 21, 64, 64, 76, 8, 0, 0, 0, 0, 7, 196, 32, 18, 69,
+			56, 76, 0, 0, 0, 0, 6, 195, 29, 84, 133, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 105, 80, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 8, 18, 78, 4, 224, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 28, 21, 68, 20,
+			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 177, 0, 3, 67, 0, 7,
+			6, 97, 0, 3, 35, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 4, 2,
+			101, 3, 89, 0, 2, 105, 0, 7, 6, 100, 0, 3, 72, 0, 4, 1, 105, 25, 2, 17, 65, 3, 79, 0, 100, 0, 1, 17, 65, 2,
+			17, 65, 3, 86, 0, 7, 6, 101, 0, 3, 36, 0, 117, 3, 115, 0, 105, 3, 118, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103,
+			0, 3, 81, 0, 1, 17, 65, 2, 17, 65, 3, 100, 0, 7, 6, 104, 0, 3, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0,
+			3, 79, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 4, 1, 105, 25, 2, 17, 65, 3, 61, 0, 108, 0, 7,
+			6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 1, 105, 25, 2, 17, 65, 3, 67, 0, 7, 6, 111, 0, 3, 39, 0, 105,
+			3, 120, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 101, 2, 32, 0, 117, 3, 49, 58, 0, 7, 6,
+			114, 0, 3, 34, 0, 4, 2, 32, 3, 52, 0, 8, 0, 114, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 120,
+			3, 76, 0, 4, 1, 105, 25, 2, 17, 65, 3, 80, 0, 116, 0, 115, 3, 123, 0, 122, 3, 125, 0, 7, 6, 117, 0, 3, 40, 0,
+			7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 91, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3,
+			37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 167, 3, 89, 0, 195, 188, 3, 113, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts18 = FileInMemory_createWithData (2217, reinterpret_cast<const char *> (&espeakdata_dicts18_data), 
+			U"espeak-1.48.04-source/espeak-data/eu_dict", 
+			U"eu");
+		my addItem_move (espeakdata_dicts18.move());
+
+		static unsigned char espeakdata_dicts19_data[231858] = {
+			0, 4, 0, 0, 62, 185, 2, 0, 18, 70, 197, 20, 148, 28, 236, 0, 81, 39, 51, 88, 91, 108, 101, 35, 49, 0, 17, 70, 197, 19,
+			226, 56, 124, 0, 81, 35, 51, 72, 39, 101, 108, 49, 0, 13, 68, 182, 3, 199, 68, 48, 36, 50, 72, 108, 51, 0, 13, 68, 133, 76,
+			199, 68, 107, 39, 91, 57, 108, 51, 0, 13, 68, 128, 119, 226, 68, 50, 108, 65, 84, 35, 51, 0, 19, 70, 125, 19, 224, 126, 40, 0,
+			65, 39, 51, 72, 35, 50, 36, 65, 40, 50, 0, 13, 68, 124, 226, 135, 68, 65, 39, 101, 47, 108, 51, 0, 12, 68, 124, 119, 226, 68,
+			65, 35, 65, 40, 51, 0, 11, 67, 70, 44, 207, 51, 35, 84, 37, 72, 0, 11, 67, 62, 44, 207, 72, 35, 84, 37, 72, 0, 14, 68,
+			61, 177, 202, 68, 72, 35, 83, 108, 47, 36, 51, 0, 12, 68, 42, 39, 226, 68, 47, 40, 65, 39, 51, 0, 19, 70, 34, 3, 226, 33,
+			49, 215, 71, 35, 50, 72, 39, 71, 35, 89, 108, 47, 0, 17, 70, 32, 116, 145, 196, 120, 0, 71, 108, 88, 35, 51, 81, 108, 50, 0,
+			20, 71, 28, 226, 145, 111, 52, 179, 192, 35, 101, 47, 35, 51, 83, 37, 88, 37, 49, 0, 0, 14, 69, 139, 56, 15, 137, 32, 84, 37,
+			50, 72, 39, 88, 0, 12, 67, 132, 244, 202, 107, 36, 72, 89, 36, 47, 0, 13, 68, 126, 36, 243, 136, 65, 39, 89, 37, 57, 39, 0,
+			14, 68, 53, 244, 162, 204, 107, 35, 65, 88, 35, 84, 37, 0, 14, 68, 35, 53, 162, 204, 71, 36, 57, 88, 35, 84, 37, 0, 15, 68,
+			34, 3, 237, 204, 71, 35, 50, 72, 36, 48, 36, 57, 0, 15, 68, 33, 72, 34, 204, 71, 36, 91, 36, 50, 35, 84, 37, 0, 15, 69,
+			32, 120, 48, 74, 0, 71, 108, 50, 49, 88, 35, 50, 0, 12, 67, 9, 165, 10, 108, 104, 17, 36, 91, 47, 0, 0, 22, 71, 198, 2,
+			15, 192, 120, 162, 76, 81, 39, 50, 71, 35, 72, 36, 49, 108, 84, 40, 89, 0, 17, 70, 194, 2, 145, 32, 116, 192, 49, 39, 50, 47,
+			51, 71, 108, 89, 0, 17, 70, 182, 36, 89, 32, 116, 192, 48, 40, 51, 35, 71, 71, 108, 89, 0, 12, 67, 181, 37, 48, 48, 36, 88,
+			36, 91, 49, 0, 15, 69, 181, 22, 115, 29, 16, 48, 39, 51, 35, 57, 108, 51, 0, 15, 69, 129, 248, 143, 29, 16, 50, 36, 65, 40,
+			72, 108, 51, 0, 14, 68, 125, 145, 226, 60, 65, 39, 19, 108, 84, 36, 72, 0, 18, 70, 63, 50, 135, 35, 52, 192, 72, 36, 57, 47,
+			108, 71, 36, 57, 89, 0, 20, 71, 42, 20, 71, 130, 209, 209, 76, 47, 36, 107, 51, 108, 50, 48, 108, 51, 89, 0, 17, 70, 34, 33,
+			222, 134, 36, 192, 71, 39, 55, 107, 35, 84, 35, 89, 0, 15, 69, 30, 18, 176, 29, 16, 36, 107, 47, 36, 49, 108, 51, 0, 21, 71,
+			29, 251, 81, 29, 116, 115, 76, 36, 65, 48, 36, 51, 108, 47, 36, 51, 37, 89, 0, 15, 69, 29, 59, 115, 193, 16, 36, 89, 48, 37,
+			49, 36, 51, 0, 17, 70, 29, 18, 143, 139, 4, 192, 39, 51, 47, 39, 72, 39, 49, 89, 0, 14, 68, 28, 163, 71, 60, 36, 47, 47,
+			36, 107, 108, 72, 0, 0, 14, 68, 185, 19, 148, 40, 76, 35, 51, 101, 36, 91, 47, 0, 10, 67, 182, 2, 128, 48, 39, 50, 47, 0,
+			16, 69, 129, 252, 209, 139, 48, 50, 36, 65, 37, 51, 35, 84, 37, 0, 14, 68, 110, 20, 83, 40, 83, 36, 107, 51, 36, 89, 47, 0,
+			13, 68, 101, 241, 209, 40, 36, 65, 108, 51, 35, 47, 0, 14, 68, 77, 177, 209, 40, 89, 36, 83, 108, 51, 35, 47, 0, 8, 66, 70,
+			240, 51, 39, 90, 0, 15, 68, 69, 177, 220, 40, 51, 36, 83, 108, 104, 17, 35, 47, 0, 12, 67, 65, 226, 128, 88, 36, 55, 55, 35,
+			47, 0, 11, 67, 61, 226, 128, 72, 36, 55, 35, 47, 0, 10, 67, 57, 226, 128, 101, 36, 55, 47, 0, 15, 68, 53, 241, 220, 40, 107,
+			36, 65, 108, 104, 17, 35, 47, 0, 17, 70, 33, 17, 224, 199, 52, 128, 71, 35, 51, 35, 50, 81, 37, 88, 0, 17, 70, 33, 17, 219,
+			70, 36, 128, 71, 35, 51, 35, 83, 51, 40, 88, 0, 0, 11, 67, 137, 230, 64, 84, 35, 55, 35, 19, 0, 13, 68, 129, 23, 226, 192,
+			50, 35, 51, 65, 40, 49, 0, 14, 67, 125, 156, 207, 65, 39, 19, 35, 57, 57, 36, 72, 0, 17, 68, 124, 163, 81, 192, 65, 39, 47,
+			36, 107, 35, 51, 51, 36, 49, 0, 12, 67, 109, 52, 79, 83, 36, 89, 39, 51, 72, 0, 15, 69, 78, 12, 81, 136, 240, 89, 35, 50,
+			81, 51, 40, 72, 0, 17, 70, 29, 50, 159, 68, 116, 64, 36, 89, 47, 36, 65, 51, 108, 51, 0, 17, 70, 29, 50, 155, 76, 116, 64,
+			36, 89, 47, 36, 83, 89, 108, 51, 0, 0, 18, 70, 181, 20, 225, 31, 60, 192, 48, 36, 51, 36, 89, 107, 108, 37, 12, 0, 14, 67,
+			125, 236, 202, 65, 36, 55, 55, 37, 57, 35, 47, 0, 15, 69, 83, 52, 95, 76, 160, 91, 37, 51, 65, 35, 89, 47, 0, 11, 67, 78,
+			1, 202, 89, 39, 50, 108, 47, 0, 17, 69, 61, 28, 80, 80, 160, 72, 35, 51, 81, 39, 88, 35, 91, 47, 0, 18, 71, 49, 33, 179,
+			28, 164, 98, 204, 75, 39, 88, 19, 37, 57, 108, 47, 0, 16, 68, 41, 56, 179, 200, 47, 35, 89, 84, 37, 57, 36, 57, 36, 0, 14,
+			69, 29, 55, 199, 68, 160, 36, 89, 65, 108, 51, 47, 0, 0, 18, 70, 204, 116, 98, 204, 120, 145, 57, 108, 51, 39, 57, 108, 84, 35,
+			51, 0, 15, 69, 192, 118, 243, 206, 0, 49, 108, 83, 36, 37, 12, 50, 0, 17, 70, 182, 36, 95, 68, 115, 192, 48, 40, 51, 65, 39,
+			51, 108, 72, 0, 14, 68, 136, 140, 81, 60, 84, 36, 71, 81, 35, 51, 72, 0, 11, 67, 127, 8, 0, 65, 35, 49, 39, 50, 0, 14,
+			69, 126, 40, 159, 30, 0, 65, 40, 84, 65, 108, 50, 0, 13, 67, 113, 234, 240, 104, 17, 39, 55, 55, 35, 49, 0, 18, 70, 58, 35,
+			209, 139, 1, 209, 101, 39, 72, 51, 39, 84, 49, 108, 51, 0, 8, 66, 32, 160, 71, 39, 47, 0, 8, 66, 28, 160, 35, 47, 0, 76,
+			0, 18, 69, 193, 225, 226, 207, 32, 49, 36, 55, 108, 84, 37, 57, 36, 57, 36, 0, 14, 68, 137, 225, 243, 40, 84, 36, 55, 108, 57,
+			35, 47, 0, 15, 69, 122, 20, 71, 76, 128, 55, 39, 107, 51, 108, 89, 71, 0, 11, 67, 120, 200, 140, 55, 35, 75, 40, 75, 0, 13,
+			67, 113, 81, 200, 104, 17, 35, 89, 89, 108, 71, 0, 13, 68, 102, 1, 243, 40, 36, 50, 108, 57, 35, 47, 0, 13, 68, 100, 241, 226,
+			40, 36, 72, 108, 84, 35, 47, 0, 14, 68, 69, 67, 71, 40, 51, 35, 91, 35, 107, 108, 47, 0, 14, 68, 32, 196, 71, 40, 71, 36,
+			75, 39, 51, 35, 47, 0, 17, 70, 9, 232, 138, 70, 43, 115, 108, 55, 39, 47, 51, 39, 48, 37, 0, 9, 66, 40, 112, 47, 108, 12,
+			0, 76, 8, 66, 32, 112, 71, 108, 0, 76, 0, 14, 67, 125, 88, 136, 65, 39, 89, 35, 84, 84, 35, 71, 0, 11, 67, 124, 34, 0,
+			65, 35, 10, 108, 71, 0, 10, 67, 101, 104, 179, 39, 88, 84, 37, 0, 11, 67, 81, 177, 239, 91, 39, 83, 108, 90, 0, 12, 67, 69,
+			104, 179, 51, 35, 88, 35, 84, 37, 0, 12, 67, 33, 72, 179, 71, 36, 91, 35, 84, 37, 0, 12, 67, 29, 43, 115, 35, 88, 48, 36,
+			57, 36, 0, 10, 67, 29, 28, 200, 39, 51, 37, 71, 0, 9, 65, 112, 6, 104, 17, 108, 83, 0, 0, 15, 68, 194, 1, 243, 200, 49,
+			36, 50, 108, 57, 36, 57, 36, 0, 19, 69, 125, 196, 81, 28, 160, 65, 39, 104, 17, 35, 51, 51, 35, 51, 108, 47, 0, 15, 69, 125,
+			17, 217, 28, 160, 65, 39, 51, 108, 19, 108, 47, 0, 18, 69, 124, 166, 199, 136, 160, 65, 39, 47, 35, 6, 83, 108, 84, 36, 47, 0,
+			11, 67, 83, 1, 219, 91, 36, 49, 108, 83, 0, 16, 69, 61, 252, 17, 28, 160, 72, 36, 65, 39, 49, 51, 108, 47, 0, 14, 69, 29,
+			241, 209, 28, 160, 36, 65, 108, 51, 108, 47, 0, 0, 16, 70, 132, 116, 98, 29, 19, 192, 107, 108, 51, 84, 108, 51, 72, 0, 13, 68,
+			124, 164, 71, 188, 65, 36, 47, 51, 108, 90, 0, 11, 67, 113, 183, 128, 104, 17, 39, 83, 55, 0, 14, 68, 77, 20, 209, 204, 89, 35,
+			51, 89, 35, 51, 37, 0, 11, 67, 74, 23, 128, 88, 39, 107, 35, 55, 0, 14, 69, 62, 36, 72, 206, 0, 72, 40, 51, 71, 37, 50,
+			0, 11, 67, 62, 23, 128, 72, 39, 107, 39, 55, 0, 22, 72, 57, 19, 226, 56, 124, 20, 205, 16, 101, 39, 51, 72, 39, 101, 108, 49,
+			91, 37, 51, 0, 12, 67, 55, 49, 138, 107, 36, 57, 19, 35, 47, 0, 13, 68, 43, 56, 145, 204, 47, 36, 10, 39, 51, 37, 0, 11,
+			67, 42, 44, 202, 47, 40, 57, 35, 47, 0, 11, 67, 34, 23, 128, 71, 36, 107, 36, 55, 0, 14, 68, 33, 120, 145, 204, 71, 36, 6,
+			47, 39, 51, 37, 0, 11, 67, 29, 12, 202, 35, 88, 57, 35, 47, 0, 25, 73, 9, 28, 51, 138, 210, 145, 207, 4, 192, 108, 51, 49,
+			36, 39, 48, 36, 47, 36, 51, 37, 49, 89, 0, 0, 13, 67, 124, 220, 199, 65, 39, 107, 35, 57, 57, 108, 0, 12, 67, 109, 21, 135,
+			83, 35, 51, 88, 35, 50, 0, 13, 67, 106, 38, 135, 104, 17, 39, 12, 104, 17, 108, 0, 13, 67, 68, 251, 71, 51, 35, 72, 72, 36,
+			48, 108, 0, 11, 67, 41, 21, 7, 47, 39, 51, 91, 108, 0, 12, 67, 33, 230, 135, 71, 39, 55, 104, 17, 108, 0, 13, 68, 30, 39,
+			7, 108, 39, 12, 104, 17, 108, 83, 0, 10, 67, 29, 181, 7, 36, 83, 91, 108, 0, 11, 67, 29, 149, 135, 6, 35, 19, 88, 108, 0,
+			8, 66, 10, 0, 108, 50, 0, 76, 0, 13, 68, 129, 180, 115, 40, 50, 36, 83, 51, 37, 47, 0, 13, 67, 112, 161, 222, 104, 17, 35,
+			47, 47, 108, 55, 0, 15, 69, 33, 22, 209, 136, 128, 71, 35, 51, 83, 51, 40, 71, 0, 0, 11, 67, 194, 1, 223, 49, 39, 50, 108,
+			65, 0, 20, 70, 124, 244, 96, 204, 172, 128, 65, 39, 72, 36, 51, 50, 37, 47, 36, 57, 36, 0, 11, 67, 124, 241, 223, 65, 39, 72,
+			108, 65, 0, 11, 67, 124, 163, 192, 65, 36, 47, 39, 72, 0, 11, 67, 77, 28, 205, 89, 35, 51, 37, 107, 0, 11, 67, 75, 1, 223,
+			88, 39, 49, 108, 65, 0, 12, 68, 69, 145, 243, 28, 51, 39, 108, 57, 108, 0, 12, 67, 62, 33, 223, 72, 35, 6, 84, 108, 65, 0,
+			14, 68, 61, 28, 218, 28, 72, 35, 51, 37, 104, 17, 108, 0, 13, 68, 61, 17, 210, 28, 72, 36, 51, 108, 88, 108, 0, 13, 68, 56,
+			241, 243, 28, 101, 39, 72, 108, 57, 108, 0, 12, 67, 52, 193, 223, 107, 35, 75, 75, 108, 65, 0, 15, 68, 32, 246, 144, 28, 71, 35,
+			72, 104, 17, 35, 88, 108, 0, 13, 68, 32, 115, 115, 28, 71, 108, 107, 35, 57, 108, 0, 14, 68, 29, 194, 150, 28, 36, 104, 17, 47,
+			36, 88, 108, 0, 0, 15, 69, 181, 17, 210, 204, 160, 48, 108, 51, 108, 88, 37, 47, 0, 18, 69, 126, 39, 162, 204, 160, 65, 39, 12,
+			55, 35, 84, 37, 57, 35, 47, 0, 13, 68, 109, 24, 145, 136, 83, 39, 51, 40, 51, 39, 0, 14, 68, 108, 244, 71, 120, 83, 36, 72,
+			36, 51, 108, 55, 0, 15, 69, 102, 12, 8, 136, 160, 35, 50, 49, 35, 71, 40, 47, 0, 17, 69, 93, 245, 209, 29, 192, 47, 35, 65,
+			47, 35, 51, 108, 104, 17, 0, 13, 68, 79, 58, 199, 120, 89, 35, 57, 57, 108, 55, 0, 16, 69, 70, 20, 98, 30, 0, 51, 35, 107,
+			51, 39, 84, 108, 50, 0, 12, 68, 68, 120, 81, 136, 51, 108, 107, 51, 39, 0, 14, 69, 68, 119, 202, 206, 0, 51, 108, 65, 47, 37,
+			50, 0, 17, 69, 30, 39, 162, 204, 160, 39, 12, 55, 35, 84, 37, 57, 35, 47, 0, 0, 11, 67, 194, 12, 207, 49, 39, 50, 37, 72,
+			0, 15, 69, 193, 236, 224, 207, 0, 49, 36, 55, 37, 50, 37, 49, 0, 15, 68, 183, 54, 135, 124, 48, 36, 57, 6, 104, 17, 108, 65,
+			0, 18, 69, 181, 22, 162, 104, 112, 48, 39, 51, 104, 17, 39, 84, 104, 17, 108, 0, 13, 68, 134, 12, 71, 124, 107, 36, 50, 81, 108,
+			65, 0, 12, 67, 126, 5, 3, 65, 35, 50, 91, 35, 19, 0, 11, 67, 122, 28, 207, 55, 36, 107, 37, 72, 0, 10, 66, 88, 240, 88,
+			36, 72, 72, 36, 0, 8, 66, 80, 240, 91, 39, 72, 0, 11, 67, 77, 28, 207, 89, 39, 51, 37, 72, 0, 11, 67, 61, 228, 64, 72,
+			36, 55, 36, 51, 0, 12, 67, 57, 228, 64, 101, 39, 55, 55, 35, 51, 0, 13, 68, 55, 10, 199, 124, 107, 39, 49, 49, 108, 65, 0,
+			16, 69, 55, 7, 209, 136, 112, 107, 39, 49, 65, 51, 35, 84, 108, 0, 0, 13, 68, 197, 28, 71, 128, 81, 39, 51, 81, 108, 50, 0,
+			15, 69, 192, 120, 49, 70, 32, 49, 108, 50, 81, 39, 51, 39, 0, 13, 68, 182, 2, 135, 128, 48, 36, 50, 47, 108, 50, 0, 13, 68,
+			181, 50, 135, 128, 48, 36, 89, 47, 108, 50, 0, 16, 70, 132, 124, 222, 31, 50, 128, 107, 108, 57, 55, 108, 57, 47, 0, 11, 67, 126,
+			37, 94, 65, 40, 89, 36, 55, 0, 13, 68, 125, 116, 71, 128, 65, 36, 47, 51, 108, 50, 0, 24, 72, 32, 212, 71, 121, 184, 135, 204,
+			240, 71, 35, 107, 51, 39, 55, 83, 35, 84, 108, 57, 36, 72, 0, 14, 69, 31, 56, 13, 29, 224, 19, 37, 50, 107, 108, 55, 0, 13,
+			69, 31, 51, 217, 29, 224, 37, 72, 36, 108, 55, 0, 0, 13, 68, 197, 228, 98, 60, 81, 39, 55, 51, 40, 72, 0, 11, 67, 132, 117,
+			31, 107, 108, 91, 36, 65, 0, 12, 67, 124, 196, 95, 65, 39, 75, 51, 36, 65, 0, 10, 67, 111, 55, 159, 83, 37, 55, 65, 0, 18,
+			70, 78, 43, 81, 130, 33, 192, 89, 40, 48, 36, 51, 50, 39, 84, 108, 0, 16, 69, 68, 164, 79, 29, 240, 51, 39, 47, 36, 51, 72,
+			108, 65, 0, 18, 70, 42, 3, 210, 32, 120, 0, 47, 39, 50, 72, 88, 35, 71, 108, 50, 0, 15, 69, 29, 35, 205, 29, 240, 36, 88,
+			72, 36, 107, 108, 65, 0, 12, 68, 10, 215, 162, 60, 108, 48, 55, 39, 72, 0, 0, 17, 70, 199, 60, 71, 32, 124, 202, 81, 37, 81,
+			108, 71, 108, 57, 47, 0, 12, 67, 197, 226, 32, 81, 39, 55, 71, 39, 50, 0, 10, 67, 194, 12, 192, 49, 39, 50, 37, 0, 21, 70,
+			181, 21, 223, 93, 17, 220, 48, 39, 51, 47, 35, 65, 47, 35, 51, 108, 104, 17, 0, 10, 67, 134, 36, 96, 107, 39, 51, 50, 0, 11,
+			67, 126, 37, 224, 65, 40, 47, 36, 50, 0, 11, 67, 122, 12, 224, 55, 36, 50, 37, 50, 0, 11, 67, 78, 12, 224, 89, 36, 50, 37,
+			50, 0, 13, 67, 54, 12, 224, 107, 39, 50, 35, 57, 108, 50, 0, 11, 67, 50, 12, 224, 75, 36, 50, 37, 50, 0, 20, 71, 30, 3,
+			199, 75, 28, 209, 204, 35, 50, 72, 108, 88, 36, 81, 37, 51, 37, 0, 0, 15, 69, 197, 225, 222, 136, 240, 81, 36, 55, 108, 55, 40,
+			72, 0, 21, 71, 192, 119, 136, 61, 76, 7, 108, 49, 108, 55, 71, 39, 72, 91, 36, 49, 108, 83, 0, 14, 68, 181, 232, 34, 124, 48,
+			36, 55, 36, 50, 39, 65, 0, 12, 67, 134, 44, 225, 107, 39, 84, 37, 57, 36, 0, 15, 69, 127, 56, 146, 204, 240, 65, 37, 84, 35,
+			88, 37, 72, 0, 17, 68, 124, 163, 19, 124, 65, 39, 47, 36, 75, 35, 89, 89, 36, 65, 0, 15, 69, 122, 12, 81, 136, 240, 55, 35,
+			50, 81, 51, 40, 72, 0, 14, 68, 82, 8, 179, 124, 91, 36, 50, 35, 84, 37, 65, 0, 12, 67, 80, 124, 207, 6, 91, 108, 57, 35,
+			72, 0, 14, 68, 77, 28, 81, 124, 89, 35, 51, 81, 35, 51, 65, 0, 12, 67, 76, 164, 97, 89, 39, 47, 51, 35, 107, 0, 13, 68,
+			71, 2, 162, 124, 51, 36, 49, 47, 39, 65, 0, 17, 70, 70, 34, 145, 60, 119, 192, 51, 39, 47, 36, 51, 72, 108, 65, 0, 14, 69,
+			60, 120, 30, 136, 240, 72, 108, 50, 55, 39, 72, 0, 14, 69, 58, 37, 32, 136, 240, 101, 39, 91, 50, 40, 72, 0, 13, 68, 43, 55,
+			226, 68, 47, 36, 57, 65, 40, 51, 0, 14, 69, 42, 3, 162, 30, 16, 47, 35, 50, 101, 108, 107, 0, 14, 68, 40, 225, 213, 124, 47,
+			35, 101, 108, 89, 39, 65, 0, 11, 67, 33, 156, 207, 71, 35, 19, 37, 72, 0, 12, 67, 32, 229, 15, 71, 35, 101, 91, 35, 72, 0,
+			13, 68, 10, 5, 226, 68, 108, 50, 47, 39, 12, 51, 0, 14, 69, 9, 227, 243, 204, 240, 108, 55, 72, 36, 37, 72, 0, 13, 68, 8,
+			140, 81, 124, 108, 71, 81, 35, 51, 65, 0, 0, 11, 67, 206, 28, 243, 57, 35, 107, 57, 108, 0, 10, 67, 199, 50, 179, 81, 37, 47,
+			37, 0, 15, 69, 197, 232, 136, 137, 224, 81, 40, 55, 39, 71, 40, 55, 0, 12, 67, 193, 24, 179, 49, 39, 51, 35, 84, 37, 0, 19,
+			70, 186, 17, 209, 124, 209, 222, 76, 108, 107, 108, 51, 65, 35, 107, 108, 55, 0, 22, 75, 181, 22, 211, 137, 18, 158, 139, 52, 179, 138,
+			0, 48, 39, 51, 83, 39, 89, 39, 51, 0, 14, 68, 139, 55, 162, 128, 84, 37, 57, 39, 55, 39, 50, 0, 15, 68, 129, 50, 145, 128,
+			50, 35, 89, 47, 35, 51, 35, 50, 0, 13, 68, 125, 248, 34, 128, 65, 35, 65, 50, 40, 50, 0, 12, 67, 121, 162, 128, 55, 39, 104,
+			17, 35, 47, 0, 14, 68, 113, 18, 34, 128, 104, 17, 39, 51, 71, 40, 50, 0, 12, 68, 110, 34, 162, 128, 83, 39, 47, 39, 50, 0,
+			14, 68, 105, 40, 51, 128, 104, 17, 35, 88, 50, 37, 50, 0, 11, 67, 81, 235, 64, 91, 36, 55, 36, 48, 0, 15, 69, 48, 132, 115,
+			205, 224, 75, 36, 71, 51, 36, 37, 55, 0, 14, 69, 43, 52, 115, 33, 224, 47, 37, 51, 37, 71, 55, 0, 11, 67, 41, 235, 64, 47,
+			36, 55, 36, 48, 0, 18, 70, 41, 23, 226, 194, 34, 30, 47, 36, 51, 65, 39, 49, 40, 71, 55, 0, 13, 68, 33, 28, 226, 128, 71,
+			36, 51, 57, 40, 50, 0, 13, 68, 30, 2, 145, 128, 35, 50, 47, 36, 51, 50, 0, 13, 68, 29, 244, 98, 72, 36, 65, 6, 51, 40,
+			88, 0, 13, 68, 29, 180, 98, 72, 19, 35, 83, 51, 40, 88, 0, 12, 68, 10, 11, 243, 128, 108, 50, 90, 37, 50, 0, 9, 67, 9,
+			235, 64, 108, 55, 48, 0, 13, 4, 95, 100, 112, 116, 50, 39, 104, 47, 36, 12, 0, 0, 10, 67, 194, 37, 48, 49, 40, 91, 49, 0,
+			16, 69, 193, 236, 10, 137, 16, 49, 39, 55, 36, 49, 47, 39, 51, 0, 14, 68, 185, 235, 158, 132, 76, 36, 55, 76, 36, 55, 36, 0,
+			13, 68, 182, 36, 84, 132, 48, 39, 51, 91, 36, 12, 0, 10, 67, 182, 5, 192, 48, 39, 50, 47, 0, 17, 70, 181, 19, 199, 75, 51,
+			192, 48, 35, 51, 72, 108, 88, 37, 72, 0, 13, 68, 181, 17, 243, 60, 48, 36, 51, 108, 57, 72, 0, 14, 68, 137, 24, 51, 132, 84,
+			36, 51, 50, 37, 57, 36, 0, 14, 69, 131, 50, 145, 137, 16, 50, 37, 47, 51, 40, 51, 0, 14, 68, 128, 129, 212, 60, 50, 35, 71,
+			108, 91, 35, 72, 0, 17, 70, 125, 24, 135, 71, 51, 192, 65, 39, 51, 84, 108, 51, 37, 72, 0, 17, 70, 109, 232, 145, 31, 51, 192,
+			83, 36, 55, 39, 51, 108, 57, 72, 0, 14, 68, 109, 24, 148, 60, 83, 39, 51, 40, 91, 35, 72, 0, 16, 68, 85, 184, 179, 132, 89,
+			35, 83, 35, 84, 37, 57, 36, 12, 0, 13, 68, 76, 161, 209, 132, 89, 36, 47, 108, 51, 36, 0, 10, 67, 74, 1, 192, 88, 36, 50,
+			108, 0, 22, 72, 68, 123, 115, 62, 44, 81, 29, 176, 51, 108, 48, 37, 72, 39, 81, 36, 51, 108, 83, 0, 15, 68, 63, 7, 145, 132,
+			72, 36, 49, 39, 55, 39, 51, 36, 0, 15, 68, 61, 232, 81, 132, 72, 36, 55, 107, 39, 51, 36, 12, 0, 14, 68, 61, 44, 209, 132,
+			72, 36, 88, 37, 51, 36, 12, 0, 13, 68, 53, 140, 209, 132, 107, 35, 88, 37, 51, 36, 0, 11, 67, 42, 37, 48, 47, 40, 91, 35,
+			49, 0, 12, 68, 35, 51, 162, 60, 71, 37, 101, 39, 72, 0, 10, 67, 34, 1, 192, 71, 35, 50, 108, 0, 12, 68, 31, 52, 226, 76,
+			36, 57, 89, 40, 89, 0, 17, 70, 9, 55, 243, 120, 120, 0, 108, 89, 36, 65, 37, 55, 108, 50, 0, 22, 5, 217, 135, 46, 216, 180,
+			107, 36, 75, 51, 37, 57, 36, 9, 91, 35, 65, 89, 37, 0, 46, 0, 10, 67, 198, 37, 10, 81, 40, 91, 47, 0, 16, 69, 192, 116,
+			237, 206, 0, 49, 108, 89, 48, 37, 57, 35, 50, 0, 14, 68, 126, 19, 226, 204, 65, 35, 107, 72, 35, 84, 37, 0, 15, 67, 125, 148,
+			92, 65, 39, 19, 35, 51, 51, 35, 104, 17, 0, 11, 67, 125, 40, 0, 65, 35, 88, 35, 50, 0, 19, 70, 109, 225, 226, 68, 193, 224,
+			83, 35, 55, 108, 84, 35, 51, 75, 108, 50, 0, 13, 67, 101, 236, 202, 36, 55, 55, 37, 57, 35, 47, 0, 10, 67, 101, 232, 0, 35,
+			55, 35, 50, 0, 20, 70, 84, 115, 72, 113, 17, 224, 89, 108, 107, 36, 71, 104, 17, 35, 51, 108, 50, 0, 11, 67, 43, 56, 173, 47,
+			40, 57, 40, 48, 0, 18, 70, 34, 3, 237, 31, 49, 224, 71, 35, 50, 72, 48, 108, 57, 108, 50, 0, 16, 70, 32, 116, 179, 198, 37,
+			0, 71, 108, 88, 37, 81, 40, 91, 0, 10, 67, 31, 12, 237, 36, 49, 37, 48, 0, 20, 71, 29, 236, 19, 30, 3, 209, 136, 35, 55,
+			36, 49, 89, 108, 50, 72, 51, 39, 0, 12, 68, 29, 60, 7, 204, 36, 89, 49, 108, 57, 0, 14, 69, 10, 216, 158, 138, 0, 108, 48,
+			39, 55, 39, 50, 0, 0, 16, 69, 197, 22, 209, 136, 240, 81, 36, 51, 83, 39, 51, 40, 72, 0, 16, 69, 181, 19, 199, 72, 240, 48,
+			35, 51, 72, 108, 88, 35, 72, 0, 16, 70, 127, 51, 199, 131, 55, 192, 65, 37, 72, 108, 50, 37, 65, 0, 22, 70, 120, 124, 202, 107,
+			52, 64, 55, 108, 57, 35, 47, 35, 104, 17, 35, 57, 57, 39, 51, 0, 13, 68, 81, 23, 162, 192, 91, 36, 51, 55, 40, 49, 0, 11,
+			67, 69, 198, 64, 51, 39, 104, 17, 19, 0, 16, 69, 61, 241, 240, 70, 16, 72, 35, 65, 108, 49, 39, 51, 36, 0, 18, 70, 56, 120,
+			145, 62, 36, 64, 101, 108, 84, 35, 51, 36, 72, 40, 51, 0, 14, 69, 40, 114, 162, 70, 16, 47, 108, 47, 40, 51, 36, 0, 13, 68,
+			35, 52, 243, 192, 71, 36, 57, 89, 37, 49, 0, 19, 70, 35, 49, 210, 124, 124, 207, 71, 37, 57, 108, 88, 65, 108, 57, 35, 72, 0,
+			17, 70, 10, 209, 209, 40, 124, 207, 108, 48, 108, 51, 47, 108, 57, 72, 0, 0, 12, 67, 207, 12, 212, 6, 57, 36, 49, 37, 91, 0,
+			11, 67, 198, 44, 212, 81, 40, 57, 36, 91, 0, 11, 67, 194, 37, 20, 49, 40, 91, 36, 91, 0, 20, 71, 184, 116, 66, 33, 69, 7,
+			128, 76, 108, 51, 108, 71, 91, 39, 91, 108, 50, 0, 14, 69, 127, 60, 17, 136, 128, 65, 37, 49, 51, 39, 71, 0, 14, 68, 125, 149,
+			34, 112, 65, 35, 19, 91, 40, 104, 17, 0, 24, 71, 80, 164, 95, 69, 172, 7, 128, 91, 39, 47, 39, 51, 65, 39, 51, 104, 17, 35,
+			49, 108, 50, 0, 14, 68, 69, 97, 243, 40, 51, 36, 88, 108, 57, 35, 47, 0, 18, 70, 63, 4, 202, 70, 36, 128, 72, 36, 49, 89,
+			47, 36, 51, 39, 88, 0, 11, 67, 50, 37, 20, 75, 40, 91, 36, 91, 0, 8, 66, 50, 32, 75, 35, 84, 0, 11, 67, 33, 165, 128,
+			71, 39, 104, 17, 88, 0, 10, 67, 30, 8, 148, 35, 50, 40, 91, 0, 0, 12, 67, 193, 236, 240, 49, 37, 6, 55, 37, 49, 0, 18,
+			70, 193, 225, 226, 207, 8, 145, 49, 36, 55, 108, 84, 37, 49, 39, 51, 0, 15, 68, 131, 56, 34, 28, 50, 36, 57, 108, 50, 35, 84,
+			108, 0, 19, 71, 130, 44, 30, 206, 34, 179, 60, 50, 40, 49, 55, 36, 39, 47, 37, 72, 0, 12, 68, 128, 120, 34, 28, 50, 108, 50,
+			84, 108, 0, 10, 67, 126, 35, 0, 65, 39, 12, 75, 0, 11, 67, 125, 145, 219, 65, 39, 19, 108, 83, 0, 22, 71, 52, 196, 71, 120,
+			116, 226, 60, 107, 35, 75, 35, 51, 39, 55, 35, 89, 84, 35, 72, 0, 17, 70, 43, 52, 71, 111, 8, 0, 47, 37, 51, 35, 83, 49,
+			35, 50, 0, 19, 70, 32, 232, 145, 32, 232, 145, 71, 39, 101, 39, 51, 71, 39, 101, 39, 51, 0, 16, 70, 29, 50, 135, 42, 36, 192,
+			36, 89, 47, 108, 47, 40, 89, 0, 17, 70, 9, 236, 98, 71, 52, 223, 108, 55, 81, 39, 51, 37, 89, 65, 0, 0, 15, 69, 190, 8,
+			138, 206, 208, 90, 36, 50, 39, 47, 37, 48, 0, 13, 67, 137, 17, 220, 84, 35, 51, 51, 108, 104, 17, 0, 14, 68, 129, 241, 243, 80,
+			50, 35, 65, 108, 57, 36, 91, 0, 14, 68, 125, 66, 145, 204, 65, 39, 91, 47, 35, 51, 37, 0, 12, 67, 113, 72, 128, 104, 17, 35,
+			91, 39, 12, 0, 15, 69, 83, 52, 78, 80, 160, 91, 37, 51, 101, 36, 91, 47, 0, 17, 70, 83, 8, 155, 31, 60, 192, 91, 39, 49,
+			40, 83, 108, 37, 12, 0, 16, 69, 63, 52, 98, 112, 160, 72, 37, 51, 84, 35, 104, 17, 47, 0, 14, 68, 33, 17, 243, 80, 71, 35,
+			51, 108, 57, 35, 91, 0, 14, 67, 33, 17, 220, 71, 35, 6, 51, 51, 108, 104, 17, 0, 15, 69, 32, 116, 177, 80, 160, 71, 108, 88,
+			81, 35, 91, 47, 0, 14, 69, 30, 2, 7, 80, 160, 35, 50, 71, 108, 91, 47, 0, 13, 68, 9, 49, 243, 80, 108, 89, 108, 57, 36,
+			91, 0, 13, 68, 9, 17, 243, 80, 108, 51, 108, 57, 36, 91, 0, 0, 14, 68, 207, 1, 243, 192, 57, 36, 49, 108, 57, 36, 49, 0,
+			15, 69, 197, 28, 210, 180, 112, 81, 39, 51, 37, 88, 48, 108, 0, 11, 67, 131, 5, 0, 50, 35, 49, 36, 91, 0, 19, 71, 127, 50,
+			145, 31, 60, 211, 124, 65, 37, 47, 51, 108, 37, 12, 89, 65, 0, 22, 70, 124, 215, 207, 77, 156, 207, 65, 39, 107, 35, 65, 65, 35,
+			72, 89, 35, 19, 37, 72, 0, 12, 68, 122, 43, 243, 192, 55, 39, 90, 37, 49, 0, 20, 71, 40, 116, 98, 42, 2, 34, 68, 47, 108,
+			51, 39, 47, 35, 65, 71, 40, 51, 0, 13, 68, 33, 235, 243, 192, 71, 36, 55, 90, 37, 49, 0, 12, 68, 29, 52, 71, 108, 36, 89,
+			51, 108, 83, 0, 17, 70, 29, 50, 145, 120, 114, 0, 39, 89, 47, 39, 51, 55, 108, 71, 0, 14, 68, 28, 165, 71, 108, 36, 47, 47,
+			36, 89, 108, 83, 0, 29, 3, 58, 45, 40, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 104, 17, 35, 65, 81,
+			37, 50, 0, 46, 0, 15, 69, 195, 49, 224, 137, 64, 49, 37, 57, 108, 50, 40, 91, 0, 15, 69, 183, 52, 71, 205, 64, 48, 37, 51,
+			108, 57, 36, 91, 0, 15, 69, 135, 52, 202, 71, 48, 107, 37, 89, 47, 36, 51, 37, 0, 11, 67, 41, 177, 222, 47, 39, 83, 108, 55,
+			0, 11, 67, 41, 28, 226, 47, 51, 37, 57, 39, 0, 16, 69, 32, 229, 7, 205, 64, 71, 35, 101, 91, 108, 57, 36, 91, 0, 13, 68,
+			30, 36, 71, 112, 39, 12, 51, 108, 104, 17, 0, 15, 69, 29, 196, 135, 205, 64, 35, 83, 88, 108, 57, 36, 91, 0, 14, 68, 29, 164,
+			71, 112, 36, 104, 17, 51, 108, 104, 17, 0, 13, 68, 29, 68, 71, 112, 36, 91, 51, 108, 104, 17, 0, 11, 67, 9, 28, 226, 108, 51,
+			37, 57, 39, 0, 0, 12, 67, 197, 235, 81, 81, 39, 55, 48, 35, 51, 0, 11, 67, 187, 52, 17, 76, 37, 88, 35, 51, 0, 17, 70,
+			125, 177, 217, 205, 232, 0, 65, 35, 83, 108, 37, 55, 39, 50, 0, 12, 67, 107, 56, 145, 104, 17, 35, 57, 40, 51, 0, 11, 67, 101,
+			247, 0, 39, 12, 65, 104, 17, 0, 11, 67, 84, 241, 223, 89, 36, 72, 108, 65, 0, 12, 67, 81, 21, 17, 91, 36, 51, 91, 36, 51,
+			0, 11, 67, 75, 56, 145, 88, 37, 84, 35, 51, 0, 12, 67, 73, 20, 145, 88, 36, 51, 88, 36, 51, 0, 15, 69, 70, 39, 141, 29,
+			176, 51, 40, 55, 35, 107, 108, 83, 0, 11, 67, 43, 52, 145, 47, 37, 88, 36, 51, 0, 14, 67, 40, 236, 209, 47, 35, 101, 35, 57,
+			57, 39, 51, 0, 11, 67, 33, 76, 209, 71, 35, 91, 37, 51, 0, 10, 67, 29, 248, 145, 39, 65, 40, 51, 0, 0, 11, 67, 205, 65,
+			224, 57, 36, 91, 108, 50, 0, 11, 67, 193, 65, 224, 49, 36, 91, 108, 50, 0, 11, 67, 129, 72, 146, 50, 39, 91, 40, 88, 0, 11,
+			67, 129, 65, 224, 50, 36, 91, 108, 50, 0, 12, 68, 70, 44, 199, 120, 51, 39, 57, 108, 55, 0, 14, 68, 50, 4, 71, 120, 75, 36,
+			50, 36, 51, 108, 55, 0, 16, 69, 35, 54, 209, 137, 160, 71, 37, 83, 40, 51, 40, 104, 17, 0, 11, 68, 30, 36, 71, 120, 39, 51,
+			108, 55, 0, 12, 68, 30, 4, 135, 120, 36, 50, 88, 108, 55, 0, 13, 68, 29, 194, 7, 120, 36, 104, 17, 71, 108, 55, 0, 12, 68,
+			29, 50, 179, 136, 36, 89, 47, 37, 84, 0, 10, 67, 126, 40, 0, 65, 40, 50, 0, 76, 0, 11, 67, 197, 28, 211, 81, 37, 51, 37,
+			89, 0, 11, 67, 197, 24, 147, 81, 35, 51, 40, 89, 0, 16, 69, 194, 212, 96, 207, 0, 49, 39, 48, 36, 51, 50, 37, 49, 0, 13,
+			67, 112, 252, 211, 104, 17, 36, 72, 72, 37, 89, 0, 11, 67, 76, 136, 147, 89, 35, 71, 40, 89, 0, 14, 68, 48, 120, 34, 68, 75,
+			108, 50, 36, 84, 35, 51, 0, 13, 68, 40, 115, 34, 68, 47, 108, 75, 84, 35, 51, 0, 14, 68, 33, 225, 208, 68, 71, 35, 55, 108,
+			88, 39, 51, 0, 13, 68, 33, 53, 199, 124, 71, 35, 89, 47, 108, 65, 0, 14, 68, 32, 243, 34, 68, 71, 35, 72, 72, 91, 40, 51,
+			0, 12, 68, 31, 58, 199, 124, 35, 57, 57, 108, 65, 0, 12, 68, 31, 4, 71, 124, 36, 49, 51, 108, 65, 0, 11, 67, 30, 44, 211,
+			39, 84, 36, 57, 89, 0, 12, 68, 30, 38, 162, 68, 39, 104, 17, 39, 51, 0, 12, 68, 29, 228, 135, 124, 36, 55, 88, 108, 65, 0,
+			18, 70, 29, 50, 139, 128, 124, 199, 36, 89, 47, 36, 89, 50, 108, 35, 50, 0, 8, 66, 30, 0, 36, 50, 0, 46, 0, 15, 68, 185,
+			232, 173, 72, 76, 36, 55, 39, 84, 48, 35, 88, 0, 13, 68, 129, 56, 135, 128, 50, 36, 89, 84, 108, 50, 0, 17, 70, 127, 60, 17,
+			137, 188, 212, 65, 37, 49, 51, 39, 83, 37, 91, 0, 14, 68, 115, 53, 199, 128, 104, 17, 36, 57, 47, 108, 50, 0, 14, 68, 93, 172,
+			199, 128, 47, 39, 104, 17, 57, 108, 50, 0, 13, 68, 83, 53, 199, 128, 91, 36, 57, 47, 108, 50, 0, 13, 68, 78, 3, 199, 128, 89,
+			36, 50, 72, 108, 50, 0, 13, 68, 77, 229, 199, 128, 89, 39, 55, 47, 108, 50, 0, 13, 68, 63, 10, 199, 128, 72, 39, 49, 49, 35,
+			50, 0, 12, 68, 50, 44, 199, 128, 57, 40, 57, 108, 50, 0, 14, 68, 49, 28, 199, 128, 75, 35, 51, 37, 57, 108, 50, 0, 13, 68,
+			42, 12, 98, 72, 47, 40, 50, 81, 40, 88, 0, 13, 68, 40, 140, 199, 128, 47, 36, 71, 57, 108, 50, 0, 12, 68, 29, 156, 199, 128,
+			35, 19, 57, 108, 50, 0, 12, 68, 29, 28, 71, 128, 39, 51, 81, 108, 50, 0, 14, 68, 8, 196, 109, 72, 108, 75, 39, 51, 48, 35,
+			88, 0, 0, 11, 67, 204, 120, 145, 57, 108, 84, 35, 51, 0, 11, 67, 194, 4, 192, 49, 36, 50, 36, 89, 0, 18, 70, 188, 104, 155,
+			205, 44, 240, 90, 36, 19, 39, 83, 37, 88, 37, 49, 0, 18, 70, 182, 8, 159, 139, 8, 176, 48, 36, 50, 39, 65, 39, 49, 39, 49,
+			0, 13, 68, 138, 12, 98, 196, 84, 35, 50, 81, 39, 81, 0, 16, 69, 133, 28, 15, 29, 240, 107, 35, 51, 49, 39, 72, 108, 65, 0,
+			15, 69, 129, 65, 207, 137, 16, 50, 36, 91, 108, 72, 39, 51, 0, 11, 67, 125, 60, 209, 65, 35, 89, 37, 51, 0, 11, 67, 125, 51,
+			0, 65, 35, 89, 36, 75, 0, 11, 67, 124, 252, 209, 65, 39, 72, 37, 51, 0, 10, 67, 123, 50, 145, 55, 37, 47, 51, 0, 11, 67,
+			77, 248, 145, 89, 35, 65, 40, 51, 0, 15, 69, 77, 17, 210, 205, 16, 89, 35, 51, 108, 88, 37, 51, 0, 16, 69, 73, 248, 81, 205,
+			16, 88, 35, 65, 107, 35, 51, 37, 51, 0, 19, 70, 61, 252, 17, 28, 172, 240, 72, 36, 65, 39, 49, 51, 108, 47, 37, 49, 0, 18,
+			70, 60, 115, 211, 40, 120, 0, 6, 72, 108, 72, 89, 36, 47, 108, 50, 0, 11, 67, 42, 43, 81, 47, 40, 48, 39, 51, 0, 11, 67,
+			42, 8, 145, 47, 35, 50, 40, 51, 0, 19, 70, 41, 23, 226, 197, 17, 219, 47, 36, 51, 65, 39, 81, 36, 51, 108, 83, 0, 11, 67,
+			34, 44, 209, 71, 39, 57, 36, 51, 0, 15, 68, 33, 232, 98, 76, 71, 39, 55, 107, 35, 84, 35, 89, 0, 13, 68, 33, 19, 51, 76,
+			71, 36, 51, 75, 37, 89, 0, 11, 67, 32, 120, 145, 71, 108, 84, 35, 51, 0, 15, 69, 32, 119, 155, 137, 16, 71, 36, 55, 83, 39,
+			84, 51, 0, 15, 69, 32, 115, 226, 29, 240, 71, 108, 72, 35, 84, 108, 65, 0, 13, 68, 29, 59, 115, 76, 36, 89, 48, 36, 57, 89,
+			0, 0, 13, 68, 194, 36, 162, 136, 49, 39, 88, 39, 84, 39, 0, 15, 69, 193, 28, 223, 30, 0, 49, 35, 51, 37, 65, 108, 50, 0,
+			11, 67, 131, 56, 146, 50, 37, 57, 40, 88, 0, 14, 69, 127, 56, 95, 30, 0, 65, 37, 107, 65, 108, 50, 0, 15, 69, 61, 225, 226,
+			205, 32, 72, 36, 55, 108, 84, 37, 88, 0, 11, 67, 9, 75, 82, 108, 91, 48, 35, 88, 0, 0, 15, 69, 197, 19, 209, 30, 16, 81,
+			36, 51, 72, 51, 108, 107, 0, 14, 69, 195, 55, 179, 181, 48, 49, 37, 55, 37, 48, 89, 0, 11, 67, 194, 37, 15, 49, 40, 91, 35,
+			72, 0, 13, 68, 183, 60, 115, 68, 48, 36, 57, 81, 37, 51, 0, 12, 68, 183, 55, 162, 68, 48, 37, 55, 39, 51, 0, 11, 67, 181,
+			236, 211, 48, 39, 55, 37, 89, 0, 16, 69, 181, 50, 135, 131, 0, 48, 36, 89, 47, 108, 50, 35, 49, 0, 13, 68, 126, 5, 7, 4,
+			65, 35, 50, 91, 35, 19, 0, 10, 67, 71, 56, 147, 51, 39, 40, 89, 0, 17, 70, 71, 23, 135, 42, 36, 64, 51, 36, 81, 55, 108,
+			47, 39, 51, 0, 16, 70, 68, 97, 240, 42, 36, 64, 51, 36, 108, 49, 47, 39, 51, 0, 12, 67, 60, 136, 147, 72, 35, 71, 71, 40,
+			89, 0, 12, 68, 43, 49, 202, 68, 47, 36, 108, 47, 51, 0, 20, 71, 43, 8, 34, 122, 43, 243, 192, 47, 36, 49, 50, 39, 55, 39,
+			90, 37, 49, 0, 12, 68, 42, 37, 179, 52, 47, 39, 88, 37, 107, 0, 13, 68, 40, 97, 202, 68, 47, 36, 108, 12, 47, 51, 0, 8,
+			66, 34, 0, 71, 39, 50, 0, 17, 70, 32, 114, 143, 35, 52, 64, 71, 108, 47, 35, 72, 71, 37, 51, 0, 16, 70, 31, 8, 135, 62,
+			36, 64, 36, 49, 84, 108, 72, 39, 51, 0, 17, 70, 30, 212, 71, 42, 36, 64, 39, 48, 36, 51, 108, 47, 39, 51, 0, 16, 70, 30,
+			40, 145, 42, 36, 64, 39, 84, 36, 51, 47, 40, 51, 0, 11, 68, 29, 245, 135, 4, 36, 65, 88, 108, 0, 15, 69, 29, 66, 136, 30,
+			16, 36, 91, 47, 36, 71, 108, 107, 0, 15, 69, 29, 20, 223, 137, 48, 35, 51, 35, 89, 65, 40, 89, 0, 0, 18, 70, 131, 60, 34,
+			57, 81, 222, 50, 37, 49, 40, 101, 36, 89, 108, 55, 0, 14, 67, 113, 232, 178, 104, 17, 39, 55, 84, 36, 57, 36, 0, 9, 66, 92,
+			128, 47, 36, 71, 71, 0, 10, 67, 73, 66, 128, 88, 36, 91, 47, 0, 11, 67, 69, 66, 128, 51, 6, 35, 91, 47, 0, 11, 67, 41,
+			66, 128, 47, 6, 35, 91, 47, 0, 0, 14, 68, 197, 65, 243, 60, 81, 39, 91, 108, 57, 35, 72, 0, 17, 70, 195, 60, 7, 138, 36,
+			192, 49, 36, 57, 49, 108, 84, 40, 89, 0, 15, 69, 193, 225, 211, 137, 16, 49, 36, 55, 108, 89, 39, 51, 0, 14, 68, 127, 60, 20,
+			60, 65, 37, 49, 36, 91, 35, 72, 0, 13, 68, 124, 60, 226, 76, 65, 35, 19, 57, 40, 89, 0, 17, 70, 111, 60, 19, 28, 168, 145,
+			83, 37, 49, 89, 108, 47, 39, 51, 0, 15, 68, 88, 242, 51, 60, 88, 36, 72, 72, 36, 71, 37, 72, 0, 11, 67, 83, 56, 153, 91,
+			39, 57, 40, 19, 0, 15, 69, 78, 1, 202, 137, 16, 89, 36, 50, 108, 47, 39, 51, 0, 19, 70, 77, 188, 209, 192, 140, 209, 89, 35,
+			83, 37, 51, 49, 35, 71, 37, 51, 0, 13, 68, 70, 3, 243, 60, 51, 35, 50, 72, 37, 72, 0, 17, 70, 69, 241, 224, 43, 60, 0,
+			51, 39, 65, 108, 50, 47, 37, 49, 0, 17, 70, 63, 60, 10, 28, 168, 145, 72, 37, 49, 47, 108, 47, 39, 51, 0, 20, 70, 63, 20,
+			72, 29, 24, 145, 72, 36, 81, 35, 51, 71, 108, 51, 84, 35, 51, 0, 14, 68, 41, 33, 243, 60, 47, 35, 88, 108, 57, 39, 72, 0,
+			13, 68, 40, 124, 243, 60, 6, 47, 35, 37, 12, 72, 0, 14, 68, 33, 24, 179, 60, 71, 36, 51, 35, 84, 37, 72, 0, 17, 70, 30,
+			12, 223, 28, 168, 145, 35, 50, 37, 65, 108, 47, 39, 51, 0, 35, 76, 29, 236, 10, 70, 44, 7, 68, 252, 226, 197, 17, 223, 36, 55,
+			36, 49, 47, 36, 51, 39, 49, 108, 51, 72, 37, 57, 39, 81, 36, 51, 108, 65, 0, 17, 70, 29, 60, 222, 28, 168, 145, 35, 89, 37,
+			55, 108, 47, 39, 51, 0, 9, 1, 36, 72, 39, 55, 108, 51, 0, 0, 12, 67, 193, 56, 138, 49, 36, 89, 84, 35, 47, 0, 11, 67,
+			131, 8, 0, 50, 35, 49, 39, 50, 0, 16, 69, 127, 1, 209, 30, 0, 65, 35, 49, 49, 108, 51, 108, 50, 0, 19, 70, 125, 76, 7,
+			43, 49, 224, 65, 36, 91, 49, 108, 47, 37, 57, 108, 50, 0, 12, 67, 125, 56, 0, 65, 39, 89, 36, 50, 50, 0, 17, 69, 125, 50,
+			141, 78, 0, 65, 39, 89, 47, 35, 107, 89, 35, 50, 0, 19, 70, 124, 116, 160, 61, 17, 224, 65, 108, 88, 35, 50, 72, 35, 51, 108,
+			50, 0, 12, 67, 93, 21, 10, 47, 35, 51, 35, 91, 47, 0, 15, 69, 83, 52, 95, 137, 32, 91, 37, 51, 65, 39, 12, 88, 0, 12,
+			67, 77, 21, 10, 89, 36, 51, 36, 91, 47, 0, 12, 67, 68, 76, 202, 51, 39, 19, 57, 35, 47, 0, 16, 68, 41, 28, 222, 200, 47,
+			51, 37, 57, 40, 55, 36, 57, 36, 0, 18, 70, 33, 4, 71, 109, 65, 224, 71, 35, 88, 51, 35, 83, 91, 108, 50, 0, 21, 71, 29,
+			236, 10, 71, 60, 7, 120, 36, 55, 36, 49, 47, 36, 51, 37, 49, 108, 55, 0, 11, 1, 37, 72, 35, 51, 6, 89, 35, 72, 0, 0,
+			20, 71, 192, 116, 72, 68, 114, 162, 68, 49, 108, 51, 71, 36, 51, 108, 47, 39, 51, 0, 17, 70, 183, 53, 7, 33, 17, 225, 48, 37,
+			91, 108, 71, 51, 108, 107, 0, 19, 70, 133, 236, 34, 180, 164, 64, 107, 36, 55, 36, 49, 39, 48, 47, 36, 51, 0, 17, 68, 124, 168,
+			34, 100, 65, 39, 47, 36, 50, 35, 84, 84, 36, 19, 0, 17, 69, 105, 23, 200, 204, 240, 104, 17, 39, 51, 39, 65, 71, 37, 72, 0,
+			21, 71, 68, 115, 243, 139, 20, 71, 124, 51, 108, 72, 37, 57, 39, 81, 36, 51, 108, 65, 0, 16, 69, 61, 19, 148, 204, 240, 72, 36,
+			51, 35, 101, 91, 37, 72, 0, 8, 66, 48, 112, 75, 108, 0, 76, 0, 20, 70, 181, 20, 237, 192, 172, 226, 48, 36, 51, 36, 89, 48,
+			36, 49, 47, 37, 84, 0, 12, 67, 129, 72, 179, 50, 35, 91, 35, 84, 37, 0, 13, 67, 113, 113, 200, 104, 17, 39, 47, 47, 108, 71,
+			0, 11, 67, 101, 178, 128, 36, 83, 83, 35, 47, 0, 12, 67, 85, 178, 128, 89, 36, 6, 83, 35, 47, 0, 10, 67, 81, 178, 128, 91,
+			36, 83, 47, 0, 11, 67, 80, 161, 200, 91, 36, 47, 108, 71, 0, 10, 67, 77, 178, 128, 89, 36, 83, 47, 0, 15, 69, 76, 226, 176,
+			137, 64, 89, 35, 101, 47, 49, 40, 91, 0, 20, 71, 76, 226, 173, 137, 50, 135, 128, 89, 35, 101, 47, 48, 40, 89, 47, 108, 50, 0,
+			11, 67, 69, 178, 128, 51, 6, 35, 83, 47, 0, 16, 69, 69, 39, 199, 205, 64, 51, 35, 88, 65, 108, 57, 36, 91, 0, 13, 68, 58,
+			36, 84, 40, 101, 39, 51, 36, 91, 47, 0, 10, 67, 57, 178, 128, 101, 39, 83, 47, 0, 10, 67, 49, 178, 128, 75, 39, 83, 47, 0,
+			22, 71, 33, 50, 177, 30, 5, 7, 128, 71, 35, 89, 47, 36, 81, 108, 50, 36, 91, 108, 50, 0, 14, 68, 33, 17, 243, 40, 71, 35,
+			51, 108, 57, 35, 47, 0, 11, 67, 29, 200, 179, 35, 104, 17, 84, 108, 0, 9, 67, 29, 178, 128, 39, 83, 47, 0, 0, 19, 70, 192,
+			119, 237, 206, 34, 145, 49, 108, 65, 48, 37, 57, 40, 47, 36, 51, 0, 16, 69, 125, 50, 151, 205, 144, 65, 39, 89, 47, 35, 47, 37,
+			19, 0, 11, 67, 113, 17, 192, 104, 17, 39, 51, 108, 0, 12, 67, 105, 17, 192, 104, 17, 35, 51, 51, 108, 0, 17, 70, 58, 33, 225,
+			61, 67, 192, 101, 108, 107, 35, 72, 91, 39, 72, 0, 10, 67, 53, 17, 192, 107, 35, 51, 108, 0, 21, 71, 29, 251, 81, 28, 164, 115,
+			76, 36, 65, 48, 36, 51, 108, 47, 36, 51, 37, 89, 0, 0, 11, 67, 197, 24, 128, 6, 81, 36, 51, 39, 0, 13, 68, 185, 28, 7,
+			32, 76, 36, 51, 49, 108, 71, 0, 15, 69, 185, 17, 241, 80, 160, 76, 36, 51, 108, 81, 35, 91, 0, 13, 68, 181, 50, 179, 188, 48,
+			39, 89, 47, 37, 90, 0, 15, 69, 136, 132, 199, 204, 160, 84, 36, 71, 89, 108, 57, 47, 0, 12, 67, 135, 49, 138, 107, 36, 57, 19,
+			35, 47, 0, 14, 68, 126, 39, 162, 204, 65, 39, 12, 55, 35, 84, 37, 0, 13, 68, 125, 156, 226, 32, 65, 35, 19, 57, 40, 71, 0,
+			19, 69, 125, 152, 34, 204, 160, 65, 35, 19, 50, 35, 84, 37, 57, 57, 35, 47, 0, 18, 69, 124, 246, 115, 30, 0, 65, 39, 72, 72,
+			35, 19, 37, 57, 108, 50, 0, 13, 68, 124, 120, 34, 204, 65, 108, 50, 35, 84, 37, 0, 16, 69, 112, 117, 72, 206, 0, 104, 17, 108,
+			89, 36, 71, 37, 50, 0, 16, 69, 74, 3, 143, 30, 0, 88, 35, 50, 35, 101, 72, 108, 50, 0, 14, 68, 63, 60, 81, 204, 6, 72,
+			37, 81, 35, 51, 37, 0, 10, 67, 62, 33, 138, 72, 40, 36, 47, 0, 13, 68, 57, 24, 34, 32, 101, 35, 51, 50, 40, 71, 0, 12,
+			67, 50, 1, 202, 75, 35, 50, 50, 108, 47, 0, 13, 68, 33, 50, 135, 32, 71, 35, 89, 47, 108, 71, 0, 12, 67, 33, 33, 220, 71,
+			39, 88, 108, 104, 17, 0, 0, 18, 70, 198, 3, 7, 128, 252, 207, 81, 39, 50, 75, 108, 50, 72, 37, 72, 0, 12, 67, 137, 36, 71,
+			84, 39, 88, 35, 51, 108, 0, 12, 67, 135, 4, 7, 107, 108, 49, 35, 88, 108, 0, 11, 67, 126, 39, 135, 65, 39, 12, 55, 108, 0,
+			10, 67, 122, 36, 71, 55, 39, 51, 108, 0, 14, 67, 114, 44, 199, 104, 17, 35, 84, 37, 57, 35, 50, 0, 10, 67, 85, 227, 64, 89,
+			39, 55, 107, 0, 11, 67, 82, 36, 71, 91, 39, 12, 51, 108, 0, 14, 67, 41, 199, 135, 47, 35, 104, 17, 35, 55, 55, 108, 0, 28,
+			74, 29, 236, 10, 70, 33, 211, 40, 114, 179, 192, 36, 55, 36, 49, 47, 36, 51, 39, 36, 89, 47, 108, 47, 37, 49, 0, 11, 67, 28,
+			196, 71, 36, 12, 75, 51, 108, 0, 11, 1, 42, 89, 36, 47, 108, 51, 36, 12, 0, 0, 14, 68, 85, 232, 135, 40, 89, 35, 55, 35,
+			84, 108, 47, 0, 10, 67, 70, 36, 226, 51, 39, 89, 39, 0, 11, 67, 68, 97, 222, 51, 36, 108, 12, 55, 0, 15, 69, 63, 54, 202,
+			71, 48, 72, 37, 83, 47, 36, 51, 37, 0, 12, 67, 61, 17, 204, 72, 39, 51, 51, 108, 75, 0, 14, 68, 53, 68, 71, 40, 107, 35,
+			91, 35, 51, 108, 47, 0, 20, 70, 52, 117, 145, 104, 124, 200, 107, 108, 88, 36, 51, 104, 17, 108, 57, 36, 71, 0, 14, 68, 49, 228,
+			199, 40, 75, 35, 55, 35, 89, 108, 47, 0, 12, 68, 42, 36, 71, 40, 47, 39, 51, 108, 47, 0, 15, 68, 41, 23, 237, 40, 47, 36,
+			51, 39, 65, 48, 36, 47, 0, 12, 68, 34, 36, 71, 40, 71, 39, 51, 108, 47, 0, 16, 69, 32, 243, 76, 28, 128, 71, 35, 72, 107,
+			36, 75, 108, 71, 0, 15, 69, 29, 226, 141, 28, 128, 36, 55, 47, 36, 107, 108, 71, 0, 15, 69, 29, 101, 209, 28, 128, 36, 88, 47,
+			36, 51, 108, 71, 0, 0, 17, 68, 127, 4, 81, 28, 65, 39, 49, 35, 51, 51, 35, 51, 35, 50, 0, 17, 68, 125, 67, 149, 28, 65,
+			39, 91, 35, 101, 101, 35, 89, 35, 50, 0, 11, 67, 120, 193, 223, 55, 36, 75, 108, 65, 0, 12, 67, 112, 241, 205, 104, 17, 36, 72,
+			108, 107, 0, 11, 67, 79, 17, 223, 89, 36, 81, 108, 65, 0, 16, 69, 41, 236, 81, 29, 176, 47, 36, 55, 36, 81, 51, 108, 83, 0,
+			13, 68, 28, 236, 209, 28, 35, 101, 37, 51, 35, 50, 0, 0, 13, 68, 204, 235, 135, 120, 57, 35, 101, 76, 108, 55, 0, 16, 69, 194,
+			2, 145, 28, 160, 49, 39, 50, 47, 39, 51, 108, 47, 0, 17, 70, 192, 119, 237, 137, 44, 202, 49, 108, 65, 48, 39, 88, 37, 47, 0,
+			11, 67, 137, 23, 128, 84, 35, 51, 35, 55, 0, 13, 68, 126, 8, 135, 120, 65, 36, 50, 84, 108, 55, 0, 16, 69, 125, 147, 18, 28,
+			160, 65, 39, 19, 75, 36, 88, 108, 47, 0, 15, 69, 83, 1, 243, 28, 160, 91, 36, 49, 108, 57, 108, 47, 0, 20, 71, 76, 120, 10,
+			71, 54, 226, 188, 89, 108, 50, 47, 36, 51, 37, 83, 40, 90, 0, 16, 69, 69, 51, 200, 30, 0, 51, 35, 89, 35, 72, 71, 108, 50,
+			0, 15, 69, 53, 241, 243, 28, 160, 107, 36, 65, 108, 57, 108, 47, 0, 11, 67, 50, 17, 224, 75, 35, 107, 108, 50, 0, 15, 69, 50,
+			1, 243, 28, 160, 75, 36, 50, 108, 57, 108, 47, 0, 16, 69, 49, 44, 243, 28, 160, 75, 39, 88, 37, 12, 57, 108, 47, 0, 13, 68,
+			43, 52, 145, 136, 47, 37, 88, 51, 39, 12, 0, 18, 70, 41, 28, 222, 136, 140, 202, 47, 36, 51, 37, 55, 39, 71, 37, 47, 0, 14,
+			69, 34, 44, 19, 204, 160, 71, 39, 49, 89, 37, 47, 0, 16, 69, 29, 232, 115, 138, 0, 36, 55, 108, 107, 37, 57, 40, 50, 0, 15,
+			69, 29, 50, 176, 30, 0, 36, 89, 47, 36, 49, 108, 50, 0, 16, 69, 28, 242, 51, 28, 160, 35, 72, 35, 71, 37, 57, 108, 47, 0,
+			0, 11, 67, 193, 236, 207, 49, 36, 55, 37, 72, 0, 17, 69, 193, 225, 237, 71, 0, 49, 39, 55, 108, 48, 35, 51, 35, 49, 0, 10,
+			67, 193, 23, 192, 49, 36, 51, 65, 0, 11, 67, 187, 1, 207, 76, 35, 49, 108, 72, 0, 11, 67, 181, 241, 207, 48, 39, 65, 108, 72,
+			0, 13, 68, 180, 244, 71, 124, 48, 36, 72, 51, 108, 65, 0, 11, 67, 137, 23, 192, 84, 35, 51, 35, 65, 0, 11, 67, 133, 23, 192,
+			107, 36, 51, 35, 65, 0, 11, 67, 124, 241, 207, 65, 36, 72, 108, 72, 0, 13, 67, 114, 1, 207, 104, 17, 35, 50, 50, 108, 72, 0,
+			10, 67, 102, 1, 207, 36, 50, 108, 72, 0, 11, 67, 61, 23, 192, 72, 35, 51, 35, 65, 0, 11, 67, 57, 119, 192, 101, 35, 47, 35,
+			65, 0, 13, 68, 41, 244, 199, 52, 47, 36, 65, 89, 108, 107, 0, 10, 67, 28, 168, 143, 36, 47, 39, 72, 0, 0, 14, 68, 185, 243,
+			199, 128, 76, 35, 65, 36, 72, 108, 50, 0, 17, 70, 180, 114, 145, 206, 34, 128, 48, 108, 47, 51, 37, 57, 39, 47, 0, 13, 68, 131,
+			52, 199, 128, 50, 36, 57, 89, 108, 50, 0, 14, 68, 131, 20, 71, 128, 50, 36, 81, 35, 51, 108, 50, 0, 13, 68, 127, 52, 199, 128,
+			65, 36, 57, 89, 108, 50, 0, 18, 70, 125, 113, 243, 32, 114, 128, 65, 39, 47, 108, 57, 36, 71, 108, 47, 0, 18, 70, 125, 113, 222,
+			32, 114, 128, 65, 39, 47, 108, 55, 36, 71, 108, 47, 0, 16, 70, 124, 124, 34, 120, 114, 128, 65, 35, 49, 40, 55, 108, 47, 0, 14,
+			68, 113, 236, 199, 128, 104, 17, 35, 55, 57, 108, 50, 0, 13, 67, 93, 164, 94, 47, 39, 104, 17, 51, 39, 55, 0, 13, 68, 57, 52,
+			71, 128, 101, 39, 89, 51, 108, 50, 0, 16, 70, 30, 36, 98, 122, 43, 243, 40, 51, 39, 55, 39, 90, 37, 0, 17, 70, 10, 12, 34,
+			122, 43, 243, 108, 50, 49, 39, 55, 39, 90, 37, 0, 0, 13, 68, 197, 244, 71, 132, 81, 39, 65, 51, 108, 107, 0, 12, 67, 197, 24,
+			64, 6, 81, 36, 51, 36, 107, 0, 18, 70, 197, 19, 19, 40, 120, 0, 81, 39, 51, 75, 36, 89, 47, 108, 50, 0, 11, 67, 193, 24,
+			64, 49, 39, 51, 36, 12, 0, 18, 70, 193, 19, 211, 40, 120, 0, 49, 39, 51, 72, 36, 89, 47, 108, 50, 0, 18, 70, 193, 19, 210,
+			32, 120, 0, 49, 39, 51, 72, 88, 35, 71, 108, 50, 0, 18, 70, 180, 116, 71, 197, 17, 219, 48, 108, 51, 108, 81, 36, 51, 108, 83,
+			0, 11, 67, 133, 24, 64, 107, 36, 51, 51, 36, 0, 10, 67, 93, 19, 192, 47, 39, 51, 72, 0, 15, 69, 62, 241, 240, 29, 240, 72,
+			36, 90, 108, 49, 108, 65, 0, 13, 68, 57, 72, 34, 60, 101, 39, 91, 50, 40, 72, 0, 13, 68, 34, 12, 199, 60, 71, 39, 50, 57,
+			108, 72, 0, 16, 68, 33, 72, 34, 60, 71, 36, 91, 36, 50, 35, 84, 35, 72, 0, 35, 76, 29, 236, 10, 70, 44, 7, 68, 252, 226,
+			197, 17, 219, 36, 55, 36, 49, 47, 36, 51, 39, 49, 108, 51, 72, 37, 57, 39, 81, 36, 51, 108, 83, 0, 12, 68, 29, 180, 199, 60,
+			36, 83, 89, 108, 72, 0, 9, 67, 29, 19, 192, 39, 51, 72, 0, 0, 16, 69, 193, 228, 202, 30, 0, 49, 36, 55, 36, 89, 47, 108,
+			50, 0, 10, 67, 132, 124, 192, 107, 108, 57, 36, 0, 17, 70, 128, 116, 176, 32, 119, 128, 50, 108, 88, 39, 49, 71, 108, 55, 0, 21,
+			71, 125, 177, 213, 28, 212, 199, 32, 65, 39, 83, 108, 89, 108, 107, 36, 89, 108, 71, 0, 10, 67, 125, 76, 0, 65, 39, 91, 49, 0,
+			16, 70, 76, 120, 10, 68, 119, 128, 89, 108, 50, 47, 51, 108, 55, 0, 21, 70, 53, 84, 98, 68, 114, 202, 107, 35, 89, 51, 36, 84,
+			36, 51, 108, 89, 35, 47, 0, 19, 70, 43, 8, 34, 193, 17, 202, 47, 36, 49, 50, 39, 49, 36, 51, 108, 47, 0, 12, 67, 42, 36,
+			224, 47, 39, 12, 89, 35, 50, 0, 10, 67, 29, 252, 192, 39, 65, 65, 37, 0, 17, 70, 28, 196, 71, 207, 49, 202, 36, 75, 51, 108,
+			37, 57, 108, 47, 0, 0, 11, 67, 199, 52, 79, 81, 37, 51, 35, 72, 0, 17, 69, 195, 55, 8, 28, 240, 49, 36, 57, 104, 17, 39,
+			71, 108, 72, 0, 12, 67, 131, 4, 79, 50, 35, 49, 35, 51, 72, 0, 12, 67, 130, 36, 79, 50, 35, 84, 35, 51, 72, 0, 13, 67,
+			129, 196, 97, 50, 39, 104, 17, 51, 36, 12, 0, 11, 67, 127, 52, 79, 65, 37, 51, 35, 72, 0, 14, 67, 126, 39, 143, 65, 39, 84,
+			35, 55, 55, 36, 72, 0, 14, 67, 124, 199, 143, 65, 39, 75, 35, 55, 55, 35, 72, 0, 14, 67, 124, 196, 79, 65, 39, 75, 35, 51,
+			51, 35, 72, 0, 14, 67, 109, 196, 97, 83, 35, 104, 17, 35, 51, 36, 12, 0, 10, 67, 108, 213, 0, 83, 39, 107, 91, 0, 13, 68,
+			79, 55, 162, 68, 89, 37, 55, 84, 36, 51, 0, 13, 67, 73, 164, 97, 88, 35, 104, 17, 51, 36, 12, 0, 15, 68, 70, 39, 162, 68,
+			51, 39, 84, 36, 55, 84, 36, 51, 0, 11, 67, 60, 116, 79, 72, 108, 51, 35, 72, 0, 11, 67, 52, 116, 225, 107, 108, 89, 89, 36,
+			0, 8, 66, 50, 0, 75, 36, 50, 0, 15, 69, 42, 12, 81, 30, 16, 47, 35, 50, 81, 51, 108, 107, 0, 16, 69, 33, 236, 81, 28,
+			240, 71, 36, 55, 81, 36, 51, 108, 72, 0, 11, 67, 32, 117, 15, 71, 108, 91, 35, 72, 0, 13, 68, 31, 56, 34, 68, 6, 37, 50,
+			84, 35, 51, 0, 12, 68, 31, 4, 243, 68, 36, 49, 89, 37, 51, 0, 13, 68, 30, 40, 34, 68, 6, 40, 50, 84, 35, 51, 0, 12,
+			68, 29, 181, 199, 68, 36, 83, 47, 108, 51, 0, 12, 68, 29, 149, 71, 68, 35, 19, 89, 108, 51, 0, 15, 69, 29, 66, 143, 28, 240,
+			36, 91, 47, 36, 72, 108, 72, 0, 16, 70, 29, 50, 179, 88, 115, 64, 36, 89, 47, 37, 88, 108, 107, 0, 12, 68, 28, 229, 199, 68,
+			36, 101, 47, 108, 51, 0, 12, 68, 28, 211, 7, 68, 35, 107, 75, 108, 51, 0, 0, 14, 69, 182, 36, 71, 85, 224, 48, 40, 51, 35,
+			89, 55, 0, 16, 69, 131, 56, 176, 77, 224, 50, 37, 57, 40, 49, 89, 36, 55, 0, 14, 67, 125, 148, 72, 65, 39, 19, 35, 51, 51,
+			35, 71, 0, 17, 69, 125, 50, 135, 85, 224, 65, 39, 89, 47, 35, 19, 89, 35, 55, 0, 12, 67, 65, 18, 128, 88, 39, 51, 51, 35,
+			47, 0, 11, 67, 63, 53, 8, 72, 37, 91, 35, 71, 0, 18, 69, 52, 246, 199, 85, 224, 107, 35, 72, 72, 36, 83, 108, 89, 36, 55,
+			0, 12, 68, 28, 212, 71, 72, 36, 107, 51, 108, 88, 0, 0, 15, 68, 182, 3, 17, 132, 48, 35, 50, 75, 35, 51, 36, 12, 0, 14,
+			69, 139, 60, 10, 137, 16, 84, 37, 49, 47, 39, 51, 0, 12, 67, 133, 28, 240, 107, 35, 51, 57, 36, 49, 0, 16, 69, 130, 40, 34,
+			29, 16, 50, 39, 12, 50, 35, 84, 108, 51, 0, 12, 67, 126, 5, 91, 65, 39, 50, 89, 36, 83, 0, 14, 67, 125, 148, 91, 65, 39,
+			19, 35, 51, 51, 36, 83, 0, 17, 69, 124, 167, 135, 93, 240, 65, 39, 47, 36, 55, 108, 47, 36, 65, 0, 17, 69, 124, 163, 135, 85,
+			240, 65, 39, 47, 35, 101, 108, 89, 36, 65, 0, 10, 67, 124, 116, 112, 65, 108, 51, 49, 0, 24, 73, 108, 116, 95, 31, 8, 158, 138,
+			252, 240, 83, 108, 51, 65, 108, 49, 39, 55, 39, 90, 37, 49, 0, 15, 68, 79, 53, 209, 132, 89, 36, 57, 47, 35, 51, 36, 12, 0,
+			19, 70, 76, 140, 19, 68, 120, 0, 89, 35, 71, 39, 49, 89, 35, 51, 108, 50, 0, 12, 67, 72, 228, 91, 88, 39, 101, 51, 39, 83,
+			0, 16, 68, 69, 193, 213, 132, 51, 35, 104, 17, 104, 17, 108, 89, 36, 0, 14, 68, 57, 225, 213, 132, 101, 39, 55, 108, 89, 36, 12,
+			0, 14, 67, 41, 76, 217, 47, 35, 91, 35, 57, 57, 39, 19, 0, 17, 70, 32, 116, 145, 76, 120, 0, 71, 108, 88, 51, 35, 89, 108,
+			50, 0, 17, 70, 29, 50, 145, 60, 115, 192, 36, 89, 47, 36, 51, 72, 108, 72, 0, 0, 12, 67, 136, 213, 10, 84, 35, 107, 91, 35,
+			47, 0, 11, 67, 129, 40, 0, 50, 35, 88, 35, 50, 0, 12, 67, 128, 232, 138, 50, 36, 101, 84, 35, 47, 0, 12, 67, 100, 132, 74,
+			6, 36, 71, 51, 35, 47, 0, 12, 67, 68, 232, 138, 51, 36, 101, 84, 35, 47, 0, 19, 70, 57, 23, 199, 181, 33, 224, 101, 39, 51,
+			65, 108, 48, 35, 88, 108, 50, 0, 16, 70, 31, 52, 71, 129, 55, 128, 37, 51, 108, 50, 89, 36, 55, 0, 13, 68, 30, 34, 7, 80,
+			6, 39, 12, 71, 108, 91, 0, 13, 67, 28, 136, 138, 35, 71, 39, 84, 84, 35, 47, 0, 0, 16, 69, 197, 23, 240, 70, 16, 81, 35,
+			51, 65, 49, 39, 51, 36, 0, 18, 70, 194, 8, 145, 42, 36, 64, 49, 39, 50, 84, 36, 51, 47, 39, 51, 0, 15, 69, 131, 55, 240,
+			70, 16, 50, 37, 65, 49, 39, 51, 36, 0, 16, 69, 120, 115, 34, 68, 240, 55, 108, 75, 36, 84, 35, 51, 72, 0, 16, 69, 109, 17,
+			224, 78, 16, 83, 35, 51, 108, 50, 89, 36, 12, 0, 15, 69, 80, 124, 226, 68, 240, 91, 108, 57, 84, 35, 51, 72, 0, 19, 70, 80,
+			120, 83, 181, 23, 192, 91, 108, 107, 36, 89, 48, 35, 51, 35, 65, 0, 18, 70, 70, 212, 74, 136, 116, 64, 51, 36, 48, 36, 51, 47,
+			40, 108, 51, 0, 15, 69, 69, 241, 224, 204, 240, 51, 35, 65, 108, 50, 37, 72, 0, 17, 68, 69, 193, 213, 192, 51, 35, 104, 17, 104,
+			17, 108, 89, 35, 49, 0, 16, 70, 68, 129, 206, 136, 116, 64, 51, 36, 71, 108, 101, 108, 51, 0, 17, 69, 57, 23, 225, 70, 16, 101,
+			35, 51, 65, 39, 107, 51, 36, 12, 0, 17, 69, 35, 49, 226, 68, 240, 71, 37, 57, 108, 84, 35, 51, 35, 72, 0, 16, 69, 33, 65,
+			226, 68, 240, 71, 35, 91, 108, 84, 35, 51, 72, 0, 17, 69, 33, 21, 31, 68, 240, 71, 35, 51, 91, 36, 65, 39, 51, 72, 0, 17,
+			70, 31, 2, 162, 61, 23, 192, 36, 49, 47, 39, 72, 36, 51, 65, 0, 16, 69, 29, 232, 140, 136, 240, 39, 55, 6, 84, 39, 75, 40,
+			72, 0, 0, 11, 67, 192, 164, 115, 49, 36, 47, 51, 37, 0, 11, 67, 183, 59, 148, 48, 37, 76, 36, 91, 0, 11, 67, 132, 196, 115,
+			107, 36, 75, 51, 37, 0, 16, 69, 125, 22, 135, 35, 48, 65, 39, 51, 104, 17, 108, 71, 37, 0, 11, 67, 124, 196, 115, 65, 39, 75,
+			51, 37, 0, 18, 68, 113, 71, 17, 112, 104, 17, 36, 91, 104, 17, 36, 51, 36, 104, 17, 0, 17, 70, 109, 17, 224, 83, 52, 128, 83,
+			36, 51, 108, 50, 91, 37, 88, 0, 10, 67, 77, 27, 128, 89, 36, 51, 76, 0, 13, 68, 40, 178, 51, 40, 47, 35, 89, 71, 37, 47,
+			0, 11, 67, 29, 197, 115, 35, 104, 17, 89, 108, 0, 19, 71, 28, 168, 136, 137, 52, 71, 128, 39, 47, 39, 71, 40, 89, 51, 108, 50,
+			0, 0, 15, 69, 206, 40, 51, 77, 176, 57, 40, 50, 37, 89, 36, 83, 0, 16, 70, 127, 51, 199, 131, 51, 192, 65, 37, 72, 108, 50,
+			37, 72, 0, 10, 67, 101, 177, 219, 36, 83, 108, 83, 0, 12, 67, 81, 177, 219, 91, 35, 83, 83, 108, 83, 0, 20, 71, 76, 120, 10,
+			207, 20, 71, 60, 89, 108, 50, 47, 37, 81, 36, 51, 108, 72, 0, 17, 70, 69, 39, 199, 131, 51, 192, 51, 35, 88, 65, 108, 50, 37,
+			72, 0, 11, 67, 56, 129, 240, 101, 35, 71, 108, 49, 0, 14, 67, 42, 8, 153, 47, 35, 50, 35, 84, 84, 39, 19, 0, 18, 70, 32,
+			119, 148, 139, 52, 223, 71, 108, 55, 91, 36, 84, 37, 89, 65, 0, 18, 70, 32, 119, 135, 57, 24, 64, 71, 36, 55, 35, 101, 35, 51,
+			36, 12, 0, 16, 70, 29, 50, 135, 131, 51, 192, 36, 89, 47, 108, 50, 37, 72, 0, 0, 11, 67, 193, 183, 128, 49, 35, 83, 35, 55,
+			0, 15, 69, 192, 116, 112, 80, 160, 49, 108, 51, 49, 39, 91, 47, 0, 9, 67, 130, 44, 0, 50, 39, 49, 0, 18, 70, 130, 36, 109,
+			68, 241, 210, 50, 40, 51, 48, 35, 51, 72, 108, 88, 0, 12, 67, 128, 136, 154, 50, 39, 71, 40, 104, 17, 0, 13, 68, 125, 248, 145,
+			204, 65, 36, 65, 39, 51, 37, 0, 16, 69, 125, 55, 159, 138, 0, 65, 39, 89, 35, 55, 65, 40, 50, 0, 16, 69, 125, 24, 143, 80,
+			160, 65, 35, 51, 84, 72, 35, 91, 47, 0, 15, 69, 120, 119, 200, 68, 160, 55, 108, 65, 71, 36, 51, 47, 0, 11, 67, 112, 116, 110,
+			104, 17, 108, 51, 76, 0, 17, 69, 57, 92, 202, 206, 0, 101, 39, 89, 57, 47, 36, 57, 108, 50, 0, 12, 68, 32, 114, 145, 204, 71,
+			108, 47, 51, 37, 0, 18, 70, 28, 136, 135, 120, 212, 224, 35, 71, 39, 55, 107, 35, 89, 35, 50, 0, 0, 12, 68, 198, 34, 179, 192,
+			81, 39, 47, 37, 49, 0, 21, 71, 197, 225, 207, 204, 114, 162, 68, 81, 36, 55, 108, 72, 37, 57, 108, 47, 39, 51, 0, 20, 71, 192,
+			114, 145, 183, 55, 135, 68, 49, 108, 47, 36, 51, 48, 37, 55, 108, 51, 0, 21, 72, 181, 225, 202, 206, 8, 179, 204, 240, 48, 36, 55,
+			108, 47, 37, 50, 39, 37, 72, 0, 18, 70, 135, 52, 202, 69, 60, 211, 107, 37, 89, 47, 36, 51, 89, 37, 89, 0, 11, 67, 133, 21,
+			0, 107, 36, 51, 36, 91, 0, 12, 67, 125, 100, 64, 6, 65, 39, 88, 36, 51, 0, 11, 67, 113, 68, 64, 104, 17, 36, 91, 51, 0,
+			11, 67, 109, 68, 64, 83, 36, 91, 39, 51, 0, 12, 67, 105, 245, 0, 104, 17, 35, 65, 35, 91, 0, 20, 71, 79, 50, 162, 181, 225,
+			211, 124, 89, 37, 47, 39, 48, 36, 55, 108, 89, 65, 0, 14, 68, 49, 164, 71, 108, 75, 39, 104, 17, 51, 108, 83, 0, 12, 68, 42,
+			35, 243, 100, 47, 39, 72, 37, 19, 0, 11, 67, 41, 68, 64, 47, 35, 91, 35, 51, 0, 15, 69, 33, 232, 138, 136, 176, 71, 40, 55,
+			40, 47, 40, 89, 0, 11, 67, 33, 68, 64, 71, 35, 91, 35, 51, 0, 13, 68, 29, 68, 71, 108, 35, 12, 91, 51, 108, 83, 0, 13,
+			68, 29, 50, 179, 192, 36, 89, 47, 36, 57, 49, 0, 19, 71, 10, 215, 179, 192, 114, 162, 68, 108, 48, 55, 37, 49, 108, 47, 39, 51,
+			0, 0, 16, 69, 198, 3, 7, 205, 64, 81, 39, 50, 75, 108, 57, 36, 91, 0, 16, 69, 181, 19, 199, 73, 64, 48, 35, 51, 72, 108,
+			88, 36, 91, 0, 15, 69, 128, 120, 136, 71, 48, 50, 108, 84, 71, 35, 51, 37, 0, 13, 67, 114, 33, 222, 104, 17, 35, 84, 84, 108,
+			55, 0, 14, 68, 81, 226, 135, 112, 91, 36, 55, 47, 108, 104, 17, 0, 11, 67, 77, 177, 222, 89, 39, 83, 108, 55, 0, 15, 69, 49,
+			248, 98, 71, 48, 75, 39, 65, 107, 40, 51, 37, 0, 14, 68, 34, 11, 135, 112, 71, 39, 50, 76, 108, 104, 17, 0, 14, 67, 33, 193,
+			222, 71, 35, 104, 17, 104, 17, 108, 55, 0, 15, 69, 32, 243, 162, 71, 48, 71, 35, 72, 101, 39, 51, 37, 0, 15, 69, 29, 180, 135,
+			205, 64, 35, 83, 88, 108, 57, 36, 91, 0, 19, 70, 29, 50, 145, 28, 171, 243, 36, 89, 47, 36, 51, 108, 47, 36, 90, 37, 0, 17,
+			70, 9, 60, 199, 197, 66, 128, 108, 89, 37, 57, 108, 81, 35, 91, 0, 0, 23, 72, 194, 4, 209, 136, 114, 162, 29, 16, 49, 39, 50,
+			89, 36, 51, 84, 108, 47, 40, 108, 51, 0, 12, 67, 129, 55, 0, 50, 35, 89, 35, 104, 17, 0, 14, 67, 125, 40, 145, 65, 39, 88,
+			35, 84, 84, 36, 51, 0, 18, 70, 124, 225, 215, 35, 56, 0, 65, 39, 101, 108, 47, 35, 71, 37, 50, 0, 12, 67, 124, 216, 145, 65,
+			36, 107, 84, 35, 51, 0, 11, 67, 121, 248, 145, 55, 36, 65, 39, 51, 0, 12, 67, 58, 5, 81, 101, 36, 50, 89, 36, 51, 0, 12,
+			67, 34, 5, 81, 71, 36, 50, 89, 36, 51, 0, 11, 67, 29, 193, 223, 36, 104, 17, 108, 65, 0, 11, 67, 29, 181, 17, 35, 83, 91,
+			39, 51, 0, 21, 1, 60, 12, 35, 55, 108, 65, 35, 47, 36, 6, 49, 40, 76, 36, 49, 47, 35, 51, 0, 0, 11, 67, 185, 33, 224,
+			76, 36, 88, 108, 50, 0, 12, 67, 130, 36, 82, 50, 35, 84, 35, 51, 88, 0, 11, 67, 124, 161, 224, 65, 36, 47, 108, 50, 0, 10,
+			67, 122, 24, 128, 55, 35, 107, 84, 0, 11, 67, 121, 49, 224, 55, 36, 89, 108, 50, 0, 12, 67, 113, 17, 224, 104, 17, 36, 51, 108,
+			50, 0, 13, 67, 105, 17, 224, 104, 17, 39, 51, 51, 108, 50, 0, 12, 68, 100, 131, 199, 120, 35, 71, 72, 39, 55, 0, 11, 67, 83,
+			1, 224, 91, 36, 49, 108, 50, 0, 10, 67, 78, 24, 128, 89, 35, 107, 84, 0, 13, 68, 73, 228, 135, 120, 88, 36, 55, 88, 108, 55,
+			0, 11, 67, 43, 1, 224, 47, 36, 49, 108, 50, 0, 12, 68, 42, 34, 135, 120, 47, 39, 47, 108, 55, 0, 21, 71, 41, 28, 31, 30,
+			11, 135, 204, 47, 39, 51, 49, 35, 65, 108, 50, 76, 108, 57, 0, 13, 68, 41, 21, 7, 120, 47, 39, 51, 91, 108, 55, 0, 12, 68,
+			29, 231, 199, 120, 39, 55, 65, 108, 55, 0, 13, 68, 29, 20, 199, 120, 6, 36, 51, 89, 108, 55, 0, 12, 68, 28, 133, 199, 120, 36,
+			71, 47, 108, 55, 0, 15, 69, 28, 132, 98, 30, 0, 35, 71, 51, 39, 84, 108, 50, 0, 12, 68, 28, 131, 199, 120, 36, 71, 72, 108,
+			55, 0, 19, 1, 61, 12, 35, 55, 108, 65, 35, 47, 36, 6, 65, 39, 89, 108, 84, 37, 0, 0, 17, 69, 125, 50, 143, 71, 0, 65,
+			39, 89, 47, 35, 72, 51, 35, 49, 0, 13, 68, 124, 194, 34, 68, 65, 35, 75, 71, 40, 51, 0, 13, 68, 79, 2, 162, 68, 89, 36,
+			49, 47, 39, 51, 0, 10, 67, 58, 33, 225, 101, 6, 108, 107, 0, 17, 70, 32, 119, 142, 86, 37, 64, 71, 36, 55, 101, 39, 89, 40,
+			89, 0, 13, 68, 28, 246, 135, 124, 36, 72, 104, 17, 108, 65, 0, 22, 1, 62, 12, 35, 55, 108, 65, 35, 47, 36, 6, 71, 39, 88,
+			39, 51, 81, 47, 35, 51, 0, 0, 13, 68, 182, 2, 162, 72, 48, 36, 50, 47, 39, 88, 0, 11, 67, 125, 82, 0, 65, 35, 89, 35,
+			71, 0, 14, 68, 113, 116, 71, 128, 104, 17, 35, 47, 51, 108, 50, 0, 14, 68, 105, 180, 71, 128, 104, 17, 39, 83, 51, 108, 50, 0,
+			13, 68, 94, 20, 71, 128, 47, 36, 107, 51, 108, 50, 0, 15, 69, 70, 35, 209, 70, 32, 51, 40, 72, 35, 51, 51, 40, 0, 14, 68,
+			69, 245, 135, 128, 51, 35, 65, 36, 88, 108, 50, 0, 13, 68, 68, 229, 7, 128, 51, 35, 101, 91, 108, 50, 0, 14, 68, 57, 227, 7,
+			128, 101, 35, 55, 35, 75, 108, 50, 0, 13, 68, 57, 178, 135, 128, 101, 36, 83, 47, 108, 50, 0, 13, 68, 48, 132, 71, 128, 75, 39,
+			71, 51, 108, 50, 0, 13, 68, 42, 20, 71, 128, 47, 36, 107, 51, 108, 50, 0, 13, 68, 41, 28, 7, 128, 47, 39, 51, 49, 108, 50,
+			0, 16, 69, 35, 51, 209, 70, 32, 71, 37, 72, 35, 51, 51, 39, 84, 0, 13, 68, 34, 20, 71, 128, 71, 39, 107, 51, 108, 50, 0,
+			12, 68, 31, 4, 71, 128, 36, 49, 51, 108, 50, 0, 13, 68, 30, 4, 199, 128, 36, 50, 6, 89, 108, 50, 0, 12, 68, 29, 178, 135,
+			128, 39, 83, 47, 108, 50, 0, 12, 68, 29, 60, 7, 128, 36, 89, 49, 108, 50, 0, 12, 68, 29, 28, 7, 128, 35, 51, 49, 108, 50,
+			0, 12, 68, 9, 50, 135, 128, 108, 89, 47, 108, 50, 0, 0, 15, 69, 197, 28, 223, 137, 16, 81, 36, 51, 37, 65, 39, 51, 0, 11,
+			67, 197, 1, 209, 81, 39, 88, 108, 51, 0, 10, 67, 181, 76, 64, 48, 36, 91, 81, 0, 15, 69, 180, 252, 240, 137, 16, 48, 36, 72,
+			37, 49, 40, 51, 0, 17, 69, 137, 225, 218, 205, 16, 84, 35, 55, 108, 104, 17, 36, 57, 51, 0, 18, 70, 133, 243, 211, 40, 120, 0,
+			107, 35, 65, 72, 35, 89, 47, 108, 50, 0, 19, 70, 125, 19, 224, 124, 120, 0, 65, 39, 51, 72, 35, 50, 36, 65, 108, 50, 0, 15,
+			69, 83, 4, 237, 205, 16, 91, 36, 49, 89, 48, 37, 51, 0, 19, 70, 79, 56, 17, 188, 172, 240, 89, 37, 50, 36, 51, 90, 36, 47,
+			37, 49, 0, 11, 67, 76, 161, 209, 89, 36, 47, 108, 51, 0, 12, 67, 72, 140, 209, 88, 39, 71, 35, 57, 51, 0, 18, 70, 69, 180,
+			224, 48, 120, 0, 51, 35, 83, 89, 35, 50, 75, 108, 50, 0, 16, 69, 61, 17, 243, 137, 16, 72, 36, 51, 108, 57, 84, 36, 51, 0,
+			12, 67, 53, 97, 209, 107, 39, 88, 88, 108, 51, 0, 13, 68, 42, 3, 243, 76, 47, 35, 50, 72, 37, 89, 0, 13, 68, 34, 12, 71,
+			132, 71, 39, 50, 81, 108, 12, 0, 13, 68, 32, 244, 71, 132, 71, 35, 72, 51, 108, 107, 0, 14, 69, 30, 220, 240, 137, 16, 36, 48,
+			37, 49, 39, 51, 0, 16, 70, 29, 56, 135, 68, 120, 0, 35, 89, 84, 108, 51, 108, 50, 0, 10, 67, 28, 236, 209, 35, 101, 37, 51,
+			0, 18, 70, 28, 168, 159, 28, 172, 240, 39, 47, 39, 65, 108, 6, 47, 37, 49, 0, 17, 70, 10, 2, 145, 139, 8, 176, 108, 50, 47,
+			51, 39, 49, 39, 49, 0, 0, 15, 69, 197, 19, 211, 137, 32, 81, 36, 51, 72, 89, 40, 88, 0, 21, 71, 192, 119, 237, 206, 34, 145,
+			204, 49, 108, 65, 48, 37, 57, 40, 47, 36, 51, 37, 0, 15, 69, 181, 28, 209, 137, 32, 48, 35, 51, 37, 51, 40, 88, 0, 11, 67,
+			134, 8, 146, 107, 35, 50, 40, 88, 0, 11, 67, 129, 60, 0, 50, 35, 89, 35, 49, 0, 15, 69, 127, 56, 96, 30, 0, 65, 37, 107,
+			35, 50, 108, 50, 0, 14, 69, 120, 124, 10, 137, 32, 55, 108, 49, 47, 39, 88, 0, 11, 67, 82, 1, 210, 91, 36, 50, 108, 88, 0,
+			13, 67, 61, 28, 128, 72, 35, 51, 51, 36, 57, 36, 0, 17, 70, 32, 115, 209, 136, 133, 0, 71, 108, 72, 51, 40, 71, 36, 91, 0,
+			16, 70, 29, 50, 179, 84, 119, 128, 36, 89, 47, 37, 89, 108, 55, 0, 14, 69, 9, 252, 202, 137, 32, 108, 65, 37, 47, 39, 88, 0,
+			8, 65, 120, 6, 55, 108, 65, 0, 0, 13, 67, 197, 4, 79, 81, 39, 88, 35, 51, 35, 72, 0, 15, 69, 193, 60, 224, 137, 48, 49,
+			39, 89, 37, 50, 40, 89, 0, 14, 68, 133, 66, 173, 68, 107, 35, 91, 47, 48, 35, 51, 0, 16, 70, 126, 40, 51, 42, 36, 64, 65,
+			39, 50, 37, 47, 39, 51, 0, 16, 70, 124, 120, 51, 42, 36, 64, 65, 108, 50, 37, 47, 39, 51, 0, 13, 68, 124, 120, 34, 68, 65,
+			108, 50, 39, 84, 51, 0, 11, 67, 120, 133, 0, 55, 35, 71, 35, 91, 0, 12, 67, 114, 1, 211, 104, 17, 36, 50, 108, 89, 0, 11,
+			67, 106, 37, 64, 104, 17, 39, 12, 89, 0, 12, 67, 82, 1, 211, 91, 36, 50, 6, 108, 89, 0, 13, 68, 80, 252, 199, 68, 91, 36,
+			72, 57, 108, 51, 0, 11, 67, 71, 60, 211, 51, 35, 19, 37, 89, 0, 15, 69, 70, 34, 17, 30, 16, 51, 40, 71, 36, 51, 108, 107,
+			0, 18, 70, 28, 184, 7, 101, 68, 64, 35, 89, 50, 108, 19, 35, 91, 35, 51, 0, 0, 12, 67, 193, 24, 136, 49, 35, 51, 51, 40,
+			71, 0, 18, 70, 186, 17, 209, 28, 132, 98, 76, 108, 107, 108, 51, 35, 71, 51, 40, 0, 15, 69, 71, 52, 159, 136, 192, 51, 37, 88,
+			65, 39, 12, 75, 0, 13, 67, 57, 244, 114, 101, 39, 65, 51, 36, 57, 36, 0, 0, 14, 68, 197, 232, 145, 60, 81, 39, 55, 84, 35,
+			51, 72, 0, 15, 69, 131, 8, 145, 136, 208, 50, 36, 49, 40, 51, 40, 107, 0, 13, 68, 126, 44, 209, 196, 65, 40, 57, 51, 35, 81,
+			0, 12, 67, 109, 197, 192, 83, 35, 104, 17, 35, 47, 0, 10, 67, 82, 1, 192, 91, 36, 50, 108, 0, 13, 68, 78, 24, 135, 148, 89,
+			35, 107, 84, 35, 50, 0, 17, 70, 60, 124, 224, 29, 56, 145, 72, 108, 57, 50, 108, 89, 39, 51, 0, 10, 67, 50, 1, 192, 75, 36,
+			50, 108, 0, 13, 68, 32, 244, 98, 60, 71, 36, 72, 51, 40, 72, 0, 14, 69, 28, 252, 202, 137, 16, 36, 72, 37, 47, 39, 51, 0,
+			15, 69, 28, 226, 136, 29, 16, 36, 101, 47, 36, 71, 108, 51, 0, 0, 13, 68, 181, 19, 135, 80, 48, 35, 51, 101, 108, 91, 0, 15,
+			69, 41, 28, 200, 138, 0, 47, 36, 51, 37, 71, 40, 50, 0, 9, 67, 10, 11, 192, 108, 50, 90, 0, 14, 69, 9, 19, 200, 205, 32,
+			108, 51, 72, 71, 37, 88, 0, 0, 17, 70, 197, 17, 224, 32, 116, 64, 81, 36, 51, 108, 50, 71, 108, 51, 0, 12, 67, 194, 12, 199,
+			49, 36, 50, 37, 57, 108, 0, 14, 68, 190, 2, 179, 192, 90, 36, 50, 36, 47, 37, 49, 0, 14, 68, 133, 252, 212, 192, 107, 35, 65,
+			37, 91, 35, 49, 0, 14, 68, 124, 114, 145, 192, 65, 108, 47, 35, 51, 35, 49, 0, 21, 71, 71, 60, 211, 49, 248, 98, 68, 51, 35,
+			10, 37, 89, 75, 39, 65, 107, 40, 51, 0, 21, 71, 68, 108, 211, 49, 248, 98, 68, 51, 35, 10, 37, 89, 75, 39, 65, 107, 40, 51,
+			0, 21, 71, 52, 117, 145, 138, 1, 216, 68, 107, 108, 88, 36, 51, 39, 50, 108, 88, 36, 51, 0, 20, 70, 29, 50, 162, 112, 248, 147,
+			39, 89, 47, 39, 104, 17, 39, 72, 72, 40, 89, 0, 0, 12, 67, 129, 193, 200, 50, 36, 104, 17, 108, 71, 0, 15, 69, 126, 20, 96,
+			137, 64, 65, 36, 107, 51, 50, 40, 91, 0, 12, 67, 113, 17, 200, 104, 17, 39, 51, 108, 71, 0, 12, 67, 105, 17, 200, 104, 17, 39,
+			51, 108, 71, 0, 11, 67, 101, 193, 200, 39, 104, 17, 108, 71, 0, 12, 67, 89, 17, 200, 88, 35, 51, 51, 108, 71, 0, 21, 71, 84,
+			241, 237, 205, 76, 71, 128, 89, 36, 72, 108, 48, 37, 91, 36, 81, 108, 50, 0, 8, 66, 71, 0, 51, 39, 49, 0, 7, 66, 70, 32,
+			51, 40, 0, 12, 67, 69, 193, 200, 51, 36, 104, 17, 108, 71, 0, 7, 66, 62, 32, 72, 39, 0, 14, 68, 62, 19, 212, 40, 72, 36,
+			107, 72, 35, 91, 47, 0, 11, 67, 41, 17, 200, 47, 39, 51, 108, 71, 0, 22, 71, 33, 50, 177, 30, 2, 135, 128, 71, 35, 89, 47,
+			36, 81, 108, 50, 36, 47, 108, 50, 0, 0, 23, 71, 198, 2, 15, 112, 114, 34, 76, 81, 39, 50, 71, 35, 72, 36, 104, 17, 108, 71,
+			40, 89, 0, 16, 70, 132, 119, 200, 137, 28, 64, 107, 108, 65, 71, 40, 51, 81, 0, 18, 70, 130, 17, 243, 40, 121, 64, 50, 35, 107,
+			108, 57, 35, 47, 35, 50, 0, 19, 70, 112, 118, 79, 40, 121, 64, 104, 17, 108, 19, 36, 72, 35, 47, 35, 50, 0, 16, 70, 43, 54,
+			226, 207, 51, 192, 47, 37, 83, 39, 37, 12, 72, 0, 18, 70, 34, 17, 200, 29, 33, 209, 71, 35, 107, 108, 71, 108, 88, 108, 51, 0,
+			17, 70, 11, 1, 207, 127, 60, 0, 108, 49, 108, 72, 36, 65, 37, 49, 0, 0, 13, 68, 197, 19, 199, 32, 81, 36, 51, 72, 108, 71,
+			0, 14, 68, 134, 3, 211, 204, 107, 36, 50, 72, 36, 89, 37, 0, 12, 68, 130, 37, 7, 32, 50, 40, 91, 108, 71, 0, 13, 68, 126,
+			20, 71, 32, 65, 36, 107, 51, 108, 71, 0, 19, 69, 126, 19, 226, 204, 160, 65, 35, 107, 72, 35, 84, 37, 57, 57, 35, 47, 0, 13,
+			68, 125, 100, 71, 32, 65, 36, 88, 51, 108, 71, 0, 13, 68, 125, 19, 199, 32, 65, 39, 51, 72, 108, 71, 0, 11, 67, 120, 140, 0,
+			55, 35, 71, 35, 49, 0, 14, 68, 113, 234, 199, 32, 104, 17, 39, 55, 55, 108, 71, 0, 11, 67, 85, 177, 202, 89, 36, 83, 108, 47,
+			0, 14, 68, 83, 4, 71, 32, 91, 36, 49, 35, 51, 108, 71, 0, 13, 68, 78, 20, 71, 32, 89, 39, 107, 51, 108, 71, 0, 10, 67,
+			71, 55, 128, 51, 36, 57, 55, 0, 10, 67, 67, 55, 128, 88, 36, 57, 55, 0, 10, 67, 59, 55, 128, 101, 36, 57, 55, 0, 11, 67,
+			55, 49, 202, 107, 35, 57, 108, 47, 0, 14, 68, 33, 20, 98, 204, 71, 35, 51, 51, 40, 57, 36, 0, 14, 69, 29, 180, 71, 80, 160,
+			35, 83, 51, 108, 91, 47, 0, 13, 68, 28, 228, 98, 204, 39, 101, 51, 35, 84, 37, 0, 0, 15, 68, 181, 236, 194, 108, 48, 36, 55,
+			36, 57, 19, 108, 83, 0, 8, 66, 126, 16, 65, 36, 107, 0, 13, 67, 114, 20, 71, 104, 17, 35, 107, 51, 35, 50, 0, 11, 67, 109,
+			229, 0, 83, 36, 55, 35, 91, 0, 11, 67, 109, 20, 199, 83, 35, 51, 89, 108, 0, 12, 67, 93, 164, 71, 47, 39, 104, 17, 51, 108,
+			0, 8, 66, 70, 16, 51, 35, 107, 0, 9, 66, 62, 16, 6, 72, 35, 107, 0, 20, 71, 59, 52, 71, 122, 4, 199, 4, 101, 36, 57,
+			51, 39, 50, 50, 36, 89, 108, 0, 16, 69, 41, 19, 94, 136, 112, 47, 35, 51, 107, 35, 55, 84, 108, 0, 16, 69, 35, 50, 156, 136,
+			112, 71, 37, 47, 35, 104, 17, 84, 108, 0, 16, 69, 32, 119, 30, 136, 112, 71, 108, 104, 17, 55, 35, 84, 108, 0, 11, 67, 30, 212,
+			71, 39, 48, 36, 51, 108, 0, 11, 67, 29, 197, 71, 35, 104, 17, 89, 108, 0, 0, 14, 68, 196, 196, 71, 40, 81, 39, 75, 35, 51,
+			108, 47, 0, 12, 67, 137, 17, 204, 84, 36, 51, 51, 108, 75, 0, 14, 69, 130, 36, 74, 28, 128, 50, 40, 51, 47, 108, 71, 0, 15,
+			68, 114, 8, 135, 40, 104, 17, 35, 50, 35, 84, 108, 47, 0, 15, 68, 109, 196, 71, 40, 83, 35, 104, 17, 35, 51, 108, 47, 0, 14,
+			68, 78, 38, 135, 40, 89, 39, 12, 104, 17, 108, 47, 0, 11, 67, 77, 17, 204, 89, 36, 51, 108, 75, 0, 14, 68, 61, 182, 71, 40,
+			72, 35, 83, 35, 19, 108, 47, 0, 14, 68, 52, 196, 71, 40, 107, 39, 75, 35, 51, 108, 47, 0, 15, 68, 35, 4, 71, 40, 71, 36,
+			49, 35, 51, 51, 108, 47, 0, 15, 69, 32, 243, 34, 71, 48, 71, 35, 72, 75, 40, 51, 37, 0, 18, 70, 32, 114, 21, 205, 18, 128,
+			71, 108, 71, 35, 89, 37, 51, 35, 47, 0, 10, 67, 30, 40, 158, 39, 84, 40, 55, 0, 12, 68, 29, 248, 135, 40, 35, 65, 84, 108,
+			47, 0, 13, 68, 28, 248, 135, 40, 35, 72, 35, 84, 108, 47, 0, 0, 11, 67, 125, 33, 205, 65, 36, 88, 108, 107, 0, 12, 67, 109,
+			231, 0, 83, 35, 55, 35, 104, 17, 0, 14, 68, 96, 120, 81, 28, 88, 108, 107, 36, 51, 35, 50, 0, 12, 67, 93, 17, 205, 47, 35,
+			51, 51, 108, 107, 0, 18, 70, 79, 56, 31, 28, 172, 240, 89, 37, 50, 35, 65, 108, 47, 37, 49, 0, 14, 68, 76, 115, 211, 28, 89,
+			108, 72, 36, 89, 35, 50, 0, 14, 68, 60, 226, 145, 28, 72, 39, 101, 47, 35, 51, 108, 0, 12, 67, 49, 17, 205, 75, 35, 51, 51,
+			108, 107, 0, 20, 70, 43, 8, 34, 122, 252, 240, 47, 36, 49, 50, 39, 55, 39, 90, 37, 49, 37, 0, 11, 67, 41, 252, 223, 47, 35,
+			65, 37, 65, 0, 13, 68, 29, 236, 19, 28, 35, 55, 36, 49, 89, 108, 0, 0, 11, 67, 120, 136, 0, 55, 35, 71, 35, 50, 0, 16,
+			69, 58, 33, 224, 206, 0, 101, 35, 6, 84, 108, 50, 37, 50, 0, 18, 69, 40, 134, 115, 28, 160, 47, 35, 71, 35, 19, 37, 57, 57,
+			108, 47, 0, 18, 70, 33, 17, 219, 68, 117, 10, 71, 35, 51, 35, 83, 51, 108, 91, 47, 0, 14, 69, 29, 177, 207, 28, 160, 36, 83,
+			108, 72, 108, 47, 0, 0, 9, 67, 192, 116, 64, 49, 108, 51, 0, 14, 67, 137, 193, 207, 84, 35, 104, 17, 104, 17, 108, 72, 0, 12,
+			67, 125, 177, 207, 65, 39, 83, 108, 72, 72, 0, 11, 67, 109, 83, 64, 83, 35, 89, 35, 107, 0, 10, 67, 81, 244, 64, 91, 36, 65,
+			51, 0, 8, 66, 78, 0, 89, 36, 50, 0, 11, 67, 61, 244, 64, 72, 35, 65, 35, 51, 0, 20, 71, 30, 6, 209, 124, 114, 179, 192,
+			35, 50, 83, 39, 51, 65, 108, 47, 37, 49, 0, 21, 71, 29, 50, 145, 28, 171, 243, 192, 36, 89, 47, 36, 51, 108, 47, 36, 90, 37,
+			49, 0, 0, 15, 69, 197, 225, 243, 137, 224, 81, 36, 55, 108, 57, 39, 55, 0, 14, 68, 139, 56, 158, 128, 84, 37, 57, 39, 55, 39,
+			50, 0, 12, 68, 130, 36, 98, 128, 50, 39, 51, 39, 50, 0, 13, 68, 128, 116, 98, 128, 50, 108, 51, 84, 35, 50, 0, 20, 70, 125,
+			196, 107, 68, 114, 128, 65, 39, 104, 17, 35, 51, 51, 35, 51, 108, 47, 0, 19, 70, 125, 161, 222, 92, 114, 128, 65, 39, 104, 17, 108,
+			55, 36, 47, 108, 47, 0, 18, 70, 125, 81, 207, 68, 114, 128, 65, 39, 89, 108, 72, 36, 51, 108, 47, 0, 13, 68, 78, 12, 115, 128,
+			89, 35, 50, 81, 37, 50, 0, 17, 70, 61, 248, 176, 68, 114, 128, 72, 36, 65, 39, 49, 51, 108, 47, 0, 15, 69, 28, 210, 179, 28,
+			192, 36, 107, 47, 37, 57, 108, 75, 0, 0, 12, 67, 125, 204, 223, 65, 39, 104, 17, 37, 65, 0, 16, 69, 125, 50, 145, 28, 208, 65,
+			39, 89, 47, 35, 51, 108, 107, 0, 10, 67, 125, 19, 192, 65, 35, 51, 72, 0, 10, 67, 121, 19, 192, 55, 39, 51, 72, 0, 11, 67,
+			109, 227, 0, 83, 35, 55, 35, 75, 0, 12, 67, 93, 17, 209, 47, 35, 51, 51, 108, 51, 0, 13, 68, 87, 58, 199, 60, 89, 35, 57,
+			57, 108, 72, 0, 11, 67, 85, 19, 192, 89, 39, 51, 35, 72, 0, 14, 68, 72, 129, 222, 132, 88, 39, 71, 108, 55, 36, 12, 0, 14,
+			68, 69, 49, 222, 132, 51, 36, 89, 108, 55, 36, 12, 0, 15, 68, 68, 193, 222, 132, 51, 35, 75, 75, 108, 55, 36, 12, 0, 13, 68,
+			57, 19, 199, 60, 101, 39, 51, 72, 108, 72, 0, 11, 67, 57, 19, 192, 101, 36, 51, 35, 72, 0, 12, 67, 49, 56, 64, 75, 39, 89,
+			89, 36, 12, 0, 14, 68, 41, 147, 199, 60, 6, 47, 36, 19, 72, 108, 72, 0, 13, 68, 35, 21, 7, 60, 71, 39, 81, 91, 108, 72,
+			0, 10, 67, 33, 19, 192, 71, 39, 51, 72, 0, 12, 68, 29, 243, 199, 60, 36, 65, 72, 108, 72, 0, 12, 68, 29, 178, 135, 60, 39,
+			83, 47, 108, 72, 0, 0, 20, 71, 188, 120, 15, 29, 23, 209, 204, 90, 108, 50, 72, 108, 51, 65, 36, 51, 37, 0, 11, 67, 109, 236,
+			0, 83, 35, 55, 35, 49, 0, 13, 68, 81, 71, 162, 120, 91, 36, 91, 55, 40, 55, 0, 15, 69, 76, 124, 32, 30, 0, 89, 108, 49,
+			36, 50, 108, 50, 0, 12, 67, 69, 33, 210, 51, 35, 88, 88, 108, 88, 0, 11, 67, 61, 24, 160, 72, 35, 51, 40, 50, 0, 11, 67,
+			50, 40, 160, 75, 35, 84, 40, 50, 0, 18, 70, 41, 23, 226, 76, 161, 202, 47, 36, 51, 65, 39, 89, 47, 108, 47, 0, 11, 67, 33,
+			24, 160, 71, 39, 51, 40, 50, 0, 10, 67, 31, 49, 210, 35, 57, 108, 88, 0, 14, 68, 28, 163, 135, 64, 36, 47, 47, 36, 101, 108,
+			88, 0, 0, 11, 67, 197, 225, 211, 81, 36, 55, 108, 89, 0, 13, 67, 197, 36, 79, 81, 39, 88, 35, 51, 35, 72, 0, 18, 70, 193,
+			232, 173, 28, 164, 71, 49, 36, 55, 39, 48, 108, 47, 51, 108, 0, 11, 67, 193, 225, 211, 49, 36, 55, 108, 89, 0, 9, 67, 134, 37,
+			0, 107, 40, 91, 0, 14, 68, 123, 50, 179, 124, 55, 37, 47, 37, 57, 39, 65, 0, 12, 67, 104, 133, 225, 104, 17, 36, 71, 47, 36,
+			0, 8, 66, 82, 0, 91, 36, 50, 0, 14, 68, 70, 44, 7, 68, 6, 51, 40, 12, 49, 108, 51, 0, 13, 68, 57, 76, 7, 68, 101,
+			39, 91, 49, 108, 51, 0, 13, 68, 57, 21, 226, 124, 101, 39, 51, 47, 40, 65, 0, 10, 67, 53, 245, 64, 107, 39, 65, 89, 0, 12,
+			68, 42, 44, 7, 68, 47, 40, 49, 108, 51, 0, 13, 68, 41, 12, 7, 68, 47, 36, 88, 49, 108, 51, 0, 14, 69, 32, 119, 207, 28,
+			240, 71, 108, 65, 72, 108, 72, 0, 12, 68, 30, 12, 71, 68, 36, 50, 81, 108, 51, 0, 13, 68, 29, 196, 71, 68, 36, 104, 17, 51,
+			108, 51, 0, 15, 69, 29, 146, 179, 28, 240, 36, 19, 47, 37, 57, 108, 72, 0, 12, 68, 29, 100, 71, 68, 36, 88, 51, 108, 51, 0,
+			15, 69, 29, 35, 243, 28, 240, 36, 88, 72, 37, 57, 108, 72, 0, 12, 68, 28, 244, 71, 68, 36, 72, 51, 108, 51, 0, 11, 67, 11,
+			4, 79, 108, 49, 39, 51, 72, 0, 0, 13, 68, 181, 24, 98, 128, 48, 35, 51, 107, 40, 50, 0, 15, 69, 180, 116, 71, 121, 224, 48,
+			108, 51, 108, 55, 36, 55, 0, 14, 67, 129, 193, 212, 50, 35, 104, 17, 104, 17, 108, 91, 0, 13, 68, 125, 242, 135, 72, 65, 39, 65,
+			47, 108, 88, 0, 14, 68, 125, 236, 226, 128, 65, 37, 55, 57, 40, 12, 50, 0, 14, 67, 125, 193, 212, 65, 35, 104, 17, 104, 17, 108,
+			91, 0, 14, 67, 124, 228, 72, 65, 39, 101, 35, 51, 51, 36, 71, 0, 18, 69, 124, 164, 158, 73, 224, 65, 39, 47, 36, 88, 35, 55,
+			88, 36, 55, 0, 10, 67, 121, 18, 128, 55, 36, 51, 47, 0, 13, 68, 83, 53, 226, 128, 91, 36, 57, 47, 40, 50, 0, 12, 68, 80,
+			116, 98, 128, 91, 108, 51, 39, 50, 0, 11, 67, 57, 18, 128, 101, 35, 51, 35, 47, 0, 16, 69, 42, 36, 96, 77, 224, 47, 39, 51,
+			50, 39, 89, 39, 55, 0, 13, 68, 40, 116, 82, 128, 47, 108, 51, 88, 35, 50, 0, 15, 68, 32, 168, 98, 128, 71, 36, 47, 107, 39,
+			84, 36, 50, 0, 16, 70, 28, 136, 135, 122, 24, 158, 35, 71, 39, 55, 107, 39, 55, 0, 12, 68, 28, 132, 71, 72, 36, 71, 51, 108,
+			88, 0, 12, 68, 9, 28, 98, 128, 108, 51, 81, 39, 50, 0, 0, 16, 69, 197, 230, 80, 29, 16, 81, 39, 55, 19, 39, 88, 108, 51,
+			0, 14, 69, 183, 52, 226, 29, 16, 48, 37, 89, 84, 108, 51, 0, 17, 70, 182, 2, 162, 72, 120, 0, 48, 36, 50, 47, 39, 88, 108,
+			50, 0, 17, 70, 181, 66, 179, 32, 120, 0, 48, 39, 91, 47, 37, 71, 108, 50, 0, 16, 69, 130, 37, 10, 29, 16, 50, 36, 84, 36,
+			91, 47, 108, 51, 0, 14, 68, 128, 225, 222, 132, 50, 39, 101, 108, 55, 36, 12, 0, 14, 69, 128, 116, 179, 77, 240, 50, 108, 88, 37,
+			89, 65, 0, 15, 68, 125, 204, 199, 76, 65, 36, 104, 17, 37, 57, 108, 89, 0, 18, 70, 124, 225, 215, 32, 120, 0, 65, 39, 101, 108,
+			47, 35, 71, 108, 50, 0, 15, 69, 78, 220, 207, 29, 16, 89, 36, 48, 37, 72, 108, 51, 0, 15, 69, 74, 35, 206, 81, 240, 88, 40,
+			72, 101, 35, 91, 65, 0, 14, 68, 74, 17, 210, 132, 88, 36, 107, 108, 88, 36, 12, 0, 13, 68, 71, 8, 145, 60, 51, 36, 49, 39,
+			51, 72, 0, 15, 69, 68, 39, 179, 77, 240, 51, 36, 108, 55, 37, 89, 65, 0, 15, 68, 54, 33, 222, 132, 107, 35, 6, 84, 108, 55,
+			36, 12, 0, 10, 67, 53, 18, 192, 107, 35, 51, 89, 0, 13, 68, 43, 20, 135, 76, 47, 36, 81, 88, 108, 89, 0, 14, 67, 40, 132,
+			112, 47, 35, 71, 35, 51, 51, 39, 49, 0, 14, 69, 40, 120, 15, 137, 240, 47, 108, 50, 72, 39, 65, 0, 10, 67, 34, 17, 192, 71,
+			35, 107, 108, 0, 15, 68, 34, 12, 81, 60, 71, 36, 50, 81, 35, 51, 35, 72, 0, 14, 68, 32, 119, 210, 132, 71, 108, 65, 35, 88,
+			36, 12, 0, 13, 69, 30, 39, 179, 28, 16, 39, 55, 37, 57, 108, 0, 15, 69, 29, 230, 95, 137, 240, 39, 55, 19, 39, 65, 40, 65,
+			0, 14, 68, 29, 193, 222, 132, 36, 104, 17, 108, 55, 36, 12, 0, 17, 70, 29, 50, 159, 60, 115, 192, 36, 89, 47, 36, 65, 72, 108,
+			72, 0, 9, 67, 29, 18, 192, 36, 51, 89, 0, 13, 68, 28, 209, 222, 132, 36, 107, 108, 55, 36, 12, 0, 15, 69, 28, 167, 243, 77,
+			240, 35, 47, 39, 65, 37, 89, 65, 0, 0, 11, 67, 195, 52, 202, 6, 49, 37, 89, 47, 0, 13, 68, 193, 66, 179, 204, 49, 35, 91,
+			47, 37, 37, 0, 10, 67, 131, 52, 202, 50, 37, 89, 47, 0, 12, 67, 128, 228, 202, 50, 39, 101, 39, 89, 47, 0, 17, 70, 128, 116,
+			142, 28, 168, 160, 50, 108, 88, 101, 108, 47, 40, 50, 0, 13, 67, 125, 180, 90, 65, 36, 83, 51, 35, 104, 17, 0, 14, 68, 125, 152,
+			34, 204, 65, 35, 19, 50, 35, 84, 37, 0, 17, 70, 123, 56, 145, 182, 39, 128, 55, 37, 84, 36, 51, 48, 40, 55, 0, 12, 67, 109,
+			21, 74, 83, 39, 51, 89, 35, 47, 0, 12, 67, 82, 20, 74, 91, 39, 107, 51, 35, 47, 0, 12, 67, 68, 229, 74, 51, 39, 101, 89,
+			35, 47, 0, 13, 68, 44, 120, 34, 204, 89, 108, 50, 35, 84, 37, 0, 16, 70, 29, 55, 199, 103, 55, 128, 36, 89, 65, 108, 19, 37,
+			55, 0, 22, 72, 29, 28, 211, 42, 44, 17, 28, 160, 35, 51, 37, 89, 47, 39, 49, 36, 51, 108, 47, 0, 12, 68, 28, 136, 158, 204,
+			35, 71, 39, 55, 37, 0, 0, 16, 69, 194, 216, 33, 31, 0, 49, 39, 48, 36, 50, 107, 108, 49, 0, 16, 70, 194, 33, 224, 42, 39,
+			192, 49, 40, 108, 50, 47, 39, 65, 0, 19, 70, 137, 236, 71, 197, 17, 207, 84, 39, 55, 81, 108, 81, 36, 51, 108, 72, 0, 17, 70,
+			133, 236, 224, 205, 55, 192, 107, 36, 55, 37, 50, 37, 89, 65, 0, 12, 67, 129, 193, 215, 50, 39, 104, 17, 108, 47, 0, 17, 68, 124,
+			226, 145, 100, 6, 65, 39, 4, 101, 47, 35, 51, 36, 19, 0, 15, 69, 120, 117, 8, 71, 16, 55, 108, 91, 71, 35, 51, 81, 0, 17,
+			70, 74, 35, 241, 136, 116, 64, 88, 40, 72, 81, 39, 84, 108, 51, 0, 20, 70, 60, 226, 145, 56, 119, 161, 72, 39, 101, 47, 35, 51,
+			101, 108, 55, 36, 12, 0, 17, 70, 41, 33, 209, 205, 55, 192, 47, 36, 88, 108, 51, 37, 89, 65, 0, 17, 70, 31, 56, 12, 30, 2,
+			0, 6, 37, 50, 75, 108, 50, 36, 71, 0, 17, 70, 31, 52, 115, 63, 55, 192, 37, 51, 37, 72, 37, 57, 39, 65, 0, 15, 69, 9,
+			232, 146, 68, 240, 108, 55, 40, 88, 35, 51, 72, 0, 28, 3, 58, 45, 100, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57,
+			36, 10, 101, 35, 50, 72, 108, 50, 0, 46, 0, 19, 70, 186, 3, 209, 104, 116, 128, 76, 36, 50, 72, 36, 51, 104, 17, 108, 88, 0,
+			20, 71, 135, 51, 209, 29, 60, 226, 128, 107, 37, 72, 51, 108, 89, 37, 57, 39, 50, 0, 10, 67, 132, 124, 243, 107, 108, 37, 12, 0,
+			19, 71, 129, 84, 71, 120, 250, 243, 128, 50, 35, 89, 51, 36, 72, 72, 37, 50, 0, 16, 68, 125, 166, 209, 40, 65, 35, 104, 17, 83,
+			36, 51, 35, 47, 0, 14, 68, 125, 50, 34, 112, 65, 35, 89, 71, 40, 104, 17, 0, 12, 67, 115, 59, 179, 104, 17, 36, 57, 76, 37,
+			0, 17, 70, 69, 244, 162, 68, 116, 128, 51, 35, 65, 88, 39, 51, 108, 88, 0, 13, 68, 62, 40, 19, 40, 72, 40, 50, 36, 89, 47,
+			0, 14, 69, 62, 36, 202, 29, 64, 72, 40, 89, 47, 108, 91, 0, 13, 68, 60, 120, 19, 40, 72, 108, 50, 36, 89, 47, 0, 10, 67,
+			29, 245, 51, 36, 65, 91, 37, 0, 13, 68, 29, 167, 199, 88, 36, 104, 17, 65, 108, 88, 0, 15, 71, 11, 59, 79, 11, 54, 226, 128,
+			108, 57, 48, 35, 72, 0, 10, 67, 8, 132, 179, 108, 71, 88, 37, 0, 0, 17, 70, 181, 225, 209, 205, 40, 64, 48, 39, 55, 108, 51,
+			37, 88, 36, 0, 19, 70, 181, 52, 78, 29, 232, 64, 48, 36, 89, 35, 51, 101, 108, 55, 36, 12, 0, 12, 67, 136, 241, 217, 84, 36,
+			6, 72, 108, 19, 0, 17, 70, 134, 3, 226, 68, 116, 192, 107, 36, 50, 72, 39, 51, 108, 89, 0, 14, 67, 127, 7, 155, 65, 39, 49,
+			35, 55, 55, 35, 83, 0, 11, 67, 125, 113, 217, 65, 39, 47, 108, 19, 0, 11, 67, 124, 232, 155, 65, 35, 101, 40, 83, 0, 11, 67,
+			76, 161, 240, 89, 36, 47, 108, 49, 0, 11, 67, 73, 17, 217, 88, 36, 51, 108, 19, 0, 18, 70, 61, 50, 135, 137, 19, 192, 72, 35,
+			89, 47, 108, 84, 35, 51, 72, 0, 14, 68, 33, 196, 71, 92, 71, 39, 104, 17, 51, 108, 47, 0, 17, 70, 30, 36, 71, 131, 56, 159,
+			39, 51, 108, 50, 37, 57, 39, 65, 0, 17, 70, 29, 28, 71, 131, 52, 159, 39, 51, 81, 108, 50, 37, 88, 65, 0, 21, 72, 10, 3,
+			226, 42, 44, 19, 206, 0, 108, 50, 72, 39, 47, 39, 49, 89, 37, 50, 0, 0, 14, 68, 204, 220, 226, 204, 57, 35, 107, 57, 35, 84,
+			37, 0, 15, 69, 180, 115, 240, 76, 160, 48, 108, 72, 49, 35, 89, 47, 0, 11, 67, 138, 12, 0, 84, 35, 50, 35, 49, 0, 10, 67,
+			129, 24, 128, 50, 35, 51, 39, 0, 13, 67, 125, 164, 86, 65, 39, 104, 17, 51, 36, 88, 0, 17, 69, 125, 49, 219, 68, 160, 65, 39,
+			89, 108, 83, 36, 51, 35, 47, 0, 10, 67, 125, 24, 128, 65, 35, 51, 39, 0, 11, 67, 108, 252, 0, 83, 35, 72, 35, 49, 0, 15,
+			69, 80, 120, 79, 30, 0, 91, 108, 107, 36, 72, 108, 50, 0, 17, 70, 68, 114, 51, 129, 56, 160, 51, 108, 71, 37, 50, 89, 39, 50,
+			0, 14, 68, 62, 23, 162, 204, 72, 36, 107, 55, 35, 84, 37, 0, 14, 68, 62, 12, 226, 204, 72, 39, 50, 57, 35, 84, 37, 0, 15,
+			69, 61, 60, 10, 30, 208, 72, 36, 89, 49, 47, 108, 48, 0, 16, 69, 32, 244, 243, 68, 160, 71, 35, 72, 89, 37, 51, 35, 47, 0,
+			11, 67, 29, 225, 218, 39, 55, 108, 104, 17, 0, 20, 71, 29, 28, 98, 76, 164, 98, 120, 36, 51, 81, 39, 89, 47, 36, 51, 39, 55,
+			0, 18, 70, 11, 17, 223, 126, 8, 160, 108, 81, 108, 65, 36, 65, 50, 39, 50, 0, 0, 20, 71, 181, 232, 145, 29, 236, 210, 124, 48,
+			39, 55, 39, 51, 108, 55, 37, 88, 65, 0, 7, 66, 130, 16, 50, 35, 0, 12, 67, 125, 180, 87, 65, 39, 83, 51, 35, 47, 0, 20,
+			70, 124, 115, 209, 33, 36, 113, 65, 108, 72, 35, 51, 71, 39, 88, 39, 51, 81, 0, 20, 71, 79, 8, 158, 29, 28, 210, 124, 89, 36,
+			49, 39, 55, 108, 51, 37, 88, 65, 0, 18, 70, 29, 50, 160, 110, 36, 79, 36, 89, 47, 35, 50, 83, 39, 51, 72, 0, 19, 70, 29,
+			50, 145, 123, 52, 161, 36, 89, 47, 36, 51, 55, 37, 88, 36, 12, 0, 18, 70, 28, 211, 199, 122, 1, 211, 35, 107, 35, 72, 39, 50,
+			50, 108, 89, 0, 12, 68, 28, 131, 199, 100, 36, 71, 72, 108, 19, 0, 8, 66, 130, 16, 50, 35, 0, 76, 0, 11, 67, 197, 60, 222,
+			81, 39, 89, 37, 55, 0, 12, 67, 125, 168, 158, 65, 39, 104, 17, 39, 55, 0, 10, 67, 125, 20, 128, 65, 35, 51, 88, 0, 22, 71,
+			93, 22, 201, 29, 230, 115, 128, 47, 39, 51, 83, 35, 47, 39, 55, 19, 36, 57, 50, 0, 10, 67, 29, 184, 158, 39, 83, 40, 55, 0,
+			20, 70, 28, 132, 92, 61, 18, 128, 35, 71, 35, 51, 104, 17, 39, 72, 51, 35, 47, 0, 14, 1, 91, 71, 36, 51, 108, 49, 36, 47,
+			71, 108, 88, 0, 0, 12, 67, 137, 23, 0, 84, 35, 51, 35, 104, 17, 0, 15, 67, 125, 196, 81, 65, 39, 104, 17, 35, 51, 51, 35,
+			51, 0, 14, 67, 125, 180, 209, 65, 39, 83, 35, 89, 89, 36, 51, 0, 23, 72, 124, 124, 51, 30, 39, 179, 77, 240, 65, 108, 49, 37,
+			57, 108, 84, 36, 55, 37, 89, 65, 0, 15, 69, 123, 49, 206, 137, 176, 55, 37, 57, 108, 101, 39, 83, 0, 23, 71, 29, 227, 95, 60,
+			119, 158, 132, 35, 55, 107, 35, 65, 72, 39, 55, 36, 55, 55, 108, 107, 0, 0, 25, 73, 182, 39, 135, 71, 52, 135, 79, 56, 160, 48,
+			39, 55, 108, 51, 37, 88, 108, 89, 37, 57, 39, 50, 0, 13, 68, 181, 28, 209, 136, 48, 35, 51, 37, 51, 40, 0, 11, 67, 136, 204,
+			224, 84, 36, 75, 37, 50, 0, 16, 70, 128, 116, 160, 29, 44, 192, 50, 108, 88, 50, 108, 88, 37, 0, 14, 68, 73, 20, 145, 136, 88,
+			36, 51, 88, 36, 51, 40, 0, 11, 67, 72, 136, 160, 88, 35, 71, 40, 50, 0, 11, 67, 63, 56, 160, 72, 39, 57, 40, 50, 0, 13,
+			68, 61, 38, 226, 120, 72, 36, 88, 83, 40, 55, 0, 13, 68, 51, 55, 243, 120, 75, 37, 65, 36, 57, 55, 0, 12, 67, 34, 36, 82,
+			71, 36, 84, 35, 51, 88, 0, 12, 68, 30, 3, 51, 120, 36, 50, 75, 37, 55, 0, 19, 70, 29, 151, 179, 53, 100, 74, 35, 19, 55,
+			108, 107, 35, 88, 51, 35, 47, 0, 17, 1, 93, 71, 36, 51, 108, 49, 36, 47, 71, 35, 89, 47, 36, 12, 0, 0, 12, 67, 181, 116,
+			83, 48, 36, 47, 51, 39, 89, 0, 10, 67, 180, 116, 83, 48, 108, 51, 89, 0, 13, 68, 127, 60, 19, 68, 65, 37, 49, 89, 36, 51,
+			0, 16, 70, 126, 39, 162, 42, 38, 192, 65, 39, 55, 39, 47, 39, 83, 0, 14, 68, 125, 145, 213, 68, 65, 39, 19, 108, 89, 36, 51,
+			0, 11, 67, 124, 183, 161, 65, 39, 89, 55, 36, 0, 12, 67, 109, 151, 161, 83, 35, 19, 55, 36, 12, 0, 11, 67, 77, 244, 64, 89,
+			35, 65, 35, 51, 0, 17, 70, 68, 226, 142, 136, 114, 0, 51, 35, 101, 47, 36, 101, 108, 71, 0, 11, 67, 45, 244, 64, 89, 35, 65,
+			35, 51, 0, 14, 67, 41, 184, 161, 47, 35, 83, 35, 84, 84, 39, 107, 0, 13, 68, 41, 23, 243, 124, 47, 35, 51, 65, 37, 65, 0,
+			10, 67, 9, 244, 64, 108, 65, 36, 51, 0, 12, 67, 8, 244, 83, 6, 108, 72, 51, 36, 89, 0, 0, 17, 69, 195, 51, 147, 70, 32,
+			49, 36, 57, 101, 39, 89, 51, 39, 12, 0, 14, 69, 126, 40, 10, 70, 32, 65, 39, 50, 47, 51, 39, 0, 11, 67, 125, 114, 0, 65,
+			35, 47, 35, 71, 0, 16, 69, 125, 50, 141, 205, 224, 65, 39, 89, 47, 35, 107, 37, 55, 0, 11, 67, 121, 146, 0, 55, 35, 19, 36,
+			71, 0, 12, 67, 109, 19, 128, 83, 35, 51, 51, 39, 101, 0, 12, 68, 79, 54, 226, 128, 89, 37, 83, 40, 50, 0, 14, 68, 77, 230,
+			226, 128, 89, 36, 55, 39, 83, 39, 50, 0, 11, 67, 77, 19, 128, 6, 89, 39, 51, 101, 0, 12, 68, 68, 115, 226, 128, 51, 108, 72,
+			39, 50, 0, 17, 70, 34, 36, 111, 136, 116, 179, 71, 40, 51, 90, 84, 108, 88, 37, 0, 22, 71, 29, 151, 135, 204, 213, 145, 40, 35,
+			19, 55, 108, 57, 36, 107, 35, 88, 51, 35, 47, 0, 12, 68, 11, 54, 226, 128, 108, 57, 83, 39, 50, 0, 0, 11, 67, 197, 33, 209,
+			81, 39, 88, 108, 51, 0, 27, 73, 192, 188, 209, 29, 225, 224, 41, 65, 209, 49, 35, 89, 37, 51, 39, 55, 10, 36, 50, 47, 36, 91,
+			108, 51, 0, 24, 72, 182, 4, 243, 122, 33, 224, 206, 0, 48, 36, 50, 89, 37, 55, 84, 108, 50, 37, 57, 108, 50, 0, 18, 70, 181,
+			24, 160, 60, 120, 0, 48, 35, 51, 84, 35, 50, 72, 108, 50, 0, 15, 69, 136, 119, 153, 85, 16, 84, 35, 55, 19, 35, 89, 51, 0,
+			14, 68, 129, 252, 209, 76, 50, 36, 65, 37, 51, 36, 89, 0, 11, 67, 129, 129, 209, 50, 36, 88, 108, 51, 0, 12, 67, 128, 193, 209,
+			50, 35, 75, 75, 108, 51, 0, 14, 67, 126, 34, 209, 65, 39, 19, 35, 89, 89, 36, 51, 0, 20, 70, 125, 28, 8, 60, 120, 0, 65,
+			39, 51, 35, 49, 49, 35, 71, 72, 108, 50, 0, 13, 67, 112, 241, 209, 104, 17, 35, 72, 72, 108, 51, 0, 15, 68, 112, 129, 222, 132,
+			104, 17, 35, 71, 108, 55, 36, 12, 0, 12, 67, 108, 193, 209, 83, 39, 75, 75, 108, 51, 0, 13, 67, 104, 241, 209, 104, 17, 35, 72,
+			72, 108, 51, 0, 11, 67, 61, 28, 64, 72, 36, 51, 35, 81, 0, 11, 67, 48, 241, 209, 75, 36, 72, 108, 51, 0, 11, 67, 41, 33,
+			209, 47, 36, 88, 108, 51, 0, 17, 68, 41, 23, 34, 132, 47, 35, 51, 104, 17, 39, 84, 84, 36, 12, 0, 12, 67, 40, 193, 209, 47,
+			39, 75, 75, 108, 51, 0, 10, 67, 33, 28, 64, 71, 35, 51, 81, 0, 16, 69, 32, 114, 30, 77, 16, 71, 108, 71, 39, 55, 89, 35,
+			51, 0, 9, 67, 29, 28, 64, 39, 51, 81, 0, 9, 67, 9, 19, 192, 108, 51, 72, 0, 0, 16, 69, 193, 65, 226, 69, 32, 49, 36,
+			91, 108, 84, 35, 51, 88, 0, 11, 67, 185, 241, 210, 76, 35, 65, 108, 88, 0, 10, 67, 137, 28, 0, 84, 39, 51, 49, 0, 16, 69,
+			128, 119, 223, 194, 0, 50, 108, 65, 39, 65, 49, 36, 50, 0, 11, 67, 124, 193, 210, 65, 39, 75, 108, 88, 0, 15, 68, 41, 225, 222,
+			136, 47, 35, 55, 35, 19, 55, 39, 12, 0, 11, 67, 40, 116, 78, 47, 108, 51, 39, 101, 0, 31, 3, 58, 45, 111, 50, 35, 65, 108,
+			72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 65, 39, 47, 36, 35, 75, 12, 36, 71, 0, 46, 31, 3, 58, 45, 111, 50, 35, 65,
+			108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 65, 39, 47, 36, 35, 75, 12, 36, 71, 0, 46, 7, 1, 97, 36, 57, 0, 101,
+			0, 12, 67, 181, 20, 207, 48, 39, 51, 89, 35, 72, 0, 13, 68, 181, 19, 199, 68, 48, 35, 51, 72, 108, 51, 0, 11, 67, 180, 161,
+			211, 48, 39, 47, 108, 89, 0, 23, 71, 113, 244, 71, 121, 247, 162, 192, 104, 17, 35, 65, 35, 51, 39, 55, 65, 39, 55, 40, 49, 0,
+			21, 71, 108, 228, 71, 121, 247, 162, 192, 83, 35, 101, 51, 39, 55, 65, 39, 55, 40, 49, 0, 12, 68, 57, 100, 71, 4, 101, 35, 88,
+			51, 108, 0, 16, 69, 41, 17, 226, 69, 48, 47, 36, 51, 108, 84, 36, 51, 89, 0, 12, 67, 32, 244, 113, 71, 35, 72, 51, 35, 81,
+			0, 15, 69, 28, 132, 112, 138, 16, 35, 71, 35, 51, 49, 40, 107, 0, 7, 1, 98, 71, 37, 0, 101, 8, 65, 124, 6, 65, 37, 65,
+			0, 0, 11, 67, 185, 22, 128, 76, 35, 51, 104, 17, 0, 8, 66, 122, 240, 55, 36, 90, 0, 11, 67, 84, 241, 212, 89, 36, 72, 108,
+			91, 0, 11, 67, 81, 18, 128, 6, 91, 39, 51, 47, 0, 11, 67, 77, 18, 128, 89, 35, 51, 35, 47, 0, 10, 67, 73, 18, 128, 88,
+			36, 51, 47, 0, 8, 66, 56, 128, 101, 39, 71, 0, 9, 66, 52, 128, 107, 39, 71, 71, 0, 11, 67, 49, 18, 128, 75, 36, 51, 36,
+			47, 0, 18, 70, 42, 44, 34, 109, 24, 158, 47, 39, 49, 39, 83, 36, 51, 39, 55, 0, 8, 66, 34, 240, 71, 36, 90, 0, 11, 67,
+			33, 17, 212, 71, 35, 51, 108, 91, 0, 7, 1, 99, 89, 37, 0, 101, 0, 17, 70, 135, 51, 209, 138, 248, 0, 107, 37, 72, 51, 39,
+			90, 36, 50, 0, 16, 69, 125, 50, 153, 29, 16, 65, 39, 89, 47, 35, 19, 108, 51, 0, 15, 68, 124, 202, 209, 60, 65, 39, 75, 35,
+			51, 51, 35, 72, 0, 15, 69, 78, 12, 83, 29, 16, 89, 35, 50, 81, 89, 108, 51, 0, 14, 69, 62, 36, 202, 29, 16, 72, 40, 89,
+			47, 108, 51, 0, 12, 67, 58, 33, 213, 101, 35, 6, 84, 108, 89, 0, 13, 68, 52, 167, 199, 148, 107, 35, 47, 65, 35, 50, 0, 14,
+			67, 41, 244, 240, 47, 35, 65, 35, 89, 89, 39, 49, 0, 13, 68, 29, 181, 17, 60, 35, 83, 91, 39, 51, 72, 0, 13, 68, 29, 180,
+			209, 60, 35, 83, 89, 39, 51, 72, 0, 15, 69, 29, 146, 136, 29, 16, 36, 19, 47, 36, 71, 108, 51, 0, 18, 70, 29, 118, 199, 27,
+			56, 64, 36, 47, 83, 108, 37, 57, 57, 36, 12, 0, 18, 70, 11, 8, 135, 71, 56, 159, 108, 49, 84, 108, 51, 37, 57, 39, 65, 0,
+			7, 1, 100, 72, 37, 0, 101, 0, 13, 67, 181, 236, 128, 48, 36, 55, 55, 36, 57, 36, 0, 19, 70, 110, 3, 199, 79, 56, 160, 83,
+			39, 50, 72, 108, 89, 37, 57, 39, 50, 0, 16, 69, 77, 236, 223, 30, 0, 89, 39, 55, 36, 57, 65, 108, 50, 0, 15, 67, 53, 204,
+			128, 107, 39, 104, 17, 104, 17, 36, 57, 36, 0, 8, 66, 48, 160, 75, 36, 47, 0, 10, 67, 40, 116, 74, 47, 108, 51, 47, 0, 11,
+			67, 34, 36, 74, 71, 40, 51, 36, 47, 0, 11, 67, 30, 36, 74, 39, 84, 36, 51, 47, 0, 6, 1, 101, 37, 0, 101, 0, 14, 69,
+			195, 50, 34, 68, 240, 49, 37, 71, 39, 51, 72, 0, 16, 69, 131, 49, 226, 68, 240, 50, 35, 57, 108, 84, 35, 51, 72, 0, 16, 69,
+			109, 17, 226, 68, 240, 83, 35, 51, 108, 84, 35, 51, 72, 0, 10, 67, 83, 56, 135, 91, 37, 84, 108, 0, 14, 68, 80, 123, 81, 192,
+			91, 108, 48, 35, 51, 35, 49, 0, 14, 69, 71, 59, 135, 68, 240, 51, 37, 76, 108, 51, 72, 0, 7, 66, 52, 112, 107, 108, 0, 21,
+			71, 32, 212, 71, 121, 151, 162, 124, 71, 35, 107, 51, 39, 55, 19, 39, 55, 40, 65, 0, 17, 70, 32, 116, 113, 64, 116, 64, 71, 108,
+			51, 81, 39, 88, 108, 51, 0, 17, 70, 29, 252, 207, 136, 116, 64, 19, 39, 65, 37, 72, 84, 108, 51, 0, 18, 70, 29, 232, 160, 63,
+			8, 161, 35, 55, 84, 35, 50, 72, 49, 40, 107, 0, 17, 70, 29, 225, 208, 192, 116, 64, 39, 55, 10, 35, 88, 49, 108, 51, 0, 8,
+			66, 124, 112, 65, 108, 0, 76, 7, 1, 102, 36, 83, 0, 101, 0, 10, 67, 199, 50, 128, 81, 36, 57, 47, 0, 11, 67, 138, 18, 0,
+			84, 35, 107, 35, 71, 0, 12, 67, 131, 50, 128, 50, 37, 57, 57, 35, 47, 0, 14, 68, 129, 129, 209, 40, 50, 36, 88, 108, 51, 35,
+			47, 0, 12, 67, 127, 50, 128, 65, 36, 57, 57, 36, 47, 0, 13, 68, 42, 40, 19, 40, 47, 40, 50, 36, 89, 47, 0, 9, 67, 31,
+			52, 243, 37, 89, 108, 0, 12, 68, 30, 40, 145, 40, 40, 84, 36, 51, 47, 0, 13, 68, 29, 24, 19, 40, 36, 51, 50, 36, 89, 47,
+			0, 7, 1, 103, 75, 37, 0, 101, 0, 14, 68, 124, 210, 162, 28, 65, 39, 107, 47, 35, 84, 108, 0, 10, 67, 77, 33, 192, 89, 36,
+			88, 108, 0, 10, 67, 69, 33, 192, 51, 39, 88, 108, 0, 13, 68, 30, 4, 162, 28, 36, 50, 88, 36, 84, 108, 0, 8, 1, 104, 36,
+			57, 76, 0, 101, 0, 14, 68, 205, 151, 34, 32, 57, 35, 19, 104, 17, 40, 71, 0, 19, 70, 137, 232, 49, 138, 33, 210, 84, 36, 55,
+			36, 50, 81, 39, 84, 108, 88, 0, 16, 69, 130, 39, 179, 76, 160, 50, 39, 84, 36, 55, 37, 89, 47, 0, 11, 67, 128, 193, 202, 50,
+			36, 75, 108, 47, 0, 12, 67, 126, 183, 138, 65, 36, 55, 55, 35, 47, 0, 11, 67, 122, 33, 202, 55, 36, 84, 108, 47, 0, 14, 68,
+			82, 36, 98, 204, 91, 39, 12, 51, 35, 84, 37, 0, 14, 69, 68, 120, 79, 30, 0, 51, 108, 107, 72, 108, 50, 0, 14, 67, 53, 236,
+			202, 107, 36, 55, 55, 37, 57, 35, 47, 0, 14, 68, 45, 145, 222, 32, 89, 35, 19, 108, 55, 35, 71, 0, 13, 68, 42, 3, 199, 32,
+			47, 39, 50, 72, 108, 71, 0, 18, 70, 41, 24, 173, 138, 209, 210, 47, 36, 51, 39, 48, 39, 48, 108, 88, 0, 15, 69, 35, 60, 95,
+			30, 0, 71, 37, 81, 35, 65, 108, 50, 0, 13, 68, 34, 3, 199, 32, 71, 35, 50, 72, 108, 71, 0, 10, 67, 33, 72, 128, 71, 36,
+			91, 39, 0, 7, 1, 105, 108, 57, 0, 101, 0, 16, 69, 195, 56, 159, 68, 176, 49, 37, 57, 40, 65, 35, 51, 89, 0, 11, 67, 181,
+			24, 135, 48, 35, 51, 84, 108, 0, 11, 67, 137, 37, 0, 84, 35, 88, 36, 91, 0, 10, 67, 97, 231, 192, 88, 39, 55, 65, 0, 8,
+			66, 78, 16, 89, 36, 12, 0, 12, 67, 52, 244, 199, 107, 35, 72, 89, 35, 50, 0, 8, 1, 106, 75, 36, 57, 0, 101, 0, 12, 67,
+			126, 33, 204, 65, 35, 84, 84, 108, 75, 0, 17, 69, 125, 50, 162, 48, 128, 65, 39, 89, 47, 39, 12, 75, 36, 71, 0, 15, 69, 108,
+			117, 158, 8, 128, 83, 108, 88, 36, 55, 108, 71, 0, 14, 68, 77, 241, 204, 40, 89, 36, 65, 108, 75, 35, 47, 0, 12, 67, 69, 124,
+			222, 51, 39, 47, 36, 57, 55, 0, 17, 69, 61, 50, 145, 79, 48, 72, 35, 89, 47, 10, 51, 36, 89, 37, 0, 13, 68, 42, 33, 222,
+			40, 47, 40, 108, 55, 36, 47, 0, 11, 67, 33, 60, 204, 71, 35, 89, 37, 75, 0, 11, 67, 33, 24, 140, 71, 39, 51, 40, 75, 0,
+			13, 68, 29, 231, 226, 40, 35, 55, 35, 65, 40, 47, 0, 13, 68, 29, 81, 222, 40, 36, 89, 108, 55, 35, 47, 0, 8, 1, 107, 49,
+			36, 57, 0, 101, 0, 9, 67, 184, 115, 192, 76, 108, 72, 0, 12, 67, 137, 39, 0, 84, 35, 88, 35, 104, 17, 0, 15, 67, 125, 200,
+			159, 65, 39, 104, 17, 35, 84, 84, 36, 65, 0, 15, 68, 125, 194, 150, 28, 65, 39, 104, 17, 47, 35, 88, 108, 0, 14, 68, 124, 193,
+			210, 28, 65, 35, 75, 108, 88, 35, 50, 0, 13, 67, 113, 231, 0, 104, 17, 36, 55, 36, 104, 17, 0, 12, 67, 73, 232, 64, 88, 36,
+			55, 55, 36, 12, 0, 13, 67, 70, 12, 223, 51, 36, 50, 37, 57, 39, 65, 0, 11, 67, 69, 232, 64, 51, 36, 55, 36, 12, 0, 11,
+			67, 41, 232, 64, 47, 35, 55, 36, 12, 0, 14, 68, 35, 54, 210, 28, 71, 37, 57, 35, 83, 88, 108, 0, 9, 67, 9, 232, 64, 108,
+			55, 36, 0, 7, 1, 108, 36, 55, 0, 101, 0, 14, 69, 196, 116, 95, 138, 0, 81, 108, 51, 65, 39, 50, 0, 17, 68, 124, 164, 162,
+			48, 65, 39, 47, 36, 88, 35, 84, 84, 36, 75, 0, 18, 70, 109, 17, 224, 78, 44, 192, 83, 35, 51, 108, 50, 89, 35, 84, 37, 0,
+			13, 68, 61, 17, 243, 136, 72, 36, 51, 108, 57, 84, 0, 15, 69, 42, 40, 135, 120, 160, 47, 39, 84, 108, 55, 36, 47, 0, 21, 71,
+			33, 28, 210, 136, 139, 71, 80, 71, 36, 51, 37, 88, 39, 71, 36, 48, 108, 91, 0, 16, 69, 33, 28, 82, 206, 0, 71, 35, 51, 81,
+			39, 88, 37, 50, 0, 12, 67, 32, 252, 224, 71, 36, 6, 72, 37, 50, 0, 7, 1, 109, 36, 65, 0, 101, 0, 11, 67, 198, 1, 207,
+			81, 39, 50, 108, 72, 0, 13, 68, 193, 226, 226, 124, 49, 39, 55, 89, 40, 65, 0, 13, 68, 125, 178, 135, 52, 65, 36, 83, 47, 108,
+			107, 0, 15, 69, 101, 236, 209, 88, 112, 35, 55, 37, 51, 36, 88, 108, 0, 12, 67, 78, 33, 207, 89, 35, 84, 6, 108, 72, 0, 11,
+			67, 57, 39, 192, 101, 35, 88, 35, 65, 0, 14, 68, 49, 17, 198, 124, 75, 35, 51, 108, 19, 36, 65, 0, 12, 67, 32, 124, 207, 6,
+			71, 108, 57, 35, 72, 0, 7, 1, 110, 36, 50, 0, 101, 0, 20, 71, 181, 232, 145, 29, 236, 211, 40, 48, 39, 55, 39, 51, 108, 55,
+			37, 89, 47, 0, 15, 68, 132, 246, 226, 128, 107, 36, 72, 6, 83, 39, 12, 50, 0, 11, 67, 131, 8, 158, 50, 36, 49, 40, 55, 0,
+			18, 70, 68, 129, 217, 204, 114, 128, 51, 39, 71, 108, 10, 37, 57, 108, 47, 0, 28, 74, 68, 115, 243, 136, 167, 162, 205, 44, 226, 128,
+			51, 108, 72, 37, 57, 39, 47, 36, 55, 84, 37, 88, 57, 39, 50, 0, 11, 67, 56, 200, 158, 101, 35, 75, 40, 55, 0, 16, 69, 33,
+			230, 214, 137, 224, 71, 39, 55, 83, 39, 88, 40, 55, 0, 15, 69, 29, 35, 226, 28, 192, 36, 88, 72, 36, 84, 108, 75, 0, 16, 70,
+			9, 180, 98, 63, 50, 128, 108, 83, 51, 39, 72, 37, 47, 0, 6, 1, 111, 39, 0, 101, 0, 19, 70, 138, 4, 162, 25, 225, 192, 84,
+			36, 50, 36, 88, 40, 19, 36, 55, 108, 0, 13, 68, 129, 244, 98, 60, 50, 35, 65, 51, 40, 72, 0, 10, 67, 129, 99, 0, 50, 39,
+			88, 75, 0, 14, 68, 129, 20, 243, 60, 50, 35, 51, 36, 89, 37, 72, 0, 12, 67, 128, 200, 159, 50, 39, 6, 75, 40, 65, 0, 13,
+			68, 124, 215, 226, 60, 65, 35, 107, 65, 40, 72, 0, 13, 68, 109, 21, 7, 60, 83, 35, 51, 91, 108, 72, 0, 11, 67, 82, 44, 223,
+			91, 35, 84, 37, 65, 0, 13, 68, 81, 245, 7, 60, 91, 36, 65, 91, 108, 72, 0, 12, 67, 52, 193, 209, 107, 35, 75, 75, 108, 51,
+			0, 26, 73, 48, 252, 207, 29, 225, 224, 41, 65, 209, 75, 35, 72, 37, 72, 39, 55, 36, 50, 47, 36, 91, 108, 51, 0, 13, 68, 42,
+			5, 51, 60, 47, 35, 50, 91, 37, 72, 0, 14, 68, 33, 163, 199, 60, 71, 35, 104, 17, 72, 108, 72, 0, 10, 67, 33, 72, 64, 71,
+			36, 91, 36, 0, 13, 67, 33, 24, 159, 71, 36, 51, 35, 84, 35, 65, 0, 15, 69, 33, 24, 136, 137, 240, 71, 35, 51, 39, 71, 40,
+			65, 0, 21, 72, 31, 56, 10, 69, 252, 222, 30, 0, 37, 50, 47, 36, 51, 65, 37, 55, 108, 50, 0, 12, 68, 29, 17, 198, 132, 36,
+			51, 108, 36, 12, 0, 7, 1, 112, 48, 37, 0, 101, 0, 15, 69, 193, 242, 7, 206, 0, 49, 39, 65, 71, 108, 57, 50, 0, 11, 67,
+			188, 123, 96, 90, 108, 48, 39, 50, 0, 15, 69, 181, 66, 162, 30, 0, 48, 39, 91, 47, 84, 108, 50, 0, 13, 67, 139, 55, 160, 84,
+			37, 57, 39, 55, 39, 50, 0, 11, 67, 130, 33, 210, 50, 35, 84, 108, 88, 0, 11, 67, 129, 24, 160, 50, 39, 51, 39, 50, 0, 11,
+			67, 126, 28, 224, 65, 35, 107, 37, 50, 0, 13, 67, 113, 236, 0, 104, 17, 39, 55, 55, 35, 49, 0, 13, 68, 109, 23, 226, 120, 83,
+			39, 51, 65, 40, 55, 0, 11, 67, 78, 12, 192, 89, 36, 50, 50, 37, 0, 14, 68, 61, 225, 243, 120, 72, 35, 55, 108, 57, 36, 55,
+			0, 11, 67, 52, 193, 210, 107, 36, 75, 108, 88, 0, 14, 69, 42, 44, 19, 206, 0, 47, 39, 49, 89, 37, 50, 0, 11, 67, 33, 204,
+			192, 71, 35, 104, 17, 37, 0, 11, 67, 32, 140, 224, 71, 36, 71, 37, 50, 0, 16, 70, 29, 52, 71, 27, 55, 128, 36, 89, 51, 108,
+			19, 37, 55, 0, 16, 69, 29, 50, 179, 82, 0, 36, 89, 47, 36, 57, 91, 36, 50, 0, 9, 1, 113, 49, 37, 57, 40, 0, 101, 0,
+			13, 68, 194, 3, 243, 124, 49, 35, 50, 72, 37, 65, 0, 13, 68, 193, 228, 226, 124, 49, 39, 55, 89, 40, 65, 0, 11, 67, 183, 59,
+			161, 48, 37, 76, 36, 12, 0, 15, 69, 136, 120, 31, 136, 240, 84, 108, 50, 36, 65, 40, 72, 0, 15, 69, 133, 66, 145, 136, 240, 107,
+			35, 91, 47, 51, 40, 72, 0, 16, 69, 131, 54, 202, 28, 240, 50, 35, 57, 39, 83, 47, 108, 72, 0, 13, 68, 125, 156, 199, 68, 65,
+			36, 19, 57, 108, 51, 0, 13, 67, 112, 245, 0, 104, 17, 35, 72, 72, 35, 91, 0, 15, 68, 106, 1, 243, 124, 104, 17, 35, 50, 108,
+			57, 36, 65, 0, 11, 67, 71, 52, 143, 51, 37, 88, 35, 72, 0, 16, 69, 70, 24, 31, 136, 240, 51, 35, 107, 50, 36, 65, 40, 72,
+			0, 12, 68, 42, 35, 199, 68, 47, 40, 72, 108, 51, 0, 16, 68, 33, 72, 34, 124, 71, 36, 91, 36, 50, 35, 84, 35, 65, 0, 13,
+			67, 33, 20, 207, 71, 36, 51, 36, 89, 35, 72, 0, 18, 70, 32, 242, 145, 195, 50, 0, 71, 35, 72, 47, 35, 51, 49, 37, 71, 0,
+			15, 69, 32, 117, 48, 138, 16, 71, 108, 91, 39, 49, 40, 107, 0, 12, 68, 29, 149, 7, 68, 35, 19, 91, 108, 51, 0, 12, 68, 28,
+			213, 135, 68, 36, 107, 88, 108, 51, 0, 7, 1, 114, 108, 51, 0, 101, 0, 14, 68, 197, 40, 34, 128, 81, 36, 88, 36, 50, 39, 50,
+			0, 13, 68, 197, 28, 115, 128, 81, 39, 51, 81, 37, 50, 0, 18, 70, 193, 24, 176, 136, 252, 222, 49, 39, 51, 39, 49, 39, 72, 37,
+			55, 0, 10, 67, 185, 50, 128, 76, 39, 89, 47, 0, 13, 68, 181, 50, 162, 128, 48, 36, 89, 47, 40, 50, 0, 16, 69, 181, 22, 199,
+			205, 224, 48, 39, 51, 39, 83, 108, 57, 55, 0, 13, 68, 180, 113, 179, 128, 6, 48, 108, 37, 12, 50, 0, 13, 68, 130, 210, 162, 128,
+			50, 36, 48, 47, 39, 50, 0, 14, 68, 129, 252, 210, 128, 50, 36, 65, 37, 88, 35, 50, 0, 13, 68, 129, 180, 98, 128, 50, 36, 83,
+			51, 39, 50, 0, 15, 69, 126, 34, 7, 205, 224, 6, 65, 39, 71, 108, 57, 55, 0, 13, 68, 125, 178, 162, 128, 65, 35, 83, 47, 40,
+			50, 0, 13, 68, 124, 164, 98, 128, 65, 36, 47, 51, 39, 50, 0, 15, 69, 124, 161, 224, 137, 224, 65, 36, 47, 108, 50, 39, 55, 0,
+			13, 68, 124, 114, 51, 128, 65, 108, 71, 36, 57, 50, 0, 16, 68, 113, 231, 210, 128, 104, 17, 35, 55, 35, 65, 88, 35, 50, 0, 10,
+			67, 55, 53, 128, 107, 36, 57, 88, 0, 16, 68, 55, 7, 243, 128, 107, 35, 49, 35, 65, 36, 57, 108, 50, 0, 14, 68, 53, 228, 162,
+			128, 107, 35, 55, 35, 88, 40, 50, 0, 13, 68, 40, 164, 98, 128, 47, 36, 47, 51, 39, 50, 0, 12, 68, 33, 147, 199, 72, 71, 35,
+			72, 35, 88, 0, 14, 69, 29, 60, 17, 137, 224, 36, 89, 49, 51, 40, 55, 0, 11, 67, 28, 232, 179, 35, 101, 35, 84, 37, 0, 14,
+			68, 28, 136, 179, 128, 35, 71, 35, 84, 36, 57, 50, 0, 7, 1, 115, 36, 89, 0, 101, 0, 14, 68, 197, 28, 210, 60, 81, 39, 51,
+			37, 88, 35, 72, 0, 17, 70, 197, 22, 226, 70, 35, 192, 81, 36, 51, 83, 39, 51, 40, 72, 0, 15, 69, 193, 66, 146, 29, 16, 49,
+			36, 91, 47, 88, 108, 51, 0, 10, 67, 192, 193, 192, 49, 39, 75, 108, 0, 10, 67, 132, 193, 192, 107, 36, 75, 108, 0, 13, 68, 129,
+			50, 162, 132, 50, 35, 89, 47, 40, 107, 0, 15, 69, 128, 124, 98, 29, 16, 50, 108, 81, 39, 84, 108, 51, 0, 12, 67, 128, 116, 176,
+			6, 50, 108, 88, 39, 49, 0, 15, 68, 125, 147, 18, 132, 65, 39, 19, 75, 36, 88, 36, 12, 0, 13, 67, 120, 140, 240, 55, 35, 71,
+			71, 36, 57, 49, 0, 13, 67, 115, 59, 176, 104, 17, 36, 57, 76, 35, 49, 0, 16, 69, 70, 20, 237, 29, 16, 51, 35, 107, 89, 36,
+			48, 108, 51, 0, 19, 70, 53, 200, 156, 60, 120, 0, 107, 39, 104, 17, 40, 104, 17, 72, 108, 50, 0, 21, 71, 48, 124, 210, 29, 227,
+			151, 28, 75, 108, 57, 36, 88, 39, 55, 101, 35, 47, 108, 0, 17, 69, 41, 28, 202, 205, 240, 47, 37, 51, 37, 47, 37, 57, 39, 65,
+			0, 13, 68, 41, 23, 226, 76, 47, 36, 51, 65, 40, 89, 0, 12, 67, 33, 36, 112, 71, 35, 88, 51, 35, 49, 0, 15, 68, 32, 247,
+			210, 132, 71, 35, 72, 65, 35, 88, 88, 36, 0, 17, 70, 32, 120, 140, 60, 120, 0, 71, 108, 84, 36, 75, 72, 108, 50, 0, 16, 70,
+			30, 36, 74, 138, 211, 192, 39, 51, 47, 39, 48, 36, 72, 0, 12, 68, 30, 2, 34, 132, 35, 50, 71, 40, 107, 0, 7, 1, 116, 47,
+			37, 0, 101, 0, 13, 67, 197, 236, 128, 81, 35, 55, 55, 36, 57, 36, 0, 12, 67, 193, 236, 128, 49, 35, 55, 36, 57, 36, 0, 14,
+			68, 183, 49, 237, 204, 48, 36, 57, 108, 48, 36, 57, 0, 18, 69, 128, 119, 217, 206, 0, 50, 108, 65, 39, 10, 35, 57, 57, 35, 50,
+			0, 8, 66, 126, 224, 65, 39, 76, 0, 17, 70, 124, 115, 223, 29, 39, 128, 65, 108, 72, 65, 108, 88, 36, 55, 0, 13, 67, 112, 117,
+			28, 104, 17, 108, 91, 39, 104, 17, 0, 17, 70, 76, 124, 19, 205, 184, 160, 89, 108, 49, 89, 37, 83, 39, 50, 0, 13, 67, 61, 245,
+			28, 72, 35, 65, 36, 91, 104, 17, 0, 13, 67, 61, 152, 138, 72, 35, 19, 6, 84, 35, 47, 0, 11, 67, 61, 17, 237, 72, 36, 51,
+			108, 48, 0, 18, 70, 32, 247, 243, 128, 168, 160, 71, 35, 72, 65, 37, 50, 47, 39, 50, 0, 26, 73, 29, 236, 10, 70, 34, 145, 30,
+			220, 192, 36, 55, 36, 49, 47, 36, 51, 39, 47, 36, 51, 108, 48, 37, 0, 18, 70, 29, 65, 224, 43, 56, 160, 36, 91, 108, 50, 47,
+			37, 57, 39, 50, 0, 7, 1, 117, 57, 40, 0, 101, 0, 14, 69, 128, 116, 143, 204, 240, 50, 108, 88, 72, 37, 72, 0, 17, 68, 127,
+			2, 148, 108, 6, 65, 39, 4, 49, 47, 35, 91, 36, 83, 0, 16, 69, 125, 177, 226, 90, 16, 65, 39, 83, 108, 84, 36, 88, 36, 0,
+			15, 68, 70, 36, 98, 192, 51, 39, 12, 51, 39, 84, 35, 49, 0, 14, 68, 60, 116, 98, 192, 72, 108, 51, 39, 84, 35, 49, 0, 18,
+			69, 42, 3, 223, 74, 16, 47, 39, 50, 72, 65, 35, 88, 88, 36, 12, 0, 17, 70, 41, 24, 145, 205, 39, 192, 47, 36, 51, 39, 51,
+			37, 88, 65, 0, 18, 69, 32, 119, 156, 138, 16, 71, 36, 55, 104, 17, 39, 84, 84, 36, 12, 0, 13, 69, 31, 52, 162, 122, 16, 37,
+			88, 39, 55, 36, 0, 17, 70, 29, 50, 145, 139, 60, 207, 36, 89, 47, 36, 51, 39, 37, 72, 0, 17, 70, 9, 50, 145, 139, 60, 207,
+			108, 89, 47, 36, 51, 39, 37, 72, 0, 7, 1, 118, 84, 37, 0, 101, 0, 13, 67, 131, 20, 84, 50, 36, 81, 35, 51, 36, 91, 0,
+			8, 66, 130, 32, 50, 39, 12, 0, 17, 69, 109, 200, 71, 207, 48, 83, 39, 104, 17, 35, 107, 108, 37, 12, 0, 14, 68, 77, 23, 211,
+			40, 89, 35, 51, 65, 35, 89, 47, 0, 15, 68, 34, 35, 84, 40, 71, 36, 84, 35, 107, 91, 35, 47, 0, 12, 67, 32, 229, 20, 71,
+			35, 101, 91, 36, 91, 0, 12, 1, 119, 72, 35, 71, 36, 55, 57, 40, 0, 101, 0, 18, 70, 194, 3, 199, 129, 56, 145, 49, 39, 50,
+			72, 108, 50, 89, 39, 51, 0, 21, 70, 180, 244, 72, 73, 28, 64, 48, 36, 72, 35, 51, 10, 71, 39, 88, 39, 51, 81, 0, 20, 70,
+			131, 56, 146, 183, 59, 81, 50, 37, 57, 40, 88, 48, 36, 57, 48, 36, 51, 0, 16, 70, 130, 37, 51, 63, 51, 192, 50, 39, 91, 37,
+			72, 37, 72, 0, 11, 67, 128, 225, 217, 50, 39, 101, 108, 19, 0, 19, 70, 125, 17, 220, 35, 56, 0, 65, 39, 51, 108, 104, 17, 36,
+			71, 37, 50, 0, 14, 67, 124, 200, 155, 65, 39, 75, 35, 84, 84, 35, 83, 0, 11, 67, 113, 113, 217, 104, 17, 36, 47, 108, 0, 10,
+			67, 81, 145, 217, 91, 39, 108, 19, 0, 11, 67, 80, 193, 217, 91, 39, 75, 108, 19, 0, 18, 70, 63, 60, 81, 9, 33, 209, 72, 37,
+			81, 35, 51, 108, 88, 108, 51, 0, 17, 70, 61, 50, 173, 30, 232, 64, 72, 35, 89, 47, 48, 108, 76, 36, 0, 17, 70, 41, 24, 138,
+			29, 40, 64, 47, 35, 51, 39, 47, 108, 88, 36, 0, 18, 70, 30, 12, 223, 205, 72, 0, 35, 50, 37, 65, 36, 57, 91, 36, 50, 0,
+			13, 68, 28, 210, 162, 28, 36, 107, 47, 36, 84, 108, 0, 16, 70, 28, 136, 147, 103, 51, 192, 35, 71, 40, 89, 35, 37, 72, 0, 11,
+			67, 8, 140, 240, 108, 71, 57, 36, 49, 0, 8, 1, 120, 36, 49, 89, 0, 101, 0, 16, 69, 128, 115, 209, 76, 160, 50, 108, 72, 39,
+			51, 39, 89, 47, 0, 12, 67, 112, 252, 0, 104, 17, 35, 72, 35, 49, 0, 15, 68, 105, 40, 34, 204, 104, 17, 35, 88, 50, 35, 84,
+			37, 0, 13, 67, 84, 252, 220, 89, 36, 72, 72, 37, 104, 17, 0, 10, 67, 79, 55, 128, 89, 36, 57, 55, 0, 15, 69, 58, 36, 115,
+			30, 0, 101, 39, 51, 37, 57, 108, 50, 0, 15, 68, 53, 231, 34, 204, 107, 35, 55, 104, 17, 35, 84, 37, 0, 16, 68, 42, 37, 115,
+			200, 6, 47, 39, 12, 89, 37, 57, 36, 12, 0, 12, 68, 35, 56, 51, 204, 71, 37, 50, 37, 12, 0, 21, 72, 11, 24, 10, 137, 40,
+			179, 207, 0, 108, 81, 50, 36, 47, 39, 88, 39, 37, 49, 0, 8, 1, 121, 84, 108, 57, 0, 101, 0, 10, 67, 205, 52, 64, 57, 39,
+			89, 51, 0, 18, 70, 197, 17, 224, 124, 124, 225, 81, 36, 51, 108, 50, 65, 108, 57, 36, 0, 11, 67, 181, 52, 64, 48, 36, 89, 35,
+			51, 0, 19, 70, 137, 147, 226, 137, 156, 207, 84, 35, 19, 72, 39, 84, 35, 19, 37, 72, 0, 14, 68, 129, 35, 243, 192, 6, 50, 35,
+			88, 72, 37, 49, 0, 13, 68, 125, 84, 71, 100, 65, 36, 89, 51, 108, 19, 0, 13, 68, 125, 56, 135, 192, 65, 36, 89, 84, 108, 49,
+			0, 12, 67, 121, 199, 192, 6, 55, 39, 104, 17, 65, 0, 12, 67, 113, 52, 64, 104, 17, 36, 89, 36, 51, 0, 8, 66, 82, 16, 91,
+			35, 107, 0, 19, 70, 61, 24, 160, 124, 124, 225, 72, 35, 51, 40, 50, 65, 108, 57, 36, 12, 0, 14, 68, 42, 39, 51, 108, 6, 47,
+			39, 104, 17, 37, 83, 0, 11, 67, 33, 84, 64, 71, 35, 89, 35, 51, 0, 16, 69, 32, 114, 156, 136, 112, 71, 108, 47, 35, 104, 17,
+			84, 108, 0, 12, 68, 30, 37, 135, 100, 39, 12, 88, 108, 19, 0, 12, 68, 28, 199, 199, 100, 36, 75, 65, 108, 19, 0, 20, 72, 10,
+			2, 145, 138, 216, 179, 204, 240, 108, 50, 47, 51, 39, 48, 39, 37, 72, 0, 7, 1, 122, 88, 37, 0, 101, 0, 22, 71, 181, 24, 175,
+			76, 164, 98, 128, 48, 36, 51, 39, 90, 36, 89, 47, 36, 51, 39, 50, 0, 17, 69, 125, 18, 150, 139, 48, 65, 39, 51, 47, 35, 88,
+			35, 84, 37, 0, 23, 71, 66, 39, 7, 111, 50, 179, 128, 88, 40, 104, 17, 108, 83, 37, 57, 35, 47, 36, 57, 50, 0, 14, 1, 123,
+			81, 12, 37, 57, 40, 65, 36, 71, 108, 88, 0, 0, 21, 72, 192, 123, 115, 40, 119, 179, 73, 240, 49, 108, 48, 37, 47, 108, 55, 37,
+			88, 65, 0, 12, 67, 185, 27, 145, 76, 35, 51, 76, 35, 51, 0, 11, 67, 129, 119, 0, 50, 39, 47, 104, 17, 0, 22, 72, 124, 114,
+			145, 204, 119, 179, 73, 240, 65, 108, 47, 36, 51, 57, 108, 55, 37, 88, 65, 0, 17, 70, 109, 17, 224, 78, 33, 192, 83, 36, 51, 108,
+			50, 89, 40, 108, 0, 10, 67, 85, 232, 64, 89, 36, 55, 36, 0, 11, 67, 80, 252, 223, 91, 39, 72, 37, 65, 0, 10, 67, 61, 232,
+			64, 72, 35, 55, 36, 0, 11, 67, 53, 232, 64, 107, 39, 55, 55, 36, 0, 11, 67, 49, 20, 192, 75, 35, 51, 35, 89, 0, 10, 67,
+			40, 124, 223, 47, 108, 57, 65, 0, 11, 67, 33, 20, 192, 71, 36, 51, 36, 89, 0, 10, 67, 29, 232, 64, 36, 55, 108, 107, 0, 15,
+			69, 29, 229, 25, 29, 144, 39, 91, 91, 39, 19, 108, 19, 0, 16, 70, 10, 252, 207, 132, 124, 0, 108, 90, 37, 72, 107, 108, 49, 0,
+			0, 11, 67, 197, 24, 160, 81, 36, 51, 40, 50, 0, 18, 70, 181, 52, 79, 31, 60, 192, 48, 36, 89, 35, 51, 72, 108, 37, 12, 0,
+			11, 67, 69, 56, 160, 51, 36, 89, 40, 50, 0, 10, 67, 61, 232, 128, 72, 35, 55, 84, 0, 12, 67, 57, 252, 224, 101, 39, 65, 36,
+			57, 50, 0, 10, 67, 49, 232, 128, 75, 39, 55, 39, 0, 11, 67, 41, 232, 128, 47, 36, 55, 39, 12, 0, 13, 68, 41, 17, 210, 136,
+			47, 35, 51, 108, 88, 40, 0, 16, 69, 40, 132, 82, 206, 0, 47, 35, 71, 35, 51, 88, 37, 50, 0, 14, 68, 34, 23, 162, 120, 71,
+			39, 107, 6, 55, 40, 55, 0, 23, 71, 34, 3, 209, 182, 23, 162, 204, 71, 35, 50, 72, 35, 51, 48, 35, 107, 55, 35, 84, 37, 0,
+			24, 73, 31, 55, 226, 130, 44, 94, 136, 140, 224, 37, 65, 39, 50, 39, 81, 39, 55, 39, 71, 37, 50, 0, 10, 67, 29, 232, 128, 35,
+			55, 39, 12, 0, 17, 1, 125, 81, 12, 37, 57, 40, 65, 36, 71, 35, 89, 47, 36, 12, 0, 0, 18, 70, 186, 17, 209, 61, 18, 0,
+			76, 108, 107, 108, 51, 72, 35, 51, 71, 0, 18, 70, 182, 212, 243, 194, 39, 135, 48, 36, 48, 89, 37, 49, 39, 55, 108, 0, 14, 67,
+			126, 36, 211, 65, 39, 19, 35, 89, 89, 36, 89, 0, 14, 68, 126, 17, 204, 124, 65, 39, 107, 108, 75, 36, 65, 0, 14, 67, 124, 199,
+			161, 65, 35, 75, 35, 55, 55, 36, 12, 0, 14, 68, 120, 117, 145, 68, 55, 108, 88, 35, 51, 35, 51, 0, 19, 70, 109, 23, 199, 129,
+			24, 135, 83, 35, 51, 65, 108, 50, 51, 35, 84, 108, 0, 20, 71, 79, 52, 202, 124, 114, 179, 192, 89, 37, 89, 47, 36, 65, 108, 47,
+			37, 49, 0, 14, 68, 56, 124, 19, 68, 101, 108, 49, 36, 89, 35, 51, 0, 11, 67, 31, 4, 211, 35, 49, 89, 36, 89, 0, 9, 66,
+			126, 0, 65, 35, 50, 0, 76, 0, 15, 69, 197, 17, 224, 137, 224, 81, 36, 51, 108, 50, 40, 55, 0, 14, 68, 125, 145, 243, 128, 65,
+			39, 19, 108, 57, 36, 50, 0, 21, 71, 68, 115, 243, 136, 164, 71, 180, 51, 108, 72, 37, 57, 39, 47, 39, 51, 108, 48, 0, 13, 68,
+			32, 243, 243, 128, 71, 35, 72, 72, 37, 50, 0, 14, 68, 9, 18, 145, 72, 108, 51, 47, 36, 51, 39, 88, 0, 0, 15, 69, 197, 23,
+			211, 205, 16, 81, 35, 51, 65, 89, 37, 51, 0, 14, 68, 132, 248, 17, 76, 107, 36, 72, 50, 36, 51, 89, 0, 12, 67, 127, 1, 209,
+			65, 35, 49, 49, 108, 51, 0, 14, 67, 125, 53, 205, 65, 39, 89, 35, 47, 47, 35, 107, 0, 16, 69, 109, 236, 30, 137, 16, 83, 39,
+			55, 49, 36, 55, 39, 51, 0, 10, 67, 101, 65, 193, 36, 91, 108, 19, 0, 11, 67, 81, 145, 209, 91, 39, 19, 108, 51, 0, 16, 69,
+			77, 227, 84, 137, 16, 89, 35, 55, 35, 107, 91, 40, 51, 0, 16, 69, 70, 34, 160, 205, 240, 51, 40, 47, 36, 50, 57, 39, 65, 0,
+			13, 68, 68, 119, 211, 76, 51, 108, 65, 89, 36, 89, 0, 17, 69, 52, 248, 141, 85, 16, 107, 35, 72, 72, 39, 107, 35, 89, 51, 0,
+			12, 68, 42, 35, 51, 132, 47, 39, 75, 37, 107, 0, 15, 69, 9, 49, 224, 77, 16, 108, 89, 108, 50, 89, 39, 51, 0, 9, 67, 8,
+			129, 193, 108, 71, 108, 0, 0, 18, 70, 181, 18, 158, 29, 232, 128, 48, 39, 51, 47, 35, 55, 35, 55, 39, 0, 19, 71, 135, 52, 202,
+			71, 49, 243, 204, 107, 37, 89, 47, 36, 51, 37, 57, 37, 0, 0, 12, 67, 207, 5, 79, 57, 36, 49, 89, 35, 72, 0, 18, 70, 190,
+			4, 71, 42, 36, 64, 90, 36, 50, 36, 51, 108, 47, 39, 51, 0, 13, 68, 133, 67, 199, 68, 107, 39, 91, 72, 108, 51, 0, 13, 68,
+			129, 53, 226, 68, 50, 35, 89, 47, 40, 51, 0, 14, 68, 125, 195, 199, 68, 65, 36, 104, 17, 72, 108, 51, 0, 14, 68, 125, 72, 98,
+			68, 65, 35, 91, 6, 107, 40, 51, 0, 13, 68, 124, 164, 98, 68, 65, 36, 47, 51, 39, 51, 0, 16, 70, 71, 50, 34, 74, 39, 192,
+			51, 37, 71, 39, 88, 39, 65, 0, 12, 67, 41, 20, 207, 47, 35, 51, 89, 35, 72, 0, 18, 70, 34, 5, 51, 131, 55, 192, 71, 36,
+			50, 36, 91, 37, 50, 37, 65, 0, 12, 67, 33, 24, 147, 71, 39, 51, 39, 12, 89, 0, 13, 68, 28, 196, 71, 4, 19, 36, 75, 51,
+			108, 19, 0, 16, 70, 28, 132, 71, 135, 55, 192, 36, 71, 51, 108, 107, 37, 65, 0, 16, 70, 9, 23, 199, 42, 36, 64, 108, 51, 65,
+			108, 47, 39, 51, 0, 0, 19, 69, 181, 20, 226, 50, 32, 48, 39, 12, 51, 89, 39, 12, 6, 75, 40, 12, 0, 13, 68, 181, 19, 199,
+			72, 48, 35, 51, 72, 108, 88, 0, 9, 66, 136, 128, 6, 84, 36, 71, 0, 13, 68, 130, 36, 98, 72, 50, 39, 12, 51, 40, 88, 0,
+			24, 73, 127, 56, 51, 28, 168, 145, 205, 50, 128, 65, 37, 50, 37, 57, 108, 47, 39, 51, 37, 89, 47, 0, 12, 67, 78, 3, 20, 89,
+			35, 50, 75, 36, 91, 0, 12, 67, 70, 3, 20, 51, 35, 50, 75, 36, 91, 0, 17, 70, 29, 55, 135, 124, 136, 158, 36, 89, 55, 108,
+			65, 71, 39, 55, 0, 8, 65, 128, 6, 50, 40, 50, 0, 0, 15, 69, 128, 114, 48, 29, 16, 50, 108, 71, 36, 49, 108, 51, 0, 12,
+			67, 113, 17, 213, 104, 17, 39, 51, 108, 89, 0, 18, 70, 108, 118, 94, 28, 168, 0, 83, 108, 19, 36, 55, 108, 47, 39, 50, 0, 16,
+			70, 70, 39, 226, 122, 36, 192, 51, 39, 65, 39, 55, 40, 89, 0, 15, 69, 42, 12, 211, 137, 16, 47, 36, 50, 37, 89, 39, 51, 0,
+			16, 69, 34, 12, 15, 29, 16, 71, 39, 50, 35, 49, 72, 108, 51, 0, 13, 68, 32, 229, 34, 60, 71, 35, 101, 91, 40, 72, 0, 15,
+			69, 30, 12, 19, 29, 16, 36, 50, 49, 36, 89, 108, 51, 0, 15, 69, 29, 101, 209, 29, 16, 36, 88, 47, 36, 51, 108, 51, 0, 0,
+			15, 68, 193, 17, 243, 200, 49, 36, 51, 108, 57, 36, 57, 36, 0, 8, 66, 128, 160, 50, 39, 47, 0, 14, 69, 128, 119, 241, 30, 0,
+			50, 108, 65, 81, 108, 50, 0, 17, 70, 128, 116, 112, 136, 172, 224, 50, 108, 51, 49, 39, 47, 37, 50, 0, 13, 68, 127, 60, 17, 32,
+			65, 37, 49, 51, 39, 71, 0, 15, 68, 124, 202, 209, 32, 65, 39, 75, 35, 51, 51, 35, 71, 0, 12, 67, 83, 4, 202, 91, 36, 49,
+			35, 89, 47, 0, 8, 66, 68, 160, 51, 39, 47, 0, 12, 67, 57, 232, 138, 101, 35, 55, 84, 35, 47, 0, 14, 67, 48, 252, 202, 75,
+			36, 72, 72, 37, 57, 35, 47, 0, 11, 67, 43, 4, 202, 47, 36, 49, 89, 47, 0, 0, 15, 69, 181, 225, 211, 204, 240, 48, 36, 55,
+			108, 89, 37, 72, 0, 13, 68, 124, 164, 98, 192, 65, 35, 47, 51, 40, 49, 0, 17, 69, 101, 247, 176, 68, 240, 35, 65, 35, 55, 10,
+			49, 35, 51, 72, 0, 18, 70, 32, 252, 17, 60, 116, 64, 71, 35, 72, 49, 36, 51, 72, 108, 51, 0, 15, 69, 32, 120, 140, 136, 240,
+			71, 108, 84, 39, 75, 40, 72, 0, 12, 68, 32, 116, 98, 192, 71, 108, 51, 39, 49, 0, 8, 66, 132, 112, 107, 108, 0, 76, 8, 66,
+			68, 112, 51, 108, 0, 76, 8, 66, 128, 112, 50, 108, 0, 76, 0, 14, 68, 129, 177, 211, 40, 50, 36, 83, 108, 89, 35, 47, 0, 14,
+			68, 128, 193, 211, 40, 50, 36, 75, 108, 89, 35, 47, 0, 14, 68, 109, 17, 211, 40, 83, 36, 51, 108, 89, 35, 47, 0, 11, 67, 108,
+			168, 179, 83, 35, 47, 84, 108, 0, 14, 68, 60, 225, 222, 40, 72, 36, 101, 108, 55, 35, 47, 0, 14, 68, 56, 193, 222, 40, 101, 36,
+			75, 108, 55, 35, 47, 0, 14, 68, 32, 247, 211, 40, 71, 35, 72, 65, 35, 89, 47, 0, 11, 67, 31, 56, 136, 35, 57, 57, 40, 71,
+			0, 0, 21, 72, 135, 59, 96, 136, 172, 210, 137, 16, 107, 37, 48, 50, 39, 47, 37, 88, 39, 51, 0, 23, 71, 113, 24, 154, 68, 140,
+			222, 132, 104, 17, 36, 51, 39, 104, 17, 35, 51, 71, 37, 55, 36, 0, 0, 13, 68, 186, 35, 209, 204, 76, 39, 72, 35, 51, 37, 0,
+			14, 68, 182, 23, 162, 204, 48, 35, 107, 55, 35, 84, 37, 0, 13, 68, 127, 2, 162, 32, 65, 35, 49, 47, 40, 71, 0, 9, 66, 124,
+			224, 65, 39, 12, 101, 0, 16, 68, 124, 168, 158, 204, 65, 39, 47, 36, 84, 35, 55, 55, 37, 0, 16, 69, 124, 115, 209, 74, 0, 65,
+			108, 72, 35, 51, 88, 35, 50, 0, 12, 67, 85, 184, 138, 89, 35, 83, 84, 35, 47, 0, 14, 68, 54, 36, 162, 204, 107, 39, 12, 88,
+			35, 84, 37, 0, 15, 69, 29, 50, 179, 122, 0, 36, 89, 47, 37, 55, 36, 50, 0, 0, 11, 67, 185, 251, 71, 76, 35, 65, 48, 108,
+			0, 12, 67, 129, 188, 199, 50, 35, 83, 57, 35, 50, 0, 12, 67, 124, 196, 135, 65, 39, 75, 35, 88, 108, 0, 22, 71, 81, 28, 217,
+			41, 243, 199, 68, 91, 35, 51, 37, 19, 35, 47, 65, 35, 72, 108, 51, 0, 11, 67, 58, 12, 199, 101, 39, 50, 57, 108, 0, 18, 70,
+			57, 241, 209, 9, 232, 143, 101, 39, 65, 108, 51, 108, 55, 40, 72, 0, 13, 67, 42, 39, 135, 47, 35, 84, 35, 55, 55, 108, 0, 10,
+			67, 30, 5, 7, 36, 50, 91, 108, 0, 10, 67, 29, 245, 135, 36, 65, 88, 108, 0, 0, 14, 68, 193, 177, 243, 40, 49, 36, 83, 108,
+			57, 35, 47, 0, 12, 68, 183, 55, 162, 40, 48, 37, 55, 39, 47, 0, 14, 68, 134, 212, 98, 40, 107, 35, 48, 35, 51, 40, 47, 0,
+			14, 68, 113, 39, 243, 40, 104, 17, 39, 88, 65, 37, 47, 0, 15, 69, 108, 120, 10, 75, 48, 83, 108, 50, 47, 36, 88, 37, 0, 14,
+			68, 101, 234, 243, 40, 36, 55, 55, 37, 57, 35, 47, 0, 11, 67, 70, 20, 98, 51, 35, 107, 51, 39, 0, 22, 72, 68, 115, 243, 136,
+			124, 10, 206, 32, 51, 108, 72, 37, 57, 39, 35, 49, 47, 37, 84, 0, 14, 68, 55, 1, 243, 40, 107, 36, 49, 108, 57, 35, 47, 0,
+			14, 68, 48, 132, 98, 40, 75, 35, 71, 35, 51, 40, 47, 0, 14, 68, 33, 24, 98, 40, 71, 35, 51, 35, 107, 40, 47, 0, 29, 75,
+			29, 60, 7, 128, 252, 224, 30, 44, 199, 207, 48, 36, 89, 49, 108, 50, 72, 37, 50, 108, 84, 37, 57, 37, 37, 12, 0, 0, 11, 67,
+			33, 227, 192, 71, 35, 55, 35, 72, 0, 12, 68, 29, 24, 173, 28, 39, 51, 40, 48, 108, 0, 0, 15, 69, 197, 17, 224, 204, 160, 81,
+			36, 51, 108, 50, 37, 47, 0, 14, 68, 194, 4, 209, 136, 49, 39, 50, 89, 36, 51, 84, 0, 17, 70, 134, 39, 162, 192, 116, 202, 107,
+			39, 55, 39, 49, 108, 89, 47, 0, 10, 67, 124, 168, 0, 65, 35, 47, 50, 0, 11, 67, 120, 200, 0, 55, 35, 75, 35, 50, 0, 15,
+			69, 102, 6, 226, 30, 0, 39, 50, 83, 39, 84, 108, 50, 0, 12, 68, 58, 35, 209, 136, 101, 39, 72, 51, 39, 0, 17, 70, 30, 3,
+			226, 129, 44, 192, 35, 50, 72, 39, 50, 36, 88, 37, 0, 17, 69, 29, 232, 161, 204, 160, 39, 55, 39, 107, 37, 57, 57, 35, 47, 0,
+			9, 67, 29, 23, 128, 36, 51, 55, 0, 0, 11, 67, 206, 24, 143, 57, 35, 107, 40, 72, 0, 15, 69, 133, 33, 209, 180, 112, 107, 36,
+			88, 108, 51, 48, 108, 0, 15, 69, 58, 33, 225, 80, 112, 101, 108, 107, 36, 91, 35, 50, 0, 15, 69, 48, 120, 27, 72, 112, 75, 108,
+			50, 83, 35, 88, 108, 0, 10, 67, 29, 252, 207, 39, 65, 37, 72, 0, 15, 69, 29, 50, 161, 72, 112, 36, 89, 47, 36, 107, 88, 108,
+			0, 11, 67, 29, 23, 192, 6, 36, 51, 35, 65, 0, 0, 14, 69, 124, 124, 240, 70, 32, 65, 108, 57, 49, 51, 39, 0, 12, 67, 121,
+			194, 0, 55, 35, 104, 17, 35, 71, 0, 12, 67, 111, 53, 94, 83, 36, 57, 89, 35, 55, 0, 19, 70, 61, 24, 33, 31, 50, 128, 72,
+			35, 51, 50, 35, 107, 108, 57, 35, 47, 0, 20, 70, 53, 232, 135, 83, 4, 115, 107, 35, 55, 84, 108, 91, 36, 49, 35, 51, 37, 0,
+			11, 67, 41, 56, 140, 47, 35, 89, 40, 75, 0, 14, 67, 41, 40, 140, 47, 35, 88, 35, 84, 84, 39, 75, 0, 18, 70, 30, 2, 161,
+			31, 50, 128, 36, 50, 47, 36, 107, 108, 57, 35, 47, 0, 15, 69, 29, 59, 81, 78, 32, 36, 89, 48, 36, 51, 89, 39, 0, 18, 70,
+			10, 12, 94, 137, 184, 136, 108, 50, 81, 36, 55, 39, 83, 39, 71, 0, 0, 13, 68, 183, 55, 226, 60, 48, 36, 57, 65, 40, 72, 0,
+			11, 67, 181, 228, 192, 48, 35, 55, 35, 89, 0, 14, 68, 181, 28, 226, 60, 48, 36, 51, 37, 57, 39, 72, 0, 13, 68, 181, 23, 162,
+			60, 48, 36, 51, 55, 40, 72, 0, 12, 67, 137, 228, 95, 84, 36, 55, 35, 51, 65, 0, 13, 67, 133, 66, 159, 6, 107, 35, 91, 47,
+			39, 65, 0, 14, 68, 131, 49, 243, 60, 50, 35, 57, 108, 57, 35, 72, 0, 12, 67, 124, 132, 95, 65, 39, 71, 51, 35, 65, 0, 12,
+			67, 69, 180, 95, 51, 36, 83, 39, 51, 65, 0, 10, 67, 61, 35, 192, 72, 39, 88, 72, 0, 14, 67, 40, 196, 223, 47, 35, 75, 35,
+			89, 89, 39, 65, 0, 13, 68, 40, 124, 51, 60, 47, 35, 19, 49, 37, 72, 0, 14, 68, 35, 49, 243, 60, 71, 37, 57, 108, 57, 35,
+			72, 0, 0, 18, 70, 196, 119, 202, 137, 188, 202, 81, 108, 65, 36, 47, 39, 83, 37, 47, 0, 8, 66, 122, 208, 55, 39, 48, 0, 13,
+			67, 77, 18, 156, 89, 36, 51, 47, 36, 104, 17, 0, 21, 71, 72, 116, 98, 74, 3, 241, 204, 88, 108, 51, 39, 88, 36, 50, 72, 36,
+			81, 37, 0, 10, 67, 45, 183, 128, 89, 39, 83, 55, 0, 0, 16, 69, 198, 20, 81, 136, 240, 81, 39, 107, 35, 51, 51, 40, 72, 0,
+			15, 69, 194, 3, 209, 136, 240, 49, 39, 50, 72, 51, 40, 72, 0, 14, 69, 192, 120, 15, 204, 240, 49, 108, 50, 72, 37, 72, 0, 12,
+			67, 125, 188, 207, 65, 39, 6, 83, 37, 72, 0, 12, 68, 124, 124, 226, 68, 65, 108, 57, 39, 51, 0, 13, 67, 121, 164, 143, 55, 35,
+			104, 17, 88, 35, 72, 0, 13, 67, 113, 116, 97, 104, 17, 35, 47, 51, 36, 12, 0, 9, 67, 101, 22, 192, 39, 51, 83, 0, 13, 67,
+			85, 183, 192, 6, 89, 36, 83, 51, 39, 65, 0, 11, 67, 82, 12, 207, 91, 36, 50, 37, 72, 0, 11, 67, 81, 22, 192, 91, 35, 51,
+			35, 83, 0, 13, 68, 78, 4, 226, 68, 89, 36, 50, 89, 39, 51, 0, 11, 67, 76, 228, 97, 89, 39, 101, 51, 36, 0, 13, 67, 53,
+			68, 97, 107, 35, 91, 35, 51, 36, 12, 0, 11, 67, 53, 56, 143, 107, 35, 89, 40, 72, 0, 15, 68, 40, 135, 162, 68, 47, 35, 71,
+			35, 55, 84, 39, 51, 0, 12, 67, 33, 203, 161, 71, 39, 104, 17, 76, 36, 0, 13, 68, 32, 116, 98, 68, 71, 108, 51, 84, 35, 51,
+			0, 0, 15, 68, 197, 22, 202, 128, 81, 36, 51, 36, 83, 47, 35, 50, 0, 15, 68, 181, 232, 173, 72, 48, 39, 55, 39, 12, 48, 35,
+			88, 0, 11, 67, 120, 214, 0, 55, 35, 107, 35, 88, 0, 12, 67, 112, 129, 222, 104, 17, 36, 71, 108, 55, 0, 13, 67, 105, 49, 222,
+			104, 17, 35, 89, 89, 108, 55, 0, 13, 68, 76, 116, 146, 128, 89, 108, 88, 88, 35, 50, 0, 12, 67, 33, 24, 179, 71, 36, 51, 35,
+			84, 37, 0, 15, 69, 29, 227, 145, 136, 192, 39, 55, 101, 39, 51, 40, 75, 0, 0, 13, 68, 194, 3, 243, 60, 49, 35, 50, 72, 37,
+			72, 0, 17, 70, 136, 119, 160, 43, 56, 0, 84, 108, 55, 36, 50, 47, 37, 50, 0, 11, 67, 131, 17, 223, 50, 36, 81, 108, 65, 0,
+			14, 68, 128, 133, 10, 132, 50, 36, 71, 36, 91, 47, 36, 0, 13, 68, 125, 146, 34, 60, 65, 35, 19, 71, 40, 72, 0, 14, 67, 124,
+			212, 91, 65, 39, 107, 35, 51, 51, 35, 83, 0, 16, 69, 101, 236, 209, 105, 240, 35, 55, 108, 51, 35, 104, 17, 65, 0, 13, 67, 101,
+			71, 31, 19, 36, 91, 104, 17, 35, 65, 0, 12, 67, 87, 52, 91, 89, 36, 57, 51, 35, 83, 0, 15, 68, 77, 20, 209, 132, 89, 39,
+			51, 89, 39, 51, 36, 12, 0, 15, 69, 70, 252, 211, 137, 16, 51, 36, 90, 37, 89, 39, 51, 0, 16, 69, 60, 120, 20, 137, 16, 72,
+			108, 50, 36, 91, 84, 35, 51, 0, 12, 67, 41, 245, 48, 47, 35, 65, 36, 91, 49, 0, 15, 68, 40, 133, 81, 132, 47, 35, 71, 89,
+			35, 51, 36, 12, 0, 11, 67, 35, 56, 31, 71, 37, 50, 35, 65, 0, 16, 69, 34, 3, 220, 205, 16, 71, 35, 50, 72, 104, 17, 37,
+			51, 0, 15, 68, 33, 231, 51, 76, 71, 36, 55, 104, 17, 36, 57, 89, 0, 11, 67, 32, 120, 95, 71, 108, 107, 35, 65, 0, 16, 70,
+			30, 3, 209, 139, 51, 192, 35, 50, 72, 51, 39, 57, 72, 0, 13, 68, 28, 241, 223, 132, 36, 72, 108, 65, 36, 12, 0, 17, 70, 28,
+			136, 81, 70, 35, 192, 35, 71, 107, 35, 51, 51, 40, 72, 0, 13, 68, 28, 131, 145, 132, 35, 71, 101, 36, 51, 36, 0, 15, 69, 28,
+			98, 158, 29, 176, 36, 19, 47, 36, 55, 108, 83, 0, 20, 71, 10, 6, 222, 136, 40, 18, 28, 108, 50, 83, 36, 55, 39, 108, 50, 88,
+			108, 0, 0, 15, 69, 204, 116, 223, 206, 0, 57, 108, 89, 35, 65, 37, 50, 0, 13, 68, 198, 35, 199, 120, 81, 39, 12, 72, 108, 55,
+			0, 11, 67, 185, 225, 224, 76, 36, 55, 108, 50, 0, 11, 67, 181, 225, 224, 48, 36, 55, 108, 50, 0, 11, 67, 139, 56, 0, 84, 37,
+			57, 35, 50, 0, 15, 67, 125, 200, 32, 65, 39, 104, 17, 35, 50, 50, 36, 50, 0, 13, 67, 125, 68, 92, 65, 35, 91, 51, 36, 104,
+			17, 0, 15, 67, 124, 212, 92, 65, 39, 107, 35, 51, 51, 36, 104, 17, 0, 12, 68, 76, 104, 135, 120, 89, 39, 6, 108, 55, 0, 16,
+			69, 63, 2, 145, 206, 0, 72, 39, 49, 47, 39, 51, 37, 50, 0, 14, 69, 60, 114, 147, 138, 0, 72, 108, 47, 89, 39, 50, 0, 13,
+			68, 56, 119, 226, 80, 101, 108, 65, 40, 12, 91, 0, 12, 67, 50, 33, 224, 75, 35, 6, 84, 108, 50, 0, 12, 68, 42, 43, 98, 80,
+			47, 40, 48, 40, 91, 0, 12, 67, 42, 33, 224, 6, 47, 35, 84, 108, 50, 0, 13, 68, 41, 178, 179, 80, 47, 35, 83, 47, 37, 91,
+			0, 13, 67, 35, 51, 220, 71, 36, 57, 72, 35, 104, 17, 0, 12, 68, 31, 7, 199, 120, 36, 49, 65, 108, 55, 0, 12, 68, 30, 23,
+			199, 120, 36, 107, 65, 108, 55, 0, 12, 68, 29, 151, 199, 120, 35, 19, 65, 108, 55, 0, 12, 68, 28, 199, 199, 120, 36, 75, 65, 108,
+			55, 0, 0, 11, 67, 194, 34, 161, 49, 40, 47, 35, 107, 0, 12, 67, 181, 19, 225, 48, 35, 51, 72, 36, 12, 0, 16, 68, 132, 195,
+			225, 124, 6, 107, 36, 75, 72, 35, 107, 39, 65, 0, 17, 69, 124, 225, 200, 70, 16, 65, 39, 101, 108, 71, 36, 51, 36, 12, 0, 17,
+			70, 110, 39, 176, 122, 36, 64, 83, 39, 55, 49, 36, 55, 39, 51, 0, 10, 67, 89, 230, 64, 88, 36, 55, 19, 0, 10, 67, 57, 230,
+			64, 101, 35, 55, 19, 0, 13, 68, 43, 8, 51, 192, 47, 36, 49, 50, 37, 49, 0, 13, 69, 30, 35, 243, 78, 16, 39, 72, 37, 89,
+			36, 0, 16, 70, 30, 12, 219, 137, 23, 192, 39, 50, 37, 83, 39, 51, 65, 0, 12, 68, 29, 118, 71, 124, 36, 47, 19, 108, 65, 0,
+			12, 67, 29, 34, 161, 35, 88, 39, 47, 36, 12, 0, 15, 69, 29, 28, 202, 70, 16, 36, 51, 37, 47, 51, 36, 12, 0, 14, 69, 28,
+			168, 136, 137, 48, 39, 47, 39, 71, 40, 89, 0, 15, 69, 9, 18, 159, 205, 48, 108, 51, 47, 36, 65, 37, 89, 0, 0, 15, 69, 198,
+			3, 209, 139, 48, 81, 35, 50, 72, 51, 40, 57, 0, 13, 68, 183, 55, 199, 128, 48, 36, 57, 65, 108, 50, 0, 14, 68, 129, 76, 223,
+			128, 50, 36, 91, 37, 65, 35, 50, 0, 14, 68, 128, 168, 135, 128, 50, 35, 47, 35, 84, 108, 50, 0, 14, 68, 125, 232, 135, 128, 65,
+			35, 55, 35, 84, 108, 50, 0, 16, 68, 125, 119, 198, 128, 6, 65, 39, 47, 4, 65, 35, 36, 50, 0, 17, 69, 125, 85, 219, 139, 48,
+			65, 39, 89, 47, 35, 83, 35, 84, 37, 0, 14, 68, 121, 199, 199, 128, 55, 39, 104, 17, 65, 108, 50, 0, 13, 67, 121, 164, 148, 55,
+			35, 104, 17, 88, 36, 91, 0, 15, 68, 121, 161, 243, 40, 55, 36, 104, 17, 108, 57, 35, 47, 0, 24, 73, 108, 116, 95, 31, 8, 158,
+			191, 60, 0, 83, 108, 51, 65, 108, 49, 39, 55, 39, 90, 37, 49, 0, 12, 67, 85, 164, 115, 89, 39, 104, 17, 51, 108, 0, 10, 67,
+			82, 39, 243, 91, 40, 65, 37, 0, 11, 67, 76, 124, 212, 89, 108, 57, 36, 91, 0, 11, 67, 72, 124, 212, 88, 108, 57, 36, 91, 0,
+			14, 68, 70, 35, 225, 128, 51, 40, 72, 36, 107, 36, 50, 0, 13, 68, 69, 104, 135, 128, 51, 36, 88, 84, 108, 50, 0, 10, 67, 68,
+			124, 212, 51, 108, 57, 91, 0, 12, 67, 61, 231, 34, 72, 39, 55, 104, 17, 40, 0, 12, 68, 35, 56, 7, 128, 71, 37, 50, 108, 50,
+			0, 15, 68, 32, 243, 225, 128, 71, 35, 72, 72, 35, 107, 35, 50, 0, 14, 68, 32, 241, 243, 40, 71, 36, 72, 108, 57, 35, 47, 0,
+			12, 68, 32, 232, 135, 128, 71, 36, 101, 108, 50, 0, 14, 68, 32, 168, 135, 128, 71, 36, 47, 35, 84, 108, 50, 0, 20, 71, 32, 124,
+			209, 126, 40, 51, 56, 71, 108, 57, 36, 51, 65, 40, 50, 37, 101, 0, 15, 69, 32, 115, 31, 29, 224, 71, 108, 75, 35, 65, 108, 55,
+			0, 12, 68, 29, 232, 135, 128, 35, 55, 84, 108, 50, 0, 13, 68, 29, 60, 51, 40, 36, 89, 49, 36, 57, 47, 0, 13, 68, 28, 232,
+			135, 128, 35, 101, 35, 84, 108, 50, 0, 17, 70, 28, 136, 135, 121, 181, 158, 35, 71, 39, 55, 83, 35, 88, 55, 0, 0, 16, 69, 197,
+			232, 15, 29, 240, 81, 39, 55, 35, 50, 72, 108, 65, 0, 17, 70, 185, 28, 7, 122, 35, 192, 76, 36, 51, 49, 108, 55, 40, 72, 0,
+			16, 69, 139, 50, 160, 29, 240, 84, 37, 57, 36, 47, 50, 108, 65, 0, 19, 70, 131, 56, 15, 29, 35, 192, 50, 35, 57, 35, 50, 72,
+			108, 88, 35, 72, 0, 12, 67, 126, 23, 176, 65, 39, 107, 55, 36, 49, 0, 16, 69, 125, 50, 143, 29, 240, 65, 39, 89, 47, 35, 72,
+			108, 65, 0, 18, 70, 86, 28, 226, 131, 52, 223, 89, 35, 107, 57, 39, 50, 37, 89, 65, 0, 14, 68, 33, 193, 243, 28, 71, 35, 104,
+			17, 108, 57, 108, 0, 16, 70, 30, 40, 51, 110, 36, 95, 39, 50, 37, 83, 39, 51, 65, 0, 14, 68, 29, 35, 115, 44, 35, 88, 107,
+			36, 57, 89, 36, 0, 17, 70, 10, 1, 209, 83, 52, 223, 108, 50, 108, 51, 91, 37, 89, 65, 0, 17, 70, 9, 251, 115, 71, 52, 223,
+			108, 65, 48, 37, 51, 37, 89, 65, 0, 0, 14, 68, 197, 17, 243, 80, 81, 36, 51, 108, 57, 36, 91, 0, 15, 68, 181, 28, 20, 80,
+			48, 39, 51, 49, 36, 91, 36, 91, 0, 10, 67, 137, 104, 128, 84, 39, 88, 40, 0, 14, 68, 130, 33, 210, 80, 50, 35, 84, 108, 88,
+			36, 91, 0, 15, 69, 70, 36, 162, 120, 160, 51, 40, 88, 84, 36, 55, 47, 0, 10, 67, 62, 216, 128, 72, 36, 48, 39, 0, 16, 69,
+			59, 52, 145, 30, 0, 101, 36, 57, 88, 35, 51, 108, 50, 0, 15, 69, 29, 50, 179, 138, 0, 36, 89, 47, 37, 84, 36, 50, 0, 17,
+			69, 29, 50, 136, 69, 192, 36, 89, 47, 35, 71, 51, 35, 104, 17, 0, 10, 67, 28, 252, 237, 39, 72, 37, 48, 0, 0, 19, 71, 196,
+			119, 162, 30, 12, 211, 124, 81, 108, 55, 84, 108, 50, 37, 89, 65, 0, 19, 70, 194, 6, 226, 79, 56, 147, 49, 39, 50, 83, 40, 89,
+			37, 57, 40, 89, 0, 19, 71, 192, 114, 135, 123, 52, 162, 68, 49, 108, 47, 108, 55, 37, 88, 39, 51, 0, 17, 70, 182, 36, 71, 81,
+			22, 192, 48, 40, 51, 35, 91, 51, 35, 83, 0, 17, 70, 127, 55, 179, 138, 7, 192, 65, 37, 55, 57, 40, 50, 39, 65, 0, 14, 68,
+			125, 113, 222, 100, 65, 39, 47, 108, 55, 36, 19, 0, 13, 68, 124, 229, 98, 84, 65, 35, 101, 89, 40, 89, 0, 20, 71, 124, 161, 200,
+			137, 236, 211, 124, 65, 36, 47, 108, 71, 39, 55, 37, 89, 65, 0, 20, 71, 123, 50, 17, 29, 236, 211, 124, 55, 37, 71, 36, 51, 108,
+			55, 37, 89, 65, 0, 15, 69, 68, 129, 202, 207, 0, 51, 39, 71, 108, 47, 37, 49, 0, 18, 70, 61, 71, 224, 192, 119, 192, 72, 39,
+			91, 65, 35, 50, 49, 108, 65, 0, 21, 71, 60, 164, 95, 206, 12, 211, 124, 72, 36, 47, 36, 51, 65, 37, 50, 37, 89, 65, 0, 16,
+			69, 57, 27, 84, 42, 16, 101, 35, 51, 48, 39, 91, 47, 36, 0, 19, 70, 41, 23, 179, 138, 7, 192, 47, 36, 51, 36, 55, 57, 40,
+			50, 39, 65, 0, 16, 69, 32, 210, 34, 54, 16, 71, 39, 107, 71, 40, 107, 36, 12, 0, 0, 12, 67, 197, 236, 115, 81, 36, 55, 36,
+			81, 37, 0, 17, 70, 124, 124, 205, 40, 115, 0, 65, 108, 57, 35, 107, 47, 108, 75, 0, 16, 69, 109, 17, 223, 137, 64, 83, 35, 6,
+			51, 108, 65, 40, 91, 0, 17, 69, 73, 243, 148, 71, 48, 88, 35, 65, 35, 101, 91, 35, 51, 37, 0, 20, 71, 31, 56, 10, 70, 12,
+			226, 72, 37, 50, 47, 36, 51, 50, 37, 57, 40, 88, 0, 0, 12, 67, 205, 168, 145, 57, 39, 104, 17, 39, 51, 0, 11, 67, 196, 116,
+			145, 81, 108, 88, 39, 51, 0, 21, 72, 192, 114, 135, 34, 39, 179, 77, 240, 49, 108, 47, 108, 71, 39, 55, 37, 89, 65, 0, 22, 72,
+			191, 56, 138, 70, 43, 115, 77, 240, 90, 36, 39, 47, 36, 51, 39, 48, 37, 89, 65, 0, 19, 70, 133, 23, 224, 136, 172, 240, 107, 36,
+			51, 65, 39, 50, 39, 47, 37, 49, 0, 23, 72, 108, 168, 138, 70, 43, 115, 77, 240, 83, 39, 47, 39, 47, 36, 51, 39, 48, 37, 89,
+			65, 0, 11, 67, 76, 124, 209, 89, 108, 57, 36, 51, 0, 21, 72, 76, 120, 10, 68, 119, 179, 77, 240, 89, 108, 50, 47, 51, 108, 55,
+			37, 89, 65, 0, 11, 67, 72, 124, 209, 88, 108, 19, 36, 51, 0, 11, 67, 60, 120, 145, 72, 108, 84, 35, 51, 0, 11, 67, 56, 120,
+			145, 101, 108, 84, 35, 51, 0, 11, 67, 43, 55, 145, 47, 37, 55, 36, 51, 0, 12, 67, 33, 59, 81, 71, 36, 89, 48, 39, 51, 0,
+			17, 70, 10, 3, 209, 30, 12, 240, 108, 50, 72, 51, 108, 50, 37, 49, 0, 0, 14, 69, 183, 52, 202, 138, 0, 48, 37, 89, 47, 40,
+			50, 0, 15, 69, 132, 124, 202, 30, 0, 107, 108, 57, 36, 47, 108, 50, 0, 17, 70, 127, 52, 71, 52, 252, 192, 65, 37, 51, 35, 107,
+			35, 72, 37, 0, 20, 70, 125, 50, 142, 61, 241, 224, 65, 39, 89, 47, 35, 101, 72, 36, 65, 108, 50, 0, 14, 67, 124, 200, 146, 65,
+			39, 75, 35, 84, 84, 36, 88, 0, 10, 67, 78, 33, 174, 89, 40, 37, 76, 0, 18, 70, 63, 20, 79, 205, 60, 192, 72, 36, 81, 35,
+			51, 72, 37, 89, 37, 0, 12, 68, 31, 49, 207, 204, 35, 57, 108, 72, 37, 0, 18, 70, 30, 12, 94, 207, 1, 224, 36, 50, 81, 36,
+			55, 37, 49, 108, 50, 0, 19, 70, 30, 12, 94, 76, 161, 224, 36, 50, 81, 36, 55, 36, 89, 47, 108, 50, 0, 18, 70, 28, 136, 147,
+			111, 49, 224, 35, 71, 40, 89, 39, 83, 57, 108, 50, 0, 18, 70, 10, 12, 94, 207, 1, 224, 108, 50, 81, 36, 55, 37, 49, 108, 50,
+			0, 12, 67, 8, 139, 82, 108, 71, 6, 48, 35, 88, 0, 0, 11, 67, 110, 4, 64, 83, 35, 50, 35, 51, 0, 24, 73, 78, 34, 47,
+			192, 172, 226, 205, 55, 192, 89, 40, 71, 90, 36, 49, 47, 37, 84, 37, 89, 65, 0, 13, 68, 68, 120, 98, 68, 51, 108, 107, 84, 35,
+			51, 0, 9, 66, 52, 240, 107, 35, 72, 72, 0, 13, 68, 49, 248, 98, 68, 75, 39, 65, 107, 40, 51, 0, 14, 68, 49, 33, 243, 68,
+			75, 35, 88, 108, 57, 36, 51, 0, 23, 72, 48, 252, 207, 29, 232, 145, 136, 240, 75, 35, 72, 37, 72, 39, 55, 84, 39, 51, 40, 72,
+			0, 11, 67, 34, 4, 64, 71, 35, 50, 36, 51, 0, 19, 70, 32, 119, 149, 68, 115, 97, 71, 36, 89, 89, 36, 51, 108, 107, 36, 12,
+			0, 10, 67, 30, 216, 147, 39, 48, 40, 89, 0, 0, 10, 67, 137, 228, 128, 84, 36, 55, 88, 0, 11, 67, 109, 228, 128, 83, 36, 55,
+			36, 88, 0, 14, 69, 29, 225, 200, 135, 48, 35, 55, 35, 71, 107, 108, 0, 21, 71, 9, 4, 72, 31, 51, 7, 128, 108, 88, 35, 51,
+			71, 108, 57, 36, 75, 108, 50, 0, 0, 12, 67, 205, 200, 145, 57, 39, 104, 17, 39, 51, 0, 11, 67, 185, 120, 145, 76, 36, 47, 39,
+			51, 0, 15, 69, 182, 39, 179, 137, 16, 48, 39, 55, 37, 84, 36, 51, 0, 19, 70, 125, 17, 220, 32, 120, 0, 65, 39, 51, 108, 104,
+			17, 36, 71, 108, 50, 0, 11, 67, 111, 8, 145, 83, 35, 49, 40, 51, 0, 14, 68, 109, 19, 226, 76, 83, 36, 51, 72, 39, 12, 89,
+			0, 12, 67, 105, 184, 145, 104, 17, 35, 83, 40, 51, 0, 11, 67, 85, 184, 145, 89, 35, 83, 40, 51, 0, 21, 70, 76, 161, 209, 196,
+			120, 0, 89, 36, 12, 47, 108, 51, 36, 12, 6, 81, 108, 50, 0, 17, 70, 33, 232, 145, 60, 120, 0, 71, 40, 55, 40, 51, 72, 108,
+			50, 0, 26, 73, 31, 4, 237, 69, 60, 226, 131, 52, 223, 36, 49, 89, 48, 36, 51, 89, 37, 57, 39, 50, 37, 89, 65, 0, 0, 15,
+			69, 134, 209, 209, 206, 0, 107, 36, 48, 108, 51, 37, 50, 0, 17, 70, 108, 168, 148, 205, 252, 192, 83, 39, 47, 39, 91, 37, 65, 37,
+			0, 15, 69, 35, 49, 223, 137, 32, 71, 37, 57, 108, 65, 40, 88, 0, 16, 68, 33, 21, 10, 200, 71, 36, 51, 36, 91, 47, 36, 57,
+			36, 0, 0, 16, 69, 186, 17, 209, 207, 0, 76, 108, 107, 108, 51, 57, 36, 49, 0, 18, 70, 181, 24, 155, 78, 36, 64, 48, 36, 51,
+			39, 83, 36, 89, 39, 51, 0, 11, 67, 180, 117, 15, 48, 108, 91, 35, 72, 0, 13, 68, 132, 124, 237, 68, 107, 108, 57, 48, 36, 51,
+			0, 12, 67, 129, 24, 147, 50, 36, 51, 84, 36, 89, 0, 11, 67, 128, 232, 143, 50, 39, 101, 39, 72, 0, 14, 69, 128, 120, 143, 205,
+			48, 50, 108, 84, 72, 37, 89, 0, 13, 68, 127, 52, 226, 68, 65, 35, 57, 89, 40, 51, 0, 11, 67, 124, 200, 147, 65, 35, 75, 40,
+			89, 0, 27, 74, 110, 40, 48, 79, 56, 160, 29, 236, 211, 124, 83, 39, 50, 49, 89, 37, 57, 39, 50, 108, 55, 37, 89, 65, 0, 15,
+			67, 42, 39, 143, 6, 47, 35, 84, 35, 55, 55, 39, 72, 0, 13, 67, 33, 24, 143, 71, 36, 51, 35, 84, 35, 72, 0, 25, 73, 29,
+			52, 71, 68, 119, 138, 136, 220, 207, 35, 89, 51, 108, 51, 39, 47, 47, 39, 84, 107, 37, 72, 0, 0, 13, 67, 186, 20, 114, 76, 36,
+			107, 51, 36, 57, 36, 0, 18, 70, 182, 36, 112, 29, 135, 243, 48, 40, 51, 49, 108, 88, 36, 65, 37, 0, 8, 66, 126, 240, 65, 39,
+			90, 0, 8, 66, 62, 240, 72, 36, 90, 0, 9, 66, 60, 128, 72, 39, 71, 71, 0, 0, 18, 70, 197, 226, 34, 123, 56, 0, 81, 39,
+			55, 40, 71, 40, 55, 37, 50, 0, 12, 67, 128, 167, 0, 50, 39, 47, 39, 104, 17, 0, 18, 70, 127, 56, 51, 28, 168, 145, 65, 37,
+			50, 37, 57, 108, 47, 39, 51, 0, 15, 68, 126, 36, 226, 76, 65, 39, 84, 35, 89, 84, 36, 89, 0, 15, 69, 68, 124, 10, 137, 16,
+			51, 36, 108, 49, 47, 39, 51, 0, 13, 68, 61, 35, 243, 60, 72, 39, 88, 72, 37, 72, 0, 15, 68, 61, 19, 148, 60, 72, 36, 51,
+			35, 101, 91, 35, 72, 0, 13, 68, 40, 134, 115, 60, 47, 35, 71, 19, 37, 72, 0, 14, 69, 31, 56, 23, 137, 16, 37, 50, 47, 39,
+			12, 51, 0, 15, 69, 29, 230, 72, 137, 16, 39, 55, 19, 39, 71, 40, 51, 0, 8, 65, 132, 6, 107, 36, 12, 0, 0, 15, 69, 181,
+			225, 241, 206, 0, 48, 36, 55, 108, 81, 37, 50, 0, 13, 68, 130, 44, 51, 80, 50, 39, 12, 49, 37, 91, 0, 14, 67, 125, 184, 150,
+			65, 39, 83, 35, 84, 84, 35, 88, 0, 17, 69, 125, 19, 241, 30, 0, 65, 39, 51, 72, 36, 81, 6, 108, 50, 0, 17, 68, 113, 225,
+			207, 200, 104, 17, 35, 55, 55, 108, 72, 36, 57, 36, 0, 12, 67, 82, 24, 138, 91, 35, 107, 84, 35, 47, 0, 16, 69, 77, 232, 158,
+			137, 32, 89, 36, 55, 55, 40, 55, 39, 88, 0, 10, 67, 41, 184, 128, 47, 39, 83, 40, 0, 16, 69, 32, 225, 209, 181, 32, 71, 39,
+			101, 108, 51, 48, 35, 88, 0, 17, 70, 29, 55, 199, 68, 172, 210, 36, 89, 65, 108, 51, 47, 37, 88, 0, 11, 67, 28, 140, 214, 35,
+			71, 57, 35, 88, 0, 0, 15, 69, 192, 116, 95, 72, 240, 49, 108, 51, 65, 39, 88, 72, 0, 12, 68, 126, 37, 162, 100, 65, 39, 88,
+			40, 12, 0, 15, 69, 70, 36, 159, 72, 240, 51, 40, 88, 65, 39, 88, 72, 0, 12, 67, 61, 152, 135, 72, 35, 19, 6, 84, 108, 0,
+			31, 75, 41, 23, 226, 29, 236, 10, 71, 52, 243, 42, 16, 47, 36, 51, 65, 39, 36, 55, 36, 49, 47, 37, 51, 37, 89, 37, 47, 36,
+			0, 31, 76, 31, 20, 179, 76, 161, 224, 79, 49, 222, 205, 55, 192, 36, 81, 88, 37, 89, 47, 108, 50, 89, 37, 57, 108, 55, 37, 89,
+			65, 0, 14, 69, 30, 220, 210, 136, 240, 36, 48, 37, 88, 39, 72, 0, 19, 71, 30, 12, 34, 32, 114, 162, 68, 35, 50, 49, 40, 71,
+			108, 47, 39, 51, 0, 32, 76, 30, 2, 145, 128, 116, 243, 138, 1, 222, 205, 55, 192, 35, 50, 47, 36, 51, 50, 108, 89, 37, 57, 39,
+			50, 108, 55, 37, 89, 65, 0, 14, 69, 29, 55, 135, 204, 240, 36, 89, 55, 108, 57, 72, 0, 0, 25, 73, 196, 119, 199, 197, 226, 34,
+			123, 56, 0, 81, 108, 65, 108, 81, 39, 55, 40, 71, 40, 55, 37, 50, 0, 11, 67, 183, 50, 128, 48, 36, 57, 35, 47, 0, 17, 70,
+			61, 24, 160, 78, 36, 128, 72, 35, 51, 40, 50, 89, 40, 88, 0, 22, 73, 30, 39, 138, 68, 116, 226, 131, 60, 0, 39, 55, 47, 51,
+			108, 89, 39, 50, 37, 49, 0, 0, 10, 67, 185, 17, 192, 76, 36, 51, 108, 0, 17, 70, 181, 225, 211, 43, 60, 0, 48, 36, 55, 108,
+			89, 47, 37, 49, 0, 18, 70, 41, 17, 224, 77, 184, 145, 47, 36, 51, 108, 50, 89, 83, 39, 51, 0, 19, 70, 35, 49, 223, 69, 35,
+			192, 71, 37, 57, 108, 65, 39, 51, 88, 35, 72, 0, 20, 71, 29, 53, 226, 58, 35, 226, 76, 39, 89, 47, 39, 101, 39, 72, 72, 40,
+			89, 0, 16, 70, 28, 226, 135, 182, 36, 192, 39, 101, 47, 108, 48, 40, 89, 0, 0, 10, 67, 129, 188, 192, 50, 35, 83, 57, 0, 12,
+			68, 126, 39, 138, 204, 65, 39, 55, 47, 37, 0, 10, 67, 109, 24, 128, 83, 39, 51, 40, 0, 14, 69, 108, 116, 83, 30, 0, 83, 108,
+			51, 89, 108, 50, 0, 14, 68, 80, 140, 209, 204, 91, 39, 71, 36, 57, 51, 37, 0, 10, 67, 77, 24, 128, 89, 35, 51, 84, 0, 10,
+			67, 74, 28, 192, 88, 36, 107, 37, 0, 14, 68, 60, 226, 145, 204, 72, 39, 101, 47, 35, 51, 37, 0, 10, 67, 42, 28, 192, 47, 39,
+			107, 37, 0, 15, 69, 41, 28, 212, 206, 0, 47, 37, 51, 37, 91, 37, 50, 0, 12, 68, 29, 55, 135, 136, 36, 89, 55, 108, 84, 0,
+			0, 15, 69, 41, 17, 223, 136, 112, 47, 36, 51, 108, 65, 84, 108, 0, 11, 67, 29, 244, 71, 39, 65, 35, 51, 108, 0, 10, 67, 29,
+			21, 135, 36, 51, 88, 108, 0, 10, 67, 28, 132, 71, 36, 71, 51, 108, 0, 0, 12, 67, 128, 248, 115, 50, 35, 72, 35, 107, 37, 0,
+			12, 67, 57, 52, 98, 101, 39, 89, 51, 39, 12, 0, 15, 69, 35, 53, 10, 71, 48, 71, 37, 91, 47, 35, 51, 37, 0, 0, 14, 68,
+			181, 52, 82, 28, 48, 36, 89, 35, 51, 88, 108, 0, 17, 70, 180, 120, 19, 124, 120, 0, 48, 108, 50, 89, 36, 65, 108, 50, 0, 14,
+			67, 61, 195, 192, 72, 35, 104, 17, 72, 35, 104, 17, 0, 11, 67, 53, 195, 192, 107, 36, 104, 17, 72, 0, 17, 70, 33, 17, 210, 48,
+			120, 0, 71, 39, 51, 108, 88, 75, 108, 50, 0, 13, 68, 32, 220, 209, 28, 71, 35, 107, 37, 51, 108, 0, 21, 72, 29, 228, 199, 122,
+			33, 207, 137, 16, 36, 55, 89, 108, 55, 84, 108, 72, 39, 51, 0, 0, 14, 68, 185, 230, 202, 204, 76, 39, 55, 39, 83, 47, 37, 0,
+			15, 69, 132, 124, 212, 30, 0, 107, 108, 57, 36, 91, 108, 50, 0, 15, 69, 126, 33, 210, 206, 0, 65, 35, 84, 108, 88, 37, 50, 0,
+			11, 67, 124, 200, 0, 65, 39, 75, 36, 50, 0, 16, 69, 122, 44, 51, 82, 0, 55, 39, 49, 36, 57, 91, 36, 50, 0, 15, 68, 113,
+			230, 202, 204, 104, 17, 36, 55, 36, 83, 47, 37, 0, 16, 68, 109, 200, 71, 204, 83, 39, 104, 17, 35, 107, 108, 57, 36, 0, 15, 69,
+			40, 124, 32, 138, 0, 47, 108, 49, 39, 50, 40, 50, 0, 0, 11, 67, 193, 55, 192, 49, 35, 89, 35, 65, 0, 17, 69, 139, 1, 222,
+			40, 112, 84, 36, 49, 108, 55, 35, 47, 35, 50, 0, 12, 67, 137, 194, 135, 84, 35, 104, 17, 47, 108, 0, 19, 71, 130, 36, 202, 29,
+			235, 243, 192, 50, 39, 89, 47, 108, 55, 90, 37, 49, 0, 10, 67, 109, 23, 192, 83, 39, 51, 65, 0, 11, 67, 77, 23, 192, 89, 35,
+			51, 35, 65, 0, 11, 67, 63, 50, 135, 72, 36, 57, 47, 108, 0, 10, 67, 62, 34, 135, 72, 39, 47, 108, 0, 11, 67, 57, 23, 192,
+			101, 35, 51, 35, 65, 0, 11, 67, 53, 23, 192, 107, 35, 51, 35, 65, 0, 17, 69, 49, 49, 209, 40, 112, 75, 36, 89, 108, 51, 35,
+			47, 35, 50, 0, 10, 67, 49, 23, 192, 75, 39, 51, 65, 0, 11, 67, 45, 23, 192, 89, 35, 65, 35, 51, 0, 10, 67, 41, 23, 192,
+			47, 36, 51, 65, 0, 11, 67, 33, 23, 192, 71, 36, 51, 35, 65, 0, 15, 69, 29, 228, 135, 124, 112, 36, 55, 88, 108, 65, 35, 50,
+			0, 14, 69, 29, 225, 204, 68, 112, 39, 55, 36, 75, 51, 108, 0, 9, 67, 9, 23, 192, 108, 51, 65, 0, 11, 67, 8, 247, 199, 108,
+			72, 35, 65, 108, 0, 0, 11, 67, 197, 178, 128, 81, 6, 39, 83, 47, 0, 17, 70, 186, 3, 199, 206, 11, 179, 76, 35, 50, 72, 37,
+			50, 76, 37, 0, 10, 67, 185, 178, 128, 76, 36, 83, 47, 0, 10, 67, 133, 178, 128, 107, 35, 83, 47, 0, 10, 67, 125, 178, 128, 65,
+			39, 83, 47, 0, 14, 67, 124, 213, 94, 65, 39, 107, 35, 89, 89, 36, 55, 0, 10, 67, 121, 178, 128, 55, 36, 83, 47, 0, 10, 67,
+			80, 116, 94, 91, 108, 51, 55, 0, 16, 69, 41, 23, 202, 31, 48, 47, 39, 51, 39, 65, 47, 108, 57, 0, 16, 69, 33, 24, 136, 70,
+			32, 71, 39, 51, 39, 71, 39, 51, 39, 0, 0, 11, 67, 131, 24, 64, 50, 36, 81, 35, 107, 0, 15, 68, 129, 50, 10, 28, 50, 36,
+			89, 71, 35, 47, 35, 50, 0, 13, 67, 105, 88, 64, 104, 17, 39, 89, 89, 36, 12, 0, 11, 67, 92, 116, 95, 47, 108, 51, 39, 65,
+			0, 15, 68, 76, 114, 28, 28, 89, 108, 71, 36, 104, 17, 35, 50, 0, 12, 67, 53, 88, 64, 107, 36, 89, 89, 36, 12, 0, 12, 67,
+			50, 20, 95, 75, 35, 107, 51, 39, 65, 0, 11, 67, 48, 116, 223, 75, 108, 89, 36, 65, 0, 11, 67, 33, 232, 145, 71, 39, 55, 40,
+			51, 0, 11, 67, 30, 20, 95, 35, 107, 51, 39, 65, 0, 0, 12, 67, 185, 225, 220, 76, 39, 55, 108, 104, 17, 0, 11, 67, 135, 23,
+			128, 107, 36, 81, 36, 55, 0, 15, 68, 126, 2, 142, 32, 65, 39, 50, 47, 35, 101, 35, 71, 0, 15, 68, 125, 145, 207, 120, 6, 65,
+			39, 19, 108, 72, 36, 55, 0, 12, 67, 124, 213, 96, 65, 39, 107, 89, 36, 50, 0, 14, 68, 124, 193, 207, 120, 65, 39, 75, 108, 72,
+			36, 55, 0, 10, 66, 114, 208, 104, 17, 39, 48, 48, 0, 12, 67, 109, 83, 74, 83, 36, 89, 107, 35, 47, 0, 10, 67, 93, 183, 128,
+			47, 36, 83, 55, 0, 13, 67, 81, 225, 220, 91, 35, 55, 55, 108, 104, 17, 0, 13, 67, 58, 1, 220, 101, 39, 50, 50, 108, 104, 17,
+			0, 13, 67, 54, 1, 220, 107, 39, 50, 50, 108, 104, 17, 0, 11, 67, 33, 232, 146, 71, 39, 55, 40, 88, 0, 16, 70, 10, 40, 176,
+			28, 248, 128, 108, 84, 39, 49, 108, 72, 39, 0, 0, 15, 69, 197, 224, 158, 136, 240, 81, 36, 55, 108, 55, 40, 72, 0, 16, 69, 181,
+			56, 15, 204, 240, 48, 35, 89, 35, 50, 72, 37, 72, 0, 13, 67, 129, 197, 225, 50, 39, 104, 17, 47, 36, 12, 0, 14, 68, 127, 1,
+			209, 124, 65, 35, 49, 108, 51, 36, 65, 0, 14, 68, 124, 209, 209, 124, 65, 35, 107, 108, 51, 36, 65, 0, 17, 68, 124, 168, 145, 124,
+			65, 39, 47, 36, 84, 35, 51, 51, 36, 65, 0, 15, 69, 109, 17, 206, 128, 112, 83, 35, 51, 108, 101, 50, 108, 0, 11, 67, 93, 22,
+			192, 47, 35, 51, 35, 83, 0, 14, 68, 61, 236, 81, 124, 72, 36, 55, 81, 35, 51, 65, 0, 11, 67, 59, 52, 97, 101, 37, 51, 36,
+			12, 0, 11, 67, 57, 183, 192, 101, 35, 83, 35, 65, 0, 11, 67, 57, 22, 192, 101, 36, 51, 36, 83, 0, 12, 67, 56, 132, 97, 101,
+			36, 71, 51, 36, 12, 0, 12, 67, 33, 68, 97, 71, 35, 91, 35, 51, 36, 0, 11, 67, 10, 36, 79, 108, 84, 35, 51, 72, 0, 0,
+			16, 70, 192, 116, 74, 71, 51, 0, 49, 108, 51, 47, 51, 37, 75, 0, 15, 68, 134, 33, 237, 72, 107, 35, 84, 108, 10, 48, 35, 88,
+			0, 13, 68, 124, 114, 141, 40, 65, 108, 47, 35, 107, 47, 0, 15, 68, 93, 28, 220, 40, 47, 35, 51, 37, 104, 17, 35, 47, 0, 14,
+			68, 61, 50, 135, 112, 72, 39, 89, 47, 108, 104, 17, 0, 13, 68, 31, 20, 162, 72, 6, 36, 81, 88, 39, 88, 0, 13, 68, 30, 6,
+			199, 112, 36, 50, 83, 108, 104, 17, 0, 25, 73, 29, 28, 19, 41, 17, 211, 206, 40, 0, 39, 51, 49, 36, 89, 47, 51, 108, 89, 37,
+			57, 39, 50, 0, 12, 68, 10, 44, 206, 40, 108, 84, 37, 101, 47, 0, 0, 9, 67, 196, 120, 64, 81, 108, 107, 0, 9, 67, 192, 120,
+			64, 49, 108, 107, 0, 16, 70, 188, 120, 15, 29, 28, 0, 90, 108, 50, 72, 108, 51, 49, 0, 9, 67, 184, 120, 64, 76, 108, 107, 0,
+			11, 67, 183, 49, 223, 48, 35, 57, 108, 65, 0, 16, 69, 181, 66, 177, 69, 240, 48, 39, 91, 47, 81, 35, 51, 65, 0, 14, 68, 181,
+			24, 147, 132, 48, 39, 51, 39, 89, 36, 12, 0, 16, 68, 181, 22, 149, 132, 48, 39, 51, 104, 17, 39, 89, 89, 36, 0, 15, 68, 137,
+			56, 147, 132, 84, 35, 89, 84, 35, 89, 36, 12, 0, 15, 68, 131, 54, 202, 60, 50, 35, 57, 39, 83, 47, 35, 72, 0, 17, 68, 126,
+			36, 211, 132, 65, 39, 19, 35, 89, 89, 36, 89, 36, 12, 0, 17, 69, 125, 50, 153, 85, 240, 65, 39, 89, 47, 35, 19, 89, 36, 65,
+			0, 12, 67, 124, 215, 0, 65, 39, 107, 36, 104, 17, 0, 9, 67, 124, 120, 64, 65, 108, 107, 0, 17, 68, 124, 68, 211, 132, 65, 39,
+			19, 35, 89, 89, 36, 89, 36, 12, 0, 12, 67, 89, 248, 64, 88, 35, 65, 65, 36, 12, 0, 12, 67, 81, 248, 64, 91, 36, 65, 65,
+			36, 12, 0, 14, 69, 76, 115, 243, 77, 240, 89, 108, 72, 37, 89, 65, 0, 14, 68, 49, 243, 31, 132, 75, 39, 65, 75, 39, 65, 36,
+			0, 10, 67, 48, 120, 64, 75, 108, 12, 107, 0, 13, 68, 42, 34, 17, 132, 47, 40, 71, 51, 36, 12, 0, 14, 67, 40, 116, 219, 47,
+			35, 19, 35, 89, 89, 39, 83, 0, 18, 70, 30, 12, 212, 43, 56, 0, 35, 50, 37, 91, 6, 47, 35, 57, 50, 0, 0, 11, 67, 197,
+			225, 224, 81, 39, 55, 108, 50, 0, 11, 67, 193, 225, 224, 49, 35, 55, 108, 50, 0, 23, 72, 183, 50, 176, 30, 2, 145, 138, 208, 48,
+			37, 47, 36, 49, 108, 50, 47, 36, 51, 39, 48, 0, 13, 68, 133, 19, 71, 120, 107, 35, 51, 107, 108, 55, 0, 15, 69, 130, 44, 211,
+			30, 0, 50, 36, 84, 37, 89, 108, 50, 0, 13, 68, 129, 72, 7, 120, 50, 35, 91, 50, 108, 55, 0, 16, 69, 129, 68, 115, 28, 160,
+			50, 35, 91, 51, 37, 57, 108, 47, 0, 12, 67, 129, 49, 206, 50, 35, 89, 89, 108, 101, 0, 18, 69, 125, 88, 27, 28, 160, 65, 39,
+			89, 35, 50, 50, 35, 83, 108, 47, 0, 15, 69, 124, 129, 225, 28, 160, 65, 39, 71, 108, 107, 108, 47, 0, 11, 67, 109, 225, 224, 83,
+			36, 55, 108, 50, 0, 12, 68, 74, 39, 135, 120, 88, 39, 55, 108, 55, 0, 15, 69, 60, 119, 217, 30, 0, 72, 108, 65, 104, 17, 108,
+			50, 0, 19, 69, 49, 228, 162, 121, 32, 75, 36, 55, 36, 88, 39, 84, 36, 55, 36, 88, 0, 14, 67, 41, 243, 224, 47, 35, 65, 35,
+			72, 72, 39, 50, 0, 10, 67, 40, 124, 237, 47, 108, 57, 48, 0, 11, 67, 34, 1, 224, 71, 35, 50, 108, 50, 0, 13, 68, 33, 39,
+			199, 120, 71, 39, 88, 65, 108, 55, 0, 12, 68, 28, 215, 199, 120, 36, 107, 65, 108, 55, 0, 0, 18, 70, 197, 23, 199, 197, 23, 192,
+			81, 35, 51, 65, 108, 81, 35, 51, 65, 0, 13, 68, 183, 51, 199, 124, 48, 36, 57, 72, 108, 65, 0, 15, 69, 182, 37, 48, 70, 16,
+			48, 40, 91, 49, 39, 51, 36, 0, 17, 69, 131, 5, 51, 62, 16, 50, 35, 49, 36, 91, 37, 72, 36, 12, 0, 17, 69, 129, 20, 243,
+			62, 16, 50, 35, 51, 36, 89, 37, 72, 36, 12, 0, 18, 70, 128, 120, 34, 197, 23, 192, 50, 108, 50, 39, 81, 36, 51, 35, 65, 0,
+			17, 69, 125, 50, 159, 79, 0, 65, 39, 89, 47, 35, 65, 89, 36, 49, 0, 17, 69, 124, 209, 213, 70, 16, 65, 39, 107, 108, 89, 36,
+			51, 36, 12, 0, 16, 69, 109, 24, 136, 68, 240, 83, 39, 51, 40, 71, 39, 51, 72, 0, 12, 67, 87, 51, 97, 89, 36, 57, 107, 36,
+			12, 0, 11, 67, 76, 131, 97, 89, 39, 71, 107, 36, 0, 12, 67, 74, 17, 207, 88, 39, 107, 107, 108, 72, 0, 13, 68, 40, 231, 199,
+			124, 47, 39, 101, 65, 108, 65, 0, 16, 69, 32, 229, 51, 62, 16, 71, 35, 101, 91, 37, 72, 36, 12, 0, 16, 70, 31, 52, 162, 41,
+			23, 192, 37, 88, 39, 47, 36, 51, 65, 0, 16, 70, 29, 50, 179, 128, 118, 192, 36, 89, 47, 37, 50, 108, 83, 0, 16, 70, 28, 168,
+			173, 205, 55, 192, 39, 47, 39, 48, 37, 89, 65, 0, 14, 68, 28, 168, 71, 124, 36, 47, 47, 36, 107, 108, 65, 0, 12, 68, 28, 167,
+			199, 124, 36, 47, 65, 108, 65, 0, 18, 70, 10, 12, 83, 41, 23, 192, 108, 50, 81, 36, 89, 47, 51, 39, 65, 0, 0, 14, 68, 204,
+			136, 147, 40, 57, 39, 71, 40, 89, 35, 47, 0, 22, 72, 193, 236, 223, 30, 3, 7, 70, 32, 49, 36, 55, 37, 65, 108, 50, 75, 108,
+			51, 39, 0, 13, 68, 192, 167, 199, 128, 49, 36, 47, 65, 108, 50, 0, 13, 68, 182, 247, 199, 128, 48, 36, 90, 65, 108, 50, 0, 13,
+			68, 182, 12, 71, 128, 48, 35, 50, 81, 108, 50, 0, 13, 68, 136, 195, 199, 128, 84, 36, 75, 72, 108, 50, 0, 13, 68, 129, 151, 199,
+			128, 50, 39, 19, 65, 108, 50, 0, 15, 68, 125, 177, 209, 112, 65, 39, 83, 108, 51, 36, 104, 17, 0, 15, 68, 125, 148, 17, 40, 65,
+			35, 19, 88, 36, 51, 35, 47, 0, 11, 67, 124, 210, 0, 65, 39, 107, 36, 71, 0, 13, 68, 120, 136, 7, 128, 55, 39, 71, 50, 108,
+			50, 0, 17, 69, 113, 21, 31, 29, 224, 104, 17, 36, 51, 36, 91, 65, 108, 55, 0, 12, 67, 112, 133, 243, 104, 17, 36, 71, 47, 37,
+			0, 11, 67, 110, 36, 115, 83, 39, 12, 51, 37, 0, 12, 67, 105, 21, 128, 104, 17, 35, 51, 35, 88, 0, 12, 68, 100, 183, 199, 128,
+			39, 89, 65, 108, 50, 0, 13, 68, 81, 24, 135, 128, 91, 36, 51, 84, 108, 50, 0, 12, 68, 79, 55, 199, 128, 89, 37, 65, 108, 50,
+			0, 12, 68, 78, 40, 71, 128, 89, 39, 107, 108, 50, 0, 13, 68, 77, 231, 199, 128, 89, 35, 55, 65, 108, 50, 0, 11, 67, 70, 44,
+			212, 51, 40, 57, 36, 91, 0, 12, 68, 70, 39, 199, 128, 51, 39, 65, 108, 50, 0, 13, 68, 68, 215, 199, 128, 51, 35, 107, 65, 108,
+			50, 0, 15, 69, 57, 66, 159, 29, 224, 101, 36, 91, 47, 65, 108, 55, 0, 13, 68, 40, 226, 135, 128, 47, 35, 101, 47, 108, 50, 0,
+			13, 67, 40, 212, 115, 47, 35, 107, 35, 51, 51, 37, 0, 16, 69, 34, 20, 77, 29, 224, 71, 36, 107, 35, 51, 107, 108, 55, 0, 13,
+			68, 34, 18, 135, 128, 71, 39, 107, 47, 108, 50, 0, 14, 68, 33, 76, 19, 40, 71, 36, 91, 49, 35, 89, 47, 0, 14, 68, 32, 252,
+			223, 128, 71, 35, 72, 57, 39, 65, 50, 0, 11, 68, 31, 55, 199, 128, 37, 65, 108, 50, 0, 13, 69, 31, 51, 198, 29, 224, 37, 72,
+			36, 108, 55, 0, 15, 69, 30, 2, 141, 29, 224, 36, 50, 47, 36, 107, 108, 55, 0, 13, 68, 29, 231, 199, 128, 36, 55, 36, 65, 108,
+			50, 0, 16, 70, 29, 228, 199, 60, 114, 128, 39, 89, 89, 108, 72, 108, 47, 0, 15, 69, 29, 18, 141, 29, 224, 36, 51, 47, 36, 107,
+			108, 55, 0, 15, 69, 10, 4, 95, 29, 224, 108, 50, 39, 51, 65, 108, 55, 0, 12, 68, 9, 231, 199, 128, 108, 55, 65, 108, 50, 0,
+			0, 16, 70, 192, 114, 135, 122, 44, 64, 49, 108, 47, 108, 55, 39, 81, 0, 18, 70, 181, 225, 202, 110, 36, 95, 48, 36, 55, 108, 47,
+			83, 39, 51, 65, 0, 11, 67, 137, 53, 192, 84, 35, 89, 35, 47, 0, 20, 70, 134, 35, 148, 41, 24, 64, 107, 39, 84, 35, 101, 91,
+			35, 47, 51, 35, 107, 0, 17, 70, 131, 56, 179, 137, 28, 0, 50, 37, 57, 39, 57, 39, 51, 49, 0, 14, 68, 125, 145, 225, 60, 65,
+			39, 19, 108, 107, 36, 72, 0, 14, 68, 124, 193, 225, 60, 65, 39, 75, 108, 107, 36, 72, 0, 18, 70, 83, 7, 200, 29, 24, 64, 91,
+			36, 49, 35, 65, 71, 108, 51, 36, 0, 11, 67, 77, 21, 192, 89, 35, 51, 35, 47, 0, 19, 70, 76, 120, 10, 207, 20, 95, 89, 108,
+			50, 47, 37, 81, 36, 51, 35, 65, 0, 12, 67, 76, 118, 145, 89, 108, 104, 17, 35, 51, 0, 13, 68, 69, 56, 160, 60, 51, 36, 89,
+			40, 50, 72, 0, 18, 70, 63, 49, 219, 68, 124, 95, 72, 37, 57, 108, 83, 51, 108, 81, 65, 0, 15, 69, 61, 225, 209, 29, 240, 72,
+			36, 55, 108, 51, 108, 65, 0, 17, 70, 58, 33, 209, 193, 56, 64, 101, 108, 51, 49, 39, 89, 36, 12, 0, 19, 70, 33, 119, 159, 206,
+			36, 192, 71, 35, 47, 55, 35, 65, 37, 57, 40, 89, 0, 15, 68, 33, 24, 160, 60, 71, 36, 51, 35, 84, 35, 50, 72, 0, 13, 68,
+			33, 17, 207, 132, 71, 39, 51, 108, 72, 36, 0, 19, 70, 32, 247, 34, 29, 24, 64, 71, 35, 72, 104, 17, 35, 84, 108, 51, 36, 0,
+			17, 70, 32, 119, 155, 93, 24, 64, 71, 36, 55, 83, 36, 47, 51, 36, 0, 15, 69, 29, 226, 179, 29, 240, 36, 55, 47, 37, 57, 108,
+			65, 0, 13, 68, 29, 177, 207, 132, 36, 83, 108, 72, 36, 107, 0, 17, 70, 29, 28, 71, 131, 52, 223, 39, 51, 81, 108, 50, 37, 89,
+			65, 0, 19, 70, 10, 1, 200, 123, 52, 223, 108, 50, 108, 71, 39, 55, 37, 89, 65, 89, 0, 12, 68, 8, 232, 160, 60, 108, 101, 40,
+			50, 72, 0, 0, 14, 69, 188, 124, 30, 206, 0, 90, 108, 49, 55, 37, 50, 0, 17, 69, 125, 145, 212, 68, 160, 65, 39, 19, 108, 91,
+			36, 51, 35, 47, 0, 11, 67, 124, 220, 0, 65, 35, 107, 35, 49, 0, 11, 67, 122, 236, 0, 55, 35, 76, 35, 49, 0, 12, 67, 121,
+			161, 210, 55, 39, 104, 17, 108, 88, 0, 15, 68, 113, 23, 215, 204, 104, 17, 35, 51, 65, 35, 47, 37, 0, 15, 69, 81, 252, 209, 30,
+			0, 91, 36, 65, 37, 51, 108, 50, 0, 14, 68, 63, 2, 145, 204, 72, 39, 49, 47, 39, 51, 37, 0, 19, 70, 42, 36, 72, 136, 164,
+			96, 47, 40, 51, 71, 39, 47, 36, 51, 35, 50, 0, 12, 68, 40, 124, 19, 204, 47, 108, 49, 89, 37, 0, 14, 68, 33, 18, 145, 204,
+			71, 35, 51, 47, 35, 51, 37, 0, 21, 71, 32, 232, 145, 32, 232, 135, 32, 71, 39, 101, 39, 51, 39, 71, 36, 101, 108, 71, 0, 18,
+			70, 9, 225, 241, 29, 20, 224, 108, 55, 108, 81, 108, 51, 89, 39, 50, 0, 0, 11, 67, 197, 4, 64, 81, 39, 88, 35, 51, 0, 16,
+			69, 194, 216, 33, 31, 16, 49, 39, 48, 36, 50, 107, 108, 81, 0, 17, 69, 193, 244, 72, 128, 240, 49, 35, 65, 35, 51, 71, 35, 50,
+			72, 0, 15, 69, 182, 36, 71, 52, 240, 48, 40, 51, 35, 107, 35, 72, 0, 13, 68, 181, 24, 135, 68, 48, 35, 51, 84, 108, 51, 0,
+			11, 67, 136, 164, 64, 84, 35, 47, 35, 51, 0, 19, 71, 120, 119, 199, 71, 12, 211, 124, 55, 108, 65, 108, 51, 49, 37, 89, 65, 0,
+			15, 69, 110, 40, 10, 207, 0, 83, 39, 50, 36, 47, 37, 49, 0, 15, 69, 80, 117, 8, 128, 240, 91, 108, 91, 71, 35, 50, 72, 0,
+			16, 69, 77, 242, 30, 207, 0, 89, 35, 65, 71, 39, 55, 37, 49, 0, 15, 69, 77, 19, 136, 28, 240, 89, 39, 51, 101, 71, 108, 72,
+			0, 15, 68, 70, 212, 74, 68, 51, 36, 48, 39, 51, 47, 36, 51, 0, 10, 67, 57, 100, 64, 101, 36, 88, 51, 0, 11, 67, 57, 36,
+			64, 101, 35, 88, 35, 51, 0, 19, 70, 52, 248, 141, 76, 114, 0, 107, 35, 72, 72, 39, 107, 36, 89, 108, 71, 0, 15, 69, 35, 52,
+			76, 128, 240, 71, 37, 51, 75, 35, 50, 72, 0, 15, 69, 32, 248, 33, 28, 240, 71, 35, 72, 50, 35, 107, 108, 0, 18, 70, 32, 246,
+			209, 48, 119, 192, 71, 35, 72, 83, 35, 51, 75, 108, 65, 0, 19, 70, 32, 119, 150, 70, 36, 97, 71, 36, 88, 88, 35, 51, 40, 51,
+			36, 12, 0, 20, 70, 28, 136, 151, 204, 116, 97, 35, 71, 40, 47, 35, 57, 57, 108, 51, 36, 12, 0, 0, 8, 66, 187, 0, 76, 36,
+			49, 0, 16, 69, 125, 195, 199, 71, 48, 65, 36, 104, 17, 72, 108, 51, 37, 0, 16, 69, 109, 19, 226, 79, 48, 83, 36, 51, 72, 39,
+			12, 89, 37, 0, 14, 69, 31, 2, 51, 71, 48, 36, 49, 71, 37, 51, 37, 0, 16, 70, 30, 36, 111, 206, 1, 222, 39, 51, 90, 37,
+			50, 108, 55, 0, 0, 11, 67, 197, 44, 209, 81, 39, 88, 37, 51, 0, 21, 72, 191, 56, 138, 31, 2, 179, 77, 240, 90, 36, 39, 47,
+			108, 49, 47, 37, 89, 65, 0, 17, 70, 182, 36, 76, 136, 115, 192, 48, 40, 51, 75, 35, 84, 108, 72, 0, 16, 69, 181, 20, 202, 29,
+			16, 48, 35, 51, 35, 89, 47, 108, 51, 0, 23, 72, 130, 17, 224, 60, 120, 49, 30, 0, 50, 35, 107, 108, 50, 72, 108, 50, 36, 81,
+			108, 50, 0, 14, 67, 127, 52, 209, 65, 39, 57, 35, 89, 89, 35, 51, 0, 11, 67, 125, 76, 209, 65, 39, 91, 37, 51, 0, 14, 67,
+			125, 67, 149, 65, 39, 91, 35, 101, 101, 35, 89, 0, 12, 67, 120, 118, 145, 55, 108, 104, 17, 35, 51, 0, 15, 69, 108, 116, 159, 41,
+			16, 83, 108, 88, 65, 36, 47, 51, 0, 11, 67, 81, 152, 145, 91, 39, 19, 40, 51, 0, 11, 67, 78, 43, 81, 89, 40, 48, 36, 51,
+			0, 18, 70, 76, 161, 209, 56, 120, 0, 89, 35, 47, 47, 108, 51, 101, 108, 50, 0, 16, 70, 75, 60, 95, 138, 3, 192, 88, 37, 81,
+			65, 39, 50, 72, 0, 21, 72, 68, 115, 243, 192, 119, 179, 77, 240, 51, 108, 72, 37, 49, 108, 55, 37, 89, 65, 0, 11, 67, 63, 8,
+			145, 72, 36, 49, 39, 51, 0, 15, 67, 41, 172, 209, 47, 35, 104, 17, 35, 57, 57, 39, 51, 0, 18, 70, 40, 231, 209, 30, 24, 64,
+			47, 39, 101, 65, 51, 108, 107, 36, 12, 0, 19, 70, 33, 23, 17, 30, 24, 64, 71, 35, 51, 104, 17, 35, 51, 108, 107, 36, 0, 21,
+			72, 30, 216, 145, 42, 40, 51, 77, 240, 39, 48, 39, 51, 47, 40, 50, 37, 89, 65, 0, 18, 70, 29, 50, 155, 28, 248, 64, 36, 89,
+			47, 36, 83, 108, 72, 36, 12, 0, 0, 18, 70, 192, 116, 79, 69, 241, 224, 49, 108, 51, 72, 35, 51, 65, 108, 50, 0, 17, 70, 183,
+			53, 7, 32, 241, 224, 48, 37, 91, 108, 71, 72, 108, 50, 0, 15, 69, 181, 28, 51, 129, 32, 48, 36, 51, 49, 37, 50, 88, 0, 20,
+			70, 133, 23, 210, 63, 17, 224, 107, 39, 51, 65, 39, 88, 72, 36, 81, 108, 50, 0, 12, 67, 133, 23, 210, 107, 39, 51, 65, 39, 88,
+			0, 18, 70, 84, 220, 226, 131, 52, 202, 89, 35, 107, 57, 39, 50, 37, 89, 47, 0, 15, 69, 60, 119, 218, 30, 0, 72, 108, 65, 104,
+			17, 108, 50, 0, 18, 70, 58, 37, 8, 56, 161, 224, 101, 39, 91, 71, 35, 101, 47, 108, 50, 0, 18, 70, 43, 52, 98, 193, 241, 224,
+			47, 37, 51, 39, 49, 35, 65, 108, 50, 0, 18, 70, 10, 209, 209, 41, 241, 224, 108, 48, 108, 51, 47, 36, 65, 108, 50, 0, 0, 17,
+			70, 195, 55, 162, 124, 164, 64, 49, 37, 55, 40, 65, 36, 47, 51, 0, 8, 66, 190, 0, 90, 36, 50, 0, 11, 67, 136, 123, 83, 84,
+			108, 48, 35, 89, 0, 11, 67, 130, 44, 211, 50, 36, 84, 37, 89, 0, 19, 71, 128, 114, 179, 131, 24, 71, 124, 50, 108, 47, 37, 50,
+			81, 107, 108, 65, 0, 9, 66, 124, 240, 6, 65, 39, 72, 0, 13, 68, 111, 55, 138, 68, 83, 37, 55, 47, 36, 51, 0, 14, 68, 109,
+			225, 212, 68, 83, 36, 55, 108, 91, 36, 51, 0, 10, 67, 101, 24, 147, 35, 51, 40, 89, 0, 14, 68, 70, 44, 80, 68, 51, 40, 81,
+			39, 88, 35, 51, 0, 18, 70, 41, 23, 226, 124, 164, 64, 47, 36, 51, 65, 39, 65, 36, 47, 51, 0, 20, 70, 32, 232, 136, 71, 51,
+			225, 71, 39, 101, 39, 12, 71, 39, 51, 37, 72, 36, 0, 15, 69, 29, 60, 32, 29, 48, 36, 89, 49, 36, 50, 108, 89, 0, 17, 70,
+			10, 3, 226, 124, 164, 64, 108, 50, 72, 39, 65, 36, 47, 51, 0, 0, 11, 67, 197, 225, 200, 81, 39, 55, 108, 71, 0, 18, 70, 182,
+			36, 96, 137, 4, 115, 48, 40, 51, 50, 39, 88, 35, 51, 37, 0, 18, 70, 182, 36, 89, 79, 4, 115, 48, 40, 51, 35, 89, 49, 35,
+			51, 37, 0, 22, 71, 109, 24, 148, 128, 252, 71, 128, 83, 39, 51, 40, 91, 35, 50, 72, 36, 81, 108, 50, 0, 20, 71, 70, 36, 148,
+			192, 116, 71, 128, 51, 40, 88, 91, 36, 49, 108, 51, 108, 50, 0, 21, 71, 70, 33, 224, 197, 19, 199, 128, 51, 35, 84, 108, 50, 81,
+			35, 51, 72, 108, 50, 0, 12, 67, 57, 36, 76, 101, 35, 88, 51, 35, 75, 0, 21, 71, 43, 12, 199, 56, 172, 71, 128, 47, 35, 49,
+			57, 108, 101, 47, 36, 81, 108, 50, 0, 22, 72, 31, 56, 10, 70, 5, 32, 29, 224, 37, 50, 47, 36, 51, 50, 35, 91, 50, 108, 55,
+			0, 21, 71, 30, 2, 161, 31, 55, 199, 128, 36, 50, 47, 36, 107, 108, 57, 36, 65, 108, 50, 0, 0, 19, 70, 181, 52, 78, 136, 120,
+			81, 48, 36, 89, 35, 51, 101, 108, 107, 35, 51, 0, 14, 69, 75, 53, 25, 137, 16, 88, 37, 91, 39, 40, 51, 0, 18, 70, 75, 50,
+			7, 194, 1, 209, 88, 37, 71, 108, 49, 36, 50, 108, 51, 0, 20, 70, 61, 28, 199, 194, 1, 209, 72, 35, 51, 57, 108, 10, 49, 36,
+			50, 108, 51, 0, 11, 67, 40, 204, 209, 47, 35, 75, 37, 51, 0, 16, 69, 33, 227, 226, 73, 16, 71, 39, 55, 72, 39, 88, 36, 51,
+			0, 11, 67, 33, 92, 209, 71, 35, 89, 37, 51, 0, 19, 70, 28, 131, 199, 120, 248, 81, 35, 71, 35, 72, 39, 72, 72, 35, 107, 51,
+			0, 0, 12, 67, 197, 28, 128, 81, 36, 51, 36, 57, 36, 0, 12, 67, 193, 28, 128, 49, 39, 51, 36, 57, 36, 0, 16, 69, 181, 23,
+			135, 81, 32, 48, 36, 51, 55, 108, 91, 36, 88, 0, 17, 69, 125, 50, 161, 50, 0, 65, 39, 89, 47, 35, 107, 75, 35, 50, 0, 14,
+			67, 125, 23, 202, 65, 35, 51, 36, 65, 65, 35, 47, 0, 12, 67, 121, 161, 202, 55, 39, 104, 17, 108, 47, 0, 19, 70, 57, 23, 212,
+			30, 28, 192, 101, 39, 51, 51, 35, 65, 91, 108, 107, 37, 0, 22, 72, 29, 251, 81, 204, 119, 179, 76, 160, 35, 65, 48, 36, 51, 57,
+			108, 55, 37, 89, 47, 0, 0, 17, 70, 198, 36, 72, 198, 36, 64, 81, 40, 51, 71, 36, 81, 40, 51, 0, 8, 66, 194, 0, 49, 39,
+			50, 0, 19, 70, 193, 251, 81, 78, 36, 64, 49, 39, 65, 48, 36, 51, 36, 89, 39, 51, 0, 13, 68, 182, 248, 135, 192, 48, 36, 90,
+			84, 108, 49, 0, 18, 70, 181, 232, 179, 124, 164, 64, 48, 36, 55, 84, 37, 65, 36, 47, 51, 0, 11, 67, 124, 229, 0, 65, 39, 101,
+			35, 91, 0, 10, 67, 110, 36, 79, 83, 39, 51, 72, 0, 10, 67, 101, 248, 143, 35, 65, 40, 72, 0, 12, 67, 81, 69, 79, 91, 36,
+			91, 89, 35, 72, 0, 21, 71, 79, 52, 71, 121, 247, 162, 192, 89, 36, 57, 51, 39, 55, 65, 39, 55, 40, 49, 0, 15, 69, 78, 3,
+			209, 137, 48, 89, 35, 50, 72, 51, 40, 89, 0, 11, 67, 77, 152, 143, 89, 39, 19, 40, 72, 0, 13, 67, 32, 228, 79, 71, 36, 101,
+			35, 51, 35, 72, 0, 22, 71, 29, 236, 10, 70, 39, 202, 68, 36, 55, 36, 49, 47, 36, 51, 39, 65, 36, 47, 51, 0, 16, 69, 29,
+			226, 156, 29, 112, 36, 55, 47, 36, 104, 17, 108, 47, 0, 17, 69, 9, 4, 109, 69, 48, 108, 88, 35, 51, 48, 36, 51, 36, 89, 0,
+			11, 65, 4, 6, 107, 35, 65, 88, 36, 12, 0, 0, 11, 67, 182, 44, 212, 48, 40, 57, 36, 91, 0, 13, 67, 125, 147, 242, 65, 36,
+			19, 72, 36, 57, 36, 0, 18, 70, 124, 115, 209, 57, 19, 0, 65, 108, 72, 35, 51, 101, 35, 51, 75, 0, 14, 68, 77, 225, 223, 40,
+			89, 35, 55, 108, 65, 35, 47, 0, 13, 67, 77, 180, 114, 89, 39, 83, 51, 36, 57, 36, 0, 17, 70, 70, 36, 136, 70, 36, 128, 51,
+			40, 88, 71, 36, 51, 40, 88, 0, 13, 67, 53, 180, 114, 107, 39, 83, 51, 36, 57, 36, 0, 17, 69, 32, 210, 34, 55, 32, 71, 39,
+			107, 71, 40, 107, 36, 57, 36, 0, 0, 12, 68, 199, 56, 145, 196, 81, 36, 39, 51, 81, 0, 18, 70, 193, 19, 224, 83, 56, 0, 49,
+			39, 51, 72, 50, 36, 91, 37, 50, 0, 13, 68, 180, 120, 21, 60, 48, 108, 50, 89, 35, 72, 0, 14, 68, 130, 44, 211, 60, 50, 36,
+			84, 37, 89, 35, 72, 0, 18, 70, 127, 60, 17, 137, 242, 145, 65, 37, 49, 51, 39, 65, 36, 47, 51, 0, 11, 67, 121, 193, 192, 55,
+			36, 104, 17, 108, 0, 15, 69, 109, 232, 179, 137, 16, 83, 36, 55, 39, 10, 40, 51, 0, 12, 67, 105, 229, 192, 104, 17, 35, 55, 35,
+			47, 0, 11, 67, 77, 197, 192, 89, 36, 104, 17, 47, 0, 14, 68, 71, 18, 17, 196, 51, 35, 81, 71, 35, 51, 81, 0, 14, 69, 70,
+			35, 212, 137, 16, 51, 40, 72, 91, 40, 51, 0, 10, 67, 61, 225, 192, 72, 36, 55, 108, 0, 0, 15, 69, 137, 225, 243, 28, 160, 84,
+			36, 55, 108, 57, 108, 47, 0, 11, 67, 137, 120, 0, 84, 35, 47, 35, 50, 0, 15, 69, 127, 55, 179, 138, 0, 65, 37, 55, 37, 57,
+			40, 50, 0, 17, 69, 120, 136, 51, 28, 160, 6, 55, 35, 71, 35, 50, 37, 108, 47, 0, 11, 67, 114, 36, 74, 104, 17, 40, 51, 47,
+			0, 16, 69, 77, 28, 81, 30, 0, 89, 35, 51, 81, 36, 51, 108, 50, 0, 16, 68, 77, 20, 209, 200, 89, 39, 51, 89, 39, 51, 36,
+			57, 36, 0, 17, 69, 57, 231, 51, 28, 160, 101, 39, 55, 104, 17, 37, 57, 108, 47, 0, 17, 69, 53, 232, 179, 28, 160, 107, 35, 55,
+			35, 84, 37, 57, 108, 47, 0, 16, 69, 32, 242, 7, 94, 0, 71, 35, 72, 71, 108, 47, 36, 50, 0, 0, 15, 69, 192, 116, 72, 68,
+			240, 49, 108, 51, 71, 39, 51, 72, 0, 11, 67, 74, 44, 199, 88, 39, 12, 57, 108, 0, 15, 69, 62, 36, 72, 68, 240, 72, 40, 51,
+			71, 39, 51, 72, 0, 10, 67, 34, 44, 199, 71, 40, 57, 108, 0, 21, 71, 9, 251, 94, 205, 177, 243, 68, 108, 65, 48, 36, 55, 37,
+			83, 108, 57, 36, 51, 0, 10, 67, 8, 133, 0, 108, 71, 35, 91, 0, 0, 16, 69, 183, 51, 199, 205, 64, 48, 36, 57, 72, 108, 57,
+			36, 91, 0, 14, 68, 133, 18, 17, 40, 107, 36, 51, 71, 36, 51, 47, 0, 14, 68, 125, 236, 34, 40, 65, 35, 55, 35, 49, 40, 47,
+			0, 16, 68, 78, 3, 179, 40, 89, 36, 50, 101, 37, 57, 57, 35, 47, 0, 13, 68, 73, 145, 223, 40, 88, 36, 108, 65, 35, 47, 0,
+			12, 67, 61, 236, 115, 72, 35, 55, 36, 81, 37, 0, 11, 67, 61, 152, 179, 72, 35, 19, 84, 37, 0, 14, 68, 52, 193, 223, 40, 107,
+			36, 75, 108, 65, 35, 47, 0, 11, 67, 50, 12, 115, 75, 35, 50, 81, 37, 0, 15, 68, 34, 5, 19, 40, 71, 36, 50, 36, 91, 35,
+			89, 47, 0, 0, 0, 14, 68, 194, 244, 98, 204, 49, 35, 90, 51, 35, 84, 37, 0, 13, 68, 193, 49, 243, 204, 49, 35, 89, 108, 37,
+			12, 0, 15, 69, 182, 3, 199, 80, 160, 48, 36, 50, 72, 108, 91, 47, 0, 13, 68, 126, 36, 226, 204, 65, 40, 89, 35, 84, 37, 0,
+			16, 69, 124, 163, 243, 76, 160, 65, 36, 47, 39, 72, 37, 89, 47, 0, 16, 69, 109, 24, 148, 76, 160, 83, 39, 51, 40, 91, 39, 89,
+			47, 0, 16, 69, 61, 24, 143, 74, 0, 72, 39, 51, 40, 72, 88, 35, 50, 0, 15, 69, 34, 19, 199, 80, 160, 71, 36, 107, 72, 108,
+			91, 47, 0, 0, 11, 67, 129, 197, 0, 50, 35, 104, 17, 91, 0, 14, 69, 127, 50, 179, 131, 16, 65, 37, 47, 37, 50, 81, 0, 13,
+			67, 124, 132, 71, 65, 39, 71, 35, 51, 51, 108, 0, 16, 69, 109, 20, 202, 28, 240, 83, 36, 51, 36, 89, 47, 108, 72, 0, 13, 67,
+			85, 164, 71, 89, 39, 104, 17, 6, 51, 108, 0, 15, 69, 28, 168, 173, 204, 112, 39, 47, 39, 48, 37, 57, 108, 0, 0, 15, 69, 62,
+			40, 19, 43, 48, 72, 40, 50, 36, 89, 47, 37, 0, 11, 67, 33, 35, 162, 71, 39, 88, 101, 40, 0, 32, 76, 30, 2, 145, 128, 116,
+			243, 138, 1, 222, 205, 50, 128, 35, 50, 47, 36, 51, 50, 108, 89, 37, 57, 39, 50, 108, 55, 37, 89, 47, 0, 10, 67, 9, 66, 179,
+			108, 91, 47, 37, 0, 0, 20, 70, 180, 244, 115, 80, 120, 0, 48, 36, 72, 35, 51, 37, 57, 36, 91, 108, 50, 0, 13, 68, 128, 116,
+			83, 28, 50, 108, 51, 36, 89, 108, 0, 14, 68, 121, 40, 159, 28, 55, 39, 88, 40, 65, 35, 50, 0, 14, 68, 80, 252, 207, 28, 91,
+			35, 72, 37, 72, 35, 50, 0, 14, 68, 62, 19, 143, 28, 72, 36, 107, 101, 39, 72, 108, 0, 17, 70, 32, 116, 179, 123, 52, 240, 71,
+			108, 88, 37, 55, 37, 89, 49, 0, 20, 71, 29, 50, 135, 120, 252, 243, 60, 35, 89, 36, 47, 108, 55, 72, 36, 37, 72, 0, 17, 70,
+			11, 1, 209, 62, 40, 0, 108, 49, 108, 51, 72, 36, 39, 50, 0, 0, 15, 69, 181, 236, 240, 30, 0, 48, 36, 55, 37, 49, 108, 50,
+			0, 13, 68, 181, 225, 224, 136, 48, 36, 55, 108, 50, 39, 0, 17, 70, 128, 116, 136, 29, 229, 0, 50, 108, 88, 71, 108, 55, 36, 91,
+			0, 12, 68, 68, 226, 148, 136, 51, 35, 101, 76, 40, 0, 17, 70, 32, 132, 97, 31, 60, 192, 71, 35, 71, 51, 107, 108, 37, 12, 0,
+			16, 70, 31, 8, 160, 137, 252, 192, 36, 49, 39, 50, 39, 65, 37, 0, 16, 70, 30, 39, 199, 131, 52, 202, 40, 65, 108, 50, 37, 89,
+			47, 0, 19, 70, 29, 151, 135, 53, 100, 74, 35, 19, 55, 108, 107, 35, 88, 51, 35, 47, 0, 0, 8, 66, 206, 0, 57, 36, 50, 0,
+			11, 67, 205, 227, 199, 57, 35, 55, 72, 108, 0, 10, 67, 197, 230, 192, 81, 39, 55, 83, 0, 11, 67, 183, 55, 199, 48, 36, 57, 65,
+			108, 0, 10, 67, 137, 230, 192, 84, 39, 55, 83, 0, 18, 69, 126, 3, 85, 68, 112, 65, 39, 50, 107, 35, 89, 36, 51, 35, 50, 0,
+			18, 69, 125, 178, 142, 68, 112, 65, 39, 83, 47, 35, 101, 35, 51, 35, 50, 0, 16, 69, 124, 194, 34, 68, 112, 65, 35, 75, 71, 40,
+			51, 35, 50, 0, 13, 67, 109, 200, 71, 83, 39, 104, 17, 35, 107, 108, 0, 11, 67, 101, 230, 192, 35, 12, 55, 35, 83, 0, 14, 69,
+			42, 40, 15, 68, 112, 47, 39, 50, 72, 51, 108, 0, 11, 67, 29, 252, 71, 39, 65, 36, 81, 108, 0, 0, 9, 66, 207, 0, 57, 36,
+			6, 49, 0, 18, 70, 193, 66, 179, 132, 124, 243, 49, 35, 91, 47, 37, 107, 108, 37, 12, 0, 12, 67, 193, 24, 30, 49, 39, 51, 50,
+			36, 55, 0, 10, 67, 129, 19, 128, 50, 36, 51, 101, 0, 11, 67, 127, 53, 30, 65, 37, 91, 36, 55, 0, 12, 67, 126, 4, 158, 65,
+			35, 50, 88, 36, 55, 0, 14, 67, 125, 146, 158, 65, 39, 19, 35, 47, 47, 35, 55, 0, 13, 67, 113, 225, 200, 104, 17, 39, 55, 55,
+			108, 71, 0, 12, 67, 77, 232, 158, 89, 36, 55, 55, 40, 55, 0, 15, 69, 42, 36, 96, 42, 32, 47, 39, 51, 36, 50, 47, 39, 0,
+			14, 67, 40, 115, 200, 47, 35, 19, 35, 72, 72, 39, 71, 0, 18, 70, 35, 1, 209, 199, 52, 115, 71, 36, 49, 108, 51, 81, 37, 51,
+			37, 0, 0, 11, 67, 197, 232, 159, 81, 35, 55, 40, 65, 0, 11, 67, 187, 8, 64, 76, 36, 49, 49, 36, 0, 11, 67, 181, 19, 192,
+			48, 35, 51, 35, 72, 0, 14, 68, 181, 18, 33, 28, 48, 39, 51, 71, 35, 107, 108, 0, 11, 67, 135, 52, 159, 107, 37, 88, 39, 65,
+			0, 11, 67, 129, 156, 223, 50, 35, 19, 37, 65, 0, 11, 67, 125, 225, 240, 65, 36, 55, 108, 49, 0, 13, 67, 113, 88, 64, 104, 17,
+			36, 89, 89, 36, 12, 0, 12, 67, 109, 28, 223, 83, 36, 51, 36, 57, 65, 0, 12, 67, 61, 225, 240, 72, 35, 55, 55, 108, 49, 0,
+			11, 67, 53, 51, 192, 107, 35, 89, 35, 72, 0, 11, 67, 49, 51, 192, 75, 35, 89, 35, 72, 0, 11, 67, 33, 232, 155, 71, 36, 55,
+			39, 83, 0, 12, 67, 29, 55, 27, 39, 89, 104, 17, 39, 83, 0, 10, 67, 29, 51, 192, 35, 89, 35, 72, 0, 18, 70, 11, 17, 223,
+			126, 8, 0, 108, 81, 108, 65, 36, 65, 50, 39, 50, 0, 0, 12, 67, 197, 229, 32, 81, 39, 55, 91, 35, 50, 0, 11, 67, 129, 65,
+			202, 50, 36, 91, 108, 47, 0, 10, 67, 125, 236, 0, 65, 36, 55, 49, 0, 13, 67, 125, 227, 92, 65, 39, 55, 107, 35, 104, 17, 0,
+			14, 68, 114, 4, 226, 120, 104, 17, 39, 50, 89, 40, 55, 0, 18, 70, 74, 3, 241, 30, 12, 192, 88, 36, 50, 72, 36, 81, 108, 50,
+			37, 0, 11, 67, 73, 248, 160, 88, 35, 65, 40, 50, 0, 19, 70, 61, 24, 154, 198, 44, 192, 72, 39, 51, 40, 104, 17, 81, 40, 57,
+			36, 0, 11, 67, 34, 28, 224, 71, 36, 107, 37, 50, 0, 13, 68, 34, 3, 243, 120, 71, 35, 50, 72, 37, 55, 0, 16, 69, 30, 35,
+			240, 122, 0, 39, 72, 39, 49, 39, 55, 39, 50, 0, 0, 10, 67, 204, 116, 79, 57, 108, 51, 72, 0, 11, 67, 197, 231, 192, 81, 39,
+			55, 35, 65, 0, 10, 67, 196, 116, 79, 81, 108, 51, 72, 0, 11, 67, 193, 231, 192, 49, 35, 55, 35, 65, 0, 10, 67, 192, 116, 79,
+			49, 108, 51, 72, 0, 12, 67, 181, 234, 225, 48, 36, 55, 55, 36, 12, 0, 11, 67, 137, 231, 192, 84, 36, 55, 35, 65, 0, 10, 67,
+			132, 116, 79, 107, 108, 51, 72, 0, 12, 67, 131, 52, 161, 50, 36, 57, 88, 36, 12, 0, 13, 68, 125, 148, 98, 108, 65, 35, 19, 51,
+			40, 83, 0, 16, 69, 125, 68, 98, 52, 112, 65, 35, 91, 51, 40, 107, 35, 50, 0, 12, 67, 121, 234, 225, 55, 36, 55, 55, 108, 107,
+			0, 13, 67, 113, 234, 225, 104, 17, 39, 55, 55, 36, 12, 0, 9, 67, 101, 231, 192, 36, 55, 65, 0, 12, 67, 83, 20, 79, 91, 36,
+			81, 36, 51, 72, 0, 13, 67, 78, 212, 79, 6, 89, 36, 48, 39, 51, 72, 0, 12, 67, 76, 164, 113, 89, 36, 47, 39, 51, 81, 0,
+			12, 68, 59, 53, 34, 124, 101, 37, 91, 40, 65, 0, 11, 67, 58, 37, 33, 101, 40, 91, 36, 12, 0, 11, 67, 33, 84, 97, 71, 35,
+			89, 51, 36, 0, 0, 20, 70, 197, 19, 225, 124, 124, 243, 81, 36, 51, 72, 36, 107, 35, 65, 108, 37, 12, 0, 15, 68, 193, 228, 82,
+			128, 49, 39, 55, 39, 51, 88, 35, 50, 0, 13, 68, 192, 123, 84, 128, 49, 108, 48, 91, 36, 50, 0, 10, 67, 185, 18, 128, 76, 39,
+			51, 47, 0, 14, 68, 183, 52, 82, 128, 48, 37, 51, 36, 88, 35, 50, 0, 13, 68, 183, 2, 179, 128, 48, 36, 49, 47, 37, 50, 0,
+			12, 67, 181, 231, 200, 48, 39, 55, 39, 65, 71, 0, 15, 68, 180, 244, 82, 128, 48, 36, 72, 35, 51, 88, 35, 50, 0, 18, 70, 180,
+			164, 98, 83, 55, 243, 48, 36, 47, 51, 39, 91, 37, 65, 37, 0, 13, 68, 129, 228, 226, 128, 50, 36, 55, 89, 39, 50, 0, 11, 67,
+			125, 232, 158, 65, 35, 55, 40, 55, 0, 20, 72, 125, 196, 81, 42, 8, 71, 207, 48, 65, 39, 104, 17, 35, 51, 51, 35, 51, 0, 12,
+			67, 125, 116, 72, 65, 39, 47, 51, 36, 71, 0, 13, 68, 125, 76, 51, 128, 65, 36, 91, 49, 37, 50, 0, 12, 67, 124, 209, 204, 65,
+			39, 107, 108, 75, 75, 0, 15, 68, 124, 199, 135, 40, 65, 35, 75, 35, 55, 55, 108, 47, 0, 18, 69, 113, 23, 7, 137, 224, 104, 17,
+			35, 51, 104, 17, 108, 84, 39, 55, 0, 10, 67, 110, 44, 222, 83, 39, 57, 55, 0, 13, 68, 83, 52, 82, 128, 91, 37, 51, 88, 35,
+			50, 0, 14, 68, 76, 119, 51, 128, 89, 108, 104, 17, 36, 57, 50, 0, 16, 69, 74, 3, 27, 205, 224, 88, 35, 50, 75, 36, 83, 37,
+			55, 0, 14, 68, 72, 215, 199, 40, 88, 35, 107, 35, 65, 108, 47, 0, 14, 69, 68, 118, 199, 205, 224, 51, 108, 83, 108, 36, 55, 0,
+			17, 69, 49, 20, 220, 205, 224, 75, 35, 51, 89, 35, 104, 17, 37, 55, 0, 17, 69, 49, 18, 220, 205, 224, 75, 35, 51, 89, 35, 104,
+			17, 37, 55, 0, 15, 68, 40, 252, 235, 128, 47, 35, 72, 35, 57, 57, 39, 50, 0, 15, 68, 35, 54, 240, 128, 71, 37, 57, 35, 83,
+			49, 35, 50, 0, 15, 68, 32, 246, 96, 112, 71, 35, 72, 39, 50, 39, 104, 17, 0, 12, 68, 32, 116, 226, 128, 71, 108, 89, 39, 50,
+			0, 11, 67, 9, 22, 128, 108, 51, 39, 104, 17, 0, 0, 14, 68, 193, 24, 148, 132, 49, 36, 51, 39, 91, 36, 12, 0, 12, 68, 184,
+			116, 112, 132, 76, 108, 51, 49, 36, 0, 14, 68, 181, 56, 145, 60, 48, 35, 89, 84, 39, 51, 72, 0, 17, 69, 129, 252, 200, 69, 240,
+			50, 36, 65, 37, 71, 35, 51, 35, 65, 0, 11, 67, 128, 220, 219, 50, 35, 107, 37, 83, 0, 17, 70, 127, 60, 17, 137, 184, 0, 65,
+			37, 49, 51, 39, 83, 39, 50, 0, 14, 68, 127, 52, 83, 60, 65, 37, 51, 36, 89, 35, 72, 0, 12, 67, 125, 84, 89, 65, 36, 89,
+			51, 35, 19, 0, 15, 68, 125, 55, 171, 132, 65, 39, 89, 35, 55, 55, 35, 107, 0, 12, 67, 125, 28, 223, 65, 35, 51, 57, 35, 65,
+			0, 13, 68, 80, 119, 43, 132, 91, 108, 104, 17, 36, 12, 0, 11, 67, 42, 44, 223, 47, 40, 57, 35, 65, 0, 15, 68, 41, 28, 51,
+			132, 47, 39, 51, 49, 37, 57, 36, 12, 0, 14, 67, 40, 212, 112, 47, 35, 107, 35, 51, 51, 39, 49, 0, 17, 70, 30, 3, 243, 125,
+			76, 0, 35, 50, 72, 37, 65, 36, 91, 49, 0, 18, 70, 29, 54, 209, 31, 56, 0, 36, 89, 83, 35, 51, 108, 57, 36, 50, 0, 11,
+			67, 9, 244, 91, 108, 65, 39, 51, 83, 0, 0, 13, 68, 194, 4, 226, 120, 49, 39, 50, 89, 40, 55, 0, 10, 67, 192, 116, 74, 49,
+			108, 51, 47, 0, 10, 67, 184, 116, 74, 76, 108, 51, 47, 0, 10, 67, 180, 116, 74, 48, 108, 51, 47, 0, 15, 69, 124, 252, 209, 30,
+			0, 65, 39, 72, 37, 51, 108, 50, 0, 13, 67, 113, 16, 160, 104, 17, 39, 51, 19, 108, 50, 0, 9, 67, 101, 184, 128, 35, 83, 84,
+			0, 13, 67, 93, 28, 220, 47, 35, 51, 37, 104, 17, 36, 0, 16, 68, 88, 245, 145, 32, 88, 36, 72, 72, 36, 88, 35, 51, 71, 0,
+			12, 67, 84, 248, 156, 89, 35, 72, 40, 104, 17, 0, 10, 67, 69, 184, 128, 51, 39, 83, 40, 0, 17, 70, 60, 116, 79, 30, 7, 128,
+			72, 108, 51, 72, 108, 50, 36, 55, 0, 10, 67, 60, 116, 74, 72, 108, 51, 47, 0, 25, 73, 48, 252, 207, 29, 226, 149, 139, 50, 0,
+			75, 35, 72, 37, 72, 39, 47, 47, 35, 89, 84, 37, 71, 0, 13, 68, 40, 167, 199, 48, 47, 39, 47, 65, 108, 75, 0, 12, 68, 31,
+			7, 179, 120, 35, 49, 55, 37, 55, 0, 13, 68, 30, 33, 243, 120, 35, 84, 108, 57, 36, 55, 0, 24, 73, 28, 236, 209, 29, 226, 149,
+			139, 50, 0, 35, 101, 37, 51, 39, 47, 47, 35, 89, 84, 37, 71, 0, 0, 11, 67, 193, 49, 207, 49, 36, 89, 108, 72, 0, 11, 67,
+			185, 178, 161, 76, 36, 83, 47, 36, 0, 16, 69, 130, 36, 112, 70, 16, 50, 40, 51, 49, 39, 51, 36, 12, 0, 17, 69, 129, 252, 206,
+			68, 240, 50, 36, 65, 37, 101, 35, 51, 35, 72, 0, 15, 68, 126, 39, 171, 108, 65, 39, 19, 35, 55, 55, 36, 83, 0, 17, 69, 124,
+			161, 209, 194, 16, 65, 39, 47, 108, 51, 36, 49, 36, 12, 0, 12, 67, 113, 85, 64, 104, 17, 36, 89, 35, 89, 0, 9, 67, 101, 244,
+			64, 39, 65, 51, 0, 15, 69, 71, 4, 199, 130, 16, 51, 39, 49, 89, 108, 50, 36, 0, 18, 70, 70, 34, 51, 63, 55, 192, 51, 40,
+			71, 37, 72, 37, 57, 39, 65, 0, 14, 68, 68, 115, 243, 124, 51, 108, 72, 37, 57, 39, 65, 0, 14, 67, 42, 28, 225, 47, 35, 107,
+			37, 12, 57, 36, 12, 0, 12, 67, 34, 3, 207, 71, 35, 50, 72, 35, 72, 0, 19, 70, 33, 50, 177, 30, 7, 192, 71, 35, 89, 47,
+			36, 81, 108, 50, 35, 65, 0, 14, 68, 33, 17, 243, 124, 71, 35, 51, 108, 57, 35, 65, 0, 17, 70, 32, 124, 211, 43, 55, 192, 71,
+			36, 19, 37, 89, 47, 37, 65, 0, 17, 69, 29, 118, 199, 206, 16, 36, 47, 83, 108, 37, 57, 57, 36, 12, 0, 14, 68, 29, 59, 81,
+			192, 36, 89, 48, 35, 51, 35, 49, 0, 16, 70, 28, 136, 160, 103, 55, 192, 35, 71, 40, 50, 35, 37, 65, 0, 0, 13, 68, 197, 235,
+			179, 128, 81, 39, 55, 76, 37, 50, 0, 11, 67, 197, 27, 64, 81, 39, 51, 39, 48, 0, 13, 68, 187, 59, 83, 40, 76, 37, 48, 89,
+			36, 47, 0, 13, 67, 126, 5, 51, 65, 39, 12, 50, 6, 91, 37, 0, 14, 67, 125, 164, 51, 65, 39, 104, 17, 35, 88, 88, 37, 0,
+			18, 70, 109, 227, 211, 180, 114, 128, 83, 36, 55, 72, 36, 89, 48, 108, 47, 0, 14, 68, 109, 22, 162, 128, 83, 39, 51, 104, 17, 40,
+			50, 0, 18, 70, 108, 124, 10, 137, 28, 222, 83, 108, 49, 47, 39, 51, 57, 36, 55, 0, 15, 68, 93, 22, 243, 128, 47, 35, 51, 35,
+			83, 36, 57, 50, 0, 16, 69, 74, 3, 8, 205, 224, 88, 35, 50, 75, 35, 71, 37, 55, 0, 13, 68, 73, 22, 243, 128, 88, 39, 51,
+			83, 37, 50, 0, 13, 68, 71, 51, 98, 128, 51, 36, 57, 107, 40, 50, 0, 12, 68, 42, 35, 115, 128, 47, 39, 107, 37, 50, 0, 13,
+			68, 40, 231, 243, 128, 47, 35, 101, 65, 37, 50, 0, 14, 68, 30, 3, 31, 128, 35, 50, 75, 39, 65, 35, 50, 0, 17, 70, 29, 50,
+			135, 128, 136, 158, 36, 89, 47, 108, 50, 71, 39, 55, 0, 15, 69, 29, 19, 200, 205, 224, 35, 51, 72, 36, 71, 37, 55, 0, 0, 18,
+			70, 193, 24, 159, 137, 40, 159, 49, 39, 51, 39, 65, 39, 88, 39, 65, 0, 14, 68, 193, 17, 243, 132, 49, 36, 51, 108, 57, 36, 12,
+			0, 17, 70, 192, 116, 113, 70, 40, 64, 49, 108, 51, 81, 39, 51, 40, 107, 0, 13, 68, 180, 117, 32, 132, 48, 108, 91, 50, 36, 12,
+			0, 17, 70, 135, 52, 98, 197, 236, 219, 107, 37, 51, 39, 81, 55, 37, 83, 0, 18, 70, 124, 115, 209, 33, 19, 192, 65, 108, 72, 36,
+			51, 71, 39, 51, 72, 0, 12, 67, 113, 180, 192, 104, 17, 35, 83, 35, 89, 0, 17, 70, 63, 23, 199, 43, 60, 0, 72, 39, 81, 65,
+			108, 47, 37, 49, 0, 16, 69, 62, 40, 19, 41, 240, 72, 40, 50, 36, 89, 47, 35, 65, 0, 18, 70, 61, 59, 98, 43, 52, 159, 72,
+			36, 89, 48, 39, 47, 37, 88, 65, 0, 18, 70, 57, 27, 147, 30, 8, 64, 101, 35, 51, 76, 39, 89, 108, 50, 36, 0, 17, 70, 40,
+			104, 145, 205, 40, 64, 47, 36, 10, 39, 51, 37, 88, 36, 0, 17, 70, 32, 236, 222, 30, 8, 64, 71, 35, 101, 37, 55, 108, 50, 36,
+			0, 15, 69, 31, 56, 15, 205, 240, 37, 50, 72, 37, 57, 39, 65, 0, 20, 70, 28, 163, 71, 63, 56, 64, 36, 47, 47, 36, 107, 108,
+			72, 37, 57, 36, 12, 0, 16, 70, 11, 4, 219, 137, 19, 192, 108, 49, 89, 83, 39, 51, 72, 0, 0, 11, 67, 197, 17, 210, 81, 39,
+			51, 108, 88, 0, 18, 70, 193, 228, 98, 111, 55, 128, 49, 39, 55, 39, 51, 39, 83, 37, 55, 0, 10, 67, 185, 56, 128, 76, 39, 89,
+			40, 0, 17, 70, 182, 36, 179, 41, 24, 160, 48, 39, 88, 37, 47, 51, 39, 50, 0, 14, 68, 181, 12, 209, 80, 48, 35, 88, 37, 51,
+			36, 91, 0, 18, 70, 129, 84, 71, 120, 252, 224, 50, 35, 89, 51, 36, 72, 72, 37, 50, 0, 17, 69, 125, 241, 209, 76, 160, 65, 39,
+			65, 108, 51, 36, 89, 35, 47, 0, 16, 69, 122, 12, 17, 30, 0, 55, 35, 50, 49, 35, 51, 108, 50, 0, 20, 70, 113, 84, 84, 205,
+			28, 224, 104, 17, 35, 89, 51, 36, 91, 37, 51, 37, 50, 0, 16, 70, 101, 36, 71, 27, 55, 128, 36, 88, 51, 108, 37, 12, 55, 0,
+			16, 69, 78, 43, 81, 126, 0, 89, 40, 48, 36, 51, 65, 35, 50, 0, 11, 67, 61, 24, 128, 72, 36, 51, 39, 12, 0, 18, 69, 60,
+			226, 145, 138, 0, 72, 39, 101, 4, 47, 35, 6, 51, 40, 50, 0, 11, 67, 33, 232, 174, 71, 35, 55, 40, 76, 0, 10, 67, 33, 24,
+			128, 71, 39, 51, 39, 0, 16, 69, 32, 225, 209, 76, 160, 71, 39, 101, 108, 51, 36, 89, 47, 0, 17, 69, 32, 119, 15, 68, 160, 71,
+			108, 104, 17, 39, 72, 51, 35, 47, 0, 18, 70, 28, 232, 135, 131, 49, 202, 36, 101, 84, 108, 50, 37, 57, 108, 47, 0, 0, 14, 68,
+			197, 17, 223, 68, 81, 36, 51, 108, 65, 36, 51, 0, 11, 67, 194, 39, 211, 49, 40, 65, 36, 89, 0, 13, 68, 185, 232, 135, 68, 76,
+			36, 55, 84, 108, 51, 0, 23, 71, 181, 225, 224, 40, 116, 115, 124, 48, 36, 55, 108, 50, 36, 47, 108, 51, 37, 57, 39, 65, 0, 19,
+			70, 180, 244, 83, 136, 226, 161, 48, 36, 72, 35, 51, 89, 40, 101, 47, 36, 0, 18, 70, 136, 120, 7, 63, 55, 192, 84, 108, 50, 108,
+			72, 37, 57, 39, 65, 0, 16, 69, 136, 116, 115, 42, 16, 84, 108, 51, 37, 57, 36, 47, 36, 0, 16, 70, 130, 37, 51, 63, 55, 192,
+			50, 39, 91, 37, 72, 37, 65, 0, 13, 68, 125, 151, 199, 68, 65, 36, 19, 65, 108, 51, 0, 21, 70, 124, 166, 85, 32, 120, 33, 65,
+			39, 47, 36, 35, 89, 89, 36, 71, 108, 50, 36, 0, 12, 67, 120, 129, 211, 6, 55, 36, 71, 108, 89, 0, 12, 67, 113, 116, 64, 104,
+			17, 35, 47, 35, 51, 0, 11, 67, 100, 129, 211, 35, 71, 71, 108, 89, 0, 14, 68, 89, 18, 15, 68, 88, 35, 51, 71, 72, 35, 51,
+			0, 13, 68, 81, 232, 135, 68, 91, 35, 55, 84, 108, 51, 0, 13, 68, 77, 72, 135, 68, 89, 36, 91, 39, 108, 51, 0, 15, 69, 62,
+			44, 71, 130, 16, 72, 39, 81, 108, 50, 36, 12, 0, 12, 68, 58, 33, 225, 68, 101, 108, 107, 35, 51, 0, 14, 68, 50, 33, 225, 68,
+			75, 35, 84, 108, 107, 36, 51, 0, 16, 69, 44, 120, 34, 206, 16, 89, 108, 50, 35, 84, 37, 57, 36, 0, 17, 70, 40, 226, 142, 136,
+			114, 0, 47, 35, 101, 47, 36, 101, 108, 71, 0, 15, 69, 32, 226, 135, 130, 16, 71, 35, 101, 47, 108, 50, 36, 0, 18, 70, 30, 2,
+			161, 31, 55, 192, 36, 50, 47, 36, 107, 108, 57, 35, 65, 0, 15, 69, 29, 244, 79, 28, 240, 35, 65, 39, 51, 72, 108, 72, 0, 15,
+			69, 29, 180, 199, 130, 16, 35, 83, 89, 108, 50, 36, 12, 0, 20, 70, 28, 170, 205, 28, 252, 225, 36, 47, 47, 36, 107, 108, 72, 37,
+			57, 36, 12, 0, 15, 69, 28, 170, 205, 28, 240, 36, 47, 47, 36, 107, 108, 72, 0, 0, 12, 67, 193, 177, 212, 49, 35, 83, 83, 108,
+			91, 0, 11, 67, 192, 120, 84, 49, 108, 107, 36, 91, 0, 15, 69, 129, 180, 199, 131, 48, 50, 35, 83, 89, 108, 50, 37, 0, 11, 67,
+			124, 164, 98, 65, 36, 47, 51, 39, 0, 13, 67, 113, 225, 212, 104, 17, 35, 55, 55, 108, 91, 0, 11, 67, 109, 225, 212, 83, 36, 55,
+			108, 91, 0, 11, 67, 108, 216, 179, 83, 35, 107, 84, 108, 0, 11, 67, 108, 115, 84, 83, 108, 107, 36, 91, 0, 12, 67, 85, 184, 179,
+			89, 35, 83, 35, 84, 37, 0, 22, 71, 69, 36, 98, 29, 60, 226, 128, 51, 36, 88, 36, 51, 84, 108, 89, 37, 57, 39, 50, 0, 12,
+			67, 61, 244, 98, 72, 35, 65, 35, 51, 40, 0, 15, 69, 58, 35, 240, 83, 48, 101, 39, 72, 49, 39, 91, 37, 0, 15, 69, 55, 56,
+			162, 131, 48, 107, 36, 57, 84, 40, 50, 37, 0, 10, 67, 35, 56, 51, 71, 37, 50, 37, 0, 16, 69, 34, 3, 240, 83, 48, 71, 35,
+			50, 72, 49, 36, 91, 37, 0, 13, 68, 34, 3, 199, 72, 71, 36, 50, 72, 108, 88, 0, 16, 69, 33, 20, 199, 131, 48, 71, 36, 51,
+			36, 89, 108, 50, 37, 0, 20, 71, 29, 28, 7, 128, 252, 212, 128, 36, 51, 49, 108, 50, 72, 37, 91, 36, 50, 0, 11, 67, 8, 132,
+			98, 108, 71, 36, 51, 40, 0, 0, 18, 70, 129, 197, 31, 31, 56, 64, 50, 35, 104, 17, 91, 65, 108, 57, 36, 0, 14, 69, 128, 119,
+			207, 29, 16, 50, 108, 65, 72, 108, 51, 0, 15, 69, 127, 56, 7, 197, 16, 65, 37, 50, 108, 81, 35, 51, 0, 19, 70, 125, 18, 43,
+			204, 120, 0, 65, 39, 51, 35, 71, 71, 37, 57, 108, 50, 0, 13, 67, 113, 245, 81, 104, 17, 35, 65, 89, 35, 51, 0, 16, 69, 93,
+			22, 207, 29, 16, 47, 35, 51, 35, 83, 72, 108, 51, 0, 13, 68, 85, 22, 199, 148, 89, 36, 51, 83, 35, 50, 0, 16, 69, 76, 132,
+			162, 29, 16, 89, 35, 71, 88, 36, 84, 108, 51, 0, 18, 70, 74, 35, 7, 51, 56, 64, 88, 39, 75, 108, 75, 37, 57, 36, 12, 0,
+			15, 69, 56, 120, 34, 29, 16, 101, 108, 50, 36, 84, 108, 51, 0, 15, 69, 33, 236, 226, 29, 16, 71, 39, 55, 37, 84, 108, 51, 0,
+			17, 70, 33, 17, 219, 40, 115, 192, 71, 35, 51, 39, 83, 47, 108, 72, 0, 19, 70, 32, 116, 222, 205, 200, 64, 71, 108, 89, 35, 55,
+			37, 104, 17, 36, 12, 0, 17, 70, 30, 12, 84, 40, 120, 0, 35, 50, 81, 39, 91, 47, 108, 50, 0, 18, 70, 29, 59, 112, 41, 24,
+			159, 36, 89, 48, 36, 49, 47, 51, 39, 65, 0, 16, 70, 29, 50, 142, 136, 120, 0, 39, 89, 47, 39, 101, 108, 50, 0, 15, 69, 28,
+			226, 179, 29, 16, 36, 101, 47, 37, 57, 108, 51, 0, 12, 68, 28, 199, 135, 76, 36, 75, 55, 108, 89, 0, 11, 67, 8, 132, 209, 108,
+			71, 89, 39, 51, 0, 0, 18, 70, 197, 236, 211, 205, 28, 224, 81, 36, 55, 37, 89, 37, 51, 37, 50, 0, 16, 69, 131, 56, 15, 29,
+			32, 50, 35, 57, 35, 50, 72, 108, 88, 0, 12, 68, 124, 124, 17, 136, 65, 108, 49, 51, 39, 0, 14, 68, 124, 114, 28, 204, 65, 108,
+			71, 35, 104, 17, 37, 0, 10, 67, 78, 44, 238, 89, 40, 37, 76, 0, 18, 70, 61, 22, 212, 30, 12, 192, 72, 39, 51, 83, 36, 91,
+			108, 50, 37, 0, 14, 68, 57, 52, 98, 204, 101, 39, 89, 51, 35, 84, 37, 0, 16, 70, 42, 36, 96, 28, 248, 128, 47, 39, 51, 50,
+			108, 72, 39, 0, 16, 69, 35, 56, 15, 29, 32, 71, 37, 57, 35, 50, 72, 108, 88, 0, 10, 67, 31, 51, 210, 36, 57, 72, 88, 0,
+			0, 18, 70, 109, 227, 211, 180, 116, 64, 83, 36, 55, 72, 36, 89, 48, 108, 51, 0, 20, 71, 100, 131, 199, 121, 150, 51, 124, 35, 71,
+			72, 39, 55, 19, 35, 88, 37, 65, 0, 11, 67, 93, 246, 64, 47, 35, 65, 35, 19, 0, 10, 67, 81, 246, 64, 91, 35, 65, 19, 0,
+			19, 71, 76, 120, 10, 70, 36, 162, 124, 89, 108, 50, 47, 51, 39, 88, 39, 65, 0, 11, 67, 68, 129, 215, 51, 39, 71, 108, 47, 0,
+			15, 68, 61, 18, 15, 68, 72, 35, 51, 71, 36, 72, 35, 51, 0, 10, 67, 49, 246, 64, 75, 35, 65, 19, 0, 19, 70, 40, 114, 19,
+			40, 120, 33, 47, 108, 71, 36, 89, 47, 108, 50, 36, 12, 0, 20, 70, 28, 132, 81, 76, 120, 33, 35, 71, 35, 51, 51, 36, 89, 108,
+			50, 36, 12, 0, 14, 68, 8, 228, 83, 68, 108, 101, 35, 51, 89, 35, 51, 0, 0, 15, 69, 197, 19, 237, 29, 64, 81, 35, 51, 72,
+			48, 108, 91, 0, 15, 67, 92, 135, 50, 47, 35, 71, 35, 104, 17, 36, 57, 36, 0, 19, 70, 92, 129, 215, 32, 124, 243, 47, 35, 71,
+			108, 47, 35, 71, 108, 37, 12, 0, 23, 72, 86, 36, 71, 77, 17, 219, 205, 224, 89, 40, 51, 36, 10, 36, 89, 51, 108, 83, 37, 55,
+			0, 11, 67, 79, 18, 128, 89, 35, 81, 35, 47, 0, 14, 67, 70, 44, 242, 51, 35, 84, 37, 57, 36, 57, 36, 0, 15, 69, 70, 34,
+			142, 43, 48, 51, 40, 47, 35, 101, 47, 37, 0, 14, 68, 70, 12, 81, 72, 51, 35, 50, 81, 51, 35, 88, 0, 20, 71, 41, 17, 224,
+			78, 216, 145, 40, 47, 36, 51, 108, 50, 89, 48, 39, 51, 47, 0, 10, 67, 31, 52, 76, 37, 51, 35, 75, 0, 13, 68, 30, 3, 209,
+			72, 35, 50, 72, 35, 51, 88, 0, 19, 71, 29, 236, 224, 29, 60, 226, 128, 36, 55, 37, 50, 108, 89, 57, 40, 50, 0, 17, 69, 29,
+			231, 203, 131, 48, 35, 55, 65, 39, 89, 35, 50, 50, 108, 0, 13, 68, 29, 226, 17, 72, 35, 55, 71, 39, 51, 88, 0, 0, 10, 67,
+			197, 19, 192, 81, 35, 51, 72, 0, 15, 68, 193, 251, 81, 76, 49, 39, 65, 48, 36, 51, 36, 89, 0, 20, 70, 181, 19, 155, 112, 120,
+			0, 48, 39, 51, 101, 35, 83, 35, 104, 17, 108, 50, 0, 10, 67, 137, 19, 192, 84, 36, 51, 72, 0, 16, 68, 125, 202, 207, 76, 65,
+			39, 104, 17, 35, 72, 72, 35, 89, 0, 14, 67, 125, 84, 77, 65, 39, 89, 35, 51, 51, 35, 107, 0, 11, 67, 69, 51, 192, 51, 36,
+			89, 35, 72, 0, 15, 68, 63, 2, 145, 76, 72, 39, 49, 47, 39, 51, 36, 89, 0, 14, 68, 61, 50, 145, 76, 72, 35, 89, 47, 51,
+			35, 89, 0, 12, 67, 33, 51, 192, 71, 39, 89, 89, 35, 72, 0, 18, 70, 33, 50, 135, 131, 1, 209, 71, 36, 89, 47, 108, 50, 49,
+			108, 51, 0, 18, 70, 32, 114, 7, 92, 120, 81, 71, 108, 71, 108, 47, 108, 107, 36, 51, 0, 14, 68, 29, 50, 145, 76, 36, 89, 47,
+			36, 51, 36, 89, 0, 12, 68, 28, 231, 135, 92, 36, 101, 55, 108, 47, 0, 21, 71, 28, 132, 81, 31, 49, 224, 132, 35, 71, 35, 51,
+			51, 108, 57, 108, 50, 36, 12, 0, 0, 16, 70, 192, 120, 49, 137, 24, 128, 49, 108, 50, 81, 39, 51, 39, 0, 27, 73, 181, 236, 223,
+			71, 52, 135, 79, 56, 160, 48, 39, 55, 37, 65, 36, 51, 37, 88, 108, 89, 37, 57, 39, 50, 0, 14, 68, 137, 227, 145, 48, 84, 36,
+			55, 101, 35, 51, 75, 0, 26, 73, 108, 116, 90, 29, 226, 141, 87, 55, 128, 83, 108, 51, 36, 104, 17, 39, 47, 47, 35, 107, 89, 37,
+			55, 0, 17, 70, 82, 1, 211, 31, 60, 192, 91, 36, 50, 108, 89, 108, 37, 12, 0, 17, 70, 33, 28, 202, 138, 12, 192, 71, 36, 51,
+			37, 47, 39, 50, 37, 0, 0, 16, 69, 129, 252, 237, 69, 48, 50, 36, 65, 37, 48, 39, 51, 89, 0, 12, 67, 43, 20, 113, 47, 35,
+			81, 35, 51, 81, 0, 16, 69, 34, 3, 243, 131, 0, 71, 35, 50, 72, 37, 50, 35, 49, 0, 22, 72, 33, 17, 224, 60, 116, 135, 130,
+			16, 71, 35, 51, 35, 50, 72, 108, 88, 108, 50, 36, 0, 16, 69, 31, 4, 237, 69, 48, 36, 49, 89, 48, 36, 51, 36, 89, 0, 15,
+			69, 11, 2, 162, 69, 48, 108, 49, 47, 39, 51, 36, 89, 0, 0, 18, 69, 197, 228, 243, 131, 32, 81, 39, 55, 36, 89, 37, 50, 36,
+			57, 36, 0, 17, 70, 197, 28, 224, 139, 59, 128, 81, 36, 51, 37, 50, 84, 37, 76, 0, 18, 70, 182, 36, 95, 137, 56, 179, 48, 40,
+			51, 65, 40, 89, 35, 84, 37, 0, 25, 73, 181, 225, 209, 205, 33, 211, 206, 40, 0, 48, 39, 55, 108, 51, 37, 88, 108, 89, 37, 57,
+			39, 50, 0, 23, 72, 181, 18, 162, 29, 181, 7, 131, 48, 48, 35, 51, 47, 39, 10, 35, 83, 91, 108, 50, 37, 0, 19, 69, 124, 129,
+			222, 107, 32, 65, 39, 71, 108, 55, 36, 104, 17, 36, 57, 36, 0, 19, 70, 69, 147, 226, 33, 23, 0, 51, 35, 19, 72, 39, 71, 35,
+			51, 104, 17, 0, 19, 70, 60, 226, 145, 60, 124, 243, 72, 39, 101, 47, 35, 51, 72, 108, 37, 12, 0, 17, 70, 58, 35, 241, 80, 120,
+			51, 101, 39, 72, 81, 39, 91, 50, 37, 0, 22, 72, 32, 116, 179, 197, 19, 199, 131, 48, 71, 108, 88, 37, 81, 35, 51, 72, 108, 50,
+			37, 0, 18, 69, 29, 118, 199, 207, 32, 36, 47, 83, 108, 37, 57, 57, 36, 57, 36, 0, 28, 74, 29, 50, 145, 205, 236, 210, 29, 60,
+			226, 128, 36, 89, 47, 36, 51, 37, 55, 37, 88, 108, 89, 37, 57, 39, 50, 0, 6, 65, 8, 6, 108, 0, 0, 11, 67, 137, 18, 192,
+			84, 35, 51, 35, 89, 0, 13, 68, 42, 36, 145, 60, 47, 40, 88, 35, 51, 72, 0, 17, 70, 41, 28, 237, 79, 56, 0, 47, 36, 51,
+			37, 48, 89, 37, 50, 0, 15, 69, 28, 130, 179, 29, 144, 36, 71, 47, 37, 57, 108, 19, 0, 0, 10, 67, 197, 232, 128, 81, 35, 55,
+			40, 0, 10, 67, 181, 28, 192, 48, 35, 51, 37, 0, 11, 67, 137, 232, 128, 84, 35, 55, 39, 12, 0, 10, 67, 133, 232, 128, 107, 39,
+			55, 40, 0, 15, 69, 132, 124, 223, 30, 0, 107, 108, 57, 36, 65, 108, 50, 0, 23, 71, 129, 132, 92, 68, 129, 224, 204, 50, 35, 88,
+			35, 51, 104, 17, 39, 51, 71, 108, 50, 37, 0, 10, 67, 101, 232, 128, 39, 55, 39, 84, 0, 15, 69, 57, 17, 211, 30, 0, 101, 39,
+			51, 108, 89, 108, 50, 0, 22, 71, 48, 241, 224, 29, 67, 224, 204, 75, 39, 72, 108, 50, 108, 91, 39, 72, 35, 50, 37, 0, 15, 69,
+			32, 116, 115, 42, 0, 71, 108, 51, 37, 47, 39, 50, 0, 11, 67, 29, 228, 202, 35, 55, 35, 89, 47, 0, 19, 70, 29, 118, 199, 27,
+			60, 128, 36, 47, 83, 108, 37, 57, 57, 36, 57, 36, 0, 0, 11, 67, 192, 120, 79, 49, 108, 107, 35, 72, 0, 15, 69, 192, 116, 112,
+			68, 240, 49, 108, 51, 49, 35, 51, 72, 0, 12, 67, 112, 129, 207, 104, 17, 39, 71, 108, 72, 0, 12, 67, 87, 49, 207, 89, 35, 57,
+			57, 108, 72, 0, 15, 69, 58, 40, 19, 68, 240, 101, 40, 50, 89, 35, 51, 72, 0, 27, 73, 30, 3, 85, 29, 21, 222, 32, 120, 33,
+			36, 50, 107, 36, 89, 108, 51, 47, 35, 55, 35, 71, 108, 50, 36, 0, 15, 69, 28, 140, 226, 68, 240, 35, 71, 37, 84, 35, 51, 72,
+			0, 10, 67, 8, 165, 0, 108, 47, 35, 91, 0, 0, 19, 70, 125, 161, 210, 120, 114, 128, 65, 39, 104, 17, 108, 88, 36, 55, 108, 47,
+			0, 13, 68, 70, 34, 17, 40, 51, 39, 71, 36, 51, 47, 0, 13, 68, 68, 114, 17, 40, 51, 108, 71, 36, 51, 47, 0, 11, 67, 32,
+			243, 162, 71, 35, 72, 101, 40, 0, 11, 67, 29, 248, 179, 39, 65, 35, 84, 37, 0, 18, 70, 29, 50, 145, 28, 210, 128, 36, 89, 47,
+			36, 51, 108, 107, 35, 47, 0, 0, 18, 70, 198, 34, 160, 33, 28, 64, 81, 40, 47, 36, 50, 71, 36, 51, 81, 0, 19, 70, 181, 28,
+			30, 71, 56, 0, 48, 36, 51, 49, 39, 55, 39, 51, 37, 50, 0, 11, 67, 105, 65, 192, 104, 17, 36, 91, 108, 0, 10, 67, 101, 65,
+			192, 36, 91, 108, 19, 0, 18, 70, 74, 3, 51, 69, 40, 0, 88, 35, 50, 75, 37, 51, 88, 35, 50, 0, 15, 69, 29, 85, 222, 28,
+			208, 36, 89, 47, 36, 55, 108, 107, 0, 0, 10, 67, 193, 72, 128, 49, 36, 91, 39, 0, 14, 68, 192, 196, 98, 204, 49, 35, 75, 51,
+			35, 84, 37, 0, 13, 68, 139, 51, 243, 136, 84, 37, 72, 37, 57, 39, 0, 14, 69, 139, 50, 145, 206, 0, 84, 37, 47, 51, 37, 50,
+			0, 10, 67, 137, 72, 128, 84, 39, 91, 39, 0, 20, 70, 134, 3, 226, 30, 12, 128, 107, 36, 50, 72, 36, 84, 108, 50, 36, 57, 36,
+			0, 10, 67, 129, 72, 128, 50, 35, 91, 39, 0, 11, 67, 126, 252, 0, 65, 39, 90, 35, 49, 0, 10, 67, 101, 104, 128, 39, 6, 88,
+			84, 0, 13, 68, 68, 115, 243, 136, 51, 108, 72, 37, 57, 39, 0, 16, 69, 41, 23, 226, 76, 160, 47, 36, 51, 65, 39, 89, 36, 47,
+			0, 14, 69, 40, 119, 211, 138, 0, 47, 108, 65, 89, 39, 50, 0, 9, 67, 29, 236, 192, 36, 55, 108, 0, 10, 67, 8, 168, 0, 108,
+			47, 36, 50, 0, 0, 14, 69, 70, 44, 207, 28, 240, 51, 40, 57, 72, 108, 72, 0, 13, 67, 45, 28, 199, 89, 39, 51, 35, 57, 57,
+			108, 0, 12, 67, 41, 28, 199, 47, 36, 51, 37, 57, 108, 0, 0, 16, 70, 194, 39, 237, 137, 50, 128, 49, 39, 65, 48, 39, 89, 47,
+			0, 12, 67, 190, 210, 162, 90, 36, 48, 36, 47, 39, 0, 10, 67, 110, 34, 162, 83, 39, 47, 39, 0, 19, 70, 109, 24, 160, 81, 50,
+			128, 83, 39, 51, 40, 50, 36, 91, 35, 89, 47, 0, 17, 70, 77, 19, 173, 137, 50, 128, 89, 39, 51, 101, 48, 40, 89, 47, 0, 15,
+			69, 33, 24, 143, 71, 48, 71, 39, 51, 39, 72, 51, 37, 0, 18, 70, 32, 116, 160, 81, 50, 128, 71, 108, 88, 50, 36, 91, 35, 89,
+			47, 0, 20, 71, 30, 8, 145, 76, 115, 199, 40, 35, 50, 84, 35, 51, 89, 108, 72, 108, 47, 0, 17, 70, 28, 248, 160, 205, 50, 128,
+			35, 72, 84, 36, 50, 37, 89, 47, 0, 0, 19, 70, 129, 84, 74, 204, 120, 0, 50, 39, 89, 51, 35, 47, 37, 57, 108, 50, 0, 13,
+			68, 124, 120, 145, 28, 65, 108, 84, 35, 51, 108, 0, 13, 68, 109, 232, 145, 28, 83, 36, 55, 39, 51, 108, 0, 14, 68, 83, 22, 202,
+			28, 91, 36, 81, 36, 83, 47, 108, 0, 17, 70, 76, 124, 19, 110, 40, 0, 89, 108, 49, 89, 37, 83, 39, 50, 0, 15, 68, 75, 4,
+			115, 28, 88, 35, 49, 35, 51, 37, 57, 108, 0, 16, 72, 62, 36, 71, 128, 248, 145, 30, 0, 72, 39, 51, 108, 50, 0, 10, 67, 33,
+			225, 192, 71, 35, 55, 108, 0, 0, 12, 68, 139, 52, 240, 204, 84, 37, 89, 49, 37, 0, 17, 70, 82, 20, 72, 30, 8, 128, 91, 35,
+			107, 51, 71, 108, 50, 40, 0, 10, 67, 32, 231, 128, 71, 39, 101, 55, 0, 10, 67, 30, 215, 128, 35, 48, 36, 55, 0, 16, 69, 29,
+			22, 162, 30, 0, 35, 51, 104, 17, 35, 84, 108, 50, 0, 0, 11, 67, 193, 71, 192, 49, 36, 91, 35, 65, 0, 10, 67, 185, 71, 192,
+			76, 36, 91, 65, 0, 18, 69, 115, 49, 219, 40, 112, 104, 17, 37, 57, 108, 83, 35, 47, 35, 50, 0, 11, 67, 53, 71, 192, 107, 35,
+			91, 35, 65, 0, 16, 69, 29, 81, 222, 40, 112, 36, 89, 108, 55, 35, 47, 35, 50, 0, 15, 69, 28, 220, 199, 128, 112, 35, 107, 57,
+			108, 50, 35, 50, 0, 0, 11, 67, 129, 56, 140, 50, 39, 89, 40, 75, 0, 12, 67, 125, 148, 30, 65, 39, 19, 88, 35, 55, 0, 14,
+			67, 124, 216, 158, 65, 39, 107, 35, 84, 84, 35, 55, 0, 12, 67, 124, 124, 222, 65, 108, 6, 57, 36, 55, 0, 12, 67, 105, 225, 216,
+			104, 17, 36, 55, 108, 88, 0, 12, 67, 93, 188, 222, 47, 39, 83, 36, 57, 55, 0, 10, 67, 80, 116, 76, 91, 108, 51, 75, 0, 12,
+			67, 78, 28, 222, 89, 39, 107, 36, 57, 55, 0, 11, 67, 61, 236, 222, 72, 35, 55, 37, 55, 0, 10, 67, 29, 88, 158, 39, 89, 40,
+			55, 0, 16, 69, 60, 114, 30, 206, 32, 72, 108, 71, 36, 55, 57, 40, 0, 46, 0, 11, 67, 193, 76, 223, 49, 36, 91, 37, 65, 0,
+			14, 68, 136, 213, 51, 28, 84, 35, 107, 91, 37, 57, 108, 0, 17, 70, 131, 56, 138, 70, 40, 0, 50, 37, 57, 39, 47, 51, 39, 50,
+			0, 11, 67, 129, 60, 223, 50, 35, 89, 37, 65, 0, 15, 68, 126, 23, 156, 28, 65, 35, 107, 55, 35, 104, 17, 108, 0, 18, 68, 124,
+			166, 220, 28, 65, 39, 47, 47, 35, 83, 36, 104, 17, 35, 50, 0, 14, 68, 101, 243, 202, 28, 39, 65, 72, 35, 47, 35, 50, 0, 13,
+			68, 78, 40, 51, 28, 89, 39, 50, 37, 57, 108, 0, 14, 67, 73, 200, 159, 88, 35, 104, 17, 104, 17, 40, 65, 0, 11, 67, 70, 252,
+			223, 51, 36, 90, 37, 65, 0, 15, 68, 67, 4, 115, 28, 88, 35, 49, 35, 51, 37, 57, 108, 0, 19, 70, 49, 164, 71, 111, 49, 192,
+			75, 39, 104, 17, 51, 108, 83, 37, 57, 108, 0, 11, 67, 41, 248, 159, 47, 35, 65, 40, 65, 0, 14, 67, 33, 22, 159, 71, 36, 51,
+			35, 104, 17, 65, 36, 0, 13, 68, 31, 20, 159, 28, 36, 81, 88, 36, 65, 108, 0, 17, 70, 29, 60, 7, 131, 49, 192, 36, 89, 49,
+			108, 50, 37, 57, 108, 0, 0, 11, 67, 133, 248, 160, 107, 35, 65, 40, 50, 0, 10, 67, 131, 56, 160, 50, 36, 39, 50, 0, 14, 67,
+			125, 88, 138, 65, 39, 89, 35, 84, 84, 35, 47, 0, 14, 67, 125, 76, 202, 65, 35, 91, 37, 57, 57, 35, 47, 0, 17, 69, 114, 20,
+			202, 30, 0, 104, 17, 39, 107, 36, 89, 47, 108, 50, 0, 12, 67, 82, 6, 202, 91, 36, 50, 39, 83, 47, 0, 11, 67, 70, 37, 32,
+			51, 39, 91, 35, 50, 0, 13, 67, 61, 19, 138, 72, 36, 6, 51, 35, 101, 47, 0, 11, 67, 58, 215, 128, 101, 36, 48, 36, 55, 0,
+			11, 67, 42, 215, 128, 47, 39, 48, 39, 55, 0, 11, 67, 41, 28, 224, 47, 35, 51, 37, 50, 0, 16, 70, 32, 116, 202, 30, 12, 192,
+			71, 108, 89, 47, 108, 50, 37, 0, 17, 70, 29, 55, 162, 30, 12, 192, 39, 89, 55, 39, 84, 108, 50, 37, 0, 9, 67, 29, 8, 0,
+			36, 88, 50, 0, 11, 67, 10, 213, 32, 108, 48, 91, 36, 50, 0, 12, 67, 9, 28, 224, 108, 51, 37, 57, 35, 50, 0, 0, 11, 67,
+			204, 216, 143, 57, 35, 107, 40, 72, 0, 11, 67, 182, 248, 161, 48, 35, 90, 40, 107, 0, 13, 67, 181, 232, 49, 6, 48, 35, 55, 35,
+			50, 81, 0, 11, 67, 181, 231, 192, 48, 35, 55, 35, 65, 0, 14, 68, 181, 226, 179, 192, 48, 39, 55, 36, 47, 37, 49, 0, 11, 67,
+			131, 59, 161, 50, 37, 76, 36, 12, 0, 14, 68, 129, 72, 179, 124, 50, 35, 91, 35, 84, 37, 65, 0, 12, 67, 129, 51, 161, 50, 39,
+			89, 101, 36, 12, 0, 13, 67, 128, 216, 161, 50, 35, 107, 84, 36, 57, 36, 0, 11, 67, 127, 56, 161, 65, 37, 84, 36, 12, 0, 15,
+			68, 125, 193, 226, 124, 65, 39, 104, 17, 108, 84, 36, 65, 0, 15, 69, 124, 161, 222, 207, 0, 65, 36, 47, 108, 55, 37, 49, 0, 13,
+			67, 113, 231, 192, 104, 17, 35, 6, 55, 35, 65, 0, 13, 67, 105, 28, 207, 104, 17, 39, 51, 51, 37, 72, 0, 10, 67, 80, 231, 192,
+			91, 39, 101, 65, 0, 11, 67, 78, 36, 143, 89, 40, 88, 35, 72, 0, 11, 67, 77, 188, 225, 89, 35, 83, 37, 107, 0, 12, 67, 77,
+			178, 161, 89, 35, 83, 47, 36, 12, 0, 15, 67, 70, 44, 225, 51, 35, 84, 6, 37, 12, 57, 36, 12, 0, 11, 67, 62, 36, 143, 72,
+			40, 88, 35, 72, 0, 12, 67, 49, 40, 161, 75, 39, 88, 84, 36, 12, 0, 12, 67, 43, 12, 225, 47, 36, 49, 57, 36, 12, 0, 13,
+			68, 41, 184, 115, 124, 47, 35, 83, 107, 37, 65, 0, 13, 68, 41, 56, 115, 124, 47, 35, 89, 107, 37, 65, 0, 14, 68, 40, 241, 226,
+			124, 47, 35, 72, 108, 84, 39, 65, 0, 10, 67, 40, 231, 192, 47, 39, 101, 65, 0, 12, 68, 35, 56, 51, 124, 71, 37, 50, 37, 65,
+			0, 11, 67, 33, 231, 192, 71, 35, 55, 35, 65, 0, 14, 68, 33, 72, 179, 124, 71, 36, 91, 35, 84, 37, 65, 0, 18, 70, 33, 28,
+			202, 30, 12, 199, 71, 36, 51, 37, 47, 108, 50, 37, 108, 0, 18, 70, 32, 116, 83, 122, 40, 7, 71, 108, 51, 89, 36, 55, 39, 50,
+			108, 0, 12, 68, 30, 210, 179, 192, 39, 48, 47, 37, 49, 0, 13, 68, 29, 199, 179, 124, 36, 104, 17, 55, 37, 65, 0, 14, 69, 29,
+			50, 179, 108, 112, 36, 89, 47, 37, 83, 108, 0, 11, 67, 10, 248, 49, 108, 90, 35, 50, 81, 0, 0, 13, 68, 183, 52, 202, 128, 48,
+			37, 89, 47, 39, 50, 0, 14, 69, 180, 114, 145, 137, 224, 48, 108, 47, 51, 39, 55, 0, 13, 68, 133, 24, 179, 128, 107, 36, 51, 39,
+			37, 50, 0, 15, 69, 132, 114, 159, 205, 224, 107, 108, 47, 65, 36, 57, 55, 0, 13, 68, 130, 33, 206, 40, 50, 35, 84, 108, 101, 47,
+			0, 11, 67, 128, 124, 222, 50, 108, 19, 36, 55, 0, 14, 69, 128, 116, 113, 205, 224, 50, 108, 51, 81, 37, 55, 0, 17, 70, 126, 36,
+			115, 40, 120, 51, 65, 40, 51, 37, 47, 108, 50, 37, 0, 14, 67, 125, 28, 8, 65, 39, 51, 35, 49, 49, 35, 71, 0, 14, 67, 124,
+			196, 72, 65, 39, 75, 35, 51, 51, 35, 71, 0, 15, 68, 113, 226, 148, 128, 104, 17, 39, 47, 35, 91, 35, 50, 0, 14, 68, 78, 34,
+			179, 128, 89, 40, 47, 37, 57, 35, 50, 0, 14, 68, 73, 18, 27, 40, 88, 35, 51, 71, 35, 83, 47, 0, 16, 69, 63, 20, 84, 204,
+			128, 72, 36, 81, 35, 51, 91, 37, 71, 0, 15, 68, 42, 39, 179, 40, 47, 39, 12, 55, 37, 57, 35, 47, 0, 13, 68, 42, 36, 179,
+			128, 47, 39, 12, 88, 37, 50, 0, 13, 68, 40, 248, 115, 128, 47, 35, 72, 107, 37, 50, 0, 13, 68, 35, 52, 98, 40, 71, 36, 57,
+			51, 40, 47, 0, 13, 68, 34, 5, 51, 128, 71, 36, 50, 91, 37, 50, 0, 13, 68, 28, 132, 115, 112, 36, 71, 51, 37, 104, 17, 0,
+			12, 68, 8, 130, 179, 128, 108, 71, 47, 37, 50, 0, 0, 12, 68, 204, 115, 138, 132, 57, 108, 101, 47, 36, 0, 14, 68, 198, 1, 226,
+			132, 81, 36, 50, 108, 84, 36, 12, 0, 13, 68, 198, 1, 209, 60, 81, 39, 50, 108, 51, 72, 0, 11, 67, 192, 248, 159, 49, 39, 72,
+			40, 65, 0, 17, 70, 181, 232, 138, 29, 28, 0, 48, 39, 55, 39, 47, 108, 51, 49, 0, 17, 69, 180, 161, 211, 205, 240, 48, 39, 47,
+			108, 89, 37, 57, 39, 65, 0, 14, 68, 132, 200, 179, 132, 107, 35, 75, 84, 37, 57, 36, 0, 15, 68, 130, 22, 202, 132, 50, 35, 107,
+			39, 83, 47, 36, 12, 0, 17, 70, 129, 178, 135, 123, 56, 0, 50, 35, 83, 47, 108, 55, 37, 50, 0, 16, 69, 128, 114, 145, 205, 240,
+			50, 108, 47, 36, 51, 57, 39, 65, 0, 18, 69, 126, 12, 210, 205, 240, 65, 35, 50, 57, 36, 88, 37, 57, 39, 65, 0, 12, 67, 125,
+			68, 112, 65, 39, 91, 51, 36, 49, 0, 14, 67, 124, 164, 217, 65, 39, 47, 47, 35, 89, 36, 19, 0, 17, 69, 124, 163, 199, 137, 240,
+			65, 39, 47, 36, 72, 108, 84, 36, 65, 0, 19, 71, 124, 116, 115, 50, 33, 224, 28, 65, 108, 51, 37, 75, 40, 108, 50, 108, 0, 17,
+			69, 122, 34, 147, 205, 240, 55, 39, 47, 36, 89, 37, 57, 39, 65, 0, 13, 67, 82, 8, 159, 91, 36, 50, 35, 84, 35, 65, 0, 13,
+			67, 81, 50, 159, 6, 91, 35, 89, 47, 39, 65, 0, 10, 67, 70, 8, 64, 51, 36, 50, 36, 0, 13, 68, 63, 60, 10, 132, 72, 37,
+			49, 47, 36, 12, 0, 12, 67, 53, 248, 159, 107, 35, 65, 65, 40, 65, 0, 14, 68, 41, 146, 51, 132, 47, 35, 19, 71, 37, 57, 36,
+			0, 17, 69, 33, 72, 34, 205, 240, 71, 36, 91, 36, 50, 35, 84, 37, 65, 0, 14, 68, 33, 28, 210, 60, 71, 36, 51, 37, 88, 35,
+			72, 0, 11, 67, 29, 21, 48, 35, 51, 35, 91, 49, 0, 20, 71, 28, 215, 207, 127, 52, 82, 28, 35, 107, 65, 35, 72, 65, 37, 51,
+			88, 108, 0, 15, 68, 8, 167, 179, 132, 108, 47, 36, 55, 37, 57, 36, 12, 0, 0, 15, 69, 197, 17, 219, 204, 160, 81, 36, 51, 108,
+			83, 37, 47, 0, 15, 70, 196, 116, 162, 207, 55, 128, 81, 108, 88, 39, 37, 55, 0, 15, 69, 135, 59, 81, 138, 0, 107, 37, 48, 36,
+			51, 39, 50, 0, 13, 68, 133, 28, 34, 120, 107, 36, 51, 49, 40, 55, 0, 18, 70, 133, 19, 223, 35, 55, 128, 107, 35, 51, 72, 35,
+			65, 71, 37, 55, 0, 11, 67, 131, 28, 224, 50, 36, 81, 37, 50, 0, 15, 69, 125, 226, 34, 70, 0, 65, 36, 55, 71, 39, 51, 50,
+			0, 15, 67, 125, 72, 156, 65, 39, 91, 35, 84, 84, 36, 104, 17, 0, 14, 68, 125, 49, 243, 120, 65, 35, 89, 108, 19, 36, 55, 0,
+			14, 68, 124, 241, 206, 120, 65, 39, 72, 108, 101, 36, 55, 0, 11, 67, 123, 56, 160, 55, 37, 57, 39, 50, 0, 12, 67, 53, 60, 224,
+			107, 39, 89, 36, 57, 50, 0, 14, 68, 33, 20, 179, 120, 71, 36, 51, 36, 88, 37, 55, 0, 15, 69, 32, 244, 199, 56, 160, 71, 35,
+			72, 89, 108, 101, 47, 0, 17, 70, 29, 226, 141, 87, 55, 128, 39, 55, 47, 35, 107, 89, 37, 55, 0, 12, 68, 29, 183, 179, 48, 36,
+			83, 55, 37, 75, 0, 14, 69, 29, 180, 71, 56, 160, 35, 83, 51, 108, 101, 47, 0, 17, 70, 28, 168, 159, 35, 55, 128, 39, 47, 39,
+			65, 39, 71, 37, 55, 0, 13, 68, 28, 161, 224, 120, 36, 47, 108, 50, 39, 55, 0, 0, 12, 67, 197, 72, 33, 81, 39, 91, 50, 36,
+			12, 0, 17, 70, 193, 248, 160, 205, 39, 192, 49, 39, 65, 39, 50, 37, 88, 65, 0, 11, 67, 193, 244, 64, 49, 35, 65, 35, 51, 0,
+			15, 69, 192, 116, 200, 71, 16, 49, 108, 89, 71, 35, 51, 81, 0, 15, 69, 182, 33, 202, 206, 16, 48, 39, 108, 47, 37, 57, 36, 0,
+			15, 69, 181, 19, 243, 74, 16, 48, 35, 51, 72, 37, 88, 36, 0, 14, 68, 131, 49, 243, 124, 50, 35, 57, 108, 57, 35, 65, 0, 17,
+			69, 129, 195, 243, 130, 16, 50, 35, 104, 17, 72, 37, 50, 36, 12, 0, 11, 67, 129, 72, 161, 50, 35, 91, 84, 36, 0, 17, 70, 127,
+			1, 224, 205, 39, 192, 65, 36, 49, 108, 50, 37, 88, 65, 0, 14, 68, 125, 225, 243, 124, 65, 39, 55, 108, 57, 36, 65, 0, 14, 67,
+			125, 72, 161, 65, 39, 91, 35, 84, 84, 35, 107, 0, 14, 68, 124, 241, 226, 124, 65, 39, 72, 108, 84, 36, 65, 0, 17, 70, 124, 196,
+			79, 55, 54, 192, 65, 39, 75, 35, 51, 51, 35, 72, 0, 18, 69, 124, 129, 222, 106, 16, 65, 39, 71, 108, 55, 36, 104, 17, 36, 12,
+			0, 12, 67, 113, 244, 64, 104, 17, 35, 65, 35, 51, 0, 16, 69, 101, 55, 162, 206, 16, 19, 35, 89, 35, 55, 40, 57, 36, 0, 14,
+			67, 84, 247, 33, 89, 35, 72, 35, 104, 17, 36, 12, 0, 13, 68, 79, 52, 202, 124, 89, 37, 89, 47, 36, 65, 0, 15, 69, 71, 52,
+			136, 71, 16, 51, 37, 88, 71, 35, 51, 81, 0, 11, 67, 60, 244, 64, 72, 35, 72, 35, 51, 0, 10, 67, 57, 178, 161, 101, 39, 83,
+			47, 0, 11, 67, 53, 236, 225, 107, 36, 55, 57, 36, 0, 13, 67, 52, 247, 33, 107, 35, 72, 35, 104, 17, 36, 0, 19, 70, 35, 55,
+			179, 138, 7, 192, 6, 65, 37, 55, 57, 40, 12, 50, 39, 65, 0, 13, 68, 35, 52, 84, 192, 71, 37, 51, 35, 91, 49, 0, 18, 69,
+			33, 22, 94, 206, 16, 71, 35, 51, 19, 35, 55, 35, 57, 107, 36, 0, 12, 67, 29, 236, 225, 35, 55, 35, 57, 107, 36, 0, 19, 70,
+			28, 132, 81, 76, 120, 7, 35, 71, 35, 51, 51, 36, 89, 108, 50, 108, 0, 0, 17, 69, 193, 28, 15, 205, 224, 49, 39, 51, 39, 49,
+			39, 72, 37, 55, 0, 11, 67, 182, 37, 20, 48, 40, 91, 36, 91, 0, 11, 67, 137, 232, 162, 84, 39, 55, 84, 39, 0, 17, 70, 135,
+			51, 209, 137, 188, 222, 107, 37, 72, 51, 39, 83, 37, 55, 0, 15, 68, 129, 68, 202, 128, 50, 36, 91, 35, 89, 47, 35, 50, 0, 14,
+			68, 125, 145, 226, 128, 65, 39, 19, 108, 84, 36, 50, 0, 15, 68, 125, 88, 171, 40, 65, 39, 89, 35, 84, 84, 35, 47, 0, 14, 68,
+			124, 252, 226, 128, 6, 65, 35, 72, 57, 40, 50, 0, 11, 67, 124, 209, 208, 65, 39, 107, 108, 88, 0, 13, 67, 124, 196, 179, 65, 39,
+			75, 35, 88, 88, 108, 0, 13, 67, 113, 28, 212, 104, 17, 39, 51, 35, 57, 91, 0, 15, 68, 78, 215, 148, 40, 89, 36, 48, 36, 55,
+			36, 91, 47, 0, 13, 68, 57, 19, 51, 128, 101, 39, 51, 75, 37, 50, 0, 17, 69, 33, 19, 48, 136, 128, 71, 36, 51, 36, 50, 75,
+			49, 40, 71, 0, 17, 70, 31, 56, 10, 70, 216, 158, 37, 50, 47, 36, 51, 48, 39, 55, 0, 14, 69, 29, 55, 199, 205, 224, 36, 89,
+			65, 108, 37, 55, 0, 0, 12, 67, 198, 40, 81, 81, 39, 12, 107, 35, 51, 0, 12, 67, 193, 24, 17, 49, 39, 51, 50, 36, 51, 0,
+			17, 70, 185, 24, 176, 30, 3, 192, 76, 39, 51, 40, 49, 108, 50, 72, 0, 13, 68, 183, 1, 224, 60, 48, 39, 49, 108, 50, 72, 0,
+			11, 67, 134, 39, 209, 107, 40, 65, 36, 51, 0, 18, 70, 129, 252, 207, 30, 3, 192, 50, 36, 65, 37, 72, 108, 50, 35, 72, 0, 11,
+			67, 129, 180, 192, 50, 35, 83, 35, 89, 0, 19, 70, 129, 180, 115, 63, 56, 159, 50, 36, 83, 51, 37, 72, 37, 57, 39, 65, 0, 21,
+			71, 125, 146, 159, 60, 36, 115, 28, 65, 39, 47, 35, 65, 36, 72, 108, 51, 37, 57, 0, 13, 68, 125, 145, 224, 60, 65, 39, 108, 50,
+			36, 72, 0, 17, 69, 125, 50, 156, 205, 240, 65, 39, 89, 47, 35, 104, 17, 37, 65, 0, 15, 68, 123, 8, 10, 132, 55, 35, 49, 35,
+			50, 47, 36, 12, 0, 12, 67, 113, 241, 209, 104, 17, 39, 65, 108, 51, 0, 16, 70, 110, 36, 98, 29, 19, 192, 83, 39, 51, 84, 108,
+			51, 72, 0, 11, 67, 101, 241, 209, 35, 65, 65, 108, 51, 0, 16, 69, 101, 236, 209, 113, 240, 35, 55, 108, 51, 35, 104, 17, 65, 0,
+			17, 69, 100, 117, 28, 41, 240, 108, 91, 36, 104, 17, 36, 47, 35, 65, 0, 11, 67, 81, 241, 209, 91, 39, 65, 108, 51, 0, 11, 67,
+			78, 39, 209, 89, 40, 65, 36, 51, 0, 18, 70, 74, 3, 31, 139, 56, 64, 88, 35, 50, 75, 65, 40, 57, 36, 12, 0, 11, 67, 57,
+			241, 209, 101, 39, 65, 108, 51, 0, 17, 70, 57, 24, 148, 30, 3, 192, 101, 39, 51, 40, 91, 108, 50, 72, 0, 15, 68, 56, 196, 202,
+			132, 101, 39, 75, 35, 89, 47, 36, 12, 0, 13, 68, 52, 117, 32, 132, 48, 108, 91, 50, 36, 12, 0, 17, 70, 48, 124, 241, 75, 56,
+			0, 75, 108, 57, 81, 39, 88, 37, 50, 0, 13, 68, 42, 39, 179, 60, 47, 39, 6, 55, 37, 72, 0, 14, 67, 42, 6, 209, 47, 35,
+			50, 35, 83, 83, 39, 51, 0, 14, 67, 41, 88, 145, 47, 35, 89, 35, 84, 84, 39, 51, 0, 14, 68, 40, 115, 243, 132, 47, 35, 19,
+			72, 37, 57, 36, 0, 13, 68, 29, 188, 32, 60, 35, 83, 49, 35, 50, 72, 0, 13, 68, 8, 132, 202, 132, 108, 71, 35, 89, 47, 36,
+			0, 0, 18, 70, 197, 232, 136, 137, 236, 224, 81, 39, 55, 39, 71, 40, 55, 37, 50, 0, 11, 67, 196, 241, 210, 81, 39, 72, 108, 88,
+			0, 17, 70, 196, 114, 7, 68, 252, 224, 81, 108, 71, 108, 51, 72, 37, 50, 0, 15, 68, 193, 71, 240, 80, 49, 36, 91, 65, 35, 49,
+			36, 91, 0, 17, 70, 182, 36, 179, 79, 56, 160, 48, 39, 88, 37, 89, 57, 39, 50, 0, 18, 70, 182, 36, 134, 204, 248, 160, 48, 39,
+			88, 36, 19, 37, 72, 39, 50, 0, 17, 70, 181, 24, 155, 31, 55, 128, 48, 39, 51, 39, 83, 108, 57, 55, 0, 19, 70, 180, 161, 224,
+			79, 55, 128, 48, 39, 47, 108, 50, 89, 37, 57, 36, 55, 0, 8, 66, 134, 208, 107, 39, 48, 0, 17, 69, 124, 129, 207, 68, 160, 65,
+			39, 71, 108, 72, 36, 51, 35, 47, 0, 19, 70, 109, 17, 240, 79, 56, 160, 83, 36, 51, 108, 49, 89, 37, 57, 39, 50, 0, 18, 70,
+			109, 17, 224, 193, 236, 224, 83, 36, 51, 108, 50, 49, 55, 37, 50, 0, 14, 68, 81, 241, 209, 80, 91, 39, 65, 108, 51, 36, 91, 0,
+			14, 68, 77, 177, 209, 80, 89, 36, 83, 108, 51, 36, 91, 0, 19, 70, 56, 120, 145, 73, 252, 224, 101, 108, 84, 35, 51, 88, 35, 65,
+			37, 50, 0, 10, 67, 53, 72, 128, 107, 35, 91, 84, 0, 14, 68, 32, 243, 148, 204, 71, 35, 72, 35, 101, 91, 37, 0, 19, 70, 30,
+			6, 240, 79, 56, 160, 35, 50, 83, 36, 49, 89, 37, 57, 39, 50, 0, 0, 13, 68, 204, 243, 199, 68, 57, 39, 72, 72, 108, 51, 0,
+			12, 68, 194, 39, 199, 68, 49, 39, 65, 108, 51, 0, 18, 70, 182, 39, 162, 131, 55, 192, 48, 39, 55, 39, 50, 37, 57, 39, 65, 0,
+			19, 70, 181, 116, 82, 34, 36, 113, 48, 36, 47, 36, 51, 88, 71, 40, 51, 81, 0, 19, 70, 180, 164, 82, 34, 36, 113, 48, 36, 47,
+			36, 51, 88, 71, 40, 51, 81, 0, 15, 69, 126, 36, 135, 207, 0, 65, 40, 88, 108, 37, 12, 49, 0, 16, 69, 126, 20, 71, 138, 16,
+			65, 36, 107, 51, 108, 84, 36, 12, 0, 10, 67, 125, 84, 64, 65, 36, 89, 51, 0, 13, 68, 125, 39, 199, 68, 65, 36, 88, 65, 108,
+			51, 0, 12, 67, 114, 39, 211, 104, 17, 40, 65, 36, 89, 0, 16, 70, 85, 252, 225, 45, 252, 225, 89, 39, 65, 35, 57, 36, 12, 0,
+			17, 70, 62, 40, 19, 43, 55, 192, 72, 40, 50, 36, 89, 47, 37, 65, 0, 11, 67, 57, 116, 64, 101, 35, 47, 35, 51, 0, 11, 67,
+			56, 244, 64, 101, 35, 72, 35, 51, 0, 19, 70, 43, 52, 98, 40, 226, 161, 47, 37, 51, 39, 47, 35, 101, 47, 36, 12, 0, 21, 70,
+			33, 194, 34, 120, 120, 15, 71, 36, 104, 17, 35, 71, 40, 55, 108, 50, 35, 72, 0, 10, 67, 33, 116, 64, 71, 39, 47, 51, 0, 17,
+			69, 33, 19, 19, 42, 16, 71, 35, 51, 75, 35, 89, 47, 36, 12, 0, 14, 68, 33, 17, 207, 68, 71, 35, 51, 108, 72, 35, 51, 0,
+			15, 69, 32, 229, 7, 128, 240, 71, 35, 101, 91, 108, 50, 72, 0, 17, 70, 31, 55, 179, 131, 55, 192, 37, 55, 37, 50, 37, 57, 39,
+			65, 0, 15, 70, 30, 36, 98, 198, 44, 225, 39, 51, 39, 81, 40, 36, 0, 17, 70, 29, 50, 135, 122, 40, 33, 36, 89, 47, 108, 55,
+			39, 50, 36, 0, 18, 70, 29, 24, 160, 61, 24, 143, 35, 51, 84, 35, 50, 72, 51, 40, 72, 0, 0, 14, 69, 196, 120, 159, 205, 64,
+			81, 108, 84, 65, 37, 91, 0, 17, 70, 194, 36, 74, 205, 40, 158, 49, 39, 51, 47, 37, 88, 39, 55, 0, 16, 70, 182, 36, 83, 30,
+			2, 128, 48, 40, 51, 89, 108, 50, 47, 0, 22, 71, 181, 23, 211, 206, 39, 179, 40, 48, 39, 51, 65, 35, 89, 40, 55, 37, 57, 35,
+			47, 0, 10, 67, 138, 37, 34, 84, 39, 91, 39, 0, 22, 71, 124, 164, 98, 181, 236, 202, 128, 65, 36, 47, 51, 39, 48, 39, 55, 37,
+			47, 35, 50, 0, 20, 70, 115, 55, 226, 127, 50, 128, 104, 17, 36, 57, 65, 40, 65, 37, 57, 35, 47, 0, 11, 67, 77, 28, 212, 89,
+			37, 51, 37, 91, 0, 16, 69, 35, 56, 15, 205, 64, 71, 37, 57, 35, 50, 72, 37, 91, 0, 10, 67, 9, 226, 162, 108, 55, 47, 39,
+			0, 12, 67, 193, 66, 179, 49, 39, 91, 47, 37, 0, 48, 12, 67, 193, 66, 179, 49, 35, 91, 47, 37, 0, 46, 0, 18, 70, 198, 35,
+			209, 108, 168, 64, 81, 39, 84, 72, 51, 35, 83, 47, 36, 0, 17, 70, 197, 17, 224, 62, 44, 0, 81, 36, 51, 108, 50, 72, 40, 49,
+			0, 17, 70, 194, 40, 109, 31, 56, 64, 49, 40, 107, 48, 108, 57, 36, 12, 0, 14, 69, 184, 120, 143, 29, 16, 76, 108, 84, 72, 108,
+			51, 0, 15, 69, 184, 114, 33, 29, 16, 76, 108, 71, 35, 107, 108, 51, 0, 15, 69, 181, 20, 143, 29, 16, 48, 39, 51, 88, 72, 108,
+			51, 0, 11, 67, 137, 183, 0, 84, 36, 83, 104, 17, 0, 17, 70, 135, 51, 209, 137, 236, 240, 107, 37, 72, 51, 39, 55, 37, 49, 0,
+			11, 67, 133, 20, 192, 107, 35, 51, 35, 89, 0, 13, 67, 109, 229, 17, 83, 36, 55, 35, 91, 36, 51, 0, 13, 68, 77, 183, 179, 76,
+			89, 36, 83, 55, 37, 89, 0, 19, 70, 73, 244, 202, 30, 8, 64, 88, 36, 65, 36, 89, 47, 108, 50, 36, 12, 0, 18, 70, 70, 35,
+			206, 30, 8, 64, 51, 40, 72, 6, 101, 108, 50, 36, 12, 0, 13, 68, 69, 241, 224, 76, 51, 39, 65, 108, 50, 89, 0, 17, 70, 62,
+			40, 45, 31, 56, 64, 72, 40, 50, 48, 108, 57, 36, 12, 0, 13, 68, 41, 17, 224, 76, 47, 36, 51, 108, 50, 89, 0, 18, 70, 29,
+			236, 10, 70, 35, 192, 36, 55, 36, 49, 47, 36, 51, 39, 72, 0, 12, 68, 29, 49, 224, 76, 36, 89, 108, 50, 89, 0, 11, 67, 181,
+			20, 192, 48, 39, 51, 89, 0, 48, 12, 67, 181, 20, 192, 48, 36, 51, 36, 89, 0, 46, 0, 18, 70, 197, 17, 223, 29, 184, 160, 81,
+			36, 51, 108, 65, 108, 83, 39, 50, 0, 17, 70, 195, 55, 162, 32, 124, 202, 49, 37, 55, 40, 71, 108, 57, 47, 0, 16, 69, 194, 3,
+			226, 30, 0, 49, 35, 50, 72, 39, 84, 108, 50, 0, 11, 67, 181, 28, 210, 48, 36, 51, 37, 88, 0, 14, 68, 136, 124, 32, 80, 84,
+			108, 49, 39, 50, 36, 91, 0, 18, 70, 136, 117, 51, 131, 18, 160, 84, 108, 91, 37, 50, 81, 47, 39, 50, 0, 19, 70, 126, 1, 211,
+			32, 172, 192, 65, 39, 50, 108, 89, 36, 71, 35, 47, 37, 0, 22, 70, 113, 18, 71, 121, 156, 224, 104, 17, 39, 51, 51, 35, 47, 39,
+			55, 19, 36, 57, 50, 0, 19, 70, 108, 244, 71, 79, 56, 160, 83, 36, 72, 51, 108, 89, 37, 57, 39, 50, 0, 20, 70, 79, 52, 71,
+			123, 56, 160, 89, 37, 57, 36, 51, 108, 55, 36, 39, 84, 50, 0, 12, 68, 58, 33, 224, 80, 101, 108, 50, 36, 91, 0, 17, 70, 57,
+			108, 209, 30, 44, 192, 101, 35, 88, 37, 51, 108, 84, 37, 0, 14, 68, 57, 28, 98, 80, 101, 35, 51, 81, 40, 12, 91, 0, 15, 68,
+			33, 226, 20, 136, 71, 35, 55, 71, 35, 91, 39, 12, 0, 14, 69, 29, 60, 7, 206, 208, 36, 89, 49, 108, 57, 48, 0, 17, 70, 10,
+			3, 226, 193, 28, 224, 108, 50, 72, 39, 49, 51, 37, 50, 0, 11, 67, 9, 244, 82, 108, 65, 39, 51, 88, 0, 0, 18, 70, 181, 24,
+			147, 78, 36, 64, 48, 36, 51, 39, 89, 36, 89, 39, 51, 0, 20, 70, 181, 20, 202, 204, 248, 15, 48, 35, 51, 35, 89, 47, 37, 72,
+			35, 50, 72, 0, 15, 69, 139, 56, 19, 129, 48, 84, 37, 50, 89, 36, 50, 89, 0, 16, 70, 135, 52, 98, 139, 52, 64, 107, 37, 51,
+			39, 84, 37, 51, 0, 8, 66, 132, 240, 107, 36, 72, 0, 12, 67, 130, 36, 83, 50, 39, 12, 51, 35, 89, 0, 18, 70, 130, 17, 224,
+			60, 120, 33, 50, 35, 107, 108, 50, 72, 108, 50, 36, 0, 14, 67, 124, 244, 83, 65, 39, 72, 35, 51, 51, 36, 89, 0, 10, 67, 124,
+			116, 83, 65, 108, 51, 89, 0, 24, 70, 113, 53, 224, 94, 12, 225, 104, 17, 39, 89, 47, 35, 50, 47, 35, 50, 37, 57, 57, 36, 12,
+			0, 10, 67, 111, 60, 19, 83, 37, 49, 89, 0, 10, 67, 108, 116, 83, 83, 108, 51, 89, 0, 13, 68, 102, 1, 213, 68, 35, 50, 108,
+			89, 39, 51, 0, 17, 70, 70, 36, 148, 192, 116, 64, 51, 40, 88, 91, 36, 49, 108, 51, 0, 11, 67, 62, 37, 19, 72, 40, 91, 36,
+			89, 0, 16, 69, 57, 19, 51, 131, 0, 101, 39, 51, 75, 37, 50, 35, 49, 0, 17, 70, 35, 49, 224, 196, 116, 64, 71, 37, 57, 35,
+			50, 81, 108, 51, 0, 16, 70, 29, 232, 43, 132, 116, 64, 39, 50, 50, 35, 107, 108, 51, 0, 15, 69, 29, 55, 162, 31, 0, 36, 89,
+			55, 39, 84, 108, 49, 0, 20, 71, 28, 168, 159, 192, 120, 51, 192, 39, 47, 39, 65, 36, 49, 108, 50, 37, 49, 0, 15, 69, 9, 17,
+			200, 79, 0, 108, 51, 108, 71, 36, 89, 49, 0, 0, 20, 71, 194, 4, 202, 30, 2, 179, 128, 49, 39, 50, 89, 47, 108, 50, 47, 37,
+			50, 0, 14, 68, 125, 196, 71, 88, 65, 36, 104, 17, 51, 108, 88, 0, 17, 70, 48, 120, 49, 60, 116, 128, 75, 108, 50, 81, 39, 72,
+			108, 88, 0, 21, 71, 32, 115, 138, 69, 39, 243, 128, 71, 108, 101, 47, 35, 51, 88, 35, 65, 37, 50, 0, 19, 71, 30, 220, 222, 29,
+			60, 226, 128, 36, 48, 37, 55, 108, 89, 57, 39, 50, 0, 21, 71, 11, 1, 207, 127, 52, 243, 128, 108, 49, 108, 72, 36, 65, 37, 89,
+			57, 108, 50, 0, 0, 18, 70, 198, 3, 7, 128, 248, 0, 81, 39, 50, 75, 108, 50, 72, 35, 50, 0, 22, 70, 181, 52, 72, 68, 115,
+			209, 48, 36, 89, 35, 51, 36, 71, 35, 51, 108, 72, 35, 51, 0, 13, 68, 181, 19, 243, 76, 48, 35, 51, 72, 37, 89, 0, 12, 67,
+			125, 116, 77, 65, 35, 47, 51, 35, 107, 0, 19, 70, 124, 115, 209, 82, 40, 81, 65, 108, 72, 35, 51, 91, 39, 107, 35, 51, 0, 18,
+			70, 70, 37, 32, 62, 40, 0, 51, 39, 12, 91, 35, 50, 72, 40, 50, 0, 13, 68, 68, 227, 243, 76, 51, 39, 101, 72, 37, 89, 0,
+			13, 68, 60, 115, 209, 76, 72, 108, 72, 51, 35, 89, 0, 16, 70, 58, 33, 224, 61, 252, 209, 101, 108, 50, 72, 65, 37, 51, 0, 10,
+			67, 45, 226, 192, 89, 39, 55, 89, 0, 13, 68, 43, 52, 81, 76, 47, 37, 51, 51, 35, 89, 0, 18, 70, 29, 251, 81, 29, 120, 145,
+			36, 65, 48, 36, 51, 108, 47, 40, 51, 0, 28, 74, 10, 2, 145, 70, 34, 7, 192, 164, 115, 28, 108, 50, 47, 36, 51, 39, 71, 108,
+			49, 47, 36, 51, 37, 57, 108, 0, 0, 17, 70, 181, 60, 206, 30, 12, 192, 48, 36, 89, 37, 101, 108, 50, 37, 0, 16, 70, 127, 52,
+			136, 30, 12, 192, 65, 37, 88, 71, 108, 50, 37, 0, 15, 69, 88, 116, 72, 30, 0, 88, 108, 51, 36, 71, 108, 50, 0, 29, 73, 84,
+			244, 71, 121, 242, 135, 133, 236, 224, 89, 35, 72, 51, 39, 55, 65, 39, 47, 36, 35, 107, 107, 36, 55, 37, 50, 0, 16, 69, 78, 212,
+			202, 30, 0, 89, 36, 48, 36, 89, 47, 108, 50, 0, 16, 70, 42, 39, 147, 42, 44, 192, 47, 39, 55, 89, 47, 39, 57, 0, 14, 69,
+			40, 118, 202, 138, 0, 47, 108, 83, 47, 40, 50, 0, 16, 67, 32, 247, 10, 71, 36, 72, 36, 104, 17, 104, 17, 35, 47, 0, 20, 71,
+			32, 124, 32, 51, 1, 226, 204, 71, 108, 49, 39, 50, 75, 49, 108, 84, 37, 0, 21, 72, 30, 6, 226, 69, 241, 202, 207, 0, 35, 50,
+			83, 39, 51, 65, 108, 47, 37, 49, 0, 24, 73, 29, 28, 202, 70, 39, 199, 205, 60, 224, 36, 51, 37, 47, 51, 39, 65, 108, 57, 89,
+			37, 50, 0, 0, 17, 69, 137, 19, 237, 69, 48, 84, 39, 51, 72, 48, 36, 51, 36, 89, 0, 15, 69, 136, 124, 223, 193, 48, 84, 108,
+			57, 65, 35, 49, 89, 0, 11, 67, 129, 252, 0, 50, 35, 65, 35, 49, 0, 16, 69, 127, 52, 202, 69, 48, 65, 37, 89, 47, 36, 51,
+			36, 89, 0, 14, 67, 124, 211, 203, 65, 39, 107, 35, 72, 72, 36, 89, 0, 13, 67, 124, 72, 11, 65, 39, 35, 50, 50, 35, 89, 0,
+			21, 71, 112, 120, 34, 129, 243, 199, 68, 104, 17, 108, 50, 40, 50, 65, 35, 72, 108, 51, 0, 24, 72, 33, 68, 79, 137, 50, 135, 130,
+			16, 71, 35, 91, 35, 51, 72, 40, 89, 47, 108, 50, 36, 12, 0, 28, 6, 58, 117, 43, 48, 50, 57, 50, 35, 65, 108, 72, 36, 20,
+			76, 36, 107, 51, 36, 57, 36, 20, 91, 108, 72, 0, 46, 0, 15, 67, 131, 2, 178, 6, 50, 39, 49, 49, 47, 36, 57, 36, 0, 27,
+			74, 111, 50, 162, 181, 225, 243, 131, 2, 162, 128, 83, 37, 47, 39, 48, 36, 55, 108, 57, 50, 49, 47, 39, 50, 0, 14, 68, 61, 251,
+			78, 40, 72, 35, 65, 48, 39, 101, 47, 0, 18, 70, 61, 24, 160, 196, 120, 51, 72, 35, 51, 40, 50, 81, 108, 50, 37, 0, 14, 68,
+			53, 97, 224, 40, 107, 36, 88, 108, 50, 35, 47, 0, 18, 70, 33, 24, 160, 196, 120, 51, 71, 39, 51, 40, 50, 81, 108, 50, 37, 0,
+			29, 7, 58, 45, 117, 43, 48, 50, 57, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 91, 108, 72, 0, 46, 16,
+			65, 12, 6, 35, 55, 36, 83, 4, 107, 35, 65, 88, 36, 12, 0, 0, 17, 70, 180, 116, 74, 204, 168, 145, 48, 108, 51, 47, 37, 47,
+			39, 51, 0, 23, 72, 133, 244, 135, 62, 216, 15, 29, 16, 107, 35, 65, 88, 108, 72, 48, 36, 50, 72, 108, 51, 0, 26, 73, 130, 241,
+			207, 181, 20, 202, 30, 8, 64, 50, 36, 90, 108, 72, 48, 35, 51, 35, 89, 47, 108, 50, 36, 0, 13, 68, 126, 35, 34, 60, 65, 39,
+			75, 40, 12, 72, 0, 24, 73, 29, 180, 199, 71, 20, 243, 56, 168, 64, 35, 83, 89, 108, 51, 81, 39, 89, 37, 101, 47, 36, 0, 13,
+			68, 9, 248, 146, 60, 108, 65, 40, 88, 35, 72, 0, 0, 13, 67, 197, 37, 10, 81, 39, 6, 88, 35, 91, 47, 0, 15, 69, 194, 44,
+			224, 40, 160, 49, 40, 37, 50, 47, 36, 47, 0, 15, 69, 192, 177, 219, 28, 160, 49, 36, 89, 108, 83, 108, 47, 0, 14, 68, 181, 28,
+			212, 32, 48, 35, 51, 37, 91, 35, 71, 0, 17, 70, 180, 116, 74, 205, 72, 0, 48, 108, 51, 47, 37, 91, 36, 50, 0, 15, 69, 139,
+			56, 19, 128, 160, 84, 37, 50, 89, 36, 50, 47, 0, 12, 67, 130, 37, 10, 50, 36, 84, 36, 91, 47, 0, 15, 69, 127, 1, 219, 28,
+			160, 65, 39, 49, 108, 83, 108, 47, 0, 15, 68, 125, 101, 209, 32, 65, 39, 88, 47, 35, 51, 36, 71, 0, 12, 67, 125, 28, 206, 65,
+			36, 51, 51, 37, 101, 0, 17, 69, 41, 19, 223, 29, 160, 47, 35, 51, 72, 35, 65, 108, 104, 17, 0, 16, 68, 32, 247, 213, 32, 71,
+			35, 72, 65, 35, 89, 89, 35, 71, 0, 19, 70, 29, 50, 162, 30, 12, 128, 39, 89, 47, 39, 84, 108, 50, 36, 57, 36, 0, 0, 11,
+			67, 127, 12, 207, 65, 35, 49, 37, 72, 0, 11, 67, 125, 28, 207, 65, 39, 51, 37, 72, 0, 14, 69, 124, 115, 209, 204, 240, 65, 108,
+			72, 51, 37, 72, 0, 15, 69, 109, 24, 135, 68, 240, 83, 39, 51, 84, 108, 51, 72, 0, 15, 69, 50, 2, 7, 128, 240, 75, 39, 50,
+			71, 108, 50, 72, 0, 15, 69, 30, 212, 243, 122, 0, 36, 48, 89, 37, 55, 39, 50, 0, 14, 69, 28, 248, 135, 68, 240, 36, 72, 84,
+			108, 51, 72, 0, 0, 22, 72, 198, 3, 25, 123, 51, 135, 131, 48, 81, 35, 50, 75, 35, 55, 37, 101, 108, 50, 37, 0, 14, 68, 125,
+			156, 212, 40, 65, 35, 19, 37, 91, 35, 47, 0, 18, 70, 124, 129, 206, 44, 114, 128, 65, 39, 71, 108, 107, 36, 89, 108, 47, 0, 17,
+			68, 40, 134, 115, 40, 47, 35, 71, 35, 19, 37, 57, 57, 35, 47, 0, 20, 70, 40, 114, 19, 40, 120, 50, 47, 108, 71, 36, 89, 47,
+			108, 50, 36, 57, 36, 0, 15, 68, 33, 180, 83, 40, 71, 36, 83, 36, 51, 36, 89, 47, 0, 18, 69, 33, 19, 19, 43, 32, 71, 35,
+			51, 75, 35, 89, 47, 36, 57, 36, 0, 18, 70, 29, 50, 153, 30, 2, 128, 36, 89, 47, 36, 19, 108, 50, 35, 47, 0, 0, 11, 67,
+			136, 194, 0, 84, 35, 75, 35, 71, 0, 18, 69, 124, 168, 34, 173, 144, 65, 39, 47, 36, 50, 35, 84, 84, 36, 19, 0, 14, 68, 82,
+			8, 179, 60, 91, 36, 50, 35, 84, 37, 72, 0, 13, 68, 76, 161, 224, 60, 89, 36, 47, 108, 50, 72, 0, 13, 68, 63, 56, 179, 60,
+			72, 36, 57, 84, 37, 72, 0, 14, 68, 54, 33, 207, 44, 107, 35, 84, 108, 72, 36, 89, 0, 14, 68, 33, 241, 224, 60, 71, 36, 65,
+			108, 50, 35, 72, 0, 12, 67, 32, 134, 115, 71, 35, 71, 35, 19, 37, 0, 0, 11, 67, 207, 11, 71, 57, 36, 49, 48, 108, 0, 27,
+			72, 124, 163, 79, 29, 231, 209, 193, 32, 65, 39, 47, 47, 35, 107, 36, 72, 39, 55, 65, 35, 51, 49, 35, 88, 0, 16, 70, 60, 120,
+			31, 29, 28, 0, 72, 108, 50, 65, 108, 51, 49, 0, 10, 67, 49, 32, 64, 75, 39, 88, 19, 0, 15, 69, 35, 51, 206, 80, 160, 71,
+			37, 72, 101, 36, 91, 47, 0, 13, 67, 33, 149, 135, 6, 71, 35, 19, 88, 35, 50, 0, 15, 69, 30, 4, 111, 207, 0, 36, 50, 36,
+			51, 90, 37, 49, 0, 0, 13, 68, 198, 8, 147, 204, 81, 36, 50, 39, 89, 37, 0, 15, 69, 197, 23, 209, 136, 240, 81, 35, 51, 65,
+			51, 40, 72, 0, 16, 69, 183, 55, 199, 204, 240, 48, 36, 57, 65, 108, 57, 35, 72, 0, 16, 69, 181, 66, 136, 128, 240, 48, 39, 91,
+			47, 71, 35, 50, 72, 0, 19, 70, 181, 20, 202, 204, 252, 207, 48, 35, 51, 35, 89, 47, 37, 72, 37, 72, 0, 14, 69, 130, 37, 7,
+			128, 240, 50, 40, 91, 108, 50, 72, 0, 14, 69, 127, 60, 17, 138, 0, 65, 37, 49, 51, 39, 50, 0, 16, 68, 111, 1, 225, 204, 83,
+			39, 49, 108, 12, 6, 107, 37, 12, 0, 18, 70, 109, 24, 136, 29, 28, 207, 83, 39, 51, 40, 71, 108, 51, 37, 72, 0, 12, 68, 60,
+			116, 83, 204, 72, 108, 51, 89, 37, 0, 13, 68, 41, 28, 240, 136, 47, 36, 51, 37, 49, 39, 0, 25, 72, 9, 56, 148, 204, 163, 237,
+			69, 48, 108, 89, 39, 91, 36, 57, 47, 36, 72, 48, 36, 51, 36, 89, 0, 0, 12, 67, 193, 225, 192, 49, 39, 55, 55, 35, 50, 0,
+			13, 68, 192, 162, 7, 148, 49, 35, 47, 71, 35, 50, 0, 12, 68, 127, 52, 82, 28, 65, 37, 51, 88, 108, 0, 19, 68, 126, 39, 10,
+			28, 65, 39, 84, 35, 104, 17, 104, 17, 35, 47, 35, 50, 0, 13, 68, 124, 241, 226, 28, 65, 39, 72, 108, 84, 108, 0, 12, 68, 58,
+			40, 10, 28, 101, 39, 50, 47, 108, 0, 13, 68, 35, 51, 115, 28, 71, 37, 107, 35, 57, 108, 0, 14, 68, 29, 18, 148, 28, 10, 36,
+			51, 47, 36, 91, 108, 0, 0, 17, 70, 130, 37, 51, 62, 3, 192, 50, 39, 91, 37, 72, 35, 50, 72, 0, 18, 70, 61, 19, 148, 30,
+			3, 192, 72, 36, 51, 35, 101, 91, 108, 50, 72, 0, 15, 69, 33, 17, 224, 83, 48, 71, 36, 51, 108, 50, 91, 37, 0, 13, 69, 30,
+			44, 10, 30, 32, 39, 49, 47, 108, 84, 0, 0, 15, 69, 181, 18, 162, 72, 112, 48, 35, 51, 47, 39, 88, 108, 0, 17, 69, 130, 17,
+			243, 40, 112, 50, 35, 107, 108, 57, 35, 47, 35, 50, 0, 12, 67, 89, 248, 7, 88, 36, 65, 50, 35, 50, 0, 23, 72, 63, 7, 135,
+			124, 116, 243, 138, 0, 72, 36, 49, 55, 108, 65, 108, 89, 37, 57, 39, 50, 0, 16, 69, 60, 226, 145, 72, 112, 72, 39, 101, 47, 35,
+			51, 88, 108, 0, 15, 69, 42, 40, 95, 72, 112, 47, 40, 107, 35, 65, 88, 108, 0, 13, 67, 41, 248, 7, 47, 35, 65, 35, 50, 50,
+			108, 0, 12, 67, 32, 248, 135, 71, 35, 72, 84, 35, 50, 0, 16, 70, 31, 4, 243, 60, 120, 0, 39, 49, 89, 37, 72, 108, 50, 0,
+			11, 67, 29, 248, 7, 39, 65, 35, 50, 108, 0, 10, 67, 29, 37, 0, 35, 88, 35, 91, 0, 10, 67, 28, 136, 135, 36, 71, 40, 108,
+			0, 0, 14, 68, 197, 178, 177, 136, 81, 39, 83, 47, 39, 81, 40, 0, 19, 70, 181, 24, 135, 68, 136, 15, 48, 35, 51, 84, 108, 51,
+			71, 35, 50, 72, 0, 13, 68, 135, 49, 225, 136, 107, 35, 57, 108, 107, 40, 0, 14, 68, 126, 4, 162, 204, 65, 39, 50, 88, 35, 84,
+			37, 0, 21, 71, 61, 248, 177, 68, 118, 243, 192, 72, 36, 65, 39, 81, 36, 51, 108, 83, 37, 49, 0, 14, 68, 33, 50, 160, 204, 71,
+			35, 89, 47, 35, 50, 37, 0, 22, 72, 33, 17, 207, 68, 232, 135, 128, 240, 71, 35, 51, 108, 72, 35, 51, 101, 108, 50, 72, 0, 18,
+			70, 29, 225, 200, 56, 172, 192, 35, 55, 55, 108, 71, 35, 101, 47, 37, 0, 0, 14, 68, 206, 35, 96, 28, 57, 40, 107, 35, 50, 50,
+			108, 0, 15, 68, 205, 204, 224, 28, 57, 35, 104, 17, 37, 50, 35, 50, 0, 11, 67, 126, 36, 223, 65, 40, 89, 36, 65, 0, 11, 67,
+			125, 97, 219, 65, 39, 88, 108, 83, 0, 14, 67, 124, 196, 223, 65, 39, 75, 35, 89, 89, 35, 65, 0, 12, 67, 112, 116, 223, 104, 17,
+			108, 89, 36, 65, 0, 12, 67, 85, 17, 219, 89, 35, 51, 51, 108, 83, 0, 22, 72, 76, 120, 10, 71, 54, 243, 138, 240, 89, 108, 50,
+			47, 51, 37, 83, 37, 57, 40, 90, 0, 14, 68, 44, 120, 51, 28, 89, 108, 50, 37, 57, 35, 50, 0, 13, 68, 42, 33, 224, 28, 47,
+			35, 84, 108, 50, 108, 0, 14, 68, 41, 250, 224, 28, 47, 35, 65, 35, 50, 50, 108, 0, 17, 70, 30, 40, 34, 112, 161, 192, 40, 50,
+			84, 35, 104, 17, 47, 108, 0, 11, 67, 30, 3, 31, 35, 50, 75, 39, 65, 0, 18, 70, 29, 50, 145, 77, 33, 192, 36, 89, 47, 36,
+			51, 36, 89, 88, 108, 0, 11, 67, 29, 28, 240, 36, 6, 51, 37, 49, 0, 0, 12, 67, 194, 4, 222, 49, 35, 50, 89, 36, 55, 0,
+			16, 69, 182, 212, 98, 131, 48, 48, 36, 48, 36, 51, 39, 50, 37, 0, 12, 67, 181, 76, 94, 48, 36, 91, 81, 36, 55, 0, 11, 67,
+			129, 40, 158, 50, 39, 88, 40, 55, 0, 13, 67, 114, 4, 222, 104, 17, 39, 50, 89, 39, 55, 0, 15, 69, 109, 24, 159, 31, 48, 83,
+			39, 51, 40, 65, 108, 57, 0, 9, 66, 97, 224, 88, 36, 55, 55, 0, 11, 67, 76, 104, 158, 89, 36, 19, 40, 55, 0, 14, 69, 63,
+			56, 142, 139, 48, 72, 37, 84, 101, 40, 57, 0, 12, 67, 61, 242, 30, 72, 35, 65, 71, 36, 55, 0, 11, 67, 41, 28, 204, 47, 37,
+			51, 37, 75, 0, 22, 71, 33, 17, 200, 70, 8, 71, 60, 71, 35, 51, 108, 71, 35, 51, 50, 35, 107, 108, 72, 0, 16, 69, 32, 132,
+			97, 31, 48, 71, 35, 71, 51, 107, 108, 57, 36, 0, 13, 65, 144, 6, 57, 36, 10, 35, 51, 35, 71, 37, 0, 0, 16, 67, 193, 236,
+			225, 49, 39, 55, 55, 37, 57, 36, 57, 36, 12, 0, 15, 69, 192, 119, 209, 136, 112, 49, 108, 65, 51, 35, 84, 108, 0, 18, 70, 135,
+			52, 202, 137, 28, 199, 107, 37, 89, 47, 39, 51, 37, 57, 108, 0, 13, 67, 131, 4, 97, 50, 35, 49, 35, 51, 36, 12, 0, 12, 67,
+			130, 34, 33, 50, 39, 12, 71, 36, 12, 0, 11, 67, 129, 248, 143, 50, 36, 65, 40, 72, 0, 17, 69, 128, 172, 204, 40, 112, 50, 35,
+			47, 37, 75, 35, 47, 35, 50, 0, 11, 67, 126, 43, 225, 65, 39, 90, 36, 12, 0, 19, 69, 125, 119, 198, 128, 112, 65, 39, 47, 65,
+			35, 19, 36, 50, 50, 35, 50, 0, 12, 67, 125, 21, 15, 65, 39, 51, 91, 36, 72, 0, 16, 68, 113, 71, 212, 124, 104, 17, 35, 91,
+			35, 65, 91, 35, 65, 0, 12, 67, 101, 236, 225, 35, 55, 35, 57, 107, 36, 0, 11, 67, 78, 220, 207, 89, 36, 48, 37, 72, 0, 12,
+			67, 78, 2, 33, 89, 39, 50, 71, 36, 12, 0, 15, 67, 69, 204, 225, 51, 39, 104, 17, 35, 57, 57, 36, 12, 0, 13, 67, 41, 204,
+			225, 47, 35, 104, 17, 37, 57, 36, 0, 14, 68, 41, 17, 240, 124, 47, 35, 51, 108, 49, 39, 65, 0, 16, 69, 40, 231, 243, 128, 112,
+			47, 35, 101, 65, 37, 50, 35, 50, 0, 16, 69, 33, 24, 136, 204, 112, 71, 39, 51, 39, 71, 37, 57, 108, 0, 10, 67, 29, 54, 192,
+			35, 89, 35, 83, 0, 16, 69, 29, 50, 147, 112, 112, 36, 89, 47, 36, 89, 104, 17, 108, 0, 11, 67, 29, 21, 15, 35, 51, 91, 35,
+			72, 0, 16, 70, 11, 17, 223, 130, 40, 0, 108, 81, 108, 65, 50, 40, 50, 0, 12, 68, 9, 226, 34, 124, 108, 55, 71, 39, 65, 0,
+			9, 66, 186, 16, 76, 36, 12, 0, 76, 0, 15, 69, 132, 124, 202, 138, 0, 107, 108, 57, 36, 47, 40, 50, 0, 16, 70, 132, 116, 95,
+			138, 12, 192, 107, 108, 51, 65, 39, 50, 37, 0, 12, 67, 130, 44, 224, 50, 39, 6, 84, 37, 50, 0, 20, 71, 127, 50, 162, 194, 3,
+			209, 204, 65, 37, 47, 39, 49, 39, 50, 72, 51, 37, 0, 11, 67, 124, 140, 224, 65, 39, 71, 37, 50, 0, 14, 68, 124, 115, 85, 120,
+			65, 108, 107, 35, 89, 35, 55, 0, 13, 67, 110, 3, 220, 83, 35, 50, 72, 39, 104, 17, 0, 10, 67, 101, 247, 128, 35, 65, 35, 55,
+			0, 12, 67, 82, 12, 96, 91, 36, 50, 81, 36, 50, 0, 14, 67, 41, 66, 138, 47, 35, 91, 35, 47, 47, 39, 47, 0, 12, 67, 33,
+			232, 154, 71, 39, 55, 40, 104, 17, 0, 11, 67, 31, 5, 32, 35, 49, 91, 36, 50, 0, 10, 67, 29, 40, 0, 39, 88, 39, 50, 0,
+			0, 13, 68, 197, 241, 212, 60, 81, 39, 65, 108, 91, 72, 0, 11, 67, 193, 76, 240, 49, 36, 91, 37, 49, 0, 13, 68, 133, 28, 211,
+			132, 107, 36, 51, 37, 89, 36, 0, 15, 68, 120, 193, 209, 132, 55, 35, 75, 75, 108, 51, 36, 12, 0, 18, 70, 92, 120, 81, 131, 49,
+			192, 47, 108, 107, 36, 51, 50, 37, 57, 108, 0, 11, 67, 84, 136, 141, 89, 35, 71, 40, 107, 0, 15, 69, 81, 148, 72, 29, 176, 91,
+			36, 19, 51, 71, 108, 83, 0, 12, 67, 77, 21, 48, 89, 36, 51, 36, 91, 49, 0, 12, 67, 73, 21, 48, 88, 36, 51, 36, 91, 49,
+			0, 11, 67, 61, 17, 223, 72, 36, 51, 108, 65, 0, 17, 70, 58, 35, 199, 121, 193, 192, 101, 39, 72, 36, 55, 104, 17, 108, 0, 10,
+			67, 57, 227, 192, 101, 39, 55, 72, 0, 10, 67, 49, 227, 192, 75, 36, 55, 72, 0, 18, 70, 49, 150, 209, 131, 49, 192, 75, 35, 83,
+			35, 51, 50, 37, 57, 108, 0, 12, 68, 42, 35, 115, 60, 47, 39, 107, 37, 72, 0, 13, 68, 41, 236, 211, 132, 47, 35, 55, 37, 89,
+			36, 0, 15, 68, 41, 66, 51, 132, 47, 35, 91, 6, 71, 37, 12, 107, 0, 17, 70, 40, 115, 17, 131, 49, 192, 47, 108, 75, 36, 51,
+			50, 37, 57, 0, 10, 67, 34, 3, 0, 71, 39, 50, 75, 0, 17, 69, 33, 28, 222, 205, 240, 71, 36, 51, 37, 55, 37, 57, 39, 65,
+			0, 11, 67, 33, 17, 223, 71, 35, 51, 108, 65, 0, 17, 70, 30, 39, 159, 183, 49, 192, 39, 55, 35, 65, 48, 37, 57, 108, 0, 10,
+			67, 30, 35, 0, 6, 39, 12, 75, 0, 0, 12, 68, 206, 40, 51, 40, 57, 40, 50, 37, 47, 0, 13, 68, 196, 116, 83, 128, 81, 108,
+			51, 89, 39, 50, 0, 12, 67, 193, 252, 222, 49, 39, 65, 36, 57, 55, 0, 13, 68, 192, 114, 20, 128, 49, 108, 71, 91, 36, 50, 0,
+			18, 70, 182, 36, 91, 29, 119, 243, 48, 40, 51, 83, 108, 47, 36, 65, 37, 0, 11, 67, 180, 241, 222, 48, 36, 72, 108, 55, 0, 14,
+			69, 127, 56, 17, 136, 128, 65, 37, 50, 51, 40, 71, 0, 15, 68, 126, 33, 219, 112, 65, 39, 84, 108, 83, 36, 104, 17, 0, 14, 67,
+			126, 28, 204, 65, 39, 107, 35, 57, 57, 36, 75, 0, 15, 68, 126, 1, 219, 112, 65, 39, 50, 108, 83, 36, 104, 17, 0, 11, 67, 124,
+			241, 222, 65, 36, 72, 108, 55, 0, 12, 67, 121, 2, 128, 55, 36, 88, 88, 35, 47, 0, 13, 67, 109, 145, 222, 83, 35, 12, 19, 10,
+			108, 55, 0, 10, 67, 78, 33, 222, 89, 39, 108, 55, 0, 14, 68, 77, 17, 243, 40, 89, 36, 51, 108, 57, 35, 47, 0, 11, 67, 70,
+			33, 222, 51, 36, 84, 108, 55, 0, 14, 68, 69, 145, 243, 40, 51, 35, 19, 108, 57, 35, 47, 0, 11, 67, 68, 193, 222, 51, 36, 75,
+			108, 55, 0, 14, 68, 61, 17, 243, 40, 72, 36, 51, 108, 57, 35, 47, 0, 15, 68, 42, 33, 219, 112, 47, 35, 84, 108, 83, 39, 104,
+			17, 0, 14, 67, 41, 248, 140, 47, 35, 65, 35, 84, 84, 39, 75, 0, 18, 70, 41, 23, 226, 79, 11, 64, 47, 36, 51, 65, 39, 89,
+			49, 39, 48, 0, 13, 68, 32, 119, 176, 128, 71, 108, 55, 49, 39, 50, 0, 14, 68, 32, 117, 30, 112, 71, 108, 91, 55, 39, 104, 17,
+			0, 13, 68, 29, 50, 162, 128, 35, 89, 36, 47, 39, 50, 0, 13, 68, 29, 22, 199, 112, 36, 51, 83, 108, 104, 17, 0, 12, 68, 10,
+			28, 206, 40, 108, 107, 37, 101, 47, 0, 12, 68, 9, 50, 179, 128, 108, 89, 47, 37, 50, 0, 0, 12, 67, 205, 196, 64, 57, 39, 104,
+			17, 39, 51, 0, 14, 68, 198, 3, 20, 192, 81, 39, 50, 75, 36, 91, 49, 0, 12, 67, 198, 1, 225, 81, 39, 50, 108, 12, 107, 0,
+			19, 70, 193, 252, 211, 29, 28, 199, 49, 39, 65, 37, 89, 108, 51, 37, 57, 108, 0, 14, 69, 136, 119, 158, 174, 16, 84, 35, 55, 55,
+			108, 107, 0, 12, 67, 133, 232, 15, 107, 39, 55, 35, 50, 72, 0, 15, 69, 128, 119, 219, 204, 240, 50, 108, 65, 39, 83, 37, 72, 0,
+			17, 69, 124, 129, 243, 102, 16, 65, 39, 71, 108, 57, 36, 19, 36, 12, 0, 12, 67, 122, 2, 33, 55, 39, 65, 71, 36, 12, 0, 12,
+			67, 109, 24, 49, 83, 35, 51, 35, 50, 81, 0, 11, 67, 101, 72, 161, 36, 91, 84, 36, 12, 0, 12, 67, 100, 199, 161, 35, 75, 35,
+			55, 36, 12, 0, 19, 70, 84, 244, 71, 101, 135, 192, 89, 35, 72, 51, 36, 35, 19, 88, 35, 65, 0, 12, 67, 77, 24, 49, 89, 39,
+			51, 35, 50, 81, 0, 12, 67, 73, 24, 49, 88, 36, 51, 35, 50, 81, 0, 17, 70, 69, 241, 202, 205, 55, 192, 51, 39, 65, 108, 47,
+			37, 89, 65, 0, 12, 67, 69, 72, 161, 51, 36, 91, 84, 36, 107, 0, 12, 67, 62, 2, 33, 72, 39, 50, 71, 36, 12, 0, 12, 67,
+			61, 24, 49, 72, 36, 51, 35, 50, 81, 0, 11, 67, 43, 12, 207, 47, 35, 49, 37, 72, 0, 12, 67, 41, 151, 225, 47, 39, 19, 65,
+			36, 12, 0, 11, 67, 41, 28, 207, 47, 37, 51, 37, 72, 0, 14, 68, 34, 37, 162, 52, 71, 36, 84, 39, 88, 40, 107, 0, 18, 70,
+			33, 229, 34, 205, 55, 192, 71, 39, 55, 91, 39, 84, 37, 89, 65, 0, 14, 67, 33, 204, 225, 71, 35, 104, 17, 37, 57, 36, 12, 0,
+			17, 69, 33, 72, 34, 204, 240, 71, 36, 91, 36, 50, 35, 84, 37, 72, 0, 15, 69, 33, 49, 226, 204, 240, 71, 35, 89, 108, 84, 37,
+			72, 0, 11, 67, 33, 28, 207, 71, 39, 51, 37, 72, 0, 12, 68, 29, 232, 71, 124, 36, 55, 107, 108, 65, 0, 12, 67, 28, 199, 161,
+			35, 75, 36, 55, 55, 36, 0, 0, 11, 67, 188, 168, 160, 90, 36, 47, 39, 50, 0, 10, 67, 185, 232, 128, 76, 36, 55, 39, 0, 14,
+			68, 185, 22, 162, 120, 76, 35, 51, 104, 17, 40, 55, 0, 10, 67, 181, 232, 128, 48, 39, 55, 39, 0, 16, 69, 181, 19, 199, 56, 160,
+			48, 35, 51, 6, 72, 108, 101, 47, 0, 11, 67, 133, 232, 0, 107, 36, 55, 36, 50, 0, 14, 68, 133, 225, 225, 120, 107, 35, 55, 108,
+			107, 36, 55, 0, 15, 67, 126, 36, 220, 65, 39, 84, 35, 89, 89, 35, 104, 17, 0, 14, 67, 125, 180, 92, 65, 36, 83, 6, 51, 35,
+			104, 17, 0, 16, 68, 125, 50, 143, 120, 65, 39, 89, 47, 35, 72, 35, 55, 55, 0, 11, 67, 124, 168, 160, 65, 39, 47, 40, 50, 0,
+			12, 67, 122, 3, 224, 55, 35, 50, 72, 35, 50, 0, 16, 69, 121, 252, 224, 204, 160, 55, 35, 65, 37, 50, 36, 57, 47, 0, 18, 69,
+			113, 235, 159, 29, 192, 104, 17, 39, 55, 76, 39, 65, 108, 104, 17, 0, 11, 67, 113, 232, 128, 104, 17, 39, 55, 40, 0, 12, 67, 109,
+			21, 10, 83, 36, 51, 36, 91, 47, 0, 11, 67, 83, 56, 160, 91, 37, 84, 35, 50, 0, 14, 68, 79, 55, 200, 120, 6, 89, 37, 65,
+			71, 39, 55, 0, 14, 68, 78, 12, 71, 120, 89, 36, 50, 36, 81, 108, 55, 0, 11, 67, 76, 124, 32, 89, 108, 49, 36, 50, 0, 11,
+			67, 68, 124, 32, 51, 108, 49, 39, 50, 0, 12, 67, 62, 21, 10, 72, 36, 107, 91, 35, 47, 0, 16, 69, 61, 50, 173, 56, 160, 72,
+			35, 89, 47, 48, 39, 101, 47, 0, 12, 67, 61, 21, 10, 72, 39, 51, 39, 91, 47, 0, 13, 67, 53, 28, 202, 107, 39, 51, 37, 57,
+			35, 47, 0, 11, 67, 32, 241, 224, 71, 36, 72, 108, 50, 0, 17, 70, 31, 52, 162, 41, 24, 173, 37, 88, 39, 47, 36, 51, 39, 48,
+			0, 14, 69, 29, 180, 98, 56, 160, 35, 83, 51, 40, 101, 47, 0, 16, 69, 11, 1, 209, 62, 0, 108, 49, 108, 51, 72, 36, 39, 50,
+			0, 0, 13, 68, 185, 225, 224, 60, 76, 36, 55, 108, 50, 72, 0, 13, 68, 185, 33, 224, 60, 76, 36, 88, 108, 50, 72, 0, 17, 69,
+			182, 3, 7, 133, 240, 6, 48, 35, 50, 75, 108, 107, 39, 65, 0, 13, 67, 181, 236, 209, 48, 36, 55, 36, 57, 36, 51, 0, 17, 70,
+			134, 3, 226, 207, 52, 223, 107, 36, 50, 72, 39, 37, 89, 65, 0, 17, 69, 133, 66, 135, 61, 240, 6, 107, 35, 91, 47, 108, 72, 39,
+			65, 0, 19, 70, 129, 252, 212, 138, 3, 192, 50, 36, 65, 37, 91, 35, 84, 35, 50, 72, 0, 16, 69, 129, 19, 200, 29, 240, 50, 35,
+			51, 72, 36, 71, 108, 65, 0, 14, 67, 125, 156, 209, 65, 39, 19, 35, 57, 57, 36, 51, 0, 14, 67, 125, 88, 145, 65, 39, 89, 35,
+			84, 84, 35, 51, 0, 15, 68, 125, 50, 160, 60, 65, 39, 89, 47, 35, 50, 35, 72, 0, 17, 70, 124, 116, 162, 59, 52, 223, 65, 108,
+			88, 39, 101, 37, 89, 65, 0, 17, 70, 124, 116, 112, 79, 52, 223, 65, 108, 51, 49, 89, 37, 89, 65, 0, 15, 68, 93, 17, 207, 132,
+			47, 35, 51, 51, 108, 72, 36, 12, 0, 14, 68, 83, 7, 200, 132, 91, 36, 49, 35, 65, 71, 36, 0, 15, 68, 73, 244, 159, 132, 88,
+			36, 65, 88, 36, 65, 36, 12, 0, 18, 70, 63, 23, 199, 43, 52, 223, 72, 39, 81, 65, 108, 47, 37, 89, 65, 0, 16, 70, 43, 52,
+			98, 207, 51, 192, 47, 37, 51, 39, 37, 12, 72, 0, 13, 68, 42, 44, 98, 60, 47, 40, 81, 39, 12, 72, 0, 15, 69, 41, 227, 176,
+			29, 240, 47, 35, 49, 101, 49, 108, 65, 0, 12, 68, 35, 56, 51, 60, 71, 37, 50, 37, 72, 0, 16, 69, 35, 56, 12, 29, 240, 71,
+			37, 57, 35, 50, 75, 108, 65, 0, 12, 67, 33, 120, 145, 71, 36, 47, 39, 51, 36, 0, 15, 68, 33, 72, 160, 60, 71, 36, 91, 35,
+			84, 35, 50, 72, 0, 13, 68, 33, 24, 155, 132, 71, 39, 51, 40, 83, 36, 0, 15, 69, 32, 116, 89, 29, 240, 71, 108, 51, 36, 19,
+			108, 65, 0, 16, 70, 30, 39, 199, 131, 52, 223, 40, 65, 108, 50, 37, 89, 65, 0, 13, 68, 29, 17, 207, 132, 36, 51, 108, 72, 36,
+			12, 0, 15, 69, 28, 170, 225, 29, 240, 36, 47, 47, 36, 107, 108, 65, 0, 0, 14, 68, 204, 116, 223, 128, 57, 108, 89, 35, 65, 35,
+			50, 0, 13, 68, 198, 3, 7, 128, 81, 39, 50, 75, 108, 50, 0, 13, 68, 197, 227, 199, 128, 81, 39, 55, 72, 108, 50, 0, 14, 68,
+			197, 1, 212, 40, 6, 81, 39, 88, 108, 91, 47, 0, 14, 68, 193, 251, 115, 128, 49, 35, 65, 48, 36, 57, 50, 0, 12, 67, 193, 40,
+			162, 49, 39, 88, 39, 84, 39, 0, 14, 68, 193, 19, 243, 40, 49, 36, 51, 36, 72, 37, 47, 0, 14, 68, 192, 132, 115, 40, 6, 49,
+			36, 71, 51, 37, 47, 0, 7, 66, 186, 32, 76, 39, 0, 12, 67, 137, 20, 148, 84, 35, 51, 88, 36, 91, 0, 13, 68, 134, 36, 95,
+			128, 107, 39, 51, 65, 39, 50, 0, 15, 69, 133, 248, 155, 205, 224, 107, 36, 65, 39, 83, 37, 55, 0, 13, 68, 130, 36, 95, 128, 50,
+			39, 51, 65, 35, 50, 0, 12, 68, 127, 55, 135, 128, 65, 37, 55, 108, 50, 0, 13, 68, 127, 51, 199, 128, 65, 36, 57, 72, 108, 50,
+			0, 17, 70, 127, 17, 200, 31, 50, 128, 65, 36, 81, 108, 71, 108, 57, 47, 0, 13, 68, 126, 252, 71, 128, 65, 39, 90, 81, 108, 50,
+			0, 14, 67, 125, 72, 148, 65, 39, 91, 35, 84, 84, 35, 91, 0, 16, 69, 125, 66, 159, 29, 224, 65, 39, 91, 47, 39, 65, 108, 55,
+			0, 12, 67, 124, 172, 226, 65, 35, 47, 37, 57, 39, 0, 13, 67, 124, 172, 51, 65, 39, 47, 47, 35, 49, 37, 0, 10, 67, 124, 124,
+			226, 65, 108, 57, 39, 0, 13, 68, 122, 12, 71, 128, 55, 35, 50, 81, 108, 50, 0, 12, 67, 121, 20, 148, 55, 35, 51, 88, 36, 91,
+			0, 15, 68, 113, 97, 226, 40, 104, 17, 36, 88, 108, 84, 35, 47, 0, 13, 68, 110, 3, 34, 128, 83, 36, 50, 75, 40, 50, 0, 14,
+			68, 109, 195, 199, 128, 83, 36, 104, 17, 72, 108, 50, 0, 13, 68, 109, 23, 199, 128, 83, 35, 51, 65, 108, 50, 0, 24, 72, 108, 168,
+			135, 123, 2, 145, 207, 0, 83, 39, 47, 39, 36, 55, 36, 49, 47, 36, 51, 37, 49, 0, 12, 67, 80, 252, 115, 91, 39, 72, 36, 81,
+			37, 0, 14, 69, 79, 60, 96, 29, 224, 89, 37, 81, 50, 108, 55, 0, 14, 68, 77, 232, 155, 128, 89, 36, 55, 39, 83, 39, 50, 0,
+			16, 69, 77, 228, 200, 205, 224, 89, 35, 55, 89, 35, 71, 37, 55, 0, 18, 69, 76, 161, 207, 193, 224, 89, 36, 47, 108, 72, 36, 49,
+			39, 55, 55, 0, 17, 70, 76, 119, 211, 138, 2, 128, 89, 108, 65, 89, 39, 50, 36, 47, 0, 14, 68, 74, 3, 199, 128, 88, 36, 50,
+			6, 72, 108, 50, 0, 12, 67, 72, 252, 115, 88, 35, 72, 36, 81, 37, 0, 13, 68, 71, 51, 71, 128, 51, 36, 57, 107, 108, 50, 0,
+			12, 68, 70, 35, 71, 128, 51, 39, 107, 108, 50, 0, 14, 68, 62, 23, 7, 128, 72, 36, 107, 104, 17, 108, 50, 0, 11, 67, 57, 248,
+			148, 101, 35, 65, 40, 91, 0, 13, 68, 57, 87, 199, 128, 101, 35, 89, 65, 108, 50, 0, 19, 70, 51, 20, 78, 68, 117, 0, 75, 36,
+			81, 35, 51, 101, 35, 51, 108, 91, 0, 11, 67, 42, 44, 212, 47, 40, 57, 35, 91, 0, 17, 70, 41, 17, 224, 75, 50, 128, 47, 36,
+			51, 108, 50, 88, 37, 47, 0, 15, 68, 33, 225, 207, 128, 71, 36, 55, 55, 108, 72, 39, 50, 0, 19, 70, 33, 50, 177, 30, 5, 0,
+			71, 35, 89, 47, 36, 81, 108, 50, 35, 91, 0, 15, 68, 33, 24, 71, 128, 71, 39, 12, 51, 6, 107, 108, 50, 0, 10, 67, 10, 44,
+			212, 108, 84, 37, 91, 0, 15, 68, 9, 244, 115, 40, 108, 65, 36, 51, 37, 57, 35, 47, 0, 12, 68, 9, 23, 243, 128, 108, 51, 65,
+			37, 50, 0, 12, 68, 9, 23, 199, 128, 108, 51, 65, 108, 50, 0, 0, 18, 70, 206, 36, 145, 131, 55, 192, 57, 40, 88, 36, 51, 50,
+			36, 57, 65, 0, 17, 70, 197, 33, 224, 43, 56, 0, 81, 36, 88, 108, 50, 47, 37, 50, 0, 11, 67, 190, 8, 147, 90, 36, 50, 40,
+			89, 0, 13, 68, 185, 51, 162, 68, 76, 39, 89, 101, 39, 51, 0, 19, 71, 135, 59, 96, 136, 172, 211, 124, 107, 37, 48, 50, 39, 47,
+			37, 89, 65, 0, 11, 67, 133, 245, 0, 107, 35, 65, 35, 91, 0, 20, 70, 129, 241, 210, 49, 246, 97, 50, 35, 65, 108, 88, 75, 39,
+			65, 19, 36, 12, 0, 15, 69, 127, 55, 199, 128, 240, 65, 37, 65, 108, 50, 35, 72, 0, 11, 67, 126, 8, 151, 65, 35, 50, 40, 47,
+			0, 17, 69, 125, 76, 223, 206, 16, 65, 35, 91, 37, 65, 37, 57, 36, 12, 0, 17, 68, 124, 161, 206, 68, 65, 39, 47, 36, 19, 35,
+			101, 101, 36, 51, 0, 16, 69, 77, 242, 7, 62, 16, 89, 39, 65, 71, 108, 72, 36, 12, 0, 18, 70, 75, 55, 200, 28, 136, 161, 88,
+			37, 65, 71, 108, 71, 84, 36, 12, 0, 16, 70, 75, 52, 202, 34, 39, 192, 88, 37, 89, 47, 71, 40, 65, 0, 13, 68, 68, 124, 202,
+			68, 51, 108, 57, 47, 36, 51, 0, 22, 72, 57, 21, 226, 124, 241, 209, 30, 0, 101, 39, 51, 47, 40, 65, 72, 108, 51, 108, 50, 0,
+			13, 68, 35, 4, 226, 68, 71, 39, 49, 89, 39, 51, 0, 15, 69, 32, 251, 115, 122, 16, 71, 35, 72, 48, 37, 55, 36, 0, 15, 69,
+			32, 229, 34, 62, 16, 71, 35, 101, 91, 40, 72, 36, 0, 15, 69, 32, 124, 96, 30, 16, 71, 108, 81, 39, 50, 108, 107, 0, 15, 69,
+			32, 116, 72, 128, 240, 71, 108, 51, 71, 35, 50, 72, 0, 16, 70, 31, 52, 94, 31, 56, 0, 36, 57, 51, 55, 108, 57, 50, 0, 13,
+			69, 30, 39, 135, 128, 240, 39, 55, 108, 50, 72, 0, 0, 11, 67, 197, 28, 210, 81, 39, 51, 37, 88, 0, 12, 68, 184, 120, 162, 80,
+			76, 108, 84, 39, 91, 0, 10, 67, 180, 116, 110, 48, 108, 51, 76, 0, 15, 69, 134, 209, 202, 204, 160, 107, 36, 48, 108, 47, 37, 47,
+			0, 10, 67, 132, 200, 128, 107, 35, 75, 84, 0, 20, 70, 125, 56, 15, 197, 44, 224, 65, 35, 89, 50, 35, 72, 81, 39, 88, 37, 50,
+			0, 13, 68, 124, 129, 225, 204, 65, 39, 71, 108, 107, 37, 0, 15, 69, 120, 124, 45, 80, 160, 55, 108, 49, 48, 39, 91, 47, 0, 18,
+			70, 83, 52, 72, 70, 3, 0, 91, 37, 51, 71, 36, 51, 36, 50, 75, 0, 13, 68, 76, 140, 222, 136, 89, 36, 71, 37, 55, 40, 0,
+			13, 68, 62, 36, 202, 80, 72, 40, 89, 47, 35, 91, 0, 15, 68, 61, 19, 148, 80, 72, 36, 51, 35, 101, 91, 36, 91, 0, 15, 69,
+			56, 116, 109, 80, 160, 101, 108, 51, 48, 39, 91, 47, 0, 15, 68, 49, 50, 140, 136, 75, 39, 89, 47, 39, 75, 40, 12, 0, 14, 68,
+			33, 20, 83, 204, 71, 35, 51, 51, 35, 89, 37, 0, 18, 70, 33, 17, 224, 60, 115, 138, 71, 35, 51, 35, 50, 72, 108, 101, 47, 0,
+			14, 69, 30, 12, 71, 80, 160, 36, 50, 81, 108, 91, 47, 0, 12, 68, 30, 3, 243, 80, 35, 50, 72, 37, 91, 0, 29, 74, 29, 236,
+			10, 70, 39, 240, 30, 12, 240, 204, 36, 55, 36, 49, 47, 36, 51, 39, 65, 36, 49, 108, 50, 37, 49, 37, 0, 14, 69, 28, 136, 160,
+			204, 160, 35, 71, 39, 50, 37, 47, 0, 17, 69, 9, 4, 72, 69, 192, 108, 88, 35, 51, 71, 35, 51, 104, 17, 0, 0, 18, 70, 181,
+			248, 155, 138, 12, 240, 107, 39, 65, 39, 83, 39, 50, 37, 49, 0, 12, 67, 137, 226, 145, 84, 39, 55, 47, 36, 51, 0, 17, 70, 127,
+			52, 82, 28, 248, 64, 65, 37, 51, 88, 108, 72, 36, 12, 0, 17, 69, 126, 11, 147, 41, 16, 65, 35, 50, 76, 36, 89, 47, 36, 51,
+			0, 15, 68, 125, 193, 243, 76, 65, 39, 104, 17, 108, 57, 36, 89, 0, 16, 69, 125, 50, 160, 205, 16, 65, 39, 89, 47, 35, 50, 37,
+			51, 0, 14, 67, 124, 236, 209, 65, 39, 101, 35, 57, 57, 35, 51, 0, 11, 67, 95, 56, 145, 47, 39, 57, 40, 51, 0, 11, 67, 84,
+			136, 145, 89, 35, 71, 40, 51, 0, 16, 69, 77, 236, 10, 137, 16, 89, 36, 55, 36, 49, 47, 39, 51, 0, 11, 67, 72, 136, 145, 88,
+			35, 71, 40, 51, 0, 13, 68, 41, 183, 179, 76, 47, 36, 83, 55, 37, 89, 0, 18, 70, 34, 17, 209, 34, 3, 192, 71, 35, 107, 108,
+			51, 71, 35, 50, 72, 0, 18, 70, 34, 5, 51, 131, 51, 192, 71, 36, 50, 36, 91, 37, 50, 37, 72, 0, 10, 67, 33, 19, 0, 71,
+			39, 51, 75, 0, 14, 68, 32, 243, 32, 76, 71, 35, 72, 75, 36, 50, 89, 0, 16, 70, 31, 4, 199, 79, 51, 192, 39, 49, 89, 108,
+			89, 37, 72, 0, 19, 72, 29, 59, 71, 129, 52, 78, 93, 240, 36, 89, 48, 108, 50, 89, 36, 51, 0, 18, 70, 29, 50, 145, 34, 3,
+			192, 36, 89, 47, 35, 51, 71, 35, 50, 72, 0, 19, 71, 9, 252, 224, 136, 116, 243, 60, 108, 65, 37, 50, 39, 35, 89, 37, 72, 0,
+			19, 70, 9, 244, 202, 68, 241, 223, 108, 65, 36, 89, 47, 36, 51, 72, 108, 65, 0, 0, 10, 67, 206, 44, 226, 57, 39, 57, 39, 0,
+			11, 67, 193, 76, 212, 49, 36, 91, 37, 91, 0, 12, 67, 192, 120, 148, 6, 49, 108, 84, 39, 91, 0, 14, 68, 181, 188, 226, 72, 48,
+			39, 83, 37, 57, 40, 88, 0, 12, 67, 137, 21, 34, 84, 35, 51, 91, 39, 12, 0, 14, 68, 133, 247, 179, 72, 107, 36, 65, 39, 55,
+			37, 88, 0, 15, 69, 131, 17, 202, 206, 32, 50, 36, 81, 108, 47, 37, 84, 0, 12, 67, 77, 156, 212, 89, 35, 19, 57, 35, 91, 0,
+			10, 67, 71, 53, 34, 51, 37, 91, 40, 0, 15, 69, 61, 50, 142, 137, 64, 72, 35, 89, 47, 101, 39, 91, 0, 9, 67, 58, 44, 212,
+			101, 37, 91, 0, 14, 68, 41, 241, 243, 72, 47, 35, 65, 108, 57, 39, 88, 0, 0, 13, 68, 194, 2, 162, 68, 49, 39, 50, 47, 39,
+			51, 0, 18, 70, 133, 23, 210, 196, 120, 0, 107, 39, 51, 65, 39, 88, 81, 108, 50, 0, 12, 68, 126, 34, 162, 68, 65, 39, 47, 39,
+			51, 0, 18, 70, 126, 17, 204, 124, 120, 0, 65, 39, 107, 108, 75, 36, 65, 108, 50, 0, 11, 67, 125, 232, 147, 65, 35, 55, 40, 89,
+			0, 14, 68, 125, 145, 212, 68, 65, 39, 19, 108, 91, 36, 51, 0, 14, 68, 120, 118, 179, 68, 55, 108, 104, 17, 36, 57, 51, 0, 13,
+			67, 113, 60, 211, 104, 17, 36, 89, 89, 37, 89, 0, 15, 68, 110, 1, 226, 68, 83, 35, 50, 50, 108, 84, 35, 51, 0, 10, 67, 75,
+			56, 147, 88, 36, 40, 89, 0, 12, 68, 70, 34, 162, 68, 51, 39, 47, 39, 51, 0, 15, 68, 70, 28, 80, 68, 51, 35, 107, 81, 39,
+			88, 35, 51, 0, 14, 68, 61, 225, 226, 68, 72, 36, 55, 108, 84, 35, 51, 0, 13, 68, 61, 50, 162, 68, 72, 35, 89, 47, 40, 51,
+			0, 15, 69, 35, 52, 179, 129, 48, 71, 37, 88, 37, 50, 36, 89, 0, 14, 68, 35, 49, 226, 68, 71, 37, 57, 108, 84, 35, 51, 0,
+			11, 67, 35, 5, 0, 71, 36, 49, 36, 91, 0, 11, 67, 33, 21, 0, 71, 39, 51, 36, 91, 0, 22, 72, 31, 4, 243, 60, 116, 243,
+			138, 0, 39, 49, 89, 37, 72, 108, 89, 37, 57, 39, 50, 0, 19, 71, 29, 28, 98, 130, 39, 243, 192, 36, 51, 81, 39, 50, 39, 65,
+			37, 49, 0, 14, 68, 28, 136, 144, 68, 35, 71, 40, 88, 35, 51, 51, 0, 12, 68, 11, 2, 162, 68, 108, 49, 47, 39, 51, 0, 0,
+			14, 68, 197, 65, 243, 80, 81, 39, 91, 108, 57, 36, 91, 0, 20, 71, 197, 33, 224, 42, 38, 243, 120, 81, 36, 88, 108, 50, 47, 39,
+			83, 37, 55, 0, 17, 70, 183, 56, 34, 195, 56, 128, 48, 37, 50, 39, 49, 37, 57, 39, 0, 12, 68, 182, 39, 179, 80, 48, 39, 55,
+			37, 91, 0, 13, 68, 181, 20, 115, 80, 48, 39, 51, 51, 37, 91, 0, 20, 70, 181, 18, 162, 29, 188, 32, 48, 35, 51, 47, 39, 10,
+			35, 83, 49, 35, 50, 0, 15, 68, 181, 18, 160, 80, 48, 39, 51, 47, 35, 50, 36, 91, 0, 14, 68, 133, 241, 243, 80, 107, 35, 65,
+			108, 57, 36, 91, 0, 14, 68, 131, 49, 243, 80, 50, 37, 57, 108, 57, 36, 91, 0, 15, 68, 125, 19, 224, 80, 65, 39, 51, 72, 35,
+			50, 35, 91, 0, 13, 68, 124, 115, 162, 64, 65, 35, 19, 101, 40, 88, 0, 11, 67, 111, 56, 146, 83, 37, 57, 40, 88, 0, 17, 70,
+			111, 52, 179, 192, 241, 224, 83, 37, 88, 37, 49, 72, 108, 50, 0, 16, 69, 76, 212, 78, 205, 32, 89, 35, 107, 35, 51, 101, 37, 88,
+			0, 14, 68, 76, 161, 243, 80, 89, 36, 47, 108, 57, 36, 91, 0, 14, 68, 68, 129, 243, 80, 51, 39, 71, 108, 57, 36, 91, 0, 18,
+			70, 42, 44, 211, 71, 1, 224, 47, 40, 57, 89, 36, 51, 49, 108, 50, 0, 17, 70, 34, 33, 222, 109, 19, 0, 71, 39, 55, 83, 35,
+			51, 35, 75, 0, 19, 70, 29, 231, 211, 121, 252, 224, 39, 55, 65, 39, 89, 55, 36, 65, 37, 50, 0, 17, 70, 10, 2, 145, 29, 60,
+			202, 108, 50, 47, 51, 108, 89, 37, 47, 0, 0, 13, 68, 125, 18, 34, 92, 65, 35, 51, 71, 40, 47, 0, 17, 69, 122, 3, 209, 137,
+			16, 55, 35, 50, 72, 51, 39, 84, 36, 51, 0, 21, 71, 110, 39, 7, 121, 145, 207, 132, 83, 39, 12, 104, 17, 39, 55, 108, 72, 36,
+			12, 0, 11, 67, 69, 67, 192, 51, 6, 39, 91, 72, 0, 16, 69, 68, 120, 113, 65, 16, 51, 108, 107, 81, 39, 88, 35, 51, 0, 24,
+			73, 42, 34, 135, 123, 50, 135, 71, 52, 223, 47, 39, 47, 108, 55, 37, 47, 108, 51, 37, 89, 65, 0, 10, 67, 29, 67, 192, 35, 91,
+			35, 72, 0, 25, 73, 8, 177, 209, 29, 226, 7, 115, 56, 64, 108, 89, 108, 51, 39, 55, 71, 108, 104, 17, 37, 57, 36, 0, 0, 16,
+			69, 197, 23, 199, 205, 64, 81, 35, 51, 65, 108, 57, 36, 91, 0, 14, 69, 184, 124, 32, 31, 48, 76, 108, 49, 50, 108, 57, 0, 20,
+			71, 182, 39, 176, 32, 119, 135, 128, 48, 40, 55, 35, 49, 71, 108, 55, 108, 50, 0, 10, 67, 180, 226, 128, 48, 39, 101, 47, 0, 19,
+			70, 136, 114, 145, 182, 39, 162, 84, 108, 47, 36, 51, 48, 39, 55, 39, 12, 0, 11, 67, 125, 72, 136, 65, 35, 91, 40, 71, 0, 18,
+			70, 78, 34, 47, 192, 172, 226, 89, 40, 71, 90, 36, 49, 47, 37, 84, 0, 18, 70, 76, 132, 179, 182, 39, 162, 89, 35, 71, 88, 37,
+			48, 39, 55, 39, 0, 16, 69, 71, 52, 160, 113, 64, 51, 37, 88, 50, 35, 104, 17, 91, 0, 15, 69, 60, 116, 115, 137, 64, 72, 108,
+			51, 37, 57, 40, 91, 0, 18, 70, 56, 124, 19, 180, 116, 115, 101, 108, 49, 89, 36, 48, 108, 51, 37, 0, 13, 67, 53, 22, 242, 107,
+			36, 51, 83, 36, 57, 36, 0, 15, 69, 33, 28, 202, 205, 64, 71, 36, 51, 37, 47, 37, 91, 0, 15, 69, 31, 4, 199, 205, 64, 39,
+			49, 89, 108, 57, 36, 91, 0, 16, 69, 30, 2, 161, 31, 48, 36, 50, 47, 36, 107, 108, 57, 36, 0, 21, 71, 29, 236, 10, 70, 39,
+			179, 40, 36, 55, 36, 49, 47, 36, 51, 39, 55, 37, 47, 0, 16, 69, 29, 50, 145, 206, 32, 36, 89, 47, 36, 51, 37, 57, 39, 0,
+			16, 69, 9, 39, 199, 205, 64, 19, 108, 88, 65, 108, 57, 36, 91, 0, 16, 70, 8, 225, 222, 78, 36, 128, 108, 101, 108, 55, 89, 40,
+			88, 0, 0, 18, 70, 137, 226, 135, 124, 164, 64, 84, 39, 55, 47, 108, 65, 36, 47, 51, 0, 18, 70, 133, 252, 224, 94, 36, 64, 107,
+			35, 65, 37, 50, 47, 39, 12, 51, 0, 18, 70, 133, 241, 224, 94, 36, 64, 107, 35, 65, 108, 50, 10, 47, 39, 51, 0, 17, 70, 131,
+			53, 7, 34, 36, 64, 50, 36, 57, 91, 108, 71, 40, 51, 0, 17, 70, 128, 120, 95, 198, 40, 0, 50, 108, 107, 35, 65, 81, 40, 50,
+			0, 13, 68, 127, 4, 179, 192, 65, 36, 49, 88, 37, 49, 0, 21, 70, 124, 168, 158, 204, 120, 0, 65, 39, 47, 36, 84, 35, 55, 55,
+			37, 57, 108, 50, 0, 12, 68, 110, 40, 51, 192, 83, 39, 50, 37, 49, 0, 17, 70, 35, 54, 81, 108, 120, 0, 71, 37, 10, 36, 51,
+			83, 108, 50, 0, 18, 70, 29, 50, 145, 138, 248, 0, 36, 89, 47, 36, 51, 39, 90, 36, 50, 0, 17, 70, 9, 242, 34, 120, 120, 19,
+			108, 65, 71, 40, 55, 108, 50, 89, 0, 17, 70, 9, 226, 7, 41, 24, 147, 108, 55, 71, 108, 47, 51, 39, 89, 0, 0, 12, 67, 193,
+			19, 138, 49, 36, 51, 36, 101, 47, 0, 18, 70, 181, 20, 202, 204, 252, 192, 48, 35, 51, 35, 89, 47, 37, 72, 37, 0, 16, 69, 181,
+			17, 224, 41, 32, 48, 35, 51, 108, 50, 47, 36, 88, 0, 15, 69, 132, 124, 212, 138, 0, 107, 108, 57, 36, 91, 40, 50, 0, 16, 68,
+			125, 49, 158, 200, 65, 35, 89, 19, 35, 55, 36, 57, 36, 0, 18, 69, 124, 167, 7, 70, 0, 65, 39, 47, 36, 104, 17, 108, 51, 36,
+			50, 0, 16, 70, 80, 120, 49, 132, 124, 192, 91, 108, 50, 81, 107, 108, 57, 0, 16, 69, 51, 20, 83, 137, 32, 75, 36, 81, 35, 51,
+			89, 40, 88, 0, 17, 70, 48, 119, 207, 28, 252, 192, 75, 108, 65, 36, 72, 108, 72, 37, 0, 16, 69, 35, 54, 209, 137, 32, 71, 37,
+			57, 35, 83, 51, 40, 88, 0, 11, 67, 35, 8, 0, 71, 39, 49, 39, 50, 0, 11, 67, 33, 24, 0, 71, 36, 51, 35, 50, 0, 16,
+			69, 32, 244, 136, 30, 0, 71, 35, 72, 88, 35, 71, 108, 50, 0, 0, 18, 70, 181, 20, 237, 123, 52, 192, 48, 36, 51, 89, 48, 39,
+			55, 37, 89, 0, 11, 67, 128, 227, 192, 50, 39, 101, 39, 72, 0, 11, 67, 128, 120, 176, 50, 108, 84, 35, 49, 0, 13, 68, 124, 211,
+			226, 60, 65, 35, 107, 72, 40, 72, 0, 16, 69, 76, 140, 17, 136, 208, 89, 35, 71, 39, 49, 51, 40, 107, 0, 18, 70, 60, 119, 200,
+			120, 248, 145, 72, 108, 65, 71, 36, 55, 72, 39, 51, 0, 10, 67, 58, 44, 240, 101, 40, 35, 49, 0, 15, 68, 40, 132, 82, 60, 47,
+			35, 71, 35, 51, 88, 35, 72, 0, 0, 12, 67, 183, 12, 204, 48, 35, 49, 36, 57, 75, 0, 20, 71, 181, 225, 211, 126, 39, 179, 72,
+			48, 36, 55, 108, 89, 65, 39, 55, 37, 88, 0, 16, 69, 181, 20, 202, 206, 240, 48, 36, 51, 36, 89, 47, 37, 90, 0, 24, 73, 180,
+			116, 71, 62, 44, 19, 207, 1, 222, 48, 108, 51, 108, 72, 39, 49, 89, 37, 49, 108, 55, 0, 16, 70, 135, 59, 98, 111, 52, 128, 107,
+			37, 48, 39, 83, 37, 88, 0, 18, 70, 123, 8, 159, 136, 172, 226, 55, 39, 49, 39, 65, 39, 47, 37, 84, 0, 13, 68, 112, 120, 162,
+			40, 104, 17, 108, 84, 40, 47, 0, 18, 70, 63, 8, 145, 28, 172, 226, 72, 36, 49, 39, 51, 108, 47, 37, 84, 0, 13, 67, 61, 26,
+			242, 72, 35, 51, 51, 36, 57, 36, 0, 19, 70, 33, 17, 219, 72, 124, 212, 71, 35, 51, 35, 83, 88, 108, 57, 36, 91, 0, 18, 70,
+			32, 116, 72, 207, 12, 226, 71, 108, 51, 71, 37, 49, 37, 57, 40, 0, 15, 70, 31, 52, 162, 42, 43, 64, 37, 88, 39, 47, 39, 48,
+			0, 26, 73, 30, 2, 145, 128, 116, 243, 138, 1, 222, 35, 50, 47, 36, 51, 50, 108, 89, 37, 57, 39, 50, 108, 55, 0, 13, 68, 29,
+			241, 224, 40, 35, 65, 108, 50, 35, 47, 0, 0, 11, 67, 187, 56, 15, 76, 37, 50, 35, 72, 0, 11, 67, 185, 60, 207, 76, 39, 89,
+			37, 72, 0, 11, 67, 183, 12, 207, 48, 39, 49, 37, 72, 0, 16, 69, 181, 24, 115, 72, 240, 48, 35, 51, 107, 37, 88, 35, 72, 0,
+			19, 70, 133, 17, 240, 123, 56, 147, 107, 36, 51, 108, 49, 55, 37, 57, 40, 89, 0, 12, 67, 115, 56, 143, 104, 17, 39, 57, 40, 72,
+			0, 14, 69, 80, 120, 81, 136, 240, 91, 108, 107, 51, 40, 72, 0, 10, 67, 68, 120, 15, 51, 108, 50, 72, 0, 23, 71, 52, 241, 222,
+			125, 195, 226, 68, 107, 35, 72, 72, 35, 55, 65, 35, 104, 17, 72, 40, 51, 0, 13, 68, 35, 54, 202, 192, 71, 37, 83, 47, 35, 49,
+			0, 11, 67, 34, 21, 0, 71, 36, 107, 36, 91, 0, 14, 69, 32, 116, 143, 204, 240, 71, 108, 88, 72, 37, 72, 0, 16, 70, 29, 50,
+			135, 123, 56, 0, 36, 89, 47, 108, 55, 37, 50, 0, 0, 10, 67, 192, 124, 202, 49, 108, 57, 47, 0, 12, 67, 181, 229, 10, 48, 35,
+			55, 35, 91, 47, 0, 17, 70, 135, 51, 209, 137, 236, 210, 107, 37, 72, 51, 39, 55, 37, 88, 0, 14, 68, 127, 1, 212, 32, 65, 39,
+			49, 108, 91, 36, 83, 0, 18, 69, 125, 81, 207, 112, 160, 65, 39, 89, 108, 72, 36, 104, 17, 35, 47, 0, 14, 67, 108, 168, 138, 83,
+			39, 47, 39, 84, 84, 35, 47, 0, 14, 69, 70, 36, 199, 56, 160, 51, 40, 89, 108, 101, 47, 0, 15, 69, 69, 55, 207, 30, 0, 51,
+			35, 89, 65, 72, 108, 50, 0, 17, 69, 68, 200, 158, 204, 160, 51, 35, 75, 39, 55, 37, 57, 35, 47, 0, 14, 68, 48, 115, 235, 200,
+			75, 108, 72, 72, 36, 57, 36, 0, 13, 67, 40, 220, 202, 47, 35, 107, 37, 57, 35, 47, 0, 15, 69, 32, 116, 173, 56, 160, 71, 108,
+			88, 48, 39, 101, 47, 0, 14, 69, 30, 12, 115, 56, 160, 35, 50, 81, 37, 101, 47, 0, 25, 73, 28, 226, 145, 111, 52, 179, 192, 241,
+			224, 35, 101, 47, 35, 51, 83, 37, 88, 37, 49, 72, 108, 50, 0, 22, 71, 9, 18, 145, 197, 17, 219, 204, 108, 51, 47, 36, 51, 39,
+			81, 36, 51, 108, 83, 37, 0, 14, 68, 9, 4, 84, 32, 108, 88, 35, 51, 91, 35, 71, 0, 15, 65, 16, 6, 84, 108, 84, 4, 107,
+			35, 65, 88, 36, 12, 0, 0, 14, 68, 207, 3, 224, 60, 57, 36, 49, 72, 35, 50, 72, 0, 13, 68, 134, 37, 32, 196, 107, 40, 91,
+			35, 50, 81, 0, 11, 67, 134, 33, 192, 6, 107, 35, 84, 108, 0, 10, 67, 129, 49, 192, 50, 36, 89, 108, 0, 14, 68, 77, 18, 32,
+			60, 89, 35, 51, 71, 35, 50, 72, 0, 12, 68, 58, 33, 224, 60, 6, 101, 108, 50, 72, 0, 14, 68, 42, 33, 224, 60, 47, 35, 84,
+			108, 50, 35, 72, 0, 11, 68, 34, 44, 243, 60, 71, 40, 37, 72, 0, 0, 17, 70, 133, 17, 240, 123, 50, 128, 107, 36, 51, 108, 49,
+			55, 37, 47, 0, 13, 68, 131, 17, 212, 40, 50, 36, 81, 108, 91, 47, 0, 16, 70, 130, 36, 83, 28, 226, 128, 50, 40, 51, 89, 108,
+			101, 47, 0, 19, 71, 127, 60, 17, 137, 60, 34, 180, 65, 37, 49, 51, 39, 89, 49, 39, 48, 0, 10, 67, 110, 44, 34, 83, 39, 49,
+			39, 0, 14, 68, 67, 1, 226, 40, 88, 36, 49, 108, 84, 35, 47, 0, 12, 67, 46, 8, 179, 89, 35, 50, 35, 84, 37, 0, 14, 68,
+			41, 17, 226, 40, 47, 35, 51, 108, 84, 35, 47, 0, 27, 73, 40, 114, 209, 33, 17, 224, 199, 52, 128, 47, 35, 35, 89, 89, 39, 51,
+			71, 35, 51, 35, 50, 81, 37, 88, 0, 16, 70, 32, 115, 211, 136, 226, 128, 71, 108, 72, 89, 40, 101, 47, 0, 13, 68, 30, 12, 84,
+			40, 35, 50, 81, 39, 91, 47, 0, 21, 71, 29, 236, 10, 70, 39, 179, 72, 36, 55, 36, 49, 47, 36, 51, 39, 55, 37, 88, 0, 0,
+			11, 67, 137, 229, 0, 84, 36, 55, 35, 91, 0, 16, 69, 127, 52, 98, 128, 240, 65, 37, 51, 35, 84, 35, 50, 72, 0, 15, 69, 121,
+			242, 7, 128, 240, 55, 39, 65, 71, 108, 50, 72, 0, 10, 67, 110, 44, 7, 83, 40, 49, 108, 0, 13, 67, 109, 196, 71, 83, 39, 104,
+			17, 35, 51, 108, 0, 17, 70, 109, 28, 207, 71, 60, 0, 83, 36, 51, 37, 72, 51, 37, 49, 0, 17, 69, 73, 168, 8, 136, 240, 88,
+			35, 104, 17, 50, 35, 71, 40, 72, 0, 12, 67, 68, 68, 199, 51, 39, 19, 35, 89, 108, 0, 20, 71, 61, 248, 176, 68, 114, 179, 192,
+			72, 36, 65, 39, 49, 51, 108, 47, 37, 49, 0, 17, 70, 58, 33, 225, 204, 245, 15, 101, 108, 107, 37, 72, 91, 39, 72, 0, 17, 70,
+			51, 50, 17, 123, 56, 0, 75, 37, 71, 36, 51, 55, 37, 50, 0, 17, 69, 43, 4, 98, 128, 240, 47, 35, 49, 51, 35, 84, 35, 50,
+			72, 0, 11, 67, 33, 232, 135, 71, 35, 55, 84, 108, 0, 15, 69, 32, 232, 135, 128, 240, 71, 36, 101, 108, 50, 35, 72, 0, 15, 70,
+			30, 44, 17, 31, 56, 0, 39, 49, 51, 108, 57, 50, 0, 21, 71, 29, 236, 10, 70, 40, 51, 192, 36, 55, 36, 49, 47, 36, 51, 39,
+			50, 37, 49, 0, 21, 72, 29, 59, 71, 68, 161, 240, 137, 48, 36, 89, 48, 108, 51, 47, 108, 49, 40, 89, 0, 0, 14, 68, 125, 178,
+			145, 204, 65, 39, 83, 47, 35, 51, 37, 0, 14, 68, 92, 132, 83, 204, 47, 35, 71, 35, 51, 89, 37, 0, 17, 69, 61, 24, 15, 80,
+			160, 72, 35, 51, 35, 50, 72, 35, 91, 47, 0, 18, 70, 61, 17, 224, 60, 115, 138, 72, 35, 51, 35, 50, 72, 108, 101, 47, 0, 14,
+			69, 40, 119, 136, 136, 160, 47, 108, 55, 71, 39, 47, 0, 18, 69, 32, 118, 202, 136, 160, 71, 108, 83, 39, 47, 39, 84, 84, 35, 47,
+			0, 15, 69, 8, 140, 98, 80, 160, 108, 71, 10, 81, 40, 91, 47, 0, 0, 11, 67, 125, 225, 192, 65, 39, 55, 55, 108, 0, 17, 70,
+			86, 33, 200, 63, 51, 192, 89, 35, 84, 108, 71, 72, 37, 72, 0, 18, 70, 35, 49, 222, 31, 51, 192, 71, 37, 57, 108, 55, 108, 57,
+			35, 72, 0, 0, 16, 69, 193, 24, 135, 79, 48, 49, 39, 51, 39, 84, 108, 89, 37, 0, 12, 68, 182, 39, 179, 180, 48, 39, 55, 37,
+			48, 0, 11, 67, 127, 6, 243, 65, 39, 49, 83, 37, 0, 16, 69, 124, 168, 135, 71, 48, 65, 39, 47, 35, 84, 108, 51, 37, 0, 27,
+			73, 124, 114, 25, 60, 119, 151, 35, 54, 115, 65, 108, 71, 35, 19, 72, 39, 47, 47, 35, 71, 37, 19, 36, 12, 0, 15, 69, 33, 60,
+			199, 71, 48, 71, 36, 89, 57, 108, 51, 37, 0, 15, 69, 10, 12, 30, 30, 32, 108, 50, 49, 36, 55, 108, 84, 0, 10, 67, 8, 131,
+			51, 108, 71, 75, 37, 0, 0, 8, 66, 192, 240, 49, 39, 72, 0, 18, 70, 129, 252, 207, 30, 12, 207, 50, 36, 65, 37, 72, 108, 50,
+			37, 72, 0, 13, 67, 125, 86, 199, 65, 39, 89, 35, 83, 83, 108, 0, 16, 69, 124, 195, 224, 204, 112, 65, 35, 75, 72, 50, 37, 57,
+			108, 0, 11, 67, 123, 55, 135, 55, 36, 57, 55, 108, 0, 12, 67, 113, 55, 192, 104, 17, 35, 89, 35, 65, 0, 21, 71, 108, 168, 136,
+			206, 34, 179, 192, 83, 39, 47, 39, 71, 37, 57, 39, 47, 37, 49, 0, 12, 67, 82, 8, 135, 91, 36, 50, 35, 84, 108, 0, 12, 67,
+			81, 28, 7, 91, 39, 51, 35, 49, 108, 0, 10, 67, 70, 34, 7, 51, 39, 71, 108, 0, 10, 67, 49, 55, 192, 75, 36, 89, 65, 0,
+			16, 69, 41, 84, 115, 52, 112, 47, 35, 89, 51, 37, 107, 35, 50, 0, 17, 70, 41, 28, 222, 206, 40, 0, 47, 36, 51, 37, 55, 57,
+			40, 50, 0, 16, 69, 35, 24, 160, 204, 112, 71, 36, 81, 39, 50, 37, 57, 108, 0, 16, 69, 33, 229, 34, 207, 0, 71, 39, 55, 91,
+			39, 84, 37, 49, 0, 15, 67, 33, 147, 199, 4, 71, 6, 35, 12, 19, 72, 35, 50, 0, 12, 67, 33, 55, 192, 71, 36, 89, 65, 36,
+			12, 0, 15, 69, 29, 184, 135, 132, 112, 35, 83, 84, 108, 107, 35, 50, 0, 9, 67, 29, 55, 192, 36, 89, 65, 0, 9, 67, 9, 55,
+			192, 108, 89, 65, 0, 0, 13, 68, 137, 20, 199, 204, 84, 36, 51, 89, 108, 57, 0, 17, 70, 135, 51, 209, 137, 236, 202, 107, 37, 72,
+			51, 39, 55, 37, 47, 0, 13, 68, 129, 40, 158, 204, 50, 39, 88, 40, 55, 37, 0, 20, 70, 113, 84, 71, 120, 245, 10, 104, 17, 35,
+			89, 51, 39, 72, 72, 35, 91, 47, 0, 11, 67, 105, 55, 128, 104, 17, 39, 89, 55, 0, 11, 67, 101, 55, 128, 35, 12, 89, 35, 55,
+			0, 11, 67, 69, 55, 128, 51, 39, 89, 39, 55, 0, 18, 70, 33, 34, 51, 29, 28, 192, 71, 39, 88, 71, 37, 57, 108, 51, 37, 0,
+			13, 68, 30, 4, 111, 204, 36, 50, 36, 51, 90, 37, 0, 0, 11, 67, 197, 17, 219, 81, 36, 51, 108, 83, 0, 15, 67, 125, 196, 223,
+			65, 39, 104, 17, 35, 89, 89, 36, 65, 0, 13, 68, 125, 28, 222, 28, 65, 36, 51, 37, 55, 108, 0, 16, 68, 124, 168, 155, 28, 65,
+			39, 47, 36, 84, 35, 83, 83, 108, 0, 11, 67, 120, 120, 176, 55, 108, 84, 35, 49, 0, 13, 68, 101, 248, 159, 28, 39, 65, 40, 65,
+			35, 50, 0, 11, 67, 76, 193, 219, 89, 36, 75, 108, 83, 0, 14, 67, 42, 36, 95, 47, 35, 84, 35, 51, 51, 39, 65, 0, 11, 67,
+			40, 116, 95, 47, 108, 51, 39, 65, 0, 17, 70, 33, 225, 199, 49, 17, 192, 71, 36, 55, 108, 36, 75, 51, 108, 0, 7, 65, 148, 6,
+			35, 50, 0, 0, 12, 67, 181, 28, 94, 48, 39, 51, 81, 39, 55, 0, 14, 67, 125, 149, 222, 65, 39, 19, 35, 47, 47, 35, 55, 0,
+			16, 69, 125, 50, 162, 123, 48, 65, 39, 89, 47, 39, 12, 55, 37, 0, 11, 67, 51, 56, 136, 75, 40, 57, 40, 71, 0, 11, 67, 31,
+			4, 222, 36, 49, 89, 36, 55, 0, 12, 67, 29, 242, 128, 39, 65, 65, 6, 35, 47, 0, 11, 67, 29, 44, 94, 39, 88, 81, 35, 55,
+			0, 0, 12, 67, 197, 234, 225, 81, 35, 55, 55, 36, 12, 0, 15, 69, 136, 120, 179, 120, 112, 84, 108, 84, 36, 57, 55, 108, 0, 15,
+			68, 133, 33, 209, 124, 6, 107, 36, 88, 108, 51, 39, 65, 0, 16, 68, 125, 195, 235, 124, 65, 39, 104, 17, 35, 72, 72, 35, 65, 0,
+			15, 68, 125, 146, 149, 124, 65, 39, 19, 47, 35, 89, 35, 65, 0, 17, 68, 124, 168, 161, 124, 65, 39, 47, 36, 84, 35, 107, 107, 36,
+			65, 0, 17, 68, 124, 168, 141, 124, 65, 39, 47, 36, 84, 35, 107, 107, 36, 65, 0, 17, 70, 123, 54, 202, 68, 124, 0, 55, 37, 83,
+			47, 36, 51, 108, 49, 0, 13, 67, 113, 19, 97, 104, 17, 39, 51, 107, 36, 12, 0, 11, 67, 62, 36, 97, 72, 39, 51, 36, 12, 0,
+			12, 67, 62, 35, 97, 72, 39, 12, 107, 36, 12, 0, 11, 67, 52, 196, 97, 107, 39, 75, 51, 36, 0, 16, 67, 41, 152, 79, 47, 35,
+			19, 10, 35, 107, 10, 107, 39, 72, 0, 17, 70, 41, 24, 159, 34, 40, 0, 47, 39, 51, 39, 65, 71, 39, 50, 0, 17, 69, 32, 119,
+			211, 124, 112, 71, 108, 65, 39, 89, 35, 65, 65, 108, 0, 11, 68, 30, 37, 71, 108, 39, 89, 108, 83, 0, 12, 68, 29, 76, 7, 108,
+			36, 91, 49, 108, 83, 0, 22, 72, 9, 23, 199, 42, 36, 72, 128, 240, 108, 51, 65, 108, 47, 39, 51, 71, 35, 50, 72, 0, 0, 12,
+			67, 197, 20, 224, 81, 39, 51, 39, 89, 50, 0, 12, 67, 129, 177, 220, 50, 36, 83, 108, 104, 17, 0, 19, 70, 128, 132, 79, 132, 124,
+			192, 50, 35, 71, 35, 51, 72, 107, 108, 57, 36, 0, 15, 68, 127, 7, 235, 120, 65, 39, 49, 35, 65, 65, 36, 55, 0, 14, 67, 126,
+			36, 78, 65, 39, 84, 35, 51, 51, 36, 101, 0, 14, 68, 125, 147, 235, 120, 65, 39, 35, 72, 72, 36, 55, 0, 15, 68, 124, 215, 171,
+			120, 65, 39, 107, 35, 55, 55, 36, 55, 0, 16, 69, 122, 20, 202, 30, 0, 55, 35, 107, 36, 89, 47, 108, 50, 0, 13, 67, 105, 18,
+			10, 104, 17, 39, 51, 71, 35, 47, 0, 12, 67, 85, 177, 220, 89, 36, 83, 108, 104, 17, 0, 10, 67, 71, 23, 128, 51, 36, 81, 55,
+			0, 11, 67, 35, 24, 0, 71, 36, 81, 35, 50, 0, 11, 67, 33, 247, 128, 71, 36, 65, 39, 55, 0, 11, 67, 33, 40, 0, 71, 36,
+			88, 35, 50, 0, 16, 70, 10, 1, 202, 137, 236, 192, 108, 50, 108, 47, 39, 55, 37, 0, 10, 67, 9, 232, 0, 108, 55, 36, 50, 0,
+			10, 67, 31, 56, 0, 37, 12, 50, 0, 76, 0, 11, 67, 206, 36, 219, 57, 40, 89, 36, 83, 0, 11, 67, 197, 17, 223, 81, 36, 51,
+			108, 65, 0, 21, 71, 192, 119, 179, 109, 24, 51, 28, 49, 108, 55, 37, 83, 39, 51, 50, 37, 57, 108, 0, 11, 67, 185, 28, 240, 76,
+			36, 51, 37, 49, 0, 17, 69, 129, 252, 209, 77, 240, 50, 36, 65, 37, 51, 36, 89, 35, 65, 0, 11, 67, 126, 37, 48, 65, 40, 91,
+			35, 49, 0, 14, 68, 125, 51, 145, 132, 65, 35, 89, 101, 35, 51, 36, 0, 14, 68, 124, 244, 83, 132, 65, 35, 72, 51, 36, 89, 36,
+			0, 20, 70, 124, 168, 7, 136, 129, 192, 65, 39, 47, 36, 50, 108, 84, 36, 71, 35, 50, 0, 11, 67, 123, 17, 223, 55, 36, 81, 108,
+			65, 0, 12, 67, 113, 248, 64, 104, 17, 35, 65, 36, 12, 0, 10, 67, 112, 120, 64, 104, 17, 108, 107, 0, 15, 68, 79, 49, 209, 132,
+			89, 35, 57, 57, 108, 51, 36, 12, 0, 12, 67, 69, 49, 223, 51, 35, 89, 89, 108, 65, 0, 9, 67, 68, 120, 64, 51, 108, 107, 0,
+			13, 68, 57, 28, 215, 132, 101, 35, 51, 37, 47, 36, 0, 11, 67, 53, 113, 223, 107, 39, 47, 108, 65, 0, 11, 67, 53, 49, 223, 107,
+			36, 89, 108, 65, 0, 11, 67, 49, 33, 223, 75, 39, 88, 108, 65, 0, 13, 67, 43, 55, 223, 47, 35, 57, 65, 65, 39, 65, 0, 14,
+			67, 40, 52, 219, 47, 35, 19, 35, 89, 89, 39, 83, 0, 18, 70, 30, 6, 209, 28, 241, 192, 36, 50, 83, 36, 51, 108, 72, 35, 50,
+			0, 18, 70, 29, 66, 136, 30, 17, 192, 36, 91, 47, 36, 71, 108, 107, 35, 50, 0, 12, 68, 29, 65, 217, 132, 36, 91, 108, 19, 36,
+			0, 15, 69, 29, 28, 71, 77, 240, 39, 51, 6, 81, 108, 89, 65, 0, 15, 68, 28, 241, 209, 132, 6, 36, 72, 4, 108, 51, 36, 12,
+			0, 12, 68, 28, 177, 209, 132, 36, 89, 108, 51, 36, 0, 13, 68, 28, 168, 176, 60, 39, 47, 39, 49, 35, 72, 0, 0, 10, 67, 189,
+			50, 128, 90, 36, 89, 47, 0, 14, 68, 125, 66, 135, 112, 65, 39, 91, 47, 108, 104, 17, 0, 14, 68, 125, 49, 240, 128, 65, 35, 89,
+			108, 49, 36, 50, 0, 16, 67, 124, 220, 204, 65, 39, 5, 107, 35, 6, 57, 57, 36, 75, 0, 12, 67, 124, 215, 222, 65, 35, 107, 65,
+			36, 55, 0, 15, 68, 115, 55, 199, 112, 104, 17, 36, 57, 65, 108, 104, 17, 0, 15, 68, 109, 193, 225, 40, 83, 36, 104, 17, 108, 107,
+			35, 47, 0, 14, 68, 97, 231, 199, 40, 88, 39, 55, 35, 65, 108, 47, 0, 14, 68, 81, 28, 217, 40, 91, 35, 51, 37, 19, 35, 47,
+			0, 11, 67, 79, 17, 222, 89, 36, 81, 108, 55, 0, 16, 69, 70, 212, 74, 30, 240, 51, 36, 48, 39, 51, 47, 108, 90, 0, 12, 67,
+			65, 161, 222, 88, 39, 104, 17, 108, 55, 0, 11, 67, 43, 56, 136, 47, 37, 57, 40, 71, 0, 15, 68, 41, 24, 71, 40, 47, 39, 51,
+			51, 35, 107, 108, 47, 0, 13, 68, 41, 23, 243, 40, 47, 36, 51, 65, 37, 47, 0, 10, 67, 30, 209, 222, 39, 48, 108, 55, 0, 13,
+			68, 29, 51, 71, 112, 36, 89, 107, 108, 104, 17, 0, 14, 68, 28, 215, 7, 112, 36, 107, 104, 17, 108, 104, 17, 0, 0, 13, 68, 197,
+			248, 7, 124, 81, 39, 65, 50, 108, 65, 0, 17, 70, 194, 44, 7, 194, 39, 135, 49, 39, 49, 108, 49, 40, 55, 108, 0, 13, 68, 181,
+			24, 71, 124, 48, 35, 51, 107, 108, 65, 0, 11, 67, 127, 55, 225, 65, 36, 57, 65, 36, 0, 12, 67, 126, 38, 79, 65, 39, 12, 19,
+			36, 72, 0, 18, 69, 126, 1, 220, 86, 16, 65, 39, 50, 108, 104, 17, 36, 89, 36, 12, 0, 13, 67, 125, 196, 64, 65, 35, 104, 17,
+			35, 51, 51, 0, 18, 69, 125, 161, 222, 94, 16, 65, 39, 104, 17, 108, 55, 36, 47, 36, 12, 0, 14, 68, 125, 81, 219, 52, 65, 39,
+			89, 108, 83, 36, 107, 0, 10, 67, 124, 164, 64, 65, 36, 47, 51, 0, 16, 69, 124, 115, 209, 48, 240, 65, 108, 72, 35, 51, 75, 35,
+			72, 0, 15, 68, 124, 71, 171, 108, 65, 39, 19, 35, 55, 55, 36, 83, 0, 17, 70, 109, 252, 224, 205, 55, 192, 83, 36, 65, 37, 50,
+			37, 89, 65, 0, 16, 69, 109, 19, 209, 207, 0, 83, 36, 51, 36, 72, 51, 37, 49, 0, 10, 67, 108, 164, 64, 83, 36, 47, 51, 0,
+			16, 69, 79, 58, 199, 70, 16, 89, 35, 57, 57, 108, 51, 36, 12, 0, 11, 67, 70, 35, 225, 51, 40, 72, 36, 12, 0, 14, 68, 61,
+			228, 77, 124, 72, 36, 55, 51, 35, 107, 65, 0, 13, 68, 61, 72, 7, 124, 72, 39, 91, 50, 108, 65, 0, 19, 69, 61, 18, 7, 70,
+			16, 72, 35, 51, 6, 71, 108, 51, 36, 57, 36, 12, 0, 15, 69, 57, 24, 7, 78, 16, 101, 39, 51, 50, 108, 89, 36, 0, 23, 72,
+			33, 24, 95, 30, 216, 138, 68, 112, 71, 36, 51, 35, 107, 65, 108, 48, 40, 47, 51, 108, 0, 12, 68, 29, 184, 71, 124, 36, 83, 107,
+			108, 65, 0, 18, 70, 29, 59, 112, 41, 23, 192, 36, 89, 48, 36, 49, 47, 51, 39, 65, 0, 19, 70, 29, 50, 151, 68, 115, 199, 36,
+			89, 47, 36, 47, 51, 108, 72, 35, 50, 0, 15, 69, 29, 20, 224, 204, 240, 35, 51, 89, 36, 50, 37, 72, 0, 13, 68, 28, 167, 243,
+			192, 35, 47, 39, 65, 37, 49, 0, 12, 68, 28, 136, 71, 124, 36, 71, 107, 108, 65, 0, 16, 69, 8, 132, 202, 70, 16, 108, 71, 89,
+			47, 36, 51, 36, 12, 0, 0, 12, 67, 194, 3, 224, 49, 35, 50, 72, 35, 50, 0, 16, 69, 192, 118, 31, 206, 0, 49, 108, 88, 36,
+			65, 36, 57, 50, 0, 15, 69, 128, 193, 211, 28, 160, 50, 36, 75, 108, 89, 108, 47, 0, 14, 68, 124, 167, 7, 120, 65, 36, 47, 104,
+			17, 108, 55, 0, 14, 68, 124, 166, 71, 120, 65, 39, 47, 35, 19, 108, 55, 0, 11, 67, 113, 28, 192, 104, 17, 39, 51, 37, 0, 13,
+			67, 113, 21, 10, 104, 17, 35, 51, 35, 91, 47, 0, 10, 67, 88, 220, 192, 88, 39, 107, 108, 0, 12, 67, 79, 1, 224, 89, 39, 49,
+			49, 108, 50, 0, 10, 67, 68, 116, 202, 51, 108, 89, 47, 0, 12, 67, 65, 26, 202, 88, 39, 51, 51, 35, 47, 0, 12, 67, 63, 1,
+			224, 72, 39, 49, 49, 108, 50, 0, 11, 67, 49, 28, 192, 6, 75, 35, 51, 37, 0, 14, 67, 41, 103, 224, 47, 35, 88, 35, 65, 65,
+			39, 50, 0, 12, 67, 33, 236, 218, 71, 35, 55, 37, 104, 17, 0, 11, 67, 33, 44, 0, 71, 35, 88, 35, 49, 0, 12, 68, 30, 6,
+			199, 120, 36, 50, 83, 108, 55, 0, 9, 67, 29, 76, 0, 35, 91, 49, 0, 0, 11, 67, 186, 1, 209, 76, 36, 50, 108, 51, 0, 12,
+			67, 182, 247, 209, 48, 35, 90, 65, 39, 51, 0, 12, 67, 130, 44, 17, 50, 39, 12, 49, 35, 51, 0, 16, 70, 127, 51, 162, 29, 24,
+			64, 65, 36, 57, 101, 108, 51, 36, 0, 19, 70, 125, 50, 159, 123, 8, 64, 65, 39, 89, 47, 35, 65, 55, 35, 49, 36, 0, 13, 68,
+			125, 19, 199, 60, 65, 39, 51, 72, 108, 72, 0, 14, 67, 125, 19, 149, 65, 39, 51, 35, 101, 101, 35, 89, 0, 15, 68, 120, 129, 207,
+			132, 55, 35, 71, 71, 108, 72, 36, 12, 0, 11, 67, 111, 55, 145, 83, 37, 55, 36, 51, 0, 22, 70, 105, 20, 71, 120, 220, 31, 104,
+			17, 39, 51, 35, 51, 39, 55, 107, 36, 49, 35, 65, 0, 18, 70, 74, 3, 31, 137, 24, 64, 88, 35, 50, 75, 36, 65, 40, 51, 36,
+			0, 11, 67, 62, 225, 209, 72, 39, 76, 108, 51, 0, 12, 68, 62, 39, 199, 60, 72, 40, 65, 108, 72, 0, 12, 67, 57, 19, 145, 101,
+			36, 51, 101, 36, 51, 0, 11, 67, 49, 228, 192, 75, 35, 55, 35, 89, 0, 18, 70, 41, 241, 212, 31, 24, 64, 47, 35, 65, 108, 91,
+			108, 81, 35, 107, 0, 18, 70, 34, 39, 148, 139, 52, 223, 71, 39, 55, 91, 36, 84, 37, 89, 65, 0, 16, 69, 34, 24, 49, 29, 240,
+			71, 36, 107, 36, 50, 81, 108, 65, 0, 16, 70, 10, 12, 7, 61, 24, 64, 108, 50, 49, 108, 72, 51, 36, 0, 0, 12, 68, 206, 40,
+			71, 128, 57, 40, 107, 108, 50, 0, 12, 68, 206, 40, 7, 128, 57, 40, 50, 108, 50, 0, 13, 68, 195, 56, 71, 128, 49, 36, 57, 107,
+			108, 50, 0, 13, 68, 193, 251, 98, 40, 49, 39, 65, 48, 40, 47, 0, 14, 68, 193, 76, 207, 128, 49, 36, 91, 37, 72, 35, 50, 0,
+			11, 67, 184, 120, 148, 76, 108, 84, 39, 91, 0, 13, 68, 183, 60, 7, 128, 48, 36, 57, 49, 108, 50, 0, 14, 68, 183, 56, 147, 40,
+			48, 36, 57, 84, 35, 89, 47, 0, 14, 69, 182, 36, 74, 29, 224, 48, 39, 51, 47, 108, 55, 0, 13, 68, 182, 8, 71, 128, 48, 36,
+			50, 107, 108, 50, 0, 15, 68, 181, 236, 7, 128, 48, 36, 55, 55, 36, 49, 108, 50, 0, 17, 69, 181, 18, 156, 29, 224, 48, 39, 51,
+			47, 36, 104, 17, 108, 55, 0, 14, 68, 135, 51, 7, 128, 107, 35, 57, 35, 75, 108, 50, 0, 15, 69, 134, 3, 200, 29, 224, 107, 35,
+			50, 72, 71, 108, 55, 0, 14, 68, 133, 243, 199, 128, 107, 35, 65, 36, 72, 108, 50, 0, 14, 68, 131, 56, 159, 128, 50, 37, 57, 40,
+			65, 35, 50, 0, 14, 68, 129, 33, 240, 40, 50, 36, 88, 108, 49, 35, 47, 0, 14, 68, 127, 55, 7, 128, 65, 36, 57, 104, 17, 108,
+			50, 0, 16, 68, 126, 38, 235, 112, 65, 39, 84, 35, 83, 83, 35, 104, 17, 0, 16, 68, 125, 83, 235, 112, 65, 39, 89, 35, 72, 72,
+			36, 104, 17, 0, 14, 68, 125, 39, 7, 128, 65, 36, 88, 104, 17, 108, 50, 0, 12, 67, 121, 236, 115, 55, 35, 55, 36, 81, 37, 0,
+			10, 67, 111, 53, 128, 83, 36, 57, 88, 0, 13, 68, 81, 76, 71, 128, 91, 36, 91, 81, 108, 50, 0, 13, 68, 77, 248, 7, 128, 89,
+			36, 65, 50, 108, 50, 0, 14, 68, 77, 21, 199, 128, 89, 35, 51, 35, 47, 108, 50, 0, 13, 68, 74, 19, 199, 128, 88, 36, 107, 72,
+			108, 50, 0, 16, 70, 71, 52, 136, 29, 178, 128, 51, 37, 88, 71, 108, 83, 47, 0, 13, 68, 61, 50, 135, 128, 72, 35, 89, 47, 108,
+			50, 0, 17, 69, 61, 19, 158, 29, 224, 72, 35, 51, 101, 36, 55, 108, 55, 36, 0, 12, 67, 58, 4, 243, 101, 36, 50, 36, 89, 37,
+			0, 19, 70, 57, 38, 72, 120, 114, 128, 101, 39, 88, 35, 19, 71, 35, 55, 108, 47, 0, 15, 68, 57, 23, 7, 128, 101, 35, 51, 35,
+			104, 17, 108, 50, 0, 11, 67, 50, 42, 243, 75, 35, 84, 84, 37, 0, 13, 68, 50, 39, 135, 128, 75, 39, 12, 55, 108, 50, 0, 25,
+			73, 40, 164, 71, 76, 124, 240, 123, 56, 0, 47, 36, 47, 51, 108, 89, 108, 57, 49, 39, 55, 37, 50, 0, 13, 68, 33, 119, 135, 128,
+			71, 39, 47, 55, 108, 50, 0, 13, 68, 33, 50, 135, 128, 71, 39, 89, 47, 108, 50, 0, 17, 69, 32, 247, 224, 84, 128, 71, 35, 72,
+			65, 35, 50, 89, 35, 71, 0, 12, 68, 29, 252, 7, 128, 36, 65, 49, 108, 50, 0, 15, 69, 29, 232, 94, 29, 224, 35, 55, 107, 36,
+			55, 108, 55, 0, 13, 68, 29, 50, 135, 128, 39, 89, 6, 47, 108, 50, 0, 11, 67, 29, 20, 148, 35, 51, 88, 36, 91, 0, 15, 69,
+			29, 19, 225, 29, 224, 35, 51, 72, 36, 107, 108, 55, 0, 12, 68, 29, 8, 71, 128, 35, 88, 107, 108, 50, 0, 11, 67, 8, 236, 212,
+			108, 101, 36, 57, 91, 0, 0, 11, 67, 197, 36, 64, 81, 39, 88, 35, 51, 0, 13, 68, 193, 71, 243, 68, 49, 36, 91, 65, 37, 51,
+			0, 11, 67, 138, 8, 147, 84, 36, 50, 40, 89, 0, 11, 67, 133, 18, 147, 107, 36, 51, 47, 89, 0, 17, 69, 125, 145, 209, 110, 16,
+			65, 39, 19, 108, 51, 36, 83, 36, 12, 0, 17, 69, 125, 33, 243, 62, 16, 65, 39, 88, 108, 57, 36, 72, 36, 12, 0, 10, 67, 101,
+			4, 64, 39, 12, 88, 51, 0, 11, 67, 53, 4, 64, 107, 35, 88, 35, 51, 0, 21, 71, 41, 24, 138, 79, 12, 211, 124, 47, 36, 51,
+			39, 47, 36, 89, 49, 37, 89, 65, 0, 15, 70, 31, 52, 162, 196, 119, 192, 37, 88, 39, 81, 108, 65, 0, 12, 68, 29, 39, 243, 68,
+			36, 88, 65, 37, 51, 0, 15, 69, 29, 18, 143, 28, 240, 36, 51, 47, 36, 72, 108, 72, 0, 10, 67, 9, 4, 64, 108, 88, 35, 51,
+			0, 0, 17, 70, 183, 56, 10, 32, 119, 128, 48, 36, 57, 50, 47, 71, 108, 55, 0, 10, 67, 130, 28, 192, 50, 35, 107, 57, 0, 20,
+			70, 125, 50, 159, 123, 1, 202, 65, 39, 89, 47, 35, 65, 55, 35, 49, 108, 47, 0, 17, 69, 113, 231, 207, 30, 0, 104, 17, 35, 55,
+			35, 65, 72, 108, 50, 0, 13, 68, 70, 35, 240, 204, 51, 40, 72, 35, 49, 37, 0, 13, 68, 61, 24, 179, 80, 72, 35, 51, 84, 37,
+			91, 0, 13, 68, 41, 231, 243, 64, 47, 36, 55, 65, 37, 88, 0, 14, 68, 32, 242, 145, 204, 71, 35, 72, 47, 35, 51, 37, 0, 21,
+			70, 32, 212, 71, 121, 252, 202, 71, 35, 107, 51, 39, 55, 65, 36, 57, 57, 36, 47, 0, 17, 70, 29, 103, 205, 120, 119, 128, 36, 88,
+			65, 36, 107, 55, 108, 55, 0, 10, 67, 28, 193, 210, 36, 75, 108, 88, 0, 0, 11, 67, 124, 232, 145, 65, 35, 101, 39, 51, 0, 14,
+			69, 108, 124, 10, 137, 16, 83, 108, 49, 47, 39, 51, 0, 19, 70, 76, 167, 207, 204, 248, 64, 89, 36, 47, 35, 65, 72, 37, 72, 36,
+			12, 0, 11, 67, 68, 168, 145, 51, 39, 47, 39, 51, 0, 10, 67, 57, 229, 192, 101, 36, 55, 47, 0, 14, 67, 41, 120, 145, 47, 35,
+			47, 35, 84, 84, 39, 51, 0, 14, 68, 40, 116, 243, 76, 6, 47, 35, 89, 4, 37, 89, 0, 19, 70, 34, 3, 209, 29, 241, 223, 71,
+			35, 50, 72, 35, 51, 36, 65, 108, 65, 0, 11, 67, 33, 8, 145, 71, 39, 88, 40, 51, 0, 17, 69, 32, 244, 202, 137, 16, 71, 36,
+			72, 35, 89, 47, 40, 51, 36, 0, 20, 71, 29, 59, 81, 124, 114, 179, 60, 36, 89, 48, 36, 51, 65, 108, 47, 37, 72, 0, 0, 16,
+			70, 206, 40, 34, 123, 50, 128, 57, 39, 50, 39, 55, 37, 47, 0, 10, 67, 206, 36, 98, 57, 39, 51, 39, 0, 13, 68, 197, 72, 51,
+			72, 81, 36, 91, 50, 37, 88, 0, 20, 71, 192, 116, 78, 30, 3, 7, 40, 49, 108, 51, 101, 108, 50, 36, 75, 108, 47, 0, 12, 67,
+			186, 3, 212, 76, 36, 50, 72, 36, 91, 0, 11, 67, 181, 20, 98, 48, 39, 51, 51, 40, 0, 14, 68, 125, 145, 226, 88, 65, 39, 19,
+			108, 84, 36, 88, 0, 17, 70, 77, 244, 226, 131, 50, 128, 89, 35, 65, 89, 39, 50, 37, 47, 0, 15, 69, 69, 39, 224, 30, 32, 51,
+			35, 88, 65, 50, 108, 84, 0, 15, 69, 61, 17, 226, 205, 64, 72, 35, 51, 108, 84, 37, 91, 0, 14, 67, 41, 156, 212, 47, 35, 19,
+			35, 57, 57, 39, 91, 0, 18, 70, 33, 225, 199, 83, 1, 222, 71, 36, 55, 108, 36, 91, 49, 108, 55, 0, 12, 67, 33, 17, 243, 71,
+			35, 51, 108, 57, 36, 0, 16, 69, 28, 226, 145, 137, 64, 35, 101, 47, 35, 51, 84, 35, 91, 0, 16, 70, 28, 168, 173, 205, 50, 128,
+			39, 47, 39, 48, 37, 89, 47, 0, 0, 14, 68, 181, 236, 226, 68, 48, 39, 55, 37, 84, 36, 51, 0, 14, 68, 131, 49, 226, 68, 50,
+			35, 57, 108, 84, 35, 51, 0, 13, 68, 128, 227, 51, 68, 50, 35, 101, 75, 37, 51, 0, 13, 68, 128, 120, 136, 68, 50, 108, 84, 71,
+			35, 51, 0, 17, 70, 127, 52, 79, 29, 241, 207, 65, 37, 51, 72, 108, 65, 108, 72, 0, 14, 68, 125, 65, 226, 68, 65, 39, 91, 108,
+			84, 36, 51, 0, 18, 70, 125, 33, 205, 124, 120, 0, 65, 39, 88, 108, 107, 36, 65, 108, 50, 0, 14, 68, 124, 209, 226, 68, 65, 39,
+			107, 108, 84, 36, 51, 0, 16, 70, 124, 116, 199, 190, 36, 64, 65, 108, 89, 108, 90, 39, 51, 0, 14, 67, 124, 68, 211, 65, 39, 19,
+			35, 89, 89, 36, 89, 0, 16, 69, 109, 28, 7, 129, 48, 83, 36, 51, 36, 49, 108, 50, 89, 0, 15, 69, 101, 243, 202, 30, 80, 39,
+			65, 72, 35, 47, 35, 50, 0, 14, 68, 63, 51, 226, 68, 72, 37, 72, 36, 84, 35, 51, 0, 12, 67, 33, 18, 23, 71, 35, 51, 71,
+			35, 47, 0, 14, 69, 29, 88, 158, 30, 80, 39, 89, 40, 55, 35, 50, 0, 17, 70, 29, 50, 176, 32, 116, 64, 36, 89, 47, 36, 49,
+			71, 108, 51, 0, 19, 70, 28, 215, 207, 182, 1, 225, 35, 107, 65, 35, 72, 48, 35, 50, 108, 107, 0, 0, 19, 70, 182, 36, 79, 133,
+			193, 224, 48, 40, 51, 72, 36, 107, 104, 17, 108, 50, 0, 16, 68, 180, 244, 115, 80, 48, 36, 72, 35, 51, 37, 57, 35, 91, 0, 20,
+			71, 131, 49, 224, 61, 18, 135, 120, 50, 36, 108, 50, 72, 36, 51, 47, 108, 55, 0, 19, 70, 130, 34, 7, 139, 17, 224, 50, 39, 12,
+			71, 108, 84, 36, 81, 108, 50, 0, 16, 70, 127, 51, 162, 29, 28, 192, 65, 36, 57, 101, 108, 51, 37, 0, 14, 68, 126, 8, 71, 204,
+			65, 36, 50, 107, 108, 57, 36, 0, 15, 69, 79, 55, 179, 194, 0, 89, 37, 55, 37, 49, 39, 50, 0, 19, 70, 74, 3, 199, 129, 241,
+			224, 88, 36, 50, 72, 108, 50, 36, 65, 108, 50, 0, 19, 70, 74, 3, 199, 128, 161, 224, 88, 36, 50, 72, 108, 50, 36, 47, 108, 50,
+			0, 19, 70, 62, 209, 209, 41, 241, 224, 72, 36, 48, 108, 51, 47, 36, 65, 108, 50, 0, 14, 69, 62, 34, 30, 206, 0, 72, 40, 71,
+			55, 37, 50, 0, 13, 68, 58, 33, 225, 80, 6, 101, 108, 107, 36, 91, 0, 17, 70, 48, 119, 136, 29, 60, 192, 75, 108, 55, 36, 71,
+			108, 89, 37, 0, 20, 70, 33, 36, 113, 41, 28, 192, 6, 71, 39, 88, 39, 51, 81, 47, 35, 51, 37, 0, 14, 69, 29, 76, 32, 29,
+			32, 35, 91, 49, 50, 108, 88, 0, 19, 70, 29, 19, 243, 34, 21, 10, 39, 51, 72, 37, 71, 36, 107, 36, 91, 47, 0, 0, 16, 69,
+			197, 19, 199, 137, 16, 81, 36, 51, 72, 108, 84, 35, 51, 0, 11, 67, 192, 241, 240, 49, 39, 72, 108, 49, 0, 18, 70, 137, 225, 207,
+			205, 252, 209, 84, 36, 55, 108, 72, 37, 65, 37, 51, 0, 14, 67, 125, 178, 141, 65, 39, 83, 35, 47, 47, 36, 107, 0, 17, 69, 76,
+			226, 177, 65, 16, 89, 35, 101, 47, 81, 39, 88, 35, 51, 0, 16, 69, 68, 204, 211, 41, 16, 51, 36, 75, 37, 89, 47, 36, 51, 0,
+			16, 69, 61, 44, 223, 41, 16, 72, 39, 88, 37, 65, 36, 47, 51, 0, 16, 70, 32, 116, 91, 207, 4, 192, 71, 108, 51, 83, 37, 49,
+			89, 0, 11, 67, 29, 23, 240, 39, 51, 65, 35, 49, 0, 0, 20, 71, 182, 36, 81, 28, 204, 199, 128, 48, 40, 51, 51, 108, 75, 37,
+			57, 108, 50, 0, 13, 68, 181, 24, 179, 72, 48, 35, 51, 84, 37, 88, 0, 20, 71, 127, 56, 95, 30, 2, 135, 128, 65, 37, 107, 65,
+			108, 50, 36, 47, 108, 50, 0, 21, 71, 121, 242, 17, 76, 120, 7, 128, 55, 35, 65, 71, 35, 51, 89, 108, 50, 108, 50, 0, 11, 67,
+			77, 242, 128, 6, 89, 35, 65, 47, 0, 24, 72, 61, 50, 162, 68, 119, 153, 125, 224, 72, 35, 89, 47, 40, 51, 39, 55, 10, 35, 65,
+			35, 55, 0, 17, 70, 61, 20, 162, 62, 36, 128, 72, 35, 51, 88, 39, 72, 40, 88, 0, 17, 70, 57, 19, 226, 71, 52, 128, 101, 39,
+			51, 72, 39, 51, 37, 88, 0, 21, 71, 49, 164, 71, 111, 51, 199, 128, 75, 39, 104, 17, 51, 108, 83, 37, 72, 108, 50, 0, 15, 69,
+			48, 116, 98, 193, 64, 75, 108, 51, 40, 49, 36, 91, 0, 21, 71, 43, 8, 34, 122, 252, 211, 40, 47, 36, 49, 50, 39, 55, 39, 90,
+			37, 89, 47, 0, 19, 71, 35, 52, 202, 194, 33, 179, 40, 71, 37, 89, 47, 49, 40, 37, 12, 47, 0, 20, 71, 29, 243, 199, 61, 20,
+			199, 128, 36, 65, 72, 108, 72, 51, 35, 89, 108, 50, 0, 0, 17, 70, 133, 252, 224, 50, 36, 64, 107, 35, 65, 37, 50, 75, 40, 51,
+			0, 17, 70, 133, 248, 160, 50, 36, 64, 107, 35, 65, 40, 50, 75, 40, 51, 0, 18, 70, 131, 49, 226, 68, 120, 0, 50, 37, 57, 108,
+			84, 35, 51, 108, 50, 0, 17, 70, 127, 55, 179, 124, 164, 64, 65, 37, 55, 37, 65, 36, 47, 51, 0, 13, 68, 126, 183, 135, 192, 65,
+			35, 55, 55, 108, 49, 0, 10, 67, 77, 26, 192, 89, 36, 51, 51, 0, 11, 67, 45, 248, 143, 89, 35, 65, 40, 72, 0, 12, 68, 42,
+			36, 179, 100, 47, 39, 88, 37, 19, 0, 19, 70, 41, 17, 226, 68, 168, 0, 47, 36, 51, 108, 84, 36, 51, 47, 35, 50, 0, 16, 69,
+			33, 21, 7, 137, 48, 71, 35, 51, 91, 108, 84, 39, 89, 0, 18, 70, 29, 50, 145, 28, 168, 147, 36, 89, 47, 36, 51, 108, 47, 40,
+			89, 0, 21, 71, 29, 24, 160, 63, 8, 7, 68, 35, 51, 84, 35, 50, 72, 49, 36, 50, 108, 51, 0, 17, 70, 9, 226, 179, 124, 164,
+			64, 108, 55, 47, 37, 65, 36, 47, 51, 0, 0, 13, 68, 137, 226, 135, 188, 84, 39, 55, 47, 108, 90, 0, 16, 68, 125, 50, 141, 32,
+			65, 39, 89, 47, 35, 107, 35, 71, 71, 0, 15, 68, 114, 36, 95, 200, 104, 17, 39, 51, 65, 36, 57, 36, 0, 15, 69, 108, 168, 158,
+			205, 32, 83, 39, 47, 39, 55, 37, 88, 0, 12, 67, 57, 22, 202, 101, 36, 51, 36, 83, 47, 0, 12, 67, 33, 22, 202, 71, 36, 51,
+			35, 83, 47, 0, 15, 69, 29, 236, 30, 205, 32, 35, 55, 49, 39, 55, 37, 88, 0, 16, 69, 9, 17, 223, 181, 32, 108, 51, 108, 65,
+			6, 48, 35, 88, 0, 0, 11, 67, 50, 1, 205, 75, 36, 50, 108, 107, 0, 18, 70, 41, 24, 138, 123, 52, 192, 47, 35, 51, 39, 47,
+			36, 55, 37, 89, 0, 27, 74, 29, 59, 81, 124, 114, 162, 74, 33, 179, 60, 36, 89, 48, 36, 51, 65, 108, 47, 39, 88, 39, 19, 37,
+			72, 0, 0, 14, 67, 207, 10, 242, 6, 57, 36, 49, 49, 36, 57, 36, 0, 16, 70, 183, 52, 98, 123, 52, 128, 48, 37, 51, 39, 55,
+			37, 89, 0, 15, 69, 108, 117, 158, 28, 128, 83, 108, 88, 36, 55, 108, 71, 0, 14, 68, 89, 18, 7, 40, 88, 35, 51, 35, 71, 108,
+			47, 0, 15, 69, 70, 12, 74, 28, 128, 51, 35, 50, 81, 47, 108, 71, 0, 14, 68, 61, 231, 243, 40, 72, 39, 55, 39, 65, 37, 47,
+			0, 0, 16, 69, 192, 241, 223, 207, 0, 49, 39, 72, 108, 65, 57, 36, 49, 0, 15, 69, 132, 124, 72, 71, 16, 107, 108, 81, 71, 35,
+			51, 81, 0, 15, 68, 125, 70, 84, 100, 65, 39, 91, 35, 19, 91, 35, 19, 0, 12, 67, 125, 18, 143, 65, 39, 51, 47, 35, 72, 0,
+			12, 67, 110, 23, 207, 83, 35, 107, 65, 35, 72, 0, 11, 67, 108, 161, 207, 83, 36, 47, 108, 72, 0, 11, 67, 42, 220, 207, 47, 35,
+			48, 37, 72, 0, 19, 65, 20, 6, 35, 55, 36, 83, 36, 4, 107, 35, 65, 88, 36, 88, 37, 51, 0, 0, 10, 67, 182, 36, 74, 48,
+			39, 51, 47, 0, 17, 68, 125, 194, 17, 200, 65, 35, 104, 17, 71, 35, 51, 36, 57, 36, 0, 15, 68, 124, 199, 171, 200, 65, 35, 75,
+			35, 55, 55, 36, 12, 0, 19, 69, 115, 56, 159, 204, 160, 104, 17, 35, 57, 57, 40, 65, 37, 57, 35, 47, 0, 24, 71, 112, 114, 30,
+			204, 168, 71, 204, 104, 17, 108, 71, 36, 55, 37, 57, 35, 47, 107, 108, 57, 36, 0, 18, 70, 79, 8, 158, 29, 28, 210, 89, 36, 49,
+			39, 55, 108, 51, 37, 88, 0, 15, 69, 32, 116, 115, 138, 0, 71, 108, 51, 37, 57, 39, 50, 0, 15, 69, 29, 20, 224, 28, 160, 35,
+			51, 89, 36, 50, 108, 47, 0, 0, 15, 68, 185, 22, 160, 60, 76, 35, 51, 104, 17, 35, 50, 72, 0, 14, 68, 136, 135, 135, 196, 84,
+			36, 71, 6, 55, 108, 81, 0, 24, 73, 48, 252, 207, 29, 226, 135, 79, 52, 192, 75, 35, 72, 37, 72, 39, 47, 47, 35, 89, 37, 89,
+			0, 13, 68, 41, 248, 115, 60, 47, 35, 65, 107, 37, 72, 0, 14, 68, 35, 1, 225, 60, 71, 36, 49, 108, 107, 35, 72, 0, 17, 70,
+			9, 24, 159, 28, 172, 240, 108, 51, 39, 65, 108, 47, 37, 49, 0, 0, 14, 68, 193, 28, 240, 40, 49, 36, 51, 37, 49, 36, 47, 0,
+			16, 70, 180, 116, 71, 75, 50, 128, 48, 108, 51, 108, 88, 37, 47, 0, 10, 67, 126, 36, 243, 65, 40, 89, 108, 0, 19, 69, 125, 161,
+			222, 95, 32, 65, 39, 104, 17, 108, 55, 36, 47, 36, 57, 36, 0, 14, 69, 81, 246, 112, 136, 128, 91, 35, 65, 49, 40, 71, 0, 16,
+			70, 31, 4, 199, 120, 114, 128, 39, 49, 89, 108, 55, 108, 47, 0, 0, 11, 67, 137, 53, 199, 84, 39, 89, 47, 108, 0, 17, 69, 129,
+			252, 226, 124, 240, 50, 36, 65, 37, 57, 40, 65, 35, 72, 0, 11, 67, 126, 20, 199, 65, 35, 107, 89, 108, 0, 11, 67, 81, 148, 71,
+			91, 39, 35, 51, 108, 0, 14, 69, 78, 34, 19, 204, 240, 89, 40, 71, 89, 37, 72, 0, 27, 74, 41, 17, 224, 77, 184, 145, 124, 114,
+			162, 68, 47, 36, 51, 108, 50, 89, 83, 39, 51, 65, 108, 47, 39, 51, 0, 17, 70, 34, 12, 199, 127, 56, 0, 71, 36, 50, 57, 108,
+			65, 37, 50, 0, 25, 73, 29, 236, 10, 70, 39, 226, 42, 36, 64, 36, 55, 36, 49, 47, 36, 51, 39, 65, 39, 47, 39, 51, 0, 11,
+			67, 29, 196, 71, 36, 104, 17, 51, 108, 0, 0, 11, 67, 181, 236, 237, 48, 39, 55, 37, 48, 0, 13, 68, 139, 51, 198, 136, 84, 37,
+			72, 36, 19, 39, 0, 15, 69, 128, 124, 97, 30, 0, 50, 108, 81, 35, 107, 108, 50, 0, 15, 69, 123, 50, 162, 182, 0, 55, 37, 47,
+			39, 48, 39, 50, 0, 16, 69, 77, 244, 224, 204, 160, 89, 35, 65, 89, 39, 50, 37, 47, 0, 14, 68, 73, 19, 237, 204, 88, 35, 51,
+			72, 48, 36, 57, 0, 15, 68, 60, 135, 179, 136, 72, 35, 71, 36, 55, 57, 40, 0, 46, 7, 65, 152, 6, 39, 50, 0, 0, 13, 68,
+			198, 33, 209, 28, 81, 39, 84, 108, 51, 108, 0, 18, 70, 182, 8, 159, 28, 172, 240, 48, 36, 50, 39, 65, 108, 47, 37, 49, 0, 13,
+			68, 124, 241, 209, 28, 65, 39, 72, 108, 51, 108, 0, 18, 70, 61, 17, 223, 28, 172, 240, 72, 36, 51, 108, 65, 108, 47, 37, 49, 0,
+			13, 68, 29, 49, 211, 28, 35, 89, 108, 89, 35, 50, 0, 0, 0, 11, 67, 194, 6, 192, 49, 35, 50, 35, 83, 0, 15, 69, 127, 1,
+			224, 207, 0, 65, 36, 49, 108, 50, 37, 49, 0, 12, 67, 121, 118, 199, 55, 39, 47, 83, 35, 50, 0, 12, 67, 81, 22, 71, 91, 35,
+			51, 19, 35, 50, 0, 20, 71, 78, 43, 81, 78, 40, 51, 192, 89, 40, 48, 36, 51, 89, 39, 50, 37, 49, 0, 10, 67, 77, 230, 192,
+			89, 36, 55, 83, 0, 10, 67, 73, 230, 192, 88, 39, 55, 83, 0, 17, 70, 63, 52, 82, 124, 120, 0, 72, 37, 51, 88, 35, 65, 108,
+			50, 0, 11, 67, 57, 230, 192, 101, 35, 55, 35, 83, 0, 10, 67, 49, 230, 192, 75, 36, 55, 83, 0, 17, 70, 43, 52, 112, 124, 120,
+			0, 47, 37, 51, 49, 35, 65, 108, 50, 0, 11, 67, 41, 230, 192, 47, 35, 55, 35, 83, 0, 17, 70, 40, 116, 95, 192, 120, 0, 47,
+			108, 51, 65, 36, 49, 108, 50, 0, 10, 67, 29, 230, 192, 35, 55, 36, 83, 0, 19, 71, 29, 60, 207, 110, 39, 179, 192, 35, 89, 37,
+			72, 83, 40, 55, 37, 49, 0, 16, 69, 29, 50, 156, 84, 112, 36, 89, 47, 36, 104, 17, 89, 108, 0, 14, 5, 95, 48, 77, 50, 120,
+			65, 37, 55, 57, 40, 50, 0, 0, 17, 69, 197, 236, 240, 190, 0, 81, 36, 55, 37, 49, 39, 90, 36, 50, 0, 11, 67, 193, 236, 237,
+			49, 36, 55, 37, 48, 0, 14, 68, 61, 50, 148, 136, 72, 35, 89, 47, 36, 91, 39, 0, 18, 70, 29, 230, 135, 197, 28, 192, 36, 55,
+			104, 17, 108, 81, 35, 51, 37, 0, 0, 12, 67, 137, 81, 219, 84, 35, 89, 89, 108, 83, 0, 17, 70, 131, 49, 241, 29, 17, 192, 50,
+			37, 57, 108, 81, 108, 51, 108, 0, 14, 67, 126, 39, 155, 65, 39, 6, 35, 55, 55, 36, 83, 0, 11, 67, 61, 177, 217, 72, 36, 83,
+			108, 19, 0, 12, 67, 55, 1, 240, 107, 35, 49, 49, 108, 49, 0, 12, 67, 33, 23, 240, 71, 35, 51, 65, 35, 49, 0, 0, 11, 67,
+			192, 161, 200, 49, 36, 47, 108, 71, 0, 12, 67, 126, 12, 94, 65, 39, 50, 81, 39, 55, 0, 11, 67, 121, 145, 200, 55, 39, 19, 108,
+			71, 0, 12, 67, 86, 3, 222, 89, 35, 50, 72, 35, 55, 0, 11, 67, 71, 1, 200, 51, 36, 49, 108, 71, 0, 11, 67, 63, 52, 158,
+			72, 37, 88, 36, 55, 0, 12, 67, 48, 248, 158, 75, 35, 72, 84, 35, 55, 0, 10, 67, 28, 172, 222, 36, 47, 37, 55, 0, 0, 13,
+			68, 198, 44, 243, 124, 81, 40, 57, 37, 12, 65, 0, 8, 66, 198, 16, 81, 35, 107, 0, 11, 67, 194, 7, 192, 49, 39, 50, 35, 65,
+			0, 12, 67, 186, 27, 161, 76, 35, 107, 76, 35, 107, 0, 12, 67, 181, 20, 225, 48, 35, 51, 89, 36, 12, 0, 12, 67, 137, 17, 203,
+			84, 39, 51, 51, 108, 89, 0, 14, 68, 128, 248, 115, 124, 50, 35, 72, 35, 107, 37, 65, 0, 13, 68, 128, 116, 95, 192, 50, 108, 51,
+			65, 35, 49, 0, 14, 68, 127, 52, 83, 124, 65, 37, 51, 36, 89, 35, 65, 0, 12, 67, 112, 243, 64, 104, 17, 35, 72, 35, 107, 0,
+			11, 67, 85, 152, 161, 89, 35, 19, 84, 36, 0, 13, 68, 63, 56, 115, 124, 72, 36, 57, 107, 37, 65, 0, 14, 68, 42, 39, 179, 124,
+			47, 40, 55, 37, 57, 39, 65, 0, 13, 68, 40, 119, 179, 108, 47, 35, 19, 55, 37, 83, 0, 12, 67, 33, 20, 225, 71, 36, 51, 36,
+			89, 36, 0, 13, 67, 29, 252, 225, 39, 65, 35, 57, 57, 36, 12, 0, 12, 68, 29, 55, 135, 108, 35, 89, 55, 108, 83, 0, 12, 68,
+			28, 195, 71, 108, 36, 75, 107, 108, 83, 0, 0, 14, 68, 197, 226, 34, 120, 81, 39, 55, 39, 71, 40, 55, 0, 11, 67, 194, 231, 128,
+			49, 35, 76, 35, 55, 0, 12, 67, 137, 177, 220, 84, 36, 83, 108, 104, 17, 0, 11, 67, 134, 231, 128, 107, 35, 76, 35, 55, 0, 11,
+			67, 132, 120, 160, 107, 108, 84, 35, 50, 0, 11, 67, 131, 1, 202, 50, 39, 49, 108, 47, 0, 13, 67, 125, 119, 156, 65, 39, 47, 55,
+			35, 104, 17, 0, 14, 67, 124, 248, 160, 65, 39, 72, 35, 84, 84, 35, 50, 0, 14, 67, 113, 33, 220, 104, 17, 35, 88, 88, 108, 104,
+			17, 0, 13, 67, 112, 247, 202, 104, 17, 36, 72, 65, 35, 47, 0, 18, 70, 108, 244, 71, 43, 56, 128, 83, 36, 72, 36, 51, 108, 47,
+			37, 84, 0, 11, 67, 108, 168, 160, 83, 39, 47, 39, 50, 0, 12, 67, 80, 39, 202, 91, 36, 108, 65, 35, 47, 0, 19, 71, 76, 132,
+			179, 182, 43, 94, 136, 89, 35, 71, 88, 37, 48, 39, 55, 39, 0, 12, 67, 56, 247, 202, 101, 36, 72, 65, 35, 47, 0, 11, 67, 35,
+			56, 0, 6, 71, 36, 57, 50, 0, 13, 68, 34, 12, 71, 32, 71, 35, 50, 81, 108, 71, 0, 11, 67, 33, 72, 0, 71, 36, 91, 35,
+			50, 0, 11, 67, 31, 49, 220, 35, 57, 108, 104, 17, 0, 12, 68, 29, 120, 7, 32, 36, 47, 50, 108, 71, 0, 23, 72, 29, 50, 145,
+			28, 171, 243, 76, 160, 36, 89, 47, 36, 51, 108, 47, 36, 90, 37, 89, 47, 0, 12, 68, 29, 50, 135, 188, 36, 89, 47, 108, 90, 0,
+			11, 67, 9, 70, 202, 108, 91, 39, 83, 47, 0, 0, 15, 68, 197, 50, 145, 60, 6, 81, 39, 89, 47, 35, 51, 72, 0, 13, 68, 194,
+			1, 209, 60, 49, 39, 50, 108, 51, 72, 0, 11, 67, 193, 17, 223, 49, 36, 51, 108, 65, 0, 17, 69, 181, 232, 160, 205, 240, 48, 39,
+			55, 39, 50, 37, 57, 39, 65, 0, 12, 67, 137, 20, 240, 84, 36, 51, 36, 89, 49, 0, 14, 68, 134, 44, 210, 132, 107, 39, 84, 36,
+			57, 88, 36, 0, 15, 68, 134, 3, 211, 132, 107, 36, 50, 72, 36, 89, 36, 12, 0, 15, 69, 131, 49, 243, 205, 240, 50, 35, 57, 108,
+			37, 12, 65, 0, 11, 67, 131, 1, 205, 50, 36, 49, 108, 107, 0, 14, 68, 125, 71, 212, 132, 65, 36, 91, 65, 36, 91, 36, 0, 10,
+			67, 80, 120, 64, 91, 108, 12, 107, 0, 15, 69, 74, 3, 200, 29, 176, 88, 35, 50, 72, 71, 108, 83, 0, 16, 69, 58, 36, 98, 181,
+			176, 101, 39, 51, 51, 39, 48, 39, 83, 0, 11, 67, 49, 1, 223, 75, 39, 88, 108, 65, 0, 13, 67, 34, 232, 64, 71, 35, 6, 76,
+			76, 36, 12, 0, 14, 67, 31, 49, 223, 35, 12, 57, 57, 6, 57, 108, 65, 0, 15, 68, 29, 232, 115, 132, 36, 55, 108, 107, 37, 57,
+			36, 12, 0, 12, 68, 28, 211, 199, 44, 36, 107, 72, 108, 89, 0, 14, 68, 28, 136, 51, 132, 35, 71, 50, 37, 57, 36, 12, 0, 0,
+			11, 67, 193, 17, 222, 49, 39, 51, 108, 55, 0, 10, 67, 181, 50, 128, 48, 39, 89, 47, 0, 14, 68, 181, 24, 146, 128, 48, 39, 51,
+			84, 35, 88, 50, 0, 16, 69, 181, 20, 224, 30, 240, 48, 36, 51, 89, 39, 50, 108, 90, 0, 14, 68, 136, 124, 19, 128, 84, 108, 49,
+			6, 89, 35, 50, 0, 13, 67, 125, 164, 72, 65, 35, 104, 17, 51, 36, 71, 0, 15, 68, 113, 71, 135, 112, 104, 17, 36, 91, 55, 108,
+			104, 17, 0, 15, 68, 84, 247, 7, 40, 89, 35, 72, 35, 104, 17, 108, 47, 0, 12, 67, 81, 193, 222, 91, 39, 104, 17, 108, 55, 0,
+			12, 67, 81, 161, 222, 91, 39, 104, 17, 108, 55, 0, 10, 67, 80, 116, 111, 91, 108, 51, 90, 0, 14, 68, 79, 8, 7, 40, 89, 35,
+			49, 35, 50, 108, 47, 0, 12, 67, 73, 161, 222, 88, 39, 104, 17, 108, 55, 0, 14, 68, 53, 49, 207, 40, 107, 36, 89, 108, 72, 35,
+			47, 0, 18, 69, 52, 248, 21, 28, 128, 107, 35, 72, 72, 36, 50, 36, 89, 108, 71, 0, 15, 68, 52, 247, 7, 40, 107, 35, 72, 35,
+			104, 17, 108, 47, 0, 12, 68, 42, 40, 115, 128, 47, 39, 107, 37, 50, 0, 10, 67, 42, 2, 0, 47, 39, 50, 71, 0, 13, 68, 40,
+			119, 243, 128, 47, 35, 19, 65, 37, 50, 0, 14, 68, 33, 236, 199, 40, 71, 35, 55, 37, 57, 35, 47, 0, 16, 69, 32, 244, 112, 28,
+			128, 71, 35, 72, 51, 36, 49, 108, 71, 0, 13, 68, 30, 39, 7, 40, 39, 12, 104, 17, 108, 47, 0, 13, 68, 29, 227, 71, 112, 36,
+			55, 107, 108, 104, 17, 0, 13, 68, 29, 34, 135, 40, 35, 88, 39, 47, 108, 47, 0, 13, 68, 8, 248, 51, 128, 108, 72, 36, 50, 37,
+			50, 0, 0, 11, 67, 198, 20, 64, 81, 39, 107, 35, 51, 0, 15, 69, 182, 37, 8, 71, 16, 48, 40, 91, 71, 35, 51, 81, 0, 17,
+			69, 129, 252, 209, 76, 240, 50, 36, 65, 37, 51, 36, 89, 35, 72, 0, 11, 67, 128, 119, 207, 50, 108, 65, 35, 72, 0, 11, 67, 126,
+			20, 64, 65, 36, 12, 107, 51, 0, 14, 68, 124, 129, 209, 192, 65, 39, 71, 108, 51, 35, 49, 0, 13, 67, 113, 24, 161, 104, 17, 39,
+			51, 84, 36, 12, 0, 12, 67, 83, 56, 97, 91, 36, 57, 107, 36, 12, 0, 12, 67, 81, 151, 161, 91, 39, 19, 55, 36, 12, 0, 12,
+			67, 81, 24, 161, 91, 35, 51, 84, 36, 12, 0, 11, 67, 78, 209, 225, 89, 36, 48, 108, 107, 0, 11, 67, 69, 177, 225, 51, 36, 83,
+			108, 107, 0, 17, 70, 56, 117, 209, 49, 246, 64, 101, 108, 47, 36, 51, 75, 35, 65, 0, 15, 68, 54, 37, 94, 124, 107, 39, 12, 89,
+			36, 55, 35, 65, 0, 11, 67, 42, 5, 0, 47, 35, 50, 36, 91, 0, 15, 69, 41, 17, 219, 207, 0, 47, 36, 51, 108, 83, 37, 49,
+			0, 17, 70, 32, 119, 147, 43, 60, 0, 71, 108, 55, 36, 89, 47, 37, 49, 0, 17, 70, 32, 114, 176, 131, 60, 0, 71, 108, 47, 36,
+			49, 50, 37, 49, 0, 12, 68, 29, 55, 135, 124, 36, 89, 55, 108, 65, 0, 16, 69, 29, 54, 209, 74, 16, 36, 89, 83, 35, 51, 88,
+			36, 12, 0, 13, 68, 28, 247, 7, 124, 36, 72, 104, 17, 108, 65, 0, 0, 15, 69, 194, 2, 135, 192, 160, 49, 39, 50, 47, 108, 49,
+			47, 0, 11, 67, 187, 28, 224, 76, 36, 81, 37, 50, 0, 10, 67, 134, 36, 74, 107, 39, 51, 47, 0, 12, 67, 131, 58, 202, 50, 37,
+			57, 57, 35, 47, 0, 13, 68, 129, 23, 199, 120, 50, 39, 51, 65, 108, 55, 0, 16, 69, 125, 225, 220, 28, 160, 65, 39, 55, 108, 104,
+			17, 108, 47, 0, 14, 67, 125, 52, 74, 65, 35, 89, 36, 51, 51, 35, 47, 0, 18, 69, 124, 212, 224, 28, 160, 65, 39, 107, 35, 89,
+			89, 35, 50, 108, 47, 0, 12, 68, 124, 124, 34, 120, 65, 35, 49, 40, 55, 0, 16, 69, 109, 28, 207, 138, 0, 83, 36, 51, 36, 57,
+			72, 40, 50, 0, 16, 69, 101, 247, 179, 28, 160, 35, 65, 35, 55, 37, 57, 108, 47, 0, 22, 70, 97, 180, 71, 120, 215, 0, 88, 35,
+			83, 35, 51, 39, 55, 107, 35, 104, 17, 104, 17, 0, 15, 69, 81, 18, 176, 28, 160, 91, 39, 51, 47, 49, 108, 47, 0, 15, 69, 77,
+			28, 34, 108, 160, 89, 35, 51, 49, 40, 83, 47, 0, 16, 69, 61, 50, 140, 28, 160, 72, 35, 89, 47, 36, 75, 108, 47, 0, 17, 69,
+			61, 21, 49, 108, 160, 72, 35, 51, 91, 36, 81, 36, 83, 47, 0, 11, 67, 60, 225, 224, 72, 39, 101, 108, 50, 0, 16, 70, 48, 132,
+			71, 207, 55, 128, 75, 36, 71, 51, 108, 37, 55, 0, 11, 67, 43, 8, 160, 47, 36, 49, 40, 50, 0, 14, 67, 40, 252, 224, 47, 35,
+			72, 35, 57, 57, 39, 50, 0, 11, 67, 35, 28, 224, 71, 36, 81, 37, 50, 0, 21, 71, 34, 17, 209, 9, 33, 207, 204, 71, 35, 107,
+			108, 51, 36, 108, 88, 108, 72, 37, 0, 15, 69, 32, 123, 71, 76, 224, 71, 108, 48, 108, 89, 39, 101, 0, 14, 69, 29, 177, 214, 28,
+			160, 36, 83, 108, 88, 108, 47, 0, 14, 68, 29, 17, 208, 120, 6, 35, 51, 108, 88, 36, 55, 0, 12, 68, 28, 231, 135, 120, 36, 101,
+			55, 108, 55, 0, 12, 68, 28, 167, 135, 120, 36, 47, 55, 108, 55, 0, 20, 71, 9, 226, 145, 128, 114, 179, 136, 108, 55, 47, 36, 51,
+			50, 108, 47, 37, 84, 0, 0, 11, 67, 198, 1, 209, 81, 39, 50, 108, 51, 0, 11, 67, 197, 241, 209, 81, 39, 65, 108, 51, 0, 13,
+			67, 194, 1, 209, 49, 36, 50, 6, 108, 12, 51, 0, 11, 67, 193, 241, 209, 49, 39, 65, 108, 51, 0, 14, 68, 186, 27, 161, 132, 76,
+			35, 107, 76, 35, 107, 36, 0, 10, 67, 182, 35, 209, 48, 40, 72, 51, 0, 14, 68, 133, 178, 135, 60, 6, 107, 35, 83, 47, 108, 72,
+			0, 14, 68, 130, 36, 143, 132, 50, 40, 12, 88, 72, 35, 107, 0, 16, 69, 130, 34, 30, 205, 240, 50, 39, 71, 36, 55, 57, 39, 65,
+			0, 20, 70, 124, 168, 7, 135, 56, 64, 65, 39, 47, 35, 50, 108, 107, 37, 57, 36, 12, 0, 11, 67, 113, 53, 192, 104, 17, 36, 89,
+			47, 0, 18, 70, 104, 129, 209, 70, 34, 0, 104, 17, 39, 71, 108, 51, 51, 40, 71, 0, 14, 68, 79, 52, 143, 132, 6, 89, 37, 88,
+			72, 35, 107, 0, 17, 70, 74, 20, 78, 137, 19, 192, 88, 35, 107, 51, 101, 39, 51, 72, 0, 15, 68, 62, 39, 173, 132, 72, 39, 55,
+			35, 48, 48, 36, 12, 0, 20, 70, 60, 226, 145, 34, 232, 64, 72, 39, 101, 47, 35, 51, 71, 35, 76, 76, 36, 0, 11, 67, 49, 182,
+			81, 75, 35, 83, 35, 51, 0, 15, 68, 41, 147, 243, 132, 47, 35, 19, 72, 37, 57, 36, 12, 0, 18, 70, 40, 164, 71, 193, 19, 192,
+			47, 36, 47, 51, 108, 49, 39, 51, 72, 0, 12, 68, 29, 50, 135, 60, 39, 89, 47, 108, 72, 0, 12, 68, 29, 21, 7, 60, 36, 51,
+			91, 108, 72, 0, 18, 70, 28, 241, 224, 80, 248, 64, 35, 72, 108, 50, 35, 91, 39, 72, 36, 0, 17, 70, 28, 232, 135, 131, 56, 64,
+			36, 101, 84, 108, 50, 37, 57, 36, 0, 0, 11, 67, 206, 36, 84, 57, 40, 51, 36, 91, 0, 11, 67, 194, 36, 84, 49, 40, 51, 39,
+			91, 0, 13, 68, 193, 23, 199, 128, 49, 36, 51, 65, 108, 50, 0, 12, 67, 187, 10, 212, 76, 35, 49, 49, 39, 91, 0, 13, 68, 185,
+			71, 199, 128, 76, 35, 91, 65, 108, 50, 0, 14, 68, 182, 12, 98, 128, 48, 35, 50, 81, 40, 35, 50, 0, 12, 67, 181, 20, 212, 48,
+			39, 51, 89, 36, 91, 0, 13, 68, 136, 116, 83, 40, 84, 108, 51, 35, 89, 47, 0, 14, 68, 127, 55, 179, 128, 65, 37, 57, 36, 55,
+			37, 50, 0, 13, 68, 126, 23, 199, 128, 65, 36, 107, 65, 108, 50, 0, 19, 70, 125, 152, 34, 204, 114, 128, 65, 35, 19, 50, 35, 84,
+			37, 57, 108, 47, 0, 14, 68, 125, 119, 243, 128, 65, 39, 47, 65, 35, 36, 50, 0, 19, 70, 125, 49, 200, 112, 114, 128, 65, 39, 89,
+			108, 71, 36, 104, 17, 108, 47, 0, 18, 70, 124, 129, 207, 120, 114, 128, 65, 39, 71, 108, 72, 36, 55, 108, 47, 0, 18, 70, 124, 129,
+			205, 44, 114, 128, 65, 39, 71, 108, 107, 36, 89, 108, 47, 0, 13, 68, 110, 3, 7, 128, 83, 36, 50, 75, 108, 50, 0, 14, 68, 105,
+			231, 199, 128, 104, 17, 36, 55, 65, 108, 50, 0, 17, 70, 100, 119, 179, 50, 1, 200, 108, 55, 37, 75, 36, 50, 108, 71, 0, 13, 68,
+			80, 124, 211, 40, 91, 108, 57, 36, 89, 47, 0, 13, 68, 77, 28, 98, 128, 89, 39, 51, 81, 40, 50, 0, 14, 68, 76, 135, 135, 128,
+			89, 35, 71, 35, 55, 108, 50, 0, 14, 68, 73, 17, 217, 40, 88, 36, 51, 108, 19, 35, 47, 0, 15, 69, 69, 60, 202, 29, 224, 51,
+			36, 89, 37, 47, 108, 55, 0, 12, 68, 68, 124, 34, 128, 51, 108, 49, 39, 50, 0, 13, 68, 61, 23, 199, 128, 72, 35, 51, 65, 108,
+			50, 0, 11, 67, 58, 36, 84, 101, 39, 51, 36, 91, 0, 16, 68, 45, 199, 179, 128, 89, 35, 104, 17, 35, 55, 36, 57, 50, 0, 12,
+			67, 41, 180, 84, 47, 35, 83, 51, 36, 91, 0, 13, 68, 41, 178, 135, 128, 47, 35, 83, 47, 108, 50, 0, 18, 70, 40, 241, 209, 192,
+			114, 128, 47, 35, 72, 108, 51, 39, 49, 108, 47, 0, 14, 68, 35, 1, 209, 40, 71, 36, 49, 108, 51, 35, 47, 0, 13, 68, 33, 23,
+			179, 128, 71, 36, 51, 55, 37, 50, 0, 15, 69, 33, 22, 238, 29, 224, 71, 35, 51, 83, 76, 108, 55, 0, 11, 67, 32, 248, 179, 71,
+			35, 72, 84, 37, 0, 12, 68, 31, 2, 135, 128, 36, 49, 47, 108, 50, 0, 14, 68, 30, 39, 179, 128, 35, 84, 84, 35, 55, 37, 50,
+			0, 12, 68, 29, 227, 243, 128, 39, 72, 72, 37, 50, 0, 14, 69, 29, 55, 199, 25, 224, 36, 89, 65, 108, 37, 55, 0, 13, 68, 29,
+			49, 209, 40, 36, 89, 108, 51, 35, 47, 0, 13, 68, 28, 167, 7, 128, 36, 47, 104, 17, 108, 50, 0, 14, 69, 28, 161, 224, 29, 224,
+			36, 47, 108, 50, 108, 55, 0, 12, 68, 11, 60, 34, 128, 108, 57, 49, 39, 50, 0, 12, 68, 11, 51, 243, 128, 108, 57, 72, 37, 50,
+			0, 0, 15, 69, 197, 19, 200, 28, 240, 81, 36, 51, 72, 71, 108, 72, 0, 16, 69, 197, 1, 209, 62, 16, 81, 39, 88, 108, 51, 72,
+			36, 12, 0, 13, 68, 193, 19, 199, 68, 49, 36, 51, 72, 108, 51, 0, 16, 69, 188, 120, 34, 206, 16, 90, 108, 50, 84, 37, 57, 36,
+			12, 0, 12, 67, 185, 28, 19, 76, 35, 51, 49, 35, 89, 0, 14, 68, 131, 8, 155, 68, 50, 36, 49, 40, 83, 35, 51, 0, 18, 70,
+			127, 52, 77, 79, 56, 0, 65, 37, 51, 107, 39, 89, 36, 57, 50, 0, 20, 71, 123, 50, 17, 29, 236, 210, 124, 55, 37, 71, 36, 51,
+			108, 55, 37, 88, 65, 0, 16, 68, 105, 104, 27, 68, 104, 17, 35, 88, 35, 50, 83, 35, 51, 0, 13, 68, 77, 243, 199, 68, 89, 39,
+			65, 72, 108, 51, 0, 13, 68, 74, 8, 71, 68, 88, 36, 50, 107, 108, 51, 0, 18, 70, 71, 52, 159, 112, 119, 192, 51, 37, 88, 65,
+			35, 104, 17, 108, 65, 0, 14, 68, 70, 36, 159, 68, 51, 40, 88, 65, 35, 51, 51, 0, 20, 70, 65, 236, 222, 125, 19, 225, 88, 35,
+			55, 37, 55, 65, 39, 51, 72, 36, 12, 0, 12, 68, 63, 51, 199, 68, 72, 37, 72, 108, 51, 0, 13, 68, 62, 19, 199, 68, 72, 36,
+			107, 72, 108, 51, 0, 11, 67, 41, 17, 211, 47, 36, 51, 108, 89, 0, 15, 69, 35, 60, 96, 30, 16, 71, 37, 81, 39, 50, 108, 107,
+			0, 10, 67, 34, 44, 19, 71, 39, 49, 89, 0, 14, 68, 34, 17, 207, 68, 71, 35, 107, 108, 72, 39, 51, 0, 13, 68, 33, 19, 199,
+			68, 71, 35, 51, 72, 108, 51, 0, 10, 67, 32, 124, 19, 71, 108, 49, 89, 0, 16, 69, 32, 118, 76, 122, 16, 71, 108, 19, 35, 75,
+			35, 55, 36, 0, 13, 68, 30, 8, 71, 68, 19, 35, 50, 107, 108, 51, 0, 16, 69, 30, 7, 51, 28, 240, 36, 50, 104, 17, 37, 57,
+			108, 72, 0, 16, 70, 29, 225, 211, 120, 119, 192, 39, 55, 36, 89, 55, 108, 65, 0, 12, 68, 29, 136, 71, 68, 36, 88, 107, 108, 51,
+			0, 17, 70, 29, 28, 71, 131, 52, 161, 39, 51, 81, 108, 50, 37, 88, 36, 0, 16, 69, 29, 24, 159, 206, 16, 39, 51, 40, 65, 37,
+			57, 36, 12, 0, 0, 15, 69, 132, 124, 223, 138, 0, 107, 108, 57, 36, 65, 40, 50, 0, 11, 67, 126, 33, 210, 65, 39, 84, 108, 88,
+			0, 15, 68, 126, 7, 22, 204, 65, 39, 50, 104, 17, 35, 88, 37, 0, 17, 69, 77, 27, 81, 76, 160, 89, 35, 51, 48, 35, 51, 35,
+			89, 47, 0, 17, 69, 72, 132, 79, 76, 160, 88, 36, 71, 35, 51, 72, 35, 89, 47, 0, 18, 69, 43, 8, 19, 206, 0, 47, 36, 49,
+			50, 36, 89, 37, 57, 35, 50, 0, 19, 70, 41, 232, 179, 75, 56, 160, 47, 36, 55, 84, 37, 88, 37, 57, 39, 50, 0, 17, 70, 41,
+			23, 243, 128, 119, 128, 47, 36, 51, 65, 37, 50, 108, 55, 0, 19, 70, 41, 18, 7, 128, 172, 224, 47, 36, 51, 36, 71, 108, 50, 47,
+			37, 50, 0, 12, 67, 33, 161, 210, 71, 39, 104, 17, 108, 88, 0, 17, 70, 31, 56, 10, 70, 215, 128, 37, 50, 47, 36, 51, 48, 39,
+			55, 0, 16, 70, 29, 241, 224, 136, 103, 128, 36, 65, 108, 50, 40, 36, 55, 0, 18, 70, 9, 28, 226, 33, 20, 160, 108, 51, 57, 40,
+			71, 35, 51, 88, 35, 0, 17, 70, 9, 27, 199, 128, 172, 224, 108, 51, 90, 108, 50, 47, 37, 50, 0, 0, 16, 69, 197, 225, 243, 61,
+			16, 81, 36, 55, 108, 57, 72, 36, 51, 0, 23, 72, 181, 225, 211, 126, 35, 243, 137, 240, 48, 36, 55, 108, 89, 65, 39, 72, 37, 57,
+			39, 65, 0, 19, 70, 180, 244, 95, 68, 248, 64, 48, 36, 72, 35, 51, 65, 39, 51, 72, 36, 0, 21, 72, 127, 55, 179, 40, 116, 115,
+			73, 240, 65, 37, 55, 37, 47, 108, 51, 37, 88, 65, 0, 15, 67, 125, 197, 209, 65, 39, 104, 17, 35, 47, 47, 35, 51, 0, 15, 67,
+			125, 197, 81, 65, 39, 104, 17, 35, 89, 89, 36, 51, 0, 12, 67, 125, 181, 209, 65, 39, 83, 47, 36, 51, 0, 21, 71, 123, 50, 17,
+			29, 236, 210, 132, 55, 37, 71, 36, 51, 108, 55, 37, 88, 36, 12, 0, 17, 69, 114, 3, 225, 29, 16, 104, 17, 35, 50, 72, 36, 107,
+			108, 51, 0, 11, 67, 102, 5, 81, 39, 50, 89, 39, 51, 0, 16, 69, 80, 164, 78, 29, 16, 91, 39, 47, 39, 51, 101, 108, 51, 0,
+			15, 69, 79, 8, 158, 29, 16, 89, 36, 49, 40, 55, 108, 51, 0, 15, 69, 69, 244, 143, 29, 16, 51, 35, 65, 88, 72, 108, 51, 0,
+			13, 67, 61, 164, 209, 72, 35, 104, 17, 89, 35, 51, 0, 12, 67, 59, 58, 209, 101, 35, 57, 57, 36, 51, 0, 17, 69, 57, 178, 136,
+			29, 16, 101, 36, 83, 83, 35, 47, 71, 108, 51, 0, 16, 69, 33, 21, 10, 29, 16, 71, 36, 51, 36, 91, 47, 108, 51, 0, 16, 69,
+			32, 248, 112, 29, 16, 71, 36, 72, 36, 107, 49, 108, 51, 0, 12, 68, 29, 232, 7, 76, 39, 50, 50, 108, 89, 0, 21, 71, 29, 50,
+			145, 205, 236, 210, 132, 36, 89, 47, 36, 51, 37, 55, 37, 88, 36, 12, 0, 0, 14, 69, 183, 59, 135, 75, 48, 48, 37, 76, 108, 88,
+			37, 0, 12, 67, 134, 215, 179, 107, 35, 48, 35, 55, 37, 0, 21, 71, 133, 248, 177, 122, 34, 51, 128, 107, 36, 65, 39, 81, 39, 55,
+			39, 71, 37, 50, 0, 13, 68, 130, 3, 199, 72, 50, 35, 50, 72, 108, 88, 0, 13, 68, 109, 28, 71, 72, 83, 36, 51, 81, 108, 88,
+			0, 11, 67, 106, 11, 128, 104, 17, 39, 50, 76, 0, 18, 71, 42, 39, 162, 207, 51, 243, 128, 47, 39, 55, 39, 37, 72, 37, 50, 0,
+			10, 67, 41, 251, 64, 47, 36, 65, 48, 0, 13, 67, 41, 200, 179, 47, 35, 104, 17, 35, 84, 37, 0, 11, 67, 41, 18, 0, 47, 39,
+			51, 39, 71, 0, 24, 73, 30, 220, 207, 126, 39, 162, 191, 60, 51, 36, 48, 37, 72, 65, 39, 55, 39, 90, 37, 49, 37, 0, 18, 70,
+			29, 242, 17, 61, 50, 128, 35, 65, 71, 39, 51, 72, 35, 89, 47, 0, 20, 71, 29, 50, 145, 207, 8, 51, 128, 36, 89, 47, 36, 51,
+			37, 49, 50, 37, 50, 0, 0, 15, 68, 197, 24, 177, 68, 81, 39, 51, 51, 39, 81, 39, 51, 0, 14, 68, 193, 252, 211, 68, 49, 39,
+			65, 37, 89, 36, 51, 0, 24, 73, 192, 188, 209, 29, 225, 214, 120, 118, 64, 49, 35, 89, 37, 51, 39, 55, 10, 35, 88, 55, 108, 0,
+			15, 69, 131, 60, 30, 29, 48, 50, 37, 49, 39, 55, 108, 89, 0, 13, 67, 129, 196, 83, 50, 36, 104, 17, 51, 36, 89, 0, 15, 68,
+			127, 58, 211, 68, 65, 39, 57, 35, 89, 89, 35, 51, 0, 14, 68, 125, 1, 240, 68, 65, 39, 88, 108, 49, 36, 51, 0, 15, 68, 76,
+			140, 19, 68, 89, 35, 71, 39, 49, 89, 35, 51, 0, 16, 68, 61, 19, 211, 68, 72, 35, 51, 72, 36, 10, 89, 35, 51, 0, 14, 69,
+			43, 59, 71, 193, 48, 47, 37, 48, 108, 49, 89, 0, 11, 67, 43, 5, 0, 47, 35, 49, 36, 91, 0, 11, 67, 41, 21, 0, 47, 6,
+			39, 51, 91, 0, 16, 70, 40, 116, 98, 124, 116, 64, 47, 108, 51, 39, 65, 108, 51, 0, 14, 69, 31, 52, 72, 29, 48, 36, 57, 51,
+			71, 108, 89, 0, 19, 71, 29, 226, 179, 124, 114, 162, 124, 39, 55, 47, 37, 65, 108, 47, 39, 65, 0, 15, 69, 29, 226, 159, 29, 48,
+			36, 55, 47, 36, 65, 108, 89, 0, 16, 70, 29, 50, 179, 48, 116, 64, 36, 89, 47, 37, 75, 108, 51, 0, 0, 12, 68, 192, 114, 34,
+			204, 49, 108, 71, 39, 57, 0, 16, 69, 183, 52, 98, 30, 0, 48, 36, 57, 51, 39, 84, 108, 50, 0, 12, 67, 133, 28, 82, 107, 35,
+			51, 81, 36, 88, 0, 14, 69, 78, 39, 159, 29, 32, 89, 39, 55, 65, 108, 88, 0, 15, 69, 48, 120, 31, 29, 32, 75, 108, 50, 35,
+			65, 108, 88, 0, 17, 70, 42, 36, 72, 29, 225, 224, 47, 40, 51, 71, 108, 55, 108, 50, 0, 11, 67, 42, 12, 0, 47, 39, 50, 39,
+			49, 0, 16, 69, 35, 49, 219, 194, 0, 71, 37, 35, 83, 49, 35, 50, 89, 0, 16, 69, 34, 212, 79, 29, 32, 71, 36, 48, 35, 51,
+			72, 108, 88, 0, 13, 68, 33, 24, 145, 136, 71, 35, 51, 39, 51, 40, 0, 15, 69, 29, 236, 30, 29, 32, 35, 55, 49, 39, 55, 108,
+			88, 0, 17, 70, 28, 168, 176, 120, 120, 128, 39, 47, 39, 49, 36, 55, 108, 84, 0, 15, 69, 8, 132, 240, 138, 0, 108, 71, 36, 89,
+			49, 40, 50, 0, 0, 19, 70, 193, 28, 211, 42, 38, 209, 49, 36, 51, 37, 89, 47, 39, 83, 36, 51, 0, 15, 68, 124, 244, 107, 76,
+			65, 39, 72, 35, 51, 51, 36, 89, 0, 14, 67, 41, 23, 0, 47, 35, 51, 35, 104, 17, 104, 17, 0, 19, 70, 9, 180, 115, 63, 17,
+			209, 108, 83, 35, 51, 37, 72, 36, 81, 108, 51, 0, 0, 14, 68, 197, 232, 176, 72, 81, 36, 55, 39, 49, 39, 88, 0, 19, 71, 134,
+			39, 135, 194, 35, 135, 128, 107, 39, 55, 108, 49, 40, 101, 108, 50, 0, 11, 67, 129, 51, 128, 50, 39, 89, 35, 101, 0, 12, 67, 65,
+			242, 128, 88, 36, 65, 65, 35, 47, 0, 11, 67, 50, 33, 200, 75, 35, 84, 108, 71, 0, 11, 67, 42, 36, 76, 47, 40, 51, 35, 75,
+			0, 12, 67, 42, 33, 200, 47, 35, 84, 84, 108, 71, 0, 15, 69, 33, 24, 147, 123, 48, 71, 39, 51, 40, 89, 55, 37, 0, 21, 71,
+			32, 244, 71, 121, 39, 199, 128, 71, 35, 72, 51, 39, 88, 88, 35, 65, 108, 50, 0, 11, 67, 31, 49, 200, 35, 57, 57, 108, 71, 0,
+			21, 71, 8, 228, 71, 121, 39, 199, 128, 108, 101, 35, 51, 108, 88, 88, 35, 65, 108, 50, 0, 0, 16, 69, 193, 18, 32, 207, 0, 49,
+			35, 51, 71, 39, 50, 37, 49, 0, 12, 67, 81, 244, 79, 91, 36, 65, 39, 51, 72, 0, 14, 67, 73, 244, 79, 88, 39, 65, 39, 51,
+			51, 39, 72, 0, 12, 68, 29, 19, 7, 100, 36, 51, 75, 108, 19, 0, 0, 14, 69, 128, 124, 222, 138, 0, 50, 108, 57, 55, 39, 50,
+			0, 16, 69, 109, 28, 200, 69, 32, 83, 35, 51, 37, 71, 39, 51, 88, 0, 14, 68, 83, 52, 76, 200, 91, 37, 51, 75, 36, 57, 36,
+			0, 13, 68, 71, 23, 135, 188, 51, 36, 81, 55, 108, 90, 0, 11, 67, 41, 24, 0, 47, 36, 51, 35, 50, 0, 11, 67, 35, 49, 202,
+			71, 35, 57, 108, 47, 0, 13, 69, 31, 56, 146, 206, 0, 36, 39, 88, 37, 50, 0, 20, 71, 29, 50, 153, 60, 115, 240, 80, 36, 89,
+			47, 36, 72, 108, 72, 49, 39, 91, 0, 14, 69, 9, 241, 210, 138, 0, 108, 65, 108, 88, 39, 50, 0, 0, 15, 68, 126, 212, 83, 60,
+			65, 35, 48, 39, 51, 89, 35, 72, 0, 13, 68, 81, 241, 209, 60, 91, 39, 65, 108, 51, 72, 0, 11, 67, 77, 225, 205, 89, 36, 55,
+			108, 107, 0, 0, 14, 68, 204, 228, 91, 40, 57, 35, 101, 51, 39, 83, 47, 0, 15, 68, 193, 236, 199, 40, 49, 39, 55, 55, 37, 57,
+			108, 47, 0, 14, 68, 193, 231, 199, 40, 49, 35, 55, 35, 65, 108, 47, 0, 11, 67, 193, 50, 128, 49, 35, 89, 35, 47, 0, 14, 68,
+			136, 200, 7, 40, 84, 35, 75, 35, 50, 108, 47, 0, 13, 68, 135, 56, 71, 40, 107, 36, 57, 107, 108, 47, 0, 10, 67, 133, 50, 128,
+			107, 35, 89, 47, 0, 14, 67, 127, 6, 72, 65, 39, 49, 35, 19, 19, 35, 71, 0, 14, 69, 126, 40, 10, 30, 240, 65, 39, 50, 47,
+			108, 90, 0, 17, 68, 125, 71, 7, 40, 65, 35, 91, 36, 104, 17, 104, 17, 108, 47, 0, 11, 67, 72, 193, 204, 88, 39, 75, 108, 75,
+			0, 15, 68, 69, 194, 7, 40, 51, 35, 104, 17, 35, 71, 108, 47, 0, 14, 69, 62, 34, 30, 30, 240, 72, 40, 71, 55, 108, 90, 0,
+			10, 67, 42, 36, 72, 47, 40, 51, 71, 0, 14, 68, 33, 24, 143, 40, 71, 39, 51, 40, 72, 35, 47, 0, 23, 72, 29, 60, 207, 193,
+			18, 32, 207, 0, 35, 89, 37, 72, 49, 35, 51, 71, 39, 50, 37, 49, 0, 0, 13, 68, 194, 33, 209, 192, 49, 39, 84, 108, 51, 49,
+			0, 15, 67, 124, 195, 207, 65, 39, 75, 35, 6, 72, 72, 35, 72, 0, 15, 68, 124, 164, 83, 192, 65, 35, 47, 35, 51, 89, 35, 49,
+			0, 18, 70, 108, 124, 209, 108, 124, 19, 83, 108, 57, 36, 51, 83, 108, 49, 89, 0, 15, 69, 33, 24, 7, 68, 240, 71, 36, 51, 50,
+			108, 51, 72, 0, 13, 5, 95, 48, 77, 49, 120, 107, 36, 88, 108, 51, 0, 0, 11, 67, 183, 52, 202, 48, 36, 57, 89, 47, 0, 21,
+			70, 124, 168, 7, 135, 60, 128, 65, 39, 47, 35, 50, 108, 107, 37, 57, 36, 57, 36, 0, 16, 69, 62, 23, 145, 30, 0, 72, 36, 107,
+			55, 39, 51, 108, 50, 0, 10, 67, 42, 36, 202, 47, 39, 89, 47, 0, 11, 67, 41, 28, 0, 6, 47, 35, 51, 49, 0, 16, 69, 34,
+			11, 199, 126, 0, 71, 35, 50, 90, 108, 65, 36, 50, 0, 17, 69, 33, 225, 204, 132, 160, 71, 36, 55, 108, 75, 35, 107, 35, 47, 0,
+			16, 69, 33, 23, 179, 30, 0, 71, 36, 51, 36, 55, 37, 108, 50, 0, 17, 69, 32, 243, 223, 29, 160, 71, 35, 72, 72, 35, 65, 108,
+			104, 17, 0, 0, 10, 67, 197, 65, 192, 81, 39, 91, 108, 0, 10, 67, 196, 241, 192, 81, 36, 72, 108, 0, 10, 67, 129, 65, 192, 50,
+			36, 91, 108, 0, 11, 67, 69, 97, 192, 6, 51, 36, 88, 108, 0, 16, 70, 34, 33, 222, 100, 194, 0, 71, 39, 55, 35, 75, 35, 71,
+			0, 19, 71, 31, 56, 10, 69, 177, 240, 76, 37, 50, 47, 36, 51, 83, 108, 49, 89, 0, 13, 68, 29, 227, 95, 60, 35, 55, 107, 35,
+			65, 72, 0, 0, 7, 66, 206, 32, 57, 40, 0, 19, 70, 182, 36, 85, 32, 118, 128, 48, 40, 51, 89, 35, 71, 71, 108, 104, 17, 0,
+			19, 70, 124, 129, 222, 104, 114, 128, 65, 39, 71, 108, 55, 36, 104, 17, 108, 47, 0, 12, 67, 82, 24, 179, 91, 35, 107, 35, 84, 37,
+			0, 13, 67, 61, 21, 243, 72, 35, 51, 47, 36, 57, 36, 0, 10, 67, 49, 33, 128, 75, 39, 88, 19, 0, 16, 69, 41, 24, 174, 76,
+			128, 47, 35, 51, 39, 76, 35, 89, 71, 0, 15, 69, 29, 54, 224, 28, 192, 36, 89, 83, 36, 50, 108, 75, 0, 14, 65, 24, 6, 57,
+			36, 4, 107, 35, 65, 88, 36, 12, 0, 0, 16, 70, 192, 114, 162, 123, 60, 0, 49, 108, 47, 39, 55, 37, 49, 0, 15, 69, 43, 56,
+			145, 207, 0, 47, 36, 10, 39, 51, 37, 49, 0, 16, 69, 35, 54, 202, 28, 240, 71, 37, 57, 39, 83, 47, 108, 72, 0, 11, 67, 31,
+			53, 135, 36, 57, 88, 35, 50, 0, 11, 67, 29, 168, 135, 36, 104, 17, 84, 108, 0, 7, 65, 156, 6, 36, 50, 0, 0, 20, 70, 181,
+			23, 224, 198, 1, 202, 48, 36, 51, 65, 35, 50, 81, 36, 50, 108, 47, 0, 12, 67, 125, 236, 192, 65, 36, 6, 55, 55, 37, 0, 17,
+			69, 124, 193, 222, 76, 160, 65, 39, 75, 108, 55, 36, 89, 35, 47, 0, 11, 67, 113, 236, 192, 104, 17, 39, 55, 37, 0, 16, 69, 83,
+			4, 79, 30, 0, 91, 36, 49, 35, 51, 72, 108, 50, 0, 15, 69, 77, 230, 207, 30, 0, 89, 36, 55, 83, 72, 108, 50, 0, 17, 69,
+			33, 21, 48, 76, 160, 71, 35, 51, 91, 36, 49, 35, 89, 47, 0, 9, 67, 28, 136, 0, 36, 71, 50, 0, 0, 10, 67, 136, 241, 192,
+			84, 36, 72, 108, 0, 12, 68, 128, 120, 173, 28, 50, 108, 84, 48, 108, 0, 10, 67, 62, 1, 192, 72, 36, 50, 108, 0, 0, 16, 69,
+			133, 252, 212, 199, 48, 107, 35, 65, 37, 91, 36, 81, 37, 0, 11, 67, 127, 49, 243, 65, 37, 57, 108, 57, 0, 16, 69, 61, 19, 138,
+			75, 48, 72, 36, 51, 35, 101, 47, 88, 37, 0, 11, 67, 41, 251, 98, 47, 36, 65, 48, 39, 0, 18, 70, 30, 2, 17, 61, 50, 128,
+			35, 50, 71, 39, 51, 72, 35, 89, 47, 0, 15, 69, 28, 172, 226, 183, 48, 36, 47, 37, 57, 39, 48, 37, 0, 0, 12, 67, 139, 7,
+			135, 84, 39, 49, 35, 55, 108, 0, 13, 67, 125, 151, 135, 65, 39, 19, 35, 55, 55, 108, 0, 16, 69, 120, 124, 224, 111, 0, 55, 108,
+			57, 35, 50, 83, 35, 49, 0, 11, 67, 113, 71, 192, 104, 17, 36, 91, 65, 0, 11, 67, 109, 71, 192, 83, 35, 91, 35, 65, 0, 12,
+			67, 81, 71, 192, 6, 91, 36, 91, 39, 65, 0, 12, 67, 78, 24, 135, 89, 35, 107, 84, 35, 50, 0, 16, 69, 78, 6, 224, 207, 0,
+			89, 35, 50, 83, 39, 50, 37, 49, 0, 15, 69, 35, 51, 223, 83, 0, 71, 37, 72, 65, 36, 91, 49, 0, 11, 67, 33, 71, 192, 71,
+			36, 91, 35, 65, 0, 0, 12, 68, 184, 116, 94, 204, 76, 108, 51, 55, 37, 0, 18, 70, 31, 8, 158, 191, 52, 202, 36, 49, 39, 55,
+			39, 90, 37, 89, 47, 0, 0, 12, 67, 186, 3, 240, 76, 39, 50, 72, 35, 49, 0, 17, 68, 125, 181, 94, 28, 65, 39, 83, 35, 89,
+			89, 35, 55, 35, 50, 0, 12, 67, 125, 161, 240, 65, 39, 104, 17, 108, 49, 0, 10, 67, 100, 116, 159, 108, 88, 36, 65, 0, 12, 67,
+			76, 252, 223, 89, 39, 72, 57, 39, 65, 0, 12, 67, 69, 193, 217, 51, 36, 104, 17, 108, 19, 0, 13, 67, 68, 252, 223, 51, 39, 72,
+			37, 57, 39, 65, 0, 11, 67, 52, 200, 64, 107, 39, 75, 35, 47, 0, 8, 67, 30, 40, 64, 39, 107, 0, 12, 68, 30, 39, 179, 28,
+			39, 55, 37, 57, 108, 0, 13, 68, 29, 88, 158, 28, 39, 89, 40, 55, 35, 50, 0, 0, 12, 67, 184, 168, 158, 76, 35, 47, 84, 35,
+			55, 0, 11, 67, 130, 40, 158, 50, 39, 84, 36, 55, 0, 11, 67, 124, 172, 222, 65, 36, 47, 37, 55, 0, 10, 67, 122, 2, 128, 55,
+			36, 50, 47, 0, 12, 67, 121, 177, 216, 55, 35, 83, 83, 108, 88, 0, 12, 67, 90, 2, 128, 88, 36, 50, 50, 35, 47, 0, 12, 67,
+			78, 2, 128, 89, 39, 50, 50, 35, 47, 0, 14, 67, 69, 194, 128, 51, 36, 104, 17, 104, 17, 35, 47, 0, 14, 67, 61, 194, 128, 72,
+			36, 104, 17, 104, 17, 35, 47, 0, 10, 67, 58, 33, 200, 101, 6, 108, 71, 0, 12, 67, 50, 2, 128, 75, 35, 50, 50, 35, 47, 0,
+			15, 69, 35, 49, 222, 31, 48, 71, 37, 57, 108, 55, 108, 57, 0, 0, 8, 66, 206, 16, 57, 36, 12, 0, 15, 69, 182, 39, 138, 207,
+			0, 48, 39, 55, 36, 47, 37, 49, 0, 11, 67, 181, 24, 161, 48, 35, 90, 40, 107, 0, 12, 67, 125, 180, 207, 65, 39, 83, 89, 36,
+			72, 0, 12, 67, 124, 235, 161, 65, 39, 101, 76, 36, 12, 0, 14, 68, 122, 33, 210, 124, 55, 35, 84, 108, 88, 36, 65, 0, 13, 67,
+			113, 245, 33, 104, 17, 39, 65, 91, 36, 12, 0, 12, 67, 109, 204, 225, 83, 35, 104, 17, 37, 107, 0, 13, 67, 106, 11, 161, 104, 17,
+			39, 50, 76, 36, 12, 0, 11, 67, 81, 231, 192, 91, 35, 55, 35, 65, 0, 14, 68, 70, 35, 243, 124, 51, 39, 72, 37, 57, 39, 65,
+			0, 11, 67, 61, 231, 192, 72, 36, 55, 35, 65, 0, 10, 67, 53, 231, 192, 107, 36, 55, 65, 0, 13, 67, 33, 36, 113, 71, 39, 6,
+			88, 39, 51, 81, 0, 17, 69, 33, 24, 147, 120, 112, 71, 40, 51, 40, 89, 36, 55, 55, 108, 0, 14, 69, 32, 116, 162, 180, 112, 71,
+			108, 88, 40, 48, 108, 0, 13, 69, 30, 43, 74, 207, 0, 39, 48, 47, 37, 49, 0, 10, 67, 29, 231, 192, 35, 55, 35, 65, 0, 13,
+			68, 29, 200, 7, 100, 36, 104, 17, 50, 108, 19, 0, 11, 67, 29, 56, 161, 39, 89, 84, 36, 12, 0, 0, 11, 67, 185, 65, 202, 76,
+			36, 91, 108, 47, 0, 11, 67, 182, 7, 128, 48, 35, 50, 36, 55, 0, 13, 68, 181, 18, 135, 32, 48, 35, 51, 47, 108, 71, 0, 13,
+			68, 129, 75, 115, 120, 50, 35, 91, 48, 37, 55, 0, 11, 67, 126, 231, 128, 65, 35, 76, 35, 55, 0, 15, 68, 124, 130, 144, 120, 65,
+			39, 71, 47, 35, 88, 35, 55, 0, 11, 67, 109, 17, 202, 83, 39, 51, 108, 47, 0, 11, 67, 108, 124, 74, 83, 108, 81, 39, 47, 0,
+			13, 68, 77, 19, 135, 32, 89, 39, 51, 101, 108, 71, 0, 15, 69, 75, 55, 162, 110, 0, 88, 37, 55, 39, 83, 39, 50, 0, 13, 67,
+			49, 17, 202, 75, 39, 51, 19, 6, 35, 47, 0, 14, 68, 41, 17, 226, 120, 47, 36, 51, 108, 84, 36, 55, 0, 14, 68, 33, 71, 7,
+			32, 71, 39, 91, 104, 17, 108, 71, 0, 17, 70, 29, 50, 162, 63, 56, 128, 36, 89, 47, 36, 72, 37, 57, 39, 0, 0, 11, 67, 198,
+			8, 64, 81, 39, 50, 35, 107, 0, 12, 67, 184, 164, 112, 76, 35, 47, 51, 35, 49, 0, 14, 68, 128, 248, 115, 60, 50, 35, 72, 35,
+			107, 37, 72, 0, 14, 67, 125, 151, 159, 65, 39, 19, 35, 55, 55, 36, 65, 0, 13, 68, 125, 86, 98, 60, 65, 35, 89, 19, 40, 72,
+			0, 12, 67, 121, 193, 205, 55, 36, 104, 17, 108, 107, 0, 16, 69, 120, 124, 224, 109, 144, 55, 108, 57, 35, 50, 83, 35, 19, 0, 12,
+			67, 114, 40, 64, 104, 17, 39, 84, 36, 12, 0, 12, 67, 109, 200, 64, 6, 83, 36, 104, 17, 107, 0, 12, 67, 88, 200, 64, 88, 35,
+			75, 75, 36, 12, 0, 15, 68, 85, 226, 51, 132, 89, 39, 55, 71, 37, 57, 36, 12, 0, 12, 67, 83, 55, 159, 91, 36, 57, 55, 35,
+			65, 0, 15, 68, 80, 140, 51, 132, 91, 35, 71, 35, 49, 37, 57, 36, 0, 14, 69, 58, 33, 209, 73, 240, 101, 108, 51, 35, 88, 65,
+			0, 14, 68, 50, 1, 210, 132, 75, 36, 50, 108, 88, 36, 12, 0, 14, 67, 43, 7, 159, 47, 35, 49, 35, 55, 55, 39, 65, 0, 14,
+			68, 34, 1, 200, 132, 71, 35, 50, 108, 71, 36, 12, 0, 18, 70, 32, 119, 205, 42, 33, 192, 71, 108, 65, 39, 107, 47, 35, 84, 108,
+			0, 11, 67, 29, 151, 159, 35, 19, 55, 35, 65, 0, 0, 14, 68, 197, 66, 146, 128, 81, 35, 91, 47, 88, 35, 50, 0, 15, 69, 185,
+			28, 10, 28, 128, 76, 36, 51, 49, 47, 108, 71, 0, 13, 68, 183, 50, 162, 128, 48, 36, 57, 47, 39, 50, 0, 18, 70, 182, 3, 224,
+			206, 37, 0, 48, 35, 50, 72, 50, 37, 57, 40, 91, 0, 15, 68, 137, 53, 243, 128, 84, 35, 89, 35, 47, 36, 57, 50, 0, 10, 67,
+			128, 123, 94, 50, 108, 48, 55, 0, 13, 68, 125, 60, 51, 128, 65, 36, 89, 49, 37, 50, 0, 15, 69, 125, 40, 155, 205, 224, 65, 36,
+			88, 39, 83, 37, 55, 0, 15, 68, 113, 114, 51, 128, 104, 17, 39, 47, 71, 36, 57, 50, 0, 13, 68, 109, 54, 199, 40, 83, 39, 89,
+			83, 108, 47, 0, 11, 67, 108, 172, 222, 83, 36, 47, 37, 55, 0, 13, 68, 101, 103, 135, 40, 35, 88, 39, 55, 108, 47, 0, 15, 68,
+			92, 135, 7, 40, 47, 35, 71, 35, 104, 17, 108, 47, 0, 14, 68, 83, 7, 135, 40, 91, 39, 49, 39, 55, 108, 47, 0, 14, 68, 68,
+			215, 199, 40, 51, 35, 107, 35, 65, 108, 47, 0, 12, 67, 68, 172, 222, 51, 39, 47, 36, 57, 55, 0, 13, 68, 68, 124, 210, 128, 51,
+			108, 57, 88, 35, 50, 0, 14, 68, 61, 22, 115, 128, 72, 35, 51, 36, 57, 50, 36, 0, 14, 68, 61, 19, 7, 40, 72, 35, 51, 35,
+			75, 108, 47, 0, 14, 68, 57, 66, 146, 128, 101, 36, 91, 47, 88, 35, 50, 0, 14, 68, 56, 247, 199, 40, 101, 35, 72, 35, 65, 108,
+			47, 0, 14, 68, 53, 247, 135, 40, 107, 35, 65, 35, 55, 108, 47, 0, 14, 68, 49, 40, 135, 40, 75, 39, 88, 35, 84, 108, 47, 0,
+			15, 69, 48, 124, 10, 28, 128, 75, 108, 49, 36, 47, 108, 71, 0, 16, 68, 46, 8, 179, 40, 89, 35, 50, 35, 84, 37, 57, 35, 47,
+			0, 14, 68, 35, 56, 7, 40, 71, 35, 57, 36, 50, 108, 47, 0, 12, 67, 34, 3, 30, 71, 39, 50, 75, 39, 55, 0, 14, 68, 33,
+			28, 7, 40, 71, 35, 51, 35, 49, 108, 47, 0, 12, 68, 29, 66, 162, 128, 35, 91, 47, 39, 50, 0, 18, 70, 29, 66, 161, 29, 19,
+			243, 36, 91, 47, 36, 107, 108, 51, 72, 37, 0, 12, 68, 29, 60, 7, 40, 36, 89, 49, 108, 47, 0, 12, 68, 29, 50, 7, 40, 36,
+			89, 71, 108, 47, 0, 10, 67, 29, 34, 128, 35, 88, 35, 47, 0, 0, 17, 70, 198, 8, 147, 43, 60, 0, 81, 36, 50, 39, 89, 47,
+			37, 49, 0, 11, 67, 197, 65, 207, 81, 39, 91, 108, 72, 0, 10, 67, 186, 20, 64, 76, 36, 107, 51, 0, 13, 68, 125, 82, 7, 52,
+			65, 36, 89, 71, 108, 107, 0, 11, 67, 111, 4, 64, 6, 83, 36, 49, 51, 0, 13, 67, 105, 40, 161, 104, 17, 35, 88, 84, 36, 12,
+			0, 10, 67, 81, 148, 64, 91, 36, 19, 51, 0, 10, 67, 79, 4, 64, 89, 39, 49, 51, 0, 11, 67, 69, 40, 161, 51, 36, 88, 84,
+			36, 0, 15, 69, 62, 37, 51, 74, 16, 72, 40, 91, 37, 88, 36, 12, 0, 12, 67, 58, 215, 161, 101, 36, 48, 36, 55, 36, 0, 14,
+			67, 45, 252, 225, 89, 39, 65, 35, 57, 57, 36, 12, 0, 16, 70, 29, 122, 234, 120, 118, 64, 36, 47, 47, 36, 55, 108, 19, 0, 12,
+			68, 29, 87, 135, 52, 36, 89, 55, 108, 107, 0, 22, 72, 11, 2, 162, 127, 56, 146, 206, 0, 108, 49, 47, 39, 65, 37, 57, 39, 88,
+			37, 50, 0, 15, 5, 95, 48, 77, 51, 120, 65, 37, 55, 57, 108, 51, 72, 0, 0, 12, 67, 181, 23, 160, 48, 36, 51, 55, 39, 50,
+			0, 13, 68, 125, 182, 98, 120, 65, 35, 83, 19, 40, 55, 0, 15, 67, 125, 152, 156, 65, 39, 19, 35, 84, 84, 35, 104, 17, 0, 10,
+			67, 125, 76, 192, 65, 35, 91, 57, 0, 13, 68, 124, 210, 135, 48, 65, 39, 107, 47, 108, 75, 0, 15, 69, 124, 129, 222, 28, 160, 65,
+			39, 71, 108, 55, 108, 47, 0, 15, 68, 113, 17, 226, 120, 104, 17, 35, 51, 108, 84, 39, 55, 0, 15, 69, 110, 8, 158, 204, 160, 83,
+			39, 50, 39, 55, 37, 47, 0, 14, 69, 83, 52, 79, 30, 0, 91, 37, 51, 72, 108, 50, 0, 14, 68, 60, 120, 51, 120, 72, 108, 50,
+			37, 57, 36, 55, 0, 11, 67, 56, 113, 160, 101, 108, 19, 36, 50, 0, 12, 67, 45, 24, 138, 89, 36, 51, 84, 35, 47, 0, 17, 70,
+			41, 23, 226, 111, 55, 128, 47, 36, 51, 65, 39, 83, 37, 55, 0, 14, 67, 33, 243, 202, 71, 36, 65, 39, 72, 72, 35, 47, 0, 12,
+			67, 32, 244, 202, 71, 36, 72, 35, 89, 47, 0, 14, 69, 31, 49, 222, 28, 160, 36, 57, 108, 55, 108, 47, 0, 15, 69, 29, 226, 155,
+			28, 160, 36, 55, 47, 36, 83, 108, 47, 0, 12, 68, 29, 76, 34, 32, 39, 91, 49, 40, 71, 0, 16, 70, 29, 52, 71, 111, 55, 128,
+			36, 89, 51, 108, 83, 37, 55, 0, 10, 67, 28, 252, 202, 36, 72, 37, 47, 0, 14, 69, 28, 168, 159, 28, 160, 39, 47, 39, 65, 108,
+			47, 0, 0, 14, 68, 197, 232, 158, 132, 81, 39, 55, 40, 55, 36, 12, 0, 18, 70, 188, 104, 138, 194, 12, 240, 90, 36, 39, 47, 36,
+			49, 50, 37, 49, 0, 11, 67, 187, 1, 209, 76, 36, 49, 108, 51, 0, 17, 70, 180, 120, 10, 137, 252, 223, 48, 108, 50, 47, 39, 65,
+			37, 65, 0, 15, 68, 137, 232, 158, 132, 84, 36, 55, 84, 36, 55, 36, 12, 0, 18, 70, 127, 1, 224, 205, 40, 64, 65, 36, 49, 108,
+			50, 37, 88, 36, 12, 0, 15, 68, 126, 4, 158, 132, 65, 35, 50, 88, 35, 55, 36, 12, 0, 21, 70, 126, 2, 152, 68, 172, 223, 65,
+			39, 50, 47, 35, 88, 36, 51, 36, 47, 37, 65, 0, 12, 67, 125, 103, 209, 65, 39, 88, 65, 35, 51, 0, 14, 68, 125, 65, 200, 132,
+			65, 39, 91, 108, 71, 36, 107, 0, 19, 70, 124, 244, 96, 205, 40, 64, 65, 39, 72, 36, 51, 50, 37, 88, 36, 12, 0, 16, 68, 113,
+			232, 8, 132, 104, 17, 39, 55, 39, 50, 71, 36, 12, 0, 12, 67, 85, 177, 209, 89, 35, 83, 83, 108, 51, 0, 11, 67, 83, 1, 209,
+			91, 36, 49, 108, 51, 0, 15, 68, 77, 228, 222, 132, 89, 36, 55, 89, 36, 55, 36, 12, 0, 14, 68, 77, 24, 7, 60, 89, 36, 51,
+			36, 50, 108, 72, 0, 15, 68, 73, 228, 158, 132, 88, 36, 55, 88, 36, 55, 36, 12, 0, 16, 68, 53, 193, 200, 132, 107, 35, 104, 17,
+			104, 17, 108, 71, 36, 0, 12, 67, 53, 177, 209, 107, 35, 83, 83, 108, 51, 0, 15, 68, 42, 37, 198, 132, 47, 39, 12, 47, 36, 19,
+			36, 12, 0, 11, 67, 41, 24, 145, 47, 36, 51, 39, 51, 0, 11, 67, 34, 17, 209, 71, 35, 107, 108, 51, 0, 13, 68, 34, 7, 135,
+			60, 71, 39, 50, 55, 108, 72, 0, 17, 69, 33, 28, 30, 205, 240, 71, 36, 51, 49, 36, 55, 57, 39, 65, 0, 12, 68, 30, 39, 135,
+			60, 39, 12, 55, 108, 72, 0, 12, 68, 28, 214, 199, 60, 35, 107, 83, 108, 72, 0, 0, 11, 67, 185, 248, 148, 76, 35, 65, 40, 91,
+			0, 14, 68, 182, 12, 70, 128, 48, 35, 50, 81, 40, 35, 50, 0, 11, 67, 128, 120, 148, 50, 108, 84, 36, 91, 0, 18, 70, 127, 1,
+			212, 108, 114, 128, 65, 39, 49, 108, 91, 36, 83, 108, 47, 0, 13, 68, 109, 22, 98, 128, 83, 36, 51, 19, 39, 50, 0, 13, 68, 73,
+			230, 243, 128, 88, 39, 55, 83, 37, 50, 0, 13, 68, 61, 230, 243, 128, 72, 39, 55, 83, 37, 50, 0, 11, 67, 59, 52, 148, 101, 37,
+			88, 36, 91, 0, 19, 70, 52, 117, 145, 50, 33, 200, 107, 108, 88, 36, 51, 75, 35, 84, 108, 71, 0, 14, 68, 33, 28, 84, 40, 71,
+			35, 51, 81, 35, 91, 47, 0, 14, 68, 33, 19, 19, 40, 71, 35, 51, 75, 35, 89, 47, 0, 15, 69, 32, 129, 211, 205, 224, 71, 35,
+			71, 108, 89, 37, 55, 0, 10, 67, 32, 116, 179, 71, 108, 88, 37, 0, 7, 66, 11, 48, 108, 57, 0, 18, 70, 10, 12, 94, 137, 188,
+			222, 108, 50, 81, 36, 55, 39, 83, 37, 55, 0, 0, 15, 68, 197, 28, 207, 68, 81, 36, 51, 36, 57, 72, 36, 51, 0, 23, 72, 183,
+			52, 95, 68, 115, 243, 30, 0, 48, 37, 51, 65, 39, 51, 108, 72, 37, 57, 108, 50, 0, 23, 72, 182, 4, 243, 122, 33, 224, 204, 112,
+			48, 36, 50, 89, 37, 55, 84, 108, 50, 37, 57, 108, 0, 13, 68, 181, 28, 71, 68, 48, 35, 51, 81, 108, 51, 0, 20, 71, 181, 17,
+			241, 124, 114, 179, 192, 48, 36, 51, 108, 81, 65, 108, 47, 37, 49, 0, 14, 68, 126, 7, 7, 68, 65, 36, 50, 104, 17, 108, 51, 0,
+			18, 69, 125, 145, 207, 122, 16, 6, 65, 39, 19, 108, 72, 36, 55, 36, 12, 0, 16, 69, 125, 50, 146, 28, 240, 65, 39, 89, 47, 35,
+			88, 108, 72, 0, 13, 68, 125, 50, 7, 68, 65, 36, 89, 71, 108, 51, 0, 20, 70, 120, 124, 224, 113, 118, 64, 55, 108, 57, 35, 50,
+			104, 17, 35, 47, 36, 19, 0, 10, 67, 109, 116, 64, 83, 36, 47, 51, 0, 11, 67, 83, 4, 64, 91, 36, 49, 35, 51, 0, 17, 69,
+			82, 33, 222, 206, 16, 91, 39, 84, 108, 55, 37, 57, 36, 12, 0, 12, 68, 78, 40, 7, 68, 89, 39, 50, 108, 51, 0, 15, 69, 78,
+			3, 200, 28, 240, 89, 35, 50, 72, 71, 108, 72, 0, 17, 69, 68, 120, 109, 122, 16, 51, 108, 107, 48, 36, 55, 55, 36, 12, 0, 10,
+			67, 67, 4, 64, 88, 36, 49, 51, 0, 12, 67, 53, 49, 211, 107, 35, 89, 89, 108, 89, 0, 13, 68, 50, 44, 7, 68, 75, 39, 12,
+			49, 108, 51, 0, 18, 70, 43, 50, 135, 131, 55, 192, 47, 37, 47, 108, 50, 37, 57, 39, 65, 0, 16, 69, 41, 244, 113, 204, 240, 47,
+			35, 65, 35, 51, 81, 37, 72, 0, 16, 69, 41, 28, 226, 122, 16, 47, 51, 37, 57, 40, 55, 36, 12, 0, 10, 67, 35, 4, 64, 71,
+			36, 49, 51, 0, 11, 67, 33, 232, 151, 71, 35, 55, 40, 47, 0, 14, 68, 33, 230, 135, 68, 71, 39, 55, 104, 17, 108, 51, 0, 17,
+			70, 30, 220, 207, 127, 60, 0, 36, 48, 37, 72, 36, 65, 37, 49, 0, 12, 68, 30, 34, 135, 68, 39, 12, 47, 108, 51, 0, 12, 68,
+			30, 12, 7, 68, 36, 50, 49, 108, 51, 0, 16, 69, 29, 230, 94, 206, 16, 39, 55, 10, 35, 55, 35, 57, 107, 0, 0, 12, 67, 193,
+			236, 192, 49, 39, 6, 55, 55, 37, 0, 10, 67, 137, 236, 192, 84, 35, 55, 37, 0, 10, 67, 129, 236, 192, 50, 36, 55, 37, 0, 14,
+			68, 125, 18, 150, 204, 65, 39, 51, 47, 36, 88, 108, 0, 16, 69, 109, 228, 215, 206, 0, 83, 36, 55, 36, 89, 47, 37, 50, 0, 15,
+			69, 81, 246, 79, 30, 0, 91, 35, 65, 19, 72, 108, 50, 0, 13, 68, 79, 55, 240, 80, 89, 37, 65, 49, 36, 91, 0, 11, 67, 61,
+			17, 210, 72, 36, 51, 108, 88, 0, 10, 67, 42, 40, 0, 47, 40, 50, 0, 76, 0, 12, 67, 207, 4, 209, 57, 36, 49, 89, 35, 51,
+			0, 15, 69, 193, 28, 207, 137, 16, 49, 39, 51, 37, 72, 39, 51, 0, 12, 67, 193, 20, 209, 49, 36, 51, 89, 36, 51, 0, 19, 70,
+			181, 20, 202, 204, 252, 223, 48, 35, 51, 35, 89, 47, 37, 72, 37, 65, 0, 15, 69, 134, 33, 207, 29, 16, 107, 35, 84, 108, 72, 108,
+			51, 0, 17, 69, 133, 242, 17, 197, 16, 107, 35, 65, 71, 36, 51, 81, 36, 51, 0, 13, 68, 129, 56, 7, 76, 50, 35, 89, 50, 108,
+			89, 0, 14, 67, 127, 4, 209, 65, 39, 49, 35, 89, 89, 35, 51, 0, 20, 70, 125, 33, 205, 124, 172, 223, 65, 39, 88, 108, 107, 36,
+			65, 36, 47, 37, 65, 0, 15, 69, 77, 252, 224, 29, 16, 89, 36, 65, 37, 50, 108, 51, 0, 15, 69, 70, 3, 8, 29, 16, 51, 35,
+			50, 75, 71, 108, 51, 0, 14, 67, 69, 193, 213, 51, 35, 104, 17, 104, 17, 108, 89, 0, 16, 69, 61, 230, 241, 29, 16, 72, 36, 55,
+			83, 35, 81, 108, 51, 0, 13, 67, 61, 20, 209, 72, 35, 51, 89, 35, 51, 36, 0, 15, 69, 57, 76, 8, 29, 16, 101, 39, 91, 49,
+			71, 108, 51, 0, 13, 68, 57, 24, 7, 76, 101, 39, 51, 50, 108, 89, 0, 16, 69, 40, 136, 112, 29, 16, 47, 35, 71, 35, 107, 49,
+			108, 51, 0, 13, 67, 33, 20, 209, 71, 35, 51, 89, 35, 51, 36, 0, 16, 69, 32, 120, 156, 29, 16, 71, 108, 84, 35, 104, 17, 108,
+			51, 0, 15, 69, 29, 232, 33, 29, 16, 39, 50, 50, 35, 107, 108, 51, 0, 12, 68, 29, 183, 135, 76, 36, 83, 55, 108, 89, 0, 15,
+			69, 28, 210, 176, 29, 16, 36, 107, 47, 36, 49, 108, 51, 0, 15, 69, 8, 165, 31, 29, 16, 108, 47, 35, 91, 65, 108, 51, 0, 0,
+			12, 67, 193, 225, 212, 49, 35, 55, 55, 108, 91, 0, 15, 69, 193, 19, 240, 139, 48, 49, 39, 51, 72, 49, 40, 57, 0, 15, 69, 181,
+			19, 199, 75, 48, 48, 35, 51, 72, 108, 88, 37, 0, 10, 67, 110, 11, 128, 83, 36, 50, 76, 0, 11, 67, 101, 232, 179, 35, 55, 35,
+			84, 37, 0, 12, 67, 57, 177, 212, 101, 39, 83, 83, 108, 91, 0, 10, 67, 33, 124, 243, 71, 35, 47, 37, 0, 16, 70, 33, 19, 162,
+			29, 50, 128, 71, 35, 51, 101, 108, 89, 47, 0, 18, 70, 32, 124, 51, 29, 50, 128, 71, 108, 49, 37, 57, 108, 89, 35, 47, 0, 10,
+			67, 32, 116, 162, 71, 108, 88, 40, 0, 12, 68, 29, 232, 7, 72, 36, 55, 50, 108, 88, 0, 11, 67, 29, 151, 179, 19, 35, 19, 55,
+			108, 0, 17, 70, 29, 60, 207, 137, 188, 222, 35, 89, 37, 72, 39, 83, 37, 55, 0, 16, 69, 29, 50, 143, 206, 32, 36, 89, 47, 36,
+			72, 37, 57, 39, 0, 0, 17, 70, 198, 40, 81, 32, 116, 64, 81, 39, 107, 35, 51, 71, 108, 51, 0, 21, 71, 196, 116, 176, 68, 136,
+			51, 192, 81, 108, 88, 49, 35, 51, 71, 39, 50, 37, 49, 0, 18, 70, 183, 56, 147, 40, 116, 64, 48, 36, 57, 84, 35, 89, 47, 108,
+			51, 0, 17, 70, 182, 36, 71, 76, 161, 207, 48, 40, 51, 39, 89, 47, 108, 72, 0, 14, 68, 131, 49, 211, 68, 50, 37, 57, 108, 89,
+			35, 51, 0, 17, 70, 129, 244, 98, 204, 120, 0, 50, 35, 65, 51, 40, 57, 108, 50, 0, 24, 73, 128, 116, 243, 138, 1, 222, 205, 39,
+			192, 50, 108, 89, 37, 57, 39, 50, 108, 55, 37, 88, 65, 0, 15, 68, 125, 120, 107, 68, 65, 39, 47, 35, 107, 107, 35, 51, 0, 14,
+			67, 124, 52, 211, 65, 39, 19, 35, 89, 89, 36, 89, 0, 15, 68, 78, 12, 83, 68, 89, 35, 50, 81, 36, 89, 35, 51, 0, 17, 70,
+			63, 60, 81, 32, 116, 64, 72, 37, 81, 35, 51, 71, 108, 51, 0, 20, 71, 63, 59, 94, 124, 114, 179, 192, 72, 37, 48, 55, 39, 65,
+			108, 47, 37, 49, 0, 14, 68, 43, 1, 226, 68, 47, 35, 49, 108, 84, 35, 51, 0, 15, 68, 42, 6, 235, 68, 47, 35, 50, 35, 83,
+			83, 39, 51, 0, 20, 71, 41, 23, 226, 206, 40, 51, 192, 47, 36, 51, 65, 39, 57, 39, 50, 37, 49, 0, 11, 67, 33, 49, 215, 71,
+			35, 89, 108, 47, 0, 18, 70, 32, 244, 91, 40, 116, 64, 71, 35, 72, 51, 35, 83, 47, 108, 51, 0, 23, 72, 29, 236, 10, 70, 39,
+			179, 74, 16, 36, 55, 36, 49, 47, 36, 51, 39, 55, 37, 88, 36, 0, 0, 11, 67, 187, 1, 237, 76, 36, 49, 108, 48, 0, 15, 69,
+			181, 28, 224, 29, 32, 48, 35, 51, 37, 50, 108, 88, 0, 16, 69, 77, 24, 160, 29, 32, 89, 35, 51, 84, 36, 50, 108, 88, 0, 14,
+			68, 41, 70, 84, 136, 47, 35, 91, 35, 19, 91, 39, 0, 0, 20, 70, 197, 19, 226, 104, 129, 209, 81, 35, 51, 72, 39, 104, 17, 39,
+			71, 108, 51, 0, 16, 69, 197, 19, 194, 137, 16, 81, 36, 51, 72, 108, 84, 35, 51, 0, 13, 68, 29, 55, 7, 92, 36, 89, 104, 17,
+			108, 47, 0, 0, 17, 70, 181, 28, 240, 29, 27, 64, 48, 36, 51, 37, 49, 108, 51, 48, 0, 11, 67, 137, 145, 216, 84, 39, 19, 108,
+			88, 0, 15, 68, 124, 200, 107, 72, 65, 39, 75, 35, 107, 107, 35, 88, 0, 14, 68, 124, 129, 209, 72, 65, 39, 71, 108, 51, 36, 88,
+			0, 11, 67, 74, 2, 128, 88, 35, 50, 35, 47, 0, 14, 67, 53, 194, 128, 107, 35, 104, 17, 104, 17, 35, 47, 0, 11, 67, 42, 2,
+			128, 47, 35, 50, 35, 47, 0, 18, 70, 30, 243, 225, 31, 5, 0, 36, 90, 72, 36, 107, 108, 49, 39, 91, 0, 0, 19, 70, 181, 24,
+			15, 196, 120, 0, 48, 35, 51, 35, 50, 72, 36, 81, 108, 50, 0, 17, 70, 128, 123, 94, 26, 40, 0, 50, 108, 48, 36, 55, 19, 39,
+			50, 0, 19, 70, 70, 37, 32, 111, 4, 64, 51, 39, 12, 91, 35, 50, 83, 36, 49, 51, 0, 15, 68, 29, 119, 135, 100, 36, 12, 47,
+			47, 36, 55, 108, 19, 0, 16, 70, 29, 50, 135, 42, 36, 64, 36, 89, 47, 108, 47, 39, 51, 0, 17, 70, 9, 241, 209, 205, 236, 211,
+			108, 65, 108, 51, 37, 55, 37, 89, 0, 0, 12, 67, 185, 17, 218, 76, 36, 51, 108, 104, 17, 0, 19, 70, 184, 115, 209, 129, 241, 210,
+			76, 108, 72, 39, 51, 50, 35, 65, 108, 88, 0, 12, 67, 129, 151, 202, 50, 36, 19, 65, 35, 47, 0, 12, 67, 83, 1, 202, 91, 39,
+			49, 49, 108, 47, 0, 10, 67, 61, 145, 202, 72, 39, 108, 47, 0, 11, 67, 33, 17, 202, 71, 35, 51, 108, 47, 0, 12, 68, 29, 22,
+			71, 32, 36, 51, 19, 108, 71, 0, 0, 13, 68, 125, 225, 209, 60, 65, 35, 55, 108, 51, 72, 0, 21, 71, 108, 124, 200, 71, 23, 135,
+			76, 83, 108, 57, 71, 36, 51, 81, 36, 55, 108, 89, 0, 14, 68, 82, 1, 211, 60, 91, 36, 50, 108, 89, 35, 72, 0, 19, 70, 57,
+			19, 226, 57, 252, 209, 101, 39, 51, 72, 39, 101, 35, 65, 37, 51, 0, 16, 68, 42, 39, 171, 60, 6, 47, 35, 84, 35, 55, 55, 39,
+			72, 0, 22, 71, 29, 40, 135, 120, 167, 199, 76, 36, 88, 88, 39, 10, 36, 55, 47, 36, 65, 108, 89, 0, 10, 67, 30, 3, 192, 35,
+			50, 72, 0, 76, 8, 3, 95, 51, 88, 89, 37, 0, 0, 18, 70, 186, 3, 223, 31, 55, 179, 76, 35, 50, 72, 65, 108, 57, 55, 37,
+			0, 15, 68, 126, 183, 179, 40, 65, 36, 55, 55, 37, 57, 35, 47, 0, 13, 68, 125, 76, 7, 40, 65, 36, 91, 49, 108, 47, 0, 14,
+			68, 121, 119, 199, 40, 55, 35, 47, 35, 65, 108, 47, 0, 15, 68, 112, 166, 71, 40, 104, 17, 35, 47, 35, 19, 108, 47, 0, 18, 69,
+			82, 33, 222, 207, 32, 91, 39, 84, 108, 55, 37, 57, 36, 57, 36, 0, 18, 70, 43, 55, 226, 68, 161, 212, 47, 36, 57, 65, 40, 51,
+			47, 108, 91, 0, 15, 68, 41, 18, 51, 40, 47, 35, 51, 71, 37, 57, 35, 47, 0, 13, 68, 28, 135, 135, 104, 36, 71, 55, 108, 104,
+			17, 0, 10, 3, 95, 48, 67, 89, 35, 12, 72, 0, 0, 15, 69, 128, 123, 79, 204, 240, 50, 108, 48, 35, 72, 37, 72, 0, 16, 68,
+			126, 7, 23, 100, 65, 39, 50, 104, 17, 35, 47, 36, 19, 0, 11, 67, 125, 17, 207, 65, 39, 51, 108, 72, 0, 19, 70, 124, 252, 202,
+			205, 72, 0, 65, 36, 72, 37, 47, 36, 57, 91, 36, 50, 0, 10, 67, 83, 48, 64, 91, 36, 57, 19, 0, 15, 69, 70, 36, 219, 204,
+			240, 51, 40, 89, 36, 83, 37, 72, 0, 22, 72, 29, 50, 135, 127, 56, 34, 110, 0, 36, 89, 47, 108, 65, 37, 50, 39, 83, 36, 50,
+			0, 10, 67, 28, 165, 0, 35, 47, 35, 91, 0, 9, 66, 204, 112, 57, 108, 12, 0, 76, 0, 16, 68, 57, 18, 18, 200, 101, 35, 51,
+			71, 39, 88, 36, 57, 36, 0, 16, 68, 49, 18, 18, 200, 75, 39, 51, 71, 39, 88, 36, 57, 36, 0, 15, 69, 49, 17, 205, 28, 160,
+			75, 36, 51, 108, 107, 108, 47, 0, 16, 69, 41, 24, 159, 180, 160, 47, 36, 51, 39, 65, 48, 36, 47, 0, 21, 72, 10, 2, 145, 139,
+			12, 224, 29, 32, 108, 50, 47, 51, 39, 49, 37, 50, 108, 88, 0, 16, 68, 8, 167, 179, 200, 108, 47, 36, 55, 37, 57, 36, 57, 36,
+			0, 0, 9, 65, 28, 6, 35, 55, 36, 83, 0, 0, 19, 70, 181, 23, 224, 109, 146, 128, 48, 39, 51, 65, 35, 50, 83, 36, 35, 47,
+			0, 14, 68, 137, 49, 215, 40, 84, 36, 89, 108, 47, 35, 47, 0, 13, 68, 131, 55, 240, 40, 50, 37, 65, 49, 35, 47, 0, 13, 67,
+			129, 200, 179, 50, 35, 104, 17, 35, 84, 37, 0, 17, 69, 127, 52, 90, 88, 128, 65, 37, 51, 104, 17, 35, 88, 35, 71, 0, 14, 67,
+			125, 200, 179, 65, 39, 104, 17, 35, 84, 84, 37, 0, 16, 70, 122, 44, 34, 79, 50, 128, 55, 39, 49, 39, 89, 37, 47, 0, 13, 68,
+			100, 129, 209, 40, 36, 71, 108, 51, 35, 47, 0, 12, 67, 82, 8, 179, 91, 36, 50, 35, 84, 37, 0, 14, 68, 73, 18, 148, 40, 88,
+			35, 51, 47, 39, 91, 47, 0, 12, 67, 69, 36, 98, 51, 36, 88, 36, 51, 84, 0, 10, 67, 68, 124, 98, 51, 108, 81, 39, 0, 12,
+			68, 42, 34, 51, 56, 47, 39, 71, 37, 101, 0, 11, 67, 41, 28, 51, 47, 39, 51, 49, 37, 0, 16, 70, 9, 178, 162, 124, 114, 128,
+			108, 83, 47, 39, 65, 108, 47, 0, 0, 17, 70, 131, 49, 224, 196, 116, 79, 50, 35, 57, 35, 50, 81, 108, 51, 0, 11, 67, 130, 36,
+			135, 50, 39, 12, 88, 108, 0, 12, 67, 122, 20, 7, 55, 36, 107, 108, 88, 108, 0, 19, 70, 35, 49, 224, 196, 116, 79, 71, 37, 57,
+			35, 50, 81, 108, 51, 35, 72, 0, 15, 69, 29, 146, 159, 28, 240, 36, 19, 47, 36, 65, 108, 72, 0, 12, 67, 29, 114, 7, 35, 47,
+			36, 71, 71, 108, 0, 17, 70, 10, 33, 224, 196, 116, 79, 108, 84, 108, 50, 81, 108, 51, 72, 0, 0, 19, 70, 207, 11, 71, 70, 236,
+			128, 57, 36, 49, 48, 108, 51, 76, 36, 57, 36, 0, 13, 68, 205, 56, 153, 204, 57, 35, 89, 40, 19, 37, 0, 18, 69, 137, 21, 48,
+			76, 160, 84, 35, 51, 91, 36, 6, 49, 35, 89, 47, 0, 16, 69, 131, 52, 243, 30, 0, 50, 36, 57, 89, 37, 57, 108, 50, 0, 13,
+			68, 57, 248, 143, 204, 101, 35, 65, 40, 72, 37, 0, 13, 68, 52, 124, 209, 204, 107, 108, 57, 36, 51, 37, 0, 16, 69, 34, 18, 145,
+			138, 0, 71, 36, 107, 47, 35, 51, 40, 50, 0, 15, 69, 8, 165, 15, 30, 0, 108, 47, 35, 91, 72, 108, 50, 0, 0, 14, 68, 83,
+			7, 237, 28, 91, 36, 49, 35, 65, 48, 108, 0, 13, 68, 34, 3, 237, 28, 71, 35, 50, 72, 48, 108, 0, 0, 17, 69, 181, 52, 89,
+			126, 32, 48, 36, 89, 35, 51, 35, 12, 65, 40, 0, 11, 67, 126, 39, 179, 65, 39, 12, 55, 108, 0, 12, 67, 126, 8, 179, 65, 36,
+			50, 39, 57, 36, 0, 17, 69, 124, 194, 136, 139, 48, 65, 39, 75, 47, 35, 71, 35, 84, 37, 0, 11, 67, 123, 55, 179, 55, 36, 57,
+			55, 37, 0, 17, 70, 109, 232, 174, 29, 18, 128, 83, 36, 55, 39, 76, 108, 51, 47, 0, 12, 67, 61, 20, 98, 72, 35, 51, 51, 39,
+			12, 0, 12, 67, 59, 55, 179, 6, 101, 36, 57, 55, 37, 0, 10, 3, 95, 49, 67, 89, 35, 12, 72, 0, 5, 65, 160, 35, 0, 0,
+			18, 70, 192, 116, 112, 128, 120, 0, 6, 49, 108, 51, 49, 39, 50, 108, 50, 0, 14, 67, 125, 200, 135, 65, 39, 104, 17, 35, 84, 84,
+			108, 0, 11, 67, 84, 214, 192, 89, 39, 107, 39, 83, 0, 11, 67, 62, 39, 135, 72, 39, 55, 55, 108, 0, 12, 67, 57, 114, 7, 101,
+			39, 47, 35, 71, 108, 0, 23, 72, 49, 164, 71, 111, 49, 207, 30, 0, 75, 39, 104, 17, 51, 108, 83, 37, 57, 72, 108, 50, 0, 15,
+			69, 34, 36, 111, 136, 112, 71, 40, 51, 90, 40, 84, 108, 0, 18, 70, 32, 247, 243, 128, 168, 0, 71, 35, 72, 65, 37, 50, 47, 39,
+			50, 0, 13, 67, 30, 39, 135, 35, 84, 84, 35, 55, 35, 50, 0, 10, 67, 29, 151, 135, 35, 19, 55, 108, 0, 0, 8, 66, 192, 160,
+			49, 39, 47, 0, 16, 68, 124, 166, 79, 204, 65, 39, 47, 36, 19, 35, 72, 72, 37, 0, 14, 68, 112, 116, 223, 204, 104, 17, 108, 89,
+			36, 65, 37, 0, 18, 70, 75, 52, 76, 123, 12, 192, 88, 37, 51, 75, 39, 55, 35, 49, 37, 0, 17, 70, 61, 17, 226, 204, 252, 192,
+			72, 36, 51, 108, 84, 37, 72, 37, 0, 14, 69, 60, 119, 138, 138, 0, 72, 108, 55, 47, 39, 50, 0, 17, 70, 43, 6, 199, 128, 248,
+			128, 47, 36, 49, 83, 108, 50, 72, 39, 0, 14, 68, 41, 28, 222, 204, 47, 36, 51, 36, 57, 55, 37, 0, 21, 72, 29, 50, 135, 120,
+			124, 95, 204, 160, 36, 89, 47, 108, 55, 108, 81, 65, 37, 47, 0, 0, 12, 67, 194, 243, 223, 49, 35, 90, 72, 39, 65, 0, 11, 67,
+			185, 67, 192, 76, 36, 91, 35, 72, 0, 13, 68, 139, 56, 158, 28, 84, 37, 57, 39, 55, 108, 0, 13, 67, 133, 178, 159, 6, 107, 35,
+			83, 47, 39, 65, 0, 20, 70, 124, 168, 135, 123, 49, 192, 65, 39, 47, 36, 84, 108, 55, 37, 57, 108, 50, 0, 14, 68, 33, 149, 179,
+			28, 71, 35, 19, 88, 37, 57, 108, 0, 17, 70, 29, 59, 71, 131, 49, 192, 36, 89, 48, 108, 50, 37, 57, 108, 0, 0, 12, 67, 135,
+			60, 30, 107, 36, 57, 49, 35, 55, 0, 13, 67, 125, 147, 222, 65, 39, 35, 72, 72, 36, 55, 0, 10, 67, 79, 60, 30, 89, 37, 49,
+			55, 0, 15, 69, 32, 120, 49, 135, 48, 71, 108, 50, 81, 35, 107, 37, 0, 0, 11, 67, 132, 246, 192, 107, 35, 72, 35, 83, 0, 11,
+			67, 128, 247, 192, 50, 35, 72, 35, 65, 0, 13, 67, 125, 236, 33, 65, 35, 55, 35, 49, 36, 12, 0, 13, 68, 125, 66, 162, 192, 65,
+			39, 91, 47, 40, 49, 0, 19, 70, 124, 244, 107, 76, 120, 0, 65, 39, 72, 35, 51, 51, 36, 89, 108, 50, 0, 11, 67, 76, 116, 143,
+			89, 108, 88, 35, 72, 0, 19, 70, 57, 23, 241, 76, 120, 0, 101, 35, 51, 65, 35, 81, 35, 89, 108, 50, 0, 11, 67, 40, 214, 192,
+			47, 39, 107, 35, 83, 0, 13, 69, 30, 34, 135, 136, 112, 39, 47, 108, 84, 108, 0, 14, 69, 29, 50, 179, 120, 112, 36, 89, 47, 37,
+			55, 108, 0, 0, 16, 70, 194, 39, 199, 128, 248, 128, 49, 39, 65, 108, 50, 72, 39, 0, 12, 67, 194, 35, 224, 49, 39, 12, 72, 35,
+			50, 0, 14, 69, 58, 44, 212, 42, 0, 101, 37, 91, 47, 35, 50, 0, 11, 67, 52, 119, 138, 107, 108, 55, 35, 47, 0, 17, 70, 43,
+			8, 135, 128, 248, 128, 47, 36, 49, 84, 108, 50, 72, 39, 0, 10, 67, 41, 72, 0, 47, 36, 91, 50, 0, 13, 68, 32, 119, 176, 120,
+			71, 36, 55, 49, 39, 55, 0, 13, 67, 28, 232, 138, 39, 101, 39, 84, 84, 35, 47, 0, 12, 3, 95, 49, 57, 50, 40, 88, 72, 35,
+			107, 0, 0, 12, 67, 194, 216, 64, 49, 39, 48, 48, 36, 12, 0, 24, 73, 135, 51, 209, 136, 252, 224, 29, 252, 240, 107, 37, 72, 51,
+			39, 72, 37, 50, 108, 65, 37, 49, 0, 12, 67, 127, 50, 223, 65, 36, 57, 89, 35, 65, 0, 15, 68, 125, 200, 25, 132, 65, 35, 104,
+			17, 50, 35, 19, 36, 0, 14, 67, 125, 55, 141, 65, 39, 89, 35, 55, 55, 35, 107, 0, 18, 69, 124, 172, 30, 173, 240, 65, 39, 47,
+			36, 49, 35, 55, 55, 36, 65, 0, 12, 67, 122, 216, 64, 55, 35, 48, 48, 36, 12, 0, 11, 67, 78, 3, 192, 89, 35, 50, 35, 72,
+			0, 11, 67, 69, 248, 176, 51, 35, 65, 40, 49, 0, 17, 70, 61, 17, 240, 137, 225, 192, 72, 36, 51, 108, 49, 40, 55, 108, 0, 10,
+			67, 50, 3, 192, 76, 39, 50, 72, 0, 13, 68, 50, 2, 51, 60, 75, 39, 50, 71, 37, 72, 0, 13, 68, 41, 21, 51, 60, 47, 39,
+			51, 91, 37, 72, 0, 14, 68, 34, 35, 34, 60, 71, 36, 84, 39, 75, 40, 72, 0, 16, 70, 30, 34, 162, 183, 49, 192, 39, 47, 39,
+			48, 37, 57, 108, 0, 11, 67, 28, 248, 95, 35, 72, 107, 35, 65, 0, 12, 3, 95, 49, 56, 107, 37, 75, 72, 35, 107, 0, 0, 16,
+			69, 186, 17, 209, 197, 224, 76, 108, 107, 108, 51, 81, 39, 55, 0, 12, 67, 137, 38, 128, 84, 35, 88, 35, 104, 17, 0, 14, 67, 127,
+			7, 222, 65, 39, 49, 35, 65, 65, 36, 55, 0, 12, 67, 124, 199, 222, 65, 39, 75, 65, 35, 55, 0, 17, 68, 124, 167, 240, 128, 65,
+			39, 47, 36, 65, 35, 49, 49, 36, 50, 0, 18, 70, 123, 56, 160, 29, 19, 226, 55, 36, 10, 39, 50, 108, 51, 72, 39, 0, 21, 71,
+			79, 56, 31, 29, 60, 34, 180, 89, 37, 50, 36, 65, 108, 36, 89, 49, 39, 48, 0, 11, 67, 78, 3, 128, 6, 89, 36, 50, 101, 0,
+			12, 68, 75, 60, 98, 40, 88, 37, 81, 39, 47, 0, 12, 67, 61, 252, 94, 72, 39, 65, 81, 39, 55, 0, 11, 67, 57, 34, 128, 101,
+			35, 88, 35, 47, 0, 10, 67, 46, 34, 0, 89, 39, 12, 71, 0, 13, 67, 40, 120, 94, 47, 35, 35, 107, 107, 39, 55, 0, 14, 67,
+			40, 119, 222, 47, 35, 19, 35, 65, 65, 39, 55, 0, 12, 3, 95, 50, 67, 72, 37, 84, 37, 89, 47, 0, 0, 12, 67, 197, 40, 33,
+			81, 35, 88, 35, 50, 36, 0, 14, 68, 187, 1, 226, 192, 76, 35, 49, 108, 84, 35, 49, 0, 11, 67, 185, 66, 161, 76, 36, 91, 47,
+			36, 0, 15, 69, 183, 1, 224, 204, 240, 48, 39, 49, 108, 50, 37, 72, 0, 13, 68, 135, 59, 179, 192, 107, 37, 76, 57, 36, 49, 0,
+			13, 67, 133, 179, 225, 6, 107, 36, 83, 72, 35, 107, 0, 12, 67, 131, 52, 64, 50, 35, 57, 57, 36, 51, 0, 12, 67, 130, 35, 97,
+			50, 39, 12, 107, 36, 12, 0, 15, 69, 129, 23, 199, 62, 16, 50, 35, 51, 65, 108, 72, 36, 0, 13, 68, 128, 118, 225, 124, 50, 108,
+			83, 35, 107, 65, 0, 16, 69, 126, 212, 83, 204, 240, 65, 35, 48, 39, 51, 89, 37, 72, 0, 16, 69, 125, 50, 155, 204, 240, 65, 39,
+			89, 47, 35, 83, 37, 72, 0, 13, 68, 124, 162, 34, 100, 65, 35, 47, 71, 40, 19, 0, 12, 67, 108, 168, 33, 83, 36, 47, 50, 36,
+			12, 0, 12, 67, 81, 182, 97, 91, 39, 83, 19, 36, 12, 0, 16, 69, 77, 20, 83, 204, 240, 89, 35, 51, 51, 36, 89, 37, 72, 0,
+			12, 67, 61, 72, 33, 72, 36, 91, 50, 36, 12, 0, 16, 69, 57, 251, 71, 70, 16, 101, 39, 65, 48, 108, 51, 36, 12, 0, 14, 68,
+			41, 177, 225, 124, 47, 35, 83, 108, 107, 39, 65, 0, 22, 72, 31, 52, 112, 30, 3, 243, 82, 0, 36, 57, 51, 49, 108, 50, 72, 37,
+			91, 36, 50, 0, 16, 69, 29, 226, 10, 174, 16, 35, 55, 71, 35, 47, 47, 36, 12, 0, 20, 70, 29, 50, 145, 29, 236, 199, 39, 89,
+			47, 39, 6, 51, 108, 55, 37, 57, 108, 0, 0, 16, 69, 194, 24, 49, 30, 0, 49, 39, 107, 50, 36, 81, 108, 50, 0, 25, 73, 184,
+			115, 209, 184, 119, 46, 137, 28, 192, 76, 108, 72, 39, 51, 76, 108, 104, 17, 76, 40, 51, 37, 0, 14, 67, 134, 44, 202, 107, 39, 84,
+			37, 57, 57, 35, 47, 0, 12, 67, 130, 21, 138, 50, 36, 107, 88, 35, 47, 0, 12, 67, 126, 39, 224, 65, 39, 19, 65, 36, 50, 0,
+			13, 67, 124, 167, 32, 65, 39, 47, 104, 17, 35, 50, 0, 11, 67, 123, 60, 32, 55, 37, 49, 36, 50, 0, 12, 67, 76, 172, 218, 89,
+			36, 47, 37, 104, 17, 0, 12, 67, 41, 76, 0, 47, 39, 6, 91, 35, 49, 0, 14, 68, 35, 54, 95, 120, 71, 37, 19, 35, 65, 35,
+			55, 0, 14, 68, 32, 246, 95, 120, 71, 35, 72, 35, 65, 35, 55, 0, 0, 14, 68, 204, 115, 223, 132, 57, 108, 72, 35, 65, 36, 12,
+			0, 15, 68, 193, 21, 31, 132, 49, 36, 51, 36, 91, 65, 36, 12, 0, 11, 67, 187, 55, 145, 76, 37, 55, 36, 51, 0, 17, 69, 129,
+			252, 207, 133, 240, 50, 36, 65, 37, 72, 35, 107, 35, 65, 0, 20, 70, 129, 132, 112, 68, 248, 64, 50, 35, 88, 35, 51, 49, 35, 51,
+			72, 36, 12, 0, 15, 68, 128, 132, 79, 132, 50, 35, 71, 39, 51, 72, 36, 12, 0, 18, 70, 127, 55, 179, 29, 19, 223, 65, 37, 55,
+			57, 108, 51, 72, 39, 65, 0, 18, 68, 125, 200, 32, 132, 65, 39, 104, 17, 35, 50, 50, 35, 50, 36, 12, 0, 18, 68, 125, 195, 223,
+			132, 65, 39, 104, 17, 35, 72, 72, 35, 65, 36, 12, 0, 15, 68, 125, 20, 207, 132, 65, 36, 51, 89, 36, 72, 36, 12, 0, 15, 68,
+			122, 36, 79, 132, 55, 35, 84, 35, 51, 72, 36, 12, 0, 14, 68, 108, 117, 223, 132, 83, 108, 47, 36, 65, 36, 12, 0, 11, 67, 81,
+			24, 145, 91, 35, 51, 40, 51, 0, 12, 67, 77, 24, 145, 89, 36, 51, 84, 36, 51, 0, 18, 70, 77, 17, 243, 128, 248, 64, 89, 39,
+			51, 108, 57, 108, 50, 72, 36, 0, 13, 68, 76, 123, 159, 132, 89, 108, 76, 65, 36, 12, 0, 18, 70, 69, 49, 224, 128, 248, 64, 51,
+			36, 89, 108, 50, 35, 50, 72, 36, 0, 18, 70, 63, 20, 72, 29, 24, 64, 72, 36, 81, 35, 51, 71, 108, 51, 36, 0, 16, 70, 62,
+			35, 199, 131, 24, 64, 72, 39, 72, 108, 50, 81, 36, 0, 16, 70, 40, 116, 98, 182, 35, 192, 47, 108, 51, 39, 48, 40, 72, 0, 14,
+			68, 34, 28, 224, 132, 71, 36, 107, 37, 50, 36, 12, 0, 0, 16, 68, 125, 50, 141, 112, 65, 39, 89, 47, 35, 107, 35, 104, 17, 0,
+			17, 68, 124, 165, 159, 128, 65, 39, 47, 36, 88, 35, 65, 65, 36, 50, 0, 20, 70, 101, 82, 7, 131, 50, 128, 35, 89, 35, 71, 108,
+			50, 37, 57, 57, 35, 47, 0, 13, 68, 80, 116, 79, 128, 91, 108, 51, 72, 35, 50, 0, 14, 67, 77, 196, 128, 89, 35, 104, 17, 104,
+			17, 36, 88, 0, 14, 68, 61, 21, 159, 128, 72, 35, 51, 88, 36, 65, 50, 0, 10, 67, 34, 4, 128, 71, 36, 50, 88, 0, 24, 73,
+			29, 60, 51, 74, 38, 209, 131, 60, 0, 36, 89, 49, 37, 88, 39, 83, 36, 51, 50, 37, 49, 0, 12, 68, 9, 236, 226, 40, 108, 55,
+			36, 40, 47, 0, 11, 67, 8, 133, 20, 108, 71, 91, 39, 91, 0, 0, 14, 69, 132, 116, 98, 120, 240, 107, 108, 51, 39, 55, 72, 0,
+			12, 67, 124, 199, 147, 65, 35, 75, 55, 36, 89, 0, 18, 70, 34, 35, 226, 128, 136, 143, 71, 40, 72, 39, 50, 35, 71, 40, 72, 0,
+			15, 69, 29, 50, 162, 70, 16, 39, 89, 47, 40, 51, 36, 12, 0, 16, 70, 8, 161, 202, 137, 28, 0, 108, 47, 108, 47, 39, 51, 49,
+			0, 0, 18, 70, 198, 40, 81, 40, 115, 0, 81, 39, 12, 107, 35, 51, 47, 108, 75, 0, 15, 68, 181, 18, 173, 80, 48, 39, 51, 47,
+			35, 48, 36, 91, 0, 13, 68, 124, 227, 226, 80, 65, 35, 101, 72, 40, 91, 0, 14, 68, 124, 130, 143, 204, 65, 39, 71, 47, 35, 72,
+			37, 0, 15, 69, 70, 12, 79, 30, 0, 51, 35, 50, 81, 72, 108, 50, 0, 24, 73, 58, 35, 199, 131, 28, 206, 43, 28, 192, 101, 39,
+			72, 35, 50, 81, 37, 101, 47, 36, 81, 37, 0, 10, 67, 56, 124, 214, 101, 108, 36, 88, 0, 11, 67, 52, 115, 18, 107, 108, 75, 36,
+			88, 0, 13, 68, 40, 193, 209, 204, 47, 36, 75, 108, 51, 37, 0, 16, 69, 34, 18, 33, 30, 0, 71, 36, 107, 71, 35, 107, 108, 50,
+			0, 13, 68, 9, 248, 146, 80, 108, 65, 40, 88, 36, 91, 0, 12, 3, 95, 49, 49, 57, 108, 88, 72, 35, 107, 0, 0, 18, 70, 198,
+			3, 7, 128, 248, 64, 81, 39, 50, 75, 108, 50, 72, 36, 12, 0, 17, 70, 197, 28, 199, 131, 51, 192, 81, 36, 51, 57, 108, 50, 37,
+			72, 0, 20, 70, 192, 188, 209, 29, 229, 48, 49, 35, 89, 37, 51, 39, 91, 91, 35, 49, 49, 0, 18, 70, 187, 17, 222, 128, 248, 64,
+			76, 36, 81, 108, 55, 35, 50, 72, 36, 0, 12, 67, 182, 11, 145, 48, 35, 50, 76, 35, 51, 0, 20, 71, 180, 244, 78, 136, 120, 15,
+			132, 48, 36, 72, 35, 51, 101, 108, 50, 72, 36, 0, 11, 67, 129, 8, 145, 50, 39, 88, 40, 51, 0, 18, 70, 128, 119, 200, 68, 248,
+			64, 50, 108, 65, 71, 39, 51, 72, 36, 12, 0, 11, 67, 126, 12, 209, 65, 39, 50, 37, 51, 0, 18, 70, 124, 161, 200, 137, 236, 240,
+			65, 36, 47, 108, 71, 39, 55, 37, 49, 0, 17, 70, 121, 242, 7, 131, 51, 192, 55, 39, 65, 71, 108, 50, 37, 72, 0, 13, 68, 114,
+			39, 243, 76, 104, 17, 39, 65, 37, 89, 0, 12, 67, 113, 120, 145, 104, 17, 35, 47, 40, 51, 0, 13, 68, 112, 250, 226, 76, 104, 17,
+			72, 72, 40, 89, 0, 10, 67, 49, 19, 0, 75, 39, 51, 75, 0, 11, 67, 32, 232, 145, 71, 39, 101, 39, 51, 0, 17, 70, 32, 229,
+			7, 131, 51, 192, 71, 35, 101, 91, 108, 50, 37, 72, 0, 17, 70, 32, 116, 98, 34, 8, 64, 71, 108, 51, 39, 71, 39, 50, 36, 0,
+			16, 70, 29, 50, 135, 128, 248, 64, 36, 89, 47, 108, 50, 72, 36, 0, 9, 3, 95, 49, 48, 72, 35, 107, 0, 0, 12, 68, 184, 116,
+			94, 72, 76, 108, 51, 55, 88, 0, 17, 69, 182, 3, 212, 130, 32, 48, 35, 50, 72, 91, 36, 50, 39, 12, 0, 10, 67, 126, 36, 128,
+			65, 39, 12, 88, 0, 15, 68, 125, 71, 198, 72, 65, 39, 91, 65, 35, 19, 36, 88, 0, 17, 70, 124, 124, 96, 43, 50, 128, 65, 108,
+			81, 50, 36, 47, 37, 47, 0, 15, 68, 113, 23, 51, 72, 104, 17, 36, 51, 104, 17, 37, 88, 0, 15, 68, 77, 232, 158, 72, 89, 36,
+			55, 55, 40, 55, 39, 88, 0, 15, 69, 61, 50, 162, 71, 48, 72, 35, 89, 47, 40, 51, 37, 0, 18, 70, 32, 114, 145, 35, 50, 128,
+			71, 108, 47, 35, 51, 71, 57, 35, 47, 0, 16, 70, 29, 60, 17, 206, 210, 128, 36, 89, 49, 51, 37, 48, 47, 0, 10, 67, 28, 136,
+			115, 35, 71, 107, 108, 0, 11, 67, 11, 24, 115, 108, 81, 35, 107, 37, 0, 11, 3, 95, 51, 67, 89, 37, 89, 35, 72, 0, 12, 3,
+			95, 49, 51, 89, 37, 88, 72, 35, 107, 0, 0, 20, 70, 192, 118, 144, 180, 116, 97, 49, 108, 104, 17, 35, 88, 48, 108, 51, 36, 12,
+			0, 13, 68, 139, 55, 174, 68, 84, 37, 55, 76, 36, 51, 0, 18, 70, 136, 124, 80, 29, 19, 225, 84, 108, 81, 39, 88, 108, 51, 72,
+			36, 0, 14, 68, 133, 241, 226, 68, 107, 35, 65, 108, 84, 35, 51, 0, 13, 68, 126, 6, 34, 68, 65, 35, 50, 88, 40, 51, 0, 15,
+			68, 126, 2, 148, 68, 65, 39, 50, 47, 35, 91, 36, 51, 0, 13, 68, 125, 35, 226, 68, 65, 39, 88, 72, 40, 51, 0, 19, 70, 125,
+			19, 224, 42, 40, 0, 65, 39, 51, 72, 35, 50, 36, 47, 40, 50, 0, 13, 68, 124, 214, 34, 68, 65, 35, 107, 88, 40, 51, 0, 14,
+			68, 124, 193, 226, 68, 65, 39, 75, 108, 84, 36, 51, 0, 13, 67, 112, 248, 147, 104, 17, 39, 72, 72, 40, 89, 0, 14, 68, 109, 28,
+			210, 68, 83, 36, 51, 37, 88, 36, 51, 0, 13, 68, 58, 3, 51, 68, 101, 36, 50, 75, 37, 51, 0, 11, 67, 49, 21, 0, 75, 36,
+			51, 36, 91, 0, 17, 70, 41, 17, 240, 42, 36, 64, 47, 36, 51, 108, 49, 47, 39, 51, 0, 12, 68, 40, 115, 179, 68, 47, 35, 101,
+			37, 51, 0, 13, 68, 40, 51, 179, 68, 47, 35, 19, 101, 37, 51, 0, 16, 70, 8, 241, 237, 42, 36, 64, 108, 72, 108, 48, 47, 39,
+			51, 0, 14, 3, 95, 49, 50, 72, 35, 84, 108, 88, 72, 35, 107, 0, 0, 17, 70, 186, 3, 224, 137, 28, 192, 76, 35, 50, 72, 50,
+			40, 51, 37, 0, 15, 69, 127, 1, 224, 205, 32, 65, 36, 49, 108, 50, 37, 88, 0, 16, 69, 125, 50, 155, 205, 96, 65, 39, 89, 47,
+			35, 83, 37, 88, 0, 11, 67, 76, 172, 210, 89, 36, 47, 37, 88, 0, 14, 68, 73, 24, 49, 204, 88, 36, 51, 35, 50, 81, 37, 0,
+			12, 68, 63, 56, 142, 136, 72, 37, 84, 101, 40, 0, 14, 68, 61, 236, 222, 80, 72, 35, 55, 37, 55, 35, 91, 0, 19, 70, 50, 2,
+			32, 63, 28, 192, 75, 39, 50, 71, 35, 50, 72, 36, 81, 37, 0, 14, 68, 49, 247, 177, 204, 75, 39, 65, 55, 36, 81, 37, 0, 17,
+			70, 28, 139, 240, 43, 56, 128, 39, 71, 90, 36, 49, 47, 37, 84, 0, 13, 3, 95, 49, 53, 48, 108, 50, 88, 72, 35, 107, 0, 0,
+			18, 70, 194, 3, 199, 192, 168, 145, 49, 39, 50, 72, 108, 49, 47, 39, 51, 0, 11, 67, 193, 67, 192, 49, 36, 91, 35, 72, 0, 16,
+			69, 186, 17, 209, 181, 16, 76, 108, 107, 108, 51, 48, 35, 51, 0, 19, 70, 181, 24, 175, 192, 168, 145, 48, 39, 51, 39, 90, 36, 49,
+			47, 39, 51, 0, 14, 68, 137, 49, 226, 76, 84, 35, 89, 108, 84, 36, 89, 0, 11, 67, 129, 67, 192, 50, 35, 91, 39, 72, 0, 17,
+			70, 109, 17, 224, 79, 52, 192, 83, 36, 51, 108, 50, 89, 37, 89, 0, 15, 69, 71, 60, 7, 137, 16, 51, 37, 49, 108, 84, 36, 51,
+			0, 18, 70, 41, 23, 243, 76, 168, 145, 47, 36, 51, 65, 37, 89, 47, 39, 51, 0, 15, 69, 33, 23, 212, 137, 16, 71, 35, 51, 65,
+			91, 40, 51, 0, 11, 67, 29, 183, 0, 39, 83, 39, 104, 17, 0, 14, 3, 95, 49, 52, 76, 108, 107, 108, 51, 72, 35, 107, 0, 0,
+			18, 70, 127, 51, 162, 29, 28, 115, 65, 36, 57, 101, 108, 51, 36, 81, 37, 0, 14, 68, 42, 3, 237, 72, 47, 39, 50, 72, 48, 35,
+			88, 0, 18, 70, 41, 24, 138, 127, 52, 128, 47, 35, 51, 39, 47, 35, 65, 37, 88, 0, 19, 71, 35, 52, 202, 194, 44, 243, 40, 71,
+			37, 89, 47, 49, 40, 37, 12, 47, 0, 17, 69, 29, 231, 211, 127, 48, 39, 55, 65, 39, 89, 35, 65, 65, 108, 0, 12, 3, 95, 49,
+			55, 107, 37, 84, 72, 35, 107, 0, 0, 17, 70, 194, 40, 83, 40, 120, 0, 49, 40, 107, 36, 89, 47, 108, 50, 0, 16, 70, 192, 123,
+			115, 40, 120, 0, 49, 108, 48, 37, 47, 108, 50, 0, 18, 70, 70, 36, 136, 59, 52, 64, 51, 40, 88, 71, 36, 101, 36, 57, 51, 0,
+			18, 70, 53, 68, 98, 129, 68, 64, 107, 35, 91, 51, 39, 50, 35, 91, 51, 0, 11, 67, 40, 116, 143, 47, 108, 88, 35, 72, 0, 11,
+			68, 31, 50, 34, 192, 37, 71, 40, 49, 0, 12, 68, 29, 59, 115, 192, 36, 89, 48, 37, 49, 0, 13, 3, 95, 49, 54, 91, 108, 50,
+			88, 72, 35, 107, 0, 0, 17, 70, 198, 3, 7, 128, 252, 192, 81, 39, 50, 75, 108, 50, 72, 37, 0, 17, 70, 192, 116, 72, 68, 252,
+			192, 49, 108, 51, 71, 39, 51, 72, 37, 0, 14, 68, 180, 117, 32, 200, 48, 108, 91, 50, 36, 57, 36, 0, 14, 69, 139, 52, 240, 137,
+			32, 84, 37, 89, 49, 39, 88, 0, 22, 71, 72, 132, 82, 128, 204, 209, 204, 88, 35, 71, 35, 51, 88, 35, 50, 75, 37, 51, 37, 0,
+			20, 71, 48, 120, 8, 28, 226, 177, 204, 75, 108, 50, 71, 108, 101, 47, 36, 81, 37, 0, 16, 69, 41, 228, 240, 138, 208, 47, 36, 55,
+			36, 89, 49, 39, 48, 0, 21, 71, 33, 72, 145, 136, 139, 98, 80, 71, 36, 91, 40, 51, 39, 71, 36, 48, 40, 91, 0, 0, 11, 67,
+			137, 227, 192, 84, 35, 55, 35, 72, 0, 10, 67, 126, 3, 192, 65, 35, 50, 72, 0, 11, 67, 74, 3, 192, 88, 35, 50, 35, 72, 0,
+			10, 67, 70, 3, 192, 51, 36, 50, 72, 0, 18, 70, 68, 115, 243, 28, 168, 145, 51, 108, 72, 37, 57, 108, 47, 39, 51, 0, 10, 67,
+			58, 12, 64, 101, 36, 50, 81, 0, 10, 67, 42, 3, 192, 47, 39, 50, 72, 0, 17, 70, 29, 199, 179, 62, 36, 192, 39, 104, 17, 55,
+			37, 72, 39, 89, 0, 20, 71, 29, 50, 162, 58, 35, 226, 76, 39, 89, 47, 39, 101, 39, 72, 72, 40, 89, 0, 12, 3, 95, 55, 88,
+			107, 35, 83, 47, 108, 72, 0, 0, 13, 67, 181, 50, 178, 48, 36, 89, 47, 36, 57, 36, 0, 17, 70, 109, 24, 176, 42, 36, 128, 83,
+			36, 51, 39, 49, 47, 39, 88, 0, 11, 67, 101, 34, 128, 36, 88, 88, 35, 47, 0, 11, 67, 74, 3, 128, 88, 35, 50, 35, 101, 0,
+			19, 70, 63, 20, 71, 128, 252, 212, 72, 36, 81, 35, 51, 35, 50, 72, 37, 91, 0, 14, 67, 53, 68, 114, 107, 35, 91, 35, 51, 36,
+			57, 36, 0, 17, 70, 41, 24, 159, 34, 36, 128, 47, 39, 51, 39, 65, 71, 39, 88, 0, 0, 15, 69, 185, 65, 224, 204, 240, 76, 36,
+			91, 108, 50, 37, 72, 0, 13, 68, 136, 119, 238, 192, 84, 108, 65, 76, 36, 49, 0, 15, 69, 131, 49, 243, 204, 240, 50, 35, 57, 108,
+			37, 12, 72, 0, 12, 67, 78, 188, 207, 89, 36, 57, 57, 36, 72, 0, 12, 67, 63, 56, 139, 72, 35, 57, 57, 40, 89, 0, 11, 67,
+			50, 21, 0, 75, 35, 107, 36, 91, 0, 21, 71, 32, 232, 145, 138, 7, 243, 68, 71, 39, 101, 39, 51, 39, 50, 35, 65, 37, 51, 0,
+			27, 74, 29, 236, 10, 70, 35, 243, 128, 119, 243, 192, 36, 55, 36, 49, 47, 51, 39, 72, 37, 50, 108, 65, 37, 49, 0, 0, 19, 70,
+			198, 3, 7, 128, 252, 128, 81, 39, 50, 75, 108, 50, 72, 36, 57, 36, 0, 10, 67, 136, 220, 192, 84, 35, 107, 57, 0, 19, 70, 128,
+			119, 200, 68, 252, 128, 50, 108, 65, 71, 39, 51, 72, 36, 57, 36, 0, 16, 69, 77, 20, 159, 206, 0, 89, 35, 51, 88, 35, 65, 37,
+			50, 0, 20, 71, 60, 124, 209, 192, 168, 145, 204, 72, 108, 57, 51, 36, 49, 47, 39, 51, 37, 0, 16, 69, 56, 132, 113, 30, 0, 101,
+			39, 71, 51, 36, 81, 108, 50, 0, 11, 67, 35, 55, 142, 71, 37, 55, 35, 101, 0, 10, 67, 29, 188, 0, 19, 36, 83, 49, 0, 11,
+			67, 9, 24, 154, 108, 51, 39, 104, 17, 0, 0, 12, 68, 198, 44, 243, 60, 81, 40, 37, 12, 72, 0, 15, 70, 183, 52, 71, 207, 51,
+			192, 48, 37, 51, 108, 37, 72, 0, 20, 71, 133, 17, 240, 123, 50, 162, 76, 107, 36, 51, 108, 49, 55, 37, 47, 40, 89, 0, 11, 67,
+			84, 241, 192, 89, 36, 6, 72, 108, 0, 16, 70, 32, 229, 7, 207, 51, 192, 71, 35, 101, 91, 108, 37, 72, 0, 21, 72, 11, 8, 159,
+			137, 225, 202, 137, 16, 108, 49, 39, 65, 40, 55, 108, 47, 39, 51, 0, 0, 10, 67, 180, 115, 226, 48, 108, 72, 39, 0, 15, 68, 113,
+			49, 226, 40, 104, 17, 36, 89, 108, 84, 35, 47, 0, 12, 67, 85, 243, 226, 89, 35, 65, 35, 72, 40, 0, 14, 68, 76, 225, 226, 40,
+			89, 36, 101, 108, 84, 35, 47, 0, 14, 68, 73, 19, 212, 40, 88, 35, 51, 72, 39, 91, 47, 0, 10, 67, 48, 115, 226, 75, 108, 72,
+			40, 0, 15, 68, 41, 177, 226, 40, 47, 35, 6, 83, 108, 84, 39, 47, 0, 26, 73, 41, 23, 226, 29, 236, 10, 71, 60, 0, 47, 36,
+			51, 65, 39, 36, 55, 36, 49, 47, 37, 51, 37, 49, 0, 23, 72, 29, 236, 10, 70, 37, 51, 127, 48, 36, 55, 36, 49, 47, 36, 51,
+			39, 91, 37, 65, 37, 0, 0, 18, 70, 199, 52, 226, 77, 188, 207, 81, 37, 89, 40, 89, 36, 83, 37, 72, 0, 25, 73, 192, 116, 115,
+			193, 231, 199, 42, 36, 64, 49, 108, 51, 37, 49, 35, 55, 35, 65, 108, 47, 39, 51, 0, 13, 67, 129, 195, 199, 50, 35, 104, 17, 72,
+			35, 50, 0, 12, 67, 85, 227, 71, 89, 39, 55, 35, 107, 108, 0, 11, 67, 83, 51, 199, 91, 36, 57, 72, 108, 0, 12, 67, 56, 132,
+			71, 101, 35, 71, 35, 51, 108, 0, 16, 70, 32, 116, 179, 123, 60, 0, 71, 108, 88, 37, 55, 37, 49, 0, 12, 67, 28, 131, 199, 35,
+			71, 35, 72, 35, 50, 0, 10, 67, 11, 51, 199, 108, 57, 72, 108, 0, 0, 13, 68, 123, 24, 145, 204, 55, 36, 81, 40, 51, 37, 0,
+			15, 68, 113, 72, 49, 204, 104, 17, 35, 91, 35, 50, 81, 37, 0, 10, 67, 72, 252, 192, 88, 35, 72, 37, 0, 14, 68, 40, 115, 79,
+			204, 47, 108, 107, 35, 72, 72, 37, 0, 16, 69, 33, 24, 20, 204, 160, 71, 39, 51, 39, 50, 91, 37, 47, 0, 8, 65, 32, 6, 71,
+			36, 12, 0, 0, 14, 68, 85, 28, 205, 28, 89, 35, 51, 37, 107, 35, 50, 0, 10, 67, 56, 241, 192, 101, 39, 72, 108, 0, 10, 67,
+			48, 241, 192, 75, 39, 72, 108, 0, 15, 70, 31, 4, 199, 207, 51, 192, 39, 49, 89, 108, 37, 72, 0, 23, 73, 9, 226, 162, 194, 39,
+			226, 122, 36, 192, 108, 55, 47, 39, 49, 39, 65, 39, 55, 40, 89, 0, 5, 65, 164, 39, 0, 0, 11, 67, 192, 115, 226, 49, 108, 72,
+			39, 12, 0, 15, 69, 182, 1, 222, 43, 48, 48, 36, 50, 108, 55, 47, 37, 0, 17, 70, 33, 24, 7, 62, 34, 128, 71, 36, 51, 50,
+			108, 72, 39, 47, 0, 10, 67, 29, 60, 51, 36, 89, 49, 37, 0, 12, 3, 95, 53, 67, 48, 108, 50, 89, 35, 72, 0, 0, 19, 71,
+			182, 39, 179, 110, 40, 51, 192, 48, 39, 55, 37, 83, 39, 50, 37, 49, 0, 20, 70, 180, 244, 115, 124, 120, 0, 48, 36, 72, 35, 51,
+			37, 57, 36, 65, 108, 50, 0, 18, 70, 136, 117, 32, 196, 168, 0, 84, 108, 91, 35, 50, 81, 47, 39, 50, 0, 12, 67, 133, 232, 7,
+			107, 36, 55, 36, 50, 108, 0, 13, 67, 125, 151, 199, 65, 39, 19, 35, 65, 65, 108, 0, 11, 67, 124, 247, 192, 65, 39, 72, 36, 65,
+			0, 21, 70, 124, 172, 15, 204, 120, 0, 65, 39, 47, 36, 49, 35, 72, 72, 37, 57, 108, 50, 0, 12, 67, 101, 232, 7, 35, 55, 35,
+			50, 35, 50, 0, 11, 67, 100, 247, 192, 35, 12, 72, 35, 65, 0, 12, 67, 100, 131, 199, 6, 36, 71, 72, 108, 19, 0, 17, 69, 85,
+			17, 205, 40, 112, 89, 36, 51, 108, 107, 35, 47, 35, 50, 0, 11, 67, 72, 132, 71, 88, 36, 71, 51, 108, 0, 16, 69, 41, 232, 179,
+			52, 112, 47, 35, 55, 84, 37, 107, 35, 50, 0, 16, 69, 41, 19, 51, 52, 112, 47, 35, 51, 75, 37, 107, 35, 50, 0, 13, 67, 40,
+			132, 71, 47, 35, 71, 35, 51, 51, 108, 0, 10, 67, 29, 118, 199, 36, 47, 83, 108, 0, 15, 69, 28, 194, 7, 68, 112, 36, 75, 71,
+			108, 51, 35, 50, 0, 11, 67, 8, 168, 7, 108, 47, 36, 50, 108, 0, 0, 13, 68, 187, 28, 224, 204, 76, 36, 81, 37, 50, 37, 0,
+			18, 70, 180, 241, 219, 128, 252, 192, 48, 35, 72, 108, 83, 35, 50, 72, 37, 0, 10, 67, 124, 183, 128, 65, 36, 89, 55, 0, 14, 68,
+			112, 241, 223, 204, 104, 17, 39, 72, 108, 65, 37, 0, 10, 67, 109, 151, 128, 83, 36, 19, 55, 0, 17, 70, 76, 123, 81, 137, 188, 202,
+			89, 108, 48, 51, 39, 83, 37, 47, 0, 17, 70, 33, 24, 7, 68, 248, 128, 71, 36, 51, 50, 108, 51, 72, 39, 0, 15, 69, 29, 19,
+			226, 30, 0, 35, 51, 72, 35, 84, 108, 50, 0, 0, 12, 68, 127, 50, 145, 28, 65, 37, 47, 51, 108, 0, 14, 67, 124, 230, 219, 65,
+			39, 101, 35, 83, 83, 35, 83, 0, 11, 67, 83, 8, 64, 91, 39, 49, 36, 12, 0, 13, 67, 43, 8, 64, 6, 47, 36, 19, 49, 36,
+			12, 0, 11, 67, 32, 252, 217, 71, 35, 72, 37, 19, 0, 13, 68, 32, 132, 97, 28, 71, 35, 71, 51, 107, 108, 0, 14, 68, 31, 2,
+			209, 28, 35, 49, 89, 35, 51, 35, 50, 0, 13, 68, 30, 243, 225, 28, 36, 90, 72, 36, 107, 108, 0, 18, 70, 29, 101, 209, 29, 17,
+			192, 36, 88, 47, 36, 51, 108, 51, 35, 50, 0, 0, 16, 69, 134, 247, 226, 131, 48, 107, 36, 90, 36, 65, 39, 50, 37, 0, 21, 70,
+			129, 132, 72, 122, 3, 243, 50, 35, 88, 35, 51, 71, 39, 55, 35, 50, 72, 37, 0, 15, 69, 128, 116, 96, 199, 48, 50, 108, 51, 36,
+			50, 81, 37, 0, 16, 69, 125, 50, 153, 111, 48, 65, 39, 89, 47, 35, 19, 83, 37, 0, 15, 69, 48, 116, 78, 43, 48, 75, 108, 51,
+			35, 101, 47, 37, 0, 15, 69, 30, 220, 207, 127, 48, 36, 48, 37, 72, 36, 65, 37, 0, 20, 70, 29, 225, 200, 56, 172, 51, 35, 55,
+			55, 108, 71, 35, 101, 47, 35, 49, 37, 0, 0, 17, 70, 128, 118, 209, 124, 120, 0, 50, 108, 83, 35, 51, 65, 108, 50, 0, 13, 67,
+			113, 90, 225, 104, 17, 36, 89, 89, 36, 12, 0, 12, 67, 112, 247, 192, 104, 17, 35, 72, 35, 65, 0, 13, 67, 105, 90, 225, 104, 17,
+			39, 89, 89, 36, 12, 0, 11, 67, 95, 52, 97, 47, 35, 57, 51, 35, 0, 14, 68, 77, 252, 209, 124, 89, 36, 65, 37, 51, 39, 65,
+			0, 14, 68, 72, 225, 209, 108, 88, 35, 101, 108, 51, 36, 83, 0, 15, 68, 50, 24, 43, 124, 75, 35, 107, 35, 50, 50, 35, 65, 0,
+			18, 69, 40, 215, 51, 112, 112, 47, 35, 107, 104, 17, 37, 104, 17, 35, 50, 0, 12, 67, 34, 234, 225, 71, 35, 76, 76, 36, 12, 0,
+			13, 67, 33, 236, 33, 6, 71, 35, 55, 49, 36, 12, 0, 11, 67, 32, 247, 192, 71, 36, 72, 35, 65, 0, 13, 68, 32, 116, 143, 124,
+			71, 108, 88, 72, 35, 65, 0, 18, 70, 30, 3, 226, 133, 35, 199, 35, 50, 72, 40, 107, 88, 39, 72, 108, 0, 17, 70, 29, 50, 141,
+			76, 120, 0, 36, 89, 47, 36, 107, 89, 108, 50, 0, 17, 70, 10, 1, 240, 138, 3, 199, 108, 50, 108, 49, 39, 50, 72, 108, 0, 0,
+			16, 67, 126, 39, 10, 65, 39, 84, 35, 104, 17, 104, 17, 35, 47, 0, 16, 67, 125, 71, 10, 65, 35, 91, 36, 104, 17, 104, 17, 35,
+			47, 0, 19, 70, 124, 252, 209, 204, 172, 192, 65, 39, 72, 37, 51, 37, 57, 35, 47, 37, 0, 11, 67, 101, 68, 74, 36, 91, 51, 35,
+			47, 0, 15, 69, 92, 119, 136, 30, 0, 47, 108, 55, 36, 71, 108, 50, 0, 13, 67, 76, 135, 10, 89, 36, 71, 104, 17, 35, 47, 0,
+			10, 67, 42, 35, 138, 47, 40, 101, 47, 0, 20, 71, 32, 225, 209, 28, 248, 146, 204, 71, 39, 101, 108, 51, 108, 72, 40, 88, 37, 0,
+			11, 67, 11, 60, 32, 108, 57, 49, 39, 50, 0, 0, 17, 69, 133, 66, 149, 61, 240, 107, 35, 91, 47, 89, 35, 72, 39, 65, 0, 27,
+			74, 130, 44, 30, 206, 43, 81, 136, 172, 243, 60, 50, 40, 49, 55, 36, 39, 48, 39, 51, 39, 47, 36, 37, 72, 0, 11, 67, 128, 115,
+			223, 50, 108, 72, 36, 65, 0, 14, 67, 125, 151, 223, 65, 39, 19, 35, 65, 65, 35, 65, 0, 22, 71, 125, 72, 79, 29, 228, 86, 28,
+			65, 35, 91, 107, 35, 72, 39, 51, 51, 36, 88, 108, 0, 16, 68, 125, 56, 143, 132, 65, 39, 89, 35, 84, 84, 35, 72, 36, 0, 15,
+			68, 124, 199, 171, 132, 65, 35, 75, 35, 55, 55, 36, 12, 0, 15, 68, 124, 170, 205, 60, 65, 39, 47, 47, 35, 107, 36, 72, 0, 12,
+			67, 124, 136, 95, 65, 39, 71, 107, 35, 65, 0, 12, 67, 111, 8, 64, 83, 35, 49, 49, 36, 12, 0, 17, 70, 109, 232, 145, 204, 241,
+			192, 83, 36, 55, 39, 51, 37, 72, 108, 0, 12, 67, 79, 8, 64, 89, 36, 49, 49, 36, 12, 0, 12, 67, 63, 8, 64, 72, 35, 49,
+			49, 36, 12, 0, 11, 67, 55, 8, 64, 107, 36, 49, 49, 36, 0, 14, 68, 50, 36, 143, 132, 75, 35, 84, 88, 35, 72, 72, 0, 13,
+			68, 32, 116, 143, 132, 71, 108, 88, 72, 36, 107, 0, 13, 68, 32, 116, 79, 132, 71, 108, 51, 72, 36, 107, 0, 13, 68, 29, 231, 171,
+			132, 35, 55, 55, 12, 108, 107, 0, 18, 70, 28, 226, 149, 29, 17, 192, 36, 101, 47, 36, 89, 108, 51, 35, 50, 0, 0, 18, 70, 186,
+			17, 209, 33, 147, 243, 76, 108, 107, 108, 51, 71, 39, 72, 37, 0, 17, 70, 181, 28, 211, 194, 43, 64, 48, 36, 51, 37, 89, 49, 39,
+			48, 0, 20, 70, 181, 12, 209, 108, 168, 51, 48, 35, 88, 37, 51, 39, 83, 47, 35, 50, 37, 0, 10, 67, 130, 44, 216, 50, 39, 57,
+			88, 0, 14, 68, 126, 17, 209, 40, 65, 35, 107, 108, 51, 35, 47, 0, 15, 68, 125, 156, 235, 128, 65, 39, 35, 12, 19, 57, 35, 50,
+			0, 15, 68, 125, 87, 141, 40, 65, 35, 89, 55, 35, 107, 35, 47, 0, 15, 68, 125, 60, 43, 128, 65, 39, 89, 35, 49, 49, 36, 50,
+			0, 15, 67, 125, 39, 222, 65, 39, 88, 88, 35, 65, 65, 36, 55, 0, 12, 67, 78, 216, 12, 89, 36, 48, 35, 50, 75, 0, 15, 68,
+			77, 21, 48, 128, 89, 35, 51, 91, 36, 49, 35, 50, 0, 11, 67, 71, 55, 222, 51, 37, 65, 36, 55, 0, 14, 68, 40, 193, 209, 40,
+			47, 36, 75, 108, 51, 35, 47, 0, 23, 72, 33, 17, 224, 199, 51, 138, 199, 48, 71, 35, 51, 35, 50, 81, 37, 101, 47, 36, 81, 37,
+			0, 12, 67, 32, 252, 94, 71, 35, 72, 81, 36, 55, 0, 0, 15, 69, 197, 33, 209, 62, 16, 81, 39, 88, 108, 51, 72, 36, 0, 11,
+			67, 194, 212, 64, 49, 35, 48, 35, 51, 0, 16, 70, 188, 120, 15, 29, 23, 192, 90, 108, 50, 72, 108, 51, 65, 0, 11, 67, 186, 212,
+			64, 76, 35, 48, 35, 51, 0, 17, 69, 182, 247, 209, 62, 16, 48, 35, 90, 65, 39, 51, 72, 36, 12, 0, 17, 70, 135, 52, 98, 83,
+			55, 199, 107, 37, 51, 39, 91, 37, 65, 108, 0, 12, 67, 132, 248, 79, 107, 39, 72, 107, 39, 72, 0, 11, 67, 130, 212, 64, 50, 35,
+			48, 35, 51, 0, 14, 68, 126, 1, 210, 100, 65, 39, 50, 108, 88, 36, 19, 0, 16, 68, 124, 168, 25, 124, 65, 39, 47, 35, 50, 35,
+			19, 36, 65, 0, 13, 67, 113, 230, 97, 104, 17, 35, 55, 19, 36, 12, 0, 16, 69, 80, 120, 18, 62, 16, 6, 91, 108, 50, 88, 72,
+			35, 107, 0, 12, 67, 72, 131, 225, 88, 39, 71, 72, 36, 12, 0, 12, 67, 63, 7, 225, 72, 39, 49, 65, 36, 12, 0, 10, 67, 55,
+			52, 97, 107, 37, 51, 36, 0, 13, 67, 41, 236, 33, 47, 35, 55, 35, 49, 36, 12, 0, 16, 68, 32, 247, 15, 124, 71, 35, 72, 104,
+			17, 35, 72, 35, 65, 0, 13, 68, 29, 59, 81, 124, 36, 89, 48, 36, 51, 65, 0, 0, 15, 69, 181, 24, 115, 56, 160, 48, 35, 51,
+			107, 37, 101, 47, 0, 12, 67, 133, 23, 224, 107, 39, 51, 65, 39, 50, 0, 14, 68, 126, 38, 79, 32, 65, 39, 35, 19, 72, 35, 71,
+			0, 12, 67, 124, 250, 202, 65, 39, 72, 72, 35, 47, 0, 12, 67, 124, 71, 224, 65, 39, 19, 65, 36, 50, 0, 10, 67, 120, 220, 192,
+			55, 36, 107, 108, 0, 14, 68, 114, 39, 160, 48, 104, 17, 39, 55, 35, 50, 75, 0, 15, 69, 109, 24, 115, 56, 160, 83, 35, 51, 107,
+			37, 101, 47, 0, 11, 67, 86, 36, 74, 89, 40, 51, 35, 47, 0, 17, 69, 80, 196, 115, 30, 0, 91, 35, 75, 35, 51, 37, 57, 108,
+			50, 0, 13, 67, 77, 230, 224, 89, 36, 55, 39, 83, 39, 50, 0, 15, 69, 56, 116, 243, 30, 0, 101, 108, 89, 37, 57, 108, 50, 0,
+			17, 69, 42, 12, 83, 42, 0, 47, 35, 50, 81, 36, 89, 47, 35, 50, 0, 14, 67, 41, 230, 224, 47, 36, 55, 36, 6, 83, 39, 50,
+			0, 15, 69, 35, 60, 19, 30, 0, 71, 37, 49, 35, 89, 108, 50, 0, 10, 67, 35, 51, 138, 71, 37, 101, 47, 0, 10, 67, 32, 248,
+			128, 71, 39, 72, 39, 0, 14, 69, 29, 59, 98, 68, 160, 36, 89, 48, 39, 51, 47, 0, 0, 12, 67, 199, 55, 209, 81, 36, 57, 65,
+			36, 51, 0, 13, 68, 198, 44, 224, 60, 81, 40, 57, 35, 50, 72, 0, 13, 68, 197, 241, 209, 60, 81, 39, 65, 108, 51, 72, 0, 12,
+			67, 193, 72, 145, 49, 36, 91, 84, 35, 51, 0, 18, 70, 193, 24, 159, 28, 172, 240, 49, 39, 51, 39, 65, 108, 47, 37, 49, 0, 15,
+			68, 185, 164, 95, 132, 76, 35, 104, 17, 35, 51, 65, 36, 0, 13, 68, 183, 56, 145, 132, 48, 37, 57, 39, 51, 36, 0, 10, 67, 182,
+			3, 0, 48, 35, 50, 75, 0, 18, 70, 136, 124, 80, 29, 19, 192, 84, 108, 81, 39, 88, 108, 51, 35, 72, 0, 15, 69, 127, 56, 51,
+			125, 240, 65, 37, 50, 37, 65, 39, 65, 0, 16, 70, 127, 55, 179, 29, 19, 192, 65, 37, 55, 57, 108, 51, 72, 0, 14, 68, 125, 99,
+			112, 132, 65, 35, 88, 107, 35, 49, 36, 0, 14, 68, 114, 36, 95, 132, 104, 17, 39, 51, 65, 36, 12, 0, 15, 68, 86, 39, 217, 132,
+			89, 39, 12, 65, 36, 19, 36, 12, 0, 15, 68, 81, 146, 15, 132, 91, 39, 19, 71, 35, 72, 36, 12, 0, 13, 68, 80, 116, 143, 132,
+			91, 108, 88, 72, 36, 12, 0, 15, 68, 79, 20, 95, 132, 89, 36, 81, 36, 51, 65, 36, 12, 0, 15, 68, 62, 28, 15, 132, 72, 36,
+			107, 49, 35, 72, 36, 12, 0, 19, 70, 57, 232, 138, 192, 248, 64, 101, 35, 55, 84, 35, 47, 49, 35, 72, 36, 0, 10, 67, 50, 4,
+			192, 75, 36, 50, 89, 0, 14, 68, 40, 228, 95, 132, 47, 36, 101, 36, 51, 65, 36, 0, 12, 68, 32, 116, 223, 132, 71, 108, 89, 65,
+			36, 0, 20, 71, 30, 24, 145, 29, 244, 143, 28, 35, 107, 40, 51, 108, 65, 35, 88, 72, 108, 0, 9, 67, 30, 4, 192, 39, 50, 89,
+			0, 12, 68, 11, 8, 145, 60, 108, 49, 39, 51, 72, 0, 0, 13, 68, 206, 36, 113, 128, 57, 40, 51, 81, 36, 50, 0, 11, 67, 130,
+			212, 128, 50, 35, 48, 35, 88, 0, 12, 67, 129, 200, 148, 50, 39, 104, 17, 40, 91, 0, 15, 68, 125, 49, 205, 112, 65, 39, 89, 108,
+			107, 36, 104, 17, 0, 15, 68, 124, 132, 97, 128, 65, 39, 71, 35, 51, 107, 35, 50, 0, 13, 68, 124, 120, 48, 128, 65, 108, 50, 49,
+			35, 50, 0, 10, 67, 122, 4, 128, 55, 36, 50, 88, 0, 13, 68, 109, 24, 142, 40, 83, 39, 51, 40, 101, 47, 0, 11, 67, 76, 116,
+			148, 89, 108, 88, 36, 91, 0, 13, 68, 74, 40, 48, 128, 88, 40, 50, 49, 35, 50, 0, 14, 68, 69, 65, 207, 40, 51, 36, 91, 108,
+			72, 35, 47, 0, 15, 68, 41, 28, 31, 128, 47, 39, 51, 49, 35, 65, 35, 50, 0, 14, 68, 41, 24, 159, 128, 47, 36, 51, 39, 65,
+			35, 50, 0, 13, 67, 40, 196, 115, 47, 35, 75, 35, 51, 51, 37, 0, 11, 67, 34, 212, 128, 71, 36, 48, 35, 88, 0, 14, 68, 30,
+			20, 95, 128, 35, 107, 51, 36, 65, 35, 50, 0, 13, 68, 9, 226, 17, 40, 108, 55, 71, 36, 51, 47, 0, 9, 4, 95, 35, 114, 100,
+			39, 65, 0, 0, 19, 70, 197, 19, 194, 137, 19, 225, 81, 36, 51, 72, 108, 84, 35, 51, 72, 36, 0, 15, 69, 187, 1, 224, 62, 16,
+			76, 36, 49, 108, 50, 72, 36, 0, 19, 70, 186, 17, 209, 84, 247, 192, 76, 108, 107, 108, 51, 89, 35, 72, 39, 65, 0, 16, 69, 182,
+			3, 199, 68, 240, 48, 36, 50, 72, 108, 51, 35, 72, 0, 18, 69, 181, 52, 89, 126, 16, 48, 36, 89, 35, 51, 35, 65, 65, 36, 12,
+			0, 11, 67, 181, 21, 0, 48, 35, 51, 36, 91, 0, 16, 69, 129, 60, 7, 110, 16, 50, 36, 89, 49, 108, 83, 36, 12, 0, 11, 67,
+			128, 228, 64, 50, 35, 101, 35, 51, 0, 15, 68, 125, 193, 200, 68, 65, 35, 104, 17, 108, 71, 36, 51, 0, 12, 67, 125, 183, 147, 65,
+			39, 83, 55, 36, 89, 0, 14, 69, 124, 119, 162, 128, 240, 65, 108, 55, 40, 50, 72, 0, 18, 69, 112, 242, 30, 128, 240, 104, 17, 35,
+			72, 71, 39, 55, 35, 50, 72, 0, 21, 72, 79, 56, 48, 70, 34, 145, 138, 0, 89, 37, 50, 49, 51, 39, 47, 51, 39, 50, 0, 17,
+			69, 77, 18, 30, 128, 240, 89, 35, 51, 71, 39, 55, 35, 50, 72, 0, 19, 70, 61, 19, 240, 83, 51, 225, 72, 35, 51, 72, 49, 36,
+			91, 37, 72, 36, 0, 17, 69, 51, 20, 72, 128, 240, 75, 36, 81, 35, 51, 71, 35, 50, 72, 0, 15, 69, 49, 18, 226, 126, 16, 75,
+			39, 51, 89, 40, 65, 36, 0, 14, 68, 34, 1, 200, 68, 71, 35, 50, 108, 71, 35, 51, 0, 20, 70, 33, 24, 49, 75, 51, 225, 71,
+			35, 51, 50, 35, 81, 39, 88, 37, 72, 36, 0, 13, 68, 32, 115, 138, 68, 71, 108, 101, 47, 35, 51, 0, 15, 69, 29, 53, 226, 70,
+			16, 39, 89, 47, 40, 51, 36, 12, 0, 15, 69, 29, 28, 51, 62, 16, 39, 51, 49, 37, 72, 36, 12, 0, 19, 70, 28, 196, 71, 129,
+			67, 225, 36, 75, 51, 108, 50, 35, 91, 39, 72, 36, 0, 14, 69, 9, 23, 226, 128, 240, 108, 51, 65, 39, 50, 72, 0, 0, 13, 68,
+			194, 12, 91, 136, 49, 39, 50, 81, 83, 39, 0, 12, 67, 137, 40, 146, 84, 36, 88, 84, 36, 88, 0, 14, 68, 133, 184, 91, 136, 107,
+			39, 83, 107, 39, 83, 40, 0, 17, 69, 125, 145, 214, 60, 160, 65, 39, 19, 108, 88, 36, 72, 35, 47, 0, 14, 68, 124, 215, 171, 204,
+			65, 35, 107, 35, 55, 55, 37, 0, 10, 67, 80, 252, 192, 91, 39, 72, 37, 0, 11, 67, 48, 252, 192, 75, 36, 72, 72, 37, 0, 14,
+			68, 29, 59, 81, 204, 36, 89, 48, 36, 51, 36, 57, 0, 14, 69, 29, 59, 71, 68, 160, 36, 89, 48, 108, 51, 47, 0, 14, 68, 9,
+			244, 82, 80, 108, 65, 39, 51, 88, 36, 91, 0, 0, 18, 70, 197, 28, 224, 122, 3, 192, 81, 36, 51, 37, 50, 55, 35, 50, 72, 0,
+			11, 67, 183, 52, 145, 48, 37, 88, 39, 51, 0, 16, 69, 181, 28, 223, 41, 16, 48, 36, 51, 37, 65, 36, 47, 51, 0, 12, 67, 181,
+			24, 145, 48, 35, 51, 84, 35, 51, 0, 15, 69, 136, 114, 159, 41, 16, 84, 108, 47, 65, 36, 47, 51, 0, 13, 68, 127, 59, 81, 76,
+			65, 37, 48, 39, 51, 89, 0, 11, 67, 125, 24, 145, 65, 39, 51, 40, 51, 0, 17, 70, 122, 40, 7, 180, 116, 112, 55, 39, 50, 108,
+			48, 108, 51, 49, 0, 13, 67, 89, 24, 145, 88, 35, 6, 51, 40, 12, 51, 0, 17, 70, 72, 196, 79, 204, 248, 64, 88, 35, 75, 51,
+			72, 37, 72, 36, 0, 20, 70, 60, 226, 145, 101, 248, 64, 72, 39, 101, 47, 35, 51, 35, 65, 65, 36, 12, 0, 11, 67, 53, 19, 0,
+			107, 35, 51, 35, 75, 0, 11, 67, 52, 117, 145, 107, 108, 88, 36, 51, 0, 11, 67, 49, 56, 145, 75, 35, 89, 40, 51, 0, 14, 69,
+			35, 53, 25, 137, 16, 71, 37, 91, 39, 40, 51, 0, 16, 69, 33, 232, 159, 41, 16, 71, 39, 55, 39, 65, 36, 47, 51, 0, 19, 70,
+			33, 28, 82, 206, 3, 192, 71, 35, 51, 81, 39, 88, 37, 50, 35, 72, 0, 15, 69, 30, 36, 74, 137, 16, 39, 84, 36, 51, 47, 40,
+			51, 0, 10, 3, 95, 50, 88, 71, 37, 89, 47, 0, 0, 12, 67, 134, 36, 128, 107, 35, 84, 84, 35, 88, 0, 12, 67, 133, 252, 115,
+			107, 35, 65, 36, 81, 37, 0, 15, 68, 125, 146, 145, 88, 65, 39, 19, 47, 35, 51, 36, 88, 0, 16, 69, 57, 248, 143, 199, 48, 101,
+			35, 65, 40, 72, 36, 81, 37, 0, 12, 67, 33, 36, 98, 71, 39, 88, 51, 39, 84, 0, 16, 69, 10, 20, 202, 199, 48, 108, 107, 36,
+			89, 47, 36, 81, 37, 0, 15, 69, 9, 56, 143, 199, 48, 108, 89, 40, 72, 36, 81, 37, 0, 0, 16, 68, 181, 23, 138, 68, 48, 39,
+			51, 39, 55, 36, 47, 36, 51, 0, 20, 70, 181, 18, 51, 130, 3, 225, 48, 39, 51, 71, 37, 50, 35, 50, 72, 36, 12, 0, 11, 67,
+			129, 184, 147, 50, 39, 83, 40, 89, 0, 13, 67, 112, 132, 83, 104, 17, 36, 71, 51, 36, 89, 0, 11, 67, 88, 250, 192, 88, 36, 72,
+			72, 36, 0, 14, 68, 61, 39, 202, 68, 72, 39, 88, 65, 36, 47, 51, 0, 13, 68, 40, 114, 243, 68, 47, 35, 19, 89, 37, 51, 0,
+			13, 68, 40, 50, 243, 68, 47, 35, 19, 89, 37, 51, 0, 15, 69, 30, 12, 94, 205, 48, 36, 50, 81, 36, 55, 37, 89, 0, 18, 70,
+			29, 236, 10, 70, 40, 0, 36, 55, 36, 49, 47, 36, 51, 39, 50, 0, 14, 69, 29, 60, 7, 131, 0, 36, 89, 49, 108, 50, 49, 0,
+			15, 68, 29, 40, 24, 68, 35, 88, 50, 35, 88, 35, 51, 36, 0, 0, 13, 68, 194, 40, 48, 80, 49, 40, 50, 49, 36, 91, 0, 19,
+			70, 186, 3, 220, 128, 252, 192, 76, 35, 50, 72, 104, 17, 35, 50, 72, 37, 0, 15, 68, 181, 24, 28, 80, 48, 39, 51, 50, 35, 104,
+			17, 91, 0, 11, 67, 128, 123, 82, 50, 108, 48, 35, 88, 0, 19, 69, 124, 135, 154, 30, 0, 65, 39, 71, 35, 55, 55, 36, 104, 17,
+			108, 50, 0, 15, 68, 77, 20, 160, 80, 89, 35, 51, 88, 35, 50, 36, 91, 0, 18, 70, 73, 252, 224, 71, 51, 138, 88, 35, 65, 37,
+			50, 51, 37, 101, 47, 0, 18, 70, 42, 36, 91, 43, 28, 192, 47, 40, 51, 35, 83, 47, 36, 81, 37, 0, 14, 68, 33, 36, 113, 204,
+			71, 39, 88, 39, 51, 81, 37, 0, 16, 70, 29, 28, 71, 128, 252, 192, 39, 51, 81, 108, 50, 72, 37, 0, 0, 17, 69, 125, 50, 141,
+			89, 16, 65, 39, 89, 47, 35, 107, 88, 35, 51, 0, 13, 68, 110, 39, 176, 76, 83, 40, 55, 36, 49, 89, 0, 11, 67, 70, 35, 240,
+			51, 40, 72, 35, 49, 0, 14, 68, 69, 183, 176, 76, 51, 36, 83, 55, 36, 49, 89, 0, 19, 70, 31, 4, 237, 122, 36, 81, 36, 49,
+			89, 48, 36, 55, 39, 51, 36, 51, 0, 10, 67, 30, 23, 235, 35, 107, 35, 65, 0, 19, 70, 29, 236, 30, 137, 242, 145, 35, 55, 49,
+			39, 55, 39, 65, 36, 47, 51, 0, 15, 69, 9, 246, 226, 41, 16, 108, 65, 83, 39, 47, 36, 51, 0, 0, 20, 70, 193, 225, 219, 70,
+			12, 115, 49, 39, 55, 108, 83, 35, 51, 35, 50, 81, 37, 0, 12, 67, 126, 2, 128, 65, 36, 50, 50, 35, 47, 0, 18, 70, 68, 119,
+			225, 69, 244, 128, 51, 108, 65, 107, 39, 51, 65, 39, 88, 0, 13, 67, 48, 115, 242, 75, 108, 72, 72, 36, 57, 36, 0, 12, 67, 45,
+			151, 136, 89, 35, 19, 55, 35, 71, 0, 24, 71, 34, 3, 209, 41, 28, 31, 128, 71, 35, 50, 72, 35, 51, 47, 39, 51, 49, 35, 65,
+			35, 50, 0, 0, 11, 67, 193, 76, 207, 49, 36, 91, 37, 72, 0, 13, 68, 182, 36, 95, 192, 48, 40, 51, 65, 35, 49, 0, 19, 70,
+			182, 24, 7, 131, 20, 64, 48, 35, 107, 50, 108, 50, 36, 81, 35, 51, 0, 19, 70, 181, 52, 71, 128, 244, 64, 48, 36, 89, 35, 51,
+			35, 50, 72, 35, 51, 0, 19, 70, 70, 34, 19, 183, 52, 64, 51, 39, 71, 36, 89, 48, 37, 57, 36, 51, 0, 11, 67, 52, 250, 192,
+			107, 35, 72, 72, 36, 0, 23, 72, 33, 17, 224, 60, 116, 160, 62, 16, 71, 35, 51, 35, 50, 72, 108, 88, 35, 50, 72, 36, 0, 0,
+			11, 67, 181, 28, 0, 48, 35, 51, 35, 49, 0, 14, 67, 125, 100, 74, 65, 35, 88, 36, 51, 51, 35, 47, 0, 11, 67, 84, 119, 202,
+			89, 108, 65, 36, 47, 0, 13, 68, 78, 39, 155, 188, 89, 39, 55, 83, 36, 90, 0, 21, 71, 70, 12, 72, 28, 226, 177, 204, 51, 35,
+			50, 81, 71, 108, 101, 47, 36, 81, 37, 0, 20, 70, 63, 4, 84, 128, 248, 128, 72, 36, 49, 36, 51, 36, 91, 36, 50, 72, 39, 0,
+			16, 68, 62, 28, 15, 200, 72, 36, 107, 49, 35, 72, 36, 57, 36, 0, 18, 70, 32, 252, 7, 71, 28, 192, 71, 35, 72, 49, 108, 51,
+			36, 81, 37, 0, 16, 69, 32, 243, 148, 30, 0, 71, 35, 72, 35, 101, 91, 108, 50, 0, 16, 70, 28, 248, 135, 68, 248, 128, 36, 72,
+			84, 108, 51, 72, 39, 0, 0, 15, 68, 180, 244, 76, 60, 48, 36, 72, 35, 51, 75, 35, 72, 0, 19, 71, 31, 1, 222, 206, 210, 162,
+			76, 39, 49, 108, 55, 37, 48, 47, 40, 89, 0, 0, 23, 72, 181, 52, 78, 136, 120, 15, 199, 48, 48, 36, 89, 35, 51, 101, 108, 50,
+			72, 36, 81, 37, 0, 12, 68, 139, 52, 179, 40, 84, 37, 88, 37, 47, 0, 15, 68, 125, 72, 145, 40, 65, 35, 91, 84, 36, 51, 35,
+			47, 0, 11, 67, 124, 204, 200, 65, 39, 75, 37, 71, 0, 19, 70, 108, 168, 147, 128, 164, 128, 83, 39, 47, 39, 89, 35, 50, 47, 36,
+			88, 0, 15, 68, 57, 22, 158, 40, 101, 35, 51, 104, 17, 35, 55, 47, 0, 0, 11, 67, 185, 76, 207, 76, 36, 91, 37, 72, 0, 13,
+			67, 113, 72, 49, 104, 17, 35, 91, 35, 50, 81, 0, 19, 71, 68, 131, 226, 80, 119, 200, 68, 51, 39, 71, 72, 39, 91, 108, 65, 51,
+			0, 15, 69, 48, 124, 30, 204, 240, 75, 108, 49, 36, 55, 37, 72, 0, 16, 69, 29, 59, 97, 32, 240, 36, 89, 48, 35, 107, 71, 39,
+			72, 0, 0, 11, 67, 183, 8, 0, 48, 36, 49, 35, 50, 0, 15, 69, 125, 40, 155, 204, 160, 65, 36, 88, 39, 83, 37, 47, 0, 17,
+			69, 124, 161, 200, 100, 160, 65, 39, 47, 108, 71, 36, 19, 35, 47, 0, 21, 71, 80, 124, 81, 60, 120, 49, 204, 91, 108, 81, 36, 51,
+			72, 108, 50, 36, 81, 37, 0, 11, 67, 60, 117, 10, 72, 6, 108, 91, 47, 0, 21, 71, 35, 51, 199, 69, 67, 241, 204, 71, 37, 72,
+			108, 51, 91, 39, 72, 36, 81, 37, 0, 16, 69, 34, 18, 145, 206, 0, 71, 36, 107, 47, 35, 51, 37, 50, 0, 0, 18, 70, 137, 19,
+			194, 137, 19, 192, 84, 35, 51, 72, 108, 84, 35, 51, 72, 0, 30, 74, 126, 11, 147, 41, 28, 226, 128, 124, 202, 60, 65, 35, 50, 76,
+			36, 89, 47, 36, 51, 57, 40, 50, 108, 57, 47, 36, 72, 0, 14, 68, 57, 27, 160, 196, 101, 35, 51, 76, 35, 50, 81, 0, 13, 67,
+			40, 135, 0, 6, 47, 35, 71, 35, 104, 17, 0, 15, 69, 35, 56, 27, 137, 0, 71, 37, 50, 39, 83, 40, 88, 0, 0, 18, 69, 182,
+			247, 209, 63, 32, 48, 35, 90, 65, 39, 51, 72, 36, 57, 36, 0, 13, 68, 127, 60, 20, 40, 65, 37, 49, 39, 91, 47, 0, 15, 69,
+			102, 3, 222, 204, 128, 35, 50, 72, 35, 55, 37, 71, 0, 10, 66, 95, 48, 47, 36, 57, 57, 36, 0, 19, 70, 34, 20, 85, 137, 18,
+			128, 71, 36, 107, 35, 51, 89, 40, 51, 35, 47, 0, 8, 66, 31, 48, 37, 12, 0, 76, 0, 19, 70, 193, 28, 211, 43, 56, 0, 49,
+			36, 51, 37, 89, 47, 37, 57, 35, 50, 0, 12, 67, 192, 132, 71, 6, 49, 39, 71, 51, 108, 0, 12, 67, 126, 3, 71, 6, 65, 36,
+			50, 107, 108, 0, 14, 67, 113, 118, 71, 104, 17, 35, 47, 19, 6, 35, 50, 0, 19, 70, 82, 17, 207, 43, 56, 0, 91, 35, 107, 108,
+			72, 35, 47, 36, 57, 50, 0, 18, 70, 40, 131, 179, 71, 8, 0, 47, 35, 71, 101, 37, 51, 49, 39, 50, 0, 15, 69, 10, 2, 145,
+			207, 0, 108, 50, 47, 37, 51, 37, 49, 0, 17, 65, 36, 6, 47, 108, 57, 36, 20, 4, 47, 35, 19, 50, 37, 89, 0, 0, 16, 69,
+			136, 119, 143, 206, 0, 84, 108, 55, 36, 72, 36, 57, 50, 0, 17, 69, 133, 248, 33, 80, 160, 107, 35, 65, 50, 36, 107, 36, 91, 47,
+			0, 16, 69, 126, 8, 47, 204, 160, 65, 36, 50, 35, 50, 90, 37, 47, 0, 0, 15, 68, 136, 119, 25, 28, 84, 108, 104, 17, 36, 19,
+			35, 50, 0, 10, 67, 128, 241, 192, 50, 36, 72, 108, 0, 15, 68, 105, 244, 143, 28, 104, 17, 35, 65, 88, 36, 72, 108, 0, 17, 70,
+			62, 39, 135, 186, 12, 64, 72, 39, 55, 108, 76, 35, 50, 81, 0, 18, 70, 42, 12, 71, 42, 12, 64, 47, 35, 50, 81, 108, 47, 35,
+			50, 81, 0, 19, 70, 29, 225, 240, 122, 12, 64, 35, 55, 55, 108, 49, 39, 55, 35, 50, 81, 0, 11, 3, 95, 52, 88, 76, 36, 107,
+			36, 55, 0, 0, 11, 67, 125, 76, 51, 65, 36, 91, 49, 37, 0, 13, 67, 109, 24, 51, 83, 36, 6, 51, 36, 50, 37, 0, 10, 67,
+			53, 34, 0, 107, 36, 88, 71, 0, 27, 72, 33, 71, 7, 34, 212, 96, 63, 32, 71, 39, 91, 104, 17, 108, 71, 48, 35, 51, 35, 50,
+			72, 36, 57, 36, 0, 18, 70, 32, 117, 94, 28, 130, 128, 71, 108, 89, 35, 55, 108, 71, 35, 47, 0, 0, 11, 67, 128, 198, 192, 50,
+			35, 75, 35, 83, 0, 12, 67, 101, 243, 199, 19, 35, 65, 72, 35, 50, 0, 11, 67, 101, 22, 199, 39, 51, 35, 83, 108, 0, 12, 67,
+			97, 22, 199, 88, 39, 51, 35, 83, 108, 0, 12, 67, 89, 150, 199, 88, 39, 19, 35, 83, 108, 0, 12, 67, 85, 22, 199, 89, 36, 51,
+			83, 35, 50, 0, 14, 67, 62, 39, 199, 72, 39, 84, 84, 39, 65, 35, 50, 0, 19, 70, 29, 234, 199, 193, 232, 49, 35, 55, 55, 108,
+			49, 39, 55, 35, 50, 81, 0, 17, 70, 29, 55, 226, 195, 56, 49, 36, 89, 65, 39, 49, 37, 50, 81, 0, 18, 70, 29, 50, 145, 123,
+			56, 49, 36, 89, 47, 36, 51, 55, 37, 50, 81, 0, 10, 67, 28, 230, 199, 36, 101, 83, 108, 0, 0, 17, 70, 194, 36, 81, 131, 28,
+			192, 49, 40, 51, 51, 35, 50, 81, 37, 0, 18, 70, 136, 114, 145, 181, 232, 128, 84, 108, 47, 36, 51, 48, 39, 55, 39, 0, 18, 70,
+			133, 241, 225, 131, 28, 192, 107, 35, 65, 108, 107, 35, 50, 81, 37, 0, 15, 69, 131, 56, 138, 138, 0, 50, 37, 57, 39, 47, 39, 50,
+			0, 11, 67, 127, 55, 128, 65, 36, 12, 57, 55, 0, 9, 66, 73, 192, 88, 39, 104, 17, 0, 18, 70, 53, 71, 207, 29, 28, 192, 107,
+			35, 91, 35, 65, 72, 108, 51, 37, 0, 11, 67, 45, 199, 128, 89, 36, 104, 17, 55, 0, 14, 69, 32, 117, 10, 206, 0, 71, 108, 91,
+			47, 37, 50, 0, 10, 67, 30, 220, 0, 39, 48, 36, 49, 0, 18, 70, 10, 4, 219, 29, 236, 202, 108, 50, 89, 36, 83, 108, 55, 37,
+			47, 0, 0, 13, 67, 182, 3, 31, 6, 48, 35, 50, 75, 39, 65, 0, 12, 68, 134, 40, 15, 28, 107, 39, 50, 72, 108, 0, 14, 68,
+			125, 97, 219, 28, 65, 39, 88, 108, 83, 35, 50, 0, 13, 68, 124, 115, 17, 28, 65, 108, 75, 35, 51, 108, 0, 12, 67, 123, 8, 64,
+			55, 35, 49, 49, 36, 12, 0, 14, 68, 53, 104, 145, 28, 107, 39, 88, 40, 51, 35, 50, 0, 13, 68, 31, 2, 155, 28, 36, 49, 47,
+			36, 83, 108, 0, 14, 68, 29, 226, 33, 28, 39, 55, 10, 71, 35, 107, 108, 0, 0, 12, 67, 204, 180, 72, 57, 35, 89, 51, 36, 71,
+			0, 12, 67, 197, 23, 200, 81, 39, 51, 39, 65, 71, 0, 13, 67, 114, 2, 30, 104, 17, 39, 65, 71, 39, 55, 0, 16, 69, 109, 24,
+			96, 199, 48, 83, 35, 51, 107, 35, 50, 81, 37, 0, 8, 66, 77, 224, 89, 36, 55, 0, 16, 69, 77, 24, 96, 199, 48, 89, 35, 51,
+			107, 35, 50, 81, 37, 0, 8, 66, 73, 224, 88, 39, 55, 0, 8, 66, 69, 224, 51, 39, 55, 0, 16, 69, 57, 23, 224, 63, 48, 101,
+			39, 51, 65, 35, 50, 72, 37, 0, 12, 67, 54, 2, 30, 107, 35, 50, 71, 35, 55, 0, 16, 69, 41, 28, 222, 191, 48, 47, 36, 51,
+			37, 55, 39, 90, 37, 0, 23, 73, 29, 50, 135, 111, 55, 162, 194, 44, 0, 36, 89, 47, 108, 83, 37, 55, 39, 49, 39, 49, 0, 9,
+			4, 95, 35, 115, 116, 39, 65, 0, 0, 11, 67, 126, 36, 161, 65, 40, 88, 36, 12, 0, 14, 67, 126, 35, 33, 65, 39, 84, 35, 75,
+			75, 35, 107, 0, 15, 68, 126, 4, 204, 124, 65, 39, 50, 89, 35, 75, 36, 65, 0, 15, 68, 125, 151, 171, 124, 65, 39, 19, 35, 55,
+			55, 36, 65, 0, 14, 68, 125, 97, 217, 108, 65, 39, 88, 108, 19, 35, 83, 0, 14, 67, 125, 67, 207, 65, 39, 91, 35, 72, 72, 35,
+			72, 0, 18, 69, 124, 210, 145, 124, 112, 65, 39, 107, 47, 35, 51, 35, 65, 35, 50, 0, 18, 69, 124, 194, 159, 100, 112, 65, 39, 75,
+			47, 35, 65, 36, 19, 35, 50, 0, 22, 72, 29, 252, 209, 29, 20, 222, 30, 0, 35, 65, 37, 51, 35, 51, 89, 35, 55, 108, 50, 0,
+			17, 70, 29, 50, 161, 32, 120, 0, 36, 89, 47, 35, 107, 71, 108, 50, 0, 15, 69, 29, 50, 143, 100, 112, 36, 89, 47, 36, 72, 19,
+			108, 0, 0, 12, 67, 197, 228, 160, 81, 39, 55, 88, 35, 50, 0, 12, 67, 137, 27, 224, 84, 36, 51, 90, 36, 50, 0, 13, 67, 129,
+			199, 202, 50, 36, 104, 17, 65, 35, 47, 0, 10, 67, 123, 55, 128, 55, 35, 57, 55, 0, 12, 67, 83, 6, 202, 91, 36, 49, 39, 83,
+			47, 0, 16, 69, 71, 1, 200, 74, 0, 51, 36, 49, 108, 71, 88, 35, 50, 0, 12, 67, 70, 38, 160, 51, 39, 104, 17, 35, 50, 0,
+			18, 70, 57, 76, 51, 63, 28, 192, 101, 39, 91, 49, 37, 72, 36, 81, 37, 0, 10, 67, 53, 40, 0, 107, 39, 88, 50, 0, 12, 67,
+			34, 4, 160, 71, 35, 50, 88, 35, 50, 0, 18, 70, 32, 251, 115, 123, 28, 192, 71, 35, 72, 48, 37, 55, 36, 81, 37, 0, 16, 69,
+			32, 168, 98, 138, 0, 71, 36, 47, 107, 39, 84, 36, 50, 0, 15, 69, 30, 12, 72, 206, 0, 35, 50, 81, 35, 71, 37, 50, 0, 14,
+			68, 29, 55, 200, 120, 35, 89, 36, 65, 71, 36, 55, 0, 0, 15, 68, 181, 56, 15, 60, 48, 35, 89, 35, 50, 72, 35, 72, 0, 14,
+			68, 181, 24, 175, 132, 48, 39, 51, 39, 90, 36, 12, 0, 14, 67, 126, 38, 27, 65, 39, 84, 35, 88, 88, 35, 83, 0, 17, 68, 41,
+			152, 107, 60, 47, 35, 19, 10, 35, 107, 10, 107, 39, 72, 0, 14, 67, 40, 119, 159, 47, 35, 19, 35, 55, 55, 39, 65, 0, 14, 68,
+			28, 200, 136, 132, 35, 57, 84, 35, 71, 36, 12, 0, 13, 68, 28, 193, 210, 132, 36, 75, 108, 88, 36, 12, 0, 12, 3, 95, 53, 88,
+			48, 35, 50, 75, 108, 107, 0, 0, 13, 68, 198, 36, 112, 128, 81, 40, 51, 49, 35, 50, 0, 13, 68, 192, 116, 112, 128, 49, 108, 51,
+			49, 39, 50, 0, 17, 69, 181, 24, 138, 193, 224, 48, 39, 51, 39, 47, 39, 49, 39, 55, 0, 13, 68, 180, 115, 202, 128, 48, 108, 72,
+			47, 35, 50, 0, 14, 68, 137, 33, 209, 40, 84, 36, 88, 108, 51, 35, 47, 0, 14, 68, 137, 17, 203, 40, 84, 36, 51, 108, 89, 35,
+			47, 0, 14, 68, 134, 12, 91, 40, 107, 35, 50, 81, 39, 83, 47, 0, 14, 68, 125, 17, 209, 40, 65, 35, 51, 108, 51, 35, 47, 0,
+			18, 69, 124, 163, 158, 57, 224, 65, 39, 47, 36, 101, 35, 55, 101, 36, 55, 0, 14, 68, 121, 113, 219, 40, 55, 36, 47, 108, 83, 35,
+			47, 0, 13, 68, 63, 1, 209, 40, 72, 36, 49, 108, 51, 47, 0, 14, 68, 57, 49, 209, 40, 101, 36, 89, 108, 51, 35, 47, 0, 15,
+			68, 53, 193, 209, 40, 107, 36, 104, 17, 108, 51, 35, 47, 0, 11, 67, 42, 40, 30, 47, 40, 50, 36, 55, 0, 14, 68, 42, 33, 210,
+			128, 47, 35, 84, 108, 88, 39, 50, 0, 12, 67, 42, 2, 30, 47, 35, 50, 71, 35, 55, 0, 14, 68, 40, 140, 217, 40, 47, 35, 71,
+			37, 19, 35, 47, 0, 14, 68, 29, 193, 223, 40, 36, 104, 17, 108, 65, 35, 47, 0, 10, 67, 28, 242, 0, 35, 72, 35, 71, 0, 0,
+			11, 67, 198, 35, 33, 81, 39, 75, 36, 12, 0, 12, 67, 194, 24, 33, 49, 39, 107, 50, 36, 12, 0, 13, 67, 125, 55, 161, 65, 36,
+			89, 35, 55, 55, 36, 0, 15, 68, 124, 164, 76, 124, 65, 39, 47, 35, 51, 75, 36, 65, 0, 12, 67, 80, 216, 33, 91, 36, 107, 50,
+			36, 12, 0, 12, 67, 68, 162, 33, 51, 39, 47, 71, 36, 12, 0, 11, 67, 61, 71, 225, 72, 36, 91, 65, 36, 0, 12, 67, 57, 114,
+			33, 101, 39, 47, 71, 36, 12, 0, 10, 67, 54, 37, 0, 107, 39, 12, 91, 0, 18, 70, 33, 229, 34, 205, 39, 192, 71, 39, 55, 91,
+			39, 84, 37, 88, 65, 0, 18, 69, 32, 114, 162, 50, 16, 71, 108, 47, 35, 84, 35, 75, 75, 39, 107, 0, 17, 70, 10, 2, 145, 29,
+			56, 0, 108, 50, 47, 51, 108, 89, 36, 50, 0, 12, 67, 9, 248, 33, 108, 65, 36, 50, 36, 12, 0, 0, 12, 67, 193, 18, 32, 49,
+			35, 51, 71, 39, 50, 0, 18, 69, 181, 23, 15, 124, 160, 48, 39, 51, 104, 17, 36, 72, 65, 35, 47, 0, 21, 71, 135, 59, 81, 181,
+			225, 210, 204, 107, 37, 48, 36, 51, 48, 36, 55, 108, 88, 37, 0, 18, 69, 109, 17, 215, 33, 192, 83, 35, 51, 108, 47, 35, 71, 35,
+			104, 17, 0, 15, 69, 77, 232, 155, 138, 0, 89, 36, 55, 39, 83, 39, 50, 0, 16, 70, 76, 120, 19, 204, 135, 128, 89, 108, 50, 89,
+			37, 71, 55, 0, 11, 67, 68, 115, 74, 51, 108, 107, 35, 47, 0, 12, 67, 61, 71, 224, 72, 39, 91, 65, 35, 50, 0, 15, 68, 58,
+			33, 209, 48, 101, 35, 6, 84, 108, 51, 36, 75, 0, 13, 67, 43, 55, 224, 47, 35, 57, 65, 65, 39, 50, 0, 14, 67, 41, 252, 32,
+			47, 35, 65, 35, 49, 49, 39, 50, 0, 15, 68, 40, 231, 142, 120, 47, 35, 101, 35, 55, 101, 39, 55, 0, 16, 69, 35, 55, 179, 138,
+			0, 6, 65, 37, 55, 57, 40, 12, 50, 0, 10, 67, 29, 236, 0, 35, 55, 35, 49, 0, 13, 68, 10, 8, 155, 120, 108, 50, 39, 83,
+			36, 55, 0, 6, 65, 168, 36, 12, 0, 0, 14, 68, 197, 44, 224, 132, 81, 39, 88, 37, 50, 36, 12, 0, 15, 68, 137, 19, 224, 132,
+			84, 35, 51, 72, 35, 50, 36, 12, 0, 14, 68, 135, 55, 224, 132, 107, 36, 57, 65, 35, 50, 36, 0, 10, 67, 135, 51, 209, 107, 37,
+			72, 51, 0, 17, 69, 125, 236, 226, 129, 240, 65, 37, 55, 57, 40, 12, 50, 39, 65, 0, 12, 67, 124, 199, 209, 65, 36, 75, 65, 35,
+			51, 0, 16, 69, 124, 164, 98, 129, 240, 65, 36, 47, 51, 39, 50, 39, 65, 0, 13, 67, 113, 227, 209, 104, 17, 39, 55, 72, 39, 51,
+			0, 17, 70, 109, 24, 142, 137, 19, 192, 83, 39, 51, 40, 101, 39, 51, 72, 0, 14, 68, 101, 113, 209, 60, 10, 35, 47, 108, 51, 39,
+			72, 0, 13, 68, 69, 40, 159, 132, 51, 36, 88, 39, 65, 36, 0, 14, 68, 61, 17, 217, 132, 72, 39, 51, 51, 108, 19, 36, 0, 13,
+			68, 41, 236, 222, 132, 47, 35, 55, 37, 55, 36, 0, 14, 68, 40, 196, 72, 132, 47, 35, 75, 51, 39, 71, 36, 0, 14, 67, 32, 215,
+			0, 71, 36, 107, 35, 104, 17, 104, 17, 0, 13, 68, 32, 168, 160, 132, 71, 35, 47, 40, 50, 36, 0, 12, 68, 31, 56, 48, 132, 37,
+			50, 49, 36, 12, 0, 15, 69, 30, 210, 179, 125, 240, 39, 48, 47, 37, 65, 39, 65, 0, 12, 68, 29, 230, 97, 60, 39, 55, 35, 107,
+			72, 0, 0, 13, 68, 194, 40, 48, 128, 49, 40, 50, 49, 39, 50, 0, 11, 67, 194, 12, 98, 49, 39, 50, 81, 39, 0, 13, 68, 192,
+			116, 72, 128, 49, 108, 51, 71, 39, 50, 0, 17, 68, 126, 39, 43, 40, 65, 39, 84, 35, 104, 17, 104, 17, 35, 47, 0, 12, 67, 61,
+			231, 226, 72, 36, 55, 35, 65, 39, 0, 13, 68, 29, 241, 240, 128, 35, 65, 108, 49, 36, 50, 0, 13, 68, 10, 216, 158, 128, 108, 48,
+			39, 55, 39, 50, 0, 10, 67, 10, 2, 179, 108, 50, 47, 37, 0, 13, 68, 9, 241, 210, 128, 108, 65, 108, 88, 39, 50, 0, 11, 67,
+			8, 140, 20, 108, 71, 49, 36, 91, 0, 8, 66, 35, 48, 71, 37, 0, 76, 0, 15, 68, 207, 3, 241, 68, 57, 36, 49, 72, 36, 81,
+			35, 51, 0, 12, 67, 187, 5, 0, 76, 35, 49, 49, 39, 91, 0, 15, 68, 185, 232, 49, 68, 76, 36, 55, 35, 50, 81, 35, 51, 0,
+			17, 69, 127, 1, 222, 126, 16, 65, 39, 49, 108, 55, 36, 65, 36, 12, 0, 20, 70, 84, 243, 209, 136, 116, 161, 89, 35, 72, 72, 35,
+			51, 84, 108, 88, 36, 12, 0, 13, 68, 40, 124, 223, 68, 47, 108, 57, 65, 36, 51, 0, 13, 68, 34, 37, 33, 68, 71, 40, 91, 36,
+			107, 51, 0, 17, 70, 32, 115, 211, 136, 226, 161, 71, 108, 72, 89, 40, 101, 47, 36, 0, 13, 68, 30, 33, 223, 68, 35, 84, 108, 65,
+			36, 51, 0, 18, 70, 29, 236, 10, 71, 60, 0, 36, 55, 36, 49, 47, 36, 51, 37, 49, 0, 17, 69, 29, 227, 83, 130, 16, 39, 55,
+			107, 35, 89, 35, 50, 36, 12, 0, 0, 17, 69, 125, 241, 224, 100, 160, 65, 39, 65, 108, 50, 36, 19, 35, 47, 0, 13, 68, 124, 193,
+			210, 204, 65, 35, 75, 108, 88, 37, 0, 18, 69, 41, 23, 179, 138, 0, 6, 47, 36, 51, 36, 55, 57, 40, 12, 50, 0, 0, 17, 70,
+			185, 242, 7, 41, 248, 64, 76, 39, 65, 71, 108, 47, 65, 36, 0, 15, 68, 133, 248, 27, 76, 107, 35, 65, 50, 35, 83, 35, 89, 0,
+			14, 67, 124, 212, 81, 65, 39, 107, 35, 51, 51, 36, 51, 0, 14, 68, 109, 17, 209, 76, 83, 35, 51, 108, 51, 36, 89, 0, 12, 67,
+			78, 12, 81, 89, 35, 50, 81, 35, 51, 0, 12, 67, 55, 51, 209, 107, 36, 57, 72, 35, 51, 0, 15, 68, 41, 230, 240, 76, 47, 36,
+			55, 36, 83, 35, 49, 89, 0, 17, 69, 32, 252, 98, 133, 16, 71, 35, 72, 81, 39, 84, 107, 35, 51, 0, 15, 69, 28, 136, 136, 193,
+			16, 35, 71, 40, 71, 35, 49, 51, 0, 10, 3, 95, 54, 88, 91, 35, 89, 47, 0, 0, 12, 67, 181, 52, 98, 48, 35, 89, 51, 39,
+			12, 0, 11, 67, 137, 24, 51, 84, 36, 51, 50, 37, 0, 12, 67, 129, 23, 212, 50, 35, 51, 65, 36, 91, 0, 14, 69, 126, 40, 7,
+			194, 32, 65, 39, 50, 108, 49, 39, 0, 10, 67, 94, 34, 51, 47, 40, 71, 108, 0, 11, 67, 62, 34, 51, 72, 39, 71, 36, 57, 0,
+			15, 69, 9, 193, 217, 126, 32, 108, 104, 17, 108, 35, 65, 40, 0, 9, 4, 95, 35, 116, 104, 39, 65, 0, 0, 15, 69, 199, 52, 72,
+			193, 48, 81, 37, 51, 71, 39, 49, 89, 0, 19, 70, 125, 19, 224, 40, 120, 0, 65, 39, 51, 72, 35, 50, 36, 47, 108, 50, 0, 15,
+			68, 124, 227, 235, 68, 65, 39, 101, 35, 72, 72, 36, 51, 0, 17, 69, 114, 5, 226, 69, 48, 104, 17, 35, 50, 47, 40, 51, 39, 89,
+			0, 14, 69, 71, 55, 243, 193, 48, 51, 37, 65, 37, 49, 89, 0, 13, 68, 70, 44, 241, 68, 51, 40, 57, 81, 35, 51, 0, 18, 70,
+			61, 24, 160, 74, 20, 64, 72, 35, 51, 40, 50, 88, 35, 107, 51, 0, 11, 67, 57, 21, 0, 101, 35, 51, 35, 91, 0, 17, 70, 9,
+			228, 135, 205, 244, 64, 108, 55, 88, 108, 57, 65, 36, 51, 0, 0, 14, 68, 198, 33, 209, 80, 81, 39, 84, 108, 51, 36, 91, 0, 14,
+			68, 131, 17, 209, 80, 50, 36, 81, 108, 51, 36, 91, 0, 13, 68, 128, 114, 160, 204, 50, 108, 47, 35, 50, 37, 0, 15, 68, 125, 194,
+			160, 204, 65, 39, 104, 17, 47, 35, 50, 37, 0, 11, 67, 58, 12, 0, 101, 39, 50, 35, 49, 0, 13, 68, 51, 8, 146, 204, 75, 35,
+			49, 40, 88, 37, 0, 14, 68, 41, 18, 145, 136, 47, 36, 51, 47, 36, 51, 40, 0, 14, 68, 40, 196, 72, 204, 47, 35, 75, 51, 39,
+			71, 37, 0, 0, 11, 67, 120, 211, 192, 55, 35, 107, 35, 72, 0, 10, 67, 79, 52, 112, 89, 37, 51, 49, 0, 11, 67, 57, 23, 0,
+			101, 35, 51, 104, 17, 0, 15, 69, 32, 116, 179, 197, 16, 71, 108, 88, 37, 81, 35, 51, 0, 18, 70, 29, 21, 31, 204, 244, 192, 35,
+			51, 35, 91, 65, 37, 72, 39, 89, 0, 0, 13, 67, 130, 34, 50, 50, 39, 12, 71, 36, 57, 36, 0, 21, 72, 111, 55, 135, 69, 248,
+			160, 207, 0, 83, 37, 55, 108, 51, 65, 39, 50, 37, 49, 0, 20, 71, 109, 17, 224, 193, 184, 145, 40, 83, 36, 51, 108, 50, 49, 83,
+			39, 51, 47, 0, 13, 67, 105, 23, 200, 104, 17, 39, 51, 39, 65, 71, 0, 16, 69, 78, 36, 240, 193, 64, 89, 40, 89, 49, 10, 49,
+			39, 91, 0, 14, 67, 61, 19, 50, 72, 35, 51, 35, 75, 36, 57, 36, 0, 16, 69, 42, 35, 225, 131, 48, 47, 40, 72, 35, 107, 35,
+			50, 37, 0, 16, 69, 33, 24, 148, 131, 48, 71, 36, 51, 39, 91, 35, 50, 37, 0, 0, 17, 70, 82, 44, 34, 180, 116, 83, 91, 39,
+			49, 39, 48, 108, 51, 89, 0, 15, 69, 62, 34, 30, 193, 48, 72, 40, 71, 55, 36, 49, 89, 0, 13, 67, 32, 132, 79, 71, 36, 71,
+			35, 51, 35, 72, 0, 19, 69, 29, 231, 220, 61, 48, 39, 55, 65, 39, 104, 17, 35, 72, 72, 35, 89, 0, 17, 70, 28, 129, 205, 207,
+			20, 64, 36, 71, 108, 107, 37, 81, 35, 51, 0, 0, 10, 67, 185, 28, 0, 76, 36, 51, 49, 0, 12, 67, 130, 22, 202, 50, 35, 107,
+			39, 83, 47, 0, 14, 68, 63, 60, 10, 200, 72, 37, 49, 47, 36, 57, 36, 0, 18, 70, 61, 28, 199, 74, 12, 192, 72, 35, 51, 57,
+			108, 88, 35, 50, 37, 0, 12, 67, 55, 7, 202, 107, 36, 49, 65, 35, 47, 0, 16, 68, 54, 37, 94, 200, 107, 39, 12, 89, 36, 55,
+			36, 57, 36, 0, 11, 67, 53, 56, 0, 107, 35, 89, 35, 50, 0, 17, 69, 34, 3, 209, 197, 32, 71, 35, 50, 72, 35, 51, 81, 35,
+			88, 0, 0, 18, 70, 127, 55, 179, 29, 19, 209, 65, 37, 55, 57, 108, 51, 72, 36, 51, 0, 24, 72, 125, 183, 34, 60, 119, 135, 45,
+			16, 65, 35, 83, 104, 17, 40, 72, 39, 55, 35, 89, 35, 51, 0, 14, 68, 42, 33, 209, 44, 47, 35, 84, 108, 51, 39, 89, 0, 0,
+			19, 70, 124, 124, 51, 30, 39, 179, 65, 108, 49, 37, 57, 108, 84, 36, 55, 37, 0, 22, 72, 108, 116, 95, 31, 8, 158, 191, 48, 83,
+			108, 51, 65, 108, 49, 39, 55, 39, 90, 37, 0, 13, 68, 68, 123, 81, 40, 51, 108, 48, 39, 51, 47, 0, 14, 68, 49, 49, 209, 40,
+			75, 36, 89, 108, 51, 35, 47, 0, 16, 69, 28, 136, 158, 132, 128, 35, 71, 40, 55, 35, 107, 35, 71, 0, 0, 17, 70, 180, 120, 145,
+			187, 56, 0, 48, 108, 84, 35, 51, 76, 37, 50, 0, 17, 68, 112, 247, 15, 192, 104, 17, 39, 72, 104, 17, 39, 72, 35, 49, 0, 17,
+			69, 78, 20, 98, 68, 240, 89, 39, 107, 51, 36, 84, 35, 51, 72, 0, 15, 69, 77, 17, 223, 207, 0, 89, 36, 51, 108, 65, 37, 49,
+			0, 18, 70, 31, 56, 10, 69, 188, 19, 37, 50, 47, 36, 51, 83, 35, 49, 89, 0, 10, 67, 30, 39, 207, 40, 65, 35, 72, 0, 16,
+			70, 29, 28, 71, 131, 60, 0, 39, 51, 81, 108, 50, 37, 49, 0, 0, 18, 68, 124, 168, 140, 200, 65, 39, 47, 36, 84, 35, 75, 75,
+			36, 57, 36, 0, 11, 67, 57, 28, 0, 101, 35, 51, 35, 49, 0, 12, 67, 40, 138, 202, 47, 35, 71, 71, 35, 47, 0, 17, 71, 30,
+			44, 17, 31, 60, 224, 204, 39, 49, 51, 108, 37, 50, 37, 0, 10, 67, 28, 168, 128, 39, 47, 40, 12, 0, 15, 69, 10, 3, 33, 30,
+			0, 108, 50, 75, 35, 107, 108, 50, 0, 0, 14, 68, 197, 33, 209, 60, 81, 39, 88, 108, 51, 35, 72, 0, 17, 70, 181, 28, 240, 29,
+			19, 192, 48, 36, 51, 37, 49, 108, 51, 72, 0, 10, 67, 131, 1, 192, 50, 36, 49, 108, 0, 22, 72, 48, 120, 179, 60, 119, 135, 45,
+			16, 75, 108, 84, 37, 72, 39, 55, 35, 89, 35, 51, 0, 17, 70, 35, 55, 179, 29, 19, 192, 6, 71, 37, 55, 57, 108, 51, 72, 0,
+			17, 70, 33, 28, 241, 29, 19, 192, 71, 36, 51, 37, 81, 108, 51, 72, 0, 0, 15, 68, 125, 247, 176, 40, 65, 35, 65, 55, 36, 49,
+			35, 47, 0, 12, 67, 125, 230, 179, 65, 39, 55, 104, 17, 108, 0, 16, 70, 79, 55, 240, 29, 18, 128, 89, 37, 65, 49, 108, 51, 47,
+			0, 15, 68, 68, 248, 48, 40, 51, 36, 72, 36, 50, 49, 39, 47, 0, 17, 70, 41, 17, 240, 29, 178, 128, 47, 35, 51, 108, 49, 108,
+			83, 47, 0, 0, 24, 72, 206, 40, 7, 204, 163, 237, 69, 48, 57, 40, 50, 108, 57, 47, 36, 72, 48, 36, 51, 36, 89, 0, 19, 70,
+			128, 116, 173, 70, 36, 79, 50, 108, 88, 48, 35, 51, 84, 35, 51, 72, 0, 12, 67, 80, 229, 71, 91, 35, 101, 89, 35, 50, 0, 11,
+			67, 53, 18, 7, 107, 36, 51, 71, 108, 0, 11, 67, 33, 178, 135, 71, 35, 83, 47, 108, 0, 0, 14, 68, 78, 10, 202, 204, 89, 39,
+			50, 50, 35, 47, 37, 0, 12, 68, 72, 119, 200, 204, 88, 108, 65, 71, 37, 0, 24, 73, 71, 56, 143, 138, 241, 224, 205, 24, 128, 51,
+			37, 57, 39, 72, 39, 90, 108, 50, 37, 51, 39, 0, 26, 73, 30, 12, 7, 70, 12, 17, 62, 12, 192, 36, 50, 49, 108, 51, 50, 35,
+			49, 35, 51, 72, 35, 50, 37, 0, 24, 72, 29, 236, 10, 70, 38, 226, 69, 32, 36, 55, 36, 49, 47, 36, 51, 39, 83, 39, 51, 36,
+			88, 0, 0, 15, 68, 125, 200, 171, 28, 65, 39, 104, 17, 35, 84, 84, 108, 0, 13, 68, 32, 225, 209, 28, 71, 39, 101, 108, 51, 108,
+			0, 10, 67, 32, 193, 192, 71, 36, 75, 108, 0, 8, 66, 29, 240, 35, 65, 0, 76, 12, 3, 95, 56, 88, 107, 35, 91, 47, 108, 72,
+			0, 0, 14, 69, 183, 60, 34, 122, 32, 48, 37, 49, 39, 55, 39, 0, 17, 70, 124, 116, 113, 29, 18, 128, 65, 108, 51, 81, 108, 51,
+			36, 47, 0, 17, 69, 80, 164, 113, 122, 32, 91, 39, 47, 39, 51, 81, 35, 55, 40, 0, 14, 69, 42, 43, 98, 75, 48, 47, 40, 48,
+			40, 88, 37, 0, 18, 70, 32, 115, 81, 29, 18, 128, 71, 108, 107, 35, 51, 108, 51, 35, 47, 0, 19, 70, 29, 118, 199, 27, 58, 242,
+			36, 47, 83, 108, 37, 57, 57, 36, 57, 36, 0, 8, 65, 40, 6, 47, 36, 12, 0, 0, 10, 67, 206, 39, 192, 57, 39, 12, 65, 0,
+			17, 69, 131, 49, 200, 40, 112, 50, 37, 57, 108, 71, 35, 47, 35, 50, 0, 13, 67, 125, 18, 7, 65, 39, 51, 35, 71, 71, 108, 0,
+			20, 69, 124, 163, 209, 48, 112, 65, 39, 47, 35, 72, 35, 51, 51, 36, 75, 35, 50, 0, 12, 67, 101, 247, 135, 35, 65, 35, 55, 35,
+			50, 0, 11, 67, 101, 231, 199, 39, 55, 35, 65, 108, 0, 10, 67, 58, 38, 192, 101, 39, 84, 83, 0, 12, 67, 52, 167, 199, 107, 35,
+			47, 65, 35, 50, 0, 10, 67, 52, 119, 135, 107, 108, 55, 108, 0, 11, 67, 32, 119, 135, 6, 71, 108, 55, 108, 0, 11, 67, 29, 167,
+			199, 36, 104, 17, 65, 108, 0, 18, 70, 29, 50, 162, 30, 12, 0, 39, 89, 47, 39, 84, 108, 50, 35, 49, 0, 12, 67, 28, 210, 7,
+			35, 107, 36, 71, 71, 108, 0, 12, 67, 57, 37, 0, 101, 35, 88, 36, 91, 0, 48, 12, 67, 57, 37, 0, 101, 35, 88, 35, 91, 0,
+			46, 0, 15, 69, 182, 36, 179, 82, 0, 48, 39, 88, 37, 91, 36, 50, 0, 16, 69, 182, 23, 162, 30, 0, 48, 35, 107, 55, 35, 84,
+			108, 50, 0, 10, 67, 134, 39, 128, 107, 39, 12, 55, 0, 16, 70, 130, 34, 145, 206, 8, 128, 50, 39, 47, 51, 37, 50, 39, 0, 16,
+			68, 124, 167, 224, 204, 65, 39, 47, 36, 65, 35, 50, 50, 37, 0, 14, 68, 86, 3, 222, 204, 89, 35, 50, 72, 35, 55, 37, 0, 11,
+			67, 80, 167, 128, 91, 36, 47, 36, 55, 0, 9, 66, 33, 192, 71, 39, 104, 17, 0, 11, 67, 29, 199, 128, 35, 104, 17, 35, 55, 0,
+			8, 66, 29, 192, 39, 104, 17, 0, 10, 67, 29, 39, 128, 35, 88, 35, 55, 0, 15, 69, 28, 168, 147, 194, 208, 39, 47, 39, 89, 49,
+			39, 48, 0, 10, 67, 8, 167, 128, 108, 47, 36, 55, 0, 0, 10, 67, 198, 40, 64, 81, 39, 84, 36, 0, 13, 68, 189, 22, 224, 28,
+			90, 35, 51, 83, 50, 108, 0, 9, 67, 183, 56, 64, 48, 37, 107, 0, 10, 67, 183, 51, 0, 48, 36, 57, 75, 0, 14, 68, 136, 200,
+			136, 28, 84, 39, 75, 40, 71, 35, 50, 0, 20, 71, 131, 49, 224, 196, 116, 79, 60, 50, 35, 57, 35, 50, 81, 108, 51, 35, 72, 0,
+			14, 67, 125, 88, 27, 65, 39, 89, 35, 50, 50, 36, 83, 0, 14, 67, 125, 39, 155, 65, 39, 88, 35, 55, 55, 35, 83, 0, 15, 68,
+			107, 49, 200, 28, 104, 17, 37, 57, 108, 71, 35, 50, 0, 11, 67, 106, 34, 192, 104, 17, 39, 12, 89, 0, 11, 67, 78, 216, 64, 89,
+			36, 48, 35, 107, 0, 12, 67, 69, 50, 159, 51, 39, 89, 47, 35, 65, 0, 11, 67, 56, 114, 159, 101, 108, 47, 35, 65, 0, 14, 68,
+			44, 119, 224, 28, 89, 108, 65, 36, 50, 35, 50, 0, 13, 68, 30, 36, 202, 28, 35, 84, 36, 89, 47, 108, 0, 8, 66, 29, 176, 36,
+			83, 0, 46, 0, 14, 67, 125, 51, 30, 65, 39, 89, 35, 75, 75, 35, 55, 0, 13, 67, 114, 34, 128, 104, 17, 39, 84, 84, 35, 47,
+			0, 9, 66, 85, 224, 89, 36, 55, 55, 0, 16, 69, 82, 12, 207, 131, 48, 91, 36, 50, 37, 72, 35, 50, 37, 0, 8, 66, 81, 224,
+			91, 39, 55, 0, 12, 67, 33, 226, 30, 71, 39, 55, 71, 39, 55, 0, 15, 69, 30, 39, 7, 43, 48, 39, 12, 104, 17, 108, 47, 37,
+			0, 24, 73, 10, 12, 94, 137, 49, 240, 78, 40, 0, 108, 50, 81, 36, 55, 39, 89, 108, 49, 89, 39, 50, 0, 8, 66, 29, 224, 36,
+			55, 0, 46, 24, 5, 217, 130, 46, 217, 133, 104, 12, 12, 35, 71, 55, 10, 35, 88, 9, 65, 37, 55, 108, 72, 0, 46, 0, 14, 68,
+			181, 20, 142, 124, 48, 39, 51, 88, 35, 101, 65, 0, 15, 69, 135, 59, 176, 48, 112, 107, 37, 76, 49, 39, 75, 108, 0, 12, 67, 128,
+			226, 33, 50, 39, 101, 71, 36, 12, 0, 12, 67, 128, 132, 79, 50, 35, 71, 39, 51, 72, 0, 14, 69, 128, 114, 51, 128, 112, 50, 108,
+			71, 37, 50, 108, 0, 12, 67, 109, 19, 33, 83, 39, 51, 75, 36, 12, 0, 12, 67, 109, 18, 15, 83, 35, 51, 71, 39, 72, 0, 12,
+			67, 81, 146, 33, 91, 39, 19, 71, 36, 12, 0, 11, 67, 79, 53, 79, 89, 37, 89, 35, 72, 0, 18, 70, 73, 161, 222, 60, 120, 0,
+			88, 39, 104, 17, 108, 55, 72, 108, 50, 0, 12, 67, 49, 146, 33, 75, 35, 19, 71, 36, 12, 0, 12, 67, 42, 34, 33, 47, 39, 12,
+			71, 36, 12, 0, 13, 68, 35, 56, 24, 124, 71, 37, 50, 35, 88, 65, 0, 12, 67, 35, 52, 161, 71, 36, 57, 88, 36, 12, 0, 0,
+			10, 67, 183, 60, 0, 48, 36, 57, 49, 0, 10, 67, 181, 76, 0, 48, 36, 91, 49, 0, 11, 67, 180, 119, 138, 48, 108, 55, 36, 47,
+			0, 15, 69, 128, 116, 160, 206, 0, 50, 108, 88, 35, 50, 37, 50, 0, 12, 67, 113, 39, 128, 104, 17, 36, 88, 36, 55, 0, 12, 67,
+			105, 39, 128, 104, 17, 35, 88, 35, 55, 0, 16, 69, 79, 55, 200, 206, 0, 89, 37, 65, 71, 37, 57, 35, 50, 0, 10, 67, 55, 56,
+			0, 107, 36, 57, 50, 0, 12, 67, 33, 199, 128, 71, 35, 104, 17, 35, 55, 0, 11, 67, 31, 2, 138, 39, 49, 47, 36, 47, 0, 13,
+			68, 29, 53, 200, 120, 36, 89, 47, 35, 71, 55, 0, 14, 69, 29, 50, 135, 126, 208, 36, 89, 47, 108, 65, 48, 0, 0, 13, 68, 197,
+			49, 209, 60, 81, 39, 89, 108, 51, 72, 0, 11, 67, 195, 56, 64, 49, 37, 57, 36, 12, 0, 11, 67, 187, 56, 64, 76, 37, 57, 36,
+			12, 0, 13, 67, 186, 23, 159, 6, 76, 36, 36, 55, 39, 65, 0, 14, 68, 181, 44, 209, 60, 48, 35, 88, 37, 51, 35, 72, 0, 19,
+			70, 138, 4, 162, 205, 225, 192, 84, 36, 50, 36, 88, 40, 19, 36, 55, 108, 0, 10, 67, 136, 200, 64, 84, 35, 75, 107, 0, 11, 67,
+			130, 40, 64, 50, 35, 84, 36, 12, 0, 15, 68, 126, 39, 171, 60, 65, 39, 84, 35, 55, 55, 36, 72, 0, 14, 67, 125, 83, 77, 65,
+			39, 89, 35, 107, 107, 36, 107, 0, 17, 68, 124, 168, 140, 132, 65, 39, 47, 36, 84, 35, 75, 75, 36, 12, 0, 12, 67, 120, 200, 64,
+			55, 39, 75, 75, 36, 12, 0, 16, 70, 110, 36, 95, 207, 1, 192, 83, 39, 51, 65, 37, 49, 108, 0, 14, 68, 77, 19, 140, 132, 89,
+			39, 51, 101, 75, 36, 12, 0, 11, 67, 76, 119, 159, 89, 108, 55, 36, 65, 0, 14, 68, 76, 118, 74, 132, 89, 108, 19, 35, 47, 36,
+			12, 0, 15, 68, 72, 132, 76, 60, 88, 36, 71, 35, 51, 75, 35, 72, 0, 10, 67, 62, 3, 0, 72, 36, 50, 75, 0, 17, 69, 53,
+			28, 7, 41, 240, 107, 35, 51, 35, 49, 108, 47, 35, 65, 0, 13, 67, 42, 216, 64, 47, 35, 6, 48, 48, 36, 12, 0, 14, 67, 41,
+			135, 159, 47, 35, 88, 35, 55, 55, 39, 65, 0, 11, 67, 29, 150, 31, 35, 19, 88, 35, 65, 0, 11, 3, 95, 57, 88, 50, 35, 84,
+			35, 72, 0, 0, 18, 70, 182, 36, 96, 48, 114, 179, 48, 40, 51, 50, 36, 75, 108, 47, 37, 0, 15, 68, 181, 20, 206, 128, 48, 39,
+			51, 89, 39, 101, 35, 50, 0, 15, 68, 126, 6, 217, 40, 65, 35, 50, 83, 35, 19, 35, 47, 0, 15, 68, 83, 53, 224, 40, 91, 36,
+			57, 47, 35, 50, 35, 47, 0, 12, 67, 78, 2, 30, 89, 39, 50, 71, 39, 55, 0, 15, 68, 77, 229, 224, 40, 89, 35, 55, 47, 35,
+			50, 35, 47, 0, 15, 68, 69, 193, 200, 40, 51, 36, 104, 17, 108, 71, 35, 47, 0, 20, 70, 61, 24, 95, 194, 5, 0, 72, 35, 51,
+			107, 35, 65, 49, 39, 50, 36, 91, 0, 18, 70, 34, 12, 94, 28, 245, 0, 71, 35, 50, 81, 55, 108, 72, 36, 91, 0, 13, 68, 28,
+			212, 224, 40, 35, 107, 89, 35, 50, 47, 0, 0, 12, 67, 193, 232, 49, 49, 39, 55, 35, 50, 81, 0, 16, 69, 186, 17, 209, 84, 240,
+			76, 108, 107, 108, 51, 89, 35, 72, 0, 11, 67, 183, 4, 64, 48, 35, 49, 35, 51, 0, 12, 67, 181, 56, 15, 48, 35, 89, 35, 50,
+			72, 0, 12, 67, 181, 50, 161, 48, 36, 89, 47, 36, 12, 0, 11, 67, 135, 4, 64, 107, 35, 49, 36, 51, 0, 19, 70, 133, 20, 177,
+			139, 56, 0, 107, 36, 51, 88, 39, 81, 39, 84, 37, 50, 0, 14, 68, 125, 129, 222, 124, 65, 35, 88, 108, 55, 36, 65, 0, 17, 69,
+			124, 209, 209, 34, 16, 65, 39, 107, 108, 51, 36, 71, 36, 12, 0, 12, 67, 120, 214, 33, 55, 35, 107, 88, 36, 12, 0, 14, 67, 112,
+			167, 161, 104, 17, 35, 47, 35, 55, 36, 12, 0, 13, 67, 112, 135, 161, 104, 17, 36, 71, 55, 36, 12, 0, 12, 67, 101, 103, 161, 35,
+			88, 39, 55, 36, 12, 0, 18, 70, 84, 241, 226, 79, 55, 199, 89, 36, 72, 108, 39, 89, 37, 65, 108, 0, 18, 70, 77, 18, 162, 131,
+			56, 0, 89, 36, 51, 36, 47, 39, 50, 37, 50, 0, 19, 70, 76, 140, 10, 195, 56, 0, 89, 35, 71, 39, 49, 47, 35, 49, 37, 50,
+			0, 11, 67, 63, 20, 64, 72, 36, 81, 35, 51, 0, 13, 67, 61, 19, 33, 72, 35, 51, 35, 75, 36, 12, 0, 23, 72, 56, 241, 226,
+			128, 252, 71, 68, 112, 101, 39, 72, 108, 84, 35, 50, 72, 81, 108, 51, 108, 0, 19, 70, 55, 51, 209, 32, 114, 7, 107, 36, 57, 72,
+			35, 51, 71, 108, 71, 108, 0, 11, 67, 54, 39, 161, 107, 39, 55, 36, 12, 0, 12, 67, 54, 36, 161, 107, 39, 12, 88, 36, 12, 0,
+			11, 67, 52, 199, 161, 107, 36, 75, 55, 36, 0, 15, 69, 41, 17, 239, 207, 0, 47, 36, 51, 108, 90, 37, 49, 0, 11, 67, 32, 245,
+			0, 71, 35, 72, 35, 91, 0, 12, 67, 31, 20, 64, 4, 35, 6, 81, 35, 51, 0, 11, 67, 29, 232, 49, 35, 55, 35, 50, 81, 0,
+			13, 68, 29, 230, 94, 124, 35, 55, 19, 36, 55, 65, 0, 13, 67, 28, 247, 161, 35, 72, 36, 55, 55, 36, 12, 0, 11, 67, 28, 180,
+			64, 35, 12, 89, 35, 51, 0, 10, 65, 172, 47, 35, 91, 72, 37, 72, 0, 0, 16, 69, 192, 120, 48, 82, 0, 49, 108, 50, 36, 49,
+			91, 36, 50, 0, 11, 67, 187, 24, 0, 76, 36, 81, 36, 50, 0, 16, 68, 125, 50, 156, 120, 65, 39, 89, 47, 35, 104, 17, 36, 55,
+			0, 17, 69, 125, 49, 222, 124, 160, 65, 39, 89, 108, 55, 36, 65, 35, 47, 0, 18, 69, 124, 168, 95, 30, 0, 65, 39, 47, 47, 35,
+			107, 35, 65, 108, 50, 0, 14, 68, 124, 119, 8, 120, 65, 108, 104, 17, 35, 71, 55, 0, 11, 67, 76, 119, 160, 89, 108, 55, 39, 50,
+			0, 13, 67, 75, 50, 28, 88, 36, 57, 71, 35, 104, 17, 0, 16, 69, 61, 241, 204, 108, 160, 72, 35, 65, 108, 75, 39, 83, 47, 0,
+			12, 67, 57, 178, 160, 101, 39, 83, 47, 35, 50, 0, 15, 68, 41, 147, 43, 32, 47, 35, 19, 35, 75, 75, 39, 71, 0, 18, 69, 33,
+			241, 211, 33, 192, 71, 36, 65, 108, 89, 35, 71, 35, 104, 17, 0, 15, 68, 33, 164, 96, 48, 71, 39, 104, 17, 51, 35, 50, 75, 0,
+			11, 67, 32, 119, 160, 71, 108, 55, 39, 50, 0, 13, 68, 29, 54, 224, 48, 36, 89, 83, 35, 50, 75, 0, 21, 71, 9, 232, 159, 206,
+			12, 223, 204, 108, 55, 39, 65, 37, 50, 37, 57, 39, 65, 37, 0, 8, 66, 29, 32, 35, 88, 0, 76, 0, 14, 68, 193, 65, 222, 132,
+			49, 36, 91, 108, 55, 36, 12, 0, 14, 68, 130, 33, 210, 60, 50, 35, 84, 108, 88, 35, 72, 0, 14, 68, 127, 56, 159, 60, 65, 37,
+			57, 40, 65, 35, 72, 0, 14, 68, 126, 225, 222, 132, 65, 39, 76, 108, 55, 36, 12, 0, 15, 68, 125, 18, 136, 132, 65, 35, 51, 47,
+			35, 71, 36, 12, 0, 16, 68, 93, 23, 8, 132, 47, 39, 51, 104, 17, 35, 71, 36, 12, 0, 13, 68, 83, 52, 76, 132, 91, 37, 51,
+			75, 36, 12, 0, 14, 68, 81, 252, 224, 132, 91, 39, 65, 37, 50, 36, 12, 0, 13, 68, 77, 225, 222, 132, 89, 39, 55, 108, 55, 36,
+			0, 15, 68, 70, 36, 160, 132, 51, 39, 12, 88, 35, 50, 36, 12, 0, 15, 68, 57, 225, 220, 132, 101, 35, 55, 55, 108, 104, 17, 36,
+			0, 14, 68, 57, 20, 224, 60, 101, 39, 51, 89, 35, 50, 72, 0, 12, 67, 50, 40, 81, 75, 39, 12, 107, 35, 51, 0, 15, 68, 33,
+			156, 224, 132, 71, 36, 19, 36, 57, 50, 36, 12, 0, 13, 68, 29, 241, 222, 132, 36, 65, 108, 55, 36, 12, 0, 14, 68, 29, 177, 220,
+			132, 36, 83, 108, 104, 17, 36, 12, 0, 13, 68, 29, 113, 222, 132, 36, 47, 108, 55, 36, 12, 0, 9, 66, 33, 16, 71, 35, 51, 0,
+			76, 10, 67, 31, 4, 192, 36, 49, 89, 0, 46, 0, 13, 67, 193, 252, 20, 49, 39, 65, 35, 49, 35, 91, 0, 15, 69, 181, 18, 135,
+			33, 224, 48, 39, 51, 47, 108, 71, 55, 0, 12, 67, 137, 194, 179, 84, 35, 104, 17, 47, 37, 0, 10, 67, 127, 56, 34, 65, 37, 50,
+			40, 0, 17, 68, 125, 71, 43, 40, 65, 35, 91, 36, 104, 17, 104, 17, 35, 47, 0, 17, 69, 120, 124, 217, 113, 224, 55, 108, 57, 35,
+			19, 104, 17, 35, 55, 0, 17, 70, 120, 114, 51, 70, 2, 128, 55, 108, 71, 37, 51, 36, 50, 47, 0, 9, 66, 115, 48, 104, 17, 36,
+			57, 0, 13, 68, 80, 116, 72, 128, 91, 108, 51, 71, 39, 50, 0, 13, 68, 78, 36, 72, 128, 89, 40, 51, 71, 39, 50, 0, 12, 67,
+			77, 248, 34, 89, 35, 65, 35, 50, 40, 0, 14, 68, 63, 49, 200, 40, 72, 37, 57, 108, 71, 36, 47, 0, 14, 68, 61, 228, 206, 40,
+			72, 36, 55, 89, 35, 101, 47, 0, 20, 70, 33, 24, 95, 194, 5, 0, 71, 35, 51, 107, 35, 65, 49, 39, 50, 36, 91, 0, 13, 68,
+			29, 65, 209, 40, 36, 91, 108, 51, 35, 47, 0, 17, 70, 29, 60, 7, 69, 226, 128, 36, 89, 49, 108, 51, 55, 36, 47, 0, 0, 16,
+			69, 197, 19, 199, 122, 16, 81, 36, 51, 72, 108, 55, 36, 12, 0, 17, 70, 196, 116, 202, 71, 56, 0, 81, 108, 89, 47, 36, 51, 37,
+			50, 0, 12, 67, 193, 22, 211, 49, 35, 51, 35, 83, 89, 0, 10, 67, 136, 119, 147, 84, 108, 55, 89, 0, 17, 69, 125, 145, 243, 130,
+			16, 65, 39, 19, 108, 57, 36, 50, 36, 12, 0, 17, 69, 125, 97, 243, 114, 16, 65, 39, 88, 108, 57, 36, 104, 17, 36, 0, 16, 69,
+			124, 247, 179, 131, 16, 65, 39, 72, 36, 55, 37, 50, 81, 0, 16, 69, 94, 23, 226, 68, 176, 47, 35, 107, 65, 40, 51, 36, 89, 0,
+			15, 69, 82, 39, 243, 130, 16, 91, 40, 65, 37, 50, 36, 12, 0, 11, 67, 51, 20, 64, 75, 36, 81, 35, 51, 0, 16, 69, 42, 23,
+			226, 68, 176, 47, 35, 107, 65, 40, 51, 36, 89, 0, 18, 70, 40, 164, 71, 194, 36, 79, 47, 36, 47, 51, 108, 49, 39, 51, 72, 0,
+			15, 69, 40, 117, 48, 128, 240, 47, 108, 91, 49, 35, 50, 72, 0, 14, 69, 34, 39, 179, 131, 16, 71, 39, 55, 37, 50, 81, 0, 17,
+			69, 34, 36, 243, 122, 16, 71, 36, 84, 35, 89, 37, 55, 36, 12, 0, 16, 69, 33, 38, 135, 122, 16, 71, 39, 88, 104, 17, 108, 55,
+			36, 0, 19, 70, 32, 245, 32, 28, 226, 161, 71, 35, 72, 91, 36, 50, 108, 101, 47, 36, 0, 16, 70, 31, 52, 98, 35, 60, 0, 36,
+			57, 51, 39, 71, 37, 49, 0, 11, 67, 30, 6, 211, 35, 50, 83, 39, 89, 0, 14, 68, 29, 34, 33, 68, 35, 88, 71, 35, 107, 51,
+			36, 0, 10, 67, 28, 229, 64, 35, 101, 35, 89, 0, 17, 70, 28, 136, 141, 28, 167, 192, 35, 71, 40, 107, 108, 47, 35, 65, 0, 8,
+			66, 29, 48, 36, 89, 0, 46, 0, 15, 68, 197, 33, 209, 80, 6, 81, 39, 88, 108, 51, 36, 91, 0, 14, 69, 192, 114, 145, 206, 0,
+			49, 108, 47, 51, 37, 50, 0, 11, 67, 133, 231, 210, 107, 39, 55, 65, 88, 0, 16, 68, 124, 168, 8, 204, 65, 39, 47, 36, 50, 35,
+			71, 71, 37, 0, 11, 67, 60, 140, 192, 72, 39, 71, 36, 57, 0, 21, 71, 58, 35, 209, 136, 252, 210, 120, 101, 39, 72, 51, 39, 84,
+			72, 37, 88, 36, 55, 0, 11, 67, 32, 248, 0, 71, 35, 72, 35, 50, 0, 28, 2, 58, 40, 50, 35, 65, 108, 72, 36, 10, 76, 36,
+			107, 51, 36, 57, 36, 10, 104, 17, 35, 65, 81, 37, 50, 0, 46, 0, 12, 67, 194, 3, 209, 49, 39, 50, 72, 39, 51, 0, 23, 71,
+			113, 84, 91, 205, 24, 146, 132, 104, 17, 35, 89, 51, 36, 83, 37, 51, 40, 88, 36, 12, 0, 19, 70, 82, 2, 30, 205, 232, 64, 91,
+			35, 50, 71, 35, 55, 37, 55, 36, 12, 0, 19, 70, 56, 241, 237, 78, 3, 192, 101, 39, 72, 108, 48, 35, 89, 35, 50, 72, 0, 12,
+			67, 42, 3, 209, 47, 39, 50, 72, 35, 51, 0, 12, 67, 34, 3, 209, 71, 35, 50, 72, 35, 51, 0, 18, 70, 29, 232, 176, 29, 232,
+			64, 39, 55, 84, 36, 49, 108, 55, 36, 12, 0, 13, 68, 29, 229, 31, 76, 35, 91, 91, 35, 65, 89, 0, 19, 71, 29, 50, 135, 128,
+			241, 209, 60, 36, 89, 47, 108, 50, 72, 108, 51, 72, 0, 0, 12, 67, 193, 71, 212, 49, 36, 91, 65, 36, 91, 0, 12, 67, 193, 24,
+			20, 49, 39, 51, 50, 36, 91, 0, 16, 69, 181, 18, 7, 69, 64, 48, 39, 51, 71, 108, 51, 36, 91, 0, 17, 70, 131, 49, 223, 136,
+			226, 128, 50, 35, 57, 108, 65, 40, 101, 47, 0, 11, 67, 129, 50, 51, 50, 36, 89, 71, 37, 0, 12, 67, 125, 148, 128, 65, 39, 19,
+			36, 88, 88, 0, 12, 67, 124, 248, 51, 65, 35, 72, 35, 50, 37, 0, 10, 67, 122, 36, 179, 55, 39, 88, 37, 0, 11, 67, 70, 44,
+			20, 51, 40, 49, 36, 91, 0, 13, 67, 40, 199, 179, 47, 35, 75, 35, 55, 55, 37, 0, 12, 68, 40, 124, 223, 72, 47, 108, 57, 65,
+			88, 0, 11, 67, 33, 242, 0, 71, 39, 12, 65, 71, 0, 15, 69, 33, 227, 199, 51, 48, 71, 39, 55, 72, 108, 75, 37, 0, 0, 18,
+			70, 197, 236, 240, 138, 248, 0, 81, 36, 55, 37, 49, 39, 90, 36, 50, 0, 15, 69, 181, 17, 202, 207, 0, 48, 36, 51, 108, 47, 37,
+			49, 0, 19, 71, 135, 59, 96, 136, 172, 210, 124, 107, 37, 48, 50, 39, 47, 37, 88, 65, 0, 19, 70, 133, 248, 175, 131, 52, 161, 107,
+			36, 65, 39, 90, 36, 50, 37, 88, 36, 0, 16, 69, 133, 17, 240, 121, 48, 107, 36, 51, 108, 49, 55, 36, 89, 0, 19, 70, 130, 212,
+			79, 28, 226, 161, 50, 35, 48, 35, 51, 72, 108, 101, 47, 36, 0, 16, 68, 124, 161, 203, 68, 65, 39, 47, 36, 35, 89, 89, 36, 51,
+			0, 21, 72, 122, 44, 18, 29, 242, 34, 71, 16, 55, 39, 49, 88, 108, 65, 71, 39, 51, 81, 0, 21, 70, 78, 12, 96, 137, 66, 161,
+			89, 35, 50, 81, 50, 36, 84, 36, 91, 47, 36, 12, 0, 11, 67, 61, 21, 0, 72, 35, 51, 35, 91, 0, 13, 68, 40, 120, 48, 68,
+			47, 108, 50, 49, 36, 51, 0, 14, 68, 35, 51, 136, 68, 71, 37, 101, 35, 71, 35, 51, 0, 14, 68, 32, 115, 136, 68, 71, 108, 101,
+			35, 71, 35, 51, 0, 14, 69, 31, 56, 15, 193, 48, 37, 50, 72, 36, 49, 89, 0, 0, 10, 67, 186, 40, 0, 6, 76, 39, 50, 0,
+			12, 68, 184, 120, 78, 136, 76, 108, 107, 101, 40, 0, 10, 67, 180, 120, 46, 48, 108, 50, 76, 0, 15, 69, 133, 24, 134, 206, 0, 107,
+			36, 51, 39, 19, 37, 50, 0, 16, 68, 124, 163, 30, 204, 65, 39, 47, 36, 75, 35, 55, 55, 37, 0, 16, 69, 62, 2, 30, 30, 0,
+			72, 39, 50, 71, 35, 55, 108, 50, 0, 18, 70, 48, 120, 34, 68, 232, 128, 75, 108, 50, 36, 84, 35, 51, 101, 40, 0, 11, 67, 32,
+			252, 0, 71, 35, 72, 35, 49, 0, 0, 18, 70, 56, 241, 205, 29, 182, 0, 101, 39, 72, 108, 107, 108, 83, 36, 88, 0, 19, 70, 41,
+			24, 173, 137, 54, 209, 47, 36, 51, 39, 48, 39, 89, 83, 36, 51, 0, 13, 68, 33, 230, 112, 76, 71, 36, 55, 35, 49, 89, 0, 16,
+			69, 33, 24, 160, 33, 16, 71, 40, 51, 40, 50, 71, 35, 51, 0, 20, 71, 33, 17, 224, 199, 51, 138, 132, 71, 35, 51, 35, 50, 81,
+			37, 101, 47, 36, 0, 0, 13, 67, 193, 226, 50, 49, 39, 55, 71, 36, 57, 36, 0, 18, 70, 125, 145, 223, 120, 114, 179, 65, 39, 108,
+			65, 36, 55, 108, 47, 37, 0, 17, 69, 125, 50, 153, 123, 48, 65, 39, 89, 47, 35, 36, 55, 55, 37, 0, 15, 68, 124, 200, 171, 72,
+			65, 39, 75, 35, 84, 84, 36, 88, 0, 17, 69, 83, 4, 202, 131, 48, 91, 36, 49, 35, 89, 47, 35, 50, 37, 0, 16, 69, 40, 134,
+			71, 43, 48, 47, 35, 71, 35, 19, 108, 47, 37, 0, 10, 67, 35, 50, 128, 71, 36, 57, 47, 0, 16, 69, 34, 3, 210, 131, 48, 71,
+			35, 50, 72, 88, 35, 50, 37, 0, 15, 69, 28, 244, 112, 131, 48, 35, 72, 51, 36, 49, 50, 37, 0, 0, 17, 70, 131, 2, 161, 60,
+			120, 0, 50, 39, 49, 47, 36, 72, 108, 50, 0, 13, 67, 126, 40, 11, 65, 39, 35, 50, 50, 35, 89, 0, 19, 70, 34, 39, 30, 126,
+			40, 0, 71, 40, 104, 17, 35, 55, 35, 65, 40, 50, 0, 17, 70, 32, 116, 202, 206, 40, 0, 71, 108, 89, 47, 37, 57, 39, 50, 0,
+			15, 69, 32, 116, 173, 69, 48, 71, 108, 88, 48, 39, 51, 89, 0, 0, 15, 69, 182, 12, 98, 206, 0, 48, 35, 50, 81, 39, 35, 50,
+			0, 12, 67, 133, 247, 138, 107, 35, 65, 55, 36, 47, 0, 12, 67, 131, 54, 202, 50, 35, 57, 39, 83, 47, 0, 12, 67, 129, 40, 74,
+			50, 39, 88, 107, 35, 47, 0, 15, 68, 128, 225, 222, 200, 50, 39, 101, 108, 55, 36, 57, 36, 0, 16, 70, 100, 129, 209, 28, 172, 192,
+			36, 71, 108, 51, 108, 47, 37, 0, 15, 68, 69, 49, 222, 200, 51, 36, 89, 108, 55, 36, 57, 36, 0, 17, 68, 40, 196, 72, 200, 6,
+			47, 35, 75, 51, 39, 71, 36, 57, 36, 0, 18, 70, 32, 229, 34, 62, 12, 192, 71, 35, 101, 91, 40, 72, 35, 50, 37, 0, 14, 68,
+			29, 113, 222, 200, 36, 47, 108, 55, 36, 57, 36, 0, 16, 69, 28, 210, 156, 30, 0, 36, 107, 47, 36, 104, 17, 108, 50, 0, 0, 15,
+			69, 130, 37, 51, 62, 0, 50, 40, 91, 37, 72, 35, 50, 0, 12, 67, 125, 99, 112, 65, 39, 88, 107, 36, 49, 0, 11, 67, 88, 115,
+			112, 88, 108, 107, 36, 49, 0, 10, 67, 53, 88, 0, 107, 36, 89, 50, 0, 11, 67, 33, 248, 0, 71, 36, 65, 35, 50, 0, 15, 69,
+			33, 17, 225, 206, 0, 71, 35, 51, 108, 107, 37, 50, 0, 14, 69, 29, 76, 15, 30, 0, 35, 91, 49, 72, 108, 50, 0, 0, 12, 67,
+			198, 35, 50, 81, 39, 75, 36, 57, 36, 0, 13, 68, 197, 28, 206, 40, 81, 39, 51, 37, 101, 47, 0, 18, 70, 83, 52, 162, 109, 24,
+			51, 91, 37, 88, 39, 83, 36, 51, 50, 37, 0, 19, 70, 68, 115, 243, 137, 235, 243, 51, 108, 72, 37, 57, 39, 55, 39, 90, 37, 0,
+			0, 15, 68, 125, 85, 222, 52, 65, 39, 89, 47, 35, 55, 35, 12, 0, 19, 70, 68, 115, 243, 137, 98, 23, 51, 108, 72, 37, 57, 39,
+			88, 35, 71, 47, 0, 0, 13, 68, 128, 116, 96, 48, 50, 108, 51, 36, 50, 75, 0, 17, 69, 124, 225, 222, 108, 160, 65, 39, 101, 108,
+			55, 36, 83, 35, 47, 0, 0, 15, 68, 82, 8, 160, 60, 91, 36, 50, 35, 84, 35, 50, 72, 0, 22, 72, 79, 56, 10, 205, 49, 243,
+			73, 16, 89, 37, 50, 47, 37, 89, 108, 57, 88, 36, 51, 0, 10, 67, 61, 28, 0, 72, 35, 51, 49, 0, 11, 67, 41, 188, 0, 47,
+			39, 83, 35, 49, 0, 13, 68, 8, 132, 224, 196, 108, 71, 89, 35, 50, 81, 0, 0, 11, 67, 207, 2, 135, 57, 36, 49, 47, 108, 0,
+			11, 67, 197, 178, 135, 81, 39, 83, 47, 108, 0, 14, 68, 125, 92, 200, 40, 65, 39, 89, 37, 71, 35, 47, 0, 11, 67, 62, 21, 0,
+			72, 35, 107, 36, 91, 0, 0, 13, 67, 125, 18, 51, 65, 39, 51, 35, 71, 71, 37, 0, 12, 67, 124, 246, 98, 65, 35, 72, 19, 39,
+			84, 0, 13, 67, 42, 19, 51, 47, 35, 107, 35, 75, 75, 37, 0, 0, 12, 68, 82, 36, 72, 28, 91, 40, 51, 71, 108, 0, 8, 65,
+			44, 6, 89, 36, 12, 0, 0, 18, 70, 197, 17, 224, 78, 12, 64, 81, 36, 51, 108, 50, 89, 35, 50, 81, 0, 15, 69, 181, 232, 138,
+			138, 0, 48, 39, 55, 39, 47, 39, 50, 0, 16, 68, 124, 165, 79, 204, 65, 39, 47, 36, 89, 35, 72, 72, 37, 0, 11, 67, 62, 24,
+			0, 72, 35, 107, 35, 50, 0, 10, 67, 48, 136, 0, 75, 39, 71, 50, 0, 11, 67, 40, 200, 0, 47, 35, 75, 35, 50, 0, 20, 66,
+			133, 192, 107, 36, 75, 51, 37, 57, 36, 9, 104, 35, 65, 35, 51, 37, 0, 46, 0, 10, 67, 139, 52, 135, 84, 37, 88, 108, 0, 13,
+			67, 129, 119, 7, 50, 39, 47, 35, 104, 17, 108, 0, 12, 67, 128, 194, 7, 50, 39, 75, 35, 71, 108, 0, 11, 67, 122, 39, 135, 55,
+			39, 12, 55, 108, 0, 12, 67, 101, 199, 135, 39, 104, 17, 35, 55, 108, 0, 22, 70, 78, 12, 96, 137, 66, 178, 89, 35, 50, 81, 50,
+			36, 84, 36, 91, 47, 36, 57, 36, 0, 11, 67, 64, 114, 135, 88, 108, 47, 35, 50, 0, 10, 67, 29, 247, 135, 36, 65, 55, 108, 0,
+			14, 67, 29, 199, 135, 35, 104, 17, 35, 55, 55, 35, 50, 0, 0, 10, 67, 193, 2, 0, 49, 36, 88, 71, 0, 15, 69, 57, 76, 51,
+			75, 48, 101, 39, 91, 49, 37, 88, 37, 0, 15, 68, 41, 228, 240, 180, 47, 36, 55, 36, 89, 49, 39, 48, 0, 14, 69, 29, 60, 51,
+			126, 32, 36, 89, 49, 37, 65, 40, 0, 0, 17, 70, 131, 60, 30, 78, 40, 0, 50, 37, 49, 39, 55, 89, 39, 50, 0, 16, 70, 122,
+			39, 226, 124, 129, 192, 55, 39, 65, 39, 65, 71, 108, 0, 13, 68, 120, 114, 30, 28, 55, 108, 71, 36, 55, 108, 0, 14, 68, 78, 28,
+			222, 28, 89, 39, 107, 36, 57, 55, 108, 0, 13, 68, 70, 37, 32, 28, 51, 39, 91, 35, 50, 108, 0, 11, 67, 70, 35, 192, 51, 35,
+			84, 35, 72, 0, 19, 70, 61, 71, 224, 80, 120, 0, 72, 39, 91, 65, 35, 50, 36, 91, 108, 50, 0, 12, 68, 29, 236, 224, 28, 36,
+			55, 37, 50, 108, 0, 14, 68, 29, 196, 72, 28, 35, 104, 17, 51, 36, 71, 108, 0, 14, 68, 29, 50, 158, 28, 36, 89, 47, 36, 55,
+			55, 108, 0, 0, 12, 68, 184, 117, 32, 204, 76, 108, 91, 50, 37, 0, 11, 67, 183, 56, 10, 48, 36, 57, 50, 47, 0, 15, 67, 126,
+			38, 220, 65, 39, 84, 35, 83, 83, 35, 104, 17, 0, 15, 67, 125, 83, 220, 65, 39, 89, 35, 72, 72, 36, 104, 17, 0, 13, 67, 125,
+			70, 220, 65, 39, 91, 83, 36, 104, 17, 0, 17, 70, 111, 55, 162, 122, 252, 192, 83, 37, 55, 39, 55, 39, 90, 37, 0, 11, 67, 62,
+			28, 0, 72, 36, 107, 35, 49, 0, 14, 68, 62, 19, 225, 204, 72, 35, 107, 72, 35, 107, 37, 0, 0, 16, 69, 125, 151, 226, 120, 112,
+			65, 35, 19, 65, 40, 55, 35, 50, 0, 15, 69, 110, 34, 179, 128, 112, 83, 40, 47, 36, 57, 50, 108, 0, 14, 67, 105, 226, 33, 104,
+			17, 35, 55, 35, 71, 36, 12, 0, 10, 67, 84, 131, 64, 89, 39, 71, 107, 0, 12, 67, 49, 246, 97, 75, 39, 65, 19, 36, 12, 0,
+			13, 67, 40, 134, 97, 47, 35, 71, 35, 36, 57, 36, 0, 11, 67, 29, 178, 143, 39, 83, 47, 35, 72, 0, 15, 69, 29, 50, 159, 128,
+			112, 36, 89, 47, 36, 65, 50, 108, 0, 15, 69, 29, 50, 153, 120, 112, 36, 89, 47, 36, 19, 55, 108, 0, 0, 12, 67, 186, 3, 222,
+			76, 35, 50, 72, 35, 55, 0, 16, 68, 181, 21, 51, 128, 48, 36, 51, 6, 91, 37, 57, 35, 50, 0, 11, 67, 130, 44, 94, 50, 39,
+			81, 39, 55, 0, 11, 67, 130, 34, 30, 50, 39, 71, 36, 55, 0, 17, 69, 129, 68, 202, 131, 48, 50, 36, 91, 35, 89, 47, 35, 50,
+			37, 0, 16, 69, 127, 1, 202, 35, 48, 65, 35, 49, 108, 47, 36, 71, 37, 0, 10, 67, 83, 51, 128, 91, 36, 57, 101, 0, 14, 69,
+			78, 40, 7, 127, 48, 89, 39, 50, 108, 65, 37, 0, 14, 68, 69, 1, 222, 40, 51, 36, 88, 108, 55, 35, 47, 0, 13, 69, 58, 44,
+			243, 131, 48, 101, 39, 37, 50, 37, 0, 15, 68, 53, 1, 220, 40, 107, 36, 88, 108, 104, 17, 35, 47, 0, 18, 70, 40, 115, 162, 68,
+			252, 115, 47, 108, 101, 39, 51, 72, 36, 81, 37, 0, 15, 68, 32, 243, 158, 112, 71, 35, 72, 101, 39, 55, 104, 17, 0, 13, 68, 31,
+			49, 222, 40, 36, 57, 108, 55, 35, 47, 0, 13, 68, 31, 4, 224, 40, 35, 49, 89, 36, 50, 47, 0, 14, 68, 29, 60, 30, 40, 36,
+			89, 49, 36, 55, 36, 47, 0, 23, 73, 11, 8, 159, 180, 120, 51, 124, 120, 0, 108, 49, 39, 65, 48, 108, 50, 37, 65, 108, 50, 0,
+			0, 12, 67, 186, 3, 223, 76, 35, 50, 72, 39, 65, 0, 12, 67, 126, 2, 25, 65, 35, 50, 71, 35, 19, 0, 17, 68, 124, 168, 8,
+			132, 65, 39, 47, 36, 50, 35, 71, 71, 36, 107, 0, 21, 70, 124, 166, 71, 112, 129, 192, 65, 39, 47, 35, 19, 108, 104, 17, 36, 71,
+			35, 50, 0, 12, 67, 82, 35, 192, 91, 35, 6, 84, 35, 72, 0, 11, 67, 56, 115, 223, 101, 108, 72, 36, 65, 0, 12, 67, 42, 32,
+			223, 47, 39, 12, 19, 35, 65, 0, 8, 66, 41, 176, 47, 39, 83, 0, 18, 70, 41, 28, 19, 40, 120, 0, 47, 39, 51, 49, 36, 89,
+			47, 108, 50, 0, 12, 67, 35, 60, 95, 71, 36, 57, 81, 39, 65, 0, 14, 68, 34, 28, 15, 132, 71, 36, 107, 49, 35, 72, 36, 0,
+			18, 70, 29, 18, 140, 29, 225, 192, 36, 51, 47, 36, 75, 108, 55, 35, 50, 0, 13, 68, 28, 129, 205, 132, 36, 71, 108, 107, 36, 12,
+			0, 0, 15, 69, 192, 114, 51, 128, 160, 49, 108, 71, 37, 50, 36, 47, 0, 14, 69, 184, 124, 223, 30, 0, 76, 108, 57, 65, 108, 50,
+			0, 13, 68, 125, 49, 34, 120, 65, 35, 89, 19, 40, 55, 0, 16, 69, 125, 19, 223, 30, 0, 65, 35, 51, 72, 39, 65, 108, 50, 0,
+			14, 67, 124, 183, 224, 65, 39, 89, 35, 65, 65, 35, 50, 0, 11, 67, 57, 72, 0, 101, 35, 91, 36, 50, 0, 14, 67, 41, 150, 224,
+			47, 35, 19, 35, 83, 83, 39, 50, 0, 8, 66, 41, 32, 47, 36, 88, 0, 15, 68, 40, 216, 171, 120, 47, 35, 107, 35, 84, 84, 39,
+			55, 0, 8, 66, 33, 32, 71, 39, 88, 0, 16, 70, 29, 28, 241, 29, 252, 192, 39, 51, 37, 81, 108, 65, 37, 0, 0, 17, 70, 198,
+			33, 202, 124, 119, 135, 81, 40, 108, 47, 65, 108, 55, 108, 0, 11, 67, 194, 5, 0, 49, 39, 50, 36, 91, 0, 12, 67, 193, 226, 33,
+			49, 39, 55, 71, 36, 12, 0, 14, 68, 133, 252, 224, 192, 107, 35, 65, 37, 50, 35, 49, 0, 15, 68, 130, 21, 79, 124, 50, 39, 107,
+			89, 35, 72, 39, 65, 0, 15, 67, 125, 199, 143, 65, 39, 104, 17, 35, 55, 55, 36, 72, 0, 12, 67, 125, 184, 49, 65, 39, 83, 35,
+			50, 81, 0, 12, 67, 124, 166, 97, 65, 39, 47, 19, 36, 12, 0, 13, 67, 113, 230, 225, 104, 17, 35, 55, 35, 83, 36, 0, 13, 67,
+			113, 23, 225, 104, 17, 39, 51, 65, 36, 12, 0, 12, 67, 93, 151, 225, 47, 39, 19, 65, 36, 12, 0, 11, 67, 84, 246, 192, 89, 35,
+			72, 35, 83, 0, 11, 67, 80, 131, 64, 91, 35, 71, 35, 107, 0, 12, 67, 77, 23, 225, 89, 39, 51, 65, 36, 12, 0, 17, 69, 62,
+			33, 210, 62, 16, 6, 72, 35, 84, 108, 88, 72, 35, 107, 0, 12, 67, 49, 184, 49, 75, 35, 83, 35, 50, 81, 0, 12, 67, 43, 7,
+			225, 47, 39, 49, 65, 36, 12, 0, 15, 69, 41, 232, 135, 78, 16, 47, 35, 55, 84, 108, 89, 36, 0, 12, 67, 41, 184, 49, 47, 39,
+			83, 35, 50, 81, 0, 12, 67, 33, 24, 97, 71, 39, 51, 107, 36, 12, 0, 11, 67, 33, 23, 225, 71, 36, 51, 65, 36, 0, 18, 70,
+			33, 20, 162, 32, 119, 135, 71, 39, 51, 88, 39, 71, 108, 55, 108, 0, 10, 67, 32, 120, 15, 71, 108, 50, 72, 0, 18, 69, 29, 72,
+			34, 206, 16, 39, 91, 50, 35, 84, 37, 57, 57, 36, 12, 0, 11, 67, 28, 135, 161, 35, 71, 55, 35, 107, 0, 11, 67, 10, 24, 49,
+			108, 107, 35, 50, 81, 0, 11, 67, 10, 12, 33, 108, 50, 49, 36, 12, 0, 0, 16, 69, 197, 19, 212, 193, 224, 81, 36, 51, 72, 91,
+			36, 49, 55, 0, 15, 68, 193, 28, 79, 128, 49, 35, 51, 81, 35, 72, 35, 50, 0, 13, 68, 183, 52, 97, 128, 48, 37, 51, 107, 35,
+			50, 0, 18, 70, 182, 36, 85, 28, 247, 0, 48, 40, 51, 89, 108, 72, 36, 104, 17, 0, 20, 70, 130, 36, 71, 120, 215, 0, 50, 40,
+			51, 39, 55, 107, 35, 104, 17, 104, 17, 0, 14, 68, 125, 119, 217, 128, 65, 39, 47, 65, 35, 36, 50, 0, 10, 67, 122, 36, 128, 55,
+			39, 12, 88, 0, 14, 68, 110, 8, 159, 128, 83, 36, 50, 39, 65, 36, 50, 0, 12, 67, 109, 230, 222, 83, 36, 55, 83, 36, 55, 0,
+			20, 70, 55, 51, 209, 29, 167, 179, 107, 36, 57, 72, 35, 51, 39, 104, 17, 55, 37, 0, 12, 67, 50, 12, 94, 75, 35, 50, 81, 35,
+			55, 0, 19, 70, 31, 56, 10, 70, 2, 128, 6, 37, 50, 47, 36, 51, 4, 50, 36, 47, 0, 0, 14, 68, 207, 11, 160, 60, 57, 36,
+			49, 76, 35, 50, 72, 0, 14, 68, 204, 116, 143, 132, 6, 57, 108, 88, 72, 35, 107, 0, 10, 67, 194, 3, 0, 49, 39, 50, 75, 0,
+			17, 69, 133, 178, 149, 61, 240, 107, 35, 83, 47, 89, 35, 72, 39, 65, 0, 15, 69, 127, 60, 98, 205, 240, 65, 37, 81, 40, 57, 35,
+			65, 0, 15, 68, 127, 60, 15, 132, 65, 36, 57, 49, 35, 72, 36, 12, 0, 16, 68, 113, 231, 200, 132, 104, 17, 39, 55, 39, 65, 71,
+			36, 12, 0, 13, 68, 83, 55, 160, 196, 91, 37, 55, 35, 50, 81, 0, 14, 68, 61, 17, 240, 132, 72, 35, 51, 51, 108, 49, 36, 0,
+			13, 68, 52, 124, 31, 132, 107, 108, 49, 36, 65, 36, 0, 12, 67, 49, 226, 48, 75, 39, 55, 71, 35, 49, 0, 15, 69, 42, 43, 98,
+			121, 176, 47, 39, 48, 39, 55, 39, 83, 0, 14, 68, 42, 33, 222, 60, 47, 35, 84, 108, 55, 39, 72, 0, 15, 68, 41, 231, 200, 132,
+			47, 39, 55, 39, 65, 71, 36, 12, 0, 15, 68, 41, 148, 91, 132, 47, 35, 19, 51, 36, 83, 36, 12, 0, 13, 68, 35, 56, 32, 60,
+			71, 37, 50, 35, 50, 72, 0, 19, 70, 35, 56, 15, 29, 35, 192, 71, 37, 57, 35, 50, 72, 108, 88, 35, 72, 0, 18, 70, 35, 49,
+			223, 137, 35, 192, 71, 37, 57, 108, 65, 40, 88, 35, 72, 0, 13, 68, 34, 39, 160, 60, 71, 39, 55, 39, 50, 72, 0, 12, 67, 33,
+			184, 95, 71, 36, 83, 35, 107, 65, 0, 16, 68, 33, 76, 32, 60, 71, 36, 91, 36, 49, 35, 50, 35, 72, 0, 15, 68, 33, 39, 32,
+			60, 71, 39, 88, 104, 17, 35, 50, 72, 0, 13, 68, 32, 119, 160, 196, 71, 108, 55, 35, 50, 81, 0, 0, 10, 67, 180, 120, 18, 48,
+			108, 50, 88, 0, 19, 71, 128, 115, 162, 82, 8, 143, 204, 50, 108, 101, 39, 91, 50, 40, 72, 37, 0, 15, 68, 125, 26, 202, 32, 65,
+			39, 51, 35, 47, 47, 35, 71, 0, 20, 71, 109, 17, 224, 79, 52, 240, 136, 83, 36, 51, 108, 50, 89, 37, 89, 49, 39, 0, 15, 68,
+			81, 116, 96, 48, 6, 91, 35, 47, 51, 35, 50, 75, 0, 13, 68, 58, 37, 49, 120, 101, 39, 91, 81, 36, 55, 0, 10, 67, 57, 76,
+			0, 101, 39, 91, 49, 0, 15, 68, 33, 38, 160, 48, 71, 39, 88, 104, 17, 35, 50, 75, 0, 12, 68, 31, 55, 243, 120, 37, 65, 36,
+			57, 55, 0, 13, 68, 29, 50, 136, 120, 36, 89, 47, 35, 71, 55, 0, 0, 15, 69, 193, 18, 135, 78, 16, 49, 36, 51, 47, 108, 89,
+			36, 0, 15, 69, 192, 164, 115, 131, 16, 49, 36, 47, 51, 37, 50, 81, 0, 16, 69, 185, 71, 200, 128, 240, 76, 36, 91, 65, 71, 35,
+			50, 72, 0, 10, 67, 180, 119, 147, 48, 108, 55, 89, 0, 16, 69, 131, 49, 243, 128, 240, 50, 35, 57, 108, 57, 35, 50, 72, 0, 15,
+			69, 127, 55, 147, 131, 16, 65, 37, 55, 89, 35, 50, 81, 0, 17, 69, 127, 1, 212, 110, 16, 65, 39, 49, 108, 91, 36, 83, 36, 12,
+			0, 15, 68, 125, 148, 107, 108, 65, 39, 19, 35, 51, 51, 36, 83, 0, 15, 69, 124, 119, 136, 128, 240, 65, 108, 55, 71, 35, 50, 72,
+			0, 15, 69, 109, 22, 226, 190, 16, 83, 36, 51, 83, 39, 90, 36, 0, 12, 67, 77, 19, 147, 89, 35, 51, 35, 101, 89, 0, 10, 67,
+			59, 52, 64, 101, 36, 57, 51, 0, 15, 69, 48, 115, 241, 126, 16, 75, 108, 72, 39, 81, 65, 36, 0, 18, 69, 33, 232, 15, 112, 240,
+			71, 39, 55, 35, 50, 72, 104, 17, 35, 72, 0, 17, 69, 33, 24, 7, 126, 16, 71, 35, 51, 6, 50, 108, 65, 36, 12, 0, 15, 69,
+			32, 115, 200, 128, 240, 71, 108, 72, 71, 35, 50, 72, 0, 0, 12, 67, 185, 19, 148, 76, 35, 51, 101, 36, 91, 0, 8, 66, 33, 64,
+			71, 36, 91, 0, 14, 68, 29, 40, 140, 72, 36, 88, 88, 39, 75, 36, 88, 0, 8, 66, 29, 64, 35, 91, 0, 76, 10, 4, 95, 35,
+			110, 100, 84, 39, 65, 0, 0, 11, 67, 206, 36, 145, 57, 40, 88, 36, 51, 0, 16, 70, 197, 17, 243, 204, 248, 64, 81, 36, 51, 108,
+			37, 72, 36, 0, 10, 67, 188, 120, 17, 90, 108, 50, 51, 0, 18, 70, 182, 23, 162, 110, 12, 64, 48, 35, 107, 55, 40, 83, 35, 50,
+			81, 0, 18, 70, 181, 24, 138, 207, 56, 0, 48, 39, 51, 39, 47, 36, 19, 37, 50, 0, 12, 67, 127, 51, 17, 65, 36, 57, 75, 36,
+			51, 0, 16, 68, 125, 196, 96, 76, 65, 39, 104, 17, 35, 51, 50, 35, 89, 0, 14, 67, 125, 67, 17, 65, 39, 91, 35, 75, 75, 35,
+			51, 0, 14, 67, 124, 67, 145, 65, 39, 19, 35, 101, 101, 35, 51, 0, 13, 68, 122, 36, 96, 76, 55, 39, 51, 36, 50, 89, 0, 9,
+			66, 113, 16, 104, 17, 36, 51, 0, 10, 67, 111, 50, 17, 83, 37, 71, 51, 0, 8, 66, 109, 16, 83, 36, 51, 0, 14, 67, 105, 22,
+			145, 104, 17, 39, 51, 104, 17, 39, 51, 0, 9, 66, 105, 16, 104, 17, 39, 51, 0, 20, 70, 82, 20, 91, 70, 12, 64, 91, 35, 107,
+			51, 36, 83, 35, 51, 35, 50, 81, 0, 17, 69, 77, 19, 209, 197, 240, 89, 35, 51, 72, 35, 51, 81, 39, 65, 0, 12, 67, 61, 226,
+			17, 72, 36, 55, 71, 35, 51, 0, 18, 70, 57, 19, 240, 68, 248, 64, 101, 39, 51, 72, 49, 35, 51, 72, 36, 0, 8, 66, 49, 16,
+			75, 36, 51, 0, 17, 70, 9, 36, 95, 199, 56, 0, 108, 88, 35, 51, 65, 81, 37, 50, 0, 9, 66, 41, 16, 47, 35, 51, 0, 76,
+			0, 10, 67, 134, 40, 128, 107, 35, 84, 40, 0, 15, 68, 125, 200, 171, 204, 65, 39, 104, 17, 35, 84, 84, 37, 0, 15, 69, 124, 124,
+			226, 129, 32, 65, 108, 57, 39, 50, 36, 88, 0, 13, 68, 124, 120, 10, 136, 65, 108, 50, 47, 39, 12, 0, 20, 70, 111, 55, 138, 69,
+			76, 32, 83, 37, 55, 47, 36, 51, 91, 36, 49, 35, 50, 0, 15, 69, 30, 3, 8, 206, 0, 35, 50, 75, 35, 71, 37, 50, 0, 15,
+			69, 29, 19, 240, 30, 0, 35, 51, 72, 36, 49, 108, 50, 0, 19, 70, 10, 3, 226, 193, 18, 32, 108, 50, 72, 39, 49, 35, 51, 71,
+			39, 50, 0, 0, 14, 68, 186, 3, 200, 68, 76, 35, 50, 72, 71, 35, 51, 0, 19, 70, 181, 20, 202, 204, 247, 192, 48, 35, 51, 35,
+			89, 47, 37, 72, 35, 65, 0, 14, 68, 129, 241, 200, 68, 50, 35, 65, 108, 71, 35, 51, 0, 14, 68, 126, 17, 204, 68, 65, 39, 107,
+			108, 75, 36, 51, 0, 13, 68, 76, 124, 200, 68, 89, 108, 57, 71, 36, 51, 0, 13, 68, 70, 44, 202, 68, 51, 39, 57, 47, 36, 51,
+			0, 13, 68, 32, 114, 158, 68, 71, 108, 47, 55, 36, 51, 0, 19, 70, 10, 11, 160, 30, 12, 33, 108, 50, 76, 36, 50, 108, 50, 49,
+			36, 89, 0, 15, 3, 239, 174, 168, 6, 107, 36, 12, 10, 39, 51, 72, 40, 0, 0, 15, 69, 125, 17, 204, 103, 48, 65, 35, 51, 108,
+			75, 36, 37, 0, 18, 70, 124, 252, 209, 100, 119, 222, 65, 39, 72, 37, 51, 108, 65, 36, 55, 0, 17, 69, 124, 163, 30, 175, 48, 65,
+			39, 47, 36, 75, 35, 55, 55, 37, 0, 17, 69, 50, 36, 143, 199, 48, 75, 35, 84, 88, 35, 72, 36, 81, 37, 0, 20, 70, 42, 39,
+			179, 61, 242, 222, 47, 39, 12, 55, 37, 72, 36, 65, 36, 89, 55, 0, 13, 67, 34, 236, 115, 71, 35, 76, 76, 36, 81, 37, 0, 11,
+			67, 29, 232, 115, 36, 55, 108, 107, 37, 0, 15, 67, 29, 22, 20, 35, 51, 88, 36, 91, 65, 35, 50, 72, 0, 15, 3, 239, 174, 169,
+			6, 107, 36, 12, 10, 39, 51, 72, 40, 0, 0, 18, 69, 194, 2, 145, 121, 16, 49, 39, 50, 47, 39, 51, 39, 55, 36, 51, 0, 11,
+			67, 193, 19, 0, 49, 35, 51, 35, 75, 0, 12, 67, 130, 34, 17, 50, 39, 12, 71, 35, 51, 0, 15, 69, 130, 33, 223, 33, 16, 50,
+			39, 84, 108, 65, 71, 51, 0, 16, 69, 127, 49, 224, 33, 16, 65, 37, 57, 108, 50, 71, 39, 51, 0, 21, 70, 78, 24, 135, 121, 199,
+			159, 89, 35, 107, 84, 39, 55, 104, 17, 35, 55, 35, 65, 0, 16, 69, 73, 241, 224, 33, 16, 88, 35, 65, 108, 50, 71, 35, 51, 0,
+			17, 70, 70, 39, 199, 43, 52, 223, 51, 39, 65, 108, 47, 37, 89, 65, 0, 12, 67, 70, 18, 17, 51, 35, 107, 71, 35, 51, 0, 15,
+			69, 61, 49, 223, 33, 16, 72, 36, 89, 108, 65, 71, 51, 0, 22, 71, 57, 19, 145, 124, 120, 32, 60, 101, 39, 51, 101, 39, 51, 65,
+			108, 50, 35, 50, 72, 0, 17, 69, 32, 247, 224, 97, 16, 71, 35, 72, 65, 35, 50, 88, 35, 51, 0, 20, 72, 30, 39, 138, 205, 241,
+			202, 137, 240, 39, 55, 47, 37, 65, 108, 47, 39, 65, 0, 20, 72, 30, 36, 71, 131, 24, 138, 30, 0, 40, 51, 108, 50, 81, 40, 47,
+			108, 50, 0, 0, 11, 67, 194, 8, 0, 49, 39, 50, 35, 50, 0, 10, 67, 192, 120, 10, 49, 108, 50, 47, 0, 12, 67, 130, 34, 10,
+			50, 39, 12, 71, 35, 47, 0, 16, 68, 125, 148, 91, 204, 65, 39, 19, 35, 51, 51, 36, 83, 37, 0, 14, 68, 125, 19, 241, 204, 65,
+			39, 51, 72, 36, 81, 37, 0, 12, 67, 124, 216, 10, 65, 36, 107, 50, 35, 47, 0, 12, 67, 81, 18, 10, 91, 35, 51, 71, 35, 47,
+			0, 10, 67, 76, 120, 10, 89, 108, 50, 47, 0, 10, 67, 68, 120, 10, 51, 108, 50, 47, 0, 12, 67, 40, 135, 138, 47, 35, 71, 55,
+			36, 47, 0, 13, 68, 32, 252, 225, 204, 71, 35, 72, 37, 107, 37, 0, 12, 67, 32, 119, 154, 71, 108, 55, 36, 104, 17, 0, 23, 72,
+			29, 180, 209, 29, 231, 222, 139, 0, 35, 83, 89, 35, 51, 39, 55, 65, 39, 55, 40, 49, 0, 14, 4, 95, 48, 77, 50, 65, 37, 55,
+			57, 40, 50, 39, 0, 0, 16, 70, 182, 36, 84, 29, 50, 0, 48, 40, 51, 91, 108, 89, 71, 0, 11, 67, 126, 34, 15, 65, 40, 71,
+			35, 72, 0, 10, 67, 68, 131, 64, 51, 36, 71, 107, 0, 13, 68, 29, 244, 72, 68, 35, 65, 51, 71, 35, 51, 0, 15, 4, 95, 48,
+			77, 51, 65, 37, 55, 57, 108, 51, 72, 39, 0, 0, 13, 68, 192, 119, 224, 40, 49, 108, 65, 36, 50, 47, 0, 14, 68, 139, 1, 222,
+			40, 84, 36, 49, 108, 55, 35, 47, 0, 17, 69, 132, 225, 223, 129, 64, 107, 35, 101, 108, 65, 35, 50, 36, 91, 0, 16, 69, 131, 60,
+			31, 129, 64, 50, 37, 49, 65, 35, 50, 36, 91, 0, 15, 68, 126, 35, 72, 40, 65, 39, 12, 107, 36, 71, 35, 47, 0, 15, 69, 120,
+			114, 146, 206, 32, 55, 108, 47, 88, 37, 57, 39, 0, 9, 67, 87, 50, 128, 89, 37, 47, 0, 10, 67, 86, 34, 128, 89, 39, 12, 47,
+			0, 13, 67, 77, 23, 242, 89, 39, 51, 65, 36, 57, 36, 0, 15, 68, 61, 71, 224, 40, 72, 39, 91, 65, 35, 50, 35, 47, 0, 9,
+			67, 54, 34, 128, 107, 40, 47, 0, 12, 67, 52, 194, 128, 107, 39, 75, 75, 35, 47, 0, 14, 67, 41, 147, 8, 47, 35, 19, 35, 75,
+			75, 39, 71, 0, 15, 69, 30, 12, 115, 73, 64, 35, 50, 81, 37, 88, 36, 91, 0, 13, 68, 29, 81, 200, 40, 36, 89, 108, 71, 35,
+			47, 0, 0, 13, 67, 125, 19, 13, 65, 39, 51, 35, 75, 35, 107, 0, 10, 67, 122, 35, 192, 55, 39, 12, 72, 0, 19, 70, 97, 180,
+			96, 126, 40, 0, 88, 35, 83, 35, 51, 50, 36, 65, 40, 50, 0, 18, 70, 82, 24, 138, 68, 120, 0, 91, 35, 107, 84, 35, 47, 51,
+			108, 50, 0, 14, 67, 41, 247, 176, 47, 35, 65, 35, 55, 55, 39, 49, 0, 11, 67, 32, 195, 192, 71, 36, 75, 36, 72, 0, 13, 4,
+			95, 48, 77, 49, 107, 36, 88, 108, 51, 39, 0, 0, 16, 69, 193, 225, 243, 128, 160, 49, 36, 55, 108, 57, 36, 50, 47, 0, 11, 67,
+			193, 28, 0, 49, 36, 51, 35, 49, 0, 22, 71, 180, 244, 83, 136, 226, 177, 204, 48, 36, 72, 35, 51, 89, 40, 101, 47, 36, 81, 37,
+			0, 12, 67, 135, 50, 10, 107, 36, 57, 71, 35, 47, 0, 17, 70, 133, 228, 243, 131, 12, 192, 107, 36, 55, 89, 37, 50, 49, 37, 0,
+			17, 69, 126, 33, 216, 32, 160, 65, 39, 84, 108, 88, 36, 71, 35, 47, 0, 14, 68, 120, 129, 222, 32, 55, 35, 71, 108, 55, 35, 71,
+			0, 17, 69, 113, 18, 34, 128, 160, 104, 17, 39, 51, 71, 40, 50, 36, 47, 0, 14, 68, 80, 116, 143, 200, 91, 108, 88, 72, 36, 57,
+			36, 0, 10, 67, 71, 51, 138, 51, 37, 101, 47, 0, 0, 12, 67, 194, 8, 15, 49, 39, 50, 35, 50, 72, 0, 12, 67, 193, 72, 15,
+			49, 36, 91, 35, 50, 72, 0, 12, 67, 127, 50, 15, 65, 36, 57, 71, 39, 72, 0, 12, 67, 74, 8, 15, 88, 35, 50, 35, 50, 72,
+			0, 10, 67, 64, 131, 64, 88, 36, 71, 107, 0, 11, 67, 60, 120, 15, 72, 108, 50, 35, 72, 0, 11, 67, 10, 8, 15, 108, 50, 35,
+			50, 72, 0, 0, 13, 67, 194, 3, 242, 49, 39, 50, 72, 36, 57, 36, 0, 18, 70, 192, 120, 19, 130, 2, 128, 49, 108, 50, 89, 39,
+			50, 36, 50, 47, 0, 19, 70, 181, 20, 179, 62, 2, 128, 48, 36, 51, 36, 88, 37, 72, 36, 50, 47, 0, 23, 72, 77, 23, 199, 58,
+			36, 79, 199, 48, 89, 35, 51, 65, 108, 101, 39, 51, 72, 36, 81, 37, 0, 19, 70, 68, 115, 243, 138, 211, 148, 51, 108, 72, 37, 57,
+			39, 48, 35, 101, 91, 0, 18, 70, 42, 36, 96, 126, 2, 128, 47, 39, 51, 50, 39, 65, 36, 50, 47, 0, 18, 69, 34, 36, 243, 123,
+			32, 71, 36, 84, 35, 89, 37, 55, 36, 57, 36, 0, 0, 13, 68, 80, 119, 160, 196, 91, 108, 55, 35, 50, 81, 0, 16, 70, 70, 34,
+			34, 43, 60, 0, 51, 39, 71, 39, 47, 37, 49, 0, 9, 67, 61, 145, 192, 72, 39, 108, 0, 12, 67, 42, 215, 0, 47, 39, 48, 39,
+			104, 17, 0, 21, 70, 40, 195, 243, 62, 6, 17, 47, 35, 75, 72, 37, 72, 36, 50, 35, 88, 35, 51, 0, 12, 68, 34, 44, 224, 196,
+			71, 40, 37, 50, 81, 0, 20, 70, 29, 136, 71, 70, 6, 17, 36, 88, 107, 108, 51, 36, 50, 35, 88, 35, 51, 0, 0, 10, 67, 132,
+			252, 192, 107, 39, 72, 108, 0, 14, 68, 33, 230, 76, 32, 71, 39, 55, 35, 75, 35, 71, 0, 11, 67, 29, 50, 173, 36, 89, 47, 36,
+			48, 0, 14, 69, 9, 232, 159, 206, 0, 108, 55, 39, 65, 37, 50, 0, 0, 11, 67, 136, 172, 7, 84, 39, 47, 49, 108, 0, 12, 67,
+			130, 38, 71, 50, 39, 12, 19, 35, 50, 0, 11, 67, 78, 35, 199, 89, 39, 12, 72, 108, 0, 18, 69, 77, 244, 92, 128, 240, 89, 35,
+			65, 35, 51, 104, 17, 35, 50, 72, 0, 17, 69, 77, 20, 209, 131, 16, 89, 35, 51, 89, 39, 51, 35, 50, 81, 0, 16, 69, 76, 161,
+			243, 128, 240, 89, 36, 47, 108, 57, 35, 50, 72, 0, 17, 69, 61, 235, 83, 128, 240, 72, 36, 55, 48, 35, 89, 35, 50, 72, 0, 11,
+			67, 52, 133, 0, 107, 35, 71, 35, 91, 0, 11, 67, 42, 213, 0, 47, 35, 48, 36, 91, 0, 15, 69, 40, 124, 222, 128, 240, 47, 108,
+			57, 55, 35, 50, 72, 0, 15, 69, 30, 3, 199, 72, 240, 35, 50, 72, 108, 88, 35, 72, 0, 10, 67, 29, 147, 199, 35, 19, 72, 108,
+			0, 12, 67, 28, 246, 71, 36, 72, 72, 36, 19, 108, 0, 0, 8, 66, 55, 48, 107, 35, 57, 0, 10, 67, 50, 35, 226, 75, 39, 72,
+			39, 0, 0, 12, 68, 182, 39, 176, 28, 48, 39, 55, 49, 108, 0, 13, 68, 181, 236, 240, 28, 48, 39, 55, 37, 49, 108, 0, 14, 68,
+			134, 44, 207, 28, 107, 39, 84, 36, 57, 72, 108, 0, 13, 68, 125, 236, 240, 28, 65, 36, 55, 37, 49, 108, 0, 11, 67, 114, 33, 192,
+			104, 17, 39, 84, 108, 0, 15, 68, 112, 117, 217, 28, 104, 17, 108, 47, 36, 19, 35, 50, 0, 10, 67, 81, 145, 192, 91, 39, 108, 19,
+			0, 18, 70, 70, 12, 71, 70, 12, 64, 51, 35, 50, 81, 108, 51, 35, 50, 81, 0, 17, 70, 58, 37, 7, 206, 3, 192, 101, 39, 91,
+			108, 57, 35, 50, 72, 0, 19, 70, 35, 54, 209, 137, 35, 192, 71, 37, 57, 35, 83, 51, 40, 88, 35, 72, 0, 19, 70, 33, 225, 207,
+			70, 12, 64, 71, 36, 55, 108, 72, 36, 51, 35, 50, 81, 0, 20, 72, 31, 52, 162, 120, 116, 243, 138, 0, 37, 88, 39, 55, 108, 89,
+			57, 39, 50, 0, 13, 68, 28, 246, 107, 28, 36, 72, 72, 36, 19, 108, 0, 0, 16, 69, 181, 21, 224, 206, 0, 48, 39, 51, 47, 35,
+			50, 37, 50, 0, 16, 69, 129, 19, 200, 30, 0, 50, 35, 51, 72, 36, 71, 108, 50, 0, 16, 69, 115, 52, 98, 30, 0, 104, 17, 37,
+			51, 39, 84, 108, 50, 0, 14, 69, 83, 52, 98, 30, 0, 91, 37, 51, 84, 108, 50, 0, 15, 69, 80, 161, 200, 30, 0, 91, 36, 47,
+			108, 71, 108, 50, 0, 10, 67, 66, 24, 0, 88, 36, 107, 50, 0, 0, 12, 67, 192, 162, 7, 49, 35, 47, 71, 35, 50, 0, 11, 67,
+			128, 200, 135, 50, 35, 75, 84, 108, 0, 13, 67, 112, 135, 135, 104, 17, 35, 71, 55, 35, 50, 0, 12, 67, 109, 103, 135, 83, 39, 88,
+			35, 55, 108, 0, 11, 67, 70, 35, 71, 51, 40, 107, 35, 50, 0, 20, 70, 62, 12, 199, 181, 56, 15, 72, 39, 50, 57, 108, 48, 35,
+			89, 35, 50, 72, 0, 11, 67, 29, 18, 199, 36, 51, 89, 35, 50, 0, 0, 15, 69, 206, 40, 19, 194, 32, 57, 40, 50, 36, 89, 49,
+			39, 0, 11, 67, 134, 3, 226, 107, 36, 50, 72, 40, 0, 17, 69, 127, 49, 224, 51, 48, 65, 37, 12, 108, 50, 6, 75, 37, 12, 0,
+			17, 69, 124, 165, 79, 175, 48, 65, 39, 47, 36, 89, 35, 72, 72, 37, 0, 20, 70, 65, 236, 222, 125, 19, 242, 88, 35, 55, 37, 55,
+			65, 39, 51, 36, 57, 36, 0, 10, 67, 29, 236, 98, 39, 55, 81, 40, 0, 19, 66, 33, 128, 71, 35, 12, 19, 72, 10, 35, 88, 9,
+			88, 39, 107, 51, 0, 46, 0, 14, 68, 181, 20, 225, 28, 48, 36, 51, 36, 89, 107, 108, 0, 14, 68, 124, 130, 158, 28, 65, 39, 71,
+			47, 35, 55, 108, 0, 16, 68, 83, 8, 155, 28, 91, 39, 49, 40, 12, 6, 83, 108, 12, 0, 14, 68, 76, 114, 25, 28, 89, 108, 71,
+			36, 19, 35, 50, 0, 14, 68, 68, 114, 25, 28, 51, 108, 71, 36, 19, 35, 50, 0, 14, 68, 52, 248, 143, 28, 107, 39, 72, 40, 72,
+			35, 50, 0, 14, 68, 44, 119, 139, 28, 89, 108, 55, 36, 89, 35, 50, 0, 11, 67, 35, 24, 64, 71, 36, 81, 36, 12, 0, 13, 68,
+			28, 130, 158, 28, 36, 71, 47, 36, 55, 108, 0, 10, 67, 11, 24, 64, 108, 81, 35, 107, 0, 23, 5, 217, 130, 46, 216, 184, 104, 12,
+			12, 35, 71, 55, 10, 35, 88, 9, 88, 39, 107, 51, 0, 46, 0, 11, 67, 194, 24, 0, 49, 39, 107, 35, 50, 0, 12, 67, 134, 183,
+			202, 107, 36, 65, 65, 35, 47, 0, 13, 68, 129, 129, 223, 204, 50, 36, 88, 108, 65, 37, 0, 17, 70, 127, 50, 162, 122, 252, 192, 65,
+			37, 47, 39, 55, 39, 90, 37, 0, 14, 67, 125, 87, 202, 65, 39, 89, 35, 65, 65, 35, 47, 0, 15, 67, 124, 166, 220, 65, 39, 47,
+			47, 35, 83, 36, 104, 17, 0, 12, 67, 84, 210, 10, 89, 39, 107, 71, 35, 47, 0, 12, 67, 56, 199, 138, 101, 36, 75, 55, 35, 47,
+			0, 12, 67, 49, 19, 224, 75, 39, 51, 72, 35, 50, 0, 17, 70, 42, 43, 98, 122, 252, 192, 47, 39, 48, 39, 55, 39, 90, 37, 0,
+			12, 67, 41, 18, 10, 47, 39, 51, 71, 35, 47, 0, 12, 67, 33, 28, 32, 71, 35, 51, 49, 35, 50, 0, 8, 65, 48, 6, 75, 37,
+			65, 0, 0, 15, 69, 193, 66, 179, 132, 112, 49, 35, 91, 47, 37, 107, 108, 0, 11, 67, 187, 4, 225, 76, 35, 49, 89, 36, 0, 13,
+			67, 129, 35, 225, 50, 35, 88, 35, 72, 36, 12, 0, 14, 67, 124, 163, 79, 65, 39, 47, 47, 35, 107, 36, 72, 0, 12, 67, 114, 42,
+			225, 104, 17, 39, 84, 36, 12, 0, 12, 67, 84, 247, 192, 6, 89, 35, 72, 39, 65, 0, 12, 67, 79, 10, 225, 89, 36, 49, 49, 36,
+			12, 0, 11, 67, 69, 198, 97, 51, 39, 104, 17, 36, 0, 12, 67, 63, 10, 225, 72, 35, 49, 49, 36, 12, 0, 12, 67, 61, 28, 97,
+			72, 35, 51, 81, 35, 107, 0, 13, 67, 61, 28, 33, 72, 35, 51, 35, 49, 36, 12, 0, 12, 67, 61, 26, 225, 72, 35, 51, 51, 36,
+			12, 0, 13, 67, 43, 10, 225, 6, 47, 36, 49, 49, 36, 12, 0, 11, 67, 33, 198, 97, 71, 39, 104, 17, 36, 0, 12, 67, 33, 28,
+			33, 71, 36, 51, 49, 36, 12, 0, 21, 72, 30, 39, 138, 68, 116, 226, 128, 240, 39, 55, 47, 36, 51, 108, 89, 39, 50, 72, 0, 0,
+			14, 68, 195, 49, 211, 40, 49, 37, 57, 108, 89, 35, 47, 0, 14, 68, 192, 177, 219, 40, 49, 36, 89, 108, 83, 35, 47, 0, 15, 68,
+			181, 18, 147, 40, 48, 39, 51, 39, 47, 36, 89, 47, 0, 19, 70, 133, 241, 202, 137, 235, 243, 107, 36, 65, 108, 47, 39, 55, 39, 90,
+			37, 0, 14, 68, 130, 20, 112, 128, 50, 35, 107, 51, 49, 35, 50, 0, 14, 68, 128, 241, 223, 40, 50, 36, 72, 108, 65, 35, 47, 0,
+			14, 68, 125, 145, 207, 128, 65, 35, 19, 108, 72, 36, 50, 0, 16, 69, 124, 209, 240, 127, 48, 65, 35, 107, 108, 49, 36, 65, 37, 0,
+			16, 68, 124, 170, 219, 112, 65, 39, 47, 47, 35, 83, 36, 104, 17, 0, 10, 67, 66, 34, 0, 88, 39, 12, 71, 0, 13, 68, 62, 44,
+			211, 40, 72, 36, 84, 37, 89, 47, 0, 11, 67, 62, 39, 136, 72, 39, 55, 35, 71, 0, 13, 68, 56, 116, 112, 128, 101, 108, 51, 49,
+			35, 50, 0, 13, 68, 51, 52, 91, 40, 75, 37, 51, 39, 83, 47, 0, 13, 68, 43, 52, 176, 128, 47, 37, 88, 49, 39, 50, 0, 13,
+			68, 41, 17, 211, 40, 47, 36, 51, 108, 89, 47, 0, 11, 67, 40, 210, 128, 47, 35, 107, 47, 36, 0, 19, 68, 30, 23, 243, 40, 6,
+			35, 107, 35, 65, 65, 37, 12, 4, 57, 35, 47, 0, 0, 13, 67, 207, 8, 64, 6, 57, 36, 49, 49, 36, 12, 0, 18, 70, 194, 2,
+			145, 182, 40, 0, 49, 39, 50, 47, 51, 48, 40, 35, 50, 0, 18, 68, 125, 197, 217, 132, 65, 39, 104, 17, 35, 47, 47, 35, 19, 36,
+			12, 0, 13, 67, 125, 195, 223, 65, 35, 104, 17, 72, 35, 65, 0, 15, 68, 124, 215, 235, 60, 65, 39, 107, 35, 65, 65, 35, 72, 0,
+			16, 68, 113, 225, 207, 132, 104, 17, 35, 55, 55, 108, 72, 36, 12, 0, 13, 68, 109, 21, 51, 60, 83, 35, 51, 91, 37, 72, 0, 14,
+			68, 78, 35, 207, 132, 89, 40, 72, 10, 72, 36, 107, 0, 12, 67, 57, 26, 223, 101, 39, 51, 51, 35, 65, 0, 11, 67, 48, 184, 64,
+			75, 39, 89, 89, 36, 0, 10, 67, 48, 116, 240, 75, 108, 89, 49, 0, 15, 68, 42, 36, 217, 132, 6, 47, 39, 89, 36, 19, 36, 12,
+			0, 14, 67, 41, 19, 95, 47, 35, 51, 35, 107, 107, 39, 65, 0, 10, 67, 35, 60, 64, 71, 36, 57, 81, 0, 11, 67, 33, 38, 95,
+			71, 36, 88, 35, 65, 0, 13, 68, 28, 252, 211, 132, 39, 72, 37, 89, 36, 12, 0, 0, 15, 69, 193, 251, 98, 76, 160, 49, 39, 65,
+			48, 39, 89, 47, 0, 12, 67, 193, 60, 32, 49, 39, 89, 49, 39, 50, 0, 12, 67, 193, 20, 202, 49, 39, 51, 89, 36, 47, 0, 15,
+			69, 192, 116, 145, 138, 0, 49, 108, 88, 36, 51, 40, 50, 0, 12, 67, 185, 231, 224, 76, 39, 55, 65, 35, 50, 0, 16, 69, 182, 24,
+			17, 108, 160, 48, 35, 107, 50, 51, 35, 83, 47, 0, 12, 67, 126, 40, 96, 65, 39, 12, 107, 36, 50, 0, 12, 67, 125, 19, 224, 65,
+			39, 51, 72, 35, 50, 0, 11, 67, 124, 215, 128, 65, 35, 107, 35, 55, 0, 11, 67, 88, 119, 224, 88, 108, 65, 36, 50, 0, 11, 67,
+			63, 7, 128, 72, 35, 49, 35, 55, 0, 11, 67, 60, 119, 224, 72, 108, 65, 35, 50, 0, 9, 66, 49, 32, 75, 39, 88, 19, 0, 11,
+			67, 44, 119, 224, 89, 108, 65, 36, 50, 0, 10, 67, 32, 117, 10, 71, 108, 91, 47, 0, 15, 69, 32, 115, 209, 108, 160, 71, 108, 72,
+			51, 39, 83, 47, 0, 15, 68, 29, 231, 203, 120, 39, 55, 6, 65, 35, 89, 35, 55, 0, 11, 67, 29, 19, 224, 39, 51, 72, 39, 50,
+			0, 0, 12, 67, 207, 7, 192, 6, 57, 36, 49, 39, 65, 0, 12, 67, 197, 242, 15, 81, 39, 65, 71, 35, 72, 0, 15, 69, 186, 1,
+			224, 194, 16, 76, 36, 50, 108, 50, 49, 36, 0, 11, 67, 136, 200, 97, 84, 36, 75, 107, 36, 0, 11, 67, 129, 151, 192, 50, 36, 19,
+			35, 65, 0, 15, 68, 126, 6, 43, 124, 65, 39, 50, 35, 88, 88, 35, 65, 0, 16, 69, 125, 241, 224, 102, 16, 65, 39, 65, 108, 50,
+			36, 19, 36, 0, 15, 68, 125, 150, 43, 124, 65, 39, 19, 35, 88, 88, 35, 65, 0, 15, 68, 125, 53, 235, 52, 65, 39, 89, 35, 47,
+			47, 35, 107, 0, 14, 68, 125, 33, 205, 124, 65, 39, 88, 108, 107, 36, 65, 0, 13, 67, 125, 19, 225, 65, 39, 51, 6, 72, 36, 12,
+			0, 14, 67, 124, 215, 207, 65, 39, 107, 35, 65, 65, 35, 72, 0, 15, 69, 120, 115, 17, 102, 16, 55, 108, 75, 39, 51, 19, 36, 0,
+			13, 67, 84, 247, 225, 89, 35, 72, 35, 65, 36, 12, 0, 11, 67, 80, 247, 192, 91, 39, 72, 35, 65, 0, 12, 67, 77, 28, 33, 89,
+			36, 51, 49, 36, 12, 0, 11, 67, 72, 247, 192, 88, 35, 72, 35, 65, 0, 15, 68, 61, 242, 15, 124, 72, 35, 65, 71, 36, 72, 35,
+			65, 0, 10, 67, 60, 120, 49, 72, 108, 50, 81, 0, 12, 67, 57, 19, 225, 101, 39, 51, 72, 36, 12, 0, 11, 67, 56, 247, 192, 101,
+			35, 72, 35, 65, 0, 12, 67, 48, 247, 192, 75, 35, 72, 72, 35, 65, 0, 11, 67, 42, 35, 225, 47, 40, 72, 36, 12, 0, 11, 67,
+			40, 119, 225, 47, 108, 65, 65, 36, 0, 16, 69, 33, 28, 20, 204, 240, 71, 35, 51, 49, 36, 91, 37, 72, 0, 17, 70, 29, 53, 209,
+			120, 114, 0, 39, 89, 47, 39, 51, 55, 108, 71, 0, 10, 67, 8, 247, 192, 108, 72, 35, 65, 0, 0, 14, 68, 197, 232, 176, 128, 81,
+			36, 55, 39, 49, 36, 50, 0, 17, 70, 194, 2, 145, 29, 50, 128, 49, 39, 50, 47, 51, 108, 89, 47, 0, 12, 67, 134, 3, 222, 107,
+			36, 50, 72, 36, 55, 0, 14, 67, 124, 211, 8, 65, 39, 107, 35, 75, 75, 35, 71, 0, 10, 67, 102, 37, 128, 35, 84, 35, 88, 0,
+			19, 70, 63, 52, 92, 61, 242, 128, 72, 37, 51, 104, 17, 36, 72, 65, 35, 47, 0, 11, 67, 32, 196, 128, 71, 36, 75, 39, 88, 0,
+			0, 14, 68, 199, 56, 159, 132, 81, 37, 57, 40, 65, 36, 12, 0, 13, 67, 198, 3, 223, 6, 81, 35, 50, 72, 39, 65, 0, 13, 68,
+			194, 36, 79, 132, 49, 40, 51, 72, 36, 107, 0, 12, 67, 194, 3, 223, 49, 35, 50, 72, 35, 65, 0, 12, 67, 129, 184, 95, 50, 35,
+			83, 35, 107, 65, 0, 14, 67, 125, 87, 223, 65, 39, 89, 35, 65, 65, 35, 65, 0, 15, 68, 124, 220, 31, 132, 65, 35, 107, 49, 35,
+			65, 36, 12, 0, 14, 67, 124, 167, 223, 65, 39, 47, 35, 65, 65, 36, 65, 0, 11, 67, 114, 36, 192, 104, 17, 39, 12, 89, 0, 17,
+			68, 113, 247, 31, 132, 104, 17, 39, 65, 104, 17, 39, 65, 36, 12, 0, 13, 68, 83, 52, 79, 132, 91, 37, 51, 72, 36, 107, 0, 18,
+			70, 81, 245, 51, 69, 40, 0, 91, 35, 65, 91, 37, 51, 88, 35, 50, 0, 19, 70, 77, 180, 112, 68, 248, 64, 89, 35, 83, 35, 51,
+			49, 35, 51, 72, 36, 0, 18, 70, 68, 120, 109, 122, 184, 64, 51, 108, 107, 48, 36, 55, 55, 36, 12, 0, 13, 68, 68, 119, 200, 60,
+			51, 108, 65, 71, 39, 72, 0, 10, 67, 66, 39, 0, 88, 39, 104, 17, 0, 14, 68, 56, 114, 159, 132, 101, 108, 47, 36, 65, 36, 12,
+			0, 14, 67, 41, 184, 95, 47, 35, 83, 35, 107, 107, 39, 65, 0, 11, 67, 34, 36, 223, 71, 40, 89, 35, 65, 0, 18, 70, 29, 118,
+			199, 206, 184, 64, 36, 47, 83, 108, 37, 57, 57, 36, 12, 0, 16, 70, 29, 28, 98, 43, 56, 0, 36, 51, 81, 39, 47, 37, 50, 0,
+			14, 68, 9, 36, 79, 132, 108, 88, 39, 51, 72, 36, 12, 0, 0, 19, 71, 184, 124, 240, 137, 180, 240, 204, 76, 108, 57, 49, 39, 83,
+			89, 49, 37, 0, 16, 68, 181, 18, 176, 120, 48, 39, 51, 39, 47, 39, 49, 39, 55, 0, 11, 67, 133, 18, 146, 107, 36, 51, 47, 88,
+			0, 18, 69, 125, 193, 209, 32, 160, 65, 39, 104, 17, 108, 51, 36, 71, 35, 47, 0, 14, 68, 124, 193, 223, 120, 65, 39, 75, 108, 65,
+			36, 55, 0, 16, 69, 69, 50, 145, 30, 0, 51, 36, 89, 47, 39, 51, 108, 50, 0, 14, 68, 68, 120, 77, 120, 51, 108, 107, 36, 107,
+			35, 55, 0, 11, 67, 61, 76, 0, 72, 39, 91, 35, 49, 0, 14, 68, 43, 5, 48, 120, 47, 35, 49, 91, 36, 49, 55, 0, 17, 69,
+			32, 244, 209, 80, 160, 71, 35, 72, 89, 36, 51, 36, 91, 47, 0, 14, 69, 28, 252, 211, 138, 0, 36, 72, 37, 89, 39, 50, 0, 27,
+			2, 58, 100, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 101, 35, 50, 72, 108, 50, 0, 46, 0, 16, 69, 180,
+			120, 18, 62, 16, 6, 48, 108, 50, 88, 72, 35, 107, 0, 15, 68, 127, 51, 225, 124, 65, 37, 72, 35, 6, 107, 35, 65, 0, 14, 68,
+			126, 1, 211, 192, 65, 35, 50, 108, 89, 36, 49, 0, 14, 68, 125, 49, 223, 52, 65, 39, 89, 108, 65, 36, 107, 0, 17, 69, 125, 33,
+			209, 102, 16, 65, 39, 88, 108, 51, 36, 19, 36, 12, 0, 13, 68, 109, 225, 211, 192, 83, 36, 55, 108, 89, 49, 0, 16, 69, 109, 225,
+			211, 110, 16, 83, 35, 55, 108, 89, 36, 83, 36, 0, 11, 67, 107, 52, 64, 104, 17, 36, 57, 51, 0, 10, 67, 80, 132, 64, 91, 36,
+			71, 51, 0, 10, 67, 72, 132, 64, 88, 36, 71, 51, 0, 12, 67, 56, 132, 64, 6, 101, 35, 71, 35, 51, 0, 8, 66, 53, 48, 107,
+			36, 89, 0, 11, 67, 42, 40, 19, 47, 40, 50, 36, 89, 0, 14, 68, 41, 81, 207, 124, 47, 35, 89, 108, 72, 39, 65, 0, 22, 72,
+			41, 28, 222, 136, 140, 202, 132, 112, 47, 36, 51, 37, 55, 39, 71, 37, 47, 107, 108, 0, 12, 67, 40, 132, 64, 6, 47, 35, 71, 35,
+			51, 0, 13, 68, 35, 52, 77, 124, 71, 37, 51, 35, 107, 65, 0, 15, 69, 10, 4, 202, 194, 16, 108, 50, 35, 89, 47, 49, 36, 0,
+			12, 67, 32, 132, 64, 71, 36, 71, 35, 51, 0, 48, 11, 67, 32, 132, 64, 71, 35, 71, 51, 0, 46, 0, 14, 67, 125, 178, 148, 65,
+			39, 83, 35, 47, 47, 36, 91, 0, 11, 67, 125, 164, 128, 65, 35, 104, 17, 88, 0, 10, 67, 124, 213, 128, 65, 35, 107, 88, 0, 10,
+			67, 122, 44, 98, 55, 39, 81, 39, 0, 11, 67, 112, 133, 128, 104, 17, 35, 71, 88, 0, 9, 67, 110, 36, 128, 83, 39, 88, 0, 26,
+			73, 76, 120, 27, 68, 120, 19, 205, 60, 34, 89, 108, 50, 83, 36, 51, 108, 50, 89, 37, 89, 49, 39, 12, 0, 11, 67, 68, 196, 128,
+			51, 35, 75, 35, 88, 0, 12, 67, 61, 19, 148, 72, 36, 51, 35, 101, 91, 0, 12, 67, 55, 52, 128, 107, 35, 57, 57, 36, 88, 0,
+			10, 67, 54, 36, 128, 107, 39, 12, 88, 0, 10, 67, 35, 53, 128, 71, 36, 57, 88, 0, 15, 69, 32, 119, 155, 101, 224, 71, 36, 55,
+			83, 36, 19, 55, 0, 0, 14, 67, 125, 120, 81, 65, 39, 47, 35, 107, 107, 35, 51, 0, 17, 69, 125, 50, 160, 193, 176, 65, 39, 89,
+			47, 35, 50, 49, 36, 83, 0, 12, 67, 124, 226, 17, 65, 39, 101, 71, 36, 51, 0, 12, 67, 124, 183, 209, 65, 39, 89, 65, 36, 51,
+			0, 8, 66, 121, 16, 55, 39, 51, 0, 18, 70, 109, 24, 179, 63, 52, 223, 83, 36, 51, 39, 57, 72, 37, 89, 65, 0, 8, 66, 61,
+			16, 72, 35, 51, 0, 17, 70, 60, 115, 199, 207, 52, 223, 72, 108, 72, 108, 37, 12, 89, 65, 0, 9, 66, 53, 16, 107, 39, 51, 51,
+			0, 16, 68, 42, 36, 235, 92, 47, 35, 84, 35, 89, 89, 39, 47, 36, 0, 9, 66, 61, 16, 72, 35, 51, 0, 76, 0, 24, 71, 124,
+			163, 79, 29, 229, 48, 120, 65, 39, 47, 47, 35, 107, 36, 72, 39, 91, 91, 36, 49, 55, 0, 22, 72, 111, 52, 179, 137, 232, 175, 207,
+			0, 83, 37, 88, 37, 57, 39, 55, 39, 90, 37, 49, 0, 13, 68, 76, 115, 241, 204, 89, 108, 72, 36, 81, 37, 0, 16, 69, 53, 22,
+			212, 30, 0, 107, 35, 51, 83, 36, 91, 108, 50, 0, 0, 14, 68, 198, 36, 78, 68, 81, 40, 51, 36, 101, 35, 51, 0, 17, 70, 193,
+			248, 160, 205, 55, 192, 49, 39, 65, 39, 50, 37, 89, 65, 0, 11, 67, 193, 53, 0, 49, 35, 89, 35, 91, 0, 13, 68, 135, 50, 158,
+			68, 107, 37, 47, 55, 36, 51, 0, 14, 68, 109, 24, 161, 68, 83, 39, 51, 40, 107, 35, 51, 0, 11, 67, 92, 132, 64, 47, 35, 71,
+			35, 51, 0, 18, 70, 78, 220, 207, 48, 119, 225, 89, 36, 48, 37, 72, 75, 108, 65, 36, 0, 17, 70, 76, 119, 142, 137, 19, 225, 89,
+			108, 55, 101, 39, 51, 72, 36, 0, 10, 67, 52, 132, 64, 107, 36, 71, 51, 0, 12, 67, 33, 19, 151, 71, 35, 51, 101, 35, 47, 0,
+			0, 11, 67, 181, 20, 226, 48, 39, 51, 89, 40, 0, 13, 67, 125, 55, 243, 65, 39, 89, 35, 65, 65, 108, 0, 21, 71, 52, 117, 145,
+			29, 228, 33, 128, 107, 108, 88, 36, 51, 39, 88, 88, 36, 107, 50, 0, 21, 71, 41, 19, 243, 60, 118, 240, 128, 47, 35, 51, 72, 37,
+			72, 35, 83, 49, 35, 50, 0, 16, 69, 32, 248, 136, 62, 32, 71, 39, 72, 39, 71, 39, 72, 39, 0, 24, 73, 30, 39, 138, 68, 120,
+			179, 137, 226, 128, 40, 55, 47, 51, 108, 84, 37, 57, 39, 55, 36, 47, 0, 26, 73, 29, 180, 199, 71, 20, 243, 56, 172, 115, 35, 83,
+			89, 108, 51, 81, 39, 89, 37, 101, 47, 36, 81, 37, 0, 0, 10, 67, 197, 19, 0, 81, 39, 51, 75, 0, 19, 70, 193, 225, 212, 206,
+			12, 27, 49, 36, 55, 108, 91, 37, 50, 49, 39, 83, 0, 17, 70, 193, 66, 179, 32, 120, 0, 49, 35, 91, 47, 37, 71, 108, 50, 0,
+			18, 69, 183, 54, 159, 33, 16, 48, 36, 57, 104, 17, 35, 65, 71, 35, 51, 0, 12, 67, 183, 51, 17, 48, 36, 57, 75, 36, 51, 0,
+			16, 69, 183, 49, 223, 33, 16, 48, 35, 57, 108, 65, 71, 35, 51, 0, 12, 67, 129, 66, 145, 50, 36, 91, 47, 35, 51, 0, 11, 67,
+			126, 35, 17, 65, 40, 75, 36, 51, 0, 12, 67, 125, 66, 145, 65, 39, 91, 47, 35, 51, 0, 18, 70, 79, 56, 17, 191, 52, 223, 89,
+			37, 50, 36, 51, 90, 37, 89, 65, 0, 10, 67, 41, 242, 17, 47, 35, 65, 51, 0, 15, 69, 28, 129, 200, 193, 16, 35, 71, 108, 71,
+			35, 49, 51, 0, 30, 2, 58, 111, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 65, 39, 47, 36, 35, 75, 12,
+			36, 71, 0, 46, 30, 2, 58, 111, 50, 35, 65, 108, 72, 36, 10, 76, 36, 107, 51, 36, 57, 36, 10, 65, 39, 47, 36, 35, 75, 12,
+			36, 71, 0, 46, 0, 15, 69, 199, 56, 138, 206, 0, 81, 37, 57, 39, 47, 37, 50, 0, 12, 67, 131, 2, 10, 50, 36, 49, 71, 35,
+			47, 0, 12, 67, 127, 8, 10, 65, 36, 49, 50, 35, 47, 0, 14, 68, 126, 2, 161, 204, 65, 39, 50, 47, 35, 107, 37, 0, 14, 68,
+			125, 82, 155, 204, 65, 39, 89, 47, 35, 83, 108, 0, 14, 67, 124, 210, 10, 65, 39, 107, 35, 71, 71, 35, 47, 0, 13, 67, 113, 55,
+			202, 104, 17, 36, 89, 65, 35, 47, 0, 14, 68, 109, 24, 176, 80, 83, 39, 51, 40, 49, 36, 91, 0, 12, 68, 101, 248, 143, 204, 35,
+			65, 40, 72, 37, 0, 16, 69, 79, 4, 74, 206, 0, 89, 36, 49, 51, 36, 47, 37, 50, 0, 12, 67, 68, 215, 138, 51, 36, 107, 55,
+			35, 47, 0, 16, 70, 68, 123, 83, 136, 252, 192, 51, 108, 48, 89, 39, 72, 37, 0, 13, 67, 63, 12, 128, 72, 35, 49, 49, 36, 57,
+			36, 0, 13, 68, 48, 124, 27, 80, 75, 108, 49, 35, 83, 91, 0, 15, 69, 43, 4, 98, 30, 0, 47, 35, 49, 51, 39, 108, 50, 0,
+			16, 69, 41, 23, 200, 138, 0, 47, 36, 51, 39, 65, 71, 39, 50, 0, 11, 67, 29, 230, 202, 39, 55, 83, 35, 47, 0, 12, 68, 28,
+			164, 115, 80, 39, 47, 51, 37, 91, 0, 18, 70, 8, 132, 91, 43, 28, 192, 108, 71, 51, 35, 83, 47, 36, 81, 37, 0, 0, 19, 70,
+			193, 18, 32, 205, 180, 64, 49, 35, 51, 71, 39, 50, 37, 83, 36, 51, 0, 14, 67, 124, 198, 79, 65, 39, 75, 35, 19, 19, 35, 72,
+			0, 11, 67, 57, 117, 0, 101, 35, 47, 35, 91, 0, 13, 68, 51, 50, 8, 68, 75, 37, 71, 71, 39, 51, 0, 17, 70, 28, 129, 200,
+			87, 52, 64, 35, 71, 108, 71, 35, 89, 37, 51, 0, 0, 15, 68, 181, 20, 160, 40, 48, 36, 51, 36, 88, 36, 50, 47, 0, 14, 68,
+			128, 216, 147, 40, 50, 39, 107, 40, 89, 35, 47, 0, 17, 69, 61, 71, 224, 193, 64, 72, 39, 91, 65, 35, 50, 49, 39, 91, 0, 19,
+			70, 41, 24, 138, 29, 44, 115, 47, 35, 51, 39, 47, 108, 88, 36, 81, 37, 0, 16, 69, 9, 180, 115, 129, 64, 108, 83, 35, 51, 37,
+			50, 36, 91, 0, 8, 65, 184, 6, 76, 36, 12, 0, 0, 16, 69, 192, 116, 112, 41, 16, 49, 108, 51, 36, 49, 47, 36, 51, 0, 21,
+			72, 182, 36, 179, 43, 56, 179, 77, 240, 48, 39, 88, 37, 47, 37, 84, 37, 89, 65, 0, 14, 67, 125, 51, 25, 65, 39, 89, 35, 75,
+			75, 35, 19, 0, 12, 67, 125, 19, 25, 65, 35, 51, 75, 35, 19, 0, 17, 68, 124, 163, 15, 60, 65, 39, 47, 36, 75, 35, 72, 72,
+			36, 72, 0, 10, 67, 124, 116, 240, 65, 108, 89, 49, 0, 19, 70, 112, 132, 83, 42, 40, 0, 104, 17, 35, 71, 51, 36, 89, 47, 40,
+			50, 0, 15, 68, 109, 24, 72, 60, 83, 35, 51, 35, 107, 71, 39, 72, 0, 16, 69, 82, 20, 115, 137, 16, 91, 35, 107, 51, 37, 84,
+			35, 51, 0, 16, 70, 31, 2, 7, 40, 120, 0, 36, 49, 71, 108, 47, 108, 50, 0, 0, 16, 70, 183, 52, 95, 137, 60, 192, 48, 37,
+			51, 65, 40, 89, 108, 0, 19, 70, 133, 242, 19, 43, 28, 192, 107, 35, 65, 71, 35, 89, 47, 36, 81, 37, 0, 13, 67, 109, 22, 138,
+			83, 39, 51, 104, 17, 35, 47, 0, 12, 67, 86, 6, 74, 89, 35, 50, 19, 35, 47, 0, 12, 67, 83, 12, 128, 91, 39, 49, 36, 57,
+			36, 0, 14, 69, 78, 33, 179, 108, 160, 89, 40, 19, 37, 83, 47, 0, 20, 71, 76, 119, 142, 137, 19, 241, 204, 89, 108, 55, 101, 39,
+			51, 72, 36, 81, 37, 0, 10, 67, 71, 8, 0, 51, 39, 49, 50, 0, 14, 67, 43, 12, 128, 6, 47, 36, 49, 49, 36, 57, 36, 0,
+			10, 67, 40, 115, 138, 47, 108, 101, 47, 0, 17, 70, 40, 115, 79, 136, 252, 192, 47, 108, 107, 39, 72, 40, 72, 37, 0, 11, 67, 32,
+			115, 138, 6, 71, 108, 101, 47, 0, 0, 14, 67, 124, 216, 15, 65, 39, 107, 35, 50, 50, 35, 72, 0, 26, 73, 124, 114, 25, 60, 119,
+			151, 35, 54, 97, 65, 108, 71, 35, 19, 72, 39, 47, 47, 35, 71, 37, 19, 36, 0, 17, 70, 78, 210, 135, 124, 132, 64, 89, 36, 48,
+			47, 108, 65, 71, 51, 0, 12, 67, 50, 40, 15, 75, 35, 84, 35, 50, 72, 0, 22, 71, 33, 17, 207, 69, 72, 161, 68, 71, 35, 51,
+			108, 72, 35, 51, 91, 39, 107, 35, 51, 0, 0, 21, 72, 198, 33, 224, 40, 120, 7, 126, 32, 81, 40, 108, 50, 47, 108, 50, 108, 65,
+			39, 0, 13, 67, 197, 234, 242, 81, 35, 55, 55, 36, 57, 36, 0, 13, 67, 181, 234, 242, 48, 36, 55, 55, 36, 57, 36, 0, 20, 70,
+			181, 56, 15, 204, 252, 115, 48, 35, 89, 35, 50, 72, 37, 72, 36, 81, 37, 0, 18, 70, 112, 116, 71, 81, 252, 212, 104, 17, 108, 51,
+			108, 91, 65, 37, 91, 0, 14, 67, 101, 195, 242, 19, 39, 104, 17, 72, 36, 57, 36, 0, 14, 67, 43, 10, 242, 6, 47, 36, 49, 49,
+			36, 57, 36, 0, 19, 70, 33, 225, 224, 76, 130, 128, 71, 35, 55, 108, 50, 36, 89, 71, 35, 47, 0, 0, 22, 72, 196, 119, 162, 30,
+			8, 159, 41, 16, 81, 108, 55, 84, 108, 50, 39, 65, 36, 47, 51, 0, 14, 68, 183, 56, 160, 60, 48, 36, 57, 84, 35, 50, 72, 0,
+			15, 68, 181, 23, 32, 60, 48, 39, 51, 104, 17, 35, 50, 72, 0, 19, 70, 181, 22, 209, 28, 168, 145, 48, 36, 51, 83, 39, 51, 108,
+			47, 39, 51, 0, 14, 68, 127, 52, 160, 60, 65, 37, 88, 35, 50, 35, 72, 0, 12, 67, 125, 87, 141, 65, 39, 89, 55, 36, 107, 0,
+			18, 70, 63, 8, 145, 28, 168, 145, 72, 36, 49, 39, 51, 108, 47, 39, 51, 0, 13, 68, 33, 232, 160, 60, 71, 36, 55, 39, 50, 72,
+			0, 18, 70, 29, 251, 81, 28, 168, 145, 36, 65, 48, 36, 51, 108, 47, 40, 51, 0, 0, 18, 70, 192, 120, 19, 138, 8, 10, 49, 108,
+			50, 89, 39, 50, 36, 50, 47, 0, 18, 70, 132, 119, 138, 71, 52, 202, 107, 108, 55, 47, 36, 51, 37, 89, 47, 0, 20, 71, 48, 113,
+			219, 40, 115, 241, 204, 75, 108, 39, 83, 47, 108, 72, 36, 81, 37, 0, 11, 67, 44, 228, 0, 89, 35, 101, 36, 88, 0, 14, 69, 31,
+			4, 71, 206, 0, 39, 49, 51, 108, 57, 50, 0, 14, 69, 29, 60, 17, 206, 0, 36, 89, 49, 51, 37, 50, 0, 0, 19, 71, 192, 116,
+			115, 192, 114, 162, 68, 49, 108, 51, 37, 49, 108, 47, 39, 51, 0, 11, 67, 137, 236, 71, 84, 39, 55, 81, 108, 0, 14, 69, 127, 55,
+			226, 128, 240, 65, 37, 65, 40, 50, 72, 0, 12, 67, 82, 19, 199, 91, 39, 107, 35, 72, 108, 0, 16, 69, 77, 17, 243, 128, 240, 89,
+			39, 51, 108, 57, 35, 50, 72, 0, 15, 68, 41, 70, 84, 100, 47, 35, 91, 35, 19, 91, 39, 19, 0, 20, 71, 41, 23, 243, 128, 114,
+			162, 68, 47, 36, 51, 65, 37, 50, 108, 47, 39, 51, 0, 19, 71, 30, 3, 243, 192, 114, 162, 68, 35, 50, 72, 37, 49, 108, 47, 39,
+			51, 0, 0, 8, 66, 63, 48, 72, 36, 57, 0, 8, 66, 127, 48, 65, 37, 0, 76, 0, 24, 72, 194, 6, 207, 68, 116, 243, 138, 0,
+			49, 39, 50, 83, 36, 72, 51, 108, 89, 37, 57, 39, 50, 0, 14, 68, 192, 243, 143, 28, 49, 35, 72, 101, 39, 72, 108, 0, 12, 68,
+			127, 53, 48, 28, 65, 37, 91, 49, 108, 0, 17, 70, 127, 51, 199, 130, 3, 192, 65, 37, 72, 108, 50, 35, 50, 72, 0, 20, 70, 56,
+			241, 243, 128, 119, 240, 101, 39, 72, 108, 57, 108, 50, 108, 65, 35, 49, 0, 18, 70, 41, 17, 239, 63, 60, 0, 47, 36, 51, 108, 90,
+			36, 72, 37, 49, 0, 13, 68, 31, 12, 207, 28, 35, 49, 37, 72, 35, 50, 0, 17, 70, 31, 8, 160, 137, 252, 240, 36, 49, 39, 50,
+			39, 65, 37, 49, 0, 0, 10, 67, 180, 172, 0, 48, 39, 47, 49, 0, 12, 68, 180, 119, 138, 136, 48, 108, 55, 47, 39, 0, 19, 69,
+			124, 135, 154, 206, 0, 65, 39, 71, 35, 55, 55, 36, 104, 17, 37, 50, 0, 19, 70, 68, 120, 109, 122, 188, 128, 51, 108, 107, 48, 36,
+			55, 55, 36, 57, 36, 0, 16, 69, 61, 232, 20, 206, 0, 72, 36, 55, 50, 36, 91, 37, 50, 0, 14, 68, 50, 3, 241, 204, 75, 36,
+			50, 72, 36, 81, 37, 0, 15, 69, 35, 52, 202, 138, 0, 71, 37, 89, 39, 47, 40, 50, 0, 0, 11, 67, 197, 37, 0, 81, 35, 88,
+			36, 91, 0, 23, 73, 194, 33, 222, 29, 225, 223, 182, 36, 64, 49, 40, 108, 55, 108, 55, 108, 65, 48, 40, 51, 0, 11, 67, 193, 69,
+			0, 49, 36, 91, 36, 91, 0, 22, 70, 185, 168, 15, 69, 200, 15, 39, 104, 17, 39, 50, 72, 35, 51, 104, 17, 35, 50, 72, 0, 15,
+			69, 130, 34, 136, 139, 0, 50, 39, 12, 47, 71, 40, 49, 0, 13, 67, 112, 247, 199, 104, 17, 39, 72, 35, 65, 108, 0, 12, 67, 108,
+			136, 71, 83, 35, 71, 35, 107, 108, 0, 16, 69, 77, 24, 149, 60, 112, 89, 35, 51, 39, 89, 36, 72, 108, 0, 10, 67, 30, 19, 199,
+			36, 107, 72, 108, 0, 25, 73, 9, 226, 162, 29, 50, 145, 28, 168, 147, 108, 55, 47, 39, 36, 89, 47, 36, 51, 108, 47, 40, 89, 0,
+			0, 13, 67, 124, 246, 115, 65, 39, 72, 72, 35, 19, 37, 0, 11, 67, 73, 66, 179, 88, 36, 91, 47, 37, 0, 11, 67, 62, 23, 179,
+			72, 36, 107, 55, 37, 0, 16, 69, 55, 8, 159, 43, 48, 107, 39, 49, 40, 65, 35, 47, 37, 0, 10, 67, 40, 114, 34, 47, 108, 71,
+			39, 0, 11, 67, 32, 242, 34, 71, 35, 72, 71, 40, 0, 0, 13, 68, 193, 236, 211, 28, 49, 36, 55, 37, 89, 108, 0, 10, 67, 100,
+			243, 192, 35, 72, 35, 72, 0, 14, 68, 81, 177, 225, 28, 91, 35, 83, 108, 107, 35, 50, 0, 14, 68, 80, 136, 31, 28, 91, 35, 71,
+			50, 36, 65, 108, 0, 11, 67, 69, 39, 0, 51, 36, 88, 104, 17, 0, 14, 68, 41, 241, 223, 28, 47, 35, 65, 108, 65, 35, 50, 0,
+			8, 66, 41, 240, 47, 36, 65, 0, 13, 68, 35, 53, 91, 28, 71, 37, 89, 35, 83, 108, 0, 22, 71, 35, 28, 209, 136, 130, 32, 60,
+			71, 36, 81, 37, 51, 39, 71, 36, 71, 35, 50, 72, 0, 13, 68, 29, 229, 27, 28, 39, 91, 91, 35, 83, 108, 0, 18, 70, 29, 85,
+			222, 28, 209, 192, 36, 89, 47, 36, 55, 108, 107, 35, 50, 0, 13, 68, 29, 66, 161, 28, 36, 91, 47, 36, 107, 108, 0, 0, 11, 67,
+			204, 118, 202, 6, 57, 108, 83, 47, 0, 14, 68, 181, 19, 241, 204, 48, 35, 51, 72, 36, 81, 37, 0, 18, 70, 127, 60, 17, 137, 60,
+			45, 65, 37, 49, 51, 39, 89, 49, 39, 48, 0, 13, 67, 86, 3, 220, 89, 35, 50, 72, 39, 104, 17, 0, 12, 68, 84, 241, 243, 204,
+			89, 36, 72, 108, 37, 0, 10, 67, 83, 54, 202, 91, 37, 83, 47, 0, 16, 69, 77, 24, 20, 206, 0, 89, 35, 51, 50, 36, 91, 37,
+			50, 0, 13, 67, 70, 40, 28, 51, 39, 12, 50, 35, 104, 17, 0, 14, 68, 68, 129, 224, 204, 51, 35, 71, 71, 108, 50, 37, 0, 11,
+			67, 62, 39, 128, 72, 39, 84, 35, 55, 0, 12, 67, 35, 54, 202, 71, 37, 57, 39, 83, 47, 0, 12, 67, 30, 39, 128, 6, 35, 84,
+			84, 35, 55, 0, 16, 70, 29, 50, 135, 49, 232, 128, 36, 89, 47, 108, 75, 55, 40, 0, 0, 12, 67, 126, 243, 225, 65, 39, 90, 72,
+			36, 12, 0, 18, 69, 125, 66, 145, 192, 112, 65, 39, 91, 47, 35, 51, 35, 49, 35, 50, 0, 16, 69, 124, 199, 226, 100, 112, 65, 35,
+			75, 65, 40, 19, 35, 50, 0, 13, 67, 84, 134, 161, 89, 36, 71, 104, 17, 36, 12, 0, 18, 70, 77, 28, 222, 30, 12, 7, 89, 36,
+			51, 37, 55, 108, 50, 49, 108, 0, 13, 67, 62, 39, 192, 72, 39, 6, 84, 84, 39, 65, 0, 15, 69, 32, 241, 224, 132, 112, 71, 36,
+			72, 108, 50, 107, 108, 0, 14, 69, 29, 244, 115, 192, 112, 36, 65, 51, 37, 49, 108, 0, 14, 69, 9, 244, 115, 192, 112, 108, 65, 51,
+			37, 49, 108, 0, 14, 65, 52, 6, 107, 36, 57, 36, 4, 75, 37, 65, 37, 0, 0, 19, 70, 207, 11, 71, 70, 236, 115, 57, 36, 49,
+			48, 108, 51, 76, 36, 81, 37, 0, 10, 67, 192, 114, 30, 49, 108, 71, 55, 0, 18, 70, 124, 213, 98, 120, 114, 179, 65, 35, 107, 89,
+			40, 55, 108, 47, 37, 0, 13, 67, 124, 166, 88, 65, 39, 47, 47, 35, 36, 88, 0, 16, 69, 113, 118, 71, 43, 48, 104, 17, 35, 47,
+			35, 108, 47, 37, 0, 15, 68, 112, 129, 205, 40, 104, 17, 36, 71, 108, 107, 35, 47, 0, 14, 67, 105, 230, 158, 104, 17, 39, 55, 104,
+			17, 39, 55, 0, 9, 66, 105, 224, 104, 17, 39, 55, 0, 14, 68, 85, 17, 205, 40, 89, 36, 51, 108, 107, 35, 47, 0, 8, 66, 41,
+			224, 47, 36, 55, 0, 15, 68, 41, 23, 200, 128, 47, 36, 51, 39, 65, 71, 39, 50, 0, 13, 68, 8, 132, 91, 40, 108, 71, 51, 39,
+			83, 47, 0, 0, 14, 68, 197, 44, 207, 132, 81, 39, 88, 37, 72, 36, 12, 0, 13, 68, 185, 76, 207, 132, 76, 36, 91, 37, 72, 36,
+			0, 21, 71, 181, 24, 147, 41, 28, 240, 28, 48, 39, 51, 39, 89, 47, 39, 51, 37, 49, 108, 0, 14, 67, 125, 71, 217, 65, 39, 91,
+			35, 65, 65, 35, 19, 0, 20, 70, 125, 50, 156, 205, 241, 192, 65, 39, 89, 47, 35, 104, 17, 37, 65, 35, 50, 0, 15, 68, 125, 19,
+			235, 60, 65, 39, 51, 35, 72, 72, 35, 72, 0, 14, 67, 124, 71, 155, 65, 39, 6, 35, 55, 55, 36, 83, 0, 12, 67, 104, 243, 192,
+			104, 17, 39, 72, 35, 72, 0, 15, 68, 77, 231, 200, 132, 89, 39, 55, 39, 65, 71, 36, 12, 0, 18, 70, 42, 3, 209, 9, 49, 192,
+			47, 39, 50, 72, 35, 51, 108, 89, 108, 0, 12, 68, 32, 119, 200, 132, 71, 108, 65, 71, 36, 0, 11, 67, 30, 12, 95, 35, 50, 81,
+			39, 65, 0, 11, 67, 29, 19, 240, 39, 51, 72, 35, 49, 0, 18, 70, 28, 210, 145, 29, 241, 192, 36, 107, 47, 36, 51, 108, 65, 35,
+			50, 0, 16, 70, 8, 136, 160, 124, 120, 0, 108, 71, 40, 50, 65, 108, 50, 0, 0, 11, 67, 197, 44, 0, 81, 35, 88, 35, 49, 0,
+			10, 67, 195, 60, 0, 49, 36, 57, 49, 0, 13, 68, 194, 44, 10, 120, 49, 39, 49, 47, 36, 55, 0, 17, 70, 127, 60, 34, 122, 252,
+			192, 65, 37, 49, 39, 55, 39, 90, 37, 0, 14, 68, 126, 1, 211, 32, 65, 39, 50, 108, 89, 36, 71, 0, 15, 68, 125, 226, 161, 32,
+			65, 39, 55, 47, 35, 107, 36, 71, 0, 14, 68, 125, 81, 205, 32, 65, 39, 89, 108, 107, 36, 71, 0, 14, 68, 124, 209, 211, 32, 65,
+			39, 107, 108, 89, 36, 71, 0, 15, 67, 112, 246, 160, 104, 17, 35, 72, 36, 104, 17, 35, 50, 0, 13, 67, 109, 23, 32, 83, 39, 51,
+			104, 17, 39, 50, 0, 11, 67, 101, 234, 202, 36, 55, 55, 35, 47, 0, 15, 69, 83, 54, 115, 30, 0, 91, 37, 19, 35, 57, 108, 50,
+			0, 11, 67, 69, 40, 0, 51, 35, 88, 35, 50, 0, 12, 67, 61, 20, 202, 72, 39, 51, 39, 89, 47, 0, 14, 67, 41, 184, 32, 47,
+			35, 83, 35, 50, 50, 39, 50, 0, 11, 67, 34, 236, 224, 71, 36, 76, 37, 50, 0, 21, 70, 33, 120, 145, 193, 236, 192, 71, 36, 47,
+			39, 84, 51, 36, 49, 39, 55, 55, 37, 0, 0, 22, 72, 192, 116, 135, 33, 225, 224, 192, 112, 49, 108, 88, 108, 71, 36, 55, 108, 50,
+			49, 108, 0, 22, 72, 181, 24, 147, 41, 24, 179, 192, 112, 48, 39, 51, 39, 89, 47, 39, 51, 37, 49, 108, 0, 12, 67, 132, 195, 225,
+			107, 36, 75, 72, 35, 107, 0, 11, 67, 127, 55, 161, 65, 37, 55, 36, 12, 0, 12, 67, 80, 136, 97, 91, 39, 71, 107, 36, 12, 0,
+			14, 67, 68, 252, 225, 51, 35, 72, 72, 37, 57, 36, 12, 0, 12, 67, 48, 136, 97, 75, 36, 71, 107, 36, 12, 0, 15, 68, 33, 27,
+			224, 108, 71, 36, 51, 36, 90, 50, 36, 83, 0, 14, 69, 31, 4, 243, 62, 16, 39, 49, 89, 37, 72, 36, 0, 14, 69, 29, 230, 71,
+			62, 16, 39, 55, 108, 72, 72, 36, 0, 12, 67, 29, 183, 33, 35, 83, 104, 17, 35, 107, 0, 11, 67, 28, 226, 161, 35, 101, 47, 36,
+			12, 0, 10, 67, 11, 8, 33, 108, 49, 50, 36, 0, 0, 18, 70, 135, 51, 209, 137, 235, 243, 107, 37, 72, 51, 39, 55, 39, 90, 37,
+			0, 18, 69, 125, 50, 156, 33, 224, 65, 39, 89, 47, 35, 104, 17, 71, 36, 55, 0, 14, 67, 124, 131, 222, 65, 39, 71, 35, 72, 72,
+			36, 55, 0, 14, 68, 124, 129, 243, 128, 65, 39, 71, 108, 57, 36, 50, 0, 11, 67, 109, 60, 222, 83, 39, 89, 37, 55, 0, 14, 68,
+			77, 27, 97, 128, 89, 35, 51, 48, 35, 107, 50, 0, 18, 70, 41, 23, 226, 83, 55, 243, 47, 36, 51, 65, 39, 91, 37, 65, 37, 0,
+			19, 70, 35, 55, 217, 69, 178, 128, 71, 37, 65, 35, 19, 51, 36, 83, 35, 47, 0, 21, 70, 33, 232, 15, 133, 242, 128, 71, 39, 55,
+			35, 50, 72, 107, 36, 65, 65, 35, 47, 0, 24, 73, 30, 6, 226, 69, 241, 211, 206, 40, 0, 35, 50, 83, 39, 51, 65, 108, 89, 37,
+			57, 39, 50, 0, 10, 67, 11, 11, 64, 108, 49, 36, 48, 0, 25, 7, 216, 168, 226, 128, 140, 217, 133, 71, 35, 12, 19, 72, 10, 35,
+			88, 9, 65, 37, 55, 108, 72, 0, 46, 0, 11, 67, 197, 236, 223, 81, 36, 55, 37, 65, 0, 14, 68, 194, 1, 243, 132, 49, 36, 50,
+			108, 57, 36, 12, 0, 19, 70, 182, 3, 20, 128, 136, 64, 48, 35, 50, 75, 91, 35, 50, 71, 36, 12, 0, 14, 68, 133, 17, 211, 60,
+			107, 35, 51, 108, 89, 35, 72, 0, 10, 67, 127, 4, 192, 65, 35, 49, 89, 0, 11, 67, 126, 35, 223, 65, 39, 72, 36, 65, 0, 16,
+			68, 126, 5, 220, 132, 65, 35, 50, 47, 35, 104, 17, 36, 12, 0, 14, 67, 125, 83, 217, 65, 39, 89, 35, 72, 72, 36, 19, 0, 14,
+			67, 124, 168, 95, 65, 39, 47, 47, 35, 107, 35, 65, 0, 14, 68, 63, 7, 138, 132, 72, 36, 49, 39, 55, 47, 36, 0, 13, 68, 61,
+			17, 243, 132, 72, 36, 51, 108, 57, 36, 0, 14, 68, 61, 17, 223, 60, 72, 35, 51, 108, 65, 35, 72, 0, 18, 70, 56, 120, 34, 28,
+			248, 64, 101, 108, 50, 36, 84, 108, 72, 36, 12, 0, 18, 70, 43, 12, 199, 56, 168, 64, 47, 35, 49, 57, 108, 101, 47, 36, 12, 0,
+			15, 67, 42, 40, 95, 47, 35, 6, 84, 35, 107, 107, 39, 65, 0, 15, 67, 41, 195, 223, 47, 35, 104, 17, 35, 72, 72, 39, 65, 0,
+			16, 68, 41, 180, 92, 132, 47, 35, 83, 51, 35, 104, 17, 36, 12, 0, 19, 70, 33, 227, 209, 187, 56, 0, 71, 71, 36, 55, 72, 36,
+			51, 76, 37, 50, 0, 14, 68, 32, 252, 225, 132, 71, 35, 72, 37, 107, 36, 12, 0, 15, 68, 32, 244, 92, 132, 71, 35, 72, 51, 35,
+			104, 17, 36, 0, 19, 70, 32, 114, 140, 68, 136, 64, 71, 108, 47, 35, 75, 51, 39, 71, 36, 12, 0, 19, 70, 29, 231, 7, 100, 248,
+			64, 35, 55, 104, 17, 108, 19, 36, 72, 36, 12, 0, 14, 68, 29, 60, 30, 132, 36, 89, 49, 36, 55, 36, 12, 0, 13, 68, 29, 49,
+			243, 132, 19, 36, 89, 108, 19, 36, 0, 13, 68, 29, 17, 243, 132, 19, 36, 51, 108, 19, 36, 0, 0, 15, 69, 207, 4, 71, 76, 160,
+			57, 36, 49, 51, 108, 89, 47, 0, 20, 71, 133, 241, 202, 137, 232, 175, 204, 107, 36, 65, 108, 47, 39, 55, 39, 90, 37, 0, 13, 68,
+			124, 129, 243, 120, 65, 39, 71, 108, 57, 55, 0, 16, 68, 81, 193, 220, 120, 91, 35, 104, 17, 108, 104, 17, 39, 55, 0, 15, 69, 77,
+			20, 71, 76, 160, 89, 35, 51, 51, 108, 89, 47, 0, 15, 69, 71, 49, 205, 206, 0, 51, 35, 57, 108, 107, 37, 50, 0, 24, 73, 68,
+			115, 243, 136, 124, 210, 136, 168, 173, 51, 108, 72, 37, 57, 39, 37, 88, 39, 47, 39, 48, 0, 19, 68, 52, 241, 220, 120, 107, 4, 35,
+			72, 72, 36, 10, 35, 104, 17, 35, 55, 0, 14, 68, 41, 241, 243, 120, 47, 35, 65, 108, 57, 39, 55, 0, 12, 68, 29, 50, 179, 120,
+			36, 89, 47, 37, 55, 0, 0, 18, 70, 186, 17, 209, 29, 50, 33, 76, 108, 107, 108, 51, 35, 89, 71, 36, 0, 15, 69, 183, 53, 7,
+			124, 240, 48, 37, 91, 108, 65, 35, 72, 0, 14, 68, 181, 19, 76, 124, 48, 39, 51, 107, 35, 75, 65, 0, 17, 69, 125, 113, 222, 34,
+			16, 65, 39, 47, 108, 55, 36, 71, 36, 12, 0, 17, 68, 124, 164, 96, 124, 65, 39, 47, 36, 51, 35, 50, 50, 36, 65, 0, 17, 69,
+			124, 129, 207, 122, 16, 65, 39, 71, 108, 72, 36, 55, 36, 12, 0, 16, 69, 115, 55, 162, 122, 16, 104, 17, 36, 57, 55, 40, 55, 36,
+			0, 14, 68, 89, 241, 243, 124, 88, 35, 65, 108, 57, 36, 65, 0, 15, 68, 81, 69, 79, 124, 91, 36, 91, 89, 35, 72, 39, 65, 0,
+			11, 67, 74, 5, 0, 88, 35, 50, 35, 91, 0, 12, 67, 70, 37, 0, 6, 51, 35, 84, 36, 91, 0, 19, 70, 62, 12, 199, 63, 51,
+			225, 72, 39, 50, 57, 108, 72, 37, 72, 36, 12, 0, 11, 67, 48, 213, 0, 75, 35, 107, 36, 91, 0, 16, 68, 41, 202, 207, 124, 47,
+			35, 104, 17, 35, 72, 72, 39, 65, 0, 15, 69, 35, 50, 162, 42, 16, 71, 36, 57, 47, 40, 47, 36, 0, 0, 12, 67, 207, 8, 98,
+			57, 36, 49, 107, 39, 12, 0, 8, 66, 131, 48, 50, 36, 57, 0, 14, 67, 42, 35, 84, 47, 35, 84, 35, 107, 107, 39, 91, 0, 24,
+			71, 32, 119, 30, 29, 193, 202, 112, 71, 108, 104, 17, 108, 55, 108, 104, 17, 108, 47, 39, 104, 17, 0, 23, 72, 29, 60, 51, 74, 38,
+			209, 131, 48, 19, 36, 89, 49, 37, 88, 39, 83, 36, 51, 50, 37, 0, 17, 70, 9, 21, 51, 43, 2, 128, 108, 51, 91, 37, 47, 36,
+			49, 47, 0, 9, 65, 180, 19, 6, 48, 36, 12, 0, 0, 13, 68, 192, 120, 48, 76, 49, 108, 50, 36, 49, 89, 0, 11, 67, 190, 44,
+			17, 90, 39, 49, 36, 51, 0, 12, 67, 133, 24, 81, 107, 36, 51, 107, 36, 51, 0, 15, 69, 130, 37, 51, 61, 240, 50, 39, 91, 37,
+			72, 35, 65, 0, 12, 67, 126, 12, 17, 65, 39, 50, 49, 36, 51, 0, 12, 67, 125, 148, 209, 65, 39, 19, 89, 36, 51, 0, 14, 67,
+			124, 66, 209, 65, 39, 19, 35, 89, 89, 36, 51, 0, 19, 70, 109, 24, 12, 125, 76, 0, 83, 35, 51, 35, 50, 75, 65, 36, 91, 49,
+			0, 11, 67, 82, 40, 81, 91, 39, 107, 35, 51, 0, 11, 67, 71, 51, 209, 51, 37, 72, 36, 51, 0, 18, 70, 33, 35, 222, 30, 8,
+			64, 71, 39, 88, 72, 36, 55, 108, 50, 36, 0, 20, 71, 33, 24, 146, 204, 118, 202, 132, 71, 39, 51, 40, 88, 57, 108, 83, 47, 36,
+			0, 17, 70, 32, 119, 160, 76, 136, 64, 71, 36, 50, 50, 36, 89, 71, 36, 0, 16, 70, 8, 164, 98, 183, 56, 0, 108, 47, 51, 39,
+			48, 37, 50, 0, 0, 10, 67, 131, 8, 128, 50, 36, 49, 40, 0, 15, 68, 127, 20, 240, 80, 65, 35, 81, 35, 89, 49, 39, 91, 0,
+			14, 68, 124, 194, 136, 204, 65, 39, 75, 47, 35, 71, 108, 0, 14, 69, 79, 52, 98, 30, 0, 89, 37, 51, 84, 108, 50, 0, 23, 72,
+			68, 115, 243, 137, 235, 243, 76, 160, 51, 108, 72, 37, 57, 39, 55, 39, 90, 37, 89, 47, 0, 20, 70, 34, 1, 200, 68, 124, 224, 71,
+			35, 50, 108, 10, 71, 35, 51, 10, 37, 50, 0, 0, 15, 69, 194, 36, 74, 193, 48, 49, 39, 51, 47, 36, 49, 89, 0, 14, 68, 193,
+			53, 25, 68, 49, 39, 89, 91, 36, 19, 51, 0, 15, 68, 113, 24, 155, 68, 104, 17, 36, 51, 39, 83, 36, 51, 0, 18, 70, 82, 1,
+			211, 30, 3, 225, 91, 36, 50, 108, 89, 108, 50, 72, 36, 0, 14, 68, 77, 17, 211, 68, 89, 35, 51, 108, 89, 35, 51, 0, 24, 72,
+			61, 18, 32, 63, 5, 51, 62, 16, 72, 35, 51, 71, 35, 50, 72, 49, 36, 91, 37, 72, 36, 0, 18, 70, 53, 232, 135, 29, 19, 225,
+			107, 35, 55, 84, 108, 35, 51, 72, 36, 0, 15, 67, 42, 36, 215, 47, 35, 84, 35, 89, 89, 39, 47, 36, 0, 13, 68, 32, 118, 240,
+			68, 71, 108, 83, 36, 49, 51, 0, 17, 70, 11, 2, 179, 139, 50, 161, 108, 49, 47, 37, 84, 37, 47, 36, 0, 0, 11, 67, 204, 220,
+			243, 57, 35, 107, 57, 108, 0, 20, 71, 134, 39, 226, 76, 123, 115, 128, 107, 39, 65, 39, 89, 108, 48, 57, 36, 50, 0, 18, 70, 127,
+			60, 17, 79, 11, 64, 65, 37, 49, 51, 39, 89, 49, 39, 48, 0, 14, 67, 125, 200, 51, 65, 39, 104, 17, 35, 50, 50, 37, 0, 13,
+			67, 113, 23, 51, 104, 17, 36, 51, 104, 17, 37, 0, 11, 67, 84, 210, 128, 89, 36, 107, 35, 47, 0, 14, 69, 83, 60, 7, 198, 32,
+			91, 37, 49, 108, 81, 39, 0, 12, 67, 61, 22, 212, 72, 36, 51, 35, 83, 91, 0, 10, 67, 53, 182, 0, 107, 36, 83, 88, 0, 14,
+			69, 9, 231, 199, 43, 48, 108, 55, 65, 108, 47, 37, 0, 0, 12, 67, 125, 83, 209, 65, 35, 89, 72, 35, 51, 0, 15, 68, 125, 20,
+			207, 76, 65, 36, 51, 89, 36, 72, 36, 89, 0, 22, 71, 122, 36, 135, 121, 246, 79, 132, 55, 39, 12, 88, 39, 55, 65, 36, 19, 72,
+			36, 12, 0, 11, 67, 122, 35, 209, 55, 39, 72, 36, 51, 0, 21, 71, 93, 225, 224, 80, 120, 15, 132, 47, 35, 55, 108, 50, 36, 91,
+			108, 50, 72, 36, 0, 13, 68, 71, 55, 176, 76, 51, 37, 55, 35, 49, 89, 0, 17, 69, 57, 23, 212, 133, 16, 101, 39, 51, 35, 65,
+			91, 35, 107, 51, 0, 20, 71, 48, 252, 207, 29, 230, 97, 60, 75, 35, 72, 37, 72, 39, 55, 35, 107, 72, 0, 18, 70, 41, 28, 237,
+			123, 4, 192, 47, 37, 51, 37, 48, 55, 36, 49, 89, 0, 19, 70, 35, 55, 179, 29, 19, 223, 6, 71, 37, 55, 57, 108, 51, 72, 39,
+			65, 0, 20, 71, 33, 17, 224, 60, 115, 138, 132, 71, 35, 51, 35, 50, 72, 108, 101, 47, 36, 0, 10, 67, 11, 3, 192, 108, 49, 36,
+			72, 0, 12, 68, 10, 241, 240, 76, 108, 90, 108, 49, 89, 0, 0, 11, 67, 198, 40, 0, 81, 35, 84, 35, 50, 0, 12, 67, 194, 6,
+			202, 49, 36, 50, 36, 83, 47, 0, 16, 69, 193, 225, 226, 78, 0, 49, 36, 55, 108, 84, 89, 35, 50, 0, 13, 67, 129, 68, 202, 50,
+			36, 6, 91, 35, 89, 47, 0, 21, 70, 125, 195, 223, 28, 172, 192, 65, 39, 104, 17, 35, 72, 72, 35, 65, 108, 47, 37, 0, 17, 68,
+			124, 168, 141, 80, 65, 39, 47, 36, 84, 35, 107, 107, 36, 91, 0, 11, 67, 101, 87, 202, 36, 89, 65, 35, 47, 0, 12, 67, 82, 44,
+			10, 91, 39, 12, 49, 35, 47, 0, 11, 67, 74, 12, 0, 88, 35, 50, 35, 49, 0, 19, 70, 68, 115, 243, 137, 60, 45, 51, 108, 72,
+			37, 57, 39, 89, 49, 39, 48, 0, 12, 67, 53, 71, 202, 107, 36, 91, 65, 35, 47, 0, 17, 69, 50, 2, 158, 126, 0, 75, 36, 50,
+			47, 36, 55, 65, 35, 50, 0, 10, 67, 40, 118, 202, 47, 108, 83, 47, 0, 12, 68, 32, 119, 200, 204, 71, 108, 65, 71, 37, 0, 10,
+			67, 32, 118, 202, 71, 108, 83, 47, 0, 13, 68, 28, 168, 176, 80, 40, 47, 40, 49, 36, 91, 0, 11, 68, 9, 17, 243, 204, 108, 51,
+			108, 37, 0, 13, 68, 9, 17, 223, 80, 108, 51, 108, 65, 36, 91, 0, 0, 17, 69, 193, 251, 94, 193, 48, 49, 39, 65, 48, 36, 55,
+			36, 49, 89, 0, 18, 70, 187, 52, 136, 71, 20, 64, 76, 37, 88, 71, 36, 51, 81, 36, 51, 0, 14, 68, 181, 28, 207, 68, 48, 35,
+			51, 37, 72, 35, 51, 0, 20, 70, 181, 20, 202, 83, 20, 64, 48, 35, 51, 35, 89, 47, 36, 91, 81, 35, 51, 0, 19, 70, 180, 244,
+			84, 138, 20, 64, 48, 36, 72, 35, 51, 91, 39, 107, 35, 51, 0, 15, 69, 128, 124, 222, 193, 48, 50, 108, 57, 55, 36, 49, 89, 0,
+			17, 70, 123, 50, 162, 77, 180, 64, 55, 37, 47, 39, 89, 83, 36, 51, 0, 15, 69, 62, 43, 94, 193, 48, 72, 40, 48, 55, 36, 49,
+			89, 0, 24, 72, 52, 117, 145, 61, 21, 77, 130, 16, 107, 108, 88, 36, 51, 72, 35, 51, 89, 35, 107, 50, 36, 0, 15, 68, 41, 88,
+			171, 68, 47, 35, 89, 35, 84, 84, 39, 51, 0, 18, 70, 41, 23, 226, 77, 180, 64, 47, 36, 51, 65, 39, 89, 83, 36, 51, 0, 15,
+			68, 33, 20, 177, 68, 71, 35, 51, 88, 36, 81, 35, 51, 0, 17, 70, 28, 167, 226, 77, 180, 64, 35, 47, 65, 39, 89, 83, 36, 51,
+			0, 0, 23, 72, 197, 232, 176, 128, 117, 45, 205, 224, 81, 36, 55, 39, 49, 36, 50, 36, 91, 48, 37, 55, 0, 13, 68, 197, 28, 211,
+			40, 81, 36, 51, 37, 89, 47, 0, 15, 68, 181, 20, 91, 40, 48, 39, 51, 10, 51, 35, 83, 47, 0, 14, 68, 136, 225, 223, 40, 84,
+			36, 101, 108, 65, 35, 47, 0, 14, 68, 136, 193, 225, 40, 84, 36, 75, 108, 107, 35, 47, 0, 12, 67, 126, 44, 8, 65, 39, 12, 49,
+			36, 71, 0, 12, 67, 126, 38, 88, 65, 39, 12, 19, 36, 88, 0, 16, 69, 125, 50, 139, 131, 48, 65, 39, 89, 47, 35, 89, 50, 108,
+			0, 14, 68, 88, 225, 223, 40, 88, 36, 101, 108, 65, 35, 47, 0, 13, 67, 81, 151, 178, 91, 39, 19, 55, 36, 57, 36, 0, 14, 68,
+			49, 17, 205, 40, 75, 36, 51, 108, 107, 35, 47, 0, 15, 69, 31, 56, 175, 131, 48, 37, 57, 39, 90, 36, 50, 37, 0, 0, 18, 70,
+			135, 51, 209, 137, 54, 209, 107, 37, 72, 51, 39, 89, 83, 36, 51, 0, 17, 68, 124, 164, 79, 60, 65, 39, 47, 36, 51, 35, 72, 72,
+			36, 72, 0, 18, 69, 77, 18, 135, 77, 16, 10, 89, 35, 51, 10, 47, 108, 89, 35, 51, 0, 11, 67, 52, 195, 0, 107, 39, 75, 35,
+			75, 0, 18, 70, 8, 228, 71, 120, 119, 209, 108, 101, 35, 51, 39, 55, 35, 65, 51, 0, 0, 14, 69, 192, 116, 79, 30, 0, 49, 108,
+			51, 72, 108, 50, 0, 11, 67, 181, 188, 0, 48, 39, 83, 35, 49, 0, 12, 67, 181, 20, 202, 48, 35, 51, 35, 89, 47, 0, 19, 71,
+			127, 50, 147, 136, 140, 212, 204, 65, 37, 47, 89, 39, 71, 37, 91, 37, 0, 14, 68, 125, 225, 205, 96, 65, 39, 55, 108, 107, 36, 88,
+			0, 19, 70, 124, 163, 226, 122, 252, 192, 65, 36, 47, 39, 72, 39, 55, 39, 90, 37, 0, 16, 69, 112, 244, 79, 30, 0, 104, 17, 35,
+			72, 51, 72, 108, 50, 0, 17, 69, 109, 151, 135, 42, 0, 83, 35, 19, 35, 55, 108, 47, 39, 50, 0, 16, 69, 80, 120, 83, 138, 0,
+			91, 108, 107, 89, 35, 84, 35, 50, 0, 13, 67, 49, 16, 202, 75, 39, 51, 19, 6, 35, 47, 0, 11, 67, 45, 248, 0, 89, 35, 65,
+			35, 50, 0, 18, 70, 43, 8, 34, 122, 252, 192, 47, 36, 49, 50, 39, 55, 39, 90, 37, 0, 21, 71, 41, 23, 243, 130, 39, 175, 204,
+			47, 36, 51, 65, 37, 50, 39, 55, 39, 90, 37, 0, 15, 69, 32, 116, 177, 108, 160, 71, 108, 88, 81, 39, 83, 47, 0, 18, 70, 29,
+			60, 222, 137, 60, 45, 35, 89, 37, 55, 39, 89, 49, 39, 48, 0, 0, 15, 68, 125, 18, 155, 100, 65, 39, 51, 47, 35, 83, 35, 19,
+			0, 18, 70, 63, 49, 209, 35, 4, 64, 72, 37, 57, 108, 51, 71, 35, 49, 51, 0, 20, 71, 58, 33, 225, 69, 72, 161, 68, 101, 108,
+			107, 35, 51, 91, 39, 107, 35, 51, 0, 17, 69, 49, 24, 136, 52, 176, 75, 35, 51, 51, 39, 71, 35, 107, 89, 0, 22, 71, 29, 50,
+			145, 28, 164, 219, 68, 36, 89, 47, 36, 51, 108, 47, 36, 89, 83, 36, 51, 0, 0, 17, 70, 197, 17, 219, 205, 50, 128, 81, 36, 51,
+			108, 83, 37, 89, 47, 0, 19, 70, 134, 33, 222, 32, 119, 51, 107, 39, 84, 35, 55, 71, 108, 104, 17, 37, 0, 13, 67, 126, 35, 200,
+			65, 39, 35, 19, 72, 35, 71, 0, 17, 70, 34, 35, 199, 181, 50, 128, 71, 40, 72, 108, 48, 36, 89, 47, 0, 18, 70, 9, 243, 226,
+			69, 178, 128, 108, 65, 35, 72, 39, 51, 35, 83, 47, 0, 0, 14, 68, 183, 49, 223, 60, 48, 35, 57, 108, 65, 35, 72, 0, 14, 68,
+			33, 49, 223, 60, 71, 35, 89, 108, 65, 35, 72, 0, 0, 9, 67, 134, 44, 192, 107, 39, 57, 0, 15, 69, 127, 49, 207, 206, 0, 65,
+			35, 57, 108, 72, 37, 50, 0, 16, 68, 81, 146, 15, 200, 91, 39, 19, 71, 35, 72, 36, 57, 36, 0, 11, 67, 73, 28, 0, 88, 35,
+			51, 35, 49, 0, 15, 68, 41, 243, 31, 48, 47, 35, 65, 35, 75, 65, 39, 75, 0, 10, 67, 32, 200, 128, 71, 36, 75, 40, 0, 0,
+			13, 67, 105, 82, 7, 104, 17, 35, 89, 71, 35, 50, 0, 10, 67, 60, 133, 0, 72, 36, 71, 91, 0, 0, 10, 67, 71, 50, 0, 51,
+			36, 57, 71, 0, 16, 70, 31, 56, 17, 137, 50, 128, 6, 37, 50, 51, 40, 89, 47, 0, 0, 14, 68, 194, 20, 72, 28, 49, 35, 107,
+			51, 39, 71, 108, 0, 15, 68, 61, 182, 74, 28, 72, 35, 83, 19, 35, 47, 35, 50, 0, 10, 67, 34, 209, 192, 71, 36, 48, 108, 0,
+			17, 70, 34, 33, 222, 53, 56, 0, 71, 39, 55, 107, 35, 89, 35, 50, 0, 14, 68, 29, 194, 143, 28, 36, 104, 17, 47, 36, 72, 108,
+			0, 13, 68, 28, 130, 143, 28, 36, 71, 47, 36, 72, 108, 0, 0, 9, 66, 129, 192, 50, 36, 104, 17, 0, 11, 67, 121, 168, 128, 55,
+			35, 104, 17, 84, 0, 11, 67, 62, 40, 128, 72, 36, 84, 39, 12, 0, 9, 66, 61, 192, 72, 36, 104, 17, 0, 0, 12, 67, 126, 8,
+			71, 6, 65, 36, 50, 107, 108, 0, 21, 69, 125, 195, 223, 40, 112, 65, 39, 104, 17, 35, 72, 72, 35, 65, 35, 47, 35, 50, 0, 16,
+			69, 32, 119, 148, 43, 0, 71, 108, 55, 36, 91, 47, 35, 49, 0, 0, 11, 67, 181, 226, 128, 48, 35, 55, 35, 47, 0, 14, 69, 130,
+			37, 51, 63, 48, 50, 40, 91, 37, 72, 37, 0, 19, 70, 129, 50, 153, 123, 55, 0, 50, 35, 89, 47, 35, 19, 55, 37, 104, 17, 0,
+			10, 67, 128, 114, 162, 50, 108, 47, 39, 0, 12, 67, 125, 226, 128, 65, 36, 55, 55, 35, 47, 0, 16, 69, 125, 161, 224, 122, 32, 65,
+			39, 104, 17, 108, 50, 55, 40, 0, 10, 67, 125, 66, 128, 65, 39, 91, 47, 0, 15, 67, 93, 23, 51, 47, 35, 51, 35, 104, 17, 104,
+			17, 37, 0, 11, 67, 77, 183, 179, 89, 39, 83, 55, 108, 0, 16, 69, 73, 19, 224, 34, 32, 88, 35, 51, 72, 35, 50, 71, 40, 0,
+			15, 69, 57, 23, 199, 122, 32, 101, 39, 51, 65, 108, 55, 40, 0, 13, 67, 43, 3, 243, 47, 35, 49, 35, 72, 72, 37, 0, 19, 70,
+			42, 40, 7, 123, 50, 178, 47, 39, 50, 108, 55, 37, 47, 36, 57, 36, 0, 14, 69, 34, 38, 199, 122, 32, 71, 40, 83, 108, 55, 39,
+			0, 15, 69, 32, 229, 51, 63, 48, 71, 35, 101, 91, 37, 72, 37, 0, 25, 73, 29, 251, 81, 79, 56, 160, 205, 50, 128, 35, 65, 48,
+			36, 51, 89, 37, 57, 39, 50, 37, 89, 47, 0, 17, 70, 10, 3, 226, 79, 11, 64, 108, 50, 72, 39, 89, 49, 39, 48, 0, 11, 67,
+			8, 131, 34, 108, 71, 75, 39, 12, 0, 8, 65, 56, 6, 101, 36, 12, 0, 0, 14, 68, 193, 18, 30, 28, 49, 35, 51, 71, 35, 55,
+			108, 0, 14, 68, 126, 2, 161, 28, 65, 39, 50, 47, 35, 107, 108, 0, 15, 68, 125, 194, 143, 28, 65, 39, 104, 17, 47, 35, 72, 108,
+			0, 16, 68, 125, 119, 156, 28, 65, 39, 47, 55, 35, 104, 17, 35, 50, 0, 14, 68, 124, 130, 143, 28, 65, 39, 71, 47, 35, 72, 108,
+			0, 9, 66, 113, 240, 104, 17, 39, 65, 0, 16, 68, 105, 183, 138, 28, 104, 17, 36, 83, 55, 35, 47, 35, 50, 0, 15, 68, 104, 119,
+			136, 28, 104, 17, 108, 55, 36, 71, 35, 50, 0, 12, 67, 84, 136, 64, 89, 39, 71, 71, 36, 12, 0, 11, 67, 79, 56, 64, 89, 37,
+			57, 35, 107, 0, 11, 67, 71, 56, 64, 51, 37, 57, 36, 12, 0, 11, 67, 63, 56, 64, 72, 37, 57, 36, 12, 0, 12, 67, 60, 136,
+			64, 72, 35, 71, 71, 36, 12, 0, 10, 67, 55, 56, 64, 107, 35, 57, 36, 0, 13, 68, 33, 225, 243, 28, 71, 35, 55, 108, 57, 108,
+			0, 17, 70, 32, 115, 223, 50, 40, 0, 71, 108, 72, 36, 65, 75, 40, 50, 0, 17, 70, 30, 252, 207, 132, 124, 0, 36, 90, 37, 72,
+			36, 107, 108, 49, 0, 13, 68, 29, 230, 200, 28, 35, 55, 36, 83, 71, 108, 0, 14, 68, 29, 226, 156, 28, 36, 55, 47, 36, 104, 17,
+			108, 0, 14, 68, 29, 200, 179, 28, 35, 104, 17, 84, 37, 57, 108, 0, 16, 70, 29, 59, 71, 68, 161, 192, 36, 89, 48, 108, 51, 47,
+			108, 0, 0, 11, 67, 126, 215, 128, 65, 39, 48, 39, 55, 0, 15, 67, 125, 151, 156, 65, 39, 19, 35, 55, 55, 35, 104, 17, 0, 15,
+			67, 125, 114, 28, 65, 39, 47, 35, 71, 71, 35, 104, 17, 0, 13, 68, 125, 76, 8, 136, 65, 39, 91, 49, 71, 40, 0, 16, 68, 124,
+			172, 15, 204, 65, 39, 47, 36, 49, 35, 72, 72, 37, 0, 12, 68, 80, 116, 202, 204, 91, 108, 89, 47, 37, 0, 16, 70, 78, 43, 81,
+			30, 8, 128, 89, 39, 48, 51, 108, 50, 39, 0, 13, 67, 77, 23, 10, 89, 36, 51, 104, 17, 35, 47, 0, 12, 67, 76, 199, 128, 89,
+			36, 75, 36, 55, 55, 0, 14, 68, 74, 212, 74, 204, 88, 36, 48, 36, 51, 47, 37, 0, 9, 67, 70, 39, 128, 51, 39, 55, 0, 11,
+			67, 68, 199, 128, 51, 35, 75, 39, 55, 0, 13, 68, 68, 115, 74, 204, 51, 108, 107, 35, 47, 37, 0, 16, 69, 61, 19, 138, 30, 0,
+			72, 36, 51, 35, 101, 47, 108, 50, 0, 11, 67, 57, 231, 128, 101, 36, 55, 35, 55, 0, 14, 68, 56, 132, 113, 204, 101, 39, 71, 51,
+			36, 81, 37, 0, 10, 67, 54, 39, 128, 107, 39, 12, 55, 0, 12, 68, 32, 119, 200, 136, 71, 108, 65, 71, 40, 0, 26, 73, 29, 236,
+			10, 69, 28, 211, 204, 172, 128, 36, 55, 36, 49, 47, 36, 51, 37, 89, 37, 47, 36, 57, 36, 0, 21, 70, 29, 50, 145, 33, 60, 45,
+			36, 89, 47, 36, 51, 39, 71, 39, 89, 49, 39, 48, 0, 10, 67, 28, 199, 128, 35, 75, 35, 55, 0, 0, 16, 69, 125, 50, 139, 128,
+			112, 65, 39, 89, 47, 35, 89, 50, 108, 0, 10, 67, 120, 231, 192, 55, 39, 101, 65, 0, 12, 67, 86, 39, 192, 89, 36, 84, 84, 39,
+			65, 0, 13, 67, 78, 39, 192, 6, 89, 36, 84, 84, 39, 65, 0, 11, 67, 70, 39, 192, 51, 35, 84, 35, 65, 0, 14, 67, 53, 197,
+			0, 107, 35, 104, 17, 104, 17, 35, 91, 0, 18, 69, 28, 166, 199, 112, 112, 36, 47, 47, 36, 83, 108, 104, 17, 35, 50, 0, 0, 15,
+			69, 193, 251, 71, 131, 48, 49, 39, 65, 48, 108, 50, 37, 0, 15, 69, 193, 19, 217, 123, 48, 49, 39, 51, 72, 35, 55, 37, 0, 12,
+			67, 185, 242, 30, 76, 35, 65, 71, 35, 55, 0, 15, 68, 129, 50, 51, 40, 50, 36, 89, 71, 37, 57, 35, 47, 0, 20, 68, 124, 163,
+			92, 112, 65, 39, 47, 36, 107, 35, 104, 17, 104, 17, 36, 104, 17, 0, 9, 66, 113, 224, 104, 17, 39, 55, 0, 16, 69, 85, 180, 89,
+			123, 48, 89, 35, 83, 35, 51, 35, 55, 37, 0, 8, 66, 61, 224, 72, 36, 55, 0, 8, 66, 57, 224, 101, 39, 55, 0, 14, 68, 50,
+			1, 243, 40, 75, 36, 50, 108, 57, 35, 47, 0, 15, 69, 42, 35, 209, 42, 32, 47, 40, 72, 35, 51, 47, 40, 0, 11, 67, 40, 226,
+			128, 47, 6, 35, 101, 47, 0, 0, 9, 66, 133, 176, 6, 107, 36, 83, 0, 16, 70, 130, 44, 30, 206, 40, 0, 50, 40, 49, 55, 36,
+			39, 50, 0, 14, 68, 126, 33, 204, 132, 65, 39, 84, 108, 75, 36, 107, 0, 8, 66, 125, 176, 65, 39, 83, 0, 11, 67, 115, 56, 64,
+			104, 17, 37, 57, 36, 0, 12, 67, 107, 56, 64, 104, 17, 37, 57, 36, 12, 0, 12, 67, 81, 236, 240, 91, 36, 55, 55, 37, 49, 0,
+			10, 67, 80, 136, 64, 91, 36, 71, 107, 0, 10, 67, 74, 35, 0, 88, 39, 12, 75, 0, 10, 67, 70, 248, 64, 51, 36, 90, 36, 0,
+			11, 67, 48, 136, 64, 75, 39, 71, 71, 36, 0, 11, 67, 40, 136, 64, 47, 35, 71, 35, 107, 0, 19, 70, 33, 24, 15, 196, 120, 0,
+			71, 35, 51, 35, 50, 72, 36, 81, 108, 50, 0, 10, 67, 30, 248, 64, 36, 90, 36, 12, 0, 10, 67, 11, 56, 64, 108, 57, 36, 12,
+			0, 0, 16, 70, 198, 36, 112, 30, 12, 192, 81, 40, 51, 49, 108, 50, 37, 0, 11, 67, 194, 215, 128, 49, 35, 48, 35, 55, 0, 12,
+			67, 186, 12, 224, 6, 76, 36, 50, 37, 50, 0, 11, 67, 128, 115, 160, 50, 108, 101, 39, 50, 0, 15, 68, 125, 17, 220, 32, 65, 39,
+			51, 108, 104, 17, 36, 71, 0, 12, 67, 124, 231, 128, 65, 39, 101, 36, 55, 55, 0, 11, 67, 114, 39, 128, 104, 17, 39, 12, 55, 0,
+			13, 67, 112, 114, 156, 104, 17, 108, 47, 39, 104, 17, 0, 12, 67, 73, 243, 138, 88, 39, 65, 39, 101, 47, 0, 8, 66, 61, 32, 72,
+			36, 88, 0, 18, 70, 57, 52, 98, 30, 12, 192, 101, 39, 89, 51, 35, 84, 108, 50, 37, 0, 11, 67, 56, 199, 128, 101, 36, 75, 36,
+			55, 0, 11, 67, 44, 114, 10, 89, 108, 71, 36, 47, 0, 16, 70, 43, 55, 237, 30, 12, 192, 47, 37, 65, 48, 108, 50, 37, 0, 12,
+			67, 41, 183, 160, 47, 36, 83, 55, 39, 50, 0, 16, 70, 34, 39, 211, 30, 12, 192, 71, 40, 65, 89, 108, 50, 37, 0, 18, 70, 32,
+			244, 241, 29, 236, 192, 71, 35, 72, 89, 36, 81, 108, 55, 37, 0, 10, 67, 29, 71, 128, 36, 91, 36, 55, 0, 0, 11, 67, 198, 40,
+			33, 81, 40, 50, 36, 12, 0, 23, 72, 186, 3, 202, 30, 232, 15, 40, 112, 76, 35, 50, 72, 47, 108, 76, 35, 50, 72, 47, 108, 0,
+			12, 67, 182, 183, 161, 48, 36, 55, 55, 36, 12, 0, 14, 67, 129, 183, 33, 50, 35, 83, 35, 104, 17, 36, 12, 0, 12, 67, 128, 215,
+			161, 50, 36, 107, 55, 36, 12, 0, 14, 67, 125, 136, 33, 65, 35, 88, 35, 50, 50, 36, 12, 0, 11, 67, 124, 231, 192, 65, 39, 101,
+			35, 65, 0, 11, 67, 114, 39, 192, 104, 17, 39, 12, 65, 0, 11, 67, 82, 39, 192, 91, 35, 84, 35, 65, 0, 11, 67, 80, 140, 225,
+			91, 35, 71, 37, 107, 0, 16, 68, 78, 212, 90, 124, 89, 36, 48, 35, 51, 104, 17, 35, 65, 0, 12, 67, 68, 232, 33, 51, 36, 101,
+			50, 36, 12, 0, 20, 70, 52, 117, 7, 139, 7, 135, 107, 108, 91, 108, 84, 39, 49, 35, 55, 55, 108, 0, 10, 67, 42, 40, 49, 47,
+			39, 50, 81, 0, 16, 67, 41, 183, 33, 47, 35, 83, 35, 104, 17, 104, 17, 39, 107, 0, 14, 68, 41, 17, 204, 124, 47, 35, 51, 108,
+			75, 39, 65, 0, 14, 68, 35, 52, 202, 124, 6, 71, 37, 89, 47, 39, 65, 0, 11, 67, 10, 40, 49, 108, 84, 35, 50, 81, 0, 11,
+			67, 9, 184, 15, 108, 83, 35, 50, 72, 0, 0, 14, 67, 124, 215, 158, 65, 39, 107, 35, 55, 55, 36, 55, 0, 13, 67, 87, 55, 30,
+			89, 36, 57, 104, 17, 35, 55, 0, 13, 68, 80, 114, 30, 128, 91, 108, 71, 55, 39, 50, 0, 11, 67, 72, 114, 30, 88, 108, 71, 39,
+			55, 0, 13, 68, 67, 52, 72, 40, 88, 37, 51, 35, 71, 47, 0, 12, 67, 54, 6, 30, 107, 35, 50, 88, 35, 55, 0, 13, 68, 41,
+			33, 179, 128, 47, 35, 88, 19, 37, 50, 0, 17, 69, 33, 225, 217, 112, 128, 71, 36, 55, 108, 35, 104, 17, 35, 71, 0, 17, 70, 30,
+			1, 199, 120, 215, 0, 35, 50, 35, 55, 107, 35, 104, 17, 0, 0, 12, 68, 206, 40, 12, 132, 57, 39, 50, 75, 36, 0, 14, 68, 193,
+			236, 222, 132, 49, 36, 55, 37, 55, 36, 12, 0, 15, 68, 139, 20, 96, 132, 84, 35, 81, 35, 51, 10, 50, 35, 0, 14, 68, 129, 248,
+			160, 132, 50, 36, 65, 40, 50, 36, 12, 0, 15, 68, 125, 200, 158, 132, 65, 35, 104, 17, 40, 55, 36, 12, 0, 17, 68, 125, 119, 156,
+			132, 65, 39, 47, 35, 55, 55, 35, 104, 17, 36, 0, 15, 68, 124, 194, 161, 60, 65, 39, 75, 47, 35, 107, 36, 72, 0, 13, 68, 108,
+			115, 138, 132, 83, 108, 101, 47, 36, 12, 0, 11, 67, 96, 119, 159, 88, 108, 55, 36, 65, 0, 10, 67, 79, 4, 192, 89, 36, 49, 89,
+			0, 17, 69, 77, 17, 211, 113, 176, 89, 35, 51, 39, 89, 104, 17, 39, 83, 0, 16, 70, 70, 34, 7, 43, 60, 0, 51, 39, 71, 108,
+			47, 37, 49, 0, 12, 67, 63, 55, 159, 72, 36, 57, 55, 35, 65, 0, 14, 67, 50, 24, 31, 75, 35, 107, 35, 50, 50, 35, 65, 0,
+			16, 68, 49, 228, 220, 132, 75, 36, 55, 36, 89, 104, 17, 36, 12, 0, 14, 67, 41, 151, 159, 47, 35, 19, 35, 55, 55, 39, 65, 0,
+			12, 68, 34, 44, 30, 132, 71, 40, 49, 55, 36, 0, 13, 68, 31, 20, 96, 132, 35, 81, 35, 51, 50, 35, 0, 19, 70, 29, 226, 30,
+			29, 168, 64, 39, 55, 71, 35, 55, 108, 104, 17, 36, 12, 0, 16, 68, 29, 226, 10, 132, 35, 55, 6, 71, 35, 47, 47, 36, 12, 0,
+			18, 70, 9, 56, 148, 204, 163, 192, 108, 89, 39, 91, 36, 57, 47, 36, 72, 0, 0, 10, 67, 197, 72, 0, 81, 39, 91, 50, 0, 21,
+			71, 184, 115, 209, 61, 17, 224, 204, 76, 108, 72, 39, 51, 72, 35, 51, 108, 50, 37, 0, 19, 70, 109, 24, 177, 64, 117, 10, 83, 39,
+			51, 40, 81, 39, 88, 108, 91, 47, 0, 13, 67, 52, 172, 192, 4, 107, 35, 6, 47, 47, 108, 0, 12, 67, 33, 24, 18, 71, 39, 51,
+			39, 50, 88, 0, 14, 69, 32, 116, 159, 30, 0, 71, 108, 88, 65, 108, 50, 0, 13, 69, 29, 227, 235, 206, 0, 39, 72, 72, 37, 50,
+			0, 19, 70, 29, 55, 162, 126, 37, 32, 36, 89, 55, 39, 65, 39, 12, 91, 36, 50, 0, 20, 72, 9, 28, 51, 137, 40, 179, 207, 0,
+			108, 51, 49, 36, 39, 88, 39, 37, 49, 0, 0, 17, 69, 197, 228, 243, 130, 16, 81, 39, 55, 36, 89, 37, 50, 36, 12, 0, 15, 69,
+			197, 28, 199, 128, 240, 81, 36, 51, 57, 108, 50, 72, 0, 15, 69, 185, 243, 135, 122, 16, 76, 35, 65, 101, 108, 55, 36, 0, 16, 69,
+			181, 52, 71, 130, 16, 48, 36, 89, 35, 51, 108, 50, 36, 0, 16, 69, 181, 24, 135, 130, 16, 48, 35, 51, 84, 108, 50, 36, 12, 0,
+			11, 67, 180, 244, 64, 48, 36, 72, 35, 51, 0, 18, 70, 180, 124, 8, 28, 226, 161, 48, 108, 49, 71, 108, 101, 47, 36, 12, 0, 16,
+			69, 134, 36, 199, 130, 16, 107, 35, 84, 35, 89, 108, 50, 36, 0, 12, 67, 133, 23, 211, 107, 36, 51, 65, 36, 89, 0, 11, 67, 132,
+			244, 64, 107, 35, 72, 35, 51, 0, 10, 67, 132, 120, 19, 107, 108, 50, 89, 0, 16, 69, 129, 65, 211, 42, 16, 50, 36, 91, 35, 89,
+			47, 36, 12, 0, 11, 67, 127, 20, 64, 65, 35, 81, 35, 51, 0, 14, 68, 127, 1, 222, 124, 65, 39, 49, 108, 55, 36, 65, 0, 15,
+			67, 125, 195, 211, 65, 39, 104, 17, 35, 72, 72, 35, 89, 0, 17, 69, 125, 84, 71, 130, 16, 65, 39, 89, 36, 51, 51, 108, 50, 36,
+			0, 8, 66, 125, 48, 65, 36, 89, 0, 19, 70, 109, 23, 199, 123, 50, 161, 83, 39, 51, 65, 108, 55, 37, 47, 36, 12, 0, 16, 69,
+			108, 120, 19, 114, 16, 83, 108, 50, 39, 89, 104, 17, 36, 0, 12, 67, 78, 5, 0, 89, 36, 50, 50, 35, 91, 0, 10, 67, 76, 120,
+			19, 89, 108, 50, 89, 0, 18, 69, 66, 36, 160, 114, 16, 88, 40, 88, 35, 50, 35, 104, 17, 36, 12, 0, 13, 68, 62, 36, 202, 124,
+			72, 40, 89, 47, 35, 65, 0, 17, 69, 61, 19, 199, 130, 16, 72, 39, 51, 72, 108, 50, 36, 12, 36, 0, 16, 69, 49, 38, 135, 122,
+			16, 75, 36, 88, 104, 17, 108, 55, 36, 0, 18, 70, 42, 40, 7, 123, 50, 161, 47, 39, 50, 108, 55, 37, 47, 36, 12, 0, 14, 68,
+			41, 17, 206, 124, 47, 35, 51, 108, 101, 39, 65, 0, 15, 69, 29, 180, 135, 204, 240, 35, 83, 88, 108, 57, 35, 72, 0, 0, 8, 66,
+			139, 48, 84, 36, 57, 0, 16, 69, 137, 23, 243, 81, 224, 84, 36, 51, 65, 37, 91, 36, 55, 0, 21, 71, 135, 51, 209, 139, 4, 72,
+			128, 107, 37, 72, 51, 39, 49, 35, 51, 71, 39, 50, 0, 9, 66, 83, 48, 91, 36, 57, 19, 0, 10, 67, 77, 18, 0, 89, 39, 51,
+			71, 0, 16, 69, 48, 132, 70, 205, 224, 75, 36, 71, 51, 35, 19, 37, 55, 0, 12, 67, 41, 28, 20, 47, 35, 51, 49, 36, 91, 0,
+			11, 67, 33, 50, 162, 71, 35, 89, 47, 40, 0, 0, 18, 70, 197, 228, 202, 30, 8, 64, 81, 39, 55, 36, 89, 47, 108, 50, 36, 0,
+			17, 70, 181, 225, 209, 204, 168, 64, 48, 39, 55, 108, 51, 37, 47, 36, 0, 18, 70, 135, 23, 202, 30, 8, 64, 107, 36, 81, 65, 35,
+			47, 108, 50, 36, 0, 18, 70, 130, 34, 17, 30, 8, 64, 50, 39, 12, 71, 35, 51, 108, 50, 36, 0, 14, 67, 127, 3, 209, 65, 39,
+			49, 35, 72, 72, 35, 51, 0, 12, 67, 126, 2, 17, 65, 35, 50, 71, 35, 51, 0, 20, 70, 125, 40, 145, 30, 8, 64, 65, 39, 88,
+			35, 84, 84, 36, 51, 108, 50, 36, 0, 18, 70, 124, 120, 81, 30, 8, 64, 65, 108, 107, 36, 51, 108, 50, 36, 12, 0, 20, 70, 113,
+			24, 23, 206, 8, 64, 104, 17, 35, 51, 35, 50, 47, 37, 50, 36, 12, 0, 17, 70, 109, 22, 226, 70, 248, 64, 83, 36, 51, 83, 39,
+			51, 90, 36, 0, 18, 70, 83, 8, 135, 207, 56, 64, 91, 36, 49, 84, 108, 37, 12, 57, 36, 0, 12, 67, 81, 67, 209, 91, 36, 91,
+			72, 35, 51, 0, 12, 67, 78, 216, 81, 89, 36, 48, 36, 107, 51, 0, 12, 67, 78, 2, 145, 89, 36, 50, 47, 36, 51, 0, 12, 67,
+			76, 162, 17, 89, 36, 47, 35, 71, 51, 0, 18, 70, 75, 52, 112, 30, 8, 64, 88, 37, 51, 35, 49, 108, 50, 36, 12, 0, 21, 71,
+			69, 67, 224, 204, 118, 202, 132, 51, 39, 91, 72, 50, 35, 57, 108, 83, 47, 36, 0, 18, 70, 61, 236, 209, 30, 8, 64, 72, 35, 55,
+			37, 51, 108, 50, 36, 12, 0, 14, 67, 40, 220, 209, 47, 35, 107, 35, 57, 57, 39, 51, 0, 15, 69, 35, 24, 179, 205, 240, 71, 36,
+			81, 40, 37, 12, 65, 0, 10, 67, 35, 4, 192, 71, 39, 49, 89, 0, 18, 70, 34, 1, 241, 137, 76, 0, 71, 35, 50, 108, 81, 40,
+			91, 35, 49, 0, 17, 69, 33, 20, 199, 129, 240, 71, 36, 51, 36, 89, 108, 50, 35, 65, 0, 19, 70, 32, 116, 199, 33, 200, 64, 71,
+			108, 89, 108, 71, 36, 104, 17, 36, 12, 0, 18, 70, 29, 50, 162, 30, 8, 64, 39, 89, 47, 39, 84, 108, 50, 36, 12, 0, 0, 19,
+			70, 192, 248, 138, 128, 135, 128, 49, 35, 72, 40, 47, 35, 50, 71, 35, 55, 0, 13, 68, 181, 225, 202, 136, 48, 36, 55, 108, 47, 39,
+			0, 10, 67, 130, 44, 192, 6, 50, 39, 37, 0, 11, 67, 78, 8, 0, 89, 39, 50, 35, 50, 0, 12, 68, 62, 36, 202, 204, 72, 40,
+			89, 47, 37, 0, 16, 70, 29, 52, 71, 207, 55, 128, 36, 89, 51, 108, 37, 12, 55, 0, 13, 68, 9, 4, 72, 136, 108, 88, 35, 51,
+			71, 40, 0, 0, 11, 67, 192, 244, 64, 49, 36, 72, 36, 51, 0, 15, 69, 192, 116, 79, 193, 48, 49, 108, 51, 72, 36, 49, 89, 0,
+			11, 67, 139, 20, 64, 84, 35, 81, 35, 51, 0, 11, 67, 131, 20, 64, 50, 36, 81, 35, 51, 0, 15, 68, 125, 161, 243, 68, 65, 39,
+			104, 17, 108, 57, 36, 51, 0, 19, 70, 124, 252, 202, 68, 120, 33, 65, 36, 72, 37, 47, 51, 108, 50, 36, 12, 0, 14, 68, 70, 3,
+			8, 68, 51, 35, 50, 75, 71, 35, 51, 0, 24, 72, 63, 56, 135, 70, 8, 148, 42, 16, 72, 37, 84, 108, 51, 50, 36, 84, 36, 91,
+			47, 36, 12, 0, 18, 70, 41, 241, 223, 60, 120, 33, 47, 35, 65, 108, 65, 72, 108, 50, 36, 0, 15, 68, 41, 161, 243, 68, 47, 35,
+			104, 17, 108, 57, 39, 51, 0, 14, 68, 34, 1, 207, 68, 71, 35, 50, 108, 72, 36, 51, 0, 11, 67, 76, 212, 64, 89, 36, 107, 51,
+			0, 48, 12, 67, 76, 212, 64, 89, 35, 107, 35, 51, 0, 46, 0, 11, 67, 197, 226, 128, 81, 39, 55, 35, 47, 0, 12, 67, 197, 19,
+			212, 81, 35, 51, 72, 36, 91, 0, 9, 67, 130, 34, 128, 50, 39, 47, 0, 14, 68, 109, 17, 243, 88, 83, 35, 51, 108, 57, 36, 88,
+			0, 11, 67, 101, 232, 51, 35, 55, 35, 50, 37, 0, 11, 67, 101, 226, 128, 36, 55, 55, 35, 47, 0, 11, 67, 80, 135, 179, 91, 36,
+			71, 55, 37, 0, 11, 67, 68, 119, 212, 51, 108, 65, 36, 91, 0, 15, 68, 41, 244, 112, 72, 47, 35, 65, 35, 51, 49, 39, 88, 0,
+			0, 16, 69, 128, 200, 135, 197, 16, 50, 35, 75, 84, 108, 81, 35, 51, 0, 15, 67, 125, 198, 81, 65, 39, 104, 17, 35, 19, 19, 35,
+			51, 0, 12, 67, 125, 60, 81, 65, 36, 89, 81, 35, 51, 0, 16, 69, 125, 40, 147, 109, 16, 65, 36, 88, 39, 89, 83, 36, 51, 0,
+			16, 69, 122, 252, 226, 129, 16, 55, 36, 90, 57, 39, 50, 36, 51, 0, 22, 71, 108, 228, 71, 120, 248, 158, 132, 83, 35, 101, 51, 39,
+			72, 72, 39, 12, 55, 36, 12, 0, 18, 70, 70, 3, 8, 68, 120, 0, 51, 35, 50, 75, 71, 35, 51, 108, 50, 0, 11, 67, 63, 60,
+			81, 72, 37, 81, 35, 51, 0, 21, 71, 61, 19, 223, 128, 241, 224, 132, 72, 35, 51, 72, 65, 35, 50, 72, 108, 50, 36, 0, 19, 69,
+			52, 241, 240, 45, 16, 107, 35, 72, 72, 36, 10, 35, 49, 89, 35, 51, 0, 21, 71, 40, 136, 112, 29, 17, 224, 132, 47, 35, 71, 35,
+			107, 49, 108, 51, 108, 50, 36, 0, 14, 67, 40, 114, 209, 47, 35, 19, 35, 89, 89, 39, 51, 0, 14, 67, 40, 50, 209, 47, 35, 19,
+			35, 89, 89, 39, 51, 0, 12, 67, 33, 28, 81, 71, 36, 51, 81, 36, 51, 0, 18, 69, 32, 114, 148, 193, 16, 71, 108, 47, 35, 91,
+			35, 49, 49, 39, 51, 0, 15, 69, 31, 8, 135, 61, 16, 36, 49, 84, 108, 72, 39, 51, 0, 17, 70, 29, 236, 98, 71, 50, 159, 35,
+			55, 81, 39, 51, 37, 47, 65, 0, 16, 69, 28, 167, 211, 109, 16, 35, 47, 65, 39, 89, 83, 36, 51, 0, 16, 69, 28, 132, 84, 133,
+			16, 35, 71, 35, 51, 91, 35, 107, 51, 0, 0, 14, 68, 197, 178, 160, 204, 81, 39, 83, 47, 35, 50, 37, 0, 16, 70, 196, 116, 71,
+			128, 172, 192, 81, 108, 51, 108, 50, 47, 37, 0, 10, 67, 194, 38, 202, 49, 40, 83, 47, 0, 15, 69, 192, 116, 200, 30, 0, 49, 108,
+			89, 36, 71, 108, 50, 0, 18, 70, 186, 34, 15, 76, 172, 192, 76, 40, 71, 10, 72, 35, 89, 47, 37, 0, 13, 68, 183, 53, 48, 80,
+			48, 37, 91, 49, 36, 91, 0, 15, 69, 181, 24, 138, 138, 0, 48, 39, 51, 39, 47, 39, 50, 0, 18, 69, 124, 167, 209, 193, 32, 65,
+			39, 47, 36, 65, 35, 51, 49, 36, 88, 0, 11, 67, 75, 56, 10, 88, 37, 50, 35, 47, 0, 12, 68, 68, 124, 72, 204, 51, 108, 81,
+			71, 37, 0, 16, 68, 53, 193, 224, 204, 107, 35, 104, 17, 104, 17, 108, 50, 37, 0, 8, 65, 188, 6, 90, 36, 12, 0, 0, 14, 68,
+			129, 65, 207, 68, 50, 36, 91, 108, 72, 39, 51, 0, 15, 68, 86, 8, 136, 68, 89, 36, 50, 39, 12, 71, 35, 51, 0, 11, 67, 77,
+			21, 0, 89, 35, 51, 35, 91, 0, 22, 72, 77, 17, 219, 68, 116, 135, 130, 16, 89, 35, 51, 35, 83, 51, 108, 88, 108, 50, 36, 0,
+			11, 67, 57, 181, 0, 101, 35, 83, 35, 91, 0, 24, 72, 56, 241, 237, 78, 3, 199, 130, 16, 101, 39, 72, 108, 48, 35, 89, 35, 50,
+			72, 108, 50, 36, 0, 22, 72, 34, 33, 222, 134, 36, 199, 130, 16, 71, 39, 55, 107, 35, 84, 35, 89, 108, 50, 36, 0, 14, 69, 32,
+			119, 153, 193, 48, 71, 36, 55, 35, 49, 89, 0, 0, 13, 68, 197, 60, 206, 40, 81, 39, 89, 37, 101, 47, 0, 13, 68, 194, 36, 96,
+			40, 49, 39, 51, 50, 36, 47, 0, 10, 67, 193, 226, 128, 49, 39, 55, 47, 0, 19, 70, 183, 49, 223, 33, 28, 20, 48, 35, 57, 65,
+			71, 35, 51, 49, 39, 91, 0, 14, 68, 181, 27, 84, 40, 48, 39, 51, 48, 39, 91, 47, 0, 17, 69, 180, 120, 145, 115, 48, 48, 108,
+			84, 35, 51, 35, 104, 17, 37, 0, 15, 69, 139, 52, 71, 205, 64, 84, 37, 51, 108, 57, 36, 91, 0, 10, 67, 137, 226, 128, 84, 39,
+			55, 47, 0, 14, 68, 132, 241, 243, 40, 107, 36, 72, 108, 57, 35, 47, 0, 15, 68, 125, 148, 91, 40, 65, 35, 19, 51, 36, 83, 35,
+			47, 0, 17, 69, 125, 50, 154, 131, 48, 65, 39, 89, 47, 35, 104, 17, 50, 37, 0, 14, 68, 113, 17, 243, 40, 104, 17, 35, 51, 108,
+			35, 47, 0, 14, 68, 83, 1, 243, 40, 91, 36, 49, 108, 57, 35, 47, 0, 15, 69, 82, 24, 135, 131, 48, 91, 35, 107, 84, 108, 50,
+			37, 0, 15, 69, 78, 6, 226, 131, 48, 89, 35, 65, 83, 39, 50, 37, 0, 14, 68, 70, 33, 243, 40, 51, 36, 84, 108, 57, 35, 47,
+			0, 19, 70, 63, 20, 81, 204, 226, 179, 72, 36, 81, 35, 51, 51, 37, 101, 47, 37, 0, 13, 67, 61, 72, 50, 72, 36, 91, 50, 36,
+			57, 36, 0, 16, 69, 61, 50, 159, 34, 32, 72, 35, 89, 47, 35, 65, 71, 40, 0, 14, 68, 57, 72, 160, 40, 101, 39, 91, 40, 50,
+			35, 47, 0, 14, 68, 53, 241, 243, 40, 107, 36, 65, 108, 57, 35, 47, 0, 0, 23, 70, 124, 215, 207, 49, 150, 209, 65, 39, 107, 35,
+			65, 65, 35, 72, 75, 35, 19, 83, 35, 51, 0, 19, 70, 124, 164, 76, 124, 120, 0, 65, 39, 47, 35, 51, 75, 36, 65, 108, 50, 0,
+			21, 71, 41, 252, 211, 42, 44, 30, 76, 47, 36, 65, 37, 89, 47, 39, 49, 36, 55, 89, 0, 16, 69, 33, 225, 199, 45, 16, 71, 36,
+			55, 108, 35, 89, 35, 51, 0, 18, 70, 33, 147, 199, 73, 136, 81, 71, 35, 72, 35, 88, 88, 39, 107, 51, 0, 17, 70, 29, 228, 222,
+			92, 120, 0, 39, 89, 89, 39, 55, 47, 108, 50, 0, 0, 15, 68, 207, 17, 224, 200, 57, 36, 81, 108, 50, 36, 57, 36, 0, 15, 68,
+			197, 44, 224, 200, 81, 39, 88, 37, 50, 36, 57, 36, 0, 16, 69, 193, 236, 207, 74, 0, 49, 36, 55, 37, 72, 88, 35, 50, 0, 15,
+			68, 129, 248, 160, 200, 50, 36, 65, 40, 50, 36, 57, 36, 0, 18, 69, 126, 33, 219, 112, 160, 65, 39, 84, 108, 83, 36, 104, 17, 35,
+			47, 0, 17, 68, 126, 5, 220, 200, 65, 35, 50, 47, 35, 104, 17, 36, 57, 36, 0, 18, 69, 125, 193, 226, 124, 160, 65, 39, 104, 17,
+			108, 84, 36, 65, 35, 47, 0, 18, 68, 125, 48, 222, 200, 65, 35, 89, 10, 6, 35, 12, 55, 36, 57, 36, 0, 12, 67, 109, 51, 74,
+			83, 39, 89, 107, 35, 47, 0, 16, 69, 109, 24, 142, 108, 160, 83, 39, 51, 40, 101, 39, 83, 47, 0, 19, 70, 109, 17, 219, 194, 12,
+			192, 83, 35, 51, 108, 83, 36, 49, 35, 50, 37, 0, 14, 68, 102, 33, 220, 32, 35, 84, 108, 104, 17, 36, 71, 0, 12, 67, 77, 24,
+			14, 89, 35, 51, 50, 35, 101, 0, 11, 67, 57, 184, 0, 101, 35, 83, 35, 50, 0, 15, 69, 55, 7, 209, 30, 0, 107, 39, 49, 65,
+			51, 108, 50, 0, 17, 70, 40, 231, 241, 30, 12, 192, 47, 39, 101, 65, 81, 108, 50, 37, 0, 15, 68, 34, 28, 224, 200, 71, 36, 107,
+			37, 50, 36, 57, 36, 0, 18, 70, 34, 3, 243, 192, 172, 192, 71, 36, 50, 36, 72, 37, 49, 47, 37, 0, 19, 70, 33, 23, 17, 30,
+			12, 192, 71, 35, 51, 104, 17, 35, 51, 108, 50, 37, 0, 15, 69, 30, 40, 34, 112, 160, 40, 50, 84, 35, 104, 17, 47, 0, 11, 67,
+			29, 188, 10, 36, 83, 36, 49, 47, 0, 15, 68, 29, 60, 30, 200, 36, 89, 49, 36, 55, 36, 57, 36, 0, 0, 10, 67, 180, 229, 0,
+			48, 35, 101, 91, 0, 10, 67, 180, 120, 15, 48, 108, 50, 72, 0, 10, 67, 124, 120, 15, 65, 108, 50, 72, 0, 12, 67, 78, 3, 15,
+			89, 36, 50, 75, 36, 72, 0, 27, 73, 33, 232, 15, 181, 24, 135, 72, 120, 33, 71, 39, 55, 35, 50, 72, 48, 35, 51, 84, 108, 88,
+			108, 50, 36, 0, 14, 68, 30, 12, 94, 192, 35, 50, 81, 39, 55, 35, 49, 0, 11, 67, 10, 40, 15, 108, 84, 35, 50, 72, 0, 0,
+			16, 69, 120, 119, 208, 132, 128, 55, 108, 65, 35, 88, 107, 35, 71, 0, 19, 69, 66, 36, 160, 115, 32, 88, 40, 88, 35, 50, 35, 104,
+			17, 36, 57, 36, 0, 18, 70, 57, 252, 209, 76, 120, 51, 101, 35, 65, 37, 51, 89, 108, 50, 37, 0, 13, 67, 49, 50, 178, 75, 39,
+			89, 47, 36, 57, 36, 0, 17, 70, 35, 52, 243, 193, 226, 128, 71, 37, 89, 37, 49, 55, 36, 47, 0, 12, 68, 9, 252, 206, 40, 108,
+			65, 37, 101, 47, 0, 0, 14, 68, 131, 56, 159, 60, 50, 35, 57, 40, 65, 35, 72, 0, 14, 68, 101, 193, 243, 60, 35, 104, 17, 108,
+			57, 36, 72, 0, 14, 68, 68, 129, 243, 60, 51, 39, 71, 108, 57, 35, 72, 0, 11, 68, 58, 33, 243, 60, 101, 108, 57, 72, 0, 9,
+			67, 30, 33, 192, 36, 84, 108, 0, 19, 70, 29, 236, 19, 30, 3, 209, 35, 55, 36, 49, 89, 108, 50, 72, 36, 51, 0, 0, 14, 69,
+			192, 119, 209, 30, 0, 49, 108, 65, 51, 108, 50, 0, 20, 71, 122, 34, 51, 30, 236, 202, 204, 55, 40, 71, 37, 57, 108, 76, 37, 47,
+			37, 0, 17, 69, 113, 227, 209, 30, 0, 104, 17, 39, 55, 72, 39, 51, 108, 50, 0, 11, 67, 77, 28, 0, 89, 35, 51, 35, 49, 0,
+			20, 70, 73, 244, 202, 30, 12, 128, 88, 36, 65, 36, 89, 47, 108, 50, 36, 57, 36, 0, 19, 70, 61, 236, 209, 30, 12, 128, 72, 35,
+			55, 37, 51, 108, 50, 36, 57, 36, 0, 0, 14, 69, 197, 17, 243, 204, 240, 81, 36, 51, 108, 37, 72, 0, 16, 69, 131, 56, 148, 128,
+			240, 50, 37, 57, 40, 91, 35, 50, 72, 0, 16, 69, 129, 72, 162, 128, 240, 50, 35, 91, 35, 84, 35, 50, 72, 0, 17, 69, 125, 148,
+			7, 123, 0, 65, 35, 19, 35, 88, 108, 55, 36, 49, 0, 15, 69, 76, 161, 243, 204, 240, 89, 36, 47, 108, 37, 12, 72, 0, 0, 11,
+			67, 197, 19, 226, 81, 36, 51, 72, 40, 0, 22, 72, 186, 17, 209, 31, 56, 135, 131, 48, 76, 108, 107, 108, 51, 36, 57, 84, 108, 50,
+			37, 0, 9, 66, 135, 48, 107, 36, 12, 57, 0, 11, 67, 133, 19, 226, 107, 35, 51, 72, 39, 0, 8, 66, 71, 48, 51, 36, 57, 0,
+			11, 67, 53, 226, 0, 107, 35, 55, 35, 71, 0, 13, 67, 41, 147, 243, 47, 35, 19, 35, 72, 72, 37, 0, 21, 72, 30, 220, 207, 126,
+			39, 162, 191, 48, 36, 48, 37, 72, 65, 39, 55, 39, 90, 37, 0, 0, 26, 73, 136, 115, 15, 29, 229, 17, 31, 53, 192, 84, 108, 75,
+			36, 72, 39, 91, 91, 35, 51, 108, 57, 36, 47, 0, 15, 68, 113, 28, 200, 28, 104, 17, 35, 51, 37, 71, 35, 50, 0, 11, 68, 58,
+			44, 212, 28, 101, 37, 91, 108, 0, 17, 70, 58, 33, 225, 69, 40, 0, 101, 108, 107, 35, 51, 88, 35, 50, 0, 18, 70, 9, 60, 199,
+			78, 12, 64, 108, 89, 37, 57, 108, 89, 35, 50, 81, 0, 0, 25, 73, 197, 178, 135, 68, 244, 95, 30, 12, 192, 81, 39, 83, 47, 108,
+			51, 72, 35, 51, 65, 108, 50, 37, 0, 16, 69, 193, 23, 222, 206, 0, 49, 36, 51, 36, 65, 55, 37, 50, 0, 25, 73, 69, 178, 135,
+			68, 244, 95, 30, 12, 192, 51, 35, 83, 47, 108, 51, 72, 35, 51, 65, 108, 50, 37, 0, 0, 11, 67, 79, 8, 7, 89, 39, 49, 50,
+			108, 0, 10, 67, 74, 40, 7, 88, 39, 50, 108, 0, 13, 67, 69, 183, 7, 51, 39, 83, 35, 104, 17, 108, 0, 19, 69, 53, 204, 220,
+			40, 112, 107, 35, 104, 17, 37, 104, 17, 35, 47, 35, 50, 0, 11, 67, 29, 86, 135, 36, 89, 104, 17, 108, 0, 0, 16, 69, 197, 178,
+			162, 198, 32, 81, 39, 83, 47, 6, 39, 81, 40, 0, 11, 67, 197, 66, 128, 81, 6, 35, 91, 47, 0, 10, 67, 133, 66, 128, 107, 35,
+			91, 47, 0, 11, 67, 128, 230, 115, 50, 35, 101, 35, 19, 0, 14, 67, 125, 168, 51, 65, 39, 104, 17, 35, 50, 50, 37, 0, 11, 67,
+			125, 20, 243, 65, 36, 51, 89, 37, 0, 25, 72, 63, 56, 135, 70, 8, 148, 43, 32, 72, 37, 84, 108, 51, 50, 36, 84, 36, 91, 47,
+			36, 57, 36, 0, 25, 72, 33, 68, 79, 137, 50, 135, 131, 32, 71, 35, 91, 35, 51, 72, 40, 89, 47, 108, 50, 36, 57, 36, 0, 10,
+			67, 9, 246, 243, 108, 65, 83, 37, 0, 20, 66, 113, 128, 104, 12, 12, 35, 71, 55, 10, 35, 88, 9, 88, 39, 107, 51, 0, 46, 0,
+			10, 67, 198, 35, 192, 81, 39, 12, 72, 0, 12, 68, 194, 33, 222, 28, 49, 40, 108, 55, 108, 0, 18, 70, 181, 225, 211, 128, 161, 192,
+			48, 36, 55, 108, 89, 36, 50, 47, 108, 0, 14, 68, 181, 18, 30, 28, 48, 39, 51, 71, 35, 55, 108, 0, 13, 68, 129, 33, 204, 28,
+			50, 36, 88, 108, 75, 108, 0, 13, 68, 125, 236, 224, 28, 65, 36, 55, 37, 50, 108, 0, 20, 68, 124, 215, 28, 28, 65, 39, 107, 35,
+			104, 17, 104, 17, 35, 104, 17, 35, 50, 0, 13, 68, 79, 8, 179, 28, 89, 36, 49, 40, 57, 108, 0, 14, 68, 78, 216, 10, 28, 89,
+			36, 48, 35, 50, 47, 108, 0, 18, 70, 61, 24, 143, 204, 120, 0, 72, 39, 51, 40, 72, 37, 57, 108, 50, 0, 17, 70, 52, 124, 209,
+			204, 120, 0, 107, 108, 36, 51, 37, 57, 108, 50, 0, 13, 68, 42, 12, 96, 28, 47, 35, 50, 81, 50, 108, 0, 14, 68, 29, 18, 156,
+			28, 36, 51, 47, 36, 104, 17, 108, 0, 8, 65, 60, 6, 72, 108, 55, 0, 0, 12, 67, 197, 227, 224, 81, 39, 55, 72, 36, 50, 0,
+			11, 67, 187, 1, 224, 76, 36, 49, 108, 50, 0, 14, 67, 125, 66, 156, 6, 65, 39, 91, 47, 35, 104, 17, 0, 18, 70, 124, 164, 98,
+			122, 252, 192, 65, 36, 47, 51, 39, 55, 39, 90, 37, 0, 20, 70, 113, 24, 156, 127, 53, 0, 104, 17, 36, 51, 39, 104, 17, 35, 65,
+			37, 91, 0, 11, 67, 69, 241, 224, 51, 39, 65, 108, 50, 0, 11, 67, 35, 49, 224, 71, 35, 57, 108, 50, 0, 11, 67, 29, 60, 32,
+			36, 89, 49, 35, 50, 0, 17, 70, 28, 168, 34, 122, 252, 192, 36, 47, 50, 39, 55, 39, 90, 37, 0, 0, 14, 69, 131, 60, 34, 120,
+			112, 50, 37, 49, 39, 55, 108, 0, 12, 67, 130, 23, 192, 6, 50, 39, 107, 39, 65, 0, 12, 67, 126, 23, 192, 6, 65, 39, 107, 36,
+			65, 0, 18, 69, 125, 26, 202, 32, 112, 65, 39, 51, 35, 47, 47, 35, 71, 35, 50, 0, 16, 69, 124, 120, 15, 120, 112, 65, 108, 50,
+			72, 36, 55, 55, 108, 0, 12, 67, 102, 19, 225, 6, 39, 107, 72, 36, 12, 0, 11, 67, 81, 150, 192, 91, 35, 19, 35, 83, 0, 11,
+			67, 79, 21, 0, 89, 35, 81, 35, 91, 0, 10, 67, 40, 134, 64, 47, 35, 71, 35, 0, 12, 67, 29, 70, 97, 35, 91, 35, 19, 36,
+			12, 0, 15, 69, 28, 178, 7, 40, 112, 36, 89, 71, 108, 47, 35, 50, 0, 15, 69, 9, 180, 115, 112, 112, 108, 83, 51, 37, 104, 17,
+			108, 0, 24, 7, 216, 168, 226, 128, 140, 216, 184, 71, 35, 12, 19, 72, 10, 35, 88, 9, 88, 39, 107, 51, 0, 46, 0, 11, 67, 196,
+			194, 128, 81, 35, 75, 36, 47, 0, 11, 67, 187, 17, 222, 76, 36, 81, 108, 55, 0, 13, 68, 185, 50, 7, 128, 76, 35, 89, 71, 108,
+			50, 0, 12, 68, 181, 28, 224, 40, 48, 51, 37, 50, 47, 0, 12, 67, 133, 33, 222, 107, 35, 88, 88, 108, 55, 0, 14, 68, 127, 54,
+			71, 128, 65, 35, 57, 35, 19, 108, 50, 0, 14, 68, 126, 40, 72, 40, 65, 40, 107, 36, 71, 35, 47, 0, 11, 67, 125, 227, 128, 65,
+			35, 55, 35, 101, 0, 15, 68, 125, 44, 235, 128, 65, 39, 88, 35, 57, 57, 35, 50, 0, 14, 68, 125, 38, 135, 128, 65, 36, 88, 104,
+			17, 108, 50, 0, 19, 70, 124, 163, 226, 122, 43, 243, 65, 36, 47, 39, 72, 39, 55, 39, 90, 37, 0, 14, 68, 113, 18, 7, 128, 104,
+			17, 39, 51, 71, 108, 50, 0, 12, 68, 110, 43, 199, 128, 83, 39, 90, 108, 50, 0, 12, 68, 101, 250, 199, 128, 39, 65, 65, 108, 50,
+			0, 14, 68, 93, 226, 7, 128, 47, 35, 55, 35, 71, 108, 50, 0, 14, 68, 89, 18, 7, 128, 88, 35, 51, 35, 71, 108, 50, 0, 13,
+			68, 83, 50, 7, 128, 91, 36, 57, 71, 108, 50, 0, 12, 67, 79, 49, 222, 89, 35, 57, 57, 108, 55, 0, 15, 69, 77, 246, 226, 131,
+			48, 89, 35, 65, 83, 39, 50, 37, 0, 13, 68, 57, 242, 7, 128, 101, 39, 65, 71, 108, 50, 0, 14, 68, 57, 226, 7, 128, 101, 35,
+			55, 35, 71, 108, 50, 0, 11, 67, 52, 119, 136, 107, 108, 55, 36, 71, 0, 13, 68, 50, 2, 7, 128, 75, 39, 50, 71, 108, 50, 0,
+			18, 70, 43, 8, 34, 122, 43, 243, 47, 36, 49, 50, 39, 55, 39, 90, 37, 0, 15, 69, 34, 44, 96, 62, 32, 71, 40, 81, 35, 50,
+			72, 40, 0, 11, 67, 32, 226, 128, 71, 6, 35, 101, 47, 0, 13, 68, 29, 231, 141, 128, 39, 55, 55, 35, 107, 50, 0, 0, 15, 67,
+			125, 119, 153, 65, 39, 47, 47, 35, 55, 36, 12, 19, 0, 14, 67, 125, 66, 48, 65, 39, 91, 35, 71, 71, 35, 49, 0, 12, 67, 124,
+			220, 31, 65, 39, 107, 49, 35, 65, 0, 10, 67, 120, 124, 240, 55, 108, 57, 49, 0, 10, 67, 110, 39, 176, 83, 39, 55, 49, 0, 11,
+			67, 109, 104, 64, 83, 36, 88, 88, 36, 0, 10, 67, 79, 56, 48, 89, 37, 50, 49, 0, 13, 67, 62, 42, 223, 72, 39, 6, 84, 84,
+			39, 65, 0, 18, 70, 42, 3, 209, 136, 120, 0, 47, 39, 50, 72, 51, 39, 84, 108, 50, 0, 26, 73, 41, 241, 212, 31, 20, 109, 78,
+			3, 192, 47, 35, 65, 108, 91, 81, 35, 51, 48, 35, 89, 35, 50, 72, 0, 10, 67, 40, 120, 48, 47, 108, 50, 49, 0, 10, 67, 32,
+			120, 48, 71, 108, 50, 49, 0, 0, 14, 69, 194, 34, 7, 120, 160, 49, 39, 71, 108, 55, 47, 0, 10, 67, 181, 236, 0, 48, 36, 55,
+			49, 0, 17, 69, 181, 24, 115, 32, 160, 48, 39, 51, 107, 36, 57, 71, 35, 47, 0, 8, 66, 137, 32, 84, 36, 88, 0, 18, 70, 133,
+			230, 207, 138, 12, 192, 107, 39, 55, 39, 83, 72, 40, 50, 37, 0, 14, 70, 132, 204, 240, 40, 140, 192, 107, 36, 75, 75, 37, 0, 12,
+			67, 129, 76, 32, 50, 35, 91, 49, 35, 50, 0, 18, 70, 129, 50, 135, 122, 252, 192, 50, 39, 89, 47, 108, 55, 39, 90, 37, 0, 11,
+			67, 127, 60, 32, 65, 37, 49, 39, 50, 0, 20, 71, 111, 52, 179, 137, 232, 175, 204, 83, 37, 88, 37, 57, 39, 55, 39, 90, 37, 0,
+			22, 71, 108, 168, 136, 206, 39, 175, 204, 83, 39, 47, 39, 71, 37, 57, 39, 55, 39, 90, 37, 0, 11, 67, 76, 115, 138, 89, 6, 108,
+			101, 47, 0, 8, 66, 69, 32, 51, 39, 88, 0, 16, 69, 33, 36, 113, 30, 0, 71, 39, 88, 39, 51, 81, 108, 50, 0, 19, 71, 31,
+			51, 198, 137, 232, 175, 204, 37, 72, 36, 19, 39, 55, 39, 90, 37, 0, 17, 70, 29, 59, 71, 196, 172, 192, 36, 89, 48, 108, 81, 36,
+			47, 37, 0, 15, 69, 29, 54, 225, 30, 0, 36, 89, 83, 35, 107, 108, 50, 0, 14, 69, 9, 54, 199, 120, 160, 108, 89, 83, 108, 55,
+			47, 0, 0, 11, 67, 136, 119, 143, 84, 108, 55, 36, 72, 0, 12, 67, 134, 40, 49, 107, 35, 84, 35, 50, 81, 0, 14, 68, 129, 248,
+			160, 192, 50, 36, 65, 40, 50, 35, 49, 0, 12, 67, 129, 118, 225, 50, 39, 47, 83, 36, 12, 0, 11, 67, 125, 147, 225, 65, 36, 19,
+			72, 36, 0, 14, 68, 125, 65, 243, 100, 65, 39, 91, 108, 57, 36, 19, 0, 13, 67, 113, 22, 97, 104, 17, 39, 51, 19, 36, 12, 0,
+			11, 67, 112, 131, 64, 104, 17, 39, 71, 107, 0, 12, 67, 109, 72, 49, 83, 36, 91, 35, 50, 81, 0, 18, 70, 109, 54, 209, 40, 114,
+			0, 83, 39, 89, 83, 39, 51, 47, 108, 71, 0, 11, 67, 83, 54, 97, 91, 37, 19, 36, 12, 0, 11, 67, 83, 6, 192, 91, 36, 49,
+			39, 83, 0, 12, 67, 82, 40, 15, 91, 35, 84, 35, 50, 72, 0, 12, 67, 81, 21, 225, 91, 39, 51, 47, 36, 12, 0, 10, 67, 68,
+			134, 64, 51, 39, 71, 19, 0, 11, 67, 49, 22, 97, 75, 39, 51, 19, 36, 0, 11, 67, 41, 22, 97, 47, 39, 51, 19, 36, 0, 10,
+			67, 40, 120, 49, 47, 108, 50, 81, 0, 10, 67, 32, 120, 49, 71, 108, 50, 81, 0, 15, 69, 29, 229, 17, 194, 16, 39, 91, 91, 36,
+			51, 49, 36, 0, 13, 67, 28, 200, 33, 35, 75, 36, 50, 50, 36, 12, 0, 11, 67, 11, 56, 15, 108, 57, 35, 50, 72, 0, 0, 23,
+			72, 191, 56, 159, 69, 184, 158, 191, 48, 90, 36, 39, 65, 39, 51, 83, 39, 55, 39, 90, 37, 0, 17, 70, 136, 124, 80, 29, 66, 128,
+			84, 108, 81, 39, 88, 108, 91, 47, 0, 12, 67, 125, 56, 94, 65, 39, 89, 107, 36, 55, 0, 16, 69, 124, 252, 209, 193, 224, 65, 39,
+			72, 37, 51, 49, 39, 55, 0, 17, 68, 124, 166, 91, 128, 65, 39, 47, 36, 19, 35, 83, 83, 36, 50, 0, 15, 68, 114, 3, 199, 112,
+			104, 17, 39, 50, 72, 108, 104, 17, 0, 14, 69, 111, 56, 143, 29, 224, 83, 36, 39, 72, 108, 55, 0, 20, 70, 101, 194, 32, 83, 56,
+			51, 35, 104, 17, 35, 71, 50, 36, 91, 37, 50, 37, 0, 17, 70, 78, 37, 51, 30, 2, 128, 89, 39, 91, 37, 57, 108, 50, 47, 0,
+			16, 69, 76, 140, 8, 29, 224, 89, 35, 71, 39, 49, 71, 108, 55, 0, 19, 70, 61, 24, 154, 198, 44, 243, 72, 39, 51, 40, 104, 17,
+			81, 40, 37, 12, 0, 16, 69, 60, 140, 209, 193, 224, 72, 35, 71, 37, 51, 49, 39, 55, 0, 15, 69, 58, 37, 13, 29, 224, 101, 39,
+			91, 107, 6, 108, 55, 0, 12, 67, 57, 232, 12, 101, 35, 55, 35, 50, 75, 0, 16, 70, 35, 52, 240, 139, 50, 128, 71, 37, 89, 49,
+			40, 37, 47, 0, 12, 67, 35, 4, 222, 71, 39, 49, 89, 36, 55, 0, 16, 69, 29, 35, 7, 128, 128, 35, 88, 75, 108, 50, 36, 71,
+			36, 0, 0, 13, 68, 193, 65, 224, 60, 49, 36, 91, 108, 50, 72, 0, 13, 68, 185, 65, 224, 60, 76, 36, 91, 108, 50, 72, 0, 16,
+			69, 181, 66, 136, 29, 240, 48, 39, 91, 47, 36, 71, 108, 65, 0, 14, 68, 129, 76, 224, 60, 50, 36, 91, 37, 50, 35, 72, 0, 13,
+			68, 129, 65, 224, 60, 50, 36, 91, 108, 50, 72, 0, 13, 67, 128, 248, 95, 50, 35, 72, 35, 107, 35, 65, 0, 16, 68, 125, 146, 156,
+			60, 65, 39, 19, 47, 35, 104, 17, 36, 72, 0, 14, 68, 78, 44, 96, 60, 89, 39, 12, 81, 35, 50, 72, 0, 11, 67, 78, 39, 0,
+			6, 89, 39, 104, 17, 0, 16, 68, 77, 199, 159, 132, 89, 39, 104, 17, 39, 55, 65, 36, 12, 0, 15, 68, 63, 7, 159, 132, 72, 36,
+			49, 55, 35, 65, 36, 12, 0, 14, 68, 61, 24, 179, 60, 72, 36, 51, 35, 84, 37, 72, 0, 13, 68, 57, 248, 143, 132, 101, 35, 65,
+			40, 72, 36, 0, 15, 68, 41, 19, 31, 132, 47, 35, 51, 75, 39, 65, 36, 12, 0, 14, 67, 40, 132, 223, 47, 35, 71, 35, 89, 89,
+			39, 65, 0, 12, 68, 40, 113, 179, 60, 47, 35, 19, 37, 72, 0, 14, 68, 32, 140, 224, 132, 71, 36, 71, 37, 50, 36, 12, 0, 17,
+			70, 32, 119, 148, 139, 60, 0, 71, 108, 55, 91, 36, 84, 37, 49, 0, 12, 68, 29, 177, 214, 132, 36, 83, 108, 88, 36, 0, 13, 68,
+			29, 59, 96, 60, 36, 89, 48, 35, 50, 72, 0, 0, 14, 69, 131, 56, 173, 30, 0, 50, 36, 39, 48, 108, 50, 0, 15, 69, 131, 49,
+			211, 206, 0, 50, 37, 57, 108, 89, 37, 50, 0, 17, 69, 125, 177, 217, 122, 0, 65, 35, 83, 108, 19, 36, 55, 39, 50, 0, 14, 68,
+			125, 145, 222, 48, 65, 39, 19, 108, 55, 36, 75, 0, 15, 69, 83, 49, 215, 206, 0, 91, 35, 57, 108, 47, 37, 50, 0, 11, 67, 79,
+			28, 0, 89, 35, 81, 35, 49, 0, 10, 67, 71, 56, 128, 51, 37, 57, 39, 0, 15, 68, 41, 39, 146, 120, 47, 35, 88, 35, 55, 88,
+			39, 55, 0, 24, 73, 32, 124, 10, 71, 56, 158, 138, 252, 192, 71, 108, 49, 47, 36, 51, 37, 57, 39, 55, 39, 90, 0, 18, 70, 31,
+			56, 10, 68, 120, 10, 37, 50, 47, 36, 51, 108, 50, 36, 47, 0, 14, 68, 29, 230, 95, 120, 39, 55, 10, 35, 65, 35, 55, 0, 18,
+			70, 29, 19, 226, 72, 129, 224, 39, 51, 72, 40, 88, 35, 71, 108, 50, 0, 16, 70, 29, 18, 51, 40, 119, 128, 39, 51, 71, 37, 47,
+			108, 55, 0, 0, 16, 69, 192, 119, 147, 194, 16, 49, 108, 55, 36, 89, 49, 36, 12, 0, 19, 70, 185, 232, 176, 32, 114, 0, 76, 36,
+			55, 39, 84, 49, 35, 71, 108, 71, 0, 15, 69, 185, 50, 34, 128, 240, 76, 35, 89, 71, 40, 50, 72, 0, 17, 68, 124, 168, 74, 192,
+			65, 39, 47, 35, 107, 35, 47, 47, 36, 49, 0, 17, 68, 124, 162, 19, 124, 65, 39, 47, 36, 71, 35, 89, 89, 36, 65, 0, 8, 66,
+			77, 48, 89, 39, 89, 0, 18, 70, 69, 180, 71, 128, 247, 192, 51, 36, 83, 51, 108, 50, 72, 39, 65, 0, 8, 66, 69, 48, 51, 39,
+			89, 0, 14, 69, 68, 124, 199, 128, 240, 51, 108, 57, 108, 50, 72, 0, 16, 69, 61, 50, 136, 128, 240, 72, 35, 89, 47, 71, 35, 50,
+			72, 0, 15, 69, 35, 56, 32, 62, 16, 71, 37, 50, 35, 50, 72, 36, 0, 17, 69, 33, 20, 199, 128, 240, 71, 36, 51, 36, 89, 108,
+			50, 35, 72, 0, 0, 12, 67, 192, 118, 144, 49, 108, 104, 17, 35, 88, 0, 12, 67, 125, 234, 243, 65, 36, 6, 55, 55, 37, 0, 8,
+			66, 125, 64, 65, 36, 91, 0, 17, 69, 125, 50, 153, 125, 224, 65, 39, 89, 47, 35, 19, 65, 35, 55, 0, 17, 70, 109, 24, 147, 28,
+			226, 128, 83, 39, 51, 40, 89, 108, 101, 47, 0, 10, 67, 81, 18, 0, 91, 39, 51, 71, 0, 11, 67, 69, 114, 0, 51, 39, 47, 35,
+			71, 0, 8, 66, 61, 64, 72, 39, 91, 0, 23, 72, 48, 241, 199, 108, 161, 207, 199, 48, 75, 39, 72, 108, 39, 83, 47, 108, 72, 36,
+			81, 37, 0, 12, 67, 42, 37, 115, 47, 39, 89, 89, 37, 57, 0, 16, 69, 33, 24, 176, 77, 224, 71, 39, 51, 40, 49, 89, 36, 55,
+			0, 21, 71, 30, 2, 161, 31, 50, 135, 128, 36, 50, 47, 36, 107, 108, 57, 36, 47, 108, 50, 0, 10, 67, 29, 55, 162, 36, 89, 55,
+			39, 0, 19, 66, 133, 64, 107, 36, 75, 51, 37, 57, 36, 9, 91, 35, 65, 89, 37, 0, 46, 0, 17, 70, 197, 28, 210, 30, 3, 192,
+			81, 39, 51, 37, 88, 108, 50, 72, 0, 16, 70, 184, 116, 76, 206, 12, 64, 76, 108, 51, 75, 37, 50, 81, 0, 17, 70, 183, 52, 71,
+			34, 3, 192, 48, 37, 51, 108, 71, 35, 50, 72, 0, 11, 67, 126, 36, 192, 6, 65, 39, 12, 89, 0, 15, 67, 125, 151, 17, 65, 39,
+			104, 17, 35, 19, 12, 35, 51, 0, 14, 67, 125, 51, 145, 65, 39, 89, 35, 101, 101, 35, 51, 0, 14, 67, 124, 242, 17, 65, 39, 72,
+			35, 71, 71, 36, 51, 0, 12, 67, 124, 226, 149, 65, 39, 101, 47, 35, 89, 0, 14, 67, 124, 133, 17, 65, 39, 71, 35, 91, 91, 36,
+			51, 0, 14, 67, 113, 23, 17, 104, 17, 36, 51, 104, 17, 36, 51, 0, 17, 70, 109, 24, 146, 30, 3, 192, 83, 39, 51, 40, 88, 108,
+			50, 72, 0, 14, 69, 108, 117, 51, 77, 240, 83, 108, 91, 37, 89, 65, 0, 15, 68, 61, 50, 142, 92, 72, 35, 89, 47, 101, 35, 47,
+			47, 0, 20, 71, 48, 241, 199, 108, 161, 207, 132, 75, 39, 72, 108, 39, 83, 47, 108, 72, 36, 0, 12, 67, 30, 2, 17, 35, 50, 71,
+			39, 51, 35, 0, 18, 70, 28, 136, 147, 121, 248, 64, 35, 71, 40, 89, 35, 55, 35, 65, 36, 0, 16, 70, 10, 3, 209, 139, 51, 192,
+			108, 50, 72, 51, 39, 57, 72, 0, 9, 66, 133, 16, 107, 35, 51, 0, 76, 0, 14, 68, 197, 72, 49, 204, 81, 39, 91, 50, 36, 81,
+			37, 0, 13, 68, 125, 232, 143, 204, 65, 36, 55, 39, 72, 37, 0, 15, 69, 84, 115, 72, 30, 0, 89, 108, 107, 36, 71, 108, 50, 0,
+			19, 70, 41, 23, 226, 79, 54, 224, 47, 36, 51, 65, 39, 89, 37, 83, 39, 50, 0, 10, 67, 35, 56, 128, 71, 37, 57, 39, 0, 13,
+			68, 8, 139, 78, 80, 108, 71, 48, 35, 101, 91, 0, 0, 13, 68, 132, 119, 138, 68, 107, 108, 55, 47, 36, 51, 0, 15, 68, 125, 74,
+			206, 84, 65, 39, 91, 35, 101, 101, 35, 89, 0, 14, 68, 124, 129, 212, 68, 65, 39, 71, 108, 91, 36, 51, 0, 21, 71, 72, 124, 207,
+			29, 232, 149, 108, 88, 108, 57, 36, 72, 39, 55, 84, 35, 89, 83, 0, 17, 70, 70, 44, 199, 32, 118, 192, 51, 39, 84, 57, 108, 71,
+			108, 83, 0, 15, 68, 41, 244, 206, 68, 47, 35, 65, 35, 89, 101, 39, 51, 0, 15, 68, 40, 131, 138, 68, 47, 35, 71, 35, 101, 47,
+			39, 51, 0, 15, 69, 32, 245, 7, 129, 48, 71, 35, 72, 91, 108, 50, 89, 0, 0, 11, 67, 193, 20, 243, 49, 39, 51, 89, 37, 0,
+			11, 67, 184, 119, 148, 76, 108, 55, 36, 91, 0, 9, 67, 182, 35, 128, 48, 39, 101, 0, 11, 67, 181, 66, 128, 48, 6, 39, 91, 47,
+			0, 16, 69, 125, 50, 143, 103, 48, 65, 39, 89, 47, 35, 72, 19, 37, 0, 10, 67, 60, 226, 128, 72, 39, 101, 47, 0, 13, 67, 41,
+			70, 243, 47, 35, 91, 35, 83, 83, 37, 0, 12, 67, 32, 248, 115, 71, 36, 72, 36, 107, 37, 0, 9, 67, 28, 226, 128, 39, 101, 47,
+			0, 0, 12, 67, 198, 226, 17, 81, 35, 76, 71, 39, 51, 0, 18, 70, 194, 6, 209, 30, 4, 192, 49, 39, 50, 83, 36, 51, 108, 50,
+			89, 0, 11, 67, 194, 2, 145, 49, 39, 50, 47, 51, 0, 14, 69, 182, 43, 115, 41, 16, 48, 39, 48, 37, 47, 51, 0, 19, 70, 181,
+			18, 147, 40, 120, 0, 48, 39, 51, 39, 47, 36, 89, 47, 108, 50, 0, 12, 67, 134, 242, 17, 107, 39, 90, 35, 71, 51, 0, 17, 70,
+			124, 116, 112, 79, 52, 159, 65, 108, 51, 49, 89, 37, 88, 65, 0, 17, 70, 109, 232, 145, 30, 4, 192, 83, 36, 55, 39, 51, 108, 50,
+			89, 0, 11, 67, 80, 114, 17, 91, 108, 71, 39, 51, 0, 17, 70, 78, 36, 160, 32, 120, 0, 89, 40, 88, 35, 50, 71, 108, 50, 0,
+			15, 69, 77, 18, 179, 41, 16, 89, 35, 51, 47, 37, 47, 51, 0, 11, 67, 53, 247, 0, 107, 39, 65, 104, 17, 0, 11, 67, 49, 163,
+			192, 75, 39, 104, 17, 72, 0, 18, 70, 41, 28, 240, 136, 129, 219, 47, 36, 51, 37, 49, 39, 71, 108, 83, 0, 21, 71, 32, 119, 159,
+			128, 117, 91, 132, 71, 36, 55, 65, 39, 50, 108, 89, 36, 83, 36, 0, 17, 70, 29, 228, 77, 124, 120, 0, 35, 51, 51, 35, 107, 65,
+			108, 50, 0, 0, 9, 67, 206, 40, 0, 57, 39, 50, 0, 14, 68, 197, 44, 224, 80, 81, 39, 88, 37, 50, 36, 91, 0, 12, 67, 193,
+			24, 10, 49, 39, 51, 50, 36, 47, 0, 16, 70, 183, 52, 71, 83, 12, 192, 48, 37, 51, 108, 91, 49, 37, 0, 14, 68, 181, 20, 202,
+			136, 48, 35, 51, 35, 89, 47, 40, 0, 12, 67, 121, 152, 10, 55, 35, 19, 50, 35, 47, 0, 16, 67, 81, 183, 10, 91, 35, 83, 36,
+			104, 17, 104, 17, 35, 47, 0, 26, 74, 42, 34, 135, 123, 50, 135, 71, 52, 202, 204, 47, 39, 47, 108, 55, 37, 47, 108, 51, 37, 89,
+			47, 37, 0, 13, 68, 41, 72, 179, 80, 47, 35, 91, 84, 37, 91, 0, 14, 68, 41, 24, 10, 136, 47, 39, 51, 36, 50, 47, 39, 0,
+			13, 67, 34, 39, 10, 71, 36, 84, 35, 104, 17, 47, 0, 14, 68, 33, 24, 31, 204, 71, 35, 51, 50, 36, 65, 37, 0, 17, 70, 29,
+			50, 155, 30, 8, 128, 36, 89, 47, 36, 83, 108, 50, 39, 0, 0, 18, 70, 193, 24, 34, 124, 164, 64, 49, 39, 51, 50, 39, 65, 36,
+			47, 51, 0, 17, 70, 192, 116, 71, 192, 164, 64, 49, 108, 51, 108, 49, 47, 36, 51, 0, 11, 67, 182, 37, 15, 48, 40, 91, 35, 72,
+			0, 18, 70, 181, 20, 237, 137, 236, 211, 48, 36, 51, 89, 48, 39, 55, 37, 89, 0, 19, 70, 109, 232, 145, 76, 120, 19, 83, 36, 55,
+			39, 51, 36, 89, 108, 50, 89, 0, 20, 70, 109, 54, 209, 76, 120, 19, 83, 39, 89, 83, 39, 51, 36, 89, 108, 50, 89, 0, 10, 67,
+			83, 54, 64, 91, 36, 57, 19, 0, 14, 68, 40, 231, 200, 68, 47, 39, 101, 65, 71, 35, 51, 0, 19, 70, 32, 124, 211, 129, 196, 64,
+			71, 108, 57, 89, 39, 50, 104, 17, 39, 51, 0, 13, 68, 29, 20, 136, 68, 35, 51, 88, 71, 35, 51, 0, 18, 70, 28, 168, 147, 70,
+			44, 211, 39, 47, 39, 89, 36, 51, 84, 37, 89, 0, 18, 70, 9, 251, 81, 124, 164, 64, 108, 65, 48, 36, 51, 65, 36, 47, 51, 0,
+			0, 14, 68, 197, 241, 212, 40, 6, 81, 39, 65, 108, 91, 47, 0, 14, 68, 193, 177, 222, 40, 49, 36, 83, 108, 55, 35, 47, 0, 11,
+			67, 193, 66, 128, 49, 6, 39, 91, 47, 0, 14, 68, 193, 49, 222, 40, 49, 36, 89, 108, 55, 35, 47, 0, 14, 68, 89, 241, 224, 40,
+			88, 36, 65, 108, 50, 35, 47, 0, 11, 67, 44, 124, 200, 89, 108, 19, 36, 71, 0, 13, 68, 30, 17, 224, 40, 36, 107, 108, 50, 35,
+			47, 0, 11, 67, 29, 245, 8, 36, 65, 91, 35, 71, 0, 18, 70, 29, 59, 81, 30, 2, 162, 36, 89, 48, 36, 51, 108, 50, 47, 39,
+			0, 14, 69, 9, 28, 202, 127, 48, 108, 51, 37, 47, 65, 37, 0, 0, 14, 69, 192, 119, 179, 33, 16, 49, 108, 55, 37, 71, 51, 0,
+			13, 68, 192, 119, 136, 60, 49, 108, 55, 71, 39, 72, 0, 12, 67, 186, 215, 0, 76, 39, 48, 39, 104, 17, 0, 22, 72, 181, 24, 138,
+			138, 215, 135, 77, 240, 48, 39, 51, 47, 39, 48, 36, 55, 108, 89, 65, 0, 19, 70, 133, 236, 240, 138, 210, 145, 107, 36, 55, 37, 49,
+			40, 48, 47, 36, 51, 0, 12, 67, 130, 35, 192, 6, 50, 35, 84, 35, 72, 0, 16, 69, 108, 168, 159, 41, 16, 83, 39, 47, 39, 65,
+			36, 47, 51, 0, 15, 68, 78, 216, 72, 60, 89, 36, 48, 35, 107, 71, 39, 72, 0, 19, 70, 61, 19, 224, 31, 2, 145, 72, 35, 51,
+			72, 50, 108, 49, 47, 35, 51, 0, 20, 70, 59, 49, 209, 186, 2, 17, 101, 37, 57, 108, 51, 76, 35, 65, 71, 35, 51, 0, 11, 67,
+			42, 211, 192, 47, 35, 48, 35, 72, 0, 11, 67, 42, 12, 240, 47, 39, 50, 37, 49, 0, 10, 67, 58, 35, 192, 101, 39, 72, 0, 76,
+			0, 13, 67, 197, 5, 10, 81, 39, 6, 88, 35, 91, 47, 0, 15, 69, 194, 33, 209, 40, 160, 49, 40, 108, 51, 47, 36, 47, 0, 18,
+			70, 131, 56, 140, 69, 60, 192, 50, 37, 57, 40, 75, 36, 51, 89, 37, 0, 17, 69, 125, 177, 209, 112, 160, 65, 39, 83, 108, 51, 36,
+			81, 35, 47, 0, 16, 68, 124, 244, 83, 200, 65, 35, 72, 51, 36, 89, 36, 57, 36, 0, 18, 69, 124, 68, 211, 30, 0, 65, 39, 19,
+			35, 89, 89, 36, 89, 108, 50, 0, 11, 67, 83, 8, 0, 91, 36, 49, 35, 50, 0, 13, 67, 69, 162, 10, 51, 36, 104, 17, 71, 35,
+			47, 0, 16, 69, 69, 44, 207, 128, 160, 51, 36, 88, 37, 72, 36, 50, 47, 0, 14, 69, 63, 54, 199, 120, 160, 72, 37, 83, 108, 55,
+			47, 0, 18, 70, 41, 28, 51, 63, 28, 192, 47, 35, 51, 49, 37, 72, 36, 81, 37, 0, 18, 70, 41, 21, 51, 63, 28, 192, 47, 39,
+			51, 91, 37, 72, 36, 81, 37, 0, 15, 69, 29, 86, 225, 30, 0, 36, 89, 83, 35, 107, 108, 50, 0, 14, 68, 29, 28, 240, 200, 35,
+			51, 37, 49, 36, 57, 36, 0, 0, 18, 70, 198, 36, 79, 56, 164, 64, 81, 40, 51, 72, 39, 101, 47, 35, 51, 0, 12, 67, 198, 3,
+			15, 81, 39, 50, 75, 35, 72, 0, 12, 67, 194, 3, 15, 49, 39, 50, 75, 36, 72, 0, 12, 67, 130, 24, 15, 50, 35, 107, 35, 50,
+			72, 0, 19, 70, 125, 49, 219, 68, 132, 64, 65, 39, 89, 108, 83, 36, 51, 71, 35, 51, 0, 11, 67, 124, 204, 207, 65, 35, 75, 37,
+			72, 0, 17, 68, 105, 230, 158, 192, 104, 17, 36, 55, 104, 17, 36, 55, 35, 49, 0, 10, 67, 71, 54, 64, 51, 36, 57, 19, 0, 12,
+			67, 62, 24, 15, 72, 35, 107, 35, 50, 72, 0, 29, 74, 48, 252, 207, 29, 225, 211, 40, 227, 199, 124, 75, 35, 72, 37, 72, 39, 55,
+			19, 36, 89, 47, 36, 101, 72, 108, 65, 0, 17, 70, 30, 210, 162, 124, 164, 64, 39, 48, 47, 39, 65, 36, 47, 51, 0, 16, 69, 29,
+			18, 148, 32, 240, 35, 51, 47, 36, 91, 71, 39, 72, 0, 0, 18, 70, 193, 225, 209, 206, 2, 128, 49, 36, 55, 108, 51, 37, 50, 36,
+			47, 0, 11, 67, 192, 162, 0, 49, 39, 47, 39, 71, 0, 19, 70, 120, 124, 202, 128, 120, 115, 55, 108, 57, 35, 47, 35, 50, 108, 107,
+			37, 0, 12, 67, 113, 235, 64, 104, 17, 39, 55, 39, 48, 0, 17, 70, 109, 24, 145, 204, 226, 128, 83, 39, 51, 40, 51, 37, 101, 47,
+			0, 18, 70, 83, 52, 112, 120, 120, 115, 91, 37, 51, 49, 39, 55, 108, 107, 37, 0, 16, 69, 10, 3, 7, 128, 128, 6, 108, 50, 75,
+			108, 50, 36, 71, 0, 0, 13, 68, 198, 3, 51, 60, 81, 39, 50, 75, 37, 72, 0, 14, 68, 194, 3, 224, 60, 49, 35, 50, 72, 35,
+			50, 72, 0, 13, 68, 183, 56, 160, 196, 48, 37, 57, 40, 50, 81, 0, 14, 68, 129, 241, 243, 60, 50, 35, 65, 108, 57, 35, 72, 0,
+			14, 68, 120, 131, 160, 60, 55, 35, 71, 101, 35, 50, 72, 0, 19, 70, 109, 28, 223, 137, 28, 0, 83, 36, 51, 36, 57, 65, 84, 39,
+			51, 49, 0, 17, 70, 79, 52, 202, 127, 60, 0, 89, 37, 89, 47, 36, 65, 37, 49, 0, 13, 68, 68, 60, 224, 60, 51, 35, 57, 35,
+			50, 72, 0, 14, 68, 62, 33, 224, 60, 72, 35, 84, 108, 50, 35, 72, 0, 15, 68, 35, 54, 202, 60, 71, 37, 57, 39, 83, 47, 35,
+			72, 0, 13, 68, 30, 36, 96, 196, 39, 12, 51, 35, 50, 81, 0, 0, 11, 67, 194, 220, 192, 7, 49, 39, 48, 37, 0, 18, 69, 126,
+			36, 211, 30, 0, 65, 39, 19, 35, 89, 89, 36, 89, 108, 50, 0, 10, 67, 81, 28, 0, 91, 36, 51, 49, 0, 17, 69, 77, 33, 209,
+			206, 0, 89, 36, 88, 108, 51, 37, 57, 35, 50, 0, 18, 70, 32, 115, 224, 196, 117, 10, 71, 108, 72, 50, 36, 81, 108, 91, 47, 0,
+			14, 69, 30, 3, 226, 56, 160, 35, 50, 72, 40, 101, 47, 0, 20, 71, 28, 216, 135, 122, 212, 83, 204, 35, 107, 84, 108, 55, 48, 39,
+			51, 89, 37, 0, 0, 16, 69, 197, 36, 71, 128, 240, 81, 39, 88, 35, 51, 108, 50, 72, 0, 16, 69, 197, 4, 71, 128, 240, 81, 39,
+			88, 35, 51, 108, 50, 72, 0, 14, 69, 183, 59, 162, 128, 240, 48, 37, 76, 40, 50, 72, 0, 11, 67, 183, 51, 199, 48, 36, 57, 72,
+			108, 0, 16, 69, 130, 44, 211, 128, 240, 50, 36, 84, 37, 89, 35, 50, 72, 0, 11, 67, 87, 51, 199, 89, 36, 57, 72, 108, 0, 17,
+			69, 83, 7, 200, 128, 240, 91, 36, 49, 35, 65, 71, 35, 50, 72, 0, 14, 68, 78, 33, 224, 52, 89, 35, 84, 108, 50, 36, 107, 0,
+			16, 69, 76, 119, 8, 128, 240, 89, 108, 104, 17, 71, 35, 50, 72, 0, 11, 67, 61, 226, 135, 72, 36, 55, 47, 108, 0, 18, 69, 33,
+			72, 34, 128, 240, 71, 36, 91, 36, 50, 35, 84, 35, 50, 72, 0, 0, 22, 71, 192, 118, 144, 42, 33, 222, 40, 49, 108, 104, 17, 35,
+			88, 47, 40, 108, 55, 36, 47, 0, 0, 10, 67, 207, 1, 192, 57, 36, 49, 108, 0, 18, 70, 197, 50, 145, 30, 3, 192, 81, 39, 89,
+			47, 35, 51, 108, 50, 72, 0, 20, 70, 183, 52, 95, 137, 8, 0, 48, 37, 51, 65, 39, 19, 35, 88, 88, 36, 50, 0, 13, 68, 125,
+			177, 213, 28, 65, 39, 83, 108, 89, 108, 0, 17, 70, 82, 1, 211, 30, 3, 192, 91, 36, 50, 108, 89, 108, 50, 72, 0, 18, 70, 62,
+			40, 19, 42, 3, 192, 72, 40, 50, 36, 89, 47, 35, 50, 72, 0, 18, 70, 61, 18, 7, 75, 8, 0, 72, 35, 51, 71, 108, 88, 49,
+			39, 50, 0, 11, 67, 57, 227, 0, 101, 35, 55, 35, 75, 0, 12, 2, 195, 151, 88, 35, 51, 71, 72, 35, 51, 0, 0, 11, 67, 192,
+			172, 0, 49, 39, 47, 35, 49, 0, 9, 66, 125, 160, 65, 39, 104, 17, 0, 22, 71, 110, 39, 7, 121, 145, 207, 200, 83, 39, 12, 104,
+			17, 39, 55, 108, 72, 36, 57, 36, 0, 14, 68, 109, 24, 49, 204, 83, 35, 51, 35, 50, 81, 37, 0, 23, 73, 60, 116, 202, 31, 56,
+			155, 79, 12, 192, 72, 108, 89, 47, 108, 57, 39, 83, 89, 49, 37, 0, 11, 67, 53, 124, 192, 107, 39, 47, 47, 37, 0, 15, 69, 34,
+			11, 226, 206, 0, 71, 35, 50, 90, 39, 36, 50, 0, 0, 11, 67, 136, 252, 7, 84, 39, 72, 49, 108, 0, 10, 67, 126, 40, 7, 65,
+			39, 50, 108, 0, 14, 67, 125, 198, 199, 65, 39, 104, 17, 35, 83, 83, 108, 0, 11, 67, 125, 35, 199, 65, 35, 88, 72, 108, 0, 16,
+			69, 124, 229, 98, 84, 112, 65, 35, 101, 89, 40, 89, 35, 50, 0, 18, 69, 112, 118, 79, 40, 112, 104, 17, 108, 19, 36, 72, 35, 47,
+			35, 50, 0, 12, 67, 109, 83, 71, 83, 39, 89, 35, 107, 108, 0, 26, 73, 29, 236, 10, 70, 38, 243, 120, 164, 64, 36, 55, 36, 49,
+			47, 36, 51, 39, 83, 37, 55, 47, 36, 51, 0, 18, 70, 29, 60, 51, 43, 56, 49, 36, 89, 49, 36, 57, 47, 37, 50, 81, 0, 0,
+			14, 69, 62, 34, 25, 63, 48, 72, 39, 71, 39, 72, 37, 0, 11, 67, 61, 236, 34, 72, 36, 55, 49, 39, 0, 11, 67, 61, 50, 128,
+			6, 72, 35, 89, 47, 0, 10, 67, 29, 50, 128, 6, 35, 89, 47, 0, 0, 17, 70, 130, 37, 17, 136, 120, 0, 50, 40, 91, 36, 51,
+			84, 108, 50, 0, 9, 67, 127, 60, 64, 65, 37, 81, 0, 17, 68, 125, 55, 159, 28, 65, 39, 89, 35, 55, 55, 35, 65, 35, 50, 0,
+			16, 68, 124, 76, 15, 28, 65, 39, 35, 49, 49, 35, 72, 35, 50, 0, 15, 68, 109, 116, 74, 28, 83, 36, 47, 51, 35, 47, 35, 50,
+			0, 14, 68, 101, 252, 220, 28, 35, 65, 37, 104, 17, 35, 50, 0, 12, 67, 100, 248, 64, 6, 36, 72, 72, 36, 12, 0, 11, 67, 74,
+			19, 192, 6, 88, 39, 107, 72, 0, 14, 68, 73, 236, 206, 28, 88, 39, 55, 36, 57, 101, 108, 0, 11, 67, 62, 19, 192, 72, 35, 107,
+			35, 72, 0, 17, 70, 29, 19, 211, 40, 120, 0, 35, 51, 72, 36, 89, 47, 108, 50, 0, 0, 11, 67, 205, 241, 224, 57, 36, 65, 108,
+			50, 0, 14, 67, 204, 115, 92, 57, 108, 107, 35, 104, 17, 104, 17, 0, 13, 68, 193, 19, 240, 136, 49, 39, 51, 72, 49, 40, 0, 19,
+			70, 129, 195, 243, 131, 28, 192, 50, 35, 104, 17, 72, 37, 50, 36, 81, 37, 0, 12, 67, 128, 115, 92, 50, 108, 107, 35, 104, 17, 0,
+			11, 67, 124, 247, 128, 65, 39, 72, 36, 55, 0, 14, 68, 110, 12, 220, 204, 83, 36, 50, 37, 104, 17, 37, 0, 11, 67, 101, 241, 224,
+			39, 65, 65, 108, 50, 0, 10, 67, 83, 52, 202, 91, 37, 89, 47, 0, 11, 67, 83, 7, 128, 6, 91, 36, 49, 55, 0, 11, 67, 72,
+			215, 128, 88, 39, 107, 35, 55, 0, 15, 68, 70, 40, 28, 204, 51, 39, 12, 50, 35, 104, 17, 37, 0, 19, 70, 60, 226, 145, 101, 248,
+			128, 72, 39, 101, 47, 35, 51, 35, 12, 65, 40, 0, 13, 67, 57, 231, 10, 101, 36, 55, 104, 17, 35, 47, 0, 12, 68, 56, 124, 18,
+			204, 101, 108, 49, 88, 37, 0, 11, 67, 35, 7, 128, 71, 36, 49, 39, 55, 0, 12, 68, 31, 2, 135, 136, 39, 49, 47, 108, 84, 0,
+			13, 68, 29, 184, 15, 204, 35, 83, 35, 50, 72, 37, 0, 11, 67, 29, 76, 32, 36, 91, 49, 35, 50, 0, 10, 67, 28, 161, 224, 36,
+			47, 108, 50, 0, 0, 11, 67, 183, 17, 225, 48, 36, 81, 108, 107, 0, 15, 69, 181, 225, 211, 124, 112, 48, 36, 55, 108, 89, 65, 108,
+			0, 16, 69, 125, 76, 30, 72, 112, 65, 39, 91, 49, 36, 55, 88, 108, 0, 16, 69, 112, 120, 34, 128, 112, 104, 17, 108, 50, 40, 50,
+			35, 50, 0, 11, 67, 100, 250, 225, 36, 72, 72, 36, 12, 0, 11, 67, 83, 7, 192, 91, 36, 49, 35, 65, 0, 13, 67, 80, 140, 33,
+			91, 35, 71, 35, 49, 36, 12, 0, 12, 67, 60, 138, 225, 72, 35, 71, 71, 36, 12, 0, 11, 67, 56, 246, 97, 101, 39, 72, 19, 36,
+			0, 10, 67, 29, 151, 192, 35, 19, 35, 65, 0, 16, 69, 29, 50, 154, 128, 112, 36, 89, 47, 36, 104, 17, 50, 108, 0, 7, 65, 192,
+			49, 108, 83, 0, 0, 13, 68, 197, 28, 199, 128, 81, 36, 51, 57, 108, 50, 0, 16, 69, 186, 3, 202, 131, 48, 76, 35, 50, 72, 47,
+			39, 50, 37, 0, 18, 70, 183, 52, 71, 53, 243, 243, 48, 37, 51, 35, 107, 65, 35, 72, 37, 0, 14, 68, 181, 27, 83, 40, 48, 39,
+			51, 48, 39, 91, 47, 0, 17, 69, 181, 23, 51, 187, 48, 48, 35, 51, 104, 17, 36, 57, 76, 37, 0, 11, 67, 137, 81, 222, 84, 36,
+			89, 108, 55, 0, 13, 68, 129, 60, 199, 128, 50, 36, 89, 57, 108, 50, 0, 17, 69, 54, 37, 94, 199, 48, 107, 39, 12, 89, 36, 55,
+			36, 81, 37, 0, 15, 69, 48, 118, 17, 111, 48, 75, 108, 88, 35, 51, 83, 37, 0, 15, 68, 41, 243, 235, 128, 47, 35, 65, 35, 72,
+			72, 39, 50, 0, 16, 69, 33, 17, 205, 43, 48, 71, 36, 51, 108, 107, 35, 47, 37, 0, 16, 69, 32, 246, 225, 127, 48, 71, 35, 72,
+			83, 35, 107, 65, 37, 0, 21, 70, 32, 244, 222, 205, 204, 115, 71, 35, 72, 89, 35, 55, 37, 104, 17, 36, 81, 37, 0, 13, 68, 29,
+			76, 27, 40, 36, 91, 49, 39, 83, 47, 0, 15, 69, 11, 1, 207, 127, 48, 108, 49, 108, 72, 36, 65, 37, 0, 0, 12, 67, 193, 56,
+			64, 49, 39, 89, 89, 36, 12, 0, 11, 67, 192, 241, 223, 49, 39, 72, 108, 65, 0, 19, 70, 126, 24, 15, 76, 120, 0, 65, 39, 107,
+			35, 50, 72, 36, 89, 108, 50, 0, 14, 67, 124, 165, 91, 65, 39, 47, 47, 35, 89, 36, 83, 0, 12, 67, 105, 225, 223, 104, 17, 39,
+			55, 108, 65, 0, 13, 67, 104, 248, 64, 104, 17, 39, 72, 72, 36, 12, 0, 12, 67, 86, 42, 223, 89, 36, 84, 84, 39, 65, 0, 10,
+			67, 86, 3, 0, 89, 36, 50, 75, 0, 11, 67, 84, 216, 64, 89, 36, 107, 36, 12, 0, 13, 67, 78, 42, 223, 6, 89, 36, 84, 84,
+			39, 65, 0, 17, 70, 70, 36, 136, 132, 120, 0, 51, 40, 88, 71, 35, 107, 108, 50, 0, 16, 68, 42, 35, 43, 132, 6, 47, 35, 84,
+			35, 75, 75, 39, 107, 0, 12, 67, 42, 33, 223, 47, 39, 12, 19, 35, 65, 0, 18, 70, 29, 146, 145, 29, 97, 192, 36, 19, 47, 36,
+			51, 108, 88, 35, 50, 0, 18, 70, 28, 226, 149, 29, 81, 192, 36, 101, 47, 36, 89, 108, 89, 35, 50, 0, 12, 67, 32, 248, 64, 71,
+			36, 72, 35, 107, 0, 48, 12, 67, 32, 248, 64, 71, 36, 72, 36, 12, 0, 46, 0, 11, 67, 197, 55, 128, 81, 39, 89, 35, 55, 0,
+			11, 67, 193, 55, 128, 49, 36, 89, 36, 55, 0, 17, 70, 186, 3, 200, 100, 252, 192, 76, 35, 50, 72, 71, 39, 72, 37, 0, 12, 67,
+			185, 241, 220, 76, 39, 65, 108, 104, 17, 0, 13, 69, 184, 124, 243, 30, 0, 76, 108, 37, 57, 108, 0, 16, 69, 181, 12, 209, 108, 160,
+			48, 35, 88, 37, 51, 39, 83, 47, 0, 12, 67, 133, 252, 96, 107, 35, 65, 81, 36, 50, 0, 14, 69, 130, 34, 145, 138, 0, 50, 39,
+			47, 51, 39, 50, 0, 14, 68, 125, 17, 205, 120, 65, 35, 51, 108, 107, 36, 55, 0, 12, 67, 124, 212, 224, 65, 39, 107, 89, 36, 50,
+			0, 14, 69, 124, 116, 83, 30, 0, 65, 108, 51, 89, 108, 50, 0, 11, 67, 111, 7, 128, 83, 39, 49, 39, 55, 0, 12, 67, 85, 241,
+			220, 89, 39, 65, 108, 104, 17, 0, 11, 67, 83, 54, 224, 91, 37, 83, 39, 50, 0, 12, 67, 82, 179, 202, 91, 36, 72, 72, 35, 47,
+			0, 12, 67, 77, 241, 220, 89, 39, 65, 108, 104, 17, 0, 15, 69, 68, 39, 179, 76, 160, 51, 36, 108, 55, 37, 89, 47, 0, 16, 69,
+			63, 52, 224, 128, 160, 72, 37, 89, 39, 50, 36, 50, 47, 0, 16, 69, 63, 20, 83, 30, 0, 72, 36, 81, 35, 51, 89, 108, 50, 0,
+			13, 68, 62, 2, 7, 120, 72, 39, 50, 71, 108, 55, 0, 12, 67, 34, 23, 224, 71, 35, 107, 65, 35, 50, 0, 12, 67, 33, 76, 32,
+			71, 36, 91, 49, 35, 50, 0, 11, 67, 32, 247, 128, 71, 35, 72, 35, 55, 0, 11, 67, 32, 117, 224, 71, 108, 47, 36, 50, 0, 10,
+			67, 31, 55, 224, 37, 65, 36, 50, 0, 13, 68, 29, 166, 199, 120, 36, 104, 17, 83, 108, 55, 0, 13, 68, 29, 70, 135, 120, 36, 91,
+			104, 17, 108, 55, 0, 11, 68, 28, 136, 135, 120, 35, 71, 39, 55, 0, 11, 67, 11, 54, 224, 108, 57, 83, 39, 50, 0, 16, 70, 10,
+			2, 145, 138, 220, 192, 108, 50, 47, 51, 39, 48, 37, 0, 8, 65, 64, 6, 88, 108, 55, 0, 0, 17, 69, 186, 17, 209, 62, 16, 6,
+			76, 108, 107, 108, 51, 72, 35, 107, 0, 18, 70, 136, 119, 160, 43, 56, 7, 84, 108, 55, 36, 50, 47, 37, 50, 108, 0, 11, 67, 131,
+			23, 192, 50, 35, 81, 35, 65, 0, 15, 68, 125, 180, 107, 52, 65, 39, 83, 35, 51, 51, 35, 107, 0, 17, 68, 124, 167, 211, 192, 65,
+			39, 47, 36, 65, 35, 89, 89, 36, 49, 0, 13, 68, 102, 33, 215, 108, 35, 84, 108, 47, 36, 83, 0, 12, 67, 59, 55, 225, 101, 36,
+			57, 65, 36, 12, 0, 10, 67, 55, 7, 192, 107, 39, 49, 65, 0, 13, 67, 49, 228, 225, 75, 35, 55, 35, 89, 36, 12, 0, 12, 67,
+			41, 24, 49, 47, 39, 51, 35, 50, 81, 0, 12, 67, 33, 76, 33, 71, 39, 91, 49, 36, 12, 0, 12, 68, 31, 50, 135, 124, 35, 57,
+			47, 108, 65, 0, 15, 69, 9, 17, 223, 198, 16, 108, 51, 108, 65, 81, 35, 107, 0, 0, 15, 68, 204, 229, 48, 128, 57, 35, 101, 91,
+			36, 49, 35, 50, 0, 12, 67, 193, 23, 222, 49, 35, 51, 65, 36, 55, 0, 13, 68, 136, 124, 31, 128, 84, 108, 49, 65, 35, 50, 0,
+			16, 68, 125, 72, 171, 112, 65, 39, 91, 35, 84, 84, 36, 104, 17, 0, 13, 68, 124, 116, 112, 40, 65, 108, 51, 49, 36, 47, 0, 14,
+			68, 100, 162, 7, 40, 6, 35, 47, 35, 71, 108, 47, 0, 14, 68, 68, 226, 176, 128, 51, 35, 101, 47, 49, 35, 50, 0, 15, 68, 40,
+			136, 113, 128, 47, 35, 71, 35, 107, 81, 36, 50, 0, 15, 68, 33, 21, 48, 128, 71, 35, 51, 91, 36, 49, 35, 50, 0, 15, 68, 32,
+			242, 14, 40, 71, 35, 72, 10, 71, 35, 101, 47, 0, 15, 69, 32, 119, 148, 193, 224, 71, 108, 55, 91, 36, 49, 55, 0, 18, 70, 32,
+			116, 243, 29, 50, 128, 71, 108, 89, 37, 57, 108, 89, 35, 47, 0, 11, 67, 29, 236, 30, 35, 55, 49, 39, 55, 0, 13, 68, 29, 50,
+			135, 40, 35, 89, 36, 47, 108, 47, 0, 15, 69, 29, 19, 226, 29, 224, 35, 51, 72, 35, 84, 108, 55, 0, 19, 70, 9, 193, 199, 53,
+			243, 243, 108, 104, 17, 108, 35, 107, 65, 35, 72, 37, 0, 14, 68, 9, 28, 49, 128, 108, 51, 49, 36, 81, 39, 50, 0, 0, 13, 68,
+			185, 28, 240, 132, 76, 36, 51, 37, 49, 36, 0, 14, 68, 185, 17, 240, 132, 76, 36, 51, 108, 10, 49, 36, 0, 11, 67, 181, 225, 240,
+			48, 36, 55, 108, 49, 0, 17, 70, 181, 18, 153, 60, 115, 192, 48, 39, 51, 47, 36, 72, 108, 72, 0, 14, 68, 133, 66, 149, 60, 107,
+			35, 91, 47, 89, 35, 72, 0, 11, 67, 128, 196, 192, 50, 35, 75, 36, 89, 0, 13, 68, 128, 119, 210, 60, 50, 108, 65, 88, 35, 72,
+			0, 16, 68, 126, 2, 156, 60, 65, 39, 50, 47, 35, 104, 17, 36, 72, 0, 17, 69, 125, 50, 150, 101, 176, 65, 39, 89, 47, 35, 88,
+			19, 35, 83, 0, 15, 68, 125, 26, 219, 132, 65, 39, 51, 35, 83, 83, 35, 107, 0, 15, 68, 112, 248, 159, 132, 104, 17, 39, 72, 72,
+			40, 65, 36, 0, 14, 68, 109, 24, 160, 60, 83, 35, 51, 84, 35, 50, 72, 0, 11, 67, 82, 39, 0, 91, 39, 12, 104, 17, 0, 13,
+			68, 82, 37, 48, 132, 91, 40, 91, 49, 36, 12, 0, 15, 68, 79, 4, 240, 132, 89, 36, 49, 89, 36, 49, 36, 12, 0, 17, 70, 61,
+			226, 14, 136, 120, 64, 72, 36, 55, 71, 36, 101, 108, 107, 0, 14, 68, 61, 21, 48, 132, 72, 39, 51, 39, 91, 49, 36, 0, 17, 70,
+			50, 12, 79, 204, 248, 64, 75, 35, 50, 81, 72, 37, 72, 36, 0, 14, 67, 40, 220, 31, 47, 35, 107, 35, 49, 49, 39, 65, 0, 19,
+			70, 33, 28, 82, 204, 248, 64, 71, 35, 51, 81, 39, 88, 37, 72, 36, 12, 0, 17, 70, 29, 50, 153, 60, 115, 192, 36, 89, 47, 36,
+			19, 72, 108, 72, 0, 13, 68, 29, 28, 240, 132, 35, 51, 37, 49, 36, 12, 0, 0, 15, 68, 204, 210, 159, 120, 57, 35, 107, 47, 35,
+			65, 36, 55, 0, 13, 68, 194, 35, 241, 120, 49, 40, 72, 81, 36, 55, 0, 19, 70, 180, 164, 98, 79, 49, 224, 48, 36, 47, 51, 39,
+			89, 37, 57, 108, 50, 0, 16, 69, 134, 36, 209, 30, 0, 107, 35, 84, 35, 89, 51, 108, 50, 0, 17, 70, 128, 120, 95, 58, 33, 224,
+			50, 108, 107, 35, 65, 101, 108, 50, 0, 20, 70, 33, 196, 71, 95, 49, 224, 71, 39, 104, 17, 51, 108, 47, 37, 57, 108, 50, 0, 14,
+			69, 10, 7, 135, 206, 0, 108, 50, 55, 108, 57, 50, 0, 0, 15, 69, 206, 36, 74, 126, 16, 57, 40, 51, 47, 65, 36, 12, 0, 10,
+			67, 192, 132, 64, 49, 36, 71, 51, 0, 15, 69, 192, 116, 72, 128, 240, 49, 108, 51, 71, 35, 50, 72, 0, 11, 67, 136, 132, 64, 84,
+			36, 71, 36, 51, 0, 11, 67, 128, 132, 64, 50, 35, 71, 35, 51, 0, 10, 67, 127, 60, 19, 65, 37, 49, 89, 0, 14, 69, 127, 51,
+			162, 128, 240, 65, 37, 101, 40, 50, 72, 0, 17, 69, 125, 193, 215, 102, 16, 65, 39, 104, 17, 108, 47, 36, 19, 36, 0, 17, 69, 83,
+			4, 78, 128, 240, 91, 36, 49, 35, 51, 101, 35, 50, 72, 0, 15, 69, 78, 36, 74, 126, 16, 89, 40, 51, 47, 65, 36, 12, 0, 15,
+			68, 61, 50, 176, 124, 72, 35, 89, 47, 36, 49, 35, 65, 0, 16, 69, 56, 241, 226, 128, 240, 101, 39, 72, 108, 84, 35, 50, 72, 0,
+			17, 69, 50, 2, 32, 62, 16, 57, 39, 50, 71, 35, 50, 72, 36, 12, 0, 12, 67, 41, 236, 19, 47, 36, 55, 36, 49, 89, 0, 14,
+			68, 41, 225, 215, 124, 47, 35, 55, 108, 47, 39, 65, 0, 20, 70, 34, 3, 209, 122, 12, 97, 71, 35, 50, 72, 35, 51, 55, 36, 50,
+			81, 36, 0, 18, 70, 29, 118, 199, 27, 58, 225, 36, 47, 83, 108, 37, 57, 57, 36, 12, 0, 10, 67, 28, 164, 64, 36, 47, 36, 51,
+			0, 0, 11, 67, 198, 33, 212, 81, 39, 84, 108, 91, 0, 22, 72, 186, 3, 223, 205, 236, 226, 131, 48, 76, 35, 50, 72, 65, 37, 55,
+			57, 40, 50, 37, 0, 19, 70, 184, 164, 96, 48, 114, 128, 76, 35, 47, 51, 36, 50, 36, 75, 108, 47, 0, 17, 70, 181, 24, 147, 40,
+			114, 128, 48, 39, 51, 39, 89, 47, 108, 47, 0, 13, 68, 124, 124, 224, 72, 65, 108, 57, 50, 36, 88, 0, 19, 70, 112, 129, 222, 48,
+			114, 128, 104, 17, 35, 71, 108, 55, 36, 75, 108, 47, 0, 21, 71, 109, 17, 224, 79, 52, 240, 128, 83, 36, 51, 108, 50, 89, 37, 89,
+			49, 35, 50, 0, 9, 66, 81, 64, 6, 91, 36, 91, 0, 10, 67, 69, 146, 0, 51, 39, 19, 71, 0, 17, 70, 56, 119, 149, 48, 114,
+			128, 101, 108, 55, 36, 89, 75, 108, 47, 0, 11, 67, 52, 170, 243, 107, 35, 47, 47, 108, 0, 19, 71, 29, 17, 224, 198, 34, 135, 128,
+			39, 51, 108, 50, 81, 40, 47, 108, 50, 0, 0, 16, 69, 204, 116, 143, 133, 240, 57, 108, 88, 72, 35, 107, 39, 65, 0, 19, 70, 186,
+			17, 209, 57, 120, 64, 76, 108, 107, 108, 51, 101, 35, 47, 47, 36, 0, 19, 70, 181, 24, 51, 70, 12, 64, 48, 39, 51, 50, 36, 57,
+			51, 35, 50, 81, 0, 18, 70, 181, 19, 199, 74, 3, 192, 48, 35, 51, 72, 108, 88, 35, 50, 72, 0, 10, 67, 139, 52, 192, 84, 39,
+			57, 89, 0, 11, 67, 134, 36, 192, 107, 35, 84, 35, 89, 0, 18, 69, 130, 36, 143, 133, 240, 6, 50, 40, 12, 88, 72, 35, 107, 39,
+			65, 0, 16, 67, 126, 39, 17, 65, 39, 84, 35, 104, 17, 104, 17, 35, 51, 0, 12, 67, 123, 52, 145, 55, 36, 57, 88, 36, 51, 0,
+			12, 67, 121, 242, 17, 55, 39, 65, 71, 35, 51, 0, 16, 69, 79, 52, 143, 133, 240, 89, 37, 88, 72, 35, 107, 39, 65, 0, 11, 67,
+			78, 212, 192, 89, 36, 48, 35, 89, 0, 20, 71, 77, 23, 199, 58, 36, 79, 132, 89, 35, 51, 65, 108, 101, 39, 51, 72, 36, 0, 12,
+			67, 60, 226, 145, 72, 39, 101, 47, 35, 51, 0, 10, 67, 40, 228, 192, 47, 39, 101, 89, 0, 19, 70, 34, 5, 51, 130, 3, 192, 71,
+			36, 50, 36, 91, 37, 50, 35, 50, 72, 0, 12, 67, 33, 35, 145, 71, 39, 88, 101, 35, 51, 0, 19, 70, 33, 20, 199, 130, 3, 192,
+			71, 36, 51, 36, 89, 108, 50, 35, 50, 72, 0, 14, 69, 32, 119, 151, 33, 144, 71, 36, 47, 47, 35, 71, 0, 16, 70, 30, 4, 226,
+			123, 56, 0, 35, 50, 89, 39, 55, 37, 50, 0, 0, 10, 67, 207, 12, 192, 57, 36, 49, 37, 0, 14, 69, 188, 119, 200, 138, 0, 90,
+			108, 65, 71, 39, 50, 0, 19, 71, 183, 52, 98, 180, 114, 135, 120, 48, 37, 51, 39, 48, 108, 47, 108, 55, 0, 13, 68, 183, 51, 199,
+			80, 48, 36, 57, 72, 108, 91, 0, 15, 69, 181, 28, 212, 30, 0, 48, 35, 51, 37, 91, 108, 50, 0, 15, 68, 181, 20, 202, 80, 48,
+			35, 51, 35, 89, 47, 36, 91, 0, 20, 70, 91, 49, 193, 29, 227, 92, 88, 37, 57, 39, 55, 107, 35, 104, 17, 104, 17, 0, 13, 68,
+			63, 51, 241, 204, 72, 37, 72, 36, 81, 37, 0, 16, 70, 29, 50, 179, 52, 117, 0, 36, 89, 47, 37, 107, 108, 91, 0, 10, 67, 82,
+			40, 0, 91, 40, 50, 0, 76, 0, 11, 67, 185, 225, 211, 76, 36, 55, 108, 89, 0, 12, 67, 129, 132, 64, 6, 50, 35, 88, 35, 51,
+			0, 14, 68, 125, 65, 204, 68, 65, 39, 91, 108, 75, 36, 51, 0, 11, 67, 124, 132, 64, 65, 35, 71, 35, 51, 0, 11, 67, 80, 164,
+			64, 91, 39, 47, 39, 51, 0, 15, 68, 79, 8, 15, 68, 89, 36, 49, 35, 50, 72, 35, 51, 0, 11, 67, 78, 209, 211, 89, 36, 48,
+			108, 89, 0, 14, 68, 70, 12, 72, 68, 51, 35, 50, 81, 71, 35, 51, 0, 16, 69, 70, 4, 199, 129, 48, 51, 39, 50, 36, 89, 108,
+			50, 89, 0, 19, 70, 34, 44, 209, 28, 215, 207, 71, 39, 57, 36, 51, 35, 107, 65, 35, 72, 0, 23, 72, 33, 225, 199, 76, 166, 199,
+			62, 16, 71, 36, 55, 108, 36, 89, 47, 36, 83, 108, 72, 36, 0, 10, 67, 32, 164, 64, 71, 39, 47, 51, 0, 13, 68, 32, 115, 200,
+			68, 71, 108, 72, 71, 39, 51, 0, 13, 68, 30, 33, 206, 68, 35, 84, 108, 101, 36, 51, 0, 18, 70, 29, 60, 7, 41, 232, 15, 36,
+			89, 49, 108, 47, 55, 35, 50, 72, 0, 0, 12, 67, 115, 52, 243, 104, 17, 36, 57, 89, 37, 0, 11, 67, 71, 52, 148, 51, 37, 88,
+			36, 91, 0, 14, 69, 30, 4, 115, 194, 32, 36, 50, 51, 37, 49, 39, 0, 0, 12, 67, 197, 50, 145, 81, 39, 89, 47, 35, 51, 0,
+			11, 67, 132, 115, 17, 107, 108, 75, 35, 51, 0, 23, 71, 131, 52, 98, 124, 212, 112, 132, 50, 37, 51, 40, 65, 39, 107, 35, 51, 51,
+			36, 49, 36, 0, 10, 67, 55, 50, 192, 107, 36, 57, 89, 0, 12, 67, 41, 50, 145, 47, 39, 89, 47, 36, 51, 0, 12, 67, 34, 18,
+			145, 71, 36, 107, 47, 35, 51, 0, 0, 14, 67, 207, 12, 128, 6, 57, 36, 49, 49, 36, 57, 36, 0, 11, 67, 186, 232, 0, 76, 36,
+			76, 36, 50, 0, 11, 67, 184, 248, 0, 76, 39, 72, 35, 50, 0, 15, 69, 132, 119, 162, 190, 0, 107, 108, 55, 39, 90, 36, 50, 0,
+			13, 68, 127, 51, 225, 204, 65, 37, 72, 35, 107, 37, 0, 14, 68, 127, 49, 223, 204, 65, 35, 57, 108, 65, 36, 57, 0, 9, 67, 82,
+			44, 0, 91, 39, 49, 0, 13, 68, 33, 230, 95, 204, 71, 35, 55, 35, 65, 37, 0, 17, 70, 29, 55, 162, 31, 12, 192, 36, 89, 55,
+			39, 84, 108, 49, 37, 0, 0, 11, 67, 181, 17, 241, 48, 36, 51, 108, 81, 0, 17, 70, 180, 116, 71, 124, 164, 64, 48, 108, 51, 108,
+			65, 36, 47, 51, 0, 15, 68, 131, 53, 48, 68, 50, 36, 57, 91, 36, 49, 35, 51, 0, 17, 70, 127, 55, 179, 138, 4, 64, 65, 37,
+			55, 57, 40, 50, 36, 51, 0, 13, 68, 80, 116, 111, 68, 91, 108, 51, 90, 36, 51, 0, 13, 68, 58, 40, 8, 68, 101, 40, 50, 71,
+			35, 51, 0, 11, 67, 57, 245, 0, 101, 35, 65, 36, 91, 0, 12, 68, 31, 56, 10, 68, 37, 50, 47, 36, 51, 0, 19, 71, 30, 220,
+			240, 137, 28, 211, 124, 36, 48, 37, 49, 40, 51, 37, 89, 65, 0, 13, 68, 29, 60, 7, 68, 19, 39, 89, 49, 108, 51, 0, 0, 15,
+			68, 207, 8, 156, 40, 57, 36, 49, 84, 35, 104, 17, 47, 0, 15, 69, 194, 2, 135, 195, 48, 49, 36, 50, 47, 108, 49, 37, 0, 13,
+			68, 182, 44, 224, 40, 48, 39, 57, 108, 50, 47, 0, 14, 67, 121, 199, 242, 55, 39, 104, 17, 65, 36, 57, 36, 0, 16, 68, 77, 24,
+			156, 40, 89, 35, 51, 36, 84, 35, 104, 17, 47, 0, 16, 69, 32, 115, 224, 113, 64, 71, 108, 72, 50, 35, 104, 17, 91, 0, 0, 20,
+			70, 193, 252, 211, 206, 40, 17, 49, 39, 65, 37, 89, 37, 57, 39, 50, 36, 51, 0, 16, 69, 193, 232, 12, 29, 16, 49, 35, 55, 35,
+			50, 75, 108, 51, 0, 16, 69, 193, 225, 211, 41, 16, 49, 36, 55, 108, 89, 47, 39, 51, 0, 15, 69, 193, 66, 176, 29, 16, 49, 36,
+			91, 47, 49, 108, 51, 0, 15, 69, 193, 19, 241, 29, 16, 49, 36, 51, 72, 81, 108, 51, 0, 15, 69, 181, 28, 224, 41, 16, 48, 51,
+			37, 50, 47, 36, 51, 0, 19, 70, 180, 120, 19, 206, 40, 17, 48, 108, 50, 89, 37, 57, 39, 50, 36, 51, 0, 14, 67, 125, 200, 25,
+			65, 39, 104, 17, 35, 50, 50, 35, 0, 15, 69, 79, 55, 160, 61, 16, 89, 37, 55, 35, 50, 72, 51, 0, 19, 70, 68, 115, 243, 137,
+			242, 145, 51, 108, 72, 37, 57, 39, 65, 36, 47, 51, 0, 15, 69, 33, 19, 200, 29, 16, 71, 39, 51, 72, 71, 108, 51, 0, 15, 69,
+			29, 28, 19, 41, 16, 39, 51, 49, 36, 89, 47, 51, 0, 15, 69, 28, 130, 176, 29, 16, 36, 71, 47, 36, 49, 108, 51, 0, 0, 15,
+			69, 192, 114, 179, 138, 0, 49, 108, 47, 37, 57, 39, 50, 0, 18, 69, 125, 33, 205, 124, 160, 65, 39, 88, 108, 6, 107, 36, 65, 35,
+			47, 0, 13, 67, 114, 42, 202, 104, 17, 39, 84, 84, 35, 47, 0, 11, 67, 62, 17, 202, 72, 36, 107, 108, 47, 0, 16, 68, 42, 36,
+			217, 200, 47, 39, 12, 89, 36, 19, 36, 57, 36, 0, 18, 70, 8, 247, 200, 69, 188, 192, 108, 72, 35, 65, 71, 35, 51, 83, 37, 0,
+			0, 19, 70, 197, 17, 224, 112, 244, 64, 81, 36, 51, 108, 50, 104, 17, 35, 72, 51, 0, 15, 69, 197, 17, 219, 207, 0, 81, 36, 51,
+			108, 83, 37, 49, 0, 18, 70, 131, 2, 10, 32, 116, 64, 50, 36, 49, 71, 35, 47, 71, 108, 51, 0, 15, 68, 124, 120, 156, 100, 65,
+			108, 84, 35, 104, 17, 35, 19, 0, 11, 67, 35, 56, 15, 71, 37, 50, 35, 72, 0, 13, 67, 33, 232, 15, 6, 71, 39, 55, 35, 50,
+			72, 0, 0, 13, 67, 181, 19, 242, 48, 35, 51, 72, 36, 57, 36, 0, 14, 67, 125, 236, 50, 65, 35, 55, 35, 49, 36, 57, 36, 0,
+			15, 68, 125, 76, 235, 40, 65, 35, 91, 37, 57, 57, 35, 47, 0, 15, 68, 124, 210, 43, 40, 65, 39, 107, 35, 71, 71, 35, 47, 0,
+			12, 67, 83, 8, 12, 91, 36, 49, 35, 50, 75, 0, 14, 68, 82, 19, 206, 40, 91, 35, 107, 72, 39, 101, 47, 0, 11, 67, 74, 17,
+			200, 88, 36, 107, 108, 71, 0, 13, 67, 34, 234, 242, 71, 35, 76, 76, 36, 57, 36, 0, 19, 70, 32, 119, 217, 69, 178, 128, 71, 108,
+			65, 35, 19, 51, 36, 83, 35, 47, 0, 17, 70, 31, 52, 74, 31, 4, 243, 36, 57, 51, 47, 108, 49, 89, 37, 0, 18, 70, 29, 18,
+			162, 62, 4, 243, 39, 51, 47, 39, 72, 36, 50, 89, 37, 0, 0, 13, 68, 193, 72, 160, 60, 49, 36, 91, 40, 50, 72, 0, 10, 67,
+			130, 17, 192, 50, 35, 107, 108, 0, 15, 68, 129, 72, 160, 60, 50, 35, 91, 35, 84, 35, 50, 72, 0, 12, 67, 83, 1, 240, 91, 35,
+			49, 49, 108, 49, 0, 18, 70, 76, 120, 10, 205, 242, 145, 89, 108, 50, 47, 37, 65, 36, 47, 51, 0, 18, 70, 63, 4, 202, 71, 56,
+			0, 72, 36, 49, 89, 47, 36, 51, 37, 50, 0, 18, 70, 60, 120, 19, 205, 242, 145, 72, 108, 50, 89, 37, 65, 36, 47, 51, 0, 18,
+			70, 40, 124, 19, 205, 242, 145, 47, 108, 49, 89, 37, 65, 36, 47, 51, 0, 17, 70, 29, 50, 136, 60, 115, 192, 36, 89, 47, 36, 71,
+			72, 108, 72, 0, 0, 11, 67, 193, 184, 0, 49, 35, 83, 35, 50, 0, 11, 67, 185, 248, 0, 76, 35, 65, 35, 50, 0, 16, 69, 133,
+			23, 243, 138, 0, 107, 36, 51, 65, 37, 57, 39, 50, 0, 14, 69, 30, 3, 199, 56, 160, 35, 50, 72, 108, 101, 47, 0, 20, 70, 29,
+			226, 145, 49, 252, 128, 39, 55, 47, 35, 51, 75, 39, 65, 36, 57, 36, 0, 13, 65, 200, 6, 107, 36, 107, 35, 65, 88, 36, 12, 0,
+			0, 16, 69, 129, 241, 243, 128, 240, 50, 35, 65, 108, 57, 35, 50, 72, 0, 16, 69, 85, 180, 72, 128, 240, 89, 36, 83, 51, 71, 35,
+			50, 72, 0, 11, 67, 34, 10, 199, 71, 35, 50, 50, 108, 0, 0, 15, 69, 109, 24, 143, 28, 128, 83, 39, 51, 40, 72, 108, 71, 0,
+			14, 68, 108, 168, 176, 180, 83, 39, 47, 39, 49, 39, 48, 0, 15, 69, 32, 115, 76, 28, 128, 71, 108, 107, 36, 75, 108, 71, 0, 0,
+			23, 72, 180, 116, 71, 197, 225, 243, 61, 16, 48, 108, 51, 108, 81, 36, 55, 108, 57, 72, 36, 51, 0, 17, 70, 129, 252, 223, 138, 3,
+			192, 50, 36, 65, 37, 65, 40, 50, 72, 0, 19, 70, 126, 2, 142, 35, 56, 0, 65, 39, 50, 47, 35, 101, 36, 71, 37, 50, 0, 14,
+			68, 84, 220, 205, 28, 89, 35, 107, 37, 107, 35, 50, 0, 14, 2, 195, 183, 47, 35, 104, 89, 37, 65, 71, 35, 51, 0, 9, 65, 196,
+			6, 81, 12, 108, 83, 0, 0, 12, 68, 192, 117, 48, 204, 49, 108, 91, 49, 37, 0, 16, 69, 181, 28, 211, 194, 208, 48, 36, 51, 37,
+			89, 49, 39, 48, 0, 16, 69, 126, 20, 72, 138, 0, 65, 36, 107, 51, 35, 71, 40, 50, 0, 10, 67, 120, 119, 237, 55, 108, 65, 48,
+			0, 16, 69, 73, 244, 202, 30, 0, 88, 36, 65, 36, 89, 47, 108, 50, 0, 14, 68, 33, 228, 240, 204, 71, 35, 55, 89, 35, 49, 37,
+			0, 15, 69, 30, 42, 222, 206, 0, 35, 84, 84, 35, 55, 37, 50, 0, 19, 70, 29, 118, 199, 206, 188, 128, 36, 47, 83, 108, 37, 57,
+			57, 36, 57, 36, 0, 0, 13, 67, 125, 55, 199, 65, 39, 89, 35, 65, 65, 108, 0, 12, 67, 124, 131, 199, 65, 35, 71, 72, 35, 19,
+			0, 12, 67, 124, 131, 195, 65, 35, 71, 72, 35, 19, 0, 13, 67, 105, 23, 199, 104, 17, 39, 51, 35, 65, 108, 0, 12, 67, 92, 134,
+			71, 47, 35, 71, 19, 35, 50, 0, 11, 67, 73, 151, 199, 88, 39, 35, 65, 108, 0, 12, 67, 58, 12, 7, 101, 39, 50, 35, 49, 108,
+			0, 11, 67, 57, 23, 199, 101, 39, 51, 65, 108, 0, 12, 67, 55, 7, 199, 107, 39, 49, 65, 35, 50, 0, 12, 67, 49, 246, 71, 75,
+			35, 65, 19, 35, 50, 0, 14, 69, 32, 116, 162, 192, 112, 71, 108, 88, 40, 49, 108, 0, 0, 11, 67, 81, 50, 128, 6, 91, 39, 89,
+			47, 0, 17, 69, 61, 24, 154, 195, 48, 72, 39, 51, 40, 104, 17, 35, 49, 37, 0, 15, 69, 28, 215, 207, 122, 32, 35, 107, 65, 35,
+			72, 55, 40, 0, 0, 8, 66, 197, 240, 81, 39, 65, 0, 11, 67, 187, 3, 192, 76, 36, 49, 35, 72, 0, 14, 68, 60, 113, 159, 28,
+			72, 108, 19, 36, 65, 35, 50, 0, 14, 68, 32, 248, 31, 28, 71, 35, 72, 50, 35, 65, 108, 0, 13, 68, 32, 117, 91, 28, 71, 108,
+			89, 35, 83, 108, 0, 17, 70, 32, 115, 223, 48, 120, 0, 71, 108, 72, 36, 65, 75, 108, 50, 0, 13, 68, 29, 232, 19, 28, 39, 50,
+			50, 36, 89, 108, 0, 13, 68, 28, 250, 217, 28, 36, 72, 72, 36, 19, 108, 0, 7, 67, 28, 241, 193, 35, 0, 25, 7, 217, 135, 226,
+			128, 140, 217, 130, 107, 36, 75, 51, 37, 57, 36, 9, 104, 35, 65, 35, 51, 37, 0, 46, 0, 10, 67, 192, 116, 202, 49, 108, 89, 47,
+			0, 14, 69, 192, 116, 74, 138, 0, 49, 108, 51, 47, 39, 50, 0, 14, 69, 182, 43, 94, 206, 0, 48, 39, 48, 55, 37, 50, 0, 11,
+			67, 136, 116, 202, 84, 108, 89, 35, 47, 0, 10, 67, 132, 116, 202, 107, 108, 89, 47, 0, 12, 67, 131, 22, 202, 50, 35, 81, 39, 83,
+			47, 0, 15, 69, 128, 114, 162, 30, 0, 50, 108, 47, 35, 84, 108, 50, 0, 15, 68, 125, 194, 150, 204, 65, 39, 104, 17, 47, 35, 88,
+			37, 0, 19, 70, 114, 3, 237, 133, 232, 128, 104, 17, 35, 50, 72, 48, 35, 107, 55, 40, 0, 14, 68, 109, 151, 177, 204, 83, 35, 19,
+			55, 36, 81, 37, 0, 12, 67, 109, 23, 202, 83, 39, 51, 65, 35, 47, 0, 13, 68, 69, 120, 136, 204, 51, 39, 47, 40, 71, 37, 0,
+			0, 12, 67, 197, 18, 33, 81, 39, 51, 71, 36, 12, 0, 11, 67, 77, 199, 192, 89, 39, 104, 17, 65, 0, 12, 67, 69, 199, 192, 51,
+			35, 104, 17, 35, 65, 0, 11, 67, 61, 229, 0, 72, 36, 55, 35, 91, 0, 17, 69, 41, 81, 207, 108, 112, 47, 35, 89, 108, 72, 39,
+			83, 35, 50, 0, 12, 67, 33, 199, 192, 71, 35, 104, 17, 35, 65, 0, 15, 69, 28, 199, 199, 100, 112, 36, 75, 65, 108, 19, 35, 50,
+			0, 0, 8, 66, 197, 224, 81, 39, 55, 0, 17, 69, 193, 72, 15, 199, 48, 49, 39, 91, 35, 50, 72, 36, 81, 37, 0, 8, 66, 137,
+			224, 84, 36, 55, 0, 8, 66, 133, 224, 107, 39, 55, 0, 15, 68, 125, 226, 155, 40, 65, 39, 55, 47, 35, 83, 36, 47, 0, 13, 67,
+			125, 194, 30, 65, 39, 104, 17, 71, 36, 55, 0, 12, 67, 125, 86, 72, 65, 39, 89, 19, 35, 71, 0, 16, 69, 125, 50, 162, 111, 48,
+			65, 39, 89, 47, 39, 12, 83, 37, 0, 15, 68, 124, 116, 200, 112, 65, 108, 89, 35, 71, 35, 104, 17, 0, 17, 69, 106, 36, 81, 79,
+			48, 104, 17, 39, 12, 51, 51, 35, 89, 37, 0, 20, 70, 32, 119, 30, 30, 215, 162, 71, 108, 104, 17, 108, 55, 108, 48, 39, 55, 39,
+			0, 13, 68, 29, 28, 19, 40, 39, 51, 49, 36, 89, 47, 0, 13, 68, 29, 17, 207, 40, 36, 51, 108, 72, 35, 47, 0, 26, 7, 217,
+			130, 226, 128, 140, 217, 133, 104, 12, 12, 35, 71, 55, 10, 35, 88, 9, 65, 37, 55, 108, 72, 0, 46, 0, 17, 70, 181, 24, 155, 69,
+			241, 192, 48, 51, 39, 83, 39, 51, 65, 108, 0, 11, 67, 181, 24, 64, 48, 35, 51, 51, 36, 0, 21, 70, 181, 20, 202, 204, 248, 0,
+			48, 35, 51, 35, 89, 47, 37, 12, 6, 72, 35, 50, 0, 12, 67, 125, 147, 31, 65, 39, 19, 75, 35, 65, 0, 11, 67, 123, 19, 192,
+			55, 35, 81, 35, 72, 0, 13, 68, 110, 36, 74, 132, 83, 39, 51, 47, 36, 12, 0, 20, 70, 105, 40, 34, 204, 120, 0, 104, 17, 35,
+			88, 50, 35, 84, 37, 57, 108, 50, 0, 15, 68, 85, 225, 200, 132, 89, 39, 55, 55, 108, 71, 36, 12, 0, 14, 68, 83, 8, 8, 132,
+			91, 36, 49, 35, 50, 71, 36, 0, 18, 70, 55, 7, 219, 69, 241, 192, 107, 39, 49, 65, 83, 35, 51, 65, 108, 0, 14, 68, 41, 65,
+			200, 132, 47, 35, 91, 108, 71, 39, 107, 0, 18, 70, 28, 210, 179, 29, 113, 192, 36, 107, 47, 37, 57, 35, 47, 35, 50, 0, 0, 11,
+			67, 196, 119, 160, 81, 108, 55, 39, 50, 0, 15, 69, 183, 53, 17, 108, 160, 48, 37, 91, 51, 35, 83, 47, 0, 14, 69, 182, 36, 83,
+			30, 0, 48, 40, 51, 89, 108, 50, 0, 11, 67, 180, 116, 206, 48, 108, 89, 39, 101, 0, 17, 69, 125, 225, 215, 108, 160, 65, 39, 55,
+			108, 47, 36, 83, 35, 47, 0, 12, 67, 125, 39, 224, 65, 39, 88, 65, 36, 50, 0, 18, 69, 124, 244, 83, 30, 0, 65, 39, 72, 35,
+			51, 51, 36, 89, 108, 50, 0, 11, 67, 124, 124, 10, 65, 108, 49, 36, 47, 0, 12, 67, 121, 1, 202, 55, 35, 88, 88, 108, 47, 0,
+			13, 67, 109, 22, 160, 83, 39, 51, 104, 17, 39, 50, 0, 14, 67, 61, 202, 202, 72, 36, 104, 17, 104, 17, 35, 47, 0, 11, 67, 42,
+			39, 224, 47, 39, 65, 35, 50, 0, 12, 67, 32, 241, 218, 71, 39, 72, 108, 104, 17, 0, 0, 16, 70, 198, 37, 10, 194, 34, 0, 81,
+			40, 91, 47, 49, 40, 71, 0, 10, 67, 195, 54, 192, 49, 36, 57, 83, 0, 16, 69, 193, 234, 243, 174, 16, 49, 39, 55, 37, 57, 57,
+			36, 12, 0, 12, 67, 186, 20, 97, 76, 36, 107, 51, 36, 12, 0, 15, 68, 181, 20, 202, 124, 48, 35, 51, 35, 89, 47, 35, 65, 0,
+			14, 69, 127, 56, 51, 79, 0, 65, 37, 50, 37, 89, 49, 0, 14, 68, 124, 225, 222, 108, 65, 39, 101, 108, 55, 36, 83, 0, 13, 67,
+			121, 199, 225, 55, 39, 104, 17, 65, 36, 12, 0, 13, 67, 115, 55, 225, 104, 17, 36, 57, 65, 36, 12, 0, 13, 67, 107, 55, 225, 104,
+			17, 36, 57, 65, 36, 12, 0, 13, 67, 97, 231, 225, 88, 35, 55, 35, 65, 36, 12, 0, 12, 67, 61, 231, 225, 72, 39, 55, 65, 36,
+			12, 0, 12, 67, 61, 35, 207, 72, 39, 88, 72, 35, 72, 0, 11, 67, 53, 231, 225, 107, 39, 55, 65, 36, 0, 12, 67, 49, 247, 161,
+			75, 39, 65, 55, 36, 12, 0, 14, 68, 42, 17, 204, 124, 47, 35, 107, 108, 75, 39, 65, 0, 10, 65, 68, 6, 51, 2, 34, 36, 12,
+			0, 0, 13, 68, 194, 36, 74, 128, 49, 39, 51, 47, 39, 50, 0, 19, 70, 186, 3, 224, 188, 115, 243, 76, 35, 50, 72, 50, 36, 90,
+			108, 72, 37, 0, 19, 70, 183, 52, 71, 113, 114, 51, 48, 37, 51, 108, 104, 17, 39, 47, 71, 37, 0, 14, 68, 133, 248, 175, 128, 107,
+			36, 65, 39, 90, 36, 50, 0, 17, 70, 124, 120, 51, 109, 50, 128, 65, 108, 50, 37, 83, 36, 89, 47, 0, 17, 70, 124, 116, 202, 124,
+			119, 179, 65, 108, 89, 47, 65, 108, 55, 37, 0, 16, 69, 120, 124, 224, 53, 224, 55, 108, 57, 35, 50, 107, 35, 55, 0, 12, 68, 70,
+			34, 7, 40, 51, 39, 71, 108, 47, 0, 14, 68, 70, 12, 82, 128, 51, 35, 50, 81, 88, 35, 50, 0, 13, 68, 68, 120, 82, 128, 51,
+			108, 107, 88, 35, 50, 0, 17, 69, 63, 20, 84, 193, 224, 72, 36, 81, 35, 51, 91, 36, 49, 55, 0, 19, 70, 50, 1, 200, 100, 119,
+			179, 75, 36, 50, 108, 71, 36, 19, 108, 55, 37, 0, 17, 70, 41, 24, 145, 205, 50, 128, 47, 36, 51, 39, 51, 37, 89, 47, 0, 14,
+			68, 33, 24, 140, 128, 71, 39, 51, 40, 75, 36, 50, 0, 10, 67, 31, 54, 222, 37, 83, 36, 55, 0, 12, 68, 28, 178, 7, 40, 36,
+			89, 71, 108, 47, 0, 19, 70, 28, 132, 84, 71, 2, 128, 35, 71, 35, 51, 91, 36, 51, 49, 35, 47, 0, 0, 15, 68, 198, 3, 222,
+			132, 81, 39, 50, 72, 39, 55, 36, 12, 0, 14, 68, 194, 39, 222, 132, 49, 39, 65, 36, 55, 36, 12, 0, 14, 68, 131, 49, 223, 60,
+			50, 35, 57, 108, 65, 35, 72, 0, 14, 67, 125, 55, 159, 65, 39, 89, 35, 55, 55, 35, 65, 0, 17, 68, 125, 48, 222, 132, 65, 35,
+			89, 10, 6, 35, 12, 55, 36, 12, 0, 21, 71, 109, 23, 199, 129, 180, 95, 28, 83, 35, 51, 65, 108, 50, 83, 35, 51, 65, 108, 0,
+			10, 67, 101, 65, 217, 36, 91, 108, 19, 0, 15, 68, 83, 8, 12, 132, 91, 36, 49, 35, 50, 75, 36, 12, 0, 10, 67, 71, 50, 159,
+			51, 37, 47, 65, 0, 11, 67, 52, 124, 31, 107, 108, 49, 36, 65, 0, 18, 70, 34, 28, 238, 136, 200, 64, 71, 36, 107, 37, 76, 84,
+			35, 75, 107, 0, 16, 70, 29, 50, 135, 43, 60, 0, 36, 89, 47, 108, 47, 37, 49, 0, 0, 13, 68, 124, 124, 240, 120, 65, 108, 57,
+			49, 36, 55, 0, 13, 67, 113, 23, 210, 104, 17, 36, 51, 65, 36, 88, 0, 12, 67, 111, 49, 214, 83, 35, 57, 57, 108, 88, 0, 10,
+			67, 31, 8, 128, 36, 49, 39, 12, 0, 0, 16, 69, 181, 18, 19, 42, 16, 48, 35, 51, 71, 35, 89, 47, 36, 0, 15, 68, 125, 226,
+			146, 124, 65, 39, 55, 47, 35, 88, 36, 65, 0, 17, 69, 125, 81, 222, 54, 16, 65, 39, 89, 108, 55, 36, 107, 36, 12, 0, 16, 69,
+			125, 65, 217, 70, 16, 65, 39, 91, 108, 19, 36, 51, 36, 0, 11, 67, 124, 209, 215, 65, 39, 107, 108, 47, 0, 16, 69, 124, 129, 225,
+			122, 16, 65, 39, 71, 108, 107, 36, 55, 36, 0, 15, 68, 101, 236, 240, 124, 19, 35, 55, 35, 57, 49, 39, 65, 0, 18, 70, 100, 119,
+			179, 68, 162, 33, 6, 108, 55, 37, 51, 39, 47, 71, 36, 0, 16, 69, 75, 52, 109, 122, 16, 88, 37, 51, 48, 36, 55, 55, 36, 0,
+			12, 68, 29, 66, 7, 100, 36, 91, 71, 108, 19, 0, 15, 69, 29, 35, 31, 122, 16, 35, 88, 75, 39, 65, 55, 36, 0, 10, 67, 31,
+			60, 19, 37, 49, 89, 0, 46, 0, 14, 69, 196, 116, 162, 25, 224, 81, 108, 88, 39, 37, 55, 0, 12, 67, 193, 60, 20, 49, 39, 89,
+			49, 36, 91, 0, 11, 67, 181, 23, 226, 48, 39, 51, 65, 40, 0, 19, 70, 124, 210, 162, 204, 114, 128, 65, 39, 107, 47, 35, 84, 37,
+			57, 108, 47, 0, 12, 67, 113, 241, 212, 104, 17, 39, 65, 108, 91, 0, 23, 73, 72, 115, 199, 121, 145, 209, 111, 56, 0, 88, 108, 72,
+			39, 55, 108, 51, 36, 83, 37, 50, 0, 10, 67, 61, 242, 0, 72, 39, 65, 71, 0, 12, 67, 43, 4, 98, 47, 35, 49, 51, 39, 12,
+			0, 15, 69, 32, 117, 10, 28, 128, 71, 108, 91, 36, 47, 108, 71, 0, 13, 68, 29, 194, 7, 88, 36, 104, 17, 71, 108, 88, 0, 10,
+			67, 31, 59, 128, 36, 57, 76, 0, 46, 0, 13, 67, 197, 228, 209, 81, 39, 55, 36, 89, 35, 51, 0, 11, 67, 184, 115, 209, 76, 108,
+			72, 39, 51, 0, 16, 69, 181, 24, 155, 69, 240, 48, 39, 51, 39, 83, 39, 51, 65, 0, 15, 68, 181, 24, 19, 76, 48, 36, 51, 35,
+			50, 89, 36, 89, 0, 19, 71, 139, 52, 240, 137, 44, 202, 132, 84, 37, 89, 49, 39, 88, 37, 47, 36, 0, 14, 69, 128, 123, 71, 121,
+			240, 50, 108, 48, 108, 55, 65, 0, 14, 67, 125, 151, 209, 65, 39, 19, 35, 65, 65, 35, 51, 0, 12, 67, 125, 101, 209, 65, 39, 88,
+			47, 35, 51, 0, 17, 69, 125, 50, 141, 193, 240, 65, 39, 89, 47, 35, 107, 49, 35, 65, 0, 12, 67, 124, 133, 81, 65, 39, 71, 89,
+			36, 51, 0, 12, 67, 109, 22, 209, 83, 36, 51, 83, 36, 51, 0, 12, 67, 49, 150, 209, 75, 35, 19, 83, 35, 51, 0, 19, 70, 29,
+			226, 145, 49, 248, 64, 39, 55, 47, 35, 51, 75, 39, 65, 36, 12, 0, 17, 70, 29, 50, 141, 29, 232, 64, 36, 89, 47, 36, 107, 108,
+			55, 36, 0, 12, 68, 8, 241, 223, 76, 108, 72, 108, 65, 89, 0, 0, 15, 68, 180, 244, 112, 80, 48, 36, 72, 35, 51, 49, 39, 91,
+			0, 16, 68, 113, 23, 17, 136, 104, 17, 39, 51, 104, 17, 39, 51, 40, 0, 16, 68, 105, 22, 145, 136, 104, 17, 39, 51, 104, 17, 39,
+			51, 40, 0, 13, 68, 32, 116, 112, 80, 71, 108, 51, 49, 36, 91, 0, 0, 21, 70, 53, 193, 222, 72, 215, 192, 107, 35, 104, 17, 104,
+			17, 39, 88, 88, 35, 107, 65, 0, 18, 70, 32, 119, 160, 43, 51, 33, 71, 36, 50, 50, 35, 47, 37, 75, 36, 0, 11, 67, 29, 236,
+			19, 35, 55, 36, 49, 89, 0, 19, 70, 29, 50, 176, 133, 231, 192, 6, 36, 89, 47, 39, 49, 107, 39, 55, 65, 0, 0, 12, 67, 193,
+			20, 179, 49, 35, 51, 88, 35, 57, 0, 13, 68, 181, 24, 135, 72, 48, 35, 51, 84, 108, 88, 0, 13, 67, 124, 215, 179, 65, 35, 107,
+			35, 55, 55, 37, 0, 12, 67, 80, 242, 128, 91, 36, 72, 72, 35, 47, 0, 10, 67, 77, 50, 128, 89, 39, 89, 47, 0, 16, 69, 61,
+			17, 210, 193, 64, 72, 36, 51, 108, 88, 49, 36, 91, 0, 12, 67, 48, 242, 128, 75, 35, 72, 72, 35, 47, 0, 13, 67, 41, 55, 179,
+			47, 35, 89, 35, 55, 55, 37, 0, 10, 67, 41, 50, 128, 47, 36, 89, 47, 0, 11, 67, 33, 50, 128, 6, 71, 35, 89, 47, 0, 0,
+			11, 67, 196, 241, 209, 81, 39, 72, 108, 51, 0, 17, 70, 193, 18, 179, 74, 40, 0, 49, 39, 51, 47, 37, 88, 39, 50, 0, 16, 69,
+			184, 114, 48, 77, 16, 76, 108, 71, 39, 49, 89, 35, 51, 0, 12, 67, 125, 70, 81, 65, 39, 91, 19, 36, 51, 0, 19, 70, 125, 19,
+			224, 82, 40, 0, 65, 39, 51, 72, 35, 50, 36, 91, 40, 50, 0, 14, 67, 124, 227, 209, 65, 39, 101, 35, 72, 72, 36, 51, 0, 14,
+			67, 124, 213, 85, 65, 39, 107, 35, 89, 89, 36, 89, 0, 11, 67, 109, 65, 209, 83, 36, 91, 108, 51, 0, 16, 69, 108, 168, 147, 109,
+			16, 83, 39, 47, 39, 89, 83, 36, 51, 0, 11, 67, 69, 183, 0, 51, 36, 83, 104, 17, 0, 12, 67, 61, 247, 0, 72, 35, 65, 35,
+			104, 17, 0, 17, 70, 29, 252, 209, 29, 151, 159, 35, 65, 37, 51, 35, 55, 35, 65, 0, 12, 68, 28, 211, 199, 76, 36, 107, 72, 108,
+			89, 0, 0, 18, 68, 124, 164, 92, 204, 65, 39, 47, 36, 51, 35, 104, 17, 104, 17, 37, 0, 13, 68, 123, 49, 222, 204, 55, 35, 57,
+			108, 55, 37, 0, 14, 67, 113, 92, 128, 104, 17, 36, 89, 89, 36, 57, 36, 0, 12, 67, 101, 135, 202, 35, 88, 36, 65, 35, 47, 0,
+			17, 70, 80, 119, 226, 68, 172, 192, 91, 108, 65, 84, 40, 51, 47, 37, 0, 13, 68, 62, 35, 240, 80, 72, 40, 72, 49, 36, 91, 0,
+			12, 67, 53, 23, 202, 107, 39, 51, 65, 35, 47, 0, 26, 73, 31, 4, 237, 69, 60, 226, 131, 52, 202, 36, 49, 89, 48, 36, 51, 89,
+			37, 57, 39, 50, 37, 89, 47, 0, 11, 67, 10, 12, 10, 108, 50, 49, 36, 47, 0, 0, 13, 68, 197, 178, 135, 68, 81, 39, 83, 47,
+			108, 51, 0, 19, 70, 189, 22, 199, 131, 20, 64, 90, 35, 51, 83, 108, 50, 36, 81, 35, 51, 0, 17, 70, 180, 116, 71, 62, 44, 19,
+			48, 108, 51, 108, 72, 39, 49, 89, 0, 14, 68, 130, 33, 241, 68, 50, 35, 84, 108, 81, 35, 51, 0, 13, 68, 128, 117, 48, 68, 50,
+			108, 91, 39, 49, 51, 0, 14, 69, 123, 56, 34, 193, 48, 55, 37, 50, 40, 49, 89, 0, 12, 68, 28, 194, 7, 68, 36, 75, 71, 108,
+			51, 0, 0, 14, 68, 181, 52, 91, 40, 48, 35, 89, 51, 35, 83, 47, 0, 20, 70, 128, 117, 81, 57, 52, 98, 50, 108, 89, 36, 51,
+			101, 39, 89, 51, 39, 84, 0, 13, 68, 127, 52, 91, 40, 65, 37, 51, 35, 83, 47, 0, 15, 67, 109, 196, 114, 83, 35, 104, 17, 35,
+			51, 36, 57, 36, 0, 13, 67, 101, 103, 178, 35, 88, 39, 55, 36, 57, 36, 0, 14, 68, 79, 49, 211, 40, 89, 37, 57, 108, 89, 35,
+			47, 0, 11, 67, 68, 194, 0, 51, 35, 75, 35, 71, 0, 11, 68, 58, 33, 211, 40, 101, 108, 89, 47, 0, 14, 68, 57, 49, 211, 40,
+			101, 36, 89, 108, 89, 35, 47, 0, 12, 67, 54, 39, 178, 107, 39, 55, 36, 57, 36, 0, 12, 67, 52, 242, 128, 107, 36, 72, 72, 35,
+			47, 0, 15, 68, 32, 120, 95, 40, 71, 108, 107, 36, 65, 65, 35, 47, 0, 0, 15, 69, 194, 39, 136, 29, 16, 49, 40, 55, 36, 71,
+			108, 51, 0, 19, 70, 181, 24, 115, 48, 120, 0, 48, 39, 51, 107, 35, 57, 36, 75, 108, 50, 0, 15, 69, 130, 12, 72, 29, 16, 50,
+			35, 50, 81, 71, 108, 51, 0, 13, 68, 125, 146, 135, 60, 65, 39, 19, 47, 108, 72, 0, 15, 69, 125, 76, 8, 29, 16, 65, 39, 91,
+			49, 71, 108, 51, 0, 15, 69, 125, 28, 72, 29, 16, 65, 35, 51, 81, 71, 108, 51, 0, 15, 69, 74, 12, 72, 29, 16, 88, 35, 50,
+			81, 71, 108, 51, 0, 14, 69, 50, 44, 200, 29, 16, 75, 40, 57, 71, 108, 51, 0, 0, 15, 68, 193, 65, 222, 200, 49, 36, 91, 108,
+			55, 36, 57, 36, 0, 12, 67, 135, 49, 202, 107, 36, 57, 19, 35, 47, 0, 16, 69, 124, 212, 95, 30, 0, 65, 35, 107, 51, 35, 65,
+			108, 50, 0, 16, 69, 109, 24, 145, 108, 160, 83, 39, 51, 40, 51, 35, 83, 47, 0, 18, 69, 83, 4, 83, 58, 0, 91, 36, 49, 35,
+			51, 89, 39, 101, 35, 50, 0, 14, 67, 69, 202, 202, 51, 36, 104, 17, 104, 17, 35, 47, 0, 11, 67, 61, 248, 0, 72, 35, 65, 35,
+			50, 0, 19, 70, 57, 19, 95, 29, 236, 192, 101, 35, 51, 107, 35, 65, 65, 108, 55, 37, 0, 11, 67, 43, 60, 10, 47, 37, 49, 36,
+			47, 0, 17, 69, 42, 33, 224, 76, 160, 6, 47, 35, 84, 108, 50, 36, 89, 47, 0, 0, 15, 69, 198, 1, 200, 28, 240, 81, 39, 50,
+			108, 71, 108, 72, 0, 18, 70, 194, 244, 91, 40, 116, 64, 49, 35, 90, 51, 35, 83, 47, 108, 51, 0, 17, 70, 187, 5, 14, 136, 116,
+			64, 76, 35, 49, 39, 91, 101, 108, 51, 0, 15, 68, 181, 24, 31, 192, 48, 39, 51, 50, 35, 65, 35, 49, 0, 19, 70, 56, 132, 96,
+			196, 116, 64, 101, 35, 71, 35, 51, 50, 36, 81, 108, 51, 0, 20, 70, 34, 3, 209, 100, 129, 211, 71, 35, 50, 72, 35, 51, 35, 71,
+			71, 108, 89, 0, 11, 67, 32, 118, 207, 71, 108, 83, 35, 72, 0, 10, 67, 30, 1, 203, 36, 50, 108, 89, 0, 20, 71, 28, 236, 209,
+			29, 228, 48, 68, 35, 101, 37, 51, 39, 88, 88, 36, 49, 51, 0, 0, 13, 68, 192, 116, 240, 40, 49, 108, 89, 49, 36, 47, 0, 13,
+			68, 180, 116, 112, 40, 48, 108, 51, 49, 36, 47, 0, 11, 67, 120, 129, 200, 55, 39, 71, 108, 71, 0, 19, 70, 109, 17, 224, 185, 60,
+			34, 83, 36, 51, 108, 50, 76, 36, 89, 49, 39, 0, 16, 69, 78, 36, 74, 127, 32, 89, 40, 51, 47, 65, 36, 57, 36, 0, 22, 72,
+			70, 35, 209, 32, 124, 211, 43, 48, 51, 40, 72, 35, 51, 71, 108, 57, 89, 47, 37, 0, 11, 67, 68, 129, 200, 51, 39, 71, 108, 71,
+			0, 11, 67, 52, 129, 200, 107, 39, 71, 108, 71, 0, 14, 68, 30, 36, 112, 40, 39, 84, 36, 51, 49, 39, 47, 0, 13, 68, 28, 172,
+			240, 40, 36, 47, 37, 49, 36, 47, 0, 0, 11, 67, 125, 65, 217, 65, 39, 91, 108, 19, 0, 10, 67, 69, 97, 217, 51, 36, 88, 108,
+			0, 10, 67, 68, 129, 192, 51, 39, 71, 108, 0, 17, 70, 32, 119, 135, 48, 129, 209, 71, 36, 55, 36, 75, 71, 108, 51, 0, 0, 15,
+			68, 124, 228, 107, 32, 65, 39, 101, 35, 51, 51, 36, 71, 0, 16, 69, 124, 196, 95, 30, 0, 65, 39, 75, 51, 36, 65, 108, 50, 0,
+			10, 67, 70, 44, 192, 51, 40, 57, 36, 0, 25, 72, 68, 115, 243, 136, 167, 147, 194, 208, 51, 108, 72, 37, 57, 39, 47, 36, 55, 36,
+			89, 49, 39, 48, 0, 13, 68, 29, 17, 198, 200, 36, 51, 108, 36, 57, 36, 0, 11, 67, 70, 44, 192, 51, 40, 57, 36, 0, 46, 0,
+			22, 71, 79, 49, 211, 41, 243, 199, 68, 89, 37, 57, 108, 89, 35, 47, 65, 35, 72, 108, 51, 0, 9, 67, 30, 35, 7, 40, 75, 108,
+			0, 0, 17, 69, 193, 234, 243, 175, 32, 49, 39, 55, 37, 57, 57, 36, 57, 36, 0, 22, 72, 182, 36, 71, 68, 242, 51, 123, 48, 48,
+			40, 51, 35, 51, 72, 36, 71, 37, 55, 37, 0, 22, 72, 135, 51, 209, 137, 54, 199, 123, 48, 107, 37, 72, 51, 39, 89, 36, 83, 108,
+			55, 37, 0, 20, 70, 9, 4, 113, 82, 4, 200, 108, 88, 35, 51, 81, 39, 91, 50, 35, 89, 71, 0, 0, 14, 68, 185, 228, 202, 28,
+			76, 36, 55, 36, 89, 47, 108, 0, 17, 70, 182, 36, 71, 53, 243, 192, 48, 40, 51, 35, 107, 65, 35, 72, 0, 18, 70, 126, 36, 179,
+			79, 56, 0, 65, 40, 88, 37, 89, 37, 57, 35, 50, 0, 25, 72, 125, 51, 15, 77, 236, 223, 30, 0, 65, 35, 89, 75, 36, 72, 89,
+			39, 55, 36, 57, 65, 108, 50, 0, 10, 67, 55, 49, 192, 107, 35, 57, 108, 0, 19, 70, 43, 8, 51, 79, 56, 0, 47, 36, 49, 50,
+			37, 89, 37, 57, 35, 50, 0, 22, 72, 11, 7, 237, 30, 12, 223, 30, 0, 108, 49, 39, 65, 48, 108, 50, 37, 65, 108, 50, 0, 0,
+			12, 67, 114, 44, 192, 6, 104, 17, 35, 84, 37, 0, 20, 70, 101, 82, 7, 131, 58, 202, 35, 89, 35, 71, 108, 50, 37, 37, 57, 35,
+			47, 0, 10, 67, 82, 44, 192, 91, 35, 84, 37, 0, 22, 72, 78, 36, 81, 204, 119, 179, 76, 160, 89, 40, 51, 36, 51, 36, 108, 55,
+			37, 89, 47, 0, 10, 67, 42, 44, 192, 47, 40, 57, 36, 0, 20, 70, 32, 114, 140, 68, 140, 128, 71, 108, 47, 35, 75, 51, 39, 71,
+			36, 57, 36, 0, 14, 68, 28, 132, 92, 136, 35, 71, 35, 51, 104, 17, 40, 0, 20, 72, 11, 2, 179, 130, 39, 243, 76, 160, 108, 47,
+			37, 50, 39, 65, 37, 89, 47, 0, 8, 65, 204, 6, 57, 36, 12, 0, 0, 13, 67, 125, 87, 135, 65, 39, 89, 35, 55, 55, 108, 0,
+			13, 67, 125, 71, 199, 65, 39, 91, 35, 65, 65, 108, 0, 17, 69, 89, 24, 145, 40, 112, 88, 35, 51, 40, 51, 35, 47, 35, 50, 0,
+			13, 67, 41, 55, 135, 47, 35, 89, 35, 55, 55, 108, 0, 11, 67, 35, 53, 135, 71, 36, 57, 88, 108, 0, 11, 67, 33, 19, 7, 71,
+			35, 51, 75, 108, 0, 0, 15, 69, 197, 66, 135, 182, 32, 81, 36, 91, 47, 108, 48, 39, 0, 16, 69, 84, 115, 220, 122, 32, 89, 108,
+			72, 36, 104, 17, 55, 40, 0, 11, 67, 80, 130, 128, 91, 35, 71, 35, 47, 0, 13, 68, 29, 50, 159, 180, 36, 89, 47, 35, 65, 48,
+			0, 0, 17, 70, 197, 225, 200, 60, 120, 0, 81, 39, 55, 108, 71, 72, 108, 50, 0, 12, 67, 196, 136, 64, 81, 35, 71, 71, 36, 12,
+			0, 17, 70, 180, 120, 19, 206, 40, 0, 48, 108, 50, 89, 37, 57, 39, 50, 0, 13, 68, 133, 66, 173, 28, 107, 35, 91, 47, 48, 108,
+			0, 10, 67, 132, 136, 64, 107, 36, 71, 36, 0, 12, 68, 128, 117, 10, 28, 50, 108, 91, 47, 108, 0, 13, 68, 76, 226, 173, 28, 89,
+			35, 101, 47, 48, 108, 0, 14, 68, 76, 140, 45, 28, 89, 35, 71, 39, 49, 48, 108, 0, 10, 67, 56, 130, 192, 101, 39, 71, 89, 0,
+			17, 70, 40, 114, 19, 42, 40, 0, 47, 108, 71, 36, 89, 47, 40, 50, 0, 14, 68, 29, 21, 220, 28, 36, 51, 47, 36, 104, 17, 108,
+			0, 13, 68, 28, 226, 155, 28, 36, 101, 47, 36, 83, 108, 0, 14, 68, 10, 3, 30, 28, 108, 50, 75, 36, 55, 55, 108, 0, 0, 15,
+			69, 131, 49, 240, 30, 0, 50, 37, 57, 108, 49, 108, 50, 0, 12, 67, 129, 180, 74, 50, 36, 83, 51, 35, 47, 0, 14, 68, 126, 3,
+			96, 204, 65, 39, 50, 107, 35, 50, 37, 0, 14, 67, 125, 167, 156, 65, 39, 104, 17, 55, 35, 104, 17, 0, 10, 67, 124, 135, 128, 65,
+			39, 71, 55, 0, 14, 68, 109, 36, 74, 204, 83, 36, 88, 36, 51, 47, 37, 0, 18, 70, 109, 24, 145, 43, 53, 0, 83, 35, 51, 84,
+			35, 51, 47, 37, 91, 0, 11, 67, 76, 140, 0, 89, 35, 71, 39, 49, 0, 12, 67, 57, 87, 138, 101, 36, 89, 55, 35, 47, 0, 16,
+			69, 57, 52, 98, 30, 0, 101, 39, 89, 51, 35, 84, 108, 50, 0, 15, 69, 34, 4, 162, 206, 0, 71, 35, 50, 88, 39, 35, 88, 0,
+			12, 68, 32, 117, 209, 204, 71, 108, 47, 51, 37, 0, 0, 13, 67, 193, 50, 33, 49, 35, 89, 35, 71, 36, 12, 0, 12, 67, 79, 2,
+			161, 89, 36, 49, 47, 36, 12, 0, 11, 67, 70, 37, 161, 51, 39, 12, 88, 36, 0, 10, 67, 55, 54, 192, 107, 36, 57, 83, 0, 15,
+			67, 42, 35, 33, 6, 47, 35, 84, 35, 75, 75, 39, 107, 0, 16, 69, 41, 181, 115, 120, 112, 47, 35, 83, 89, 37, 55, 35, 50, 0,
+			14, 67, 41, 66, 33, 47, 35, 91, 35, 71, 71, 39, 107, 0, 15, 69, 28, 199, 199, 120, 112, 36, 75, 65, 108, 55, 35, 50, 0, 16,
+			69, 11, 1, 237, 120, 112, 108, 49, 108, 48, 36, 55, 55, 108, 0, 0, 16, 69, 194, 4, 209, 42, 32, 49, 39, 50, 89, 36, 51, 47,
+			39, 0, 19, 70, 182, 36, 72, 133, 66, 179, 48, 40, 51, 71, 36, 107, 36, 91, 47, 37, 0, 12, 67, 125, 150, 30, 65, 39, 19, 88,
+			35, 55, 0, 16, 68, 125, 66, 158, 112, 65, 39, 91, 47, 39, 55, 39, 104, 17, 0, 13, 68, 109, 28, 219, 40, 83, 35, 51, 37, 83,
+			47, 0, 13, 68, 100, 241, 222, 40, 36, 72, 108, 55, 35, 47, 0, 12, 67, 61, 75, 94, 72, 39, 91, 48, 36, 55, 0, 12, 67, 41,
+			231, 200, 47, 39, 55, 39, 65, 71, 0, 15, 69, 40, 210, 135, 131, 48, 47, 35, 107, 47, 108, 50, 37, 0, 15, 69, 33, 24, 176, 123,
+			48, 71, 39, 51, 40, 49, 55, 37, 0, 22, 71, 29, 236, 10, 70, 36, 240, 180, 36, 55, 36, 49, 47, 36, 51, 39, 89, 49, 39, 48,
+			0, 8, 65, 72, 6, 88, 36, 12, 0, 0, 14, 68, 193, 252, 202, 132, 49, 39, 65, 37, 47, 36, 12, 0, 19, 70, 134, 33, 237, 205,
+			241, 192, 6, 107, 35, 84, 108, 48, 36, 57, 65, 108, 0, 16, 70, 130, 36, 72, 29, 225, 192, 50, 40, 51, 71, 108, 55, 108, 0, 14,
+			67, 125, 150, 31, 65, 39, 19, 35, 88, 88, 35, 65, 0, 13, 67, 124, 167, 176, 65, 35, 47, 35, 55, 35, 49, 0, 11, 67, 124, 119,
+			176, 65, 108, 55, 36, 49, 0, 13, 67, 112, 136, 64, 104, 17, 39, 71, 71, 36, 12, 0, 12, 67, 112, 113, 159, 104, 17, 108, 19, 36,
+			65, 0, 15, 68, 109, 20, 202, 60, 83, 36, 51, 36, 89, 47, 35, 72, 0, 18, 70, 79, 56, 15, 69, 225, 192, 89, 37, 50, 72, 36,
+			51, 36, 55, 108, 0, 11, 67, 60, 113, 159, 72, 108, 6, 36, 65, 0, 13, 68, 29, 20, 202, 60, 39, 51, 89, 47, 36, 72, 0, 18,
+			70, 28, 210, 159, 29, 225, 192, 36, 107, 47, 36, 65, 108, 55, 35, 50, 0, 0, 15, 69, 197, 66, 135, 120, 160, 81, 36, 91, 47, 108,
+			55, 47, 0, 11, 67, 193, 236, 0, 49, 35, 55, 35, 49, 0, 17, 69, 115, 55, 226, 124, 160, 104, 17, 36, 57, 65, 40, 65, 35, 47,
+			0, 12, 67, 73, 168, 0, 88, 35, 104, 17, 35, 50, 0, 13, 67, 57, 18, 28, 101, 35, 51, 71, 35, 104, 17, 0, 12, 67, 52, 202,
+			202, 107, 39, 75, 75, 35, 47, 0, 10, 67, 30, 43, 96, 39, 48, 36, 50, 0, 14, 69, 29, 54, 199, 120, 160, 36, 89, 83, 108, 55,
+			47, 0, 16, 70, 10, 1, 202, 137, 252, 192, 108, 50, 108, 47, 39, 65, 37, 0, 19, 70, 9, 193, 213, 109, 28, 192, 108, 104, 17, 108,
+			89, 35, 83, 35, 51, 37, 0, 0, 10, 67, 199, 55, 192, 81, 36, 57, 65, 0, 12, 67, 137, 20, 143, 84, 35, 51, 88, 35, 72, 0,
+			12, 67, 127, 2, 11, 65, 35, 49, 71, 36, 89, 0, 11, 67, 120, 135, 192, 55, 35, 71, 35, 65, 0, 13, 68, 101, 225, 198, 124, 35,
+			55, 108, 19, 36, 65, 0, 11, 67, 70, 34, 33, 51, 40, 71, 35, 107, 0, 10, 67, 69, 39, 192, 51, 35, 88, 65, 0, 15, 69, 29,
+			147, 34, 34, 16, 39, 19, 75, 40, 71, 36, 12, 0, 19, 70, 29, 66, 154, 29, 228, 135, 36, 91, 47, 36, 104, 17, 108, 55, 88, 108,
+			0, 19, 70, 29, 50, 143, 120, 119, 135, 36, 89, 47, 36, 72, 55, 108, 55, 35, 50, 0, 10, 67, 29, 39, 192, 35, 88, 35, 65, 0,
+			15, 69, 29, 18, 162, 180, 240, 39, 51, 47, 39, 48, 36, 72, 0, 11, 67, 9, 36, 79, 108, 88, 39, 51, 72, 0, 15, 69, 8, 161,
+			202, 71, 0, 108, 47, 108, 47, 39, 51, 49, 0, 0, 18, 70, 181, 232, 173, 138, 4, 179, 48, 39, 55, 39, 48, 39, 50, 88, 37, 0,
+			18, 70, 136, 116, 176, 42, 39, 243, 84, 108, 88, 36, 49, 47, 39, 65, 37, 0, 13, 68, 128, 124, 222, 128, 50, 108, 57, 55, 39, 50,
+			0, 16, 68, 125, 113, 200, 112, 65, 39, 6, 47, 108, 71, 36, 104, 17, 0, 12, 67, 124, 226, 158, 65, 39, 101, 47, 35, 55, 0, 17,
+			70, 63, 56, 147, 205, 18, 128, 72, 37, 84, 89, 37, 51, 35, 47, 0, 13, 68, 62, 36, 202, 40, 72, 40, 89, 47, 35, 47, 0, 19,
+			70, 48, 116, 98, 33, 23, 51, 75, 108, 51, 40, 71, 35, 51, 104, 17, 37, 0, 17, 70, 42, 36, 72, 136, 194, 128, 47, 40, 51, 71,
+			39, 75, 36, 47, 0, 17, 69, 32, 114, 153, 84, 128, 71, 108, 47, 35, 35, 89, 89, 39, 71, 0, 14, 69, 31, 52, 135, 33, 224, 37,
+			88, 108, 71, 36, 55, 0, 13, 68, 28, 172, 222, 128, 36, 47, 37, 55, 36, 50, 0, 0, 14, 68, 207, 17, 224, 132, 57, 36, 81, 108,
+			50, 36, 12, 0, 15, 68, 193, 242, 18, 132, 49, 39, 65, 71, 39, 88, 36, 12, 0, 11, 67, 192, 118, 31, 49, 108, 88, 36, 65, 0,
+			13, 68, 136, 119, 158, 132, 84, 35, 55, 55, 108, 107, 0, 13, 68, 129, 65, 224, 132, 50, 36, 91, 108, 50, 36, 0, 14, 67, 125, 180,
+			77, 65, 39, 83, 35, 51, 51, 35, 107, 0, 17, 68, 125, 49, 158, 132, 65, 35, 89, 10, 6, 35, 12, 55, 36, 12, 0, 15, 68, 113,
+			17, 214, 132, 104, 17, 39, 51, 108, 88, 36, 12, 0, 14, 68, 104, 124, 222, 132, 104, 17, 108, 19, 36, 55, 36, 0, 10, 67, 90, 39,
+			0, 88, 39, 104, 17, 0, 14, 68, 70, 33, 224, 132, 51, 35, 84, 108, 50, 36, 12, 0, 12, 67, 68, 119, 31, 51, 108, 104, 17, 36,
+			65, 0, 17, 70, 63, 8, 145, 30, 248, 64, 72, 36, 49, 40, 51, 108, 90, 36, 0, 13, 68, 62, 34, 30, 132, 72, 40, 71, 55, 36,
+			12, 0, 14, 68, 57, 18, 18, 132, 101, 35, 51, 71, 39, 88, 36, 0, 15, 68, 54, 37, 94, 132, 107, 39, 12, 89, 36, 55, 36, 12,
+			0, 14, 68, 49, 18, 18, 132, 75, 39, 51, 71, 39, 88, 36, 0, 19, 71, 32, 114, 179, 76, 168, 138, 28, 71, 108, 47, 37, 89, 47,
+			40, 47, 108, 0, 0, 10, 67, 193, 232, 0, 49, 39, 55, 50, 0, 17, 69, 125, 65, 209, 192, 160, 65, 39, 91, 108, 51, 36, 49, 35,
+			47, 0, 14, 69, 71, 52, 223, 30, 0, 51, 37, 89, 65, 108, 50, 0, 11, 67, 65, 236, 0, 88, 108, 55, 36, 49, 0, 12, 67, 41,
+			23, 210, 47, 39, 51, 65, 39, 88, 0, 8, 67, 30, 44, 192, 40, 57, 0, 15, 68, 29, 231, 222, 120, 39, 55, 6, 65, 36, 55, 35,
+			55, 0, 0, 14, 69, 206, 40, 51, 74, 16, 57, 39, 50, 37, 88, 36, 0, 17, 70, 198, 36, 72, 30, 230, 192, 81, 39, 51, 71, 108,
+			76, 39, 83, 0, 19, 70, 195, 49, 209, 76, 167, 192, 49, 37, 57, 108, 51, 39, 89, 47, 35, 65, 0, 18, 69, 181, 52, 72, 186, 16,
+			48, 36, 89, 35, 51, 71, 35, 76, 76, 36, 0, 10, 67, 136, 124, 19, 84, 108, 49, 89, 0, 11, 67, 127, 52, 83, 65, 37, 51, 36,
+			89, 0, 16, 68, 125, 162, 160, 124, 65, 39, 104, 17, 47, 35, 50, 35, 65, 0, 17, 69, 125, 161, 210, 122, 16, 65, 39, 104, 17, 108,
+			88, 36, 55, 36, 0, 17, 68, 124, 172, 30, 124, 65, 39, 47, 36, 49, 35, 55, 55, 36, 65, 0, 17, 68, 124, 166, 30, 124, 65, 39,
+			47, 36, 88, 35, 55, 55, 36, 65, 0, 10, 67, 108, 124, 19, 83, 108, 49, 89, 0, 21, 72, 91, 49, 193, 29, 230, 94, 124, 112, 88,
+			37, 57, 39, 55, 39, 55, 35, 65, 108, 0, 11, 67, 89, 20, 64, 88, 35, 51, 35, 51, 0, 15, 69, 35, 56, 7, 130, 16, 71, 37,
+			50, 108, 50, 36, 12, 0, 18, 69, 35, 50, 162, 50, 16, 71, 37, 47, 35, 84, 35, 75, 75, 39, 107, 0, 16, 69, 28, 132, 95, 68,
+			240, 35, 71, 35, 51, 65, 35, 51, 72, 0, 0, 13, 67, 192, 172, 20, 49, 39, 47, 35, 49, 35, 91, 0, 23, 72, 181, 18, 162, 61,
+			23, 199, 131, 48, 48, 35, 51, 47, 39, 72, 35, 51, 65, 108, 50, 37, 0, 13, 67, 105, 26, 212, 104, 17, 39, 51, 51, 36, 91, 0,
+			11, 67, 93, 18, 0, 47, 35, 51, 35, 71, 0, 0, 11, 67, 194, 39, 145, 49, 40, 55, 36, 51, 0, 13, 68, 193, 236, 237, 76, 49,
+			37, 55, 37, 48, 89, 0, 13, 67, 185, 195, 209, 76, 36, 104, 17, 35, 72, 51, 0, 11, 67, 182, 44, 17, 48, 39, 49, 36, 51, 0,
+			19, 70, 134, 3, 226, 30, 8, 64, 107, 36, 50, 72, 36, 84, 108, 50, 36, 12, 0, 17, 69, 125, 50, 158, 73, 240, 65, 39, 89, 47,
+			35, 55, 88, 36, 65, 0, 12, 67, 109, 54, 209, 83, 39, 89, 83, 39, 51, 0, 17, 70, 44, 116, 71, 121, 232, 64, 89, 108, 51, 35,
+			55, 55, 108, 107, 0, 10, 67, 43, 50, 145, 47, 37, 47, 51, 0, 17, 70, 34, 12, 79, 30, 8, 64, 71, 35, 50, 81, 72, 108, 50,
+			36, 0, 14, 67, 33, 195, 209, 71, 36, 104, 17, 35, 72, 51, 36, 0, 17, 70, 32, 119, 140, 125, 232, 64, 71, 36, 55, 75, 39, 65,
+			55, 36, 0, 18, 70, 31, 8, 147, 205, 50, 159, 36, 49, 39, 89, 37, 89, 47, 36, 65, 0, 15, 68, 29, 231, 15, 76, 39, 55, 104,
+			17, 39, 72, 39, 89, 0, 15, 68, 29, 53, 220, 76, 39, 89, 47, 39, 104, 17, 39, 89, 0, 0, 13, 68, 196, 116, 176, 80, 81, 108,
+			88, 49, 36, 91, 0, 15, 68, 181, 52, 112, 80, 48, 36, 89, 35, 51, 49, 39, 91, 0, 15, 69, 136, 116, 202, 138, 0, 84, 108, 89,
+			35, 47, 40, 50, 0, 16, 69, 130, 35, 34, 30, 0, 50, 39, 12, 75, 35, 84, 108, 50, 0, 15, 68, 129, 180, 240, 80, 50, 35, 83,
+			35, 89, 49, 36, 91, 0, 23, 72, 126, 34, 162, 69, 60, 240, 120, 160, 65, 39, 47, 39, 51, 10, 89, 37, 49, 55, 36, 47, 0, 16,
+			69, 32, 116, 83, 194, 208, 71, 108, 51, 39, 89, 49, 39, 48, 0, 12, 68, 32, 116, 72, 204, 71, 108, 51, 71, 37, 0, 11, 67, 29,
+			231, 237, 39, 55, 35, 65, 48, 0, 0, 11, 67, 193, 245, 0, 49, 35, 65, 35, 91, 0, 16, 68, 185, 168, 15, 68, 76, 39, 104, 17,
+			39, 50, 72, 35, 51, 0, 14, 67, 125, 55, 151, 65, 39, 89, 35, 55, 55, 35, 47, 0, 14, 67, 125, 51, 211, 65, 39, 89, 35, 72,
+			72, 35, 89, 0, 17, 68, 124, 165, 145, 68, 65, 39, 47, 36, 88, 35, 51, 51, 36, 51, 0, 16, 69, 41, 230, 199, 193, 48, 47, 36,
+			55, 36, 83, 108, 49, 89, 0, 11, 67, 33, 21, 64, 71, 35, 51, 35, 89, 0, 18, 70, 28, 136, 159, 77, 231, 192, 35, 71, 40, 65,
+			39, 89, 55, 36, 65, 0, 24, 7, 217, 135, 226, 128, 140, 216, 180, 107, 36, 75, 51, 37, 57, 36, 9, 91, 35, 65, 89, 37, 0, 46,
+			0, 13, 67, 185, 167, 179, 76, 39, 104, 17, 39, 55, 37, 0, 13, 67, 125, 87, 179, 65, 39, 89, 35, 55, 55, 108, 0, 12, 67, 120,
+			136, 51, 55, 35, 71, 35, 50, 37, 0, 16, 69, 112, 116, 223, 122, 32, 104, 17, 108, 89, 36, 65, 55, 40, 0, 12, 67, 109, 70, 212,
+			83, 36, 91, 83, 36, 91, 0, 11, 67, 92, 119, 148, 47, 108, 55, 36, 91, 0, 11, 67, 82, 36, 84, 91, 40, 51, 36, 91, 0, 24,
+			72, 49, 44, 209, 36, 119, 153, 68, 128, 75, 35, 88, 37, 51, 35, 47, 39, 55, 35, 51, 35, 71, 0, 15, 69, 33, 4, 109, 29, 64,
+			71, 35, 88, 51, 48, 108, 91, 0, 17, 69, 32, 244, 83, 43, 48, 71, 36, 72, 39, 51, 39, 89, 47, 37, 0, 0, 16, 69, 186, 17,
+			209, 61, 16, 76, 108, 107, 108, 51, 72, 35, 51, 0, 13, 68, 183, 52, 112, 76, 48, 37, 51, 36, 49, 89, 0, 15, 69, 182, 39, 179,
+			125, 16, 48, 39, 55, 37, 65, 36, 51, 0, 11, 67, 123, 51, 209, 55, 37, 72, 36, 51, 0, 12, 67, 93, 23, 0, 47, 39, 51, 39,
+			104, 17, 0, 16, 69, 80, 115, 223, 133, 16, 91, 6, 108, 72, 65, 36, 107, 51, 0, 23, 71, 56, 120, 145, 127, 49, 224, 132, 101, 108,
+			84, 35, 51, 36, 65, 37, 57, 108, 50, 36, 12, 0, 16, 69, 56, 116, 84, 193, 16, 101, 108, 51, 91, 36, 49, 35, 51, 0, 15, 70,
+			31, 56, 8, 31, 4, 192, 37, 50, 71, 108, 49, 89, 0, 10, 67, 28, 241, 209, 36, 72, 108, 51, 0, 0, 15, 68, 197, 50, 145, 80,
+			81, 39, 89, 47, 35, 51, 36, 91, 0, 13, 67, 193, 230, 202, 6, 49, 39, 55, 39, 83, 47, 0, 14, 68, 187, 17, 222, 80, 76, 36,
+			81, 108, 55, 36, 91, 0, 16, 69, 125, 172, 222, 30, 0, 65, 39, 104, 17, 37, 55, 108, 50, 0, 13, 67, 105, 230, 10, 104, 17, 36,
+			55, 88, 35, 47, 0, 14, 68, 78, 6, 224, 204, 89, 35, 50, 83, 39, 50, 37, 0, 0, 13, 68, 135, 2, 135, 68, 107, 36, 49, 47,
+			108, 51, 0, 16, 68, 125, 196, 107, 68, 65, 39, 104, 17, 35, 51, 51, 35, 51, 0, 24, 72, 98, 28, 209, 29, 227, 226, 122, 16, 88,
+			35, 107, 37, 51, 39, 72, 72, 39, 84, 55, 36, 12, 0, 13, 68, 62, 28, 199, 68, 72, 36, 107, 57, 108, 51, 0, 16, 69, 33, 116,
+			115, 71, 0, 71, 35, 47, 51, 37, 51, 35, 49, 0, 0, 13, 68, 197, 50, 135, 56, 81, 39, 89, 47, 108, 101, 0, 13, 68, 136, 116,
+			91, 40, 84, 108, 51, 35, 83, 47, 0, 16, 69, 133, 252, 71, 131, 48, 107, 35, 65, 36, 81, 108, 50, 37, 0, 14, 67, 124, 199, 178,
+			65, 35, 75, 35, 55, 55, 36, 12, 0, 17, 68, 124, 165, 10, 40, 65, 39, 47, 36, 91, 35, 47, 47, 36, 47, 0, 15, 69, 101, 82,
+			7, 131, 48, 35, 89, 35, 71, 108, 50, 37, 0, 16, 69, 76, 168, 143, 131, 48, 89, 39, 47, 40, 72, 35, 50, 37, 0, 15, 69, 74,
+			3, 199, 131, 48, 88, 36, 50, 72, 108, 50, 37, 0, 15, 69, 70, 34, 17, 42, 32, 51, 39, 71, 36, 51, 47, 39, 0, 17, 69, 60,
+			226, 145, 193, 64, 72, 39, 101, 47, 35, 51, 49, 39, 91, 0, 16, 69, 56, 120, 28, 123, 48, 101, 108, 50, 104, 17, 39, 55, 37, 0,
+			14, 69, 31, 2, 162, 183, 48, 36, 49, 47, 39, 48, 37, 0, 16, 69, 9, 236, 81, 42, 32, 108, 55, 36, 81, 51, 36, 47, 39, 0,
+			0, 16, 69, 197, 22, 202, 29, 16, 81, 36, 51, 36, 83, 47, 108, 51, 0, 20, 70, 180, 244, 115, 40, 120, 0, 48, 36, 72, 35, 51,
+			37, 57, 36, 47, 108, 50, 0, 14, 68, 133, 66, 135, 60, 6, 107, 35, 91, 47, 108, 72, 0, 10, 67, 87, 51, 192, 89, 36, 57, 72,
+			0, 15, 69, 77, 33, 226, 29, 16, 89, 36, 88, 108, 84, 108, 51, 0, 18, 70, 60, 116, 98, 192, 120, 0, 72, 108, 51, 39, 84, 35,
+			49, 108, 50, 0, 24, 73, 48, 132, 71, 131, 17, 209, 30, 8, 64, 75, 35, 71, 51, 36, 50, 81, 108, 51, 108, 50, 36, 0, 13, 68,
+			32, 116, 112, 60, 71, 108, 51, 49, 39, 72, 0, 22, 72, 29, 251, 81, 204, 119, 179, 73, 240, 35, 65, 48, 36, 51, 57, 108, 55, 37,
+			88, 65, 0, 12, 68, 29, 227, 71, 60, 36, 55, 107, 108, 72, 0, 0, 17, 69, 197, 28, 81, 108, 160, 81, 39, 51, 81, 36, 51, 36,
+			83, 47, 0, 21, 69, 181, 23, 212, 112, 160, 48, 39, 51, 65, 35, 91, 36, 104, 17, 104, 17, 35, 47, 0, 16, 68, 137, 19, 224, 200,
+			84, 35, 51, 72, 35, 50, 36, 57, 36, 0, 16, 70, 123, 50, 162, 30, 12, 192, 55, 37, 47, 84, 108, 50, 37, 0, 18, 70, 112, 244,
+			79, 30, 12, 192, 104, 17, 35, 72, 51, 72, 108, 50, 37, 0, 16, 69, 49, 242, 34, 48, 160, 75, 36, 65, 71, 39, 75, 36, 47, 0,
+			17, 69, 42, 3, 209, 76, 160, 47, 35, 50, 72, 39, 51, 39, 89, 47, 0, 12, 67, 32, 246, 74, 71, 36, 72, 19, 35, 47, 0, 16,
+			70, 31, 8, 158, 138, 252, 192, 36, 49, 39, 55, 39, 90, 37, 0, 0, 12, 67, 198, 2, 15, 81, 39, 50, 71, 35, 72, 0, 11, 67,
+			193, 252, 0, 49, 39, 65, 35, 49, 0, 15, 69, 129, 28, 223, 30, 0, 50, 35, 51, 37, 65, 108, 50, 0, 17, 70, 128, 120, 84, 204,
+			116, 64, 50, 108, 107, 39, 91, 57, 108, 51, 0, 17, 69, 115, 53, 81, 30, 0, 104, 17, 36, 57, 89, 35, 51, 108, 50, 0, 0, 13,
+			67, 197, 18, 50, 81, 39, 51, 71, 36, 57, 36, 0, 18, 70, 182, 36, 82, 124, 120, 51, 48, 40, 51, 88, 35, 65, 108, 50, 37, 0,
+			18, 70, 127, 52, 135, 126, 215, 179, 65, 37, 88, 108, 65, 48, 36, 55, 37, 0, 18, 69, 125, 145, 223, 123, 32, 65, 39, 19, 108, 65,
+			36, 55, 36, 57, 36, 0, 14, 68, 85, 179, 71, 40, 89, 35, 83, 35, 107, 108, 47, 0, 12, 67, 80, 135, 0, 91, 35, 71, 35, 104,
+			17, 0, 17, 70, 58, 35, 199, 205, 248, 51, 101, 39, 72, 37, 65, 36, 50, 37, 0, 21, 70, 33, 232, 15, 124, 242, 128, 71, 39, 55,
+			35, 50, 72, 65, 39, 72, 72, 35, 47, 0, 0, 11, 67, 9, 34, 176, 108, 88, 47, 35, 49, 0, 0, 22, 72, 193, 251, 98, 75, 52,
+			243, 138, 0, 49, 39, 65, 48, 39, 88, 37, 89, 57, 39, 50, 0, 15, 68, 181, 24, 175, 200, 48, 39, 51, 39, 90, 36, 57, 36, 0,
+			16, 70, 135, 52, 98, 63, 56, 0, 107, 37, 51, 39, 72, 37, 50, 0, 22, 71, 34, 3, 209, 30, 4, 158, 204, 71, 35, 50, 72, 35,
+			51, 35, 50, 88, 35, 55, 37, 0, 11, 67, 28, 242, 7, 39, 72, 35, 71, 108, 0, 0, 16, 69, 32, 229, 51, 62, 0, 71, 35, 101,
+			91, 37, 72, 35, 50, 0, 0, 15, 68, 128, 244, 74, 28, 50, 39, 72, 51, 35, 47, 35, 50, 0, 17, 68, 125, 18, 136, 28, 65, 39,
+			51, 35, 47, 47, 35, 71, 35, 50, 0, 23, 72, 110, 8, 159, 130, 39, 162, 191, 48, 83, 36, 50, 39, 65, 36, 50, 39, 55, 39, 90,
+			37, 0, 12, 68, 31, 56, 12, 28, 6, 37, 50, 75, 108, 0, 20, 72, 31, 55, 226, 130, 39, 162, 191, 48, 37, 65, 39, 50, 39, 55,
+			39, 90, 37, 0, 10, 3, 95, 217, 136, 6, 84, 108, 84, 0, 0, 22, 72, 130, 36, 71, 120, 120, 34, 29, 16, 50, 40, 51, 39, 55,
+			19, 35, 50, 84, 108, 51, 0, 23, 72, 32, 212, 71, 120, 120, 34, 29, 16, 71, 35, 107, 51, 39, 55, 10, 35, 50, 84, 108, 51, 0,
+			0, 11, 67, 207, 3, 7, 57, 36, 49, 75, 108, 0, 11, 67, 197, 229, 0, 81, 39, 55, 35, 91, 0, 15, 69, 180, 114, 17, 48, 112,
+			48, 108, 71, 35, 51, 75, 108, 0, 15, 69, 133, 252, 224, 48, 112, 107, 35, 65, 37, 50, 75, 108, 0, 11, 67, 130, 43, 71, 50, 39,
+			12, 48, 108, 0, 13, 67, 124, 183, 135, 65, 35, 89, 35, 55, 35, 50, 0, 13, 67, 113, 226, 7, 104, 17, 35, 55, 71, 35, 50, 0,
+			12, 67, 109, 151, 135, 83, 36, 19, 55, 35, 50, 0, 15, 69, 48, 115, 209, 48, 112, 75, 108, 72, 35, 51, 75, 108, 0, 16, 69, 40,
+			244, 115, 48, 112, 47, 35, 72, 51, 37, 75, 35, 50, 0, 25, 73, 30, 220, 207, 127, 56, 158, 138, 252, 192, 36, 48, 37, 72, 36, 65,
+			37, 57, 39, 55, 39, 90, 37, 0, 11, 67, 29, 230, 135, 36, 55, 104, 17, 108, 0, 11, 67, 29, 87, 135, 35, 89, 55, 35, 50, 0,
+			15, 69, 29, 20, 224, 207, 0, 35, 51, 89, 36, 50, 37, 49, 0, 11, 67, 28, 135, 7, 36, 71, 104, 17, 108, 0, 0, 12, 67, 181,
+			231, 237, 48, 39, 55, 39, 65, 48, 0, 14, 68, 76, 232, 49, 136, 89, 39, 101, 35, 50, 81, 40, 0, 0, 9, 66, 193, 240, 6, 49,
+			35, 65, 0, 13, 68, 186, 3, 202, 28, 76, 35, 50, 72, 47, 108, 0, 13, 68, 185, 28, 18, 28, 76, 36, 51, 49, 88, 108, 0, 13,
+			68, 135, 56, 158, 28, 107, 35, 57, 40, 55, 108, 0, 16, 68, 124, 168, 158, 28, 65, 39, 47, 36, 84, 35, 55, 55, 108, 0, 11, 67,
+			76, 131, 192, 89, 35, 71, 35, 72, 0, 10, 67, 75, 51, 192, 88, 36, 57, 72, 0, 13, 68, 69, 147, 210, 28, 51, 35, 19, 72, 88,
+			108, 0, 13, 68, 43, 12, 222, 28, 47, 36, 49, 37, 55, 108, 0, 14, 68, 33, 23, 222, 28, 71, 35, 51, 65, 35, 55, 108, 0, 14,
+			68, 32, 119, 30, 28, 71, 108, 104, 17, 36, 55, 108, 0, 0, 17, 69, 193, 21, 32, 62, 32, 49, 36, 51, 36, 91, 36, 50, 72, 39,
+			0, 10, 67, 186, 43, 115, 76, 40, 71, 37, 0, 22, 72, 180, 116, 71, 193, 236, 224, 207, 0, 48, 108, 51, 108, 49, 36, 55, 37, 50,
+			37, 49, 0, 11, 67, 127, 60, 98, 65, 36, 57, 81, 40, 0, 13, 67, 41, 83, 243, 47, 35, 89, 35, 72, 72, 37, 0, 13, 67, 40,
+			229, 243, 47, 35, 101, 35, 47, 47, 37, 0, 16, 69, 35, 24, 159, 198, 32, 71, 36, 81, 39, 65, 35, 81, 40, 0, 0, 13, 67, 207,
+			10, 225, 6, 57, 36, 49, 49, 36, 12, 0, 11, 67, 193, 247, 192, 49, 35, 65, 35, 65, 0, 12, 67, 190, 3, 225, 90, 36, 50, 72,
+			36, 12, 0, 16, 69, 136, 195, 199, 128, 112, 84, 36, 75, 72, 108, 50, 35, 50, 0, 15, 69, 133, 36, 71, 180, 112, 107, 36, 88, 108,
+			51, 48, 108, 0, 10, 67, 129, 86, 192, 50, 36, 89, 83, 0, 17, 70, 128, 123, 94, 206, 40, 0, 50, 108, 48, 36, 55, 19, 39, 50,
+			0, 15, 69, 126, 39, 135, 128, 112, 65, 39, 12, 55, 108, 50, 108, 0, 18, 69, 124, 210, 159, 120, 112, 65, 39, 107, 47, 35, 65, 36,
+			55, 35, 50, 0, 14, 67, 124, 183, 139, 65, 39, 89, 35, 55, 55, 35, 89, 0, 12, 67, 122, 12, 97, 55, 36, 50, 81, 36, 12, 0,
+			11, 67, 101, 243, 225, 39, 65, 72, 36, 12, 0, 13, 67, 101, 195, 225, 19, 39, 104, 17, 72, 36, 12, 0, 12, 67, 74, 3, 225, 88,
+			36, 50, 72, 36, 12, 0, 12, 67, 70, 3, 225, 51, 35, 50, 72, 36, 12, 0, 18, 70, 63, 4, 202, 68, 120, 0, 72, 36, 49, 89,
+			47, 36, 51, 108, 50, 0, 17, 69, 41, 196, 115, 32, 112, 47, 35, 104, 17, 51, 37, 71, 35, 50, 0, 11, 67, 34, 23, 192, 71, 36,
+			107, 35, 65, 0, 17, 70, 31, 1, 210, 206, 40, 0, 39, 49, 108, 88, 37, 57, 39, 50, 0, 0, 12, 67, 186, 1, 224, 76, 36, 6,
+			50, 108, 50, 0, 15, 67, 126, 34, 220, 65, 39, 84, 35, 89, 89, 35, 104, 17, 0, 12, 67, 126, 23, 138, 65, 39, 107, 55, 35, 47,
+			0, 13, 67, 105, 183, 138, 104, 17, 36, 83, 55, 35, 47, 0, 13, 68, 40, 104, 145, 204, 47, 36, 19, 39, 51, 37, 0, 18, 70, 32,
+			229, 34, 63, 28, 192, 71, 35, 101, 91, 40, 72, 36, 81, 37, 0, 0, 11, 67, 181, 35, 192, 48, 35, 88, 35, 72, 0, 13, 68, 135,
+			51, 15, 132, 107, 37, 75, 72, 35, 107, 0, 12, 67, 125, 83, 91, 65, 39, 89, 107, 35, 83, 0, 10, 67, 125, 35, 192, 65, 39, 88,
+			72, 0, 12, 67, 124, 215, 176, 65, 39, 107, 55, 36, 49, 0, 12, 67, 79, 51, 192, 89, 36, 57, 57, 36, 72, 0, 13, 68, 60, 119,
+			241, 132, 72, 108, 65, 81, 35, 107, 0, 12, 67, 55, 1, 223, 107, 39, 49, 49, 108, 65, 0, 12, 67, 42, 2, 48, 47, 39, 50, 71,
+			35, 49, 0, 11, 67, 29, 34, 48, 39, 88, 71, 35, 49, 0, 16, 70, 29, 28, 71, 129, 33, 192, 39, 51, 81, 108, 50, 88, 108, 0,
+			8, 65, 76, 6, 89, 37, 50, 0, 0, 9, 66, 193, 224, 6, 49, 39, 55, 0, 14, 68, 182, 12, 89, 128, 48, 35, 50, 81, 40, 35,
+			50, 0, 17, 69, 181, 18, 15, 135, 48, 48, 39, 51, 71, 36, 72, 36, 107, 37, 0, 16, 69, 130, 36, 224, 199, 48, 50, 39, 12, 89,
+			35, 50, 81, 37, 0, 14, 68, 128, 193, 200, 40, 50, 36, 75, 108, 71, 35, 47, 0, 14, 67, 126, 44, 30, 65, 39, 84, 35, 49, 49,
+			36, 55, 0, 12, 67, 126, 3, 94, 65, 39, 50, 107, 35, 55, 0, 13, 67, 125, 119, 136, 6, 65, 35, 47, 55, 35, 71, 0, 14, 67,
+			125, 18, 136, 65, 39, 51, 35, 47, 47, 35, 71, 0, 17, 68, 124, 168, 151, 128, 65, 39, 47, 36, 84, 35, 47, 47, 36, 50, 0, 14,
+			67, 114, 247, 47, 104, 17, 36, 90, 104, 17, 36, 90, 0, 12, 67, 78, 44, 94, 89, 39, 12, 81, 39, 55, 0, 16, 68, 73, 24, 145,
+			112, 88, 35, 51, 84, 35, 51, 35, 104, 17, 0, 14, 68, 69, 44, 199, 128, 51, 35, 88, 37, 57, 108, 50, 0, 15, 69, 62, 36, 96,
+			199, 48, 72, 39, 51, 35, 50, 81, 37, 0, 10, 67, 44, 130, 128, 89, 35, 71, 47, 0, 15, 68, 41, 161, 200, 128, 47, 35, 104, 17,
+			108, 71, 39, 50, 0, 14, 68, 34, 33, 215, 128, 71, 36, 84, 108, 47, 36, 50, 0, 15, 69, 28, 136, 152, 35, 48, 35, 71, 40, 88,
+			35, 71, 37, 0, 0, 14, 67, 193, 231, 225, 6, 49, 35, 55, 35, 65, 36, 12, 0, 9, 67, 130, 38, 64, 50, 39, 19, 0, 14, 67,
+			125, 66, 33, 65, 39, 91, 35, 71, 71, 35, 107, 0, 15, 68, 125, 35, 145, 108, 65, 39, 88, 35, 101, 51, 35, 83, 0, 15, 68, 124,
+			226, 158, 108, 65, 39, 101, 47, 35, 55, 36, 83, 0, 12, 67, 112, 214, 192, 104, 17, 36, 107, 35, 83, 0, 13, 67, 105, 22, 225, 104,
+			17, 39, 51, 83, 36, 12, 0, 12, 67, 77, 22, 225, 89, 39, 51, 83, 36, 12, 0, 12, 67, 62, 23, 192, 6, 72, 35, 107, 39, 65,
+			0, 11, 67, 59, 52, 143, 101, 37, 88, 35, 72, 0, 11, 67, 57, 22, 225, 101, 39, 51, 83, 36, 0, 12, 67, 53, 70, 225, 107, 35,
+			91, 35, 83, 36, 0, 12, 67, 53, 22, 225, 107, 36, 51, 83, 36, 12, 0, 12, 67, 50, 3, 225, 75, 36, 50, 72, 36, 12, 0, 14,
+			68, 42, 33, 214, 100, 47, 35, 84, 108, 88, 39, 19, 0, 14, 68, 41, 33, 205, 124, 47, 35, 88, 108, 107, 39, 65, 0, 12, 67, 41,
+			18, 15, 47, 39, 51, 71, 39, 72, 0, 11, 67, 40, 214, 225, 47, 39, 107, 83, 36, 0, 16, 69, 33, 225, 210, 62, 16, 71, 35, 55,
+			108, 88, 35, 72, 36, 0, 11, 67, 30, 23, 192, 35, 107, 35, 65, 65, 0, 17, 70, 29, 66, 153, 29, 228, 135, 36, 91, 47, 36, 108,
+			55, 88, 108, 0, 11, 67, 10, 12, 97, 108, 50, 81, 35, 107, 0, 15, 68, 125, 17, 204, 100, 65, 39, 51, 108, 75, 36, 19, 0, 48,
+			15, 68, 125, 17, 204, 100, 65, 35, 51, 108, 75, 36, 19, 0, 46, 0, 11, 67, 197, 236, 0, 81, 39, 55, 35, 49, 0, 11, 67, 194,
+			1, 224, 49, 39, 50, 108, 50, 0, 17, 70, 131, 56, 10, 128, 248, 128, 50, 37, 50, 47, 36, 50, 72, 39, 0, 11, 67, 129, 76, 224,
+			50, 36, 91, 37, 50, 0, 12, 67, 127, 55, 224, 65, 36, 57, 65, 35, 50, 0, 14, 69, 76, 119, 159, 138, 0, 89, 108, 55, 65, 39,
+			50, 0, 16, 69, 74, 3, 199, 128, 160, 88, 36, 50, 72, 108, 50, 35, 47, 0, 9, 67, 70, 43, 192, 51, 39, 90, 0, 11, 67, 69,
+			44, 224, 51, 36, 88, 37, 50, 0, 11, 67, 62, 36, 142, 72, 40, 88, 35, 101, 0, 19, 70, 50, 44, 96, 61, 252, 192, 75, 39, 84,
+			81, 35, 50, 72, 39, 65, 37, 0, 10, 67, 28, 172, 224, 36, 47, 37, 50, 0, 14, 69, 10, 3, 199, 128, 160, 108, 50, 72, 108, 50,
+			47, 0, 12, 67, 129, 76, 224, 50, 36, 91, 37, 50, 0, 48, 12, 67, 129, 76, 224, 50, 35, 91, 37, 50, 0, 46, 0, 18, 70, 197,
+			19, 194, 124, 248, 64, 81, 36, 51, 72, 108, 65, 35, 72, 36, 0, 13, 68, 187, 1, 209, 132, 76, 36, 49, 108, 51, 36, 0, 12, 68,
+			184, 114, 159, 132, 76, 108, 47, 65, 36, 0, 11, 67, 183, 52, 192, 48, 37, 57, 36, 89, 0, 13, 68, 136, 120, 49, 132, 84, 108, 50,
+			81, 35, 107, 0, 15, 68, 128, 248, 96, 60, 50, 35, 72, 35, 107, 35, 50, 72, 0, 12, 67, 126, 37, 153, 65, 39, 12, 88, 36, 19,
+			0, 13, 68, 101, 81, 209, 132, 39, 89, 108, 51, 36, 12, 0, 14, 68, 49, 44, 209, 132, 75, 35, 88, 37, 51, 36, 12, 0, 12, 67,
+			34, 229, 31, 71, 36, 76, 36, 91, 65, 0, 14, 68, 32, 172, 15, 132, 71, 39, 47, 49, 35, 72, 36, 0, 13, 68, 32, 119, 158, 132,
+			71, 36, 55, 55, 108, 107, 0, 13, 68, 28, 209, 215, 132, 36, 107, 108, 47, 36, 12, 0, 13, 68, 28, 193, 209, 132, 36, 75, 108, 51,
+			36, 12, 0, 17, 70, 9, 33, 207, 124, 195, 192, 108, 88, 108, 72, 65, 35, 75, 72, 0, 0, 19, 70, 182, 36, 77, 204, 244, 115, 48,
+			40, 51, 107, 36, 57, 72, 35, 51, 37, 0, 14, 68, 137, 50, 145, 128, 84, 36, 89, 47, 36, 51, 50, 0, 18, 70, 127, 52, 135, 130,
+			215, 179, 65, 37, 88, 108, 50, 48, 37, 55, 37, 0, 15, 68, 125, 193, 209, 128, 65, 39, 104, 17, 108, 51, 36, 50, 0, 7, 66, 122,
+			32, 55, 39, 0, 14, 68, 109, 18, 145, 128, 83, 39, 51, 47, 51, 35, 50, 0, 11, 67, 62, 44, 94, 72, 39, 81, 39, 55, 0, 15,
+			68, 41, 193, 209, 128, 47, 35, 104, 17, 108, 51, 39, 50, 0, 13, 68, 32, 124, 209, 128, 71, 108, 57, 36, 51, 50, 0, 22, 72, 31,
+			51, 198, 137, 232, 175, 207, 0, 10, 37, 72, 36, 10, 39, 55, 39, 90, 37, 49, 0, 12, 68, 10, 12, 226, 128, 108, 50, 57, 39, 50,
+			0, 0, 15, 68, 186, 17, 209, 124, 6, 76, 108, 107, 108, 51, 39, 65, 0, 15, 69, 184, 119, 143, 70, 16, 76, 108, 55, 72, 35, 51,
+			51, 0, 14, 68, 129, 24, 179, 124, 50, 35, 51, 35, 84, 37, 65, 0, 15, 68, 126, 8, 79, 124, 65, 39, 50, 107, 35, 72, 36, 65,
+			0, 17, 69, 126, 1, 216, 70, 16, 65, 39, 50, 108, 88, 36, 51, 36, 12, 0, 14, 67, 125, 226, 19, 65, 39, 55, 35, 71, 71, 35,
+			89, 0, 17, 69, 125, 97, 209, 34, 16, 65, 39, 88, 108, 51, 36, 71, 36, 12, 0, 16, 69, 124, 129, 205, 46, 16, 65, 39, 71, 108,
+			107, 36, 89, 36, 0, 21, 70, 120, 124, 202, 57, 230, 192, 55, 108, 57, 35, 47, 35, 101, 35, 55, 55, 35, 83, 0, 16, 69, 109, 19,
+			160, 62, 16, 83, 35, 51, 101, 39, 50, 72, 36, 0, 20, 69, 105, 23, 15, 70, 16, 104, 17, 35, 51, 104, 17, 72, 35, 51, 51, 36,
+			12, 0, 10, 67, 94, 36, 64, 6, 47, 39, 51, 0, 16, 69, 79, 50, 34, 206, 16, 89, 37, 71, 35, 84, 36, 57, 107, 0, 13, 68,
+			63, 59, 94, 124, 72, 37, 48, 55, 39, 65, 0, 14, 68, 57, 22, 225, 124, 101, 35, 51, 83, 35, 107, 65, 0, 17, 69, 33, 225, 206,
+			70, 16, 71, 36, 55, 35, 101, 35, 51, 36, 12, 0, 19, 70, 32, 229, 7, 206, 3, 225, 71, 35, 101, 91, 108, 57, 108, 50, 72, 36,
+			0, 0, 14, 67, 125, 148, 146, 65, 39, 19, 35, 88, 88, 35, 88, 0, 12, 67, 125, 147, 18, 65, 39, 19, 75, 36, 88, 0, 13, 68,
+			125, 56, 162, 120, 65, 35, 89, 19, 40, 55, 0, 11, 67, 122, 43, 82, 55, 39, 48, 36, 88, 0, 17, 70, 109, 50, 179, 136, 119, 128,
+			83, 36, 89, 47, 37, 84, 108, 55, 0, 12, 67, 109, 27, 82, 83, 36, 51, 48, 35, 88, 0, 13, 68, 102, 33, 223, 120, 35, 84, 108,
+			65, 36, 55, 0, 15, 68, 61, 19, 207, 120, 72, 35, 51, 72, 36, 72, 36, 55, 0, 21, 71, 41, 23, 226, 41, 17, 237, 204, 47, 36,
+			51, 65, 39, 47, 39, 51, 108, 48, 37, 0, 20, 71, 40, 124, 19, 204, 244, 95, 204, 47, 108, 49, 89, 37, 72, 36, 51, 65, 37, 0,
+			13, 68, 29, 230, 79, 120, 39, 55, 10, 35, 72, 55, 0, 0, 18, 70, 197, 17, 243, 128, 248, 64, 81, 35, 51, 108, 57, 108, 50, 72,
+			36, 0, 11, 67, 135, 50, 145, 107, 37, 47, 36, 51, 0, 11, 67, 127, 50, 17, 65, 37, 71, 35, 51, 0, 17, 70, 109, 24, 159, 30,
+			3, 192, 83, 39, 51, 40, 65, 108, 50, 72, 0, 15, 69, 83, 52, 91, 133, 240, 91, 37, 51, 83, 35, 107, 65, 0, 16, 70, 78, 44,
+			238, 206, 12, 64, 89, 40, 37, 76, 37, 50, 81, 0, 12, 67, 77, 27, 81, 89, 35, 51, 48, 39, 51, 0, 15, 69, 63, 52, 91, 133,
+			240, 72, 37, 51, 83, 35, 107, 65, 0, 12, 67, 33, 18, 17, 71, 35, 51, 71, 35, 51, 0, 15, 69, 30, 220, 207, 69, 240, 36, 48,
+			37, 72, 36, 51, 65, 0, 0, 11, 67, 125, 247, 162, 65, 35, 65, 55, 39, 0, 12, 67, 81, 146, 0, 91, 39, 19, 35, 12, 71, 0,
+			10, 67, 78, 39, 162, 89, 39, 55, 39, 0, 13, 68, 74, 35, 237, 72, 88, 40, 72, 48, 35, 88, 0, 10, 67, 69, 242, 0, 51, 39,
+			65, 71, 0, 0, 19, 70, 193, 228, 98, 109, 23, 192, 49, 39, 55, 39, 51, 39, 83, 39, 51, 65, 0, 19, 70, 186, 17, 209, 62, 23,
+			192, 76, 108, 107, 108, 51, 72, 35, 107, 39, 65, 0, 11, 67, 134, 4, 64, 107, 39, 50, 35, 51, 0, 12, 67, 129, 19, 19, 50, 35,
+			51, 75, 36, 89, 0, 15, 68, 125, 146, 136, 68, 65, 39, 19, 47, 35, 71, 35, 51, 0, 14, 68, 124, 225, 200, 68, 65, 39, 101, 108,
+			71, 36, 51, 0, 11, 67, 122, 228, 64, 55, 35, 76, 35, 51, 0, 14, 69, 111, 55, 179, 181, 48, 83, 37, 55, 37, 48, 89, 0, 15,
+			68, 79, 4, 74, 68, 89, 36, 49, 51, 36, 47, 36, 51, 0, 15, 68, 41, 28, 222, 68, 47, 36, 51, 36, 57, 55, 36, 51, 0, 15,
+			69, 29, 236, 30, 207, 0, 35, 55, 49, 39, 55, 37, 49, 0, 21, 2, 95, 33, 35, 55, 108, 65, 35, 47, 36, 6, 47, 35, 19, 35,
+			75, 75, 39, 71, 0, 0, 12, 68, 196, 120, 15, 204, 81, 108, 50, 72, 37, 0, 15, 70, 196, 116, 162, 27, 55, 128, 81, 108, 88, 39,
+			37, 55, 0, 10, 67, 139, 56, 128, 84, 36, 57, 84, 0, 14, 69, 124, 116, 74, 206, 0, 65, 108, 51, 47, 37, 50, 0, 16, 69, 104,
+			124, 200, 30, 0, 104, 17, 108, 57, 36, 71, 108, 50, 0, 13, 68, 83, 1, 217, 204, 91, 39, 49, 108, 10, 37, 0, 13, 68, 68, 129,
+			217, 204, 51, 39, 71, 108, 10, 37, 0, 24, 73, 56, 120, 160, 61, 49, 222, 29, 28, 192, 101, 108, 84, 35, 50, 72, 89, 108, 55, 108,
+			51, 37, 0, 12, 68, 40, 114, 30, 136, 47, 108, 71, 55, 39, 0, 18, 70, 32, 114, 7, 81, 247, 128, 71, 108, 71, 108, 91, 35, 65,
+			35, 55, 0, 11, 67, 195, 56, 128, 49, 37, 57, 40, 0, 46, 0, 15, 69, 190, 43, 115, 41, 16, 90, 40, 48, 37, 47, 36, 51, 0,
+			15, 68, 125, 18, 136, 92, 65, 39, 51, 47, 35, 71, 36, 47, 0, 11, 67, 122, 34, 145, 55, 39, 47, 36, 51, 0, 11, 67, 115, 51,
+			192, 104, 17, 36, 57, 72, 0, 10, 67, 100, 131, 192, 35, 12, 71, 72, 0, 12, 67, 69, 247, 0, 51, 35, 65, 35, 104, 17, 0, 12,
+			67, 59, 50, 17, 101, 36, 57, 71, 35, 51, 0, 16, 69, 49, 24, 135, 49, 16, 75, 36, 51, 84, 108, 75, 36, 51, 0, 15, 69, 42,
+			44, 243, 41, 16, 47, 40, 37, 12, 47, 36, 51, 0, 11, 67, 29, 59, 81, 36, 89, 48, 35, 51, 0, 10, 67, 28, 131, 192, 35, 71,
+			35, 72, 0, 0, 11, 67, 196, 119, 148, 81, 108, 55, 36, 91, 0, 11, 67, 192, 132, 115, 49, 39, 71, 51, 108, 0, 17, 69, 181, 21,
+			15, 199, 48, 48, 39, 51, 91, 39, 72, 36, 81, 37, 0, 10, 67, 108, 119, 148, 83, 108, 55, 91, 0, 15, 69, 78, 212, 71, 130, 32,
+			89, 39, 48, 51, 108, 50, 39, 0, 11, 67, 58, 2, 243, 101, 39, 50, 89, 108, 0, 18, 69, 41, 232, 138, 122, 32, 47, 36, 55, 39,
+			12, 47, 36, 55, 39, 12, 0, 12, 67, 40, 130, 128, 47, 35, 71, 71, 35, 47, 0, 11, 67, 40, 119, 148, 47, 108, 55, 36, 91, 0,
+			17, 70, 34, 33, 222, 109, 104, 158, 71, 39, 55, 83, 39, 88, 40, 55, 0, 15, 69, 32, 246, 97, 63, 48, 71, 35, 72, 35, 107, 72,
+			37, 0, 12, 67, 32, 132, 115, 71, 36, 71, 35, 51, 37, 0, 13, 68, 32, 116, 74, 72, 71, 108, 51, 47, 36, 88, 0, 14, 68, 29,
+			40, 174, 72, 36, 88, 88, 39, 76, 36, 88, 0, 20, 71, 28, 168, 159, 29, 60, 226, 128, 39, 47, 39, 65, 108, 89, 37, 57, 39, 50,
+			0, 10, 67, 8, 130, 128, 108, 71, 35, 47, 0, 0, 17, 70, 182, 2, 135, 198, 40, 0, 48, 36, 50, 47, 108, 81, 39, 50, 0, 19,
+			70, 125, 19, 224, 80, 120, 0, 65, 39, 51, 72, 35, 50, 36, 91, 108, 50, 0, 9, 67, 122, 35, 64, 55, 39, 107, 0, 14, 68, 109,
+			24, 136, 68, 83, 39, 51, 40, 71, 35, 51, 0, 18, 70, 69, 44, 211, 40, 120, 19, 51, 36, 88, 37, 89, 47, 108, 50, 89, 0, 17,
+			70, 48, 120, 49, 137, 228, 64, 75, 108, 50, 81, 40, 55, 36, 51, 0, 15, 68, 33, 24, 136, 68, 71, 36, 51, 51, 39, 71, 36, 51,
+			0, 0, 12, 68, 132, 120, 17, 204, 107, 108, 50, 51, 37, 0, 16, 69, 128, 227, 34, 30, 0, 50, 35, 101, 75, 35, 84, 108, 50, 0,
+			14, 68, 125, 85, 219, 204, 65, 39, 89, 47, 35, 83, 108, 0, 9, 67, 122, 43, 192, 55, 39, 90, 0, 14, 68, 77, 183, 177, 204, 89,
+			39, 83, 55, 36, 81, 37, 0, 14, 68, 41, 184, 49, 204, 47, 39, 83, 35, 50, 81, 37, 0, 11, 67, 29, 247, 138, 39, 65, 55, 36,
+			47, 0, 0, 16, 69, 186, 17, 209, 33, 16, 76, 108, 107, 108, 51, 71, 35, 51, 0, 19, 70, 182, 36, 81, 128, 194, 17, 48, 40, 51,
+			51, 35, 50, 75, 71, 35, 51, 0, 11, 67, 137, 35, 192, 84, 35, 88, 35, 72, 0, 10, 67, 100, 130, 192, 35, 71, 35, 89, 0, 21,
+			70, 58, 4, 145, 182, 4, 145, 101, 36, 50, 88, 36, 51, 48, 36, 50, 88, 36, 51, 0, 15, 69, 42, 33, 179, 41, 16, 47, 40, 19,
+			37, 47, 36, 51, 0, 10, 67, 30, 43, 112, 39, 48, 36, 49, 0, 10, 67, 31, 51, 192, 37, 12, 72, 0, 76, 0, 16, 69, 187, 24,
+			160, 199, 48, 76, 36, 81, 40, 50, 36, 81, 37, 0, 12, 67, 101, 72, 178, 36, 91, 84, 36, 57, 36, 0, 14, 68, 69, 49, 222, 40,
+			51, 36, 89, 108, 55, 35, 47, 0, 14, 68, 61, 225, 222, 40, 72, 36, 55, 108, 55, 35, 47, 0, 16, 69, 41, 17, 239, 63, 48, 47,
+			36, 51, 108, 90, 36, 72, 37, 0, 16, 69, 34, 20, 96, 199, 48, 71, 36, 107, 51, 35, 50, 81, 37, 0, 15, 68, 32, 118, 82, 40,
+			71, 108, 19, 36, 88, 88, 35, 47, 0, 0, 17, 70, 196, 120, 146, 32, 120, 0, 81, 108, 84, 88, 35, 71, 108, 50, 0, 18, 70, 196,
+			120, 49, 76, 164, 64, 81, 108, 50, 81, 36, 89, 47, 36, 51, 0, 19, 70, 182, 39, 179, 76, 164, 64, 48, 39, 55, 37, 57, 36, 89,
+			47, 36, 51, 0, 17, 70, 180, 116, 74, 204, 164, 64, 48, 108, 51, 47, 37, 47, 39, 51, 0, 12, 67, 121, 20, 143, 55, 35, 51, 88,
+			35, 72, 0, 10, 67, 86, 6, 64, 89, 39, 50, 19, 0, 10, 67, 31, 52, 143, 37, 88, 35, 72, 0, 16, 70, 29, 28, 240, 78, 40,
+			0, 36, 51, 37, 49, 89, 39, 50, 0, 18, 70, 8, 165, 32, 80, 120, 0, 108, 47, 35, 91, 50, 36, 91, 108, 50, 0, 19, 2, 95,
+			41, 48, 35, 51, 108, 50, 47, 36, 88, 71, 35, 89, 47, 36, 12, 0, 0, 14, 69, 196, 119, 135, 128, 160, 81, 108, 55, 108, 50, 47,
+			0, 17, 70, 180, 118, 212, 29, 28, 192, 48, 108, 83, 36, 91, 108, 51, 37, 0, 18, 69, 125, 18, 51, 30, 0, 65, 39, 51, 35, 71,
+			71, 37, 57, 108, 50, 0, 12, 67, 124, 178, 10, 65, 39, 89, 71, 35, 47, 0, 21, 70, 113, 231, 20, 128, 252, 192, 104, 17, 35, 55,
+			35, 104, 17, 91, 35, 50, 72, 37, 0, 16, 69, 70, 35, 212, 194, 0, 51, 40, 72, 91, 36, 49, 35, 50, 0, 16, 68, 41, 19, 31,
+			200, 47, 35, 51, 75, 39, 65, 36, 57, 36, 0, 15, 68, 32, 247, 30, 32, 71, 35, 72, 104, 17, 35, 55, 71, 0, 13, 68, 28, 193,
+			224, 32, 35, 75, 108, 50, 36, 71, 0, 20, 71, 9, 226, 7, 122, 43, 94, 136, 108, 55, 71, 108, 55, 40, 48, 39, 55, 39, 0, 16,
+			2, 95, 40, 48, 35, 51, 108, 50, 47, 36, 88, 71, 108, 88, 0, 0, 17, 70, 206, 40, 7, 204, 163, 192, 57, 40, 50, 108, 57, 47,
+			36, 72, 0, 25, 7, 217, 130, 226, 128, 140, 216, 184, 104, 12, 12, 35, 71, 55, 10, 35, 88, 9, 88, 39, 107, 51, 0, 46, 0, 19,
+			70, 128, 114, 17, 28, 244, 115, 50, 108, 71, 35, 51, 108, 72, 35, 51, 37, 0, 11, 67, 126, 35, 8, 65, 39, 75, 36, 71, 0, 18,
+			69, 68, 120, 109, 123, 32, 51, 108, 107, 48, 36, 55, 55, 36, 57, 36, 0, 13, 67, 63, 10, 242, 72, 35, 49, 49, 36, 57, 36, 0,
+			17, 69, 60, 120, 151, 120, 128, 72, 108, 12, 84, 47, 35, 55, 35, 71, 0, 11, 2, 95, 46, 50, 39, 104, 47, 36, 12, 0, 0, 15,
+			69, 197, 19, 199, 128, 240, 81, 35, 51, 72, 108, 50, 72, 0, 13, 67, 124, 172, 7, 65, 39, 47, 35, 49, 49, 108, 0, 16, 69, 32,
+			124, 211, 40, 240, 71, 36, 19, 37, 89, 47, 35, 72, 0, 16, 2, 95, 45, 50, 37, 65, 10, 83, 108, 89, 36, 55, 36, 12, 0, 0,
+			14, 68, 126, 33, 216, 32, 65, 39, 84, 108, 88, 36, 71, 0, 10, 67, 124, 216, 128, 65, 35, 107, 84, 0, 10, 67, 77, 156, 192, 89,
+			35, 19, 57, 0, 9, 67, 48, 248, 128, 75, 72, 39, 0, 21, 71, 9, 33, 209, 33, 232, 15, 204, 108, 88, 108, 51, 71, 39, 55, 35,
+			50, 72, 37, 0, 0, 7, 2, 95, 51, 89, 36, 0, 0, 8, 66, 183, 48, 48, 36, 57, 0, 24, 72, 108, 168, 177, 68, 119, 202, 71,
+			48, 83, 39, 47, 39, 81, 36, 51, 108, 65, 36, 47, 51, 37, 0, 12, 67, 95, 50, 0, 47, 35, 57, 57, 36, 71, 0, 17, 3, 95,
+			216, 159, 35, 55, 108, 65, 35, 47, 36, 89, 39, 108, 55, 0, 7, 2, 95, 50, 72, 39, 0, 0, 11, 67, 110, 36, 71, 83, 39, 51,
+			35, 50, 0, 10, 67, 78, 44, 199, 89, 39, 57, 108, 0, 12, 67, 69, 55, 199, 51, 35, 89, 65, 35, 50, 0, 12, 67, 57, 230, 199,
+			101, 39, 55, 35, 83, 108, 0, 11, 67, 49, 230, 199, 75, 39, 55, 83, 108, 0, 8, 2, 95, 49, 57, 36, 49, 0, 0, 13, 68, 133,
+			225, 240, 136, 107, 39, 55, 108, 49, 40, 0, 16, 69, 128, 228, 202, 206, 0, 50, 35, 101, 39, 89, 47, 37, 50, 0, 10, 67, 76, 200,
+			0, 89, 36, 57, 50, 0, 9, 2, 95, 48, 89, 36, 83, 51, 0, 0, 17, 68, 124, 195, 207, 28, 65, 39, 75, 35, 72, 72, 35, 72,
+			35, 50, 0, 14, 68, 70, 24, 31, 28, 51, 35, 107, 50, 35, 65, 108, 0, 11, 67, 69, 243, 192, 51, 35, 65, 35, 72, 0, 14, 68,
+			63, 2, 145, 28, 72, 39, 49, 47, 39, 51, 108, 0, 13, 68, 30, 2, 161, 28, 36, 50, 47, 36, 107, 108, 0, 10, 67, 9, 243, 192,
+			108, 65, 35, 72, 0, 9, 2, 95, 55, 107, 35, 83, 47, 0, 0, 11, 67, 125, 60, 34, 65, 39, 89, 49, 39, 0, 21, 72, 29, 60,
+			207, 120, 124, 10, 207, 0, 35, 89, 37, 72, 55, 108, 49, 47, 37, 49, 0, 10, 67, 29, 19, 226, 39, 51, 72, 40, 0, 8, 2, 95,
+			54, 91, 36, 91, 0, 17, 3, 95, 216, 155, 50, 39, 104, 47, 36, 84, 37, 51, 81, 40, 55, 0, 0, 12, 67, 198, 3, 225, 81, 39,
+			50, 72, 36, 12, 0, 12, 67, 194, 3, 225, 49, 39, 50, 72, 36, 12, 0, 16, 69, 128, 132, 79, 132, 112, 50, 35, 71, 35, 51, 72,
+			107, 108, 0, 20, 69, 124, 166, 95, 60, 112, 65, 39, 47, 36, 19, 35, 65, 65, 36, 72, 35, 50, 0, 11, 67, 79, 23, 192, 89, 35,
+			81, 35, 65, 0, 21, 74, 77, 246, 226, 131, 60, 7, 71, 4, 202, 68, 89, 35, 65, 83, 39, 50, 37, 49, 0, 11, 67, 76, 161, 207,
+			89, 36, 47, 108, 72, 0, 16, 70, 76, 116, 71, 110, 40, 0, 89, 108, 51, 108, 83, 39, 50, 0, 10, 67, 74, 23, 192, 88, 39, 107,
+			65, 0, 10, 67, 63, 23, 192, 72, 39, 81, 65, 0, 12, 67, 49, 236, 97, 75, 39, 55, 81, 36, 12, 0, 11, 67, 35, 1, 225, 71,
+			36, 49, 108, 107, 0, 11, 67, 33, 146, 225, 71, 36, 19, 89, 36, 0, 15, 69, 29, 50, 153, 108, 112, 36, 89, 47, 36, 19, 83, 108,
+			0, 9, 2, 95, 53, 48, 35, 50, 75, 0, 0, 13, 67, 126, 5, 220, 65, 35, 50, 47, 36, 104, 17, 0, 15, 69, 125, 44, 224, 30,
+			0, 65, 35, 88, 37, 50, 108, 50, 0, 12, 67, 86, 39, 138, 89, 39, 12, 55, 35, 47, 0, 12, 67, 83, 22, 202, 91, 36, 81, 36,
+			83, 47, 0, 11, 67, 80, 172, 0, 91, 35, 47, 35, 49, 0, 16, 70, 70, 40, 7, 120, 248, 128, 51, 39, 50, 108, 55, 72, 39, 0,
+			11, 67, 70, 39, 138, 51, 39, 55, 36, 47, 0, 12, 67, 62, 39, 138, 6, 72, 39, 55, 35, 47, 0, 11, 67, 41, 236, 202, 47, 36,
+			55, 37, 47, 0, 12, 67, 40, 215, 202, 47, 39, 107, 65, 35, 47, 0, 11, 67, 33, 236, 202, 71, 36, 55, 37, 47, 0, 11, 67, 32,
+			118, 220, 71, 108, 83, 104, 17, 0, 14, 69, 28, 172, 222, 206, 0, 36, 47, 37, 55, 37, 50, 0, 10, 2, 95, 52, 76, 108, 107, 108,
+			51, 0, 0, 15, 68, 181, 24, 15, 132, 48, 35, 51, 35, 50, 72, 36, 12, 0, 14, 67, 125, 18, 25, 65, 39, 51, 35, 71, 71, 35,
+			19, 0, 21, 70, 124, 167, 7, 33, 225, 192, 65, 39, 47, 35, 104, 17, 108, 71, 36, 55, 35, 50, 0, 17, 68, 124, 166, 79, 60, 65,
+			39, 47, 36, 19, 35, 72, 72, 36, 72, 0, 16, 70, 63, 56, 147, 205, 241, 192, 72, 37, 84, 89, 37, 65, 108, 0, 15, 68, 42, 216,
+			15, 132, 47, 35, 48, 35, 50, 72, 36, 12, 0, 15, 68, 42, 28, 235, 132, 47, 35, 107, 37, 12, 57, 36, 12, 0, 14, 67, 42, 6,
+			95, 47, 35, 50, 35, 19, 19, 39, 65, 0, 0, 11, 67, 198, 44, 94, 81, 40, 81, 36, 55, 0, 18, 70, 182, 36, 77, 29, 243, 243,
+			48, 40, 51, 107, 108, 65, 36, 72, 37, 0, 15, 69, 75, 52, 76, 123, 48, 88, 37, 51, 75, 39, 55, 37, 0, 12, 68, 70, 44, 199,
+			128, 51, 40, 57, 108, 50, 0, 13, 68, 34, 12, 199, 128, 71, 39, 50, 57, 108, 50, 0, 13, 68, 33, 28, 199, 128, 71, 36, 51, 57,
+			108, 50, 0, 10, 67, 29, 147, 222, 35, 72, 35, 55, 0, 12, 68, 29, 28, 199, 128, 39, 51, 57, 108, 50, 0, 14, 2, 95, 58, 6,
+			72, 39, 50, 39, 104, 47, 36, 12, 0, 0, 14, 67, 129, 195, 225, 50, 35, 104, 17, 35, 72, 36, 12, 0, 11, 67, 128, 124, 97, 50,
+			108, 81, 35, 107, 0, 12, 67, 126, 20, 97, 65, 39, 107, 51, 36, 12, 0, 15, 67, 125, 204, 207, 65, 39, 104, 17, 35, 57, 57, 35,
+			72, 0, 14, 67, 125, 22, 225, 65, 39, 51, 35, 83, 83, 35, 107, 0, 14, 68, 124, 241, 209, 192, 65, 35, 72, 108, 51, 36, 49, 0,
+			14, 67, 121, 204, 207, 55, 35, 104, 17, 104, 17, 37, 72, 0, 10, 67, 110, 23, 192, 83, 35, 107, 65, 0, 17, 69, 101, 236, 205, 62,
+			16, 19, 35, 55, 108, 107, 36, 72, 72, 36, 0, 17, 70, 100, 119, 159, 204, 120, 0, 108, 55, 35, 65, 37, 57, 108, 50, 0, 12, 67,
+			77, 180, 97, 89, 39, 83, 51, 36, 12, 0, 17, 70, 69, 50, 162, 68, 120, 0, 51, 36, 89, 47, 40, 51, 108, 50, 0, 13, 67, 56,
+			247, 225, 101, 35, 72, 35, 65, 36, 12, 0, 12, 67, 53, 180, 97, 107, 39, 83, 51, 36, 12, 0, 14, 68, 40, 241, 209, 192, 47, 35,
+			72, 108, 51, 39, 49, 0, 11, 67, 35, 23, 192, 71, 36, 81, 35, 65, 0, 17, 70, 32, 243, 162, 68, 124, 0, 71, 35, 72, 101, 39,
+			51, 108, 49, 0, 14, 68, 29, 39, 222, 192, 35, 88, 65, 35, 55, 35, 49, 0, 12, 68, 28, 167, 135, 108, 36, 47, 55, 108, 83, 0,
+			22, 72, 10, 2, 162, 79, 49, 224, 206, 0, 108, 50, 47, 39, 89, 37, 57, 108, 50, 37, 50, 0, 8, 2, 95, 57, 50, 39, 107, 0,
+			0, 32, 76, 186, 3, 223, 205, 236, 199, 68, 243, 222, 29, 28, 192, 76, 35, 50, 72, 65, 37, 55, 57, 108, 51, 72, 72, 39, 55, 108,
+			51, 37, 0, 11, 67, 136, 124, 96, 84, 108, 81, 39, 50, 0, 17, 70, 79, 52, 74, 69, 76, 192, 89, 37, 51, 47, 39, 51, 91, 37,
+			0, 16, 69, 77, 24, 49, 138, 0, 89, 35, 51, 50, 36, 81, 40, 50, 0, 11, 67, 68, 120, 96, 51, 108, 107, 36, 50, 0, 12, 67,
+			57, 113, 202, 101, 35, 47, 47, 108, 47, 0, 21, 70, 53, 60, 224, 113, 236, 192, 107, 39, 89, 36, 57, 108, 50, 104, 17, 39, 55, 37,
+			0, 11, 67, 48, 247, 128, 75, 35, 72, 35, 55, 0, 15, 67, 33, 19, 92, 71, 35, 51, 107, 35, 104, 17, 104, 17, 0, 16, 69, 29,
+			194, 145, 30, 0, 36, 104, 17, 47, 36, 51, 108, 50, 0, 14, 69, 29, 60, 34, 68, 160, 36, 89, 49, 39, 51, 47, 0, 9, 2, 95,
+			56, 107, 35, 91, 47, 0, 0, 14, 68, 197, 225, 209, 132, 81, 36, 55, 108, 51, 36, 12, 0, 14, 68, 197, 24, 179, 60, 81, 36, 51,
+			35, 84, 37, 72, 0, 15, 68, 194, 12, 81, 132, 49, 39, 50, 81, 36, 51, 36, 12, 0, 17, 69, 133, 178, 135, 61, 240, 6, 107, 35,
+			83, 47, 108, 72, 39, 65, 0, 11, 67, 129, 129, 223, 50, 36, 88, 108, 65, 0, 12, 67, 125, 24, 95, 65, 35, 51, 107, 35, 65, 0,
+			13, 67, 125, 19, 223, 65, 6, 35, 51, 72, 39, 65, 0, 17, 69, 124, 164, 71, 193, 240, 65, 39, 47, 36, 51, 108, 49, 36, 65, 0,
+			12, 67, 122, 33, 219, 55, 35, 84, 84, 108, 83, 0, 17, 68, 114, 23, 33, 132, 104, 17, 35, 107, 104, 17, 35, 107, 36, 12, 0, 18,
+			70, 109, 23, 199, 128, 248, 64, 83, 35, 51, 65, 108, 50, 72, 36, 107, 0, 16, 68, 105, 24, 15, 132, 104, 17, 39, 51, 51, 35, 50,
+			72, 36, 0, 14, 68, 81, 241, 215, 132, 91, 35, 65, 65, 108, 47, 36, 0, 13, 67, 77, 24, 95, 89, 35, 51, 10, 107, 35, 65, 0,
+			12, 67, 61, 24, 95, 72, 35, 51, 107, 35, 65, 0, 13, 68, 57, 17, 219, 132, 101, 39, 51, 108, 83, 36, 0, 15, 68, 41, 12, 17,
+			132, 47, 35, 88, 49, 35, 51, 36, 12, 0, 15, 68, 33, 56, 15, 132, 71, 35, 89, 35, 50, 72, 36, 12, 0, 12, 67, 33, 24, 95,
+			71, 35, 51, 107, 35, 65, 0, 15, 68, 33, 24, 15, 132, 71, 35, 51, 35, 50, 72, 36, 12, 0, 13, 68, 29, 65, 209, 132, 36, 91,
+			108, 51, 36, 12, 0, 0, 18, 70, 134, 33, 222, 80, 118, 243, 107, 39, 84, 35, 91, 91, 108, 83, 37, 0, 13, 68, 127, 60, 81, 128,
+			65, 37, 81, 51, 36, 50, 0, 12, 67, 125, 28, 30, 65, 36, 51, 49, 36, 55, 0, 12, 67, 124, 214, 222, 65, 35, 107, 83, 36, 55,
+			0, 20, 70, 124, 212, 95, 30, 12, 115, 65, 35, 107, 51, 35, 65, 108, 50, 36, 81, 37, 0, 19, 70, 61, 248, 177, 68, 118, 243, 72,
+			36, 65, 39, 81, 36, 51, 108, 83, 37, 0, 15, 68, 41, 172, 199, 128, 47, 39, 104, 17, 37, 57, 108, 50, 0, 19, 70, 35, 56, 177,
+			68, 118, 243, 71, 37, 57, 39, 81, 36, 51, 108, 83, 37, 0, 14, 68, 34, 39, 225, 128, 71, 40, 65, 36, 107, 36, 50, 0, 18, 70,
+			29, 59, 81, 124, 120, 115, 36, 89, 48, 35, 51, 65, 108, 107, 37, 0, 0, 18, 70, 198, 3, 7, 128, 247, 192, 81, 39, 50, 75, 108,
+			50, 72, 35, 65, 0, 13, 68, 192, 120, 15, 124, 49, 108, 50, 72, 39, 65, 0, 12, 67, 185, 164, 64, 76, 35, 104, 17, 35, 51, 0,
+			8, 66, 185, 48, 76, 39, 89, 0, 17, 69, 181, 24, 160, 62, 16, 48, 35, 51, 84, 35, 50, 72, 36, 12, 0, 16, 69, 137, 236, 217,
+			132, 240, 84, 35, 55, 37, 19, 35, 107, 72, 0, 15, 69, 132, 114, 136, 68, 240, 107, 108, 47, 71, 36, 51, 72, 0, 18, 68, 124, 167,
+			15, 124, 65, 39, 47, 36, 104, 17, 35, 72, 72, 36, 65, 0, 14, 68, 120, 115, 17, 124, 55, 108, 75, 35, 51, 35, 65, 0, 11, 67,
+			80, 196, 64, 91, 35, 75, 35, 51, 0, 17, 69, 77, 20, 160, 62, 16, 89, 35, 51, 88, 36, 50, 72, 36, 12, 0, 15, 69, 69, 49,
+			224, 62, 16, 51, 36, 89, 108, 50, 72, 36, 0, 21, 70, 59, 52, 95, 112, 247, 192, 101, 36, 57, 51, 36, 65, 35, 104, 17, 72, 35,
+			65, 0, 17, 70, 48, 113, 219, 40, 115, 225, 75, 108, 39, 83, 47, 108, 72, 36, 0, 10, 67, 46, 36, 64, 89, 39, 12, 51, 0, 15,
+			69, 32, 252, 7, 70, 16, 71, 35, 72, 49, 108, 51, 36, 0, 15, 69, 32, 117, 135, 110, 16, 71, 36, 36, 88, 108, 83, 36, 0, 9,
+			67, 30, 40, 19, 39, 50, 89, 0, 10, 67, 8, 196, 64, 108, 75, 39, 51, 0, 0, 14, 68, 135, 49, 240, 120, 107, 35, 57, 108, 49,
+			36, 55, 0, 11, 67, 83, 12, 192, 91, 35, 49, 49, 37, 0, 11, 67, 51, 55, 210, 75, 36, 57, 65, 88, 0, 11, 67, 33, 236, 210,
+			71, 39, 55, 37, 88, 0, 16, 69, 29, 66, 179, 29, 192, 36, 91, 47, 37, 57, 108, 104, 17, 0, 13, 68, 29, 50, 179, 48, 36, 89,
+			47, 36, 57, 75, 0, 20, 71, 9, 50, 145, 137, 242, 145, 204, 108, 89, 47, 51, 39, 65, 36, 47, 51, 37, 0, 8, 65, 80, 6, 91,
+			37, 50, 0, 0, 10, 67, 204, 132, 192, 57, 39, 71, 89, 0, 12, 67, 194, 34, 209, 49, 39, 12, 89, 35, 51, 0, 12, 67, 194, 12,
+			81, 49, 35, 50, 81, 35, 51, 0, 16, 69, 194, 3, 219, 133, 240, 49, 39, 50, 72, 83, 35, 107, 65, 0, 20, 71, 181, 52, 78, 136,
+			120, 15, 132, 48, 36, 89, 35, 51, 101, 108, 50, 72, 36, 0, 8, 66, 181, 16, 48, 39, 51, 0, 16, 69, 180, 120, 21, 61, 240, 48,
+			108, 50, 89, 35, 72, 39, 65, 0, 12, 67, 126, 3, 17, 65, 39, 50, 75, 35, 51, 0, 10, 67, 100, 132, 192, 35, 71, 35, 89, 0,
+			11, 67, 92, 132, 192, 47, 35, 71, 35, 89, 0, 14, 68, 77, 24, 179, 76, 6, 89, 36, 51, 84, 37, 89, 0, 11, 67, 73, 243, 0,
+			88, 35, 65, 35, 75, 0, 12, 67, 63, 2, 145, 72, 39, 49, 47, 39, 51, 0, 19, 70, 35, 60, 8, 29, 24, 64, 71, 36, 57, 36,
+			49, 71, 108, 51, 36, 12, 0, 10, 67, 35, 52, 192, 71, 36, 57, 89, 0, 12, 67, 34, 12, 81, 71, 36, 50, 81, 35, 51, 0, 14,
+			68, 30, 3, 222, 76, 35, 50, 72, 39, 55, 39, 89, 0, 11, 67, 29, 50, 145, 36, 89, 47, 36, 51, 0, 10, 67, 28, 193, 209, 36,
+			75, 108, 51, 0, 9, 66, 181, 16, 48, 39, 51, 0, 76, 0, 10, 67, 134, 44, 98, 107, 39, 81, 39, 0, 10, 67, 101, 18, 0, 35,
+			51, 35, 71, 0, 12, 67, 83, 7, 226, 91, 36, 49, 35, 65, 40, 0, 21, 71, 80, 252, 207, 29, 231, 141, 128, 91, 35, 72, 37, 72,
+			39, 55, 55, 35, 107, 50, 0, 11, 67, 48, 250, 243, 75, 36, 72, 72, 37, 0, 11, 67, 40, 114, 20, 47, 108, 71, 36, 91, 0, 11,
+			67, 29, 18, 148, 35, 51, 47, 36, 91, 0, 0, 12, 67, 205, 164, 64, 57, 39, 104, 17, 39, 51, 0, 10, 67, 132, 196, 64, 107, 36,
+			75, 51, 0, 14, 67, 125, 55, 215, 65, 39, 89, 35, 65, 65, 35, 47, 0, 15, 68, 124, 226, 149, 68, 65, 39, 101, 47, 35, 89, 35,
+			51, 0, 16, 69, 120, 196, 202, 207, 0, 55, 39, 75, 36, 89, 47, 37, 49, 0, 11, 67, 106, 36, 64, 104, 17, 39, 12, 51, 0, 21,
+			71, 98, 28, 209, 29, 231, 222, 192, 88, 35, 107, 37, 51, 39, 55, 65, 39, 55, 49, 0, 16, 69, 93, 17, 200, 121, 48, 47, 36, 51,
+			108, 71, 55, 39, 89, 0, 12, 68, 76, 116, 74, 68, 89, 108, 51, 47, 51, 0, 16, 69, 69, 40, 7, 129, 48, 51, 36, 88, 39, 50,
+			108, 50, 89, 0, 11, 67, 52, 196, 64, 107, 35, 75, 35, 51, 0, 14, 68, 35, 56, 96, 68, 71, 37, 107, 39, 50, 35, 51, 0, 21,
+			70, 33, 225, 223, 68, 195, 64, 71, 36, 55, 108, 65, 39, 51, 35, 75, 75, 35, 107, 0, 18, 70, 31, 4, 199, 206, 3, 225, 39, 49,
+			89, 108, 57, 35, 50, 72, 36, 0, 18, 70, 10, 17, 209, 126, 20, 97, 108, 107, 108, 51, 65, 39, 107, 51, 36, 0, 14, 68, 10, 7,
+			15, 68, 108, 50, 104, 17, 35, 72, 51, 0, 0, 14, 68, 194, 3, 209, 136, 49, 39, 50, 72, 51, 39, 12, 0, 15, 69, 192, 116, 98,
+			30, 0, 49, 108, 51, 36, 84, 108, 50, 0, 12, 67, 129, 248, 128, 50, 36, 65, 39, 84, 84, 0, 14, 68, 129, 226, 48, 204, 50, 35,
+			55, 71, 35, 49, 37, 0, 12, 68, 127, 60, 17, 136, 65, 37, 49, 51, 39, 0, 11, 67, 102, 8, 0, 19, 36, 50, 35, 50, 0, 15,
+			68, 74, 3, 241, 204, 6, 88, 36, 50, 72, 36, 81, 37, 0, 11, 67, 72, 248, 0, 88, 35, 72, 35, 50, 0, 15, 69, 70, 44, 202,
+			69, 32, 51, 39, 57, 47, 36, 51, 88, 0, 13, 68, 42, 3, 209, 136, 47, 39, 50, 72, 51, 39, 0, 15, 69, 32, 120, 34, 30, 0,
+			71, 108, 50, 39, 84, 108, 50, 0, 13, 68, 29, 232, 49, 136, 35, 55, 35, 50, 81, 40, 0, 17, 70, 10, 2, 179, 126, 33, 224, 108,
+			50, 47, 37, 65, 40, 108, 50, 0, 0, 16, 69, 137, 177, 223, 133, 16, 84, 35, 83, 108, 65, 36, 107, 51, 0, 15, 69, 136, 119, 155,
+			49, 16, 84, 35, 55, 83, 35, 75, 51, 0, 14, 67, 125, 12, 17, 65, 39, 88, 35, 49, 49, 35, 51, 0, 11, 67, 101, 23, 0, 35,
+			51, 35, 104, 17, 0, 16, 69, 85, 180, 71, 33, 16, 89, 35, 83, 51, 108, 71, 39, 51, 0, 13, 67, 81, 183, 0, 6, 91, 35, 83,
+			35, 104, 17, 0, 16, 69, 34, 17, 223, 133, 16, 71, 35, 107, 108, 65, 39, 107, 51, 0, 22, 71, 29, 231, 7, 194, 8, 15, 132, 36,
+			55, 104, 17, 108, 49, 39, 50, 35, 50, 72, 36, 0, 12, 3, 95, 216, 140, 84, 37, 51, 81, 40, 55, 0, 0, 17, 70, 139, 55, 179,
+			29, 244, 128, 84, 37, 55, 37, 57, 108, 65, 88, 0, 11, 67, 121, 44, 115, 55, 36, 88, 81, 37, 0, 11, 67, 33, 116, 115, 71, 39,
+			47, 51, 37, 0, 11, 67, 33, 23, 243, 71, 35, 51, 65, 37, 0, 0, 19, 70, 197, 17, 224, 62, 37, 19, 81, 36, 51, 108, 50, 72,
+			40, 91, 36, 89, 0, 13, 68, 192, 116, 74, 68, 49, 108, 51, 47, 36, 51, 0, 13, 68, 192, 116, 72, 68, 49, 108, 51, 71, 35, 51,
+			0, 13, 68, 184, 116, 74, 68, 76, 108, 51, 47, 36, 51, 0, 13, 68, 182, 36, 202, 68, 48, 39, 89, 47, 36, 51, 0, 13, 68, 71,
+			52, 136, 68, 51, 37, 88, 71, 39, 51, 0, 16, 69, 61, 232, 135, 181, 48, 72, 36, 55, 84, 108, 48, 35, 89, 0, 22, 72, 57, 19,
+			211, 29, 40, 135, 70, 16, 101, 39, 51, 72, 89, 108, 88, 84, 108, 51, 36, 0, 15, 68, 41, 232, 49, 68, 47, 35, 55, 35, 50, 81,
+			39, 51, 0, 18, 70, 34, 23, 224, 83, 52, 64, 71, 35, 107, 65, 35, 50, 91, 37, 51, 0, 26, 72, 33, 71, 7, 34, 212, 96, 62,
+			16, 71, 39, 91, 104, 17, 108, 71, 48, 35, 51, 35, 50, 72, 36, 12, 0, 23, 72, 10, 12, 94, 137, 49, 240, 78, 0, 108, 50, 81,
+			36, 55, 39, 89, 108, 49, 89, 39, 50, 0, 0, 15, 68, 181, 24, 145, 80, 48, 35, 51, 84, 35, 51, 36, 91, 0, 16, 69, 130, 20,
+			98, 30, 0, 50, 35, 107, 51, 35, 84, 108, 50, 0, 12, 67, 113, 97, 202, 104, 17, 39, 88, 108, 47, 0, 13, 68, 57, 88, 149, 204,
+			101, 39, 89, 40, 89, 37, 0, 12, 67, 42, 23, 202, 47, 39, 107, 65, 35, 47, 0, 15, 69, 29, 242, 179, 29, 32, 36, 65, 47, 37,
+			57, 108, 88, 0, 0, 12, 67, 197, 244, 112, 81, 39, 65, 51, 39, 49, 0, 21, 70, 193, 236, 19, 206, 40, 17, 49, 39, 55, 36, 49,
+			89, 37, 57, 39, 50, 36, 51, 0, 21, 70, 182, 36, 95, 112, 244, 192, 48, 40, 51, 65, 39, 104, 17, 35, 72, 72, 35, 89, 0, 11,
+			67, 125, 232, 176, 65, 39, 55, 40, 49, 0, 11, 67, 77, 241, 240, 89, 36, 65, 108, 49, 0, 19, 70, 77, 20, 243, 122, 3, 209, 89,
+			35, 51, 89, 37, 55, 35, 50, 72, 51, 0, 26, 73, 71, 52, 173, 68, 241, 210, 128, 248, 64, 51, 37, 88, 48, 35, 51, 72, 108, 88,
+			35, 50, 72, 36, 12, 0, 19, 71, 30, 6, 199, 71, 2, 162, 76, 35, 50, 83, 108, 51, 49, 47, 40, 89, 0, 0, 15, 69, 193, 241,
+			224, 62, 32, 49, 39, 65, 108, 50, 72, 39, 0, 11, 67, 193, 241, 204, 49, 39, 65, 108, 75, 0, 18, 70, 109, 225, 223, 206, 12, 98,
+			83, 36, 55, 108, 65, 37, 50, 81, 39, 0, 12, 67, 77, 230, 239, 89, 39, 55, 83, 36, 90, 0, 13, 67, 63, 7, 242, 72, 39, 49,
+			65, 36, 57, 36, 0, 16, 69, 61, 226, 160, 199, 48, 72, 36, 55, 47, 35, 50, 81, 37, 0, 11, 67, 34, 1, 200, 71, 39, 50, 108,
+			71, 0, 0, 12, 67, 125, 146, 15, 65, 35, 19, 71, 35, 72, 0, 13, 67, 124, 76, 15, 65, 39, 35, 49, 49, 35, 72, 0, 17, 68,
+			113, 231, 30, 192, 104, 17, 36, 55, 104, 17, 36, 55, 35, 49, 0, 13, 67, 62, 40, 15, 72, 35, 84, 35, 50, 6, 72, 0, 12, 67,
+			56, 200, 15, 101, 39, 75, 35, 50, 72, 0, 16, 70, 32, 116, 115, 42, 40, 0, 71, 108, 51, 37, 47, 39, 50, 0, 0, 18, 70, 180,
+			124, 211, 43, 28, 192, 48, 108, 57, 36, 89, 47, 36, 81, 37, 0, 15, 69, 136, 116, 223, 138, 0, 84, 108, 89, 35, 65, 40, 50, 0,
+			15, 69, 133, 24, 179, 206, 0, 107, 36, 51, 39, 37, 12, 50, 0, 12, 67, 121, 146, 10, 55, 39, 19, 71, 35, 47, 0, 11, 67, 101,
+			42, 202, 36, 88, 88, 35, 47, 0, 12, 67, 100, 252, 128, 36, 72, 72, 36, 57, 36, 0, 18, 69, 83, 4, 84, 194, 0, 91, 36, 49,
+			35, 51, 91, 36, 49, 35, 50, 0, 18, 70, 78, 210, 179, 77, 252, 192, 89, 36, 48, 47, 37, 89, 36, 65, 37, 0, 18, 70, 62, 36,
+			109, 70, 33, 210, 72, 40, 51, 48, 35, 51, 84, 108, 88, 0, 15, 69, 40, 231, 207, 30, 0, 47, 39, 101, 65, 72, 108, 50, 0, 17,
+			70, 40, 119, 135, 77, 252, 192, 47, 108, 55, 108, 89, 36, 65, 37, 0, 18, 70, 34, 20, 113, 205, 28, 192, 71, 35, 107, 51, 36, 81,
+			37, 51, 37, 0, 17, 70, 9, 193, 223, 205, 28, 192, 108, 104, 17, 108, 65, 37, 51, 37, 0, 0, 10, 67, 193, 241, 192, 49, 39, 65,
+			108, 0, 10, 67, 133, 241, 192, 107, 39, 65, 108, 0, 14, 68, 127, 60, 32, 60, 65, 37, 49, 39, 50, 35, 72, 0, 14, 68, 127, 51,
+			145, 60, 65, 37, 101, 35, 51, 35, 72, 0, 11, 67, 121, 241, 192, 55, 35, 65, 65, 108, 0, 22, 72, 41, 17, 224, 75, 52, 202, 137,
+			16, 47, 36, 51, 108, 50, 88, 37, 89, 47, 39, 51, 0, 16, 69, 29, 232, 156, 137, 144, 39, 55, 84, 39, 104, 17, 40, 19, 0, 0,
+			20, 70, 187, 4, 222, 136, 124, 51, 76, 36, 49, 39, 89, 55, 39, 84, 108, 49, 37, 0, 14, 68, 181, 28, 209, 56, 48, 35, 51, 37,
+			51, 39, 101, 0, 14, 67, 80, 140, 50, 91, 35, 71, 35, 49, 36, 57, 36, 0, 11, 67, 50, 1, 200, 75, 36, 50, 108, 71, 0, 0,
+			18, 70, 197, 17, 223, 29, 184, 0, 81, 36, 51, 108, 65, 108, 83, 39, 50, 0, 16, 69, 57, 19, 206, 68, 240, 101, 39, 51, 72, 101,
+			39, 51, 72, 0, 15, 69, 29, 231, 237, 207, 0, 39, 55, 35, 65, 48, 37, 49, 0, 14, 69, 28, 247, 226, 128, 240, 36, 72, 65, 39,
+			50, 72, 0, 0, 17, 69, 197, 40, 27, 138, 0, 81, 36, 88, 36, 50, 39, 83, 39, 50, 0, 20, 71, 185, 232, 135, 68, 129, 219, 204,
+			76, 36, 55, 84, 108, 51, 71, 108, 83, 37, 0, 15, 69, 70, 33, 243, 28, 160, 51, 36, 84, 108, 57, 108, 47, 0, 0, 19, 70, 109,
+			24, 145, 138, 3, 192, 83, 39, 51, 40, 51, 35, 84, 35, 50, 72, 0, 19, 70, 109, 17, 209, 138, 3, 192, 83, 35, 51, 108, 51, 35,
+			84, 35, 50, 72, 0, 15, 70, 58, 33, 200, 138, 3, 192, 101, 108, 71, 40, 50, 72, 0, 17, 68, 41, 146, 15, 28, 47, 35, 19, 35,
+			71, 71, 39, 72, 35, 50, 0, 16, 70, 35, 55, 136, 137, 19, 192, 71, 37, 55, 71, 39, 51, 72, 0, 13, 68, 28, 210, 43, 28, 35,
+			107, 36, 71, 71, 108, 0, 0, 20, 71, 180, 120, 145, 182, 44, 224, 40, 48, 108, 84, 36, 51, 48, 39, 57, 50, 47, 0, 0, 18, 70,
+			109, 24, 145, 63, 56, 0, 83, 35, 51, 84, 35, 51, 72, 37, 50, 0, 15, 69, 68, 136, 138, 207, 0, 51, 39, 71, 39, 47, 37, 49,
+			0, 11, 67, 57, 100, 71, 101, 35, 88, 51, 108, 0, 10, 67, 28, 228, 71, 39, 101, 51, 108, 0, 0, 13, 68, 183, 60, 30, 136, 48,
+			37, 49, 39, 55, 39, 0, 13, 68, 183, 49, 224, 136, 48, 37, 57, 108, 50, 39, 0, 12, 68, 132, 124, 202, 204, 107, 108, 37, 47, 37,
+			0, 14, 68, 128, 226, 49, 204, 50, 39, 101, 71, 36, 81, 37, 0, 16, 69, 112, 117, 72, 30, 0, 104, 17, 108, 89, 36, 71, 108, 50,
+			0, 16, 69, 104, 117, 72, 30, 0, 104, 17, 108, 89, 36, 71, 108, 50, 0, 11, 67, 76, 232, 0, 89, 39, 101, 35, 50, 0, 14, 68,
+			33, 19, 241, 204, 71, 35, 51, 72, 36, 81, 37, 0, 0, 14, 68, 77, 28, 217, 28, 89, 35, 51, 37, 19, 35, 50, 0, 18, 70, 56,
+			241, 226, 128, 241, 192, 101, 39, 72, 108, 84, 35, 50, 72, 108, 0, 13, 68, 49, 252, 217, 28, 75, 35, 65, 37, 35, 50, 0, 0, 16,
+			69, 125, 193, 224, 122, 32, 65, 39, 104, 17, 108, 50, 55, 40, 0, 15, 69, 112, 119, 179, 82, 32, 104, 17, 108, 55, 37, 91, 40, 0,
+			13, 68, 40, 124, 243, 180, 6, 47, 35, 37, 12, 72, 0, 0, 12, 67, 197, 19, 207, 81, 35, 51, 72, 35, 72, 0, 17, 69, 181, 23,
+			207, 100, 112, 48, 39, 51, 65, 39, 72, 72, 35, 108, 0, 10, 67, 95, 54, 192, 47, 36, 57, 83, 0, 10, 67, 87, 54, 192, 89, 36,
+			57, 83, 0, 15, 69, 83, 52, 72, 132, 112, 91, 37, 51, 71, 35, 107, 108, 0, 10, 67, 79, 54, 192, 89, 36, 57, 83, 0, 11, 67,
+			30, 3, 225, 35, 50, 72, 39, 107, 0, 16, 69, 29, 229, 25, 68, 112, 39, 91, 91, 39, 19, 35, 51, 108, 0, 0, 12, 67, 197, 227,
+			160, 81, 39, 55, 101, 35, 50, 0, 14, 67, 125, 44, 224, 65, 39, 88, 35, 57, 57, 35, 50, 0, 13, 68, 82, 36, 84, 204, 91, 40,
+			51, 36, 91, 37, 0, 11, 67, 76, 118, 74, 89, 108, 19, 35, 47, 0, 19, 70, 48, 241, 212, 63, 28, 192, 75, 39, 72, 108, 91, 39,
+			72, 36, 81, 37, 0, 17, 70, 43, 56, 158, 138, 252, 192, 47, 36, 10, 39, 55, 39, 90, 37, 0, 29, 74, 40, 195, 243, 62, 6, 17,
+			58, 33, 225, 204, 47, 35, 75, 72, 37, 72, 36, 50, 35, 88, 35, 51, 101, 108, 107, 37, 0, 11, 67, 33, 146, 202, 71, 36, 89, 35,
+			47, 0, 13, 68, 29, 232, 79, 204, 39, 55, 107, 39, 72, 108, 0, 11, 67, 28, 196, 74, 39, 75, 51, 35, 47, 0, 13, 68, 10, 24,
+			49, 204, 108, 107, 35, 50, 81, 37, 0, 20, 2, 217, 128, 49, 36, 91, 37, 6, 72, 35, 50, 36, 4, 107, 39, 51, 40, 83, 0, 0,
+			18, 70, 197, 17, 224, 34, 17, 192, 81, 36, 51, 108, 50, 71, 35, 107, 108, 0, 15, 68, 193, 72, 15, 132, 49, 39, 91, 35, 50, 72,
+			36, 12, 0, 11, 67, 192, 248, 64, 49, 35, 72, 36, 12, 0, 18, 70, 192, 116, 91, 69, 241, 192, 6, 49, 108, 51, 83, 35, 51, 65,
+			108, 0, 8, 66, 181, 176, 48, 39, 83, 0, 14, 68, 126, 12, 239, 132, 65, 35, 50, 37, 90, 36, 12, 0, 15, 68, 125, 66, 136, 132,
+			65, 39, 91, 47, 35, 71, 35, 107, 0, 13, 67, 113, 232, 112, 104, 17, 39, 55, 107, 35, 49, 0, 16, 68, 49, 163, 26, 132, 75, 36,
+			104, 17, 75, 36, 104, 17, 36, 0, 15, 68, 33, 39, 204, 132, 71, 39, 88, 65, 35, 75, 75, 36, 0, 0, 18, 69, 185, 164, 95, 199,
+			48, 76, 35, 104, 17, 35, 51, 65, 36, 81, 37, 0, 14, 67, 124, 242, 128, 4, 65, 39, 6, 72, 72, 35, 47, 0, 11, 67, 124, 193,
+			200, 65, 39, 75, 108, 71, 0, 11, 67, 120, 193, 204, 55, 36, 75, 108, 75, 0, 11, 67, 108, 124, 222, 6, 83, 108, 57, 55, 0, 15,
+			69, 101, 103, 135, 131, 48, 35, 88, 39, 55, 108, 50, 37, 0, 15, 69, 69, 39, 199, 71, 48, 51, 39, 88, 65, 108, 51, 37, 0, 15,
+			68, 59, 52, 115, 128, 101, 35, 57, 57, 36, 51, 37, 50, 0, 14, 68, 49, 247, 135, 40, 75, 39, 65, 35, 55, 108, 47, 0, 15, 69,
+			49, 55, 199, 131, 48, 75, 36, 89, 65, 108, 50, 37, 0, 14, 68, 33, 24, 135, 40, 71, 35, 51, 35, 84, 108, 47, 0, 13, 68, 29,
+			241, 209, 40, 36, 65, 108, 51, 35, 47, 0, 13, 68, 29, 113, 217, 40, 36, 47, 108, 19, 35, 47, 0, 0, 10, 67, 192, 166, 192, 49,
+			36, 47, 83, 0, 14, 67, 125, 19, 207, 65, 39, 51, 35, 72, 72, 35, 72, 0, 17, 69, 124, 165, 7, 34, 16, 65, 39, 47, 36, 91,
+			108, 71, 36, 107, 0, 21, 70, 112, 114, 30, 204, 168, 71, 104, 17, 108, 71, 36, 55, 37, 57, 35, 47, 107, 108, 0, 13, 67, 109, 23,
+			33, 83, 36, 51, 104, 17, 36, 12, 0, 19, 70, 100, 131, 199, 120, 136, 71, 35, 71, 72, 39, 55, 10, 71, 35, 107, 108, 0, 13, 67,
+			79, 8, 33, 89, 35, 49, 35, 50, 36, 12, 0, 12, 67, 77, 183, 161, 89, 39, 83, 55, 36, 12, 0, 12, 67, 76, 164, 79, 89, 36,
+			47, 39, 51, 72, 0, 10, 67, 75, 54, 192, 88, 35, 57, 83, 0, 10, 67, 63, 55, 192, 72, 36, 57, 65, 0, 13, 67, 57, 23, 33,
+			101, 36, 51, 104, 17, 36, 12, 0, 12, 67, 49, 50, 161, 75, 39, 89, 47, 36, 12, 0, 16, 67, 49, 23, 33, 75, 35, 51, 35, 104,
+			17, 104, 17, 36, 12, 0, 10, 67, 43, 54, 192, 47, 36, 57, 83, 0, 12, 68, 42, 37, 115, 108, 47, 39, 89, 37, 83, 0, 17, 70,
+			32, 116, 83, 122, 40, 0, 71, 108, 51, 89, 36, 55, 39, 50, 0, 11, 67, 32, 116, 79, 71, 108, 51, 35, 72, 0, 12, 67, 29, 232,
+			97, 36, 55, 108, 107, 36, 12, 0, 12, 68, 10, 4, 179, 124, 108, 50, 88, 37, 65, 0, 10, 67, 31, 55, 192, 37, 12, 65, 0, 76,
+			0, 11, 67, 194, 39, 160, 49, 40, 55, 36, 50, 0, 18, 70, 133, 230, 207, 30, 12, 192, 107, 39, 55, 39, 83, 72, 108, 50, 37, 0,
+			15, 68, 125, 193, 200, 120, 65, 39, 104, 17, 108, 71, 36, 55, 0, 12, 67, 92, 114, 28, 47, 108, 71, 35, 104, 17, 0, 12, 67, 81,
+			50, 160, 91, 39, 89, 47, 35, 50, 0, 13, 68, 79, 55, 135, 32, 89, 36, 57, 55, 108, 71, 0, 21, 71, 78, 216, 10, 29, 252, 224,
+			136, 89, 36, 48, 35, 50, 47, 108, 65, 37, 50, 40, 0, 13, 68, 48, 132, 115, 120, 75, 36, 71, 51, 37, 55, 0, 16, 69, 41, 19,
+			31, 30, 0, 47, 35, 51, 75, 39, 65, 108, 50, 0, 16, 70, 32, 114, 159, 30, 12, 192, 71, 108, 47, 65, 108, 50, 37, 0, 14, 68,
+			29, 193, 209, 32, 35, 104, 17, 108, 51, 36, 71, 0, 12, 67, 29, 50, 160, 35, 89, 36, 47, 39, 50, 0, 14, 69, 29, 50, 135, 68,
+			160, 36, 89, 47, 108, 51, 47, 0, 0, 13, 68, 198, 44, 81, 60, 81, 40, 81, 36, 51, 72, 0, 14, 68, 197, 1, 209, 60, 81, 39,
+			88, 108, 51, 35, 72, 0, 15, 68, 194, 44, 202, 132, 49, 39, 84, 36, 57, 47, 36, 12, 0, 14, 68, 193, 236, 212, 132, 49, 36, 55,
+			37, 91, 36, 12, 0, 14, 68, 133, 252, 212, 132, 107, 35, 65, 37, 91, 36, 12, 0, 14, 68, 133, 232, 94, 132, 107, 36, 55, 107, 36,
+			55, 36, 0, 14, 67, 130, 35, 223, 6, 50, 35, 84, 35, 72, 39, 65, 0, 14, 68, 129, 252, 212, 132, 50, 36, 65, 37, 91, 36, 12,
+			0, 19, 70, 129, 241, 243, 128, 248, 64, 50, 35, 65, 108, 57, 35, 50, 72, 36, 12, 0, 11, 67, 128, 118, 31, 50, 108, 88, 36, 65,
+			0, 13, 68, 125, 188, 224, 132, 65, 39, 83, 37, 50, 36, 0, 15, 68, 125, 65, 225, 60, 65, 39, 6, 91, 108, 107, 36, 72, 0, 17,
+			69, 125, 50, 142, 61, 240, 65, 39, 89, 47, 35, 101, 72, 36, 65, 0, 13, 68, 124, 252, 224, 132, 65, 35, 72, 37, 50, 36, 0, 15,
+			68, 124, 196, 115, 132, 65, 39, 75, 51, 37, 57, 36, 12, 0, 19, 70, 124, 130, 158, 28, 136, 64, 65, 39, 71, 47, 35, 55, 108, 71,
+			36, 107, 0, 14, 68, 69, 49, 224, 132, 51, 35, 89, 108, 50, 36, 12, 0, 11, 67, 56, 120, 31, 101, 108, 50, 40, 65, 0, 14, 68,
+			54, 6, 30, 132, 107, 35, 50, 88, 35, 55, 36, 0, 16, 68, 42, 37, 115, 132, 6, 47, 39, 12, 89, 37, 57, 36, 12, 0, 14, 68,
+			42, 33, 209, 60, 47, 35, 84, 108, 51, 39, 72, 0, 14, 68, 34, 17, 224, 132, 71, 35, 107, 108, 50, 36, 12, 0, 19, 70, 33, 24,
+			20, 76, 168, 64, 71, 35, 51, 50, 36, 91, 35, 89, 47, 36, 0, 16, 70, 28, 196, 71, 207, 56, 64, 36, 75, 51, 108, 37, 57, 36,
+			0, 14, 68, 10, 20, 202, 132, 108, 107, 36, 89, 47, 36, 12, 0, 0, 17, 70, 181, 225, 240, 29, 18, 128, 48, 36, 55, 108, 49, 108,
+			51, 47, 0, 20, 70, 180, 244, 74, 32, 116, 115, 48, 36, 72, 35, 51, 47, 35, 71, 108, 51, 37, 0, 14, 67, 124, 199, 158, 65, 39,
+			75, 35, 55, 55, 35, 55, 0, 17, 68, 124, 167, 207, 128, 65, 39, 47, 36, 65, 35, 72, 72, 36, 50, 0, 17, 68, 124, 166, 224, 128,
+			65, 39, 47, 36, 83, 35, 50, 50, 36, 50, 0, 13, 68, 124, 120, 81, 56, 65, 108, 107, 51, 39, 101, 0, 14, 68, 109, 24, 138, 128,
+			83, 39, 51, 40, 47, 35, 50, 0, 15, 68, 78, 33, 200, 112, 89, 35, 84, 108, 71, 36, 104, 17, 0, 10, 67, 70, 34, 30, 51, 40,
+			71, 55, 0, 16, 69, 61, 19, 226, 61, 224, 72, 35, 51, 72, 39, 72, 36, 55, 0, 19, 70, 59, 49, 209, 41, 21, 51, 101, 37, 57,
+			108, 51, 47, 39, 51, 91, 37, 0, 12, 67, 52, 193, 204, 107, 39, 75, 75, 108, 75, 0, 17, 70, 31, 56, 33, 124, 120, 51, 37, 50,
+			107, 35, 65, 108, 50, 37, 0, 17, 70, 29, 28, 98, 130, 39, 243, 36, 51, 81, 39, 50, 39, 65, 37, 0, 14, 68, 28, 252, 30, 128,
+			39, 72, 49, 39, 55, 39, 50, 0, 14, 68, 8, 132, 202, 128, 108, 71, 36, 89, 47, 35, 50, 0, 11, 67, 8, 130, 158, 108, 71, 47,
+			35, 55, 0, 0, 19, 70, 136, 116, 79, 9, 243, 225, 84, 108, 51, 36, 72, 108, 65, 35, 72, 36, 0, 12, 67, 130, 212, 83, 50, 35,
+			48, 39, 51, 89, 0, 15, 68, 129, 68, 202, 124, 50, 36, 91, 35, 89, 47, 35, 65, 0, 12, 67, 129, 28, 83, 50, 35, 51, 81, 36,
+			89, 0, 16, 69, 128, 114, 14, 68, 240, 50, 108, 71, 36, 101, 51, 35, 72, 0, 21, 70, 126, 2, 152, 68, 167, 192, 65, 39, 50, 47,
+			35, 88, 36, 51, 36, 47, 35, 65, 0, 17, 69, 125, 193, 202, 122, 16, 65, 39, 104, 17, 108, 47, 36, 55, 36, 0, 17, 69, 125, 145,
+			223, 122, 16, 65, 39, 19, 108, 65, 36, 55, 36, 12, 0, 18, 69, 125, 49, 200, 114, 16, 65, 39, 89, 108, 71, 36, 104, 17, 36, 12,
+			0, 17, 68, 124, 166, 94, 124, 65, 39, 47, 36, 19, 35, 55, 55, 36, 65, 0, 17, 68, 124, 160, 222, 124, 65, 39, 47, 36, 10, 35,
+			55, 55, 36, 65, 0, 16, 69, 109, 19, 219, 68, 240, 83, 35, 51, 72, 83, 35, 51, 72, 0, 14, 68, 84, 131, 79, 124, 89, 39, 71,
+			107, 72, 35, 65, 0, 17, 69, 82, 20, 112, 68, 240, 91, 35, 107, 51, 36, 49, 39, 51, 72, 0, 14, 68, 79, 53, 79, 124, 89, 37,
+			89, 35, 72, 39, 65, 0, 19, 70, 79, 8, 12, 35, 56, 0, 89, 36, 49, 35, 50, 75, 36, 71, 37, 50, 0, 20, 70, 77, 17, 219,
+			194, 3, 225, 89, 35, 51, 35, 83, 49, 35, 50, 72, 36, 12, 0, 16, 69, 71, 51, 71, 130, 16, 51, 36, 57, 107, 108, 50, 36, 12,
+			0, 15, 69, 68, 120, 72, 68, 240, 51, 108, 107, 71, 39, 51, 72, 0, 10, 67, 34, 36, 83, 71, 40, 51, 89, 0, 15, 69, 32, 200,
+			34, 68, 240, 71, 39, 75, 50, 40, 51, 72, 0, 15, 69, 32, 116, 226, 28, 240, 71, 108, 89, 35, 84, 108, 72, 0, 14, 68, 32, 116,
+			115, 124, 71, 108, 51, 37, 57, 39, 65, 0, 15, 69, 9, 50, 135, 130, 16, 108, 89, 47, 108, 50, 36, 12, 0, 8, 65, 84, 6, 89,
+			108, 72, 0, 0, 13, 68, 192, 116, 74, 120, 49, 108, 51, 47, 36, 55, 0, 12, 67, 187, 4, 82, 76, 36, 49, 36, 51, 88, 0, 13,
+			68, 180, 116, 202, 120, 48, 108, 89, 47, 36, 55, 0, 16, 69, 128, 226, 49, 30, 0, 50, 39, 101, 71, 36, 81, 108, 50, 0, 14, 67,
+			124, 200, 82, 65, 39, 75, 35, 107, 107, 35, 88, 0, 15, 69, 62, 39, 155, 206, 0, 6, 72, 39, 55, 83, 37, 50, 0, 12, 67, 57,
+			17, 210, 101, 35, 51, 51, 108, 88, 0, 14, 69, 40, 120, 15, 138, 0, 47, 108, 50, 72, 39, 50, 0, 11, 67, 35, 24, 128, 71, 36,
+			81, 40, 12, 0, 16, 69, 34, 4, 162, 28, 160, 71, 35, 50, 88, 39, 84, 108, 47, 0, 0, 17, 70, 181, 225, 240, 29, 19, 192, 48,
+			36, 55, 108, 49, 108, 51, 72, 0, 18, 70, 133, 243, 222, 30, 8, 64, 107, 35, 65, 72, 36, 55, 108, 50, 36, 0, 17, 70, 128, 117,
+			77, 30, 8, 64, 50, 108, 89, 36, 107, 108, 50, 36, 0, 14, 67, 125, 149, 209, 65, 39, 19, 35, 47, 47, 35, 51, 0, 20, 70, 125,
+			87, 223, 30, 8, 64, 65, 39, 89, 35, 65, 65, 35, 65, 108, 50, 36, 0, 11, 67, 124, 115, 209, 65, 108, 72, 35, 51, 0, 20, 71,
+			110, 36, 95, 29, 236, 202, 132, 83, 39, 51, 65, 108, 55, 37, 47, 36, 12, 0, 19, 70, 105, 252, 96, 30, 8, 64, 104, 17, 35, 65,
+			81, 36, 50, 108, 50, 36, 0, 18, 70, 85, 252, 223, 30, 8, 64, 89, 35, 65, 37, 65, 108, 50, 36, 12, 0, 11, 67, 84, 241, 209,
+			89, 36, 72, 108, 51, 0, 11, 67, 77, 243, 0, 89, 36, 65, 36, 75, 0, 16, 69, 74, 3, 199, 129, 240, 88, 36, 50, 72, 108, 50,
+			35, 65, 0, 17, 70, 71, 52, 143, 30, 8, 64, 51, 37, 88, 72, 108, 50, 36, 12, 0, 12, 67, 62, 33, 209, 72, 35, 84, 84, 108,
+			51, 0, 20, 71, 61, 17, 224, 60, 115, 138, 132, 72, 35, 51, 35, 50, 72, 108, 101, 47, 36, 0, 16, 70, 60, 117, 8, 137, 19, 192,
+			72, 108, 91, 71, 39, 51, 72, 0, 17, 69, 41, 232, 145, 205, 240, 47, 36, 55, 39, 51, 37, 57, 39, 65, 0, 13, 67, 41, 12, 17,
+			47, 35, 88, 35, 49, 39, 51, 0, 12, 67, 33, 54, 209, 71, 39, 89, 83, 39, 51, 0, 12, 67, 32, 225, 209, 71, 39, 12, 101, 108,
+			51, 0, 17, 70, 29, 66, 161, 29, 19, 192, 36, 91, 47, 36, 107, 108, 51, 72, 0, 15, 69, 29, 60, 17, 205, 240, 36, 89, 49, 36,
+			51, 37, 65, 0, 0, 13, 68, 198, 35, 209, 72, 81, 40, 72, 35, 51, 88, 0, 8, 66, 195, 48, 49, 36, 57, 0, 23, 72, 186, 3,
+			199, 128, 213, 71, 71, 48, 76, 35, 50, 72, 36, 50, 107, 36, 89, 108, 51, 37, 0, 21, 71, 132, 120, 145, 193, 17, 219, 40, 107, 108,
+			84, 36, 51, 49, 36, 51, 108, 83, 47, 0, 13, 68, 68, 115, 17, 72, 51, 108, 75, 36, 51, 88, 0, 12, 67, 41, 4, 98, 47, 35,
+			88, 35, 51, 84, 0, 15, 69, 29, 28, 71, 129, 224, 39, 51, 81, 108, 50, 36, 55, 0, 9, 66, 195, 48, 49, 36, 57, 0, 76, 8,
+			66, 187, 48, 76, 37, 0, 76, 0, 16, 69, 193, 28, 211, 125, 48, 49, 36, 51, 37, 89, 65, 35, 89, 0, 18, 70, 135, 51, 209, 138,
+			248, 33, 107, 37, 72, 51, 39, 90, 36, 50, 36, 0, 18, 70, 129, 252, 207, 30, 7, 192, 50, 36, 65, 37, 72, 108, 50, 35, 65, 0,
+			18, 70, 129, 252, 200, 71, 55, 192, 50, 36, 65, 37, 71, 35, 51, 37, 65, 0, 13, 68, 126, 28, 199, 68, 65, 35, 107, 57, 108, 51,
+			0, 14, 68, 124, 225, 215, 68, 65, 39, 101, 108, 47, 36, 51, 0, 23, 70, 124, 167, 30, 32, 120, 33, 65, 39, 47, 36, 104, 17, 35,
+			55, 55, 36, 71, 108, 50, 36, 0, 22, 70, 124, 161, 211, 108, 120, 33, 65, 39, 47, 35, 19, 35, 89, 89, 36, 83, 108, 50, 36, 0,
+			19, 70, 124, 115, 209, 125, 19, 225, 65, 108, 72, 35, 51, 65, 39, 51, 72, 36, 0, 13, 67, 114, 33, 211, 104, 17, 35, 84, 84, 108,
+			89, 0, 11, 67, 97, 180, 64, 88, 35, 83, 35, 51, 0, 10, 67, 85, 180, 64, 89, 36, 83, 51, 0, 18, 70, 80, 124, 81, 60, 120,
+			33, 91, 108, 81, 36, 51, 72, 108, 50, 36, 0, 11, 67, 77, 180, 64, 89, 35, 83, 35, 51, 0, 15, 68, 69, 178, 177, 68, 51, 39,
+			83, 47, 36, 81, 35, 51, 0, 11, 67, 55, 49, 215, 107, 35, 57, 108, 47, 0, 11, 67, 49, 180, 64, 75, 35, 83, 35, 51, 0, 14,
+			69, 34, 34, 135, 193, 48, 71, 40, 47, 108, 49, 89, 0, 20, 70, 33, 232, 98, 76, 120, 33, 71, 39, 55, 107, 35, 84, 35, 89, 108,
+			50, 36, 0, 14, 68, 33, 60, 199, 68, 71, 36, 89, 37, 57, 108, 51, 0, 14, 68, 33, 59, 71, 68, 71, 36, 89, 36, 48, 108, 51,
+			0, 18, 70, 33, 17, 224, 192, 116, 79, 71, 36, 51, 108, 50, 49, 108, 51, 72, 0, 18, 70, 32, 242, 51, 128, 120, 33, 71, 35, 72,
+			71, 37, 50, 108, 50, 36, 0, 24, 72, 29, 236, 10, 71, 52, 243, 42, 16, 36, 55, 36, 49, 47, 36, 51, 37, 89, 37, 47, 36, 12,
+			0, 16, 69, 29, 18, 143, 193, 48, 39, 51, 47, 39, 72, 39, 49, 89, 0, 0, 11, 67, 204, 252, 0, 57, 35, 72, 35, 49, 0, 13,
+			68, 197, 23, 209, 136, 81, 35, 51, 65, 51, 40, 0, 12, 67, 125, 148, 86, 65, 35, 19, 51, 35, 88, 0, 16, 68, 113, 231, 209, 136,
+			104, 17, 35, 55, 35, 65, 51, 39, 12, 0, 12, 67, 33, 33, 210, 71, 35, 88, 88, 108, 88, 0, 0, 10, 67, 192, 115, 209, 49, 108,
+			72, 51, 0, 17, 70, 182, 39, 135, 71, 52, 223, 48, 39, 55, 108, 51, 37, 89, 65, 0, 11, 67, 182, 33, 209, 48, 39, 84, 108, 51,
+			0, 11, 67, 130, 19, 192, 50, 35, 107, 35, 72, 0, 16, 69, 126, 8, 174, 133, 16, 65, 35, 50, 40, 76, 36, 107, 51, 0, 11, 67,
+			85, 243, 192, 89, 35, 65, 35, 72, 0, 11, 67, 81, 243, 192, 91, 35, 65, 35, 72, 0, 18, 70, 69, 241, 224, 43, 52, 223, 51, 39,
+			65, 108, 50, 47, 37, 89, 65, 0, 15, 69, 31, 56, 28, 61, 16, 37, 50, 104, 17, 35, 72, 51, 0, 15, 69, 29, 226, 144, 29, 0,
+			36, 55, 47, 36, 88, 108, 88, 0, 23, 2, 219, 131, 6, 47, 108, 57, 36, 20, 4, 47, 35, 19, 50, 37, 89, 10, 39, 51, 72, 40,
+			0, 15, 2, 217, 147, 49, 39, 55, 108, 107, 36, 10, 108, 12, 12, 0, 0, 18, 70, 181, 232, 142, 137, 21, 0, 48, 39, 55, 39, 101,
+			39, 51, 36, 91, 0, 11, 67, 81, 23, 179, 91, 36, 51, 55, 37, 0, 17, 70, 76, 120, 15, 139, 59, 128, 89, 108, 50, 72, 36, 84,
+			37, 76, 0, 11, 67, 48, 124, 20, 75, 108, 49, 36, 91, 0, 24, 73, 30, 12, 17, 29, 225, 213, 136, 114, 128, 35, 50, 49, 35, 51,
+			39, 55, 35, 89, 84, 108, 47, 0, 20, 2, 219, 130, 6, 107, 36, 4, 107, 35, 65, 88, 36, 12, 10, 39, 51, 72, 40, 0, 10, 2,
+			217, 146, 89, 108, 49, 36, 50, 0, 0, 19, 70, 186, 209, 226, 123, 20, 64, 76, 35, 48, 108, 84, 39, 55, 81, 35, 51, 0, 17, 70,
+			128, 120, 95, 136, 116, 64, 50, 108, 107, 35, 65, 84, 108, 51, 0, 20, 70, 126, 2, 156, 60, 120, 0, 65, 39, 50, 47, 35, 104, 17,
+			36, 72, 108, 50, 0, 13, 67, 105, 21, 0, 104, 17, 39, 51, 51, 36, 91, 0, 20, 71, 79, 8, 158, 29, 28, 211, 124, 89, 36, 49,
+			40, 55, 108, 51, 37, 89, 65, 0, 15, 68, 77, 248, 15, 68, 89, 35, 65, 35, 50, 72, 35, 51, 0, 21, 72, 32, 116, 179, 198, 37,
+			7, 130, 16, 71, 108, 88, 37, 81, 40, 91, 108, 50, 36, 0, 16, 70, 9, 21, 51, 62, 44, 0, 108, 51, 91, 37, 72, 40, 49, 0,
+			14, 2, 219, 129, 6, 107, 36, 12, 10, 39, 51, 72, 40, 0, 0, 12, 67, 192, 252, 128, 49, 35, 72, 36, 57, 36, 0, 11, 67, 126,
+			44, 10, 65, 39, 49, 36, 47, 0, 14, 68, 124, 193, 224, 204, 65, 35, 75, 75, 108, 50, 37, 0, 17, 70, 124, 161, 222, 138, 252, 192,
+			65, 36, 47, 108, 55, 39, 90, 37, 0, 14, 67, 115, 55, 202, 104, 17, 36, 57, 6, 65, 35, 47, 0, 14, 68, 77, 184, 160, 204, 89,
+			35, 65, 83, 39, 50, 37, 0, 11, 67, 76, 124, 10, 89, 108, 49, 36, 47, 0, 16, 69, 73, 244, 202, 138, 0, 88, 36, 65, 36, 89,
+			47, 40, 50, 0, 11, 67, 68, 124, 10, 51, 108, 49, 36, 47, 0, 22, 71, 63, 54, 209, 30, 4, 243, 120, 72, 37, 83, 6, 51, 108,
+			50, 89, 37, 57, 36, 55, 0, 25, 73, 48, 252, 207, 29, 226, 141, 87, 55, 128, 75, 35, 72, 37, 72, 39, 47, 47, 35, 107, 89, 37,
+			55, 0, 17, 69, 42, 12, 7, 34, 0, 47, 39, 50, 36, 49, 108, 71, 39, 50, 0, 15, 69, 32, 119, 155, 69, 96, 71, 36, 55, 83,
+			35, 51, 88, 0, 18, 70, 29, 236, 241, 136, 244, 82, 35, 55, 37, 81, 40, 72, 35, 51, 88, 0, 14, 2, 218, 136, 6, 72, 108, 55,
+			10, 39, 51, 72, 40, 0, 0, 24, 73, 181, 19, 135, 80, 200, 179, 30, 8, 64, 48, 35, 51, 101, 108, 91, 75, 40, 57, 108, 50, 36,
+			0, 12, 67, 125, 35, 240, 65, 35, 88, 72, 35, 49, 0, 13, 68, 124, 114, 25, 60, 65, 108, 71, 35, 19, 72, 0, 11, 67, 69, 83,
+			192, 51, 35, 89, 35, 72, 0, 16, 69, 34, 24, 12, 29, 16, 71, 36, 107, 35, 50, 75, 108, 51, 0, 21, 70, 33, 17, 200, 70, 12,
+			81, 71, 35, 51, 108, 71, 35, 51, 50, 36, 81, 35, 51, 0, 15, 69, 29, 50, 162, 29, 16, 39, 89, 47, 39, 84, 108, 51, 0, 22,
+			72, 28, 139, 240, 43, 56, 179, 77, 240, 39, 71, 90, 36, 49, 47, 37, 84, 37, 89, 65, 0, 19, 70, 8, 228, 71, 122, 8, 81, 108,
+			101, 36, 51, 39, 50, 50, 35, 107, 51, 0, 0, 12, 67, 194, 44, 8, 49, 39, 12, 49, 35, 71, 0, 13, 68, 193, 24, 135, 40, 49,
+			51, 39, 84, 108, 47, 0, 15, 69, 186, 34, 27, 69, 64, 76, 40, 71, 83, 35, 51, 91, 0, 19, 70, 133, 252, 226, 180, 114, 179, 107,
+			39, 65, 37, 57, 39, 48, 108, 47, 37, 0, 15, 69, 126, 23, 199, 131, 48, 65, 36, 107, 65, 108, 50, 37, 0, 12, 67, 101, 196, 72,
+			35, 104, 17, 51, 35, 71, 0, 15, 69, 97, 231, 199, 131, 48, 88, 39, 55, 65, 108, 50, 37, 0, 13, 68, 80, 161, 219, 40, 91, 36,
+			47, 108, 83, 47, 0, 14, 68, 77, 177, 225, 40, 89, 36, 83, 108, 107, 35, 47, 0, 14, 69, 70, 35, 71, 131, 48, 51, 39, 107, 108,
+			50, 37, 0, 22, 70, 40, 195, 207, 124, 34, 51, 47, 35, 75, 35, 72, 72, 39, 72, 65, 35, 108, 71, 37, 0, 17, 69, 32, 247, 34,
+			123, 48, 71, 35, 72, 104, 17, 39, 84, 55, 37, 0, 14, 69, 29, 60, 34, 62, 32, 36, 89, 49, 39, 72, 39, 0, 14, 67, 28, 247,
+			178, 35, 72, 36, 55, 55, 36, 57, 36, 0, 16, 69, 9, 193, 223, 123, 48, 108, 104, 17, 108, 65, 35, 55, 37, 0, 0, 13, 68, 193,
+			225, 209, 192, 49, 36, 55, 108, 51, 49, 0, 17, 69, 183, 56, 160, 60, 240, 48, 36, 57, 84, 35, 50, 72, 35, 72, 0, 14, 67, 126,
+			35, 79, 65, 39, 84, 35, 107, 107, 36, 72, 0, 13, 67, 114, 33, 207, 104, 17, 35, 84, 84, 108, 72, 0, 11, 67, 109, 19, 64, 83,
+			35, 51, 35, 107, 0, 10, 67, 58, 36, 79, 101, 39, 51, 72, 0, 24, 73, 48, 252, 207, 29, 226, 135, 123, 54, 192, 75, 35, 72, 37,
+			72, 39, 47, 47, 35, 55, 37, 83, 0, 12, 67, 41, 244, 113, 47, 35, 65, 35, 51, 81, 0, 15, 69, 40, 104, 145, 207, 0, 47, 36,
+			10, 39, 51, 37, 49, 0, 17, 70, 33, 242, 7, 68, 120, 0, 71, 39, 65, 71, 108, 51, 108, 50, 0, 11, 67, 30, 36, 79, 39, 84,
+			39, 51, 72, 0, 0, 19, 71, 134, 39, 243, 138, 209, 202, 204, 107, 39, 65, 36, 39, 48, 108, 47, 37, 0, 17, 70, 133, 248, 155, 205,
+			236, 192, 107, 36, 65, 39, 83, 37, 55, 37, 0, 14, 69, 128, 120, 15, 30, 0, 50, 108, 50, 72, 108, 50, 0, 16, 70, 127, 56, 95,
+			30, 12, 192, 65, 37, 107, 65, 108, 50, 37, 0, 14, 68, 124, 209, 209, 32, 65, 39, 107, 108, 51, 36, 71, 0, 16, 69, 95, 55, 147,
+			30, 0, 47, 36, 57, 55, 35, 89, 108, 50, 0, 18, 70, 92, 119, 156, 30, 12, 192, 47, 108, 55, 36, 104, 17, 108, 50, 37, 0, 16,
+			70, 80, 119, 237, 30, 12, 192, 91, 108, 65, 48, 108, 50, 37, 0, 16, 70, 79, 52, 95, 30, 12, 192, 89, 37, 51, 65, 108, 50, 37,
+			0, 15, 69, 78, 209, 225, 30, 0, 89, 36, 48, 108, 107, 108, 50, 0, 11, 67, 77, 248, 0, 89, 35, 65, 35, 50, 0, 12, 67, 77,
+			17, 218, 89, 39, 51, 108, 104, 17, 0, 18, 70, 76, 116, 143, 134, 12, 192, 89, 108, 88, 72, 35, 107, 35, 50, 37, 0, 15, 69, 76,
+			116, 71, 110, 0, 89, 108, 51, 108, 83, 39, 50, 0, 16, 70, 71, 56, 135, 120, 248, 128, 51, 37, 84, 108, 55, 72, 39, 0, 16, 70,
+			40, 116, 223, 30, 12, 192, 47, 108, 89, 65, 108, 50, 37, 0, 19, 70, 34, 17, 209, 113, 236, 192, 71, 35, 107, 108, 51, 104, 17, 39,
+			55, 37, 0, 19, 70, 33, 225, 223, 100, 116, 86, 71, 36, 55, 108, 65, 39, 108, 51, 36, 88, 0, 15, 69, 33, 18, 135, 108, 160, 71,
+			35, 51, 47, 108, 83, 47, 0, 0, 13, 68, 128, 124, 209, 196, 50, 108, 57, 51, 35, 81, 0, 10, 67, 127, 17, 192, 65, 36, 81, 108,
+			0, 14, 67, 92, 135, 0, 6, 47, 36, 71, 104, 17, 36, 12, 0, 14, 68, 78, 209, 209, 60, 89, 36, 48, 108, 51, 35, 72, 0, 14,
+			68, 77, 19, 145, 196, 89, 39, 51, 101, 51, 35, 81, 0, 12, 68, 58, 33, 225, 60, 101, 108, 107, 35, 72, 0, 10, 67, 40, 161, 192,
+			47, 36, 47, 108, 0, 14, 68, 33, 16, 145, 60, 71, 35, 51, 108, 51, 35, 72, 0, 10, 67, 32, 161, 192, 71, 36, 47, 108, 0, 19,
+			70, 28, 132, 135, 70, 12, 81, 35, 71, 88, 108, 51, 50, 36, 81, 35, 51, 0, 14, 68, 9, 230, 209, 60, 108, 55, 83, 36, 51, 36,
+			72, 0, 0, 12, 67, 102, 19, 242, 39, 107, 72, 36, 57, 36, 0, 12, 67, 93, 225, 200, 47, 39, 55, 55, 108, 71, 0, 11, 67, 81,
+			225, 200, 91, 39, 55, 108, 71, 0, 13, 68, 80, 120, 81, 56, 91, 108, 107, 51, 39, 101, 0, 18, 70, 80, 116, 94, 124, 120, 51, 91,
+			108, 51, 55, 39, 65, 108, 50, 37, 0, 17, 69, 71, 51, 71, 131, 32, 51, 36, 57, 107, 108, 50, 36, 57, 36, 0, 11, 67, 52, 193,
+			200, 107, 36, 75, 108, 71, 0, 0, 10, 67, 198, 44, 199, 81, 40, 57, 108, 0, 13, 68, 194, 12, 199, 192, 49, 39, 50, 57, 108, 49,
+			0, 15, 69, 193, 225, 211, 207, 0, 49, 36, 55, 108, 89, 37, 49, 0, 12, 67, 180, 252, 199, 48, 36, 72, 37, 57, 108, 0, 12, 67,
+			124, 252, 199, 65, 36, 72, 37, 57, 108, 0, 11, 67, 82, 213, 0, 91, 36, 48, 36, 91, 0, 34, 75, 40, 195, 243, 62, 6, 17, 93,
+			226, 7, 130, 16, 47, 35, 75, 72, 37, 72, 36, 50, 35, 88, 35, 51, 47, 35, 55, 35, 71, 108, 50, 36, 0, 15, 69, 33, 236, 199,
+			68, 240, 71, 36, 55, 57, 108, 51, 72, 0, 22, 72, 28, 168, 159, 35, 55, 145, 30, 0, 39, 47, 39, 65, 39, 71, 37, 55, 51, 108,
+			50, 0, 14, 2, 218, 145, 6, 34, 36, 12, 10, 39, 51, 72, 40, 0, 0, 11, 67, 205, 248, 0, 57, 35, 65, 35, 50, 0, 10, 67,
+			196, 168, 128, 81, 36, 47, 39, 0, 17, 69, 193, 244, 243, 138, 0, 49, 39, 65, 37, 89, 37, 57, 39, 50, 0, 13, 68, 181, 251, 71,
+			188, 48, 39, 65, 48, 108, 90, 0, 14, 69, 134, 36, 95, 138, 0, 107, 39, 51, 65, 40, 50, 0, 15, 69, 126, 1, 204, 28, 160, 65,
+			39, 50, 108, 75, 108, 47, 0, 17, 69, 124, 168, 135, 74, 0, 65, 39, 47, 36, 84, 108, 88, 36, 50, 0, 11, 67, 77, 252, 0, 89,
+			35, 65, 35, 49, 0, 15, 69, 55, 1, 243, 28, 160, 107, 36, 49, 108, 57, 108, 47, 0, 16, 68, 42, 24, 179, 200, 47, 35, 107, 84,
+			37, 57, 36, 57, 36, 0, 16, 69, 35, 4, 226, 28, 160, 71, 39, 49, 89, 39, 84, 108, 47, 0, 16, 69, 32, 245, 49, 138, 0, 71,
+			35, 72, 91, 39, 81, 40, 50, 0, 0, 14, 68, 192, 132, 115, 28, 49, 36, 71, 51, 37, 57, 108, 0, 10, 67, 72, 241, 192, 88, 39,
+			72, 108, 0, 17, 70, 28, 132, 97, 29, 19, 192, 35, 71, 35, 51, 107, 108, 51, 72, 0, 0, 23, 72, 186, 17, 209, 30, 12, 84, 43,
+			48, 76, 108, 107, 108, 51, 35, 50, 81, 39, 91, 47, 37, 0, 12, 67, 71, 56, 179, 51, 37, 57, 35, 84, 37, 0, 15, 69, 63, 8,
+			173, 30, 240, 72, 36, 49, 39, 48, 108, 90, 0, 0, 16, 69, 197, 232, 145, 204, 112, 81, 36, 55, 39, 51, 37, 57, 108, 0, 15, 69,
+			133, 248, 160, 48, 112, 107, 35, 65, 40, 50, 75, 108, 0, 15, 69, 111, 52, 200, 139, 0, 83, 36, 57, 89, 71, 40, 49, 0, 16, 69,
+			92, 140, 217, 40, 112, 47, 35, 71, 37, 35, 47, 35, 50, 0, 11, 67, 29, 231, 7, 36, 55, 104, 17, 108, 0, 0, 15, 69, 193, 17,
+			202, 206, 0, 49, 36, 51, 108, 47, 37, 50, 0, 14, 68, 125, 50, 162, 204, 65, 39, 89, 47, 35, 84, 37, 0, 16, 69, 62, 20, 202,
+			30, 0, 72, 36, 107, 36, 89, 47, 108, 50, 0, 0, 18, 70, 136, 119, 160, 79, 49, 192, 84, 108, 55, 36, 50, 89, 37, 57, 108, 0,
+			11, 67, 101, 71, 0, 36, 12, 91, 104, 17, 0, 13, 68, 70, 34, 32, 28, 51, 40, 71, 35, 50, 108, 0, 13, 68, 69, 49, 224, 28,
+			51, 36, 89, 108, 50, 108, 0, 16, 68, 41, 230, 224, 28, 47, 36, 55, 36, 83, 39, 50, 35, 50, 0, 17, 68, 41, 151, 207, 28, 47,
+			35, 19, 35, 65, 65, 39, 72, 35, 50, 0, 14, 68, 32, 245, 79, 28, 71, 35, 72, 89, 36, 72, 108, 0, 13, 68, 32, 120, 76, 28,
+			71, 108, 107, 36, 75, 108, 0, 13, 68, 29, 146, 160, 28, 36, 19, 47, 36, 50, 108, 0, 20, 2, 219, 147, 6, 57, 36, 4, 107, 35,
+			65, 88, 36, 12, 10, 39, 51, 72, 40, 0, 0, 17, 70, 192, 118, 209, 195, 53, 0, 49, 108, 83, 35, 51, 49, 37, 91, 0, 13, 67,
+			120, 184, 179, 55, 35, 89, 89, 35, 84, 37, 0, 11, 67, 120, 130, 128, 55, 35, 71, 35, 47, 0, 18, 70, 30, 2, 161, 31, 53, 0,
+			36, 50, 47, 36, 107, 108, 57, 35, 91, 0, 23, 5, 216, 168, 46, 217, 133, 71, 35, 12, 19, 72, 10, 35, 88, 9, 65, 37, 55, 108,
+			72, 0, 46, 13, 2, 219, 146, 6, 57, 36, 10, 39, 51, 72, 40, 0, 0, 17, 70, 193, 236, 224, 42, 40, 0, 49, 36, 55, 37, 50,
+			47, 39, 50, 0, 13, 67, 115, 55, 192, 104, 17, 35, 57, 57, 36, 65, 0, 15, 69, 71, 4, 199, 128, 112, 51, 39, 49, 89, 108, 50,
+			108, 0, 12, 67, 69, 60, 207, 6, 51, 36, 89, 37, 72, 0, 19, 70, 61, 71, 224, 124, 120, 0, 72, 39, 91, 65, 35, 50, 36, 65,
+			108, 50, 0, 11, 67, 35, 56, 161, 71, 37, 84, 36, 12, 0, 15, 69, 29, 50, 139, 128, 112, 36, 89, 47, 36, 89, 50, 108, 0, 10,
+			67, 8, 135, 192, 108, 71, 35, 65, 0, 0, 14, 68, 194, 24, 49, 204, 49, 39, 107, 50, 36, 81, 37, 0, 15, 69, 189, 225, 202, 206,
+			0, 90, 36, 55, 108, 47, 37, 50, 0, 19, 70, 133, 244, 219, 71, 28, 192, 107, 35, 65, 89, 39, 83, 51, 36, 81, 37, 0, 17, 67,
+			124, 215, 28, 65, 39, 107, 35, 104, 17, 104, 17, 36, 104, 17, 0, 12, 68, 124, 124, 19, 204, 65, 108, 49, 89, 37, 0, 12, 68, 79,
+			51, 224, 204, 89, 37, 72, 50, 37, 0, 15, 69, 61, 236, 204, 30, 0, 72, 36, 55, 37, 75, 108, 50, 0, 20, 70, 61, 50, 136, 128,
+			252, 192, 6, 72, 35, 89, 47, 36, 71, 35, 50, 72, 37, 0, 13, 68, 60, 115, 224, 204, 72, 108, 72, 35, 50, 37, 0, 11, 67, 53,
+			92, 224, 107, 35, 89, 37, 50, 0, 14, 67, 41, 232, 160, 47, 35, 55, 35, 84, 84, 39, 50, 0, 15, 67, 41, 184, 156, 47, 35, 83,
+			35, 84, 84, 39, 104, 17, 0, 14, 67, 33, 67, 202, 71, 36, 91, 36, 72, 72, 35, 47, 0, 10, 67, 32, 124, 202, 71, 108, 57, 47,
+			0, 17, 70, 30, 4, 202, 204, 168, 128, 35, 50, 36, 89, 47, 37, 47, 39, 0, 33, 76, 29, 236, 10, 70, 38, 243, 75, 56, 158, 138,
+			252, 192, 36, 55, 36, 49, 47, 36, 51, 39, 83, 37, 88, 37, 57, 39, 55, 39, 90, 37, 0, 13, 67, 28, 136, 74, 39, 71, 39, 107,
+			107, 35, 47, 0, 0, 12, 68, 182, 36, 179, 60, 48, 39, 88, 37, 72, 0, 13, 68, 126, 21, 51, 60, 65, 35, 107, 91, 37, 72, 0,
+			11, 67, 124, 114, 159, 65, 108, 47, 35, 65, 0, 15, 68, 76, 228, 115, 132, 89, 39, 101, 51, 37, 57, 36, 12, 0, 15, 68, 74, 3,
+			243, 132, 88, 35, 50, 72, 37, 57, 36, 12, 0, 13, 68, 40, 132, 115, 60, 47, 35, 71, 51, 37, 72, 0, 19, 70, 33, 28, 202, 30,
+			1, 192, 71, 36, 51, 37, 47, 108, 50, 37, 57, 108, 0, 14, 68, 32, 132, 115, 60, 71, 36, 71, 35, 51, 37, 72, 0, 17, 70, 32,
+			119, 145, 206, 1, 192, 71, 108, 55, 36, 51, 37, 50, 108, 0, 0, 15, 69, 193, 24, 135, 43, 48, 49, 51, 39, 84, 108, 47, 37, 0,
+			8, 66, 189, 224, 90, 36, 55, 0, 8, 66, 185, 224, 76, 36, 55, 0, 8, 66, 181, 224, 48, 39, 55, 0, 21, 70, 180, 244, 112, 80,
+			172, 115, 48, 36, 72, 35, 51, 49, 39, 91, 47, 36, 81, 37, 0, 15, 68, 125, 19, 224, 40, 65, 39, 51, 72, 35, 50, 35, 47, 0,
+			20, 70, 122, 34, 51, 30, 215, 162, 55, 40, 71, 37, 57, 108, 48, 39, 55, 39, 84, 0, 13, 68, 77, 28, 115, 128, 89, 36, 51, 81,
+			37, 50, 0, 13, 68, 34, 4, 179, 128, 71, 36, 50, 88, 37, 50, 0, 15, 68, 33, 39, 209, 104, 71, 39, 88, 65, 39, 51, 104, 17,
+			0, 16, 69, 33, 20, 160, 199, 48, 71, 35, 51, 88, 35, 50, 81, 37, 0, 17, 68, 32, 247, 30, 112, 71, 35, 72, 104, 17, 36, 55,
+			36, 104, 17, 0, 14, 68, 29, 231, 224, 40, 36, 55, 36, 65, 36, 50, 47, 0, 13, 68, 8, 228, 115, 128, 108, 101, 35, 51, 37, 50,
+			0, 0, 12, 67, 186, 3, 33, 76, 36, 50, 75, 36, 12, 0, 17, 70, 139, 56, 19, 42, 40, 0, 84, 37, 50, 36, 89, 47, 39, 50,
+			0, 17, 69, 131, 51, 17, 206, 16, 50, 37, 75, 36, 51, 37, 57, 36, 12, 0, 11, 67, 131, 8, 161, 50, 36, 49, 40, 107, 0, 12,
+			67, 129, 183, 161, 50, 36, 83, 55, 36, 12, 0, 16, 69, 125, 113, 243, 34, 16, 65, 39, 47, 108, 57, 36, 71, 36, 0, 18, 69, 115,
+			53, 209, 206, 16, 104, 17, 36, 57, 47, 35, 51, 37, 57, 36, 0, 13, 67, 114, 24, 161, 104, 17, 35, 107, 84, 36, 12, 0, 14, 67,
+			92, 135, 33, 47, 35, 71, 35, 104, 17, 36, 12, 0, 12, 67, 80, 248, 15, 91, 39, 72, 35, 50, 72, 0, 9, 67, 79, 55, 192, 89,
+			37, 65, 0, 11, 67, 62, 247, 192, 72, 36, 90, 35, 65, 0, 17, 70, 62, 36, 202, 124, 120, 0, 72, 40, 89, 47, 36, 65, 108, 50,
+			0, 12, 67, 57, 24, 15, 101, 35, 51, 35, 50, 72, 0, 12, 67, 53, 200, 33, 107, 39, 104, 17, 50, 36, 0, 13, 67, 35, 8, 15,
+			71, 39, 49, 39, 50, 35, 72, 0, 12, 67, 33, 24, 15, 71, 35, 51, 35, 50, 72, 0, 16, 70, 29, 119, 243, 128, 120, 0, 36, 47,
+			65, 37, 50, 108, 50, 0, 18, 70, 29, 18, 135, 129, 44, 199, 39, 51, 47, 108, 50, 88, 37, 57, 108, 0, 0, 15, 69, 198, 43, 237,
+			80, 160, 81, 40, 90, 48, 39, 91, 47, 0, 12, 67, 197, 44, 224, 6, 81, 39, 88, 37, 50, 0, 15, 69, 194, 43, 237, 80, 160, 49,
+			40, 90, 48, 39, 91, 47, 0, 14, 68, 186, 209, 226, 120, 76, 35, 48, 108, 84, 39, 55, 0, 33, 76, 186, 3, 213, 62, 20, 135, 68,
+			168, 159, 30, 12, 192, 76, 35, 50, 72, 89, 35, 72, 107, 36, 88, 108, 51, 47, 39, 65, 108, 50, 37, 0, 18, 69, 185, 232, 159, 69,
+			160, 76, 36, 55, 39, 84, 65, 39, 51, 104, 17, 0, 13, 68, 185, 27, 179, 120, 76, 36, 51, 76, 37, 55, 0, 11, 67, 132, 167, 128,
+			107, 39, 47, 36, 55, 0, 11, 67, 124, 167, 128, 65, 39, 47, 36, 55, 0, 19, 70, 109, 19, 160, 63, 28, 192, 83, 35, 51, 101, 39,
+			50, 72, 36, 81, 37, 0, 12, 67, 102, 35, 202, 6, 39, 12, 72, 35, 47, 0, 18, 69, 80, 164, 95, 69, 160, 91, 39, 47, 39, 51,
+			65, 39, 51, 104, 17, 0, 19, 70, 77, 20, 160, 63, 28, 192, 89, 35, 51, 88, 36, 50, 72, 36, 81, 37, 0, 11, 67, 72, 135, 128,
+			88, 36, 71, 36, 55, 0, 17, 70, 70, 39, 199, 71, 56, 128, 51, 39, 65, 108, 51, 37, 57, 39, 0, 13, 68, 61, 28, 200, 120, 72,
+			36, 51, 37, 71, 55, 0, 14, 67, 41, 56, 32, 47, 35, 89, 35, 50, 50, 39, 50, 0, 14, 68, 29, 231, 34, 120, 35, 55, 104, 17,
+			39, 12, 55, 0, 0, 13, 68, 187, 1, 224, 60, 76, 36, 49, 108, 50, 72, 0, 17, 70, 181, 28, 199, 56, 168, 64, 48, 39, 51, 57,
+			108, 101, 47, 36, 0, 12, 68, 180, 124, 32, 132, 48, 108, 49, 50, 36, 0, 14, 67, 126, 6, 31, 65, 39, 50, 35, 88, 88, 35, 65,
+			0, 15, 68, 123, 1, 202, 132, 55, 35, 49, 49, 108, 47, 36, 12, 0, 11, 67, 112, 244, 192, 104, 17, 39, 72, 89, 0, 13, 67, 112,
+			119, 31, 104, 17, 108, 104, 17, 39, 65, 0, 14, 68, 81, 236, 202, 132, 91, 35, 55, 37, 47, 36, 12, 0, 12, 67, 60, 124, 223, 72,
+			108, 6, 57, 36, 65, 0, 10, 67, 56, 124, 219, 101, 108, 36, 83, 0, 14, 67, 41, 24, 31, 47, 35, 51, 35, 50, 50, 39, 65, 0,
+			13, 68, 40, 132, 115, 132, 47, 35, 71, 51, 35, 36, 0, 14, 68, 32, 124, 30, 132, 71, 108, 49, 35, 55, 55, 36, 0, 23, 71, 32,
+			119, 135, 107, 52, 74, 28, 71, 108, 55, 108, 104, 17, 36, 57, 51, 35, 47, 35, 50, 0, 14, 68, 28, 244, 96, 132, 35, 72, 36, 51,
+			50, 36, 12, 0, 13, 68, 9, 243, 138, 132, 108, 65, 39, 101, 47, 36, 0, 0, 13, 68, 198, 34, 30, 128, 81, 40, 71, 55, 35, 50,
+			0, 13, 68, 196, 241, 206, 40, 81, 39, 72, 108, 101, 47, 0, 17, 70, 196, 116, 202, 71, 50, 128, 81, 108, 89, 47, 36, 51, 37, 47,
+			0, 13, 67, 193, 232, 30, 49, 39, 55, 39, 50, 36, 55, 0, 18, 70, 131, 56, 15, 28, 226, 128, 50, 35, 57, 35, 50, 72, 108, 101,
+			47, 0, 13, 68, 129, 180, 115, 128, 50, 36, 83, 51, 37, 50, 0, 14, 67, 124, 211, 200, 65, 39, 107, 35, 72, 72, 35, 71, 0, 14,
+			68, 109, 23, 34, 128, 83, 39, 51, 104, 17, 40, 50, 0, 14, 68, 108, 118, 94, 128, 83, 108, 19, 36, 55, 39, 50, 0, 13, 68, 82,
+			1, 206, 40, 91, 36, 50, 108, 101, 47, 0, 13, 68, 79, 4, 115, 128, 36, 89, 49, 51, 37, 50, 0, 12, 67, 77, 242, 30, 89, 35,
+			65, 71, 39, 55, 0, 18, 70, 61, 248, 176, 68, 116, 243, 72, 36, 65, 39, 49, 51, 108, 89, 37, 0, 12, 67, 54, 39, 30, 107, 39,
+			104, 17, 35, 55, 0, 19, 70, 43, 56, 176, 68, 116, 243, 47, 36, 10, 39, 49, 36, 51, 108, 89, 37, 0, 12, 67, 41, 24, 12, 47,
+			39, 51, 35, 50, 75, 0, 10, 67, 34, 35, 204, 71, 40, 72, 75, 0, 12, 67, 33, 24, 12, 71, 36, 51, 36, 50, 75, 0, 11, 67,
+			32, 252, 222, 71, 35, 72, 37, 55, 0, 14, 68, 32, 212, 115, 128, 71, 35, 107, 51, 36, 57, 50, 0, 10, 67, 30, 216, 158, 36, 48,
+			39, 55, 0, 18, 70, 28, 215, 207, 126, 36, 243, 35, 107, 65, 35, 72, 65, 40, 89, 108, 0, 18, 70, 28, 168, 176, 68, 116, 243, 39,
+			47, 39, 49, 36, 51, 108, 89, 37, 0, 13, 68, 9, 180, 115, 128, 108, 83, 35, 51, 37, 50, 0, 8, 65, 88, 6, 88, 108, 72, 0,
+			0, 15, 69, 198, 3, 7, 128, 240, 81, 39, 50, 75, 108, 50, 72, 0, 15, 68, 193, 228, 243, 124, 49, 35, 55, 89, 37, 57, 39, 65,
+			0, 15, 69, 183, 56, 135, 190, 16, 48, 36, 57, 84, 108, 90, 36, 0, 17, 69, 129, 252, 240, 128, 240, 50, 36, 65, 37, 49, 39, 50,
+			35, 72, 0, 14, 68, 127, 60, 32, 124, 65, 37, 49, 39, 50, 35, 65, 0, 15, 69, 127, 51, 199, 128, 240, 65, 37, 72, 108, 50, 35,
+			72, 0, 17, 69, 126, 33, 210, 130, 16, 65, 39, 84, 108, 88, 36, 50, 36, 12, 0, 19, 69, 125, 202, 224, 130, 16, 65, 39, 104, 17,
+			35, 50, 50, 35, 50, 36, 12, 0, 16, 69, 125, 50, 159, 128, 240, 65, 39, 89, 47, 65, 35, 50, 72, 0, 15, 68, 125, 19, 224, 124,
+			65, 39, 51, 72, 35, 50, 35, 65, 0, 15, 68, 124, 210, 158, 124, 65, 39, 107, 47, 35, 55, 36, 65, 0, 17, 69, 124, 168, 7, 34,
+			16, 65, 39, 47, 35, 50, 108, 71, 36, 107, 0, 17, 70, 123, 17, 209, 204, 167, 192, 55, 39, 81, 108, 51, 37, 47, 65, 0, 17, 69,
+			109, 17, 217, 130, 16, 83, 35, 51, 108, 19, 36, 50, 36, 12, 0, 12, 67, 105, 20, 64, 104, 17, 39, 51, 35, 51, 0, 14, 68, 68,
+			117, 179, 124, 51, 108, 88, 37, 57, 35, 65, 0, 15, 68, 61, 71, 224, 124, 72, 39, 91, 65, 35, 50, 35, 65, 0, 18, 70, 48, 241,
+			200, 29, 178, 161, 75, 39, 72, 108, 71, 108, 83, 47, 36, 0, 16, 69, 41, 28, 7, 128, 240, 47, 35, 51, 35, 49, 108, 50, 72, 0,
+			16, 69, 33, 68, 98, 206, 16, 71, 39, 91, 51, 40, 57, 36, 12, 0, 16, 69, 33, 24, 159, 128, 240, 71, 39, 51, 40, 65, 35, 50,
+			72, 0, 18, 70, 33, 20, 199, 131, 55, 192, 71, 36, 51, 36, 89, 108, 50, 37, 65, 0, 15, 69, 33, 20, 162, 206, 16, 71, 39, 51,
+			88, 40, 57, 36, 0, 12, 67, 33, 20, 83, 71, 35, 51, 51, 36, 89, 0, 0, 15, 68, 181, 20, 224, 120, 48, 36, 51, 89, 39, 50,
+			36, 55, 0, 14, 69, 128, 120, 143, 30, 0, 50, 108, 84, 72, 108, 50, 0, 16, 68, 126, 2, 156, 120, 65, 39, 50, 47, 35, 104, 17,
+			36, 55, 0, 16, 69, 74, 3, 241, 30, 0, 88, 36, 50, 72, 36, 81, 108, 50, 0, 19, 70, 60, 116, 98, 61, 19, 138, 72, 108, 51,
+			39, 72, 36, 51, 35, 101, 47, 0, 14, 68, 48, 241, 226, 120, 75, 35, 72, 108, 84, 36, 55, 0, 12, 68, 43, 55, 226, 120, 47, 37,
+			65, 39, 55, 0, 16, 69, 43, 11, 81, 30, 0, 47, 35, 49, 48, 35, 51, 108, 50, 0, 11, 67, 41, 252, 210, 47, 35, 65, 37, 88,
+			0, 15, 69, 29, 242, 141, 30, 0, 36, 65, 47, 36, 107, 108, 50, 0, 12, 68, 10, 36, 115, 120, 108, 84, 51, 37, 55, 0, 0, 12,
+			67, 193, 232, 81, 49, 35, 55, 107, 39, 51, 0, 15, 69, 139, 55, 161, 121, 240, 84, 37, 55, 107, 36, 55, 65, 0, 11, 67, 127, 20,
+			192, 65, 35, 81, 35, 89, 0, 16, 68, 126, 24, 15, 76, 65, 39, 6, 107, 35, 50, 72, 36, 89, 0, 15, 67, 125, 195, 209, 65, 39,
+			104, 17, 35, 72, 72, 35, 51, 0, 19, 70, 124, 244, 96, 204, 168, 64, 65, 39, 72, 36, 51, 50, 37, 47, 36, 12, 0, 18, 70, 124,
+			164, 94, 206, 12, 64, 65, 36, 47, 36, 51, 55, 37, 50, 81, 0, 11, 67, 109, 19, 0, 83, 35, 51, 35, 75, 0, 13, 68, 109, 17,
+			224, 76, 83, 36, 51, 108, 50, 89, 0, 10, 67, 100, 244, 192, 35, 72, 35, 89, 0, 17, 70, 100, 131, 199, 121, 232, 64, 35, 71, 72,
+			39, 55, 55, 108, 107, 0, 18, 70, 83, 4, 71, 121, 232, 64, 91, 39, 49, 51, 39, 55, 55, 108, 107, 0, 13, 68, 79, 1, 224, 76,
+			89, 36, 49, 108, 50, 89, 0, 16, 70, 76, 119, 211, 138, 12, 64, 89, 108, 65, 89, 39, 50, 81, 0, 13, 68, 72, 124, 81, 76, 88,
+			108, 81, 51, 39, 89, 0, 14, 68, 70, 33, 200, 92, 51, 35, 84, 108, 71, 36, 47, 0, 18, 70, 41, 12, 7, 71, 56, 64, 47, 36,
+			88, 49, 108, 51, 37, 57, 36, 0, 18, 70, 34, 17, 199, 121, 232, 64, 71, 35, 107, 108, 10, 39, 55, 108, 107, 0, 17, 69, 34, 5,
+			51, 129, 240, 71, 36, 50, 36, 91, 37, 50, 35, 65, 0, 19, 70, 32, 244, 222, 205, 200, 64, 71, 35, 72, 89, 35, 55, 37, 104, 17,
+			36, 0, 19, 70, 32, 244, 199, 33, 200, 64, 71, 35, 72, 89, 108, 71, 36, 104, 17, 36, 0, 16, 70, 28, 213, 71, 207, 56, 64, 36,
+			107, 89, 108, 37, 57, 36, 0, 18, 70, 9, 231, 243, 131, 56, 159, 108, 55, 65, 37, 50, 37, 57, 39, 65, 0, 0, 12, 67, 197, 245,
+			34, 81, 39, 65, 10, 91, 39, 0, 14, 69, 196, 116, 162, 205, 224, 81, 108, 88, 39, 37, 55, 0, 8, 66, 185, 64, 76, 36, 91, 0,
+			10, 67, 182, 39, 162, 48, 39, 55, 39, 0, 14, 68, 181, 24, 138, 72, 48, 39, 51, 39, 47, 36, 88, 0, 17, 70, 181, 22, 243, 71,
+			50, 128, 48, 39, 51, 83, 37, 51, 37, 47, 0, 13, 68, 139, 56, 15, 72, 84, 37, 50, 72, 39, 88, 0, 10, 67, 101, 82, 0, 35,
+			89, 35, 71, 0, 16, 69, 81, 17, 237, 129, 224, 91, 36, 51, 108, 48, 50, 36, 55, 0, 11, 67, 80, 130, 34, 91, 35, 71, 71, 40,
+			0, 12, 67, 68, 200, 179, 51, 35, 75, 35, 84, 37, 0, 10, 67, 56, 117, 34, 101, 108, 91, 40, 0, 12, 67, 43, 8, 34, 47, 36,
+			49, 50, 39, 12, 0, 12, 67, 33, 23, 34, 71, 39, 51, 104, 17, 40, 0, 10, 67, 32, 117, 34, 71, 108, 91, 40, 0, 24, 72, 30,
+			12, 7, 70, 5, 15, 131, 48, 36, 50, 49, 108, 51, 50, 35, 91, 39, 72, 35, 50, 37, 0, 17, 70, 29, 236, 210, 28, 130, 128, 36,
+			55, 37, 88, 108, 71, 36, 47, 0, 17, 70, 29, 59, 71, 131, 56, 158, 36, 89, 48, 108, 50, 57, 39, 55, 0, 15, 69, 29, 50, 145,
+			205, 224, 36, 89, 47, 36, 51, 37, 55, 0, 11, 67, 29, 40, 34, 35, 88, 50, 39, 12, 0, 10, 67, 28, 171, 128, 35, 47, 35, 76,
+			0, 0, 18, 70, 186, 17, 209, 40, 231, 192, 76, 108, 107, 108, 51, 47, 39, 101, 65, 0, 14, 68, 181, 236, 223, 68, 48, 39, 55, 37,
+			65, 36, 51, 0, 14, 69, 135, 52, 71, 193, 48, 107, 37, 51, 108, 49, 89, 0, 15, 68, 133, 23, 15, 68, 107, 35, 51, 104, 17, 35,
+			72, 51, 0, 18, 70, 111, 55, 138, 71, 56, 49, 83, 37, 55, 47, 36, 51, 37, 50, 81, 0, 13, 68, 71, 53, 10, 68, 51, 37, 91,
+			47, 36, 51, 0, 14, 68, 43, 56, 160, 68, 47, 37, 57, 40, 50, 36, 51, 0, 14, 69, 40, 116, 81, 205, 48, 47, 108, 51, 51, 37,
+			89, 0, 19, 70, 34, 17, 193, 29, 231, 161, 71, 35, 107, 108, 10, 39, 55, 55, 108, 107, 0, 15, 68, 33, 21, 31, 68, 71, 35, 51,
+			91, 36, 65, 39, 51, 0, 20, 70, 32, 215, 207, 29, 231, 161, 71, 36, 107, 35, 65, 72, 36, 55, 55, 108, 107, 0, 9, 5, 95, 48,
+			97, 110, 100, 39, 0, 0, 12, 67, 197, 44, 82, 81, 36, 88, 81, 36, 88, 0, 17, 70, 196, 116, 79, 71, 55, 128, 81, 108, 51, 72,
+			51, 36, 57, 55, 0, 14, 67, 125, 252, 210, 65, 39, 65, 35, 57, 57, 36, 88, 0, 16, 70, 110, 39, 179, 194, 39, 128, 83, 39, 55,
+			37, 49, 40, 55, 0, 11, 67, 80, 248, 0, 91, 39, 72, 35, 50, 0, 16, 69, 60, 132, 202, 30, 0, 72, 35, 71, 36, 89, 47, 108,
+			50, 0, 15, 69, 48, 120, 20, 206, 0, 75, 108, 50, 36, 91, 37, 50, 0, 13, 68, 42, 3, 206, 136, 47, 39, 50, 72, 101, 40, 0,
+			28, 73, 41, 241, 243, 72, 248, 96, 63, 28, 192, 47, 35, 65, 108, 57, 39, 88, 72, 35, 107, 35, 50, 72, 36, 81, 37, 0, 13, 68,
+			40, 196, 115, 80, 47, 35, 75, 51, 37, 91, 0, 15, 69, 32, 116, 179, 194, 0, 71, 108, 88, 37, 49, 39, 50, 0, 19, 70, 30, 215,
+			179, 195, 53, 32, 35, 48, 55, 37, 49, 36, 57, 91, 36, 50, 0, 16, 70, 29, 59, 115, 71, 55, 128, 36, 89, 48, 37, 51, 37, 55,
+			0, 17, 2, 217, 180, 107, 35, 65, 88, 36, 57, 36, 10, 71, 108, 55, 108, 0, 0, 16, 69, 207, 3, 243, 197, 16, 57, 36, 49, 72,
+			37, 81, 35, 51, 0, 22, 71, 129, 152, 144, 32, 119, 158, 132, 50, 35, 10, 40, 88, 39, 71, 36, 55, 55, 108, 107, 0, 15, 69, 72,
+			115, 223, 133, 16, 88, 108, 72, 65, 36, 107, 51, 0, 16, 69, 68, 124, 27, 121, 16, 51, 108, 49, 83, 36, 55, 36, 51, 0, 15, 68,
+			57, 23, 241, 76, 101, 35, 51, 65, 35, 81, 35, 89, 0, 15, 69, 33, 19, 211, 205, 16, 71, 35, 51, 72, 89, 37, 51, 0, 21, 71,
+			30, 5, 7, 4, 119, 158, 132, 19, 36, 50, 91, 108, 19, 35, 55, 55, 108, 107, 0, 16, 69, 29, 60, 32, 61, 16, 36, 89, 49, 35,
+			50, 72, 35, 51, 0, 12, 68, 28, 135, 179, 76, 36, 71, 55, 37, 89, 0, 0, 12, 67, 198, 44, 243, 6, 81, 40, 12, 37, 12, 0,
+			21, 71, 181, 27, 81, 136, 172, 243, 128, 48, 39, 51, 48, 39, 51, 39, 47, 36, 37, 50, 0, 13, 67, 124, 184, 51, 65, 39, 89, 35,
+			50, 50, 108, 0, 10, 67, 78, 40, 51, 89, 39, 50, 37, 0, 13, 67, 78, 2, 179, 89, 39, 50, 50, 35, 47, 37, 0, 12, 67, 74,
+			28, 20, 88, 36, 107, 49, 36, 91, 0, 11, 67, 68, 120, 20, 51, 108, 50, 36, 91, 0, 12, 67, 60, 120, 20, 72, 6, 108, 50, 36,
+			91, 0, 24, 73, 41, 23, 226, 63, 56, 7, 127, 60, 0, 47, 36, 51, 65, 39, 72, 37, 50, 108, 65, 37, 49, 0, 12, 67, 33, 24,
+			20, 71, 39, 51, 39, 50, 91, 0, 17, 70, 32, 114, 7, 130, 44, 222, 71, 108, 71, 108, 50, 39, 36, 55, 0, 0, 11, 67, 198, 44,
+			207, 81, 40, 57, 35, 72, 0, 18, 70, 195, 49, 224, 126, 20, 64, 49, 37, 57, 108, 50, 65, 36, 107, 51, 0, 23, 72, 182, 36, 71,
+			76, 241, 222, 122, 16, 48, 40, 51, 35, 89, 35, 72, 39, 55, 55, 108, 107, 0, 15, 68, 181, 225, 241, 68, 48, 36, 55, 55, 108, 81,
+			35, 51, 0, 18, 70, 127, 60, 17, 137, 180, 64, 65, 108, 57, 49, 51, 39, 83, 36, 51, 0, 18, 70, 127, 52, 243, 138, 4, 64, 65,
+			37, 89, 37, 57, 39, 50, 36, 51, 0, 21, 72, 122, 44, 82, 29, 242, 34, 71, 16, 55, 39, 81, 88, 108, 65, 71, 39, 51, 81, 0,
+			10, 67, 81, 245, 0, 91, 36, 65, 91, 0, 18, 70, 77, 188, 207, 126, 20, 64, 89, 36, 83, 37, 72, 65, 39, 107, 51, 0, 14, 69,
+			75, 52, 71, 193, 48, 88, 37, 51, 108, 49, 89, 0, 12, 67, 72, 140, 207, 88, 39, 71, 36, 57, 72, 0, 18, 70, 70, 33, 224, 126,
+			20, 64, 51, 35, 84, 108, 50, 65, 36, 107, 51, 0, 19, 70, 61, 241, 211, 182, 20, 64, 72, 35, 65, 108, 89, 36, 48, 36, 107, 51,
+			0, 14, 69, 34, 36, 71, 193, 48, 71, 39, 51, 108, 49, 89, 0, 23, 72, 29, 180, 199, 71, 20, 211, 42, 16, 35, 83, 89, 108, 51,
+			81, 39, 89, 35, 89, 47, 36, 0, 23, 72, 28, 129, 217, 32, 241, 222, 122, 16, 35, 71, 108, 19, 35, 71, 72, 36, 55, 55, 108, 107,
+			0, 18, 70, 9, 21, 51, 62, 37, 19, 108, 51, 91, 37, 72, 40, 91, 36, 89, 0, 0, 12, 67, 192, 180, 74, 49, 36, 89, 51, 35,
+			47, 0, 14, 69, 184, 123, 94, 206, 0, 76, 108, 48, 55, 37, 50, 0, 14, 68, 182, 248, 161, 80, 48, 35, 90, 40, 107, 36, 91, 0,
+			11, 67, 136, 120, 10, 84, 108, 50, 36, 47, 0, 14, 68, 131, 8, 161, 80, 50, 36, 49, 40, 107, 36, 91, 0, 14, 68, 124, 130, 160,
+			204, 65, 39, 71, 47, 35, 50, 37, 0, 15, 68, 109, 55, 30, 204, 83, 36, 89, 104, 17, 36, 55, 37, 0, 12, 67, 81, 28, 10, 91,
+			36, 51, 49, 35, 47, 0, 10, 67, 76, 124, 202, 89, 108, 57, 47, 0, 19, 70, 73, 225, 224, 62, 8, 128, 88, 36, 55, 108, 50, 72,
+			36, 50, 39, 12, 0, 10, 67, 68, 124, 202, 51, 108, 57, 47, 0, 14, 69, 62, 36, 202, 30, 0, 72, 40, 89, 47, 108, 50, 0, 14,
+			68, 62, 24, 34, 204, 72, 36, 107, 50, 35, 84, 37, 0, 14, 68, 61, 24, 148, 204, 72, 36, 51, 35, 84, 91, 37, 0, 14, 69, 60,
+			116, 202, 30, 0, 72, 108, 89, 47, 108, 50, 0, 14, 68, 56, 119, 224, 204, 101, 108, 65, 36, 50, 36, 37, 0, 15, 69, 43, 52, 162,
+			33, 32, 47, 37, 88, 39, 71, 39, 88, 0, 14, 68, 33, 225, 240, 80, 71, 35, 55, 108, 49, 36, 91, 0, 14, 69, 32, 119, 176, 30,
+			0, 71, 108, 55, 49, 108, 50, 0, 14, 68, 10, 24, 12, 80, 108, 107, 35, 50, 75, 36, 91, 0, 19, 2, 217, 176, 35, 55, 36, 83,
+			36, 65, 35, 104, 17, 89, 40, 51, 36, 12, 0, 0, 15, 69, 124, 114, 135, 61, 16, 65, 108, 47, 108, 72, 39, 51, 0, 18, 70, 76,
+			120, 10, 70, 39, 209, 89, 108, 50, 47, 51, 39, 65, 36, 51, 0, 15, 69, 29, 19, 212, 205, 16, 35, 51, 72, 35, 91, 37, 51, 0,
+			0, 17, 69, 197, 52, 202, 131, 48, 81, 39, 89, 35, 89, 47, 35, 50, 37, 0, 21, 70, 186, 3, 205, 121, 200, 179, 76, 35, 50, 72,
+			107, 35, 55, 104, 17, 35, 84, 37, 0, 13, 67, 186, 3, 50, 76, 36, 50, 75, 36, 57, 36, 0, 13, 67, 129, 51, 178, 50, 39, 89,
+			101, 36, 57, 36, 0, 13, 68, 126, 39, 224, 40, 65, 39, 65, 36, 50, 47, 0, 13, 68, 79, 60, 30, 40, 89, 37, 49, 55, 36, 47,
+			0, 14, 68, 79, 55, 209, 104, 89, 37, 65, 39, 51, 104, 17, 0, 12, 67, 75, 56, 8, 88, 36, 57, 50, 35, 71, 0, 19, 70, 73,
+			150, 209, 30, 7, 162, 88, 35, 19, 83, 36, 51, 108, 50, 55, 40, 0, 12, 67, 73, 24, 8, 88, 35, 51, 50, 35, 71, 0, 14, 68,
+			71, 1, 240, 40, 51, 36, 49, 108, 49, 35, 47, 0, 14, 67, 57, 23, 50, 101, 36, 51, 104, 17, 36, 57, 36, 0, 17, 70, 42, 43,
+			98, 122, 43, 243, 47, 39, 48, 39, 55, 39, 90, 37, 0, 16, 69, 32, 245, 48, 123, 48, 71, 35, 72, 91, 36, 49, 55, 37, 0, 14,
+			68, 10, 8, 156, 40, 108, 50, 84, 35, 104, 17, 47, 0, 0, 10, 67, 193, 234, 192, 49, 39, 55, 55, 0, 12, 67, 130, 21, 79, 50,
+			39, 107, 89, 35, 72, 0, 14, 68, 124, 241, 219, 100, 65, 39, 72, 108, 83, 36, 19, 0, 12, 67, 70, 40, 15, 51, 35, 84, 35, 50,
+			72, 0, 19, 70, 52, 193, 223, 43, 20, 64, 107, 36, 75, 108, 65, 35, 47, 81, 35, 51, 0, 14, 68, 29, 76, 32, 192, 36, 91, 49,
+			35, 50, 35, 49, 0, 17, 70, 10, 44, 224, 206, 40, 0, 108, 84, 37, 50, 37, 57, 39, 50, 0, 0, 19, 71, 135, 51, 209, 137, 232,
+			175, 204, 107, 37, 72, 51, 39, 55, 39, 90, 37, 0, 17, 70, 133, 248, 155, 138, 12, 192, 107, 39, 65, 39, 83, 39, 50, 37, 0, 17,
+			70, 130, 37, 51, 62, 12, 192, 50, 40, 91, 37, 72, 35, 50, 37, 0, 18, 70, 125, 225, 220, 28, 172, 192, 65, 39, 55, 108, 104, 17,
+			108, 47, 37, 0, 16, 68, 124, 196, 115, 200, 65, 39, 75, 51, 37, 57, 36, 57, 36, 0, 12, 67, 121, 10, 202, 55, 36, 88, 88, 35,
+			47, 0, 11, 67, 111, 8, 0, 83, 36, 49, 35, 50, 0, 13, 68, 109, 225, 224, 188, 83, 36, 55, 108, 50, 90, 0, 11, 67, 81, 248,
+			0, 91, 35, 65, 35, 50, 0, 18, 70, 60, 120, 19, 42, 12, 192, 72, 108, 50, 36, 89, 47, 35, 50, 37, 0, 13, 67, 53, 28, 10,
+			107, 35, 51, 36, 49, 35, 47, 0, 13, 67, 33, 28, 10, 71, 35, 51, 36, 49, 35, 47, 0, 16, 69, 32, 124, 80, 80, 160, 71, 108,
+			81, 39, 88, 35, 91, 47, 0, 0, 23, 72, 186, 17, 209, 79, 55, 160, 61, 16, 76, 108, 107, 108, 51, 89, 37, 55, 35, 50, 72, 51,
+			0, 11, 67, 184, 114, 48, 76, 108, 71, 39, 49, 0, 14, 68, 182, 247, 209, 60, 48, 35, 90, 65, 39, 51, 72, 0, 20, 70, 124, 211,
+			226, 62, 12, 81, 65, 35, 107, 72, 40, 72, 50, 36, 81, 35, 51, 0, 13, 68, 83, 1, 224, 60, 91, 36, 49, 108, 50, 72, 0, 13,
+			68, 69, 49, 224, 60, 51, 36, 89, 108, 50, 72, 0, 29, 74, 68, 115, 243, 136, 124, 10, 206, 44, 202, 132, 51, 108, 72, 37, 57, 39,
+			19, 35, 49, 47, 37, 84, 37, 47, 36, 12, 0, 12, 67, 61, 242, 48, 72, 39, 65, 71, 35, 49, 0, 13, 68, 43, 1, 224, 60, 47,
+			36, 49, 108, 50, 72, 0, 13, 68, 42, 209, 224, 60, 47, 35, 48, 108, 50, 72, 0, 12, 67, 41, 242, 48, 47, 39, 65, 71, 35, 49,
+			0, 18, 70, 29, 59, 115, 123, 50, 145, 36, 89, 48, 37, 55, 37, 47, 36, 51, 0, 19, 70, 29, 50, 153, 124, 124, 81, 36, 89, 47,
+			36, 65, 108, 51, 81, 35, 51, 0, 13, 68, 29, 19, 224, 196, 39, 51, 72, 35, 50, 81, 0, 13, 68, 8, 131, 224, 196, 108, 71, 72,
+			35, 50, 81, 0, 0, 22, 72, 206, 40, 51, 137, 20, 243, 43, 48, 57, 40, 50, 37, 84, 36, 51, 89, 37, 47, 37, 0, 15, 68, 134,
+			44, 235, 40, 107, 39, 84, 37, 57, 57, 35, 47, 0, 14, 68, 131, 49, 200, 40, 50, 37, 57, 108, 71, 35, 47, 0, 14, 69, 108, 119,
+			135, 130, 240, 83, 108, 55, 108, 50, 90, 0, 19, 70, 33, 50, 177, 30, 2, 128, 71, 35, 89, 47, 36, 81, 108, 50, 35, 47, 0, 19,
+			70, 32, 120, 48, 41, 40, 51, 71, 108, 50, 49, 36, 47, 88, 35, 50, 37, 0, 22, 71, 29, 236, 10, 70, 43, 95, 180, 36, 55, 36,
+			49, 47, 36, 51, 39, 48, 39, 65, 48, 0, 11, 67, 9, 24, 12, 108, 51, 36, 50, 75, 0, 0, 15, 69, 198, 33, 209, 204, 240, 81,
+			39, 84, 108, 51, 37, 72, 0, 16, 69, 181, 17, 240, 128, 240, 48, 35, 51, 108, 49, 35, 50, 72, 0, 16, 69, 127, 53, 34, 128, 240,
+			65, 37, 91, 35, 84, 35, 50, 72, 0, 16, 69, 127, 53, 31, 68, 240, 65, 37, 91, 36, 65, 39, 51, 72, 0, 10, 67, 78, 32, 64,
+			89, 40, 19, 36, 0, 10, 67, 70, 44, 199, 51, 39, 57, 108, 0, 13, 67, 69, 194, 7, 51, 39, 104, 17, 35, 71, 108, 0, 17, 69,
+			33, 23, 8, 128, 240, 71, 35, 51, 104, 17, 71, 35, 50, 72, 0, 16, 69, 29, 50, 136, 71, 0, 36, 89, 47, 35, 71, 51, 35, 49,
+			0, 14, 2, 217, 185, 6, 47, 36, 12, 10, 39, 51, 72, 40, 0, 0, 16, 69, 133, 244, 159, 30, 0, 107, 35, 65, 88, 35, 65, 108,
+			50, 0, 17, 69, 85, 180, 115, 30, 0, 89, 35, 83, 35, 51, 37, 57, 108, 50, 0, 15, 69, 72, 115, 241, 30, 0, 88, 108, 72, 36,
+			81, 108, 50, 0, 23, 71, 56, 132, 109, 68, 124, 32, 204, 101, 35, 71, 35, 51, 48, 35, 51, 108, 49, 35, 50, 37, 0, 15, 68, 28,
+			248, 179, 200, 35, 72, 84, 37, 57, 36, 57, 36, 0, 0, 14, 68, 181, 21, 51, 28, 48, 36, 51, 91, 37, 57, 108, 0, 13, 68, 48,
+			114, 12, 28, 75, 108, 71, 36, 75, 108, 0, 0, 12, 67, 137, 17, 243, 84, 35, 51, 108, 57, 36, 0, 12, 67, 133, 17, 243, 107, 35,
+			51, 51, 108, 57, 0, 11, 67, 107, 50, 0, 104, 17, 36, 57, 71, 0, 10, 67, 85, 226, 0, 89, 39, 55, 71, 0, 10, 67, 29, 60,
+			34, 39, 89, 49, 40, 0, 20, 2, 218, 190, 6, 107, 36, 12, 76, 6, 36, 91, 65, 37, 10, 39, 51, 72, 40, 0, 0, 20, 69, 126,
+			39, 43, 40, 112, 65, 39, 84, 35, 104, 17, 104, 17, 35, 47, 35, 50, 0, 12, 67, 103, 56, 7, 19, 36, 57, 50, 35, 50, 0, 11,
+			67, 77, 24, 7, 89, 39, 51, 50, 108, 0, 11, 67, 73, 24, 7, 88, 39, 51, 50, 108, 0, 12, 67, 67, 55, 135, 88, 36, 57, 55,
+			35, 50, 0, 11, 67, 61, 24, 7, 72, 39, 51, 50, 108, 0, 18, 70, 58, 33, 225, 81, 248, 15, 101, 108, 107, 36, 91, 65, 35, 50,
+			72, 0, 12, 67, 48, 241, 229, 75, 36, 72, 72, 35, 50, 0, 11, 67, 34, 18, 135, 71, 36, 107, 47, 108, 0, 11, 67, 33, 24, 7,
+			71, 39, 51, 50, 108, 0, 11, 67, 32, 229, 7, 71, 35, 101, 91, 108, 0, 0, 0, 13, 68, 194, 35, 202, 28, 49, 40, 72, 36, 47,
+			108, 0, 11, 67, 192, 131, 192, 49, 35, 71, 36, 72, 0, 14, 68, 192, 119, 222, 28, 49, 108, 65, 36, 55, 35, 50, 0, 11, 67, 128,
+			131, 192, 50, 35, 71, 39, 72, 0, 14, 68, 128, 119, 30, 28, 50, 108, 104, 17, 39, 55, 108, 0, 13, 68, 124, 209, 200, 28, 65, 39,
+			107, 108, 71, 108, 0, 14, 68, 124, 183, 135, 148, 65, 35, 89, 35, 55, 35, 50, 0, 18, 70, 124, 161, 219, 205, 44, 240, 65, 36, 47,
+			108, 83, 37, 88, 37, 49, 0, 12, 68, 78, 36, 96, 28, 89, 39, 51, 50, 108, 0, 16, 68, 61, 204, 220, 28, 72, 35, 104, 17, 37,
+			104, 17, 35, 50, 0, 13, 68, 30, 3, 96, 28, 36, 50, 107, 36, 50, 108, 0, 13, 68, 29, 146, 158, 28, 36, 19, 47, 36, 55, 108,
+			0, 0, 16, 70, 183, 53, 7, 183, 53, 0, 48, 37, 91, 108, 48, 37, 91, 0, 17, 69, 181, 20, 225, 31, 48, 48, 36, 51, 36, 89,
+			107, 108, 57, 36, 0, 14, 69, 134, 39, 135, 194, 32, 107, 39, 55, 108, 49, 40, 0, 11, 67, 107, 54, 0, 104, 17, 36, 57, 88, 0,
+			15, 67, 41, 231, 51, 47, 35, 55, 35, 104, 17, 104, 17, 37, 0, 14, 69, 8, 164, 98, 111, 48, 108, 47, 51, 39, 83, 37, 0, 14,
+			2, 218, 186, 6, 50, 40, 50, 10, 39, 51, 72, 40, 0, 0, 12, 67, 199, 49, 225, 81, 37, 12, 108, 12, 107, 0, 18, 70, 139, 60,
+			10, 137, 28, 199, 84, 37, 49, 47, 39, 51, 37, 57, 108, 0, 19, 69, 125, 119, 217, 128, 112, 65, 39, 47, 65, 35, 19, 19, 36, 50,
+			35, 50, 0, 10, 67, 121, 118, 192, 55, 39, 47, 83, 0, 17, 70, 42, 34, 147, 40, 120, 0, 47, 40, 47, 36, 89, 47, 108, 50, 0,
+			15, 69, 29, 180, 115, 112, 112, 36, 83, 51, 37, 104, 17, 108, 0, 18, 71, 29, 60, 207, 30, 36, 115, 192, 35, 89, 37, 72, 40, 51,
+			37, 49, 0, 16, 69, 29, 22, 199, 112, 112, 36, 51, 83, 108, 104, 17, 35, 50, 0, 11, 67, 11, 17, 225, 108, 12, 81, 108, 107, 0,
+			10, 67, 9, 86, 192, 108, 89, 36, 83, 0, 0, 11, 67, 207, 1, 224, 57, 36, 49, 108, 50, 0, 11, 67, 197, 17, 224, 81, 36, 51,
+			108, 50, 0, 11, 67, 191, 55, 138, 90, 37, 55, 36, 47, 0, 11, 67, 186, 23, 128, 6, 76, 36, 36, 55, 0, 11, 67, 185, 65, 224,
+			76, 36, 91, 108, 50, 0, 15, 69, 181, 225, 202, 206, 0, 48, 36, 55, 108, 47, 37, 50, 0, 14, 69, 135, 55, 138, 138, 0, 107, 37,
+			55, 47, 39, 50, 0, 12, 67, 130, 21, 10, 50, 35, 107, 36, 91, 47, 0, 14, 68, 126, 20, 202, 204, 65, 35, 107, 35, 89, 47, 37,
+			0, 12, 67, 123, 8, 10, 55, 39, 49, 50, 35, 47, 0, 16, 68, 113, 231, 30, 204, 104, 17, 36, 55, 104, 17, 36, 55, 37, 0, 10,
+			67, 110, 40, 10, 83, 39, 50, 47, 0, 11, 67, 109, 65, 224, 83, 36, 91, 108, 50, 0, 13, 67, 105, 49, 224, 104, 17, 35, 89, 89,
+			108, 50, 0, 14, 67, 88, 252, 206, 88, 36, 72, 72, 36, 57, 35, 101, 0, 14, 67, 88, 252, 202, 88, 36, 72, 72, 37, 57, 35, 47,
+			0, 13, 67, 74, 36, 92, 88, 39, 12, 51, 35, 104, 17, 0, 12, 67, 70, 33, 224, 51, 35, 84, 6, 108, 50, 0, 14, 67, 69, 204,
+			202, 51, 35, 104, 17, 37, 57, 35, 47, 0, 14, 68, 69, 50, 160, 204, 51, 39, 89, 47, 35, 50, 37, 0, 11, 67, 69, 49, 224, 51,
+			36, 89, 108, 50, 0, 11, 67, 61, 247, 128, 72, 39, 65, 35, 55, 0, 11, 67, 55, 49, 224, 107, 35, 57, 108, 50, 0, 11, 67, 49,
+			247, 128, 75, 39, 65, 35, 55, 0, 13, 67, 35, 52, 92, 71, 36, 57, 51, 35, 104, 17, 0, 21, 71, 34, 17, 209, 128, 116, 96, 48,
+			71, 35, 107, 108, 51, 50, 108, 51, 36, 50, 75, 0, 11, 67, 29, 247, 128, 39, 65, 65, 39, 55, 0, 10, 67, 9, 247, 128, 108, 65,
+			39, 55, 0, 0, 14, 68, 131, 5, 51, 60, 50, 35, 49, 36, 91, 37, 72, 0, 18, 70, 128, 172, 204, 40, 121, 64, 50, 35, 47, 37,
+			75, 35, 47, 35, 50, 0, 11, 67, 126, 243, 192, 65, 39, 12, 90, 72, 0, 12, 67, 126, 39, 25, 65, 39, 104, 17, 36, 19, 0, 12,
+			67, 125, 68, 91, 65, 39, 91, 51, 36, 83, 0, 11, 67, 123, 56, 48, 6, 55, 37, 50, 49, 0, 15, 68, 121, 177, 219, 132, 55, 35,
+			83, 83, 108, 83, 36, 12, 0, 13, 67, 113, 49, 223, 104, 17, 35, 89, 89, 108, 65, 0, 10, 67, 110, 35, 0, 83, 39, 12, 75, 0,
+			12, 67, 109, 228, 219, 83, 35, 55, 89, 35, 83, 0, 11, 67, 76, 163, 192, 89, 36, 47, 35, 72, 0, 12, 68, 70, 34, 7, 132, 51,
+			40, 71, 108, 107, 0, 11, 67, 68, 225, 223, 51, 39, 101, 108, 65, 0, 14, 68, 61, 20, 71, 132, 72, 35, 51, 10, 51, 108, 107, 0,
+			12, 67, 59, 49, 223, 101, 35, 57, 57, 108, 65, 0, 12, 67, 53, 241, 223, 107, 35, 65, 65, 108, 65, 0, 11, 67, 41, 241, 223, 47,
+			35, 65, 108, 65, 0, 12, 68, 31, 4, 71, 132, 36, 49, 51, 108, 107, 0, 10, 67, 29, 241, 223, 36, 65, 108, 65, 0, 0, 13, 68,
+			195, 56, 135, 128, 49, 36, 57, 84, 108, 50, 0, 11, 67, 133, 225, 222, 107, 36, 55, 108, 55, 0, 14, 68, 133, 19, 226, 40, 107, 36,
+			51, 39, 72, 39, 47, 0, 11, 67, 130, 209, 222, 50, 36, 48, 108, 55, 0, 14, 68, 130, 36, 199, 128, 50, 35, 84, 35, 89, 108, 50,
+			0, 14, 67, 129, 193, 222, 50, 35, 104, 17, 104, 17, 108, 55, 0, 11, 67, 124, 177, 222, 65, 36, 89, 108, 55, 0, 13, 68, 121, 242,
+			7, 128, 55, 39, 65, 71, 108, 50, 0, 14, 68, 110, 36, 71, 128, 83, 35, 84, 35, 51, 108, 50, 0, 13, 68, 110, 23, 199, 128, 83,
+			35, 107, 65, 108, 50, 0, 14, 68, 109, 23, 7, 128, 83, 39, 51, 104, 17, 108, 50, 0, 12, 68, 101, 22, 199, 128, 36, 51, 83, 108,
+			50, 0, 13, 68, 100, 248, 135, 128, 19, 39, 72, 84, 108, 50, 0, 11, 67, 93, 225, 222, 47, 36, 55, 108, 55, 0, 11, 67, 81, 225,
+			222, 91, 39, 55, 108, 55, 0, 13, 68, 76, 168, 135, 128, 89, 39, 47, 84, 108, 50, 0, 11, 67, 73, 225, 222, 88, 39, 55, 108, 55,
+			0, 13, 68, 70, 18, 7, 128, 51, 39, 107, 71, 108, 50, 0, 13, 68, 62, 36, 71, 128, 72, 39, 12, 51, 108, 50, 0, 12, 67, 61,
+			225, 222, 72, 35, 55, 55, 108, 55, 0, 15, 68, 59, 52, 71, 128, 101, 35, 57, 57, 36, 51, 108, 50, 0, 15, 68, 57, 236, 7, 128,
+			101, 39, 55, 55, 35, 49, 108, 50, 0, 15, 68, 57, 183, 7, 128, 101, 35, 83, 35, 104, 17, 108, 50, 0, 13, 68, 55, 56, 135, 128,
+			107, 36, 57, 84, 108, 50, 0, 13, 68, 55, 52, 71, 128, 107, 36, 57, 51, 108, 50, 0, 12, 67, 53, 241, 222, 107, 35, 65, 65, 108,
+			55, 0, 13, 68, 51, 52, 71, 128, 75, 36, 57, 51, 108, 50, 0, 13, 68, 42, 2, 7, 128, 47, 39, 50, 71, 108, 50, 0, 16, 68,
+			41, 200, 179, 40, 47, 35, 104, 17, 84, 37, 57, 35, 47, 0, 16, 69, 34, 5, 51, 131, 48, 71, 36, 50, 36, 91, 37, 50, 37, 0,
+			13, 68, 33, 228, 199, 128, 71, 35, 55, 89, 108, 50, 0, 13, 68, 32, 212, 71, 128, 71, 39, 107, 51, 108, 50, 0, 11, 67, 32, 209,
+			222, 71, 36, 107, 108, 55, 0, 12, 68, 31, 56, 135, 128, 36, 57, 84, 108, 50, 0, 13, 68, 29, 196, 71, 128, 35, 104, 17, 51, 108,
+			50, 0, 13, 68, 29, 184, 160, 40, 39, 83, 40, 50, 35, 47, 0, 12, 68, 29, 6, 71, 128, 36, 88, 19, 108, 50, 0, 12, 68, 28,
+			212, 199, 128, 36, 107, 89, 108, 50, 0, 13, 68, 11, 4, 224, 40, 108, 49, 89, 36, 50, 47, 0, 14, 68, 10, 211, 243, 40, 108, 48,
+			10, 72, 36, 57, 47, 0, 0, 10, 67, 204, 120, 49, 57, 108, 50, 81, 0, 10, 67, 198, 34, 161, 81, 39, 47, 36, 0, 12, 67, 181,
+			24, 15, 48, 35, 51, 35, 50, 72, 0, 12, 67, 133, 244, 97, 107, 35, 65, 51, 35, 107, 0, 12, 67, 125, 51, 15, 65, 35, 89, 75,
+			36, 72, 0, 17, 68, 124, 161, 211, 108, 65, 39, 47, 35, 19, 35, 89, 89, 36, 83, 0, 12, 67, 122, 40, 15, 55, 35, 84, 35, 50,
+			72, 0, 19, 70, 112, 124, 220, 68, 120, 0, 104, 17, 108, 57, 36, 104, 17, 51, 108, 50, 0, 12, 67, 109, 232, 49, 83, 36, 55, 36,
+			50, 81, 0, 16, 69, 82, 24, 20, 30, 16, 91, 35, 107, 35, 50, 91, 108, 107, 0, 12, 67, 81, 232, 49, 91, 36, 55, 35, 50, 81,
+			0, 12, 67, 74, 20, 97, 88, 39, 107, 51, 36, 12, 0, 11, 67, 57, 20, 161, 101, 35, 51, 88, 36, 0, 11, 67, 40, 114, 15, 47,
+			108, 71, 35, 72, 0, 13, 68, 34, 20, 71, 124, 71, 35, 107, 51, 108, 65, 0, 13, 67, 33, 196, 97, 71, 35, 104, 17, 35, 51, 36,
+			0, 13, 67, 33, 40, 15, 71, 36, 88, 35, 50, 35, 72, 0, 13, 68, 32, 248, 7, 124, 71, 35, 72, 50, 108, 65, 0, 12, 68, 30,
+			40, 71, 124, 39, 12, 107, 108, 65, 0, 19, 70, 30, 3, 226, 129, 44, 199, 35, 50, 72, 39, 50, 36, 88, 37, 57, 108, 0, 12, 68,
+			28, 132, 71, 124, 36, 71, 51, 108, 65, 0, 12, 67, 11, 56, 33, 108, 57, 36, 50, 36, 12, 0, 0, 14, 68, 190, 4, 71, 120, 90,
+			36, 50, 36, 51, 108, 55, 0, 16, 69, 135, 59, 162, 112, 160, 107, 37, 76, 84, 35, 104, 17, 47, 0, 14, 67, 125, 24, 138, 65, 39,
+			51, 39, 84, 84, 35, 47, 0, 14, 68, 124, 183, 7, 120, 65, 36, 89, 104, 17, 108, 55, 0, 13, 67, 109, 49, 220, 83, 39, 89, 89,
+			108, 104, 17, 0, 12, 67, 107, 56, 0, 104, 17, 36, 57, 108, 50, 0, 12, 67, 101, 65, 220, 39, 91, 91, 108, 104, 17, 0, 10, 67,
+			78, 35, 138, 89, 40, 101, 47, 0, 14, 68, 77, 28, 199, 120, 89, 36, 51, 37, 57, 108, 55, 0, 13, 68, 68, 124, 202, 120, 51, 108,
+			57, 47, 36, 55, 0, 13, 68, 41, 242, 199, 120, 47, 36, 65, 89, 108, 55, 0, 13, 68, 34, 12, 71, 120, 71, 35, 50, 81, 108, 55,
+			0, 15, 69, 31, 4, 243, 190, 0, 39, 49, 89, 37, 90, 36, 50, 0, 14, 68, 29, 76, 7, 120, 36, 12, 91, 6, 49, 108, 55, 0,
+			12, 68, 29, 56, 71, 120, 36, 89, 107, 108, 55, 0, 12, 67, 28, 161, 220, 39, 47, 108, 12, 104, 17, 0, 11, 67, 10, 2, 160, 108,
+			50, 47, 36, 50, 0, 18, 70, 8, 228, 89, 125, 28, 192, 108, 101, 35, 51, 36, 39, 65, 51, 37, 0, 0, 15, 69, 197, 17, 225, 29,
+			240, 81, 36, 51, 108, 107, 108, 65, 0, 14, 68, 193, 232, 174, 132, 49, 39, 55, 40, 76, 36, 12, 0, 14, 68, 185, 50, 32, 60, 76,
+			35, 89, 71, 35, 50, 72, 0, 13, 68, 180, 114, 32, 60, 48, 108, 71, 35, 50, 72, 0, 16, 69, 137, 230, 209, 29, 240, 84, 39, 55,
+			83, 36, 51, 108, 65, 0, 14, 68, 127, 49, 200, 60, 65, 37, 57, 108, 71, 35, 72, 0, 16, 68, 125, 194, 17, 132, 65, 35, 104, 17,
+			71, 35, 51, 36, 12, 0, 11, 67, 110, 39, 0, 83, 39, 12, 104, 17, 0, 14, 68, 109, 24, 96, 196, 83, 35, 51, 107, 35, 50, 81,
+			0, 11, 67, 84, 247, 0, 89, 36, 72, 104, 17, 0, 14, 68, 77, 180, 215, 132, 89, 35, 83, 89, 35, 47, 36, 0, 16, 70, 70, 44,
+			199, 131, 51, 192, 51, 40, 57, 108, 50, 37, 72, 0, 17, 70, 70, 3, 7, 131, 51, 192, 51, 35, 50, 75, 108, 50, 37, 72, 0, 12,
+			67, 58, 180, 95, 101, 39, 51, 51, 35, 65, 0, 14, 68, 57, 19, 145, 132, 101, 36, 51, 101, 36, 51, 36, 0, 13, 68, 56, 120, 160,
+			60, 101, 108, 84, 35, 50, 72, 0, 17, 70, 50, 2, 7, 131, 51, 192, 75, 39, 50, 71, 108, 50, 37, 72, 0, 15, 68, 49, 236, 220,
+			132, 75, 36, 55, 37, 104, 17, 36, 12, 0, 11, 67, 33, 232, 176, 71, 39, 55, 40, 49, 0, 15, 69, 29, 226, 146, 29, 240, 36, 55,
+			47, 36, 88, 108, 65, 0, 10, 67, 29, 97, 219, 36, 88, 108, 83, 0, 13, 68, 29, 54, 224, 60, 36, 89, 83, 35, 50, 72, 0, 11,
+			67, 9, 36, 95, 108, 88, 35, 51, 65, 0, 7, 65, 92, 6, 47, 108, 0, 0, 12, 67, 181, 76, 30, 48, 36, 91, 49, 36, 55, 0,
+			17, 69, 181, 18, 154, 29, 224, 48, 39, 51, 47, 36, 104, 17, 108, 55, 0, 13, 68, 127, 60, 17, 128, 65, 37, 49, 51, 39, 50, 0,
+			14, 69, 127, 50, 145, 29, 224, 65, 37, 47, 51, 108, 55, 0, 13, 67, 125, 76, 30, 6, 65, 39, 91, 49, 36, 55, 0, 12, 67, 124,
+			133, 222, 65, 39, 71, 47, 36, 55, 0, 15, 69, 120, 124, 210, 29, 224, 55, 108, 57, 35, 88, 108, 55, 0, 13, 68, 120, 118, 210, 128,
+			55, 108, 83, 88, 35, 50, 0, 15, 68, 110, 36, 115, 40, 83, 39, 12, 51, 37, 57, 35, 47, 0, 12, 67, 109, 24, 12, 83, 36, 51,
+			36, 50, 75, 0, 14, 68, 81, 234, 199, 112, 91, 35, 55, 55, 108, 104, 17, 0, 14, 68, 77, 20, 206, 40, 89, 35, 51, 89, 35, 101,
+			47, 0, 10, 67, 62, 38, 94, 72, 40, 36, 55, 0, 21, 72, 58, 36, 79, 136, 232, 145, 31, 0, 101, 39, 51, 72, 39, 101, 39, 51,
+			108, 49, 0, 14, 68, 40, 231, 199, 112, 47, 39, 101, 65, 108, 104, 17, 0, 12, 67, 35, 4, 94, 71, 36, 49, 51, 36, 55, 0, 13,
+			69, 31, 51, 225, 29, 224, 37, 72, 36, 108, 55, 0, 13, 68, 29, 229, 71, 112, 36, 55, 89, 108, 104, 17, 0, 13, 68, 29, 151, 199,
+			112, 35, 19, 65, 108, 104, 17, 0, 13, 68, 29, 119, 135, 112, 36, 47, 55, 108, 104, 17, 0, 15, 68, 28, 166, 199, 112, 36, 47, 47,
+			36, 83, 108, 104, 17, 0, 12, 68, 9, 248, 142, 40, 108, 65, 40, 101, 47, 0, 0, 13, 68, 193, 66, 7, 108, 49, 36, 91, 71, 108,
+			83, 0, 8, 66, 193, 48, 49, 35, 89, 0, 16, 69, 192, 241, 223, 128, 240, 49, 39, 72, 108, 65, 35, 50, 72, 0, 14, 69, 190, 44,
+			34, 128, 240, 90, 39, 49, 39, 50, 72, 0, 12, 67, 181, 24, 19, 48, 36, 51, 35, 50, 89, 0, 17, 70, 136, 119, 147, 120, 119, 192,
+			84, 35, 89, 89, 35, 55, 108, 65, 0, 17, 70, 135, 59, 176, 60, 119, 192, 107, 37, 76, 49, 39, 72, 108, 65, 0, 17, 69, 133, 241,
+			225, 131, 16, 107, 35, 65, 108, 12, 107, 35, 50, 81, 0, 14, 69, 131, 50, 145, 204, 240, 50, 37, 47, 51, 37, 72, 0, 16, 69, 129,
+			241, 225, 131, 16, 50, 35, 65, 108, 107, 35, 50, 81, 0, 14, 68, 127, 50, 17, 124, 65, 37, 71, 35, 51, 35, 65, 0, 11, 67, 126,
+			40, 19, 65, 40, 50, 36, 89, 0, 11, 67, 124, 172, 211, 65, 36, 47, 37, 89, 0, 17, 69, 105, 24, 158, 128, 240, 104, 17, 39, 51,
+			39, 55, 39, 50, 72, 0, 12, 67, 104, 124, 215, 104, 17, 108, 57, 36, 47, 0, 16, 69, 80, 129, 225, 131, 16, 91, 35, 71, 108, 107,
+			35, 50, 81, 0, 10, 67, 80, 120, 19, 91, 108, 50, 89, 0, 16, 69, 62, 241, 225, 131, 16, 72, 39, 90, 108, 107, 35, 50, 81, 0,
+			16, 69, 57, 20, 161, 70, 16, 101, 35, 51, 88, 35, 107, 51, 36, 0, 16, 69, 48, 118, 212, 131, 16, 75, 108, 83, 36, 91, 35, 50,
+			81, 0, 16, 69, 42, 3, 202, 128, 240, 47, 39, 50, 72, 47, 39, 50, 72, 0, 17, 70, 34, 39, 148, 139, 60, 0, 71, 39, 55, 91,
+			36, 84, 37, 49, 0, 14, 69, 31, 52, 222, 128, 240, 37, 89, 55, 35, 50, 72, 0, 15, 69, 29, 228, 199, 102, 16, 35, 89, 89, 108,
+			19, 36, 12, 0, 12, 68, 29, 148, 71, 108, 36, 19, 51, 108, 83, 0, 12, 68, 29, 84, 71, 108, 36, 89, 51, 108, 83, 0, 17, 70,
+			29, 50, 155, 132, 119, 192, 36, 89, 47, 36, 83, 107, 108, 65, 0, 9, 66, 193, 48, 49, 35, 89, 0, 76, 15, 68, 124, 209, 240, 124,
+			65, 39, 107, 108, 49, 36, 65, 0, 48, 15, 68, 124, 209, 240, 124, 65, 35, 107, 108, 49, 36, 65, 0, 46, 0, 16, 69, 197, 242, 17,
+			138, 0, 81, 39, 65, 71, 36, 51, 39, 50, 0, 18, 70, 194, 2, 145, 182, 33, 224, 49, 39, 50, 47, 51, 48, 40, 108, 50, 0, 17,
+			70, 193, 28, 211, 40, 119, 128, 49, 36, 51, 37, 89, 47, 108, 55, 0, 11, 67, 182, 40, 18, 48, 40, 50, 36, 88, 0, 10, 67, 181,
+			40, 128, 48, 36, 88, 39, 0, 11, 67, 138, 12, 210, 84, 36, 50, 37, 88, 0, 17, 70, 130, 36, 72, 29, 17, 224, 50, 40, 51, 71,
+			108, 51, 108, 50, 0, 15, 68, 125, 55, 147, 120, 65, 39, 89, 35, 55, 89, 35, 55, 0, 20, 70, 124, 115, 209, 205, 241, 224, 65, 108,
+			72, 35, 51, 37, 57, 36, 65, 108, 50, 0, 18, 70, 120, 124, 45, 80, 161, 224, 55, 108, 49, 48, 39, 91, 47, 108, 50, 0, 18, 69,
+			113, 23, 211, 29, 192, 104, 17, 39, 51, 39, 65, 89, 108, 104, 17, 0, 14, 68, 108, 168, 147, 120, 83, 39, 47, 39, 89, 36, 55, 0,
+			10, 67, 80, 120, 18, 91, 108, 50, 88, 0, 20, 70, 77, 27, 81, 76, 161, 224, 89, 35, 51, 48, 35, 51, 35, 89, 47, 108, 50, 0,
+			18, 70, 77, 19, 223, 72, 115, 0, 89, 35, 51, 72, 65, 36, 88, 108, 75, 0, 19, 70, 74, 3, 199, 129, 65, 224, 88, 36, 50, 72,
+			108, 50, 36, 91, 108, 50, 0, 19, 70, 56, 117, 209, 129, 65, 224, 101, 108, 47, 36, 51, 50, 36, 91, 108, 50, 0, 10, 67, 49, 40,
+			128, 75, 39, 88, 84, 0, 19, 70, 49, 17, 203, 112, 119, 128, 75, 35, 51, 51, 36, 89, 104, 17, 108, 55, 0, 19, 70, 42, 8, 15,
+			139, 49, 224, 47, 35, 50, 35, 50, 72, 40, 57, 108, 50, 0, 16, 69, 34, 17, 243, 204, 160, 71, 35, 107, 108, 37, 57, 35, 47, 0,
+			18, 70, 33, 60, 10, 32, 119, 128, 71, 35, 89, 49, 36, 47, 71, 108, 55, 0, 20, 70, 33, 24, 146, 69, 49, 224, 71, 36, 51, 40,
+			88, 10, 51, 36, 89, 108, 50, 0, 18, 70, 30, 2, 177, 68, 119, 128, 35, 50, 6, 47, 36, 81, 51, 108, 55, 0, 16, 69, 29, 226,
+			149, 29, 192, 36, 55, 47, 36, 89, 108, 104, 17, 0, 18, 70, 29, 20, 200, 29, 17, 224, 35, 51, 35, 89, 71, 108, 51, 108, 50, 0,
+			18, 70, 28, 132, 98, 193, 241, 224, 35, 71, 51, 40, 49, 35, 65, 108, 50, 0, 15, 68, 127, 1, 202, 32, 65, 39, 49, 108, 47, 36,
+			71, 0, 48, 15, 68, 127, 1, 202, 32, 65, 35, 49, 108, 47, 36, 71, 0, 46, 0, 18, 70, 206, 36, 173, 122, 12, 64, 57, 40, 88,
+			48, 35, 55, 35, 50, 81, 0, 17, 70, 194, 3, 199, 129, 56, 64, 49, 39, 50, 72, 108, 50, 89, 36, 0, 12, 67, 181, 50, 145, 48,
+			39, 89, 47, 36, 51, 0, 18, 70, 134, 39, 162, 197, 17, 223, 107, 39, 55, 39, 81, 36, 51, 108, 65, 0, 19, 70, 129, 241, 194, 134,
+			12, 64, 50, 35, 65, 108, 10, 108, 107, 35, 50, 81, 0, 16, 67, 125, 86, 145, 65, 39, 89, 35, 104, 17, 104, 17, 35, 51, 0, 12,
+			67, 125, 50, 145, 65, 35, 89, 47, 36, 51, 0, 16, 67, 124, 215, 17, 65, 39, 107, 35, 104, 17, 104, 17, 35, 51, 0, 20, 70, 113,
+			24, 10, 206, 8, 64, 104, 17, 35, 51, 35, 50, 47, 37, 50, 36, 12, 0, 17, 70, 100, 114, 17, 32, 120, 48, 108, 71, 36, 51, 71,
+			108, 50, 49, 0, 18, 70, 57, 27, 147, 138, 8, 64, 101, 35, 51, 76, 39, 89, 40, 50, 36, 0, 13, 68, 42, 36, 243, 92, 47, 39,
+			12, 89, 37, 47, 0, 14, 69, 42, 36, 115, 77, 240, 47, 40, 51, 37, 89, 65, 0, 17, 70, 32, 115, 194, 134, 12, 64, 71, 108, 72,
+			108, 107, 35, 50, 81, 0, 10, 67, 29, 252, 209, 35, 65, 37, 51, 0, 14, 68, 10, 3, 30, 76, 108, 50, 75, 36, 55, 36, 89, 0,
+			19, 70, 9, 4, 83, 134, 3, 192, 108, 88, 35, 51, 89, 35, 107, 35, 50, 72, 0, 9, 66, 197, 16, 81, 35, 51, 0, 76, 0, 13,
+			68, 199, 51, 224, 72, 81, 37, 72, 36, 50, 88, 0, 8, 66, 193, 64, 49, 36, 91, 0, 15, 68, 126, 12, 96, 72, 65, 35, 50, 81,
+			35, 50, 36, 88, 0, 12, 67, 124, 115, 144, 65, 35, 19, 101, 35, 88, 0, 11, 67, 113, 18, 0, 104, 17, 39, 51, 71, 0, 11, 67,
+			69, 252, 226, 51, 39, 65, 36, 39, 0, 13, 68, 63, 60, 32, 72, 72, 37, 49, 36, 50, 88, 0, 22, 71, 50, 33, 225, 70, 5, 7,
+			128, 75, 35, 84, 108, 107, 36, 51, 50, 36, 91, 108, 50, 0, 12, 67, 50, 2, 20, 75, 39, 50, 71, 36, 91, 0, 20, 71, 34, 17,
+			209, 29, 181, 7, 128, 71, 35, 107, 108, 51, 35, 83, 91, 108, 50, 0, 22, 71, 33, 50, 177, 30, 7, 199, 128, 71, 35, 89, 47, 36,
+			81, 108, 50, 36, 65, 108, 50, 0, 11, 67, 33, 20, 162, 71, 39, 51, 88, 40, 0, 21, 71, 30, 2, 161, 31, 53, 7, 128, 36, 50,
+			47, 36, 107, 108, 57, 36, 91, 108, 50, 0, 21, 71, 29, 194, 149, 28, 243, 199, 128, 36, 104, 17, 47, 36, 89, 108, 72, 72, 108, 50,
+			0, 12, 67, 9, 20, 162, 6, 108, 51, 36, 88, 40, 0, 0, 13, 68, 198, 37, 8, 68, 81, 40, 91, 71, 39, 51, 0, 19, 70, 198,
+			3, 7, 128, 248, 15, 81, 39, 50, 75, 108, 50, 72, 35, 50, 72, 0, 11, 67, 197, 228, 64, 81, 39, 55, 36, 51, 0, 12, 67, 194,
+			2, 147, 49, 39, 50, 47, 36, 89, 0, 11, 67, 193, 228, 64, 49, 39, 55, 39, 51, 0, 9, 67, 130, 36, 64, 50, 40, 51, 0, 16,
+			70, 128, 116, 83, 205, 55, 192, 50, 108, 51, 89, 37, 89, 65, 0, 21, 72, 127, 56, 51, 34, 36, 209, 30, 0, 65, 37, 50, 37, 71,
+			40, 89, 51, 108, 50, 0, 15, 68, 126, 2, 152, 68, 65, 39, 50, 47, 35, 88, 36, 51, 0, 16, 68, 125, 50, 156, 68, 65, 39, 89,
+			47, 35, 104, 17, 35, 51, 0, 16, 70, 124, 124, 226, 205, 55, 192, 65, 108, 10, 39, 37, 89, 65, 0, 17, 70, 122, 12, 224, 205, 55,
+			192, 55, 36, 50, 37, 50, 37, 89, 65, 0, 15, 69, 120, 124, 211, 129, 48, 55, 108, 57, 89, 36, 50, 89, 0, 15, 68, 80, 132, 202,
+			68, 91, 35, 71, 36, 89, 47, 35, 51, 0, 13, 68, 79, 56, 12, 68, 89, 37, 50, 75, 36, 51, 0, 20, 70, 72, 132, 98, 73, 24,
+			49, 88, 36, 71, 51, 39, 88, 36, 51, 35, 50, 81, 0, 17, 69, 57, 27, 84, 43, 0, 101, 35, 51, 48, 39, 91, 47, 35, 49, 0,
+			12, 67, 32, 243, 151, 71, 35, 72, 101, 35, 47, 0, 14, 68, 32, 120, 96, 68, 71, 108, 107, 39, 50, 35, 51, 0, 18, 71, 31, 52,
+			162, 42, 40, 51, 192, 37, 88, 39, 47, 39, 50, 37, 49, 0, 13, 68, 31, 2, 136, 68, 39, 49, 47, 39, 71, 51, 0, 14, 68, 29,
+			60, 32, 68, 36, 89, 49, 35, 50, 36, 51, 0, 14, 69, 29, 44, 209, 205, 48, 39, 88, 37, 51, 37, 89, 0, 17, 70, 28, 248, 160,
+			205, 55, 192, 35, 72, 84, 36, 50, 37, 89, 65, 0, 16, 70, 10, 12, 223, 205, 55, 192, 108, 50, 37, 65, 37, 89, 65, 0, 0, 20,
+			71, 206, 40, 51, 137, 20, 199, 120, 57, 40, 50, 37, 84, 36, 51, 89, 108, 55, 0, 10, 67, 136, 168, 128, 84, 36, 47, 39, 0, 9,
+			67, 110, 40, 0, 83, 39, 50, 0, 13, 68, 92, 196, 115, 80, 47, 35, 75, 51, 37, 91, 0, 13, 68, 61, 228, 115, 80, 72, 36, 55,
+			51, 37, 91, 0, 14, 68, 41, 17, 226, 80, 47, 35, 51, 108, 84, 39, 91, 0, 14, 68, 33, 49, 226, 80, 71, 36, 89, 108, 84, 39,
+			91, 0, 20, 70, 32, 119, 135, 41, 177, 220, 71, 36, 55, 36, 47, 47, 36, 83, 108, 104, 17, 0, 16, 70, 31, 52, 71, 128, 243, 138,
+			37, 51, 108, 50, 72, 39, 101, 0, 0, 18, 70, 134, 39, 162, 197, 17, 219, 107, 39, 55, 39, 81, 36, 51, 108, 83, 0, 13, 68, 128,
+			228, 115, 76, 50, 35, 101, 51, 37, 89, 0, 19, 70, 124, 161, 200, 123, 52, 223, 65, 36, 47, 108, 71, 39, 55, 37, 89, 65, 0, 18,
+			70, 123, 50, 162, 197, 17, 219, 55, 37, 47, 39, 81, 36, 51, 108, 83, 0, 15, 69, 120, 119, 243, 129, 16, 55, 108, 65, 37, 50, 39,
+			51, 0, 13, 67, 113, 23, 0, 104, 17, 39, 51, 39, 104, 17, 0, 11, 67, 83, 8, 145, 91, 35, 49, 40, 51, 0, 18, 70, 79, 2,
+			135, 71, 52, 223, 89, 36, 49, 47, 108, 51, 37, 89, 65, 0, 15, 69, 77, 19, 211, 205, 16, 89, 35, 51, 72, 89, 37, 51, 0, 12,
+			67, 70, 3, 17, 51, 36, 50, 75, 36, 51, 0, 18, 70, 61, 59, 98, 43, 52, 223, 72, 36, 89, 48, 39, 47, 37, 89, 65, 0, 14,
+			69, 56, 124, 20, 205, 16, 101, 108, 49, 91, 37, 51, 0, 24, 72, 52, 194, 135, 120, 116, 222, 29, 240, 107, 39, 75, 35, 47, 39, 55,
+			55, 36, 89, 55, 108, 65, 0, 14, 67, 42, 24, 145, 47, 35, 107, 35, 84, 84, 39, 51, 0, 14, 67, 40, 115, 145, 47, 35, 19, 35,
+			101, 101, 39, 51, 0, 16, 70, 31, 55, 199, 191, 52, 223, 37, 65, 108, 90, 37, 89, 65, 0, 17, 70, 31, 8, 158, 138, 252, 240, 36,
+			49, 39, 55, 39, 90, 37, 49, 0, 12, 68, 28, 244, 115, 76, 36, 72, 51, 37, 89, 0, 0, 11, 67, 185, 228, 243, 76, 36, 55, 89,
+			37, 0, 11, 67, 125, 52, 115, 65, 39, 89, 51, 37, 0, 14, 67, 124, 163, 144, 65, 39, 47, 47, 35, 101, 36, 88, 0, 17, 69, 124,
+			115, 209, 205, 64, 65, 108, 72, 35, 51, 37, 57, 35, 91, 0, 10, 67, 122, 34, 162, 55, 39, 47, 39, 0, 16, 70, 78, 36, 109, 71,
+			52, 128, 89, 40, 51, 48, 51, 37, 88, 0, 12, 67, 53, 68, 115, 107, 35, 91, 35, 51, 37, 0, 12, 67, 32, 131, 148, 71, 36, 71,
+			35, 101, 91, 0, 0, 18, 70, 193, 252, 211, 206, 40, 0, 49, 39, 65, 37, 89, 37, 57, 39, 50, 0, 20, 71, 193, 225, 211, 205, 60,
+			211, 124, 49, 36, 55, 108, 89, 37, 89, 37, 89, 65, 0, 17, 70, 192, 120, 10, 206, 4, 64, 49, 108, 50, 47, 37, 50, 36, 51, 0,
+			13, 68, 182, 220, 202, 68, 48, 39, 48, 37, 47, 51, 0, 20, 71, 181, 232, 145, 29, 236, 211, 124, 48, 39, 55, 39, 51, 108, 55, 37,
+			89, 65, 0, 17, 70, 181, 60, 7, 124, 120, 0, 48, 35, 89, 49, 108, 65, 108, 50, 0, 17, 70, 180, 116, 94, 124, 120, 0, 48, 108,
+			51, 55, 36, 65, 108, 50, 0, 19, 71, 128, 116, 83, 205, 60, 211, 124, 50, 108, 51, 89, 37, 89, 37, 89, 65, 0, 13, 68, 122, 36,
+			202, 68, 55, 40, 89, 47, 36, 51, 0, 11, 67, 120, 114, 15, 55, 108, 71, 39, 72, 0, 24, 73, 98, 28, 209, 29, 225, 211, 120, 119,
+			192, 88, 35, 107, 37, 51, 39, 55, 36, 89, 55, 108, 65, 0, 20, 71, 78, 36, 243, 29, 236, 211, 124, 89, 40, 89, 37, 57, 108, 55,
+			37, 89, 65, 0, 24, 73, 48, 252, 207, 29, 225, 211, 120, 119, 192, 75, 35, 72, 37, 72, 39, 55, 36, 89, 55, 108, 65, 0, 15, 67,
+			41, 204, 207, 47, 35, 104, 17, 35, 57, 57, 39, 72, 0, 16, 69, 33, 21, 10, 139, 0, 71, 36, 51, 36, 91, 47, 40, 49, 0, 20,
+			71, 31, 2, 162, 181, 225, 211, 124, 36, 49, 47, 39, 48, 36, 55, 108, 89, 65, 0, 13, 68, 29, 50, 142, 68, 36, 89, 47, 35, 101,
+			51, 0, 0, 15, 69, 197, 232, 136, 206, 0, 81, 39, 55, 39, 71, 37, 50, 0, 18, 70, 193, 66, 179, 132, 124, 192, 49, 35, 91, 47,
+			37, 107, 108, 57, 36, 0, 12, 67, 192, 167, 138, 49, 39, 47, 55, 36, 47, 0, 11, 67, 192, 117, 10, 49, 6, 108, 91, 47, 0, 10,
+			67, 184, 117, 10, 76, 108, 91, 47, 0, 13, 68, 127, 51, 162, 80, 65, 36, 57, 101, 39, 91, 0, 12, 68, 79, 50, 17, 204, 89, 37,
+			71, 51, 37, 0, 15, 69, 78, 12, 81, 205, 32, 89, 35, 50, 81, 51, 37, 88, 0, 10, 67, 62, 35, 138, 72, 40, 101, 47, 0, 15,
+			68, 61, 71, 224, 80, 72, 39, 91, 65, 35, 50, 35, 91, 0, 14, 68, 41, 18, 17, 204, 47, 35, 51, 71, 39, 51, 37, 0, 14, 68,
+			33, 50, 145, 204, 71, 35, 89, 47, 35, 51, 37, 0, 15, 69, 29, 50, 142, 30, 0, 39, 89, 47, 39, 101, 108, 50, 0, 14, 68, 9,
+			4, 78, 80, 108, 88, 35, 51, 35, 101, 91, 0, 0, 21, 72, 192, 123, 115, 40, 119, 179, 77, 240, 49, 108, 48, 37, 47, 108, 55, 37,
+			89, 65, 0, 12, 67, 181, 50, 176, 48, 35, 89, 47, 35, 49, 0, 24, 72, 181, 49, 223, 61, 24, 51, 77, 240, 48, 35, 89, 108, 65,
+			39, 72, 36, 51, 50, 37, 89, 65, 0, 21, 72, 127, 55, 179, 40, 116, 115, 77, 240, 65, 37, 55, 37, 47, 108, 51, 37, 89, 65, 0,
+			14, 68, 125, 17, 226, 60, 65, 39, 51, 108, 84, 36, 72, 0, 22, 72, 124, 114, 145, 204, 119, 179, 77, 240, 65, 108, 47, 36, 51, 57,
+			108, 55, 37, 89, 65, 0, 23, 72, 35, 56, 138, 70, 36, 115, 77, 240, 71, 37, 57, 39, 47, 36, 51, 39, 51, 37, 89, 65, 0, 16,
+			69, 32, 119, 135, 57, 80, 71, 36, 55, 19, 35, 101, 35, 89, 0, 12, 68, 31, 4, 243, 60, 39, 49, 89, 37, 72, 0, 16, 69, 30,
+			12, 84, 41, 16, 35, 50, 81, 39, 91, 47, 35, 51, 0, 0, 14, 67, 129, 197, 242, 50, 39, 104, 17, 47, 36, 57, 36, 0, 14, 67,
+			125, 50, 8, 65, 39, 89, 35, 71, 71, 36, 71, 0, 14, 67, 113, 90, 242, 104, 17, 36, 89, 89, 36, 57, 36, 0, 16, 69, 74, 3,
+			199, 129, 64, 88, 36, 50, 72, 108, 50, 35, 91, 0, 22, 71, 57, 52, 98, 181, 24, 179, 72, 101, 39, 89, 51, 39, 84, 48, 35, 51,
+			84, 37, 88, 0, 14, 68, 53, 177, 216, 40, 107, 36, 83, 108, 88, 35, 47, 0, 11, 67, 42, 39, 136, 47, 40, 55, 35, 71, 0, 17,
+			69, 41, 17, 240, 129, 64, 47, 35, 51, 108, 49, 39, 50, 36, 91, 0, 16, 69, 41, 17, 200, 71, 48, 47, 35, 51, 108, 71, 35, 51,
+			37, 0, 13, 67, 33, 76, 50, 71, 39, 91, 49, 36, 57, 36, 0, 12, 68, 31, 1, 224, 40, 35, 49, 108, 50, 47, 0, 0, 11, 67,
+			204, 114, 15, 57, 108, 71, 35, 72, 0, 10, 67, 182, 40, 15, 48, 39, 50, 72, 0, 18, 70, 135, 52, 202, 69, 44, 211, 107, 37, 89,
+			47, 36, 51, 88, 37, 89, 0, 13, 67, 131, 8, 15, 50, 35, 49, 39, 50, 35, 72, 0, 10, 67, 126, 40, 15, 65, 40, 50, 72, 0,
+			12, 67, 125, 24, 15, 65, 35, 51, 35, 50, 72, 0, 19, 70, 125, 18, 176, 32, 120, 0, 65, 39, 51, 47, 35, 49, 36, 71, 108, 50,
+			0, 10, 67, 111, 55, 143, 83, 37, 55, 72, 0, 25, 73, 29, 251, 81, 79, 56, 160, 205, 55, 192, 35, 65, 48, 36, 51, 89, 37, 57,
+			39, 50, 37, 89, 65, 0, 17, 70, 29, 50, 135, 68, 164, 64, 36, 89, 47, 108, 51, 47, 36, 51, 0, 0, 17, 70, 206, 44, 83, 120,
+			120, 128, 57, 40, 81, 39, 89, 55, 108, 84, 0, 18, 70, 186, 3, 212, 133, 28, 192, 76, 35, 50, 72, 91, 35, 107, 51, 37, 0, 19,
+			71, 183, 50, 146, 207, 1, 202, 136, 48, 37, 47, 89, 37, 49, 108, 47, 39, 0, 16, 68, 182, 3, 17, 200, 48, 35, 50, 75, 35, 51,
+			36, 57, 36, 0, 12, 67, 129, 50, 10, 50, 36, 89, 71, 35, 47, 0, 16, 69, 109, 23, 15, 30, 0, 83, 35, 51, 104, 17, 72, 108,
+			50, 0, 18, 70, 63, 60, 20, 129, 28, 192, 72, 37, 49, 91, 36, 50, 36, 51, 37, 0, 15, 68, 32, 119, 210, 200, 71, 108, 65, 35,
+			88, 36, 57, 36, 0, 16, 70, 10, 212, 71, 193, 60, 192, 108, 48, 51, 108, 49, 89, 37, 0, 0, 12, 67, 186, 2, 48, 76, 39, 65,
+			71, 35, 49, 0, 17, 70, 181, 225, 209, 139, 51, 192, 48, 39, 55, 108, 51, 39, 57, 72, 0, 14, 68, 126, 226, 32, 60, 65, 39, 76,
+			71, 35, 50, 72, 0, 28, 74, 124, 120, 145, 28, 17, 222, 92, 140, 217, 132, 65, 108, 84, 35, 51, 108, 19, 39, 47, 47, 35, 71, 37,
+			19, 36, 0, 13, 68, 109, 24, 179, 60, 83, 36, 51, 39, 57, 72, 0, 27, 74, 29, 59, 81, 124, 114, 162, 74, 44, 243, 60, 36, 89,
+			48, 36, 51, 65, 108, 47, 39, 88, 39, 37, 12, 72, 0, 0, 16, 69, 184, 115, 209, 80, 128, 76, 108, 72, 39, 51, 91, 35, 71, 0,
+			19, 70, 182, 36, 72, 29, 196, 115, 48, 40, 51, 71, 108, 104, 17, 36, 51, 37, 0, 12, 67, 125, 24, 12, 65, 35, 51, 35, 50, 75,
+			0, 18, 70, 63, 59, 94, 124, 116, 243, 72, 37, 48, 55, 39, 65, 108, 89, 37, 0, 18, 70, 63, 56, 147, 69, 66, 128, 72, 37, 84,
+			89, 36, 51, 36, 91, 47, 0, 16, 70, 63, 56, 7, 127, 50, 128, 72, 37, 50, 108, 65, 37, 47, 0, 18, 70, 54, 36, 83, 69, 66,
+			128, 107, 40, 51, 89, 36, 51, 36, 91, 47, 0, 0, 15, 69, 197, 19, 226, 128, 240, 81, 35, 51, 72, 40, 50, 72, 0, 15, 69, 194,
+			33, 209, 40, 240, 49, 40, 108, 51, 47, 36, 72, 0, 12, 67, 181, 34, 135, 48, 36, 88, 36, 47, 108, 0, 17, 69, 133, 241, 224, 128,
+			240, 107, 35, 65, 108, 12, 50, 35, 50, 72, 0, 16, 69, 125, 28, 222, 128, 240, 65, 36, 51, 37, 55, 35, 50, 72, 0, 15, 69, 122,
+			35, 243, 131, 16, 55, 39, 12, 72, 37, 50, 81, 0, 19, 71, 76, 120, 10, 205, 236, 202, 68, 89, 108, 50, 47, 37, 55, 37, 47, 51,
+			0, 16, 69, 74, 20, 78, 128, 240, 88, 35, 107, 51, 101, 35, 50, 72, 0, 16, 69, 34, 3, 219, 131, 16, 71, 35, 50, 72, 83, 35,
+			50, 81, 0, 16, 69, 33, 28, 82, 204, 240, 71, 35, 51, 81, 39, 88, 37, 72, 0, 15, 69, 33, 17, 210, 204, 240, 71, 35, 51, 108,
+			88, 37, 72, 0, 15, 69, 30, 3, 209, 204, 240, 35, 50, 72, 51, 39, 57, 72, 0, 0, 15, 69, 180, 124, 202, 56, 160, 48, 108, 57,
+			47, 35, 101, 47, 0, 16, 69, 76, 232, 17, 30, 0, 89, 39, 101, 35, 50, 51, 108, 50, 0, 18, 70, 76, 120, 19, 193, 28, 202, 89,
+			108, 50, 89, 49, 36, 51, 37, 47, 0, 18, 69, 73, 244, 79, 206, 0, 88, 39, 65, 39, 51, 51, 39, 72, 37, 50, 0, 20, 71, 42,
+			43, 98, 197, 17, 219, 204, 47, 39, 48, 39, 81, 36, 51, 108, 83, 37, 0, 20, 71, 42, 39, 226, 197, 17, 219, 204, 47, 39, 65, 39,
+			81, 36, 51, 108, 83, 37, 0, 18, 70, 33, 17, 224, 199, 51, 138, 71, 35, 51, 35, 50, 81, 37, 101, 47, 0, 0, 18, 70, 125, 40,
+			146, 139, 60, 240, 65, 36, 88, 39, 88, 39, 37, 12, 49, 0, 18, 70, 42, 3, 226, 42, 3, 192, 47, 39, 50, 72, 39, 47, 39, 50,
+			72, 0, 18, 70, 33, 17, 219, 194, 3, 192, 71, 35, 51, 35, 83, 49, 35, 50, 72, 0, 30, 74, 29, 236, 10, 70, 39, 218, 128, 117,
+			243, 76, 36, 55, 36, 49, 47, 36, 51, 39, 65, 36, 104, 17, 50, 108, 47, 37, 89, 0, 9, 67, 29, 33, 192, 36, 88, 108, 0, 0,
+			22, 72, 182, 36, 96, 139, 20, 71, 111, 48, 48, 39, 51, 50, 39, 81, 36, 51, 108, 83, 37, 0, 12, 67, 105, 98, 0, 104, 17, 35,
+			88, 35, 71, 0, 14, 67, 84, 241, 243, 6, 89, 36, 72, 108, 57, 36, 12, 0, 16, 70, 79, 56, 34, 75, 50, 128, 89, 37, 50, 39,
+			88, 37, 47, 0, 23, 72, 30, 11, 243, 139, 20, 71, 111, 48, 35, 50, 90, 37, 57, 39, 81, 36, 51, 108, 83, 37, 0, 19, 71, 10,
+			209, 224, 63, 52, 243, 40, 108, 48, 108, 50, 72, 37, 89, 37, 47, 0, 23, 72, 9, 18, 145, 139, 20, 71, 111, 48, 108, 51, 47, 36,
+			51, 39, 81, 36, 51, 108, 83, 37, 0, 0, 12, 67, 197, 4, 71, 81, 39, 88, 35, 51, 108, 0, 17, 70, 183, 56, 49, 182, 40, 49,
+			48, 37, 50, 81, 48, 39, 50, 81, 0, 18, 70, 181, 24, 138, 27, 56, 0, 48, 36, 51, 39, 47, 39, 19, 37, 50, 0, 21, 71, 124,
+			204, 207, 29, 231, 222, 192, 65, 35, 75, 37, 72, 39, 55, 65, 39, 55, 49, 0, 20, 71, 110, 39, 176, 122, 36, 115, 192, 83, 39, 55,
+			49, 36, 55, 39, 51, 37, 49, 0, 9, 67, 103, 52, 199, 37, 89, 108, 0, 18, 70, 61, 24, 160, 68, 120, 15, 72, 35, 51, 40, 50,
+			51, 108, 50, 72, 0, 20, 70, 56, 117, 209, 181, 56, 15, 101, 108, 47, 36, 51, 48, 35, 89, 35, 50, 72, 0, 12, 67, 33, 165, 135,
+			71, 35, 104, 17, 88, 108, 0, 15, 69, 30, 5, 71, 108, 112, 36, 50, 89, 108, 83, 35, 50, 0, 26, 73, 28, 132, 112, 29, 251, 115,
+			136, 164, 64, 35, 71, 35, 51, 49, 108, 65, 48, 37, 57, 40, 47, 36, 51, 0, 18, 70, 28, 132, 95, 30, 8, 15, 35, 71, 51, 65,
+			108, 50, 35, 50, 72, 0, 0, 13, 68, 183, 53, 17, 136, 48, 37, 91, 51, 39, 12, 0, 13, 68, 70, 34, 17, 136, 51, 40, 71, 36,
+			51, 40, 0, 11, 67, 61, 248, 128, 72, 36, 65, 39, 12, 0, 13, 68, 57, 17, 219, 204, 101, 39, 51, 108, 83, 37, 0, 9, 67, 29,
+			60, 192, 36, 89, 37, 0, 13, 68, 29, 20, 215, 136, 35, 51, 35, 89, 47, 40, 0, 25, 73, 28, 168, 136, 206, 44, 81, 29, 188, 192,
+			39, 47, 39, 71, 37, 57, 39, 81, 36, 51, 108, 83, 37, 0, 0, 11, 67, 193, 243, 192, 49, 39, 65, 39, 72, 0, 13, 68, 137, 60,
+			217, 28, 84, 35, 89, 37, 35, 50, 0, 11, 67, 129, 243, 192, 50, 35, 65, 35, 72, 0, 12, 67, 125, 225, 193, 65, 35, 55, 35, 10,
+			36, 0, 12, 68, 110, 36, 71, 148, 83, 39, 51, 35, 50, 0, 19, 70, 109, 236, 30, 137, 28, 240, 83, 39, 55, 49, 36, 55, 39, 51,
+			37, 49, 0, 12, 67, 85, 184, 64, 89, 39, 83, 83, 36, 12, 0, 13, 68, 70, 12, 82, 28, 51, 35, 50, 81, 88, 108, 0, 13, 68,
+			69, 44, 202, 28, 51, 39, 88, 37, 47, 108, 0, 13, 68, 32, 120, 155, 28, 71, 108, 84, 35, 83, 108, 0, 10, 67, 29, 184, 64, 36,
+			83, 36, 12, 0, 0, 11, 67, 134, 43, 179, 107, 39, 39, 76, 37, 0, 14, 69, 111, 60, 71, 70, 32, 83, 37, 81, 108, 51, 39, 0,
+			14, 69, 70, 44, 34, 194, 32, 51, 39, 49, 39, 49, 39, 0, 20, 71, 41, 24, 159, 34, 36, 243, 40, 47, 39, 51, 39, 65, 71, 39,
+			89, 37, 47, 0, 0, 11, 67, 193, 225, 225, 49, 39, 55, 108, 107, 0, 11, 67, 131, 17, 225, 50, 36, 81, 108, 107, 0, 11, 67, 130,
+			241, 207, 50, 36, 90, 108, 72, 0, 10, 67, 128, 119, 192, 6, 50, 108, 65, 0, 11, 67, 109, 49, 207, 83, 36, 89, 108, 72, 0, 12,
+			68, 29, 52, 71, 4, 36, 89, 51, 108, 51, 0, 16, 69, 29, 50, 156, 68, 112, 36, 89, 47, 36, 104, 17, 51, 108, 0, 0, 11, 67,
+			207, 17, 224, 57, 36, 81, 108, 50, 0, 11, 67, 204, 161, 224, 57, 36, 47, 108, 50, 0, 12, 67, 197, 22, 202, 81, 36, 51, 36, 83,
+			47, 0, 31, 74, 186, 3, 213, 62, 20, 135, 70, 6, 209, 204, 76, 35, 50, 72, 89, 35, 72, 107, 36, 88, 108, 51, 50, 35, 83, 35,
+			51, 37, 0, 16, 70, 130, 37, 15, 29, 24, 128, 50, 40, 91, 72, 108, 51, 40, 0, 10, 67, 127, 49, 224, 65, 37, 108, 50, 0, 12,
+			67, 76, 161, 224, 89, 36, 47, 6, 108, 50, 0, 11, 67, 71, 52, 202, 51, 37, 89, 36, 47, 0, 12, 67, 62, 36, 202, 72, 6, 40,
+			12, 89, 47, 0, 0, 11, 67, 133, 241, 223, 107, 39, 65, 108, 65, 0, 11, 67, 133, 65, 223, 107, 39, 91, 108, 65, 0, 12, 68, 127,
+			54, 71, 60, 65, 37, 19, 108, 72, 0, 11, 67, 109, 24, 64, 83, 35, 51, 35, 107, 0, 13, 67, 105, 24, 64, 104, 17, 35, 51, 51,
+			36, 12, 0, 11, 67, 93, 24, 64, 47, 39, 51, 51, 36, 0, 12, 67, 83, 20, 91, 91, 36, 81, 36, 51, 83, 0, 12, 67, 81, 24,
+			64, 91, 39, 51, 51, 36, 12, 0, 11, 67, 73, 241, 223, 88, 36, 65, 108, 65, 0, 11, 67, 73, 24, 64, 88, 36, 51, 36, 107, 0,
+			12, 67, 61, 24, 64, 72, 35, 51, 51, 36, 12, 0, 19, 70, 41, 236, 81, 29, 177, 192, 47, 36, 55, 36, 81, 51, 108, 83, 35, 50,
+			0, 12, 68, 29, 156, 199, 60, 35, 19, 57, 108, 72, 0, 10, 67, 29, 24, 64, 35, 51, 51, 36, 0, 23, 73, 10, 2, 145, 138, 216,
+			146, 139, 60, 240, 108, 50, 47, 51, 39, 48, 39, 88, 39, 37, 49, 0, 0, 13, 68, 194, 12, 71, 128, 49, 35, 50, 81, 108, 50, 0,
+			14, 68, 194, 4, 209, 40, 49, 39, 50, 89, 36, 51, 47, 0, 11, 67, 193, 242, 128, 49, 35, 65, 35, 47, 0, 11, 67, 193, 241, 222,
+			49, 35, 65, 108, 55, 0, 11, 67, 186, 1, 222, 76, 36, 50, 108, 55, 0, 13, 68, 135, 20, 135, 128, 107, 36, 81, 88, 108, 50, 0,
+			13, 68, 134, 210, 135, 128, 107, 36, 48, 47, 108, 50, 0, 12, 67, 133, 242, 128, 107, 36, 65, 65, 35, 47, 0, 14, 68, 129, 197, 71,
+			128, 50, 39, 104, 17, 89, 108, 50, 0, 14, 68, 129, 129, 219, 40, 50, 36, 88, 108, 83, 35, 47, 0, 12, 67, 129, 49, 204, 50, 35,
+			89, 89, 108, 75, 0, 12, 67, 126, 2, 140, 65, 39, 50, 47, 35, 75, 0, 12, 67, 105, 242, 128, 104, 17, 35, 65, 35, 47, 0, 12,
+			68, 102, 8, 135, 128, 39, 50, 84, 108, 50, 0, 12, 67, 92, 129, 222, 47, 35, 71, 71, 108, 55, 0, 13, 68, 85, 184, 135, 128, 89,
+			35, 83, 84, 108, 50, 0, 11, 67, 81, 241, 222, 91, 39, 65, 108, 55, 0, 13, 68, 76, 131, 71, 128, 89, 39, 71, 107, 108, 50, 0,
+			13, 68, 73, 24, 135, 128, 88, 35, 51, 84, 108, 50, 0, 12, 67, 69, 241, 222, 51, 35, 65, 65, 108, 55, 0, 13, 68, 68, 195, 71,
+			128, 51, 39, 75, 107, 108, 50, 0, 13, 68, 57, 20, 199, 128, 101, 36, 51, 89, 108, 50, 0, 11, 67, 48, 241, 222, 75, 36, 72, 108,
+			55, 0, 10, 67, 34, 18, 128, 71, 39, 107, 47, 0, 14, 68, 34, 5, 7, 128, 71, 36, 50, 36, 91, 108, 50, 0, 14, 68, 33, 20,
+			199, 128, 71, 36, 51, 36, 89, 108, 50, 0, 15, 68, 33, 20, 160, 40, 71, 36, 51, 36, 88, 36, 50, 47, 0, 15, 69, 32, 124, 10,
+			71, 48, 71, 108, 49, 47, 36, 51, 37, 0, 12, 68, 30, 36, 135, 128, 39, 12, 88, 108, 50, 0, 12, 68, 29, 181, 7, 128, 35, 83,
+			91, 108, 50, 0, 11, 67, 9, 27, 111, 108, 51, 48, 36, 90, 0, 0, 11, 67, 184, 172, 33, 76, 39, 47, 49, 36, 0, 12, 67, 129,
+			244, 97, 50, 39, 65, 51, 36, 12, 0, 16, 69, 125, 50, 155, 28, 240, 65, 39, 89, 47, 35, 83, 108, 72, 0, 12, 67, 82, 20, 97,
+			91, 39, 107, 51, 36, 12, 0, 12, 67, 78, 216, 15, 89, 36, 48, 35, 50, 72, 0, 12, 67, 77, 229, 225, 89, 39, 55, 47, 36, 12,
+			0, 18, 70, 77, 24, 147, 40, 120, 0, 89, 36, 51, 84, 36, 89, 47, 108, 50, 0, 18, 70, 77, 19, 32, 32, 120, 0, 89, 35, 51,
+			75, 39, 65, 71, 108, 50, 0, 12, 67, 73, 244, 97, 88, 39, 65, 51, 36, 12, 0, 13, 68, 43, 52, 138, 192, 47, 37, 88, 47, 35,
+			49, 0, 14, 68, 41, 236, 7, 124, 47, 36, 55, 36, 49, 108, 65, 0, 16, 69, 34, 23, 209, 30, 16, 71, 36, 107, 35, 65, 51, 108,
+			107, 0, 11, 68, 30, 36, 115, 192, 40, 51, 37, 49, 0, 12, 68, 29, 227, 71, 124, 36, 55, 107, 108, 65, 0, 13, 68, 29, 195, 199,
+			124, 36, 104, 17, 72, 108, 65, 0, 10, 67, 29, 87, 192, 35, 89, 35, 65, 0, 11, 67, 8, 132, 225, 108, 71, 89, 36, 12, 0, 0,
+			18, 70, 182, 36, 96, 97, 28, 192, 48, 40, 51, 50, 35, 88, 35, 51, 37, 0, 18, 70, 134, 3, 211, 109, 28, 192, 107, 35, 50, 72,
+			89, 83, 37, 51, 37, 0, 17, 69, 131, 20, 115, 76, 160, 6, 50, 36, 81, 35, 51, 37, 89, 47, 0, 15, 69, 126, 40, 19, 30, 0,
+			65, 40, 50, 36, 89, 108, 50, 0, 12, 67, 125, 252, 32, 65, 39, 65, 49, 36, 50, 0, 17, 69, 125, 164, 173, 56, 160, 65, 35, 104,
+			17, 88, 48, 39, 101, 47, 0, 13, 68, 125, 148, 71, 48, 65, 36, 19, 51, 108, 75, 0, 12, 67, 113, 40, 0, 104, 17, 35, 88, 35,
+			50, 0, 11, 67, 109, 72, 0, 83, 35, 91, 36, 50, 0, 12, 67, 81, 227, 138, 91, 36, 55, 35, 101, 47, 0, 13, 67, 69, 33, 220,
+			51, 35, 88, 88, 108, 104, 17, 0, 18, 70, 61, 252, 17, 29, 60, 192, 72, 36, 65, 39, 49, 51, 108, 89, 37, 0, 13, 68, 42, 43,
+			135, 120, 47, 39, 84, 76, 108, 55, 0, 12, 68, 42, 40, 7, 120, 47, 39, 50, 108, 55, 0, 17, 70, 41, 28, 10, 29, 44, 192, 47,
+			39, 51, 49, 47, 108, 88, 37, 0, 12, 67, 33, 20, 142, 71, 35, 51, 88, 35, 101, 0, 15, 69, 33, 19, 135, 76, 160, 71, 35, 51,
+			101, 108, 89, 47, 0, 12, 67, 33, 1, 220, 71, 39, 88, 108, 104, 17, 0, 31, 76, 30, 39, 138, 68, 116, 226, 130, 44, 81, 29, 188,
+			192, 40, 55, 47, 51, 108, 50, 89, 39, 50, 39, 81, 36, 51, 108, 83, 37, 0, 12, 68, 29, 244, 199, 120, 36, 65, 89, 108, 55, 0,
+			11, 67, 28, 193, 220, 39, 75, 108, 104, 17, 0, 14, 68, 28, 165, 71, 120, 36, 47, 47, 36, 89, 108, 55, 0, 0, 13, 68, 182, 36,
+			96, 196, 48, 40, 51, 35, 50, 81, 0, 14, 68, 181, 24, 145, 60, 48, 35, 51, 84, 35, 51, 72, 0, 13, 68, 181, 18, 145, 132, 48,
+			39, 51, 47, 51, 36, 0, 16, 69, 128, 164, 79, 29, 240, 50, 39, 47, 36, 51, 72, 108, 65, 0, 12, 67, 120, 129, 219, 55, 35, 71,
+			71, 108, 83, 0, 16, 69, 109, 24, 136, 121, 144, 83, 39, 51, 40, 71, 35, 55, 19, 0, 12, 67, 93, 228, 223, 47, 36, 55, 36, 89,
+			65, 0, 21, 71, 84, 244, 71, 121, 70, 81, 28, 89, 35, 72, 51, 39, 91, 91, 39, 35, 51, 108, 0, 17, 70, 83, 52, 95, 68, 115,
+			192, 91, 37, 51, 65, 39, 51, 108, 72, 0, 17, 70, 80, 120, 96, 80, 120, 64, 91, 108, 107, 35, 50, 91, 108, 107, 0, 15, 68, 78,
+			215, 148, 196, 89, 36, 48, 36, 55, 36, 91, 81, 0, 10, 67, 69, 145, 219, 51, 39, 108, 83, 0, 14, 69, 62, 36, 202, 29, 240, 72,
+			40, 89, 47, 108, 65, 0, 13, 68, 48, 241, 209, 132, 75, 36, 72, 108, 51, 36, 0, 14, 67, 42, 24, 153, 47, 35, 107, 35, 84, 84,
+			39, 19, 0, 16, 69, 41, 236, 81, 29, 240, 47, 36, 55, 36, 81, 51, 108, 65, 0, 17, 70, 33, 24, 160, 132, 124, 64, 71, 40, 51,
+			40, 50, 107, 108, 81, 0, 12, 68, 31, 60, 81, 196, 37, 81, 51, 36, 81, 0, 14, 68, 8, 132, 209, 60, 108, 71, 36, 89, 35, 51,
+			72, 0, 0, 14, 68, 207, 55, 135, 112, 57, 36, 57, 55, 108, 104, 17, 0, 17, 70, 193, 248, 160, 205, 50, 128, 49, 39, 65, 39, 50,
+			37, 89, 47, 0, 17, 70, 182, 39, 179, 110, 40, 51, 48, 39, 55, 37, 83, 39, 50, 37, 0, 16, 70, 180, 116, 237, 137, 18, 128, 48,
+			108, 89, 48, 39, 51, 47, 0, 14, 69, 139, 59, 226, 29, 224, 84, 37, 90, 40, 108, 55, 0, 14, 68, 129, 244, 71, 40, 50, 39, 65,
+			35, 51, 108, 47, 0, 14, 68, 127, 56, 147, 128, 65, 37, 57, 39, 89, 36, 50, 0, 14, 68, 125, 83, 199, 112, 65, 36, 89, 72, 108,
+			104, 17, 0, 14, 67, 124, 165, 94, 65, 39, 47, 47, 35, 89, 36, 55, 0, 15, 69, 123, 50, 17, 29, 224, 55, 37, 71, 36, 51, 108,
+			55, 0, 14, 68, 121, 246, 71, 40, 55, 39, 65, 35, 19, 108, 47, 0, 13, 68, 120, 136, 71, 40, 55, 35, 71, 107, 108, 47, 0, 15,
+			68, 113, 118, 71, 40, 104, 17, 35, 47, 35, 19, 108, 47, 0, 15, 68, 112, 132, 71, 112, 104, 17, 36, 71, 51, 108, 104, 17, 0, 17,
+			70, 109, 252, 224, 205, 50, 128, 83, 36, 65, 37, 50, 37, 89, 47, 0, 15, 68, 105, 40, 135, 40, 104, 17, 35, 88, 35, 84, 108, 47,
+			0, 14, 68, 82, 24, 135, 40, 91, 35, 107, 35, 84, 108, 47, 0, 14, 68, 80, 136, 71, 40, 91, 39, 71, 35, 107, 108, 47, 0, 13,
+			67, 61, 28, 30, 72, 35, 51, 49, 39, 55, 55, 0, 15, 69, 57, 19, 211, 29, 224, 101, 39, 51, 72, 89, 108, 55, 0, 15, 69, 40,
+			114, 13, 29, 224, 47, 108, 71, 36, 107, 108, 55, 0, 15, 69, 29, 230, 94, 28, 192, 39, 55, 19, 35, 55, 108, 75, 0, 13, 68, 29,
+			116, 71, 112, 39, 47, 51, 108, 104, 17, 0, 17, 70, 29, 60, 7, 206, 2, 128, 36, 89, 49, 108, 57, 50, 36, 47, 0, 15, 69, 28,
+			170, 213, 29, 224, 36, 47, 47, 36, 89, 108, 55, 0, 13, 68, 28, 164, 71, 112, 39, 47, 51, 108, 104, 17, 0, 17, 70, 10, 2, 145,
+			31, 2, 128, 108, 50, 47, 36, 51, 108, 49, 47, 0, 0, 11, 67, 206, 40, 19, 57, 40, 50, 36, 89, 0, 11, 67, 199, 56, 19, 81,
+			37, 50, 36, 89, 0, 19, 70, 184, 115, 209, 79, 49, 225, 76, 108, 72, 39, 51, 89, 37, 57, 108, 107, 0, 16, 70, 182, 34, 147, 60,
+			119, 192, 48, 40, 47, 89, 72, 108, 65, 0, 18, 70, 181, 24, 177, 68, 119, 192, 48, 39, 51, 39, 81, 36, 51, 108, 65, 0, 17, 69,
+			125, 81, 207, 70, 16, 65, 39, 89, 108, 72, 36, 51, 36, 12, 0, 14, 68, 125, 17, 211, 124, 65, 35, 51, 108, 89, 36, 65, 0, 11,
+			67, 124, 225, 215, 65, 39, 101, 108, 47, 0, 17, 68, 124, 210, 145, 124, 6, 65, 39, 107, 4, 47, 35, 51, 35, 65, 0, 13, 67, 115,
+			53, 211, 104, 17, 36, 57, 47, 39, 89, 0, 12, 67, 112, 196, 64, 104, 17, 35, 75, 35, 51, 0, 18, 70, 108, 168, 177, 68, 119, 192,
+			83, 39, 47, 39, 81, 36, 51, 108, 65, 0, 17, 70, 78, 43, 81, 48, 119, 192, 89, 40, 48, 36, 51, 75, 108, 65, 0, 14, 68, 78,
+			3, 209, 124, 89, 35, 50, 72, 51, 39, 65, 0, 16, 69, 61, 50, 140, 68, 240, 72, 35, 89, 47, 75, 36, 51, 72, 0, 11, 67, 42,
+			12, 211, 47, 36, 50, 37, 89, 0, 11, 67, 34, 212, 64, 71, 36, 48, 35, 51, 0, 18, 70, 32, 248, 136, 205, 17, 225, 71, 35, 72,
+			39, 71, 37, 51, 108, 107, 0, 12, 68, 30, 5, 71, 108, 36, 50, 89, 108, 83, 0, 0, 19, 70, 194, 6, 207, 68, 119, 128, 49, 39,
+			50, 83, 36, 72, 36, 51, 108, 55, 0, 19, 70, 181, 116, 98, 79, 49, 224, 48, 36, 47, 51, 39, 89, 37, 57, 108, 50, 0, 15, 68,
+			126, 3, 209, 48, 65, 39, 50, 72, 35, 51, 35, 75, 0, 18, 69, 125, 151, 159, 30, 0, 65, 39, 19, 35, 55, 55, 36, 65, 108, 50,
+			0, 15, 69, 125, 49, 226, 28, 160, 65, 39, 89, 108, 84, 108, 47, 0, 20, 70, 125, 28, 43, 32, 241, 224, 65, 39, 51, 35, 49, 49,
+			35, 71, 72, 108, 50, 0, 18, 69, 124, 212, 95, 28, 160, 65, 39, 107, 35, 51, 51, 35, 65, 108, 47, 0, 14, 68, 124, 212, 71, 32,
+			65, 36, 107, 51, 108, 71, 36, 0, 15, 68, 124, 170, 213, 120, 65, 39, 47, 47, 35, 89, 36, 55, 0, 12, 67, 124, 132, 82, 65, 39,
+			71, 51, 35, 88, 0, 20, 70, 124, 115, 209, 205, 65, 224, 65, 108, 72, 35, 51, 37, 57, 36, 91, 108, 50, 0, 20, 70, 124, 115, 209,
+			204, 161, 224, 65, 108, 72, 35, 51, 37, 57, 36, 47, 108, 50, 0, 22, 70, 73, 244, 79, 129, 65, 224, 88, 39, 65, 39, 51, 51, 39,
+			72, 50, 36, 91, 108, 50, 0, 15, 69, 61, 28, 199, 108, 160, 72, 35, 51, 57, 108, 83, 47, 0, 19, 70, 60, 120, 151, 120, 129, 224,
+			72, 108, 84, 47, 35, 55, 35, 71, 108, 50, 0, 22, 71, 58, 35, 211, 41, 24, 160, 204, 101, 39, 72, 89, 36, 47, 35, 51, 84, 35,
+			50, 37, 0, 15, 69, 57, 49, 209, 28, 160, 101, 36, 89, 108, 51, 108, 47, 0, 15, 69, 57, 17, 219, 28, 160, 101, 39, 51, 108, 83,
+			108, 47, 0, 21, 71, 43, 8, 34, 193, 17, 211, 204, 47, 36, 49, 50, 39, 49, 36, 51, 108, 89, 37, 0, 15, 68, 41, 55, 147, 120,
+			47, 35, 89, 35, 55, 89, 39, 55, 0, 17, 70, 40, 116, 115, 56, 241, 224, 47, 108, 51, 37, 101, 72, 108, 50, 0, 17, 70, 29, 251,
+			81, 204, 119, 128, 35, 65, 48, 36, 51, 57, 108, 55, 0, 17, 70, 29, 59, 84, 204, 119, 128, 36, 89, 48, 36, 91, 37, 108, 55, 0,
+			17, 69, 29, 50, 145, 190, 0, 36, 89, 47, 39, 51, 39, 90, 36, 50, 0, 18, 70, 29, 35, 224, 32, 119, 128, 35, 88, 72, 39, 50,
+			71, 108, 55, 36, 0, 0, 12, 67, 183, 60, 17, 48, 36, 57, 49, 35, 51, 0, 18, 70, 120, 124, 226, 41, 56, 64, 55, 108, 19, 39,
+			47, 36, 89, 36, 12, 0, 13, 67, 115, 53, 81, 104, 17, 36, 57, 89, 35, 51, 0, 22, 71, 109, 24, 155, 69, 50, 135, 60, 83, 39,
+			51, 40, 83, 36, 51, 36, 89, 47, 108, 72, 0, 17, 69, 108, 168, 176, 69, 240, 83, 39, 47, 39, 49, 36, 51, 39, 65, 0, 12, 67,
+			59, 52, 145, 101, 36, 57, 88, 35, 51, 0, 18, 70, 51, 20, 109, 29, 24, 64, 75, 36, 81, 35, 51, 48, 108, 51, 36, 0, 11, 67,
+			43, 56, 17, 47, 37, 50, 36, 51, 0, 13, 68, 35, 52, 160, 76, 71, 37, 88, 50, 36, 89, 0, 22, 72, 33, 225, 199, 76, 162, 224,
+			28, 16, 71, 36, 55, 108, 36, 89, 47, 36, 89, 50, 108, 0, 13, 68, 33, 17, 240, 76, 71, 39, 51, 108, 49, 89, 0, 17, 70, 32,
+			119, 160, 109, 56, 64, 71, 36, 50, 50, 35, 83, 89, 36, 0, 20, 71, 32, 116, 135, 69, 60, 199, 132, 71, 108, 88, 108, 51, 89, 37,
+			57, 108, 107, 0, 15, 69, 30, 12, 219, 69, 240, 39, 50, 37, 83, 39, 51, 65, 0, 12, 68, 29, 180, 71, 92, 36, 83, 51, 108, 47,
+			0, 14, 69, 29, 59, 71, 77, 240, 36, 89, 48, 108, 89, 65, 0, 0, 22, 71, 193, 228, 98, 181, 225, 211, 40, 49, 39, 55, 39, 51,
+			39, 48, 36, 55, 108, 89, 47, 0, 11, 67, 185, 65, 212, 76, 36, 91, 108, 91, 0, 11, 67, 183, 52, 98, 48, 36, 57, 51, 39, 0,
+			11, 67, 129, 184, 144, 50, 39, 83, 40, 88, 0, 11, 67, 127, 52, 98, 65, 37, 51, 35, 84, 0, 16, 69, 126, 3, 30, 28, 128, 65,
+			35, 50, 75, 36, 55, 108, 71, 0, 17, 70, 125, 145, 223, 120, 114, 128, 65, 39, 108, 65, 36, 55, 108, 47, 0, 17, 70, 101, 247, 179,
+			204, 114, 128, 35, 65, 35, 55, 37, 57, 35, 47, 0, 16, 69, 82, 12, 202, 77, 224, 91, 36, 50, 37, 47, 89, 36, 55, 0, 15, 69,
+			41, 24, 176, 30, 240, 47, 40, 51, 40, 49, 108, 90, 0, 12, 67, 33, 65, 212, 71, 35, 91, 91, 108, 91, 0, 15, 69, 33, 24, 147,
+			30, 240, 71, 39, 51, 39, 89, 108, 90, 0, 19, 71, 29, 252, 209, 29, 87, 135, 128, 35, 65, 37, 51, 35, 89, 55, 108, 50, 0, 12,
+			68, 29, 60, 7, 184, 36, 89, 49, 108, 76, 0, 18, 70, 29, 28, 19, 41, 17, 222, 39, 51, 49, 36, 89, 47, 51, 108, 55, 0, 0,
+			12, 68, 198, 33, 202, 68, 81, 40, 108, 47, 51, 0, 18, 70, 195, 55, 162, 197, 23, 192, 49, 37, 55, 40, 81, 36, 51, 35, 65, 0,
+			13, 68, 194, 12, 34, 68, 49, 39, 50, 49, 40, 51, 0, 12, 67, 193, 225, 229, 49, 39, 55, 55, 35, 50, 0, 17, 70, 130, 28, 222,
+			205, 55, 192, 50, 36, 107, 37, 55, 37, 89, 65, 0, 14, 69, 127, 56, 51, 193, 48, 65, 37, 50, 37, 49, 89, 0, 15, 68, 125, 56,
+			12, 68, 65, 35, 89, 36, 50, 75, 36, 51, 0, 12, 68, 123, 60, 34, 68, 55, 37, 49, 39, 51, 0, 11, 67, 113, 21, 64, 104, 17,
+			39, 51, 89, 0, 16, 69, 109, 17, 224, 77, 48, 83, 36, 51, 108, 50, 89, 36, 89, 0, 18, 70, 108, 168, 177, 68, 118, 192, 83, 39,
+			47, 39, 81, 36, 51, 108, 83, 0, 12, 67, 85, 164, 64, 89, 36, 104, 17, 35, 51, 0, 11, 67, 78, 212, 64, 89, 36, 48, 35, 51,
+			0, 18, 70, 77, 242, 30, 205, 55, 192, 89, 35, 65, 71, 39, 55, 37, 89, 65, 0, 11, 67, 72, 104, 147, 88, 36, 19, 40, 89, 0,
+			16, 70, 71, 49, 222, 205, 55, 192, 51, 36, 108, 55, 37, 89, 65, 0, 11, 67, 70, 212, 64, 51, 35, 48, 36, 51, 0, 15, 69, 56,
+			124, 7, 135, 0, 101, 108, 49, 108, 107, 35, 49, 0, 16, 69, 53, 49, 200, 69, 48, 107, 36, 89, 108, 71, 51, 35, 89, 0, 13, 70,
+			42, 44, 212, 130, 40, 15, 47, 40, 57, 36, 0, 14, 68, 42, 33, 202, 68, 47, 35, 84, 108, 47, 39, 51, 0, 17, 70, 41, 24, 145,
+			205, 55, 192, 47, 36, 51, 39, 51, 37, 89, 65, 0, 11, 67, 32, 228, 64, 71, 36, 101, 35, 51, 0, 17, 70, 29, 236, 30, 205, 55,
+			192, 35, 55, 49, 39, 55, 37, 89, 65, 0, 11, 67, 29, 164, 64, 39, 104, 17, 39, 51, 0, 15, 69, 28, 210, 179, 29, 112, 36, 107,
+			47, 37, 57, 108, 47, 0, 10, 67, 8, 228, 64, 108, 101, 35, 51, 0, 0, 18, 70, 131, 56, 176, 29, 55, 128, 50, 37, 57, 40, 49,
+			108, 89, 36, 55, 0, 21, 72, 124, 124, 240, 70, 36, 199, 108, 160, 65, 108, 57, 49, 51, 39, 89, 108, 83, 47, 0, 13, 68, 40, 231,
+			199, 80, 47, 39, 101, 65, 108, 91, 0, 19, 70, 34, 4, 162, 183, 52, 96, 71, 35, 50, 88, 39, 48, 37, 51, 36, 50, 0, 19, 70,
+			9, 33, 207, 61, 19, 138, 108, 88, 108, 72, 72, 36, 51, 35, 101, 47, 0, 7, 65, 96, 6, 88, 108, 0, 0, 11, 67, 186, 17, 209,
+			76, 108, 107, 108, 51, 0, 12, 67, 133, 33, 209, 6, 107, 36, 88, 108, 51, 0, 13, 68, 128, 119, 34, 76, 50, 108, 104, 17, 40, 89,
+			0, 16, 69, 125, 50, 143, 205, 16, 65, 39, 89, 47, 35, 72, 37, 51, 0, 12, 67, 124, 231, 149, 65, 39, 101, 55, 36, 89, 0, 16,
+			69, 122, 3, 225, 137, 16, 81, 35, 50, 72, 36, 107, 40, 51, 0, 15, 68, 113, 200, 34, 76, 104, 17, 39, 104, 17, 50, 40, 89, 0,
+			19, 70, 108, 244, 71, 123, 52, 223, 83, 36, 72, 36, 51, 108, 55, 37, 89, 65, 0, 23, 72, 96, 120, 81, 29, 229, 94, 28, 208, 88,
+			108, 107, 36, 51, 39, 89, 89, 35, 55, 108, 107, 0, 12, 67, 85, 161, 209, 89, 36, 104, 17, 108, 51, 0, 10, 67, 80, 115, 192, 91,
+			6, 108, 72, 0, 11, 67, 78, 209, 209, 89, 36, 48, 108, 51, 0, 11, 67, 77, 33, 209, 89, 36, 88, 108, 51, 0, 17, 70, 63, 56,
+			7, 127, 52, 223, 72, 37, 50, 108, 65, 37, 89, 65, 0, 10, 67, 31, 49, 209, 35, 57, 108, 51, 0, 15, 69, 29, 60, 51, 129, 16,
+			36, 89, 49, 37, 50, 36, 51, 0, 16, 69, 29, 59, 96, 77, 16, 36, 89, 48, 36, 50, 89, 36, 51, 0, 0, 11, 67, 187, 56, 20,
+			76, 37, 50, 36, 91, 0, 14, 69, 183, 60, 7, 78, 32, 48, 37, 49, 108, 89, 39, 0, 11, 67, 182, 212, 243, 48, 36, 48, 89, 37,
+			0, 17, 70, 181, 19, 199, 139, 52, 128, 48, 35, 51, 72, 108, 84, 37, 88, 0, 13, 68, 114, 39, 243, 72, 104, 17, 39, 65, 37, 88,
+			0, 16, 69, 109, 19, 209, 205, 64, 83, 36, 51, 36, 72, 51, 37, 91, 0, 9, 67, 103, 52, 243, 37, 89, 108, 0, 12, 67, 76, 212,
+			115, 89, 35, 107, 35, 51, 37, 0, 17, 69, 53, 28, 7, 41, 64, 107, 35, 51, 35, 49, 108, 47, 35, 91, 0, 12, 67, 43, 20, 115,
+			47, 35, 81, 35, 51, 37, 0, 13, 67, 41, 52, 115, 47, 35, 89, 35, 51, 51, 37, 0, 11, 67, 35, 56, 20, 71, 37, 50, 36, 91,
+			0, 16, 69, 29, 236, 10, 70, 32, 36, 55, 36, 49, 47, 36, 51, 39, 0, 0, 14, 68, 194, 3, 202, 68, 49, 39, 50, 72, 47, 35,
+			51, 0, 19, 70, 193, 236, 19, 206, 40, 0, 49, 39, 55, 36, 49, 89, 37, 57, 39, 50, 0, 18, 70, 193, 225, 226, 207, 4, 64, 49,
+			36, 55, 108, 84, 37, 49, 39, 51, 0, 19, 71, 190, 36, 96, 29, 236, 211, 124, 90, 40, 51, 50, 108, 55, 37, 89, 65, 0, 14, 68,
+			133, 241, 219, 68, 107, 39, 65, 108, 83, 35, 51, 0, 18, 70, 131, 60, 34, 76, 232, 0, 50, 37, 49, 40, 89, 39, 101, 35, 50, 0,
+			13, 68, 129, 56, 135, 68, 50, 36, 89, 84, 108, 51, 0, 12, 67, 125, 242, 143, 65, 39, 65, 47, 35, 72, 0, 19, 71, 111, 56, 143,
+			29, 236, 211, 124, 83, 36, 39, 72, 108, 55, 37, 89, 65, 0, 13, 68, 77, 244, 199, 68, 89, 36, 65, 89, 108, 51, 0, 16, 69, 77,
+			228, 243, 137, 48, 89, 36, 55, 89, 37, 57, 40, 89, 0, 21, 71, 68, 115, 243, 139, 20, 71, 108, 51, 108, 72, 37, 57, 39, 81, 36,
+			51, 108, 83, 0, 10, 67, 53, 58, 192, 107, 36, 89, 89, 0, 13, 68, 43, 4, 71, 68, 47, 36, 49, 51, 108, 51, 0, 13, 68, 35,
+			53, 72, 68, 71, 37, 89, 35, 71, 51, 0, 13, 68, 33, 232, 135, 68, 71, 39, 55, 84, 108, 51, 0, 14, 68, 33, 17, 200, 68, 71,
+			35, 51, 108, 71, 35, 51, 0, 18, 70, 32, 161, 202, 70, 40, 0, 71, 36, 47, 108, 47, 36, 51, 39, 50, 0, 12, 68, 29, 244, 71,
+			68, 36, 65, 51, 108, 51, 0, 13, 68, 29, 236, 226, 68, 39, 55, 37, 84, 36, 51, 0, 12, 68, 29, 84, 71, 68, 36, 89, 51, 108,
+			51, 0, 25, 73, 29, 59, 112, 41, 24, 177, 68, 119, 192, 36, 89, 48, 36, 49, 47, 51, 39, 81, 36, 51, 108, 65, 0, 17, 70, 29,
+			20, 136, 199, 52, 64, 35, 51, 88, 71, 36, 81, 37, 51, 0, 12, 68, 28, 164, 71, 68, 39, 47, 51, 108, 51, 0, 12, 68, 28, 132,
+			71, 68, 35, 71, 51, 108, 51, 0, 0, 14, 68, 193, 65, 240, 80, 49, 36, 91, 108, 49, 36, 91, 0, 14, 68, 82, 1, 211, 204, 91,
+			36, 50, 6, 108, 89, 37, 0, 16, 69, 61, 19, 148, 30, 0, 72, 36, 51, 35, 101, 91, 108, 50, 0, 13, 68, 42, 36, 209, 204, 47,
+			40, 89, 35, 51, 37, 0, 12, 67, 34, 21, 10, 71, 36, 107, 36, 91, 47, 0, 12, 67, 33, 60, 10, 71, 35, 89, 49, 36, 47, 0,
+			12, 67, 30, 212, 74, 39, 48, 36, 51, 36, 47, 0, 11, 67, 9, 252, 218, 108, 65, 37, 104, 17, 0, 0, 21, 72, 192, 114, 162, 123,
+			52, 243, 77, 240, 49, 108, 47, 39, 55, 37, 89, 37, 89, 65, 0, 15, 69, 185, 17, 206, 137, 16, 76, 36, 51, 108, 101, 39, 51, 0,
+			14, 69, 184, 124, 206, 137, 16, 76, 108, 57, 101, 39, 51, 0, 21, 72, 128, 114, 162, 68, 119, 179, 77, 240, 50, 108, 47, 40, 51, 108,
+			55, 37, 89, 65, 0, 18, 70, 125, 168, 7, 95, 52, 192, 65, 36, 104, 17, 50, 108, 47, 37, 89, 0, 11, 67, 125, 124, 217, 65, 39,
+			47, 37, 19, 0, 12, 67, 125, 21, 153, 65, 39, 51, 88, 36, 19, 0, 20, 70, 93, 161, 202, 205, 248, 145, 47, 39, 104, 17, 108, 47,
+			36, 57, 65, 40, 51, 0, 21, 72, 78, 36, 81, 204, 119, 179, 77, 240, 89, 40, 51, 36, 51, 36, 108, 55, 37, 65, 0, 16, 69, 74,
+			20, 95, 29, 16, 88, 35, 107, 51, 36, 65, 108, 51, 0, 13, 68, 34, 24, 34, 60, 71, 36, 107, 50, 40, 72, 0, 12, 67, 33, 23,
+			25, 71, 39, 51, 104, 17, 35, 0, 22, 72, 29, 251, 81, 204, 119, 179, 77, 240, 35, 65, 48, 36, 51, 57, 108, 55, 37, 89, 65, 0,
+			12, 68, 29, 21, 71, 60, 36, 51, 89, 108, 72, 0, 21, 72, 9, 251, 115, 71, 52, 243, 77, 240, 108, 65, 48, 37, 51, 37, 89, 37,
+			89, 65, 0, 13, 68, 9, 180, 115, 60, 108, 83, 35, 51, 37, 72, 0, 0, 15, 68, 193, 251, 94, 40, 49, 39, 65, 48, 36, 55, 36,
+			47, 0, 14, 68, 181, 225, 240, 40, 48, 36, 55, 108, 49, 36, 47, 0, 15, 68, 133, 24, 156, 40, 107, 35, 51, 84, 35, 104, 17, 47,
+			0, 17, 69, 113, 18, 34, 129, 64, 104, 17, 39, 51, 71, 40, 50, 36, 91, 0, 13, 68, 83, 1, 219, 40, 91, 36, 49, 108, 83, 47,
+			0, 14, 68, 81, 17, 219, 40, 91, 36, 51, 108, 83, 35, 47, 0, 13, 67, 62, 36, 114, 72, 39, 51, 36, 57, 36, 12, 0, 11, 67,
+			50, 18, 128, 75, 35, 107, 35, 47, 0, 13, 68, 32, 124, 211, 40, 71, 108, 57, 36, 89, 47, 0, 0, 16, 70, 199, 52, 98, 60, 116,
+			64, 81, 37, 51, 39, 72, 108, 51, 0, 12, 67, 197, 40, 15, 81, 35, 88, 35, 50, 72, 0, 13, 68, 195, 56, 147, 192, 49, 37, 57,
+			40, 89, 49, 0, 18, 70, 193, 19, 202, 32, 116, 64, 49, 39, 51, 72, 47, 35, 71, 108, 51, 0, 17, 70, 128, 119, 243, 126, 40, 0,
+			50, 108, 65, 36, 57, 65, 40, 50, 0, 24, 73, 128, 116, 243, 138, 1, 222, 205, 55, 192, 50, 108, 89, 37, 57, 39, 50, 108, 55, 37,
+			89, 65, 0, 12, 67, 109, 68, 79, 83, 36, 91, 39, 51, 72, 0, 12, 67, 83, 8, 15, 91, 36, 49, 35, 50, 72, 0, 17, 70, 74,
+			36, 95, 60, 116, 64, 88, 40, 51, 65, 35, 72, 108, 51, 0, 11, 67, 68, 117, 15, 51, 108, 91, 36, 72, 0, 17, 70, 32, 116, 113,
+			72, 116, 64, 71, 108, 51, 81, 39, 88, 108, 51, 0, 16, 70, 29, 50, 135, 60, 120, 0, 39, 89, 47, 108, 72, 108, 50, 0, 22, 5,
+			216, 168, 46, 216, 184, 71, 35, 12, 19, 72, 10, 35, 88, 9, 88, 39, 107, 51, 0, 46, 0, 18, 69, 197, 232, 49, 62, 0, 81, 35,
+			55, 35, 50, 81, 35, 72, 35, 50, 0, 12, 67, 135, 48, 202, 107, 36, 57, 19, 35, 47, 0, 16, 68, 134, 3, 211, 200, 107, 36, 50,
+			72, 36, 89, 36, 57, 36, 0, 18, 70, 134, 3, 210, 109, 28, 192, 107, 35, 50, 72, 89, 83, 37, 51, 37, 0, 18, 70, 131, 24, 79,
+			29, 28, 192, 50, 36, 81, 35, 107, 72, 108, 51, 37, 0, 12, 67, 129, 22, 202, 50, 35, 51, 35, 83, 47, 0, 18, 69, 124, 167, 207,
+			174, 0, 65, 39, 47, 36, 65, 35, 72, 72, 36, 50, 0, 10, 67, 89, 248, 0, 88, 36, 65, 50, 0, 14, 69, 78, 39, 179, 76, 160,
+			89, 39, 55, 37, 89, 47, 0, 18, 70, 57, 230, 74, 33, 28, 192, 101, 35, 55, 35, 47, 71, 35, 51, 37, 0, 0, 11, 67, 129, 33,
+			217, 50, 36, 88, 108, 19, 0, 13, 68, 124, 120, 32, 60, 65, 108, 50, 35, 50, 72, 0, 11, 67, 109, 17, 240, 83, 36, 51, 108, 49,
+			0, 10, 67, 81, 241, 192, 91, 39, 65, 108, 0, 13, 68, 81, 236, 224, 196, 91, 36, 55, 37, 50, 81, 0, 18, 70, 72, 116, 98, 129,
+			33, 209, 88, 108, 51, 39, 50, 35, 88, 108, 51, 0, 21, 70, 49, 168, 145, 33, 168, 145, 75, 35, 104, 17, 40, 51, 71, 35, 104, 17,
+			40, 51, 0, 18, 70, 42, 34, 135, 123, 50, 145, 47, 39, 47, 108, 55, 37, 47, 36, 51, 0, 11, 67, 33, 49, 240, 71, 35, 89, 108,
+			49, 0, 12, 67, 29, 241, 192, 6, 35, 4, 65, 65, 108, 0, 9, 67, 9, 241, 192, 108, 65, 108, 0, 0, 11, 67, 181, 225, 239, 48,
+			36, 55, 108, 90, 0, 17, 70, 137, 236, 7, 131, 50, 128, 84, 39, 55, 49, 108, 50, 37, 47, 0, 19, 70, 129, 180, 199, 131, 50, 128,
+			50, 35, 83, 89, 108, 50, 37, 57, 35, 47, 0, 18, 69, 124, 129, 243, 103, 32, 65, 39, 71, 108, 57, 36, 19, 36, 57, 36, 0, 14,
+			68, 84, 247, 199, 40, 89, 35, 72, 35, 65, 108, 47, 0, 18, 70, 69, 180, 95, 205, 50, 128, 51, 36, 83, 39, 51, 65, 37, 89, 47,
+			0, 17, 70, 63, 52, 226, 130, 2, 128, 72, 37, 89, 39, 50, 36, 50, 47, 0, 18, 69, 57, 23, 225, 71, 32, 101, 35, 51, 65, 39,
+			107, 51, 36, 57, 36, 0, 14, 68, 53, 100, 71, 40, 107, 35, 88, 35, 51, 108, 47, 0, 19, 70, 50, 36, 97, 125, 52, 115, 75, 40,
+			51, 107, 35, 65, 89, 35, 51, 37, 0, 18, 70, 33, 24, 176, 68, 116, 243, 71, 39, 51, 40, 49, 51, 108, 89, 37, 0, 31, 76, 31,
+			20, 179, 76, 161, 224, 79, 49, 222, 205, 50, 128, 36, 81, 88, 37, 89, 47, 108, 50, 89, 37, 57, 108, 55, 37, 89, 47, 0, 7, 66,
+			30, 32, 40, 12, 0, 13, 68, 28, 193, 200, 40, 36, 75, 108, 71, 35, 47, 0, 8, 66, 30, 32, 40, 12, 0, 76, 0, 15, 69, 185,
+			225, 224, 204, 240, 76, 36, 55, 108, 50, 37, 72, 0, 15, 69, 185, 33, 224, 204, 240, 76, 36, 88, 108, 50, 37, 72, 0, 16, 69, 109,
+			231, 243, 131, 16, 83, 36, 55, 36, 65, 37, 50, 81, 0, 10, 67, 100, 165, 0, 35, 47, 35, 91, 0, 11, 67, 94, 213, 0, 47, 35,
+			48, 36, 91, 0, 21, 71, 68, 116, 160, 198, 19, 199, 68, 51, 108, 88, 50, 36, 81, 35, 107, 72, 108, 51, 0, 14, 69, 58, 36, 84,
+			204, 240, 101, 39, 51, 91, 37, 72, 0, 16, 69, 33, 24, 140, 68, 240, 71, 39, 51, 40, 75, 36, 51, 72, 0, 16, 69, 9, 180, 115,
+			128, 240, 108, 83, 35, 51, 37, 50, 35, 72, 0, 0, 16, 69, 194, 3, 208, 134, 0, 49, 39, 50, 72, 88, 36, 107, 50, 0, 14, 69,
+			131, 50, 145, 28, 160, 50, 37, 47, 51, 108, 47, 0, 19, 69, 125, 195, 223, 28, 160, 65, 39, 104, 17, 35, 72, 72, 35, 65, 108, 47,
+			0, 16, 69, 125, 55, 159, 30, 0, 65, 39, 89, 35, 55, 65, 108, 50, 0, 18, 70, 124, 116, 199, 186, 36, 202, 65, 108, 89, 108, 76,
+			39, 89, 36, 47, 0, 13, 68, 94, 36, 71, 32, 47, 39, 51, 6, 108, 71, 0, 16, 69, 83, 4, 115, 30, 0, 91, 39, 49, 51, 37,
+			57, 108, 50, 0, 16, 69, 49, 33, 179, 28, 160, 75, 39, 88, 19, 37, 57, 108, 47, 0, 16, 69, 42, 3, 208, 134, 0, 47, 39, 50,
+			72, 88, 36, 107, 50, 0, 18, 69, 41, 248, 51, 28, 160, 47, 35, 65, 35, 50, 50, 37, 57, 108, 47, 0, 18, 69, 32, 120, 98, 204,
+			160, 71, 108, 107, 39, 84, 37, 57, 57, 35, 47, 0, 16, 69, 8, 131, 223, 74, 0, 108, 71, 72, 35, 65, 88, 35, 50, 0, 11, 67,
+			129, 252, 192, 50, 36, 65, 37, 0, 76, 0, 19, 70, 197, 19, 224, 34, 3, 192, 81, 35, 51, 72, 35, 50, 71, 35, 50, 72, 0, 18,
+			70, 35, 51, 200, 122, 3, 192, 71, 37, 72, 71, 39, 55, 35, 50, 72, 0, 18, 70, 33, 226, 17, 206, 12, 64, 71, 39, 55, 71, 37,
+			51, 37, 50, 81, 0, 16, 70, 29, 50, 145, 206, 12, 64, 36, 89, 47, 51, 37, 50, 81, 0, 0, 11, 67, 93, 226, 0, 47, 35, 55,
+			35, 71, 0, 18, 70, 63, 20, 72, 29, 178, 128, 72, 36, 81, 35, 51, 71, 108, 83, 47, 0, 18, 70, 60, 225, 224, 204, 114, 128, 72,
+			39, 101, 108, 50, 37, 57, 108, 47, 0, 17, 70, 33, 24, 160, 83, 50, 128, 71, 36, 51, 39, 50, 91, 37, 47, 0, 12, 67, 33, 22,
+			162, 71, 39, 51, 104, 17, 40, 0, 19, 71, 31, 8, 160, 137, 252, 211, 40, 36, 49, 39, 50, 39, 65, 37, 89, 47, 0, 11, 67, 28,
+			136, 179, 35, 71, 35, 84, 37, 0, 0, 12, 67, 181, 52, 71, 48, 36, 89, 35, 51, 108, 0, 9, 66, 94, 16, 47, 108, 107, 108, 0,
+			8, 66, 42, 16, 47, 35, 107, 0, 12, 67, 40, 134, 71, 47, 35, 71, 19, 35, 50, 0, 19, 70, 32, 119, 135, 33, 232, 15, 71, 108,
+			55, 108, 71, 39, 55, 35, 50, 72, 0, 11, 67, 29, 52, 71, 39, 89, 35, 51, 108, 0, 12, 67, 28, 172, 7, 36, 47, 47, 36, 49,
+			108, 0, 9, 66, 34, 16, 71, 36, 12, 0, 76, 0, 14, 68, 198, 3, 34, 204, 81, 35, 50, 75, 35, 84, 37, 0, 15, 69, 197, 252,
+			212, 30, 0, 81, 39, 65, 37, 91, 108, 50, 0, 14, 68, 124, 210, 162, 204, 65, 39, 107, 47, 35, 84, 37, 0, 16, 69, 82, 1, 206,
+			42, 0, 91, 36, 50, 108, 101, 47, 35, 50, 0, 14, 68, 81, 50, 148, 136, 91, 39, 89, 47, 36, 91, 40, 0, 0, 14, 68, 133, 244,
+			209, 28, 107, 35, 65, 89, 39, 51, 108, 0, 16, 68, 114, 23, 17, 28, 104, 17, 35, 107, 104, 17, 35, 51, 108, 0, 11, 67, 93, 231,
+			0, 47, 36, 55, 104, 17, 0, 14, 68, 57, 88, 149, 28, 101, 39, 89, 40, 89, 35, 50, 0, 14, 68, 53, 252, 209, 28, 107, 39, 65,
+			36, 57, 51, 108, 0, 13, 68, 29, 178, 145, 28, 36, 83, 47, 36, 51, 108, 0, 0, 11, 67, 181, 18, 162, 48, 35, 51, 47, 39, 0,
+			12, 67, 133, 24, 179, 107, 36, 51, 35, 84, 37, 0, 13, 67, 105, 24, 179, 104, 17, 35, 51, 35, 84, 37, 0, 11, 67, 57, 76, 51,
+			101, 39, 91, 49, 37, 0, 12, 67, 33, 56, 179, 71, 36, 89, 40, 57, 36, 0, 0, 10, 67, 137, 54, 64, 84, 39, 89, 19, 0, 15,
+			69, 136, 120, 27, 76, 112, 84, 108, 50, 35, 83, 89, 108, 0, 13, 67, 131, 2, 161, 50, 39, 49, 6, 47, 36, 12, 0, 10, 67, 100,
+			129, 207, 36, 71, 108, 72, 0, 11, 67, 89, 241, 207, 88, 36, 65, 108, 72, 0, 11, 67, 86, 7, 192, 89, 35, 50, 35, 65, 0, 15,
+			69, 76, 212, 66, 76, 112, 89, 36, 107, 51, 108, 89, 108, 0, 11, 67, 76, 167, 192, 89, 36, 47, 35, 65, 0, 11, 67, 74, 7, 192,
+			88, 35, 50, 35, 65, 0, 13, 68, 57, 114, 7, 4, 101, 39, 47, 35, 71, 108, 0, 10, 67, 52, 167, 192, 107, 35, 47, 65, 0, 11,
+			67, 46, 7, 192, 89, 35, 50, 35, 65, 0, 11, 67, 42, 7, 192, 47, 35, 50, 35, 65, 0, 16, 69, 32, 124, 220, 68, 112, 71, 108,
+			57, 104, 17, 35, 51, 108, 0, 10, 67, 30, 7, 192, 36, 50, 39, 65, 0, 16, 69, 29, 236, 10, 68, 112, 36, 55, 36, 49, 47, 36,
+			51, 108, 0, 11, 68, 28, 213, 71, 4, 36, 107, 89, 108, 0, 14, 69, 28, 136, 153, 92, 112, 35, 71, 40, 35, 47, 108, 0, 0, 12,
+			67, 197, 52, 202, 81, 39, 89, 35, 89, 47, 0, 16, 69, 194, 28, 20, 30, 0, 49, 35, 107, 49, 36, 91, 108, 50, 0, 11, 67, 193,
+			231, 128, 49, 39, 55, 35, 55, 0, 12, 67, 128, 244, 74, 50, 39, 72, 51, 35, 47, 0, 11, 67, 127, 56, 160, 65, 37, 57, 40, 50,
+			0, 15, 69, 126, 36, 222, 206, 0, 65, 40, 89, 36, 55, 37, 50, 0, 12, 67, 125, 231, 128, 6, 65, 36, 55, 35, 55, 0, 16, 68,
+			124, 168, 155, 204, 65, 39, 47, 36, 84, 35, 83, 83, 108, 0, 12, 67, 113, 231, 128, 104, 17, 39, 55, 35, 55, 0, 14, 67, 112, 244,
+			74, 104, 17, 39, 72, 6, 51, 35, 47, 0, 12, 67, 109, 20, 202, 83, 36, 51, 36, 89, 47, 0, 10, 67, 101, 231, 128, 36, 55, 35,
+			55, 0, 12, 67, 92, 129, 206, 47, 35, 71, 71, 108, 101, 0, 11, 67, 82, 7, 128, 91, 36, 50, 36, 55, 0, 11, 67, 74, 8, 160,
+			88, 35, 50, 40, 50, 0, 14, 67, 41, 156, 224, 47, 35, 19, 35, 57, 57, 39, 50, 0, 15, 69, 29, 242, 160, 30, 0, 36, 65, 47,
+			36, 50, 108, 50, 0, 0, 11, 67, 197, 28, 64, 81, 39, 12, 51, 81, 0, 11, 67, 194, 12, 223, 49, 39, 50, 37, 65, 0, 13, 68,
+			185, 18, 176, 132, 76, 39, 51, 47, 49, 36, 0, 12, 67, 181, 228, 240, 48, 36, 55, 36, 89, 49, 0, 10, 67, 180, 116, 112, 48, 108,
+			51, 49, 0, 13, 68, 137, 20, 199, 60, 84, 36, 51, 89, 108, 72, 0, 13, 67, 129, 72, 159, 50, 35, 91, 35, 84, 35, 65, 0, 14,
+			68, 125, 195, 199, 60, 65, 36, 104, 17, 72, 108, 72, 0, 14, 67, 124, 212, 112, 65, 39, 107, 35, 51, 51, 36, 49, 0, 15, 68, 124,
+			165, 135, 60, 65, 39, 47, 47, 35, 88, 108, 72, 0, 11, 67, 124, 129, 205, 65, 39, 71, 108, 107, 0, 10, 67, 122, 3, 0, 55, 36,
+			50, 75, 0, 12, 67, 85, 24, 64, 89, 39, 51, 51, 36, 12, 0, 15, 68, 82, 24, 179, 132, 91, 35, 107, 35, 84, 37, 57, 36, 0,
+			11, 67, 70, 44, 223, 51, 35, 84, 37, 65, 0, 15, 68, 41, 72, 179, 132, 47, 35, 91, 84, 37, 57, 36, 12, 0, 15, 68, 40, 132,
+			70, 132, 47, 35, 71, 51, 35, 19, 36, 12, 0, 11, 67, 40, 116, 112, 47, 108, 51, 36, 49, 0, 13, 67, 33, 72, 159, 71, 36, 91,
+			35, 84, 35, 65, 0, 10, 67, 32, 116, 240, 71, 108, 89, 49, 0, 14, 69, 29, 18, 148, 28, 16, 36, 51, 47, 36, 91, 108, 0, 14,
+			68, 28, 248, 179, 132, 35, 72, 84, 37, 57, 36, 12, 0, 11, 67, 11, 50, 159, 108, 57, 47, 36, 65, 0, 0, 13, 68, 181, 24, 179,
+			128, 48, 35, 51, 84, 37, 50, 0, 14, 68, 131, 56, 138, 128, 50, 37, 57, 39, 47, 39, 50, 0, 12, 67, 129, 24, 175, 50, 39, 51,
+			84, 36, 90, 0, 13, 68, 126, 23, 226, 128, 65, 36, 107, 65, 40, 50, 0, 15, 67, 125, 196, 72, 65, 39, 104, 17, 35, 51, 51, 35,
+			71, 0, 13, 68, 125, 147, 34, 128, 65, 35, 19, 75, 40, 50, 0, 12, 67, 112, 136, 158, 104, 17, 35, 71, 40, 55, 0, 13, 67, 105,
+			188, 222, 104, 17, 39, 83, 36, 57, 55, 0, 13, 68, 81, 24, 179, 128, 91, 36, 51, 84, 37, 50, 0, 14, 68, 81, 17, 240, 40, 91,
+			36, 51, 108, 49, 35, 47, 0, 11, 67, 69, 56, 158, 51, 35, 89, 40, 55, 0, 12, 67, 61, 246, 128, 72, 35, 65, 35, 104, 17, 0,
+			14, 68, 53, 17, 211, 40, 107, 36, 51, 108, 89, 35, 47, 0, 13, 68, 51, 51, 98, 128, 75, 36, 57, 107, 40, 50, 0, 13, 68, 33,
+			236, 226, 128, 71, 36, 55, 57, 39, 50, 0, 12, 67, 33, 28, 222, 71, 36, 51, 36, 57, 55, 0, 13, 68, 10, 215, 162, 128, 108, 48,
+			39, 55, 39, 50, 0, 0, 12, 67, 197, 28, 225, 81, 36, 51, 57, 36, 12, 0, 11, 67, 185, 251, 161, 76, 35, 65, 76, 36, 0, 15,
+			69, 126, 17, 200, 28, 240, 65, 35, 107, 108, 71, 108, 72, 0, 18, 70, 125, 156, 224, 204, 120, 0, 65, 39, 19, 37, 50, 37, 57, 108,
+			50, 0, 17, 69, 125, 145, 226, 206, 16, 65, 39, 19, 108, 84, 37, 57, 36, 12, 0, 17, 68, 124, 168, 19, 192, 65, 39, 47, 36, 50,
+			35, 89, 89, 36, 49, 0, 12, 67, 121, 200, 161, 55, 35, 104, 17, 84, 36, 0, 9, 67, 102, 6, 192, 39, 50, 83, 0, 10, 67, 86,
+			6, 192, 89, 36, 50, 83, 0, 11, 67, 83, 56, 161, 91, 37, 84, 36, 12, 0, 11, 67, 57, 244, 97, 101, 39, 65, 51, 36, 0, 12,
+			67, 49, 232, 161, 75, 36, 55, 84, 36, 12, 0, 14, 68, 41, 200, 179, 124, 47, 35, 104, 17, 84, 37, 65, 0, 14, 67, 40, 167, 225,
+			47, 35, 47, 35, 65, 65, 36, 12, 0, 13, 68, 32, 120, 149, 108, 71, 108, 84, 35, 89, 83, 0, 11, 67, 9, 21, 33, 108, 51, 91,
+			36, 12, 0, 0, 12, 67, 198, 36, 160, 81, 35, 84, 35, 88, 50, 0, 11, 67, 194, 43, 96, 49, 39, 48, 36, 50, 0, 11, 67, 131,
+			24, 160, 50, 36, 81, 40, 50, 0, 11, 67, 127, 52, 160, 65, 37, 88, 35, 50, 0, 15, 68, 125, 193, 226, 120, 65, 39, 104, 17, 108,
+			84, 36, 55, 0, 14, 67, 125, 156, 224, 65, 39, 19, 35, 57, 57, 35, 50, 0, 11, 67, 125, 40, 160, 65, 36, 88, 39, 50, 0, 12,
+			67, 124, 244, 96, 65, 39, 72, 36, 51, 50, 0, 11, 67, 71, 56, 160, 51, 37, 57, 39, 50, 0, 11, 67, 68, 129, 202, 51, 39, 71,
+			108, 47, 0, 12, 67, 50, 1, 218, 75, 36, 50, 108, 104, 17, 0, 11, 67, 48, 136, 160, 75, 35, 71, 40, 50, 0, 11, 67, 44, 129,
+			202, 89, 39, 71, 108, 47, 0, 17, 70, 43, 56, 146, 137, 188, 192, 47, 36, 10, 39, 88, 39, 83, 37, 0, 14, 67, 40, 213, 96, 47,
+			35, 107, 35, 89, 89, 39, 50, 0, 12, 67, 34, 5, 32, 71, 39, 50, 91, 35, 50, 0, 15, 69, 33, 230, 199, 76, 160, 71, 36, 55,
+			83, 108, 89, 47, 0, 15, 69, 32, 116, 140, 76, 160, 71, 108, 88, 75, 39, 89, 47, 0, 11, 67, 29, 188, 32, 35, 83, 49, 35, 50,
+			0, 12, 68, 29, 75, 115, 120, 36, 91, 48, 37, 55, 0, 0, 14, 69, 192, 120, 15, 137, 240, 49, 108, 50, 72, 39, 65, 0, 15, 69,
+			133, 241, 202, 137, 240, 107, 36, 65, 108, 47, 39, 65, 0, 11, 67, 129, 245, 192, 50, 35, 65, 35, 47, 0, 12, 67, 125, 228, 159, 65,
+			39, 55, 88, 35, 65, 0, 16, 67, 125, 55, 27, 65, 39, 89, 35, 104, 17, 104, 17, 35, 83, 0, 13, 68, 125, 49, 217, 60, 65, 39,
+			89, 108, 36, 72, 0, 12, 67, 112, 124, 223, 104, 17, 108, 57, 36, 65, 0, 15, 68, 110, 36, 115, 132, 83, 36, 84, 51, 37, 57, 36,
+			12, 0, 15, 68, 109, 22, 209, 132, 83, 36, 51, 83, 36, 51, 36, 12, 0, 15, 68, 102, 2, 51, 132, 36, 50, 35, 71, 37, 57, 36,
+			12, 0, 13, 68, 100, 116, 115, 132, 19, 108, 51, 37, 57, 36, 0, 12, 67, 85, 180, 95, 89, 36, 83, 51, 39, 65, 0, 13, 68, 80,
+			124, 81, 60, 91, 108, 81, 36, 51, 72, 0, 12, 67, 77, 156, 223, 89, 35, 19, 57, 35, 65, 0, 16, 69, 57, 24, 148, 185, 176, 101,
+			39, 51, 39, 91, 76, 39, 83, 0, 15, 68, 42, 24, 179, 132, 47, 35, 107, 84, 37, 57, 36, 12, 0, 16, 69, 41, 193, 226, 205, 240,
+			47, 35, 104, 17, 108, 84, 37, 65, 0, 15, 68, 41, 18, 46, 132, 47, 39, 51, 39, 71, 76, 36, 12, 0, 13, 69, 31, 55, 179, 137,
+			240, 37, 55, 36, 39, 65, 0, 14, 68, 30, 4, 243, 132, 36, 50, 89, 37, 57, 36, 12, 0, 18, 70, 29, 231, 237, 204, 115, 192, 39,
+			55, 35, 65, 48, 37, 57, 108, 72, 0, 17, 70, 28, 168, 145, 204, 168, 64, 39, 47, 39, 51, 37, 47, 36, 12, 0, 0, 18, 70, 192,
+			114, 135, 122, 212, 243, 49, 108, 47, 108, 55, 36, 48, 89, 37, 0, 17, 70, 191, 56, 138, 31, 4, 243, 90, 36, 39, 47, 108, 49, 89,
+			37, 0, 10, 67, 181, 251, 64, 48, 39, 65, 48, 0, 18, 70, 130, 36, 97, 68, 116, 243, 50, 40, 51, 107, 35, 51, 108, 89, 37, 0,
+			11, 67, 128, 236, 222, 50, 35, 101, 37, 55, 0, 12, 67, 125, 181, 158, 65, 39, 83, 88, 36, 55, 0, 15, 68, 125, 100, 71, 40, 65,
+			39, 88, 36, 51, 51, 108, 47, 0, 16, 69, 125, 50, 151, 205, 224, 65, 39, 89, 47, 35, 47, 37, 55, 0, 16, 69, 124, 164, 98, 181,
+			224, 65, 36, 47, 51, 39, 48, 39, 55, 0, 17, 68, 124, 163, 85, 128, 65, 39, 47, 36, 107, 35, 89, 89, 36, 50, 0, 14, 68, 120,
+			214, 7, 40, 55, 35, 107, 35, 88, 108, 47, 0, 15, 69, 120, 118, 94, 28, 192, 55, 108, 19, 35, 55, 108, 75, 0, 10, 67, 100, 200,
+			158, 35, 75, 40, 55, 0, 20, 70, 85, 19, 206, 72, 118, 115, 89, 39, 51, 35, 72, 36, 101, 39, 88, 108, 37, 0, 14, 68, 78, 8,
+			135, 40, 89, 35, 50, 35, 84, 108, 47, 0, 14, 68, 61, 152, 135, 40, 72, 35, 19, 35, 84, 108, 47, 0, 12, 67, 61, 28, 222, 72,
+			36, 51, 36, 57, 55, 0, 16, 70, 61, 19, 162, 29, 50, 128, 72, 35, 51, 101, 108, 89, 47, 0, 16, 68, 61, 18, 51, 128, 72, 35,
+			51, 71, 36, 57, 108, 50, 36, 0, 12, 67, 49, 1, 200, 75, 35, 88, 88, 108, 71, 0, 11, 67, 43, 56, 158, 47, 37, 57, 40, 55,
+			0, 11, 67, 40, 120, 158, 47, 108, 84, 35, 55, 0, 13, 68, 34, 37, 31, 128, 71, 40, 91, 65, 35, 50, 0, 11, 67, 32, 236, 222,
+			71, 35, 101, 37, 55, 0, 12, 68, 30, 212, 243, 128, 39, 48, 89, 37, 50, 0, 12, 68, 29, 88, 135, 40, 35, 89, 84, 108, 47, 0,
+			0, 15, 69, 181, 23, 199, 206, 16, 48, 39, 51, 65, 108, 57, 36, 0, 11, 67, 129, 65, 215, 50, 36, 91, 108, 47, 0, 14, 67, 125,
+			100, 83, 65, 39, 88, 35, 51, 51, 35, 89, 0, 10, 67, 122, 44, 19, 55, 40, 49, 89, 0, 16, 69, 61, 50, 177, 68, 240, 72, 35,
+			89, 47, 81, 36, 51, 72, 0, 12, 67, 59, 49, 215, 101, 35, 57, 57, 108, 47, 0, 14, 68, 49, 17, 243, 124, 75, 35, 51, 108, 57,
+			36, 65, 0, 11, 67, 35, 60, 19, 71, 37, 49, 35, 89, 0, 16, 69, 34, 17, 200, 71, 16, 71, 35, 107, 108, 71, 35, 51, 81, 0,
+			14, 68, 33, 24, 179, 124, 71, 36, 51, 35, 84, 37, 65, 0, 16, 69, 32, 119, 159, 70, 16, 71, 36, 55, 65, 35, 51, 51, 36, 0,
+			13, 68, 28, 244, 71, 192, 36, 12, 72, 51, 108, 49, 0, 14, 68, 28, 164, 199, 100, 36, 47, 47, 36, 89, 108, 19, 0, 0, 17, 68,
+			194, 2, 145, 120, 4, 6, 49, 39, 50, 47, 39, 51, 39, 55, 0, 12, 68, 192, 124, 34, 120, 49, 108, 49, 39, 55, 0, 17, 69, 185,
+			235, 145, 29, 160, 76, 36, 55, 76, 36, 51, 108, 104, 17, 0, 19, 71, 183, 50, 147, 207, 1, 202, 136, 48, 37, 47, 89, 37, 49, 108,
+			47, 39, 0, 18, 70, 181, 225, 224, 192, 168, 160, 48, 36, 55, 108, 50, 49, 47, 39, 50, 0, 15, 69, 181, 76, 223, 30, 0, 48, 35,
+			91, 37, 65, 108, 50, 0, 11, 67, 181, 24, 128, 48, 39, 51, 39, 84, 0, 17, 70, 127, 60, 17, 137, 184, 160, 65, 37, 49, 51, 39,
+			83, 39, 50, 0, 13, 68, 126, 2, 135, 188, 65, 39, 50, 47, 108, 90, 0, 15, 68, 125, 103, 205, 120, 65, 39, 88, 65, 35, 107, 36,
+			55, 0, 12, 67, 124, 212, 82, 65, 39, 107, 51, 35, 88, 0, 14, 68, 124, 209, 219, 96, 65, 39, 107, 108, 83, 36, 88, 0, 17, 70,
+			124, 116, 112, 79, 52, 202, 65, 108, 51, 49, 89, 37, 89, 47, 0, 14, 69, 100, 129, 209, 28, 160, 36, 71, 108, 51, 108, 47, 0, 12,
+			67, 78, 212, 82, 89, 36, 48, 39, 51, 88, 0, 15, 69, 53, 44, 209, 30, 0, 107, 35, 88, 37, 51, 108, 50, 0, 19, 70, 30, 216,
+			146, 79, 56, 160, 39, 48, 39, 88, 36, 89, 37, 57, 39, 50, 0, 14, 69, 29, 65, 209, 28, 160, 36, 91, 108, 51, 108, 47, 0, 0,
+			20, 70, 194, 4, 209, 79, 56, 159, 49, 39, 50, 89, 36, 51, 89, 37, 57, 39, 65, 0, 17, 70, 192, 119, 135, 33, 28, 64, 49, 108,
+			55, 108, 71, 35, 51, 81, 0, 15, 69, 127, 50, 17, 205, 240, 65, 37, 71, 35, 51, 37, 65, 0, 13, 68, 124, 210, 135, 92, 65, 39,
+			107, 47, 108, 47, 0, 12, 67, 85, 21, 81, 89, 35, 51, 89, 35, 51, 0, 14, 68, 77, 196, 71, 92, 89, 39, 104, 17, 51, 108, 47,
+			0, 20, 71, 76, 120, 51, 43, 20, 71, 60, 89, 108, 50, 47, 37, 81, 36, 51, 108, 72, 0, 14, 69, 62, 36, 112, 205, 240, 72, 39,
+			51, 49, 37, 65, 0, 15, 69, 58, 40, 49, 69, 240, 101, 40, 50, 81, 35, 51, 65, 0, 15, 69, 32, 120, 27, 137, 0, 71, 108, 50,
+			39, 83, 40, 88, 0, 18, 70, 29, 50, 135, 63, 56, 159, 36, 89, 47, 108, 72, 37, 57, 39, 65, 0, 0, 11, 67, 131, 17, 212, 50,
+			36, 81, 108, 91, 0, 19, 70, 130, 37, 10, 48, 114, 128, 50, 36, 84, 36, 91, 47, 36, 75, 108, 47, 0, 10, 67, 128, 116, 98, 50,
+			108, 51, 39, 0, 18, 70, 127, 1, 202, 32, 114, 128, 65, 39, 49, 108, 47, 36, 71, 108, 47, 0, 21, 70, 124, 168, 155, 204, 114, 128,
+			65, 39, 47, 36, 84, 35, 83, 83, 37, 57, 108, 47, 0, 12, 67, 113, 82, 0, 104, 17, 35, 89, 35, 71, 0, 18, 70, 76, 120, 10,
+			71, 56, 158, 89, 108, 50, 47, 51, 37, 57, 39, 55, 0, 21, 71, 63, 8, 145, 29, 60, 226, 128, 72, 36, 49, 39, 51, 108, 89, 37,
+			57, 39, 50, 0, 18, 70, 29, 119, 135, 100, 114, 128, 36, 47, 47, 36, 55, 108, 19, 108, 47, 0, 0, 11, 67, 197, 17, 211, 81, 36,
+			51, 108, 89, 0, 11, 67, 193, 180, 64, 49, 39, 12, 83, 51, 0, 17, 70, 192, 116, 113, 75, 56, 0, 49, 108, 51, 81, 39, 88, 37,
+			50, 0, 17, 70, 183, 52, 98, 193, 56, 0, 48, 37, 51, 39, 49, 89, 36, 50, 0, 15, 69, 134, 209, 202, 207, 0, 107, 36, 48, 108,
+			47, 37, 49, 0, 11, 67, 129, 180, 64, 50, 35, 83, 35, 51, 0, 12, 67, 125, 180, 64, 65, 35, 83, 35, 51, 51, 0, 14, 68, 125,
+			49, 219, 68, 65, 39, 89, 108, 83, 36, 51, 0, 10, 67, 98, 20, 64, 88, 39, 107, 51, 0, 10, 67, 53, 21, 64, 107, 36, 51, 89,
+			0, 10, 67, 30, 20, 64, 35, 107, 35, 51, 0, 12, 68, 28, 231, 135, 84, 36, 101, 55, 108, 89, 0, 8, 65, 100, 6, 36, 57, 50,
+			0, 0, 16, 69, 197, 66, 159, 69, 32, 81, 35, 91, 47, 65, 35, 51, 88, 0, 19, 70, 193, 228, 202, 70, 39, 128, 49, 39, 55, 36,
+			89, 47, 36, 51, 39, 55, 0, 23, 72, 181, 24, 138, 138, 215, 135, 76, 160, 48, 39, 51, 39, 47, 39, 48, 36, 55, 108, 89, 47, 0,
+			11, 67, 131, 49, 210, 50, 37, 57, 108, 88, 0, 10, 67, 128, 216, 128, 50, 35, 107, 84, 0, 18, 69, 125, 50, 8, 30, 0, 65, 39,
+			89, 35, 71, 71, 36, 71, 108, 50, 0, 13, 67, 105, 241, 210, 104, 17, 35, 65, 65, 108, 88, 0, 14, 68, 93, 28, 220, 204, 47, 35,
+			51, 37, 104, 17, 37, 0, 20, 70, 43, 56, 145, 205, 60, 224, 47, 36, 10, 39, 51, 37, 89, 37, 57, 108, 50, 0, 20, 70, 40, 104,
+			145, 205, 60, 224, 47, 36, 19, 39, 51, 37, 89, 37, 57, 35, 50, 0, 18, 69, 35, 53, 138, 206, 0, 71, 36, 57, 88, 35, 47, 36,
+			57, 108, 50, 0, 16, 69, 35, 49, 223, 69, 32, 71, 37, 57, 108, 65, 39, 51, 88, 0, 13, 68, 35, 2, 135, 80, 71, 35, 49, 47,
+			108, 91, 0, 13, 68, 33, 74, 199, 80, 71, 35, 91, 91, 108, 91, 0, 20, 71, 32, 116, 98, 34, 3, 243, 120, 71, 108, 51, 39, 71,
+			35, 50, 72, 37, 55, 0, 21, 72, 30, 216, 145, 42, 40, 51, 76, 160, 39, 48, 39, 51, 47, 40, 50, 37, 89, 47, 0, 19, 70, 29,
+			60, 32, 61, 24, 160, 36, 89, 49, 35, 50, 72, 35, 51, 40, 50, 0, 12, 68, 29, 24, 71, 80, 36, 51, 107, 108, 91, 0, 0, 18,
+			70, 198, 3, 7, 128, 252, 223, 81, 39, 50, 75, 108, 50, 72, 37, 65, 0, 12, 67, 195, 54, 209, 49, 36, 57, 83, 35, 51, 0, 12,
+			67, 193, 177, 209, 49, 39, 83, 83, 108, 51, 0, 16, 69, 137, 236, 217, 85, 16, 84, 35, 55, 37, 19, 35, 89, 51, 0, 11, 67, 131,
+			17, 209, 50, 36, 81, 108, 51, 0, 11, 67, 128, 177, 209, 50, 36, 89, 108, 51, 0, 11, 67, 125, 243, 192, 65, 35, 65, 35, 72, 0,
+			15, 68, 125, 84, 71, 148, 65, 39, 89, 36, 51, 51, 35, 50, 0, 13, 67, 114, 17, 209, 104, 17, 35, 107, 107, 108, 51, 0, 12, 67,
+			104, 129, 209, 104, 17, 39, 71, 108, 51, 0, 10, 67, 103, 49, 209, 35, 57, 108, 51, 0, 11, 67, 95, 49, 209, 47, 35, 57, 108, 51,
+			0, 12, 67, 79, 49, 209, 89, 35, 57, 57, 108, 51, 0, 11, 67, 74, 17, 209, 88, 36, 107, 108, 51, 0, 11, 67, 61, 225, 209, 72,
+			39, 55, 108, 51, 0, 13, 68, 30, 33, 211, 92, 35, 84, 108, 89, 36, 47, 0, 12, 68, 29, 236, 199, 76, 36, 55, 57, 108, 89, 0,
+			18, 70, 29, 59, 81, 206, 8, 155, 36, 89, 48, 36, 51, 37, 50, 39, 83, 0, 14, 68, 29, 38, 209, 92, 35, 88, 83, 35, 51, 47,
+			36, 0, 12, 68, 28, 212, 199, 76, 36, 107, 89, 108, 89, 0, 0, 18, 70, 182, 36, 83, 133, 17, 200, 48, 40, 51, 89, 39, 107, 51,
+			108, 71, 0, 14, 67, 124, 167, 51, 65, 39, 47, 47, 35, 104, 17, 37, 0, 15, 69, 109, 24, 173, 29, 64, 83, 39, 51, 40, 48, 108,
+			91, 0, 11, 67, 57, 114, 128, 101, 35, 47, 35, 47, 0, 21, 71, 41, 50, 162, 76, 164, 98, 128, 47, 36, 89, 47, 39, 89, 47, 36,
+			51, 39, 50, 0, 19, 70, 32, 252, 224, 137, 60, 222, 71, 36, 72, 37, 50, 84, 35, 89, 37, 55, 0, 0, 13, 68, 193, 66, 135, 68,
+			49, 39, 91, 47, 108, 51, 0, 21, 71, 181, 232, 138, 138, 12, 226, 124, 48, 39, 55, 39, 47, 39, 50, 37, 57, 39, 65, 0, 18, 70,
+			109, 17, 210, 124, 120, 0, 83, 35, 51, 108, 88, 35, 65, 108, 50, 0, 10, 67, 101, 241, 207, 36, 65, 108, 72, 0, 12, 67, 83, 49,
+			207, 91, 35, 57, 57, 108, 72, 0, 13, 68, 74, 24, 135, 68, 88, 36, 107, 84, 108, 51, 0, 12, 68, 63, 56, 135, 68, 72, 37, 84,
+			108, 51, 0, 13, 68, 61, 72, 135, 68, 72, 39, 91, 84, 108, 51, 0, 18, 70, 42, 20, 71, 129, 52, 64, 47, 36, 107, 51, 108, 50,
+			89, 35, 51, 0, 21, 71, 33, 225, 199, 129, 197, 199, 100, 71, 36, 55, 108, 36, 50, 104, 17, 36, 47, 108, 0, 15, 69, 33, 17, 211,
+			29, 48, 71, 35, 51, 35, 89, 108, 89, 0, 12, 68, 32, 116, 135, 68, 71, 108, 88, 108, 51, 0, 17, 71, 30, 39, 162, 29, 230, 82,
+			124, 39, 55, 39, 55, 35, 88, 65, 0, 16, 70, 30, 3, 243, 80, 120, 0, 35, 50, 72, 37, 91, 108, 50, 0, 12, 68, 29, 180, 135,
+			68, 35, 83, 88, 108, 51, 0, 12, 68, 29, 50, 135, 68, 36, 89, 47, 108, 51, 0, 18, 70, 8, 165, 27, 80, 120, 0, 108, 47, 35,
+			91, 83, 36, 91, 108, 50, 0, 0, 13, 68, 195, 56, 138, 136, 49, 37, 57, 39, 47, 39, 0, 22, 72, 193, 18, 34, 135, 51, 209, 28,
+			160, 49, 35, 51, 71, 39, 107, 37, 72, 51, 108, 47, 0, 14, 68, 134, 33, 240, 80, 107, 35, 84, 108, 49, 36, 91, 0, 15, 68, 125,
+			49, 226, 204, 65, 39, 89, 108, 84, 37, 57, 36, 0, 14, 68, 125, 17, 240, 80, 65, 35, 51, 108, 49, 36, 91, 0, 16, 70, 124, 117,
+			51, 129, 24, 128, 65, 108, 91, 37, 50, 51, 39, 0, 17, 69, 63, 20, 113, 82, 0, 72, 36, 81, 35, 51, 81, 39, 91, 50, 0, 12,
+			67, 55, 52, 74, 107, 36, 57, 51, 35, 47, 0, 10, 67, 31, 52, 202, 37, 12, 89, 47, 0, 15, 69, 28, 170, 206, 29, 32, 36, 47,
+			47, 36, 101, 108, 88, 0, 12, 67, 28, 132, 74, 36, 12, 71, 51, 35, 47, 0, 0, 16, 69, 133, 243, 34, 29, 16, 107, 35, 65, 75,
+			35, 84, 108, 51, 0, 16, 69, 127, 60, 83, 29, 16, 65, 36, 57, 81, 39, 89, 108, 51, 0, 16, 69, 125, 50, 148, 29, 16, 65, 39,
+			89, 47, 35, 91, 108, 51, 0, 16, 69, 125, 50, 140, 29, 16, 65, 39, 89, 47, 35, 75, 108, 51, 0, 10, 67, 125, 28, 64, 65, 35,
+			51, 81, 0, 13, 68, 109, 20, 135, 60, 83, 35, 51, 88, 108, 72, 0, 15, 69, 77, 24, 176, 29, 16, 89, 35, 51, 39, 49, 108, 51,
+			0, 10, 67, 63, 52, 240, 72, 37, 89, 49, 0, 23, 72, 32, 119, 17, 29, 230, 94, 137, 240, 71, 108, 104, 17, 36, 51, 39, 55, 39,
+			55, 40, 65, 0, 16, 69, 29, 194, 143, 29, 16, 36, 104, 17, 47, 36, 72, 108, 51, 0, 12, 68, 29, 147, 199, 60, 35, 19, 72, 108,
+			72, 0, 14, 69, 29, 76, 8, 29, 16, 35, 91, 49, 71, 108, 51, 0, 15, 69, 29, 54, 200, 29, 16, 35, 89, 35, 83, 71, 108, 51,
+			0, 0, 15, 69, 194, 3, 48, 30, 32, 49, 39, 50, 75, 49, 108, 84, 0, 17, 70, 181, 49, 224, 60, 116, 128, 48, 35, 89, 35, 50,
+			72, 108, 88, 0, 18, 70, 133, 178, 179, 71, 5, 0, 107, 35, 83, 47, 37, 51, 49, 36, 91, 0, 16, 69, 124, 164, 199, 139, 48, 65,
+			39, 47, 36, 89, 108, 84, 37, 0, 15, 68, 112, 241, 211, 40, 104, 17, 36, 72, 108, 89, 35, 47, 0, 10, 67, 100, 194, 0, 35, 75,
+			35, 71, 0, 16, 69, 78, 12, 91, 69, 64, 89, 35, 50, 81, 83, 35, 51, 91, 0, 13, 68, 77, 236, 211, 40, 89, 39, 55, 89, 37,
+			47, 0, 14, 68, 71, 49, 211, 40, 51, 37, 57, 108, 89, 35, 47, 0, 15, 67, 68, 252, 242, 51, 35, 72, 72, 37, 57, 36, 57, 36,
+			0, 18, 70, 61, 50, 162, 68, 114, 179, 72, 35, 89, 47, 40, 51, 108, 47, 37, 0, 19, 70, 60, 120, 20, 50, 44, 243, 72, 108, 50,
+			36, 91, 6, 75, 40, 37, 12, 0, 14, 68, 56, 129, 211, 40, 101, 36, 71, 108, 89, 35, 47, 0, 17, 70, 33, 17, 219, 68, 116, 128,
+			71, 35, 51, 35, 83, 51, 108, 88, 0, 19, 70, 33, 17, 207, 71, 5, 0, 71, 35, 51, 108, 72, 35, 51, 49, 39, 91, 0, 19, 70,
+			9, 193, 224, 32, 114, 179, 108, 104, 17, 108, 50, 35, 71, 108, 47, 37, 0, 12, 67, 9, 21, 50, 108, 51, 91, 36, 57, 36, 0, 0,
+			19, 70, 61, 71, 224, 40, 120, 0, 72, 39, 91, 65, 35, 50, 36, 47, 108, 50, 0, 15, 69, 56, 120, 34, 28, 240, 101, 108, 50, 36,
+			84, 108, 72, 0, 15, 69, 30, 4, 207, 28, 240, 36, 50, 89, 36, 72, 108, 72, 0, 15, 69, 29, 242, 143, 28, 240, 36, 65, 47, 36,
+			72, 108, 72, 0, 17, 70, 29, 18, 148, 40, 116, 64, 35, 51, 47, 36, 91, 47, 108, 51, 0, 8, 65, 108, 6, 83, 36, 12, 0, 0,
+			18, 70, 133, 252, 224, 198, 44, 192, 107, 36, 65, 37, 50, 81, 84, 36, 57, 0, 12, 67, 131, 49, 202, 50, 37, 57, 57, 108, 47, 0,
+			14, 68, 124, 225, 215, 32, 65, 39, 101, 108, 47, 35, 71, 0, 11, 67, 123, 8, 0, 55, 108, 49, 36, 50, 0, 12, 67, 109, 20, 206,
+			83, 35, 51, 89, 35, 101, 0, 13, 67, 105, 225, 202, 104, 17, 35, 55, 55, 108, 47, 0, 18, 70, 49, 50, 140, 139, 60, 192, 75, 39,
+			89, 47, 39, 75, 40, 37, 12, 0, 14, 69, 32, 116, 79, 30, 0, 71, 108, 51, 72, 108, 50, 0, 12, 68, 28, 228, 71, 48, 36, 101,
+			51, 108, 75, 0, 20, 71, 9, 55, 199, 128, 228, 71, 80, 108, 89, 65, 108, 50, 101, 35, 51, 108, 91, 0, 0, 14, 68, 133, 178, 149,
+			60, 107, 35, 83, 47, 89, 35, 72, 0, 14, 68, 129, 252, 209, 60, 50, 35, 65, 37, 51, 35, 72, 0, 10, 67, 126, 1, 192, 65, 39,
+			50, 108, 0, 18, 70, 109, 24, 160, 132, 115, 192, 83, 39, 51, 40, 50, 35, 107, 108, 72, 0, 18, 70, 76, 168, 135, 131, 49, 209, 89,
+			39, 47, 84, 108, 50, 57, 108, 51, 0, 0, 15, 68, 129, 183, 7, 40, 50, 35, 83, 35, 104, 17, 108, 47, 0, 12, 67, 129, 81, 200,
+			50, 35, 89, 89, 108, 71, 0, 13, 67, 128, 216, 178, 50, 35, 107, 84, 36, 57, 36, 0, 14, 68, 79, 4, 71, 40, 89, 35, 49, 35,
+			51, 108, 47, 0, 12, 68, 78, 40, 7, 40, 89, 39, 50, 108, 47, 0, 14, 68, 71, 6, 71, 40, 51, 35, 49, 35, 19, 108, 47, 0,
+			13, 67, 69, 66, 178, 51, 36, 91, 47, 36, 57, 36, 0, 11, 67, 57, 65, 200, 101, 36, 91, 108, 71, 0, 12, 67, 53, 49, 200, 6,
+			107, 36, 89, 108, 71, 0, 14, 68, 53, 28, 7, 40, 107, 35, 51, 35, 49, 108, 47, 0, 14, 68, 40, 134, 71, 40, 47, 35, 71, 35,
+			19, 108, 47, 0, 15, 67, 33, 204, 242, 71, 35, 104, 17, 37, 57, 36, 57, 36, 0, 18, 70, 33, 68, 79, 137, 50, 128, 71, 35, 91,
+			35, 51, 72, 40, 89, 47, 0, 19, 70, 33, 24, 160, 41, 17, 226, 71, 39, 51, 40, 50, 47, 35, 51, 108, 84, 0, 18, 71, 31, 56,
+			135, 130, 40, 179, 184, 37, 84, 108, 50, 39, 84, 37, 76, 0, 21, 72, 29, 60, 207, 79, 50, 145, 207, 0, 35, 89, 37, 72, 89, 37,
+			47, 51, 37, 49, 0, 0, 11, 67, 137, 226, 135, 84, 39, 55, 47, 108, 0, 12, 67, 133, 236, 199, 107, 36, 55, 37, 57, 108, 0, 13,
+			67, 126, 28, 199, 65, 39, 107, 35, 57, 57, 108, 0, 11, 67, 122, 21, 0, 55, 36, 107, 35, 91, 0, 11, 67, 69, 56, 135, 51, 39,
+			89, 84, 108, 0, 11, 67, 62, 12, 199, 72, 39, 50, 57, 108, 0, 21, 71, 61, 23, 199, 129, 243, 199, 68, 72, 35, 51, 65, 108, 50,
+			65, 35, 72, 108, 51, 0, 19, 71, 42, 34, 135, 123, 50, 135, 68, 47, 39, 47, 108, 55, 37, 47, 108, 51, 0, 11, 67, 33, 27, 71,
+			71, 35, 51, 48, 108, 0, 20, 71, 30, 3, 226, 135, 20, 199, 68, 35, 50, 72, 40, 107, 81, 39, 89, 108, 51, 0, 0, 14, 69, 131,
+			53, 49, 30, 0, 50, 37, 91, 81, 108, 50, 0, 11, 67, 105, 40, 128, 104, 17, 35, 88, 84, 0, 15, 69, 35, 59, 71, 76, 224, 71,
+			37, 48, 108, 89, 39, 101, 0, 12, 68, 29, 149, 71, 32, 35, 19, 89, 108, 71, 0, 23, 73, 29, 60, 7, 128, 252, 224, 30, 44, 192,
+			36, 89, 49, 108, 50, 72, 37, 50, 108, 84, 37, 0, 15, 69, 29, 50, 155, 30, 0, 36, 89, 47, 36, 83, 108, 50, 0, 0, 11, 67,
+			121, 35, 0, 55, 35, 88, 36, 75, 0, 10, 67, 121, 1, 192, 55, 36, 88, 108, 0, 13, 68, 35, 56, 34, 28, 71, 37, 50, 35, 84,
+			108, 0, 13, 68, 29, 50, 162, 28, 39, 89, 47, 39, 84, 108, 0, 12, 68, 28, 161, 226, 28, 39, 47, 108, 84, 108, 0, 0, 12, 67,
+			192, 204, 51, 49, 35, 75, 35, 49, 37, 0, 12, 67, 129, 24, 179, 50, 36, 51, 35, 84, 37, 0, 11, 67, 128, 216, 179, 50, 35, 107,
+			84, 37, 0, 12, 67, 128, 136, 179, 50, 35, 71, 35, 84, 37, 0, 16, 69, 125, 50, 151, 28, 128, 65, 39, 89, 47, 35, 47, 108, 71,
+			0, 16, 69, 125, 50, 140, 28, 128, 65, 39, 89, 47, 35, 75, 108, 71, 0, 12, 67, 125, 24, 179, 65, 35, 51, 35, 84, 37, 0, 18,
+			70, 125, 1, 240, 68, 114, 128, 65, 39, 88, 108, 49, 36, 51, 108, 47, 0, 18, 70, 124, 225, 200, 68, 114, 128, 65, 39, 101, 108, 71,
+			36, 51, 108, 47, 0, 20, 71, 122, 44, 34, 181, 225, 211, 40, 55, 39, 49, 39, 48, 36, 55, 108, 89, 47, 0, 22, 72, 108, 168, 143,
+			206, 1, 223, 207, 0, 83, 39, 47, 39, 72, 37, 50, 108, 65, 37, 49, 0, 12, 67, 101, 194, 0, 35, 12, 104, 17, 35, 71, 0, 20,
+			71, 78, 40, 34, 122, 252, 211, 40, 89, 39, 50, 39, 55, 39, 90, 37, 89, 47, 0, 16, 69, 32, 247, 153, 28, 128, 71, 35, 72, 55,
+			39, 19, 108, 71, 0, 16, 69, 32, 243, 83, 28, 128, 71, 35, 72, 107, 36, 89, 108, 71, 0, 15, 69, 29, 226, 161, 28, 128, 36, 55,
+			47, 36, 107, 108, 71, 0, 0, 14, 67, 125, 84, 71, 65, 39, 89, 36, 51, 51, 35, 50, 0, 11, 67, 74, 20, 71, 88, 35, 107, 51,
+			108, 0, 17, 69, 32, 245, 32, 136, 112, 71, 35, 72, 91, 36, 50, 35, 84, 108, 0, 17, 69, 29, 87, 179, 40, 112, 35, 89, 55, 37,
+			57, 35, 47, 35, 50, 0, 14, 69, 29, 50, 162, 180, 112, 36, 89, 47, 40, 48, 108, 0, 10, 67, 28, 220, 199, 36, 107, 57, 108, 0,
+			0, 14, 68, 193, 236, 226, 204, 49, 39, 55, 57, 35, 84, 37, 0, 10, 67, 132, 116, 109, 107, 108, 51, 48, 0, 15, 69, 108, 168, 148,
+			30, 208, 83, 39, 47, 39, 91, 108, 48, 0, 11, 67, 82, 8, 128, 91, 36, 50, 39, 12, 0, 8, 66, 68, 224, 51, 39, 101, 0, 0,
+			12, 67, 197, 232, 64, 81, 35, 55, 55, 36, 12, 0, 11, 67, 194, 3, 192, 49, 39, 50, 35, 72, 0, 12, 67, 193, 232, 64, 49, 35,
+			55, 55, 36, 12, 0, 12, 67, 185, 232, 64, 76, 36, 55, 55, 36, 12, 0, 12, 67, 181, 232, 64, 48, 36, 55, 55, 36, 12, 0, 10,
+			67, 138, 3, 192, 84, 35, 50, 72, 0, 10, 67, 134, 3, 192, 107, 36, 50, 72, 0, 12, 67, 121, 232, 64, 55, 36, 55, 55, 108, 107,
+			0, 13, 67, 113, 232, 64, 104, 17, 39, 55, 55, 36, 12, 0, 14, 67, 81, 200, 64, 91, 35, 104, 17, 104, 17, 36, 12, 0, 14, 67,
+			53, 200, 64, 107, 39, 104, 17, 104, 17, 36, 12, 0, 11, 67, 45, 200, 64, 89, 36, 104, 17, 36, 0, 14, 67, 41, 200, 64, 47, 35,
+			104, 17, 104, 17, 36, 12, 0, 13, 67, 33, 200, 64, 71, 39, 104, 17, 104, 17, 36, 0, 14, 68, 32, 243, 226, 28, 71, 35, 72, 72,
+			35, 84, 108, 0, 14, 68, 30, 7, 22, 28, 36, 50, 104, 17, 36, 88, 108, 0, 11, 67, 194, 3, 192, 49, 35, 50, 72, 0, 48, 12,
+			67, 194, 3, 192, 49, 39, 50, 35, 72, 0, 46, 23, 5, 217, 135, 46, 217, 130, 107, 36, 75, 51, 37, 57, 36, 9, 104, 35, 65, 35,
+			51, 37, 0, 46, 0, 12, 67, 125, 60, 226, 65, 39, 89, 37, 57, 39, 0, 12, 67, 108, 248, 179, 83, 35, 72, 35, 84, 37, 0, 20,
+			70, 86, 36, 74, 53, 49, 200, 89, 40, 51, 35, 47, 10, 107, 36, 89, 108, 71, 0, 16, 69, 78, 1, 209, 206, 32, 89, 36, 50, 108,
+			51, 37, 57, 39, 0, 10, 67, 75, 59, 98, 88, 37, 48, 39, 0, 13, 67, 61, 27, 115, 72, 35, 51, 48, 36, 57, 36, 0, 11, 67,
+			61, 18, 128, 72, 35, 51, 35, 47, 0, 10, 67, 57, 66, 128, 101, 36, 91, 47, 0, 0, 17, 69, 193, 231, 200, 204, 112, 49, 39, 55,
+			39, 65, 71, 37, 57, 108, 0, 11, 67, 192, 136, 143, 49, 35, 71, 40, 72, 0, 11, 67, 187, 12, 207, 76, 36, 49, 37, 72, 0, 11,
+			67, 126, 7, 192, 65, 35, 50, 35, 65, 0, 19, 69, 125, 50, 159, 68, 112, 65, 39, 89, 47, 35, 65, 36, 51, 51, 35, 50, 0, 16,
+			69, 123, 50, 17, 204, 112, 55, 37, 71, 36, 51, 37, 57, 108, 0, 11, 67, 77, 188, 207, 89, 36, 83, 37, 72, 0, 12, 67, 69, 66,
+			161, 51, 36, 91, 47, 36, 12, 0, 15, 69, 50, 36, 76, 204, 112, 75, 39, 51, 75, 37, 57, 108, 0, 11, 67, 42, 12, 207, 47, 35,
+			50, 37, 72, 0, 42, 79, 33, 55, 199, 121, 232, 71, 121, 19, 95, 128, 119, 145, 55, 55, 192, 71, 36, 89, 65, 36, 55, 55, 108, 107,
+			36, 51, 51, 35, 107, 65, 108, 50, 36, 51, 51, 35, 107, 37, 65, 0, 13, 69, 30, 36, 135, 192, 112, 39, 88, 108, 49, 108, 0, 15,
+			69, 29, 50, 141, 72, 112, 36, 89, 47, 36, 107, 88, 108, 0, 16, 69, 28, 231, 135, 112, 112, 35, 101, 55, 108, 104, 17, 35, 50, 0,
+			10, 67, 28, 167, 192, 35, 47, 39, 65, 0, 0, 11, 67, 192, 168, 160, 49, 35, 47, 40, 50, 0, 14, 68, 183, 52, 98, 204, 48, 36,
+			57, 51, 35, 84, 37, 0, 12, 67, 137, 54, 74, 84, 39, 89, 19, 35, 47, 0, 12, 67, 132, 196, 74, 107, 36, 75, 51, 35, 47, 0,
+			12, 67, 129, 84, 74, 50, 39, 89, 51, 35, 47, 0, 13, 68, 127, 52, 98, 204, 65, 37, 51, 35, 84, 37, 0, 14, 68, 126, 2, 155,
+			204, 65, 39, 50, 47, 35, 83, 37, 0, 11, 67, 125, 88, 160, 65, 35, 89, 40, 50, 0, 13, 68, 124, 120, 98, 204, 65, 108, 107, 39,
+			84, 37, 0, 12, 67, 77, 22, 74, 89, 39, 51, 19, 35, 47, 0, 13, 68, 42, 44, 51, 136, 47, 39, 49, 37, 57, 39, 0, 15, 69,
+			10, 11, 160, 30, 0, 108, 50, 76, 36, 50, 108, 50, 0, 0, 11, 67, 197, 28, 223, 81, 36, 51, 37, 65, 0, 13, 68, 181, 20, 243,
+			60, 48, 39, 51, 89, 37, 72, 0, 14, 68, 130, 7, 226, 60, 50, 35, 50, 36, 65, 40, 72, 0, 10, 67, 78, 36, 240, 89, 40, 89,
+			49, 0, 10, 67, 71, 52, 240, 51, 37, 89, 49, 0, 10, 67, 69, 40, 64, 51, 35, 88, 36, 0, 24, 73, 48, 252, 207, 29, 225, 205,
+			60, 114, 192, 75, 35, 72, 37, 72, 39, 55, 36, 107, 72, 108, 89, 0, 14, 67, 41, 88, 155, 47, 35, 89, 35, 84, 84, 39, 83, 0,
+			15, 68, 41, 56, 179, 132, 47, 35, 89, 84, 37, 57, 36, 12, 0, 11, 67, 33, 40, 64, 71, 36, 88, 36, 107, 0, 11, 67, 29, 59,
+			95, 36, 89, 48, 35, 65, 0, 0, 10, 67, 194, 44, 222, 49, 39, 57, 55, 0, 10, 67, 194, 2, 128, 49, 39, 50, 47, 0, 13, 68,
+			180, 114, 162, 112, 48, 108, 47, 39, 104, 17, 0, 13, 68, 127, 55, 226, 128, 65, 36, 57, 65, 40, 50, 0, 11, 67, 126, 232, 158, 65,
+			39, 76, 40, 55, 0, 14, 67, 125, 148, 8, 65, 39, 19, 35, 88, 88, 35, 71, 0, 15, 68, 125, 145, 212, 112, 65, 39, 19, 108, 91,
+			36, 104, 17, 0, 13, 68, 125, 103, 226, 128, 65, 35, 88, 65, 40, 50, 0, 14, 68, 124, 118, 226, 112, 65, 108, 83, 39, 12, 104, 17,
+			0, 9, 67, 122, 34, 0, 55, 39, 71, 0, 12, 68, 108, 124, 98, 40, 83, 108, 81, 39, 47, 0, 14, 68, 105, 231, 226, 128, 104, 17,
+			36, 55, 65, 40, 50, 0, 15, 69, 83, 1, 209, 187, 48, 91, 36, 49, 108, 51, 76, 37, 0, 11, 67, 81, 156, 200, 91, 39, 35, 57,
+			71, 0, 11, 67, 75, 28, 222, 88, 36, 81, 37, 55, 0, 14, 68, 74, 35, 51, 128, 88, 39, 12, 75, 36, 57, 50, 0, 15, 69, 70,
+			35, 98, 91, 48, 51, 40, 107, 39, 12, 88, 37, 0, 11, 67, 57, 248, 158, 101, 35, 65, 40, 55, 0, 14, 68, 53, 19, 226, 128, 107,
+			36, 51, 72, 39, 84, 50, 0, 14, 68, 40, 129, 243, 128, 47, 35, 71, 108, 57, 39, 50, 0, 13, 69, 35, 52, 199, 206, 32, 71, 37,
+			89, 108, 39, 0, 13, 68, 34, 19, 243, 128, 71, 36, 107, 72, 37, 50, 0, 13, 68, 34, 4, 134, 128, 71, 36, 50, 88, 37, 50, 0,
+			11, 67, 32, 168, 158, 71, 35, 47, 40, 55, 0, 12, 67, 9, 28, 222, 108, 51, 37, 57, 36, 55, 0, 0, 17, 70, 130, 44, 51, 80,
+			120, 0, 50, 39, 12, 49, 37, 91, 108, 50, 0, 13, 67, 129, 60, 225, 50, 36, 89, 37, 57, 36, 12, 0, 11, 67, 126, 36, 79, 65,
+			39, 51, 36, 72, 0, 12, 67, 125, 180, 79, 65, 39, 83, 51, 35, 72, 0, 17, 68, 124, 162, 17, 192, 65, 39, 47, 36, 71, 35, 51,
+			51, 36, 49, 0, 13, 67, 113, 232, 161, 104, 17, 39, 55, 84, 36, 12, 0, 16, 69, 109, 23, 199, 204, 240, 83, 35, 51, 65, 108, 57,
+			35, 72, 0, 14, 68, 105, 100, 98, 108, 104, 17, 39, 88, 51, 40, 83, 0, 13, 67, 82, 8, 161, 91, 36, 50, 35, 84, 36, 12, 0,
+			13, 67, 61, 21, 79, 72, 35, 51, 6, 89, 35, 72, 0, 11, 67, 57, 187, 161, 101, 35, 83, 76, 36, 0, 0, 11, 67, 187, 24, 160,
+			76, 36, 81, 40, 50, 0, 15, 69, 182, 36, 84, 204, 224, 48, 40, 51, 91, 36, 57, 101, 0, 13, 68, 133, 7, 162, 120, 107, 39, 88,
+			55, 40, 55, 0, 14, 67, 128, 136, 138, 50, 35, 71, 39, 84, 84, 35, 47, 0, 11, 67, 123, 24, 0, 55, 35, 81, 35, 50, 0, 19,
+			71, 122, 44, 34, 126, 34, 179, 136, 55, 39, 49, 39, 65, 39, 47, 37, 84, 0, 15, 68, 120, 119, 213, 32, 55, 108, 65, 35, 89, 89,
+			35, 71, 0, 12, 67, 85, 241, 218, 89, 39, 65, 108, 104, 17, 0, 13, 67, 85, 188, 224, 89, 36, 83, 83, 36, 57, 50, 0, 11, 67,
+			81, 167, 128, 91, 39, 104, 17, 55, 0, 12, 67, 77, 241, 218, 89, 39, 65, 108, 104, 17, 0, 12, 67, 70, 36, 160, 51, 39, 12, 88,
+			35, 50, 0, 12, 67, 61, 167, 128, 72, 35, 104, 17, 35, 55, 0, 12, 67, 57, 236, 220, 101, 35, 55, 37, 104, 17, 0, 11, 67, 34,
+			37, 32, 71, 40, 91, 35, 50, 0, 17, 70, 34, 20, 145, 29, 156, 192, 71, 36, 107, 88, 36, 51, 108, 37, 0, 12, 67, 33, 167, 128,
+			71, 35, 104, 17, 35, 55, 0, 15, 69, 32, 252, 98, 80, 160, 71, 35, 72, 81, 40, 91, 47, 0, 10, 67, 30, 44, 224, 36, 84, 37,
+			50, 0, 10, 67, 30, 36, 160, 39, 88, 39, 50, 0, 11, 67, 9, 167, 128, 108, 104, 17, 39, 55, 0, 0, 14, 68, 197, 225, 243, 132,
+			81, 36, 55, 108, 57, 36, 12, 0, 14, 68, 133, 19, 226, 60, 107, 36, 51, 39, 72, 39, 72, 0, 11, 67, 128, 252, 223, 50, 35, 72,
+			37, 65, 0, 10, 67, 120, 124, 219, 55, 108, 57, 83, 0, 13, 68, 120, 119, 209, 60, 55, 108, 65, 36, 51, 72, 0, 11, 67, 120, 116,
+			159, 55, 108, 88, 36, 65, 0, 14, 68, 110, 36, 179, 132, 83, 40, 88, 37, 57, 36, 12, 0, 11, 67, 101, 236, 240, 35, 55, 36, 57,
+			49, 0, 10, 67, 89, 20, 192, 88, 36, 51, 89, 0, 16, 70, 72, 115, 226, 70, 35, 192, 88, 108, 72, 39, 51, 40, 72, 0, 17, 70,
+			62, 40, 19, 43, 51, 192, 72, 40, 50, 36, 89, 47, 37, 72, 0, 14, 68, 61, 242, 17, 196, 72, 39, 65, 71, 35, 51, 81, 0, 10,
+			67, 57, 20, 192, 101, 36, 51, 89, 0, 11, 67, 53, 24, 159, 107, 35, 51, 40, 65, 0, 11, 67, 53, 20, 192, 107, 35, 51, 35, 89,
+			0, 13, 68, 42, 2, 51, 132, 47, 35, 50, 71, 37, 107, 0, 14, 68, 41, 28, 51, 60, 47, 36, 51, 36, 49, 37, 72, 0, 10, 67,
+			29, 20, 192, 35, 51, 35, 89, 0, 0, 10, 67, 197, 20, 128, 81, 39, 51, 88, 0, 12, 68, 196, 119, 162, 128, 81, 108, 55, 39, 50,
+			0, 10, 67, 181, 20, 128, 48, 39, 51, 88, 0, 13, 68, 137, 23, 226, 40, 84, 36, 51, 65, 40, 47, 0, 12, 67, 125, 149, 158, 65,
+			39, 19, 88, 35, 55, 0, 13, 68, 109, 17, 162, 128, 83, 36, 51, 19, 39, 50, 0, 15, 68, 84, 241, 220, 40, 89, 36, 72, 108, 104,
+			17, 35, 47, 0, 16, 68, 77, 27, 173, 112, 89, 35, 51, 76, 39, 48, 39, 104, 17, 0, 18, 70, 77, 17, 224, 197, 66, 128, 89, 35,
+			51, 35, 50, 81, 39, 91, 47, 0, 11, 67, 76, 140, 222, 89, 36, 71, 37, 55, 0, 13, 68, 75, 50, 162, 128, 88, 36, 57, 47, 40,
+			50, 0, 14, 68, 53, 225, 226, 40, 107, 35, 55, 108, 84, 35, 47, 0, 7, 66, 42, 32, 47, 39, 0, 14, 67, 41, 248, 158, 47, 35,
+			65, 35, 84, 84, 39, 55, 0, 13, 68, 41, 183, 162, 128, 47, 36, 83, 55, 39, 50, 0, 15, 67, 40, 236, 222, 47, 35, 101, 35, 6,
+			57, 57, 39, 55, 0, 14, 67, 40, 216, 158, 47, 35, 107, 35, 84, 84, 39, 55, 0, 22, 72, 29, 50, 145, 29, 50, 34, 71, 0, 36,
+			89, 47, 36, 51, 108, 89, 71, 39, 51, 49, 0, 13, 68, 10, 7, 34, 40, 108, 50, 104, 17, 40, 47, 0, 8, 66, 42, 32, 47, 39,
+			0, 76, 15, 6, 95, 114, 111, 109, 97, 110, 36, 51, 39, 65, 37, 10, 0, 0, 19, 70, 194, 28, 115, 122, 44, 225, 49, 39, 107, 81,
+			37, 55, 40, 57, 36, 12, 0, 17, 69, 193, 225, 226, 206, 16, 49, 36, 55, 108, 84, 37, 57, 36, 12, 0, 17, 70, 181, 19, 199, 75,
+			55, 192, 48, 35, 51, 72, 108, 88, 37, 65, 0, 14, 69, 135, 50, 17, 204, 240, 107, 37, 71, 51, 37, 72, 0, 19, 70, 126, 12, 210,
+			206, 39, 192, 65, 35, 50, 57, 35, 88, 37, 57, 39, 65, 0, 11, 67, 126, 5, 0, 65, 35, 50, 36, 91, 0, 15, 68, 124, 210, 148,
+			124, 65, 39, 107, 47, 35, 91, 35, 65, 0, 12, 67, 113, 181, 64, 104, 17, 35, 83, 35, 89, 0, 16, 69, 109, 24, 176, 68, 240, 83,
+			39, 51, 40, 49, 35, 51, 72, 0, 15, 69, 79, 1, 209, 204, 240, 89, 36, 49, 35, 51, 37, 72, 0, 15, 69, 70, 44, 240, 68, 240,
+			51, 40, 57, 49, 35, 51, 72, 0, 11, 67, 61, 52, 64, 72, 36, 89, 36, 51, 0, 15, 69, 60, 117, 8, 68, 240, 72, 108, 91, 71,
+			39, 51, 72, 0, 14, 68, 53, 231, 34, 124, 107, 39, 55, 104, 17, 40, 65, 0, 15, 68, 41, 18, 51, 124, 47, 36, 51, 71, 37, 57,
+			39, 65, 0, 18, 70, 33, 232, 145, 120, 124, 225, 71, 40, 55, 40, 51, 55, 108, 57, 36, 0, 20, 70, 33, 232, 15, 180, 124, 225, 71,
+			39, 55, 35, 50, 72, 48, 108, 57, 36, 12, 0, 11, 67, 33, 52, 64, 71, 36, 89, 35, 51, 0, 17, 69, 33, 24, 136, 186, 16, 71,
+			35, 51, 39, 71, 35, 76, 76, 36, 0, 19, 70, 33, 17, 207, 69, 40, 0, 71, 35, 51, 108, 72, 35, 51, 88, 35, 50, 0, 13, 68,
+			32, 242, 34, 124, 71, 35, 72, 71, 40, 65, 0, 16, 70, 31, 56, 46, 131, 56, 0, 37, 50, 76, 36, 50, 37, 50, 0, 12, 68, 29,
+			244, 199, 192, 36, 65, 89, 108, 49, 0, 13, 68, 29, 200, 34, 124, 39, 104, 17, 50, 40, 65, 0, 18, 70, 11, 8, 135, 71, 55, 192,
+			108, 49, 84, 108, 51, 37, 57, 39, 65, 0, 0, 13, 68, 193, 51, 162, 120, 49, 39, 89, 101, 39, 55, 0, 13, 68, 125, 151, 162, 120,
+			65, 35, 19, 55, 40, 55, 0, 11, 67, 109, 28, 210, 83, 37, 51, 37, 88, 0, 13, 67, 105, 241, 214, 104, 17, 35, 65, 65, 108, 88,
+			0, 14, 69, 79, 51, 209, 204, 160, 89, 37, 72, 51, 37, 47, 0, 14, 68, 69, 1, 243, 120, 51, 35, 88, 108, 19, 36, 55, 0, 11,
+			67, 62, 37, 18, 72, 40, 91, 36, 88, 0, 12, 68, 29, 55, 162, 32, 39, 89, 55, 40, 71, 0, 19, 70, 9, 227, 211, 41, 24, 160,
+			108, 55, 72, 39, 89, 47, 36, 51, 39, 50, 0, 8, 66, 30, 224, 36, 76, 0, 46, 0, 14, 68, 185, 71, 209, 76, 76, 36, 91, 65,
+			51, 35, 89, 0, 15, 69, 183, 52, 110, 81, 240, 48, 37, 51, 76, 36, 91, 65, 0, 17, 70, 181, 24, 176, 79, 51, 192, 48, 36, 51,
+			39, 49, 89, 37, 72, 0, 16, 69, 181, 19, 199, 73, 240, 48, 35, 51, 72, 108, 88, 35, 65, 0, 16, 69, 130, 36, 110, 81, 240, 50,
+			40, 51, 36, 76, 36, 91, 65, 0, 10, 67, 129, 244, 192, 50, 36, 65, 89, 0, 14, 67, 127, 4, 81, 65, 39, 49, 35, 51, 51, 35,
+			51, 0, 14, 67, 125, 134, 209, 65, 39, 88, 35, 83, 83, 35, 51, 0, 12, 67, 113, 81, 213, 104, 17, 36, 89, 108, 89, 0, 15, 69,
+			74, 35, 225, 89, 240, 88, 40, 72, 107, 35, 88, 65, 0, 17, 69, 74, 20, 110, 81, 240, 88, 35, 107, 51, 36, 76, 36, 91, 65, 0,
+			15, 69, 63, 52, 97, 89, 240, 72, 37, 51, 107, 35, 88, 65, 0, 18, 70, 51, 20, 113, 137, 72, 64, 75, 36, 81, 35, 51, 81, 40,
+			91, 36, 0, 11, 67, 40, 123, 145, 47, 108, 76, 36, 51, 0, 18, 70, 33, 232, 159, 33, 28, 64, 71, 36, 55, 39, 65, 71, 36, 51,
+			81, 0, 16, 70, 28, 168, 176, 79, 51, 192, 36, 47, 39, 49, 89, 37, 72, 0, 15, 69, 28, 132, 115, 81, 240, 35, 71, 51, 37, 91,
+			35, 65, 0, 0, 20, 70, 185, 161, 210, 128, 140, 222, 76, 39, 104, 17, 108, 88, 35, 50, 71, 37, 55, 0, 13, 68, 181, 24, 115, 72,
+			48, 35, 51, 107, 37, 88, 0, 14, 69, 127, 51, 176, 136, 128, 65, 37, 101, 49, 40, 71, 0, 14, 69, 126, 39, 176, 137, 224, 65, 39,
+			55, 49, 40, 55, 0, 17, 70, 122, 6, 226, 79, 50, 128, 55, 35, 50, 83, 39, 89, 37, 47, 0, 15, 69, 120, 120, 149, 137, 224, 55,
+			108, 84, 39, 89, 40, 55, 0, 15, 69, 114, 40, 19, 137, 224, 104, 17, 39, 50, 89, 40, 55, 0, 11, 67, 113, 114, 0, 104, 17, 39,
+			47, 71, 0, 13, 67, 61, 236, 20, 6, 72, 36, 55, 49, 35, 91, 0, 20, 71, 30, 216, 146, 205, 60, 226, 128, 39, 48, 39, 88, 37,
+			89, 37, 57, 39, 50, 0, 18, 70, 29, 226, 155, 30, 34, 128, 39, 47, 47, 35, 83, 108, 84, 39, 47, 0, 10, 65, 104, 6, 104, 17,
+			36, 57, 50, 0, 0, 16, 69, 195, 56, 159, 69, 48, 49, 37, 57, 40, 65, 35, 51, 89, 0, 11, 67, 124, 220, 215, 65, 39, 107, 37,
+			47, 0, 12, 67, 81, 241, 211, 91, 35, 65, 65, 108, 89, 0, 15, 68, 81, 24, 162, 68, 91, 36, 51, 51, 39, 84, 36, 51, 0, 15,
+			69, 79, 56, 10, 193, 48, 89, 37, 50, 47, 35, 49, 89, 0, 13, 68, 34, 40, 21, 68, 71, 40, 50, 35, 89, 51, 0, 14, 68, 33,
+			230, 162, 68, 71, 35, 55, 104, 17, 40, 51, 0, 12, 68, 31, 54, 162, 68, 37, 104, 17, 40, 51, 0, 14, 69, 30, 3, 243, 193, 48,
+			35, 50, 72, 37, 49, 89, 0, 0, 13, 68, 194, 36, 98, 80, 49, 40, 6, 51, 40, 91, 0, 15, 69, 193, 66, 136, 30, 0, 49, 36,
+			91, 47, 71, 108, 50, 0, 11, 67, 190, 8, 128, 90, 36, 50, 36, 84, 0, 13, 68, 131, 49, 243, 204, 50, 35, 57, 108, 37, 12, 0,
+			10, 67, 126, 8, 128, 65, 36, 50, 39, 0, 15, 68, 126, 1, 220, 80, 65, 39, 50, 108, 104, 17, 36, 91, 0, 14, 68, 124, 184, 34,
+			204, 65, 35, 89, 50, 35, 84, 37, 0, 13, 67, 113, 251, 82, 104, 17, 39, 65, 48, 39, 88, 0, 11, 67, 106, 8, 128, 104, 17, 39,
+			50, 40, 0, 12, 67, 94, 1, 210, 47, 35, 50, 50, 108, 88, 0, 11, 67, 70, 8, 128, 51, 36, 50, 39, 12, 0, 17, 69, 52, 248,
+			159, 69, 32, 107, 35, 72, 72, 39, 65, 35, 51, 88, 0, 16, 69, 41, 24, 155, 69, 32, 47, 35, 51, 39, 83, 36, 51, 88, 0, 18,
+			70, 29, 248, 158, 79, 56, 160, 36, 65, 39, 55, 89, 37, 57, 39, 50, 0, 27, 74, 29, 236, 10, 70, 37, 51, 127, 49, 243, 204, 36,
+			55, 36, 49, 47, 36, 51, 39, 91, 37, 65, 37, 57, 37, 0, 19, 70, 29, 231, 211, 31, 55, 128, 19, 35, 55, 65, 35, 89, 108, 19,
+			36, 55, 0, 18, 70, 29, 200, 160, 205, 120, 160, 39, 104, 17, 40, 50, 37, 47, 40, 50, 0, 0, 11, 67, 197, 49, 209, 81, 39, 89,
+			108, 51, 0, 19, 70, 136, 114, 145, 181, 24, 155, 84, 108, 47, 36, 51, 48, 39, 51, 40, 83, 0, 12, 68, 128, 119, 226, 76, 50, 108,
+			65, 40, 89, 0, 11, 67, 124, 204, 209, 65, 39, 75, 37, 51, 0, 12, 67, 113, 81, 209, 104, 17, 36, 89, 108, 51, 0, 11, 67, 94,
+			24, 145, 47, 35, 107, 40, 51, 0, 12, 68, 78, 36, 243, 76, 89, 39, 89, 37, 89, 0, 18, 70, 69, 180, 71, 128, 248, 159, 51, 36,
+			83, 51, 108, 50, 72, 39, 65, 0, 10, 67, 62, 12, 64, 72, 39, 50, 81, 0, 11, 67, 53, 81, 209, 107, 36, 89, 108, 51, 0, 11,
+			67, 32, 216, 145, 71, 39, 107, 40, 51, 0, 17, 70, 29, 204, 199, 130, 36, 192, 39, 104, 17, 57, 108, 50, 40, 89, 0, 21, 71, 29,
+			50, 145, 29, 50, 17, 196, 36, 89, 47, 36, 51, 108, 89, 71, 39, 51, 81, 0, 0, 21, 71, 194, 8, 135, 129, 60, 226, 128, 49, 39,
+			50, 84, 108, 50, 89, 37, 57, 39, 50, 0, 11, 67, 182, 36, 148, 48, 40, 88, 36, 91, 0, 15, 69, 180, 119, 135, 205, 64, 48, 108,
+			55, 108, 57, 36, 91, 0, 16, 69, 134, 3, 226, 193, 64, 107, 36, 50, 72, 39, 49, 39, 91, 0, 14, 68, 125, 145, 209, 88, 65, 39,
+			19, 108, 51, 36, 88, 0, 11, 67, 125, 22, 128, 65, 39, 51, 104, 17, 0, 11, 67, 80, 116, 84, 91, 108, 51, 36, 91, 0, 16, 69,
+			63, 20, 72, 29, 64, 72, 36, 81, 35, 51, 71, 108, 91, 0, 11, 67, 56, 116, 84, 101, 108, 51, 36, 91, 0, 12, 67, 34, 6, 212,
+			71, 35, 50, 35, 83, 91, 0, 16, 69, 32, 114, 156, 139, 48, 71, 108, 47, 35, 104, 17, 84, 108, 0, 0, 6, 20, 96, 6, 0, 0,
+			48, 0, 0, 0, 240, 6, 0, 0, 48, 0, 0, 0, 241, 6, 0, 0, 49, 0, 0, 0, 97, 6, 0, 0, 49, 0, 0, 0, 98, 6,
+			0, 0, 50, 0, 0, 0, 242, 6, 0, 0, 50, 0, 0, 0, 99, 6, 0, 0, 51, 0, 0, 0, 243, 6, 0, 0, 51, 0, 0, 0,
+			100, 6, 0, 0, 52, 0, 0, 0, 244, 6, 0, 0, 52, 0, 0, 0, 101, 6, 0, 0, 53, 0, 0, 0, 245, 6, 0, 0, 53, 0,
+			0, 0, 102, 6, 0, 0, 54, 0, 0, 0, 246, 6, 0, 0, 54, 0, 0, 0, 103, 6, 0, 0, 55, 0, 0, 0, 247, 6, 0, 0,
+			55, 0, 0, 0, 104, 6, 0, 0, 56, 0, 0, 0, 248, 6, 0, 0, 56, 0, 0, 0, 105, 6, 0, 0, 57, 0, 0, 0, 249, 6,
+			0, 0, 57, 0, 0, 0, 106, 6, 0, 0, 37, 0, 0, 0, 84, 6, 0, 0, 116, 6, 0, 0, 74, 6, 0, 0, 204, 6, 0, 0,
+			129, 254, 0, 0, 34, 6, 0, 0, 141, 254, 0, 0, 39, 6, 0, 0, 142, 254, 0, 0, 39, 6, 0, 0, 132, 254, 0, 0, 35, 6,
+			0, 0, 143, 254, 0, 0, 40, 6, 0, 0, 144, 254, 0, 0, 40, 6, 0, 0, 145, 254, 0, 0, 40, 6, 0, 0, 146, 254, 0, 0,
+			40, 6, 0, 0, 86, 251, 0, 0, 126, 6, 0, 0, 87, 251, 0, 0, 126, 6, 0, 0, 88, 251, 0, 0, 126, 6, 0, 0, 89, 251,
+			0, 0, 126, 6, 0, 0, 149, 254, 0, 0, 42, 6, 0, 0, 150, 254, 0, 0, 42, 6, 0, 0, 151, 254, 0, 0, 42, 6, 0, 0,
+			152, 254, 0, 0, 42, 6, 0, 0, 154, 254, 0, 0, 43, 6, 0, 0, 155, 254, 0, 0, 43, 6, 0, 0, 156, 254, 0, 0, 43, 6,
+			0, 0, 157, 254, 0, 0, 44, 6, 0, 0, 158, 254, 0, 0, 44, 6, 0, 0, 160, 254, 0, 0, 44, 6, 0, 0, 159, 254, 0, 0,
+			44, 6, 0, 0, 123, 251, 0, 0, 134, 6, 0, 0, 124, 251, 0, 0, 134, 6, 0, 0, 125, 251, 0, 0, 134, 6, 0, 0, 162, 254,
+			0, 0, 45, 6, 0, 0, 163, 254, 0, 0, 45, 6, 0, 0, 164, 254, 0, 0, 45, 6, 0, 0, 165, 254, 0, 0, 46, 6, 0, 0,
+			166, 254, 0, 0, 46, 6, 0, 0, 167, 254, 0, 0, 46, 6, 0, 0, 168, 254, 0, 0, 46, 6, 0, 0, 169, 254, 0, 0, 47, 6,
+			0, 0, 170, 254, 0, 0, 47, 6, 0, 0, 171, 254, 0, 0, 48, 6, 0, 0, 172, 254, 0, 0, 48, 6, 0, 0, 173, 254, 0, 0,
+			49, 6, 0, 0, 174, 254, 0, 0, 49, 6, 0, 0, 175, 254, 0, 0, 50, 6, 0, 0, 176, 254, 0, 0, 50, 6, 0, 0, 138, 251,
+			0, 0, 152, 6, 0, 0, 139, 251, 0, 0, 152, 6, 0, 0, 177, 254, 0, 0, 51, 6, 0, 0, 178, 254, 0, 0, 51, 6, 0, 0,
+			179, 254, 0, 0, 51, 6, 0, 0, 180, 254, 0, 0, 51, 6, 0, 0, 181, 254, 0, 0, 52, 6, 0, 0, 182, 254, 0, 0, 52, 6,
+			0, 0, 183, 254, 0, 0, 52, 6, 0, 0, 184, 254, 0, 0, 52, 6, 0, 0, 185, 254, 0, 0, 53, 6, 0, 0, 186, 254, 0, 0,
+			53, 6, 0, 0, 187, 254, 0, 0, 53, 6, 0, 0, 188, 254, 0, 0, 53, 6, 0, 0, 189, 254, 0, 0, 54, 6, 0, 0, 191, 254,
+			0, 0, 54, 6, 0, 0, 192, 254, 0, 0, 54, 6, 0, 0, 193, 254, 0, 0, 55, 6, 0, 0, 194, 254, 0, 0, 55, 6, 0, 0,
+			195, 254, 0, 0, 55, 6, 0, 0, 196, 254, 0, 0, 55, 6, 0, 0, 199, 254, 0, 0, 56, 6, 0, 0, 200, 254, 0, 0, 56, 6,
+			0, 0, 201, 254, 0, 0, 57, 6, 0, 0, 202, 254, 0, 0, 57, 6, 0, 0, 203, 254, 0, 0, 57, 6, 0, 0, 204, 254, 0, 0,
+			57, 6, 0, 0, 205, 254, 0, 0, 58, 6, 0, 0, 206, 254, 0, 0, 58, 6, 0, 0, 207, 254, 0, 0, 58, 6, 0, 0, 208, 254,
+			0, 0, 58, 6, 0, 0, 209, 254, 0, 0, 65, 6, 0, 0, 210, 254, 0, 0, 65, 6, 0, 0, 211, 254, 0, 0, 65, 6, 0, 0,
+			212, 254, 0, 0, 65, 6, 0, 0, 213, 254, 0, 0, 66, 6, 0, 0, 214, 254, 0, 0, 66, 6, 0, 0, 215, 254, 0, 0, 66, 6,
+			0, 0, 216, 254, 0, 0, 66, 6, 0, 0, 67, 6, 0, 0, 169, 6, 0, 0, 142, 251, 0, 0, 169, 6, 0, 0, 143, 251, 0, 0,
+			169, 6, 0, 0, 144, 251, 0, 0, 169, 6, 0, 0, 145, 251, 0, 0, 169, 6, 0, 0, 219, 254, 0, 0, 169, 6, 0, 0, 218, 254,
+			0, 0, 169, 6, 0, 0, 220, 254, 0, 0, 169, 6, 0, 0, 146, 251, 0, 0, 175, 6, 0, 0, 147, 251, 0, 0, 175, 6, 0, 0,
+			148, 251, 0, 0, 175, 6, 0, 0, 149, 251, 0, 0, 175, 6, 0, 0, 221, 254, 0, 0, 68, 6, 0, 0, 222, 254, 0, 0, 68, 6,
+			0, 0, 223, 254, 0, 0, 68, 6, 0, 0, 224, 254, 0, 0, 68, 6, 0, 0, 225, 254, 0, 0, 69, 6, 0, 0, 226, 254, 0, 0,
+			69, 6, 0, 0, 227, 254, 0, 0, 69, 6, 0, 0, 228, 254, 0, 0, 69, 6, 0, 0, 229, 254, 0, 0, 70, 6, 0, 0, 230, 254,
+			0, 0, 70, 6, 0, 0, 231, 254, 0, 0, 70, 6, 0, 0, 232, 254, 0, 0, 70, 6, 0, 0, 237, 254, 0, 0, 72, 6, 0, 0,
+			238, 254, 0, 0, 72, 6, 0, 0, 190, 6, 0, 0, 71, 6, 0, 0, 213, 6, 0, 0, 71, 6, 0, 0, 233, 254, 0, 0, 71, 6,
+			0, 0, 234, 254, 0, 0, 71, 6, 0, 0, 235, 254, 0, 0, 71, 6, 0, 0, 236, 254, 0, 0, 71, 6, 0, 0, 73, 6, 0, 0,
+			204, 6, 0, 0, 205, 6, 0, 0, 204, 6, 0, 0, 252, 251, 0, 0, 204, 6, 0, 0, 253, 251, 0, 0, 204, 6, 0, 0, 254, 251,
+			0, 0, 204, 6, 0, 0, 255, 251, 0, 0, 204, 6, 0, 0, 240, 254, 0, 0, 204, 6, 0, 0, 241, 254, 0, 0, 204, 6, 0, 0,
+			242, 254, 0, 0, 204, 6, 0, 0, 243, 254, 0, 0, 204, 6, 0, 0, 244, 254, 0, 0, 204, 6, 0, 0, 239, 254, 0, 0, 204, 6,
+			0, 0, 251, 254, 0, 0, 68, 6, 39, 6, 252, 254, 0, 0, 68, 6, 39, 6, 148, 254, 0, 0, 41, 6, 0, 0, 139, 254, 0, 0,
+			38, 6, 0, 0, 140, 254, 0, 0, 38, 6, 0, 0, 134, 254, 0, 0, 36, 6, 0, 0, 128, 254, 0, 0, 33, 6, 0, 0, 122, 254,
+			0, 0, 80, 6, 0, 0, 121, 6, 0, 0, 42, 6, 0, 0, 136, 6, 0, 0, 47, 6, 0, 0, 145, 6, 0, 0, 49, 6, 0, 0,
+			193, 6, 0, 0, 71, 6, 0, 0, 169, 251, 0, 0, 71, 6, 0, 0, 168, 251, 0, 0, 71, 6, 0, 0, 210, 6, 0, 0, 204, 6,
+			0, 0, 186, 6, 0, 0, 70, 6, 0, 0, 195, 6, 0, 0, 42, 6, 0, 0, 194, 6, 0, 0, 71, 6, 0, 0, 211, 6, 0, 0,
+			204, 6, 0, 0, 0, 0, 0, 0, 6, 18, 66, 216, 162, 0, 216, 167, 0, 219, 140, 0, 217, 138, 0, 217, 136, 0, 7, 6, 18, 67,
+			217, 142, 0, 217, 143, 0, 217, 144, 0, 217, 146, 0, 217, 139, 0, 217, 140, 0, 217, 141, 0, 217, 145, 0, 216, 164, 0, 216, 163, 0,
+			216, 165, 0, 216, 161, 0, 219, 128, 0, 7, 6, 18, 68, 216, 168, 0, 217, 190, 0, 216, 170, 0, 216, 171, 0, 216, 172, 0, 218, 134,
+			0, 216, 173, 0, 216, 174, 0, 216, 175, 0, 216, 176, 0, 216, 177, 0, 216, 178, 0, 218, 152, 0, 216, 179, 0, 216, 180, 0, 216, 181,
+			0, 216, 182, 0, 216, 183, 0, 216, 184, 0, 216, 185, 0, 216, 186, 0, 217, 129, 0, 217, 130, 0, 218, 169, 0, 218, 175, 0, 217, 132,
+			0, 217, 133, 0, 217, 134, 0, 217, 135, 0, 216, 169, 0, 216, 166, 0, 7, 6, 18, 69, 216, 182, 0, 216, 181, 0, 216, 171, 0, 217,
+			130, 0, 217, 129, 0, 216, 186, 0, 216, 185, 0, 217, 135, 0, 216, 174, 0, 216, 173, 0, 216, 172, 0, 218, 134, 0, 216, 180, 0, 216,
+			179, 0, 219, 140, 0, 216, 168, 0, 217, 132, 0, 216, 170, 0, 217, 134, 0, 217, 133, 0, 218, 169, 0, 218, 175, 0, 219, 128, 0, 216,
+			184, 0, 216, 183, 0, 216, 178, 0, 216, 177, 0, 216, 176, 0, 216, 175, 0, 216, 166, 0, 217, 136, 0, 216, 169, 0, 217, 138, 0, 218,
+			152, 0, 216, 164, 0, 216, 165, 0, 216, 163, 0, 216, 161, 0, 216, 159, 0, 217, 190, 0, 7, 6, 18, 70, 216, 171, 0, 216, 179, 0,
+			216, 181, 0, 216, 180, 0, 216, 176, 0, 216, 178, 0, 216, 182, 0, 216, 184, 0, 217, 129, 0, 217, 132, 0, 217, 134, 0, 7, 6, 18,
+			71, 216, 168, 0, 217, 190, 0, 216, 170, 0, 216, 172, 0, 218, 134, 0, 216, 173, 0, 216, 174, 0, 216, 175, 0, 216, 177, 0, 218, 152,
+			0, 216, 183, 0, 216, 185, 0, 216, 186, 0, 217, 130, 0, 218, 169, 0, 218, 175, 0, 217, 133, 0, 217, 135, 0, 7, 6, 18, 72, 217,
+			134, 216, 175, 218, 175, 216, 167, 217, 134, 0, 217, 134, 216, 175, 218, 175, 219, 140, 0, 218, 175, 216, 167, 217, 134, 217, 135, 0, 218, 175,
+			216, 167, 217, 134, 219, 128, 0, 216, 179, 216, 170, 216, 167, 217, 134, 0, 217, 133, 216, 167, 217, 134, 0, 216, 170, 216, 167, 217, 134, 0,
+			216, 180, 216, 167, 217, 134, 0, 217, 134, 216, 175, 217, 135, 0, 217, 134, 216, 175, 219, 128, 0, 218, 175, 216, 167, 217, 134, 0, 217, 134,
+			216, 175, 0, 218, 175, 219, 140, 0, 216, 179, 216, 170, 0, 217, 134, 0, 217, 133, 0, 216, 170, 0, 216, 180, 0, 218, 169, 0, 7, 6,
+			18, 73, 216, 162, 0, 216, 167, 0, 219, 140, 0, 217, 138, 0, 217, 136, 0, 217, 142, 0, 217, 143, 0, 217, 144, 0, 217, 146, 0, 217,
+			139, 0, 217, 140, 0, 217, 141, 0, 217, 145, 0, 216, 164, 0, 216, 163, 0, 216, 165, 0, 216, 161, 0, 219, 128, 0, 7, 6, 18, 74,
+			216, 182, 0, 216, 181, 0, 216, 171, 0, 217, 130, 0, 217, 129, 0, 216, 186, 0, 216, 185, 0, 217, 135, 0, 216, 174, 0, 216, 173, 0,
+			216, 172, 0, 218, 134, 0, 216, 180, 0, 216, 179, 0, 219, 140, 0, 216, 168, 0, 217, 132, 0, 216, 167, 0, 216, 170, 0, 217, 134, 0,
+			217, 133, 0, 218, 169, 0, 218, 175, 0, 219, 128, 0, 216, 162, 0, 216, 184, 0, 216, 183, 0, 216, 178, 0, 216, 177, 0, 216, 176, 0,
+			216, 175, 0, 216, 166, 0, 217, 136, 0, 216, 169, 0, 217, 138, 0, 218, 152, 0, 217, 190, 0, 216, 164, 0, 216, 165, 0, 216, 163, 0,
+			216, 161, 0, 216, 159, 0, 217, 145, 0, 7, 6, 97, 97, 0, 3, 21, 0, 5, 1, 3, 108, 0, 7, 6, 99, 104, 0, 3, 21, 0,
+			5, 1, 3, 76, 0, 7, 6, 101, 101, 0, 3, 21, 0, 5, 1, 3, 37, 0, 7, 6, 103, 104, 0, 3, 21, 0, 5, 1, 3, 104,
+			17, 0, 7, 6, 106, 104, 0, 3, 21, 0, 5, 1, 3, 90, 0, 7, 6, 107, 104, 0, 3, 21, 0, 5, 1, 3, 101, 0, 7, 6,
+			111, 111, 0, 5, 1, 2, 111, 3, 0, 3, 21, 0, 5, 1, 3, 40, 0, 7, 6, 111, 117, 0, 3, 21, 0, 5, 1, 3, 40, 0,
+			7, 6, 112, 104, 0, 3, 21, 0, 7, 6, 115, 104, 0, 3, 21, 0, 5, 1, 3, 91, 0, 7, 6, 116, 104, 0, 3, 21, 0, 7,
+			6, 1, 28, 0, 3, 0, 7, 6, 1, 34, 0, 4, 1, 162, 216, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 3, 0, 1, 167, 216,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 3, 0, 4, 3, 19, 0, 1, 18, 69, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 0,
+			7, 6, 1, 35, 0, 3, 6, 108, 0, 78, 8, 3, 6, 108, 12, 0, 216, 168, 216, 167, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 132, 3, 108, 6, 71, 108, 72, 0, 217, 132, 217, 136, 216, 175, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 55,
+			40, 72, 0, 217, 132, 216, 167, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 55, 108, 47, 0, 217, 133, 219, 140,
+			216, 178, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 65, 37, 88, 0, 217, 133, 217, 136, 216, 178, 1, 18, 69, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 108, 65, 40, 88, 0, 217, 133, 217, 136, 216, 174, 216, 170, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 134, 3, 108, 65, 40, 101, 47, 36, 12, 0, 217, 133, 217, 136, 216, 174, 216, 170, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 134, 3, 108, 65, 40, 101, 47, 36, 57, 36, 0, 216, 168, 216, 167, 216, 175, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 108, 71, 108, 72, 0, 218, 175, 216, 167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 81, 108, 107, 0, 217,
+			129, 216, 177, 219, 140, 217, 134, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 3, 108, 83, 35, 51, 37, 50, 0, 217, 136, 216, 177,
+			1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 131, 3, 108, 84, 35, 51, 0, 217, 136, 216, 177, 216, 175, 1, 18, 69, 18, 74, 2, 32,
+			14, 136, 128, 132, 3, 108, 84, 35, 51, 72, 0, 7, 6, 1, 36, 0, 2, 217, 142, 3, 0, 3, 35, 19, 0, 7, 6, 1, 37, 0,
+			3, 39, 19, 0, 7, 6, 1, 38, 0, 2, 217, 144, 3, 0, 3, 36, 19, 0, 7, 6, 1, 39, 0, 4, 1, 18, 66, 18, 74, 2,
+			32, 14, 136, 128, 129, 3, 19, 0, 1, 18, 67, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 18, 68, 3, 19, 36, 0, 1, 18, 68,
+			18, 74, 2, 32, 14, 136, 128, 129, 3, 35, 19, 0, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 129, 3, 37, 0, 4, 216, 166,
+			1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 130, 3, 37, 12, 0, 219, 140, 0, 219, 140, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128,
+			130, 0, 219, 140, 217, 135, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 12, 57, 36, 0, 219, 140, 219, 128, 1, 18,
+			74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 12, 57, 36, 57, 36, 0, 4, 216, 166, 1, 18, 68, 18, 74, 2, 32, 14, 136,
+			128, 130, 3, 37, 37, 0, 219, 140, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 130, 0, 217, 135, 1, 18, 68, 18, 74, 2, 32, 12,
+			24, 14, 136, 128, 130, 3, 37, 57, 36, 0, 219, 128, 1, 18, 68, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 37, 57, 36, 57,
+			36, 0, 4, 1, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 129, 3, 57, 36, 0, 217, 135, 1, 18, 66, 18, 74, 2, 32, 12, 24,
+			14, 136, 128, 130, 0, 219, 128, 1, 18, 66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 57, 36, 57, 36, 0, 7, 6, 1, 40,
+			0, 4, 8, 2, 18, 66, 18, 68, 3, 0, 8, 2, 18, 67, 18, 74, 3, 0, 8, 3, 6, 35, 12, 0, 4, 3, 6, 108, 0, 2,
+			32, 0, 4, 218, 169, 216, 168, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 35, 49, 71, 35, 51, 0, 218, 169,
+			216, 168, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 217, 139, 3, 35, 50, 0, 217, 139, 1, 18, 69, 18,
+			74, 2, 32, 24, 14, 136, 128, 130, 0, 217, 140, 1, 18, 69, 18, 74, 2, 32, 24, 14, 136, 128, 130, 0, 217, 141, 1, 18, 69, 18,
+			74, 2, 32, 24, 14, 136, 128, 130, 0, 217, 134, 216, 175, 216, 167, 216, 178, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 3, 35,
+			50, 72, 108, 88, 0, 217, 134, 218, 175, 219, 140, 216, 178, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 3, 35, 50, 81, 37, 88,
+			0, 217, 132, 8, 2, 18, 74, 18, 74, 18, 74, 14, 128, 132, 130, 3, 35, 55, 0, 8, 2, 18, 67, 32, 3, 35, 55, 36, 83, 19,
+			0, 4, 217, 133, 219, 140, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 35, 65, 37, 51, 0, 217, 133, 219, 140,
+			216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 216, 168, 217, 136, 216, 167, 217, 132, 8, 2, 18, 69, 18, 74,
+			18, 74, 28, 2, 14, 128, 132, 133, 3, 35, 71, 39, 55, 6, 0, 216, 168, 217, 136, 216, 167, 217, 132, 8, 2, 216, 162, 18, 74, 18,
+			74, 28, 2, 14, 128, 132, 133, 0, 4, 216, 168, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 35, 71,
+			40, 0, 216, 168, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 217, 129, 216, 178, 216, 167, 216, 177, 1,
+			18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 3, 35, 83, 88, 108, 51, 0, 4, 216, 181, 216, 186, 216, 177, 8, 2, 18, 69, 18, 74,
+			18, 74, 14, 128, 132, 132, 3, 35, 89, 104, 17, 35, 51, 0, 216, 181, 216, 186, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128,
+			132, 132, 0, 4, 8, 2, 18, 68, 216, 170, 18, 69, 216, 167, 18, 68, 32, 3, 36, 0, 8, 2, 216, 179, 216, 170, 18, 69, 18, 69,
+			216, 167, 18, 68, 32, 0, 8, 2, 216, 185, 0, 8, 2, 217, 134, 18, 69, 18, 69, 216, 167, 18, 68, 32, 0, 217, 141, 3, 36, 50,
+			0, 4, 1, 45, 2, 217, 132, 217, 132, 217, 135, 32, 3, 39, 0, 1, 45, 2, 217, 132, 217, 132, 217, 145, 217, 135, 32, 12, 0, 217,
+			140, 3, 39, 50, 0, 4, 217, 132, 217, 132, 217, 135, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 132, 3, 39, 55, 55, 108, 107, 0,
+			217, 132, 217, 132, 217, 135, 1, 18, 69, 18, 74, 45, 2, 32, 14, 136, 128, 132, 0, 217, 132, 217, 132, 217, 145, 217, 135, 1, 18, 69,
+			18, 74, 2, 32, 14, 136, 128, 133, 0, 217, 132, 217, 132, 217, 145, 217, 135, 1, 18, 69, 18, 74, 45, 2, 32, 14, 136, 128, 133, 0,
+			217, 132, 217, 133, 217, 133, 216, 167, 217, 132, 218, 169, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 135, 3, 39, 55, 65, 35, 65, 108,
+			55, 36, 49, 0, 217, 132, 217, 133, 217, 132, 217, 136, 218, 169, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 134, 3, 39, 55, 65, 39,
+			55, 40, 49, 0, 217, 132, 217, 133, 217, 132, 218, 169, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 3, 39, 55, 65, 39, 55, 49,
+			0, 217, 132, 216, 173, 218, 169, 217, 133, 216, 167, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 134, 3, 39, 55, 107, 39, 49, 35, 65,
+			108, 0, 4, 217, 132, 216, 175, 217, 145, 219, 140, 217, 134, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 134, 3, 39, 72, 72, 37, 50,
+			0, 217, 132, 216, 175, 219, 140, 217, 134, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 133, 0, 4, 217, 132, 216, 175, 217, 136, 217, 132,
+			217, 135, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 134, 3, 39, 72, 72, 39, 55, 36, 12, 0, 217, 132, 216, 175, 217, 145, 217, 136,
+			217, 132, 217, 135, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 135, 0, 4, 217, 132, 216, 175, 217, 136, 217, 132, 219, 128, 1, 18, 69,
+			18, 74, 2, 32, 14, 136, 128, 134, 3, 39, 72, 72, 39, 55, 36, 57, 36, 0, 217, 132, 216, 175, 217, 145, 217, 136, 217, 132, 219, 128,
+			1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 135, 0, 4, 217, 132, 216, 179, 217, 132, 216, 183, 217, 134, 217, 135, 1, 18, 69, 18, 74,
+			2, 32, 14, 136, 128, 135, 3, 39, 89, 89, 35, 55, 47, 35, 50, 36, 12, 0, 217, 132, 216, 179, 217, 145, 217, 132, 216, 183, 217, 134,
+			217, 135, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 136, 0, 4, 217, 132, 216, 179, 217, 132, 216, 183, 217, 134, 219, 128, 1, 18, 69,
+			18, 74, 2, 32, 14, 136, 128, 135, 3, 39, 89, 89, 35, 55, 47, 35, 50, 36, 57, 36, 0, 217, 132, 216, 179, 217, 145, 217, 132, 216,
+			183, 217, 134, 219, 128, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 136, 0, 4, 217, 132, 216, 179, 216, 167, 216, 175, 216, 167, 216, 170,
+			1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 135, 3, 39, 89, 89, 108, 72, 108, 47, 0, 217, 132, 216, 179, 217, 145, 216, 167, 216, 175,
+			216, 167, 216, 170, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 136, 0, 2, 217, 147, 3, 108, 0, 217, 134, 217, 135, 1, 51, 48, 108,
+			57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 131, 3, 108, 4, 50, 36, 12, 0, 217, 134, 219, 128, 1, 51, 48, 108, 57, 48,
+			108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 131, 3, 108, 4, 50, 36, 57, 36, 0, 4, 216, 170, 1, 18, 66, 18, 68, 18, 74, 2,
+			32, 14, 136, 128, 130, 3, 108, 47, 0, 216, 170, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 0, 216, 170, 216, 170,
+			1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 108, 47, 35, 47, 0, 216, 170, 217, 133, 1, 18, 68, 18, 74, 18,
+			74, 2, 32, 24, 14, 136, 128, 131, 3, 108, 47, 35, 65, 0, 216, 170, 216, 180, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136,
+			128, 131, 3, 108, 47, 35, 91, 0, 216, 170, 216, 170, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 47, 40, 50, 0, 216, 170, 216, 170, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 47, 108, 50, 0, 216, 170, 217, 133, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 65, 40, 50, 0, 216, 170, 217, 133, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 65, 108, 50, 0, 216, 170, 216, 180, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 91, 40, 50, 0, 216, 170, 216, 180, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 47, 36, 91, 108, 50, 0, 216, 170, 219, 140, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 108, 47, 37,
+			0, 216, 170, 217, 135, 216, 167, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 108, 47, 107, 108, 0, 216, 170, 217,
+			135, 216, 167, 219, 140, 219, 140, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 108, 47, 107, 108, 37, 12, 0, 216,
+			170, 217, 135, 216, 167, 219, 140, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 3, 108, 47, 107, 108, 57, 36, 0, 217,
+			134, 1, 18, 69, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 108, 50, 0, 217, 134, 216, 170, 1, 52, 48, 108, 57, 48, 108, 57,
+			48, 108, 2, 32, 24, 14, 136, 128, 131, 3, 108, 50, 35, 47, 0, 217, 134, 217, 133, 1, 52, 48, 108, 57, 48, 108, 57, 48, 108, 2,
+			32, 24, 14, 136, 128, 131, 3, 108, 50, 35, 65, 0, 217, 134, 216, 180, 1, 52, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14,
+			136, 128, 131, 3, 108, 50, 35, 91, 0, 217, 134, 216, 170, 217, 136, 217, 134, 1, 52, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24,
+			14, 136, 128, 133, 3, 108, 50, 36, 47, 40, 50, 0, 217, 134, 216, 170, 216, 167, 217, 134, 1, 52, 48, 108, 57, 48, 108, 57, 48, 108,
+			2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 36, 47, 108, 50, 0, 217, 134, 217, 133, 217, 136, 217, 134, 1, 52, 48, 108, 57, 48, 108,
+			57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 36, 65, 40, 50, 0, 217, 134, 217, 133, 216, 167, 217, 134, 1, 52, 48, 108,
+			57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 36, 65, 108, 50, 0, 217, 134, 216, 180, 217, 136, 217, 134, 1,
+			52, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 36, 91, 40, 50, 0, 217, 134, 216, 180, 216, 167,
+			217, 134, 1, 52, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 36, 91, 108, 50, 0, 217, 134, 219,
+			140, 216, 175, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 132, 3, 108, 50, 37, 72, 0, 217, 134, 219, 140,
+			216, 175, 217, 134, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 37, 72, 35, 50, 0, 217,
+			134, 219, 140, 216, 175, 217, 134, 216, 175, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 134, 3, 108, 50, 37,
+			72, 35, 50, 72, 0, 217, 134, 219, 140, 216, 175, 217, 133, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133,
+			3, 108, 50, 37, 72, 35, 65, 0, 217, 134, 219, 140, 216, 175, 219, 140, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14,
+			136, 128, 133, 3, 108, 50, 37, 72, 37, 0, 217, 134, 219, 140, 216, 175, 219, 140, 217, 133, 1, 51, 48, 108, 57, 48, 108, 57, 48, 108,
+			2, 32, 24, 14, 136, 128, 134, 3, 108, 50, 37, 72, 37, 65, 0, 217, 134, 219, 140, 216, 175, 219, 140, 216, 175, 1, 51, 48, 108, 57,
+			48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 134, 3, 108, 50, 37, 72, 37, 72, 0, 217, 134, 216, 175, 1, 51, 48, 108, 57, 48,
+			108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 131, 3, 108, 50, 72, 0, 217, 134, 216, 175, 217, 134, 1, 51, 48, 108, 57, 48, 108, 57,
+			48, 108, 2, 32, 24, 14, 136, 128, 132, 3, 108, 50, 72, 35, 50, 0, 217, 134, 216, 175, 217, 134, 216, 175, 1, 51, 48, 108, 57, 48,
+			108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 72, 35, 50, 72, 0, 217, 134, 216, 175, 217, 133, 1, 51, 48, 108, 57,
+			48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 132, 3, 108, 50, 72, 35, 65, 0, 217, 134, 216, 175, 217, 135, 1, 51, 48, 108, 57,
+			48, 108, 57, 48, 108, 2, 32, 14, 136, 128, 132, 3, 108, 50, 72, 36, 12, 0, 217, 134, 216, 175, 219, 128, 1, 51, 48, 108, 57, 48,
+			108, 57, 48, 108, 2, 32, 14, 136, 128, 132, 3, 108, 50, 72, 36, 57, 36, 0, 217, 134, 216, 175, 219, 140, 1, 51, 48, 108, 57, 48,
+			108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 132, 3, 108, 50, 72, 37, 0, 217, 134, 216, 175, 219, 140, 217, 133, 1, 51, 48, 108, 57,
+			48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 72, 37, 65, 0, 217, 134, 216, 175, 219, 140, 216, 175, 1, 51, 48,
+			108, 57, 48, 108, 57, 48, 108, 2, 32, 24, 14, 136, 128, 133, 3, 108, 50, 72, 37, 72, 0, 217, 132, 217, 136, 216, 175, 1, 18, 69,
+			18, 74, 2, 32, 14, 136, 128, 131, 3, 108, 55, 40, 72, 0, 217, 133, 219, 140, 216, 178, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128,
+			132, 3, 108, 65, 37, 88, 0, 216, 168, 216, 167, 216, 175, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 71, 108, 72, 0,
+			217, 136, 216, 177, 1, 18, 69, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 108, 84, 35, 51, 0, 217, 136, 216, 177, 216, 175, 1,
+			18, 69, 18, 74, 2, 32, 14, 136, 128, 132, 3, 108, 84, 35, 51, 72, 0, 7, 6, 1, 41, 0, 4, 1, 18, 66, 18, 74, 2, 18,
+			68, 18, 74, 32, 3, 71, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18,
+			72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0,
+			1, 168, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0,
+			2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219,
+			140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18,
+			68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2,
+			18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12,
+			0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162,
+			216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8,
+			167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1,
+			18, 66, 18, 74, 2, 18, 68, 32, 3, 71, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68,
+			32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 168, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18,
+			74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0,
+			2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0,
+			8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18,
+			70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2,
+			18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18,
+			70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18,
+			74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134,
+			217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18,
+			68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216,
+			2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2,
+			18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 216, 177, 216, 175, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3,
+			71, 35, 34, 72, 108, 51, 0, 4, 217, 134, 217, 129, 216, 180, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 71, 35, 50,
+			35, 83, 91, 0, 217, 134, 217, 129, 216, 180, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 217, 134, 216, 175, 1, 18,
+			66, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 35, 50, 72, 0, 217, 134, 216, 175, 1, 168, 216, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 131, 0, 217, 134, 216, 175, 8, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 0, 217, 134, 216, 175, 219, 140, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 71, 35, 50, 72, 37, 0, 217, 134, 216, 175, 217, 135, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 133, 3, 71, 35, 50, 72, 107, 108, 0, 217, 134, 216, 175, 217, 135, 216, 167, 219, 140, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 135, 3, 71, 35, 50, 72, 107, 108, 37, 12, 0, 217, 134, 216, 175, 217, 135, 216, 167, 216, 170, 1, 18, 74, 18, 74, 2, 32,
+			24, 14, 136, 128, 134, 3, 71, 35, 50, 72, 107, 108, 47, 0, 217, 134, 216, 175, 217, 135, 216, 167, 216, 170, 217, 136, 217, 134, 1, 18,
+			74, 18, 74, 2, 32, 24, 14, 136, 128, 136, 3, 71, 35, 50, 72, 107, 108, 47, 40, 50, 0, 217, 134, 216, 175, 217, 135, 216, 167, 219,
+			140, 216, 170, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 3, 71, 35, 50, 72, 107, 108, 57, 35, 47, 0, 217, 134, 216, 175,
+			217, 135, 216, 167, 219, 140, 217, 133, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 3, 71, 35, 50, 72, 107, 108, 57, 35, 65,
+			0, 217, 134, 216, 175, 217, 135, 216, 167, 219, 140, 216, 180, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 3, 71, 35, 50, 72,
+			107, 108, 57, 35, 91, 0, 217, 134, 216, 175, 217, 135, 216, 167, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 71, 35,
+			50, 72, 107, 108, 57, 36, 0, 217, 134, 216, 175, 217, 135, 216, 167, 219, 140, 216, 170, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32,
+			24, 14, 136, 128, 137, 3, 71, 35, 50, 72, 107, 108, 57, 36, 47, 108, 50, 0, 217, 134, 216, 175, 217, 135, 216, 167, 219, 140, 217, 133,
+			216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 137, 3, 71, 35, 50, 72, 107, 108, 57, 36, 65, 108, 50, 0, 217,
+			134, 216, 175, 217, 135, 216, 167, 219, 140, 216, 180, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 137, 3, 71, 35,
+			50, 72, 107, 108, 57, 36, 91, 108, 50, 0, 217, 134, 216, 175, 217, 135, 216, 167, 217, 133, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136,
+			128, 134, 3, 71, 35, 50, 72, 107, 108, 65, 0, 217, 134, 216, 175, 217, 135, 216, 167, 217, 133, 217, 136, 217, 134, 1, 18, 74, 18, 74,
+			2, 32, 24, 14, 136, 128, 136, 3, 71, 35, 50, 72, 107, 108, 65, 40, 50, 0, 217, 134, 216, 175, 217, 135, 216, 167, 216, 180, 1, 18,
+			74, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 71, 35, 50, 72, 107, 108, 91, 0, 217, 134, 216, 175, 217, 135, 216, 167, 216, 180, 217,
+			136, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 136, 3, 71, 35, 50, 72, 107, 108, 91, 40, 50, 0, 217, 134, 216, 175,
+			216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 71, 35, 50, 72, 108, 50, 0, 4, 216, 177, 8, 2, 18, 69,
+			18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 71, 35, 51, 0, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132,
+			130, 0, 216, 177, 216, 167, 217, 134, 218, 175, 219, 140, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 135, 3, 71, 35, 51, 35,
+			50, 81, 37, 88, 0, 4, 216, 177, 217, 134, 217, 133, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 133, 3, 71,
+			35, 51, 50, 36, 65, 37, 0, 216, 177, 217, 134, 217, 133, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 133, 0,
+			4, 216, 177, 217, 133, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 3, 71, 35, 51, 65, 37, 0, 216, 177,
+			217, 133, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 0, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28,
+			2, 14, 128, 132, 130, 3, 71, 35, 72, 0, 216, 179, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 35, 89, 47,
+			0, 216, 174, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 35, 101, 47, 0, 216, 174, 216, 180, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 131, 3, 71, 35, 101, 91, 0, 4, 8, 2, 18, 68, 18, 74, 18, 74, 28, 2, 14, 128, 132, 129, 3, 71,
+			36, 0, 8, 2, 217, 136, 18, 66, 18, 74, 28, 2, 14, 128, 132, 129, 0, 8, 2, 217, 136, 18, 67, 18, 74, 28, 2, 14, 128, 132,
+			129, 0, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134,
+			217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69,
+			133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18,
+			68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 217, 132, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2,
+			14, 128, 132, 131, 3, 71, 36, 55, 108, 0, 217, 132, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 219,
+			140, 218, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 36, 57, 81, 0, 4, 217, 135, 8, 2, 18, 69, 18, 74, 18,
+			74, 28, 2, 14, 128, 132, 130, 3, 71, 36, 107, 0, 217, 135, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 219,
+			140, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 37, 50, 0, 219, 140, 217, 134, 219, 140, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 71, 37, 50, 37, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 71, 39, 0, 8, 167, 216, 18,
+			69, 170, 216, 2, 18, 68, 32, 0, 4, 217, 132, 217, 134, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 71, 39, 55,
+			35, 50, 72, 0, 217, 132, 217, 134, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 132, 217, 134, 216, 175, 8,
+			2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 216, 178, 216, 177, 218, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 71, 39, 88, 39, 51, 81, 0, 216, 178, 216, 177, 218, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 178, 216,
+			177, 218, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 2, 217, 145, 18, 73, 3, 71, 71, 0, 2, 217, 145, 32,
+			0, 4, 2, 217, 145, 18, 68, 3, 71, 71, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 3, 71, 71, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69,
+			170, 216, 2, 18, 68, 32, 12, 12, 3, 71, 71, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 217, 134,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 108, 50, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			131, 3, 71, 108, 51, 0, 216, 167, 217, 129, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 108, 83, 0, 216, 167, 217, 129,
+			216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 71, 108, 83, 47, 0, 216, 167, 217, 136, 216, 177, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 71, 108, 84, 35, 51, 0, 4, 216, 167, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3,
+			71, 108, 88, 0, 216, 167, 216, 178, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 167, 216, 178, 8, 2, 216, 162, 18,
+			74, 18, 74, 14, 128, 132, 131, 0, 4, 216, 167, 216, 178, 217, 134, 217, 133, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14,
+			128, 132, 134, 3, 71, 108, 88, 50, 36, 65, 37, 0, 216, 167, 216, 178, 217, 134, 217, 133, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74,
+			28, 2, 14, 128, 132, 134, 0, 4, 216, 167, 216, 178, 217, 133, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 133,
+			3, 71, 108, 88, 65, 37, 0, 216, 167, 216, 178, 217, 133, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 133, 0,
+			216, 167, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 71, 108, 91, 0, 7, 6, 1, 42, 0, 3, 47, 0, 7, 6,
+			1, 43, 0, 4, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 129, 3, 35, 47, 0, 1, 136, 217, 18, 66, 18, 74, 2,
+			32, 24, 14, 136, 128, 129, 0, 217, 136, 217, 134, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 36, 47, 40, 50, 0, 4,
+			216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 36, 47, 108, 50, 0, 216, 167, 217, 134, 1, 136, 217, 18,
+			66, 2, 32, 24, 14, 136, 128, 131, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 47, 0, 1, 18, 66, 18, 74, 2,
+			18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68,
+			18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1,
+			170, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2,
+			217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66,
+			0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 18, 69,
+			219, 140, 18, 69, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140,
+			32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71,
+			18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18,
+			74, 32, 0, 8, 18, 68, 167, 216, 2, 219, 140, 216, 167, 18, 68, 32, 12, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71,
+			18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18,
+			68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140,
+			219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216,
+			2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219,
+			140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 47, 35,
+			0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18,
+			71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 170, 12, 12, 12, 0, 1, 18, 74, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128,
+			0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 18, 69, 18, 69,
+			18, 68, 32, 0, 8, 2, 18, 69, 18, 69, 217, 145, 18, 68, 32, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0,
+			8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18,
+			68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69,
+			133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 219, 140,
+			18, 68, 32, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18,
+			68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12,
+			0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 69, 18, 68,
+			32, 12, 0, 8, 170, 216, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0,
+			8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 8, 179, 216, 133, 217, 2, 18, 69, 18, 69, 18, 68, 32, 12,
+			0, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 47, 35, 51, 0, 216, 177, 219, 140, 217, 134, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 47, 35, 51, 37, 50, 0, 216, 177, 216, 167, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 47, 35, 51, 108, 91, 0, 217, 130, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 47, 35, 104, 17, 37, 0, 4,
+			8, 18, 68, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 3, 47, 36, 0, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32,
+			0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 69, 18, 68, 32, 0, 8, 133, 217,
+			2, 18, 69, 18, 69, 217, 145, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 216, 167, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2,
+			18, 69, 216, 167, 18, 69, 219, 140, 32, 12, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216,
+			18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2,
+			18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 179,
+			216, 167, 216, 2, 18, 69, 18, 69, 216, 167, 18, 68, 32, 12, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 47, 39, 0, 8,
+			167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 217, 134, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131,
+			3, 47, 39, 50, 72, 0, 217, 134, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 217, 136, 217, 134, 1,
+			18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 47, 40, 50, 0, 4, 2, 217, 145, 18, 73, 3, 47, 47, 0, 2, 217, 145, 32,
+			0, 4, 2, 217, 145, 18, 68, 3, 47, 47, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 3, 47, 47, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216,
+			2, 18, 68, 32, 12, 12, 3, 47, 47, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 12, 0, 4, 216, 167, 217, 134,
+			1, 140, 219, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 57, 36, 47, 108, 50, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218,
+			18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 136, 217, 18, 66, 18, 74, 2,
+			32, 24, 14, 136, 128, 131, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 140, 219, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0,
+			7, 6, 1, 44, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 89, 0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0,
+			1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18,
+			68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1,
+			18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 171, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18,
+			66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2,
+			217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135,
+			32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2,
+			217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18,
+			68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18,
+			68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18,
+			71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69,
+			18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216,
+			2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177,
+			32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18,
+			68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32,
+			12, 3, 89, 12, 35, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 3, 89, 12, 39, 0, 4, 1, 18, 66, 18, 66, 2,
+			18, 68, 32, 3, 89, 35, 0, 1, 18, 66, 18, 74, 2, 216, 176, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1,
+			18, 66, 18, 74, 2, 216, 178, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 182, 32,
+			12, 0, 1, 18, 66, 18, 74, 2, 216, 184, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 132, 32, 12, 0, 1, 18, 68, 18, 66, 2,
+			18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18,
+			74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 171, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68,
+			18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18,
+			68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167,
+			0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8,
+			18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74,
+			0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18,
+			69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2,
+			18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219,
+			140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18,
+			68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69,
+			217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 89, 36, 0, 8, 18, 69, 170, 216,
+			179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69,
+			2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18,
+			68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 8,
+			2, 18, 69, 217, 136, 18, 68, 32, 3, 89, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 4, 2, 217, 145, 18,
+			73, 3, 89, 89, 0, 2, 217, 145, 32, 0, 2, 217, 145, 18, 68, 3, 89, 89, 35, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18,
+			68, 32, 12, 3, 89, 89, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 8, 18, 69, 170, 216, 2, 18, 68,
+			32, 12, 12, 3, 89, 89, 39, 0, 7, 6, 1, 45, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 75, 0, 1, 18,
+			66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2,
+			217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 172, 216, 18, 74, 2, 18, 68, 18,
+			74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128,
+			217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128,
+			18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219,
+			140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18,
+			68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68,
+			18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162,
+			216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133,
+			217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68,
+			32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0,
+			8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216,
+			179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 75, 35, 0, 1, 18, 68, 18,
+			66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18,
+			74, 2, 216, 172, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18,
+			68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0,
+			8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18,
+			68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18,
+			68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12,
+			0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8,
+			133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133,
+			217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0,
+			8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2,
+			18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217,
+			133, 217, 2, 18, 68, 32, 3, 75, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2,
+			18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18,
+			68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8,
+			170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 75, 39, 0, 8, 167, 216, 18, 69,
+			170, 216, 2, 18, 68, 32, 0, 217, 136, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 75, 40, 0, 4, 2, 217, 145, 18, 73,
+			3, 75, 75, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 75, 75, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68,
+			32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 75, 75, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145,
+			18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 75, 75, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18,
+			68, 32, 12, 0, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 75, 108, 50, 0, 7, 6, 1, 46, 0, 4,
+			1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 107, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0,
+			1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18,
+			68, 18, 74, 18, 74, 32, 0, 1, 173, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32,
+			0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2,
+			217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128,
+			32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18,
+			66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0,
+			8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18,
+			74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18,
+			68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217,
+			167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162,
+			216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8,
+			167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1,
+			18, 66, 18, 74, 2, 18, 68, 32, 3, 107, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68,
+			32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 173, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18,
+			74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0,
+			2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0,
+			8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18,
+			70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2,
+			18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18,
+			70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18,
+			74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134,
+			217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18,
+			68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216,
+			2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2,
+			18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 216, 179, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 107, 35, 89,
+			35, 50, 0, 216, 179, 217, 134, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 179, 217, 134, 8, 2, 216, 162, 18, 74,
+			18, 74, 14, 128, 132, 131, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 107, 36, 0, 8, 18, 69, 170, 216, 179, 216,
+			133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18,
+			68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0,
+			8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217,
+			136, 18, 68, 32, 3, 107, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 216, 179, 219, 140, 217, 134, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 132, 3, 107, 39, 89, 36, 57, 50, 0, 216, 179, 219, 140, 217, 134, 8, 2, 18, 69, 18, 74, 18, 74,
+			14, 128, 132, 132, 0, 216, 179, 219, 140, 217, 134, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 2, 217, 145, 18, 73,
+			3, 107, 107, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 107, 107, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68,
+			32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 107, 107, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145,
+			18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 107, 107, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18,
+			68, 32, 12, 0, 216, 167, 217, 132, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 107, 108, 55, 0, 7, 6, 1, 47, 0, 4,
+			1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 101, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0,
+			1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 136,
+			18, 66, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 174, 216, 18, 74, 2, 18, 68, 18, 74, 32,
+			12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128,
+			18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67,
+			0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2,
+			217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 2, 217, 136, 219, 140, 216, 180, 12, 0, 8, 18, 66, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68,
+			18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2,
+			18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0,
+			8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18,
+			68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 216, 167, 217, 134, 217,
+			135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 101, 6, 108, 50, 36, 0, 216, 167, 217, 134, 219, 128, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 101, 6, 108, 50, 36, 12, 57, 36, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 101, 35, 0,
+			1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71,
+			32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 174, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18,
+			74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0,
+			2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 219, 140, 18,
+			68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0,
+			8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68,
+			2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12,
+			0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12,
+			0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162,
+			216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0,
+			8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216,
+			133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 101, 35, 51,
+			0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 101, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32,
+			0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167,
+			216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18,
+			69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 219, 140, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 131, 3, 101, 37, 88, 0, 4, 217, 136, 219, 140, 216, 180, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 101, 37,
+			91, 0, 217, 136, 219, 140, 216, 180, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68,
+			32, 3, 101, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 217, 136, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 131, 3, 101, 39, 51, 0, 217, 136, 216, 177, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 101, 39, 51, 72, 0,
+			217, 136, 216, 177, 216, 175, 218, 175, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 101, 39, 51, 72, 36, 81, 37, 0,
+			4, 217, 136, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 101, 39, 72, 0, 217, 136, 216, 175, 8, 2, 216, 162,
+			18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 216, 175, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 101, 39, 72, 108,
+			0, 216, 175, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 175, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74,
+			14, 128, 132, 131, 0, 4, 217, 136, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 101, 39, 91, 0, 217, 136, 216, 180,
+			8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 217, 136, 216, 180, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0,
+			217, 136, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 101, 40, 50, 0, 4, 217, 136, 216, 168, 8, 2, 18, 69, 18,
+			74, 18, 74, 14, 128, 132, 131, 3, 101, 40, 71, 0, 217, 136, 216, 168, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4,
+			2, 217, 145, 18, 73, 3, 101, 101, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 101, 101, 35, 0, 8, 18, 69, 133, 217,
+			2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 101, 101, 36, 0, 8, 18, 69, 170, 216,
+			133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 101, 101, 39, 0, 8, 18, 69, 170,
+			216, 2, 217, 145, 18, 68, 32, 12, 0, 4, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 101, 108, 50, 0,
+			216, 167, 217, 134, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 216, 167, 217, 134, 8, 2, 216, 162, 18, 74, 18,
+			74, 28, 2, 14, 128, 132, 131, 0, 217, 136, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 0, 217, 136, 216, 167,
+			217, 134, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 101, 108, 50, 72, 0, 217, 136, 216, 167, 216, 177, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 132, 3, 101, 108, 51, 0, 4, 217, 136, 216, 167, 216, 168, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			132, 3, 101, 108, 71, 0, 217, 136, 216, 167, 216, 168, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 136, 216, 167, 216,
+			168, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 136, 216, 167, 216, 179, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 133, 3, 101, 108, 89, 47, 0, 217, 136, 216, 167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 101, 108, 107,
+			0, 4, 217, 136, 216, 167, 217, 135, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 101, 108, 107, 35, 72, 0, 217,
+			136, 216, 167, 217, 135, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 217, 136, 216, 167, 217, 135, 216, 180, 8,
+			2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 101, 108, 107, 36, 91, 0, 217, 136, 216, 167, 217, 135, 216, 180, 8, 2, 216, 162,
+			18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 217, 136, 216, 167, 217, 135, 219, 140, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128,
+			132, 134, 3, 101, 108, 107, 37, 72, 0, 217, 136, 216, 167, 217, 135, 219, 140, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132,
+			134, 0, 7, 6, 1, 48, 0, 217, 135, 217, 133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 6, 72, 35, 107, 39, 65, 0,
+			4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 72, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67,
+			0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217,
+			136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 175, 216, 18, 74, 2, 18, 68, 18, 74,
+			32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140,
+			18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68,
+			18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18,
+			74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74,
+			32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217,
+			2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32,
+			12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8,
+			162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179,
+			216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 72, 35, 0, 1, 18, 68, 18, 66,
+			2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71,
+			18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 175, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18,
+			68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128,
+			18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216,
+			167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0,
+			8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8,
+			18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217,
+			2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2,
+			219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170,
+			216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69,
+			18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 216, 177, 8, 2, 18, 69, 18,
+			74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 72, 35, 51, 0, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130,
+			0, 216, 177, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 72, 35, 51, 72, 0, 4, 216, 179, 216, 170, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 131, 3, 72, 35, 89, 47, 0, 216, 179, 216, 170, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131,
+			0, 216, 179, 216, 170, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 180, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 131, 3, 72, 35, 91, 47, 0, 217, 135, 217, 134, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 72,
+			35, 107, 35, 50, 72, 36, 12, 0, 217, 135, 217, 134, 216, 175, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 72, 35,
+			107, 35, 50, 72, 36, 57, 36, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 72, 36, 0, 8, 18, 69, 170, 216, 179,
+			216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2,
+			18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32,
+			0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 216, 177, 216, 167,
+			216, 178, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 72, 36, 51, 108, 88, 0, 216, 177, 216, 167, 216, 178, 8, 2, 216,
+			162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 217, 132, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 72, 36, 55, 0, 217,
+			132, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 217, 132, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128,
+			132, 130, 0, 217, 135, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 72, 36, 107, 37, 0, 4, 219, 140, 216, 177, 8,
+			2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 72, 37, 51, 0, 219, 140, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74,
+			28, 2, 14, 128, 132, 131, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 72, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18,
+			68, 32, 0, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74,
+			28, 2, 14, 128, 132, 130, 0, 4, 216, 177, 216, 179, 216, 170, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 72, 39, 34,
+			39, 89, 47, 0, 216, 177, 216, 179, 216, 170, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 174, 216, 170, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 131, 3, 72, 39, 101, 47, 0, 217, 136, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3,
+			72, 40, 88, 0, 217, 136, 216, 179, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 72, 40, 89, 47, 0, 217, 136, 216,
+			180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 72, 40, 91, 0, 4, 2, 217, 145, 18, 73, 3, 72, 72, 0, 2, 217, 145,
+			32, 0, 4, 2, 217, 145, 18, 68, 3, 72, 72, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69,
+			170, 216, 133, 217, 2, 18, 68, 32, 3, 72, 72, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18,
+			69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 72, 72, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 217,
+			134, 217, 135, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 72, 108, 50, 107, 108, 0, 216, 167, 217, 134, 217, 135, 216,
+			167, 219, 140, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 135, 3, 72, 108, 50, 107, 108, 37, 12, 0, 216, 167, 217, 134, 217,
+			135, 216, 167, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 72, 108, 50, 107, 108, 57, 36, 0, 216, 167, 217, 134, 216,
+			167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 72, 108, 50, 108, 50, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 131, 3, 72, 108, 51, 0, 4, 216, 177, 216, 167, 217, 132, 8, 2, 216, 170, 18, 74, 18, 74, 12, 28, 2, 14,
+			128, 132, 132, 3, 72, 108, 51, 39, 10, 6, 0, 216, 177, 216, 167, 217, 132, 8, 2, 216, 175, 18, 74, 18, 74, 12, 28, 2, 14, 128,
+			132, 132, 0, 4, 216, 177, 216, 167, 217, 132, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 3, 72, 108, 51, 39, 55,
+			0, 216, 177, 216, 167, 217, 132, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 0, 216, 167, 216, 175, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 131, 3, 72, 108, 72, 0, 216, 167, 216, 180, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3,
+			72, 108, 91, 47, 0, 7, 6, 1, 49, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 88, 0, 1, 18, 66, 18, 74,
+			2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32,
+			12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217,
+			136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 176, 216, 18, 74, 2, 18, 68, 18, 74,
+			32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140,
+			18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68,
+			18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18,
+			74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74,
+			32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217,
+			2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32,
+			12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8,
+			162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167, 216, 136,
+			217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74,
+			2, 216, 171, 32, 12, 3, 88, 35, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 179, 32, 12,
+			0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 181, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216,
+			186, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 130, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68,
+			2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1,
+			18, 74, 2, 216, 176, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2,
+			18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128,
+			18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68,
+			0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8,
+			18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0,
+			8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0,
+			8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216,
+			2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8,
+			170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4,
+			8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 88, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0,
+			8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216,
+			18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18,
+			69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74,
+			28, 2, 14, 128, 132, 130, 3, 88, 37, 0, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 4, 8, 2,
+			18, 69, 217, 136, 18, 68, 32, 3, 88, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 4, 217, 136, 216, 167, 217,
+			132, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 88, 39, 55, 0, 217, 136, 216, 167, 217, 132, 8, 2, 216, 162, 18, 74,
+			18, 74, 14, 128, 132, 132, 0, 4, 2, 217, 145, 18, 73, 3, 88, 88, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 88,
+			88, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3,
+			88, 88, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12,
+			3, 88, 88, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 7, 6, 1, 50, 0, 4, 1, 18, 66, 18, 74, 2,
+			18, 68, 18, 74, 32, 3, 51, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12,
+			24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 177, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0,
+			2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128,
+			217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12,
+			12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136,
+			219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2,
+			18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18,
+			68, 18, 68, 2, 216, 175, 32, 12, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8,
+			133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18,
+			68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68,
+			18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69,
+			170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74,
+			2, 18, 68, 32, 3, 51, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18,
+			68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 177, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2,
+			18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217,
+			128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136,
+			216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68,
+			0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18,
+			68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18,
+			68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18,
+			74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8,
+			134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68,
+			32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216,
+			133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 217, 134,
+			218, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 51, 35, 50, 81, 0, 217, 134, 218, 175, 8, 2, 18, 69, 18, 74, 18,
+			74, 14, 128, 132, 131, 0, 217, 134, 218, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 217, 136, 216, 167, 217, 134, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 51, 35, 84, 108, 50, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3,
+			51, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32,
+			12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2,
+			18, 68, 32, 0, 4, 216, 182, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 51, 36, 88, 108, 0, 216, 182, 216, 167,
+			8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 182, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0,
+			216, 179, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 51, 36, 89, 108, 50, 0, 4, 219, 140, 216, 178, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 51, 37, 88, 0, 219, 140, 216, 178, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132,
+			131, 0, 219, 140, 216, 178, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3,
+			51, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 216, 168, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131,
+			3, 51, 39, 71, 108, 0, 4, 2, 217, 145, 18, 73, 3, 51, 51, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 51, 51,
+			35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 51, 51,
+			36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 51,
+			51, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 217, 134, 217, 135, 216, 167, 1, 18, 74, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 133, 3, 51, 108, 50, 107, 35, 0, 216, 167, 217, 134, 217, 135, 216, 167, 219, 140, 219, 140, 1, 18, 74, 18,
+			74, 18, 74, 2, 32, 14, 136, 128, 135, 3, 51, 108, 50, 107, 108, 37, 12, 0, 216, 167, 217, 134, 217, 135, 216, 167, 219, 140, 1, 18,
+			74, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 51, 108, 50, 107, 108, 57, 36, 0, 216, 167, 217, 134, 216, 167, 217, 134, 1, 18,
+			74, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 51, 108, 50, 108, 50, 0, 216, 167, 216, 179, 216, 170, 8, 2, 216, 162, 18, 74,
+			18, 74, 14, 128, 132, 132, 3, 51, 108, 89, 47, 0, 216, 167, 216, 179, 216, 170, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132,
+			3, 51, 108, 89, 47, 12, 0, 7, 6, 1, 51, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 88, 0, 1, 18, 66,
+			18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18,
+			72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74,
+			2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 178, 216, 18, 74, 2, 18, 68,
+			18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217,
+			128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217,
+			128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136,
+			219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2,
+			18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18,
+			68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71,
+			18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8,
+			133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18,
+			68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12,
+			0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167,
+			216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66,
+			18, 66, 2, 18, 68, 32, 3, 88, 35, 0, 1, 18, 66, 18, 74, 2, 216, 171, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32,
+			12, 0, 1, 18, 66, 18, 74, 2, 216, 179, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12, 0, 1, 18, 66, 18, 74, 2,
+			216, 181, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 130, 32, 12, 0, 1, 18, 68,
+			18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1,
+			18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 178, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128,
+			217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217,
+			136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71,
+			32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18,
+			74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12,
+			0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8,
+			133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133,
+			217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170,
+			216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217,
+			2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 216, 177, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131,
+			3, 88, 35, 51, 72, 0, 216, 177, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 216, 175, 217, 134, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 88, 35, 72, 35, 50, 0, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 12, 14,
+			136, 128, 131, 3, 88, 35, 72, 36, 12, 0, 216, 175, 219, 128, 1, 18, 74, 18, 74, 2, 32, 12, 14, 136, 128, 131, 3, 88, 35, 72,
+			36, 57, 36, 0, 216, 175, 218, 175, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 88, 35, 72, 36, 81, 37, 0, 4,
+			8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 88, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0,
+			8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216,
+			18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18,
+			69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 219, 140, 216, 177, 8, 2, 18, 69, 18, 74,
+			18, 74, 28, 2, 14, 128, 132, 131, 3, 88, 37, 51, 0, 219, 140, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132,
+			131, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 88, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 216,
+			175, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 88, 39, 72, 108, 0, 4, 217, 136, 216, 175, 8, 2, 18, 69, 18,
+			74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 88, 40, 72, 0, 217, 136, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128,
+			132, 131, 0, 4, 2, 217, 145, 18, 73, 3, 88, 88, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 88, 88, 35, 0, 8,
+			18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 88, 88, 36, 0,
+			8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 88, 88, 39,
+			0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 1, 45, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 88,
+			108, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 88, 108, 51, 0, 216, 167, 216, 175, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 131, 3, 88, 108, 72, 0, 7, 6, 1, 52, 0, 4, 216, 170, 1, 18, 68, 18, 74, 2, 32, 12, 12, 24,
+			14, 136, 128, 130, 3, 35, 89, 47, 0, 216, 170, 1, 45, 18, 67, 2, 32, 12, 24, 14, 136, 128, 130, 0, 216, 170, 1, 45, 18, 68,
+			2, 32, 12, 24, 14, 136, 128, 130, 0, 216, 170, 216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 36, 89, 47,
+			108, 50, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 89, 0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18,
+			66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18,
+			68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 179, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0,
+			2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128,
+			217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12,
+			12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136,
+			219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2,
+			18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162,
+			216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68,
+			32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8,
+			140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162,
+			216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2,
+			219, 140, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32,
+			12, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 3, 89, 12, 35, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68,
+			32, 12, 3, 89, 12, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18,
+			68, 32, 12, 3, 89, 12, 39, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 89, 35, 0, 1, 18, 66, 18, 74, 2, 216, 176,
+			32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 178, 32, 12, 0, 1, 18, 66, 18, 74,
+			2, 216, 180, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 182, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 184, 32, 12, 0, 1, 18,
+			66, 18, 74, 2, 217, 132, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1,
+			18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 179, 12,
+			12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128,
+			18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18,
+			68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18,
+			70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18,
+			68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74,
+			32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18,
+			74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2,
+			18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8,
+			170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18,
+			69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 217, 134, 216, 172, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 35, 50, 75, 0, 4, 217, 134, 218, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132,
+			131, 3, 89, 35, 50, 81, 0, 217, 134, 218, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 216, 177, 8, 2, 18,
+			69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 89, 35, 51, 0, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128,
+			132, 130, 0, 216, 177, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 35, 51, 108, 0, 4, 216, 168, 216, 178, 8,
+			2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 89, 35, 71, 88, 0, 216, 168, 216, 178, 8, 2, 216, 162, 18, 74, 18, 74, 14,
+			128, 132, 131, 0, 217, 136, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 89, 35, 84, 108, 51, 0, 4, 8,
+			18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 89, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8,
+			134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18,
+			69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69,
+			2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 216, 170, 8, 2, 32, 3, 89, 36, 47, 0, 216, 170,
+			219, 140, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 89, 36, 47, 37, 88, 0, 4, 217, 190, 219, 140, 216, 175, 8,
+			2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 89, 36, 48, 37, 72, 0, 217, 190, 219, 140, 216, 175, 8, 2, 216, 162, 18, 74,
+			18, 74, 14, 128, 132, 132, 0, 217, 190, 219, 140, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 177, 216, 180,
+			216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 89, 36, 51, 36, 91, 47, 0, 4, 219, 140, 216, 175, 8, 2, 18, 69,
+			18, 74, 18, 74, 14, 128, 132, 131, 3, 89, 36, 57, 57, 36, 72, 0, 219, 140, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128,
+			132, 131, 0, 219, 140, 217, 145, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 219, 140, 217, 145, 216, 175, 8, 2,
+			216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 217, 129, 219, 140, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132,
+			3, 89, 36, 83, 37, 72, 0, 217, 129, 219, 140, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 8, 2, 18,
+			69, 217, 136, 18, 68, 32, 3, 89, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 217, 136, 216, 161, 8, 2, 18,
+			74, 18, 74, 14, 128, 132, 131, 3, 89, 40, 19, 36, 0, 4, 216, 170, 1, 18, 66, 18, 74, 2, 32, 12, 12, 24, 14, 136, 128, 130,
+			3, 89, 47, 0, 216, 170, 1, 45, 18, 66, 2, 32, 12, 24, 14, 136, 128, 130, 0, 216, 170, 216, 167, 217, 134, 1, 18, 66, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 89, 47, 108, 50, 0, 4, 2, 217, 145, 18, 73, 3, 89, 89, 0, 2, 217, 145, 32, 0, 2, 217, 145,
+			18, 68, 3, 89, 89, 35, 0, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 89, 89, 39, 0, 216, 167, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 130, 3, 89, 108, 0, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 108, 50, 0,
+			4, 216, 167, 217, 134, 216, 170, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 89, 108, 50, 47, 37, 0, 216, 167,
+			217, 134, 216, 170, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32,
+			14, 136, 128, 131, 3, 89, 108, 51, 0, 216, 167, 217, 132, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 108, 55, 0, 216,
+			167, 217, 132, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 89, 108, 55, 108, 51, 0, 216, 167, 216, 178, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 108, 88, 0, 7, 6, 1, 53, 0, 4, 1, 18, 68, 18, 74, 18, 74, 2, 32,
+			24, 14, 136, 128, 129, 3, 35, 91, 0, 1, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 217, 136, 1, 18, 68, 18,
+			74, 2, 32, 24, 14, 136, 128, 130, 3, 36, 91, 39, 0, 217, 136, 217, 134, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3,
+			36, 91, 40, 50, 0, 4, 216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 36, 91, 108, 50, 0, 216, 167,
+			217, 134, 1, 136, 217, 18, 66, 2, 32, 24, 14, 136, 128, 131, 0, 1, 140, 219, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128,
+			129, 3, 57, 35, 91, 0, 4, 216, 167, 217, 134, 1, 140, 219, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 57, 36, 91, 108,
+			50, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 216, 167, 217, 134, 1,
+			140, 219, 175, 218, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 140, 219, 18,
+			66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 91, 0, 1, 18, 66, 18,
+			74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72,
+			32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2,
+			217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 180, 216, 18, 74, 2, 18, 68, 18,
+			74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128,
+			217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128,
+			18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219,
+			140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18,
+			68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68,
+			18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18,
+			74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133,
+			217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68,
+			32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0,
+			8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167, 216,
+			136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 216, 167, 216, 175,
+			8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 91, 6, 108, 72, 0, 216, 167, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74,
+			14, 128, 132, 131, 0, 4, 216, 167, 217, 135, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 91, 6, 108, 107, 0, 216, 167,
+			217, 135, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 91, 35, 0, 1,
+			18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32,
+			0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 180, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74,
+			18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2,
+			217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8,
+			2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70,
+			18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18,
+			68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68,
+			32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74,
+			0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134,
+			217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0,
+			8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216,
+			133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 217, 134, 216, 168, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 91, 35, 50, 71, 36, 12, 0, 217, 136, 217, 134, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 91, 35,
+			84, 35, 50, 72, 36, 12, 0, 217, 136, 217, 134, 216, 175, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 91, 35, 84,
+			35, 50, 72, 36, 57, 36, 0, 217, 135, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 35, 107, 51, 0, 4, 8,
+			18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 91, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8,
+			134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18,
+			69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69,
+			2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 218, 169, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 131, 3, 91, 36, 49, 35, 50, 0, 217, 134, 216, 167, 216, 179, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 91, 36,
+			50, 108, 89, 0, 217, 134, 216, 167, 216, 179, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 91, 36, 50, 108,
+			89, 108, 50, 0, 217, 134, 216, 167, 216, 174, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 91, 36, 50, 108, 101, 47,
+			0, 4, 219, 140, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 91, 37, 51, 20, 0, 219, 140, 216, 177, 8, 2,
+			216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 91, 39, 0, 8, 167, 216, 18, 69,
+			170, 216, 2, 18, 68, 32, 12, 0, 217, 136, 1, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 130, 0, 217, 133, 216, 167, 216, 177, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 91, 39, 65, 108, 51, 0, 216, 175, 217, 134, 1, 18, 74, 18, 74, 18, 74, 2, 32,
+			14, 136, 128, 131, 3, 91, 39, 72, 35, 50, 0, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 39, 72,
+			36, 12, 0, 216, 175, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 39, 72, 36, 57, 36, 0, 216, 175, 218, 175,
+			216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 91, 39, 72, 36, 81, 108, 50, 0, 217, 136, 219, 140, 219, 140,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 91, 40, 37, 12, 0, 217, 136, 217, 134, 1, 18, 66, 18, 74, 2, 32, 24, 14,
+			136, 128, 131, 3, 91, 40, 50, 0, 217, 136, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 40, 51, 0, 4, 2,
+			217, 145, 18, 73, 3, 91, 91, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 91, 91, 35, 0, 8, 18, 69, 133, 217, 2,
+			217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 91, 91, 36, 0, 8, 18, 69, 170, 216,
+			133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 91, 91, 39, 0, 8, 18, 69, 170,
+			216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 108, 72, 0, 216,
+			167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 91, 108, 107, 0, 7, 6, 1, 54, 0, 4, 1, 18, 66, 18, 74,
+			2, 18, 68, 18, 74, 32, 3, 89, 0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24,
+			0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70,
+			18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74,
+			18, 74, 32, 0, 1, 181, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217,
+			128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8,
+			2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68,
+			18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2,
+			18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0,
+			8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18,
+			68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217,
+			2, 18, 69, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 3, 89, 12, 35, 0, 4, 8, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 12, 3, 89, 12, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 8, 18, 69,
+			170, 216, 2, 217, 145, 18, 68, 32, 12, 3, 89, 12, 39, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 89, 35, 0, 1, 18,
+			66, 18, 74, 2, 216, 176, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 178, 32, 12,
+			0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 182, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216,
+			184, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 132, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68,
+			2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1,
+			18, 74, 2, 216, 181, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2,
+			18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128,
+			18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68,
+			0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8,
+			18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0,
+			8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0,
+			8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216,
+			2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8,
+			170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4,
+			216, 175, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 89, 35, 72, 34, 0, 216, 175, 216, 177, 8, 2, 216, 162,
+			18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 89, 36, 0, 8, 18, 69, 170,
+			216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18,
+			69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2,
+			18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 217,
+			129, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 89, 36, 83, 35, 47, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68,
+			32, 3, 89, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 4, 2, 217, 145, 18, 73, 3, 89, 89, 0, 2, 217,
+			145, 32, 0, 2, 217, 145, 18, 68, 3, 89, 89, 35, 0, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 89, 89, 39, 0, 4,
+			216, 167, 216, 173, 216, 168, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 89, 108, 107, 36, 71, 0, 216, 167, 216, 173, 216,
+			168, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 7, 6, 1, 55, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74,
+			32, 3, 88, 0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0,
+			1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68,
+			18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1,
+			182, 216, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2,
+			217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66,
+			0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140,
+			18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74,
+			18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68,
+			18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8,
+			18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18,
+			69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0,
+			8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8,
+			162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217,
+			2, 219, 140, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 88, 35, 0, 1, 18, 66, 18, 74, 2, 216, 171, 32, 12, 0, 1, 18,
+			66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 179, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12,
+			0, 1, 18, 66, 18, 74, 2, 216, 181, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217,
+			130, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2,
+			18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 182, 12, 12, 12, 0, 1, 18,
+			74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217,
+			128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217,
+			136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8,
+			18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18,
+			68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68,
+			167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32,
+			12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68,
+			18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12,
+			12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32,
+			12, 3, 88, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18,
+			68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8,
+			167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18,
+			69, 133, 217, 2, 18, 68, 32, 0, 4, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 88, 36, 72, 72,
+			36, 0, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 216, 175, 217, 145, 8, 2, 18, 69, 18, 74, 18,
+			74, 14, 128, 132, 131, 0, 216, 175, 217, 145, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 8, 2, 18, 69, 217, 136,
+			18, 68, 32, 3, 88, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 4, 2, 217, 145, 18, 73, 3, 88, 88, 0,
+			2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 88, 88, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4,
+			8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 88, 88, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32,
+			0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 88, 88, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12,
+			0, 7, 6, 1, 56, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 47, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32,
+			12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32,
+			0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 183, 216, 18,
+			74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18,
+			67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217,
+			128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0,
+			8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18,
+			69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219,
+			167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2,
+			216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140,
+			32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 47, 35,
+			0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18,
+			71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 183, 12, 12, 12, 0, 1, 18, 74, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128,
+			0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67,
+			0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2,
+			18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74,
+			18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0,
+			8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18,
+			68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170,
+			216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 217, 132,
+			216, 168, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 47, 35, 55, 35, 71, 0, 217, 132, 216, 168, 216, 167, 217, 134, 1, 18,
+			74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 47, 35, 55, 35, 71, 108, 50, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32,
+			3, 47, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68,
+			32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216,
+			18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217,
+			2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 47, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32,
+			0, 4, 2, 217, 145, 18, 73, 3, 47, 47, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 47, 47, 35, 0, 8, 18, 69,
+			133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 47, 47, 36, 0, 8, 18, 69,
+			170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 47, 47, 39, 0, 8, 18,
+			69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 7, 6, 1, 57, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 88,
+			0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68,
+			18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32,
+			0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 184, 216, 18,
+			74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18,
+			67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217,
+			128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0,
+			8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18,
+			69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219,
+			167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2,
+			216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140,
+			32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0,
+			4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 88, 35, 0, 1, 18, 66, 18, 74, 2, 216, 171, 32, 12, 0, 1, 18, 66, 18, 74,
+			2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 179, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 180, 32, 12, 0, 1, 18,
+			66, 18, 74, 2, 216, 181, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 130, 32, 12,
+			0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 70, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18,
+			71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 216, 184, 12, 12, 12, 0, 1, 18, 74, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128,
+			0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67,
+			0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2,
+			18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74,
+			18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0,
+			8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32,
+			12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8,
+			170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 88,
+			36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12,
+			12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217,
+			2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 88, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32,
+			12, 0, 4, 2, 217, 145, 18, 73, 3, 88, 88, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 88, 88, 35, 0, 8, 18,
+			69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 88, 88, 36, 0, 8,
+			18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 88, 88, 39, 0,
+			8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 7, 6, 1, 58, 0, 8, 2, 216, 167, 3, 0, 1, 18, 74, 2, 32, 3,
+			6, 19, 0, 4, 216, 168, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 6, 35, 12, 71, 72, 0, 216, 168, 216,
+			175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 19, 0, 1,
+			18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70,
+			18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 185, 216, 18, 74,
+			2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217,
+			128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217,
+			128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 68, 167, 216, 2, 32, 0, 8, 18, 68, 18, 68, 170, 216, 2, 32, 0, 8, 18, 68, 18, 74, 18, 66, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 69, 18, 69, 133, 217, 2, 32, 0, 8, 18, 69, 18,
+			69, 170, 216, 133, 217, 2, 32, 0, 8, 18, 69, 167, 216, 18, 69, 170, 216, 2, 32, 0, 8, 18, 69, 167, 216, 18, 69, 170, 216, 133,
+			217, 2, 32, 0, 8, 18, 69, 170, 216, 18, 69, 133, 217, 2, 32, 0, 8, 18, 69, 170, 216, 179, 216, 167, 216, 2, 216, 167, 18, 68,
+			32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18,
+			74, 18, 74, 134, 217, 133, 217, 2, 32, 0, 8, 18, 74, 167, 216, 18, 74, 133, 217, 2, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219,
+			167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0,
+			8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 8, 170, 216, 179, 216, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 0, 4, 2, 217, 145, 18, 73, 3, 19, 19, 0, 2,
+			217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 19, 19, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8,
+			18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 19, 19, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4,
+			8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 19, 19, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 4,
+			1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 19, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18,
+			68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74,
+			2, 216, 185, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68,
+			0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68,
+			0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8,
+			18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0,
+			8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0,
+			8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 167, 216,
+			136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18,
+			68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68,
+			32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 19, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2,
+			18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12,
+			0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216,
+			136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18,
+			68, 32, 3, 19, 39, 0, 8, 2, 217, 136, 3, 35, 0, 8, 2, 18, 68, 3, 35, 12, 0, 4, 217, 132, 219, 140, 1, 18, 74, 18,
+			74, 2, 32, 24, 14, 136, 128, 131, 3, 35, 12, 55, 37, 0, 217, 132, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131,
+			0, 217, 132, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 216, 168, 216, 175, 216, 167, 217, 132, 8, 2, 18,
+			69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 35, 71, 72, 39, 55, 6, 0, 216, 168, 216, 175, 216, 167, 217, 132, 8, 2, 216, 162, 18,
+			74, 18, 74, 14, 128, 132, 133, 0, 8, 2, 219, 140, 3, 36, 0, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 39, 0, 7, 6, 1,
+			59, 0, 4, 219, 140, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 6, 104, 17, 36, 57, 51, 36, 0, 219, 140,
+			216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 104, 17,
+			0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1,
+			18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 186, 216, 18, 74, 2,
+			18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0,
+			2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2,
+			217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18,
+			68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8,
+			18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12,
+			0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216,
+			2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175,
+			32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0,
+			8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 104, 17, 35, 0,
+			1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74,
+			32, 0, 1, 18, 74, 2, 216, 186, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74,
+			32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219,
+			140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18,
+			68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74,
+			18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74,
+			18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0,
+			8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18,
+			68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170,
+			216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8,
+			18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 104, 17, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8,
+			134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18,
+			69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2,
+			18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 104, 17, 39,
+			0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 217, 132, 216, 167, 217, 133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			132, 3, 104, 17, 39, 55, 108, 65, 0, 217, 132, 216, 167, 217, 133, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 132,
+			216, 167, 217, 133, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 2, 217, 145, 18, 73, 3, 104, 17, 104, 17, 0, 2,
+			217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 104, 17, 104, 17, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0,
+			4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 104, 17, 104, 17, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18,
+			68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 104, 17, 104, 17, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145,
+			18, 68, 32, 12, 0, 7, 6, 1, 65, 0, 3, 0, 7, 6, 1, 66, 0, 4, 1, 18, 70, 18, 68, 18, 74, 2, 18, 70, 32, 3,
+			35, 83, 0, 8, 18, 71, 18, 68, 162, 216, 2, 18, 70, 32, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 83, 0,
+			1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18,
+			66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0,
+			1, 18, 71, 18, 68, 2, 18, 70, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 1, 129, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2,
+			217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128,
+			217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0,
+			8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18,
+			74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68,
+			2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68,
+			18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71,
+			162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18,
+			68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2,
+			18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32,
+			12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68,
+			32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 83,
+			35, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32, 12, 0, 1, 18, 66, 18, 74, 2,
+			217, 130, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 132, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 133, 32, 12, 0, 1, 18, 66,
+			18, 74, 2, 217, 134, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0,
+			1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 129, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18,
+			74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217,
+			128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2,
+			217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71,
+			18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18,
+			74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18,
+			68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18,
+			68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12,
+			0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68,
+			32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32,
+			12, 12, 0, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 83, 35, 51, 0, 216, 177, 217, 134, 218, 175, 219, 140, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 83, 35, 51, 35, 50, 81, 37, 0, 216, 177, 219, 140, 216, 168, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 83, 35, 51, 37, 71, 0, 216, 177, 217, 133, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 83, 35, 51, 65, 108, 0, 216, 177, 216, 179, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 83, 35, 51, 89, 108,
+			0, 4, 216, 177, 216, 167, 8, 2, 18, 69, 18, 74, 28, 2, 14, 128, 132, 131, 3, 83, 35, 51, 108, 0, 216, 177, 216, 167, 8, 2,
+			216, 162, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 83, 36, 0, 8, 18,
+			69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167,
+			216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133,
+			217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32,
+			0, 216, 180, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 83, 36, 91, 108, 50, 0, 4, 8, 2, 18, 69,
+			217, 136, 18, 68, 32, 3, 83, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 216, 177, 217, 136, 216, 180, 1, 18,
+			74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 83, 39, 51, 40, 91, 0, 4, 2, 217, 145, 18, 73, 3, 83, 83, 0, 2, 217, 145, 32,
+			0, 4, 2, 217, 145, 18, 68, 3, 83, 83, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 12, 3, 83, 83, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18,
+			69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 83, 83, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 217,
+			133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 83, 108, 65, 0, 7, 6, 1, 67, 0, 4, 8, 18, 69, 170, 216, 133, 217,
+			2, 18, 68, 32, 3, 104, 12, 104, 17, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 1, 18, 66, 18,
+			74, 2, 18, 68, 18, 74, 32, 3, 104, 17, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68,
+			18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74,
+			18, 74, 32, 0, 1, 130, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217,
+			128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8,
+			2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68,
+			18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66,
+			2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0,
+			8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18,
+			68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 216, 167, 216, 168,
+			217, 132, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 104, 17, 6, 108, 71, 36, 55, 36, 0, 216, 167, 216, 168, 217, 132,
+			8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 104, 17, 35, 0, 1, 18,
+			68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0,
+			1, 18, 74, 2, 217, 130, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0,
+			2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217,
+			128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18,
+			68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0,
+			8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68,
+			2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68,
+			32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74,
+			0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134,
+			217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32,
+			12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133,
+			217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69,
+			134, 217, 133, 217, 2, 18, 68, 32, 3, 104, 17, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217,
+			167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133,
+			217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68,
+			32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 216, 177, 217, 133, 216, 178, 8, 2, 18, 69, 18, 74, 18, 74, 14,
+			128, 132, 132, 3, 104, 17, 36, 51, 65, 36, 88, 0, 216, 177, 217, 133, 216, 178, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132,
+			0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 104, 17, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 2,
+			217, 145, 18, 73, 3, 104, 17, 104, 17, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 104, 17, 104, 17, 35, 0, 8, 18,
+			69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 104, 17, 104, 17, 39, 0,
+			8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 7, 6, 1, 69, 0, 4, 1, 18, 70, 18, 68, 18, 74, 2, 18, 70, 32,
+			3, 35, 55, 0, 8, 18, 71, 18, 68, 162, 216, 2, 18, 70, 32, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 55,
+			0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68,
+			18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0, 1, 18, 71, 18, 68, 2, 18, 70, 32, 0, 1,
+			18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 132, 217, 18, 74, 2,
+			18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0,
+			2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2,
+			217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18,
+			68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0,
+			8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8,
+			18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12,
+			0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216,
+			2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175,
+			32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 2, 217, 132, 217, 135, 32, 12, 12, 12, 0, 8,
+			167, 216, 2, 217, 132, 217, 145, 217, 135, 32, 12, 12, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 167,
+			216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66,
+			18, 66, 2, 18, 68, 32, 3, 55, 35, 0, 1, 18, 66, 18, 74, 2, 216, 177, 32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32,
+			12, 0, 1, 18, 66, 18, 74, 2, 217, 130, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 133, 32, 12, 0, 1, 18, 66, 18, 74, 2,
+			217, 134, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74,
+			2, 217, 132, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68,
+			0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68,
+			0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8,
+			18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68,
+			2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68,
+			18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0,
+			8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133,
+			217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217,
+			2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216,
+			2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2,
+			18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 55, 36, 0, 8, 18, 69,
+			170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216,
+			18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217,
+			2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0,
+			4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 55, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 217, 136, 218,
+			175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 55, 39, 81, 0, 217, 136, 218, 152, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 131, 3, 55, 39, 90, 0, 217, 136, 218, 152, 219, 140, 218, 169, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 55, 39, 90,
+			37, 49, 0, 4, 2, 217, 145, 18, 73, 3, 55, 55, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 55, 55, 35, 0, 8,
+			18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 55, 55, 36, 0,
+			8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 55, 55, 39,
+			0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 132, 217, 167, 216, 2, 217, 135, 32, 12, 12, 3, 55, 108, 0,
+			8, 132, 217, 167, 216, 2, 217, 145, 217, 135, 32, 0, 7, 6, 1, 70, 0, 4, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136,
+			128, 129, 3, 35, 65, 0, 1, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 217, 136, 217, 134, 1, 18, 68, 18, 74,
+			2, 32, 24, 14, 136, 128, 131, 3, 36, 65, 40, 50, 0, 4, 216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 131, 3,
+			36, 65, 108, 50, 0, 216, 167, 217, 134, 1, 136, 217, 18, 66, 2, 32, 14, 136, 128, 131, 0, 4, 216, 167, 217, 134, 1, 140, 219, 18,
+			68, 18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 36, 65, 108, 50, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 18, 68, 18, 74, 18,
+			74, 2, 32, 24, 14, 136, 128, 131, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128,
+			131, 0, 216, 167, 217, 134, 1, 140, 219, 175, 218, 140, 219, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 4, 1, 18, 66, 18,
+			74, 2, 18, 68, 18, 74, 32, 3, 65, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18,
+			66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18,
+			74, 32, 0, 1, 133, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 12, 12, 0, 2, 32, 0, 2,
+			217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128,
+			217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0,
+			8, 2, 217, 136, 18, 69, 217, 136, 18, 68, 32, 12, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67,
+			0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66,
+			0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2,
+			18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18,
+			68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 18,
+			69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0,
+			8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8,
+			162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217,
+			2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32,
+			3, 65, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2,
+			18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 133, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74,
+			18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0,
+			2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 18, 69, 18, 69, 18, 68, 32, 12, 0, 8, 2, 18, 69,
+			18, 69, 217, 136, 18, 68, 32, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68,
+			0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8,
+			18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32,
+			12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18,
+			74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2,
+			18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8,
+			167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217,
+			145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145,
+			18, 68, 32, 12, 12, 0, 217, 134, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 35, 50, 36, 91, 0, 217, 134,
+			216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 35, 50, 72, 0, 216, 177, 216, 175, 1, 18, 74, 18, 74, 2, 32,
+			14, 136, 128, 131, 3, 65, 35, 51, 72, 0, 216, 177, 216, 175, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3,
+			65, 35, 51, 72, 108, 50, 0, 4, 216, 175, 216, 167, 216, 177, 1, 170, 216, 140, 219, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3,
+			65, 35, 72, 108, 51, 0, 216, 175, 216, 167, 216, 177, 1, 170, 216, 145, 217, 140, 219, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 0,
+			217, 130, 216, 167, 217, 133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 65, 35, 104, 17, 108, 65, 0, 4, 217, 135, 216, 175,
+			219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 65, 35, 107, 72, 37, 0, 217, 135, 216, 175, 219, 140, 8, 2, 18, 69,
+			18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 135, 216, 175, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 162,
+			216, 168, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 35, 108, 71, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68,
+			32, 3, 65, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18,
+			68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167,
+			216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133,
+			217, 2, 18, 68, 32, 0, 4, 218, 175, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 65, 36, 81, 108,
+			0, 218, 175, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 216, 173, 217, 136, 216, 177, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 132, 3, 65, 36, 107, 84, 35, 51, 0, 4, 219, 140, 8, 2, 18, 68, 18, 74, 12, 28, 2, 14, 128, 132,
+			130, 3, 65, 37, 0, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 219, 140, 8, 2, 217, 136, 18, 74,
+			18, 74, 28, 2, 14, 128, 132, 130, 0, 4, 219, 140, 218, 169, 216, 177, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133,
+			3, 65, 37, 49, 51, 39, 0, 219, 140, 218, 169, 216, 177, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 219,
+			140, 216, 177, 216, 178, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 65, 37, 51, 88, 108, 0, 219, 140, 216, 177,
+			216, 178, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 219, 140, 217, 132, 219, 140, 8, 2, 18, 69, 18, 74,
+			18, 74, 28, 2, 14, 128, 132, 132, 3, 65, 37, 55, 37, 0, 219, 140, 217, 132, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2,
+			14, 128, 132, 132, 0, 4, 8, 2, 18, 69, 18, 69, 217, 145, 18, 68, 32, 12, 3, 65, 39, 0, 8, 2, 18, 69, 216, 170, 18, 69,
+			18, 68, 32, 0, 8, 2, 18, 69, 217, 136, 18, 68, 32, 0, 8, 2, 216, 170, 18, 69, 18, 69, 18, 68, 32, 12, 0, 8, 2, 216,
+			170, 18, 69, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 2, 216, 170, 18, 69, 216, 167, 18, 69, 18, 68, 32, 0, 8, 2, 216, 170,
+			18, 69, 216, 167, 18, 69, 219, 140, 32, 0, 8, 2, 216, 179, 216, 170, 18, 69, 18, 69, 18, 68, 32, 0, 8, 2, 217, 134, 18, 69,
+			18, 69, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 216, 177, 216, 170, 216, 182, 219, 140, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 133, 3, 65, 39, 51, 47, 36, 88, 108, 0, 216, 177, 216, 170, 216, 182, 219, 140, 8, 2, 18, 69, 18,
+			74, 18, 74, 14, 128, 132, 133, 0, 216, 177, 216, 170, 216, 182, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 216,
+			177, 216, 186, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 39, 51, 104, 17, 0, 4, 216, 172, 216, 170, 216, 168, 219, 140,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 65, 39, 75, 47, 35, 71, 108, 0, 216, 172, 216, 170, 216, 168, 219, 140, 8, 2,
+			18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 0, 216, 172, 216, 170, 216, 168, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132,
+			133, 0, 4, 216, 181, 216, 183, 217, 129, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 65, 39, 89, 47, 35, 83, 108,
+			0, 216, 181, 216, 183, 217, 129, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 0, 216, 181, 216, 183, 217, 129, 219, 140,
+			8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 216, 180, 216, 170, 216, 168, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 133, 3, 65, 39, 91, 47, 35, 71, 108, 0, 216, 180, 216, 170, 216, 168, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128,
+			132, 133, 0, 216, 180, 216, 170, 216, 168, 219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 216, 173, 217, 133, 216,
+			175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 65, 39, 107, 35, 65, 65, 35, 72, 0, 216, 173, 217, 133, 216, 175, 8, 2,
+			18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 173, 217, 133, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0,
+			216, 173, 217, 133, 217, 145, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 0, 216, 173, 217, 133, 217, 145, 216, 175, 8, 2,
+			18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 0, 216, 173, 217, 133, 217, 145, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132,
+			133, 0, 4, 216, 173, 216, 179, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 65, 39, 107, 89, 36, 50, 0, 216, 173,
+			216, 179, 217, 134, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 216, 173, 216, 179, 217, 134, 8, 2, 216, 162, 18, 74, 18,
+			74, 14, 128, 132, 132, 0, 217, 136, 217, 134, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 40, 50, 0, 4, 217, 136, 217,
+			132, 216, 170, 219, 140, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 65, 40, 55, 47, 37, 0, 217, 136, 217, 132, 216, 170,
+			219, 140, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 2, 217, 145, 18, 73, 3, 65, 65, 0, 2, 217, 145, 32, 0,
+			4, 2, 217, 145, 18, 68, 3, 65, 65, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216,
+			133, 217, 2, 18, 68, 32, 3, 65, 65, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170,
+			216, 2, 18, 68, 32, 12, 12, 3, 65, 65, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 4, 216, 167, 218, 169,
+			216, 177, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 133, 3, 65, 108, 49, 51, 39, 0, 216, 167, 218, 169, 216, 177, 217,
+			136, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 133, 0, 4, 216, 167, 219, 140, 218, 169, 216, 177, 217, 136, 8, 2, 18, 69, 18,
+			74, 18, 74, 14, 128, 132, 134, 3, 65, 108, 57, 49, 51, 39, 0, 216, 167, 219, 140, 218, 169, 216, 177, 217, 136, 8, 2, 216, 162, 18,
+			74, 18, 74, 14, 128, 132, 134, 0, 4, 216, 167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 65, 108, 107, 0, 216,
+			167, 217, 135, 8, 2, 18, 68, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 216, 167, 217, 135, 8, 2, 216, 162, 18, 74, 18, 74,
+			28, 2, 14, 128, 132, 131, 0, 7, 6, 1, 71, 0, 4, 8, 2, 18, 68, 18, 74, 18, 74, 28, 2, 14, 128, 132, 129, 3, 6, 50,
+			35, 0, 8, 2, 219, 140, 216, 167, 18, 74, 28, 2, 14, 128, 132, 129, 0, 219, 140, 8, 2, 216, 162, 18, 69, 18, 74, 18, 74, 28,
+			2, 14, 128, 132, 130, 3, 6, 50, 35, 57, 0, 4, 217, 133, 219, 140, 8, 2, 18, 69, 18, 74, 28, 2, 14, 128, 132, 131, 3, 6,
+			50, 36, 65, 37, 0, 217, 133, 219, 140, 8, 2, 216, 162, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4, 1, 18, 68, 18, 74, 18, 74,
+			2, 32, 24, 14, 136, 128, 129, 3, 35, 50, 0, 1, 18, 70, 18, 68, 18, 74, 2, 18, 70, 32, 0, 8, 18, 71, 18, 68, 162, 216,
+			2, 18, 70, 32, 0, 216, 170, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 35, 50, 35, 47, 0, 217, 133, 1,
+			18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 35, 50, 35, 65, 0, 216, 180, 1, 18, 68, 18, 74, 18, 74, 2, 32,
+			24, 14, 136, 128, 130, 3, 35, 50, 35, 91, 0, 216, 170, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128,
+			132, 3, 35, 50, 36, 47, 40, 50, 0, 216, 170, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3,
+			35, 50, 36, 47, 108, 50, 0, 217, 133, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 35, 50,
+			36, 65, 40, 50, 0, 217, 133, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 35, 50, 36, 65,
+			108, 50, 0, 216, 180, 217, 136, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 35, 50, 36, 91, 40, 50,
+			0, 216, 180, 216, 167, 217, 134, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 35, 50, 36, 91, 108, 50, 0, 216,
+			175, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 35, 50, 72, 0, 216, 175, 217, 135, 1, 18, 68, 18, 74, 2,
+			32, 14, 136, 128, 131, 3, 35, 50, 72, 36, 0, 216, 175, 219, 128, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 131, 3, 35, 50, 72,
+			36, 57, 36, 0, 216, 175, 218, 175, 219, 140, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 35, 50, 72, 36, 81, 37, 0, 216,
+			175, 218, 175, 216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 133, 3, 35, 50, 72, 36, 81, 108, 50, 0, 4, 1, 18,
+			66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 50, 0, 1, 18, 66, 18, 74, 2, 18, 68, 32, 0, 1, 18, 66, 18, 74, 2, 18, 72,
+			32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 68, 2, 18, 71, 32, 0,
+			1, 18, 71, 18, 68, 2, 18, 70, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 1, 134, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2,
+			217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128,
+			217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0,
+			8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18,
+			74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18,
+			68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18,
+			66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32,
+			0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 69, 18, 68, 32, 0, 8, 133, 217, 2, 216, 170,
+			18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8,
+			162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2,
+			216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217,
+			2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 66, 2, 18, 68, 32, 3, 50, 35, 0, 1, 18, 66, 18, 74, 2, 216, 177,
+			32, 12, 0, 1, 18, 66, 18, 74, 2, 216, 186, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 130, 32, 12, 0, 1, 18, 66, 18, 74,
+			2, 217, 132, 32, 12, 0, 1, 18, 66, 18, 74, 2, 217, 133, 32, 12, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68,
+			18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 134, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18,
+			68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128,
+			18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216,
+			167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0,
+			8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12,
+			0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18,
+			68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167,
+			216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145,
+			18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18,
+			68, 32, 12, 12, 0, 218, 169, 216, 177, 216, 175, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 50, 35, 49, 35, 51,
+			72, 35, 50, 0, 217, 134, 216, 175, 218, 175, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 50, 35, 50, 72,
+			36, 81, 108, 50, 0, 217, 133, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 50, 35, 65, 108, 0, 217, 133, 216, 167,
+			219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 35, 65, 108, 57, 36, 0, 217, 136, 216, 177, 216, 175, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 35, 84, 35, 51, 72, 0, 217, 136, 216, 167, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 132, 3, 50, 35, 84, 108, 88, 0, 216, 180, 216, 175, 217, 134, 1, 18, 74, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3,
+			50, 35, 91, 39, 72, 35, 50, 0, 217, 130, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 50, 35, 104, 17, 37, 0,
+			4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 12, 3, 50, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32,
+			0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167,
+			216, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217,
+			18, 69, 2, 18, 68, 32, 12, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 218, 175, 216, 167, 216, 177, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 132, 3, 50, 36, 81, 108, 51, 0, 217, 136, 216, 180, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			132, 3, 50, 36, 84, 36, 91, 47, 0, 217, 136, 219, 140, 216, 179, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 36, 84,
+			37, 89, 0, 218, 152, 216, 167, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 36, 90, 108, 72, 0, 216, 180, 219,
+			140, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 36, 91, 37, 50, 0, 216, 180, 216, 167, 217, 134, 216, 175, 217,
+			135, 1, 18, 74, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 50, 36, 91, 108, 50, 72, 36, 12, 0, 216, 180, 216, 167, 217, 134,
+			216, 175, 219, 128, 1, 18, 74, 18, 74, 18, 74, 2, 32, 14, 136, 128, 134, 3, 50, 36, 91, 108, 50, 72, 36, 57, 36, 0, 4, 219,
+			140, 218, 169, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 3, 50, 37, 49, 40, 0, 219, 140, 218, 169, 217,
+			136, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 132, 0, 4, 219, 140, 217, 133, 8, 2, 18, 69, 18, 74, 18, 74, 28,
+			2, 14, 128, 132, 131, 3, 50, 37, 65, 0, 219, 140, 217, 133, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4,
+			8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 50, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 12, 0, 4, 217, 136, 8,
+			2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 50, 39, 6, 0, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2,
+			14, 128, 132, 130, 0, 4, 2, 217, 145, 18, 73, 3, 50, 50, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 50, 50, 35,
+			0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 12, 3, 50, 50,
+			36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 50,
+			50, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 4, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14,
+			128, 132, 130, 3, 50, 108, 6, 0, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 216, 167, 218, 169, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 50, 108, 49, 0, 216, 167, 217, 133, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 132, 3, 50, 108, 65, 36, 12, 0, 216, 167, 217, 133, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 50, 108, 65,
+			36, 57, 36, 0, 7, 6, 1, 72, 0, 4, 1, 18, 71, 18, 70, 18, 68, 2, 32, 3, 35, 107, 0, 8, 18, 68, 2, 32, 0, 8,
+			18, 68, 18, 74, 2, 32, 0, 4, 1, 18, 68, 18, 74, 2, 32, 12, 12, 14, 136, 128, 129, 3, 36, 12, 0, 1, 136, 217, 18, 66,
+			2, 32, 0, 1, 136, 217, 18, 66, 18, 74, 2, 32, 12, 12, 14, 136, 128, 129, 0, 1, 136, 217, 18, 67, 2, 32, 0, 1, 140, 219,
+			18, 66, 2, 32, 0, 1, 140, 219, 18, 67, 2, 32, 0, 8, 18, 68, 2, 32, 12, 24, 0, 8, 168, 216, 2, 32, 12, 3, 36, 107,
+			0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 107, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18,
+			67, 0, 1, 18, 67, 2, 32, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12,
+			24, 0, 1, 18, 70, 18, 74, 2, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 1, 135, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 1, 136, 217, 18, 68, 2, 32, 0, 1, 140, 219, 18,
+			68, 2, 32, 0, 1, 162, 216, 2, 32, 0, 1, 167, 216, 2, 32, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 217, 128, 18, 66, 0,
+			2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219,
+			140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18,
+			74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18,
+			68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18,
+			74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18,
+			74, 18, 74, 2, 32, 0, 8, 132, 217, 132, 217, 167, 216, 2, 32, 12, 12, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0,
+			8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32,
+			12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8,
+			170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 216, 167, 216, 166, 219, 140, 1, 18, 74, 18, 74, 2, 32, 24, 14,
+			136, 128, 132, 3, 107, 6, 108, 37, 12, 0, 216, 167, 219, 140, 219, 140, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0, 216,
+			167, 219, 140, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 107, 6, 108, 57, 36, 0, 216, 167, 216, 179, 216, 170, 1, 18,
+			74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 107, 6, 108, 89, 47, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 107, 35,
+			0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18,
+			74, 32, 0, 1, 18, 74, 2, 217, 135, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18,
+			74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128,
+			217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136,
+			219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71,
+			18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18,
+			74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216,
+			2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18,
+			74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12,
+			0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2,
+			18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8,
+			170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4,
+			217, 133, 8, 2, 18, 69, 18, 74, 28, 2, 14, 128, 132, 130, 3, 107, 35, 65, 0, 217, 133, 8, 2, 216, 162, 18, 74, 28, 2, 14,
+			128, 132, 130, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 107, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2,
+			18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12,
+			0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216,
+			136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68,
+			32, 3, 107, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 2, 217, 145, 18, 73, 3, 107, 107, 0, 2, 217, 145,
+			32, 0, 4, 2, 217, 145, 18, 68, 3, 107, 107, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69,
+			170, 216, 133, 217, 2, 18, 68, 32, 3, 107, 107, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18,
+			69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 107, 107, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 1,
+			18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 107, 108, 0, 216, 167, 216, 170, 217, 136, 217, 134, 1, 18, 74, 18, 74, 2, 32,
+			24, 14, 136, 128, 133, 3, 107, 108, 47, 40, 50, 0, 216, 167, 219, 140, 216, 170, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132,
+			3, 107, 108, 57, 35, 47, 0, 216, 167, 219, 140, 217, 133, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 107, 108, 57, 35,
+			65, 0, 216, 167, 219, 140, 216, 180, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 107, 108, 57, 35, 91, 0, 216, 167, 219,
+			140, 216, 170, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 107, 108, 57, 36, 47, 108, 50, 0, 216, 167,
+			219, 140, 217, 133, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 107, 108, 57, 36, 65, 108, 50, 0, 216,
+			167, 219, 140, 216, 180, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 107, 108, 57, 36, 91, 108, 50, 0,
+			216, 167, 217, 133, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 107, 108, 65, 0, 216, 167, 217, 133, 217, 136, 217, 134, 1,
+			18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 3, 107, 108, 65, 40, 50, 0, 216, 167, 216, 180, 1, 18, 74, 18, 74, 2, 32, 24,
+			14, 136, 128, 131, 3, 107, 108, 91, 0, 216, 167, 216, 180, 217, 136, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 3,
+			107, 108, 91, 40, 50, 0, 7, 6, 1, 73, 0, 4, 1, 174, 216, 2, 216, 162, 12, 3, 0, 4, 8, 174, 216, 2, 216, 167, 12, 3,
+			0, 8, 174, 216, 2, 219, 140, 216, 180, 12, 3, 0, 8, 133, 217, 2, 18, 69, 217, 136, 18, 68, 32, 3, 6, 39, 12, 0, 8, 18,
+			68, 2, 216, 162, 3, 35, 84, 0, 4, 8, 170, 216, 2, 18, 69, 219, 140, 18, 69, 32, 3, 39, 0, 8, 174, 216, 2, 216, 175, 12,
+			0, 8, 174, 216, 2, 216, 177, 12, 0, 8, 174, 216, 2, 216, 180, 12, 0, 8, 174, 216, 2, 217, 132, 12, 0, 4, 1, 18, 68, 2,
+			217, 136, 32, 3, 40, 0, 1, 18, 68, 2, 219, 140, 18, 66, 0, 1, 136, 217, 2, 32, 0, 1, 136, 217, 140, 219, 2, 32, 0, 1,
+			136, 217, 162, 216, 2, 32, 0, 1, 136, 217, 167, 216, 18, 74, 2, 32, 0, 1, 140, 219, 18, 66, 2, 18, 68, 0, 1, 140, 219, 18,
+			68, 2, 18, 68, 0, 8, 136, 217, 0, 4, 1, 18, 68, 2, 18, 68, 3, 40, 12, 0, 1, 18, 68, 2, 32, 0, 1, 18, 68, 2,
+			217, 135, 32, 0, 1, 18, 68, 2, 219, 140, 32, 0, 1, 18, 74, 2, 217, 136, 18, 66, 0, 1, 128, 217, 18, 68, 2, 18, 68, 0,
+			1, 128, 217, 128, 217, 0, 1, 128, 217, 128, 217, 18, 68, 2, 18, 68, 0, 1, 128, 217, 128, 217, 128, 217, 18, 68, 2, 18, 68, 0,
+			1, 136, 217, 18, 74, 2, 18, 68, 0, 2, 217, 128, 18, 74, 0, 2, 217, 128, 217, 128, 0, 8, 140, 219, 2, 18, 68, 0, 8, 167,
+			216, 2, 18, 68, 0, 8, 167, 216, 2, 219, 140, 216, 167, 0, 8, 167, 216, 2, 219, 140, 217, 136, 0, 8, 174, 216, 2, 32, 0, 2,
+			216, 161, 3, 40, 12, 19, 0, 4, 1, 18, 67, 3, 84, 0, 1, 18, 68, 2, 216, 162, 0, 1, 18, 68, 2, 216, 167, 0, 1, 18,
+			68, 2, 219, 140, 18, 68, 0, 1, 18, 74, 2, 217, 136, 18, 68, 0, 1, 128, 217, 140, 219, 18, 74, 2, 18, 66, 0, 1, 136, 217,
+			18, 68, 2, 32, 0, 1, 136, 217, 18, 74, 2, 18, 66, 0, 1, 136, 217, 167, 216, 2, 32, 0, 1, 140, 219, 2, 32, 0, 1, 140,
+			219, 18, 74, 2, 18, 66, 0, 1, 162, 216, 2, 18, 66, 0, 1, 162, 216, 2, 32, 0, 1, 162, 216, 18, 74, 2, 18, 68, 0, 1,
+			162, 216, 18, 74, 2, 219, 140, 18, 74, 0, 1, 167, 216, 2, 32, 0, 1, 167, 216, 18, 74, 2, 18, 68, 0, 1, 167, 216, 18, 74,
+			2, 216, 162, 0, 1, 167, 216, 18, 74, 2, 216, 167, 0, 1, 167, 216, 18, 74, 2, 217, 136, 32, 0, 1, 167, 216, 18, 74, 2, 219,
+			140, 18, 74, 0, 2, 18, 67, 0, 8, 2, 18, 66, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 140, 219, 2, 18, 66,
+			0, 8, 140, 219, 167, 216, 2, 18, 66, 0, 8, 167, 216, 2, 216, 167, 0, 8, 167, 216, 2, 219, 140, 18, 68, 0, 8, 167, 216, 2,
+			219, 140, 219, 140, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18,
+			68, 32, 12, 0, 4, 1, 128, 217, 18, 66, 3, 84, 35, 0, 1, 128, 217, 18, 67, 0, 1, 128, 217, 18, 68, 2, 18, 66, 0, 1,
+			128, 217, 128, 217, 18, 66, 0, 1, 128, 217, 128, 217, 18, 67, 0, 1, 128, 217, 128, 217, 18, 68, 2, 18, 66, 0, 1, 128, 217, 128,
+			217, 128, 217, 18, 66, 0, 1, 128, 217, 128, 217, 128, 217, 18, 67, 0, 1, 128, 217, 128, 217, 128, 217, 18, 68, 2, 18, 66, 0, 1,
+			128, 217, 140, 219, 18, 74, 2, 18, 68, 0, 1, 162, 216, 2, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 32, 0, 8, 18, 68, 167,
+			216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12,
+			0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 140,
+			219, 167, 216, 2, 18, 68, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170,
+			216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69,
+			18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 217, 134, 216, 175, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 131, 3, 84, 35, 50, 72, 0, 217, 134, 216, 175, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 133, 3, 84, 35, 50, 72, 108, 50, 0, 216, 177, 1, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 84, 35, 51, 0, 216,
+			177, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 84, 35, 51, 88, 0, 4, 8, 18, 69, 170, 216, 179, 216, 133, 217,
+			2, 18, 68, 32, 3, 84, 36, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2,
+			18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32,
+			0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 84, 39, 0, 8, 167, 216,
+			18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 2, 217, 145, 18, 73, 3, 84, 84, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68,
+			3, 84, 84, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32,
+			3, 84, 84, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12,
+			12, 3, 84, 84, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32,
+			14, 136, 128, 131, 3, 84, 108, 51, 0, 4, 216, 167, 217, 132, 216, 167, 8, 2, 18, 69, 18, 74, 14, 128, 132, 132, 3, 84, 108, 55,
+			108, 0, 216, 167, 217, 132, 216, 167, 8, 2, 216, 162, 18, 74, 14, 128, 132, 132, 0, 7, 6, 1, 76, 0, 4, 3, 35, 50, 0, 1,
+			18, 69, 18, 74, 2, 32, 14, 136, 128, 129, 0, 7, 6, 1, 77, 0, 4, 3, 39, 50, 0, 1, 18, 69, 18, 74, 2, 32, 14, 136,
+			128, 129, 0, 7, 6, 1, 78, 0, 4, 3, 36, 50, 0, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 129, 0, 7, 6, 1, 79, 0,
+			8, 167, 216, 3, 6, 35, 12, 0, 4, 3, 35, 0, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 0, 7, 6, 1, 80, 0, 8,
+			167, 216, 3, 6, 39, 12, 0, 4, 3, 39, 0, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 0, 7, 6, 1, 81, 0, 8, 167,
+			216, 3, 6, 36, 12, 0, 4, 3, 36, 0, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 0, 7, 6, 1, 82, 0, 1, 18, 67,
+			3, 47, 35, 91, 72, 37, 72, 0, 7, 6, 1, 83, 0, 4, 3, 0, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 3, 0, 7,
+			6, 1, 84, 0, 3, 0, 7, 6, 1, 113, 0, 3, 108, 0, 7, 6, 1, 117, 0, 4, 3, 0, 1, 18, 69, 3, 0, 1, 167, 216,
+			3, 35, 19, 0, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 129, 3, 57, 36, 0, 7, 6, 1, 127, 0, 4, 216, 179, 8, 2,
+			18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 6, 48, 35, 89, 0, 216, 179, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2,
+			14, 128, 132, 130, 0, 4, 216, 179, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 6, 48, 35, 89, 108, 0, 216,
+			179, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 4, 219, 140, 218, 169, 217, 136, 8, 2, 18, 69, 18, 74, 18,
+			74, 14, 128, 132, 132, 3, 6, 48, 37, 49, 39, 0, 219, 140, 218, 169, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132,
+			0, 4, 219, 140, 216, 180, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 6, 48, 37, 91, 0, 219, 140, 216, 180,
+			8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4, 219, 140, 216, 180, 216, 167, 8, 2, 18, 69, 18, 74, 18, 74,
+			14, 128, 132, 132, 3, 6, 48, 37, 91, 108, 0, 219, 140, 216, 180, 216, 167, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0,
+			4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 48, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67,
+			0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2,
+			18, 68, 18, 74, 18, 74, 32, 0, 1, 190, 217, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2,
+			32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0,
+			2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219,
+			128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8,
+			18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32,
+			0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68,
+			18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2,
+			18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136,
+			217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8,
+			162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0,
+			8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4,
+			1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 48, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18,
+			68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 190, 12, 12, 12, 0, 1, 18, 74, 18, 74,
+			18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128,
+			0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67,
+			0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2,
+			18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2,
+			18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8,
+			18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8,
+			134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2,
+			18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170,
+			216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217,
+			2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 217, 134, 216, 167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48,
+			35, 50, 108, 107, 0, 216, 177, 216, 179, 216, 170, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 35, 51, 35, 89, 47, 0,
+			216, 177, 216, 175, 216, 167, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 48, 35, 51, 72, 108, 88, 0, 216, 177, 217,
+			136, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 35, 51, 84, 35, 51, 0, 216, 176, 219, 140, 216, 177, 1, 18,
+			74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 35, 88, 37, 51, 0, 216, 179, 217, 134, 216, 175, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 132, 3, 48, 35, 89, 35, 50, 72, 0, 216, 179, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 48, 35, 89,
+			108, 0, 218, 152, 217, 136, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 35, 90, 40, 107, 0, 4, 8, 18, 69,
+			134, 217, 133, 217, 2, 18, 68, 32, 3, 48, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167,
+			216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217,
+			2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32,
+			0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 217, 134, 216, 175, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 133, 3, 48, 36, 50, 72, 108, 51, 0, 219, 140, 217, 133, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 36,
+			57, 65, 108, 0, 216, 178, 216, 180, 218, 169, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 36, 88, 36, 91, 49, 0, 219,
+			140, 216, 180, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 37, 91, 36, 12, 0, 219, 140, 216, 180, 219, 128, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 48, 37, 91, 36, 57, 36, 0, 219, 140, 216, 180, 216, 167, 1, 18, 74, 18, 74, 2,
+			32, 14, 136, 128, 132, 3, 48, 37, 91, 108, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 48, 39, 0, 8, 167, 216, 18, 69,
+			170, 216, 2, 18, 68, 32, 0, 4, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 48, 39, 51, 0, 216,
+			177, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 217, 136, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			131, 3, 48, 40, 51, 0, 217, 136, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 48, 40, 91, 0, 4, 2, 217, 145,
+			18, 73, 3, 48, 48, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 48, 48, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145,
+			18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 48, 48, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2,
+			217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 48, 48, 39, 0, 8, 18, 69, 170, 216, 2, 217,
+			145, 18, 68, 32, 12, 0, 7, 6, 218, 134, 0, 4, 217, 134, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131,
+			3, 6, 76, 35, 50, 72, 0, 217, 134, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4, 216, 167, 216,
+			177, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 131, 3, 6, 76, 108, 51, 0, 216, 167, 216, 177, 8, 2, 216, 162, 18,
+			74, 18, 74, 28, 2, 14, 128, 132, 131, 0, 4, 217, 135, 216, 167, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3,
+			6, 76, 108, 107, 108, 51, 0, 217, 135, 216, 167, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 1, 18, 66,
+			18, 74, 2, 18, 68, 18, 74, 32, 3, 76, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68,
+			18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74,
+			18, 74, 32, 0, 1, 134, 218, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217,
+			128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8,
+			2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68,
+			18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 68, 18, 74, 18, 66,
+			2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 18, 69, 2, 18, 68, 32, 0,
+			8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2,
+			18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18,
+			68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18,
+			69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18,
+			74, 2, 18, 68, 32, 3, 76, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1,
+			18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 218, 134, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74,
+			2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128,
+			217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217,
+			136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71,
+			32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18,
+			74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 70, 18, 71,
+			32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74,
+			18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217,
+			2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0,
+			8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68,
+			217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217,
+			145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 76, 36, 0, 8, 18, 69, 170, 216, 179, 216,
+			133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18,
+			68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0,
+			8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 217, 135, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 130, 0, 217, 135, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 76, 36, 107, 51, 0, 217,
+			135, 216, 177, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 76, 36, 107, 51, 36, 12, 0, 217, 135, 216, 177, 219, 128,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 76, 36, 107, 51, 36, 57, 36, 0, 219, 140, 1, 18, 74, 18, 74, 18, 74, 2,
+			32, 14, 136, 128, 130, 3, 76, 37, 0, 219, 140, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 76, 37, 50, 0, 219,
+			140, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 76, 37, 57, 108, 50, 0, 4, 8, 2, 18, 69, 217, 136,
+			18, 68, 32, 3, 76, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 2, 217, 145, 18, 73, 3, 76, 76, 0, 2,
+			217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 76, 76, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8,
+			18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 76, 76, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4,
+			8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 76, 76, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 7,
+			6, 218, 152, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 90, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24,
+			0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18,
+			74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 152, 218, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2,
+			18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217,
+			128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12,
+			12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219,
+			140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18,
+			71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 69, 2, 18, 71, 18, 74, 32, 12,
+			0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0,
+			8, 18, 69, 2, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32,
+			12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68,
+			18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0,
+			8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68,
+			32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 90, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68,
+			18, 68, 2, 18, 68, 32, 0, 1, 18, 68, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 218, 152, 12, 12, 12, 0, 1,
+			18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2,
+			217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2,
+			217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0,
+			8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8,
+			18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18,
+			68, 162, 216, 2, 18, 70, 18, 71, 32, 12, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68,
+			32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68,
+			32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0,
+			8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32,
+			12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8,
+			170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 90, 36,
+			0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12,
+			0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68,
+			32, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 90, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 4, 2,
+			217, 145, 18, 73, 3, 90, 90, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 90, 90, 35, 0, 8, 18, 69, 133, 217, 2,
+			217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 90, 90, 36, 0, 8, 18, 69, 170, 216, 133,
+			217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 90, 90, 39, 0, 8, 18, 69, 170, 216,
+			2, 217, 145, 18, 68, 32, 12, 0, 7, 6, 218, 169, 0, 1, 18, 68, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 3, 35, 49, 0,
+			4, 1, 18, 66, 18, 74, 2, 18, 68, 18, 74, 32, 3, 49, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67,
+			0, 1, 18, 68, 18, 66, 2, 18, 72, 32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217,
+			136, 18, 67, 0, 1, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 169, 218, 18, 74, 2, 18, 68, 18, 74,
+			32, 12, 0, 2, 18, 66, 0, 2, 18, 67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217,
+			128, 18, 66, 0, 2, 217, 128, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18,
+			67, 0, 2, 217, 135, 32, 12, 12, 12, 0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140,
+			18, 67, 0, 8, 2, 217, 136, 219, 140, 32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68,
+			18, 66, 0, 8, 18, 68, 2, 18, 71, 18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18,
+			74, 18, 66, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74,
+			32, 12, 0, 8, 18, 71, 162, 216, 2, 18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217,
+			2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32,
+			12, 0, 8, 162, 216, 2, 18, 68, 18, 66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8,
+			162, 216, 2, 216, 177, 32, 12, 0, 8, 167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179,
+			216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68, 32, 3, 49, 35, 0, 1, 18, 68, 18, 66,
+			2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0, 1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71,
+			18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 218, 169, 12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18,
+			68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128,
+			18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2, 18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216,
+			167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0,
+			8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177, 18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18,
+			74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18, 74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8,
+			18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217,
+			2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2,
+			219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170,
+			216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69,
+			18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 12, 0, 216, 177, 216, 175, 1, 18, 74, 18,
+			74, 2, 32, 14, 136, 128, 131, 3, 49, 35, 51, 72, 0, 216, 177, 216, 175, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			3, 49, 35, 51, 72, 35, 50, 0, 217, 132, 216, 167, 217, 133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 49, 35, 55, 108,
+			65, 0, 4, 217, 133, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 3, 49, 35, 65, 0, 217, 133, 8, 2, 216, 162,
+			18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 49, 35, 72,
+			36, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 49, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2, 18, 68,
+			32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12, 0, 8,
+			167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217,
+			18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 216, 180, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 130, 3, 49, 36, 91, 0, 4, 219, 140, 217, 132, 217, 136, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 3, 49, 37, 55,
+			40, 0, 219, 140, 217, 132, 217, 136, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68,
+			32, 3, 49, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130,
+			3, 49, 39, 50, 0, 217, 134, 217, 134, 216, 175, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 49, 39, 50, 35, 50,
+			72, 36, 12, 0, 217, 134, 217, 134, 216, 175, 219, 128, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 49, 39, 50, 35, 50, 72,
+			36, 57, 36, 0, 217, 134, 217, 134, 216, 175, 218, 175, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 135, 3, 49, 39,
+			50, 35, 50, 72, 36, 81, 108, 50, 0, 4, 217, 134, 216, 175, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 3, 49, 39, 50,
+			72, 0, 217, 134, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 217, 134, 216, 167, 217, 134, 1, 18, 74, 18, 74,
+			2, 32, 14, 136, 128, 132, 3, 49, 39, 50, 108, 50, 0, 4, 217, 136, 218, 134, 218, 169, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			132, 3, 49, 40, 76, 35, 49, 0, 217, 136, 218, 134, 218, 169, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 132, 0, 217, 136, 218,
+			134, 218, 169, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 132, 0, 4, 2, 217, 145, 18, 73, 3, 49, 49, 0, 2, 217, 145, 32,
+			0, 4, 2, 217, 145, 18, 68, 3, 49, 49, 35, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170,
+			216, 133, 217, 2, 18, 68, 32, 3, 49, 49, 36, 0, 8, 18, 69, 170, 216, 133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69,
+			170, 216, 2, 18, 68, 32, 12, 12, 3, 49, 49, 39, 0, 8, 18, 69, 170, 216, 2, 217, 145, 18, 68, 32, 12, 0, 216, 167, 216, 177,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 49, 108, 51, 0, 216, 167, 217, 136, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128,
+			131, 3, 49, 108, 84, 0, 7, 6, 218, 175, 0, 4, 219, 140, 1, 18, 68, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 36, 81,
+			37, 0, 219, 140, 1, 136, 217, 18, 66, 18, 74, 2, 32, 14, 136, 128, 130, 0, 219, 140, 1, 140, 219, 18, 66, 18, 74, 2, 32, 14,
+			136, 128, 130, 0, 4, 219, 140, 217, 133, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 36, 81, 37, 57, 35, 65,
+			0, 219, 140, 217, 133, 1, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 219, 140, 217, 133, 1, 140, 219, 18, 66, 18,
+			74, 2, 32, 24, 14, 136, 128, 131, 0, 219, 140, 219, 140, 217, 133, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0,
+			219, 140, 219, 140, 217, 133, 1, 136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0, 219, 140, 219, 140, 217, 133, 1, 140, 219,
+			18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0, 216, 167, 217, 134, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 131, 3, 36, 81,
+			108, 50, 0, 216, 167, 217, 134, 216, 170, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 36, 81, 108, 50, 35, 47, 0, 216, 167,
+			217, 134, 217, 133, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 36, 81, 108, 50, 35, 65, 0, 216, 167, 217, 134, 216, 180, 1,
+			18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 36, 81, 108, 50, 35, 91, 0, 216, 167, 217, 134, 216, 170, 216, 167, 217, 134, 1, 18,
+			68, 18, 74, 2, 32, 14, 136, 128, 134, 3, 36, 81, 108, 50, 36, 47, 108, 50, 0, 216, 167, 217, 134, 217, 133, 216, 167, 217, 134, 1,
+			18, 68, 18, 74, 2, 32, 14, 136, 128, 134, 3, 36, 81, 108, 50, 36, 65, 108, 50, 0, 216, 167, 217, 134, 216, 180, 216, 167, 217, 134,
+			1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 134, 3, 36, 81, 108, 50, 36, 91, 108, 50, 0, 4, 1, 18, 66, 18, 74, 2, 18, 68,
+			18, 74, 32, 3, 81, 0, 1, 18, 66, 18, 74, 2, 18, 72, 32, 12, 24, 0, 1, 18, 67, 0, 1, 18, 68, 18, 66, 2, 18, 72,
+			32, 12, 24, 0, 1, 18, 70, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 217, 136, 18, 67, 0, 1, 18, 74, 18, 74,
+			18, 74, 2, 18, 68, 18, 74, 18, 74, 32, 0, 1, 175, 218, 18, 74, 2, 18, 68, 18, 74, 32, 12, 0, 2, 18, 66, 0, 2, 18,
+			67, 0, 2, 32, 0, 2, 217, 128, 18, 66, 0, 2, 217, 128, 18, 67, 0, 2, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128,
+			18, 67, 0, 2, 217, 128, 217, 128, 217, 128, 18, 66, 0, 2, 217, 128, 217, 128, 217, 128, 18, 67, 0, 2, 217, 135, 32, 12, 12, 12,
+			0, 2, 219, 128, 32, 0, 8, 2, 217, 136, 219, 140, 18, 66, 0, 8, 2, 217, 136, 219, 140, 18, 67, 0, 8, 2, 217, 136, 219, 140,
+			32, 0, 8, 18, 66, 18, 74, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 2, 18, 68, 18, 66, 0, 8, 18, 68, 2, 18, 71,
+			18, 68, 32, 0, 8, 18, 68, 18, 68, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 66, 2, 18, 68, 18, 74, 18,
+			74, 32, 0, 8, 18, 69, 2, 18, 68, 32, 0, 8, 18, 71, 18, 69, 2, 18, 71, 18, 74, 32, 12, 0, 8, 18, 71, 162, 216, 2,
+			18, 68, 18, 74, 32, 12, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12,
+			0, 8, 136, 217, 167, 216, 2, 18, 68, 32, 12, 0, 8, 140, 219, 167, 216, 2, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 18,
+			66, 0, 8, 162, 216, 2, 18, 68, 18, 67, 0, 8, 162, 216, 2, 216, 175, 32, 12, 0, 8, 162, 216, 2, 216, 177, 32, 12, 0, 8,
+			167, 216, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 219, 140, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32,
+			12, 0, 216, 167, 217, 134, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 6, 108, 50, 0, 216, 167, 217, 134, 217, 135, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 6, 108, 50, 36, 12, 0, 216, 167, 217, 134, 219, 128, 1, 18, 74, 18, 74, 2,
+			32, 14, 136, 128, 132, 3, 81, 6, 108, 50, 36, 57, 36, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3,
+			81, 6, 108, 51, 0, 216, 167, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 6, 108, 107, 0, 4, 1, 18, 66,
+			18, 74, 2, 18, 68, 32, 3, 81, 35, 0, 1, 18, 68, 18, 66, 2, 18, 68, 32, 0, 1, 18, 68, 18, 68, 2, 18, 68, 32, 0,
+			1, 18, 70, 18, 74, 2, 18, 70, 18, 71, 32, 0, 1, 18, 71, 18, 74, 2, 18, 68, 18, 74, 32, 0, 1, 18, 74, 2, 218, 175,
+			12, 12, 12, 0, 1, 18, 74, 18, 74, 18, 74, 18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 32, 0, 2, 18, 68, 0, 2, 217,
+			128, 18, 68, 0, 2, 217, 128, 217, 128, 0, 2, 217, 128, 217, 128, 18, 68, 0, 2, 217, 128, 217, 128, 217, 128, 18, 68, 0, 8, 2,
+			18, 68, 0, 8, 2, 217, 136, 18, 67, 0, 8, 2, 217, 136, 216, 167, 0, 8, 2, 217, 136, 219, 140, 18, 68, 0, 8, 18, 68, 2,
+			18, 70, 18, 68, 0, 8, 18, 68, 2, 18, 70, 18, 71, 32, 0, 8, 18, 68, 2, 18, 71, 18, 68, 0, 8, 18, 68, 2, 216, 177,
+			18, 68, 12, 0, 8, 18, 68, 18, 66, 2, 18, 68, 18, 74, 18, 74, 0, 8, 18, 68, 18, 74, 18, 68, 2, 18, 68, 18, 74, 18,
+			74, 32, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 69, 133, 217, 2, 18, 68, 32, 12, 0, 8, 18, 74, 18, 74,
+			18, 74, 2, 18, 68, 18, 74, 18, 74, 18, 74, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 12, 0, 8, 134, 217, 133, 217,
+			2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2, 18, 68, 32, 0,
+			8, 167, 216, 136, 217, 174, 216, 2, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68,
+			217, 145, 18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217,
+			145, 18, 68, 32, 12, 12, 0, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 81, 35, 51, 0, 216, 177, 216, 175, 1,
+			18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 35, 51, 72, 0, 216, 177, 216, 175, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2,
+			32, 14, 136, 128, 133, 3, 81, 35, 51, 72, 108, 50, 0, 216, 177, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81,
+			35, 51, 108, 0, 4, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 3, 81, 36, 0, 8, 18, 69, 170, 216, 179, 216, 133, 217, 2,
+			18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 12, 12, 0, 8, 167, 216, 18, 69, 2, 18, 68, 32, 12,
+			0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216,
+			136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 216, 177, 217, 129, 216, 170, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 36, 51, 36, 83, 47, 0, 216, 177, 216, 167, 217, 129, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 132, 3, 81, 36, 51, 108, 83, 0, 219, 140, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 37, 50, 0,
+			219, 140, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 37, 51, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32,
+			3, 81, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18, 68, 32, 0, 216, 177, 219, 140, 216, 178, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 132, 3, 81, 39, 51, 37, 88, 0, 4, 217, 132, 8, 2, 18, 69, 18, 74, 28, 2, 14, 128, 132, 130, 3, 81, 39, 55, 0,
+			217, 132, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 4, 216, 176, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2,
+			32, 14, 136, 128, 132, 3, 81, 39, 88, 6, 108, 51, 0, 216, 178, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132,
+			0, 4, 216, 176, 216, 167, 216, 177, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 3, 81, 39, 88, 6, 108, 51, 37, 0,
+			216, 178, 216, 167, 216, 177, 219, 140, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 133, 0, 4, 216, 176, 216, 177, 8, 2, 18, 69, 18,
+			74, 18, 74, 14, 128, 132, 131, 3, 81, 39, 88, 35, 51, 0, 216, 176, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131,
+			0, 216, 178, 216, 177, 8, 2, 18, 69, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 178, 216, 177, 8, 2, 216, 162, 18, 74, 18, 74,
+			14, 128, 132, 131, 0, 216, 178, 219, 140, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 39, 88, 37, 50, 0, 216,
+			179, 216, 170, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 39, 89, 47, 35, 51, 0, 216, 179, 216, 167, 216, 177,
+			1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 39, 89, 108, 51, 0, 216, 180, 216, 167, 1, 18, 74, 18, 74, 2, 32, 14,
+			136, 128, 131, 3, 81, 39, 91, 108, 0, 217, 136, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 3, 81, 40, 0, 4, 217, 136, 217,
+			134, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 81, 40, 50, 0, 217, 136, 217, 134, 1, 18, 74, 18, 74, 2, 32, 14, 136,
+			128, 131, 0, 217, 136, 217, 134, 217, 135, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 40, 50, 36, 12, 0, 4, 2, 217,
+			145, 18, 73, 3, 81, 81, 0, 2, 217, 145, 32, 0, 4, 2, 217, 145, 18, 68, 3, 81, 81, 35, 0, 8, 18, 69, 133, 217, 2, 217,
+			145, 18, 68, 32, 12, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 81, 81, 36, 0, 8, 18, 69, 170, 216, 133, 217,
+			2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 81, 81, 39, 0, 8, 18, 69, 170, 216, 2,
+			217, 145, 18, 68, 32, 12, 0, 216, 167, 217, 134, 216, 170, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 108, 50, 35, 47,
+			0, 216, 167, 217, 134, 217, 133, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 108, 50, 35, 65, 0, 216, 167, 217, 134, 216,
+			180, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 132, 3, 81, 108, 50, 35, 91, 0, 216, 167, 217, 134, 216, 170, 216, 167, 217, 134, 1,
+			18, 66, 18, 74, 2, 32, 14, 136, 128, 134, 3, 81, 108, 50, 36, 47, 108, 50, 0, 216, 167, 217, 134, 217, 133, 216, 167, 217, 134, 1,
+			18, 66, 18, 74, 2, 32, 14, 136, 128, 134, 3, 81, 108, 50, 36, 65, 108, 50, 0, 216, 167, 217, 134, 216, 180, 216, 167, 217, 134, 1,
+			18, 66, 18, 74, 2, 32, 14, 136, 128, 134, 3, 81, 108, 50, 36, 91, 108, 50, 0, 7, 6, 219, 128, 0, 4, 1, 18, 67, 18, 74,
+			2, 32, 24, 14, 136, 128, 129, 3, 6, 36, 57, 36, 0, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 8, 18, 68, 0,
+			8, 18, 66, 3, 6, 107, 36, 57, 36, 0, 7, 6, 219, 140, 0, 219, 140, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 129, 3, 37,
+			0, 4, 219, 140, 3, 37, 12, 0, 219, 140, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 130, 0, 219, 140, 217, 133, 1, 18, 66, 18,
+			74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 12, 65, 0, 219, 140, 216, 175, 1, 18, 66, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128,
+			131, 3, 37, 12, 72, 0, 219, 140, 217, 133, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 37, 65, 0, 4, 219, 140,
+			216, 170, 1, 175, 218, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 57, 35, 47, 0, 219, 140, 216, 170, 1, 175, 218,
+			136, 217, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 130, 0, 219, 140, 216, 170, 1, 175, 218, 140, 219, 18, 66, 18, 74, 2, 32, 24,
+			14, 136, 128, 130, 0, 2, 217, 176, 32, 3, 0, 8, 18, 68, 2, 18, 67, 3, 35, 57, 0, 4, 8, 18, 68, 2, 217, 145, 18, 73,
+			3, 35, 57, 57, 0, 8, 18, 68, 2, 217, 145, 32, 0, 8, 18, 68, 2, 217, 145, 18, 68, 3, 35, 57, 57, 35, 0, 1, 136, 217,
+			18, 74, 2, 217, 136, 32, 12, 3, 36, 57, 0, 4, 3, 37, 0, 1, 18, 68, 2, 32, 0, 1, 18, 68, 18, 74, 2, 32, 14, 136,
+			128, 129, 0, 1, 136, 217, 18, 66, 18, 74, 2, 32, 14, 136, 128, 129, 0, 1, 136, 217, 18, 66, 18, 74, 2, 32, 14, 136, 128, 129,
+			0, 1, 136, 217, 18, 74, 2, 18, 68, 0, 1, 136, 217, 18, 74, 2, 217, 136, 18, 74, 12, 0, 1, 145, 217, 2, 18, 68, 12, 0,
+			1, 145, 217, 2, 32, 12, 0, 8, 2, 217, 128, 18, 68, 0, 8, 18, 68, 167, 216, 2, 18, 68, 32, 12, 0, 8, 18, 68, 167, 216,
+			18, 69, 170, 216, 133, 217, 2, 32, 0, 8, 136, 217, 2, 18, 68, 0, 8, 136, 217, 167, 216, 18, 69, 170, 216, 133, 217, 2, 32, 0,
+			8, 167, 216, 2, 32, 12, 0, 4, 8, 167, 216, 3, 37, 12, 0, 216, 166, 1, 18, 66, 18, 74, 2, 32, 12, 14, 136, 128, 130, 0,
+			4, 216, 170, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 130, 3, 37, 12, 57, 35, 47, 0, 217, 145, 216, 170, 1, 18, 68, 18, 74,
+			2, 32, 14, 136, 128, 131, 0, 217, 145, 216, 170, 1, 18, 69, 18, 74, 2, 32, 14, 136, 128, 131, 0, 4, 216, 166, 217, 135, 1, 18,
+			74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 12, 57, 36, 0, 219, 140, 217, 135, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136,
+			128, 131, 0, 4, 216, 166, 219, 128, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 12, 57, 36, 57, 36, 0, 219, 140,
+			219, 128, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 219, 140, 216, 167, 217, 134, 1, 18, 66, 18, 74, 2, 32, 14, 136,
+			128, 132, 3, 37, 12, 108, 50, 0, 216, 166, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 130, 3, 37, 37, 0, 4, 217, 134, 1, 18,
+			68, 18, 74, 2, 32, 14, 136, 128, 130, 3, 37, 50, 0, 217, 134, 1, 133, 217, 18, 74, 18, 74, 2, 32, 14, 136, 128, 130, 0, 217,
+			134, 217, 135, 1, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 50, 36, 12, 0, 217, 134, 219, 128, 1, 18, 68, 18, 74,
+			2, 32, 24, 14, 136, 128, 131, 3, 37, 50, 36, 57, 36, 0, 1, 18, 68, 2, 217, 136, 18, 68, 3, 37, 57, 0, 217, 135, 1, 18,
+			68, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 37, 57, 36, 0, 219, 128, 1, 18, 68, 18, 74, 2, 32, 12, 24, 14, 136, 128,
+			130, 3, 37, 57, 36, 57, 36, 0, 4, 216, 167, 216, 170, 1, 18, 66, 18, 68, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 57,
+			57, 108, 47, 0, 216, 167, 216, 170, 1, 185, 216, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 0, 217, 145, 216, 167, 216, 170, 1,
+			18, 74, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0, 4, 216, 167, 216, 170, 216, 170, 1, 18, 66, 18, 68, 2, 32, 24, 14,
+			136, 128, 132, 3, 37, 57, 57, 108, 47, 35, 47, 0, 216, 167, 216, 170, 216, 170, 1, 185, 216, 18, 74, 2, 32, 24, 14, 136, 128, 132,
+			0, 217, 145, 216, 167, 216, 170, 216, 170, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 0, 4, 216, 167, 216, 170, 217, 133, 1,
+			18, 66, 18, 68, 2, 32, 24, 14, 136, 128, 132, 3, 37, 57, 57, 108, 47, 35, 65, 0, 216, 167, 216, 170, 217, 133, 1, 185, 216, 18,
+			74, 2, 32, 24, 14, 136, 128, 132, 0, 217, 145, 216, 167, 216, 170, 217, 133, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 0,
+			4, 216, 167, 216, 170, 216, 180, 1, 18, 66, 18, 68, 2, 32, 24, 14, 136, 128, 132, 3, 37, 57, 57, 108, 47, 35, 91, 0, 216, 167,
+			216, 170, 216, 180, 1, 185, 216, 18, 74, 2, 32, 24, 14, 136, 128, 132, 0, 217, 145, 216, 167, 216, 170, 216, 180, 1, 18, 74, 18, 74,
+			2, 32, 24, 14, 136, 128, 133, 0, 4, 216, 167, 216, 170, 216, 170, 216, 167, 217, 134, 1, 18, 66, 18, 68, 2, 32, 24, 14, 136, 128,
+			134, 3, 37, 57, 57, 108, 47, 36, 47, 108, 50, 0, 216, 167, 216, 170, 216, 170, 216, 167, 217, 134, 1, 185, 216, 18, 74, 2, 32, 24,
+			14, 136, 128, 134, 0, 217, 145, 216, 167, 216, 170, 216, 170, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 0,
+			4, 216, 167, 216, 170, 217, 133, 216, 167, 217, 134, 1, 18, 66, 18, 68, 2, 32, 24, 14, 136, 128, 134, 3, 37, 57, 57, 108, 47, 36,
+			65, 108, 50, 0, 216, 167, 216, 170, 217, 133, 216, 167, 217, 134, 1, 185, 216, 18, 74, 2, 32, 24, 14, 136, 128, 134, 0, 217, 145, 216,
+			167, 216, 170, 217, 133, 216, 167, 217, 134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 0, 4, 216, 167, 216, 170, 216, 180, 216,
+			167, 217, 134, 1, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 134, 3, 37, 57, 57, 108, 47, 36, 91, 108, 50, 0, 216, 167, 216, 170,
+			216, 180, 216, 167, 217, 134, 1, 185, 216, 18, 74, 2, 32, 24, 14, 136, 128, 134, 0, 217, 145, 216, 167, 216, 170, 216, 180, 216, 167, 217,
+			134, 1, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 135, 0, 4, 216, 167, 216, 170, 219, 140, 1, 18, 66, 18, 68, 18, 74, 2, 32,
+			24, 14, 136, 128, 132, 3, 37, 57, 57, 108, 47, 37, 0, 216, 167, 216, 170, 219, 140, 1, 185, 216, 18, 74, 18, 74, 2, 32, 24, 14,
+			136, 128, 132, 0, 217, 145, 216, 167, 216, 170, 219, 140, 1, 18, 74, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 133, 0, 217, 133, 1,
+			18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 130, 3, 37, 65, 0, 216, 175, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14,
+			136, 128, 130, 3, 37, 72, 0, 216, 175, 217, 135, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 72, 36, 12,
+			0, 216, 175, 219, 128, 1, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 131, 3, 37, 72, 36, 57, 36, 0, 216, 179, 216, 170,
+			1, 45, 2, 32, 12, 24, 14, 136, 128, 131, 3, 37, 89, 47, 0, 216, 178, 216, 167, 216, 179, 219, 140, 217, 136, 217, 134, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 135, 3, 37, 89, 108, 89, 37, 39, 50, 0, 4, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 129, 3,
+			57, 0, 1, 18, 67, 0, 1, 18, 67, 2, 32, 0, 1, 136, 217, 18, 74, 2, 18, 66, 0, 1, 145, 217, 2, 18, 66, 12, 0, 1,
+			167, 216, 18, 74, 2, 18, 66, 0, 1, 167, 216, 18, 74, 2, 18, 68, 0, 2, 18, 67, 0, 2, 217, 176, 18, 69, 0, 8, 2, 216,
+			162, 0, 8, 2, 216, 167, 0, 8, 2, 217, 128, 18, 66, 0, 8, 2, 217, 136, 18, 68, 0, 8, 133, 217, 2, 18, 69, 18, 68, 32,
+			0, 8, 133, 217, 2, 18, 69, 217, 136, 18, 68, 32, 0, 8, 133, 217, 2, 216, 170, 18, 69, 18, 68, 32, 12, 0, 8, 170, 216, 2,
+			18, 69, 219, 140, 18, 68, 32, 0, 8, 170, 216, 179, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 0, 8, 185, 216, 2, 18, 66, 0,
+			8, 185, 216, 2, 18, 67, 0, 8, 185, 216, 2, 18, 68, 32, 0, 4, 8, 3, 57, 35, 0, 8, 2, 217, 136, 18, 66, 0, 8, 2,
+			217, 136, 18, 67, 0, 8, 18, 69, 133, 217, 2, 217, 145, 18, 68, 32, 0, 8, 133, 217, 2, 18, 69, 217, 145, 18, 68, 32, 0, 8,
+			134, 217, 133, 217, 2, 18, 68, 18, 68, 32, 12, 12, 0, 8, 134, 217, 133, 217, 2, 219, 140, 18, 68, 32, 12, 0, 8, 162, 216, 2,
+			18, 68, 0, 8, 162, 216, 2, 18, 68, 32, 0, 8, 170, 216, 2, 18, 68, 18, 68, 32, 12, 0, 8, 170, 216, 2, 18, 68, 217, 145,
+			18, 68, 32, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 18, 68, 32, 12, 12, 0, 8, 170, 216, 133, 217, 2, 18, 69, 217, 145, 18,
+			68, 32, 12, 12, 0, 8, 185, 216, 2, 18, 68, 0, 4, 216, 170, 1, 18, 66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 57,
+			35, 47, 0, 216, 170, 1, 175, 218, 18, 68, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 216, 170, 1, 175, 218, 136, 217, 18,
+			66, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 216, 170, 1, 175, 218, 140, 219, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0,
+			217, 134, 216, 175, 1, 18, 66, 18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 35, 50, 72, 0, 217, 134, 216, 175, 217, 135, 1, 18, 66,
+			18, 74, 2, 32, 14, 136, 128, 132, 3, 57, 35, 50, 72, 36, 0, 217, 134, 216, 175, 219, 128, 1, 18, 66, 18, 74, 2, 32, 14, 136,
+			128, 132, 3, 57, 35, 50, 72, 36, 57, 36, 0, 217, 133, 1, 18, 66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 57, 35, 65,
+			0, 216, 180, 1, 18, 66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 57, 35, 91, 0, 4, 1, 18, 66, 2, 32, 3, 57, 36,
+			0, 1, 136, 217, 18, 68, 18, 74, 2, 32, 14, 136, 128, 129, 0, 1, 162, 216, 18, 74, 18, 74, 2, 32, 14, 136, 128, 129, 0, 1,
+			167, 216, 18, 74, 18, 74, 2, 32, 24, 14, 136, 128, 129, 0, 8, 18, 69, 134, 217, 133, 217, 2, 18, 68, 32, 0, 8, 18, 69, 170,
+			216, 179, 216, 133, 217, 2, 18, 68, 32, 0, 8, 134, 217, 167, 216, 2, 18, 69, 216, 167, 18, 68, 32, 0, 8, 167, 216, 18, 69, 2,
+			18, 68, 32, 0, 8, 167, 216, 18, 69, 18, 69, 2, 18, 68, 32, 0, 8, 167, 216, 18, 69, 133, 217, 2, 18, 68, 32, 0, 8, 167,
+			216, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 0, 8, 167, 216, 136, 217, 18, 69, 2, 18, 68, 32, 0, 8, 170, 216, 18, 69, 133,
+			217, 2, 18, 68, 32, 0, 217, 135, 1, 18, 66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 0, 216, 170, 216, 167, 217, 134, 1, 18,
+			66, 18, 74, 2, 32, 24, 14, 136, 128, 132, 3, 57, 36, 47, 108, 50, 0, 4, 218, 169, 8, 2, 18, 69, 18, 74, 18, 74, 28, 2,
+			14, 128, 132, 130, 3, 57, 36, 49, 0, 218, 169, 8, 2, 216, 162, 18, 74, 18, 74, 28, 2, 14, 128, 132, 130, 0, 219, 128, 1, 18,
+			66, 18, 74, 2, 32, 12, 24, 14, 136, 128, 130, 3, 57, 36, 57, 36, 0, 217, 133, 216, 167, 217, 134, 1, 18, 66, 18, 74, 2, 32,
+			24, 14, 136, 128, 132, 3, 57, 36, 65, 108, 50, 0, 216, 180, 216, 167, 217, 134, 1, 18, 66, 18, 74, 2, 32, 24, 14, 136, 128, 132,
+			3, 57, 36, 91, 108, 50, 0, 4, 8, 2, 18, 69, 217, 136, 18, 68, 32, 3, 57, 39, 0, 8, 167, 216, 18, 69, 170, 216, 2, 18,
+			68, 32, 0, 217, 136, 217, 133, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 39, 65, 0, 217, 136, 217, 134, 1, 18, 74,
+			18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 40, 50, 0, 4, 2, 217, 145, 18, 73, 3, 57, 57, 0, 2, 217, 145, 32, 0, 2, 217,
+			145, 18, 68, 3, 57, 57, 35, 0, 4, 8, 18, 69, 170, 216, 133, 217, 2, 18, 68, 32, 3, 57, 57, 36, 0, 8, 18, 69, 170, 216,
+			133, 217, 2, 217, 145, 18, 68, 32, 0, 4, 8, 18, 69, 170, 216, 2, 18, 68, 32, 12, 12, 3, 57, 57, 39, 0, 8, 18, 69, 170,
+			216, 2, 217, 145, 18, 68, 32, 0, 216, 167, 216, 177, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 108, 51, 0, 216, 167,
+			216, 168, 1, 18, 74, 18, 74, 2, 32, 14, 136, 128, 131, 3, 57, 108, 71, 0, 4, 216, 167, 216, 175, 8, 2, 18, 69, 18, 74, 18,
+			74, 14, 128, 132, 131, 3, 57, 108, 72, 0, 216, 167, 216, 175, 8, 2, 216, 162, 18, 74, 18, 74, 14, 128, 132, 131, 0, 216, 167, 217,
+			129, 216, 170, 1, 18, 68, 18, 74, 2, 32, 14, 136, 128, 132, 3, 57, 108, 83, 47, 0, 7, 6, 43, 0, 4, 2, 46, 15, 3, 65,
+			39, 89, 71, 35, 47, 36, 20, 0, 8, 32, 2, 32, 15, 0, 7, 6, 45, 0, 4, 2, 46, 15, 3, 65, 35, 50, 83, 37, 57, 36,
+			20, 0, 8, 32, 2, 32, 15, 0, 7, 6, 97, 0, 3, 21, 0, 5, 1, 3, 35, 0, 5, 1, 2, 39, 3, 108, 0, 7, 6, 98,
+			0, 3, 21, 0, 5, 1, 3, 71, 0, 7, 6, 99, 0, 3, 21, 0, 5, 1, 3, 49, 0, 4, 5, 1, 2, 101, 3, 89, 0, 5,
+			1, 2, 105, 0, 5, 1, 2, 121, 0, 7, 6, 100, 0, 3, 21, 0, 5, 1, 3, 72, 0, 7, 6, 101, 0, 3, 21, 0, 5, 1,
+			3, 36, 0, 7, 6, 102, 0, 3, 21, 0, 5, 1, 3, 83, 0, 7, 6, 103, 0, 3, 21, 0, 5, 1, 3, 81, 0, 7, 6, 104,
+			0, 3, 21, 0, 5, 1, 3, 107, 0, 7, 6, 105, 0, 3, 21, 0, 5, 1, 3, 37, 0, 7, 6, 106, 0, 3, 21, 0, 5, 1,
+			3, 75, 0, 7, 6, 107, 0, 3, 21, 0, 5, 1, 3, 49, 0, 7, 6, 108, 0, 3, 21, 0, 5, 1, 3, 55, 0, 7, 6, 109,
+			0, 3, 21, 0, 5, 1, 3, 65, 0, 7, 6, 110, 0, 3, 21, 0, 5, 1, 3, 50, 0, 7, 6, 111, 0, 3, 21, 0, 5, 1,
+			3, 39, 0, 7, 6, 112, 0, 3, 21, 0, 5, 1, 3, 48, 0, 7, 6, 113, 0, 3, 21, 0, 5, 1, 3, 104, 17, 0, 7, 6,
+			114, 0, 3, 21, 0, 5, 1, 3, 51, 0, 7, 6, 115, 0, 3, 21, 0, 5, 1, 3, 89, 0, 7, 6, 116, 0, 3, 21, 0, 5,
+			1, 3, 47, 0, 7, 6, 117, 0, 3, 21, 0, 5, 1, 3, 40, 0, 7, 6, 118, 0, 3, 21, 0, 5, 1, 3, 84, 0, 7, 6,
+			119, 0, 3, 21, 0, 5, 1, 3, 58, 0, 7, 6, 120, 0, 3, 21, 0, 5, 1, 3, 49, 89, 0, 7, 6, 121, 0, 3, 21, 0,
+			5, 1, 3, 57, 0, 7, 6, 122, 0, 3, 21, 0, 5, 1, 3, 88, 0, 7, 6, 0, 60, 61, 3, 49, 40, 76, 6, 36, 49, 47,
+			35, 51, 15, 57, 108, 12, 15, 65, 4, 39, 89, 108, 84, 37, 0, 46, 2, 15, 3, 50, 39, 104, 17, 47, 36, 12, 0, 194, 177, 3,
+			65, 6, 39, 89, 71, 35, 47, 15, 57, 108, 12, 15, 65, 6, 35, 50, 83, 37, 0, 62, 61, 3, 71, 39, 88, 6, 39, 51, 81, 47,
+			35, 51, 15, 57, 108, 12, 15, 65, 4, 39, 89, 108, 84, 37, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts19 = FileInMemory_createWithData (231857, reinterpret_cast<const char *> (&espeakdata_dicts19_data), 
+			U"espeak-1.48.04-source/espeak-data/fa_dict", 
+			U"fa");
+		my addItem_move (espeakdata_dicts19.move());
+
+		static unsigned char espeakdata_dicts20_data[5121] = {
+			0, 4, 0, 0, 151, 16, 0, 0, 0, 0, 0, 13, 67, 57, 35, 192, 50, 40, 65, 36, 34, 39, 0, 24, 0, 0, 6, 65, 4, 35,
+			12, 0, 0, 13, 65, 108, 6, 35, 55, 35, 0, 24, 81, 108, 97, 32, 0, 8, 197, 48, 145, 78, 20, 80, 72, 0, 0, 7, 65, 8,
+			71, 36, 12, 0, 0, 0, 16, 67, 21, 64, 192, 36, 47, 10, 89, 36, 47, 36, 34, 35, 0, 24, 8, 197, 81, 83, 211, 80, 16, 76,
+			0, 0, 7, 65, 12, 89, 36, 12, 0, 0, 6, 195, 60, 193, 78, 72, 0, 0, 0, 7, 65, 16, 72, 36, 12, 0, 0, 7, 196, 88,
+			148, 136, 20, 14, 0, 0, 13, 4, 95, 100, 112, 116, 48, 37, 55, 49, 12, 40, 0, 0, 6, 65, 20, 36, 12, 0, 0, 0, 0, 0,
+			6, 65, 24, 109, 83, 0, 0, 0, 0, 0, 7, 65, 28, 81, 36, 12, 0, 0, 0, 0, 0, 7, 65, 32, 107, 39, 12, 0, 0, 0,
+			0, 0, 6, 65, 36, 37, 12, 0, 0, 14, 1, 37, 48, 34, 39, 89, 36, 50, 47, 12, 108, 0, 27, 13, 1, 37, 48, 34, 39, 89,
+			36, 50, 47, 12, 37, 0, 0, 7, 1, 38, 10, 36, 47, 0, 0, 0, 7, 65, 40, 57, 37, 12, 0, 0, 0, 14, 1, 42, 35, 89,
+			47, 36, 34, 37, 89, 49, 37, 0, 27, 0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 39, 12, 0, 0, 0, 0,
+			9, 1, 47, 49, 122, 47, 12, 35, 0, 0, 13, 4, 95, 100, 105, 97, 6, 40, 65, 55, 122, 47, 0, 6, 65, 48, 109, 55, 0, 0,
+			0, 0, 6, 195, 60, 193, 84, 72, 0, 6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6, 65, 56, 109, 50, 0, 0, 0, 0, 0, 6,
+			65, 60, 39, 12, 0, 0, 14, 1, 61, 6, 114, 107, 47, 109, 49, 6, 120, 50, 0, 27, 0, 0, 0, 17, 70, 44, 243, 134, 85, 68,
+			197, 49, 39, 50, 83, 40, 47, 89, 36, 0, 7, 1, 64, 10, 109, 47, 0, 7, 65, 64, 48, 36, 12, 0, 0, 0, 0, 0, 7, 65,
+			68, 49, 40, 12, 0, 0, 0, 0, 0, 6, 65, 72, 109, 34, 0, 0, 0, 10, 135, 110, 195, 164, 105, 110, 195, 164, 76, 0, 0, 6,
+			65, 76, 109, 89, 0, 0, 0, 0, 0, 7, 65, 80, 47, 36, 12, 0, 0, 0, 0, 0, 9, 198, 48, 145, 78, 21, 69, 5, 72, 6,
+			65, 84, 40, 12, 0, 0, 0, 0, 0, 7, 65, 88, 84, 36, 12, 0, 0, 0, 0, 16, 4, 95, 49, 77, 52, 71, 6, 37, 55, 57,
+			39, 12, 50, 35, 0, 0, 8, 133, 115, 105, 110, 195, 164, 72, 8, 1, 92, 49, 36, 50, 39, 0, 13, 65, 92, 49, 35, 49, 89, 117,
+			89, 84, 36, 12, 0, 0, 0, 0, 0, 13, 4, 95, 49, 77, 49, 47, 6, 40, 107, 35, 47, 0, 7, 65, 96, 109, 49, 89, 0, 0,
+			6, 194, 4, 64, 13, 24, 16, 4, 95, 49, 77, 50, 65, 6, 37, 55, 57, 39, 12, 50, 35, 0, 0, 16, 4, 95, 49, 77, 51, 65,
+			6, 37, 55, 57, 35, 34, 72, 37, 0, 18, 65, 120, 34, 6, 130, 47, 89, 35, 55, 115, 50, 36, 50, 6, 39, 12, 0, 0, 0, 6,
+			65, 100, 114, 12, 0, 0, 7, 196, 81, 83, 12, 4, 14, 0, 0, 0, 8, 65, 104, 47, 89, 36, 47, 0, 0, 0, 0, 0, 9, 67,
+			60, 176, 89, 39, 49, 118, 0, 0, 6, 195, 81, 83, 206, 76, 0, 0, 0, 0, 6, 194, 12, 16, 13, 24, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 12, 68, 64, 244, 212, 36, 48, 39, 89, 47, 108, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 12,
+			4, 95, 116, 108, 100, 47, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 12, 68, 52, 19, 142, 20, 65, 35, 50, 50, 36, 0, 7,
+			196, 80, 84, 150, 20, 14, 0, 0, 0, 0, 7, 196, 81, 83, 142, 20, 14, 7, 196, 48, 21, 83, 20, 14, 0, 0, 0, 0, 0, 0,
+			0, 6, 195, 52, 83, 133, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 135, 110, 195, 164, 105, 108, 108, 101, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 10, 135, 116, 195, 164, 108, 108, 195, 164, 76, 0, 0, 0, 0, 10, 135, 116, 195, 164, 115, 116, 195, 164, 76, 0, 9, 198,
+			60, 194, 83, 37, 96, 84, 72, 11, 136, 110, 195, 164, 105, 115, 116, 195, 164, 76, 0, 0, 0, 6, 195, 80, 16, 64, 14, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 17, 8, 112, 195, 164, 195, 164, 115, 116, 105, 48, 109, 12, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0,
+			7, 195, 80, 18, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 110, 195, 164, 105, 108, 108, 195, 164,
+			76, 12, 3, 95, 35, 57, 89, 35, 34, 49, 115, 50, 0, 0, 0, 12, 68, 32, 147, 12, 20, 107, 37, 55, 55, 36, 0, 7, 196, 81,
+			83, 206, 4, 76, 0, 0, 0, 0, 7, 196, 65, 84, 146, 4, 14, 7, 196, 48, 18, 84, 20, 14, 5, 194, 21, 64, 72, 0, 8, 197,
+			40, 242, 76, 48, 80, 76, 8, 197, 40, 242, 83, 80, 16, 76, 0, 0, 6, 195, 4, 146, 5, 14, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 5, 85, 5, 80, 16, 14, 0, 0, 0, 6, 195,
+			4, 66, 4, 13, 0, 8, 197, 56, 242, 83, 80, 16, 76, 8, 197, 81, 83, 211, 76, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			17, 66, 20, 112, 36, 89, 37, 65, 36, 34, 49, 37, 49, 89, 37, 0, 24, 16, 70, 64, 83, 1, 77, 66, 64, 48, 36, 55, 35, 89,
+			47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 73, 154, 19, 80, 144, 51, 132, 89, 47, 108, 0, 13, 69,
+			45, 154, 19, 80, 144, 49, 132, 89, 47, 108, 0, 9, 134, 116, 195, 164, 109, 195, 164, 76, 0, 0, 0, 8, 197, 44, 146, 78, 56, 144,
+			14, 0, 16, 70, 88, 20, 129, 77, 66, 64, 84, 35, 51, 35, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 7, 196, 40, 245, 11, 4,
+			76, 7, 196, 40, 244, 211, 4, 76, 0, 8, 197, 56, 242, 76, 48, 80, 76, 0, 0, 6, 195, 40, 243, 129, 76, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 20, 144, 72, 0, 0, 0, 7, 196, 60, 195, 21, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 196, 40, 243, 139, 4, 76, 0, 9, 198, 56, 242, 84, 80, 83, 128, 76, 10, 135, 116, 195, 164, 109, 195, 164, 110, 76, 0,
+			0, 0, 0, 0, 0, 7, 195, 40, 225, 64, 13, 24, 11, 67, 4, 227, 133, 35, 50, 50, 36, 0, 41, 7, 195, 60, 195, 1, 72, 14,
+			9, 3, 226, 130, 172, 124, 34, 39, 0, 10, 3, 226, 130, 172, 124, 34, 39, 35, 0, 0, 0, 0, 0, 6, 195, 88, 83, 133, 14, 6,
+			195, 44, 243, 133, 14, 7, 195, 60, 193, 64, 72, 14, 0, 0, 0, 6, 194, 40, 16, 72, 8, 5, 194, 32, 80, 72, 0, 9, 198, 48,
+			145, 78, 20, 211, 69, 72, 0, 0, 0, 0, 6, 195, 60, 194, 64, 72, 0, 0, 0, 0, 0, 0, 0, 9, 134, 109, 101, 110, 110, 195,
+			164, 14, 9, 134, 116, 195, 164, 110, 195, 164, 76, 0, 16, 70, 88, 149, 76, 37, 53, 9, 84, 125, 55, 108, 89, 47, 108, 0, 0, 0,
+			0, 0, 0, 7, 196, 40, 242, 84, 4, 76, 7, 196, 40, 243, 12, 4, 76, 0, 0, 0, 0, 7, 196, 40, 244, 212, 4, 76, 0, 0,
+			13, 4, 95, 98, 114, 118, 71, 34, 6, 36, 84, 36, 0, 0, 0, 0, 0, 0, 6, 195, 60, 148, 133, 14, 7, 195, 37, 68, 197, 76,
+			14, 0, 12, 68, 72, 148, 212, 36, 51, 37, 89, 47, 108, 0, 12, 68, 65, 148, 212, 36, 48, 114, 89, 47, 108, 0, 0, 0, 6, 194,
+			20, 208, 13, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 224, 72, 0, 6, 195, 61, 64,
+			64, 14, 20, 3, 95, 51, 88, 49, 6, 39, 55, 65, 36, 49, 114, 65, 65, 36, 50, 47, 109, 0, 0, 12, 68, 40, 19, 142, 20, 57,
+			35, 50, 50, 36, 0, 13, 3, 95, 48, 67, 89, 6, 35, 47, 35, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49,
+			67, 89, 6, 35, 47, 35, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 49, 57, 6, 114, 107, 72, 36, 49, 89, 109, 50, 47, 4, 117,
+			89, 47, 35, 0, 0, 22, 3, 95, 49, 56, 49, 6, 35, 107, 72, 36, 49, 89, 35, 50, 47, 4, 117, 89, 47, 35, 0, 0, 8, 197,
+			81, 83, 200, 60, 224, 76, 0, 0, 0, 0, 0, 0, 16, 3, 95, 49, 49, 6, 114, 49, 89, 37, 47, 117, 89, 47, 35, 0, 0, 6,
+			195, 57, 83, 192, 76, 15, 3, 95, 49, 48, 49, 6, 114, 65, 65, 36, 50, 36, 50, 0, 0, 17, 3, 95, 49, 51, 49, 6, 39, 55,
+			65, 36, 47, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 50, 49, 6, 35, 49, 89, 37, 47, 117, 89, 47, 35, 0, 0, 17, 3, 95,
+			49, 53, 84, 6, 37, 12, 89, 37, 47, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 52, 50, 6, 36, 55, 57, 109, 47, 117, 89, 47,
+			35, 0, 0, 21, 3, 95, 49, 55, 89, 6, 118, 47, 89, 36, 65, 109, 50, 47, 4, 117, 89, 47, 35, 0, 0, 17, 3, 95, 49, 54,
+			49, 6, 40, 12, 89, 37, 47, 117, 89, 47, 35, 0, 0, 0, 7, 196, 40, 242, 15, 56, 76, 24, 3, 95, 55, 88, 89, 6, 118, 47,
+			89, 36, 65, 109, 68, 49, 4, 114, 65, 65, 36, 50, 47, 109, 0, 0, 9, 198, 48, 145, 78, 56, 81, 84, 72, 0, 0, 0, 0, 7,
+			196, 65, 82, 197, 4, 14, 0, 0, 0, 0, 0, 0, 0, 6, 195, 40, 245, 1, 76, 15, 4, 95, 97, 99, 117, 6, 35, 49, 40, 12,
+			47, 12, 108, 0, 0, 0, 0, 0, 0, 6, 65, 160, 111, 12, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 50, 88, 49, 6, 35,
+			49, 89, 37, 49, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 12, 68, 44, 84, 212, 36, 49, 36, 89, 47, 108, 0, 12,
+			68, 44, 20, 212, 36, 49, 35, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 65, 6, 36, 34, 49, 12,
+			108, 0, 0, 0, 0, 20, 3, 95, 52, 88, 50, 6, 36, 55, 57, 109, 49, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 20, 3, 95, 53, 88, 84, 6, 37, 12, 89, 37, 49, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0,
+			8, 197, 60, 194, 83, 37, 64, 72, 0, 20, 3, 95, 54, 88, 49, 6, 40, 12, 89, 37, 49, 114, 65, 65, 36, 50, 47, 109, 0, 0,
+			0, 0, 0, 10, 135, 110, 195, 164, 105, 116, 195, 164, 76, 0, 0, 0, 0, 0, 12, 68, 56, 19, 12, 20, 50, 35, 55, 55, 36, 0,
+			0, 0, 0, 0, 12, 68, 64, 243, 12, 20, 48, 39, 55, 55, 36, 0, 12, 68, 28, 19, 12, 20, 81, 35, 55, 55, 36, 0, 7, 196,
+			40, 243, 12, 20, 76, 0, 8, 197, 40, 242, 83, 76, 16, 76, 8, 197, 56, 242, 83, 76, 16, 76, 8, 197, 81, 83, 204, 80, 16, 76,
+			8, 197, 81, 83, 204, 48, 16, 76, 0, 0, 25, 3, 95, 56, 88, 49, 6, 35, 107, 72, 36, 49, 89, 35, 68, 49, 4, 114, 65, 65,
+			36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80, 72, 0, 24, 3, 95, 57, 88, 6, 114, 107, 72, 36, 49, 89,
+			109, 68, 49, 4, 114, 65, 65, 36, 50, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 45, 144, 13, 24, 8, 197, 60, 195, 5,
+			21, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 110, 195, 164, 109, 195, 164, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 56, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 61, 48, 13, 24, 21, 4, 95, 99,
+			105, 114, 89, 6, 37, 34, 49, 40, 65, 83, 55, 4, 36, 49, 89, 108, 0, 0, 0, 17, 4, 95, 48, 77, 52, 71, 6, 37, 55, 57,
+			39, 12, 50, 35, 12, 0, 0, 0, 17, 4, 95, 48, 77, 50, 65, 6, 37, 55, 57, 39, 12, 50, 35, 12, 0, 0, 17, 4, 95, 48,
+			77, 51, 65, 6, 37, 55, 57, 35, 34, 72, 37, 35, 0, 0, 0, 15, 4, 95, 48, 77, 49, 47, 6, 40, 107, 35, 47, 12, 35, 0,
+			0, 0, 0, 16, 70, 65, 84, 137, 77, 66, 64, 48, 40, 51, 108, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 195, 61, 96, 84, 72, 0, 0, 0, 0, 0, 0, 9, 134, 101, 105, 118, 195, 164, 116, 72, 0, 0, 0, 12,
+			137, 108, 105, 101, 110, 101, 118, 195, 164, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 160, 64, 14, 0, 0, 0,
+			0, 0, 0, 10, 135, 118, 195, 164, 104, 195, 164, 110, 76, 0, 0, 0, 15, 4, 95, 99, 101, 100, 89, 6, 36, 72, 108, 55, 57, 108,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 99, 97, 112, 6, 37, 89, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 17, 70, 64, 144, 78, 37, 53, 9, 48, 37, 35, 50, 37, 89, 47, 108, 0, 10, 135, 110, 195, 164, 105, 100, 101, 110, 76,
+			0, 8, 196, 48, 145, 78, 20, 72, 14, 7, 196, 81, 83, 212, 4, 76, 0, 0, 0, 0, 8, 196, 53, 85, 20, 4, 76, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 12, 68, 72, 20, 212, 36, 51, 35, 89, 47, 108, 0, 12, 68, 44, 244, 212, 36, 49, 39, 89, 47, 108, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 60, 194, 84, 72, 0, 0, 5, 194, 61, 144, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135,
+			116, 195, 164, 115, 115, 195, 164, 76, 0, 11, 136, 110, 195, 164, 105, 115, 115, 195, 164, 76, 0, 0, 12, 68, 32, 19, 142, 20, 107, 35,
+			50, 50, 36, 0, 0, 0, 0, 0, 7, 196, 4, 161, 84, 4, 14, 7, 196, 65, 84, 138, 20, 14, 0, 0, 0, 17, 70, 65, 35, 205,
+			36, 195, 5, 48, 51, 39, 65, 108, 55, 55, 36, 0, 0, 0, 0, 0, 0, 13, 66, 60, 176, 6, 39, 12, 10, 4, 49, 39, 12, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 60, 194, 83, 36, 224, 72, 0, 17, 70, 52, 20, 137, 4, 227, 133, 65, 35, 51,
+			108, 35, 50, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 103, 114, 118, 81, 34, 6, 35, 84, 108, 89, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 80, 72, 13, 2, 194, 164, 84, 35, 55, 40, 12, 47, 12, 35, 0, 0,
+			0, 0, 10, 2, 194, 163, 48, 40, 50, 47, 35, 0, 0, 0, 0, 0, 0, 7, 2, 195, 164, 109, 12, 0, 0, 0, 0, 9, 133, 101,
+			110, 116, 195, 164, 72, 8, 0, 0, 0, 0, 0, 5, 194, 60, 224, 72, 0, 6, 195, 4, 32, 192, 13, 10, 135, 116, 195, 164, 108, 116,
+			195, 164, 76, 0, 0, 0, 7, 196, 88, 148, 139, 20, 14, 0, 0, 0, 0, 0, 0, 0, 0, 17, 70, 100, 241, 200, 85, 37, 0, 57,
+			39, 81, 40, 34, 47, 12, 37, 0, 0, 0, 0, 0, 5, 194, 80, 80, 72, 0, 0, 0, 0, 0, 7, 195, 88, 18, 64, 72, 8, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 116, 195, 164, 116, 195, 164, 76, 0, 0, 11, 136, 110, 195, 164, 105, 108, 116, 195,
+			164, 76, 0, 0, 12, 68, 92, 147, 12, 20, 84, 37, 55, 55, 36, 0, 12, 68, 88, 147, 12, 20, 84, 37, 55, 55, 36, 0, 12, 68,
+			44, 19, 12, 20, 49, 35, 55, 55, 36, 0, 0, 0, 0, 0, 12, 68, 64, 83, 12, 20, 48, 36, 55, 55, 36, 0, 7, 196, 56, 242,
+			78, 4, 76, 0, 8, 197, 40, 242, 76, 80, 16, 76, 8, 197, 40, 242, 76, 48, 16, 76, 8, 197, 56, 242, 76, 80, 16, 76, 0, 0,
+			6, 195, 40, 242, 193, 76, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 60, 194, 83, 36, 211, 69, 72, 0, 0, 0, 0, 0, 8, 197,
+			48, 145, 78, 21, 64, 72, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 154, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197,
+			60, 193, 77, 52, 80, 72, 8, 197, 56, 242, 76, 48, 16, 76, 0, 0, 6, 195, 65, 81, 64, 14, 6, 195, 65, 82, 5, 14, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 35, 34, 37, 89, 40, 0, 0, 10, 2, 95, 34, 55, 115, 50, 122, 89, 0,
+			0, 16, 2, 95, 33, 107, 40, 12, 47, 39, 65, 36, 34, 49, 12, 37, 0, 0, 0, 10, 2, 95, 39, 107, 118, 47, 12, 39, 0, 0,
+			13, 2, 95, 38, 36, 47, 65, 36, 34, 49, 12, 37, 0, 0, 14, 2, 95, 37, 48, 34, 39, 89, 36, 50, 47, 12, 37, 0, 0, 13,
+			2, 95, 36, 72, 39, 55, 55, 35, 34, 37, 50, 0, 0, 0, 18, 71, 45, 83, 135, 25, 85, 19, 20, 49, 40, 68, 83, 40, 47, 89,
+			36, 0, 0, 15, 2, 95, 41, 55, 39, 48, 12, 40, 89, 40, 55, 49, 40, 0, 0, 14, 2, 95, 40, 35, 55, 49, 40, 89, 40, 55,
+			49, 40, 0, 0, 7, 195, 20, 180, 128, 13, 24, 0, 10, 2, 95, 46, 48, 37, 89, 47, 36, 0, 0, 10, 2, 95, 45, 84, 37, 12,
+			84, 35, 0, 0, 0, 11, 2, 95, 51, 49, 6, 39, 55, 65, 36, 0, 0, 11, 2, 95, 50, 49, 6, 35, 49, 89, 37, 0, 0, 9,
+			134, 110, 195, 164, 121, 116, 101, 14, 8, 197, 60, 194, 77, 52, 80, 72, 9, 134, 116, 195, 164, 108, 108, 101, 76, 10, 2, 95, 49, 6,
+			114, 49, 89, 37, 0, 0, 11, 2, 95, 48, 50, 6, 39, 55, 55, 35, 0, 0, 6, 195, 81, 83, 5, 14, 14, 2, 95, 55, 89, 6,
+			118, 47, 89, 36, 65, 109, 50, 0, 0, 11, 2, 95, 54, 49, 6, 40, 12, 89, 37, 0, 0, 11, 2, 95, 53, 84, 6, 37, 12, 89,
+			37, 0, 0, 11, 2, 95, 52, 50, 6, 36, 55, 57, 109, 0, 0, 6, 195, 36, 131, 69, 14, 0, 16, 2, 95, 58, 49, 35, 49, 89,
+			117, 89, 48, 37, 89, 47, 36, 0, 0, 14, 2, 95, 57, 6, 114, 107, 72, 36, 49, 89, 109, 50, 0, 0, 15, 2, 95, 56, 49, 6,
+			35, 107, 72, 36, 49, 89, 35, 50, 0, 0, 18, 2, 95, 63, 49, 114, 89, 114, 65, 114, 89, 65, 36, 34, 49, 12, 108, 0, 0, 18,
+			2, 95, 62, 89, 6, 40, 12, 34, 36, 65, 48, 108, 49, 6, 120, 50, 0, 0, 0, 17, 2, 95, 60, 48, 6, 131, 50, 36, 65, 48,
+			108, 49, 6, 120, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 116, 195, 164, 104, 195, 164, 110, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 65, 212, 107, 6, 35, 47, 12, 40, 109, 89, 0, 0, 0, 9, 198, 60, 194, 83, 37, 69, 5, 72, 0, 0, 0, 23, 73, 76,
+			148, 139, 85, 52, 5, 48, 193, 64, 89, 37, 51, 49, 40, 89, 48, 36, 55, 55, 36, 0, 7, 132, 104, 195, 164, 110, 72, 0, 6, 195,
+			20, 211, 69, 72, 0, 7, 196, 60, 194, 83, 36, 72, 0, 0, 6, 195, 60, 194, 78, 72, 0, 13, 2, 95, 91, 35, 55, 49, 40, 107,
+			35, 49, 35, 0, 0, 0, 0, 0, 13, 2, 95, 95, 35, 55, 35, 84, 37, 12, 84, 35, 0, 0, 0, 14, 2, 95, 93, 55, 39, 48,
+			12, 40, 107, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 109, 105, 110, 195, 164, 72, 0, 0, 0, 0, 0, 0, 0,
+			7, 196, 40, 243, 20, 4, 76, 0, 0, 0, 0, 7, 196, 61, 65, 84, 4, 14, 7, 196, 81, 83, 210, 20, 14, 0, 0, 0, 0, 8,
+			197, 56, 242, 72, 36, 224, 76, 0, 0, 0, 14, 2, 95, 123, 35, 55, 49, 40, 35, 12, 55, 47, 39, 0, 0, 0, 0, 0, 0, 0,
+			15, 2, 95, 125, 55, 39, 48, 12, 40, 35, 12, 55, 47, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 11, 136, 110, 195, 164, 105, 116, 116, 101, 110, 76, 0, 0, 7, 196, 65, 81, 84, 4, 14, 0, 0, 0, 0, 8, 197, 48, 145,
+			78, 20, 224, 72, 0, 0, 11, 4, 95, 35, 51, 50, 84, 109, 55, 37, 0, 0, 6, 195, 65, 84, 133, 14, 0, 8, 197, 40, 242, 68,
+			20, 224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 49, 83, 192, 14, 6, 195, 81, 83, 192, 76,
+			0, 8, 197, 56, 242, 68, 20, 224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 77, 84, 193, 56, 225, 64, 89, 40, 89,
+			35, 50, 50, 36, 0, 0, 0, 0, 0, 0, 6, 195, 5, 85, 1, 14, 6, 195, 21, 69, 5, 72, 0, 0, 0, 0, 0, 0, 0, 8,
+			197, 60, 194, 86, 5, 64, 72, 0, 0, 0, 0, 16, 69, 100, 241, 213, 73, 64, 57, 39, 81, 40, 34, 47, 12, 37, 0, 0, 0, 8,
+			197, 40, 242, 72, 36, 224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 110, 195, 164, 105, 104, 105, 110, 76,
+			0, 0, 6, 195, 5, 53, 5, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 65, 228, 107, 6, 35, 47, 12, 40,
+			47, 89, 4, 36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 115, 121, 195, 182, 100, 195, 164, 14, 0, 7, 196,
+			49, 83, 196, 20, 14, 0, 8, 197, 60, 194, 84, 80, 80, 72, 8, 197, 60, 193, 84, 80, 80, 72, 8, 197, 81, 83, 204, 48, 80, 76,
+			0, 0, 0, 7, 196, 40, 242, 78, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 66, 100, 208, 114, 50, 50, 109, 10, 65,
+			40, 12, 47, 35, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 164, 0, 1, 10, 2, 108, 108, 97, 32, 3, 2,
+			109, 0, 3, 109, 0, 195, 164, 3, 109, 12, 0, 105, 105, 3, 109, 37, 12, 0, 121, 121, 3, 109, 114, 12, 0, 105, 3, 116, 0, 121,
+			3, 126, 0, 7, 6, 195, 182, 0, 3, 111, 0, 195, 182, 3, 111, 12, 0, 105, 105, 3, 111, 37, 12, 0, 121, 121, 3, 111, 114, 12,
+			0, 105, 3, 119, 0, 121, 3, 128, 0, 7, 6, 97, 0, 1, 10, 2, 108, 108, 97, 32, 3, 2, 35, 0, 3, 35, 0, 4, 8, 114,
+			116, 115, 117, 97, 2, 108, 3, 35, 12, 0, 97, 0, 105, 105, 3, 35, 37, 12, 0, 117, 117, 3, 35, 40, 12, 0, 105, 3, 115, 0,
+			117, 3, 122, 0, 7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12, 0, 7, 6, 99, 0, 4, 3, 49, 0, 104, 1, 25, 2, 114, 0,
+			99, 3, 49, 12, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2, 121, 0, 105, 116, 121, 3, 89, 37, 47, 37, 0, 7, 6, 100, 0,
+			3, 72, 0, 100, 3, 72, 12, 0, 7, 6, 101, 0, 4, 1, 10, 2, 108, 108, 97, 32, 3, 2, 36, 0, 1, 10, 2, 108, 108, 195,
+			164, 32, 0, 3, 36, 0, 101, 3, 36, 12, 0, 105, 105, 3, 36, 37, 12, 0, 117, 117, 3, 36, 40, 12, 0, 121, 121, 3, 36, 114,
+			12, 0, 105, 3, 118, 0, 117, 3, 124, 0, 121, 3, 127, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 103, 3,
+			81, 12, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 1, 10, 2, 108, 108, 97, 32, 3, 2, 37, 0, 3, 37, 0, 105, 3,
+			37, 12, 0, 101, 101, 3, 37, 36, 12, 0, 117, 117, 3, 37, 40, 12, 0, 121, 121, 3, 37, 114, 12, 0, 117, 3, 125, 0, 121, 3,
+			129, 0, 101, 3, 131, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3, 49, 12, 0, 7, 6, 108, 0, 3,
+			55, 0, 108, 101, 1, 21, 2, 32, 3, 55, 55, 36, 22, 0, 7, 6, 109, 0, 3, 65, 0, 8, 164, 195, 100, 121, 115, 2, 17, 65,
+			3, 65, 12, 0, 7, 6, 110, 0, 3, 50, 0, 110, 101, 1, 21, 2, 32, 3, 50, 50, 36, 22, 0, 4, 2, 32, 112, 3, 65, 0,
+			2, 112, 0, 4, 2, 32, 107, 3, 68, 0, 2, 107, 0, 103, 2, 25, 0, 103, 3, 68, 12, 0, 7, 6, 111, 0, 4, 3, 39, 0,
+			1, 98, 109, 121, 115, 2, 108, 111, 105, 0, 4, 1, 98, 109, 121, 115, 2, 108, 3, 39, 12, 0, 111, 0, 105, 105, 3, 39, 37, 12,
+			0, 117, 117, 3, 39, 40, 12, 0, 105, 3, 117, 0, 117, 3, 123, 0, 7, 6, 112, 0, 3, 48, 0, 4, 1, 109, 97, 104, 115, 2,
+			111, 3, 48, 12, 0, 1, 109, 97, 107, 2, 97, 110, 106, 0, 8, 97, 116, 111, 2, 97, 0, 8, 101, 108, 111, 2, 97, 0, 112, 0,
+			7, 6, 113, 0, 3, 49, 0, 113, 3, 49, 12, 0, 7, 6, 114, 0, 3, 34, 0, 7, 6, 115, 0, 3, 89, 0, 116, 105, 1, 17,
+			65, 2, 32, 3, 89, 47, 37, 22, 0, 4, 104, 1, 21, 2, 97, 110, 32, 3, 89, 107, 0, 104, 1, 21, 2, 195, 164, 110, 32, 0,
+			115, 3, 89, 133, 0, 4, 99, 104, 1, 25, 3, 91, 0, 104, 1, 25, 0, 7, 6, 116, 0, 3, 47, 0, 116, 3, 47, 12, 0, 122,
+			3, 47, 89, 0, 115, 101, 1, 21, 2, 32, 3, 47, 89, 36, 22, 0, 7, 6, 117, 0, 3, 40, 0, 117, 3, 40, 12, 0, 105, 105,
+			3, 40, 37, 12, 0, 111, 111, 3, 40, 39, 12, 0, 105, 3, 58, 37, 0, 4, 105, 8, 3, 120, 0, 105, 8, 106, 0, 111, 3, 130,
+			0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 120, 3, 49, 12, 89, 0, 3, 49, 89, 0, 7,
+			6, 121, 0, 3, 114, 0, 121, 3, 114, 12, 0, 105, 105, 3, 114, 37, 12, 0, 195, 182, 195, 182, 3, 114, 111, 12, 0, 105, 3, 121,
+			0, 195, 182, 3, 132, 0, 7, 6, 122, 0, 4, 3, 47, 89, 0, 122, 0, 104, 1, 25, 3, 90, 0, 7, 6, 0, 4, 45, 1, 32,
+			17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 165, 3, 39, 0, 195, 165, 195, 165, 3, 39, 12, 0,
+			45, 8, 32, 2, 32, 15, 3, 65, 37, 12, 50, 40, 89, 0, 36, 3, 72, 39, 55, 55, 35, 34, 37, 50, 0, 197, 190, 3, 90, 0,
+			197, 161, 3, 91, 0, 195, 188, 3, 114, 0, 195, 188, 195, 188, 3, 114, 12, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts20 = FileInMemory_createWithData (5120, reinterpret_cast<const char *> (&espeakdata_dicts20_data), 
+			U"espeak-1.48.04-source/espeak-data/fi_dict", 
 			U"fi");
-		Collection_addItem (me.peek(), espeakdata_dicts18.transfer());
+		my addItem_move (espeakdata_dicts20.move());
 
-		static unsigned char espeakdata_dicts19_data[21485] = {
-			0, 4, 0, 0, 166, 43, 0, 0, 0, 0, 0, 8, 67, 69, 82, 84, 21, 0, 10, 8, 67, 21, 81, 64, 111, 0, 76, 0, 0, 7,
-			65, 4, 35, 0, 14, 9, 5, 193, 4, 76, 36, 6, 65, 4, 35, 0, 76, 0, 13, 70, 12, 243, 150, 20, 229, 0, 49, 116, 84, 113,
-			0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 6, 195, 85, 64, 192, 17, 6, 195, 57, 50, 64, 17, 14, 67, 21, 64, 192, 112,
-			47, 89, 36, 47, 36, 34, 35, 0, 0, 0, 6, 65, 12, 89, 36, 0, 0, 15, 70, 16, 244, 16, 48, 84, 128, 72, 127, 48, 55, 112,
-			34, 0, 0, 6, 195, 69, 81, 64, 76, 12, 4, 95, 8, 1, 3, 49, 35, 34, 6, 116, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0,
-			6, 195, 76, 19, 147, 76, 0, 11, 67, 69, 82, 68, 49, 58, 37, 72, 0, 76, 0, 0, 6, 195, 64, 245, 82, 76, 14, 65, 20, 101,
-			98, 97, 121, 0, 29, 81, 98, 97, 121, 32, 6, 65, 20, 11, 13, 0, 0, 9, 67, 21, 81, 83, 111, 143, 0, 76, 0, 7, 195, 69,
-			82, 64, 32, 76, 0, 0, 7, 65, 24, 11, 112, 83, 0, 0, 0, 21, 67, 80, 245, 84, 47, 40, 55, 47, 113, 0, 82, 108, 101, 32,
-			116, 101, 109, 112, 115, 32, 22, 67, 80, 245, 84, 47, 40, 55, 65, 116, 72, 0, 82, 108, 101, 32, 109, 111, 110, 100, 101, 32, 11, 67,
-			80, 245, 84, 47, 6, 40, 140, 0, 76, 10, 199, 64, 197, 83, 36, 85, 82, 76, 76, 0, 0, 14, 69, 12, 19, 153, 60, 224, 49, 35,
-			50, 57, 127, 50, 0, 16, 65, 28, 90, 37, 81, 35, 112, 34, 47, 89, 0, 81, 104, 122, 32, 6, 65, 28, 90, 36, 0, 0, 16, 70,
-			16, 84, 142, 36, 84, 128, 72, 112, 34, 50, 57, 36, 120, 0, 0, 9, 67, 29, 147, 64, 90, 37, 65, 0, 9, 67, 28, 147, 128, 75,
-			37, 50, 0, 7, 195, 80, 243, 128, 72, 34, 0, 0, 7, 65, 32, 11, 35, 91, 0, 0, 6, 195, 80, 245, 83, 76, 0, 0, 0, 6,
-			65, 36, 11, 37, 0, 0, 8, 66, 37, 0, 37, 48, 36, 0, 10, 1, 37, 48, 40, 34, 89, 113, 0, 27, 0, 6, 195, 12, 20, 128,
-			37, 6, 195, 12, 20, 128, 72, 7, 1, 38, 36, 0, 72, 28, 0, 0, 11, 70, 56, 147, 148, 20, 225, 15, 21, 0, 10, 6, 65, 40,
-			90, 37, 0, 0, 15, 70, 77, 67, 195, 44, 84, 128, 89, 47, 39, 49, 36, 120, 0, 18, 8, 16, 15, 11, 195, 169, 13, 15, 14, 48,
-			39, 49, 36, 65, 127, 50, 0, 0, 8, 67, 76, 148, 128, 21, 0, 10, 10, 67, 16, 243, 148, 72, 116, 140, 0, 72, 14, 1, 42, 35,
-			89, 47, 36, 34, 37, 89, 49, 12, 0, 27, 0, 19, 9, 195, 169, 22, 9, 20, 9, 15, 14, 19, 36, 84, 37, 47, 57, 116, 143, 0,
-			12, 68, 52, 81, 9, 4, 65, 36, 72, 57, 35, 0, 9, 1, 43, 48, 55, 111, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 15,
-			7, 195, 169, 20, 9, 15, 14, 19, 36, 47, 57, 116, 143, 0, 0, 0, 8, 67, 25, 35, 205, 21, 0, 10, 3, 129, 47, 0, 7, 65,
-			48, 11, 112, 55, 0, 0, 23, 1, 49, 48, 34, 13, 65, 57, 112, 34, 65, 113, 0, 81, 195, 168, 114, 101, 109, 101, 110, 116, 32, 19,
-			1, 49, 48, 34, 13, 65, 57, 112, 34, 143, 0, 81, 195, 168, 114, 101, 115, 32, 17, 1, 49, 48, 34, 13, 65, 57, 112, 34, 0, 81,
-			195, 168, 114, 101, 32, 16, 1, 49, 48, 34, 13, 65, 57, 36, 143, 0, 81, 101, 114, 115, 32, 15, 1, 49, 48, 34, 13, 65, 57, 36,
-			120, 0, 81, 101, 114, 32, 16, 70, 69, 81, 76, 69, 81, 64, 49, 112, 55, 49, 8, 13, 0, 76, 0, 10, 67, 44, 20, 148, 49, 35,
-			34, 47, 0, 6, 195, 69, 81, 76, 76, 0, 7, 196, 80, 83, 12, 20, 76, 0, 7, 65, 52, 11, 112, 65, 0, 0, 9, 67, 52, 83,
-			147, 65, 113, 143, 0, 17, 66, 53, 0, 23, 112, 65, 48, 36, 47, 34, 58, 35, 0, 81, 51, 32, 0, 0, 9, 196, 48, 85, 82, 76,
-			72, 36, 40, 8, 196, 48, 85, 82, 76, 76, 34, 0, 9, 5, 95, 48, 1, 14, 4, 36, 0, 7, 65, 56, 11, 112, 50, 0, 0, 0,
-			0, 0, 14, 69, 64, 19, 1, 61, 48, 48, 35, 55, 35, 127, 89, 0, 6, 65, 60, 11, 39, 0, 0, 8, 67, 28, 20, 147, 81, 35,
-			0, 6, 195, 57, 50, 83, 17, 0, 0, 9, 133, 195, 170, 20, 5, 19, 76, 36, 0, 11, 1, 64, 24, 35, 34, 39, 71, 35, 88, 0,
-			6, 65, 64, 48, 36, 0, 0, 9, 198, 21, 84, 211, 20, 229, 0, 76, 0, 0, 0, 14, 6, 8, 195, 169, 12, 1, 19, 36, 55, 35,
-			89, 0, 76, 6, 65, 68, 49, 111, 0, 0, 0, 0, 0, 20, 5, 22, 9, 195, 170, 20, 84, 57, 112, 47, 50, 35, 65, 0, 81, 110,
-			97, 109, 32, 14, 69, 16, 80, 137, 4, 224, 72, 36, 71, 57, 35, 50, 0, 7, 65, 72, 11, 112, 34, 0, 0, 13, 70, 12, 128, 82,
-			48, 84, 192, 91, 35, 34, 55, 0, 0, 0, 0, 18, 9, 13, 15, 14, 20, 18, 195, 169, 1, 12, 65, 116, 34, 36, 35, 55, 0, 10,
-			5, 1, 15, 195, 187, 20, 40, 47, 0, 7, 65, 76, 11, 112, 89, 0, 0, 0, 7, 195, 84, 225, 64, 34, 76, 0, 0, 14, 65, 80,
-			21, 0, 10, 81, 115, 104, 105, 114, 116, 115, 32, 13, 65, 80, 21, 0, 10, 81, 115, 104, 105, 114, 116, 32, 11, 69, 5, 85, 133, 57,
-			64, 39, 84, 113, 0, 0, 5, 194, 4, 48, 17, 0, 6, 195, 12, 147, 192, 17, 0, 11, 68, 52, 145, 85, 96, 65, 37, 132, 0, 76,
-			0, 20, 73, 9, 32, 90, 104, 21, 137, 48, 193, 64, 71, 34, 35, 88, 35, 84, 37, 55, 0, 6, 65, 84, 11, 111, 0, 0, 7, 66,
-			85, 0, 21, 0, 10, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 15, 70, 44, 225, 83, 76, 85, 0, 49, 50, 36, 89, 112, 47, 0,
-			12, 66, 5, 48, 35, 47, 111, 0, 81, 116, 117, 32, 9, 66, 5, 48, 35, 143, 0, 76, 36, 7, 66, 5, 48, 35, 89, 0, 6, 195,
-			48, 244, 147, 76, 0, 0, 0, 10, 69, 28, 84, 141, 4, 224, 21, 0, 10, 11, 67, 4, 98, 78, 35, 83, 114, 0, 76, 28, 12, 65,
-			92, 72, 40, 71, 55, 13, 84, 6, 36, 0, 0, 0, 0, 0, 10, 4, 95, 49, 77, 49, 65, 37, 55, 0, 8, 65, 96, 11, 37, 49,
-			89, 0, 0, 0, 13, 67, 44, 34, 84, 49, 37, 55, 39, 71, 37, 47, 0, 0, 11, 68, 69, 80, 78, 16, 49, 113, 140, 0, 76, 0,
-			10, 69, 37, 51, 1, 56, 64, 21, 0, 10, 13, 65, 100, 23, 37, 81, 34, 6, 112, 49, 0, 14, 9, 17, 70, 69, 81, 76, 69, 81,
-			83, 49, 112, 55, 49, 8, 13, 143, 0, 76, 5, 193, 100, 76, 32, 0, 10, 67, 4, 226, 83, 35, 50, 37, 89, 0, 0, 8, 67, 100,
-			84, 192, 21, 0, 10, 9, 67, 76, 20, 192, 89, 35, 89, 0, 10, 67, 48, 244, 192, 55, 39, 89, 0, 76, 0, 10, 67, 8, 197, 77,
-			71, 55, 40, 65, 0, 7, 196, 20, 225, 137, 56, 76, 0, 7, 65, 104, 88, 112, 72, 0, 0, 7, 66, 5, 64, 21, 0, 10, 0, 0,
-			11, 68, 5, 48, 201, 36, 35, 89, 49, 37, 0, 0, 0, 0, 0, 0, 0, 16, 70, 100, 241, 207, 85, 37, 0, 23, 37, 39, 81, 40,
-			34, 47, 0, 10, 66, 12, 16, 89, 35, 0, 76, 41, 32, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 5, 80, 72, 34, 0, 11, 67,
-			52, 84, 192, 65, 123, 143, 0, 72, 34, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 7, 195, 5, 86, 0, 72, 34,
-			0, 0, 15, 66, 8, 64, 98, 111, 117, 108, 101, 118, 97, 114, 100, 0, 29, 0, 0, 0, 0, 0, 0, 6, 195, 69, 83, 201, 76, 0,
-			13, 69, 52, 147, 15, 84, 64, 65, 37, 55, 40, 72, 0, 0, 0, 0, 12, 67, 5, 98, 0, 35, 84, 4, 36, 35, 91, 0, 0, 13,
-			69, 12, 19, 131, 21, 32, 49, 113, 89, 112, 34, 0, 0, 0, 0, 10, 4, 95, 49, 67, 48, 89, 113, 140, 0, 0, 0, 7, 66, 8,
-			80, 21, 0, 10, 7, 195, 5, 97, 67, 76, 28, 0, 18, 71, 21, 52, 5, 72, 19, 148, 60, 112, 89, 48, 36, 34, 113, 47, 39, 0,
-			6, 195, 57, 66, 64, 17, 0, 0, 0, 0, 0, 11, 68, 20, 225, 133, 72, 113, 83, 112, 34, 0, 10, 2, 13, 46, 65, 13, 89, 37,
-			132, 0, 0, 0, 0, 0, 0, 0, 14, 70, 64, 128, 76, 49, 84, 192, 83, 35, 55, 111, 89, 0, 0, 9, 67, 9, 85, 0, 71, 111,
-			47, 0, 9, 67, 9, 85, 0, 71, 111, 0, 36, 0, 16, 70, 40, 83, 142, 36, 97, 82, 90, 36, 50, 37, 83, 112, 34, 0, 0, 0,
-			17, 70, 52, 20, 135, 5, 33, 84, 65, 35, 34, 81, 35, 34, 112, 47, 0, 0, 15, 71, 76, 128, 77, 64, 242, 78, 28, 91, 113, 48,
-			58, 114, 0, 0, 11, 68, 69, 80, 78, 80, 49, 113, 140, 0, 72, 0, 0, 0, 0, 7, 196, 5, 96, 78, 80, 76, 0, 0, 13, 66,
-			17, 32, 72, 39, 49, 47, 132, 34, 0, 24, 41, 0, 9, 67, 21, 84, 192, 111, 143, 0, 76, 0, 0, 0, 0, 9, 198, 64, 245, 82,
-			69, 83, 201, 76, 0, 8, 67, 48, 149, 5, 21, 0, 10, 10, 67, 8, 85, 1, 71, 36, 47, 35, 0, 0, 13, 69, 52, 22, 143, 85,
-			64, 65, 35, 88, 40, 47, 0, 13, 138, 14, 195, 169, 1, 14, 13, 15, 9, 14, 19, 76, 0, 14, 70, 52, 22, 79, 81, 65, 64, 65,
-			35, 57, 127, 47, 0, 12, 66, 4, 144, 112, 90, 0, 76, 81, 106, 101, 32, 6, 194, 4, 144, 76, 36, 6, 194, 12, 80, 76, 34, 0,
-			0, 0, 11, 69, 16, 83, 135, 84, 80, 72, 114, 81, 0, 0, 0, 7, 195, 4, 149, 0, 76, 36, 9, 134, 7, 21, 195, 168, 18, 5,
-			76, 7, 195, 12, 85, 0, 72, 34, 0, 9, 67, 4, 150, 0, 112, 49, 89, 0, 0, 0, 0, 0, 12, 68, 77, 67, 213, 80, 89, 47,
-			35, 40, 47, 0, 0, 21, 69, 12, 83, 12, 21, 48, 89, 112, 55, 15, 55, 35, 0, 32, 76, 81, 108, 195, 160, 32, 20, 69, 12, 83,
-			12, 21, 48, 89, 112, 55, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32, 8, 197, 12, 83, 12, 21, 48, 76, 0, 18, 70, 76, 51, 210,
-			9, 85, 0, 115, 99, 111, 114, 98, 117, 116, 116, 0, 29, 0, 9, 67, 13, 85, 0, 49, 117, 47, 0, 0, 12, 68, 49, 82, 71, 36,
-			55, 58, 37, 75, 37, 0, 0, 0, 8, 67, 101, 97, 83, 37, 84, 0, 0, 0, 0, 0, 0, 8, 67, 57, 83, 12, 21, 0, 10, 0,
-			0, 20, 73, 12, 243, 148, 20, 229, 9, 60, 228, 192, 49, 116, 47, 113, 47, 57, 116, 143, 0, 0, 0, 19, 71, 29, 80, 84, 20, 208,
-			76, 4, 81, 58, 35, 47, 36, 65, 35, 55, 35, 0, 0, 0, 8, 67, 76, 48, 78, 21, 0, 10, 0, 0, 0, 0, 13, 5, 4, 39,
-			5, 19, 20, 72, 6, 112, 89, 47, 0, 0, 6, 194, 16, 80, 72, 34, 0, 0, 0, 0, 0, 18, 71, 32, 19, 66, 85, 33, 197, 72,
-			23, 113, 71, 13, 34, 81, 117, 34, 0, 9, 67, 8, 149, 0, 71, 37, 47, 0, 6, 195, 52, 242, 64, 76, 6, 195, 12, 50, 64, 17,
-			0, 9, 68, 9, 34, 65, 56, 21, 0, 10, 12, 68, 80, 245, 84, 20, 47, 6, 40, 47, 0, 76, 13, 4, 95, 4, 16, 20, 84, 37,
-			34, 81, 111, 55, 0, 0, 0, 15, 70, 81, 32, 77, 92, 22, 64, 47, 34, 35, 65, 58, 137, 0, 8, 66, 21, 48, 112, 143, 0, 76,
-			9, 66, 17, 80, 72, 130, 0, 72, 34, 0, 0, 0, 0, 11, 70, 65, 35, 199, 72, 19, 64, 21, 0, 10, 0, 11, 70, 76, 19, 69,
-			80, 147, 69, 21, 0, 10, 9, 67, 21, 53, 0, 112, 140, 0, 76, 0, 0, 0, 15, 70, 8, 80, 85, 12, 245, 80, 71, 39, 49, 40,
-			139, 0, 76, 0, 0, 15, 3, 95, 35, 57, 47, 35, 71, 111, 55, 35, 89, 37, 116, 0, 12, 4, 95, 20, 12, 4, 47, 6, 37, 55,
-			72, 0, 0, 0, 0, 12, 67, 52, 228, 192, 65, 37, 50, 111, 47, 143, 0, 10, 67, 4, 197, 0, 24, 35, 55, 47, 0, 0, 12, 68,
-			32, 147, 132, 36, 23, 37, 50, 72, 37, 0, 0, 0, 7, 66, 21, 64, 36, 0, 76, 0, 0, 0, 0, 24, 74, 48, 145, 67, 33, 65,
-			78, 77, 65, 73, 56, 55, 37, 91, 47, 117, 50, 91, 47, 35, 57, 50, 0, 0, 0, 11, 4, 5, 195, 187, 20, 111, 140, 0, 76, 36,
-			0, 8, 197, 5, 85, 1, 57, 64, 76, 0, 0, 12, 67, 4, 209, 0, 35, 4, 112, 65, 72, 36, 0, 0, 17, 72, 52, 243, 148, 76,
-			84, 146, 5, 64, 65, 116, 89, 36, 34, 35, 0, 0, 0, 9, 198, 21, 84, 211, 36, 86, 128, 76, 15, 70, 4, 225, 18, 60, 145, 0,
-			113, 72, 34, 39, 37, 72, 0, 0, 0, 10, 68, 48, 245, 73, 76, 55, 58, 37, 0, 0, 13, 69, 8, 83, 9, 104, 80, 71, 36, 55,
-			37, 88, 0, 10, 69, 64, 83, 208, 48, 80, 21, 0, 10, 0, 7, 66, 21, 80, 111, 0, 76, 0, 0, 0, 0, 0, 10, 67, 21, 85,
-			0, 111, 140, 0, 76, 36, 0, 9, 67, 21, 86, 0, 132, 143, 0, 76, 0, 15, 70, 12, 245, 83, 12, 245, 83, 49, 40, 89, 49, 40,
-			89, 0, 0, 8, 67, 4, 225, 0, 21, 0, 10, 0, 0, 0, 0, 0, 0, 10, 67, 25, 81, 76, 83, 57, 40, 55, 0, 0, 12, 68,
-			12, 147, 132, 100, 89, 37, 50, 72, 37, 0, 0, 0, 16, 70, 65, 33, 77, 36, 84, 128, 48, 34, 13, 65, 57, 36, 120, 0, 0, 16,
-			67, 80, 19, 148, 47, 113, 48, 37, 0, 76, 81, 112, 105, 115, 32, 19, 67, 80, 19, 148, 47, 113, 65, 57, 132, 0, 76, 81, 109, 105,
-			101, 117, 120, 32, 10, 67, 80, 19, 148, 47, 113, 140, 0, 76, 0, 0, 0, 0, 6, 195, 5, 97, 192, 17, 0, 0, 0, 9, 198, 69,
-			83, 201, 69, 81, 64, 72, 0, 16, 7, 11, 15, 23, 5, 195, 175, 20, 49, 39, 58, 112, 57, 47, 0, 11, 67, 4, 243, 0, 35, 4,
-			39, 112, 55, 0, 0, 20, 68, 12, 83, 12, 20, 89, 112, 55, 15, 55, 35, 0, 32, 76, 81, 108, 195, 160, 32, 19, 68, 12, 83, 12,
-			20, 89, 112, 55, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32, 7, 196, 12, 83, 12, 20, 76, 0, 17, 70, 4, 195, 5, 49, 82, 65,
-			35, 55, 36, 55, 40, 37, 6, 35, 0, 0, 0, 0, 0, 0, 0, 8, 67, 32, 19, 128, 23, 113, 0, 0, 0, 11, 67, 25, 85, 0,
-			83, 111, 140, 0, 76, 36, 0, 0, 7, 195, 52, 243, 128, 72, 34, 0, 0, 0, 6, 194, 20, 128, 76, 28, 7, 66, 16, 160, 21, 0,
-			10, 0, 6, 195, 64, 20, 128, 76, 12, 67, 60, 52, 128, 39, 89, 4, 36, 112, 34, 0, 0, 0, 15, 69, 44, 192, 88, 60, 224, 49,
-			55, 35, 49, 89, 127, 50, 0, 0, 0, 0, 8, 196, 20, 195, 5, 76, 76, 32, 0, 18, 3, 226, 132, 162, 65, 35, 34, 49, 72, 13,
-			83, 35, 71, 34, 37, 49, 0, 0, 0, 18, 71, 24, 83, 4, 77, 0, 84, 32, 83, 112, 55, 72, 89, 48, 35, 47, 0, 0, 0, 12,
-			69, 8, 22, 69, 85, 128, 71, 35, 57, 132, 0, 0, 0, 0, 12, 68, 44, 83, 153, 4, 49, 36, 50, 57, 35, 0, 9, 68, 64, 245,
-			76, 76, 48, 40, 0, 10, 67, 16, 19, 147, 72, 113, 143, 0, 76, 22, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 116, 134, 0, 76,
-			81, 113, 117, 39, 111, 110, 32, 26, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 112, 55, 143, 0, 76, 81, 113, 117, 39, 101, 108, 108,
-			101, 115, 32, 24, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 112, 55, 0, 76, 81, 113, 117, 39, 101, 108, 108, 101, 32, 24, 68, 64,
-			20, 131, 20, 48, 35, 34, 89, 49, 37, 55, 143, 0, 76, 81, 113, 117, 39, 105, 108, 115, 32, 22, 68, 64, 20, 131, 20, 48, 35, 34,
-			89, 49, 37, 55, 0, 76, 81, 113, 117, 39, 105, 108, 32, 19, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 13, 0, 76, 81, 113, 117,
-			101, 32, 0, 0, 9, 198, 64, 245, 82, 80, 19, 148, 76, 17, 66, 12, 208, 99, 101, 110, 116, 105, 109, 195, 168, 116, 114, 101, 0, 29,
-			0, 12, 67, 16, 149, 152, 72, 37, 84, 37, 49, 89, 0, 0, 0, 8, 67, 28, 85, 0, 21, 0, 10, 0, 0, 9, 67, 32, 20, 148,
-			35, 34, 47, 0, 0, 0, 0, 0, 0, 0, 13, 69, 92, 19, 12, 37, 48, 58, 35, 55, 37, 89, 0, 14, 69, 32, 84, 141, 21, 48,
-			23, 112, 34, 65, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 21, 70, 44, 212, 12, 5, 145, 82, 49, 35, 4, 112, 65, 48, 55, 112,
-			57, 6, 117, 34, 0, 0, 0, 0, 0, 12, 68, 92, 20, 137, 60, 58, 35, 34, 57, 39, 0, 0, 0, 16, 70, 4, 192, 137, 56, 244,
-			192, 35, 55, 71, 37, 50, 39, 89, 0, 6, 195, 57, 97, 1, 17, 0, 11, 3, 226, 130, 172, 13, 34, 6, 39, 0, 76, 0, 0, 10,
-			69, 60, 194, 86, 21, 32, 21, 0, 10, 0, 0, 15, 70, 80, 83, 148, 36, 243, 147, 47, 113, 47, 57, 116, 143, 0, 6, 195, 44, 65,
-			64, 17, 0, 0, 10, 69, 72, 81, 8, 5, 64, 21, 0, 10, 12, 69, 21, 84, 133, 57, 64, 111, 34, 140, 0, 76, 0, 7, 66, 32,
-			80, 21, 0, 10, 0, 0, 12, 68, 5, 37, 66, 4, 35, 34, 40, 71, 35, 0, 6, 195, 88, 84, 147, 37, 10, 67, 88, 84, 147, 84,
-			112, 34, 0, 76, 0, 14, 69, 25, 85, 21, 56, 16, 83, 40, 47, 40, 50, 35, 0, 8, 197, 12, 128, 81, 84, 80, 76, 16, 69, 20,
-			32, 196, 36, 48, 13, 71, 36, 89, 36, 72, 37, 49, 0, 0, 0, 0, 0, 13, 69, 4, 113, 78, 16, 16, 35, 90, 114, 72, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 192, 76, 12, 3, 95, 50, 49, 84, 114, 47, 36, 12, 115, 0, 0, 9, 67, 64,
-			20, 192, 48, 35, 0, 37, 11, 67, 64, 20, 192, 48, 6, 35, 143, 0, 76, 9, 3, 95, 50, 48, 84, 114, 140, 0, 0, 12, 68, 44,
-			85, 137, 56, 49, 36, 84, 37, 50, 0, 14, 3, 95, 50, 51, 84, 114, 47, 47, 34, 58, 35, 143, 0, 0, 18, 5, 19, 46, 20, 46,
-			16, 89, 37, 55, 47, 13, 12, 48, 55, 6, 112, 0, 12, 3, 95, 50, 50, 84, 114, 47, 72, 132, 143, 0, 0, 11, 70, 69, 81, 82,
-			36, 84, 192, 21, 0, 10, 12, 3, 95, 50, 53, 84, 114, 47, 89, 114, 49, 0, 0, 8, 67, 32, 148, 192, 21, 0, 10, 13, 3, 95,
-			50, 52, 84, 114, 47, 49, 35, 47, 34, 0, 0, 12, 3, 95, 50, 55, 84, 114, 47, 89, 112, 47, 0, 0, 12, 3, 95, 50, 54, 84,
-			114, 47, 89, 37, 144, 0, 0, 7, 66, 37, 64, 21, 0, 10, 13, 3, 95, 51, 49, 47, 34, 113, 47, 36, 12, 115, 0, 13, 4, 95,
-			13, 3, 14, 65, 35, 49, 34, 6, 116, 0, 0, 0, 0, 0, 6, 195, 76, 52, 201, 17, 0, 0, 10, 67, 48, 19, 211, 55, 35, 127,
-			89, 0, 0, 0, 7, 66, 16, 240, 21, 0, 10, 0, 12, 67, 20, 211, 0, 13, 4, 112, 65, 112, 55, 0, 0, 0, 9, 67, 16, 245,
-			0, 72, 127, 47, 0, 0, 0, 0, 9, 68, 64, 20, 5, 72, 21, 0, 10, 0, 0, 0, 0, 14, 6, 95, 18, 15, 13, 1, 14, 34,
-			39, 65, 6, 114, 0, 0, 0, 0, 10, 134, 5, 195, 187, 13, 5, 19, 76, 36, 10, 134, 6, 195, 187, 13, 5, 19, 76, 36, 0, 0,
-			8, 67, 20, 225, 0, 21, 0, 10, 8, 197, 16, 84, 21, 37, 48, 76, 0, 17, 66, 20, 224, 113, 15, 47, 40, 143, 0, 76, 81, 116,
-			111, 117, 115, 32, 7, 194, 20, 224, 76, 36, 40, 5, 194, 20, 224, 76, 5, 194, 20, 224, 72, 15, 3, 95, 54, 49, 89, 58, 35, 89,
-			113, 47, 36, 12, 115, 0, 0, 10, 3, 95, 51, 88, 47, 34, 113, 47, 0, 0, 11, 68, 77, 84, 200, 36, 89, 40, 91, 37, 0, 12,
-			68, 52, 19, 21, 76, 65, 35, 55, 111, 89, 0, 8, 3, 95, 48, 67, 89, 113, 0, 0, 0, 0, 0, 7, 196, 5, 52, 197, 104, 76,
-			18, 3, 16, 46, 19, 48, 127, 89, 47, 89, 49, 34, 37, 48, 47, 127, 65, 0, 0, 0, 8, 67, 52, 17, 5, 21, 0, 10, 13, 70,
-			16, 84, 211, 61, 84, 192, 72, 13, 89, 40, 0, 16, 3, 95, 55, 49, 89, 112, 48, 47, 113, 47, 36, 12, 115, 0, 102, 16, 3, 95,
-			55, 49, 89, 58, 35, 89, 113, 47, 36, 12, 116, 88, 0, 0, 0, 0, 0, 0, 10, 67, 77, 65, 64, 89, 6, 114, 47, 0, 0, 7,
-			196, 64, 20, 141, 36, 76, 0, 0, 19, 66, 48, 16, 55, 121, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 32, 6, 194, 40,
-			80, 72, 32, 10, 66, 48, 16, 55, 121, 0, 36, 40, 72, 9, 66, 48, 16, 55, 121, 0, 34, 76, 12, 3, 95, 49, 57, 72, 37, 88,
-			50, 117, 83, 0, 0, 11, 67, 5, 2, 64, 35, 48, 4, 36, 37, 0, 12, 3, 95, 49, 56, 72, 37, 88, 111, 37, 141, 0, 0, 0,
-			8, 197, 20, 224, 207, 72, 80, 76, 0, 0, 0, 0, 0, 14, 70, 80, 130, 69, 73, 38, 64, 47, 57, 112, 34, 37, 0, 12, 3, 95,
-			50, 57, 84, 114, 47, 50, 117, 83, 0, 9, 3, 95, 49, 49, 23, 116, 88, 0, 0, 12, 3, 95, 50, 56, 84, 114, 47, 111, 37, 141,
-			0, 9, 3, 95, 49, 48, 72, 37, 144, 0, 0, 10, 3, 95, 49, 51, 47, 34, 112, 88, 0, 0, 9, 3, 95, 49, 50, 72, 40, 88,
-			0, 0, 7, 195, 12, 83, 1, 76, 32, 9, 3, 95, 49, 53, 49, 114, 88, 0, 0, 12, 3, 95, 49, 52, 49, 35, 47, 127, 34, 88,
-			0, 0, 7, 196, 4, 147, 147, 36, 76, 11, 3, 95, 49, 55, 72, 37, 89, 112, 47, 0, 0, 9, 3, 95, 49, 54, 89, 112, 88, 0,
-			0, 0, 7, 195, 25, 84, 192, 76, 36, 17, 70, 52, 84, 131, 20, 65, 83, 65, 112, 34, 89, 36, 72, 112, 89, 0, 13, 3, 95, 55,
-			88, 89, 112, 48, 47, 113, 47, 0, 102, 0, 0, 0, 0, 11, 67, 21, 130, 84, 36, 81, 88, 37, 47, 0, 9, 67, 9, 84, 192, 71,
-			111, 0, 36, 9, 67, 9, 84, 192, 71, 111, 89, 0, 0, 0, 0, 10, 66, 33, 160, 23, 112, 34, 47, 89, 0, 0, 19, 71, 88, 83,
-			133, 105, 81, 76, 4, 84, 36, 50, 36, 88, 111, 112, 55, 35, 0, 0, 24, 11, 4, 195, 169, 19, 5, 18, 20, 9, 15, 14, 19, 72,
-			36, 88, 112, 34, 47, 57, 116, 143, 0, 36, 0, 0, 0, 0, 0, 10, 69, 52, 20, 16, 21, 32, 21, 0, 10, 0, 16, 70, 88, 19,
-			149, 5, 69, 64, 84, 35, 50, 40, 35, 47, 40, 0, 9, 66, 52, 16, 65, 121, 0, 72, 34, 14, 3, 95, 52, 49, 49, 35, 34, 113,
-			47, 36, 12, 115, 0, 0, 14, 67, 52, 134, 128, 65, 36, 81, 35, 112, 34, 47, 89, 0, 0, 19, 72, 24, 18, 18, 20, 226, 5, 37,
-			64, 83, 35, 34, 13, 50, 35, 57, 47, 0, 0, 9, 67, 52, 21, 0, 65, 35, 47, 0, 0, 0, 0, 0, 10, 69, 52, 18, 76, 80,
-			240, 21, 0, 10, 0, 14, 3, 95, 53, 49, 89, 114, 49, 113, 47, 36, 12, 115, 0, 0, 17, 71, 77, 2, 9, 56, 53, 5, 72, 89,
-			83, 114, 49, 47, 112, 34, 0, 0, 0, 8, 197, 80, 83, 12, 21, 48, 76, 0, 0, 0, 0, 21, 2, 50, 49, 84, 114, 47, 36, 12,
-			111, 50, 37, 112, 65, 0, 81, 195, 168, 109, 101, 32, 0, 0, 0, 8, 67, 28, 81, 75, 21, 0, 10, 0, 0, 0, 6, 195, 92, 208,
-			64, 17, 0, 13, 3, 95, 63, 63, 89, 114, 71, 6, 39, 55, 55, 0, 0, 22, 2, 51, 49, 47, 34, 113, 47, 36, 12, 111, 50, 37,
-			112, 65, 0, 81, 195, 168, 109, 101, 32, 0, 15, 70, 13, 147, 148, 32, 144, 64, 89, 37, 50, 47, 37, 35, 0, 10, 66, 53, 32, 65,
-			13, 89, 37, 132, 0, 0, 11, 3, 95, 52, 88, 49, 35, 34, 113, 47, 0, 0, 0, 17, 70, 104, 147, 66, 4, 37, 197, 88, 37, 65,
-			71, 35, 71, 58, 36, 0, 10, 67, 60, 208, 78, 39, 65, 35, 50, 0, 0, 0, 7, 195, 4, 145, 64, 76, 36, 0, 0, 14, 69, 32,
-			19, 76, 21, 64, 23, 35, 65, 55, 112, 47, 0, 23, 2, 52, 49, 49, 35, 34, 113, 47, 36, 12, 111, 50, 37, 112, 65, 0, 81, 195,
-			168, 109, 101, 32, 0, 19, 66, 48, 80, 55, 14, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 32, 7, 194, 48, 80, 36, 40,
-			72, 6, 194, 48, 80, 34, 76, 16, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 109, 101, 0, 29, 0, 6, 195, 64, 50, 64, 17,
-			14, 3, 95, 56, 48, 49, 35, 47, 34, 13, 84, 114, 143, 0, 11, 3, 95, 53, 88, 89, 114, 49, 113, 47, 0, 0, 8, 196, 12, 85,
-			20, 20, 72, 34, 0, 9, 67, 56, 21, 0, 50, 35, 47, 0, 8, 67, 48, 85, 0, 21, 0, 10, 0, 0, 8, 67, 52, 18, 64, 65,
-			112, 0, 0, 9, 68, 64, 85, 5, 72, 21, 0, 10, 15, 70, 40, 16, 203, 64, 245, 0, 75, 35, 49, 48, 127, 47, 0, 0, 8, 197,
-			69, 81, 76, 48, 80, 76, 23, 2, 53, 49, 89, 114, 49, 113, 47, 36, 12, 111, 50, 37, 112, 65, 0, 81, 195, 168, 109, 101, 32, 0,
-			16, 70, 92, 19, 21, 36, 114, 64, 58, 35, 55, 40, 37, 75, 37, 0, 14, 66, 45, 112, 107, 105, 108, 111, 119, 97, 116, 116, 0, 29,
-			15, 3, 95, 57, 49, 50, 39, 50, 113, 47, 36, 12, 115, 0, 102, 0, 16, 67, 60, 83, 64, 11, 4, 39, 11, 4, 13, 11, 6, 112,
-			65, 0, 12, 3, 95, 54, 88, 89, 58, 35, 89, 113, 47, 0, 0, 7, 196, 5, 84, 211, 36, 76, 0, 13, 69, 80, 83, 142, 37, 48,
-			47, 36, 50, 37, 89, 0, 0, 7, 131, 195, 167, 1, 76, 32, 0, 0, 11, 68, 48, 144, 153, 20, 55, 37, 71, 37, 0, 14, 70, 52,
-			243, 147, 36, 85, 82, 65, 13, 89, 57, 132, 0, 7, 195, 4, 145, 83, 76, 36, 0, 10, 67, 29, 83, 6, 81, 127, 55, 83, 0, 8,
-			197, 12, 84, 148, 21, 48, 76, 24, 2, 54, 49, 89, 58, 35, 89, 113, 47, 36, 12, 111, 50, 37, 112, 65, 0, 81, 195, 168, 109, 101,
-			32, 0, 6, 194, 36, 192, 76, 32, 0, 0, 17, 70, 72, 85, 143, 49, 97, 82, 34, 36, 84, 127, 55, 84, 112, 34, 0, 0, 17, 5,
-			19, 46, 22, 46, 16, 89, 37, 55, 84, 129, 48, 55, 6, 112, 0, 0, 0, 0, 6, 195, 52, 18, 83, 76, 0, 0, 0, 8, 67, 52,
-			18, 76, 21, 0, 10, 13, 67, 13, 68, 140, 24, 49, 116, 47, 34, 127, 55, 0, 14, 3, 95, 56, 88, 49, 35, 47, 34, 13, 84, 114,
-			12, 0, 0, 0, 10, 69, 61, 85, 16, 85, 64, 21, 0, 10, 11, 69, 12, 131, 197, 85, 32, 49, 117, 34, 0, 0, 15, 70, 76, 19,
-			83, 84, 225, 192, 89, 35, 65, 89, 40, 68, 0, 0, 0, 0, 24, 2, 56, 49, 49, 35, 47, 34, 13, 84, 114, 12, 111, 50, 37, 112,
-			65, 0, 81, 195, 168, 109, 101, 32, 0, 6, 194, 52, 80, 72, 32, 0, 9, 198, 21, 84, 211, 36, 243, 147, 76, 12, 3, 95, 57, 88,
-			50, 39, 50, 113, 47, 0, 102, 0, 0, 8, 67, 32, 245, 0, 21, 0, 10, 0, 0, 0, 0, 0, 11, 3, 95, 63, 65, 55, 6, 112,
-			47, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 70, 72, 84, 85, 36, 83, 64, 34, 36, 49, 111, 37, 57, 112, 65, 0, 0, 7,
-			66, 36, 224, 21, 0, 10, 0, 22, 67, 92, 80, 128, 119, 101, 98, 118, 105, 115, 117, 109, 0, 29, 81, 118, 105, 115, 117, 109, 32, 0,
-			0, 0, 7, 195, 77, 82, 83, 76, 36, 15, 70, 64, 130, 76, 37, 4, 192, 83, 37, 55, 37, 48, 89, 0, 0, 18, 67, 12, 85, 88,
-			89, 132, 15, 55, 35, 0, 32, 76, 81, 108, 195, 160, 32, 17, 67, 12, 85, 88, 89, 132, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32,
-			6, 195, 12, 85, 88, 76, 14, 4, 95, 15, 7, 15, 39, 81, 39, 50, 6, 112, 49, 0, 0, 7, 196, 20, 229, 18, 20, 36, 7, 196,
-			20, 229, 18, 20, 76, 0, 0, 0, 0, 0, 15, 69, 5, 162, 77, 85, 64, 35, 88, 37, 65, 6, 111, 47, 0, 0, 10, 67, 76, 83,
-			147, 89, 113, 143, 0, 36, 9, 67, 76, 83, 147, 89, 113, 89, 0, 17, 70, 65, 33, 83, 69, 81, 64, 48, 34, 112, 89, 49, 8, 13,
-			0, 76, 17, 70, 65, 82, 83, 69, 81, 64, 48, 111, 37, 89, 49, 8, 13, 0, 76, 0, 11, 67, 81, 35, 208, 47, 34, 39, 139, 0,
-			76, 0, 0, 0, 6, 194, 56, 80, 72, 32, 0, 10, 67, 61, 82, 64, 23, 58, 37, 0, 76, 0, 14, 68, 80, 86, 1, 76, 47, 112,
-			49, 89, 6, 35, 89, 0, 0, 14, 69, 52, 19, 1, 92, 144, 65, 35, 55, 35, 58, 37, 0, 0, 0, 9, 67, 56, 85, 0, 50, 112,
-			47, 0, 0, 0, 15, 70, 52, 21, 20, 32, 144, 83, 65, 35, 47, 57, 35, 89, 0, 0, 0, 0, 0, 6, 195, 65, 35, 198, 24, 0,
-			7, 195, 88, 245, 83, 76, 32, 7, 195, 56, 245, 83, 76, 32, 12, 4, 95, 48, 77, 50, 65, 37, 55, 57, 116, 0, 0, 9, 67, 56,
-			243, 128, 50, 116, 0, 76, 13, 4, 95, 48, 77, 51, 65, 37, 55, 57, 35, 34, 0, 0, 0, 14, 6, 22, 195, 169, 14, 21, 19, 84,
-			36, 50, 111, 89, 0, 10, 4, 95, 48, 77, 49, 65, 37, 55, 0, 0, 12, 4, 95, 2, 18, 22, 71, 34, 6, 112, 84, 0, 0, 17,
-			67, 56, 244, 132, 50, 39, 34, 112, 89, 47, 0, 81, 101, 115, 116, 32, 18, 70, 8, 243, 212, 4, 35, 5, 98, 111, 117, 116, 97, 98,
-			108, 101, 0, 29, 0, 0, 0, 0, 6, 195, 24, 244, 128, 76, 11, 67, 85, 4, 192, 111, 48, 36, 112, 89, 0, 0, 0, 0, 8, 67,
-			28, 83, 147, 90, 113, 0, 17, 66, 65, 32, 112, 114, 111, 102, 101, 115, 115, 101, 117, 114, 0, 41, 29, 0, 0, 0, 16, 70, 64, 20,
-			148, 36, 243, 147, 48, 35, 34, 47, 57, 116, 143, 0, 14, 69, 76, 245, 137, 21, 64, 89, 39, 84, 37, 112, 47, 0, 0, 0, 0, 0,
-			0, 25, 66, 44, 208, 49, 35, 4, 112, 65, 48, 55, 112, 57, 6, 117, 34, 0, 81, 112, 108, 97, 121, 101, 114, 32, 16, 66, 44, 208,
-			107, 105, 108, 111, 109, 195, 168, 116, 114, 101, 0, 29, 0, 0, 13, 5, 20, 18, 195, 168, 19, 47, 34, 112, 143, 0, 76, 0, 10, 69,
-			16, 83, 5, 80, 80, 21, 0, 10, 0, 10, 67, 52, 20, 147, 65, 35, 34, 89, 0, 0, 17, 71, 12, 132, 137, 77, 67, 65, 76, 49,
-			34, 37, 89, 65, 35, 89, 0, 0, 0, 0, 8, 66, 61, 80, 40, 0, 72, 28, 13, 66, 69, 16, 113, 117, 101, 108, 113, 117, 101, 0,
-			29, 0, 0, 12, 68, 76, 19, 79, 4, 89, 35, 65, 39, 35, 0, 0, 0, 0, 9, 67, 61, 85, 0, 35, 40, 47, 0, 0, 0, 14,
-			69, 81, 85, 129, 49, 80, 47, 40, 84, 35, 55, 40, 0, 14, 69, 64, 20, 212, 37, 48, 48, 35, 89, 47, 37, 89, 0, 0, 0, 6,
-			195, 64, 64, 64, 17, 0, 0, 0, 0, 21, 67, 52, 16, 192, 65, 35, 49, 39, 112, 89, 37, 49, 89, 0, 82, 111, 115, 32, 120, 32,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 12, 80, 201, 76, 32, 0, 0, 14, 70, 64, 245, 82, 12, 83, 148, 48, 40, 34, 89,
-			113, 0, 5, 194, 56, 144, 72, 0, 0, 9, 68, 20, 208, 67, 76, 21, 0, 10, 0, 0, 9, 3, 195, 168, 19, 112, 89, 0, 72, 0,
-			11, 4, 4, 195, 168, 19, 72, 112, 143, 0, 72, 0, 9, 68, 69, 81, 82, 100, 21, 0, 10, 0, 0, 0, 13, 67, 36, 35, 64, 37,
-			71, 4, 36, 6, 112, 65, 0, 0, 0, 0, 22, 4, 95, 3, 9, 18, 35, 49, 89, 113, 89, 37, 34, 49, 116, 83, 55, 6, 112, 49,
-			89, 0, 0, 8, 67, 77, 83, 128, 21, 0, 10, 0, 8, 67, 20, 32, 89, 21, 0, 10, 0, 14, 69, 8, 148, 211, 5, 80, 71, 37,
-			89, 35, 6, 39, 0, 8, 197, 5, 85, 18, 21, 48, 76, 0, 0, 13, 67, 52, 34, 84, 65, 36, 81, 35, 71, 37, 47, 0, 0, 12,
-			3, 95, 194, 181, 65, 37, 49, 34, 6, 39, 0, 0, 0, 16, 70, 28, 83, 133, 76, 148, 192, 90, 36, 50, 36, 88, 37, 89, 0, 16,
-			70, 76, 243, 1, 72, 148, 192, 89, 39, 55, 35, 34, 37, 89, 0, 0, 9, 67, 52, 20, 192, 65, 35, 89, 0, 6, 195, 77, 84, 128,
-			76, 7, 195, 88, 244, 192, 72, 34, 7, 195, 56, 244, 192, 72, 34, 11, 67, 76, 84, 192, 89, 123, 143, 0, 72, 34, 11, 67, 12, 84,
-			192, 89, 36, 143, 0, 72, 34, 0, 9, 68, 100, 244, 200, 36, 21, 0, 10, 12, 68, 81, 83, 137, 76, 47, 111, 50, 37, 89, 0, 0,
-			0, 27, 70, 9, 84, 139, 36, 224, 64, 71, 40, 34, 49, 37, 50, 35, 15, 83, 35, 89, 39, 0, 81, 102, 97, 115, 111, 32, 14, 70,
-			12, 130, 69, 56, 194, 84, 91, 57, 113, 55, 37, 0, 0, 11, 4, 95, 19, 20, 11, 71, 6, 35, 34, 0, 6, 131, 95, 195, 180, 43,
-			0, 9, 68, 80, 131, 211, 20, 21, 0, 10, 0, 16, 4, 95, 1, 3, 21, 35, 49, 89, 113, 47, 112, 81, 6, 111, 0, 0, 17, 3,
-			95, 194, 171, 40, 84, 34, 36, 15, 81, 37, 57, 65, 6, 112, 0, 0, 6, 195, 28, 229, 64, 17, 0, 0, 10, 69, 76, 50, 69, 57,
-			64, 89, 37, 0, 0, 9, 66, 76, 16, 89, 121, 0, 72, 34, 17, 66, 52, 208, 109, 105, 108, 108, 105, 109, 195, 168, 116, 114, 101, 0,
-			29, 13, 3, 95, 194, 167, 89, 112, 49, 89, 57, 6, 116, 0, 0, 10, 67, 45, 84, 148, 49, 40, 34, 47, 0, 0, 0, 0, 6, 195,
-			76, 20, 0, 17, 0, 15, 4, 95, 18, 14, 7, 34, 116, 140, 113, 91, 6, 112, 83, 0, 0, 0, 0, 16, 70, 9, 84, 149, 56, 66,
-			64, 71, 40, 34, 40, 50, 72, 37, 0, 0, 23, 67, 33, 69, 16, 35, 91, 47, 4, 36, 47, 4, 36, 48, 6, 36, 10, 0, 81, 58,
-			47, 47, 32, 0, 0, 15, 69, 72, 148, 195, 61, 48, 34, 37, 89, 49, 39, 112, 89, 0, 0, 0, 6, 131, 95, 195, 160, 43, 0, 11,
-			70, 72, 80, 207, 72, 65, 82, 21, 0, 10, 0, 14, 69, 84, 37, 78, 81, 80, 40, 71, 40, 50, 47, 40, 0, 0, 10, 66, 52, 224,
-			65, 37, 50, 111, 47, 0, 0, 0, 6, 131, 15, 195, 185, 76, 0, 0, 0, 0, 11, 68, 48, 83, 206, 20, 55, 36, 127, 50, 0, 0,
-			0, 0, 0, 0, 0, 20, 4, 95, 1, 3, 50, 72, 40, 71, 55, 35, 49, 89, 113, 47, 112, 81, 6, 111, 0, 0, 0, 0, 13, 69,
-			60, 97, 147, 21, 64, 127, 83, 89, 112, 47, 0, 0, 9, 66, 60, 176, 39, 49, 36, 0, 76, 9, 67, 61, 84, 147, 40, 34, 89, 0,
-			9, 66, 80, 16, 47, 121, 0, 72, 34, 0, 0, 15, 70, 52, 144, 200, 4, 83, 0, 65, 37, 49, 35, 112, 55, 0, 0, 9, 198, 80,
-			245, 74, 61, 84, 147, 76, 0, 0, 0, 0, 0, 0, 0, 11, 68, 76, 51, 213, 80, 89, 49, 40, 47, 0, 0, 0, 6, 195, 64, 197,
-			83, 76, 18, 3, 95, 194, 187, 83, 112, 34, 65, 36, 15, 81, 37, 57, 65, 6, 112, 0, 0, 9, 67, 73, 85, 0, 34, 111, 47, 0,
-			0, 15, 67, 24, 147, 5, 21, 0, 10, 81, 122, 105, 108, 108, 97, 32, 0, 0, 0, 15, 67, 80, 86, 20, 21, 0, 10, 81, 97, 108,
-			111, 117, 100, 32, 9, 67, 29, 84, 192, 81, 111, 89, 0, 15, 67, 69, 20, 192, 113, 117, 101, 108, 113, 117, 101, 115, 0, 29, 0, 12,
-			68, 56, 145, 197, 72, 50, 37, 90, 112, 34, 0, 0, 15, 69, 4, 208, 90, 60, 224, 35, 65, 35, 88, 6, 127, 50, 0, 0, 0, 9,
-			67, 77, 84, 192, 89, 111, 0, 36, 9, 67, 77, 84, 192, 89, 111, 89, 0, 0, 11, 68, 76, 131, 210, 80, 91, 127, 34, 47, 0, 12,
-			68, 4, 64, 77, 76, 35, 72, 35, 65, 89, 0, 0, 20, 2, 195, 151, 65, 111, 55, 47, 37, 48, 55, 37, 6, 36, 10, 48, 6, 35,
-			34, 0, 0, 17, 66, 77, 64, 89, 114, 49, 55, 40, 0, 81, 99, 108, 111, 117, 100, 32, 9, 66, 77, 64, 89, 6, 114, 140, 0, 0,
-			8, 67, 32, 83, 16, 21, 0, 10, 0, 19, 72, 5, 35, 65, 28, 81, 4, 60, 224, 35, 34, 65, 35, 81, 36, 72, 116, 0, 23, 68,
-			80, 83, 80, 76, 47, 113, 88, 113, 47, 113, 0, 82, 101, 110, 32, 116, 101, 109, 112, 115, 32, 0, 0, 16, 67, 77, 68, 0, 89, 37,
-			55, 47, 13, 12, 48, 55, 6, 112, 0, 0, 0, 22, 2, 194, 166, 89, 36, 48, 35, 34, 35, 47, 117, 34, 15, 84, 112, 47, 37, 49,
-			35, 55, 0, 0, 10, 69, 8, 85, 20, 21, 32, 21, 0, 10, 15, 69, 21, 131, 195, 21, 64, 112, 81, 88, 39, 89, 112, 47, 0, 0,
-			6, 194, 76, 80, 72, 32, 0, 19, 67, 16, 84, 20, 100, 195, 169, 112, 97, 114, 116, 101, 109, 101, 110, 116, 0, 29, 8, 2, 194, 165,
-			57, 112, 50, 0, 0, 15, 68, 13, 144, 133, 72, 21, 0, 10, 81, 108, 105, 110, 107, 32, 13, 5, 16, 18, 195, 168, 19, 48, 34, 112,
-			143, 0, 76, 9, 2, 194, 162, 89, 112, 50, 47, 0, 0, 15, 6, 1, 16, 18, 195, 168, 19, 35, 48, 34, 112, 143, 0, 76, 9, 2,
-			194, 163, 55, 37, 84, 34, 0, 0, 0, 8, 67, 56, 245, 0, 21, 0, 10, 9, 67, 76, 85, 0, 89, 112, 47, 0, 16, 70, 48, 17,
-			84, 37, 66, 65, 55, 36, 47, 37, 89, 57, 35, 0, 0, 16, 2, 194, 174, 65, 35, 34, 49, 72, 36, 48, 39, 88, 6, 36, 0, 0,
-			16, 70, 32, 243, 132, 85, 32, 83, 23, 116, 72, 111, 34, 35, 89, 0, 23, 73, 81, 85, 20, 37, 21, 65, 57, 66, 64, 47, 40, 47,
-			37, 49, 58, 6, 35, 50, 47, 37, 0, 10, 2, 194, 175, 65, 35, 49, 34, 116, 0, 5, 130, 195, 167, 43, 0, 20, 2, 194, 172, 47,
-			37, 34, 112, 10, 83, 35, 49, 111, 55, 47, 35, 47, 37, 83, 0, 5, 130, 195, 164, 43, 0, 17, 67, 77, 81, 0, 89, 111, 72, 112,
-			89, 47, 0, 81, 101, 115, 116, 32, 0, 11, 68, 28, 227, 205, 20, 81, 50, 127, 65, 0, 5, 130, 195, 162, 43, 0, 12, 2, 197, 147,
-			39, 15, 13, 15, 55, 37, 36, 0, 0, 7, 130, 195, 160, 14, 43, 9, 7, 2, 195, 160, 35, 0, 76, 0, 7, 2, 194, 169, 21, 0,
-			10, 0, 11, 70, 12, 243, 80, 85, 65, 82, 21, 0, 10, 24, 11, 1, 21, 10, 15, 21, 18, 4, 39, 8, 21, 9, 97, 117, 106, 111,
-			117, 114, 100, 117, 105, 0, 29, 13, 2, 194, 182, 48, 35, 34, 35, 81, 34, 35, 83, 0, 5, 130, 195, 174, 43, 0, 11, 69, 28, 147,
-			12, 21, 48, 90, 37, 55, 0, 8, 2, 194, 183, 48, 58, 114, 0, 5, 130, 195, 175, 43, 0, 14, 70, 52, 245, 76, 61, 81, 0, 65,
-			40, 55, 40, 72, 0, 7, 195, 76, 242, 83, 76, 36, 9, 66, 60, 224, 116, 134, 0, 76, 32, 0, 6, 195, 4, 32, 192, 17, 0, 16,
-			2, 194, 178, 48, 111, 37, 89, 6, 113, 89, 15, 72, 6, 132, 0, 5, 130, 195, 170, 43, 0, 16, 2, 194, 179, 48, 111, 37, 89, 113,
-			89, 15, 47, 34, 58, 35, 0, 5, 130, 195, 171, 43, 5, 130, 195, 171, 43, 0, 10, 3, 21, 46, 19, 111, 12, 112, 89, 0, 5, 130,
-			195, 168, 43, 0, 7, 195, 60, 229, 0, 76, 36, 6, 195, 76, 242, 84, 76, 15, 2, 194, 177, 48, 55, 6, 111, 88, 40, 65, 58, 6,
-			114, 0, 5, 130, 195, 169, 43, 0, 12, 68, 56, 85, 137, 76, 50, 36, 84, 37, 89, 0, 6, 195, 72, 144, 65, 17, 14, 2, 194, 190,
-			47, 34, 58, 35, 10, 49, 6, 35, 34, 0, 5, 130, 195, 182, 43, 0, 12, 67, 85, 35, 0, 111, 12, 112, 34, 112, 55, 0, 27, 2,
-			194, 191, 48, 58, 114, 15, 72, 114, 47, 36, 34, 39, 81, 35, 89, 57, 116, 15, 114, 84, 112, 34, 89, 36, 0, 17, 2, 195, 183, 72,
-			37, 84, 37, 88, 6, 36, 10, 48, 6, 35, 34, 0, 0, 6, 130, 195, 180, 14, 43, 11, 2, 194, 188, 115, 10, 49, 6, 35, 34, 0,
-			0, 12, 2, 194, 189, 115, 10, 72, 13, 65, 6, 37, 0, 0, 10, 2, 194, 186, 72, 13, 81, 34, 36, 0, 13, 4, 95, 3, 5, 4,
-			89, 36, 72, 6, 37, 57, 0, 0, 8, 197, 25, 84, 133, 57, 64, 76, 0, 15, 70, 13, 35, 193, 80, 145, 64, 49, 34, 39, 35, 89,
-			37, 0, 17, 70, 48, 244, 147, 69, 81, 64, 55, 127, 34, 89, 49, 8, 13, 0, 76, 15, 67, 77, 100, 0, 89, 37, 55, 84, 129, 48,
-			55, 6, 112, 0, 10, 2, 194, 184, 89, 36, 72, 37, 57, 0, 0, 12, 67, 60, 225, 192, 39, 4, 112, 50, 90, 36, 0, 15, 4, 95,
-			12, 9, 7, 55, 37, 81, 35, 47, 6, 111, 34, 0, 5, 130, 195, 177, 43, 0, 0, 19, 70, 12, 19, 22, 4, 67, 211, 99, 97, 108,
-			118, 97, 100, 111, 115, 115, 0, 29, 14, 69, 100, 19, 213, 73, 64, 23, 37, 35, 40, 34, 47, 0, 10, 67, 8, 145, 78, 71, 37, 114,
-			134, 0, 6, 195, 80, 83, 0, 76, 0, 16, 70, 44, 20, 129, 60, 177, 64, 49, 35, 34, 35, 39, 49, 36, 0, 16, 70, 9, 35, 199,
-			48, 145, 64, 98, 114, 101, 117, 105, 108, 0, 29, 6, 194, 80, 80, 72, 32, 5, 130, 195, 188, 43, 0, 17, 70, 48, 148, 212, 8, 246,
-			0, 55, 37, 89, 47, 71, 127, 49, 89, 0, 6, 195, 76, 242, 64, 76, 0, 0, 5, 130, 195, 187, 43, 0, 0, 6, 195, 52, 50, 64,
-			17, 5, 130, 195, 185, 43, 0, 0, 10, 67, 4, 49, 82, 35, 89, 112, 34, 0, 11, 67, 24, 145, 82, 83, 57, 36, 34, 0, 36, 0,
-			6, 194, 81, 80, 76, 32, 0, 6, 195, 72, 21, 16, 17, 12, 67, 60, 115, 64, 39, 90, 4, 36, 112, 65, 0, 0, 11, 68, 12, 243,
-			77, 20, 49, 127, 65, 0, 76, 7, 196, 88, 242, 67, 36, 76, 0, 0, 0, 9, 67, 32, 211, 64, 107, 117, 65, 0, 0, 0, 14, 69,
-			80, 245, 84, 21, 48, 47, 6, 40, 47, 143, 0, 76, 0, 0, 0, 0, 0, 0, 18, 71, 77, 112, 90, 36, 192, 78, 16, 89, 58, 35,
-			88, 37, 55, 113, 72, 0, 18, 71, 29, 35, 197, 56, 192, 78, 16, 81, 34, 39, 112, 50, 55, 113, 72, 0, 0, 11, 68, 12, 240, 213,
-			76, 49, 127, 49, 111, 0, 7, 196, 4, 145, 78, 80, 76, 0, 0, 7, 66, 85, 64, 111, 47, 0, 0, 18, 71, 77, 69, 84, 80, 112,
-			82, 80, 91, 47, 40, 47, 81, 35, 34, 47, 0, 6, 195, 64, 85, 64, 76, 0, 0, 0, 0, 0, 12, 4, 6, 195, 187, 20, 83, 111,
-			140, 0, 76, 36, 0, 12, 67, 72, 145, 78, 34, 37, 6, 114, 134, 0, 76, 0, 0, 8, 67, 8, 22, 64, 21, 0, 10, 0, 0, 12,
-			69, 32, 20, 133, 56, 112, 23, 35, 34, 113, 0, 0, 0, 0, 0, 14, 69, 12, 147, 133, 52, 16, 89, 37, 50, 36, 65, 35, 0, 0,
-			0, 10, 67, 24, 21, 84, 83, 39, 140, 0, 76, 0, 9, 68, 36, 228, 21, 80, 21, 0, 10, 10, 68, 64, 242, 78, 28, 48, 58, 114,
-			0, 7, 2, 95, 6, 112, 83, 0, 0, 8, 195, 48, 85, 82, 72, 36, 40, 7, 195, 48, 85, 82, 72, 34, 0, 0, 6, 2, 95, 5,
-			13, 0, 0, 0, 0, 6, 2, 95, 9, 37, 0, 0, 7, 2, 95, 8, 35, 91, 0, 0, 13, 67, 37, 32, 192, 125, 4, 112, 34, 23,
-			89, 36, 0, 6, 2, 95, 15, 39, 0, 0, 8, 196, 88, 245, 18, 20, 72, 34, 8, 196, 56, 245, 18, 20, 72, 34, 7, 2, 95, 14,
-			112, 50, 0, 0, 7, 2, 95, 13, 112, 65, 0, 0, 7, 2, 95, 12, 112, 55, 0, 0, 6, 195, 88, 21, 88, 76, 7, 195, 85, 48,
-			64, 17, 42, 7, 2, 95, 19, 112, 89, 0, 0, 7, 196, 64, 242, 78, 80, 37, 7, 196, 64, 242, 78, 80, 76, 7, 2, 95, 18, 112,
-			34, 0, 0, 0, 16, 70, 76, 48, 78, 56, 84, 128, 89, 49, 35, 50, 117, 34, 0, 37, 16, 70, 76, 48, 78, 56, 84, 128, 89, 49,
-			35, 50, 36, 120, 0, 36, 0, 0, 19, 72, 8, 19, 135, 48, 17, 5, 76, 128, 71, 113, 81, 55, 35, 72, 112, 91, 0, 0, 18, 9,
-			195, 169, 12, 15, 17, 21, 5, 14, 20, 36, 55, 39, 49, 113, 140, 0, 25, 5, 14, 39, 5, 19, 20, 50, 6, 112, 89, 15, 48, 6,
-			35, 143, 0, 82, 99, 101, 32, 112, 97, 115, 32, 6, 2, 95, 21, 111, 0, 0, 13, 4, 95, 226, 136, 158, 37, 50, 83, 37, 50, 37,
-			0, 0, 7, 195, 76, 243, 148, 76, 36, 0, 0, 22, 69, 4, 68, 204, 81, 96, 35, 72, 36, 112, 89, 6, 112, 55, 15, 47, 36, 84,
-			6, 36, 0, 13, 2, 95, 25, 11, 37, 12, 81, 34, 6, 112, 49, 0, 0, 8, 2, 95, 24, 37, 49, 89, 0, 0, 26, 67, 25, 146,
-			64, 83, 117, 34, 15, 57, 117, 34, 15, 125, 50, 83, 117, 34, 65, 6, 112, 57, 91, 117, 50, 0, 0, 0, 0, 0, 15, 70, 76, 48,
-			78, 56, 84, 147, 89, 49, 35, 50, 117, 34, 0, 7, 195, 49, 82, 64, 76, 32, 9, 2, 95, 35, 72, 57, 112, 88, 0, 0, 6, 195,
-			76, 245, 83, 76, 10, 2, 95, 34, 81, 37, 57, 65, 112, 0, 0, 8, 197, 12, 243, 148, 72, 80, 76, 22, 2, 95, 33, 48, 58, 114,
-			15, 72, 112, 49, 89, 49, 55, 35, 65, 35, 89, 57, 6, 116, 0, 0, 0, 6, 195, 88, 21, 84, 76, 9, 67, 76, 243, 128, 89, 116,
-			0, 37, 7, 195, 76, 243, 128, 76, 34, 14, 2, 95, 39, 35, 48, 39, 89, 47, 34, 6, 127, 83, 0, 0, 18, 2, 95, 38, 10, 36,
-			10, 49, 39, 65, 112, 34, 89, 37, 6, 35, 55, 0, 0, 0, 7, 195, 20, 195, 5, 76, 32, 19, 67, 52, 195, 5, 109, 97, 100, 101,
-			109, 111, 105, 115, 101, 108, 108, 101, 0, 29, 0, 9, 67, 8, 147, 128, 71, 37, 50, 0, 16, 71, 52, 84, 211, 36, 85, 82, 76, 65,
-			36, 89, 57, 132, 143, 0, 0, 16, 4, 95, 3, 1, 16, 65, 35, 90, 111, 89, 49, 6, 111, 55, 0, 0, 9, 197, 76, 243, 77, 21,
-			48, 76, 36, 18, 2, 95, 41, 48, 35, 34, 113, 47, 112, 88, 10, 72, 34, 58, 35, 47, 0, 0, 16, 70, 85, 4, 5, 72, 53, 84,
-			111, 48, 112, 34, 49, 117, 47, 0, 16, 2, 95, 40, 48, 35, 34, 113, 47, 112, 88, 10, 81, 39, 91, 0, 0, 8, 67, 32, 84, 128,
-			21, 0, 10, 13, 2, 95, 47, 71, 35, 34, 39, 71, 55, 37, 49, 0, 0, 15, 70, 72, 84, 211, 20, 229, 0, 34, 13, 89, 6, 113,
-			140, 0, 10, 2, 95, 46, 23, 48, 58, 2, 114, 0, 0, 9, 2, 95, 45, 47, 37, 34, 112, 0, 0, 8, 67, 32, 84, 133, 21, 0,
-			10, 11, 2, 95, 44, 84, 37, 34, 81, 111, 55, 0, 0, 8, 67, 53, 36, 192, 21, 0, 10, 10, 2, 95, 51, 47, 34, 58, 35, 143,
-			0, 0, 19, 68, 76, 18, 78, 80, 89, 114, 49, 55, 40, 0, 81, 99, 108, 111, 117, 100, 32, 8, 2, 95, 50, 72, 132, 143, 0, 0,
-			6, 2, 95, 49, 115, 0, 0, 10, 2, 95, 48, 88, 36, 34, 39, 0, 76, 0, 8, 2, 95, 55, 89, 112, 47, 0, 0, 9, 198, 64,
-			197, 80, 5, 37, 0, 76, 8, 2, 95, 54, 89, 37, 144, 0, 0, 8, 2, 95, 53, 89, 114, 49, 0, 0, 9, 2, 95, 52, 49, 35,
-			47, 34, 0, 0, 16, 2, 95, 59, 48, 58, 114, 15, 84, 37, 34, 81, 6, 111, 55, 0, 0, 13, 2, 95, 58, 72, 6, 132, 15, 48,
-			58, 6, 114, 0, 0, 8, 2, 95, 57, 50, 117, 83, 0, 0, 9, 2, 95, 56, 23, 111, 37, 141, 0, 0, 21, 2, 95, 63, 48, 58,
-			114, 15, 72, 114, 47, 112, 34, 39, 81, 35, 89, 57, 6, 116, 0, 0, 13, 2, 95, 62, 89, 111, 48, 36, 34, 37, 117, 34, 0, 0,
-			9, 2, 95, 61, 36, 81, 35, 55, 0, 0, 12, 2, 95, 60, 114, 83, 36, 34, 37, 117, 34, 0, 0, 8, 67, 72, 150, 128, 34, 37,
-			0, 0, 0, 0, 15, 70, 52, 84, 135, 84, 86, 128, 65, 112, 34, 81, 112, 88, 0, 0, 10, 134, 5, 195, 187, 20, 5, 19, 76, 36,
-			10, 134, 6, 195, 187, 20, 5, 19, 76, 36, 0, 0, 0, 0, 19, 71, 8, 19, 1, 8, 243, 11, 4, 71, 35, 55, 35, 71, 127, 55,
-			49, 35, 0, 0, 0, 18, 8, 2, 195, 169, 12, 1, 18, 21, 19, 71, 36, 55, 35, 34, 111, 89, 0, 8, 197, 9, 35, 20, 81, 144,
-			17, 0, 0, 0, 13, 70, 88, 147, 131, 20, 229, 0, 84, 114, 89, 113, 0, 12, 68, 48, 20, 197, 72, 55, 35, 88, 112, 34, 0, 0,
-			0, 16, 70, 4, 225, 197, 48, 84, 192, 113, 50, 90, 36, 55, 112, 89, 0, 0, 12, 67, 85, 48, 128, 111, 12, 112, 89, 71, 36, 0,
-			0, 9, 68, 64, 18, 78, 80, 21, 0, 10, 15, 70, 12, 243, 147, 20, 229, 0, 49, 116, 89, 6, 113, 140, 0, 0, 29, 67, 12, 129,
-			70, 99, 104, 195, 169, 100, 101, 117, 118, 114, 101, 115, 0, 29, 81, 100, 39, 111, 101, 117, 118, 114, 101, 115, 32, 27, 67, 12, 129, 70,
-			99, 104, 195, 169, 100, 101, 117, 118, 114, 101, 0, 29, 81, 100, 39, 111, 101, 117, 118, 114, 101, 32, 10, 67, 4, 192, 78, 35, 55, 35,
-			50, 0, 0, 15, 70, 8, 18, 1, 52, 20, 192, 71, 35, 35, 65, 35, 89, 0, 9, 198, 69, 81, 76, 48, 84, 192, 76, 0, 18, 9,
-			17, 21, 5, 12, 17, 21, 39, 21, 14, 49, 112, 55, 49, 115, 0, 76, 6, 195, 36, 65, 64, 17, 16, 4, 95, 226, 128, 153, 35, 48,
-			39, 89, 47, 34, 6, 127, 83, 0, 0, 16, 4, 95, 226, 128, 152, 35, 48, 39, 89, 47, 34, 6, 127, 83, 0, 17, 4, 95, 4, 15,
-			20, 48, 58, 114, 89, 111, 89, 49, 34, 6, 37, 0, 0, 13, 69, 9, 81, 134, 21, 32, 71, 132, 83, 117, 34, 0, 0, 9, 67, 4,
-			64, 77, 35, 72, 113, 0, 0, 8, 67, 76, 129, 64, 21, 0, 10, 14, 2, 95, 91, 49, 34, 127, 91, 112, 10, 81, 39, 91, 0, 0,
-			0, 0, 5, 194, 84, 176, 17, 0, 17, 71, 32, 85, 82, 80, 147, 206, 76, 23, 117, 34, 47, 57, 116, 143, 0, 11, 2, 95, 95, 89,
-			40, 55, 37, 67, 36, 0, 0, 15, 70, 48, 22, 129, 72, 85, 0, 55, 35, 88, 35, 34, 112, 0, 9, 68, 40, 19, 69, 76, 21, 0,
-			10, 12, 68, 4, 67, 73, 56, 35, 72, 65, 37, 50, 0, 15, 2, 95, 94, 89, 37, 34, 49, 116, 83, 55, 112, 49, 89, 0, 0, 15,
-			2, 95, 93, 49, 34, 127, 91, 112, 10, 72, 34, 58, 35, 0, 0, 17, 67, 88, 148, 0, 84, 4, 37, 15, 4, 35, 57, 15, 48, 6,
-			37, 0, 12, 2, 95, 92, 71, 35, 49, 89, 55, 35, 91, 0, 0, 0, 12, 68, 60, 20, 201, 76, 39, 35, 88, 37, 89, 0, 0, 0,
-			16, 2, 95, 96, 35, 49, 89, 6, 113, 10, 81, 34, 6, 35, 84, 0, 0, 0, 0, 16, 69, 4, 148, 130, 85, 48, 97, 105, 114, 98,
-			117, 115, 115, 0, 29, 0, 0, 0, 0, 8, 197, 80, 19, 132, 37, 48, 76, 0, 16, 4, 95, 7, 18, 22, 35, 49, 89, 113, 81, 34,
-			6, 35, 84, 0, 0, 8, 67, 20, 66, 84, 21, 0, 10, 20, 67, 88, 148, 192, 84, 37, 88, 35, 84, 37, 0, 82, 195, 160, 32, 118,
-			105, 115, 32, 6, 195, 76, 244, 192, 17, 0, 0, 6, 195, 12, 129, 90, 76, 0, 0, 12, 71, 8, 197, 69, 80, 243, 212, 32, 21, 0,
-			10, 9, 67, 8, 148, 192, 71, 37, 89, 0, 11, 67, 16, 84, 192, 72, 123, 143, 0, 72, 34, 21, 67, 48, 84, 192, 55, 123, 15, 55,
-			132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 115, 32, 20, 67, 48, 84, 192, 55, 123, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117,
-			114, 32, 11, 67, 80, 84, 192, 47, 123, 143, 0, 72, 34, 12, 67, 48, 84, 192, 55, 123, 143, 0, 36, 40, 72, 11, 67, 48, 84, 192,
-			55, 123, 143, 0, 34, 76, 0, 0, 0, 13, 70, 28, 83, 210, 28, 84, 192, 90, 127, 34, 90, 0, 15, 70, 25, 32, 78, 12, 148, 192,
-			83, 34, 113, 89, 37, 89, 0, 0, 19, 71, 25, 32, 78, 12, 84, 195, 60, 83, 34, 113, 50, 91, 112, 89, 49, 39, 0, 0, 10, 68,
-			12, 242, 78, 28, 49, 58, 114, 0, 0, 12, 69, 4, 36, 197, 57, 64, 35, 71, 89, 113, 0, 0, 0, 15, 2, 95, 123, 35, 49, 127,
-			55, 35, 72, 10, 81, 39, 91, 0, 13, 4, 95, 4, 9, 1, 47, 34, 36, 65, 6, 35, 0, 0, 0, 13, 69, 5, 85, 15, 85, 32,
-			39, 47, 40, 34, 0, 76, 0, 20, 70, 5, 81, 9, 8, 193, 64, 21, 0, 10, 81, 109, 97, 110, 97, 103, 101, 114, 32, 8, 66, 80,
-			240, 47, 40, 0, 76, 0, 0, 0, 8, 67, 100, 85, 0, 21, 0, 10, 17, 2, 95, 125, 35, 49, 127, 55, 35, 72, 10, 72, 34, 58,
-			35, 47, 0, 0, 16, 70, 100, 241, 200, 61, 84, 148, 23, 37, 39, 81, 40, 34, 47, 0, 18, 2, 95, 124, 71, 35, 34, 10, 84, 112,
-			34, 47, 37, 49, 6, 35, 55, 0, 0, 17, 70, 4, 197, 5, 72, 81, 207, 35, 55, 47, 112, 34, 36, 81, 39, 0, 0, 9, 68, 5,
-			4, 12, 20, 21, 0, 10, 0, 16, 70, 9, 35, 215, 28, 194, 69, 98, 114, 101, 117, 105, 108, 0, 29, 15, 69, 52, 36, 143, 48, 16,
-			112, 65, 71, 34, 39, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 61, 1, 78, 21, 0, 10, 0, 6, 194, 84, 224, 34,
-			76, 0, 0, 0, 0, 0, 6, 195, 81, 96, 64, 17, 0, 0, 0, 8, 67, 25, 33, 69, 21, 0, 10, 0, 10, 67, 25, 33, 68, 83,
-			34, 112, 72, 0, 0, 0, 12, 69, 9, 81, 7, 21, 64, 71, 111, 75, 112, 0, 0, 12, 4, 95, 35, 51, 50, 112, 89, 48, 35, 89,
-			0, 0, 12, 67, 20, 65, 128, 13, 72, 4, 36, 112, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 70, 4, 52, 143, 8, 21,
-			0, 97, 99, 114, 111, 98, 97, 116, 101, 0, 29, 0, 0, 11, 70, 61, 85, 12, 60, 242, 192, 21, 0, 10, 5, 194, 97, 144, 17, 0,
-			11, 67, 25, 33, 84, 83, 34, 6, 112, 47, 0, 12, 67, 4, 67, 128, 35, 72, 4, 36, 112, 50, 0, 0, 16, 70, 28, 19, 135, 77,
-			65, 82, 81, 113, 81, 89, 47, 112, 34, 0, 0, 9, 67, 105, 85, 0, 88, 111, 47, 0, 0, 16, 70, 21, 66, 5, 72, 225, 84, 36,
-			47, 112, 34, 50, 112, 47, 0, 0, 18, 71, 4, 100, 137, 44, 16, 78, 76, 35, 83, 34, 37, 49, 35, 50, 89, 0, 0, 0, 8, 197,
-			40, 19, 65, 37, 48, 76, 0, 38, 70, 36, 229, 5, 72, 225, 84, 114, 47, 112, 34, 50, 6, 112, 47, 15, 112, 49, 89, 48, 55, 127,
-			34, 6, 117, 34, 0, 81, 101, 120, 112, 108, 111, 114, 101, 114, 32, 17, 70, 36, 229, 5, 72, 225, 84, 114, 47, 112, 34, 50, 6, 112,
-			47, 0, 0, 0, 9, 198, 12, 243, 77, 20, 229, 0, 76, 0, 0, 12, 70, 40, 16, 209, 84, 84, 192, 90, 35, 49, 0, 0, 0, 0,
-			0, 0, 6, 195, 13, 5, 64, 17, 0, 12, 68, 4, 195, 210, 76, 35, 55, 127, 34, 0, 76, 0, 0, 0, 0, 0, 14, 69, 64, 243,
-			4, 21, 32, 48, 127, 55, 72, 112, 34, 0, 0, 0, 14, 67, 28, 134, 128, 90, 37, 81, 35, 112, 34, 47, 89, 0, 0, 0, 9, 67,
-			88, 245, 0, 84, 127, 47, 0, 0, 0, 14, 67, 44, 134, 128, 49, 37, 55, 39, 112, 34, 47, 89, 0, 0, 9, 68, 8, 197, 69, 76,
-			21, 0, 10, 0, 10, 69, 28, 243, 199, 48, 80, 21, 0, 10, 0, 19, 9, 16, 1, 20, 1, 17, 21, 195, 168, 19, 48, 35, 47, 35,
-			49, 112, 89, 0, 0, 0, 0, 0, 9, 134, 22, 15, 9, 12, 195, 160, 76, 0, 11, 67, 9, 37, 84, 71, 34, 6, 111, 47, 0, 0,
-			0, 13, 69, 8, 148, 211, 85, 48, 71, 37, 89, 111, 89, 0, 0, 0, 0, 7, 196, 5, 85, 18, 20, 76, 0, 14, 69, 88, 148, 135,
-			36, 224, 84, 37, 34, 90, 37, 50, 0, 0, 14, 67, 96, 96, 197, 37, 49, 89, 112, 83, 89, 36, 13, 0, 0, 6, 195, 12, 144, 64,
-			17, 0, 0, 16, 70, 77, 84, 208, 20, 228, 197, 89, 111, 89, 48, 112, 50, 89, 0, 0, 16, 70, 72, 21, 9, 60, 228, 192, 34, 35,
-			47, 57, 116, 143, 0, 36, 15, 70, 16, 21, 9, 60, 228, 192, 72, 35, 47, 57, 116, 143, 0, 11, 70, 12, 243, 12, 36, 228, 192, 21,
-			0, 10, 0, 13, 67, 52, 209, 64, 109, 97, 100, 97, 109, 101, 0, 29, 0, 0, 21, 73, 12, 243, 147, 80, 21, 9, 60, 228, 192, 49,
-			116, 89, 47, 35, 47, 57, 116, 143, 0, 10, 69, 12, 83, 148, 21, 32, 21, 0, 10, 8, 197, 17, 84, 129, 57, 64, 76, 0, 23, 6,
-			17, 21, 39, 5, 19, 20, 49, 112, 89, 49, 13, 0, 72, 82, 99, 101, 32, 113, 117, 101, 32, 0, 6, 195, 85, 65, 128, 17, 0, 0,
-			0, 0, 9, 67, 92, 146, 64, 58, 37, 12, 0, 6, 195, 80, 242, 64, 76, 0, 9, 68, 48, 241, 207, 56, 21, 0, 10, 0, 0, 0,
-			10, 199, 80, 245, 84, 20, 99, 201, 76, 76, 0, 0, 0, 0, 12, 71, 52, 84, 211, 20, 225, 197, 72, 21, 0, 10, 0, 0, 6, 195,
-			48, 242, 78, 76, 0, 8, 67, 76, 19, 69, 21, 0, 10, 0, 0, 9, 68, 4, 35, 213, 80, 21, 0, 10, 0, 12, 69, 76, 245, 82,
-			37, 48, 89, 40, 34, 37, 0, 0, 15, 70, 48, 84, 207, 80, 131, 192, 55, 36, 88, 127, 47, 39, 0, 0, 0, 9, 68, 48, 241, 201,
-			56, 21, 0, 10, 0, 0, 16, 70, 88, 245, 9, 60, 228, 192, 84, 127, 39, 47, 57, 116, 143, 0, 0, 7, 195, 36, 196, 192, 76, 32,
-			0, 12, 68, 76, 208, 82, 80, 89, 65, 35, 34, 47, 0, 9, 68, 80, 129, 82, 20, 21, 0, 10, 0, 0, 0, 0, 0, 23, 73, 21,
-			132, 12, 60, 149, 9, 60, 228, 192, 112, 49, 89, 48, 55, 58, 35, 47, 57, 116, 143, 0, 0, 0, 14, 67, 4, 68, 204, 35, 72, 4,
-			36, 112, 89, 112, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 7, 20, 1, 195, 175, 23, 1, 14, 47, 35, 57, 58, 35,
-			50, 0, 8, 197, 64, 51, 67, 36, 16, 17, 0, 0, 0, 0, 6, 20, 83, 1, 0, 0, 111, 0, 101, 0, 0, 0, 0, 0, 6, 18,
-			66, 100, 0, 101, 0, 108, 0, 110, 0, 114, 0, 116, 0, 117, 0, 7, 6, 18, 67, 98, 0, 99, 0, 100, 0, 102, 0, 103, 0, 104,
-			0, 107, 0, 112, 0, 116, 0, 118, 0, 7, 6, 18, 68, 100, 0, 108, 0, 109, 0, 110, 0, 115, 0, 116, 0, 118, 0, 7, 6, 18,
-			69, 99, 0, 100, 0, 102, 0, 103, 0, 108, 0, 109, 0, 110, 0, 118, 0, 7, 6, 18, 70, 103, 0, 104, 0, 107, 0, 108, 0, 109,
-			0, 118, 0, 119, 0, 7, 6, 18, 71, 98, 108, 0, 98, 114, 0, 99, 108, 0, 99, 114, 0, 99, 116, 0, 100, 114, 0, 102, 108, 0,
-			102, 114, 0, 102, 116, 0, 103, 108, 0, 103, 114, 0, 107, 108, 0, 107, 114, 0, 112, 108, 0, 112, 114, 0, 116, 114, 0, 118, 114, 0,
-			7, 6, 18, 72, 195, 169, 99, 0, 195, 169, 100, 0, 101, 99, 0, 101, 100, 0, 108, 98, 0, 108, 99, 0, 108, 100, 0, 108, 103, 0,
-			108, 109, 0, 108, 110, 0, 108, 112, 0, 108, 116, 0, 108, 118, 0, 114, 98, 0, 114, 99, 0, 114, 100, 0, 114, 102, 0, 114, 103, 0,
-			114, 108, 0, 114, 109, 0, 114, 110, 0, 114, 112, 0, 114, 115, 0, 114, 116, 0, 114, 118, 0, 7, 6, 18, 73, 99, 104, 0, 113, 117,
-			0, 103, 117, 0, 98, 0, 99, 0, 100, 0, 102, 0, 103, 0, 104, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 112, 0, 113, 0,
-			114, 0, 115, 0, 116, 0, 118, 0, 119, 0, 120, 0, 122, 0, 7, 6, 18, 74, 108, 0, 114, 0, 115, 0, 7, 6, 18, 75, 105, 97,
-			0, 105, 101, 0, 105, 111, 0, 117, 97, 0, 117, 101, 0, 117, 105, 0, 117, 111, 0, 7, 6, 18, 76, 98, 0, 112, 0, 7, 6, 18,
-			77, 97, 195, 175, 0, 114, 195, 169, 0, 195, 169, 0, 195, 168, 0, 97, 108, 0, 105, 98, 0, 105, 101, 0, 105, 113, 0, 111, 109, 0,
-			111, 110, 0, 121, 109, 0, 108, 0, 7, 6, 18, 78, 101, 114, 0, 104, 110, 0, 100, 0, 103, 0, 107, 0, 108, 0, 112, 0, 7, 6,
-			18, 79, 98, 101, 0, 105, 110, 0, 117, 112, 0, 117, 116, 0, 7, 6, 18, 80, 99, 0, 102, 0, 103, 0, 104, 0, 7, 6, 18, 81,
-			48, 48, 0, 48, 49, 0, 48, 50, 0, 48, 51, 0, 48, 52, 0, 48, 53, 0, 48, 54, 0, 48, 55, 0, 48, 56, 0, 48, 57, 0,
-			49, 48, 0, 49, 49, 0, 49, 50, 0, 49, 51, 0, 49, 52, 0, 49, 53, 0, 49, 54, 0, 49, 55, 0, 49, 56, 0, 49, 57, 0,
-			50, 48, 0, 50, 49, 0, 50, 50, 0, 50, 51, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0,
-			57, 0, 7, 6, 18, 82, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 7, 6, 195, 167, 0, 4, 3, 89, 0, 39, 8, 2,
-			14, 128, 140, 130, 0, 7, 6, 195, 168, 0, 109, 101, 1, 16, 3, 37, 112, 65, 0, 4, 3, 112, 0, 115, 2, 32, 0, 4, 115, 1,
-			109, 2, 32, 3, 112, 89, 0, 115, 1, 110, 2, 32, 0, 115, 1, 112, 2, 32, 0, 115, 1, 114, 17, 65, 2, 32, 0, 7, 6, 195,
-			171, 0, 1, 117, 3, 0, 1, 111, 110, 2, 32, 3, 36, 0, 3, 112, 0, 7, 6, 195, 175, 0, 3, 37, 0, 115, 1, 97, 17, 67,
-			2, 32, 3, 37, 89, 0, 4, 1, 17, 65, 2, 32, 3, 57, 0, 1, 17, 65, 2, 108, 17, 65, 0, 101, 1, 17, 65, 2, 32, 0,
-			110, 2, 25, 3, 114, 0, 7, 6, 195, 180, 0, 4, 3, 39, 0, 116, 2, 32, 0, 7, 6, 195, 188, 0, 109, 2, 32, 3, 39, 65,
-			0, 3, 111, 0, 108, 2, 32, 3, 111, 55, 55, 0, 115, 2, 32, 3, 111, 89, 0, 7, 6, 97, 0, 2, 195, 180, 3, 0, 105, 1,
-			102, 2, 115, 17, 65, 3, 13, 0, 4, 110, 121, 3, 21, 0, 119, 2, 25, 0, 4, 3, 35, 0, 2, 105, 108, 25, 0, 2, 110, 110,
-			17, 65, 0, 109, 2, 109, 0, 109, 2, 110, 0, 110, 2, 110, 32, 0, 4, 114, 99, 104, 8, 2, 97, 14, 128, 132, 132, 3, 35, 34,
-			49, 0, 114, 99, 104, 8, 2, 111, 14, 128, 132, 132, 0, 114, 99, 104, 195, 169, 8, 2, 21, 14, 128, 132, 133, 3, 35, 34, 49, 36,
-			0, 114, 99, 104, 195, 169, 111, 8, 2, 21, 14, 128, 132, 134, 3, 35, 34, 49, 36, 39, 0, 111, 195, 187, 116, 2, 105, 3, 35, 40,
-			89, 0, 4, 110, 1, 109, 18, 67, 2, 32, 3, 35, 50, 0, 110, 1, 109, 21, 21, 2, 32, 0, 110, 1, 109, 122, 2, 32, 0, 110,
-			1, 119, 2, 32, 0, 110, 2, 104, 0, 110, 8, 18, 69, 2, 32, 0, 110, 8, 104, 2, 32, 0, 110, 97, 114, 99, 104, 111, 8, 2,
-			21, 14, 128, 132, 135, 3, 35, 50, 35, 34, 49, 39, 0, 4, 121, 2, 97, 107, 3, 35, 57, 0, 121, 101, 1, 98, 98, 2, 32, 0,
-			4, 109, 1, 104, 2, 32, 14, 128, 128, 130, 3, 35, 65, 0, 109, 8, 2, 110, 0, 101, 3, 35, 112, 0, 4, 101, 2, 32, 3, 36,
-			0, 105, 2, 32, 0, 121, 101, 1, 98, 98, 2, 29, 3, 36, 37, 0, 4, 117, 3, 39, 0, 117, 100, 2, 32, 0, 117, 116, 111, 8,
-			2, 21, 14, 128, 132, 132, 3, 39, 47, 39, 0, 117, 116, 111, 109, 8, 2, 110, 3, 39, 47, 127, 0, 117, 100, 8, 17, 67, 2, 32,
-			3, 39, 72, 0, 117, 100, 105, 111, 8, 2, 21, 14, 128, 132, 133, 3, 39, 72, 37, 39, 0, 117, 116, 2, 32, 3, 39, 140, 0, 4,
-			111, 117, 1, 115, 2, 108, 101, 3, 40, 0, 111, 117, 108, 1, 115, 2, 32, 0, 111, 195, 187, 116, 3, 40, 47, 0, 4, 105, 3, 112,
-			0, 105, 8, 108, 97, 98, 2, 32, 0, 105, 8, 114, 118, 2, 32, 0, 105, 8, 115, 115, 101, 2, 32, 0, 105, 101, 0, 121, 2, 17,
-			67, 0, 121, 2, 32, 0, 121, 3, 112, 57, 0, 121, 101, 114, 1, 108, 29, 2, 29, 3, 112, 57, 117, 34, 0, 4, 105, 101, 110, 116,
-			3, 112, 140, 0, 105, 116, 2, 32, 0, 105, 115, 2, 32, 3, 112, 143, 0, 4, 101, 110, 3, 113, 0, 109, 2, 18, 76, 0, 110, 1,
-			109, 108, 117, 2, 32, 0, 110, 1, 109, 115, 105, 108, 2, 32, 0, 110, 2, 25, 0, 110, 8, 109, 175, 195, 97, 99, 2, 32, 0, 111,
-			110, 8, 17, 67, 2, 32, 0, 4, 110, 116, 105, 8, 2, 17, 67, 17, 65, 29, 14, 128, 132, 132, 3, 113, 47, 37, 0, 110, 116, 105,
-			8, 2, 21, 21, 14, 128, 132, 132, 0, 4, 105, 109, 2, 25, 3, 114, 0, 105, 110, 2, 25, 0, 4, 105, 110, 1, 104, 99, 2, 32,
-			3, 114, 134, 0, 105, 110, 1, 116, 17, 67, 2, 32, 0, 4, 117, 2, 108, 32, 3, 127, 0, 117, 2, 114, 101, 32, 0, 7, 6, 98,
-			0, 1, 109, 111, 2, 32, 3, 0, 4, 97, 99, 107, 3, 21, 0, 101, 8, 2, 18, 80, 17, 65, 0, 111, 97, 114, 100, 0, 111, 120,
-			2, 32, 0, 117, 103, 103, 0, 4, 3, 71, 0, 98, 0, 7, 6, 99, 0, 4, 1, 97, 98, 97, 116, 2, 32, 3, 0, 4, 1, 97,
-			109, 111, 116, 2, 32, 3, 0, 4, 1, 110, 97, 17, 67, 2, 32, 3, 0, 4, 1, 110, 111, 17, 67, 2, 32, 3, 0, 4, 1, 114,
-			97, 2, 116, 105, 3, 0, 4, 1, 114, 101, 108, 99, 2, 32, 3, 0, 4, 1, 115, 2, 17, 71, 3, 0, 4, 1, 117, 111, 104, 99,
-			116, 2, 32, 3, 0, 1, 120, 2, 17, 71, 3, 0, 4, 104, 1, 110, 2, 32, 3, 21, 0, 104, 2, 109, 101, 110, 116, 0, 117, 116,
-			2, 32, 0, 4, 3, 49, 0, 8, 110, 111, 100, 2, 32, 0, 99, 0, 99, 104, 0, 104, 1, 97, 2, 32, 0, 104, 1, 101, 2, 32,
-			0, 104, 1, 105, 110, 2, 32, 0, 104, 1, 105, 110, 97, 109, 2, 195, 169, 0, 104, 1, 111, 116, 105, 109, 2, 111, 0, 104, 1, 114,
-			111, 2, 101, 115, 17, 67, 0, 104, 1, 114, 111, 2, 105, 17, 67, 0, 104, 2, 108, 0, 104, 2, 110, 0, 104, 2, 114, 0, 104, 2,
-			115, 0, 104, 2, 116, 111, 0, 104, 8, 2, 97, 111, 0, 104, 8, 2, 97, 114, 105, 115, 109, 0, 104, 8, 2, 105, 114, 111, 112, 0,
-			104, 8, 2, 111, 114, 17, 65, 0, 104, 8, 17, 65, 2, 111, 32, 0, 104, 8, 117, 101, 2, 97, 114, 105, 0, 107, 0, 113, 0, 113,
-			117, 0, 104, 114, 111, 110, 111, 8, 2, 21, 14, 128, 132, 134, 3, 49, 34, 39, 50, 39, 0, 4, 97, 115, 116, 2, 32, 14, 128, 128,
-			132, 3, 49, 35, 89, 47, 0, 97, 115, 116, 115, 2, 32, 14, 128, 128, 133, 0, 108, 111, 119, 110, 8, 3, 49, 55, 40, 50, 0, 99,
-			2, 17, 71, 3, 49, 89, 0, 104, 1, 105, 119, 3, 76, 0, 4, 1, 101, 115, 2, 111, 110, 100, 3, 81, 0, 1, 110, 105, 122, 2,
-			32, 0, 4, 2, 17, 71, 3, 89, 0, 39, 8, 2, 14, 128, 140, 130, 0, 4, 8, 2, 100, 3, 89, 36, 0, 111, 101, 8, 2, 108,
-			97, 0, 121, 98, 101, 114, 8, 2, 14, 128, 132, 133, 3, 89, 37, 71, 112, 34, 0, 105, 101, 110, 116, 2, 32, 3, 89, 37, 140, 0,
-			4, 105, 101, 110, 116, 1, 105, 102, 102, 101, 3, 89, 57, 113, 0, 105, 101, 110, 116, 1, 105, 102, 169, 195, 100, 0, 4, 104, 3, 91,
-			0, 104, 8, 2, 111, 114, 105, 122, 0, 104, 8, 2, 111, 114, 111, 0, 7, 6, 100, 0, 4, 1, 105, 111, 2, 32, 3, 0, 4, 1,
-			110, 97, 2, 32, 3, 0, 4, 1, 110, 111, 17, 67, 2, 32, 3, 0, 4, 1, 114, 2, 32, 3, 0, 4, 1, 117, 111, 2, 32, 3,
-			0, 8, 105, 110, 2, 32, 3, 0, 4, 97, 121, 2, 32, 3, 21, 0, 101, 118, 105, 99, 8, 0, 108, 101, 2, 29, 0, 116, 2, 32,
-			3, 47, 0, 4, 3, 72, 0, 1, 114, 111, 108, 2, 32, 0, 8, 110, 97, 98, 2, 32, 0, 8, 110, 97, 108, 2, 32, 0, 8, 110,
-			97, 115, 2, 32, 0, 8, 110, 97, 116, 115, 2, 32, 0, 8, 114, 97, 104, 2, 32, 0, 39, 8, 2, 14, 128, 132, 130, 0, 100, 0,
-			4, 105, 101, 110, 1, 169, 195, 112, 120, 101, 32, 26, 2, 116, 32, 3, 72, 37, 0, 105, 101, 110, 2, 116, 32, 0, 4, 105, 101, 110,
-			8, 169, 195, 112, 120, 101, 2, 116, 32, 3, 72, 57, 113, 0, 105, 101, 110, 8, 169, 195, 114, 103, 110, 105, 2, 116, 32, 0, 101, 110,
-			100, 114, 111, 8, 2, 21, 14, 128, 132, 134, 3, 72, 114, 72, 34, 39, 0, 4, 1, 110, 101, 17, 67, 2, 32, 3, 140, 0, 1, 110,
-			101, 117, 113, 2, 32, 0, 1, 110, 111, 99, 2, 32, 0, 8, 110, 97, 114, 103, 2, 32, 0, 7, 6, 101, 0, 4, 1, 17, 65, 2,
-			114, 17, 65, 3, 0, 4, 1, 17, 67, 2, 45, 3, 0, 4, 1, 18, 73, 21, 2, 17, 67, 17, 65, 3, 0, 4, 1, 18, 73, 21,
-			2, 18, 71, 3, 0, 4, 1, 99, 45, 2, 32, 3, 0, 4, 1, 103, 2, 17, 65, 3, 0, 4, 1, 105, 2, 109, 17, 65, 3, 0,
-			4, 1, 106, 45, 2, 32, 3, 0, 4, 2, 32, 3, 0, 4, 2, 111, 105, 3, 0, 4, 110, 1, 108, 111, 26, 2, 116, 32, 3, 0,
-			4, 110, 1, 118, 117, 111, 99, 32, 26, 2, 116, 32, 3, 0, 110, 1, 118, 117, 111, 99, 32, 115, 2, 116, 32, 3, 0, 195, 175, 2,
-			25, 3, 6, 112, 57, 0, 4, 3, 13, 0, 1, 17, 67, 21, 2, 17, 67, 101, 17, 67, 17, 65, 0, 1, 18, 71, 21, 2, 17, 67,
-			17, 65, 0, 1, 18, 71, 21, 2, 18, 71, 0, 1, 18, 72, 21, 2, 17, 67, 17, 65, 0, 1, 18, 72, 21, 2, 18, 71, 0, 1,
-			18, 73, 21, 2, 17, 67, 18, 75, 17, 67, 0, 1, 18, 73, 21, 2, 18, 71, 18, 75, 17, 67, 0, 1, 100, 2, 115, 115, 117, 115,
-			32, 0, 1, 114, 116, 2, 17, 67, 17, 65, 0, 1, 114, 116, 2, 17, 67, 104, 17, 65, 0, 1, 117, 103, 18, 74, 21, 2, 17, 67,
-			17, 65, 0, 1, 117, 103, 18, 74, 21, 2, 18, 71, 0, 1, 117, 113, 18, 74, 21, 2, 17, 67, 17, 65, 0, 1, 117, 113, 18, 74,
-			21, 2, 18, 71, 0, 2, 17, 67, 108, 0, 2, 17, 67, 114, 0, 8, 100, 2, 99, 104, 0, 8, 108, 2, 17, 67, 17, 65, 0, 8,
-			108, 2, 17, 67, 104, 17, 65, 0, 8, 108, 2, 17, 67, 108, 17, 65, 0, 8, 114, 2, 99, 104, 0, 8, 114, 2, 115, 115, 0, 8,
-			114, 2, 115, 116, 114, 97, 0, 8, 114, 2, 115, 116, 114, 111, 0, 8, 114, 2, 115, 116, 114, 117, 0, 8, 17, 67, 2, 32, 3, 14,
-			0, 4, 8, 2, 17, 67, 101, 29, 3, 21, 0, 97, 0, 100, 2, 32, 0, 101, 0, 102, 111, 114, 101, 2, 32, 0, 105, 110, 103, 2,
-			32, 0, 105, 118, 101, 0, 108, 2, 17, 67, 29, 0, 110, 104, 97, 110, 8, 0, 110, 116, 101, 114, 8, 2, 32, 0, 115, 115, 2, 32,
-			0, 115, 116, 1, 117, 113, 2, 32, 0, 115, 116, 101, 1, 117, 113, 2, 29, 32, 0, 118, 101, 110, 2, 32, 0, 118, 101, 114, 1, 17,
-			67, 111, 0, 118, 101, 114, 8, 0, 119, 2, 12, 12, 0, 121, 101, 8, 0, 4, 109, 1, 21, 2, 109, 101, 3, 35, 0, 109, 1, 108,
-			2, 110, 0, 109, 8, 102, 2, 109, 101, 0, 4, 2, 114, 105, 32, 12, 12, 3, 36, 0, 2, 114, 105, 97, 32, 12, 12, 0, 2, 114,
-			111, 32, 12, 12, 0, 8, 2, 17, 67, 11, 0, 8, 2, 17, 67, 17, 65, 0, 8, 2, 17, 67, 17, 65, 24, 0, 8, 2, 18, 71,
-			17, 65, 0, 8, 109, 2, 103, 97, 0, 8, 114, 2, 115, 115, 117, 0, 8, 116, 114, 97, 2, 12, 12, 0, 100, 1, 105, 112, 2, 32,
-			0, 102, 8, 108, 99, 2, 32, 0, 114, 2, 32, 0, 114, 2, 115, 32, 0, 115, 1, 109, 17, 65, 2, 100, 17, 65, 0, 115, 1, 109,
-			17, 65, 2, 110, 17, 65, 0, 115, 8, 100, 2, 98, 17, 65, 0, 115, 8, 100, 2, 106, 17, 65, 0, 115, 8, 100, 2, 110, 17, 65,
-			0, 115, 8, 100, 2, 113, 17, 65, 0, 115, 8, 108, 2, 113, 17, 65, 0, 115, 8, 109, 2, 100, 17, 65, 0, 115, 8, 109, 2, 110,
-			17, 65, 0, 115, 104, 1, 100, 2, 17, 65, 3, 36, 88, 0, 114, 1, 119, 101, 105, 2, 29, 3, 36, 120, 0, 122, 2, 32, 3, 36,
-			143, 0, 97, 117, 2, 12, 12, 3, 39, 0, 4, 117, 1, 103, 2, 114, 101, 3, 111, 0, 117, 8, 2, 115, 115, 0, 195, 187, 8, 0,
-			117, 116, 8, 2, 32, 3, 111, 140, 0, 4, 1, 104, 103, 2, 116, 17, 65, 29, 3, 112, 0, 1, 105, 2, 114, 116, 32, 0, 1, 112,
-			97, 99, 2, 108, 97, 32, 0, 2, 17, 67, 17, 67, 0, 2, 17, 67, 32, 0, 2, 99, 116, 12, 12, 12, 12, 12, 0, 2, 105, 108,
-			0, 2, 114, 17, 67, 0, 2, 114, 114, 12, 12, 12, 0, 2, 120, 12, 12, 12, 12, 12, 0, 8, 17, 67, 101, 2, 17, 67, 17, 65,
-			12, 12, 0, 98, 1, 102, 2, 118, 17, 65, 0, 99, 116, 1, 112, 2, 32, 0, 105, 0, 108, 2, 108, 0, 109, 2, 109, 97, 0, 110,
-			1, 105, 17, 67, 2, 110, 17, 65, 0, 110, 2, 110, 17, 65, 0, 116, 1, 107, 99, 105, 116, 2, 32, 0, 121, 2, 17, 67, 0, 121,
-			2, 32, 0, 4, 114, 1, 107, 99, 111, 2, 25, 3, 112, 34, 0, 114, 1, 110, 105, 97, 116, 2, 29, 0, 114, 1, 116, 115, 17, 67,
-			2, 29, 0, 114, 8, 17, 67, 2, 32, 0, 114, 8, 104, 17, 67, 2, 32, 0, 114, 8, 105, 102, 2, 32, 0, 114, 8, 105, 104, 2,
-			32, 0, 114, 8, 105, 116, 2, 32, 0, 114, 8, 116, 114, 97, 99, 2, 29, 0, 114, 8, 118, 105, 104, 2, 29, 0, 114, 8, 118, 110,
-			101, 2, 32, 0, 4, 116, 1, 103, 100, 2, 32, 3, 112, 47, 0, 116, 1, 107, 2, 32, 0, 99, 116, 2, 32, 3, 112, 49, 47, 0,
-			4, 120, 116, 114, 97, 8, 2, 17, 67, 14, 128, 132, 133, 3, 112, 49, 89, 47, 34, 35, 0, 120, 116, 114, 97, 8, 2, 117, 14, 128,
-			132, 133, 0, 4, 105, 110, 8, 2, 25, 3, 112, 50, 0, 110, 1, 17, 67, 2, 32, 0, 110, 1, 17, 67, 2, 116, 111, 32, 0, 110,
-			8, 121, 2, 32, 0, 110, 115, 1, 112, 115, 2, 32, 3, 112, 50, 89, 0, 108, 2, 115, 29, 3, 112, 55, 0, 121, 3, 112, 57, 0,
-			109, 110, 1, 108, 105, 3, 112, 65, 0, 115, 116, 1, 45, 2, 32, 3, 112, 89, 47, 0, 116, 1, 109, 2, 32, 3, 112, 140, 0, 4,
-			109, 2, 18, 76, 3, 113, 0, 109, 2, 109, 17, 65, 17, 67, 17, 65, 17, 67, 0, 109, 2, 109, 17, 65, 17, 67, 17, 67, 0, 109,
-			2, 109, 97, 105, 0, 110, 1, 17, 67, 2, 100, 32, 0, 110, 1, 17, 67, 111, 17, 67, 109, 105, 2, 116, 32, 0, 110, 1, 17, 67,
-			111, 17, 67, 110, 105, 2, 116, 32, 0, 110, 1, 17, 67, 169, 195, 2, 116, 32, 0, 110, 1, 17, 67, 169, 195, 2, 116, 32, 0, 110,
-			1, 99, 97, 106, 2, 116, 32, 0, 110, 1, 99, 99, 2, 116, 32, 0, 110, 1, 99, 105, 116, 169, 195, 2, 116, 32, 0, 110, 1, 99,
-			115, 17, 65, 2, 116, 32, 0, 110, 1, 100, 105, 17, 67, 169, 195, 2, 116, 32, 0, 110, 1, 100, 105, 99, 17, 67, 17, 65, 29, 2,
-			116, 32, 0, 110, 1, 100, 105, 114, 116, 29, 2, 116, 32, 0, 110, 1, 100, 117, 17, 67, 2, 116, 32, 0, 110, 1, 103, 110, 105, 21,
-			21, 2, 116, 32, 0, 110, 1, 103, 114, 101, 118, 2, 116, 32, 0, 110, 1, 105, 17, 67, 2, 99, 0, 110, 1, 105, 116, 97, 112, 0,
-			110, 1, 108, 97, 118, 105, 2, 116, 32, 0, 110, 1, 108, 108, 101, 99, 120, 2, 116, 32, 0, 110, 1, 108, 111, 2, 116, 32, 0, 110,
-			1, 108, 117, 2, 116, 32, 0, 110, 1, 109, 97, 17, 67, 105, 2, 116, 32, 0, 110, 1, 109, 97, 109, 114, 2, 116, 32, 0, 110, 1,
-			109, 101, 2, 116, 32, 0, 110, 1, 109, 103, 2, 116, 32, 0, 110, 1, 109, 105, 17, 67, 17, 67, 17, 65, 17, 67, 2, 116, 32, 0,
-			110, 1, 109, 105, 97, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 97, 17, 67, 2, 116, 32, 0, 110, 1, 109, 105, 100, 2, 116, 32,
-			0, 110, 1, 109, 105, 103, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 108, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 108, 112, 2,
-			116, 32, 0, 110, 1, 109, 105, 110, 97, 109, 2, 116, 32, 0, 110, 1, 109, 105, 110, 105, 2, 116, 32, 0, 110, 1, 109, 105, 110, 111,
-			2, 116, 32, 0, 110, 1, 109, 105, 115, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 116, 17, 65, 2, 116, 32, 0, 110, 1, 109, 109,
-			2, 116, 32, 0, 110, 1, 109, 111, 109, 2, 116, 32, 0, 110, 1, 109, 114, 101, 2, 116, 32, 0, 110, 1, 109, 114, 117, 111, 116, 2,
-			116, 32, 0, 110, 1, 109, 117, 17, 67, 111, 2, 116, 32, 0, 110, 1, 109, 117, 100, 2, 116, 32, 0, 110, 1, 109, 117, 103, 2, 116,
-			32, 0, 110, 1, 109, 117, 106, 2, 116, 32, 0, 110, 1, 109, 117, 114, 2, 116, 32, 0, 110, 1, 110, 97, 109, 2, 116, 32, 0, 110,
-			1, 110, 105, 109, 109, 105, 2, 116, 32, 0, 110, 1, 110, 105, 109, 169, 195, 111, 2, 116, 32, 0, 110, 1, 110, 105, 116, 110, 111, 2,
-			116, 32, 0, 110, 1, 110, 105, 116, 114, 101, 2, 116, 32, 0, 110, 1, 112, 114, 17, 65, 29, 2, 116, 32, 0, 110, 1, 114, 97, 112,
-			115, 2, 116, 32, 0, 110, 1, 114, 114, 17, 65, 17, 67, 2, 116, 32, 0, 110, 1, 116, 105, 110, 169, 195, 2, 116, 32, 0, 110, 1,
-			116, 116, 105, 109, 2, 116, 32, 0, 110, 1, 117, 108, 102, 17, 67, 2, 116, 32, 0, 110, 1, 117, 113, 2, 100, 32, 0, 110, 1, 117,
-			113, 169, 195, 2, 116, 32, 0, 110, 2, 17, 67, 17, 65, 0, 110, 2, 17, 67, 17, 67, 0, 110, 2, 110, 117, 0, 110, 2, 115, 32,
-			0, 110, 8, 17, 67, 2, 116, 32, 0, 110, 8, 100, 114, 97, 2, 116, 32, 0, 110, 8, 103, 97, 2, 116, 32, 0, 110, 8, 103, 114,
-			97, 2, 116, 32, 0, 110, 8, 103, 114, 101, 115, 2, 116, 32, 0, 110, 8, 103, 114, 117, 2, 116, 32, 0, 110, 8, 108, 97, 116, 2,
-			116, 32, 0, 110, 8, 108, 111, 100, 2, 116, 32, 0, 110, 8, 109, 105, 99, 2, 116, 32, 0, 110, 8, 109, 105, 112, 2, 116, 32, 0,
-			110, 8, 109, 114, 17, 65, 115, 2, 116, 32, 0, 110, 8, 110, 105, 109, 169, 195, 2, 116, 32, 0, 110, 8, 114, 97, 112, 2, 116, 32,
-			0, 110, 8, 114, 97, 112, 112, 97, 2, 116, 32, 0, 110, 8, 114, 97, 118, 2, 116, 32, 0, 110, 8, 114, 111, 108, 102, 2, 116, 32,
-			0, 110, 8, 114, 117, 97, 108, 2, 116, 32, 0, 110, 8, 116, 97, 108, 2, 116, 32, 0, 110, 8, 116, 97, 112, 2, 116, 32, 0, 110,
-			8, 116, 110, 111, 99, 2, 116, 32, 0, 110, 8, 116, 110, 111, 99, 169, 195, 109, 2, 116, 32, 0, 110, 8, 118, 117, 111, 99, 2, 116,
-			14, 128, 160, 131, 0, 110, 8, 118, 117, 111, 115, 2, 116, 32, 0, 110, 115, 1, 99, 110, 2, 32, 0, 4, 110, 2, 104, 17, 65, 3,
-			113, 50, 0, 110, 8, 2, 17, 65, 0, 110, 2, 32, 3, 113, 134, 0, 4, 110, 116, 1, 103, 105, 100, 110, 2, 32, 3, 113, 140, 0,
-			110, 116, 1, 103, 105, 108, 105, 2, 32, 0, 110, 116, 1, 103, 105, 108, 108, 2, 32, 0, 110, 116, 1, 103, 110, 97, 116, 2, 32, 0,
-			110, 115, 1, 17, 67, 169, 195, 2, 32, 3, 113, 143, 0, 4, 105, 110, 2, 25, 3, 114, 0, 110, 1, 17, 65, 17, 65, 2, 32, 0,
-			110, 1, 100, 111, 2, 100, 114, 0, 110, 1, 105, 17, 67, 2, 25, 0, 110, 1, 109, 97, 120, 2, 32, 0, 110, 1, 112, 112, 97, 2,
-			100, 105, 0, 110, 1, 169, 195, 2, 32, 0, 110, 8, 17, 67, 2, 106, 0, 110, 8, 109, 97, 108, 102, 2, 99, 0, 105, 110, 1, 108,
-			112, 2, 32, 3, 114, 134, 0, 4, 1, 104, 99, 116, 2, 114, 29, 3, 117, 0, 1, 116, 114, 101, 118, 2, 114, 29, 0, 117, 1, 103,
-			0, 117, 2, 17, 67, 29, 0, 117, 2, 17, 67, 101, 29, 0, 117, 2, 105, 0, 117, 2, 108, 101, 29, 0, 117, 2, 114, 17, 67, 0,
-			117, 2, 114, 101, 29, 0, 117, 2, 114, 114, 101, 29, 0, 4, 114, 1, 107, 99, 97, 2, 25, 3, 117, 34, 0, 114, 1, 107, 99, 111,
-			114, 2, 25, 0, 114, 8, 116, 116, 117, 99, 2, 29, 0, 97, 109, 1, 114, 17, 67, 3, 125, 12, 65, 0, 97, 110, 101, 114, 1, 108,
-			17, 67, 3, 125, 50, 117, 34, 0, 97, 109, 101, 114, 1, 114, 17, 67, 3, 125, 65, 117, 34, 0, 4, 117, 3, 132, 0, 117, 2, 17,
-			67, 101, 29, 0, 117, 2, 17, 67, 101, 114, 32, 0, 117, 2, 108, 101, 114, 0, 195, 187, 3, 132, 12, 0, 117, 116, 2, 32, 3, 132,
-			140, 0, 117, 120, 2, 32, 3, 132, 143, 0, 4, 110, 116, 1, 17, 65, 2, 32, 3, 140, 0, 110, 116, 1, 100, 105, 17, 67, 169, 195,
-			26, 2, 32, 0, 110, 116, 1, 103, 105, 2, 32, 0, 110, 116, 1, 103, 114, 101, 118, 26, 2, 32, 0, 110, 116, 1, 103, 114, 117, 32,
-			26, 2, 32, 0, 110, 116, 1, 108, 97, 118, 105, 26, 2, 32, 0, 110, 116, 1, 108, 108, 101, 99, 120, 26, 2, 32, 0, 110, 116, 1,
-			108, 111, 29, 2, 32, 0, 110, 116, 1, 108, 117, 26, 2, 32, 0, 110, 116, 1, 108, 117, 99, 17, 67, 2, 32, 0, 110, 116, 1, 108,
-			117, 101, 2, 32, 0, 110, 116, 1, 109, 114, 101, 102, 26, 2, 32, 0, 110, 116, 1, 114, 97, 112, 32, 26, 2, 32, 0, 110, 116, 1,
-			114, 114, 101, 17, 67, 2, 32, 0, 110, 116, 1, 117, 108, 102, 17, 67, 26, 2, 32, 0, 110, 116, 2, 32, 0, 110, 116, 8, 116, 110,
-			111, 99, 26, 2, 32, 0, 115, 2, 32, 3, 143, 0, 7, 6, 102, 0, 4, 2, 102, 3, 0, 8, 114, 101, 110, 2, 29, 3, 0, 4,
-			105, 114, 101, 8, 2, 17, 67, 17, 65, 3, 21, 0, 105, 114, 101, 8, 2, 17, 67, 17, 67, 17, 65, 0, 108, 121, 0, 114, 97, 109,
-			101, 8, 0, 116, 101, 114, 2, 32, 0, 3, 83, 0, 4, 8, 117, 101, 110, 2, 32, 97, 110, 115, 3, 84, 0, 8, 117, 101, 110, 2,
-			32, 104, 101, 117, 114, 101, 115, 0, 7, 6, 103, 0, 4, 1, 110, 97, 116, 169, 195, 2, 32, 3, 0, 4, 1, 114, 117, 111, 98, 2,
-			32, 3, 0, 4, 8, 110, 97, 114, 2, 32, 3, 0, 4, 8, 110, 97, 115, 2, 32, 3, 0, 4, 8, 110, 111, 108, 2, 32, 3, 0,
-			4, 116, 1, 110, 105, 118, 2, 32, 117, 110, 3, 0, 116, 2, 32, 3, 0, 4, 97, 109, 101, 8, 2, 29, 3, 21, 0, 104, 2, 25,
-			0, 105, 114, 108, 0, 121, 2, 32, 0, 4, 116, 1, 110, 17, 65, 2, 17, 65, 3, 47, 0, 116, 1, 110, 105, 118, 2, 32, 17, 65,
-			0, 116, 1, 110, 105, 118, 2, 32, 99, 105, 110, 113, 0, 116, 1, 110, 105, 118, 2, 32, 100, 101, 117, 120, 0, 116, 1, 110, 105, 118,
-			2, 32, 104, 117, 105, 116, 0, 116, 1, 110, 105, 118, 2, 32, 110, 101, 117, 102, 0, 116, 1, 110, 105, 118, 2, 32, 110, 101, 117, 118,
-			105, 0, 116, 1, 110, 105, 118, 2, 32, 113, 117, 97, 116, 114, 0, 116, 1, 110, 105, 118, 2, 32, 115, 101, 112, 116, 0, 116, 1, 110,
-			105, 118, 2, 32, 115, 105, 120, 0, 116, 1, 110, 105, 118, 2, 32, 116, 114, 111, 105, 115, 0, 110, 2, 105, 101, 3, 50, 0, 110, 3,
-			50, 57, 0, 110, 2, 101, 17, 67, 17, 65, 3, 50, 57, 14, 0, 4, 110, 2, 32, 3, 67, 0, 110, 2, 101, 32, 0, 110, 105, 1,
-			105, 97, 0, 110, 105, 3, 67, 37, 0, 4, 3, 81, 0, 1, 97, 105, 100, 2, 110, 111, 0, 2, 17, 67, 0, 2, 32, 0, 8, 97,
-			2, 110, 111, 0, 103, 0, 117, 2, 105, 0, 110, 101, 114, 8, 97, 119, 2, 32, 3, 81, 50, 112, 34, 0, 103, 1, 117, 115, 2, 17,
-			71, 3, 81, 90, 0, 4, 117, 105, 1, 105, 97, 2, 108, 3, 81, 111, 37, 0, 117, 105, 1, 110, 105, 2, 115, 0, 4, 2, 17, 71,
-			3, 90, 0, 101, 2, 97, 0, 101, 2, 111, 0, 116, 115, 8, 110, 105, 118, 101, 114, 116, 97, 117, 113, 2, 32, 3, 143, 0, 7, 6,
-			104, 0, 4, 3, 0, 4, 8, 2, 97, 98, 105, 3, 0, 4, 8, 2, 97, 108, 108, 111, 3, 0, 4, 8, 2, 97, 109, 101, 3, 0,
-			4, 8, 2, 97, 110, 100, 114, 3, 0, 4, 8, 2, 97, 114, 109, 3, 0, 4, 8, 2, 101, 99, 116, 3, 0, 4, 8, 2, 101, 108,
-			3, 0, 4, 8, 2, 101, 114, 98, 3, 0, 4, 8, 2, 101, 117, 114, 101, 3, 0, 4, 8, 2, 105, 98, 101, 114, 3, 0, 4, 8,
-			2, 105, 112, 112, 111, 3, 0, 4, 8, 2, 105, 114, 111, 3, 0, 4, 8, 2, 105, 115, 116, 3, 0, 4, 8, 2, 105, 118, 3, 0,
-			4, 8, 2, 111, 109, 109, 3, 0, 4, 8, 2, 111, 110, 110, 3, 0, 4, 8, 2, 111, 114, 97, 3, 0, 4, 8, 2, 111, 114, 105,
-			112, 3, 0, 4, 8, 2, 111, 114, 105, 122, 3, 0, 4, 8, 2, 111, 114, 108, 111, 3, 0, 4, 8, 2, 111, 114, 111, 3, 0, 4,
-			8, 2, 111, 114, 114, 3, 0, 4, 8, 2, 111, 115, 3, 0, 4, 8, 2, 117, 105, 108, 3, 0, 4, 8, 2, 117, 105, 115, 115, 3,
-			0, 4, 8, 2, 117, 105, 116, 114, 3, 0, 4, 8, 2, 117, 109, 17, 65, 3, 0, 4, 8, 2, 117, 109, 17, 67, 3, 0, 4, 8,
-			2, 121, 3, 0, 4, 8, 2, 195, 169, 3, 0, 8, 2, 195, 180, 3, 0, 4, 97, 8, 2, 17, 67, 32, 3, 21, 0, 97, 108, 102,
-			8, 0, 110, 0, 4, 8, 3, 23, 0, 8, 2, 195, 169, 114, 105, 115, 0, 8, 2, 195, 169, 114, 111, 0, 105, 8, 2, 17, 65, 3,
-			23, 57, 0, 101, 105, 109, 2, 32, 3, 35, 57, 65, 0, 121, 112, 114, 97, 8, 2, 21, 14, 128, 132, 133, 3, 37, 48, 34, 35, 0,
-			4, 121, 112, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 37, 48, 112, 34, 0, 121, 112, 101, 114, 8, 2, 32, 0, 97, 117, 115, 2,
-			32, 3, 39, 89, 0, 121, 8, 2, 17, 65, 3, 57, 0, 7, 6, 105, 0, 4, 1, 102, 32, 109, 97, 114, 2, 108, 101, 3, 21, 0,
-			2, 112, 17, 65, 100, 0, 98, 117, 116, 101, 114, 2, 29, 0, 101, 118, 0, 102, 101, 2, 32, 0, 103, 110, 2, 32, 0, 108, 108, 1,
-			17, 67, 2, 121, 32, 0, 108, 108, 2, 32, 0, 110, 100, 1, 17, 67, 17, 65, 2, 101, 114, 29, 0, 110, 100, 2, 29, 0, 110, 100,
-			8, 17, 67, 2, 101, 114, 29, 0, 110, 103, 2, 32, 0, 114, 100, 1, 17, 67, 2, 29, 0, 114, 116, 1, 17, 67, 2, 32, 0, 118,
-			101, 110, 2, 32, 0, 122, 101, 2, 25, 0, 4, 1, 108, 102, 102, 111, 2, 110, 101, 32, 3, 35, 57, 0, 1, 108, 110, 111, 2, 110,
-			101, 32, 0, 1, 108, 116, 111, 2, 110, 101, 29, 0, 1, 114, 100, 2, 118, 101, 0, 1, 116, 103, 2, 109, 0, 8, 2, 99, 101, 21,
-			0, 4, 3, 37, 0, 1, 17, 67, 2, 101, 114, 17, 65, 0, 101, 110, 1, 17, 67, 2, 116, 32, 0, 101, 110, 1, 118, 169, 195, 100,
-			2, 116, 32, 0, 108, 8, 2, 108, 0, 110, 2, 110, 0, 115, 1, 17, 67, 2, 32, 0, 110, 2, 104, 3, 37, 50, 0, 110, 116, 1,
-			114, 112, 2, 32, 3, 37, 50, 47, 0, 110, 103, 2, 104, 3, 37, 50, 81, 0, 4, 108, 108, 1, 99, 2, 105, 3, 37, 55, 0, 108,
-			108, 1, 99, 115, 111, 0, 108, 108, 1, 116, 115, 105, 100, 0, 108, 108, 1, 117, 113, 110, 97, 0, 108, 108, 1, 118, 2, 101, 32, 0,
-			108, 108, 8, 18, 70, 0, 4, 108, 108, 1, 17, 67, 3, 37, 57, 0, 108, 108, 1, 117, 103, 0, 108, 108, 1, 117, 103, 105, 97, 0,
-			108, 108, 1, 117, 113, 0, 109, 2, 32, 3, 37, 65, 0, 109, 109, 3, 37, 65, 65, 0, 110, 103, 2, 115, 3, 37, 68, 0, 4, 108,
-			115, 1, 102, 32, 18, 66, 2, 32, 3, 37, 89, 0, 115, 1, 114, 105, 25, 2, 32, 0, 115, 1, 114, 111, 98, 2, 32, 0, 115, 1,
-			114, 111, 100, 2, 32, 0, 115, 1, 114, 111, 116, 2, 32, 0, 4, 101, 110, 1, 108, 99, 2, 17, 67, 3, 37, 113, 0, 101, 110, 1,
-			114, 111, 2, 116, 0, 4, 108, 1, 97, 2, 32, 3, 57, 0, 108, 1, 101, 2, 32, 0, 108, 1, 117, 2, 32, 0, 108, 108, 1, 17,
-			65, 0, 4, 101, 110, 1, 108, 111, 109, 2, 17, 67, 3, 57, 113, 0, 101, 110, 1, 110, 169, 195, 118, 2, 17, 67, 0, 101, 110, 1,
-			112, 105, 99, 2, 17, 67, 0, 101, 110, 1, 116, 97, 2, 116, 32, 0, 101, 110, 1, 116, 111, 2, 116, 32, 0, 4, 101, 110, 1, 116,
-			2, 25, 32, 3, 57, 114, 0, 101, 110, 1, 118, 2, 25, 32, 0, 4, 109, 2, 17, 67, 3, 114, 0, 110, 2, 17, 67, 0, 110, 2,
-			32, 0, 110, 99, 116, 2, 32, 0, 4, 110, 116, 101, 114, 8, 2, 32, 3, 114, 47, 6, 112, 34, 0, 110, 116, 101, 114, 8, 2, 110,
-			101, 32, 0, 4, 110, 116, 114, 97, 8, 2, 110, 101, 14, 128, 132, 133, 3, 114, 47, 34, 35, 0, 110, 116, 114, 97, 8, 2, 117, 14,
-			128, 132, 133, 0, 4, 110, 116, 101, 114, 8, 2, 21, 21, 14, 128, 132, 133, 3, 114, 47, 112, 34, 0, 110, 116, 101, 114, 114, 8, 2,
-			17, 65, 0, 110, 102, 114, 97, 8, 2, 115, 14, 128, 132, 133, 3, 114, 83, 34, 35, 0, 114, 116, 1, 108, 102, 3, 117, 34, 47, 0,
-			7, 6, 106, 0, 4, 8, 2, 111, 98, 25, 3, 75, 0, 8, 2, 111, 104, 25, 0, 97, 122, 122, 8, 3, 75, 35, 88, 0, 4, 3,
-			90, 0, 39, 8, 2, 14, 128, 140, 130, 0, 101, 2, 97, 0, 117, 115, 113, 117, 39, 8, 2, 14, 128, 132, 134, 3, 90, 111, 89, 49,
-			0, 7, 6, 107, 0, 4, 1, 17, 67, 17, 65, 2, 29, 3, 21, 0, 101, 2, 32, 0, 101, 2, 110, 29, 0, 101, 2, 114, 29, 0,
-			101, 2, 115, 32, 0, 3, 49, 0, 7, 6, 108, 0, 4, 1, 105, 17, 67, 117, 2, 32, 3, 0, 4, 1, 105, 116, 110, 2, 32, 3,
-			0, 116, 1, 117, 97, 3, 0, 4, 1, 17, 67, 11, 2, 101, 29, 3, 21, 0, 1, 17, 67, 17, 65, 2, 29, 0, 100, 1, 111, 2,
-			32, 0, 100, 1, 117, 2, 32, 0, 101, 115, 115, 2, 32, 0, 105, 110, 101, 8, 2, 29, 0, 105, 118, 101, 8, 0, 111, 117, 100, 1,
-			21, 2, 32, 0, 4, 3, 55, 0, 1, 102, 102, 2, 101, 29, 0, 1, 112, 112, 2, 101, 29, 0, 39, 8, 2, 14, 128, 132, 130, 0,
-			108, 2, 17, 65, 0, 111, 114, 115, 113, 117, 39, 8, 2, 14, 128, 132, 135, 3, 55, 39, 34, 89, 49, 0, 4, 104, 1, 105, 116, 110,
-			3, 57, 0, 108, 1, 105, 117, 0, 7, 6, 109, 0, 4, 2, 110, 32, 3, 21, 0, 97, 105, 108, 1, 100, 0, 97, 105, 108, 1, 101,
-			0, 97, 105, 108, 1, 103, 0, 97, 105, 108, 1, 116, 0, 111, 118, 2, 17, 65, 29, 0, 111, 118, 2, 105, 101, 32, 0, 4, 3, 65,
-			0, 39, 8, 2, 14, 128, 140, 130, 0, 109, 0, 99, 8, 2, 21, 14, 128, 132, 130, 3, 65, 35, 49, 0, 97, 115, 116, 101, 114, 2,
-			32, 14, 128, 128, 134, 3, 65, 35, 89, 47, 117, 34, 0, 115, 8, 2, 14, 128, 132, 130, 3, 112, 65, 112, 89, 0, 7, 6, 110, 0,
-			4, 2, 101, 109, 101, 32, 3, 21, 0, 2, 101, 109, 101, 115, 32, 0, 97, 109, 101, 8, 0, 97, 109, 101, 8, 101, 114, 0, 4, 3,
-			50, 0, 39, 8, 2, 14, 128, 140, 130, 0, 110, 0, 103, 104, 3, 50, 81, 0, 8, 2, 32, 194, 176, 3, 50, 111, 65, 36, 34, 39,
-			0, 101, 114, 8, 17, 67, 17, 65, 119, 2, 32, 3, 50, 112, 34, 0, 101, 117, 114, 111, 8, 2, 21, 21, 14, 128, 132, 133, 3, 50,
-			132, 34, 39, 0, 103, 2, 32, 3, 68, 0, 118, 100, 97, 8, 2, 14, 128, 132, 132, 3, 112, 50, 84, 36, 72, 36, 35, 0, 7, 6,
-			111, 0, 4, 2, 108, 100, 101, 114, 32, 3, 21, 0, 8, 2, 114, 100, 101, 114, 32, 0, 97, 2, 17, 67, 101, 114, 29, 0, 97, 2,
-			29, 0, 97, 99, 104, 0, 101, 115, 0, 102, 8, 2, 29, 0, 105, 110, 103, 1, 17, 67, 2, 32, 0, 110, 1, 116, 103, 2, 32, 0,
-			110, 1, 116, 115, 17, 67, 2, 32, 0, 110, 101, 8, 0, 111, 2, 17, 67, 101, 0, 111, 2, 29, 0, 111, 2, 107, 0, 111, 2, 115,
-			116, 0, 111, 116, 1, 17, 67, 0, 116, 8, 17, 67, 115, 0, 117, 100, 1, 17, 67, 29, 2, 29, 0, 117, 100, 1, 108, 2, 29, 0,
-			117, 110, 2, 17, 67, 0, 118, 101, 114, 8, 0, 119, 2, 29, 0, 119, 2, 101, 0, 121, 8, 17, 67, 2, 29, 0, 117, 8, 2, 97,
-			116, 3, 23, 40, 0, 110, 8, 2, 122, 3, 23, 116, 0, 101, 8, 104, 112, 2, 17, 67, 3, 36, 0, 4, 1, 17, 67, 2, 109, 101,
-			32, 3, 39, 0, 2, 32, 0, 2, 101, 17, 67, 0, 2, 115, 17, 65, 0, 2, 116, 32, 0, 2, 122, 17, 65, 0, 99, 1, 114, 98,
-			2, 32, 0, 99, 1, 114, 99, 2, 32, 0, 105, 8, 2, 103, 110, 111, 110, 0, 111, 1, 122, 0, 112, 8, 108, 97, 103, 2, 32, 0,
-			112, 8, 114, 105, 115, 2, 32, 0, 115, 1, 32, 115, 2, 32, 0, 115, 1, 32, 120, 2, 32, 0, 115, 8, 118, 2, 103, 17, 71, 0,
-			115, 116, 1, 118, 2, 32, 0, 4, 97, 2, 32, 3, 39, 35, 0, 97, 2, 115, 32, 0, 111, 1, 122, 2, 17, 67, 3, 39, 39, 0,
-			115, 115, 1, 114, 103, 3, 39, 89, 0, 4, 111, 1, 122, 2, 109, 3, 40, 0, 117, 0, 117, 101, 2, 109, 17, 65, 0, 117, 112, 8,
-			17, 67, 2, 32, 0, 195, 185, 0, 195, 187, 0, 117, 2, 105, 110, 3, 58, 0, 4, 101, 2, 108, 108, 17, 65, 3, 58, 35, 0, 105,
-			0, 121, 0, 195, 170, 2, 108, 0, 121, 2, 17, 65, 3, 58, 35, 57, 0, 4, 105, 110, 2, 17, 67, 3, 58, 114, 0, 105, 110, 2,
-			32, 0, 4, 109, 1, 110, 2, 29, 3, 116, 0, 109, 2, 18, 76, 0, 109, 2, 116, 0, 110, 2, 25, 0, 110, 8, 99, 2, 32, 0,
-			110, 116, 8, 109, 2, 109, 0, 110, 116, 8, 109, 2, 112, 17, 65, 17, 67, 0, 110, 116, 8, 109, 2, 114, 17, 65, 97, 108, 0, 110,
-			115, 104, 2, 17, 65, 3, 116, 88, 0, 110, 8, 17, 67, 2, 32, 3, 116, 134, 0, 110, 2, 116, 32, 3, 116, 140, 0, 4, 101, 2,
-			105, 3, 117, 0, 101, 8, 104, 112, 2, 110, 32, 0, 101, 117, 0, 4, 3, 127, 0, 2, 17, 67, 17, 67, 0, 8, 17, 67, 2, 109,
-			101, 32, 0, 8, 121, 2, 121, 0, 110, 2, 110, 0, 111, 1, 99, 108, 97, 2, 108, 0, 121, 8, 99, 2, 111, 3, 127, 37, 0, 110,
-			104, 2, 17, 65, 3, 127, 50, 0, 121, 8, 98, 2, 99, 111, 3, 127, 57, 0, 109, 2, 32, 3, 127, 65, 0, 115, 8, 2, 32, 12,
-			12, 3, 127, 89, 0, 4, 101, 8, 2, 17, 67, 3, 132, 0, 101, 117, 100, 0, 101, 117, 102, 115, 2, 32, 0, 101, 117, 2, 120, 3,
-			132, 143, 0, 7, 6, 112, 0, 4, 1, 97, 98, 2, 116, 3, 0, 4, 1, 97, 114, 100, 2, 32, 3, 0, 4, 1, 108, 117, 99, 115,
-			2, 116, 3, 0, 4, 1, 109, 97, 99, 2, 32, 3, 0, 4, 1, 109, 97, 104, 99, 2, 32, 3, 0, 4, 1, 109, 111, 99, 2, 116,
-			3, 0, 4, 2, 112, 3, 0, 4, 115, 1, 109, 2, 32, 3, 0, 4, 115, 1, 114, 2, 32, 3, 0, 116, 1, 17, 67, 2, 32, 3,
-			0, 4, 97, 100, 2, 32, 3, 21, 0, 108, 117, 103, 0, 114, 105, 110, 116, 101, 114, 2, 32, 0, 4, 116, 1, 101, 115, 2, 32, 3,
-			47, 0, 116, 1, 101, 115, 2, 105, 195, 168, 0, 3, 48, 0, 97, 114, 97, 8, 2, 112, 17, 67, 14, 128, 132, 132, 3, 48, 35, 34,
-			35, 0, 111, 108, 121, 8, 2, 21, 14, 128, 132, 132, 3, 48, 39, 55, 37, 0, 4, 111, 115, 116, 8, 2, 17, 65, 17, 67, 17, 67,
-			14, 128, 132, 132, 3, 48, 39, 89, 47, 0, 111, 115, 116, 8, 2, 17, 67, 14, 128, 132, 132, 0, 115, 121, 99, 104, 8, 2, 21, 14,
-			128, 132, 133, 3, 48, 89, 37, 49, 0, 4, 115, 121, 99, 104, 8, 2, 17, 65, 17, 65, 32, 14, 128, 132, 133, 3, 48, 89, 37, 91,
-			0, 115, 121, 99, 104, 8, 2, 105, 17, 67, 14, 128, 132, 133, 0, 115, 101, 117, 100, 111, 8, 2, 21, 14, 128, 132, 134, 3, 48, 89,
-			132, 72, 39, 0, 117, 105, 115, 113, 117, 39, 8, 2, 14, 128, 132, 135, 3, 48, 111, 37, 89, 49, 0, 97, 121, 115, 3, 48, 112, 37,
-			143, 0, 104, 3, 83, 0, 104, 111, 116, 111, 8, 2, 21, 14, 128, 132, 133, 3, 83, 39, 47, 39, 0, 7, 6, 113, 0, 4, 1, 110,
-			2, 32, 99, 101, 110, 116, 32, 3, 0, 1, 110, 2, 32, 109, 105, 108, 108, 3, 0, 117, 105, 99, 107, 3, 21, 0, 4, 3, 49, 0,
-			1, 110, 2, 32, 0, 117, 0, 117, 39, 8, 2, 17, 65, 14, 128, 132, 131, 0, 117, 101, 8, 2, 32, 3, 49, 13, 0, 117, 97, 8,
-			2, 100, 114, 105, 108, 108, 3, 49, 35, 0, 117, 8, 97, 2, 105, 102, 3, 49, 40, 0, 4, 117, 97, 1, 169, 195, 100, 3, 49, 58,
-			35, 0, 117, 97, 8, 2, 100, 0, 117, 97, 8, 2, 114, 116, 122, 0, 117, 97, 8, 2, 116, 17, 65, 0, 117, 97, 8, 17, 65, 0,
-			117, 97, 8, 17, 67, 0, 117, 97, 8, 97, 0, 117, 97, 110, 8, 2, 116, 17, 65, 3, 49, 58, 113, 0, 4, 117, 105, 8, 17, 65,
-			2, 100, 105, 115, 116, 3, 49, 111, 37, 0, 117, 105, 8, 17, 65, 2, 108, 97, 116, 0, 7, 6, 114, 0, 4, 2, 17, 67, 121, 32,
-			3, 21, 0, 101, 97, 108, 8, 0, 115, 116, 2, 32, 0, 117, 108, 101, 8, 0, 4, 3, 34, 0, 114, 0, 114, 1, 117, 111, 99, 2,
-			105, 0, 114, 1, 117, 111, 99, 2, 111, 0, 4, 114, 1, 117, 111, 99, 3, 34, 34, 0, 114, 1, 117, 111, 109, 0, 114, 8, 117, 115,
-			0, 97, 100, 105, 111, 8, 2, 21, 14, 128, 132, 133, 3, 34, 35, 72, 37, 39, 0, 7, 6, 115, 0, 4, 1, 117, 17, 67, 2, 32,
-			3, 0, 4, 1, 117, 99, 111, 100, 2, 32, 3, 0, 4, 1, 117, 99, 169, 195, 2, 32, 3, 0, 4, 1, 117, 103, 105, 2, 32, 3,
-			0, 4, 1, 117, 109, 169, 195, 2, 32, 3, 0, 4, 1, 117, 110, 101, 2, 32, 3, 0, 4, 1, 117, 114, 97, 2, 32, 3, 0, 4,
-			1, 117, 114, 117, 111, 2, 32, 3, 0, 4, 1, 117, 116, 105, 97, 2, 32, 3, 0, 4, 8, 117, 98, 17, 65, 2, 32, 3, 0, 4,
-			8, 117, 109, 2, 32, 3, 0, 4, 8, 117, 111, 116, 2, 32, 17, 67, 101, 115, 32, 3, 0, 4, 8, 117, 111, 116, 2, 32, 17, 67,
-			111, 115, 32, 3, 0, 8, 117, 111, 116, 2, 32, 108, 101, 117, 114, 115, 32, 3, 0, 4, 8, 17, 65, 2, 32, 3, 21, 0, 101, 110,
-			100, 2, 32, 0, 101, 114, 118, 101, 114, 8, 2, 29, 0, 104, 2, 17, 65, 112, 0, 104, 2, 17, 65, 116, 0, 104, 2, 32, 0, 105,
-			100, 101, 1, 18, 79, 2, 29, 12, 12, 12, 0, 105, 100, 101, 8, 2, 29, 12, 12, 12, 0, 107, 121, 8, 0, 109, 105, 108, 8, 0,
-			111, 110, 1, 18, 78, 2, 32, 0, 112, 121, 0, 116, 111, 110, 1, 18, 78, 2, 32, 0, 116, 111, 110, 101, 2, 32, 0, 4, 1, 17,
-			65, 2, 17, 65, 3, 88, 0, 1, 98, 117, 2, 105, 115, 0, 1, 110, 97, 114, 116, 2, 17, 65, 0, 2, 98, 0, 2, 100, 0, 2,
-			103, 0, 2, 106, 0, 2, 118, 0, 8, 108, 97, 2, 97, 99, 0, 104, 1, 169, 195, 100, 2, 17, 65, 0, 4, 3, 89, 0, 1, 17,
-			65, 2, 111, 102, 116, 0, 1, 17, 65, 2, 111, 108, 32, 0, 1, 97, 107, 97, 2, 32, 0, 1, 97, 115, 110, 97, 107, 2, 32, 0,
-			1, 105, 97, 2, 101, 109, 0, 1, 110, 97, 114, 116, 2, 101, 0, 1, 110, 97, 114, 116, 2, 117, 98, 0, 1, 111, 114, 116, 97, 98,
-			2, 32, 0, 1, 111, 114, 169, 195, 99, 111, 2, 32, 0, 1, 117, 98, 17, 65, 2, 32, 0, 1, 117, 98, 109, 2, 32, 0, 1, 117,
-			99, 17, 65, 2, 32, 0, 1, 117, 100, 111, 2, 32, 0, 1, 117, 103, 2, 32, 0, 1, 117, 105, 2, 32, 0, 1, 117, 108, 117, 17,
-			67, 2, 32, 0, 1, 117, 108, 121, 2, 32, 0, 1, 117, 109, 2, 32, 0, 1, 117, 110, 17, 65, 2, 32, 0, 1, 117, 112, 111, 2,
-			32, 0, 1, 117, 114, 17, 65, 2, 32, 0, 1, 117, 115, 97, 2, 32, 0, 1, 117, 115, 112, 2, 32, 0, 1, 117, 115, 115, 101, 99,
-			2, 32, 0, 1, 117, 116, 97, 2, 32, 0, 1, 117, 116, 99, 2, 32, 0, 1, 117, 116, 101, 2, 32, 0, 1, 117, 116, 105, 2, 32,
-			0, 1, 117, 116, 108, 2, 32, 0, 1, 117, 116, 111, 2, 32, 0, 1, 117, 116, 117, 17, 67, 2, 32, 0, 1, 117, 175, 195, 2, 32,
-			0, 1, 168, 195, 17, 67, 97, 2, 32, 0, 1, 168, 195, 110, 2, 32, 0, 8, 117, 2, 32, 0, 8, 117, 111, 116, 2, 32, 0, 8,
-			117, 111, 116, 2, 32, 100, 101, 115, 32, 0, 8, 117, 112, 17, 67, 17, 65, 99, 2, 32, 0, 39, 8, 2, 14, 128, 140, 130, 0, 39,
-			8, 2, 101, 115, 29, 14, 128, 140, 130, 0, 115, 0, 195, 167, 0, 99, 105, 101, 110, 2, 116, 3, 89, 37, 113, 0, 111, 99, 105, 111,
-			8, 2, 21, 14, 128, 132, 133, 3, 89, 39, 89, 37, 39, 0, 4, 99, 104, 2, 105, 101, 3, 89, 49, 0, 99, 104, 2, 105, 122, 0,
-			99, 104, 2, 111, 108, 0, 99, 104, 2, 111, 111, 0, 117, 112, 114, 97, 8, 2, 21, 14, 128, 132, 133, 3, 89, 111, 48, 34, 35, 0,
-			4, 117, 112, 101, 114, 8, 2, 21, 21, 14, 128, 132, 133, 3, 89, 111, 48, 112, 34, 0, 117, 112, 101, 114, 8, 2, 32, 0, 4, 99,
-			104, 3, 91, 0, 104, 0, 99, 104, 117, 3, 91, 40, 0, 116, 101, 105, 110, 2, 32, 3, 91, 47, 35, 57, 50, 0, 113, 108, 2, 32,
-			14, 128, 128, 131, 3, 112, 89, 49, 111, 112, 55, 0, 4, 1, 117, 108, 112, 2, 32, 3, 143, 0, 2, 32, 14, 128, 128, 129, 0, 7,
-			6, 116, 0, 4, 1, 108, 117, 97, 2, 32, 3, 0, 4, 1, 110, 2, 32, 3, 0, 4, 1, 114, 2, 32, 3, 0, 4, 2, 32, 3,
-			0, 104, 1, 115, 2, 109, 3, 0, 4, 1, 105, 2, 117, 110, 101, 29, 3, 21, 0, 1, 114, 97, 17, 67, 115, 2, 32, 0, 1, 114,
-			97, 17, 67, 115, 2, 101, 114, 32, 0, 104, 2, 17, 65, 0, 104, 2, 25, 0, 105, 109, 101, 8, 0, 108, 101, 2, 32, 0, 111, 110,
-			1, 103, 2, 32, 0, 111, 111, 0, 114, 121, 2, 32, 0, 116, 108, 0, 117, 110, 8, 2, 17, 65, 29, 0, 4, 3, 47, 0, 1, 17,
-			67, 2, 32, 0, 1, 26, 2, 105, 111, 110, 0, 1, 99, 101, 26, 2, 105, 111, 110, 0, 1, 101, 17, 67, 2, 105, 111, 110, 115, 0,
-			1, 101, 104, 99, 97, 2, 105, 111, 110, 0, 1, 105, 17, 67, 169, 195, 2, 105, 111, 110, 115, 0, 1, 105, 97, 2, 105, 111, 110, 0,
-			1, 105, 98, 97, 104, 2, 105, 111, 110, 115, 0, 1, 105, 99, 2, 105, 111, 110, 115, 0, 1, 105, 107, 2, 32, 0, 1, 105, 109, 105,
-			2, 105, 111, 110, 115, 0, 1, 105, 110, 97, 114, 103, 2, 32, 0, 1, 105, 111, 2, 105, 111, 110, 0, 1, 105, 115, 105, 17, 67, 2,
-			105, 111, 110, 0, 1, 110, 97, 2, 105, 97, 0, 1, 110, 97, 104, 99, 2, 105, 111, 110, 0, 1, 110, 101, 115, 2, 105, 111, 110, 32,
-			0, 1, 112, 101, 26, 2, 105, 111, 110, 0, 1, 112, 109, 111, 99, 2, 105, 111, 110, 115, 0, 1, 114, 111, 112, 17, 65, 2, 105, 111,
-			110, 0, 1, 114, 111, 112, 17, 67, 2, 105, 111, 110, 0, 1, 114, 111, 115, 2, 105, 111, 110, 0, 1, 115, 2, 105, 111, 110, 0, 1,
-			116, 2, 105, 111, 110, 0, 1, 117, 17, 65, 26, 2, 105, 111, 110, 0, 1, 169, 195, 26, 2, 105, 111, 110, 0, 1, 170, 195, 114, 2,
-			105, 111, 110, 0, 8, 0, 8, 17, 65, 115, 110, 97, 114, 116, 2, 32, 0, 8, 97, 116, 2, 105, 111, 110, 0, 8, 101, 99, 2, 32,
-			0, 39, 8, 2, 14, 128, 140, 130, 0, 104, 0, 104, 1, 114, 111, 2, 12, 12, 0, 104, 2, 17, 65, 114, 17, 65, 12, 12, 0, 104,
-			2, 18, 77, 12, 12, 0, 104, 2, 111, 17, 67, 17, 65, 0, 104, 8, 2, 101, 114, 109, 0, 116, 0, 8, 2, 32, 3, 47, 36, 0,
-			4, 101, 108, 101, 8, 3, 47, 36, 55, 36, 0, 195, 169, 108, 195, 169, 8, 2, 21, 14, 128, 132, 132, 0, 104, 101, 114, 109, 111, 8,
-			2, 21, 14, 128, 132, 134, 3, 47, 112, 34, 65, 39, 0, 4, 1, 17, 67, 2, 105, 101, 117, 3, 89, 0, 1, 97, 2, 105, 97, 0,
-			1, 97, 2, 105, 101, 110, 0, 1, 97, 109, 17, 65, 2, 105, 101, 29, 0, 1, 97, 114, 99, 2, 105, 101, 29, 0, 1, 99, 110, 17,
-			65, 17, 67, 2, 105, 111, 110, 0, 1, 105, 2, 105, 101, 110, 0, 1, 105, 110, 105, 2, 105, 17, 65, 0, 1, 105, 115, 2, 105, 111,
-			110, 0, 1, 105, 116, 169, 195, 2, 105, 111, 110, 0, 1, 110, 97, 2, 105, 97, 116, 0, 1, 110, 101, 2, 105, 97, 0, 1, 111, 2,
-			105, 101, 110, 0, 1, 112, 2, 105, 97, 0, 1, 114, 2, 105, 97, 0, 1, 114, 97, 109, 2, 105, 101, 110, 0, 1, 114, 101, 110, 2,
-			105, 101, 0, 1, 114, 111, 112, 111, 2, 105, 111, 110, 0, 1, 117, 98, 108, 2, 105, 17, 65, 0, 1, 117, 108, 2, 105, 111, 110, 0,
-			1, 117, 110, 2, 105, 101, 29, 0, 1, 169, 195, 109, 97, 2, 105, 101, 29, 0, 1, 169, 195, 112, 105, 2, 105, 101, 29, 0, 2, 105,
-			17, 65, 109, 0, 2, 105, 101, 108, 0, 2, 105, 101, 117, 0, 2, 105, 111, 32, 0, 2, 105, 111, 110, 0, 4, 105, 101, 110, 1, 105,
-			110, 2, 116, 32, 3, 89, 37, 0, 105, 101, 110, 1, 117, 98, 2, 116, 32, 0, 4, 1, 17, 65, 2, 45, 3, 140, 0, 1, 45, 2,
-			45, 0, 1, 105, 17, 67, 26, 2, 32, 0, 1, 105, 116, 101, 112, 2, 32, 0, 1, 110, 26, 2, 32, 0, 1, 105, 117, 104, 2, 32,
-			3, 141, 0, 115, 2, 32, 14, 128, 128, 129, 3, 143, 0, 7, 6, 117, 0, 1, 103, 2, 17, 65, 3, 0, 4, 1, 114, 2, 110, 29,
-			3, 21, 0, 97, 108, 1, 18, 68, 2, 32, 0, 99, 104, 2, 32, 0, 105, 1, 17, 67, 2, 99, 101, 0, 108, 116, 1, 17, 67, 2,
-			32, 0, 109, 98, 101, 114, 2, 32, 0, 109, 112, 2, 32, 0, 110, 8, 17, 67, 2, 32, 0, 110, 8, 17, 67, 2, 110, 121, 0, 110,
-			99, 104, 0, 110, 100, 101, 114, 0, 112, 2, 32, 0, 112, 8, 2, 17, 67, 0, 114, 110, 2, 29, 0, 115, 105, 8, 98, 0, 115, 116,
-			2, 32, 0, 122, 122, 0, 4, 1, 103, 2, 97, 121, 3, 40, 0, 1, 107, 175, 195, 97, 104, 2, 29, 0, 1, 112, 2, 116, 115, 99,
-			104, 0, 99, 99, 105, 1, 17, 67, 3, 40, 76, 37, 0, 4, 97, 1, 103, 2, 108, 32, 3, 58, 35, 0, 97, 1, 103, 97, 2, 29,
-			0, 97, 1, 103, 105, 116, 17, 67, 2, 32, 0, 97, 8, 103, 0, 4, 3, 111, 0, 1, 103, 2, 195, 171, 0, 1, 103, 2, 195, 175,
-			0, 108, 8, 99, 2, 32, 0, 110, 2, 110, 0, 120, 1, 108, 102, 2, 32, 0, 105, 3, 111, 37, 0, 121, 2, 17, 65, 3, 111, 37,
-			57, 0, 108, 116, 114, 97, 8, 2, 14, 128, 132, 133, 3, 111, 55, 47, 34, 35, 0, 105, 110, 2, 25, 3, 111, 114, 0, 4, 109, 1,
-			102, 2, 32, 3, 115, 0, 109, 2, 18, 76, 0, 110, 1, 17, 67, 17, 67, 2, 32, 0, 110, 2, 17, 67, 0, 110, 8, 104, 2, 32,
-			0, 110, 116, 1, 114, 112, 2, 32, 0, 4, 110, 1, 99, 117, 2, 32, 3, 115, 134, 0, 110, 2, 32, 0, 4, 1, 17, 67, 2, 98,
-			29, 3, 117, 0, 1, 17, 67, 2, 103, 29, 0, 8, 17, 67, 2, 114, 102, 29, 0, 8, 108, 98, 2, 102, 102, 0, 8, 110, 2, 114,
-			115, 101, 0, 8, 115, 2, 114, 102, 101, 29, 0, 101, 2, 105, 108, 0, 122, 2, 122, 0, 109, 2, 32, 3, 127, 65, 0, 7, 6, 118,
-			0, 4, 111, 105, 99, 101, 2, 29, 3, 21, 0, 111, 105, 100, 2, 32, 0, 121, 2, 32, 0, 3, 84, 0, 105, 101, 119, 2, 29, 3,
-			84, 57, 40, 0, 105, 101, 119, 8, 2, 17, 65, 3, 84, 57, 40, 84, 0, 101, 114, 115, 2, 32, 3, 84, 112, 34, 143, 0, 101, 114,
-			1, 105, 114, 100, 2, 29, 3, 84, 117, 34, 0, 7, 6, 119, 0, 4, 8, 2, 17, 65, 17, 67, 3, 21, 0, 8, 2, 17, 65, 105,
-			0, 97, 114, 0, 97, 118, 0, 97, 121, 0, 101, 8, 0, 104, 0, 110, 1, 17, 65, 0, 111, 114, 0, 114, 0, 8, 2, 17, 65, 3,
-			23, 58, 0, 4, 3, 58, 0, 8, 2, 17, 65, 17, 67, 111, 0, 8, 2, 17, 65, 116, 116, 0, 8, 2, 105, 110, 97, 0, 2, 97,
-			103, 12, 12, 3, 84, 0, 7, 6, 120, 0, 4, 1, 105, 97, 2, 32, 3, 0, 4, 1, 105, 111, 2, 32, 3, 0, 4, 1, 105, 114,
-			2, 32, 3, 0, 8, 117, 97, 2, 113, 117, 101, 108, 3, 0, 109, 108, 2, 32, 14, 128, 128, 131, 3, 23, 37, 49, 89, 112, 65, 112,
-			55, 0, 8, 2, 17, 67, 14, 128, 132, 129, 3, 37, 49, 89, 0, 4, 3, 49, 89, 0, 1, 101, 18, 68, 2, 17, 65, 0, 120, 0,
-			4, 1, 101, 2, 17, 65, 3, 81, 88, 0, 8, 2, 17, 65, 0, 8, 101, 2, 104, 0, 8, 101, 110, 105, 2, 17, 65, 0, 4, 1,
-			105, 100, 2, 105, 195, 168, 3, 88, 0, 1, 105, 115, 2, 105, 195, 168, 0, 1, 117, 101, 100, 2, 105, 195, 168, 0, 8, 105, 100, 2,
-			32, 110, 101, 117, 102, 0, 4, 8, 105, 111, 115, 2, 17, 65, 3, 89, 0, 8, 105, 115, 2, 32, 110, 101, 117, 0, 1, 117, 17, 65,
-			2, 32, 3, 143, 0, 4, 8, 105, 100, 2, 32, 3, 144, 0, 8, 105, 115, 2, 32, 0, 7, 6, 121, 0, 4, 1, 17, 67, 2, 101,
-			32, 3, 21, 0, 1, 17, 67, 11, 2, 32, 0, 1, 17, 67, 17, 65, 2, 32, 0, 1, 17, 67, 101, 17, 67, 21, 2, 32, 0, 1,
-			17, 67, 110, 2, 32, 0, 8, 17, 67, 2, 32, 0, 97, 99, 104, 116, 8, 0, 122, 101, 0, 8, 2, 17, 65, 3, 23, 57, 0, 4,
-			3, 37, 0, 1, 115, 115, 2, 32, 0, 2, 110, 110, 0, 115, 1, 29, 2, 32, 3, 37, 89, 0, 8, 2, 101, 117, 3, 57, 0, 97,
-			104, 111, 111, 8, 2, 14, 128, 132, 133, 3, 57, 35, 6, 40, 0, 4, 109, 2, 18, 76, 3, 114, 0, 109, 2, 32, 0, 110, 2, 25,
-			0, 7, 6, 122, 0, 3, 88, 0, 101, 114, 1, 116, 2, 32, 3, 88, 112, 34, 0, 101, 114, 1, 17, 67, 2, 32, 3, 88, 117, 34,
-			0, 1, 116, 3, 89, 0, 7, 6, 0, 194, 176, 8, 32, 110, 3, 0, 39, 2, 17, 67, 3, 21, 0, 195, 162, 3, 35, 12, 0, 195,
-			169, 3, 36, 0, 195, 182, 3, 39, 0, 195, 177, 3, 67, 0, 194, 176, 3, 72, 13, 81, 34, 36, 0, 36, 3, 72, 127, 55, 35, 34,
-			0, 195, 188, 3, 111, 0, 195, 187, 3, 111, 12, 0, 195, 170, 3, 112, 0, 58, 8, 32, 18, 81, 2, 32, 18, 82, 15, 32, 3, 117,
-			34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts19 = FileInMemory_createWithData (21484, reinterpret_cast<const char *> (&espeakdata_dicts19_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/fr_dict", 
+		static unsigned char espeakdata_dicts21_data[21423] = {
+			0, 4, 0, 0, 109, 43, 0, 0, 0, 0, 0, 8, 67, 21, 81, 64, 111, 0, 76, 0, 9, 198, 21, 84, 211, 36, 86, 128, 76, 0,
+			7, 65, 4, 35, 0, 49, 46, 5, 193, 4, 76, 36, 6, 65, 4, 35, 0, 76, 0, 9, 68, 5, 4, 12, 20, 21, 0, 47, 13, 70,
+			12, 243, 150, 20, 229, 0, 49, 116, 84, 113, 0, 6, 193, 108, 49, 43, 46, 6, 65, 108, 35, 0, 76, 0, 0, 0, 18, 70, 8, 243,
+			212, 4, 35, 5, 98, 111, 117, 116, 97, 98, 108, 101, 0, 29, 6, 65, 8, 71, 36, 0, 0, 0, 6, 195, 85, 64, 192, 13, 6, 195,
+			57, 50, 64, 13, 15, 69, 52, 36, 143, 48, 16, 112, 65, 71, 34, 39, 55, 35, 0, 14, 67, 21, 64, 192, 112, 47, 89, 36, 47, 36,
+			34, 35, 0, 0, 0, 6, 65, 12, 89, 36, 0, 0, 0, 14, 69, 12, 147, 133, 52, 16, 89, 37, 50, 36, 65, 35, 0, 6, 195, 69,
+			81, 64, 76, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 13, 69, 8, 83, 9, 104, 80, 71, 36, 55, 37, 88, 0, 10, 69, 64, 83,
+			208, 48, 80, 21, 0, 47, 0, 16, 70, 9, 84, 149, 56, 66, 64, 71, 40, 34, 40, 50, 72, 37, 0, 10, 67, 45, 84, 148, 49, 40,
+			34, 47, 0, 13, 4, 95, 100, 112, 116, 84, 37, 34, 81, 111, 55, 0, 0, 14, 65, 20, 101, 98, 97, 121, 0, 29, 81, 98, 97, 121,
+			32, 6, 65, 20, 11, 13, 0, 0, 0, 7, 195, 69, 82, 64, 32, 76, 0, 0, 7, 65, 24, 11, 112, 83, 0, 0, 0, 9, 68, 64,
+			20, 5, 72, 21, 0, 47, 0, 0, 16, 65, 28, 90, 37, 81, 35, 112, 34, 47, 89, 0, 81, 104, 122, 32, 6, 65, 28, 90, 36, 0,
+			0, 0, 9, 67, 29, 147, 64, 90, 37, 65, 0, 9, 67, 28, 147, 128, 75, 37, 50, 0, 7, 195, 80, 243, 128, 72, 34, 0, 16, 70,
+			85, 4, 5, 72, 53, 84, 111, 48, 112, 34, 49, 117, 47, 0, 10, 68, 48, 245, 73, 76, 55, 58, 37, 0, 0, 7, 65, 32, 11, 35,
+			91, 0, 0, 0, 0, 0, 6, 65, 36, 11, 37, 0, 0, 8, 66, 37, 0, 37, 48, 36, 0, 10, 1, 37, 48, 40, 34, 89, 113, 0,
+			27, 0, 6, 195, 12, 20, 128, 37, 6, 195, 12, 20, 128, 72, 7, 1, 38, 36, 0, 72, 28, 0, 0, 6, 65, 40, 90, 37, 0, 0,
+			0, 8, 67, 76, 148, 128, 21, 0, 47, 14, 1, 42, 35, 89, 47, 36, 34, 37, 89, 49, 12, 0, 27, 0, 9, 1, 43, 48, 55, 111,
+			89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 3, 129, 47, 0, 13, 4, 95, 100, 105, 97, 47, 34, 36, 65, 6, 35, 0,
+			7, 65, 48, 11, 112, 55, 0, 0, 23, 1, 49, 48, 34, 13, 65, 57, 112, 34, 65, 113, 0, 81, 195, 168, 114, 101, 109, 101, 110, 116,
+			32, 19, 1, 49, 48, 34, 13, 65, 57, 112, 34, 143, 0, 81, 195, 168, 114, 101, 115, 32, 17, 1, 49, 48, 34, 13, 65, 57, 112, 34,
+			0, 81, 195, 168, 114, 101, 32, 16, 1, 49, 48, 34, 13, 65, 57, 36, 143, 0, 81, 101, 114, 115, 32, 15, 1, 49, 48, 34, 13, 65,
+			57, 36, 120, 0, 81, 101, 114, 32, 0, 0, 10, 68, 64, 242, 78, 28, 48, 58, 114, 0, 0, 7, 65, 52, 11, 112, 65, 0, 0, 17,
+			66, 53, 0, 23, 112, 65, 48, 36, 47, 34, 58, 35, 0, 81, 51, 32, 0, 0, 0, 7, 65, 56, 11, 112, 50, 0, 0, 0, 0, 0,
+			6, 65, 60, 11, 39, 0, 0, 0, 8, 197, 64, 51, 67, 36, 16, 13, 0, 0, 11, 1, 64, 24, 35, 34, 39, 71, 35, 88, 0, 6,
+			65, 64, 48, 36, 0, 0, 9, 198, 21, 84, 211, 20, 229, 0, 76, 0, 0, 0, 18, 67, 88, 152, 212, 84, 57, 112, 47, 50, 35, 65,
+			0, 81, 110, 97, 109, 32, 6, 65, 68, 49, 111, 0, 0, 0, 0, 4, 193, 116, 43, 0, 7, 65, 72, 11, 112, 34, 0, 0, 0, 0,
+			17, 70, 72, 84, 85, 36, 83, 64, 34, 36, 49, 111, 37, 57, 112, 65, 0, 17, 4, 95, 100, 111, 116, 48, 58, 114, 89, 111, 89, 49,
+			34, 6, 37, 0, 0, 7, 65, 76, 11, 112, 89, 0, 0, 23, 6, 113, 117, 39, 101, 115, 116, 49, 112, 89, 49, 13, 0, 72, 82, 99,
+			101, 32, 113, 117, 101, 32, 8, 195, 48, 85, 82, 72, 36, 40, 7, 195, 48, 85, 82, 72, 34, 0, 7, 195, 84, 225, 64, 34, 76, 0,
+			0, 14, 65, 80, 21, 0, 47, 81, 115, 104, 105, 114, 116, 115, 32, 13, 65, 80, 21, 0, 47, 81, 115, 104, 105, 114, 116, 32, 0, 5,
+			194, 4, 48, 13, 0, 6, 195, 12, 147, 192, 13, 0, 17, 71, 32, 85, 82, 80, 147, 206, 76, 23, 117, 34, 47, 57, 116, 143, 0, 0,
+			6, 65, 84, 11, 111, 0, 0, 7, 66, 85, 0, 21, 0, 47, 0, 0, 23, 67, 33, 69, 16, 35, 91, 47, 4, 36, 47, 4, 36, 48,
+			6, 36, 10, 0, 81, 58, 47, 47, 32, 0, 6, 65, 88, 84, 36, 0, 0, 15, 70, 44, 225, 83, 76, 85, 0, 49, 50, 36, 89, 112,
+			47, 0, 12, 66, 5, 48, 35, 47, 111, 0, 81, 116, 117, 32, 9, 66, 5, 48, 35, 143, 0, 76, 36, 7, 66, 5, 48, 35, 89, 0,
+			0, 0, 0, 8, 197, 16, 84, 21, 37, 48, 76, 15, 69, 72, 148, 195, 61, 48, 34, 37, 89, 49, 39, 112, 89, 0, 12, 65, 92, 72,
+			40, 71, 55, 13, 84, 6, 36, 0, 0, 0, 0, 10, 67, 24, 21, 84, 83, 39, 140, 0, 76, 0, 9, 68, 36, 228, 21, 80, 21, 0,
+			47, 10, 4, 95, 49, 77, 49, 65, 37, 55, 0, 8, 65, 96, 11, 37, 49, 89, 0, 0, 0, 11, 70, 56, 147, 148, 20, 225, 15, 21,
+			0, 47, 0, 0, 13, 65, 100, 23, 37, 81, 34, 6, 112, 49, 0, 49, 46, 5, 193, 100, 76, 32, 0, 0, 8, 67, 100, 84, 192, 21,
+			0, 47, 9, 67, 76, 20, 192, 89, 35, 89, 0, 10, 67, 48, 244, 192, 55, 39, 89, 0, 76, 0, 0, 7, 65, 104, 88, 112, 72, 0,
+			0, 7, 66, 5, 64, 21, 0, 47, 8, 196, 88, 245, 18, 20, 72, 34, 8, 196, 56, 245, 18, 20, 72, 34, 0, 0, 0, 13, 5, 100,
+			39, 101, 115, 116, 72, 6, 112, 89, 47, 0, 0, 8, 67, 61, 1, 78, 21, 0, 47, 0, 0, 0, 0, 16, 70, 100, 241, 207, 85, 37,
+			0, 23, 37, 39, 81, 40, 34, 47, 0, 10, 66, 12, 16, 89, 35, 0, 76, 41, 32, 0, 0, 0, 0, 0, 14, 69, 84, 37, 78, 81,
+			80, 40, 71, 40, 50, 47, 40, 0, 0, 8, 67, 69, 82, 84, 21, 0, 47, 0, 0, 6, 194, 5, 80, 72, 34, 0, 11, 67, 52, 84,
+			192, 65, 123, 143, 0, 72, 34, 0, 12, 68, 52, 19, 21, 76, 65, 35, 55, 111, 89, 0, 19, 71, 25, 32, 78, 12, 84, 195, 60, 83,
+			34, 113, 50, 91, 112, 89, 49, 39, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 7, 195, 5, 86, 0, 72, 34, 12,
+			4, 95, 116, 108, 100, 47, 6, 37, 55, 72, 0, 0, 0, 11, 68, 77, 84, 200, 36, 89, 40, 91, 37, 0, 15, 66, 8, 64, 98, 111,
+			117, 108, 101, 118, 97, 114, 100, 0, 29, 0, 0, 0, 0, 11, 68, 48, 83, 206, 20, 55, 36, 127, 50, 0, 13, 69, 52, 147, 15, 84,
+			64, 65, 37, 55, 40, 72, 0, 0, 0, 0, 0, 7, 196, 20, 229, 18, 20, 36, 7, 196, 20, 229, 18, 20, 76, 0, 0, 12, 67, 5,
+			98, 0, 35, 84, 4, 36, 35, 91, 0, 0, 0, 0, 7, 195, 77, 82, 83, 76, 36, 0, 10, 4, 95, 49, 67, 48, 89, 113, 140, 0,
+			0, 0, 7, 66, 8, 80, 21, 0, 47, 0, 16, 7, 107, 111, 119, 101, 195, 175, 116, 49, 39, 58, 112, 57, 47, 0, 6, 195, 57, 66,
+			64, 13, 0, 0, 16, 70, 9, 35, 215, 28, 194, 69, 98, 114, 101, 117, 105, 108, 0, 29, 0, 0, 0, 0, 16, 70, 65, 33, 77, 36,
+			84, 128, 48, 34, 13, 65, 57, 36, 120, 0, 6, 195, 69, 83, 201, 76, 0, 15, 70, 64, 130, 76, 37, 4, 192, 83, 37, 55, 37, 48,
+			89, 0, 0, 0, 0, 0, 13, 70, 16, 84, 211, 61, 84, 192, 72, 13, 89, 40, 0, 0, 9, 67, 9, 85, 0, 71, 111, 47, 0, 9,
+			67, 9, 85, 0, 71, 111, 0, 36, 0, 10, 67, 25, 81, 76, 83, 57, 40, 55, 0, 0, 0, 0, 12, 71, 52, 84, 211, 20, 225, 197,
+			72, 21, 0, 47, 17, 71, 77, 2, 9, 56, 53, 5, 72, 89, 83, 114, 49, 47, 112, 34, 0, 0, 10, 67, 25, 33, 68, 83, 34, 112,
+			72, 0, 0, 4, 193, 128, 43, 0, 0, 0, 0, 0, 13, 66, 17, 32, 72, 39, 49, 47, 132, 34, 0, 24, 41, 0, 9, 67, 21, 84,
+			192, 111, 143, 0, 76, 0, 6, 195, 88, 21, 88, 76, 17, 70, 65, 33, 83, 69, 81, 64, 48, 34, 112, 89, 49, 8, 13, 0, 76, 17,
+			70, 65, 82, 83, 69, 81, 64, 48, 111, 37, 89, 49, 8, 13, 0, 76, 0, 8, 67, 52, 17, 5, 21, 0, 47, 8, 67, 25, 33, 69,
+			21, 0, 47, 0, 19, 71, 29, 80, 84, 20, 208, 76, 4, 81, 58, 35, 47, 36, 65, 35, 55, 35, 0, 12, 68, 12, 147, 132, 100, 89,
+			37, 50, 72, 37, 0, 0, 0, 0, 0, 12, 66, 4, 144, 112, 90, 0, 76, 81, 106, 101, 32, 6, 194, 4, 144, 76, 36, 6, 194, 12,
+			80, 76, 34, 0, 7, 196, 5, 52, 197, 104, 76, 0, 0, 0, 13, 4, 95, 109, 99, 110, 65, 35, 49, 34, 6, 116, 0, 0, 7, 195,
+			4, 149, 0, 76, 36, 7, 195, 12, 85, 0, 72, 34, 0, 9, 67, 4, 150, 0, 112, 49, 89, 0, 16, 67, 80, 19, 148, 47, 113, 48,
+			37, 0, 76, 81, 112, 105, 115, 32, 19, 67, 80, 19, 148, 47, 113, 65, 57, 132, 0, 76, 81, 109, 105, 101, 117, 120, 32, 10, 67, 80,
+			19, 148, 47, 113, 140, 0, 76, 0, 16, 70, 76, 48, 78, 56, 84, 128, 89, 49, 35, 50, 117, 34, 0, 37, 16, 70, 76, 48, 78, 56,
+			84, 128, 89, 49, 35, 50, 36, 120, 0, 36, 15, 70, 16, 244, 16, 48, 84, 128, 72, 127, 48, 55, 112, 34, 0, 7, 196, 64, 242, 78,
+			80, 37, 7, 196, 64, 242, 78, 80, 76, 0, 0, 0, 13, 69, 12, 19, 131, 21, 32, 49, 113, 89, 112, 34, 0, 19, 72, 5, 35, 65,
+			28, 81, 4, 60, 224, 35, 34, 65, 35, 81, 36, 72, 116, 0, 18, 67, 12, 85, 88, 89, 132, 15, 55, 35, 0, 32, 76, 81, 108, 195,
+			160, 32, 17, 67, 12, 85, 88, 89, 132, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32, 6, 195, 12, 85, 88, 76, 0, 0, 18, 70, 76,
+			51, 210, 9, 85, 0, 115, 99, 111, 114, 98, 117, 116, 116, 0, 29, 0, 9, 67, 13, 85, 0, 49, 117, 47, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 15, 70, 76, 48, 78, 56, 84, 147, 89, 49, 35, 50, 117, 34, 0, 0, 9, 198, 69, 83, 201, 69, 81,
+			64, 72, 0, 0, 4, 193, 132, 43, 0, 10, 67, 76, 83, 147, 89, 113, 143, 0, 36, 9, 67, 76, 83, 147, 89, 113, 89, 0, 0, 0,
+			0, 6, 194, 16, 80, 72, 34, 0, 0, 0, 0, 12, 69, 9, 81, 7, 21, 64, 71, 111, 75, 112, 0, 0, 9, 67, 8, 149, 0, 71,
+			37, 47, 0, 6, 195, 52, 242, 64, 76, 6, 195, 12, 50, 64, 13, 0, 0, 0, 15, 69, 5, 162, 77, 85, 64, 35, 88, 37, 65, 6,
+			111, 47, 0, 8, 66, 21, 48, 112, 143, 0, 76, 9, 66, 17, 80, 72, 130, 0, 72, 34, 0, 0, 0, 0, 0, 9, 67, 21, 53, 0,
+			112, 140, 0, 76, 0, 14, 70, 12, 130, 69, 56, 194, 84, 91, 57, 113, 55, 37, 0, 0, 0, 7, 196, 64, 20, 141, 36, 76, 7, 196,
+			88, 242, 76, 108, 76, 0, 7, 195, 5, 97, 67, 76, 28, 0, 15, 3, 95, 35, 57, 47, 35, 71, 111, 55, 35, 89, 37, 116, 0, 0,
+			0, 0, 8, 197, 20, 224, 207, 72, 80, 76, 12, 67, 52, 228, 192, 65, 37, 50, 111, 47, 143, 0, 10, 67, 4, 197, 0, 24, 35, 55,
+			47, 0, 0, 11, 67, 69, 82, 68, 49, 58, 37, 72, 0, 76, 0, 0, 20, 68, 12, 83, 12, 20, 89, 112, 55, 15, 55, 35, 0, 32,
+			76, 81, 108, 195, 160, 32, 19, 68, 12, 83, 12, 20, 89, 112, 55, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32, 7, 196, 12, 83, 12,
+			20, 76, 7, 66, 21, 64, 36, 0, 76, 0, 0, 24, 11, 97, 117, 106, 111, 117, 114, 100, 39, 104, 117, 105, 97, 117, 106, 111, 117, 114,
+			100, 117, 105, 0, 29, 0, 0, 0, 14, 69, 52, 19, 1, 92, 144, 65, 35, 55, 35, 58, 37, 0, 6, 195, 76, 19, 147, 76, 4, 193,
+			136, 43, 0, 0, 0, 0, 9, 67, 61, 84, 147, 40, 34, 89, 0, 12, 67, 4, 209, 0, 35, 4, 112, 65, 72, 36, 0, 0, 23, 73,
+			81, 85, 20, 37, 21, 65, 57, 66, 64, 47, 40, 47, 37, 49, 58, 6, 35, 50, 47, 37, 0, 11, 67, 81, 35, 208, 47, 34, 39, 139,
+			0, 76, 0, 0, 13, 69, 60, 97, 147, 21, 64, 127, 83, 89, 112, 47, 0, 15, 70, 4, 225, 18, 60, 145, 0, 113, 72, 34, 39, 37,
+			72, 0, 0, 0, 7, 195, 76, 243, 148, 76, 36, 0, 0, 7, 66, 21, 80, 111, 0, 76, 0, 0, 22, 69, 4, 68, 204, 81, 96, 35,
+			72, 36, 112, 89, 6, 112, 55, 15, 47, 36, 84, 6, 36, 0, 0, 0, 0, 10, 67, 21, 85, 0, 111, 140, 0, 76, 36, 0, 9, 67,
+			21, 86, 0, 132, 143, 0, 76, 0, 12, 68, 90, 35, 149, 76, 84, 36, 50, 111, 89, 0, 0, 8, 67, 4, 225, 0, 21, 0, 47, 0,
+			6, 194, 128, 16, 76, 32, 0, 0, 10, 134, 102, 195, 187, 109, 101, 115, 76, 36, 0, 0, 16, 70, 10, 35, 1, 73, 84, 192, 71, 36,
+			55, 35, 34, 111, 89, 0, 6, 195, 64, 245, 82, 76, 0, 0, 0, 8, 197, 12, 243, 148, 72, 80, 76, 0, 10, 199, 64, 197, 83, 36,
+			85, 82, 76, 76, 0, 0, 0, 9, 67, 21, 81, 83, 111, 143, 0, 76, 0, 0, 16, 70, 48, 17, 84, 37, 66, 65, 55, 36, 47, 37,
+			89, 57, 35, 0, 6, 195, 5, 97, 192, 13, 0, 4, 193, 140, 43, 0, 0, 0, 11, 67, 4, 243, 0, 35, 4, 39, 112, 55, 0, 0,
+			0, 0, 14, 68, 80, 86, 1, 76, 47, 112, 49, 89, 6, 35, 89, 0, 0, 0, 0, 0, 0, 8, 67, 32, 19, 128, 23, 113, 0, 11,
+			68, 20, 225, 133, 72, 113, 83, 112, 34, 0, 0, 0, 11, 67, 25, 85, 0, 83, 111, 140, 0, 76, 36, 0, 0, 7, 195, 52, 243, 128,
+			72, 34, 0, 0, 0, 6, 194, 20, 128, 76, 28, 7, 66, 16, 160, 21, 0, 47, 0, 6, 195, 64, 20, 128, 76, 12, 67, 60, 52, 128,
+			39, 89, 4, 36, 112, 34, 0, 0, 0, 0, 0, 0, 0, 18, 3, 226, 132, 162, 65, 35, 34, 49, 72, 13, 83, 35, 71, 34, 37, 49,
+			0, 0, 0, 18, 71, 24, 83, 4, 77, 0, 84, 32, 83, 112, 55, 72, 89, 48, 35, 47, 0, 0, 19, 71, 88, 83, 133, 105, 81, 76,
+			4, 84, 36, 50, 36, 88, 111, 112, 55, 35, 0, 16, 70, 100, 241, 200, 61, 84, 148, 23, 37, 39, 81, 40, 34, 47, 0, 0, 6, 195,
+			76, 245, 83, 76, 0, 0, 4, 193, 144, 43, 4, 193, 144, 43, 0, 0, 0, 14, 70, 80, 130, 69, 73, 38, 64, 47, 57, 112, 34, 37,
+			0, 17, 66, 12, 208, 99, 101, 110, 116, 105, 109, 195, 168, 116, 114, 101, 0, 29, 0, 0, 14, 69, 12, 19, 153, 60, 224, 49, 35, 50,
+			57, 127, 50, 0, 0, 8, 67, 28, 85, 0, 21, 0, 47, 0, 0, 0, 21, 67, 80, 245, 84, 47, 40, 55, 47, 113, 0, 82, 108, 101,
+			32, 116, 101, 109, 112, 115, 32, 22, 67, 80, 245, 84, 47, 40, 55, 65, 116, 72, 0, 82, 108, 101, 32, 109, 111, 110, 100, 101, 32, 11,
+			67, 80, 245, 84, 47, 6, 40, 140, 0, 76, 0, 16, 70, 16, 84, 142, 36, 84, 128, 72, 112, 34, 50, 57, 36, 120, 0, 0, 0, 0,
+			14, 70, 64, 128, 76, 49, 84, 192, 83, 35, 55, 111, 89, 0, 0, 0, 0, 0, 0, 15, 70, 52, 21, 20, 32, 144, 83, 65, 35, 47,
+			57, 35, 89, 0, 0, 0, 0, 11, 70, 61, 85, 12, 60, 242, 192, 21, 0, 47, 0, 12, 71, 8, 197, 69, 80, 243, 212, 32, 21, 0,
+			47, 0, 0, 0, 0, 0, 0, 15, 67, 24, 147, 5, 21, 0, 47, 81, 122, 105, 108, 108, 97, 32, 11, 3, 226, 130, 172, 13, 34, 6,
+			39, 0, 76, 0, 0, 17, 70, 4, 197, 5, 72, 81, 207, 35, 55, 47, 112, 34, 36, 81, 39, 0, 7, 195, 88, 245, 83, 76, 32, 7,
+			195, 56, 245, 83, 76, 32, 0, 0, 7, 195, 12, 83, 1, 76, 32, 7, 195, 20, 195, 5, 76, 32, 19, 67, 52, 195, 5, 109, 97, 100,
+			101, 109, 111, 105, 115, 101, 108, 108, 101, 0, 29, 6, 195, 44, 65, 64, 13, 0, 12, 4, 102, 195, 187, 116, 83, 111, 140, 0, 76, 36,
+			0, 6, 195, 64, 197, 83, 76, 0, 7, 66, 32, 80, 21, 0, 47, 0, 0, 11, 67, 25, 33, 84, 83, 34, 6, 112, 47, 0, 0, 11,
+			68, 76, 51, 213, 80, 89, 49, 40, 47, 0, 14, 4, 95, 111, 103, 111, 39, 81, 39, 50, 6, 112, 49, 0, 0, 0, 0, 6, 195, 88,
+			21, 84, 76, 0, 0, 6, 195, 65, 35, 198, 24, 0, 0, 0, 0, 0, 0, 7, 196, 4, 147, 147, 36, 76, 0, 0, 5, 194, 20, 192,
+			76, 12, 3, 95, 50, 49, 84, 114, 47, 36, 12, 115, 0, 0, 9, 67, 64, 20, 192, 48, 35, 0, 37, 11, 67, 64, 20, 192, 48, 6,
+			35, 143, 0, 76, 9, 3, 95, 50, 48, 84, 114, 140, 0, 0, 14, 3, 95, 50, 51, 84, 114, 47, 47, 34, 58, 35, 143, 0, 0, 12,
+			3, 95, 50, 50, 84, 114, 47, 72, 132, 143, 0, 0, 12, 3, 95, 50, 53, 84, 114, 47, 89, 114, 49, 0, 0, 8, 67, 32, 148, 192,
+			21, 0, 47, 13, 3, 95, 50, 52, 84, 114, 47, 49, 35, 47, 34, 0, 0, 17, 67, 56, 244, 132, 50, 39, 34, 112, 89, 47, 0, 81,
+			101, 115, 116, 32, 12, 3, 95, 50, 55, 84, 114, 47, 89, 112, 47, 0, 0, 12, 3, 95, 50, 54, 84, 114, 47, 89, 37, 144, 0, 0,
+			16, 70, 137, 98, 84, 36, 243, 147, 36, 84, 37, 47, 57, 116, 143, 0, 7, 66, 37, 64, 21, 0, 47, 13, 3, 95, 51, 49, 47, 34,
+			113, 47, 36, 12, 115, 0, 12, 4, 95, 98, 114, 118, 71, 34, 6, 112, 84, 0, 0, 0, 4, 193, 152, 43, 0, 6, 195, 80, 245, 83,
+			76, 0, 20, 4, 95, 97, 99, 50, 72, 40, 71, 55, 35, 49, 89, 113, 47, 112, 81, 6, 111, 0, 0, 0, 15, 69, 4, 208, 90, 60,
+			224, 35, 65, 35, 88, 6, 127, 50, 0, 0, 0, 7, 66, 16, 240, 21, 0, 47, 0, 12, 67, 20, 211, 0, 13, 4, 112, 65, 112, 55,
+			0, 0, 0, 9, 67, 16, 245, 0, 72, 127, 47, 0, 11, 68, 69, 80, 78, 80, 49, 113, 140, 0, 72, 0, 0, 9, 197, 76, 243, 77,
+			21, 48, 76, 36, 0, 0, 0, 0, 8, 197, 40, 19, 65, 37, 48, 76, 0, 0, 0, 0, 0, 0, 16, 70, 32, 243, 132, 85, 32, 83,
+			23, 116, 72, 111, 34, 35, 89, 0, 8, 67, 20, 225, 0, 21, 0, 47, 0, 17, 66, 20, 224, 113, 15, 47, 40, 143, 0, 76, 81, 116,
+			111, 117, 115, 32, 7, 194, 20, 224, 76, 36, 40, 5, 194, 20, 224, 76, 10, 199, 80, 245, 84, 20, 99, 201, 76, 76, 5, 194, 20, 224,
+			72, 15, 3, 95, 54, 49, 89, 58, 35, 89, 113, 47, 36, 12, 115, 0, 0, 10, 134, 101, 195, 187, 116, 101, 115, 76, 36, 10, 3, 95,
+			51, 88, 47, 34, 113, 47, 0, 0, 15, 69, 44, 192, 88, 60, 224, 49, 55, 35, 49, 89, 127, 50, 0, 16, 70, 21, 66, 5, 72, 225,
+			84, 36, 47, 112, 34, 50, 112, 47, 0, 8, 3, 95, 48, 67, 89, 113, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 55, 49, 89, 112,
+			48, 47, 113, 47, 36, 12, 115, 0, 102, 16, 3, 95, 55, 49, 89, 58, 35, 89, 113, 47, 36, 12, 116, 88, 0, 0, 0, 0, 0, 0,
+			8, 67, 32, 84, 133, 21, 0, 47, 10, 67, 77, 65, 64, 89, 6, 114, 47, 0, 0, 0, 0, 19, 66, 48, 16, 55, 121, 15, 55, 132,
+			34, 0, 76, 32, 81, 108, 101, 117, 114, 32, 6, 194, 40, 80, 72, 32, 10, 66, 48, 16, 55, 121, 0, 36, 40, 72, 9, 66, 48, 16,
+			55, 121, 0, 34, 76, 12, 3, 95, 49, 57, 72, 37, 88, 50, 117, 83, 0, 0, 11, 67, 5, 2, 64, 35, 48, 4, 36, 37, 0, 12,
+			3, 95, 49, 56, 72, 37, 88, 111, 37, 141, 0, 0, 15, 67, 80, 86, 20, 21, 0, 47, 81, 97, 108, 111, 117, 100, 32, 11, 67, 21,
+			130, 84, 36, 81, 88, 37, 47, 0, 0, 7, 196, 5, 96, 78, 80, 76, 0, 8, 196, 20, 195, 5, 76, 76, 32, 0, 0, 0, 15, 70,
+			77, 67, 195, 44, 84, 128, 89, 47, 39, 49, 36, 120, 0, 0, 12, 3, 95, 50, 57, 84, 114, 47, 50, 117, 83, 0, 9, 3, 95, 49,
+			49, 23, 116, 88, 0, 0, 12, 68, 56, 145, 197, 72, 50, 37, 90, 112, 34, 0, 12, 3, 95, 50, 56, 84, 114, 47, 111, 37, 141, 0,
+			9, 3, 95, 49, 48, 72, 37, 144, 0, 0, 12, 70, 40, 16, 209, 84, 84, 192, 90, 35, 49, 0, 10, 3, 95, 49, 51, 47, 34, 112,
+			88, 0, 0, 9, 3, 95, 49, 50, 72, 40, 88, 0, 0, 9, 3, 95, 49, 53, 49, 114, 88, 0, 0, 12, 3, 95, 49, 52, 49, 35,
+			47, 127, 34, 88, 0, 0, 11, 3, 95, 49, 55, 72, 37, 89, 112, 47, 0, 0, 9, 3, 95, 49, 54, 89, 112, 88, 0, 0, 0, 7,
+			195, 25, 84, 192, 76, 36, 13, 3, 95, 55, 88, 89, 112, 48, 47, 113, 47, 0, 102, 0, 12, 68, 52, 81, 9, 4, 65, 36, 72, 57,
+			35, 0, 0, 0, 0, 9, 67, 9, 84, 192, 71, 111, 0, 36, 9, 67, 9, 84, 192, 71, 111, 89, 0, 0, 13, 69, 137, 66, 79, 57,
+			48, 36, 47, 57, 116, 143, 0, 0, 0, 10, 66, 33, 160, 23, 112, 34, 47, 89, 0, 0, 18, 9, 113, 117, 101, 108, 113, 117, 39, 117,
+			110, 49, 112, 55, 49, 115, 0, 76, 0, 0, 16, 70, 64, 20, 148, 36, 243, 147, 48, 35, 34, 47, 57, 116, 143, 0, 8, 67, 28, 83,
+			147, 90, 113, 0, 0, 0, 16, 4, 95, 97, 99, 117, 35, 49, 89, 113, 47, 112, 81, 6, 111, 0, 0, 0, 0, 9, 66, 52, 16, 65,
+			121, 0, 72, 34, 14, 3, 95, 52, 49, 49, 35, 34, 113, 47, 36, 12, 115, 0, 0, 14, 67, 52, 134, 128, 65, 36, 81, 35, 112, 34,
+			47, 89, 0, 0, 4, 193, 160, 43, 0, 11, 68, 76, 131, 210, 80, 91, 127, 34, 47, 0, 9, 67, 52, 21, 0, 65, 35, 47, 0, 0,
+			11, 67, 65, 40, 83, 48, 34, 112, 143, 0, 76, 0, 0, 10, 67, 16, 243, 148, 72, 116, 140, 0, 72, 0, 19, 68, 76, 18, 78, 80,
+			89, 114, 49, 55, 40, 0, 81, 99, 108, 111, 117, 100, 32, 0, 12, 68, 4, 64, 77, 76, 35, 72, 35, 65, 89, 0, 14, 3, 95, 53,
+			49, 89, 114, 49, 113, 47, 36, 12, 115, 0, 0, 0, 0, 0, 0, 0, 0, 21, 2, 50, 49, 84, 114, 47, 36, 12, 111, 50, 37, 112,
+			65, 0, 81, 195, 168, 109, 101, 32, 0, 0, 0, 12, 68, 44, 83, 153, 4, 49, 36, 50, 57, 35, 0, 0, 18, 5, 115, 46, 116, 46,
+			112, 89, 37, 55, 47, 13, 12, 48, 55, 6, 112, 0, 0, 14, 70, 52, 22, 79, 81, 65, 64, 65, 35, 57, 127, 47, 0, 0, 6, 195,
+			92, 208, 64, 13, 0, 22, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 116, 134, 0, 76, 81, 113, 117, 39, 111, 110, 32, 26, 68, 64,
+			20, 131, 20, 48, 35, 34, 89, 49, 112, 55, 143, 0, 76, 81, 113, 117, 39, 101, 108, 108, 101, 115, 32, 24, 68, 64, 20, 131, 20, 48,
+			35, 34, 89, 49, 112, 55, 0, 76, 81, 113, 117, 39, 101, 108, 108, 101, 32, 24, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 37, 55,
+			143, 0, 76, 81, 113, 117, 39, 105, 108, 115, 32, 22, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 37, 55, 0, 76, 81, 113, 117, 39,
+			105, 108, 32, 19, 68, 64, 20, 131, 20, 48, 35, 34, 89, 49, 13, 0, 76, 81, 113, 117, 101, 32, 18, 3, 112, 46, 115, 48, 127, 89,
+			47, 89, 49, 34, 37, 48, 47, 127, 65, 0, 13, 3, 95, 63, 63, 89, 114, 71, 6, 39, 55, 55, 0, 0, 22, 2, 51, 49, 47, 34,
+			113, 47, 36, 12, 111, 50, 37, 112, 65, 0, 81, 195, 168, 109, 101, 32, 0, 16, 70, 69, 81, 76, 69, 81, 64, 49, 112, 55, 49, 8,
+			13, 0, 76, 10, 66, 53, 32, 65, 13, 89, 37, 132, 0, 0, 8, 67, 48, 149, 5, 21, 0, 47, 11, 3, 95, 52, 88, 49, 35, 34,
+			113, 47, 0, 0, 0, 0, 12, 69, 8, 22, 69, 85, 128, 71, 35, 57, 132, 0, 0, 10, 67, 8, 85, 1, 71, 36, 47, 35, 0, 7,
+			195, 4, 145, 64, 76, 36, 0, 0, 23, 2, 52, 49, 49, 35, 34, 113, 47, 36, 12, 111, 50, 37, 112, 65, 0, 81, 195, 168, 109, 101,
+			32, 0, 19, 66, 48, 80, 55, 14, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 32, 7, 194, 48, 80, 36, 40, 72, 6, 194,
+			48, 80, 34, 76, 16, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 109, 101, 0, 29, 0, 6, 195, 64, 50, 64, 13, 14, 3, 95,
+			56, 48, 49, 35, 47, 34, 13, 84, 114, 143, 0, 11, 3, 95, 53, 88, 89, 114, 49, 113, 47, 0, 0, 0, 9, 67, 56, 21, 0, 50,
+			35, 47, 0, 8, 67, 48, 85, 0, 21, 0, 47, 15, 4, 95, 114, 110, 103, 34, 116, 140, 113, 91, 6, 112, 83, 0, 0, 16, 70, 88,
+			19, 149, 5, 69, 64, 84, 35, 50, 40, 35, 47, 40, 0, 13, 69, 52, 22, 143, 85, 64, 65, 35, 88, 40, 47, 0, 9, 68, 64, 245,
+			76, 76, 48, 40, 0, 0, 8, 67, 25, 35, 205, 21, 0, 47, 8, 67, 52, 18, 64, 65, 112, 0, 0, 8, 67, 32, 83, 16, 21, 0,
+			47, 15, 70, 40, 16, 203, 64, 245, 0, 75, 35, 49, 48, 127, 47, 0, 0, 23, 2, 53, 49, 89, 114, 49, 113, 47, 36, 12, 111, 50,
+			37, 112, 65, 0, 81, 195, 168, 109, 101, 32, 0, 14, 69, 76, 245, 137, 21, 64, 89, 39, 84, 37, 112, 47, 0, 12, 68, 4, 195, 210,
+			76, 35, 55, 127, 34, 0, 76, 23, 68, 80, 83, 80, 76, 47, 113, 88, 113, 47, 113, 0, 82, 101, 110, 32, 116, 101, 109, 112, 115, 32,
+			14, 66, 45, 112, 107, 105, 108, 111, 119, 97, 116, 116, 0, 29, 15, 3, 95, 57, 49, 50, 39, 50, 113, 47, 36, 12, 115, 0, 102, 0,
+			16, 67, 60, 83, 64, 11, 4, 39, 11, 4, 13, 11, 6, 112, 65, 0, 12, 3, 95, 54, 88, 89, 58, 35, 89, 113, 47, 0, 0, 10,
+			69, 52, 20, 16, 21, 32, 21, 0, 47, 0, 0, 0, 0, 0, 24, 2, 54, 49, 89, 58, 35, 89, 113, 47, 36, 12, 111, 50, 37, 112,
+			65, 0, 81, 195, 168, 109, 101, 32, 0, 6, 194, 36, 192, 76, 32, 0, 0, 0, 11, 69, 16, 83, 135, 84, 80, 72, 114, 81, 0, 0,
+			0, 0, 7, 196, 80, 83, 12, 20, 76, 0, 15, 70, 136, 195, 209, 84, 83, 148, 36, 55, 39, 49, 113, 140, 0, 10, 69, 16, 83, 5,
+			80, 80, 21, 0, 47, 0, 0, 14, 3, 95, 56, 88, 49, 35, 47, 34, 13, 84, 114, 12, 0, 0, 0, 10, 67, 16, 19, 147, 72, 113,
+			143, 0, 76, 0, 0, 0, 6, 195, 69, 81, 76, 76, 0, 24, 2, 56, 49, 49, 35, 47, 34, 13, 84, 114, 12, 111, 50, 37, 112, 65,
+			0, 81, 195, 168, 109, 101, 32, 0, 6, 194, 52, 80, 72, 32, 0, 11, 70, 76, 19, 69, 80, 147, 69, 21, 0, 47, 12, 3, 95, 57,
+			88, 50, 39, 50, 113, 47, 0, 102, 0, 0, 8, 67, 32, 245, 0, 21, 0, 47, 0, 15, 69, 21, 131, 195, 21, 64, 112, 81, 88, 39,
+			89, 112, 47, 0, 0, 0, 10, 67, 44, 20, 148, 49, 35, 34, 47, 0, 0, 0, 11, 3, 95, 63, 65, 55, 6, 112, 47, 34, 0, 0,
+			9, 198, 64, 245, 82, 69, 83, 201, 76, 0, 10, 69, 8, 85, 20, 21, 32, 21, 0, 47, 14, 69, 64, 243, 4, 21, 32, 48, 127, 55,
+			72, 112, 34, 0, 0, 0, 0, 0, 0, 11, 4, 95, 115, 116, 107, 71, 6, 35, 34, 0, 0, 16, 70, 40, 83, 142, 36, 97, 82, 90,
+			36, 50, 37, 83, 112, 34, 0, 16, 70, 28, 19, 135, 77, 65, 82, 81, 113, 81, 89, 47, 112, 34, 0, 0, 7, 66, 36, 224, 21, 0,
+			47, 0, 22, 67, 92, 80, 128, 119, 101, 98, 118, 105, 115, 117, 109, 0, 29, 81, 118, 105, 115, 117, 109, 32, 0, 0, 0, 0, 10, 69,
+			28, 243, 199, 48, 80, 21, 0, 47, 0, 0, 18, 71, 77, 69, 84, 80, 112, 82, 80, 91, 47, 40, 47, 81, 35, 34, 47, 0, 0, 0,
+			15, 70, 80, 83, 148, 36, 243, 147, 47, 113, 47, 57, 116, 143, 0, 9, 67, 52, 83, 147, 65, 113, 143, 0, 10, 67, 52, 20, 147, 65,
+			35, 34, 89, 0, 0, 12, 67, 16, 149, 152, 72, 37, 84, 37, 49, 89, 0, 0, 0, 19, 72, 8, 19, 135, 48, 17, 5, 76, 128, 71,
+			113, 81, 55, 35, 72, 112, 91, 0, 21, 72, 18, 36, 197, 73, 66, 79, 57, 48, 72, 36, 88, 112, 34, 47, 57, 116, 143, 0, 36, 0,
+			0, 0, 0, 6, 194, 56, 80, 72, 32, 0, 10, 67, 61, 82, 64, 23, 58, 37, 0, 76, 0, 9, 196, 48, 85, 82, 76, 72, 36, 40,
+			8, 196, 48, 85, 82, 76, 76, 34, 19, 67, 16, 84, 20, 100, 195, 169, 112, 97, 114, 116, 101, 109, 101, 110, 116, 0, 29, 0, 0, 0,
+			15, 68, 13, 144, 133, 72, 21, 0, 47, 81, 108, 105, 110, 107, 32, 9, 67, 56, 85, 0, 50, 112, 47, 0, 7, 196, 29, 88, 82, 20,
+			76, 0, 9, 67, 32, 20, 148, 35, 34, 47, 0, 0, 0, 22, 4, 95, 99, 105, 114, 35, 49, 89, 113, 89, 37, 34, 49, 116, 83, 55,
+			6, 112, 49, 89, 0, 4, 193, 172, 43, 0, 0, 0, 10, 69, 52, 18, 76, 80, 240, 21, 0, 47, 0, 12, 4, 95, 48, 77, 50, 65,
+			37, 55, 57, 116, 0, 0, 9, 67, 56, 243, 128, 50, 116, 0, 76, 13, 4, 95, 48, 77, 51, 65, 37, 55, 57, 35, 34, 0, 0, 0,
+			10, 4, 95, 48, 77, 49, 65, 37, 55, 0, 0, 0, 0, 0, 0, 12, 68, 76, 19, 79, 4, 89, 35, 65, 39, 35, 0, 11, 68, 28,
+			227, 205, 20, 81, 50, 127, 65, 0, 0, 6, 195, 24, 244, 128, 76, 11, 67, 85, 4, 192, 111, 48, 36, 112, 89, 0, 0, 0, 0, 17,
+			66, 65, 32, 112, 114, 111, 102, 101, 115, 115, 101, 117, 114, 0, 41, 29, 0, 15, 4, 95, 108, 105, 103, 55, 37, 81, 35, 47, 6, 111,
+			34, 0, 0, 0, 10, 5, 97, 111, 195, 187, 116, 40, 47, 0, 15, 70, 52, 84, 135, 84, 86, 128, 65, 112, 34, 81, 112, 88, 0, 0,
+			23, 73, 21, 132, 12, 60, 149, 9, 60, 228, 192, 112, 49, 89, 48, 55, 58, 35, 47, 57, 116, 143, 0, 21, 73, 12, 243, 147, 80, 21,
+			9, 60, 228, 192, 49, 116, 89, 47, 35, 47, 57, 116, 143, 0, 0, 0, 0, 0, 25, 66, 44, 208, 49, 35, 4, 112, 65, 48, 55, 112,
+			57, 6, 117, 34, 0, 81, 112, 108, 97, 121, 101, 114, 32, 16, 66, 44, 208, 107, 105, 108, 111, 109, 195, 168, 116, 114, 101, 0, 29, 0,
+			0, 0, 13, 69, 92, 19, 12, 37, 48, 58, 35, 55, 37, 89, 0, 14, 69, 64, 19, 1, 61, 48, 48, 35, 55, 35, 127, 89, 0, 12,
+			68, 77, 67, 213, 80, 89, 47, 35, 40, 47, 0, 14, 69, 32, 84, 141, 21, 48, 23, 112, 34, 65, 112, 89, 0, 0, 0, 0, 9, 68,
+			8, 197, 69, 76, 21, 0, 47, 0, 8, 197, 80, 83, 12, 21, 48, 76, 21, 69, 12, 83, 12, 21, 48, 89, 112, 55, 15, 55, 35, 0,
+			32, 76, 81, 108, 195, 160, 32, 20, 69, 12, 83, 12, 21, 48, 89, 112, 55, 15, 89, 37, 0, 32, 76, 81, 99, 105, 32, 8, 197, 12,
+			83, 12, 21, 48, 76, 0, 8, 66, 61, 80, 40, 0, 72, 28, 13, 66, 69, 16, 113, 117, 101, 108, 113, 117, 101, 0, 29, 0, 0, 0,
+			0, 0, 9, 67, 61, 85, 0, 35, 40, 47, 0, 0, 0, 17, 70, 104, 147, 66, 4, 37, 197, 88, 37, 65, 71, 35, 71, 58, 36, 0,
+			0, 0, 6, 195, 64, 64, 64, 13, 0, 0, 17, 5, 115, 46, 118, 46, 112, 89, 37, 55, 84, 129, 48, 55, 6, 112, 0, 0, 0, 21,
+			67, 52, 16, 192, 65, 35, 49, 39, 112, 89, 37, 49, 89, 0, 82, 111, 115, 32, 120, 32, 0, 0, 0, 0, 8, 67, 28, 20, 147, 81,
+			35, 0, 6, 195, 57, 50, 83, 13, 0, 0, 0, 0, 0, 13, 4, 95, 99, 101, 100, 89, 36, 72, 6, 37, 57, 0, 0, 25, 5, 110,
+			39, 101, 115, 116, 50, 6, 112, 89, 15, 48, 6, 35, 143, 0, 82, 99, 101, 32, 112, 97, 115, 32, 0, 12, 68, 49, 82, 71, 36, 55,
+			58, 37, 75, 37, 0, 5, 194, 56, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 36, 35, 64, 37, 71, 4, 36, 6, 112,
+			65, 0, 0, 16, 4, 95, 99, 97, 112, 65, 35, 90, 111, 89, 49, 6, 111, 55, 0, 0, 0, 0, 8, 67, 77, 83, 128, 21, 0, 47,
+			0, 0, 16, 70, 77, 84, 208, 20, 228, 197, 89, 111, 89, 48, 112, 50, 89, 0, 0, 0, 0, 12, 3, 95, 194, 181, 65, 37, 49, 34,
+			6, 39, 0, 0, 0, 7, 196, 5, 85, 18, 20, 76, 0, 9, 67, 52, 20, 192, 65, 35, 89, 0, 6, 195, 77, 84, 128, 76, 7, 195,
+			88, 244, 192, 72, 34, 7, 195, 56, 244, 192, 72, 34, 11, 67, 76, 84, 192, 89, 123, 143, 0, 72, 34, 11, 67, 12, 84, 192, 89, 36,
+			143, 0, 72, 34, 0, 0, 0, 0, 6, 131, 95, 195, 180, 43, 0, 0, 0, 17, 3, 95, 194, 171, 40, 84, 34, 36, 15, 81, 37, 57,
+			65, 6, 112, 0, 0, 6, 195, 28, 229, 64, 13, 8, 67, 101, 97, 83, 37, 84, 0, 7, 195, 76, 242, 83, 76, 36, 8, 197, 9, 35,
+			20, 81, 144, 13, 0, 0, 0, 9, 66, 76, 16, 89, 121, 0, 72, 34, 17, 66, 52, 208, 109, 105, 108, 108, 105, 109, 195, 168, 116, 114,
+			101, 0, 29, 13, 3, 95, 194, 167, 89, 112, 49, 89, 57, 6, 116, 0, 0, 19, 70, 12, 19, 22, 4, 67, 211, 99, 97, 108, 118, 97,
+			100, 111, 115, 115, 0, 29, 0, 11, 67, 9, 37, 84, 71, 34, 6, 111, 47, 0, 0, 14, 69, 64, 20, 212, 37, 48, 48, 35, 89, 47,
+			37, 89, 0, 0, 6, 195, 76, 20, 0, 13, 0, 8, 67, 28, 81, 75, 21, 0, 47, 0, 0, 11, 69, 28, 147, 12, 21, 48, 90, 37,
+			55, 0, 13, 69, 8, 148, 211, 85, 48, 71, 37, 89, 111, 89, 0, 0, 0, 14, 69, 81, 85, 129, 49, 80, 47, 40, 84, 35, 55, 40,
+			0, 0, 0, 0, 0, 6, 131, 95, 195, 160, 43, 0, 0, 0, 10, 66, 52, 224, 65, 37, 50, 111, 47, 0, 0, 0, 38, 70, 36, 229,
+			5, 72, 225, 84, 114, 47, 112, 34, 50, 6, 112, 47, 15, 112, 49, 89, 48, 55, 127, 34, 6, 117, 34, 0, 81, 101, 120, 112, 108, 111,
+			114, 101, 114, 32, 17, 70, 36, 229, 5, 72, 225, 84, 114, 47, 112, 34, 50, 6, 112, 47, 0, 17, 70, 52, 20, 135, 5, 33, 84, 65,
+			35, 34, 81, 35, 34, 112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 57, 83, 12, 21, 0, 47, 15, 70, 13, 147, 148, 32,
+			144, 64, 89, 37, 50, 47, 37, 35, 0, 0, 14, 67, 96, 96, 197, 37, 49, 89, 112, 83, 89, 36, 13, 0, 0, 0, 0, 14, 69, 16,
+			80, 137, 4, 224, 72, 36, 71, 57, 35, 50, 0, 0, 6, 195, 72, 144, 65, 13, 0, 9, 66, 60, 176, 39, 49, 36, 0, 76, 9, 66,
+			80, 16, 47, 121, 0, 72, 34, 0, 12, 68, 48, 20, 197, 72, 55, 35, 88, 112, 34, 0, 0, 15, 70, 52, 144, 200, 4, 83, 0, 65,
+			37, 49, 35, 112, 55, 0, 0, 0, 16, 70, 4, 225, 197, 48, 84, 192, 113, 50, 90, 36, 55, 112, 89, 0, 13, 70, 12, 128, 82, 48,
+			84, 192, 91, 35, 34, 55, 0, 16, 70, 4, 192, 137, 56, 244, 192, 35, 55, 71, 37, 50, 39, 89, 0, 0, 0, 16, 70, 64, 21, 1,
+			69, 88, 83, 48, 35, 47, 35, 49, 112, 89, 0, 0, 0, 0, 0, 14, 69, 88, 148, 135, 36, 224, 84, 37, 34, 90, 37, 50, 0, 0,
+			0, 14, 70, 52, 243, 147, 36, 85, 82, 65, 13, 89, 57, 132, 0, 18, 3, 95, 194, 187, 83, 112, 34, 65, 36, 15, 81, 37, 57, 65,
+			6, 112, 0, 0, 9, 67, 73, 85, 0, 34, 111, 47, 0, 15, 70, 12, 245, 83, 12, 245, 83, 49, 40, 89, 49, 40, 89, 0, 0, 12,
+			68, 92, 20, 137, 60, 58, 35, 34, 57, 39, 0, 0, 0, 0, 9, 67, 29, 84, 192, 81, 111, 89, 0, 15, 67, 69, 20, 192, 113, 117,
+			101, 108, 113, 117, 101, 115, 0, 29, 0, 0, 0, 16, 4, 95, 103, 114, 118, 35, 49, 89, 113, 81, 34, 6, 35, 84, 0, 0, 9, 67,
+			77, 84, 192, 89, 111, 0, 36, 9, 67, 77, 84, 192, 89, 111, 89, 0, 0, 15, 70, 13, 35, 193, 80, 145, 64, 49, 34, 39, 35, 89,
+			37, 0, 17, 70, 48, 244, 147, 69, 81, 64, 55, 127, 34, 89, 49, 8, 13, 0, 76, 0, 20, 2, 195, 151, 65, 111, 55, 47, 37, 48,
+			55, 37, 6, 36, 10, 48, 6, 35, 34, 0, 0, 17, 66, 77, 64, 89, 114, 49, 55, 40, 0, 81, 99, 108, 111, 117, 100, 32, 9, 66,
+			77, 64, 89, 6, 114, 140, 0, 0, 0, 0, 6, 195, 57, 97, 1, 13, 0, 10, 67, 4, 192, 78, 35, 55, 35, 50, 0, 16, 67, 77,
+			68, 0, 89, 37, 55, 47, 13, 12, 48, 55, 6, 112, 0, 0, 0, 22, 2, 194, 166, 89, 36, 48, 35, 34, 35, 47, 117, 34, 15, 84,
+			112, 47, 37, 49, 35, 55, 0, 0, 0, 6, 194, 76, 80, 72, 32, 0, 8, 2, 194, 165, 57, 112, 50, 0, 0, 10, 69, 60, 194, 86,
+			21, 32, 21, 0, 47, 6, 195, 76, 242, 84, 76, 6, 131, 111, 195, 185, 76, 11, 67, 81, 40, 83, 47, 34, 112, 143, 0, 76, 9, 2,
+			194, 162, 89, 112, 50, 47, 0, 0, 9, 2, 194, 163, 55, 37, 84, 34, 0, 0, 15, 70, 8, 18, 1, 52, 20, 192, 71, 35, 35, 65,
+			35, 89, 0, 29, 67, 12, 129, 70, 99, 104, 195, 169, 100, 101, 117, 118, 114, 101, 115, 0, 29, 81, 100, 39, 111, 101, 117, 118, 114, 101,
+			115, 32, 27, 67, 12, 129, 70, 99, 104, 195, 169, 100, 101, 117, 118, 114, 101, 0, 29, 81, 100, 39, 111, 101, 117, 118, 114, 101, 32, 9,
+			198, 69, 81, 76, 48, 84, 192, 76, 0, 8, 67, 56, 245, 0, 21, 0, 47, 9, 67, 76, 85, 0, 89, 112, 47, 0, 0, 12, 68, 56,
+			85, 137, 76, 50, 36, 84, 37, 89, 0, 16, 2, 194, 174, 65, 35, 34, 49, 72, 36, 48, 39, 88, 6, 36, 0, 0, 9, 68, 64, 18,
+			78, 80, 21, 0, 47, 10, 2, 194, 175, 65, 35, 49, 34, 116, 0, 0, 16, 70, 72, 21, 9, 60, 228, 192, 34, 35, 47, 57, 116, 143,
+			0, 36, 15, 70, 16, 21, 9, 60, 228, 192, 72, 35, 47, 57, 116, 143, 0, 8, 67, 76, 48, 78, 21, 0, 47, 11, 70, 12, 243, 12,
+			36, 228, 192, 21, 0, 47, 20, 2, 194, 172, 47, 37, 34, 112, 10, 83, 35, 49, 111, 55, 47, 35, 47, 37, 83, 0, 5, 130, 195, 164,
+			43, 0, 17, 67, 77, 81, 0, 89, 111, 72, 112, 89, 47, 0, 81, 101, 115, 116, 32, 0, 15, 71, 76, 128, 77, 64, 242, 78, 28, 91,
+			113, 48, 58, 114, 0, 0, 12, 2, 197, 147, 39, 15, 13, 15, 55, 37, 36, 0, 0, 0, 7, 2, 194, 169, 21, 0, 47, 0, 13, 2,
+			194, 182, 48, 35, 34, 35, 81, 34, 35, 83, 0, 0, 10, 134, 102, 195, 187, 116, 101, 115, 76, 36, 8, 2, 194, 183, 48, 58, 114, 0,
+			5, 130, 195, 175, 43, 0, 17, 72, 52, 243, 148, 76, 84, 146, 5, 64, 65, 116, 89, 36, 34, 35, 0, 14, 70, 52, 245, 76, 61, 81,
+			0, 65, 40, 55, 40, 72, 0, 9, 66, 60, 224, 116, 134, 0, 76, 32, 0, 6, 195, 4, 32, 192, 13, 0, 16, 2, 194, 178, 48, 111,
+			37, 89, 6, 113, 89, 15, 72, 6, 132, 0, 0, 16, 2, 194, 179, 48, 111, 37, 89, 113, 89, 15, 47, 34, 58, 35, 0, 0, 0, 7,
+			195, 60, 229, 0, 76, 36, 15, 2, 194, 177, 48, 55, 6, 111, 88, 40, 65, 58, 6, 114, 0, 0, 14, 70, 64, 245, 82, 12, 83, 148,
+			48, 40, 34, 89, 113, 0, 16, 70, 44, 20, 129, 60, 177, 64, 49, 35, 34, 35, 39, 49, 36, 0, 16, 70, 9, 35, 199, 48, 145, 64,
+			98, 114, 101, 117, 105, 108, 0, 29, 14, 2, 194, 190, 47, 34, 58, 35, 10, 49, 6, 35, 34, 0, 0, 9, 67, 4, 64, 77, 35, 72,
+			113, 0, 12, 67, 85, 35, 0, 111, 12, 112, 34, 112, 55, 0, 27, 2, 194, 191, 48, 58, 114, 15, 72, 114, 47, 36, 34, 39, 81, 35,
+			89, 57, 116, 15, 114, 84, 112, 34, 89, 36, 0, 17, 2, 195, 183, 72, 37, 84, 37, 88, 6, 36, 10, 48, 6, 35, 34, 0, 0, 10,
+			67, 60, 208, 78, 39, 65, 35, 50, 0, 6, 130, 195, 180, 49, 43, 11, 2, 194, 188, 115, 10, 49, 6, 35, 34, 0, 0, 12, 2, 194,
+			189, 115, 10, 72, 13, 65, 6, 37, 0, 0, 20, 73, 9, 32, 90, 104, 21, 137, 48, 193, 64, 71, 34, 35, 88, 35, 84, 37, 55, 0,
+			10, 2, 194, 186, 72, 13, 81, 34, 36, 0, 0, 0, 15, 67, 77, 100, 0, 89, 37, 55, 84, 129, 48, 55, 6, 112, 0, 10, 2, 194,
+			184, 89, 36, 72, 37, 57, 0, 0, 12, 67, 60, 225, 192, 39, 4, 112, 50, 90, 36, 0, 5, 130, 195, 177, 43, 0, 0, 6, 195, 80,
+			83, 0, 76, 0, 6, 194, 80, 80, 72, 32, 0, 17, 70, 48, 148, 212, 8, 246, 0, 55, 37, 89, 47, 71, 127, 49, 89, 0, 6, 195,
+			76, 242, 64, 76, 0, 13, 69, 9, 81, 134, 21, 32, 71, 132, 83, 117, 34, 0, 0, 13, 68, 5, 4, 161, 76, 35, 48, 34, 112, 143,
+			0, 76, 5, 130, 195, 187, 43, 0, 14, 69, 32, 19, 76, 21, 64, 23, 35, 65, 55, 112, 47, 0, 8, 197, 25, 84, 133, 57, 64, 76,
+			8, 197, 17, 84, 129, 57, 64, 76, 0, 6, 195, 52, 50, 64, 13, 5, 130, 195, 185, 43, 0, 10, 69, 12, 83, 148, 21, 32, 21, 0,
+			47, 0, 0, 10, 69, 72, 81, 8, 5, 64, 21, 0, 47, 11, 69, 5, 85, 133, 57, 64, 39, 84, 113, 0, 12, 69, 21, 84, 133, 57,
+			64, 111, 34, 140, 0, 76, 6, 194, 81, 80, 76, 32, 0, 12, 67, 60, 115, 64, 39, 90, 4, 36, 112, 65, 0, 0, 0, 0, 0, 9,
+			67, 32, 211, 64, 107, 117, 65, 0, 0, 0, 0, 0, 0, 0, 16, 69, 20, 32, 196, 36, 48, 13, 71, 36, 89, 36, 72, 37, 49, 0,
+			0, 12, 68, 5, 37, 66, 4, 35, 34, 40, 71, 35, 0, 8, 196, 12, 85, 20, 20, 72, 34, 0, 14, 69, 25, 85, 21, 56, 16, 83,
+			40, 47, 40, 50, 35, 0, 0, 0, 10, 199, 58, 32, 78, 52, 242, 78, 76, 76, 0, 7, 66, 85, 64, 111, 47, 0, 0, 9, 198, 21,
+			84, 211, 36, 243, 147, 76, 6, 195, 64, 85, 64, 76, 8, 197, 12, 128, 81, 84, 80, 76, 0, 0, 0, 0, 0, 18, 71, 21, 52, 5,
+			72, 19, 148, 60, 112, 89, 48, 36, 34, 113, 47, 39, 0, 0, 0, 0, 8, 67, 8, 22, 64, 21, 0, 47, 0, 0, 7, 195, 12, 80,
+			201, 76, 32, 0, 14, 69, 100, 19, 213, 73, 64, 23, 37, 35, 40, 34, 47, 0, 0, 0, 0, 0, 10, 67, 8, 145, 78, 71, 37, 114,
+			134, 0, 0, 0, 0, 11, 68, 52, 145, 85, 96, 65, 37, 132, 0, 76, 0, 11, 70, 72, 80, 207, 72, 65, 82, 21, 0, 47, 0, 0,
+			0, 0, 0, 0, 13, 67, 37, 32, 192, 125, 4, 112, 34, 23, 89, 36, 0, 0, 12, 68, 80, 245, 84, 20, 47, 6, 40, 47, 0, 76,
+			10, 3, 117, 46, 115, 111, 12, 112, 89, 0, 0, 13, 69, 4, 113, 78, 16, 16, 35, 90, 114, 72, 35, 0, 8, 197, 69, 81, 76, 48,
+			80, 76, 0, 16, 71, 52, 84, 211, 36, 85, 82, 76, 65, 36, 89, 57, 132, 143, 0, 0, 7, 195, 85, 48, 64, 13, 42, 0, 0, 6,
+			195, 88, 84, 147, 37, 10, 67, 88, 84, 147, 84, 112, 34, 0, 76, 0, 0, 9, 68, 9, 34, 65, 56, 21, 0, 47, 0, 0, 0, 13,
+			4, 95, 226, 136, 158, 37, 50, 83, 37, 50, 37, 0, 0, 0, 0, 0, 9, 68, 20, 208, 67, 76, 21, 0, 47, 9, 68, 40, 19, 69,
+			76, 21, 0, 47, 0, 26, 67, 25, 146, 64, 83, 117, 34, 15, 57, 117, 34, 15, 125, 50, 83, 117, 34, 65, 6, 112, 57, 91, 117, 50,
+			0, 0, 0, 0, 0, 9, 68, 64, 85, 5, 72, 21, 0, 47, 7, 195, 49, 82, 64, 76, 32, 9, 2, 95, 35, 72, 57, 112, 88, 0,
+			0, 10, 2, 95, 34, 81, 37, 57, 65, 112, 0, 0, 22, 2, 95, 33, 48, 58, 114, 15, 72, 112, 49, 89, 49, 55, 35, 65, 35, 89,
+			57, 6, 116, 0, 0, 0, 9, 68, 48, 241, 207, 56, 21, 0, 47, 9, 67, 76, 243, 128, 89, 116, 0, 37, 7, 195, 76, 243, 128, 76,
+			34, 14, 2, 95, 39, 35, 48, 39, 89, 47, 34, 6, 127, 83, 0, 0, 18, 2, 95, 38, 10, 36, 10, 49, 39, 65, 112, 34, 89, 37,
+			6, 35, 55, 0, 0, 0, 11, 70, 12, 243, 80, 85, 65, 82, 21, 0, 47, 17, 70, 72, 85, 143, 49, 97, 82, 34, 36, 84, 127, 55,
+			84, 112, 34, 0, 0, 9, 67, 8, 147, 128, 71, 37, 50, 0, 12, 68, 4, 67, 73, 56, 35, 72, 65, 37, 50, 0, 0, 15, 70, 8,
+			80, 85, 12, 245, 80, 71, 39, 49, 40, 139, 0, 76, 0, 18, 2, 95, 41, 48, 35, 34, 113, 47, 112, 88, 10, 72, 34, 58, 35, 47,
+			0, 0, 16, 70, 92, 19, 21, 36, 114, 64, 58, 35, 55, 40, 37, 75, 37, 0, 15, 70, 81, 32, 77, 92, 22, 64, 47, 34, 35, 65,
+			58, 137, 0, 16, 2, 95, 40, 48, 35, 34, 113, 47, 112, 88, 10, 81, 39, 91, 0, 0, 8, 67, 32, 84, 128, 21, 0, 47, 13, 2,
+			95, 47, 71, 35, 34, 39, 71, 55, 37, 49, 0, 0, 15, 70, 72, 84, 211, 20, 229, 0, 34, 13, 89, 6, 113, 140, 0, 11, 68, 12,
+			243, 77, 20, 49, 127, 65, 0, 76, 10, 2, 95, 46, 23, 48, 58, 2, 114, 0, 0, 9, 2, 95, 45, 47, 37, 34, 112, 0, 0, 10,
+			67, 4, 49, 82, 35, 89, 112, 34, 0, 11, 67, 24, 145, 82, 83, 57, 36, 34, 0, 36, 11, 2, 95, 44, 84, 37, 34, 81, 111, 55,
+			0, 0, 8, 67, 53, 36, 192, 21, 0, 47, 10, 2, 95, 51, 47, 34, 58, 35, 143, 0, 0, 8, 2, 95, 50, 72, 132, 143, 0, 0,
+			6, 195, 48, 244, 147, 76, 6, 2, 95, 49, 115, 0, 0, 10, 2, 95, 48, 88, 36, 34, 39, 0, 76, 0, 8, 2, 95, 55, 89, 112,
+			47, 0, 0, 9, 198, 64, 197, 80, 5, 37, 0, 76, 8, 2, 95, 54, 89, 37, 144, 0, 0, 8, 2, 95, 53, 89, 114, 49, 0, 0,
+			11, 70, 65, 35, 199, 72, 19, 64, 21, 0, 47, 9, 2, 95, 52, 49, 35, 47, 34, 0, 0, 16, 2, 95, 59, 48, 58, 114, 15, 84,
+			37, 34, 81, 6, 111, 55, 0, 0, 10, 69, 28, 84, 141, 4, 224, 21, 0, 47, 7, 196, 88, 242, 67, 36, 76, 13, 2, 95, 58, 72,
+			6, 132, 15, 48, 58, 6, 114, 0, 0, 8, 2, 95, 57, 50, 117, 83, 0, 0, 12, 68, 60, 20, 201, 76, 39, 35, 88, 37, 89, 0,
+			9, 2, 95, 56, 23, 111, 37, 141, 0, 0, 21, 2, 95, 63, 48, 58, 114, 15, 72, 114, 47, 112, 34, 39, 81, 35, 89, 57, 6, 116,
+			0, 0, 13, 2, 95, 62, 89, 111, 48, 36, 34, 37, 117, 34, 0, 0, 9, 2, 95, 61, 36, 81, 35, 55, 0, 0, 12, 2, 95, 60,
+			114, 83, 36, 34, 37, 117, 34, 0, 0, 13, 69, 80, 83, 142, 37, 48, 47, 36, 50, 37, 89, 0, 8, 67, 72, 150, 128, 34, 37, 0,
+			0, 0, 0, 0, 0, 9, 68, 69, 81, 82, 100, 21, 0, 47, 0, 17, 70, 52, 84, 131, 20, 65, 83, 65, 112, 34, 89, 36, 72, 112,
+			89, 0, 0, 11, 67, 4, 98, 78, 35, 83, 114, 0, 76, 28, 21, 70, 44, 212, 12, 5, 145, 82, 49, 35, 4, 112, 65, 48, 55, 112,
+			57, 6, 117, 34, 0, 0, 0, 19, 71, 8, 19, 1, 8, 243, 11, 4, 71, 35, 55, 35, 71, 127, 55, 49, 35, 0, 7, 196, 5, 84,
+			211, 36, 76, 0, 0, 0, 0, 11, 68, 48, 144, 153, 20, 55, 37, 71, 37, 0, 13, 70, 88, 147, 131, 20, 229, 0, 84, 114, 89, 113,
+			0, 0, 16, 7, 116, 97, 195, 175, 119, 97, 110, 47, 35, 57, 58, 35, 50, 0, 0, 18, 71, 4, 100, 137, 44, 16, 78, 76, 35, 83,
+			34, 37, 49, 35, 50, 89, 0, 0, 12, 67, 85, 48, 128, 111, 12, 112, 89, 71, 36, 0, 0, 15, 70, 12, 243, 147, 20, 229, 0, 49,
+			116, 89, 6, 113, 140, 0, 0, 0, 6, 195, 48, 242, 78, 76, 0, 8, 67, 76, 19, 69, 21, 0, 47, 6, 195, 36, 65, 64, 13, 16,
+			4, 95, 226, 128, 153, 35, 48, 39, 89, 47, 34, 6, 127, 83, 0, 0, 16, 4, 95, 226, 128, 152, 35, 48, 39, 89, 47, 34, 6, 127,
+			83, 0, 0, 0, 0, 8, 67, 76, 129, 64, 21, 0, 47, 14, 2, 95, 91, 49, 34, 127, 91, 112, 10, 81, 39, 91, 0, 0, 8, 66,
+			133, 48, 112, 89, 0, 72, 0, 0, 10, 67, 29, 83, 6, 81, 127, 55, 83, 0, 5, 194, 84, 176, 13, 0, 16, 69, 4, 148, 130, 85,
+			48, 97, 105, 114, 98, 117, 115, 115, 0, 29, 11, 2, 95, 95, 89, 40, 55, 37, 67, 36, 0, 0, 15, 70, 48, 22, 129, 72, 85, 0,
+			55, 35, 88, 35, 34, 112, 0, 15, 2, 95, 94, 89, 37, 34, 49, 116, 83, 55, 112, 49, 89, 0, 0, 15, 2, 95, 93, 49, 34, 127,
+			91, 112, 10, 72, 34, 58, 35, 0, 0, 17, 67, 88, 148, 0, 84, 4, 37, 15, 4, 35, 57, 15, 48, 6, 37, 0, 12, 2, 95, 92,
+			71, 35, 49, 89, 55, 35, 91, 0, 0, 8, 197, 12, 84, 148, 21, 48, 76, 0, 6, 195, 72, 21, 16, 13, 0, 0, 7, 195, 141, 65,
+			83, 76, 36, 16, 2, 95, 96, 35, 49, 89, 6, 113, 10, 81, 34, 6, 35, 84, 0, 0, 0, 7, 2, 95, 102, 112, 83, 0, 0, 6,
+			2, 95, 101, 13, 0, 0, 0, 0, 0, 6, 2, 95, 105, 37, 0, 0, 19, 72, 24, 18, 18, 20, 226, 5, 37, 64, 83, 35, 34, 13,
+			50, 35, 57, 47, 0, 7, 2, 95, 104, 35, 91, 0, 0, 20, 67, 88, 148, 192, 84, 37, 88, 35, 84, 37, 0, 82, 195, 160, 32, 118,
+			105, 115, 32, 6, 195, 76, 244, 192, 13, 8, 67, 20, 32, 89, 21, 0, 47, 6, 2, 95, 111, 39, 0, 0, 7, 2, 95, 110, 112, 50,
+			0, 0, 7, 2, 95, 109, 112, 65, 0, 0, 7, 2, 95, 108, 112, 55, 0, 0, 9, 67, 8, 148, 192, 71, 37, 89, 0, 11, 67, 16,
+			84, 192, 72, 123, 143, 0, 72, 34, 21, 67, 48, 84, 192, 55, 123, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 115, 32, 20,
+			67, 48, 84, 192, 55, 123, 15, 55, 132, 34, 0, 76, 32, 81, 108, 101, 117, 114, 32, 11, 67, 80, 84, 192, 47, 123, 143, 0, 72, 34,
+			12, 67, 48, 84, 192, 55, 123, 143, 0, 36, 40, 72, 11, 67, 48, 84, 192, 55, 123, 143, 0, 34, 76, 7, 2, 95, 115, 112, 89, 0,
+			0, 9, 198, 64, 245, 82, 80, 19, 148, 76, 7, 2, 95, 114, 112, 34, 0, 0, 11, 68, 69, 80, 78, 16, 49, 113, 140, 0, 76, 12,
+			4, 95, 104, 97, 99, 49, 35, 34, 6, 116, 0, 0, 10, 69, 37, 51, 1, 56, 64, 21, 0, 47, 0, 0, 0, 7, 195, 4, 145, 83,
+			76, 36, 6, 2, 95, 117, 111, 0, 0, 0, 15, 2, 95, 123, 35, 49, 127, 55, 35, 72, 10, 81, 39, 91, 0, 0, 0, 13, 2, 95,
+			121, 11, 37, 12, 81, 34, 6, 112, 49, 0, 0, 8, 66, 80, 240, 47, 40, 0, 76, 8, 2, 95, 120, 37, 49, 89, 0, 0, 17, 70,
+			4, 195, 5, 49, 82, 65, 35, 55, 36, 55, 40, 37, 6, 35, 0, 8, 197, 80, 19, 132, 37, 48, 76, 8, 197, 5, 85, 18, 21, 48,
+			76, 0, 11, 70, 69, 81, 82, 36, 84, 192, 21, 0, 47, 0, 8, 67, 100, 85, 0, 21, 0, 47, 9, 68, 4, 35, 213, 80, 21, 0,
+			47, 17, 2, 95, 125, 35, 49, 127, 55, 35, 72, 10, 72, 34, 58, 35, 47, 0, 0, 18, 2, 95, 124, 71, 35, 34, 10, 84, 112, 34,
+			47, 37, 49, 6, 35, 55, 0, 0, 12, 69, 76, 245, 82, 37, 48, 89, 40, 34, 37, 0, 14, 69, 80, 245, 84, 21, 48, 47, 6, 40,
+			47, 143, 0, 76, 0, 13, 67, 44, 34, 84, 49, 37, 55, 39, 71, 37, 47, 0, 0, 14, 69, 8, 148, 211, 5, 80, 71, 37, 89, 35,
+			6, 39, 0, 9, 5, 95, 48, 97, 110, 100, 36, 0, 0, 0, 12, 68, 34, 35, 1, 76, 36, 55, 35, 89, 0, 76, 0, 15, 70, 48,
+			84, 207, 80, 131, 192, 55, 36, 88, 127, 47, 39, 0, 0, 17, 70, 69, 81, 76, 69, 81, 83, 49, 112, 55, 49, 8, 13, 143, 0, 76,
+			0, 0, 12, 68, 44, 85, 137, 56, 49, 36, 84, 37, 50, 0, 0, 0, 0, 17, 71, 12, 132, 137, 77, 67, 65, 76, 49, 34, 37, 89,
+			65, 35, 89, 0, 6, 194, 84, 224, 34, 76, 0, 0, 9, 68, 80, 129, 82, 20, 21, 0, 47, 0, 0, 27, 70, 9, 84, 139, 36, 224,
+			64, 71, 40, 34, 49, 37, 50, 35, 15, 83, 35, 89, 39, 0, 81, 102, 97, 115, 111, 32, 0, 6, 195, 81, 96, 64, 13, 0, 0, 10,
+			67, 4, 226, 83, 35, 50, 37, 89, 0, 0, 0, 0, 9, 68, 100, 244, 200, 36, 21, 0, 47, 11, 4, 101, 195, 187, 116, 111, 140, 0,
+			76, 36, 0, 0, 12, 4, 95, 35, 51, 50, 112, 89, 48, 35, 89, 0, 0, 7, 196, 20, 225, 137, 56, 76, 12, 67, 20, 65, 128, 13,
+			72, 4, 36, 112, 83, 0, 0, 12, 68, 32, 147, 132, 36, 23, 37, 50, 72, 37, 0, 0, 0, 0, 0, 16, 70, 28, 83, 133, 76, 148,
+			192, 90, 36, 50, 36, 88, 37, 89, 0, 16, 70, 76, 243, 1, 72, 148, 192, 89, 39, 55, 35, 34, 37, 89, 0, 10, 2, 109, 46, 65,
+			13, 89, 37, 132, 0, 0, 10, 67, 18, 20, 192, 72, 112, 143, 0, 72, 0, 0, 10, 67, 8, 197, 77, 71, 55, 40, 65, 0, 0, 16,
+			70, 88, 245, 9, 60, 228, 192, 84, 127, 39, 47, 57, 116, 143, 0, 8, 67, 20, 66, 84, 21, 0, 47, 13, 67, 52, 34, 84, 65, 36,
+			81, 35, 71, 37, 47, 0, 18, 70, 4, 52, 143, 8, 21, 0, 97, 99, 114, 111, 98, 97, 116, 101, 0, 29, 0, 0, 5, 194, 97, 144,
+			13, 0, 9, 68, 48, 241, 201, 56, 21, 0, 47, 12, 67, 4, 67, 128, 35, 72, 4, 36, 112, 50, 0, 0, 0, 9, 67, 105, 85, 0,
+			88, 111, 47, 0, 0, 0, 24, 74, 48, 145, 67, 33, 65, 78, 77, 65, 73, 56, 55, 37, 91, 47, 117, 50, 91, 47, 35, 57, 50, 0,
+			0, 0, 0, 0, 18, 71, 32, 19, 66, 85, 33, 197, 72, 23, 113, 71, 13, 34, 81, 117, 34, 0, 0, 9, 198, 12, 243, 77, 20, 229,
+			0, 76, 15, 70, 76, 19, 83, 84, 225, 192, 89, 35, 65, 89, 40, 68, 0, 0, 0, 10, 68, 12, 242, 78, 28, 49, 58, 114, 0, 0,
+			0, 20, 73, 12, 243, 148, 20, 229, 9, 60, 228, 192, 49, 116, 47, 113, 47, 57, 116, 143, 0, 9, 68, 80, 131, 211, 20, 21, 0, 47,
+			0, 0, 0, 6, 195, 13, 5, 64, 13, 0, 11, 68, 5, 48, 201, 36, 35, 89, 49, 37, 0, 0, 15, 70, 52, 243, 148, 74, 32, 76,
+			65, 116, 34, 36, 35, 55, 0, 6, 195, 52, 18, 83, 76, 0, 0, 0, 0, 0, 12, 68, 81, 83, 137, 76, 47, 111, 50, 37, 89, 0,
+			0, 14, 67, 28, 134, 128, 90, 37, 81, 35, 112, 34, 47, 89, 0, 0, 13, 70, 28, 83, 210, 28, 84, 192, 90, 127, 34, 90, 0, 15,
+			70, 25, 32, 78, 12, 148, 192, 83, 34, 113, 89, 37, 89, 0, 0, 12, 68, 76, 208, 82, 80, 89, 65, 35, 34, 47, 0, 9, 67, 88,
+			245, 0, 84, 127, 47, 0, 7, 196, 4, 145, 78, 80, 76, 0, 10, 69, 61, 85, 16, 85, 64, 21, 0, 47, 11, 68, 12, 240, 213, 76,
+			49, 127, 49, 111, 0, 0, 14, 67, 44, 134, 128, 49, 37, 55, 39, 112, 34, 47, 89, 0, 0, 11, 69, 12, 131, 197, 85, 32, 49, 117,
+			34, 0, 0, 0, 6, 195, 12, 129, 90, 76, 0, 0, 8, 67, 52, 18, 76, 21, 0, 47, 13, 67, 13, 68, 140, 24, 49, 116, 47, 34,
+			127, 55, 0, 0, 18, 71, 77, 112, 90, 36, 192, 78, 16, 89, 58, 35, 88, 37, 55, 113, 72, 0, 18, 71, 29, 35, 197, 56, 192, 78,
+			16, 81, 34, 39, 112, 50, 55, 113, 72, 0, 0, 0, 10, 134, 101, 195, 187, 109, 101, 115, 76, 36, 0, 0, 0, 0, 6, 195, 76, 52,
+			201, 13, 0, 0, 0, 0, 6, 195, 12, 144, 64, 13, 0, 0, 0, 20, 70, 5, 81, 9, 8, 193, 64, 21, 0, 47, 81, 109, 97, 110,
+			97, 103, 101, 114, 32, 0, 13, 67, 52, 209, 64, 109, 97, 100, 97, 109, 101, 0, 29, 0, 0, 0, 0, 6, 195, 85, 65, 128, 13, 0,
+			0, 0, 0, 9, 67, 92, 146, 64, 58, 37, 12, 0, 6, 195, 80, 242, 64, 76, 0, 0, 0, 8, 197, 5, 85, 1, 57, 64, 76, 0,
+			0, 0, 0, 12, 69, 4, 36, 197, 57, 64, 35, 71, 89, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 69, 32, 20, 133, 56,
+			112, 23, 35, 34, 113, 0, 0, 0, 0, 16, 70, 64, 242, 226, 52, 243, 128, 48, 39, 49, 36, 65, 127, 50, 0, 0, 7, 195, 36, 196,
+			192, 76, 32, 0, 0, 10, 67, 48, 19, 211, 55, 35, 127, 89, 0, 9, 198, 80, 245, 74, 61, 84, 147, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 69, 5, 85, 15, 85, 32, 39, 47, 40, 34, 0, 76, 14, 6, 95, 114, 111, 109, 97, 110, 34, 39, 65, 6,
+			114, 0, 0, 0, 0, 0, 0, 0, 10, 69, 76, 50, 69, 57, 64, 89, 37, 0, 12, 67, 72, 145, 78, 34, 37, 6, 114, 134, 0, 76,
+			0, 0, 14, 67, 4, 68, 204, 35, 72, 4, 36, 112, 89, 112, 55, 0, 0, 6, 20, 0, 83, 1, 0, 0, 111, 0, 101, 0, 0, 0,
+			0, 0, 6, 18, 66, 100, 0, 101, 0, 108, 0, 110, 0, 114, 0, 116, 0, 117, 0, 7, 6, 18, 67, 98, 0, 99, 0, 100, 0, 102,
+			0, 103, 0, 104, 0, 107, 0, 112, 0, 116, 0, 118, 0, 7, 6, 18, 68, 100, 0, 108, 0, 109, 0, 110, 0, 115, 0, 116, 0, 118,
+			0, 7, 6, 18, 69, 99, 0, 100, 0, 102, 0, 103, 0, 108, 0, 109, 0, 110, 0, 118, 0, 7, 6, 18, 70, 103, 0, 104, 0, 107,
+			0, 108, 0, 109, 0, 118, 0, 119, 0, 7, 6, 18, 71, 98, 108, 0, 98, 114, 0, 99, 108, 0, 99, 114, 0, 99, 116, 0, 100, 114,
+			0, 102, 108, 0, 102, 114, 0, 102, 116, 0, 103, 108, 0, 103, 114, 0, 107, 108, 0, 107, 114, 0, 112, 108, 0, 112, 114, 0, 116, 114,
+			0, 118, 114, 0, 7, 6, 18, 72, 195, 169, 99, 0, 195, 169, 100, 0, 101, 99, 0, 101, 100, 0, 108, 98, 0, 108, 99, 0, 108, 100,
+			0, 108, 103, 0, 108, 109, 0, 108, 110, 0, 108, 112, 0, 108, 116, 0, 108, 118, 0, 114, 98, 0, 114, 99, 0, 114, 100, 0, 114, 102,
+			0, 114, 103, 0, 114, 108, 0, 114, 109, 0, 114, 110, 0, 114, 112, 0, 114, 115, 0, 114, 116, 0, 114, 118, 0, 7, 6, 18, 73, 99,
+			104, 0, 113, 117, 0, 103, 117, 0, 98, 0, 99, 0, 100, 0, 102, 0, 103, 0, 104, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0,
+			112, 0, 113, 0, 114, 0, 115, 0, 116, 0, 118, 0, 119, 0, 120, 0, 122, 0, 7, 6, 18, 74, 108, 0, 114, 0, 115, 0, 7, 6,
+			18, 75, 105, 97, 0, 105, 101, 0, 105, 111, 0, 117, 97, 0, 117, 101, 0, 117, 105, 0, 117, 111, 0, 7, 6, 18, 76, 98, 0, 112,
+			0, 116, 0, 7, 6, 18, 77, 97, 195, 175, 0, 114, 195, 169, 0, 195, 169, 0, 195, 168, 0, 97, 108, 0, 105, 98, 0, 105, 101, 0,
+			105, 113, 0, 111, 109, 0, 111, 110, 0, 121, 109, 0, 108, 0, 7, 6, 18, 78, 101, 114, 0, 104, 110, 0, 100, 0, 103, 0, 107, 0,
+			108, 0, 112, 0, 7, 6, 18, 79, 98, 101, 0, 105, 110, 0, 117, 112, 0, 117, 116, 0, 7, 6, 18, 80, 99, 0, 102, 0, 103, 0,
+			104, 0, 7, 6, 18, 81, 48, 48, 0, 48, 49, 0, 48, 50, 0, 48, 51, 0, 48, 52, 0, 48, 53, 0, 48, 54, 0, 48, 55, 0,
+			48, 56, 0, 48, 57, 0, 49, 48, 0, 49, 49, 0, 49, 50, 0, 49, 51, 0, 49, 52, 0, 49, 53, 0, 49, 54, 0, 49, 55, 0,
+			49, 56, 0, 49, 57, 0, 50, 48, 0, 50, 49, 0, 50, 50, 0, 50, 51, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0,
+			54, 0, 55, 0, 56, 0, 57, 0, 7, 6, 18, 82, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 7, 6, 195, 167, 0, 4,
+			3, 89, 0, 39, 8, 2, 14, 128, 140, 130, 0, 7, 6, 195, 168, 0, 109, 101, 1, 16, 3, 37, 112, 65, 0, 4, 3, 112, 0, 115,
+			2, 32, 0, 4, 115, 1, 109, 2, 32, 3, 112, 89, 0, 115, 1, 110, 2, 32, 0, 115, 1, 112, 2, 32, 0, 115, 1, 114, 17, 65,
+			2, 32, 0, 7, 6, 195, 171, 0, 1, 117, 3, 0, 1, 111, 110, 2, 32, 3, 36, 0, 3, 112, 0, 7, 6, 195, 175, 0, 3, 37,
+			0, 115, 1, 97, 17, 67, 2, 32, 3, 37, 89, 0, 4, 1, 17, 65, 2, 32, 3, 57, 0, 1, 17, 65, 2, 108, 17, 65, 0, 101,
+			1, 17, 65, 2, 32, 0, 110, 2, 25, 3, 114, 0, 7, 6, 195, 180, 0, 4, 3, 39, 0, 116, 2, 32, 0, 7, 6, 195, 188, 0,
+			109, 2, 32, 3, 39, 65, 0, 3, 111, 0, 108, 2, 32, 3, 111, 55, 55, 0, 115, 2, 32, 3, 111, 89, 0, 7, 6, 97, 0, 2,
+			195, 180, 3, 0, 105, 1, 102, 2, 115, 17, 65, 3, 13, 0, 4, 110, 121, 3, 21, 0, 119, 2, 25, 0, 4, 3, 35, 0, 2, 105,
+			108, 25, 0, 2, 110, 110, 17, 65, 0, 109, 2, 109, 0, 109, 2, 110, 0, 110, 2, 110, 32, 0, 4, 114, 99, 104, 8, 2, 97, 14,
+			128, 132, 132, 3, 35, 34, 49, 0, 114, 99, 104, 8, 2, 111, 14, 128, 132, 132, 0, 114, 99, 104, 195, 169, 8, 2, 21, 14, 128, 132,
+			133, 3, 35, 34, 49, 36, 0, 114, 99, 104, 195, 169, 111, 8, 2, 21, 14, 128, 132, 134, 3, 35, 34, 49, 36, 39, 0, 111, 195, 187,
+			116, 2, 105, 3, 35, 40, 89, 0, 4, 110, 1, 109, 18, 67, 2, 32, 3, 35, 50, 0, 110, 1, 109, 21, 21, 2, 32, 0, 110, 1,
+			109, 122, 2, 32, 0, 110, 1, 119, 2, 32, 0, 110, 2, 104, 0, 110, 8, 18, 69, 2, 32, 0, 110, 8, 104, 2, 32, 0, 110, 97,
+			114, 99, 104, 111, 8, 2, 21, 14, 128, 132, 135, 3, 35, 50, 35, 34, 49, 39, 0, 4, 121, 2, 97, 107, 3, 35, 57, 0, 121, 101,
+			1, 98, 98, 2, 32, 0, 4, 109, 1, 104, 2, 32, 14, 128, 128, 130, 3, 35, 65, 0, 109, 8, 2, 110, 0, 101, 3, 35, 112, 0,
+			4, 101, 2, 32, 3, 36, 0, 105, 2, 32, 0, 121, 101, 1, 98, 98, 2, 29, 3, 36, 37, 0, 4, 117, 3, 39, 0, 117, 100, 2,
+			32, 0, 117, 116, 111, 8, 2, 21, 14, 128, 132, 132, 3, 39, 47, 39, 0, 117, 116, 111, 109, 8, 2, 110, 3, 39, 47, 127, 0, 117,
+			100, 8, 17, 67, 2, 32, 3, 39, 72, 0, 117, 100, 105, 111, 8, 2, 21, 14, 128, 132, 133, 3, 39, 72, 37, 39, 0, 117, 116, 2,
+			32, 3, 39, 140, 0, 4, 111, 117, 1, 115, 2, 108, 101, 3, 40, 0, 111, 117, 108, 1, 115, 2, 32, 0, 111, 195, 187, 116, 3, 40,
+			47, 0, 4, 105, 3, 112, 0, 105, 8, 108, 97, 98, 2, 32, 0, 105, 8, 114, 118, 2, 32, 0, 105, 8, 115, 115, 101, 2, 32, 0,
+			105, 101, 0, 121, 2, 17, 67, 0, 121, 2, 32, 0, 121, 3, 112, 57, 0, 121, 101, 114, 1, 108, 29, 2, 29, 3, 112, 57, 117, 34,
+			0, 4, 105, 101, 110, 116, 3, 112, 140, 0, 105, 116, 2, 32, 0, 105, 115, 2, 32, 3, 112, 143, 0, 4, 101, 110, 3, 113, 0, 109,
+			2, 18, 76, 0, 110, 1, 109, 108, 117, 2, 32, 0, 110, 1, 109, 115, 105, 108, 2, 32, 0, 110, 2, 25, 0, 110, 8, 109, 175, 195,
+			97, 99, 2, 32, 0, 111, 110, 8, 17, 67, 2, 32, 0, 4, 110, 116, 105, 8, 2, 17, 67, 17, 65, 29, 14, 128, 132, 132, 3, 113,
+			47, 37, 0, 110, 116, 105, 8, 2, 21, 21, 14, 128, 132, 132, 0, 4, 105, 109, 2, 25, 3, 114, 0, 105, 110, 2, 25, 0, 4, 105,
+			110, 1, 104, 99, 2, 32, 3, 114, 134, 0, 105, 110, 1, 116, 17, 67, 2, 32, 0, 4, 117, 2, 108, 32, 3, 127, 0, 117, 2, 114,
+			101, 32, 0, 7, 6, 98, 0, 1, 109, 111, 2, 32, 3, 0, 4, 97, 99, 107, 3, 21, 0, 101, 8, 2, 18, 80, 17, 65, 0, 111,
+			97, 114, 100, 0, 111, 120, 2, 32, 0, 117, 103, 103, 0, 4, 3, 71, 0, 98, 0, 7, 6, 99, 0, 4, 1, 97, 98, 97, 116, 2,
+			32, 3, 0, 4, 1, 97, 109, 111, 116, 2, 32, 3, 0, 4, 1, 110, 97, 17, 67, 2, 32, 3, 0, 4, 1, 110, 111, 17, 67, 2,
+			32, 3, 0, 4, 1, 114, 97, 2, 116, 105, 3, 0, 4, 1, 114, 101, 108, 99, 2, 32, 3, 0, 4, 1, 115, 2, 17, 71, 3, 0,
+			4, 1, 117, 111, 104, 99, 116, 2, 32, 3, 0, 1, 120, 2, 17, 71, 3, 0, 4, 104, 1, 110, 2, 32, 3, 21, 0, 104, 2, 109,
+			101, 110, 116, 0, 117, 116, 2, 32, 0, 4, 3, 49, 0, 8, 110, 111, 100, 2, 32, 0, 99, 0, 99, 104, 0, 104, 1, 97, 2, 32,
+			0, 104, 1, 101, 2, 32, 0, 104, 1, 105, 110, 2, 32, 0, 104, 1, 105, 110, 97, 109, 2, 195, 169, 0, 104, 1, 111, 116, 105, 109,
+			2, 111, 0, 104, 1, 114, 111, 2, 101, 115, 17, 67, 0, 104, 1, 114, 111, 2, 105, 17, 67, 0, 104, 2, 108, 0, 104, 2, 110, 0,
+			104, 2, 114, 0, 104, 2, 115, 0, 104, 2, 116, 111, 0, 104, 8, 2, 97, 111, 0, 104, 8, 2, 97, 114, 105, 115, 109, 0, 104, 8,
+			2, 105, 114, 111, 112, 0, 104, 8, 2, 111, 114, 17, 65, 0, 104, 8, 17, 65, 2, 111, 32, 0, 104, 8, 117, 101, 2, 97, 114, 105,
+			0, 107, 0, 113, 0, 113, 117, 0, 104, 114, 111, 110, 111, 8, 2, 21, 14, 128, 132, 134, 3, 49, 34, 39, 50, 39, 0, 4, 97, 115,
+			116, 2, 32, 14, 128, 128, 132, 3, 49, 35, 89, 47, 0, 97, 115, 116, 115, 2, 32, 14, 128, 128, 133, 0, 108, 111, 119, 110, 8, 3,
+			49, 55, 40, 50, 0, 99, 2, 17, 71, 3, 49, 89, 0, 104, 1, 105, 119, 3, 76, 0, 4, 1, 101, 115, 2, 111, 110, 100, 3, 81,
+			0, 1, 110, 105, 122, 2, 32, 0, 4, 2, 17, 71, 3, 89, 0, 39, 8, 2, 14, 128, 140, 130, 0, 4, 8, 2, 100, 3, 89, 36,
+			0, 111, 101, 8, 2, 108, 97, 0, 121, 98, 101, 114, 8, 2, 14, 128, 132, 133, 3, 89, 37, 71, 112, 34, 0, 105, 101, 110, 116, 2,
+			32, 3, 89, 37, 140, 0, 4, 105, 101, 110, 116, 1, 105, 102, 102, 101, 3, 89, 57, 113, 0, 105, 101, 110, 116, 1, 105, 102, 169, 195,
+			100, 0, 4, 104, 3, 91, 0, 104, 8, 2, 111, 114, 105, 122, 0, 104, 8, 2, 111, 114, 111, 0, 7, 6, 100, 0, 4, 1, 105, 111,
+			2, 32, 3, 0, 4, 1, 110, 97, 2, 32, 3, 0, 4, 1, 110, 111, 17, 67, 2, 32, 3, 0, 4, 1, 114, 2, 32, 3, 0, 4,
+			1, 117, 111, 2, 32, 3, 0, 8, 105, 110, 2, 32, 3, 0, 4, 97, 121, 2, 32, 3, 21, 0, 101, 118, 105, 99, 8, 0, 108, 101,
+			2, 29, 0, 116, 2, 32, 3, 47, 0, 4, 3, 72, 0, 1, 114, 111, 108, 2, 32, 0, 8, 110, 97, 98, 2, 32, 0, 8, 110, 97,
+			108, 2, 32, 0, 8, 110, 97, 115, 2, 32, 0, 8, 110, 97, 116, 115, 2, 32, 0, 8, 114, 97, 104, 2, 32, 0, 39, 8, 2, 14,
+			128, 132, 130, 0, 100, 0, 4, 105, 101, 110, 1, 169, 195, 112, 120, 101, 32, 26, 2, 116, 32, 3, 72, 37, 0, 105, 101, 110, 2, 116,
+			32, 0, 4, 105, 101, 110, 8, 169, 195, 112, 120, 101, 2, 116, 32, 3, 72, 57, 113, 0, 105, 101, 110, 8, 169, 195, 114, 103, 110, 105,
+			2, 116, 32, 0, 101, 110, 100, 114, 111, 8, 2, 21, 14, 128, 132, 134, 3, 72, 114, 72, 34, 39, 0, 4, 1, 110, 101, 17, 67, 2,
+			32, 3, 140, 0, 1, 110, 101, 117, 113, 2, 32, 0, 1, 110, 111, 99, 2, 32, 0, 8, 110, 97, 114, 103, 2, 32, 0, 7, 6, 101,
+			0, 4, 1, 17, 65, 2, 114, 17, 65, 3, 0, 4, 1, 17, 67, 2, 45, 3, 0, 4, 1, 18, 73, 21, 2, 17, 67, 17, 65, 3,
+			0, 4, 1, 18, 73, 21, 2, 18, 71, 3, 0, 4, 1, 99, 45, 2, 32, 3, 0, 4, 1, 103, 2, 17, 65, 3, 0, 4, 1, 105,
+			2, 109, 17, 65, 3, 0, 4, 1, 106, 45, 2, 32, 3, 0, 4, 2, 32, 3, 0, 4, 2, 111, 105, 3, 0, 4, 110, 1, 108, 111,
+			26, 2, 116, 32, 3, 0, 4, 110, 1, 118, 117, 111, 99, 32, 26, 2, 116, 32, 3, 0, 110, 1, 118, 117, 111, 99, 32, 115, 2, 116,
+			32, 3, 0, 195, 175, 2, 25, 3, 6, 112, 57, 0, 4, 3, 13, 0, 1, 17, 67, 21, 2, 17, 67, 101, 17, 67, 17, 65, 0, 1,
+			18, 71, 21, 2, 17, 67, 17, 65, 0, 1, 18, 71, 21, 2, 18, 71, 0, 1, 18, 72, 21, 2, 17, 67, 17, 65, 0, 1, 18, 72,
+			21, 2, 18, 71, 0, 1, 18, 73, 21, 2, 17, 67, 18, 75, 17, 67, 0, 1, 18, 73, 21, 2, 18, 71, 18, 75, 17, 67, 0, 1,
+			100, 2, 115, 115, 117, 115, 32, 0, 1, 114, 116, 2, 17, 67, 17, 65, 0, 1, 114, 116, 2, 17, 67, 104, 17, 65, 0, 1, 117, 103,
+			18, 74, 21, 2, 17, 67, 17, 65, 0, 1, 117, 103, 18, 74, 21, 2, 18, 71, 0, 1, 117, 113, 18, 74, 21, 2, 17, 67, 17, 65,
+			0, 1, 117, 113, 18, 74, 21, 2, 18, 71, 0, 2, 17, 67, 108, 0, 2, 17, 67, 114, 0, 8, 100, 2, 99, 104, 0, 8, 108, 2,
+			17, 67, 17, 65, 0, 8, 108, 2, 17, 67, 104, 17, 65, 0, 8, 108, 2, 17, 67, 108, 17, 65, 0, 8, 114, 2, 99, 104, 0, 8,
+			114, 2, 115, 115, 0, 8, 114, 2, 115, 116, 114, 97, 0, 8, 114, 2, 115, 116, 114, 111, 0, 8, 114, 2, 115, 116, 114, 117, 0, 8,
+			17, 67, 2, 32, 3, 14, 0, 4, 8, 2, 17, 67, 101, 29, 3, 21, 0, 97, 0, 100, 2, 32, 0, 101, 0, 102, 111, 114, 101, 2,
+			32, 0, 105, 110, 103, 2, 32, 0, 105, 118, 101, 0, 108, 2, 17, 67, 29, 0, 110, 104, 97, 110, 8, 0, 110, 116, 101, 114, 8, 2,
+			32, 0, 115, 115, 2, 32, 0, 115, 116, 1, 117, 113, 2, 32, 0, 115, 116, 101, 1, 117, 113, 2, 29, 32, 0, 118, 101, 110, 2, 32,
+			0, 118, 101, 114, 1, 17, 67, 111, 0, 118, 101, 114, 8, 0, 119, 2, 12, 12, 0, 121, 101, 8, 0, 4, 109, 1, 21, 2, 109, 101,
+			3, 35, 0, 109, 1, 108, 2, 110, 0, 109, 8, 102, 2, 109, 101, 0, 4, 2, 114, 105, 32, 12, 12, 3, 36, 0, 2, 114, 105, 97,
+			32, 12, 12, 0, 2, 114, 111, 32, 12, 12, 0, 8, 2, 17, 67, 11, 0, 8, 2, 17, 67, 17, 65, 0, 8, 2, 17, 67, 17, 65,
+			24, 0, 8, 2, 18, 71, 17, 65, 0, 8, 109, 2, 103, 97, 0, 8, 114, 2, 115, 115, 117, 0, 8, 116, 114, 97, 2, 12, 12, 0,
+			100, 1, 105, 112, 2, 32, 0, 102, 8, 108, 99, 2, 32, 0, 114, 2, 32, 0, 114, 2, 115, 32, 0, 115, 1, 109, 17, 65, 2, 100,
+			17, 65, 0, 115, 1, 109, 17, 65, 2, 110, 17, 65, 0, 115, 8, 100, 2, 98, 17, 65, 0, 115, 8, 100, 2, 106, 17, 65, 0, 115,
+			8, 100, 2, 110, 17, 65, 0, 115, 8, 100, 2, 113, 17, 65, 0, 115, 8, 108, 2, 113, 17, 65, 0, 115, 8, 109, 2, 100, 17, 65,
+			0, 115, 8, 109, 2, 110, 17, 65, 0, 115, 104, 1, 100, 2, 17, 65, 3, 36, 88, 0, 114, 1, 119, 101, 105, 2, 29, 3, 36, 120,
+			0, 122, 2, 32, 3, 36, 143, 0, 97, 117, 2, 12, 12, 3, 39, 0, 4, 117, 1, 103, 2, 114, 101, 3, 111, 0, 117, 8, 2, 115,
+			115, 0, 195, 187, 8, 0, 117, 116, 8, 2, 32, 3, 111, 140, 0, 4, 1, 104, 103, 2, 116, 17, 65, 29, 3, 112, 0, 1, 105, 2,
+			114, 116, 32, 0, 1, 112, 97, 99, 2, 108, 97, 32, 0, 2, 17, 67, 17, 67, 0, 2, 17, 67, 32, 0, 2, 99, 116, 12, 12, 12,
+			12, 12, 0, 2, 105, 108, 0, 2, 114, 17, 67, 0, 2, 114, 114, 12, 12, 12, 0, 2, 120, 12, 12, 12, 12, 12, 0, 8, 17, 67,
+			101, 2, 17, 67, 17, 65, 12, 12, 0, 98, 1, 102, 2, 118, 17, 65, 0, 99, 116, 1, 112, 2, 32, 0, 105, 0, 108, 2, 108, 0,
+			109, 2, 109, 97, 0, 110, 1, 105, 17, 67, 2, 110, 17, 65, 0, 110, 2, 110, 17, 65, 0, 116, 1, 107, 99, 105, 116, 2, 32, 0,
+			121, 2, 17, 67, 0, 121, 2, 32, 0, 4, 114, 1, 107, 99, 111, 2, 25, 3, 112, 34, 0, 114, 1, 110, 105, 97, 116, 2, 29, 0,
+			114, 1, 116, 115, 17, 67, 2, 29, 0, 114, 8, 17, 67, 2, 32, 0, 114, 8, 104, 17, 67, 2, 32, 0, 114, 8, 105, 102, 2, 32,
+			0, 114, 8, 105, 104, 2, 32, 0, 114, 8, 105, 116, 2, 32, 0, 114, 8, 116, 114, 97, 99, 2, 29, 0, 114, 8, 118, 105, 104, 2,
+			29, 0, 114, 8, 118, 110, 101, 2, 32, 0, 4, 116, 1, 103, 100, 2, 32, 3, 112, 47, 0, 116, 1, 107, 2, 32, 0, 99, 116, 2,
+			32, 3, 112, 49, 47, 0, 4, 120, 116, 114, 97, 8, 2, 17, 67, 14, 128, 132, 133, 3, 112, 49, 89, 47, 34, 35, 0, 120, 116, 114,
+			97, 8, 2, 117, 14, 128, 132, 133, 0, 4, 105, 110, 8, 2, 25, 3, 112, 50, 0, 110, 1, 17, 67, 2, 32, 0, 110, 1, 17, 67,
+			2, 116, 111, 32, 0, 110, 8, 121, 2, 32, 0, 110, 115, 1, 112, 115, 2, 32, 3, 112, 50, 89, 0, 108, 2, 115, 29, 3, 112, 55,
+			0, 121, 3, 112, 57, 0, 109, 110, 1, 108, 105, 3, 112, 65, 0, 115, 116, 1, 45, 2, 32, 3, 112, 89, 47, 0, 116, 1, 109, 2,
+			32, 3, 112, 140, 0, 4, 109, 2, 18, 76, 3, 113, 0, 109, 2, 109, 17, 65, 17, 67, 17, 65, 17, 67, 0, 109, 2, 109, 17, 65,
+			17, 67, 17, 67, 0, 109, 2, 109, 97, 105, 0, 110, 1, 17, 67, 2, 100, 32, 0, 110, 1, 17, 67, 111, 17, 67, 109, 105, 2, 116,
+			32, 0, 110, 1, 17, 67, 111, 17, 67, 110, 105, 2, 116, 32, 0, 110, 1, 17, 67, 169, 195, 2, 116, 32, 0, 110, 1, 17, 67, 169,
+			195, 2, 116, 32, 0, 110, 1, 99, 97, 106, 2, 116, 32, 0, 110, 1, 99, 99, 2, 116, 32, 0, 110, 1, 99, 105, 116, 169, 195, 2,
+			116, 32, 0, 110, 1, 99, 115, 17, 65, 2, 116, 32, 0, 110, 1, 100, 105, 17, 67, 169, 195, 2, 116, 32, 0, 110, 1, 100, 105, 99,
+			17, 67, 17, 65, 29, 2, 116, 32, 0, 110, 1, 100, 105, 114, 116, 29, 2, 116, 32, 0, 110, 1, 100, 117, 17, 67, 2, 116, 32, 0,
+			110, 1, 103, 110, 105, 21, 21, 2, 116, 32, 0, 110, 1, 103, 114, 101, 118, 2, 116, 32, 0, 110, 1, 105, 17, 67, 2, 99, 0, 110,
+			1, 105, 116, 97, 112, 0, 110, 1, 108, 97, 118, 105, 2, 116, 32, 0, 110, 1, 108, 108, 101, 99, 120, 2, 116, 32, 0, 110, 1, 108,
+			111, 2, 116, 32, 0, 110, 1, 108, 117, 2, 116, 32, 0, 110, 1, 109, 97, 17, 67, 105, 2, 116, 32, 0, 110, 1, 109, 97, 109, 114,
+			2, 116, 32, 0, 110, 1, 109, 101, 2, 116, 32, 0, 110, 1, 109, 103, 2, 116, 32, 0, 110, 1, 109, 105, 17, 67, 17, 67, 17, 65,
+			17, 67, 2, 116, 32, 0, 110, 1, 109, 105, 97, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 97, 17, 67, 2, 116, 32, 0, 110, 1,
+			109, 105, 100, 2, 116, 32, 0, 110, 1, 109, 105, 103, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 108, 17, 65, 2, 116, 32, 0, 110,
+			1, 109, 105, 108, 112, 2, 116, 32, 0, 110, 1, 109, 105, 110, 97, 109, 2, 116, 32, 0, 110, 1, 109, 105, 110, 105, 2, 116, 32, 0,
+			110, 1, 109, 105, 110, 111, 2, 116, 32, 0, 110, 1, 109, 105, 115, 17, 65, 2, 116, 32, 0, 110, 1, 109, 105, 116, 17, 65, 2, 116,
+			32, 0, 110, 1, 109, 109, 2, 116, 32, 0, 110, 1, 109, 111, 109, 2, 116, 32, 0, 110, 1, 109, 114, 101, 2, 116, 32, 0, 110, 1,
+			109, 114, 117, 111, 116, 2, 116, 32, 0, 110, 1, 109, 117, 17, 67, 111, 2, 116, 32, 0, 110, 1, 109, 117, 100, 2, 116, 32, 0, 110,
+			1, 109, 117, 103, 2, 116, 32, 0, 110, 1, 109, 117, 106, 2, 116, 32, 0, 110, 1, 109, 117, 114, 2, 116, 32, 0, 110, 1, 110, 97,
+			109, 2, 116, 32, 0, 110, 1, 110, 105, 109, 109, 105, 2, 116, 32, 0, 110, 1, 110, 105, 109, 169, 195, 111, 2, 116, 32, 0, 110, 1,
+			110, 105, 116, 110, 111, 2, 116, 32, 0, 110, 1, 110, 105, 116, 114, 101, 2, 116, 32, 0, 110, 1, 112, 114, 17, 65, 29, 2, 116, 32,
+			0, 110, 1, 114, 97, 112, 115, 2, 116, 32, 0, 110, 1, 114, 114, 17, 65, 17, 67, 2, 116, 32, 0, 110, 1, 116, 105, 110, 169, 195,
+			2, 116, 32, 0, 110, 1, 116, 116, 105, 109, 2, 116, 32, 0, 110, 1, 117, 108, 102, 17, 67, 2, 116, 32, 0, 110, 1, 117, 113, 2,
+			100, 32, 0, 110, 1, 117, 113, 169, 195, 2, 116, 32, 0, 110, 2, 17, 67, 17, 65, 0, 110, 2, 17, 67, 17, 67, 0, 110, 2, 110,
+			117, 0, 110, 2, 115, 32, 0, 110, 8, 17, 67, 2, 116, 32, 0, 110, 8, 100, 114, 97, 2, 116, 32, 0, 110, 8, 103, 97, 2, 116,
+			32, 0, 110, 8, 103, 114, 97, 2, 116, 32, 0, 110, 8, 103, 114, 101, 115, 2, 116, 32, 0, 110, 8, 103, 114, 117, 2, 116, 32, 0,
+			110, 8, 108, 97, 116, 2, 116, 32, 0, 110, 8, 108, 111, 100, 2, 116, 32, 0, 110, 8, 109, 105, 99, 2, 116, 32, 0, 110, 8, 109,
+			105, 112, 2, 116, 32, 0, 110, 8, 109, 114, 17, 65, 115, 2, 116, 32, 0, 110, 8, 110, 105, 109, 169, 195, 2, 116, 32, 0, 110, 8,
+			114, 97, 112, 2, 116, 32, 0, 110, 8, 114, 97, 112, 112, 97, 2, 116, 32, 0, 110, 8, 114, 97, 118, 2, 116, 32, 0, 110, 8, 114,
+			111, 108, 102, 2, 116, 32, 0, 110, 8, 114, 117, 97, 108, 2, 116, 32, 0, 110, 8, 116, 97, 108, 2, 116, 32, 0, 110, 8, 116, 97,
+			112, 2, 116, 32, 0, 110, 8, 116, 110, 111, 99, 2, 116, 32, 0, 110, 8, 116, 110, 111, 99, 169, 195, 109, 2, 116, 32, 0, 110, 8,
+			118, 117, 111, 99, 2, 116, 14, 128, 160, 131, 0, 110, 8, 118, 117, 111, 115, 2, 116, 32, 0, 110, 115, 1, 99, 110, 2, 32, 0, 4,
+			110, 2, 104, 17, 65, 3, 113, 50, 0, 110, 8, 2, 17, 65, 0, 110, 2, 32, 3, 113, 134, 0, 4, 110, 116, 1, 103, 105, 100, 110,
+			2, 32, 3, 113, 140, 0, 110, 116, 1, 103, 105, 108, 105, 2, 32, 0, 110, 116, 1, 103, 105, 108, 108, 2, 32, 0, 110, 116, 1, 103,
+			110, 97, 116, 2, 32, 0, 110, 115, 1, 17, 67, 169, 195, 2, 32, 3, 113, 143, 0, 4, 105, 110, 2, 25, 3, 114, 0, 110, 1, 17,
+			65, 17, 65, 2, 32, 0, 110, 1, 100, 111, 2, 100, 114, 0, 110, 1, 105, 17, 67, 2, 25, 0, 110, 1, 109, 97, 120, 2, 32, 0,
+			110, 1, 112, 112, 97, 2, 100, 105, 0, 110, 1, 169, 195, 2, 32, 0, 110, 8, 17, 67, 2, 106, 0, 110, 8, 109, 97, 108, 102, 2,
+			99, 0, 105, 110, 1, 108, 112, 2, 32, 3, 114, 134, 0, 4, 1, 104, 99, 116, 2, 114, 29, 3, 117, 0, 1, 116, 114, 101, 118, 2,
+			114, 29, 0, 117, 1, 103, 0, 117, 2, 17, 67, 29, 0, 117, 2, 17, 67, 101, 29, 0, 117, 2, 105, 0, 117, 2, 108, 101, 29, 0,
+			117, 2, 114, 17, 67, 0, 117, 2, 114, 101, 29, 0, 117, 2, 114, 114, 101, 29, 0, 4, 114, 1, 107, 99, 97, 2, 25, 3, 117, 34,
+			0, 114, 1, 107, 99, 111, 114, 2, 25, 0, 114, 8, 116, 116, 117, 99, 2, 29, 0, 97, 109, 1, 114, 17, 67, 3, 125, 12, 65, 0,
+			97, 110, 101, 114, 1, 108, 17, 67, 3, 125, 50, 117, 34, 0, 97, 109, 101, 114, 1, 114, 17, 67, 3, 125, 65, 117, 34, 0, 4, 117,
+			3, 132, 0, 117, 2, 17, 67, 101, 29, 0, 117, 2, 17, 67, 101, 114, 32, 0, 117, 2, 108, 101, 114, 0, 195, 187, 3, 132, 12, 0,
+			117, 116, 2, 32, 3, 132, 140, 0, 117, 120, 2, 32, 3, 132, 143, 0, 4, 110, 116, 1, 17, 65, 2, 32, 3, 140, 0, 110, 116, 1,
+			100, 105, 17, 67, 169, 195, 26, 2, 32, 0, 110, 116, 1, 103, 105, 2, 32, 0, 110, 116, 1, 103, 114, 101, 118, 26, 2, 32, 0, 110,
+			116, 1, 103, 114, 117, 32, 26, 2, 32, 0, 110, 116, 1, 108, 97, 118, 105, 26, 2, 32, 0, 110, 116, 1, 108, 108, 101, 99, 120, 26,
+			2, 32, 0, 110, 116, 1, 108, 111, 29, 2, 32, 0, 110, 116, 1, 108, 117, 26, 2, 32, 0, 110, 116, 1, 108, 117, 99, 17, 67, 2,
+			32, 0, 110, 116, 1, 108, 117, 101, 2, 32, 0, 110, 116, 1, 109, 114, 101, 102, 26, 2, 32, 0, 110, 116, 1, 114, 97, 112, 32, 26,
+			2, 32, 0, 110, 116, 1, 114, 114, 101, 17, 67, 2, 32, 0, 110, 116, 1, 117, 108, 102, 17, 67, 26, 2, 32, 0, 110, 116, 2, 32,
+			0, 110, 116, 8, 116, 110, 111, 99, 26, 2, 32, 0, 115, 2, 32, 3, 143, 0, 7, 6, 102, 0, 4, 2, 102, 3, 0, 8, 114, 101,
+			110, 2, 29, 3, 0, 4, 105, 114, 101, 8, 2, 17, 67, 17, 65, 3, 21, 0, 105, 114, 101, 8, 2, 17, 67, 17, 67, 17, 65, 0,
+			108, 121, 0, 114, 97, 109, 101, 8, 0, 116, 101, 114, 2, 32, 0, 3, 83, 0, 4, 8, 117, 101, 110, 2, 32, 97, 110, 115, 3, 84,
+			0, 8, 117, 101, 110, 2, 32, 104, 101, 117, 114, 101, 115, 0, 7, 6, 103, 0, 4, 1, 110, 97, 116, 169, 195, 2, 32, 3, 0, 4,
+			1, 114, 117, 111, 98, 2, 32, 3, 0, 4, 8, 110, 97, 114, 2, 32, 3, 0, 4, 8, 110, 97, 115, 2, 32, 3, 0, 4, 8, 110,
+			111, 108, 2, 32, 3, 0, 4, 116, 1, 110, 105, 118, 2, 32, 117, 110, 3, 0, 116, 2, 32, 3, 0, 4, 97, 109, 101, 8, 2, 29,
+			3, 21, 0, 104, 2, 25, 0, 105, 114, 108, 0, 121, 1, 21, 2, 32, 0, 4, 116, 1, 110, 17, 65, 2, 17, 65, 3, 47, 0, 116,
+			1, 110, 105, 118, 2, 32, 17, 65, 0, 116, 1, 110, 105, 118, 2, 32, 99, 105, 110, 113, 0, 116, 1, 110, 105, 118, 2, 32, 100, 101,
+			117, 120, 0, 116, 1, 110, 105, 118, 2, 32, 104, 117, 105, 116, 0, 116, 1, 110, 105, 118, 2, 32, 110, 101, 117, 102, 0, 116, 1, 110,
+			105, 118, 2, 32, 110, 101, 117, 118, 105, 0, 116, 1, 110, 105, 118, 2, 32, 113, 117, 97, 116, 114, 0, 116, 1, 110, 105, 118, 2, 32,
+			115, 101, 112, 116, 0, 116, 1, 110, 105, 118, 2, 32, 115, 105, 120, 0, 116, 1, 110, 105, 118, 2, 32, 116, 114, 111, 105, 115, 0, 110,
+			2, 105, 101, 3, 50, 0, 110, 3, 50, 57, 0, 110, 2, 101, 17, 67, 17, 65, 3, 50, 57, 14, 0, 4, 110, 2, 32, 3, 67, 0,
+			110, 2, 101, 32, 0, 110, 105, 1, 105, 97, 0, 110, 105, 3, 67, 37, 0, 4, 3, 81, 0, 1, 97, 105, 100, 2, 110, 111, 0, 2,
+			17, 67, 0, 2, 32, 0, 8, 97, 2, 110, 111, 0, 103, 0, 117, 2, 105, 0, 110, 101, 114, 8, 97, 119, 2, 32, 3, 81, 50, 112,
+			34, 0, 103, 1, 117, 115, 2, 17, 71, 3, 81, 90, 0, 4, 117, 105, 1, 105, 97, 2, 108, 3, 81, 111, 37, 0, 117, 105, 1, 110,
+			105, 2, 115, 0, 4, 2, 17, 71, 3, 90, 0, 101, 2, 97, 0, 101, 2, 111, 0, 116, 115, 8, 110, 105, 118, 101, 114, 116, 97, 117,
+			113, 2, 32, 3, 143, 0, 7, 6, 104, 0, 4, 3, 0, 4, 8, 2, 97, 98, 105, 3, 0, 4, 8, 2, 97, 108, 108, 111, 3, 0,
+			4, 8, 2, 97, 109, 101, 3, 0, 4, 8, 2, 97, 110, 100, 114, 3, 0, 4, 8, 2, 97, 114, 109, 3, 0, 4, 8, 2, 101, 99,
+			116, 3, 0, 4, 8, 2, 101, 108, 3, 0, 4, 8, 2, 101, 114, 98, 3, 0, 4, 8, 2, 101, 117, 114, 101, 3, 0, 4, 8, 2,
+			105, 98, 101, 114, 3, 0, 4, 8, 2, 105, 112, 112, 111, 3, 0, 4, 8, 2, 105, 114, 111, 3, 0, 4, 8, 2, 105, 115, 116, 3,
+			0, 4, 8, 2, 105, 118, 3, 0, 4, 8, 2, 111, 109, 109, 3, 0, 4, 8, 2, 111, 110, 110, 3, 0, 4, 8, 2, 111, 114, 97,
+			3, 0, 4, 8, 2, 111, 114, 105, 112, 3, 0, 4, 8, 2, 111, 114, 105, 122, 3, 0, 4, 8, 2, 111, 114, 108, 111, 3, 0, 4,
+			8, 2, 111, 114, 111, 3, 0, 4, 8, 2, 111, 114, 114, 3, 0, 4, 8, 2, 111, 115, 3, 0, 4, 8, 2, 117, 105, 108, 3, 0,
+			4, 8, 2, 117, 105, 115, 115, 3, 0, 4, 8, 2, 117, 105, 116, 114, 3, 0, 4, 8, 2, 117, 109, 17, 65, 3, 0, 4, 8, 2,
+			117, 109, 17, 67, 3, 0, 4, 8, 2, 121, 3, 0, 4, 8, 2, 195, 169, 3, 0, 8, 2, 195, 180, 3, 0, 4, 97, 8, 2, 17,
+			67, 32, 3, 21, 0, 97, 108, 102, 8, 0, 110, 0, 4, 8, 3, 23, 0, 8, 2, 195, 169, 114, 105, 115, 0, 8, 2, 195, 169, 114,
+			111, 0, 105, 8, 2, 17, 65, 3, 23, 57, 0, 101, 105, 109, 2, 32, 3, 35, 57, 65, 0, 121, 112, 114, 97, 8, 2, 21, 14, 128,
+			132, 133, 3, 37, 48, 34, 35, 0, 4, 121, 112, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 37, 48, 112, 34, 0, 121, 112, 101, 114,
+			8, 2, 32, 0, 97, 117, 115, 2, 32, 3, 39, 89, 0, 121, 8, 2, 17, 65, 3, 57, 0, 7, 6, 105, 0, 4, 1, 102, 32, 109,
+			97, 114, 2, 108, 101, 3, 21, 0, 2, 112, 17, 65, 100, 0, 98, 117, 116, 101, 114, 2, 29, 0, 101, 118, 0, 102, 101, 2, 32, 0,
+			103, 110, 2, 32, 0, 108, 108, 1, 17, 67, 2, 121, 32, 0, 108, 108, 2, 32, 0, 110, 100, 1, 17, 67, 17, 65, 2, 101, 114, 29,
+			0, 110, 100, 2, 29, 0, 110, 100, 8, 17, 67, 2, 101, 114, 29, 0, 110, 103, 2, 32, 0, 114, 100, 1, 17, 67, 2, 29, 0, 114,
+			116, 1, 17, 67, 2, 32, 0, 118, 101, 110, 2, 32, 0, 122, 101, 2, 25, 0, 4, 1, 108, 102, 102, 111, 2, 110, 101, 32, 3, 35,
+			57, 0, 1, 108, 110, 111, 2, 110, 101, 32, 0, 1, 108, 116, 111, 2, 110, 101, 29, 0, 1, 114, 100, 2, 118, 101, 0, 1, 116, 103,
+			2, 109, 0, 8, 2, 99, 101, 21, 0, 4, 3, 37, 0, 1, 17, 67, 2, 101, 114, 17, 65, 0, 101, 110, 1, 17, 67, 2, 116, 32,
+			0, 101, 110, 1, 118, 169, 195, 100, 2, 116, 32, 0, 108, 8, 2, 108, 0, 110, 2, 110, 0, 115, 1, 17, 67, 2, 32, 0, 110, 2,
+			104, 3, 37, 50, 0, 110, 116, 1, 114, 112, 2, 32, 3, 37, 50, 47, 0, 110, 103, 2, 104, 3, 37, 50, 81, 0, 4, 108, 108, 1,
+			99, 2, 105, 3, 37, 55, 0, 108, 108, 1, 99, 115, 111, 0, 108, 108, 1, 116, 115, 105, 100, 0, 108, 108, 1, 117, 113, 110, 97, 0,
+			108, 108, 1, 118, 2, 101, 32, 0, 108, 108, 8, 18, 70, 0, 4, 108, 108, 1, 17, 67, 3, 37, 57, 0, 108, 108, 1, 117, 103, 0,
+			108, 108, 1, 117, 103, 105, 97, 0, 108, 108, 1, 117, 113, 0, 109, 2, 32, 3, 37, 65, 0, 109, 109, 3, 37, 65, 65, 0, 110, 103,
+			2, 115, 3, 37, 68, 0, 4, 108, 115, 1, 102, 32, 18, 66, 2, 32, 3, 37, 89, 0, 115, 1, 114, 105, 25, 2, 32, 0, 115, 1,
+			114, 111, 98, 2, 32, 0, 115, 1, 114, 111, 100, 2, 32, 0, 115, 1, 114, 111, 116, 2, 32, 0, 4, 101, 110, 1, 108, 99, 2, 17,
+			67, 3, 37, 113, 0, 101, 110, 1, 114, 111, 2, 116, 0, 4, 108, 1, 97, 2, 32, 3, 57, 0, 108, 1, 101, 2, 32, 0, 108, 1,
+			117, 2, 32, 0, 108, 108, 1, 17, 65, 0, 4, 101, 110, 1, 108, 111, 109, 2, 17, 67, 3, 57, 113, 0, 101, 110, 1, 110, 169, 195,
+			118, 2, 17, 67, 0, 101, 110, 1, 112, 105, 99, 2, 17, 67, 0, 101, 110, 1, 116, 97, 2, 116, 32, 0, 101, 110, 1, 116, 111, 2,
+			116, 32, 0, 4, 101, 110, 1, 116, 2, 25, 32, 3, 57, 114, 0, 101, 110, 1, 118, 2, 25, 32, 0, 4, 109, 2, 17, 67, 3, 114,
+			0, 110, 2, 17, 67, 0, 110, 2, 32, 0, 110, 99, 116, 2, 32, 0, 4, 110, 116, 101, 114, 8, 2, 32, 3, 114, 47, 6, 112, 34,
+			0, 110, 116, 101, 114, 8, 2, 110, 101, 32, 0, 4, 110, 116, 114, 97, 8, 2, 110, 101, 14, 128, 132, 133, 3, 114, 47, 34, 35, 0,
+			110, 116, 114, 97, 8, 2, 117, 14, 128, 132, 133, 0, 4, 110, 116, 101, 114, 8, 2, 21, 21, 14, 128, 132, 133, 3, 114, 47, 112, 34,
+			0, 110, 116, 101, 114, 114, 8, 2, 17, 65, 0, 110, 102, 114, 97, 8, 2, 115, 14, 128, 132, 133, 3, 114, 83, 34, 35, 0, 114, 116,
+			1, 108, 102, 3, 117, 34, 47, 0, 7, 6, 106, 0, 4, 8, 2, 111, 98, 25, 3, 75, 0, 8, 2, 111, 104, 25, 0, 97, 122, 122,
+			8, 3, 75, 35, 88, 0, 4, 3, 90, 0, 39, 8, 2, 14, 128, 140, 130, 0, 101, 2, 97, 0, 117, 115, 113, 117, 39, 8, 2, 14,
+			128, 132, 134, 3, 90, 111, 89, 49, 0, 7, 6, 107, 0, 4, 1, 17, 67, 17, 65, 2, 29, 3, 21, 0, 101, 2, 32, 0, 101, 2,
+			110, 29, 0, 101, 2, 114, 29, 0, 101, 2, 115, 32, 0, 3, 49, 0, 7, 6, 108, 0, 4, 1, 105, 17, 67, 117, 2, 32, 3, 0,
+			4, 1, 105, 116, 110, 2, 32, 3, 0, 116, 1, 117, 97, 3, 0, 4, 1, 17, 67, 11, 2, 101, 29, 3, 21, 0, 1, 17, 67, 17,
+			65, 2, 29, 0, 100, 1, 111, 2, 32, 0, 100, 1, 117, 2, 32, 0, 101, 115, 115, 2, 32, 0, 105, 110, 101, 8, 2, 29, 0, 105,
+			118, 101, 8, 0, 111, 117, 100, 1, 21, 2, 32, 0, 4, 3, 55, 0, 1, 102, 102, 2, 101, 29, 0, 1, 112, 112, 2, 101, 29, 0,
+			39, 8, 2, 14, 128, 132, 130, 0, 108, 2, 17, 65, 0, 111, 114, 115, 113, 117, 39, 8, 2, 14, 128, 132, 135, 3, 55, 39, 34, 89,
+			49, 0, 4, 104, 1, 105, 116, 110, 3, 57, 0, 108, 1, 105, 117, 0, 7, 6, 109, 0, 4, 2, 110, 32, 3, 21, 0, 97, 105, 108,
+			1, 100, 0, 97, 105, 108, 1, 101, 0, 97, 105, 108, 1, 103, 0, 97, 105, 108, 1, 116, 0, 111, 118, 2, 17, 65, 29, 0, 111, 118,
+			2, 105, 101, 32, 0, 4, 3, 65, 0, 39, 8, 2, 14, 128, 140, 130, 0, 109, 0, 99, 8, 2, 21, 14, 128, 132, 130, 3, 65, 35,
+			49, 0, 97, 115, 116, 101, 114, 2, 32, 14, 128, 128, 134, 3, 65, 35, 89, 47, 117, 34, 0, 115, 8, 2, 14, 128, 132, 130, 3, 112,
+			65, 112, 89, 0, 7, 6, 110, 0, 4, 2, 101, 109, 101, 32, 3, 21, 0, 2, 101, 109, 101, 115, 32, 0, 97, 109, 101, 8, 0, 97,
+			109, 101, 8, 101, 114, 0, 4, 3, 50, 0, 39, 8, 2, 14, 128, 140, 130, 0, 110, 0, 103, 104, 3, 50, 81, 0, 8, 2, 32, 194,
+			176, 3, 50, 111, 65, 36, 34, 39, 0, 101, 114, 8, 17, 67, 17, 65, 119, 2, 32, 3, 50, 112, 34, 0, 101, 117, 114, 111, 8, 2,
+			21, 21, 14, 128, 132, 133, 3, 50, 132, 34, 39, 0, 103, 2, 32, 3, 68, 0, 118, 100, 97, 8, 2, 14, 128, 132, 132, 3, 112, 50,
+			84, 36, 72, 36, 35, 0, 7, 6, 111, 0, 4, 2, 108, 100, 101, 114, 32, 3, 21, 0, 8, 2, 114, 100, 101, 114, 32, 0, 97, 2,
+			17, 67, 101, 114, 29, 0, 97, 2, 29, 0, 97, 99, 104, 0, 101, 115, 0, 102, 8, 2, 29, 0, 105, 110, 103, 1, 17, 67, 2, 32,
+			0, 110, 1, 116, 103, 2, 32, 0, 110, 1, 116, 115, 17, 67, 2, 32, 0, 110, 101, 8, 0, 111, 2, 17, 67, 101, 0, 111, 2, 29,
+			0, 111, 2, 107, 0, 111, 2, 115, 116, 0, 111, 116, 1, 17, 67, 0, 116, 8, 17, 67, 115, 0, 117, 100, 1, 17, 67, 29, 2, 29,
+			0, 117, 100, 1, 108, 2, 29, 0, 117, 110, 2, 17, 67, 0, 118, 101, 114, 8, 0, 119, 2, 29, 0, 119, 2, 101, 0, 121, 8, 17,
+			67, 2, 29, 0, 117, 8, 2, 97, 116, 3, 23, 40, 0, 110, 8, 2, 122, 3, 23, 116, 0, 101, 8, 104, 112, 2, 17, 67, 3, 36,
+			0, 4, 1, 17, 67, 2, 109, 101, 32, 3, 39, 0, 2, 32, 0, 2, 101, 17, 67, 0, 2, 115, 17, 65, 0, 2, 116, 32, 0, 2,
+			122, 17, 65, 0, 99, 1, 114, 98, 2, 32, 0, 99, 1, 114, 99, 2, 32, 0, 105, 8, 2, 103, 110, 111, 110, 0, 111, 1, 122, 0,
+			112, 8, 108, 97, 103, 2, 32, 0, 112, 8, 114, 105, 115, 2, 32, 0, 115, 1, 32, 115, 2, 32, 0, 115, 1, 32, 120, 2, 32, 0,
+			115, 8, 118, 2, 103, 17, 71, 0, 115, 116, 1, 118, 2, 32, 0, 4, 97, 2, 32, 3, 39, 35, 0, 97, 2, 115, 32, 0, 111, 1,
+			122, 2, 17, 67, 3, 39, 39, 0, 115, 115, 1, 114, 103, 3, 39, 89, 0, 4, 111, 1, 122, 2, 109, 3, 40, 0, 117, 0, 117, 101,
+			2, 109, 17, 65, 0, 117, 112, 8, 17, 67, 2, 32, 0, 195, 185, 0, 195, 187, 0, 117, 2, 105, 110, 3, 58, 0, 4, 101, 2, 108,
+			108, 17, 65, 3, 58, 35, 0, 105, 0, 121, 0, 195, 170, 2, 108, 0, 121, 2, 17, 65, 3, 58, 35, 57, 0, 4, 105, 110, 2, 17,
+			67, 3, 58, 114, 0, 105, 110, 2, 32, 0, 4, 109, 1, 110, 2, 29, 3, 116, 0, 109, 2, 18, 76, 0, 110, 2, 25, 0, 110, 8,
+			99, 2, 32, 0, 110, 116, 8, 109, 2, 109, 0, 110, 116, 8, 109, 2, 112, 17, 65, 17, 67, 0, 110, 116, 8, 109, 2, 114, 17, 65,
+			97, 108, 0, 110, 115, 104, 2, 17, 65, 3, 116, 88, 0, 110, 8, 17, 67, 2, 32, 3, 116, 134, 0, 110, 2, 116, 32, 3, 116, 140,
+			0, 4, 101, 2, 105, 3, 117, 0, 101, 8, 104, 112, 2, 110, 32, 0, 101, 117, 0, 4, 3, 127, 0, 2, 17, 67, 17, 67, 0, 8,
+			17, 67, 2, 109, 101, 32, 0, 8, 121, 2, 121, 0, 110, 2, 110, 0, 111, 1, 99, 108, 97, 2, 108, 0, 121, 8, 99, 2, 111, 3,
+			127, 37, 0, 110, 104, 2, 17, 65, 3, 127, 50, 0, 121, 8, 98, 2, 99, 111, 3, 127, 57, 0, 109, 2, 32, 3, 127, 65, 0, 115,
+			8, 2, 32, 12, 12, 3, 127, 89, 0, 4, 101, 8, 2, 17, 67, 3, 132, 0, 101, 117, 100, 0, 101, 117, 102, 115, 2, 32, 0, 101,
+			117, 2, 120, 3, 132, 143, 0, 7, 6, 112, 0, 4, 1, 97, 98, 2, 116, 3, 0, 4, 1, 97, 114, 100, 2, 32, 3, 0, 4, 1,
+			108, 117, 99, 115, 2, 116, 3, 0, 4, 1, 109, 97, 99, 2, 32, 3, 0, 4, 1, 109, 97, 104, 99, 2, 32, 3, 0, 4, 1, 109,
+			111, 99, 2, 116, 3, 0, 4, 2, 112, 3, 0, 4, 115, 1, 109, 2, 32, 3, 0, 4, 115, 1, 114, 2, 32, 3, 0, 116, 1, 17,
+			67, 2, 32, 3, 0, 4, 97, 100, 2, 32, 3, 21, 0, 108, 117, 103, 0, 114, 105, 110, 116, 101, 114, 2, 32, 0, 4, 116, 1, 101,
+			115, 2, 32, 3, 47, 0, 116, 1, 101, 115, 2, 105, 195, 168, 0, 3, 48, 0, 97, 114, 97, 8, 2, 112, 17, 67, 14, 128, 132, 132,
+			3, 48, 35, 34, 35, 0, 111, 108, 121, 8, 2, 21, 14, 128, 132, 132, 3, 48, 39, 55, 37, 0, 4, 111, 115, 116, 8, 2, 17, 65,
+			17, 67, 17, 67, 14, 128, 132, 132, 3, 48, 39, 89, 47, 0, 111, 115, 116, 8, 2, 17, 67, 14, 128, 132, 132, 0, 115, 121, 99, 104,
+			8, 2, 21, 14, 128, 132, 133, 3, 48, 89, 37, 49, 0, 4, 115, 121, 99, 104, 8, 2, 17, 65, 17, 65, 32, 14, 128, 132, 133, 3,
+			48, 89, 37, 91, 0, 115, 121, 99, 104, 8, 2, 105, 17, 67, 14, 128, 132, 133, 0, 115, 101, 117, 100, 111, 8, 2, 21, 14, 128, 132,
+			134, 3, 48, 89, 132, 72, 39, 0, 117, 105, 115, 113, 117, 39, 8, 2, 14, 128, 132, 135, 3, 48, 111, 37, 89, 49, 0, 97, 121, 115,
+			3, 48, 112, 37, 143, 0, 104, 3, 83, 0, 104, 111, 116, 111, 8, 2, 21, 14, 128, 132, 133, 3, 83, 39, 47, 39, 0, 7, 6, 113,
+			0, 4, 1, 110, 2, 32, 99, 101, 110, 116, 32, 3, 0, 1, 110, 2, 32, 109, 105, 108, 108, 3, 0, 117, 105, 99, 107, 3, 21, 0,
+			4, 3, 49, 0, 1, 110, 2, 32, 0, 117, 0, 117, 39, 8, 2, 17, 65, 14, 128, 132, 131, 0, 117, 101, 8, 2, 32, 3, 49, 13,
+			0, 117, 97, 8, 2, 100, 114, 105, 108, 108, 3, 49, 35, 0, 117, 8, 97, 2, 105, 102, 3, 49, 40, 0, 4, 117, 97, 1, 169, 195,
+			100, 3, 49, 58, 35, 0, 117, 97, 8, 2, 100, 0, 117, 97, 8, 2, 114, 116, 122, 0, 117, 97, 8, 2, 116, 17, 65, 0, 117, 97,
+			8, 17, 65, 0, 117, 97, 8, 17, 67, 0, 117, 97, 8, 97, 0, 117, 97, 110, 8, 2, 116, 17, 65, 3, 49, 58, 113, 0, 4, 117,
+			105, 8, 17, 65, 2, 100, 105, 115, 116, 3, 49, 111, 37, 0, 117, 105, 8, 17, 65, 2, 108, 97, 116, 0, 7, 6, 114, 0, 4, 2,
+			17, 67, 121, 32, 3, 21, 0, 101, 97, 108, 8, 0, 115, 116, 2, 32, 0, 117, 108, 101, 8, 0, 4, 3, 34, 0, 114, 0, 114, 1,
+			117, 111, 99, 2, 105, 0, 114, 1, 117, 111, 99, 2, 111, 0, 4, 114, 1, 117, 111, 99, 3, 34, 34, 0, 114, 1, 117, 111, 109, 0,
+			114, 8, 117, 115, 0, 97, 100, 105, 111, 8, 2, 21, 14, 128, 132, 133, 3, 34, 35, 72, 37, 39, 0, 7, 6, 115, 0, 4, 1, 117,
+			17, 67, 2, 32, 3, 0, 4, 1, 117, 99, 111, 100, 2, 32, 3, 0, 4, 1, 117, 99, 169, 195, 2, 32, 3, 0, 4, 1, 117, 103,
+			105, 2, 32, 3, 0, 4, 1, 117, 109, 169, 195, 2, 32, 3, 0, 4, 1, 117, 110, 101, 2, 32, 3, 0, 4, 1, 117, 114, 97, 2,
+			32, 3, 0, 4, 1, 117, 114, 117, 111, 2, 32, 3, 0, 4, 1, 117, 116, 105, 97, 2, 32, 3, 0, 4, 8, 117, 98, 17, 65, 2,
+			32, 3, 0, 4, 8, 117, 109, 2, 32, 3, 0, 4, 8, 117, 111, 116, 2, 32, 17, 67, 101, 115, 32, 3, 0, 4, 8, 117, 111, 116,
+			2, 32, 17, 67, 111, 115, 32, 3, 0, 8, 117, 111, 116, 2, 32, 108, 101, 117, 114, 115, 32, 3, 0, 4, 8, 17, 65, 2, 32, 3,
+			21, 0, 101, 110, 100, 2, 32, 0, 101, 114, 118, 101, 114, 8, 2, 29, 0, 104, 2, 17, 65, 112, 0, 104, 2, 17, 65, 116, 0, 104,
+			2, 32, 0, 105, 100, 101, 1, 18, 79, 2, 29, 12, 12, 12, 0, 105, 100, 101, 8, 2, 29, 12, 12, 12, 0, 107, 121, 8, 0, 109,
+			105, 108, 8, 0, 111, 110, 1, 18, 78, 2, 32, 0, 112, 121, 0, 116, 111, 110, 1, 18, 78, 2, 32, 0, 116, 111, 110, 101, 2, 32,
+			0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 0, 1, 98, 117, 2, 105, 115, 0, 1, 110, 97, 114, 116, 2, 17, 65, 0, 2, 98, 0,
+			2, 100, 0, 2, 103, 0, 2, 106, 0, 2, 118, 0, 8, 108, 97, 2, 97, 99, 0, 104, 1, 169, 195, 100, 2, 17, 65, 0, 4, 3,
+			89, 0, 1, 17, 65, 2, 111, 102, 116, 0, 1, 17, 65, 2, 111, 108, 32, 0, 1, 97, 107, 97, 2, 32, 0, 1, 97, 115, 110, 97,
+			107, 2, 32, 0, 1, 105, 97, 2, 101, 109, 0, 1, 110, 97, 114, 116, 2, 101, 0, 1, 110, 97, 114, 116, 2, 117, 98, 0, 1, 111,
+			114, 116, 97, 98, 2, 32, 0, 1, 111, 114, 169, 195, 99, 111, 2, 32, 0, 1, 117, 98, 17, 65, 2, 32, 0, 1, 117, 98, 109, 2,
+			32, 0, 1, 117, 99, 17, 65, 2, 32, 0, 1, 117, 100, 111, 2, 32, 0, 1, 117, 103, 2, 32, 0, 1, 117, 105, 2, 32, 0, 1,
+			117, 108, 117, 17, 67, 2, 32, 0, 1, 117, 108, 121, 2, 32, 0, 1, 117, 109, 2, 32, 0, 1, 117, 110, 17, 65, 2, 32, 0, 1,
+			117, 112, 111, 2, 32, 0, 1, 117, 114, 17, 65, 2, 32, 0, 1, 117, 115, 97, 2, 32, 0, 1, 117, 115, 112, 2, 32, 0, 1, 117,
+			115, 115, 101, 99, 2, 32, 0, 1, 117, 116, 97, 2, 32, 0, 1, 117, 116, 99, 2, 32, 0, 1, 117, 116, 101, 2, 32, 0, 1, 117,
+			116, 105, 2, 32, 0, 1, 117, 116, 108, 2, 32, 0, 1, 117, 116, 111, 2, 32, 0, 1, 117, 116, 117, 17, 67, 2, 32, 0, 1, 117,
+			175, 195, 2, 32, 0, 1, 168, 195, 17, 67, 97, 2, 32, 0, 1, 168, 195, 110, 2, 32, 0, 8, 117, 2, 32, 0, 8, 117, 111, 116,
+			2, 32, 0, 8, 117, 111, 116, 2, 32, 100, 101, 115, 32, 0, 8, 117, 112, 17, 67, 17, 65, 99, 2, 32, 0, 39, 8, 2, 14, 128,
+			140, 130, 0, 39, 8, 2, 101, 115, 29, 14, 128, 140, 130, 0, 115, 0, 195, 167, 0, 99, 105, 101, 110, 2, 116, 3, 89, 37, 113, 0,
+			111, 99, 105, 111, 8, 2, 21, 14, 128, 132, 133, 3, 89, 39, 89, 37, 39, 0, 4, 99, 104, 2, 105, 101, 3, 89, 49, 0, 99, 104,
+			2, 105, 122, 0, 99, 104, 2, 111, 108, 0, 99, 104, 2, 111, 111, 0, 117, 112, 114, 97, 8, 2, 21, 14, 128, 132, 133, 3, 89, 111,
+			48, 34, 35, 0, 4, 117, 112, 101, 114, 8, 2, 21, 21, 14, 128, 132, 133, 3, 89, 111, 48, 112, 34, 0, 117, 112, 101, 114, 8, 2,
+			32, 0, 4, 99, 104, 3, 91, 0, 104, 0, 99, 104, 117, 3, 91, 40, 0, 116, 101, 105, 110, 2, 32, 3, 91, 47, 35, 57, 50, 0,
+			113, 108, 2, 32, 14, 128, 128, 131, 3, 112, 89, 49, 111, 112, 55, 0, 4, 1, 117, 108, 112, 2, 32, 3, 143, 0, 2, 32, 14, 128,
+			128, 129, 0, 7, 6, 116, 0, 4, 1, 108, 117, 97, 2, 32, 3, 0, 4, 1, 110, 2, 32, 3, 0, 4, 1, 114, 2, 32, 3, 0,
+			4, 2, 32, 3, 0, 104, 1, 115, 2, 109, 3, 0, 4, 1, 105, 2, 117, 110, 101, 29, 3, 21, 0, 1, 114, 97, 17, 67, 115, 2,
+			32, 0, 1, 114, 97, 17, 67, 115, 2, 101, 114, 32, 0, 104, 2, 17, 65, 0, 104, 2, 25, 0, 105, 109, 101, 8, 0, 108, 101, 2,
+			32, 0, 111, 110, 1, 103, 2, 32, 0, 111, 111, 0, 114, 121, 2, 32, 0, 116, 108, 0, 117, 110, 8, 2, 17, 65, 29, 0, 4, 3,
+			47, 0, 1, 17, 67, 2, 32, 0, 1, 26, 2, 105, 111, 110, 0, 1, 99, 101, 26, 2, 105, 111, 110, 0, 1, 101, 17, 67, 2, 105,
+			111, 110, 115, 0, 1, 101, 104, 99, 97, 2, 105, 111, 110, 0, 1, 105, 17, 67, 169, 195, 2, 105, 111, 110, 115, 0, 1, 105, 97, 2,
+			105, 111, 110, 0, 1, 105, 98, 97, 104, 2, 105, 111, 110, 115, 0, 1, 105, 99, 2, 105, 111, 110, 115, 0, 1, 105, 107, 2, 32, 0,
+			1, 105, 109, 105, 2, 105, 111, 110, 115, 0, 1, 105, 110, 97, 114, 103, 2, 32, 0, 1, 105, 111, 2, 105, 111, 110, 0, 1, 105, 115,
+			105, 17, 67, 2, 105, 111, 110, 0, 1, 110, 97, 2, 105, 97, 0, 1, 110, 97, 104, 99, 2, 105, 111, 110, 0, 1, 110, 101, 115, 2,
+			105, 111, 110, 32, 0, 1, 112, 101, 26, 2, 105, 111, 110, 0, 1, 112, 109, 111, 99, 2, 105, 111, 110, 115, 0, 1, 114, 111, 112, 17,
+			65, 2, 105, 111, 110, 0, 1, 114, 111, 112, 17, 67, 2, 105, 111, 110, 0, 1, 114, 111, 115, 2, 105, 111, 110, 0, 1, 115, 2, 105,
+			111, 110, 0, 1, 116, 2, 105, 111, 110, 0, 1, 117, 17, 65, 26, 2, 105, 111, 110, 0, 1, 169, 195, 26, 2, 105, 111, 110, 0, 1,
+			170, 195, 114, 2, 105, 111, 110, 0, 8, 0, 8, 17, 65, 115, 110, 97, 114, 116, 2, 32, 0, 8, 97, 116, 2, 105, 111, 110, 0, 8,
+			101, 99, 2, 32, 0, 39, 8, 2, 14, 128, 140, 130, 0, 104, 0, 104, 1, 114, 111, 2, 12, 12, 0, 104, 2, 17, 65, 114, 17, 65,
+			12, 12, 0, 104, 2, 18, 77, 12, 12, 0, 104, 2, 111, 17, 67, 17, 65, 0, 104, 8, 2, 101, 114, 109, 0, 116, 0, 8, 2, 32,
+			3, 47, 36, 0, 4, 101, 108, 101, 8, 3, 47, 36, 55, 36, 0, 195, 169, 108, 195, 169, 8, 2, 21, 14, 128, 132, 132, 0, 104, 101,
+			114, 109, 111, 8, 2, 21, 14, 128, 132, 134, 3, 47, 112, 34, 65, 39, 0, 4, 1, 17, 67, 2, 105, 101, 117, 3, 89, 0, 1, 97,
+			2, 105, 97, 0, 1, 97, 2, 105, 101, 110, 0, 1, 97, 109, 17, 65, 2, 105, 101, 29, 0, 1, 97, 114, 99, 2, 105, 101, 29, 0,
+			1, 99, 110, 17, 65, 17, 67, 2, 105, 111, 110, 0, 1, 105, 2, 105, 101, 110, 0, 1, 105, 110, 105, 2, 105, 17, 65, 0, 1, 105,
+			115, 2, 105, 111, 110, 0, 1, 105, 116, 169, 195, 2, 105, 111, 110, 0, 1, 110, 97, 2, 105, 97, 116, 0, 1, 110, 101, 2, 105, 97,
+			0, 1, 111, 2, 105, 101, 110, 0, 1, 112, 2, 105, 97, 0, 1, 114, 2, 105, 97, 0, 1, 114, 97, 109, 2, 105, 101, 110, 0, 1,
+			114, 101, 110, 2, 105, 101, 0, 1, 114, 111, 112, 111, 2, 105, 111, 110, 0, 1, 117, 98, 108, 2, 105, 17, 65, 0, 1, 117, 108, 2,
+			105, 111, 110, 0, 1, 117, 110, 2, 105, 101, 29, 0, 1, 169, 195, 109, 97, 2, 105, 101, 29, 0, 1, 169, 195, 112, 105, 2, 105, 101,
+			29, 0, 2, 105, 17, 65, 109, 0, 2, 105, 101, 108, 0, 2, 105, 101, 117, 0, 2, 105, 111, 32, 0, 2, 105, 111, 110, 0, 4, 105,
+			101, 110, 1, 105, 110, 2, 116, 32, 3, 89, 37, 0, 105, 101, 110, 1, 117, 98, 2, 116, 32, 0, 4, 1, 17, 65, 2, 45, 3, 140,
+			0, 1, 45, 2, 45, 0, 1, 105, 17, 67, 26, 2, 32, 0, 1, 105, 116, 101, 112, 2, 32, 0, 1, 110, 26, 2, 32, 0, 1, 105,
+			117, 104, 2, 32, 3, 141, 0, 115, 2, 32, 14, 128, 128, 129, 3, 143, 0, 7, 6, 117, 0, 1, 103, 2, 17, 65, 3, 0, 4, 1,
+			114, 2, 110, 29, 3, 21, 0, 97, 108, 1, 18, 68, 2, 32, 0, 99, 104, 2, 32, 0, 105, 1, 17, 67, 2, 99, 101, 0, 108, 116,
+			1, 17, 67, 2, 32, 0, 109, 98, 101, 114, 2, 32, 0, 109, 112, 2, 32, 0, 110, 8, 17, 67, 2, 32, 0, 110, 8, 17, 67, 2,
+			110, 121, 0, 110, 99, 104, 0, 110, 100, 101, 114, 0, 112, 2, 32, 0, 112, 8, 2, 17, 67, 0, 114, 110, 2, 29, 0, 115, 105, 8,
+			98, 0, 115, 116, 2, 32, 0, 122, 122, 0, 4, 1, 103, 2, 97, 121, 3, 40, 0, 1, 107, 175, 195, 97, 104, 2, 29, 0, 1, 112,
+			2, 116, 115, 99, 104, 0, 99, 99, 105, 1, 17, 67, 3, 40, 76, 37, 0, 4, 97, 1, 103, 2, 108, 32, 3, 58, 35, 0, 97, 1,
+			103, 97, 2, 29, 0, 97, 1, 103, 105, 116, 17, 67, 2, 32, 0, 97, 8, 103, 0, 4, 3, 111, 0, 1, 103, 2, 195, 171, 0, 1,
+			103, 2, 195, 175, 0, 108, 8, 99, 2, 32, 0, 110, 2, 110, 0, 120, 1, 108, 102, 2, 32, 0, 105, 3, 111, 37, 0, 121, 2, 17,
+			65, 3, 111, 37, 57, 0, 108, 116, 114, 97, 8, 2, 14, 128, 132, 133, 3, 111, 55, 47, 34, 35, 0, 105, 110, 2, 25, 3, 111, 114,
+			0, 4, 109, 1, 102, 2, 32, 3, 115, 0, 109, 2, 18, 76, 0, 110, 1, 17, 67, 17, 67, 2, 32, 0, 110, 2, 17, 67, 0, 110,
+			8, 104, 2, 32, 0, 110, 116, 1, 114, 112, 2, 32, 0, 4, 110, 1, 99, 117, 2, 32, 3, 115, 134, 0, 110, 2, 32, 0, 4, 1,
+			17, 67, 2, 98, 29, 3, 117, 0, 1, 17, 67, 2, 103, 29, 0, 8, 17, 67, 2, 114, 102, 29, 0, 8, 108, 98, 2, 102, 102, 0,
+			8, 110, 2, 114, 115, 101, 0, 8, 115, 2, 114, 102, 101, 29, 0, 101, 2, 105, 108, 0, 122, 2, 122, 0, 109, 2, 32, 3, 127, 65,
+			0, 7, 6, 118, 0, 4, 111, 105, 99, 101, 2, 29, 3, 21, 0, 111, 105, 100, 2, 32, 0, 121, 2, 32, 0, 3, 84, 0, 105, 101,
+			119, 2, 29, 3, 84, 57, 40, 0, 105, 101, 119, 8, 2, 17, 65, 3, 84, 57, 40, 84, 0, 101, 114, 115, 2, 32, 3, 84, 112, 34,
+			143, 0, 101, 114, 1, 105, 114, 100, 2, 29, 3, 84, 117, 34, 0, 7, 6, 119, 0, 4, 8, 2, 17, 65, 17, 67, 3, 21, 0, 8,
+			2, 17, 65, 105, 0, 97, 114, 0, 97, 118, 0, 97, 121, 0, 101, 8, 0, 104, 0, 110, 1, 17, 65, 0, 111, 114, 0, 114, 0, 8,
+			2, 17, 65, 3, 23, 58, 0, 4, 3, 58, 0, 8, 2, 17, 65, 17, 67, 111, 0, 8, 2, 17, 65, 116, 116, 0, 8, 2, 105, 110,
+			97, 0, 2, 97, 103, 12, 12, 3, 84, 0, 7, 6, 120, 0, 4, 1, 105, 97, 2, 32, 3, 0, 4, 1, 105, 111, 2, 32, 3, 0,
+			4, 1, 105, 114, 2, 32, 3, 0, 8, 117, 97, 2, 113, 117, 101, 108, 3, 0, 109, 108, 2, 32, 14, 128, 128, 131, 3, 23, 37, 49,
+			89, 112, 65, 112, 55, 0, 8, 2, 17, 67, 14, 128, 132, 129, 3, 37, 49, 89, 0, 4, 3, 49, 89, 0, 1, 101, 18, 68, 2, 17,
+			65, 0, 120, 0, 4, 1, 101, 2, 17, 65, 3, 81, 88, 0, 8, 2, 17, 65, 0, 8, 101, 2, 104, 0, 8, 101, 110, 105, 2, 17,
+			65, 0, 4, 1, 105, 100, 2, 105, 195, 168, 3, 88, 0, 1, 105, 115, 2, 105, 195, 168, 0, 1, 117, 101, 100, 2, 105, 195, 168, 0,
+			8, 105, 100, 2, 32, 110, 101, 117, 102, 0, 4, 8, 105, 111, 115, 2, 17, 65, 3, 89, 0, 8, 105, 115, 2, 32, 110, 101, 117, 0,
+			1, 117, 17, 65, 2, 32, 3, 143, 0, 4, 8, 105, 100, 2, 32, 3, 144, 0, 8, 105, 115, 2, 32, 0, 7, 6, 121, 0, 4, 1,
+			17, 67, 2, 101, 32, 3, 21, 0, 1, 17, 67, 11, 2, 32, 0, 1, 17, 67, 17, 65, 2, 32, 0, 1, 17, 67, 101, 17, 67, 21,
+			2, 32, 0, 1, 17, 67, 110, 2, 32, 0, 97, 99, 104, 116, 8, 0, 122, 101, 0, 8, 2, 17, 65, 3, 23, 57, 0, 4, 3, 37,
+			0, 1, 115, 115, 2, 32, 0, 2, 110, 110, 0, 115, 1, 29, 2, 32, 3, 37, 89, 0, 8, 2, 101, 117, 3, 57, 0, 97, 104, 111,
+			111, 8, 2, 14, 128, 132, 133, 3, 57, 35, 6, 40, 0, 4, 109, 2, 18, 76, 3, 114, 0, 109, 2, 32, 0, 110, 2, 25, 0, 7,
+			6, 122, 0, 3, 88, 0, 101, 114, 1, 116, 2, 32, 3, 88, 112, 34, 0, 101, 114, 1, 17, 67, 2, 32, 3, 88, 117, 34, 0, 1,
+			116, 3, 89, 0, 7, 6, 0, 194, 176, 8, 32, 110, 3, 0, 39, 2, 17, 67, 3, 21, 0, 195, 162, 3, 35, 12, 0, 195, 169, 3,
+			36, 0, 195, 182, 3, 39, 0, 195, 177, 3, 67, 0, 194, 176, 3, 72, 13, 81, 34, 36, 0, 36, 3, 72, 127, 55, 35, 34, 0, 195,
+			188, 3, 111, 0, 195, 187, 3, 111, 12, 0, 195, 170, 3, 112, 0, 58, 8, 32, 18, 81, 2, 32, 18, 82, 15, 32, 3, 117, 34, 0,
+			7, 0, 0};
+		autoFileInMemory espeakdata_dicts21 = FileInMemory_createWithData (21422, reinterpret_cast<const char *> (&espeakdata_dicts21_data), 
+			U"espeak-1.48.04-source/espeak-data/fr_dict", 
 			U"fr");
-		Collection_addItem (me.peek(), espeakdata_dicts19.transfer());
+		my addItem_move (espeakdata_dicts21.move());
 
-		static unsigned char espeakdata_dicts20_data[1093] = {
-			0, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts22_data[8918] = {
+			0, 4, 0, 0, 81, 15, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 13, 0, 0, 0, 0, 0, 7, 65, 8, 71, 108, 0, 49, 0,
+			0, 0, 0, 6, 65, 12, 89, 108, 0, 0, 0, 0, 0, 7, 65, 16, 72, 108, 0, 49, 0, 0, 10, 67, 28, 19, 128, 81, 120, 50,
+			0, 72, 0, 11, 4, 95, 100, 112, 116, 48, 116, 50, 49, 0, 0, 5, 65, 20, 108, 0, 0, 0, 0, 0, 6, 65, 24, 113, 83, 0,
+			0, 0, 0, 0, 7, 65, 28, 75, 108, 0, 49, 0, 0, 11, 67, 76, 19, 128, 89, 6, 35, 50, 0, 41, 9, 67, 76, 19, 128, 89,
+			13, 50, 0, 0, 8, 67, 56, 145, 200, 50, 108, 0, 0, 7, 65, 32, 132, 76, 0, 49, 0, 0, 0, 0, 6, 65, 36, 109, 0, 72,
+			0, 12, 1, 37, 83, 13, 108, 50, 81, 110, 13, 73, 0, 0, 0, 0, 6, 65, 40, 75, 132, 0, 0, 0, 0, 0, 6, 65, 44, 49,
+			132, 0, 0, 0, 8, 1, 46, 48, 116, 50, 49, 0, 0, 0, 11, 67, 53, 84, 129, 65, 117, 34, 13, 0, 72, 6, 65, 48, 113, 55,
+			0, 0, 0, 0, 0, 7, 65, 52, 113, 65, 0, 49, 0, 0, 0, 0, 7, 65, 56, 113, 50, 0, 49, 0, 0, 13, 67, 80, 144, 203,
+			124, 13, 89, 101, 120, 65, 13, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 108, 0, 0, 16, 70, 53, 82, 71, 32, 83, 192, 65,
+			119, 6, 108, 15, 6, 122, 0, 7, 66, 4, 32, 13, 71, 0, 0, 10, 67, 36, 224, 64, 109, 50, 13, 0, 72, 0, 0, 7, 65, 68,
+			49, 57, 124, 0, 0, 15, 70, 12, 128, 84, 32, 18, 82, 101, 6, 120, 107, 13, 34, 0, 0, 0, 0, 6, 65, 72, 35, 34, 0, 0,
+			15, 66, 5, 32, 113, 34, 6, 35, 91, 0, 81, 97, 105, 115, 32, 7, 66, 5, 32, 113, 34, 0, 0, 0, 0, 11, 65, 76, 91, 6,
+			108, 0, 81, 195, 173, 32, 11, 65, 76, 91, 6, 110, 0, 81, 195, 169, 32, 0, 11, 68, 77, 0, 67, 20, 89, 48, 123, 89, 0, 0,
+			0, 0, 7, 65, 80, 47, 108, 0, 49, 0, 0, 0, 9, 67, 4, 50, 0, 120, 101, 0, 72, 0, 6, 65, 84, 57, 124, 0, 0, 0,
+			0, 0, 6, 65, 88, 84, 108, 0, 0, 7, 66, 5, 48, 120, 89, 0, 0, 0, 13, 4, 95, 49, 77, 52, 6, 71, 37, 55, 124, 50,
+			0, 0, 12, 65, 92, 72, 6, 116, 71, 13, 55, 57, 124, 0, 0, 0, 0, 0, 12, 4, 95, 49, 77, 49, 65, 6, 108, 55, 113, 0,
+			7, 65, 96, 113, 49, 89, 0, 0, 13, 4, 95, 49, 77, 50, 6, 65, 37, 55, 124, 50, 0, 0, 0, 0, 6, 65, 100, 58, 128, 0,
+			0, 8, 68, 4, 241, 8, 4, 110, 0, 0, 11, 67, 4, 117, 83, 120, 81, 13, 89, 0, 72, 0, 0, 7, 65, 104, 88, 113, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 7, 67, 4, 241, 8, 110, 0, 0, 11, 67, 5, 71, 0, 13, 74, 6, 123, 0, 72, 0, 9, 68, 74,
+			34, 68, 32, 34, 110, 0, 0, 0, 0, 29, 71, 80, 147, 195, 24, 18, 68, 32, 76, 116, 49, 108, 6, 123, 34, 55, 6, 123, 0, 82,
+			195, 161, 114, 32, 108, 195, 161, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 70, 28, 48, 84,
+			32, 18, 82, 81, 120, 107, 13, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 8, 128, 73, 48, 192, 84, 119, 6, 108, 55, 0,
+			0, 0, 11, 4, 95, 49, 67, 48, 49, 110, 13, 73, 0, 0, 0, 9, 66, 4, 112, 113, 81, 0, 32, 72, 0, 0, 12, 69, 13, 32,
+			73, 56, 224, 49, 34, 108, 50, 0, 0, 0, 0, 0, 0, 15, 70, 12, 21, 8, 4, 148, 128, 49, 6, 120, 107, 13, 34, 0, 0, 0,
+			8, 67, 4, 227, 128, 130, 50, 0, 0, 14, 4, 95, 50, 77, 52, 81, 123, 84, 37, 55, 124, 50, 0, 0, 0, 12, 69, 52, 133, 73,
+			28, 128, 84, 119, 6, 108, 0, 11, 69, 28, 129, 65, 48, 192, 57, 130, 55, 0, 0, 0, 0, 13, 4, 95, 50, 77, 49, 81, 123, 84,
+			108, 55, 113, 0, 0, 14, 4, 95, 50, 77, 50, 73, 123, 84, 109, 55, 124, 50, 0, 0, 0, 0, 0, 0, 0, 15, 70, 12, 192, 73,
+			56, 225, 64, 49, 55, 6, 109, 50, 113, 0, 13, 70, 12, 82, 84, 33, 33, 64, 49, 113, 34, 13, 0, 0, 0, 0, 0, 0, 0, 18,
+			71, 5, 48, 200, 85, 37, 8, 4, 6, 120, 89, 101, 117, 34, 107, 13, 0, 0, 0, 0, 0, 12, 69, 8, 129, 149, 36, 192, 58, 6,
+			109, 55, 0, 0, 0, 0, 18, 71, 60, 148, 135, 32, 144, 76, 48, 6, 113, 34, 34, 13, 106, 13, 55, 0, 0, 0, 0, 20, 73, 4,
+			148, 198, 32, 147, 12, 20, 17, 8, 4, 35, 91, 6, 109, 55, 38, 13, 0, 0, 0, 0, 0, 0, 0, 13, 69, 4, 213, 73, 28, 128,
+			13, 65, 119, 6, 109, 0, 0, 0, 0, 0, 7, 66, 8, 128, 84, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 66, 16, 80, 72, 113, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 72, 16, 136, 34, 130, 0, 15,
+			4, 95, 51, 77, 52, 47, 34, 108, 84, 37, 55, 124, 50, 0, 0, 0, 0, 0, 0, 0, 22, 67, 76, 147, 142, 91, 6, 109, 50, 15,
+			83, 6, 110, 50, 0, 81, 102, 195, 169, 105, 110, 32, 15, 4, 95, 51, 77, 50, 47, 34, 108, 84, 37, 55, 124, 50, 0, 0, 10, 67,
+			36, 228, 192, 109, 50, 89, 0, 72, 0, 0, 0, 0, 0, 8, 66, 57, 192, 50, 123, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 66, 4, 208, 130, 65, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 48, 49, 49, 110, 13, 73, 13, 107, 110, 13, 50,
+			0, 0, 15, 71, 48, 19, 199, 32, 18, 82, 20, 55, 108, 13, 34, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 70, 16, 128, 79, 36, 34, 0, 57, 108, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 16, 144, 72, 109,
+			0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 4, 243, 128, 110, 13, 50, 0, 0, 0, 0, 0, 0, 0, 12, 68, 4, 224,
+			76, 48, 13, 50, 6, 130, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 12, 68, 4, 229, 65, 76, 112, 50, 6, 127, 89, 0, 0, 0, 0, 0, 0, 9, 67, 48, 89, 64, 55, 110, 108, 0, 0,
+			0, 13, 70, 12, 132, 129, 36, 227, 128, 101, 34, 108, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 4, 210, 28, 36, 224, 13,
+			58, 6, 123, 37, 50, 0, 0, 0, 10, 67, 20, 147, 5, 6, 113, 55, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 13, 66, 37, 48, 109, 91, 6, 35, 0, 81, 101, 97, 32, 9, 66, 37, 48, 6, 109, 89, 0, 72, 0, 0, 0, 11, 68,
+			8, 133, 69, 48, 58, 6, 113, 55, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 48, 83, 109, 99, 36, 0, 0, 0, 0, 0, 0,
+			0, 0, 15, 3, 95, 51, 49, 47, 34, 116, 101, 13, 107, 110, 13, 50, 0, 0, 10, 67, 5, 36, 193, 13, 34, 89, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 66, 16, 240, 72, 116, 0, 72, 0, 0, 0, 10, 67, 16, 245, 0, 48, 116, 50, 49, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 54, 49, 91, 35, 89, 49, 13, 107, 110, 13, 50, 0, 0, 11, 3, 95, 51, 88,
+			47, 34, 116, 101, 13, 0, 0, 10, 3, 95, 48, 67, 49, 110, 13, 73, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 55, 49, 91, 120,
+			101, 74, 122, 107, 110, 13, 50, 0, 0, 0, 10, 3, 95, 49, 67, 49, 110, 13, 73, 0, 0, 12, 68, 8, 80, 68, 32, 71, 38, 6,
+			13, 106, 0, 0, 13, 69, 4, 112, 73, 8, 128, 120, 81, 13, 109, 84, 0, 0, 0, 0, 10, 68, 8, 82, 68, 32, 71, 113, 81, 0,
+			0, 12, 3, 95, 49, 57, 50, 108, 72, 110, 13, 81, 0, 0, 13, 3, 95, 49, 56, 116, 101, 47, 72, 110, 13, 81, 0, 0, 13, 3,
+			95, 50, 67, 81, 35, 12, 99, 110, 13, 73, 0, 0, 0, 0, 0, 16, 70, 32, 147, 206, 80, 16, 200, 107, 6, 108, 50, 74, 13, 101,
+			0, 0, 0, 13, 3, 95, 49, 49, 110, 13, 50, 72, 110, 13, 81, 0, 0, 0, 13, 3, 95, 51, 67, 47, 34, 108, 99, 110, 13, 73,
+			0, 14, 3, 95, 49, 51, 47, 34, 6, 108, 72, 110, 13, 81, 0, 0, 12, 3, 95, 49, 50, 73, 122, 57, 110, 13, 81, 0, 0, 19,
+			69, 52, 128, 73, 28, 128, 84, 119, 6, 108, 15, 6, 122, 0, 81, 101, 111, 32, 14, 3, 95, 49, 53, 49, 124, 37, 81, 72, 110, 13,
+			81, 0, 0, 15, 3, 95, 49, 52, 49, 35, 107, 13, 34, 72, 110, 13, 81, 0, 0, 14, 3, 95, 49, 55, 91, 120, 101, 47, 72, 110,
+			13, 81, 0, 0, 12, 3, 95, 49, 54, 91, 110, 72, 110, 13, 81, 0, 0, 0, 11, 3, 95, 55, 88, 91, 120, 101, 47, 122, 0, 0,
+			14, 3, 95, 52, 67, 49, 113, 34, 13, 49, 110, 13, 73, 0, 0, 0, 0, 0, 11, 68, 12, 243, 77, 4, 49, 120, 65, 13, 0, 0,
+			0, 0, 0, 14, 3, 95, 53, 67, 49, 124, 37, 81, 80, 110, 13, 73, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 52, 49, 73, 120,
+			99, 13, 72, 35, 107, 110, 13, 50, 0, 0, 11, 3, 95, 52, 48, 73, 120, 99, 13, 72, 0, 10, 3, 95, 49, 88, 13, 75, 6, 113,
+			0, 0, 12, 3, 95, 54, 67, 91, 110, 49, 110, 13, 73, 0, 0, 0, 0, 0, 0, 14, 70, 80, 16, 136, 4, 148, 128, 47, 6, 124,
+			13, 34, 0, 0, 16, 3, 95, 53, 49, 49, 13, 110, 13, 81, 13, 107, 110, 13, 50, 0, 0, 10, 3, 95, 50, 88, 83, 37, 99, 113,
+			0, 0, 14, 3, 95, 55, 67, 91, 120, 101, 47, 81, 110, 13, 73, 0, 0, 10, 68, 52, 18, 84, 32, 65, 6, 120, 0, 0, 0, 0,
+			0, 0, 0, 0, 14, 3, 95, 56, 67, 116, 101, 47, 81, 6, 110, 13, 73, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 26, 34, 78,
+			107, 6, 110, 50, 0, 12, 3, 95, 52, 88, 73, 120, 99, 13, 72, 13, 0, 0, 12, 3, 95, 57, 67, 50, 108, 81, 110, 13, 73, 0,
+			0, 0, 0, 0, 0, 0, 8, 66, 48, 80, 55, 113, 0, 72, 26, 66, 28, 240, 81, 13, 34, 13, 65, 108, 55, 13, 0, 82, 114, 97,
+			105, 98, 104, 32, 109, 195, 173, 108, 101, 32, 25, 66, 28, 240, 81, 13, 34, 13, 65, 120, 107, 0, 82, 114, 97, 105, 98, 104, 32, 109,
+			97, 105, 116, 104, 32, 14, 3, 95, 56, 49, 116, 101, 74, 122, 107, 110, 13, 50, 0, 0, 9, 67, 38, 163, 0, 57, 124, 55, 0, 12,
+			3, 95, 53, 88, 49, 13, 110, 13, 81, 13, 0, 0, 20, 5, 95, 50, 48, 48, 49, 81, 123, 84, 108, 55, 113, 89, 13, 107, 110, 13,
+			50, 0, 0, 0, 20, 5, 95, 50, 48, 48, 51, 81, 123, 84, 108, 55, 113, 89, 13, 47, 34, 6, 108, 0, 0, 19, 5, 95, 50, 48,
+			48, 50, 81, 123, 84, 108, 55, 113, 89, 13, 73, 6, 122, 0, 0, 20, 5, 95, 50, 48, 48, 53, 81, 123, 84, 108, 55, 113, 89, 13,
+			49, 124, 37, 81, 0, 0, 21, 5, 95, 50, 48, 48, 52, 81, 123, 84, 108, 55, 113, 89, 13, 49, 35, 107, 13, 34, 0, 0, 14, 3,
+			95, 57, 49, 50, 122, 101, 13, 107, 110, 13, 50, 0, 0, 11, 3, 95, 54, 88, 91, 35, 89, 49, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 12, 68, 24, 18, 68, 20, 83, 13, 109, 73, 113, 0, 0, 0, 0, 13, 69, 56, 243, 1, 36, 112, 50, 116, 55, 37, 81,
+			0, 0, 0, 0, 0, 10, 3, 95, 56, 88, 116, 106, 47, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 57, 88, 50, 122,
+			101, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 36, 224, 109, 50, 0, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 68, 72, 18, 66, 32, 34, 113, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 66, 61, 48, 122, 89, 0, 0, 0, 13, 4, 95, 48, 77, 52, 10, 71, 37, 55, 124, 50, 0, 0, 0, 12, 4, 95, 48, 77,
+			50, 65, 109, 55, 124, 50, 0, 0, 0, 16, 70, 14, 163, 19, 48, 18, 83, 49, 124, 55, 89, 55, 35, 91, 0, 0, 11, 4, 95, 48,
+			77, 49, 65, 108, 55, 113, 0, 0, 0, 0, 0, 0, 0, 8, 67, 4, 148, 128, 113, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 17, 70, 18, 161, 200, 61, 35, 64, 73, 6, 124, 103, 115, 34, 13, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 12, 68, 8, 18, 76, 48, 71, 119, 6, 108, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 18, 68, 52, 18, 71, 32, 65, 119, 6, 108, 15, 6, 122, 0, 81, 101, 111, 32, 10, 68, 24, 18, 71, 32, 83, 128, 81, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 99, 97, 112, 65, 6, 122, 34, 0, 0, 9, 68, 37, 34, 83, 32, 21,
+			0, 47, 0, 0, 10, 67, 76, 83, 192, 91, 117, 10, 0, 72, 0, 0, 0, 0, 10, 67, 29, 84, 128, 81, 117, 34, 0, 72, 0, 0,
+			13, 3, 95, 195, 186, 57, 124, 15, 83, 120, 73, 13, 0, 0, 0, 0, 0, 15, 71, 16, 243, 72, 56, 18, 71, 32, 73, 130, 50, 37,
+			81, 0, 0, 0, 0, 0, 0, 12, 3, 95, 195, 179, 122, 15, 83, 120, 73, 13, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 195, 173,
+			128, 15, 83, 120, 73, 13, 0, 0, 0, 0, 0, 12, 3, 95, 195, 169, 108, 15, 83, 120, 73, 13, 0, 0, 0, 0, 0, 14, 70, 16,
+			243, 72, 56, 16, 200, 73, 130, 50, 13, 101, 0, 0, 0, 0, 0, 12, 3, 95, 195, 161, 132, 15, 83, 120, 73, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 68, 24, 80, 68, 32, 83, 35, 81, 0, 0, 0, 0, 0, 0, 8, 66, 52, 240, 65,
+			116, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 69, 52, 33, 65, 16, 128, 65, 38, 116, 106, 0, 11, 69, 52,
+			128, 73, 80, 128, 58, 6, 120, 0, 13, 69, 8, 129, 65, 16, 128, 84, 38, 6, 13, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			3, 225, 184, 131, 71, 4, 108, 71, 6, 124, 55, 76, 13, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 196, 139, 89, 4, 108, 71, 6,
+			124, 55, 76, 13, 0, 0, 0, 0, 15, 3, 225, 185, 129, 4, 113, 65, 71, 6, 40, 55, 76, 13, 0, 0, 10, 67, 4, 145, 197, 13,
+			81, 6, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 196, 139, 117, 114, 101, 6, 117, 34, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 3, 225, 185, 171, 47, 4, 108, 71, 6, 124, 55, 76, 13, 0, 0, 14, 2, 196, 161, 75, 4, 108, 71,
+			6, 124, 55, 76, 13, 0, 0, 0, 0, 15, 3, 225, 184, 159, 4, 113, 83, 71, 6, 124, 55, 76, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 8, 66, 58, 112, 50, 124, 0, 72, 0, 0, 0, 19, 71, 4, 224, 73, 80, 131, 137, 16, 6, 120, 50, 35, 107, 13, 50, 109,
+			75, 0, 0, 0, 0, 0, 0, 15, 3, 225, 185, 151, 48, 4, 108, 71, 6, 124, 55, 76, 13, 0, 0, 0, 0, 0, 15, 3, 225, 184,
+			139, 72, 4, 108, 71, 6, 124, 55, 76, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 4, 53, 64, 120,
+			49, 6, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 68, 61, 37, 8, 84, 116, 34, 107, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 24, 80, 82, 83, 6, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 95, 33, 91, 49, 34, 110, 13, 101, 0, 0, 0, 11, 2, 95, 39, 124,
+			89, 101, 120, 65, 13, 0, 0, 16, 4, 95, 52, 77, 52, 49, 113, 34, 13, 84, 37, 55, 124, 50, 0, 0, 10, 67, 24, 18, 67, 83,
+			13, 35, 49, 0, 0, 16, 4, 95, 52, 77, 50, 49, 113, 34, 13, 65, 37, 55, 124, 50, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95,
+			46, 48, 116, 50, 49, 0, 0, 0, 9, 2, 95, 44, 49, 120, 65, 13, 0, 0, 10, 2, 95, 51, 13, 76, 51, 6, 108, 0, 0, 9,
+			2, 95, 50, 13, 73, 6, 122, 0, 0, 10, 2, 95, 49, 13, 107, 6, 110, 50, 0, 0, 16, 70, 32, 19, 72, 112, 147, 128, 107, 13,
+			58, 6, 123, 37, 50, 0, 10, 2, 95, 48, 13, 50, 123, 37, 75, 0, 0, 10, 2, 95, 55, 13, 91, 120, 101, 74, 0, 0, 9, 2,
+			95, 54, 13, 91, 6, 110, 0, 0, 10, 2, 95, 53, 13, 49, 124, 109, 81, 0, 0, 12, 2, 95, 52, 13, 49, 6, 35, 107, 13, 34,
+			0, 0, 9, 2, 95, 59, 89, 36, 65, 109, 0, 0, 10, 2, 95, 58, 49, 122, 55, 120, 50, 0, 0, 11, 2, 95, 57, 13, 50, 13,
+			13, 6, 108, 0, 0, 11, 2, 95, 56, 13, 107, 6, 120, 101, 74, 0, 0, 9, 2, 95, 63, 49, 113, 91, 47, 0, 0, 0, 14, 70,
+			74, 83, 72, 4, 149, 8, 51, 6, 108, 58, 120, 0, 0, 12, 68, 8, 129, 65, 76, 84, 6, 110, 13, 89, 0, 0, 0, 13, 68, 36,
+			227, 137, 84, 109, 50, 57, 6, 124, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 68, 4, 208, 67, 32, 13, 65, 6, 120, 101, 0, 0, 0, 0, 0, 0, 0, 15, 70, 36, 243, 148, 4, 50, 0, 6, 108, 50,
+			74, 13, 101, 0, 0, 0, 0, 0, 11, 67, 4, 224, 77, 6, 120, 50, 13, 65, 0, 0, 0, 6, 2, 95, 97, 132, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 2, 95, 105, 128, 0, 0, 0, 7, 2, 95, 111, 39, 117, 0, 0, 0, 0, 0, 10, 67, 16, 84, 192, 72,
+			113, 89, 0, 72, 7, 2, 95, 115, 113, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+			5, 95, 48, 97, 110, 100, 109, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			11, 4, 95, 35, 51, 50, 89, 48, 123, 89, 0, 0, 16, 69, 58, 83, 210, 8, 128, 50, 108, 13, 34, 13, 84, 84, 0, 72, 0, 0,
+			0, 0, 15, 70, 37, 53, 5, 4, 50, 0, 109, 89, 76, 6, 120, 101, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 5, 41, 83, 13,
+			34, 6, 108, 91, 0, 0, 0, 0, 0, 12, 68, 4, 228, 197, 60, 13, 50, 91, 6, 115, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67,
+			21, 84, 143, 57, 124, 34, 122, 0, 0, 0, 0, 0, 0, 15, 70, 52, 128, 73, 80, 129, 64, 58, 6, 120, 107, 38, 113, 0, 16, 70,
+			4, 34, 1, 36, 193, 64, 13, 58, 6, 120, 55, 38, 113, 0, 0, 0, 0, 0, 0, 0, 14, 69, 72, 18, 68, 38, 112, 34, 6, 35,
+			72, 108, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 52, 128, 77, 4,
+			58, 6, 120, 65, 13, 0, 0, 0, 0, 0, 0, 0, 0, 11, 68, 4, 227, 206, 56, 13, 50, 130, 50, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 16, 70, 4, 215, 18, 4, 50, 0, 13, 65, 6, 123, 34, 13, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 16,
+			20, 200, 83, 55, 113, 91, 49, 108, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 56, 243, 12, 4, 112, 50, 13,
+			55, 13, 81, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 12, 133, 78, 101, 117, 50, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 15, 70, 12, 131, 1, 36, 227, 133, 101, 55, 6, 109, 50, 113, 0, 0, 0, 6, 18, 66, 195, 169, 0, 195, 173, 0,
+			101, 0, 105, 0, 7, 6, 18, 67, 99, 104, 0, 103, 104, 0, 99, 0, 100, 0, 103, 0, 110, 0, 115, 0, 7, 6, 18, 68, 98, 104,
+			0, 109, 98, 0, 99, 104, 0, 109, 104, 0, 100, 104, 0, 112, 104, 0, 98, 0, 99, 0, 102, 0, 109, 0, 112, 0, 7, 6, 18, 69,
+			98, 104, 0, 109, 98, 0, 98, 0, 7, 6, 18, 70, 99, 104, 97, 105, 115, 0, 110, 110, 97, 99, 104, 0, 110, 116, 97, 99, 104, 0,
+			108, 108, 97, 99, 104, 0, 110, 110, 97, 115, 0, 110, 116, 97, 115, 0, 110, 97, 99, 104, 0, 110, 97, 105, 115, 0, 114, 116, 104, 97,
+			0, 99, 104, 97, 115, 0, 99, 104, 116, 97, 0, 110, 110, 97, 0, 110, 97, 115, 0, 100, 97, 114, 0, 109, 97, 114, 0, 110, 116, 97,
+			0, 99, 104, 116, 0, 110, 110, 0, 100, 104, 0, 109, 104, 0, 108, 108, 0, 114, 0, 115, 0, 100, 0, 108, 0, 7, 6, 18, 71, 97,
+			100, 115, 97, 101, 97, 100, 115, 97, 0, 97, 105, 110, 110, 115, 101, 0, 97, 105, 100, 195, 173, 115, 0, 97, 105, 109, 105, 100, 0, 97,
+			105, 109, 105, 115, 0, 105, 110, 110, 115, 101, 0, 105, 100, 195, 173, 115, 0, 97, 105, 100, 104, 0, 101, 97, 100, 104, 0, 105, 109, 105,
+			100, 0, 105, 109, 105, 115, 0, 97, 105, 110, 110, 0, 195, 169, 105, 110, 0, 105, 100, 104, 0, 97, 195, 173, 0, 101, 195, 161, 0, 97,
+			100, 104, 0, 101, 97, 100, 0, 105, 110, 110, 0, 195, 161, 0, 97, 100, 0, 7, 6, 18, 72, 99, 104, 0, 98, 104, 0, 103, 104, 0,
+			109, 98, 0, 98, 0, 99, 0, 103, 0, 7, 6, 18, 73, 98, 104, 115, 101, 0, 108, 99, 0, 108, 108, 0, 110, 116, 0, 7, 6, 18,
+			74, 99, 104, 114, 0, 99, 108, 0, 99, 114, 0, 102, 0, 7, 6, 18, 75, 103, 104, 108, 0, 99, 104, 0, 112, 104, 0, 103, 108, 0,
+			99, 0, 112, 0, 7, 6, 18, 76, 116, 195, 173, 111, 99, 104, 116, 97, 0, 116, 105, 195, 186, 105, 108, 0, 116, 105, 195, 186, 108, 97,
+			0, 116, 104, 101, 111, 105, 114, 0, 116, 104, 101, 111, 114, 97, 0, 115, 116, 101, 97, 99, 104, 0, 108, 108, 195, 173, 110, 0, 108, 108,
+			195, 173, 0, 116, 104, 101, 0, 110, 110, 101, 0, 115, 116, 101, 0, 103, 195, 173, 0, 109, 115, 101, 0, 100, 104, 0, 103, 104, 0, 110,
+			110, 0, 110, 116, 0, 108, 108, 0, 99, 0, 115, 0, 103, 0, 7, 6, 18, 77, 195, 161, 0, 195, 169, 0, 195, 179, 0, 101, 111, 0,
+			117, 97, 0, 7, 6, 18, 78, 111, 109, 98, 0, 111, 99, 0, 7, 6, 18, 79, 103, 110, 195, 173, 111, 0, 114, 195, 173, 111, 0, 100,
+			195, 186, 110, 0, 7, 6, 18, 80, 98, 104, 102, 0, 99, 104, 0, 102, 104, 0, 100, 104, 0, 103, 99, 0, 103, 104, 0, 109, 104, 0,
+			99, 0, 102, 0, 109, 0, 100, 0, 103, 0, 7, 6, 18, 81, 103, 104, 114, 0, 98, 104, 0, 99, 104, 0, 103, 114, 0, 116, 104, 0,
+			98, 0, 99, 0, 116, 0, 7, 6, 18, 82, 110, 105, 115, 116, 101, 0, 108, 101, 0, 108, 105, 0, 110, 110, 0, 108, 0, 7, 6, 18,
+			83, 110, 102, 105, 100, 105, 115, 0, 110, 101, 97, 109, 97, 114, 0, 110, 101, 97, 110, 110, 0, 110, 101, 97, 100, 104, 0, 110, 116, 101,
+			97, 114, 0, 110, 102, 101, 97, 114, 0, 110, 102, 105, 110, 110, 0, 110, 102, 105, 100, 104, 0, 110, 116, 101, 0, 110, 105, 109, 0, 110,
+			116, 0, 110, 0, 7, 6, 18, 84, 108, 108, 101, 97, 0, 97, 114, 103, 97, 0, 110, 101, 97, 0, 114, 101, 97, 0, 110, 97, 0, 114,
+			97, 0, 108, 97, 0, 7, 6, 18, 85, 101, 111, 105, 114, 0, 101, 97, 98, 104, 0, 101, 195, 161, 0, 105, 195, 186, 0, 101, 111, 0,
+			105, 111, 0, 105, 117, 0, 7, 6, 18, 86, 110, 110, 116, 195, 161, 105, 110, 0, 110, 110, 116, 195, 161, 110, 0, 110, 100, 195, 161, 110,
+			0, 110, 110, 116, 97, 0, 110, 110, 97, 0, 108, 108, 0, 110, 110, 0, 7, 6, 18, 87, 101, 97, 103, 195, 161, 105, 110, 195, 173, 110,
+			0, 101, 97, 108, 116, 97, 105, 110, 101, 0, 101, 97, 103, 195, 161, 110, 0, 101, 97, 100, 104, 0, 101, 97, 103, 97, 0, 101, 97, 108,
+			108, 0, 101, 97, 98, 104, 0, 101, 97, 110, 110, 0, 101, 97, 103, 0, 105, 195, 186, 0, 101, 111, 0, 105, 111, 0, 105, 117, 0, 7,
+			6, 18, 88, 101, 97, 0, 101, 111, 0, 105, 0, 7, 6, 18, 89, 109, 98, 0, 98, 104, 0, 103, 104, 0, 112, 104, 0, 98, 112, 0,
+			109, 104, 0, 98, 0, 103, 0, 112, 0, 109, 0, 7, 6, 20, 0, 0, 3, 30, 0, 0, 98, 0, 104, 0, 11, 1, 0, 0, 99, 0,
+			104, 0, 11, 30, 0, 0, 100, 0, 104, 0, 31, 30, 0, 0, 102, 0, 104, 0, 33, 1, 0, 0, 103, 0, 104, 0, 65, 30, 0, 0,
+			109, 0, 104, 0, 87, 30, 0, 0, 112, 0, 104, 0, 107, 30, 0, 0, 116, 0, 104, 0, 11, 1, 0, 0, 99, 0, 104, 0, 0, 0,
+			0, 0, 6, 97, 105, 0, 2, 108, 108, 105, 109, 104, 12, 12, 3, 6, 120, 0, 108, 108, 101, 97, 99, 104, 3, 6, 120, 55, 38, 13,
+			101, 0, 108, 101, 2, 32, 3, 6, 120, 55, 38, 113, 0, 4, 1, 99, 29, 2, 108, 17, 65, 3, 6, 121, 0, 1, 104, 99, 2, 108,
+			17, 65, 0, 4, 2, 109, 115, 105, 3, 6, 128, 0, 103, 104, 1, 29, 0, 108, 108, 8, 18, 69, 2, 32, 3, 58, 108, 55, 0, 4,
+			1, 21, 2, 18, 76, 32, 3, 109, 0, 1, 99, 2, 108, 32, 0, 110, 103, 2, 32, 3, 109, 50, 81, 0, 3, 112, 0, 4, 1, 104,
+			115, 2, 98, 104, 3, 113, 0, 1, 115, 2, 98, 104, 0, 4, 1, 99, 2, 116, 32, 3, 119, 6, 109, 0, 8, 18, 69, 2, 18, 83,
+			32, 12, 12, 0, 4, 1, 18, 69, 2, 18, 82, 3, 121, 0, 1, 99, 2, 116, 104, 0, 1, 104, 99, 2, 116, 104, 0, 1, 109, 2,
+			110, 0, 1, 112, 2, 108, 0, 2, 100, 0, 2, 108, 108, 101, 97, 99, 104, 0, 2, 116, 195, 173, 110, 0, 103, 104, 114, 101, 3, 128,
+			34, 13, 0, 100, 104, 109, 3, 128, 65, 0, 4, 2, 18, 73, 12, 12, 3, 129, 0, 103, 104, 0, 7, 6, 101, 97, 0, 110, 98, 104,
+			101, 97, 110, 3, 6, 35, 50, 13, 84, 4, 35, 50, 0, 4, 8, 18, 69, 2, 100, 104, 32, 3, 13, 0, 8, 18, 69, 2, 103, 0,
+			103, 97, 1, 18, 69, 2, 32, 3, 13, 81, 13, 0, 103, 110, 8, 18, 69, 3, 13, 81, 50, 0, 4, 3, 112, 0, 105, 0, 1, 29,
+			2, 99, 104, 3, 120, 0, 103, 104, 108, 3, 128, 55, 0, 100, 104, 98, 3, 128, 71, 0, 4, 1, 29, 2, 18, 86, 32, 3, 130, 0,
+			1, 103, 2, 108, 108, 0, 1, 114, 100, 25, 2, 109, 0, 2, 108, 116, 97, 105, 110, 101, 0, 109, 104, 1, 108, 2, 110, 0, 98, 104,
+			114, 97, 3, 130, 34, 13, 0, 98, 104, 115, 3, 130, 89, 0, 7, 6, 111, 105, 0, 8, 2, 108, 101, 195, 161, 3, 6, 109, 0, 114,
+			2, 32, 3, 6, 113, 51, 51, 0, 4, 2, 109, 105, 115, 3, 13, 0, 2, 110, 110, 195, 173, 111, 0, 8, 18, 80, 2, 12, 3, 13,
+			6, 109, 0, 2, 110, 116, 101, 3, 13, 108, 0, 110, 115, 101, 2, 32, 3, 13, 108, 50, 91, 13, 0, 108, 108, 2, 12, 3, 58, 6,
+			108, 55, 0, 4, 1, 104, 2, 98, 3, 109, 0, 1, 108, 2, 103, 0, 1, 108, 2, 110, 0, 1, 114, 0, 2, 99, 32, 0, 2, 100,
+			101, 0, 2, 100, 105, 0, 8, 2, 98, 0, 8, 2, 114, 0, 115, 1, 110, 2, 32, 12, 12, 3, 109, 91, 0, 99, 1, 108, 2, 32,
+			3, 113, 49, 0, 4, 3, 115, 0, 8, 99, 115, 2, 114, 0, 115, 2, 12, 12, 3, 116, 91, 0, 4, 1, 102, 2, 108, 17, 67, 3,
+			128, 0, 1, 104, 102, 2, 108, 17, 67, 0, 100, 104, 0, 103, 104, 2, 101, 97, 0, 103, 104, 110, 3, 128, 106, 50, 0, 4, 1, 99,
+			2, 99, 3, 129, 0, 1, 115, 2, 108, 115, 0, 7, 6, 195, 161, 0, 1, 21, 3, 4, 123, 0, 105, 3, 6, 123, 37, 0, 4, 3,
+			123, 0, 100, 104, 0, 105, 2, 112, 0, 105, 110, 105, 103, 3, 123, 50, 109, 81, 0, 4, 116, 104, 97, 105, 114, 2, 32, 3, 123, 107,
+			13, 34, 0, 116, 104, 97, 114, 0, 7, 6, 195, 169, 0, 4, 3, 6, 110, 0, 97, 0, 105, 0, 97, 99, 115, 3, 110, 13, 49, 89,
+			0, 4, 105, 8, 2, 114, 105, 103, 3, 128, 0, 105, 8, 2, 114, 195, 173, 0, 105, 8, 104, 2, 114, 195, 173, 0, 105, 114, 101, 111,
+			105, 100, 104, 8, 3, 128, 34, 122, 109, 81, 0, 7, 6, 195, 173, 0, 3, 6, 108, 0, 108, 101, 2, 32, 3, 6, 108, 55, 113, 0,
+			111, 109, 104, 3, 6, 108, 84, 0, 111, 99, 104, 110, 3, 6, 108, 101, 50, 0, 2, 32, 3, 108, 0, 111, 3, 108, 13, 0, 110, 2,
+			32, 3, 108, 50, 0, 7, 6, 195, 179, 0, 4, 3, 6, 122, 0, 105, 2, 112, 21, 0, 109, 104, 97, 105, 3, 122, 13, 0, 7, 6,
+			195, 186, 0, 4, 3, 124, 0, 105, 0, 105, 2, 103, 3, 124, 37, 0, 110, 109, 104, 3, 124, 50, 84, 0, 105, 110, 110, 2, 32, 3,
+			124, 109, 68, 0, 105, 98, 104, 2, 32, 3, 124, 109, 84, 0, 7, 6, 97, 0, 195, 173, 2, 32, 3, 2, 108, 0, 116, 104, 8, 2,
+			21, 21, 14, 128, 132, 131, 3, 4, 120, 10, 0, 116, 104, 97, 105, 114, 3, 6, 35, 107, 13, 34, 0, 195, 173, 3, 6, 108, 0, 111,
+			105, 1, 104, 116, 97, 2, 114, 3, 6, 108, 13, 0, 111, 105, 99, 104, 116, 2, 32, 3, 6, 108, 13, 101, 74, 0, 111, 105, 1, 114,
+			2, 110, 195, 173, 110, 3, 6, 110, 13, 0, 110, 8, 2, 45, 3, 6, 120, 50, 0, 116, 104, 114, 8, 3, 6, 120, 107, 34, 0, 4,
+			1, 169, 195, 3, 13, 0, 2, 32, 0, 8, 2, 110, 17, 65, 0, 105, 2, 109, 32, 0, 111, 3, 13, 36, 0, 4, 110, 8, 2, 32,
+			3, 13, 50, 0, 110, 8, 2, 115, 18, 66, 0, 111, 105, 3, 13, 108, 0, 111, 105, 110, 101, 1, 100, 2, 32, 3, 13, 108, 50, 38,
+			2, 108, 0, 111, 1, 17, 67, 2, 116, 104, 32, 3, 13, 110, 0, 111, 1, 17, 67, 2, 17, 67, 3, 13, 110, 13, 0, 2, 114, 114,
+			97, 105, 103, 101, 3, 35, 0, 114, 114, 97, 105, 110, 103, 3, 35, 34, 109, 50, 81, 0, 111, 8, 18, 89, 2, 17, 67, 3, 58, 6,
+			110, 13, 0, 111, 1, 98, 2, 116, 104, 32, 12, 12, 3, 58, 110, 0, 111, 1, 98, 2, 12, 12, 3, 58, 110, 13, 0, 111, 105, 8,
+			3, 108, 0, 4, 101, 3, 110, 0, 111, 8, 0, 116, 104, 8, 3, 120, 107, 0, 3, 121, 0, 114, 100, 8, 2, 21, 14, 128, 132, 131,
+			3, 123, 34, 73, 0, 4, 98, 104, 97, 105, 114, 1, 104, 116, 3, 124, 13, 34, 0, 98, 104, 97, 105, 114, 1, 116, 0, 98, 104, 97,
+			114, 1, 104, 116, 0, 98, 104, 97, 114, 1, 116, 0, 4, 100, 104, 2, 17, 67, 3, 128, 0, 100, 104, 2, 97, 0, 103, 104, 2, 100,
+			0, 103, 104, 2, 115, 0, 103, 104, 97, 3, 128, 13, 0, 103, 104, 97, 105, 100, 104, 3, 128, 81, 0, 4, 98, 104, 2, 17, 67, 3,
+			130, 0, 109, 104, 8, 0, 4, 98, 104, 97, 3, 130, 13, 0, 98, 104, 97, 105, 0, 109, 104, 97, 0, 109, 104, 114, 3, 130, 34, 0,
+			109, 104, 110, 97, 2, 32, 3, 130, 50, 13, 0, 109, 104, 108, 1, 25, 3, 130, 55, 0, 109, 2, 112, 108, 97, 3, 130, 65, 0, 4,
+			1, 29, 2, 108, 108, 32, 3, 131, 0, 1, 29, 2, 110, 110, 32, 0, 109, 97, 2, 32, 3, 131, 65, 13, 0, 98, 104, 116, 3, 131,
+			74, 0, 7, 6, 98, 0, 5, 1, 8, 32, 109, 2, 21, 3, 0, 117, 110, 5, 1, 8, 32, 109, 2, 17, 67, 21, 14, 128, 132, 131,
+			3, 4, 117, 50, 0, 4, 3, 71, 0, 5, 1, 8, 2, 32, 112, 0, 112, 8, 0, 117, 110, 8, 2, 17, 67, 21, 14, 128, 132, 131,
+			3, 71, 4, 117, 50, 0, 4, 1, 18, 66, 3, 71, 38, 0, 5, 1, 8, 2, 32, 112, 18, 66, 0, 112, 8, 2, 18, 66, 0, 112,
+			114, 195, 173, 111, 109, 104, 8, 2, 21, 14, 128, 132, 135, 3, 71, 51, 4, 108, 84, 0, 2, 18, 87, 3, 71, 57, 0, 101, 97, 110,
+			110, 8, 2, 21, 3, 71, 112, 50, 0, 4, 104, 3, 84, 0, 104, 1, 18, 66, 0, 104, 5, 1, 8, 2, 32, 102, 0, 104, 102, 8,
+			0, 104, 102, 97, 105, 103, 104, 3, 84, 6, 128, 0, 4, 104, 5, 1, 8, 2, 32, 102, 18, 87, 3, 84, 38, 0, 104, 102, 8, 2,
+			18, 87, 0, 104, 2, 18, 87, 3, 84, 57, 0, 104, 2, 32, 3, 84, 84, 0, 104, 101, 97, 110, 110, 8, 2, 21, 3, 84, 112, 50,
+			0, 104, 1, 97, 2, 97, 3, 117, 0, 104, 97, 1, 114, 97, 101, 3, 124, 0, 7, 6, 99, 0, 4, 5, 1, 8, 32, 103, 2, 18,
+			66, 3, 0, 5, 1, 8, 32, 103, 2, 21, 3, 0, 3, 49, 0, 111, 109, 104, 8, 2, 21, 21, 14, 128, 132, 132, 3, 49, 4, 122,
+			0, 4, 111, 109, 104, 97, 105, 114, 3, 49, 6, 122, 13, 34, 0, 111, 109, 104, 97, 114, 0, 97, 98, 104, 114, 8, 3, 49, 6, 130,
+			34, 0, 2, 18, 66, 3, 49, 38, 0, 101, 97, 110, 110, 8, 2, 17, 67, 21, 14, 128, 132, 133, 3, 49, 38, 4, 130, 50, 0, 4,
+			104, 2, 18, 66, 3, 99, 38, 0, 104, 2, 195, 169, 12, 0, 104, 101, 97, 110, 110, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 99,
+			38, 4, 130, 50, 0, 104, 3, 101, 0, 104, 111, 109, 104, 8, 2, 21, 21, 14, 128, 132, 133, 3, 101, 4, 122, 0, 4, 104, 111, 109,
+			104, 97, 105, 114, 3, 101, 6, 122, 13, 34, 0, 104, 111, 109, 104, 97, 114, 0, 104, 97, 98, 104, 114, 8, 3, 101, 6, 130, 34, 0,
+			104, 2, 101, 105, 12, 3, 101, 38, 0, 7, 6, 100, 0, 4, 5, 1, 8, 32, 110, 2, 21, 3, 0, 4, 104, 1, 18, 84, 2, 32,
+			3, 0, 104, 1, 97, 26, 2, 32, 12, 3, 0, 104, 2, 18, 66, 3, 57, 0, 4, 8, 2, 32, 39, 102, 104, 3, 72, 0, 39, 8,
+			0, 39, 8, 2, 21, 14, 128, 132, 130, 0, 39, 102, 104, 2, 18, 66, 0, 195, 173, 8, 2, 17, 67, 21, 21, 14, 128, 132, 130, 3,
+			72, 4, 108, 0, 101, 97, 114, 116, 104, 195, 161, 105, 114, 3, 72, 34, 13, 107, 6, 123, 34, 0, 2, 18, 66, 3, 72, 38, 0, 195,
+			173, 99, 104, 101, 97, 108, 108, 3, 72, 38, 6, 108, 99, 112, 55, 0, 101, 105, 114, 102, 105, 195, 186, 114, 3, 72, 38, 34, 13, 83,
+			6, 124, 34, 0, 4, 3, 73, 0, 5, 1, 8, 2, 32, 116, 0, 116, 8, 0, 111, 8, 2, 17, 67, 104, 21, 21, 14, 128, 132, 130,
+			3, 73, 4, 117, 10, 0, 111, 109, 104, 97, 110, 3, 73, 130, 13, 50, 0, 4, 1, 18, 66, 3, 75, 0, 1, 105, 2, 105, 0, 2,
+			17, 67, 18, 66, 0, 2, 18, 87, 0, 5, 1, 8, 2, 32, 116, 18, 66, 0, 116, 8, 2, 18, 66, 0, 104, 1, 105, 2, 32, 3,
+			81, 0, 104, 101, 97, 114, 116, 104, 195, 161, 105, 114, 3, 81, 34, 13, 107, 6, 123, 34, 0, 104, 101, 105, 114, 102, 105, 195, 186, 114,
+			3, 81, 38, 34, 13, 83, 6, 124, 34, 0, 4, 104, 3, 100, 0, 104, 2, 97, 111, 0, 104, 2, 117, 105, 0, 104, 97, 111, 105, 110,
+			101, 3, 100, 13, 108, 50, 38, 2, 108, 0, 4, 104, 1, 97, 2, 32, 3, 106, 0, 104, 1, 111, 2, 32, 0, 7, 6, 101, 0, 111,
+			1, 115, 2, 32, 3, 13, 0, 105, 3, 113, 0, 3, 114, 0, 4, 111, 1, 100, 2, 99, 104, 3, 116, 0, 111, 1, 104, 100, 2, 99,
+			104, 0, 111, 8, 2, 99, 104, 0, 111, 8, 104, 2, 99, 104, 0, 4, 111, 3, 122, 0, 111, 103, 104, 97, 0, 111, 103, 104, 97, 105,
+			0, 111, 105, 0, 4, 111, 105, 2, 17, 67, 17, 67, 32, 3, 122, 109, 0, 111, 105, 2, 103, 0, 195, 161, 3, 123, 0, 4, 105, 1,
+			104, 115, 2, 110, 110, 3, 128, 0, 105, 1, 114, 2, 109, 0, 105, 1, 115, 2, 110, 110, 0, 105, 100, 104, 2, 17, 67, 0, 105, 103,
+			104, 0, 105, 103, 104, 101, 97, 0, 105, 103, 104, 101, 97, 0, 7, 6, 102, 0, 4, 5, 1, 8, 32, 104, 98, 2, 21, 3, 0, 104,
+			3, 0, 4, 5, 1, 8, 32, 104, 98, 2, 18, 87, 3, 38, 0, 104, 2, 18, 87, 0, 3, 83, 0, 195, 173, 111, 114, 8, 2, 21,
+			14, 128, 132, 132, 3, 83, 4, 108, 34, 0, 111, 8, 2, 17, 67, 21, 21, 14, 128, 132, 130, 3, 83, 4, 117, 0, 111, 114, 98, 8,
+			3, 83, 6, 115, 34, 71, 0, 111, 103, 104, 8, 3, 83, 6, 130, 0, 2, 18, 87, 3, 83, 38, 0, 97, 111, 105, 3, 83, 58, 6,
+			108, 0, 105, 111, 115, 3, 83, 109, 89, 0, 111, 99, 8, 2, 21, 12, 12, 3, 83, 115, 49, 0, 4, 1, 21, 2, 18, 71, 32, 3,
+			107, 0, 104, 2, 195, 169, 105, 110, 32, 0, 104, 105, 111, 115, 3, 109, 89, 0, 7, 6, 103, 0, 5, 1, 8, 32, 110, 2, 21, 3,
+			0, 104, 101, 111, 98, 104, 3, 57, 6, 122, 0, 4, 3, 81, 0, 5, 1, 8, 2, 32, 99, 0, 99, 8, 0, 104, 1, 105, 2, 32,
+			0, 110, 8, 3, 81, 13, 50, 0, 110, 195, 161, 116, 104, 8, 2, 21, 21, 14, 128, 132, 133, 3, 81, 13, 50, 4, 123, 0, 4, 2,
+			18, 66, 3, 81, 38, 0, 5, 1, 8, 2, 32, 99, 18, 66, 0, 99, 8, 2, 18, 66, 0, 101, 97, 114, 114, 8, 2, 17, 67, 21,
+			21, 14, 128, 132, 133, 3, 81, 38, 4, 35, 51, 0, 97, 98, 104, 3, 81, 130, 0, 104, 3, 103, 0, 104, 8, 2, 18, 66, 3, 103,
+			57, 0, 104, 101, 97, 114, 114, 8, 2, 17, 67, 21, 21, 14, 128, 132, 134, 3, 103, 57, 4, 35, 51, 0, 104, 97, 98, 104, 3, 103,
+			130, 0, 104, 1, 17, 67, 21, 2, 21, 3, 106, 0, 104, 2, 110, 3, 106, 13, 0, 104, 110, 195, 161, 116, 104, 8, 2, 21, 14, 128,
+			132, 134, 3, 106, 13, 50, 4, 123, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 110, 8, 2, 21, 21, 14, 128, 132, 130, 3,
+			4, 109, 50, 10, 0, 111, 110, 97, 100, 8, 2, 17, 67, 21, 21, 14, 128, 132, 133, 3, 4, 115, 50, 112, 73, 0, 110, 8, 2, 116,
+			105, 110, 110, 3, 6, 109, 50, 0, 1, 18, 77, 3, 37, 0, 4, 1, 109, 2, 100, 32, 3, 108, 0, 97, 2, 116, 104, 97, 0, 97,
+			105, 3, 108, 37, 0, 110, 110, 1, 18, 81, 2, 32, 3, 108, 50, 0, 109, 112, 101, 97, 108, 108, 3, 108, 65, 48, 13, 55, 0, 4,
+			3, 109, 0, 8, 0, 111, 1, 104, 115, 2, 109, 98, 0, 111, 1, 115, 2, 109, 98, 0, 111, 2, 100, 195, 161, 0, 111, 2, 115, 0,
+			110, 110, 8, 3, 109, 50, 0, 111, 3, 116, 0, 111, 110, 100, 3, 116, 50, 13, 73, 0, 111, 109, 108, 3, 116, 65, 13, 55, 0, 117,
+			3, 117, 0, 4, 111, 8, 2, 110, 97, 100, 104, 3, 124, 0, 111, 8, 114, 112, 2, 110, 0, 195, 186, 0, 97, 3, 126, 0, 7, 6,
+			106, 0, 3, 21, 0, 7, 6, 107, 0, 3, 21, 0, 7, 6, 108, 0, 4, 3, 55, 0, 108, 0, 108, 2, 98, 0, 111, 114, 103, 8,
+			2, 21, 21, 14, 128, 132, 132, 3, 55, 4, 115, 34, 13, 81, 0, 195, 161, 110, 8, 2, 21, 21, 14, 128, 132, 131, 3, 55, 4, 123,
+			50, 0, 4, 2, 98, 3, 55, 13, 0, 2, 103, 0, 4, 1, 18, 66, 3, 55, 38, 0, 2, 18, 88, 0, 108, 2, 18, 88, 0, 1,
+			18, 66, 2, 98, 3, 55, 38, 13, 0, 7, 6, 109, 0, 1, 114, 3, 13, 65, 0, 1, 114, 2, 18, 85, 3, 13, 65, 38, 0, 4,
+			3, 65, 0, 5, 1, 8, 2, 32, 98, 0, 98, 8, 0, 101, 97, 114, 8, 2, 21, 21, 14, 128, 132, 132, 3, 65, 4, 35, 34, 0,
+			195, 173, 8, 2, 17, 67, 21, 21, 14, 128, 132, 130, 3, 65, 4, 108, 0, 8, 2, 110, 3, 65, 13, 0, 4, 2, 18, 85, 3, 65,
+			38, 0, 5, 1, 8, 2, 32, 98, 18, 87, 0, 98, 8, 2, 18, 87, 0, 4, 104, 3, 84, 0, 104, 1, 18, 79, 0, 104, 8, 2,
+			110, 3, 84, 13, 0, 104, 101, 97, 115, 1, 114, 105, 169, 195, 108, 3, 84, 35, 89, 0, 104, 2, 18, 85, 3, 84, 38, 0, 7, 6,
+			110, 0, 4, 1, 99, 3, 13, 50, 0, 1, 104, 99, 0, 4, 3, 50, 0, 5, 1, 8, 2, 32, 100, 0, 100, 8, 0, 110, 0, 97,
+			115, 99, 8, 2, 17, 67, 21, 21, 3, 50, 4, 120, 89, 49, 0, 4, 2, 98, 3, 50, 13, 0, 2, 98, 104, 0, 2, 99, 104, 0,
+			2, 109, 0, 4, 2, 18, 66, 3, 50, 38, 0, 5, 1, 8, 2, 32, 18, 66, 0, 5, 1, 8, 2, 32, 100, 18, 66, 0, 100, 8,
+			2, 18, 66, 0, 110, 2, 18, 66, 3, 50, 57, 0, 4, 5, 1, 8, 2, 32, 103, 3, 68, 0, 103, 0, 110, 1, 105, 2, 32, 0,
+			4, 5, 1, 8, 2, 32, 103, 18, 66, 3, 68, 38, 0, 103, 2, 18, 66, 0, 7, 6, 111, 0, 108, 108, 8, 2, 21, 21, 14, 128,
+			132, 131, 3, 4, 115, 55, 0, 4, 1, 17, 67, 2, 99, 104, 116, 32, 3, 6, 115, 0, 8, 0, 114, 110, 2, 32, 3, 6, 115, 34,
+			13, 50, 0, 112, 97, 105, 99, 3, 13, 48, 109, 49, 0, 195, 173, 3, 108, 0, 4, 3, 116, 0, 1, 114, 2, 110, 110, 32, 0, 100,
+			108, 2, 97, 3, 116, 55, 0, 4, 2, 105, 114, 100, 32, 3, 122, 0, 2, 114, 100, 32, 0, 100, 104, 1, 17, 67, 2, 32, 0, 109,
+			104, 8, 17, 67, 0, 109, 104, 8, 17, 67, 17, 67, 0, 4, 109, 104, 97, 3, 122, 13, 0, 109, 104, 97, 105, 0, 4, 1, 17, 67,
+			2, 110, 110, 32, 3, 130, 0, 2, 108, 108, 32, 0, 100, 104, 97, 0, 103, 104, 1, 17, 67, 0, 109, 104, 97, 105, 110, 2, 32, 3,
+			130, 109, 50, 0, 7, 6, 112, 0, 5, 1, 8, 32, 98, 2, 21, 3, 0, 3, 48, 0, 2, 18, 87, 3, 48, 38, 0, 114, 195, 173,
+			111, 109, 104, 8, 2, 21, 14, 128, 132, 134, 3, 48, 51, 4, 108, 84, 0, 104, 3, 83, 0, 104, 2, 18, 85, 3, 83, 38, 0, 104,
+			114, 195, 173, 111, 109, 104, 8, 2, 21, 14, 128, 132, 135, 3, 83, 51, 4, 108, 84, 0, 7, 6, 113, 0, 3, 21, 0, 7, 6, 114,
+			0, 3, 34, 0, 195, 169, 97, 109, 104, 8, 2, 21, 14, 128, 132, 133, 3, 34, 4, 110, 84, 0, 2, 98, 104, 3, 34, 13, 0, 103,
+			3, 34, 13, 81, 0, 103, 104, 3, 34, 103, 0, 97, 109, 104, 8, 3, 34, 130, 0, 4, 1, 18, 66, 3, 51, 0, 1, 115, 2, 17,
+			65, 0, 2, 18, 66, 0, 114, 0, 103, 1, 18, 66, 3, 51, 13, 81, 0, 4, 1, 105, 18, 77, 2, 101, 32, 3, 90, 0, 1, 105,
+			18, 77, 2, 116, 32, 0, 7, 6, 115, 0, 5, 1, 8, 32, 116, 2, 21, 3, 0, 4, 3, 89, 0, 2, 112, 17, 67, 195, 169, 0,
+			8, 39, 2, 32, 0, 97, 105, 110, 8, 2, 21, 14, 128, 132, 132, 3, 89, 4, 35, 50, 0, 4, 1, 18, 66, 3, 91, 0, 2, 17,
+			67, 17, 67, 18, 66, 0, 2, 17, 67, 18, 66, 0, 2, 18, 66, 0, 2, 108, 18, 66, 0, 101, 97, 110, 8, 2, 21, 21, 14, 128,
+			132, 132, 3, 91, 4, 35, 50, 0, 4, 104, 3, 107, 0, 104, 2, 17, 67, 18, 66, 0, 104, 2, 18, 66, 3, 107, 38, 0, 7, 6,
+			116, 0, 4, 5, 1, 8, 32, 100, 2, 21, 3, 0, 4, 104, 1, 17, 65, 2, 32, 3, 0, 104, 1, 111, 97, 2, 32, 3, 0, 104,
+			1, 25, 2, 97, 115, 32, 3, 13, 107, 0, 104, 1, 99, 2, 101, 32, 3, 37, 107, 0, 4, 5, 1, 8, 2, 32, 115, 18, 66, 3,
+			47, 38, 0, 115, 8, 2, 18, 66, 0, 4, 3, 74, 0, 5, 1, 8, 2, 32, 115, 0, 115, 8, 0, 97, 105, 110, 101, 2, 32, 3,
+			74, 109, 50, 2, 113, 0, 4, 1, 17, 67, 18, 66, 3, 76, 0, 2, 17, 67, 18, 66, 0, 2, 101, 111, 12, 12, 0, 2, 195, 173,
+			12, 12, 110, 0, 4, 1, 18, 66, 3, 80, 0, 2, 18, 66, 0, 5, 1, 8, 2, 32, 18, 66, 0, 4, 104, 3, 107, 0, 104, 1,
+			17, 67, 18, 66, 0, 104, 1, 18, 66, 0, 104, 110, 101, 2, 32, 3, 107, 13, 50, 113, 0, 104, 2, 18, 66, 3, 107, 38, 0, 7,
+			6, 117, 0, 105, 109, 104, 105, 114, 8, 2, 17, 67, 21, 14, 128, 132, 134, 3, 4, 109, 84, 109, 51, 0, 97, 99, 104, 97, 105, 3,
+			6, 40, 101, 13, 0, 195, 173, 111, 109, 104, 3, 6, 108, 13, 84, 84, 0, 105, 110, 110, 2, 32, 3, 6, 108, 50, 0, 105, 98, 104,
+			110, 101, 97, 99, 104, 2, 32, 3, 13, 6, 108, 50, 13, 101, 0, 105, 98, 104, 110, 101, 2, 32, 3, 13, 6, 108, 50, 38, 113, 0,
+			4, 105, 1, 103, 2, 103, 104, 32, 3, 13, 108, 0, 105, 1, 104, 103, 2, 103, 104, 32, 0, 105, 1, 18, 68, 3, 13, 109, 0, 4,
+			97, 105, 2, 100, 3, 40, 37, 0, 97, 105, 2, 103, 0, 4, 195, 173, 1, 103, 3, 58, 108, 0, 195, 173, 1, 104, 103, 0, 195, 173,
+			8, 98, 0, 195, 173, 8, 104, 98, 0, 195, 173, 3, 108, 0, 105, 3, 109, 0, 8, 100, 2, 108, 32, 3, 116, 0, 3, 118, 0, 105,
+			110, 116, 105, 3, 118, 6, 108, 50, 47, 109, 0, 109, 104, 3, 124, 0, 195, 161, 3, 124, 6, 123, 0, 97, 2, 32, 3, 124, 13, 0,
+			97, 105, 110, 110, 3, 124, 37, 68, 0, 4, 97, 3, 127, 0, 97, 105, 0, 7, 6, 118, 0, 3, 21, 0, 195, 169, 97, 114, 115, 97,
+			3, 84, 110, 34, 89, 13, 0, 7, 6, 119, 0, 3, 21, 0, 7, 6, 120, 0, 3, 21, 0, 7, 6, 121, 0, 3, 21, 0, 7, 6,
+			122, 0, 3, 21, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts22 = FileInMemory_createWithData (8917, reinterpret_cast<const char *> (&espeakdata_dicts22_data), 
+			U"espeak-1.48.04-source/espeak-data/ga_dict", 
+			U"ga");
+		my addItem_move (espeakdata_dicts22.move());
+
+		static unsigned char espeakdata_dicts23_data[3795] = {
+			0, 4, 0, 0, 157, 7, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 7, 65, 8, 71, 109, 0, 49, 0, 0,
+			0, 0, 6, 65, 12, 89, 109, 0, 0, 0, 0, 0, 7, 65, 16, 72, 109, 0, 49, 0, 0, 0, 19, 4, 95, 100, 112, 116, 10, 89,
+			47, 6, 35, 72, 83, 6, 119, 67, 119, 131, 0, 0, 6, 65, 20, 111, 0, 76, 0, 0, 0, 0, 6, 65, 24, 112, 83, 0, 0, 0,
+			0, 0, 7, 65, 28, 75, 109, 0, 49, 0, 0, 6, 195, 76, 19, 128, 76, 0, 0, 7, 65, 32, 125, 76, 0, 49, 0, 0, 0, 0,
+			6, 65, 36, 109, 0, 76, 0, 0, 6, 65, 112, 114, 0, 76, 0, 0, 6, 65, 40, 75, 125, 0, 0, 0, 0, 0, 6, 65, 44, 49,
+			125, 0, 0, 0, 0, 0, 6, 65, 48, 112, 55, 0, 0, 0, 0, 0, 7, 65, 52, 112, 65, 0, 49, 0, 0, 0, 0, 7, 65, 56,
+			112, 50, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 109, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 118, 0, 0,
+			0, 0, 0, 6, 65, 72, 35, 51, 0, 0, 5, 194, 5, 32, 72, 0, 0, 0, 0, 0, 0, 0, 7, 65, 80, 47, 109, 0, 49, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 109, 0, 0, 0, 0, 0, 13, 65, 92, 72, 6, 116, 137, 71, 13, 55, 57, 118, 0,
+			0, 0, 0, 0, 7, 65, 96, 112, 49, 89, 0, 0, 0, 0, 0, 6, 65, 100, 58, 124, 0, 0, 0, 0, 0, 7, 65, 104, 88, 112,
+			72, 0, 0, 0, 6, 195, 80, 133, 64, 76, 0, 6, 195, 76, 144, 136, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 112, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 9, 80, 71, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76,
+			147, 142, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 208, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 195, 36, 17, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 29, 80, 76, 5, 194, 29, 80, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 48, 83, 6, 37, 99, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
+			3, 95, 51, 48, 47, 135, 6, 37, 99, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 16, 240, 72, 13, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 51, 88, 47, 135, 6, 37, 99, 13, 72, 89, 13, 138, 0, 13,
+			3, 95, 54, 48, 91, 6, 36, 89, 81, 13, 72, 0, 0, 10, 3, 95, 48, 67, 132, 6, 122, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			13, 3, 95, 55, 48, 91, 6, 112, 101, 81, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 57, 134, 6, 127, 130, 4,
+			122, 81, 0, 0, 14, 3, 95, 49, 56, 6, 116, 101, 81, 130, 4, 122, 81, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49,
+			6, 119, 12, 50, 130, 4, 122, 81, 0, 0, 10, 3, 95, 49, 48, 130, 6, 36, 99, 0, 0, 14, 3, 95, 49, 51, 47, 135, 6, 37,
+			130, 4, 122, 81, 0, 0, 13, 3, 95, 49, 50, 100, 6, 35, 100, 4, 122, 81, 0, 0, 14, 3, 95, 49, 53, 49, 6, 115, 131, 130,
+			4, 122, 81, 0, 0, 16, 3, 95, 49, 52, 132, 6, 36, 107, 108, 135, 130, 4, 122, 81, 0, 0, 15, 3, 95, 49, 55, 91, 6, 112,
+			101, 81, 130, 4, 122, 81, 0, 0, 13, 3, 95, 49, 54, 91, 6, 121, 130, 4, 122, 81, 0, 0, 0, 16, 3, 95, 55, 88, 91, 6,
+			112, 101, 81, 13, 72, 89, 13, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 97, 99, 117, 35, 49, 57,
+			6, 118, 47, 0, 0, 0, 0, 0, 13, 3, 95, 52, 48, 132, 6, 112, 107, 16, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			3, 95, 50, 88, 83, 6, 37, 99, 13, 72, 89, 13, 138, 0, 12, 3, 95, 53, 48, 49, 6, 115, 131, 13, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 52, 88, 132, 6, 112, 107, 16, 13, 72, 89, 13, 138, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 56, 16, 76, 0, 15, 3, 95, 53, 88, 49, 6, 115, 131, 13, 72, 89, 13, 138, 0, 12, 3, 95, 56,
+			48, 6, 116, 101, 81, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 54, 88, 91, 6, 36, 89, 81, 13, 72, 89, 13,
+			138, 0, 14, 3, 95, 57, 48, 134, 6, 119, 12, 101, 81, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 15, 3, 95, 56, 88, 6, 116, 101, 81, 13, 72, 89, 13, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 57, 88,
+			134, 6, 119, 12, 101, 81, 13, 72, 89, 13, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 29, 83, 64, 76, 0,
+			0, 0, 13, 4, 95, 48, 77, 50, 65, 6, 37, 61, 13, 50, 0, 0, 0, 0, 12, 4, 95, 48, 77, 49, 65, 6, 37, 55, 13, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 195, 29, 83, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 29, 84, 128, 76, 0, 0, 0, 0, 0, 6, 131,
+			95, 195, 185, 43, 0, 0, 0, 0, 0, 6, 131, 95, 195, 178, 43, 0, 6, 131, 95, 195, 179, 43, 0, 0, 0, 0, 5, 194, 76, 16,
+			76, 0, 6, 131, 95, 195, 172, 43, 0, 0, 0, 0, 6, 131, 95, 195, 168, 43, 0, 6, 131, 95, 195, 169, 43, 0, 0, 0, 0, 0,
+			0, 0, 6, 131, 95, 195, 160, 43, 0, 6, 131, 95, 195, 161, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 66, 52, 240, 65, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			14, 4, 95, 103, 114, 118, 6, 35, 49, 89, 112, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 85, 32, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 81, 80, 76, 0, 0, 0, 0, 0, 6, 195, 56, 19, 64, 76, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 56, 19, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 135, 6, 37, 0, 0, 8, 2, 95, 50,
+			100, 6, 35, 0, 0, 9, 2, 95, 49, 6, 119, 12, 50, 0, 0, 10, 2, 95, 48, 50, 6, 116, 50, 108, 0, 0, 10, 2, 95, 55,
+			91, 6, 112, 101, 81, 0, 0, 8, 2, 95, 54, 91, 6, 121, 0, 0, 9, 2, 95, 53, 49, 6, 115, 131, 0, 0, 11, 2, 95, 52,
+			132, 6, 36, 107, 108, 135, 0, 0, 0, 0, 8, 2, 95, 57, 134, 6, 127, 0, 0, 9, 2, 95, 56, 6, 116, 101, 81, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 97, 125, 0, 0, 0, 0, 0, 6, 2, 95, 101, 109, 0, 0, 0, 0, 0, 6, 2, 95,
+			105, 124, 0, 0, 0, 6, 2, 95, 111, 117, 0, 0, 0, 0, 0, 7, 2, 95, 115, 112, 89, 0, 0, 0, 0, 0, 0, 0, 7, 2,
+			95, 117, 57, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 3, 106, 0, 7, 6, 98, 0, 3, 69, 0, 7, 6, 101, 0, 3,
-			108, 0, 7, 6, 105, 0, 3, 110, 0, 7, 6, 111, 0, 3, 112, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 114, 0,
-			7, 6, 0, 36, 3, 70, 111, 55, 13, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts20 = FileInMemory_createWithData (1092, reinterpret_cast<const char *> (&espeakdata_dicts20_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ga_dict", 
-			U"ga");
-		Collection_addItem (me.peek(), espeakdata_dicts20.transfer());
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			18, 66, 195, 168, 0, 195, 169, 0, 195, 172, 0, 101, 0, 105, 0, 7, 6, 18, 67, 195, 160, 0, 195, 161, 0, 195, 178, 0, 195, 179,
+			0, 195, 185, 0, 97, 0, 111, 0, 117, 0, 7, 6, 18, 68, 101, 97, 108, 108, 0, 101, 97, 110, 110, 0, 101, 97, 114, 114, 0, 101,
+			97, 114, 110, 0, 101, 97, 100, 104, 0, 101, 97, 104, 103, 0, 105, 111, 108, 108, 0, 105, 111, 110, 110, 0, 101, 195, 178, 0, 105, 195,
+			185, 0, 101, 111, 0, 105, 117, 0, 7, 6, 18, 69, 98, 104, 0, 103, 104, 0, 109, 104, 0, 98, 0, 103, 0, 109, 0, 7, 6, 18,
+			70, 108, 108, 0, 110, 110, 0, 109, 0, 7, 6, 18, 71, 108, 0, 110, 0, 114, 0, 7, 6, 18, 72, 99, 104, 0, 108, 0, 114, 0,
+			115, 0, 7, 6, 98, 104, 0, 2, 32, 12, 28, 17, 3, 0, 4, 3, 84, 0, 2, 32, 0, 2, 18, 68, 3, 84, 57, 0, 4, 1,
+			18, 71, 3, 136, 84, 0, 1, 18, 71, 2, 32, 0, 1, 18, 71, 2, 18, 68, 3, 136, 84, 57, 0, 7, 6, 195, 160, 0, 4, 3,
+			113, 0, 105, 0, 7, 6, 195, 161, 0, 4, 3, 113, 0, 105, 0, 7, 6, 195, 168, 0, 4, 3, 111, 0, 105, 0, 97, 3, 122, 0,
+			7, 6, 195, 169, 0, 4, 3, 110, 0, 105, 0, 7, 6, 195, 172, 0, 3, 109, 0, 111, 3, 121, 0, 7, 6, 195, 178, 0, 4, 3,
+			115, 0, 105, 0, 7, 6, 195, 179, 0, 4, 3, 117, 0, 105, 0, 7, 6, 195, 185, 0, 4, 3, 118, 0, 105, 0, 7, 6, 97, 0,
+			4, 3, 35, 0, 105, 0, 105, 100, 104, 2, 17, 67, 3, 35, 23, 37, 0, 4, 98, 104, 2, 17, 67, 3, 35, 23, 40, 0, 109, 104,
+			2, 17, 67, 0, 105, 1, 21, 3, 108, 0, 105, 2, 109, 18, 72, 3, 112, 0, 4, 2, 114, 100, 3, 113, 0, 2, 114, 110, 0, 2,
+			114, 114, 25, 0, 105, 2, 114, 100, 0, 105, 2, 114, 110, 0, 105, 2, 114, 114, 25, 0, 4, 2, 103, 32, 3, 114, 0, 105, 2, 108,
+			32, 0, 111, 3, 119, 12, 0, 4, 2, 100, 104, 17, 65, 3, 120, 0, 2, 100, 104, 32, 0, 2, 103, 104, 17, 65, 0, 2, 103, 104,
+			32, 0, 4, 100, 104, 2, 17, 67, 3, 120, 12, 0, 103, 104, 2, 17, 67, 0, 105, 103, 104, 2, 17, 67, 3, 120, 23, 37, 0, 4,
+			105, 2, 18, 70, 25, 3, 124, 0, 105, 2, 98, 104, 17, 67, 0, 105, 2, 109, 104, 17, 67, 0, 111, 105, 3, 127, 0, 2, 18, 70,
+			25, 3, 128, 0, 7, 6, 98, 0, 3, 71, 0, 2, 18, 68, 3, 71, 57, 0, 1, 18, 71, 3, 136, 71, 0, 1, 18, 71, 2, 18,
+			68, 3, 136, 71, 57, 0, 7, 6, 99, 0, 3, 49, 0, 110, 3, 49, 51, 0, 1, 17, 67, 2, 32, 3, 81, 0, 4, 104, 1, 18,
+			66, 3, 99, 0, 104, 2, 18, 66, 0, 104, 3, 101, 0, 1, 17, 67, 18, 66, 2, 32, 3, 131, 0, 2, 18, 66, 3, 132, 0, 4,
+			104, 1, 18, 71, 2, 18, 66, 3, 136, 99, 0, 104, 1, 18, 71, 18, 66, 0, 104, 1, 18, 71, 3, 136, 101, 0, 1, 17, 65, 2,
+			18, 67, 3, 137, 49, 0, 4, 1, 17, 65, 2, 32, 3, 137, 81, 0, 104, 100, 0, 1, 18, 66, 2, 32, 3, 137, 131, 0, 1, 17,
+			65, 2, 18, 66, 3, 137, 132, 0, 7, 6, 100, 0, 4, 104, 1, 17, 65, 2, 18, 66, 3, 0, 4, 104, 1, 105, 97, 2, 32, 3,
+			0, 104, 1, 105, 169, 195, 2, 32, 3, 0, 3, 72, 0, 4, 104, 1, 18, 66, 3, 98, 0, 104, 2, 18, 66, 0, 4, 104, 3, 100,
+			0, 104, 1, 17, 65, 2, 18, 67, 0, 4, 1, 18, 66, 3, 130, 0, 2, 18, 66, 0, 7, 6, 101, 0, 97, 1, 21, 3, 13, 0,
+			4, 97, 2, 108, 108, 17, 65, 3, 35, 0, 97, 2, 110, 110, 17, 65, 0, 97, 2, 114, 114, 17, 65, 0, 4, 3, 36, 0, 97, 2,
+			100, 0, 97, 2, 103, 0, 97, 2, 115, 0, 105, 0, 4, 97, 8, 2, 108, 108, 17, 65, 3, 57, 35, 0, 97, 8, 2, 110, 110, 17,
+			65, 0, 97, 8, 2, 114, 114, 17, 65, 0, 4, 195, 178, 8, 3, 57, 115, 0, 195, 178, 105, 8, 0, 105, 1, 21, 3, 108, 0, 117,
+			2, 109, 3, 110, 0, 97, 3, 112, 0, 97, 109, 104, 2, 17, 67, 3, 112, 23, 40, 0, 4, 97, 2, 114, 110, 3, 113, 0, 97, 2,
+			114, 114, 25, 0, 97, 1, 21, 2, 103, 32, 3, 114, 0, 4, 195, 178, 3, 115, 0, 195, 178, 105, 0, 111, 3, 116, 0, 4, 97, 2,
+			100, 104, 32, 3, 120, 0, 97, 2, 103, 104, 32, 0, 97, 103, 104, 2, 17, 67, 3, 120, 12, 0, 117, 3, 122, 0, 105, 2, 18, 70,
+			25, 3, 125, 0, 4, 97, 2, 108, 108, 25, 3, 128, 0, 97, 2, 110, 110, 25, 0, 7, 6, 102, 0, 104, 3, 0, 3, 83, 0, 2,
+			18, 68, 3, 83, 57, 0, 7, 6, 103, 0, 4, 104, 1, 17, 65, 2, 18, 66, 3, 0, 104, 2, 32, 12, 28, 17, 3, 0, 3, 81,
+			0, 110, 3, 81, 51, 0, 4, 104, 1, 18, 66, 3, 98, 0, 104, 2, 18, 66, 0, 4, 104, 3, 100, 0, 104, 1, 17, 65, 2, 18,
+			67, 0, 4, 1, 18, 66, 3, 131, 0, 2, 18, 66, 0, 1, 18, 71, 3, 136, 81, 0, 4, 104, 1, 18, 71, 2, 18, 66, 3, 136,
+			98, 0, 104, 1, 18, 71, 18, 66, 0, 104, 1, 18, 71, 3, 136, 100, 0, 4, 1, 18, 71, 2, 18, 66, 3, 136, 131, 0, 1, 18,
+			71, 18, 66, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 4, 3, 37, 0, 2, 109, 18, 72, 0, 2, 109, 104, 0, 111, 0,
+			4, 111, 100, 104, 2, 17, 67, 3, 37, 23, 13, 0, 111, 103, 104, 2, 17, 67, 0, 117, 3, 40, 0, 4, 111, 8, 2, 108, 108, 25,
+			3, 57, 40, 0, 111, 8, 2, 110, 110, 25, 0, 117, 8, 0, 2, 18, 70, 25, 3, 109, 0, 4, 111, 2, 108, 108, 25, 3, 118, 0,
+			111, 2, 110, 110, 25, 0, 117, 2, 114, 114, 0, 117, 2, 114, 115, 0, 195, 185, 0, 195, 185, 105, 0, 97, 3, 121, 0, 7, 6, 106,
+			0, 3, 75, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 4, 1, 18, 66, 3, 55, 0, 2, 18, 66, 0, 4, 8, 2, 18,
+			66, 3, 61, 0, 108, 1, 18, 66, 0, 108, 2, 18, 66, 0, 4, 3, 64, 0, 108, 0, 7, 6, 109, 0, 3, 65, 0, 2, 18, 68,
+			3, 65, 57, 0, 2, 18, 72, 3, 65, 136, 0, 104, 3, 84, 0, 104, 2, 18, 68, 3, 84, 57, 0, 1, 18, 71, 3, 136, 65, 0,
+			1, 18, 71, 2, 18, 68, 3, 136, 65, 57, 0, 104, 1, 18, 71, 3, 136, 84, 0, 104, 1, 18, 71, 2, 18, 68, 3, 136, 84, 57,
+			0, 7, 6, 110, 0, 4, 3, 50, 0, 2, 103, 104, 0, 4, 103, 1, 18, 66, 3, 50, 131, 0, 103, 2, 18, 66, 0, 4, 1, 17,
+			67, 17, 67, 18, 66, 18, 67, 3, 67, 0, 1, 17, 67, 18, 66, 18, 67, 0, 1, 18, 66, 18, 67, 0, 110, 1, 18, 66, 2, 12,
+			0, 110, 2, 18, 66, 0, 103, 3, 68, 81, 0, 4, 8, 2, 18, 67, 3, 134, 0, 110, 0, 7, 6, 111, 0, 4, 2, 18, 69, 3,
+			39, 0, 2, 109, 104, 0, 105, 2, 18, 69, 0, 105, 2, 109, 104, 0, 4, 2, 114, 100, 3, 115, 0, 2, 114, 110, 0, 2, 114, 114,
+			25, 0, 3, 116, 0, 105, 109, 104, 2, 17, 67, 3, 116, 10, 37, 0, 103, 104, 2, 17, 67, 3, 117, 0, 105, 3, 120, 0, 4, 105,
+			98, 104, 2, 17, 67, 3, 120, 10, 37, 0, 105, 103, 104, 2, 17, 67, 0, 105, 2, 18, 70, 25, 3, 126, 0, 2, 18, 70, 25, 3,
+			129, 0, 7, 6, 112, 0, 3, 48, 0, 1, 17, 67, 2, 32, 3, 71, 0, 2, 18, 68, 3, 71, 57, 0, 104, 3, 83, 0, 104, 2,
+			18, 68, 3, 83, 57, 0, 1, 17, 65, 2, 17, 65, 3, 137, 48, 0, 1, 17, 65, 2, 32, 3, 137, 71, 0, 1, 17, 65, 2, 18,
+			68, 3, 137, 71, 57, 0, 7, 6, 113, 0, 3, 49, 58, 0, 7, 6, 114, 0, 3, 16, 0, 4, 100, 2, 32, 3, 16, 91, 72, 0,
+			116, 2, 32, 0, 4, 8, 3, 51, 0, 114, 0, 4, 1, 18, 66, 3, 135, 0, 2, 18, 66, 0, 7, 6, 115, 0, 3, 89, 0, 4,
+			1, 18, 66, 3, 91, 0, 2, 18, 66, 0, 104, 3, 107, 0, 104, 2, 18, 68, 3, 107, 57, 0, 7, 6, 116, 0, 104, 2, 32, 3,
+			0, 3, 47, 0, 1, 17, 67, 2, 32, 3, 72, 0, 104, 3, 107, 0, 104, 2, 18, 68, 3, 107, 57, 0, 4, 1, 17, 67, 17, 67,
+			18, 66, 2, 32, 3, 130, 0, 1, 17, 67, 18, 66, 2, 32, 0, 2, 18, 66, 3, 133, 0, 1, 17, 65, 2, 18, 67, 3, 137, 47,
+			0, 1, 17, 65, 2, 32, 3, 137, 72, 0, 1, 18, 66, 2, 32, 3, 137, 130, 0, 1, 17, 65, 2, 18, 66, 3, 137, 133, 0, 7,
+			6, 117, 0, 4, 3, 40, 0, 105, 0, 105, 109, 104, 2, 17, 67, 3, 40, 23, 37, 0, 4, 2, 18, 70, 25, 3, 118, 0, 2, 32,
+			0, 2, 114, 110, 0, 2, 114, 114, 0, 4, 105, 2, 18, 70, 3, 119, 0, 105, 2, 109, 0, 105, 2, 110, 0, 105, 2, 115, 0, 4,
+			97, 3, 123, 0, 97, 105, 0, 4, 105, 2, 18, 70, 25, 3, 127, 0, 105, 2, 100, 104, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6,
+			119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 3, 88, 0, 7, 6, 121, 0, 3, 37, 0, 4, 1, 17, 65, 3, 57,
+			0, 2, 17, 65, 0, 7, 6, 122, 0, 3, 88, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts23 = FileInMemory_createWithData (3794, reinterpret_cast<const char *> (&espeakdata_dicts23_data), 
+			U"espeak-1.48.04-source/espeak-data/gd_dict", 
+			U"gd");
+		my addItem_move (espeakdata_dicts23.move());
 
-		static unsigned char espeakdata_dicts21_data[3391] = {
-			0, 4, 0, 0, 220, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 12, 6, 95, 48, 12, 1, 14, 7, 21, 0, 101, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts24_data[3430] = {
+			0, 4, 0, 0, 224, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 95, 48, 108, 97, 110, 103, 21, 0, 101, 47, 0, 0, 0, 0, 0, 0, 8,
 			133, 207, 132, 225, 191, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 207, 132, 225, 191, 178,
 			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 207, 132, 225, 189, 184,
 			72, 0, 0, 0, 0, 8, 133, 207, 132, 225, 189, 188, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 8, 133, 207, 132, 225, 189, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 176, 207, 130, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 131, 8, 206, 183, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 131, 8, 206, 191, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 177, 225, 189,
-			182, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 12, 137, 207, 132, 206, 177, 225, 189, 182, 206, 189, 72, 12, 137, 207, 132, 206, 177, 225, 189, 182, 206, 189, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 180, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 180, 206, 189, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
-			137, 207, 132, 206, 191, 225, 189, 182, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137,
-			207, 132, 206, 191, 225, 189, 182, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 135, 207, 132, 206, 191, 225, 189, 186, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132,
-			225, 189, 184, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 12, 137, 207, 132, 206, 191, 225, 189, 186, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 206, 191, 8, 206, 185, 72, 0, 0, 0, 0, 8, 133, 206, 177, 8,
-			206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 188, 206, 189, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 50, 32, 0, 0, 39, 0, 0, 0, 97, 0, 0, 0,
-			177, 3, 0, 0, 111, 0, 0, 0, 191, 3, 0, 0, 118, 0, 0, 0, 189, 3, 0, 0, 65, 0, 0, 0, 145, 3, 0, 0, 66, 0,
-			0, 0, 146, 3, 0, 0, 69, 0, 0, 0, 149, 3, 0, 0, 90, 0, 0, 0, 150, 3, 0, 0, 72, 0, 0, 0, 151, 3, 0, 0,
-			73, 0, 0, 0, 153, 3, 0, 0, 75, 0, 0, 0, 154, 3, 0, 0, 77, 0, 0, 0, 156, 3, 0, 0, 78, 0, 0, 0, 157, 3,
-			0, 0, 79, 0, 0, 0, 159, 3, 0, 0, 80, 0, 0, 0, 161, 3, 0, 0, 84, 0, 0, 0, 164, 3, 0, 0, 89, 0, 0, 0,
-			165, 3, 0, 0, 88, 0, 0, 0, 167, 3, 0, 0, 116, 0, 104, 0, 184, 3, 0, 0, 112, 0, 104, 0, 198, 3, 0, 0, 107, 0,
-			104, 0, 199, 3, 0, 0, 112, 0, 115, 0, 200, 3, 0, 0, 98, 0, 0, 0, 178, 3, 0, 0, 103, 0, 0, 0, 179, 3, 0, 0,
-			100, 0, 0, 0, 180, 3, 0, 0, 101, 0, 0, 0, 181, 3, 0, 0, 122, 0, 0, 0, 182, 3, 0, 0, 113, 0, 0, 0, 183, 3,
-			0, 0, 105, 0, 0, 0, 185, 3, 0, 0, 107, 0, 0, 0, 186, 3, 0, 0, 108, 0, 0, 0, 187, 3, 0, 0, 109, 0, 0, 0,
-			188, 3, 0, 0, 110, 0, 0, 0, 189, 3, 0, 0, 120, 0, 0, 0, 190, 3, 0, 0, 112, 0, 0, 0, 192, 3, 0, 0, 114, 0,
-			0, 0, 193, 3, 0, 0, 115, 0, 0, 0, 195, 3, 0, 0, 116, 0, 0, 0, 196, 3, 0, 0, 117, 0, 0, 0, 197, 3, 0, 0,
-			121, 0, 0, 0, 197, 3, 0, 0, 119, 0, 0, 0, 201, 3, 0, 0, 172, 3, 0, 0, 112, 31, 0, 0, 113, 31, 0, 0, 112, 31,
-			0, 0, 180, 31, 0, 0, 178, 31, 0, 0, 182, 31, 0, 0, 112, 31, 0, 0, 183, 31, 0, 0, 178, 31, 0, 0, 0, 31, 0, 0,
-			177, 3, 0, 0, 1, 31, 0, 0, 104, 0, 177, 3, 2, 31, 0, 0, 112, 31, 0, 0, 3, 31, 0, 0, 104, 0, 112, 31, 4, 31,
-			0, 0, 112, 31, 0, 0, 5, 31, 0, 0, 104, 0, 112, 31, 6, 31, 0, 0, 112, 31, 0, 0, 7, 31, 0, 0, 104, 0, 112, 31,
-			128, 31, 0, 0, 179, 31, 0, 0, 129, 31, 0, 0, 104, 0, 179, 31, 130, 31, 0, 0, 178, 31, 0, 0, 131, 31, 0, 0, 104, 0,
-			178, 31, 132, 31, 0, 0, 178, 31, 0, 0, 133, 31, 0, 0, 104, 0, 178, 31, 134, 31, 0, 0, 178, 31, 0, 0, 135, 31, 0, 0,
-			104, 0, 178, 31, 173, 3, 0, 0, 114, 31, 0, 0, 115, 31, 0, 0, 114, 31, 0, 0, 16, 31, 0, 0, 181, 3, 0, 0, 17, 31,
-			0, 0, 104, 0, 181, 3, 18, 31, 0, 0, 114, 31, 0, 0, 19, 31, 0, 0, 104, 0, 114, 31, 20, 31, 0, 0, 114, 31, 0, 0,
-			21, 31, 0, 0, 104, 0, 114, 31, 174, 3, 0, 0, 116, 31, 0, 0, 117, 31, 0, 0, 116, 31, 0, 0, 196, 31, 0, 0, 194, 31,
-			0, 0, 198, 31, 0, 0, 116, 31, 0, 0, 199, 31, 0, 0, 194, 31, 0, 0, 32, 31, 0, 0, 183, 3, 0, 0, 33, 31, 0, 0,
-			104, 0, 183, 3, 34, 31, 0, 0, 116, 31, 0, 0, 35, 31, 0, 0, 104, 0, 116, 31, 36, 31, 0, 0, 116, 31, 0, 0, 37, 31,
-			0, 0, 104, 0, 116, 31, 38, 31, 0, 0, 116, 31, 0, 0, 39, 31, 0, 0, 104, 0, 116, 31, 144, 31, 0, 0, 195, 31, 0, 0,
-			145, 31, 0, 0, 104, 0, 195, 31, 146, 31, 0, 0, 194, 31, 0, 0, 147, 31, 0, 0, 104, 0, 194, 31, 148, 31, 0, 0, 194, 31,
-			0, 0, 149, 31, 0, 0, 104, 0, 194, 31, 150, 31, 0, 0, 194, 31, 0, 0, 151, 31, 0, 0, 104, 0, 194, 31, 175, 3, 0, 0,
-			118, 31, 0, 0, 119, 31, 0, 0, 118, 31, 0, 0, 214, 31, 0, 0, 118, 31, 0, 0, 48, 31, 0, 0, 185, 3, 0, 0, 49, 31,
-			0, 0, 104, 0, 185, 3, 50, 31, 0, 0, 118, 31, 0, 0, 51, 31, 0, 0, 104, 0, 118, 31, 52, 31, 0, 0, 118, 31, 0, 0,
-			53, 31, 0, 0, 104, 0, 118, 31, 54, 31, 0, 0, 118, 31, 0, 0, 55, 31, 0, 0, 104, 0, 118, 31, 211, 31, 0, 0, 210, 31,
-			0, 0, 215, 31, 0, 0, 210, 31, 0, 0, 204, 3, 0, 0, 120, 31, 0, 0, 121, 31, 0, 0, 120, 31, 0, 0, 64, 31, 0, 0,
-			191, 3, 0, 0, 65, 31, 0, 0, 104, 0, 191, 3, 66, 31, 0, 0, 120, 31, 0, 0, 67, 31, 0, 0, 104, 0, 120, 31, 68, 31,
-			0, 0, 120, 31, 0, 0, 69, 31, 0, 0, 104, 0, 120, 31, 205, 3, 0, 0, 122, 31, 0, 0, 123, 31, 0, 0, 122, 31, 0, 0,
-			230, 31, 0, 0, 122, 31, 0, 0, 80, 31, 0, 0, 197, 3, 0, 0, 81, 31, 0, 0, 104, 0, 197, 3, 82, 31, 0, 0, 122, 31,
-			0, 0, 83, 31, 0, 0, 104, 0, 122, 31, 84, 31, 0, 0, 122, 31, 0, 0, 85, 31, 0, 0, 104, 0, 122, 31, 86, 31, 0, 0,
-			122, 31, 0, 0, 87, 31, 0, 0, 104, 0, 122, 31, 227, 31, 0, 0, 226, 31, 0, 0, 231, 31, 0, 0, 226, 31, 0, 0, 206, 3,
-			0, 0, 124, 31, 0, 0, 125, 31, 0, 0, 124, 31, 0, 0, 244, 31, 0, 0, 242, 31, 0, 0, 246, 31, 0, 0, 124, 31, 0, 0,
-			247, 31, 0, 0, 242, 31, 0, 0, 96, 31, 0, 0, 201, 3, 0, 0, 97, 31, 0, 0, 104, 0, 201, 3, 98, 31, 0, 0, 124, 31,
-			0, 0, 99, 31, 0, 0, 104, 0, 124, 31, 100, 31, 0, 0, 124, 31, 0, 0, 101, 31, 0, 0, 104, 0, 124, 31, 102, 31, 0, 0,
-			124, 31, 0, 0, 103, 31, 0, 0, 104, 0, 124, 31, 160, 31, 0, 0, 243, 31, 0, 0, 161, 31, 0, 0, 104, 0, 243, 31, 162, 31,
-			0, 0, 242, 31, 0, 0, 163, 31, 0, 0, 104, 0, 242, 31, 164, 31, 0, 0, 242, 31, 0, 0, 165, 31, 0, 0, 104, 0, 242, 31,
-			166, 31, 0, 0, 242, 31, 0, 0, 167, 31, 0, 0, 104, 0, 242, 31, 228, 31, 0, 0, 193, 3, 0, 0, 229, 31, 0, 0, 104, 0,
-			193, 3, 0, 0, 0, 0, 6, 195, 175, 0, 3, 37, 0, 7, 6, 1, 50, 0, 104, 225, 189, 186, 3, 6, 107, 114, 0, 104, 225, 189,
-			182, 3, 6, 107, 117, 0, 225, 189, 186, 3, 6, 114, 0, 225, 189, 182, 3, 6, 117, 0, 3, 35, 0, 104, 207, 133, 3, 107, 114, 0,
-			104, 206, 185, 3, 107, 117, 0, 207, 133, 3, 114, 0, 206, 185, 3, 117, 0, 7, 6, 1, 51, 0, 3, 71, 0, 7, 6, 1, 52, 0,
-			206, 179, 3, 68, 81, 0, 3, 81, 0, 7, 6, 1, 53, 0, 3, 72, 0, 7, 6, 1, 54, 0, 225, 189, 182, 3, 6, 36, 12, 0,
-			104, 225, 189, 182, 3, 6, 107, 36, 12, 0, 104, 225, 189, 186, 3, 6, 107, 115, 0, 225, 189, 186, 3, 6, 115, 0, 3, 36, 0, 206,
-			185, 3, 36, 12, 0, 104, 206, 185, 3, 107, 36, 12, 0, 104, 207, 133, 3, 107, 115, 0, 207, 133, 3, 115, 0, 7, 6, 1, 55, 0,
-			3, 88, 0, 7, 6, 1, 56, 0, 104, 225, 189, 182, 3, 6, 107, 119, 12, 0, 104, 225, 189, 186, 3, 6, 107, 124, 12, 0, 225, 189,
-			182, 3, 6, 119, 12, 0, 225, 189, 186, 3, 6, 124, 12, 0, 104, 206, 185, 3, 107, 119, 12, 0, 104, 207, 133, 3, 107, 124, 12, 0,
-			3, 109, 12, 0, 206, 185, 3, 119, 12, 0, 207, 133, 3, 124, 12, 0, 7, 6, 1, 57, 0, 3, 87, 0, 7, 6, 1, 58, 0, 3,
-			37, 0, 7, 6, 1, 59, 0, 3, 49, 0, 7, 6, 1, 60, 0, 3, 55, 0, 7, 6, 1, 61, 0, 3, 65, 0, 7, 6, 1, 62,
-			0, 3, 50, 0, 7, 6, 1, 63, 0, 3, 49, 89, 0, 7, 6, 1, 64, 0, 225, 189, 186, 3, 6, 40, 12, 0, 104, 225, 189, 186,
-			3, 6, 107, 40, 12, 0, 104, 225, 189, 182, 3, 6, 107, 120, 0, 225, 189, 182, 3, 6, 120, 0, 3, 39, 0, 207, 133, 3, 40, 12,
-			0, 104, 207, 133, 3, 107, 40, 12, 0, 104, 206, 185, 3, 107, 120, 0, 206, 185, 3, 120, 0, 7, 6, 1, 65, 0, 3, 48, 0, 7,
-			6, 1, 66, 0, 3, 51, 0, 7, 6, 1, 67, 0, 3, 89, 0, 7, 6, 1, 68, 0, 3, 89, 0, 7, 6, 1, 69, 0, 3, 47,
-			0, 7, 6, 1, 70, 0, 104, 225, 189, 182, 3, 6, 107, 127, 0, 225, 189, 182, 3, 6, 127, 0, 104, 206, 185, 3, 107, 127, 0, 3,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 206, 177, 201, 166, 206, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 177, 225, 189, 182, 207, 130,
+			72, 0, 0, 7, 132, 201, 166, 206, 183, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 201, 166, 206, 191, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 177, 225, 189, 182, 206, 189, 72, 12, 137, 207, 132, 206, 177,
+			225, 189, 182, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 180, 207, 130, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225,
+			189, 180, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 191, 225, 189, 182, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 191, 225, 189, 182, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 206, 191, 225, 189, 186, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 184, 206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 206, 191, 201, 166, 206, 185, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 207, 132, 206, 191, 225, 189,
+			186, 207, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 207, 132, 225, 189, 188,
+			206, 189, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 50, 32, 0, 0, 39, 0, 0, 0,
+			97, 0, 0, 0, 177, 3, 0, 0, 111, 0, 0, 0, 191, 3, 0, 0, 118, 0, 0, 0, 189, 3, 0, 0, 65, 0, 0, 0, 145, 3,
+			0, 0, 66, 0, 0, 0, 146, 3, 0, 0, 69, 0, 0, 0, 149, 3, 0, 0, 90, 0, 0, 0, 150, 3, 0, 0, 72, 0, 0, 0,
+			151, 3, 0, 0, 73, 0, 0, 0, 153, 3, 0, 0, 75, 0, 0, 0, 154, 3, 0, 0, 77, 0, 0, 0, 156, 3, 0, 0, 78, 0,
+			0, 0, 157, 3, 0, 0, 79, 0, 0, 0, 159, 3, 0, 0, 80, 0, 0, 0, 161, 3, 0, 0, 84, 0, 0, 0, 164, 3, 0, 0,
+			89, 0, 0, 0, 165, 3, 0, 0, 88, 0, 0, 0, 167, 3, 0, 0, 116, 0, 104, 0, 184, 3, 0, 0, 112, 0, 104, 0, 198, 3,
+			0, 0, 107, 0, 104, 0, 199, 3, 0, 0, 112, 0, 115, 0, 200, 3, 0, 0, 98, 0, 0, 0, 178, 3, 0, 0, 103, 0, 0, 0,
+			179, 3, 0, 0, 100, 0, 0, 0, 180, 3, 0, 0, 101, 0, 0, 0, 181, 3, 0, 0, 122, 0, 0, 0, 182, 3, 0, 0, 113, 0,
+			0, 0, 183, 3, 0, 0, 105, 0, 0, 0, 185, 3, 0, 0, 107, 0, 0, 0, 186, 3, 0, 0, 108, 0, 0, 0, 187, 3, 0, 0,
+			109, 0, 0, 0, 188, 3, 0, 0, 110, 0, 0, 0, 189, 3, 0, 0, 120, 0, 0, 0, 190, 3, 0, 0, 112, 0, 0, 0, 192, 3,
+			0, 0, 114, 0, 0, 0, 193, 3, 0, 0, 115, 0, 0, 0, 195, 3, 0, 0, 116, 0, 0, 0, 196, 3, 0, 0, 117, 0, 0, 0,
+			197, 3, 0, 0, 121, 0, 0, 0, 197, 3, 0, 0, 119, 0, 0, 0, 201, 3, 0, 0, 172, 3, 0, 0, 112, 31, 0, 0, 113, 31,
+			0, 0, 112, 31, 0, 0, 180, 31, 0, 0, 178, 31, 0, 0, 182, 31, 0, 0, 112, 31, 0, 0, 183, 31, 0, 0, 178, 31, 0, 0,
+			0, 31, 0, 0, 177, 3, 0, 0, 1, 31, 0, 0, 102, 2, 177, 3, 2, 31, 0, 0, 112, 31, 0, 0, 3, 31, 0, 0, 102, 2,
+			112, 31, 4, 31, 0, 0, 112, 31, 0, 0, 5, 31, 0, 0, 102, 2, 112, 31, 6, 31, 0, 0, 112, 31, 0, 0, 7, 31, 0, 0,
+			102, 2, 112, 31, 128, 31, 0, 0, 179, 31, 0, 0, 129, 31, 0, 0, 102, 2, 179, 31, 130, 31, 0, 0, 178, 31, 0, 0, 131, 31,
+			0, 0, 102, 2, 178, 31, 132, 31, 0, 0, 178, 31, 0, 0, 133, 31, 0, 0, 102, 2, 178, 31, 134, 31, 0, 0, 178, 31, 0, 0,
+			135, 31, 0, 0, 102, 2, 178, 31, 173, 3, 0, 0, 114, 31, 0, 0, 115, 31, 0, 0, 114, 31, 0, 0, 16, 31, 0, 0, 181, 3,
+			0, 0, 17, 31, 0, 0, 102, 2, 181, 3, 18, 31, 0, 0, 114, 31, 0, 0, 19, 31, 0, 0, 102, 2, 114, 31, 20, 31, 0, 0,
+			114, 31, 0, 0, 21, 31, 0, 0, 102, 2, 114, 31, 174, 3, 0, 0, 116, 31, 0, 0, 117, 31, 0, 0, 116, 31, 0, 0, 196, 31,
+			0, 0, 194, 31, 0, 0, 198, 31, 0, 0, 116, 31, 0, 0, 199, 31, 0, 0, 194, 31, 0, 0, 32, 31, 0, 0, 183, 3, 0, 0,
+			33, 31, 0, 0, 102, 2, 183, 3, 34, 31, 0, 0, 116, 31, 0, 0, 35, 31, 0, 0, 102, 2, 116, 31, 36, 31, 0, 0, 116, 31,
+			0, 0, 37, 31, 0, 0, 102, 2, 116, 31, 38, 31, 0, 0, 116, 31, 0, 0, 39, 31, 0, 0, 102, 2, 116, 31, 144, 31, 0, 0,
+			195, 31, 0, 0, 145, 31, 0, 0, 102, 2, 195, 31, 146, 31, 0, 0, 194, 31, 0, 0, 147, 31, 0, 0, 102, 2, 194, 31, 148, 31,
+			0, 0, 194, 31, 0, 0, 149, 31, 0, 0, 102, 2, 194, 31, 150, 31, 0, 0, 194, 31, 0, 0, 151, 31, 0, 0, 102, 2, 194, 31,
+			175, 3, 0, 0, 118, 31, 0, 0, 119, 31, 0, 0, 118, 31, 0, 0, 214, 31, 0, 0, 118, 31, 0, 0, 48, 31, 0, 0, 185, 3,
+			0, 0, 49, 31, 0, 0, 102, 2, 185, 3, 50, 31, 0, 0, 118, 31, 0, 0, 51, 31, 0, 0, 102, 2, 118, 31, 52, 31, 0, 0,
+			118, 31, 0, 0, 53, 31, 0, 0, 102, 2, 118, 31, 54, 31, 0, 0, 118, 31, 0, 0, 55, 31, 0, 0, 102, 2, 118, 31, 211, 31,
+			0, 0, 210, 31, 0, 0, 215, 31, 0, 0, 210, 31, 0, 0, 204, 3, 0, 0, 120, 31, 0, 0, 121, 31, 0, 0, 120, 31, 0, 0,
+			64, 31, 0, 0, 191, 3, 0, 0, 65, 31, 0, 0, 102, 2, 191, 3, 66, 31, 0, 0, 120, 31, 0, 0, 67, 31, 0, 0, 102, 2,
+			120, 31, 68, 31, 0, 0, 120, 31, 0, 0, 69, 31, 0, 0, 102, 2, 120, 31, 205, 3, 0, 0, 122, 31, 0, 0, 123, 31, 0, 0,
+			122, 31, 0, 0, 230, 31, 0, 0, 122, 31, 0, 0, 80, 31, 0, 0, 197, 3, 0, 0, 81, 31, 0, 0, 102, 2, 197, 3, 82, 31,
+			0, 0, 122, 31, 0, 0, 83, 31, 0, 0, 102, 2, 122, 31, 84, 31, 0, 0, 122, 31, 0, 0, 85, 31, 0, 0, 102, 2, 122, 31,
+			86, 31, 0, 0, 122, 31, 0, 0, 87, 31, 0, 0, 102, 2, 122, 31, 227, 31, 0, 0, 226, 31, 0, 0, 231, 31, 0, 0, 226, 31,
+			0, 0, 206, 3, 0, 0, 124, 31, 0, 0, 125, 31, 0, 0, 124, 31, 0, 0, 244, 31, 0, 0, 242, 31, 0, 0, 246, 31, 0, 0,
+			124, 31, 0, 0, 247, 31, 0, 0, 242, 31, 0, 0, 96, 31, 0, 0, 201, 3, 0, 0, 97, 31, 0, 0, 102, 2, 201, 3, 98, 31,
+			0, 0, 124, 31, 0, 0, 99, 31, 0, 0, 102, 2, 124, 31, 100, 31, 0, 0, 124, 31, 0, 0, 101, 31, 0, 0, 102, 2, 124, 31,
+			102, 31, 0, 0, 124, 31, 0, 0, 103, 31, 0, 0, 102, 2, 124, 31, 160, 31, 0, 0, 243, 31, 0, 0, 161, 31, 0, 0, 102, 2,
+			243, 31, 162, 31, 0, 0, 242, 31, 0, 0, 163, 31, 0, 0, 102, 2, 242, 31, 164, 31, 0, 0, 242, 31, 0, 0, 165, 31, 0, 0,
+			102, 2, 242, 31, 166, 31, 0, 0, 242, 31, 0, 0, 167, 31, 0, 0, 102, 2, 242, 31, 228, 31, 0, 0, 193, 3, 0, 0, 229, 31,
+			0, 0, 102, 2, 193, 3, 0, 0, 0, 0, 6, 195, 175, 0, 3, 37, 0, 7, 6, 201, 166, 0, 3, 107, 0, 7, 6, 1, 50, 0,
+			201, 166, 225, 189, 186, 3, 6, 107, 114, 0, 201, 166, 225, 189, 182, 3, 6, 107, 117, 0, 225, 189, 186, 3, 6, 114, 0, 225, 189, 182,
+			3, 6, 117, 0, 3, 35, 0, 201, 166, 207, 133, 3, 107, 114, 0, 201, 166, 206, 185, 3, 107, 117, 0, 207, 133, 3, 114, 0, 206, 185,
+			3, 117, 0, 7, 6, 1, 51, 0, 3, 71, 0, 7, 6, 1, 52, 0, 206, 179, 3, 68, 81, 0, 3, 81, 0, 7, 6, 1, 53, 0,
+			3, 72, 0, 7, 6, 1, 54, 0, 225, 189, 182, 3, 6, 36, 12, 0, 201, 166, 225, 189, 182, 3, 6, 107, 36, 12, 0, 201, 166, 225,
+			189, 186, 3, 6, 107, 115, 0, 225, 189, 186, 3, 6, 115, 0, 3, 36, 0, 206, 185, 3, 36, 12, 0, 201, 166, 206, 185, 3, 107, 36,
+			12, 0, 201, 166, 207, 133, 3, 107, 115, 0, 207, 133, 3, 115, 0, 7, 6, 1, 55, 0, 3, 88, 0, 7, 6, 1, 56, 0, 201, 166,
+			225, 189, 182, 3, 6, 107, 119, 12, 0, 201, 166, 225, 189, 186, 3, 6, 107, 124, 12, 0, 225, 189, 182, 3, 6, 119, 12, 0, 225, 189,
+			186, 3, 6, 124, 12, 0, 201, 166, 206, 185, 3, 107, 119, 12, 0, 201, 166, 207, 133, 3, 107, 124, 12, 0, 3, 109, 12, 0, 206, 185,
+			3, 119, 12, 0, 207, 133, 3, 124, 12, 0, 7, 6, 1, 57, 0, 3, 87, 0, 7, 6, 1, 58, 0, 3, 37, 0, 7, 6, 1, 59,
+			0, 3, 49, 0, 7, 6, 1, 60, 0, 3, 55, 0, 7, 6, 1, 61, 0, 3, 65, 0, 7, 6, 1, 62, 0, 3, 50, 0, 7, 6,
+			1, 63, 0, 3, 49, 89, 0, 7, 6, 1, 64, 0, 225, 189, 186, 3, 6, 40, 12, 0, 201, 166, 225, 189, 186, 3, 6, 107, 40, 12,
+			0, 201, 166, 225, 189, 182, 3, 6, 107, 120, 0, 225, 189, 182, 3, 6, 120, 0, 3, 39, 0, 207, 133, 3, 40, 12, 0, 201, 166, 207,
+			133, 3, 107, 40, 12, 0, 201, 166, 206, 185, 3, 107, 120, 0, 206, 185, 3, 120, 0, 7, 6, 1, 65, 0, 3, 48, 0, 7, 6, 1,
+			66, 0, 3, 51, 0, 7, 6, 1, 67, 0, 3, 89, 0, 7, 6, 1, 68, 0, 3, 89, 0, 7, 6, 1, 69, 0, 3, 47, 0, 7,
+			6, 1, 70, 0, 201, 166, 225, 189, 182, 3, 6, 107, 127, 0, 225, 189, 182, 3, 6, 127, 0, 201, 166, 206, 185, 3, 107, 127, 0, 3,
 			112, 0, 206, 185, 3, 127, 0, 7, 6, 1, 71, 0, 3, 83, 0, 7, 6, 1, 72, 0, 3, 101, 0, 7, 6, 1, 73, 0, 3, 48,
-			89, 0, 7, 6, 1, 74, 0, 104, 225, 189, 182, 3, 6, 107, 125, 12, 0, 104, 225, 189, 186, 3, 6, 107, 126, 12, 0, 225, 189, 182,
-			3, 6, 125, 12, 0, 225, 189, 186, 3, 6, 126, 12, 0, 104, 206, 185, 3, 107, 125, 12, 0, 104, 207, 133, 3, 107, 126, 12, 0, 3,
-			110, 12, 0, 206, 185, 3, 125, 12, 0, 207, 133, 3, 126, 12, 0, 7, 6, 1, 75, 0, 3, 37, 0, 7, 6, 1, 76, 0, 104, 225,
-			189, 182, 3, 6, 107, 127, 0, 225, 189, 182, 3, 6, 127, 0, 104, 206, 185, 3, 107, 127, 0, 3, 112, 0, 206, 185, 3, 127, 0, 7,
-			6, 97, 0, 3, 35, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6,
-			101, 0, 3, 36, 0, 105, 3, 36, 12, 0, 117, 3, 115, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 103, 3, 68, 81, 0,
-			3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49,
-			0, 104, 3, 101, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 7, 6, 111, 0,
-			3, 39, 0, 117, 3, 40, 12, 0, 105, 3, 120, 0, 7, 6, 112, 0, 3, 48, 0, 104, 3, 83, 0, 7, 6, 113, 0, 3, 109, 12,
-			0, 105, 3, 119, 12, 0, 117, 3, 124, 12, 0, 7, 6, 114, 0, 3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3,
-			47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 3, 112, 0, 105, 3, 127, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 110,
-			12, 0, 105, 3, 125, 0, 117, 3, 126, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121, 0, 3, 112, 0, 105, 3, 127, 0, 7, 6,
-			122, 0, 3, 88, 0, 7, 6, 0, 225, 189, 176, 3, 6, 35, 0, 225, 189, 178, 3, 6, 36, 0, 4, 225, 189, 182, 3, 6, 37, 0,
-			225, 191, 146, 0, 225, 189, 184, 3, 6, 39, 0, 225, 189, 180, 3, 6, 109, 12, 0, 225, 189, 188, 3, 6, 110, 12, 0, 4, 225, 189,
-			186, 3, 6, 112, 0, 225, 191, 162, 0, 225, 190, 178, 3, 6, 117, 12, 0, 225, 191, 130, 3, 6, 119, 12, 0, 225, 191, 178, 3, 6,
-			125, 12, 0, 39, 3, 8, 0, 225, 190, 179, 3, 117, 12, 0, 225, 191, 131, 3, 119, 12, 0, 225, 191, 179, 3, 125, 12, 0, 7, 0,
-			0};
-		autoFileInMemory espeakdata_dicts21 = FileInMemory_createWithData (3390, reinterpret_cast<const char *> (&espeakdata_dicts21_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/grc_dict", 
+			89, 0, 7, 6, 1, 74, 0, 201, 166, 225, 189, 182, 3, 6, 107, 125, 12, 0, 201, 166, 225, 189, 186, 3, 6, 107, 126, 12, 0, 225,
+			189, 182, 3, 6, 125, 12, 0, 225, 189, 186, 3, 6, 126, 12, 0, 201, 166, 206, 185, 3, 107, 125, 12, 0, 201, 166, 207, 133, 3, 107,
+			126, 12, 0, 3, 110, 12, 0, 206, 185, 3, 125, 12, 0, 207, 133, 3, 126, 12, 0, 7, 6, 1, 75, 0, 3, 37, 0, 7, 6, 1,
+			76, 0, 201, 166, 225, 189, 182, 3, 6, 107, 127, 0, 225, 189, 182, 3, 6, 127, 0, 201, 166, 206, 185, 3, 107, 127, 0, 3, 112, 0,
+			206, 185, 3, 127, 0, 7, 6, 97, 0, 3, 35, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 100,
+			0, 3, 72, 0, 7, 6, 101, 0, 3, 36, 0, 105, 3, 36, 12, 0, 117, 3, 115, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103,
+			0, 103, 3, 68, 81, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0,
+			7, 6, 107, 0, 3, 49, 0, 104, 3, 101, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3,
+			50, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 40, 12, 0, 105, 3, 120, 0, 7, 6, 112, 0, 3, 48, 0, 104, 3, 83, 0, 7,
+			6, 113, 0, 3, 109, 12, 0, 105, 3, 119, 12, 0, 117, 3, 124, 12, 0, 7, 6, 114, 0, 3, 51, 0, 7, 6, 115, 0, 3, 89,
+			0, 7, 6, 116, 0, 3, 47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 3, 112, 0, 105, 3, 127, 0, 7, 6, 118, 0, 3, 84, 0,
+			7, 6, 119, 0, 3, 110, 12, 0, 105, 3, 125, 0, 117, 3, 126, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121, 0, 3, 112, 0,
+			105, 3, 127, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 225, 189, 176, 3, 6, 35, 0, 225, 189, 178, 3, 6, 36, 0, 4, 206,
+			144, 3, 6, 37, 0, 225, 189, 182, 0, 225, 191, 146, 0, 225, 189, 184, 3, 6, 39, 0, 225, 189, 180, 3, 6, 109, 12, 0, 225, 189,
+			188, 3, 6, 110, 12, 0, 4, 225, 189, 186, 3, 6, 112, 0, 225, 191, 162, 0, 225, 190, 178, 3, 6, 117, 12, 0, 225, 191, 130, 3,
+			6, 119, 12, 0, 225, 191, 178, 3, 6, 125, 12, 0, 39, 3, 8, 0, 225, 190, 179, 3, 117, 12, 0, 225, 191, 131, 3, 119, 12, 0,
+			225, 191, 179, 3, 125, 12, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts24 = FileInMemory_createWithData (3429, reinterpret_cast<const char *> (&espeakdata_dicts24_data), 
+			U"espeak-1.48.04-source/espeak-data/grc_dict", 
 			U"grc");
-		Collection_addItem (me.peek(), espeakdata_dicts21.transfer());
+		my addItem_move (espeakdata_dicts24.move());
 
-		static unsigned char espeakdata_dicts22_data[7360] = {
-			0, 4, 0, 0, 139, 25, 0, 0, 0, 0, 0, 7, 195, 85, 81, 64, 9, 17, 7, 195, 4, 209, 128, 9, 17, 0, 0, 6, 65, 4,
-			35, 0, 14, 5, 193, 4, 72, 8, 0, 0, 0, 0, 6, 65, 8, 71, 13, 0, 0, 0, 7, 195, 57, 50, 64, 9, 17, 0, 0, 6,
-			65, 12, 117, 13, 0, 0, 0, 7, 195, 41, 49, 64, 9, 17, 7, 195, 20, 209, 128, 9, 17, 15, 4, 95, 8, 1, 3, 49, 84, 6,
-			35, 76, 138, 117, 122, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 6, 195, 57, 33, 192, 17, 0, 0, 8, 197, 56, 83, 65, 41,
-			80, 76, 0, 0, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 7, 195, 57, 48, 64, 9, 17, 7, 195, 57, 32, 192, 9, 17, 0, 0,
-			6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 6, 65, 32, 101, 13, 0, 0, 14, 1, 33, 6, 40, 88, 84, 138, 76, 50, 138, 49, 0,
-			102, 14, 1, 33, 6, 40, 89, 49, 55, 138, 76, 50, 138, 49, 0, 0, 0, 11, 1, 35, 71, 140, 6, 39, 57, 10, 0, 27, 0, 6,
-			65, 36, 37, 0, 14, 5, 193, 36, 72, 8, 0, 11, 1, 37, 48, 6, 39, 89, 47, 39, 0, 27, 0, 9, 1, 38, 10, 6, 36, 50,
-			72, 0, 0, 0, 6, 65, 40, 57, 136, 0, 0, 0, 7, 195, 61, 22, 64, 9, 17, 15, 1, 42, 88, 84, 57, 6, 36, 88, 72, 37,
-			117, 122, 0, 27, 0, 7, 195, 5, 2, 0, 9, 17, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 7, 195, 5, 3, 0, 9, 17, 6,
-			65, 44, 49, 13, 0, 0, 7, 195, 5, 4, 0, 9, 17, 0, 7, 195, 37, 69, 192, 9, 17, 11, 1, 46, 47, 35, 76, 49, 122, 0,
-			104, 27, 10, 1, 46, 47, 39, 76, 49, 122, 0, 27, 0, 11, 1, 47, 49, 140, 6, 39, 88, 10, 0, 27, 0, 6, 65, 48, 55, 13,
-			0, 0, 0, 7, 195, 57, 37, 192, 9, 17, 0, 0, 6, 65, 52, 65, 13, 0, 0, 7, 195, 53, 0, 64, 9, 17, 0, 7, 195, 92,
-			150, 128, 9, 17, 0, 0, 6, 65, 56, 50, 13, 0, 0, 0, 7, 195, 57, 36, 192, 9, 17, 14, 1, 58, 72, 84, 6, 39, 47, 122,
-			76, 49, 122, 0, 104, 13, 1, 58, 72, 84, 6, 39, 47, 39, 76, 49, 122, 0, 0, 0, 6, 65, 60, 39, 0, 14, 5, 193, 60, 72,
-			28, 0, 14, 1, 61, 10, 57, 6, 36, 72, 50, 122, 49, 39, 0, 27, 0, 0, 0, 15, 1, 64, 47, 51, 81, 39, 84, 35, 76, 49,
-			39, 37, 0, 102, 8, 1, 64, 10, 6, 35, 47, 0, 6, 65, 64, 48, 13, 0, 0, 7, 195, 65, 0, 64, 9, 17, 7, 194, 4, 32,
-			9, 17, 41, 0, 7, 195, 56, 51, 192, 9, 17, 6, 195, 48, 128, 64, 17, 7, 195, 4, 209, 192, 9, 17, 0, 0, 7, 65, 68, 49,
-			84, 13, 0, 0, 0, 6, 195, 72, 48, 192, 17, 0, 0, 6, 65, 72, 51, 13, 0, 0, 8, 66, 5, 32, 122, 51, 0, 102, 6, 194,
-			73, 0, 9, 17, 0, 0, 0, 7, 65, 76, 89, 13, 0, 14, 7, 65, 76, 89, 10, 0, 28, 0, 0, 0, 0, 6, 65, 80, 47, 13,
-			0, 0, 0, 7, 195, 36, 209, 192, 9, 17, 0, 0, 6, 65, 84, 40, 0, 14, 5, 193, 84, 72, 28, 7, 195, 4, 51, 0, 9, 17,
-			0, 0, 0, 0, 6, 65, 88, 84, 13, 0, 0, 0, 0, 16, 4, 95, 49, 77, 52, 71, 6, 37, 55, 37, 57, 111, 50, 0, 104, 15,
-			4, 95, 49, 77, 52, 71, 6, 37, 55, 37, 57, 139, 50, 0, 0, 13, 1, 92, 71, 6, 109, 49, 89, 55, 109, 91, 0, 27, 13, 65,
-			92, 72, 40, 48, 55, 39, 15, 84, 13, 0, 102, 16, 65, 92, 72, 84, 39, 89, 47, 140, 40, 49, 39, 15, 84, 13, 0, 0, 7, 195,
-			5, 52, 0, 9, 17, 0, 6, 195, 16, 243, 192, 17, 16, 1, 94, 117, 6, 37, 51, 49, 40, 65, 83, 55, 36, 49, 89, 0, 0, 7,
-			195, 5, 54, 0, 9, 17, 0, 15, 4, 95, 49, 77, 49, 107, 6, 37, 61, 35, 72, 139, 0, 103, 16, 4, 95, 49, 77, 49, 107, 6,
-			37, 61, 4, 122, 72, 139, 0, 102, 14, 4, 95, 49, 77, 49, 47, 6, 37, 89, 139, 78, 139, 0, 7, 65, 96, 37, 49, 89, 0, 0,
-			7, 195, 97, 0, 64, 9, 17, 16, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 57, 111, 50, 0, 104, 15, 4, 95, 49, 77, 50, 65,
-			6, 37, 55, 37, 57, 139, 50, 0, 0, 7, 195, 4, 65, 0, 9, 17, 17, 4, 95, 49, 77, 51, 65, 37, 55, 37, 57, 137, 34, 72,
-			139, 0, 102, 16, 4, 95, 49, 77, 51, 65, 6, 37, 55, 37, 35, 51, 72, 139, 0, 0, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39,
-			50, 0, 0, 7, 195, 4, 68, 0, 9, 17, 0, 6, 195, 72, 52, 192, 17, 7, 195, 20, 212, 192, 9, 17, 0, 0, 6, 65, 104, 88,
-			13, 0, 0, 6, 194, 9, 32, 24, 17, 0, 7, 195, 21, 84, 128, 9, 17, 0, 0, 6, 195, 9, 35, 0, 17, 0, 6, 195, 5, 68,
-			0, 17, 0, 15, 67, 16, 240, 216, 72, 6, 39, 117, 15, 6, 37, 49, 89, 0, 7, 195, 36, 101, 64, 9, 17, 0, 6, 195, 9, 38,
-			0, 17, 0, 0, 0, 0, 0, 0, 6, 195, 29, 36, 19, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6, 37, 55,
-			72, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 97, 128, 64, 9, 17, 6, 195, 73, 64, 64, 17, 0, 0, 0, 6, 194, 13,
-			32, 9, 17, 6, 194, 5, 96, 9, 17, 0, 0, 0, 0, 0, 7, 195, 97, 129, 64, 9, 17, 7, 195, 36, 97, 128, 9, 17, 7, 195,
-			13, 37, 0, 9, 17, 0, 0, 0, 0, 15, 67, 76, 148, 216, 89, 6, 37, 89, 15, 6, 37, 49, 89, 0, 7, 195, 97, 2, 64, 9,
-			17, 7, 195, 93, 34, 64, 9, 17, 6, 195, 73, 69, 12, 17, 7, 195, 60, 34, 128, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 7, 195, 5, 117, 0, 9, 17, 0, 0, 0, 0, 6, 195, 92, 36, 128, 17, 0, 0, 0, 0, 7, 195, 76, 36, 128, 9,
-			17, 6, 195, 73, 52, 192, 17, 0, 0, 0, 6, 194, 17, 32, 24, 17, 0, 7, 195, 77, 148, 192, 9, 17, 0, 0, 0, 0, 7, 195,
-			81, 5, 64, 9, 17, 0, 0, 0, 0, 7, 195, 60, 38, 128, 9, 17, 0, 0, 0, 7, 195, 4, 148, 0, 9, 17, 0, 0, 0, 0,
-			6, 194, 21, 16, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 224, 192, 24, 7, 195, 72, 208, 64, 9, 17, 7, 195,
-			52, 112, 64, 9, 17, 0, 0, 0, 0, 7, 195, 16, 16, 64, 9, 17, 6, 195, 12, 48, 64, 17, 0, 0, 8, 132, 197, 161, 20, 1,
-			104, 76, 0, 8, 66, 21, 32, 36, 51, 0, 102, 0, 7, 195, 72, 209, 64, 9, 17, 7, 195, 52, 113, 64, 9, 17, 0, 0, 0, 0,
-			7, 132, 197, 161, 20, 15, 76, 6, 195, 73, 65, 128, 17, 7, 195, 37, 97, 128, 9, 17, 0, 0, 0, 0, 7, 195, 72, 210, 64, 9,
-			17, 7, 195, 52, 114, 64, 9, 17, 0, 7, 196, 56, 148, 212, 20, 76, 0, 0, 7, 195, 20, 52, 0, 9, 17, 0, 0, 15, 4, 95,
-			4, 16, 20, 9, 88, 6, 35, 16, 109, 88, 10, 0, 0, 0, 0, 7, 195, 96, 19, 64, 9, 17, 0, 6, 195, 56, 83, 65, 76, 0,
-			8, 197, 56, 83, 65, 52, 240, 76, 0, 0, 7, 195, 64, 131, 192, 9, 17, 6, 195, 32, 131, 192, 17, 6, 195, 4, 115, 64, 17, 0,
-			0, 0, 0, 7, 195, 48, 148, 64, 9, 17, 6, 195, 29, 36, 128, 17, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 122, 0,
-			0, 0, 0, 6, 195, 72, 68, 192, 17, 7, 195, 5, 100, 128, 9, 17, 0, 0, 0, 6, 194, 25, 32, 9, 17, 0, 7, 195, 21, 65,
-			0, 9, 17, 0, 0, 0, 8, 133, 9, 13, 1, 197, 161, 76, 0, 6, 195, 73, 69, 128, 17, 7, 195, 25, 37, 0, 9, 17, 0, 6,
-			195, 25, 38, 0, 17, 0, 0, 0, 7, 195, 4, 209, 0, 9, 17, 0, 0, 6, 195, 29, 36, 146, 17, 0, 0, 0, 0, 0, 6, 194,
-			21, 80, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 48, 64, 9, 17, 0, 0, 0, 6, 194,
-			29, 32, 9, 17, 0, 7, 195, 72, 209, 128, 9, 17, 0, 0, 0, 6, 195, 29, 36, 0, 17, 0, 6, 195, 5, 97, 192, 17, 0, 7,
-			195, 29, 38, 0, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 60, 52, 128,
-			9, 17, 7, 195, 29, 36, 192, 9, 17, 0, 0, 0, 0, 7, 195, 76, 52, 128, 9, 17, 0, 0, 18, 3, 226, 132, 162, 48, 140, 6,
-			39, 6, 37, 88, 84, 39, 75, 122, 76, 0, 0, 6, 194, 33, 32, 9, 17, 0, 0, 0, 8, 195, 33, 37, 0, 9, 17, 41, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 22, 64, 17, 0, 0, 0, 6, 194, 37, 16, 9, 17, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 195, 96, 32, 64, 9, 17, 7, 195, 24, 96, 64, 9, 17, 0, 0, 18, 3, 226, 128, 166, 47, 140, 6, 37, 15, 47, 6,
-			35, 76, 49, 36, 0, 104, 17, 3, 226, 128, 166, 47, 140, 6, 37, 15, 47, 6, 39, 76, 49, 36, 0, 0, 23, 3, 226, 128, 161, 72,
-			84, 6, 39, 89, 47, 51, 139, 49, 37, 15, 49, 51, 6, 89, 47, 0, 102, 22, 3, 226, 128, 161, 72, 84, 6, 39, 89, 47, 140, 139,
-			49, 37, 15, 49, 140, 6, 37, 90, 0, 0, 7, 195, 12, 64, 64, 9, 17, 7, 195, 5, 112, 128, 9, 17, 12, 3, 226, 128, 160, 49,
-			44, 6, 89, 47, 0, 102, 11, 3, 226, 128, 160, 49, 140, 6, 37, 90, 0, 0, 0, 21, 3, 226, 128, 162, 49, 140, 6, 40, 48, 50,
-			35, 15, 47, 6, 35, 76, 49, 122, 0, 104, 20, 3, 226, 128, 162, 49, 140, 6, 40, 48, 50, 35, 15, 47, 6, 39, 76, 49, 122, 0,
-			0, 6, 195, 57, 97, 1, 17, 0, 12, 3, 226, 130, 172, 6, 36, 84, 140, 39, 0, 104, 11, 3, 226, 130, 172, 6, 36, 40, 51, 39,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 56, 83, 65, 80, 80, 76, 0, 0, 0, 0, 11, 3, 95, 50, 6, 72, 84,
-			6, 109, 0, 102, 12, 3, 95, 50, 6, 72, 84, 6, 37, 57, 36, 0, 0, 0, 7, 195, 37, 51, 0, 9, 17, 0, 0, 0, 7, 195,
-			37, 52, 0, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 37, 65, 0, 24, 17, 0, 15, 4, 95, 13, 3, 14,
-			65, 6, 35, 49, 140, 16, 39, 50, 0, 0, 0, 0, 0, 0, 7, 195, 96, 149, 192, 9, 17, 0, 0, 0, 0, 7, 195, 20, 211, 0,
-			9, 17, 0, 7, 195, 20, 210, 0, 9, 17, 0, 0, 0, 6, 195, 97, 150, 128, 17, 13, 3, 226, 128, 176, 48, 140, 6, 39, 65, 37,
-			55, 0, 0, 6, 195, 56, 81, 207, 8, 7, 195, 16, 246, 0, 9, 17, 0, 0, 0, 0, 16, 6, 95, 18, 15, 13, 1, 14, 140, 6,
-			37, 65, 89, 49, 39, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 93, 64, 64, 17, 15, 3, 95, 51, 88, 47, 140, 6, 37, 72, 109,
-			89, 109, 47, 0, 0, 12, 3, 95, 48, 67, 89, 47, 6, 111, 10, 0, 102, 11, 3, 95, 48, 67, 89, 47, 6, 39, 10, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 65, 64, 72, 7, 195, 53, 1, 64, 9, 17, 0, 0, 0, 5, 194, 40, 80, 72,
+		static unsigned char espeakdata_dicts25_data[5241] = {
+			0, 4, 0, 0, 205, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4,
+			95, 100, 112, 116, 10, 72, 13, 89, 13, 65, 55, 6, 119, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 1, 36, 72, 121, 55, 13, 34, 0, 0, 12, 1, 37, 48, 109, 47, 6, 113, 91, 13, 47, 0, 0, 0, 0, 0, 0, 13,
+			1, 42, 47, 118, 34, 6, 118, 68, 49, 13, 50, 0, 0, 8, 1, 43, 48, 55, 109, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 61, 71, 109, 34, 6, 118, 71, 13, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224,
+			170, 171, 224, 170, 188, 83, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 170, 161, 224, 170, 188, 13, 70,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 170, 151, 224, 170, 188, 100, 13, 0, 0, 0, 0, 0, 11, 6, 224, 170, 149, 224, 170,
+			188, 104, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+			3, 95, 51, 57, 4, 119, 81, 13, 66, 80, 118, 55, 6, 112, 89, 0, 13, 3, 95, 50, 49, 4, 114, 49, 84, 6, 112, 89, 0, 0,
+			15, 3, 95, 51, 56, 4, 118, 70, 35, 47, 34, 6, 112, 89, 0, 10, 3, 95, 50, 48, 58, 6, 112, 89, 0, 0, 12, 3, 95, 50,
+			51, 47, 114, 84, 6, 112, 89, 0, 0, 13, 3, 95, 50, 50, 71, 6, 118, 58, 6, 112, 89, 0, 0, 13, 3, 95, 50, 53, 48, 13,
+			80, 80, 6, 112, 89, 0, 0, 12, 3, 95, 50, 52, 80, 119, 84, 6, 112, 89, 0, 0, 17, 3, 95, 50, 55, 89, 4, 13, 47, 12,
+			114, 118, 84, 6, 112, 89, 0, 0, 12, 3, 95, 50, 54, 143, 110, 84, 6, 112, 89, 0, 0, 16, 3, 95, 51, 49, 4, 114, 49, 13,
+			47, 12, 34, 6, 112, 89, 0, 0, 11, 3, 95, 51, 48, 47, 34, 6, 112, 89, 0, 0, 14, 3, 95, 51, 51, 47, 6, 114, 47, 34,
+			6, 112, 89, 0, 0, 15, 3, 95, 51, 50, 71, 4, 13, 47, 12, 34, 6, 112, 89, 0, 0, 14, 3, 95, 51, 53, 48, 6, 129, 47,
+			34, 6, 112, 89, 0, 0, 14, 3, 95, 51, 52, 80, 6, 131, 47, 34, 6, 112, 89, 0, 0, 16, 3, 95, 51, 55, 89, 4, 118, 70,
+			35, 47, 34, 6, 112, 89, 0, 0, 13, 3, 95, 51, 54, 143, 110, 47, 34, 6, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 55, 57, 4, 119, 81, 66, 57, 118, 6, 126, 12, 89, 113, 0, 13, 3, 95, 54, 49,
+			4, 114, 49, 89, 6, 109, 141, 0, 0, 15, 3, 95, 55, 56, 4, 113, 141, 12, 119, 47, 6, 114, 34, 0, 12, 3, 95, 54, 48, 89,
+			118, 108, 6, 124, 141, 0, 0, 9, 3, 95, 48, 67, 89, 6, 119, 0, 13, 3, 95, 54, 51, 47, 34, 114, 89, 6, 109, 141, 0, 0,
+			12, 3, 95, 54, 50, 71, 118, 89, 6, 109, 141, 0, 0, 12, 3, 95, 54, 53, 48, 129, 89, 6, 109, 141, 0, 0, 12, 3, 95, 54,
+			52, 80, 119, 89, 6, 109, 141, 0, 0, 15, 3, 95, 54, 55, 89, 4, 13, 70, 13, 89, 6, 109, 141, 0, 0, 12, 3, 95, 54, 54,
+			143, 129, 89, 6, 109, 141, 0, 0, 14, 3, 95, 55, 49, 4, 114, 49, 119, 47, 6, 114, 34, 0, 0, 13, 3, 95, 55, 48, 89, 113,
+			47, 12, 6, 114, 16, 0, 0, 12, 3, 95, 55, 51, 47, 131, 47, 6, 114, 34, 0, 0, 12, 3, 95, 55, 50, 71, 131, 47, 6, 114,
+			34, 0, 0, 16, 3, 95, 55, 53, 48, 4, 113, 50, 80, 119, 47, 6, 114, 34, 0, 0, 15, 3, 95, 55, 52, 80, 4, 113, 65, 119,
+			47, 6, 114, 34, 0, 0, 16, 3, 95, 55, 55, 89, 4, 113, 47, 12, 119, 47, 6, 114, 34, 0, 0, 12, 3, 95, 55, 54, 143, 131,
+			47, 6, 114, 34, 0, 0, 13, 3, 95, 49, 57, 4, 119, 81, 66, 6, 112, 89, 0, 0, 11, 3, 95, 49, 56, 109, 142, 6, 13, 34,
+			0, 0, 12, 3, 95, 50, 67, 71, 6, 109, 89, 6, 119, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 50, 57, 4, 119, 81, 13, 66,
+			47, 34, 6, 112, 89, 0, 14, 3, 95, 49, 49, 4, 109, 81, 113, 57, 6, 118, 34, 0, 0, 16, 3, 95, 50, 56, 4, 109, 141, 12,
+			114, 118, 84, 6, 112, 89, 0, 10, 3, 95, 49, 48, 72, 6, 109, 89, 0, 0, 10, 3, 95, 49, 51, 47, 6, 114, 34, 0, 0, 10,
+			3, 95, 49, 50, 71, 6, 118, 34, 0, 0, 13, 3, 95, 49, 53, 48, 13, 50, 72, 6, 109, 34, 0, 0, 10, 3, 95, 49, 52, 80,
+			6, 120, 72, 0, 0, 13, 3, 95, 49, 55, 89, 13, 47, 47, 6, 109, 34, 0, 0, 10, 3, 95, 49, 54, 89, 6, 119, 70, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 52, 57, 4, 119, 81, 13, 66, 4, 13, 48, 80, 6, 118, 89, 0, 0, 11, 3, 224,
+			165, 164, 72, 109, 66, 140, 109, 0, 15, 3, 95, 52, 56, 4, 109, 70, 47, 118, 55, 6, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+			16, 3, 95, 53, 57, 4, 119, 81, 13, 66, 89, 118, 6, 124, 141, 0, 15, 3, 95, 52, 49, 4, 114, 49, 47, 118, 55, 6, 112, 89,
+			0, 0, 12, 3, 95, 53, 56, 109, 141, 12, 6, 135, 50, 0, 12, 3, 95, 52, 48, 80, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95,
+			52, 51, 47, 4, 114, 47, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 50, 71, 4, 114, 47, 118, 55, 6, 112, 89, 0, 0, 16,
+			3, 95, 52, 53, 48, 4, 113, 89, 47, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 52, 80, 4, 133, 65, 118, 55, 6, 112, 89,
+			0, 0, 16, 3, 95, 52, 55, 89, 4, 40, 70, 47, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 54, 143, 4, 114, 47, 118, 55,
+			6, 112, 89, 0, 0, 18, 3, 95, 54, 57, 4, 119, 81, 13, 66, 89, 113, 47, 12, 6, 114, 16, 0, 11, 3, 95, 53, 49, 114, 49,
+			6, 135, 50, 0, 0, 14, 3, 95, 54, 56, 4, 109, 70, 13, 89, 6, 109, 141, 0, 12, 3, 95, 53, 48, 48, 13, 80, 6, 118, 89,
+			0, 0, 13, 3, 95, 53, 51, 47, 34, 114, 48, 6, 109, 50, 0, 0, 10, 3, 95, 53, 50, 71, 6, 135, 50, 0, 0, 13, 3, 95,
+			53, 53, 48, 13, 67, 80, 6, 135, 50, 0, 0, 12, 3, 95, 53, 52, 80, 119, 48, 6, 109, 50, 0, 0, 13, 3, 95, 53, 55, 89,
+			13, 47, 12, 6, 135, 50, 0, 0, 13, 3, 95, 53, 54, 143, 110, 48, 12, 6, 109, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			14, 3, 95, 56, 57, 50, 113, 84, 57, 6, 118, 89, 37, 0, 0, 14, 3, 95, 56, 56, 4, 109, 141, 57, 6, 118, 89, 37, 0, 0,
+			0, 0, 0, 0, 0, 0, 14, 3, 95, 57, 57, 50, 13, 84, 84, 6, 118, 66, 133, 0, 14, 3, 95, 56, 49, 4, 114, 49, 57, 6,
+			118, 89, 37, 0, 0, 13, 3, 95, 57, 56, 109, 141, 12, 6, 118, 66, 133, 0, 11, 3, 95, 56, 48, 6, 126, 12, 89, 113, 0, 0,
+			13, 3, 95, 56, 51, 47, 12, 57, 6, 129, 89, 37, 0, 0, 12, 3, 95, 56, 50, 71, 57, 6, 129, 89, 37, 0, 0, 14, 3, 95,
+			56, 53, 48, 113, 50, 80, 6, 118, 89, 37, 0, 0, 16, 3, 95, 56, 52, 80, 4, 40, 34, 113, 38, 6, 118, 89, 37, 0, 0, 15,
+			3, 95, 56, 55, 89, 13, 47, 12, 57, 6, 118, 89, 37, 0, 0, 12, 3, 95, 56, 54, 143, 114, 6, 129, 89, 37, 0, 0, 12, 3,
+			95, 57, 49, 114, 49, 6, 118, 66, 133, 0, 0, 11, 3, 95, 57, 48, 50, 6, 114, 84, 133, 0, 0, 12, 3, 95, 57, 51, 47, 34,
+			6, 118, 66, 133, 0, 0, 11, 3, 95, 57, 50, 71, 6, 118, 66, 133, 0, 0, 14, 3, 95, 57, 53, 48, 13, 50, 80, 6, 118, 66,
+			133, 0, 0, 13, 3, 95, 57, 52, 80, 119, 34, 6, 118, 66, 133, 0, 0, 14, 3, 95, 57, 55, 89, 13, 47, 12, 6, 118, 66, 133,
+			0, 0, 12, 3, 95, 57, 54, 143, 6, 109, 50, 50, 133, 0, 0, 8, 3, 224, 170, 149, 49, 13, 0, 0, 0, 8, 3, 224, 170, 151,
+			81, 13, 0, 0, 9, 3, 224, 170, 150, 49, 107, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 171, 144, 18, 131,
+			65, 0, 0, 0, 0, 13, 3, 224, 171, 141, 108, 13, 55, 6, 109, 50, 47, 0, 0, 9, 3, 224, 171, 140, 147, 135, 0, 103, 8, 3,
+			224, 171, 140, 147, 135, 0, 0, 0, 0, 8, 3, 224, 171, 137, 18, 121, 0, 0, 9, 3, 224, 171, 136, 147, 134, 0, 102, 8, 3, 224,
+			171, 136, 147, 134, 0, 0, 8, 3, 224, 171, 139, 147, 119, 0, 0, 0, 8, 3, 224, 171, 133, 18, 116, 0, 0, 9, 3, 224, 171, 132,
+			18, 34, 40, 0, 0, 8, 3, 224, 171, 135, 147, 114, 0, 0, 0, 8, 3, 224, 171, 129, 18, 122, 0, 0, 8, 3, 224, 171, 128, 147,
+			112, 0, 0, 9, 3, 224, 171, 131, 18, 34, 40, 0, 0, 8, 3, 224, 171, 130, 147, 123, 0, 0, 8, 3, 224, 170, 182, 91, 13, 0,
+			0, 8, 3, 224, 170, 183, 93, 13, 0, 0, 0, 8, 3, 224, 170, 181, 84, 13, 0, 0, 8, 3, 224, 170, 178, 55, 13, 0, 0, 8,
+			3, 224, 170, 179, 62, 13, 0, 0, 8, 3, 224, 170, 176, 34, 13, 0, 0, 0, 8, 3, 224, 170, 174, 65, 13, 0, 0, 8, 3, 224,
+			170, 175, 57, 13, 0, 0, 8, 3, 224, 170, 172, 71, 13, 0, 0, 9, 3, 224, 170, 173, 71, 107, 13, 0, 0, 8, 3, 224, 170, 170,
+			48, 13, 0, 0, 9, 3, 224, 170, 171, 48, 107, 13, 0, 0, 8, 3, 224, 170, 168, 50, 13, 0, 0, 0, 8, 3, 224, 170, 166, 72,
+			13, 0, 0, 9, 3, 224, 170, 167, 72, 107, 13, 0, 0, 8, 3, 224, 170, 164, 47, 13, 0, 0, 9, 3, 224, 170, 165, 47, 107, 13,
+			0, 0, 8, 3, 224, 170, 162, 142, 13, 0, 0, 10, 3, 224, 170, 163, 107, 13, 66, 13, 0, 0, 8, 3, 224, 170, 160, 141, 13, 0,
+			0, 8, 3, 224, 170, 161, 140, 13, 0, 0, 8, 3, 224, 170, 158, 67, 13, 0, 0, 8, 3, 224, 170, 159, 139, 13, 0, 0, 8, 3,
+			224, 170, 156, 79, 13, 0, 0, 9, 3, 224, 170, 157, 79, 107, 13, 0, 12, 4, 95, 48, 77, 52, 109, 71, 6, 109, 79, 0, 0, 8,
+			3, 224, 171, 162, 18, 45, 0, 8, 3, 224, 170, 154, 80, 13, 0, 14, 4, 95, 48, 77, 53, 49, 107, 6, 109, 34, 13, 71, 0, 0,
+			9, 3, 224, 171, 163, 147, 45, 12, 0, 9, 3, 224, 170, 155, 80, 107, 13, 0, 12, 4, 95, 48, 77, 50, 55, 6, 118, 49, 107, 0,
+			0, 9, 3, 224, 170, 152, 81, 107, 13, 0, 13, 4, 95, 48, 77, 51, 49, 13, 34, 119, 70, 109, 0, 0, 8, 3, 224, 170, 153, 68,
+			13, 0, 0, 13, 4, 95, 48, 77, 49, 107, 13, 79, 4, 118, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224, 170, 190, 147, 118, 0, 0, 8, 3, 224, 170, 191, 18, 113, 0, 0, 0, 0,
+			0, 0, 8, 3, 224, 170, 184, 89, 13, 0, 0, 8, 3, 224, 170, 185, 108, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 131, 239, 187, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			11, 6, 224, 170, 156, 224, 170, 188, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 11, 6, 224, 170, 150, 224, 170, 188, 101, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 47, 34, 6, 111, 66, 0, 0, 8, 2, 95, 50, 71, 6, 114, 0, 0, 8, 2,
+			95, 49, 6, 114, 49, 0, 0, 11, 2, 95, 48, 91, 6, 123, 50, 57, 14, 0, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 8,
+			2, 95, 54, 143, 6, 110, 0, 0, 10, 2, 95, 53, 48, 6, 118, 67, 80, 0, 0, 9, 2, 95, 52, 80, 6, 118, 34, 0, 0, 0,
+			0, 9, 2, 95, 57, 50, 6, 135, 0, 103, 9, 2, 95, 57, 50, 6, 109, 40, 0, 0, 8, 2, 95, 56, 6, 118, 141, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 230, 10, 0, 0, 48, 0,
+			0, 0, 231, 10, 0, 0, 49, 0, 0, 0, 232, 10, 0, 0, 50, 0, 0, 0, 233, 10, 0, 0, 51, 0, 0, 0, 234, 10, 0, 0,
+			52, 0, 0, 0, 235, 10, 0, 0, 53, 0, 0, 0, 236, 10, 0, 0, 54, 0, 0, 0, 237, 10, 0, 0, 55, 0, 0, 0, 238, 10,
+			0, 0, 56, 0, 0, 0, 239, 10, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 22, 0, 3, 104, 109, 0, 7, 6, 1, 23,
+			0, 3, 101, 109, 0, 7, 6, 1, 24, 0, 3, 100, 109, 0, 7, 6, 1, 29, 0, 3, 88, 109, 0, 7, 6, 1, 44, 0, 3, 83,
+			109, 0, 7, 6, 1, 2, 0, 3, 50, 0, 7, 6, 1, 3, 0, 3, 50, 0, 4, 2, 224, 170, 170, 3, 65, 0, 2, 224, 170, 171,
+			0, 2, 224, 170, 172, 0, 2, 224, 170, 173, 0, 2, 224, 170, 174, 0, 4, 2, 224, 170, 159, 3, 66, 0, 2, 224, 170, 160, 0, 2,
+			224, 170, 161, 0, 2, 224, 170, 162, 0, 2, 224, 170, 163, 0, 4, 2, 224, 170, 154, 3, 67, 0, 2, 224, 170, 155, 0, 2, 224, 170,
+			156, 0, 2, 224, 170, 157, 0, 2, 224, 170, 158, 0, 2, 224, 170, 175, 0, 4, 2, 224, 170, 149, 3, 68, 0, 2, 224, 170, 150, 0,
+			2, 224, 170, 151, 0, 2, 224, 170, 152, 0, 2, 224, 170, 153, 0, 7, 6, 1, 4, 0, 3, 108, 0, 7, 6, 1, 6, 0, 3, 109,
+			0, 4, 1, 185, 170, 224, 133, 170, 224, 3, 116, 0, 2, 224, 170, 185, 0, 7, 6, 1, 7, 0, 3, 118, 0, 224, 170, 130, 3, 129,
+			0, 7, 6, 1, 8, 0, 3, 113, 0, 224, 170, 130, 3, 124, 0, 7, 6, 1, 9, 0, 2, 32, 3, 37, 0, 3, 112, 0, 7, 6,
+			1, 10, 0, 3, 122, 0, 7, 6, 1, 11, 0, 3, 40, 0, 4, 224, 170, 129, 2, 32, 3, 133, 0, 224, 170, 130, 0, 7, 6, 1,
+			12, 0, 3, 34, 40, 0, 7, 6, 1, 13, 0, 3, 45, 0, 7, 6, 1, 14, 0, 3, 116, 0, 7, 6, 1, 16, 0, 224, 170, 129,
+			1, 190, 170, 224, 2, 32, 3, 57, 0, 3, 114, 0, 4, 224, 170, 129, 3, 126, 12, 0, 224, 170, 130, 0, 7, 6, 1, 17, 0, 3,
+			134, 0, 4, 224, 170, 129, 2, 32, 3, 148, 0, 224, 170, 130, 0, 7, 6, 1, 18, 0, 3, 121, 0, 7, 6, 1, 20, 0, 4, 224,
+			170, 129, 1, 190, 170, 224, 2, 32, 3, 58, 0, 224, 170, 130, 1, 190, 170, 224, 2, 32, 0, 3, 119, 0, 4, 224, 170, 129, 2, 32,
+			3, 131, 0, 224, 170, 130, 0, 7, 6, 1, 21, 0, 3, 135, 0, 4, 224, 170, 129, 2, 32, 3, 149, 0, 224, 170, 130, 0, 7, 6,
+			1, 22, 0, 2, 17, 66, 3, 49, 0, 4, 2, 224, 171, 141, 224, 170, 175, 3, 49, 12, 0, 224, 171, 141, 224, 170, 149, 2, 17, 66,
+			0, 224, 171, 141, 224, 170, 149, 3, 49, 12, 109, 0, 224, 171, 141, 224, 170, 183, 2, 17, 66, 3, 49, 91, 0, 224, 171, 141, 224, 170,
+			183, 3, 49, 91, 109, 0, 3, 49, 109, 0, 224, 170, 188, 2, 17, 66, 3, 104, 0, 224, 170, 188, 3, 104, 109, 0, 7, 6, 1, 23,
+			0, 224, 170, 188, 2, 17, 66, 3, 101, 0, 224, 170, 188, 3, 101, 109, 0, 2, 17, 66, 3, 145, 0, 3, 145, 109, 0, 7, 6, 1,
+			24, 0, 2, 17, 66, 3, 81, 0, 224, 171, 141, 224, 170, 151, 2, 17, 66, 3, 81, 12, 0, 224, 171, 141, 224, 170, 151, 3, 81, 12,
+			109, 0, 3, 81, 109, 0, 224, 170, 188, 2, 17, 66, 3, 100, 0, 224, 170, 188, 3, 100, 109, 0, 7, 6, 1, 25, 0, 2, 17, 66,
+			3, 146, 0, 3, 146, 109, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 1, 141, 171, 224, 2, 32, 3, 68, 13, 0, 3, 68,
+			109, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0, 4, 2, 224, 171, 141, 224, 170, 175, 3, 80, 12, 0, 224, 171, 141, 224, 170,
+			154, 2, 17, 66, 0, 224, 171, 141, 224, 170, 154, 3, 80, 12, 109, 0, 3, 80, 109, 0, 224, 171, 141, 224, 170, 155, 2, 17, 66, 3,
+			143, 12, 0, 224, 171, 141, 224, 170, 155, 3, 143, 12, 109, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 143, 0, 224, 171, 141, 224, 170,
+			155, 2, 17, 66, 3, 143, 12, 0, 224, 171, 141, 224, 170, 155, 3, 143, 12, 109, 0, 3, 143, 109, 0, 7, 6, 1, 29, 0, 2, 17,
+			66, 3, 79, 0, 224, 171, 141, 224, 170, 156, 2, 17, 66, 3, 79, 12, 0, 224, 171, 141, 224, 170, 156, 3, 79, 12, 109, 0, 3, 79,
+			109, 0, 224, 171, 141, 224, 170, 158, 2, 17, 66, 3, 81, 66, 0, 224, 171, 141, 224, 170, 158, 3, 81, 66, 109, 0, 224, 170, 188, 2,
+			17, 66, 3, 88, 0, 224, 170, 188, 3, 88, 109, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6, 1,
+			31, 0, 4, 1, 141, 171, 224, 2, 32, 3, 67, 0, 2, 17, 66, 0, 3, 67, 109, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139,
+			0, 4, 2, 224, 171, 141, 224, 170, 175, 3, 139, 12, 0, 224, 171, 141, 224, 170, 159, 2, 17, 66, 0, 224, 171, 141, 224, 170, 159, 3,
+			139, 12, 109, 0, 3, 139, 109, 0, 224, 171, 141, 224, 170, 160, 2, 17, 66, 3, 141, 12, 0, 224, 171, 141, 224, 170, 160, 3, 141, 12,
+			109, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 141, 0, 224, 171, 141, 224, 170, 160, 2, 17, 66, 3, 141, 12, 0, 224, 171, 141, 224,
+			170, 160, 3, 141, 12, 109, 0, 3, 141, 109, 0, 7, 6, 1, 34, 0, 224, 170, 188, 2, 17, 66, 3, 70, 0, 224, 170, 188, 3, 70,
+			109, 0, 2, 17, 66, 3, 140, 0, 224, 171, 141, 224, 170, 161, 2, 17, 66, 3, 140, 12, 0, 224, 171, 141, 224, 170, 161, 3, 140, 12,
+			109, 0, 3, 140, 109, 0, 224, 171, 141, 224, 170, 162, 2, 17, 66, 3, 142, 12, 0, 224, 171, 141, 224, 170, 162, 3, 142, 12, 109, 0,
+			7, 6, 1, 35, 0, 224, 170, 188, 2, 17, 66, 3, 70, 107, 0, 224, 170, 188, 3, 70, 107, 109, 0, 2, 17, 66, 3, 142, 0, 224,
+			171, 141, 224, 170, 162, 2, 17, 66, 3, 142, 12, 0, 224, 171, 141, 224, 170, 162, 3, 142, 12, 109, 0, 3, 142, 109, 0, 7, 6, 1,
+			36, 0, 2, 17, 66, 3, 66, 0, 1, 141, 171, 224, 2, 32, 3, 66, 13, 0, 3, 66, 109, 0, 7, 6, 1, 37, 0, 224, 171, 141,
+			224, 170, 165, 2, 17, 66, 3, 25, 12, 0, 224, 171, 141, 224, 170, 165, 3, 25, 12, 109, 0, 2, 17, 66, 3, 47, 0, 4, 2, 224,
+			171, 141, 224, 170, 175, 3, 47, 12, 0, 224, 171, 141, 224, 170, 164, 2, 17, 66, 0, 224, 171, 141, 224, 170, 164, 3, 47, 12, 109, 0,
+			3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 224, 171, 141, 224, 170, 165, 2, 17, 66, 3, 25, 12, 0, 224, 171,
+			141, 224, 170, 165, 3, 25, 12, 109, 0, 3, 25, 109, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 72, 0, 224, 171, 141, 224, 170, 166,
+			2, 17, 66, 3, 72, 12, 0, 224, 171, 141, 224, 170, 166, 3, 72, 12, 109, 0, 3, 72, 109, 0, 224, 171, 141, 224, 170, 167, 2, 17,
+			66, 3, 138, 12, 0, 224, 171, 141, 224, 170, 167, 3, 138, 12, 109, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 224, 171, 141,
+			224, 170, 167, 2, 17, 66, 3, 138, 12, 0, 224, 171, 141, 224, 170, 167, 3, 138, 12, 109, 0, 3, 138, 109, 0, 7, 6, 1, 41, 0,
+			4, 1, 141, 171, 224, 176, 170, 224, 2, 32, 3, 50, 0, 2, 17, 66, 0, 1, 141, 171, 224, 2, 32, 3, 50, 13, 0, 3, 50, 109,
+			0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 4, 2, 224, 171, 141, 224, 170, 175, 3, 48, 12, 0, 224, 171, 141, 224, 170, 170,
+			2, 17, 66, 0, 224, 171, 141, 224, 170, 170, 3, 48, 12, 109, 0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 224, 170, 188, 2, 17, 66,
+			3, 83, 0, 224, 170, 188, 3, 83, 109, 0, 2, 17, 66, 3, 136, 0, 3, 136, 109, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71,
+			0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 4, 1, 141, 171, 224,
+			168, 170, 224, 2, 32, 3, 65, 0, 1, 141, 171, 224, 176, 170, 224, 2, 32, 0, 2, 17, 66, 0, 1, 141, 171, 224, 2, 32, 3, 65,
+			13, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0, 4, 3, 57, 13, 0, 1, 141, 171, 224, 2, 32, 0, 1,
+			17, 67, 2, 32, 3, 116, 57, 0, 7, 6, 1, 49, 0, 4, 2, 17, 66, 3, 34, 0, 2, 32, 0, 1, 141, 171, 224, 2, 32, 3,
+			34, 13, 0, 3, 34, 109, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 1, 141, 171, 224, 2, 32, 3, 55, 13, 0, 3, 55,
+			109, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 1, 141, 171, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109, 0, 7, 6, 1,
+			54, 0, 8, 2, 17, 66, 3, 58, 0, 8, 3, 58, 109, 0, 4, 2, 17, 66, 3, 84, 0, 8, 2, 224, 171, 141, 0, 3, 84, 109,
+			0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 109,
+			0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0, 3, 89, 109, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 108, 0, 3, 108, 109,
+			0, 7, 6, 1, 61, 0, 3, 0, 7, 6, 1, 62, 0, 3, 12, 0, 7, 6, 1, 63, 0, 3, 118, 0, 4, 2, 224, 170, 129, 3,
+			129, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 224, 170, 181, 3, 135, 0, 7, 6, 1, 64, 0, 3, 113, 0, 224, 170, 130, 3,
+			124, 0, 7, 6, 1, 65, 0, 2, 32, 3, 37, 0, 3, 112, 0, 4, 2, 224, 170, 129, 3, 124, 0, 224, 170, 129, 2, 32, 0, 224,
+			170, 130, 0, 7, 6, 1, 66, 0, 3, 40, 0, 4, 2, 224, 170, 129, 3, 133, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 7,
+			6, 1, 67, 0, 3, 123, 0, 4, 2, 224, 170, 129, 3, 133, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 7, 6, 1, 68, 0,
+			3, 34, 40, 0, 7, 6, 1, 69, 0, 3, 34, 40, 0, 7, 6, 1, 70, 0, 3, 116, 0, 7, 6, 1, 72, 0, 3, 114, 0, 2,
+			224, 170, 129, 3, 126, 0, 4, 224, 170, 129, 2, 32, 3, 126, 12, 0, 224, 170, 130, 0, 7, 6, 1, 73, 0, 3, 134, 0, 4, 2,
+			224, 170, 129, 3, 148, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 7, 6, 1, 74, 0, 3, 121, 0, 7, 6, 1, 76, 0, 3,
+			119, 0, 4, 2, 224, 170, 129, 3, 131, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 7, 6, 1, 77, 0, 3, 135, 0, 4, 2,
+			224, 170, 129, 3, 149, 0, 224, 170, 129, 2, 32, 0, 224, 170, 130, 0, 7, 6, 1, 78, 0, 3, 0, 7, 6, 1, 81, 0, 3, 131,
+			65, 0, 7, 6, 1, 97, 0, 3, 109, 20, 34, 34, 0, 7, 6, 1, 98, 0, 3, 45, 12, 0, 7, 6, 1, 99, 0, 3, 45, 0,
+			7, 6, 1, 100, 0, 3, 45, 12, 0, 7, 6, 111, 0, 3, 21, 0, 102, 1, 32, 32, 15, 2, 32, 32, 15, 3, 65, 36, 0, 7,
+			6, 0, 37, 3, 48, 109, 89, 116, 50, 47, 0, 36, 3, 72, 121, 55, 109, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts25 = FileInMemory_createWithData (5240, reinterpret_cast<const char *> (&espeakdata_dicts25_data), 
+			U"espeak-1.48.04-source/espeak-data/gu_dict", 
+			U"gu");
+		my addItem_move (espeakdata_dicts25.move());
+
+		static unsigned char espeakdata_dicts26_data[7732] = {
+			0, 4, 0, 0, 222, 26, 0, 0, 0, 0, 0, 7, 195, 85, 81, 64, 46, 13, 7, 195, 4, 209, 128, 46, 13, 0, 0, 6, 65, 4,
+			35, 0, 49, 5, 193, 4, 72, 8, 0, 0, 0, 0, 6, 65, 8, 71, 13, 0, 0, 0, 7, 195, 57, 50, 64, 46, 13, 0, 0, 6,
+			65, 12, 117, 13, 0, 0, 6, 195, 29, 36, 146, 13, 0, 7, 195, 41, 49, 64, 46, 13, 7, 195, 20, 209, 128, 46, 13, 0, 0, 6,
+			65, 16, 72, 13, 0, 0, 0, 6, 195, 57, 33, 192, 13, 6, 195, 29, 36, 19, 13, 0, 15, 4, 95, 100, 112, 116, 9, 88, 6, 35,
+			16, 109, 88, 10, 0, 0, 0, 0, 6, 195, 56, 81, 207, 8, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 7, 195, 57, 48, 64, 46,
+			13, 7, 195, 57, 32, 192, 46, 13, 0, 0, 6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 6, 65, 32, 101, 13, 0, 0, 14, 1, 33,
+			6, 40, 88, 84, 138, 76, 50, 138, 49, 0, 102, 14, 1, 33, 6, 40, 89, 49, 55, 138, 76, 50, 138, 49, 0, 0, 0, 11, 1, 35,
+			71, 140, 6, 39, 57, 10, 0, 27, 0, 6, 65, 36, 37, 0, 49, 5, 193, 36, 72, 8, 0, 11, 1, 37, 48, 6, 39, 89, 47, 39,
+			0, 27, 0, 9, 1, 38, 10, 6, 36, 50, 72, 0, 0, 0, 6, 65, 40, 57, 136, 0, 0, 7, 196, 56, 83, 65, 52, 76, 0, 7,
+			195, 61, 22, 64, 46, 13, 15, 1, 42, 88, 84, 57, 6, 36, 88, 72, 37, 117, 122, 0, 27, 0, 7, 195, 5, 2, 0, 46, 13, 9,
+			1, 43, 48, 55, 40, 89, 0, 27, 0, 7, 195, 5, 3, 0, 46, 13, 6, 65, 44, 49, 13, 0, 0, 7, 195, 5, 4, 0, 46, 13,
+			0, 7, 195, 37, 69, 192, 46, 13, 11, 1, 46, 47, 35, 76, 49, 122, 0, 104, 27, 10, 1, 46, 47, 39, 76, 49, 122, 0, 27, 0,
+			11, 1, 47, 49, 140, 6, 39, 88, 10, 0, 27, 0, 14, 4, 95, 100, 105, 97, 6, 40, 65, 55, 122, 139, 47, 0, 6, 65, 48, 55,
+			13, 0, 0, 0, 7, 195, 57, 37, 192, 46, 13, 0, 0, 6, 65, 52, 65, 13, 0, 0, 7, 195, 53, 0, 64, 46, 13, 0, 7, 195,
+			92, 150, 128, 46, 13, 0, 0, 6, 65, 56, 50, 13, 0, 0, 0, 7, 195, 57, 36, 192, 46, 13, 14, 1, 58, 72, 84, 6, 39, 47,
+			122, 76, 49, 122, 0, 104, 13, 1, 58, 72, 84, 6, 39, 47, 39, 76, 49, 122, 0, 0, 0, 6, 65, 60, 39, 0, 49, 5, 193, 60,
+			72, 28, 0, 14, 1, 61, 10, 57, 6, 36, 72, 50, 122, 49, 39, 0, 27, 0, 0, 0, 15, 1, 64, 47, 51, 81, 39, 84, 35, 76,
+			49, 39, 37, 0, 102, 8, 1, 64, 10, 6, 35, 47, 0, 6, 65, 64, 48, 13, 0, 0, 7, 195, 65, 0, 64, 46, 13, 7, 194, 4,
+			32, 46, 13, 41, 0, 7, 195, 56, 51, 192, 46, 13, 6, 195, 48, 128, 64, 13, 7, 195, 4, 209, 192, 46, 13, 0, 0, 7, 65, 68,
+			49, 84, 13, 0, 0, 0, 6, 195, 72, 48, 192, 13, 0, 0, 6, 65, 72, 51, 13, 0, 0, 8, 66, 5, 32, 122, 51, 0, 102, 6,
+			194, 73, 0, 46, 13, 0, 0, 13, 4, 95, 100, 111, 116, 47, 6, 39, 76, 49, 122, 0, 0, 7, 65, 76, 89, 13, 0, 49, 7, 65,
+			76, 89, 10, 0, 28, 0, 0, 0, 0, 6, 65, 80, 47, 13, 0, 0, 6, 195, 36, 208, 117, 76, 0, 7, 195, 36, 209, 192, 46, 13,
+			0, 0, 6, 65, 84, 40, 0, 49, 5, 193, 84, 72, 28, 7, 195, 4, 51, 0, 46, 13, 0, 0, 0, 0, 6, 65, 88, 84, 13, 0,
+			0, 0, 0, 16, 4, 95, 49, 77, 52, 71, 6, 37, 55, 37, 57, 111, 50, 0, 104, 15, 4, 95, 49, 77, 52, 71, 6, 37, 55, 37,
+			57, 139, 50, 0, 0, 13, 1, 92, 71, 6, 109, 49, 89, 55, 109, 91, 0, 27, 13, 65, 92, 72, 40, 48, 55, 39, 15, 84, 13, 0,
+			102, 16, 65, 92, 72, 84, 39, 89, 47, 140, 40, 49, 39, 15, 84, 13, 0, 0, 7, 195, 5, 52, 0, 46, 13, 0, 6, 195, 16, 243,
+			192, 13, 16, 1, 94, 117, 6, 37, 51, 49, 40, 65, 83, 55, 36, 49, 89, 0, 0, 7, 195, 5, 54, 0, 46, 13, 0, 15, 4, 95,
+			49, 77, 49, 107, 6, 37, 61, 35, 72, 139, 0, 103, 16, 4, 95, 49, 77, 49, 107, 6, 37, 61, 4, 122, 72, 139, 0, 102, 14, 4,
+			95, 49, 77, 49, 47, 6, 37, 89, 139, 78, 139, 0, 7, 65, 96, 37, 49, 89, 0, 0, 7, 195, 97, 0, 64, 46, 13, 16, 4, 95,
+			49, 77, 50, 65, 6, 37, 55, 37, 57, 111, 50, 0, 104, 15, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 57, 139, 50, 0, 0, 7,
+			195, 4, 65, 0, 46, 13, 17, 4, 95, 49, 77, 51, 65, 37, 55, 37, 57, 137, 34, 72, 139, 0, 102, 16, 4, 95, 49, 77, 51, 65,
+			6, 37, 55, 37, 35, 51, 72, 139, 0, 0, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50, 0, 0, 7, 195, 4, 68, 0, 46, 13,
+			0, 6, 195, 72, 52, 192, 13, 7, 195, 20, 212, 192, 46, 13, 0, 0, 6, 65, 104, 88, 13, 0, 0, 6, 194, 9, 32, 24, 13, 0,
+			7, 195, 21, 84, 128, 46, 13, 0, 0, 6, 195, 9, 35, 0, 13, 0, 6, 195, 5, 68, 0, 13, 0, 7, 195, 36, 101, 64, 46, 13,
+			0, 6, 195, 9, 38, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6, 37, 55, 72,
+			122, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55, 72, 122, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 97, 128, 64, 46, 13,
+			6, 195, 73, 64, 64, 13, 0, 0, 0, 6, 194, 13, 32, 46, 13, 6, 194, 5, 96, 46, 13, 0, 0, 0, 0, 0, 7, 195, 97, 129,
+			64, 46, 13, 7, 195, 36, 97, 128, 46, 13, 7, 195, 13, 37, 0, 46, 13, 0, 0, 0, 0, 7, 195, 97, 2, 64, 46, 13, 7, 195,
+			93, 34, 64, 46, 13, 7, 195, 60, 34, 128, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 5, 117, 0, 46,
+			13, 0, 0, 0, 0, 6, 195, 92, 36, 128, 13, 0, 0, 0, 0, 7, 195, 76, 36, 128, 46, 13, 6, 195, 73, 52, 192, 13, 0, 0,
+			0, 6, 194, 17, 32, 24, 13, 0, 7, 195, 77, 148, 192, 46, 13, 6, 195, 33, 166, 143, 13, 0, 0, 0, 0, 7, 195, 81, 5, 64,
+			46, 13, 0, 0, 0, 0, 7, 196, 56, 83, 65, 212, 76, 7, 195, 60, 38, 128, 46, 13, 0, 0, 0, 7, 195, 4, 148, 0, 46, 13,
+			15, 4, 95, 109, 99, 110, 65, 6, 35, 49, 140, 16, 39, 50, 0, 0, 0, 0, 13, 68, 77, 64, 82, 80, 89, 47, 6, 35, 51, 47,
+			0, 0, 6, 194, 21, 16, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 224, 192, 24, 7, 195, 72, 208, 64, 46, 13,
+			7, 195, 52, 112, 64, 46, 13, 0, 0, 0, 0, 7, 195, 16, 16, 64, 46, 13, 6, 195, 12, 48, 64, 13, 0, 0, 0, 8, 66, 21,
+			32, 36, 51, 0, 102, 0, 7, 195, 72, 209, 64, 46, 13, 7, 195, 52, 113, 64, 46, 13, 0, 0, 0, 0, 6, 195, 73, 65, 128, 13,
+			7, 195, 37, 97, 128, 46, 13, 0, 0, 0, 0, 7, 195, 72, 210, 64, 46, 13, 7, 195, 52, 114, 64, 46, 13, 0, 0, 0, 7, 195,
+			20, 52, 0, 46, 13, 0, 0, 0, 0, 0, 7, 195, 96, 19, 64, 46, 13, 0, 0, 0, 0, 13, 67, 41, 1, 71, 57, 136, 15, 48,
+			6, 36, 81, 0, 7, 195, 64, 131, 192, 46, 13, 6, 195, 32, 131, 192, 13, 6, 195, 4, 115, 64, 13, 0, 0, 0, 0, 7, 195, 48,
+			148, 64, 46, 13, 6, 195, 29, 36, 128, 13, 0, 0, 0, 0, 6, 195, 72, 68, 192, 13, 7, 195, 5, 100, 128, 46, 13, 0, 0, 0,
+			6, 194, 25, 32, 46, 13, 0, 7, 195, 21, 65, 0, 46, 13, 0, 6, 195, 73, 69, 12, 13, 7, 195, 20, 49, 12, 46, 13, 0, 0,
+			0, 6, 195, 73, 69, 128, 13, 7, 195, 25, 37, 0, 46, 13, 0, 6, 195, 25, 38, 0, 13, 0, 0, 0, 7, 195, 4, 209, 0, 46,
+			13, 0, 0, 0, 0, 0, 0, 0, 6, 194, 21, 80, 46, 13, 0, 8, 197, 56, 83, 65, 41, 80, 76, 0, 0, 0, 0, 0, 15, 67,
+			76, 148, 216, 89, 6, 37, 89, 15, 6, 37, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 77, 48, 64, 46, 13, 6, 195,
+			4, 49, 141, 13, 0, 0, 0, 6, 194, 29, 32, 46, 13, 0, 7, 195, 72, 209, 128, 46, 13, 0, 0, 0, 6, 195, 29, 36, 0, 13,
+			0, 6, 195, 56, 146, 133, 76, 6, 195, 5, 97, 192, 13, 0, 7, 195, 29, 38, 0, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 208, 77, 60, 76, 0, 7, 195, 60, 52, 128, 46, 13, 7, 195, 29, 36, 192, 46,
+			13, 0, 0, 0, 0, 7, 195, 76, 52, 128, 46, 13, 0, 0, 18, 3, 226, 132, 162, 48, 140, 6, 39, 6, 37, 88, 84, 39, 75, 122,
+			76, 0, 0, 6, 194, 33, 32, 46, 13, 0, 0, 0, 8, 195, 33, 37, 0, 46, 13, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 17, 22, 64, 13, 0, 0, 0, 6, 194, 37, 16, 46, 13, 0, 6, 195, 56, 148, 213, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 195, 96, 32, 64, 46, 13, 7, 195, 24, 96, 64, 46, 13, 0, 0, 18, 3, 226, 128, 166, 47, 140, 6, 37, 15, 47, 6, 35, 76,
+			49, 36, 0, 104, 17, 3, 226, 128, 166, 47, 140, 6, 37, 15, 47, 6, 39, 76, 49, 36, 0, 0, 23, 3, 226, 128, 161, 72, 84, 6,
+			39, 89, 47, 51, 139, 49, 37, 15, 49, 51, 6, 89, 47, 0, 102, 22, 3, 226, 128, 161, 72, 84, 6, 39, 89, 47, 140, 139, 49, 37,
+			15, 49, 140, 6, 37, 90, 0, 0, 7, 195, 12, 64, 64, 46, 13, 7, 195, 5, 112, 128, 46, 13, 12, 3, 226, 128, 160, 49, 44, 6,
+			89, 47, 0, 102, 11, 3, 226, 128, 160, 49, 140, 6, 37, 90, 0, 0, 0, 21, 3, 226, 128, 162, 49, 140, 6, 40, 48, 50, 35, 15,
+			47, 6, 35, 76, 49, 122, 0, 104, 20, 3, 226, 128, 162, 49, 140, 6, 40, 48, 50, 35, 15, 47, 6, 39, 76, 49, 122, 0, 0, 0,
+			12, 3, 226, 130, 172, 6, 36, 84, 140, 39, 0, 104, 11, 3, 226, 130, 172, 6, 36, 40, 51, 39, 0, 0, 0, 0, 0, 6, 195, 8,
+			147, 1, 72, 0, 0, 0, 0, 0, 0, 14, 4, 95, 111, 103, 111, 6, 39, 81, 39, 50, 109, 49, 0, 0, 0, 0, 0, 0, 6, 195,
+			65, 35, 198, 24, 0, 7, 195, 37, 51, 0, 46, 13, 0, 0, 0, 7, 195, 37, 52, 0, 46, 13, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 8, 147, 15, 72, 0, 0, 0, 0, 7, 195, 37, 65, 0, 24, 13, 0, 13, 4, 95, 98, 114, 118, 71, 140, 16, 6, 109, 84, 0,
+			0, 0, 0, 0, 24, 4, 95, 97, 99, 50, 72, 84, 6, 39, 89, 47, 140, 16, 139, 49, 138, 38, 6, 35, 49, 139, 47, 0, 0, 7,
+			195, 96, 149, 192, 46, 13, 0, 0, 0, 0, 7, 195, 20, 211, 0, 46, 13, 0, 7, 195, 20, 210, 0, 46, 13, 0, 0, 0, 6, 195,
+			97, 150, 128, 13, 13, 3, 226, 128, 176, 48, 140, 6, 39, 65, 37, 55, 0, 0, 7, 195, 16, 246, 0, 46, 13, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 93, 64, 64, 13, 15, 3, 95, 51, 88, 47, 140, 6, 37, 72, 109, 89, 109, 47, 0, 0, 12, 3,
+			95, 48, 67, 89, 47, 6, 111, 10, 0, 102, 11, 3, 95, 48, 67, 89, 47, 6, 39, 10, 0, 0, 0, 0, 7, 195, 213, 64, 64, 104,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 65, 64, 72, 7, 195, 53, 1, 64, 46, 13, 0, 0, 0, 5, 194, 40, 80, 72,
 			18, 3, 95, 49, 57, 72, 6, 109, 84, 109, 47, 50, 35, 109, 89, 47, 0, 102, 16, 3, 95, 49, 57, 72, 6, 109, 84, 109, 47, 50,
 			130, 89, 47, 0, 0, 17, 3, 95, 49, 56, 6, 39, 89, 122, 65, 50, 35, 109, 89, 47, 0, 102, 15, 3, 95, 49, 56, 6, 39, 89,
 			122, 65, 50, 130, 89, 47, 0, 0, 16, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 6, 35, 10, 0, 102, 15, 3, 95, 50, 67, 72,
-			84, 57, 6, 36, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49, 49, 57, 6, 36, 72, 122, 50, 35, 109, 89, 47,
-			0, 102, 15, 3, 95, 49, 49, 57, 6, 36, 72, 122, 50, 130, 89, 47, 0, 0, 7, 195, 61, 67, 64, 9, 17, 7, 195, 5, 3, 64,
-			9, 17, 12, 3, 95, 49, 48, 72, 6, 109, 89, 109, 47, 0, 0, 16, 3, 95, 51, 67, 47, 51, 6, 37, 89, 47, 6, 35, 10, 0,
-			102, 16, 3, 95, 49, 51, 47, 140, 6, 37, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 51, 47, 140, 6, 37, 50, 130, 89, 47,
-			0, 0, 16, 3, 95, 49, 50, 72, 84, 6, 35, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 50, 72, 84, 6, 35, 50, 130, 89,
-			47, 0, 0, 16, 3, 95, 49, 53, 48, 6, 109, 47, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 53, 48, 6, 109, 47, 50, 130,
-			89, 47, 0, 0, 17, 3, 95, 49, 52, 76, 6, 109, 47, 44, 50, 35, 109, 89, 47, 0, 102, 15, 3, 95, 49, 52, 76, 6, 109, 47,
-			44, 50, 130, 89, 47, 0, 0, 18, 3, 95, 49, 55, 89, 6, 109, 72, 122, 65, 50, 35, 109, 89, 47, 0, 102, 16, 3, 95, 49, 55,
-			89, 6, 109, 72, 122, 65, 50, 130, 89, 47, 0, 0, 16, 3, 95, 49, 54, 91, 6, 109, 89, 50, 35, 109, 89, 47, 0, 102, 14, 3,
-			95, 49, 54, 91, 6, 109, 89, 50, 130, 89, 47, 0, 0, 0, 7, 195, 61, 52, 192, 9, 17, 6, 195, 12, 196, 128, 17, 17, 3, 95,
-			55, 88, 89, 6, 109, 72, 122, 65, 72, 109, 89, 109, 47, 0, 0, 18, 3, 95, 52, 67, 76, 36, 47, 51, 6, 37, 89, 47, 6, 39,
-			10, 0, 102, 0, 0, 0, 6, 195, 12, 68, 128, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 68, 151,
-			17, 13, 3, 95, 54, 67, 91, 6, 109, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 50, 88, 72, 84, 6, 35,
-			72, 109, 89, 109, 47, 0, 0, 16, 5, 95, 48, 77, 65, 49, 107, 6, 37, 61, 35, 72, 36, 0, 103, 17, 5, 95, 48, 77, 65, 49,
-			107, 6, 37, 61, 4, 122, 72, 36, 0, 102, 15, 5, 95, 48, 77, 65, 49, 47, 6, 37, 89, 139, 78, 36, 0, 0, 0, 18, 5, 95,
-			48, 77, 65, 51, 65, 37, 55, 37, 57, 137, 34, 72, 36, 0, 102, 17, 5, 95, 48, 77, 65, 51, 65, 6, 37, 55, 37, 35, 51, 72,
-			36, 0, 0, 18, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 17, 5, 95, 48, 77, 65, 50, 65, 6,
-			37, 55, 37, 57, 139, 50, 35, 0, 0, 0, 0, 0, 6, 195, 88, 112, 64, 17, 6, 195, 4, 16, 64, 17, 0, 0, 0, 0, 7, 195,
-			92, 208, 64, 9, 17, 0, 10, 3, 95, 63, 63, 88, 50, 35, 49, 0, 0, 0, 6, 194, 53, 32, 24, 17, 0, 7, 195, 65, 33, 128,
-			9, 17, 7, 195, 61, 65, 128, 9, 17, 16, 3, 95, 52, 88, 76, 6, 109, 47, 44, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 7,
-			195, 21, 1, 128, 9, 17, 0, 0, 0, 0, 7, 195, 72, 226, 192, 9, 17, 7, 195, 5, 2, 128, 9, 17, 14, 3, 95, 53, 88, 48,
-			6, 109, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 7, 195, 4, 130, 192, 9, 17, 0, 0, 0, 0, 6, 195, 65, 35, 128, 17, 6,
-			195, 60, 83, 64, 17, 7, 195, 56, 99, 192, 9, 17, 15, 3, 95, 54, 88, 91, 6, 109, 88, 72, 109, 89, 109, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 6, 195, 69, 4, 128, 17, 0, 0, 0, 0, 8, 195, 77, 68, 128, 9, 24, 17, 7, 195, 53, 4, 128, 9, 17,
-			7, 195, 52, 20, 64, 9, 17, 0, 0, 0, 6, 194, 57, 32, 9, 17, 0, 13, 67, 13, 68, 140, 117, 39, 50, 47, 51, 125, 55, 0,
-			6, 195, 81, 165, 128, 24, 7, 195, 33, 37, 128, 9, 17, 6, 195, 13, 68, 140, 17, 16, 3, 95, 56, 88, 6, 39, 89, 122, 65, 72,
-			109, 89, 109, 47, 0, 0, 7, 195, 57, 34, 0, 9, 17, 0, 9, 134, 14, 5, 13, 1, 197, 161, 76, 0, 0, 0, 0, 0, 0, 7,
-			195, 36, 211, 0, 9, 17, 16, 3, 95, 57, 88, 72, 6, 109, 84, 109, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 11,
-			3, 95, 63, 65, 89, 55, 39, 84, 39, 0, 0, 0, 0, 0, 7, 195, 53, 84, 0, 17, 41, 0, 0, 0, 0, 0, 0, 7, 195, 60,
-			33, 0, 9, 17, 7, 195, 21, 128, 192, 9, 17, 0, 0, 0, 0, 6, 195, 72, 112, 128, 17, 7, 195, 60, 37, 0, 9, 17, 14, 4,
-			95, 15, 7, 15, 6, 39, 81, 39, 50, 109, 49, 0, 0, 13, 68, 77, 64, 82, 80, 89, 47, 6, 35, 51, 47, 0, 0, 0, 6, 195,
-			33, 166, 143, 17, 0, 7, 195, 84, 145, 128, 9, 17, 7, 195, 65, 33, 192, 9, 17, 0, 0, 0, 0, 7, 195, 4, 145, 128, 9, 17,
-			0, 0, 0, 5, 194, 48, 144, 72, 0, 7, 195, 97, 50, 64, 9, 17, 7, 195, 33, 34, 192, 9, 17, 7, 195, 29, 82, 64, 9, 17,
-			0, 7, 195, 60, 54, 0, 9, 17, 0, 0, 0, 0, 0, 0, 7, 194, 61, 48, 9, 17, 41, 0, 0, 17, 4, 95, 48, 77, 52, 71,
-			6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 16, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 57, 139, 50, 35, 0, 0, 6, 195, 65,
-			35, 198, 24, 0, 17, 4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 16, 4, 95, 48, 77, 50, 65, 6, 37,
-			55, 37, 57, 139, 50, 35, 0, 0, 17, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 137, 34, 72, 138, 0, 102, 16, 4, 95, 48, 77,
-			51, 65, 6, 37, 55, 37, 35, 51, 72, 138, 0, 0, 0, 15, 4, 95, 48, 77, 49, 107, 6, 37, 61, 35, 72, 122, 0, 103, 16, 4,
-			95, 48, 77, 49, 107, 6, 37, 61, 4, 122, 72, 122, 0, 102, 14, 4, 95, 48, 77, 49, 47, 6, 37, 89, 139, 78, 122, 0, 0, 13,
-			4, 95, 2, 18, 22, 71, 140, 16, 6, 109, 84, 0, 7, 66, 48, 160, 61, 13, 0, 0, 0, 0, 0, 0, 7, 195, 20, 20, 128, 9,
-			17, 0, 0, 0, 6, 194, 65, 32, 9, 17, 0, 0, 0, 0, 0, 7, 195, 65, 37, 0, 9, 17, 0, 0, 0, 0, 7, 195, 37, 22,
-			64, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 64, 64, 64, 17, 6, 195, 4, 16, 192,
-			17, 0, 7, 195, 60, 102, 0, 9, 17, 0, 0, 0, 7, 195, 96, 192, 64, 9, 17, 7, 195, 60, 101, 0, 9, 17, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 195, 60, 115, 0, 9, 17, 0, 8, 66, 72, 16, 51, 122, 0, 102, 0, 7, 195, 64, 66, 64, 9, 17,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 211, 192, 72, 6, 195, 80, 179, 192, 76, 6, 195, 36, 35, 64, 17, 0, 0, 0, 19,
-			4, 95, 3, 9, 18, 117, 6, 37, 51, 49, 139, 65, 83, 55, 109, 49, 89, 0, 0, 7, 195, 64, 179, 192, 9, 17, 0, 0, 0, 5,
-			194, 72, 32, 17, 7, 66, 56, 160, 67, 13, 0, 0, 0, 0, 6, 131, 95, 195, 186, 43, 0, 0, 7, 195, 17, 52, 128, 9, 17, 0,
-			0, 0, 0, 13, 4, 95, 19, 20, 11, 49, 140, 16, 6, 39, 88, 0, 0, 26, 3, 95, 194, 173, 48, 140, 6, 37, 84, 140, 36, 65,
-			36, 50, 122, 15, 117, 6, 44, 47, 6, 37, 117, 122, 0, 0, 12, 4, 95, 1, 3, 21, 6, 35, 49, 139, 47, 0, 0, 25, 3, 95,
-			194, 171, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 6, 131, 95, 195, 179, 43, 0, 15,
-			67, 52, 16, 216, 65, 6, 35, 117, 15, 6, 37, 49, 89, 0, 6, 195, 60, 213, 192, 17, 7, 195, 52, 21, 192, 9, 17, 0, 0, 0,
-			6, 194, 72, 48, 9, 17, 0, 6, 195, 72, 49, 0, 17, 0, 6, 131, 95, 195, 173, 43, 0, 0, 0, 13, 4, 95, 18, 14, 7, 140,
-			16, 6, 37, 68, 81, 0, 0, 6, 131, 95, 195, 169, 43, 0, 0, 5, 194, 73, 48, 17, 0, 7, 195, 104, 243, 192, 9, 17, 0, 0,
-			0, 8, 133, 196, 141, 5, 7, 1, 8, 0, 0, 6, 131, 95, 195, 161, 43, 0, 0, 6, 194, 72, 64, 9, 17, 0, 7, 195, 33, 64,
-			64, 9, 17, 0, 0, 0, 0, 0, 0, 6, 195, 73, 67, 0, 17, 0, 6, 194, 77, 32, 9, 17, 0, 7, 195, 77, 33, 0, 9, 17,
-			7, 195, 60, 97, 128, 9, 17, 0, 0, 0, 13, 67, 41, 1, 71, 57, 136, 15, 48, 6, 36, 81, 0, 24, 4, 95, 1, 3, 50, 72,
-			84, 6, 39, 89, 47, 140, 16, 139, 49, 138, 38, 6, 35, 49, 139, 47, 0, 0, 0, 0, 0, 8, 66, 72, 80, 51, 36, 0, 102, 0,
-			7, 195, 41, 2, 64, 9, 17, 7, 195, 20, 49, 12, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 3, 95, 194, 187,
-			88, 6, 35, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 7, 195, 73, 115, 192, 9, 17, 0,
-			6, 195, 8, 147, 1, 72, 0, 7, 2, 196, 135, 78, 136, 0, 0, 6, 195, 8, 147, 15, 72, 0, 6, 195, 68, 36, 128, 17, 0, 0,
-			0, 0, 0, 6, 195, 8, 147, 9, 72, 0, 10, 2, 195, 151, 48, 6, 40, 47, 122, 0, 0, 0, 7, 2, 196, 141, 76, 13, 0, 0,
-			20, 2, 197, 130, 55, 13, 15, 89, 122, 15, 117, 6, 44, 47, 6, 37, 117, 39, 65, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 6,
-			39, 72, 55, 39, 65, 122, 49, 0, 0, 12, 2, 194, 164, 84, 6, 35, 55, 40, 47, 122, 0, 0, 0, 7, 196, 36, 208, 84, 20, 76,
-			0, 0, 0, 7, 2, 196, 145, 77, 136, 0, 0, 18, 2, 194, 174, 51, 6, 36, 81, 37, 89, 47, 140, 35, 117, 138, 57, 122, 0, 0,
-			0, 5, 194, 77, 80, 72, 5, 194, 73, 112, 17, 0, 0, 0, 0, 14, 2, 194, 168, 48, 140, 6, 36, 81, 55, 122, 89, 0, 102, 15,
-			2, 194, 168, 48, 140, 6, 37, 57, 36, 81, 55, 122, 89, 0, 0, 19, 2, 194, 169, 6, 127, 47, 39, 51, 89, 49, 122, 15, 48, 140,
-			35, 84, 122, 0, 0, 12, 2, 194, 182, 76, 55, 6, 35, 50, 122, 49, 0, 0, 10, 2, 194, 183, 48, 6, 40, 47, 122, 0, 0, 6,
-			194, 72, 128, 9, 17, 0, 7, 195, 104, 16, 64, 9, 17, 6, 195, 4, 32, 192, 17, 11, 2, 194, 181, 65, 6, 37, 49, 140, 39, 0,
-			0, 0, 6, 195, 37, 49, 14, 17, 0, 13, 2, 194, 176, 89, 47, 6, 36, 48, 36, 50, 0, 104, 12, 2, 194, 176, 89, 47, 6, 40,
-			48, 122, 67, 0, 0, 7, 195, 64, 208, 64, 9, 17, 0, 0, 7, 195, 85, 35, 0, 9, 17, 16, 2, 195, 183, 48, 6, 39, 72, 36,
-			61, 4, 36, 50, 39, 0, 102, 17, 2, 195, 183, 48, 6, 39, 72, 37, 57, 36, 61, 4, 36, 50, 39, 0, 0, 5, 194, 73, 128, 17,
-			0, 0, 14, 4, 95, 3, 5, 4, 117, 6, 109, 72, 138, 55, 122, 0, 0, 0, 12, 2, 194, 184, 89, 36, 72, 6, 37, 55, 122, 0,
-			0, 17, 4, 95, 12, 9, 7, 55, 6, 37, 81, 122, 47, 4, 139, 51, 122, 0, 7, 2, 197, 161, 91, 13, 0, 0, 0, 0, 0, 7,
-			195, 5, 34, 128, 9, 17, 7, 195, 4, 34, 192, 9, 17, 0, 0, 0, 0, 6, 195, 12, 114, 64, 17, 0, 0, 0, 0, 7, 195, 85,
-			49, 0, 9, 17, 7, 195, 36, 51, 64, 9, 17, 7, 195, 4, 51, 64, 9, 17, 0, 0, 0, 0, 0, 7, 2, 197, 190, 90, 13, 0,
-			0, 7, 195, 84, 67, 0, 9, 17, 0, 0, 6, 195, 4, 36, 192, 17, 0, 0, 0, 0, 7, 195, 57, 4, 128, 24, 17, 6, 195, 84,
-			69, 0, 17, 6, 195, 24, 20, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 6, 194, 72, 176, 9,
-			17, 0, 0, 7, 195, 92, 22, 0, 9, 17, 0, 0, 12, 2, 203, 152, 71, 140, 6, 36, 84, 37, 89, 0, 0, 0, 0, 0, 6, 194,
-			85, 80, 9, 17, 0, 0, 7, 196, 56, 83, 65, 52, 76, 0, 0, 7, 195, 85, 84, 0, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 2, 95, 19, 89, 13, 0, 0, 0, 0, 0, 7, 195, 5, 33, 192, 9, 17, 7, 195, 4, 49, 128, 9, 17, 0, 0, 0,
-			0, 0, 0, 0, 6, 194, 72, 208, 9, 17, 0, 0, 7, 196, 36, 208, 77, 60, 76, 6, 195, 72, 214, 0, 17, 0, 7, 195, 72, 213,
-			0, 9, 17, 0, 6, 195, 56, 146, 133, 76, 6, 195, 4, 49, 141, 17, 0, 7, 195, 53, 50, 64, 9, 17, 0, 12, 2, 95, 34, 50,
-			6, 35, 84, 39, 72, 0, 102, 14, 2, 95, 34, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 0, 7, 195, 5, 51, 64, 9,
-			17, 14, 2, 95, 39, 6, 35, 48, 39, 89, 47, 140, 39, 83, 0, 0, 19, 2, 95, 38, 47, 6, 44, 81, 6, 39, 84, 122, 76, 49,
-			39, 15, 6, 37, 0, 0, 0, 11, 2, 95, 36, 72, 6, 39, 55, 122, 51, 0, 0, 0, 6, 195, 84, 130, 0, 17, 15, 2, 95, 42,
-			88, 84, 6, 36, 88, 72, 37, 117, 122, 0, 102, 15, 2, 95, 42, 88, 84, 57, 6, 36, 88, 72, 37, 117, 122, 0, 15, 4, 95, 3,
-			1, 16, 49, 6, 35, 48, 138, 47, 122, 55, 0, 0, 24, 2, 95, 41, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 88, 6, 35,
-			81, 140, 35, 72, 122, 0, 0, 5, 194, 80, 160, 24, 5, 194, 76, 192, 24, 6, 194, 72, 224, 9, 17, 23, 2, 95, 40, 6, 39, 47,
-			84, 39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 140, 35, 72, 122, 0, 0, 0, 7, 196, 36, 208, 74, 84, 76, 12, 2, 95, 46, 47,
-			6, 35, 76, 49, 122, 0, 104, 11, 2, 95, 46, 47, 6, 39, 76, 49, 122, 0, 0, 13, 2, 95, 45, 117, 6, 44, 47, 6, 37, 117,
-			122, 0, 11, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 0, 13, 2, 95, 44, 88, 6, 35, 48, 36, 47, 35, 0, 102, 11, 2, 95,
-			44, 88, 6, 35, 51, 36, 88, 0, 0, 7, 195, 53, 36, 192, 24, 17, 9, 2, 95, 51, 47, 140, 6, 37, 0, 0, 9, 2, 95, 50,
-			72, 84, 6, 35, 0, 0, 7, 195, 85, 129, 0, 9, 17, 11, 2, 95, 49, 57, 6, 36, 72, 122, 50, 0, 0, 10, 2, 95, 48, 50,
-			6, 40, 55, 122, 0, 0, 11, 2, 95, 55, 89, 6, 109, 72, 122, 65, 0, 0, 10, 2, 95, 54, 91, 6, 109, 89, 47, 0, 0, 9,
-			2, 95, 53, 48, 6, 109, 47, 0, 0, 12, 2, 95, 52, 76, 6, 109, 47, 138, 51, 138, 0, 0, 18, 2, 95, 59, 47, 6, 35, 76,
-			49, 122, 88, 4, 35, 16, 109, 88, 0, 103, 19, 2, 95, 59, 47, 6, 35, 76, 49, 122, 88, 4, 35, 48, 36, 47, 35, 0, 102, 17,
-			2, 95, 59, 47, 6, 39, 76, 49, 122, 88, 4, 35, 16, 109, 88, 0, 0, 0, 11, 2, 95, 57, 72, 6, 109, 84, 109, 47, 0, 0,
-			10, 2, 95, 56, 6, 39, 89, 122, 65, 0, 0, 7, 195, 73, 22, 64, 9, 17, 13, 2, 95, 63, 6, 40, 48, 37, 47, 50, 138, 49,
-			0, 0, 14, 2, 95, 62, 84, 6, 36, 76, 37, 15, 6, 39, 72, 0, 0, 13, 2, 95, 61, 57, 6, 36, 72, 50, 122, 49, 39, 0,
-			13, 2, 95, 61, 57, 6, 36, 72, 50, 122, 49, 39, 0, 0, 7, 195, 84, 148, 0, 9, 17, 14, 2, 95, 60, 65, 6, 35, 67, 37,
-			15, 6, 39, 72, 0, 0, 0, 0, 0, 8, 2, 95, 64, 36, 47, 0, 102, 19, 2, 95, 64, 47, 6, 44, 81, 6, 39, 84, 122, 76,
-			49, 39, 15, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 72, 32, 64, 17, 7, 195, 60, 112, 192, 9, 17, 7, 195,
-			36, 48, 192, 9, 17, 7, 195, 4, 48, 192, 9, 17, 0, 0, 0, 0, 7, 195, 88, 32, 64, 9, 17, 7, 195, 52, 64, 64, 9, 17,
-			0, 0, 0, 6, 195, 44, 241, 193, 8, 26, 4, 95, 226, 128, 154, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39,
-			72, 50, 138, 49, 0, 0, 7, 195, 60, 113, 192, 9, 17, 7, 195, 5, 49, 128, 9, 17, 7, 195, 4, 49, 192, 9, 17, 30, 4, 95,
-			226, 128, 153, 57, 6, 36, 72, 50, 39, 89, 47, 140, 6, 40, 49, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 26, 4,
-			95, 226, 128, 152, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 13, 4, 95, 4, 15, 20,
-			47, 6, 39, 76, 49, 122, 0, 0, 0, 27, 4, 95, 226, 128, 158, 88, 122, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39,
-			72, 50, 138, 49, 0, 102, 26, 4, 95, 226, 128, 158, 89, 48, 6, 40, 91, 47, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138,
-			49, 0, 0, 7, 195, 88, 33, 64, 9, 17, 7, 195, 52, 65, 64, 9, 17, 24, 2, 95, 91, 6, 39, 47, 84, 39, 51, 36, 50, 122,
-			15, 6, 40, 81, 55, 122, 89, 47, 122, 0, 102, 22, 2, 95, 91, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 6, 40, 81, 55, 122,
-			47, 122, 0, 27, 4, 95, 226, 128, 157, 88, 6, 35, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0,
-			0, 26, 4, 95, 226, 128, 156, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 15, 4,
-			95, 226, 128, 147, 109, 50, 15, 117, 6, 44, 47, 122, 0, 0, 0, 7, 195, 56, 162, 64, 9, 17, 10, 2, 95, 95, 117, 6, 44, 47,
-			122, 0, 0, 0, 25, 2, 95, 93, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 6, 40, 81, 55, 122, 89, 47, 122, 0, 102, 23,
-			2, 95, 93, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 6, 40, 81, 55, 122, 47, 122, 0, 0, 6, 195, 4, 49, 205, 17, 0,
-			7, 195, 36, 194, 64, 72, 8, 6, 195, 4, 194, 64, 8, 7, 195, 52, 66, 64, 9, 17, 6, 195, 24, 34, 64, 17, 0, 15, 4, 95,
-			226, 128, 148, 109, 65, 15, 117, 6, 44, 47, 122, 0, 0, 0, 12, 2, 95, 96, 81, 140, 6, 35, 84, 37, 89, 0, 0, 7, 195, 36,
-			67, 64, 9, 17, 7, 195, 20, 195, 64, 9, 17, 7, 195, 5, 51, 128, 9, 17, 0, 0, 0, 0, 6, 195, 8, 147, 192, 72, 7, 195,
-			4, 195, 64, 9, 17, 0, 7, 196, 56, 148, 193, 52, 76, 0, 0, 16, 4, 95, 7, 18, 22, 50, 6, 35, 81, 55, 122, 89, 122, 49,
-			0, 0, 7, 195, 36, 52, 192, 9, 17, 0, 0, 0, 0, 7, 195, 85, 52, 128, 9, 17, 7, 195, 20, 52, 192, 9, 17, 0, 0, 0,
-			6, 195, 56, 148, 201, 76, 0, 7, 195, 72, 21, 192, 9, 17, 7, 195, 4, 53, 192, 9, 17, 26, 4, 95, 226, 128, 185, 6, 39, 47,
-			84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 0, 0, 25, 2, 95, 123, 6, 39, 47, 84, 39,
-			51, 36, 50, 122, 15, 84, 6, 37, 47, 37, 76, 122, 89, 47, 122, 0, 14, 4, 95, 4, 9, 1, 6, 40, 65, 55, 122, 139, 47, 0,
-			0, 0, 0, 0, 0, 0, 26, 2, 95, 125, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 84, 6, 37, 47, 37, 76, 122, 89, 47,
-			122, 0, 0, 15, 2, 95, 124, 6, 40, 89, 48, 51, 122, 84, 50, 122, 0, 102, 13, 2, 95, 124, 6, 39, 49, 39, 65, 37, 117, 122,
-			0, 0, 0, 0, 0, 6, 194, 101, 80, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 36, 64, 128, 9, 17, 7, 195, 5,
-			48, 192, 9, 17, 0, 0, 0, 0, 7, 195, 57, 32, 64, 9, 17, 7, 195, 21, 48, 192, 9, 17, 0, 0, 0, 0, 7, 195, 13, 1,
-			64, 9, 17, 0, 0, 0, 0, 7, 195, 84, 65, 128, 9, 17, 7, 195, 57, 33, 64, 9, 17, 0, 0, 0, 0, 0, 0, 0, 6, 195,
-			56, 148, 213, 76, 0, 7, 195, 57, 34, 64, 9, 17, 0, 0, 0, 5, 194, 97, 144, 17, 0, 7, 195, 4, 67, 128, 9, 17, 0, 21,
-			5, 95, 49, 77, 65, 49, 57, 36, 72, 50, 122, 15, 107, 37, 61, 122, 72, 122, 0, 102, 0, 0, 0, 7, 195, 57, 35, 64, 9, 17,
-			6, 195, 25, 35, 64, 17, 0, 0, 0, 0, 7, 195, 37, 52, 192, 9, 17, 0, 0, 0, 0, 6, 195, 88, 36, 128, 17, 7, 195, 85,
-			52, 192, 9, 17, 7, 195, 57, 36, 64, 9, 17, 0, 0, 0, 0, 7, 195, 13, 5, 64, 9, 17, 0, 0, 0, 0, 7, 195, 57, 37,
-			64, 9, 17, 0, 0, 0, 0, 0, 0, 0, 16, 70, 12, 243, 148, 72, 243, 0, 117, 39, 50, 47, 51, 125, 55, 0, 0, 0, 7, 196,
-			56, 148, 205, 60, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 36, 64, 192, 9, 17, 0, 0, 0, 0, 15, 67, 64,
-			245, 24, 48, 6, 39, 47, 15, 6, 37, 49, 89, 0, 6, 195, 36, 208, 64, 76, 7, 195, 57, 32, 128, 9, 17, 0, 0, 0, 0, 6,
-			195, 9, 33, 128, 17, 7, 195, 5, 65, 128, 9, 17, 0, 0, 0, 0, 13, 67, 85, 65, 128, 40, 15, 47, 36, 15, 36, 83, 0, 7,
-			195, 57, 33, 128, 9, 17, 7, 195, 4, 193, 192, 9, 17, 0, 0, 0, 0, 7, 195, 64, 114, 64, 9, 17, 0, 0, 0, 0, 7, 195,
-			36, 194, 192, 9, 17, 0, 0, 0, 6, 195, 36, 208, 77, 76, 0, 6, 195, 76, 19, 64, 72, 7, 195, 28, 131, 192, 9, 17, 0, 0,
-			0, 0, 0, 0, 8, 3, 4, 197, 190, 75, 13, 0, 0, 0, 6, 195, 41, 36, 128, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 4, 68, 204, 17, 0, 0, 0, 0, 7, 195, 37, 70, 128, 9, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			196, 135, 0, 3, 78, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 145, 0, 3, 77, 0, 7, 6, 197, 161, 0, 3, 91, 0,
-			7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 3, 35, 0, 4, 2, 106, 3, 137, 0, 2, 114, 0, 7, 6, 98, 0, 3, 71,
-			0, 7, 6, 99, 0, 3, 117, 0, 7, 6, 100, 0, 3, 72, 0, 197, 190, 3, 75, 0, 122, 3, 118, 0, 7, 6, 101, 0, 120, 101,
-			5, 2, 8, 3, 2, 36, 37, 49, 89, 36, 0, 120, 101, 8, 3, 2, 36, 49, 89, 36, 0, 4, 1, 106, 3, 36, 0, 2, 106, 0,
-			3, 109, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 8, 3, 101, 0, 3, 107, 0, 7, 6,
-			105, 0, 110, 105, 1, 32, 46, 3, 2, 37, 50, 37, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0, 1, 17, 65, 29, 2, 32, 3,
-			57, 10, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3, 45, 0, 3, 55, 0, 106, 1, 118, 3, 55, 57,
-			0, 106, 2, 12, 3, 61, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 106, 3, 67, 0, 4, 2, 103, 3, 68,
-			0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 129, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117,
-			5, 2, 3, 49, 40, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 4, 3, 51, 0, 1, 17, 65, 2, 17, 65, 0, 2, 32, 0, 114,
-			0, 1, 25, 2, 25, 3, 52, 0, 1, 25, 2, 17, 65, 3, 140, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0,
-			7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7,
-			6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 206, 0, 177, 3, 6, 35, 55, 83,
-			122, 0, 172, 3, 6, 35, 55, 83, 122, 15, 47, 6, 39, 50, 39, 89, 0, 183, 3, 6, 36, 47, 122, 0, 174, 3, 6, 36, 47, 122,
-			15, 47, 6, 39, 50, 39, 89, 0, 181, 3, 6, 36, 48, 89, 138, 55, 39, 50, 0, 173, 3, 6, 36, 48, 89, 138, 55, 39, 50, 15,
-			47, 6, 39, 50, 39, 89, 0, 191, 3, 6, 39, 65, 138, 49, 140, 39, 50, 10, 0, 184, 3, 47, 101, 6, 36, 47, 122, 0, 186, 3,
-			49, 6, 35, 48, 122, 0, 190, 3, 49, 89, 6, 37, 0, 189, 3, 50, 6, 37, 0, 187, 3, 55, 6, 35, 65, 72, 122, 0, 185, 3,
-			57, 6, 39, 47, 122, 0, 175, 3, 57, 6, 39, 47, 122, 15, 47, 6, 39, 50, 39, 89, 0, 188, 3, 65, 6, 37, 0, 178, 3, 71,
-			6, 36, 47, 122, 0, 180, 3, 72, 6, 36, 55, 47, 122, 0, 179, 3, 81, 6, 35, 65, 122, 0, 182, 3, 88, 6, 36, 47, 122, 0,
-			7, 6, 207, 0, 137, 3, 6, 39, 65, 36, 81, 122, 0, 142, 3, 6, 39, 65, 36, 81, 122, 15, 47, 6, 39, 50, 39, 89, 0, 140,
-			3, 6, 39, 65, 138, 49, 140, 39, 50, 15, 47, 6, 39, 50, 39, 89, 0, 132, 3, 47, 6, 35, 40, 0, 128, 3, 48, 6, 37, 0,
-			136, 3, 48, 89, 6, 37, 0, 129, 3, 51, 6, 39, 0, 141, 3, 81, 44, 76, 49, 37, 15, 6, 37, 48, 89, 138, 55, 39, 50, 15,
-			47, 6, 39, 50, 39, 89, 0, 133, 3, 81, 44, 76, 49, 37, 23, 6, 37, 48, 89, 138, 55, 39, 50, 0, 130, 3, 81, 44, 76, 49,
-			39, 23, 88, 6, 35, 84, 44, 91, 50, 39, 23, 89, 6, 37, 81, 65, 122, 0, 134, 3, 83, 6, 37, 0, 131, 3, 89, 6, 37, 81,
-			65, 122, 0, 135, 3, 101, 6, 37, 0, 7, 6, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2,
-			32, 15, 0, 4, 195, 159, 3, 21, 100, 101, 0, 195, 164, 0, 195, 182, 0, 195, 188, 0, 45, 8, 32, 2, 32, 15, 3, 65, 37, 50,
-			40, 89, 0, 36, 3, 72, 6, 39, 55, 122, 51, 0, 195, 173, 3, 121, 0, 195, 169, 3, 123, 0, 195, 161, 3, 124, 0, 195, 179, 3,
-			125, 0, 195, 186, 3, 126, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts22 = FileInMemory_createWithData (7359, reinterpret_cast<const char *> (&espeakdata_dicts22_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/hbs_dict", 
+			84, 57, 6, 36, 89, 47, 6, 39, 0, 0, 0, 0, 0, 7, 196, 36, 208, 74, 84, 76, 0, 0, 17, 3, 95, 49, 49, 57, 6, 36,
+			72, 122, 50, 35, 109, 89, 47, 0, 102, 15, 3, 95, 49, 49, 57, 6, 36, 72, 122, 50, 130, 89, 47, 0, 0, 7, 195, 61, 67, 64,
+			46, 13, 7, 195, 5, 3, 64, 46, 13, 12, 3, 95, 49, 48, 72, 6, 109, 89, 109, 47, 0, 0, 16, 3, 95, 51, 67, 47, 51, 6,
+			37, 89, 47, 6, 35, 10, 0, 102, 16, 3, 95, 49, 51, 47, 140, 6, 37, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 51, 47,
+			140, 6, 37, 50, 130, 89, 47, 0, 0, 16, 3, 95, 49, 50, 72, 84, 6, 35, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 50,
+			72, 84, 6, 35, 50, 130, 89, 47, 0, 0, 16, 3, 95, 49, 53, 48, 6, 109, 47, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49,
+			53, 48, 6, 109, 47, 50, 130, 89, 47, 0, 16, 4, 95, 99, 121, 114, 78, 6, 37, 51, 37, 55, 37, 117, 35, 0, 0, 17, 3, 95,
+			49, 52, 76, 6, 109, 47, 44, 50, 35, 109, 89, 47, 0, 102, 15, 3, 95, 49, 52, 76, 6, 109, 47, 44, 50, 130, 89, 47, 0, 0,
+			18, 3, 95, 49, 55, 89, 6, 109, 72, 122, 65, 50, 35, 109, 89, 47, 0, 102, 16, 3, 95, 49, 55, 89, 6, 109, 72, 122, 65, 50,
+			130, 89, 47, 0, 0, 16, 3, 95, 49, 54, 91, 6, 109, 89, 50, 35, 109, 89, 47, 0, 102, 14, 3, 95, 49, 54, 91, 6, 109, 89,
+			50, 130, 89, 47, 0, 0, 0, 7, 195, 61, 52, 192, 46, 13, 6, 195, 12, 196, 128, 13, 17, 3, 95, 55, 88, 89, 6, 109, 72, 122,
+			65, 72, 109, 89, 109, 47, 0, 0, 18, 3, 95, 52, 67, 76, 36, 47, 51, 6, 37, 89, 47, 6, 39, 10, 0, 102, 0, 0, 0, 6,
+			195, 12, 68, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 97, 99, 117, 6, 35, 49, 139, 47, 0, 0, 0, 0, 0, 0,
+			13, 3, 95, 54, 67, 91, 6, 109, 89, 47, 6, 39, 0, 0, 0, 0, 6, 195, 8, 147, 9, 72, 0, 0, 11, 3, 95, 50, 102, 72,
+			84, 6, 109, 0, 102, 12, 3, 95, 50, 102, 72, 84, 6, 37, 57, 36, 0, 0, 0, 15, 3, 95, 50, 88, 72, 84, 6, 35, 72, 109,
+			89, 109, 47, 0, 0, 16, 5, 95, 48, 77, 65, 49, 107, 6, 37, 61, 35, 72, 36, 0, 103, 17, 5, 95, 48, 77, 65, 49, 107, 6,
+			37, 61, 4, 122, 72, 36, 0, 102, 15, 5, 95, 48, 77, 65, 49, 47, 6, 37, 89, 139, 78, 36, 0, 0, 0, 18, 5, 95, 48, 77,
+			65, 51, 65, 37, 55, 37, 57, 137, 34, 72, 36, 0, 102, 17, 5, 95, 48, 77, 65, 51, 65, 6, 37, 55, 37, 35, 51, 72, 36, 0,
+			0, 18, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 17, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55,
+			37, 57, 139, 50, 35, 0, 0, 0, 0, 0, 6, 195, 88, 112, 64, 13, 6, 195, 4, 16, 64, 13, 0, 0, 0, 0, 7, 195, 92, 208,
+			64, 46, 13, 0, 10, 3, 95, 63, 63, 88, 50, 35, 49, 0, 0, 0, 6, 194, 53, 32, 24, 13, 0, 7, 195, 65, 33, 128, 46, 13,
+			7, 195, 61, 65, 128, 46, 13, 16, 3, 95, 52, 88, 76, 6, 109, 47, 44, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 7, 195, 21,
+			1, 128, 46, 13, 0, 0, 0, 0, 7, 195, 72, 226, 192, 46, 13, 7, 195, 5, 2, 128, 46, 13, 14, 3, 95, 53, 88, 48, 6, 109,
+			72, 109, 89, 109, 47, 0, 0, 0, 13, 4, 95, 114, 110, 103, 140, 16, 6, 37, 68, 81, 0, 0, 0, 7, 195, 4, 130, 192, 46, 13,
+			0, 0, 0, 0, 6, 195, 65, 35, 128, 13, 6, 195, 60, 83, 64, 13, 7, 195, 56, 99, 192, 46, 13, 15, 3, 95, 54, 88, 91, 6,
+			109, 88, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 6, 195, 188, 81, 193, 8, 0, 0, 0, 6, 195, 69, 4, 128, 13, 0, 7,
+			196, 36, 208, 84, 20, 76, 0, 0, 0, 8, 195, 77, 68, 128, 46, 24, 13, 7, 195, 53, 4, 128, 46, 13, 7, 195, 52, 20, 64, 46,
+			13, 0, 0, 0, 6, 194, 57, 32, 46, 13, 0, 6, 195, 81, 165, 128, 24, 7, 195, 33, 37, 128, 46, 13, 16, 3, 95, 56, 88, 6,
+			39, 89, 122, 65, 72, 109, 89, 109, 47, 0, 0, 7, 195, 57, 34, 0, 46, 13, 0, 0, 0, 0, 0, 6, 195, 213, 67, 192, 76, 0,
+			0, 7, 195, 36, 211, 0, 46, 13, 16, 3, 95, 57, 88, 72, 6, 109, 84, 109, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0,
+			0, 11, 3, 95, 63, 65, 89, 55, 39, 84, 39, 0, 0, 0, 0, 0, 7, 195, 53, 84, 0, 13, 41, 0, 0, 0, 13, 4, 95, 115,
+			116, 107, 49, 140, 16, 6, 39, 88, 0, 0, 0, 0, 7, 195, 60, 33, 0, 46, 13, 7, 195, 21, 128, 192, 46, 13, 0, 0, 0, 0,
+			6, 195, 72, 112, 128, 13, 7, 195, 60, 37, 0, 46, 13, 0, 0, 0, 0, 7, 195, 84, 145, 128, 46, 13, 7, 195, 65, 33, 192, 46,
+			13, 6, 195, 12, 68, 151, 13, 0, 0, 7, 66, 19, 144, 75, 13, 0, 0, 0, 7, 195, 4, 145, 128, 46, 13, 0, 0, 0, 5, 194,
+			48, 144, 72, 0, 7, 195, 97, 50, 64, 46, 13, 7, 195, 33, 34, 192, 46, 13, 7, 195, 29, 82, 64, 46, 13, 0, 7, 195, 60, 54,
+			0, 46, 13, 0, 0, 0, 0, 0, 0, 7, 194, 61, 48, 46, 13, 41, 19, 4, 95, 99, 105, 114, 117, 6, 37, 51, 49, 139, 65, 83,
+			55, 109, 49, 89, 0, 0, 0, 17, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 16, 4, 95, 48, 77, 52,
+			71, 6, 37, 55, 37, 57, 139, 50, 35, 0, 0, 0, 17, 4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 57, 111, 50, 35, 0, 104, 16,
+			4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 57, 139, 50, 35, 0, 0, 17, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 137, 34, 72,
+			138, 0, 102, 16, 4, 95, 48, 77, 51, 65, 6, 37, 55, 37, 35, 51, 72, 138, 0, 0, 0, 15, 4, 95, 48, 77, 49, 107, 6, 37,
+			61, 35, 72, 122, 0, 103, 16, 4, 95, 48, 77, 49, 107, 6, 37, 61, 4, 122, 72, 122, 0, 102, 14, 4, 95, 48, 77, 49, 47, 6,
+			37, 89, 139, 78, 122, 0, 0, 7, 66, 48, 160, 61, 13, 0, 0, 0, 0, 0, 0, 7, 195, 20, 20, 128, 46, 13, 0, 0, 0, 6,
+			194, 65, 32, 46, 13, 0, 17, 4, 95, 108, 105, 103, 55, 6, 37, 81, 122, 47, 4, 139, 51, 122, 0, 0, 0, 0, 0, 7, 195, 65,
+			37, 0, 46, 13, 0, 0, 0, 0, 7, 195, 37, 22, 64, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 56, 148, 205, 60,
+			76, 0, 0, 0, 0, 0, 6, 65, 184, 78, 136, 0, 0, 0, 6, 195, 64, 64, 64, 13, 6, 195, 4, 16, 192, 13, 0, 7, 195, 60,
+			102, 0, 46, 13, 0, 0, 0, 7, 195, 96, 192, 64, 46, 13, 7, 195, 60, 101, 0, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			14, 4, 95, 99, 101, 100, 117, 6, 109, 72, 138, 55, 122, 0, 0, 7, 195, 60, 115, 0, 46, 13, 0, 8, 66, 72, 16, 51, 122, 0,
+			102, 0, 7, 195, 64, 66, 64, 46, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 211, 192, 72, 6, 195, 80, 179, 192, 76, 6,
+			195, 36, 35, 64, 13, 0, 15, 4, 95, 99, 97, 112, 49, 6, 35, 48, 138, 47, 122, 55, 0, 0, 0, 0, 7, 195, 64, 179, 192, 46,
+			13, 0, 0, 0, 5, 194, 72, 32, 13, 7, 66, 56, 160, 67, 13, 0, 0, 0, 0, 6, 131, 95, 195, 186, 43, 0, 0, 7, 195, 17,
+			52, 128, 46, 13, 0, 0, 0, 0, 6, 65, 188, 76, 13, 0, 0, 26, 3, 95, 194, 173, 48, 140, 6, 37, 84, 140, 36, 65, 36, 50,
+			122, 15, 117, 6, 44, 47, 6, 37, 117, 122, 0, 0, 0, 25, 3, 95, 194, 171, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6,
+			35, 84, 39, 72, 50, 138, 49, 0, 6, 131, 95, 195, 179, 43, 0, 6, 195, 60, 213, 192, 13, 7, 195, 52, 21, 192, 46, 13, 0, 0,
+			0, 6, 194, 72, 48, 46, 13, 0, 6, 195, 72, 49, 0, 13, 0, 6, 131, 95, 195, 173, 43, 0, 0, 0, 0, 6, 131, 95, 195, 169,
+			43, 0, 0, 5, 194, 73, 48, 13, 0, 7, 195, 104, 243, 192, 46, 13, 0, 0, 0, 0, 0, 6, 131, 95, 195, 161, 43, 0, 0, 6,
+			194, 72, 64, 46, 13, 0, 7, 195, 33, 64, 64, 46, 13, 0, 0, 0, 0, 0, 0, 6, 195, 73, 67, 0, 13, 0, 6, 194, 77, 32,
+			46, 13, 0, 7, 195, 77, 33, 0, 46, 13, 7, 195, 60, 97, 128, 46, 13, 0, 0, 0, 0, 0, 0, 0, 8, 66, 72, 80, 51, 36,
+			0, 102, 0, 7, 195, 41, 2, 64, 46, 13, 0, 0, 0, 5, 131, 239, 187, 191, 0, 6, 65, 192, 77, 136, 0, 0, 0, 0, 6, 195,
+			37, 49, 14, 13, 0, 0, 0, 0, 26, 3, 95, 194, 187, 88, 6, 35, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72,
+			50, 138, 49, 0, 0, 7, 195, 73, 115, 192, 46, 13, 0, 0, 0, 0, 6, 195, 68, 36, 128, 13, 0, 0, 0, 16, 4, 95, 103, 114,
+			118, 50, 6, 35, 81, 55, 122, 89, 122, 49, 0, 0, 0, 0, 10, 2, 195, 151, 48, 6, 40, 47, 122, 0, 0, 0, 0, 0, 6, 195,
+			44, 241, 193, 8, 6, 195, 57, 97, 1, 13, 0, 0, 0, 15, 67, 64, 245, 24, 48, 6, 39, 47, 15, 6, 37, 49, 89, 0, 0, 13,
+			2, 194, 167, 6, 39, 72, 55, 39, 65, 122, 49, 0, 0, 12, 2, 194, 164, 84, 6, 35, 55, 40, 47, 122, 0, 0, 0, 0, 0, 0,
+			0, 18, 2, 194, 174, 51, 6, 36, 81, 37, 89, 47, 140, 35, 117, 138, 57, 122, 0, 0, 0, 5, 194, 77, 80, 72, 5, 194, 73, 112,
+			13, 0, 0, 0, 0, 14, 2, 194, 168, 48, 140, 6, 36, 81, 55, 122, 89, 0, 102, 15, 2, 194, 168, 48, 140, 6, 37, 57, 36, 81,
+			55, 122, 89, 0, 0, 19, 2, 194, 169, 6, 127, 47, 39, 51, 89, 49, 122, 15, 48, 140, 35, 84, 122, 0, 0, 12, 2, 194, 182, 76,
+			55, 6, 35, 50, 122, 49, 0, 0, 10, 2, 194, 183, 48, 6, 40, 47, 122, 0, 0, 6, 194, 72, 128, 46, 13, 0, 7, 195, 104, 16,
+			64, 46, 13, 6, 195, 4, 32, 192, 13, 11, 2, 194, 181, 65, 6, 37, 49, 140, 39, 0, 0, 19, 65, 200, 55, 13, 15, 89, 122, 15,
+			117, 6, 44, 47, 6, 37, 117, 39, 65, 0, 0, 0, 13, 2, 194, 176, 89, 47, 6, 36, 48, 36, 50, 0, 104, 12, 2, 194, 176, 89,
+			47, 6, 40, 48, 122, 67, 0, 0, 7, 195, 64, 208, 64, 46, 13, 0, 0, 7, 195, 85, 35, 0, 46, 13, 16, 2, 195, 183, 48, 6,
+			39, 72, 36, 61, 4, 36, 50, 39, 0, 102, 17, 2, 195, 183, 48, 6, 39, 72, 37, 57, 36, 61, 4, 36, 50, 39, 0, 0, 5, 194,
+			73, 128, 13, 0, 0, 0, 0, 12, 2, 194, 184, 89, 36, 72, 6, 37, 55, 122, 0, 0, 0, 8, 3, 95, 209, 129, 89, 13, 0, 0,
+			0, 0, 7, 195, 5, 34, 128, 46, 13, 7, 195, 4, 34, 192, 46, 13, 0, 0, 0, 0, 6, 195, 12, 114, 64, 13, 0, 0, 0, 0,
+			7, 195, 85, 49, 0, 46, 13, 7, 195, 36, 51, 64, 46, 13, 7, 195, 4, 51, 64, 46, 13, 0, 0, 0, 0, 0, 0, 7, 195, 84,
+			67, 0, 46, 13, 0, 0, 6, 195, 4, 36, 192, 13, 0, 0, 0, 7, 196, 56, 148, 212, 20, 76, 0, 7, 195, 57, 4, 128, 24, 13,
+			6, 195, 84, 69, 0, 13, 6, 195, 24, 20, 64, 13, 0, 0, 0, 0, 8, 197, 56, 83, 65, 80, 80, 76, 0, 0, 0, 0, 0, 0,
+			0, 5, 194, 76, 144, 72, 6, 194, 72, 176, 46, 13, 0, 0, 7, 195, 92, 22, 0, 46, 13, 0, 0, 12, 2, 203, 152, 71, 140, 6,
+			36, 84, 37, 89, 0, 0, 0, 0, 0, 6, 194, 85, 80, 46, 13, 0, 0, 0, 0, 7, 195, 85, 84, 0, 46, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 4, 49, 205, 13, 7, 2, 209, 135, 76, 13, 0, 0, 7, 2, 209, 134, 117, 13, 0, 0, 7, 2,
+			209, 133, 101, 13, 0, 0, 7, 2, 209, 132, 83, 13, 0, 0, 7, 195, 5, 33, 192, 46, 13, 7, 195, 4, 49, 128, 46, 13, 6, 2,
+			209, 131, 40, 0, 0, 7, 2, 209, 130, 47, 13, 0, 0, 0, 7, 2, 209, 128, 51, 13, 0, 0, 7, 2, 209, 143, 57, 35, 0, 0,
+			7, 2, 209, 142, 57, 40, 0, 0, 6, 2, 209, 141, 36, 0, 0, 6, 194, 72, 208, 46, 13, 16, 2, 209, 140, 65, 6, 36, 49, 37,
+			15, 88, 4, 50, 35, 49, 0, 0, 9, 2, 209, 139, 57, 36, 34, 37, 0, 0, 6, 195, 72, 214, 0, 13, 17, 2, 209, 138, 47, 84,
+			52, 72, 6, 37, 15, 88, 50, 4, 35, 49, 0, 0, 7, 195, 72, 213, 0, 46, 13, 8, 2, 209, 137, 91, 78, 136, 0, 0, 7, 2,
+			209, 136, 91, 13, 0, 0, 7, 195, 53, 50, 64, 46, 13, 0, 12, 2, 95, 34, 50, 6, 35, 84, 39, 72, 0, 102, 14, 2, 95, 34,
+			50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 7, 2, 209, 149, 118, 13, 0, 0, 0, 7, 195, 5, 51, 64, 46, 13, 14, 2, 95,
+			39, 6, 35, 48, 39, 89, 47, 140, 39, 83, 0, 7, 2, 209, 147, 77, 136, 0, 0, 19, 2, 95, 38, 47, 6, 44, 81, 6, 39, 84,
+			122, 76, 49, 39, 15, 6, 37, 0, 7, 2, 209, 146, 77, 136, 0, 0, 7, 2, 209, 145, 57, 39, 0, 0, 11, 2, 95, 36, 72, 6,
+			39, 55, 122, 51, 0, 0, 7, 2, 209, 159, 75, 13, 0, 0, 6, 195, 84, 130, 0, 13, 15, 2, 95, 42, 88, 84, 6, 36, 88, 72,
+			37, 117, 122, 0, 102, 15, 2, 95, 42, 88, 84, 57, 6, 36, 88, 72, 37, 117, 122, 0, 0, 24, 2, 95, 41, 88, 6, 35, 47, 84,
+			39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 140, 35, 72, 122, 0, 0, 5, 194, 80, 160, 24, 5, 194, 76, 192, 24, 6, 194, 72, 224,
+			46, 13, 23, 2, 95, 40, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 140, 35, 72, 122, 0, 7, 2, 209, 156, 78,
+			136, 0, 0, 6, 195, 36, 208, 77, 76, 7, 2, 209, 155, 78, 136, 0, 0, 12, 2, 95, 46, 47, 6, 35, 76, 49, 122, 0, 104, 11,
+			2, 95, 46, 47, 6, 39, 76, 49, 122, 0, 7, 2, 209, 154, 67, 13, 0, 0, 13, 2, 95, 45, 117, 6, 44, 47, 6, 37, 117, 122,
+			0, 11, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 7, 2, 209, 153, 61, 13, 0, 0, 13, 2, 95, 44, 88, 6, 35, 48, 36, 47,
+			35, 0, 102, 11, 2, 95, 44, 88, 6, 35, 51, 36, 88, 0, 7, 2, 209, 152, 57, 136, 0, 0, 7, 195, 53, 36, 192, 24, 13, 9,
+			2, 95, 51, 47, 140, 6, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 7, 195, 85, 129, 0, 46, 13, 11, 2, 95, 49,
+			57, 6, 36, 72, 122, 50, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 122, 0, 0, 8, 197, 56, 83, 65, 52, 240, 76, 11, 2, 95,
+			55, 89, 6, 109, 72, 122, 65, 0, 0, 10, 2, 95, 54, 91, 6, 109, 89, 47, 0, 0, 9, 2, 95, 53, 48, 6, 109, 47, 0, 0,
+			12, 2, 95, 52, 76, 6, 109, 47, 138, 51, 138, 0, 0, 6, 195, 56, 83, 65, 76, 18, 2, 95, 59, 47, 6, 35, 76, 49, 122, 88,
+			4, 35, 16, 109, 88, 0, 103, 19, 2, 95, 59, 47, 6, 35, 76, 49, 122, 88, 4, 35, 48, 36, 47, 35, 0, 102, 17, 2, 95, 59,
+			47, 6, 39, 76, 49, 122, 88, 4, 35, 16, 109, 88, 0, 7, 2, 208, 183, 88, 13, 0, 0, 7, 2, 208, 182, 90, 13, 0, 0, 11,
+			2, 95, 57, 72, 6, 109, 84, 109, 47, 0, 6, 2, 208, 181, 109, 0, 0, 10, 2, 95, 56, 6, 39, 89, 122, 65, 0, 7, 2, 208,
+			180, 72, 13, 0, 0, 7, 195, 73, 22, 64, 46, 13, 13, 2, 95, 63, 6, 40, 48, 37, 47, 50, 138, 49, 0, 7, 2, 208, 179, 81,
+			13, 0, 0, 14, 2, 95, 62, 84, 6, 36, 76, 37, 15, 6, 39, 72, 0, 7, 2, 208, 178, 84, 13, 0, 0, 13, 2, 95, 61, 57,
+			6, 36, 72, 50, 122, 49, 39, 0, 13, 2, 95, 61, 57, 6, 36, 72, 50, 122, 49, 39, 0, 7, 2, 208, 177, 71, 13, 0, 0, 7,
+			195, 84, 148, 0, 46, 13, 14, 2, 95, 60, 65, 6, 35, 67, 37, 15, 6, 39, 72, 0, 6, 2, 208, 176, 35, 0, 0, 7, 2, 208,
+			191, 48, 13, 0, 0, 6, 2, 208, 190, 39, 0, 0, 7, 2, 208, 189, 50, 13, 0, 0, 8, 2, 95, 64, 36, 47, 0, 102, 19, 2,
+			95, 64, 47, 6, 44, 81, 6, 39, 84, 122, 76, 49, 39, 15, 6, 35, 0, 7, 2, 208, 188, 65, 13, 0, 0, 7, 2, 208, 187, 55,
+			13, 0, 0, 7, 2, 208, 186, 49, 13, 0, 0, 15, 2, 208, 185, 49, 34, 4, 35, 47, 49, 39, 15, 6, 37, 0, 0, 6, 2, 208,
+			184, 37, 0, 0, 0, 0, 0, 0, 6, 195, 72, 32, 64, 13, 7, 195, 60, 112, 192, 46, 13, 7, 195, 36, 48, 192, 46, 13, 7, 195,
+			4, 48, 192, 46, 13, 0, 0, 6, 65, 212, 91, 13, 0, 0, 0, 7, 195, 88, 32, 64, 46, 13, 7, 195, 52, 64, 64, 46, 13, 0,
+			0, 0, 26, 4, 95, 226, 128, 154, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 7,
+			195, 60, 113, 192, 46, 13, 7, 195, 5, 49, 128, 46, 13, 7, 195, 4, 49, 192, 46, 13, 30, 4, 95, 226, 128, 153, 57, 6, 36, 72,
+			50, 39, 89, 47, 140, 6, 40, 49, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 26, 4, 95, 226, 128, 152, 6, 39, 47,
+			84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 27, 4, 95, 226, 128, 158, 88, 122, 47, 84, 39,
+			51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 102, 26, 4, 95, 226, 128, 158, 89, 48, 6, 40, 91, 47, 36, 50,
+			37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 7, 195, 88, 33, 64, 46, 13, 7, 195, 52, 65, 64, 46, 13, 24, 2, 95,
+			91, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 6, 40, 81, 55, 122, 89, 47, 122, 0, 102, 22, 2, 95, 91, 6, 39, 47, 84, 39,
+			51, 36, 50, 122, 15, 6, 40, 81, 55, 122, 47, 122, 0, 27, 4, 95, 226, 128, 157, 88, 6, 35, 47, 84, 39, 51, 36, 50, 37, 15,
+			50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 26, 4, 95, 226, 128, 156, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35,
+			84, 39, 72, 50, 138, 49, 0, 0, 15, 4, 95, 226, 128, 147, 109, 50, 15, 117, 6, 44, 47, 122, 0, 0, 0, 7, 195, 56, 162, 64,
+			46, 13, 10, 2, 95, 95, 117, 6, 44, 47, 122, 0, 0, 0, 25, 2, 95, 93, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 6,
+			40, 81, 55, 122, 89, 47, 122, 0, 102, 23, 2, 95, 93, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 6, 40, 81, 55, 122, 47,
+			122, 0, 0, 0, 7, 195, 36, 194, 64, 72, 8, 6, 195, 4, 194, 64, 8, 7, 195, 52, 66, 64, 46, 13, 6, 195, 24, 34, 64, 13,
+			0, 15, 4, 95, 226, 128, 148, 109, 65, 15, 117, 6, 44, 47, 122, 0, 0, 14, 3, 95, 97, 114, 6, 137, 34, 35, 48, 89, 49, 39,
+			0, 0, 12, 2, 95, 96, 81, 140, 6, 35, 84, 37, 89, 0, 0, 7, 195, 36, 67, 64, 46, 13, 7, 195, 20, 195, 64, 46, 13, 7,
+			195, 5, 51, 128, 46, 13, 0, 0, 0, 0, 6, 195, 8, 147, 192, 72, 7, 195, 4, 195, 64, 46, 13, 0, 0, 0, 0, 7, 195, 36,
+			52, 192, 46, 13, 0, 0, 0, 0, 7, 195, 85, 52, 128, 46, 13, 7, 195, 20, 52, 192, 46, 13, 7, 2, 95, 115, 89, 13, 0, 0,
+			0, 15, 4, 95, 104, 97, 99, 49, 84, 6, 35, 76, 138, 117, 122, 0, 0, 0, 7, 195, 72, 21, 192, 46, 13, 7, 195, 4, 53, 192,
+			46, 13, 26, 4, 95, 226, 128, 185, 6, 39, 47, 84, 39, 51, 36, 50, 37, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0,
+			0, 0, 25, 2, 95, 123, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 84, 6, 37, 47, 37, 76, 122, 89, 47, 122, 0, 0, 0, 0,
+			0, 0, 0, 26, 2, 95, 125, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 84, 6, 37, 47, 37, 76, 122, 89, 47, 122, 0, 0,
+			15, 2, 95, 124, 6, 40, 89, 48, 51, 122, 84, 50, 122, 0, 102, 13, 2, 95, 124, 6, 39, 49, 39, 65, 37, 117, 122, 0, 0, 0,
+			0, 0, 6, 194, 101, 80, 46, 13, 0, 0, 0, 0, 0, 0, 7, 196, 56, 148, 193, 52, 76, 0, 0, 0, 7, 195, 36, 64, 128, 46,
+			13, 7, 195, 5, 48, 192, 46, 13, 0, 0, 0, 0, 7, 195, 57, 32, 64, 46, 13, 7, 195, 21, 48, 192, 46, 13, 0, 0, 0, 0,
+			7, 195, 13, 1, 64, 46, 13, 0, 0, 0, 0, 7, 195, 84, 65, 128, 46, 13, 7, 195, 57, 33, 64, 46, 13, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 195, 57, 34, 64, 46, 13, 0, 0, 0, 5, 194, 97, 144, 13, 0, 7, 195, 4, 67, 128, 46, 13, 0, 21, 5, 95,
+			49, 77, 65, 49, 57, 36, 72, 50, 122, 15, 107, 37, 61, 122, 72, 122, 0, 102, 0, 0, 0, 7, 195, 57, 35, 64, 46, 13, 6, 195,
+			25, 35, 64, 13, 0, 0, 0, 0, 6, 195, 56, 148, 201, 76, 7, 195, 37, 52, 192, 46, 13, 0, 0, 0, 0, 6, 195, 88, 36, 128,
+			13, 7, 195, 85, 52, 192, 46, 13, 7, 195, 57, 36, 64, 46, 13, 0, 0, 0, 0, 7, 195, 13, 5, 64, 46, 13, 0, 0, 0, 0,
+			7, 195, 57, 37, 64, 46, 13, 0, 0, 0, 0, 0, 0, 0, 16, 70, 12, 243, 148, 72, 243, 0, 117, 39, 50, 47, 51, 125, 55, 0,
+			0, 0, 0, 0, 0, 0, 13, 67, 13, 68, 140, 117, 39, 50, 47, 51, 125, 55, 0, 6, 195, 13, 68, 140, 13, 0, 0, 0, 0, 0,
+			0, 0, 7, 195, 36, 64, 192, 46, 13, 0, 0, 0, 0, 6, 195, 36, 208, 64, 76, 7, 195, 57, 32, 128, 46, 13, 0, 0, 0, 0,
+			6, 195, 9, 33, 128, 13, 7, 195, 5, 65, 128, 46, 13, 0, 0, 0, 0, 13, 67, 85, 65, 128, 40, 15, 47, 36, 15, 36, 83, 0,
+			7, 195, 57, 33, 128, 46, 13, 7, 195, 4, 193, 192, 46, 13, 0, 0, 0, 0, 7, 195, 64, 114, 64, 46, 13, 0, 0, 0, 0, 7,
+			195, 36, 194, 192, 46, 13, 0, 6, 65, 228, 90, 13, 0, 0, 0, 0, 6, 195, 76, 19, 64, 72, 7, 195, 28, 131, 192, 46, 13, 0,
+			15, 67, 16, 240, 216, 72, 6, 39, 117, 15, 6, 37, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 41, 36, 128, 13, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 37, 70, 128, 46, 13, 0, 16, 6, 95, 114, 111, 109, 97, 110,
+			140, 6, 37, 65, 89, 49, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 52, 16, 216, 65, 6, 35, 117, 15, 6, 37, 49, 89,
+			0, 6, 195, 4, 68, 204, 13, 0, 6, 196, 135, 0, 3, 78, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 145, 0, 3, 77,
+			0, 7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 3, 35, 0, 4, 2, 106, 3, 137, 0,
+			2, 114, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 117, 0, 7, 6, 100, 0, 3, 72, 0, 197, 190, 3, 75, 0, 197,
+			190, 8, 2, 32, 3, 75, 13, 0, 122, 3, 118, 0, 122, 8, 2, 32, 3, 118, 13, 0, 7, 6, 101, 0, 120, 101, 5, 2, 8, 3,
+			2, 36, 37, 49, 89, 36, 0, 120, 101, 8, 3, 2, 36, 49, 89, 36, 0, 4, 1, 106, 3, 36, 0, 2, 106, 0, 3, 109, 0, 7,
+			6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 8, 3, 101, 0, 3, 107, 0, 7, 6, 105, 0, 110, 105,
+			1, 32, 46, 3, 2, 37, 50, 37, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0, 1, 17, 65, 29, 2, 32, 3, 57, 10, 0, 7,
+			6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3, 45, 0, 3, 55, 0, 106, 1, 118, 3, 55, 57, 0, 106, 2, 12,
+			3, 61, 0, 106, 8, 2, 32, 3, 61, 13, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 106, 3, 67, 0, 106,
+			8, 2, 32, 3, 67, 13, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 129, 0, 7, 6, 112,
+			0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 5, 2, 3, 49, 40, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 4, 3, 51,
+			0, 1, 17, 65, 2, 17, 65, 0, 2, 32, 0, 114, 0, 1, 25, 2, 25, 3, 52, 0, 1, 25, 2, 17, 65, 3, 140, 0, 7, 6,
+			115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0,
+			3, 84, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3,
+			88, 0, 7, 6, 206, 0, 177, 3, 6, 35, 55, 83, 122, 0, 172, 3, 6, 35, 55, 83, 122, 15, 47, 6, 39, 50, 39, 89, 0, 183,
+			3, 6, 36, 47, 122, 0, 174, 3, 6, 36, 47, 122, 15, 47, 6, 39, 50, 39, 89, 0, 181, 3, 6, 36, 48, 89, 138, 55, 39, 50,
+			0, 173, 3, 6, 36, 48, 89, 138, 55, 39, 50, 15, 47, 6, 39, 50, 39, 89, 0, 191, 3, 6, 39, 65, 138, 49, 140, 39, 50, 10,
+			0, 184, 3, 47, 101, 6, 36, 47, 122, 0, 186, 3, 49, 6, 35, 48, 122, 0, 190, 3, 49, 89, 6, 37, 0, 189, 3, 50, 6, 37,
+			0, 187, 3, 55, 6, 35, 65, 72, 122, 0, 185, 3, 57, 6, 39, 47, 122, 0, 175, 3, 57, 6, 39, 47, 122, 15, 47, 6, 39, 50,
+			39, 89, 0, 188, 3, 65, 6, 37, 0, 178, 3, 71, 6, 36, 47, 122, 0, 180, 3, 72, 6, 36, 55, 47, 122, 0, 179, 3, 81, 6,
+			35, 65, 122, 0, 182, 3, 88, 6, 36, 47, 122, 0, 7, 6, 207, 0, 137, 3, 6, 39, 65, 36, 81, 122, 0, 142, 3, 6, 39, 65,
+			36, 81, 122, 15, 47, 6, 39, 50, 39, 89, 0, 140, 3, 6, 39, 65, 138, 49, 140, 39, 50, 15, 47, 6, 39, 50, 39, 89, 0, 132,
+			3, 47, 6, 35, 40, 0, 128, 3, 48, 6, 37, 0, 136, 3, 48, 89, 6, 37, 0, 129, 3, 51, 6, 39, 0, 141, 3, 81, 44, 76,
+			49, 37, 15, 6, 37, 48, 89, 138, 55, 39, 50, 15, 47, 6, 39, 50, 39, 89, 0, 133, 3, 81, 44, 76, 49, 37, 23, 6, 37, 48,
+			89, 138, 55, 39, 50, 0, 130, 3, 81, 44, 76, 49, 39, 23, 88, 6, 35, 84, 44, 91, 50, 39, 23, 89, 6, 37, 81, 65, 122, 0,
+			134, 3, 83, 6, 37, 0, 131, 3, 89, 6, 37, 81, 65, 122, 0, 135, 3, 101, 6, 37, 0, 7, 6, 0, 4, 45, 1, 32, 17, 65,
+			2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 4, 195, 159, 3, 21, 100, 101, 0, 195, 164, 0, 195, 182, 0, 195,
+			188, 0, 45, 8, 32, 2, 32, 15, 3, 65, 37, 50, 40, 89, 0, 36, 3, 72, 6, 39, 55, 122, 51, 0, 195, 173, 3, 121, 0, 195,
+			169, 3, 123, 0, 195, 161, 3, 124, 0, 195, 179, 3, 125, 0, 195, 186, 3, 126, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts26 = FileInMemory_createWithData (7731, reinterpret_cast<const char *> (&espeakdata_dicts26_data), 
+			U"espeak-1.48.04-source/espeak-data/hbs_dict", 
 			U"hbs");
-		Collection_addItem (me.peek(), espeakdata_dicts22.transfer());
+		my addItem_move (espeakdata_dicts26.move());
 
-		static unsigned char espeakdata_dicts23_data[5724] = {
-			0, 4, 0, 0, 152, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 134, 224, 164, 149, 224, 165, 128, 72, 0, 15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 165, 139, 72, 0, 0, 12, 137, 224,
-			164, 176, 224, 164, 185, 224, 165, 128, 72, 9, 134, 224, 164, 175, 224, 165, 135, 72, 9, 134, 224, 164, 175, 224, 165, 135, 72, 0, 0, 0,
-			15, 140, 224, 164, 137, 224, 164, 168, 224, 164, 149, 224, 165, 128, 72, 15, 140, 224, 164, 137, 224, 164, 184, 224, 164, 149, 224, 165, 128, 72,
-			15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 165, 128, 72, 0, 9, 134, 224, 164, 149, 224, 165, 135, 72, 9, 134, 224, 164, 181,
-			224, 165, 135, 72, 0, 0, 0, 12, 137, 224, 164, 176, 224, 164, 185, 224, 165, 135, 72, 0, 9, 134, 224, 164, 149, 224, 165, 139, 72, 9,
-			134, 224, 164, 181, 224, 165, 139, 72, 9, 134, 224, 164, 181, 224, 165, 139, 72, 0, 0, 15, 140, 224, 164, 137, 224, 164, 168, 224, 164, 149,
-			224, 165, 135, 72, 15, 140, 224, 164, 137, 224, 164, 184, 224, 164, 149, 224, 165, 135, 72, 15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149,
-			224, 165, 135, 72, 15, 140, 224, 164, 174, 224, 165, 129, 224, 164, 157, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 134, 224, 164, 185, 224, 165, 136, 72, 0, 0, 0, 9, 134, 224, 164, 185, 224, 165, 139, 72, 0, 0, 0, 0, 0, 0, 12, 137, 224,
-			164, 174, 224, 165, 135, 224, 164, 130, 72, 0, 0, 0, 15, 140, 224, 164, 185, 224, 164, 174, 224, 165, 135, 224, 164, 130, 72, 0, 0, 0,
-			0, 0, 0, 21, 146, 224, 164, 137, 224, 164, 168, 224, 165, 141, 224, 164, 185, 224, 165, 135, 224, 164, 130, 72, 21, 146, 224, 164, 135, 224,
-			164, 168, 224, 165, 141, 224, 164, 185, 224, 165, 135, 224, 164, 130, 72, 0, 0, 0, 15, 140, 224, 164, 164, 224, 165, 129, 224, 164, 157, 224,
-			165, 135, 72, 24, 149, 224, 164, 164, 224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 165, 135, 224, 164, 130, 72, 0, 0, 12,
-			137, 224, 164, 174, 224, 164, 151, 224, 164, 176, 8, 0, 11, 6, 224, 164, 151, 224, 164, 188, 100, 13, 0, 0, 9, 134, 224, 164, 181, 224,
-			164, 185, 72, 0, 0, 0, 11, 6, 224, 164, 149, 224, 164, 188, 104, 13, 0, 0, 0, 9, 134, 224, 164, 149, 224, 164, 190, 72, 0, 0,
-			0, 0, 0, 0, 15, 140, 224, 164, 137, 224, 164, 168, 224, 164, 149, 224, 164, 190, 72, 15, 140, 224, 164, 137, 224, 164, 184, 224, 164, 149,
-			224, 164, 190, 72, 15, 140, 224, 164, 135, 224, 164, 168, 224, 164, 149, 224, 164, 190, 72, 15, 140, 224, 164, 135, 224, 164, 184, 224, 164, 149,
-			224, 164, 190, 72, 0, 0, 0, 0, 11, 6, 224, 164, 171, 224, 164, 188, 83, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 140, 224,
-			164, 149, 224, 165, 141, 224, 164, 175, 224, 164, 190, 72, 8, 0, 12, 137, 224, 164, 176, 224, 164, 185, 224, 164, 190, 72, 0, 17, 4, 95,
-			4, 16, 20, 10, 72, 13, 89, 13, 65, 55, 6, 119, 10, 0, 0, 0, 15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 164, 190,
-			72, 0, 0, 0, 0, 0, 0, 31, 21, 224, 164, 149, 224, 165, 141, 224, 164, 176, 224, 164, 191, 224, 164, 149, 224, 165, 135, 224, 164, 159,
-			49, 34, 113, 49, 6, 116, 47, 0, 0, 0, 0, 9, 134, 224, 164, 175, 224, 164, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 11, 6, 224, 164, 161, 224, 164, 188, 70, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 9, 134, 224, 164, 185, 224, 164, 174, 72, 0, 0, 0, 12, 137, 224, 164, 164, 224, 165, 129, 224, 164, 174, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			14, 3, 95, 51, 57, 122, 50, 47, 118, 55, 6, 113, 89, 0, 12, 3, 95, 50, 49, 113, 49, 12, 6, 113, 89, 0, 0, 12, 3, 95,
-			51, 56, 35, 34, 47, 6, 113, 89, 0, 10, 3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11, 3, 95, 50, 51, 47, 6, 114, 113, 89,
-			0, 0, 11, 3, 95, 50, 50, 71, 6, 118, 113, 89, 0, 0, 13, 3, 95, 50, 53, 48, 13, 80, 12, 6, 113, 89, 0, 0, 12, 3,
-			95, 50, 52, 80, 6, 120, 71, 113, 89, 0, 0, 14, 3, 95, 50, 55, 89, 13, 47, 12, 6, 118, 113, 89, 0, 0, 14, 3, 95, 50,
-			54, 144, 13, 71, 71, 6, 112, 34, 89, 0, 0, 14, 3, 95, 51, 49, 113, 49, 13, 47, 12, 6, 113, 89, 0, 0, 10, 3, 95, 51,
-			48, 47, 6, 112, 89, 0, 0, 12, 3, 95, 51, 51, 47, 127, 47, 6, 113, 89, 0, 0, 13, 3, 95, 51, 50, 71, 35, 47, 12, 6,
-			113, 89, 0, 0, 9, 134, 224, 164, 165, 224, 165, 128, 72, 12, 3, 95, 51, 53, 48, 127, 47, 6, 113, 89, 0, 0, 12, 3, 95, 51,
-			52, 80, 130, 47, 6, 113, 89, 0, 0, 12, 3, 95, 51, 55, 89, 127, 47, 6, 113, 89, 0, 0, 13, 3, 95, 51, 54, 144, 35, 87,
-			6, 47, 113, 89, 0, 0, 0, 9, 134, 224, 164, 165, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 14, 3, 95, 55, 57, 4, 122, 67, 113, 118, 89, 6, 112, 0, 12, 3, 95, 54, 49, 6, 113, 49, 89, 13, 142, 0, 0, 9, 3,
-			224, 165, 140, 148, 135, 0, 103, 8, 3, 224, 165, 140, 148, 120, 0, 16, 3, 95, 55, 56, 35, 138, 107, 35, 47, 12, 6, 109, 34, 12,
-			0, 10, 3, 95, 54, 48, 89, 6, 118, 142, 0, 0, 9, 3, 95, 48, 67, 89, 6, 120, 0, 13, 3, 95, 54, 51, 47, 6, 113, 34,
-			89, 13, 142, 0, 0, 12, 3, 95, 54, 50, 71, 6, 118, 89, 13, 142, 0, 0, 8, 3, 224, 165, 137, 18, 121, 0, 12, 3, 95, 54,
-			53, 48, 134, 50, 89, 13, 142, 0, 0, 9, 3, 224, 165, 136, 148, 134, 0, 102, 8, 3, 224, 165, 136, 148, 115, 0, 12, 3, 95, 54,
-			52, 80, 6, 130, 89, 13, 142, 0, 0, 8, 3, 224, 165, 139, 148, 119, 0, 13, 3, 95, 54, 55, 89, 6, 109, 34, 89, 13, 142, 0,
-			0, 8, 3, 224, 165, 138, 18, 39, 0, 14, 3, 95, 54, 54, 144, 6, 113, 57, 118, 89, 13, 142, 0, 0, 8, 3, 224, 165, 133, 18,
-			116, 0, 15, 3, 95, 55, 49, 113, 146, 35, 47, 12, 6, 109, 34, 12, 0, 0, 9, 3, 224, 165, 132, 18, 34, 113, 0, 14, 3, 95,
-			55, 48, 89, 35, 47, 12, 6, 109, 34, 12, 0, 0, 8, 3, 224, 165, 135, 148, 114, 0, 16, 3, 95, 55, 51, 47, 113, 107, 35, 47,
-			12, 6, 109, 34, 12, 0, 0, 8, 3, 224, 165, 134, 18, 36, 0, 16, 3, 95, 55, 50, 71, 13, 107, 35, 47, 12, 6, 109, 34, 12,
-			0, 0, 8, 3, 224, 165, 129, 18, 122, 0, 17, 3, 95, 55, 53, 48, 35, 144, 4, 35, 47, 12, 6, 109, 34, 12, 0, 0, 8, 3,
-			224, 165, 128, 148, 112, 0, 16, 3, 95, 55, 52, 80, 120, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 9, 3, 224, 165, 131, 18, 34,
-			113, 0, 18, 3, 95, 55, 55, 89, 13, 47, 13, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 8, 3, 224, 165, 130, 148, 123, 0, 16,
-			3, 95, 55, 54, 144, 113, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 12, 3, 95, 49, 57, 122, 50, 50, 6, 113, 89, 0, 0, 13,
-			3, 95, 49, 56, 109, 142, 12, 6, 118, 34, 111, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 57, 122, 50, 47, 6, 113, 89,
-			0, 12, 3, 95, 49, 49, 81, 57, 6, 118, 34, 111, 0, 0, 13, 3, 95, 50, 56, 35, 138, 12, 6, 118, 113, 89, 0, 10, 3, 95,
-			49, 48, 72, 6, 109, 89, 0, 0, 11, 3, 95, 49, 51, 47, 6, 115, 34, 111, 0, 0, 11, 3, 95, 49, 50, 71, 6, 118, 34, 111,
-			0, 0, 13, 3, 95, 49, 53, 48, 6, 109, 50, 72, 34, 111, 0, 0, 11, 3, 95, 49, 52, 144, 6, 120, 72, 111, 0, 0, 13, 3,
-			95, 49, 55, 89, 6, 109, 47, 12, 34, 111, 0, 0, 11, 3, 95, 49, 54, 89, 6, 119, 55, 111, 0, 0, 8, 3, 224, 164, 165, 138,
-			13, 0, 0, 8, 3, 224, 164, 164, 47, 13, 0, 0, 9, 134, 224, 164, 165, 224, 164, 190, 72, 8, 3, 224, 164, 167, 139, 13, 0, 0,
-			8, 3, 224, 164, 166, 72, 13, 0, 0, 8, 3, 224, 164, 161, 141, 13, 0, 0, 8, 3, 224, 164, 160, 142, 13, 0, 0, 8, 3, 224,
-			164, 163, 66, 13, 0, 0, 8, 3, 224, 164, 162, 143, 13, 0, 0, 8, 3, 224, 164, 157, 145, 13, 0, 12, 3, 95, 52, 57, 6, 122,
-			67, 80, 118, 89, 0, 0, 11, 3, 224, 165, 164, 72, 109, 66, 141, 109, 0, 8, 3, 224, 164, 156, 79, 13, 0, 14, 3, 95, 52, 56,
-			35, 34, 47, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 164, 159, 140, 13, 0, 0, 8, 3, 224, 164, 158, 67, 13, 0, 0, 8, 3,
-			224, 164, 153, 68, 13, 0, 0, 8, 3, 224, 164, 152, 147, 13, 0, 0, 9, 3, 224, 165, 163, 148, 45, 12, 0, 8, 3, 224, 164, 155,
-			144, 13, 0, 0, 8, 3, 224, 165, 162, 18, 45, 0, 8, 3, 224, 164, 154, 80, 13, 0, 0, 9, 3, 224, 165, 157, 107, 34, 13, 0,
-			8, 3, 224, 164, 149, 49, 13, 0, 12, 3, 95, 53, 57, 122, 50, 89, 6, 109, 138, 0, 14, 3, 95, 52, 49, 113, 49, 47, 118, 55,
-			6, 113, 89, 0, 0, 8, 3, 224, 165, 156, 44, 13, 0, 14, 3, 95, 53, 56, 35, 138, 12, 6, 118, 58, 13, 50, 0, 12, 3, 95,
-			52, 48, 80, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 159, 57, 13, 0, 8, 3, 224, 164, 151, 81, 13, 0, 14, 3, 95, 52,
-			51, 47, 127, 47, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 158, 83, 13, 0, 8, 3, 224, 164, 150, 146, 13, 0, 13, 3, 95,
-			52, 50, 71, 134, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 153, 101, 13, 0, 16, 3, 95, 52, 53, 48, 134, 6, 50, 47, 118,
-			55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 152, 104, 13, 0, 14, 3, 95, 52, 52, 80, 120, 58, 118, 55, 6, 113, 89, 0, 0, 8,
-			3, 224, 165, 155, 88, 13, 0, 14, 3, 95, 52, 55, 89, 127, 47, 118, 55, 6, 113, 89, 0, 0, 13, 137, 224, 164, 133, 224, 164, 151,
-			224, 164, 176, 72, 8, 8, 3, 224, 165, 154, 100, 13, 0, 15, 3, 95, 52, 54, 144, 107, 113, 57, 118, 55, 6, 113, 89, 0, 0, 18,
-			3, 95, 54, 57, 122, 50, 13, 107, 4, 35, 47, 12, 6, 109, 34, 12, 0, 14, 3, 95, 53, 49, 113, 49, 57, 6, 118, 58, 109, 50,
-			0, 0, 11, 3, 95, 54, 56, 35, 34, 89, 13, 142, 0, 12, 3, 95, 53, 48, 48, 13, 80, 6, 118, 89, 0, 0, 13, 3, 95, 53,
-			51, 47, 6, 113, 34, 48, 109, 50, 0, 0, 12, 3, 95, 53, 50, 71, 6, 118, 58, 109, 50, 0, 0, 13, 3, 95, 53, 53, 48, 6,
-			35, 144, 48, 109, 50, 0, 0, 9, 3, 224, 165, 144, 18, 131, 65, 0, 13, 3, 95, 53, 52, 80, 6, 121, 123, 58, 109, 50, 0, 0,
-			15, 3, 95, 53, 55, 89, 109, 47, 12, 6, 118, 58, 13, 50, 0, 0, 14, 3, 95, 53, 54, 144, 107, 13, 48, 12, 6, 109, 50, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 57, 50, 109, 58, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 56, 35, 138,
-			12, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 191, 18, 113, 0, 0, 8, 3, 224, 164, 190, 148, 118, 0, 0, 8, 3, 224, 164, 185,
-			108, 13, 0, 0, 8, 3, 224, 164, 184, 89, 13, 0, 0, 0, 0, 8, 3, 224, 164, 181, 84, 13, 0, 16, 3, 95, 57, 57, 50, 113,
-			67, 57, 6, 118, 50, 13, 58, 114, 0, 13, 3, 95, 56, 49, 113, 49, 57, 118, 89, 6, 112, 0, 0, 15, 3, 95, 57, 56, 35, 138,
-			12, 6, 118, 50, 13, 58, 114, 0, 12, 3, 95, 56, 48, 4, 109, 89, 89, 6, 112, 0, 0, 8, 3, 224, 164, 183, 93, 13, 0, 13,
-			3, 95, 56, 51, 47, 113, 34, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 182, 91, 13, 0, 12, 3, 95, 56, 50, 71, 134, 118, 89,
-			6, 112, 0, 0, 8, 3, 224, 164, 177, 34, 13, 0, 14, 3, 95, 56, 53, 48, 113, 6, 80, 118, 89, 6, 112, 0, 0, 8, 3, 224,
-			164, 176, 34, 13, 0, 13, 3, 95, 56, 52, 80, 120, 34, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 179, 62, 13, 0, 14, 3, 95,
-			56, 55, 89, 109, 47, 12, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 178, 55, 13, 0, 13, 3, 95, 56, 54, 144, 113, 57, 118, 89,
-			6, 112, 0, 0, 8, 3, 224, 164, 173, 137, 13, 0, 15, 3, 95, 57, 49, 113, 49, 57, 6, 118, 50, 13, 58, 114, 0, 0, 8, 3,
-			224, 164, 172, 71, 13, 0, 12, 3, 95, 57, 48, 50, 109, 71, 12, 6, 114, 0, 0, 10, 3, 224, 164, 175, 57, 13, 0, 72, 8, 8,
-			3, 224, 164, 175, 57, 13, 0, 15, 3, 95, 57, 51, 47, 113, 34, 6, 118, 50, 13, 58, 114, 0, 0, 8, 3, 224, 164, 174, 65, 13,
-			0, 13, 3, 95, 57, 50, 71, 6, 118, 50, 13, 58, 114, 0, 0, 15, 3, 95, 57, 53, 48, 13, 80, 6, 118, 50, 13, 58, 114, 0,
-			0, 8, 3, 224, 164, 168, 50, 13, 0, 15, 3, 95, 57, 52, 80, 120, 34, 6, 118, 65, 13, 58, 114, 0, 0, 8, 3, 224, 164, 171,
-			136, 13, 0, 16, 3, 95, 57, 55, 89, 13, 47, 12, 6, 118, 50, 13, 58, 114, 0, 0, 8, 3, 224, 164, 170, 48, 13, 0, 15, 3,
-			95, 57, 54, 144, 113, 57, 6, 118, 50, 13, 58, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 6, 109, 34, 13, 71, 0, 0, 13, 4, 95, 48,
-			77, 53, 146, 6, 109, 34, 13, 71, 0, 0, 11, 4, 95, 48, 77, 50, 55, 6, 118, 146, 0, 0, 13, 4, 95, 48, 77, 51, 80, 34,
-			6, 39, 34, 36, 0, 0, 0, 13, 4, 95, 48, 77, 49, 107, 13, 88, 6, 118, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 12, 137, 224, 164, 185, 224, 165, 136, 224, 164, 130, 72, 0, 0, 0, 0, 0, 9, 134, 224, 164, 164, 224, 165,
-			130, 72, 0, 0, 0, 0, 0, 0, 18, 143, 224, 164, 137, 224, 164, 184, 224, 165, 141, 224, 164, 184, 224, 165, 135, 72, 18, 143, 224, 164,
-			135, 224, 164, 184, 224, 165, 141, 224, 164, 184, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 164, 164, 224, 165,
-			129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 165, 135, 72, 0, 0, 0, 0, 0, 27, 152, 224, 164, 164,
-			224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 165, 128, 72, 0, 0, 0, 0, 0, 0, 12, 137,
-			224, 164, 185, 224, 165, 130, 224, 164, 129, 72, 0, 12, 137, 224, 164, 165, 224, 165, 128, 224, 164, 130, 72, 12, 137, 224, 164, 174, 224, 165,
-			136, 224, 164, 130, 72, 0, 0, 9, 134, 224, 164, 184, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 164,
-			164, 224, 164, 149, 72, 0, 0, 0, 18, 143, 224, 164, 133, 224, 164, 151, 224, 164, 176, 224, 164, 154, 224, 165, 135, 8, 0, 0, 0, 0,
-			0, 0, 0, 0, 11, 6, 224, 164, 150, 224, 164, 188, 101, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224,
-			164, 164, 224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 164, 190, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 134, 224, 164, 170, 224, 164, 176, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 11, 6, 224, 164, 156, 224, 164, 188, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134,
-			224, 164, 148, 224, 164, 176, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 16, 140, 224, 164, 172, 224, 164, 191, 224, 164, 168, 224, 164, 190,
-			72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 164, 134, 224, 164, 170, 72, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 6, 112, 50, 0, 0, 8,
-			2, 95, 50, 72, 6, 119, 0, 0, 8, 2, 95, 49, 6, 114, 49, 0, 0, 11, 2, 95, 48, 91, 6, 123, 66, 57, 109, 0, 0, 9,
-			2, 95, 55, 89, 6, 118, 47, 0, 0, 8, 2, 95, 54, 144, 6, 111, 0, 0, 10, 2, 95, 53, 48, 6, 118, 50, 80, 0, 0, 10,
-			2, 95, 52, 80, 6, 118, 34, 12, 0, 0, 0, 0, 9, 2, 95, 57, 50, 6, 135, 0, 103, 8, 2, 95, 57, 50, 6, 120, 0, 0,
-			8, 2, 95, 56, 6, 118, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 165, 135, 72, 0, 0,
-			0, 0, 0, 0, 0, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 165, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			13, 137, 224, 164, 175, 224, 164, 166, 224, 164, 191, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 18, 143, 224, 164, 185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 164,
-			185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 165, 128, 72, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 164, 164, 224, 165, 135, 224,
-			164, 176, 224, 164, 190, 72, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 164, 190, 72, 0, 24, 15, 224, 164, 184, 224, 164, 190,
-			224, 164, 175, 224, 164, 172, 224, 164, 176, 89, 6, 134, 71, 13, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 18, 143, 224, 164, 185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 164, 190, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 20, 0, 0, 102, 9, 0, 0, 48, 0, 0, 0, 103, 9, 0, 0, 49, 0, 0, 0, 104, 9, 0, 0, 50, 0, 0, 0,
-			105, 9, 0, 0, 51, 0, 0, 0, 106, 9, 0, 0, 52, 0, 0, 0, 107, 9, 0, 0, 53, 0, 0, 0, 108, 9, 0, 0, 54, 0,
-			0, 0, 109, 9, 0, 0, 55, 0, 0, 0, 110, 9, 0, 0, 56, 0, 0, 0, 111, 9, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0,
-			6, 1, 2, 0, 3, 50, 0, 7, 6, 1, 3, 0, 3, 50, 0, 4, 2, 224, 164, 170, 3, 65, 0, 2, 224, 164, 171, 0, 2, 224,
-			164, 172, 0, 2, 224, 164, 173, 0, 2, 224, 164, 174, 0, 4, 2, 224, 164, 159, 3, 66, 0, 2, 224, 164, 160, 0, 2, 224, 164, 161,
-			0, 2, 224, 164, 162, 0, 2, 224, 164, 163, 0, 4, 2, 224, 164, 154, 3, 67, 0, 2, 224, 164, 155, 0, 2, 224, 164, 156, 0, 2,
-			224, 164, 157, 0, 2, 224, 164, 158, 0, 2, 224, 164, 175, 0, 4, 2, 224, 164, 149, 3, 68, 0, 2, 224, 164, 150, 0, 2, 224, 164,
-			151, 0, 2, 224, 164, 152, 0, 2, 224, 164, 153, 0, 2, 224, 164, 185, 0, 7, 6, 1, 4, 0, 3, 108, 0, 7, 6, 1, 6, 0,
-			3, 109, 0, 4, 1, 185, 164, 224, 133, 164, 224, 3, 116, 0, 2, 224, 164, 185, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7, 6, 1,
-			8, 0, 3, 113, 0, 7, 6, 1, 9, 0, 2, 32, 3, 37, 0, 3, 112, 0, 7, 6, 1, 10, 0, 3, 122, 0, 7, 6, 1, 11,
-			0, 3, 123, 0, 4, 224, 164, 129, 3, 133, 0, 224, 164, 130, 0, 7, 6, 1, 12, 0, 3, 34, 113, 0, 7, 6, 1, 13, 0, 3,
-			45, 0, 7, 6, 1, 14, 0, 3, 116, 0, 7, 6, 1, 15, 0, 3, 36, 0, 7, 6, 1, 16, 0, 3, 114, 0, 7, 6, 1, 17,
-			0, 3, 115, 0, 4, 224, 164, 129, 3, 127, 0, 224, 164, 130, 0, 5, 2, 3, 134, 0, 7, 6, 1, 18, 0, 3, 121, 0, 7, 6,
-			1, 19, 0, 3, 39, 0, 7, 6, 1, 20, 0, 3, 119, 0, 4, 224, 164, 129, 3, 131, 0, 224, 164, 130, 0, 7, 6, 1, 21, 0,
-			3, 120, 0, 4, 224, 164, 129, 3, 130, 0, 224, 164, 130, 0, 5, 3, 3, 135, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0,
-			2, 224, 165, 141, 224, 164, 175, 3, 49, 12, 0, 3, 49, 109, 0, 224, 164, 188, 2, 17, 66, 3, 104, 0, 224, 164, 188, 3, 104, 109,
-			0, 7, 6, 1, 23, 0, 224, 164, 188, 2, 17, 66, 3, 101, 0, 224, 164, 188, 3, 101, 109, 0, 2, 17, 66, 3, 146, 0, 3, 146,
-			109, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 109, 0, 224, 164, 188, 2, 17, 66, 3, 100, 0, 224, 164, 188, 3,
-			100, 109, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 147, 0, 3, 147, 109, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 1,
-			141, 165, 224, 2, 32, 3, 68, 13, 0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0, 2, 224, 165, 141, 224, 164,
-			175, 3, 80, 12, 0, 3, 80, 109, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6, 1, 29, 0, 2,
-			17, 66, 3, 79, 0, 3, 79, 109, 0, 224, 164, 188, 2, 17, 66, 3, 88, 0, 224, 164, 188, 3, 88, 109, 0, 7, 6, 1, 30, 0,
-			2, 17, 66, 3, 145, 0, 3, 145, 109, 0, 7, 6, 1, 31, 0, 4, 1, 141, 165, 224, 2, 32, 3, 67, 0, 2, 17, 66, 0, 3,
-			67, 109, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 140, 0, 2, 224, 165, 141, 224, 164, 175, 3, 140, 12, 0, 3, 140, 109, 0, 7,
-			6, 1, 33, 0, 2, 17, 66, 3, 142, 0, 3, 142, 109, 0, 7, 6, 1, 34, 0, 224, 164, 188, 2, 17, 66, 3, 70, 0, 224, 164,
-			188, 3, 70, 109, 0, 2, 17, 66, 3, 141, 0, 3, 141, 109, 0, 7, 6, 1, 35, 0, 224, 164, 188, 2, 17, 66, 3, 70, 107, 0,
-			224, 164, 188, 3, 70, 107, 109, 0, 2, 17, 66, 3, 143, 0, 3, 143, 109, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 1,
-			141, 165, 224, 2, 32, 3, 66, 13, 0, 3, 66, 109, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 2, 224, 165, 141, 224, 164,
-			175, 3, 47, 12, 0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 138, 0, 3, 138, 109, 0, 7, 6, 1, 39, 0, 2,
-			17, 66, 3, 72, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 139, 0, 3, 139, 109, 0, 7, 6, 1, 41, 0, 4,
-			1, 141, 165, 224, 176, 164, 224, 2, 32, 3, 50, 0, 2, 17, 66, 0, 1, 141, 165, 224, 2, 32, 3, 50, 13, 0, 3, 50, 109, 0,
-			7, 6, 1, 42, 0, 3, 50, 12, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 2, 224, 165, 141, 224, 164, 175, 3, 48, 12,
-			0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 224, 164, 188, 2, 17, 66, 3, 83, 0, 224, 164, 188, 3, 83, 109, 0, 2, 17, 66, 3,
-			136, 0, 3, 136, 109, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3,
-			137, 0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 4, 1, 141, 165, 224, 168, 164, 224, 2, 32, 3, 65, 0, 1, 141, 165, 224, 176, 164,
-			224, 2, 32, 0, 2, 17, 66, 0, 1, 141, 165, 224, 2, 32, 3, 65, 13, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 2, 17, 66,
-			3, 57, 0, 1, 141, 165, 224, 2, 32, 3, 57, 13, 0, 3, 57, 109, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 1, 141,
-			165, 224, 2, 32, 3, 34, 13, 0, 3, 34, 109, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 34, 0, 1, 141, 165, 224, 2, 32, 3,
-			34, 13, 0, 3, 34, 109, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 1, 141, 165, 224, 2, 32, 3, 55, 13, 0, 3, 55,
-			109, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109, 0, 7, 6, 1,
-			53, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109, 0, 7, 6, 1, 54, 0, 8, 2, 17,
-			66, 3, 58, 0, 8, 3, 58, 109, 0, 4, 2, 17, 66, 3, 84, 0, 8, 2, 224, 165, 141, 0, 3, 84, 109, 0, 7, 6, 1, 55,
-			0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 109, 0, 7, 6, 1, 57,
-			0, 2, 17, 66, 3, 89, 0, 3, 89, 109, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 108, 0, 3, 108, 109, 0, 7, 6, 1, 62,
-			0, 3, 12, 0, 7, 6, 1, 63, 0, 3, 118, 0, 224, 164, 181, 3, 135, 0, 7, 6, 1, 64, 0, 3, 113, 0, 7, 6, 1, 65,
-			0, 2, 32, 3, 37, 0, 3, 112, 0, 7, 6, 1, 66, 0, 3, 122, 0, 7, 6, 1, 67, 0, 3, 123, 0, 4, 224, 164, 129, 3,
-			133, 0, 224, 164, 130, 0, 7, 6, 1, 68, 0, 3, 34, 113, 0, 7, 6, 1, 69, 0, 3, 34, 113, 0, 7, 6, 1, 70, 0, 3,
-			116, 0, 7, 6, 1, 71, 0, 3, 36, 0, 7, 6, 1, 72, 0, 3, 114, 0, 7, 6, 1, 73, 0, 3, 115, 0, 4, 224, 164, 129,
-			3, 127, 0, 224, 164, 130, 0, 5, 2, 3, 134, 0, 7, 6, 1, 74, 0, 3, 121, 0, 7, 6, 1, 75, 0, 3, 39, 0, 7, 6,
-			1, 76, 0, 3, 119, 0, 4, 224, 164, 129, 3, 131, 0, 224, 164, 130, 0, 7, 6, 1, 77, 0, 3, 120, 0, 4, 224, 164, 129, 3,
-			130, 0, 224, 164, 130, 0, 5, 3, 3, 135, 0, 7, 6, 1, 78, 0, 3, 0, 7, 6, 1, 81, 0, 3, 131, 65, 0, 7, 6, 1,
-			89, 0, 2, 17, 66, 3, 104, 0, 3, 104, 109, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 101, 0, 3, 101, 109, 0, 7, 6, 1,
-			91, 0, 2, 17, 66, 3, 100, 0, 3, 100, 109, 0, 7, 6, 1, 92, 0, 2, 17, 66, 3, 88, 0, 3, 88, 109, 0, 7, 6, 1,
-			93, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 70, 107, 0, 3, 70, 107, 109, 0, 7,
-			6, 1, 95, 0, 2, 17, 66, 3, 83, 0, 3, 83, 109, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 7,
-			6, 1, 97, 0, 3, 109, 20, 34, 34, 0, 7, 6, 1, 98, 0, 3, 45, 12, 0, 7, 6, 1, 99, 0, 3, 45, 0, 7, 6, 1,
-			100, 0, 3, 45, 12, 0, 7, 6, 111, 0, 3, 21, 0, 102, 1, 32, 32, 15, 2, 32, 32, 15, 194, 160, 194, 160, 194, 160, 3, 65,
-			36, 0, 7, 6, 0, 37, 3, 48, 109, 89, 116, 50, 47, 0, 36, 3, 72, 121, 55, 109, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts23 = FileInMemory_createWithData (5723, reinterpret_cast<const char *> (&espeakdata_dicts23_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/hi_dict", 
+		static unsigned char espeakdata_dicts27_data[8607] = {
+			0, 4, 0, 0, 46, 25, 0, 0, 0, 0, 34, 21, 224, 164, 173, 224, 164, 190, 224, 164, 136, 224, 164, 154, 224, 164, 190, 224, 164, 176,
+			224, 164, 190, 71, 107, 118, 37, 6, 80, 107, 118, 34, 118, 0, 0, 30, 18, 224, 164, 157, 224, 165, 139, 224, 164, 178, 224, 164, 157, 224,
+			164, 190, 224, 164, 178, 79, 107, 39, 6, 55, 79, 107, 118, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 21,
+			224, 164, 182, 224, 165, 141, 224, 164, 176, 224, 164, 174, 224, 164, 166, 224, 164, 190, 224, 164, 168, 91, 34, 35, 65, 6, 72, 118, 50, 0,
+			0, 0, 0, 0, 17, 4, 95, 100, 112, 116, 10, 72, 13, 89, 13, 65, 55, 6, 119, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 36, 72, 121, 55, 13, 34, 0, 0, 12, 1, 37, 48, 109, 47, 6, 113, 91, 13, 47, 0,
+			0, 0, 0, 0, 0, 3, 129, 42, 13, 1, 42, 47, 118, 34, 6, 118, 68, 49, 13, 50, 0, 0, 8, 1, 43, 48, 55, 109, 89, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 61, 71, 109, 34, 6, 118, 71, 13, 34, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 164, 149, 224, 165, 128, 72, 0,
+			15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 165, 139, 72, 0, 0, 12, 137, 224, 164, 176, 224, 164, 185, 224, 165, 128, 72, 9,
+			134, 224, 164, 175, 224, 165, 135, 72, 9, 134, 224, 164, 175, 224, 165, 135, 72, 0, 0, 0, 15, 140, 224, 164, 137, 224, 164, 168, 224, 164,
+			149, 224, 165, 128, 72, 15, 140, 224, 164, 137, 224, 164, 184, 224, 164, 149, 224, 165, 128, 72, 15, 140, 224, 164, 134, 224, 164, 170, 224, 164,
+			149, 224, 165, 128, 72, 0, 9, 134, 224, 164, 149, 224, 165, 135, 72, 9, 134, 224, 164, 181, 224, 165, 135, 72, 0, 0, 0, 12, 137, 224,
+			164, 176, 224, 164, 185, 224, 165, 135, 72, 0, 9, 134, 224, 164, 149, 224, 165, 139, 72, 9, 134, 224, 164, 181, 224, 165, 139, 72, 9, 134,
+			224, 164, 181, 224, 165, 139, 72, 0, 0, 15, 140, 224, 164, 137, 224, 164, 168, 224, 164, 149, 224, 165, 135, 72, 15, 140, 224, 164, 137, 224,
+			164, 184, 224, 164, 149, 224, 165, 135, 72, 15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 165, 135, 72, 15, 140, 224, 164, 174, 224,
+			165, 129, 224, 164, 157, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 164, 185, 224, 165, 136, 72, 0,
+			0, 0, 9, 134, 224, 164, 185, 224, 165, 139, 72, 0, 0, 0, 0, 0, 0, 16, 9, 224, 164, 174, 224, 165, 135, 224, 164, 130, 65, 126,
+			12, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 164, 135, 224, 164, 168, 224, 165, 141, 224, 164, 185, 224, 165, 135, 224,
+			164, 130, 72, 0, 0, 0, 15, 140, 224, 164, 164, 224, 165, 129, 224, 164, 157, 224, 165, 135, 72, 24, 149, 224, 164, 164, 224, 165, 129, 224,
+			164, 174, 224, 165, 141, 224, 164, 185, 224, 165, 135, 224, 164, 130, 72, 0, 0, 12, 137, 224, 164, 174, 224, 164, 151, 224, 164, 176, 8, 0,
+			11, 6, 224, 164, 151, 224, 164, 188, 100, 13, 0, 0, 9, 134, 224, 164, 181, 224, 164, 185, 72, 0, 39, 24, 224, 164, 168, 224, 165, 140,
+			224, 164, 149, 224, 164, 176, 224, 164, 182, 224, 164, 190, 224, 164, 185, 224, 165, 128, 50, 35, 40, 6, 49, 35, 34, 6, 91, 118, 107, 113,
+			0, 0, 0, 11, 6, 224, 164, 149, 224, 164, 188, 104, 13, 0, 0, 0, 9, 134, 224, 164, 149, 224, 164, 190, 72, 0, 0, 0, 0, 38,
+			24, 224, 164, 174, 224, 165, 130, 224, 164, 178, 224, 164, 174, 224, 164, 130, 224, 164, 164, 224, 165, 141, 224, 164, 176, 65, 40, 55, 6, 65,
+			35, 50, 6, 47, 34, 35, 0, 0, 33, 21, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 184, 224, 164, 190, 224, 164, 151, 224, 164,
+			176, 65, 35, 107, 118, 89, 118, 81, 35, 34, 0, 0, 15, 140, 224, 164, 137, 224, 164, 168, 224, 164, 149, 224, 164, 190, 72, 15, 140, 224,
+			164, 137, 224, 164, 184, 224, 164, 149, 224, 164, 190, 72, 15, 140, 224, 164, 135, 224, 164, 168, 224, 164, 149, 224, 164, 190, 72, 15, 140, 224,
+			164, 135, 224, 164, 184, 224, 164, 149, 224, 164, 190, 72, 0, 0, 0, 0, 47, 30, 224, 164, 133, 224, 164, 130, 224, 164, 156, 224, 164, 168,
+			224, 165, 128, 224, 164, 170, 224, 165, 129, 224, 164, 164, 224, 165, 141, 224, 164, 176, 35, 50, 57, 35, 50, 6, 113, 48, 40, 47, 12, 6,
+			34, 35, 0, 11, 6, 224, 164, 171, 224, 164, 188, 83, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 140, 224, 164, 149, 224, 165, 141,
+			224, 164, 175, 224, 164, 190, 72, 8, 0, 12, 137, 224, 164, 176, 224, 164, 185, 224, 164, 190, 72, 0, 36, 24, 224, 164, 173, 224, 165, 130,
+			224, 164, 164, 224, 164, 170, 224, 165, 141, 224, 164, 176, 224, 165, 135, 224, 164, 164, 71, 107, 40, 47, 6, 48, 34, 36, 47, 0, 0, 0,
+			15, 140, 224, 164, 134, 224, 164, 170, 224, 164, 149, 224, 164, 190, 72, 0, 0, 0, 0, 0, 0, 31, 21, 224, 164, 149, 224, 165, 141, 224,
+			164, 176, 224, 164, 191, 224, 164, 149, 224, 165, 135, 224, 164, 159, 49, 34, 6, 113, 49, 113, 47, 0, 0, 0, 0, 9, 134, 224, 164, 175,
+			224, 164, 185, 72, 0, 0, 34, 21, 224, 164, 149, 224, 164, 190, 224, 164, 178, 224, 164, 154, 224, 164, 149, 224, 165, 141, 224, 164, 176, 49,
+			118, 55, 6, 80, 35, 49, 6, 34, 35, 0, 0, 0, 0, 29, 18, 224, 164, 176, 224, 164, 190, 224, 164, 182, 224, 165, 128, 224, 164, 171,
+			224, 164, 178, 34, 118, 91, 37, 6, 83, 35, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 164, 161, 224, 164, 188,
+			70, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 18, 224, 164, 174, 224, 164, 185, 224, 164,
+			190, 224, 164, 166, 224, 165, 135, 224, 164, 181, 65, 35, 107, 118, 6, 72, 36, 84, 0, 0, 9, 134, 224, 164, 185, 224, 164, 174, 72, 0,
+			0, 0, 12, 137, 224, 164, 164, 224, 165, 129, 224, 164, 174, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 38, 24, 224, 164, 176, 224, 164, 190, 224, 164, 174, 224, 164, 176, 224, 164, 190, 224, 164, 156, 224, 165, 141,
+			224, 165, 159, 34, 118, 65, 12, 34, 118, 79, 6, 79, 57, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 51, 57, 122,
+			50, 47, 6, 118, 55, 37, 89, 0, 12, 3, 95, 50, 49, 113, 49, 12, 6, 37, 89, 0, 0, 12, 3, 95, 51, 56, 6, 109, 34, 47,
+			37, 89, 0, 10, 3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11, 3, 95, 50, 51, 47, 6, 114, 37, 89, 0, 0, 11, 3, 95, 50,
+			50, 71, 6, 118, 37, 89, 0, 0, 13, 3, 95, 50, 53, 48, 6, 109, 80, 12, 37, 89, 0, 0, 12, 3, 95, 50, 52, 80, 6, 120,
+			71, 37, 89, 0, 0, 14, 3, 95, 50, 55, 89, 13, 47, 12, 6, 118, 37, 89, 0, 0, 13, 3, 95, 50, 54, 143, 109, 71, 71, 6,
+			37, 89, 0, 0, 13, 3, 95, 51, 49, 113, 49, 13, 47, 6, 37, 89, 0, 0, 10, 3, 95, 51, 48, 47, 6, 112, 89, 0, 0, 12,
+			3, 95, 51, 51, 47, 6, 127, 47, 37, 89, 0, 0, 13, 3, 95, 51, 50, 71, 6, 35, 47, 12, 37, 89, 0, 0, 9, 134, 224, 164,
+			165, 224, 165, 128, 72, 12, 3, 95, 51, 53, 48, 6, 127, 47, 37, 89, 0, 0, 12, 3, 95, 51, 52, 80, 6, 130, 47, 37, 89, 0,
+			0, 12, 3, 95, 51, 55, 89, 6, 127, 47, 37, 89, 0, 0, 13, 3, 95, 51, 54, 143, 6, 109, 47, 12, 37, 89, 0, 0, 0, 9,
+			134, 224, 164, 165, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 55, 57, 122, 50,
+			6, 118, 89, 37, 0, 12, 3, 95, 54, 49, 6, 113, 49, 89, 109, 141, 0, 0, 9, 3, 224, 165, 140, 147, 135, 0, 103, 8, 3, 224,
+			165, 140, 147, 120, 0, 15, 3, 95, 55, 56, 109, 47, 108, 6, 109, 47, 12, 109, 34, 0, 10, 3, 95, 54, 48, 89, 6, 118, 141, 0,
+			0, 9, 3, 95, 48, 67, 89, 6, 120, 0, 14, 3, 95, 54, 51, 47, 6, 113, 34, 114, 89, 109, 141, 0, 0, 12, 3, 95, 54, 50,
+			71, 6, 118, 89, 109, 141, 0, 0, 8, 3, 224, 165, 137, 18, 121, 0, 12, 3, 95, 54, 53, 48, 6, 127, 89, 109, 141, 0, 0, 9,
+			3, 224, 165, 136, 147, 134, 0, 102, 8, 3, 224, 165, 136, 147, 115, 0, 12, 3, 95, 54, 52, 80, 6, 130, 89, 109, 141, 0, 0, 8,
+			3, 224, 165, 139, 147, 119, 0, 13, 3, 95, 54, 55, 89, 6, 109, 70, 89, 109, 141, 0, 0, 8, 3, 224, 165, 138, 18, 39, 0, 14,
+			3, 95, 54, 54, 143, 113, 57, 6, 118, 89, 109, 141, 0, 0, 8, 3, 224, 165, 133, 18, 116, 0, 15, 3, 95, 55, 49, 6, 113, 49,
+			108, 109, 47, 12, 109, 34, 0, 0, 9, 3, 224, 165, 132, 18, 34, 113, 0, 13, 3, 95, 55, 48, 89, 6, 109, 47, 12, 109, 34, 0,
+			0, 8, 3, 224, 165, 135, 147, 114, 0, 15, 3, 95, 55, 51, 47, 6, 113, 107, 109, 47, 12, 109, 34, 0, 0, 8, 3, 224, 165, 134,
+			18, 36, 0, 15, 3, 95, 55, 50, 6, 71, 109, 107, 109, 47, 12, 109, 34, 0, 0, 8, 3, 224, 165, 129, 18, 122, 0, 16, 3, 95,
+			55, 53, 48, 109, 80, 108, 6, 109, 47, 12, 109, 34, 0, 0, 8, 3, 224, 165, 128, 147, 112, 0, 15, 3, 95, 55, 52, 80, 120, 108,
+			6, 109, 47, 12, 109, 34, 0, 0, 9, 3, 224, 165, 131, 18, 34, 113, 0, 16, 3, 95, 55, 55, 89, 109, 47, 108, 6, 109, 47, 12,
+			109, 34, 0, 0, 8, 3, 224, 165, 130, 147, 123, 0, 15, 3, 95, 55, 54, 143, 113, 108, 6, 109, 47, 12, 109, 34, 0, 0, 12, 3,
+			95, 49, 57, 122, 50, 50, 6, 113, 89, 0, 0, 13, 3, 95, 49, 56, 109, 141, 6, 118, 34, 109, 108, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 3, 95, 50, 57, 6, 122, 50, 47, 37, 89, 0, 13, 3, 95, 49, 49, 81, 57, 6, 118, 16, 109, 108, 0, 0, 13, 3, 95,
+			50, 56, 35, 25, 12, 6, 118, 37, 89, 0, 10, 3, 95, 49, 48, 72, 6, 109, 89, 0, 0, 12, 3, 95, 49, 51, 47, 6, 114, 34,
+			109, 108, 0, 0, 12, 3, 95, 49, 50, 71, 6, 118, 34, 109, 108, 0, 0, 15, 4, 95, 99, 121, 114, 89, 113, 34, 113, 49, 6, 113,
+			49, 0, 14, 3, 95, 49, 53, 48, 6, 109, 50, 72, 34, 109, 108, 0, 0, 12, 3, 95, 49, 52, 80, 6, 120, 72, 109, 108, 0, 0,
+			12, 3, 95, 49, 55, 89, 109, 47, 34, 109, 107, 0, 0, 12, 3, 95, 49, 54, 89, 6, 119, 55, 109, 108, 0, 0, 8, 3, 224, 164,
+			165, 25, 13, 0, 0, 8, 3, 224, 164, 164, 47, 13, 0, 0, 36, 24, 224, 164, 172, 224, 165, 136, 224, 164, 178, 224, 164, 151, 224, 164,
+			190, 224, 164, 161, 224, 164, 188, 224, 165, 128, 71, 115, 36, 55, 6, 81, 118, 34, 113, 0, 35, 24, 224, 164, 176, 224, 165, 135, 224, 164,
+			178, 224, 164, 151, 224, 164, 190, 224, 164, 161, 224, 164, 188, 224, 165, 128, 34, 36, 55, 6, 81, 118, 34, 113, 0, 9, 134, 224, 164, 165,
+			224, 164, 190, 72, 8, 3, 224, 164, 167, 138, 13, 0, 0, 8, 3, 224, 164, 166, 72, 13, 0, 0, 8, 3, 224, 164, 161, 140, 13, 0,
+			0, 8, 3, 224, 164, 160, 141, 13, 0, 0, 8, 3, 224, 164, 163, 66, 13, 0, 0, 8, 3, 224, 164, 162, 142, 13, 0, 0, 8, 3,
+			224, 164, 157, 144, 13, 0, 12, 3, 95, 52, 57, 6, 122, 50, 80, 118, 89, 0, 0, 11, 3, 224, 165, 164, 72, 109, 66, 140, 109, 0,
+			8, 3, 224, 164, 156, 79, 13, 0, 14, 3, 95, 52, 56, 109, 34, 47, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 164, 159, 139, 13,
+			0, 0, 8, 3, 224, 164, 158, 67, 13, 0, 0, 8, 3, 224, 164, 153, 68, 13, 0, 0, 8, 3, 224, 164, 152, 146, 13, 0, 0, 9,
+			3, 224, 165, 163, 147, 45, 12, 0, 8, 3, 224, 164, 155, 143, 13, 0, 0, 8, 3, 224, 165, 162, 18, 45, 0, 8, 3, 224, 164, 154,
+			80, 13, 0, 0, 9, 3, 224, 165, 157, 107, 34, 13, 0, 8, 3, 224, 164, 149, 49, 13, 0, 12, 3, 95, 53, 57, 6, 122, 50, 89,
+			109, 141, 0, 14, 3, 95, 52, 49, 113, 49, 47, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 156, 44, 13, 0, 14, 3, 95, 53,
+			56, 35, 141, 12, 6, 118, 58, 13, 50, 0, 12, 3, 95, 52, 48, 80, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 159, 57, 13,
+			0, 8, 3, 224, 164, 151, 81, 13, 0, 14, 3, 95, 52, 51, 47, 127, 47, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 158, 83,
+			13, 0, 8, 3, 224, 164, 150, 145, 13, 0, 13, 3, 95, 52, 50, 71, 134, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 153, 101,
+			13, 0, 15, 3, 95, 52, 53, 48, 134, 50, 47, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 152, 104, 13, 0, 14, 3, 95, 52,
+			52, 80, 120, 84, 6, 118, 55, 37, 89, 0, 0, 8, 3, 224, 165, 155, 88, 13, 0, 14, 3, 95, 52, 55, 89, 127, 47, 6, 118, 55,
+			37, 89, 0, 0, 13, 137, 224, 164, 133, 224, 164, 151, 224, 164, 176, 72, 8, 8, 3, 224, 165, 154, 100, 13, 0, 14, 3, 95, 52, 54,
+			143, 113, 57, 6, 118, 55, 37, 89, 0, 0, 15, 3, 95, 54, 57, 6, 122, 50, 109, 107, 47, 12, 109, 34, 0, 14, 3, 95, 53, 49,
+			113, 49, 57, 6, 118, 58, 109, 50, 0, 0, 11, 3, 95, 54, 56, 109, 70, 89, 109, 141, 0, 12, 3, 95, 53, 48, 48, 109, 80, 6,
+			118, 89, 0, 0, 14, 3, 95, 53, 51, 47, 6, 113, 34, 114, 48, 109, 50, 0, 0, 12, 3, 95, 53, 50, 71, 6, 118, 58, 109, 50,
+			0, 0, 13, 3, 95, 53, 53, 48, 6, 109, 80, 48, 109, 50, 0, 0, 9, 3, 224, 165, 144, 18, 131, 65, 0, 12, 3, 95, 53, 52,
+			80, 6, 120, 58, 109, 50, 0, 0, 14, 3, 95, 53, 55, 89, 109, 47, 6, 118, 58, 13, 50, 0, 0, 32, 21, 224, 164, 149, 224, 165,
+			129, 224, 164, 178, 224, 164, 166, 224, 165, 135, 224, 164, 181, 224, 165, 128, 49, 40, 55, 6, 72, 36, 84, 37, 0, 13, 3, 95, 53, 54,
+			143, 6, 109, 48, 12, 109, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 63, 63, 109, 49, 93, 13, 34, 0, 0, 0, 13, 3,
+			95, 56, 57, 50, 109, 58, 6, 118, 89, 37, 0, 0, 13, 3, 95, 56, 56, 35, 25, 12, 6, 118, 89, 37, 0, 0, 8, 3, 224, 164,
+			191, 18, 113, 0, 0, 8, 3, 224, 164, 190, 147, 118, 0, 0, 8, 3, 224, 164, 185, 108, 13, 0, 0, 8, 3, 224, 164, 184, 89, 13,
+			0, 0, 0, 0, 8, 3, 224, 164, 181, 84, 13, 0, 16, 3, 95, 57, 57, 50, 113, 67, 57, 6, 118, 50, 13, 71, 114, 0, 13, 3,
+			95, 56, 49, 113, 49, 57, 6, 118, 89, 37, 0, 0, 15, 3, 95, 57, 56, 109, 25, 12, 6, 118, 50, 13, 71, 114, 0, 11, 3, 95,
+			56, 48, 6, 109, 89, 89, 112, 0, 0, 8, 3, 224, 164, 183, 93, 13, 0, 13, 3, 95, 56, 51, 47, 113, 34, 6, 118, 89, 37, 0,
+			0, 8, 3, 224, 164, 182, 91, 13, 0, 13, 3, 95, 56, 50, 71, 109, 57, 6, 118, 89, 37, 0, 0, 8, 3, 224, 164, 177, 34, 13,
+			0, 13, 3, 95, 56, 53, 48, 109, 80, 6, 118, 89, 37, 0, 0, 8, 3, 224, 164, 176, 34, 13, 0, 13, 3, 95, 56, 52, 80, 120,
+			34, 6, 118, 89, 37, 0, 0, 8, 3, 224, 164, 179, 62, 13, 0, 14, 3, 95, 56, 55, 89, 109, 47, 12, 6, 118, 89, 37, 0, 0,
+			8, 3, 224, 164, 178, 55, 13, 0, 13, 3, 95, 56, 54, 143, 113, 57, 6, 118, 89, 37, 0, 0, 8, 3, 224, 164, 173, 137, 13, 0,
+			16, 3, 95, 57, 49, 113, 49, 12, 57, 6, 118, 50, 13, 71, 114, 0, 0, 8, 3, 224, 164, 172, 71, 13, 0, 12, 3, 95, 57, 48,
+			50, 6, 109, 71, 12, 114, 0, 0, 10, 3, 224, 164, 175, 57, 13, 0, 72, 8, 8, 3, 224, 164, 175, 57, 13, 0, 15, 3, 95, 57,
+			51, 47, 113, 34, 6, 118, 50, 13, 71, 114, 0, 0, 8, 3, 224, 164, 174, 65, 13, 0, 13, 3, 95, 57, 50, 71, 6, 118, 50, 13,
+			71, 114, 0, 0, 16, 3, 95, 57, 53, 48, 109, 50, 80, 6, 118, 50, 13, 71, 114, 0, 0, 8, 3, 224, 164, 168, 50, 13, 0, 15,
+			3, 95, 57, 52, 80, 120, 34, 6, 118, 65, 13, 71, 114, 0, 0, 8, 3, 224, 164, 171, 136, 13, 0, 16, 3, 95, 57, 55, 89, 109,
+			47, 12, 6, 118, 50, 13, 71, 114, 0, 0, 8, 3, 224, 164, 170, 48, 13, 0, 15, 3, 95, 57, 54, 143, 113, 57, 6, 118, 50, 13,
+			71, 114, 0, 0, 0, 0, 0, 0, 0, 25, 15, 224, 164, 174, 224, 164, 164, 224, 164, 166, 224, 164, 190, 224, 164, 168, 65, 35, 47, 6,
+			72, 118, 50, 0, 0, 0, 0, 0, 0, 0, 32, 21, 224, 164, 176, 224, 164, 149, 224, 165, 141, 224, 164, 164, 224, 164, 166, 224, 164, 190,
+			224, 164, 168, 34, 35, 49, 6, 47, 72, 118, 50, 0, 0, 0, 0, 37, 24, 224, 164, 168, 224, 165, 135, 224, 164, 164, 224, 165, 141, 224,
+			164, 176, 224, 164, 166, 224, 164, 190, 224, 164, 168, 50, 36, 47, 6, 34, 35, 6, 72, 118, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			46, 30, 224, 164, 154, 224, 164, 166, 224, 165, 141, 224, 164, 176, 224, 164, 149, 224, 164, 190, 224, 164, 168, 224, 165, 141, 224, 164, 164, 224,
+			164, 190, 80, 35, 50, 6, 72, 34, 35, 6, 49, 118, 50, 47, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29,
+			18, 224, 164, 170, 224, 164, 164, 224, 165, 128, 224, 164, 166, 224, 165, 135, 224, 164, 181, 48, 35, 47, 37, 6, 72, 36, 84, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 6, 109,
+			34, 109, 71, 0, 0, 13, 4, 95, 48, 77, 53, 145, 6, 109, 34, 109, 71, 0, 0, 11, 4, 95, 48, 77, 50, 55, 6, 118, 145, 0,
+			0, 14, 4, 95, 48, 77, 51, 49, 13, 34, 6, 119, 70, 109, 0, 0, 0, 13, 4, 95, 48, 77, 49, 107, 6, 109, 79, 118, 34, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 164, 185, 224, 165, 136, 224, 164, 130, 72, 0, 0,
+			0, 0, 0, 9, 134, 224, 164, 164, 224, 165, 130, 72, 0, 0, 0, 0, 0, 0, 18, 143, 224, 164, 137, 224, 164, 184, 224, 165, 141, 224,
+			164, 184, 224, 165, 135, 72, 18, 143, 224, 164, 135, 224, 164, 184, 224, 165, 141, 224, 164, 184, 224, 165, 135, 72, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 27, 152, 224, 164, 164, 224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 165, 135, 72,
+			0, 0, 0, 0, 0, 27, 152, 224, 164, 164, 224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 165,
+			128, 72, 0, 0, 0, 0, 0, 0, 12, 137, 224, 164, 185, 224, 165, 130, 224, 164, 129, 72, 0, 12, 137, 224, 164, 165, 224, 165, 128, 224,
+			164, 130, 72, 12, 137, 224, 164, 174, 224, 165, 136, 224, 164, 130, 72, 0, 0, 9, 134, 224, 164, 184, 224, 165, 135, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 134, 224, 164, 164, 224, 164, 149, 72, 0, 0, 0, 18, 143, 224, 164, 133, 224, 164, 151, 224, 164, 176, 224,
+			164, 154, 224, 165, 135, 8, 0, 0, 0, 0, 0, 0, 0, 32, 21, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 164, 190,
+			224, 164, 168, 224, 165, 128, 65, 35, 107, 118, 34, 118, 50, 37, 0, 0, 11, 6, 224, 164, 150, 224, 164, 188, 101, 13, 0, 0, 0, 0,
+			44, 30, 224, 164, 176, 224, 164, 191, 224, 164, 182, 224, 165, 141, 224, 164, 164, 224, 165, 135, 224, 164, 168, 224, 164, 190, 224, 164, 164, 224,
+			165, 135, 34, 37, 89, 6, 47, 36, 6, 50, 118, 47, 36, 0, 0, 0, 0, 47, 30, 224, 165, 159, 224, 165, 129, 224, 164, 152, 224, 165,
+			141, 224, 164, 166, 224, 164, 181, 224, 164, 191, 224, 164, 176, 224, 164, 190, 224, 164, 174, 57, 12, 40, 6, 72, 107, 12, 6, 84, 37, 6,
+			34, 118, 65, 0, 0, 37, 24, 224, 164, 151, 224, 165, 129, 224, 164, 176, 224, 165, 129, 224, 164, 168, 224, 164, 190, 224, 164, 168, 224, 164,
+			149, 81, 40, 34, 40, 6, 50, 118, 50, 35, 49, 0, 0, 0, 0, 29, 18, 224, 164, 156, 224, 165, 159, 224, 164, 174, 224, 164, 190, 224,
+			164, 178, 224, 164, 190, 79, 35, 57, 6, 65, 118, 55, 118, 0, 29, 18, 224, 164, 181, 224, 164, 176, 224, 164, 174, 224, 164, 190, 224, 164,
+			178, 224, 164, 190, 84, 35, 6, 51, 65, 118, 55, 118, 0, 0, 0, 47, 30, 224, 164, 154, 224, 164, 168, 224, 165, 141, 224, 164, 166, 224,
+			165, 141, 224, 164, 176, 224, 164, 182, 224, 165, 135, 224, 164, 150, 224, 164, 176, 80, 35, 50, 6, 72, 34, 35, 6, 91, 36, 49, 107, 35,
+			34, 0, 37, 24, 224, 164, 170, 224, 164, 190, 224, 164, 178, 224, 164, 168, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 164, 190, 48, 118,
+			55, 35, 50, 6, 107, 118, 34, 118, 0, 27, 152, 224, 164, 164, 224, 165, 129, 224, 164, 174, 224, 165, 141, 224, 164, 185, 224, 164, 190, 224,
+			164, 176, 224, 164, 190, 72, 0, 33, 21, 224, 164, 166, 224, 165, 128, 224, 164, 170, 224, 164, 182, 224, 164, 191, 224, 164, 150, 224, 164, 190,
+			72, 113, 48, 6, 91, 37, 49, 107, 35, 0, 0, 54, 36, 224, 164, 170, 224, 165, 141, 224, 164, 176, 224, 164, 152, 224, 164, 190, 224, 164,
+			168, 224, 164, 174, 224, 164, 130, 224, 164, 164, 224, 165, 141, 224, 164, 176, 224, 165, 128, 48, 34, 35, 72, 107, 118, 50, 6, 65, 35, 50,
+			6, 47, 34, 37, 0, 0, 0, 0, 0, 0, 42, 27, 224, 164, 133, 224, 164, 149, 224, 165, 141, 224, 164, 183, 224, 164, 176, 224, 164, 174,
+			224, 164, 190, 224, 164, 178, 224, 164, 190, 35, 49, 6, 89, 107, 35, 34, 6, 65, 118, 55, 118, 0, 0, 9, 134, 224, 164, 170, 224, 164,
+			176, 8, 0, 0, 0, 0, 22, 12, 224, 164, 185, 224, 164, 178, 224, 164, 154, 224, 164, 178, 107, 35, 55, 6, 80, 35, 55, 0, 0, 40,
+			27, 224, 164, 135, 224, 164, 168, 224, 165, 141, 224, 164, 166, 224, 165, 141, 224, 164, 176, 224, 164, 156, 224, 165, 128, 224, 164, 164, 113, 50,
+			6, 72, 34, 35, 6, 79, 113, 47, 0, 0, 0, 29, 18, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 172, 224, 164, 178, 224, 164,
+			191, 65, 35, 107, 118, 71, 35, 55, 37, 0, 0, 37, 24, 224, 164, 149, 224, 165, 129, 224, 164, 178, 224, 164, 166, 224, 165, 135, 224, 164,
+			181, 224, 164, 164, 224, 164, 190, 49, 122, 55, 6, 72, 114, 84, 6, 47, 118, 0, 35, 21, 224, 164, 168, 224, 165, 140, 224, 164, 149, 224,
+			164, 176, 224, 164, 182, 224, 164, 190, 224, 164, 185, 50, 35, 40, 6, 49, 35, 34, 6, 91, 118, 107, 0, 0, 41, 27, 224, 164, 150, 224,
+			165, 129, 224, 164, 182, 224, 164, 149, 224, 164, 191, 224, 164, 184, 224, 165, 141, 224, 164, 174, 224, 164, 164, 49, 107, 122, 91, 49, 37, 6,
+			89, 65, 35, 47, 0, 0, 29, 18, 224, 164, 173, 224, 165, 130, 224, 164, 164, 224, 164, 149, 224, 164, 190, 224, 164, 178, 71, 107, 122, 47,
+			6, 49, 118, 55, 0, 0, 0, 42, 27, 224, 164, 172, 224, 165, 129, 224, 164, 167, 224, 165, 141, 224, 164, 166, 224, 164, 191, 224, 164, 174,
+			224, 164, 164, 224, 164, 191, 71, 40, 72, 6, 72, 107, 37, 6, 65, 35, 47, 37, 0, 0, 0, 0, 0, 25, 15, 224, 164, 184, 224, 165,
+			129, 224, 164, 174, 224, 164, 164, 224, 164, 191, 89, 40, 65, 35, 6, 47, 37, 0, 30, 18, 224, 164, 170, 224, 164, 176, 224, 164, 174, 224,
+			164, 181, 224, 165, 128, 224, 164, 176, 48, 35, 34, 35, 65, 6, 84, 113, 34, 0, 26, 15, 224, 164, 151, 224, 164, 156, 224, 164, 170, 224,
+			164, 164, 224, 164, 191, 81, 35, 79, 6, 48, 35, 47, 37, 0, 0, 0, 29, 18, 224, 164, 174, 224, 164, 164, 224, 164, 166, 224, 164, 190,
+			224, 164, 164, 224, 164, 190, 65, 35, 47, 6, 72, 118, 47, 118, 0, 0, 30, 18, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 170,
+			224, 164, 164, 224, 164, 191, 65, 35, 107, 118, 6, 48, 35, 47, 37, 0, 29, 18, 224, 164, 149, 224, 165, 129, 224, 164, 178, 224, 164, 170,
+			224, 164, 164, 224, 164, 191, 49, 40, 55, 6, 48, 35, 47, 37, 0, 0, 0, 32, 21, 224, 164, 176, 224, 164, 190, 224, 164, 156, 224, 164,
+			174, 224, 164, 190, 224, 164, 164, 224, 164, 190, 51, 118, 79, 6, 65, 118, 47, 118, 0, 34, 21, 224, 164, 184, 224, 165, 129, 224, 164, 150,
+			224, 164, 166, 224, 164, 190, 224, 164, 164, 224, 164, 190, 89, 40, 6, 49, 107, 6, 72, 118, 47, 118, 0, 0, 43, 30, 224, 164, 170, 224,
+			165, 141, 224, 164, 176, 224, 164, 190, 224, 164, 154, 224, 165, 128, 224, 164, 168, 224, 164, 149, 224, 164, 190, 224, 164, 178, 48, 34, 118, 80,
+			113, 50, 6, 49, 118, 55, 0, 32, 21, 224, 164, 184, 224, 165, 135, 224, 164, 168, 224, 164, 190, 224, 164, 170, 224, 164, 164, 224, 164, 191,
+			89, 36, 50, 118, 48, 35, 47, 37, 0, 0, 0, 11, 6, 224, 164, 156, 224, 164, 188, 88, 13, 0, 0, 36, 24, 224, 164, 170, 224, 165,
+			130, 224, 164, 129, 224, 164, 156, 224, 165, 128, 224, 164, 170, 224, 164, 164, 224, 164, 191, 48, 133, 79, 37, 6, 48, 35, 47, 37, 0, 36,
+			24, 224, 164, 170, 224, 165, 141, 224, 164, 176, 224, 164, 156, 224, 164, 190, 224, 164, 170, 224, 164, 164, 224, 164, 191, 48, 34, 35, 79, 118,
+			48, 35, 47, 37, 0, 0, 0, 0, 0, 0, 37, 24, 224, 164, 168, 224, 165, 135, 224, 164, 164, 224, 165, 141, 224, 164, 176, 224, 164, 185,
+			224, 165, 128, 224, 164, 168, 50, 36, 47, 34, 12, 35, 6, 107, 113, 50, 0, 0, 44, 30, 224, 164, 176, 224, 164, 190, 224, 164, 183, 224,
+			165, 141, 224, 164, 159, 224, 165, 141, 224, 164, 176, 224, 164, 170, 224, 164, 164, 224, 164, 191, 34, 118, 91, 47, 34, 35, 6, 48, 35, 47,
+			37, 0, 0, 0, 0, 0, 0, 10, 134, 224, 164, 148, 224, 164, 176, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 16, 140, 224, 164, 172,
+			224, 164, 191, 224, 164, 168, 224, 164, 190, 72, 8, 0, 34, 21, 224, 164, 170, 224, 165, 141, 224, 164, 176, 224, 164, 164, 224, 164, 191, 224,
+			164, 170, 224, 164, 178, 48, 34, 35, 6, 47, 37, 6, 48, 35, 55, 0, 0, 0, 0, 0, 0, 30, 18, 224, 164, 165, 224, 164, 178, 224,
+			164, 184, 224, 165, 135, 224, 164, 168, 224, 164, 190, 47, 107, 35, 55, 6, 89, 36, 50, 118, 0, 0, 0, 0, 0, 0, 9, 134, 224, 164,
+			134, 224, 164, 170, 72, 0, 35, 24, 224, 164, 181, 224, 164, 190, 224, 165, 159, 224, 165, 129, 224, 164, 184, 224, 165, 135, 224, 164, 168, 224,
+			164, 190, 58, 118, 123, 6, 89, 36, 50, 118, 0, 0, 0, 0, 0, 36, 21, 224, 164, 170, 224, 164, 129, 224, 164, 156, 224, 165, 128, 224,
+			164, 149, 224, 164, 176, 224, 164, 169, 48, 35, 50, 6, 79, 37, 6, 49, 35, 34, 35, 50, 0, 0, 30, 18, 224, 164, 168, 224, 165, 128,
+			224, 164, 178, 224, 164, 149, 224, 164, 130, 224, 164, 160, 50, 113, 55, 6, 49, 35, 6, 50, 141, 0, 0, 0, 0, 0, 22, 12, 224, 164,
+			185, 224, 164, 176, 224, 164, 166, 224, 164, 174, 107, 35, 34, 6, 72, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 6, 112, 50, 0, 0, 8, 2, 95, 50, 72, 6, 119, 0, 0, 8, 2, 95, 49, 6, 114,
+			49, 0, 0, 11, 2, 95, 48, 91, 6, 123, 50, 57, 14, 0, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 9, 2, 95, 54, 143,
+			6, 109, 108, 0, 0, 9, 2, 95, 53, 6, 48, 128, 80, 0, 0, 9, 2, 95, 52, 80, 6, 118, 34, 0, 0, 0, 0, 9, 2, 95,
+			57, 50, 6, 135, 0, 103, 8, 2, 95, 57, 50, 6, 120, 0, 0, 8, 2, 95, 56, 6, 118, 141, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 11, 3, 95, 97, 114, 6, 109, 34, 71, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 165, 135, 72, 0, 12, 137, 224, 164, 185,
+			224, 164, 174, 224, 165, 135, 72, 0, 0, 18, 143, 224, 164, 137, 224, 164, 168, 224, 165, 141, 224, 164, 185, 224, 165, 135, 72, 0, 0, 0,
+			0, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 165, 128, 72, 0, 0, 29, 18, 224, 164, 172, 224, 164, 178, 224, 164, 182, 224,
+			164, 190, 224, 164, 178, 224, 165, 128, 84, 35, 55, 6, 91, 118, 55, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 137, 224, 164, 175,
+			224, 164, 166, 224, 164, 191, 72, 8, 0, 41, 27, 224, 164, 173, 224, 164, 190, 224, 164, 151, 224, 165, 141, 224, 165, 159, 224, 164, 182, 224,
+			164, 190, 224, 164, 178, 224, 165, 128, 71, 107, 118, 81, 57, 35, 6, 91, 118, 55, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 164, 185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 165, 135, 72, 0, 0, 0, 0, 0,
+			0, 0, 18, 143, 224, 164, 185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 165, 128, 72, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224,
+			164, 164, 224, 165, 135, 224, 164, 176, 224, 164, 190, 72, 15, 140, 224, 164, 174, 224, 165, 135, 224, 164, 176, 224, 164, 190, 72, 0, 24, 15,
+			224, 164, 184, 224, 164, 190, 224, 164, 175, 224, 164, 172, 224, 164, 176, 89, 6, 134, 71, 13, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 32, 21, 224, 164, 166, 224, 165, 128, 224, 164, 170, 224, 164, 174, 224, 164, 190, 224, 164, 178, 224, 164, 190, 72, 113, 48,
+			6, 65, 118, 55, 118, 0, 0, 0, 0, 0, 0, 0, 34, 21, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 173, 224, 164, 190, 224,
+			164, 176, 224, 164, 164, 65, 35, 107, 118, 71, 107, 118, 34, 35, 47, 0, 0, 0, 0, 0, 0, 0, 31, 21, 224, 164, 184, 224, 165, 128,
+			224, 164, 164, 224, 164, 190, 224, 164, 176, 224, 164, 190, 224, 164, 174, 89, 113, 47, 118, 34, 118, 65, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 40, 24, 224, 164, 133, 224, 164, 164, 224, 165, 141, 224, 164, 174, 224, 164, 174, 224, 164, 130, 224, 164, 165, 224, 164, 168, 35, 47,
+			65, 6, 35, 65, 35, 50, 6, 47, 107, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 122, 104, 80, 6, 37, 13, 50, 37,
+			0, 0, 0, 0, 28, 18, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 176, 224, 164, 190, 224, 164, 156, 65, 35, 107, 118, 34, 118,
+			79, 0, 0, 0, 36, 24, 224, 164, 174, 224, 164, 166, 224, 165, 128, 224, 164, 176, 224, 164, 190, 224, 164, 170, 224, 164, 190, 224, 164, 168,
+			65, 35, 72, 37, 34, 118, 48, 118, 50, 0, 0, 0, 0, 0, 45, 30, 224, 164, 174, 224, 164, 185, 224, 164, 190, 224, 164, 184, 224, 164,
+			130, 224, 164, 151, 224, 165, 141, 224, 164, 176, 224, 164, 190, 224, 164, 174, 65, 35, 107, 118, 89, 35, 50, 6, 81, 34, 118, 65, 0, 0,
+			18, 143, 224, 164, 185, 224, 164, 174, 224, 164, 190, 224, 164, 176, 224, 164, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 102, 9,
+			0, 0, 48, 0, 0, 0, 103, 9, 0, 0, 49, 0, 0, 0, 104, 9, 0, 0, 50, 0, 0, 0, 105, 9, 0, 0, 51, 0, 0, 0,
+			106, 9, 0, 0, 52, 0, 0, 0, 107, 9, 0, 0, 53, 0, 0, 0, 108, 9, 0, 0, 54, 0, 0, 0, 109, 9, 0, 0, 55, 0,
+			0, 0, 110, 9, 0, 0, 56, 0, 0, 0, 111, 9, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 2, 0, 3, 50, 0, 7,
+			6, 1, 3, 0, 3, 50, 0, 4, 2, 224, 164, 170, 3, 65, 0, 2, 224, 164, 171, 0, 2, 224, 164, 172, 0, 2, 224, 164, 173, 0,
+			2, 224, 164, 174, 0, 4, 2, 224, 164, 159, 3, 66, 0, 2, 224, 164, 160, 0, 2, 224, 164, 161, 0, 2, 224, 164, 162, 0, 2, 224,
+			164, 163, 0, 4, 2, 224, 164, 154, 3, 67, 0, 2, 224, 164, 155, 0, 2, 224, 164, 156, 0, 2, 224, 164, 157, 0, 2, 224, 164, 158,
+			0, 2, 224, 164, 175, 0, 4, 2, 224, 164, 149, 3, 68, 0, 2, 224, 164, 150, 0, 2, 224, 164, 151, 0, 2, 224, 164, 152, 0, 2,
+			224, 164, 153, 0, 7, 6, 1, 4, 0, 3, 108, 0, 7, 6, 1, 6, 0, 3, 109, 0, 4, 1, 185, 164, 224, 133, 164, 224, 3, 116,
+			0, 2, 224, 164, 185, 0, 7, 6, 1, 7, 0, 3, 118, 0, 224, 164, 130, 3, 128, 0, 7, 6, 1, 8, 0, 3, 113, 0, 224, 164,
+			130, 3, 124, 0, 7, 6, 1, 9, 0, 2, 32, 3, 37, 0, 3, 112, 0, 7, 6, 1, 10, 0, 3, 122, 0, 7, 6, 1, 11, 0,
+			3, 40, 0, 4, 224, 164, 129, 2, 32, 3, 133, 0, 224, 164, 130, 0, 7, 6, 1, 12, 0, 3, 34, 113, 0, 7, 6, 1, 13, 0,
+			3, 45, 0, 7, 6, 1, 14, 0, 3, 116, 0, 7, 6, 1, 15, 0, 3, 36, 0, 4, 224, 164, 129, 2, 32, 3, 126, 0, 224, 164,
+			130, 0, 7, 6, 1, 16, 0, 224, 164, 129, 1, 190, 164, 224, 2, 32, 3, 57, 0, 3, 114, 0, 4, 224, 164, 129, 3, 126, 12, 0,
+			224, 164, 130, 0, 7, 6, 1, 17, 0, 3, 115, 0, 4, 224, 164, 129, 2, 32, 3, 127, 0, 224, 164, 130, 0, 5, 2, 3, 134, 0,
+			7, 6, 1, 18, 0, 3, 121, 0, 7, 6, 1, 19, 0, 3, 39, 0, 4, 224, 164, 129, 2, 32, 3, 131, 0, 224, 164, 130, 0, 7,
+			6, 1, 20, 0, 4, 224, 164, 129, 1, 190, 164, 224, 2, 32, 3, 58, 0, 224, 164, 130, 1, 190, 164, 224, 2, 32, 0, 3, 119, 0,
+			4, 224, 164, 129, 2, 32, 3, 131, 0, 224, 164, 130, 0, 7, 6, 1, 21, 0, 3, 120, 0, 4, 224, 164, 129, 2, 32, 3, 130, 0,
+			224, 164, 130, 0, 5, 3, 3, 135, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 4, 2, 224, 165, 141, 224, 164, 175, 3, 49,
+			12, 0, 224, 165, 141, 224, 164, 149, 2, 17, 66, 0, 224, 165, 141, 224, 164, 149, 3, 49, 12, 109, 0, 224, 165, 141, 224, 164, 183, 2,
+			17, 66, 3, 49, 91, 0, 224, 165, 141, 224, 164, 183, 3, 49, 91, 109, 0, 3, 49, 109, 0, 224, 164, 188, 2, 17, 66, 3, 104, 0,
+			224, 164, 188, 3, 104, 109, 0, 7, 6, 1, 23, 0, 224, 164, 188, 2, 17, 66, 3, 101, 0, 224, 164, 188, 3, 101, 109, 0, 2, 17,
+			66, 3, 145, 0, 3, 145, 109, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 109, 0, 224, 164, 188, 2, 17, 66, 3,
+			100, 0, 224, 164, 188, 3, 100, 109, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 109, 0, 7, 6, 1, 26, 0, 2,
+			17, 66, 3, 68, 0, 1, 141, 165, 224, 2, 32, 3, 68, 13, 0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0,
+			2, 224, 165, 141, 224, 164, 175, 3, 80, 12, 0, 3, 80, 109, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 143, 0, 3, 143, 109, 0,
+			7, 6, 1, 29, 0, 2, 17, 66, 3, 79, 0, 3, 79, 109, 0, 224, 165, 141, 224, 164, 158, 2, 17, 66, 3, 81, 57, 0, 224, 165,
+			141, 224, 164, 158, 3, 81, 57, 109, 0, 224, 164, 188, 2, 17, 66, 3, 88, 0, 224, 164, 188, 3, 88, 109, 0, 7, 6, 1, 30, 0,
+			2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 67, 0, 1, 141, 165, 224, 2, 32, 3, 67, 13,
+			0, 3, 67, 109, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 4, 2, 224, 165, 141, 224, 164, 175, 3, 139, 12, 0, 224, 165,
+			141, 224, 164, 159, 2, 17, 66, 0, 224, 165, 141, 224, 164, 159, 3, 139, 12, 109, 0, 3, 139, 109, 0, 224, 165, 141, 224, 164, 160, 2,
+			17, 66, 3, 141, 12, 0, 224, 165, 141, 224, 164, 160, 3, 141, 12, 109, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 141, 0, 224, 165,
+			141, 224, 164, 160, 2, 17, 66, 3, 141, 12, 0, 224, 165, 141, 224, 164, 160, 3, 141, 12, 109, 0, 3, 141, 109, 0, 7, 6, 1, 34,
+			0, 224, 164, 188, 2, 17, 66, 3, 70, 0, 224, 164, 188, 3, 70, 109, 0, 2, 17, 66, 3, 140, 0, 3, 140, 109, 0, 7, 6, 1,
+			35, 0, 224, 164, 188, 2, 17, 66, 3, 70, 107, 0, 224, 164, 188, 3, 70, 107, 109, 0, 2, 17, 66, 3, 142, 0, 3, 142, 109, 0,
+			7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 1, 141, 165, 224, 2, 32, 3, 66, 13, 0, 3, 66, 109, 0, 7, 6, 1, 37, 0,
+			2, 17, 66, 3, 47, 0, 4, 2, 224, 165, 141, 224, 164, 175, 3, 47, 12, 0, 224, 165, 141, 224, 164, 164, 2, 17, 66, 0, 224, 165,
+			141, 224, 164, 164, 3, 47, 12, 109, 0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 109, 0, 7, 6,
+			1, 39, 0, 2, 17, 66, 3, 72, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 109, 0, 7, 6,
+			1, 41, 0, 4, 1, 141, 165, 224, 176, 164, 224, 2, 32, 3, 50, 0, 2, 17, 66, 0, 1, 141, 165, 224, 2, 32, 3, 50, 13, 0,
+			3, 50, 109, 0, 7, 6, 1, 42, 0, 3, 50, 12, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 4, 2, 224, 165, 141, 224,
+			164, 175, 3, 48, 12, 0, 224, 165, 141, 224, 164, 170, 2, 17, 66, 0, 224, 165, 141, 224, 164, 170, 3, 48, 12, 109, 0, 3, 48, 109,
+			0, 7, 6, 1, 44, 0, 224, 164, 188, 2, 17, 66, 3, 83, 0, 224, 164, 188, 3, 83, 109, 0, 2, 17, 66, 3, 136, 0, 3, 136,
+			109, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137,
+			109, 0, 7, 6, 1, 47, 0, 4, 1, 141, 165, 224, 168, 164, 224, 2, 32, 3, 65, 0, 1, 141, 165, 224, 176, 164, 224, 2, 32, 0,
+			2, 17, 66, 0, 1, 141, 165, 224, 2, 32, 3, 65, 13, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0, 1,
+			141, 165, 224, 2, 32, 3, 57, 13, 0, 3, 57, 109, 0, 1, 17, 67, 2, 32, 3, 116, 57, 0, 7, 6, 1, 49, 0, 4, 2, 17,
+			66, 3, 34, 0, 2, 32, 0, 1, 141, 165, 224, 2, 32, 3, 34, 13, 0, 3, 34, 109, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3,
+			34, 0, 1, 141, 165, 224, 2, 32, 3, 34, 13, 0, 3, 34, 109, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 1, 141, 165,
+			224, 2, 32, 3, 55, 13, 0, 3, 55, 109, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62,
+			13, 0, 3, 62, 109, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109,
+			0, 7, 6, 1, 54, 0, 4, 2, 32, 3, 58, 0, 8, 2, 17, 66, 0, 1, 141, 165, 224, 2, 32, 3, 58, 13, 0, 8, 3, 58,
+			109, 0, 4, 2, 17, 66, 3, 84, 0, 8, 2, 224, 165, 141, 0, 3, 84, 109, 0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 91, 0,
+			3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 109, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0,
+			3, 89, 109, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 108, 0, 3, 108, 109, 0, 7, 6, 1, 62, 0, 3, 12, 0, 7, 6, 1,
+			63, 0, 3, 118, 0, 4, 2, 224, 164, 129, 3, 128, 0, 224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 224, 164, 181, 3, 135, 0, 7,
+			6, 1, 64, 0, 3, 113, 0, 224, 164, 130, 3, 124, 0, 7, 6, 1, 65, 0, 2, 32, 3, 37, 0, 3, 112, 0, 4, 2, 224, 164,
+			129, 3, 124, 0, 224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 7, 6, 1, 66, 0, 3, 122, 0, 4, 2, 224, 164, 129, 3, 133, 0,
+			224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 7, 6, 1, 67, 0, 3, 123, 0, 4, 2, 224, 164, 129, 3, 133, 0, 224, 164, 129, 2,
+			32, 0, 224, 164, 130, 0, 7, 6, 1, 68, 0, 3, 34, 113, 0, 7, 6, 1, 69, 0, 3, 34, 113, 0, 7, 6, 1, 70, 0, 3,
+			116, 0, 7, 6, 1, 71, 0, 3, 36, 0, 4, 2, 224, 164, 129, 3, 126, 0, 224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 7, 6,
+			1, 72, 0, 3, 114, 0, 2, 224, 164, 129, 3, 126, 0, 4, 224, 164, 129, 2, 32, 3, 126, 12, 0, 224, 164, 130, 0, 7, 6, 1,
+			73, 0, 3, 115, 0, 4, 2, 224, 164, 129, 3, 127, 0, 224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 224, 164, 130, 0, 5, 2, 3,
+			134, 0, 7, 6, 1, 74, 0, 3, 121, 0, 7, 6, 1, 75, 0, 3, 39, 0, 4, 2, 224, 164, 129, 3, 131, 0, 224, 164, 129, 2,
+			32, 0, 224, 164, 130, 0, 7, 6, 1, 76, 0, 3, 119, 0, 4, 2, 224, 164, 129, 3, 131, 0, 224, 164, 129, 2, 32, 0, 224, 164,
+			130, 0, 7, 6, 1, 77, 0, 3, 120, 0, 4, 2, 224, 164, 129, 3, 130, 0, 224, 164, 129, 2, 32, 0, 224, 164, 130, 0, 5, 3,
+			3, 135, 0, 7, 6, 1, 78, 0, 3, 0, 7, 6, 1, 81, 0, 3, 131, 65, 0, 7, 6, 1, 89, 0, 2, 17, 66, 3, 104, 0,
+			3, 104, 109, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 101, 0, 3, 101, 109, 0, 7, 6, 1, 91, 0, 2, 17, 66, 3, 100, 0,
+			3, 100, 109, 0, 7, 6, 1, 92, 0, 2, 17, 66, 3, 88, 0, 3, 88, 109, 0, 7, 6, 1, 93, 0, 2, 17, 66, 3, 70, 0,
+			3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 70, 107, 0, 3, 70, 107, 109, 0, 7, 6, 1, 95, 0, 2, 17, 66, 3,
+			83, 0, 3, 83, 109, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 7, 6, 1, 97, 0, 3, 109, 20, 34,
+			34, 0, 7, 6, 1, 98, 0, 3, 45, 12, 0, 7, 6, 1, 99, 0, 3, 45, 0, 7, 6, 1, 100, 0, 3, 45, 12, 0, 7, 6,
+			111, 0, 3, 21, 0, 102, 1, 32, 32, 15, 2, 32, 32, 15, 194, 160, 194, 160, 194, 160, 3, 65, 36, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts27 = FileInMemory_createWithData (8606, reinterpret_cast<const char *> (&espeakdata_dicts27_data), 
+			U"espeak-1.48.04-source/espeak-data/hi_dict", 
 			U"hi");
-		Collection_addItem (me.peek(), espeakdata_dicts23.transfer());
-
-		static unsigned char espeakdata_dicts24_data[2417] = {
-			0, 4, 0, 0, 93, 8, 0, 0, 0, 0, 0, 0, 0, 7, 65, 4, 35, 0, 15, 14, 4, 193, 4, 72, 4, 193, 4, 72, 0, 5,
-			194, 5, 0, 72, 0, 0, 0, 6, 65, 8, 71, 37, 0, 0, 0, 0, 0, 6, 65, 12, 89, 37, 0, 0, 0, 0, 0, 6, 65, 16,
-			72, 37, 0, 0, 0, 0, 0, 5, 65, 20, 36, 0, 0, 5, 194, 100, 240, 72, 0, 0, 0, 6, 65, 24, 112, 83, 0, 0, 0, 0,
-			0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 6, 65, 32, 35, 91, 0, 0, 0, 0, 9, 1, 35, 35, 91, 35, 57, 0, 27, 0,
-			5, 65, 36, 37, 0, 0, 9, 1, 37, 48, 40, 89, 113, 0, 27, 0, 0, 0, 6, 65, 40, 90, 37, 0, 0, 0, 12, 1, 42, 35,
-			89, 47, 36, 34, 37, 89, 0, 27, 0, 9, 1, 43, 48, 55, 37, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 9, 1,
-			47, 89, 55, 35, 91, 0, 27, 0, 7, 65, 48, 36, 55, 0, 14, 0, 0, 0, 0, 7, 65, 52, 36, 65, 0, 14, 0, 0, 0, 0,
-			7, 65, 56, 36, 50, 0, 14, 0, 0, 0, 0, 5, 65, 60, 39, 0, 0, 9, 1, 61, 36, 81, 35, 55, 0, 27, 0, 0, 0, 6,
-			65, 64, 48, 37, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 40, 0, 0, 0, 0, 0, 7, 65, 72, 35, 34, 35, 0, 0, 0, 0,
-			0, 6, 65, 76, 112, 89, 0, 0, 0, 0, 0, 7, 65, 80, 47, 35, 0, 14, 12, 65, 80, 47, 35, 48, 0, 72, 81, 97, 112, 32,
-			0, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88, 84, 35, 0, 0, 0, 0, 0, 11, 65, 92, 72, 40, 71, 84,
-			6, 35, 0, 14, 12, 1, 92, 113, 47, 37, 89, 55, 35, 91, 0, 27, 0, 0, 0, 0, 10, 4, 95, 49, 77, 49, 65, 37, 55, 0,
-			0, 0, 0, 0, 13, 65, 100, 37, 48, 89, 37, 55, 6, 39, 50, 0, 14, 0, 0, 0, 0, 7, 65, 104, 88, 36, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 176, 72, 28, 0, 0, 0, 0, 0, 0, 11, 4, 95, 4, 16,
-			20, 10, 48, 58, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 4, 224, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 19, 128, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 53, 113, 78,
-			72, 0, 0, 6, 195, 100, 243, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 57, 47, 34, 113, 47, 50, 112, 83,
-			0, 12, 3, 95, 50, 49, 84, 114, 47, 36, 38, 114, 0, 0, 13, 3, 95, 51, 56, 47, 34, 113, 47, 111, 37, 47, 0, 8, 3, 95,
-			50, 48, 84, 114, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 49, 47, 34, 113, 47, 36, 38, 114, 0, 0, 10, 3, 95, 51,
-			48, 47, 34, 113, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
-			3, 95, 54, 49, 89, 58, 35, 89, 113, 47, 36, 38, 114, 0, 0, 12, 3, 95, 54, 48, 89, 58, 35, 89, 113, 47, 0, 10, 3, 95,
-			51, 88, 47, 34, 113, 50, 0, 0, 8, 3, 95, 48, 67, 89, 113, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 55, 49, 89, 58, 35,
-			89, 113, 47, 36, 38, 116, 88, 0, 0, 15, 3, 95, 55, 48, 89, 58, 35, 89, 113, 47, 72, 37, 89, 0, 0, 0, 0, 0, 6, 195,
-			65, 32, 76, 72, 0, 0, 0, 5, 194, 48, 16, 72, 12, 3, 95, 49, 57, 72, 37, 88, 50, 112, 83, 0, 0, 12, 3, 95, 49, 56,
-			72, 37, 88, 111, 37, 47, 0, 0, 0, 0, 0, 7, 195, 21, 2, 64, 72, 8, 0, 0, 0, 12, 3, 95, 50, 57, 84, 114, 47, 50,
-			112, 83, 0, 8, 3, 95, 49, 49, 116, 88, 0, 0, 12, 3, 95, 50, 56, 84, 114, 47, 111, 37, 47, 0, 9, 3, 95, 49, 48, 72,
-			37, 89, 0, 0, 10, 3, 95, 49, 51, 47, 34, 112, 88, 0, 0, 9, 3, 95, 49, 50, 72, 40, 88, 0, 0, 9, 3, 95, 49, 53,
-			49, 114, 88, 0, 0, 11, 3, 95, 49, 52, 49, 35, 47, 127, 88, 0, 0, 11, 3, 95, 49, 55, 72, 37, 89, 112, 47, 0, 0, 9,
-			3, 95, 49, 54, 89, 112, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 52, 57, 49, 35, 34, 113, 47, 50, 112, 83,
-			0, 0, 14, 3, 95, 52, 56, 49, 35, 34, 113, 47, 111, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 53, 57, 89, 114,
-			49, 113, 47, 50, 112, 83, 0, 14, 3, 95, 52, 49, 49, 35, 34, 113, 47, 36, 38, 114, 0, 0, 14, 3, 95, 53, 56, 89, 114, 49,
-			113, 47, 111, 37, 47, 0, 11, 3, 95, 52, 48, 49, 35, 34, 113, 47, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 53, 49, 89,
-			114, 49, 113, 47, 36, 38, 114, 0, 0, 11, 3, 95, 53, 48, 89, 114, 49, 113, 47, 0, 9, 3, 95, 50, 88, 84, 114, 50, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 52, 88, 49, 35, 34, 113, 50, 0, 0, 0, 0, 0,
-			0, 0, 0, 15, 3, 95, 56, 49, 49, 35, 47, 34, 36, 84, 114, 47, 114, 0, 0, 11, 3, 95, 53, 88, 89, 114, 49, 113, 50, 0,
-			0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 57, 49, 49, 35, 47, 34, 36, 84, 114, 47, 116, 88, 0, 0, 12, 3, 95, 54, 88, 89,
-			58, 35, 89, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 49, 35, 47,
-			34, 36, 84, 114, 0, 0, 0, 0, 0, 6, 195, 56, 245, 64, 72, 0, 0, 0, 5, 194, 44, 144, 72, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 144,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 52, 71, 37, 55, 57, 39, 50, 0, 0, 0, 13, 4, 95, 48,
-			77, 50, 65, 37, 55, 57, 39, 50, 0, 0, 12, 4, 95, 48, 77, 51, 65, 37, 55, 57, 35, 0, 0, 0, 10, 4, 95, 48, 77, 49,
-			65, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-			194, 61, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			5, 194, 76, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 16, 72, 0, 0, 0, 0, 6, 195, 80, 20, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 80, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 60, 224, 72, 0, 0, 0, 0, 11, 2, 195, 168, 36, 81, 34, 6, 35, 84,
-			0, 0, 0, 0, 0, 0, 0, 11, 2, 195, 178, 39, 81, 34, 6, 35, 84, 0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 80, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 95, 14,
-			36, 50, 0, 0, 7, 2, 95, 13, 36, 65, 0, 0, 7, 2, 95, 12, 36, 55, 0, 0, 0, 0, 0, 0, 11, 2, 95, 23, 72, 40,
-			71, 84, 6, 35, 0, 0, 0, 0, 7, 2, 95, 20, 47, 35, 0, 0, 0, 0, 13, 2, 95, 25, 37, 48, 89, 37, 55, 6, 39, 50,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 147, 128, 72, 0, 0, 0, 0, 6, 195, 56, 19, 128, 72, 0, 0, 0,
-			0, 0, 8, 2, 95, 46, 48, 58, 114, 0, 0, 0, 10, 2, 95, 44, 84, 37, 81, 37, 55, 0, 0, 8, 2, 95, 51, 47, 58, 35,
-			0, 0, 7, 2, 95, 50, 72, 36, 0, 0, 6, 2, 95, 49, 114, 0, 0, 9, 2, 95, 48, 88, 36, 58, 39, 0, 0, 8, 2, 95,
-			55, 89, 112, 47, 0, 0, 8, 2, 95, 54, 89, 37, 89, 0, 0, 8, 2, 95, 53, 89, 114, 49, 0, 0, 8, 2, 95, 52, 49, 35,
-			47, 0, 0, 13, 2, 95, 59, 48, 58, 114, 84, 37, 81, 37, 55, 0, 0, 0, 8, 2, 95, 57, 50, 112, 83, 0, 0, 8, 2, 95,
-			56, 111, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 11, 195, 168, 11, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 64, 245, 64, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 160, 0, 3, 35, 0, 7, 6, 195, 168, 0, 3, 112, 0, 7, 6, 195, 178,
-			0, 3, 127, 0, 7, 6, 97, 0, 3, 35, 0, 110, 2, 25, 3, 113, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49,
-			0, 2, 17, 71, 3, 89, 0, 104, 3, 91, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 36, 0, 110, 2, 25, 3, 114,
-			0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 3, 0, 7, 6, 105, 0, 3, 37, 0, 7, 6,
-			106, 0, 3, 90, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0,
-			3, 50, 0, 103, 3, 68, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 40, 0, 110, 2, 25, 3, 116, 0, 7, 6, 112, 0, 3, 48,
-			0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0, 3, 34, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 99,
-			104, 3, 76, 0, 7, 6, 117, 0, 3, 40, 0, 105, 3, 111, 37, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0,
-			7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7,
-			6, 0, 36, 3, 72, 39, 55, 35, 0, 195, 167, 3, 89, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts24 = FileInMemory_createWithData (2416, reinterpret_cast<const char *> (&espeakdata_dicts24_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ht_dict", 
-			U"ht");
-		Collection_addItem (me.peek(), espeakdata_dicts24.transfer());
+		my addItem_move (espeakdata_dicts27.move());
 
-		static unsigned char espeakdata_dicts25_data[112826] = {
-			0, 4, 0, 0, 190, 85, 1, 0, 13, 138, 11, 15, 18, 8, 1, 20, 195, 161, 18, 1, 13, 0, 9, 198, 80, 84, 150, 20, 177, 84,
-			13, 12, 137, 11, 9, 12, 195, 161, 20, 195, 161, 19, 13, 7, 132, 19, 195, 161, 22, 13, 0, 50, 12, 14, 5, 8, 195, 169, 26, 19,
-			195, 169, 7, 2, 5, 50, 109, 107, 113, 91, 12, 113, 81, 71, 109, 10, 6, 15, 111, 47, 49, 110, 88, 110, 47, 12, 0, 13, 81, 195,
-			188, 116, 107, 195, 182, 122, 195, 182, 116, 116, 32, 10, 135, 13, 1, 16, 16, 195, 161, 20, 13, 15, 140, 21, 20, 1, 19, 195, 173, 20,
-			195, 161, 19, 2, 1, 13, 0, 7, 196, 5, 166, 129, 48, 13, 7, 196, 21, 166, 133, 48, 13, 16, 141, 19, 26, 195, 161, 13, 12, 195,
-			161, 10, 195, 161, 18, 1, 13, 10, 135, 16, 195, 161, 18, 195, 161, 19, 13, 11, 136, 12, 195, 161, 14, 25, 195, 161, 20, 13, 11, 136,
-			4, 18, 195, 161, 22, 195, 161, 20, 13, 15, 140, 2, 197, 177, 14, 5, 19, 5, 20, 18, 197, 145, 12, 13, 19, 144, 11, 195, 182, 26,
-			12, 5, 11, 5, 4, 195, 169, 19, 2, 197, 145, 12, 13, 7, 196, 20, 118, 69, 80, 13, 12, 137, 18, 195, 161, 10, 195, 182, 14, 14,
-			9, 13, 11, 136, 19, 195, 186, 12, 25, 195, 161, 20, 13, 7, 196, 5, 166, 129, 48, 13, 8, 133, 195, 169, 18, 14, 9, 13, 0, 49,
-			14, 11, 1, 16, 3, 19, 15, 12, 195, 179, 4, 195, 161, 19, 9, 49, 108, 48, 76, 39, 55, 115, 72, 114, 91, 37, 23, 48, 52, 39,
-			71, 55, 113, 65, 108, 0, 13, 81, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 7, 196, 21, 54, 137, 44, 13, 15, 140, 11, 15, 18,
-			12, 195, 161, 20, 15, 26, 195, 161, 19, 13, 12, 137, 1, 18, 195, 161, 14, 25, 195, 161, 20, 13, 0, 7, 65, 4, 108, 12, 0, 14,
-			26, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 47, 0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 116, 32, 29, 65, 4, 108,
-			6, 15, 48, 108, 50, 108, 89, 39, 49, 108, 47, 0, 13, 81, 112, 97, 110, 97, 115, 122, 111, 107, 97, 116, 32, 26, 65, 4, 108, 6,
-			15, 72, 110, 50, 47, 113, 91, 47, 0, 13, 81, 100, 195, 182, 110, 116, 195, 169, 115, 116, 32, 25, 65, 4, 108, 6, 15, 65, 108, 79,
-			108, 52, 39, 49, 0, 13, 81, 109, 97, 103, 121, 97, 114, 111, 107, 32, 27, 65, 4, 108, 6, 15, 107, 109, 57, 88, 109, 47, 109, 47,
-			0, 13, 81, 104, 101, 108, 121, 122, 101, 116, 101, 116, 32, 21, 65, 4, 108, 6, 15, 49, 108, 57, 114, 47, 0, 13, 81, 107, 97, 106,
-			195, 161, 116, 32, 16, 65, 4, 108, 6, 15, 71, 108, 57, 0, 13, 81, 98, 97, 106, 32, 30, 65, 4, 108, 6, 15, 47, 111, 50, 47,
-			109, 47, 113, 91, 47, 0, 13, 81, 116, 195, 188, 110, 116, 101, 116, 195, 169, 115, 116, 32, 30, 65, 4, 108, 6, 15, 49, 109, 72, 113,
-			57, 109, 49, 109, 47, 0, 13, 81, 107, 101, 100, 195, 169, 108, 121, 101, 107, 101, 116, 32, 22, 65, 4, 108, 6, 15, 89, 39, 49, 114,
-			91, 0, 13, 81, 115, 122, 111, 107, 195, 161, 115, 32, 25, 65, 4, 108, 6, 15, 84, 37, 55, 114, 81, 39, 50, 0, 13, 81, 118, 105,
-			108, 195, 161, 103, 111, 110, 32, 29, 65, 4, 108, 6, 15, 49, 40, 47, 108, 47, 115, 49, 108, 47, 0, 13, 81, 107, 117, 116, 97, 116,
-			195, 179, 107, 97, 116, 32, 28, 65, 4, 108, 6, 15, 71, 37, 88, 39, 76, 12, 114, 81, 0, 13, 81, 98, 105, 122, 111, 116, 116, 115,
-			195, 161, 103, 32, 26, 65, 4, 108, 6, 15, 83, 109, 55, 108, 72, 108, 47, 108, 0, 13, 81, 102, 101, 108, 97, 100, 97, 116, 97, 32,
-			35, 65, 4, 108, 6, 15, 65, 115, 72, 39, 91, 112, 47, 114, 91, 39, 49, 0, 13, 81, 109, 195, 179, 100, 111, 115, 195, 173, 116, 195,
-			161, 115, 111, 107, 32, 25, 65, 4, 108, 6, 15, 83, 109, 55, 111, 55, 109, 47, 0, 13, 81, 102, 101, 108, 195, 188, 108, 101, 116, 32,
-			28, 65, 4, 108, 6, 15, 47, 108, 71, 55, 109, 47, 107, 109, 88, 0, 13, 81, 116, 97, 98, 108, 101, 116, 104, 101, 122, 32, 23, 65,
-			4, 108, 6, 15, 89, 37, 50, 47, 109, 47, 0, 13, 81, 115, 122, 105, 110, 116, 101, 116, 32, 28, 65, 4, 108, 6, 15, 49, 113, 89,
-			111, 55, 113, 49, 0, 13, 81, 107, 195, 169, 115, 122, 195, 188, 108, 195, 169, 107, 32, 22, 65, 4, 108, 6, 15, 65, 39, 71, 37, 55,
-			47, 0, 13, 81, 109, 111, 98, 105, 108, 116, 32, 24, 65, 4, 108, 6, 15, 47, 109, 55, 109, 83, 39, 50, 0, 13, 81, 116, 101, 108,
-			101, 102, 111, 110, 32, 24, 65, 4, 108, 6, 15, 49, 113, 88, 71, 118, 55, 0, 13, 81, 107, 195, 169, 122, 98, 197, 145, 108, 32, 17,
-			65, 4, 108, 6, 15, 91, 114, 52, 0, 13, 81, 115, 195, 161, 114, 32, 22, 65, 4, 108, 6, 15, 107, 39, 50, 55, 108, 48, 0, 13,
-			81, 104, 111, 110, 108, 97, 112, 32, 40, 65, 4, 108, 6, 15, 48, 52, 109, 88, 109, 50, 47, 114, 55, 114, 91, 50, 108, 49, 0, 13,
-			81, 112, 114, 101, 122, 101, 110, 116, 195, 161, 108, 195, 161, 115, 110, 97, 107, 32, 24, 65, 4, 108, 6, 15, 83, 109, 55, 108, 72, 108,
-			47, 0, 13, 81, 102, 101, 108, 97, 100, 97, 116, 32, 27, 65, 4, 108, 6, 15, 89, 109, 34, 84, 109, 88, 109, 47, 0, 13, 81, 115,
-			122, 101, 114, 118, 101, 122, 101, 116, 32, 26, 65, 4, 108, 6, 15, 107, 108, 47, 115, 91, 114, 81, 0, 13, 81, 104, 97, 116, 195, 179,
-			115, 195, 161, 103, 32, 26, 65, 4, 108, 6, 15, 49, 110, 55, 47, 118, 52, 109, 0, 13, 81, 107, 195, 182, 108, 116, 197, 145, 114, 101,
-			32, 22, 65, 4, 108, 6, 15, 47, 37, 47, 49, 39, 47, 0, 13, 81, 116, 105, 116, 107, 111, 116, 32, 24, 65, 4, 108, 6, 15, 84,
-			114, 55, 108, 89, 47, 0, 13, 81, 118, 195, 161, 108, 97, 115, 122, 116, 32, 24, 65, 4, 108, 6, 15, 81, 113, 48, 113, 52, 109, 0,
-			13, 81, 103, 195, 169, 112, 195, 169, 114, 101, 32, 39, 65, 4, 108, 6, 15, 55, 109, 81, 83, 39, 50, 47, 39, 91, 108, 71, 50, 108,
-			49, 0, 13, 81, 108, 101, 103, 102, 111, 110, 116, 111, 115, 97, 98, 98, 110, 97, 107, 32, 41, 65, 4, 108, 6, 15, 49, 37, 57, 109,
-			55, 109, 50, 47, 113, 91, 109, 72, 12, 109, 55, 0, 13, 81, 107, 105, 106, 101, 108, 101, 110, 116, 195, 169, 115, 101, 100, 100, 101, 108,
-			32, 32, 65, 4, 108, 6, 15, 49, 113, 48, 84, 37, 91, 109, 55, 118, 49, 0, 13, 81, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197,
-			145, 107, 32, 31, 65, 4, 108, 6, 15, 49, 109, 52, 111, 55, 109, 47, 71, 109, 50, 0, 13, 81, 107, 101, 114, 195, 188, 108, 101, 116,
-			98, 101, 110, 32, 28, 65, 4, 108, 6, 15, 52, 109, 50, 119, 109, 52, 71, 109, 0, 13, 81, 114, 101, 110, 100, 115, 122, 101, 114, 98,
-			101, 32, 29, 65, 4, 108, 6, 15, 52, 109, 50, 119, 109, 52, 113, 47, 0, 13, 81, 114, 101, 110, 100, 115, 122, 101, 114, 195, 169, 116,
-			32, 26, 65, 4, 108, 6, 15, 72, 39, 55, 81, 39, 49, 108, 47, 0, 13, 81, 100, 111, 108, 103, 111, 107, 97, 116, 32, 42, 65, 4,
-			108, 6, 15, 107, 39, 88, 88, 114, 89, 115, 55, 114, 91, 39, 49, 108, 47, 0, 13, 81, 104, 111, 122, 122, 195, 161, 115, 122, 195, 179,
-			108, 195, 161, 115, 111, 107, 97, 116, 32, 23, 65, 4, 108, 6, 15, 50, 113, 48, 50, 109, 49, 0, 13, 81, 110, 195, 169, 112, 110, 101,
-			107, 32, 28, 65, 4, 108, 6, 15, 83, 109, 55, 114, 55, 12, 114, 91, 0, 13, 81, 102, 101, 108, 195, 161, 108, 108, 195, 161, 115, 32,
-			31, 65, 4, 108, 6, 15, 84, 113, 55, 109, 65, 113, 67, 109, 65, 0, 13, 81, 118, 195, 169, 108, 101, 109, 195, 169, 110, 121, 101, 109,
-			32, 27, 65, 4, 108, 6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 13, 81, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 36, 65,
-			4, 108, 6, 15, 83, 109, 57, 55, 109, 89, 47, 118, 49, 50, 109, 49, 0, 13, 81, 102, 101, 106, 108, 101, 115, 122, 116, 197, 145, 107,
-			110, 101, 107, 32, 23, 65, 4, 108, 6, 15, 119, 113, 55, 23, 108, 88, 0, 13, 82, 99, 195, 169, 108, 32, 97, 122, 32, 18, 65, 4,
-			108, 6, 15, 107, 37, 71, 108, 0, 13, 81, 104, 105, 98, 97, 32, 28, 65, 4, 108, 6, 15, 47, 108, 52, 47, 108, 55, 65, 108, 47,
-			0, 13, 81, 116, 97, 114, 116, 97, 108, 109, 97, 116, 32, 17, 65, 4, 108, 6, 15, 119, 112, 65, 0, 13, 81, 99, 195, 173, 109, 32,
-			22, 65, 4, 108, 6, 15, 72, 39, 55, 81, 39, 47, 0, 13, 81, 100, 111, 108, 103, 111, 116, 32, 25, 65, 4, 108, 6, 15, 107, 115,
-			50, 108, 48, 39, 49, 0, 13, 81, 104, 195, 179, 110, 97, 112, 111, 107, 32, 19, 65, 4, 108, 6, 15, 83, 110, 55, 72, 0, 13, 81,
-			102, 195, 182, 108, 100, 32, 30, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 23, 108, 88, 0, 13, 82, 107, 195, 169, 114, 100, 195,
-			169, 115, 32, 97, 122, 32, 32, 65, 4, 108, 6, 15, 76, 108, 55, 114, 72, 39, 49, 50, 108, 49, 0, 13, 81, 99, 115, 97, 108, 195,
-			161, 100, 111, 107, 110, 97, 107, 32, 24, 65, 4, 108, 6, 15, 47, 52, 109, 50, 72, 109, 47, 0, 13, 81, 116, 114, 101, 110, 100, 101,
-			116, 32, 26, 65, 4, 108, 6, 15, 47, 40, 72, 108, 47, 71, 108, 50, 0, 13, 81, 116, 117, 100, 97, 116, 98, 97, 110, 32, 33, 65,
-			4, 108, 6, 15, 65, 109, 81, 39, 55, 72, 114, 91, 12, 108, 55, 0, 13, 81, 109, 101, 103, 111, 108, 100, 195, 161, 115, 115, 97, 108,
-			32, 30, 65, 4, 108, 6, 15, 89, 108, 49, 108, 72, 113, 49, 39, 47, 0, 13, 81, 115, 122, 97, 107, 97, 100, 195, 169, 107, 111, 116,
-			32, 28, 65, 4, 108, 6, 15, 107, 109, 57, 88, 109, 47, 113, 47, 0, 13, 81, 104, 101, 108, 121, 122, 101, 116, 195, 169, 116, 32, 30,
-			65, 4, 108, 6, 15, 84, 114, 55, 108, 89, 39, 49, 108, 47, 0, 13, 81, 118, 195, 161, 108, 97, 115, 122, 111, 107, 97, 116, 32, 27,
-			65, 4, 108, 6, 15, 72, 39, 107, 114, 67, 88, 115, 0, 13, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 179, 32, 36, 65, 4, 108,
-			6, 15, 72, 39, 107, 114, 67, 88, 114, 91, 34, 115, 55, 0, 13, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 161, 115, 114, 195, 179,
-			108, 32, 31, 65, 4, 108, 6, 15, 72, 39, 107, 114, 67, 88, 114, 91, 47, 0, 13, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 161,
-			115, 116, 32, 21, 65, 4, 108, 6, 15, 83, 113, 52, 83, 37, 0, 13, 81, 102, 195, 169, 114, 102, 105, 32, 26, 65, 4, 108, 6, 15,
-			57, 110, 84, 118, 71, 109, 50, 0, 13, 81, 106, 195, 182, 118, 197, 145, 98, 101, 110, 32, 28, 65, 4, 108, 6, 15, 71, 111, 50, 47,
-			109, 47, 113, 91, 0, 13, 81, 98, 195, 188, 110, 116, 101, 116, 195, 169, 115, 32, 22, 65, 4, 108, 6, 15, 91, 39, 52, 71, 108, 50,
-			0, 13, 81, 115, 111, 114, 98, 97, 110, 32, 21, 65, 4, 108, 6, 15, 47, 110, 65, 109, 81, 0, 13, 81, 116, 195, 182, 109, 101, 103,
-			32, 20, 65, 4, 108, 6, 15, 91, 39, 52, 71, 108, 0, 13, 81, 115, 111, 114, 98, 97, 32, 22, 65, 4, 108, 10, 6, 15, 107, 109,
-			57, 109, 47, 0, 13, 81, 104, 101, 108, 121, 101, 116, 32, 28, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 109, 65, 0, 13, 81,
-			107, 195, 169, 114, 100, 195, 169, 115, 101, 109, 32, 23, 65, 4, 108, 6, 15, 65, 113, 52, 81, 109, 47, 0, 13, 81, 109, 195, 169, 114,
-			103, 101, 116, 32, 24, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 32, 26, 65,
-			4, 108, 6, 15, 84, 108, 55, 115, 91, 114, 81, 0, 13, 81, 118, 97, 108, 195, 179, 115, 195, 161, 103, 32, 29, 65, 4, 108, 6, 15,
-			49, 110, 55, 76, 113, 81, 109, 47, 0, 13, 81, 107, 195, 182, 108, 116, 115, 195, 169, 103, 101, 116, 32, 26, 65, 4, 108, 6, 15, 89,
-			109, 52, 84, 109, 88, 118, 0, 13, 81, 115, 122, 101, 114, 118, 101, 122, 197, 145, 32, 29, 65, 4, 108, 6, 15, 107, 39, 50, 55, 108,
-			48, 57, 114, 50, 0, 13, 81, 104, 111, 110, 108, 97, 112, 106, 195, 161, 110, 32, 33, 65, 4, 108, 6, 15, 83, 109, 55, 47, 113, 47,
-			109, 55, 12, 109, 55, 0, 13, 81, 102, 101, 108, 116, 195, 169, 116, 101, 108, 108, 101, 108, 32, 31, 65, 4, 108, 6, 15, 49, 37, 47,
-			113, 47, 109, 55, 12, 109, 55, 0, 13, 81, 107, 105, 116, 195, 169, 116, 101, 108, 108, 101, 108, 32, 28, 65, 4, 108, 6, 15, 72, 110,
-			50, 47, 113, 91, 52, 109, 0, 13, 81, 100, 195, 182, 110, 116, 195, 169, 115, 114, 101, 32, 29, 65, 4, 108, 6, 15, 89, 110, 84, 109,
-			76, 12, 113, 81, 0, 13, 81, 115, 122, 195, 182, 118, 101, 116, 115, 195, 169, 103, 32, 30, 65, 4, 108, 6, 15, 89, 110, 84, 109, 76,
-			12, 113, 81, 0, 13, 81, 115, 122, 195, 182, 118, 101, 116, 116, 115, 195, 169, 103, 32, 21, 65, 4, 108, 6, 15, 119, 113, 61, 57, 108,
-			0, 13, 81, 99, 195, 169, 108, 106, 97, 32, 43, 65, 4, 108, 6, 15, 65, 109, 81, 89, 39, 52, 112, 47, 114, 91, 39, 49, 71, 108,
-			50, 0, 13, 81, 109, 101, 103, 115, 122, 111, 114, 195, 173, 116, 195, 161, 115, 111, 107, 98, 97, 110, 32, 23, 65, 4, 108, 6, 15, 67,
-			40, 81, 108, 47, 37, 0, 13, 81, 110, 121, 117, 103, 97, 116, 105, 32, 47, 65, 4, 108, 6, 15, 49, 110, 88, 110, 50, 91, 113, 81,
-			23, 91, 39, 52, 108, 37, 71, 108, 50, 0, 13, 82, 107, 195, 182, 122, 195, 182, 110, 115, 195, 169, 103, 32, 115, 111, 114, 97, 105, 98,
-			97, 110, 32, 23, 65, 4, 108, 6, 15, 107, 109, 57, 88, 109, 47, 0, 13, 81, 104, 101, 108, 121, 122, 101, 116, 32, 23, 65, 4, 108,
-			6, 15, 65, 113, 52, 55, 109, 81, 0, 13, 81, 109, 195, 169, 114, 108, 101, 103, 32, 26, 65, 4, 108, 6, 15, 47, 109, 52, 84, 109,
-			88, 109, 47, 0, 13, 81, 116, 101, 114, 118, 101, 122, 101, 116, 32, 28, 65, 4, 108, 6, 15, 107, 108, 55, 81, 108, 47, 115, 49, 0,
-			13, 81, 104, 97, 108, 108, 103, 97, 116, 195, 179, 107, 32, 49, 65, 4, 108, 6, 15, 49, 39, 52, 114, 71, 12, 37, 23, 109, 55, 49,
-			113, 48, 88, 109, 55, 113, 91, 0, 13, 82, 107, 111, 114, 195, 161, 98, 98, 105, 32, 101, 108, 107, 195, 169, 112, 122, 101, 108, 195, 169,
-			115, 32, 30, 65, 4, 108, 6, 15, 107, 114, 47, 12, 113, 52, 71, 109, 50, 0, 13, 81, 104, 195, 161, 116, 116, 195, 169, 114, 98, 101,
-			110, 32, 36, 65, 4, 108, 6, 15, 49, 110, 55, 76, 113, 81, 109, 49, 52, 118, 55, 0, 13, 81, 107, 195, 182, 108, 116, 115, 195, 169,
-			103, 101, 107, 114, 197, 145, 108, 32, 32, 65, 4, 108, 6, 23, 107, 108, 55, 81, 108, 47, 115, 50, 108, 49, 0, 13, 81, 104, 97, 108,
-			108, 103, 97, 116, 195, 179, 110, 97, 107, 32, 28, 65, 4, 108, 6, 15, 84, 114, 55, 47, 39, 88, 114, 91, 0, 13, 81, 118, 195, 161,
-			108, 116, 111, 122, 195, 161, 115, 32, 28, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 52, 109, 0, 13, 81, 107, 195, 169, 114, 100,
-			195, 169, 115, 114, 101, 32, 37, 65, 4, 108, 6, 15, 79, 115, 79, 89, 109, 52, 109, 49, 113, 52, 47, 0, 13, 81, 103, 121, 195, 179,
-			103, 121, 115, 122, 101, 114, 101, 107, 195, 169, 114, 116, 32, 24, 65, 4, 108, 6, 15, 71, 109, 47, 109, 81, 109, 49, 0, 13, 81, 98,
-			101, 116, 101, 103, 101, 107, 32, 78, 65, 4, 108, 6, 15, 71, 109, 47, 109, 81, 109, 49, 50, 109, 49, 23, 108, 6, 15, 79, 115, 79,
-			89, 109, 52, 47, 114, 65, 39, 81, 108, 47, 114, 91, 114, 47, 0, 13, 83, 98, 101, 116, 101, 103, 101, 107, 110, 101, 107, 32, 97, 32,
-			103, 121, 195, 179, 103, 121, 115, 122, 101, 114, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 195, 161, 116, 32, 20, 65, 4, 108, 6,
-			15, 47, 113, 67, 47, 0, 13, 81, 116, 195, 169, 110, 121, 116, 32, 26, 65, 4, 108, 6, 15, 72, 112, 57, 108, 88, 114, 91, 0, 13,
-			81, 100, 195, 173, 106, 97, 122, 195, 161, 115, 32, 26, 65, 4, 108, 6, 15, 67, 39, 65, 39, 88, 115, 49, 0, 13, 81, 110, 121, 111,
-			109, 111, 122, 195, 179, 107, 32, 35, 65, 4, 108, 6, 15, 83, 109, 55, 109, 55, 118, 91, 113, 81, 109, 47, 0, 13, 81, 102, 101, 108,
-			101, 108, 197, 145, 115, 115, 195, 169, 103, 101, 116, 32, 21, 65, 4, 108, 6, 15, 47, 111, 88, 109, 47, 0, 13, 81, 116, 195, 188, 122,
-			101, 116, 32, 26, 65, 4, 108, 6, 15, 47, 113, 65, 114, 71, 108, 50, 0, 13, 81, 116, 195, 169, 109, 195, 161, 98, 97, 110, 32, 25,
-			65, 4, 108, 6, 15, 83, 109, 55, 109, 55, 118, 91, 0, 13, 81, 102, 101, 108, 101, 108, 197, 145, 115, 32, 34, 65, 4, 108, 6, 15,
-			49, 113, 52, 72, 113, 91, 109, 49, 71, 109, 50, 0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101, 107, 98, 101, 110, 32, 26, 65,
-			4, 108, 6, 15, 72, 39, 55, 81, 39, 72, 108, 47, 0, 13, 81, 100, 111, 108, 103, 111, 100, 97, 116, 32, 30, 65, 4, 108, 6, 23,
-			107, 108, 79, 39, 65, 108, 12, 67, 47, 0, 13, 81, 104, 97, 103, 121, 111, 109, 195, 161, 110, 121, 116, 32, 16, 65, 4, 108, 6, 15,
-			91, 39, 49, 0, 13, 81, 115, 111, 107, 32, 34, 65, 4, 108, 6, 15, 49, 113, 48, 109, 91, 12, 113, 81, 109, 37, 47, 0, 13, 81,
-			107, 195, 169, 112, 101, 115, 115, 195, 169, 103, 101, 105, 116, 32, 35, 65, 4, 108, 6, 15, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115,
-			47, 0, 13, 81, 102, 101, 108, 104, 97, 115, 122, 110, 195, 161, 108, 195, 179, 116, 32, 18, 65, 4, 108, 6, 15, 119, 37, 49, 12, 0,
-			13, 81, 99, 105, 107, 107, 32, 33, 65, 4, 108, 6, 15, 83, 114, 57, 55, 57, 108, 37, 50, 49, 108, 47, 0, 13, 81, 102, 195, 161,
-			106, 108, 106, 97, 105, 110, 107, 97, 116, 32, 41, 65, 4, 108, 6, 15, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 49, 50, 108, 49,
-			0, 13, 81, 102, 101, 108, 104, 97, 115, 122, 110, 195, 161, 108, 195, 179, 107, 110, 97, 107, 32, 36, 65, 4, 108, 6, 23, 91, 111, 57,
-			57, 109, 89, 47, 118, 71, 109, 50, 0, 13, 81, 115, 195, 188, 108, 108, 121, 101, 115, 122, 116, 197, 145, 98, 101, 110, 32, 28, 65, 4,
-			108, 6, 23, 83, 109, 57, 55, 118, 72, 113, 91, 0, 13, 81, 102, 101, 106, 108, 197, 145, 100, 195, 169, 115, 32, 26, 65, 4, 108, 6,
-			23, 52, 109, 50, 119, 109, 52, 47, 0, 13, 81, 114, 101, 110, 100, 115, 122, 101, 114, 116, 32, 30, 65, 4, 108, 6, 15, 55, 113, 81,
-			65, 39, 88, 81, 114, 91, 0, 13, 81, 108, 195, 169, 103, 109, 111, 122, 103, 195, 161, 115, 32, 23, 65, 4, 108, 6, 9, 15, 49, 109,
-			55, 109, 47, 37, 0, 13, 81, 107, 101, 108, 101, 116, 105, 32, 20, 65, 4, 108, 6, 9, 15, 72, 113, 55, 37, 0, 13, 81, 100, 195,
-			169, 108, 105, 32, 27, 65, 4, 108, 6, 15, 72, 39, 49, 47, 39, 52, 50, 118, 0, 13, 81, 100, 111, 107, 116, 111, 114, 110, 197, 145,
-			32, 29, 65, 4, 108, 6, 23, 89, 49, 52, 37, 48, 47, 71, 109, 50, 0, 13, 81, 115, 122, 107, 114, 105, 112, 116, 98, 101, 110, 32,
-			40, 65, 4, 108, 6, 23, 83, 109, 55, 108, 72, 108, 47, 39, 47, 23, 49, 108, 48, 57, 108, 0, 13, 82, 102, 101, 108, 97, 100, 97,
-			116, 111, 116, 32, 107, 97, 112, 106, 97, 32, 30, 65, 4, 108, 6, 23, 49, 110, 84, 109, 47, 49, 109, 88, 118, 0, 13, 81, 107, 195,
-			182, 118, 101, 116, 107, 101, 122, 197, 145, 32, 28, 65, 4, 108, 6, 23, 84, 114, 55, 47, 114, 91, 39, 50, 0, 13, 81, 118, 195, 161,
-			108, 116, 195, 161, 115, 111, 110, 32, 21, 65, 4, 108, 6, 15, 83, 109, 55, 107, 118, 0, 13, 81, 102, 101, 108, 104, 197, 145, 32, 24,
-			65, 4, 108, 6, 23, 52, 109, 50, 119, 109, 52, 0, 13, 81, 114, 101, 110, 100, 115, 122, 101, 114, 32, 34, 65, 4, 108, 6, 15, 49,
-			37, 47, 110, 55, 47, 113, 91, 49, 39, 52, 0, 13, 81, 107, 105, 116, 195, 182, 108, 116, 195, 169, 115, 107, 111, 114, 32, 38, 65, 4,
-			108, 6, 15, 83, 109, 57, 55, 109, 89, 47, 113, 91, 109, 49, 109, 47, 0, 13, 81, 102, 101, 106, 108, 101, 115, 122, 116, 195, 169, 115,
-			101, 107, 101, 116, 32, 32, 65, 4, 108, 6, 15, 49, 37, 47, 110, 55, 47, 118, 84, 109, 55, 0, 13, 81, 107, 105, 116, 195, 182, 108,
-			116, 197, 145, 118, 101, 108, 32, 32, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 109, 49, 52, 109, 0, 13, 81, 107, 195, 169, 114,
-			100, 195, 169, 115, 101, 107, 114, 101, 32, 31, 65, 4, 108, 6, 15, 49, 113, 52, 72, 118, 112, 84, 109, 47, 0, 13, 81, 107, 195, 169,
-			114, 100, 197, 145, 195, 173, 118, 101, 116, 32, 20, 65, 4, 108, 6, 15, 50, 108, 48, 39, 47, 0, 13, 81, 110, 97, 112, 111, 116, 32,
-			21, 65, 4, 108, 6, 15, 48, 113, 50, 89, 47, 0, 13, 81, 112, 195, 169, 110, 122, 116, 32, 31, 65, 4, 108, 6, 15, 49, 113, 52,
-			113, 91, 113, 84, 109, 55, 0, 13, 81, 107, 195, 169, 114, 195, 169, 115, 195, 169, 118, 101, 108, 32, 38, 65, 4, 108, 6, 15, 65, 37,
-			50, 37, 89, 47, 109, 52, 109, 55, 50, 110, 49, 0, 13, 81, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108, 110, 195, 182, 107, 32,
-			34, 65, 4, 108, 6, 107, 118, 65, 113, 52, 91, 113, 49, 55, 109, 47, 0, 13, 81, 104, 197, 145, 109, 195, 169, 114, 115, 195, 169, 107,
-			108, 101, 116, 32, 23, 65, 4, 108, 6, 15, 55, 109, 84, 109, 81, 118, 0, 13, 81, 108, 101, 118, 101, 103, 197, 145, 32, 27, 65, 4,
-			108, 6, 15, 83, 109, 55, 107, 118, 88, 109, 47, 0, 13, 81, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 35, 65, 4, 108, 6, 15,
-			49, 111, 55, 110, 50, 71, 91, 113, 81, 109, 47, 0, 13, 81, 107, 195, 188, 108, 195, 182, 110, 98, 115, 195, 169, 103, 101, 116, 32, 23,
-			65, 4, 108, 6, 15, 83, 109, 50, 113, 71, 109, 0, 13, 81, 102, 101, 110, 195, 169, 98, 101, 32, 20, 65, 4, 108, 6, 15, 72, 39,
-			55, 39, 81, 0, 13, 81, 100, 111, 108, 111, 103, 32, 21, 65, 4, 108, 6, 15, 107, 109, 57, 109, 72, 0, 13, 81, 104, 101, 108, 121,
-			101, 100, 32, 21, 65, 4, 108, 6, 15, 81, 113, 48, 109, 50, 0, 13, 81, 103, 195, 169, 112, 101, 110, 32, 30, 65, 4, 108, 6, 23,
-			48, 52, 39, 71, 55, 113, 65, 114, 65, 0, 13, 81, 112, 114, 111, 98, 108, 195, 169, 109, 195, 161, 109, 32, 17, 142, 20, 5, 12, 5,
-			16, 195, 173, 20, 195, 169, 19, 19, 5, 12, 13, 9, 198, 41, 85, 1, 48, 243, 64, 13, 9, 134, 16, 1, 3, 195, 161, 20, 13, 9,
-			198, 24, 84, 218, 20, 113, 84, 13, 9, 198, 60, 197, 129, 76, 243, 64, 13, 9, 134, 13, 1, 7, 195, 161, 20, 13, 5, 193, 4, 72,
-			12, 22, 65, 4, 108, 67, 67, 37, 15, 65, 6, 37, 50, 47, 0, 25, 83, 46, 32, 109, 32, 46, 32, 0, 9, 198, 77, 161, 77, 8,
-			83, 128, 13, 9, 198, 77, 161, 77, 8, 83, 128, 13, 0, 27, 67, 16, 240, 128, 72, 39, 71, 10, 6, 15, 48, 37, 108, 119, 52, 108,
-			0, 13, 81, 112, 105, 97, 99, 114, 97, 32, 11, 136, 11, 21, 12, 3, 19, 195, 161, 20, 13, 40, 11, 14, 195, 182, 22, 5, 12, 195,
-			169, 19, 5, 19, 50, 110, 84, 109, 55, 113, 91, 109, 91, 23, 47, 109, 89, 47, 109, 47, 0, 13, 81, 116, 101, 115, 122, 116, 101, 116,
-			32, 11, 200, 32, 17, 9, 24, 241, 207, 49, 144, 13, 10, 199, 80, 20, 148, 4, 195, 65, 44, 13, 6, 195, 64, 243, 148, 13, 0, 12,
-			137, 22, 9, 20, 195, 161, 10, 195, 161, 20, 13, 41, 12, 11, 15, 18, 18, 9, 7, 195, 161, 12, 195, 161, 19, 49, 39, 52, 52, 37,
-			81, 114, 55, 114, 91, 23, 52, 113, 84, 113, 50, 0, 13, 81, 114, 195, 169, 118, 195, 169, 110, 32, 12, 201, 80, 83, 5, 24, 243, 143,
-			44, 176, 76, 13, 13, 138, 22, 195, 161, 12, 15, 7, 1, 20, 14, 9, 13, 12, 201, 13, 51, 208, 61, 37, 15, 44, 176, 76, 13, 0,
-			6, 65, 8, 71, 113, 0, 14, 139, 4, 18, 195, 161, 7, 21, 12, 195, 161, 19, 1, 13, 22, 147, 13, 5, 7, 195, 161, 12, 12, 1,
-			16, 195, 173, 20, 195, 161, 19, 195, 161, 18, 1, 13, 13, 138, 2, 5, 14, 14, 195, 188, 14, 11, 5, 20, 13, 17, 142, 195, 169, 12,
-			5, 20, 20, 1, 18, 20, 1, 13, 195, 161, 20, 13, 13, 138, 13, 21, 14, 11, 195, 161, 10, 195, 161, 20, 13, 0, 23, 148, 22, 9,
-			19, 19, 26, 1, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 18, 1, 13, 14, 139, 12, 5, 195, 173, 18, 195, 161, 19, 195,
-			161, 20, 13, 18, 143, 20, 5, 18, 8, 5, 19, 19, 195, 169, 7, 195, 188, 11, 5, 20, 13, 15, 140, 20, 195, 161, 13, 15, 7, 1,
-			20, 195, 161, 19, 1, 13, 9, 198, 33, 83, 12, 61, 69, 0, 13, 10, 135, 16, 195, 169, 14, 20, 5, 11, 20, 0, 15, 140, 11, 195,
-			169, 16, 22, 9, 19, 5, 12, 197, 145, 20, 13, 14, 139, 11, 9, 14, 195, 169, 26, 5, 20, 20, 5, 12, 13, 9, 134, 16, 195, 169,
-			12, 4, 1, 13, 9, 134, 11, 195, 182, 26, 20, 5, 13, 9, 134, 16, 195, 169, 12, 4, 1, 13, 15, 140, 10, 195, 161, 18, 1, 4,
-			195, 169, 11, 195, 161, 20, 13, 0, 11, 136, 13, 21, 14, 11, 195, 161, 19, 20, 13, 61, 13, 12, 5, 8, 5, 20, 197, 145, 19, 195,
-			169, 7, 5, 20, 55, 109, 107, 109, 47, 118, 91, 113, 81, 109, 47, 10, 6, 15, 65, 109, 81, 84, 108, 55, 115, 91, 112, 47, 108, 50,
-			37, 0, 13, 81, 109, 101, 103, 118, 97, 108, 195, 179, 115, 195, 173, 116, 97, 110, 105, 32, 19, 144, 14, 195, 169, 16, 19, 26, 195, 161,
-			13, 12, 195, 161, 12, 195, 161, 19, 13, 14, 139, 16, 18, 195, 179, 2, 195, 161, 12, 20, 1, 13, 13, 10, 135, 20, 195, 169, 20, 5,
-			12, 5, 13, 16, 141, 12, 5, 8, 5, 20, 197, 145, 19, 195, 169, 7, 5, 20, 13, 0, 6, 65, 12, 119, 113, 0, 9, 198, 24, 244,
-			132, 84, 195, 203, 13, 13, 138, 11, 195, 182, 22, 5, 20, 20, 195, 169, 11, 13, 10, 135, 13, 195, 169, 18, 20, 5, 14, 13, 11, 136,
-			19, 26, 195, 161, 14, 20, 1, 13, 13, 17, 142, 6, 5, 12, 5, 12, 197, 145, 19, 19, 195, 169, 7, 5, 20, 13, 8, 197, 44, 86,
-			132, 88, 80, 13, 0, 48, 73, 16, 242, 213, 52, 83, 148, 84, 212, 129, 72, 39, 49, 40, 65, 109, 50, 47, 40, 65, 52, 108, 23, 107,
-			37, 84, 108, 47, 49, 39, 88, 84, 108, 0, 13, 81, 104, 105, 118, 97, 116, 107, 111, 122, 118, 97, 32, 0, 9, 134, 195, 188, 26, 5,
-			13, 5, 13, 11, 4, 95, 8, 1, 3, 48, 37, 48, 108, 0, 0, 14, 139, 13, 1, 7, 25, 1, 18, 195, 161, 26, 20, 1, 13, 11,
-			136, 5, 12, 197, 145, 20, 20, 5, 4, 13, 11, 200, 77, 161, 82, 88, 86, 133, 80, 80, 13, 12, 137, 11, 5, 18, 5, 19, 20, 195,
-			169, 11, 13, 0, 6, 65, 16, 72, 113, 0, 15, 140, 1, 4, 15, 13, 195, 161, 14, 25, 15, 26, 20, 1, 13, 8, 197, 88, 148, 197,
-			49, 64, 13, 20, 145, 19, 26, 195, 161, 13, 195, 173, 20, 195, 179, 7, 195, 169, 16, 16, 5, 12, 13, 6, 195, 44, 147, 142, 13, 0,
-			27, 3, 58, 47, 47, 40, 107, 101, 116, 116, 197, 145, 115, 112, 111, 110, 116, 112, 101, 114, 112, 101, 114, 41, 0, 8, 29, 8, 133, 20,
-			195, 169, 13, 1, 13, 10, 135, 22, 195, 161, 18, 21, 14, 11, 13, 8, 133, 20, 195, 169, 13, 1, 13, 17, 142, 19, 26, 5, 18, 22,
-			5, 26, 5, 20, 11, 195, 169, 14, 20, 13, 9, 134, 20, 197, 145, 12, 5, 4, 13, 0, 13, 138, 2, 197, 145, 22, 195, 173, 20, 5,
-			14, 9, 13, 15, 140, 8, 15, 26, 26, 195, 161, 11, 5, 26, 4, 5, 11, 13, 9, 198, 40, 21, 129, 76, 195, 205, 13, 9, 198, 80,
-			20, 148, 4, 195, 205, 13, 0, 14, 139, 19, 26, 195, 161, 13, 195, 173, 20, 1, 14, 9, 13, 11, 200, 52, 81, 214, 21, 36, 197, 49,
-			64, 13, 10, 135, 14, 25, 195, 186, 12, 14, 9, 13, 10, 135, 195, 169, 18, 4, 5, 13, 5, 13, 11, 136, 19, 26, 195, 161, 14, 20,
-			1, 4, 13, 11, 136, 18, 5, 14, 4, 197, 145, 18, 20, 13, 0, 4, 193, 20, 72, 4, 193, 20, 14, 4, 193, 20, 72, 0, 8, 133,
-			195, 173, 18, 14, 9, 13, 9, 198, 56, 147, 131, 76, 83, 128, 13, 0, 10, 199, 48, 144, 197, 56, 49, 73, 80, 13, 10, 199, 32, 19,
-			12, 61, 69, 21, 44, 13, 15, 140, 12, 5, 6, 5, 4, 5, 20, 20, 19, 195, 169, 7, 13, 14, 4, 95, 48, 67, 15, 89, 114, 88,
-			108, 72, 37, 49, 0, 0, 0, 7, 65, 24, 109, 83, 83, 0, 8, 197, 20, 209, 76, 56, 144, 13, 11, 136, 22, 195, 161, 12, 1, 19,
-			26, 1, 13, 13, 138, 195, 161, 12, 12, 195, 173, 20, 21, 14, 11, 13, 0, 18, 143, 19, 26, 5, 13, 2, 5, 19, 195, 188, 12, 14,
-			9, 195, 188, 11, 13, 9, 198, 60, 179, 218, 61, 69, 0, 13, 0, 14, 139, 18, 195, 161, 2, 195, 182, 11, 195, 182, 20, 20, 13, 10,
-			135, 13, 1, 14, 21, 195, 161, 12, 13, 0, 45, 8, 195, 161, 12, 12, 1, 16, 15, 20, 114, 55, 12, 108, 48, 39, 47, 23, 57, 108,
-			84, 112, 47, 114, 91, 114, 52, 108, 0, 13, 81, 106, 97, 118, 195, 173, 116, 195, 161, 115, 195, 161, 114, 97, 32, 9, 134, 20, 195, 169,
-			12, 5, 14, 13, 11, 136, 195, 161, 12, 12, 1, 16, 15, 20, 13, 0, 6, 65, 28, 81, 113, 0, 16, 141, 20, 195, 182, 18, 22, 195,
-			169, 14, 25, 18, 197, 145, 12, 13, 46, 11, 9, 7, 195, 169, 14, 25, 5, 9, 8, 5, 26, 37, 81, 113, 67, 109, 37, 107, 109, 88,
-			23, 37, 81, 108, 88, 112, 47, 108, 50, 37, 0, 13, 81, 105, 103, 97, 122, 195, 173, 116, 97, 110, 105, 32, 20, 136, 5, 19, 26, 13,
-			195, 169, 10, 5, 13, 81, 104, 101, 118, 195, 173, 116, 105, 32, 10, 135, 14, 25, 15, 13, 195, 161, 14, 13, 0, 9, 198, 24, 147, 13,
-			20, 177, 84, 13, 11, 136, 6, 195, 161, 10, 12, 8, 15, 26, 13, 13, 138, 10, 21, 20, 20, 1, 20, 195, 161, 19, 20, 13, 0, 10,
-			199, 32, 21, 133, 72, 160, 73, 52, 13, 43, 6, 11, 195, 182, 26, 20, 9, 49, 110, 89, 47, 37, 23, 49, 111, 55, 110, 50, 71, 91,
-			113, 81, 109, 49, 0, 13, 81, 107, 195, 188, 108, 195, 182, 110, 98, 115, 195, 169, 103, 101, 107, 32, 28, 9, 7, 195, 169, 16, 5, 11,
-			8, 5, 26, 81, 113, 48, 109, 49, 107, 109, 88, 23, 37, 91, 0, 13, 81, 105, 115, 32, 53, 6, 11, 195, 182, 26, 20, 9, 49, 110,
-			89, 47, 37, 23, 50, 113, 88, 109, 47, 109, 55, 47, 113, 52, 113, 91, 109, 49, 109, 47, 0, 13, 81, 110, 195, 169, 122, 101, 116, 101,
-			108, 116, 195, 169, 114, 195, 169, 115, 101, 107, 101, 116, 32, 11, 136, 1, 11, 1, 18, 10, 195, 161, 11, 13, 10, 199, 16, 243, 7, 61,
-			166, 143, 56, 13, 10, 135, 14, 1, 16, 10, 195, 161, 20, 13, 17, 4, 95, 54, 48, 15, 107, 108, 47, 84, 108, 50, 108, 72, 37, 49,
-			0, 0, 38, 72, 44, 85, 133, 76, 80, 130, 20, 224, 49, 109, 84, 109, 91, 109, 71, 12, 109, 50, 10, 6, 15, 108, 50, 12, 114, 55,
-			0, 13, 81, 97, 110, 110, 195, 161, 108, 32, 17, 142, 11, 15, 14, 7, 18, 5, 19, 19, 26, 21, 19, 195, 161, 14, 13, 15, 140, 12,
-			195, 161, 20, 15, 7, 1, 20, 195, 161, 19, 20, 13, 0, 6, 65, 32, 107, 114, 0, 14, 67, 52, 196, 218, 109, 65, 109, 55, 109, 89,
-			0, 42, 42, 0, 47, 10, 195, 182, 19, 19, 26, 5, 7, 195, 169, 20, 110, 89, 12, 109, 81, 113, 47, 23, 83, 109, 55, 47, 111, 50,
-			47, 109, 91, 12, 109, 0, 13, 81, 102, 101, 108, 116, 195, 188, 110, 116, 101, 115, 115, 101, 32, 9, 134, 195, 169, 7, 5, 20, 20, 13,
-			8, 133, 20, 195, 169, 12, 9, 20, 0, 13, 138, 4, 195, 182, 14, 20, 195, 169, 19, 5, 9, 13, 10, 199, 44, 20, 8, 5, 67, 129,
-			44, 13, 15, 140, 20, 195, 161, 13, 15, 7, 1, 20, 10, 195, 161, 11, 13, 51, 71, 24, 145, 217, 20, 195, 69, 80, 83, 37, 79, 109,
-			55, 65, 109, 47, 23, 49, 109, 55, 12, 23, 83, 39, 52, 72, 112, 47, 108, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32, 102, 111, 114,
-			100, 195, 173, 116, 97, 110, 105, 32, 10, 199, 24, 145, 217, 20, 195, 69, 80, 13, 15, 140, 2, 15, 19, 19, 26, 1, 14, 20, 195, 179,
-			1, 11, 13, 10, 199, 48, 18, 207, 76, 242, 193, 80, 13, 13, 138, 19, 26, 1, 11, 195, 173, 20, 1, 14, 9, 13, 10, 199, 24, 83,
-			22, 21, 66, 5, 80, 13, 10, 135, 14, 25, 15, 13, 195, 161, 20, 13, 0, 17, 1, 35, 49, 109, 47, 12, 118, 91, 49, 109, 52, 109,
-			89, 47, 0, 27, 16, 141, 9, 18, 195, 161, 14, 25, 195, 173, 20, 10, 195, 161, 11, 13, 15, 140, 14, 25, 195, 186, 10, 20, 195, 161,
-			19, 195, 161, 20, 13, 7, 132, 11, 195, 186, 20, 13, 7, 132, 3, 195, 169, 12, 13, 0, 45, 9, 22, 195, 161, 12, 12, 1, 12, 1,
-			20, 84, 114, 55, 12, 108, 55, 108, 47, 23, 49, 110, 88, 55, 109, 65, 113, 67, 109, 0, 13, 81, 107, 195, 182, 122, 108, 101, 109, 195,
-			169, 110, 121, 101, 32, 16, 141, 6, 15, 18, 13, 195, 161, 12, 195, 161, 19, 195, 161, 20, 13, 15, 140, 20, 5, 12, 10, 5, 19, 195,
-			173, 20, 5, 14, 9, 13, 15, 140, 20, 5, 12, 10, 5, 19, 195, 173, 20, 5, 14, 9, 13, 20, 145, 11, 195, 169, 19, 26, 195, 188,
-			12, 195, 169, 11, 195, 188, 14, 11, 5, 20, 13, 16, 141, 12, 5, 16, 1, 11, 15, 12, 195, 161, 19, 195, 161, 20, 13, 8, 197, 20,
-			210, 65, 81, 64, 13, 0, 24, 1, 37, 115, 122, 195, 161, 122, 97, 108, 195, 169, 107, 107, 97, 108, 0, 44, 29, 81, 107, 97, 108, 32,
-			12, 1, 37, 89, 114, 88, 108, 55, 113, 49, 0, 27, 13, 138, 11, 15, 18, 8, 1, 20, 195, 161, 18, 20, 13, 8, 197, 37, 0, 82,
-			8, 16, 13, 0, 7, 1, 38, 113, 91, 0, 27, 14, 139, 20, 5, 14, 4, 5, 14, 3, 9, 195, 161, 20, 13, 13, 138, 19, 195, 169,
-			18, 5, 12, 13, 5, 26, 9, 13, 9, 198, 40, 83, 5, 57, 68, 197, 13, 10, 199, 77, 163, 205, 8, 21, 9, 28, 22, 10, 199, 5,
-			81, 213, 77, 165, 21, 76, 20, 0, 12, 137, 6, 5, 12, 6, 15, 7, 195, 161, 19, 13, 19, 144, 18, 1, 20, 9, 6, 9, 11, 195,
-			161, 12, 195, 161, 19, 195, 161, 20, 13, 31, 68, 72, 18, 148, 4, 52, 108, 57, 47, 108, 23, 81, 113, 48, 109, 55, 50, 37, 0, 13,
-			81, 103, 195, 169, 112, 101, 108, 110, 105, 32, 57, 10, 11, 195, 169, 18, 4, 197, 145, 195, 173, 22, 49, 113, 52, 72, 118, 112, 84, 23,
-			84, 113, 55, 109, 65, 113, 67, 109, 88, 113, 91, 113, 52, 109, 0, 13, 81, 118, 195, 169, 108, 101, 109, 195, 169, 110, 121, 101, 122, 195,
-			169, 115, 195, 169, 114, 101, 32, 12, 137, 20, 1, 12, 195, 161, 12, 21, 14, 11, 13, 7, 196, 72, 18, 148, 4, 13, 0, 6, 65, 40,
-			57, 113, 0, 0, 11, 136, 6, 5, 2, 18, 21, 195, 161, 18, 20, 0, 11, 1, 42, 76, 37, 55, 55, 108, 81, 0, 27, 16, 141, 195,
-			161, 12, 12, 1, 13, 16, 15, 12, 7, 195, 161, 18, 13, 9, 198, 48, 84, 218, 60, 179, 137, 13, 13, 138, 3, 19, 9, 14, 195, 161,
-			12, 20, 1, 13, 13, 10, 199, 36, 225, 193, 80, 192, 78, 80, 13, 18, 143, 11, 195, 188, 12, 195, 182, 14, 2, 19, 195, 169, 7, 7,
-			5, 12, 13, 6, 195, 32, 246, 128, 13, 0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 10, 135, 22, 195, 161, 18, 20, 1, 13, 13, 10,
-			135, 10, 195, 161, 18, 20, 1, 13, 13, 12, 137, 8, 9, 2, 195, 161, 26, 20, 1, 11, 13, 11, 136, 11, 195, 182, 26, 16, 15, 14,
-			20, 13, 0, 6, 65, 44, 49, 114, 0, 10, 135, 5, 19, 5, 20, 195, 169, 14, 13, 32, 8, 195, 169, 18, 5, 26, 20, 5, 13, 113,
-			52, 109, 89, 47, 109, 65, 23, 65, 108, 81, 108, 65, 0, 13, 81, 109, 97, 103, 97, 109, 32, 11, 136, 12, 5, 195, 173, 18, 20, 1,
-			13, 13, 15, 140, 13, 5, 12, 12, 195, 169, 11, 5, 12, 20, 5, 13, 13, 11, 136, 195, 169, 18, 5, 26, 20, 5, 13, 13, 8, 197,
-			48, 85, 20, 20, 176, 13, 10, 135, 5, 19, 5, 20, 195, 169, 14, 13, 8, 197, 44, 20, 14, 4, 176, 13, 0, 12, 137, 19, 195, 169,
-			18, 20, 5, 14, 195, 169, 13, 14, 139, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 19, 13, 10, 135, 22, 195, 161, 12, 20, 1, 11,
-			13, 15, 140, 11, 195, 182, 18, 14, 25, 195, 169, 11, 195, 169, 14, 13, 15, 140, 11, 195, 182, 18, 14, 25, 195, 169, 11, 195, 169, 14,
-			22, 0, 10, 1, 46, 48, 2, 39, 50, 47, 0, 27, 10, 199, 32, 20, 131, 60, 195, 137, 4, 13, 7, 132, 3, 195, 169, 7, 13, 7,
-			195, 52, 84, 148, 72, 8, 0, 8, 1, 47, 48, 109, 52, 0, 27, 10, 135, 22, 195, 169, 4, 5, 14, 9, 13, 0, 7, 65, 48, 109,
-			55, 55, 0, 9, 198, 52, 17, 218, 5, 67, 203, 13, 8, 197, 32, 149, 5, 49, 64, 13, 8, 197, 44, 144, 211, 37, 64, 13, 13, 138,
-			19, 26, 5, 18, 5, 20, 14, 195, 169, 11, 13, 17, 1, 48, 50, 40, 55, 12, 114, 91, 47, 0, 44, 81, 32, 115, 116, 32, 20, 1,
-			48, 50, 40, 55, 12, 114, 52, 115, 55, 0, 44, 81, 32, 114, 195, 179, 108, 32, 15, 1, 48, 50, 40, 55, 12, 114, 50, 0, 44, 81,
-			32, 110, 32, 20, 1, 48, 50, 40, 55, 12, 114, 47, 115, 55, 0, 44, 81, 32, 116, 195, 179, 108, 32, 21, 1, 48, 50, 40, 55, 12,
-			114, 91, 39, 50, 0, 44, 81, 32, 195, 161, 115, 111, 110, 32, 19, 1, 48, 50, 40, 55, 12, 114, 71, 108, 0, 44, 81, 32, 195, 161,
-			98, 97, 32, 21, 1, 48, 50, 40, 55, 12, 114, 71, 108, 50, 0, 44, 81, 32, 195, 161, 98, 97, 110, 32, 16, 1, 48, 50, 40, 55,
-			12, 114, 50, 0, 44, 81, 32, 97, 110, 32, 16, 1, 48, 50, 40, 55, 12, 114, 47, 0, 44, 81, 32, 97, 116, 32, 22, 1, 48, 50,
-			40, 55, 12, 114, 47, 115, 55, 0, 44, 81, 32, 195, 161, 116, 195, 179, 108, 32, 17, 1, 48, 50, 40, 55, 12, 114, 47, 0, 44, 81,
-			32, 195, 161, 116, 32, 17, 1, 48, 50, 40, 55, 12, 114, 71, 108, 0, 44, 81, 32, 98, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114,
-			71, 108, 50, 0, 44, 81, 32, 98, 97, 110, 32, 17, 1, 48, 50, 40, 55, 12, 114, 37, 81, 0, 44, 81, 32, 105, 103, 32, 17, 1,
-			48, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 195, 161, 110, 32, 19, 1, 48, 50, 40, 55, 12, 114, 52, 108, 0, 44, 81, 32, 195,
-			161, 114, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114, 91, 52, 108, 0, 44, 81, 32, 115, 114, 97, 32, 15, 1, 48, 50, 40, 55, 12,
-			114, 91, 0, 44, 81, 32, 115, 32, 19, 1, 48, 50, 40, 55, 12, 114, 107, 39, 88, 0, 44, 81, 32, 104, 111, 122, 32, 20, 1, 48,
-			50, 40, 55, 12, 114, 50, 114, 55, 0, 44, 81, 32, 110, 195, 161, 108, 32, 17, 1, 48, 50, 40, 55, 12, 114, 52, 108, 0, 44, 81,
-			32, 114, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114, 84, 108, 55, 0, 44, 81, 32, 118, 97, 108, 32, 15, 1, 48, 50, 40, 55, 12,
-			114, 47, 0, 44, 81, 32, 116, 32, 17, 1, 48, 50, 40, 55, 12, 114, 91, 0, 44, 81, 32, 195, 161, 115, 32, 0, 14, 139, 22, 195,
-			169, 7, 26, 197, 145, 4, 20, 5, 11, 13, 8, 133, 13, 195, 169, 12, 25, 13, 17, 1, 49, 109, 79, 12, 109, 55, 0, 44, 81, 32,
-			103, 121, 101, 108, 32, 17, 1, 49, 109, 79, 12, 109, 91, 0, 44, 81, 32, 103, 121, 101, 115, 32, 17, 1, 49, 109, 79, 12, 109, 47,
-			0, 44, 81, 32, 103, 121, 101, 116, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 0, 44, 21, 29, 81, 32, 106, 195, 169, 116,
-			32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 104, 101, 122, 0, 44, 21, 29, 81, 32, 195, 169, 104, 101, 122, 32, 21, 1, 49, 101,
-			108, 115, 101, 106, 101, 105, 0, 44, 21, 29, 81, 32, 105, 107, 101, 105, 32, 19, 1, 49, 101, 108, 115, 101, 106, 101, 0, 44, 21, 29,
-			81, 32, 105, 107, 101, 32, 20, 1, 49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 21, 29, 81, 32, 105, 107, 105, 32, 27, 1, 49, 101,
-			108, 115, 101, 106, 195, 169, 110, 195, 169, 108, 0, 44, 21, 29, 81, 32, 195, 169, 110, 195, 169, 108, 32, 28, 1, 49, 101, 108, 115, 101,
-			106, 195, 169, 110, 195, 169, 108, 0, 44, 21, 29, 81, 32, 106, 195, 169, 110, 195, 169, 108, 32, 23, 1, 49, 101, 108, 115, 101, 106, 195,
-			169, 118, 101, 108, 0, 44, 21, 29, 81, 32, 118, 101, 108, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 110, 101, 107, 0, 44, 21,
-			29, 81, 32, 195, 169, 110, 101, 107, 32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 105, 103, 0, 44, 21, 29, 81, 32, 106, 195, 169,
-			105, 103, 32, 28, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 197, 145, 108, 0, 44, 21, 29, 81, 32, 106, 195, 169, 116, 197, 145, 108,
-			32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 21, 29, 81, 32, 106, 195, 169, 114, 101, 32, 26, 1, 49, 101, 108,
-			115, 101, 106, 195, 169, 118, 101, 108, 0, 44, 21, 29, 81, 32, 106, 195, 169, 118, 101, 108, 32, 20, 1, 49, 101, 108, 115, 101, 106, 101,
-			105, 0, 44, 21, 29, 81, 32, 106, 101, 105, 32, 18, 1, 49, 101, 108, 115, 101, 106, 101, 0, 44, 21, 29, 81, 32, 106, 101, 32, 21,
-			1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 0, 44, 21, 29, 81, 32, 195, 169, 116, 32, 27, 1, 49, 101, 108, 115, 101, 106, 195, 169,
-			116, 197, 145, 108, 0, 44, 21, 29, 81, 32, 195, 169, 116, 197, 145, 108, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169, 105, 103, 0,
-			44, 29, 81, 32, 195, 169, 105, 103, 32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 118, 101, 108, 0, 44, 29, 81, 32, 195, 169, 118,
-			101, 108, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 197, 145, 108, 0, 44, 21, 29, 81, 32, 114, 197, 145, 108, 32, 27, 1,
-			49, 101, 108, 115, 101, 106, 195, 169, 114, 197, 145, 108, 0, 44, 21, 29, 81, 32, 195, 169, 114, 197, 145, 108, 32, 21, 1, 49, 101, 108,
-			115, 101, 106, 195, 169, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 197, 145, 108,
-			0, 44, 21, 29, 81, 32, 116, 197, 145, 108, 32, 21, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 21, 29, 81, 32, 114,
-			101, 32, 23, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 21, 29, 81, 32, 195, 169, 114, 101, 32, 19, 1, 49, 101, 108,
-			115, 101, 106, 101, 105, 0, 44, 21, 29, 81, 32, 101, 105, 32, 18, 1, 49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 21, 29, 81, 32,
-			105, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169, 110, 0, 44, 21, 29, 81, 32, 106, 195, 169, 110, 32, 21, 1, 49, 101, 108, 115,
-			101, 106, 195, 169, 110, 0, 44, 21, 29, 81, 32, 195, 169, 110, 32, 17, 1, 49, 101, 108, 115, 101, 106, 101, 0, 44, 21, 29, 81, 32,
-			101, 32, 0, 11, 136, 195, 179, 18, 195, 161, 11, 9, 7, 13, 13, 138, 10, 5, 12, 5, 14, 20, 5, 14, 195, 169, 13, 18, 1, 50,
-			49, 109, 47, 12, 118, 84, 109, 55, 0, 44, 81, 32, 101, 108, 32, 15, 1, 50, 49, 109, 47, 12, 118, 65, 0, 44, 81, 32, 109, 32,
-			15, 1, 50, 49, 109, 47, 12, 118, 50, 0, 44, 81, 32, 110, 32, 17, 1, 50, 49, 109, 47, 12, 118, 50, 0, 44, 81, 32, 197, 145,
-			110, 32, 17, 1, 50, 49, 109, 47, 12, 118, 47, 0, 44, 81, 32, 197, 145, 116, 32, 18, 1, 50, 49, 113, 119, 12, 109, 52, 0, 44,
-			81, 32, 115, 122, 101, 114, 32, 28, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 116, 195, 179, 108, 0, 44, 21, 29, 81, 32,
-			116, 197, 145, 108, 32, 30, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 116, 195, 179, 108, 0, 44, 21, 29, 81, 32, 195, 169,
-			116, 197, 145, 108, 32, 24, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 21,
-			1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 97, 105, 0, 44, 21, 29, 81, 32, 105, 32, 0, 12, 137, 13, 15, 2, 9, 12, 3, 195,
-			169, 7, 13, 6, 131, 6, 197, 145, 13, 17, 1, 51, 107, 114, 52, 65, 108, 91, 0, 44, 81, 32, 109, 97, 115, 32, 15, 1, 51, 107,
-			114, 52, 65, 108, 47, 0, 44, 81, 32, 116, 32, 26, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 12, 108, 55, 0, 44, 81, 32, 97,
-			100, 105, 107, 107, 97, 108, 32, 24, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 39, 50, 0, 44, 81, 32, 97, 100, 105, 107, 111, 110,
-			32, 24, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 108, 47, 0, 44, 81, 32, 97, 100, 105, 107, 97, 116, 32, 20, 1, 51, 107, 108,
-			52, 65, 108, 72, 37, 49, 0, 44, 81, 32, 97, 100, 105, 107, 32, 16, 1, 51, 107, 114, 52, 65, 39, 50, 0, 44, 81, 32, 111, 110,
-			32, 18, 1, 51, 107, 114, 52, 39, 65, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 24, 1, 51, 104, 97, 114, 109, 97, 100, 105, 107,
-			195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 21, 1, 51, 107, 108, 52, 10, 65, 108, 72, 37, 49, 108, 37, 0, 44, 21,
-			81, 32, 105, 32, 0, 7, 65, 52, 109, 65, 65, 0, 45, 69, 60, 179, 218, 80, 16, 39, 49, 39, 89, 47, 108, 23, 48, 52, 39, 71,
-			55, 113, 65, 114, 49, 71, 115, 55, 0, 13, 81, 112, 114, 111, 98, 108, 195, 169, 109, 195, 161, 107, 98, 195, 179, 108, 32, 8, 197, 60,
-			179, 218, 80, 16, 13, 25, 1, 52, 50, 109, 79, 109, 72, 37, 49, 12, 109, 55, 0, 44, 81, 32, 101, 100, 105, 107, 107, 101, 108, 32,
-			23, 1, 52, 50, 109, 79, 109, 72, 37, 49, 109, 50, 0, 44, 81, 32, 101, 100, 105, 107, 101, 110, 32, 23, 1, 52, 50, 109, 79, 109,
-			72, 37, 49, 109, 47, 0, 44, 81, 32, 101, 100, 105, 107, 101, 116, 32, 19, 1, 52, 50, 109, 79, 109, 72, 37, 49, 0, 44, 81, 32,
-			101, 100, 105, 107, 32, 14, 1, 52, 50, 113, 79, 109, 47, 0, 44, 81, 32, 116, 32, 18, 1, 52, 50, 113, 79, 12, 109, 55, 0, 44,
-			81, 32, 103, 121, 101, 108, 32, 16, 1, 52, 50, 113, 79, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0, 40, 5, 11, 195, 169, 14,
-			5, 49, 113, 50, 109, 10, 6, 15, 84, 114, 55, 108, 89, 47, 108, 50, 39, 65, 0, 13, 81, 118, 195, 161, 108, 97, 115, 122, 116, 97,
-			110, 111, 109, 32, 31, 70, 20, 195, 65, 72, 17, 0, 109, 55, 65, 108, 52, 108, 72, 23, 108, 47, 12, 115, 55, 0, 13, 81, 97, 116,
-			116, 195, 179, 108, 32, 10, 135, 22, 195, 161, 12, 21, 14, 11, 13, 8, 133, 11, 195, 169, 14, 5, 13, 15, 1, 53, 110, 47, 12, 109,
+		static unsigned char espeakdata_dicts28_data[113341] = {
+			0, 4, 0, 0, 72, 56, 1, 0, 11, 200, 60, 197, 129, 76, 112, 84, 88, 16, 11, 8, 197, 44, 83, 5, 80, 144, 11, 8, 197, 72,
+			18, 148, 4, 208, 11, 8, 197, 8, 83, 142, 20, 208, 11, 7, 196, 4, 71, 19, 4, 11, 0, 10, 199, 149, 72, 140, 80, 85, 22, 20,
+			11, 6, 195, 137, 10, 204, 11, 0, 59, 73, 24, 83, 22, 137, 65, 76, 136, 225, 75, 83, 109, 55, 84, 113, 47, 109, 55, 113, 50, 109,
+			49, 23, 89, 111, 49, 91, 113, 81, 109, 91, 12, 113, 81, 113, 47, 0, 11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 115,
+			195, 169, 103, 195, 169, 116, 32, 8, 197, 32, 151, 14, 101, 64, 11, 12, 201, 46, 132, 142, 100, 86, 133, 80, 33, 78, 11, 0, 0, 8,
+			197, 88, 149, 20, 20, 208, 11, 0, 7, 65, 4, 108, 12, 0, 49, 15, 204, 81, 81, 1, 81, 195, 12, 5, 3, 212, 8, 19, 128, 11,
+			26, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 47, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 116, 32, 29, 65, 4, 108,
+			6, 15, 48, 108, 50, 108, 89, 39, 49, 108, 47, 0, 11, 81, 112, 97, 110, 97, 115, 122, 111, 107, 97, 116, 32, 26, 65, 4, 108, 6,
+			15, 72, 110, 50, 47, 113, 91, 47, 0, 11, 81, 100, 195, 182, 110, 116, 195, 169, 115, 116, 32, 25, 65, 4, 108, 6, 15, 65, 108, 79,
+			108, 52, 39, 49, 0, 11, 81, 109, 97, 103, 121, 97, 114, 111, 107, 32, 27, 65, 4, 108, 6, 15, 107, 109, 57, 88, 109, 47, 109, 47,
+			0, 11, 81, 104, 101, 108, 121, 122, 101, 116, 101, 116, 32, 21, 65, 4, 108, 6, 15, 49, 108, 57, 114, 47, 0, 11, 81, 107, 97, 106,
+			195, 161, 116, 32, 16, 65, 4, 108, 6, 15, 71, 108, 57, 0, 11, 81, 98, 97, 106, 32, 12, 201, 81, 83, 1, 40, 67, 206, 61, 48,
+			64, 11, 30, 65, 4, 108, 6, 15, 47, 111, 50, 47, 109, 47, 113, 91, 47, 0, 11, 81, 116, 195, 188, 110, 116, 101, 116, 195, 169, 115,
+			116, 32, 30, 65, 4, 108, 6, 15, 49, 109, 72, 113, 57, 109, 49, 109, 47, 0, 11, 81, 107, 101, 100, 195, 169, 108, 121, 101, 107, 101,
+			116, 32, 22, 65, 4, 108, 6, 15, 89, 39, 49, 114, 91, 0, 11, 81, 115, 122, 111, 107, 195, 161, 115, 32, 25, 65, 4, 108, 6, 15,
+			84, 37, 55, 114, 81, 39, 50, 0, 11, 81, 118, 105, 108, 195, 161, 103, 111, 110, 32, 29, 65, 4, 108, 6, 15, 49, 40, 47, 108, 47,
+			115, 49, 108, 47, 0, 11, 81, 107, 117, 116, 97, 116, 195, 179, 107, 97, 116, 32, 28, 65, 4, 108, 6, 15, 71, 37, 88, 39, 76, 12,
+			114, 81, 0, 11, 81, 98, 105, 122, 111, 116, 116, 115, 195, 161, 103, 32, 26, 65, 4, 108, 6, 15, 83, 109, 55, 108, 72, 108, 47, 108,
+			0, 11, 81, 102, 101, 108, 97, 100, 97, 116, 97, 32, 35, 65, 4, 108, 6, 15, 65, 115, 72, 39, 91, 112, 47, 114, 91, 39, 49, 0,
+			11, 81, 109, 195, 179, 100, 111, 115, 195, 173, 116, 195, 161, 115, 111, 107, 32, 25, 65, 4, 108, 6, 15, 83, 109, 55, 111, 55, 109, 47,
+			0, 11, 81, 102, 101, 108, 195, 188, 108, 101, 116, 32, 28, 65, 4, 108, 6, 15, 47, 108, 71, 55, 109, 47, 107, 109, 88, 0, 11, 81,
+			116, 97, 98, 108, 101, 116, 104, 101, 122, 32, 23, 65, 4, 108, 6, 15, 89, 37, 50, 47, 109, 47, 0, 11, 81, 115, 122, 105, 110, 116,
+			101, 116, 32, 28, 65, 4, 108, 6, 15, 49, 113, 89, 111, 55, 113, 49, 0, 11, 81, 107, 195, 169, 115, 122, 195, 188, 108, 195, 169, 107,
+			32, 22, 65, 4, 108, 6, 15, 65, 39, 71, 37, 55, 47, 0, 11, 81, 109, 111, 98, 105, 108, 116, 32, 24, 65, 4, 108, 6, 15, 47,
+			109, 55, 109, 83, 39, 50, 0, 11, 81, 116, 101, 108, 101, 102, 111, 110, 32, 24, 65, 4, 108, 6, 15, 49, 113, 88, 71, 118, 55, 0,
+			11, 81, 107, 195, 169, 122, 98, 197, 145, 108, 32, 17, 65, 4, 108, 6, 15, 91, 114, 52, 0, 11, 81, 115, 195, 161, 114, 32, 22, 65,
+			4, 108, 6, 15, 107, 39, 50, 55, 108, 48, 0, 11, 81, 104, 111, 110, 108, 97, 112, 32, 40, 65, 4, 108, 6, 15, 48, 52, 109, 88,
+			109, 50, 47, 114, 55, 114, 91, 50, 108, 49, 0, 11, 81, 112, 114, 101, 122, 101, 110, 116, 195, 161, 108, 195, 161, 115, 110, 97, 107, 32,
+			24, 65, 4, 108, 6, 15, 83, 109, 55, 108, 72, 108, 47, 0, 11, 81, 102, 101, 108, 97, 100, 97, 116, 32, 27, 65, 4, 108, 6, 15,
+			89, 109, 34, 84, 109, 88, 109, 47, 0, 11, 81, 115, 122, 101, 114, 118, 101, 122, 101, 116, 32, 26, 65, 4, 108, 6, 15, 107, 108, 47,
+			115, 91, 114, 81, 0, 11, 81, 104, 97, 116, 195, 179, 115, 195, 161, 103, 32, 26, 65, 4, 108, 6, 15, 49, 110, 55, 47, 118, 52, 109,
+			0, 11, 81, 107, 195, 182, 108, 116, 197, 145, 114, 101, 32, 22, 65, 4, 108, 6, 15, 47, 37, 47, 49, 39, 47, 0, 11, 81, 116, 105,
+			116, 107, 111, 116, 32, 24, 65, 4, 108, 6, 15, 84, 114, 55, 108, 89, 47, 0, 11, 81, 118, 195, 161, 108, 97, 115, 122, 116, 32, 24,
+			65, 4, 108, 6, 15, 81, 113, 48, 113, 52, 109, 0, 11, 81, 103, 195, 169, 112, 195, 169, 114, 101, 32, 39, 65, 4, 108, 6, 15, 55,
+			109, 81, 83, 39, 50, 47, 39, 91, 108, 71, 50, 108, 49, 0, 11, 81, 108, 101, 103, 102, 111, 110, 116, 111, 115, 97, 98, 98, 110, 97,
+			107, 32, 41, 65, 4, 108, 6, 15, 49, 37, 57, 109, 55, 109, 50, 47, 113, 91, 109, 72, 12, 109, 55, 0, 11, 81, 107, 105, 106, 101,
+			108, 101, 110, 116, 195, 169, 115, 101, 100, 100, 101, 108, 32, 32, 65, 4, 108, 6, 15, 49, 113, 48, 84, 37, 91, 109, 55, 118, 49, 0,
+			11, 81, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197, 145, 107, 32, 31, 65, 4, 108, 6, 15, 49, 109, 52, 111, 55, 109, 47, 71, 109,
+			50, 0, 11, 81, 107, 101, 114, 195, 188, 108, 101, 116, 98, 101, 110, 32, 28, 65, 4, 108, 6, 15, 52, 109, 50, 119, 109, 52, 71, 109,
+			0, 11, 81, 114, 101, 110, 100, 115, 122, 101, 114, 98, 101, 32, 29, 65, 4, 108, 6, 15, 52, 109, 50, 119, 109, 52, 113, 47, 0, 11,
+			81, 114, 101, 110, 100, 115, 122, 101, 114, 195, 169, 116, 32, 26, 65, 4, 108, 6, 15, 72, 39, 55, 81, 39, 49, 108, 47, 0, 11, 81,
+			100, 111, 108, 103, 111, 107, 97, 116, 32, 42, 65, 4, 108, 6, 15, 107, 39, 88, 88, 114, 89, 115, 55, 114, 91, 39, 49, 108, 47, 0,
+			11, 81, 104, 111, 122, 122, 195, 161, 115, 122, 195, 179, 108, 195, 161, 115, 111, 107, 97, 116, 32, 23, 65, 4, 108, 6, 15, 50, 113, 48,
+			50, 109, 49, 0, 11, 81, 110, 195, 169, 112, 110, 101, 107, 32, 28, 65, 4, 108, 6, 15, 83, 109, 55, 114, 55, 12, 114, 91, 0, 11,
+			81, 102, 101, 108, 195, 161, 108, 108, 195, 161, 115, 32, 31, 65, 4, 108, 6, 15, 84, 113, 55, 109, 65, 113, 67, 109, 65, 0, 11, 81,
+			118, 195, 169, 108, 101, 109, 195, 169, 110, 121, 101, 109, 32, 27, 65, 4, 108, 6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 11, 81,
+			112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 9, 198, 52, 147, 132, 20, 118, 64, 11, 36, 65, 4, 108, 6, 15, 83, 109, 57, 55, 109,
+			89, 47, 118, 49, 50, 109, 49, 0, 11, 81, 102, 101, 106, 108, 101, 115, 122, 116, 197, 145, 107, 110, 101, 107, 32, 23, 65, 4, 108, 6,
+			15, 119, 113, 55, 23, 108, 88, 0, 11, 82, 99, 195, 169, 108, 32, 97, 122, 32, 18, 65, 4, 108, 6, 15, 107, 37, 71, 108, 0, 11,
+			81, 104, 105, 98, 97, 32, 28, 65, 4, 108, 6, 15, 47, 108, 52, 47, 108, 55, 65, 108, 47, 0, 11, 81, 116, 97, 114, 116, 97, 108,
+			109, 97, 116, 32, 17, 65, 4, 108, 6, 15, 119, 112, 65, 0, 11, 81, 99, 195, 173, 109, 32, 22, 65, 4, 108, 6, 15, 72, 39, 55,
+			81, 39, 47, 0, 11, 81, 100, 111, 108, 103, 111, 116, 32, 25, 65, 4, 108, 6, 15, 107, 115, 50, 108, 48, 39, 49, 0, 11, 81, 104,
+			195, 179, 110, 97, 112, 111, 107, 32, 19, 65, 4, 108, 6, 15, 83, 110, 55, 72, 0, 11, 81, 102, 195, 182, 108, 100, 32, 30, 65, 4,
+			108, 6, 15, 49, 113, 52, 72, 113, 91, 23, 108, 88, 0, 11, 82, 107, 195, 169, 114, 100, 195, 169, 115, 32, 97, 122, 32, 32, 65, 4,
+			108, 6, 15, 76, 108, 55, 114, 72, 39, 49, 50, 108, 49, 0, 11, 81, 99, 115, 97, 108, 195, 161, 100, 111, 107, 110, 97, 107, 32, 24,
+			65, 4, 108, 6, 15, 47, 52, 109, 50, 72, 109, 47, 0, 11, 81, 116, 114, 101, 110, 100, 101, 116, 32, 26, 65, 4, 108, 6, 15, 47,
+			40, 72, 108, 47, 71, 108, 50, 0, 11, 81, 116, 117, 100, 97, 116, 98, 97, 110, 32, 33, 65, 4, 108, 6, 15, 65, 109, 81, 39, 55,
+			72, 114, 91, 12, 108, 55, 0, 11, 81, 109, 101, 103, 111, 108, 100, 195, 161, 115, 115, 97, 108, 32, 30, 65, 4, 108, 6, 15, 89, 108,
+			49, 108, 72, 113, 49, 39, 47, 0, 11, 81, 115, 122, 97, 107, 97, 100, 195, 169, 107, 111, 116, 32, 28, 65, 4, 108, 6, 15, 107, 109,
+			57, 88, 109, 47, 113, 47, 0, 11, 81, 104, 101, 108, 121, 122, 101, 116, 195, 169, 116, 32, 30, 65, 4, 108, 6, 15, 84, 114, 55, 108,
+			89, 39, 49, 108, 47, 0, 11, 81, 118, 195, 161, 108, 97, 115, 122, 111, 107, 97, 116, 32, 27, 65, 4, 108, 6, 15, 72, 39, 107, 114,
+			67, 88, 115, 0, 11, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 179, 32, 36, 65, 4, 108, 6, 15, 72, 39, 107, 114, 67, 88, 114,
+			91, 34, 115, 55, 0, 11, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 161, 115, 114, 195, 179, 108, 32, 31, 65, 4, 108, 6, 15, 72,
+			39, 107, 114, 67, 88, 114, 91, 47, 0, 11, 81, 100, 111, 104, 195, 161, 110, 121, 122, 195, 161, 115, 116, 32, 21, 65, 4, 108, 6, 15,
+			83, 113, 52, 83, 37, 0, 11, 81, 102, 195, 169, 114, 102, 105, 32, 26, 65, 4, 108, 6, 15, 57, 110, 84, 118, 71, 109, 50, 0, 11,
+			81, 106, 195, 182, 118, 197, 145, 98, 101, 110, 32, 28, 65, 4, 108, 6, 15, 71, 111, 50, 47, 109, 47, 113, 91, 0, 11, 81, 98, 195,
+			188, 110, 116, 101, 116, 195, 169, 115, 32, 22, 65, 4, 108, 6, 15, 91, 39, 52, 71, 108, 50, 0, 11, 81, 115, 111, 114, 98, 97, 110,
+			32, 21, 65, 4, 108, 6, 15, 47, 110, 65, 109, 81, 0, 11, 81, 116, 195, 182, 109, 101, 103, 32, 20, 65, 4, 108, 6, 15, 91, 39,
+			52, 71, 108, 0, 11, 81, 115, 111, 114, 98, 97, 32, 22, 65, 4, 108, 10, 6, 15, 107, 109, 57, 109, 47, 0, 11, 81, 104, 101, 108,
+			121, 101, 116, 32, 28, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 109, 65, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101,
+			109, 32, 23, 65, 4, 108, 6, 15, 65, 113, 52, 81, 109, 47, 0, 11, 81, 109, 195, 169, 114, 103, 101, 116, 32, 24, 65, 4, 108, 6,
+			15, 49, 113, 52, 72, 113, 91, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 32, 26, 65, 4, 108, 6, 15, 84, 108, 55, 115, 91,
+			114, 81, 0, 11, 81, 118, 97, 108, 195, 179, 115, 195, 161, 103, 32, 29, 65, 4, 108, 6, 15, 49, 110, 55, 76, 113, 81, 109, 47, 0,
+			11, 81, 107, 195, 182, 108, 116, 115, 195, 169, 103, 101, 116, 32, 26, 65, 4, 108, 6, 15, 89, 109, 52, 84, 109, 88, 118, 0, 11, 81,
+			115, 122, 101, 114, 118, 101, 122, 197, 145, 32, 29, 65, 4, 108, 6, 15, 107, 39, 50, 55, 108, 48, 57, 114, 50, 0, 11, 81, 104, 111,
+			110, 108, 97, 112, 106, 195, 161, 110, 32, 33, 65, 4, 108, 6, 15, 83, 109, 55, 47, 113, 47, 109, 55, 12, 109, 55, 0, 11, 81, 102,
+			101, 108, 116, 195, 169, 116, 101, 108, 108, 101, 108, 32, 31, 65, 4, 108, 6, 15, 49, 37, 47, 113, 47, 109, 55, 12, 109, 55, 0, 11,
+			81, 107, 105, 116, 195, 169, 116, 101, 108, 108, 101, 108, 32, 28, 65, 4, 108, 6, 15, 72, 110, 50, 47, 113, 91, 52, 109, 0, 11, 81,
+			100, 195, 182, 110, 116, 195, 169, 115, 114, 101, 32, 29, 65, 4, 108, 6, 15, 89, 110, 84, 109, 76, 12, 113, 81, 0, 11, 81, 115, 122,
+			195, 182, 118, 101, 116, 115, 195, 169, 103, 32, 30, 65, 4, 108, 6, 15, 89, 110, 84, 109, 76, 12, 113, 81, 0, 11, 81, 115, 122, 195,
+			182, 118, 101, 116, 116, 115, 195, 169, 103, 32, 21, 65, 4, 108, 6, 15, 119, 113, 61, 57, 108, 0, 11, 81, 99, 195, 169, 108, 106, 97,
+			32, 43, 65, 4, 108, 6, 15, 65, 109, 81, 89, 39, 52, 112, 47, 114, 91, 39, 49, 71, 108, 50, 0, 11, 81, 109, 101, 103, 115, 122,
+			111, 114, 195, 173, 116, 195, 161, 115, 111, 107, 98, 97, 110, 32, 23, 65, 4, 108, 6, 15, 67, 40, 81, 108, 47, 37, 0, 11, 81, 110,
+			121, 117, 103, 97, 116, 105, 32, 47, 65, 4, 108, 6, 15, 49, 110, 88, 110, 50, 91, 113, 81, 23, 91, 39, 52, 108, 37, 71, 108, 50,
+			0, 11, 82, 107, 195, 182, 122, 195, 182, 110, 115, 195, 169, 103, 32, 115, 111, 114, 97, 105, 98, 97, 110, 32, 23, 65, 4, 108, 6, 15,
+			107, 109, 57, 88, 109, 47, 0, 11, 81, 104, 101, 108, 121, 122, 101, 116, 32, 23, 65, 4, 108, 6, 15, 65, 113, 52, 55, 109, 81, 0,
+			11, 81, 109, 195, 169, 114, 108, 101, 103, 32, 26, 65, 4, 108, 6, 15, 47, 109, 52, 84, 109, 88, 109, 47, 0, 11, 81, 116, 101, 114,
+			118, 101, 122, 101, 116, 32, 28, 65, 4, 108, 6, 15, 107, 108, 55, 81, 108, 47, 115, 49, 0, 11, 81, 104, 97, 108, 108, 103, 97, 116,
+			195, 179, 107, 32, 49, 65, 4, 108, 6, 15, 49, 39, 52, 114, 71, 12, 37, 23, 109, 55, 49, 113, 48, 88, 109, 55, 113, 91, 0, 11,
+			82, 107, 111, 114, 195, 161, 98, 98, 105, 32, 101, 108, 107, 195, 169, 112, 122, 101, 108, 195, 169, 115, 32, 30, 65, 4, 108, 6, 15, 107,
+			114, 47, 12, 113, 52, 71, 109, 50, 0, 11, 81, 104, 195, 161, 116, 116, 195, 169, 114, 98, 101, 110, 32, 36, 65, 4, 108, 6, 15, 49,
+			110, 55, 76, 113, 81, 109, 49, 52, 118, 55, 0, 11, 81, 107, 195, 182, 108, 116, 115, 195, 169, 103, 101, 107, 114, 197, 145, 108, 32, 32,
+			65, 4, 108, 6, 23, 107, 108, 55, 81, 108, 47, 115, 50, 108, 49, 0, 11, 81, 104, 97, 108, 108, 103, 97, 116, 195, 179, 110, 97, 107,
+			32, 28, 65, 4, 108, 6, 15, 84, 114, 55, 47, 39, 88, 114, 91, 0, 11, 81, 118, 195, 161, 108, 116, 111, 122, 195, 161, 115, 32, 28,
+			65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 52, 109, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 114, 101, 32, 37, 65, 4,
+			108, 6, 15, 79, 115, 79, 89, 109, 52, 109, 49, 113, 52, 47, 0, 11, 81, 103, 121, 195, 179, 103, 121, 115, 122, 101, 114, 101, 107, 195,
+			169, 114, 116, 32, 24, 65, 4, 108, 6, 15, 71, 109, 47, 109, 81, 109, 49, 0, 11, 81, 98, 101, 116, 101, 103, 101, 107, 32, 78, 65,
+			4, 108, 6, 15, 71, 109, 47, 109, 81, 109, 49, 50, 109, 49, 23, 108, 6, 15, 79, 115, 79, 89, 109, 52, 47, 114, 65, 39, 81, 108,
+			47, 114, 91, 114, 47, 0, 11, 83, 98, 101, 116, 101, 103, 101, 107, 110, 101, 107, 32, 97, 32, 103, 121, 195, 179, 103, 121, 115, 122, 101,
+			114, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 195, 161, 116, 32, 20, 65, 4, 108, 6, 15, 47, 113, 67, 47, 0, 11, 81, 116,
+			195, 169, 110, 121, 116, 32, 26, 65, 4, 108, 6, 15, 72, 112, 57, 108, 88, 114, 91, 0, 11, 81, 100, 195, 173, 106, 97, 122, 195, 161,
+			115, 32, 26, 65, 4, 108, 6, 15, 67, 39, 65, 39, 88, 115, 49, 0, 11, 81, 110, 121, 111, 109, 111, 122, 195, 179, 107, 32, 35, 65,
+			4, 108, 6, 15, 83, 109, 55, 109, 55, 118, 91, 113, 81, 109, 47, 0, 11, 81, 102, 101, 108, 101, 108, 197, 145, 115, 115, 195, 169, 103,
+			101, 116, 32, 21, 65, 4, 108, 6, 15, 47, 111, 88, 109, 47, 0, 11, 81, 116, 195, 188, 122, 101, 116, 32, 26, 65, 4, 108, 6, 15,
+			47, 113, 65, 114, 71, 108, 50, 0, 11, 81, 116, 195, 169, 109, 195, 161, 98, 97, 110, 32, 25, 65, 4, 108, 6, 15, 83, 109, 55, 109,
+			55, 118, 91, 0, 11, 81, 102, 101, 108, 101, 108, 197, 145, 115, 32, 34, 65, 4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 109, 49, 71,
+			109, 50, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101, 107, 98, 101, 110, 32, 26, 65, 4, 108, 6, 15, 72, 39, 55, 81, 39,
+			72, 108, 47, 0, 11, 81, 100, 111, 108, 103, 111, 100, 97, 116, 32, 30, 65, 4, 108, 6, 23, 107, 108, 79, 39, 65, 108, 12, 67, 47,
+			0, 11, 81, 104, 97, 103, 121, 111, 109, 195, 161, 110, 121, 116, 32, 16, 65, 4, 108, 6, 15, 91, 39, 49, 0, 11, 81, 115, 111, 107,
+			32, 34, 65, 4, 108, 6, 15, 49, 113, 48, 109, 91, 12, 113, 81, 109, 37, 47, 0, 11, 81, 107, 195, 169, 112, 101, 115, 115, 195, 169,
+			103, 101, 105, 116, 32, 35, 65, 4, 108, 6, 15, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 47, 0, 11, 81, 102, 101, 108, 104, 97,
+			115, 122, 110, 195, 161, 108, 195, 179, 116, 32, 18, 65, 4, 108, 6, 15, 119, 37, 49, 12, 0, 11, 81, 99, 105, 107, 107, 32, 33, 65,
+			4, 108, 6, 15, 83, 114, 57, 55, 57, 108, 37, 50, 49, 108, 47, 0, 11, 81, 102, 195, 161, 106, 108, 106, 97, 105, 110, 107, 97, 116,
+			32, 41, 65, 4, 108, 6, 15, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 49, 50, 108, 49, 0, 11, 81, 102, 101, 108, 104, 97, 115,
+			122, 110, 195, 161, 108, 195, 179, 107, 110, 97, 107, 32, 36, 65, 4, 108, 6, 23, 91, 111, 57, 57, 109, 89, 47, 118, 71, 109, 50, 0,
+			11, 81, 115, 195, 188, 108, 108, 121, 101, 115, 122, 116, 197, 145, 98, 101, 110, 32, 28, 65, 4, 108, 6, 23, 83, 109, 57, 55, 118, 72,
+			113, 91, 0, 11, 81, 102, 101, 106, 108, 197, 145, 100, 195, 169, 115, 32, 26, 65, 4, 108, 6, 23, 52, 109, 50, 119, 109, 52, 47, 0,
+			11, 81, 114, 101, 110, 100, 115, 122, 101, 114, 116, 32, 30, 65, 4, 108, 6, 15, 55, 113, 81, 65, 39, 88, 81, 114, 91, 0, 11, 81,
+			108, 195, 169, 103, 109, 111, 122, 103, 195, 161, 115, 32, 23, 65, 4, 108, 6, 9, 15, 49, 109, 55, 109, 47, 37, 0, 11, 81, 107, 101,
+			108, 101, 116, 105, 32, 20, 65, 4, 108, 6, 9, 15, 72, 113, 55, 37, 0, 11, 81, 100, 195, 169, 108, 105, 32, 27, 65, 4, 108, 6,
+			15, 72, 39, 49, 47, 39, 52, 50, 118, 0, 11, 81, 100, 111, 107, 116, 111, 114, 110, 197, 145, 32, 29, 65, 4, 108, 6, 23, 89, 49,
+			52, 37, 48, 47, 71, 109, 50, 0, 11, 81, 115, 122, 107, 114, 105, 112, 116, 98, 101, 110, 32, 40, 65, 4, 108, 6, 23, 83, 109, 55,
+			108, 72, 108, 47, 39, 47, 23, 49, 108, 48, 57, 108, 0, 11, 82, 102, 101, 108, 97, 100, 97, 116, 111, 116, 32, 107, 97, 112, 106, 97,
+			32, 30, 65, 4, 108, 6, 23, 49, 110, 84, 109, 47, 49, 109, 88, 118, 0, 11, 81, 107, 195, 182, 118, 101, 116, 107, 101, 122, 197, 145,
+			32, 28, 65, 4, 108, 6, 23, 84, 114, 55, 47, 114, 91, 39, 50, 0, 11, 81, 118, 195, 161, 108, 116, 195, 161, 115, 111, 110, 32, 21,
+			65, 4, 108, 6, 15, 83, 109, 55, 107, 118, 0, 11, 81, 102, 101, 108, 104, 197, 145, 32, 24, 65, 4, 108, 6, 23, 52, 109, 50, 119,
+			109, 52, 0, 11, 81, 114, 101, 110, 100, 115, 122, 101, 114, 32, 34, 65, 4, 108, 6, 15, 49, 37, 47, 110, 55, 47, 113, 91, 49, 39,
+			52, 0, 11, 81, 107, 105, 116, 195, 182, 108, 116, 195, 169, 115, 107, 111, 114, 32, 38, 65, 4, 108, 6, 15, 83, 109, 57, 55, 109, 89,
+			47, 113, 91, 109, 49, 109, 47, 0, 11, 81, 102, 101, 106, 108, 101, 115, 122, 116, 195, 169, 115, 101, 107, 101, 116, 32, 32, 65, 4, 108,
+			6, 15, 49, 37, 47, 110, 55, 47, 118, 84, 109, 55, 0, 11, 81, 107, 105, 116, 195, 182, 108, 116, 197, 145, 118, 101, 108, 32, 32, 65,
+			4, 108, 6, 15, 49, 113, 52, 72, 113, 91, 109, 49, 52, 109, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101, 107, 114, 101, 32,
+			31, 65, 4, 108, 6, 15, 49, 113, 52, 72, 118, 112, 84, 109, 47, 0, 11, 81, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116,
+			32, 20, 65, 4, 108, 6, 15, 50, 108, 48, 39, 47, 0, 11, 81, 110, 97, 112, 111, 116, 32, 21, 65, 4, 108, 6, 15, 48, 113, 50,
+			89, 47, 0, 11, 81, 112, 195, 169, 110, 122, 116, 32, 31, 65, 4, 108, 6, 15, 49, 113, 52, 113, 91, 113, 84, 109, 55, 0, 11, 81,
+			107, 195, 169, 114, 195, 169, 115, 195, 169, 118, 101, 108, 32, 38, 65, 4, 108, 6, 15, 65, 37, 50, 37, 89, 47, 109, 52, 109, 55, 50,
+			110, 49, 0, 11, 81, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108, 110, 195, 182, 107, 32, 34, 65, 4, 108, 6, 107, 118, 65, 113,
+			52, 91, 113, 49, 55, 109, 47, 0, 11, 81, 104, 197, 145, 109, 195, 169, 114, 115, 195, 169, 107, 108, 101, 116, 32, 23, 65, 4, 108, 6,
+			15, 55, 109, 84, 109, 81, 118, 0, 11, 81, 108, 101, 118, 101, 103, 197, 145, 32, 27, 65, 4, 108, 6, 15, 83, 109, 55, 107, 118, 88,
+			109, 47, 0, 11, 81, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 35, 65, 4, 108, 6, 15, 49, 111, 55, 110, 50, 71, 91, 113, 81,
+			109, 47, 0, 11, 81, 107, 195, 188, 108, 195, 182, 110, 98, 115, 195, 169, 103, 101, 116, 32, 23, 65, 4, 108, 6, 15, 83, 109, 50, 113,
+			71, 109, 0, 11, 81, 102, 101, 110, 195, 169, 98, 101, 32, 20, 65, 4, 108, 6, 15, 72, 39, 55, 39, 81, 0, 11, 81, 100, 111, 108,
+			111, 103, 32, 21, 65, 4, 108, 6, 15, 107, 109, 57, 109, 72, 0, 11, 81, 104, 101, 108, 121, 101, 100, 32, 21, 65, 4, 108, 6, 15,
+			81, 113, 48, 109, 50, 0, 11, 81, 103, 195, 169, 112, 101, 110, 32, 30, 65, 4, 108, 6, 23, 48, 52, 39, 71, 55, 113, 65, 114, 65,
+			0, 11, 81, 112, 114, 111, 98, 108, 195, 169, 109, 195, 161, 109, 32, 12, 201, 81, 83, 1, 40, 67, 206, 61, 48, 64, 11, 8, 197, 90,
+			34, 207, 57, 144, 11, 5, 193, 4, 72, 10, 22, 65, 4, 108, 67, 67, 37, 15, 65, 6, 37, 50, 47, 0, 25, 83, 46, 32, 109, 32,
+			46, 32, 9, 4, 95, 35, 45, 97, 108, 0, 16, 0, 7, 196, 21, 168, 146, 80, 11, 24, 68, 5, 168, 146, 80, 108, 88, 113, 52, 47,
+			15, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 28, 68, 21, 168, 146, 80, 109, 88, 113, 52, 47, 15, 84, 108, 50, 15, 108,
+			88, 0, 11, 82, 118, 97, 110, 32, 97, 122, 32, 7, 196, 5, 168, 146, 80, 11, 7, 196, 16, 240, 142, 36, 11, 0, 27, 67, 16, 240,
+			128, 72, 39, 71, 10, 6, 15, 48, 37, 108, 119, 52, 108, 0, 11, 81, 112, 105, 97, 99, 114, 97, 32, 9, 198, 46, 36, 26, 137, 49,
+			64, 11, 9, 198, 46, 36, 26, 137, 49, 64, 11, 6, 195, 57, 151, 18, 11, 6, 195, 57, 151, 18, 15, 0, 0, 6, 65, 8, 71, 113,
+			0, 8, 197, 21, 54, 142, 20, 176, 11, 8, 197, 80, 84, 150, 20, 176, 11, 8, 197, 88, 20, 212, 4, 112, 11, 39, 69, 8, 243, 20,
+			60, 176, 71, 39, 55, 47, 39, 49, 10, 6, 15, 108, 57, 114, 50, 55, 108, 47, 108, 37, 0, 11, 81, 97, 106, 195, 161, 110, 108, 97,
+			116, 97, 105, 32, 8, 197, 52, 240, 211, 60, 176, 11, 8, 4, 95, 35, 45, 101, 109, 0, 0, 9, 198, 88, 17, 217, 84, 226, 192, 11,
+			7, 196, 80, 242, 138, 4, 11, 10, 199, 88, 19, 1, 52, 152, 146, 80, 11, 9, 198, 88, 17, 217, 84, 226, 192, 11, 9, 198, 57, 147,
+			205, 84, 226, 192, 11, 9, 198, 88, 84, 154, 38, 115, 128, 11, 35, 70, 81, 81, 10, 84, 226, 192, 47, 40, 79, 12, 40, 50, 49, 23,
+			47, 110, 55, 47, 109, 50, 37, 0, 11, 81, 116, 195, 182, 108, 116, 101, 110, 105, 32, 9, 198, 48, 82, 5, 77, 49, 78, 11, 9, 198,
+			80, 20, 148, 84, 226, 192, 11, 9, 198, 33, 83, 12, 61, 69, 0, 11, 12, 137, 102, 101, 108, 110, 195, 182, 118, 197, 145, 11, 6, 195,
+			74, 115, 1, 11, 0, 47, 70, 46, 132, 162, 8, 83, 128, 49, 110, 52, 113, 71, 109, 50, 23, 48, 52, 115, 71, 114, 55, 50, 114, 49,
+			23, 49, 37, 0, 11, 82, 112, 114, 195, 179, 98, 195, 161, 108, 110, 195, 161, 107, 32, 107, 105, 32, 42, 70, 46, 132, 162, 8, 83, 128,
+			49, 110, 52, 113, 71, 109, 50, 23, 37, 91, 23, 84, 37, 47, 108, 47, 39, 47, 12, 0, 11, 82, 105, 115, 32, 118, 105, 116, 97, 116,
+			111, 116, 116, 32, 24, 69, 81, 81, 20, 4, 208, 47, 40, 47, 12, 108, 65, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 7, 196,
+			54, 129, 235, 48, 11, 0, 24, 149, 195, 188, 103, 121, 102, 101, 108, 101, 107, 36, 117, 110, 115, 116, 114, 101, 115, 115, 101, 110, 100, 11,
+			10, 199, 161, 52, 218, 20, 112, 133, 56, 11, 10, 199, 44, 84, 133, 82, 32, 133, 56, 11, 12, 137, 98, 101, 108, 197, 145, 108, 195, 188,
+			107, 11, 10, 199, 61, 36, 218, 112, 112, 129, 56, 11, 0, 6, 65, 12, 119, 113, 0, 9, 198, 81, 195, 65, 17, 64, 64, 11, 6, 195,
+			4, 73, 212, 11, 7, 196, 48, 18, 231, 44, 11, 0, 12, 201, 77, 170, 22, 20, 113, 75, 8, 83, 128, 11, 10, 199, 44, 84, 133, 77,
+			165, 43, 48, 11, 0, 8, 197, 32, 17, 217, 80, 16, 11, 7, 196, 10, 84, 138, 4, 11, 8, 197, 52, 83, 148, 20, 208, 11, 16, 67,
+			61, 33, 139, 39, 109, 51, 109, 83, 49, 114, 0, 13, 42, 42, 15, 8, 95, 35, 45, 195, 169, 110, 101, 107, 113, 50, 109, 49, 0, 0,
+			12, 201, 88, 148, 197, 48, 177, 68, 137, 56, 142, 11, 44, 70, 32, 83, 25, 136, 225, 75, 107, 109, 57, 113, 50, 109, 49, 23, 65, 109,
+			81, 47, 108, 55, 114, 55, 114, 91, 108, 0, 11, 81, 109, 101, 103, 116, 97, 108, 195, 161, 108, 195, 161, 115, 97, 32, 9, 198, 52, 243,
+			132, 4, 232, 139, 11, 9, 198, 18, 131, 148, 20, 225, 75, 11, 0, 6, 65, 16, 72, 113, 0, 30, 68, 52, 144, 84, 80, 65, 37, 108,
+			47, 12, 23, 84, 108, 50, 23, 112, 79, 0, 11, 82, 118, 97, 110, 32, 195, 173, 103, 121, 32, 34, 68, 52, 144, 84, 80, 65, 6, 37,
+			108, 47, 12, 15, 67, 39, 65, 39, 88, 50, 108, 49, 0, 11, 81, 110, 121, 111, 109, 111, 122, 110, 97, 107, 32, 38, 68, 52, 144, 84,
+			80, 65, 37, 108, 47, 12, 23, 47, 37, 55, 47, 108, 49, 39, 88, 50, 108, 49, 0, 11, 81, 116, 105, 108, 116, 97, 107, 111, 122, 110,
+			97, 107, 32, 12, 201, 8, 83, 211, 105, 67, 212, 80, 160, 73, 11, 6, 195, 89, 196, 148, 11, 7, 196, 52, 144, 84, 80, 11, 0, 27,
+			3, 58, 47, 47, 40, 107, 101, 116, 116, 197, 145, 115, 112, 111, 110, 116, 112, 101, 114, 112, 101, 114, 41, 0, 8, 29, 0, 8, 197, 52,
+			83, 142, 36, 80, 11, 15, 140, 101, 108, 101, 103, 101, 110, 100, 197, 145, 110, 101, 107, 11, 10, 199, 41, 196, 129, 18, 34, 207, 80, 11,
+			6, 195, 24, 84, 211, 11, 0, 8, 197, 46, 181, 25, 173, 64, 11, 9, 198, 24, 84, 212, 20, 226, 64, 11, 9, 198, 44, 84, 133, 76,
+			226, 64, 11, 9, 198, 53, 85, 1, 80, 226, 64, 11, 6, 195, 24, 84, 212, 11, 12, 4, 95, 100, 112, 116, 15, 109, 81, 113, 89, 0,
+			0, 8, 197, 88, 17, 217, 60, 176, 72, 9, 198, 36, 112, 90, 60, 195, 137, 11, 33, 73, 36, 225, 37, 81, 103, 14, 100, 224, 75, 37,
+			50, 72, 112, 47, 84, 114, 67, 50, 108, 49, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 12, 201, 36, 229, 34, 104, 216, 142, 100,
+			225, 75, 11, 8, 197, 24, 17, 217, 60, 176, 11, 8, 197, 72, 80, 211, 20, 112, 11, 9, 198, 77, 161, 77, 137, 33, 64, 11, 9, 198,
+			26, 179, 5, 45, 33, 64, 11, 9, 198, 77, 68, 133, 77, 54, 128, 11, 4, 193, 20, 72, 4, 193, 20, 49, 4, 193, 20, 72, 0, 9,
+			198, 48, 84, 218, 80, 82, 192, 72, 10, 199, 88, 84, 218, 80, 85, 20, 20, 11, 11, 200, 44, 85, 133, 72, 81, 5, 81, 64, 11, 43,
+			11, 108, 101, 104, 101, 116, 197, 145, 115, 195, 169, 103, 55, 109, 107, 109, 47, 118, 91, 113, 81, 15, 84, 108, 50, 15, 108, 52, 52, 108,
+			0, 11, 82, 118, 97, 110, 32, 97, 114, 114, 97, 32, 6, 195, 49, 198, 128, 11, 36, 71, 88, 84, 218, 80, 85, 20, 20, 84, 109, 89,
+			47, 109, 47, 12, 109, 23, 113, 55, 109, 47, 113, 47, 0, 11, 81, 195, 169, 108, 101, 116, 195, 169, 116, 32, 11, 200, 52, 147, 137, 77,
+			165, 5, 73, 64, 11, 11, 200, 76, 146, 197, 72, 81, 5, 81, 64, 11, 9, 198, 88, 84, 218, 80, 82, 192, 11, 9, 198, 32, 149, 5,
+			50, 37, 0, 11, 9, 198, 52, 240, 137, 48, 242, 192, 11, 8, 197, 80, 81, 217, 172, 176, 11, 14, 139, 108, 101, 104, 101, 116, 197, 145,
+			115, 195, 169, 103, 11, 0, 7, 196, 50, 36, 14, 36, 11, 7, 196, 10, 86, 142, 36, 11, 0, 25, 70, 32, 19, 135, 104, 245, 20, 107,
+			108, 50, 81, 88, 39, 47, 12, 23, 109, 55, 0, 11, 81, 101, 108, 32, 27, 70, 32, 19, 135, 104, 245, 20, 107, 108, 50, 81, 88, 39,
+			47, 12, 10, 6, 15, 109, 55, 0, 11, 81, 101, 108, 32, 39, 69, 48, 18, 220, 76, 16, 55, 108, 49, 114, 91, 108, 23, 79, 40, 55,
+			12, 108, 47, 12, 23, 49, 37, 0, 11, 82, 103, 121, 117, 108, 108, 97, 100, 116, 32, 107, 105, 32, 9, 198, 56, 85, 133, 104, 85, 20,
+			11, 8, 197, 57, 154, 140, 56, 144, 11, 9, 198, 4, 194, 207, 80, 245, 20, 11, 9, 198, 77, 161, 82, 104, 85, 20, 11, 8, 197, 53,
+			196, 218, 56, 144, 11, 0, 7, 65, 24, 109, 83, 83, 0, 30, 67, 40, 241, 201, 57, 39, 81, 37, 23, 89, 110, 84, 109, 81, 109, 47,
+			0, 11, 81, 115, 122, 195, 182, 118, 101, 103, 101, 116, 32, 34, 67, 40, 241, 201, 57, 39, 81, 37, 15, 55, 113, 48, 113, 91, 109, 49,
+			109, 47, 0, 11, 81, 108, 195, 169, 112, 195, 169, 115, 101, 107, 101, 116, 32, 11, 200, 137, 10, 204, 21, 65, 75, 8, 80, 11, 0, 9,
+			198, 13, 49, 82, 136, 195, 137, 11, 10, 199, 77, 163, 198, 81, 97, 82, 20, 11, 9, 198, 8, 243, 25, 30, 115, 128, 11, 12, 137, 106,
+			101, 108, 108, 101, 109, 122, 197, 145, 11, 9, 198, 60, 179, 218, 61, 69, 0, 11, 0, 10, 199, 81, 195, 79, 28, 21, 14, 36, 11, 0,
+			44, 67, 137, 98, 71, 113, 84, 37, 81, 23, 55, 109, 89, 23, 47, 114, 65, 39, 81, 108, 47, 39, 47, 12, 0, 11, 82, 108, 101, 115,
+			122, 32, 116, 195, 161, 109, 111, 103, 97, 116, 111, 116, 116, 32, 7, 196, 44, 84, 133, 76, 11, 7, 196, 44, 84, 133, 76, 11, 6, 195,
+			77, 168, 139, 11, 0, 6, 65, 28, 81, 113, 0, 47, 70, 14, 35, 15, 45, 32, 64, 119, 113, 55, 39, 49, 52, 108, 23, 107, 108, 89,
+			50, 114, 55, 107, 108, 47, 50, 114, 49, 0, 11, 81, 104, 97, 115, 122, 110, 195, 161, 108, 104, 97, 116, 110, 195, 161, 107, 32, 10, 4,
+			95, 35, 45, 105, 109, 37, 0, 16, 0, 12, 201, 64, 243, 9, 80, 146, 220, 8, 19, 128, 11, 12, 201, 85, 64, 76, 89, 195, 153, 8,
+			19, 128, 11, 0, 23, 69, 80, 20, 148, 40, 16, 47, 108, 34, 80, 108, 10, 6, 15, 109, 55, 0, 11, 81, 101, 108, 32, 11, 136, 101,
+			114, 197, 145, 115, 122, 97, 107, 11, 12, 201, 32, 83, 25, 78, 33, 197, 44, 33, 78, 11, 7, 196, 80, 82, 5, 72, 11, 12, 201, 46,
+			36, 218, 172, 200, 139, 44, 83, 0, 11, 8, 197, 80, 20, 148, 40, 16, 11, 0, 31, 70, 42, 130, 5, 80, 225, 75, 57, 110, 107, 109,
+			47, 50, 109, 49, 23, 89, 115, 71, 108, 0, 11, 81, 115, 122, 195, 179, 98, 97, 32, 10, 199, 24, 148, 148, 5, 52, 213, 44, 11, 9,
+			198, 50, 37, 5, 104, 225, 75, 11, 16, 68, 112, 229, 19, 104, 114, 109, 50, 47, 113, 109, 89, 0, 42, 42, 0, 6, 65, 32, 107, 114,
+			0, 29, 68, 4, 192, 84, 80, 108, 55, 108, 47, 12, 23, 49, 113, 89, 111, 55, 0, 11, 81, 107, 195, 169, 115, 122, 195, 188, 108, 32,
+			34, 68, 4, 192, 84, 80, 108, 55, 108, 47, 12, 15, 72, 39, 55, 81, 39, 89, 47, 108, 49, 0, 11, 81, 100, 111, 108, 103, 111, 122,
+			116, 97, 107, 32, 6, 195, 10, 36, 148, 11, 6, 195, 46, 36, 148, 11, 7, 196, 4, 192, 84, 80, 11, 0, 26, 71, 60, 192, 211, 156,
+			32, 129, 80, 39, 55, 76, 115, 71, 12, 108, 47, 23, 37, 91, 0, 11, 81, 105, 115, 32, 8, 197, 81, 196, 138, 84, 176, 11, 10, 199,
+			57, 149, 71, 18, 82, 129, 80, 11, 9, 133, 197, 145, 115, 122, 105, 15, 11, 0, 12, 201, 80, 20, 148, 4, 195, 65, 104, 224, 75, 11,
+			12, 201, 80, 20, 148, 4, 195, 65, 104, 224, 75, 11, 8, 197, 84, 115, 210, 56, 144, 11, 8, 197, 58, 38, 133, 81, 64, 11, 8, 197,
+			48, 83, 142, 36, 80, 11, 0, 17, 1, 35, 49, 109, 47, 12, 118, 91, 49, 109, 52, 109, 89, 47, 0, 27, 9, 198, 65, 33, 77, 36,
+			84, 148, 11, 10, 199, 32, 19, 12, 61, 69, 21, 44, 11, 9, 198, 44, 86, 133, 48, 226, 64, 11, 9, 198, 24, 241, 193, 16, 226, 64,
+			11, 9, 198, 88, 147, 28, 28, 224, 75, 11, 0, 10, 199, 77, 160, 86, 5, 163, 212, 80, 11, 7, 196, 72, 17, 193, 16, 11, 8, 197,
+			48, 18, 206, 4, 176, 11, 8, 133, 98, 197, 145, 114, 116, 11, 0, 24, 1, 37, 115, 122, 195, 161, 122, 97, 108, 195, 169, 107, 107, 97,
+			108, 0, 44, 29, 81, 107, 97, 108, 32, 12, 1, 37, 89, 114, 88, 108, 55, 113, 49, 0, 27, 10, 199, 88, 84, 154, 38, 117, 129, 48,
+			11, 9, 199, 88, 84, 154, 38, 117, 129, 48, 9, 198, 32, 21, 129, 104, 146, 192, 11, 9, 198, 52, 243, 132, 4, 231, 13, 11, 9, 198,
+			32, 145, 199, 100, 82, 192, 11, 9, 198, 4, 176, 82, 56, 18, 192, 11, 9, 198, 44, 86, 133, 48, 146, 192, 11, 9, 198, 56, 85, 133,
+			104, 146, 192, 11, 8, 197, 37, 0, 82, 8, 16, 11, 0, 7, 1, 38, 113, 91, 0, 27, 9, 198, 48, 18, 220, 76, 32, 78, 11, 9,
+			198, 24, 244, 141, 112, 32, 78, 11, 48, 70, 24, 244, 141, 112, 32, 78, 83, 39, 52, 65, 114, 71, 108, 50, 23, 108, 6, 15, 47, 109,
+			52, 84, 109, 88, 109, 47, 71, 109, 50, 0, 11, 82, 97, 32, 116, 101, 114, 118, 101, 122, 101, 116, 98, 101, 110, 32, 9, 198, 88, 147,
+			28, 28, 32, 78, 11, 9, 198, 48, 148, 212, 112, 32, 78, 11, 8, 197, 20, 192, 68, 56, 144, 11, 9, 134, 99, 195, 173, 109, 197, 177,
+			11, 0, 45, 73, 61, 54, 148, 112, 198, 92, 56, 18, 192, 39, 89, 47, 114, 57, 114, 50, 108, 49, 23, 84, 109, 88, 109, 47, 113, 91,
+			113, 47, 0, 11, 81, 118, 101, 122, 101, 116, 195, 169, 115, 195, 169, 116, 32, 16, 141, 114, 101, 110, 100, 197, 145, 114, 195, 182, 107, 110,
+			101, 107, 11, 12, 201, 81, 196, 135, 100, 19, 10, 4, 224, 75, 11, 12, 201, 81, 196, 135, 100, 19, 10, 4, 224, 75, 11, 10, 199, 5,
+			81, 213, 77, 165, 21, 76, 15, 0, 6, 65, 40, 57, 113, 0, 12, 201, 29, 144, 78, 169, 57, 84, 4, 224, 75, 11, 8, 197, 24, 241,
+			202, 84, 176, 11, 14, 203, 44, 243, 80, 5, 66, 66, 36, 194, 83, 20, 176, 11, 7, 196, 12, 149, 137, 48, 11, 6, 195, 74, 36, 212,
+			11, 0, 9, 198, 88, 243, 20, 84, 226, 192, 72, 31, 70, 137, 10, 204, 21, 65, 64, 113, 48, 111, 55, 109, 47, 109, 23, 109, 55, 118,
+			47, 12, 0, 11, 81, 101, 108, 197, 145, 116, 116, 32, 0, 11, 1, 42, 76, 37, 55, 55, 108, 81, 0, 27, 6, 195, 32, 246, 128, 11,
+			0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 9, 198, 77, 163, 203, 80, 19, 64, 11, 7, 196, 45, 195, 211, 104, 11, 0, 6, 65, 44,
+			49, 114, 0, 13, 202, 64, 148, 218, 80, 243, 25, 60, 178, 193, 48, 11, 9, 134, 116, 197, 177, 110, 105, 107, 11, 0, 48, 73, 46, 131,
+			20, 78, 33, 197, 44, 177, 76, 49, 110, 55, 76, 113, 81, 109, 49, 12, 109, 55, 23, 83, 111, 81, 12, 23, 110, 89, 12, 109, 0, 11,
+			82, 102, 195, 188, 103, 103, 32, 195, 182, 115, 115, 122, 101, 32, 12, 201, 80, 19, 148, 21, 53, 43, 48, 85, 5, 11, 9, 198, 25, 194,
+			140, 41, 197, 0, 11, 7, 196, 20, 225, 197, 52, 11, 0, 10, 1, 46, 48, 2, 39, 50, 47, 0, 27, 9, 198, 88, 243, 20, 5, 67,
+			203, 72, 12, 201, 89, 195, 1, 77, 160, 73, 10, 115, 0, 11, 7, 196, 14, 35, 10, 4, 11, 7, 196, 54, 163, 22, 4, 11, 0, 8,
+			1, 47, 48, 109, 52, 0, 27, 12, 201, 46, 134, 137, 57, 72, 154, 54, 35, 153, 11, 0, 7, 65, 48, 109, 55, 55, 0, 9, 198, 8,
+			244, 165, 80, 167, 11, 11, 12, 201, 44, 244, 140, 113, 67, 218, 61, 69, 0, 11, 9, 198, 40, 21, 165, 80, 167, 11, 11, 9, 198, 40,
+			21, 165, 80, 167, 11, 11, 8, 197, 32, 83, 25, 21, 48, 76, 12, 4, 95, 100, 105, 97, 47, 52, 113, 65, 108, 0, 17, 1, 48, 50,
+			40, 55, 12, 114, 91, 47, 0, 44, 81, 32, 115, 116, 32, 20, 1, 48, 50, 40, 55, 12, 114, 52, 115, 55, 0, 44, 81, 32, 114, 195,
+			179, 108, 32, 15, 1, 48, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 110, 32, 20, 1, 48, 50, 40, 55, 12, 114, 47, 115, 55, 0,
+			44, 81, 32, 116, 195, 179, 108, 32, 21, 1, 48, 50, 40, 55, 12, 114, 91, 39, 50, 0, 44, 81, 32, 195, 161, 115, 111, 110, 32, 19,
+			1, 48, 50, 40, 55, 12, 114, 71, 108, 0, 44, 81, 32, 195, 161, 98, 97, 32, 21, 1, 48, 50, 40, 55, 12, 114, 71, 108, 50, 0,
+			44, 81, 32, 195, 161, 98, 97, 110, 32, 16, 1, 48, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 97, 110, 32, 16, 1, 48, 50, 40,
+			55, 12, 114, 47, 0, 44, 81, 32, 97, 116, 32, 22, 1, 48, 50, 40, 55, 12, 114, 47, 115, 55, 0, 44, 81, 32, 195, 161, 116, 195,
+			179, 108, 32, 17, 1, 48, 50, 40, 55, 12, 114, 47, 0, 44, 81, 32, 195, 161, 116, 32, 17, 1, 48, 50, 40, 55, 12, 114, 71, 108,
+			0, 44, 81, 32, 98, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114, 71, 108, 50, 0, 44, 81, 32, 98, 97, 110, 32, 17, 1, 48, 50,
+			40, 55, 12, 114, 37, 81, 0, 44, 81, 32, 105, 103, 32, 17, 1, 48, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 195, 161, 110, 32,
+			19, 1, 48, 50, 40, 55, 12, 114, 52, 108, 0, 44, 81, 32, 195, 161, 114, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114, 91, 52, 108,
+			0, 44, 81, 32, 115, 114, 97, 32, 15, 1, 48, 50, 40, 55, 12, 114, 91, 0, 44, 81, 32, 115, 32, 19, 1, 48, 50, 40, 55, 12,
+			114, 107, 39, 88, 0, 44, 81, 32, 104, 111, 122, 32, 20, 1, 48, 50, 40, 55, 12, 114, 50, 114, 55, 0, 44, 81, 32, 110, 195, 161,
+			108, 32, 17, 1, 48, 50, 40, 55, 12, 114, 52, 108, 0, 44, 81, 32, 114, 97, 32, 19, 1, 48, 50, 40, 55, 12, 114, 84, 108, 55,
+			0, 44, 81, 32, 118, 97, 108, 32, 15, 1, 48, 50, 40, 55, 12, 114, 47, 0, 44, 81, 32, 116, 32, 17, 1, 48, 50, 40, 55, 12,
+			114, 91, 0, 44, 81, 32, 195, 161, 115, 32, 0, 10, 199, 24, 243, 25, 80, 21, 10, 4, 11, 17, 1, 49, 109, 79, 12, 109, 55, 0,
+			44, 81, 32, 103, 121, 101, 108, 32, 17, 1, 49, 109, 79, 12, 109, 91, 0, 44, 81, 32, 103, 121, 101, 115, 32, 17, 1, 49, 109, 79,
+			12, 109, 47, 0, 44, 81, 32, 103, 121, 101, 116, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 0, 44, 16, 29, 81, 32, 106,
+			195, 169, 116, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 104, 101, 122, 0, 44, 16, 29, 81, 32, 195, 169, 104, 101, 122, 32, 21,
+			1, 49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 16, 29, 81, 32, 105, 107, 101, 105, 32, 19, 1, 49, 101, 108, 115, 101, 106, 101, 0,
+			44, 16, 29, 81, 32, 105, 107, 101, 32, 20, 1, 49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 16, 29, 81, 32, 105, 107, 105, 32, 27,
+			1, 49, 101, 108, 115, 101, 106, 195, 169, 110, 195, 169, 108, 0, 44, 16, 29, 81, 32, 195, 169, 110, 195, 169, 108, 32, 28, 1, 49, 101,
+			108, 115, 101, 106, 195, 169, 110, 195, 169, 108, 0, 44, 16, 29, 81, 32, 106, 195, 169, 110, 195, 169, 108, 32, 23, 1, 49, 101, 108, 115,
+			101, 106, 195, 169, 118, 101, 108, 0, 44, 16, 29, 81, 32, 118, 101, 108, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 110, 101, 107,
+			0, 44, 16, 29, 81, 32, 195, 169, 110, 101, 107, 32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 105, 103, 0, 44, 16, 29, 81, 32,
+			106, 195, 169, 105, 103, 32, 28, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 197, 145, 108, 0, 44, 16, 29, 81, 32, 106, 195, 169, 116,
+			197, 145, 108, 32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 16, 29, 81, 32, 106, 195, 169, 114, 101, 32, 26, 1,
+			49, 101, 108, 115, 101, 106, 195, 169, 118, 101, 108, 0, 44, 16, 29, 81, 32, 106, 195, 169, 118, 101, 108, 32, 20, 1, 49, 101, 108, 115,
+			101, 106, 101, 105, 0, 44, 16, 29, 81, 32, 106, 101, 105, 32, 18, 1, 49, 101, 108, 115, 101, 106, 101, 0, 44, 16, 29, 81, 32, 106,
+			101, 32, 21, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116, 0, 44, 16, 29, 81, 32, 195, 169, 116, 32, 27, 1, 49, 101, 108, 115, 101,
+			106, 195, 169, 116, 197, 145, 108, 0, 44, 16, 29, 81, 32, 195, 169, 116, 197, 145, 108, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169,
+			105, 103, 0, 44, 29, 81, 32, 195, 169, 105, 103, 32, 24, 1, 49, 101, 108, 115, 101, 106, 195, 169, 118, 101, 108, 0, 44, 29, 81, 32,
+			195, 169, 118, 101, 108, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 197, 145, 108, 0, 44, 16, 29, 81, 32, 114, 197, 145, 108,
+			32, 27, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 197, 145, 108, 0, 44, 16, 29, 81, 32, 195, 169, 114, 197, 145, 108, 32, 21, 1,
+			49, 101, 108, 115, 101, 106, 195, 169, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 25, 1, 49, 101, 108, 115, 101, 106, 195, 169, 116,
+			197, 145, 108, 0, 44, 16, 29, 81, 32, 116, 197, 145, 108, 32, 21, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 16, 29,
+			81, 32, 114, 101, 32, 23, 1, 49, 101, 108, 115, 101, 106, 195, 169, 114, 101, 0, 44, 16, 29, 81, 32, 195, 169, 114, 101, 32, 19, 1,
+			49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 16, 29, 81, 32, 101, 105, 32, 18, 1, 49, 101, 108, 115, 101, 106, 101, 105, 0, 44, 16,
+			29, 81, 32, 105, 32, 22, 1, 49, 101, 108, 115, 101, 106, 195, 169, 110, 0, 44, 16, 29, 81, 32, 106, 195, 169, 110, 32, 21, 1, 49,
+			101, 108, 115, 101, 106, 195, 169, 110, 0, 44, 16, 29, 81, 32, 195, 169, 110, 32, 17, 1, 49, 101, 108, 115, 101, 106, 101, 0, 44, 16,
+			29, 81, 32, 101, 32, 0, 11, 200, 24, 147, 143, 54, 85, 19, 112, 176, 11, 24, 69, 88, 82, 5, 80, 144, 84, 109, 107, 109, 47, 37,
+			23, 108, 89, 47, 0, 11, 81, 97, 122, 116, 32, 11, 200, 32, 149, 129, 80, 179, 218, 88, 16, 11, 18, 1, 50, 49, 109, 47, 12, 118,
+			84, 109, 55, 0, 44, 81, 32, 101, 108, 32, 15, 1, 50, 49, 109, 47, 12, 118, 65, 0, 44, 81, 32, 109, 32, 15, 1, 50, 49, 109,
+			47, 12, 118, 50, 0, 44, 81, 32, 110, 32, 17, 1, 50, 49, 109, 47, 12, 118, 50, 0, 44, 81, 32, 197, 145, 110, 32, 17, 1, 50,
+			49, 109, 47, 12, 118, 47, 0, 44, 81, 32, 197, 145, 116, 32, 18, 1, 50, 49, 113, 119, 12, 109, 52, 0, 44, 81, 32, 115, 122, 101,
+			114, 32, 28, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 116, 195, 179, 108, 0, 44, 16, 29, 81, 32, 116, 197, 145, 108, 32,
+			30, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 116, 195, 179, 108, 0, 44, 16, 29, 81, 32, 195, 169, 116, 197, 145, 108, 32,
+			24, 1, 50, 109, 195, 161, 115, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 21, 1, 50, 109, 195, 161,
+			115, 111, 100, 105, 107, 97, 105, 0, 44, 16, 29, 81, 32, 105, 32, 0, 10, 199, 24, 83, 1, 16, 21, 15, 44, 11, 15, 204, 88, 148,
+			211, 104, 23, 12, 50, 85, 28, 77, 197, 0, 11, 17, 1, 51, 107, 114, 52, 65, 108, 91, 0, 44, 81, 32, 109, 97, 115, 32, 15, 1,
+			51, 107, 114, 52, 65, 108, 47, 0, 44, 81, 32, 116, 32, 26, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 12, 108, 55, 0, 44, 81,
+			32, 97, 100, 105, 107, 107, 97, 108, 32, 24, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 39, 50, 0, 44, 81, 32, 97, 100, 105, 107,
+			111, 110, 32, 24, 1, 51, 107, 108, 52, 65, 108, 72, 37, 49, 108, 47, 0, 44, 81, 32, 97, 100, 105, 107, 97, 116, 32, 20, 1, 51,
+			107, 108, 52, 65, 108, 72, 37, 49, 0, 44, 81, 32, 97, 100, 105, 107, 32, 16, 1, 51, 107, 114, 52, 65, 39, 50, 0, 44, 81, 32,
+			111, 110, 32, 18, 1, 51, 107, 114, 52, 39, 65, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 24, 1, 51, 104, 97, 114, 109, 97, 100,
+			105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 21, 1, 51, 107, 108, 52, 10, 65, 108, 72, 37, 49, 108, 37, 0,
+			44, 16, 81, 32, 105, 32, 0, 7, 65, 52, 109, 65, 65, 0, 39, 69, 72, 18, 206, 4, 176, 52, 108, 49, 50, 108, 49, 10, 6, 15,
+			71, 109, 50, 12, 111, 50, 49, 109, 47, 0, 11, 81, 98, 101, 110, 110, 195, 188, 110, 107, 101, 116, 32, 7, 196, 80, 84, 133, 80, 11,
+			18, 70, 53, 97, 217, 61, 54, 128, 109, 65, 84, 113, 79, 113, 39, 109, 89, 0, 25, 1, 52, 50, 109, 79, 109, 72, 37, 49, 12, 109,
+			55, 0, 44, 81, 32, 101, 100, 105, 107, 107, 101, 108, 32, 23, 1, 52, 50, 109, 79, 109, 72, 37, 49, 109, 50, 0, 44, 81, 32, 101,
+			100, 105, 107, 101, 110, 32, 23, 1, 52, 50, 109, 79, 109, 72, 37, 49, 109, 47, 0, 44, 81, 32, 101, 100, 105, 107, 101, 116, 32, 19,
+			1, 52, 50, 109, 79, 109, 72, 37, 49, 0, 44, 81, 32, 101, 100, 105, 107, 32, 14, 1, 52, 50, 113, 79, 109, 47, 0, 44, 81, 32,
+			116, 32, 18, 1, 52, 50, 113, 79, 12, 109, 55, 0, 44, 81, 32, 103, 121, 101, 108, 32, 16, 1, 52, 50, 113, 79, 12, 109, 55, 0,
+			44, 81, 32, 101, 108, 32, 0, 31, 70, 20, 195, 65, 72, 17, 0, 109, 55, 65, 108, 52, 108, 72, 23, 108, 47, 12, 115, 55, 0, 11,
+			81, 97, 116, 116, 195, 179, 108, 32, 6, 195, 10, 36, 133, 11, 9, 198, 77, 167, 14, 80, 17, 0, 11, 9, 198, 8, 84, 218, 136, 195,
+			137, 11, 9, 198, 12, 146, 203, 56, 82, 192, 11, 6, 195, 29, 198, 128, 11, 6, 195, 33, 198, 128, 11, 15, 1, 53, 110, 47, 12, 109,
 			55, 0, 44, 81, 32, 101, 108, 32, 18, 1, 53, 110, 119, 12, 110, 52, 0, 44, 81, 32, 115, 122, 195, 182, 114, 32, 13, 1, 53, 110,
-			47, 110, 47, 0, 44, 81, 32, 116, 32, 23, 1, 53, 110, 47, 110, 72, 37, 49, 113, 47, 118, 55, 0, 44, 21, 81, 32, 116, 197, 145,
+			47, 110, 47, 0, 44, 81, 32, 116, 32, 23, 1, 53, 110, 47, 110, 72, 37, 49, 113, 47, 118, 55, 0, 44, 16, 81, 32, 116, 197, 145,
 			108, 32, 15, 1, 53, 110, 47, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 16, 1, 53, 110, 47, 12, 109, 55, 0, 44, 81, 32, 116,
-			101, 108, 32, 13, 7, 95, 35, 45, 195, 169, 9, 7, 113, 37, 81, 0, 0, 35, 7, 8, 195, 169, 20, 20, 5, 12, 107, 113, 47, 12,
-			109, 55, 23, 109, 88, 109, 55, 118, 47, 12, 0, 13, 81, 101, 122, 101, 108, 197, 145, 116, 116, 32, 10, 199, 20, 195, 69, 57, 65, 78,
-			36, 13, 10, 135, 195, 169, 18, 22, 5, 12, 20, 13, 10, 199, 32, 19, 12, 28, 21, 14, 36, 13, 6, 195, 52, 83, 148, 13, 18, 1,
-			54, 107, 108, 119, 12, 39, 52, 0, 44, 81, 32, 115, 122, 111, 114, 32, 24, 1, 54, 107, 108, 47, 39, 72, 37, 49, 114, 47, 115, 55,
-			0, 44, 21, 81, 32, 116, 195, 179, 108, 32, 18, 1, 54, 107, 108, 47, 12, 115, 55, 0, 44, 81, 32, 116, 195, 179, 108, 32, 17, 1,
-			54, 107, 108, 47, 12, 108, 55, 0, 44, 81, 32, 116, 97, 108, 32, 16, 1, 54, 107, 108, 47, 12, 108, 55, 0, 44, 81, 32, 97, 108,
-			32, 23, 1, 54, 104, 97, 116, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 19, 1, 54, 107, 108, 47,
-			39, 72, 37, 49, 108, 37, 0, 44, 21, 81, 32, 105, 32, 0, 31, 68, 80, 83, 142, 36, 47, 109, 50, 12, 37, 10, 6, 15, 108, 49,
-			108, 52, 114, 91, 0, 13, 81, 97, 107, 97, 114, 195, 161, 115, 32, 22, 68, 80, 83, 142, 36, 47, 109, 50, 12, 37, 23, 108, 89, 47,
-			0, 13, 81, 97, 122, 116, 32, 9, 134, 5, 19, 20, 195, 169, 14, 13, 7, 196, 80, 83, 142, 36, 13, 18, 1, 55, 107, 113, 119, 12,
-			109, 52, 0, 44, 81, 32, 115, 122, 101, 114, 32, 19, 1, 55, 107, 109, 47, 109, 91, 12, 109, 55, 0, 44, 81, 32, 115, 101, 108, 32,
-			22, 1, 55, 107, 109, 47, 109, 91, 109, 49, 52, 109, 0, 44, 81, 32, 115, 101, 107, 114, 101, 32, 16, 1, 55, 107, 113, 47, 12, 109,
-			55, 0, 44, 81, 32, 101, 108, 32, 17, 1, 55, 107, 113, 47, 12, 109, 55, 0, 44, 81, 32, 116, 101, 108, 32, 24, 1, 55, 107, 109,
-			47, 109, 72, 37, 49, 113, 47, 118, 55, 0, 44, 21, 81, 32, 116, 197, 145, 108, 32, 18, 1, 55, 107, 113, 47, 12, 118, 55, 0, 44,
-			81, 32, 116, 197, 145, 108, 32, 0, 7, 65, 56, 109, 50, 50, 0, 8, 197, 57, 147, 205, 60, 176, 13, 8, 197, 24, 17, 217, 56, 144,
-			13, 9, 134, 1, 11, 3, 9, 195, 179, 13, 8, 197, 88, 84, 218, 36, 176, 13, 10, 135, 22, 195, 169, 7, 195, 169, 14, 13, 7, 132,
-			195, 188, 7, 25, 13, 10, 135, 22, 195, 169, 7, 195, 169, 14, 20, 17, 1, 56, 67, 39, 55, 119, 12, 108, 55, 0, 44, 81, 32, 97,
-			108, 32, 18, 1, 56, 67, 39, 55, 119, 12, 108, 55, 0, 44, 81, 32, 99, 97, 108, 32, 25, 1, 56, 110, 121, 111, 108, 99, 97, 100,
-			105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 20, 1, 56, 67, 39, 55, 119, 108, 72, 37, 49, 108, 37, 0, 44,
-			21, 81, 32, 105, 32, 0, 51, 10, 22, 195, 161, 12, 1, 19, 26, 15, 12, 20, 84, 114, 55, 108, 89, 39, 55, 47, 23, 108, 6, 15,
-			83, 109, 55, 84, 109, 47, 113, 91, 52, 109, 0, 13, 82, 97, 32, 102, 101, 108, 118, 101, 116, 195, 169, 115, 114, 101, 32, 12, 137, 20,
-			1, 12, 195, 161, 12, 20, 1, 13, 13, 57, 15, 11, 195, 182, 20, 5, 12, 5, 26, 5, 20, 20, 19, 195, 169, 7, 49, 110, 47, 109,
-			55, 109, 88, 109, 76, 12, 113, 81, 23, 71, 37, 89, 47, 39, 91, 112, 47, 108, 50, 37, 0, 13, 81, 98, 105, 122, 116, 111, 115, 195,
-			173, 116, 97, 110, 105, 32, 10, 135, 20, 197, 177, 14, 20, 5, 11, 13, 19, 1, 57, 49, 37, 55, 109, 50, 119, 109, 47, 0, 44, 81,
-			32, 99, 101, 116, 32, 20, 1, 57, 49, 37, 55, 109, 50, 119, 12, 109, 55, 0, 44, 81, 32, 99, 101, 108, 32, 19, 1, 57, 49, 37,
-			55, 109, 50, 119, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0, 29, 10, 19, 26, 195, 161, 13, 15, 12, 20, 1, 13, 89, 114, 65,
-			39, 55, 47, 108, 65, 23, 49, 37, 0, 13, 81, 107, 105, 32, 10, 135, 26, 195, 161, 18, 21, 12, 20, 13, 10, 135, 2, 5, 19, 26,
-			195, 169, 12, 13, 9, 134, 2, 195, 173, 26, 22, 1, 13, 14, 139, 6, 5, 10, 12, 197, 145, 4, 195, 182, 20, 20, 13, 14, 139, 11,
-			5, 26, 4, 197, 145, 4, 195, 182, 20, 20, 13, 0, 12, 137, 5, 12, 20, 197, 177, 14, 20, 5, 11, 13, 7, 196, 77, 160, 71, 4,
-			13, 12, 137, 5, 10, 20, 5, 20, 20, 195, 169, 11, 13, 0, 36, 69, 80, 84, 212, 72, 80, 47, 109, 91, 47, 52, 109, 10, 6, 15,
-			89, 108, 71, 107, 108, 47, 115, 0, 13, 81, 115, 122, 97, 98, 104, 97, 116, 195, 179, 32, 38, 8, 5, 7, 25, 195, 188, 22, 195, 169,
-			109, 79, 12, 111, 84, 113, 23, 47, 108, 34, 47, 39, 88, 114, 91, 0, 13, 81, 116, 97, 114, 116, 111, 122, 195, 161, 115, 32, 9, 198,
-			13, 48, 80, 5, 67, 203, 13, 44, 12, 22, 1, 12, 195, 179, 19, 26, 195, 173, 14, 197, 177, 84, 108, 55, 115, 89, 112, 50, 117, 15,
-			10, 107, 37, 72, 109, 81, 109, 71, 12, 0, 13, 81, 104, 105, 100, 101, 103, 101, 98, 98, 32, 8, 197, 4, 64, 84, 60, 176, 13, 16,
-			141, 5, 12, 11, 5, 26, 4, 197, 145, 4, 195, 182, 20, 20, 13, 12, 137, 11, 9, 20, 195, 169, 20, 5, 12, 20, 13, 15, 140, 22,
-			1, 12, 195, 179, 19, 26, 195, 173, 14, 197, 177, 13, 16, 141, 10, 5, 12, 195, 182, 12, 195, 169, 19, 14, 195, 169, 12, 13, 0, 11,
-			1, 61, 109, 79, 109, 50, 55, 118, 0, 27, 18, 143, 6, 5, 12, 5, 12, 197, 145, 19, 19, 195, 169, 7, 195, 188, 11, 13, 17, 142,
-			13, 5, 7, 11, 5, 26, 4, 197, 145, 4, 195, 182, 20, 20, 13, 17, 142, 195, 169, 18, 4, 5, 11, 12, 197, 145, 4, 195, 182, 20,
-			20, 13, 0, 40, 9, 11, 195, 169, 16, 20, 5, 12, 5, 14, 49, 113, 48, 47, 109, 55, 109, 50, 23, 71, 109, 47, 109, 81, 50, 109,
-			49, 0, 13, 81, 98, 101, 116, 101, 103, 110, 101, 107, 32, 56, 13, 195, 169, 16, 195, 188, 12, 5, 20, 5, 11, 8, 5, 26, 113, 48,
-			111, 55, 109, 47, 109, 49, 107, 109, 88, 23, 107, 108, 89, 39, 50, 55, 112, 47, 39, 47, 12, 108, 0, 13, 81, 104, 97, 115, 111, 110,
-			108, 195, 173, 116, 111, 116, 116, 97, 32, 0, 45, 9, 20, 1, 12, 195, 161, 12, 20, 1, 11, 47, 108, 55, 114, 55, 47, 108, 49, 23,
-			108, 6, 15, 67, 39, 65, 39, 88, 115, 49, 0, 13, 82, 97, 32, 110, 121, 111, 109, 111, 122, 195, 179, 107, 32, 12, 137, 20, 1, 12,
-			195, 161, 12, 20, 1, 11, 13, 30, 9, 13, 5, 18, 195, 188, 12, 20, 5, 11, 65, 109, 52, 111, 55, 47, 109, 49, 23, 83, 109, 55,
-			0, 13, 81, 102, 101, 108, 32, 12, 137, 16, 195, 179, 26, 15, 12, 20, 1, 11, 13, 19, 144, 2, 9, 12, 12, 5, 14, 20, 25, 197,
-			177, 26, 5, 20, 20, 5, 12, 13, 14, 139, 9, 7, 1, 26, 7, 1, 20, 195, 179, 10, 1, 13, 11, 200, 72, 83, 132, 77, 161, 82,
-			8, 80, 13, 0, 10, 1, 64, 49, 40, 49, 108, 119, 0, 27, 6, 65, 64, 48, 113, 0, 13, 138, 19, 26, 195, 161, 13, 15, 12, 20,
-			1, 11, 13, 0, 13, 138, 11, 195, 169, 18, 195, 169, 19, 195, 169, 20, 13, 23, 5, 20, 195, 169, 14, 25, 47, 113, 67, 10, 6, 15,
-			91, 109, 65, 0, 13, 81, 115, 101, 109, 32, 42, 70, 77, 162, 78, 80, 83, 128, 89, 37, 50, 47, 109, 50, 23, 47, 109, 91, 47, 52,
-			109, 89, 108, 71, 50, 37, 0, 13, 81, 116, 101, 115, 116, 114, 101, 115, 122, 97, 98, 110, 105, 32, 9, 198, 77, 162, 78, 80, 83, 128,
-			13, 8, 133, 20, 195, 169, 14, 25, 13, 0, 14, 139, 20, 5, 13, 5, 20, 197, 145, 10, 195, 169, 20, 13, 17, 142, 13, 5, 7, 1,
-			12, 1, 16, 195, 173, 20, 195, 179, 10, 1, 13, 15, 140, 195, 169, 18, 20, 5, 19, 195, 188, 12, 20, 5, 11, 13, 0, 10, 135, 195,
-			169, 18, 9, 14, 20, 9, 13, 0, 6, 65, 68, 49, 40, 0, 31, 8, 195, 169, 10, 19, 26, 1, 11, 1, 113, 57, 89, 108, 49, 108,
-			10, 6, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 12, 137, 20, 197, 177, 26, 6, 1, 12, 1, 20, 13, 11, 136, 20,
-			1, 18, 20, 1, 14, 195, 161, 13, 0, 19, 144, 13, 197, 177, 11, 195, 182, 4, 20, 5, 20, 195, 169, 19, 8, 5, 26, 13, 0, 11,
-			136, 6, 195, 161, 10, 12, 21, 14, 11, 13, 10, 199, 12, 83, 148, 72, 146, 213, 76, 13, 0, 18, 68, 77, 161, 19, 104, 101, 115, 122,
-			100, 195, 169, 101, 115, 122, 0, 29, 42, 38, 68, 4, 32, 129, 56, 108, 71, 12, 108, 50, 23, 83, 39, 81, 55, 108, 55, 47, 108, 49,
-			108, 47, 0, 13, 81, 102, 111, 103, 108, 97, 108, 116, 97, 107, 97, 116, 32, 18, 143, 11, 195, 182, 26, 9, 14, 20, 195, 169, 26, 13,
-			195, 169, 14, 25, 13, 11, 136, 13, 195, 161, 19, 18, 195, 179, 12, 13, 16, 141, 3, 195, 169, 12, 11, 9, 20, 197, 177, 26, 195, 169,
-			19, 13, 7, 196, 20, 32, 133, 56, 13, 7, 196, 4, 32, 129, 56, 13, 0, 7, 65, 72, 109, 51, 51, 0, 21, 146, 22, 195, 169, 7,
-			12, 5, 7, 5, 19, 195, 173, 20, 5, 20, 20, 195, 169, 11, 13, 8, 197, 32, 148, 218, 20, 64, 13, 0, 10, 135, 18, 195, 169, 13,
-			12, 9, 11, 13, 8, 133, 13, 195, 169, 7, 25, 13, 0, 12, 137, 9, 18, 195, 161, 14, 25, 8, 15, 26, 13, 10, 199, 80, 20, 148,
-			4, 195, 65, 104, 13, 0, 7, 196, 81, 81, 19, 104, 76, 18, 67, 32, 241, 217, 107, 39, 79, 4, 108, 49, 37, 0, 81, 97, 107, 105,
-			32, 17, 67, 32, 241, 217, 107, 4, 39, 79, 4, 108, 88, 0, 81, 97, 122, 32, 15, 67, 32, 241, 217, 107, 4, 39, 79, 4, 108, 0,
-			81, 97, 32, 9, 198, 80, 84, 133, 52, 33, 78, 13, 34, 7, 5, 21, 18, 195, 179, 16, 1, 109, 40, 52, 115, 48, 108, 15, 10, 67,
-			40, 81, 108, 47, 37, 0, 13, 81, 110, 121, 117, 103, 97, 116, 105, 32, 6, 195, 52, 81, 217, 13, 7, 132, 19, 195, 179, 20, 13, 6,
-			195, 52, 81, 217, 13, 0, 7, 65, 76, 109, 91, 0, 14, 6, 65, 76, 91, 10, 0, 8, 197, 60, 179, 218, 56, 144, 13, 43, 10, 22,
-			15, 14, 1, 20, 11, 15, 26, 195, 179, 84, 39, 50, 108, 47, 49, 39, 88, 115, 10, 6, 15, 48, 39, 50, 80, 108, 37, 47, 0, 13,
-			81, 112, 111, 110, 116, 106, 97, 105, 116, 32, 8, 197, 88, 86, 133, 80, 144, 13, 8, 197, 44, 20, 21, 56, 176, 13, 13, 138, 22, 15,
-			14, 1, 20, 11, 15, 26, 195, 179, 13, 11, 136, 13, 9, 12, 12, 9, 195, 179, 13, 13, 8, 197, 16, 243, 7, 61, 64, 13, 19, 3,
-			22, 195, 182, 84, 6, 109, 90, 72, 15, 10, 6, 110, 89, 122, 109, 0, 25, 0, 9, 198, 60, 179, 218, 56, 18, 192, 13, 9, 198, 13,
-			48, 80, 5, 67, 212, 13, 0, 9, 198, 32, 19, 12, 61, 69, 1, 13, 18, 143, 22, 195, 161, 12, 20, 15, 26, 1, 20, 195, 161, 2,
-			195, 179, 12, 13, 0, 11, 200, 52, 20, 129, 16, 160, 78, 4, 176, 13, 0, 32, 70, 32, 18, 148, 4, 224, 75, 107, 108, 57, 47, 108,
-			50, 108, 49, 23, 84, 113, 81, 52, 109, 0, 13, 81, 118, 195, 169, 103, 114, 101, 32, 12, 201, 52, 20, 129, 16, 128, 84, 56, 18, 192,
-			13, 12, 201, 28, 243, 132, 61, 50, 207, 16, 146, 192, 13, 8, 197, 24, 83, 22, 21, 64, 13, 0, 21, 146, 14, 25, 9, 12, 22, 195,
-			161, 14, 195, 173, 20, 195, 161, 19, 20, 195, 179, 12, 13, 12, 137, 19, 195, 169, 20, 195, 161, 12, 14, 9, 13, 12, 137, 14, 25, 195,
-			186, 10, 20, 1, 14, 9, 13, 5, 194, 8, 16, 13, 0, 35, 67, 52, 81, 192, 65, 109, 81, 23, 49, 109, 55, 12, 23, 39, 55, 72,
-			108, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32, 111, 108, 100, 97, 110, 105, 32, 41, 67, 52, 81, 192, 65, 109, 81, 23, 49, 109, 55,
-			12, 23, 84, 37, 90, 81, 114, 55, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32, 118, 105, 122, 115, 103, 195, 161, 108, 110, 105, 32, 38,
-			67, 52, 81, 192, 65, 109, 81, 10, 6, 15, 49, 109, 55, 12, 10, 6, 15, 67, 39, 65, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32,
-			110, 121, 111, 109, 110, 105, 32, 25, 67, 52, 81, 192, 65, 109, 81, 23, 108, 88, 39, 49, 108, 47, 0, 13, 81, 97, 122, 111, 107, 97,
-			116, 32, 28, 67, 52, 81, 192, 65, 109, 81, 23, 108, 6, 15, 91, 39, 52, 71, 108, 0, 13, 82, 97, 32, 115, 111, 114, 98, 97, 32,
-			45, 67, 52, 81, 192, 65, 109, 81, 23, 108, 6, 15, 57, 109, 55, 109, 50, 47, 49, 109, 88, 118, 84, 109, 55, 0, 13, 82, 97, 32,
-			106, 101, 108, 101, 110, 116, 107, 101, 122, 197, 145, 118, 101, 108, 32, 29, 67, 52, 81, 192, 65, 109, 81, 23, 37, 91, 23, 47, 40, 72,
-			39, 65, 0, 13, 82, 105, 115, 32, 116, 117, 100, 111, 109, 32, 24, 67, 52, 81, 192, 65, 109, 81, 23, 108, 23, 107, 112, 52, 0, 13,
-			82, 97, 32, 104, 195, 173, 114, 32, 15, 67, 52, 81, 192, 65, 109, 81, 23, 108, 0, 13, 81, 97, 32, 6, 195, 52, 81, 192, 13, 0,
-			11, 136, 13, 9, 12, 12, 9, 195, 179, 20, 13, 24, 68, 20, 208, 133, 72, 109, 65, 71, 109, 52, 23, 84, 39, 55, 47, 0, 13, 81,
-			118, 111, 108, 116, 32, 13, 196, 20, 208, 133, 72, 13, 81, 118, 111, 108, 116, 32, 8, 133, 1, 12, 22, 195, 179, 13, 7, 196, 20, 208,
-			133, 72, 13, 0, 8, 133, 11, 195, 182, 12, 20, 13, 28, 67, 8, 19, 0, 71, 108, 55, 23, 39, 55, 72, 108, 55, 114, 50, 0, 13,
-			81, 111, 108, 100, 97, 108, 195, 161, 110, 32, 12, 201, 20, 194, 5, 49, 145, 90, 21, 69, 0, 13, 8, 133, 10, 195, 182, 20, 20, 13,
-			11, 193, 84, 17, 83, 46, 32, 105, 32, 46, 32, 0, 6, 195, 12, 146, 203, 13, 9, 66, 85, 0, 40, 48, 0, 42, 42, 0, 11, 136,
-			10, 195, 161, 18, 20, 21, 14, 11, 13, 41, 73, 44, 20, 3, 76, 243, 1, 80, 32, 78, 49, 108, 48, 76, 39, 55, 108, 47, 71, 108,
-			50, 23, 108, 88, 23, 84, 39, 55, 47, 0, 13, 82, 97, 122, 32, 118, 111, 108, 116, 32, 10, 199, 20, 193, 143, 28, 17, 14, 36, 13,
-			10, 199, 8, 83, 85, 80, 21, 14, 36, 13, 10, 199, 20, 197, 137, 76, 83, 14, 36, 13, 9, 134, 3, 195, 169, 12, 10, 1, 13, 10,
-			135, 5, 12, 10, 195, 182, 20, 20, 13, 20, 145, 20, 5, 12, 10, 5, 19, 195, 173, 20, 195, 169, 19, 195, 169, 8, 5, 26, 13, 11,
-			136, 20, 197, 145, 12, 195, 188, 14, 11, 13, 0, 10, 135, 12, 195, 161, 20, 20, 1, 13, 13, 0, 4, 193, 88, 42, 6, 65, 88, 84,
-			113, 0, 12, 201, 40, 81, 217, 104, 85, 5, 44, 85, 0, 13, 9, 134, 22, 195, 173, 22, 15, 11, 13, 8, 197, 72, 243, 148, 40, 16,
-			13, 8, 197, 57, 147, 205, 60, 208, 13, 8, 197, 48, 83, 20, 20, 208, 13, 0, 9, 198, 29, 145, 82, 52, 82, 192, 13, 34, 11, 19,
-			26, 1, 2, 195, 161, 12, 25, 26, 195, 179, 89, 108, 71, 114, 57, 88, 115, 23, 40, 47, 114, 50, 0, 13, 81, 117, 116, 195, 161, 110,
-			32, 9, 198, 72, 17, 207, 104, 226, 64, 13, 13, 138, 22, 1, 4, 195, 161, 19, 26, 15, 20, 20, 13, 9, 198, 40, 83, 5, 104, 226,
-			64, 13, 9, 198, 57, 145, 82, 80, 82, 192, 13, 16, 141, 2, 9, 26, 15, 14, 25, 195, 173, 20, 1, 14, 9, 1, 13, 5, 194, 5,
-			48, 72, 0, 40, 6, 8, 195, 161, 18, 15, 13, 107, 114, 52, 39, 65, 23, 113, 84, 37, 81, 23, 71, 112, 52, 50, 37, 0, 13, 82,
-			195, 169, 118, 105, 103, 32, 98, 195, 173, 114, 110, 105, 32, 9, 134, 2, 195, 173, 26, 26, 1, 13, 13, 138, 11, 195, 182, 20, 5, 12,
-			5, 26, 197, 145, 13, 12, 137, 18, 195, 182, 22, 9, 4, 5, 2, 2, 13, 10, 135, 10, 15, 7, 18, 195, 179, 12, 13, 13, 138, 19,
-			26, 15, 12, 7, 195, 161, 12, 14, 1, 13, 8, 133, 195, 186, 20, 15, 14, 13, 8, 133, 11, 195, 182, 19, 26, 13, 8, 133, 195, 186,
-			20, 15, 14, 20, 0, 15, 140, 195, 182, 19, 19, 26, 5, 18, 1, 11, 15, 20, 20, 13, 16, 141, 13, 5, 7, 20, 5, 12, 195, 173,
-			20, 195, 188, 14, 11, 13, 15, 4, 95, 49, 77, 52, 109, 79, 71, 37, 55, 55, 37, 115, 0, 0, 12, 1, 92, 71, 109, 49, 122, 55,
-			109, 91, 0, 27, 11, 65, 92, 72, 40, 48, 55, 108, 84, 113, 0, 11, 136, 7, 25, 1, 14, 195, 186, 10, 1, 13, 8, 197, 88, 85,
-			20, 20, 176, 13, 11, 136, 6, 195, 188, 12, 5, 11, 18, 5, 13, 12, 201, 88, 243, 129, 80, 179, 218, 56, 18, 192, 13, 9, 134, 12,
-			1, 11, 195, 179, 11, 13, 12, 201, 24, 241, 204, 4, 194, 207, 104, 226, 64, 13, 0, 10, 135, 10, 195, 182, 20, 20, 5, 11, 13, 0,
-			14, 1, 94, 83, 110, 55, 83, 109, 55, 113, 67, 112, 55, 0, 9, 134, 20, 195, 169, 18, 14, 9, 13, 13, 138, 22, 9, 26, 19, 7,
-			195, 161, 12, 10, 1, 13, 9, 134, 11, 195, 182, 20, 14, 9, 13, 0, 14, 139, 11, 18, 9, 20, 9, 11, 195, 161, 11, 18, 1, 13,
-			38, 4, 7, 195, 169, 16, 81, 113, 48, 23, 83, 39, 79, 108, 89, 47, 114, 91, 114, 47, 0, 13, 81, 102, 111, 103, 121, 97, 115, 122,
-			116, 195, 161, 115, 195, 161, 116, 32, 11, 200, 57, 146, 84, 61, 69, 21, 56, 176, 13, 10, 135, 19, 5, 7, 195, 169, 12, 25, 13, 7,
-			132, 13, 195, 179, 4, 13, 7, 132, 7, 195, 169, 16, 13, 0, 4, 193, 96, 42, 7, 65, 96, 37, 49, 89, 0, 11, 136, 18, 195, 161,
-			22, 5, 14, 14, 9, 13, 16, 65, 96, 47, 112, 88, 88, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 10, 135, 10, 195, 161, 18, 20,
-			1, 19, 13, 5, 194, 4, 64, 13, 15, 4, 95, 49, 77, 50, 109, 79, 65, 37, 55, 55, 37, 115, 0, 0, 14, 139, 11, 195, 169, 18,
-			4, 195, 169, 19, 195, 169, 20, 13, 18, 143, 13, 5, 7, 1, 12, 195, 161, 26, 195, 161, 19, 18, 195, 179, 12, 13, 10, 199, 80, 20,
-			148, 4, 195, 65, 80, 13, 15, 140, 195, 169, 12, 3, 5, 12, 197, 145, 4, 20, 5, 11, 13, 13, 138, 16, 9, 19, 26, 11, 195, 161,
-			12, 14, 9, 13, 13, 138, 19, 5, 2, 5, 19, 19, 195, 169, 7, 5, 13, 17, 4, 95, 49, 77, 51, 109, 79, 65, 37, 55, 55, 37,
-			114, 52, 72, 0, 0, 14, 139, 195, 186, 10, 4, 15, 14, 19, 195, 161, 7, 1, 13, 40, 7, 14, 25, 5, 12, 22, 197, 177, 67, 109,
-			55, 84, 117, 23, 37, 91, 65, 109, 52, 47, 109, 47, 118, 49, 0, 13, 81, 105, 115, 109, 101, 114, 116, 101, 116, 197, 145, 107, 32, 8,
-			133, 195, 169, 12, 5, 19, 13, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50, 0, 24, 149, 20, 195, 182, 18, 22, 195, 169, 14, 25,
-			10, 1, 22, 1, 19, 12, 1, 20, 18, 195, 179, 12, 13, 20, 145, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 195, 161, 2, 195,
-			179, 12, 13, 33, 6, 11, 5, 22, 195, 169, 19, 49, 109, 84, 113, 91, 23, 108, 23, 83, 109, 55, 107, 118, 0, 13, 82, 97, 32, 102,
-			101, 108, 104, 197, 145, 32, 11, 136, 22, 195, 169, 7, 5, 26, 14, 9, 13, 13, 138, 20, 5, 11, 9, 14, 20, 195, 188, 14, 11, 13,
-			8, 197, 4, 176, 82, 77, 160, 13, 9, 134, 11, 5, 22, 195, 169, 19, 13, 12, 67, 16, 245, 206, 72, 39, 58, 50, 0, 42, 42, 0,
-			16, 141, 195, 182, 14, 11, 195, 182, 12, 20, 19, 195, 169, 7, 5, 13, 33, 70, 57, 149, 71, 60, 69, 0, 67, 40, 81, 39, 47, 12,
-			15, 65, 108, 52, 108, 72, 50, 37, 0, 13, 81, 109, 97, 114, 97, 100, 110, 105, 32, 9, 198, 24, 244, 132, 84, 197, 0, 13, 0, 46,
-			10, 8, 15, 18, 4, 5, 18, 5, 10, 197, 177, 107, 39, 52, 72, 109, 52, 109, 57, 117, 23, 49, 113, 52, 72, 113, 91, 71, 109, 50,
-			0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 98, 101, 110, 32, 10, 199, 32, 83, 25, 104, 85, 2, 20, 13, 6, 195, 76, 20, 192,
-			13, 0, 19, 144, 13, 5, 7, 19, 26, 195, 188, 12, 5, 20, 195, 169, 19, 195, 169, 20, 13, 45, 68, 20, 118, 73, 44, 109, 79, 12,
-			37, 49, 10, 6, 15, 47, 109, 55, 109, 48, 107, 109, 57, 113, 52, 118, 55, 0, 13, 81, 116, 101, 108, 101, 112, 104, 101, 108, 121, 195,
-			169, 114, 197, 145, 108, 32, 33, 68, 20, 118, 73, 44, 109, 79, 12, 37, 49, 23, 84, 109, 88, 109, 47, 118, 57, 109, 0, 13, 81, 118,
-			101, 122, 101, 116, 197, 145, 106, 101, 32, 40, 68, 20, 118, 73, 44, 109, 79, 12, 37, 49, 23, 49, 113, 48, 84, 37, 91, 109, 55, 118,
-			57, 109, 0, 13, 81, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197, 145, 106, 101, 32, 19, 144, 6, 5, 12, 20, 195, 188, 14, 20, 5,
-			20, 195, 169, 19, 195, 169, 20, 13, 12, 137, 12, 5, 8, 5, 20, 195, 188, 14, 11, 13, 7, 196, 20, 118, 73, 44, 13, 0, 6, 65,
-			104, 88, 113, 0, 25, 69, 24, 244, 132, 84, 192, 83, 39, 34, 72, 40, 55, 23, 109, 55, 118, 0, 13, 81, 101, 108, 197, 145, 32, 39,
-			69, 32, 243, 140, 5, 0, 107, 39, 50, 55, 108, 48, 10, 6, 15, 47, 110, 52, 55, 113, 91, 113, 47, 0, 13, 81, 116, 195, 182, 114,
-			108, 195, 169, 115, 195, 169, 116, 32, 8, 197, 57, 147, 205, 60, 224, 13, 13, 138, 18, 5, 14, 4, 197, 145, 18, 195, 182, 11, 13, 13,
-			138, 20, 5, 18, 5, 13, 20, 195, 188, 14, 11, 13, 8, 197, 64, 144, 67, 60, 224, 13, 8, 197, 24, 244, 132, 84, 192, 13, 0, 16,
-			141, 5, 18, 5, 4, 13, 195, 169, 14, 25, 5, 26, 197, 145, 13, 13, 138, 13, 21, 14, 11, 195, 161, 18, 195, 179, 12, 13, 9, 198,
-			88, 149, 1, 80, 160, 64, 13, 9, 198, 53, 85, 1, 80, 160, 64, 13, 12, 137, 6, 5, 12, 14, 195, 182, 22, 197, 145, 13, 8, 133,
-			12, 195, 169, 7, 25, 13, 0, 10, 135, 11, 195, 169, 13, 13, 5, 12, 13, 10, 199, 52, 243, 137, 80, 244, 143, 44, 13, 14, 139, 22,
-			195, 161, 12, 12, 195, 161, 18, 195, 179, 12, 13, 10, 199, 24, 244, 132, 84, 197, 1, 44, 13, 0, 25, 68, 97, 98, 73, 36, 47, 37,
-			88, 109, 50, 67, 39, 55, 119, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 34, 69, 40, 83, 5, 57, 64, 57, 109, 55, 109, 50,
-			47, 23, 89, 114, 65, 40, 49, 52, 108, 0, 13, 81, 115, 122, 195, 161, 109, 117, 107, 114, 97, 32, 12, 137, 195, 179, 18, 195, 161, 20,
-			195, 179, 12, 13, 13, 138, 19, 26, 195, 161, 18, 13, 1, 26, 195, 179, 13, 8, 197, 40, 83, 5, 57, 64, 13, 16, 9, 95, 35, 45,
-			195, 161, 18, 195, 179, 12, 114, 52, 115, 55, 0, 0, 0, 13, 138, 6, 197, 145, 8, 1, 4, 14, 1, 7, 25, 13, 0, 45, 68, 85,
-			64, 193, 36, 40, 119, 12, 108, 37, 23, 113, 48, 111, 55, 109, 47, 109, 23, 109, 55, 118, 47, 12, 0, 13, 82, 195, 169, 112, 195, 188,
-			108, 101, 116, 101, 32, 101, 108, 197, 145, 116, 116, 32, 0, 8, 197, 4, 192, 75, 61, 64, 13, 8, 197, 80, 84, 150, 21, 64, 13, 0,
-			14, 139, 11, 195, 182, 22, 5, 20, 11, 5, 26, 9, 11, 13, 9, 198, 8, 85, 137, 80, 83, 20, 13, 9, 134, 20, 195, 161, 13, 1,
-			4, 13, 0, 9, 198, 32, 83, 25, 21, 69, 5, 13, 14, 139, 6, 5, 12, 15, 12, 22, 1, 19, 195, 179, 20, 13, 10, 135, 7, 18,
-			195, 179, 6, 15, 20, 13, 0, 13, 138, 8, 5, 12, 25, 195, 188, 11, 195, 182, 14, 13, 19, 144, 8, 1, 19, 26, 14, 195, 161, 12,
-			1, 20, 195, 161, 18, 195, 179, 12, 13, 7, 132, 11, 195, 182, 4, 13, 7, 196, 80, 83, 9, 44, 13, 7, 132, 195, 188, 12, 20, 13,
-			0, 25, 5, 195, 161, 12, 12, 20, 114, 55, 47, 23, 110, 89, 12, 109, 0, 13, 81, 195, 182, 115, 115, 122, 101, 32, 35, 5, 195, 161,
-			12, 12, 20, 114, 55, 47, 23, 48, 113, 55, 72, 108, 49, 113, 50, 47, 0, 13, 81, 112, 195, 169, 108, 100, 97, 107, 195, 169, 110, 116,
-			32, 19, 4, 195, 173, 7, 25, 112, 79, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 8, 197, 77, 160, 75, 52, 16, 13, 21, 4,
-			195, 173, 7, 25, 112, 79, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 10, 135, 5, 19, 26, 11, 195, 182, 26, 13, 8,
-			133, 195, 161, 12, 12, 20, 13, 7, 132, 195, 173, 7, 25, 13, 0, 9, 198, 72, 243, 148, 4, 226, 64, 13, 9, 198, 80, 84, 141, 20,
-			149, 0, 13, 9, 198, 48, 85, 5, 56, 226, 64, 13, 21, 146, 13, 195, 179, 4, 15, 19, 195, 173, 20, 195, 161, 19, 195, 161, 18, 195,
-			179, 12, 13, 9, 198, 80, 20, 148, 4, 226, 64, 13, 9, 198, 52, 243, 132, 4, 226, 64, 13, 0, 9, 198, 80, 20, 148, 4, 226, 65,
-			13, 15, 204, 4, 194, 193, 48, 208, 90, 61, 69, 1, 44, 224, 75, 13, 0, 7, 196, 80, 242, 138, 4, 13, 10, 135, 21, 20, 3, 195,
-			161, 2, 1, 13, 11, 200, 32, 149, 129, 80, 179, 218, 88, 16, 13, 0, 8, 197, 88, 17, 217, 60, 176, 72, 11, 136, 20, 5, 19, 20,
-			195, 169, 2, 5, 13, 8, 197, 88, 20, 212, 4, 112, 13, 40, 9, 19, 9, 11, 5, 18, 195, 188, 12, 20, 91, 37, 49, 109, 52, 111,
-			55, 47, 23, 49, 37, 83, 39, 81, 50, 39, 65, 0, 13, 81, 107, 105, 102, 111, 103, 110, 111, 109, 32, 8, 197, 24, 17, 217, 60, 176,
-			13, 12, 201, 24, 83, 4, 60, 193, 207, 104, 226, 64, 13, 9, 134, 3, 195, 173, 13, 5, 11, 13, 13, 138, 11, 9, 20, 195, 169, 18,
-			195, 188, 14, 11, 13, 9, 134, 3, 195, 169, 12, 15, 11, 13, 16, 9, 95, 35, 45, 195, 161, 20, 195, 179, 12, 114, 47, 115, 55, 0,
-			0, 9, 198, 48, 84, 218, 80, 82, 192, 72, 9, 198, 24, 84, 212, 20, 226, 64, 13, 9, 198, 44, 84, 133, 76, 226, 64, 13, 9, 198,
-			88, 84, 218, 80, 82, 192, 13, 0, 22, 67, 44, 148, 192, 49, 37, 91, 23, 47, 109, 55, 115, 0, 13, 81, 116, 101, 108, 195, 179, 32,
-			30, 67, 44, 148, 192, 49, 37, 91, 15, 47, 111, 52, 109, 55, 65, 109, 47, 0, 13, 81, 116, 195, 188, 114, 101, 108, 109, 101, 116, 32,
-			19, 144, 5, 12, 11, 195, 169, 16, 26, 5, 12, 195, 169, 19, 195, 188, 14, 11, 13, 24, 67, 44, 148, 192, 49, 37, 91, 15, 109, 52,
-			109, 57, 117, 0, 13, 81, 101, 114, 101, 106, 197, 177, 32, 13, 138, 19, 26, 15, 12, 7, 195, 161, 12, 10, 1, 13, 10, 199, 77, 163,
-			205, 8, 21, 15, 56, 22, 0, 15, 140, 20, 18, 195, 179, 14, 10, 195, 161, 18, 195, 179, 12, 13, 15, 140, 20, 9, 12, 1, 12, 13,
-			195, 161, 18, 195, 179, 12, 13, 11, 200, 29, 144, 78, 4, 180, 218, 36, 176, 13, 15, 140, 4, 195, 182, 18, 195, 182, 13, 2, 195, 182,
-			12, 20, 13, 9, 134, 3, 195, 173, 13, 5, 14, 13, 12, 137, 22, 195, 161, 12, 20, 15, 26, 195, 179, 13, 0, 12, 201, 52, 83, 133,
-			81, 33, 78, 16, 85, 0, 13, 16, 141, 22, 195, 161, 12, 20, 15, 26, 20, 1, 20, 15, 20, 20, 13, 39, 69, 72, 18, 206, 4, 176,
-			52, 108, 49, 50, 108, 49, 10, 6, 15, 71, 109, 50, 12, 111, 50, 49, 109, 47, 0, 13, 81, 98, 101, 110, 110, 195, 188, 110, 107, 101,
-			116, 32, 24, 69, 88, 82, 5, 80, 144, 84, 109, 107, 109, 47, 37, 23, 108, 89, 47, 0, 13, 81, 97, 122, 116, 32, 12, 201, 44, 146,
-			133, 48, 83, 148, 20, 226, 64, 13, 0, 28, 70, 76, 146, 197, 72, 84, 192, 91, 37, 49, 109, 52, 109, 91, 23, 84, 39, 55, 47, 0,
-			13, 81, 118, 111, 108, 116, 32, 12, 137, 19, 26, 195, 161, 13, 21, 11, 18, 1, 13, 9, 198, 12, 146, 203, 56, 82, 192, 13, 0, 9,
-			1, 126, 47, 37, 55, 72, 109, 0, 10, 135, 20, 195, 182, 2, 2, 9, 20, 13, 0, 15, 140, 16, 15, 19, 26, 20, 10, 195, 161, 18,
-			195, 179, 12, 13, 15, 140, 15, 11, 20, 1, 20, 195, 161, 19, 2, 195, 179, 12, 13, 10, 135, 5, 12, 195, 169, 18, 14, 9, 13, 9,
-			198, 16, 80, 197, 52, 33, 82, 20, 9, 198, 56, 245, 133, 52, 33, 82, 20, 0, 12, 201, 36, 225, 15, 44, 243, 20, 56, 18, 192, 13,
-			9, 198, 80, 20, 148, 4, 224, 75, 13, 0, 33, 70, 77, 161, 82, 36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 108, 88, 39, 49, 50,
-			108, 49, 0, 13, 81, 97, 122, 111, 107, 110, 97, 107, 32, 27, 70, 77, 161, 82, 36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 84, 39,
-			55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 44, 70, 77, 161, 82, 36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 65, 115, 72, 39, 91,
-			112, 47, 107, 108, 47, 115, 0, 13, 81, 109, 195, 179, 100, 111, 115, 195, 173, 116, 104, 97, 116, 195, 179, 32, 12, 137, 13, 5, 7, 11,
-			195, 169, 18, 14, 9, 13, 16, 141, 10, 5, 12, 5, 14, 19, 195, 169, 7, 5, 11, 18, 5, 13, 12, 137, 13, 5, 7, 14, 195, 169,
-			26, 14, 9, 13, 9, 198, 77, 161, 82, 36, 229, 0, 13, 0, 18, 143, 6, 5, 12, 9, 14, 4, 21, 12, 195, 161, 19, 2, 195, 179,
-			12, 13, 18, 143, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 2, 195, 179, 12, 13, 0, 15, 204, 44, 243, 80, 72, 243, 73, 77,
-			54, 149, 52, 242, 192, 13, 55, 8, 19, 26, 195, 161, 13, 195, 173, 20, 89, 114, 65, 112, 47, 10, 6, 15, 108, 6, 15, 65, 37, 50,
-			37, 89, 47, 109, 52, 109, 55, 50, 110, 49, 0, 13, 82, 97, 32, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108, 110, 195, 182, 107,
-			32, 12, 201, 80, 20, 148, 4, 195, 65, 104, 224, 75, 13, 12, 201, 80, 20, 148, 4, 195, 65, 104, 224, 75, 13, 11, 136, 19, 26, 195,
-			161, 13, 195, 173, 20, 13, 0, 11, 136, 195, 169, 18, 11, 5, 26, 197, 145, 13, 12, 137, 195, 188, 26, 5, 13, 13, 195, 179, 4, 13,
-			13, 138, 9, 7, 195, 169, 14, 25, 195, 188, 14, 11, 13, 20, 145, 11, 15, 14, 3, 5, 16, 3, 9, 195, 179, 10, 195, 161, 18, 195,
-			179, 12, 13, 0, 20, 145, 20, 5, 22, 195, 169, 11, 5, 14, 25, 19, 195, 169, 7, 5, 11, 18, 5, 13, 9, 198, 32, 22, 149, 17,
-			64, 64, 13, 0, 31, 10, 22, 9, 26, 19, 7, 195, 161, 12, 14, 9, 84, 37, 90, 81, 114, 55, 50, 37, 23, 108, 89, 47, 0, 13,
-			81, 97, 122, 116, 32, 0, 26, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 109, 50, 12, 109, 49, 0, 13, 81, 101, 110, 110, 101,
-			107, 32, 21, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 52, 114, 0, 13, 81, 114, 195, 161, 32, 14, 139, 14, 195, 169, 16, 5,
-			19, 19, 195, 169, 7, 5, 13, 33, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 89, 109, 52, 37, 50, 47, 109, 65, 0, 13, 81,
-			115, 122, 101, 114, 105, 110, 116, 101, 109, 32, 24, 67, 77, 161, 77, 89, 109, 65, 23, 109, 55, 118, 47, 12, 0, 13, 81, 101, 108, 197,
-			145, 116, 116, 32, 22, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 89, 115, 0, 13, 81, 115, 122, 195, 179, 32, 35, 68, 48, 83,
-			142, 20, 55, 109, 50, 12, 109, 23, 89, 111, 49, 91, 113, 81, 109, 65, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 109,
-			32, 31, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 15, 89, 111, 49, 91, 113, 81, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169,
-			103, 32, 14, 139, 11, 195, 169, 16, 5, 19, 19, 195, 169, 7, 5, 13, 14, 139, 11, 195, 169, 16, 22, 9, 19, 5, 12, 197, 145, 13,
-			12, 137, 19, 9, 5, 20, 20, 195, 188, 14, 11, 13, 7, 132, 11, 195, 182, 16, 13, 7, 196, 48, 83, 142, 20, 13, 0, 0, 31, 6,
-			1, 20, 20, 195, 179, 12, 108, 47, 12, 115, 55, 10, 6, 15, 83, 113, 55, 50, 37, 0, 13, 81, 102, 195, 169, 108, 110, 105, 32, 10,
-			135, 11, 15, 18, 195, 186, 1, 11, 13, 11, 136, 7, 25, 5, 14, 7, 195, 169, 14, 13, 8, 133, 14, 195, 169, 7, 25, 13, 9, 134,
-			1, 20, 20, 195, 179, 12, 13, 0, 9, 198, 52, 81, 212, 20, 227, 137, 13, 11, 136, 22, 195, 161, 7, 25, 14, 1, 11, 13, 10, 199,
-			20, 192, 86, 84, 197, 1, 44, 13, 6, 195, 32, 145, 4, 13, 0, 12, 137, 22, 195, 161, 12, 1, 19, 26, 15, 11, 13, 0, 12, 201,
-			77, 160, 66, 4, 67, 129, 65, 32, 64, 13, 11, 136, 20, 1, 12, 195, 161, 12, 20, 1, 13, 13, 138, 2, 15, 18, 195, 173, 20, 1,
-			14, 1, 11, 13, 12, 137, 3, 19, 195, 182, 11, 11, 5, 14, 20, 13, 8, 197, 28, 243, 66, 61, 64, 13, 8, 197, 21, 161, 75, 21,
-			64, 13, 0, 0, 15, 140, 8, 1, 20, 195, 179, 19, 195, 161, 7, 14, 1, 11, 13, 21, 146, 195, 161, 12, 12, 1, 13, 20, 9, 20,
-			11, 195, 161, 18, 19, 195, 161, 7, 1, 13, 15, 140, 5, 12, 12, 195, 161, 20, 195, 179, 11, 14, 1, 11, 13, 13, 138, 11, 9, 20,
-			1, 12, 195, 161, 12, 20, 1, 13, 6, 195, 5, 81, 192, 20, 0, 18, 68, 53, 54, 141, 64, 101, 109, 101, 115, 122, 101, 109, 112, 195,
-			169, 0, 29, 19, 68, 53, 54, 141, 64, 101, 109, 101, 115, 122, 101, 109, 112, 195, 169, 0, 29, 42, 22, 4, 195, 161, 12, 12, 114, 55,
-			12, 23, 108, 52, 52, 108, 0, 13, 81, 97, 114, 114, 97, 32, 16, 141, 13, 5, 7, 6, 5, 12, 5, 12, 197, 145, 14, 5, 11, 13,
-			16, 141, 19, 26, 1, 11, 195, 169, 18, 20, 197, 145, 14, 5, 11, 13, 16, 141, 2, 9, 26, 15, 20, 20, 19, 195, 161, 7, 14, 1,
-			11, 13, 7, 132, 195, 161, 12, 12, 13, 0, 13, 138, 15, 18, 19, 26, 195, 161, 7, 14, 1, 11, 13, 17, 142, 2, 9, 3, 9, 11,
-			12, 9, 26, 197, 145, 11, 14, 5, 11, 13, 15, 140, 11, 195, 182, 18, 195, 188, 12, 195, 182, 20, 20, 5, 13, 0, 20, 66, 8, 80,
-			71, 109, 23, 116, 57, 52, 108, 0, 13, 81, 195, 186, 106, 114, 97, 32, 12, 137, 3, 19, 5, 18, 195, 169, 12, 14, 9, 13, 25, 66,
-			8, 80, 71, 109, 10, 6, 15, 108, 89, 47, 23, 37, 91, 0, 13, 82, 97, 122, 116, 32, 105, 115, 32, 5, 194, 8, 80, 13, 5, 194,
-			8, 80, 13, 0, 9, 198, 72, 82, 212, 61, 32, 73, 13, 15, 140, 7, 1, 26, 4, 1, 19, 195, 161, 7, 14, 1, 11, 13, 15, 140,
-			5, 12, 5, 7, 5, 14, 4, 197, 145, 14, 5, 11, 13, 14, 203, 52, 81, 198, 60, 112, 76, 52, 22, 143, 81, 64, 13, 6, 195, 76,
-			20, 212, 13, 0, 27, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108, 23, 65, 108, 81, 114, 47, 0, 13, 81, 109, 97, 103, 195, 161, 116,
-			32, 22, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108, 23, 83, 109, 55, 0, 13, 81, 102, 101, 108, 32, 22, 68, 88, 243, 14, 4, 84,
-			39, 55, 50, 108, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 33, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108, 23, 65, 109, 81,
-			23, 118, 49, 109, 47, 0, 13, 82, 109, 101, 103, 32, 197, 145, 107, 101, 116, 32, 32, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108, 23,
-			47, 109, 52, 84, 109, 88, 50, 37, 0, 13, 81, 116, 101, 114, 118, 101, 122, 110, 105, 32, 45, 68, 88, 243, 14, 4, 84, 39, 55, 50,
-			108, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 49, 109, 47, 0, 13, 82, 97, 32, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118,
-			101, 107, 101, 116, 32, 12, 137, 19, 26, 15, 11, 195, 161, 19, 15, 19, 13, 12, 137, 19, 5, 2, 5, 19, 19, 195, 169, 7, 13, 12,
-			137, 19, 26, 195, 188, 11, 19, 195, 169, 7, 13, 12, 137, 19, 26, 195, 188, 11, 19, 195, 169, 7, 13, 11, 200, 32, 19, 1, 77, 165,
-			15, 81, 64, 13, 7, 196, 32, 148, 218, 36, 13, 7, 196, 88, 243, 14, 4, 13, 0, 36, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50,
-			108, 48, 23, 72, 113, 55, 109, 55, 118, 47, 12, 0, 13, 81, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 32, 34, 69, 32, 243, 14,
-			5, 0, 107, 39, 55, 50, 108, 48, 23, 72, 113, 55, 40, 47, 114, 50, 0, 13, 81, 100, 195, 169, 108, 117, 116, 195, 161, 110, 32, 8,
-			197, 32, 243, 14, 5, 0, 13, 34, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50, 108, 48, 15, 72, 113, 55, 40, 47, 114, 50, 0, 13,
-			81, 100, 195, 169, 108, 117, 116, 195, 161, 110, 32, 36, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50, 108, 48, 15, 72, 113, 55, 109, 55,
-			118, 47, 12, 0, 13, 81, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 32, 9, 198, 61, 37, 143, 76, 224, 75, 13, 8, 197, 52, 243,
-			132, 80, 16, 13, 0, 6, 195, 32, 19, 11, 13, 12, 67, 57, 54, 139, 109, 50, 109, 89, 49, 114, 0, 0, 10, 199, 57, 149, 71, 60,
-			69, 1, 56, 13, 11, 136, 13, 195, 169, 18, 14, 195, 182, 11, 13, 13, 67, 36, 98, 128, 37, 83, 57, 108, 71, 12, 0, 25, 17, 4,
-			95, 50, 67, 15, 49, 113, 47, 89, 114, 88, 108, 72, 37, 49, 0, 0, 6, 195, 84, 227, 137, 13, 7, 196, 52, 83, 142, 36, 13, 0,
-			9, 198, 80, 19, 149, 49, 69, 75, 13, 0, 7, 66, 13, 48, 76, 113, 0, 0, 10, 199, 77, 161, 82, 20, 197, 5, 44, 13, 0, 11,
-			200, 88, 148, 197, 48, 177, 68, 56, 144, 13, 11, 200, 16, 243, 7, 61, 163, 137, 84, 176, 13, 40, 68, 60, 193, 1, 48, 39, 55, 72,
-			108, 55, 23, 109, 55, 49, 113, 89, 112, 47, 113, 91, 109, 0, 13, 81, 101, 108, 107, 195, 169, 115, 122, 195, 173, 116, 195, 169, 115, 101,
-			32, 11, 200, 8, 85, 129, 48, 195, 212, 80, 16, 13, 6, 195, 8, 83, 5, 13, 11, 200, 52, 81, 205, 60, 225, 1, 56, 144, 13, 7,
-			196, 60, 193, 1, 48, 13, 16, 4, 95, 50, 77, 52, 49, 113, 47, 71, 37, 55, 55, 37, 115, 0, 0, 35, 70, 44, 86, 132, 20, 225,
-			75, 49, 109, 88, 72, 109, 50, 109, 49, 6, 23, 37, 52, 114, 50, 47, 108, 0, 13, 81, 105, 114, 195, 161, 110, 116, 97, 32, 12, 137,
-			22, 9, 26, 19, 7, 195, 161, 12, 20, 13, 0, 31, 6, 11, 5, 18, 195, 188, 12, 49, 109, 52, 111, 55, 10, 6, 15, 37, 47, 107,
-			39, 50, 0, 13, 81, 105, 116, 116, 104, 111, 110, 32, 24, 6, 11, 5, 18, 195, 188, 12, 49, 109, 52, 111, 55, 23, 91, 39, 52, 0,
-			13, 81, 115, 111, 114, 32, 9, 134, 11, 5, 18, 195, 188, 12, 13, 0, 29, 67, 61, 37, 20, 111, 101, 114, 114, 116, 195, 169, 116, 195,
-			169, 116, 197, 145, 108, 0, 44, 29, 42, 81, 116, 197, 145, 108, 32, 12, 137, 19, 1, 18, 11, 195, 161, 8, 15, 26, 13, 15, 140, 19,
-			26, 195, 161, 13, 195, 173, 20, 1, 14, 1, 11, 13, 61, 10, 20, 5, 18, 195, 188, 12, 5, 20, 18, 5, 47, 109, 52, 111, 55, 109,
-			47, 52, 109, 10, 6, 15, 37, 91, 10, 6, 15, 49, 39, 50, 119, 109, 50, 47, 52, 114, 55, 50, 37, 0, 13, 82, 105, 115, 32, 107,
-			111, 110, 99, 101, 110, 116, 114, 195, 161, 108, 110, 105, 32, 10, 135, 20, 195, 182, 2, 2, 5, 20, 13, 26, 7, 20, 195, 182, 2, 2,
-			5, 20, 47, 110, 71, 12, 109, 47, 23, 83, 39, 81, 0, 13, 81, 102, 111, 103, 32, 32, 7, 20, 195, 182, 2, 2, 5, 20, 47, 110,
-			71, 12, 109, 47, 15, 47, 40, 72, 50, 108, 49, 0, 13, 81, 116, 117, 100, 110, 97, 107, 32, 8, 195, 61, 37, 20, 17, 42, 42, 0,
-			11, 136, 19, 5, 18, 5, 7, 195, 169, 20, 13, 47, 12, 195, 182, 19, 19, 26, 5, 15, 13, 12, 15, 20, 20, 110, 89, 12, 109, 39,
-			65, 55, 39, 47, 12, 23, 108, 23, 52, 109, 50, 119, 109, 52, 0, 13, 82, 97, 32, 114, 101, 110, 100, 115, 122, 101, 114, 32, 6, 195,
-			24, 83, 5, 13, 6, 195, 88, 83, 5, 13, 0, 17, 142, 7, 25, 1, 14, 195, 186, 19, 195, 173, 20, 1, 14, 1, 11, 13, 9, 198,
-			36, 225, 21, 49, 64, 75, 13, 15, 140, 11, 195, 169, 16, 5, 18, 14, 25, 197, 145, 18, 5, 13, 17, 10, 95, 35, 45, 9, 11, 195,
-			161, 14, 1, 11, 114, 50, 108, 49, 0, 14, 4, 95, 50, 77, 49, 49, 113, 47, 109, 88, 109, 52, 0, 0, 18, 66, 16, 32, 100, 97,
-			114, 97, 98, 111, 116, 0, 44, 29, 81, 111, 116, 32, 18, 66, 16, 32, 100, 97, 114, 97, 98, 111, 115, 0, 44, 29, 81, 111, 115, 32,
-			17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 109, 0, 44, 29, 81, 109, 32, 18, 66, 12, 64, 99, 195, 169, 100, 195, 169, 109, 0, 44,
-			29, 42, 81, 109, 32, 18, 66, 12, 64, 99, 195, 169, 100, 195, 169, 100, 0, 44, 29, 42, 81, 100, 32, 17, 66, 12, 64, 99, 195, 169,
-			100, 195, 169, 100, 0, 44, 29, 81, 100, 32, 17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 110, 0, 44, 29, 81, 110, 32, 18, 66, 12,
-			64, 99, 195, 169, 100, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 107, 0, 44, 29, 81,
-			107, 32, 18, 66, 12, 64, 99, 195, 169, 100, 195, 169, 107, 0, 44, 29, 42, 81, 107, 32, 12, 137, 195, 169, 16, 195, 173, 20, 5, 14,
-			9, 13, 37, 66, 12, 64, 119, 113, 72, 113, 109, 55, 12, 109, 50, 118, 52, 88, 113, 91, 47, 0, 44, 42, 81, 101, 108, 108, 101, 110,
-			197, 145, 114, 122, 195, 169, 115, 116, 32, 16, 4, 95, 50, 77, 50, 49, 113, 47, 65, 37, 55, 55, 37, 115, 0, 0, 28, 71, 57, 149,
-			71, 60, 69, 1, 52, 67, 40, 81, 39, 47, 12, 108, 65, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 19, 144, 11, 195, 169, 19,
-			26, 195, 188, 12, 195, 169, 11, 5, 9, 14, 5, 11, 13, 10, 135, 10, 195, 182, 22, 197, 145, 20, 13, 10, 135, 195, 188, 26, 5, 14,
-			5, 20, 13, 18, 4, 95, 50, 77, 51, 49, 113, 47, 65, 37, 55, 55, 37, 114, 52, 72, 0, 0, 43, 70, 72, 83, 132, 77, 161, 82,
-			52, 109, 50, 119, 109, 52, 23, 83, 40, 47, 12, 108, 47, 114, 91, 114, 52, 108, 0, 13, 81, 102, 117, 116, 116, 97, 116, 195, 161, 115,
-			195, 161, 114, 97, 32, 41, 70, 72, 83, 132, 77, 161, 82, 52, 109, 50, 119, 109, 52, 23, 83, 52, 37, 91, 12, 112, 47, 113, 91, 47,
-			0, 13, 81, 102, 114, 105, 115, 115, 195, 173, 116, 195, 169, 115, 116, 32, 15, 140, 19, 5, 2, 5, 19, 19, 195, 169, 7, 195, 169, 20,
-			13, 15, 140, 11, 195, 182, 12, 20, 19, 195, 169, 7, 195, 169, 20, 13, 9, 198, 72, 83, 132, 77, 161, 82, 13, 11, 136, 19, 26, 195,
-			161, 13, 195, 161, 20, 13, 7, 196, 16, 243, 15, 28, 13, 0, 11, 136, 19, 26, 5, 18, 5, 20, 197, 145, 13, 16, 141, 13, 21, 14,
-			11, 1, 20, 195, 161, 18, 19, 195, 161, 20, 13, 18, 143, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 8, 15, 26, 13, 15,
-			140, 2, 5, 195, 161, 12, 12, 195, 173, 20, 1, 14, 9, 13, 15, 140, 5, 7, 25, 5, 14, 12, 195, 173, 20, 5, 14, 9, 13, 8,
-			197, 52, 243, 132, 60, 64, 13, 11, 136, 11, 5, 18, 195, 188, 12, 197, 145, 13, 8, 133, 6, 195, 161, 10, 20, 13, 0, 57, 70, 24,
-			241, 193, 17, 64, 64, 83, 39, 81, 108, 47, 12, 108, 23, 108, 88, 6, 23, 109, 55, 49, 113, 48, 88, 109, 55, 113, 91, 109, 49, 109,
-			47, 0, 13, 82, 97, 122, 32, 101, 108, 107, 195, 169, 112, 122, 101, 108, 195, 169, 115, 101, 107, 101, 116, 32, 9, 198, 48, 81, 202, 60,
-			32, 128, 13, 9, 198, 48, 20, 211, 4, 32, 128, 13, 9, 198, 24, 241, 193, 17, 64, 64, 13, 0, 9, 198, 36, 112, 90, 60, 195, 137,
-			13, 20, 145, 2, 9, 26, 20, 15, 19, 195, 173, 20, 195, 161, 19, 195, 161, 8, 15, 26, 13, 10, 199, 40, 83, 5, 57, 65, 78, 20,
-			13, 0, 7, 196, 24, 82, 130, 20, 13, 9, 134, 195, 161, 18, 2, 1, 14, 13, 7, 196, 80, 148, 218, 80, 13, 0, 12, 201, 32, 19,
-			135, 61, 165, 1, 81, 64, 64, 13, 0, 12, 66, 17, 32, 72, 39, 49, 47, 39, 52, 0, 25, 0, 9, 134, 13, 195, 182, 7, 195, 169,
-			13, 0, 12, 137, 11, 195, 188, 26, 4, 5, 14, 5, 11, 13, 9, 134, 11, 195, 179, 4, 195, 186, 13, 0, 32, 69, 64, 84, 131, 21,
-			64, 48, 109, 52, 119, 109, 47, 23, 83, 37, 88, 109, 47, 109, 49, 0, 13, 81, 102, 105, 122, 101, 116, 101, 107, 32, 8, 197, 9, 82,
-			203, 4, 224, 13, 12, 201, 52, 81, 212, 36, 197, 15, 81, 64, 64, 13, 8, 133, 6, 195, 161, 10, 12, 13, 8, 197, 52, 147, 139, 21,
-			64, 13, 8, 197, 52, 147, 139, 21, 64, 13, 12, 137, 5, 7, 25, 1, 18, 195, 161, 14, 20, 13, 0, 9, 198, 77, 161, 82, 21, 1,
-			64, 13, 12, 137, 11, 195, 182, 26, 195, 182, 12, 20, 5, 13, 9, 133, 197, 145, 19, 26, 9, 20, 13, 0, 13, 138, 195, 169, 18, 5,
-			26, 8, 5, 20, 20, 5, 13, 14, 139, 6, 197, 145, 15, 19, 26, 20, 195, 161, 10, 20, 13, 6, 195, 32, 19, 20, 13, 0, 49, 13,
-			15, 19, 26, 20, 195, 161, 12, 25, 195, 161, 14, 1, 11, 39, 89, 47, 114, 57, 114, 50, 108, 49, 23, 84, 109, 88, 109, 47, 113, 91,
-			113, 47, 0, 13, 81, 118, 101, 122, 101, 116, 195, 169, 115, 195, 169, 116, 32, 16, 141, 20, 195, 161, 18, 7, 25, 1, 12, 10, 1, 14,
-			1, 11, 13, 16, 141, 20, 195, 161, 18, 7, 25, 1, 12, 10, 1, 14, 1, 11, 13, 0, 10, 135, 195, 179, 18, 1, 11, 15, 18, 13,
-			38, 14, 9, 14, 4, 195, 173, 20, 22, 195, 161, 14, 25, 14, 1, 11, 37, 50, 72, 112, 47, 84, 114, 67, 50, 108, 49, 23, 84, 108,
-			50, 0, 13, 81, 118, 97, 110, 32, 34, 11, 195, 161, 12, 12, 1, 16, 15, 20, 2, 1, 14, 114, 55, 12, 108, 48, 39, 47, 71, 108,
-			50, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 17, 142, 5, 12, 22, 195, 161, 18, 195, 161, 19, 15, 11, 14, 1, 11, 13, 8,
-			197, 24, 241, 193, 37, 64, 13, 9, 198, 80, 20, 148, 61, 162, 75, 13, 0, 10, 135, 195, 182, 19, 19, 26, 5, 7, 13, 14, 139, 22,
-			5, 26, 5, 20, 197, 145, 11, 14, 5, 11, 13, 9, 198, 52, 243, 132, 61, 69, 0, 13, 0, 19, 144, 11, 195, 169, 16, 22, 9, 19,
-			5, 12, 20, 10, 5, 9, 14, 5, 11, 13, 11, 136, 26, 195, 161, 19, 26, 12, 195, 179, 13, 0, 16, 141, 11, 21, 20, 1, 20, 195,
-			161, 19, 15, 11, 14, 1, 11, 13, 10, 135, 22, 195, 169, 11, 15, 14, 25, 13, 0, 8, 197, 16, 243, 7, 60, 176, 13, 45, 69, 16,
-			243, 7, 60, 176, 72, 39, 55, 81, 39, 49, 10, 6, 15, 37, 72, 109, 81, 109, 91, 112, 47, 109, 50, 109, 49, 0, 13, 81, 105, 100,
-			101, 103, 101, 115, 195, 173, 116, 101, 110, 101, 107, 32, 13, 138, 2, 5, 12, 197, 145, 14, 9, 195, 188, 11, 13, 17, 142, 9, 14, 20,
-			195, 169, 26, 13, 195, 169, 14, 25, 14, 5, 11, 13, 6, 195, 77, 160, 82, 13, 9, 198, 4, 192, 80, 77, 162, 75, 13, 15, 140, 195,
-			169, 12, 5, 20, 20, 1, 18, 20, 1, 13, 1, 13, 12, 201, 24, 241, 193, 48, 208, 90, 61, 69, 0, 13, 6, 195, 77, 160, 82, 13,
-			0, 40, 11, 11, 195, 182, 26, 195, 182, 14, 19, 195, 169, 7, 49, 110, 88, 110, 50, 91, 113, 81, 23, 91, 39, 52, 108, 37, 71, 108,
-			0, 13, 81, 115, 111, 114, 97, 105, 98, 97, 32, 12, 201, 80, 20, 1, 77, 165, 1, 49, 64, 77, 13, 9, 198, 77, 165, 15, 72, 149,
-			0, 13, 13, 138, 22, 1, 12, 12, 15, 13, 195, 161, 19, 20, 13, 0, 11, 136, 20, 21, 4, 8, 1, 20, 195, 179, 13, 10, 199, 4,
-			64, 75, 61, 163, 212, 80, 13, 16, 134, 11, 195, 169, 26, 2, 5, 13, 81, 118, 101, 110, 110, 105, 32, 0, 7, 196, 85, 64, 76, 80,
-			13, 7, 196, 4, 65, 9, 28, 13, 58, 13, 20, 5, 22, 195, 169, 11, 5, 14, 25, 19, 195, 169, 7, 47, 109, 84, 113, 49, 109, 67,
-			91, 113, 81, 23, 49, 110, 88, 113, 48, 12, 39, 50, 80, 114, 71, 108, 0, 13, 81, 107, 195, 182, 122, 195, 169, 112, 112, 111, 110, 116,
-			106, 195, 161, 98, 97, 32, 38, 9, 19, 26, 1, 2, 8, 1, 20, 195, 179, 89, 108, 71, 107, 108, 47, 115, 23, 65, 109, 50, 111, 84,
-			109, 55, 0, 13, 81, 109, 101, 110, 195, 188, 118, 101, 108, 32, 12, 137, 15, 19, 26, 20, 8, 1, 20, 195, 179, 13, 11, 136, 3, 19,
-			9, 14, 195, 161, 12, 20, 13, 16, 141, 20, 5, 22, 195, 169, 11, 5, 14, 25, 19, 195, 169, 7, 13, 12, 137, 22, 195, 161, 7, 8,
-			1, 20, 195, 179, 13, 12, 137, 12, 195, 161, 20, 8, 1, 20, 195, 179, 13, 7, 196, 32, 147, 142, 36, 13, 7, 196, 48, 83, 142, 36,
-			13, 0, 11, 136, 8, 1, 12, 195, 161, 12, 18, 1, 13, 9, 198, 88, 148, 197, 49, 65, 75, 13, 17, 142, 20, 1, 12, 195, 161, 12,
-			13, 195, 161, 14, 25, 21, 14, 11, 13, 13, 138, 6, 15, 7, 1, 4, 8, 1, 20, 195, 179, 13, 0, 9, 198, 57, 145, 76, 88, 85,
-			0, 13, 42, 11, 5, 12, 22, 195, 161, 18, 8, 1, 20, 195, 179, 109, 55, 84, 114, 52, 107, 108, 47, 115, 23, 89, 109, 52, 37, 50,
-			47, 109, 0, 13, 81, 115, 122, 101, 114, 105, 110, 116, 101, 32, 12, 137, 19, 26, 195, 161, 13, 15, 4, 18, 1, 13, 14, 139, 6, 21,
-			20, 20, 1, 20, 8, 1, 20, 195, 179, 13, 12, 137, 5, 12, 11, 195, 182, 12, 20, 22, 5, 13, 14, 139, 20, 1, 12, 195, 161, 12,
-			8, 1, 20, 195, 179, 13, 0, 15, 140, 11, 1, 16, 3, 19, 15, 12, 8, 1, 20, 195, 179, 13, 9, 198, 88, 148, 197, 49, 65, 77,
-			13, 11, 136, 8, 1, 20, 195, 161, 19, 21, 11, 13, 15, 140, 6, 15, 18, 4, 195, 173, 20, 8, 1, 20, 195, 179, 13, 6, 195, 32,
-			149, 20, 13, 15, 8, 95, 35, 45, 195, 169, 14, 5, 11, 113, 50, 109, 49, 0, 0, 7, 196, 24, 82, 133, 16, 13, 16, 141, 11, 9,
-			20, 1, 12, 195, 161, 12, 8, 1, 20, 195, 179, 13, 12, 137, 22, 9, 12, 195, 161, 7, 14, 1, 11, 13, 0, 14, 139, 8, 195, 169,
-			20, 22, 195, 169, 7, 195, 169, 14, 13, 40, 14, 12, 5, 8, 5, 20, 197, 145, 19, 195, 169, 7, 195, 188, 11, 55, 109, 107, 109, 47,
-			118, 91, 113, 81, 111, 49, 23, 108, 52, 52, 108, 0, 13, 81, 97, 114, 114, 97, 32, 6, 195, 77, 161, 82, 72, 0, 9, 198, 80, 148,
-			9, 45, 84, 192, 13, 9, 134, 8, 195, 179, 14, 1, 16, 13, 0, 17, 142, 5, 12, 5, 11, 20, 18, 15, 14, 9, 11, 195, 161, 10,
-			1, 13, 0, 11, 136, 3, 195, 169, 12, 10, 1, 9, 20, 13, 50, 72, 36, 229, 5, 72, 225, 84, 21, 48, 37, 50, 47, 109, 52, 50,
-			109, 47, 109, 91, 15, 49, 37, 47, 110, 55, 47, 113, 91, 113, 52, 109, 0, 13, 81, 107, 105, 116, 195, 182, 108, 116, 195, 169, 115, 195,
-			169, 114, 101, 32, 20, 145, 13, 5, 7, 195, 161, 12, 12, 1, 16, 195, 173, 20, 8, 1, 20, 195, 179, 13, 0, 45, 10, 2, 197, 177,
-			14, 195, 182, 19, 14, 5, 11, 71, 117, 50, 110, 91, 50, 109, 49, 10, 6, 15, 47, 108, 55, 114, 61, 57, 114, 49, 0, 13, 81, 116,
-			97, 108, 195, 161, 108, 106, 195, 161, 107, 32, 12, 137, 7, 25, 5, 18, 5, 11, 195, 169, 20, 13, 14, 139, 195, 169, 16, 195, 188, 12,
-			5, 20, 2, 5, 14, 13, 14, 139, 11, 5, 18, 195, 188, 12, 5, 20, 2, 5, 14, 13, 0, 12, 137, 11, 5, 26, 4, 197, 145, 4,
-			197, 145, 13, 14, 139, 6, 21, 14, 11, 3, 9, 195, 179, 14, 1, 11, 13, 0, 0, 11, 136, 5, 7, 195, 169, 19, 26, 5, 20, 13,
-			0, 8, 197, 77, 160, 66, 4, 64, 76, 11, 136, 13, 195, 169, 18, 5, 20, 197, 177, 13, 64, 14, 6, 5, 12, 22, 195, 169, 20, 5,
-			12, 195, 169, 14, 5, 11, 83, 109, 55, 84, 113, 47, 109, 55, 113, 50, 109, 49, 23, 89, 111, 49, 91, 113, 81, 109, 91, 12, 113, 81,
-			113, 47, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 115, 195, 169, 103, 195, 169, 116, 32, 11, 136, 195, 169, 16, 195,
-			188, 12, 197, 145, 13, 6, 195, 36, 113, 78, 13, 8, 133, 11, 195, 169, 18, 20, 13, 10, 4, 95, 49, 48, 5, 47, 37, 88, 0, 0,
-			0, 14, 139, 195, 169, 12, 13, 195, 169, 14, 25, 195, 169, 20, 13, 10, 199, 24, 148, 148, 5, 52, 213, 44, 13, 19, 144, 14, 195, 182,
-			22, 5, 11, 5, 4, 195, 169, 19, 195, 169, 14, 5, 11, 13, 14, 139, 20, 195, 161, 18, 8, 5, 12, 25, 195, 169, 20, 13, 32, 7,
-			18, 5, 1, 7, 195, 161, 12, 52, 109, 108, 81, 114, 55, 23, 47, 110, 71, 12, 113, 0, 13, 81, 116, 195, 182, 98, 98, 195, 169, 32,
-			6, 195, 60, 176, 64, 13, 10, 199, 20, 197, 133, 32, 85, 9, 44, 13, 10, 135, 195, 173, 7, 195, 169, 18, 20, 13, 0, 7, 196, 77,
-			162, 78, 80, 13, 0, 10, 135, 16, 9, 1, 3, 195, 161, 14, 13, 8, 133, 6, 9, 195, 186, 20, 13, 8, 133, 2, 197, 145, 18, 20,
-			13, 0, 39, 66, 5, 160, 108, 88, 23, 113, 52, 47, 113, 49, 109, 91, 112, 47, 113, 91, 47, 0, 13, 81, 195, 169, 114, 116, 195, 169,
-			107, 101, 115, 195, 173, 116, 195, 169, 115, 116, 32, 32, 66, 5, 160, 108, 88, 23, 109, 55, 12, 109, 50, 113, 52, 84, 109, 49, 0, 13,
-			81, 101, 108, 108, 101, 110, 195, 169, 114, 118, 101, 107, 32, 22, 66, 5, 160, 108, 88, 23, 37, 72, 118, 52, 109, 0, 13, 81, 105, 100,
-			197, 145, 114, 101, 32, 18, 66, 5, 160, 108, 88, 23, 89, 108, 52, 0, 13, 81, 115, 122, 97, 114, 32, 34, 66, 5, 160, 108, 88, 23,
-			108, 55, 108, 48, 113, 55, 65, 113, 67, 109, 0, 13, 81, 97, 108, 97, 112, 195, 169, 108, 109, 195, 169, 110, 121, 101, 32, 25, 66, 5,
-			160, 108, 88, 23, 111, 79, 109, 49, 109, 47, 0, 13, 81, 195, 188, 103, 121, 101, 107, 101, 116, 32, 27, 66, 5, 160, 108, 88, 23, 111,
-			79, 109, 49, 71, 109, 50, 0, 13, 81, 195, 188, 103, 121, 101, 107, 98, 101, 110, 32, 29, 66, 5, 160, 108, 88, 10, 6, 15, 108, 72,
-			108, 47, 39, 49, 108, 47, 0, 13, 81, 97, 100, 97, 116, 111, 107, 97, 116, 32, 32, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 72,
-			39, 49, 55, 114, 91, 47, 0, 13, 81, 105, 110, 100, 111, 107, 108, 195, 161, 115, 116, 32, 22, 66, 5, 160, 108, 88, 10, 6, 15, 109,
-			55, 91, 118, 0, 13, 81, 101, 108, 115, 197, 145, 32, 28, 66, 5, 160, 108, 88, 10, 6, 15, 37, 55, 12, 109, 47, 118, 47, 0, 13,
-			81, 105, 108, 108, 101, 116, 197, 145, 116, 32, 27, 66, 5, 160, 108, 88, 10, 6, 15, 109, 91, 109, 47, 71, 109, 50, 0, 13, 81, 101,
-			115, 101, 116, 98, 101, 110, 32, 27, 66, 5, 160, 108, 88, 10, 6, 15, 49, 109, 55, 12, 109, 50, 109, 0, 13, 81, 107, 101, 108, 108,
-			101, 110, 101, 32, 23, 66, 5, 160, 108, 88, 10, 6, 15, 114, 52, 114, 47, 0, 13, 81, 195, 161, 114, 195, 161, 116, 32, 34, 66, 5,
-			160, 108, 88, 10, 6, 15, 109, 89, 49, 110, 88, 110, 49, 109, 47, 0, 13, 81, 101, 115, 122, 107, 195, 182, 122, 195, 182, 107, 101, 116,
-			32, 22, 66, 5, 160, 108, 88, 10, 6, 15, 113, 84, 109, 47, 0, 13, 81, 195, 169, 118, 101, 116, 32, 22, 66, 5, 160, 108, 88, 10,
-			6, 15, 37, 72, 118, 47, 0, 13, 81, 105, 100, 197, 145, 116, 32, 24, 66, 5, 160, 108, 88, 10, 6, 15, 108, 6, 15, 71, 108, 57,
-			0, 13, 82, 97, 32, 98, 97, 106, 32, 21, 66, 5, 160, 108, 88, 10, 6, 15, 108, 72, 108, 47, 0, 13, 81, 97, 100, 97, 116, 32,
-			31, 66, 5, 160, 108, 88, 10, 6, 15, 39, 34, 89, 114, 81, 71, 108, 50, 0, 13, 81, 111, 114, 115, 122, 195, 161, 103, 98, 97, 110,
-			32, 23, 66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 84, 109, 47, 0, 13, 81, 101, 108, 118, 101, 116, 32, 24, 66, 5, 160, 108, 88,
-			10, 6, 15, 113, 61, 57, 109, 55, 0, 13, 81, 195, 169, 106, 106, 101, 108, 32, 23, 66, 5, 160, 108, 88, 10, 6, 15, 108, 50, 81,
-			39, 55, 0, 13, 81, 97, 110, 103, 111, 108, 32, 34, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 72, 112, 47, 84, 114, 67, 108, 0,
-			13, 81, 105, 110, 100, 195, 173, 116, 118, 195, 161, 110, 121, 97, 32, 25, 66, 5, 160, 108, 88, 10, 6, 15, 39, 55, 72, 108, 55, 47,
-			0, 13, 81, 111, 108, 100, 97, 108, 116, 32, 26, 66, 5, 160, 108, 88, 10, 6, 15, 111, 79, 52, 118, 55, 0, 13, 81, 195, 188, 103,
-			121, 114, 197, 145, 108, 32, 35, 66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 50, 110, 49, 91, 113, 81, 109, 47, 0, 13, 81, 101, 108,
-			110, 195, 182, 107, 115, 195, 169, 103, 101, 116, 32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 109, 79, 12, 109, 91, 111, 55, 109, 47, 109,
-			49, 0, 13, 81, 101, 103, 121, 101, 115, 195, 188, 108, 101, 116, 101, 107, 32, 39, 66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 118, 52,
-			109, 57, 109, 55, 88, 113, 91, 109, 0, 13, 81, 101, 108, 197, 145, 114, 101, 106, 101, 108, 122, 195, 169, 115, 101, 32, 36, 66, 5, 160,
-			108, 88, 10, 6, 15, 37, 50, 47, 113, 88, 65, 113, 67, 109, 49, 0, 13, 81, 105, 110, 116, 195, 169, 122, 109, 195, 169, 110, 121, 101,
-			107, 32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 72, 39, 49, 55, 114, 91, 12, 108, 55, 0, 13, 81, 105, 110, 100, 111, 107,
-			108, 195, 161, 115, 115, 97, 108, 32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 114, 55, 12, 108, 48, 39, 47, 40, 49, 39, 50, 0, 13,
-			81, 195, 161, 108, 108, 97, 112, 111, 116, 117, 107, 111, 110, 32, 38, 66, 5, 160, 108, 88, 23, 91, 109, 65, 23, 89, 39, 49, 84, 114,
-			67, 39, 91, 0, 13, 82, 115, 101, 109, 32, 115, 122, 111, 107, 118, 195, 161, 110, 121, 111, 115, 32, 25, 66, 5, 160, 108, 88, 10, 6,
-			15, 111, 79, 71, 109, 50, 0, 13, 81, 195, 188, 103, 121, 98, 101, 110, 32, 41, 66, 5, 160, 108, 88, 10, 6, 15, 108, 55, 108, 48,
-			37, 55, 12, 109, 47, 65, 113, 67, 109, 0, 13, 81, 97, 108, 97, 112, 105, 108, 108, 101, 116, 109, 195, 169, 110, 121, 101, 32, 29, 66,
-			5, 160, 108, 88, 10, 6, 15, 37, 88, 81, 108, 55, 65, 108, 91, 0, 13, 81, 105, 122, 103, 97, 108, 109, 97, 115, 32, 30, 66, 5,
-			160, 108, 88, 23, 108, 6, 15, 49, 113, 52, 72, 113, 91, 0, 13, 82, 97, 32, 107, 195, 169, 114, 100, 195, 169, 115, 32, 34, 66, 5,
-			160, 108, 88, 23, 37, 50, 47, 113, 88, 109, 47, 109, 49, 109, 47, 0, 13, 81, 105, 110, 116, 195, 169, 122, 101, 116, 101, 107, 101, 116,
-			32, 21, 66, 5, 160, 108, 88, 23, 109, 55, 84, 109, 47, 0, 13, 81, 101, 108, 118, 101, 116, 32, 24, 66, 5, 160, 108, 88, 23, 113,
-			55, 109, 47, 109, 72, 0, 13, 81, 195, 169, 108, 101, 116, 101, 100, 32, 31, 66, 5, 160, 108, 88, 6, 23, 116, 57, 112, 47, 114, 91,
-			39, 49, 0, 13, 81, 195, 186, 106, 195, 173, 116, 195, 161, 115, 111, 107, 32, 31, 66, 5, 160, 108, 88, 6, 23, 114, 55, 12, 108, 48,
-			39, 47, 39, 65, 0, 13, 81, 195, 161, 108, 108, 97, 112, 111, 116, 111, 109, 32, 38, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 47,
-			109, 52, 50, 109, 47, 109, 88, 113, 91, 0, 13, 81, 105, 110, 116, 101, 114, 110, 101, 116, 101, 122, 195, 169, 115, 32, 35, 66, 5, 160,
-			108, 88, 10, 6, 15, 108, 6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 13, 82, 97, 32, 112, 114, 111, 98, 108, 195, 169, 109, 97,
-			32, 25, 66, 5, 160, 108, 88, 6, 15, 10, 113, 89, 108, 49, 37, 0, 13, 81, 195, 169, 115, 122, 97, 107, 105, 32, 18, 66, 5, 160,
-			108, 88, 23, 109, 91, 118, 0, 13, 81, 101, 115, 197, 145, 32, 17, 66, 5, 160, 108, 88, 23, 113, 4, 81, 0, 13, 81, 195, 169, 103,
-			32, 17, 66, 5, 160, 108, 88, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 22, 66, 5, 160, 108, 88, 23, 37, 50, 83, 115, 47,
-			0, 13, 81, 105, 110, 102, 195, 179, 116, 32, 15, 66, 5, 160, 108, 88, 15, 37, 91, 0, 13, 81, 105, 115, 32, 20, 66, 5, 160, 10,
-			108, 88, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 9, 134, 20, 195, 161, 18, 15, 12, 13, 6, 194, 5, 160, 72, 12,
-			0, 15, 140, 19, 26, 195, 169, 12, 12, 195, 182, 11, 195, 169, 19, 13, 8, 133, 11, 195, 169, 19, 26, 13, 0, 11, 136, 3, 195, 169,
-			7, 195, 169, 18, 20, 13, 9, 134, 16, 195, 161, 18, 15, 14, 13, 14, 139, 22, 9, 26, 19, 7, 195, 161, 12, 1, 20, 1, 13, 0,
-			12, 137, 16, 195, 169, 12, 4, 195, 161, 21, 12, 13, 8, 133, 11, 195, 169, 19, 20, 13, 15, 69, 29, 145, 83, 21, 96, 79, 109, 91,
-			109, 84, 0, 42, 42, 0, 39, 70, 44, 83, 12, 21, 69, 0, 49, 109, 55, 12, 109, 47, 12, 23, 49, 108, 48, 76, 39, 55, 50, 39,
-			65, 0, 13, 81, 107, 97, 112, 99, 115, 111, 108, 110, 111, 109, 32, 29, 70, 44, 83, 12, 21, 69, 0, 49, 109, 55, 12, 109, 47, 12,
-			23, 108, 107, 39, 88, 0, 13, 81, 97, 104, 104, 111, 122, 32, 40, 70, 44, 83, 12, 21, 69, 0, 49, 109, 55, 12, 109, 47, 12, 23,
-			109, 55, 39, 55, 84, 108, 91, 50, 39, 65, 0, 13, 81, 101, 108, 111, 108, 118, 97, 115, 110, 111, 109, 32, 13, 138, 20, 195, 182, 13,
-			5, 7, 18, 197, 145, 12, 13, 9, 198, 44, 83, 12, 21, 69, 0, 13, 6, 131, 8, 195, 179, 13, 0, 10, 135, 20, 15, 10, 195, 161,
-			19, 20, 13, 29, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 84, 114, 52, 57, 114, 49, 0, 13, 81, 118, 195, 161, 114, 106, 195, 161,
-			107, 32, 31, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 89, 109, 52, 109, 47, 50, 113, 0, 13, 81, 115, 122, 101, 114, 101, 116, 110,
-			195, 169, 32, 27, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 57, 109, 55, 88, 37, 49, 0, 13, 81, 106, 101, 108, 122, 105, 107, 32,
-			38, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 79, 108, 50, 112, 47, 39, 47, 12, 114, 49, 0, 13, 81, 103, 121, 97, 110, 195, 173,
-			116, 111, 116, 116, 195, 161, 107, 32, 33, 67, 5, 165, 0, 108, 89, 47, 10, 6, 49, 113, 48, 84, 37, 91, 109, 55, 37, 0, 13, 81,
+			101, 108, 32, 0, 29, 68, 77, 167, 13, 4, 89, 114, 65, 108, 23, 76, 110, 49, 12, 109, 50, 0, 11, 81, 99, 115, 195, 182, 107, 107,
+			101, 110, 32, 7, 196, 77, 167, 13, 4, 11, 7, 196, 44, 20, 19, 104, 11, 18, 1, 54, 107, 108, 119, 12, 39, 52, 0, 44, 81, 32,
+			115, 122, 111, 114, 32, 24, 1, 54, 107, 108, 47, 39, 72, 37, 49, 114, 47, 115, 55, 0, 44, 16, 81, 32, 116, 195, 179, 108, 32, 18,
+			1, 54, 107, 108, 47, 12, 115, 55, 0, 44, 81, 32, 116, 195, 179, 108, 32, 17, 1, 54, 107, 108, 47, 12, 108, 55, 0, 44, 81, 32,
+			116, 97, 108, 32, 16, 1, 54, 107, 108, 47, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 23, 1, 54, 104, 97, 116, 111, 100, 105, 107,
+			195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 19, 1, 54, 107, 108, 47, 39, 72, 37, 49, 108, 37, 0, 44, 16, 81, 32,
+			105, 32, 0, 33, 71, 32, 149, 129, 80, 19, 15, 76, 107, 37, 84, 108, 47, 108, 55, 39, 91, 23, 55, 109, 50, 12, 109, 0, 11, 81,
+			108, 101, 110, 110, 101, 32, 10, 199, 61, 54, 148, 112, 198, 79, 56, 11, 7, 196, 54, 113, 15, 56, 11, 8, 197, 45, 196, 148, 100, 16,
+			11, 18, 1, 55, 107, 113, 119, 12, 109, 52, 0, 44, 81, 32, 115, 122, 101, 114, 32, 19, 1, 55, 107, 109, 47, 109, 91, 12, 109, 55,
+			0, 44, 81, 32, 115, 101, 108, 32, 22, 1, 55, 107, 109, 47, 109, 91, 109, 49, 52, 109, 0, 44, 81, 32, 115, 101, 107, 114, 101, 32,
+			16, 1, 55, 107, 113, 47, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 17, 1, 55, 107, 113, 47, 12, 109, 55, 0, 44, 81, 32, 116,
+			101, 108, 32, 24, 1, 55, 107, 109, 47, 109, 72, 37, 49, 113, 47, 118, 55, 0, 44, 16, 81, 32, 116, 197, 145, 108, 32, 18, 1, 55,
+			107, 113, 47, 12, 118, 55, 0, 44, 81, 32, 116, 197, 145, 108, 32, 0, 7, 65, 56, 109, 50, 50, 0, 10, 199, 36, 112, 90, 77, 193,
+			207, 76, 11, 6, 195, 26, 180, 212, 11, 17, 1, 56, 67, 39, 55, 119, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 18, 1, 56, 67,
+			39, 55, 119, 12, 108, 55, 0, 44, 81, 32, 99, 97, 108, 32, 25, 1, 56, 110, 121, 111, 108, 99, 97, 100, 105, 107, 195, 161, 105, 103,
+			0, 44, 16, 29, 81, 32, 105, 103, 32, 20, 1, 56, 67, 39, 55, 119, 108, 72, 37, 49, 108, 37, 0, 44, 16, 81, 32, 105, 32, 0,
+			12, 201, 82, 131, 139, 72, 85, 5, 32, 85, 9, 11, 9, 134, 195, 188, 108, 197, 145, 116, 11, 10, 199, 40, 21, 129, 76, 243, 14, 36,
+			11, 19, 1, 57, 49, 37, 55, 109, 50, 119, 109, 47, 0, 44, 81, 32, 99, 101, 116, 32, 20, 1, 57, 49, 37, 55, 109, 50, 119, 12,
+			109, 55, 0, 44, 81, 32, 99, 101, 108, 32, 19, 1, 57, 49, 37, 55, 109, 50, 119, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0,
+			9, 198, 48, 84, 218, 172, 226, 192, 72, 9, 198, 82, 132, 148, 136, 227, 137, 11, 12, 201, 44, 243, 12, 136, 119, 9, 88, 19, 0, 11,
+			9, 198, 82, 132, 148, 136, 227, 137, 11, 9, 198, 48, 83, 142, 136, 226, 192, 11, 0, 8, 197, 66, 35, 4, 113, 64, 11, 0, 28, 69,
+			50, 36, 34, 76, 80, 55, 113, 48, 113, 91, 109, 23, 109, 55, 12, 109, 50, 0, 11, 81, 101, 108, 108, 101, 110, 32, 35, 69, 20, 118,
+			107, 90, 32, 109, 79, 12, 111, 84, 113, 23, 47, 108, 34, 47, 39, 88, 114, 91, 0, 11, 81, 116, 97, 114, 116, 111, 122, 195, 161, 115,
+			32, 8, 197, 137, 38, 162, 76, 80, 11, 8, 197, 82, 35, 92, 72, 16, 11, 10, 199, 77, 161, 77, 80, 19, 170, 44, 11, 9, 198, 85,
+			64, 83, 149, 71, 19, 11, 0, 11, 1, 61, 109, 79, 109, 50, 55, 118, 0, 27, 40, 68, 61, 0, 201, 156, 39, 48, 119, 37, 115, 23,
+			71, 109, 49, 108, 48, 76, 39, 55, 114, 91, 108, 0, 11, 81, 98, 101, 107, 97, 112, 99, 115, 111, 108, 195, 161, 115, 97, 32, 28, 70,
+			76, 146, 197, 72, 84, 192, 91, 37, 49, 109, 52, 109, 91, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 12, 201, 20, 195,
+			5, 57, 72, 148, 8, 83, 128, 11, 8, 197, 61, 0, 201, 156, 176, 11, 22, 68, 61, 0, 201, 156, 39, 48, 119, 37, 115, 15, 50, 109,
+			65, 0, 11, 81, 110, 101, 109, 32, 6, 195, 149, 37, 129, 11, 0, 7, 196, 10, 86, 142, 4, 11, 12, 201, 80, 83, 142, 37, 96, 76,
+			156, 226, 192, 11, 0, 29, 71, 88, 19, 39, 78, 85, 10, 4, 84, 108, 55, 115, 91, 112, 80, 12, 108, 23, 65, 109, 81, 0, 11, 81,
+			109, 101, 103, 32, 40, 14, 115, 122, 101, 114, 122, 197, 145, 100, 195, 169, 115, 98, 101, 110, 89, 109, 52, 88, 118, 72, 113, 91, 71, 109,
+			50, 23, 49, 109, 55, 12, 0, 11, 81, 107, 101, 108, 108, 32, 42, 69, 112, 195, 1, 52, 144, 114, 55, 12, 108, 65, 37, 10, 6, 15,
+			47, 114, 65, 39, 81, 108, 47, 114, 91, 108, 0, 11, 81, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 97, 32, 10, 199, 28, 243,
+			132, 60, 194, 149, 44, 11, 7, 196, 41, 196, 147, 104, 11, 12, 7, 95, 35, 45, 105, 107, 97, 105, 108, 37, 0, 0, 10, 1, 64, 49,
+			40, 49, 108, 119, 0, 27, 6, 65, 64, 48, 113, 0, 8, 197, 89, 193, 217, 77, 160, 11, 8, 197, 46, 133, 34, 76, 80, 11, 9, 198,
+			40, 83, 5, 57, 68, 197, 11, 12, 201, 72, 81, 201, 77, 165, 18, 112, 50, 103, 11, 0, 9, 198, 77, 167, 13, 49, 194, 84, 11, 12,
+			201, 112, 195, 28, 77, 3, 206, 80, 160, 64, 11, 10, 199, 37, 50, 207, 49, 194, 193, 80, 11, 6, 195, 60, 179, 218, 11, 10, 67, 113,
+			54, 128, 114, 89, 0, 42, 42, 0, 9, 198, 8, 83, 69, 57, 65, 75, 11, 11, 200, 74, 36, 218, 48, 85, 5, 37, 64, 11, 9, 198,
+			88, 148, 197, 49, 65, 75, 11, 9, 134, 102, 197, 177, 122, 110, 105, 11, 9, 198, 137, 34, 197, 104, 146, 192, 11, 10, 199, 61, 33, 9,
+			9, 195, 20, 4, 11, 7, 196, 90, 35, 20, 20, 11, 0, 16, 141, 109, 101, 103, 102, 101, 108, 101, 108, 197, 145, 110, 101, 107, 11, 9,
+			198, 60, 197, 129, 76, 226, 64, 11, 16, 141, 115, 122, 97, 107, 195, 169, 114, 116, 197, 145, 110, 101, 107, 11, 9, 198, 44, 20, 3, 76,
+			243, 20, 11, 7, 132, 197, 145, 114, 116, 11, 0, 6, 65, 68, 49, 40, 0, 45, 10, 98, 197, 177, 110, 195, 182, 115, 110, 101, 107, 71,
+			117, 50, 110, 91, 50, 109, 49, 10, 6, 15, 47, 108, 55, 114, 61, 57, 114, 49, 0, 11, 81, 116, 97, 108, 195, 161, 108, 106, 195, 161,
+			107, 32, 70, 10, 115, 122, 101, 110, 118, 101, 100, 197, 145, 107, 89, 109, 50, 84, 109, 72, 118, 49, 23, 49, 110, 52, 113, 71, 109, 50,
+			23, 48, 52, 115, 71, 114, 55, 50, 114, 49, 23, 49, 37, 0, 11, 83, 107, 195, 182, 114, 195, 169, 98, 101, 110, 32, 112, 114, 195, 179,
+			98, 195, 161, 108, 110, 195, 161, 107, 32, 107, 105, 32, 12, 201, 21, 132, 5, 18, 80, 201, 156, 224, 75, 11, 0, 9, 198, 88, 17, 217,
+			80, 242, 192, 11, 8, 197, 172, 200, 147, 20, 224, 11, 10, 199, 40, 241, 203, 161, 36, 133, 48, 11, 0, 9, 198, 53, 83, 139, 112, 32,
+			78, 11, 11, 200, 137, 33, 5, 44, 82, 86, 20, 192, 11, 11, 200, 81, 195, 79, 28, 21, 14, 112, 176, 11, 43, 74, 40, 83, 5, 57,
+			66, 197, 106, 36, 226, 80, 57, 109, 55, 109, 50, 47, 49, 109, 88, 113, 91, 113, 47, 23, 84, 114, 52, 57, 40, 49, 0, 11, 81, 118,
+			195, 161, 114, 106, 117, 107, 32, 13, 138, 107, 195, 182, 116, 101, 108, 101, 122, 197, 145, 11, 12, 201, 8, 244, 211, 104, 19, 148, 156, 18,
+			192, 11, 9, 198, 77, 163, 194, 112, 32, 78, 11, 7, 196, 148, 120, 146, 80, 11, 9, 198, 46, 36, 5, 44, 33, 78, 17, 0, 11, 200,
+			37, 39, 14, 102, 85, 10, 112, 176, 11, 9, 198, 41, 85, 20, 5, 71, 19, 11, 10, 199, 50, 36, 8, 21, 52, 197, 56, 11, 10, 199,
+			12, 83, 148, 72, 146, 213, 76, 11, 11, 200, 50, 36, 34, 76, 82, 203, 20, 192, 11, 0, 7, 65, 72, 109, 51, 51, 0, 21, 67, 112,
+			195, 0, 114, 55, 12, 23, 108, 52, 52, 108, 0, 11, 81, 97, 114, 114, 97, 32, 7, 196, 5, 166, 129, 48, 11, 7, 196, 21, 166, 133,
+			48, 11, 12, 137, 195, 169, 118, 101, 107, 98, 197, 145, 108, 11, 44, 12, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 84, 108,
+			55, 115, 89, 112, 50, 117, 15, 10, 107, 37, 72, 109, 81, 109, 71, 12, 0, 11, 81, 104, 105, 100, 101, 103, 101, 98, 98, 32, 12, 137,
+			195, 169, 118, 101, 107, 98, 197, 145, 108, 11, 15, 140, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 11, 7, 196, 5, 166, 129,
+			48, 11, 6, 195, 112, 195, 0, 11, 0, 12, 137, 101, 114, 197, 145, 115, 195, 173, 116, 105, 11, 15, 204, 77, 163, 204, 29, 195, 20, 5,
+			71, 19, 60, 176, 84, 11, 38, 76, 77, 163, 204, 29, 195, 20, 5, 71, 19, 60, 176, 84, 89, 39, 55, 81, 114, 55, 47, 108, 47, 114,
+			91, 39, 49, 108, 47, 23, 37, 91, 0, 11, 81, 105, 115, 32, 41, 73, 44, 20, 3, 76, 243, 1, 80, 32, 78, 49, 108, 48, 76, 39,
+			55, 108, 47, 71, 108, 50, 23, 108, 88, 23, 84, 39, 55, 47, 0, 11, 82, 97, 122, 32, 118, 111, 108, 116, 32, 0, 12, 201, 82, 132,
+			150, 136, 230, 69, 44, 83, 128, 11, 11, 200, 32, 83, 25, 104, 85, 34, 73, 64, 11, 0, 8, 197, 46, 133, 14, 36, 80, 11, 9, 198,
+			52, 243, 132, 40, 19, 64, 11, 11, 200, 84, 118, 65, 56, 18, 203, 61, 32, 11, 15, 204, 24, 83, 8, 5, 54, 142, 112, 201, 203, 56,
+			18, 192, 11, 9, 198, 25, 34, 83, 78, 179, 0, 11, 9, 198, 41, 85, 1, 48, 243, 64, 11, 9, 198, 60, 197, 129, 76, 243, 64, 11,
+			0, 7, 65, 76, 109, 91, 0, 49, 6, 65, 76, 91, 10, 0, 13, 202, 46, 132, 130, 20, 167, 20, 77, 167, 19, 4, 11, 7, 196, 14,
+			35, 15, 44, 11, 0, 11, 200, 77, 160, 86, 5, 160, 84, 61, 64, 11, 17, 142, 102, 101, 108, 101, 115, 195, 169, 103, 195, 169, 116, 197,
+			145, 108, 11, 13, 202, 64, 243, 7, 113, 35, 69, 77, 65, 82, 80, 11, 10, 199, 40, 83, 5, 57, 72, 147, 80, 11, 6, 195, 149, 37,
+			1, 11, 9, 198, 46, 179, 4, 161, 69, 0, 11, 0, 9, 198, 44, 83, 12, 20, 225, 75, 11, 11, 200, 44, 145, 137, 104, 85, 14, 36,
+			80, 11, 9, 198, 76, 20, 139, 112, 131, 218, 11, 12, 201, 65, 35, 194, 50, 35, 92, 74, 115, 0, 11, 10, 199, 24, 83, 12, 137, 8,
+			147, 80, 11, 8, 133, 103, 121, 197, 145, 122, 11, 0, 0, 7, 196, 90, 85, 143, 44, 11, 12, 201, 161, 52, 218, 21, 32, 75, 61, 69,
+			0, 11, 9, 198, 82, 132, 148, 136, 226, 75, 11, 7, 196, 20, 118, 69, 80, 11, 7, 196, 88, 83, 5, 16, 11, 0, 31, 70, 18, 131,
+			148, 161, 69, 0, 72, 110, 50, 47, 110, 47, 12, 23, 108, 52, 52, 115, 55, 0, 11, 81, 97, 114, 114, 195, 179, 108, 32, 8, 197, 49,
+			195, 131, 60, 176, 11, 26, 68, 44, 144, 211, 36, 49, 37, 76, 37, 10, 6, 15, 108, 107, 39, 88, 0, 11, 81, 97, 104, 104, 111, 122,
+			32, 9, 198, 36, 179, 206, 41, 196, 129, 11, 6, 195, 137, 37, 5, 11, 9, 198, 18, 131, 148, 161, 69, 0, 11, 5, 194, 8, 16, 11,
+			0, 35, 67, 52, 81, 192, 65, 109, 81, 23, 49, 109, 55, 12, 23, 39, 55, 72, 108, 50, 37, 0, 11, 82, 107, 101, 108, 108, 32, 111,
+			108, 100, 97, 110, 105, 32, 41, 67, 52, 81, 192, 65, 109, 81, 23, 49, 109, 55, 12, 23, 84, 37, 90, 81, 114, 55, 50, 37, 0, 11,
+			82, 107, 101, 108, 108, 32, 118, 105, 122, 115, 103, 195, 161, 108, 110, 105, 32, 8, 197, 8, 19, 156, 57, 64, 11, 38, 67, 52, 81, 192,
+			65, 109, 81, 10, 6, 15, 49, 109, 55, 12, 10, 6, 15, 67, 39, 65, 50, 37, 0, 11, 82, 107, 101, 108, 108, 32, 110, 121, 111, 109,
+			110, 105, 32, 25, 67, 52, 81, 192, 65, 109, 81, 23, 108, 88, 39, 49, 108, 47, 0, 11, 81, 97, 122, 111, 107, 97, 116, 32, 28, 67,
+			52, 81, 192, 65, 109, 81, 23, 108, 6, 15, 91, 39, 52, 71, 108, 0, 11, 82, 97, 32, 115, 111, 114, 98, 97, 32, 45, 67, 52, 81,
+			192, 65, 109, 81, 23, 108, 6, 15, 57, 109, 55, 109, 50, 47, 49, 109, 88, 118, 84, 109, 55, 0, 11, 82, 97, 32, 106, 101, 108, 101,
+			110, 116, 107, 101, 122, 197, 145, 118, 101, 108, 32, 29, 67, 52, 81, 192, 65, 109, 81, 23, 37, 91, 23, 47, 40, 72, 39, 65, 0, 11,
+			82, 105, 115, 32, 116, 117, 100, 111, 109, 32, 24, 67, 52, 81, 192, 65, 109, 81, 23, 108, 23, 107, 112, 52, 0, 11, 82, 97, 32, 104,
+			195, 173, 114, 32, 15, 67, 52, 81, 192, 65, 109, 81, 23, 108, 0, 11, 81, 97, 32, 12, 201, 46, 36, 218, 172, 200, 139, 20, 177, 84,
+			11, 8, 197, 105, 196, 149, 49, 64, 11, 9, 198, 76, 81, 229, 80, 83, 162, 11, 6, 195, 52, 81, 192, 11, 0, 9, 198, 77, 161, 77,
+			64, 243, 148, 11, 9, 198, 77, 169, 204, 81, 195, 0, 11, 0, 32, 73, 72, 83, 132, 20, 194, 197, 106, 36, 212, 51, 109, 50, 72, 109,
+			55, 49, 109, 88, 113, 91, 47, 23, 37, 91, 0, 11, 81, 105, 115, 32, 16, 141, 101, 108, 108, 101, 110, 197, 145, 114, 122, 195, 169, 115,
+			116, 11, 28, 67, 8, 19, 0, 71, 108, 55, 23, 39, 55, 72, 108, 55, 114, 50, 0, 11, 81, 111, 108, 100, 97, 108, 195, 161, 110, 32,
+			12, 201, 36, 225, 193, 80, 192, 78, 84, 176, 129, 11, 13, 202, 32, 18, 140, 136, 181, 1, 48, 19, 143, 44, 11, 12, 201, 20, 194, 5,
+			49, 145, 90, 21, 69, 0, 11, 12, 201, 8, 150, 143, 81, 68, 220, 28, 245, 0, 11, 7, 196, 32, 83, 25, 80, 11, 7, 196, 24, 243,
+			25, 80, 11, 11, 193, 84, 13, 83, 46, 32, 105, 32, 46, 32, 0, 33, 67, 137, 100, 133, 113, 84, 52, 109, 10, 6, 15, 49, 113, 89,
+			111, 55, 50, 109, 0, 11, 81, 107, 195, 169, 115, 122, 195, 188, 108, 110, 101, 32, 6, 195, 137, 100, 133, 11, 12, 201, 80, 20, 148, 157,
+			162, 207, 17, 196, 212, 11, 9, 198, 52, 81, 206, 137, 163, 137, 11, 9, 66, 85, 0, 40, 48, 0, 42, 42, 0, 13, 202, 52, 81, 220,
+			48, 192, 80, 60, 71, 19, 80, 11, 9, 198, 77, 167, 12, 48, 163, 206, 11, 0, 13, 202, 32, 246, 154, 112, 167, 18, 84, 199, 19, 80,
+			11, 11, 136, 101, 122, 101, 108, 197, 145, 116, 116, 11, 0, 4, 193, 88, 42, 6, 65, 88, 84, 113, 0, 12, 201, 40, 81, 217, 104, 85,
+			5, 44, 85, 0, 11, 9, 198, 81, 196, 143, 48, 226, 64, 11, 9, 198, 44, 84, 171, 48, 226, 64, 11, 0, 9, 198, 13, 50, 82, 46,
+			36, 133, 11, 12, 137, 118, 101, 115, 122, 197, 145, 100, 110, 105, 11, 9, 198, 64, 84, 133, 54, 36, 133, 11, 16, 66, 137, 48, 113, 91,
+			23, 57, 115, 0, 11, 81, 106, 195, 179, 32, 25, 66, 137, 48, 113, 91, 23, 83, 108, 48, 108, 72, 39, 91, 0, 11, 81, 102, 97, 112,
+			97, 100, 111, 115, 32, 9, 198, 78, 37, 28, 48, 226, 64, 11, 33, 66, 137, 48, 113, 91, 23, 71, 39, 89, 12, 108, 50, 47, 115, 108,
+			49, 0, 11, 81, 98, 111, 115, 115, 122, 97, 110, 116, 195, 179, 97, 107, 32, 10, 199, 65, 35, 202, 20, 181, 10, 20, 11, 9, 198, 77,
+			169, 204, 40, 243, 128, 11, 24, 66, 137, 48, 113, 91, 65, 115, 79, 12, 114, 47, 0, 11, 81, 109, 195, 179, 100, 106, 195, 161, 116, 32,
+			10, 199, 20, 211, 5, 28, 85, 14, 36, 11, 5, 194, 5, 48, 72, 7, 194, 137, 48, 72, 10, 17, 0, 9, 198, 161, 42, 13, 137, 33,
+			64, 11, 10, 199, 64, 148, 218, 45, 195, 14, 36, 11, 11, 200, 24, 83, 9, 76, 209, 82, 56, 144, 11, 0, 12, 201, 80, 83, 5, 24,
+			243, 143, 44, 176, 76, 11, 12, 201, 13, 51, 208, 61, 37, 15, 44, 176, 76, 11, 9, 198, 76, 145, 84, 82, 179, 139, 11, 14, 139, 114,
+			101, 110, 100, 101, 108, 107, 101, 122, 197, 145, 11, 15, 4, 95, 49, 77, 52, 109, 79, 71, 37, 55, 55, 37, 115, 0, 0, 12, 1, 92,
+			71, 109, 49, 122, 55, 109, 91, 0, 27, 11, 65, 92, 72, 40, 48, 55, 108, 84, 113, 0, 15, 140, 101, 108, 108, 101, 110, 197, 145, 114,
+			105, 122, 110, 105, 11, 16, 141, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 101, 116, 116, 11, 12, 201, 44, 146, 1, 77, 163, 156, 48,
+			226, 64, 11, 7, 196, 88, 148, 197, 48, 11, 0, 9, 198, 29, 144, 78, 168, 167, 20, 11, 10, 199, 65, 35, 194, 50, 35, 92, 76, 11,
+			9, 198, 24, 244, 141, 112, 167, 20, 11, 7, 196, 36, 225, 37, 80, 11, 0, 14, 1, 94, 83, 110, 55, 83, 109, 55, 113, 67, 112, 55,
+			0, 9, 198, 37, 39, 14, 100, 131, 218, 11, 10, 199, 137, 37, 34, 44, 82, 197, 80, 11, 7, 196, 10, 84, 142, 4, 11, 0, 10, 199,
+			20, 193, 40, 57, 72, 147, 20, 11, 9, 198, 53, 85, 1, 80, 167, 11, 11, 13, 202, 44, 243, 135, 72, 84, 211, 105, 84, 220, 56, 11,
+			9, 198, 89, 195, 1, 77, 163, 203, 11, 9, 198, 80, 84, 141, 136, 177, 75, 11, 9, 198, 24, 84, 218, 20, 113, 84, 11, 12, 7, 95,
+			35, 45, 105, 107, 101, 105, 109, 37, 0, 0, 4, 193, 96, 42, 7, 65, 96, 37, 49, 89, 0, 35, 68, 48, 82, 5, 80, 55, 109, 107,
+			109, 47, 23, 89, 114, 65, 112, 47, 108, 50, 37, 0, 11, 81, 115, 122, 195, 161, 109, 195, 173, 116, 97, 110, 105, 32, 38, 68, 48, 82,
+			5, 80, 55, 109, 107, 109, 47, 23, 108, 49, 108, 72, 114, 57, 39, 88, 50, 37, 0, 11, 81, 97, 107, 97, 100, 195, 161, 108, 121, 111,
+			122, 110, 105, 32, 25, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 113, 52, 50, 37, 0, 11, 81, 195, 169, 114, 110, 105, 32, 41,
+			68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 47, 40, 72, 50, 37, 10, 6, 15, 51, 115, 55, 108, 0, 11, 82, 116, 117,
+			100, 110, 105, 32, 114, 195, 179, 108, 97, 32, 33, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 37, 91, 65, 109, 52, 118,
+			91, 0, 11, 81, 105, 115, 109, 101, 114, 197, 145, 115, 32, 28, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 84, 109, 50,
+			12, 37, 0, 11, 81, 118, 101, 110, 110, 105, 32, 34, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 65, 108, 34, 49, 39,
+			55, 50, 37, 0, 11, 81, 109, 97, 114, 107, 111, 108, 110, 105, 32, 36, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 57,
+			109, 55, 109, 50, 47, 109, 50, 37, 0, 11, 81, 106, 101, 108, 101, 110, 116, 101, 110, 105, 32, 26, 68, 48, 82, 5, 80, 55, 109, 107,
+			109, 47, 23, 109, 88, 88, 109, 55, 0, 11, 81, 101, 122, 122, 101, 108, 32, 16, 205, 80, 20, 137, 24, 16, 211, 60, 208, 71, 60, 178,
+			193, 48, 11, 34, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 107, 108, 89, 50, 114, 55, 50, 37, 0, 11, 81, 104, 97, 115, 122,
+			110, 195, 161, 108, 110, 105, 32, 36, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 108, 88, 10, 6, 15, 111, 79, 71, 109, 50, 0,
+			11, 82, 97, 122, 32, 195, 188, 103, 121, 98, 101, 110, 32, 27, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 50, 113, 88, 50, 37,
+			0, 11, 81, 110, 195, 169, 122, 110, 105, 32, 16, 141, 105, 115, 109, 101, 114, 197, 145, 115, 101, 105, 107, 101, 116, 11, 32, 68, 48, 82,
+			5, 80, 55, 109, 107, 109, 47, 23, 76, 108, 48, 108, 72, 113, 49, 0, 11, 81, 99, 115, 97, 112, 97, 100, 195, 169, 107, 32, 7, 196,
+			76, 242, 193, 80, 11, 7, 196, 80, 82, 5, 80, 11, 7, 196, 48, 82, 5, 80, 11, 16, 65, 96, 47, 112, 88, 88, 109, 55, 0, 44,
+			42, 81, 101, 108, 32, 0, 14, 203, 88, 148, 211, 104, 23, 12, 50, 85, 1, 57, 192, 11, 10, 199, 13, 50, 78, 112, 197, 28, 44, 11,
+			17, 142, 101, 108, 197, 145, 195, 173, 114, 195, 161, 115, 111, 107, 97, 116, 11, 12, 201, 25, 32, 75, 12, 153, 202, 113, 32, 64, 11, 10,
+			199, 40, 21, 129, 76, 243, 10, 4, 11, 9, 198, 77, 161, 82, 17, 196, 129, 17, 5, 194, 4, 64, 11, 15, 4, 95, 49, 77, 50, 109,
+			79, 65, 37, 55, 55, 37, 115, 0, 0, 9, 198, 48, 89, 82, 113, 55, 20, 11, 11, 200, 77, 163, 204, 29, 195, 10, 112, 176, 11, 17,
+			4, 95, 49, 77, 51, 109, 79, 65, 37, 55, 55, 37, 114, 52, 72, 0, 0, 9, 198, 20, 194, 78, 17, 83, 20, 11, 7, 196, 77, 169,
+			214, 112, 11, 10, 199, 57, 154, 138, 81, 196, 220, 80, 11, 6, 131, 102, 197, 145, 11, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50,
+			0, 12, 201, 32, 19, 135, 52, 147, 148, 112, 176, 84, 11, 9, 198, 44, 145, 5, 74, 179, 20, 11, 0, 51, 70, 20, 195, 5, 58, 36,
+			133, 109, 55, 12, 109, 50, 113, 52, 109, 23, 37, 91, 23, 71, 37, 89, 47, 39, 91, 112, 47, 108, 50, 114, 0, 11, 82, 105, 115, 32,
+			98, 105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 195, 161, 32, 13, 202, 52, 80, 200, 4, 226, 90, 53, 84, 220, 80, 11, 13, 202, 52,
+			81, 220, 48, 201, 84, 113, 55, 18, 4, 11, 10, 199, 65, 35, 194, 50, 35, 92, 44, 11, 17, 142, 105, 100, 197, 145, 106, 195, 161, 114,
+			195, 161, 115, 195, 161, 116, 11, 33, 70, 57, 149, 71, 60, 69, 0, 67, 40, 81, 39, 47, 12, 15, 65, 108, 52, 108, 72, 50, 37, 0,
+			11, 81, 109, 97, 114, 97, 100, 110, 105, 32, 11, 200, 40, 21, 129, 76, 243, 10, 112, 176, 11, 7, 196, 12, 83, 12, 4, 11, 9, 198,
+			24, 244, 132, 84, 197, 0, 11, 8, 195, 37, 5, 22, 13, 42, 42, 0, 11, 200, 81, 195, 79, 28, 21, 10, 112, 176, 11, 20, 67, 66,
+			35, 154, 48, 113, 50, 88, 15, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 12, 201, 24, 83, 16, 84, 137, 84, 113, 55, 20, 11, 14,
+			139, 114, 101, 110, 100, 106, 195, 169, 114, 197, 145, 108, 11, 6, 195, 66, 35, 154, 11, 6, 195, 76, 20, 192, 11, 0, 29, 71, 65, 35,
+			194, 50, 35, 92, 52, 48, 52, 39, 71, 55, 113, 65, 114, 65, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 40, 72, 20, 118, 69,
+			78, 179, 5, 80, 144, 109, 79, 12, 109, 91, 111, 55, 109, 47, 37, 23, 84, 109, 88, 109, 47, 118, 49, 0, 11, 81, 118, 101, 122, 101,
+			116, 197, 145, 107, 32, 15, 204, 52, 81, 220, 48, 192, 80, 149, 71, 19, 113, 32, 64, 11, 13, 202, 54, 113, 15, 78, 85, 28, 76, 242,
+			193, 80, 11, 33, 71, 65, 35, 194, 50, 35, 92, 52, 48, 52, 39, 71, 55, 113, 65, 114, 65, 15, 108, 49, 108, 47, 12, 0, 11, 81,
+			97, 107, 97, 100, 116, 32, 31, 70, 52, 81, 207, 48, 71, 19, 65, 109, 81, 39, 55, 72, 114, 91, 15, 48, 109, 72, 37, 81, 0, 11,
+			81, 112, 101, 100, 105, 103, 32, 9, 198, 52, 81, 207, 48, 71, 19, 11, 0, 6, 65, 104, 88, 113, 0, 22, 68, 160, 197, 5, 44, 110,
+			55, 47, 109, 49, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 39, 69, 32, 243, 140, 5, 0, 107, 39, 50, 55, 108, 48, 10, 6,
+			15, 47, 110, 52, 55, 113, 91, 113, 47, 0, 11, 81, 116, 195, 182, 114, 108, 195, 169, 115, 195, 169, 116, 32, 15, 204, 88, 148, 211, 104,
+			23, 12, 50, 85, 28, 77, 196, 129, 11, 8, 197, 172, 118, 66, 20, 224, 11, 20, 145, 101, 108, 197, 145, 195, 161, 108, 108, 195, 173, 116,
+			195, 161, 115, 195, 161, 116, 11, 0, 12, 201, 44, 244, 140, 113, 67, 218, 113, 48, 64, 11, 9, 198, 65, 84, 218, 82, 85, 0, 11, 12,
+			201, 46, 134, 140, 20, 177, 68, 80, 85, 9, 11, 8, 197, 54, 36, 142, 20, 176, 11, 8, 197, 32, 83, 25, 20, 64, 11, 17, 142, 195,
+			169, 108, 109, 195, 169, 110, 121, 195, 169, 116, 197, 145, 108, 11, 11, 200, 77, 161, 75, 80, 244, 146, 4, 192, 11, 8, 197, 89, 196, 142,
+			4, 176, 11, 8, 197, 46, 36, 142, 20, 176, 11, 8, 197, 10, 162, 142, 4, 176, 11, 17, 142, 114, 195, 169, 115, 122, 108, 101, 116, 101,
+			105, 114, 197, 145, 108, 11, 8, 197, 41, 196, 142, 4, 176, 11, 11, 200, 48, 82, 5, 81, 56, 135, 21, 48, 11, 0, 6, 195, 21, 161,
+			75, 11, 9, 198, 113, 37, 76, 56, 18, 192, 11, 9, 198, 77, 169, 204, 80, 18, 192, 11, 11, 200, 77, 163, 198, 81, 97, 82, 20, 144,
+			11, 6, 195, 137, 37, 0, 11, 0, 10, 199, 77, 161, 82, 20, 197, 5, 44, 11, 9, 198, 32, 21, 143, 57, 64, 64, 11, 7, 196, 113,
+			32, 129, 56, 11, 31, 71, 56, 147, 131, 76, 83, 133, 44, 50, 37, 50, 76, 109, 50, 109, 49, 23, 52, 115, 55, 108, 0, 11, 81, 114,
+			195, 179, 108, 97, 32, 11, 200, 65, 35, 199, 72, 19, 66, 4, 224, 11, 9, 198, 32, 22, 149, 17, 64, 64, 11, 9, 198, 52, 20, 129,
+			17, 96, 64, 11, 7, 196, 34, 37, 5, 56, 11, 9, 198, 16, 20, 129, 9, 32, 64, 11, 6, 195, 88, 19, 12, 11, 0, 47, 71, 65,
+			35, 199, 72, 19, 79, 80, 48, 52, 39, 81, 52, 108, 65, 39, 47, 23, 37, 50, 72, 112, 47, 108, 50, 114, 50, 108, 49, 0, 11, 81,
+			105, 110, 100, 195, 173, 116, 97, 110, 195, 161, 110, 97, 107, 32, 43, 71, 65, 35, 199, 72, 19, 79, 80, 48, 52, 39, 81, 52, 108, 65,
+			39, 47, 15, 47, 109, 89, 47, 109, 55, 111, 50, 49, 0, 11, 81, 116, 101, 115, 122, 116, 101, 108, 195, 188, 110, 107, 32, 0, 11, 200,
+			24, 243, 25, 4, 208, 84, 61, 64, 11, 12, 201, 32, 19, 135, 78, 163, 25, 61, 165, 1, 11, 12, 201, 88, 243, 129, 80, 179, 218, 56,
+			18, 192, 11, 0, 22, 147, 116, 101, 118, 195, 169, 107, 101, 110, 121, 115, 195, 169, 103, 195, 169, 114, 197, 145, 108, 11, 15, 140, 195, 169,
+			108, 99, 101, 108, 197, 145, 100, 116, 101, 107, 11, 0, 11, 200, 4, 181, 9, 89, 195, 20, 4, 208, 11, 7, 196, 48, 20, 15, 44, 11,
+			7, 196, 21, 54, 137, 44, 11, 10, 199, 24, 244, 132, 84, 197, 1, 44, 11, 6, 195, 73, 195, 139, 11, 0, 7, 196, 113, 67, 1, 28,
+			11, 42, 70, 44, 244, 156, 8, 34, 64, 49, 39, 52, 114, 71, 12, 37, 23, 109, 55, 49, 113, 48, 88, 109, 55, 113, 91, 0, 11, 81,
+			101, 108, 107, 195, 169, 112, 122, 101, 108, 195, 169, 115, 32, 43, 72, 168, 169, 84, 113, 51, 203, 5, 64, 116, 57, 112, 47, 114, 91, 39,
+			49, 108, 47, 15, 71, 109, 84, 109, 88, 109, 47, 50, 37, 0, 11, 81, 98, 101, 118, 101, 122, 101, 116, 110, 105, 32, 7, 196, 36, 198,
+			69, 80, 11, 6, 195, 4, 32, 129, 11, 0, 9, 198, 8, 245, 18, 112, 230, 65, 11, 6, 195, 90, 35, 9, 11, 6, 195, 90, 35, 9,
+			11, 6, 195, 82, 35, 9, 15, 6, 195, 42, 163, 128, 15, 0, 12, 201, 32, 246, 154, 112, 177, 90, 16, 82, 192, 11, 10, 199, 82, 179,
+			148, 21, 72, 147, 80, 11, 0, 8, 197, 46, 36, 142, 36, 80, 11, 10, 199, 32, 85, 9, 48, 20, 15, 44, 11, 0, 9, 198, 77, 161,
+			77, 8, 83, 128, 11, 9, 198, 16, 243, 7, 61, 163, 137, 11, 9, 198, 77, 161, 77, 8, 83, 128, 11, 0, 22, 67, 40, 240, 130, 57,
+			39, 71, 12, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 38, 67, 40, 240, 130, 57, 39, 71, 12, 10, 6, 15, 47, 114,
+			65, 39, 81, 108, 47, 114, 91, 108, 0, 11, 81, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 97, 32, 9, 198, 80, 84, 141, 20,
+			149, 0, 11, 9, 198, 58, 38, 133, 28, 85, 0, 11, 6, 195, 40, 240, 130, 11, 11, 5, 95, 35, 45, 97, 105, 108, 37, 0, 16, 0,
+			20, 69, 84, 37, 78, 81, 80, 117, 98, 117, 110, 116, 117, 110, 0, 44, 29, 81, 110, 32, 7, 196, 77, 169, 194, 4, 11, 8, 197, 46,
+			35, 77, 20, 192, 11, 7, 196, 89, 196, 138, 4, 11, 10, 199, 44, 149, 40, 49, 65, 78, 36, 11, 10, 199, 77, 160, 75, 149, 64, 78,
+			36, 11, 9, 198, 36, 112, 90, 77, 193, 192, 11, 7, 196, 46, 133, 14, 36, 11, 7, 196, 137, 10, 204, 80, 11, 7, 196, 46, 134, 130,
+			20, 11, 14, 4, 95, 48, 67, 111, 89, 114, 88, 108, 72, 37, 49, 0, 0, 10, 199, 77, 167, 13, 149, 64, 78, 36, 11, 9, 198, 80,
+			82, 5, 80, 170, 203, 11, 8, 197, 85, 64, 220, 8, 16, 11, 6, 195, 72, 82, 148, 11, 0, 11, 200, 24, 243, 25, 4, 208, 84, 61,
+			48, 11, 27, 70, 46, 133, 133, 80, 85, 20, 49, 110, 84, 109, 47, 109, 47, 12, 10, 6, 15, 109, 55, 0, 11, 81, 101, 108, 32, 8,
+			197, 77, 168, 144, 20, 224, 11, 9, 198, 46, 133, 133, 80, 85, 20, 11, 8, 197, 54, 36, 148, 20, 224, 11, 12, 201, 136, 193, 84, 80,
+			20, 148, 4, 208, 64, 11, 9, 198, 16, 84, 165, 80, 85, 20, 11, 0, 11, 200, 36, 225, 37, 81, 196, 203, 61, 32, 11, 25, 69, 57,
+			153, 76, 36, 176, 67, 112, 55, 37, 49, 15, 108, 52, 52, 108, 0, 11, 81, 97, 114, 114, 97, 32, 11, 200, 65, 35, 199, 72, 19, 77,
+			4, 192, 11, 8, 197, 82, 132, 148, 20, 176, 11, 7, 132, 197, 145, 115, 122, 15, 0, 13, 202, 81, 83, 1, 40, 67, 206, 149, 64, 78,
+			36, 11, 22, 67, 44, 148, 192, 49, 37, 91, 23, 47, 109, 55, 115, 0, 11, 81, 116, 101, 108, 195, 179, 32, 30, 67, 44, 148, 192, 49,
+			37, 91, 15, 47, 111, 52, 109, 55, 65, 109, 47, 0, 11, 81, 116, 195, 188, 114, 101, 108, 109, 101, 116, 32, 24, 67, 44, 148, 192, 49,
+			37, 91, 15, 109, 52, 109, 57, 117, 0, 11, 81, 101, 114, 101, 106, 197, 177, 32, 8, 197, 77, 167, 13, 61, 64, 11, 7, 196, 104, 21,
+			129, 72, 11, 0, 12, 201, 72, 17, 193, 77, 162, 207, 16, 226, 64, 11, 32, 70, 24, 244, 137, 57, 67, 212, 83, 39, 52, 37, 50, 47,
+			39, 47, 23, 113, 52, 50, 109, 49, 0, 11, 81, 195, 169, 114, 110, 101, 107, 32, 8, 197, 44, 86, 162, 8, 80, 11, 11, 200, 36, 112,
+			90, 28, 21, 39, 40, 16, 11, 11, 200, 9, 81, 1, 64, 84, 212, 20, 224, 11, 9, 198, 24, 244, 137, 57, 67, 212, 11, 10, 199, 28,
+			243, 132, 60, 197, 78, 44, 11, 0, 12, 201, 52, 83, 133, 81, 33, 78, 16, 85, 0, 11, 27, 71, 80, 84, 171, 48, 85, 5, 44, 47,
+			109, 52, 111, 55, 109, 47, 109, 49, 23, 37, 91, 0, 11, 81, 105, 115, 32, 9, 198, 28, 243, 132, 60, 195, 205, 11, 10, 199, 37, 50,
+			207, 49, 196, 207, 44, 11, 9, 198, 37, 35, 196, 112, 32, 64, 11, 9, 198, 48, 18, 220, 76, 32, 64, 11, 11, 200, 44, 146, 133, 48,
+			83, 148, 36, 176, 11, 9, 198, 88, 147, 28, 28, 32, 64, 11, 7, 196, 137, 33, 5, 44, 11, 0, 12, 201, 32, 19, 135, 78, 163, 25,
+			61, 165, 129, 11, 12, 201, 82, 132, 148, 136, 226, 5, 80, 85, 20, 11, 0, 9, 1, 126, 47, 37, 55, 72, 109, 0, 10, 199, 50, 36,
+			34, 76, 82, 197, 80, 11, 9, 198, 64, 19, 5, 81, 71, 14, 11, 17, 4, 95, 54, 48, 111, 107, 108, 47, 84, 108, 50, 108, 72, 37,
+			49, 0, 0, 49, 12, 115, 122, 101, 114, 122, 197, 145, 100, 195, 169, 115, 116, 89, 109, 52, 88, 118, 72, 113, 91, 47, 23, 49, 109, 55,
+			12, 23, 49, 110, 47, 50, 37, 0, 11, 82, 107, 101, 108, 108, 32, 107, 195, 182, 116, 110, 105, 32, 15, 140, 115, 122, 101, 114, 122, 197,
+			145, 100, 195, 169, 115, 116, 11, 9, 198, 88, 19, 39, 77, 83, 0, 11, 12, 4, 95, 116, 108, 100, 47, 37, 55, 72, 109, 0, 0, 7,
+			196, 80, 242, 156, 76, 11, 12, 137, 108, 195, 169, 118, 197, 145, 107, 101, 116, 11, 48, 74, 80, 83, 5, 66, 179, 34, 76, 82, 197, 56,
+			47, 109, 55, 109, 48, 111, 55, 113, 91, 109, 49, 109, 50, 10, 6, 15, 72, 39, 55, 81, 39, 88, 37, 49, 0, 11, 81, 100, 111, 108,
+			103, 111, 122, 105, 107, 32, 9, 198, 77, 161, 77, 136, 198, 84, 11, 0, 9, 198, 52, 17, 220, 32, 246, 128, 11, 33, 70, 77, 161, 82,
+			36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 108, 88, 39, 49, 50, 108, 49, 0, 11, 81, 97, 122, 111, 107, 110, 97, 107, 32, 27, 70,
+			77, 161, 82, 36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 44, 70, 77, 161, 82,
+			36, 229, 0, 89, 109, 52, 37, 50, 47, 23, 65, 115, 72, 39, 91, 112, 47, 107, 108, 47, 115, 0, 11, 81, 109, 195, 179, 100, 111, 115,
+			195, 173, 116, 104, 97, 116, 195, 179, 32, 6, 195, 18, 35, 9, 11, 17, 142, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 107, 101,
+			116, 11, 9, 198, 77, 161, 82, 36, 229, 0, 11, 0, 14, 203, 8, 84, 133, 56, 65, 90, 44, 81, 34, 77, 64, 11, 11, 200, 32, 20,
+			218, 57, 195, 10, 112, 176, 11, 9, 198, 73, 81, 193, 48, 208, 83, 11, 10, 135, 106, 195, 182, 118, 197, 145, 116, 11, 8, 197, 25, 39,
+			19, 105, 64, 11, 0, 4, 193, 124, 43, 7, 196, 20, 197, 133, 44, 11, 13, 202, 4, 67, 212, 81, 55, 7, 4, 146, 15, 104, 11, 48,
+			73, 52, 81, 206, 161, 97, 75, 77, 162, 75, 65, 109, 81, 50, 110, 84, 109, 49, 89, 37, 49, 23, 108, 23, 83, 109, 55, 107, 118, 88,
+			109, 47, 0, 11, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 15, 140, 109, 197, 177, 118, 101, 108, 101, 116, 101, 107, 101,
+			116, 11, 9, 198, 4, 64, 84, 60, 176, 84, 11, 0, 41, 72, 77, 167, 26, 4, 200, 139, 113, 64, 89, 114, 88, 108, 55, 113, 49, 114,
+			47, 23, 47, 109, 89, 37, 49, 23, 49, 37, 0, 11, 82, 116, 101, 115, 122, 105, 107, 32, 107, 105, 32, 11, 200, 77, 167, 26, 4, 200,
+			139, 113, 64, 11, 9, 198, 32, 20, 131, 60, 195, 137, 11, 11, 200, 77, 167, 26, 4, 200, 139, 113, 64, 11, 10, 199, 112, 195, 37, 81,
+			196, 220, 80, 11, 6, 195, 57, 147, 205, 11, 0, 26, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 109, 50, 12, 109, 49, 0, 11,
+			81, 101, 110, 110, 101, 107, 32, 21, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 52, 114, 0, 11, 81, 114, 195, 161, 32, 33, 68,
+			48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 89, 109, 52, 37, 50, 47, 109, 65, 0, 11, 81, 115, 122, 101, 114, 105, 110, 116, 101, 109,
+			32, 13, 202, 36, 229, 5, 72, 104, 147, 104, 82, 197, 80, 11, 36, 68, 24, 18, 148, 4, 83, 108, 57, 47, 108, 23, 57, 108, 84, 112,
+			47, 114, 91, 39, 49, 0, 11, 81, 106, 97, 118, 195, 173, 116, 195, 161, 115, 111, 107, 32, 22, 68, 48, 83, 142, 20, 55, 109, 50, 12,
+			109, 23, 89, 115, 0, 11, 81, 115, 122, 195, 179, 32, 35, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 23, 89, 111, 49, 91, 113, 81,
+			109, 65, 0, 11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 109, 32, 22, 67, 58, 34, 1, 50, 113, 107, 108, 15, 84, 109, 55,
+			109, 0, 11, 81, 118, 101, 108, 101, 32, 31, 68, 48, 83, 142, 20, 55, 109, 50, 12, 109, 15, 89, 111, 49, 91, 113, 81, 0, 11, 81,
+			115, 122, 195, 188, 107, 115, 195, 169, 103, 32, 7, 196, 80, 84, 150, 20, 11, 7, 196, 48, 83, 142, 20, 11, 0, 8, 197, 89, 195, 12,
+			4, 192, 11, 9, 198, 58, 133, 133, 50, 36, 197, 11, 13, 201, 80, 84, 141, 137, 54, 133, 80, 84, 192, 72, 65, 0, 13, 202, 72, 21,
+			9, 24, 146, 220, 49, 196, 220, 80, 11, 28, 67, 5, 4, 167, 108, 48, 52, 115, 10, 6, 15, 72, 39, 55, 81, 39, 49, 0, 11, 81,
+			100, 111, 108, 103, 111, 107, 32, 39, 68, 30, 36, 5, 56, 81, 113, 48, 109, 50, 23, 89, 111, 49, 91, 113, 81, 109, 91, 109, 49, 0,
+			11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 101, 107, 32, 22, 68, 30, 36, 5, 56, 81, 113, 48, 109, 50, 15, 83, 40,
+			47, 0, 11, 81, 102, 117, 116, 32, 7, 196, 30, 36, 5, 56, 11, 9, 198, 21, 49, 68, 136, 177, 83, 11, 7, 196, 24, 19, 28, 56,
+			11, 0, 7, 196, 14, 83, 69, 44, 11, 9, 198, 13, 58, 11, 44, 83, 148, 11, 10, 199, 52, 243, 132, 4, 231, 14, 44, 11, 14, 203,
+			77, 163, 204, 29, 195, 20, 5, 71, 19, 113, 64, 11, 0, 40, 70, 4, 192, 80, 41, 195, 128, 108, 55, 108, 48, 57, 114, 50, 23, 112,
+			47, 113, 55, 49, 109, 88, 109, 55, 0, 11, 81, 195, 173, 116, 195, 169, 108, 107, 101, 122, 101, 108, 32, 47, 10, 105, 100, 197, 145, 110,
+			107, 195, 169, 110, 116, 37, 72, 118, 50, 49, 113, 50, 47, 23, 108, 6, 15, 83, 109, 55, 107, 118, 88, 109, 47, 0, 11, 82, 97, 32,
+			102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 8, 197, 46, 36, 140, 20, 176, 11, 15, 204, 160, 226, 207, 72, 215, 14, 101, 160, 84, 60,
+			176, 84, 11, 7, 196, 36, 65, 74, 20, 11, 7, 196, 80, 244, 148, 4, 11, 9, 198, 4, 192, 80, 41, 195, 128, 11, 7, 196, 13, 49,
+			82, 20, 11, 8, 197, 66, 35, 148, 20, 176, 15, 0, 39, 70, 46, 131, 153, 88, 82, 192, 49, 110, 67, 84, 109, 49, 23, 55, 114, 47,
+			107, 108, 47, 39, 108, 49, 0, 11, 81, 108, 195, 161, 116, 104, 97, 116, 195, 179, 97, 107, 32, 9, 198, 82, 131, 69, 28, 82, 192, 11,
+			9, 198, 29, 154, 20, 161, 37, 5, 11, 15, 204, 52, 81, 214, 112, 197, 15, 105, 64, 84, 113, 55, 20, 11, 9, 198, 46, 36, 5, 76,
+			82, 192, 11, 9, 198, 46, 131, 153, 88, 82, 192, 11, 6, 195, 54, 129, 226, 11, 0, 12, 201, 64, 243, 9, 80, 146, 213, 76, 18, 64,
+			11, 8, 197, 49, 197, 20, 4, 208, 11, 11, 200, 29, 145, 82, 20, 177, 75, 20, 224, 11, 10, 199, 80, 145, 210, 37, 51, 133, 44, 11,
+			8, 197, 90, 33, 218, 20, 208, 11, 33, 72, 48, 82, 5, 80, 85, 12, 20, 224, 55, 109, 107, 109, 47, 109, 47, 55, 109, 50, 23, 84,
+			39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 9, 198, 4, 35, 1, 45, 32, 64, 11, 0, 11, 200, 80, 243, 1, 44, 241, 20, 4,
+			176, 11, 6, 195, 32, 144, 129, 11, 7, 196, 14, 33, 197, 44, 11, 6, 195, 77, 167, 4, 11, 0, 16, 205, 64, 243, 7, 113, 35, 69,
+			77, 65, 82, 20, 178, 197, 48, 11, 14, 203, 25, 194, 132, 4, 195, 205, 52, 83, 148, 21, 48, 11, 12, 201, 72, 83, 132, 77, 161, 82,
+			56, 82, 192, 11, 10, 135, 116, 197, 177, 110, 116, 101, 107, 11, 11, 200, 90, 33, 5, 44, 86, 148, 20, 176, 11, 10, 199, 18, 131, 148,
+			161, 69, 5, 44, 11, 0, 13, 202, 44, 86, 132, 20, 216, 142, 100, 86, 148, 20, 11, 7, 196, 20, 130, 5, 104, 11, 10, 199, 80, 20,
+			148, 4, 195, 65, 104, 11, 7, 196, 26, 36, 134, 36, 11, 6, 195, 5, 81, 192, 15, 0, 18, 207, 29, 153, 199, 101, 54, 133, 73, 71,
+			13, 60, 112, 84, 113, 55, 20, 11, 12, 137, 101, 108, 116, 197, 177, 110, 116, 101, 107, 11, 10, 199, 65, 41, 194, 112, 197, 1, 52, 11,
+			0, 9, 198, 64, 244, 148, 60, 195, 137, 11, 41, 73, 20, 118, 69, 78, 179, 5, 81, 65, 76, 109, 79, 12, 109, 91, 111, 55, 109, 47,
+			12, 109, 55, 23, 89, 109, 65, 71, 109, 50, 0, 11, 81, 115, 122, 101, 109, 98, 101, 110, 32, 9, 198, 61, 36, 218, 112, 115, 212, 11,
+			0, 20, 66, 8, 80, 71, 109, 23, 116, 57, 52, 108, 0, 11, 81, 195, 186, 106, 114, 97, 32, 25, 66, 8, 80, 71, 109, 10, 6, 15,
+			108, 89, 47, 23, 37, 91, 0, 11, 82, 97, 122, 116, 32, 105, 115, 32, 12, 201, 44, 148, 18, 156, 39, 12, 80, 19, 64, 11, 12, 201,
+			80, 83, 5, 66, 85, 5, 81, 65, 77, 11, 10, 199, 46, 131, 20, 161, 165, 5, 44, 11, 5, 194, 8, 80, 11, 5, 194, 8, 80, 11,
+			0, 52, 73, 137, 10, 204, 21, 65, 75, 32, 86, 128, 113, 48, 111, 55, 109, 47, 109, 49, 107, 109, 88, 23, 107, 108, 89, 39, 50, 55,
+			112, 47, 39, 47, 12, 108, 0, 11, 81, 104, 97, 115, 111, 110, 108, 195, 173, 116, 111, 116, 116, 97, 32, 15, 204, 52, 81, 198, 36, 118,
+			69, 50, 36, 226, 32, 86, 128, 11, 10, 199, 8, 244, 165, 82, 34, 207, 80, 11, 0, 11, 136, 101, 108, 197, 145, 116, 116, 101, 100, 11,
+			19, 144, 98, 105, 108, 108, 101, 110, 116, 121, 197, 177, 122, 101, 116, 116, 101, 108, 11, 8, 197, 72, 144, 211, 4, 160, 11, 9, 198, 32,
+			83, 25, 37, 56, 135, 11, 0, 36, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50, 108, 48, 23, 72, 113, 55, 109, 55, 118, 47, 12, 0,
+			11, 81, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 32, 34, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50, 108, 48, 23, 72, 113, 55,
+			40, 47, 114, 50, 0, 11, 81, 100, 195, 169, 108, 117, 116, 195, 161, 110, 32, 24, 67, 77, 161, 77, 89, 109, 65, 23, 109, 55, 118, 47,
+			12, 0, 11, 81, 101, 108, 197, 145, 116, 116, 32, 8, 197, 32, 243, 14, 5, 0, 11, 34, 69, 32, 243, 14, 5, 0, 107, 39, 55, 50,
+			108, 48, 15, 72, 113, 55, 40, 47, 114, 50, 0, 11, 81, 100, 195, 169, 108, 117, 116, 195, 161, 110, 32, 36, 69, 32, 243, 14, 5, 0,
+			107, 39, 55, 50, 108, 48, 15, 72, 113, 55, 109, 55, 118, 47, 12, 0, 11, 81, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 32, 13,
+			202, 77, 167, 13, 149, 73, 199, 137, 4, 5, 48, 11, 6, 195, 14, 35, 0, 11, 0, 9, 198, 46, 36, 162, 78, 37, 0, 11, 11, 5,
+			95, 35, 45, 101, 105, 109, 37, 0, 16, 0, 14, 196, 46, 38, 130, 20, 11, 81, 118, 101, 110, 110, 105, 32, 6, 195, 80, 19, 139, 11,
+			13, 67, 36, 98, 128, 37, 83, 57, 108, 71, 12, 0, 25, 0, 8, 197, 88, 149, 28, 8, 16, 11, 7, 196, 72, 243, 131, 76, 11, 6,
+			195, 64, 243, 148, 11, 0, 8, 197, 46, 134, 130, 20, 224, 11, 26, 69, 46, 134, 130, 20, 224, 49, 110, 88, 71, 109, 50, 10, 6, 15,
+			91, 109, 65, 0, 11, 81, 115, 101, 109, 32, 9, 198, 52, 81, 212, 84, 66, 129, 11, 12, 201, 8, 81, 133, 40, 86, 162, 78, 34, 71,
+			11, 9, 198, 24, 241, 204, 4, 194, 129, 11, 12, 201, 89, 195, 20, 61, 160, 84, 4, 149, 0, 11, 12, 201, 77, 167, 13, 149, 66, 1,
+			81, 83, 139, 11, 7, 196, 57, 145, 82, 80, 11, 0, 7, 66, 13, 48, 76, 113, 0, 8, 197, 74, 33, 201, 20, 176, 11, 8, 197, 89,
+			195, 14, 4, 176, 11, 0, 9, 198, 18, 131, 148, 137, 49, 73, 11, 11, 200, 80, 83, 5, 24, 243, 156, 49, 64, 11, 9, 198, 89, 193,
+			217, 56, 18, 192, 11, 0, 9, 198, 137, 33, 5, 44, 83, 0, 11, 8, 197, 136, 193, 84, 8, 80, 11, 11, 200, 77, 162, 210, 37, 5,
+			2, 20, 224, 11, 16, 4, 95, 50, 77, 52, 49, 113, 47, 71, 37, 55, 55, 37, 115, 0, 0, 10, 199, 77, 170, 204, 21, 69, 5, 44,
+			11, 36, 72, 77, 163, 198, 81, 97, 82, 20, 176, 89, 39, 83, 47, 84, 109, 52, 109, 49, 15, 108, 52, 114, 67, 108, 0, 11, 81, 97,
+			114, 195, 161, 110, 121, 97, 32, 12, 201, 52, 81, 193, 48, 179, 212, 156, 160, 64, 11, 12, 201, 81, 196, 147, 4, 64, 76, 52, 21, 0,
+			11, 11, 200, 81, 83, 1, 40, 242, 206, 4, 176, 11, 12, 201, 52, 83, 142, 100, 148, 226, 30, 37, 0, 11, 10, 199, 77, 161, 82, 21,
+			67, 162, 44, 11, 0, 12, 201, 24, 144, 84, 4, 195, 203, 56, 18, 192, 11, 11, 200, 8, 83, 153, 60, 215, 19, 60, 176, 11, 8, 197,
+			33, 192, 143, 74, 160, 11, 12, 201, 16, 243, 7, 61, 166, 129, 56, 18, 192, 11, 0, 11, 200, 44, 147, 162, 104, 85, 20, 20, 192, 11,
+			11, 200, 137, 37, 5, 78, 179, 20, 20, 176, 11, 7, 196, 89, 196, 142, 36, 11, 7, 196, 46, 36, 142, 36, 11, 5, 194, 136, 192, 11,
+			0, 34, 71, 32, 18, 148, 61, 69, 1, 44, 107, 108, 57, 47, 39, 47, 12, 108, 49, 23, 84, 113, 81, 52, 109, 0, 11, 81, 118, 195,
+			169, 103, 114, 101, 32, 39, 71, 24, 241, 204, 4, 197, 1, 44, 83, 39, 81, 55, 108, 55, 47, 108, 49, 10, 6, 15, 114, 55, 12, 114,
+			91, 47, 0, 11, 81, 195, 161, 108, 108, 195, 161, 115, 116, 32, 7, 196, 54, 37, 5, 72, 11, 10, 199, 88, 19, 1, 44, 147, 133, 44,
+			11, 10, 199, 16, 243, 7, 61, 165, 1, 44, 11, 10, 199, 20, 192, 86, 84, 197, 1, 44, 11, 8, 197, 77, 167, 14, 56, 144, 11, 0,
+			14, 4, 95, 50, 77, 49, 49, 113, 47, 109, 88, 109, 52, 0, 0, 18, 66, 16, 32, 100, 97, 114, 97, 98, 111, 116, 0, 44, 29, 81,
+			111, 116, 32, 18, 66, 16, 32, 100, 97, 114, 97, 98, 111, 115, 0, 44, 29, 81, 111, 115, 32, 17, 66, 12, 64, 99, 195, 169, 100, 195,
+			169, 109, 0, 44, 29, 81, 109, 32, 18, 66, 12, 64, 99, 195, 169, 100, 195, 169, 109, 0, 44, 29, 42, 81, 109, 32, 18, 66, 12, 64,
+			99, 195, 169, 100, 195, 169, 100, 0, 44, 29, 42, 81, 100, 32, 17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 100, 0, 44, 29, 81, 100,
+			32, 17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 110, 0, 44, 29, 81, 110, 32, 18, 66, 12, 64, 99, 195, 169, 100, 195, 169, 110, 0,
+			44, 29, 42, 81, 110, 32, 17, 66, 12, 64, 99, 195, 169, 100, 195, 169, 107, 0, 44, 29, 81, 107, 32, 18, 66, 12, 64, 99, 195, 169,
+			100, 195, 169, 107, 0, 44, 29, 42, 81, 107, 32, 27, 5, 101, 108, 115, 197, 145, 109, 55, 91, 118, 10, 6, 15, 113, 84, 109, 50, 0,
+			11, 81, 195, 169, 118, 101, 110, 32, 38, 5, 101, 108, 115, 197, 145, 109, 55, 91, 118, 23, 91, 39, 52, 71, 108, 50, 114, 55, 12, 115,
+			0, 11, 81, 115, 111, 114, 98, 97, 110, 195, 161, 108, 108, 195, 179, 32, 10, 199, 52, 81, 207, 48, 64, 78, 36, 11, 8, 133, 101, 108,
+			115, 197, 145, 11, 6, 195, 137, 9, 84, 11, 6, 195, 149, 35, 137, 11, 37, 66, 12, 64, 119, 113, 72, 113, 109, 55, 12, 109, 50, 118,
+			52, 88, 113, 91, 47, 0, 44, 42, 81, 101, 108, 108, 101, 110, 197, 145, 114, 122, 195, 169, 115, 116, 32, 16, 4, 95, 50, 77, 50, 49,
+			113, 47, 65, 37, 55, 55, 37, 115, 0, 0, 37, 67, 13, 80, 195, 119, 40, 119, 12, 23, 49, 111, 55, 83, 110, 55, 72, 52, 118, 55,
+			0, 11, 81, 107, 195, 188, 108, 102, 195, 182, 108, 100, 114, 197, 145, 108, 32, 6, 195, 13, 80, 195, 11, 37, 69, 53, 83, 139, 113, 64,
+			65, 40, 50, 49, 114, 47, 10, 6, 15, 84, 113, 81, 109, 89, 47, 109, 49, 0, 11, 81, 118, 195, 169, 103, 101, 122, 116, 101, 107, 32,
+			7, 196, 76, 244, 143, 56, 11, 7, 196, 4, 66, 143, 56, 11, 24, 69, 53, 83, 139, 113, 64, 65, 40, 50, 49, 114, 47, 23, 37, 47,
+			12, 0, 11, 81, 105, 116, 116, 32, 46, 6, 102, 101, 108, 104, 197, 145, 83, 109, 55, 107, 118, 23, 55, 109, 89, 23, 83, 109, 55, 109,
+			47, 12, 111, 50, 49, 0, 11, 82, 108, 101, 115, 122, 32, 102, 101, 108, 101, 116, 116, 195, 188, 110, 107, 32, 38, 6, 102, 101, 108, 104,
+			197, 145, 83, 109, 55, 107, 118, 23, 84, 108, 55, 115, 89, 112, 50, 117, 0, 11, 81, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197,
+			177, 32, 10, 199, 89, 195, 15, 28, 21, 14, 36, 11, 8, 197, 53, 83, 139, 113, 64, 11, 9, 198, 112, 195, 20, 84, 226, 192, 11, 8,
+			197, 57, 147, 205, 113, 64, 11, 18, 4, 95, 50, 77, 51, 49, 113, 47, 65, 37, 55, 55, 37, 114, 52, 72, 0, 0, 18, 207, 72, 83,
+			132, 77, 161, 82, 80, 83, 5, 66, 85, 34, 76, 179, 210, 11, 6, 195, 21, 33, 68, 11, 6, 195, 32, 145, 4, 11, 6, 195, 44, 81,
+			4, 15, 0, 4, 193, 128, 43, 24, 68, 32, 144, 156, 76, 107, 37, 71, 114, 91, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116,
+			32, 11, 136, 109, 101, 103, 108, 101, 112, 197, 145, 11, 0, 7, 196, 4, 67, 137, 4, 11, 9, 198, 137, 9, 84, 20, 226, 64, 11, 9,
+			198, 60, 181, 39, 8, 84, 128, 15, 0, 10, 199, 46, 179, 4, 161, 69, 5, 80, 11, 8, 197, 18, 131, 148, 137, 48, 11, 6, 195, 90,
+			36, 218, 11, 6, 195, 46, 132, 218, 11, 0, 11, 200, 80, 18, 193, 74, 85, 1, 56, 144, 11, 32, 69, 21, 84, 167, 64, 16, 109, 40,
+			52, 115, 48, 108, 15, 10, 67, 40, 81, 108, 47, 37, 0, 11, 81, 110, 121, 117, 103, 97, 116, 105, 32, 9, 198, 37, 51, 69, 73, 97,
+			64, 11, 9, 198, 80, 83, 5, 57, 65, 64, 11, 0, 54, 71, 81, 83, 1, 40, 67, 206, 80, 47, 40, 55, 108, 57, 72, 39, 50, 47,
+			23, 84, 113, 72, 118, 23, 47, 110, 52, 84, 113, 67, 109, 49, 0, 11, 82, 118, 195, 169, 100, 197, 145, 32, 116, 195, 182, 114, 118, 195,
+			169, 110, 121, 101, 107, 32, 12, 201, 80, 83, 10, 21, 57, 84, 20, 226, 64, 11, 12, 201, 80, 83, 10, 21, 57, 84, 20, 226, 64, 11,
+			15, 140, 107, 105, 116, 195, 182, 108, 116, 104, 101, 116, 197, 145, 11, 11, 200, 90, 35, 5, 54, 35, 153, 137, 64, 11, 23, 67, 97, 98,
+			73, 47, 37, 88, 109, 50, 107, 113, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 12, 201, 90, 33, 210, 20, 128, 74, 80, 19,
+			137, 11, 27, 71, 25, 34, 83, 78, 85, 34, 76, 83, 52, 37, 91, 12, 112, 47, 113, 91, 23, 37, 91, 0, 11, 81, 105, 115, 32, 16,
+			141, 101, 109, 108, 195, 169, 107, 101, 122, 116, 101, 116, 197, 145, 11, 6, 195, 173, 161, 77, 11, 12, 66, 17, 32, 72, 39, 49, 47, 39,
+			52, 0, 25, 0, 32, 70, 49, 197, 19, 104, 146, 192, 55, 114, 119, 12, 37, 49, 10, 6, 15, 47, 109, 107, 114, 47, 0, 11, 81, 116,
+			101, 104, 195, 161, 116, 32, 9, 198, 80, 19, 149, 49, 69, 75, 11, 9, 198, 41, 197, 19, 104, 146, 192, 11, 12, 201, 26, 177, 199, 21,
+			67, 5, 58, 179, 0, 11, 8, 197, 44, 86, 132, 88, 80, 11, 9, 198, 49, 197, 19, 104, 146, 192, 11, 6, 195, 26, 131, 34, 11, 0,
+			16, 141, 101, 108, 197, 145, 114, 101, 106, 101, 108, 122, 195, 169, 115, 11, 7, 196, 80, 83, 34, 56, 15, 0, 40, 14, 108, 101, 104, 101,
+			116, 197, 145, 115, 195, 169, 103, 195, 188, 107, 55, 109, 107, 109, 47, 118, 91, 113, 81, 111, 49, 23, 108, 52, 52, 108, 0, 11, 81, 97,
+			114, 114, 97, 32, 10, 199, 81, 81, 15, 53, 196, 213, 44, 11, 0, 9, 198, 149, 41, 196, 61, 69, 0, 11, 0, 7, 196, 58, 38, 142,
+			36, 11, 0, 0, 12, 201, 54, 113, 15, 78, 85, 28, 77, 197, 0, 11, 8, 197, 20, 200, 135, 30, 32, 11, 0, 9, 198, 161, 42, 11,
+			160, 197, 0, 11, 8, 197, 89, 195, 21, 56, 176, 11, 8, 197, 4, 66, 1, 82, 112, 11, 9, 198, 52, 243, 132, 61, 69, 0, 11, 0,
+			15, 205, 4, 176, 68, 112, 198, 77, 20, 229, 5, 78, 85, 34, 76, 6, 195, 77, 169, 210, 72, 0, 7, 195, 88, 243, 20, 11, 17, 28,
+			67, 88, 243, 20, 84, 39, 55, 47, 10, 6, 15, 107, 108, 55, 39, 47, 12, 0, 11, 81, 104, 97, 108, 111, 116, 116, 32, 25, 67, 88,
+			243, 20, 84, 39, 55, 47, 10, 6, 15, 39, 57, 108, 50, 0, 11, 81, 111, 108, 121, 97, 110, 32, 36, 67, 88, 243, 20, 84, 39, 55,
+			47, 10, 6, 15, 109, 55, 83, 39, 81, 55, 108, 55, 84, 108, 0, 11, 81, 101, 108, 102, 111, 103, 108, 97, 108, 118, 97, 32, 15, 204,
+			36, 225, 146, 5, 53, 18, 84, 181, 42, 73, 197, 0, 11, 22, 67, 88, 243, 20, 84, 39, 55, 47, 15, 109, 52, 52, 109, 0, 11, 81,
+			101, 114, 114, 101, 32, 9, 198, 40, 83, 5, 57, 56, 135, 11, 10, 199, 57, 154, 138, 82, 118, 142, 36, 11, 11, 4, 95, 111, 114, 100,
+			109, 72, 37, 49, 0, 0, 7, 196, 60, 179, 218, 156, 11, 12, 201, 24, 241, 193, 48, 208, 90, 61, 69, 0, 11, 0, 8, 197, 72, 18,
+			207, 81, 64, 11, 44, 72, 77, 167, 13, 60, 195, 149, 56, 176, 89, 114, 65, 39, 55, 50, 40, 50, 49, 23, 49, 109, 55, 12, 23, 108,
+			88, 88, 108, 55, 0, 11, 82, 107, 101, 108, 108, 32, 97, 122, 122, 97, 108, 32, 9, 198, 77, 165, 15, 72, 149, 0, 11, 28, 69, 4,
+			227, 153, 37, 64, 108, 67, 67, 37, 47, 47, 40, 72, 40, 50, 49, 0, 76, 81, 116, 117, 100, 117, 110, 107, 32, 8, 197, 28, 243, 66,
+			61, 64, 11, 8, 197, 21, 161, 75, 21, 64, 11, 9, 198, 80, 84, 171, 48, 85, 0, 11, 13, 4, 95, 109, 99, 110, 65, 108, 49, 52,
+			39, 50, 0, 0, 7, 196, 88, 83, 142, 136, 11, 23, 68, 74, 36, 218, 20, 52, 113, 89, 109, 15, 84, 39, 55, 47, 0, 11, 81, 118,
+			111, 108, 116, 32, 7, 196, 89, 195, 14, 4, 11, 7, 196, 112, 195, 10, 4, 11, 7, 196, 74, 36, 218, 20, 11, 7, 196, 161, 52, 218,
+			20, 11, 0, 16, 67, 53, 54, 144, 101, 109, 101, 115, 122, 112, 195, 169, 0, 29, 42, 6, 195, 136, 200, 142, 11, 6, 195, 57, 146, 84,
+			11, 6, 195, 104, 18, 148, 11, 0, 9, 198, 52, 243, 137, 80, 244, 128, 11, 7, 196, 149, 37, 1, 44, 11, 12, 68, 65, 52, 218, 80,
+			48, 89, 12, 47, 0, 41, 0, 9, 198, 57, 145, 76, 88, 85, 0, 11, 9, 198, 44, 84, 171, 48, 85, 0, 11, 9, 198, 137, 37, 5,
+			78, 179, 20, 11, 8, 197, 36, 225, 21, 49, 64, 11, 5, 194, 34, 112, 11, 11, 200, 88, 20, 220, 72, 224, 80, 36, 112, 17, 0, 9,
+			198, 82, 132, 148, 136, 227, 133, 11, 19, 208, 4, 176, 68, 112, 198, 77, 20, 229, 5, 78, 85, 34, 78, 34, 5, 104, 11, 10, 199, 74,
+			36, 218, 21, 58, 204, 80, 11, 0, 8, 197, 89, 196, 148, 4, 208, 11, 10, 199, 80, 85, 20, 20, 147, 133, 44, 11, 0, 12, 201, 77,
+			160, 66, 4, 68, 220, 29, 197, 0, 11, 11, 200, 20, 193, 143, 28, 17, 20, 4, 176, 11, 0, 9, 198, 80, 17, 220, 48, 192, 77, 11,
+			13, 202, 81, 83, 1, 40, 67, 206, 61, 53, 39, 48, 11, 9, 198, 12, 83, 12, 112, 180, 129, 11, 9, 198, 76, 81, 226, 49, 149, 0,
+			11, 15, 8, 95, 35, 45, 195, 169, 104, 101, 122, 113, 107, 109, 88, 0, 0, 37, 71, 20, 118, 69, 80, 83, 69, 56, 109, 79, 109, 47,
+			109, 65, 109, 50, 23, 84, 113, 81, 88, 109, 47, 12, 0, 11, 81, 118, 195, 169, 103, 122, 101, 116, 116, 32, 10, 199, 44, 244, 156, 8,
+			36, 167, 48, 11, 0, 12, 201, 46, 36, 218, 149, 65, 84, 80, 82, 192, 11, 12, 201, 77, 167, 13, 149, 67, 212, 80, 18, 192, 11, 10,
+			199, 66, 35, 4, 112, 181, 39, 48, 11, 9, 198, 44, 84, 133, 77, 72, 139, 11, 13, 202, 4, 194, 193, 48, 208, 90, 61, 69, 1, 44,
+			11, 7, 196, 77, 165, 28, 72, 11, 0, 12, 137, 116, 197, 177, 122, 102, 97, 108, 97, 116, 11, 9, 198, 80, 19, 28, 48, 226, 64, 11,
+			9, 198, 18, 131, 148, 20, 226, 64, 11, 9, 198, 40, 83, 40, 48, 226, 64, 11, 0, 12, 201, 44, 146, 226, 72, 65, 90, 58, 35, 64,
+			11, 9, 198, 77, 68, 156, 24, 245, 0, 11, 10, 199, 77, 161, 82, 88, 86, 142, 36, 11, 12, 201, 44, 20, 1, 12, 149, 28, 77, 41,
+			204, 11, 8, 197, 74, 115, 21, 56, 176, 11, 0, 8, 197, 80, 149, 11, 113, 64, 11, 8, 197, 80, 244, 148, 113, 64, 11, 8, 197, 46,
+			36, 132, 137, 48, 11, 0, 9, 198, 64, 144, 67, 60, 176, 84, 11, 12, 201, 8, 150, 143, 57, 145, 193, 80, 226, 64, 11, 31, 7, 118,
+			101, 122, 101, 116, 197, 145, 84, 109, 88, 109, 47, 118, 23, 50, 118, 50, 109, 49, 0, 11, 81, 110, 197, 145, 110, 101, 107, 32, 12, 201,
+			60, 64, 70, 36, 118, 69, 48, 226, 64, 11, 11, 200, 76, 80, 133, 77, 56, 135, 137, 64, 11, 7, 196, 64, 242, 28, 72, 11, 12, 201,
+			44, 146, 133, 48, 83, 148, 20, 226, 64, 11, 10, 135, 118, 101, 122, 101, 116, 197, 145, 11, 7, 196, 48, 18, 201, 44, 11, 6, 195, 88,
+			145, 4, 11, 0, 16, 141, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 195, 169, 116, 11, 6, 195, 10, 115, 0, 72, 0, 10, 199, 53,
+			83, 139, 4, 129, 76, 100, 11, 33, 69, 44, 144, 68, 113, 48, 49, 37, 108, 72, 114, 91, 23, 119, 113, 61, 57, 108, 37, 47, 0, 11,
+			81, 99, 195, 169, 108, 106, 97, 105, 116, 32, 8, 197, 72, 16, 140, 113, 48, 11, 24, 69, 44, 144, 68, 113, 48, 49, 37, 108, 72, 114,
+			91, 23, 55, 109, 89, 0, 81, 108, 101, 115, 122, 32, 9, 198, 36, 224, 75, 82, 85, 128, 11, 12, 137, 195, 169, 114, 116, 104, 101, 116,
+			197, 145, 11, 8, 197, 44, 144, 68, 113, 48, 11, 8, 197, 80, 20, 148, 113, 48, 11, 12, 137, 107, 195, 169, 114, 104, 101, 116, 197, 145,
+			11, 7, 196, 66, 35, 154, 80, 11, 6, 195, 50, 33, 217, 11, 6, 195, 54, 33, 217, 11, 6, 195, 77, 163, 210, 72, 0, 10, 199, 81,
+			196, 136, 20, 198, 98, 80, 11, 6, 195, 60, 176, 64, 11, 13, 138, 101, 108, 195, 169, 114, 104, 101, 116, 197, 145, 11, 6, 195, 36, 72,
+			142, 17, 0, 14, 139, 101, 108, 197, 145, 195, 169, 108, 101, 116, 197, 177, 11, 9, 198, 40, 83, 5, 105, 65, 64, 11, 16, 141, 99, 195,
+			169, 108, 107, 105, 116, 197, 177, 122, 195, 169, 115, 11, 0, 28, 68, 89, 195, 9, 44, 84, 114, 55, 37, 49, 23, 108, 6, 15, 119, 113,
+			81, 0, 11, 82, 97, 32, 99, 195, 169, 103, 32, 33, 74, 80, 20, 1, 77, 165, 1, 48, 21, 15, 16, 47, 108, 48, 108, 89, 47, 108,
+			55, 108, 47, 39, 72, 23, 37, 91, 0, 11, 81, 105, 115, 32, 9, 198, 21, 54, 139, 161, 170, 11, 11, 12, 201, 52, 81, 211, 106, 115,
+			1, 49, 64, 84, 11, 15, 140, 108, 101, 104, 101, 116, 197, 145, 115, 195, 169, 103, 101, 11, 15, 140, 102, 101, 108, 101, 108, 197, 145, 115,
+			195, 169, 103, 101, 11, 7, 196, 89, 195, 9, 44, 11, 12, 201, 13, 58, 212, 161, 37, 40, 46, 131, 128, 17, 0, 39, 66, 5, 160, 108,
+			88, 23, 113, 52, 47, 113, 49, 109, 91, 112, 47, 113, 91, 47, 0, 11, 81, 195, 169, 114, 116, 195, 169, 107, 101, 115, 195, 173, 116, 195,
+			169, 115, 116, 32, 32, 66, 5, 160, 108, 88, 23, 109, 55, 12, 109, 50, 113, 52, 84, 109, 49, 0, 11, 81, 101, 108, 108, 101, 110, 195,
+			169, 114, 118, 101, 107, 32, 22, 66, 5, 160, 108, 88, 23, 37, 72, 118, 52, 109, 0, 11, 81, 105, 100, 197, 145, 114, 101, 32, 18, 66,
+			5, 160, 108, 88, 23, 89, 108, 52, 0, 11, 81, 115, 122, 97, 114, 32, 34, 66, 5, 160, 108, 88, 23, 108, 55, 108, 48, 113, 55, 65,
+			113, 67, 109, 0, 11, 81, 97, 108, 97, 112, 195, 169, 108, 109, 195, 169, 110, 121, 101, 32, 25, 66, 5, 160, 108, 88, 23, 111, 79, 109,
+			49, 109, 47, 0, 11, 81, 195, 188, 103, 121, 101, 107, 101, 116, 32, 27, 66, 5, 160, 108, 88, 23, 111, 79, 109, 49, 71, 109, 50, 0,
+			11, 81, 195, 188, 103, 121, 101, 107, 98, 101, 110, 32, 29, 66, 5, 160, 108, 88, 10, 6, 15, 108, 72, 108, 47, 39, 49, 108, 47, 0,
+			11, 81, 97, 100, 97, 116, 111, 107, 97, 116, 32, 32, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 72, 39, 49, 55, 114, 91, 47, 0,
+			11, 81, 105, 110, 100, 111, 107, 108, 195, 161, 115, 116, 32, 22, 66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 91, 118, 0, 11, 81, 101,
+			108, 115, 197, 145, 32, 28, 66, 5, 160, 108, 88, 10, 6, 15, 37, 55, 12, 109, 47, 118, 47, 0, 11, 81, 105, 108, 108, 101, 116, 197,
+			145, 116, 32, 27, 66, 5, 160, 108, 88, 10, 6, 15, 109, 91, 109, 47, 71, 109, 50, 0, 11, 81, 101, 115, 101, 116, 98, 101, 110, 32,
+			27, 66, 5, 160, 108, 88, 10, 6, 15, 49, 109, 55, 12, 109, 50, 109, 0, 11, 81, 107, 101, 108, 108, 101, 110, 101, 32, 23, 66, 5,
+			160, 108, 88, 10, 6, 15, 114, 52, 114, 47, 0, 11, 81, 195, 161, 114, 195, 161, 116, 32, 34, 66, 5, 160, 108, 88, 10, 6, 15, 109,
+			89, 49, 110, 88, 110, 49, 109, 47, 0, 11, 81, 101, 115, 122, 107, 195, 182, 122, 195, 182, 107, 101, 116, 32, 22, 66, 5, 160, 108, 88,
+			10, 6, 15, 113, 84, 109, 47, 0, 11, 81, 195, 169, 118, 101, 116, 32, 22, 66, 5, 160, 108, 88, 10, 6, 15, 37, 72, 118, 47, 0,
+			11, 81, 105, 100, 197, 145, 116, 32, 24, 66, 5, 160, 108, 88, 10, 6, 15, 108, 6, 15, 71, 108, 57, 0, 11, 82, 97, 32, 98, 97,
+			106, 32, 21, 66, 5, 160, 108, 88, 10, 6, 15, 108, 72, 108, 47, 0, 11, 81, 97, 100, 97, 116, 32, 31, 66, 5, 160, 108, 88, 10,
+			6, 15, 39, 52, 89, 114, 81, 71, 108, 50, 0, 11, 81, 111, 114, 115, 122, 195, 161, 103, 98, 97, 110, 32, 23, 66, 5, 160, 108, 88,
+			10, 6, 15, 109, 55, 84, 109, 47, 0, 11, 81, 101, 108, 118, 101, 116, 32, 24, 66, 5, 160, 108, 88, 10, 6, 15, 113, 61, 57, 109,
+			55, 0, 11, 81, 195, 169, 106, 106, 101, 108, 32, 23, 66, 5, 160, 108, 88, 10, 6, 15, 108, 50, 81, 39, 55, 0, 11, 81, 97, 110,
+			103, 111, 108, 32, 34, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 72, 112, 47, 84, 114, 67, 108, 0, 11, 81, 105, 110, 100, 195, 173,
+			116, 118, 195, 161, 110, 121, 97, 32, 25, 66, 5, 160, 108, 88, 10, 6, 15, 39, 55, 72, 108, 55, 47, 0, 11, 81, 111, 108, 100, 97,
+			108, 116, 32, 26, 66, 5, 160, 108, 88, 10, 6, 15, 111, 79, 52, 118, 55, 0, 11, 81, 195, 188, 103, 121, 114, 197, 145, 108, 32, 35,
+			66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 50, 110, 49, 91, 113, 81, 109, 47, 0, 11, 81, 101, 108, 110, 195, 182, 107, 115, 195, 169,
+			103, 101, 116, 32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 109, 79, 12, 109, 91, 111, 55, 109, 47, 109, 49, 0, 11, 81, 101, 103, 121,
+			101, 115, 195, 188, 108, 101, 116, 101, 107, 32, 39, 66, 5, 160, 108, 88, 10, 6, 15, 109, 55, 118, 52, 109, 57, 109, 55, 88, 113, 91,
+			109, 0, 11, 81, 101, 108, 197, 145, 114, 101, 106, 101, 108, 122, 195, 169, 115, 101, 32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50,
+			47, 113, 88, 65, 113, 67, 109, 49, 0, 11, 81, 105, 110, 116, 195, 169, 122, 109, 195, 169, 110, 121, 101, 107, 32, 36, 66, 5, 160, 108,
+			88, 10, 6, 15, 37, 50, 72, 39, 49, 55, 114, 91, 12, 108, 55, 0, 11, 81, 105, 110, 100, 111, 107, 108, 195, 161, 115, 115, 97, 108,
+			32, 36, 66, 5, 160, 108, 88, 10, 6, 15, 114, 55, 12, 108, 48, 39, 47, 40, 49, 39, 50, 0, 11, 81, 195, 161, 108, 108, 97, 112,
+			111, 116, 117, 107, 111, 110, 32, 38, 66, 5, 160, 108, 88, 23, 91, 109, 65, 23, 89, 39, 49, 84, 114, 67, 39, 91, 0, 11, 82, 115,
+			101, 109, 32, 115, 122, 111, 107, 118, 195, 161, 110, 121, 111, 115, 32, 25, 66, 5, 160, 108, 88, 10, 6, 15, 111, 79, 71, 109, 50, 0,
+			11, 81, 195, 188, 103, 121, 98, 101, 110, 32, 41, 66, 5, 160, 108, 88, 10, 6, 15, 108, 55, 108, 48, 37, 55, 12, 109, 47, 65, 113,
+			67, 109, 0, 11, 81, 97, 108, 97, 112, 105, 108, 108, 101, 116, 109, 195, 169, 110, 121, 101, 32, 29, 66, 5, 160, 108, 88, 10, 6, 15,
+			37, 88, 81, 108, 55, 65, 108, 91, 0, 11, 81, 105, 122, 103, 97, 108, 109, 97, 115, 32, 30, 66, 5, 160, 108, 88, 23, 108, 6, 15,
+			49, 113, 52, 72, 113, 91, 0, 11, 82, 97, 32, 107, 195, 169, 114, 100, 195, 169, 115, 32, 34, 66, 5, 160, 108, 88, 23, 37, 50, 47,
+			113, 88, 109, 47, 109, 49, 109, 47, 0, 11, 81, 105, 110, 116, 195, 169, 122, 101, 116, 101, 107, 101, 116, 32, 21, 66, 5, 160, 108, 88,
+			23, 109, 55, 84, 109, 47, 0, 11, 81, 101, 108, 118, 101, 116, 32, 24, 66, 5, 160, 108, 88, 23, 113, 55, 109, 47, 109, 72, 0, 11,
+			81, 195, 169, 108, 101, 116, 101, 100, 32, 31, 66, 5, 160, 108, 88, 6, 23, 116, 57, 112, 47, 114, 91, 39, 49, 0, 11, 81, 195, 186,
+			106, 195, 173, 116, 195, 161, 115, 111, 107, 32, 31, 66, 5, 160, 108, 88, 6, 23, 114, 55, 12, 108, 48, 39, 47, 39, 65, 0, 11, 81,
+			195, 161, 108, 108, 97, 112, 111, 116, 111, 109, 32, 7, 196, 64, 84, 131, 20, 11, 38, 66, 5, 160, 108, 88, 10, 6, 15, 37, 50, 47,
+			109, 52, 50, 109, 47, 109, 88, 113, 91, 0, 11, 81, 105, 110, 116, 101, 114, 110, 101, 116, 101, 122, 195, 169, 115, 32, 35, 66, 5, 160,
+			108, 88, 10, 6, 15, 108, 6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 11, 82, 97, 32, 112, 114, 111, 98, 108, 195, 169, 109, 97,
+			32, 25, 66, 5, 160, 108, 88, 6, 15, 10, 113, 89, 108, 49, 37, 0, 11, 81, 195, 169, 115, 122, 97, 107, 105, 32, 18, 66, 5, 160,
+			108, 88, 23, 109, 91, 118, 0, 11, 81, 101, 115, 197, 145, 32, 17, 66, 5, 160, 108, 88, 23, 113, 4, 81, 0, 11, 81, 195, 169, 103,
+			32, 17, 66, 5, 160, 108, 88, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 22, 66, 5, 160, 108, 88, 23, 37, 50, 83, 115, 47,
+			0, 11, 81, 105, 110, 102, 195, 179, 116, 32, 15, 66, 5, 160, 108, 88, 15, 37, 91, 0, 11, 81, 105, 115, 32, 20, 66, 5, 160, 10,
+			108, 88, 15, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 6, 194, 5, 160, 72, 10, 0, 27, 67, 149, 37, 0, 112, 52, 47,
+			23, 49, 110, 67, 84, 109, 47, 0, 11, 81, 107, 195, 182, 110, 121, 118, 101, 116, 32, 13, 138, 102, 197, 145, 104, 97, 100, 110, 97, 103,
+			121, 11, 6, 195, 169, 67, 206, 11, 6, 195, 149, 37, 0, 11, 6, 195, 33, 193, 192, 11, 6, 195, 169, 67, 206, 15, 0, 35, 70, 80,
+			83, 69, 77, 49, 64, 47, 109, 65, 109, 91, 12, 109, 23, 109, 55, 23, 116, 57, 52, 108, 0, 11, 82, 101, 108, 32, 195, 186, 106, 114,
+			97, 32, 8, 197, 82, 37, 5, 48, 80, 11, 11, 200, 82, 163, 12, 137, 5, 43, 56, 176, 11, 0, 41, 12, 118, 101, 122, 101, 116, 197,
+			145, 115, 195, 169, 103, 105, 84, 109, 88, 109, 47, 118, 91, 113, 81, 37, 23, 47, 108, 81, 57, 108, 37, 0, 11, 81, 116, 97, 103, 106,
+			97, 105, 32, 7, 196, 137, 37, 9, 44, 11, 0, 39, 70, 44, 83, 12, 21, 69, 0, 49, 109, 55, 12, 109, 47, 12, 23, 49, 108, 48,
+			76, 39, 55, 50, 39, 65, 0, 11, 81, 107, 97, 112, 99, 115, 111, 108, 110, 111, 109, 32, 29, 70, 44, 83, 12, 21, 69, 0, 49, 109,
+			55, 12, 109, 47, 12, 23, 108, 107, 39, 88, 0, 11, 81, 97, 104, 104, 111, 122, 32, 40, 70, 44, 83, 12, 21, 69, 0, 49, 109, 55,
+			12, 109, 47, 12, 23, 109, 55, 39, 55, 84, 108, 91, 50, 39, 65, 0, 11, 81, 101, 108, 111, 108, 118, 97, 115, 110, 111, 109, 32, 11,
+			200, 61, 1, 82, 113, 67, 210, 60, 176, 11, 9, 198, 44, 83, 12, 21, 69, 0, 11, 0, 13, 202, 24, 83, 9, 56, 69, 76, 113, 48,
+			167, 48, 11, 29, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 84, 114, 52, 57, 114, 49, 0, 11, 81, 118, 195, 161, 114, 106, 195, 161,
+			107, 32, 31, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 89, 109, 52, 109, 47, 50, 113, 0, 11, 81, 115, 122, 101, 114, 101, 116, 110,
+			195, 169, 32, 27, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 57, 109, 55, 88, 37, 49, 0, 11, 81, 106, 101, 108, 122, 105, 107, 32,
+			38, 67, 5, 165, 0, 108, 89, 47, 10, 6, 15, 79, 108, 50, 112, 47, 39, 47, 12, 114, 49, 0, 11, 81, 103, 121, 97, 110, 195, 173,
+			116, 111, 116, 116, 195, 161, 107, 32, 33, 67, 5, 165, 0, 108, 89, 47, 10, 6, 49, 113, 48, 84, 37, 91, 109, 55, 37, 0, 11, 81,
 			107, 195, 169, 112, 118, 105, 115, 101, 108, 105, 32, 37, 67, 5, 165, 0, 108, 89, 47, 6, 23, 108, 23, 107, 108, 79, 39, 65, 114, 67,
-			47, 0, 13, 82, 97, 32, 104, 97, 103, 121, 111, 109, 195, 161, 110, 121, 116, 32, 36, 67, 5, 165, 0, 108, 89, 47, 23, 47, 108, 48,
-			108, 89, 47, 108, 55, 47, 108, 65, 0, 13, 81, 116, 97, 112, 97, 115, 122, 116, 97, 108, 116, 97, 109, 32, 37, 67, 5, 165, 0, 108,
-			89, 47, 23, 47, 108, 50, 114, 76, 39, 57, 57, 57, 114, 49, 0, 13, 81, 116, 97, 110, 195, 161, 99, 115, 111, 108, 106, 195, 161, 107,
-			32, 56, 67, 5, 165, 0, 108, 89, 47, 23, 49, 113, 52, 47, 109, 23, 108, 88, 23, 114, 55, 12, 108, 65, 47, 37, 47, 49, 114, 52,
-			0, 13, 83, 107, 195, 169, 114, 116, 101, 32, 97, 122, 32, 195, 161, 108, 108, 97, 109, 116, 105, 116, 107, 195, 161, 114, 32, 14, 195, 5,
-			165, 0, 13, 81, 108, 195, 161, 116, 110, 105, 32, 10, 195, 5, 165, 0, 13, 81, 105, 115, 32, 6, 195, 5, 165, 0, 13, 12, 137, 6,
-			15, 12, 25, 1, 13, 195, 161, 14, 20, 0, 11, 200, 72, 83, 132, 20, 193, 84, 21, 64, 13, 25, 67, 96, 146, 73, 47, 37, 88, 109,
-			50, 107, 114, 52, 39, 65, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 12, 201, 56, 85, 133, 48, 177, 68, 21, 69, 0, 13, 16,
-			141, 8, 1, 10, 12, 195, 169, 11, 20, 1, 12, 1, 14, 20, 13, 0, 6, 194, 16, 80, 76, 8, 0, 10, 135, 195, 173, 18, 195, 161,
-			19, 20, 13, 0, 10, 135, 7, 25, 197, 145, 26, 14, 9, 13, 14, 139, 22, 195, 161, 12, 1, 19, 26, 20, 1, 14, 9, 13, 7, 196,
-			5, 32, 78, 100, 13, 0, 8, 197, 24, 241, 213, 56, 176, 76, 11, 136, 20, 1, 12, 195, 161, 12, 14, 9, 13, 8, 197, 28, 243, 132,
-			40, 16, 13, 0, 10, 135, 22, 5, 18, 26, 9, 195, 179, 13, 21, 146, 11, 195, 182, 26, 2, 9, 26, 20, 15, 14, 19, 195, 161, 7,
-			195, 169, 18, 20, 13, 9, 198, 80, 149, 5, 44, 85, 0, 13, 0, 10, 199, 44, 20, 3, 76, 243, 14, 36, 13, 30, 7, 11, 5, 18,
-			195, 188, 12, 20, 49, 109, 52, 111, 55, 47, 23, 89, 115, 71, 108, 0, 13, 81, 115, 122, 195, 179, 98, 97, 32, 29, 7, 11, 5, 18,
-			195, 188, 12, 20, 49, 109, 52, 111, 55, 47, 23, 108, 107, 39, 88, 0, 13, 81, 97, 104, 104, 111, 122, 32, 10, 135, 11, 5, 18, 195,
-			188, 12, 20, 13, 14, 139, 22, 195, 161, 12, 20, 15, 26, 195, 161, 19, 20, 13, 10, 199, 48, 83, 69, 57, 65, 78, 36, 13, 10, 135,
-			11, 5, 18, 195, 188, 12, 20, 13, 25, 67, 96, 146, 64, 47, 37, 88, 109, 50, 49, 109, 47, 12, 118, 84, 109, 55, 0, 44, 42, 81,
-			101, 108, 32, 0, 22, 68, 20, 65, 9, 28, 109, 72, 12, 37, 81, 23, 91, 109, 65, 0, 13, 81, 115, 101, 109, 32, 11, 136, 9, 4,
-			195, 169, 26, 5, 20, 20, 13, 15, 204, 24, 145, 217, 20, 195, 69, 105, 65, 84, 21, 69, 0, 13, 7, 196, 88, 83, 142, 36, 13, 7,
-			196, 88, 147, 142, 36, 13, 12, 4, 95, 4, 16, 20, 15, 109, 81, 113, 89, 0, 0, 8, 197, 104, 18, 140, 36, 176, 13, 15, 140, 13,
-			5, 7, 11, 195, 188, 26, 4, 5, 14, 9, 5, 13, 47, 14, 14, 25, 9, 12, 22, 195, 161, 14, 15, 19, 19, 195, 161, 7, 67, 37,
-			55, 84, 114, 50, 39, 91, 12, 114, 81, 23, 89, 114, 65, 114, 52, 108, 0, 13, 81, 115, 122, 195, 161, 109, 195, 161, 114, 97, 32, 12,
-			201, 8, 148, 218, 80, 244, 207, 44, 21, 0, 13, 8, 197, 52, 83, 142, 20, 176, 13, 11, 136, 20, 195, 169, 13, 195, 161, 18, 1, 13,
-			12, 201, 52, 81, 207, 48, 64, 78, 84, 226, 192, 13, 8, 197, 32, 148, 218, 20, 208, 13, 15, 4, 95, 49, 48, 17, 47, 37, 88, 109,
-			72, 37, 49, 109, 0, 0, 32, 11, 13, 5, 7, 15, 12, 4, 8, 1, 20, 195, 179, 65, 109, 81, 39, 55, 72, 107, 108, 47, 115, 23,
-			108, 88, 0, 13, 81, 97, 122, 32, 13, 138, 195, 169, 18, 20, 5, 19, 195, 188, 12, 20, 13, 9, 198, 52, 17, 213, 44, 21, 0, 13,
-			5, 194, 21, 48, 72, 0, 39, 67, 56, 83, 64, 50, 109, 65, 23, 57, 109, 55, 109, 50, 47, 23, 91, 109, 65, 12, 37, 47, 0, 13,
-			82, 106, 101, 108, 101, 110, 116, 32, 115, 101, 109, 109, 105, 116, 32, 31, 71, 56, 147, 131, 76, 83, 133, 44, 50, 37, 50, 76, 109, 50,
-			109, 49, 23, 52, 115, 55, 108, 0, 13, 81, 114, 195, 179, 108, 97, 32, 12, 137, 195, 188, 12, 195, 169, 19, 195, 169, 14, 13, 47, 67,
-			56, 83, 64, 50, 109, 65, 23, 84, 39, 55, 47, 23, 47, 37, 89, 47, 109, 91, 12, 113, 81, 109, 91, 0, 13, 82, 118, 111, 108, 116,
-			32, 116, 105, 115, 122, 116, 101, 115, 115, 195, 169, 103, 101, 115, 32, 24, 67, 56, 83, 64, 50, 109, 65, 23, 55, 114, 47, 12, 108, 0,
-			13, 81, 108, 195, 161, 116, 116, 97, 32, 21, 67, 56, 83, 64, 50, 109, 65, 23, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32,
-			44, 67, 56, 83, 64, 50, 109, 65, 23, 65, 39, 88, 81, 108, 47, 12, 108, 23, 47, 39, 84, 114, 71, 12, 0, 13, 82, 109, 111, 122,
-			103, 97, 116, 116, 97, 32, 116, 111, 118, 195, 161, 98, 98, 32, 14, 203, 77, 161, 82, 88, 86, 133, 80, 82, 206, 20, 176, 13, 20, 67,
-			56, 83, 64, 50, 109, 65, 23, 55, 109, 89, 0, 13, 81, 108, 101, 115, 122, 32, 40, 67, 56, 83, 64, 50, 109, 65, 15, 65, 109, 52,
-			47, 109, 65, 15, 55, 109, 112, 52, 50, 37, 0, 13, 82, 109, 101, 114, 116, 101, 109, 32, 108, 101, 195, 173, 114, 110, 105, 32, 14, 139,
-			18, 195, 169, 19, 26, 5, 19, 195, 188, 12, 20, 13, 10, 135, 195, 169, 16, 195, 188, 12, 20, 13, 7, 195, 56, 83, 64, 102, 12, 8,
-			195, 56, 83, 64, 12, 23, 22, 15, 8, 95, 35, 45, 195, 161, 14, 1, 11, 114, 50, 108, 49, 0, 0, 14, 139, 20, 1, 18, 20, 1,
-			12, 13, 195, 161, 18, 1, 13, 14, 139, 11, 195, 169, 18, 5, 12, 13, 195, 169, 18, 5, 13, 0, 12, 201, 64, 243, 9, 80, 146, 213,
-			76, 18, 64, 13, 15, 140, 9, 11, 15, 14, 20, 195, 169, 13, 195, 161, 18, 1, 13, 12, 201, 77, 161, 82, 88, 86, 133, 81, 65, 76,
-			13, 0, 9, 134, 195, 188, 12, 197, 145, 20, 13, 12, 137, 20, 195, 161, 12, 3, 195, 161, 18, 1, 13, 9, 198, 80, 85, 19, 104, 85,
-			20, 13, 0, 47, 67, 88, 85, 20, 84, 109, 47, 12, 23, 108, 23, 47, 114, 34, 79, 108, 55, 114, 91, 39, 49, 71, 108, 50, 0, 13,
-			82, 97, 32, 116, 195, 161, 114, 103, 121, 97, 108, 195, 161, 115, 111, 107, 98, 97, 110, 32, 8, 133, 14, 25, 195, 161, 18, 13, 6, 195,
-			88, 85, 20, 13, 8, 133, 14, 25, 195, 161, 18, 20, 14, 4, 95, 49, 48, 15, 47, 37, 88, 109, 72, 37, 49, 0, 0, 17, 142, 6,
-			5, 10, 12, 5, 19, 26, 20, 195, 169, 19, 195, 169, 14, 13, 17, 142, 22, 9, 19, 5, 12, 11, 5, 4, 195, 169, 19, 195, 169, 14,
-			13, 18, 143, 9, 14, 20, 195, 169, 26, 13, 195, 169, 14, 25, 5, 11, 2, 5, 13, 0, 17, 142, 22, 15, 14, 21, 12, 8, 1, 20,
-			14, 195, 161, 14, 1, 11, 13, 12, 137, 22, 9, 12, 195, 161, 7, 195, 161, 20, 13, 12, 201, 44, 145, 133, 41, 65, 84, 80, 83, 64,
-			13, 13, 138, 12, 195, 161, 20, 19, 26, 1, 14, 1, 11, 13, 17, 10, 95, 35, 45, 9, 11, 195, 169, 14, 5, 11, 113, 50, 109, 49,
-			0, 0, 29, 10, 15, 12, 3, 19, 195, 179, 2, 2, 1, 20, 39, 55, 76, 115, 71, 12, 108, 47, 23, 37, 91, 0, 13, 81, 105, 115,
-			32, 20, 145, 13, 5, 7, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 18, 1, 13, 13, 138, 20, 1, 7, 19, 195, 161, 7,
-			195, 161, 20, 13, 9, 198, 52, 243, 132, 80, 19, 64, 13, 0, 14, 139, 11, 18, 9, 20, 9, 11, 195, 161, 11, 1, 20, 13, 9, 198,
-			24, 18, 193, 17, 64, 77, 13, 10, 135, 11, 195, 169, 16, 5, 9, 20, 13, 0, 14, 139, 195, 188, 26, 5, 13, 5, 12, 20, 5, 20,
-			9, 13, 23, 67, 61, 36, 129, 39, 52, 52, 108, 10, 6, 15, 108, 55, 114, 0, 13, 81, 97, 108, 195, 161, 32, 16, 141, 1, 12, 11,
-			15, 20, 13, 195, 161, 14, 25, 14, 1, 11, 13, 9, 3, 95, 35, 57, 47, 108, 71, 0, 12, 4, 95, 20, 12, 4, 47, 37, 55, 72,
-			109, 0, 0, 15, 140, 195, 186, 10, 18, 1, 195, 173, 18, 195, 161, 19, 1, 13, 0, 0, 17, 142, 22, 195, 169, 12, 5, 13, 195, 169,
-			14, 25, 5, 26, 14, 9, 13, 8, 133, 15, 11, 195, 161, 14, 13, 13, 138, 8, 1, 20, 195, 161, 18, 15, 26, 14, 9, 13, 11, 67,
-			4, 197, 0, 108, 55, 47, 0, 42, 42, 0, 23, 68, 76, 147, 131, 76, 91, 37, 50, 76, 15, 81, 39, 50, 72, 0, 13, 81, 103, 111,
-			110, 100, 32, 37, 68, 76, 147, 131, 76, 91, 37, 50, 76, 23, 109, 79, 12, 109, 47, 113, 52, 47, 113, 91, 0, 13, 81, 101, 103, 121,
-			101, 116, 195, 169, 114, 116, 195, 169, 115, 32, 11, 136, 19, 26, 15, 12, 7, 195, 161, 12, 13, 14, 139, 8, 5, 12, 25, 5, 26, 8,
-			5, 20, 197, 145, 13, 7, 196, 76, 147, 131, 76, 13, 7, 132, 197, 145, 18, 20, 13, 7, 132, 195, 161, 18, 20, 13, 7, 196, 72, 244,
-			211, 104, 13, 0, 19, 144, 11, 195, 182, 18, 2, 5, 10, 195, 161, 20, 19, 26, 195, 161, 19, 1, 13, 15, 140, 11, 9, 20, 195, 182,
-			12, 20, 8, 5, 20, 197, 145, 13, 0, 11, 136, 3, 195, 173, 13, 5, 11, 5, 14, 13, 9, 134, 7, 25, 195, 186, 10, 20, 13, 5,
-			194, 21, 64, 13, 0, 21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 109, 0, 44, 29, 81, 109, 32, 22, 67, 17, 97,
-			0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 116, 0, 44, 29, 42, 81, 109, 32, 22, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100,
-			195, 169, 100, 0, 44, 29, 42, 81, 100, 32, 21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 100, 0, 44, 29, 81, 100,
-			32, 21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 110, 0, 44, 29, 81, 110, 32, 22, 67, 17, 97, 0, 100, 195, 169,
-			118, 195, 169, 100, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 107, 0,
-			44, 29, 81, 107, 32, 22, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 107, 0, 44, 29, 42, 81, 107, 32, 43, 8, 8,
-			195, 188, 22, 5, 12, 25, 11, 107, 111, 84, 109, 57, 49, 10, 6, 15, 114, 47, 65, 113, 52, 118, 57, 117, 0, 13, 81, 195, 161, 116,
-			109, 195, 169, 114, 197, 145, 106, 197, 177, 32, 16, 141, 195, 161, 12, 12, 1, 13, 20, 9, 20, 11, 195, 161, 18, 13, 0, 16, 141, 20,
-			5, 18, 22, 5, 26, 8, 5, 20, 195, 188, 14, 11, 13, 18, 143, 8, 15, 26, 26, 195, 161, 6, 195, 169, 18, 8, 5, 20, 197, 145,
-			13, 11, 136, 9, 18, 195, 161, 14, 25, 21, 12, 13, 0, 0, 9, 198, 40, 241, 207, 77, 83, 20, 13, 13, 202, 4, 194, 193, 48, 208,
-			90, 104, 19, 129, 44, 13, 13, 138, 10, 195, 182, 22, 197, 145, 18, 197, 145, 12, 13, 14, 5, 95, 50, 77, 49, 5, 49, 113, 47, 109,
-			88, 52, 0, 0, 9, 134, 6, 197, 177, 26, 14, 9, 13, 0, 0, 6, 195, 36, 112, 90, 13, 0, 12, 137, 5, 18, 197, 145, 19, 195,
-			173, 20, 9, 13, 12, 137, 11, 195, 182, 26, 195, 182, 12, 14, 9, 13, 16, 141, 20, 1, 14, 20, 5, 19, 20, 195, 188, 12, 5, 20,
-			5, 13, 12, 137, 195, 161, 20, 14, 195, 169, 26, 14, 9, 13, 11, 5, 95, 48, 77, 49, 5, 109, 88, 52, 0, 0, 24, 67, 20, 118,
-			64, 109, 79, 23, 49, 37, 91, 12, 109, 71, 0, 13, 81, 107, 105, 115, 101, 98, 98, 32, 28, 67, 20, 118, 64, 109, 79, 10, 6, 15,
-			48, 52, 115, 71, 114, 47, 0, 13, 81, 112, 114, 195, 179, 98, 195, 161, 116, 32, 35, 67, 20, 118, 64, 109, 79, 10, 6, 15, 83, 39,
-			81, 108, 72, 114, 91, 40, 50, 49, 0, 13, 81, 102, 111, 103, 97, 100, 195, 161, 115, 117, 110, 107, 32, 37, 67, 20, 118, 64, 109, 79,
-			23, 107, 108, 57, 55, 113, 49, 47, 108, 55, 108, 50, 47, 0, 13, 81, 104, 97, 106, 108, 195, 169, 107, 116, 97, 108, 97, 110, 116, 32,
-			27, 67, 20, 118, 64, 109, 79, 23, 83, 115, 52, 40, 65, 39, 50, 0, 13, 81, 102, 195, 179, 114, 117, 109, 111, 110, 32, 9, 198, 52,
-			147, 132, 20, 226, 201, 13, 23, 67, 20, 118, 64, 109, 79, 10, 6, 15, 72, 37, 114, 49, 0, 13, 81, 100, 105, 195, 161, 107, 32, 25,
-			67, 20, 118, 64, 109, 79, 10, 6, 15, 83, 113, 52, 83, 37, 0, 13, 81, 102, 195, 169, 114, 102, 105, 32, 32, 67, 20, 118, 64, 109,
-			79, 23, 83, 109, 55, 65, 113, 52, 113, 91, 47, 0, 13, 81, 102, 101, 108, 109, 195, 169, 114, 195, 169, 115, 116, 32, 29, 67, 20, 118,
-			64, 109, 79, 23, 89, 39, 83, 47, 84, 109, 52, 47, 0, 13, 81, 115, 122, 111, 102, 116, 118, 101, 114, 116, 32, 38, 67, 20, 118, 64,
-			109, 79, 23, 112, 52, 114, 91, 47, 40, 72, 108, 47, 55, 108, 50, 0, 13, 81, 195, 173, 114, 195, 161, 115, 116, 117, 100, 97, 116, 108,
-			97, 110, 32, 22, 67, 20, 118, 64, 109, 79, 23, 37, 72, 109, 37, 81, 0, 13, 81, 105, 100, 101, 105, 103, 32, 23, 67, 20, 118, 64,
-			109, 79, 23, 81, 113, 48, 109, 47, 0, 13, 81, 103, 195, 169, 112, 101, 116, 32, 33, 67, 20, 118, 64, 109, 79, 23, 89, 108, 71, 108,
-			72, 50, 108, 48, 52, 108, 0, 13, 81, 115, 122, 97, 98, 97, 100, 110, 97, 112, 114, 97, 32, 10, 135, 11, 195, 169, 16, 5, 19, 20,
-			13, 6, 195, 20, 118, 64, 13, 0, 49, 12, 19, 26, 5, 18, 26, 197, 145, 4, 195, 169, 19, 20, 89, 109, 52, 88, 118, 72, 113, 91,
-			47, 23, 49, 109, 55, 12, 23, 49, 110, 47, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32, 107, 195, 182, 116, 110, 105, 32, 11, 200, 65,
-			35, 198, 21, 52, 218, 61, 32, 13, 19, 144, 9, 14, 6, 15, 18, 13, 195, 161, 3, 9, 195, 179, 195, 169, 18, 20, 13, 15, 140, 19,
-			26, 5, 18, 26, 197, 145, 4, 195, 169, 19, 20, 13, 7, 196, 4, 227, 129, 44, 13, 0, 8, 197, 81, 81, 21, 56, 176, 76, 30, 6,
-			6, 15, 12, 25, 195, 179, 83, 39, 57, 115, 15, 84, 109, 52, 91, 109, 67, 0, 13, 81, 118, 101, 114, 115, 101, 110, 121, 32, 13, 138,
-			20, 195, 161, 18, 19, 1, 19, 195, 161, 7, 13, 8, 197, 48, 18, 212, 4, 176, 13, 0, 9, 198, 52, 147, 132, 20, 118, 64, 13, 42,
-			10, 13, 5, 7, 15, 12, 4, 195, 161, 19, 20, 65, 109, 81, 39, 55, 72, 114, 91, 47, 23, 113, 48, 112, 47, 23, 71, 109, 0, 13,
-			82, 195, 169, 112, 195, 173, 116, 32, 98, 101, 32, 23, 70, 32, 83, 25, 104, 85, 0, 107, 109, 57, 88, 109, 47, 23, 108, 88, 0, 13,
-			81, 97, 122, 32, 9, 198, 44, 244, 146, 20, 181, 0, 13, 9, 198, 32, 83, 25, 104, 85, 0, 13, 13, 138, 13, 5, 7, 15, 12, 4,
-			195, 161, 19, 20, 13, 16, 67, 61, 33, 139, 39, 109, 51, 109, 83, 49, 114, 0, 17, 42, 42, 0, 29, 7, 5, 12, 13, 195, 186, 12,
-			20, 109, 55, 65, 116, 55, 47, 23, 113, 84, 109, 49, 0, 13, 81, 195, 169, 118, 101, 107, 32, 10, 135, 18, 5, 16, 195, 188, 12, 20,
-			13, 8, 133, 7, 25, 197, 145, 26, 13, 10, 135, 14, 195, 169, 26, 5, 20, 20, 13, 0, 11, 136, 195, 161, 20, 195, 161, 12, 12, 20,
-			13, 11, 136, 22, 195, 169, 7, 26, 5, 20, 20, 13, 11, 136, 22, 195, 169, 7, 26, 5, 20, 20, 13, 15, 140, 5, 12, 4, 15, 2,
-			195, 161, 12, 195, 161, 19, 20, 13, 7, 196, 80, 82, 5, 72, 13, 10, 135, 13, 21, 14, 11, 195, 161, 13, 13, 7, 196, 16, 240, 142,
-			36, 13, 18, 5, 95, 50, 77, 49, 15, 49, 113, 47, 109, 88, 52, 109, 72, 37, 49, 0, 0, 27, 8, 20, 195, 182, 12, 20, 19, 5,
-			13, 47, 110, 55, 76, 109, 65, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 8, 197, 80, 84, 150, 20, 176, 13, 12, 137, 16, 18,
-			15, 4, 21, 11, 195, 161, 12, 13, 8, 197, 52, 83, 142, 36, 80, 13, 12, 201, 77, 160, 75, 20, 208, 133, 72, 82, 64, 13, 8, 133,
-			13, 195, 186, 12, 20, 13, 0, 14, 66, 21, 80, 101, 117, 110, 0, 44, 29, 42, 81, 110, 32, 12, 137, 3, 19, 9, 18, 11, 195, 169,
-			18, 5, 13, 22, 147, 19, 26, 15, 6, 20, 22, 5, 18, 6, 5, 10, 12, 5, 19, 26, 20, 197, 145, 11, 13, 9, 198, 80, 20, 148,
-			84, 226, 192, 13, 0, 18, 143, 2, 5, 18, 5, 14, 4, 5, 26, 11, 5, 4, 195, 169, 19, 20, 13, 9, 134, 2, 195, 173, 26, 14,
-			1, 13, 52, 10, 13, 5, 7, 15, 12, 4, 195, 161, 19, 9, 65, 109, 81, 39, 55, 72, 114, 91, 37, 23, 55, 109, 107, 109, 47, 118,
-			91, 113, 81, 12, 109, 55, 0, 13, 81, 108, 101, 104, 101, 116, 197, 145, 115, 195, 169, 103, 103, 101, 108, 32, 9, 134, 10, 195, 179, 11,
-			1, 9, 13, 10, 135, 12, 195, 169, 16, 5, 20, 20, 13, 0, 33, 11, 22, 1, 12, 195, 179, 19, 195, 173, 20, 10, 1, 84, 108, 55,
-			115, 91, 112, 80, 12, 108, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 19, 144, 8, 15, 26, 26, 195, 161, 10, 195, 161, 18, 21,
-			12, 195, 161, 19, 20, 13, 40, 8, 13, 9, 5, 12, 197, 145, 20, 20, 65, 37, 109, 55, 118, 47, 12, 23, 83, 39, 57, 47, 108, 47,
-			50, 114, 0, 13, 81, 102, 111, 108, 121, 116, 97, 116, 110, 195, 161, 32, 11, 200, 44, 146, 133, 48, 83, 148, 36, 176, 13, 14, 139, 20,
-			1, 18, 20, 195, 161, 19, 195, 161, 18, 1, 13, 0, 28, 8, 20, 1, 12, 195, 161, 12, 10, 1, 47, 108, 55, 114, 55, 57, 108, 23,
-			65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 15, 140, 9, 14, 4, 21, 12, 195, 161, 19, 195, 161, 18, 1, 13, 30, 9, 11, 195, 182,
-			22, 5, 20, 5, 20, 20, 49, 110, 84, 109, 47, 109, 47, 12, 10, 6, 15, 109, 55, 0, 13, 81, 101, 108, 32, 12, 137, 11, 195, 182,
-			22, 5, 20, 5, 20, 20, 13, 12, 137, 195, 169, 18, 9, 14, 20, 5, 20, 20, 13, 0, 20, 5, 195, 161, 6, 195, 161, 195, 161, 102,
-			195, 161, 116, 0, 44, 29, 42, 81, 116, 32, 13, 138, 4, 195, 169, 12, 5, 12, 197, 145, 20, 20, 22, 0, 39, 7, 13, 21, 14, 11,
-			195, 161, 20, 65, 40, 50, 49, 114, 47, 10, 6, 15, 84, 113, 81, 109, 89, 47, 109, 49, 0, 13, 81, 118, 195, 169, 103, 101, 122, 116,
-			101, 107, 32, 26, 7, 13, 21, 14, 11, 195, 161, 20, 65, 40, 50, 49, 114, 47, 23, 37, 47, 12, 0, 13, 81, 105, 116, 116, 32, 14,
-			139, 11, 195, 173, 22, 195, 188, 12, 18, 197, 145, 12, 13, 10, 135, 20, 9, 20, 11, 195, 161, 20, 13, 10, 135, 13, 21, 14, 11, 195,
-			161, 20, 13, 12, 137, 16, 195, 169, 14, 20, 5, 11, 5, 14, 22, 0, 35, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 89, 114,
-			65, 112, 47, 108, 50, 37, 0, 13, 81, 115, 122, 195, 161, 109, 195, 173, 116, 97, 110, 105, 32, 38, 68, 48, 82, 5, 80, 55, 109, 107,
-			109, 47, 23, 108, 49, 108, 72, 114, 57, 39, 88, 50, 37, 0, 13, 81, 97, 107, 97, 100, 195, 161, 108, 121, 111, 122, 110, 105, 32, 18,
-			143, 6, 5, 14, 14, 20, 1, 18, 20, 195, 161, 19, 195, 161, 18, 1, 13, 25, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 113,
-			52, 50, 37, 0, 13, 81, 195, 169, 114, 110, 105, 32, 41, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 47, 40, 72, 50,
-			37, 10, 6, 15, 51, 115, 55, 108, 0, 13, 82, 116, 117, 100, 110, 105, 32, 114, 195, 179, 108, 97, 32, 33, 68, 48, 82, 5, 80, 55,
-			109, 107, 109, 47, 10, 6, 15, 37, 91, 65, 109, 52, 118, 91, 0, 13, 81, 105, 115, 109, 101, 114, 197, 145, 115, 32, 28, 68, 48, 82,
-			5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 84, 109, 50, 12, 37, 0, 13, 81, 118, 101, 110, 110, 105, 32, 34, 68, 48, 82, 5, 80,
-			55, 109, 107, 109, 47, 10, 6, 15, 65, 108, 34, 49, 39, 55, 50, 37, 0, 13, 81, 109, 97, 114, 107, 111, 108, 110, 105, 32, 36, 68,
-			48, 82, 5, 80, 55, 109, 107, 109, 47, 10, 6, 15, 57, 109, 55, 109, 50, 47, 109, 50, 37, 0, 13, 81, 106, 101, 108, 101, 110, 116,
-			101, 110, 105, 32, 26, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 109, 88, 88, 109, 55, 0, 13, 81, 101, 122, 122, 101, 108, 32,
-			34, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 107, 108, 89, 50, 114, 55, 50, 37, 0, 13, 81, 104, 97, 115, 122, 110, 195, 161,
-			108, 110, 105, 32, 36, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 108, 88, 10, 6, 15, 111, 79, 71, 109, 50, 0, 13, 82, 97,
-			122, 32, 195, 188, 103, 121, 98, 101, 110, 32, 27, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 50, 113, 88, 50, 37, 0, 13, 81,
-			110, 195, 169, 122, 110, 105, 32, 32, 68, 48, 82, 5, 80, 55, 109, 107, 109, 47, 23, 76, 108, 48, 108, 72, 113, 49, 0, 13, 81, 99,
-			115, 97, 112, 97, 100, 195, 169, 107, 32, 7, 196, 80, 82, 5, 80, 13, 11, 136, 4, 195, 173, 10, 1, 11, 1, 20, 13, 7, 196, 88,
-			83, 5, 16, 13, 7, 196, 48, 82, 5, 80, 13, 14, 139, 195, 169, 10, 19, 26, 1, 11, 195, 161, 18, 1, 22, 0, 11, 136, 20, 1,
-			18, 20, 195, 161, 19, 1, 13, 0, 39, 9, 15, 12, 22, 1, 19, 195, 161, 19, 1, 39, 55, 84, 108, 91, 114, 91, 108, 10, 6, 15,
-			49, 110, 88, 71, 109, 50, 0, 13, 81, 107, 195, 182, 122, 98, 101, 110, 32, 14, 139, 6, 15, 18, 4, 195, 173, 20, 19, 195, 161, 11,
-			13, 13, 138, 20, 1, 14, 195, 161, 3, 19, 195, 161, 20, 13, 0, 10, 135, 20, 1, 14, 25, 195, 161, 20, 13, 14, 139, 20, 5, 18,
-			13, 195, 169, 11, 5, 11, 5, 20, 13, 5, 194, 4, 224, 72, 15, 66, 28, 32, 81, 37, 81, 108, 71, 114, 57, 47, 0, 42, 42, 0,
-			15, 140, 13, 195, 161, 19, 15, 4, 16, 5, 18, 3, 5, 20, 13, 12, 137, 5, 19, 5, 4, 195, 169, 11, 5, 19, 13, 6, 195, 72,
-			82, 148, 13, 6, 195, 24, 80, 128, 20, 0, 46, 13, 19, 26, 195, 161, 26, 1, 12, 195, 169, 11, 195, 161, 20, 89, 114, 88, 108, 55,
-			113, 49, 114, 47, 23, 47, 109, 89, 37, 49, 23, 49, 37, 0, 13, 82, 116, 101, 115, 122, 105, 107, 32, 107, 105, 32, 16, 141, 19, 26,
-			195, 161, 26, 1, 12, 195, 169, 11, 195, 161, 20, 13, 12, 137, 12, 195, 169, 22, 197, 145, 11, 5, 20, 13, 11, 136, 195, 169, 18, 26,
-			195, 169, 19, 5, 13, 7, 196, 20, 130, 5, 104, 13, 16, 141, 19, 26, 195, 161, 26, 1, 12, 195, 169, 11, 195, 161, 20, 13, 7, 196,
-			12, 83, 12, 4, 13, 15, 140, 2, 5, 14, 25, 195, 186, 10, 20, 195, 161, 19, 1, 13, 0, 12, 137, 6, 5, 12, 5, 12, 197, 145,
-			19, 5, 13, 24, 5, 11, 195, 182, 26, 20, 49, 110, 89, 47, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 9, 198, 61,
-			54, 148, 61, 163, 137, 13, 17, 142, 11, 195, 169, 16, 22, 9, 19, 5, 12, 197, 145, 11, 5, 20, 13, 11, 136, 20, 18, 195, 161, 7,
-			195, 161, 18, 13, 9, 134, 22, 195, 169, 12, 5, 13, 13, 9, 133, 11, 195, 182, 26, 20, 13, 22, 8, 133, 7, 195, 161, 26, 20, 13,
-			0, 14, 139, 195, 182, 19, 19, 26, 5, 7, 5, 11, 5, 20, 13, 18, 143, 11, 195, 169, 19, 26, 195, 188, 12, 195, 169, 11, 5, 11,
-			5, 20, 13, 14, 139, 22, 195, 161, 12, 1, 19, 26, 15, 11, 1, 20, 13, 14, 139, 195, 169, 18, 20, 195, 169, 11, 5, 11, 5, 20,
-			13, 6, 195, 32, 144, 129, 13, 11, 136, 195, 161, 16, 18, 9, 12, 9, 19, 20, 0, 15, 140, 8, 1, 12, 12, 7, 1, 20, 195, 179,
-			11, 1, 20, 13, 55, 12, 19, 26, 1, 14, 11, 3, 9, 195, 179, 11, 1, 20, 89, 108, 50, 49, 119, 37, 115, 49, 108, 47, 15, 108,
-			55, 49, 108, 55, 65, 108, 88, 88, 108, 50, 108, 49, 0, 13, 81, 97, 108, 107, 97, 108, 109, 97, 122, 122, 97, 110, 97, 107, 32, 14,
-			139, 7, 25, 197, 145, 26, 11, 195, 182, 4, 14, 9, 13, 10, 199, 72, 83, 132, 77, 161, 82, 20, 13, 15, 140, 8, 5, 12, 25, 19,
-			195, 169, 7, 5, 11, 5, 20, 13, 11, 67, 80, 16, 128, 47, 108, 71, 0, 42, 42, 0, 20, 145, 16, 1, 18, 1, 14, 3, 19, 14,
-			15, 11, 19, 195, 161, 7, 195, 161, 20, 13, 7, 196, 4, 66, 143, 56, 13, 36, 68, 24, 18, 148, 4, 83, 108, 57, 47, 108, 23, 57,
-			108, 84, 112, 47, 114, 91, 39, 49, 0, 13, 81, 106, 97, 118, 195, 173, 116, 195, 161, 115, 111, 107, 32, 11, 200, 8, 150, 129, 48, 243,
-			77, 4, 192, 13, 12, 137, 195, 169, 18, 20, 5, 20, 20, 5, 13, 13, 7, 196, 13, 49, 82, 20, 13, 6, 195, 80, 19, 139, 13, 7,
-			196, 72, 243, 131, 76, 13, 0, 11, 136, 14, 195, 169, 26, 14, 195, 169, 11, 13, 13, 138, 19, 26, 195, 188, 12, 5, 20, 20, 5, 13,
-			13, 9, 134, 195, 169, 18, 20, 5, 13, 13, 17, 142, 14, 5, 8, 195, 169, 26, 19, 195, 169, 7, 5, 11, 5, 20, 13, 0, 22, 66,
-			25, 64, 83, 39, 52, 37, 50, 47, 12, 115, 55, 0, 44, 13, 81, 116, 195, 179, 108, 32, 21, 66, 25, 64, 83, 39, 52, 37, 50, 47,
-			50, 108, 49, 0, 44, 13, 81, 110, 97, 107, 32, 19, 66, 25, 64, 83, 39, 52, 37, 50, 47, 71, 108, 0, 44, 13, 81, 98, 97, 32,
-			19, 66, 25, 64, 83, 39, 52, 37, 50, 47, 39, 47, 0, 44, 13, 81, 111, 116, 32, 21, 66, 25, 64, 83, 39, 52, 37, 50, 47, 12,
-			108, 55, 0, 44, 13, 81, 116, 97, 108, 32, 12, 66, 25, 64, 83, 39, 52, 37, 50, 47, 0, 13, 31, 6, 5, 19, 195, 169, 10, 20,
-			109, 91, 113, 57, 47, 10, 6, 15, 55, 114, 47, 39, 49, 0, 13, 81, 108, 195, 161, 116, 111, 107, 32, 0, 24, 6, 195, 182, 12, 20,
-			5, 11, 110, 55, 47, 109, 49, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 11, 136, 3, 195, 173, 13, 5, 26, 20, 5, 13, 10,
-			199, 88, 19, 1, 44, 147, 133, 44, 13, 9, 134, 195, 169, 18, 4, 5, 11, 13, 0, 8, 133, 4, 195, 169, 12, 9, 13, 11, 200, 77,
-			162, 210, 37, 5, 2, 20, 224, 13, 16, 141, 20, 5, 12, 5, 16, 195, 173, 20, 5, 20, 20, 5, 13, 13, 7, 196, 4, 67, 137, 4,
-			13, 0, 34, 10, 6, 5, 12, 20, 195, 169, 20, 5, 12, 5, 83, 109, 55, 47, 113, 47, 109, 55, 109, 23, 84, 39, 55, 47, 0, 13,
-			81, 118, 111, 108, 116, 32, 8, 197, 36, 225, 21, 49, 64, 13, 6, 195, 77, 163, 210, 72, 0, 22, 147, 11, 195, 182, 20, 5, 12, 5,
-			26, 5, 20, 20, 19, 195, 169, 7, 5, 11, 5, 20, 13, 12, 137, 20, 195, 161, 13, 1, 4, 20, 1, 11, 13, 37, 5, 5, 12, 195,
-			169, 7, 109, 55, 113, 81, 15, 83, 37, 79, 109, 55, 65, 109, 91, 109, 50, 0, 13, 81, 102, 105, 103, 121, 101, 108, 109, 101, 115, 101,
-			110, 32, 8, 133, 5, 12, 195, 169, 7, 13, 9, 134, 22, 195, 169, 12, 5, 4, 13, 0, 13, 138, 19, 26, 195, 188, 12, 5, 20, 20,
-			5, 11, 13, 12, 201, 65, 32, 75, 80, 146, 213, 76, 16, 130, 13, 0, 17, 67, 13, 48, 75, 76, 108, 49, 23, 49, 37, 0, 13, 81,
-			107, 105, 32, 31, 67, 13, 48, 75, 76, 108, 49, 10, 6, 15, 65, 109, 81, 47, 109, 50, 12, 37, 0, 13, 81, 109, 101, 103, 116, 101,
-			110, 110, 105, 32, 18, 143, 13, 15, 18, 6, 15, 14, 4, 195, 173, 18, 15, 26, 20, 1, 11, 13, 27, 67, 13, 48, 75, 76, 108, 49,
-			23, 49, 113, 91, 118, 71, 12, 0, 13, 81, 107, 195, 169, 115, 197, 145, 98, 98, 32, 23, 67, 13, 48, 75, 76, 108, 49, 23, 108, 49,
-			12, 39, 52, 0, 13, 81, 97, 107, 107, 111, 114, 32, 23, 67, 13, 48, 75, 76, 108, 49, 23, 55, 109, 107, 109, 47, 0, 13, 81, 108,
-			101, 104, 101, 116, 32, 7, 196, 64, 84, 131, 20, 13, 12, 137, 19, 5, 7, 195, 173, 20, 5, 14, 9, 13, 10, 135, 195, 186, 10, 19,
-			195, 161, 7, 13, 16, 141, 8, 1, 14, 7, 19, 195, 186, 12, 25, 15, 26, 20, 1, 13, 10, 135, 6, 1, 11, 1, 4, 195, 179, 13,
-			14, 139, 9, 14, 4, 195, 173, 20, 15, 20, 20, 1, 11, 13, 6, 195, 13, 48, 75, 13, 0, 9, 134, 2, 195, 173, 26, 14, 9, 13,
-			8, 197, 52, 240, 137, 49, 64, 13, 6, 195, 13, 48, 74, 13, 0, 14, 139, 20, 1, 11, 1, 18, 195, 173, 20, 1, 14, 9, 13, 16,
-			141, 11, 195, 169, 19, 26, 195, 173, 20, 5, 20, 20, 5, 11, 13, 16, 141, 19, 26, 195, 161, 13, 195, 173, 20, 15, 20, 20, 1, 11,
-			13, 19, 66, 32, 16, 107, 108, 23, 49, 109, 55, 12, 0, 13, 81, 107, 101, 108, 108, 32, 14, 139, 11, 195, 169, 19, 26, 195, 173, 20,
-			5, 14, 9, 13, 9, 134, 195, 169, 18, 20, 5, 4, 13, 6, 194, 32, 16, 72, 8, 0, 20, 67, 24, 83, 0, 83, 109, 55, 10, 6,
-			15, 52, 114, 0, 13, 81, 114, 195, 161, 32, 30, 67, 24, 83, 0, 83, 109, 55, 23, 108, 6, 15, 91, 39, 52, 71, 108, 50, 0, 13,
-			82, 97, 32, 115, 111, 114, 98, 97, 110, 32, 15, 140, 5, 12, 8, 195, 161, 18, 195, 173, 20, 1, 14, 9, 13, 30, 67, 24, 83, 0,
-			83, 109, 55, 23, 108, 23, 55, 109, 84, 109, 81, 118, 0, 13, 82, 97, 32, 108, 101, 118, 101, 103, 197, 145, 32, 15, 140, 2, 9, 26,
-			20, 15, 19, 195, 173, 20, 1, 14, 9, 13, 6, 195, 32, 19, 0, 13, 6, 195, 24, 83, 0, 13, 0, 23, 68, 80, 84, 218, 36, 47,
-			109, 89, 37, 23, 65, 108, 57, 72, 0, 13, 81, 109, 97, 106, 100, 32, 46, 12, 19, 26, 195, 161, 26, 1, 12, 195, 169, 11, 15, 20,
-			89, 114, 88, 108, 55, 113, 49, 39, 47, 23, 84, 109, 89, 112, 47, 109, 50, 109, 0, 13, 81, 118, 101, 115, 122, 195, 173, 116, 101, 110,
-			101, 32, 9, 198, 77, 163, 205, 8, 21, 0, 20, 0, 8, 197, 52, 243, 132, 60, 176, 13, 8, 197, 28, 243, 132, 60, 176, 13, 6, 195,
-			32, 21, 0, 13, 6, 195, 24, 80, 146, 20, 0, 33, 74, 80, 20, 1, 77, 165, 1, 48, 21, 15, 16, 47, 108, 48, 108, 89, 47, 108,
-			55, 108, 47, 39, 72, 23, 37, 91, 0, 13, 81, 105, 115, 32, 18, 143, 11, 195, 169, 14, 25, 19, 26, 5, 18, 195, 173, 20, 5, 14,
-			9, 13, 12, 137, 16, 195, 169, 14, 20, 5, 11, 9, 7, 22, 11, 4, 195, 161, 19, 26, 114, 89, 0, 42, 42, 7, 132, 197, 145, 19,
-			26, 20, 7, 132, 195, 161, 16, 18, 20, 0, 10, 135, 6, 5, 11, 195, 188, 4, 20, 13, 10, 199, 88, 84, 218, 80, 85, 20, 20, 13,
-			11, 136, 22, 195, 161, 12, 20, 1, 14, 1, 13, 36, 71, 88, 84, 218, 80, 85, 20, 20, 84, 109, 89, 47, 109, 47, 12, 109, 23, 113,
-			55, 109, 47, 113, 47, 0, 13, 81, 195, 169, 108, 101, 116, 195, 169, 116, 32, 10, 135, 4, 5, 18, 195, 188, 12, 20, 13, 10, 135, 13,
-			5, 18, 195, 188, 12, 20, 13, 6, 195, 13, 48, 80, 13, 9, 134, 20, 197, 177, 14, 9, 11, 13, 11, 67, 80, 18, 128, 47, 108, 57,
-			0, 42, 42, 0, 10, 135, 195, 182, 22, 5, 26, 9, 11, 13, 20, 145, 195, 182, 19, 19, 26, 16, 15, 14, 20, 15, 19, 195, 173, 20,
-			1, 14, 9, 13, 19, 68, 56, 147, 131, 76, 50, 37, 50, 76, 23, 37, 91, 0, 13, 81, 105, 115, 32, 14, 139, 195, 161, 12, 20, 1,
-			12, 195, 161, 14, 15, 19, 13, 9, 134, 21, 20, 3, 195, 161, 14, 13, 7, 196, 76, 244, 130, 4, 13, 7, 196, 56, 147, 131, 76, 13,
-			0, 22, 69, 20, 209, 76, 80, 80, 109, 65, 109, 55, 47, 109, 23, 49, 37, 0, 13, 81, 107, 105, 32, 51, 73, 77, 161, 82, 88, 86,
-			133, 80, 82, 192, 89, 109, 52, 84, 109, 88, 109, 47, 109, 49, 23, 48, 114, 57, 114, 88, 107, 108, 47, 50, 108, 49, 0, 13, 81, 112,
-			195, 161, 108, 121, 195, 161, 122, 104, 97, 116, 110, 97, 107, 32, 15, 140, 19, 26, 195, 161, 26, 1, 12, 195, 169, 11, 15, 19, 13, 12,
-			137, 11, 9, 4, 5, 18, 195, 188, 12, 20, 13, 8, 197, 60, 193, 1, 56, 144, 13, 9, 134, 14, 195, 169, 26, 22, 5, 13, 8, 197,
-			60, 193, 1, 56, 144, 13, 6, 195, 24, 83, 142, 13, 8, 133, 3, 195, 169, 12, 20, 13, 0, 7, 132, 6, 9, 195, 186, 13, 15, 5,
-			95, 48, 77, 49, 15, 109, 88, 52, 109, 72, 37, 49, 0, 0, 6, 195, 72, 83, 132, 13, 10, 135, 13, 5, 19, 195, 169, 12, 20, 13,
-			15, 140, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 18, 1, 13, 10, 135, 13, 5, 19, 195, 169, 12, 20, 13, 6, 195, 52, 243, 132,
-			13, 14, 67, 29, 51, 64, 81, 113, 109, 91, 109, 65, 0, 42, 42, 0, 11, 136, 11, 195, 188, 20, 25, 195, 188, 20, 13, 14, 139, 11,
-			195, 182, 12, 20, 195, 182, 26, 20, 5, 11, 13, 7, 196, 88, 83, 5, 52, 13, 7, 196, 29, 32, 77, 52, 13, 0, 25, 67, 25, 85,
-			0, 83, 40, 47, 10, 6, 15, 52, 108, 57, 47, 108, 0, 13, 81, 114, 97, 106, 116, 97, 32, 6, 195, 25, 85, 0, 13, 0, 40, 70,
-			29, 144, 75, 72, 19, 128, 79, 108, 49, 52, 108, 50, 23, 55, 109, 89, 23, 113, 55, 113, 50, 49, 0, 13, 82, 108, 101, 115, 122, 32,
-			195, 169, 108, 195, 169, 110, 107, 32, 12, 137, 3, 19, 1, 16, 1, 4, 195, 169, 11, 13, 13, 138, 22, 1, 12, 1, 13, 9, 18, 197,
-			145, 12, 13, 9, 134, 195, 169, 16, 195, 188, 12, 13, 0, 17, 142, 2, 9, 26, 15, 14, 25, 195, 173, 20, 195, 169, 11, 15, 11, 13,
-			6, 195, 8, 83, 128, 72, 0, 36, 11, 6, 5, 10, 12, 5, 19, 26, 20, 197, 145, 11, 83, 109, 57, 55, 109, 89, 47, 118, 49, 23,
-			83, 109, 55, 113, 0, 13, 81, 102, 101, 108, 195, 169, 32, 16, 141, 8, 1, 14, 7, 19, 195, 186, 12, 25, 15, 26, 22, 1, 13, 24,
-			67, 32, 19, 135, 107, 108, 50, 81, 15, 65, 37, 108, 47, 12, 0, 13, 81, 109, 105, 97, 116, 116, 32, 7, 196, 40, 83, 5, 80, 13,
-			7, 196, 24, 83, 5, 48, 13, 6, 195, 32, 19, 135, 13, 0, 9, 134, 11, 195, 169, 18, 197, 145, 13, 42, 6, 12, 195, 169, 22, 197,
-			145, 55, 113, 84, 118, 107, 108, 91, 39, 50, 55, 115, 91, 114, 81, 39, 47, 0, 13, 81, 104, 97, 115, 111, 110, 108, 195, 179, 115, 195,
-			161, 103, 111, 116, 32, 15, 140, 6, 5, 12, 11, 5, 18, 195, 188, 12, 20, 5, 11, 13, 9, 134, 12, 195, 169, 22, 197, 145, 13, 8,
-			197, 24, 243, 148, 61, 48, 13, 10, 135, 10, 1, 14, 21, 195, 161, 18, 20, 0, 15, 140, 8, 1, 10, 12, 195, 169, 11, 20, 1, 12,
-			1, 14, 13, 17, 142, 11, 195, 169, 19, 26, 195, 188, 12, 195, 169, 11, 11, 5, 12, 13, 0, 6, 195, 88, 84, 128, 13, 39, 12, 2,
-			15, 14, 25, 15, 12, 195, 173, 20, 1, 14, 9, 71, 39, 67, 39, 55, 112, 47, 108, 50, 37, 23, 52, 108, 57, 47, 108, 0, 13, 81,
-			114, 97, 106, 116, 97, 32, 0, 11, 136, 8, 9, 2, 195, 161, 11, 1, 20, 13, 14, 139, 19, 26, 5, 18, 5, 20, 14, 195, 169, 14,
-			11, 13, 6, 195, 32, 20, 131, 13, 0, 9, 134, 14, 195, 161, 12, 1, 13, 13, 45, 73, 24, 242, 207, 104, 21, 15, 76, 19, 128, 83,
-			39, 49, 39, 88, 108, 47, 39, 91, 108, 50, 23, 65, 109, 81, 89, 117, 50, 37, 49, 0, 13, 81, 109, 101, 103, 115, 122, 197, 177, 110,
-			105, 107, 32, 16, 141, 13, 5, 7, 19, 26, 195, 179, 12, 1, 12, 20, 1, 20, 13, 11, 136, 195, 161, 12, 12, 20, 21, 14, 11, 13,
-			6, 195, 8, 83, 142, 13, 8, 133, 19, 195, 173, 14, 20, 13, 0, 17, 142, 13, 5, 7, 1, 12, 11, 15, 20, 195, 161, 19, 195, 161,
-			20, 13, 17, 142, 13, 5, 3, 8, 1, 14, 9, 26, 13, 21, 19, 195, 161, 20, 13, 71, 6, 195, 161, 12, 20, 1, 12, 114, 55, 47,
-			108, 55, 10, 6, 15, 49, 112, 50, 114, 55, 47, 10, 6, 15, 89, 39, 55, 81, 114, 55, 47, 108, 47, 114, 91, 39, 49, 108, 47, 0,
-			13, 82, 107, 195, 173, 110, 195, 161, 108, 116, 32, 115, 122, 111, 108, 103, 195, 161, 108, 116, 97, 116, 195, 161, 115, 111, 107, 97, 116, 32,
-			9, 134, 13, 5, 19, 195, 169, 12, 13, 9, 134, 195, 161, 12, 20, 1, 12, 13, 13, 138, 22, 1, 18, 195, 161, 26, 19, 12, 1, 20,
-			13, 12, 137, 5, 7, 25, 195, 188, 20, 20, 5, 19, 13, 9, 195, 28, 68, 0, 102, 17, 42, 42, 14, 67, 28, 68, 0, 75, 112, 72,
-			112, 48, 112, 0, 42, 42, 0, 9, 134, 195, 173, 18, 20, 1, 11, 13, 6, 195, 32, 18, 148, 13, 0, 34, 68, 8, 83, 142, 20, 71,
-			109, 50, 12, 109, 23, 116, 57, 72, 39, 50, 91, 114, 81, 0, 13, 81, 195, 186, 106, 100, 111, 110, 115, 195, 161, 103, 32, 18, 143, 6,
-			195, 161, 10, 4, 1, 12, 15, 13, 13, 5, 14, 20, 5, 19, 13, 28, 68, 8, 83, 142, 20, 71, 109, 50, 12, 109, 15, 71, 37, 89,
-			47, 39, 91, 0, 13, 81, 98, 105, 122, 116, 111, 115, 32, 11, 200, 32, 21, 1, 48, 243, 77, 4, 192, 13, 7, 196, 60, 227, 129, 56,
-			13, 16, 141, 11, 195, 188, 12, 195, 182, 14, 2, 195, 182, 26, 197, 145, 13, 15, 140, 6, 5, 12, 20, 195, 169, 20, 5, 12, 5, 9,
-			20, 13, 7, 196, 8, 83, 142, 20, 13, 10, 135, 20, 195, 182, 18, 20, 5, 11, 13, 9, 198, 28, 243, 132, 60, 197, 0, 13, 7, 196,
-			36, 227, 133, 56, 13, 0, 12, 3, 226, 132, 162, 84, 113, 72, 57, 109, 79, 0, 12, 201, 81, 83, 1, 40, 67, 206, 61, 48, 64, 13,
-			22, 6, 195, 173, 18, 20, 1, 13, 112, 52, 47, 108, 65, 23, 55, 109, 0, 13, 81, 108, 101, 32, 12, 201, 81, 83, 1, 40, 67, 206,
-			61, 48, 64, 13, 12, 137, 20, 195, 182, 18, 20, 195, 169, 14, 20, 13, 9, 134, 195, 173, 18, 20, 1, 13, 13, 11, 136, 22, 195, 161,
-			7, 25, 195, 179, 11, 13, 12, 137, 20, 195, 182, 18, 20, 195, 169, 14, 20, 13, 0, 7, 66, 17, 160, 120, 113, 0, 36, 70, 64, 84,
-			131, 44, 244, 128, 48, 109, 52, 119, 49, 39, 52, 15, 10, 49, 113, 89, 111, 55, 47, 0, 13, 81, 107, 195, 169, 115, 122, 195, 188, 108,
-			116, 32, 0, 6, 195, 8, 83, 148, 13, 0, 33, 7, 22, 195, 161, 7, 10, 21, 11, 84, 114, 81, 57, 40, 49, 10, 6, 15, 90, 109,
-			71, 52, 109, 0, 13, 81, 122, 115, 101, 98, 114, 101, 32, 7, 196, 4, 227, 153, 36, 13, 14, 139, 22, 195, 169, 4, 5, 11, 5, 26,
-			20, 5, 11, 13, 6, 195, 64, 20, 139, 13, 0, 8, 197, 4, 210, 65, 81, 64, 13, 36, 69, 24, 83, 5, 49, 64, 83, 109, 55, 109,
-			55, 47, 23, 84, 39, 55, 50, 108, 23, 65, 109, 81, 0, 13, 82, 118, 111, 108, 110, 97, 32, 109, 101, 103, 32, 17, 142, 11, 5, 26,
-			4, 5, 13, 195, 169, 14, 25, 5, 26, 20, 5, 13, 20, 145, 9, 14, 6, 18, 1, 19, 20, 18, 21, 11, 20, 195, 186, 18, 195, 161,
-			20, 13, 16, 141, 8, 1, 19, 26, 14, 195, 161, 12, 1, 20, 20, 1, 12, 13, 20, 145, 19, 26, 195, 161, 12, 12, 195, 161, 19, 8,
-			5, 12, 25, 5, 11, 5, 20, 13, 8, 197, 24, 83, 5, 49, 64, 13, 0, 24, 6, 14, 195, 161, 12, 1, 4, 50, 114, 55, 108, 72,
-			23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 6, 195, 56, 85, 133, 13, 0, 30, 67, 24, 83, 148, 83, 109, 50, 47, 23, 108, 6,
-			15, 107, 109, 57, 109, 47, 0, 13, 82, 97, 32, 104, 101, 108, 121, 101, 116, 32, 6, 195, 24, 83, 148, 13, 12, 201, 32, 19, 12, 5,
-			68, 218, 61, 69, 0, 13, 10, 199, 24, 243, 148, 61, 48, 66, 8, 13, 23, 67, 96, 149, 128, 47, 37, 88, 109, 50, 50, 113, 79, 12,
-			109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 12, 137, 16, 18, 15, 2, 12, 195, 169, 13, 1, 13, 14, 139, 11, 195, 169, 18, 4, 5,
-			26, 20, 195, 169, 11, 13, 0, 11, 136, 20, 5, 14, 14, 9, 195, 188, 11, 13, 31, 5, 14, 25, 195, 186, 12, 67, 116, 55, 15, 89,
-			109, 52, 109, 48, 113, 47, 0, 13, 81, 115, 122, 101, 114, 101, 112, 195, 169, 116, 32, 13, 138, 11, 9, 20, 195, 182, 12, 20, 5, 14,
-			9, 13, 8, 197, 49, 149, 75, 5, 64, 13, 8, 133, 14, 25, 195, 186, 12, 13, 8, 133, 8, 195, 186, 19, 20, 13, 0, 5, 194, 20,
-			144, 72, 21, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 47, 0, 44, 13, 81, 116, 32, 23, 66, 12, 208, 119, 109, 50,
-			47, 37, 65, 113, 47, 109, 52, 109, 91, 0, 44, 13, 81, 101, 115, 32, 24, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52,
-			67, 37, 0, 44, 13, 81, 110, 121, 105, 32, 28, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 67, 37, 52, 109, 0, 44,
-			13, 81, 110, 121, 105, 114, 101, 32, 23, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 52, 109, 0, 44, 13, 81, 114, 101,
-			32, 16, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 0, 13, 0, 0, 17, 68, 77, 165, 147, 104, 101, 115, 122, 118, 195,
-			169, 101, 115, 122, 0, 29, 39, 68, 20, 195, 5, 56, 109, 55, 12, 109, 50, 23, 55, 113, 47, 52, 109, 107, 39, 88, 39, 47, 12, 0,
-			13, 81, 108, 195, 169, 116, 114, 101, 104, 111, 122, 111, 116, 116, 32, 47, 68, 20, 195, 5, 56, 109, 55, 12, 109, 50, 10, 6, 15, 107,
-			37, 52, 72, 109, 47, 12, 113, 49, 10, 6, 15, 65, 109, 81, 0, 13, 82, 104, 105, 114, 100, 101, 116, 116, 195, 169, 107, 32, 109, 101,
-			103, 32, 47, 11, 19, 26, 195, 161, 13, 15, 12, 14, 21, 14, 11, 89, 114, 65, 39, 55, 50, 40, 50, 49, 23, 49, 109, 55, 12, 23,
-			108, 88, 88, 108, 55, 0, 13, 82, 107, 101, 108, 108, 32, 97, 122, 122, 97, 108, 32, 7, 196, 88, 85, 9, 44, 13, 26, 70, 24, 150,
-			133, 80, 81, 0, 83, 37, 88, 109, 47, 109, 72, 15, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 7, 196, 20, 195, 5, 56, 13, 7,
-			196, 32, 21, 14, 4, 13, 7, 196, 4, 130, 15, 104, 13, 7, 196, 21, 49, 84, 80, 13, 7, 196, 20, 195, 5, 56, 13, 0, 21, 69,
-			80, 84, 218, 36, 176, 47, 109, 89, 37, 49, 23, 49, 37, 0, 13, 81, 107, 105, 32, 8, 197, 28, 243, 132, 60, 208, 13, 8, 197, 52,
-			243, 132, 60, 208, 13, 8, 197, 80, 84, 218, 36, 176, 13, 0, 9, 198, 65, 33, 77, 36, 84, 148, 13, 6, 195, 48, 22, 129, 13, 9,
-			134, 14, 25, 195, 173, 12, 20, 13, 0, 17, 142, 2, 5, 6, 5, 10, 5, 26, 195, 169, 19, 195, 169, 9, 7, 13, 9, 134, 18, 195,
-			161, 10, 21, 11, 13, 10, 135, 14, 195, 182, 22, 5, 12, 20, 13, 10, 199, 24, 243, 25, 80, 21, 10, 4, 13, 0, 11, 200, 8, 85,
-			133, 104, 85, 20, 20, 176, 13, 9, 134, 20, 5, 12, 195, 169, 14, 20, 0, 8, 197, 80, 148, 218, 80, 16, 13, 8, 197, 32, 148, 218,
-			36, 176, 13, 10, 6, 95, 35, 45, 9, 11, 9, 37, 0, 0, 14, 139, 4, 195, 182, 14, 20, 195, 182, 20, 20, 5, 13, 13, 0, 37,
-			71, 20, 118, 69, 80, 83, 69, 56, 109, 79, 109, 47, 109, 65, 109, 50, 23, 84, 113, 81, 88, 109, 47, 12, 0, 13, 81, 118, 195, 169,
-			103, 122, 101, 116, 116, 32, 14, 203, 44, 243, 80, 5, 66, 66, 36, 194, 83, 20, 176, 13, 10, 199, 24, 83, 5, 41, 65, 84, 80, 13,
-			11, 136, 22, 195, 169, 4, 5, 12, 5, 13, 13, 0, 14, 139, 2, 5, 14, 25, 15, 13, 195, 161, 19, 15, 11, 13, 7, 196, 32, 83,
-			25, 20, 13, 10, 135, 20, 195, 161, 18, 10, 21, 11, 13, 0, 45, 13, 5, 7, 25, 5, 19, 195, 188, 12, 5, 20, 20, 5, 12, 109,
-			79, 12, 109, 91, 111, 55, 109, 47, 12, 109, 55, 23, 89, 109, 65, 71, 109, 50, 0, 13, 81, 115, 122, 101, 109, 98, 101, 110, 32, 14,
-			139, 6, 5, 12, 195, 188, 12, 5, 20, 195, 169, 14, 13, 10, 135, 19, 26, 195, 169, 12, 5, 14, 13, 10, 6, 95, 35, 45, 9, 11,
-			5, 109, 0, 0, 18, 143, 9, 14, 6, 18, 1, 19, 20, 18, 21, 11, 20, 195, 186, 18, 1, 13, 12, 137, 19, 26, 195, 161, 14, 4,
-			195, 169, 11, 13, 0, 9, 198, 24, 243, 148, 61, 48, 75, 13, 13, 138, 11, 195, 182, 26, 195, 182, 12, 20, 5, 11, 13, 12, 137, 5,
-			19, 20, 195, 169, 10, 195, 169, 14, 22, 9, 134, 13, 195, 161, 10, 21, 19, 20, 0, 14, 139, 4, 195, 182, 14, 20, 195, 182, 20, 20,
-			5, 11, 13, 0, 12, 137, 5, 12, 14, 195, 182, 11, 195, 169, 20, 13, 38, 6, 195, 182, 18, 195, 182, 13, 110, 52, 110, 65, 23, 108,
-			6, 23, 89, 114, 65, 39, 65, 52, 108, 0, 13, 82, 97, 32, 115, 122, 195, 161, 109, 111, 109, 114, 97, 32, 17, 142, 6, 9, 14, 1,
-			14, 19, 26, 195, 173, 18, 15, 26, 22, 1, 13, 12, 201, 8, 150, 143, 57, 149, 1, 48, 19, 128, 13, 9, 134, 20, 21, 4, 14, 195,
-			161, 13, 11, 136, 22, 9, 19, 19, 26, 195, 188, 11, 13, 10, 6, 95, 35, 45, 9, 11, 1, 108, 0, 0, 16, 141, 13, 197, 177, 11,
-			195, 182, 4, 20, 5, 20, 20, 5, 11, 13, 15, 140, 7, 195, 169, 16, 5, 12, 195, 169, 19, 8, 5, 26, 13, 9, 198, 44, 86, 132,
-			40, 83, 128, 13, 15, 3, 95, 50, 17, 49, 109, 47, 12, 109, 72, 37, 49, 109, 0, 0, 15, 140, 22, 195, 161, 12, 1, 19, 26, 20,
-			195, 169, 11, 1, 13, 14, 139, 11, 195, 188, 12, 4, 195, 182, 20, 20, 5, 20, 13, 6, 195, 60, 64, 64, 13, 14, 139, 18, 5, 14,
-			4, 5, 12, 5, 20, 195, 169, 20, 13, 10, 199, 44, 20, 3, 76, 243, 1, 80, 13, 6, 195, 60, 64, 64, 13, 0, 0, 22, 3, 226,
-			128, 166, 10, 48, 2, 39, 50, 47, 48, 2, 39, 50, 47, 48, 2, 39, 50, 47, 0, 9, 134, 22, 5, 14, 14, 195, 169, 13, 16, 141,
-			1, 12, 1, 16, 195, 182, 20, 12, 5, 20, 195, 169, 20, 13, 6, 195, 20, 165, 0, 13, 8, 133, 2, 195, 186, 10, 20, 13, 0, 9,
-			198, 84, 69, 129, 72, 244, 192, 13, 0, 14, 139, 5, 13, 12, 195, 169, 11, 5, 26, 20, 5, 20, 13, 10, 199, 28, 243, 132, 60, 194,
-			149, 44, 13, 0, 31, 11, 6, 18, 9, 19, 19, 195, 173, 20, 195, 169, 19, 83, 52, 37, 91, 12, 112, 47, 113, 91, 23, 37, 91, 0,
-			13, 81, 105, 115, 32, 11, 5, 95, 35, 45, 5, 9, 109, 37, 0, 21, 13, 3, 95, 49, 15, 109, 79, 12, 109, 72, 37, 49, 0, 0,
-			0, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 118, 97, 108, 0, 44, 29, 42, 81, 118, 97, 108, 32, 29, 67,
-			57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 116, 195, 179, 108, 0, 44, 29, 42, 81, 116, 195, 179, 108, 32, 23, 67, 57,
-			97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 116, 0, 44, 29, 42, 81, 116, 32, 23, 67, 57, 97, 1, 101, 110, 118, 195, 169,
-			100, 195, 169, 195, 161, 115, 0, 44, 29, 42, 81, 115, 32, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 110, 97,
-			107, 0, 44, 29, 42, 81, 110, 97, 107, 32, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 104, 111, 122, 0, 44,
-			29, 42, 81, 104, 111, 122, 32, 29, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 195, 179, 108, 0, 44, 29, 42,
-			81, 98, 195, 179, 108, 32, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 97, 110, 0, 44, 29, 42, 81, 98,
-			97, 110, 32, 25, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 97, 0, 44, 29, 42, 81, 98, 97, 32, 27, 66,
-			21, 160, 109, 88, 10, 6, 15, 84, 108, 55, 108, 65, 37, 47, 0, 13, 81, 118, 97, 108, 97, 109, 105, 116, 32, 10, 135, 197, 145, 18,
-			14, 1, 7, 25, 13, 15, 66, 21, 160, 109, 88, 23, 108, 88, 0, 13, 81, 97, 122, 32, 35, 66, 21, 160, 109, 88, 10, 6, 15, 108,
-			6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 13, 82, 97, 32, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 5, 194, 21, 160, 13,
-			15, 67, 57, 97, 1, 109, 50, 84, 113, 72, 113, 108, 0, 42, 42, 15, 8, 95, 35, 45, 195, 169, 8, 5, 26, 113, 107, 109, 88, 0,
-			16, 3, 95, 51, 17, 107, 108, 52, 10, 65, 108, 72, 37, 49, 108, 0, 0, 10, 3, 226, 130, 172, 109, 40, 52, 39, 0, 36, 71, 72,
-			83, 132, 77, 161, 82, 80, 52, 109, 50, 119, 109, 52, 47, 10, 6, 15, 49, 113, 89, 112, 47, 0, 13, 81, 107, 195, 169, 115, 122, 195,
-			173, 116, 32, 41, 12, 22, 5, 26, 5, 20, 197, 145, 19, 195, 169, 7, 9, 84, 109, 88, 109, 47, 118, 91, 113, 81, 37, 23, 47, 108,
-			81, 57, 108, 37, 0, 13, 81, 116, 97, 103, 106, 97, 105, 32, 17, 142, 19, 26, 195, 161, 13, 195, 173, 20, 8, 1, 20, 21, 14, 11,
-			13, 9, 198, 24, 150, 133, 80, 225, 75, 13, 6, 195, 60, 179, 212, 13, 10, 199, 72, 83, 132, 77, 161, 82, 80, 13, 0, 10, 135, 12,
-			195, 161, 14, 3, 15, 11, 13, 7, 196, 20, 227, 153, 36, 13, 6, 131, 10, 195, 179, 13, 0, 19, 67, 21, 165, 0, 109, 89, 47, 10,
-			6, 15, 108, 88, 0, 13, 81, 97, 122, 32, 21, 67, 21, 165, 0, 109, 89, 47, 23, 49, 109, 55, 12, 0, 13, 81, 107, 101, 108, 108,
-			32, 8, 197, 24, 244, 137, 57, 64, 13, 12, 137, 2, 1, 10, 15, 11, 18, 195, 179, 12, 13, 8, 197, 37, 51, 69, 73, 64, 13, 6,
-			195, 21, 165, 0, 13, 0, 13, 138, 22, 9, 12, 195, 161, 7, 18, 195, 179, 12, 13, 9, 198, 77, 161, 77, 24, 241, 192, 13, 6, 195,
-			64, 144, 201, 13, 12, 137, 13, 197, 177, 11, 195, 182, 4, 9, 11, 13, 9, 3, 95, 49, 5, 109, 79, 12, 0, 0, 14, 139, 22, 195,
-			169, 4, 5, 12, 5, 13, 13, 5, 12, 13, 12, 201, 61, 4, 133, 56, 68, 218, 21, 37, 0, 13, 12, 137, 13, 21, 14, 11, 195, 161,
-			8, 15, 26, 13, 13, 138, 5, 13, 12, 195, 169, 11, 19, 26, 9, 11, 13, 11, 136, 19, 26, 5, 13, 195, 169, 12, 25, 13, 6, 195,
-			80, 17, 192, 13, 0, 10, 135, 195, 188, 12, 195, 188, 14, 11, 13, 14, 3, 95, 50, 15, 49, 109, 47, 12, 109, 72, 37, 49, 0, 0,
-			8, 197, 56, 83, 90, 21, 64, 13, 9, 134, 18, 195, 161, 26, 14, 9, 13, 13, 138, 22, 195, 169, 12, 5, 13, 195, 169, 14, 25, 13,
-			13, 138, 8, 1, 19, 26, 14, 195, 161, 12, 14, 9, 13, 0, 13, 138, 8, 15, 26, 1, 4, 195, 169, 11, 15, 20, 13, 9, 3, 95,
-			50, 1, 49, 113, 47, 0, 0, 20, 67, 80, 20, 148, 47, 108, 52, 47, 23, 39, 47, 12, 0, 13, 81, 111, 116, 116, 32, 15, 140, 12,
-			5, 7, 5, 14, 5, 18, 195, 161, 12, 14, 9, 13, 9, 134, 10, 195, 161, 18, 195, 179, 13, 14, 139, 10, 195, 161, 18, 1, 4, 195,
-			169, 11, 15, 20, 13, 6, 195, 80, 20, 148, 13, 6, 195, 56, 82, 192, 13, 0, 22, 68, 40, 83, 26, 36, 57, 109, 55, 88, 37, 10,
-			6, 15, 108, 88, 0, 13, 81, 97, 122, 32, 7, 196, 88, 85, 14, 36, 13, 7, 196, 40, 83, 26, 36, 13, 10, 135, 22, 5, 12, 195,
-			188, 14, 11, 13, 6, 195, 88, 84, 147, 13, 0, 8, 197, 81, 81, 20, 60, 176, 76, 8, 197, 88, 19, 142, 4, 176, 13, 0, 9, 198,
-			85, 64, 90, 56, 18, 192, 13, 9, 198, 8, 19, 139, 56, 18, 192, 13, 12, 201, 88, 148, 218, 60, 230, 85, 48, 224, 75, 13, 31, 70,
-			72, 144, 68, 56, 18, 192, 51, 37, 108, 72, 50, 108, 49, 23, 84, 37, 89, 12, 108, 0, 13, 81, 118, 105, 115, 115, 122, 97, 32, 9,
-			198, 5, 163, 203, 56, 18, 192, 13, 9, 198, 32, 19, 135, 104, 146, 192, 13, 9, 198, 52, 243, 132, 41, 82, 192, 13, 9, 198, 32, 19,
-			135, 104, 146, 192, 13, 9, 134, 6, 195, 161, 10, 12, 20, 13, 10, 3, 95, 50, 5, 49, 109, 47, 12, 0, 0, 26, 5, 8, 195, 186,
-			19, 26, 107, 116, 89, 23, 113, 84, 71, 109, 50, 0, 13, 81, 195, 169, 118, 98, 101, 110, 32, 15, 140, 11, 195, 182, 18, 195, 188, 12,
-			13, 195, 169, 14, 25, 13, 20, 145, 13, 5, 7, 6, 9, 7, 25, 5, 12, 195, 169, 19, 195, 169, 8, 5, 26, 13, 15, 140, 11, 9,
-			8, 1, 19, 26, 14, 195, 161, 12, 14, 9, 13, 14, 139, 2, 15, 18, 195, 173, 20, 195, 169, 11, 15, 20, 13, 11, 136, 19, 26, 195,
-			179, 12, 20, 1, 13, 13, 8, 133, 8, 195, 186, 19, 26, 13, 6, 195, 88, 84, 148, 13, 0, 42, 8, 2, 5, 3, 19, 195, 188, 12,
-			20, 71, 109, 76, 111, 55, 47, 23, 113, 52, 47, 113, 49, 113, 50, 109, 49, 0, 13, 81, 195, 169, 114, 116, 195, 169, 107, 195, 169, 110,
-			101, 107, 32, 12, 137, 10, 5, 12, 19, 26, 195, 179, 18, 1, 13, 11, 200, 24, 83, 9, 76, 209, 82, 56, 144, 13, 15, 3, 95, 51,
-			15, 107, 108, 52, 10, 65, 108, 72, 37, 49, 0, 11, 4, 95, 15, 18, 4, 109, 72, 37, 49, 0, 0, 8, 197, 81, 81, 14, 4, 176,
-			76, 13, 138, 11, 195, 182, 26, 16, 15, 14, 20, 10, 1, 13, 8, 197, 81, 81, 14, 4, 176, 13, 11, 136, 18, 5, 13, 195, 169, 12,
-			9, 11, 13, 0, 13, 66, 33, 80, 104, 117, 110, 0, 44, 29, 81, 110, 32, 29, 66, 37, 48, 37, 91, 23, 114, 55, 112, 80, 12, 114,
-			49, 0, 13, 81, 195, 161, 108, 108, 195, 173, 116, 106, 195, 161, 107, 32, 29, 66, 37, 48, 37, 91, 23, 84, 113, 81, 109, 88, 47, 113,
-			49, 0, 13, 81, 118, 195, 169, 103, 101, 122, 116, 195, 169, 107, 32, 40, 66, 37, 48, 37, 91, 23, 108, 55, 114, 47, 114, 65, 108, 89,
-			47, 39, 47, 12, 108, 0, 13, 81, 97, 108, 195, 161, 116, 195, 161, 109, 97, 115, 122, 116, 111, 116, 116, 97, 32, 28, 66, 37, 48, 37,
-			91, 23, 84, 37, 47, 108, 80, 12, 114, 49, 0, 13, 81, 118, 105, 116, 97, 116, 106, 195, 161, 107, 32, 27, 66, 37, 48, 37, 91, 23,
-			108, 55, 114, 112, 52, 47, 108, 0, 13, 81, 97, 108, 195, 161, 195, 173, 114, 116, 97, 32, 30, 66, 37, 48, 37, 91, 23, 65, 109, 81,
-			109, 65, 55, 112, 47, 37, 0, 13, 81, 109, 101, 103, 101, 109, 108, 195, 173, 116, 105, 32, 22, 66, 37, 48, 37, 91, 23, 65, 113, 52,
-			37, 49, 0, 13, 81, 109, 195, 169, 114, 105, 107, 32, 27, 66, 37, 48, 37, 91, 23, 47, 110, 34, 47, 113, 50, 47, 0, 13, 81, 116,
-			195, 182, 114, 116, 195, 169, 110, 116, 32, 25, 66, 37, 48, 37, 91, 23, 71, 109, 89, 113, 55, 47, 0, 13, 81, 98, 101, 115, 122, 195,
-			169, 108, 116, 32, 54, 66, 37, 48, 37, 91, 10, 6, 15, 55, 109, 107, 109, 47, 10, 6, 15, 76, 108, 47, 55, 108, 49, 39, 89, 47,
-			108, 47, 50, 37, 0, 13, 82, 108, 101, 104, 101, 116, 32, 99, 115, 97, 116, 108, 97, 107, 111, 122, 116, 97, 116, 110, 105, 32, 45, 66,
-			37, 48, 37, 91, 10, 6, 15, 55, 109, 107, 109, 47, 10, 6, 15, 71, 118, 84, 112, 47, 109, 50, 37, 0, 13, 82, 108, 101, 104, 101,
-			116, 32, 98, 197, 145, 118, 195, 173, 116, 101, 110, 105, 32, 45, 66, 37, 48, 37, 91, 10, 6, 15, 55, 109, 107, 109, 47, 10, 6, 15,
-			107, 108, 89, 50, 114, 55, 50, 37, 0, 13, 82, 108, 101, 104, 101, 116, 32, 104, 97, 115, 122, 110, 195, 161, 108, 110, 105, 32, 33, 66,
-			37, 48, 37, 91, 10, 6, 15, 47, 108, 55, 114, 55, 107, 108, 47, 115, 0, 13, 81, 116, 97, 108, 195, 161, 108, 104, 97, 116, 195, 179,
-			32, 31, 66, 37, 48, 37, 91, 10, 6, 15, 57, 109, 79, 109, 89, 47, 111, 49, 0, 13, 81, 106, 101, 103, 121, 101, 122, 116, 195, 188,
-			107, 32, 25, 66, 37, 48, 37, 91, 10, 6, 15, 84, 108, 50, 12, 108, 49, 0, 13, 81, 118, 97, 110, 110, 97, 107, 32, 36, 66, 37,
-			48, 37, 91, 10, 6, 15, 65, 109, 81, 65, 40, 47, 108, 80, 12, 114, 49, 0, 13, 81, 109, 101, 103, 109, 117, 116, 97, 116, 106, 195,
-			161, 107, 32, 40, 66, 37, 48, 37, 91, 10, 6, 15, 49, 37, 109, 81, 113, 89, 112, 47, 109, 47, 12, 109, 0, 13, 81, 107, 105, 101,
-			103, 195, 169, 115, 122, 195, 173, 116, 101, 116, 116, 101, 32, 37, 66, 37, 48, 37, 91, 10, 6, 15, 52, 109, 50, 72, 109, 55, 49, 109,
-			89, 47, 109, 49, 0, 13, 81, 114, 101, 110, 100, 101, 108, 107, 101, 122, 116, 101, 107, 32, 34, 66, 37, 48, 37, 91, 6, 15, 49, 110,
-			89, 110, 50, 107, 109, 47, 118, 0, 13, 81, 107, 195, 182, 115, 122, 195, 182, 110, 104, 101, 116, 197, 145, 32, 33, 66, 37, 48, 37, 91,
-			10, 6, 15, 112, 47, 113, 55, 107, 109, 47, 37, 49, 0, 13, 81, 195, 173, 116, 195, 169, 108, 104, 101, 116, 105, 107, 32, 38, 66, 37,
-			48, 37, 91, 10, 6, 15, 49, 39, 50, 119, 109, 50, 47, 52, 114, 55, 50, 37, 0, 13, 81, 107, 111, 110, 99, 101, 110, 116, 114, 195,
-			161, 108, 110, 105, 32, 22, 66, 37, 48, 37, 91, 10, 6, 15, 114, 52, 40, 55, 0, 13, 81, 195, 161, 114, 117, 108, 32, 23, 66, 37,
-			48, 37, 91, 10, 6, 15, 47, 37, 55, 39, 91, 0, 13, 81, 116, 105, 108, 111, 115, 32, 29, 66, 37, 48, 37, 91, 10, 6, 15, 111,
-			79, 109, 55, 47, 109, 49, 0, 13, 81, 195, 188, 103, 121, 101, 108, 116, 101, 107, 32, 22, 66, 37, 48, 37, 91, 10, 6, 55, 109, 50,
-			12, 109, 0, 13, 81, 108, 101, 110, 110, 101, 32, 35, 66, 37, 48, 37, 91, 10, 6, 15, 84, 114, 55, 108, 89, 47, 39, 47, 12, 108,
-			0, 13, 81, 118, 195, 161, 108, 97, 115, 122, 116, 111, 116, 116, 97, 32, 24, 66, 37, 48, 37, 91, 10, 6, 15, 55, 114, 88, 108, 72,
-			0, 13, 81, 108, 195, 161, 122, 97, 100, 32, 18, 66, 37, 48, 37, 91, 10, 6, 15, 113, 52, 0, 13, 81, 195, 169, 114, 32, 25, 66,
-			37, 48, 37, 91, 10, 6, 15, 107, 108, 47, 39, 47, 12, 0, 13, 81, 104, 97, 116, 111, 116, 116, 32, 32, 66, 37, 48, 37, 91, 10,
-			6, 15, 89, 111, 49, 91, 113, 81, 109, 91, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 32, 29, 66, 37, 48, 37,
-			91, 23, 89, 109, 52, 109, 47, 50, 113, 49, 0, 13, 81, 115, 122, 101, 114, 101, 116, 110, 195, 169, 107, 32, 39, 66, 37, 48, 37, 91,
-			23, 109, 79, 12, 111, 47, 65, 117, 49, 110, 72, 37, 49, 0, 13, 81, 101, 103, 121, 195, 188, 116, 116, 109, 197, 177, 107, 195, 182, 100,
-			105, 107, 32, 28, 66, 37, 48, 37, 91, 23, 57, 109, 55, 109, 88, 47, 113, 49, 0, 13, 81, 106, 101, 108, 101, 122, 116, 195, 169, 107,
-			32, 34, 66, 37, 48, 37, 91, 23, 89, 111, 49, 110, 91, 109, 71, 12, 109, 49, 0, 13, 81, 115, 122, 197, 177, 107, 195, 182, 115, 101,
-			98, 98, 101, 107, 32, 35, 66, 37, 48, 37, 91, 23, 49, 37, 57, 109, 55, 110, 55, 107, 109, 47, 118, 0, 13, 81, 107, 105, 106, 101,
-			108, 195, 182, 108, 104, 101, 116, 197, 145, 32, 34, 66, 37, 48, 37, 91, 23, 107, 108, 89, 50, 114, 55, 107, 108, 47, 115, 0, 13, 81,
-			104, 97, 115, 122, 110, 195, 161, 108, 104, 97, 116, 195, 179, 32, 36, 66, 37, 48, 37, 91, 23, 107, 108, 89, 50, 114, 55, 107, 108, 47,
-			115, 49, 0, 13, 81, 104, 97, 115, 122, 110, 195, 161, 108, 104, 97, 116, 195, 179, 107, 32, 35, 66, 37, 48, 37, 91, 23, 65, 109, 81,
-			89, 109, 52, 109, 89, 47, 113, 49, 0, 13, 81, 109, 101, 103, 115, 122, 101, 114, 101, 122, 116, 195, 169, 107, 32, 26, 66, 37, 48, 37,
-			91, 23, 55, 109, 55, 110, 84, 37, 49, 0, 13, 81, 108, 101, 108, 195, 182, 118, 105, 107, 32, 30, 66, 37, 48, 37, 91, 23, 47, 114,
-			65, 39, 81, 108, 80, 12, 108, 0, 13, 81, 116, 195, 161, 109, 111, 103, 97, 116, 106, 97, 32, 39, 66, 37, 48, 37, 91, 23, 109, 52,
-			109, 72, 65, 113, 67, 109, 88, 107, 109, 47, 37, 0, 13, 81, 101, 114, 101, 100, 109, 195, 169, 110, 121, 101, 122, 104, 101, 116, 105, 32,
-			23, 66, 37, 48, 37, 91, 23, 84, 39, 55, 47, 108, 49, 0, 13, 81, 118, 111, 108, 116, 97, 107, 32, 26, 66, 37, 48, 37, 91, 23,
-			49, 37, 72, 109, 52, 111, 55, 0, 13, 81, 107, 105, 100, 101, 114, 195, 188, 108, 32, 31, 66, 37, 48, 37, 91, 10, 6, 15, 83, 109,
-			55, 84, 109, 47, 107, 109, 47, 0, 13, 81, 102, 101, 108, 118, 101, 116, 104, 101, 116, 32, 42, 66, 37, 48, 37, 91, 23, 52, 109, 65,
-			113, 67, 49, 109, 72, 107, 109, 47, 111, 50, 49, 0, 13, 81, 114, 101, 109, 195, 169, 110, 121, 107, 101, 100, 104, 101, 116, 195, 188, 110,
-			107, 32, 18, 66, 37, 48, 37, 91, 23, 55, 109, 89, 0, 13, 81, 108, 101, 115, 122, 32, 30, 66, 37, 48, 37, 91, 23, 83, 109, 55,
-			65, 109, 52, 111, 55, 47, 0, 13, 81, 102, 101, 108, 109, 101, 114, 195, 188, 108, 116, 32, 38, 66, 37, 48, 37, 91, 23, 52, 114, 84,
-			37, 55, 114, 81, 112, 47, 39, 47, 12, 0, 13, 81, 114, 195, 161, 118, 105, 108, 195, 161, 103, 195, 173, 116, 111, 116, 116, 32, 67, 66,
-			37, 48, 37, 91, 23, 83, 37, 88, 109, 47, 107, 109, 47, 50, 109, 49, 23, 108, 6, 15, 79, 115, 79, 89, 109, 52, 109, 49, 113, 52,
-			47, 0, 13, 83, 102, 105, 122, 101, 116, 104, 101, 116, 110, 101, 107, 32, 97, 32, 103, 121, 195, 179, 103, 121, 115, 122, 101, 114, 101, 107,
-			195, 169, 114, 116, 32, 29, 66, 37, 48, 37, 91, 23, 47, 108, 52, 47, 108, 55, 65, 108, 88, 0, 13, 81, 116, 97, 114, 116, 97, 108,
-			109, 97, 122, 32, 24, 66, 37, 48, 37, 91, 23, 83, 39, 57, 50, 108, 49, 0, 13, 81, 102, 111, 108, 121, 110, 97, 107, 32, 21, 66,
-			37, 48, 37, 91, 23, 110, 52, 110, 65, 0, 13, 81, 195, 182, 114, 195, 182, 109, 32, 23, 66, 37, 48, 37, 91, 23, 71, 40, 49, 12,
-			108, 50, 0, 13, 81, 98, 117, 107, 107, 97, 110, 32, 29, 66, 37, 48, 37, 91, 23, 107, 37, 114, 67, 39, 55, 39, 65, 0, 13, 81,
-			104, 105, 195, 161, 110, 121, 111, 108, 111, 109, 32, 19, 66, 37, 48, 37, 91, 23, 55, 109, 47, 12, 0, 13, 81, 108, 101, 116, 116, 32,
-			19, 66, 37, 48, 37, 91, 23, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 36, 66, 37, 48, 37, 91, 23, 65, 113, 52, 91,
-			113, 49, 55, 118, 72, 37, 49, 0, 13, 81, 109, 195, 169, 114, 115, 195, 169, 107, 108, 197, 145, 100, 105, 107, 32, 33, 66, 37, 48, 37,
-			91, 23, 49, 112, 91, 113, 52, 107, 109, 47, 37, 49, 0, 13, 81, 107, 195, 173, 115, 195, 169, 114, 104, 101, 116, 105, 107, 32, 26, 66,
-			37, 48, 37, 91, 23, 49, 37, 84, 114, 52, 50, 37, 0, 13, 81, 107, 105, 118, 195, 161, 114, 110, 105, 32, 28, 66, 37, 48, 37, 91,
-			23, 83, 109, 57, 55, 118, 72, 37, 49, 0, 13, 81, 102, 101, 106, 108, 197, 145, 100, 105, 107, 32, 22, 66, 37, 48, 37, 91, 23, 84,
-			114, 55, 37, 49, 0, 13, 81, 118, 195, 161, 108, 105, 107, 32, 20, 66, 37, 48, 37, 91, 23, 83, 111, 81, 12, 0, 13, 81, 102, 195,
-			188, 103, 103, 32, 27, 66, 37, 48, 37, 91, 23, 84, 114, 52, 107, 108, 47, 115, 0, 13, 81, 118, 195, 161, 114, 104, 97, 116, 195, 179,
-			32, 25, 66, 37, 48, 37, 91, 23, 71, 109, 37, 49, 47, 108, 47, 0, 13, 81, 98, 101, 105, 107, 116, 97, 116, 32, 26, 66, 37, 48,
-			37, 91, 23, 65, 109, 50, 109, 49, 111, 55, 0, 13, 81, 109, 101, 110, 101, 107, 195, 188, 108, 32, 20, 66, 37, 48, 37, 91, 23, 52,
-			115, 55, 108, 0, 13, 81, 114, 195, 179, 108, 97, 32, 38, 66, 37, 48, 37, 91, 23, 49, 37, 109, 81, 113, 89, 112, 47, 109, 47, 12,
-			109, 0, 13, 81, 107, 105, 101, 103, 195, 169, 115, 122, 195, 173, 116, 101, 116, 116, 101, 32, 16, 66, 37, 48, 37, 91, 23, 108, 88, 6,
-			0, 13, 81, 97, 122, 32, 33, 66, 37, 48, 37, 91, 23, 65, 109, 81, 65, 108, 52, 108, 79, 12, 39, 50, 0, 13, 81, 109, 101, 103,
-			109, 97, 114, 97, 100, 106, 111, 110, 32, 36, 66, 37, 48, 37, 91, 23, 83, 109, 57, 55, 109, 89, 47, 109, 47, 12, 109, 49, 0, 13,
-			81, 102, 101, 106, 108, 101, 115, 122, 116, 101, 116, 116, 101, 107, 32, 31, 66, 37, 48, 37, 91, 15, 107, 6, 108, 57, 55, 108, 50, 72,
-			115, 49, 0, 13, 81, 104, 97, 106, 108, 97, 110, 100, 195, 179, 107, 32, 10, 135, 195, 186, 19, 26, 20, 1, 13, 13, 24, 66, 37, 48,
-			37, 91, 23, 40, 79, 108, 50, 108, 88, 0, 13, 81, 117, 103, 121, 97, 110, 97, 122, 32, 40, 66, 37, 48, 37, 91, 23, 49, 108, 47,
-			108, 89, 47, 52, 115, 83, 114, 107, 39, 88, 0, 13, 81, 107, 97, 116, 97, 115, 122, 116, 114, 195, 179, 102, 195, 161, 104, 111, 122, 32,
-			16, 141, 6, 5, 12, 8, 197, 145, 20, 1, 11, 1, 18, 195, 179, 13, 33, 66, 37, 48, 37, 91, 23, 83, 39, 81, 55, 108, 55, 49,
-			39, 88, 39, 65, 0, 13, 81, 102, 111, 103, 108, 97, 108, 107, 111, 122, 111, 109, 32, 36, 66, 37, 48, 37, 91, 23, 109, 55, 118, 83,
-			39, 52, 72, 40, 55, 107, 108, 47, 0, 13, 81, 101, 108, 197, 145, 102, 111, 114, 100, 117, 108, 104, 97, 116, 32, 37, 66, 37, 48, 37,
-			91, 23, 49, 113, 48, 88, 118, 72, 107, 109, 47, 50, 109, 49, 0, 13, 81, 107, 195, 169, 112, 122, 197, 145, 100, 104, 101, 116, 110, 101,
-			107, 32, 21, 66, 37, 48, 37, 91, 23, 55, 109, 107, 109, 47, 0, 13, 81, 108, 101, 104, 101, 116, 32, 25, 66, 37, 48, 37, 91, 23,
-			49, 109, 88, 109, 55, 47, 109, 0, 13, 81, 107, 101, 122, 101, 108, 116, 101, 32, 29, 66, 37, 48, 37, 91, 23, 89, 111, 55, 109, 47,
-			109, 47, 12, 0, 13, 81, 115, 122, 195, 188, 108, 101, 116, 101, 116, 116, 32, 80, 66, 37, 48, 37, 91, 23, 49, 37, 47, 110, 55, 47,
-			107, 109, 47, 12, 113, 49, 23, 84, 39, 55, 50, 108, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 49, 109, 47, 0, 13, 84, 107,
-			105, 116, 195, 182, 108, 116, 104, 101, 116, 116, 195, 169, 107, 32, 118, 111, 108, 110, 97, 32, 97, 32, 107, 195, 169, 114, 100, 197, 145, 195,
-			173, 118, 101, 107, 101, 116, 32, 36, 66, 37, 48, 37, 91, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 47, 0, 13, 82, 97, 32,
-			107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116, 32, 26, 66, 37, 48, 37, 91, 23, 83, 109, 50, 12, 114, 55, 12, 0, 13, 81,
-			102, 101, 110, 110, 195, 161, 108, 108, 32, 36, 66, 37, 48, 37, 91, 23, 109, 55, 118, 83, 39, 52, 72, 40, 55, 50, 108, 49, 0, 13,
-			81, 101, 108, 197, 145, 102, 111, 114, 100, 117, 108, 110, 97, 107, 32, 29, 66, 37, 48, 37, 91, 23, 83, 109, 55, 52, 108, 49, 47, 108,
-			65, 0, 13, 81, 102, 101, 108, 114, 97, 107, 116, 97, 109, 32, 35, 66, 37, 48, 37, 91, 15, 83, 109, 55, 109, 57, 47, 49, 109, 89,
-			47, 109, 65, 0, 13, 81, 102, 101, 108, 101, 106, 116, 107, 101, 122, 116, 101, 109, 32, 22, 66, 37, 48, 37, 91, 15, 52, 109, 76, 109,
-			81, 0, 13, 81, 114, 101, 99, 115, 101, 103, 32, 14, 139, 1, 11, 20, 9, 22, 195, 161, 12, 20, 1, 13, 13, 10, 135, 11, 5, 26,
-			195, 169, 2, 5, 13, 28, 66, 37, 48, 37, 91, 15, 84, 114, 55, 47, 39, 88, 37, 49, 0, 13, 81, 118, 195, 161, 108, 116, 111, 122,
-			105, 107, 32, 40, 66, 37, 48, 37, 91, 15, 49, 109, 55, 12, 15, 83, 37, 88, 109, 47, 50, 37, 111, 49, 0, 13, 82, 107, 101, 108,
-			108, 32, 102, 105, 122, 101, 116, 110, 105, 195, 188, 107, 32, 29, 66, 37, 48, 37, 91, 15, 109, 55, 37, 91, 65, 109, 52, 47, 109, 0,
-			13, 81, 101, 108, 105, 115, 109, 101, 114, 116, 101, 32, 23, 66, 37, 48, 37, 91, 10, 6, 15, 108, 49, 108, 47, 12, 0, 13, 81, 97,
-			107, 97, 100, 116, 32, 9, 198, 52, 20, 129, 16, 226, 64, 13, 9, 198, 44, 146, 149, 80, 226, 64, 13, 9, 198, 24, 150, 133, 80, 226,
-			64, 13, 9, 198, 52, 20, 129, 16, 226, 64, 13, 9, 198, 52, 243, 132, 80, 18, 192, 13, 9, 198, 36, 225, 21, 48, 226, 64, 13, 9,
-			134, 1, 2, 2, 195, 179, 12, 13, 5, 194, 37, 48, 13, 6, 195, 56, 82, 201, 13, 5, 194, 37, 48, 72, 0, 10, 199, 57, 147, 205,
-			61, 37, 76, 80, 13, 13, 138, 11, 195, 169, 16, 5, 26, 14, 195, 169, 11, 13, 49, 8, 3, 195, 169, 12, 15, 11, 18, 1, 119, 113,
-			55, 39, 49, 52, 108, 23, 107, 108, 89, 50, 114, 55, 107, 108, 47, 50, 114, 49, 0, 13, 81, 104, 97, 115, 122, 110, 195, 161, 108, 104,
-			97, 116, 110, 195, 161, 107, 32, 13, 138, 8, 1, 19, 26, 14, 195, 161, 12, 15, 11, 13, 0, 16, 141, 11, 9, 16, 18, 195, 179, 2,
-			195, 161, 12, 20, 1, 13, 13, 7, 196, 52, 20, 129, 16, 13, 9, 134, 20, 5, 18, 195, 169, 14, 13, 0, 13, 138, 20, 195, 182, 18,
-			20, 195, 169, 14, 14, 5, 13, 11, 136, 19, 26, 195, 179, 12, 20, 1, 11, 13, 13, 138, 8, 1, 19, 26, 14, 195, 161, 12, 15, 13,
-			13, 11, 135, 5, 12, 5, 10, 195, 169, 14, 20, 13, 0, 17, 142, 8, 1, 12, 12, 7, 1, 20, 195, 179, 11, 20, 195, 179, 12, 13,
-			9, 198, 21, 49, 84, 8, 83, 128, 13, 9, 198, 80, 83, 5, 24, 243, 128, 13, 14, 139, 6, 9, 7, 25, 5, 12, 13, 195, 169, 2,
-			5, 13, 10, 3, 95, 51, 5, 107, 114, 52, 65, 0, 0, 13, 138, 8, 197, 145, 2, 195, 182, 18, 195, 182, 7, 13, 28, 153, 1, 11,
-			1, 4, 195, 161, 12, 25, 13, 5, 14, 20, 5, 19, 195, 173, 20, 195, 169, 19, 195, 169, 8, 5, 26, 13, 11, 136, 5, 7, 25, 19,
-			195, 169, 7, 5, 13, 10, 199, 52, 20, 129, 17, 69, 78, 44, 13, 10, 199, 24, 244, 137, 57, 69, 78, 44, 13, 11, 136, 20, 195, 161,
-			18, 15, 12, 14, 9, 13, 0, 16, 141, 11, 9, 11, 195, 169, 18, 4, 5, 26, 14, 195, 169, 13, 13, 11, 136, 7, 25, 5, 14, 7,
-			195, 188, 12, 13, 8, 133, 20, 5, 22, 197, 145, 13, 0, 15, 140, 18, 5, 11, 12, 195, 161, 13, 3, 19, 195, 173, 11, 13, 8, 197,
-			80, 21, 129, 49, 144, 13, 0, 39, 6, 9, 19, 13, 195, 169, 20, 37, 91, 65, 113, 47, 10, 6, 15, 83, 109, 55, 65, 109, 52, 111,
-			55, 47, 0, 13, 81, 102, 101, 108, 109, 101, 114, 195, 188, 108, 116, 32, 22, 66, 20, 192, 109, 55, 23, 48, 113, 50, 89, 47, 0, 13,
-			81, 112, 195, 169, 110, 122, 116, 32, 27, 66, 20, 192, 109, 55, 23, 108, 6, 15, 83, 113, 52, 83, 37, 0, 13, 82, 97, 32, 102, 195,
-			169, 114, 102, 105, 32, 27, 66, 20, 192, 109, 55, 23, 65, 37, 50, 72, 109, 50, 49, 37, 0, 13, 81, 109, 105, 110, 100, 101, 110, 107,
-			105, 32, 25, 66, 20, 192, 109, 55, 10, 6, 15, 50, 109, 49, 47, 109, 49, 0, 13, 81, 110, 101, 107, 116, 101, 107, 32, 35, 66, 20,
-			192, 109, 55, 6, 23, 108, 6, 15, 52, 109, 50, 72, 118, 52, 110, 49, 0, 13, 82, 97, 32, 114, 101, 110, 100, 197, 145, 114, 195, 182,
-			107, 32, 30, 67, 25, 84, 129, 83, 40, 52, 108, 23, 72, 39, 55, 81, 39, 49, 108, 47, 0, 13, 81, 100, 111, 108, 103, 111, 107, 97,
-			116, 32, 30, 6, 9, 19, 13, 195, 169, 20, 37, 91, 65, 113, 47, 23, 109, 55, 109, 52, 109, 72, 0, 13, 81, 101, 108, 101, 114, 101,
-			100, 32, 6, 195, 25, 84, 129, 13, 14, 139, 22, 195, 161, 19, 195, 161, 18, 15, 12, 14, 9, 13, 5, 194, 20, 192, 13, 14, 66, 36,
-			64, 37, 72, 118, 91, 109, 71, 12, 0, 25, 9, 14, 3, 95, 54, 17, 107, 108, 47, 39, 72, 37, 49, 108, 0, 0, 15, 140, 5, 12,
-			12, 5, 14, 197, 145, 18, 9, 26, 14, 9, 13, 8, 133, 7, 18, 195, 179, 6, 13, 9, 3, 95, 50, 48, 107, 116, 89, 0, 0, 14,
-			139, 5, 12, 18, 5, 14, 4, 5, 26, 195, 169, 19, 13, 12, 137, 4, 15, 11, 20, 15, 18, 14, 197, 145, 13, 14, 139, 19, 5, 12,
-			5, 10, 20, 5, 26, 195, 169, 19, 13, 0, 13, 138, 14, 195, 169, 16, 19, 26, 5, 18, 197, 177, 13, 20, 145, 9, 14, 4, 195, 173,
-			20, 22, 195, 161, 14, 25, 15, 11, 18, 195, 179, 12, 13, 30, 69, 4, 192, 80, 84, 192, 108, 55, 108, 48, 40, 55, 23, 84, 109, 50,
-			12, 37, 109, 0, 13, 81, 118, 101, 110, 110, 105, 101, 32, 8, 197, 8, 83, 142, 20, 64, 13, 8, 197, 4, 192, 80, 84, 192, 13, 11,
-			136, 4, 195, 182, 14, 20, 195, 169, 19, 13, 0, 14, 139, 11, 195, 182, 19, 26, 195, 182, 14, 195, 182, 13, 13, 0, 9, 134, 195, 169,
-			18, 20, 9, 11, 13, 10, 199, 80, 84, 133, 53, 68, 197, 56, 13, 9, 134, 14, 195, 169, 26, 9, 11, 13, 0, 44, 11, 22, 9, 19,
-			19, 26, 1, 5, 19, 195, 169, 19, 84, 37, 89, 12, 108, 109, 91, 113, 91, 23, 107, 108, 47, 114, 91, 108, 37, 47, 0, 13, 81, 104,
-			97, 116, 195, 161, 115, 97, 105, 116, 32, 27, 7, 14, 25, 195, 173, 12, 9, 11, 67, 112, 55, 37, 49, 15, 108, 52, 52, 108, 0, 13,
-			81, 97, 114, 114, 97, 32, 11, 200, 36, 229, 5, 72, 225, 84, 20, 224, 13, 14, 68, 29, 148, 197, 88, 79, 109, 91, 109, 84, 0, 42,
-			42, 11, 5, 95, 35, 45, 1, 9, 108, 37, 0, 21, 12, 3, 95, 53, 15, 110, 47, 110, 72, 37, 49, 0, 0, 0, 9, 198, 80, 18,
-			193, 72, 160, 64, 13, 9, 198, 4, 212, 21, 48, 192, 64, 13, 9, 134, 14, 25, 195, 186, 10, 20, 13, 13, 4, 95, 13, 3, 14, 65,
-			108, 49, 52, 39, 50, 0, 14, 3, 95, 55, 17, 107, 109, 47, 109, 72, 37, 49, 109, 0, 0, 13, 138, 20, 195, 182, 18, 20, 195, 169,
-			14, 9, 11, 13, 0, 11, 200, 77, 161, 75, 80, 244, 146, 4, 192, 13, 10, 135, 18, 195, 169, 7, 9, 5, 11, 13, 0, 9, 134, 6,
-			197, 145, 26, 14, 9, 13, 23, 67, 37, 69, 0, 37, 47, 12, 23, 91, 109, 50, 49, 37, 0, 13, 81, 115, 101, 110, 107, 105, 32, 17,
-			67, 37, 69, 0, 37, 47, 12, 23, 37, 91, 0, 13, 81, 105, 115, 32, 29, 67, 37, 69, 0, 37, 47, 12, 23, 39, 55, 84, 108, 91,
-			47, 108, 65, 0, 13, 81, 111, 108, 118, 97, 115, 116, 97, 109, 32, 23, 67, 37, 69, 0, 37, 47, 12, 55, 114, 47, 12, 108, 0, 13,
-			81, 108, 195, 161, 116, 116, 97, 32, 9, 134, 14, 195, 169, 26, 14, 9, 13, 6, 195, 37, 69, 0, 13, 8, 133, 5, 12, 195, 182, 12,
-			13, 0, 0, 9, 134, 15, 12, 3, 19, 195, 179, 13, 14, 203, 60, 179, 211, 80, 83, 5, 24, 243, 142, 4, 192, 13, 12, 201, 52, 81,
-			212, 21, 68, 218, 21, 69, 0, 13, 0, 10, 135, 14, 25, 21, 7, 22, 195, 179, 13, 12, 201, 8, 83, 211, 105, 67, 212, 80, 160, 73,
-			13, 12, 137, 2, 15, 20, 18, 195, 161, 14, 25, 1, 13, 13, 3, 95, 54, 15, 107, 108, 47, 39, 72, 37, 49, 0, 0, 13, 138, 20,
-			195, 182, 18, 20, 195, 169, 14, 14, 9, 13, 40, 13, 11, 9, 1, 4, 195, 161, 19, 15, 11, 2, 195, 179, 12, 49, 37, 108, 72, 114,
-			91, 39, 49, 71, 115, 55, 23, 108, 107, 39, 88, 0, 13, 81, 97, 104, 104, 111, 122, 32, 13, 138, 20, 195, 182, 18, 20, 195, 169, 14,
-			14, 9, 13, 0, 17, 142, 16, 9, 12, 12, 1, 14, 1, 20, 15, 11, 2, 195, 179, 12, 13, 0, 9, 198, 32, 20, 141, 4, 66, 75,
-			13, 0, 6, 195, 24, 84, 211, 13, 0, 8, 197, 24, 241, 206, 4, 176, 76, 8, 197, 88, 149, 20, 20, 208, 13, 8, 197, 44, 83, 5,
-			80, 144, 13, 13, 138, 8, 195, 161, 20, 18, 195, 161, 14, 25, 1, 13, 8, 197, 60, 179, 218, 104, 16, 13, 8, 133, 4, 195, 186, 12,
-			20, 13, 0, 9, 198, 8, 195, 203, 44, 242, 192, 13, 6, 195, 44, 20, 0, 13, 0, 16, 141, 5, 19, 26, 11, 195, 182, 26, 195, 182,
-			11, 195, 182, 14, 13, 11, 136, 13, 5, 7, 25, 195, 169, 2, 5, 13, 10, 199, 32, 85, 9, 48, 20, 15, 44, 13, 6, 195, 24, 84,
-			212, 13, 0, 9, 198, 80, 84, 218, 80, 85, 0, 13, 7, 196, 44, 84, 133, 76, 13, 7, 196, 44, 84, 133, 76, 13, 13, 3, 95, 55,
-			15, 107, 109, 47, 109, 72, 37, 49, 0, 0, 12, 201, 72, 17, 193, 77, 162, 207, 16, 226, 64, 13, 13, 138, 8, 1, 19, 26, 14, 195,
-			161, 12, 10, 1, 13, 11, 136, 20, 195, 161, 18, 7, 25, 1, 11, 13, 8, 197, 84, 115, 210, 56, 144, 13, 6, 195, 60, 179, 218, 13,
-			0, 7, 66, 29, 144, 79, 113, 0, 14, 139, 16, 18, 5, 6, 5, 18, 195, 161, 12, 10, 1, 13, 9, 198, 32, 21, 129, 104, 146, 192,
-			13, 9, 198, 4, 176, 82, 56, 18, 192, 13, 9, 198, 44, 86, 133, 48, 226, 64, 13, 9, 198, 56, 85, 133, 104, 146, 192, 13, 9, 198,
-			24, 241, 193, 16, 226, 64, 13, 12, 137, 4, 15, 12, 7, 15, 26, 195, 179, 11, 13, 9, 134, 14, 25, 195, 186, 12, 20, 13, 14, 3,
-			95, 49, 17, 109, 79, 12, 109, 72, 37, 49, 109, 0, 0, 13, 138, 14, 195, 182, 22, 5, 11, 19, 26, 9, 11, 13, 11, 136, 3, 19,
-			5, 18, 195, 169, 2, 5, 13, 12, 201, 32, 20, 132, 88, 84, 133, 44, 85, 0, 13, 14, 203, 80, 20, 1, 77, 165, 1, 48, 21, 21,
-			56, 176, 13, 9, 198, 52, 241, 5, 48, 193, 75, 13, 17, 142, 195, 169, 18, 20, 5, 12, 13, 5, 26, 14, 195, 188, 14, 11, 13, 10,
-			199, 77, 161, 82, 21, 1, 76, 80, 13, 13, 138, 20, 195, 182, 18, 5, 11, 19, 26, 9, 11, 13, 10, 135, 12, 195, 179, 7, 15, 20,
-			20, 13, 10, 135, 19, 26, 195, 161, 12, 12, 20, 13, 0, 10, 135, 11, 12, 195, 179, 14, 15, 11, 13, 32, 6, 195, 186, 10, 1, 2,
-			2, 116, 57, 108, 71, 12, 23, 83, 109, 55, 108, 72, 108, 47, 0, 13, 81, 102, 101, 108, 97, 100, 97, 116, 32, 7, 196, 80, 84, 133,
-			80, 13, 12, 137, 3, 5, 12, 12, 195, 161, 11, 18, 1, 13, 16, 141, 195, 161, 12, 12, 195, 161, 19, 16, 15, 14, 20, 10, 1, 13,
-			8, 133, 22, 195, 169, 7, 5, 13, 0, 32, 10, 8, 1, 20, 195, 161, 18, 15, 26, 26, 1, 107, 108, 47, 114, 52, 39, 88, 88, 108,
-			23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 17, 142, 22, 9, 26, 19, 7, 195, 161, 12, 1, 20, 15, 11, 18, 1, 13, 13, 138,
-			11, 195, 173, 22, 195, 161, 14, 3, 19, 9, 13, 0, 14, 139, 12, 195, 182, 11, 195, 169, 19, 5, 11, 18, 5, 13, 52, 13, 13, 5,
-			7, 14, 195, 182, 22, 5, 11, 19, 26, 9, 11, 65, 109, 81, 50, 110, 84, 109, 49, 89, 37, 49, 23, 108, 23, 83, 109, 55, 107, 118,
-			88, 109, 47, 0, 13, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 9, 134, 195, 188, 7, 25, 5, 20, 13, 12, 137, 5,
-			12, 22, 195, 169, 7, 26, 9, 11, 13, 18, 143, 8, 15, 26, 26, 195, 161, 20, 1, 18, 20, 15, 26, 195, 179, 9, 13, 9, 134, 6,
-			195, 169, 14, 25, 20, 13, 9, 3, 95, 55, 5, 107, 109, 47, 0, 0, 13, 138, 5, 18, 197, 145, 19, 195, 182, 4, 9, 11, 13, 10,
-			199, 24, 83, 18, 4, 181, 1, 52, 13, 15, 140, 195, 169, 16, 195, 188, 12, 5, 20, 195, 169, 2, 5, 13, 15, 140, 11, 195, 169, 18,
-			4, 195, 169, 19, 5, 11, 18, 5, 13, 13, 138, 22, 195, 161, 18, 8, 1, 20, 195, 179, 11, 13, 0, 11, 200, 77, 1, 67, 36, 98,
-			75, 85, 48, 13, 60, 13, 8, 195, 161, 12, 195, 179, 26, 1, 20, 15, 11, 18, 1, 107, 114, 55, 115, 88, 108, 47, 39, 49, 52, 108,
-			23, 76, 108, 47, 55, 108, 49, 39, 88, 107, 108, 47, 40, 50, 49, 0, 13, 81, 99, 115, 97, 116, 108, 97, 107, 111, 122, 104, 97, 116,
-			117, 110, 107, 32, 7, 196, 32, 83, 25, 80, 13, 7, 196, 24, 243, 25, 80, 13, 15, 3, 95, 48, 15, 50, 6, 40, 55, 55, 108, 72,
-			37, 49, 0, 0, 22, 67, 20, 225, 0, 116, 57, 91, 4, 39, 52, 0, 44, 82, 111, 102, 32, 108, 105, 110, 101, 32, 17, 142, 5, 12,
-			22, 195, 169, 7, 26, 195, 169, 19, 195, 169, 2, 5, 13, 8, 195, 37, 5, 22, 17, 42, 42, 0, 18, 143, 195, 169, 12, 5, 12, 13,
-			9, 19, 26, 5, 18, 5, 11, 18, 5, 13, 14, 139, 22, 1, 18, 9, 195, 161, 14, 19, 19, 195, 161, 13, 5, 194, 44, 32, 13, 10,
-			135, 19, 26, 197, 177, 18, 197, 145, 13, 10, 135, 19, 26, 195, 179, 12, 14, 9, 13, 5, 194, 20, 224, 13, 5, 194, 20, 224, 72, 16,
-			66, 44, 32, 49, 110, 52, 111, 55, 71, 109, 55, 111, 55, 0, 25, 0, 10, 199, 4, 192, 80, 61, 165, 1, 52, 13, 10, 199, 28, 243,
-			132, 60, 197, 1, 52, 13, 14, 139, 19, 26, 1, 2, 2, 22, 195, 161, 14, 25, 20, 13, 15, 140, 6, 5, 12, 5, 12, 197, 145, 19,
-			195, 169, 7, 5, 13, 15, 4, 95, 48, 90, 53, 89, 114, 88, 109, 88, 52, 109, 72, 0, 13, 3, 95, 51, 88, 107, 108, 52, 65, 37,
-			50, 119, 0, 0, 16, 141, 12, 5, 22, 5, 26, 195, 169, 14, 25, 5, 12, 14, 9, 13, 7, 196, 20, 197, 133, 44, 13, 12, 137, 12,
-			5, 7, 25, 197, 145, 26, 14, 9, 13, 12, 137, 2, 1, 2, 18, 195, 161, 12, 14, 9, 13, 7, 196, 104, 21, 129, 72, 13, 7, 132,
-			20, 195, 169, 12, 20, 15, 4, 95, 48, 90, 52, 47, 112, 88, 109, 88, 52, 109, 72, 0, 9, 3, 95, 48, 67, 89, 114, 88, 0, 0,
-			10, 135, 195, 188, 12, 10, 195, 182, 14, 13, 9, 134, 22, 195, 169, 12, 20, 5, 13, 18, 4, 95, 48, 90, 55, 47, 112, 88, 65, 37,
-			55, 37, 39, 65, 39, 72, 0, 0, 14, 139, 22, 5, 19, 26, 20, 5, 19, 195, 169, 7, 5, 13, 9, 198, 52, 20, 129, 17, 96, 64,
-			13, 9, 198, 16, 20, 129, 9, 32, 64, 13, 15, 4, 95, 48, 90, 54, 65, 37, 55, 37, 39, 65, 39, 72, 0, 0, 15, 140, 11, 9,
-			16, 18, 195, 179, 2, 195, 161, 12, 14, 9, 13, 57, 15, 195, 161, 12, 12, 195, 161, 19, 16, 15, 14, 20, 15, 13, 1, 20, 114, 55,
-			12, 114, 91, 48, 39, 50, 47, 39, 65, 108, 47, 23, 107, 108, 50, 81, 39, 89, 47, 108, 47, 39, 65, 0, 13, 81, 104, 97, 110, 103,
-			111, 122, 116, 97, 116, 111, 109, 32, 15, 140, 12, 5, 8, 5, 20, 197, 145, 19, 195, 169, 7, 5, 13, 8, 133, 9, 4, 195, 169, 14,
-			22, 12, 4, 95, 48, 90, 49, 47, 37, 88, 109, 72, 0, 0, 10, 135, 13, 15, 19, 14, 195, 169, 11, 13, 9, 198, 52, 147, 132, 20,
-			229, 0, 13, 24, 5, 14, 195, 169, 8, 1, 50, 113, 107, 108, 15, 84, 109, 55, 109, 0, 13, 81, 118, 101, 108, 101, 32, 10, 135, 18,
-			195, 169, 19, 26, 5, 11, 13, 12, 137, 11, 9, 1, 2, 195, 161, 12, 20, 1, 13, 9, 198, 52, 147, 132, 20, 229, 0, 11, 16, 3,
-			95, 57, 15, 49, 37, 55, 109, 50, 119, 109, 72, 37, 49, 0, 0, 10, 135, 11, 195, 182, 26, 2, 5, 14, 13, 28, 7, 11, 195, 182,
-			26, 2, 5, 14, 49, 110, 88, 71, 109, 50, 10, 6, 15, 91, 109, 65, 0, 13, 81, 115, 101, 109, 32, 45, 70, 72, 81, 199, 20, 196,
-			133, 52, 109, 81, 12, 109, 55, 52, 36, 23, 113, 71, 52, 109, 72, 107, 109, 47, 111, 50, 49, 0, 13, 81, 195, 169, 98, 114, 101, 100,
-			104, 101, 116, 195, 188, 110, 107, 32, 35, 70, 72, 81, 199, 20, 196, 133, 52, 109, 81, 12, 109, 55, 52, 109, 23, 65, 109, 81, 107, 108,
-			55, 47, 0, 13, 81, 109, 101, 103, 104, 97, 108, 116, 32, 13, 138, 8, 9, 195, 161, 14, 25, 15, 12, 20, 1, 13, 12, 4, 95, 48,
-			90, 51, 109, 88, 52, 109, 72, 0, 0, 47, 9, 8, 5, 12, 25, 195, 169, 14, 5, 11, 107, 109, 57, 113, 50, 109, 49, 23, 65, 109,
-			81, 47, 108, 55, 114, 55, 114, 91, 108, 0, 13, 81, 109, 101, 103, 116, 97, 108, 195, 161, 108, 195, 161, 115, 97, 32, 14, 139, 22, 195,
-			161, 12, 1, 19, 26, 15, 12, 20, 1, 13, 17, 66, 37, 96, 50, 113, 79, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 12, 4, 95,
-			48, 90, 50, 89, 114, 88, 108, 72, 0, 0, 7, 195, 88, 243, 20, 13, 22, 28, 67, 88, 243, 20, 84, 39, 55, 47, 10, 6, 15, 107,
-			108, 55, 39, 47, 12, 0, 13, 81, 104, 97, 108, 111, 116, 116, 32, 25, 67, 88, 243, 20, 84, 39, 55, 47, 10, 6, 15, 39, 57, 108,
-			50, 0, 13, 81, 111, 108, 121, 97, 110, 32, 36, 67, 88, 243, 20, 84, 39, 55, 47, 10, 6, 15, 109, 55, 83, 39, 81, 55, 108, 55,
-			84, 108, 0, 13, 81, 101, 108, 102, 111, 103, 108, 97, 108, 118, 97, 32, 9, 134, 14, 197, 145, 14, 5, 11, 13, 39, 71, 24, 241, 204,
-			4, 197, 1, 44, 83, 39, 81, 55, 108, 55, 47, 108, 49, 10, 6, 15, 114, 55, 12, 114, 91, 47, 0, 13, 81, 195, 161, 108, 108, 195,
-			161, 115, 116, 32, 22, 67, 88, 243, 20, 84, 39, 55, 47, 15, 109, 52, 52, 109, 0, 13, 81, 101, 114, 114, 101, 32, 15, 140, 11, 9,
-			6, 15, 7, 195, 161, 19, 15, 12, 20, 1, 13, 6, 195, 44, 81, 4, 20, 0, 14, 139, 9, 7, 195, 169, 14, 25, 5, 9, 14, 5,
-			11, 13, 11, 136, 8, 195, 161, 26, 2, 195, 179, 12, 13, 12, 137, 5, 12, 195, 161, 18, 21, 12, 20, 1, 13, 10, 135, 8, 9, 20,
-			20, 195, 169, 11, 13, 0, 14, 3, 226, 136, 158, 84, 109, 81, 47, 109, 55, 109, 50, 0, 38, 10, 12, 5, 8, 5, 20, 197, 145, 22,
-			195, 169, 55, 109, 107, 109, 47, 118, 84, 113, 23, 47, 113, 47, 109, 55, 109, 0, 13, 81, 116, 195, 169, 116, 101, 108, 101, 32, 14, 139,
-			4, 18, 195, 161, 7, 195, 161, 2, 2, 1, 14, 13, 8, 197, 72, 18, 207, 81, 64, 13, 36, 10, 12, 5, 8, 5, 20, 197, 145, 22,
-			195, 169, 55, 109, 107, 109, 47, 118, 84, 113, 23, 47, 109, 50, 12, 113, 0, 13, 81, 116, 101, 110, 110, 195, 169, 32, 23, 67, 88, 84,
-			218, 84, 109, 89, 23, 52, 113, 89, 47, 0, 13, 81, 114, 195, 169, 115, 122, 116, 32, 15, 140, 8, 1, 12, 12, 7, 1, 20, 195, 179,
-			14, 1, 11, 13, 28, 69, 4, 227, 153, 37, 64, 108, 67, 67, 37, 47, 47, 40, 72, 40, 50, 49, 0, 76, 81, 116, 117, 100, 117, 110,
-			107, 32, 13, 138, 15, 18, 4, 9, 2, 195, 161, 12, 20, 1, 13, 10, 135, 9, 4, 5, 10, 195, 169, 14, 13, 6, 195, 88, 84, 218,
-			13, 10, 135, 197, 145, 19, 26, 195, 169, 14, 20, 0, 14, 139, 195, 169, 18, 20, 195, 169, 11, 5, 12, 20, 5, 13, 0, 15, 3, 226,
-			137, 160, 50, 109, 65, 109, 79, 109, 50, 55, 118, 0, 19, 67, 9, 81, 192, 71, 40, 81, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110,
-			32, 13, 138, 14, 25, 15, 13, 20, 1, 20, 195, 179, 11, 13, 10, 135, 13, 195, 182, 7, 195, 188, 12, 13, 0, 53, 11, 3, 19, 197,
-			145, 4, 10, 195, 169, 14, 5, 11, 76, 118, 79, 12, 113, 50, 109, 49, 23, 109, 55, 49, 109, 52, 111, 55, 113, 91, 113, 52, 109, 0,
-			13, 81, 101, 108, 107, 101, 114, 195, 188, 108, 195, 169, 115, 195, 169, 114, 101, 32, 13, 138, 195, 182, 22, 5, 26, 5, 20, 2, 5, 14,
-			13, 14, 139, 13, 5, 8, 5, 20, 14, 195, 169, 14, 5, 11, 13, 14, 139, 11, 195, 182, 26, 195, 182, 12, 20, 195, 169, 11, 13, 10,
-			135, 10, 195, 161, 18, 21, 14, 11, 13, 13, 138, 1, 4, 195, 179, 26, 195, 161, 19, 195, 186, 13, 11, 136, 14, 195, 169, 12, 11, 195,
-			188, 12, 13, 0, 12, 3, 226, 136, 154, 79, 110, 49, 57, 109, 55, 0, 8, 197, 8, 243, 20, 61, 64, 13, 18, 143, 15, 18, 19, 26,
-			195, 161, 7, 18, 195, 169, 19, 26, 2, 5, 14, 13, 9, 198, 44, 148, 129, 44, 21, 1, 13, 15, 140, 20, 1, 12, 195, 161, 12, 8,
-			1, 20, 195, 179, 11, 13, 6, 195, 32, 148, 218, 13, 0, 14, 139, 18, 195, 182, 7, 26, 195, 173, 20, 5, 14, 9, 13, 5, 194, 36,
-			112, 13, 14, 3, 95, 52, 17, 50, 109, 79, 109, 72, 37, 49, 109, 0, 0, 6, 195, 44, 83, 12, 13, 24, 67, 44, 83, 12, 49, 109,
-			55, 12, 23, 84, 109, 50, 12, 37, 0, 13, 81, 118, 101, 110, 110, 105, 32, 28, 67, 44, 83, 12, 49, 109, 55, 12, 23, 83, 39, 81,
-			108, 72, 50, 37, 0, 13, 81, 102, 111, 103, 97, 100, 110, 105, 32, 25, 67, 44, 83, 12, 49, 109, 55, 12, 23, 49, 110, 47, 50, 37,
-			0, 13, 81, 107, 195, 182, 116, 110, 105, 32, 32, 67, 44, 83, 12, 49, 109, 55, 12, 23, 39, 49, 47, 108, 47, 50, 37, 40, 49, 0,
-			13, 81, 111, 107, 116, 97, 116, 110, 105, 117, 107, 32, 32, 67, 44, 83, 12, 49, 109, 55, 12, 23, 107, 108, 52, 119, 39, 55, 50, 37,
-			108, 0, 13, 81, 104, 97, 114, 99, 111, 108, 110, 105, 97, 32, 17, 142, 5, 12, 4, 195, 182, 14, 20, 195, 182, 20, 20, 195, 169, 11,
-			13, 12, 201, 72, 16, 143, 76, 179, 196, 61, 69, 0, 13, 6, 195, 40, 83, 0, 13, 6, 195, 52, 244, 212, 13, 0, 12, 137, 2, 5,
-			19, 26, 195, 169, 12, 14, 9, 13, 7, 196, 48, 244, 14, 36, 13, 0, 8, 197, 8, 19, 139, 40, 16, 13, 17, 142, 20, 21, 12, 1,
-			10, 4, 15, 14, 195, 173, 20, 1, 14, 9, 13, 8, 197, 37, 51, 69, 72, 144, 13, 13, 138, 195, 161, 20, 16, 1, 11, 15, 12, 14,
-			9, 13, 9, 198, 28, 243, 132, 60, 195, 137, 13, 9, 198, 28, 243, 132, 60, 194, 129, 13, 8, 197, 77, 161, 82, 80, 80, 13, 7, 132,
-			6, 195, 161, 11, 13, 0, 31, 67, 48, 20, 0, 55, 108, 48, 9, 15, 47, 109, 47, 109, 57, 113, 52, 109, 0, 13, 81, 116, 101, 116,
-			101, 106, 195, 169, 114, 101, 32, 6, 195, 48, 20, 0, 13, 7, 132, 6, 195, 161, 10, 13, 7, 195, 56, 242, 1, 72, 8, 0, 15, 140,
-			19, 26, 1, 2, 195, 161, 12, 25, 15, 26, 14, 9, 13, 21, 146, 13, 5, 7, 22, 195, 161, 19, 195, 161, 18, 15, 12, 8, 1, 20,
-			195, 179, 11, 13, 15, 140, 18, 195, 161, 2, 5, 19, 26, 195, 169, 12, 14, 9, 13, 12, 201, 24, 83, 1, 16, 21, 15, 44, 21, 0,
-			13, 10, 199, 40, 21, 129, 76, 243, 10, 4, 13, 11, 136, 195, 161, 6, 1, 1, 58, 6, 1, 42, 0, 11, 200, 60, 197, 129, 76, 112,
-			84, 88, 16, 13, 22, 147, 13, 15, 2, 9, 12, 19, 26, 15, 12, 7, 195, 161, 12, 20, 1, 20, 195, 179, 11, 13, 9, 134, 11, 195,
-			161, 15, 19, 26, 13, 0, 11, 3, 226, 136, 146, 65, 37, 50, 40, 89, 0, 9, 198, 64, 244, 148, 60, 195, 137, 13, 8, 197, 20, 165,
-			5, 56, 144, 13, 0, 10, 135, 22, 195, 169, 7, 26, 5, 13, 13, 15, 140, 9, 14, 4, 195, 173, 20, 195, 161, 19, 11, 15, 18, 13,
-			13, 3, 95, 53, 17, 110, 47, 110, 72, 37, 49, 109, 0, 0, 9, 134, 6, 197, 145, 14, 5, 11, 13, 13, 138, 14, 25, 195, 186, 10,
-			20, 1, 14, 1, 11, 13, 10, 199, 52, 81, 205, 60, 225, 10, 4, 13, 8, 133, 9, 4, 195, 169, 26, 13, 10, 135, 3, 19, 9, 14,
-			195, 161, 12, 13, 9, 3, 95, 49, 48, 47, 112, 88, 0, 0, 11, 200, 76, 84, 139, 20, 229, 5, 56, 144, 13, 7, 196, 16, 149, 129,
-			80, 13, 7, 132, 8, 195, 169, 20, 13, 0, 15, 140, 11, 5, 18, 195, 188, 12, 14, 195, 169, 14, 5, 11, 13, 7, 132, 6, 197, 145,
-			19, 13, 11, 136, 10, 195, 161, 20, 19, 26, 9, 11, 13, 6, 195, 41, 85, 0, 13, 0, 11, 136, 13, 5, 13, 2, 18, 195, 161, 14,
-			13, 9, 134, 195, 169, 16, 195, 173, 20, 13, 12, 4, 8, 195, 169, 22, 107, 113, 84, 0, 42, 42, 0, 19, 71, 44, 147, 15, 29, 32,
-			77, 52, 107, 105, 108, 111, 103, 114, 97, 109, 0, 29, 27, 4, 5, 19, 197, 145, 109, 91, 118, 23, 52, 113, 89, 113, 47, 0, 13, 81,
-			114, 195, 169, 115, 122, 195, 169, 116, 32, 29, 4, 5, 19, 197, 145, 109, 91, 118, 23, 48, 39, 50, 80, 108, 37, 50, 0, 13, 81, 112,
-			111, 110, 116, 106, 97, 105, 110, 32, 11, 136, 20, 195, 161, 18, 8, 5, 12, 25, 13, 7, 132, 5, 19, 197, 145, 13, 0, 14, 139, 11,
-			15, 18, 13, 195, 161, 14, 25, 14, 1, 11, 13, 27, 4, 6, 197, 145, 20, 83, 118, 47, 23, 84, 114, 52, 40, 50, 49, 0, 13, 81,
-			118, 195, 161, 114, 117, 110, 107, 32, 15, 140, 18, 5, 14, 4, 19, 26, 5, 18, 18, 197, 145, 12, 13, 15, 140, 19, 26, 5, 13, 20,
-			1, 14, 195, 186, 22, 1, 12, 13, 7, 132, 12, 195, 169, 16, 13, 7, 132, 6, 197, 145, 20, 13, 7, 132, 6, 195, 161, 20, 13, 13,
-			3, 95, 52, 15, 50, 109, 79, 109, 72, 37, 49, 0, 18, 4, 95, 48, 90, 56, 89, 114, 88, 65, 37, 55, 37, 39, 65, 39, 72, 0,
-			0, 12, 137, 8, 1, 19, 15, 14, 12, 195, 173, 20, 13, 15, 140, 20, 1, 18, 20, 1, 12, 13, 195, 161, 14, 1, 11, 13, 9, 134,
-			12, 5, 12, 11, 197, 177, 13, 13, 138, 8, 1, 20, 195, 161, 18, 9, 4, 197, 145, 13, 0, 9, 198, 20, 195, 65, 72, 17, 20, 13,
-			13, 138, 18, 195, 169, 19, 26, 5, 19, 195, 188, 12, 13, 16, 141, 16, 18, 15, 7, 18, 1, 13, 10, 195, 161, 14, 1, 11, 13, 12,
-			201, 64, 19, 129, 77, 162, 207, 16, 224, 75, 13, 10, 135, 6, 195, 188, 7, 7, 197, 145, 13, 12, 137, 1, 11, 20, 21, 195, 161, 12,
-			9, 19, 13, 13, 138, 14, 25, 21, 7, 4, 195, 173, 10, 1, 20, 13, 0, 15, 140, 9, 18, 195, 161, 14, 25, 195, 173, 20, 1, 14,
-			9, 13, 9, 198, 16, 243, 7, 61, 162, 75, 13, 12, 3, 95, 55, 88, 107, 109, 47, 84, 109, 50, 0, 0, 22, 5, 195, 169, 12, 20,
-			5, 113, 55, 47, 109, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 10, 135, 18, 5, 195, 161, 12, 9, 19, 13, 7, 196, 64, 81,
-			9, 28, 13, 49, 70, 88, 148, 218, 60, 229, 0, 84, 37, 89, 39, 50, 47, 23, 109, 55, 109, 50, 81, 109, 72, 107, 109, 47, 109, 47,
-			55, 109, 50, 0, 13, 81, 101, 108, 101, 110, 103, 101, 100, 104, 101, 116, 101, 116, 108, 101, 110, 32, 23, 70, 88, 148, 218, 60, 229, 0,
-			84, 37, 89, 39, 50, 47, 23, 108, 88, 0, 13, 81, 97, 122, 32, 25, 150, 18, 5, 14, 4, 19, 26, 5, 18, 20, 5, 12, 5, 16,
-			195, 173, 20, 195, 169, 19, 11, 15, 18, 13, 50, 70, 88, 148, 218, 60, 229, 0, 84, 37, 89, 39, 50, 47, 23, 108, 89, 47, 23, 47,
-			108, 48, 108, 89, 47, 108, 55, 47, 108, 65, 0, 13, 82, 97, 122, 116, 32, 116, 97, 112, 97, 115, 122, 116, 97, 108, 116, 97, 109, 32,
-			9, 198, 88, 148, 218, 60, 229, 0, 13, 7, 196, 52, 20, 16, 4, 13, 7, 196, 44, 20, 20, 4, 13, 0, 17, 142, 6, 5, 12, 20,
-			5, 12, 5, 16, 195, 173, 20, 5, 14, 9, 13, 8, 197, 44, 20, 10, 60, 224, 13, 9, 198, 4, 192, 75, 84, 195, 137, 13, 0, 18,
-			143, 13, 5, 7, 22, 1, 12, 195, 179, 19, 195, 173, 20, 1, 14, 9, 13, 44, 7, 195, 161, 12, 12, 1, 13, 9, 114, 55, 12, 108,
-			65, 37, 10, 6, 15, 47, 114, 65, 39, 81, 108, 47, 114, 91, 108, 0, 13, 81, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 97,
-			32, 18, 4, 14, 195, 169, 26, 50, 113, 88, 23, 49, 37, 0, 13, 81, 107, 105, 32, 11, 136, 13, 195, 179, 4, 19, 26, 5, 18, 13,
-			10, 135, 7, 25, 195, 182, 18, 7, 25, 13, 9, 198, 88, 149, 1, 81, 64, 64, 13, 9, 198, 81, 81, 1, 81, 64, 64, 13, 7, 132,
-			14, 195, 169, 26, 13, 7, 132, 22, 195, 173, 26, 13, 0, 10, 199, 65, 35, 202, 20, 181, 10, 20, 13, 0, 22, 68, 81, 33, 78, 16,
-			47, 52, 109, 50, 72, 10, 6, 15, 108, 88, 0, 13, 81, 97, 122, 32, 0, 13, 138, 11, 195, 182, 22, 5, 20, 5, 12, 20, 5, 13,
-			9, 134, 6, 195, 182, 12, 195, 169, 13, 0, 20, 66, 37, 128, 49, 37, 55, 109, 50, 119, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32,
-			9, 5, 95, 35, 45, 9, 11, 15, 0, 0, 6, 195, 44, 83, 20, 13, 6, 195, 24, 243, 20, 13, 0, 9, 198, 104, 18, 140, 61, 69,
-			0, 13, 0, 12, 137, 6, 5, 12, 195, 161, 18, 18, 1, 12, 13, 11, 136, 5, 18, 197, 145, 19, 26, 1, 11, 13, 11, 136, 13, 1,
-			7, 195, 161, 14, 1, 11, 13, 14, 139, 20, 5, 18, 195, 188, 12, 5, 20, 195, 169, 14, 13, 7, 132, 8, 195, 173, 7, 13, 8, 197,
-			44, 20, 15, 81, 64, 13, 0, 12, 137, 12, 1, 11, 14, 195, 161, 14, 1, 11, 13, 20, 145, 8, 1, 10, 12, 195, 169, 11, 20, 1,
-			12, 1, 14, 10, 1, 9, 14, 11, 13, 9, 198, 88, 85, 5, 81, 65, 64, 13, 12, 5, 95, 35, 45, 9, 7, 113, 37, 81, 0, 21,
-			0, 13, 138, 9, 4, 197, 145, 19, 26, 1, 11, 15, 11, 13, 0, 9, 198, 77, 162, 210, 37, 5, 0, 13, 9, 198, 77, 162, 210, 37,
-			5, 0, 13, 16, 141, 2, 5, 6, 15, 12, 25, 195, 161, 19, 15, 12, 20, 1, 13, 0, 15, 140, 4, 15, 12, 7, 15, 26, 14, 195,
-			161, 14, 1, 11, 13, 15, 140, 13, 5, 7, 15, 12, 4, 195, 161, 19, 14, 1, 11, 13, 11, 136, 12, 195, 161, 19, 26, 12, 195, 179,
-			13, 9, 198, 76, 244, 143, 104, 21, 1, 13, 13, 138, 13, 5, 7, 22, 195, 169, 4, 5, 14, 9, 13, 0, 20, 145, 6, 5, 12, 8,
-			1, 19, 26, 14, 195, 161, 12, 195, 179, 11, 14, 1, 11, 13, 29, 66, 52, 16, 65, 108, 15, 72, 113, 55, 109, 55, 118, 47, 12, 0,
-			13, 81, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 32, 19, 144, 195, 161, 12, 12, 1, 13, 20, 9, 20, 11, 195, 161, 18, 2, 1,
-			14, 13, 27, 66, 52, 16, 65, 108, 15, 72, 113, 55, 40, 47, 114, 50, 0, 13, 81, 100, 195, 169, 108, 117, 116, 195, 161, 110, 32, 5,
-			194, 52, 16, 13, 19, 66, 36, 144, 49, 109, 47, 12, 118, 84, 109, 55, 0, 44, 42, 81, 101, 108, 32, 21, 2, 48, 48, 50, 40, 55,
-			12, 108, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 110, 32, 26, 2, 48, 48, 50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 47, 115,
-			55, 0, 44, 81, 32, 116, 195, 179, 108, 32, 21, 2, 48, 48, 50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 91, 0, 44, 81, 32, 115,
-			32, 23, 2, 48, 48, 50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 37, 81, 0, 44, 81, 32, 105, 103, 32, 15, 3, 95, 56, 17, 67,
-			39, 55, 119, 108, 72, 37, 49, 108, 0, 0, 22, 67, 52, 134, 128, 109, 101, 103, 97, 104, 101, 114, 99, 101, 110, 0, 44, 29, 81, 101,
-			110, 32, 23, 67, 52, 134, 128, 109, 101, 103, 97, 104, 101, 114, 99, 101, 110, 0, 44, 29, 42, 81, 101, 110, 32, 13, 138, 6, 9, 26,
-			5, 20, 14, 9, 195, 188, 11, 13, 11, 3, 95, 49, 88, 47, 37, 88, 109, 50, 0, 0, 8, 133, 195, 169, 12, 22, 5, 13, 10, 135,
-			1, 4, 8, 1, 20, 195, 179, 13, 0, 8, 197, 24, 241, 212, 60, 176, 76, 11, 136, 22, 195, 169, 7, 195, 169, 9, 7, 13, 8, 197,
-			45, 83, 3, 76, 16, 13, 68, 69, 29, 145, 78, 28, 80, 79, 109, 50, 81, 109, 15, 55, 113, 81, 65, 39, 88, 81, 114, 91, 52, 108,
-			23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 13, 82, 108, 195, 169, 103, 109, 111, 122, 103, 195, 161, 115, 114, 97, 32, 115,
-			122, 195, 161, 109, 195, 173, 116, 104, 97, 116, 117, 110, 107, 32, 19, 144, 5, 13, 2, 5, 18, 20, 195, 161, 18, 19, 1, 9, 11, 14,
-			1, 11, 13, 11, 136, 12, 195, 161, 20, 20, 21, 14, 11, 13, 0, 50, 9, 22, 195, 161, 18, 8, 1, 20, 195, 179, 84, 114, 52, 107,
-			108, 47, 115, 23, 108, 55, 108, 49, 40, 55, 114, 91, 114, 52, 115, 55, 0, 13, 81, 97, 108, 97, 107, 117, 108, 195, 161, 115, 195, 161,
-			114, 195, 179, 108, 32, 12, 137, 8, 1, 12, 12, 8, 1, 20, 195, 179, 13, 30, 9, 22, 195, 161, 18, 8, 1, 20, 195, 179, 84, 114,
-			52, 107, 108, 47, 115, 23, 109, 91, 118, 0, 13, 81, 101, 115, 197, 145, 32, 12, 137, 22, 195, 161, 18, 8, 1, 20, 195, 179, 13, 9,
-			198, 20, 208, 133, 73, 33, 76, 13, 9, 198, 32, 246, 142, 37, 82, 192, 13, 12, 137, 22, 195, 161, 18, 8, 1, 20, 195, 179, 13, 0,
-			23, 4, 195, 186, 7, 25, 116, 79, 10, 6, 15, 83, 109, 91, 47, 0, 13, 81, 102, 101, 115, 116, 32, 38, 4, 195, 186, 7, 25, 116,
-			79, 10, 6, 15, 113, 52, 47, 109, 55, 65, 109, 89, 47, 109, 65, 0, 13, 81, 195, 169, 114, 116, 101, 108, 109, 101, 122, 116, 101, 109,
-			32, 36, 4, 195, 186, 7, 25, 116, 79, 10, 6, 15, 113, 52, 47, 109, 55, 65, 109, 88, 109, 65, 0, 13, 81, 195, 169, 114, 116, 101,
-			108, 109, 101, 122, 101, 109, 32, 10, 199, 16, 243, 7, 61, 163, 212, 80, 13, 10, 199, 24, 83, 1, 16, 21, 15, 44, 13, 22, 4, 195,
-			186, 7, 25, 116, 79, 23, 107, 37, 89, 37, 0, 13, 81, 104, 105, 115, 122, 105, 32, 10, 199, 20, 211, 5, 28, 85, 14, 36, 13, 7,
-			132, 195, 186, 7, 25, 13, 0, 12, 137, 2, 5, 19, 26, 195, 169, 12, 22, 5, 13, 11, 200, 36, 225, 193, 80, 192, 78, 84, 176, 13,
-			9, 134, 195, 169, 12, 195, 169, 14, 13, 7, 132, 14, 195, 169, 12, 13, 0, 8, 197, 81, 33, 78, 16, 144, 13, 15, 140, 195, 161, 12,
-			12, 195, 173, 20, 8, 1, 20, 195, 179, 13, 8, 197, 81, 81, 14, 36, 16, 13, 8, 197, 44, 20, 20, 4, 176, 13, 0, 16, 141, 22,
-			9, 26, 19, 7, 195, 161, 12, 8, 1, 20, 195, 179, 13, 50, 9, 195, 161, 12, 12, 10, 1, 14, 1, 11, 114, 57, 57, 108, 50, 108,
-			49, 23, 52, 109, 50, 72, 109, 55, 49, 109, 88, 113, 91, 52, 109, 0, 13, 81, 114, 101, 110, 100, 101, 108, 107, 101, 122, 195, 169, 115,
-			114, 101, 32, 6, 131, 12, 197, 145, 13, 17, 2, 49, 48, 47, 112, 88, 88, 109, 55, 0, 44, 81, 32, 101, 108, 32, 15, 2, 49, 48,
-			47, 37, 88, 109, 47, 0, 44, 81, 32, 116, 32, 23, 2, 49, 48, 47, 112, 89, 12, 109, 52, 109, 91, 0, 44, 81, 32, 115, 122, 101,
-			114, 101, 115, 32, 19, 2, 49, 48, 47, 112, 89, 12, 109, 52, 0, 44, 81, 32, 115, 122, 101, 114, 32, 17, 3, 95, 57, 17, 49, 37,
-			55, 109, 50, 119, 109, 72, 37, 49, 109, 0, 0, 10, 199, 20, 194, 83, 52, 84, 148, 20, 13, 9, 134, 10, 195, 179, 14, 1, 11, 13,
-			8, 133, 195, 169, 12, 19, 26, 13, 30, 2, 49, 51, 116, 105, 122, 101, 110, 104, 97, 114, 109, 97, 100, 105, 107, 195, 161, 105, 103, 0,
-			44, 21, 29, 81, 32, 105, 103, 32, 11, 3, 95, 50, 88, 107, 40, 89, 39, 50, 0, 0, 11, 136, 2, 5, 19, 26, 195, 169, 12, 20,
-			13, 11, 136, 2, 5, 19, 26, 195, 169, 12, 20, 13, 10, 135, 12, 195, 161, 20, 20, 21, 11, 13, 11, 136, 2, 5, 19, 26, 195, 169,
-			12, 20, 13, 7, 132, 14, 195, 169, 16, 13, 7, 196, 29, 147, 210, 76, 13, 7, 132, 20, 195, 169, 20, 13, 0, 20, 67, 49, 53, 0,
-			101, 108, 101, 115, 116, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 20, 67, 49, 53, 0, 101, 108, 101, 115, 116, 195, 169, 107, 0, 44,
-			29, 42, 81, 107, 32, 15, 140, 19, 26, 195, 188, 12, 5, 19, 19, 5, 14, 5, 11, 13, 7, 132, 18, 195, 169, 19, 13, 14, 67, 49,
-			53, 0, 109, 55, 109, 91, 47, 113, 0, 42, 42, 0, 13, 202, 88, 243, 129, 80, 179, 218, 104, 19, 129, 44, 13, 16, 141, 18, 5, 14,
-			4, 197, 145, 18, 195, 182, 11, 14, 5, 11, 13, 12, 137, 9, 20, 195, 169, 12, 20, 195, 169, 11, 13, 7, 132, 22, 195, 169, 18, 13,
-			0, 10, 199, 88, 19, 1, 52, 149, 133, 48, 13, 11, 136, 20, 5, 18, 10, 5, 4, 197, 145, 13, 12, 137, 19, 20, 195, 173, 12, 21,
-			19, 195, 186, 13, 11, 136, 2, 195, 161, 14, 20, 1, 14, 9, 13, 0, 11, 136, 8, 9, 20, 5, 12, 195, 169, 20, 13, 11, 136, 195,
-			169, 12, 5, 20, 195, 169, 20, 13, 10, 135, 19, 26, 195, 173, 14, 5, 19, 13, 8, 133, 22, 195, 169, 12, 9, 13, 8, 133, 22, 195,
-			169, 12, 9, 13, 29, 2, 49, 54, 116, 105, 122, 101, 110, 104, 97, 116, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32,
-			105, 103, 32, 14, 3, 95, 56, 15, 67, 39, 55, 119, 108, 72, 37, 49, 0, 0, 14, 139, 9, 14, 20, 195, 169, 26, 5, 20, 2, 5,
-			14, 13, 46, 6, 6, 5, 12, 8, 197, 145, 83, 109, 55, 107, 118, 23, 55, 109, 89, 23, 83, 109, 55, 109, 47, 12, 111, 50, 49, 0,
-			13, 82, 108, 101, 115, 122, 32, 102, 101, 108, 101, 116, 116, 195, 188, 110, 107, 32, 38, 6, 6, 5, 12, 8, 197, 145, 83, 109, 55, 107,
-			118, 23, 84, 108, 55, 115, 89, 112, 50, 117, 0, 13, 81, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 32, 16, 141, 195, 169,
-			19, 26, 18, 5, 22, 195, 169, 20, 5, 12, 20, 13, 13, 138, 19, 26, 195, 161, 14, 4, 195, 169, 11, 1, 13, 11, 136, 12, 5, 14,
-			14, 195, 169, 14, 11, 13, 6, 195, 9, 84, 218, 13, 0, 24, 66, 52, 32, 109, 101, 103, 97, 98, 195, 161, 106, 116, 116, 97, 108, 0,
-			44, 29, 42, 81, 97, 108, 32, 31, 7, 22, 5, 26, 5, 20, 197, 145, 84, 109, 88, 109, 47, 118, 23, 50, 118, 50, 109, 49, 0, 13,
-			81, 110, 197, 145, 110, 101, 107, 32, 15, 140, 5, 12, 12, 5, 14, 20, 195, 169, 20, 2, 5, 14, 13, 10, 135, 19, 26, 195, 188, 12,
-			197, 145, 13, 10, 135, 22, 5, 26, 5, 20, 197, 145, 13, 14, 139, 11, 5, 4, 22, 5, 26, 13, 195, 169, 14, 25, 13, 7, 132, 20,
-			195, 169, 18, 13, 7, 132, 14, 195, 169, 22, 13, 7, 132, 8, 195, 173, 18, 13, 15, 66, 52, 32, 65, 109, 81, 108, 71, 114, 57, 47,
-			0, 42, 42, 17, 2, 50, 48, 107, 116, 89, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 25, 2, 50, 48, 104, 117, 115, 122, 97, 100,
-			105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 22, 2, 50, 48, 104, 117, 115, 122, 97, 100, 105, 107, 97, 105, 0,
-			44, 21, 29, 81, 32, 105, 32, 31, 2, 49, 56, 116, 105, 122, 101, 110, 110, 121, 111, 108, 99, 97, 100, 105, 107, 195, 161, 105, 103, 0,
-			44, 21, 29, 81, 32, 105, 103, 32, 0, 9, 198, 41, 85, 15, 81, 64, 75, 13, 22, 5, 16, 195, 169, 14, 26, 48, 113, 50, 88, 15,
-			84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 17, 142, 5, 24, 16, 5, 4, 195, 173, 3, 9, 195, 179, 14, 1, 11, 13, 10, 135, 9,
-			4, 5, 10, 195, 169, 20, 13, 16, 141, 11, 195, 182, 18, 14, 25, 5, 26, 5, 20, 2, 5, 14, 13, 8, 133, 16, 195, 169, 14, 26,
-			13, 31, 2, 50, 51, 104, 117, 115, 122, 111, 110, 104, 97, 114, 109, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105,
-			103, 32, 0, 14, 139, 3, 19, 9, 14, 195, 161, 12, 10, 21, 14, 11, 13, 7, 196, 25, 35, 206, 80, 13, 7, 132, 20, 197, 145, 12,
-			13, 0, 12, 137, 22, 5, 26, 195, 169, 18, 195, 169, 20, 13, 13, 138, 14, 5, 22, 5, 26, 8, 5, 20, 197, 145, 13, 12, 137, 20,
-			1, 14, 4, 195, 173, 10, 1, 20, 13, 7, 195, 44, 101, 0, 13, 42, 8, 133, 19, 195, 169, 18, 20, 13, 0, 19, 144, 20, 21, 4,
-			1, 20, 195, 161, 12, 12, 1, 16, 15, 20, 2, 1, 14, 13, 34, 6, 6, 5, 12, 197, 145, 12, 83, 109, 55, 118, 55, 10, 6, 15,
-			50, 113, 88, 88, 111, 49, 0, 13, 81, 110, 195, 169, 122, 122, 195, 188, 107, 32, 16, 141, 9, 14, 20, 5, 18, 14, 5, 20, 5, 26,
-			195, 169, 19, 13, 7, 132, 20, 195, 161, 14, 13, 9, 134, 6, 5, 12, 197, 145, 12, 13, 12, 7, 95, 35, 45, 9, 11, 5, 9, 109,
-			37, 0, 0, 10, 135, 22, 15, 12, 20, 195, 161, 12, 72, 10, 199, 77, 163, 198, 81, 97, 82, 20, 13, 33, 71, 32, 149, 129, 80, 19,
-			15, 76, 107, 37, 84, 108, 47, 108, 55, 39, 91, 23, 55, 109, 50, 12, 109, 0, 13, 81, 108, 101, 110, 110, 101, 32, 10, 199, 60, 179,
-			218, 32, 21, 20, 4, 13, 7, 132, 18, 195, 161, 13, 13, 7, 132, 18, 195, 161, 13, 13, 14, 67, 77, 64, 128, 91, 108, 47, 110, 71,
-			12, 37, 0, 25, 0, 33, 6, 5, 7, 195, 169, 19, 26, 109, 81, 113, 89, 23, 49, 109, 55, 12, 109, 65, 109, 91, 0, 13, 81, 107,
-			101, 108, 108, 101, 109, 101, 115, 32, 7, 132, 18, 197, 145, 12, 13, 18, 3, 95, 63, 63, 49, 108, 52, 108, 49, 47, 109, 34, 15, 49,
-			115, 72, 0, 30, 2, 50, 54, 104, 117, 115, 122, 111, 110, 104, 97, 116, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32,
-			105, 103, 32, 11, 6, 95, 35, 45, 195, 161, 14, 114, 50, 0, 0, 17, 142, 12, 195, 169, 20, 5, 19, 195, 173, 20, 13, 195, 169, 14,
-			25, 13, 11, 136, 12, 195, 169, 20, 5, 26, 9, 11, 13, 11, 136, 12, 195, 169, 20, 5, 26, 9, 11, 13, 0, 9, 198, 45, 34, 84,
-			36, 176, 64, 13, 13, 138, 195, 182, 20, 12, 5, 20, 20, 197, 145, 12, 13, 13, 138, 22, 1, 12, 12, 195, 179, 11, 11, 1, 12, 13,
-			13, 138, 16, 195, 161, 18, 20, 15, 11, 11, 1, 12, 13, 12, 137, 195, 169, 18, 20, 195, 169, 11, 5, 11, 13, 12, 66, 53, 32, 65,
-			37, 89, 47, 109, 52, 0, 25, 21, 2, 51, 48, 107, 108, 52, 65, 37, 50, 119, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 22, 2,
-			51, 48, 107, 108, 52, 65, 37, 50, 119, 12, 108, 55, 0, 44, 81, 32, 99, 97, 108, 32, 25, 2, 51, 48, 104, 97, 114, 109, 105, 110,
-			99, 97, 100, 105, 107, 97, 105, 0, 44, 21, 29, 81, 32, 105, 32, 28, 2, 51, 48, 104, 97, 114, 109, 105, 110, 99, 97, 100, 105, 107,
-			195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 32, 2, 50, 56, 104, 117, 115, 122, 111, 110, 110, 121, 111, 108, 99, 97, 100,
-			105, 107, 195, 161, 105, 103, 0, 44, 21, 29, 81, 32, 105, 103, 32, 0, 20, 145, 3, 19, 1, 16, 1, 4, 195, 169, 11, 18, 5, 14,
-			4, 19, 26, 5, 18, 13, 12, 3, 95, 52, 88, 50, 109, 79, 84, 109, 50, 0, 0, 30, 70, 52, 83, 12, 21, 69, 0, 65, 109, 55,
-			12, 109, 47, 12, 23, 84, 39, 55, 50, 108, 0, 13, 81, 118, 111, 108, 110, 97, 32, 40, 11, 8, 21, 12, 12, 1, 4, 195, 169, 11,
-			15, 11, 107, 40, 55, 12, 108, 72, 113, 49, 39, 49, 23, 76, 40, 48, 114, 50, 0, 13, 81, 99, 115, 117, 112, 195, 161, 110, 32, 24,
-			70, 52, 83, 12, 21, 69, 0, 65, 109, 55, 12, 109, 47, 12, 23, 108, 88, 0, 13, 81, 97, 122, 32, 38, 6, 1, 12, 1, 16, 195,
-			186, 108, 55, 108, 48, 116, 10, 6, 15, 52, 109, 50, 119, 109, 52, 109, 50, 0, 13, 81, 114, 101, 110, 100, 115, 122, 101, 114, 101, 110,
-			32, 34, 9, 195, 169, 16, 195, 188, 12, 5, 20, 5, 113, 48, 111, 55, 109, 47, 109, 23, 109, 55, 118, 47, 12, 0, 13, 81, 101, 108,
-			197, 145, 116, 116, 32, 18, 143, 4, 9, 195, 161, 11, 20, 195, 188, 14, 20, 5, 20, 195, 169, 19, 13, 9, 134, 1, 12, 1, 16, 195,
-			186, 13, 12, 137, 195, 161, 12, 4, 15, 26, 1, 20, 1, 13, 6, 131, 12, 195, 179, 13, 9, 198, 52, 83, 12, 21, 69, 0, 13, 0,
-			19, 144, 8, 1, 12, 195, 161, 12, 2, 195, 188, 14, 20, 5, 20, 195, 169, 19, 13, 50, 8, 9, 19, 11, 15, 12, 195, 161, 11, 37,
-			91, 49, 39, 55, 114, 49, 23, 65, 111, 49, 110, 47, 12, 109, 47, 113, 91, 113, 47, 0, 13, 81, 109, 197, 177, 107, 195, 182, 100, 116,
-			101, 116, 195, 169, 115, 195, 169, 116, 32, 8, 197, 8, 195, 199, 61, 64, 13, 7, 132, 1, 4, 195, 179, 13, 7, 132, 8, 195, 161, 7,
-			13, 0, 11, 136, 13, 1, 7, 195, 161, 8, 15, 26, 13, 14, 139, 6, 15, 12, 25, 195, 179, 9, 18, 1, 20, 1, 13, 11, 136, 16,
-			15, 14, 20, 10, 195, 161, 14, 13, 13, 138, 11, 15, 18, 195, 186, 1, 11, 11, 1, 12, 13, 10, 135, 13, 195, 161, 19, 26, 14, 9,
-			13, 0, 70, 10, 19, 26, 5, 14, 22, 5, 4, 197, 145, 11, 89, 109, 50, 84, 109, 72, 118, 49, 23, 49, 110, 52, 113, 71, 109, 50,
-			23, 48, 52, 115, 71, 114, 55, 50, 114, 49, 23, 49, 37, 0, 13, 83, 107, 195, 182, 114, 195, 169, 98, 101, 110, 32, 112, 114, 195, 179,
-			98, 195, 161, 108, 110, 195, 161, 107, 32, 107, 105, 32, 11, 136, 11, 195, 188, 12, 4, 5, 14, 9, 13, 0, 14, 139, 11, 5, 18, 5,
-			19, 11, 5, 4, 197, 145, 11, 13, 7, 132, 18, 195, 161, 4, 13, 0, 53, 73, 80, 20, 148, 4, 195, 65, 44, 176, 76, 47, 108, 52,
-			47, 108, 55, 65, 108, 49, 12, 108, 55, 10, 6, 15, 49, 108, 48, 76, 39, 55, 108, 47, 71, 108, 50, 0, 13, 81, 107, 97, 112, 99,
-			115, 111, 108, 97, 116, 98, 97, 110, 32, 13, 138, 13, 5, 7, 195, 169, 18, 20, 5, 14, 9, 13, 11, 136, 13, 5, 14, 20, 195, 188,
-			14, 11, 13, 8, 197, 80, 21, 129, 77, 160, 20, 0, 27, 6, 18, 195, 182, 22, 9, 4, 52, 110, 84, 37, 72, 23, 108, 107, 39, 88,
-			0, 13, 81, 97, 104, 104, 111, 122, 32, 9, 134, 18, 195, 182, 22, 9, 4, 13, 26, 66, 48, 80, 55, 109, 10, 6, 15, 84, 39, 49,
-			91, 114, 47, 0, 13, 81, 118, 111, 107, 115, 195, 161, 116, 32, 19, 144, 7, 25, 195, 179, 7, 25, 21, 12, 195, 161, 19, 195, 161, 8,
-			15, 26, 13, 29, 66, 48, 80, 55, 109, 23, 83, 39, 81, 23, 83, 40, 47, 50, 37, 0, 13, 82, 102, 111, 103, 32, 102, 117, 116, 110,
-			105, 32, 6, 195, 5, 2, 129, 13, 22, 194, 48, 80, 13, 82, 107, 101, 108, 108, 32, 115, 122, 195, 182, 103, 101, 122, 110, 101, 109, 32,
-			17, 142, 16, 15, 12, 7, 195, 161, 18, 13, 5, 19, 20, 5, 18, 20, 13, 7, 132, 12, 195, 161, 2, 13, 5, 194, 56, 16, 72, 5,
-			194, 48, 80, 13, 5, 194, 36, 176, 13, 20, 2, 52, 48, 50, 109, 79, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0,
-			22, 147, 16, 195, 169, 14, 26, 9, 14, 20, 195, 169, 26, 5, 20, 5, 11, 20, 197, 145, 12, 13, 11, 3, 95, 53, 88, 110, 47, 84,
-			109, 50, 0, 0, 10, 135, 15, 18, 19, 26, 195, 161, 7, 13, 30, 7, 15, 18, 19, 26, 195, 161, 7, 10, 39, 52, 89, 114, 81, 23,
-			83, 110, 55, 113, 0, 13, 81, 102, 195, 182, 108, 195, 169, 32, 8, 133, 20, 195, 169, 22, 5, 13, 7, 196, 32, 149, 20, 20, 13, 0,
-			8, 197, 76, 82, 148, 36, 176, 13, 11, 136, 8, 1, 19, 15, 14, 12, 195, 179, 13, 8, 197, 24, 241, 206, 36, 16, 13, 17, 142, 15,
-			16, 20, 9, 13, 1, 12, 9, 26, 195, 161, 12, 14, 9, 13, 0, 45, 67, 56, 20, 0, 50, 108, 48, 23, 108, 55, 108, 47, 12, 23,
-			47, 40, 72, 108, 47, 39, 91, 40, 55, 47, 0, 13, 82, 97, 108, 97, 116, 116, 32, 116, 117, 100, 97, 116, 111, 115, 117, 108, 116, 32,
-			50, 67, 56, 20, 0, 50, 108, 48, 23, 40, 47, 114, 50, 23, 89, 111, 55, 109, 47, 109, 47, 12, 23, 65, 109, 81, 0, 13, 83, 117,
-			116, 195, 161, 110, 32, 115, 122, 195, 188, 108, 101, 116, 101, 116, 116, 32, 109, 101, 103, 32, 19, 67, 56, 20, 0, 50, 108, 48, 10, 6,
-			15, 37, 91, 0, 13, 81, 105, 115, 32, 12, 137, 2, 9, 26, 1, 11, 15, 4, 195, 179, 13, 12, 137, 20, 195, 161, 18, 15, 12, 21,
-			14, 11, 13, 6, 195, 56, 20, 0, 13, 0, 12, 201, 37, 51, 69, 72, 85, 5, 44, 85, 0, 13, 22, 6, 20, 195, 161, 10, 1, 11,
-			47, 114, 57, 108, 49, 23, 37, 91, 0, 13, 81, 105, 115, 32, 9, 198, 28, 243, 132, 60, 195, 203, 13, 10, 199, 40, 21, 129, 76, 243,
-			14, 36, 13, 10, 199, 77, 160, 86, 5, 163, 212, 80, 13, 13, 138, 19, 195, 186, 10, 20, 8, 1, 20, 195, 179, 13, 13, 138, 7, 25,
-			1, 18, 1, 16, 15, 4, 195, 179, 13, 20, 67, 36, 146, 64, 107, 114, 52, 39, 65, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0,
-			25, 150, 20, 195, 182, 18, 22, 195, 169, 14, 25, 10, 1, 22, 1, 19, 12, 1, 20, 195, 161, 8, 15, 26, 13, 9, 198, 88, 243, 129,
-			48, 21, 0, 13, 11, 200, 44, 145, 137, 104, 85, 14, 36, 80, 13, 39, 11, 10, 195, 161, 18, 21, 12, 195, 169, 11, 15, 19, 57, 114,
-			52, 40, 55, 113, 49, 39, 91, 23, 109, 55, 109, 65, 109, 49, 0, 13, 81, 101, 108, 101, 109, 101, 107, 32, 54, 11, 13, 9, 12, 12,
-			9, 195, 161, 18, 4, 15, 19, 65, 37, 55, 37, 114, 52, 72, 39, 91, 23, 50, 113, 48, 89, 114, 65, 55, 114, 55, 114, 91, 0, 13,
-			81, 110, 195, 169, 112, 115, 122, 195, 161, 109, 108, 195, 161, 108, 195, 161, 115, 32, 23, 148, 195, 182, 14, 11, 15, 18, 13, 195, 161, 14,
-			25, 26, 1, 20, 15, 11, 14, 195, 161, 12, 13, 18, 6, 195, 161, 14, 20, 19, 26, 114, 109, 50, 47, 113, 109, 89, 0, 42, 42, 0,
-			12, 137, 195, 169, 18, 11, 5, 26, 5, 20, 20, 13, 9, 198, 28, 243, 132, 60, 195, 205, 13, 9, 134, 22, 195, 161, 12, 14, 1, 13,
-			9, 134, 13, 5, 12, 12, 195, 169, 13, 0, 7, 132, 12, 195, 161, 26, 13, 48, 70, 32, 149, 129, 80, 19, 0, 107, 37, 84, 108, 47,
-			108, 55, 23, 37, 55, 12, 109, 47, 113, 49, 109, 91, 113, 84, 109, 55, 0, 13, 81, 105, 108, 108, 101, 116, 195, 169, 107, 101, 115, 195,
-			169, 118, 101, 108, 32, 49, 15, 2, 197, 177, 14, 3, 19, 5, 12, 5, 11, 13, 195, 169, 14, 25, 71, 111, 50, 76, 109, 55, 109, 49,
-			65, 113, 67, 10, 6, 15, 79, 108, 50, 116, 57, 108, 0, 13, 81, 103, 121, 97, 110, 195, 186, 106, 97, 32, 16, 141, 8, 1, 19, 26,
-			14, 195, 161, 12, 8, 1, 20, 195, 179, 13, 13, 138, 5, 12, 197, 145, 6, 15, 18, 4, 21, 12, 13, 12, 137, 20, 5, 18, 13, 195,
-			169, 11, 5, 11, 13, 16, 141, 8, 1, 19, 26, 14, 195, 161, 12, 8, 1, 20, 195, 179, 13, 9, 198, 32, 149, 129, 80, 19, 0, 13,
-			19, 2, 53, 48, 110, 47, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0, 34, 4, 9, 4, 197, 145, 37, 72, 118, 23,
-			84, 108, 55, 115, 89, 112, 50, 117, 0, 13, 81, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 32, 30, 4, 9, 4, 197, 145,
-			37, 72, 118, 23, 84, 114, 52, 107, 108, 47, 115, 0, 13, 81, 118, 195, 161, 114, 104, 97, 116, 195, 179, 32, 13, 138, 16, 15, 14, 20,
-			10, 195, 161, 14, 1, 11, 13, 21, 4, 9, 4, 197, 145, 37, 72, 118, 23, 55, 109, 89, 0, 13, 81, 108, 101, 115, 122, 32, 15, 140,
-			11, 5, 18, 195, 188, 12, 5, 20, 5, 11, 2, 5, 13, 15, 140, 5, 12, 195, 169, 18, 195, 169, 19, 195, 169, 18, 5, 13, 15, 140,
-			7, 25, 197, 177, 10, 20, 197, 145, 14, 5, 22, 5, 13, 7, 132, 9, 4, 197, 145, 13, 12, 3, 95, 54, 88, 107, 108, 47, 84, 108,
-			50, 0, 0, 22, 4, 12, 195, 161, 20, 55, 114, 47, 23, 65, 108, 57, 72, 0, 13, 81, 109, 97, 106, 100, 32, 14, 139, 195, 182, 12,
-			20, 195, 182, 26, 14, 195, 169, 11, 13, 17, 142, 8, 1, 19, 26, 14, 195, 161, 12, 1, 20, 1, 11, 15, 18, 13, 7, 132, 12, 195,
-			161, 20, 13, 7, 132, 8, 195, 161, 20, 13, 0, 8, 197, 44, 21, 137, 13, 48, 13, 13, 138, 195, 188, 26, 12, 5, 20, 5, 11, 2,
-			5, 13, 16, 141, 18, 195, 161, 11, 195, 169, 18, 4, 5, 26, 5, 20, 20, 13, 0, 11, 136, 8, 1, 20, 195, 161, 19, 195, 186, 13,
-			13, 138, 10, 15, 7, 11, 195, 182, 18, 18, 5, 12, 13, 12, 137, 4, 195, 182, 14, 20, 5, 14, 5, 11, 13, 12, 137, 195, 182, 14,
-			195, 182, 11, 14, 5, 11, 13, 18, 143, 13, 5, 7, 9, 19, 13, 5, 18, 195, 169, 19, 195, 169, 18, 5, 13, 10, 135, 19, 26, 195,
-			161, 14, 14, 9, 13, 7, 132, 10, 195, 161, 18, 13, 0, 13, 138, 11, 195, 182, 22, 5, 20, 5, 12, 9, 11, 13, 26, 67, 76, 83,
-			64, 91, 109, 65, 23, 49, 109, 52, 111, 55, 47, 0, 13, 81, 107, 101, 114, 195, 188, 108, 116, 32, 12, 137, 3, 19, 9, 14, 195, 161,
-			12, 19, 26, 13, 19, 67, 76, 83, 64, 91, 109, 65, 23, 83, 39, 81, 0, 13, 81, 102, 111, 103, 32, 31, 67, 76, 83, 64, 91, 109,
-			65, 10, 6, 15, 71, 37, 89, 47, 39, 91, 108, 49, 0, 13, 81, 98, 105, 122, 116, 111, 115, 97, 107, 32, 19, 67, 76, 83, 64, 91,
-			109, 65, 10, 6, 15, 108, 88, 0, 13, 81, 97, 122, 32, 32, 67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 65, 40, 47, 108, 80, 12,
-			114, 49, 0, 13, 81, 109, 117, 116, 97, 116, 106, 195, 161, 107, 32, 25, 67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 65, 109, 52, 109,
-			49, 0, 13, 81, 109, 101, 114, 101, 107, 32, 42, 67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 51, 37, 108, 72, 50, 108, 49, 23, 84,
-			37, 89, 12, 108, 0, 13, 82, 114, 105, 97, 100, 110, 97, 107, 32, 118, 105, 115, 115, 122, 97, 32, 40, 67, 76, 83, 64, 91, 109, 65,
-			23, 109, 65, 55, 112, 47, 109, 47, 12, 23, 108, 52, 52, 108, 0, 13, 82, 101, 109, 108, 195, 173, 116, 101, 116, 116, 32, 97, 114, 114,
-			97, 32, 54, 67, 76, 83, 64, 91, 109, 65, 23, 57, 109, 55, 109, 50, 47, 113, 49, 47, 109, 55, 109, 50, 23, 110, 89, 12, 109, 81,
-			0, 13, 82, 106, 101, 108, 101, 110, 116, 195, 169, 107, 116, 101, 108, 101, 110, 32, 195, 182, 115, 115, 122, 101, 103, 32, 23, 67, 76, 83,
-			64, 91, 109, 65, 23, 47, 40, 47, 12, 108, 0, 13, 81, 116, 117, 100, 116, 97, 32, 21, 67, 76, 83, 64, 91, 109, 65, 23, 49, 109,
-			55, 12, 0, 13, 81, 107, 101, 108, 108, 32, 26, 67, 76, 83, 64, 91, 109, 65, 23, 49, 37, 88, 114, 52, 47, 0, 13, 81, 107, 105,
-			122, 195, 161, 114, 116, 32, 26, 6, 8, 9, 2, 195, 161, 19, 107, 37, 71, 114, 91, 23, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108,
-			116, 32, 41, 67, 76, 83, 64, 91, 109, 65, 23, 47, 40, 47, 12, 108, 49, 23, 65, 39, 50, 72, 108, 50, 37, 0, 13, 82, 116, 117,
-			100, 116, 97, 107, 32, 109, 111, 110, 100, 97, 110, 105, 32, 65, 67, 76, 83, 64, 91, 109, 65, 23, 83, 37, 79, 109, 55, 65, 109, 89,
-			47, 109, 47, 109, 47, 12, 23, 107, 108, 50, 81, 57, 109, 55, 88, 113, 91, 0, 13, 82, 102, 105, 103, 121, 101, 108, 109, 101, 122, 116,
-			101, 116, 101, 116, 116, 32, 104, 97, 110, 103, 106, 101, 108, 122, 195, 169, 115, 32, 66, 67, 76, 83, 64, 91, 109, 65, 23, 114, 55, 12,
-			23, 65, 115, 79, 12, 40, 49, 71, 108, 50, 23, 109, 55, 12, 109, 50, 118, 52, 37, 88, 50, 37, 0, 13, 83, 195, 161, 108, 108, 32,
-			109, 195, 179, 100, 106, 117, 107, 98, 97, 110, 32, 101, 108, 108, 101, 110, 197, 145, 114, 105, 122, 110, 105, 32, 19, 67, 76, 83, 64, 91,
-			109, 65, 65, 109, 79, 0, 13, 81, 109, 101, 103, 121, 32, 35, 67, 76, 83, 64, 91, 109, 65, 15, 108, 55, 49, 108, 55, 65, 108, 88,
-			50, 108, 49, 0, 13, 81, 97, 108, 107, 97, 108, 109, 97, 122, 110, 97, 107, 32, 24, 67, 76, 83, 64, 91, 109, 65, 15, 47, 110, 65,
-			37, 49, 0, 13, 81, 116, 195, 182, 109, 105, 107, 32, 15, 140, 195, 169, 16, 195, 188, 12, 5, 20, 5, 11, 2, 5, 13, 6, 195, 76,
-			83, 64, 13, 0, 7, 196, 32, 85, 5, 80, 13, 11, 136, 9, 14, 20, 195, 169, 26, 5, 20, 13, 32, 68, 32, 85, 5, 80, 107, 109,
-			47, 109, 47, 23, 107, 108, 89, 50, 114, 55, 47, 0, 13, 81, 104, 97, 115, 122, 110, 195, 161, 108, 116, 32, 11, 136, 11, 22, 195, 179,
-			20, 195, 161, 20, 13, 14, 139, 11, 5, 12, 12, 5, 14, 195, 169, 14, 5, 11, 13, 7, 196, 20, 197, 133, 80, 13, 7, 196, 20, 197,
-			133, 80, 13, 22, 147, 4, 9, 1, 7, 14, 15, 19, 26, 20, 9, 26, 195, 161, 12, 8, 1, 20, 195, 179, 13, 10, 134, 8, 1, 2,
-			195, 161, 18, 72, 8, 0, 17, 142, 16, 15, 12, 7, 195, 161, 18, 13, 5, 19, 20, 5, 18, 5, 13, 0, 22, 147, 22, 195, 169, 12,
-			5, 13, 195, 169, 14, 25, 5, 26, 195, 169, 19, 195, 169, 18, 5, 13, 53, 14, 11, 195, 182, 12, 20, 19, 195, 169, 7, 5, 11, 11,
-			5, 12, 49, 110, 55, 76, 113, 81, 109, 49, 12, 109, 55, 23, 83, 111, 81, 12, 23, 110, 89, 12, 109, 0, 13, 82, 102, 195, 188, 103,
-			103, 32, 195, 182, 115, 115, 122, 101, 32, 9, 198, 28, 243, 132, 60, 195, 196, 13, 20, 2, 54, 48, 107, 108, 47, 84, 108, 50, 12, 108,
-			55, 0, 44, 81, 32, 97, 108, 32, 0, 13, 138, 9, 12, 12, 5, 20, 195, 169, 11, 5, 19, 13, 15, 140, 3, 19, 195, 182, 11, 11,
-			5, 14, 195, 169, 19, 5, 13, 31, 67, 4, 131, 204, 108, 107, 39, 55, 23, 84, 108, 50, 23, 48, 113, 50, 88, 0, 13, 82, 118, 97,
-			110, 32, 112, 195, 169, 110, 122, 32, 11, 136, 13, 5, 7, 12, 5, 16, 197, 145, 13, 10, 135, 195, 173, 22, 5, 11, 5, 20, 13, 14,
-			67, 36, 195, 0, 37, 55, 55, 109, 47, 84, 109, 0, 25, 0, 11, 136, 16, 15, 14, 20, 10, 195, 161, 20, 13, 35, 7, 11, 9, 1,
-			4, 195, 161, 19, 49, 37, 108, 72, 114, 91, 23, 119, 113, 61, 57, 108, 37, 47, 0, 13, 81, 99, 195, 169, 108, 106, 97, 105, 116, 32,
-			12, 137, 11, 195, 182, 20, 8, 5, 20, 197, 145, 13, 26, 7, 11, 9, 1, 4, 195, 161, 19, 49, 37, 108, 72, 114, 91, 23, 55, 109,
-			89, 0, 81, 108, 101, 115, 122, 32, 12, 137, 3, 19, 9, 14, 195, 161, 12, 14, 9, 13, 12, 137, 195, 169, 18, 20, 8, 5, 20, 197,
-			145, 13, 16, 141, 6, 5, 12, 8, 1, 19, 26, 14, 195, 161, 12, 14, 9, 13, 10, 135, 11, 9, 1, 4, 195, 161, 19, 13, 12, 137,
-			11, 195, 182, 20, 8, 5, 20, 197, 145, 13, 12, 137, 11, 195, 169, 18, 8, 5, 20, 197, 145, 13, 7, 132, 4, 197, 145, 12, 13, 0,
-			44, 9, 20, 5, 18, 13, 195, 169, 11, 5, 20, 47, 109, 52, 65, 113, 49, 109, 47, 23, 84, 114, 91, 114, 52, 39, 55, 39, 49, 0,
-			13, 81, 118, 195, 161, 115, 195, 161, 114, 111, 108, 111, 107, 32, 37, 9, 22, 195, 161, 12, 20, 15, 26, 1, 20, 84, 114, 55, 47, 39,
-			88, 108, 47, 23, 109, 91, 109, 47, 113, 50, 0, 13, 81, 101, 115, 101, 116, 195, 169, 110, 32, 12, 201, 24, 241, 204, 4, 194, 207, 104,
-			243, 64, 13, 12, 137, 22, 195, 161, 12, 20, 15, 26, 1, 20, 13, 13, 138, 5, 12, 20, 195, 161, 18, 15, 12, 14, 9, 13, 13, 138,
-			5, 12, 195, 169, 18, 8, 5, 20, 197, 145, 13, 8, 133, 22, 195, 169, 18, 20, 13, 0, 14, 139, 5, 12, 197, 145, 195, 169, 12, 5,
-			20, 197, 177, 13, 12, 137, 14, 15, 18, 13, 195, 161, 12, 9, 19, 13, 17, 142, 5, 12, 197, 145, 195, 173, 18, 195, 161, 19, 15, 11,
-			1, 20, 13, 17, 142, 11, 195, 169, 18, 4, 197, 145, 195, 173, 22, 5, 11, 5, 20, 13, 12, 7, 95, 35, 45, 9, 11, 1, 9, 108,
-			37, 0, 0, 38, 10, 6, 5, 12, 195, 161, 12, 12, 195, 161, 19, 83, 109, 55, 114, 55, 12, 114, 91, 23, 89, 109, 52, 37, 50, 47,
-			0, 13, 81, 115, 122, 101, 114, 105, 110, 116, 32, 15, 140, 11, 9, 19, 26, 197, 177, 18, 8, 5, 20, 197, 145, 13, 10, 199, 80, 84,
-			141, 20, 195, 133, 44, 13, 10, 135, 13, 5, 12, 12, 197, 145, 12, 13, 0, 16, 141, 195, 182, 19, 26, 20, 195, 182, 14, 26, 195, 169,
-			19, 5, 13, 15, 140, 11, 195, 182, 26, 16, 15, 14, 20, 10, 195, 161, 20, 13, 28, 4, 195, 173, 18, 20, 112, 52, 47, 23, 49, 110,
-			67, 84, 109, 47, 0, 13, 81, 107, 195, 182, 110, 121, 118, 101, 116, 32, 40, 72, 60, 197, 129, 76, 21, 12, 4, 224, 39, 55, 84, 108,
-			91, 108, 47, 55, 108, 50, 23, 55, 109, 84, 113, 55, 52, 109, 0, 13, 81, 108, 101, 118, 195, 169, 108, 114, 101, 32, 16, 141, 5, 13,
-			12, 195, 169, 11, 5, 26, 20, 5, 20, 197, 145, 13, 11, 136, 2, 195, 169, 18, 195, 169, 18, 20, 13, 16, 141, 11, 195, 182, 19, 26,
-			195, 182, 14, 8, 5, 20, 197, 145, 13, 7, 132, 195, 173, 18, 20, 13, 7, 132, 2, 197, 145, 12, 72, 0, 47, 8, 20, 1, 18, 20,
-			10, 195, 161, 11, 47, 108, 52, 80, 114, 49, 23, 48, 52, 39, 71, 55, 113, 65, 114, 91, 50, 108, 49, 0, 13, 81, 112, 114, 111, 98,
-			108, 195, 169, 109, 195, 161, 115, 110, 97, 107, 32, 10, 135, 1, 26, 21, 20, 195, 161, 14, 13, 12, 137, 19, 26, 5, 18, 22, 20, 197,
-			145, 12, 13, 16, 141, 11, 195, 169, 18, 4, 197, 145, 195, 173, 22, 195, 169, 20, 13, 16, 141, 19, 26, 1, 2, 1, 4, 19, 195, 161,
-			7, 195, 161, 20, 13, 12, 137, 11, 1, 12, 11, 21, 12, 195, 161, 12, 13, 15, 140, 20, 195, 182, 18, 12, 5, 19, 26, 20, 195, 169,
-			19, 13, 9, 198, 16, 243, 7, 61, 163, 137, 13, 8, 133, 6, 195, 182, 12, 4, 13, 11, 136, 20, 1, 18, 20, 10, 195, 161, 11, 13,
-			0, 13, 138, 11, 5, 4, 22, 195, 169, 195, 169, 18, 20, 13, 13, 138, 22, 1, 12, 1, 13, 9, 195, 169, 18, 20, 13, 30, 6, 13,
-			9, 195, 169, 18, 20, 65, 37, 113, 52, 47, 15, 84, 108, 50, 15, 108, 88, 0, 13, 82, 118, 97, 110, 32, 97, 122, 32, 17, 142, 9,
-			14, 20, 5, 18, 6, 195, 169, 19, 26, 5, 11, 5, 20, 13, 24, 6, 13, 9, 195, 169, 18, 20, 65, 37, 113, 52, 47, 15, 50, 109,
-			65, 0, 13, 81, 110, 101, 109, 32, 13, 202, 57, 146, 76, 5, 66, 207, 104, 21, 15, 44, 13, 7, 132, 8, 195, 161, 26, 13, 9, 134,
-			5, 18, 18, 197, 145, 12, 13, 20, 2, 55, 48, 107, 109, 47, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 0, 30, 6,
-			22, 195, 161, 12, 9, 11, 84, 114, 55, 37, 49, 23, 108, 6, 15, 119, 113, 81, 0, 13, 82, 97, 32, 99, 195, 169, 103, 32, 13, 138,
-			11, 1, 16, 8, 1, 20, 10, 195, 161, 11, 13, 9, 134, 22, 195, 161, 12, 9, 11, 13, 8, 133, 22, 195, 169, 19, 26, 13, 9, 134,
-			22, 195, 169, 12, 9, 11, 13, 8, 133, 18, 195, 169, 19, 26, 13, 13, 3, 95, 56, 88, 67, 39, 55, 119, 84, 108, 50, 0, 0, 19,
-			144, 195, 161, 12, 12, 195, 161, 19, 16, 15, 14, 20, 10, 21, 11, 1, 20, 13, 12, 137, 13, 15, 14, 4, 1, 14, 195, 161, 13, 13,
-			11, 136, 20, 5, 18, 22, 18, 197, 145, 12, 13, 12, 137, 19, 26, 5, 18, 19, 26, 195, 161, 13, 13, 9, 198, 44, 86, 132, 21, 69,
-			0, 13, 15, 140, 12, 195, 169, 16, 195, 169, 19, 5, 11, 11, 5, 12, 13, 0, 19, 144, 3, 19, 1, 16, 1, 4, 195, 169, 11, 8,
-			21, 12, 12, 195, 161, 19, 13, 9, 134, 12, 195, 161, 14, 25, 1, 13, 11, 136, 195, 169, 18, 11, 5, 26, 9, 11, 13, 16, 141, 11,
-			195, 169, 16, 26, 195, 169, 19, 5, 11, 11, 5, 12, 13, 8, 133, 18, 195, 169, 19, 20, 13, 0, 17, 142, 195, 169, 12, 13, 195, 169,
-			14, 25, 195, 169, 20, 197, 145, 12, 13, 13, 138, 13, 15, 4, 5, 12, 12, 2, 197, 145, 12, 13, 10, 135, 19, 5, 7, 195, 173, 20,
-			9, 13, 10, 135, 11, 195, 161, 18, 20, 25, 1, 13, 13, 138, 8, 5, 12, 25, 195, 169, 18, 197, 145, 12, 13, 12, 136, 8, 195, 169,
-			20, 6, 197, 145, 14, 20, 22, 0, 16, 141, 20, 195, 182, 18, 22, 195, 169, 14, 25, 5, 11, 5, 14, 13, 16, 141, 12, 5, 10, 195,
-			161, 20, 19, 26, 195, 179, 8, 15, 26, 13, 16, 141, 19, 26, 15, 18, 195, 173, 20, 195, 161, 19, 195, 161, 14, 13, 14, 139, 16, 5,
-			20, 197, 145, 6, 9, 18, 197, 145, 12, 13, 14, 139, 8, 5, 12, 25, 26, 5, 20, 195, 169, 18, 20, 13, 14, 139, 18, 5, 14, 4,
-			10, 195, 169, 18, 197, 145, 12, 13, 0, 15, 140, 6, 5, 12, 195, 188, 12, 5, 20, 2, 197, 145, 12, 13, 14, 139, 11, 5, 26, 5,
-			12, 8, 5, 20, 197, 145, 11, 13, 18, 143, 8, 1, 19, 26, 14, 195, 161, 12, 8, 1, 20, 10, 195, 161, 11, 13, 13, 138, 1, 12,
-			11, 1, 20, 18, 195, 169, 19, 26, 13, 7, 196, 85, 64, 83, 80, 13, 0, 13, 138, 5, 18, 5, 4, 13, 195, 169, 14, 25, 5, 13,
-			8, 197, 44, 86, 132, 21, 64, 13, 15, 140, 19, 11, 195, 161, 12, 195, 161, 26, 20, 195, 161, 11, 13, 0, 30, 66, 44, 144, 49, 37,
-			23, 84, 39, 55, 47, 23, 112, 52, 84, 108, 0, 13, 82, 118, 111, 108, 116, 32, 195, 173, 114, 118, 97, 32, 39, 66, 44, 144, 49, 37,
-			23, 49, 109, 55, 12, 23, 47, 109, 52, 57, 109, 72, 50, 37, 109, 0, 13, 82, 107, 101, 108, 108, 32, 116, 101, 114, 106, 101, 100, 110,
-			105, 101, 32, 35, 66, 44, 144, 49, 37, 23, 49, 109, 55, 12, 23, 65, 39, 50, 72, 108, 50, 37, 0, 13, 82, 107, 101, 108, 108, 32,
-			109, 111, 110, 100, 97, 110, 105, 32, 32, 66, 44, 144, 49, 37, 10, 6, 15, 108, 88, 10, 6, 15, 110, 47, 55, 109, 47, 0, 13, 82,
-			97, 122, 32, 195, 182, 116, 108, 101, 116, 32, 29, 66, 44, 144, 10, 49, 37, 15, 83, 39, 81, 15, 112, 52, 50, 37, 0, 13, 82, 102,
-			111, 103, 32, 195, 173, 114, 110, 105, 32, 21, 66, 44, 144, 49, 37, 15, 47, 40, 79, 12, 108, 0, 13, 81, 116, 117, 100, 106, 97, 32,
-			25, 66, 44, 144, 49, 37, 55, 109, 107, 109, 47, 108, 88, 0, 13, 82, 108, 101, 104, 101, 116, 32, 97, 122, 32, 17, 142, 19, 26, 5,
-			13, 5, 20, 5, 19, 5, 11, 2, 197, 145, 12, 13, 17, 142, 18, 195, 169, 19, 26, 12, 5, 20, 5, 9, 18, 197, 145, 12, 13, 13,
-			138, 195, 169, 16, 195, 173, 20, 195, 169, 19, 20, 13, 5, 194, 44, 144, 13, 21, 2, 56, 48, 67, 39, 55, 119, 84, 108, 50, 12, 108,
-			55, 0, 44, 81, 32, 97, 108, 32, 0, 45, 16, 11, 195, 182, 12, 20, 19, 195, 169, 7, 22, 5, 20, 195, 169, 19, 9, 49, 110, 55,
-			76, 113, 81, 84, 109, 47, 113, 91, 37, 23, 91, 39, 52, 39, 50, 0, 13, 81, 115, 111, 114, 111, 110, 32, 37, 8, 195, 169, 18, 20,
-			5, 12, 13, 5, 113, 52, 47, 109, 55, 65, 109, 23, 83, 109, 55, 52, 115, 50, 37, 0, 13, 81, 102, 101, 108, 114, 195, 179, 110, 105,
-			32, 18, 143, 5, 12, 20, 197, 177, 14, 195, 169, 19, 195, 169, 18, 197, 145, 12, 13, 11, 136, 195, 169, 18, 20, 5, 12, 13, 5, 13,
-			15, 3, 95, 57, 88, 49, 37, 55, 109, 50, 119, 84, 109, 50, 0, 0, 7, 196, 56, 20, 10, 4, 13, 8, 133, 8, 195, 173, 18, 5,
-			13, 8, 133, 22, 195, 169, 22, 5, 13, 12, 5, 95, 35, 45, 18, 5, 113, 52, 109, 0, 21, 0, 11, 136, 12, 5, 19, 26, 195, 188,
-			14, 11, 72, 12, 137, 11, 5, 26, 5, 12, 195, 169, 19, 20, 13, 8, 197, 72, 18, 148, 4, 208, 13, 13, 138, 20, 195, 161, 18, 7,
-			25, 1, 12, 14, 9, 13, 16, 141, 195, 186, 10, 18, 1, 11, 5, 26, 4, 195, 169, 19, 20, 13, 8, 197, 8, 83, 142, 20, 208, 13,
-			0, 21, 146, 16, 15, 12, 7, 195, 161, 18, 13, 5, 19, 20, 5, 18, 5, 11, 11, 5, 12, 13, 0, 10, 199, 80, 84, 150, 21, 161,
-			84, 20, 13, 15, 7, 95, 35, 45, 20, 197, 145, 12, 113, 47, 118, 55, 0, 21, 0, 73, 21, 1, 11, 1, 4, 195, 161, 12, 25, 13,
-			5, 14, 20, 5, 19, 195, 173, 20, 195, 169, 19, 9, 108, 49, 108, 72, 114, 57, 65, 109, 50, 47, 109, 91, 112, 47, 113, 91, 37, 10,
-			6, 15, 109, 55, 84, 114, 52, 114, 91, 39, 49, 50, 108, 49, 0, 13, 81, 101, 108, 118, 195, 161, 114, 195, 161, 115, 111, 107, 110, 97,
-			107, 32, 7, 196, 44, 20, 19, 104, 13, 7, 132, 14, 195, 161, 12, 13, 12, 5, 95, 35, 45, 18, 1, 114, 52, 108, 0, 21, 0, 32,
-			8, 8, 1, 10, 20, 10, 195, 161, 11, 107, 108, 57, 80, 114, 49, 23, 84, 113, 81, 52, 109, 0, 13, 81, 118, 195, 169, 103, 114, 101,
-			32, 13, 138, 5, 12, 22, 195, 169, 7, 5, 26, 26, 5, 13, 23, 69, 80, 20, 148, 40, 16, 47, 108, 34, 80, 108, 10, 6, 15, 109,
-			55, 0, 13, 81, 101, 108, 32, 39, 69, 8, 243, 20, 60, 176, 71, 39, 55, 47, 39, 49, 10, 6, 15, 108, 57, 114, 50, 55, 108, 47,
-			108, 37, 0, 13, 81, 97, 106, 195, 161, 110, 108, 97, 116, 97, 105, 32, 40, 9, 22, 5, 22, 197, 145, 11, 11, 5, 12, 84, 109, 84,
-			118, 49, 12, 109, 55, 23, 49, 110, 47, 109, 50, 72, 118, 0, 13, 81, 107, 195, 182, 116, 101, 110, 100, 197, 145, 32, 31, 10, 20, 195,
-			161, 13, 1, 19, 26, 20, 10, 1, 47, 114, 65, 108, 89, 80, 108, 23, 108, 55, 114, 0, 13, 81, 97, 108, 195, 161, 32, 35, 10, 20,
-			195, 182, 2, 2, 14, 25, 9, 18, 5, 47, 110, 71, 67, 37, 52, 109, 23, 79, 109, 50, 81, 109, 0, 13, 81, 103, 121, 101, 110, 103,
-			101, 32, 15, 140, 20, 195, 182, 18, 5, 11, 19, 26, 195, 188, 14, 11, 13, 8, 197, 80, 20, 148, 40, 16, 13, 9, 198, 77, 161, 82,
-			21, 163, 137, 13, 8, 197, 48, 83, 142, 36, 80, 13, 0, 9, 198, 57, 147, 205, 84, 226, 192, 13, 13, 138, 22, 1, 12, 1, 11, 9,
-			20, 197, 145, 12, 13, 13, 138, 11, 195, 169, 18, 4, 5, 26, 5, 20, 20, 13, 12, 137, 19, 195, 186, 10, 20, 10, 195, 161, 11, 13,
-			23, 2, 57, 48, 49, 37, 55, 109, 50, 119, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 15, 8, 95, 35, 45, 195, 161,
-			8, 15, 26, 114, 107, 39, 88, 0, 13, 7, 95, 35, 45, 195, 169, 18, 5, 113, 52, 109, 0, 0, 15, 140, 8, 195, 169, 20, 22, 195,
-			169, 7, 195, 169, 18, 5, 13, 15, 140, 13, 195, 169, 18, 20, 195, 169, 11, 195, 169, 18, 5, 13, 9, 198, 24, 241, 193, 48, 213, 75,
-			13, 10, 135, 12, 5, 195, 161, 12, 12, 20, 13, 9, 198, 73, 81, 193, 48, 208, 83, 13, 14, 139, 22, 195, 169, 4, 5, 11, 5, 26,
-			5, 20, 20, 13, 13, 138, 19, 26, 195, 161, 18, 13, 1, 26, 9, 11, 13, 0, 11, 136, 16, 5, 18, 3, 18, 197, 145, 12, 22, 11,
-			136, 195, 169, 18, 4, 5, 11, 5, 12, 13, 35, 6, 19, 15, 18, 195, 161, 14, 91, 39, 52, 114, 50, 23, 49, 37, 72, 109, 52, 111,
-			55, 47, 0, 13, 81, 107, 105, 100, 101, 114, 195, 188, 108, 116, 32, 66, 7, 20, 21, 4, 20, 195, 161, 11, 47, 40, 47, 12, 114, 49,
-			23, 83, 39, 52, 72, 112, 47, 108, 50, 37, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 47, 0, 13, 83, 102, 111, 114, 100, 195,
-			173, 116, 97, 110, 105, 32, 97, 32, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116, 32, 60, 6, 15, 18, 2, 195, 161, 14, 39,
-			52, 71, 114, 50, 23, 84, 37, 49, 47, 39, 52, 23, 65, 37, 50, 37, 89, 47, 109, 52, 109, 55, 50, 110, 49, 0, 13, 82, 118, 105,
-			107, 116, 111, 114, 32, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108, 110, 195, 182, 107, 32, 10, 135, 20, 21, 4, 20, 195, 161, 11,
-			13, 7, 196, 12, 149, 137, 48, 13, 9, 134, 19, 15, 18, 195, 161, 14, 13, 0, 13, 138, 195, 182, 18, 195, 182, 13, 195, 169, 18, 5,
-			13, 12, 137, 19, 5, 7, 195, 173, 20, 5, 20, 20, 13, 7, 132, 14, 197, 145, 19, 13, 9, 198, 44, 81, 22, 21, 163, 133, 13, 5,
-			130, 57, 53, 13, 15, 140, 8, 1, 19, 26, 14, 195, 161, 12, 10, 195, 161, 11, 13, 15, 140, 19, 26, 15, 12, 7, 195, 161, 12, 10,
-			195, 161, 11, 13, 12, 137, 4, 5, 18, 195, 173, 20, 5, 20, 20, 13, 8, 133, 197, 145, 11, 5, 20, 13, 8, 197, 32, 83, 25, 21,
-			48, 76, 0, 12, 137, 18, 5, 14, 4, 5, 12, 197, 145, 11, 13, 9, 134, 6, 15, 7, 195, 161, 20, 13, 10, 135, 8, 5, 22, 195,
-			173, 20, 9, 13, 13, 138, 19, 26, 195, 188, 12, 5, 20, 5, 20, 20, 13, 12, 137, 19, 26, 195, 161, 13, 12, 195, 161, 11, 13, 9,
-			134, 20, 5, 8, 195, 161, 20, 13, 7, 132, 26, 195, 161, 18, 13, 7, 132, 22, 195, 161, 18, 13, 12, 6, 95, 35, 45, 195, 161, 20,
-			114, 47, 0, 21, 0, 31, 8, 12, 195, 169, 16, 195, 169, 19, 5, 55, 113, 48, 113, 91, 109, 23, 109, 55, 12, 109, 50, 0, 13, 81,
-			101, 108, 108, 101, 110, 32, 46, 71, 77, 161, 82, 88, 86, 133, 80, 89, 109, 52, 84, 109, 88, 109, 47, 10, 6, 15, 65, 117, 49, 110,
-			47, 12, 109, 47, 12, 109, 0, 13, 81, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 116, 101, 32, 37, 8, 2, 195, 169, 18, 12, 5,
-			20, 9, 71, 113, 52, 55, 109, 47, 37, 23, 72, 112, 57, 108, 49, 52, 108, 0, 13, 81, 100, 195, 173, 106, 97, 107, 114, 97, 32, 30,
-			71, 24, 244, 132, 84, 194, 1, 80, 83, 39, 52, 72, 40, 55, 107, 108, 47, 23, 109, 55, 118, 0, 13, 81, 101, 108, 197, 145, 32, 14,
-			139, 6, 18, 9, 19, 19, 195, 173, 20, 5, 20, 20, 13, 10, 199, 77, 161, 82, 88, 86, 133, 80, 13, 8, 133, 19, 26, 197, 145, 18,
-			13, 12, 137, 20, 1, 22, 1, 19, 26, 195, 161, 14, 20, 0, 12, 137, 11, 195, 169, 18, 4, 195, 169, 19, 5, 13, 11, 136, 195, 169,
-			12, 197, 145, 11, 5, 20, 13, 14, 139, 2, 195, 173, 18, 195, 161, 12, 20, 195, 161, 11, 13, 16, 141, 8, 195, 161, 12, 195, 179, 26,
-			1, 20, 15, 11, 2, 1, 13, 7, 132, 14, 197, 145, 20, 13, 0, 15, 140, 6, 9, 14, 15, 13, 195, 173, 20, 19, 195, 161, 11, 13,
-			16, 141, 13, 197, 177, 11, 195, 182, 4, 20, 5, 20, 5, 20, 20, 13, 0, 22, 67, 40, 240, 130, 57, 39, 71, 12, 23, 84, 39, 55,
-			47, 0, 13, 81, 118, 111, 108, 116, 32, 38, 67, 40, 240, 130, 57, 39, 71, 12, 10, 6, 15, 47, 114, 65, 39, 81, 108, 47, 114, 91,
-			108, 0, 13, 81, 116, 195, 161, 109, 111, 103, 97, 116, 195, 161, 115, 97, 32, 47, 70, 48, 82, 5, 80, 85, 20, 55, 109, 107, 109, 47,
-			109, 47, 12, 23, 84, 37, 90, 81, 114, 55, 50, 37, 23, 108, 89, 47, 0, 13, 82, 118, 105, 122, 115, 103, 195, 161, 108, 110, 105, 32,
-			97, 122, 116, 32, 36, 70, 48, 82, 5, 80, 85, 20, 55, 109, 107, 109, 47, 109, 47, 12, 23, 89, 114, 65, 114, 52, 108, 0, 13, 81,
-			115, 122, 195, 161, 109, 195, 161, 114, 97, 32, 17, 142, 20, 195, 182, 18, 20, 195, 169, 14, 8, 5, 20, 5, 20, 20, 13, 18, 143, 13,
-			5, 7, 5, 12, 197, 145, 26, 195, 169, 19, 195, 169, 18, 5, 13, 12, 137, 11, 195, 169, 18, 14, 195, 188, 14, 11, 13, 9, 198, 48,
-			82, 5, 80, 85, 20, 13, 6, 195, 40, 240, 130, 13, 0, 42, 11, 6, 21, 14, 11, 3, 9, 195, 179, 11, 1, 20, 83, 40, 50, 49,
-			119, 37, 115, 49, 108, 47, 23, 109, 55, 12, 114, 47, 115, 0, 13, 81, 101, 108, 108, 195, 161, 116, 195, 179, 32, 14, 139, 195, 161, 12,
-			12, 1, 16, 15, 20, 195, 161, 20, 13, 9, 134, 5, 13, 12, 197, 145, 19, 13, 14, 139, 6, 21, 14, 11, 3, 9, 195, 179, 11, 1,
-			20, 13, 14, 139, 10, 5, 12, 26, 195, 169, 19, 5, 11, 5, 20, 13, 10, 135, 195, 186, 20, 10, 195, 161, 20, 13, 10, 135, 195, 186,
-			20, 10, 195, 161, 20, 13, 14, 139, 195, 188, 26, 5, 14, 5, 20, 5, 11, 5, 20, 13, 17, 142, 11, 9, 6, 15, 7, 195, 161, 19,
-			15, 12, 20, 195, 161, 11, 13, 8, 133, 6, 195, 182, 14, 14, 13, 0, 16, 141, 20, 195, 182, 14, 11, 18, 5, 20, 5, 8, 5, 20,
-			9, 13, 14, 139, 1, 12, 11, 1, 12, 13, 1, 26, 195, 161, 19, 13, 12, 137, 11, 195, 169, 16, 26, 195, 169, 19, 5, 13, 12, 137,
-			6, 9, 26, 5, 20, 195, 169, 19, 5, 13, 11, 136, 11, 195, 179, 4, 15, 11, 1, 20, 13, 40, 7, 6, 5, 12, 8, 197, 145, 19,
-			83, 109, 55, 107, 118, 91, 23, 37, 72, 118, 89, 108, 49, 71, 108, 50, 0, 13, 81, 105, 100, 197, 145, 115, 122, 97, 107, 98, 97, 110,
-			32, 45, 7, 6, 5, 12, 8, 197, 145, 19, 83, 109, 55, 107, 118, 91, 23, 47, 109, 52, 111, 55, 109, 47, 109, 49, 23, 37, 91, 0,
-			13, 82, 116, 101, 114, 195, 188, 108, 101, 116, 101, 107, 32, 105, 115, 32, 12, 137, 22, 5, 26, 5, 20, 195, 169, 19, 5, 13, 15, 140,
-			20, 5, 18, 195, 188, 12, 5, 20, 5, 11, 5, 20, 13, 15, 140, 13, 197, 177, 22, 5, 12, 5, 20, 5, 11, 5, 20, 13, 10, 135,
-			6, 5, 12, 8, 197, 145, 19, 13, 12, 137, 11, 195, 169, 16, 26, 195, 169, 19, 5, 13, 0, 53, 15, 20, 5, 12, 5, 16, 195, 188,
-			12, 195, 169, 19, 5, 11, 5, 14, 47, 109, 55, 109, 48, 111, 55, 113, 91, 109, 49, 109, 50, 10, 6, 15, 72, 39, 55, 81, 39, 88,
-			37, 49, 0, 13, 81, 100, 111, 108, 103, 111, 122, 105, 107, 32, 48, 13, 195, 186, 10, 195, 173, 20, 195, 161, 19, 15, 11, 1, 20, 116,
-			57, 112, 47, 114, 91, 39, 49, 108, 47, 15, 71, 109, 84, 109, 88, 109, 47, 50, 37, 0, 13, 81, 98, 101, 118, 101, 122, 101, 116, 110,
-			105, 32, 12, 137, 4, 9, 195, 161, 11, 15, 11, 1, 20, 13, 16, 141, 8, 1, 19, 26, 14, 195, 161, 12, 195, 179, 11, 1, 20, 13,
-			11, 136, 9, 19, 11, 15, 12, 195, 161, 19, 13, 7, 196, 48, 20, 15, 44, 13, 15, 140, 19, 5, 7, 195, 173, 20, 5, 14, 195, 188,
-			14, 11, 13, 12, 137, 6, 195, 161, 10, 12, 10, 195, 161, 20, 13, 12, 137, 16, 15, 19, 26, 20, 10, 195, 161, 20, 13, 8, 133, 19,
-			26, 195, 169, 11, 13, 7, 196, 57, 145, 82, 80, 13, 11, 6, 95, 35, 45, 195, 169, 14, 113, 50, 0, 0, 14, 139, 7, 1, 18, 1,
-			14, 20, 195, 161, 12, 14, 9, 13, 22, 147, 11, 5, 26, 4, 5, 13, 195, 169, 14, 25, 5, 26, 195, 169, 19, 195, 169, 18, 5, 13,
-			22, 5, 20, 197, 177, 14, 20, 47, 117, 50, 47, 10, 6, 15, 49, 37, 0, 13, 81, 107, 105, 32, 20, 5, 20, 197, 177, 14, 20, 47,
-			117, 50, 47, 23, 109, 55, 0, 13, 81, 101, 108, 32, 14, 139, 13, 197, 177, 11, 195, 182, 4, 195, 169, 19, 5, 13, 8, 197, 32, 83,
-			25, 20, 64, 13, 8, 133, 20, 197, 177, 14, 20, 13, 12, 137, 10, 21, 20, 20, 1, 20, 195, 161, 19, 13, 12, 137, 195, 186, 10, 195,
-			173, 20, 195, 161, 19, 13, 8, 133, 20, 195, 169, 18, 20, 13, 8, 133, 8, 195, 173, 18, 20, 13, 8, 133, 20, 197, 177, 14, 20, 13,
-			0, 18, 143, 13, 195, 179, 4, 15, 19, 195, 173, 20, 195, 161, 19, 195, 161, 20, 13, 7, 132, 4, 195, 173, 10, 13, 14, 139, 3, 19,
-			15, 16, 15, 18, 20, 10, 195, 161, 20, 13, 15, 140, 6, 18, 9, 19, 19, 195, 173, 20, 195, 169, 19, 5, 13, 49, 11, 11, 9, 1,
-			4, 195, 161, 19, 15, 11, 1, 20, 49, 37, 108, 72, 114, 91, 39, 49, 108, 47, 23, 48, 52, 109, 83, 109, 52, 114, 61, 57, 108, 0,
-			13, 81, 112, 114, 101, 102, 101, 114, 195, 161, 108, 106, 97, 32, 18, 143, 6, 5, 10, 12, 5, 19, 26, 20, 195, 169, 19, 5, 11, 5,
-			20, 13, 14, 139, 12, 195, 169, 16, 195, 169, 19, 5, 11, 5, 20, 13, 18, 143, 6, 5, 12, 16, 21, 8, 195, 173, 20, 195, 161, 19,
-			195, 161, 20, 13, 19, 144, 11, 195, 182, 12, 20, 19, 195, 169, 7, 22, 5, 20, 195, 169, 19, 5, 13, 13, 138, 21, 20, 1, 19, 195,
-			173, 20, 195, 161, 19, 13, 9, 134, 16, 195, 169, 14, 26, 20, 13, 8, 133, 20, 197, 145, 12, 5, 13, 0, 15, 140, 11, 195, 169, 18,
-			4, 195, 169, 19, 5, 11, 5, 20, 13, 15, 140, 2, 5, 6, 15, 12, 25, 195, 161, 19, 195, 161, 20, 13, 52, 6, 11, 195, 169, 18,
-			20, 5, 49, 113, 52, 47, 109, 10, 6, 15, 83, 109, 55, 23, 65, 116, 55, 47, 10, 6, 15, 107, 113, 47, 109, 50, 0, 13, 83, 102,
-			101, 108, 32, 109, 195, 186, 108, 116, 32, 104, 195, 169, 116, 101, 110, 32, 19, 144, 13, 195, 179, 4, 15, 19, 195, 173, 20, 195, 161, 19,
-			15, 11, 1, 20, 13, 9, 134, 11, 195, 169, 18, 20, 5, 13, 13, 4, 95, 15, 7, 15, 107, 39, 52, 81, 39, 49, 0, 0, 34, 70,
-			80, 83, 10, 21, 49, 78, 47, 109, 55, 57, 109, 91, 109, 50, 23, 107, 111, 57, 113, 50, 0, 13, 81, 104, 195, 188, 108, 121, 195, 169,
-			110, 32, 16, 141, 11, 195, 169, 19, 26, 195, 188, 12, 195, 169, 11, 5, 20, 13, 10, 135, 2, 5, 12, 197, 145, 12, 5, 13, 11, 200,
-			5, 52, 218, 60, 227, 153, 4, 192, 13, 20, 145, 5, 12, 197, 145, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 20, 13, 7,
-			196, 36, 65, 74, 20, 13, 16, 141, 19, 26, 195, 161, 14, 4, 195, 169, 11, 21, 11, 1, 20, 13, 15, 140, 2, 5, 195, 161, 12, 12,
-			195, 173, 20, 195, 161, 19, 13, 16, 141, 11, 195, 169, 19, 26, 195, 188, 12, 195, 169, 11, 5, 20, 13, 20, 145, 19, 26, 15, 12, 7,
-			195, 161, 12, 20, 1, 20, 195, 161, 19, 195, 161, 20, 13, 0, 17, 142, 9, 4, 197, 145, 10, 195, 161, 18, 195, 161, 19, 195, 161, 20,
-			13, 21, 146, 19, 26, 15, 12, 7, 195, 161, 12, 20, 1, 20, 195, 161, 19, 15, 11, 1, 20, 13, 44, 18, 19, 26, 15, 12, 7, 195,
-			161, 12, 20, 1, 20, 195, 161, 19, 15, 11, 1, 20, 89, 39, 55, 81, 114, 55, 47, 108, 47, 114, 91, 39, 49, 108, 47, 23, 37, 91,
-			0, 13, 81, 105, 115, 32, 11, 136, 195, 173, 7, 195, 169, 18, 20, 5, 13, 21, 146, 3, 19, 1, 20, 12, 1, 11, 15, 26, 20, 1,
-			20, 195, 161, 19, 195, 161, 20, 13, 11, 136, 195, 173, 7, 195, 169, 18, 20, 5, 13, 8, 133, 19, 26, 195, 169, 12, 13, 0, 18, 143,
-			22, 195, 161, 12, 1, 19, 26, 20, 195, 161, 19, 15, 11, 1, 20, 13, 22, 147, 13, 5, 7, 22, 195, 161, 12, 20, 15, 26, 20, 1,
-			20, 195, 161, 19, 195, 161, 20, 13, 18, 143, 11, 195, 182, 26, 22, 195, 169, 12, 5, 13, 195, 169, 14, 25, 20, 13, 9, 198, 52, 243,
-			137, 80, 244, 128, 13, 22, 147, 22, 9, 19, 19, 26, 1, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 20, 13, 0, 10, 199,
-			77, 163, 198, 81, 97, 82, 80, 13, 10, 199, 28, 243, 132, 60, 197, 21, 44, 13, 10, 199, 32, 19, 135, 77, 161, 82, 80, 13, 11, 136,
-			22, 195, 169, 12, 9, 20, 5, 11, 13, 6, 195, 88, 243, 148, 13, 6, 195, 88, 243, 148, 13, 0, 19, 68, 57, 145, 76, 88, 67, 109,
-			55, 84, 23, 37, 91, 0, 13, 81, 105, 115, 32, 11, 200, 65, 35, 199, 72, 19, 77, 4, 192, 13, 12, 137, 8, 9, 20, 20, 195, 169,
-			20, 5, 11, 13, 7, 132, 20, 195, 186, 12, 13, 0, 8, 197, 32, 83, 25, 21, 64, 13, 8, 197, 77, 161, 77, 21, 64, 13, 9, 198,
-			4, 192, 84, 80, 144, 75, 13, 8, 197, 40, 21, 149, 49, 64, 13, 0, 19, 144, 22, 1, 12, 195, 179, 19, 26, 195, 173, 14, 197, 177,
-			20, 12, 5, 14, 13, 31, 7, 13, 9, 12, 12, 9, 195, 179, 65, 37, 55, 37, 115, 23, 83, 39, 52, 37, 50, 47, 0, 13, 81, 102,
-			111, 114, 105, 110, 116, 32, 12, 201, 36, 225, 193, 80, 192, 78, 84, 176, 129, 13, 0, 27, 152, 7, 25, 195, 179, 7, 25, 19, 26, 5,
-			18, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 195, 161, 20, 13, 9, 198, 20, 195, 79, 56, 69, 1, 13, 7, 195, 52, 147, 148,
-			102, 13, 7, 195, 52, 147, 148, 13, 23, 0, 10, 135, 13, 5, 7, 195, 169, 18, 9, 13, 0, 11, 136, 12, 195, 169, 20, 5, 26, 14,
-			9, 13, 13, 138, 19, 26, 5, 13, 20, 1, 14, 195, 186, 11, 13, 6, 131, 195, 161, 14, 72, 18, 69, 88, 68, 218, 77, 160, 84, 113,
-			72, 113, 109, 89, 109, 89, 0, 42, 42, 0, 20, 66, 56, 80, 50, 109, 23, 50, 113, 88, 88, 0, 13, 81, 110, 195, 169, 122, 122, 32,
-			24, 66, 56, 80, 50, 109, 10, 6, 15, 47, 109, 50, 12, 113, 0, 13, 81, 116, 101, 110, 110, 195, 169, 32, 14, 139, 11, 5, 18, 5,
-			19, 197, 145, 10, 195, 188, 11, 13, 9, 198, 85, 64, 90, 61, 69, 0, 13, 9, 198, 32, 83, 25, 21, 69, 0, 13, 5, 194, 56, 80,
-			13, 0, 22, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 32, 67, 52, 18, 132, 65,
-			108, 57, 72, 10, 6, 15, 65, 117, 49, 110, 72, 50, 37, 0, 13, 81, 109, 197, 177, 107, 195, 182, 100, 110, 105, 32, 34, 67, 52, 18,
-			132, 65, 108, 57, 72, 10, 6, 15, 55, 109, 107, 109, 47, 118, 84, 113, 0, 13, 81, 108, 101, 104, 101, 116, 197, 145, 118, 195, 169, 32,
-			40, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 65, 109, 81, 47, 109, 49, 37, 50, 47, 109, 50, 37, 0, 13, 81, 109, 101, 103,
-			116, 101, 107, 105, 110, 116, 101, 110, 105, 32, 33, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 107, 108, 55, 81, 108, 47, 50, 37,
-			0, 13, 81, 104, 97, 108, 108, 103, 97, 116, 110, 105, 32, 26, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 52, 108, 57, 47, 108,
-			0, 13, 81, 114, 97, 106, 116, 97, 32, 15, 140, 195, 169, 18, 4, 5, 11, 5, 19, 19, 195, 169, 7, 13, 6, 195, 52, 18, 132, 13,
-			0, 10, 135, 195, 161, 18, 21, 12, 14, 9, 13, 9, 134, 8, 195, 169, 20, 5, 14, 13, 7, 196, 44, 20, 14, 36, 13, 7, 196, 57,
-			145, 76, 80, 13, 6, 131, 195, 161, 13, 13, 15, 4, 95, 50, 17, 24, 65, 114, 91, 39, 72, 37, 49, 108, 0, 0, 40, 69, 20, 195,
-			5, 56, 144, 109, 55, 12, 109, 50, 37, 23, 83, 109, 55, 12, 113, 48, 113, 91, 52, 109, 0, 13, 81, 102, 101, 108, 108, 195, 169, 112,
-			195, 169, 115, 114, 101, 32, 8, 197, 88, 19, 1, 44, 144, 13, 10, 135, 6, 195, 169, 18, 6, 9, 14, 13, 8, 197, 28, 243, 66, 72,
-			16, 13, 0, 35, 5, 195, 169, 22, 18, 5, 113, 84, 52, 109, 10, 6, 15, 49, 113, 89, 111, 55, 50, 109, 0, 13, 81, 107, 195, 169,
-			115, 122, 195, 188, 108, 110, 101, 32, 8, 133, 195, 169, 22, 18, 5, 13, 11, 136, 3, 19, 195, 182, 11, 11, 5, 14, 13, 10, 135, 20,
-			21, 4, 10, 195, 161, 11, 13, 10, 135, 20, 21, 4, 10, 195, 161, 11, 13, 6, 131, 197, 145, 11, 13, 7, 131, 197, 145, 11, 13, 8,
-			0, 14, 139, 20, 195, 188, 14, 20, 5, 20, 195, 169, 19, 20, 13, 12, 201, 72, 83, 132, 20, 194, 197, 104, 83, 0, 13, 14, 139, 6,
-			5, 12, 12, 195, 169, 16, 195, 169, 19, 20, 13, 0, 10, 135, 195, 169, 12, 5, 20, 2, 5, 13, 9, 134, 10, 15, 7, 195, 161, 14,
-			13, 12, 137, 19, 26, 195, 161, 14, 10, 195, 161, 11, 13, 8, 133, 20, 195, 161, 14, 3, 13, 7, 132, 18, 195, 186, 4, 13, 7, 196,
-			77, 161, 80, 80, 20, 0, 20, 145, 8, 1, 12, 195, 161, 12, 2, 195, 188, 14, 20, 5, 20, 195, 169, 19, 20, 13, 13, 138, 7, 25,
-			195, 161, 18, 20, 10, 195, 161, 11, 13, 12, 201, 29, 145, 82, 52, 82, 197, 44, 85, 0, 13, 24, 149, 2, 197, 177, 14, 3, 19, 5,
-			12, 5, 11, 13, 195, 169, 14, 25, 5, 11, 195, 169, 18, 20, 13, 0, 15, 66, 49, 144, 109, 55, 55, 37, 48, 89, 37, 55, 39, 50,
-			0, 21, 146, 5, 7, 25, 195, 188, 20, 20, 13, 197, 177, 11, 195, 182, 4, 195, 169, 19, 20, 13, 11, 136, 12, 5, 12, 11, 195, 169,
-			19, 26, 13, 9, 198, 4, 64, 84, 60, 176, 84, 13, 9, 198, 88, 19, 1, 44, 149, 0, 13, 7, 132, 2, 197, 145, 18, 13, 5, 194,
-			61, 48, 72, 8, 132, 2, 195, 161, 18, 72, 8, 0, 34, 8, 12, 195, 161, 20, 19, 26, 9, 11, 55, 114, 119, 12, 37, 49, 10, 6,
-			15, 47, 109, 107, 114, 47, 0, 13, 81, 116, 101, 104, 195, 161, 116, 32, 31, 3, 195, 161, 20, 114, 47, 23, 108, 6, 23, 72, 52, 114,
-			84, 114, 47, 0, 13, 82, 97, 32, 100, 114, 195, 161, 118, 195, 161, 116, 32, 10, 135, 11, 195, 182, 26, 197, 177, 12, 13, 11, 136, 12,
-			195, 161, 20, 19, 26, 9, 11, 13, 6, 131, 197, 145, 20, 13, 6, 131, 195, 161, 20, 13, 15, 7, 95, 35, 45, 18, 197, 145, 12, 113,
-			52, 118, 55, 0, 21, 0, 12, 137, 19, 26, 195, 161, 14, 20, 195, 161, 11, 13, 24, 68, 36, 225, 21, 48, 37, 50, 72, 40, 55, 23,
-			65, 108, 57, 72, 0, 13, 81, 109, 97, 106, 100, 32, 11, 200, 32, 83, 25, 21, 69, 5, 76, 80, 13, 38, 68, 36, 225, 21, 48, 37,
-			50, 72, 40, 55, 23, 108, 6, 15, 83, 109, 55, 107, 118, 88, 109, 47, 0, 13, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116,
-			32, 16, 141, 2, 9, 26, 20, 15, 19, 195, 173, 20, 10, 195, 161, 11, 13, 7, 196, 24, 150, 133, 80, 13, 12, 137, 10, 195, 161, 18,
-			1, 4, 195, 169, 11, 13, 11, 136, 8, 5, 12, 25, 18, 197, 145, 12, 13, 13, 4, 95, 48, 77, 52, 71, 37, 55, 55, 37, 115, 0,
-			0, 34, 9, 4, 195, 182, 14, 20, 195, 182, 20, 20, 72, 110, 50, 47, 110, 47, 12, 23, 108, 52, 52, 115, 55, 0, 13, 81, 97, 114,
-			114, 195, 179, 108, 32, 14, 139, 2, 5, 22, 195, 169, 20, 5, 12, 8, 5, 26, 13, 12, 137, 195, 169, 22, 5, 11, 2, 197, 145, 12,
-			13, 15, 140, 13, 21, 14, 11, 1, 20, 195, 161, 18, 19, 1, 9, 13, 12, 201, 40, 21, 129, 76, 192, 84, 60, 176, 84, 13, 12, 137,
-			195, 169, 22, 5, 11, 2, 197, 145, 12, 13, 6, 131, 197, 145, 18, 13, 12, 137, 4, 195, 182, 14, 20, 195, 182, 20, 20, 13, 0, 14,
-			139, 2, 195, 188, 14, 20, 5, 19, 19, 195, 169, 11, 13, 13, 138, 12, 5, 11, 195, 182, 20, 195, 182, 20, 20, 13, 10, 135, 6, 15,
-			18, 18, 195, 161, 19, 13, 13, 4, 95, 48, 77, 50, 65, 37, 55, 55, 37, 115, 0, 0, 14, 139, 22, 195, 169, 12, 5, 11, 5, 4,
-			5, 20, 20, 13, 10, 135, 6, 195, 169, 18, 6, 9, 20, 13, 10, 135, 8, 9, 195, 161, 14, 25, 20, 13, 6, 195, 88, 243, 128, 13,
-			6, 195, 52, 147, 132, 13, 15, 4, 95, 48, 77, 51, 65, 37, 55, 55, 37, 114, 52, 72, 0, 0, 9, 134, 13, 195, 169, 20, 5, 18,
-			13, 11, 136, 15, 12, 4, 1, 12, 195, 161, 20, 13, 12, 137, 20, 5, 8, 5, 20, 10, 195, 188, 11, 13, 11, 136, 11, 5, 18, 195,
-			188, 12, 5, 20, 13, 11, 136, 7, 195, 169, 16, 5, 11, 5, 20, 13, 9, 198, 24, 241, 193, 48, 208, 90, 13, 0, 45, 13, 5, 12,
-			12, 5, 14, 197, 145, 18, 26, 195, 182, 20, 20, 109, 55, 12, 109, 50, 110, 52, 88, 110, 47, 12, 23, 109, 79, 91, 113, 81, 109, 0,
-			13, 81, 101, 103, 121, 115, 195, 169, 103, 101, 32, 12, 137, 9, 4, 5, 7, 5, 19, 195, 173, 20, 13, 9, 134, 11, 195, 169, 16, 5,
-			19, 13, 11, 4, 95, 48, 77, 49, 109, 88, 109, 52, 0, 0, 9, 134, 10, 15, 7, 195, 161, 20, 13, 9, 134, 10, 195, 182, 8, 5,
-			20, 13, 61, 16, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 10, 195, 161, 8, 15, 26, 48, 52, 39, 71, 55, 113, 65, 114, 57, 114,
-			107, 39, 88, 23, 107, 108, 91, 39, 50, 55, 112, 47, 39, 47, 12, 108, 0, 13, 81, 104, 97, 115, 111, 110, 108, 195, 173, 116, 111, 116,
-			116, 97, 32, 9, 134, 195, 161, 18, 195, 161, 20, 13, 10, 135, 20, 1, 18, 20, 195, 161, 19, 13, 13, 138, 195, 173, 7, 195, 169, 18,
-			5, 20, 5, 20, 13, 9, 134, 12, 195, 161, 14, 25, 20, 13, 13, 4, 95, 2, 18, 22, 83, 113, 55, 49, 110, 52, 0, 0, 8, 67,
-			17, 164, 192, 75, 113, 0, 14, 139, 10, 15, 7, 19, 195, 169, 18, 20, 197, 145, 20, 13, 18, 143, 20, 5, 12, 5, 16, 8, 5, 12,
-			25, 195, 169, 18, 197, 145, 12, 13, 22, 147, 19, 5, 7, 195, 169, 4, 5, 19, 26, 11, 195, 182, 26, 195, 182, 11, 11, 5, 12, 13,
-			18, 143, 10, 5, 12, 5, 14, 12, 195, 169, 20, 195, 169, 18, 197, 145, 12, 13, 6, 195, 8, 244, 128, 13, 0, 16, 141, 195, 169, 18,
-			20, 5, 12, 13, 5, 26, 26, 195, 188, 11, 13, 43, 11, 5, 7, 25, 5, 19, 195, 188, 12, 5, 20, 9, 109, 79, 12, 109, 91, 111,
-			55, 109, 47, 37, 23, 84, 109, 88, 109, 47, 118, 49, 0, 13, 81, 118, 101, 122, 101, 116, 197, 145, 107, 32, 9, 198, 48, 82, 5, 77,
-			49, 78, 13, 9, 198, 72, 244, 211, 104, 16, 130, 13, 15, 140, 22, 195, 161, 12, 20, 1, 11, 15, 26, 8, 1, 20, 13, 0, 12, 201,
-			29, 145, 82, 52, 82, 197, 36, 177, 84, 13, 16, 141, 9, 19, 13, 5, 18, 197, 145, 19, 5, 9, 11, 5, 20, 13, 10, 135, 19, 26,
-			195, 169, 16, 5, 14, 13, 0, 24, 70, 4, 192, 75, 84, 197, 0, 108, 55, 108, 49, 40, 55, 47, 23, 49, 37, 0, 13, 81, 107, 105,
-			32, 14, 139, 22, 195, 161, 12, 1, 19, 26, 20, 195, 161, 19, 13, 11, 136, 8, 195, 161, 2, 15, 18, 195, 186, 13, 13, 138, 9, 19,
-			11, 15, 12, 195, 161, 11, 1, 20, 13, 9, 134, 19, 26, 195, 161, 14, 20, 13, 11, 136, 19, 26, 195, 169, 12, 195, 169, 14, 13, 14,
-			139, 5, 7, 25, 5, 14, 18, 21, 8, 195, 161, 19, 22, 0, 22, 147, 20, 5, 22, 195, 169, 11, 5, 14, 25, 19, 195, 169, 7, 195,
-			169, 18, 197, 145, 12, 13, 14, 139, 195, 161, 12, 12, 15, 13, 195, 161, 14, 25, 20, 13, 18, 143, 2, 9, 12, 12, 5, 14, 20, 25,
-			197, 177, 26, 5, 20, 5, 20, 13, 14, 139, 11, 5, 4, 195, 169, 12, 25, 5, 11, 5, 20, 13, 10, 135, 22, 195, 161, 12, 12, 1,
-			12, 13, 7, 132, 8, 195, 186, 19, 13, 8, 133, 19, 26, 195, 173, 14, 13, 0, 7, 196, 24, 241, 207, 44, 76, 6, 195, 52, 148, 133,
-			13, 12, 137, 13, 15, 14, 4, 1, 14, 195, 169, 11, 13, 7, 196, 77, 161, 82, 80, 13, 0, 47, 13, 16, 18, 15, 2, 12, 195, 169,
-			13, 195, 161, 11, 1, 20, 48, 52, 39, 71, 55, 113, 65, 114, 49, 108, 47, 23, 49, 108, 48, 108, 52, 81, 108, 47, 0, 13, 81, 107,
-			97, 112, 97, 114, 103, 97, 116, 32, 26, 69, 4, 192, 75, 84, 192, 108, 55, 108, 49, 40, 55, 23, 65, 108, 57, 72, 0, 13, 81, 109,
-			97, 106, 100, 32, 16, 141, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 11, 1, 20, 13, 16, 141, 8, 1, 14, 7, 13, 9, 14, 20,
-			195, 161, 11, 1, 20, 13, 16, 141, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 195, 161, 20, 13, 8, 197, 4, 192, 75, 84, 192, 13,
-			16, 141, 6, 15, 18, 4, 195, 173, 20, 195, 161, 19, 195, 161, 20, 13, 12, 137, 6, 5, 12, 20, 195, 169, 20, 5, 12, 13, 0, 16,
-			141, 12, 195, 182, 22, 195, 182, 12, 4, 195, 182, 26, 197, 145, 13, 6, 131, 195, 169, 7, 13, 12, 201, 72, 83, 132, 77, 161, 82, 20,
-			180, 133, 13, 6, 131, 195, 169, 7, 13, 0, 19, 144, 13, 5, 7, 14, 25, 9, 12, 22, 195, 161, 14, 21, 12, 195, 161, 19, 13, 9,
-			198, 13, 51, 205, 4, 116, 129, 13, 0, 17, 142, 22, 9, 12, 195, 161, 7, 8, 195, 161, 2, 15, 18, 195, 186, 13, 11, 200, 29, 145,
-			82, 20, 177, 75, 20, 224, 13, 7, 196, 76, 83, 77, 36, 13, 0, 8, 197, 5, 163, 203, 5, 64, 13, 42, 69, 24, 83, 5, 81, 64,
-			83, 109, 55, 109, 47, 12, 23, 37, 91, 23, 65, 109, 81, 89, 117, 50, 37, 49, 0, 13, 82, 105, 115, 32, 109, 101, 103, 115, 122, 197,
-			177, 110, 105, 107, 32, 8, 197, 24, 83, 5, 81, 64, 13, 17, 9, 95, 35, 45, 195, 169, 14, 195, 169, 12, 113, 50, 113, 55, 0, 21,
-			0, 21, 146, 195, 182, 14, 11, 15, 18, 13, 195, 161, 14, 25, 26, 1, 20, 15, 11, 1, 20, 13, 12, 137, 11, 195, 169, 18, 4, 5,
-			26, 20, 5, 13, 9, 134, 19, 26, 195, 161, 12, 12, 13, 13, 67, 61, 68, 0, 115, 47, 113, 48, 113, 0, 42, 42, 7, 132, 10, 195,
-			186, 14, 20, 13, 7, 95, 35, 45, 195, 161, 9, 7, 114, 37, 81, 0, 0, 19, 67, 61, 69, 0, 39, 47, 12, 23, 84, 108, 50, 0,
-			13, 81, 118, 97, 110, 32, 13, 138, 7, 25, 195, 182, 20, 195, 182, 18, 20, 5, 13, 6, 195, 61, 69, 0, 13, 6, 195, 56, 245, 128,
-			20, 0, 7, 196, 24, 241, 207, 52, 13, 7, 196, 48, 20, 15, 80, 13, 7, 132, 10, 195, 186, 12, 20, 0, 0, 18, 66, 64, 48, 112,
-			195, 169, 99, 195, 169, 115, 0, 44, 29, 42, 81, 115, 32, 17, 66, 64, 48, 112, 195, 169, 99, 195, 169, 110, 0, 44, 29, 81, 110, 32,
-			18, 66, 64, 48, 112, 195, 169, 99, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 18, 66, 64, 48, 112, 195, 169, 99, 195, 169, 107, 0,
-			44, 29, 42, 81, 107, 32, 32, 7, 22, 5, 20, 20, 195, 188, 11, 84, 109, 47, 12, 111, 49, 10, 6, 15, 113, 89, 52, 109, 0, 13,
-			81, 195, 169, 115, 122, 114, 101, 32, 7, 132, 2, 195, 173, 26, 13, 9, 198, 88, 82, 5, 77, 49, 64, 13, 5, 194, 52, 144, 13, 20,
-			66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 47, 0, 44, 13, 81, 116, 32, 22, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47,
-			109, 52, 109, 91, 0, 44, 13, 81, 101, 115, 32, 23, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 67, 37, 0, 44, 13, 81,
-			110, 121, 105, 32, 27, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 67, 37, 52, 109, 0, 44, 13, 81, 110, 121, 105, 114, 101,
-			32, 22, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 52, 109, 0, 44, 13, 81, 114, 101, 32, 15, 66, 44, 208, 49, 37, 55,
-			115, 65, 113, 47, 109, 52, 0, 13, 0, 31, 6, 19, 26, 195, 161, 13, 1, 89, 114, 65, 108, 23, 76, 110, 49, 12, 109, 50, 0, 13,
-			81, 99, 115, 195, 182, 107, 107, 101, 110, 32, 36, 67, 44, 86, 132, 49, 109, 88, 72, 23, 108, 6, 23, 83, 109, 55, 107, 118, 88, 109,
-			47, 0, 13, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 9, 134, 19, 26, 195, 161, 13, 1, 13, 6, 195, 44, 86, 132,
-			13, 0, 11, 200, 44, 85, 133, 72, 81, 5, 81, 64, 13, 11, 200, 76, 146, 197, 72, 81, 5, 81, 64, 13, 0, 8, 197, 32, 21, 14,
-			4, 176, 13, 12, 201, 4, 194, 193, 48, 208, 90, 61, 69, 0, 13, 0, 43, 11, 12, 5, 8, 5, 20, 197, 145, 19, 195, 169, 7, 55,
-			109, 107, 109, 47, 118, 91, 113, 81, 15, 84, 108, 50, 15, 108, 52, 52, 108, 0, 13, 82, 118, 97, 110, 32, 97, 114, 114, 97, 32, 10,
-			135, 11, 195, 169, 18, 12, 5, 11, 13, 9, 198, 8, 150, 148, 61, 48, 84, 13, 14, 139, 12, 5, 8, 5, 20, 197, 145, 19, 195, 169,
-			7, 13, 10, 135, 12, 5, 14, 14, 195, 169, 11, 13, 0, 22, 67, 52, 149, 0, 65, 37, 47, 23, 109, 89, 109, 55, 0, 13, 81, 101,
-			115, 122, 101, 108, 32, 38, 67, 52, 149, 0, 65, 37, 47, 10, 6, 15, 84, 114, 55, 47, 39, 89, 47, 108, 47, 50, 37, 0, 13, 81,
-			118, 195, 161, 108, 116, 111, 122, 116, 97, 116, 110, 105, 32, 6, 195, 8, 244, 148, 13, 6, 195, 52, 149, 0, 13, 0, 7, 196, 24, 241,
-			206, 36, 13, 11, 200, 80, 20, 148, 32, 21, 14, 4, 176, 13, 31, 68, 24, 241, 202, 4, 83, 39, 81, 57, 108, 10, 6, 15, 113, 52,
-			47, 109, 50, 37, 0, 13, 81, 195, 169, 114, 116, 101, 110, 105, 32, 40, 68, 24, 241, 202, 4, 83, 39, 81, 57, 108, 23, 109, 52, 109,
-			72, 65, 113, 67, 109, 88, 50, 37, 0, 13, 81, 101, 114, 101, 100, 109, 195, 169, 110, 121, 101, 122, 110, 105, 32, 10, 135, 6, 195, 161,
-			10, 12, 2, 1, 13, 11, 200, 72, 83, 132, 77, 161, 82, 72, 80, 13, 7, 196, 24, 241, 202, 4, 13, 0, 8, 197, 44, 85, 25, 20,
-			112, 13, 8, 197, 8, 18, 129, 36, 208, 13, 8, 197, 77, 160, 86, 4, 176, 13, 0, 12, 137, 20, 1, 7, 195, 161, 12, 12, 1, 13,
-			13, 12, 137, 11, 5, 26, 5, 12, 197, 145, 10, 5, 13, 13, 138, 22, 195, 161, 19, 195, 161, 18, 15, 12, 20, 13, 7, 132, 2, 195,
-			173, 18, 13, 0, 14, 203, 20, 195, 85, 48, 20, 218, 80, 245, 20, 84, 176, 13, 14, 203, 24, 83, 15, 49, 96, 83, 32, 21, 14, 4,
-			176, 13, 10, 199, 80, 84, 150, 21, 161, 84, 80, 13, 10, 135, 12, 5, 14, 14, 195, 169, 12, 13, 11, 136, 22, 195, 169, 12, 20, 195,
-			169, 11, 13, 10, 135, 195, 169, 10, 6, 195, 169, 12, 22, 0, 11, 136, 11, 195, 182, 20, 195, 182, 20, 20, 13, 15, 140, 11, 15, 14,
-			3, 5, 14, 20, 18, 195, 161, 12, 20, 13, 6, 131, 14, 197, 145, 13, 0, 6, 131, 195, 173, 18, 13, 12, 137, 11, 195, 188, 12, 4,
-			195, 182, 20, 20, 13, 8, 133, 19, 26, 195, 169, 16, 13, 0, 12, 6, 95, 35, 45, 195, 169, 20, 113, 47, 0, 21, 0, 10, 135, 11,
-			195, 169, 16, 12, 5, 20, 13, 0, 15, 140, 14, 5, 22, 5, 12, 197, 145, 11, 14, 195, 169, 12, 13, 60, 8, 6, 5, 12, 195, 188,
-			12, 5, 20, 83, 109, 55, 111, 55, 109, 47, 23, 108, 49, 108, 72, 114, 57, 65, 109, 50, 47, 109, 91, 12, 113, 81, 113, 47, 0, 13,
-			81, 97, 107, 97, 100, 195, 161, 108, 121, 109, 101, 110, 116, 101, 115, 115, 195, 169, 103, 195, 169, 116, 32, 11, 136, 6, 5, 12, 195, 188,
-			12, 5, 20, 13, 28, 8, 6, 5, 12, 195, 188, 12, 5, 20, 83, 109, 55, 111, 55, 109, 47, 23, 84, 108, 50, 0, 13, 81, 118, 97,
-			110, 32, 9, 134, 6, 5, 8, 195, 169, 18, 13, 10, 135, 19, 26, 195, 179, 22, 195, 161, 13, 7, 132, 6, 195, 182, 12, 13, 0, 12,
-			137, 20, 5, 19, 20, 195, 188, 12, 5, 20, 13, 8, 133, 19, 26, 195, 169, 20, 13, 0, 13, 138, 195, 173, 20, 195, 169, 12, 5, 20,
-			5, 20, 13, 13, 138, 6, 5, 12, 195, 188, 12, 5, 20, 5, 20, 13, 9, 134, 19, 5, 7, 195, 173, 20, 13, 8, 133, 12, 195, 161,
-			14, 25, 13, 0, 11, 136, 11, 1, 16, 14, 195, 161, 14, 11, 13, 24, 3, 195, 182, 20, 110, 47, 23, 49, 110, 52, 111, 55, 0, 13,
-			81, 107, 195, 182, 114, 195, 188, 108, 32, 14, 139, 20, 5, 18, 22, 5, 26, 5, 20, 195, 169, 20, 13, 14, 139, 11, 195, 169, 20, 19,
-			195, 169, 7, 5, 9, 20, 13, 0, 18, 143, 11, 195, 169, 20, 19, 195, 169, 7, 2, 5, 5, 19, 20, 5, 13, 13, 12, 137, 9, 19,
-			13, 5, 18, 20, 195, 188, 11, 13, 14, 139, 11, 18, 9, 20, 9, 11, 21, 19, 19, 195, 161, 13, 11, 136, 1, 10, 195, 161, 14, 12,
-			1, 20, 13, 11, 4, 95, 49, 15, 24, 109, 55, 91, 118, 0, 0, 35, 8, 11, 15, 18, 13, 195, 161, 14, 25, 49, 39, 52, 65, 114,
-			67, 23, 49, 110, 88, 110, 47, 12, 0, 13, 81, 107, 195, 182, 122, 195, 182, 116, 116, 32, 15, 140, 5, 7, 25, 195, 169, 18, 20, 5,
-			12, 13, 197, 177, 13, 0, 6, 131, 195, 182, 19, 72, 0, 12, 137, 14, 1, 7, 25, 11, 15, 18, 195, 186, 13, 14, 139, 195, 169, 12,
-			5, 20, 195, 169, 22, 195, 169, 20, 13, 13, 138, 2, 1, 10, 11, 5, 22, 5, 18, 197, 145, 13, 8, 133, 195, 161, 18, 195, 186, 13,
-			0, 15, 140, 11, 195, 169, 14, 25, 19, 26, 5, 18, 195, 173, 20, 13, 0, 16, 141, 13, 1, 18, 1, 4, 22, 195, 161, 14, 25, 1,
-			9, 20, 13, 19, 144, 20, 5, 12, 10, 5, 19, 195, 173, 20, 13, 195, 169, 14, 25, 197, 177, 13, 8, 133, 4, 195, 182, 14, 20, 13,
-			0, 0, 11, 136, 10, 195, 161, 18, 1, 20, 15, 11, 13, 6, 195, 40, 241, 192, 13, 8, 133, 19, 26, 195, 179, 18, 72, 0, 22, 147,
-			8, 1, 19, 26, 14, 195, 161, 12, 8, 1, 20, 1, 20, 12, 1, 14, 14, 195, 161, 13, 6, 195, 40, 241, 193, 13, 0, 0, 0, 6,
-			195, 24, 241, 192, 13, 36, 67, 24, 241, 192, 83, 39, 81, 23, 108, 6, 15, 71, 37, 88, 39, 76, 12, 114, 81, 0, 13, 82, 97, 32,
-			98, 105, 122, 111, 116, 116, 115, 195, 161, 103, 32, 29, 67, 24, 241, 192, 83, 39, 81, 23, 107, 108, 34, 119, 39, 55, 50, 37, 0, 13,
-			81, 104, 97, 114, 99, 111, 108, 110, 105, 32, 0, 6, 195, 24, 241, 193, 13, 15, 140, 5, 21, 18, 195, 179, 16, 195, 161, 2, 195, 179,
-			12, 13, 8, 133, 18, 195, 161, 14, 11, 13, 6, 195, 52, 17, 193, 13, 0, 42, 3, 195, 169, 14, 113, 50, 15, 37, 91, 15, 65, 109,
-			81, 76, 37, 50, 114, 55, 47, 108, 65, 0, 13, 82, 105, 115, 32, 109, 101, 103, 99, 115, 105, 110, 195, 161, 108, 116, 97, 109, 32, 16,
-			3, 195, 169, 14, 113, 50, 15, 37, 91, 0, 13, 81, 105, 115, 32, 12, 137, 6, 21, 14, 11, 3, 9, 195, 179, 20, 13, 9, 134, 11,
-			9, 12, 195, 179, 19, 13, 6, 131, 195, 169, 14, 13, 8, 133, 19, 26, 195, 179, 20, 13, 6, 131, 195, 169, 14, 13, 0, 15, 140, 11,
-			195, 188, 12, 6, 195, 182, 12, 4, 195, 182, 14, 13, 9, 198, 40, 83, 26, 21, 69, 0, 13, 5, 194, 72, 16, 13, 0, 7, 132, 10,
-			195, 179, 11, 13, 6, 131, 195, 169, 12, 13, 0, 7, 132, 20, 195, 179, 12, 13, 0, 8, 197, 36, 195, 5, 80, 144, 13, 22, 5, 1,
-			12, 195, 179, 12, 108, 55, 115, 55, 10, 6, 15, 108, 88, 0, 13, 81, 97, 122, 32, 35, 69, 88, 19, 1, 52, 144, 84, 108, 55, 108,
-			65, 37, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 13, 81, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 8, 197, 88, 19, 1, 52,
-			144, 13, 8, 197, 25, 85, 14, 4, 176, 13, 8, 197, 64, 243, 148, 40, 16, 13, 8, 133, 1, 12, 195, 179, 12, 13, 0, 15, 140, 8,
-			195, 188, 12, 25, 195, 169, 19, 11, 5, 4, 10, 13, 9, 198, 24, 150, 133, 80, 82, 192, 13, 9, 198, 88, 84, 147, 20, 230, 64, 13,
-			9, 198, 60, 179, 218, 80, 18, 192, 13, 9, 198, 80, 17, 202, 4, 149, 0, 13, 9, 198, 88, 83, 5, 80, 82, 192, 13, 14, 67, 48,
-			212, 0, 109, 55, 109, 65, 48, 113, 0, 42, 42, 0, 23, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 0, 13, 81, 107, 195,
-			182, 122, 195, 169, 32, 43, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 23, 109, 65, 109, 55, 49, 109, 72, 37, 49, 0, 13,
-			82, 107, 195, 182, 122, 195, 169, 32, 101, 109, 101, 108, 107, 101, 100, 105, 107, 32, 46, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88,
-			110, 47, 12, 23, 89, 115, 52, 115, 72, 37, 49, 0, 13, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 115, 122, 195, 179, 114, 195, 179,
-			100, 105, 107, 32, 70, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 23, 76, 110, 49, 12, 109, 50, 23, 108, 23, 107, 118, 65,
-			113, 52, 91, 113, 49, 55, 109, 47, 0, 13, 84, 107, 195, 182, 122, 195, 169, 32, 99, 115, 195, 182, 107, 107, 101, 110, 32, 97, 32, 104,
-			197, 145, 109, 195, 169, 114, 115, 195, 169, 107, 108, 101, 116, 32, 41, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 110, 47, 12, 23,
-			108, 55, 108, 49, 40, 55, 0, 13, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 97, 108, 97, 107, 117, 108, 32, 74, 67, 24, 242, 192,
-			83, 39, 49, 23, 83, 110, 55, 113, 23, 109, 65, 109, 55, 49, 109, 72, 37, 49, 23, 108, 23, 107, 118, 65, 113, 52, 91, 113, 49, 55,
-			109, 47, 0, 13, 84, 102, 195, 182, 108, 195, 169, 32, 101, 109, 101, 108, 107, 101, 100, 105, 107, 32, 97, 32, 104, 197, 145, 109, 195, 169,
-			114, 115, 195, 169, 107, 108, 101, 116, 32, 45, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 110, 47, 12, 23, 84, 114, 51, 107, 108,
-			47, 115, 0, 13, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 118, 195, 161, 114, 104, 97, 116, 195, 179, 32, 6, 195, 24, 242, 192, 13,
-			15, 140, 3, 19, 195, 188, 20, 195, 182, 18, 20, 195, 182, 11, 20, 0, 16, 141, 6, 5, 12, 13, 15, 14, 4, 1, 14, 195, 161, 14,
-			11, 13, 6, 195, 24, 241, 217, 13, 10, 135, 20, 195, 182, 14, 11, 18, 5, 13, 12, 137, 1, 10, 195, 161, 14, 12, 10, 21, 11, 13,
-			7, 132, 10, 195, 179, 12, 13, 7, 132, 6, 195, 169, 12, 13, 6, 131, 195, 169, 9, 72, 7, 132, 18, 195, 179, 12, 13, 0, 24, 3,
-			195, 169, 22, 113, 84, 23, 109, 55, 47, 109, 55, 47, 0, 13, 81, 101, 108, 116, 101, 108, 116, 32, 22, 3, 195, 169, 22, 113, 84, 23,
-			108, 55, 108, 47, 12, 0, 13, 81, 97, 108, 97, 116, 116, 32, 31, 69, 77, 160, 86, 4, 208, 89, 108, 84, 108, 65, 15, 57, 114, 52,
-			114, 91, 108, 0, 13, 81, 106, 195, 161, 114, 195, 161, 115, 97, 32, 12, 201, 77, 161, 82, 21, 1, 76, 56, 82, 192, 13, 8, 197, 80,
-			17, 202, 4, 144, 13, 6, 131, 195, 169, 22, 13, 8, 133, 19, 26, 195, 179, 12, 13, 12, 137, 12, 195, 161, 20, 19, 26, 15, 20, 20,
-			13, 6, 131, 195, 182, 14, 13, 0, 7, 66, 57, 144, 109, 67, 0, 9, 198, 52, 20, 129, 16, 242, 192, 13, 10, 135, 22, 195, 161, 7,
-			195, 179, 11, 13, 41, 5, 195, 169, 7, 18, 5, 113, 81, 52, 109, 23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 13, 81,
-			115, 122, 195, 161, 109, 195, 173, 116, 104, 97, 116, 117, 110, 107, 32, 9, 198, 88, 19, 1, 52, 149, 0, 13, 9, 198, 24, 243, 25, 56,
-			18, 192, 13, 9, 134, 5, 14, 14, 195, 169, 12, 13, 0, 26, 71, 32, 83, 25, 21, 161, 84, 80, 107, 109, 57, 109, 88, 109, 47, 12,
-			23, 49, 37, 0, 13, 81, 107, 105, 32, 10, 199, 80, 145, 210, 37, 51, 133, 44, 13, 14, 139, 8, 1, 20, 195, 161, 18, 15, 26, 15,
-			20, 20, 13, 7, 132, 12, 195, 179, 7, 13, 9, 134, 11, 195, 182, 26, 195, 169, 13, 0, 15, 140, 7, 15, 14, 4, 15, 12, 1, 20,
-			20, 195, 179, 12, 13, 15, 140, 16, 195, 169, 12, 4, 195, 161, 11, 20, 195, 179, 12, 13, 13, 138, 12, 5, 7, 9, 14, 11, 195, 161,
-			2, 2, 13, 15, 140, 11, 15, 18, 12, 195, 161, 20, 15, 26, 15, 20, 20, 13, 15, 204, 40, 83, 5, 57, 66, 197, 104, 129, 84, 56,
-			82, 192, 13, 12, 136, 11, 195, 182, 26, 195, 182, 20, 20, 72, 22, 0, 23, 3, 195, 169, 18, 113, 52, 23, 84, 113, 81, 109, 47, 0,
-			13, 81, 118, 195, 169, 103, 101, 116, 32, 18, 3, 195, 169, 18, 113, 52, 10, 6, 15, 109, 55, 0, 13, 81, 101, 108, 32, 11, 136, 10,
-			195, 161, 18, 1, 20, 1, 9, 13, 12, 137, 11, 15, 18, 195, 161, 2, 195, 179, 12, 13, 12, 201, 72, 83, 132, 77, 161, 82, 56, 82,
-			192, 13, 11, 136, 195, 173, 18, 195, 161, 19, 18, 1, 13, 12, 137, 8, 9, 2, 195, 161, 26, 15, 20, 20, 13, 6, 131, 195, 169, 18,
-			13, 0, 42, 10, 4, 15, 12, 7, 15, 11, 18, 195, 179, 12, 72, 39, 55, 81, 39, 49, 52, 115, 55, 23, 71, 109, 89, 113, 55, 109,
-			49, 0, 13, 81, 98, 101, 115, 122, 195, 169, 108, 101, 107, 32, 17, 3, 195, 169, 19, 113, 91, 23, 57, 115, 0, 13, 81, 106, 195, 179,
-			32, 26, 3, 195, 169, 19, 113, 91, 23, 83, 108, 48, 108, 72, 39, 91, 0, 13, 81, 102, 97, 112, 97, 100, 111, 115, 32, 34, 3, 195,
-			169, 19, 113, 91, 23, 71, 39, 89, 12, 108, 50, 47, 115, 108, 49, 0, 13, 81, 98, 111, 115, 115, 122, 97, 110, 116, 195, 179, 97, 107,
-			32, 13, 138, 9, 14, 4, 9, 195, 161, 2, 195, 179, 12, 13, 19, 144, 22, 195, 161, 12, 20, 15, 26, 195, 169, 11, 15, 14, 25, 1,
-			2, 2, 13, 25, 3, 195, 169, 19, 113, 91, 65, 115, 79, 12, 114, 47, 0, 13, 81, 109, 195, 179, 100, 106, 195, 161, 116, 32, 9, 134,
-			9, 14, 4, 195, 173, 20, 13, 8, 131, 195, 169, 19, 72, 12, 22, 18, 4, 95, 3, 9, 18, 119, 37, 52, 49, 40, 65, 83, 55, 109,
-			49, 89, 0, 0, 19, 5, 19, 26, 195, 173, 22, 89, 112, 84, 23, 109, 55, 0, 13, 81, 101, 108, 32, 13, 138, 22, 195, 161, 18, 15,
-			19, 195, 161, 2, 1, 13, 9, 134, 8, 15, 26, 26, 195, 161, 13, 0, 54, 11, 3, 19, 1, 16, 1, 4, 195, 169, 11, 18, 1, 76,
-			108, 48, 108, 72, 113, 49, 52, 108, 23, 91, 37, 50, 76, 23, 49, 37, 55, 114, 47, 114, 91, 0, 13, 82, 115, 105, 110, 99, 115, 32,
-			107, 105, 108, 195, 161, 116, 195, 161, 115, 32, 15, 140, 195, 161, 12, 12, 1, 16, 15, 20, 18, 195, 179, 12, 13, 7, 196, 52, 81, 217,
-			20, 13, 7, 196, 53, 83, 139, 4, 13, 19, 144, 11, 1, 12, 195, 179, 26, 11, 15, 4, 195, 161, 19, 20, 195, 179, 12, 13, 0, 15,
-			140, 20, 1, 14, 195, 161, 3, 19, 1, 4, 195, 179, 9, 13, 12, 137, 22, 195, 169, 20, 5, 12, 195, 169, 20, 13, 16, 141, 6, 15,
-			7, 12, 1, 12, 20, 1, 11, 18, 195, 179, 12, 13, 6, 131, 195, 179, 14, 72, 0, 17, 3, 95, 194, 183, 49, 110, 88, 113, 48, 91,
-			118, 48, 39, 50, 47, 0, 9, 134, 11, 5, 26, 195, 169, 20, 13, 10, 135, 8, 9, 20, 20, 195, 188, 11, 13, 17, 142, 11, 1, 16,
-			1, 3, 9, 20, 195, 161, 19, 18, 195, 179, 12, 13, 8, 133, 14, 5, 22, 197, 177, 13, 10, 135, 8, 9, 20, 20, 195, 188, 11, 13,
-			0, 32, 7, 5, 19, 195, 169, 12, 25, 20, 109, 91, 113, 57, 47, 10, 6, 15, 55, 114, 47, 39, 49, 0, 13, 81, 108, 195, 161, 116,
-			111, 107, 32, 10, 135, 5, 18, 5, 10, 195, 169, 20, 13, 18, 143, 20, 195, 161, 18, 19, 1, 19, 8, 195, 161, 26, 2, 195, 179, 12,
-			13, 18, 143, 19, 26, 5, 13, 16, 15, 14, 20, 10, 195, 161, 2, 195, 179, 12, 13, 10, 199, 52, 243, 132, 4, 229, 78, 44, 13, 9,
-			134, 11, 195, 169, 18, 14, 9, 13, 8, 133, 19, 26, 195, 182, 18, 72, 0, 11, 136, 19, 26, 5, 18, 22, 195, 169, 20, 13, 0, 19,
-			3, 95, 194, 178, 65, 114, 91, 39, 72, 37, 49, 107, 108, 47, 84, 114, 67, 0, 19, 144, 11, 195, 182, 26, 195, 169, 16, 16, 15, 14,
-			20, 10, 195, 161, 2, 1, 13, 12, 137, 19, 26, 5, 13, 195, 169, 12, 25, 20, 13, 11, 136, 5, 12, 12, 195, 161, 20, 14, 9, 13,
-			9, 134, 2, 195, 161, 14, 9, 11, 13, 11, 136, 11, 5, 18, 195, 188, 12, 14, 9, 13, 0, 20, 3, 95, 194, 179, 107, 108, 34, 65,
-			108, 72, 37, 49, 107, 108, 47, 84, 114, 67, 0, 42, 8, 19, 26, 15, 13, 15, 18, 195, 186, 89, 39, 65, 39, 52, 116, 23, 84, 39,
-			55, 47, 23, 55, 114, 47, 50, 37, 0, 13, 82, 118, 111, 108, 116, 32, 108, 195, 161, 116, 110, 105, 32, 21, 146, 5, 12, 2, 15, 3,
-			19, 195, 161, 20, 195, 161, 19, 15, 11, 18, 195, 179, 12, 13, 12, 137, 5, 7, 25, 19, 26, 5, 18, 197, 177, 13, 14, 4, 195, 182,
-			26, 22, 110, 88, 84, 109, 79, 0, 25, 9, 0, 14, 139, 19, 26, 195, 161, 13, 195, 173, 20, 8, 1, 20, 13, 12, 137, 5, 12, 197,
-			145, 19, 26, 195, 182, 18, 13, 14, 139, 18, 5, 14, 4, 19, 26, 5, 18, 195, 169, 20, 13, 14, 139, 22, 195, 169, 12, 5, 13, 195,
-			169, 14, 25, 20, 13, 10, 199, 40, 21, 129, 76, 243, 20, 4, 13, 6, 195, 56, 244, 192, 72, 11, 67, 65, 54, 148, 48, 89, 12, 47,
-			0, 41, 0, 44, 12, 11, 195, 182, 26, 12, 5, 13, 195, 169, 14, 25, 20, 49, 110, 88, 55, 109, 65, 113, 67, 47, 23, 108, 72, 39,
-			47, 12, 23, 49, 37, 0, 13, 82, 97, 100, 111, 116, 116, 32, 107, 105, 32, 14, 139, 10, 15, 7, 19, 26, 1, 2, 195, 161, 12, 25,
-			13, 12, 137, 22, 195, 161, 12, 20, 15, 26, 9, 11, 13, 0, 9, 198, 48, 81, 217, 20, 225, 75, 13, 0, 16, 141, 19, 195, 169, 18,
-			195, 188, 12, 195, 169, 11, 5, 14, 25, 13, 9, 198, 52, 81, 212, 20, 197, 0, 13, 8, 133, 12, 195, 161, 7, 25, 13, 0, 10, 199,
-			77, 163, 210, 84, 194, 143, 56, 13, 9, 198, 48, 81, 143, 29, 147, 137, 13, 11, 136, 11, 5, 4, 22, 197, 177, 5, 11, 13, 10, 199,
-			24, 19, 129, 80, 146, 213, 76, 13, 14, 4, 95, 19, 20, 11, 114, 47, 107, 116, 88, 114, 91, 0, 15, 7, 95, 35, 45, 18, 195, 179,
-			12, 114, 52, 115, 55, 0, 21, 0, 16, 3, 95, 194, 173, 55, 114, 79, 49, 110, 47, 118, 57, 109, 55, 0, 63, 14, 5, 7, 25, 195,
-			169, 18, 20, 5, 12, 13, 197, 177, 5, 14, 109, 79, 12, 113, 52, 47, 109, 55, 65, 117, 109, 50, 23, 65, 109, 81, 114, 55, 12, 108,
-			48, 112, 47, 39, 47, 12, 108, 0, 13, 81, 109, 101, 103, 195, 161, 108, 108, 97, 112, 195, 173, 116, 111, 116, 116, 97, 32, 33, 72, 48,
-			82, 5, 80, 85, 12, 20, 224, 55, 109, 107, 109, 47, 109, 47, 55, 109, 50, 23, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32,
-			12, 137, 7, 25, 195, 161, 18, 20, 195, 179, 11, 13, 7, 132, 20, 195, 182, 12, 13, 0, 8, 133, 1, 4, 195, 179, 20, 13, 11, 4,
-			95, 1, 3, 21, 113, 55, 109, 91, 0, 0, 22, 3, 95, 194, 171, 71, 109, 55, 91, 118, 71, 108, 55, 37, 72, 113, 88, 118, 57, 109,
-			55, 0, 44, 70, 52, 81, 5, 72, 33, 64, 65, 109, 72, 109, 52, 71, 109, 23, 47, 109, 52, 109, 55, 113, 91, 113, 71, 109, 50, 0,
-			13, 81, 116, 101, 114, 101, 108, 195, 169, 115, 195, 169, 98, 101, 110, 32, 9, 134, 11, 195, 179, 4, 15, 20, 13, 13, 138, 3, 5, 12,
-			12, 195, 161, 18, 195, 179, 12, 13, 6, 131, 195, 179, 19, 72, 0, 22, 4, 20, 195, 182, 11, 47, 110, 49, 23, 37, 81, 108, 88, 0,
-			13, 81, 105, 103, 97, 122, 32, 15, 140, 20, 1, 18, 20, 195, 179, 26, 11, 15, 4, 9, 11, 13, 11, 136, 8, 195, 179, 14, 1, 16,
-			9, 7, 13, 0, 40, 70, 40, 241, 207, 44, 32, 78, 57, 39, 81, 39, 49, 71, 108, 50, 23, 37, 55, 12, 109, 47, 113, 49, 109, 91,
-			0, 13, 81, 105, 108, 108, 101, 116, 195, 169, 107, 101, 115, 32, 15, 140, 8, 1, 12, 195, 161, 12, 195, 161, 18, 195, 179, 12, 13, 11,
-			136, 8, 195, 179, 14, 1, 16, 15, 20, 13, 7, 132, 10, 195, 179, 20, 13, 7, 132, 18, 195, 182, 12, 13, 0, 12, 137, 7, 25, 195,
-			161, 18, 20, 195, 179, 20, 13, 16, 141, 20, 1, 18, 20, 195, 161, 19, 195, 161, 18, 195, 179, 12, 13, 11, 136, 10, 5, 12, 195, 182,
-			12, 14, 9, 13, 0, 20, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 47, 0, 44, 13, 81, 116, 32, 22, 66, 52, 208, 65,
-			37, 55, 37, 65, 113, 47, 109, 52, 109, 91, 0, 44, 13, 81, 101, 115, 32, 27, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52,
-			67, 37, 52, 109, 0, 44, 13, 81, 110, 121, 105, 114, 101, 32, 23, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 67, 37, 0,
-			44, 13, 81, 110, 121, 105, 32, 15, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 0, 13, 0, 16, 3, 95, 194, 164, 48, 113,
-			50, 88, 50, 109, 65, 57, 109, 55, 0, 0, 19, 144, 5, 12, 6, 15, 7, 1, 4, 195, 161, 19, 195, 161, 18, 195, 179, 12, 13, 10,
-			135, 22, 195, 161, 12, 14, 9, 1, 13, 30, 67, 40, 241, 201, 57, 39, 81, 37, 23, 89, 110, 84, 109, 81, 109, 47, 0, 13, 81, 115,
-			122, 195, 182, 118, 101, 103, 101, 116, 32, 34, 67, 40, 241, 201, 57, 39, 81, 37, 15, 55, 113, 48, 113, 91, 109, 49, 109, 47, 0, 13,
-			81, 108, 195, 169, 112, 195, 169, 115, 101, 107, 101, 116, 32, 14, 139, 14, 25, 195, 186, 10, 20, 195, 179, 26, 14, 9, 13, 0, 8, 197,
-			76, 82, 148, 20, 208, 13, 8, 197, 32, 83, 25, 20, 176, 13, 16, 141, 6, 15, 18, 18, 195, 161, 19, 11, 195, 179, 4, 15, 20, 13,
-			8, 197, 56, 82, 212, 20, 176, 13, 0, 9, 198, 48, 84, 218, 56, 82, 192, 72, 9, 198, 44, 84, 133, 76, 146, 192, 13, 9, 198, 4,
-			230, 65, 28, 242, 192, 13, 9, 198, 24, 82, 211, 104, 146, 192, 13, 10, 135, 22, 195, 169, 7, 26, 9, 11, 13, 9, 198, 72, 244, 211,
-			104, 18, 192, 13, 0, 11, 3, 95, 194, 160, 89, 115, 49, 110, 88, 0, 10, 199, 21, 49, 84, 20, 176, 133, 56, 13, 10, 135, 12, 195,
-			161, 20, 15, 20, 20, 13, 10, 4, 95, 18, 14, 7, 49, 110, 52, 0, 0, 16, 3, 95, 194, 161, 108, 55, 91, 115, 37, 50, 72, 109,
-			49, 89, 0, 7, 3, 95, 195, 169, 113, 0, 14, 139, 195, 182, 19, 19, 26, 5, 22, 5, 20, 14, 9, 13, 8, 133, 19, 26, 195, 182,
-			7, 13, 7, 132, 2, 195, 179, 12, 72, 0, 8, 197, 52, 83, 148, 20, 208, 13, 12, 137, 7, 25, 195, 161, 18, 20, 15, 20, 20, 13,
-			8, 133, 11, 195, 188, 26, 4, 13, 0, 13, 138, 9, 18, 195, 161, 14, 25, 20, 195, 179, 12, 13, 11, 136, 9, 4, 197, 145, 19, 5,
-			2, 2, 13, 12, 137, 11, 195, 169, 18, 195, 169, 19, 18, 5, 13, 46, 10, 20, 1, 18, 11, 195, 173, 20, 15, 20, 20, 47, 108, 52,
-			49, 112, 47, 39, 47, 12, 15, 10, 37, 72, 118, 57, 114, 52, 114, 91, 0, 13, 81, 105, 100, 197, 145, 106, 195, 161, 114, 195, 161, 115,
-			32, 9, 198, 53, 85, 1, 80, 226, 64, 13, 10, 135, 1, 4, 195, 179, 4, 9, 11, 13, 9, 198, 52, 240, 137, 48, 242, 192, 13, 9,
-			134, 1, 18, 18, 195, 179, 12, 13, 9, 134, 1, 18, 18, 195, 179, 12, 13, 0, 12, 137, 4, 18, 195, 161, 7, 195, 161, 2, 2, 13,
-			50, 11, 20, 195, 161, 13, 15, 7, 1, 20, 15, 20, 20, 47, 114, 65, 39, 81, 108, 47, 39, 47, 12, 23, 49, 37, 108, 72, 114, 91,
-			23, 55, 109, 89, 0, 13, 82, 107, 105, 97, 100, 195, 161, 115, 32, 108, 101, 115, 122, 32, 14, 139, 20, 195, 161, 13, 15, 7, 1, 20,
-			15, 20, 20, 13, 10, 199, 77, 161, 82, 88, 86, 142, 36, 13, 0, 11, 200, 24, 241, 207, 73, 99, 211, 60, 208, 13, 16, 141, 9, 14,
-			20, 195, 169, 26, 13, 195, 169, 14, 25, 5, 11, 13, 12, 137, 20, 195, 161, 18, 15, 12, 195, 179, 11, 13, 7, 196, 72, 17, 193, 16,
-			13, 7, 196, 20, 225, 197, 52, 13, 0, 12, 201, 8, 150, 143, 57, 145, 193, 80, 226, 64, 13, 11, 136, 8, 195, 179, 14, 1, 16, 10,
-			1, 13, 12, 137, 11, 15, 18, 195, 161, 18, 195, 179, 12, 13, 11, 136, 5, 12, 195, 169, 7, 7, 195, 169, 13, 13, 138, 5, 18, 197,
-			145, 12, 20, 5, 20, 9, 11, 13, 12, 201, 60, 64, 70, 36, 118, 69, 48, 226, 64, 13, 9, 134, 5, 12, 14, 195, 182, 11, 13, 0,
-			15, 140, 12, 5, 7, 4, 18, 195, 161, 7, 195, 161, 2, 2, 13, 9, 134, 14, 195, 169, 14, 9, 20, 13, 13, 138, 20, 195, 169, 13,
-			195, 161, 18, 195, 179, 12, 13, 12, 137, 195, 161, 12, 12, 195, 173, 20, 10, 1, 13, 0, 9, 198, 77, 161, 82, 20, 195, 69, 13, 33,
-			11, 11, 1, 20, 15, 14, 195, 161, 18, 195, 179, 12, 49, 108, 47, 39, 50, 114, 52, 115, 55, 23, 84, 108, 50, 0, 13, 81, 118, 97,
-			110, 32, 14, 139, 11, 1, 20, 15, 14, 195, 161, 18, 195, 179, 12, 13, 17, 142, 4, 21, 16, 12, 9, 11, 195, 161, 3, 9, 195, 179,
-			18, 1, 13, 14, 139, 6, 15, 18, 18, 195, 161, 19, 2, 195, 179, 12, 13, 13, 138, 22, 9, 12, 195, 161, 7, 195, 161, 2, 1, 13,
-			0, 17, 142, 12, 5, 7, 6, 5, 12, 20, 197, 177, 14, 197, 145, 2, 2, 13, 26, 68, 44, 144, 211, 36, 49, 37, 76, 37, 10, 6,
-			15, 108, 107, 39, 88, 0, 13, 81, 97, 104, 104, 111, 122, 32, 19, 144, 8, 195, 161, 26, 19, 26, 1, 2, 195, 161, 12, 25, 20, 195,
-			179, 12, 13, 14, 139, 8, 1, 19, 26, 14, 195, 161, 12, 14, 15, 13, 13, 0, 20, 69, 84, 37, 78, 81, 80, 117, 98, 117, 110, 116,
-			117, 110, 0, 44, 29, 81, 110, 32, 56, 14, 6, 5, 12, 8, 1, 19, 26, 14, 195, 161, 12, 195, 179, 11, 83, 109, 55, 107, 108, 89,
-			50, 114, 55, 115, 49, 23, 55, 109, 47, 110, 55, 47, 113, 91, 109, 37, 47, 0, 13, 81, 108, 101, 116, 195, 182, 108, 116, 195, 169, 115,
-			101, 105, 116, 32, 12, 137, 195, 169, 12, 13, 195, 169, 14, 25, 20, 13, 45, 14, 6, 5, 12, 8, 1, 19, 26, 14, 195, 161, 12, 195,
-			179, 11, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 49, 23, 57, 110, 50, 12, 109, 49, 0, 13, 81, 106, 195, 182, 110, 110, 101, 107,
-			32, 16, 141, 8, 15, 14, 12, 1, 16, 10, 195, 161, 18, 195, 179, 12, 13, 16, 141, 22, 195, 161, 12, 12, 1, 12, 1, 20, 2, 195,
-			179, 12, 13, 16, 141, 5, 12, 12, 195, 161, 20, 15, 7, 1, 20, 15, 20, 20, 13, 0, 6, 195, 21, 161, 75, 13, 17, 142, 16, 18,
-			15, 2, 12, 195, 169, 13, 195, 161, 18, 195, 179, 12, 13, 0, 10, 199, 32, 19, 12, 61, 69, 1, 52, 13, 13, 138, 11, 195, 182, 20,
-			5, 12, 5, 26, 14, 9, 13, 6, 195, 88, 19, 12, 13, 0, 14, 139, 11, 195, 182, 26, 12, 5, 11, 5, 4, 197, 145, 13, 43, 11,
-			14, 5, 13, 26, 5, 20, 11, 195, 182, 26, 9, 50, 109, 65, 88, 109, 47, 49, 110, 88, 37, 23, 89, 108, 71, 84, 114, 67, 0, 13,
-			81, 115, 122, 97, 98, 118, 195, 161, 110, 121, 32, 44, 11, 14, 5, 13, 26, 5, 20, 11, 195, 182, 26, 9, 50, 109, 65, 88, 109, 47,
-			49, 110, 88, 37, 23, 89, 108, 71, 84, 114, 67, 0, 13, 81, 115, 122, 97, 98, 98, 118, 195, 161, 110, 121, 32, 6, 195, 4, 32, 129,
-			13, 11, 136, 11, 195, 169, 19, 26, 195, 173, 20, 13, 9, 134, 195, 169, 18, 10, 5, 14, 13, 14, 4, 95, 50, 15, 24, 65, 114, 91,
-			39, 72, 37, 49, 0, 0, 19, 144, 14, 25, 21, 7, 195, 161, 12, 12, 15, 13, 195, 161, 14, 25, 2, 1, 13, 0, 37, 67, 13, 80,
-			195, 119, 40, 119, 12, 23, 49, 111, 55, 83, 110, 55, 72, 52, 118, 55, 0, 13, 81, 107, 195, 188, 108, 102, 195, 182, 108, 100, 114, 197,
-			145, 108, 32, 6, 195, 13, 80, 195, 13, 9, 198, 32, 21, 143, 57, 64, 64, 13, 11, 136, 22, 5, 18, 26, 9, 195, 179, 14, 13, 25,
-			7, 195, 182, 12, 10, 195, 169, 11, 110, 57, 57, 113, 49, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 10, 135, 13, 195, 169, 18,
-			14, 5, 11, 13, 9, 134, 195, 169, 10, 10, 5, 12, 13, 10, 135, 195, 161, 12, 12, 14, 1, 11, 13, 14, 6, 95, 35, 45, 22, 5,
-			12, 113, 84, 109, 55, 0, 21, 0, 12, 137, 11, 195, 169, 16, 5, 11, 2, 5, 14, 22, 15, 7, 95, 35, 45, 20, 195, 179, 12, 114,
-			47, 115, 55, 0, 21, 0, 19, 144, 2, 197, 177, 14, 3, 19, 5, 12, 5, 11, 13, 195, 169, 14, 25, 20, 13, 7, 196, 80, 244, 148,
-			4, 13, 7, 196, 80, 84, 150, 20, 13, 0, 10, 135, 195, 188, 7, 25, 2, 5, 14, 13, 13, 138, 19, 26, 195, 161, 13, 15, 12, 14,
-			1, 11, 13, 10, 135, 19, 26, 195, 161, 13, 15, 14, 13, 8, 197, 72, 144, 211, 4, 160, 13, 0, 9, 198, 32, 144, 130, 4, 229, 0,
-			13, 34, 7, 12, 195, 161, 20, 195, 179, 11, 55, 114, 47, 115, 49, 23, 89, 114, 65, 114, 52, 108, 0, 13, 81, 115, 122, 195, 161, 109,
-			195, 161, 114, 97, 32, 9, 198, 4, 35, 1, 45, 32, 64, 13, 11, 136, 20, 21, 4, 195, 161, 19, 195, 186, 13, 10, 135, 20, 5, 20,
-			20, 195, 169, 11, 13, 14, 139, 8, 1, 19, 26, 14, 195, 161, 12, 14, 1, 11, 13, 0, 9, 134, 7, 195, 161, 18, 4, 1, 13, 15,
-			140, 22, 195, 161, 19, 195, 161, 18, 15, 12, 14, 1, 11, 13, 10, 199, 53, 83, 139, 4, 129, 76, 100, 13, 10, 135, 19, 26, 195, 161,
-			13, 15, 12, 13, 12, 137, 22, 195, 182, 12, 7, 25, 2, 5, 14, 13, 19, 134, 12, 195, 161, 20, 20, 1, 13, 81, 112, 101, 116, 197,
-			145, 102, 105, 116, 32, 6, 195, 21, 33, 68, 13, 14, 139, 18, 1, 14, 7, 10, 1, 9, 20, 195, 179, 12, 13, 9, 134, 195, 169, 18,
-			26, 5, 13, 13, 9, 134, 12, 195, 161, 20, 20, 1, 13, 6, 131, 195, 188, 12, 13, 6, 195, 80, 83, 20, 13, 0, 11, 200, 9, 81,
-			1, 64, 84, 212, 20, 224, 13, 0, 12, 137, 16, 15, 19, 26, 20, 18, 195, 179, 12, 13, 12, 137, 13, 195, 186, 12, 20, 18, 195, 179,
-			12, 13, 16, 141, 11, 15, 12, 12, 195, 169, 7, 195, 161, 9, 22, 1, 12, 13, 13, 138, 18, 5, 14, 4, 197, 145, 18, 14, 5, 11,
-			13, 8, 197, 24, 241, 207, 81, 64, 13, 13, 138, 195, 173, 20, 195, 169, 12, 20, 195, 169, 11, 13, 0, 15, 140, 6, 5, 12, 2, 15,
-			14, 20, 195, 161, 19, 195, 186, 13, 17, 142, 195, 169, 18, 20, 5, 19, 195, 173, 20, 197, 145, 22, 5, 12, 13, 7, 132, 10, 195, 182,
-			14, 13, 7, 132, 8, 195, 182, 26, 13, 13, 4, 95, 1, 3, 50, 49, 109, 47, 12, 118, 91, 0, 0, 18, 143, 9, 12, 12, 5, 20,
-			195, 169, 11, 5, 19, 195, 169, 22, 5, 12, 13, 10, 135, 12, 195, 161, 20, 195, 179, 20, 13, 18, 143, 19, 5, 7, 195, 173, 20, 19,
-			195, 169, 7, 195, 169, 22, 5, 12, 13, 13, 138, 5, 12, 13, 5, 19, 195, 169, 12, 20, 5, 13, 6, 195, 88, 145, 4, 13, 0, 19,
-			144, 11, 195, 182, 26, 195, 182, 19, 19, 195, 169, 7, 195, 169, 22, 5, 12, 13, 14, 139, 11, 18, 9, 20, 9, 26, 195, 161, 12, 20,
-			1, 13, 0, 11, 136, 19, 26, 195, 161, 12, 12, 14, 9, 13, 9, 198, 4, 64, 75, 61, 162, 75, 13, 17, 142, 11, 15, 14, 3, 5,
-			14, 20, 18, 195, 161, 12, 14, 1, 11, 13, 17, 142, 8, 1, 10, 12, 195, 169, 11, 20, 1, 12, 1, 14, 15, 11, 13, 0, 9, 198,
-			77, 160, 66, 61, 69, 0, 13, 23, 148, 8, 15, 26, 26, 195, 161, 10, 195, 161, 18, 21, 12, 195, 161, 19, 15, 11, 2, 1, 14, 13,
-			9, 134, 195, 169, 18, 26, 5, 4, 13, 5, 194, 72, 80, 13, 9, 66, 60, 176, 39, 49, 0, 42, 42, 11, 67, 52, 148, 211, 65, 37,
-			89, 12, 0, 25, 0, 10, 135, 19, 26, 195, 161, 13, 15, 20, 13, 0, 16, 141, 195, 169, 18, 20, 195, 169, 11, 5, 12, 10, 195, 188,
-			11, 13, 6, 195, 76, 242, 1, 13, 15, 140, 22, 9, 26, 19, 7, 195, 161, 12, 1, 20, 15, 20, 13, 0, 8, 197, 81, 81, 20, 84,
-			176, 13, 20, 145, 11, 195, 169, 19, 26, 195, 188, 12, 195, 169, 11, 5, 11, 14, 195, 169, 12, 13, 10, 135, 13, 21, 19, 26, 195, 161,
-			10, 13, 15, 140, 2, 9, 26, 15, 14, 25, 195, 173, 20, 1, 14, 9, 13, 8, 197, 52, 20, 139, 60, 208, 13, 0, 9, 198, 80, 82,
-			5, 80, 82, 192, 13, 0, 6, 195, 60, 181, 0, 20, 0, 15, 140, 19, 26, 1, 2, 195, 161, 12, 25, 26, 195, 179, 20, 13, 0, 40,
-			69, 56, 85, 133, 104, 144, 50, 109, 84, 109, 88, 37, 23, 47, 40, 55, 108, 57, 72, 39, 50, 39, 91, 108, 0, 13, 81, 116, 117, 108,
-			97, 106, 100, 111, 110, 111, 115, 97, 32, 30, 67, 21, 161, 82, 109, 88, 109, 52, 23, 83, 39, 52, 37, 50, 47, 39, 47, 0, 13, 81,
-			102, 111, 114, 105, 110, 116, 111, 116, 32, 26, 67, 21, 161, 82, 109, 88, 109, 52, 23, 83, 39, 52, 37, 50, 47, 0, 13, 81, 102, 111,
-			114, 105, 110, 116, 32, 8, 197, 40, 81, 217, 20, 144, 13, 16, 141, 6, 195, 188, 7, 7, 5, 20, 12, 5, 14, 195, 188, 12, 13, 9,
-			198, 80, 82, 5, 80, 225, 75, 13, 9, 198, 48, 82, 5, 80, 225, 75, 13, 0, 15, 3, 95, 203, 135, 55, 109, 83, 109, 55, 113, 67,
-			112, 55, 0, 9, 198, 29, 144, 75, 61, 34, 64, 13, 0, 14, 139, 195, 169, 18, 4, 5, 11, 5, 9, 22, 5, 12, 13, 14, 139, 5,
-			12, 197, 145, 6, 15, 18, 4, 21, 12, 20, 13, 15, 140, 11, 195, 182, 22, 5, 20, 11, 5, 26, 14, 5, 11, 13, 18, 4, 95, 56,
-			48, 15, 67, 39, 55, 119, 84, 108, 50, 108, 72, 37, 49, 0, 0, 11, 200, 40, 83, 12, 20, 209, 90, 80, 80, 13, 33, 68, 52, 17,
-			193, 16, 65, 108, 81, 108, 72, 23, 109, 79, 109, 50, 109, 91, 109, 50, 0, 13, 81, 101, 103, 121, 101, 110, 101, 115, 101, 110, 32, 14,
-			139, 11, 9, 2, 195, 169, 11, 195, 188, 12, 22, 5, 13, 15, 140, 11, 9, 1, 4, 195, 161, 19, 195, 161, 22, 1, 12, 13, 11, 200,
-			77, 163, 198, 81, 97, 82, 20, 144, 13, 7, 196, 52, 17, 193, 16, 13, 0, 12, 3, 95, 194, 186, 91, 39, 34, 89, 114, 65, 0, 9,
-			134, 20, 15, 10, 195, 161, 19, 13, 0, 23, 3, 95, 194, 187, 71, 109, 55, 91, 118, 57, 39, 71, 71, 37, 72, 113, 88, 118, 57, 109,
-			55, 0, 17, 142, 20, 1, 18, 20, 15, 26, 195, 169, 11, 195, 161, 22, 1, 12, 13, 37, 9, 6, 15, 18, 4, 195, 173, 20, 22, 1,
-			83, 39, 52, 72, 112, 47, 84, 108, 23, 108, 6, 23, 89, 115, 47, 0, 13, 82, 97, 32, 115, 122, 195, 179, 116, 32, 13, 138, 22, 195,
-			161, 12, 20, 15, 26, 15, 20, 20, 13, 12, 137, 10, 195, 161, 20, 19, 26, 1, 14, 1, 13, 15, 140, 6, 15, 18, 13, 195, 161, 10,
-			195, 161, 2, 1, 14, 13, 0, 0, 16, 3, 95, 194, 185, 109, 55, 89, 118, 107, 108, 47, 84, 114, 67, 0, 17, 142, 20, 195, 161, 18,
-			19, 1, 4, 1, 12, 15, 13, 2, 1, 14, 13, 19, 144, 13, 5, 3, 8, 1, 14, 9, 26, 13, 21, 19, 195, 161, 22, 1, 12, 13,
-			0, 53, 10, 19, 26, 5, 13, 195, 169, 12, 25, 5, 19, 89, 109, 65, 113, 57, 109, 91, 23, 71, 109, 114, 55, 12, 37, 47, 114, 91,
-			39, 49, 108, 47, 0, 13, 81, 98, 101, 195, 161, 108, 108, 195, 173, 116, 195, 161, 115, 111, 107, 97, 116, 32, 15, 140, 22, 195, 169, 12,
-			5, 13, 195, 169, 14, 25, 5, 13, 13, 11, 136, 10, 5, 12, 12, 5, 7, 197, 177, 13, 9, 198, 53, 85, 1, 80, 224, 75, 13, 0,
-			10, 67, 56, 21, 15, 50, 114, 47, 115, 0, 21, 146, 22, 195, 169, 7, 18, 5, 8, 1, 10, 20, 195, 161, 19, 195, 161, 22, 1, 12,
-			13, 14, 139, 13, 5, 7, 14, 195, 169, 26, 26, 195, 188, 11, 13, 10, 135, 18, 195, 179, 12, 21, 14, 11, 13, 0, 7, 131, 195, 186,
-			20, 20, 13, 0, 6, 195, 32, 83, 25, 13, 23, 148, 8, 15, 26, 26, 195, 161, 10, 195, 161, 18, 21, 12, 195, 161, 19, 195, 161, 22,
-			1, 12, 13, 6, 195, 32, 83, 25, 13, 6, 195, 32, 83, 25, 13, 0, 45, 8, 195, 169, 18, 9, 14, 20, 197, 145, 113, 52, 37, 50,
-			47, 118, 23, 49, 113, 52, 72, 113, 91, 109, 49, 71, 109, 50, 0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101, 107, 98, 101, 110,
-			32, 35, 69, 32, 83, 25, 20, 224, 107, 109, 57, 109, 50, 23, 49, 37, 107, 108, 79, 12, 114, 49, 0, 13, 81, 107, 105, 104, 97, 103,
-			121, 106, 195, 161, 107, 32, 45, 8, 195, 169, 18, 9, 14, 20, 197, 145, 113, 52, 37, 50, 47, 118, 23, 83, 52, 37, 91, 12, 112, 47,
-			113, 91, 109, 49, 0, 13, 81, 102, 114, 105, 115, 115, 195, 173, 116, 195, 169, 115, 101, 107, 32, 15, 140, 8, 9, 22, 1, 20, 1, 12,
-			15, 19, 19, 195, 161, 13, 11, 136, 195, 169, 18, 9, 14, 20, 197, 145, 13, 8, 197, 32, 83, 25, 20, 224, 13, 10, 135, 13, 5, 14,
-			20, 195, 169, 14, 13, 6, 131, 195, 186, 18, 13, 0, 12, 137, 11, 5, 22, 5, 18, 195, 169, 11, 5, 13, 14, 139, 14, 195, 182, 22,
-			5, 11, 5, 4, 195, 169, 19, 13, 14, 139, 14, 5, 21, 18, 15, 12, 195, 179, 7, 21, 19, 13, 10, 135, 22, 195, 161, 18, 14, 1,
-			11, 13, 10, 135, 10, 195, 161, 18, 14, 1, 11, 13, 10, 135, 14, 195, 169, 26, 14, 5, 11, 13, 8, 133, 18, 195, 179, 12, 1, 13,
-			14, 6, 95, 35, 45, 22, 1, 12, 114, 84, 108, 55, 0, 21, 0, 9, 198, 24, 83, 12, 20, 195, 137, 13, 17, 142, 10, 5, 12, 5,
-			14, 20, 197, 145, 19, 195, 169, 7, 197, 177, 13, 0, 13, 138, 197, 145, 19, 26, 9, 14, 20, 195, 169, 14, 13, 30, 10, 8, 1, 19,
-			26, 14, 195, 161, 12, 19, 26, 107, 108, 89, 50, 114, 55, 89, 15, 83, 109, 55, 0, 13, 81, 102, 101, 108, 32, 13, 138, 8, 1, 19,
-			26, 14, 195, 161, 12, 19, 26, 13, 14, 139, 195, 169, 16, 195, 173, 20, 195, 169, 19, 197, 177, 13, 7, 132, 195, 169, 10, 20, 13, 15,
-			8, 95, 35, 45, 195, 161, 22, 1, 12, 114, 84, 108, 55, 0, 15, 8, 95, 35, 45, 195, 169, 22, 5, 12, 113, 84, 109, 55, 0, 0,
-			11, 2, 195, 151, 47, 108, 55, 48, 108, 91, 0, 9, 198, 48, 85, 20, 21, 65, 75, 13, 10, 135, 20, 1, 14, 4, 195, 173, 10, 13,
-			8, 197, 24, 145, 217, 20, 192, 13, 12, 201, 57, 146, 76, 5, 66, 207, 105, 64, 64, 13, 14, 139, 195, 161, 12, 12, 1, 13, 15, 11,
-			2, 1, 14, 13, 0, 16, 141, 6, 5, 10, 12, 5, 19, 26, 20, 195, 169, 19, 197, 177, 13, 13, 138, 8, 15, 18, 4, 195, 161, 9,
-			22, 1, 12, 13, 47, 10, 9, 4, 197, 145, 14, 11, 195, 169, 14, 20, 37, 72, 118, 50, 49, 113, 50, 47, 23, 108, 6, 15, 83, 109,
-			55, 107, 118, 88, 109, 47, 0, 13, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 11, 136, 14, 5, 22, 195, 169, 2, 5,
-			14, 13, 14, 139, 20, 195, 182, 18, 5, 11, 5, 4, 14, 5, 11, 13, 10, 135, 22, 195, 161, 12, 14, 1, 11, 13, 0, 16, 141, 5,
-			12, 13, 195, 169, 12, 5, 20, 5, 11, 2, 5, 14, 13, 12, 137, 12, 1, 16, 10, 195, 161, 2, 1, 14, 13, 12, 137, 19, 26, 15,
-			2, 195, 161, 2, 1, 14, 13, 12, 137, 20, 195, 169, 13, 195, 161, 2, 1, 14, 13, 14, 139, 9, 18, 195, 161, 14, 25, 195, 161, 22,
-			1, 12, 13, 0, 6, 195, 88, 149, 1, 13, 15, 140, 19, 26, 195, 182, 22, 5, 7, 195, 169, 22, 5, 12, 13, 13, 138, 21, 4, 22,
-			1, 18, 195, 161, 2, 1, 14, 13, 12, 201, 40, 83, 5, 57, 66, 197, 105, 65, 75, 13, 7, 132, 4, 195, 186, 12, 13, 0, 14, 139,
-			5, 7, 195, 169, 19, 26, 195, 169, 2, 5, 14, 13, 16, 141, 11, 9, 22, 195, 169, 20, 5, 12, 195, 169, 22, 5, 12, 13, 0, 26,
-			70, 56, 85, 133, 105, 65, 64, 50, 109, 84, 109, 89, 47, 109, 23, 108, 89, 47, 0, 13, 81, 97, 122, 116, 32, 17, 142, 11, 195, 173,
-			14, 195, 161, 12, 1, 20, 195, 161, 22, 1, 12, 13, 26, 70, 56, 85, 133, 105, 65, 64, 50, 109, 84, 109, 89, 47, 109, 23, 65, 109,
-			81, 0, 13, 81, 109, 101, 103, 32, 19, 144, 20, 195, 161, 18, 7, 25, 1, 12, 195, 161, 19, 15, 11, 2, 1, 14, 13, 10, 135, 20,
-			1, 14, 21, 12, 195, 179, 13, 9, 198, 56, 85, 133, 105, 65, 64, 13, 9, 198, 8, 194, 75, 45, 33, 64, 13, 10, 135, 13, 195, 169,
-			12, 20, 195, 179, 13, 9, 198, 80, 20, 148, 61, 69, 0, 13, 8, 133, 6, 195, 169, 14, 25, 13, 0, 18, 143, 8, 1, 19, 26, 14,
-			195, 161, 12, 1, 20, 195, 161, 22, 1, 12, 13, 15, 140, 2, 9, 26, 15, 14, 25, 195, 173, 20, 195, 169, 11, 13, 18, 143, 2, 5,
-			13, 21, 20, 1, 20, 195, 161, 19, 195, 161, 22, 1, 12, 13, 11, 136, 195, 169, 18, 20, 10, 195, 188, 11, 13, 6, 195, 12, 243, 20,
-			13, 0, 12, 201, 57, 146, 76, 5, 66, 207, 105, 64, 75, 13, 19, 144, 5, 12, 15, 19, 26, 12, 1, 20, 195, 161, 19, 195, 161, 22,
-			1, 12, 13, 19, 144, 1, 12, 11, 1, 12, 13, 1, 26, 195, 161, 19, 195, 161, 22, 1, 12, 13, 32, 67, 32, 85, 5, 107, 109, 47,
-			109, 23, 107, 108, 89, 50, 114, 55, 39, 65, 0, 13, 81, 104, 97, 115, 122, 110, 195, 161, 108, 111, 109, 32, 11, 136, 6, 18, 9, 19,
-			19, 195, 188, 12, 13, 17, 142, 5, 12, 12, 195, 161, 20, 195, 161, 19, 195, 161, 2, 1, 14, 13, 15, 140, 12, 195, 169, 16, 195, 169,
-			19, 11, 195, 169, 14, 20, 13, 0, 11, 2, 194, 167, 89, 6, 108, 49, 108, 89, 0, 9, 2, 195, 159, 21, 100, 101, 0, 10, 32, 69,
-			81, 81, 15, 81, 64, 47, 40, 72, 39, 47, 12, 23, 48, 37, 107, 109, 50, 12, 37, 0, 13, 81, 112, 105, 104, 101, 110, 110, 105, 32,
-			18, 143, 20, 5, 19, 26, 20, 5, 12, 195, 169, 19, 195, 169, 2, 5, 14, 13, 20, 145, 11, 15, 18, 12, 195, 161, 20, 15, 26, 195,
-			161, 19, 195, 161, 22, 1, 12, 13, 9, 198, 20, 195, 69, 57, 66, 75, 13, 9, 198, 80, 82, 201, 57, 66, 75, 13, 8, 197, 81, 81,
-			15, 81, 64, 13, 0, 22, 66, 76, 80, 91, 109, 23, 71, 112, 52, 39, 65, 0, 13, 81, 98, 195, 173, 114, 111, 109, 32, 21, 66, 76,
-			80, 91, 109, 23, 49, 108, 48, 50, 37, 0, 13, 81, 107, 97, 112, 110, 105, 32, 29, 66, 76, 80, 91, 109, 23, 113, 52, 47, 109, 47,
-			12, 113, 49, 0, 13, 81, 195, 169, 114, 116, 101, 116, 116, 195, 169, 107, 32, 24, 66, 76, 80, 91, 109, 10, 6, 15, 47, 52, 113, 83,
-			108, 0, 13, 81, 116, 114, 195, 169, 102, 97, 32, 27, 66, 76, 80, 91, 109, 23, 76, 37, 50, 114, 55, 39, 49, 0, 13, 81, 99, 115,
-			105, 110, 195, 161, 108, 111, 107, 32, 23, 66, 76, 80, 91, 109, 23, 84, 109, 47, 12, 109, 65, 0, 13, 81, 118, 101, 116, 116, 101, 109,
-			32, 12, 137, 11, 195, 182, 26, 195, 182, 20, 20, 9, 13, 5, 194, 56, 240, 72, 5, 194, 76, 80, 13, 0, 0, 9, 198, 20, 209, 76,
-			21, 65, 78, 13, 11, 200, 40, 21, 129, 76, 192, 84, 61, 64, 13, 11, 200, 32, 20, 207, 56, 192, 84, 61, 64, 13, 0, 8, 197, 88,
-			243, 20, 4, 176, 13, 0, 12, 137, 10, 195, 161, 20, 19, 26, 1, 14, 9, 13, 13, 138, 8, 9, 18, 4, 5, 20, 14, 195, 169, 4,
-			13, 10, 135, 11, 195, 169, 18, 14, 5, 11, 13, 0, 10, 135, 9, 4, 197, 145, 22, 5, 12, 13, 10, 199, 72, 81, 201, 77, 165, 5,
-			72, 13, 9, 134, 12, 195, 169, 20, 18, 5, 13, 0, 14, 2, 194, 174, 71, 109, 57, 109, 79, 88, 109, 47, 12, 0, 5, 130, 195, 166,
-			43, 35, 68, 32, 246, 142, 4, 107, 39, 88, 50, 108, 23, 65, 109, 81, 39, 55, 72, 114, 91, 47, 0, 13, 81, 109, 101, 103, 111, 108,
-			100, 195, 161, 115, 116, 32, 12, 137, 195, 169, 12, 22, 5, 26, 14, 5, 11, 13, 28, 4, 195, 169, 12, 20, 113, 55, 47, 6, 23, 91,
-			39, 49, 114, 37, 81, 0, 13, 81, 115, 111, 107, 195, 161, 105, 103, 32, 12, 137, 11, 5, 18, 195, 188, 12, 14, 5, 11, 13, 9, 134,
-			6, 195, 169, 12, 19, 26, 13, 7, 132, 195, 169, 12, 20, 13, 0, 5, 130, 195, 167, 43, 29, 7, 19, 26, 195, 179, 12, 19, 26, 89,
-			115, 55, 89, 23, 107, 39, 88, 88, 114, 0, 13, 81, 104, 111, 122, 122, 195, 161, 32, 8, 197, 32, 17, 217, 88, 16, 13, 9, 198, 32,
-			148, 218, 37, 65, 75, 13, 10, 135, 19, 26, 195, 179, 12, 19, 26, 13, 17, 3, 21, 46, 14, 116, 79, 50, 109, 84, 109, 88, 109, 47,
-			12, 0, 25, 17, 3, 195, 186, 14, 116, 79, 50, 109, 84, 109, 88, 109, 47, 12, 0, 25, 0, 15, 2, 194, 172, 55, 39, 81, 37, 49,
-			108, 37, 50, 109, 65, 0, 5, 130, 195, 164, 43, 9, 134, 195, 169, 20, 5, 12, 20, 13, 43, 8, 195, 186, 10, 15, 14, 14, 1, 14,
-			116, 57, 39, 50, 12, 108, 50, 23, 47, 109, 55, 109, 48, 112, 47, 109, 47, 12, 0, 13, 81, 116, 101, 108, 101, 112, 195, 173, 116, 101,
-			116, 116, 32, 9, 198, 80, 84, 150, 21, 162, 64, 13, 9, 198, 32, 19, 12, 41, 82, 192, 13, 10, 135, 2, 195, 186, 10, 14, 1, 11,
-			13, 10, 135, 22, 5, 20, 20, 195, 169, 11, 13, 15, 140, 8, 1, 20, 195, 179, 1, 14, 25, 1, 7, 195, 186, 13, 10, 135, 22, 9,
-			20, 20, 195, 169, 11, 13, 9, 198, 80, 21, 129, 77, 162, 64, 20, 0, 9, 135, 5, 7, 25, 195, 188, 20, 20, 24, 67, 48, 85, 20,
-			55, 109, 47, 12, 23, 84, 39, 55, 50, 108, 0, 13, 81, 118, 111, 108, 110, 97, 32, 22, 67, 48, 85, 20, 55, 109, 47, 12, 23, 81,
-			39, 50, 72, 0, 13, 81, 103, 111, 110, 100, 32, 6, 195, 48, 85, 20, 13, 0, 7, 196, 72, 149, 11, 4, 13, 14, 139, 195, 173, 20,
-			195, 169, 12, 20, 5, 20, 22, 5, 13, 24, 68, 56, 82, 197, 16, 50, 109, 49, 109, 72, 15, 49, 109, 55, 12, 0, 13, 81, 107, 101,
-			108, 108, 32, 36, 72, 77, 163, 198, 81, 97, 82, 20, 176, 89, 39, 83, 47, 84, 109, 52, 109, 49, 15, 108, 52, 114, 67, 108, 0, 13,
-			81, 97, 114, 195, 161, 110, 121, 97, 32, 10, 135, 19, 26, 195, 179, 12, 22, 1, 13, 7, 196, 56, 82, 197, 16, 13, 0, 28, 3, 195,
-			186, 10, 116, 57, 10, 6, 15, 108, 71, 55, 108, 49, 39, 47, 0, 13, 81, 97, 98, 108, 97, 107, 111, 116, 32, 31, 3, 195, 186, 10,
-			116, 57, 23, 65, 109, 81, 39, 55, 72, 114, 91, 47, 0, 13, 81, 109, 101, 103, 111, 108, 100, 195, 161, 115, 116, 32, 31, 69, 8, 150,
-			148, 61, 48, 71, 37, 89, 47, 39, 91, 23, 89, 109, 52, 37, 50, 47, 0, 13, 81, 115, 122, 101, 114, 105, 110, 116, 32, 21, 3, 195,
-			186, 10, 116, 57, 15, 108, 57, 47, 115, 0, 13, 81, 97, 106, 116, 195, 179, 32, 8, 197, 8, 150, 148, 61, 48, 13, 8, 133, 195, 173,
-			22, 5, 20, 13, 6, 131, 195, 186, 10, 13, 0, 15, 140, 16, 15, 12, 9, 20, 9, 11, 195, 161, 2, 1, 14, 13, 14, 139, 8, 9,
-			195, 161, 14, 25, 15, 26, 14, 1, 11, 13, 13, 138, 22, 5, 18, 26, 9, 195, 179, 22, 1, 12, 13, 12, 138, 22, 5, 18, 26, 9,
-			195, 179, 22, 1, 12, 16, 141, 9, 14, 20, 15, 14, 195, 161, 3, 9, 195, 179, 10, 1, 13, 9, 198, 80, 84, 150, 21, 161, 84, 13,
-			11, 136, 9, 14, 1, 11, 20, 195, 173, 22, 13, 15, 140, 12, 9, 19, 20, 195, 161, 10, 195, 161, 2, 1, 14, 13, 15, 140, 8, 5,
-			12, 25, 19, 26, 195, 173, 14, 195, 169, 14, 13, 16, 141, 19, 26, 5, 13, 12, 195, 169, 12, 20, 5, 20, 22, 5, 13, 11, 136, 20,
-			5, 19, 20, 22, 195, 169, 18, 13, 0, 18, 2, 194, 169, 119, 39, 48, 37, 52, 37, 81, 107, 47, 20, 57, 109, 55, 0, 10, 199, 13,
-			51, 205, 4, 113, 193, 48, 13, 0, 13, 2, 194, 182, 71, 109, 49, 109, 88, 72, 113, 91, 0, 11, 136, 16, 21, 19, 26, 20, 195, 173,
-			20, 13, 7, 196, 52, 17, 193, 52, 13, 7, 132, 4, 195, 188, 8, 13, 0, 13, 138, 18, 5, 13, 195, 169, 12, 10, 195, 188, 11, 13,
-			44, 8, 11, 15, 18, 195, 161, 2, 2, 9, 49, 39, 52, 114, 71, 12, 37, 23, 109, 55, 49, 113, 48, 88, 109, 55, 113, 91, 0, 13,
-			81, 101, 108, 107, 195, 169, 112, 122, 101, 108, 195, 169, 115, 32, 12, 137, 13, 195, 169, 18, 5, 20, 195, 169, 20, 13, 0, 17, 142, 195,
-			169, 20, 5, 12, 8, 15, 18, 4, 195, 179, 22, 1, 12, 13, 14, 139, 8, 1, 14, 7, 10, 5, 12, 26, 195, 169, 19, 13, 10, 135,
-			12, 195, 169, 16, 195, 169, 19, 13, 12, 137, 13, 195, 169, 18, 20, 195, 169, 11, 5, 13, 9, 198, 56, 85, 133, 104, 85, 20, 13, 10,
-			135, 11, 5, 12, 20, 195, 169, 19, 13, 5, 194, 60, 224, 13, 13, 66, 64, 192, 48, 113, 55, 72, 114, 40, 55, 0, 25, 0, 7, 2,
-			194, 181, 65, 117, 0, 6, 195, 4, 176, 68, 13, 9, 134, 6, 195, 169, 18, 6, 9, 13, 11, 136, 11, 195, 169, 18, 4, 195, 169, 19,
-			13, 0, 16, 141, 5, 12, 197, 145, 18, 5, 10, 5, 12, 26, 195, 169, 19, 13, 7, 196, 8, 195, 203, 44, 13, 14, 139, 13, 9, 14,
-			197, 145, 19, 195, 169, 7, 197, 177, 13, 9, 134, 6, 1, 12, 195, 161, 14, 13, 8, 133, 19, 26, 197, 177, 11, 13, 9, 196, 33, 49,
-			16, 4, 17, 42, 42, 0, 15, 140, 13, 5, 14, 14, 25, 9, 19, 195, 169, 7, 197, 177, 13, 30, 5, 11, 195, 161, 18, 20, 49, 114,
-			52, 47, 10, 6, 15, 39, 49, 39, 88, 50, 108, 0, 13, 81, 111, 107, 111, 122, 110, 97, 32, 16, 141, 20, 195, 182, 18, 20, 195, 169,
-			14, 5, 20, 195, 169, 20, 13, 8, 133, 5, 12, 197, 145, 12, 13, 10, 135, 12, 9, 19, 20, 195, 161, 14, 13, 9, 134, 1, 4, 10,
-			195, 161, 11, 13, 8, 133, 5, 12, 197, 145, 12, 13, 8, 133, 11, 195, 161, 18, 20, 13, 8, 133, 6, 195, 186, 10, 20, 13, 8, 133,
-			5, 12, 197, 145, 12, 13, 0, 8, 2, 194, 176, 83, 39, 49, 0, 11, 2, 194, 176, 83, 39, 49, 57, 109, 55, 0, 0, 14, 2, 194,
-			177, 48, 55, 40, 89, 65, 37, 50, 40, 89, 0, 5, 130, 195, 169, 14, 38, 70, 24, 244, 137, 57, 64, 129, 83, 39, 52, 37, 50, 47,
-			71, 108, 23, 49, 109, 52, 111, 55, 50, 109, 49, 0, 13, 81, 107, 101, 114, 195, 188, 108, 110, 101, 107, 32, 12, 137, 16, 1, 12, 5,
-			20, 20, 195, 161, 14, 13, 9, 134, 12, 195, 161, 20, 15, 13, 13, 11, 136, 13, 15, 14, 4, 10, 195, 161, 11, 13, 5, 130, 195, 169,
-			72, 0, 15, 2, 194, 190, 107, 114, 52, 39, 65, 50, 109, 79, 109, 72, 0, 12, 137, 22, 9, 20, 1, 20, 10, 195, 161, 11, 13, 9,
-			134, 3, 195, 169, 12, 195, 186, 13, 7, 132, 195, 182, 14, 20, 13, 0, 10, 2, 195, 183, 39, 89, 47, 114, 91, 0, 13, 138, 9, 7,
-			1, 26, 15, 12, 10, 195, 161, 11, 13, 13, 138, 11, 9, 8, 1, 7, 25, 10, 195, 161, 11, 13, 12, 137, 19, 26, 195, 179, 12, 20,
-			195, 161, 12, 13, 13, 138, 20, 195, 161, 13, 1, 4, 10, 195, 161, 11, 13, 12, 137, 16, 21, 12, 195, 179, 22, 5, 18, 20, 13, 8,
-			133, 2, 195, 169, 18, 20, 13, 8, 197, 32, 149, 20, 20, 64, 13, 13, 138, 12, 195, 161, 20, 19, 26, 15, 20, 15, 11, 13, 0, 10,
-			2, 194, 188, 50, 109, 79, 109, 72, 0, 8, 133, 19, 26, 195, 161, 13, 13, 9, 134, 5, 2, 2, 197, 145, 12, 13, 0, 8, 2, 194,
-			189, 83, 113, 55, 0, 6, 195, 81, 81, 4, 13, 54, 71, 81, 83, 1, 40, 67, 206, 80, 47, 40, 55, 108, 57, 72, 39, 50, 47, 23,
-			84, 113, 72, 118, 23, 47, 110, 52, 84, 113, 67, 109, 49, 0, 13, 82, 118, 195, 169, 100, 197, 145, 32, 116, 195, 182, 114, 118, 195, 169,
-			110, 121, 101, 107, 32, 15, 140, 22, 9, 26, 19, 7, 195, 161, 12, 10, 195, 161, 11, 13, 15, 140, 1, 12, 11, 1, 12, 13, 1, 26,
-			26, 195, 161, 11, 13, 11, 136, 18, 195, 186, 7, 20, 195, 161, 11, 13, 11, 136, 13, 15, 14, 4, 20, 195, 161, 11, 13, 0, 46, 5,
-			195, 169, 22, 9, 7, 113, 84, 37, 81, 23, 55, 109, 89, 23, 47, 114, 65, 39, 81, 108, 47, 39, 47, 12, 0, 13, 82, 108, 101, 115,
-			122, 32, 116, 195, 161, 109, 111, 103, 97, 116, 111, 116, 116, 32, 13, 138, 12, 195, 169, 16, 8, 5, 19, 19, 5, 14, 13, 11, 136, 20,
-			5, 18, 22, 2, 197, 145, 12, 13, 8, 133, 19, 18, 195, 161, 3, 13, 14, 4, 95, 3, 5, 4, 119, 113, 72, 37, 55, 55, 109, 0,
-			19, 67, 88, 146, 73, 67, 39, 55, 119, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 37, 10, 8, 1, 10, 20, 15, 20, 20, 195,
-			161, 11, 107, 108, 57, 47, 39, 47, 12, 114, 49, 23, 84, 113, 81, 52, 109, 0, 13, 81, 118, 195, 169, 103, 114, 101, 32, 13, 138, 7,
-			15, 14, 4, 15, 12, 20, 195, 161, 11, 13, 47, 69, 20, 208, 133, 73, 64, 109, 65, 71, 109, 52, 47, 23, 49, 37, 65, 109, 50, 109,
-			49, 112, 47, 109, 47, 12, 109, 49, 0, 13, 81, 107, 105, 109, 101, 110, 101, 107, 195, 173, 116, 101, 116, 116, 101, 107, 32, 37, 6, 22,
-			9, 12, 195, 161, 7, 84, 37, 55, 114, 81, 15, 72, 37, 76, 118, 91, 113, 81, 109, 0, 13, 81, 100, 105, 99, 115, 197, 145, 115, 195,
-			169, 103, 101, 32, 13, 138, 20, 195, 161, 13, 1, 4, 20, 195, 161, 11, 13, 8, 197, 80, 149, 11, 61, 64, 13, 13, 138, 20, 1, 18,
-			20, 15, 20, 20, 195, 161, 11, 13, 0, 9, 198, 32, 149, 129, 80, 19, 20, 13, 0, 5, 130, 195, 177, 43, 22, 148, 1, 11, 1, 4,
-			195, 161, 12, 25, 13, 5, 14, 20, 5, 19, 195, 173, 20, 195, 169, 19, 13, 138, 7, 15, 13, 2, 15, 12, 14, 195, 161, 13, 13, 14,
-			139, 18, 195, 169, 19, 26, 195, 169, 2, 197, 145, 12, 13, 42, 8, 1, 12, 1, 16, 21, 12, 195, 179, 108, 55, 108, 48, 40, 55, 115,
-			23, 47, 110, 52, 47, 113, 50, 109, 47, 109, 0, 13, 81, 116, 195, 182, 114, 116, 195, 169, 110, 101, 116, 101, 32, 13, 138, 20, 9, 19,
-			26, 20, 5, 12, 197, 145, 9, 13, 14, 203, 80, 20, 1, 77, 165, 1, 48, 21, 20, 4, 192, 13, 9, 198, 80, 84, 150, 21, 165, 133,
-			13, 8, 133, 19, 20, 195, 161, 2, 13, 15, 4, 95, 12, 9, 7, 55, 37, 81, 108, 47, 116, 52, 108, 0, 0, 34, 8, 10, 5, 12,
-			26, 195, 169, 19, 20, 57, 109, 55, 88, 113, 91, 47, 10, 6, 15, 108, 72, 50, 108, 49, 0, 13, 81, 97, 100, 110, 97, 107, 32, 9,
-			134, 26, 195, 161, 16, 15, 18, 13, 10, 135, 195, 161, 12, 12, 14, 9, 1, 13, 0, 11, 136, 4, 195, 182, 14, 20, 5, 14, 9, 13,
-			9, 134, 19, 1, 10, 20, 195, 179, 13, 8, 133, 19, 26, 195, 161, 4, 13, 6, 195, 88, 19, 0, 13, 0, 40, 15, 195, 161, 12, 12,
-			1, 16, 195, 173, 20, 15, 20, 20, 195, 161, 11, 114, 55, 12, 108, 48, 112, 47, 39, 47, 12, 114, 49, 23, 65, 109, 81, 0, 13, 81,
-			109, 101, 103, 32, 9, 198, 64, 20, 129, 77, 165, 0, 13, 9, 198, 44, 83, 20, 21, 69, 0, 13, 9, 134, 20, 195, 169, 7, 5, 4,
-			13, 5, 194, 80, 80, 13, 0, 21, 5, 195, 169, 22, 5, 14, 113, 84, 109, 50, 23, 114, 47, 0, 13, 81, 195, 161, 116, 32, 13, 138,
-			5, 12, 4, 195, 182, 14, 20, 5, 14, 9, 13, 15, 140, 11, 9, 22, 5, 20, 14, 9, 22, 1, 12, 195, 179, 13, 18, 67, 88, 146,
-			64, 107, 113, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 10, 135, 11, 195, 182, 20, 14, 9, 5, 13, 11, 200, 52, 147, 137,
-			77, 165, 5, 73, 64, 13, 0, 8, 197, 88, 243, 20, 4, 208, 72, 8, 197, 64, 84, 131, 72, 80, 22, 28, 67, 4, 176, 82, 108, 49,
-			108, 52, 23, 84, 108, 55, 108, 65, 37, 47, 0, 13, 81, 118, 97, 108, 97, 109, 105, 116, 32, 20, 145, 2, 5, 18, 5, 14, 4, 5,
-			26, 11, 5, 4, 195, 169, 19, 19, 5, 12, 13, 28, 69, 32, 18, 148, 40, 16, 107, 108, 57, 80, 108, 23, 84, 113, 81, 52, 109, 0,
-			13, 81, 118, 195, 169, 103, 114, 101, 32, 36, 13, 18, 5, 14, 4, 5, 12, 11, 5, 26, 195, 169, 19, 20, 51, 109, 50, 72, 109, 55,
-			49, 109, 88, 113, 91, 47, 23, 37, 91, 0, 13, 81, 105, 115, 32, 34, 67, 4, 176, 82, 108, 49, 108, 52, 10, 6, 15, 108, 6, 15,
-			79, 114, 52, 47, 115, 0, 13, 82, 97, 32, 103, 121, 195, 161, 114, 116, 195, 179, 32, 43, 69, 88, 243, 148, 4, 176, 84, 39, 50, 47,
-			108, 49, 23, 83, 109, 55, 109, 55, 118, 91, 113, 81, 51, 109, 0, 13, 81, 102, 101, 108, 101, 108, 197, 145, 115, 115, 195, 169, 103, 114,
-			101, 32, 29, 67, 4, 176, 82, 108, 6, 49, 108, 52, 23, 65, 108, 52, 108, 72, 50, 37, 0, 13, 81, 109, 97, 114, 97, 100, 110, 105,
-			32, 8, 197, 88, 243, 20, 4, 208, 13, 8, 197, 32, 20, 131, 60, 176, 13, 12, 201, 88, 148, 197, 48, 177, 68, 21, 69, 0, 13, 10,
-			135, 3, 5, 12, 12, 195, 161, 14, 13, 7, 132, 195, 169, 22, 1, 13, 8, 197, 40, 83, 26, 20, 208, 13, 6, 195, 4, 176, 82, 13,
-			8, 133, 12, 197, 145, 20, 20, 13, 0, 5, 130, 195, 184, 43, 9, 198, 40, 241, 213, 56, 176, 84, 13, 16, 141, 22, 195, 169, 7, 18,
-			5, 8, 1, 10, 20, 1, 14, 9, 13, 16, 141, 11, 195, 182, 26, 12, 5, 11, 5, 4, 20, 5, 20, 9, 13, 21, 146, 2, 5, 195,
-			161, 12, 12, 195, 173, 20, 195, 161, 19, 15, 11, 14, 195, 161, 12, 13, 11, 136, 15, 12, 3, 19, 195, 179, 2, 2, 13, 9, 198, 52,
-			17, 213, 56, 176, 84, 13, 0, 30, 71, 52, 147, 137, 77, 165, 5, 72, 65, 37, 50, 37, 89, 47, 109, 52, 15, 84, 39, 55, 47, 0,
-			13, 81, 118, 111, 108, 116, 32, 9, 134, 19, 26, 195, 179, 2, 1, 13, 14, 139, 20, 1, 18, 20, 8, 1, 20, 14, 195, 161, 4, 13,
-			10, 199, 65, 35, 199, 72, 19, 66, 4, 13, 10, 199, 52, 147, 137, 77, 165, 5, 72, 13, 0, 41, 68, 52, 17, 193, 76, 65, 108, 81,
-			108, 91, 23, 107, 118, 65, 113, 52, 91, 113, 49, 55, 109, 47, 0, 13, 81, 104, 197, 145, 109, 195, 169, 114, 115, 195, 169, 107, 108, 101,
-			116, 32, 12, 137, 20, 5, 8, 5, 20, 14, 195, 169, 11, 13, 7, 196, 52, 17, 193, 76, 13, 7, 196, 24, 241, 214, 4, 13, 7, 196,
-			32, 246, 142, 36, 13, 7, 196, 32, 246, 142, 36, 13, 0, 13, 138, 11, 9, 19, 6, 9, 195, 186, 14, 1, 11, 13, 32, 69, 81, 81,
-			20, 4, 176, 47, 40, 47, 12, 108, 49, 23, 65, 39, 50, 72, 108, 50, 37, 0, 13, 81, 109, 111, 110, 100, 97, 110, 105, 32, 7, 132,
-			195, 169, 22, 5, 13, 8, 133, 19, 195, 188, 12, 20, 13, 9, 134, 18, 195, 179, 12, 21, 11, 13, 8, 133, 6, 195, 169, 12, 20, 13,
-			0, 12, 137, 16, 5, 18, 5, 13, 195, 169, 18, 5, 13, 15, 140, 13, 195, 169, 12, 25, 19, 195, 169, 7, 2, 5, 14, 13, 14, 139,
-			22, 195, 161, 12, 12, 1, 12, 14, 9, 21, 11, 13, 8, 133, 2, 195, 169, 18, 5, 13, 11, 136, 19, 26, 195, 179, 12, 10, 15, 14,
-			13, 14, 139, 6, 18, 9, 19, 19, 195, 188, 12, 14, 5, 11, 13, 11, 136, 11, 15, 18, 195, 161, 2, 1, 14, 13, 9, 134, 19, 26,
-			195, 179, 12, 20, 13, 18, 4, 195, 186, 46, 14, 116, 79, 50, 109, 84, 109, 88, 109, 47, 12, 0, 25, 0, 6, 195, 81, 81, 0, 13,
-			13, 138, 16, 195, 169, 12, 4, 195, 161, 26, 26, 1, 13, 14, 139, 22, 195, 169, 20, 5, 12, 195, 169, 22, 5, 12, 13, 50, 9, 11,
-			195, 182, 18, 195, 169, 2, 5, 14, 49, 110, 52, 113, 71, 109, 50, 23, 48, 52, 115, 71, 114, 55, 50, 114, 49, 23, 49, 37, 0, 13,
-			82, 112, 114, 195, 179, 98, 195, 161, 108, 110, 195, 161, 107, 32, 107, 105, 32, 34, 67, 80, 85, 20, 47, 109, 47, 12, 23, 108, 88, 10,
-			6, 15, 111, 79, 71, 109, 50, 0, 13, 82, 97, 122, 32, 195, 188, 103, 121, 98, 101, 110, 32, 45, 9, 11, 195, 182, 18, 195, 169, 2,
-			5, 14, 49, 110, 52, 113, 71, 109, 50, 23, 37, 91, 23, 84, 37, 47, 108, 47, 39, 47, 12, 0, 13, 82, 105, 115, 32, 118, 105, 116,
-			97, 116, 111, 116, 116, 32, 12, 137, 11, 195, 182, 18, 195, 186, 20, 15, 14, 13, 34, 71, 48, 81, 129, 29, 147, 212, 80, 55, 109, 83,
-			108, 79, 39, 47, 12, 23, 65, 37, 50, 72, 109, 50, 0, 13, 81, 109, 105, 110, 100, 101, 110, 32, 9, 198, 4, 64, 75, 61, 163, 137,
-			13, 14, 139, 195, 182, 14, 13, 1, 7, 195, 161, 22, 1, 12, 13, 9, 134, 2, 195, 173, 18, 10, 1, 13, 6, 195, 81, 81, 0, 13,
-			6, 195, 80, 85, 20, 13, 11, 67, 72, 19, 64, 52, 108, 65, 0, 42, 42, 0, 12, 137, 22, 195, 161, 4, 15, 12, 14, 1, 11, 13,
-			44, 9, 7, 25, 197, 145, 26, 20, 195, 169, 11, 79, 118, 88, 47, 113, 49, 23, 83, 109, 55, 72, 39, 55, 81, 39, 88, 50, 37, 0,
-			13, 81, 102, 101, 108, 100, 111, 108, 103, 111, 122, 110, 105, 32, 10, 135, 22, 5, 26, 195, 169, 18, 5, 13, 7, 196, 24, 241, 193, 80,
-			13, 11, 200, 80, 243, 1, 44, 241, 20, 4, 176, 13, 7, 196, 24, 18, 193, 16, 13, 0, 11, 136, 19, 26, 5, 13, 195, 169, 18, 5,
-			13, 0, 54, 9, 5, 12, 12, 5, 14, 195, 169, 18, 5, 109, 55, 12, 109, 50, 113, 52, 109, 23, 37, 91, 23, 71, 37, 89, 47, 39,
-			91, 112, 47, 108, 50, 114, 0, 13, 82, 105, 115, 32, 98, 105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 195, 161, 32, 12, 137, 9, 11,
-			15, 14, 10, 195, 161, 18, 1, 13, 12, 137, 13, 195, 179, 4, 10, 195, 161, 18, 1, 13, 0, 10, 199, 13, 48, 80, 60, 194, 1, 80,
-			13, 15, 140, 195, 188, 26, 5, 13, 5, 12, 20, 5, 20, 9, 11, 13, 10, 199, 20, 195, 153, 21, 35, 137, 20, 13, 10, 199, 80, 84,
-			218, 80, 82, 197, 80, 13, 6, 195, 88, 149, 20, 13, 11, 136, 13, 195, 161, 18, 3, 9, 21, 19, 20, 0, 28, 5, 195, 169, 22, 5,
-			19, 113, 84, 109, 91, 23, 109, 65, 71, 109, 52, 47, 0, 13, 81, 101, 109, 98, 101, 114, 116, 32, 26, 5, 195, 169, 22, 5, 19, 113,
-			84, 109, 91, 23, 109, 65, 71, 109, 52, 0, 13, 81, 101, 109, 98, 101, 114, 32, 29, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23,
-			49, 37, 91, 83, 37, 116, 0, 13, 81, 107, 105, 115, 102, 105, 195, 186, 32, 23, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 83,
-			37, 116, 0, 13, 81, 102, 105, 195, 186, 32, 30, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 49, 37, 91, 55, 114, 67, 0, 13,
-			81, 107, 105, 115, 108, 195, 161, 110, 121, 32, 24, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 55, 114, 67, 0, 13, 81, 108, 195,
-			161, 110, 121, 32, 21, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 50, 118, 0, 13, 81, 110, 197, 145, 32, 27, 5, 195, 169, 22,
-			5, 19, 113, 84, 109, 91, 23, 83, 113, 52, 83, 37, 0, 13, 81, 102, 195, 169, 114, 102, 105, 32, 31, 5, 195, 169, 22, 5, 19, 113,
-			84, 109, 91, 23, 49, 37, 91, 83, 37, 116, 47, 0, 13, 81, 107, 105, 115, 102, 105, 195, 186, 116, 32, 25, 5, 195, 169, 22, 5, 19,
-			113, 84, 109, 91, 23, 83, 37, 116, 47, 0, 13, 81, 102, 105, 195, 186, 116, 32, 32, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23,
-			49, 37, 91, 55, 114, 67, 47, 0, 13, 81, 107, 105, 115, 108, 195, 161, 110, 121, 116, 32, 26, 5, 195, 169, 22, 5, 19, 113, 84, 109,
-			91, 23, 55, 114, 67, 47, 0, 13, 81, 108, 195, 161, 110, 121, 116, 32, 25, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 50, 118,
-			52, 109, 0, 13, 81, 110, 197, 145, 114, 101, 32, 31, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 83, 113, 52, 83, 37, 52, 108,
-			0, 13, 81, 102, 195, 169, 114, 102, 105, 114, 97, 32, 31, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 49, 37, 91, 83, 37, 116,
-			47, 0, 13, 81, 107, 105, 115, 102, 105, 195, 186, 116, 32, 29, 5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 49, 37, 91, 83, 37,
-			116, 0, 13, 81, 107, 105, 115, 102, 105, 195, 186, 32, 17, 142, 11, 195, 182, 26, 16, 15, 14, 20, 10, 195, 161, 2, 1, 14, 13, 36,
-			5, 195, 169, 22, 5, 19, 113, 84, 109, 91, 23, 47, 114, 65, 39, 81, 108, 47, 114, 91, 0, 13, 81, 116, 195, 161, 109, 111, 103, 97,
-			116, 195, 161, 115, 32, 19, 144, 20, 5, 12, 5, 16, 195, 173, 20, 195, 169, 19, 195, 169, 22, 5, 12, 13, 32, 5, 195, 169, 22, 5,
-			19, 113, 84, 109, 91, 15, 49, 39, 52, 114, 71, 115, 55, 0, 13, 81, 107, 111, 114, 195, 161, 98, 195, 179, 108, 32, 31, 5, 195, 169,
-			22, 5, 19, 113, 84, 109, 91, 15, 79, 109, 52, 109, 49, 109, 47, 0, 13, 81, 103, 121, 101, 114, 101, 107, 101, 116, 32, 9, 198, 64,
-			243, 148, 40, 18, 78, 13, 8, 133, 9, 4, 197, 145, 19, 13, 8, 133, 195, 169, 22, 5, 19, 13, 7, 196, 56, 82, 197, 52, 13, 0,
-			12, 137, 8, 1, 4, 10, 195, 161, 18, 1, 20, 13, 37, 10, 6, 5, 12, 5, 20, 20, 195, 188, 14, 11, 83, 109, 55, 109, 47, 12,
-			111, 50, 49, 23, 108, 88, 23, 113, 81, 0, 13, 82, 97, 122, 32, 195, 169, 103, 32, 15, 140, 12, 5, 22, 5, 7, 197, 145, 10, 195,
-			169, 18, 5, 13, 0, 56, 11, 19, 26, 195, 188, 11, 19, 195, 169, 7, 5, 19, 89, 111, 49, 91, 113, 81, 109, 91, 23, 37, 50, 47,
-			113, 89, 49, 109, 72, 113, 91, 109, 49, 109, 47, 0, 13, 81, 105, 110, 116, 195, 169, 122, 107, 101, 100, 195, 169, 115, 101, 107, 101, 116,
-			32, 46, 9, 20, 195, 182, 18, 22, 195, 169, 14, 25, 47, 110, 52, 84, 113, 67, 10, 10, 47, 109, 52, 84, 109, 88, 109, 47, 113, 71,
-			109, 0, 13, 81, 116, 101, 114, 118, 101, 122, 101, 116, 195, 169, 98, 101, 32, 53, 9, 20, 195, 182, 18, 22, 195, 169, 14, 25, 47, 110,
-			52, 84, 113, 67, 23, 49, 39, 50, 119, 109, 48, 119, 37, 115, 57, 114, 52, 115, 55, 0, 13, 81, 107, 111, 110, 99, 101, 112, 99, 105,
-			195, 179, 106, 195, 161, 114, 195, 179, 108, 32, 12, 137, 11, 195, 169, 16, 26, 5, 12, 14, 9, 13, 14, 139, 12, 5, 8, 5, 20, 19,
-			195, 169, 7, 5, 19, 13, 12, 137, 20, 195, 182, 18, 22, 195, 169, 14, 25, 13, 9, 198, 77, 161, 82, 104, 85, 20, 13, 9, 134, 19,
-			195, 186, 12, 25, 20, 13, 0, 17, 142, 6, 9, 14, 1, 14, 19, 26, 195, 173, 18, 15, 26, 26, 1, 13, 10, 199, 52, 81, 198, 36,
-			118, 69, 48, 13, 27, 5, 21, 20, 195, 161, 14, 40, 47, 114, 50, 23, 50, 113, 88, 50, 37, 0, 13, 81, 110, 195, 169, 122, 110, 105,
-			32, 9, 134, 12, 195, 161, 20, 14, 9, 13, 9, 133, 21, 20, 195, 161, 14, 13, 22, 9, 134, 14, 25, 195, 161, 18, 9, 20, 0, 35,
-			67, 5, 36, 129, 108, 52, 52, 108, 10, 6, 15, 47, 110, 52, 109, 49, 109, 72, 50, 37, 0, 13, 81, 116, 195, 182, 114, 101, 107, 101,
-			100, 110, 105, 32, 30, 67, 5, 36, 129, 108, 52, 52, 108, 10, 6, 15, 49, 113, 52, 57, 111, 49, 0, 13, 81, 107, 195, 169, 114, 106,
-			195, 188, 107, 32, 36, 7, 19, 26, 9, 14, 20, 197, 177, 89, 37, 50, 47, 117, 23, 83, 109, 55, 107, 118, 88, 109, 47, 0, 13, 81,
-			102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 30, 67, 5, 36, 129, 108, 52, 52, 108, 23, 57, 40, 47, 39, 47, 12, 108, 65, 0, 13,
-			81, 106, 117, 116, 111, 116, 116, 97, 109, 32, 37, 67, 5, 36, 129, 108, 52, 52, 108, 23, 84, 39, 50, 108, 47, 49, 39, 88, 115, 108,
-			50, 0, 13, 81, 118, 111, 110, 97, 116, 107, 111, 122, 195, 179, 97, 110, 32, 18, 67, 5, 36, 129, 108, 52, 52, 108, 23, 37, 91, 0,
-			13, 81, 105, 115, 32, 45, 67, 5, 36, 129, 108, 52, 52, 108, 23, 49, 109, 55, 12, 23, 39, 72, 108, 83, 37, 79, 109, 55, 50, 37,
-			0, 13, 82, 107, 101, 108, 108, 32, 111, 100, 97, 102, 105, 103, 121, 101, 108, 110, 105, 32, 7, 196, 80, 18, 193, 72, 13, 16, 141, 4,
-			195, 182, 14, 20, 195, 182, 20, 20, 195, 188, 14, 11, 13, 14, 139, 2, 5, 19, 26, 5, 18, 26, 195, 169, 19, 5, 13, 11, 136, 19,
-			5, 7, 195, 169, 12, 25, 20, 13, 6, 195, 21, 36, 133, 13, 6, 195, 5, 36, 129, 13, 0, 8, 197, 32, 20, 131, 60, 192, 13, 11,
-			136, 5, 12, 10, 195, 161, 18, 14, 9, 13, 9, 134, 195, 169, 18, 26, 9, 11, 13, 9, 134, 3, 195, 169, 7, 5, 11, 13, 8, 133,
-			10, 195, 161, 18, 20, 13, 0, 13, 138, 7, 25, 1, 14, 195, 186, 10, 195, 161, 20, 13, 46, 4, 195, 169, 18, 22, 113, 52, 84, 23,
-			108, 6, 15, 55, 37, 50, 40, 49, 89, 23, 65, 109, 55, 12, 109, 47, 12, 0, 13, 83, 97, 32, 108, 105, 110, 117, 120, 32, 109, 101,
-			108, 108, 101, 116, 116, 32, 26, 6, 1, 26, 195, 169, 18, 20, 108, 88, 113, 52, 47, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108,
-			116, 32, 14, 139, 20, 5, 19, 26, 20, 5, 12, 195, 188, 14, 11, 13, 7, 132, 195, 169, 18, 22, 13, 14, 139, 6, 5, 10, 12, 5,
-			19, 26, 20, 195, 169, 19, 13, 20, 145, 13, 5, 7, 2, 195, 188, 14, 20, 5, 20, 195, 169, 19, 195, 169, 18, 5, 13, 9, 134, 1,
-			26, 195, 169, 18, 20, 13, 0, 56, 11, 11, 195, 182, 12, 20, 19, 195, 169, 7, 5, 20, 49, 110, 55, 76, 113, 81, 109, 47, 23, 57,
-			109, 55, 109, 50, 47, 23, 89, 114, 65, 40, 49, 52, 108, 0, 13, 82, 106, 101, 108, 101, 110, 116, 32, 115, 122, 195, 161, 109, 117, 107,
-			114, 97, 32, 14, 139, 18, 195, 169, 19, 26, 12, 5, 20, 5, 9, 20, 13, 10, 199, 65, 35, 199, 72, 19, 79, 44, 13, 21, 146, 13,
-			5, 7, 19, 26, 195, 188, 14, 20, 5, 20, 195, 169, 19, 195, 169, 18, 5, 13, 0, 7, 196, 4, 176, 82, 80, 13, 15, 140, 22, 195,
-			161, 12, 20, 15, 26, 1, 20, 1, 9, 20, 13, 7, 196, 52, 245, 15, 72, 13, 7, 196, 32, 246, 148, 4, 13, 7, 132, 195, 169, 18,
-			20, 13, 7, 196, 56, 82, 201, 44, 13, 0, 10, 135, 9, 7, 1, 26, 195, 161, 14, 13, 13, 138, 7, 15, 14, 4, 15, 12, 10, 195,
-			161, 11, 13, 13, 138, 20, 1, 7, 12, 1, 12, 10, 195, 161, 11, 13, 10, 135, 14, 25, 1, 18, 195, 161, 14, 20, 0, 9, 134, 5,
-			26, 195, 169, 18, 20, 13, 13, 138, 3, 195, 173, 13, 195, 169, 20, 197, 145, 12, 13, 13, 138, 6, 15, 18, 9, 14, 20, 195, 169, 18,
-			20, 13, 43, 10, 6, 15, 18, 9, 14, 20, 195, 169, 18, 20, 83, 39, 52, 37, 50, 47, 113, 52, 47, 23, 109, 55, 84, 37, 107, 109,
-			47, 118, 0, 13, 81, 101, 108, 118, 105, 104, 101, 116, 197, 145, 32, 10, 135, 19, 26, 197, 177, 18, 9, 11, 13, 30, 6, 5, 26, 195,
-			169, 18, 20, 109, 88, 113, 52, 47, 15, 84, 108, 50, 15, 108, 88, 0, 13, 82, 118, 97, 110, 32, 97, 122, 32, 17, 142, 195, 188, 7,
-			25, 14, 195, 182, 11, 19, 195, 169, 7, 5, 20, 13, 0, 45, 15, 20, 5, 22, 195, 169, 11, 5, 14, 25, 19, 195, 169, 7, 5, 20,
-			47, 109, 84, 113, 49, 109, 67, 91, 113, 81, 109, 47, 23, 84, 113, 81, 109, 88, 0, 13, 81, 118, 195, 169, 103, 101, 122, 32, 9, 134,
-			2, 195, 161, 18, 11, 9, 13, 0, 39, 5, 22, 1, 12, 195, 179, 84, 108, 55, 115, 23, 47, 52, 111, 49, 12, 110, 88, 113, 91, 47,
-			0, 13, 81, 116, 114, 195, 188, 107, 107, 195, 182, 122, 195, 169, 115, 116, 32, 11, 136, 8, 1, 19, 26, 14, 195, 161, 12, 13, 8, 133,
-			22, 1, 12, 195, 179, 13, 6, 195, 21, 53, 5, 22, 0, 17, 142, 19, 26, 1, 2, 195, 161, 12, 25, 15, 26, 26, 195, 161, 11, 13,
-			13, 138, 1, 12, 1, 16, 15, 26, 20, 195, 161, 11, 13, 17, 142, 19, 26, 195, 182, 22, 5, 20, 20, 19, 195, 169, 7, 5, 11, 13,
-			13, 138, 11, 195, 182, 20, 8, 5, 20, 197, 145, 11, 13, 8, 133, 13, 195, 161, 19, 20, 13, 17, 9, 95, 35, 45, 195, 161, 14, 195,
-			161, 12, 114, 50, 114, 55, 0, 21, 0, 13, 138, 5, 7, 25, 13, 195, 161, 19, 19, 1, 12, 13, 0, 14, 139, 18, 195, 169, 19, 26,
-			195, 169, 18, 197, 145, 12, 13, 0, 10, 135, 12, 195, 169, 16, 14, 9, 5, 13, 10, 135, 1, 18, 195, 161, 14, 25, 1, 13, 16, 67,
-			44, 98, 201, 49, 114, 109, 83, 49, 114, 37, 0, 17, 42, 42, 0, 42, 6, 15, 16, 3, 9, 195, 179, 39, 48, 119, 37, 115, 23, 71,
-			109, 49, 108, 48, 76, 39, 55, 114, 91, 108, 0, 13, 81, 98, 101, 107, 97, 112, 99, 115, 111, 108, 195, 161, 115, 97, 32, 24, 6, 15,
-			16, 3, 9, 195, 179, 39, 48, 119, 37, 115, 15, 50, 109, 65, 0, 13, 81, 110, 101, 109, 32, 0, 36, 10, 5, 12, 14, 195, 169, 26,
-			195, 169, 19, 20, 109, 55, 50, 113, 88, 113, 91, 47, 23, 49, 113, 52, 109, 49, 0, 13, 81, 107, 195, 169, 114, 101, 107, 32, 10, 135,
-			14, 5, 11, 195, 188, 14, 11, 13, 11, 5, 95, 49, 77, 49, 5, 109, 88, 52, 0, 0, 14, 139, 8, 195, 161, 12, 195, 179, 26, 1,
-			20, 15, 20, 13, 0, 36, 68, 80, 85, 20, 20, 47, 109, 47, 12, 109, 23, 84, 37, 55, 114, 81, 39, 91, 12, 114, 0, 13, 81, 118,
-			105, 108, 195, 161, 103, 111, 115, 115, 195, 161, 32, 29, 68, 4, 192, 84, 80, 108, 55, 108, 47, 12, 23, 49, 113, 89, 111, 55, 0, 13,
-			81, 107, 195, 169, 115, 122, 195, 188, 108, 32, 34, 68, 4, 192, 84, 80, 108, 55, 108, 47, 12, 15, 72, 39, 55, 81, 39, 89, 47, 108,
-			49, 0, 13, 81, 100, 111, 108, 103, 111, 122, 116, 97, 107, 32, 10, 135, 11, 195, 169, 18, 14, 9, 5, 13, 19, 144, 8, 1, 19, 26,
-			14, 195, 161, 12, 1, 20, 195, 161, 195, 169, 18, 20, 13, 7, 196, 88, 85, 20, 20, 13, 7, 196, 80, 85, 20, 20, 13, 7, 196, 4,
-			192, 84, 80, 13, 0, 11, 136, 15, 4, 1, 195, 173, 18, 14, 9, 13, 10, 135, 8, 195, 161, 20, 195, 161, 14, 13, 13, 138, 16, 1,
-			18, 20, 195, 173, 3, 9, 195, 179, 13, 0, 21, 146, 13, 5, 7, 9, 14, 4, 195, 173, 20, 195, 161, 19, 195, 161, 195, 169, 18, 20,
-			13, 12, 137, 11, 195, 182, 22, 5, 20, 14, 9, 5, 13, 13, 138, 20, 1, 12, 195, 161, 12, 14, 195, 161, 4, 13, 9, 198, 24, 81,
-			5, 104, 85, 0, 13, 13, 138, 5, 12, 20, 195, 169, 18, 195, 169, 19, 20, 13, 11, 136, 12, 195, 161, 20, 20, 195, 161, 14, 13, 7,
-			132, 20, 197, 177, 26, 13, 10, 135, 11, 1, 16, 10, 195, 161, 11, 13, 0, 43, 6, 9, 4, 197, 145, 18, 5, 37, 72, 118, 52, 109,
-			23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 13, 81, 115, 122, 195, 161, 109, 195, 173, 116, 104, 97, 116, 117, 110, 107, 32,
-			42, 6, 9, 4, 197, 145, 18, 5, 37, 72, 118, 52, 109, 23, 84, 108, 50, 23, 49, 37, 55, 114, 47, 114, 91, 0, 13, 82, 118, 97,
-			110, 32, 107, 105, 108, 195, 161, 116, 195, 161, 115, 32, 9, 198, 25, 85, 20, 5, 67, 137, 13, 9, 198, 25, 85, 20, 5, 66, 129, 13,
-			0, 10, 135, 11, 9, 22, 195, 169, 22, 5, 13, 44, 6, 195, 179, 18, 195, 161, 14, 115, 52, 114, 50, 10, 6, 15, 71, 109, 55, 111,
-			55, 10, 6, 15, 65, 108, 52, 108, 72, 0, 13, 82, 98, 101, 108, 195, 188, 108, 32, 109, 97, 114, 97, 100, 32, 11, 200, 40, 83, 5,
-			57, 65, 84, 80, 80, 13, 7, 132, 195, 182, 12, 20, 13, 8, 133, 13, 195, 161, 18, 3, 20, 15, 5, 95, 49, 77, 49, 15, 109, 88,
-			52, 109, 72, 37, 49, 0, 0, 8, 197, 21, 54, 142, 20, 176, 13, 32, 6, 195, 169, 12, 197, 145, 11, 113, 55, 118, 49, 23, 107, 109,
-			57, 88, 109, 47, 109, 0, 13, 81, 104, 101, 108, 121, 122, 101, 116, 101, 32, 10, 135, 12, 195, 161, 2, 195, 161, 14, 13, 24, 69, 81,
-			81, 20, 4, 208, 47, 40, 47, 12, 108, 65, 23, 65, 109, 81, 0, 13, 81, 109, 101, 103, 32, 8, 197, 72, 80, 211, 20, 112, 13, 8,
-			197, 32, 17, 217, 80, 16, 13, 11, 136, 22, 9, 12, 195, 161, 7, 2, 1, 13, 17, 9, 95, 35, 45, 195, 169, 20, 197, 145, 12, 113,
-			47, 118, 55, 0, 21, 0, 9, 198, 88, 17, 217, 84, 226, 192, 13, 9, 198, 64, 144, 67, 60, 176, 84, 13, 9, 198, 88, 17, 217, 84,
-			226, 192, 13, 12, 137, 19, 26, 195, 161, 13, 15, 13, 18, 1, 13, 17, 142, 195, 188, 12, 4, 195, 182, 7, 195, 169, 12, 195, 169, 19,
-			20, 13, 14, 139, 195, 161, 12, 12, 195, 173, 20, 10, 195, 161, 11, 13, 0, 7, 2, 95, 1, 108, 12, 0, 9, 134, 22, 9, 20, 195,
-			161, 9, 13, 10, 199, 52, 81, 207, 48, 64, 78, 36, 13, 19, 144, 8, 195, 161, 20, 20, 195, 169, 18, 20, 195, 161, 18, 15, 12, 195,
-			179, 13, 9, 134, 2, 195, 173, 18, 14, 1, 13, 11, 136, 12, 195, 161, 20, 20, 195, 161, 11, 13, 11, 136, 18, 195, 179, 12, 1, 20,
-			15, 11, 13, 9, 134, 12, 195, 161, 20, 10, 1, 13, 0, 9, 134, 19, 15, 6, 197, 145, 18, 13, 7, 196, 76, 242, 193, 80, 13, 16,
-			141, 13, 1, 7, 25, 1, 18, 195, 161, 26, 26, 195, 161, 11, 13, 11, 200, 20, 208, 133, 72, 82, 206, 20, 176, 13, 8, 133, 5, 18,
-			197, 145, 19, 13, 0, 32, 9, 5, 13, 12, 195, 173, 20, 5, 20, 20, 109, 65, 55, 112, 47, 109, 47, 12, 23, 108, 52, 52, 108, 0,
-			13, 81, 97, 114, 114, 97, 32, 13, 138, 5, 12, 13, 15, 14, 4, 20, 195, 161, 11, 13, 37, 9, 5, 13, 12, 195, 173, 20, 5, 20,
-			20, 109, 65, 55, 112, 47, 109, 47, 12, 23, 119, 37, 49, 71, 109, 50, 0, 13, 81, 99, 105, 107, 107, 98, 101, 110, 32, 41, 9, 5,
-			13, 12, 195, 173, 20, 5, 20, 20, 109, 65, 55, 112, 47, 109, 47, 12, 23, 89, 109, 52, 84, 109, 88, 109, 47, 0, 13, 81, 115, 122,
-			101, 114, 118, 101, 122, 101, 116, 32, 11, 136, 12, 1, 11, 195, 161, 19, 2, 1, 13, 9, 134, 195, 179, 18, 195, 161, 19, 13, 0, 14,
-			139, 3, 19, 9, 14, 195, 161, 12, 20, 195, 161, 11, 13, 9, 198, 77, 163, 203, 80, 19, 64, 13, 17, 142, 6, 5, 12, 5, 19, 195,
-			169, 7, 195, 169, 20, 197, 145, 12, 13, 9, 134, 22, 9, 20, 195, 161, 20, 13, 14, 139, 10, 1, 22, 1, 19, 15, 12, 20, 195, 161,
-			11, 13, 0, 6, 2, 95, 5, 109, 0, 10, 199, 20, 208, 133, 72, 82, 197, 80, 13, 17, 142, 13, 5, 7, 13, 5, 14, 20, 195, 169,
-			19, 195, 169, 18, 5, 13, 28, 71, 8, 150, 143, 56, 230, 65, 48, 71, 37, 88, 39, 67, 67, 108, 55, 10, 6, 15, 108, 88, 0, 13,
-			81, 97, 122, 32, 10, 199, 16, 243, 7, 60, 178, 193, 48, 13, 10, 199, 20, 208, 133, 72, 82, 197, 80, 13, 0, 33, 9, 5, 12, 10,
-			195, 161, 18, 195, 161, 19, 109, 55, 57, 114, 52, 114, 91, 23, 37, 50, 72, 40, 55, 0, 13, 81, 105, 110, 100, 117, 108, 32, 16, 141,
-			19, 26, 195, 188, 11, 19, 195, 169, 7, 5, 19, 5, 11, 13, 12, 137, 5, 12, 10, 195, 161, 18, 195, 161, 19, 13, 18, 143, 6, 5,
-			10, 12, 5, 19, 26, 20, 195, 169, 19, 195, 169, 18, 5, 13, 0, 16, 141, 11, 195, 188, 12, 6, 195, 182, 12, 4, 18, 197, 145, 12,
-			13, 11, 136, 5, 13, 5, 12, 195, 169, 19, 5, 13, 17, 142, 18, 5, 14, 4, 5, 12, 11, 5, 26, 195, 169, 19, 5, 11, 13, 0,
-			18, 143, 5, 12, 21, 20, 1, 19, 195, 173, 20, 15, 20, 20, 195, 161, 11, 13, 47, 14, 19, 26, 15, 6, 20, 22, 5, 18, 5, 11,
-			18, 197, 145, 12, 89, 39, 83, 47, 84, 109, 52, 109, 49, 52, 118, 55, 23, 84, 108, 50, 23, 89, 115, 0, 13, 82, 118, 97, 110, 32,
-			115, 122, 195, 179, 32, 9, 134, 3, 195, 169, 7, 5, 20, 13, 28, 10, 20, 195, 182, 18, 22, 195, 169, 14, 25, 20, 47, 110, 52, 84,
-			113, 67, 47, 23, 37, 91, 0, 13, 81, 105, 115, 32, 13, 138, 20, 195, 182, 18, 22, 195, 169, 14, 25, 20, 13, 9, 198, 52, 243, 132,
-			40, 19, 64, 13, 14, 139, 195, 169, 19, 26, 10, 195, 161, 18, 195, 161, 19, 13, 46, 15, 19, 26, 195, 179, 11, 1, 16, 3, 19, 15,
-			12, 1, 20, 15, 11, 89, 115, 49, 108, 48, 76, 39, 55, 108, 47, 39, 49, 23, 84, 108, 50, 12, 108, 49, 0, 13, 81, 118, 97, 110,
-			110, 97, 107, 32, 56, 11, 9, 4, 197, 145, 10, 195, 161, 18, 195, 161, 19, 37, 72, 118, 57, 114, 52, 114, 91, 23, 55, 109, 89, 23,
-			108, 23, 57, 109, 55, 12, 109, 65, 88, 118, 0, 13, 83, 108, 101, 115, 122, 32, 97, 32, 106, 101, 108, 108, 101, 109, 122, 197, 145, 32,
-			10, 135, 18, 1, 2, 12, 195, 161, 19, 13, 13, 202, 64, 148, 218, 80, 243, 25, 60, 178, 193, 48, 13, 9, 134, 195, 179, 18, 195, 161,
-			20, 13, 16, 141, 6, 15, 18, 4, 21, 12, 1, 20, 19, 26, 195, 161, 13, 13, 0, 14, 139, 6, 15, 12, 25, 1, 13, 1, 20, 195,
-			161, 20, 13, 13, 138, 10, 5, 12, 5, 14, 20, 195, 169, 19, 5, 13, 25, 7, 19, 26, 1, 22, 195, 161, 20, 89, 108, 84, 114, 47,
-			23, 91, 109, 65, 0, 13, 81, 115, 101, 109, 32, 13, 138, 13, 5, 7, 7, 25, 197, 145, 26, 14, 9, 13, 13, 138, 14, 195, 182, 22,
-			5, 12, 195, 169, 19, 5, 13, 9, 134, 1, 4, 195, 161, 19, 1, 13, 0, 9, 198, 88, 243, 20, 5, 67, 203, 72, 12, 137, 5, 12,
-			12, 195, 161, 20, 195, 161, 19, 13, 11, 136, 18, 195, 169, 20, 5, 7, 5, 20, 13, 15, 140, 4, 195, 182, 14, 20, 195, 169, 19, 5,
-			11, 5, 20, 13, 11, 136, 16, 12, 195, 161, 26, 195, 161, 20, 13, 11, 136, 11, 1, 16, 21, 10, 195, 161, 20, 13, 0, 16, 205, 80,
-			20, 137, 24, 16, 211, 60, 208, 71, 60, 178, 193, 48, 13, 7, 196, 76, 244, 143, 56, 13, 12, 201, 32, 19, 135, 61, 165, 1, 80, 243,
-			64, 13, 11, 136, 11, 195, 182, 20, 195, 169, 19, 5, 13, 10, 135, 22, 195, 161, 18, 10, 21, 11, 13, 12, 201, 24, 83, 142, 4, 176,
-			68, 80, 19, 64, 13, 19, 144, 13, 5, 7, 19, 5, 7, 195, 173, 20, 195, 169, 19, 195, 169, 18, 5, 13, 32, 8, 11, 9, 1, 4,
-			195, 161, 19, 1, 49, 37, 108, 72, 114, 91, 108, 23, 55, 109, 107, 109, 47, 0, 13, 81, 108, 101, 104, 101, 116, 32, 12, 137, 22, 1,
-			7, 25, 15, 14, 195, 161, 20, 13, 0, 47, 70, 80, 17, 202, 4, 148, 129, 47, 108, 81, 57, 108, 37, 52, 108, 23, 84, 39, 50, 108,
-			47, 49, 39, 88, 12, 108, 50, 108, 49, 0, 13, 81, 118, 111, 110, 97, 116, 107, 111, 122, 122, 97, 110, 97, 107, 32, 14, 139, 7, 25,
-			15, 18, 19, 195, 173, 20, 195, 161, 19, 13, 10, 135, 22, 195, 161, 12, 1, 19, 26, 13, 14, 139, 20, 195, 161, 13, 15, 7, 1, 20,
-			195, 161, 19, 13, 0, 9, 134, 26, 195, 161, 18, 21, 12, 13, 0, 19, 67, 85, 48, 64, 117, 115, 195, 161, 98, 97, 0, 44, 29, 42,
-			81, 98, 97, 32, 21, 67, 85, 48, 64, 117, 115, 195, 161, 98, 97, 110, 0, 44, 29, 42, 81, 98, 97, 110, 32, 25, 67, 85, 48, 64,
-			117, 115, 195, 161, 195, 169, 118, 97, 108, 0, 44, 29, 42, 81, 195, 169, 118, 97, 108, 32, 21, 67, 85, 48, 64, 117, 115, 195, 161, 110,
-			97, 107, 0, 44, 29, 42, 81, 110, 97, 107, 32, 23, 67, 85, 48, 64, 117, 115, 195, 161, 98, 195, 179, 108, 0, 44, 29, 42, 81, 98,
-			195, 179, 108, 32, 7, 2, 95, 19, 109, 91, 0, 14, 139, 5, 12, 4, 195, 182, 14, 20, 195, 169, 19, 5, 13, 10, 199, 24, 83, 153,
-			20, 113, 84, 36, 13, 16, 141, 20, 195, 186, 12, 12, 195, 169, 16, 20, 195, 188, 14, 11, 13, 10, 199, 16, 243, 7, 61, 163, 129, 44,
-			13, 6, 195, 57, 146, 84, 13, 6, 195, 104, 18, 148, 13, 10, 4, 95, 50, 48, 5, 107, 40, 89, 0, 0, 9, 198, 32, 19, 65, 72,
-			16, 130, 13, 17, 142, 13, 5, 7, 195, 161, 12, 12, 1, 16, 15, 4, 195, 161, 19, 13, 49, 14, 13, 5, 7, 195, 161, 12, 12, 1,
-			16, 15, 4, 195, 161, 19, 65, 109, 81, 114, 55, 12, 108, 48, 39, 72, 114, 91, 23, 49, 110, 47, 107, 109, 47, 118, 0, 13, 81, 107,
-			195, 182, 116, 104, 101, 116, 197, 145, 32, 57, 14, 13, 5, 7, 195, 161, 12, 12, 1, 16, 15, 4, 195, 161, 19, 65, 109, 81, 114, 55,
-			12, 108, 48, 39, 72, 114, 91, 23, 37, 91, 23, 89, 111, 55, 109, 47, 109, 47, 12, 0, 13, 82, 105, 115, 32, 115, 122, 195, 188, 108,
-			101, 116, 101, 116, 116, 32, 16, 141, 11, 21, 12, 20, 195, 186, 18, 195, 161, 10, 195, 161, 20, 13, 12, 68, 65, 52, 218, 80, 48, 89,
-			12, 47, 0, 41, 0, 27, 152, 19, 1, 10, 20, 195, 179, 20, 195, 161, 10, 195, 169, 11, 15, 26, 20, 1, 20, 195, 179, 10, 195, 161,
-			14, 13, 9, 134, 26, 195, 161, 18, 20, 1, 13, 9, 134, 22, 195, 161, 18, 20, 1, 13, 0, 7, 66, 77, 160, 109, 89, 0, 0, 17,
-			142, 19, 1, 10, 195, 161, 20, 15, 19, 19, 195, 161, 7, 15, 11, 13, 0, 20, 145, 11, 195, 182, 20, 5, 12, 5, 26, 5, 20, 20,
-			19, 195, 169, 7, 5, 20, 13, 0, 21, 146, 11, 15, 14, 6, 9, 7, 21, 18, 195, 161, 3, 9, 195, 179, 10, 195, 161, 20, 13, 8,
-			197, 24, 18, 149, 49, 64, 13, 9, 198, 64, 192, 84, 24, 244, 141, 13, 8, 197, 52, 20, 129, 17, 64, 13, 0, 12, 137, 8, 195, 169,
-			20, 6, 197, 145, 9, 7, 22, 0, 6, 195, 88, 83, 0, 13, 0, 17, 142, 1, 4, 15, 20, 20, 19, 195, 161, 7, 1, 9, 8, 15,
-			26, 13, 12, 137, 22, 9, 7, 25, 195, 161, 26, 14, 9, 13, 10, 135, 20, 5, 7, 25, 195, 188, 11, 13, 0, 15, 140, 20, 5, 14,
-			14, 9, 22, 1, 12, 195, 179, 14, 11, 13, 11, 136, 195, 173, 18, 14, 195, 161, 14, 11, 13, 6, 195, 48, 83, 142, 13, 0, 35, 70,
-			80, 83, 69, 77, 49, 64, 47, 109, 65, 109, 91, 12, 109, 23, 109, 55, 23, 116, 57, 52, 108, 0, 13, 82, 101, 108, 32, 195, 186, 106,
-			114, 97, 32, 9, 134, 22, 195, 169, 4, 5, 4, 13, 13, 138, 10, 5, 12, 5, 14, 20, 195, 169, 19, 20, 13, 9, 198, 77, 161, 77,
-			52, 83, 0, 13, 7, 132, 195, 169, 19, 26, 13, 5, 194, 80, 144, 13, 11, 66, 92, 48, 84, 113, 119, 113, 0, 42, 42, 0, 21, 67,
-			8, 18, 128, 71, 108, 57, 10, 6, 15, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 19, 67, 8, 18, 128, 71, 108, 57, 10, 6, 15,
-			108, 88, 0, 13, 81, 97, 122, 32, 47, 71, 65, 35, 199, 72, 19, 79, 80, 48, 52, 39, 81, 52, 108, 65, 39, 47, 23, 37, 50, 72,
-			112, 47, 108, 50, 114, 50, 108, 49, 0, 13, 81, 105, 110, 100, 195, 173, 116, 97, 110, 195, 161, 110, 97, 107, 32, 20, 67, 8, 18, 128,
-			71, 108, 57, 15, 84, 39, 55, 47, 0, 81, 118, 111, 108, 116, 32, 10, 135, 11, 195, 182, 26, 195, 188, 12, 13, 43, 71, 65, 35, 199,
-			72, 19, 79, 80, 48, 52, 39, 81, 52, 108, 65, 39, 47, 15, 47, 109, 89, 47, 109, 55, 111, 50, 49, 0, 13, 81, 116, 101, 115, 122,
-			116, 101, 108, 195, 188, 110, 107, 32, 6, 195, 8, 18, 128, 13, 10, 135, 11, 195, 182, 26, 195, 188, 12, 13, 15, 4, 95, 50, 48, 17,
-			107, 40, 89, 108, 72, 37, 49, 108, 0, 0, 11, 200, 24, 243, 25, 4, 208, 84, 61, 64, 13, 20, 68, 4, 178, 207, 72, 108, 49, 12,
-			39, 52, 23, 37, 91, 0, 13, 81, 105, 115, 32, 7, 196, 4, 178, 207, 72, 13, 0, 20, 5, 4, 197, 145, 12, 20, 72, 118, 55, 47,
-			23, 71, 109, 0, 13, 81, 98, 101, 32, 10, 135, 22, 195, 161, 7, 25, 19, 26, 13, 11, 136, 12, 195, 161, 20, 10, 195, 161, 11, 13,
-			12, 137, 4, 195, 182, 14, 20, 195, 169, 19, 20, 13, 11, 136, 12, 195, 161, 20, 10, 195, 161, 11, 13, 8, 133, 4, 197, 145, 12, 20,
-			13, 0, 13, 138, 10, 195, 179, 19, 26, 195, 161, 7, 15, 20, 13, 26, 70, 88, 86, 133, 80, 146, 192, 84, 109, 88, 109, 47, 37, 49,
-			10, 6, 15, 109, 55, 0, 13, 81, 101, 108, 32, 9, 198, 84, 118, 65, 56, 22, 128, 13, 12, 137, 6, 5, 10, 12, 197, 145, 4, 9,
-			11, 13, 12, 137, 11, 5, 26, 4, 197, 145, 4, 9, 11, 13, 0, 9, 198, 4, 194, 193, 48, 208, 83, 13, 17, 142, 3, 19, 195, 188,
-			20, 195, 182, 18, 20, 195, 182, 11, 9, 7, 22, 0, 13, 2, 95, 34, 37, 72, 113, 88, 118, 57, 109, 55, 0, 15, 140, 2, 195, 173,
-			18, 195, 179, 19, 195, 161, 7, 15, 20, 13, 14, 139, 10, 1, 22, 1, 19, 15, 12, 10, 195, 161, 11, 13, 10, 135, 6, 1, 10, 20,
-			195, 161, 11, 13, 10, 135, 8, 15, 26, 20, 195, 161, 11, 13, 15, 140, 2, 9, 26, 15, 20, 20, 19, 195, 161, 7, 15, 20, 13, 13,
-			138, 20, 21, 12, 1, 10, 4, 15, 14, 195, 186, 13, 7, 196, 52, 17, 213, 44, 13, 0, 17, 2, 95, 33, 83, 109, 55, 49, 37, 114,
-			55, 47, 115, 57, 109, 55, 0, 28, 69, 4, 176, 82, 60, 176, 108, 49, 108, 52, 39, 49, 23, 55, 109, 50, 12, 37, 0, 13, 81, 108,
-			101, 110, 110, 105, 32, 16, 141, 5, 12, 12, 5, 14, 197, 145, 18, 26, 195, 169, 19, 20, 13, 32, 69, 4, 176, 82, 40, 16, 108, 49,
-			108, 52, 57, 108, 23, 107, 108, 57, 47, 108, 50, 37, 0, 13, 81, 104, 97, 106, 116, 97, 110, 105, 32, 9, 134, 21, 20, 195, 161, 14,
-			1, 13, 8, 197, 4, 176, 82, 40, 16, 13, 11, 136, 22, 195, 161, 18, 20, 195, 161, 11, 13, 0, 7, 66, 81, 144, 80, 113, 0, 10,
-			135, 2, 5, 195, 173, 18, 22, 1, 13, 11, 136, 21, 4, 22, 1, 18, 195, 161, 14, 13, 17, 142, 8, 1, 19, 15, 14, 12, 195, 179,
-			19, 195, 161, 7, 15, 20, 13, 12, 137, 6, 195, 169, 14, 25, 5, 19, 5, 11, 13, 9, 134, 1, 14, 14, 195, 161, 12, 13, 10, 135,
-			12, 5, 195, 173, 18, 22, 1, 13, 0, 13, 2, 95, 39, 108, 48, 39, 89, 47, 52, 115, 83, 0, 28, 8, 20, 195, 169, 13, 195, 161,
-			10, 1, 47, 113, 65, 114, 57, 108, 23, 55, 109, 89, 0, 13, 81, 108, 101, 115, 122, 32, 16, 141, 20, 195, 161, 18, 7, 25, 1, 12,
-			195, 161, 19, 15, 14, 13, 11, 136, 20, 195, 169, 13, 195, 161, 10, 1, 13, 6, 195, 28, 243, 132, 13, 6, 195, 21, 49, 84, 13, 6,
-			195, 28, 243, 132, 13, 6, 195, 8, 19, 128, 72, 6, 195, 40, 19, 128, 20, 0, 28, 8, 6, 195, 182, 12, 195, 182, 20, 20, 83, 110,
-			55, 110, 47, 12, 23, 114, 55, 12, 0, 13, 81, 195, 161, 108, 108, 32, 7, 196, 12, 145, 201, 80, 13, 15, 140, 11, 22, 1, 12, 9,
-			6, 9, 11, 195, 161, 12, 20, 13, 20, 145, 13, 5, 7, 19, 26, 195, 161, 13, 12, 195, 161, 12, 20, 1, 20, 14, 9, 13, 25, 8,
-			6, 195, 182, 12, 195, 182, 20, 20, 83, 110, 55, 110, 47, 12, 23, 37, 91, 0, 13, 81, 105, 115, 32, 13, 138, 6, 5, 10, 22, 1,
-			4, 195, 161, 19, 26, 13, 6, 195, 21, 50, 75, 13, 11, 136, 6, 195, 182, 12, 195, 182, 20, 20, 13, 11, 136, 13, 195, 182, 7, 195,
-			182, 20, 20, 13, 10, 135, 10, 195, 186, 12, 9, 21, 19, 20, 0, 8, 197, 44, 243, 79, 49, 144, 13, 11, 136, 12, 5, 195, 173, 18,
-			195, 161, 19, 13, 20, 145, 20, 195, 161, 13, 15, 7, 1, 20, 15, 20, 20, 19, 195, 161, 7, 15, 20, 13, 16, 9, 95, 35, 45, 195,
-			169, 18, 197, 145, 12, 113, 52, 118, 55, 0, 14, 4, 95, 50, 48, 15, 107, 40, 89, 108, 72, 37, 49, 0, 0, 41, 74, 4, 192, 80,
-			4, 230, 65, 28, 242, 210, 4, 108, 55, 108, 48, 108, 67, 108, 81, 39, 49, 52, 108, 23, 49, 113, 67, 109, 91, 0, 13, 81, 107, 195,
-			169, 110, 121, 101, 115, 32, 16, 141, 20, 195, 161, 18, 7, 25, 1, 12, 195, 161, 19, 15, 11, 13, 50, 73, 20, 193, 75, 81, 35, 206,
-			36, 181, 83, 109, 55, 109, 49, 47, 52, 39, 50, 37, 49, 40, 91, 23, 84, 114, 55, 47, 39, 88, 108, 47, 114, 47, 0, 13, 81, 118,
-			195, 161, 108, 116, 111, 122, 97, 116, 195, 161, 116, 32, 14, 139, 195, 188, 26, 5, 13, 13, 195, 179, 4, 2, 1, 13, 16, 141, 2, 5,
-			18, 5, 14, 4, 5, 26, 195, 169, 19, 5, 11, 13, 9, 198, 5, 163, 206, 8, 19, 128, 13, 0, 7, 195, 88, 19, 128, 13, 22, 21,
-			67, 88, 19, 128, 84, 108, 50, 10, 6, 15, 37, 47, 12, 0, 13, 81, 105, 116, 116, 32, 32, 67, 88, 19, 128, 84, 108, 50, 23, 89,
-			111, 49, 91, 113, 81, 109, 65, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 109, 32, 18, 67, 88, 19, 128, 84, 108, 50,
-			23, 52, 114, 0, 13, 81, 114, 195, 161, 32, 23, 67, 88, 19, 128, 84, 108, 50, 23, 37, 72, 109, 57, 109, 0, 13, 81, 105, 100, 101,
-			106, 101, 32, 14, 139, 18, 195, 169, 19, 26, 5, 13, 18, 197, 145, 12, 13, 10, 135, 20, 15, 18, 20, 195, 161, 20, 13, 0, 18, 143,
-			8, 1, 14, 7, 19, 195, 186, 12, 25, 15, 26, 20, 195, 161, 11, 13, 27, 67, 8, 19, 139, 71, 108, 50, 49, 23, 91, 109, 81, 112,
-			47, 37, 0, 13, 81, 115, 101, 103, 195, 173, 116, 105, 32, 11, 136, 16, 195, 169, 12, 4, 195, 161, 20, 13, 9, 134, 16, 15, 8, 195,
-			161, 18, 13, 11, 136, 197, 145, 18, 195, 182, 11, 5, 20, 13, 15, 140, 20, 195, 169, 20, 5, 12, 195, 169, 18, 197, 145, 12, 13, 9,
-			134, 19, 26, 20, 195, 161, 18, 13, 6, 195, 64, 84, 131, 13, 12, 4, 95, 3, 1, 16, 50, 6, 108, 79, 23, 0, 10, 135, 10, 195,
-			186, 14, 9, 21, 19, 20, 0, 17, 2, 95, 41, 57, 6, 39, 71, 88, 114, 52, 115, 57, 109, 55, 0, 27, 38, 67, 5, 163, 206, 108,
-			88, 39, 50, 10, 6, 15, 81, 39, 50, 72, 39, 55, 49, 39, 72, 50, 37, 0, 13, 81, 103, 111, 110, 100, 111, 108, 107, 111, 100, 110,
-			105, 32, 12, 137, 8, 1, 12, 195, 161, 12, 195, 161, 20, 13, 6, 195, 5, 163, 206, 13, 9, 134, 3, 195, 173, 13, 197, 177, 13, 0,
-			17, 2, 95, 40, 71, 6, 108, 55, 88, 114, 52, 115, 57, 109, 55, 0, 27, 37, 70, 20, 208, 133, 72, 83, 128, 109, 65, 71, 109, 52,
-			109, 50, 23, 91, 109, 81, 112, 47, 107, 109, 47, 0, 13, 81, 115, 101, 103, 195, 173, 116, 104, 101, 116, 32, 6, 195, 44, 244, 129, 13,
-			34, 9, 13, 5, 7, 15, 12, 4, 195, 161, 19, 65, 109, 81, 39, 55, 72, 114, 91, 15, 48, 109, 72, 37, 81, 0, 13, 81, 112, 101,
-			100, 105, 103, 32, 12, 137, 13, 5, 7, 15, 12, 4, 195, 161, 19, 13, 9, 198, 20, 208, 133, 72, 83, 128, 13, 9, 198, 88, 86, 133,
-			80, 129, 84, 13, 0, 6, 195, 76, 244, 128, 13, 11, 67, 8, 20, 128, 71, 108, 52, 0, 42, 42, 0, 9, 2, 95, 46, 48, 39, 50,
-			47, 0, 11, 200, 24, 243, 25, 4, 208, 84, 61, 48, 13, 11, 136, 11, 1, 13, 5, 18, 195, 161, 20, 13, 15, 140, 20, 195, 182, 18,
-			20, 195, 169, 14, 5, 20, 5, 20, 13, 11, 136, 195, 182, 14, 195, 182, 11, 5, 20, 13, 15, 140, 5, 19, 26, 11, 195, 182, 26, 195,
-			182, 11, 5, 20, 13, 13, 138, 16, 1, 18, 1, 13, 195, 169, 20, 5, 18, 13, 8, 133, 195, 169, 18, 20, 5, 13, 15, 140, 9, 14,
-			4, 195, 173, 20, 22, 195, 161, 14, 25, 20, 13, 13, 138, 11, 195, 182, 14, 25, 22, 20, 195, 161, 18, 13, 6, 195, 5, 163, 203, 13,
-			11, 136, 20, 5, 18, 195, 188, 12, 5, 20, 13, 0, 12, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 27, 20, 145, 12, 5, 8, 5,
-			20, 197, 145, 19, 195, 169, 7, 5, 9, 18, 197, 145, 12, 13, 19, 144, 19, 26, 5, 13, 195, 169, 12, 25, 12, 5, 195, 173, 18, 195,
-			161, 19, 13, 12, 201, 61, 69, 8, 60, 229, 1, 48, 19, 128, 13, 16, 140, 20, 5, 18, 13, 195, 169, 19, 26, 5, 20, 5, 19, 72,
-			65, 0, 10, 2, 95, 44, 84, 109, 89, 122, 118, 0, 15, 140, 8, 195, 161, 20, 20, 195, 169, 18, 20, 195, 161, 18, 13, 13, 138, 6,
-			15, 18, 13, 195, 161, 10, 195, 161, 20, 13, 0, 6, 195, 81, 68, 192, 13, 22, 147, 11, 1, 18, 12, 5, 14, 4, 195, 173, 20, 195,
-			169, 19, 5, 11, 2, 197, 145, 12, 13, 8, 133, 195, 173, 18, 19, 26, 13, 6, 195, 8, 18, 148, 13, 12, 67, 53, 36, 192, 65, 37,
-			89, 37, 89, 0, 25, 6, 195, 49, 68, 192, 20, 10, 2, 95, 51, 107, 114, 52, 39, 65, 0, 0, 15, 140, 18, 195, 161, 7, 25, 195,
-			186, 10, 20, 8, 1, 20, 13, 9, 198, 52, 17, 193, 76, 16, 130, 13, 14, 139, 8, 1, 19, 26, 14, 195, 161, 12, 10, 21, 11, 13,
-			9, 198, 29, 147, 210, 76, 16, 130, 13, 8, 133, 195, 173, 18, 20, 1, 13, 10, 2, 95, 50, 49, 109, 47, 12, 118, 0, 0, 12, 137,
-			8, 1, 19, 26, 14, 195, 161, 12, 4, 13, 11, 136, 195, 182, 20, 12, 5, 20, 5, 11, 13, 8, 197, 61, 69, 8, 60, 224, 13, 8,
-			133, 20, 195, 182, 18, 20, 13, 11, 136, 20, 197, 145, 12, 5, 20, 5, 11, 13, 7, 2, 95, 49, 109, 79, 0, 0, 17, 142, 11, 195,
-			188, 12, 195, 182, 14, 2, 19, 195, 169, 7, 5, 20, 13, 12, 137, 12, 5, 14, 14, 195, 169, 20, 5, 11, 13, 6, 195, 4, 69, 1,
-			13, 10, 2, 95, 48, 50, 40, 55, 55, 108, 0, 0, 9, 134, 15, 11, 15, 26, 195, 179, 13, 16, 141, 11, 195, 182, 18, 14, 25, 5,
-			26, 5, 20, 8, 5, 26, 13, 8, 2, 95, 55, 107, 113, 121, 0, 0, 8, 2, 95, 54, 107, 108, 121, 0, 0, 8, 197, 80, 84, 133,
-			53, 64, 13, 9, 198, 88, 19, 1, 32, 245, 129, 13, 8, 197, 76, 83, 139, 37, 64, 13, 7, 2, 95, 53, 110, 121, 0, 0, 21, 146,
-			11, 195, 182, 20, 5, 12, 5, 26, 5, 20, 20, 19, 195, 169, 7, 195, 169, 20, 13, 9, 198, 88, 86, 133, 77, 49, 64, 13, 19, 144,
-			8, 1, 19, 26, 14, 195, 161, 12, 8, 1, 20, 1, 20, 12, 1, 14, 13, 8, 2, 95, 52, 50, 113, 79, 0, 0, 16, 2, 95, 59,
-			48, 39, 50, 47, 39, 91, 84, 109, 89, 122, 118, 0, 9, 134, 195, 161, 20, 12, 1, 7, 13, 15, 140, 8, 9, 7, 1, 14, 25, 19,
-			26, 195, 161, 12, 1, 13, 0, 15, 2, 95, 58, 49, 109, 47, 12, 118, 91, 48, 39, 50, 47, 0, 0, 19, 144, 19, 26, 195, 161, 13,
-			195, 173, 20, 195, 179, 7, 195, 169, 16, 5, 11, 13, 11, 2, 95, 57, 49, 37, 55, 109, 50, 119, 0, 0, 23, 9, 5, 7, 25, 5,
-			26, 19, 195, 169, 7, 101, 103, 103, 121, 101, 115, 115, 195, 169, 103, 0, 29, 32, 70, 24, 244, 137, 57, 67, 212, 83, 39, 52, 37, 50,
-			47, 39, 47, 23, 113, 52, 50, 109, 49, 0, 13, 81, 195, 169, 114, 110, 101, 107, 32, 9, 198, 24, 244, 137, 57, 67, 212, 13, 9, 2,
-			95, 56, 67, 39, 55, 119, 0, 0, 13, 2, 95, 63, 49, 113, 52, 72, 118, 57, 109, 55, 0, 13, 138, 22, 5, 19, 26, 20, 5, 19,
-			195, 169, 7, 13, 10, 199, 57, 145, 82, 80, 84, 197, 36, 13, 6, 195, 32, 86, 128, 13, 0, 10, 2, 95, 62, 50, 108, 79, 39, 71,
-			0, 12, 137, 10, 195, 161, 18, 22, 195, 161, 14, 25, 13, 7, 196, 45, 83, 3, 76, 13, 7, 196, 41, 85, 14, 36, 13, 11, 200, 77,
-			161, 80, 80, 83, 66, 21, 32, 20, 0, 8, 197, 40, 83, 26, 36, 176, 13, 8, 197, 24, 83, 18, 4, 176, 13, 25, 6, 18, 195, 169,
-			19, 26, 5, 52, 113, 89, 109, 15, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 9, 134, 18, 195, 169, 19, 26, 5, 13, 0,
-			11, 2, 95, 60, 49, 37, 91, 91, 109, 71, 0, 6, 195, 88, 150, 133, 13, 11, 136, 195, 188, 14, 14, 5, 16, 5, 14, 13, 53, 9,
-			20, 1, 14, 195, 161, 3, 19, 15, 11, 47, 108, 50, 114, 76, 39, 49, 23, 49, 113, 52, 72, 113, 91, 113, 52, 118, 55, 23, 37, 91,
-			0, 13, 82, 107, 195, 169, 114, 100, 195, 169, 115, 195, 169, 114, 197, 145, 108, 32, 105, 115, 32, 14, 139, 5, 12, 197, 145, 11, 5, 18,
-			5, 19, 14, 9, 13, 0, 17, 142, 4, 9, 19, 26, 20, 18, 9, 2, 195, 186, 3, 9, 195, 179, 13, 12, 201, 65, 35, 199, 72, 19,
-			79, 44, 21, 0, 13, 9, 198, 48, 20, 20, 61, 3, 203, 13, 6, 195, 57, 145, 76, 13, 0, 13, 138, 15, 19, 26, 20, 195, 161, 12,
-			25, 15, 14, 13, 8, 133, 8, 195, 161, 26, 1, 13, 11, 200, 44, 145, 15, 48, 115, 218, 80, 16, 13, 12, 137, 22, 5, 26, 5, 20,
-			197, 145, 10, 5, 13, 10, 135, 12, 195, 161, 20, 10, 21, 11, 13, 8, 133, 195, 173, 18, 22, 1, 13, 0, 8, 197, 80, 20, 148, 60,
-			176, 13, 44, 69, 56, 17, 217, 72, 16, 50, 108, 79, 52, 108, 10, 6, 15, 84, 108, 50, 10, 6, 15, 114, 55, 112, 47, 84, 108, 0,
-			13, 82, 118, 97, 110, 32, 195, 161, 108, 108, 195, 173, 116, 118, 97, 32, 12, 137, 9, 18, 195, 161, 14, 25, 21, 12, 20, 13, 9, 134,
-			20, 195, 161, 22, 18, 1, 13, 8, 197, 77, 161, 82, 16, 16, 20, 0, 26, 5, 6, 195, 188, 7, 7, 83, 111, 81, 12, 23, 110, 89,
-			12, 109, 0, 13, 81, 195, 182, 115, 115, 122, 101, 32, 22, 3, 18, 195, 161, 52, 114, 23, 37, 81, 113, 67, 0, 13, 81, 105, 103, 195,
-			169, 110, 121, 32, 31, 3, 18, 195, 161, 52, 114, 23, 89, 111, 49, 91, 113, 81, 109, 65, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195,
-			169, 103, 101, 109, 32, 8, 133, 6, 195, 188, 7, 7, 13, 6, 131, 18, 195, 161, 13, 0, 30, 10, 20, 5, 18, 195, 188, 12, 5, 20,
-			5, 11, 47, 109, 52, 111, 55, 109, 47, 109, 49, 23, 37, 91, 0, 13, 81, 105, 115, 32, 24, 5, 5, 7, 195, 169, 18, 109, 81, 113,
-			52, 23, 84, 39, 55, 47, 0, 13, 81, 118, 111, 108, 116, 32, 15, 140, 19, 26, 1, 11, 195, 169, 18, 20, 197, 145, 10, 5, 13, 11,
-			136, 6, 15, 18, 13, 195, 161, 10, 1, 13, 15, 140, 13, 5, 7, 1, 12, 11, 15, 20, 195, 179, 10, 1, 13, 10, 199, 80, 85, 20,
-			20, 147, 133, 44, 13, 0, 12, 137, 18, 1, 11, 20, 195, 161, 18, 18, 1, 13, 0, 13, 138, 19, 5, 7, 195, 173, 20, 5, 14, 195,
-			169, 13, 12, 201, 13, 51, 205, 4, 115, 203, 32, 246, 128, 13, 0, 0, 10, 135, 12, 195, 169, 16, 8, 5, 20, 13, 15, 140, 16, 18,
-			15, 2, 12, 195, 169, 13, 195, 161, 10, 1, 13, 10, 135, 22, 195, 161, 12, 8, 1, 20, 13, 14, 139, 13, 197, 177, 11, 195, 182, 4,
-			195, 182, 20, 20, 13, 0, 20, 145, 6, 18, 1, 11, 3, 9, 195, 179, 22, 5, 26, 5, 20, 197, 145, 10, 5, 13, 40, 7, 22, 5,
-			7, 25, 195, 188, 11, 84, 109, 79, 111, 49, 10, 6, 15, 83, 37, 79, 109, 55, 109, 65, 71, 109, 0, 13, 81, 102, 105, 103, 121, 101,
-			108, 101, 109, 98, 101, 32, 6, 195, 88, 144, 195, 13, 0, 33, 4, 95, 226, 128, 163, 107, 114, 52, 39, 65, 89, 110, 81, 108, 55, 108,
-			49, 116, 83, 109, 55, 91, 39, 52, 39, 55, 114, 91, 57, 109, 55, 0, 12, 201, 37, 35, 196, 4, 195, 205, 8, 19, 128, 13, 9, 134,
-			20, 197, 177, 14, 197, 145, 13, 0, 15, 4, 95, 226, 128, 162, 55, 37, 91, 47, 108, 57, 109, 55, 0, 13, 138, 195, 169, 18, 20, 5,
-			12, 13, 195, 169, 20, 13, 13, 138, 11, 5, 18, 5, 19, 26, 20, 195, 188, 12, 13, 9, 134, 195, 182, 20, 12, 5, 20, 13, 9, 134,
-			195, 161, 12, 12, 1, 20, 13, 11, 136, 20, 195, 161, 14, 25, 195, 169, 18, 13, 10, 135, 8, 195, 169, 20, 6, 197, 145, 20, 0, 17,
-			142, 195, 182, 19, 19, 26, 5, 6, 195, 188, 7, 7, 195, 169, 19, 13, 25, 4, 195, 179, 20, 1, 115, 47, 108, 23, 47, 108, 52, 47,
-			115, 0, 13, 81, 116, 97, 114, 116, 195, 179, 32, 13, 138, 11, 9, 20, 195, 182, 12, 20, 195, 169, 19, 13, 16, 141, 16, 15, 12, 7,
-			195, 161, 18, 13, 5, 19, 20, 5, 18, 13, 10, 135, 195, 161, 12, 12, 8, 1, 20, 13, 10, 135, 11, 195, 169, 18, 8, 5, 20, 13,
-			9, 132, 195, 179, 20, 1, 13, 20, 22, 0, 7, 196, 24, 241, 211, 104, 76, 0, 43, 69, 32, 241, 217, 4, 224, 107, 39, 79, 108, 50,
-			23, 83, 39, 81, 23, 84, 113, 81, 88, 118, 72, 50, 37, 0, 13, 82, 102, 111, 103, 32, 118, 195, 169, 103, 122, 197, 145, 100, 110, 105,
-			32, 13, 138, 11, 195, 188, 12, 6, 195, 182, 12, 4, 9, 13, 8, 197, 77, 64, 66, 36, 192, 13, 12, 137, 10, 195, 161, 20, 19, 26,
-			8, 1, 20, 13, 12, 137, 11, 5, 18, 195, 188, 12, 8, 5, 20, 13, 16, 141, 5, 12, 197, 145, 6, 15, 18, 4, 21, 12, 8, 1,
-			20, 13, 8, 197, 37, 69, 8, 60, 224, 13, 0, 19, 4, 95, 226, 128, 166, 48, 39, 50, 47, 48, 39, 50, 47, 48, 39, 50, 47, 0,
-			13, 138, 5, 19, 26, 11, 195, 182, 26, 195, 169, 20, 13, 27, 6, 18, 195, 169, 19, 26, 20, 52, 113, 89, 47, 23, 84, 109, 50, 12,
-			37, 0, 13, 81, 118, 101, 110, 110, 105, 32, 24, 6, 18, 195, 169, 19, 26, 20, 52, 113, 89, 47, 23, 84, 109, 89, 0, 13, 81, 118,
-			101, 115, 122, 32, 13, 138, 22, 195, 161, 12, 20, 15, 26, 8, 1, 20, 13, 29, 6, 18, 195, 169, 19, 26, 20, 52, 113, 89, 47, 23,
-			84, 109, 47, 12, 109, 49, 0, 13, 81, 118, 101, 116, 116, 101, 107, 32, 14, 139, 18, 5, 14, 4, 5, 12, 11, 5, 26, 197, 145, 13,
-			9, 134, 9, 18, 195, 161, 14, 20, 13, 9, 134, 18, 195, 169, 19, 26, 20, 13, 0, 19, 67, 85, 48, 128, 195, 186, 101, 115, 98, 195,
-			169, 116, 0, 44, 29, 81, 116, 32, 19, 67, 85, 48, 128, 195, 186, 101, 115, 98, 195, 169, 110, 0, 44, 29, 81, 110, 32, 20, 67, 85,
-			48, 128, 195, 186, 101, 115, 98, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 9, 134, 22, 1, 12, 195, 179, 11, 13, 6, 195, 16, 80,
-			192, 20, 0, 20, 145, 22, 9, 19, 19, 26, 1, 195, 161, 12, 12, 195, 173, 20, 1, 14, 195, 161, 13, 14, 139, 15, 16, 5, 18, 195,
-			161, 20, 15, 18, 15, 11, 13, 6, 131, 18, 195, 179, 13, 6, 195, 76, 242, 203, 13, 0, 15, 4, 95, 226, 128, 155, 37, 72, 113, 88,
-			118, 57, 109, 55, 0, 16, 141, 13, 5, 14, 14, 25, 9, 19, 195, 169, 7, 195, 169, 20, 13, 9, 134, 12, 195, 182, 11, 20, 5, 13,
-			7, 132, 19, 26, 195, 179, 13, 0, 15, 4, 95, 226, 128, 154, 37, 72, 113, 88, 118, 57, 109, 55, 0, 9, 198, 84, 118, 65, 56, 148,
-			192, 13, 34, 10, 20, 21, 4, 15, 13, 195, 161, 19, 21, 12, 47, 40, 72, 39, 65, 114, 91, 40, 55, 23, 49, 109, 55, 12, 0, 13,
-			81, 107, 101, 108, 108, 32, 30, 5, 1, 16, 18, 195, 179, 108, 48, 52, 115, 10, 6, 15, 72, 39, 55, 81, 39, 49, 0, 13, 81, 100,
-			111, 108, 103, 111, 107, 32, 56, 14, 19, 26, 5, 18, 5, 12, 22, 195, 169, 14, 25, 5, 9, 20, 89, 109, 52, 109, 55, 84, 113, 67,
-			109, 37, 47, 23, 65, 109, 81, 109, 52, 118, 91, 112, 47, 84, 109, 0, 13, 81, 109, 101, 103, 101, 114, 197, 145, 115, 195, 173, 116, 118,
-			101, 32, 11, 136, 2, 15, 12, 25, 7, 195, 179, 14, 13, 0, 25, 4, 95, 226, 128, 153, 57, 39, 71, 12, 39, 55, 72, 108, 55, 37,
-			37, 72, 113, 88, 118, 57, 109, 55, 0, 6, 195, 36, 65, 64, 13, 15, 140, 13, 1, 18, 1, 4, 22, 195, 161, 14, 25, 1, 9, 13,
-			13, 138, 20, 21, 4, 15, 13, 195, 161, 19, 21, 11, 13, 13, 138, 13, 195, 169, 18, 5, 20, 197, 177, 5, 11, 13, 6, 195, 36, 65,
-			64, 13, 0, 24, 4, 95, 226, 128, 152, 71, 108, 55, 39, 55, 72, 108, 55, 37, 37, 72, 113, 88, 118, 57, 109, 55, 0, 0, 15, 4,
-			95, 226, 128, 159, 37, 72, 113, 88, 118, 57, 109, 55, 0, 12, 137, 13, 195, 169, 18, 6, 195, 182, 12, 4, 13, 9, 198, 24, 148, 148,
-			5, 69, 1, 13, 0, 15, 4, 95, 226, 128, 158, 37, 72, 113, 88, 118, 57, 109, 55, 0, 0, 15, 4, 95, 226, 128, 157, 37, 72, 113,
-			88, 118, 57, 109, 55, 0, 19, 2, 95, 91, 67, 6, 37, 47, 115, 89, 110, 81, 55, 109, 47, 109, 91, 0, 27, 9, 134, 22, 195, 161,
-			18, 15, 19, 13, 0, 15, 4, 95, 226, 128, 156, 37, 72, 113, 88, 118, 57, 109, 55, 0, 20, 67, 4, 194, 71, 108, 55, 37, 81, 23,
-			84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 10, 135, 8, 1, 26, 195, 161, 14, 11, 13, 18, 143, 6, 5, 12, 19, 26, 195, 179, 12,
-			1, 12, 195, 161, 19, 15, 11, 13, 6, 195, 76, 244, 147, 13, 0, 18, 4, 95, 226, 128, 147, 81, 39, 50, 72, 39, 55, 108, 47, 57,
-			109, 55, 0, 16, 141, 22, 195, 161, 12, 1, 19, 26, 1, 9, 2, 195, 179, 12, 13, 15, 140, 22, 195, 161, 12, 12, 1, 12, 11, 15,
-			26, 195, 179, 13, 9, 134, 22, 195, 161, 18, 14, 9, 13, 6, 195, 80, 84, 150, 13, 0, 35, 70, 21, 49, 84, 48, 81, 192, 109, 91,
-			109, 47, 55, 109, 81, 23, 109, 55, 113, 52, 107, 109, 47, 0, 13, 81, 101, 108, 195, 169, 114, 104, 101, 116, 32, 9, 198, 77, 161, 77,
-			64, 243, 148, 13, 9, 134, 12, 5, 7, 195, 179, 20, 13, 6, 195, 32, 81, 217, 13, 17, 66, 88, 144, 107, 108, 47, 12, 108, 55, 0,
-			44, 42, 81, 97, 108, 32, 0, 14, 2, 95, 95, 108, 55, 114, 107, 116, 88, 114, 91, 0, 27, 30, 67, 76, 242, 192, 91, 39, 49, 23,
-			47, 111, 52, 109, 55, 65, 109, 47, 0, 13, 81, 116, 195, 188, 114, 101, 108, 109, 101, 116, 32, 13, 138, 13, 15, 14, 4, 1, 14, 195,
-			161, 14, 11, 13, 6, 195, 76, 242, 192, 13, 20, 4, 95, 51, 48, 17, 107, 108, 52, 10, 65, 37, 50, 119, 108, 72, 37, 49, 108, 0,
-			0, 11, 200, 84, 118, 65, 56, 18, 203, 61, 32, 13, 41, 6, 7, 195, 169, 16, 5, 14, 81, 113, 48, 109, 50, 23, 89, 111, 49, 91,
-			113, 81, 109, 91, 109, 49, 0, 13, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 101, 107, 32, 24, 6, 7, 195, 169, 16, 5,
-			14, 81, 113, 48, 109, 50, 15, 83, 40, 47, 0, 13, 81, 102, 117, 116, 32, 9, 134, 7, 195, 169, 16, 5, 14, 13, 7, 196, 25, 85,
-			14, 36, 13, 10, 135, 15, 12, 3, 19, 195, 179, 11, 13, 9, 134, 20, 195, 161, 22, 15, 14, 13, 0, 19, 2, 95, 93, 88, 6, 114,
-			52, 115, 89, 110, 81, 55, 109, 47, 109, 91, 0, 27, 9, 134, 22, 195, 161, 18, 15, 13, 13, 10, 135, 22, 195, 161, 12, 10, 15, 14,
-			13, 0, 38, 67, 56, 17, 217, 50, 108, 79, 10, 6, 15, 65, 109, 81, 55, 109, 48, 109, 47, 113, 91, 47, 0, 13, 81, 109, 101, 103,
-			108, 101, 112, 101, 116, 195, 169, 115, 116, 32, 9, 198, 8, 85, 5, 28, 82, 192, 13, 9, 198, 64, 147, 12, 4, 224, 84, 13, 9, 198,
-			20, 195, 69, 56, 226, 64, 13, 14, 139, 20, 1, 12, 195, 161, 12, 13, 195, 161, 14, 25, 13, 6, 195, 56, 17, 217, 13, 0, 6, 195,
-			4, 64, 84, 13, 6, 195, 64, 84, 148, 13, 9, 134, 13, 195, 186, 12, 9, 11, 13, 6, 195, 76, 244, 148, 13, 6, 195, 56, 18, 192,
-			13, 0, 17, 4, 95, 226, 128, 148, 49, 84, 37, 52, 47, 65, 112, 50, 40, 89, 0, 11, 200, 24, 83, 153, 20, 113, 84, 88, 80, 13,
-			12, 137, 8, 1, 20, 195, 161, 12, 25, 2, 1, 13, 10, 135, 195, 161, 12, 12, 195, 179, 11, 13, 9, 134, 10, 195, 161, 18, 19, 26,
-			13, 13, 138, 11, 195, 182, 22, 5, 20, 197, 145, 5, 14, 13, 0, 23, 69, 77, 163, 203, 80, 16, 89, 39, 49, 47, 108, 23, 65, 109,
-			81, 0, 13, 81, 109, 101, 103, 32, 41, 6, 13, 195, 179, 4, 10, 1, 65, 115, 79, 12, 108, 23, 65, 109, 81, 84, 114, 55, 47, 39,
-			88, 37, 49, 0, 13, 81, 109, 101, 103, 118, 195, 161, 108, 116, 111, 122, 105, 107, 32, 13, 138, 5, 12, 195, 169, 18, 195, 169, 19, 18,
-			5, 13, 38, 69, 44, 86, 133, 48, 144, 49, 109, 88, 109, 55, 37, 23, 108, 6, 23, 88, 109, 50, 113, 49, 109, 47, 0, 13, 82, 97,
-			32, 122, 101, 110, 195, 169, 107, 101, 116, 32, 13, 138, 5, 12, 11, 5, 18, 195, 188, 12, 10, 5, 13, 12, 137, 8, 1, 19, 26, 14,
-			195, 161, 12, 20, 13, 8, 197, 4, 176, 82, 80, 16, 13, 12, 201, 72, 83, 132, 20, 194, 197, 104, 146, 192, 13, 12, 201, 24, 145, 217,
-			20, 195, 69, 76, 82, 192, 13, 9, 134, 10, 195, 161, 18, 14, 1, 13, 8, 197, 80, 20, 148, 60, 208, 13, 8, 197, 32, 149, 20, 20,
-			208, 13, 9, 134, 22, 195, 182, 12, 7, 25, 13, 0, 10, 2, 95, 96, 47, 39, 65, 48, 108, 0, 6, 195, 8, 18, 201, 13, 35, 70,
-			20, 208, 133, 72, 82, 192, 109, 65, 71, 109, 52, 109, 49, 23, 89, 114, 65, 114, 52, 108, 0, 13, 81, 115, 122, 195, 161, 109, 195, 161,
-			114, 97, 32, 9, 198, 48, 85, 143, 56, 226, 64, 13, 11, 136, 18, 195, 169, 19, 26, 195, 169, 14, 13, 0, 13, 138, 18, 195, 169, 19,
-			26, 12, 5, 20, 5, 11, 13, 10, 199, 60, 181, 1, 80, 226, 85, 44, 13, 10, 199, 80, 83, 5, 24, 243, 143, 44, 13, 0, 11, 200,
-			44, 83, 5, 80, 177, 90, 36, 176, 13, 12, 137, 2, 195, 186, 10, 20, 1, 20, 10, 1, 13, 0, 9, 134, 4, 195, 182, 6, 197, 145,
-			13, 13, 138, 195, 188, 7, 25, 22, 195, 169, 4, 10, 5, 13, 11, 136, 22, 195, 169, 7, 26, 195, 169, 19, 13, 19, 4, 95, 51, 48,
-			15, 107, 108, 52, 10, 65, 37, 50, 119, 108, 72, 37, 49, 0, 0, 17, 142, 20, 21, 12, 1, 10, 4, 15, 14, 15, 19, 20, 195, 179,
-			12, 13, 9, 198, 61, 37, 143, 77, 48, 76, 13, 13, 138, 3, 19, 15, 13, 1, 7, 18, 195, 179, 12, 13, 0, 10, 199, 40, 83, 12,
-			20, 113, 197, 48, 13, 18, 143, 6, 5, 12, 195, 188, 12, 22, 9, 26, 19, 7, 195, 161, 12, 20, 13, 0, 45, 13, 11, 1, 20, 5,
-			7, 195, 179, 18, 9, 195, 161, 2, 1, 49, 108, 47, 109, 81, 115, 52, 37, 114, 71, 108, 23, 91, 39, 52, 39, 55, 39, 65, 0, 13,
-			81, 115, 111, 114, 111, 108, 111, 109, 32, 10, 135, 11, 195, 182, 20, 195, 169, 19, 13, 8, 133, 197, 145, 18, 26, 9, 13, 7, 196, 80,
-			81, 217, 20, 13, 43, 76, 36, 225, 143, 72, 208, 84, 36, 181, 83, 56, 18, 192, 37, 50, 83, 39, 52, 10, 65, 108, 47, 37, 49, 40,
-			91, 50, 108, 49, 15, 49, 109, 55, 12, 0, 13, 81, 107, 101, 108, 108, 32, 15, 140, 20, 1, 12, 195, 161, 12, 11, 15, 26, 15, 20,
-			20, 13, 8, 133, 195, 169, 18, 26, 9, 13, 0, 9, 134, 1, 18, 195, 161, 14, 25, 13, 36, 8, 14, 5, 22, 5, 12, 195, 169, 19,
-			50, 109, 84, 109, 55, 113, 91, 23, 47, 113, 65, 114, 57, 108, 0, 13, 81, 116, 195, 169, 109, 195, 161, 106, 97, 32, 9, 134, 10, 195,
-			161, 18, 14, 9, 13, 0, 10, 135, 2, 5, 195, 173, 18, 14, 9, 13, 18, 143, 195, 161, 12, 12, 1, 20, 20, 1, 18, 20, 195, 161,
-			19, 18, 1, 13, 13, 138, 18, 195, 169, 19, 26, 12, 5, 20, 5, 20, 13, 9, 134, 195, 182, 19, 195, 169, 20, 13, 12, 4, 95, 7,
-			18, 22, 47, 39, 65, 48, 108, 0, 0, 9, 198, 44, 83, 12, 20, 225, 75, 13, 18, 143, 19, 26, 195, 169, 11, 8, 195, 161, 26, 195,
-			161, 2, 195, 179, 12, 13, 10, 135, 11, 195, 182, 18, 195, 169, 20, 13, 11, 136, 12, 195, 169, 14, 25, 5, 7, 5, 13, 10, 135, 10,
-			195, 161, 18, 8, 1, 20, 13, 10, 135, 11, 195, 182, 18, 195, 169, 20, 13, 0, 9, 198, 72, 83, 132, 20, 197, 0, 13, 11, 136, 18,
-			195, 169, 19, 26, 195, 169, 20, 13, 12, 137, 19, 15, 11, 1, 19, 195, 161, 7, 1, 13, 12, 137, 10, 5, 12, 12, 5, 13, 26, 197,
-			145, 13, 9, 134, 13, 195, 179, 4, 15, 14, 13, 0, 10, 135, 8, 15, 19, 19, 26, 195, 186, 13, 20, 145, 9, 14, 20, 195, 169, 26,
-			13, 195, 169, 14, 25, 5, 11, 14, 195, 169, 12, 13, 15, 140, 5, 12, 11, 195, 169, 16, 26, 5, 12, 195, 169, 19, 13, 8, 197, 44,
-			81, 4, 20, 224, 22, 0, 6, 195, 88, 17, 217, 72, 17, 142, 7, 25, 197, 177, 18, 197, 145, 4, 195, 169, 19, 5, 9, 20, 13, 12,
-			201, 52, 147, 137, 77, 165, 5, 72, 225, 75, 13, 6, 195, 24, 17, 217, 13, 7, 195, 88, 17, 217, 76, 8, 0, 10, 135, 8, 195, 179,
-			2, 15, 18, 20, 13, 14, 139, 22, 5, 26, 5, 20, 195, 169, 19, 195, 169, 20, 13, 0, 13, 138, 19, 26, 195, 179, 12, 1, 12, 10,
-			15, 14, 13, 10, 135, 15, 16, 3, 9, 195, 179, 11, 13, 10, 135, 22, 9, 4, 5, 195, 179, 11, 13, 11, 200, 37, 51, 69, 72, 85,
-			12, 20, 224, 13, 7, 196, 21, 164, 133, 56, 13, 10, 135, 11, 195, 182, 4, 195, 182, 19, 13, 0, 16, 141, 13, 197, 177, 11, 195, 182,
-			4, 195, 169, 19, 195, 169, 20, 13, 0, 9, 198, 24, 20, 1, 16, 244, 192, 13, 13, 138, 5, 12, 1, 4, 195, 179, 20, 195, 179, 12,
-			13, 21, 66, 97, 96, 47, 37, 88, 109, 50, 110, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 9, 198, 81, 81, 10, 4, 224,
-			75, 13, 48, 15, 10, 5, 12, 5, 14, 20, 11, 5, 26, 195, 169, 19, 195, 169, 20, 57, 109, 55, 109, 50, 47, 49, 109, 88, 113, 91,
-			113, 47, 23, 84, 114, 52, 57, 40, 49, 0, 13, 81, 118, 195, 161, 114, 106, 117, 107, 32, 18, 143, 20, 5, 12, 10, 5, 19, 195, 173,
-			20, 195, 169, 19, 195, 169, 20, 13, 10, 199, 36, 225, 15, 44, 243, 20, 4, 13, 12, 137, 19, 26, 195, 161, 12, 12, 10, 15, 14, 13,
-			0, 11, 200, 65, 35, 199, 72, 19, 66, 4, 224, 13, 10, 135, 12, 195, 169, 14, 25, 5, 7, 13, 0, 43, 73, 44, 20, 3, 76, 243,
-			1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 79, 108, 50, 116, 52, 115, 55, 0, 13, 81, 103, 121, 97, 110, 195,
-			186, 114, 195, 179, 108, 32, 45, 73, 44, 20, 3, 76, 243, 1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 47, 109,
-			52, 84, 109, 49, 52, 118, 55, 0, 13, 81, 116, 101, 114, 118, 101, 107, 114, 197, 145, 108, 32, 41, 73, 44, 20, 3, 76, 243, 1, 80,
-			244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 107, 112, 52, 109, 49, 109, 47, 0, 13, 81, 104, 195, 173, 114, 101, 107, 101,
-			116, 32, 58, 73, 44, 20, 3, 76, 243, 1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 71, 37, 88, 39, 67, 47,
-			108, 55, 108, 50, 91, 114, 81, 39, 49, 0, 13, 81, 98, 105, 122, 111, 110, 121, 116, 97, 108, 97, 110, 115, 195, 161, 103, 111, 107, 32,
-			12, 201, 44, 20, 3, 76, 243, 1, 80, 244, 192, 13, 8, 197, 76, 241, 15, 73, 64, 13, 0, 36, 6, 13, 195, 179, 4, 15, 20, 65,
-			115, 72, 39, 47, 23, 84, 114, 55, 108, 89, 47, 39, 65, 0, 13, 81, 118, 195, 161, 108, 97, 115, 122, 116, 111, 109, 32, 43, 70, 44,
-			83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 36, 23, 71, 37, 89, 47, 39, 89, 112, 47, 108, 50, 37, 0, 13, 81, 98, 105, 122,
-			116, 111, 115, 195, 173, 116, 97, 110, 105, 32, 34, 70, 44, 83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 23, 83, 37, 88, 109,
-			47, 50, 37, 0, 13, 81, 102, 105, 122, 101, 116, 110, 105, 32, 39, 70, 44, 83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 23,
-			108, 6, 15, 48, 52, 39, 81, 52, 108, 65, 0, 13, 82, 97, 32, 112, 114, 111, 103, 114, 97, 109, 32, 37, 70, 44, 83, 12, 20, 225,
-			64, 49, 109, 55, 12, 109, 50, 109, 15, 49, 110, 84, 109, 47, 50, 37, 109, 0, 13, 81, 107, 195, 182, 118, 101, 116, 110, 105, 101, 32,
-			13, 202, 4, 194, 193, 48, 208, 90, 61, 69, 1, 44, 13, 17, 142, 2, 9, 26, 15, 20, 20, 19, 195, 161, 7, 20, 195, 179, 12, 13,
-			9, 198, 44, 83, 12, 20, 225, 64, 13, 0, 18, 2, 95, 123, 49, 6, 109, 88, 72, 118, 49, 108, 48, 76, 39, 91, 0, 27, 12, 4,
-			95, 4, 9, 1, 47, 52, 113, 65, 108, 0, 0, 15, 140, 20, 195, 182, 18, 22, 195, 169, 14, 14, 25, 5, 12, 13, 0, 20, 4, 95,
-			226, 128, 179, 72, 40, 48, 55, 108, 108, 48, 39, 89, 47, 52, 115, 83, 0, 8, 197, 105, 82, 1, 57, 64, 13, 0, 15, 4, 95, 226,
-			128, 178, 108, 48, 39, 89, 47, 52, 115, 83, 0, 10, 135, 11, 9, 195, 173, 18, 14, 9, 13, 0, 10, 199, 28, 243, 132, 60, 197, 78,
-			44, 13, 7, 132, 195, 179, 18, 1, 13, 0, 14, 4, 95, 226, 128, 176, 109, 88, 52, 109, 55, 113, 49, 0, 22, 68, 36, 112, 90, 4,
-			37, 81, 108, 88, 108, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 15, 140, 11, 195, 188, 12, 195, 182, 14, 1, 4, 195, 179, 20,
-			13, 0, 16, 2, 95, 125, 84, 6, 113, 81, 49, 108, 48, 76, 39, 91, 0, 27, 35, 12, 7, 5, 14, 5, 18, 195, 161, 3, 9, 195,
-			179, 19, 81, 109, 50, 109, 52, 114, 119, 37, 115, 91, 10, 6, 15, 39, 49, 0, 13, 81, 111, 107, 32, 12, 137, 195, 182, 18, 195, 182,
-			11, 195, 182, 12, 13, 9, 134, 2, 195, 161, 3, 19, 9, 13, 15, 140, 7, 5, 14, 5, 18, 195, 161, 3, 9, 195, 179, 19, 13, 9,
-			134, 195, 161, 12, 12, 10, 1, 13, 8, 197, 48, 18, 206, 4, 176, 13, 8, 197, 44, 81, 4, 36, 112, 22, 0, 20, 2, 95, 124, 83,
-			111, 81, 12, 118, 55, 109, 81, 109, 91, 84, 39, 50, 108, 55, 0, 9, 198, 32, 145, 199, 100, 82, 192, 13, 9, 198, 44, 86, 133, 48,
-			146, 192, 13, 9, 198, 40, 21, 129, 76, 192, 84, 13, 9, 198, 77, 68, 133, 77, 54, 128, 13, 0, 13, 138, 22, 195, 169, 7, 26, 197,
-			145, 4, 9, 11, 13, 15, 140, 195, 182, 19, 19, 26, 5, 10, 195, 182, 14, 14, 9, 13, 0, 11, 200, 8, 84, 218, 21, 33, 90, 56,
-			144, 13, 33, 72, 53, 85, 1, 80, 179, 218, 36, 176, 65, 40, 47, 108, 47, 49, 39, 88, 37, 49, 10, 6, 15, 65, 109, 81, 0, 13,
-			81, 109, 101, 103, 32, 11, 200, 88, 243, 129, 80, 179, 218, 56, 16, 13, 11, 200, 4, 192, 75, 84, 195, 137, 84, 176, 13, 11, 136, 9,
-			7, 195, 169, 14, 25, 5, 12, 13, 11, 200, 88, 243, 129, 80, 179, 218, 36, 176, 13, 11, 200, 53, 85, 1, 80, 179, 218, 36, 176, 13,
-			0, 22, 6, 13, 195, 161, 19, 18, 1, 65, 114, 91, 52, 108, 23, 37, 91, 0, 13, 81, 105, 115, 32, 11, 136, 9, 7, 195, 169, 14,
-			25, 5, 11, 13, 9, 134, 22, 195, 161, 18, 10, 1, 13, 10, 135, 9, 14, 11, 195, 161, 2, 2, 13, 12, 137, 1, 7, 7, 195, 179,
-			4, 15, 20, 20, 13, 12, 137, 195, 173, 18, 195, 179, 4, 15, 20, 20, 13, 0, 7, 66, 105, 48, 90, 113, 0, 9, 198, 88, 17, 217,
-			80, 242, 192, 13, 14, 139, 1, 12, 10, 1, 19, 19, 195, 161, 7, 18, 1, 13, 10, 135, 22, 9, 20, 195, 161, 2, 1, 13, 9, 198,
-			60, 197, 129, 76, 226, 64, 13, 18, 70, 53, 97, 217, 61, 54, 128, 109, 65, 84, 113, 79, 113, 39, 109, 89, 0, 0, 10, 199, 48, 83,
-			79, 56, 64, 78, 36, 13, 10, 135, 10, 5, 12, 195, 182, 12, 20, 13, 11, 136, 5, 19, 26, 11, 195, 182, 26, 5, 13, 22, 147, 20,
-			195, 182, 18, 22, 195, 169, 14, 25, 10, 1, 22, 1, 19, 12, 1, 20, 15, 20, 13, 11, 136, 9, 18, 15, 4, 195, 161, 2, 1, 13,
-			15, 140, 2, 195, 173, 18, 195, 179, 19, 195, 161, 7, 18, 1, 13, 10, 135, 8, 195, 173, 22, 15, 20, 20, 13, 0, 27, 5, 5, 12,
-			19, 197, 145, 109, 55, 91, 118, 10, 6, 15, 113, 84, 109, 50, 0, 13, 81, 195, 169, 118, 101, 110, 32, 38, 5, 5, 12, 19, 197, 145,
-			109, 55, 91, 118, 23, 91, 39, 52, 71, 108, 50, 114, 55, 12, 115, 0, 13, 81, 115, 111, 114, 98, 97, 110, 195, 161, 108, 108, 195, 179,
-			32, 57, 72, 24, 83, 13, 85, 64, 84, 56, 144, 83, 109, 55, 65, 40, 47, 108, 47, 50, 37, 23, 108, 6, 15, 47, 114, 52, 79, 108,
-			55, 114, 91, 39, 49, 39, 50, 0, 13, 82, 97, 32, 116, 195, 161, 114, 103, 121, 97, 108, 195, 161, 115, 111, 107, 111, 110, 32, 8, 133,
-			5, 12, 19, 197, 145, 13, 11, 200, 81, 83, 1, 40, 242, 206, 4, 176, 13, 7, 196, 88, 148, 197, 48, 13, 0, 12, 137, 21, 14, 9,
-			195, 179, 2, 195, 179, 12, 13, 31, 10, 19, 26, 195, 161, 13, 21, 14, 11, 18, 1, 89, 114, 65, 40, 50, 49, 52, 108, 10, 6, 15,
-			108, 88, 0, 13, 81, 97, 122, 32, 12, 201, 24, 144, 84, 4, 195, 203, 56, 18, 192, 13, 12, 137, 9, 14, 4, 195, 173, 20, 15, 20,
-			20, 13, 13, 138, 19, 26, 195, 161, 13, 21, 14, 11, 18, 1, 13, 12, 201, 16, 243, 7, 61, 166, 129, 56, 18, 192, 13, 13, 138, 9,
-			18, 195, 161, 14, 25, 195, 161, 2, 1, 13, 0, 13, 138, 3, 19, 1, 12, 195, 179, 4, 15, 20, 20, 13, 59, 12, 10, 5, 12, 5,
-			14, 20, 197, 145, 19, 5, 2, 2, 57, 109, 55, 109, 50, 47, 118, 91, 109, 71, 12, 23, 76, 108, 48, 108, 72, 113, 49, 107, 40, 55,
-			12, 114, 91, 0, 13, 81, 99, 115, 97, 112, 97, 100, 195, 169, 107, 104, 117, 108, 108, 195, 161, 115, 32, 17, 198, 72, 244, 211, 105, 83,
-			0, 13, 81, 102, 117, 116, 111, 116, 116, 32, 15, 140, 6, 9, 14, 1, 14, 19, 26, 195, 173, 18, 15, 26, 13, 16, 141, 19, 26, 5,
-			18, 11, 5, 26, 5, 20, 197, 177, 5, 11, 13, 0, 19, 144, 14, 25, 9, 12, 22, 195, 161, 14, 15, 19, 19, 195, 161, 7, 18, 1,
-			13, 13, 138, 5, 19, 26, 11, 195, 182, 26, 195, 182, 11, 13, 14, 139, 11, 15, 18, 195, 161, 2, 2, 18, 195, 179, 12, 13, 14, 139,
-			19, 26, 195, 161, 13, 195, 173, 20, 15, 20, 20, 13, 0, 47, 13, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 18, 1, 47, 114,
-			65, 39, 81, 108, 47, 114, 91, 52, 108, 23, 57, 39, 81, 39, 91, 40, 55, 47, 0, 13, 81, 106, 111, 103, 111, 115, 117, 108, 116, 32,
-			21, 6, 11, 195, 182, 14, 25, 22, 49, 110, 67, 84, 23, 37, 91, 0, 13, 81, 105, 115, 32, 20, 145, 13, 5, 7, 11, 195, 182, 26,
-			5, 12, 195, 173, 20, 195, 169, 19, 18, 5, 13, 0, 9, 198, 80, 20, 148, 4, 195, 65, 13, 11, 136, 20, 5, 18, 22, 195, 188, 14,
-			11, 13, 7, 132, 11, 195, 169, 11, 13, 0, 41, 16, 12, 5, 7, 11, 195, 169, 14, 25, 5, 12, 13, 5, 19, 5, 2, 2, 55, 109,
-			81, 49, 113, 67, 109, 55, 65, 109, 91, 109, 71, 12, 23, 108, 88, 0, 13, 81, 97, 122, 32, 18, 143, 20, 1, 18, 20, 195, 179, 26,
-			11, 15, 4, 195, 161, 19, 18, 1, 13, 0, 9, 134, 20, 195, 182, 13, 9, 11, 13, 19, 144, 14, 25, 9, 12, 22, 195, 161, 14, 195,
-			173, 20, 195, 161, 19, 18, 1, 13, 0, 8, 133, 195, 188, 26, 5, 13, 13, 10, 135, 6, 195, 169, 12, 14, 5, 11, 13, 9, 134, 14,
-			195, 169, 22, 5, 14, 13, 9, 134, 20, 195, 169, 18, 5, 14, 13, 0, 24, 6, 8, 195, 173, 18, 5, 13, 107, 112, 52, 109, 65, 23,
-			84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 10, 135, 12, 195, 169, 16, 10, 5, 14, 13, 0, 34, 9, 10, 195, 182, 8, 5, 20, 14,
-			5, 11, 57, 110, 107, 109, 47, 50, 109, 49, 23, 89, 115, 71, 108, 0, 13, 81, 115, 122, 195, 179, 98, 97, 32, 11, 136, 195, 169, 22,
-			5, 11, 2, 5, 14, 13, 12, 137, 13, 197, 177, 19, 15, 18, 14, 1, 11, 13, 9, 134, 13, 197, 177, 22, 5, 12, 13, 6, 195, 57,
-			147, 205, 13, 0, 16, 67, 53, 54, 144, 101, 109, 101, 115, 122, 112, 195, 169, 0, 29, 42, 9, 198, 44, 84, 133, 77, 65, 75, 13, 9,
-			134, 8, 195, 173, 18, 5, 11, 13, 13, 138, 13, 197, 177, 11, 195, 182, 4, 14, 5, 11, 13, 11, 136, 11, 195, 182, 22, 5, 20, 20,
-			5, 13, 9, 134, 197, 145, 18, 14, 5, 11, 13, 7, 132, 11, 195, 169, 13, 13, 6, 195, 53, 64, 64, 17, 0, 26, 5, 22, 195, 161,
-			7, 25, 84, 114, 79, 23, 113, 81, 109, 47, 12, 0, 13, 81, 195, 169, 103, 101, 116, 116, 32, 41, 10, 13, 5, 7, 25, 195, 169, 11,
-			2, 5, 14, 65, 109, 79, 113, 49, 71, 109, 50, 23, 84, 114, 52, 107, 108, 47, 115, 0, 13, 81, 118, 195, 161, 114, 104, 97, 116, 195,
-			179, 32, 10, 135, 20, 5, 18, 13, 195, 169, 11, 13, 15, 140, 20, 195, 161, 18, 19, 1, 4, 1, 12, 13, 1, 20, 13, 13, 138, 15,
-			18, 19, 26, 195, 161, 7, 2, 1, 14, 13, 8, 133, 22, 195, 161, 7, 25, 13, 7, 196, 48, 18, 201, 44, 13, 0, 9, 198, 32, 20,
-			131, 60, 195, 137, 13, 12, 137, 195, 186, 7, 25, 20, 197, 177, 14, 20, 13, 13, 138, 7, 25, 195, 161, 18, 20, 15, 20, 20, 1, 13,
-			6, 195, 88, 148, 218, 13, 9, 134, 20, 195, 161, 18, 7, 25, 13, 7, 132, 13, 195, 169, 7, 13, 18, 143, 3, 19, 195, 188, 20, 195,
-			182, 18, 20, 195, 182, 11, 195, 182, 14, 22, 0, 14, 139, 20, 1, 19, 26, 195, 173, 20, 15, 20, 20, 1, 13, 12, 137, 20, 21, 4,
-			10, 195, 161, 20, 15, 11, 13, 17, 66, 97, 128, 107, 116, 89, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 23, 67, 97, 98, 73, 47,
-			37, 88, 109, 50, 107, 113, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 34, 71, 32, 18, 148, 61, 69, 1, 44, 107, 108, 57,
-			47, 39, 47, 12, 108, 49, 23, 84, 113, 81, 52, 109, 0, 13, 81, 118, 195, 169, 103, 114, 101, 32, 13, 138, 19, 26, 195, 188, 12, 5,
-			20, 14, 5, 11, 13, 14, 203, 65, 35, 199, 72, 19, 74, 4, 146, 203, 4, 192, 13, 69, 13, 195, 186, 20, 13, 21, 20, 1, 20, 195,
-			179, 2, 1, 14, 116, 47, 65, 40, 47, 108, 47, 115, 71, 108, 50, 23, 37, 91, 23, 108, 89, 47, 23, 47, 108, 50, 114, 76, 39, 57,
-			57, 57, 114, 49, 0, 13, 83, 105, 115, 32, 97, 122, 116, 32, 116, 97, 110, 195, 161, 99, 115, 111, 108, 106, 195, 161, 107, 32, 16, 141,
-			12, 195, 161, 20, 15, 7, 1, 20, 195, 179, 2, 1, 14, 13, 10, 199, 16, 243, 7, 61, 165, 1, 44, 13, 6, 195, 85, 64, 76, 13,
-			0, 14, 139, 11, 195, 182, 22, 5, 20, 5, 12, 14, 5, 11, 13, 40, 14, 19, 26, 5, 18, 26, 197, 145, 4, 195, 169, 19, 2, 5,
-			14, 89, 109, 52, 88, 118, 72, 113, 91, 71, 109, 50, 23, 49, 109, 55, 12, 0, 13, 81, 107, 101, 108, 108, 32, 13, 138, 195, 169, 12,
-			5, 20, 195, 169, 2, 5, 14, 13, 13, 138, 20, 5, 13, 5, 20, 197, 145, 2, 5, 14, 13, 11, 136, 5, 19, 26, 11, 195, 182, 26,
-			20, 13, 22, 67, 97, 134, 0, 107, 108, 52, 65, 37, 50, 119, 12, 35, 55, 0, 44, 42, 81, 97, 108, 32, 0, 7, 195, 48, 84, 218,
-			72, 22, 30, 67, 48, 84, 218, 55, 109, 89, 23, 108, 57, 114, 50, 55, 39, 47, 12, 0, 13, 81, 97, 106, 195, 161, 110, 108, 111, 116,
-			116, 32, 25, 8, 8, 9, 19, 19, 26, 195, 188, 11, 107, 37, 89, 12, 111, 49, 23, 109, 55, 0, 13, 81, 101, 108, 32, 9, 134, 22,
-			195, 161, 7, 14, 9, 13, 13, 138, 20, 195, 161, 13, 15, 7, 1, 20, 20, 1, 13, 11, 136, 22, 195, 169, 12, 10, 195, 188, 11, 13,
-			8, 133, 6, 195, 188, 19, 20, 13, 0, 63, 14, 20, 5, 18, 22, 5, 26, 195, 169, 19, 195, 169, 22, 5, 12, 47, 109, 34, 84, 109,
-			88, 113, 91, 113, 84, 109, 55, 23, 83, 39, 81, 55, 108, 55, 49, 39, 88, 115, 23, 119, 113, 81, 0, 13, 82, 102, 111, 103, 108, 97,
-			108, 107, 111, 122, 195, 179, 32, 99, 195, 169, 103, 32, 9, 198, 37, 51, 69, 73, 97, 64, 13, 9, 198, 80, 83, 5, 57, 65, 64, 13,
-			12, 4, 95, 35, 51, 50, 89, 115, 49, 110, 88, 0, 0, 12, 201, 32, 149, 129, 80, 179, 218, 61, 69, 0, 13, 17, 142, 11, 195, 169,
-			16, 26, 197, 145, 4, 8, 5, 20, 14, 5, 11, 13, 16, 141, 20, 5, 18, 5, 12, 195, 169, 19, 195, 169, 2, 5, 14, 13, 16, 141,
-			13, 195, 169, 18, 20, 195, 169, 11, 195, 169, 2, 5, 14, 13, 0, 10, 135, 20, 197, 145, 12, 195, 188, 11, 13, 0, 18, 143, 20, 195,
-			182, 18, 20, 195, 169, 14, 5, 20, 195, 169, 2, 5, 14, 13, 18, 143, 13, 5, 7, 11, 195, 182, 20, 195, 169, 19, 195, 169, 2, 5,
-			14, 13, 18, 143, 19, 195, 188, 12, 12, 25, 5, 19, 26, 20, 197, 145, 2, 5, 14, 13, 11, 136, 9, 7, 1, 26, 19, 195, 161, 7,
-			13, 0, 21, 146, 22, 9, 19, 19, 26, 1, 20, 195, 169, 18, 195, 169, 19, 195, 169, 22, 5, 12, 13, 12, 137, 2, 5, 12, 197, 145,
-			12, 195, 188, 11, 13, 9, 198, 40, 83, 5, 105, 65, 64, 13, 9, 198, 44, 20, 3, 76, 243, 20, 13, 0, 9, 198, 8, 83, 69, 57,
-			65, 75, 13, 9, 134, 195, 169, 12, 14, 5, 11, 13, 13, 138, 8, 5, 12, 25, 26, 5, 20, 195, 188, 11, 13, 10, 135, 11, 195, 173,
-			22, 195, 188, 12, 13, 11, 136, 14, 195, 169, 8, 195, 161, 14, 25, 13, 23, 67, 97, 98, 64, 47, 37, 88, 109, 50, 107, 108, 47, 12,
-			108, 55, 0, 44, 42, 81, 97, 108, 32, 26, 67, 97, 98, 64, 47, 37, 88, 109, 50, 107, 108, 47, 39, 72, 37, 49, 37, 81, 0, 44,
-			42, 81, 105, 103, 32, 0, 7, 196, 21, 164, 133, 76, 13, 11, 200, 77, 160, 86, 5, 160, 84, 61, 64, 13, 18, 143, 13, 9, 14, 9,
-			19, 26, 20, 5, 18, 5, 12, 14, 195, 182, 11, 13, 12, 137, 2, 195, 188, 14, 20, 5, 20, 14, 9, 13, 26, 67, 96, 150, 0, 47,
-			37, 88, 109, 50, 49, 37, 55, 109, 50, 119, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 9, 134, 12, 195, 169, 16, 22, 5, 13,
-			12, 137, 15, 18, 19, 26, 195, 161, 7, 15, 20, 13, 8, 197, 64, 243, 148, 60, 176, 13, 0, 9, 198, 32, 83, 25, 21, 162, 64, 13,
-			9, 198, 40, 83, 5, 57, 66, 64, 13, 0, 11, 136, 6, 5, 8, 195, 169, 18, 2, 5, 13, 13, 138, 13, 21, 14, 11, 195, 161, 19,
-			14, 1, 11, 13, 15, 140, 22, 195, 161, 12, 20, 15, 26, 20, 1, 20, 14, 9, 13, 14, 139, 7, 1, 26, 4, 1, 19, 195, 161, 7,
-			15, 20, 13, 13, 138, 22, 195, 161, 12, 12, 1, 12, 14, 1, 11, 13, 10, 135, 20, 1, 12, 195, 161, 12, 20, 13, 8, 133, 6, 15,
-			11, 195, 186, 13, 10, 199, 20, 197, 5, 72, 161, 68, 80, 13, 6, 195, 64, 84, 212, 13, 8, 195, 53, 66, 64, 17, 42, 42, 0, 12,
-			137, 19, 26, 5, 18, 26, 197, 145, 10, 5, 13, 11, 136, 10, 15, 7, 195, 161, 22, 1, 12, 13, 18, 143, 18, 5, 14, 4, 5, 12,
-			12, 5, 14, 5, 19, 19, 195, 169, 7, 13, 0, 10, 135, 16, 15, 12, 3, 195, 161, 14, 13, 31, 9, 11, 195, 169, 19, 26, 195, 188,
-			12, 20, 49, 113, 89, 111, 55, 47, 23, 52, 115, 55, 108, 0, 13, 81, 114, 195, 179, 108, 97, 32, 12, 137, 20, 195, 169, 13, 195, 161,
-			22, 1, 12, 13, 8, 197, 28, 22, 132, 4, 112, 13, 9, 198, 52, 81, 212, 84, 66, 129, 13, 9, 198, 24, 241, 204, 4, 194, 129, 13,
-			16, 141, 13, 195, 169, 12, 20, 195, 179, 19, 195, 161, 7, 15, 20, 13, 11, 136, 20, 195, 173, 16, 21, 19, 15, 11, 13, 12, 137, 11,
-			9, 20, 1, 12, 195, 161, 12, 20, 13, 12, 137, 11, 195, 169, 19, 26, 195, 188, 12, 20, 13, 7, 132, 11, 195, 169, 19, 13, 9, 134,
-			195, 182, 19, 19, 26, 5, 13, 0, 64, 17, 195, 161, 12, 12, 1, 13, 20, 9, 20, 11, 195, 161, 18, 19, 195, 161, 7, 35, 55, 12,
-			108, 65, 47, 37, 47, 49, 114, 52, 91, 114, 81, 23, 47, 109, 34, 84, 109, 88, 109, 47, 113, 52, 118, 55, 0, 13, 81, 116, 101, 114,
-			118, 101, 122, 101, 116, 195, 169, 114, 197, 145, 108, 32, 6, 195, 4, 67, 129, 13, 9, 198, 32, 148, 132, 21, 66, 64, 13, 9, 198, 52,
-			243, 132, 81, 82, 192, 13, 7, 132, 11, 195, 169, 18, 13, 0, 12, 137, 20, 5, 18, 13, 195, 169, 2, 5, 14, 13, 9, 198, 40, 83,
-			5, 57, 66, 75, 13, 13, 138, 9, 19, 11, 15, 12, 195, 161, 19, 15, 11, 13, 13, 67, 5, 67, 64, 114, 47, 113, 109, 65, 0, 42,
-			42, 0, 9, 134, 195, 173, 7, 195, 169, 18, 13, 13, 138, 19, 5, 18, 5, 7, 195, 169, 2, 5, 14, 13, 10, 135, 2, 5, 14, 14,
-			195, 188, 11, 13, 17, 142, 11, 9, 195, 161, 12, 12, 195, 173, 20, 195, 161, 19, 15, 14, 13, 11, 136, 22, 1, 12, 195, 179, 19, 21,
-			12, 13, 15, 140, 20, 1, 18, 20, 1, 12, 13, 195, 161, 22, 1, 12, 13, 11, 136, 4, 18, 195, 161, 7, 21, 12, 20, 13, 7, 132,
-			11, 195, 169, 16, 13, 0, 17, 67, 80, 84, 218, 47, 109, 89, 15, 49, 37, 0, 13, 81, 107, 105, 32, 17, 142, 11, 195, 182, 18, 195,
-			188, 12, 13, 195, 169, 14, 25, 5, 9, 13, 6, 195, 80, 84, 218, 13, 0, 20, 145, 2, 9, 26, 15, 14, 25, 20, 1, 12, 1, 14,
-			19, 195, 161, 7, 15, 11, 13, 13, 138, 195, 182, 18, 195, 182, 11, 195, 182, 12, 20, 13, 13, 138, 11, 195, 182, 26, 20, 21, 4, 15,
-			20, 20, 13, 9, 198, 20, 118, 69, 80, 83, 64, 13, 0, 10, 199, 77, 162, 210, 37, 5, 5, 80, 13, 0, 18, 143, 13, 5, 7, 19,
-			26, 15, 18, 195, 173, 20, 195, 161, 19, 15, 11, 13, 19, 144, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 195, 161, 22, 1, 12,
-			13, 12, 137, 13, 197, 177, 11, 195, 182, 4, 197, 145, 13, 7, 132, 11, 195, 169, 20, 13, 0, 20, 145, 20, 1, 12, 195, 161, 12, 11,
-			15, 26, 195, 179, 10, 195, 161, 22, 1, 12, 13, 18, 143, 13, 1, 7, 25, 1, 18, 15, 18, 19, 26, 195, 161, 7, 15, 14, 13, 12,
-			137, 22, 1, 19, 195, 161, 18, 14, 1, 16, 20, 0, 21, 146, 195, 161, 12, 12, 1, 13, 20, 9, 20, 11, 195, 161, 18, 195, 161, 22,
-			1, 12, 13, 19, 144, 11, 195, 182, 26, 12, 5, 13, 195, 169, 14, 25, 195, 169, 2, 5, 14, 13, 7, 132, 7, 195, 161, 26, 13, 6,
-			195, 4, 67, 137, 13, 0, 11, 136, 9, 10, 5, 19, 26, 20, 197, 145, 13, 40, 8, 11, 195, 182, 18, 195, 188, 12, 9, 49, 110, 52,
-			111, 55, 37, 23, 110, 89, 12, 109, 81, 71, 118, 55, 0, 13, 81, 195, 182, 115, 115, 122, 101, 103, 98, 197, 145, 108, 32, 24, 4, 5,
-			12, 195, 169, 109, 55, 113, 23, 84, 109, 47, 37, 49, 0, 13, 81, 118, 101, 116, 105, 107, 32, 7, 132, 5, 12, 195, 169, 13, 0, 7,
-			196, 81, 81, 15, 44, 76, 44, 6, 18, 1, 14, 7, 195, 186, 52, 108, 50, 81, 116, 23, 47, 37, 89, 47, 84, 37, 91, 109, 55, 118,
-			57, 109, 0, 13, 81, 116, 105, 115, 122, 116, 118, 105, 115, 101, 108, 197, 145, 106, 101, 32, 11, 136, 22, 195, 161, 7, 25, 1, 9, 20,
-			13, 0, 12, 201, 24, 145, 217, 20, 195, 69, 105, 65, 84, 13, 16, 141, 22, 195, 169, 12, 5, 13, 195, 169, 14, 25, 195, 169, 20, 13,
-			0, 0, 10, 135, 2, 1, 14, 195, 161, 14, 20, 13, 9, 134, 195, 173, 18, 14, 1, 11, 13, 11, 136, 20, 195, 161, 13, 1, 4, 20,
-			1, 13, 6, 195, 9, 34, 84, 13, 10, 135, 6, 18, 195, 161, 19, 26, 20, 13, 0, 13, 138, 195, 161, 12, 12, 195, 161, 19, 2, 1,
-			14, 13, 8, 133, 14, 195, 161, 12, 1, 13, 0, 41, 8, 11, 195, 182, 14, 25, 22, 5, 11, 49, 110, 67, 84, 109, 49, 23, 55, 114,
-			47, 107, 108, 47, 39, 108, 49, 0, 13, 81, 108, 195, 161, 116, 104, 97, 116, 195, 179, 97, 107, 32, 26, 69, 44, 148, 197, 8, 32, 49,
-			37, 91, 12, 109, 71, 12, 23, 109, 91, 118, 0, 13, 81, 101, 115, 197, 145, 32, 13, 138, 5, 13, 12, 195, 173, 20, 5, 20, 20, 5,
-			13, 11, 136, 195, 161, 18, 21, 12, 14, 1, 11, 13, 11, 136, 11, 195, 182, 14, 25, 22, 5, 11, 13, 0, 11, 136, 22, 9, 20, 195,
-			161, 2, 1, 14, 13, 33, 70, 60, 193, 1, 49, 32, 64, 39, 55, 72, 108, 55, 52, 108, 6, 15, 71, 40, 49, 12, 108, 50, 0, 13,
-			81, 98, 117, 107, 107, 97, 110, 32, 14, 139, 8, 15, 26, 26, 195, 161, 20, 5, 20, 20, 5, 13, 13, 138, 20, 1, 18, 9, 6, 195,
-			161, 22, 1, 12, 13, 12, 137, 12, 195, 169, 20, 5, 26, 14, 5, 11, 13, 14, 139, 195, 161, 12, 12, 195, 173, 20, 15, 20, 20, 1,
-			13, 9, 198, 60, 193, 1, 49, 32, 64, 13, 0, 14, 139, 4, 15, 2, 195, 161, 19, 195, 161, 22, 1, 12, 13, 12, 137, 6, 15, 18,
-			13, 195, 161, 2, 1, 14, 13, 16, 141, 11, 195, 169, 18, 4, 195, 169, 19, 5, 11, 2, 5, 14, 13, 51, 9, 6, 15, 18, 13, 195,
-			161, 2, 1, 14, 83, 39, 52, 65, 114, 71, 108, 50, 23, 108, 6, 15, 47, 109, 52, 84, 109, 88, 109, 47, 71, 109, 50, 0, 13, 82,
-			97, 32, 116, 101, 114, 118, 101, 122, 101, 116, 98, 101, 110, 32, 6, 195, 20, 197, 128, 13, 9, 198, 29, 144, 76, 60, 115, 211, 13, 16,
-			141, 11, 21, 20, 1, 20, 195, 161, 19, 15, 11, 2, 1, 14, 13, 8, 4, 95, 35, 45, 5, 109, 0, 0, 32, 7, 19, 26, 195, 179,
-			12, 195, 179, 89, 115, 55, 115, 23, 72, 110, 50, 47, 113, 91, 0, 13, 81, 100, 195, 182, 110, 116, 195, 169, 115, 32, 14, 139, 20, 195,
-			161, 18, 7, 25, 1, 12, 14, 1, 11, 13, 38, 7, 19, 26, 195, 179, 12, 195, 179, 89, 115, 55, 115, 23, 57, 108, 84, 108, 91, 55,
-			108, 47, 39, 47, 0, 13, 81, 106, 97, 118, 97, 115, 108, 97, 116, 111, 116, 32, 13, 138, 11, 5, 18, 5, 20, 195, 169, 2, 5, 14,
-			13, 7, 196, 81, 81, 15, 52, 13, 10, 135, 19, 26, 195, 179, 12, 195, 179, 13, 0, 14, 139, 8, 1, 20, 195, 161, 19, 195, 161, 2,
-			1, 14, 13, 15, 140, 195, 182, 19, 19, 26, 5, 195, 188, 12, 14, 5, 11, 13, 8, 197, 20, 193, 71, 21, 64, 13, 8, 197, 40, 241,
-			193, 37, 64, 13, 16, 141, 18, 195, 169, 19, 26, 12, 5, 7, 195, 169, 22, 5, 12, 13, 8, 197, 57, 147, 205, 77, 160, 13, 9, 134,
-			20, 195, 182, 13, 14, 9, 13, 8, 197, 41, 85, 15, 81, 64, 13, 0, 15, 140, 195, 169, 18, 20, 5, 12, 13, 195, 169, 2, 5, 14,
-			13, 18, 143, 11, 9, 5, 7, 195, 169, 19, 26, 195, 173, 20, 5, 20, 20, 5, 13, 15, 140, 21, 20, 1, 12, 22, 195, 161, 14, 25,
-			2, 1, 14, 13, 12, 137, 19, 26, 5, 18, 4, 195, 161, 9, 7, 22, 0, 72, 73, 24, 83, 142, 80, 20, 148, 61, 69, 0, 83, 109,
-			50, 12, 47, 108, 52, 47, 39, 47, 12, 23, 37, 91, 49, 39, 55, 114, 49, 23, 65, 111, 49, 110, 47, 12, 109, 47, 113, 91, 113, 47,
-			0, 13, 82, 105, 115, 107, 111, 108, 195, 161, 107, 32, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 195, 169, 115, 195, 169, 116, 32, 16,
-			141, 20, 5, 11, 9, 14, 20, 5, 20, 195, 169, 2, 5, 14, 13, 13, 138, 9, 7, 1, 26, 19, 195, 161, 7, 15, 19, 13, 16, 141,
-			2, 197, 177, 14, 20, 5, 20, 20, 195, 169, 2, 5, 14, 13, 9, 134, 22, 5, 12, 195, 188, 11, 13, 6, 195, 29, 5, 64, 17, 9,
-			4, 95, 35, 45, 1, 108, 0, 21, 0, 0, 8, 197, 4, 64, 84, 61, 64, 13, 11, 136, 14, 25, 195, 186, 10, 20, 195, 179, 13, 16,
-			141, 22, 195, 161, 12, 20, 15, 26, 1, 20, 2, 195, 179, 12, 13, 20, 145, 19, 20, 18, 1, 20, 195, 169, 7, 9, 195, 161, 10, 195,
-			161, 22, 1, 12, 13, 11, 136, 19, 26, 20, 18, 195, 161, 10, 11, 13, 0, 19, 144, 11, 195, 169, 16, 22, 9, 19, 5, 12, 5, 20,
-			195, 169, 2, 5, 14, 13, 19, 144, 1, 12, 11, 1, 12, 13, 1, 26, 195, 161, 19, 195, 161, 2, 1, 14, 13, 12, 137, 10, 5, 12,
-			5, 14, 19, 195, 169, 7, 13, 12, 137, 8, 5, 12, 25, 9, 19, 195, 169, 7, 13, 0, 28, 5, 20, 195, 182, 2, 2, 47, 110, 71,
-			12, 23, 39, 52, 89, 114, 81, 0, 13, 81, 111, 114, 115, 122, 195, 161, 103, 32, 79, 5, 20, 195, 182, 2, 2, 47, 110, 71, 12, 23,
-			107, 109, 57, 109, 50, 23, 89, 108, 49, 108, 72, 39, 88, 37, 49, 23, 83, 109, 55, 23, 108, 23, 83, 109, 55, 107, 118, 88, 109, 47,
-			0, 13, 85, 104, 101, 108, 121, 101, 110, 32, 115, 122, 97, 107, 97, 100, 111, 122, 105, 107, 32, 102, 101, 108, 32, 97, 32, 102, 101, 108,
-			104, 197, 145, 122, 101, 116, 32, 49, 5, 20, 195, 182, 2, 2, 47, 110, 71, 12, 23, 83, 109, 55, 107, 118, 23, 84, 108, 55, 115, 89,
-			112, 50, 117, 0, 13, 82, 102, 101, 108, 104, 197, 145, 32, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 32, 26, 67, 85, 64,
-			84, 40, 47, 108, 47, 15, 49, 108, 48, 39, 47, 12, 0, 13, 81, 107, 97, 112, 111, 116, 116, 32, 8, 133, 20, 195, 182, 2, 2, 13,
-			0, 9, 198, 80, 17, 207, 104, 21, 0, 13, 6, 195, 85, 64, 83, 13, 7, 196, 4, 197, 68, 80, 13, 7, 196, 81, 81, 10, 4, 13,
-			9, 134, 14, 25, 1, 11, 195, 186, 13, 7, 196, 81, 81, 14, 36, 13, 0, 8, 197, 48, 84, 218, 20, 176, 72, 26, 5, 22, 195, 161,
-			12, 20, 84, 114, 55, 47, 23, 84, 39, 55, 50, 108, 0, 13, 81, 118, 111, 108, 110, 97, 32, 8, 197, 80, 81, 217, 20, 176, 13, 22,
-			133, 22, 195, 161, 12, 20, 13, 81, 104, 105, 118, 97, 116, 97, 108, 111, 115, 115, 195, 161, 32, 9, 134, 11, 195, 182, 26, 2, 5, 13,
-			8, 133, 22, 195, 161, 12, 20, 13, 0, 9, 198, 4, 176, 82, 41, 82, 192, 13, 0, 12, 137, 195, 179, 18, 195, 161, 11, 2, 1, 14,
-			13, 12, 137, 22, 9, 12, 195, 161, 7, 2, 1, 14, 13, 9, 134, 195, 182, 14, 14, 5, 11, 13, 6, 195, 32, 244, 16, 13, 10, 4,
-			95, 35, 45, 9, 109, 37, 0, 21, 0, 43, 68, 80, 17, 202, 4, 47, 108, 81, 57, 108, 23, 37, 91, 23, 76, 108, 47, 55, 108, 49,
-			39, 88, 37, 49, 0, 13, 82, 105, 115, 32, 99, 115, 97, 116, 108, 97, 107, 111, 122, 105, 107, 32, 7, 196, 80, 17, 202, 4, 13, 11,
-			200, 52, 243, 132, 32, 21, 10, 84, 176, 13, 0, 10, 135, 11, 195, 169, 18, 10, 5, 14, 13, 12, 137, 195, 169, 18, 4, 5, 11, 5,
-			12, 20, 13, 14, 139, 5, 12, 5, 13, 26, 197, 145, 11, 2, 5, 14, 13, 9, 134, 19, 195, 161, 22, 2, 1, 13, 12, 201, 28, 243,
-			132, 60, 192, 84, 80, 19, 0, 13, 15, 140, 20, 5, 19, 20, 195, 188, 12, 5, 20, 14, 5, 11, 13, 9, 134, 13, 195, 186, 12, 22,
-			1, 13, 8, 197, 88, 148, 211, 104, 16, 13, 0, 10, 135, 22, 9, 20, 195, 161, 10, 1, 13, 15, 140, 19, 26, 195, 182, 22, 5, 7,
-			5, 11, 2, 5, 14, 13, 42, 8, 6, 5, 12, 195, 169, 2, 5, 14, 83, 109, 55, 113, 71, 109, 50, 23, 114, 55, 107, 108, 47, 6,
-			15, 71, 6, 109, 0, 13, 82, 195, 161, 108, 108, 104, 97, 116, 32, 98, 101, 32, 0, 23, 7, 19, 26, 195, 179, 22, 1, 12, 89, 115,
-			84, 108, 55, 23, 108, 88, 0, 13, 81, 97, 122, 32, 16, 141, 11, 15, 14, 3, 5, 16, 3, 9, 195, 179, 2, 1, 14, 13, 10, 135,
-			19, 26, 195, 179, 22, 1, 12, 13, 16, 141, 8, 5, 12, 25, 19, 195, 169, 7, 5, 11, 2, 5, 14, 13, 10, 135, 19, 26, 195, 179,
-			22, 1, 12, 13, 7, 132, 1, 12, 195, 161, 13, 0, 31, 70, 77, 163, 198, 81, 97, 82, 89, 39, 83, 47, 84, 109, 52, 23, 50, 109,
-			84, 113, 47, 0, 13, 81, 110, 101, 118, 195, 169, 116, 32, 12, 137, 14, 1, 16, 20, 195, 161, 18, 2, 1, 13, 11, 200, 53, 85, 15,
-			28, 21, 10, 84, 176, 13, 11, 200, 24, 83, 11, 21, 33, 83, 56, 144, 13, 11, 200, 20, 193, 143, 28, 17, 20, 4, 176, 13, 0, 9,
-			134, 11, 5, 26, 4, 197, 145, 13, 0, 17, 142, 22, 195, 173, 22, 13, 195, 161, 14, 25, 1, 9, 22, 1, 12, 13, 19, 144, 10, 15,
-			7, 19, 26, 1, 2, 195, 161, 12, 25, 15, 11, 2, 1, 14, 13, 0, 14, 203, 57, 145, 82, 76, 19, 153, 4, 115, 203, 72, 16, 13,
-			10, 199, 24, 147, 13, 20, 178, 197, 48, 13, 10, 199, 77, 161, 82, 36, 229, 5, 52, 13, 9, 134, 20, 195, 173, 16, 21, 19, 13, 0,
-			12, 137, 11, 195, 182, 20, 5, 14, 4, 197, 145, 13, 11, 136, 6, 5, 8, 195, 169, 18, 5, 20, 13, 0, 13, 138, 6, 5, 12, 195,
-			188, 7, 25, 5, 12, 9, 13, 12, 201, 57, 146, 76, 5, 66, 207, 104, 245, 20, 13, 0, 13, 138, 22, 195, 169, 4, 5, 12, 13, 195,
-			169, 20, 13, 13, 138, 19, 26, 195, 161, 13, 12, 195, 161, 9, 20, 13, 9, 198, 4, 194, 207, 80, 245, 20, 13, 0, 0, 27, 68, 81,
-			81, 20, 4, 47, 40, 47, 12, 108, 6, 15, 84, 39, 55, 50, 108, 0, 13, 81, 118, 111, 108, 110, 97, 32, 47, 12, 11, 195, 169, 18,
-			4, 197, 145, 195, 173, 22, 5, 20, 49, 113, 52, 72, 118, 112, 84, 109, 47, 23, 49, 113, 89, 112, 47, 109, 50, 37, 0, 13, 81, 107,
-			195, 169, 115, 122, 195, 173, 116, 101, 110, 105, 32, 49, 12, 11, 195, 169, 18, 4, 197, 145, 195, 173, 22, 5, 20, 49, 113, 52, 72, 118,
-			112, 84, 109, 47, 23, 49, 113, 89, 112, 47, 109, 50, 109, 49, 0, 13, 81, 107, 195, 169, 115, 122, 195, 173, 116, 101, 110, 101, 107, 32,
-			9, 198, 12, 146, 204, 60, 229, 0, 13, 15, 140, 11, 195, 169, 18, 4, 197, 145, 195, 173, 22, 5, 20, 13, 7, 196, 81, 81, 20, 4,
-			13, 8, 133, 6, 5, 12, 195, 169, 13, 0, 8, 197, 48, 84, 218, 20, 192, 72, 9, 198, 24, 244, 132, 84, 195, 137, 13, 11, 136, 20,
-			1, 18, 20, 19, 195, 161, 11, 13, 24, 149, 195, 188, 7, 25, 6, 5, 12, 5, 11, 36, 21, 14, 19, 20, 18, 5, 19, 19, 5, 14,
-			4, 13, 9, 198, 24, 83, 20, 20, 227, 137, 13, 9, 198, 32, 83, 25, 21, 163, 137, 13, 9, 198, 24, 244, 132, 84, 195, 137, 13, 9,
-			198, 32, 83, 25, 21, 163, 137, 13, 13, 138, 19, 26, 1, 11, 195, 169, 18, 20, 197, 145, 13, 0, 36, 7, 5, 12, 14, 195, 182, 11,
-			9, 109, 55, 50, 110, 49, 37, 23, 48, 39, 89, 47, 52, 115, 55, 0, 13, 81, 112, 111, 115, 122, 116, 114, 195, 179, 108, 32, 27, 9,
-			2, 195, 161, 14, 20, 19, 195, 161, 11, 71, 114, 50, 76, 114, 49, 23, 118, 47, 0, 13, 81, 197, 145, 116, 32, 7, 132, 13, 195, 161,
-			10, 20, 0, 0, 13, 138, 195, 161, 12, 12, 1, 16, 15, 20, 195, 186, 13, 7, 196, 84, 118, 65, 56, 13, 23, 7, 195, 161, 19, 20,
-			195, 161, 11, 114, 91, 47, 114, 49, 23, 109, 55, 0, 13, 81, 101, 108, 32, 7, 196, 40, 241, 207, 44, 13, 0, 16, 141, 5, 7, 195,
-			169, 19, 26, 19, 195, 169, 7, 195, 169, 20, 13, 11, 136, 8, 195, 173, 22, 10, 195, 161, 11, 13, 38, 69, 12, 146, 204, 60, 224, 119,
-			37, 49, 55, 39, 50, 23, 47, 108, 55, 114, 55, 107, 108, 47, 115, 0, 13, 81, 116, 97, 108, 195, 161, 108, 104, 97, 116, 195, 179, 32,
-			13, 138, 11, 195, 169, 18, 4, 195, 169, 19, 5, 13, 13, 8, 197, 48, 81, 217, 20, 224, 13, 0, 12, 137, 11, 195, 173, 19, 195, 169,
-			18, 9, 11, 13, 17, 142, 5, 12, 8, 5, 12, 25, 5, 26, 195, 169, 19, 195, 169, 20, 13, 0, 16, 141, 5, 7, 25, 5, 26, 20,
-			5, 20, 195, 169, 19, 5, 14, 13, 16, 141, 5, 7, 25, 5, 26, 20, 5, 20, 195, 169, 19, 5, 14, 13, 36, 13, 5, 7, 25, 5,
-			26, 20, 5, 20, 195, 169, 19, 5, 14, 109, 79, 12, 109, 89, 47, 109, 47, 113, 91, 109, 50, 23, 37, 91, 0, 13, 81, 105, 115, 32,
-			13, 138, 10, 1, 22, 195, 173, 20, 10, 195, 161, 11, 13, 13, 138, 10, 1, 22, 195, 173, 20, 10, 195, 161, 11, 13, 0, 14, 139, 13,
-			15, 14, 4, 8, 1, 20, 14, 195, 161, 11, 13, 0, 9, 198, 24, 148, 148, 5, 69, 129, 13, 8, 197, 64, 144, 67, 61, 64, 13, 13,
-			138, 11, 195, 169, 18, 4, 195, 169, 19, 5, 9, 13, 0, 17, 142, 7, 25, 195, 179, 7, 25, 19, 26, 5, 18, 2, 197, 145, 12, 13,
-			16, 141, 20, 5, 12, 5, 16, 195, 188, 12, 195, 169, 19, 5, 11, 13, 0, 10, 135, 1, 12, 22, 195, 161, 19, 20, 13, 14, 139, 11,
-			195, 169, 18, 4, 195, 169, 19, 19, 5, 12, 13, 0, 7, 196, 40, 241, 207, 52, 13, 8, 133, 14, 197, 145, 14, 9, 13, 11, 136, 18,
-			195, 186, 7, 195, 161, 19, 20, 13, 0, 30, 10, 11, 1, 20, 5, 7, 195, 179, 18, 9, 1, 49, 108, 47, 109, 81, 115, 52, 37, 108,
-			23, 37, 91, 0, 13, 81, 105, 115, 32, 13, 138, 11, 1, 20, 5, 7, 195, 179, 18, 9, 1, 13, 19, 144, 20, 195, 161, 10, 195, 169,
-			11, 15, 26, 20, 1, 20, 20, 195, 161, 11, 13, 11, 136, 22, 15, 12, 14, 195, 161, 14, 11, 13, 0, 14, 139, 13, 5, 7, 7, 25,
-			197, 145, 26, 14, 9, 5, 13, 9, 198, 20, 194, 78, 17, 83, 20, 13, 13, 138, 5, 12, 10, 195, 161, 18, 195, 161, 19, 20, 13, 0,
-			13, 138, 8, 1, 19, 26, 14, 195, 161, 12, 195, 179, 13, 0, 9, 198, 40, 83, 5, 44, 85, 0, 13, 25, 68, 36, 198, 69, 56, 37,
-			57, 109, 50, 10, 6, 15, 71, 39, 55, 47, 0, 13, 81, 98, 111, 108, 116, 32, 31, 68, 60, 198, 65, 56, 39, 57, 108, 50, 10, 6,
-			15, 49, 113, 52, 72, 113, 91, 0, 13, 81, 107, 195, 169, 114, 100, 195, 169, 115, 32, 11, 136, 19, 20, 18, 195, 161, 6, 15, 20, 13,
-			23, 68, 36, 198, 69, 56, 37, 57, 109, 50, 15, 89, 113, 48, 0, 13, 81, 115, 122, 195, 169, 112, 32, 9, 134, 22, 195, 169, 7, 5,
-			26, 13, 7, 196, 60, 198, 65, 56, 13, 13, 4, 95, 49, 17, 24, 109, 55, 91, 109, 57, 109, 0, 0, 27, 69, 57, 146, 84, 56, 144,
-			67, 37, 47, 50, 37, 23, 108, 49, 12, 39, 52, 0, 13, 81, 97, 107, 107, 111, 114, 32, 8, 197, 57, 146, 84, 40, 16, 13, 8, 197,
-			88, 84, 218, 20, 208, 13, 43, 12, 11, 9, 19, 26, 15, 12, 7, 195, 161, 12, 195, 179, 49, 37, 89, 39, 55, 81, 114, 55, 115, 23,
-			57, 114, 52, 108, 47, 108, 37, 0, 13, 81, 106, 195, 161, 114, 97, 116, 97, 105, 32, 15, 140, 11, 9, 19, 26, 15, 12, 7, 195, 161,
-			12, 195, 179, 13, 0, 11, 136, 195, 188, 12, 195, 169, 19, 5, 14, 13, 8, 133, 4, 9, 195, 161, 11, 13, 9, 198, 16, 243, 7, 84,
-			176, 84, 13, 0, 12, 137, 12, 1, 11, 195, 161, 19, 2, 1, 14, 13, 29, 6, 13, 195, 161, 19, 9, 11, 65, 114, 91, 37, 49, 10,
-			6, 15, 47, 113, 65, 108, 0, 13, 81, 116, 195, 169, 109, 97, 32, 10, 199, 77, 160, 75, 61, 37, 143, 76, 13, 0, 40, 6, 18, 195,
-			169, 7, 5, 14, 52, 113, 81, 109, 50, 23, 49, 37, 47, 108, 55, 114, 55, 47, 114, 49, 0, 13, 81, 107, 105, 116, 97, 108, 195, 161,
-			108, 116, 195, 161, 107, 32, 13, 138, 195, 182, 19, 19, 26, 5, 7, 2, 5, 14, 13, 41, 68, 40, 241, 210, 4, 57, 39, 81, 52, 108,
-			23, 84, 114, 55, 47, 39, 89, 47, 108, 47, 39, 47, 12, 0, 13, 81, 118, 195, 161, 108, 116, 111, 122, 116, 97, 116, 111, 116, 116, 32,
-			11, 136, 5, 26, 5, 12, 197, 145, 20, 20, 13, 11, 200, 88, 148, 197, 48, 177, 68, 36, 176, 13, 11, 200, 88, 148, 197, 48, 177, 68,
-			36, 176, 13, 8, 133, 195, 173, 18, 10, 1, 13, 7, 196, 4, 67, 212, 80, 13, 0, 11, 136, 22, 195, 161, 18, 10, 195, 161, 11, 13,
-			13, 138, 13, 195, 169, 18, 14, 195, 182, 11, 5, 9, 13, 8, 197, 72, 82, 140, 36, 176, 13, 12, 137, 13, 9, 12, 12, 9, 195, 161,
-			18, 4, 13, 35, 9, 13, 9, 12, 12, 9, 195, 161, 18, 4, 65, 37, 55, 37, 114, 52, 72, 23, 83, 39, 52, 37, 50, 47, 0, 13,
-			81, 102, 111, 114, 105, 110, 116, 32, 8, 197, 52, 144, 84, 80, 16, 13, 8, 197, 81, 81, 10, 84, 176, 13, 8, 197, 44, 86, 132, 80,
-			80, 13, 8, 197, 52, 243, 132, 40, 16, 13, 0, 14, 139, 7, 25, 195, 179, 7, 25, 20, 15, 18, 14, 1, 13, 52, 8, 195, 161, 7,
-			195, 161, 2, 1, 14, 114, 81, 114, 71, 108, 50, 15, 91, 37, 50, 76, 15, 55, 109, 76, 109, 52, 113, 55, 50, 37, 0, 13, 82, 115,
-			105, 110, 99, 115, 32, 108, 101, 99, 115, 101, 114, 195, 169, 108, 110, 105, 32, 7, 132, 11, 195, 161, 18, 13, 12, 4, 13, 195, 161, 22,
-			65, 114, 84, 0, 42, 42, 0, 12, 137, 13, 21, 14, 11, 195, 161, 2, 1, 14, 13, 14, 139, 20, 5, 12, 5, 6, 15, 14, 195, 161,
-			12, 20, 13, 12, 137, 12, 9, 19, 20, 195, 161, 2, 1, 14, 13, 17, 142, 6, 15, 18, 18, 195, 161, 19, 11, 195, 179, 4, 14, 1,
-			11, 13, 7, 132, 5, 12, 197, 145, 13, 7, 132, 5, 12, 197, 145, 13, 0, 13, 138, 9, 19, 11, 15, 12, 195, 161, 2, 1, 14, 13,
-			7, 132, 19, 195, 173, 16, 13, 0, 11, 136, 20, 5, 19, 19, 26, 195, 188, 11, 13, 31, 11, 195, 182, 14, 13, 1, 7, 195, 161, 2,
-			1, 14, 110, 50, 65, 108, 81, 114, 71, 108, 50, 23, 108, 88, 0, 13, 81, 97, 122, 32, 49, 4, 13, 195, 161, 19, 65, 114, 91, 23,
-			89, 109, 65, 55, 113, 55, 109, 47, 109, 47, 23, 49, 110, 84, 109, 47, 0, 13, 82, 115, 122, 101, 109, 108, 195, 169, 108, 101, 116, 101,
-			116, 32, 107, 195, 182, 118, 101, 116, 32, 20, 4, 13, 195, 161, 19, 65, 114, 91, 23, 91, 109, 65, 0, 13, 81, 115, 101, 109, 32, 27,
-			4, 13, 195, 161, 19, 65, 114, 91, 23, 81, 113, 48, 12, 109, 55, 0, 13, 81, 103, 195, 169, 112, 112, 101, 108, 32, 14, 139, 195, 169,
-			18, 4, 5, 11, 195, 169, 2, 5, 14, 13, 14, 139, 195, 169, 18, 4, 5, 11, 195, 169, 2, 5, 14, 13, 7, 132, 13, 195, 161, 19,
-			13, 0, 25, 4, 13, 195, 161, 18, 65, 114, 52, 10, 6, 15, 108, 48, 52, 115, 0, 13, 81, 97, 112, 114, 195, 179, 32, 32, 4, 13,
-			195, 161, 18, 65, 114, 52, 10, 6, 15, 109, 55, 113, 52, 47, 113, 49, 0, 13, 81, 101, 108, 195, 169, 114, 116, 195, 169, 107, 32, 50,
-			4, 13, 195, 161, 18, 65, 114, 52, 10, 6, 15, 49, 109, 84, 113, 91, 71, 113, 10, 6, 15, 107, 108, 55, 12, 108, 50, 37, 0, 13,
-			82, 107, 101, 118, 195, 169, 115, 98, 195, 169, 32, 104, 97, 108, 108, 97, 110, 105, 32, 35, 4, 13, 195, 161, 18, 65, 114, 52, 23, 55,
-			109, 107, 109, 76, 12, 113, 81, 109, 91, 0, 13, 81, 108, 101, 104, 101, 116, 115, 195, 169, 103, 101, 115, 32, 33, 4, 13, 195, 161, 18,
-			65, 114, 52, 23, 65, 109, 81, 89, 39, 49, 39, 47, 12, 0, 13, 81, 109, 101, 103, 115, 122, 111, 107, 111, 116, 116, 32, 28, 6, 2,
-			5, 12, 195, 188, 12, 71, 109, 55, 111, 55, 23, 65, 108, 52, 108, 72, 0, 13, 81, 109, 97, 114, 97, 100, 32, 33, 4, 13, 195, 161,
-			18, 65, 114, 52, 23, 49, 39, 52, 114, 71, 52, 115, 55, 0, 13, 81, 107, 111, 114, 195, 161, 98, 98, 114, 195, 179, 108, 32, 24, 4,
-			13, 195, 161, 18, 65, 114, 52, 15, 91, 39, 49, 108, 47, 0, 13, 81, 115, 111, 107, 97, 116, 32, 9, 134, 6, 5, 12, 195, 188, 12,
-			13, 13, 138, 2, 5, 12, 5, 19, 26, 195, 179, 12, 20, 13, 9, 134, 2, 5, 12, 195, 188, 12, 13, 17, 142, 13, 197, 177, 11, 195,
-			182, 4, 195, 169, 19, 18, 197, 145, 12, 13, 7, 132, 13, 195, 161, 18, 13, 0, 18, 143, 2, 195, 182, 14, 7, 195, 169, 19, 26, 197,
-			145, 2, 197, 145, 12, 13, 10, 199, 13, 51, 206, 80, 242, 193, 80, 13, 0, 12, 137, 22, 5, 19, 26, 197, 145, 4, 14, 9, 13, 19,
-			144, 11, 195, 169, 19, 26, 195, 173, 20, 195, 169, 19, 195, 169, 22, 5, 12, 13, 11, 136, 11, 195, 182, 14, 25, 22, 5, 20, 13, 11,
-			136, 20, 195, 161, 13, 15, 7, 1, 20, 13, 16, 141, 6, 18, 1, 11, 3, 9, 195, 179, 10, 195, 161, 18, 1, 13, 7, 196, 53, 85,
-			1, 80, 13, 0, 9, 134, 12, 195, 169, 16, 14, 9, 13, 8, 133, 19, 26, 195, 188, 12, 13, 0, 25, 70, 32, 19, 135, 104, 245, 20,
-			107, 108, 50, 81, 88, 39, 47, 12, 23, 109, 55, 0, 13, 81, 101, 108, 32, 27, 70, 32, 19, 135, 104, 245, 20, 107, 108, 50, 81, 88,
-			39, 47, 12, 10, 6, 15, 109, 55, 0, 13, 81, 101, 108, 32, 9, 198, 77, 161, 76, 48, 83, 64, 13, 41, 7, 12, 1, 11, 195, 161,
-			19, 1, 55, 108, 49, 114, 91, 108, 23, 79, 40, 55, 12, 108, 47, 12, 23, 49, 37, 0, 13, 82, 103, 121, 117, 108, 108, 97, 100, 116,
-			32, 107, 105, 32, 10, 135, 5, 12, 14, 195, 182, 11, 5, 13, 23, 6, 22, 195, 169, 7, 5, 20, 84, 113, 81, 109, 47, 23, 113, 52,
-			0, 13, 81, 195, 169, 114, 32, 13, 138, 2, 1, 18, 195, 161, 20, 10, 195, 161, 20, 13, 9, 134, 22, 195, 169, 7, 5, 20, 13, 11,
-			136, 15, 11, 20, 195, 179, 2, 5, 18, 20, 0, 32, 67, 4, 210, 84, 108, 65, 37, 47, 23, 107, 108, 89, 50, 114, 55, 39, 49, 0,
-			13, 81, 104, 97, 115, 122, 110, 195, 161, 108, 111, 107, 32, 18, 143, 8, 1, 10, 12, 195, 169, 11, 20, 1, 12, 1, 14, 14, 1, 12,
-			13, 11, 136, 19, 26, 1, 2, 195, 161, 12, 25, 13, 14, 67, 16, 228, 192, 72, 113, 109, 50, 109, 91, 0, 42, 42, 0, 11, 136, 14,
-			195, 169, 26, 5, 7, 5, 20, 13, 11, 136, 13, 195, 179, 4, 10, 195, 161, 20, 13, 0, 13, 138, 20, 195, 161, 13, 15, 7, 1, 20,
-			14, 9, 13, 11, 136, 20, 195, 182, 13, 5, 7, 5, 11, 13, 9, 198, 44, 81, 22, 20, 224, 197, 13, 12, 137, 16, 195, 161, 18, 20,
-			10, 195, 161, 20, 13, 11, 136, 19, 26, 197, 177, 18, 197, 145, 11, 13, 8, 133, 22, 195, 161, 18, 20, 13, 0, 10, 135, 13, 195, 169,
-			4, 9, 21, 13, 13, 12, 137, 13, 21, 20, 1, 20, 10, 195, 161, 11, 13, 9, 198, 4, 192, 80, 40, 18, 84, 13, 0, 14, 139, 4,
-			195, 182, 14, 20, 195, 169, 19, 195, 169, 20, 13, 10, 199, 65, 35, 196, 84, 49, 82, 20, 13, 18, 143, 8, 1, 19, 15, 14, 12, 195,
-			173, 20, 7, 1, 20, 14, 15, 4, 13, 0, 16, 141, 11, 15, 18, 12, 195, 161, 20, 15, 26, 195, 161, 19, 1, 13, 14, 139, 22, 195,
-			161, 18, 8, 1, 20, 195, 179, 1, 11, 13, 14, 139, 12, 195, 161, 20, 8, 1, 20, 195, 179, 1, 11, 13, 10, 135, 195, 173, 18, 14,
-			195, 161, 11, 13, 11, 200, 32, 83, 25, 104, 85, 2, 20, 224, 13, 0, 15, 140, 20, 195, 161, 13, 15, 7, 1, 20, 14, 195, 161, 11,
-			13, 15, 140, 15, 12, 22, 1, 19, 8, 1, 20, 10, 195, 161, 11, 13, 16, 141, 6, 5, 12, 5, 12, 197, 145, 19, 195, 169, 7, 5,
-			20, 13, 14, 139, 22, 1, 19, 195, 161, 18, 14, 1, 16, 15, 14, 22, 0, 60, 14, 10, 5, 12, 5, 14, 20, 197, 145, 19, 195, 169,
-			7, 5, 20, 57, 109, 55, 109, 50, 47, 118, 91, 113, 81, 109, 47, 23, 47, 40, 55, 108, 57, 72, 39, 50, 112, 47, 108, 50, 37, 0,
-			13, 81, 116, 117, 108, 97, 106, 100, 111, 110, 195, 173, 116, 97, 110, 105, 32, 33, 11, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 13,
-			48, 52, 39, 71, 55, 113, 65, 114, 65, 23, 84, 108, 50, 0, 13, 81, 118, 97, 110, 32, 16, 141, 19, 26, 195, 182, 22, 5, 20, 19,
-			195, 169, 7, 5, 11, 13, 42, 8, 1, 12, 1, 16, 10, 195, 161, 14, 108, 55, 108, 48, 57, 114, 50, 23, 112, 47, 113, 55, 49, 109,
-			88, 109, 55, 0, 13, 81, 195, 173, 116, 195, 169, 108, 107, 101, 122, 101, 108, 32, 37, 11, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161,
-			13, 48, 52, 39, 71, 55, 113, 65, 114, 65, 15, 108, 49, 108, 47, 12, 0, 13, 81, 97, 107, 97, 100, 116, 32, 16, 141, 20, 1, 12,
-			195, 161, 12, 8, 1, 20, 195, 179, 1, 11, 13, 11, 136, 1, 12, 1, 16, 10, 195, 161, 14, 13, 0, 12, 137, 6, 9, 26, 9, 11,
-			21, 13, 195, 186, 13, 13, 138, 2, 15, 18, 195, 173, 20, 10, 195, 161, 11, 13, 18, 143, 5, 12, 12, 5, 14, 197, 145, 18, 26, 195,
-			169, 19, 195, 169, 20, 13, 0, 14, 139, 16, 18, 15, 2, 12, 195, 169, 13, 195, 161, 11, 13, 19, 144, 11, 9, 20, 5, 18, 10, 5,
-			19, 26, 20, 195, 169, 19, 195, 169, 20, 13, 7, 196, 40, 241, 207, 80, 13, 7, 196, 40, 241, 207, 80, 13, 0, 8, 197, 88, 242, 211,
-			61, 64, 13, 15, 140, 6, 5, 12, 12, 195, 169, 16, 195, 169, 19, 5, 11, 13, 0, 0, 12, 201, 52, 81, 212, 20, 129, 84, 21, 69,
-			0, 13, 11, 136, 11, 9, 10, 195, 182, 14, 14, 9, 13, 15, 67, 4, 68, 204, 114, 72, 113, 109, 91, 109, 55, 0, 42, 42, 0, 41,
-			70, 24, 82, 140, 21, 69, 0, 83, 109, 57, 55, 109, 47, 12, 10, 6, 15, 48, 52, 39, 119, 109, 89, 12, 39, 52, 0, 13, 81, 112,
-			114, 111, 99, 101, 115, 115, 122, 111, 114, 32, 49, 11, 20, 1, 14, 195, 173, 20, 1, 14, 4, 195, 179, 47, 108, 50, 112, 47, 108, 50,
-			72, 115, 23, 37, 91, 65, 109, 52, 109, 47, 109, 49, 109, 47, 0, 13, 81, 105, 115, 109, 101, 114, 101, 116, 101, 107, 101, 116, 32, 17,
-			142, 13, 5, 7, 2, 195, 173, 26, 8, 1, 20, 195, 179, 1, 14, 13, 11, 200, 32, 243, 20, 80, 84, 212, 21, 64, 13, 14, 139, 9,
-			14, 20, 15, 14, 195, 161, 3, 9, 195, 179, 13, 14, 139, 22, 1, 19, 195, 161, 18, 14, 1, 16, 9, 7, 22, 0, 8, 197, 56, 17,
-			217, 61, 64, 13, 13, 138, 20, 195, 182, 18, 197, 145, 4, 14, 9, 5, 13, 16, 141, 16, 18, 9, 15, 18, 9, 20, 195, 161, 19, 19,
-			1, 12, 13, 0, 13, 138, 20, 21, 4, 8, 1, 20, 14, 195, 161, 4, 13, 17, 142, 20, 195, 161, 13, 15, 7, 1, 20, 195, 161, 19,
-			19, 1, 12, 13, 17, 142, 1, 12, 11, 1, 12, 13, 1, 26, 195, 161, 19, 19, 1, 12, 13, 12, 137, 7, 1, 26, 4, 1, 19, 195,
-			161, 7, 13, 13, 138, 5, 12, 12, 195, 161, 20, 195, 161, 19, 20, 13, 0, 23, 7, 11, 195, 182, 18, 195, 188, 12, 49, 110, 52, 111,
-			55, 23, 37, 91, 0, 13, 81, 105, 115, 32, 13, 138, 6, 195, 161, 18, 1, 19, 26, 20, 195, 179, 13, 17, 142, 18, 5, 7, 9, 19,
-			26, 20, 18, 195, 161, 3, 9, 195, 179, 13, 13, 138, 1, 14, 9, 13, 195, 161, 3, 9, 195, 179, 13, 14, 139, 195, 161, 20, 195, 161,
-			12, 12, 195, 161, 19, 20, 13, 12, 135, 11, 195, 182, 18, 195, 188, 12, 13, 20, 22, 0, 52, 12, 20, 195, 161, 13, 15, 7, 1, 20,
-			195, 161, 19, 20, 47, 114, 65, 39, 81, 108, 47, 114, 91, 47, 23, 71, 37, 89, 47, 39, 91, 112, 47, 108, 50, 37, 0, 13, 81, 98,
-			105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 105, 32, 15, 140, 1, 12, 11, 1, 12, 13, 1, 26, 195, 161, 19, 20, 13, 15, 140, 20,
-			195, 161, 13, 15, 7, 1, 20, 195, 161, 19, 20, 13, 11, 136, 11, 195, 169, 19, 26, 195, 188, 12, 13, 15, 140, 7, 25, 15, 18, 19,
-			195, 173, 20, 195, 161, 19, 20, 13, 11, 136, 11, 195, 169, 19, 26, 195, 188, 12, 13, 0, 8, 197, 88, 19, 12, 88, 16, 13, 10, 135,
-			9, 18, 15, 4, 195, 161, 14, 13, 16, 141, 19, 26, 9, 7, 15, 18, 195, 173, 20, 195, 161, 19, 20, 13, 8, 197, 24, 241, 202, 84,
-			176, 13, 16, 141, 13, 5, 7, 2, 195, 173, 26, 1, 20, 195, 161, 19, 20, 13, 8, 197, 20, 192, 68, 56, 144, 13, 15, 140, 9, 14,
-			6, 15, 18, 13, 195, 161, 3, 9, 195, 179, 13, 8, 133, 14, 197, 145, 20, 20, 13, 0, 9, 198, 88, 243, 20, 84, 226, 192, 72, 30,
-			6, 5, 12, 197, 145, 20, 20, 109, 55, 118, 47, 12, 23, 49, 110, 88, 110, 55, 0, 13, 81, 107, 195, 182, 122, 195, 182, 108, 32, 39,
-			6, 5, 12, 197, 145, 20, 20, 109, 55, 118, 47, 12, 23, 48, 40, 71, 55, 37, 49, 114, 55, 47, 108, 0, 13, 81, 112, 117, 98, 108,
-			105, 107, 195, 161, 108, 116, 97, 32, 8, 133, 195, 173, 18, 15, 11, 13, 17, 142, 19, 26, 1, 2, 195, 161, 12, 25, 15, 26, 195, 161,
-			19, 20, 13, 17, 142, 20, 1, 18, 20, 195, 179, 26, 11, 15, 4, 195, 161, 19, 20, 13, 17, 142, 10, 1, 22, 1, 4, 1, 12, 13,
-			1, 26, 195, 161, 19, 20, 13, 12, 137, 15, 12, 22, 1, 19, 19, 195, 161, 11, 13, 11, 136, 19, 26, 5, 18, 4, 195, 161, 14, 22,
-			11, 134, 5, 12, 197, 145, 20, 20, 20, 22, 13, 0, 18, 143, 13, 5, 7, 195, 161, 12, 12, 1, 16, 15, 4, 195, 161, 19, 20, 13,
-			17, 142, 11, 15, 14, 6, 9, 7, 21, 18, 195, 161, 3, 9, 195, 179, 13, 18, 143, 14, 25, 9, 12, 22, 195, 161, 14, 195, 173, 20,
-			195, 161, 19, 20, 13, 0, 14, 139, 8, 1, 12, 12, 7, 1, 20, 20, 195, 161, 11, 13, 30, 68, 52, 144, 84, 80, 65, 37, 108, 47,
-			12, 23, 84, 108, 50, 23, 112, 79, 0, 13, 82, 118, 97, 110, 32, 195, 173, 103, 121, 32, 11, 200, 53, 83, 139, 4, 145, 5, 40, 80,
-			13, 43, 7, 6, 15, 7, 10, 195, 161, 11, 83, 39, 81, 57, 114, 49, 23, 109, 55, 12, 109, 50, 118, 52, 37, 88, 50, 37, 0, 13,
-			81, 101, 108, 108, 101, 110, 197, 145, 114, 105, 122, 110, 105, 32, 34, 68, 52, 144, 84, 80, 65, 6, 37, 108, 47, 12, 15, 67, 39, 65,
-			39, 88, 50, 108, 49, 0, 13, 81, 110, 121, 111, 109, 111, 122, 110, 97, 107, 32, 38, 68, 52, 144, 84, 80, 65, 37, 108, 47, 12, 23,
-			47, 37, 55, 47, 108, 49, 39, 88, 50, 108, 49, 0, 13, 81, 116, 105, 108, 116, 97, 107, 111, 122, 110, 97, 107, 32, 11, 200, 32, 17,
-			19, 21, 33, 71, 8, 80, 13, 12, 137, 11, 195, 182, 12, 20, 197, 145, 18, 5, 13, 10, 135, 6, 15, 7, 10, 195, 161, 11, 13, 10,
-			135, 195, 173, 18, 10, 195, 161, 11, 13, 7, 196, 52, 144, 84, 80, 13, 0, 15, 140, 11, 195, 169, 16, 5, 19, 19, 195, 169, 7, 5,
-			11, 13, 30, 8, 13, 195, 161, 19, 15, 4, 9, 11, 65, 114, 91, 39, 72, 37, 49, 23, 109, 55, 109, 65, 0, 13, 81, 101, 108, 101,
-			109, 32, 8, 197, 52, 240, 211, 60, 176, 13, 11, 136, 11, 195, 169, 16, 5, 19, 5, 11, 13, 15, 140, 11, 195, 169, 16, 22, 9, 19,
-			5, 12, 197, 145, 11, 13, 10, 135, 195, 161, 12, 12, 10, 15, 14, 13, 0, 16, 141, 2, 9, 26, 15, 14, 25, 195, 173, 20, 10, 195,
-			161, 11, 13, 35, 70, 81, 81, 10, 84, 226, 192, 47, 40, 79, 12, 40, 50, 49, 23, 47, 110, 55, 47, 109, 50, 37, 0, 13, 81, 116,
-			195, 182, 108, 116, 101, 110, 105, 32, 11, 136, 11, 1, 16, 3, 19, 195, 161, 14, 13, 13, 7, 95, 35, 45, 195, 161, 18, 1, 114, 52,
-			108, 0, 0, 10, 135, 19, 16, 195, 179, 18, 15, 12, 13, 13, 138, 19, 26, 195, 179, 18, 195, 179, 4, 9, 11, 13, 11, 136, 9, 18,
-			15, 4, 195, 161, 18, 1, 13, 11, 136, 13, 1, 16, 16, 195, 161, 18, 1, 13, 16, 141, 6, 5, 10, 12, 5, 19, 26, 20, 195, 169,
-			19, 5, 14, 13, 13, 138, 20, 21, 4, 8, 1, 20, 10, 195, 161, 11, 13, 0, 11, 200, 52, 81, 214, 21, 54, 142, 20, 176, 13, 7,
-			196, 36, 198, 69, 80, 13, 14, 139, 10, 5, 12, 5, 14, 20, 195, 169, 19, 5, 11, 13, 15, 140, 6, 5, 12, 195, 188, 12, 5, 20,
-			18, 197, 145, 12, 13, 0, 6, 20, 244, 0, 0, 0, 81, 1, 0, 0, 251, 0, 0, 0, 113, 1, 0, 0, 0, 0, 0, 0, 6, 18,
-			66, 98, 0, 99, 0, 100, 0, 102, 0, 103, 0, 104, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 112, 0, 115, 0, 116, 0, 114,
-			0, 118, 0, 119, 0, 122, 0, 7, 6, 99, 104, 0, 4, 1, 169, 195, 122, 115, 3, 76, 0, 8, 105, 122, 2, 121, 0, 4, 101, 8,
-			169, 195, 122, 115, 2, 110, 121, 3, 76, 113, 0, 195, 169, 8, 169, 195, 122, 115, 2, 110, 121, 0, 1, 110, 188, 195, 109, 2, 101, 110,
-			3, 99, 0, 4, 1, 97, 99, 114, 97, 2, 111, 110, 3, 107, 0, 1, 97, 100, 108, 97, 98, 2, 105, 110, 0, 1, 97, 106, 2, 116,
-			0, 1, 97, 109, 2, 105, 97, 118, 101, 108, 108, 0, 1, 97, 109, 2, 105, 110, 195, 161, 0, 1, 97, 110, 97, 109, 108, 97, 0, 1,
-			101, 109, 2, 97, 0, 1, 101, 116, 0, 1, 105, 116, 122, 115, 105, 100, 2, 111, 110, 0, 1, 105, 116, 122, 115, 111, 110, 111, 114, 107,
-			2, 111, 110, 0, 1, 105, 122, 115, 112, 0, 1, 111, 115, 97, 109, 2, 105, 115, 116, 17, 65, 0, 1, 111, 122, 97, 109, 2, 105, 115,
-			0, 1, 111, 122, 97, 109, 2, 105, 122, 109, 0, 1, 114, 97, 2, 97, 105, 107, 117, 115, 0, 1, 114, 97, 2, 105, 116, 101, 107, 116,
-			195, 186, 0, 1, 114, 97, 2, 105, 118, 195, 161, 108, 0, 1, 114, 97, 2, 195, 173, 118, 0, 1, 114, 97, 103, 105, 108, 111, 0, 1,
-			114, 97, 110, 97, 2, 105, 0, 1, 114, 97, 110, 111, 109, 2, 105, 0, 1, 114, 97, 114, 101, 105, 104, 2, 105, 0, 1, 114, 111, 2,
-			195, 173, 100, 101, 97, 0, 1, 121, 122, 115, 112, 0, 8, 114, 97, 2, 105, 109, 195, 169, 0, 8, 114, 111, 2, 105, 100, 101, 0, 4,
-			1, 101, 99, 2, 101, 116, 3, 107, 12, 0, 1, 101, 112, 103, 101, 108, 2, 101, 115, 0, 1, 105, 114, 116, 115, 2, 101, 108, 0, 8,
-			101, 112, 0, 7, 6, 100, 122, 0, 4, 1, 97, 122, 161, 195, 122, 115, 2, 101, 110, 101, 3, 72, 88, 0, 1, 101, 114, 122, 101, 2,
-			101, 110, 101, 0, 1, 103, 97, 114, 97, 109, 115, 2, 195, 182, 108, 100, 0, 1, 169, 195, 118, 110, 111, 104, 2, 195, 161, 115, 122, 108,
-			195, 179, 0, 1, 169, 195, 122, 115, 101, 98, 2, 97, 118, 97, 114, 0, 4, 115, 3, 75, 0, 115, 1, 17, 67, 0, 115, 1, 97, 2,
-			17, 65, 0, 115, 2, 17, 67, 0, 4, 115, 1, 97, 114, 97, 104, 97, 109, 2, 17, 65, 3, 75, 12, 0, 115, 1, 101, 110, 101, 109,
-			2, 17, 65, 0, 115, 1, 105, 114, 98, 2, 17, 65, 0, 115, 5, 1, 1, 111, 98, 109, 97, 107, 2, 17, 65, 0, 115, 8, 111, 100,
-			2, 17, 65, 0, 4, 1, 145, 197, 108, 101, 100, 101, 122, 115, 3, 88, 0, 1, 145, 197, 108, 101, 116, 101, 118, 182, 195, 107, 0, 1,
-			145, 197, 114, 169, 195, 107, 0, 1, 145, 197, 116, 101, 103, 101, 116, 110, 101, 109, 0, 1, 145, 197, 116, 101, 103, 101, 121, 110, 101, 102,
-			0, 1, 177, 197, 114, 177, 197, 121, 103, 2, 105, 107, 0, 1, 179, 195, 103, 111, 102, 2, 195, 179, 0, 1, 179, 195, 108, 108, 105, 118,
-			0, 1, 179, 195, 108, 111, 107, 114, 117, 98, 0, 1, 179, 195, 108, 111, 107, 116, 105, 116, 0, 1, 179, 195, 108, 161, 195, 98, 109, 105,
-			104, 0, 1, 179, 195, 108, 161, 195, 98, 111, 100, 0, 1, 179, 195, 108, 161, 195, 112, 97, 107, 0, 1, 179, 195, 112, 97, 114, 97, 104,
-			0, 1, 179, 195, 112, 111, 108, 0, 1, 179, 195, 114, 97, 107, 97, 0, 1, 179, 195, 115, 114, 111, 98, 0, 1, 179, 195, 116, 97, 103,
-			108, 108, 97, 104, 0, 1, 179, 195, 116, 97, 103, 110, 105, 114, 0, 1, 179, 195, 116, 97, 103, 110, 161, 195, 114, 0, 1, 179, 195, 116,
-			97, 103, 111, 112, 97, 116, 0, 1, 145, 197, 108, 101, 100, 101, 122, 115, 2, 107, 195, 182, 3, 89, 0, 4, 1, 101, 114, 169, 195, 107,
-			3, 119, 0, 1, 101, 114, 169, 195, 109, 2, 107, 0, 1, 179, 195, 2, 107, 111, 100, 0, 1, 179, 195, 103, 111, 102, 2, 107, 111, 100,
-			0, 1, 179, 195, 122, 186, 195, 104, 0, 8, 179, 195, 2, 107, 111, 0, 4, 3, 120, 12, 0, 0, 1, 17, 65, 2, 17, 65, 0, 1,
-			101, 2, 195, 169, 115, 0, 1, 101, 2, 197, 145, 0, 7, 6, 103, 121, 0, 115, 3, 76, 0, 115, 1, 17, 65, 2, 17, 65, 3, 76,
-			12, 0, 4, 3, 79, 0, 1, 97, 2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 97, 2, 115, 101, 106, 0, 1, 97, 2, 115, 195, 169,
-			114, 195, 188, 108, 0, 1, 97, 102, 2, 115, 195, 169, 114, 195, 188, 108, 0, 1, 97, 110, 2, 115, 97, 108, 108, 195, 179, 0, 1, 97,
-			110, 2, 115, 97, 114, 108, 195, 179, 0, 1, 97, 110, 2, 115, 101, 98, 101, 115, 0, 1, 97, 110, 2, 115, 105, 101, 116, 0, 1, 97,
-			110, 2, 115, 105, 107, 101, 114, 0, 1, 97, 110, 2, 115, 111, 107, 195, 161, 114, 97, 0, 1, 97, 110, 2, 115, 116, 114, 97, 116, 195,
-			169, 103, 105, 97, 0, 1, 97, 110, 2, 115, 116, 195, 173, 108, 0, 1, 97, 110, 2, 115, 195, 161, 103, 0, 1, 97, 110, 2, 115, 195,
-			161, 112, 0, 1, 101, 2, 101, 115, 45, 101, 103, 121, 101, 100, 195, 188, 108, 0, 1, 101, 2, 106, 101, 103, 121, 197, 177, 0, 1, 101,
-			2, 106, 101, 108, 101, 110, 116, 195, 169, 115, 197, 177, 0, 1, 101, 2, 115, 97, 114, 107, 195, 186, 0, 1, 101, 2, 115, 101, 106, 116,
-			197, 177, 0, 1, 101, 2, 115, 111, 114, 0, 1, 101, 2, 115, 195, 173, 110, 197, 177, 0, 1, 101, 104, 2, 115, 195, 169, 103, 0, 1,
-			101, 106, 2, 101, 110, 107, 195, 169, 110, 116, 0, 1, 101, 106, 2, 101, 122, 116, 101, 0, 1, 101, 106, 2, 195, 169, 114, 116, 0, 1,
-			101, 106, 100, 169, 195, 118, 2, 115, 116, 114, 97, 116, 195, 169, 0, 1, 110, 182, 195, 121, 103, 2, 115, 111, 114, 0, 1, 111, 104, 2,
+			47, 0, 11, 82, 97, 32, 104, 97, 103, 121, 111, 109, 195, 161, 110, 121, 116, 32, 9, 198, 46, 132, 170, 80, 243, 128, 11, 36, 67, 5,
+			165, 0, 108, 89, 47, 23, 47, 108, 48, 108, 89, 47, 108, 55, 47, 108, 65, 0, 11, 81, 116, 97, 112, 97, 115, 122, 116, 97, 108, 116,
+			97, 109, 32, 37, 67, 5, 165, 0, 108, 89, 47, 23, 47, 108, 50, 114, 76, 39, 57, 57, 57, 114, 49, 0, 11, 81, 116, 97, 110, 195,
+			161, 99, 115, 111, 108, 106, 195, 161, 107, 32, 56, 67, 5, 165, 0, 108, 89, 47, 23, 49, 113, 52, 47, 109, 23, 108, 88, 23, 114, 55,
+			12, 108, 65, 47, 37, 47, 49, 114, 52, 0, 11, 83, 107, 195, 169, 114, 116, 101, 32, 97, 122, 32, 195, 161, 108, 108, 97, 109, 116, 105,
+			116, 107, 195, 161, 114, 32, 11, 200, 24, 241, 207, 73, 99, 211, 60, 208, 11, 14, 195, 5, 165, 0, 11, 81, 108, 195, 161, 116, 110, 105,
+			32, 10, 195, 5, 165, 0, 11, 81, 105, 115, 32, 6, 195, 5, 165, 0, 11, 10, 199, 77, 163, 205, 8, 21, 15, 56, 17, 0, 0, 33,
+			70, 44, 244, 141, 112, 230, 64, 49, 39, 52, 65, 114, 67, 23, 49, 110, 88, 110, 47, 12, 0, 11, 81, 107, 195, 182, 122, 195, 182, 116,
+			116, 32, 12, 201, 56, 85, 133, 48, 177, 68, 21, 69, 0, 11, 12, 201, 44, 243, 131, 21, 0, 201, 156, 32, 78, 11, 14, 203, 44, 243,
+			131, 21, 0, 201, 156, 167, 18, 156, 192, 11, 9, 198, 20, 194, 156, 72, 226, 64, 11, 9, 198, 46, 179, 4, 20, 226, 64, 11, 0, 29,
+			68, 77, 169, 204, 156, 89, 115, 55, 115, 23, 72, 110, 50, 47, 113, 91, 0, 11, 81, 100, 195, 182, 110, 116, 195, 169, 115, 32, 35, 68,
+			77, 169, 204, 156, 89, 115, 55, 115, 23, 57, 108, 84, 108, 91, 55, 108, 47, 39, 47, 0, 11, 81, 106, 97, 118, 97, 115, 108, 97, 116,
+			111, 116, 32, 9, 198, 46, 134, 144, 60, 229, 0, 11, 7, 196, 77, 169, 204, 156, 11, 6, 194, 16, 80, 76, 8, 0, 11, 200, 88, 148,
+			197, 48, 177, 68, 56, 144, 11, 11, 200, 52, 81, 205, 60, 225, 1, 56, 144, 11, 6, 194, 169, 64, 15, 11, 9, 198, 77, 165, 18, 112,
+			162, 192, 11, 0, 35, 70, 77, 160, 66, 32, 21, 39, 89, 108, 71, 107, 108, 47, 115, 23, 65, 109, 50, 111, 84, 109, 55, 0, 11, 81,
+			109, 101, 110, 195, 188, 118, 101, 108, 32, 9, 198, 32, 83, 25, 172, 186, 14, 11, 8, 197, 137, 33, 5, 52, 80, 11, 9, 198, 46, 36,
+			142, 172, 226, 192, 11, 12, 201, 24, 241, 204, 4, 194, 207, 104, 226, 64, 11, 6, 195, 80, 83, 20, 11, 0, 0, 8, 197, 8, 243, 20,
+			61, 64, 11, 9, 198, 74, 37, 5, 28, 85, 0, 11, 8, 197, 24, 241, 207, 81, 64, 11, 5, 194, 50, 112, 11, 9, 198, 80, 149, 5,
+			44, 85, 0, 11, 0, 17, 67, 13, 48, 75, 76, 108, 49, 23, 49, 37, 0, 11, 81, 107, 105, 32, 31, 67, 13, 48, 75, 76, 108, 49,
+			10, 6, 15, 65, 109, 81, 47, 109, 50, 12, 37, 0, 11, 81, 109, 101, 103, 116, 101, 110, 110, 105, 32, 27, 67, 13, 48, 75, 76, 108,
+			49, 23, 49, 113, 91, 118, 71, 12, 0, 11, 81, 107, 195, 169, 115, 197, 145, 98, 98, 32, 23, 67, 13, 48, 75, 76, 108, 49, 23, 108,
+			49, 12, 39, 52, 0, 11, 81, 97, 107, 107, 111, 114, 32, 23, 67, 13, 48, 75, 76, 108, 49, 23, 55, 109, 107, 109, 47, 0, 11, 81,
+			108, 101, 104, 101, 116, 32, 13, 138, 109, 101, 103, 103, 121, 197, 145, 122, 110, 105, 11, 12, 201, 44, 149, 133, 80, 226, 86, 4, 201, 192,
+			11, 6, 195, 13, 48, 75, 11, 25, 67, 96, 146, 64, 47, 37, 88, 109, 50, 49, 109, 47, 12, 118, 84, 109, 55, 0, 44, 42, 81, 101,
+			108, 32, 0, 8, 197, 88, 149, 28, 40, 16, 11, 9, 198, 8, 150, 129, 44, 241, 39, 11, 15, 204, 24, 145, 217, 20, 195, 69, 105, 65,
+			84, 21, 69, 0, 11, 6, 195, 88, 243, 148, 11, 6, 195, 88, 243, 148, 11, 0, 18, 68, 53, 54, 141, 64, 101, 109, 101, 115, 122, 101,
+			109, 112, 195, 169, 0, 29, 19, 68, 53, 54, 141, 64, 101, 109, 101, 115, 122, 101, 109, 112, 195, 169, 0, 29, 42, 12, 201, 8, 148, 218,
+			80, 244, 207, 44, 21, 0, 11, 0, 8, 197, 161, 97, 90, 36, 176, 11, 10, 199, 112, 197, 1, 49, 195, 143, 76, 11, 9, 198, 77, 167,
+			13, 84, 180, 129, 11, 8, 197, 24, 18, 149, 49, 64, 11, 8, 197, 32, 83, 25, 21, 64, 11, 8, 197, 77, 161, 77, 21, 64, 11, 8,
+			197, 88, 148, 197, 49, 64, 11, 8, 197, 52, 240, 137, 49, 64, 11, 9, 198, 112, 195, 37, 80, 160, 64, 11, 8, 197, 90, 33, 218, 36,
+			176, 11, 8, 197, 40, 21, 149, 49, 64, 11, 8, 197, 58, 38, 142, 20, 176, 11, 7, 196, 57, 153, 76, 80, 11, 9, 198, 52, 17, 213,
+			44, 21, 0, 11, 8, 197, 52, 20, 129, 17, 64, 11, 5, 194, 21, 48, 72, 0, 10, 199, 77, 163, 210, 84, 194, 143, 56, 11, 39, 67,
+			56, 83, 64, 50, 109, 65, 23, 57, 109, 55, 109, 50, 47, 23, 91, 109, 65, 12, 37, 47, 0, 11, 82, 106, 101, 108, 101, 110, 116, 32,
+			115, 101, 109, 109, 105, 116, 32, 19, 68, 57, 145, 76, 88, 67, 109, 55, 84, 23, 37, 91, 0, 11, 81, 105, 115, 32, 47, 67, 56, 83,
+			64, 50, 109, 65, 23, 84, 39, 55, 47, 23, 47, 37, 89, 47, 109, 91, 12, 113, 81, 109, 91, 0, 11, 82, 118, 111, 108, 116, 32, 116,
+			105, 115, 122, 116, 101, 115, 115, 195, 169, 103, 101, 115, 32, 24, 67, 56, 83, 64, 50, 109, 65, 23, 55, 114, 47, 12, 108, 0, 11, 81,
+			108, 195, 161, 116, 116, 97, 32, 21, 67, 56, 83, 64, 50, 109, 65, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 44, 67,
+			56, 83, 64, 50, 109, 65, 23, 65, 39, 88, 81, 108, 47, 12, 108, 23, 47, 39, 84, 114, 71, 12, 0, 11, 82, 109, 111, 122, 103, 97,
+			116, 116, 97, 32, 116, 111, 118, 195, 161, 98, 98, 32, 20, 67, 56, 83, 64, 50, 109, 65, 23, 55, 109, 89, 0, 11, 81, 108, 101, 115,
+			122, 32, 40, 67, 56, 83, 64, 50, 109, 65, 15, 65, 109, 52, 47, 109, 65, 15, 55, 109, 112, 52, 50, 37, 0, 11, 82, 109, 101, 114,
+			116, 101, 109, 32, 108, 101, 195, 173, 114, 110, 105, 32, 11, 200, 76, 81, 229, 80, 83, 171, 56, 176, 11, 9, 198, 50, 37, 5, 104, 146,
+			192, 11, 9, 198, 74, 133, 137, 16, 80, 130, 11, 9, 198, 50, 37, 5, 104, 146, 192, 11, 9, 198, 74, 115, 1, 80, 242, 192, 11, 7,
+			195, 56, 83, 64, 102, 10, 8, 195, 56, 83, 64, 10, 23, 17, 0, 12, 201, 88, 150, 147, 29, 195, 8, 5, 73, 192, 11, 9, 198, 112,
+			195, 1, 64, 245, 42, 11, 12, 201, 32, 20, 218, 57, 195, 8, 5, 73, 192, 11, 11, 200, 29, 153, 199, 101, 67, 210, 56, 16, 11, 7,
+			196, 82, 35, 5, 56, 11, 12, 201, 44, 149, 1, 49, 195, 8, 5, 73, 192, 11, 12, 201, 32, 20, 218, 57, 195, 8, 5, 73, 192, 11,
+			15, 204, 81, 195, 79, 28, 21, 15, 81, 68, 220, 28, 245, 0, 11, 6, 195, 85, 64, 76, 11, 0, 9, 198, 88, 148, 197, 49, 65, 77,
+			11, 11, 200, 29, 144, 78, 4, 180, 218, 36, 176, 11, 11, 200, 46, 36, 132, 137, 49, 75, 72, 80, 11, 11, 200, 20, 208, 133, 72, 82,
+			206, 20, 176, 11, 0, 11, 200, 25, 34, 83, 78, 179, 14, 20, 176, 11, 6, 195, 90, 33, 197, 11, 0, 9, 198, 17, 39, 7, 112, 32,
+			128, 11, 7, 196, 89, 193, 206, 36, 11, 0, 9, 198, 37, 39, 14, 101, 83, 0, 11, 10, 199, 48, 81, 201, 56, 183, 2, 8, 11, 10,
+			199, 52, 243, 137, 80, 244, 143, 44, 11, 0, 8, 197, 161, 42, 11, 160, 192, 11, 12, 201, 72, 83, 132, 77, 161, 82, 20, 180, 133, 11,
+			0, 12, 137, 107, 101, 122, 100, 197, 145, 100, 197, 145, 11, 29, 68, 44, 84, 171, 48, 49, 109, 52, 111, 55, 10, 6, 15, 37, 47, 107,
+			39, 50, 0, 11, 81, 105, 116, 116, 104, 111, 110, 32, 22, 68, 44, 84, 171, 48, 49, 109, 52, 111, 55, 23, 91, 39, 52, 0, 11, 81,
+			115, 111, 114, 32, 23, 67, 88, 84, 218, 84, 109, 89, 23, 52, 113, 89, 47, 0, 11, 81, 114, 195, 169, 115, 122, 116, 32, 8, 197, 89,
+			196, 149, 56, 176, 11, 6, 195, 88, 148, 218, 11, 7, 196, 44, 84, 171, 48, 11, 6, 195, 44, 147, 142, 11, 6, 195, 88, 84, 218, 11,
+			0, 10, 199, 112, 195, 15, 53, 195, 153, 80, 11, 35, 67, 161, 42, 13, 110, 52, 110, 65, 23, 108, 6, 23, 89, 114, 65, 39, 65, 52,
+			108, 0, 11, 82, 97, 32, 115, 122, 195, 161, 109, 111, 109, 114, 97, 32, 8, 197, 36, 65, 74, 137, 64, 11, 13, 202, 88, 150, 147, 29,
+			195, 1, 80, 242, 210, 4, 11, 6, 195, 136, 165, 0, 11, 0, 14, 203, 136, 193, 76, 52, 148, 218, 21, 33, 75, 72, 80, 11, 21, 66,
+			73, 192, 52, 114, 23, 37, 81, 113, 67, 0, 11, 81, 105, 103, 195, 169, 110, 121, 32, 30, 66, 73, 192, 52, 114, 23, 89, 111, 49, 91,
+			113, 81, 109, 65, 0, 11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 109, 32, 40, 72, 56, 83, 90, 21, 66, 232, 104, 144, 50,
+			109, 65, 88, 109, 47, 49, 110, 88, 37, 23, 89, 108, 71, 84, 114, 67, 0, 11, 81, 115, 122, 97, 98, 118, 195, 161, 110, 121, 32, 41,
+			72, 56, 83, 90, 21, 66, 232, 104, 144, 50, 109, 65, 88, 109, 47, 49, 110, 88, 37, 23, 89, 108, 71, 84, 114, 67, 0, 11, 81, 115,
+			122, 97, 98, 98, 118, 195, 161, 110, 121, 32, 9, 198, 4, 181, 21, 112, 194, 83, 11, 5, 194, 73, 192, 11, 9, 3, 95, 35, 57, 47,
+			108, 71, 0, 0, 12, 201, 52, 81, 194, 149, 160, 84, 113, 53, 0, 11, 0, 29, 68, 21, 56, 138, 80, 109, 91, 113, 57, 47, 10, 6,
+			15, 55, 114, 47, 39, 49, 0, 11, 81, 108, 195, 161, 116, 111, 107, 32, 7, 196, 77, 167, 14, 80, 11, 0, 52, 74, 112, 195, 28, 77,
+			3, 206, 80, 243, 65, 80, 114, 55, 12, 114, 91, 48, 39, 50, 47, 39, 65, 108, 47, 23, 107, 108, 50, 81, 39, 89, 47, 108, 47, 39,
+			65, 0, 11, 81, 104, 97, 110, 103, 111, 122, 116, 97, 116, 111, 109, 32, 8, 197, 28, 243, 66, 72, 16, 11, 8, 197, 77, 161, 82, 80,
+			80, 11, 11, 67, 4, 197, 0, 108, 55, 47, 0, 42, 42, 0, 22, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 65, 109, 81, 0,
+			11, 81, 109, 101, 103, 32, 32, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 65, 117, 49, 110, 72, 50, 37, 0, 11, 81, 109, 197,
+			177, 107, 195, 182, 100, 110, 105, 32, 34, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 55, 109, 107, 109, 47, 118, 84, 113, 0, 11,
+			81, 108, 101, 104, 101, 116, 197, 145, 118, 195, 169, 32, 40, 67, 52, 18, 132, 65, 108, 57, 72, 10, 6, 15, 65, 109, 81, 47, 109, 49,
+			37, 50, 47, 109, 50, 37, 0, 11, 81, 109, 101, 103, 116, 101, 107, 105, 110, 116, 101, 110, 105, 32, 33, 67, 52, 18, 132, 65, 108, 57,
+			72, 10, 6, 15, 107, 108, 55, 81, 108, 47, 50, 37, 0, 11, 81, 104, 97, 108, 108, 103, 97, 116, 110, 105, 32, 26, 67, 52, 18, 132,
+			65, 108, 57, 72, 10, 6, 15, 52, 108, 57, 47, 108, 0, 11, 81, 114, 97, 106, 116, 97, 32, 6, 195, 52, 18, 132, 11, 0, 36, 71,
+			72, 83, 132, 77, 161, 82, 80, 52, 109, 50, 119, 109, 52, 47, 10, 6, 15, 49, 113, 89, 112, 47, 0, 11, 81, 107, 195, 169, 115, 122,
+			195, 173, 116, 32, 10, 199, 36, 225, 193, 80, 192, 78, 80, 11, 10, 199, 72, 83, 132, 77, 161, 82, 80, 11, 6, 195, 82, 132, 148, 11,
+			6, 195, 82, 36, 148, 11, 7, 196, 74, 115, 21, 44, 11, 6, 195, 4, 199, 0, 11, 0, 27, 68, 88, 243, 14, 4, 84, 39, 55, 50,
+			108, 23, 65, 108, 81, 114, 47, 0, 11, 81, 109, 97, 103, 195, 161, 116, 32, 31, 69, 89, 193, 202, 84, 176, 84, 114, 81, 57, 40, 49,
+			10, 6, 15, 90, 109, 71, 52, 109, 0, 11, 81, 122, 115, 101, 98, 114, 101, 32, 22, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108, 23,
+			83, 109, 55, 0, 11, 81, 102, 101, 108, 32, 9, 198, 53, 83, 139, 113, 41, 204, 11, 22, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108,
+			23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 8, 197, 89, 196, 138, 84, 176, 11, 33, 68, 88, 243, 14, 4, 84, 39, 55, 50, 108,
+			23, 65, 109, 81, 23, 118, 49, 109, 47, 0, 11, 82, 109, 101, 103, 32, 197, 145, 107, 101, 116, 32, 32, 68, 88, 243, 14, 4, 84, 39,
+			55, 50, 108, 23, 47, 109, 52, 84, 109, 88, 50, 37, 0, 11, 81, 116, 101, 114, 118, 101, 122, 110, 105, 32, 45, 68, 88, 243, 14, 4,
+			84, 39, 55, 50, 108, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 49, 109, 47, 0, 11, 82, 97, 32, 107, 195, 169, 114, 100, 197,
+			145, 195, 173, 118, 101, 107, 101, 116, 32, 49, 69, 112, 119, 2, 4, 224, 114, 81, 114, 71, 108, 50, 15, 91, 37, 50, 76, 15, 55, 109,
+			76, 109, 52, 113, 55, 50, 37, 0, 11, 82, 115, 105, 110, 99, 115, 32, 108, 101, 99, 115, 101, 114, 195, 169, 108, 110, 105, 32, 5, 194,
+			21, 64, 11, 7, 196, 88, 243, 14, 4, 11, 14, 6, 95, 35, 45, 118, 97, 108, 114, 84, 108, 55, 0, 16, 0, 21, 67, 17, 97, 0,
+			100, 195, 169, 118, 195, 169, 100, 195, 169, 109, 0, 44, 29, 81, 109, 32, 22, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169,
+			116, 0, 44, 29, 42, 81, 109, 32, 22, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 100, 0, 44, 29, 42, 81, 100, 32,
+			21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 100, 0, 44, 29, 81, 100, 32, 21, 67, 17, 97, 0, 100, 195, 169, 118,
+			195, 169, 100, 195, 169, 110, 0, 44, 29, 81, 110, 32, 22, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 110, 0, 44, 29,
+			42, 81, 110, 32, 21, 67, 17, 97, 0, 100, 195, 169, 118, 195, 169, 100, 195, 169, 107, 0, 44, 29, 81, 107, 32, 22, 67, 17, 97, 0,
+			100, 195, 169, 118, 195, 169, 100, 195, 169, 107, 0, 44, 29, 42, 81, 107, 32, 31, 71, 24, 83, 20, 137, 65, 76, 20, 83, 109, 55, 47,
+			113, 47, 109, 55, 109, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 8, 197, 8, 19, 139, 40, 16, 11, 50, 68, 46, 36,
+			148, 20, 49, 113, 52, 47, 109, 10, 6, 15, 83, 109, 55, 23, 65, 116, 55, 47, 10, 6, 15, 107, 113, 47, 109, 50, 0, 11, 83, 102,
+			101, 108, 32, 109, 195, 186, 108, 116, 32, 104, 195, 169, 116, 101, 110, 32, 11, 200, 8, 85, 129, 48, 195, 212, 80, 16, 11, 7, 196, 105,
+			196, 148, 4, 11, 10, 199, 81, 195, 79, 28, 21, 20, 4, 11, 10, 199, 29, 151, 18, 80, 245, 20, 4, 11, 7, 196, 46, 36, 148, 20,
+			11, 9, 198, 46, 85, 156, 56, 52, 201, 11, 7, 196, 89, 196, 148, 4, 11, 8, 197, 52, 243, 132, 80, 16, 11, 0, 8, 197, 54, 33,
+			9, 84, 208, 11, 10, 199, 137, 37, 34, 44, 83, 20, 20, 11, 6, 195, 14, 35, 42, 11, 9, 198, 29, 151, 18, 82, 114, 192, 11, 0,
+			11, 200, 16, 243, 7, 61, 163, 137, 84, 176, 11, 10, 199, 46, 132, 171, 50, 133, 20, 20, 11, 12, 201, 32, 18, 140, 136, 181, 1, 48,
+			19, 148, 11, 11, 200, 112, 195, 1, 52, 242, 194, 4, 224, 11, 0, 13, 138, 101, 108, 197, 145, 102, 111, 114, 100, 117, 108, 11, 10, 199,
+			20, 194, 83, 52, 84, 148, 20, 11, 9, 198, 20, 199, 18, 84, 197, 1, 11, 9, 198, 44, 144, 66, 112, 197, 1, 11, 7, 196, 44, 20,
+			14, 36, 11, 6, 195, 13, 48, 74, 11, 15, 8, 95, 35, 45, 195, 161, 104, 111, 122, 114, 107, 39, 88, 0, 0, 4, 193, 136, 49, 40,
+			69, 20, 195, 5, 56, 144, 109, 55, 12, 109, 50, 37, 23, 83, 109, 55, 12, 113, 48, 113, 91, 52, 109, 0, 11, 81, 102, 101, 108, 108,
+			195, 169, 112, 195, 169, 115, 114, 101, 32, 8, 197, 88, 19, 1, 44, 144, 11, 9, 198, 48, 20, 10, 112, 32, 78, 11, 8, 197, 52, 20,
+			139, 60, 208, 11, 12, 201, 89, 195, 20, 61, 160, 84, 10, 115, 0, 11, 4, 193, 136, 72, 0, 9, 198, 136, 197, 133, 104, 225, 75, 11,
+			47, 70, 112, 195, 10, 4, 224, 75, 114, 57, 57, 108, 50, 108, 49, 23, 52, 109, 50, 72, 109, 55, 49, 109, 88, 113, 91, 52, 109, 0,
+			11, 81, 114, 101, 110, 100, 101, 108, 107, 101, 122, 195, 169, 115, 114, 101, 32, 12, 201, 52, 81, 212, 36, 197, 15, 81, 64, 64, 11, 9,
+			198, 16, 243, 7, 61, 169, 203, 11, 12, 201, 57, 146, 76, 5, 66, 207, 105, 64, 64, 11, 0, 6, 195, 76, 242, 1, 11, 0, 7, 196,
+			32, 148, 218, 36, 11, 6, 195, 48, 83, 142, 11, 0, 24, 67, 20, 118, 64, 109, 79, 23, 49, 37, 91, 12, 109, 71, 0, 11, 81, 107,
+			105, 115, 101, 98, 98, 32, 28, 67, 20, 118, 64, 109, 79, 10, 6, 15, 48, 52, 115, 71, 114, 47, 0, 11, 81, 112, 114, 195, 179, 98,
+			195, 161, 116, 32, 35, 67, 20, 118, 64, 109, 79, 10, 6, 15, 83, 39, 81, 108, 72, 114, 91, 40, 50, 49, 0, 11, 81, 102, 111, 103,
+			97, 100, 195, 161, 115, 117, 110, 107, 32, 37, 67, 20, 118, 64, 109, 79, 23, 107, 108, 57, 55, 113, 49, 47, 108, 55, 108, 50, 47, 0,
+			11, 81, 104, 97, 106, 108, 195, 169, 107, 116, 97, 108, 97, 110, 116, 32, 27, 67, 20, 118, 64, 109, 79, 23, 83, 115, 52, 40, 65, 39,
+			50, 0, 11, 81, 102, 195, 179, 114, 117, 109, 111, 110, 32, 23, 67, 20, 118, 64, 109, 79, 10, 6, 15, 72, 37, 114, 49, 0, 11, 81,
+			100, 105, 195, 161, 107, 32, 25, 67, 20, 118, 64, 109, 79, 10, 6, 15, 83, 113, 52, 83, 37, 0, 11, 81, 102, 195, 169, 114, 102, 105,
+			32, 32, 67, 20, 118, 64, 109, 79, 23, 83, 109, 55, 65, 113, 52, 113, 91, 47, 0, 11, 81, 102, 101, 108, 109, 195, 169, 114, 195, 169,
+			115, 116, 32, 29, 67, 20, 118, 64, 109, 79, 23, 89, 39, 83, 47, 84, 109, 52, 47, 0, 11, 81, 115, 122, 111, 102, 116, 118, 101, 114,
+			116, 32, 38, 67, 20, 118, 64, 109, 79, 23, 112, 52, 114, 91, 47, 40, 72, 108, 47, 55, 108, 50, 0, 11, 81, 195, 173, 114, 195, 161,
+			115, 116, 117, 100, 97, 116, 108, 97, 110, 32, 22, 67, 20, 118, 64, 109, 79, 23, 37, 72, 109, 37, 81, 0, 11, 81, 105, 100, 101, 105,
+			103, 32, 23, 67, 20, 118, 64, 109, 79, 23, 81, 113, 48, 109, 47, 0, 11, 81, 103, 195, 169, 112, 101, 116, 32, 33, 67, 20, 118, 64,
+			109, 79, 23, 89, 108, 71, 108, 72, 50, 108, 48, 52, 108, 0, 11, 81, 115, 122, 97, 98, 97, 100, 110, 97, 112, 114, 97, 32, 8, 197,
+			105, 196, 218, 50, 112, 11, 8, 197, 90, 35, 10, 172, 176, 11, 6, 195, 26, 131, 142, 11, 7, 195, 20, 118, 64, 11, 17, 11, 67, 52,
+			148, 211, 65, 37, 89, 12, 0, 25, 0, 12, 201, 4, 194, 207, 80, 215, 14, 100, 224, 75, 11, 6, 195, 76, 20, 212, 11, 6, 195, 52,
+			244, 212, 11, 0, 20, 67, 4, 201, 204, 108, 55, 115, 55, 10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 8, 197, 81, 81, 20, 84,
+			176, 11, 13, 202, 61, 36, 218, 112, 116, 162, 77, 160, 133, 56, 11, 6, 195, 26, 35, 0, 11, 9, 198, 56, 147, 131, 76, 83, 128, 11,
+			6, 195, 4, 201, 204, 11, 0, 35, 71, 41, 196, 149, 50, 34, 207, 76, 57, 114, 52, 40, 55, 113, 49, 39, 91, 23, 109, 55, 109, 65,
+			109, 49, 0, 11, 81, 101, 108, 101, 109, 101, 107, 32, 23, 70, 32, 83, 25, 104, 85, 0, 107, 109, 57, 88, 109, 47, 23, 108, 88, 0,
+			11, 81, 97, 122, 32, 24, 67, 89, 193, 217, 84, 114, 79, 23, 113, 81, 109, 47, 12, 0, 11, 81, 195, 169, 103, 101, 116, 116, 32, 14,
+			203, 112, 195, 1, 53, 66, 84, 45, 196, 130, 4, 224, 11, 9, 198, 44, 244, 146, 20, 181, 0, 11, 9, 198, 32, 83, 25, 104, 85, 0,
+			11, 9, 198, 88, 145, 217, 113, 163, 137, 11, 9, 198, 80, 82, 5, 80, 82, 192, 11, 6, 195, 89, 193, 217, 11, 12, 5, 95, 35, 45,
+			114, 97, 114, 52, 108, 0, 16, 0, 13, 202, 58, 133, 133, 44, 81, 34, 78, 35, 133, 44, 11, 10, 199, 24, 83, 43, 29, 145, 76, 36,
+			11, 7, 196, 50, 37, 18, 20, 11, 10, 199, 52, 81, 214, 136, 65, 78, 36, 11, 17, 4, 95, 50, 67, 111, 49, 113, 47, 89, 114, 88,
+			108, 72, 37, 49, 0, 0, 54, 73, 80, 85, 162, 44, 83, 153, 78, 33, 192, 47, 109, 84, 113, 49, 109, 67, 91, 113, 81, 23, 49, 110,
+			88, 113, 48, 12, 39, 50, 80, 114, 71, 108, 0, 11, 81, 107, 195, 182, 122, 195, 169, 112, 112, 111, 110, 116, 106, 195, 161, 98, 97, 32,
+			8, 197, 8, 89, 82, 88, 16, 11, 12, 201, 80, 85, 162, 44, 83, 153, 78, 33, 192, 11, 8, 197, 48, 89, 82, 88, 16, 11, 8, 197,
+			77, 169, 204, 88, 16, 11, 7, 195, 52, 147, 148, 102, 11, 7, 195, 52, 147, 148, 11, 23, 0, 9, 134, 102, 197, 145, 110, 101, 107, 11,
+			9, 198, 137, 33, 5, 44, 83, 20, 11, 9, 198, 52, 147, 12, 38, 115, 64, 11, 9, 198, 78, 162, 148, 32, 21, 39, 11, 9, 198, 44,
+			149, 34, 80, 83, 20, 11, 7, 196, 58, 38, 137, 44, 11, 11, 136, 195, 161, 102, 97, 97, 58, 102, 97, 42, 0, 14, 66, 21, 80, 101,
+			117, 110, 0, 44, 29, 42, 81, 110, 32, 38, 71, 20, 197, 156, 72, 128, 84, 156, 109, 55, 84, 114, 52, 107, 108, 47, 115, 23, 89, 109,
+			52, 37, 50, 47, 109, 0, 11, 81, 115, 122, 101, 114, 105, 110, 116, 101, 32, 10, 199, 80, 19, 28, 48, 128, 84, 156, 11, 7, 196, 4,
+			32, 167, 48, 11, 12, 5, 95, 35, 45, 114, 101, 113, 52, 109, 0, 16, 0, 10, 199, 112, 195, 37, 80, 128, 84, 156, 11, 0, 6, 195,
+			44, 83, 12, 11, 24, 67, 44, 83, 12, 49, 109, 55, 12, 23, 84, 109, 50, 12, 37, 0, 11, 81, 118, 101, 110, 110, 105, 32, 28, 67,
+			44, 83, 12, 49, 109, 55, 12, 23, 83, 39, 81, 108, 72, 50, 37, 0, 11, 81, 102, 111, 103, 97, 100, 110, 105, 32, 36, 68, 4, 192,
+			80, 168, 108, 55, 108, 48, 116, 10, 6, 15, 52, 109, 50, 119, 109, 52, 109, 50, 0, 11, 81, 114, 101, 110, 100, 115, 122, 101, 114, 101,
+			110, 32, 9, 198, 40, 241, 220, 88, 19, 0, 11, 25, 67, 44, 83, 12, 49, 109, 55, 12, 23, 49, 110, 47, 50, 37, 0, 11, 81, 107,
+			195, 182, 116, 110, 105, 32, 32, 67, 44, 83, 12, 49, 109, 55, 12, 23, 39, 49, 47, 108, 47, 50, 37, 40, 49, 0, 11, 81, 111, 107,
+			116, 97, 116, 110, 105, 117, 107, 32, 32, 67, 44, 83, 12, 49, 109, 55, 12, 23, 107, 108, 52, 119, 39, 55, 50, 37, 108, 0, 11, 81,
+			104, 97, 114, 99, 111, 108, 110, 105, 97, 32, 10, 199, 84, 69, 129, 73, 192, 129, 56, 11, 7, 196, 4, 192, 80, 168, 11, 9, 198, 44,
+			84, 171, 48, 225, 75, 11, 0, 11, 200, 4, 192, 75, 84, 195, 137, 84, 176, 11, 11, 200, 44, 84, 171, 48, 85, 2, 20, 224, 11, 0,
+			9, 198, 32, 19, 65, 72, 16, 130, 11, 23, 68, 80, 84, 218, 36, 47, 109, 89, 37, 23, 65, 108, 57, 72, 0, 11, 81, 109, 97, 106,
+			100, 32, 31, 71, 81, 81, 15, 53, 196, 213, 48, 47, 40, 72, 39, 65, 114, 91, 40, 55, 23, 49, 109, 55, 12, 0, 11, 81, 107, 101,
+			108, 108, 32, 9, 198, 52, 17, 193, 76, 16, 130, 11, 9, 198, 29, 147, 210, 76, 16, 130, 11, 0, 11, 200, 44, 84, 171, 48, 232, 142,
+			20, 176, 11, 12, 201, 52, 147, 137, 77, 165, 5, 72, 225, 75, 11, 11, 200, 72, 83, 132, 77, 161, 82, 72, 80, 11, 0, 18, 69, 88,
+			68, 218, 77, 160, 84, 113, 72, 113, 109, 89, 109, 89, 0, 42, 42, 0, 17, 142, 98, 105, 99, 105, 107, 108, 105, 122, 197, 145, 107, 110,
+			101, 107, 11, 37, 69, 46, 132, 171, 48, 144, 49, 110, 52, 111, 55, 37, 23, 110, 89, 12, 109, 81, 71, 118, 55, 0, 11, 81, 195, 182,
+			115, 115, 122, 101, 103, 98, 197, 145, 108, 32, 13, 138, 105, 100, 197, 145, 115, 122, 97, 107, 111, 107, 11, 8, 197, 52, 243, 132, 60, 176,
+			11, 8, 197, 28, 243, 132, 60, 176, 11, 0, 7, 195, 48, 84, 218, 72, 17, 53, 11, 99, 115, 197, 145, 100, 106, 195, 169, 110, 101, 107,
+			76, 118, 79, 12, 113, 50, 109, 49, 23, 109, 55, 49, 109, 52, 111, 55, 113, 91, 113, 52, 109, 0, 11, 81, 101, 108, 107, 101, 114, 195,
+			188, 108, 195, 169, 115, 195, 169, 114, 101, 32, 9, 198, 136, 195, 98, 57, 149, 0, 11, 30, 67, 48, 84, 218, 55, 109, 89, 23, 108, 57,
+			114, 50, 55, 39, 47, 12, 0, 11, 81, 97, 106, 195, 161, 110, 108, 111, 116, 116, 32, 27, 67, 136, 197, 0, 113, 55, 47, 6, 23, 91,
+			39, 49, 114, 37, 81, 0, 11, 81, 115, 111, 107, 195, 161, 105, 103, 32, 7, 196, 48, 244, 14, 36, 11, 16, 205, 16, 144, 71, 56, 244,
+			218, 80, 150, 156, 48, 128, 84, 156, 11, 6, 195, 32, 148, 218, 11, 6, 195, 136, 197, 0, 11, 0, 8, 197, 37, 51, 69, 72, 144, 11,
+			5, 194, 4, 224, 72, 15, 66, 28, 32, 81, 37, 81, 108, 71, 114, 57, 47, 0, 42, 42, 0, 10, 199, 46, 131, 20, 78, 33, 226, 80,
+			11, 6, 195, 24, 80, 128, 15, 0, 31, 68, 44, 85, 162, 76, 49, 109, 84, 113, 91, 23, 108, 23, 83, 109, 55, 107, 118, 0, 11, 82,
+			97, 32, 102, 101, 108, 104, 197, 145, 32, 9, 198, 52, 81, 212, 20, 227, 137, 11, 7, 196, 76, 244, 130, 4, 11, 7, 196, 44, 85, 162,
+			76, 11, 0, 9, 198, 44, 85, 133, 74, 34, 197, 11, 32, 69, 4, 176, 82, 40, 16, 108, 49, 108, 52, 57, 108, 23, 107, 108, 57, 47,
+			108, 50, 37, 0, 11, 81, 104, 97, 106, 116, 97, 110, 105, 32, 8, 197, 4, 176, 82, 40, 16, 11, 0, 28, 68, 52, 152, 146, 80, 65,
+			37, 113, 52, 47, 15, 84, 108, 50, 15, 108, 88, 0, 11, 82, 118, 97, 110, 32, 97, 122, 32, 50, 73, 20, 193, 75, 81, 35, 206, 36,
+			181, 83, 109, 55, 109, 49, 47, 52, 39, 50, 37, 49, 40, 91, 23, 84, 114, 55, 47, 39, 88, 108, 47, 114, 47, 0, 11, 81, 118, 195,
+			161, 108, 116, 111, 122, 97, 116, 195, 161, 116, 32, 22, 68, 52, 152, 146, 80, 65, 37, 113, 52, 47, 15, 50, 109, 65, 0, 11, 81, 110,
+			101, 109, 32, 13, 138, 98, 97, 106, 107, 101, 118, 101, 114, 197, 145, 11, 9, 134, 109, 197, 177, 118, 101, 108, 11, 9, 198, 80, 20, 148,
+			4, 231, 0, 11, 6, 195, 24, 80, 146, 15, 9, 198, 53, 196, 131, 37, 84, 192, 15, 0, 9, 134, 110, 197, 145, 110, 101, 107, 11, 57,
+			10, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 49, 113, 52, 72, 118, 112, 84, 23, 84, 113, 55, 109, 65, 113, 67, 109, 88, 113, 91,
+			113, 52, 109, 0, 11, 81, 118, 195, 169, 108, 101, 109, 195, 169, 110, 121, 101, 122, 195, 169, 115, 195, 169, 114, 101, 32, 8, 197, 28, 22,
+			132, 4, 112, 11, 7, 196, 73, 194, 149, 44, 11, 11, 67, 80, 16, 128, 47, 108, 71, 0, 42, 42, 0, 7, 196, 26, 35, 19, 104, 11,
+			0, 22, 69, 20, 209, 76, 80, 80, 109, 65, 109, 55, 47, 109, 23, 49, 37, 0, 11, 81, 107, 105, 32, 9, 198, 32, 20, 218, 57, 195,
+			4, 11, 11, 200, 56, 85, 82, 60, 201, 199, 85, 48, 11, 11, 200, 44, 145, 15, 48, 115, 218, 80, 16, 11, 9, 198, 48, 20, 20, 61,
+			3, 203, 11, 6, 195, 32, 19, 11, 11, 6, 195, 41, 196, 148, 11, 12, 67, 57, 54, 139, 109, 50, 109, 89, 49, 114, 0, 0, 22, 66,
+			25, 64, 83, 39, 52, 37, 50, 47, 12, 115, 55, 0, 44, 11, 81, 116, 195, 179, 108, 32, 21, 66, 25, 64, 83, 39, 52, 37, 50, 47,
+			50, 108, 49, 0, 44, 11, 81, 110, 97, 107, 32, 19, 66, 25, 64, 83, 39, 52, 37, 50, 47, 71, 108, 0, 44, 11, 81, 98, 97, 32,
+			19, 66, 25, 64, 83, 39, 52, 37, 50, 47, 39, 47, 0, 44, 11, 81, 111, 116, 32, 21, 66, 25, 64, 83, 39, 52, 37, 50, 47, 12,
+			108, 55, 0, 44, 11, 81, 116, 97, 108, 32, 12, 66, 25, 64, 83, 39, 52, 37, 50, 47, 0, 11, 9, 198, 48, 18, 206, 112, 224, 75,
+			11, 6, 195, 149, 35, 203, 11, 11, 200, 80, 20, 218, 149, 67, 212, 80, 16, 11, 14, 6, 95, 35, 45, 118, 101, 108, 113, 84, 109, 55,
+			0, 16, 0, 0, 10, 199, 40, 21, 129, 76, 243, 20, 4, 11, 19, 144, 116, 101, 108, 106, 101, 115, 195, 173, 116, 109, 195, 169, 110, 121,
+			197, 177, 11, 0, 12, 201, 88, 148, 218, 60, 230, 85, 48, 224, 75, 11, 8, 197, 20, 209, 76, 56, 144, 11, 11, 200, 77, 167, 13, 149,
+			64, 78, 4, 176, 11, 11, 200, 36, 229, 34, 104, 85, 2, 20, 224, 11, 10, 199, 20, 211, 37, 80, 85, 20, 20, 11, 0, 11, 200, 32,
+			246, 154, 113, 65, 84, 80, 80, 11, 9, 198, 20, 165, 5, 81, 72, 139, 11, 0, 13, 202, 88, 243, 149, 48, 128, 84, 57, 195, 129, 44,
+			11, 9, 198, 80, 84, 141, 136, 33, 78, 11, 7, 195, 56, 242, 1, 72, 8, 17, 10, 95, 35, 45, 105, 107, 195, 169, 110, 101, 107, 113,
+			50, 109, 49, 0, 0, 12, 201, 24, 82, 140, 21, 54, 148, 137, 56, 142, 11, 12, 201, 8, 81, 143, 49, 151, 19, 60, 197, 1, 11, 9,
+			198, 46, 134, 168, 81, 66, 64, 11, 7, 196, 52, 83, 142, 36, 11, 0, 40, 69, 56, 85, 133, 104, 144, 50, 109, 84, 109, 88, 37, 23,
+			47, 40, 55, 108, 57, 72, 39, 50, 39, 91, 108, 0, 11, 81, 116, 117, 108, 97, 106, 100, 111, 110, 111, 115, 97, 32, 9, 198, 81, 81,
+			8, 5, 73, 192, 11, 9, 198, 84, 118, 65, 56, 22, 128, 11, 8, 197, 40, 81, 217, 20, 144, 11, 0, 19, 66, 32, 16, 107, 108, 23,
+			49, 109, 55, 12, 0, 11, 81, 107, 101, 108, 108, 32, 9, 198, 61, 54, 148, 32, 21, 39, 11, 9, 198, 29, 144, 75, 61, 34, 64, 11,
+			6, 194, 32, 16, 72, 8, 0, 20, 67, 24, 83, 0, 83, 109, 55, 10, 6, 15, 52, 114, 0, 11, 81, 114, 195, 161, 32, 30, 67, 24,
+			83, 0, 83, 109, 55, 23, 108, 6, 15, 91, 39, 52, 71, 108, 50, 0, 11, 82, 97, 32, 115, 111, 114, 98, 97, 110, 32, 9, 198, 24,
+			83, 12, 20, 195, 137, 11, 30, 67, 24, 83, 0, 83, 109, 55, 23, 108, 23, 55, 109, 84, 109, 81, 118, 0, 11, 82, 97, 32, 108, 101,
+			118, 101, 103, 197, 145, 32, 6, 195, 32, 19, 0, 11, 6, 195, 77, 71, 2, 11, 6, 195, 24, 83, 0, 11, 0, 10, 199, 24, 83, 153,
+			20, 113, 84, 36, 11, 9, 198, 90, 37, 5, 50, 37, 0, 11, 9, 198, 41, 196, 150, 112, 230, 64, 11, 6, 195, 13, 48, 80, 11, 9,
+			198, 77, 163, 205, 8, 21, 0, 15, 0, 6, 195, 4, 73, 192, 11, 7, 196, 10, 86, 150, 4, 11, 6, 195, 32, 21, 0, 11, 7, 196,
+			81, 197, 146, 4, 11, 0, 19, 68, 56, 147, 131, 76, 50, 37, 50, 76, 23, 37, 91, 0, 11, 81, 105, 115, 32, 37, 67, 30, 36, 0,
+			81, 113, 48, 23, 83, 39, 79, 108, 89, 47, 114, 91, 114, 47, 0, 11, 81, 102, 111, 103, 121, 97, 115, 122, 116, 195, 161, 115, 195, 161,
+			116, 32, 7, 196, 56, 147, 131, 76, 11, 6, 195, 30, 36, 0, 11, 0, 20, 68, 4, 178, 207, 72, 108, 49, 12, 39, 52, 23, 37, 91,
+			0, 11, 81, 105, 115, 32, 7, 196, 4, 178, 207, 72, 11, 12, 201, 32, 83, 25, 78, 33, 197, 44, 85, 0, 11, 6, 195, 84, 227, 137,
+			11, 11, 67, 80, 18, 128, 47, 108, 57, 0, 42, 42, 0, 10, 199, 65, 35, 196, 84, 49, 82, 20, 11, 0, 9, 198, 32, 21, 28, 77,
+			82, 192, 11, 9, 198, 32, 20, 218, 57, 195, 20, 11, 7, 196, 57, 145, 76, 80, 11, 0, 34, 70, 80, 83, 10, 21, 49, 78, 47, 109,
+			55, 57, 109, 91, 109, 50, 23, 107, 111, 57, 113, 50, 0, 11, 81, 104, 195, 188, 108, 121, 195, 169, 110, 32, 7, 196, 21, 164, 133, 76,
+			11, 29, 68, 5, 69, 39, 48, 108, 47, 12, 115, 55, 10, 6, 15, 83, 113, 55, 50, 37, 0, 11, 81, 102, 195, 169, 108, 110, 105, 32,
+			7, 196, 5, 69, 39, 48, 11, 0, 9, 198, 37, 35, 196, 113, 32, 64, 11, 12, 201, 24, 83, 20, 137, 65, 76, 20, 149, 0, 11, 11,
+			200, 52, 243, 132, 32, 21, 10, 84, 176, 11, 14, 67, 29, 51, 64, 81, 113, 109, 91, 109, 65, 0, 42, 42, 0, 0, 9, 198, 24, 83,
+			28, 73, 32, 76, 11, 58, 71, 80, 84, 171, 48, 85, 18, 20, 47, 109, 52, 111, 55, 109, 47, 52, 109, 10, 6, 15, 37, 91, 10, 6,
+			15, 49, 39, 50, 119, 109, 50, 47, 52, 114, 55, 50, 37, 0, 11, 82, 105, 115, 32, 107, 111, 110, 99, 101, 110, 116, 114, 195, 161, 108,
+			110, 105, 32, 25, 67, 25, 85, 0, 83, 40, 47, 10, 6, 15, 52, 108, 57, 47, 108, 0, 11, 81, 114, 97, 106, 116, 97, 32, 11, 200,
+			24, 83, 153, 20, 113, 84, 88, 80, 11, 10, 199, 137, 10, 204, 21, 64, 133, 56, 11, 8, 197, 60, 193, 1, 56, 144, 11, 8, 197, 60,
+			193, 1, 56, 144, 11, 6, 195, 25, 85, 0, 11, 6, 195, 25, 194, 192, 11, 7, 196, 57, 151, 18, 36, 15, 0, 12, 201, 77, 160, 66,
+			4, 67, 129, 65, 32, 64, 11, 9, 198, 80, 82, 5, 80, 232, 139, 11, 0, 17, 67, 77, 169, 86, 89, 112, 84, 23, 109, 55, 0, 11,
+			81, 101, 108, 32, 10, 199, 77, 167, 13, 149, 67, 212, 80, 11, 6, 195, 8, 83, 128, 72, 0, 26, 70, 88, 86, 133, 80, 146, 192, 84,
+			109, 88, 109, 47, 37, 49, 10, 6, 15, 109, 55, 0, 11, 81, 101, 108, 32, 14, 139, 118, 101, 122, 101, 116, 197, 145, 107, 110, 101, 107,
+			11, 6, 195, 137, 35, 137, 11, 0, 10, 199, 17, 39, 7, 112, 32, 129, 56, 11, 11, 200, 32, 21, 39, 77, 193, 206, 4, 176, 11, 8,
+			197, 21, 54, 139, 161, 160, 11, 15, 204, 20, 208, 133, 73, 71, 18, 76, 18, 75, 56, 18, 192, 11, 42, 6, 108, 195, 169, 118, 197, 145,
+			55, 113, 84, 118, 107, 108, 91, 39, 50, 55, 115, 91, 114, 81, 39, 47, 0, 11, 81, 104, 97, 115, 111, 110, 108, 195, 179, 115, 195, 161,
+			103, 111, 116, 32, 9, 134, 108, 195, 169, 118, 197, 145, 11, 8, 197, 20, 165, 5, 56, 144, 11, 0, 9, 198, 32, 83, 25, 21, 162, 64,
+			11, 9, 198, 40, 83, 5, 57, 66, 64, 11, 0, 9, 198, 18, 131, 148, 137, 56, 148, 11, 11, 200, 89, 195, 1, 77, 165, 34, 44, 16,
+			11, 6, 195, 88, 84, 128, 11, 12, 201, 20, 197, 156, 73, 196, 207, 44, 224, 75, 11, 10, 199, 88, 86, 133, 82, 36, 226, 80, 11, 13,
+			202, 44, 243, 131, 20, 229, 18, 112, 195, 129, 44, 11, 8, 197, 64, 243, 148, 60, 176, 11, 10, 4, 95, 49, 48, 101, 47, 37, 88, 0,
+			0, 9, 198, 8, 84, 218, 136, 197, 0, 11, 9, 198, 8, 84, 218, 136, 197, 0, 11, 9, 198, 8, 84, 218, 136, 197, 0, 11, 7, 132,
+			116, 197, 145, 108, 11, 0, 11, 200, 20, 120, 147, 105, 56, 135, 137, 64, 11, 33, 68, 52, 17, 193, 16, 65, 108, 81, 108, 72, 23, 109,
+			79, 109, 50, 109, 91, 109, 50, 0, 11, 81, 101, 103, 121, 101, 110, 101, 115, 101, 110, 32, 9, 198, 32, 17, 10, 113, 32, 84, 11, 8,
+			133, 101, 108, 197, 145, 108, 11, 9, 198, 90, 35, 5, 54, 35, 153, 11, 8, 133, 101, 108, 197, 145, 108, 11, 7, 196, 52, 17, 193, 16,
+			11, 8, 133, 101, 108, 197, 145, 108, 11, 0, 17, 142, 103, 121, 197, 177, 114, 197, 145, 100, 195, 169, 115, 101, 105, 116, 11, 9, 198, 44,
+			244, 156, 10, 115, 0, 11, 12, 201, 20, 194, 5, 49, 145, 90, 137, 56, 148, 11, 7, 196, 37, 39, 14, 80, 11, 9, 195, 28, 68, 0,
+			102, 13, 42, 42, 14, 67, 28, 68, 0, 75, 112, 72, 112, 48, 112, 0, 42, 42, 0, 11, 200, 37, 39, 14, 102, 85, 1, 56, 144, 11,
+			11, 200, 8, 87, 12, 50, 85, 1, 56, 144, 11, 0, 6, 195, 72, 83, 132, 11, 6, 195, 28, 243, 132, 11, 6, 195, 28, 243, 132, 11,
+			9, 198, 28, 243, 132, 60, 197, 0, 11, 6, 195, 52, 243, 132, 11, 7, 132, 114, 197, 145, 108, 11, 0, 12, 3, 226, 132, 162, 84, 113,
+			72, 57, 109, 79, 0, 35, 70, 44, 86, 132, 20, 225, 75, 49, 109, 88, 72, 109, 50, 109, 49, 6, 23, 37, 52, 114, 50, 47, 108, 0,
+			11, 81, 105, 114, 195, 161, 110, 116, 97, 32, 10, 199, 77, 168, 140, 50, 130, 226, 76, 11, 12, 201, 50, 37, 5, 78, 85, 13, 136, 230,
+			64, 11, 9, 198, 80, 82, 5, 80, 225, 75, 11, 9, 198, 48, 82, 5, 80, 225, 75, 11, 0, 7, 66, 17, 160, 120, 113, 0, 13, 202,
+			52, 81, 214, 4, 201, 211, 149, 64, 78, 36, 11, 30, 67, 21, 161, 82, 109, 88, 109, 52, 23, 83, 39, 52, 37, 50, 47, 39, 47, 0,
+			11, 81, 102, 111, 114, 105, 110, 116, 111, 116, 32, 26, 67, 21, 161, 82, 109, 88, 109, 52, 23, 83, 39, 52, 37, 50, 47, 0, 11, 81,
+			102, 111, 114, 105, 110, 116, 32, 9, 198, 29, 145, 78, 30, 35, 128, 11, 0, 12, 201, 161, 52, 218, 20, 106, 199, 30, 36, 192, 11, 6,
+			195, 8, 83, 5, 11, 6, 195, 73, 195, 64, 11, 6, 195, 73, 195, 64, 11, 0, 12, 201, 72, 83, 132, 20, 194, 197, 104, 146, 192, 11,
+			11, 136, 116, 101, 114, 118, 98, 197, 145, 108, 11, 0, 9, 198, 48, 85, 20, 21, 65, 75, 11, 40, 68, 60, 193, 1, 48, 39, 55, 72,
+			108, 55, 23, 109, 55, 49, 113, 89, 112, 47, 113, 91, 109, 0, 11, 81, 101, 108, 107, 195, 169, 115, 122, 195, 173, 116, 195, 169, 115, 101,
+			32, 7, 196, 60, 193, 1, 48, 11, 6, 195, 77, 169, 212, 11, 0, 9, 198, 20, 197, 162, 29, 162, 75, 11, 9, 198, 60, 197, 129, 77,
+			55, 11, 11, 10, 199, 20, 118, 77, 113, 52, 193, 48, 11, 0, 6, 195, 4, 67, 129, 11, 12, 201, 32, 19, 12, 5, 68, 218, 61, 69,
+			0, 11, 23, 67, 96, 149, 128, 47, 37, 88, 109, 50, 50, 113, 79, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 0, 16, 141, 107,
+			195, 188, 108, 102, 195, 182, 108, 100, 114, 197, 145, 108, 11, 24, 68, 36, 225, 21, 48, 37, 50, 72, 40, 55, 23, 65, 108, 57, 72, 0,
+			11, 81, 109, 97, 106, 100, 32, 38, 68, 36, 225, 21, 48, 37, 50, 72, 40, 55, 23, 108, 6, 15, 83, 109, 55, 107, 118, 88, 109, 47,
+			0, 11, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 9, 198, 49, 197, 20, 84, 226, 192, 11, 6, 195, 34, 164, 212, 11,
+			0, 47, 14, 115, 122, 111, 102, 116, 118, 101, 114, 101, 107, 114, 197, 145, 108, 89, 39, 83, 47, 84, 109, 52, 109, 49, 52, 118, 55, 23,
+			84, 108, 50, 23, 89, 115, 0, 11, 82, 118, 97, 110, 32, 115, 122, 195, 179, 32, 17, 142, 103, 121, 195, 179, 103, 121, 115, 122, 101, 114,
+			98, 197, 145, 108, 11, 10, 199, 77, 160, 75, 61, 37, 143, 76, 11, 7, 196, 48, 81, 231, 80, 11, 6, 195, 24, 83, 142, 11, 5, 194,
+			20, 144, 72, 21, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 47, 0, 44, 11, 81, 116, 32, 23, 66, 12, 208, 119, 109,
+			50, 47, 37, 65, 113, 47, 109, 52, 109, 91, 0, 44, 11, 81, 101, 115, 32, 24, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109,
+			52, 67, 37, 0, 44, 11, 81, 110, 121, 105, 32, 28, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 67, 37, 52, 109, 0,
+			44, 11, 81, 110, 121, 105, 114, 101, 32, 23, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 52, 109, 0, 44, 11, 81, 114,
+			101, 32, 16, 66, 12, 208, 119, 109, 50, 47, 37, 65, 113, 47, 109, 52, 0, 11, 12, 5, 95, 35, 45, 105, 103, 113, 37, 81, 0, 16,
+			0, 9, 198, 48, 84, 218, 60, 179, 137, 11, 9, 198, 81, 196, 147, 5, 55, 7, 11, 9, 198, 64, 20, 148, 148, 50, 103, 11, 6, 195,
+			18, 163, 0, 11, 0, 39, 67, 136, 116, 133, 113, 81, 52, 109, 23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 11, 81, 115,
+			122, 195, 161, 109, 195, 173, 116, 104, 97, 116, 117, 110, 107, 32, 26, 70, 24, 150, 133, 80, 81, 0, 83, 37, 88, 109, 47, 109, 72, 15,
+			65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 6, 195, 64, 84, 212, 11, 0, 7, 196, 16, 149, 129, 80, 11, 7, 196, 41, 196, 142, 4,
+			11, 6, 195, 34, 37, 0, 11, 0, 15, 204, 64, 20, 129, 56, 52, 206, 60, 180, 220, 29, 197, 0, 11, 9, 198, 48, 82, 5, 82, 179,
+			139, 11, 9, 5, 95, 35, 45, 105, 107, 15, 0, 0, 42, 73, 57, 146, 76, 89, 195, 143, 77, 55, 7, 67, 37, 55, 84, 114, 50, 39,
+			91, 12, 114, 81, 23, 89, 114, 65, 114, 52, 108, 0, 11, 81, 115, 122, 195, 161, 109, 195, 161, 114, 97, 32, 9, 198, 25, 85, 20, 5,
+			66, 129, 11, 10, 135, 109, 101, 108, 108, 197, 145, 108, 11, 15, 4, 95, 49, 48, 113, 47, 37, 88, 109, 72, 37, 49, 109, 0, 0, 8,
+			197, 49, 197, 20, 84, 176, 11, 9, 198, 4, 167, 14, 48, 21, 0, 11, 0, 11, 200, 88, 243, 129, 80, 179, 218, 56, 16, 11, 9, 198,
+			52, 241, 5, 48, 193, 75, 11, 7, 196, 77, 161, 80, 80, 15, 0, 9, 198, 80, 84, 133, 52, 33, 78, 11, 9, 198, 48, 83, 11, 137,
+			54, 128, 11, 8, 197, 41, 196, 148, 4, 208, 11, 0, 47, 70, 80, 17, 202, 4, 148, 129, 47, 108, 81, 57, 108, 37, 52, 108, 23, 84,
+			39, 50, 108, 47, 49, 39, 88, 12, 108, 50, 108, 49, 0, 11, 81, 118, 111, 110, 97, 116, 107, 111, 122, 122, 97, 110, 97, 107, 32, 9,
+			198, 29, 144, 78, 168, 160, 64, 11, 9, 198, 24, 244, 141, 112, 160, 64, 11, 11, 200, 90, 33, 5, 44, 86, 133, 81, 64, 11, 10, 199,
+			49, 197, 19, 104, 245, 15, 44, 11, 0, 9, 198, 77, 167, 13, 60, 212, 129, 11, 12, 137, 107, 101, 122, 101, 108, 197, 145, 106, 101, 11,
+			0, 38, 10, 108, 101, 104, 101, 116, 197, 145, 118, 195, 169, 55, 109, 107, 109, 47, 118, 84, 113, 23, 47, 113, 47, 109, 55, 109, 0, 11,
+			81, 116, 195, 169, 116, 101, 108, 101, 32, 36, 10, 108, 101, 104, 101, 116, 197, 145, 118, 195, 169, 55, 109, 107, 109, 47, 118, 84, 113, 23,
+			47, 109, 50, 12, 113, 0, 11, 81, 116, 101, 110, 110, 195, 169, 32, 10, 199, 44, 244, 136, 5, 71, 18, 4, 11, 7, 196, 82, 36, 142,
+			36, 11, 9, 198, 44, 84, 133, 77, 65, 75, 11, 11, 200, 20, 195, 28, 82, 114, 206, 4, 176, 11, 10, 199, 24, 83, 5, 41, 65, 84,
+			80, 11, 10, 199, 77, 161, 82, 21, 1, 76, 80, 11, 14, 4, 95, 49, 48, 111, 47, 37, 88, 109, 72, 37, 49, 0, 0, 7, 196, 52,
+			17, 213, 44, 11, 0, 28, 69, 4, 176, 82, 60, 176, 108, 49, 108, 52, 39, 49, 23, 55, 109, 50, 12, 37, 0, 11, 81, 108, 101, 110,
+			110, 105, 32, 9, 198, 77, 167, 12, 48, 226, 64, 11, 9, 198, 20, 195, 28, 80, 226, 64, 11, 9, 198, 90, 33, 197, 104, 226, 64, 11,
+			9, 198, 44, 146, 168, 56, 226, 64, 11, 0, 15, 204, 88, 148, 211, 104, 21, 34, 74, 36, 226, 88, 83, 0, 11, 19, 68, 46, 131, 153,
+			88, 49, 110, 67, 84, 23, 37, 91, 0, 11, 81, 105, 115, 32, 10, 199, 18, 132, 168, 52, 42, 12, 80, 11, 12, 201, 33, 195, 39, 104,
+			21, 15, 44, 32, 64, 11, 7, 196, 88, 83, 5, 52, 11, 7, 196, 29, 32, 77, 52, 11, 0, 11, 200, 8, 84, 218, 21, 33, 90, 56,
+			144, 11, 9, 198, 4, 194, 193, 48, 208, 83, 11, 13, 202, 46, 36, 218, 172, 200, 139, 20, 147, 133, 44, 11, 8, 133, 197, 145, 107, 101,
+			116, 11, 0, 24, 70, 82, 132, 150, 136, 230, 84, 47, 110, 52, 84, 113, 67, 47, 23, 37, 91, 0, 11, 81, 105, 115, 32, 9, 198, 82,
+			132, 150, 136, 230, 84, 11, 43, 70, 161, 52, 218, 20, 120, 148, 110, 89, 12, 109, 81, 113, 47, 23, 83, 109, 55, 47, 111, 50, 47, 109,
+			91, 12, 109, 0, 11, 81, 102, 101, 108, 116, 195, 188, 110, 116, 101, 115, 115, 101, 32, 6, 195, 18, 82, 128, 11, 9, 198, 32, 148, 132,
+			21, 66, 64, 11, 0, 9, 198, 46, 36, 132, 137, 56, 148, 11, 29, 70, 136, 164, 218, 4, 176, 64, 113, 57, 89, 108, 49, 108, 10, 6,
+			15, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 9, 198, 36, 120, 142, 102, 179, 139, 11, 6, 195, 60, 64, 64, 11, 6, 195,
+			157, 39, 19, 11, 6, 195, 60, 64, 64, 11, 7, 196, 53, 194, 149, 76, 15, 0, 11, 200, 161, 54, 148, 160, 230, 162, 76, 80, 11, 11,
+			200, 78, 36, 171, 50, 34, 197, 57, 144, 11, 9, 198, 24, 150, 133, 82, 36, 197, 11, 16, 141, 107, 195, 188, 108, 195, 182, 110, 98, 195,
+			182, 122, 197, 145, 11, 9, 198, 52, 243, 132, 81, 82, 192, 11, 6, 195, 18, 178, 0, 11, 0, 22, 3, 226, 128, 166, 10, 48, 2, 39,
+			50, 47, 48, 2, 39, 50, 47, 48, 2, 39, 50, 47, 0, 40, 70, 29, 144, 75, 72, 19, 128, 79, 108, 49, 52, 108, 50, 23, 55, 109,
+			89, 23, 113, 55, 113, 50, 49, 0, 11, 82, 108, 101, 115, 122, 32, 195, 169, 108, 195, 169, 110, 107, 32, 9, 198, 41, 197, 19, 104, 128,
+			84, 11, 16, 141, 109, 197, 177, 107, 195, 182, 100, 195, 169, 115, 195, 169, 116, 11, 6, 195, 20, 165, 0, 11, 6, 195, 29, 198, 148, 11,
+			0, 7, 196, 29, 154, 138, 80, 11, 7, 196, 57, 154, 138, 80, 11, 0, 18, 8, 95, 98, 114, 97, 105, 108, 108, 101, 71, 52, 108, 37,
+			55, 12, 109, 0, 11, 200, 44, 148, 18, 156, 39, 12, 56, 144, 11, 27, 68, 53, 196, 201, 44, 65, 114, 91, 37, 49, 10, 6, 15, 47,
+			113, 65, 108, 0, 11, 81, 116, 195, 169, 109, 97, 32, 15, 140, 101, 103, 121, 195, 169, 114, 116, 101, 108, 109, 197, 177, 11, 12, 201, 80,
+			83, 10, 21, 57, 84, 137, 56, 148, 11, 12, 201, 137, 54, 146, 21, 104, 148, 20, 197, 0, 11, 0, 14, 203, 44, 149, 5, 72, 161, 83,
+			105, 72, 147, 137, 64, 11, 8, 197, 4, 73, 196, 36, 176, 11, 6, 195, 52, 147, 132, 11, 6, 195, 24, 83, 34, 11, 0, 11, 200, 46,
+			36, 218, 172, 200, 139, 21, 64, 11, 40, 9, 118, 101, 118, 197, 145, 107, 107, 101, 108, 84, 109, 84, 118, 49, 12, 109, 55, 23, 49, 110,
+			47, 109, 50, 72, 118, 0, 11, 81, 107, 195, 182, 116, 101, 110, 100, 197, 145, 32, 12, 137, 115, 122, 101, 114, 118, 116, 197, 145, 108, 11,
+			11, 200, 46, 36, 218, 172, 200, 139, 21, 64, 11, 0, 27, 66, 21, 160, 109, 88, 10, 6, 15, 84, 108, 55, 108, 65, 37, 47, 0, 11,
+			81, 118, 97, 108, 97, 109, 105, 116, 32, 15, 66, 21, 160, 109, 88, 23, 108, 88, 0, 11, 81, 97, 122, 32, 35, 66, 21, 160, 109, 88,
+			10, 6, 15, 108, 6, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0, 11, 82, 97, 32, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 16,
+			205, 32, 20, 218, 57, 195, 8, 5, 64, 84, 48, 19, 142, 112, 11, 12, 201, 56, 82, 34, 105, 56, 135, 20, 177, 84, 11, 5, 194, 21,
+			160, 11, 0, 10, 3, 226, 130, 172, 109, 40, 52, 39, 0, 6, 195, 24, 83, 5, 11, 11, 200, 88, 148, 197, 48, 177, 68, 36, 176, 11,
+			11, 200, 88, 148, 197, 48, 177, 68, 36, 176, 11, 6, 195, 88, 83, 5, 11, 0, 11, 136, 116, 101, 114, 118, 114, 197, 145, 108, 11, 9,
+			198, 5, 39, 14, 101, 197, 0, 11, 14, 5, 95, 50, 77, 49, 101, 49, 113, 47, 109, 88, 52, 0, 0, 19, 67, 21, 165, 0, 109, 89,
+			47, 10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 8, 197, 44, 243, 79, 49, 144, 11, 21, 67, 21, 165, 0, 109, 89, 47, 23, 49,
+			109, 55, 12, 0, 11, 81, 107, 101, 108, 108, 32, 11, 200, 40, 83, 5, 57, 65, 84, 80, 80, 11, 9, 198, 48, 81, 217, 20, 225, 75,
+			11, 7, 196, 73, 198, 142, 36, 11, 7, 196, 41, 196, 142, 36, 11, 6, 195, 21, 165, 0, 11, 0, 9, 198, 44, 81, 22, 138, 36, 148,
+			11, 8, 197, 89, 195, 14, 36, 16, 11, 12, 137, 114, 101, 110, 100, 101, 108, 197, 145, 107, 11, 13, 138, 106, 195, 182, 118, 197, 145, 114,
+			197, 145, 108, 11, 13, 202, 57, 146, 76, 5, 66, 207, 104, 21, 15, 44, 11, 8, 197, 5, 39, 14, 100, 16, 11, 0, 7, 196, 149, 39,
+			19, 80, 11, 12, 201, 61, 4, 133, 56, 68, 218, 21, 37, 0, 11, 6, 195, 41, 196, 167, 11, 14, 139, 114, 195, 169, 115, 122, 101, 109,
+			114, 197, 145, 108, 11, 13, 138, 107, 195, 182, 116, 104, 101, 116, 197, 145, 107, 11, 6, 195, 80, 17, 192, 11, 0, 14, 139, 107, 101, 122,
+			101, 108, 104, 101, 116, 197, 145, 107, 11, 11, 5, 95, 48, 77, 49, 101, 109, 88, 52, 0, 0, 11, 200, 76, 84, 139, 20, 229, 5, 56,
+			144, 11, 27, 71, 44, 21, 5, 30, 116, 137, 4, 49, 108, 47, 109, 81, 115, 52, 37, 108, 23, 37, 91, 0, 11, 81, 105, 115, 32, 10,
+			199, 44, 21, 5, 30, 116, 137, 4, 11, 15, 140, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197, 145, 107, 11, 0, 32, 70, 20, 195, 162,
+			106, 36, 212, 109, 55, 50, 113, 88, 113, 91, 47, 23, 49, 113, 52, 109, 49, 0, 11, 81, 107, 195, 169, 114, 101, 107, 32, 9, 198, 28,
+			22, 132, 5, 55, 7, 11, 17, 142, 115, 122, 101, 109, 101, 116, 101, 115, 101, 107, 98, 197, 145, 108, 11, 10, 199, 41, 85, 20, 5, 71,
+			19, 80, 11, 6, 195, 77, 39, 3, 11, 0, 18, 143, 101, 108, 116, 197, 177, 110, 195, 169, 115, 195, 169, 114, 197, 145, 108, 11, 6, 195,
+			26, 131, 0, 11, 6, 195, 56, 82, 192, 11, 0, 29, 67, 61, 37, 20, 111, 101, 114, 114, 116, 195, 169, 116, 195, 169, 116, 197, 145, 108,
+			0, 44, 29, 42, 81, 116, 197, 145, 108, 32, 6, 195, 90, 37, 133, 11, 5, 194, 157, 48, 72, 8, 195, 61, 37, 20, 13, 42, 42, 0,
+			7, 196, 10, 86, 154, 4, 11, 39, 68, 54, 113, 10, 4, 65, 115, 79, 12, 108, 23, 65, 109, 81, 84, 114, 55, 47, 39, 88, 37, 49,
+			0, 11, 81, 109, 101, 103, 118, 195, 161, 108, 116, 111, 122, 105, 107, 32, 6, 195, 21, 50, 75, 11, 6, 195, 77, 168, 140, 11, 6, 195,
+			46, 134, 162, 11, 13, 4, 95, 111, 103, 111, 107, 39, 52, 81, 39, 49, 0, 0, 14, 203, 52, 81, 201, 56, 73, 84, 113, 55, 34, 73,
+			64, 11, 11, 200, 172, 193, 40, 30, 35, 34, 77, 64, 11, 9, 198, 20, 197, 34, 74, 36, 212, 11, 13, 7, 95, 35, 45, 195, 169, 114,
+			101, 113, 52, 109, 0, 18, 5, 95, 50, 77, 49, 111, 49, 113, 47, 109, 88, 52, 109, 72, 37, 49, 0, 0, 45, 70, 72, 81, 199, 20,
+			196, 133, 52, 109, 81, 12, 109, 55, 52, 36, 23, 113, 71, 52, 109, 72, 107, 109, 47, 111, 50, 49, 0, 11, 81, 195, 169, 98, 114, 101,
+			100, 104, 101, 116, 195, 188, 110, 107, 32, 35, 70, 72, 81, 199, 20, 196, 133, 52, 109, 81, 12, 109, 55, 52, 109, 23, 65, 109, 81, 107,
+			108, 55, 47, 0, 11, 81, 109, 101, 103, 104, 97, 108, 116, 32, 22, 147, 107, 97, 114, 108, 101, 110, 100, 195, 173, 116, 195, 169, 115, 101,
+			107, 98, 197, 145, 108, 11, 12, 201, 137, 37, 5, 48, 209, 90, 58, 179, 139, 11, 9, 198, 44, 149, 34, 74, 179, 139, 11, 8, 197, 24,
+			243, 148, 61, 48, 11, 0, 9, 198, 78, 36, 148, 20, 232, 128, 11, 66, 78, 4, 176, 68, 112, 198, 77, 20, 229, 5, 78, 85, 34, 76,
+			144, 108, 49, 108, 72, 114, 57, 65, 109, 50, 47, 109, 91, 112, 47, 113, 91, 37, 10, 6, 15, 109, 55, 84, 114, 52, 114, 91, 39, 49,
+			50, 108, 49, 0, 11, 81, 101, 108, 118, 195, 161, 114, 195, 161, 115, 111, 107, 110, 97, 107, 32, 43, 70, 112, 195, 1, 64, 245, 0, 114,
+			55, 12, 108, 48, 39, 47, 23, 57, 108, 84, 112, 47, 114, 91, 114, 52, 108, 0, 11, 81, 106, 97, 118, 195, 173, 116, 195, 161, 115, 195,
+			161, 114, 97, 32, 31, 68, 20, 120, 147, 104, 109, 81, 113, 89, 23, 49, 109, 55, 12, 109, 65, 109, 91, 0, 11, 81, 107, 101, 108, 108,
+			101, 109, 101, 115, 32, 9, 198, 76, 84, 133, 30, 37, 0, 11, 10, 199, 52, 81, 205, 60, 225, 10, 4, 11, 6, 195, 21, 49, 84, 11,
+			9, 198, 112, 195, 1, 64, 245, 0, 11, 0, 14, 203, 32, 19, 28, 48, 42, 206, 80, 85, 34, 77, 64, 11, 7, 196, 12, 145, 201, 80,
+			11, 9, 198, 137, 34, 197, 104, 85, 20, 11, 7, 196, 40, 83, 5, 80, 11, 9, 198, 137, 34, 78, 80, 85, 20, 11, 13, 202, 61, 5,
+			9, 52, 19, 9, 105, 195, 14, 36, 11, 8, 197, 26, 36, 134, 36, 224, 11, 7, 196, 24, 150, 133, 80, 11, 9, 198, 32, 148, 218, 37,
+			65, 75, 11, 17, 9, 95, 35, 45, 195, 169, 116, 197, 145, 108, 113, 47, 118, 55, 0, 16, 0, 13, 66, 33, 80, 104, 117, 110, 0, 44,
+			29, 81, 110, 32, 29, 66, 37, 48, 37, 91, 23, 114, 55, 112, 80, 12, 114, 49, 0, 11, 81, 195, 161, 108, 108, 195, 173, 116, 106, 195,
+			161, 107, 32, 29, 66, 37, 48, 37, 91, 23, 84, 113, 81, 109, 88, 47, 113, 49, 0, 11, 81, 118, 195, 169, 103, 101, 122, 116, 195, 169,
+			107, 32, 40, 66, 37, 48, 37, 91, 23, 108, 55, 114, 47, 114, 65, 108, 89, 47, 39, 47, 12, 108, 0, 11, 81, 97, 108, 195, 161, 116,
+			195, 161, 109, 97, 115, 122, 116, 111, 116, 116, 97, 32, 28, 66, 37, 48, 37, 91, 23, 84, 37, 47, 108, 80, 12, 114, 49, 0, 11, 81,
+			118, 105, 116, 97, 116, 106, 195, 161, 107, 32, 7, 196, 137, 65, 76, 80, 11, 27, 66, 37, 48, 37, 91, 23, 108, 55, 114, 112, 52, 47,
+			108, 0, 11, 81, 97, 108, 195, 161, 195, 173, 114, 116, 97, 32, 30, 66, 37, 48, 37, 91, 23, 65, 109, 81, 109, 65, 55, 112, 47, 37,
+			0, 11, 81, 109, 101, 103, 101, 109, 108, 195, 173, 116, 105, 32, 22, 66, 37, 48, 37, 91, 23, 65, 113, 52, 37, 49, 0, 11, 81, 109,
+			195, 169, 114, 105, 107, 32, 27, 66, 37, 48, 37, 91, 23, 47, 110, 34, 47, 113, 50, 47, 0, 11, 81, 116, 195, 182, 114, 116, 195, 169,
+			110, 116, 32, 25, 66, 37, 48, 37, 91, 23, 71, 109, 89, 113, 55, 47, 0, 11, 81, 98, 101, 115, 122, 195, 169, 108, 116, 32, 54, 66,
+			37, 48, 37, 91, 10, 6, 15, 55, 109, 107, 109, 47, 10, 6, 15, 76, 108, 47, 55, 108, 49, 39, 89, 47, 108, 47, 50, 37, 0, 11,
+			82, 108, 101, 104, 101, 116, 32, 99, 115, 97, 116, 108, 97, 107, 111, 122, 116, 97, 116, 110, 105, 32, 45, 66, 37, 48, 37, 91, 10, 6,
+			15, 55, 109, 107, 109, 47, 10, 6, 15, 71, 118, 84, 112, 47, 109, 50, 37, 0, 11, 82, 108, 101, 104, 101, 116, 32, 98, 197, 145, 118,
+			195, 173, 116, 101, 110, 105, 32, 45, 66, 37, 48, 37, 91, 10, 6, 15, 55, 109, 107, 109, 47, 10, 6, 15, 107, 108, 89, 50, 114, 55,
+			50, 37, 0, 11, 82, 108, 101, 104, 101, 116, 32, 104, 97, 115, 122, 110, 195, 161, 108, 110, 105, 32, 33, 66, 37, 48, 37, 91, 10, 6,
+			15, 47, 108, 55, 114, 55, 107, 108, 47, 115, 0, 11, 81, 116, 97, 108, 195, 161, 108, 104, 97, 116, 195, 179, 32, 31, 66, 37, 48, 37,
+			91, 10, 6, 15, 57, 109, 79, 109, 89, 47, 111, 49, 0, 11, 81, 106, 101, 103, 121, 101, 122, 116, 195, 188, 107, 32, 25, 66, 37, 48,
+			37, 91, 10, 6, 15, 84, 108, 50, 12, 108, 49, 0, 11, 81, 118, 97, 110, 110, 97, 107, 32, 36, 66, 37, 48, 37, 91, 10, 6, 15,
+			65, 109, 81, 65, 40, 47, 108, 80, 12, 114, 49, 0, 11, 81, 109, 101, 103, 109, 117, 116, 97, 116, 106, 195, 161, 107, 32, 40, 66, 37,
+			48, 37, 91, 10, 6, 15, 49, 37, 109, 81, 113, 89, 112, 47, 109, 47, 12, 109, 0, 11, 81, 107, 105, 101, 103, 195, 169, 115, 122, 195,
+			173, 116, 101, 116, 116, 101, 32, 37, 66, 37, 48, 37, 91, 10, 6, 15, 52, 109, 50, 72, 109, 55, 49, 109, 89, 47, 109, 49, 0, 11,
+			81, 114, 101, 110, 100, 101, 108, 107, 101, 122, 116, 101, 107, 32, 34, 66, 37, 48, 37, 91, 6, 15, 49, 110, 89, 110, 50, 107, 109, 47,
+			118, 0, 11, 81, 107, 195, 182, 115, 122, 195, 182, 110, 104, 101, 116, 197, 145, 32, 33, 66, 37, 48, 37, 91, 10, 6, 15, 112, 47, 113,
+			55, 107, 109, 47, 37, 49, 0, 11, 81, 195, 173, 116, 195, 169, 108, 104, 101, 116, 105, 107, 32, 38, 66, 37, 48, 37, 91, 10, 6, 15,
+			49, 39, 50, 119, 109, 50, 47, 52, 114, 55, 50, 37, 0, 11, 81, 107, 111, 110, 99, 101, 110, 116, 114, 195, 161, 108, 110, 105, 32, 22,
+			66, 37, 48, 37, 91, 10, 6, 15, 114, 52, 40, 55, 0, 11, 81, 195, 161, 114, 117, 108, 32, 23, 66, 37, 48, 37, 91, 10, 6, 15,
+			47, 37, 55, 39, 91, 0, 11, 81, 116, 105, 108, 111, 115, 32, 29, 66, 37, 48, 37, 91, 10, 6, 15, 111, 79, 109, 55, 47, 109, 49,
+			0, 11, 81, 195, 188, 103, 121, 101, 108, 116, 101, 107, 32, 22, 66, 37, 48, 37, 91, 10, 6, 55, 109, 50, 12, 109, 0, 11, 81, 108,
+			101, 110, 110, 101, 32, 35, 66, 37, 48, 37, 91, 10, 6, 15, 84, 114, 55, 108, 89, 47, 39, 47, 12, 108, 0, 11, 81, 118, 195, 161,
+			108, 97, 115, 122, 116, 111, 116, 116, 97, 32, 24, 66, 37, 48, 37, 91, 10, 6, 15, 55, 114, 88, 108, 72, 0, 11, 81, 108, 195, 161,
+			122, 97, 100, 32, 18, 66, 37, 48, 37, 91, 10, 6, 15, 113, 52, 0, 11, 81, 195, 169, 114, 32, 25, 66, 37, 48, 37, 91, 10, 6,
+			15, 107, 108, 47, 39, 47, 12, 0, 11, 81, 104, 97, 116, 111, 116, 116, 32, 32, 66, 37, 48, 37, 91, 10, 6, 15, 89, 111, 49, 91,
+			113, 81, 109, 91, 0, 11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 115, 32, 29, 66, 37, 48, 37, 91, 23, 89, 109, 52, 109,
+			47, 50, 113, 49, 0, 11, 81, 115, 122, 101, 114, 101, 116, 110, 195, 169, 107, 32, 39, 66, 37, 48, 37, 91, 23, 109, 79, 12, 111, 47,
+			65, 117, 49, 110, 72, 37, 49, 0, 11, 81, 101, 103, 121, 195, 188, 116, 116, 109, 197, 177, 107, 195, 182, 100, 105, 107, 32, 28, 66, 37,
+			48, 37, 91, 23, 57, 109, 55, 109, 88, 47, 113, 49, 0, 11, 81, 106, 101, 108, 101, 122, 116, 195, 169, 107, 32, 34, 66, 37, 48, 37,
+			91, 23, 89, 111, 49, 110, 91, 109, 71, 12, 109, 49, 0, 11, 81, 115, 122, 197, 177, 107, 195, 182, 115, 101, 98, 98, 101, 107, 32, 35,
+			66, 37, 48, 37, 91, 23, 49, 37, 57, 109, 55, 110, 55, 107, 109, 47, 118, 0, 11, 81, 107, 105, 106, 101, 108, 195, 182, 108, 104, 101,
+			116, 197, 145, 32, 34, 66, 37, 48, 37, 91, 23, 107, 108, 89, 50, 114, 55, 107, 108, 47, 115, 0, 11, 81, 104, 97, 115, 122, 110, 195,
+			161, 108, 104, 97, 116, 195, 179, 32, 12, 201, 80, 84, 150, 21, 162, 5, 82, 179, 139, 11, 36, 66, 37, 48, 37, 91, 23, 107, 108, 89,
+			50, 114, 55, 107, 108, 47, 115, 49, 0, 11, 81, 104, 97, 115, 122, 110, 195, 161, 108, 104, 97, 116, 195, 179, 107, 32, 35, 66, 37, 48,
+			37, 91, 23, 65, 109, 81, 89, 109, 52, 109, 89, 47, 113, 49, 0, 11, 81, 109, 101, 103, 115, 122, 101, 114, 101, 122, 116, 195, 169, 107,
+			32, 26, 66, 37, 48, 37, 91, 23, 55, 109, 55, 110, 84, 37, 49, 0, 11, 81, 108, 101, 108, 195, 182, 118, 105, 107, 32, 30, 66, 37,
+			48, 37, 91, 23, 47, 114, 65, 39, 81, 108, 80, 12, 108, 0, 11, 81, 116, 195, 161, 109, 111, 103, 97, 116, 106, 97, 32, 39, 66, 37,
+			48, 37, 91, 23, 109, 52, 109, 72, 65, 113, 67, 109, 88, 107, 109, 47, 37, 0, 11, 81, 101, 114, 101, 100, 109, 195, 169, 110, 121, 101,
+			122, 104, 101, 116, 105, 32, 23, 66, 37, 48, 37, 91, 23, 84, 39, 55, 47, 108, 49, 0, 11, 81, 118, 111, 108, 116, 97, 107, 32, 26,
+			66, 37, 48, 37, 91, 23, 49, 37, 72, 109, 52, 111, 55, 0, 11, 81, 107, 105, 100, 101, 114, 195, 188, 108, 32, 31, 66, 37, 48, 37,
+			91, 10, 6, 15, 83, 109, 55, 84, 109, 47, 107, 109, 47, 0, 11, 81, 102, 101, 108, 118, 101, 116, 104, 101, 116, 32, 42, 66, 37, 48,
+			37, 91, 23, 52, 109, 65, 113, 67, 49, 109, 72, 107, 109, 47, 111, 50, 49, 0, 11, 81, 114, 101, 109, 195, 169, 110, 121, 107, 101, 100,
+			104, 101, 116, 195, 188, 110, 107, 32, 18, 66, 37, 48, 37, 91, 23, 55, 109, 89, 0, 11, 81, 108, 101, 115, 122, 32, 30, 66, 37, 48,
+			37, 91, 23, 83, 109, 55, 65, 109, 52, 111, 55, 47, 0, 11, 81, 102, 101, 108, 109, 101, 114, 195, 188, 108, 116, 32, 38, 66, 37, 48,
+			37, 91, 23, 52, 114, 84, 37, 55, 114, 81, 112, 47, 39, 47, 12, 0, 11, 81, 114, 195, 161, 118, 105, 108, 195, 161, 103, 195, 173, 116,
+			111, 116, 116, 32, 67, 66, 37, 48, 37, 91, 23, 83, 37, 88, 109, 47, 107, 109, 47, 50, 109, 49, 23, 108, 6, 15, 79, 115, 79, 89,
+			109, 52, 109, 49, 113, 52, 47, 0, 11, 83, 102, 105, 122, 101, 116, 104, 101, 116, 110, 101, 107, 32, 97, 32, 103, 121, 195, 179, 103, 121,
+			115, 122, 101, 114, 101, 107, 195, 169, 114, 116, 32, 29, 66, 37, 48, 37, 91, 23, 47, 108, 52, 47, 108, 55, 65, 108, 88, 0, 11, 81,
+			116, 97, 114, 116, 97, 108, 109, 97, 122, 32, 24, 66, 37, 48, 37, 91, 23, 83, 39, 57, 50, 108, 49, 0, 11, 81, 102, 111, 108, 121,
+			110, 97, 107, 32, 21, 66, 37, 48, 37, 91, 23, 110, 52, 110, 65, 0, 11, 81, 195, 182, 114, 195, 182, 109, 32, 23, 66, 37, 48, 37,
+			91, 23, 71, 40, 49, 12, 108, 50, 0, 11, 81, 98, 117, 107, 107, 97, 110, 32, 29, 66, 37, 48, 37, 91, 23, 107, 37, 114, 67, 39,
+			55, 39, 65, 0, 11, 81, 104, 105, 195, 161, 110, 121, 111, 108, 111, 109, 32, 19, 66, 37, 48, 37, 91, 23, 55, 109, 47, 12, 0, 11,
+			81, 108, 101, 116, 116, 32, 19, 66, 37, 48, 37, 91, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 36, 66, 37, 48, 37,
+			91, 23, 65, 113, 52, 91, 113, 49, 55, 118, 72, 37, 49, 0, 11, 81, 109, 195, 169, 114, 115, 195, 169, 107, 108, 197, 145, 100, 105, 107,
+			32, 33, 66, 37, 48, 37, 91, 23, 49, 112, 91, 113, 52, 107, 109, 47, 37, 49, 0, 11, 81, 107, 195, 173, 115, 195, 169, 114, 104, 101,
+			116, 105, 107, 32, 26, 66, 37, 48, 37, 91, 23, 49, 37, 84, 114, 52, 50, 37, 0, 11, 81, 107, 105, 118, 195, 161, 114, 110, 105, 32,
+			28, 66, 37, 48, 37, 91, 23, 83, 109, 57, 55, 118, 72, 37, 49, 0, 11, 81, 102, 101, 106, 108, 197, 145, 100, 105, 107, 32, 22, 66,
+			37, 48, 37, 91, 23, 84, 114, 55, 37, 49, 0, 11, 81, 118, 195, 161, 108, 105, 107, 32, 20, 66, 37, 48, 37, 91, 23, 83, 111, 81,
+			12, 0, 11, 81, 102, 195, 188, 103, 103, 32, 27, 66, 37, 48, 37, 91, 23, 84, 114, 52, 107, 108, 47, 115, 0, 11, 81, 118, 195, 161,
+			114, 104, 97, 116, 195, 179, 32, 25, 66, 37, 48, 37, 91, 23, 71, 109, 37, 49, 47, 108, 47, 0, 11, 81, 98, 101, 105, 107, 116, 97,
+			116, 32, 26, 66, 37, 48, 37, 91, 23, 65, 109, 50, 109, 49, 111, 55, 0, 11, 81, 109, 101, 110, 101, 107, 195, 188, 108, 32, 20, 66,
+			37, 48, 37, 91, 23, 52, 115, 55, 108, 0, 11, 81, 114, 195, 179, 108, 97, 32, 38, 66, 37, 48, 37, 91, 23, 49, 37, 109, 81, 113,
+			89, 112, 47, 109, 47, 12, 109, 0, 11, 81, 107, 105, 101, 103, 195, 169, 115, 122, 195, 173, 116, 101, 116, 116, 101, 32, 16, 66, 37, 48,
+			37, 91, 23, 108, 88, 6, 0, 11, 81, 97, 122, 32, 33, 66, 37, 48, 37, 91, 23, 65, 109, 81, 65, 108, 52, 108, 79, 12, 39, 50,
+			0, 11, 81, 109, 101, 103, 109, 97, 114, 97, 100, 106, 111, 110, 32, 36, 66, 37, 48, 37, 91, 23, 83, 109, 57, 55, 109, 89, 47, 109,
+			47, 12, 109, 49, 0, 11, 81, 102, 101, 106, 108, 101, 115, 122, 116, 101, 116, 116, 101, 107, 32, 31, 66, 37, 48, 37, 91, 15, 107, 6,
+			108, 57, 55, 108, 50, 72, 115, 49, 0, 11, 81, 104, 97, 106, 108, 97, 110, 100, 195, 179, 107, 32, 24, 66, 37, 48, 37, 91, 23, 40,
+			79, 108, 50, 108, 88, 0, 11, 81, 117, 103, 121, 97, 110, 97, 122, 32, 40, 66, 37, 48, 37, 91, 23, 49, 108, 47, 108, 89, 47, 52,
+			115, 83, 114, 107, 39, 88, 0, 11, 81, 107, 97, 116, 97, 115, 122, 116, 114, 195, 179, 102, 195, 161, 104, 111, 122, 32, 33, 66, 37, 48,
+			37, 91, 23, 83, 39, 81, 55, 108, 55, 49, 39, 88, 39, 65, 0, 11, 81, 102, 111, 103, 108, 97, 108, 107, 111, 122, 111, 109, 32, 36,
+			66, 37, 48, 37, 91, 23, 109, 55, 118, 83, 39, 52, 72, 40, 55, 107, 108, 47, 0, 11, 81, 101, 108, 197, 145, 102, 111, 114, 100, 117,
+			108, 104, 97, 116, 32, 37, 66, 37, 48, 37, 91, 23, 49, 113, 48, 88, 118, 72, 107, 109, 47, 50, 109, 49, 0, 11, 81, 107, 195, 169,
+			112, 122, 197, 145, 100, 104, 101, 116, 110, 101, 107, 32, 21, 66, 37, 48, 37, 91, 23, 55, 109, 107, 109, 47, 0, 11, 81, 108, 101, 104,
+			101, 116, 32, 25, 66, 37, 48, 37, 91, 23, 49, 109, 88, 109, 55, 47, 109, 0, 11, 81, 107, 101, 122, 101, 108, 116, 101, 32, 29, 66,
+			37, 48, 37, 91, 23, 89, 111, 55, 109, 47, 109, 47, 12, 0, 11, 81, 115, 122, 195, 188, 108, 101, 116, 101, 116, 116, 32, 80, 66, 37,
+			48, 37, 91, 23, 49, 37, 47, 110, 55, 47, 107, 109, 47, 12, 113, 49, 23, 84, 39, 55, 50, 108, 23, 108, 23, 49, 113, 52, 72, 118,
+			112, 84, 109, 49, 109, 47, 0, 11, 84, 107, 105, 116, 195, 182, 108, 116, 104, 101, 116, 116, 195, 169, 107, 32, 118, 111, 108, 110, 97, 32,
+			97, 32, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 107, 101, 116, 32, 36, 66, 37, 48, 37, 91, 23, 108, 23, 49, 113, 52, 72,
+			118, 112, 84, 109, 47, 0, 11, 82, 97, 32, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116, 32, 26, 66, 37, 48, 37, 91, 23,
+			83, 109, 50, 12, 114, 55, 12, 0, 11, 81, 102, 101, 110, 110, 195, 161, 108, 108, 32, 36, 66, 37, 48, 37, 91, 23, 109, 55, 118, 83,
+			39, 52, 72, 40, 55, 50, 108, 49, 0, 11, 81, 101, 108, 197, 145, 102, 111, 114, 100, 117, 108, 110, 97, 107, 32, 29, 66, 37, 48, 37,
+			91, 23, 83, 109, 55, 52, 108, 49, 47, 108, 65, 0, 11, 81, 102, 101, 108, 114, 97, 107, 116, 97, 109, 32, 35, 66, 37, 48, 37, 91,
+			15, 83, 109, 55, 109, 57, 47, 49, 109, 89, 47, 109, 65, 0, 11, 81, 102, 101, 108, 101, 106, 116, 107, 101, 122, 116, 101, 109, 32, 22,
+			66, 37, 48, 37, 91, 15, 52, 109, 76, 109, 81, 0, 11, 81, 114, 101, 99, 115, 101, 103, 32, 28, 66, 37, 48, 37, 91, 15, 84, 114,
+			55, 47, 39, 88, 37, 49, 0, 11, 81, 118, 195, 161, 108, 116, 111, 122, 105, 107, 32, 40, 66, 37, 48, 37, 91, 15, 49, 109, 55, 12,
+			15, 83, 37, 88, 109, 47, 50, 37, 111, 49, 0, 11, 82, 107, 101, 108, 108, 32, 102, 105, 122, 101, 116, 110, 105, 195, 188, 107, 32, 29,
+			66, 37, 48, 37, 91, 15, 109, 55, 37, 91, 65, 109, 52, 47, 109, 0, 11, 81, 101, 108, 105, 115, 109, 101, 114, 116, 101, 32, 23, 66,
+			37, 48, 37, 91, 10, 6, 15, 108, 49, 108, 47, 12, 0, 11, 81, 97, 107, 97, 100, 116, 32, 13, 138, 118, 97, 108, 97, 107, 105, 116,
+			197, 145, 108, 11, 9, 198, 89, 195, 20, 61, 162, 75, 11, 5, 194, 37, 48, 11, 5, 194, 37, 48, 72, 0, 11, 200, 90, 35, 5, 44,
+			81, 5, 81, 64, 11, 33, 72, 53, 85, 1, 80, 179, 218, 36, 176, 65, 40, 47, 108, 47, 49, 39, 88, 37, 49, 10, 6, 15, 65, 109,
+			81, 0, 11, 81, 109, 101, 103, 32, 48, 73, 16, 242, 213, 52, 83, 148, 84, 212, 129, 72, 39, 49, 40, 65, 109, 50, 47, 40, 65, 52,
+			108, 23, 107, 37, 84, 108, 47, 49, 39, 88, 84, 108, 0, 11, 81, 104, 105, 118, 97, 116, 107, 111, 122, 118, 97, 32, 9, 198, 89, 195,
+			1, 77, 160, 64, 11, 11, 200, 25, 34, 83, 78, 85, 5, 81, 64, 11, 11, 200, 88, 243, 129, 80, 179, 218, 36, 176, 11, 11, 200, 53,
+			85, 1, 80, 179, 218, 36, 176, 11, 0, 9, 198, 81, 195, 3, 113, 32, 64, 11, 9, 198, 54, 113, 10, 113, 32, 64, 11, 9, 198, 77,
+			161, 82, 77, 167, 13, 11, 0, 9, 198, 66, 35, 4, 113, 166, 129, 11, 7, 132, 110, 197, 145, 115, 11, 13, 138, 116, 105, 115, 122, 116,
+			101, 108, 197, 145, 105, 11, 12, 201, 77, 161, 77, 80, 19, 170, 88, 19, 0, 11, 0, 21, 146, 101, 103, 121, 195, 188, 116, 116, 109, 197,
+			177, 107, 195, 182, 100, 195, 169, 115, 116, 11, 8, 197, 90, 33, 5, 56, 144, 11, 13, 202, 36, 229, 34, 104, 216, 142, 100, 82, 194, 20,
+			11, 7, 196, 76, 81, 229, 80, 11, 9, 198, 20, 118, 69, 80, 83, 64, 11, 13, 202, 24, 82, 140, 21, 54, 148, 137, 56, 146, 20, 11,
+			18, 143, 109, 101, 103, 101, 108, 197, 145, 122, 195, 169, 115, 195, 169, 114, 101, 11, 8, 133, 101, 114, 197, 145, 115, 11, 0, 27, 4, 101,
+			115, 197, 145, 109, 91, 118, 23, 52, 113, 89, 113, 47, 0, 11, 81, 114, 195, 169, 115, 122, 195, 169, 116, 32, 39, 74, 46, 131, 20, 78,
+			33, 214, 21, 72, 147, 36, 49, 110, 55, 76, 113, 81, 84, 109, 47, 113, 91, 37, 23, 91, 39, 52, 39, 50, 0, 11, 81, 115, 111, 114,
+			111, 110, 32, 29, 4, 101, 115, 197, 145, 109, 91, 118, 23, 48, 39, 50, 80, 108, 37, 50, 0, 11, 81, 112, 111, 110, 116, 106, 97, 105,
+			110, 32, 9, 198, 81, 196, 136, 20, 198, 64, 11, 14, 139, 107, 195, 173, 118, 195, 188, 108, 114, 197, 145, 108, 11, 10, 199, 20, 200, 146,
+			137, 56, 146, 20, 11, 9, 198, 25, 85, 20, 5, 67, 137, 11, 7, 132, 101, 115, 197, 145, 11, 9, 198, 77, 161, 82, 21, 163, 137, 11,
+			0, 15, 204, 112, 195, 1, 53, 66, 84, 45, 196, 156, 88, 19, 0, 11, 15, 140, 98, 197, 177, 110, 101, 115, 101, 116, 114, 197, 145, 108,
+			11, 10, 199, 24, 244, 132, 149, 68, 220, 44, 11, 7, 132, 110, 197, 145, 116, 11, 0, 12, 201, 52, 81, 205, 20, 229, 34, 78, 36, 133,
+			11, 24, 67, 32, 19, 135, 107, 108, 50, 81, 15, 65, 37, 108, 47, 12, 0, 11, 81, 109, 105, 97, 116, 116, 32, 7, 196, 24, 83, 5,
+			48, 11, 6, 195, 32, 19, 135, 11, 0, 15, 204, 44, 86, 132, 20, 216, 142, 100, 86, 162, 78, 36, 133, 11, 22, 66, 20, 192, 109, 55,
+			23, 48, 113, 50, 89, 47, 0, 11, 81, 112, 195, 169, 110, 122, 116, 32, 27, 66, 20, 192, 109, 55, 23, 108, 6, 15, 83, 113, 52, 83,
+			37, 0, 11, 82, 97, 32, 102, 195, 169, 114, 102, 105, 32, 27, 66, 20, 192, 109, 55, 23, 65, 37, 50, 72, 109, 50, 49, 37, 0, 11,
+			81, 109, 105, 110, 100, 101, 110, 107, 105, 32, 25, 66, 20, 192, 109, 55, 10, 6, 15, 50, 109, 49, 47, 109, 49, 0, 11, 81, 110, 101,
+			107, 116, 101, 107, 32, 35, 66, 20, 192, 109, 55, 6, 23, 108, 6, 15, 52, 109, 50, 72, 118, 52, 110, 49, 0, 11, 82, 97, 32, 114,
+			101, 110, 100, 197, 145, 114, 195, 182, 107, 32, 14, 139, 109, 197, 177, 107, 195, 182, 100, 195, 169, 115, 101, 11, 13, 202, 52, 81, 201, 76,
+			209, 82, 137, 56, 146, 20, 11, 10, 135, 115, 122, 197, 177, 114, 197, 145, 11, 9, 198, 80, 19, 156, 13, 55, 20, 11, 7, 196, 77, 167,
+			12, 48, 11, 5, 194, 20, 192, 11, 14, 66, 36, 64, 37, 72, 118, 91, 109, 71, 12, 0, 25, 46, 0, 11, 200, 13, 58, 11, 44, 83,
+			162, 76, 80, 11, 9, 3, 95, 50, 48, 107, 116, 89, 0, 0, 9, 198, 80, 84, 150, 20, 177, 84, 11, 40, 7, 102, 101, 108, 104, 197,
+			145, 115, 83, 109, 55, 107, 118, 91, 23, 37, 72, 118, 89, 108, 49, 71, 108, 50, 0, 11, 81, 105, 100, 197, 145, 115, 122, 97, 107, 98,
+			97, 110, 32, 45, 7, 102, 101, 108, 104, 197, 145, 115, 83, 109, 55, 107, 118, 91, 23, 47, 109, 52, 111, 55, 109, 47, 109, 49, 23, 37,
+			91, 0, 11, 82, 116, 101, 114, 195, 188, 108, 101, 116, 101, 107, 32, 105, 115, 32, 15, 140, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197,
+			145, 116, 11, 9, 198, 88, 86, 133, 82, 36, 197, 11, 14, 203, 52, 81, 194, 172, 229, 5, 82, 36, 226, 72, 80, 11, 10, 199, 41, 196,
+			129, 18, 34, 220, 80, 11, 10, 135, 102, 101, 108, 104, 197, 145, 115, 11, 0, 10, 67, 56, 21, 15, 50, 114, 47, 115, 0, 11, 200, 24,
+			244, 141, 112, 199, 19, 113, 64, 11, 15, 204, 52, 81, 211, 106, 179, 148, 21, 72, 147, 137, 33, 64, 11, 9, 198, 5, 163, 206, 8, 19,
+			128, 11, 11, 200, 24, 244, 132, 149, 71, 19, 113, 64, 11, 9, 198, 113, 4, 137, 48, 148, 192, 15, 0, 9, 198, 24, 83, 6, 60, 119,
+			19, 11, 7, 196, 64, 81, 9, 28, 11, 8, 197, 52, 243, 132, 60, 64, 11, 7, 196, 16, 243, 15, 28, 11, 0, 24, 67, 157, 64, 64,
+			115, 47, 108, 23, 47, 108, 52, 47, 115, 0, 11, 81, 116, 97, 114, 116, 195, 179, 32, 11, 200, 25, 34, 83, 78, 85, 34, 76, 80, 11,
+			13, 202, 46, 131, 20, 78, 33, 214, 21, 72, 147, 20, 11, 6, 195, 4, 67, 137, 11, 6, 195, 157, 32, 64, 11, 8, 195, 157, 64, 64,
+			11, 15, 17, 0, 14, 203, 112, 195, 28, 77, 3, 206, 80, 165, 75, 5, 64, 11, 8, 197, 32, 246, 148, 112, 176, 11, 7, 196, 52, 20,
+			16, 4, 11, 7, 196, 44, 20, 20, 4, 11, 8, 133, 116, 197, 145, 108, 101, 11, 0, 22, 5, 116, 197, 177, 110, 116, 47, 117, 50, 47,
+			10, 6, 15, 49, 37, 0, 11, 81, 107, 105, 32, 20, 5, 116, 197, 177, 110, 116, 47, 117, 50, 47, 23, 109, 55, 0, 11, 81, 101, 108,
+			32, 8, 133, 116, 197, 177, 110, 116, 11, 9, 198, 52, 243, 132, 81, 194, 192, 11, 8, 133, 116, 197, 177, 110, 116, 11, 0, 9, 198, 84,
+			226, 103, 10, 115, 0, 11, 10, 199, 44, 244, 136, 5, 71, 18, 80, 11, 57, 70, 24, 241, 193, 17, 64, 64, 83, 39, 81, 108, 47, 12,
+			108, 23, 108, 88, 6, 23, 109, 55, 49, 113, 48, 88, 109, 55, 113, 91, 109, 49, 109, 47, 0, 11, 82, 97, 122, 32, 101, 108, 107, 195,
+			169, 112, 122, 101, 108, 195, 169, 115, 101, 107, 101, 116, 32, 9, 198, 24, 241, 193, 17, 64, 64, 11, 9, 198, 88, 149, 1, 81, 64, 64,
+			11, 9, 198, 81, 81, 1, 81, 64, 64, 11, 13, 4, 95, 98, 114, 118, 83, 113, 55, 49, 110, 52, 0, 0, 13, 202, 89, 195, 1, 77,
+			165, 28, 76, 242, 193, 80, 11, 6, 195, 44, 244, 129, 11, 12, 201, 112, 195, 1, 53, 66, 84, 45, 196, 128, 11, 21, 69, 77, 169, 214,
+			4, 192, 89, 115, 84, 108, 55, 23, 108, 88, 0, 11, 81, 97, 122, 32, 25, 70, 30, 36, 5, 44, 129, 90, 81, 113, 48, 109, 49, 107,
+			109, 88, 23, 37, 91, 0, 11, 81, 105, 115, 32, 8, 197, 77, 169, 214, 4, 192, 11, 8, 197, 77, 169, 214, 4, 192, 11, 0, 9, 198,
+			80, 19, 28, 49, 64, 77, 11, 58, 68, 61, 32, 156, 56, 39, 52, 71, 114, 50, 23, 84, 37, 49, 47, 39, 52, 23, 65, 37, 50, 37,
+			89, 47, 109, 52, 109, 55, 50, 110, 49, 0, 11, 82, 118, 105, 107, 116, 111, 114, 32, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108,
+			110, 195, 182, 107, 32, 9, 198, 61, 37, 143, 77, 48, 76, 11, 9, 198, 137, 37, 5, 81, 65, 77, 11, 6, 195, 49, 195, 153, 11, 0,
+			23, 67, 37, 69, 0, 37, 47, 12, 23, 91, 109, 50, 49, 37, 0, 11, 81, 115, 101, 110, 107, 105, 32, 49, 71, 52, 81, 207, 48, 71,
+			19, 36, 65, 109, 81, 39, 55, 72, 114, 91, 37, 23, 55, 109, 107, 109, 47, 118, 91, 113, 81, 12, 109, 55, 0, 11, 81, 108, 101, 104,
+			101, 116, 197, 145, 115, 195, 169, 103, 103, 101, 108, 32, 17, 67, 37, 69, 0, 37, 47, 12, 23, 37, 91, 0, 11, 81, 105, 115, 32, 29,
+			67, 37, 69, 0, 37, 47, 12, 23, 39, 55, 84, 108, 91, 47, 108, 65, 0, 11, 81, 111, 108, 118, 97, 115, 116, 97, 109, 32, 9, 198,
+			48, 81, 202, 60, 32, 128, 11, 23, 67, 37, 69, 0, 37, 47, 12, 55, 114, 47, 12, 108, 0, 11, 81, 108, 195, 161, 116, 116, 97, 32,
+			9, 198, 48, 20, 211, 4, 32, 128, 11, 8, 197, 77, 168, 140, 20, 224, 11, 6, 195, 37, 69, 0, 11, 0, 12, 201, 44, 145, 133, 41,
+			65, 84, 80, 83, 64, 11, 12, 201, 24, 147, 129, 57, 54, 165, 72, 246, 128, 11, 14, 67, 52, 196, 218, 109, 65, 109, 55, 109, 89, 0,
+			42, 42, 13, 4, 95, 97, 99, 50, 49, 109, 47, 12, 118, 91, 0, 0, 12, 201, 52, 81, 212, 21, 68, 218, 21, 69, 0, 11, 9, 198,
+			77, 161, 77, 136, 198, 64, 11, 7, 196, 89, 196, 143, 76, 11, 9, 198, 149, 72, 140, 82, 34, 192, 11, 0, 35, 69, 32, 83, 25, 20,
+			224, 107, 109, 57, 109, 50, 23, 49, 37, 107, 108, 79, 12, 114, 49, 0, 11, 81, 107, 105, 104, 97, 103, 121, 106, 195, 161, 107, 32, 8,
+			197, 32, 83, 25, 20, 224, 11, 0, 9, 198, 41, 196, 148, 84, 226, 192, 11, 0, 9, 198, 52, 240, 137, 48, 56, 135, 11, 38, 67, 5,
+			163, 206, 108, 88, 39, 50, 10, 6, 15, 81, 39, 50, 72, 39, 55, 49, 39, 72, 50, 37, 0, 11, 81, 103, 111, 110, 100, 111, 108, 107,
+			111, 100, 110, 105, 32, 6, 195, 5, 163, 206, 11, 11, 200, 161, 52, 218, 21, 97, 84, 56, 144, 11, 7, 196, 137, 37, 5, 16, 11, 7,
+			196, 82, 33, 197, 16, 11, 0, 12, 201, 20, 193, 40, 57, 74, 20, 82, 34, 192, 11, 0, 13, 202, 36, 225, 143, 72, 215, 3, 38, 120,
+			146, 80, 11, 0, 27, 67, 8, 19, 139, 71, 108, 50, 49, 23, 91, 109, 81, 112, 47, 37, 0, 11, 81, 115, 101, 103, 195, 173, 116, 105,
+			32, 0, 6, 195, 81, 195, 131, 11, 6, 195, 44, 20, 0, 11, 0, 8, 197, 24, 82, 235, 17, 64, 11, 9, 198, 80, 84, 212, 136, 33,
+			64, 11, 9, 198, 24, 82, 34, 72, 33, 64, 11, 9, 198, 13, 49, 82, 136, 33, 64, 11, 0, 9, 198, 80, 84, 218, 80, 85, 0, 11,
+			51, 72, 52, 147, 12, 37, 196, 132, 61, 48, 65, 37, 55, 37, 114, 52, 72, 39, 91, 23, 50, 113, 48, 89, 114, 65, 55, 114, 55, 114,
+			91, 0, 11, 81, 110, 195, 169, 112, 115, 122, 195, 161, 109, 108, 195, 161, 108, 195, 161, 115, 32, 9, 198, 46, 131, 153, 88, 85, 0, 11,
+			8, 197, 48, 83, 142, 136, 176, 11, 15, 4, 95, 50, 113, 120, 65, 114, 91, 39, 72, 37, 49, 108, 0, 0, 28, 71, 77, 167, 13, 84,
+			226, 210, 4, 89, 114, 65, 40, 50, 49, 52, 108, 10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 41, 70, 34, 181, 133, 49, 146, 192,
+			107, 111, 84, 109, 57, 49, 10, 6, 15, 114, 47, 65, 113, 52, 118, 57, 117, 0, 11, 81, 195, 161, 116, 109, 195, 169, 114, 197, 145, 106,
+			197, 177, 32, 22, 68, 34, 84, 133, 52, 107, 112, 52, 109, 65, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 29, 70, 20, 211, 37,
+			80, 85, 20, 109, 65, 55, 112, 47, 109, 47, 12, 23, 108, 52, 52, 108, 0, 11, 81, 97, 114, 114, 97, 32, 10, 199, 77, 167, 13, 84,
+			226, 210, 4, 11, 9, 198, 76, 81, 229, 80, 85, 20, 11, 34, 70, 20, 211, 37, 80, 85, 20, 109, 65, 55, 112, 47, 109, 47, 12, 23,
+			119, 37, 49, 71, 109, 50, 0, 11, 81, 99, 105, 107, 107, 98, 101, 110, 32, 38, 70, 20, 211, 37, 80, 85, 20, 109, 65, 55, 112, 47,
+			109, 47, 12, 23, 89, 109, 52, 84, 109, 88, 109, 47, 0, 11, 81, 115, 122, 101, 114, 118, 101, 122, 101, 116, 32, 24, 149, 98, 197, 177,
+			110, 99, 115, 101, 108, 101, 107, 109, 195, 169, 110, 121, 101, 107, 195, 169, 114, 116, 11, 0, 7, 66, 29, 144, 79, 113, 0, 51, 72, 13,
+			48, 80, 4, 72, 139, 72, 16, 76, 108, 48, 108, 72, 113, 49, 52, 108, 23, 91, 37, 50, 76, 23, 49, 37, 55, 114, 47, 114, 91, 0,
+			11, 82, 115, 105, 110, 99, 115, 32, 107, 105, 108, 195, 161, 116, 195, 161, 115, 32, 8, 197, 20, 210, 65, 81, 64, 11, 9, 134, 101, 114,
+			114, 197, 145, 108, 11, 7, 196, 57, 154, 140, 80, 11, 15, 5, 95, 48, 77, 49, 111, 109, 88, 52, 109, 72, 37, 49, 0, 0, 12, 201,
+			32, 20, 132, 88, 84, 133, 44, 85, 0, 11, 10, 135, 107, 195, 182, 122, 197, 177, 108, 11, 0, 30, 68, 168, 160, 66, 8, 116, 57, 108,
+			71, 12, 23, 83, 109, 55, 108, 72, 108, 47, 0, 11, 81, 102, 101, 108, 97, 100, 97, 116, 32, 0, 10, 199, 57, 147, 205, 61, 37, 76,
+			80, 11, 11, 200, 53, 83, 139, 4, 145, 5, 40, 80, 11, 9, 198, 24, 150, 133, 80, 225, 75, 11, 11, 200, 72, 83, 132, 77, 161, 82,
+			8, 80, 11, 6, 195, 32, 20, 131, 11, 6, 195, 64, 84, 131, 11, 16, 9, 95, 35, 45, 195, 169, 114, 197, 145, 108, 113, 52, 118, 55,
+			0, 0, 12, 201, 81, 196, 135, 100, 19, 28, 76, 242, 192, 11, 10, 199, 8, 83, 5, 77, 169, 204, 80, 11, 13, 138, 109, 111, 100, 101,
+			108, 108, 98, 197, 145, 108, 11, 0, 11, 200, 77, 163, 210, 149, 71, 19, 112, 224, 11, 11, 136, 106, 101, 108, 108, 101, 103, 197, 177, 11,
+			8, 197, 149, 97, 75, 21, 64, 11, 9, 198, 50, 35, 153, 20, 113, 64, 11, 11, 136, 107, 101, 114, 195, 188, 108, 197, 145, 11, 10, 199,
+			24, 243, 148, 61, 48, 66, 8, 11, 0, 8, 197, 74, 36, 218, 137, 64, 11, 9, 134, 115, 111, 102, 197, 145, 114, 11, 15, 140, 102, 101,
+			108, 195, 188, 108, 101, 116, 98, 197, 145, 108, 11, 9, 198, 4, 192, 80, 40, 18, 84, 11, 8, 197, 44, 20, 10, 60, 224, 11, 8, 133,
+			110, 101, 118, 197, 177, 11, 0, 22, 67, 20, 225, 0, 116, 57, 91, 4, 39, 52, 0, 44, 82, 111, 102, 32, 108, 105, 110, 101, 32, 11,
+			200, 8, 85, 162, 80, 83, 8, 21, 160, 11, 12, 201, 40, 83, 5, 57, 66, 197, 105, 65, 75, 11, 0, 7, 196, 14, 33, 197, 80, 11,
+			9, 198, 80, 17, 211, 112, 119, 20, 11, 21, 68, 90, 33, 197, 80, 84, 113, 81, 109, 47, 23, 113, 52, 0, 11, 81, 195, 169, 114, 32,
+			17, 67, 80, 84, 218, 47, 109, 89, 15, 49, 37, 0, 11, 81, 107, 105, 32, 15, 204, 32, 20, 218, 57, 195, 8, 5, 64, 84, 48, 19,
+			128, 11, 5, 194, 44, 32, 11, 7, 196, 90, 33, 197, 80, 11, 14, 139, 109, 105, 110, 197, 145, 115, 195, 169, 103, 197, 177, 11, 6, 195,
+			42, 131, 128, 11, 6, 195, 80, 84, 218, 11, 5, 194, 20, 224, 11, 5, 194, 20, 224, 72, 16, 66, 44, 32, 49, 110, 52, 111, 55, 71,
+			109, 55, 111, 55, 0, 25, 0, 18, 143, 106, 101, 108, 101, 110, 108, 195, 169, 116, 195, 169, 114, 197, 145, 108, 11, 11, 200, 72, 83, 132,
+			20, 193, 84, 137, 64, 11, 11, 200, 72, 83, 132, 77, 161, 82, 137, 64, 11, 6, 195, 29, 41, 198, 11, 15, 4, 95, 48, 90, 53, 89,
+			114, 88, 109, 88, 52, 109, 72, 0, 13, 3, 95, 51, 88, 107, 108, 52, 65, 37, 50, 119, 0, 0, 11, 200, 46, 36, 132, 137, 49, 75,
+			21, 64, 11, 7, 196, 24, 82, 130, 20, 11, 31, 68, 72, 18, 148, 4, 52, 108, 57, 47, 108, 23, 81, 113, 48, 109, 55, 50, 37, 0,
+			11, 81, 103, 195, 169, 112, 101, 108, 110, 105, 32, 11, 136, 195, 169, 108, 197, 145, 107, 101, 116, 11, 7, 196, 24, 82, 34, 72, 11, 11,
+			200, 18, 131, 148, 137, 49, 75, 21, 64, 11, 7, 196, 72, 18, 148, 4, 11, 15, 4, 95, 48, 90, 52, 47, 112, 88, 109, 88, 52, 109,
+			72, 0, 9, 3, 95, 48, 67, 89, 114, 88, 0, 0, 37, 70, 20, 208, 133, 72, 83, 128, 109, 65, 71, 109, 52, 109, 50, 23, 91, 109,
+			81, 112, 47, 107, 109, 47, 0, 11, 81, 115, 101, 103, 195, 173, 116, 104, 101, 116, 32, 22, 68, 81, 33, 78, 16, 47, 52, 109, 50, 72,
+			10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 42, 70, 89, 195, 12, 4, 192, 84, 84, 114, 55, 12, 108, 55, 108, 47, 23, 49, 110,
+			88, 55, 109, 65, 113, 67, 109, 0, 11, 81, 107, 195, 182, 122, 108, 101, 109, 195, 169, 110, 121, 101, 32, 10, 199, 77, 162, 210, 37, 5,
+			5, 80, 11, 9, 198, 37, 50, 207, 49, 196, 192, 11, 9, 198, 20, 208, 133, 72, 83, 128, 11, 17, 142, 106, 101, 108, 101, 110, 116, 197,
+			145, 115, 195, 169, 103, 197, 177, 11, 7, 196, 90, 131, 7, 100, 11, 7, 196, 81, 196, 135, 100, 11, 18, 4, 95, 48, 90, 55, 47, 112,
+			88, 65, 37, 55, 37, 39, 65, 39, 72, 0, 0, 12, 201, 52, 81, 193, 48, 179, 212, 113, 55, 20, 11, 17, 142, 107, 195, 169, 112, 118,
+			105, 115, 101, 108, 197, 145, 107, 101, 116, 11, 15, 4, 95, 48, 90, 54, 65, 37, 55, 37, 39, 65, 39, 72, 0, 0, 6, 195, 32, 83,
+			25, 11, 10, 199, 77, 167, 13, 149, 66, 1, 80, 11, 15, 204, 76, 81, 226, 16, 84, 218, 46, 134, 168, 44, 177, 76, 11, 14, 203, 24,
+			82, 140, 21, 54, 148, 137, 49, 75, 21, 64, 11, 6, 195, 137, 96, 64, 11, 6, 195, 32, 83, 25, 11, 6, 195, 32, 83, 25, 11, 12,
+			4, 95, 48, 90, 49, 47, 37, 88, 109, 72, 0, 0, 34, 68, 8, 83, 142, 20, 71, 109, 50, 12, 109, 23, 116, 57, 72, 39, 50, 91,
+			114, 81, 0, 11, 81, 195, 186, 106, 100, 111, 110, 115, 195, 161, 103, 32, 52, 71, 77, 170, 203, 78, 33, 197, 76, 89, 111, 49, 91, 113,
+			81, 109, 91, 23, 37, 50, 47, 113, 89, 49, 109, 72, 113, 91, 109, 49, 109, 47, 0, 11, 81, 105, 110, 116, 195, 169, 122, 107, 101, 100,
+			195, 169, 115, 101, 107, 101, 116, 32, 9, 198, 52, 147, 132, 20, 229, 0, 11, 28, 68, 8, 83, 142, 20, 71, 109, 50, 12, 109, 15, 71,
+			37, 89, 47, 39, 91, 0, 11, 81, 98, 105, 122, 116, 111, 115, 32, 11, 200, 82, 132, 148, 136, 225, 84, 21, 64, 11, 7, 196, 8, 83,
+			142, 20, 11, 9, 198, 52, 147, 132, 20, 229, 0, 9, 0, 9, 198, 13, 48, 80, 5, 67, 203, 11, 12, 201, 32, 243, 140, 5, 2, 156,
+			74, 115, 0, 11, 7, 196, 90, 35, 5, 52, 11, 12, 4, 95, 48, 90, 51, 109, 88, 52, 109, 72, 0, 0, 11, 200, 52, 17, 217, 5,
+			39, 26, 80, 16, 11, 8, 197, 32, 21, 28, 78, 160, 11, 33, 70, 60, 193, 1, 49, 32, 64, 39, 55, 72, 108, 55, 52, 108, 6, 15,
+			71, 40, 49, 12, 108, 50, 0, 11, 81, 98, 117, 107, 107, 97, 110, 32, 69, 68, 112, 197, 1, 48, 114, 55, 47, 108, 55, 10, 6, 15,
+			49, 112, 50, 114, 55, 47, 10, 6, 15, 89, 39, 55, 81, 114, 55, 47, 108, 47, 114, 91, 39, 49, 108, 47, 0, 11, 82, 107, 195, 173,
+			110, 195, 161, 108, 116, 32, 115, 122, 111, 108, 103, 195, 161, 108, 116, 97, 116, 195, 161, 115, 111, 107, 97, 116, 32, 7, 196, 112, 197, 1,
+			48, 11, 15, 204, 13, 48, 84, 48, 18, 207, 105, 64, 84, 113, 55, 20, 11, 12, 201, 136, 193, 84, 80, 20, 148, 4, 215, 20, 11, 9,
+			198, 60, 193, 1, 49, 32, 64, 11, 17, 66, 37, 96, 50, 113, 79, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 12, 4, 95, 48, 90,
+			50, 89, 114, 88, 108, 72, 0, 0, 12, 201, 112, 195, 1, 53, 3, 204, 29, 196, 128, 11, 33, 69, 34, 37, 20, 20, 192, 107, 113, 47,
+			12, 109, 55, 23, 109, 88, 109, 55, 118, 47, 12, 0, 11, 81, 101, 122, 101, 108, 197, 145, 116, 116, 32, 16, 205, 46, 133, 5, 48, 86,
+			133, 81, 68, 226, 28, 82, 197, 80, 11, 8, 197, 148, 120, 146, 80, 80, 11, 9, 198, 48, 89, 82, 80, 19, 64, 11, 8, 197, 148, 120,
+			146, 80, 80, 11, 9, 198, 77, 167, 14, 80, 19, 64, 11, 9, 198, 21, 53, 34, 42, 35, 128, 17, 0, 9, 198, 60, 193, 1, 49, 197,
+			0, 11, 26, 69, 44, 148, 197, 8, 32, 49, 37, 91, 12, 109, 71, 12, 23, 109, 91, 118, 0, 11, 81, 101, 115, 197, 145, 32, 9, 198,
+			21, 54, 139, 161, 165, 0, 11, 8, 197, 42, 133, 20, 20, 176, 11, 0, 14, 3, 226, 136, 158, 84, 109, 81, 47, 109, 55, 109, 50, 0,
+			10, 199, 40, 83, 12, 20, 113, 197, 48, 11, 6, 195, 25, 197, 0, 11, 0, 7, 196, 24, 241, 207, 44, 76, 27, 70, 52, 84, 171, 49,
+			65, 75, 65, 109, 52, 111, 55, 47, 109, 49, 23, 83, 109, 55, 0, 11, 81, 102, 101, 108, 32, 9, 198, 36, 225, 9, 112, 41, 204, 11,
+			9, 198, 66, 118, 143, 49, 64, 75, 11, 9, 198, 14, 83, 69, 44, 83, 128, 11, 8, 197, 81, 81, 28, 78, 160, 11, 6, 195, 4, 197,
+			167, 11, 8, 197, 24, 145, 217, 20, 192, 11, 9, 198, 48, 83, 142, 137, 65, 75, 11, 9, 198, 32, 149, 20, 137, 65, 75, 11, 0, 15,
+			3, 226, 137, 160, 50, 109, 65, 109, 79, 109, 50, 55, 118, 0, 6, 195, 52, 148, 133, 11, 19, 67, 9, 81, 192, 71, 40, 81, 23, 84,
+			108, 50, 0, 11, 81, 118, 97, 110, 32, 12, 201, 80, 20, 1, 77, 165, 1, 49, 64, 77, 11, 20, 68, 46, 132, 171, 48, 49, 110, 52,
+			111, 55, 23, 37, 91, 0, 11, 81, 105, 115, 32, 14, 139, 102, 197, 145, 111, 115, 122, 116, 195, 161, 106, 116, 11, 12, 201, 46, 132, 142,
+			100, 86, 133, 80, 129, 90, 11, 5, 194, 172, 192, 11, 9, 196, 46, 132, 171, 48, 11, 15, 17, 0, 38, 72, 44, 85, 133, 76, 80, 130,
+			20, 224, 49, 109, 84, 109, 91, 109, 71, 12, 109, 50, 10, 6, 15, 108, 50, 12, 114, 55, 0, 11, 81, 97, 110, 110, 195, 161, 108, 32,
+			0, 12, 3, 226, 136, 154, 79, 110, 49, 57, 109, 55, 0, 12, 201, 57, 146, 76, 5, 66, 207, 105, 64, 75, 11, 16, 66, 168, 224, 116,
+			79, 50, 109, 84, 109, 88, 109, 47, 12, 0, 25, 0, 26, 69, 4, 192, 75, 84, 192, 108, 55, 108, 49, 40, 55, 23, 65, 108, 57, 72,
+			0, 11, 81, 109, 97, 106, 100, 32, 37, 67, 88, 19, 39, 84, 108, 55, 115, 23, 47, 52, 111, 49, 12, 110, 88, 113, 91, 47, 0, 11,
+			81, 116, 114, 195, 188, 107, 107, 195, 182, 122, 195, 169, 115, 116, 32, 9, 198, 32, 19, 12, 32, 21, 39, 11, 9, 198, 76, 80, 133, 77,
+			56, 135, 11, 8, 197, 4, 192, 75, 84, 192, 11, 6, 195, 88, 19, 39, 11, 6, 195, 8, 83, 142, 11, 5, 194, 36, 112, 11, 0, 12,
+			201, 72, 16, 143, 76, 179, 196, 61, 69, 0, 11, 12, 201, 48, 84, 1, 44, 243, 28, 77, 197, 0, 11, 6, 195, 40, 83, 0, 11, 0,
+			8, 197, 61, 36, 218, 112, 112, 11, 28, 69, 61, 36, 218, 112, 112, 10, 39, 52, 89, 114, 81, 23, 83, 110, 55, 113, 0, 11, 81, 102,
+			195, 182, 108, 195, 169, 32, 9, 198, 57, 154, 138, 80, 19, 137, 11, 13, 7, 95, 35, 45, 195, 161, 105, 103, 114, 37, 81, 0, 0, 10,
+			199, 78, 36, 133, 48, 209, 90, 36, 11, 48, 67, 53, 196, 192, 65, 114, 91, 23, 89, 109, 65, 55, 113, 55, 109, 47, 109, 47, 23, 49,
+			110, 84, 109, 47, 0, 11, 82, 115, 122, 101, 109, 108, 195, 169, 108, 101, 116, 101, 116, 32, 107, 195, 182, 118, 101, 116, 32, 19, 67, 53,
+			196, 192, 65, 114, 91, 23, 91, 109, 65, 0, 11, 81, 115, 101, 109, 32, 26, 67, 53, 196, 192, 65, 114, 91, 23, 81, 113, 48, 12, 109,
+			55, 0, 11, 81, 103, 195, 169, 112, 112, 101, 108, 32, 11, 200, 77, 167, 26, 4, 200, 139, 61, 48, 11, 6, 195, 5, 163, 203, 11, 6,
+			195, 46, 37, 0, 11, 6, 195, 53, 196, 192, 11, 7, 196, 80, 148, 218, 80, 11, 0, 31, 67, 48, 20, 0, 55, 108, 48, 9, 15, 47,
+			109, 47, 109, 57, 113, 52, 109, 0, 11, 81, 116, 101, 116, 101, 106, 195, 169, 114, 101, 32, 6, 195, 48, 20, 0, 11, 6, 195, 46, 36,
+			0, 11, 6, 195, 46, 36, 128, 11, 0, 12, 201, 24, 83, 1, 16, 21, 15, 44, 21, 0, 11, 0, 9, 198, 77, 161, 82, 90, 37, 0,
+			11, 38, 67, 46, 35, 133, 49, 113, 50, 109, 10, 6, 15, 84, 114, 55, 108, 89, 47, 108, 50, 39, 65, 0, 11, 81, 118, 195, 161, 108,
+			97, 115, 122, 116, 97, 110, 111, 109, 32, 64, 69, 81, 81, 20, 112, 176, 47, 40, 47, 12, 114, 49, 23, 83, 39, 52, 72, 112, 47, 108,
+			50, 37, 23, 108, 23, 49, 113, 52, 72, 118, 112, 84, 109, 47, 0, 11, 83, 102, 111, 114, 100, 195, 173, 116, 97, 110, 105, 32, 97, 32,
+			107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116, 32, 13, 202, 32, 20, 218, 57, 195, 1, 80, 18, 207, 72, 11, 8, 197, 81, 81,
+			20, 112, 176, 11, 6, 195, 46, 35, 133, 11, 6, 195, 32, 18, 148, 11, 0, 11, 3, 226, 136, 146, 65, 37, 50, 40, 89, 0, 8, 197,
+			64, 243, 3, 112, 224, 11, 8, 197, 5, 165, 84, 112, 224, 11, 48, 70, 37, 50, 207, 49, 194, 192, 37, 91, 49, 39, 55, 114, 49, 23,
+			65, 111, 49, 110, 47, 12, 109, 47, 113, 91, 113, 47, 0, 11, 81, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 195, 169, 115, 195, 169,
+			116, 32, 36, 70, 64, 84, 131, 44, 244, 128, 48, 109, 52, 119, 49, 39, 52, 15, 10, 49, 113, 89, 111, 55, 47, 0, 11, 81, 107, 195,
+			169, 115, 122, 195, 188, 108, 116, 32, 9, 198, 52, 17, 220, 56, 18, 192, 11, 8, 197, 48, 148, 212, 112, 224, 11, 9, 198, 81, 196, 135,
+			100, 18, 192, 11, 0, 6, 195, 10, 84, 128, 11, 6, 131, 108, 197, 145, 11, 6, 195, 34, 84, 128, 11, 0, 8, 197, 172, 200, 147, 136,
+			224, 11, 9, 3, 95, 49, 48, 47, 112, 88, 0, 0, 10, 199, 77, 161, 82, 36, 229, 5, 52, 11, 10, 199, 24, 83, 18, 4, 181, 1,
+			52, 11, 9, 198, 41, 197, 19, 104, 19, 129, 11, 12, 201, 36, 225, 15, 44, 243, 20, 56, 18, 192, 11, 0, 10, 199, 88, 19, 1, 52,
+			149, 133, 48, 11, 10, 199, 24, 147, 13, 20, 178, 197, 48, 11, 6, 195, 41, 85, 0, 11, 0, 14, 4, 95, 99, 121, 114, 119, 6, 37,
+			52, 37, 55, 55, 0, 42, 70, 80, 19, 28, 49, 64, 75, 47, 108, 55, 114, 55, 47, 108, 49, 23, 108, 6, 15, 67, 39, 65, 39, 88,
+			115, 49, 0, 11, 82, 97, 32, 110, 121, 111, 109, 111, 122, 195, 179, 107, 32, 9, 198, 80, 19, 28, 49, 64, 75, 11, 10, 135, 115, 122,
+			195, 188, 108, 197, 145, 11, 41, 70, 168, 163, 206, 56, 19, 128, 116, 57, 39, 50, 12, 108, 50, 23, 47, 109, 55, 109, 48, 112, 47, 109,
+			47, 12, 0, 11, 81, 116, 101, 108, 101, 112, 195, 173, 116, 101, 116, 116, 32, 10, 199, 46, 132, 142, 102, 34, 226, 56, 11, 8, 197, 77,
+			169, 204, 56, 144, 11, 10, 199, 46, 132, 142, 102, 34, 226, 56, 17, 0, 8, 197, 112, 195, 8, 5, 64, 11, 12, 201, 8, 150, 143, 57,
+			153, 84, 136, 179, 203, 11, 8, 197, 41, 196, 136, 5, 64, 11, 11, 200, 52, 20, 129, 16, 160, 78, 4, 176, 11, 7, 196, 46, 85, 171,
+			48, 11, 0, 12, 201, 52, 20, 129, 16, 128, 84, 56, 18, 192, 11, 10, 199, 46, 36, 132, 21, 165, 34, 44, 11, 18, 4, 95, 48, 90,
+			56, 89, 114, 88, 65, 37, 55, 37, 39, 65, 39, 72, 0, 0, 9, 198, 44, 84, 171, 48, 129, 84, 11, 12, 201, 8, 150, 143, 57, 149,
+			1, 48, 19, 128, 11, 41, 66, 136, 224, 113, 50, 15, 37, 91, 15, 65, 109, 81, 76, 37, 50, 114, 55, 47, 108, 65, 0, 11, 82, 105,
+			115, 32, 109, 101, 103, 99, 115, 105, 110, 195, 161, 108, 116, 97, 109, 32, 15, 66, 136, 224, 113, 50, 15, 37, 91, 0, 11, 81, 105, 115,
+			32, 12, 201, 37, 35, 196, 4, 195, 205, 8, 19, 128, 11, 9, 198, 25, 194, 140, 84, 226, 192, 11, 9, 198, 80, 84, 212, 172, 193, 84,
+			11, 5, 194, 136, 224, 11, 5, 194, 136, 224, 11, 0, 7, 196, 81, 81, 15, 44, 76, 7, 196, 40, 241, 220, 80, 11, 11, 200, 72, 83,
+			132, 20, 193, 84, 21, 64, 11, 11, 200, 32, 243, 20, 80, 84, 212, 21, 64, 11, 7, 196, 112, 195, 1, 80, 11, 15, 3, 95, 50, 113,
+			49, 109, 47, 12, 109, 72, 37, 49, 109, 0, 0, 50, 72, 36, 229, 5, 72, 225, 84, 21, 48, 37, 50, 47, 109, 52, 50, 109, 47, 109,
+			91, 15, 49, 37, 47, 110, 55, 47, 113, 91, 113, 52, 109, 0, 11, 81, 107, 105, 116, 195, 182, 108, 116, 195, 169, 115, 195, 169, 114, 101,
+			32, 7, 196, 60, 227, 129, 56, 11, 7, 196, 36, 227, 133, 56, 11, 12, 3, 95, 55, 88, 107, 109, 47, 84, 109, 50, 0, 0, 9, 198,
+			24, 147, 13, 20, 177, 84, 11, 49, 70, 88, 148, 218, 60, 229, 0, 84, 37, 89, 39, 50, 47, 23, 109, 55, 109, 50, 81, 109, 72, 107,
+			109, 47, 109, 47, 55, 109, 50, 0, 11, 81, 101, 108, 101, 110, 103, 101, 100, 104, 101, 116, 101, 116, 108, 101, 110, 32, 9, 198, 80, 84,
+			150, 21, 161, 84, 11, 23, 70, 88, 148, 218, 60, 229, 0, 84, 37, 89, 39, 50, 47, 23, 108, 88, 0, 11, 81, 97, 122, 32, 12, 137,
+			107, 195, 182, 116, 104, 101, 116, 197, 145, 11, 50, 70, 88, 148, 218, 60, 229, 0, 84, 37, 89, 39, 50, 47, 23, 108, 89, 47, 23, 47,
+			108, 48, 108, 89, 47, 108, 55, 47, 108, 65, 0, 11, 82, 97, 122, 116, 32, 116, 97, 112, 97, 115, 122, 116, 97, 108, 116, 97, 109, 32,
+			12, 137, 101, 103, 121, 115, 122, 101, 114, 197, 177, 11, 12, 137, 107, 195, 182, 116, 104, 101, 116, 197, 145, 11, 10, 198, 88, 148, 218, 60,
+			229, 0, 11, 17, 0, 10, 199, 80, 84, 218, 80, 82, 197, 80, 11, 13, 138, 110, 101, 118, 101, 122, 104, 101, 116, 197, 145, 11, 7, 196,
+			49, 197, 15, 52, 11, 0, 26, 70, 56, 85, 133, 105, 65, 64, 50, 109, 84, 109, 89, 47, 109, 23, 108, 89, 47, 0, 11, 81, 97, 122,
+			116, 32, 25, 68, 74, 36, 218, 80, 52, 113, 89, 47, 23, 84, 109, 50, 12, 37, 0, 11, 81, 118, 101, 110, 110, 105, 32, 22, 68, 74,
+			36, 218, 80, 52, 113, 89, 47, 23, 84, 109, 89, 0, 11, 81, 118, 101, 115, 122, 32, 26, 70, 56, 85, 133, 105, 65, 64, 50, 109, 84,
+			109, 89, 47, 109, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 27, 68, 74, 36, 218, 80, 52, 113, 89, 47, 23, 84, 109, 47, 12,
+			109, 49, 0, 11, 81, 118, 101, 116, 116, 101, 107, 32, 9, 198, 88, 85, 5, 81, 65, 64, 11, 14, 139, 107, 195, 169, 112, 118, 105, 115,
+			101, 108, 197, 145, 11, 9, 198, 56, 85, 133, 105, 65, 64, 11, 9, 198, 8, 194, 75, 45, 33, 64, 11, 9, 198, 77, 161, 82, 21, 1,
+			64, 11, 14, 139, 104, 101, 108, 121, 101, 122, 104, 101, 116, 197, 145, 11, 7, 196, 74, 36, 218, 80, 11, 0, 18, 143, 101, 108, 108, 101,
+			110, 197, 145, 114, 122, 195, 169, 115, 195, 169, 116, 11, 0, 41, 72, 88, 148, 211, 104, 17, 83, 137, 48, 84, 37, 89, 12, 108, 109, 91,
+			113, 91, 23, 107, 108, 47, 114, 91, 108, 37, 47, 0, 11, 81, 104, 97, 116, 195, 161, 115, 97, 105, 116, 32, 10, 135, 115, 122, 197, 177,
+			114, 105, 107, 11, 11, 200, 32, 19, 135, 40, 83, 26, 137, 48, 11, 13, 3, 95, 49, 111, 109, 79, 12, 109, 72, 37, 49, 0, 11, 4,
+			95, 49, 111, 120, 109, 55, 91, 118, 0, 0, 8, 197, 157, 39, 20, 156, 192, 11, 8, 197, 52, 83, 148, 136, 224, 11, 7, 196, 52, 83,
+			12, 136, 11, 0, 9, 198, 88, 86, 133, 77, 49, 64, 11, 20, 66, 37, 128, 49, 37, 55, 109, 50, 119, 12, 109, 55, 0, 44, 42, 81,
+			101, 108, 32, 16, 3, 95, 51, 113, 107, 108, 52, 10, 65, 108, 72, 37, 49, 108, 0, 0, 12, 137, 101, 108, 197, 145, 115, 122, 195, 182,
+			114, 11, 6, 195, 4, 69, 1, 11, 0, 10, 199, 32, 21, 133, 72, 160, 73, 52, 11, 7, 196, 76, 83, 77, 36, 11, 9, 198, 104, 18,
+			140, 61, 69, 0, 11, 0, 9, 198, 24, 244, 132, 84, 195, 203, 11, 10, 199, 32, 20, 218, 57, 195, 15, 52, 11, 0, 12, 137, 102, 101,
+			106, 108, 197, 145, 100, 105, 107, 11, 12, 137, 107, 101, 122, 100, 197, 145, 100, 105, 107, 11, 9, 3, 95, 49, 101, 109, 79, 12, 0, 0,
+			6, 195, 88, 149, 1, 11, 8, 197, 48, 85, 20, 20, 176, 11, 8, 197, 44, 20, 14, 4, 176, 11, 11, 4, 95, 97, 99, 117, 113, 55,
+			109, 91, 0, 0, 8, 197, 9, 82, 203, 4, 224, 11, 15, 204, 20, 192, 143, 13, 55, 20, 113, 51, 203, 74, 115, 0, 11, 9, 198, 77,
+			162, 210, 37, 5, 0, 11, 9, 198, 77, 162, 210, 37, 5, 0, 11, 7, 196, 54, 35, 20, 156, 11, 9, 198, 4, 73, 218, 113, 58, 128,
+			11, 14, 3, 95, 50, 111, 49, 109, 47, 12, 109, 72, 37, 49, 0, 0, 7, 196, 173, 161, 77, 20, 11, 0, 20, 70, 20, 118, 69, 105,
+			56, 135, 101, 103, 103, 121, 101, 115, 115, 195, 169, 103, 0, 29, 22, 68, 57, 195, 1, 16, 50, 114, 55, 108, 72, 23, 84, 108, 50, 0,
+			11, 81, 118, 97, 110, 32, 29, 66, 52, 16, 65, 108, 15, 72, 113, 55, 109, 55, 118, 47, 12, 0, 11, 81, 100, 195, 169, 108, 101, 108,
+			197, 145, 116, 116, 32, 27, 66, 52, 16, 65, 108, 15, 72, 113, 55, 40, 47, 114, 50, 0, 11, 81, 100, 195, 169, 108, 117, 116, 195, 161,
+			110, 32, 5, 194, 52, 16, 11, 9, 198, 32, 20, 218, 57, 195, 0, 11, 19, 66, 36, 144, 49, 109, 47, 12, 118, 84, 109, 55, 0, 44,
+			42, 81, 101, 108, 32, 21, 2, 48, 48, 50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 50, 0, 44, 81, 32, 110, 32, 26, 2, 48, 48,
+			50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 47, 115, 55, 0, 44, 81, 32, 116, 195, 179, 108, 32, 21, 2, 48, 48, 50, 40, 55, 12,
+			108, 50, 40, 55, 12, 114, 91, 0, 44, 81, 32, 115, 32, 23, 2, 48, 48, 50, 40, 55, 12, 108, 50, 40, 55, 12, 114, 37, 81, 0,
+			44, 81, 32, 105, 103, 32, 9, 3, 95, 50, 97, 49, 113, 47, 0, 0, 22, 67, 52, 134, 128, 109, 101, 103, 97, 104, 101, 114, 99, 101,
+			110, 0, 44, 29, 81, 101, 110, 32, 23, 67, 52, 134, 128, 109, 101, 103, 97, 104, 101, 114, 99, 101, 110, 0, 44, 29, 42, 81, 101, 110,
+			32, 7, 196, 60, 192, 211, 156, 11, 12, 201, 52, 81, 193, 49, 198, 156, 77, 41, 204, 11, 12, 201, 89, 195, 20, 61, 160, 84, 112, 41,
+			204, 11, 11, 3, 95, 49, 88, 47, 37, 88, 109, 50, 0, 0, 10, 199, 32, 20, 131, 60, 195, 137, 4, 11, 9, 198, 46, 133, 133, 80,
+			226, 69, 11, 6, 195, 33, 198, 129, 11, 6, 195, 44, 83, 20, 11, 6, 195, 9, 34, 84, 11, 6, 195, 24, 243, 20, 11, 0, 12, 201,
+			90, 35, 5, 54, 35, 153, 21, 163, 137, 11, 13, 202, 81, 195, 79, 28, 21, 28, 77, 192, 167, 48, 11, 11, 200, 54, 35, 20, 157, 55,
+			7, 61, 64, 11, 6, 195, 64, 20, 139, 11, 6, 195, 14, 35, 20, 11, 0, 32, 69, 64, 84, 131, 21, 64, 48, 109, 52, 119, 109, 47,
+			23, 83, 37, 88, 109, 47, 109, 49, 0, 11, 81, 102, 105, 122, 101, 116, 101, 107, 32, 8, 197, 52, 147, 139, 21, 64, 11, 8, 197, 44,
+			20, 15, 81, 64, 11, 6, 195, 50, 36, 0, 11, 6, 195, 90, 36, 128, 11, 6, 195, 82, 36, 128, 11, 8, 197, 52, 147, 139, 21, 64,
+			11, 10, 3, 95, 50, 101, 49, 109, 47, 12, 0, 0, 28, 69, 44, 84, 171, 49, 64, 49, 109, 52, 111, 55, 47, 23, 89, 115, 71, 108,
+			0, 11, 81, 115, 122, 195, 179, 98, 97, 32, 27, 69, 44, 84, 171, 49, 64, 49, 109, 52, 111, 55, 47, 23, 108, 107, 39, 88, 0, 11,
+			81, 97, 104, 104, 111, 122, 32, 8, 197, 44, 84, 171, 49, 64, 11, 8, 197, 13, 50, 78, 112, 192, 11, 8, 197, 44, 84, 171, 49, 64,
+			11, 8, 197, 52, 84, 171, 49, 64, 11, 0, 9, 198, 46, 113, 15, 44, 21, 0, 11, 8, 197, 81, 81, 10, 112, 176, 11, 6, 195, 8,
+			18, 148, 11, 8, 197, 81, 81, 10, 112, 176, 11, 6, 195, 8, 83, 148, 11, 15, 3, 95, 51, 111, 107, 108, 52, 10, 65, 108, 72, 37,
+			49, 0, 0, 7, 196, 88, 149, 28, 36, 11, 10, 199, 32, 20, 218, 57, 195, 10, 4, 11, 7, 196, 42, 114, 193, 36, 11, 7, 196, 77,
+			161, 82, 80, 11, 0, 8, 197, 4, 210, 65, 81, 64, 11, 36, 69, 24, 83, 5, 49, 64, 83, 109, 55, 109, 55, 47, 23, 84, 39, 55,
+			50, 108, 23, 65, 109, 81, 0, 11, 82, 118, 111, 108, 110, 97, 32, 109, 101, 103, 32, 8, 197, 24, 83, 5, 49, 64, 11, 17, 2, 49,
+			48, 47, 112, 88, 88, 109, 55, 0, 44, 81, 32, 101, 108, 32, 15, 2, 49, 48, 47, 37, 88, 109, 47, 0, 44, 81, 32, 116, 32, 23,
+			2, 49, 48, 47, 112, 89, 12, 109, 52, 109, 91, 0, 44, 81, 32, 115, 122, 101, 114, 101, 115, 32, 19, 2, 49, 48, 47, 112, 89, 12,
+			109, 52, 0, 44, 81, 32, 115, 122, 101, 114, 32, 0, 34, 4, 105, 100, 197, 145, 37, 72, 118, 23, 84, 108, 55, 115, 89, 112, 50, 117,
+			0, 11, 81, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 32, 30, 4, 105, 100, 197, 145, 37, 72, 118, 23, 84, 114, 52, 107,
+			108, 47, 115, 0, 11, 81, 118, 195, 161, 114, 104, 97, 116, 195, 179, 32, 21, 4, 105, 100, 197, 145, 37, 72, 118, 23, 55, 109, 89, 0,
+			11, 81, 108, 101, 115, 122, 32, 9, 198, 73, 192, 168, 46, 133, 20, 11, 11, 200, 90, 33, 5, 48, 83, 77, 20, 192, 11, 7, 132, 105,
+			100, 197, 145, 11, 30, 2, 49, 51, 116, 105, 122, 101, 110, 104, 97, 114, 109, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81,
+			32, 105, 103, 32, 11, 3, 95, 50, 88, 107, 40, 89, 39, 50, 0, 0, 7, 196, 4, 227, 153, 36, 11, 0, 20, 67, 49, 53, 0, 101,
+			108, 101, 115, 116, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 20, 67, 49, 53, 0, 101, 108, 101, 115, 116, 195, 169, 107, 0, 44, 29,
+			42, 81, 107, 32, 28, 71, 8, 150, 143, 56, 230, 65, 48, 71, 37, 88, 39, 67, 67, 108, 55, 10, 6, 15, 108, 88, 0, 11, 81, 97,
+			122, 32, 10, 199, 16, 243, 7, 60, 178, 193, 48, 11, 8, 197, 53, 84, 218, 112, 160, 11, 10, 199, 13, 51, 205, 4, 113, 193, 48, 11,
+			14, 67, 49, 53, 0, 109, 55, 109, 91, 47, 113, 0, 42, 42, 0, 37, 68, 37, 51, 98, 80, 37, 91, 65, 113, 47, 10, 6, 15, 83,
+			109, 55, 65, 109, 52, 111, 55, 47, 0, 11, 81, 102, 101, 108, 109, 101, 114, 195, 188, 108, 116, 32, 59, 12, 106, 101, 108, 101, 110, 116,
+			197, 145, 115, 101, 98, 98, 57, 109, 55, 109, 50, 47, 118, 91, 109, 71, 12, 23, 76, 108, 48, 108, 72, 113, 49, 107, 40, 55, 12, 114,
+			91, 0, 11, 81, 99, 115, 97, 112, 97, 100, 195, 169, 107, 104, 117, 108, 108, 195, 161, 115, 32, 17, 67, 58, 38, 128, 50, 113, 88, 23,
+			49, 37, 0, 11, 81, 107, 105, 32, 28, 68, 37, 51, 98, 80, 37, 91, 65, 113, 47, 23, 109, 55, 109, 52, 109, 72, 0, 11, 81, 101,
+			108, 101, 114, 101, 100, 32, 40, 70, 24, 83, 34, 8, 83, 128, 83, 109, 55, 113, 71, 109, 50, 23, 114, 55, 107, 108, 47, 6, 15, 71,
+			6, 109, 0, 11, 82, 195, 161, 108, 108, 104, 97, 116, 32, 98, 101, 32, 13, 202, 46, 37, 19, 136, 112, 133, 21, 53, 5, 52, 11, 9,
+			198, 32, 144, 156, 105, 64, 75, 11, 6, 195, 58, 38, 128, 11, 10, 3, 95, 51, 101, 107, 114, 52, 65, 0, 0, 12, 201, 48, 82, 156,
+			81, 54, 167, 32, 246, 128, 11, 8, 197, 82, 128, 130, 21, 64, 11, 24, 69, 82, 128, 130, 21, 64, 47, 110, 71, 12, 109, 47, 23, 83,
+			39, 81, 0, 11, 81, 102, 111, 103, 32, 13, 202, 46, 134, 162, 65, 3, 206, 80, 167, 2, 4, 11, 30, 69, 82, 128, 130, 21, 64, 47,
+			110, 71, 12, 109, 47, 15, 47, 40, 72, 50, 108, 49, 0, 11, 81, 116, 117, 100, 110, 97, 107, 32, 11, 136, 116, 101, 114, 106, 101, 100,
+			197, 145, 11, 10, 199, 10, 84, 167, 77, 193, 210, 4, 11, 0, 10, 199, 77, 169, 204, 4, 194, 143, 56, 11, 15, 204, 80, 85, 162, 44,
+			83, 153, 78, 33, 197, 45, 33, 64, 11, 56, 73, 33, 195, 39, 104, 21, 15, 45, 32, 64, 107, 114, 55, 115, 88, 108, 47, 39, 49, 52,
+			108, 23, 76, 108, 47, 55, 108, 49, 39, 88, 107, 108, 47, 40, 50, 49, 0, 11, 81, 99, 115, 97, 116, 108, 97, 107, 111, 122, 104, 97,
+			116, 117, 110, 107, 32, 8, 197, 77, 169, 78, 21, 48, 11, 29, 2, 49, 54, 116, 105, 122, 101, 110, 104, 97, 116, 111, 100, 105, 107, 195,
+			161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 0, 10, 199, 76, 80, 133, 77, 56, 135, 20, 11, 13, 138, 104, 97, 116, 195, 161,
+			114, 105, 100, 197, 145, 11, 6, 195, 160, 197, 0, 11, 0, 24, 66, 52, 32, 109, 101, 103, 97, 98, 195, 161, 106, 116, 116, 97, 108, 0,
+			44, 29, 42, 81, 97, 108, 32, 37, 76, 48, 81, 203, 136, 230, 69, 48, 209, 83, 20, 32, 128, 55, 109, 81, 49, 113, 67, 109, 55, 65,
+			109, 91, 109, 71, 12, 23, 108, 88, 0, 11, 81, 97, 122, 32, 9, 198, 54, 113, 19, 104, 84, 128, 11, 7, 196, 24, 241, 220, 80, 11,
+			7, 196, 52, 17, 220, 80, 11, 15, 66, 52, 32, 65, 109, 81, 108, 71, 114, 57, 47, 0, 42, 42, 17, 2, 50, 48, 107, 116, 89, 12,
+			108, 55, 0, 44, 81, 32, 97, 108, 32, 25, 2, 50, 48, 104, 117, 115, 122, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81,
+			32, 105, 103, 32, 22, 2, 50, 48, 104, 117, 115, 122, 97, 100, 105, 107, 97, 105, 0, 44, 16, 29, 81, 32, 105, 32, 31, 2, 49, 56,
+			116, 105, 122, 101, 110, 110, 121, 111, 108, 99, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 14, 3, 95,
+			54, 113, 107, 108, 47, 39, 72, 37, 49, 108, 0, 0, 11, 136, 115, 122, 101, 114, 101, 116, 197, 145, 11, 14, 203, 57, 146, 76, 89, 195,
+			143, 77, 55, 7, 72, 16, 11, 13, 138, 114, 101, 110, 100, 197, 145, 114, 195, 182, 107, 11, 6, 195, 137, 97, 64, 11, 6, 195, 42, 115,
+			0, 11, 31, 2, 50, 51, 104, 117, 115, 122, 111, 110, 104, 97, 114, 109, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32,
+			105, 103, 32, 0, 9, 198, 76, 242, 193, 77, 193, 193, 11, 8, 197, 61, 69, 8, 60, 224, 11, 0, 9, 198, 46, 179, 6, 160, 193, 9,
+			11, 10, 199, 13, 48, 80, 60, 194, 1, 80, 11, 10, 199, 13, 51, 206, 80, 242, 193, 80, 11, 7, 195, 44, 101, 0, 11, 42, 6, 195,
+			78, 83, 148, 11, 6, 195, 42, 117, 0, 11, 0, 14, 203, 89, 195, 20, 61, 168, 139, 60, 230, 65, 8, 32, 11, 9, 198, 20, 118, 107,
+			81, 65, 83, 11, 0, 14, 139, 116, 101, 109, 101, 116, 197, 145, 106, 195, 169, 116, 11, 15, 140, 107, 105, 115, 122, 197, 177, 114, 104, 101,
+			116, 197, 145, 11, 10, 199, 80, 82, 201, 57, 74, 206, 44, 11, 14, 67, 77, 64, 128, 91, 108, 47, 110, 71, 12, 37, 0, 25, 0, 16,
+			141, 107, 195, 182, 115, 122, 195, 182, 110, 104, 101, 116, 197, 145, 11, 14, 3, 95, 63, 63, 49, 108, 52, 108, 49, 47, 109, 52, 0, 30,
+			2, 50, 54, 104, 117, 115, 122, 111, 110, 104, 97, 116, 111, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 12,
+			3, 95, 53, 111, 110, 47, 110, 72, 37, 49, 0, 0, 8, 197, 89, 195, 10, 60, 224, 11, 0, 39, 71, 16, 243, 7, 60, 180, 167, 48,
+			72, 39, 55, 81, 39, 49, 52, 115, 55, 23, 71, 109, 89, 113, 55, 109, 49, 0, 11, 81, 98, 101, 115, 122, 195, 169, 108, 101, 107, 32,
+			18, 143, 104, 111, 122, 122, 195, 161, 102, 195, 169, 114, 104, 101, 116, 197, 145, 11, 9, 198, 88, 82, 5, 77, 49, 64, 11, 10, 199, 13,
+			51, 205, 4, 116, 167, 48, 11, 12, 66, 53, 32, 65, 37, 89, 47, 109, 52, 0, 25, 21, 2, 51, 48, 107, 108, 52, 65, 37, 50, 119,
+			12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 22, 2, 51, 48, 107, 108, 52, 65, 37, 50, 119, 12, 108, 55, 0, 44, 81, 32, 99, 97,
+			108, 32, 25, 2, 51, 48, 104, 97, 114, 109, 105, 110, 99, 97, 100, 105, 107, 97, 105, 0, 44, 16, 29, 81, 32, 105, 32, 28, 2, 51,
+			48, 104, 97, 114, 109, 105, 110, 99, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 32, 2, 50, 56, 104,
+			117, 115, 122, 111, 110, 110, 121, 111, 108, 99, 97, 100, 105, 107, 195, 161, 105, 103, 0, 44, 16, 29, 81, 32, 105, 103, 32, 14, 3, 95,
+			55, 113, 107, 109, 47, 109, 72, 37, 49, 109, 0, 0, 32, 67, 32, 85, 5, 107, 109, 47, 109, 23, 107, 108, 89, 50, 114, 55, 39, 65,
+			0, 11, 81, 104, 97, 115, 122, 110, 195, 161, 108, 111, 109, 32, 9, 198, 77, 169, 210, 156, 66, 75, 11, 11, 200, 90, 35, 5, 54, 35,
+			153, 20, 208, 11, 18, 143, 98, 105, 108, 108, 101, 110, 116, 121, 197, 177, 122, 101, 116, 101, 116, 11, 12, 201, 44, 243, 131, 20, 229, 18,
+			112, 197, 0, 11, 10, 199, 32, 20, 218, 57, 195, 15, 44, 11, 12, 3, 95, 52, 88, 50, 109, 79, 84, 109, 50, 0, 0, 30, 70, 52,
+			83, 12, 21, 69, 0, 65, 109, 55, 12, 109, 47, 12, 23, 84, 39, 55, 50, 108, 0, 11, 81, 118, 111, 108, 110, 97, 32, 24, 70, 52,
+			83, 12, 21, 69, 0, 65, 109, 55, 12, 109, 47, 12, 23, 108, 88, 0, 11, 81, 97, 122, 32, 9, 198, 52, 83, 12, 21, 69, 0, 11,
+			0, 6, 195, 25, 194, 140, 11, 8, 197, 77, 167, 13, 60, 224, 11, 6, 195, 33, 197, 0, 11, 16, 9, 95, 35, 45, 195, 161, 114, 195,
+			179, 108, 114, 52, 115, 55, 0, 0, 7, 196, 46, 113, 15, 80, 11, 11, 200, 32, 20, 218, 57, 195, 14, 60, 208, 11, 0, 6, 195, 56,
+			85, 133, 11, 0, 7, 196, 24, 241, 207, 52, 11, 9, 198, 13, 48, 80, 5, 67, 212, 11, 13, 202, 44, 19, 39, 104, 179, 196, 113, 53,
+			39, 48, 11, 13, 3, 95, 54, 111, 107, 108, 47, 39, 72, 37, 49, 0, 0, 11, 200, 88, 20, 220, 72, 224, 80, 60, 224, 17, 0, 25,
+			68, 74, 133, 137, 16, 52, 110, 84, 37, 72, 23, 108, 107, 39, 88, 0, 11, 81, 97, 104, 104, 111, 122, 32, 7, 196, 74, 133, 137, 16,
+			11, 14, 203, 57, 146, 76, 89, 195, 165, 81, 196, 212, 156, 192, 11, 26, 66, 48, 80, 55, 109, 10, 6, 15, 84, 39, 49, 91, 114, 47,
+			0, 11, 81, 118, 111, 107, 115, 195, 161, 116, 32, 29, 66, 48, 80, 55, 109, 23, 83, 39, 81, 23, 83, 40, 47, 50, 37, 0, 11, 82,
+			102, 111, 103, 32, 102, 117, 116, 110, 105, 32, 22, 194, 48, 80, 11, 82, 107, 101, 108, 108, 32, 115, 122, 195, 182, 103, 101, 122, 110, 101,
+			109, 32, 5, 194, 56, 16, 72, 5, 194, 48, 80, 11, 5, 194, 36, 176, 11, 20, 2, 52, 48, 50, 109, 79, 84, 109, 50, 12, 109, 55,
+			0, 44, 81, 32, 101, 108, 32, 0, 12, 201, 81, 195, 79, 28, 21, 28, 76, 41, 204, 11, 11, 200, 57, 146, 84, 61, 69, 21, 56, 176,
+			11, 11, 3, 95, 53, 88, 110, 47, 84, 109, 50, 0, 0, 13, 202, 20, 193, 143, 28, 17, 28, 77, 196, 167, 48, 11, 10, 199, 20, 195,
+			153, 21, 35, 137, 20, 11, 13, 202, 32, 20, 218, 57, 195, 1, 81, 196, 167, 48, 11, 8, 197, 57, 147, 205, 77, 160, 11, 6, 195, 32,
+			19, 20, 11, 0, 8, 197, 157, 32, 75, 61, 32, 11, 23, 66, 137, 96, 113, 84, 23, 109, 55, 47, 109, 55, 47, 0, 11, 81, 101, 108,
+			116, 101, 108, 116, 32, 21, 66, 137, 96, 113, 84, 23, 108, 55, 108, 47, 12, 0, 11, 81, 97, 108, 97, 116, 116, 32, 8, 197, 54, 36,
+			142, 160, 176, 11, 8, 197, 49, 196, 218, 50, 112, 11, 13, 138, 116, 195, 182, 114, 197, 145, 100, 110, 105, 101, 11, 5, 194, 137, 96, 11,
+			10, 4, 95, 114, 110, 103, 49, 110, 52, 0, 0, 45, 67, 56, 20, 0, 50, 108, 48, 23, 108, 55, 108, 47, 12, 23, 47, 40, 72, 108,
+			47, 39, 91, 40, 55, 47, 0, 11, 82, 97, 108, 97, 116, 116, 32, 116, 117, 100, 97, 116, 111, 115, 117, 108, 116, 32, 50, 67, 56, 20,
+			0, 50, 108, 48, 23, 40, 47, 114, 50, 23, 89, 111, 55, 109, 47, 109, 47, 12, 23, 65, 109, 81, 0, 11, 83, 117, 116, 195, 161, 110,
+			32, 115, 122, 195, 188, 108, 101, 116, 101, 116, 116, 32, 109, 101, 103, 32, 19, 67, 56, 20, 0, 50, 108, 48, 10, 6, 15, 37, 91, 0,
+			11, 81, 105, 115, 32, 8, 197, 24, 241, 193, 37, 64, 11, 13, 202, 54, 113, 15, 78, 85, 28, 77, 196, 167, 48, 11, 8, 197, 20, 193,
+			71, 21, 64, 11, 8, 197, 40, 241, 193, 37, 64, 11, 8, 197, 41, 85, 15, 81, 64, 11, 6, 195, 56, 20, 0, 11, 0, 12, 201, 52,
+			81, 203, 173, 161, 5, 56, 145, 64, 11, 12, 201, 37, 51, 69, 72, 85, 5, 44, 85, 0, 11, 10, 199, 33, 195, 39, 104, 21, 15, 80,
+			11, 20, 67, 36, 146, 64, 107, 114, 52, 39, 65, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 9, 198, 88, 243, 129, 48, 21, 0,
+			11, 9, 198, 32, 149, 129, 80, 19, 20, 11, 30, 67, 24, 83, 148, 83, 109, 50, 47, 23, 108, 6, 15, 107, 109, 57, 109, 47, 0, 11,
+			82, 97, 32, 104, 101, 108, 121, 101, 116, 32, 9, 198, 40, 241, 207, 77, 83, 20, 11, 8, 197, 113, 71, 12, 49, 64, 11, 6, 195, 24,
+			83, 148, 11, 7, 195, 52, 84, 148, 72, 8, 13, 3, 95, 55, 111, 107, 109, 47, 109, 72, 37, 49, 0, 0, 9, 198, 64, 244, 218, 81,
+			41, 204, 11, 10, 199, 20, 197, 162, 28, 86, 154, 20, 11, 7, 196, 137, 38, 133, 52, 11, 10, 199, 77, 163, 204, 29, 195, 14, 4, 11,
+			6, 195, 46, 182, 132, 11, 0, 8, 197, 5, 163, 203, 5, 64, 11, 48, 70, 32, 149, 129, 80, 19, 0, 107, 37, 84, 108, 47, 108, 55,
+			23, 37, 55, 12, 109, 47, 113, 49, 109, 91, 113, 84, 109, 55, 0, 11, 81, 105, 108, 108, 101, 116, 195, 169, 107, 101, 115, 195, 169, 118,
+			101, 108, 32, 10, 199, 50, 130, 226, 76, 82, 210, 20, 11, 42, 69, 24, 83, 5, 81, 64, 83, 109, 55, 109, 47, 12, 23, 37, 91, 23,
+			65, 109, 81, 89, 117, 50, 37, 49, 0, 11, 82, 105, 115, 32, 109, 101, 103, 115, 122, 197, 177, 110, 105, 107, 32, 8, 197, 32, 149, 5,
+			49, 64, 11, 8, 197, 44, 144, 211, 37, 64, 11, 8, 197, 80, 84, 133, 53, 64, 11, 9, 198, 32, 149, 129, 80, 19, 0, 11, 8, 197,
+			49, 149, 75, 5, 64, 11, 8, 197, 76, 83, 139, 37, 64, 11, 8, 197, 24, 83, 5, 81, 64, 11, 11, 67, 34, 37, 128, 107, 113, 84,
+			0, 42, 42, 19, 2, 53, 48, 110, 47, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32, 14, 3, 95, 49, 113, 109, 79, 12,
+			109, 72, 37, 49, 109, 0, 0, 12, 3, 95, 54, 88, 107, 108, 47, 84, 108, 50, 0, 0, 9, 198, 46, 36, 162, 77, 33, 64, 11, 12,
+			201, 40, 83, 5, 57, 56, 135, 20, 180, 133, 11, 7, 196, 81, 81, 15, 52, 11, 0, 9, 198, 41, 196, 129, 80, 242, 192, 11, 0, 4,
+			193, 164, 43, 9, 3, 95, 55, 101, 107, 109, 47, 0, 0, 26, 67, 76, 83, 64, 91, 109, 65, 23, 49, 109, 52, 111, 55, 47, 0, 11,
+			81, 107, 101, 114, 195, 188, 108, 116, 32, 19, 67, 76, 83, 64, 91, 109, 65, 23, 83, 39, 81, 0, 11, 81, 102, 111, 103, 32, 31, 67,
+			76, 83, 64, 91, 109, 65, 10, 6, 15, 71, 37, 89, 47, 39, 91, 108, 49, 0, 11, 81, 98, 105, 122, 116, 111, 115, 97, 107, 32, 19,
+			67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 32, 67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 65,
+			40, 47, 108, 80, 12, 114, 49, 0, 11, 81, 109, 117, 116, 97, 116, 106, 195, 161, 107, 32, 25, 67, 76, 83, 64, 91, 109, 65, 10, 6,
+			15, 65, 109, 52, 109, 49, 0, 11, 81, 109, 101, 114, 101, 107, 32, 42, 67, 76, 83, 64, 91, 109, 65, 10, 6, 15, 51, 37, 108, 72,
+			50, 108, 49, 23, 84, 37, 89, 12, 108, 0, 11, 82, 114, 105, 97, 100, 110, 97, 107, 32, 118, 105, 115, 115, 122, 97, 32, 40, 67, 76,
+			83, 64, 91, 109, 65, 23, 109, 65, 55, 112, 47, 109, 47, 12, 23, 108, 52, 52, 108, 0, 11, 82, 101, 109, 108, 195, 173, 116, 101, 116,
+			116, 32, 97, 114, 114, 97, 32, 54, 67, 76, 83, 64, 91, 109, 65, 23, 57, 109, 55, 109, 50, 47, 113, 49, 47, 109, 55, 109, 50, 23,
+			110, 89, 12, 109, 81, 0, 11, 82, 106, 101, 108, 101, 110, 116, 195, 169, 107, 116, 101, 108, 101, 110, 32, 195, 182, 115, 115, 122, 101, 103,
+			32, 23, 67, 76, 83, 64, 91, 109, 65, 23, 47, 40, 47, 12, 108, 0, 11, 81, 116, 117, 100, 116, 97, 32, 21, 67, 76, 83, 64, 91,
+			109, 65, 23, 49, 109, 55, 12, 0, 11, 81, 107, 101, 108, 108, 32, 26, 67, 76, 83, 64, 91, 109, 65, 23, 49, 37, 88, 114, 52, 47,
+			0, 11, 81, 107, 105, 122, 195, 161, 114, 116, 32, 41, 67, 76, 83, 64, 91, 109, 65, 23, 47, 40, 47, 12, 108, 49, 23, 65, 39, 50,
+			72, 108, 50, 37, 0, 11, 82, 116, 117, 100, 116, 97, 107, 32, 109, 111, 110, 100, 97, 110, 105, 32, 65, 67, 76, 83, 64, 91, 109, 65,
+			23, 83, 37, 79, 109, 55, 65, 109, 89, 47, 109, 47, 109, 47, 12, 23, 107, 108, 50, 81, 57, 109, 55, 88, 113, 91, 0, 11, 82, 102,
+			105, 103, 121, 101, 108, 109, 101, 122, 116, 101, 116, 101, 116, 116, 32, 104, 97, 110, 103, 106, 101, 108, 122, 195, 169, 115, 32, 66, 67, 76,
+			83, 64, 91, 109, 65, 23, 114, 55, 12, 23, 65, 115, 79, 12, 40, 49, 71, 108, 50, 23, 109, 55, 12, 109, 50, 118, 52, 37, 88, 50,
+			37, 0, 11, 83, 195, 161, 108, 108, 32, 109, 195, 179, 100, 106, 117, 107, 98, 97, 110, 32, 101, 108, 108, 101, 110, 197, 145, 114, 105, 122,
+			110, 105, 32, 19, 67, 76, 83, 64, 91, 109, 65, 65, 109, 79, 0, 11, 81, 109, 101, 103, 121, 32, 35, 67, 76, 83, 64, 91, 109, 65,
+			15, 108, 55, 49, 108, 55, 65, 108, 88, 50, 108, 49, 0, 11, 81, 97, 108, 107, 97, 108, 109, 97, 122, 110, 97, 107, 32, 24, 67, 76,
+			83, 64, 91, 109, 65, 15, 47, 110, 65, 37, 49, 0, 11, 81, 116, 195, 182, 109, 105, 107, 32, 10, 199, 16, 243, 7, 61, 166, 143, 56,
+			11, 7, 195, 76, 83, 64, 11, 17, 0, 12, 201, 28, 243, 132, 61, 50, 207, 16, 146, 192, 11, 15, 3, 95, 48, 111, 50, 6, 40, 55,
+			55, 108, 72, 37, 49, 0, 0, 10, 199, 32, 20, 218, 57, 195, 14, 36, 11, 12, 201, 24, 241, 204, 4, 197, 1, 45, 41, 204, 11, 6,
+			195, 160, 229, 0, 11, 0, 7, 196, 24, 83, 43, 48, 11, 7, 196, 58, 35, 137, 80, 11, 20, 2, 54, 48, 107, 108, 47, 84, 108, 50,
+			12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 0, 11, 200, 77, 160, 66, 9, 103, 14, 101, 64, 11, 14, 67, 36, 195, 0, 37, 55, 55,
+			109, 47, 84, 109, 0, 25, 0, 9, 198, 113, 67, 162, 104, 226, 64, 11, 7, 196, 32, 21, 14, 4, 11, 0, 10, 199, 20, 208, 133, 72,
+			82, 197, 80, 11, 45, 69, 60, 179, 218, 80, 16, 39, 49, 39, 89, 47, 108, 23, 48, 52, 39, 71, 55, 113, 65, 114, 49, 71, 115, 55,
+			0, 11, 81, 112, 114, 111, 98, 108, 195, 169, 109, 195, 161, 107, 98, 195, 179, 108, 32, 68, 69, 29, 145, 78, 28, 80, 79, 109, 50, 81,
+			109, 15, 55, 113, 81, 65, 39, 88, 81, 114, 91, 52, 108, 23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 11, 82, 108, 195,
+			169, 103, 109, 111, 122, 103, 195, 161, 115, 114, 97, 32, 115, 122, 195, 161, 109, 195, 173, 116, 104, 97, 116, 117, 110, 107, 32, 10, 199, 20,
+			208, 133, 72, 82, 197, 80, 11, 8, 197, 60, 179, 218, 80, 16, 11, 0, 11, 200, 34, 179, 25, 137, 50, 197, 16, 160, 11, 11, 200, 28,
+			20, 129, 57, 71, 12, 56, 144, 11, 0, 8, 197, 34, 112, 143, 73, 64, 11, 25, 67, 85, 71, 14, 40, 47, 114, 50, 23, 50, 113, 88,
+			50, 37, 0, 11, 81, 110, 195, 169, 122, 110, 105, 32, 12, 201, 77, 160, 66, 112, 198, 79, 104, 226, 64, 11, 9, 198, 46, 133, 133, 81,
+			65, 64, 11, 7, 195, 85, 71, 14, 11, 17, 0, 40, 72, 46, 134, 140, 20, 216, 142, 101, 64, 49, 110, 88, 55, 109, 65, 113, 67, 47,
+			23, 108, 72, 39, 47, 12, 23, 49, 37, 0, 11, 82, 97, 100, 111, 116, 116, 32, 107, 105, 32, 36, 67, 44, 86, 132, 49, 109, 88, 72,
+			23, 108, 6, 23, 83, 109, 55, 107, 118, 88, 109, 47, 0, 11, 82, 97, 32, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 16, 205, 52,
+			240, 137, 49, 54, 143, 48, 119, 12, 80, 21, 39, 44, 11, 7, 196, 81, 81, 10, 4, 11, 9, 198, 46, 134, 168, 49, 65, 64, 11, 6,
+			195, 44, 86, 132, 11, 16, 3, 95, 57, 111, 49, 37, 55, 109, 50, 119, 109, 72, 37, 49, 0, 14, 4, 95, 50, 111, 120, 65, 114, 91,
+			39, 72, 37, 49, 0, 0, 8, 197, 45, 83, 3, 76, 16, 11, 16, 9, 95, 35, 45, 195, 161, 116, 195, 179, 108, 114, 47, 115, 55, 0,
+			0, 9, 198, 54, 163, 20, 74, 115, 0, 11, 20, 2, 55, 48, 107, 109, 47, 84, 109, 50, 12, 109, 55, 0, 44, 81, 32, 101, 108, 32,
+			0, 9, 198, 80, 19, 28, 49, 64, 64, 11, 10, 199, 8, 244, 165, 80, 19, 129, 44, 11, 13, 3, 95, 56, 88, 67, 39, 55, 119, 84,
+			108, 50, 0, 0, 11, 200, 32, 20, 218, 57, 195, 14, 4, 176, 11, 9, 198, 44, 86, 132, 21, 69, 0, 11, 15, 8, 95, 35, 45, 195,
+			161, 118, 97, 108, 114, 84, 108, 55, 0, 15, 8, 95, 35, 45, 195, 169, 118, 101, 108, 113, 84, 109, 55, 0, 0, 10, 199, 32, 21, 28,
+			77, 192, 129, 56, 11, 11, 200, 40, 83, 12, 20, 209, 90, 80, 80, 11, 29, 67, 57, 154, 140, 67, 116, 55, 15, 89, 109, 52, 109, 48,
+			113, 47, 0, 11, 81, 115, 122, 101, 114, 101, 112, 195, 169, 116, 32, 12, 201, 16, 243, 7, 61, 163, 156, 56, 18, 192, 11, 6, 195, 57,
+			154, 140, 11, 0, 9, 198, 88, 147, 28, 29, 41, 204, 11, 13, 202, 88, 243, 129, 80, 179, 218, 104, 19, 129, 44, 11, 34, 68, 54, 113,
+			15, 80, 65, 115, 72, 39, 47, 23, 84, 114, 55, 108, 89, 47, 39, 65, 0, 11, 81, 118, 195, 161, 108, 97, 115, 122, 116, 111, 109, 32,
+			8, 197, 32, 85, 165, 80, 144, 11, 8, 197, 76, 81, 229, 80, 144, 11, 9, 198, 37, 72, 140, 82, 34, 192, 11, 0, 12, 201, 80, 84,
+			133, 50, 36, 226, 8, 83, 128, 11, 9, 198, 4, 64, 75, 61, 163, 137, 11, 8, 197, 32, 21, 14, 4, 176, 11, 12, 201, 24, 244, 146,
+			113, 50, 231, 16, 224, 75, 11, 12, 201, 44, 145, 143, 29, 196, 207, 49, 64, 64, 11, 0, 9, 198, 46, 134, 168, 48, 226, 64, 11, 9,
+			198, 44, 19, 69, 73, 197, 0, 11, 11, 200, 46, 133, 133, 80, 83, 14, 20, 176, 11, 12, 201, 46, 134, 144, 60, 229, 10, 112, 32, 78,
+			11, 11, 200, 36, 120, 142, 100, 82, 78, 20, 176, 11, 11, 200, 52, 82, 5, 80, 232, 142, 20, 176, 11, 9, 198, 65, 35, 194, 50, 35,
+			65, 11, 0, 40, 70, 4, 192, 80, 84, 201, 192, 108, 55, 108, 48, 40, 55, 115, 23, 47, 110, 52, 47, 113, 50, 109, 47, 109, 0, 11,
+			81, 116, 195, 182, 114, 116, 195, 169, 110, 101, 116, 101, 32, 11, 200, 161, 52, 218, 22, 179, 14, 20, 176, 11, 6, 195, 46, 129, 0, 11,
+			0, 30, 66, 44, 144, 49, 37, 23, 84, 39, 55, 47, 23, 112, 52, 84, 108, 0, 11, 82, 118, 111, 108, 116, 32, 195, 173, 114, 118, 97,
+			32, 39, 66, 44, 144, 49, 37, 23, 49, 109, 55, 12, 23, 47, 109, 52, 57, 109, 72, 50, 37, 109, 0, 11, 82, 107, 101, 108, 108, 32,
+			116, 101, 114, 106, 101, 100, 110, 105, 101, 32, 35, 66, 44, 144, 49, 37, 23, 49, 109, 55, 12, 23, 65, 39, 50, 72, 108, 50, 37, 0,
+			11, 82, 107, 101, 108, 108, 32, 109, 111, 110, 100, 97, 110, 105, 32, 32, 66, 44, 144, 49, 37, 10, 6, 15, 108, 88, 10, 6, 15, 110,
+			47, 55, 109, 47, 0, 11, 82, 97, 122, 32, 195, 182, 116, 108, 101, 116, 32, 12, 201, 80, 20, 148, 61, 168, 139, 113, 96, 76, 11, 29,
+			66, 44, 144, 10, 49, 37, 15, 83, 39, 81, 15, 112, 52, 50, 37, 0, 11, 82, 102, 111, 103, 32, 195, 173, 114, 110, 105, 32, 21, 66,
+			44, 144, 49, 37, 15, 47, 40, 79, 12, 108, 0, 11, 81, 116, 117, 100, 106, 97, 32, 25, 66, 44, 144, 49, 37, 55, 109, 107, 109, 47,
+			108, 88, 0, 11, 82, 108, 101, 104, 101, 116, 32, 97, 122, 32, 13, 202, 77, 161, 82, 88, 86, 133, 80, 184, 142, 80, 11, 5, 194, 44,
+			144, 11, 21, 2, 56, 48, 67, 39, 55, 119, 84, 108, 50, 12, 108, 55, 0, 44, 81, 32, 97, 108, 32, 14, 3, 95, 52, 113, 50, 109,
+			79, 109, 72, 37, 49, 109, 0, 0, 8, 197, 88, 243, 20, 4, 176, 11, 8, 197, 16, 243, 7, 60, 176, 11, 10, 199, 88, 84, 218, 80,
+			84, 226, 28, 11, 45, 69, 16, 243, 7, 60, 176, 72, 39, 55, 81, 39, 49, 10, 6, 15, 37, 72, 109, 81, 109, 91, 112, 47, 109, 50,
+			109, 49, 0, 11, 81, 105, 100, 101, 103, 101, 115, 195, 173, 116, 101, 110, 101, 107, 32, 14, 203, 77, 161, 82, 88, 86, 133, 80, 82, 206,
+			20, 176, 11, 12, 201, 48, 81, 197, 56, 84, 156, 48, 226, 64, 11, 13, 202, 32, 20, 218, 57, 195, 1, 81, 197, 129, 48, 11, 7, 196,
+			76, 18, 148, 156, 11, 12, 201, 20, 195, 98, 48, 85, 5, 44, 33, 78, 11, 10, 199, 80, 84, 133, 53, 74, 206, 44, 11, 13, 202, 8,
+			83, 85, 80, 21, 28, 77, 197, 129, 48, 11, 12, 201, 45, 85, 1, 81, 196, 207, 44, 32, 78, 11, 6, 195, 58, 35, 0, 11, 6, 195,
+			42, 163, 0, 15, 15, 3, 95, 57, 88, 49, 37, 55, 109, 50, 119, 84, 109, 50, 0, 0, 13, 202, 81, 195, 79, 28, 21, 28, 77, 197,
+			129, 48, 11, 9, 198, 89, 193, 217, 4, 149, 0, 11, 6, 195, 12, 243, 20, 11, 0, 24, 67, 89, 195, 20, 84, 114, 55, 47, 23, 84,
+			39, 55, 50, 108, 0, 11, 81, 118, 111, 108, 110, 97, 32, 14, 203, 44, 244, 140, 113, 67, 218, 113, 55, 22, 4, 192, 11, 20, 195, 89,
+			195, 20, 11, 81, 104, 105, 118, 97, 116, 97, 108, 111, 115, 115, 195, 161, 32, 10, 199, 52, 81, 226, 73, 65, 78, 36, 11, 12, 201, 48,
+			81, 133, 16, 85, 20, 78, 33, 192, 11, 6, 195, 89, 195, 20, 11, 10, 6, 95, 35, 45, 105, 107, 105, 37, 0, 0, 32, 69, 81, 81,
+			15, 81, 64, 47, 40, 72, 39, 47, 12, 23, 48, 37, 107, 109, 50, 12, 37, 0, 11, 81, 112, 105, 104, 101, 110, 110, 105, 32, 9, 198,
+			46, 132, 218, 160, 234, 13, 11, 8, 197, 4, 64, 84, 61, 64, 11, 8, 197, 29, 154, 18, 29, 144, 11, 8, 197, 81, 81, 15, 81, 64,
+			11, 6, 195, 58, 36, 0, 11, 6, 195, 46, 132, 0, 11, 0, 8, 197, 52, 84, 226, 49, 64, 11, 8, 197, 52, 84, 226, 49, 64, 11,
+			0, 6, 195, 58, 33, 217, 11, 0, 17, 206, 82, 132, 150, 136, 230, 74, 5, 96, 83, 48, 21, 18, 156, 192, 11, 7, 196, 48, 20, 15,
+			80, 11, 11, 200, 24, 244, 132, 149, 66, 1, 82, 112, 11, 7, 196, 90, 33, 226, 56, 11, 7, 196, 21, 49, 84, 80, 11, 9, 198, 49,
+			197, 19, 104, 245, 20, 11, 7, 196, 90, 33, 226, 56, 15, 0, 8, 197, 44, 149, 162, 88, 80, 11, 15, 204, 77, 167, 12, 49, 196, 200,
+			20, 198, 69, 44, 85, 0, 11, 6, 195, 58, 37, 128, 11, 23, 2, 57, 48, 49, 37, 55, 109, 50, 119, 84, 109, 50, 12, 109, 55, 0,
+			44, 81, 32, 101, 108, 32, 13, 3, 95, 53, 113, 110, 47, 110, 72, 37, 49, 109, 0, 0, 0, 9, 198, 77, 167, 13, 60, 68, 129, 11,
+			0, 9, 198, 36, 225, 37, 80, 245, 20, 11, 5, 130, 57, 53, 11, 9, 198, 32, 144, 156, 104, 245, 20, 11, 12, 201, 46, 36, 26, 137,
+			49, 75, 44, 83, 0, 11, 9, 198, 29, 151, 18, 80, 245, 20, 11, 10, 6, 95, 35, 45, 105, 107, 97, 108, 0, 0, 7, 196, 88, 85,
+			9, 44, 11, 7, 196, 44, 86, 162, 80, 11, 10, 199, 46, 134, 148, 84, 67, 212, 80, 11, 14, 203, 52, 81, 220, 48, 192, 80, 149, 66,
+			1, 82, 112, 11, 0, 21, 69, 80, 84, 218, 36, 176, 47, 109, 89, 37, 49, 23, 49, 37, 0, 11, 81, 107, 105, 32, 35, 70, 10, 36,
+			140, 21, 66, 64, 71, 113, 52, 55, 109, 47, 37, 23, 72, 112, 57, 108, 49, 52, 108, 0, 11, 81, 100, 195, 173, 106, 97, 107, 114, 97,
+			32, 8, 197, 80, 84, 218, 36, 176, 11, 0, 11, 200, 77, 170, 22, 20, 120, 150, 20, 192, 11, 12, 201, 77, 161, 77, 50, 35, 20, 21,
+			69, 133, 11, 12, 201, 57, 146, 76, 5, 66, 207, 104, 245, 20, 11, 13, 3, 95, 52, 111, 50, 109, 79, 109, 72, 37, 49, 0, 0, 12,
+			201, 32, 19, 12, 28, 21, 39, 56, 18, 192, 11, 12, 201, 80, 20, 148, 4, 195, 92, 56, 18, 192, 11, 8, 197, 28, 243, 132, 60, 208,
+			11, 6, 195, 77, 170, 204, 11, 12, 201, 52, 81, 207, 48, 71, 19, 56, 18, 192, 11, 14, 139, 101, 108, 101, 109, 122, 197, 145, 107, 98,
+			101, 110, 11, 8, 197, 52, 243, 132, 60, 208, 11, 6, 195, 20, 202, 12, 11, 14, 4, 95, 115, 116, 107, 114, 47, 107, 116, 88, 114, 91,
+			0, 10, 6, 95, 35, 45, 105, 107, 101, 109, 0, 0, 55, 74, 65, 35, 194, 50, 35, 92, 41, 194, 15, 104, 48, 52, 39, 71, 55, 113,
+			65, 114, 57, 114, 107, 39, 88, 23, 107, 108, 91, 39, 50, 55, 112, 47, 39, 47, 12, 108, 0, 11, 81, 104, 97, 115, 111, 110, 108, 195,
+			173, 116, 111, 116, 116, 97, 32, 9, 198, 16, 80, 197, 52, 33, 82, 15, 9, 198, 56, 245, 133, 52, 33, 82, 15, 0, 8, 197, 24, 241,
+			212, 60, 176, 76, 39, 68, 20, 195, 5, 56, 109, 55, 12, 109, 50, 23, 55, 113, 47, 52, 109, 107, 39, 88, 39, 47, 12, 0, 11, 81,
+			108, 195, 169, 116, 114, 101, 104, 111, 122, 111, 116, 116, 32, 47, 68, 20, 195, 5, 56, 109, 55, 12, 109, 50, 10, 6, 15, 107, 37, 52,
+			72, 109, 47, 12, 113, 49, 10, 6, 15, 65, 109, 81, 0, 11, 82, 104, 105, 114, 100, 101, 116, 116, 195, 169, 107, 32, 109, 101, 103, 32,
+			11, 200, 77, 1, 67, 36, 98, 75, 85, 48, 11, 30, 70, 44, 144, 68, 113, 48, 64, 49, 37, 108, 72, 114, 91, 108, 23, 55, 109, 107,
+			109, 47, 0, 11, 81, 108, 101, 104, 101, 116, 32, 9, 198, 80, 20, 148, 113, 48, 64, 11, 7, 196, 20, 195, 5, 56, 11, 5, 194, 136,
+			112, 11, 5, 194, 136, 112, 11, 7, 196, 20, 195, 5, 56, 11, 0, 6, 195, 60, 183, 14, 11, 9, 198, 32, 246, 142, 37, 82, 192, 11,
+			0, 7, 196, 4, 65, 9, 28, 11, 11, 200, 32, 83, 25, 21, 69, 5, 76, 80, 11, 9, 198, 88, 20, 220, 72, 224, 80, 15, 0, 9,
+			198, 21, 54, 139, 161, 168, 148, 11, 9, 134, 197, 145, 114, 110, 101, 107, 11, 0, 31, 68, 24, 241, 202, 4, 83, 39, 81, 57, 108, 10,
+			6, 15, 113, 52, 47, 109, 50, 37, 0, 11, 81, 195, 169, 114, 116, 101, 110, 105, 32, 40, 68, 24, 241, 202, 4, 83, 39, 81, 57, 108,
+			23, 109, 52, 109, 72, 65, 113, 67, 109, 88, 50, 37, 0, 11, 81, 101, 114, 101, 100, 109, 195, 169, 110, 121, 101, 122, 110, 105, 32, 8,
+			197, 88, 145, 5, 156, 176, 11, 6, 195, 77, 160, 82, 11, 9, 198, 44, 149, 40, 49, 72, 147, 11, 6, 195, 77, 160, 82, 11, 7, 196,
+			24, 241, 202, 4, 11, 0, 44, 69, 56, 17, 217, 72, 16, 50, 108, 79, 52, 108, 10, 6, 15, 84, 108, 50, 10, 6, 15, 114, 55, 112,
+			47, 84, 108, 0, 11, 82, 118, 97, 110, 32, 195, 161, 108, 108, 195, 173, 116, 118, 97, 32, 9, 198, 40, 83, 5, 57, 66, 75, 11, 8,
+			197, 80, 148, 218, 80, 16, 11, 11, 200, 36, 225, 37, 81, 103, 14, 101, 64, 11, 8, 197, 77, 161, 82, 16, 16, 15, 0, 13, 138, 197,
+			145, 115, 122, 105, 110, 116, 195, 169, 110, 11, 10, 199, 60, 181, 1, 80, 226, 85, 44, 11, 12, 137, 109, 197, 177, 115, 111, 114, 110, 97,
+			107, 11, 0, 8, 197, 44, 85, 25, 20, 112, 11, 28, 67, 45, 196, 148, 49, 114, 52, 47, 10, 6, 15, 39, 49, 39, 88, 50, 108, 0,
+			11, 81, 111, 107, 111, 122, 110, 97, 32, 12, 201, 45, 96, 76, 36, 98, 75, 112, 197, 0, 11, 10, 199, 77, 163, 198, 81, 97, 82, 80,
+			11, 10, 199, 32, 19, 135, 77, 161, 82, 80, 11, 6, 195, 45, 196, 148, 11, 6, 195, 34, 84, 148, 11, 0, 35, 68, 32, 246, 142, 4,
+			107, 39, 88, 50, 108, 23, 65, 109, 81, 39, 55, 72, 114, 91, 47, 0, 11, 81, 109, 101, 103, 111, 108, 100, 195, 161, 115, 116, 32, 28,
+			70, 46, 36, 218, 172, 197, 0, 49, 113, 89, 111, 55, 47, 23, 52, 115, 55, 108, 0, 11, 81, 114, 195, 179, 108, 97, 32, 43, 68, 80,
+			17, 202, 4, 47, 108, 81, 57, 108, 23, 37, 91, 23, 76, 108, 47, 55, 108, 49, 39, 88, 37, 49, 0, 11, 82, 105, 115, 32, 99, 115,
+			97, 116, 108, 97, 107, 111, 122, 105, 107, 32, 7, 196, 80, 17, 202, 4, 11, 11, 200, 82, 132, 133, 44, 81, 14, 20, 176, 11, 9, 198,
+			17, 39, 7, 84, 197, 0, 11, 9, 198, 46, 36, 218, 172, 197, 0, 11, 0, 17, 68, 77, 165, 147, 104, 101, 115, 122, 118, 195, 169, 101,
+			115, 122, 0, 29, 11, 200, 77, 161, 82, 88, 86, 133, 80, 80, 11, 8, 197, 81, 81, 14, 36, 16, 11, 8, 197, 32, 17, 217, 88, 16,
+			11, 7, 196, 4, 130, 15, 104, 11, 7, 196, 50, 130, 212, 20, 11, 8, 197, 88, 148, 211, 104, 16, 11, 0, 9, 198, 112, 195, 28, 76,
+			32, 78, 11, 0, 10, 199, 77, 170, 204, 21, 67, 133, 44, 11, 8, 197, 57, 147, 205, 60, 176, 11, 10, 199, 64, 243, 148, 41, 195, 129,
+			44, 11, 14, 203, 20, 195, 85, 48, 20, 218, 80, 245, 20, 84, 176, 11, 17, 142, 107, 195, 169, 112, 122, 197, 145, 100, 104, 101, 116, 110,
+			101, 107, 11, 14, 203, 52, 17, 217, 5, 35, 210, 77, 167, 7, 60, 224, 11, 6, 195, 48, 22, 129, 11, 8, 197, 77, 160, 86, 4, 176,
+			11, 8, 197, 88, 84, 218, 36, 176, 11, 9, 198, 20, 118, 65, 73, 195, 148, 11, 17, 9, 95, 35, 45, 195, 169, 110, 195, 169, 108, 113,
+			50, 113, 55, 0, 16, 0, 7, 196, 24, 241, 206, 36, 11, 31, 68, 80, 83, 142, 36, 47, 109, 50, 12, 37, 10, 6, 15, 108, 49, 108,
+			52, 114, 91, 0, 11, 81, 97, 107, 97, 114, 195, 161, 115, 32, 21, 67, 82, 35, 153, 47, 113, 67, 10, 6, 15, 91, 109, 65, 0, 11,
+			81, 115, 101, 109, 32, 22, 68, 80, 83, 142, 36, 47, 109, 50, 12, 37, 23, 108, 89, 47, 0, 11, 81, 97, 122, 116, 32, 6, 195, 82,
+			35, 153, 11, 7, 196, 80, 83, 142, 36, 11, 10, 199, 36, 225, 15, 44, 243, 20, 4, 11, 6, 195, 26, 35, 153, 11, 6, 195, 90, 86,
+			128, 11, 0, 10, 199, 16, 240, 156, 77, 197, 129, 48, 11, 10, 199, 46, 133, 133, 80, 83, 20, 20, 11, 6, 195, 85, 64, 83, 11, 8,
+			197, 24, 17, 217, 56, 144, 11, 10, 199, 160, 227, 65, 29, 197, 129, 48, 11, 10, 199, 37, 39, 14, 101, 197, 129, 48, 11, 0, 11, 200,
+			89, 195, 1, 77, 163, 204, 80, 16, 11, 11, 200, 44, 144, 68, 113, 55, 22, 4, 192, 11, 0, 6, 195, 88, 150, 133, 11, 0, 20, 66,
+			56, 80, 50, 109, 23, 50, 113, 88, 88, 0, 11, 81, 110, 195, 169, 122, 122, 32, 9, 198, 42, 116, 218, 112, 115, 212, 11, 24, 66, 56,
+			80, 50, 109, 10, 6, 15, 47, 109, 50, 12, 113, 0, 11, 81, 116, 101, 110, 110, 195, 169, 32, 17, 142, 195, 169, 114, 116, 101, 115, 195,
+			173, 116, 197, 145, 118, 101, 108, 11, 12, 201, 90, 85, 141, 112, 230, 65, 37, 96, 76, 11, 9, 198, 85, 64, 90, 61, 69, 0, 11, 9,
+			198, 32, 19, 12, 41, 82, 192, 11, 9, 198, 32, 83, 25, 21, 69, 0, 11, 7, 196, 32, 147, 142, 36, 11, 6, 195, 54, 35, 25, 11,
+			7, 196, 48, 83, 142, 36, 11, 5, 194, 56, 80, 11, 0, 41, 68, 46, 134, 148, 36, 49, 110, 89, 47, 37, 23, 49, 111, 55, 110, 50,
+			71, 91, 113, 81, 109, 49, 0, 11, 81, 107, 195, 188, 108, 195, 182, 110, 98, 115, 195, 169, 103, 101, 107, 32, 13, 202, 36, 195, 5, 82,
+			34, 197, 78, 37, 133, 48, 11, 51, 68, 46, 134, 148, 36, 49, 110, 89, 47, 37, 23, 50, 113, 88, 109, 47, 109, 55, 47, 113, 52, 113,
+			91, 109, 49, 109, 47, 0, 11, 81, 110, 195, 169, 122, 101, 116, 101, 108, 116, 195, 169, 114, 195, 169, 115, 101, 107, 101, 116, 32, 9, 198,
+			29, 144, 76, 60, 115, 211, 11, 8, 197, 8, 18, 129, 36, 208, 11, 0, 12, 201, 46, 36, 218, 149, 72, 147, 137, 97, 76, 11, 26, 67,
+			85, 64, 84, 40, 47, 108, 47, 15, 49, 108, 48, 39, 47, 12, 0, 11, 81, 107, 97, 112, 111, 116, 116, 32, 9, 198, 80, 84, 150, 21,
+			162, 64, 11, 9, 198, 36, 120, 142, 100, 83, 0, 11, 9, 198, 89, 195, 20, 61, 169, 192, 11, 7, 196, 45, 83, 3, 76, 11, 9, 198,
+			80, 21, 129, 77, 162, 64, 15, 15, 3, 95, 56, 113, 67, 39, 55, 119, 108, 72, 37, 49, 108, 0, 0, 7, 196, 85, 64, 76, 80, 11,
+			9, 198, 48, 81, 143, 29, 147, 137, 11, 7, 196, 4, 197, 68, 80, 11, 0, 9, 198, 41, 197, 19, 104, 19, 137, 11, 7, 196, 136, 113,
+			84, 80, 11, 9, 198, 18, 82, 129, 44, 21, 0, 11, 8, 197, 49, 197, 10, 84, 176, 11, 0, 20, 68, 53, 196, 210, 4, 65, 114, 91,
+			52, 108, 23, 37, 91, 0, 11, 81, 105, 115, 32, 12, 201, 72, 83, 132, 20, 194, 197, 104, 83, 0, 11, 9, 198, 24, 150, 137, 45, 83,
+			106, 11, 7, 196, 58, 38, 150, 20, 11, 9, 198, 24, 241, 193, 48, 213, 75, 11, 6, 195, 46, 165, 0, 11, 0, 6, 195, 52, 83, 148,
+			11, 0, 12, 201, 29, 145, 82, 52, 82, 197, 44, 85, 0, 11, 11, 200, 53, 85, 15, 28, 21, 10, 84, 176, 11, 10, 199, 24, 83, 43,
+			48, 85, 34, 56, 11, 10, 199, 80, 84, 171, 48, 85, 34, 56, 11, 7, 196, 88, 19, 39, 44, 11, 0, 15, 66, 49, 144, 109, 55, 55,
+			37, 48, 89, 37, 55, 39, 50, 0, 9, 198, 14, 35, 10, 4, 149, 0, 11, 9, 198, 88, 19, 1, 44, 149, 0, 11, 5, 194, 61, 48,
+			72, 18, 4, 95, 99, 105, 114, 119, 37, 52, 49, 40, 65, 83, 55, 109, 49, 89, 0, 0, 0, 9, 198, 80, 85, 19, 104, 85, 20, 11,
+			8, 197, 88, 86, 162, 72, 80, 11, 10, 199, 28, 243, 132, 60, 197, 21, 44, 11, 9, 198, 160, 234, 11, 56, 82, 192, 11, 8, 197, 82,
+			131, 139, 72, 80, 11, 9, 198, 41, 196, 129, 18, 34, 192, 11, 10, 199, 81, 83, 1, 40, 67, 206, 168, 11, 6, 131, 110, 197, 145, 11,
+			17, 3, 95, 57, 113, 49, 37, 55, 109, 50, 119, 109, 72, 37, 49, 109, 0, 13, 4, 95, 48, 77, 52, 71, 37, 55, 55, 37, 115, 0,
+			0, 9, 198, 32, 19, 28, 49, 32, 64, 11, 8, 197, 40, 83, 26, 36, 176, 11, 34, 71, 48, 81, 129, 29, 147, 212, 80, 55, 109, 83,
+			108, 79, 39, 47, 12, 23, 65, 37, 50, 72, 109, 50, 0, 11, 81, 109, 105, 110, 100, 101, 110, 32, 8, 197, 24, 83, 18, 4, 176, 11,
+			9, 198, 52, 20, 16, 113, 32, 64, 11, 8, 197, 32, 148, 218, 36, 176, 11, 0, 32, 70, 40, 83, 26, 137, 53, 0, 57, 109, 55, 88,
+			113, 91, 47, 10, 6, 15, 108, 72, 50, 108, 49, 0, 11, 81, 97, 100, 110, 97, 107, 32, 31, 70, 77, 163, 198, 81, 97, 82, 89, 39,
+			83, 47, 84, 109, 52, 23, 50, 109, 84, 113, 47, 0, 11, 81, 110, 101, 118, 195, 169, 116, 32, 9, 198, 89, 196, 220, 72, 243, 20, 11,
+			7, 196, 41, 85, 14, 36, 11, 14, 3, 95, 56, 111, 67, 39, 55, 119, 108, 72, 37, 49, 0, 13, 4, 95, 48, 77, 50, 65, 37, 55,
+			55, 37, 115, 0, 0, 11, 200, 8, 150, 143, 57, 153, 84, 136, 176, 11, 6, 195, 88, 243, 128, 11, 15, 4, 95, 48, 77, 51, 65, 37,
+			55, 55, 37, 114, 52, 72, 0, 0, 8, 197, 52, 81, 226, 72, 144, 11, 15, 204, 46, 133, 5, 48, 86, 133, 81, 68, 226, 30, 37, 0,
+			11, 52, 69, 77, 167, 13, 149, 64, 89, 114, 65, 112, 47, 10, 6, 15, 108, 6, 15, 65, 37, 50, 37, 89, 47, 109, 52, 109, 55, 50,
+			110, 49, 0, 11, 82, 97, 32, 109, 105, 110, 105, 115, 122, 116, 101, 114, 101, 108, 110, 195, 182, 107, 32, 13, 202, 4, 194, 193, 48, 208,
+			90, 104, 19, 129, 44, 11, 8, 197, 46, 36, 218, 149, 64, 11, 8, 197, 77, 167, 13, 149, 64, 11, 0, 8, 197, 48, 84, 218, 20, 176,
+			72, 42, 75, 77, 169, 203, 5, 0, 211, 60, 192, 84, 60, 176, 89, 115, 49, 108, 48, 76, 39, 55, 108, 47, 39, 49, 23, 84, 108, 50,
+			12, 108, 49, 0, 11, 81, 118, 97, 110, 110, 97, 107, 32, 8, 197, 80, 81, 217, 20, 176, 11, 7, 196, 82, 84, 21, 76, 11, 8, 197,
+			44, 20, 20, 4, 176, 11, 11, 4, 95, 48, 77, 49, 109, 88, 109, 52, 0, 0, 15, 204, 44, 243, 80, 72, 243, 73, 77, 54, 149, 52,
+			242, 192, 11, 58, 73, 80, 84, 150, 21, 168, 147, 137, 97, 76, 47, 109, 34, 84, 109, 88, 113, 91, 113, 84, 109, 55, 23, 83, 39, 81,
+			55, 108, 55, 49, 39, 88, 115, 23, 119, 113, 81, 0, 11, 82, 102, 111, 103, 108, 97, 108, 107, 111, 122, 195, 179, 32, 99, 195, 169, 103,
+			32, 8, 133, 116, 101, 118, 197, 145, 11, 9, 198, 4, 176, 82, 41, 82, 192, 11, 7, 196, 81, 81, 14, 36, 11, 0, 8, 67, 17, 164,
+			192, 75, 113, 0, 9, 134, 107, 195, 169, 114, 197, 145, 11, 8, 197, 81, 33, 78, 16, 144, 11, 8, 197, 149, 35, 156, 56, 176, 11, 8,
+			197, 90, 33, 218, 137, 48, 11, 6, 195, 54, 113, 0, 11, 6, 195, 8, 244, 128, 11, 6, 195, 172, 197, 0, 11, 0, 14, 203, 20, 195,
+			211, 104, 192, 84, 113, 55, 22, 4, 192, 11, 14, 203, 4, 194, 193, 48, 208, 90, 113, 55, 22, 4, 192, 11, 9, 198, 29, 145, 78, 30,
+			179, 0, 11, 14, 139, 101, 108, 197, 145, 107, 101, 114, 101, 115, 110, 105, 11, 11, 6, 95, 35, 45, 195, 161, 110, 114, 50, 0, 0, 15,
+			204, 90, 33, 204, 20, 113, 83, 149, 65, 84, 82, 34, 192, 11, 24, 68, 56, 82, 197, 16, 50, 109, 49, 109, 72, 15, 49, 109, 55, 12,
+			0, 11, 81, 107, 101, 108, 108, 32, 7, 196, 24, 82, 133, 16, 11, 7, 196, 56, 82, 197, 16, 11, 0, 24, 70, 4, 192, 75, 84, 197,
+			0, 108, 55, 108, 49, 40, 55, 47, 23, 49, 37, 0, 11, 81, 107, 105, 32, 7, 196, 77, 160, 71, 4, 11, 11, 200, 24, 82, 140, 21,
+			54, 148, 137, 48, 11, 0, 28, 70, 53, 196, 207, 16, 146, 192, 65, 114, 91, 39, 72, 37, 49, 23, 109, 55, 109, 65, 0, 11, 81, 101,
+			108, 101, 109, 32, 15, 204, 13, 48, 80, 4, 72, 139, 72, 83, 132, 77, 161, 82, 11, 10, 199, 46, 37, 19, 136, 113, 73, 80, 11, 9,
+			198, 72, 83, 98, 48, 146, 192, 11, 11, 200, 82, 132, 140, 21, 54, 148, 137, 48, 11, 11, 200, 20, 194, 226, 65, 161, 76, 137, 48, 11,
+			15, 7, 95, 35, 45, 116, 197, 145, 108, 113, 47, 118, 55, 0, 16, 0, 15, 204, 32, 18, 140, 136, 181, 1, 48, 19, 138, 4, 147, 139,
+			11, 15, 204, 32, 246, 154, 112, 167, 18, 84, 199, 19, 113, 96, 76, 11, 11, 200, 89, 195, 1, 77, 165, 1, 56, 144, 11, 0, 11, 200,
+			44, 83, 5, 80, 177, 90, 36, 176, 11, 9, 198, 44, 19, 11, 84, 199, 12, 11, 0, 7, 196, 72, 149, 11, 4, 11, 18, 143, 102, 101,
+			108, 101, 108, 197, 145, 115, 115, 195, 169, 103, 195, 188, 107, 11, 7, 196, 32, 83, 25, 20, 11, 11, 200, 46, 133, 133, 80, 177, 90, 36,
+			176, 11, 6, 195, 34, 134, 128, 11, 0, 9, 198, 81, 81, 10, 4, 224, 75, 11, 36, 69, 80, 84, 212, 72, 80, 47, 109, 91, 47, 52,
+			109, 10, 6, 15, 89, 108, 71, 107, 108, 47, 115, 0, 11, 81, 115, 122, 97, 98, 104, 97, 116, 195, 179, 32, 12, 201, 89, 195, 12, 4,
+			192, 84, 10, 115, 0, 11, 8, 197, 49, 197, 20, 112, 176, 11, 15, 4, 95, 108, 105, 103, 55, 37, 81, 108, 47, 116, 52, 108, 0, 9,
+			198, 80, 21, 129, 77, 167, 14, 15, 15, 7, 95, 35, 45, 114, 197, 145, 108, 113, 52, 118, 55, 0, 16, 0, 11, 136, 112, 101, 114, 99,
+			114, 197, 145, 108, 17, 12, 201, 8, 150, 148, 61, 57, 84, 41, 194, 192, 11, 9, 198, 78, 162, 148, 41, 194, 192, 11, 9, 198, 77, 167,
+			14, 41, 194, 192, 11, 9, 198, 77, 167, 13, 49, 194, 192, 11, 12, 201, 52, 17, 217, 5, 39, 26, 105, 194, 192, 11, 0, 10, 199, 4,
+			192, 80, 61, 165, 28, 44, 11, 10, 199, 20, 195, 79, 56, 69, 28, 44, 11, 12, 201, 53, 83, 139, 5, 71, 18, 76, 18, 64, 11, 8,
+			197, 4, 64, 84, 60, 176, 11, 0, 19, 71, 44, 147, 15, 29, 32, 77, 52, 107, 105, 108, 111, 103, 114, 97, 109, 0, 29, 15, 204, 161,
+			52, 218, 64, 243, 148, 61, 57, 84, 4, 226, 64, 11, 6, 195, 10, 86, 128, 11, 9, 198, 10, 84, 156, 49, 71, 11, 11, 13, 67, 61,
+			68, 0, 115, 47, 113, 48, 113, 0, 42, 42, 0, 8, 197, 80, 242, 156, 77, 64, 11, 19, 67, 61, 69, 0, 39, 47, 12, 23, 84, 108,
+			50, 0, 11, 81, 118, 97, 110, 32, 14, 139, 114, 195, 169, 115, 122, 195, 169, 98, 197, 145, 108, 11, 12, 201, 24, 82, 140, 21, 54, 148,
+			137, 49, 78, 11, 6, 195, 61, 69, 0, 11, 6, 195, 56, 245, 128, 15, 0, 11, 200, 24, 243, 25, 156, 148, 129, 80, 16, 11, 11, 200,
+			88, 150, 147, 29, 195, 1, 80, 16, 11, 0, 12, 201, 53, 83, 139, 5, 71, 18, 77, 197, 0, 11, 0, 18, 66, 64, 48, 112, 195, 169,
+			99, 195, 169, 115, 0, 44, 29, 42, 81, 115, 32, 17, 66, 64, 48, 112, 195, 169, 99, 195, 169, 110, 0, 44, 29, 81, 110, 32, 18, 66,
+			64, 48, 112, 195, 169, 99, 195, 169, 110, 0, 44, 29, 42, 81, 110, 32, 18, 66, 64, 48, 112, 195, 169, 99, 195, 169, 107, 0, 44, 29,
+			42, 81, 107, 32, 10, 199, 81, 81, 8, 5, 67, 156, 16, 11, 26, 68, 8, 83, 43, 48, 71, 109, 55, 111, 55, 23, 65, 108, 52, 108,
+			72, 0, 11, 81, 109, 97, 114, 97, 100, 32, 7, 196, 8, 83, 43, 48, 11, 5, 194, 52, 144, 11, 20, 66, 44, 208, 49, 37, 55, 115,
+			65, 113, 47, 109, 52, 47, 0, 44, 11, 81, 116, 32, 22, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 109, 91, 0, 44, 11,
+			81, 101, 115, 32, 23, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 67, 37, 0, 44, 11, 81, 110, 121, 105, 32, 27, 66, 44,
+			208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 67, 37, 52, 109, 0, 44, 11, 81, 110, 121, 105, 114, 101, 32, 22, 66, 44, 208, 49, 37,
+			55, 115, 65, 113, 47, 109, 52, 52, 109, 0, 44, 11, 81, 114, 101, 32, 15, 66, 44, 208, 49, 37, 55, 115, 65, 113, 47, 109, 52, 0,
+			11, 0, 0, 10, 199, 10, 84, 167, 77, 193, 207, 80, 11, 11, 200, 18, 131, 148, 161, 69, 43, 56, 176, 11, 6, 195, 32, 149, 20, 11,
+			0, 12, 201, 4, 194, 193, 48, 208, 90, 61, 69, 0, 11, 0, 9, 198, 36, 229, 34, 104, 85, 0, 11, 9, 198, 80, 19, 28, 48, 231,
+			4, 11, 9, 198, 84, 69, 129, 73, 195, 128, 11, 12, 201, 32, 20, 207, 56, 201, 211, 112, 115, 212, 11, 6, 195, 149, 34, 129, 11, 8,
+			197, 44, 20, 10, 112, 176, 11, 9, 198, 77, 161, 82, 17, 195, 128, 17, 0, 22, 67, 52, 149, 0, 65, 37, 47, 23, 109, 89, 109, 55,
+			0, 11, 81, 101, 115, 122, 101, 108, 32, 38, 67, 52, 149, 0, 65, 37, 47, 10, 6, 15, 84, 114, 55, 47, 39, 89, 47, 108, 47, 50,
+			37, 0, 11, 81, 118, 195, 161, 108, 116, 111, 122, 116, 97, 116, 110, 105, 32, 8, 197, 77, 167, 13, 60, 192, 11, 10, 199, 20, 197, 28,
+			72, 243, 14, 36, 11, 8, 197, 50, 113, 207, 81, 64, 11, 8, 197, 48, 83, 142, 136, 192, 11, 6, 195, 52, 149, 0, 11, 0, 34, 69,
+			20, 195, 168, 44, 144, 109, 55, 50, 110, 49, 37, 23, 48, 39, 89, 47, 52, 115, 55, 0, 11, 81, 112, 111, 115, 122, 116, 114, 195, 179,
+			108, 32, 16, 141, 102, 101, 108, 104, 197, 145, 116, 97, 107, 97, 114, 195, 179, 11, 7, 196, 65, 196, 143, 56, 11, 6, 195, 32, 244, 16,
+			11, 6, 195, 8, 244, 148, 11, 7, 196, 29, 147, 210, 76, 11, 0, 10, 199, 137, 33, 5, 46, 32, 133, 56, 11, 13, 138, 109, 197, 177,
+			107, 195, 182, 100, 110, 101, 107, 11, 10, 199, 137, 33, 5, 46, 32, 133, 56, 11, 8, 133, 108, 197, 145, 116, 116, 11, 0, 9, 198, 160,
+			197, 40, 104, 232, 139, 11, 9, 198, 80, 148, 9, 45, 84, 192, 11, 11, 200, 44, 83, 12, 20, 232, 142, 20, 176, 11, 12, 201, 77, 160,
+			66, 112, 198, 79, 105, 196, 212, 11, 7, 196, 25, 194, 140, 80, 11, 0, 12, 201, 80, 82, 201, 57, 65, 84, 136, 33, 78, 11, 10, 135,
+			105, 100, 197, 145, 118, 101, 108, 11, 9, 198, 4, 192, 84, 80, 144, 75, 11, 11, 200, 24, 83, 12, 137, 8, 147, 20, 176, 11, 10, 199,
+			77, 163, 204, 29, 195, 10, 4, 11, 0, 24, 67, 26, 177, 199, 83, 111, 81, 12, 23, 110, 89, 12, 109, 0, 11, 81, 195, 182, 115, 115,
+			122, 101, 32, 12, 201, 77, 170, 203, 78, 33, 197, 76, 82, 192, 11, 9, 198, 26, 35, 153, 21, 49, 75, 11, 6, 195, 136, 193, 83, 11,
+			6, 195, 26, 177, 199, 11, 0, 8, 197, 80, 20, 148, 60, 176, 11, 9, 198, 13, 51, 205, 4, 116, 129, 11, 26, 71, 32, 83, 25, 21,
+			161, 84, 80, 107, 109, 57, 109, 88, 109, 47, 12, 23, 49, 37, 0, 11, 81, 107, 105, 32, 10, 199, 80, 84, 150, 21, 161, 84, 80, 11,
+			15, 140, 108, 101, 118, 101, 103, 197, 145, 106, 195, 169, 114, 101, 11, 8, 197, 40, 19, 149, 113, 32, 15, 0, 12, 201, 137, 65, 76, 32,
+			244, 132, 157, 96, 76, 11, 0, 12, 201, 46, 36, 132, 137, 49, 75, 8, 83, 128, 11, 12, 201, 32, 149, 129, 80, 19, 15, 77, 55, 0,
+			11, 12, 201, 80, 20, 148, 157, 162, 207, 16, 146, 192, 11, 14, 203, 32, 18, 140, 136, 181, 1, 48, 19, 142, 4, 192, 11, 7, 196, 46,
+			132, 162, 80, 11, 7, 196, 46, 132, 162, 80, 11, 0, 8, 133, 105, 100, 197, 145, 115, 11, 8, 197, 64, 199, 26, 113, 64, 11, 8, 197,
+			54, 113, 10, 113, 64, 11, 8, 197, 78, 163, 25, 113, 64, 11, 8, 197, 77, 167, 13, 113, 64, 11, 6, 195, 57, 145, 76, 11, 0, 9,
+			198, 16, 151, 11, 60, 176, 84, 11, 9, 198, 88, 17, 217, 60, 231, 20, 11, 15, 140, 103, 121, 197, 177, 106, 116, 197, 145, 110, 101, 118,
+			101, 11, 15, 140, 107, 195, 169, 112, 101, 114, 110, 121, 197, 145, 114, 101, 11, 9, 198, 64, 244, 218, 80, 167, 20, 11, 0, 10, 199, 48,
+			83, 79, 56, 64, 78, 36, 11, 9, 198, 74, 36, 218, 21, 58, 204, 11, 12, 137, 100, 111, 107, 116, 111, 114, 110, 197, 145, 11, 8, 197,
+			44, 83, 20, 137, 48, 11, 15, 204, 40, 241, 211, 104, 16, 156, 49, 147, 203, 8, 19, 128, 11, 0, 11, 200, 80, 83, 132, 20, 224, 201,
+			113, 64, 11, 11, 200, 24, 243, 25, 4, 208, 84, 113, 64, 11, 57, 72, 24, 83, 13, 85, 64, 84, 56, 144, 83, 109, 55, 65, 40, 47,
+			108, 47, 50, 37, 23, 108, 6, 15, 47, 114, 52, 79, 108, 55, 114, 91, 39, 49, 39, 50, 0, 11, 82, 97, 32, 116, 195, 161, 114, 103,
+			121, 97, 108, 195, 161, 115, 111, 107, 111, 110, 32, 11, 200, 13, 51, 208, 61, 37, 10, 113, 64, 11, 12, 201, 76, 81, 229, 81, 56, 135,
+			137, 97, 76, 11, 22, 147, 112, 195, 169, 110, 122, 105, 110, 116, 195, 169, 122, 101, 116, 101, 107, 116, 197, 145, 108, 11, 11, 200, 24, 83,
+			11, 21, 33, 83, 56, 144, 11, 0, 15, 204, 90, 35, 5, 54, 35, 153, 21, 168, 147, 137, 33, 64, 11, 8, 197, 20, 195, 168, 44, 80,
+			11, 10, 199, 24, 19, 129, 80, 146, 213, 76, 11, 12, 201, 40, 21, 129, 76, 192, 84, 60, 176, 84, 11, 0, 30, 71, 24, 244, 132, 84,
+			194, 1, 80, 83, 39, 52, 72, 40, 55, 107, 108, 47, 23, 109, 55, 118, 0, 11, 81, 101, 108, 197, 145, 32, 12, 201, 4, 194, 193, 48,
+			208, 90, 113, 53, 0, 11, 0, 60, 14, 106, 101, 108, 101, 110, 116, 197, 145, 115, 195, 169, 103, 101, 116, 57, 109, 55, 109, 50, 47, 118,
+			91, 113, 81, 109, 47, 23, 47, 40, 55, 108, 57, 72, 39, 50, 112, 47, 108, 50, 37, 0, 11, 81, 116, 117, 108, 97, 106, 100, 111, 110,
+			195, 173, 116, 97, 110, 105, 32, 16, 141, 108, 195, 182, 118, 195, 182, 108, 100, 195, 182, 122, 197, 145, 11, 6, 195, 77, 161, 82, 72, 0,
+			9, 198, 136, 193, 84, 137, 104, 148, 11, 37, 72, 44, 244, 146, 36, 119, 12, 113, 48, 49, 39, 52, 52, 37, 81, 114, 55, 114, 91, 23,
+			52, 113, 84, 113, 50, 0, 11, 81, 114, 195, 169, 118, 195, 169, 110, 32, 9, 198, 36, 225, 21, 49, 64, 75, 11, 14, 203, 32, 20, 207,
+			56, 201, 84, 28, 21, 14, 60, 64, 11, 11, 200, 82, 132, 133, 45, 54, 171, 56, 176, 11, 0, 10, 199, 4, 194, 193, 81, 40, 147, 104,
+			11, 8, 197, 10, 36, 162, 73, 64, 11, 7, 196, 81, 197, 143, 56, 11, 0, 9, 198, 65, 83, 39, 88, 84, 148, 11, 0, 13, 138, 99,
+			195, 173, 109, 195, 169, 116, 197, 145, 108, 11, 9, 198, 54, 36, 134, 160, 193, 0, 11, 11, 200, 40, 83, 5, 57, 72, 147, 20, 176, 11,
+			12, 136, 104, 195, 169, 116, 102, 197, 145, 110, 15, 17, 0, 9, 198, 54, 36, 142, 160, 177, 73, 11, 14, 203, 13, 48, 80, 4, 72, 139,
+			33, 83, 12, 113, 48, 11, 7, 196, 46, 134, 148, 20, 11, 10, 199, 46, 36, 132, 137, 52, 197, 48, 11, 6, 195, 40, 241, 192, 11, 0,
+			10, 199, 24, 82, 150, 4, 71, 19, 104, 11, 12, 201, 8, 84, 133, 56, 65, 90, 137, 49, 75, 11, 0, 9, 198, 32, 19, 12, 61, 69,
+			1, 11, 10, 199, 80, 20, 148, 61, 69, 28, 44, 11, 10, 199, 81, 81, 8, 5, 66, 156, 44, 11, 17, 9, 95, 35, 45, 195, 161, 110,
+			195, 161, 108, 114, 50, 114, 55, 0, 16, 0, 10, 199, 24, 244, 137, 57, 72, 146, 80, 11, 13, 202, 4, 194, 193, 48, 208, 90, 113, 52,
+			193, 48, 11, 40, 71, 24, 244, 137, 57, 72, 146, 80, 83, 39, 52, 37, 50, 47, 113, 52, 47, 23, 109, 55, 84, 37, 107, 109, 47, 118,
+			0, 11, 81, 101, 108, 118, 105, 104, 101, 116, 197, 145, 32, 10, 199, 89, 196, 136, 5, 73, 193, 44, 11, 13, 138, 104, 101, 108, 121, 195,
+			169, 114, 197, 145, 108, 11, 8, 197, 88, 83, 43, 56, 176, 11, 7, 196, 52, 17, 193, 52, 11, 0, 6, 195, 24, 241, 192, 11, 21, 67,
+			49, 197, 0, 55, 114, 47, 23, 65, 108, 57, 72, 0, 11, 81, 109, 97, 106, 100, 32, 36, 67, 24, 241, 192, 83, 39, 81, 23, 108, 6,
+			15, 71, 37, 88, 39, 76, 12, 114, 81, 0, 11, 82, 97, 32, 98, 105, 122, 111, 116, 116, 115, 195, 161, 103, 32, 29, 67, 24, 241, 192,
+			83, 39, 81, 23, 107, 108, 34, 119, 39, 55, 50, 37, 0, 11, 81, 104, 97, 114, 99, 111, 108, 110, 105, 32, 10, 199, 20, 195, 69, 78,
+			35, 20, 20, 11, 14, 139, 114, 195, 169, 115, 122, 195, 169, 114, 197, 145, 108, 11, 6, 195, 49, 197, 0, 11, 0, 10, 199, 52, 20, 129,
+			17, 69, 78, 44, 11, 10, 199, 24, 244, 137, 57, 69, 78, 44, 11, 8, 197, 20, 200, 146, 56, 144, 11, 12, 201, 80, 19, 28, 48, 128,
+			84, 156, 18, 192, 11, 8, 197, 74, 161, 220, 77, 64, 11, 14, 4, 95, 99, 101, 100, 119, 113, 72, 37, 55, 55, 109, 0, 0, 42, 70,
+			77, 162, 78, 80, 83, 128, 89, 37, 50, 47, 109, 50, 23, 47, 109, 91, 47, 52, 109, 89, 108, 71, 50, 37, 0, 11, 81, 116, 101, 115,
+			116, 114, 101, 115, 122, 97, 98, 110, 105, 32, 9, 198, 60, 64, 101, 72, 226, 64, 11, 12, 201, 73, 194, 226, 72, 65, 90, 21, 69, 0,
+			11, 9, 198, 77, 162, 78, 80, 83, 128, 11, 9, 198, 9, 195, 148, 4, 226, 64, 11, 0, 9, 198, 45, 83, 3, 77, 197, 0, 11, 39,
+			71, 52, 81, 207, 48, 71, 19, 80, 65, 109, 81, 39, 55, 72, 114, 91, 47, 23, 113, 48, 112, 47, 23, 71, 109, 0, 11, 82, 195, 169,
+			112, 195, 173, 116, 32, 98, 101, 32, 10, 199, 88, 19, 12, 60, 215, 19, 80, 11, 9, 198, 36, 72, 154, 21, 69, 0, 11, 9, 198, 40,
+			83, 26, 21, 69, 0, 11, 10, 199, 52, 81, 207, 48, 71, 19, 80, 11, 5, 194, 161, 48, 72, 5, 194, 72, 16, 11, 0, 11, 200, 80,
+			20, 148, 32, 21, 14, 112, 64, 11, 9, 198, 33, 197, 18, 112, 230, 65, 11, 0, 18, 207, 82, 132, 150, 136, 230, 74, 5, 96, 83, 48,
+			21, 28, 32, 246, 128, 11, 8, 197, 50, 36, 14, 36, 80, 11, 24, 67, 48, 85, 20, 55, 109, 47, 12, 23, 84, 39, 55, 50, 108, 0,
+			11, 81, 118, 111, 108, 110, 97, 32, 22, 67, 48, 85, 20, 55, 109, 47, 12, 23, 81, 39, 50, 72, 0, 11, 81, 103, 111, 110, 100, 32,
+			13, 202, 32, 20, 218, 57, 195, 1, 81, 200, 146, 80, 11, 6, 195, 48, 85, 20, 11, 0, 7, 196, 49, 192, 156, 56, 11, 0, 43, 73,
+			44, 20, 3, 76, 243, 1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 79, 108, 50, 116, 52, 115, 55, 0, 11, 81,
+			103, 121, 97, 110, 195, 186, 114, 195, 179, 108, 32, 8, 197, 44, 201, 206, 60, 176, 11, 45, 73, 44, 20, 3, 76, 243, 1, 80, 244, 192,
+			49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 47, 109, 52, 84, 109, 49, 52, 118, 55, 0, 11, 81, 116, 101, 114, 118, 101, 107, 114,
+			197, 145, 108, 32, 41, 73, 44, 20, 3, 76, 243, 1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 107, 112, 52, 109,
+			49, 109, 47, 0, 11, 81, 104, 195, 173, 114, 101, 107, 101, 116, 32, 12, 137, 108, 101, 103, 121, 197, 145, 122, 110, 105, 11, 58, 73, 44,
+			20, 3, 76, 243, 1, 80, 244, 192, 49, 108, 48, 76, 39, 55, 108, 47, 39, 91, 23, 71, 37, 88, 39, 67, 47, 108, 55, 108, 50, 91,
+			114, 81, 39, 49, 0, 11, 81, 98, 105, 122, 111, 110, 121, 116, 97, 108, 97, 110, 115, 195, 161, 103, 111, 107, 32, 6, 195, 34, 84, 133,
+			11, 12, 201, 44, 20, 3, 76, 243, 1, 80, 244, 192, 11, 9, 198, 80, 17, 202, 4, 149, 0, 11, 7, 132, 116, 197, 177, 122, 11, 14,
+			67, 48, 212, 0, 109, 55, 109, 65, 48, 113, 0, 42, 42, 0, 23, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 0, 11, 81,
+			107, 195, 182, 122, 195, 169, 32, 43, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 23, 109, 65, 109, 55, 49, 109, 72, 37, 49,
+			0, 11, 82, 107, 195, 182, 122, 195, 169, 32, 101, 109, 101, 108, 107, 101, 100, 105, 107, 32, 46, 67, 24, 242, 192, 83, 39, 49, 23, 49,
+			110, 88, 110, 47, 12, 23, 89, 115, 52, 115, 72, 37, 49, 0, 11, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 115, 122, 195, 179, 114,
+			195, 179, 100, 105, 107, 32, 70, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 113, 23, 76, 110, 49, 12, 109, 50, 23, 108, 23, 107,
+			118, 65, 113, 52, 91, 113, 49, 55, 109, 47, 0, 11, 84, 107, 195, 182, 122, 195, 169, 32, 99, 115, 195, 182, 107, 107, 101, 110, 32, 97,
+			32, 104, 197, 145, 109, 195, 169, 114, 115, 195, 169, 107, 108, 101, 116, 32, 41, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 110, 47,
+			12, 23, 108, 55, 108, 49, 40, 55, 0, 11, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 97, 108, 97, 107, 117, 108, 32, 74, 67, 24,
+			242, 192, 83, 39, 49, 23, 83, 110, 55, 113, 23, 109, 65, 109, 55, 49, 109, 72, 37, 49, 23, 108, 23, 107, 118, 65, 113, 52, 91, 113,
+			49, 55, 109, 47, 0, 11, 84, 102, 195, 182, 108, 195, 169, 32, 101, 109, 101, 108, 107, 101, 100, 105, 107, 32, 97, 32, 104, 197, 145, 109,
+			195, 169, 114, 115, 195, 169, 107, 108, 101, 116, 32, 45, 67, 24, 242, 192, 83, 39, 49, 23, 49, 110, 88, 110, 47, 12, 23, 84, 114, 51,
+			107, 108, 47, 115, 0, 11, 82, 107, 195, 182, 122, 195, 182, 116, 116, 32, 118, 195, 161, 114, 104, 97, 116, 195, 179, 32, 7, 196, 85, 71,
+			14, 4, 11, 9, 198, 24, 243, 148, 61, 48, 75, 11, 12, 201, 44, 149, 162, 80, 83, 34, 88, 83, 0, 11, 10, 199, 89, 195, 20, 61,
+			167, 19, 80, 11, 6, 195, 24, 242, 192, 11, 9, 198, 80, 20, 148, 4, 224, 75, 11, 0, 11, 200, 173, 161, 77, 20, 197, 5, 80, 144,
+			11, 48, 72, 81, 195, 79, 28, 21, 28, 77, 64, 47, 114, 65, 39, 81, 108, 47, 114, 91, 47, 23, 71, 37, 89, 47, 39, 91, 112, 47,
+			108, 50, 37, 0, 11, 81, 98, 105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 105, 32, 41, 67, 157, 39, 14, 115, 52, 114, 50, 10, 6,
+			15, 71, 109, 55, 111, 55, 10, 6, 15, 65, 108, 52, 108, 72, 0, 11, 82, 98, 101, 108, 195, 188, 108, 32, 109, 97, 114, 97, 100, 32,
+			11, 200, 49, 197, 15, 28, 21, 28, 77, 64, 11, 11, 200, 20, 193, 15, 9, 195, 28, 77, 64, 11, 15, 204, 46, 134, 130, 37, 165, 15,
+			57, 55, 7, 137, 37, 0, 11, 11, 200, 81, 195, 79, 28, 21, 28, 77, 64, 11, 11, 200, 29, 147, 210, 78, 85, 28, 77, 64, 11, 10,
+			199, 80, 83, 5, 24, 243, 143, 44, 11, 7, 196, 137, 34, 133, 56, 11, 0, 11, 200, 52, 81, 214, 21, 54, 142, 20, 176, 11, 32, 6,
+			195, 169, 108, 197, 145, 107, 113, 55, 118, 49, 23, 107, 109, 57, 88, 109, 47, 109, 0, 11, 81, 104, 101, 108, 121, 122, 101, 116, 101, 32,
+			31, 69, 8, 150, 148, 61, 48, 71, 37, 89, 47, 39, 91, 23, 89, 109, 52, 37, 50, 47, 0, 11, 81, 115, 122, 101, 114, 105, 110, 116,
+			32, 9, 198, 52, 147, 12, 37, 196, 132, 11, 32, 70, 52, 147, 12, 37, 196, 132, 65, 37, 55, 37, 114, 52, 72, 23, 83, 39, 52, 37,
+			50, 47, 0, 11, 81, 102, 111, 114, 105, 110, 116, 32, 8, 197, 8, 150, 148, 61, 48, 11, 12, 201, 24, 244, 146, 113, 50, 231, 16, 245,
+			0, 11, 0, 7, 66, 57, 144, 109, 67, 0, 9, 198, 88, 19, 1, 52, 149, 0, 11, 10, 199, 77, 170, 204, 21, 65, 84, 80, 11, 10,
+			199, 46, 36, 132, 21, 161, 84, 80, 11, 13, 202, 40, 21, 129, 16, 19, 13, 5, 167, 19, 80, 11, 9, 198, 34, 115, 129, 64, 245, 0,
+			11, 9, 134, 101, 98, 98, 197, 145, 108, 11, 0, 32, 70, 32, 18, 148, 4, 224, 75, 107, 108, 57, 47, 108, 50, 108, 49, 23, 84, 113,
+			81, 52, 109, 0, 11, 81, 118, 195, 169, 103, 114, 101, 32, 10, 199, 28, 243, 66, 60, 195, 156, 52, 11, 43, 6, 105, 100, 197, 145, 114,
+			101, 37, 72, 118, 52, 109, 23, 89, 114, 65, 112, 47, 107, 108, 47, 40, 50, 49, 0, 11, 81, 115, 122, 195, 161, 109, 195, 173, 116, 104,
+			97, 116, 117, 110, 107, 32, 42, 6, 105, 100, 197, 145, 114, 101, 37, 72, 118, 52, 109, 23, 84, 108, 50, 23, 49, 37, 55, 114, 47, 114,
+			91, 0, 11, 82, 118, 97, 110, 32, 107, 105, 108, 195, 161, 116, 195, 161, 115, 32, 32, 71, 82, 128, 130, 57, 146, 82, 20, 47, 110, 71,
+			67, 37, 52, 109, 23, 79, 109, 50, 81, 109, 0, 11, 81, 103, 121, 101, 110, 103, 101, 32, 11, 200, 88, 150, 147, 29, 195, 10, 112, 176,
+			11, 8, 133, 115, 122, 197, 145, 114, 11, 8, 197, 74, 161, 212, 112, 176, 11, 8, 197, 89, 196, 148, 112, 176, 11, 0, 12, 201, 8, 150,
+			143, 57, 153, 84, 41, 194, 192, 11, 9, 198, 77, 167, 14, 81, 194, 192, 11, 11, 200, 80, 20, 148, 4, 195, 92, 72, 16, 11, 24, 70,
+			9, 195, 148, 77, 194, 192, 71, 114, 50, 76, 114, 49, 23, 118, 47, 0, 11, 81, 197, 145, 116, 32, 10, 199, 46, 36, 133, 48, 216, 146,
+			20, 11, 12, 4, 95, 99, 97, 112, 50, 6, 108, 79, 23, 0, 0, 10, 199, 34, 37, 22, 136, 120, 146, 20, 11, 10, 199, 44, 146, 1,
+			29, 146, 156, 44, 11, 9, 198, 44, 81, 22, 21, 163, 133, 11, 10, 199, 28, 243, 132, 60, 194, 156, 44, 11, 11, 200, 85, 64, 83, 149,
+			71, 19, 8, 16, 11, 10, 199, 54, 36, 148, 136, 184, 146, 20, 11, 13, 202, 72, 83, 132, 20, 194, 197, 106, 36, 197, 44, 11, 12, 201,
+			172, 118, 78, 160, 180, 226, 28, 85, 0, 11, 9, 198, 90, 33, 5, 48, 83, 64, 11, 6, 195, 77, 168, 144, 11, 0, 11, 200, 32, 19,
+			12, 28, 21, 20, 112, 176, 11, 8, 197, 72, 87, 12, 37, 48, 11, 13, 138, 116, 195, 182, 109, 101, 103, 114, 197, 145, 108, 11, 8, 197,
+			41, 196, 149, 56, 176, 11, 8, 197, 42, 163, 9, 85, 48, 15, 12, 6, 95, 35, 45, 195, 161, 116, 114, 47, 0, 16, 0, 13, 202, 64,
+			243, 7, 113, 35, 69, 77, 65, 82, 20, 11, 44, 73, 44, 20, 3, 76, 243, 39, 17, 196, 201, 49, 108, 48, 76, 39, 55, 115, 72, 114,
+			91, 37, 23, 48, 52, 39, 71, 55, 113, 65, 108, 0, 11, 81, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 12, 201, 60, 197, 129, 76,
+			128, 84, 41, 194, 192, 11, 13, 202, 24, 147, 129, 57, 54, 165, 72, 246, 150, 4, 11, 10, 199, 20, 194, 197, 74, 179, 10, 20, 11, 8,
+			197, 46, 36, 5, 37, 64, 11, 12, 201, 4, 194, 193, 48, 208, 90, 105, 194, 192, 11, 10, 199, 40, 83, 5, 57, 65, 78, 136, 11, 7,
+			196, 169, 66, 156, 80, 11, 7, 196, 169, 66, 156, 80, 11, 0, 15, 204, 46, 133, 5, 48, 86, 133, 81, 68, 226, 28, 85, 0, 11, 0,
+			41, 70, 80, 84, 141, 136, 177, 84, 47, 109, 52, 65, 113, 49, 109, 47, 23, 84, 114, 91, 114, 52, 39, 55, 39, 49, 0, 11, 81, 118,
+			195, 161, 115, 195, 161, 114, 111, 108, 111, 107, 32, 13, 202, 52, 81, 211, 20, 121, 84, 137, 56, 146, 20, 11, 12, 201, 44, 84, 171, 48,
+			85, 5, 44, 33, 64, 11, 9, 198, 44, 86, 132, 40, 83, 128, 11, 0, 17, 3, 95, 194, 183, 49, 110, 88, 113, 48, 91, 118, 48, 39,
+			50, 47, 0, 13, 202, 20, 197, 84, 5, 57, 84, 61, 69, 28, 44, 11, 9, 198, 46, 36, 132, 137, 49, 64, 11, 7, 196, 65, 196, 156,
+			76, 11, 10, 199, 8, 83, 142, 172, 226, 197, 80, 11, 12, 201, 24, 244, 132, 84, 192, 84, 77, 167, 13, 11, 0, 13, 202, 24, 147, 129,
+			57, 54, 165, 72, 246, 154, 4, 11, 10, 199, 112, 195, 1, 64, 245, 28, 80, 11, 8, 197, 48, 89, 82, 113, 48, 11, 13, 202, 81, 194,
+			162, 44, 246, 148, 5, 69, 28, 44, 11, 11, 200, 44, 244, 140, 113, 67, 218, 113, 48, 11, 10, 199, 90, 35, 5, 54, 35, 153, 80, 11,
+			6, 195, 24, 242, 234, 11, 0, 10, 135, 103, 121, 197, 145, 122, 110, 105, 11, 11, 200, 8, 81, 143, 49, 151, 19, 113, 64, 11, 9, 198,
+			56, 244, 141, 112, 194, 83, 11, 10, 135, 102, 195, 188, 103, 103, 197, 145, 11, 6, 195, 4, 176, 68, 11, 11, 200, 21, 54, 139, 161, 170,
+			11, 21, 64, 11, 11, 136, 197, 145, 114, 195, 182, 107, 101, 116, 11, 8, 197, 168, 169, 84, 113, 48, 11, 8, 197, 20, 211, 34, 44, 80,
+			17, 11, 6, 95, 35, 45, 195, 169, 110, 113, 50, 0, 0, 19, 3, 95, 194, 178, 65, 114, 91, 39, 72, 37, 49, 107, 108, 47, 84, 114,
+			67, 0, 46, 71, 77, 161, 82, 88, 86, 133, 80, 89, 109, 52, 84, 109, 88, 109, 47, 10, 6, 15, 65, 117, 49, 110, 47, 12, 109, 47,
+			12, 109, 0, 11, 81, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 116, 101, 32, 61, 13, 108, 101, 104, 101, 116, 197, 145, 115, 195, 169,
+			103, 101, 116, 55, 109, 107, 109, 47, 118, 91, 113, 81, 109, 47, 10, 6, 15, 65, 109, 81, 84, 108, 55, 115, 91, 112, 47, 108, 50, 37,
+			0, 11, 81, 109, 101, 103, 118, 97, 108, 195, 179, 115, 195, 173, 116, 97, 110, 105, 32, 14, 203, 80, 20, 1, 77, 165, 1, 48, 21, 21,
+			56, 176, 11, 10, 199, 77, 161, 82, 88, 86, 133, 80, 11, 8, 197, 37, 35, 196, 112, 224, 11, 16, 141, 108, 101, 104, 101, 116, 197, 145,
+			115, 195, 169, 103, 101, 116, 11, 16, 141, 102, 101, 108, 101, 108, 197, 145, 115, 195, 169, 103, 101, 116, 11, 0, 20, 3, 95, 194, 179, 107,
+			108, 34, 65, 108, 72, 37, 49, 107, 108, 47, 84, 114, 67, 0, 8, 197, 77, 160, 66, 4, 64, 76, 36, 70, 60, 197, 129, 77, 196, 193,
+			39, 55, 84, 108, 91, 114, 91, 108, 10, 6, 15, 49, 110, 88, 71, 109, 50, 0, 11, 81, 107, 195, 182, 122, 98, 101, 110, 32, 11, 200,
+			4, 194, 193, 48, 208, 90, 113, 48, 11, 10, 199, 29, 147, 210, 78, 85, 28, 76, 11, 7, 196, 81, 196, 143, 48, 11, 9, 198, 73, 194,
+			168, 56, 226, 64, 11, 6, 195, 49, 192, 128, 11, 0, 8, 197, 88, 243, 20, 112, 192, 72, 30, 70, 32, 18, 148, 41, 194, 192, 107, 108,
+			57, 80, 114, 49, 23, 84, 113, 81, 52, 109, 0, 11, 81, 118, 195, 169, 103, 114, 101, 32, 13, 138, 110, 195, 169, 112, 115, 122, 101, 114,
+			197, 177, 11, 40, 74, 80, 85, 162, 44, 83, 153, 78, 33, 197, 80, 47, 109, 84, 113, 49, 109, 67, 91, 113, 81, 109, 47, 23, 84, 113,
+			81, 109, 88, 0, 11, 81, 118, 195, 169, 103, 101, 122, 32, 30, 69, 72, 80, 71, 112, 192, 52, 109, 108, 81, 114, 55, 23, 47, 110, 71,
+			12, 113, 0, 11, 81, 116, 195, 182, 98, 98, 195, 169, 32, 12, 201, 46, 134, 150, 136, 193, 77, 136, 230, 84, 11, 11, 136, 116, 197, 145,
+			108, 101, 116, 101, 107, 11, 6, 195, 56, 244, 192, 72, 0, 10, 199, 44, 20, 8, 5, 67, 129, 44, 11, 19, 144, 98, 197, 177, 110, 99,
+			115, 101, 108, 101, 107, 109, 195, 169, 110, 121, 116, 11, 0, 12, 201, 52, 81, 220, 48, 192, 80, 60, 71, 19, 11, 44, 73, 52, 81, 220,
+			48, 192, 80, 60, 71, 19, 65, 109, 81, 114, 55, 12, 108, 48, 39, 72, 114, 91, 23, 49, 110, 47, 107, 109, 47, 118, 0, 11, 81, 107,
+			195, 182, 116, 104, 101, 116, 197, 145, 32, 52, 73, 52, 81, 220, 48, 192, 80, 60, 71, 19, 65, 109, 81, 114, 55, 12, 108, 48, 39, 72,
+			114, 91, 23, 37, 91, 23, 89, 111, 55, 109, 47, 109, 47, 12, 0, 11, 82, 105, 115, 32, 115, 122, 195, 188, 108, 101, 116, 101, 116, 116,
+			32, 43, 72, 36, 120, 142, 100, 82, 72, 21, 160, 37, 81, 113, 67, 109, 37, 107, 109, 88, 23, 37, 81, 108, 88, 112, 47, 108, 50, 37,
+			0, 11, 81, 105, 103, 97, 122, 195, 173, 116, 97, 110, 105, 32, 13, 202, 46, 36, 218, 172, 200, 139, 172, 226, 197, 80, 11, 11, 200, 73,
+			192, 133, 77, 168, 140, 56, 144, 11, 0, 27, 68, 81, 81, 20, 4, 47, 40, 47, 12, 108, 6, 15, 84, 39, 55, 50, 108, 0, 11, 81,
+			118, 111, 108, 110, 97, 32, 11, 200, 30, 36, 5, 50, 36, 200, 21, 160, 11, 7, 196, 4, 227, 156, 48, 11, 9, 198, 52, 81, 212, 20,
+			197, 0, 11, 7, 196, 136, 162, 133, 48, 11, 7, 196, 81, 81, 20, 4, 11, 9, 196, 33, 49, 16, 4, 13, 42, 42, 0, 37, 70, 46,
+			36, 20, 20, 193, 78, 49, 113, 48, 47, 109, 55, 109, 50, 23, 71, 109, 47, 109, 81, 50, 109, 49, 0, 11, 81, 98, 101, 116, 101, 103,
+			110, 101, 107, 32, 7, 196, 57, 195, 1, 52, 11, 0, 16, 3, 95, 194, 173, 55, 114, 79, 49, 110, 47, 118, 57, 109, 55, 0, 0, 10,
+			199, 52, 81, 198, 36, 118, 69, 48, 11, 30, 70, 137, 33, 90, 80, 83, 64, 113, 52, 109, 89, 47, 109, 65, 23, 65, 108, 81, 108, 65,
+			0, 11, 81, 109, 97, 103, 97, 109, 32, 45, 73, 24, 242, 207, 104, 21, 15, 76, 19, 128, 83, 39, 49, 39, 88, 108, 47, 39, 91, 108,
+			50, 23, 65, 109, 81, 89, 117, 50, 37, 49, 0, 11, 81, 109, 101, 103, 115, 122, 197, 177, 110, 105, 107, 32, 12, 201, 61, 69, 8, 60,
+			229, 1, 48, 19, 128, 11, 9, 198, 137, 33, 90, 80, 83, 64, 11, 0, 22, 3, 95, 194, 171, 71, 109, 55, 91, 118, 71, 108, 55, 37,
+			72, 113, 88, 118, 57, 109, 55, 0, 6, 195, 82, 35, 65, 11, 6, 195, 82, 35, 65, 11, 0, 0, 7, 196, 8, 195, 203, 44, 11, 9,
+			198, 66, 35, 148, 20, 178, 71, 17, 0, 9, 198, 80, 20, 148, 4, 195, 65, 11, 9, 198, 77, 160, 66, 112, 198, 64, 11, 0, 7, 196,
+			90, 33, 5, 16, 11, 7, 196, 137, 38, 133, 16, 11, 10, 135, 116, 197, 145, 108, 195, 188, 107, 11, 20, 66, 52, 208, 65, 37, 55, 37,
+			65, 113, 47, 109, 52, 47, 0, 44, 11, 81, 116, 32, 22, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 109, 91, 0, 44, 11,
+			81, 101, 115, 32, 27, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 67, 37, 52, 109, 0, 44, 11, 81, 110, 121, 105, 114, 101,
+			32, 23, 66, 52, 208, 65, 37, 55, 37, 65, 113, 47, 109, 52, 67, 37, 0, 44, 11, 81, 110, 121, 105, 32, 15, 66, 52, 208, 65, 37,
+			55, 37, 65, 113, 47, 109, 52, 0, 11, 0, 16, 3, 95, 194, 164, 48, 113, 50, 88, 50, 109, 65, 57, 109, 55, 0, 0, 6, 195, 16,
+			151, 11, 11, 12, 137, 104, 195, 169, 116, 102, 197, 145, 105, 103, 17, 0, 7, 196, 25, 35, 206, 80, 11, 0, 34, 6, 102, 101, 108, 197,
+			145, 108, 83, 109, 55, 118, 55, 10, 6, 15, 50, 113, 88, 88, 111, 49, 0, 11, 81, 110, 195, 169, 122, 122, 195, 188, 107, 32, 10, 199,
+			32, 246, 129, 18, 34, 207, 80, 11, 9, 198, 84, 69, 129, 72, 244, 192, 11, 6, 195, 105, 196, 128, 11, 9, 134, 102, 101, 108, 197, 145,
+			108, 11, 6, 131, 197, 145, 107, 11, 7, 131, 197, 145, 107, 11, 8, 0, 12, 3, 95, 194, 160, 89, 6, 115, 49, 110, 88, 0, 0, 16,
+			3, 95, 194, 161, 108, 55, 91, 115, 37, 50, 72, 109, 49, 89, 0, 7, 3, 95, 195, 169, 113, 0, 9, 198, 137, 37, 34, 44, 82, 192,
+			11, 12, 137, 109, 197, 177, 107, 195, 182, 100, 105, 107, 11, 0, 13, 138, 101, 114, 197, 145, 115, 195, 182, 100, 105, 107, 11, 9, 198, 52,
+			81, 217, 136, 33, 64, 11, 9, 198, 81, 195, 65, 16, 167, 11, 11, 12, 201, 13, 51, 205, 4, 115, 203, 32, 246, 128, 11, 0, 6, 195,
+			36, 113, 78, 11, 0, 9, 198, 53, 83, 139, 112, 131, 218, 11, 6, 195, 88, 144, 195, 11, 6, 131, 197, 145, 116, 11, 9, 198, 24, 243,
+			25, 4, 215, 14, 15, 0, 9, 198, 20, 195, 65, 72, 17, 20, 11, 12, 201, 88, 147, 28, 28, 135, 2, 61, 42, 128, 11, 11, 136, 104,
+			101, 108, 121, 114, 197, 145, 108, 11, 0, 6, 131, 197, 145, 114, 11, 0, 12, 137, 115, 122, 101, 114, 122, 197, 145, 106, 101, 11, 36, 11,
+			102, 101, 106, 108, 101, 115, 122, 116, 197, 145, 107, 83, 109, 57, 55, 109, 89, 47, 118, 49, 23, 83, 109, 55, 113, 0, 11, 81, 102, 101,
+			108, 195, 169, 32, 13, 202, 32, 20, 218, 57, 195, 8, 5, 66, 156, 44, 11, 13, 138, 118, 97, 108, 97, 109, 105, 114, 197, 145, 108, 11,
+			6, 195, 9, 84, 218, 11, 0, 9, 134, 108, 101, 108, 107, 197, 177, 11, 8, 197, 82, 128, 130, 37, 64, 11, 0, 8, 197, 136, 193, 84,
+			137, 64, 11, 0, 15, 204, 8, 84, 133, 56, 65, 90, 44, 81, 34, 77, 49, 76, 11, 9, 198, 20, 118, 83, 136, 113, 64, 11, 9, 134,
+			101, 109, 108, 197, 145, 115, 11, 0, 9, 198, 137, 37, 5, 48, 216, 148, 11, 9, 198, 137, 54, 138, 113, 39, 19, 11, 7, 196, 46, 133,
+			34, 76, 11, 9, 198, 54, 36, 148, 136, 177, 64, 11, 7, 196, 88, 149, 28, 80, 11, 7, 196, 34, 115, 129, 64, 11, 0, 11, 200, 45,
+			34, 84, 36, 183, 11, 5, 64, 11, 14, 139, 106, 111, 103, 115, 195, 169, 114, 116, 197, 145, 116, 11, 52, 71, 46, 131, 20, 78, 33, 197,
+			80, 49, 110, 55, 76, 113, 81, 109, 47, 23, 57, 109, 55, 109, 50, 47, 23, 89, 114, 65, 40, 49, 52, 108, 0, 11, 82, 106, 101, 108,
+			101, 110, 116, 32, 115, 122, 195, 161, 109, 117, 107, 114, 97, 32, 11, 200, 80, 84, 150, 21, 161, 84, 137, 64, 11, 13, 202, 24, 83, 43,
+			49, 98, 90, 76, 119, 12, 80, 11, 6, 195, 149, 36, 218, 11, 0, 30, 70, 20, 194, 156, 73, 196, 192, 109, 55, 57, 114, 52, 114, 91,
+			23, 37, 50, 72, 40, 55, 0, 11, 81, 105, 110, 100, 117, 108, 32, 12, 201, 29, 145, 82, 52, 82, 197, 36, 177, 84, 11, 9, 198, 20,
+			195, 28, 81, 196, 192, 11, 9, 198, 44, 147, 28, 81, 196, 192, 11, 9, 198, 20, 194, 156, 73, 196, 192, 11, 9, 198, 80, 19, 28, 49,
+			83, 139, 11, 0, 15, 140, 109, 101, 110, 110, 121, 105, 115, 195, 169, 103, 197, 177, 11, 10, 199, 48, 18, 207, 76, 242, 193, 80, 11, 11,
+			136, 195, 169, 112, 195, 188, 108, 197, 145, 11, 8, 197, 57, 144, 82, 112, 224, 15, 0, 9, 198, 149, 72, 140, 21, 65, 84, 11, 52, 74,
+			77, 161, 82, 20, 197, 162, 57, 145, 73, 80, 89, 109, 52, 109, 55, 84, 113, 67, 109, 37, 47, 23, 65, 109, 81, 109, 52, 118, 91, 112,
+			47, 84, 109, 0, 11, 81, 109, 101, 103, 101, 114, 197, 145, 115, 195, 173, 116, 118, 101, 32, 41, 69, 24, 241, 202, 112, 176, 83, 39, 81,
+			57, 114, 49, 23, 109, 55, 12, 109, 50, 118, 52, 37, 88, 50, 37, 0, 11, 81, 101, 108, 108, 101, 110, 197, 145, 114, 105, 122, 110, 105,
+			32, 22, 147, 115, 122, 111, 102, 116, 118, 101, 114, 102, 101, 106, 108, 101, 115, 122, 116, 197, 145, 107, 11, 9, 198, 90, 33, 5, 48, 216,
+			148, 11, 17, 142, 102, 101, 108, 101, 108, 197, 145, 115, 115, 195, 169, 103, 101, 116, 11, 9, 198, 29, 151, 18, 82, 117, 0, 11, 8, 197,
+			24, 241, 202, 112, 176, 11, 9, 198, 148, 120, 146, 21, 65, 84, 11, 8, 197, 74, 36, 218, 136, 224, 11, 8, 197, 32, 149, 20, 20, 64,
+			11, 0, 39, 72, 25, 83, 139, 12, 153, 203, 5, 64, 83, 40, 50, 49, 119, 37, 115, 49, 108, 47, 23, 109, 55, 12, 114, 47, 115, 0,
+			11, 81, 101, 108, 108, 195, 161, 116, 195, 179, 32, 46, 72, 44, 144, 68, 113, 51, 203, 5, 64, 49, 37, 108, 72, 114, 91, 39, 49, 108,
+			47, 23, 48, 52, 109, 83, 109, 52, 114, 61, 57, 108, 0, 11, 81, 112, 114, 101, 102, 101, 114, 195, 161, 108, 106, 97, 32, 11, 200, 25,
+			83, 139, 12, 153, 203, 5, 64, 11, 11, 200, 89, 195, 1, 77, 163, 203, 5, 64, 11, 12, 201, 64, 243, 7, 113, 35, 69, 77, 65, 82,
+			11, 9, 198, 52, 243, 132, 41, 194, 192, 11, 6, 195, 136, 196, 218, 11, 6, 195, 77, 170, 18, 72, 0, 14, 139, 195, 169, 112, 195, 173,
+			116, 195, 169, 115, 197, 177, 11, 0, 6, 195, 57, 195, 0, 11, 0, 9, 198, 32, 144, 130, 4, 229, 0, 11, 9, 198, 52, 147, 12, 38,
+			117, 0, 11, 9, 198, 172, 227, 133, 64, 83, 128, 11, 9, 198, 56, 85, 162, 8, 83, 128, 11, 12, 201, 32, 18, 140, 136, 181, 1, 48,
+			19, 128, 11, 8, 197, 32, 148, 218, 20, 64, 11, 0, 7, 196, 24, 241, 211, 104, 76, 12, 201, 58, 36, 19, 105, 195, 76, 112, 199, 19,
+			11, 9, 198, 20, 195, 69, 57, 66, 75, 11, 9, 198, 80, 82, 201, 57, 66, 75, 11, 9, 198, 80, 20, 148, 61, 162, 75, 11, 0, 9,
+			198, 45, 34, 84, 36, 176, 64, 11, 44, 9, 103, 121, 197, 145, 122, 116, 195, 169, 107, 79, 118, 88, 47, 113, 49, 23, 83, 109, 55, 72,
+			39, 55, 81, 39, 88, 50, 37, 0, 11, 81, 102, 101, 108, 100, 111, 108, 103, 111, 122, 110, 105, 32, 9, 198, 13, 48, 80, 4, 72, 139,
+			11, 0, 9, 198, 77, 169, 204, 80, 19, 64, 11, 0, 28, 71, 57, 149, 71, 60, 69, 1, 52, 67, 40, 81, 39, 47, 12, 108, 65, 23,
+			65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 10, 199, 57, 145, 82, 80, 84, 197, 36, 11, 0, 38, 68, 4, 32, 129, 56, 108, 71, 12,
+			108, 50, 23, 83, 39, 81, 55, 108, 55, 47, 108, 49, 108, 47, 0, 11, 81, 102, 111, 103, 108, 97, 108, 116, 97, 107, 97, 116, 32, 7,
+			196, 46, 134, 171, 48, 11, 12, 201, 77, 167, 13, 149, 73, 199, 137, 1, 75, 11, 7, 196, 20, 32, 133, 56, 11, 7, 196, 4, 32, 129,
+			56, 11, 7, 196, 46, 134, 171, 48, 11, 0, 0, 12, 201, 76, 18, 156, 80, 244, 211, 112, 115, 203, 11, 11, 200, 40, 83, 40, 50, 36,
+			206, 136, 192, 11, 0, 9, 198, 77, 160, 66, 61, 69, 0, 11, 5, 194, 72, 80, 11, 9, 66, 60, 176, 39, 49, 0, 42, 42, 0, 0,
+			12, 201, 24, 83, 13, 60, 225, 1, 57, 195, 139, 11, 9, 198, 81, 196, 143, 49, 83, 139, 11, 0, 40, 71, 88, 243, 129, 80, 179, 218,
+			156, 84, 39, 50, 108, 47, 49, 39, 88, 115, 10, 6, 15, 48, 39, 50, 80, 108, 37, 47, 0, 11, 81, 112, 111, 110, 116, 106, 97, 105,
+			116, 32, 44, 73, 161, 52, 218, 20, 243, 76, 61, 69, 0, 110, 89, 12, 109, 39, 65, 55, 39, 47, 12, 23, 108, 23, 52, 109, 50, 119,
+			109, 52, 0, 11, 82, 97, 32, 114, 101, 110, 100, 115, 122, 101, 114, 32, 10, 199, 88, 243, 129, 80, 179, 218, 156, 11, 7, 196, 149, 35,
+			129, 44, 11, 8, 197, 12, 83, 12, 112, 224, 11, 8, 197, 64, 144, 67, 112, 224, 11, 7, 196, 77, 162, 78, 80, 11, 10, 199, 32, 83,
+			25, 104, 85, 43, 44, 11, 0, 9, 198, 76, 81, 229, 80, 83, 137, 11, 9, 198, 81, 195, 79, 28, 21, 0, 11, 8, 197, 24, 18, 148,
+			112, 176, 11, 0, 45, 70, 80, 20, 148, 41, 194, 192, 47, 108, 52, 80, 114, 49, 23, 48, 52, 39, 71, 55, 113, 65, 114, 91, 50, 108,
+			49, 0, 11, 81, 112, 114, 111, 98, 108, 195, 169, 109, 195, 161, 115, 110, 97, 107, 32, 9, 198, 80, 20, 148, 77, 194, 192, 11, 9, 198,
+			4, 176, 82, 41, 194, 192, 11, 8, 197, 52, 19, 149, 112, 192, 11, 9, 198, 80, 20, 148, 41, 194, 192, 11, 6, 195, 60, 181, 0, 15,
+			0, 0, 20, 5, 100, 197, 145, 108, 116, 72, 118, 55, 47, 23, 71, 109, 0, 11, 81, 98, 101, 32, 8, 133, 100, 197, 145, 108, 116, 11,
+			5, 194, 156, 224, 72, 0, 15, 3, 95, 203, 135, 55, 109, 83, 109, 55, 113, 67, 112, 55, 0, 48, 71, 89, 195, 1, 77, 163, 204, 80,
+			84, 114, 55, 108, 89, 39, 55, 47, 23, 108, 6, 15, 83, 109, 55, 84, 109, 47, 113, 91, 52, 109, 0, 11, 82, 97, 32, 102, 101, 108,
+			118, 101, 116, 195, 169, 115, 114, 101, 32, 9, 198, 88, 149, 28, 8, 19, 128, 11, 15, 204, 52, 80, 200, 4, 226, 90, 53, 84, 220, 88,
+			19, 0, 11, 9, 198, 48, 82, 232, 82, 133, 20, 11, 9, 198, 72, 18, 212, 113, 36, 129, 11, 0, 18, 68, 77, 161, 19, 104, 101, 115,
+			122, 100, 195, 169, 101, 115, 122, 0, 29, 42, 9, 198, 4, 64, 75, 61, 162, 75, 11, 9, 198, 52, 17, 218, 5, 67, 203, 11, 7, 196,
+			137, 37, 5, 52, 11, 14, 139, 109, 197, 177, 107, 195, 182, 100, 195, 182, 116, 116, 11, 0, 16, 141, 115, 122, 101, 114, 107, 101, 122, 101,
+			116, 197, 177, 101, 107, 11, 8, 197, 53, 83, 139, 112, 208, 11, 0, 12, 3, 95, 194, 186, 91, 39, 34, 89, 114, 65, 0, 0, 23, 3,
+			95, 194, 187, 71, 109, 55, 91, 118, 57, 39, 71, 71, 37, 72, 113, 88, 118, 57, 109, 55, 0, 8, 197, 48, 84, 218, 20, 192, 72, 10,
+			199, 32, 19, 12, 61, 69, 1, 52, 11, 9, 198, 53, 83, 139, 113, 53, 0, 11, 10, 199, 4, 192, 80, 61, 165, 1, 52, 11, 8, 197,
+			41, 196, 148, 5, 48, 11, 10, 199, 28, 243, 132, 60, 197, 1, 52, 11, 6, 195, 161, 56, 148, 11, 12, 6, 95, 35, 45, 195, 169, 116,
+			113, 47, 0, 16, 0, 8, 197, 50, 36, 8, 21, 64, 11, 8, 197, 46, 36, 136, 21, 64, 11, 8, 197, 89, 195, 8, 5, 64, 11, 8,
+			197, 46, 36, 12, 21, 64, 11, 0, 16, 3, 95, 194, 185, 109, 55, 89, 118, 107, 108, 47, 84, 114, 67, 0, 43, 69, 32, 241, 217, 4,
+			224, 107, 39, 79, 108, 50, 23, 83, 39, 81, 23, 84, 113, 81, 88, 118, 72, 50, 37, 0, 11, 82, 102, 111, 103, 32, 118, 195, 169, 103,
+			122, 197, 145, 100, 110, 105, 32, 8, 197, 37, 69, 8, 60, 224, 11, 0, 15, 140, 115, 122, 97, 107, 195, 169, 114, 116, 197, 145, 106, 101,
+			11, 6, 195, 149, 97, 84, 11, 0, 14, 203, 52, 244, 134, 60, 225, 37, 72, 246, 148, 4, 176, 11, 8, 197, 77, 64, 66, 36, 192, 11,
+			7, 196, 64, 16, 220, 80, 11, 0, 9, 198, 136, 195, 98, 57, 152, 148, 11, 11, 200, 32, 17, 9, 24, 241, 207, 49, 144, 11, 6, 195,
+			34, 81, 192, 11, 6, 195, 50, 113, 192, 11, 0, 6, 195, 81, 81, 4, 11, 15, 204, 8, 150, 143, 57, 149, 1, 48, 19, 147, 112, 115,
+			203, 11, 9, 198, 88, 86, 133, 80, 129, 84, 11, 11, 200, 77, 161, 80, 80, 83, 66, 21, 32, 15, 0, 11, 136, 109, 195, 169, 114, 101,
+			116, 197, 177, 11, 51, 71, 24, 145, 217, 20, 195, 69, 80, 83, 37, 79, 109, 55, 65, 109, 47, 23, 49, 109, 55, 12, 23, 83, 39, 52,
+			72, 112, 47, 108, 50, 37, 0, 11, 82, 107, 101, 108, 108, 32, 102, 111, 114, 100, 195, 173, 116, 97, 110, 105, 32, 16, 141, 101, 108, 197,
+			145, 102, 111, 114, 100, 117, 108, 104, 97, 116, 11, 10, 199, 24, 145, 217, 20, 195, 69, 80, 11, 10, 199, 80, 20, 148, 4, 195, 65, 80,
+			11, 10, 199, 24, 83, 22, 21, 66, 5, 80, 11, 10, 199, 44, 20, 3, 76, 243, 1, 80, 11, 0, 11, 200, 76, 83, 5, 41, 65, 90,
+			137, 48, 11, 7, 196, 20, 227, 162, 48, 11, 10, 199, 88, 20, 156, 105, 51, 1, 80, 11, 12, 4, 95, 103, 114, 118, 47, 39, 65, 48,
+			108, 0, 0, 0, 11, 200, 73, 193, 217, 168, 165, 8, 5, 64, 11, 0, 11, 2, 195, 151, 47, 108, 55, 48, 108, 91, 0, 9, 198, 8,
+			18, 143, 45, 41, 204, 11, 13, 138, 109, 195, 169, 114, 101, 116, 197, 177, 101, 107, 11, 6, 195, 26, 131, 4, 11, 0, 9, 198, 77, 161,
+			77, 24, 241, 192, 11, 9, 198, 82, 132, 148, 136, 229, 0, 11, 9, 198, 20, 192, 68, 157, 73, 204, 11, 9, 198, 82, 132, 148, 136, 229,
+			0, 11, 0, 0, 50, 70, 80, 19, 156, 13, 51, 203, 47, 108, 50, 114, 76, 39, 49, 23, 49, 113, 52, 72, 113, 91, 113, 52, 118, 55,
+			23, 37, 91, 0, 11, 82, 107, 195, 169, 114, 100, 195, 169, 115, 195, 169, 114, 197, 145, 108, 32, 105, 115, 32, 0, 27, 67, 57, 97, 1,
+			101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 118, 97, 108, 0, 44, 29, 42, 81, 118, 97, 108, 32, 29, 67, 57, 97, 1, 101, 110, 118,
+			195, 169, 100, 195, 169, 195, 161, 116, 195, 179, 108, 0, 44, 29, 42, 81, 116, 195, 179, 108, 32, 23, 67, 57, 97, 1, 101, 110, 118, 195,
+			169, 100, 195, 169, 195, 161, 116, 0, 44, 29, 42, 81, 116, 32, 23, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 115,
+			0, 44, 29, 42, 81, 115, 32, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 110, 97, 107, 0, 44, 29, 42, 81,
+			110, 97, 107, 32, 27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 104, 111, 122, 0, 44, 29, 42, 81, 104, 111, 122,
+			32, 29, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 195, 179, 108, 0, 44, 29, 42, 81, 98, 195, 179, 108, 32,
+			27, 67, 57, 97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 97, 110, 0, 44, 29, 42, 81, 98, 97, 110, 32, 25, 67, 57,
+			97, 1, 101, 110, 118, 195, 169, 100, 195, 169, 195, 161, 98, 97, 0, 44, 29, 42, 81, 98, 97, 32, 8, 197, 44, 20, 21, 56, 176, 11,
+			12, 201, 52, 20, 129, 17, 103, 14, 100, 18, 64, 11, 6, 195, 40, 241, 193, 11, 15, 67, 57, 97, 1, 109, 50, 84, 113, 72, 113, 108,
+			0, 42, 42, 0, 9, 198, 60, 179, 218, 56, 18, 192, 11, 11, 200, 24, 83, 2, 60, 229, 28, 78, 160, 11, 38, 69, 88, 81, 217, 172,
+			176, 84, 109, 79, 111, 49, 10, 6, 15, 83, 37, 79, 109, 55, 109, 65, 71, 109, 0, 11, 81, 102, 105, 103, 121, 101, 108, 101, 109, 98,
+			101, 32, 9, 198, 80, 20, 148, 61, 69, 0, 11, 0, 8, 197, 60, 179, 218, 56, 144, 11, 8, 197, 88, 86, 133, 80, 144, 11, 0, 12,
+			201, 32, 19, 135, 61, 165, 1, 80, 243, 64, 11, 0, 11, 2, 194, 167, 89, 6, 108, 49, 108, 89, 0, 9, 2, 195, 159, 21, 100, 101,
+			0, 47, 7, 196, 88, 83, 43, 44, 11, 6, 195, 82, 35, 0, 15, 0, 22, 66, 76, 80, 91, 109, 23, 71, 112, 52, 39, 65, 0, 11,
+			81, 98, 195, 173, 114, 111, 109, 32, 21, 66, 76, 80, 91, 109, 23, 49, 108, 48, 50, 37, 0, 11, 81, 107, 97, 112, 110, 105, 32, 29,
+			66, 76, 80, 91, 109, 23, 113, 52, 47, 109, 47, 12, 113, 49, 0, 11, 81, 195, 169, 114, 116, 101, 116, 116, 195, 169, 107, 32, 10, 199,
+			46, 179, 6, 160, 193, 40, 56, 11, 24, 66, 76, 80, 91, 109, 10, 6, 15, 47, 52, 113, 83, 108, 0, 11, 81, 116, 114, 195, 169, 102,
+			97, 32, 27, 66, 76, 80, 91, 109, 23, 76, 37, 50, 114, 55, 39, 49, 0, 11, 81, 99, 115, 105, 110, 195, 161, 108, 111, 107, 32, 23,
+			66, 76, 80, 91, 109, 23, 84, 109, 47, 12, 109, 65, 0, 11, 81, 118, 101, 116, 116, 101, 109, 32, 7, 196, 81, 195, 65, 16, 11, 5,
+			194, 56, 240, 72, 5, 194, 76, 80, 11, 0, 6, 195, 76, 242, 203, 11, 0, 11, 200, 65, 35, 198, 21, 52, 218, 61, 32, 11, 15, 69,
+			29, 145, 83, 21, 96, 79, 109, 91, 109, 84, 0, 42, 42, 0, 14, 203, 36, 225, 37, 81, 103, 14, 100, 242, 210, 156, 192, 11, 9, 198,
+			25, 196, 129, 77, 165, 39, 11, 8, 197, 57, 147, 205, 112, 224, 11, 9, 198, 32, 20, 218, 57, 195, 39, 11, 10, 199, 29, 144, 82, 5,
+			3, 196, 156, 11, 6, 195, 54, 163, 20, 11, 0, 9, 198, 84, 118, 65, 56, 148, 192, 11, 11, 136, 105, 100, 197, 145, 115, 101, 98, 98,
+			11, 58, 70, 24, 83, 43, 48, 85, 0, 83, 109, 55, 111, 55, 109, 47, 23, 108, 49, 108, 72, 114, 57, 65, 109, 50, 47, 109, 91, 12,
+			113, 81, 113, 47, 0, 11, 81, 97, 107, 97, 100, 195, 161, 108, 121, 109, 101, 110, 116, 101, 115, 115, 195, 169, 103, 195, 169, 116, 32, 9,
+			198, 24, 83, 43, 48, 85, 0, 11, 26, 70, 24, 83, 43, 48, 85, 0, 83, 109, 55, 111, 55, 109, 47, 23, 84, 108, 50, 0, 11, 81,
+			118, 97, 110, 32, 8, 197, 8, 195, 199, 61, 64, 11, 5, 194, 42, 112, 11, 0, 24, 67, 34, 164, 218, 107, 116, 89, 23, 113, 84, 71,
+			109, 50, 0, 11, 81, 195, 169, 118, 98, 101, 110, 32, 8, 197, 16, 84, 171, 49, 64, 11, 6, 195, 34, 164, 218, 11, 6, 195, 82, 37,
+			0, 11, 15, 7, 95, 35, 45, 116, 195, 179, 108, 114, 47, 115, 55, 0, 16, 0, 14, 2, 194, 174, 71, 109, 57, 109, 79, 88, 109, 47,
+			12, 0, 42, 72, 77, 167, 26, 4, 200, 139, 61, 64, 89, 114, 88, 108, 55, 113, 49, 39, 47, 23, 84, 109, 89, 112, 47, 109, 50, 109,
+			0, 11, 81, 118, 101, 115, 122, 195, 173, 116, 101, 110, 101, 32, 6, 195, 60, 179, 212, 11, 0, 18, 198, 21, 54, 141, 136, 161, 64, 11,
+			81, 104, 101, 118, 195, 173, 116, 105, 32, 0, 15, 2, 194, 172, 55, 39, 81, 37, 49, 108, 37, 50, 109, 65, 0, 5, 130, 195, 164, 43,
+			9, 198, 37, 39, 14, 101, 73, 204, 11, 8, 197, 24, 244, 137, 57, 64, 11, 11, 200, 32, 21, 39, 4, 230, 65, 30, 160, 11, 8, 197,
+			16, 243, 7, 61, 64, 11, 8, 197, 37, 51, 69, 73, 64, 11, 0, 7, 196, 81, 81, 19, 104, 76, 7, 196, 84, 118, 65, 56, 11, 20,
+			68, 149, 37, 1, 52, 112, 52, 47, 108, 65, 23, 55, 109, 0, 11, 81, 108, 101, 32, 9, 198, 89, 196, 143, 77, 192, 129, 11, 9, 198,
+			37, 39, 14, 101, 192, 129, 11, 10, 199, 88, 150, 147, 29, 195, 10, 4, 11, 7, 196, 149, 37, 1, 52, 11, 12, 201, 74, 36, 218, 48,
+			81, 226, 88, 83, 0, 11, 15, 7, 95, 35, 45, 114, 195, 179, 108, 114, 52, 115, 55, 0, 16, 0, 17, 142, 108, 101, 103, 102, 101, 108,
+			116, 197, 177, 110, 197, 145, 98, 98, 11, 11, 200, 45, 34, 84, 36, 183, 11, 72, 16, 11, 9, 198, 81, 195, 65, 17, 64, 75, 11, 10,
+			199, 173, 161, 77, 54, 113, 2, 4, 11, 38, 69, 12, 146, 204, 60, 224, 119, 37, 49, 55, 39, 50, 23, 47, 108, 55, 114, 55, 107, 108,
+			47, 115, 0, 11, 81, 116, 97, 108, 195, 161, 108, 104, 97, 116, 195, 179, 32, 9, 198, 81, 196, 143, 50, 114, 192, 11, 11, 200, 24, 145,
+			217, 20, 195, 98, 8, 80, 11, 8, 197, 48, 81, 217, 20, 224, 11, 0, 13, 138, 104, 197, 145, 98, 195, 182, 114, 195, 182, 103, 11, 12,
+			201, 46, 179, 40, 56, 36, 226, 28, 85, 0, 11, 9, 198, 89, 196, 136, 5, 73, 203, 11, 0, 41, 74, 4, 192, 80, 4, 230, 65, 28,
+			242, 210, 4, 108, 55, 108, 48, 108, 67, 108, 81, 39, 49, 52, 108, 23, 49, 113, 67, 109, 91, 0, 11, 81, 107, 195, 169, 110, 121, 101,
+			115, 32, 19, 144, 118, 97, 108, 195, 179, 115, 122, 195, 173, 110, 197, 177, 116, 108, 101, 110, 11, 7, 196, 20, 227, 153, 36, 11, 14, 203,
+			52, 81, 198, 60, 112, 76, 52, 22, 143, 81, 64, 11, 0, 18, 2, 194, 169, 119, 39, 48, 37, 52, 37, 81, 107, 47, 20, 57, 109, 55,
+			0, 14, 203, 57, 145, 82, 76, 19, 153, 4, 115, 203, 72, 16, 11, 9, 198, 20, 200, 146, 137, 52, 133, 11, 9, 134, 107, 101, 122, 100,
+			197, 145, 11, 8, 197, 173, 161, 78, 21, 64, 11, 0, 13, 2, 194, 182, 71, 109, 49, 109, 88, 72, 113, 91, 0, 12, 201, 24, 83, 142,
+			4, 176, 68, 80, 19, 64, 11, 11, 200, 64, 244, 218, 80, 167, 18, 156, 192, 11, 13, 202, 80, 20, 148, 157, 162, 207, 17, 196, 210, 4,
+			11, 11, 200, 80, 147, 1, 48, 215, 18, 156, 192, 11, 13, 202, 112, 195, 1, 81, 64, 82, 81, 196, 210, 4, 11, 7, 196, 40, 241, 207,
+			44, 11, 0, 12, 201, 52, 83, 12, 136, 177, 76, 80, 83, 64, 11, 11, 200, 80, 19, 156, 13, 48, 68, 156, 144, 11, 13, 202, 57, 146,
+			76, 89, 195, 165, 81, 196, 210, 4, 11, 6, 195, 74, 115, 0, 11, 0, 7, 196, 161, 67, 5, 80, 11, 7, 196, 80, 82, 28, 80, 11,
+			5, 194, 60, 224, 11, 13, 66, 64, 192, 48, 113, 55, 72, 114, 40, 55, 0, 25, 9, 198, 24, 80, 146, 85, 196, 128, 15, 0, 7, 2,
+			194, 181, 65, 117, 0, 12, 201, 46, 132, 171, 48, 216, 142, 100, 82, 64, 11, 0, 12, 201, 137, 37, 5, 48, 209, 90, 106, 178, 192, 11,
+			10, 199, 168, 161, 15, 57, 55, 7, 4, 11, 12, 201, 36, 229, 5, 72, 225, 84, 21, 168, 147, 11, 0, 18, 67, 32, 241, 217, 107, 39,
+			79, 4, 108, 49, 37, 0, 81, 97, 107, 105, 32, 17, 67, 32, 241, 217, 107, 4, 39, 79, 4, 108, 88, 0, 81, 97, 122, 32, 15, 67,
+			32, 241, 217, 107, 4, 39, 79, 4, 108, 0, 81, 97, 32, 45, 8, 195, 169, 114, 105, 110, 116, 197, 145, 113, 52, 37, 50, 47, 118, 23,
+			49, 113, 52, 72, 113, 91, 109, 49, 71, 109, 50, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 101, 107, 98, 101, 110, 32, 34, 70,
+			89, 195, 20, 61, 160, 84, 84, 114, 55, 47, 39, 88, 108, 47, 23, 109, 91, 109, 47, 113, 50, 0, 11, 81, 101, 115, 101, 116, 195, 169,
+			110, 32, 8, 197, 21, 49, 84, 136, 224, 11, 45, 8, 195, 169, 114, 105, 110, 116, 197, 145, 113, 52, 37, 50, 47, 118, 23, 83, 52, 37,
+			91, 12, 112, 47, 113, 91, 109, 49, 0, 11, 81, 102, 114, 105, 115, 115, 195, 173, 116, 195, 169, 115, 101, 107, 32, 6, 195, 64, 144, 201,
+			11, 12, 201, 77, 162, 71, 61, 41, 84, 113, 53, 0, 11, 9, 198, 89, 195, 20, 61, 160, 84, 11, 11, 136, 195, 169, 114, 105, 110, 116,
+			197, 145, 11, 8, 197, 21, 49, 84, 136, 224, 11, 6, 195, 52, 81, 217, 11, 6, 195, 10, 162, 148, 11, 6, 195, 52, 81, 217, 11, 0,
+			8, 2, 194, 176, 83, 39, 49, 0, 11, 2, 194, 176, 83, 39, 49, 57, 109, 55, 0, 6, 195, 78, 84, 0, 11, 0, 14, 2, 194, 177,
+			48, 55, 40, 89, 65, 37, 50, 40, 89, 0, 11, 136, 107, 101, 100, 118, 197, 177, 101, 107, 11, 6, 195, 14, 33, 192, 11, 6, 195, 54,
+			33, 192, 11, 0, 15, 2, 194, 190, 107, 114, 52, 39, 65, 50, 109, 79, 109, 72, 0, 8, 197, 33, 198, 130, 156, 192, 11, 8, 197, 53,
+			196, 210, 156, 192, 11, 11, 200, 44, 81, 22, 21, 163, 98, 57, 144, 11, 0, 10, 2, 195, 183, 39, 89, 47, 114, 91, 0, 10, 199, 77,
+			167, 18, 52, 22, 137, 44, 11, 0, 10, 2, 194, 188, 50, 109, 79, 109, 72, 0, 35, 70, 21, 49, 84, 48, 81, 192, 109, 91, 109, 47,
+			55, 109, 81, 23, 109, 55, 113, 52, 107, 109, 47, 0, 11, 81, 101, 108, 195, 169, 114, 104, 101, 116, 32, 16, 141, 102, 101, 106, 108, 101,
+			115, 122, 116, 195, 169, 115, 197, 177, 11, 9, 198, 13, 50, 78, 112, 197, 0, 11, 0, 8, 2, 194, 189, 83, 113, 55, 0, 0, 0, 28,
+			68, 24, 243, 25, 156, 83, 39, 57, 115, 15, 84, 109, 52, 91, 109, 67, 0, 11, 81, 118, 101, 114, 115, 101, 110, 121, 32, 9, 198, 24,
+			18, 193, 17, 64, 77, 11, 6, 195, 24, 241, 193, 11, 10, 199, 82, 132, 133, 45, 54, 137, 44, 11, 6, 195, 52, 17, 193, 11, 0, 12,
+			201, 32, 19, 12, 28, 21, 39, 45, 73, 204, 11, 0, 5, 130, 195, 177, 43, 7, 196, 49, 197, 39, 80, 11, 9, 198, 32, 20, 207, 56,
+			201, 192, 11, 0, 10, 199, 52, 243, 132, 4, 229, 78, 44, 11, 0, 6, 195, 88, 19, 0, 11, 6, 195, 74, 131, 0, 11, 0, 45, 67,
+			137, 37, 128, 113, 52, 84, 23, 108, 6, 15, 55, 37, 50, 40, 49, 89, 23, 65, 109, 55, 12, 109, 47, 12, 0, 11, 83, 97, 32, 108,
+			105, 110, 117, 120, 32, 109, 101, 108, 108, 101, 116, 116, 32, 11, 200, 40, 21, 129, 76, 192, 84, 61, 64, 11, 11, 200, 32, 20, 207, 56,
+			192, 84, 61, 64, 11, 6, 195, 137, 37, 128, 11, 9, 198, 64, 20, 129, 77, 165, 0, 11, 9, 198, 44, 83, 20, 21, 69, 0, 11, 7,
+			196, 90, 35, 5, 16, 11, 5, 194, 80, 80, 11, 13, 67, 161, 165, 128, 110, 88, 84, 109, 79, 0, 25, 46, 0, 11, 200, 21, 54, 139,
+			161, 170, 11, 160, 224, 11, 30, 66, 113, 64, 114, 47, 23, 108, 6, 23, 72, 52, 114, 84, 114, 47, 0, 11, 82, 97, 32, 100, 114, 195,
+			161, 118, 195, 161, 116, 32, 7, 196, 49, 195, 153, 4, 11, 11, 200, 24, 83, 15, 49, 96, 83, 157, 64, 11, 10, 199, 32, 21, 28, 72,
+			246, 142, 36, 11, 5, 194, 113, 64, 11, 18, 67, 88, 146, 64, 107, 113, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 14, 139,
+			109, 101, 103, 103, 121, 197, 145, 122, 110, 105, 101, 11, 0, 5, 194, 149, 32, 11, 12, 201, 88, 148, 197, 48, 177, 68, 21, 69, 0, 11,
+			0, 8, 197, 64, 144, 67, 61, 64, 11, 47, 69, 20, 208, 133, 73, 64, 109, 65, 71, 109, 52, 47, 23, 49, 37, 65, 109, 50, 109, 49,
+			112, 47, 109, 47, 12, 109, 49, 0, 11, 81, 107, 105, 109, 101, 110, 101, 107, 195, 173, 116, 101, 116, 116, 101, 107, 32, 8, 197, 80, 149,
+			11, 61, 64, 11, 8, 197, 88, 85, 20, 136, 176, 11, 5, 194, 74, 112, 11, 8, 197, 88, 149, 20, 136, 176, 11, 0, 23, 66, 161, 64,
+			110, 47, 23, 49, 110, 52, 111, 55, 0, 11, 81, 107, 195, 182, 114, 195, 188, 108, 32, 8, 197, 40, 83, 40, 49, 64, 11, 8, 197, 48,
+			87, 12, 49, 64, 11, 8, 197, 137, 37, 133, 49, 64, 11, 8, 197, 58, 133, 133, 49, 64, 11, 8, 197, 77, 167, 12, 49, 64, 11, 10,
+			199, 13, 58, 212, 161, 37, 40, 44, 15, 0, 11, 200, 77, 160, 66, 112, 198, 90, 157, 64, 11, 0, 10, 199, 46, 133, 133, 80, 83, 9,
+			44, 11, 13, 138, 101, 114, 197, 145, 108, 116, 101, 116, 105, 107, 11, 25, 67, 96, 146, 73, 47, 37, 88, 109, 50, 107, 114, 52, 39, 65,
+			12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 19, 67, 88, 146, 73, 67, 39, 55, 119, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0,
+			8, 197, 56, 83, 90, 21, 64, 11, 11, 200, 48, 81, 196, 73, 193, 220, 8, 32, 11, 8, 197, 24, 83, 22, 21, 64, 11, 10, 199, 89,
+			195, 20, 61, 163, 212, 80, 11, 11, 200, 52, 81, 214, 21, 36, 197, 49, 64, 11, 10, 199, 88, 17, 28, 77, 163, 212, 80, 11, 9, 198,
+			30, 36, 5, 44, 85, 0, 11, 7, 196, 112, 195, 39, 44, 11, 6, 195, 77, 167, 13, 11, 0, 6, 195, 81, 81, 0, 11, 22, 67, 20,
+			120, 146, 109, 81, 113, 52, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 9, 198, 172, 118, 86, 136, 66, 133, 11, 6, 195,
+			81, 81, 0, 11, 11, 67, 72, 19, 64, 52, 108, 65, 0, 42, 42, 0, 47, 70, 48, 82, 5, 80, 85, 20, 55, 109, 107, 109, 47, 109,
+			47, 12, 23, 84, 37, 90, 81, 114, 55, 50, 37, 23, 108, 89, 47, 0, 11, 82, 118, 105, 122, 115, 103, 195, 161, 108, 110, 105, 32, 97,
+			122, 116, 32, 36, 70, 48, 82, 5, 80, 85, 20, 55, 109, 107, 109, 47, 109, 47, 12, 23, 89, 114, 65, 114, 52, 108, 0, 11, 81, 115,
+			122, 195, 161, 109, 195, 161, 114, 97, 32, 13, 138, 107, 195, 182, 118, 101, 116, 197, 145, 101, 110, 11, 9, 198, 48, 82, 5, 80, 85, 20,
+			11, 0, 25, 70, 82, 131, 20, 76, 83, 64, 47, 110, 55, 76, 109, 65, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 12, 201, 89,
+			195, 20, 61, 165, 1, 80, 245, 20, 11, 9, 198, 72, 82, 212, 61, 32, 73, 11, 12, 201, 20, 195, 28, 80, 241, 193, 80, 245, 20, 11,
+			0, 41, 73, 44, 21, 5, 30, 116, 137, 112, 32, 64, 49, 108, 47, 109, 81, 115, 52, 37, 114, 71, 108, 23, 91, 39, 52, 39, 55, 39,
+			65, 0, 11, 81, 115, 111, 114, 111, 108, 111, 109, 32, 8, 133, 197, 145, 114, 122, 105, 11, 0, 9, 198, 80, 84, 211, 106, 178, 192, 11,
+			23, 70, 32, 148, 211, 106, 178, 192, 107, 37, 89, 12, 111, 49, 23, 109, 55, 0, 11, 81, 101, 108, 32, 9, 198, 80, 83, 142, 38, 178,
+			192, 11, 11, 200, 80, 19, 28, 48, 128, 84, 156, 176, 11, 11, 200, 32, 21, 28, 72, 246, 143, 81, 64, 11, 0, 13, 202, 32, 246, 154,
+			113, 64, 82, 80, 246, 167, 36, 11, 8, 197, 76, 81, 226, 49, 144, 11, 0, 23, 67, 20, 200, 128, 109, 55, 113, 23, 84, 109, 47, 37,
+			49, 0, 11, 81, 118, 101, 116, 105, 107, 32, 50, 71, 77, 161, 77, 136, 198, 69, 76, 89, 109, 65, 113, 57, 109, 91, 23, 71, 109, 114,
+			55, 12, 37, 47, 114, 91, 39, 49, 108, 47, 0, 11, 81, 98, 101, 195, 161, 108, 108, 195, 173, 116, 195, 161, 115, 111, 107, 97, 116, 32,
+			6, 195, 20, 200, 128, 11, 0, 7, 196, 42, 130, 5, 80, 11, 7, 196, 172, 118, 69, 80, 11, 0, 28, 71, 88, 150, 147, 29, 195, 14,
+			36, 84, 37, 90, 81, 114, 55, 50, 37, 23, 108, 89, 47, 0, 11, 81, 97, 122, 116, 32, 12, 201, 17, 84, 12, 36, 183, 3, 38, 116,
+			129, 11, 7, 196, 32, 246, 154, 112, 11, 0, 11, 200, 88, 84, 218, 80, 84, 226, 28, 80, 11, 42, 68, 72, 19, 135, 168, 52, 108, 50,
+			81, 116, 23, 47, 37, 89, 47, 84, 37, 91, 109, 55, 118, 57, 109, 0, 11, 81, 116, 105, 115, 122, 116, 118, 105, 115, 101, 108, 197, 145,
+			106, 101, 32, 0, 11, 136, 105, 106, 101, 115, 122, 116, 197, 145, 11, 34, 71, 24, 83, 5, 81, 74, 206, 44, 83, 109, 55, 109, 47, 12,
+			111, 50, 49, 23, 108, 88, 23, 113, 81, 0, 11, 82, 97, 122, 32, 195, 169, 103, 32, 14, 203, 57, 149, 71, 112, 195, 15, 53, 195, 153,
+			8, 16, 11, 6, 195, 77, 169, 204, 11, 0, 40, 70, 40, 241, 207, 44, 32, 78, 57, 39, 81, 39, 49, 71, 108, 50, 23, 37, 55, 12,
+			109, 47, 113, 49, 109, 91, 0, 11, 81, 105, 108, 108, 101, 116, 195, 169, 107, 101, 115, 32, 14, 203, 52, 147, 137, 77, 165, 5, 72, 83,
+			14, 160, 176, 11, 7, 196, 32, 149, 20, 20, 11, 6, 195, 80, 84, 150, 11, 0, 8, 197, 64, 84, 131, 72, 80, 17, 8, 197, 64, 243,
+			148, 40, 16, 11, 6, 195, 78, 117, 0, 11, 0, 0, 27, 71, 160, 227, 65, 29, 192, 129, 56, 110, 50, 65, 108, 81, 114, 71, 108, 50,
+			23, 108, 88, 0, 11, 81, 97, 122, 32, 10, 199, 44, 148, 198, 38, 163, 129, 44, 11, 10, 199, 57, 154, 138, 80, 19, 129, 44, 11, 6,
+			195, 90, 36, 148, 11, 10, 199, 49, 197, 19, 104, 19, 129, 44, 11, 0, 11, 200, 137, 37, 5, 48, 216, 130, 20, 224, 11, 0, 28, 69,
+			32, 18, 148, 40, 16, 107, 108, 57, 80, 108, 23, 84, 113, 81, 52, 109, 0, 11, 81, 118, 195, 169, 103, 114, 101, 32, 8, 197, 57, 146,
+			84, 40, 16, 11, 8, 197, 28, 243, 132, 40, 16, 11, 8, 197, 24, 241, 206, 36, 16, 11, 9, 198, 32, 20, 141, 4, 66, 75, 11, 6,
+			195, 76, 244, 147, 11, 0, 0, 10, 199, 53, 83, 139, 113, 51, 129, 44, 11, 9, 198, 46, 133, 133, 81, 72, 139, 11, 10, 199, 77, 167,
+			13, 60, 195, 129, 44, 11, 12, 137, 195, 186, 103, 121, 116, 197, 177, 110, 116, 11, 10, 199, 89, 195, 12, 4, 195, 129, 44, 11, 8, 197,
+			25, 85, 14, 4, 176, 11, 7, 196, 172, 194, 168, 56, 11, 0, 9, 198, 24, 150, 133, 80, 82, 192, 11, 11, 200, 54, 35, 25, 78, 33,
+			194, 20, 224, 11, 13, 202, 46, 134, 140, 20, 216, 142, 102, 32, 133, 56, 11, 9, 198, 60, 179, 218, 80, 18, 192, 11, 9, 198, 44, 20,
+			21, 41, 197, 0, 11, 9, 198, 46, 134, 168, 49, 72, 139, 11, 9, 198, 88, 83, 5, 80, 82, 192, 11, 0, 8, 197, 88, 243, 20, 4,
+			208, 72, 8, 197, 36, 195, 5, 80, 144, 11, 8, 197, 90, 33, 226, 36, 112, 11, 10, 199, 90, 37, 5, 50, 37, 133, 48, 11, 29, 71,
+			44, 21, 15, 57, 196, 167, 48, 49, 108, 47, 39, 50, 114, 52, 115, 55, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 10, 199, 44,
+			21, 15, 57, 196, 167, 48, 11, 35, 69, 88, 19, 1, 52, 144, 84, 108, 55, 108, 65, 37, 15, 48, 52, 39, 71, 55, 113, 65, 108, 0,
+			11, 81, 112, 114, 111, 98, 108, 195, 169, 109, 97, 32, 8, 197, 88, 243, 20, 4, 208, 11, 8, 197, 88, 19, 1, 52, 144, 11, 8, 197,
+			40, 83, 26, 20, 208, 11, 8, 197, 57, 154, 138, 82, 112, 11, 12, 201, 46, 133, 133, 80, 177, 90, 56, 82, 192, 11, 8, 197, 29, 41,
+			198, 61, 64, 11, 0, 13, 202, 33, 198, 147, 104, 16, 156, 49, 149, 39, 48, 11, 8, 197, 46, 36, 218, 172, 192, 11, 8, 197, 46, 36,
+			218, 172, 192, 11, 8, 197, 58, 35, 11, 172, 192, 11, 8, 197, 80, 21, 129, 77, 160, 15, 0, 8, 197, 24, 241, 213, 56, 176, 76, 13,
+			138, 98, 101, 108, 197, 145, 110, 105, 195, 188, 107, 11, 43, 69, 88, 243, 148, 4, 176, 84, 39, 50, 47, 108, 49, 23, 83, 109, 55, 109,
+			55, 118, 91, 113, 81, 51, 109, 0, 11, 81, 102, 101, 108, 101, 108, 197, 145, 115, 115, 195, 169, 103, 114, 101, 32, 6, 195, 5, 2, 129,
+			11, 9, 198, 25, 83, 139, 12, 153, 212, 11, 9, 198, 4, 226, 77, 112, 50, 103, 11, 8, 197, 32, 20, 131, 60, 176, 11, 0, 29, 69,
+			52, 147, 12, 38, 112, 65, 37, 55, 37, 115, 23, 83, 39, 52, 37, 50, 47, 0, 11, 81, 102, 111, 114, 105, 110, 116, 32, 14, 203, 81,
+			196, 135, 100, 19, 28, 76, 242, 194, 4, 224, 11, 15, 204, 40, 83, 5, 57, 66, 197, 104, 129, 84, 56, 82, 192, 11, 0, 39, 72, 44,
+			148, 218, 60, 193, 220, 50, 112, 49, 37, 89, 39, 55, 81, 114, 55, 115, 23, 57, 114, 52, 108, 47, 108, 37, 0, 11, 81, 106, 195, 161,
+			114, 97, 116, 97, 105, 32, 24, 68, 20, 208, 133, 72, 109, 65, 71, 109, 52, 23, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32,
+			13, 196, 20, 208, 133, 72, 11, 81, 118, 111, 108, 116, 32, 11, 200, 44, 148, 218, 60, 193, 220, 50, 112, 11, 7, 196, 20, 208, 133, 72,
+			11, 6, 195, 74, 161, 0, 11, 6, 195, 77, 169, 192, 11, 0, 13, 202, 80, 83, 5, 66, 85, 34, 78, 37, 133, 48, 11, 9, 198, 77,
+			163, 203, 113, 51, 211, 11, 0, 23, 67, 112, 195, 20, 114, 55, 47, 23, 110, 89, 12, 109, 0, 11, 81, 195, 182, 115, 115, 122, 101, 32,
+			9, 198, 77, 161, 82, 20, 195, 69, 11, 33, 67, 112, 195, 20, 114, 55, 47, 23, 48, 113, 55, 72, 108, 49, 113, 50, 47, 0, 11, 81,
+			112, 195, 169, 108, 100, 97, 107, 195, 169, 110, 116, 32, 15, 204, 52, 81, 214, 113, 55, 18, 60, 194, 1, 82, 114, 192, 11, 12, 201, 80,
+			19, 28, 48, 215, 14, 101, 83, 139, 11, 6, 195, 112, 195, 20, 11, 0, 9, 198, 20, 195, 168, 46, 37, 0, 11, 8, 197, 80, 84, 141,
+			136, 176, 11, 9, 198, 24, 81, 5, 104, 85, 0, 11, 9, 198, 24, 241, 193, 48, 208, 90, 11, 0, 7, 197, 20, 118, 107, 81, 64, 8,
+			197, 34, 85, 143, 81, 64, 11, 0, 20, 67, 80, 20, 148, 47, 108, 52, 47, 23, 39, 47, 12, 0, 11, 81, 111, 116, 116, 32, 9, 198,
+			8, 85, 137, 80, 83, 20, 11, 10, 199, 89, 196, 220, 72, 243, 14, 36, 11, 6, 195, 80, 20, 148, 11, 0, 10, 199, 58, 133, 133, 45,
+			54, 137, 44, 11, 9, 198, 4, 113, 231, 16, 245, 20, 11, 0, 11, 200, 32, 19, 1, 77, 165, 15, 81, 64, 11, 0, 21, 67, 82, 130,
+			192, 47, 110, 49, 23, 37, 81, 108, 88, 0, 11, 81, 105, 103, 97, 122, 32, 11, 200, 54, 36, 148, 136, 184, 130, 20, 224, 11, 18, 4,
+			95, 56, 48, 111, 67, 39, 55, 119, 84, 108, 50, 108, 72, 37, 49, 0, 0, 11, 200, 82, 132, 150, 136, 227, 153, 20, 192, 11, 10, 198,
+			66, 35, 4, 113, 83, 0, 11, 17, 0, 8, 197, 81, 81, 20, 60, 176, 76, 8, 197, 88, 19, 142, 4, 176, 11, 43, 73, 65, 35, 194,
+			50, 35, 92, 44, 21, 0, 48, 52, 39, 71, 55, 113, 65, 114, 49, 108, 47, 23, 49, 108, 48, 108, 52, 81, 108, 47, 0, 11, 81, 107,
+			97, 112, 97, 114, 103, 97, 116, 32, 12, 201, 52, 81, 203, 161, 72, 147, 136, 33, 78, 11, 12, 201, 65, 35, 194, 50, 35, 92, 44, 21,
+			0, 11, 13, 202, 80, 84, 218, 80, 83, 34, 78, 32, 133, 56, 11, 12, 201, 4, 192, 80, 161, 67, 5, 82, 37, 0, 11, 0, 9, 198,
+			85, 64, 90, 56, 18, 192, 11, 10, 199, 13, 48, 76, 156, 67, 212, 80, 11, 9, 198, 8, 19, 139, 56, 18, 192, 11, 22, 68, 40, 83,
+			26, 36, 57, 109, 55, 88, 37, 10, 6, 15, 108, 88, 0, 11, 81, 97, 122, 32, 43, 70, 72, 83, 132, 77, 161, 82, 52, 109, 50, 119,
+			109, 52, 23, 83, 40, 47, 12, 108, 47, 114, 91, 114, 52, 108, 0, 11, 81, 102, 117, 116, 116, 97, 116, 195, 161, 115, 195, 161, 114, 97,
+			32, 31, 70, 72, 144, 68, 56, 18, 192, 51, 37, 108, 72, 50, 108, 49, 23, 84, 37, 89, 12, 108, 0, 11, 81, 118, 105, 115, 115, 122,
+			97, 32, 9, 198, 5, 163, 203, 56, 18, 192, 11, 41, 70, 72, 83, 132, 77, 161, 82, 52, 109, 50, 119, 109, 52, 23, 83, 52, 37, 91,
+			12, 112, 47, 113, 91, 47, 0, 11, 81, 102, 114, 105, 115, 115, 195, 173, 116, 195, 169, 115, 116, 32, 7, 196, 40, 241, 207, 52, 11, 9,
+			198, 20, 194, 232, 49, 69, 133, 11, 9, 198, 32, 19, 135, 104, 146, 192, 11, 9, 198, 52, 243, 132, 41, 82, 192, 11, 7, 196, 88, 85,
+			14, 36, 11, 9, 198, 32, 19, 135, 104, 146, 192, 11, 9, 198, 72, 83, 132, 77, 161, 82, 11, 7, 196, 40, 83, 26, 36, 11, 0, 20,
+			67, 4, 194, 71, 108, 55, 37, 81, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 8, 197, 26, 36, 134, 37, 64, 11, 0, 63, 14,
+			101, 103, 121, 195, 169, 114, 116, 101, 108, 109, 197, 177, 101, 110, 109, 79, 12, 113, 52, 47, 109, 55, 65, 117, 109, 50, 23, 65, 109, 81,
+			114, 55, 12, 108, 48, 112, 47, 39, 47, 12, 108, 0, 11, 81, 109, 101, 103, 195, 161, 108, 108, 97, 112, 195, 173, 116, 111, 116, 116, 97,
+			32, 6, 195, 82, 115, 0, 11, 0, 8, 197, 76, 82, 148, 36, 176, 11, 9, 198, 32, 20, 207, 56, 201, 84, 11, 9, 198, 20, 209, 76,
+			137, 49, 64, 11, 18, 67, 148, 118, 64, 112, 79, 23, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 20, 67, 148, 118, 64, 112, 79, 15,
+			84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116, 32, 9, 198, 80, 19, 132, 148, 160, 84, 11, 6, 195, 148, 118, 64, 11, 0, 7, 196,
+			50, 36, 34, 76, 11, 8, 197, 81, 195, 153, 137, 32, 11, 7, 196, 5, 32, 78, 100, 11, 6, 195, 12, 146, 203, 11, 7, 196, 49, 195,
+			153, 80, 11, 0, 22, 68, 20, 65, 9, 28, 109, 72, 12, 37, 81, 23, 91, 109, 65, 0, 11, 81, 115, 101, 109, 32, 0, 0, 6, 195,
+			57, 195, 1, 11, 0, 23, 69, 77, 163, 203, 80, 16, 89, 39, 49, 47, 108, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 7, 196,
+			9, 192, 211, 36, 11, 8, 197, 72, 243, 148, 40, 16, 11, 8, 197, 4, 176, 82, 80, 16, 11, 9, 198, 16, 243, 7, 61, 162, 75, 11,
+			8, 197, 44, 86, 132, 80, 80, 11, 0, 28, 67, 4, 176, 82, 108, 49, 108, 52, 23, 84, 108, 55, 108, 65, 37, 47, 0, 11, 81, 118,
+			97, 108, 97, 109, 105, 116, 32, 34, 67, 4, 176, 82, 108, 49, 108, 52, 10, 6, 15, 108, 6, 15, 79, 114, 52, 47, 115, 0, 11, 82,
+			97, 32, 103, 121, 195, 161, 114, 116, 195, 179, 32, 29, 67, 4, 176, 82, 108, 6, 49, 108, 52, 23, 65, 108, 52, 108, 72, 50, 37, 0,
+			11, 81, 109, 97, 114, 97, 100, 110, 105, 32, 8, 197, 77, 168, 140, 136, 224, 11, 6, 195, 4, 176, 82, 11, 0, 19, 67, 85, 48, 64,
+			117, 115, 195, 161, 98, 97, 0, 44, 29, 42, 81, 98, 97, 32, 21, 67, 85, 48, 64, 117, 115, 195, 161, 98, 97, 110, 0, 44, 29, 42,
+			81, 98, 97, 110, 32, 25, 67, 85, 48, 64, 117, 115, 195, 161, 195, 169, 118, 97, 108, 0, 44, 29, 42, 81, 195, 169, 118, 97, 108, 32,
+			21, 67, 85, 48, 64, 117, 115, 195, 161, 110, 97, 107, 0, 44, 29, 42, 81, 110, 97, 107, 32, 23, 67, 85, 48, 64, 117, 115, 195, 161,
+			98, 195, 179, 108, 0, 44, 29, 42, 81, 98, 195, 179, 108, 32, 10, 199, 61, 36, 218, 112, 115, 129, 44, 11, 8, 197, 40, 241, 210, 156,
+			192, 11, 0, 41, 68, 40, 241, 210, 4, 57, 39, 81, 52, 108, 23, 84, 114, 55, 47, 39, 89, 47, 108, 47, 39, 47, 12, 0, 11, 81,
+			118, 195, 161, 108, 116, 111, 122, 116, 97, 116, 111, 116, 116, 32, 9, 198, 136, 193, 84, 136, 33, 78, 11, 7, 196, 24, 241, 214, 4, 11,
+			0, 10, 199, 20, 120, 147, 106, 32, 133, 56, 11, 8, 197, 52, 144, 84, 80, 16, 11, 6, 195, 73, 193, 0, 11, 8, 197, 52, 243, 132,
+			40, 16, 11, 6, 195, 88, 84, 147, 11, 17, 3, 117, 46, 110, 116, 79, 50, 109, 84, 109, 88, 109, 47, 12, 0, 25, 0, 7, 66, 77,
+			160, 109, 89, 0, 35, 67, 20, 200, 135, 109, 55, 113, 81, 15, 83, 37, 79, 109, 55, 65, 109, 91, 109, 50, 0, 11, 81, 102, 105, 103,
+			121, 101, 108, 109, 101, 115, 101, 110, 32, 6, 195, 20, 200, 135, 11, 0, 7, 196, 44, 147, 39, 76, 11, 16, 141, 98, 197, 177, 110, 116,
+			101, 116, 116, 195, 169, 98, 101, 110, 11, 0, 11, 200, 32, 151, 14, 100, 246, 142, 4, 176, 11, 9, 198, 29, 145, 82, 52, 82, 192, 11,
+			9, 198, 52, 20, 129, 16, 242, 192, 11, 11, 200, 25, 83, 139, 12, 153, 206, 4, 176, 11, 9, 198, 24, 243, 25, 56, 18, 192, 11, 9,
+			198, 57, 145, 82, 80, 82, 192, 11, 6, 195, 137, 38, 137, 11, 0, 10, 199, 137, 33, 90, 32, 85, 20, 20, 11, 6, 195, 42, 114, 192,
+			11, 8, 197, 80, 17, 202, 4, 144, 11, 8, 197, 32, 148, 218, 20, 208, 11, 0, 9, 198, 72, 17, 207, 104, 226, 64, 11, 9, 198, 40,
+			83, 5, 104, 226, 64, 11, 11, 200, 45, 34, 84, 37, 167, 12, 80, 16, 11, 6, 195, 25, 194, 128, 11, 5, 194, 112, 208, 11, 5, 194,
+			136, 144, 72, 0, 8, 197, 104, 18, 140, 36, 176, 11, 32, 69, 81, 81, 20, 4, 176, 47, 40, 47, 12, 108, 49, 23, 65, 39, 50, 72,
+			108, 50, 37, 0, 11, 81, 109, 111, 110, 100, 97, 110, 105, 32, 14, 203, 24, 83, 15, 49, 96, 83, 32, 21, 14, 4, 176, 11, 12, 201,
+			80, 19, 28, 48, 179, 218, 61, 69, 0, 11, 8, 197, 52, 83, 142, 20, 176, 11, 8, 197, 4, 197, 156, 77, 64, 11, 8, 197, 46, 36,
+			5, 77, 64, 11, 6, 195, 88, 83, 0, 11, 6, 195, 82, 131, 0, 11, 0, 9, 198, 64, 243, 148, 41, 197, 0, 11, 43, 70, 82, 132,
+			150, 136, 230, 64, 47, 110, 52, 84, 113, 67, 10, 10, 47, 109, 52, 84, 109, 88, 109, 47, 113, 71, 109, 0, 11, 81, 116, 101, 114, 118,
+			101, 122, 101, 116, 195, 169, 98, 101, 32, 50, 70, 82, 132, 150, 136, 230, 64, 47, 110, 52, 84, 113, 67, 23, 49, 39, 50, 119, 109, 48,
+			119, 37, 115, 57, 114, 52, 115, 55, 0, 11, 81, 107, 111, 110, 99, 101, 112, 99, 105, 195, 179, 106, 195, 161, 114, 195, 179, 108, 32, 9,
+			198, 82, 132, 150, 136, 230, 64, 11, 7, 196, 88, 83, 142, 36, 11, 7, 196, 32, 246, 142, 36, 11, 7, 196, 88, 147, 142, 36, 11, 7,
+			196, 32, 246, 142, 36, 11, 0, 31, 69, 77, 160, 86, 4, 208, 89, 108, 84, 108, 65, 15, 57, 114, 52, 114, 91, 108, 0, 11, 81, 106,
+			195, 161, 114, 195, 161, 115, 97, 32, 8, 197, 57, 147, 205, 60, 208, 11, 8, 197, 137, 37, 10, 172, 176, 11, 8, 197, 48, 83, 20, 20,
+			208, 11, 0, 10, 199, 32, 148, 132, 21, 67, 162, 16, 11, 14, 203, 60, 179, 211, 80, 83, 5, 24, 243, 142, 4, 192, 11, 9, 198, 77,
+			161, 77, 52, 83, 0, 11, 5, 194, 80, 144, 11, 11, 66, 92, 48, 84, 113, 119, 113, 0, 42, 42, 0, 21, 67, 8, 18, 128, 71, 108,
+			57, 10, 6, 15, 84, 108, 50, 0, 11, 81, 118, 97, 110, 32, 19, 67, 8, 18, 128, 71, 108, 57, 10, 6, 15, 108, 88, 0, 11, 81,
+			97, 122, 32, 20, 67, 8, 18, 128, 71, 108, 57, 15, 84, 39, 55, 47, 0, 81, 118, 111, 108, 116, 32, 12, 201, 44, 243, 134, 36, 117,
+			82, 112, 50, 103, 11, 6, 195, 32, 81, 217, 11, 6, 195, 8, 18, 128, 11, 0, 8, 197, 60, 192, 211, 156, 176, 11, 7, 196, 57, 144,
+			75, 168, 11, 0, 14, 203, 36, 229, 34, 104, 216, 142, 100, 82, 206, 136, 192, 11, 0, 13, 202, 46, 35, 153, 77, 161, 82, 149, 65, 78,
+			36, 11, 0, 12, 201, 53, 196, 207, 17, 1, 82, 12, 85, 0, 11, 9, 198, 46, 36, 5, 104, 232, 139, 11, 12, 201, 16, 148, 218, 81,
+			34, 66, 168, 50, 103, 11, 8, 197, 20, 194, 168, 81, 64, 11, 8, 197, 50, 36, 5, 81, 64, 11, 12, 201, 13, 58, 212, 161, 37, 40,
+			44, 145, 192, 17, 0, 13, 2, 95, 34, 37, 72, 113, 88, 118, 57, 109, 55, 0, 11, 200, 44, 244, 141, 112, 230, 78, 4, 176, 11, 22,
+			68, 160, 194, 162, 44, 110, 57, 57, 113, 49, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 9, 198, 56, 20, 20, 113, 32, 129, 11,
+			6, 195, 88, 84, 148, 11, 0, 17, 2, 95, 33, 83, 109, 55, 49, 37, 114, 55, 47, 115, 57, 109, 55, 0, 8, 197, 58, 38, 142, 136,
+			176, 11, 12, 201, 28, 22, 132, 5, 55, 7, 56, 18, 192, 11, 8, 197, 89, 195, 1, 77, 160, 11, 6, 195, 46, 34, 192, 11, 8, 197,
+			90, 35, 20, 136, 176, 11, 6, 195, 42, 133, 20, 11, 0, 7, 66, 81, 144, 80, 113, 0, 11, 200, 48, 148, 212, 112, 167, 2, 4, 224,
+			11, 11, 200, 24, 244, 141, 112, 167, 2, 4, 224, 11, 6, 195, 137, 54, 128, 11, 0, 13, 2, 95, 39, 108, 48, 39, 89, 47, 52, 115,
+			83, 0, 8, 197, 81, 81, 14, 4, 176, 76, 9, 198, 13, 50, 78, 112, 196, 218, 11, 25, 68, 36, 198, 69, 56, 37, 57, 109, 50, 10,
+			6, 15, 71, 39, 55, 47, 0, 11, 81, 98, 111, 108, 116, 32, 31, 68, 60, 198, 65, 56, 39, 57, 108, 50, 10, 6, 15, 49, 113, 52,
+			72, 113, 91, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 32, 9, 198, 52, 147, 132, 20, 226, 201, 11, 11, 200, 65, 35, 194, 50,
+			35, 92, 40, 16, 11, 12, 201, 32, 19, 12, 28, 21, 39, 44, 21, 0, 11, 23, 68, 36, 198, 69, 56, 37, 57, 109, 50, 15, 89, 113,
+			48, 0, 11, 81, 115, 122, 195, 169, 112, 32, 8, 197, 81, 81, 14, 4, 176, 11, 7, 196, 60, 198, 65, 56, 11, 6, 195, 8, 19, 128,
+			72, 6, 195, 40, 19, 128, 15, 0, 13, 202, 52, 81, 211, 104, 244, 165, 81, 196, 207, 44, 11, 9, 198, 8, 85, 5, 28, 82, 192, 11,
+			27, 71, 32, 20, 218, 57, 195, 19, 104, 107, 108, 89, 50, 114, 55, 89, 15, 83, 109, 55, 0, 11, 81, 102, 101, 108, 32, 43, 76, 36,
+			225, 143, 72, 208, 84, 36, 181, 83, 56, 18, 192, 37, 50, 83, 39, 52, 10, 65, 108, 47, 37, 49, 40, 91, 50, 108, 49, 15, 49, 109,
+			55, 12, 0, 11, 81, 107, 101, 108, 108, 32, 7, 196, 25, 85, 14, 36, 11, 12, 201, 20, 195, 28, 81, 196, 220, 8, 19, 128, 11, 10,
+			199, 32, 20, 218, 57, 195, 19, 104, 11, 12, 137, 118, 101, 122, 101, 116, 197, 145, 106, 101, 11, 9, 198, 52, 243, 132, 80, 18, 192, 11,
+			8, 197, 42, 163, 137, 85, 48, 15, 0, 11, 200, 89, 196, 220, 72, 243, 14, 4, 176, 11, 12, 201, 82, 132, 148, 136, 225, 84, 136, 33,
+			78, 11, 13, 202, 20, 193, 75, 81, 35, 206, 36, 183, 10, 4, 11, 8, 197, 88, 84, 218, 20, 208, 11, 12, 201, 77, 170, 204, 21, 52,
+			197, 56, 82, 192, 11, 0, 14, 203, 46, 36, 22, 37, 49, 76, 21, 72, 130, 20, 224, 11, 9, 198, 88, 84, 147, 20, 230, 64, 11, 43,
+			71, 80, 20, 139, 149, 67, 212, 80, 47, 108, 52, 49, 112, 47, 39, 47, 12, 15, 10, 37, 72, 118, 57, 114, 52, 114, 91, 0, 11, 81,
+			105, 100, 197, 145, 106, 195, 161, 114, 195, 161, 115, 32, 14, 203, 4, 194, 193, 48, 208, 90, 113, 55, 2, 4, 224, 11, 9, 198, 37, 51,
+			69, 73, 74, 203, 11, 9, 198, 52, 20, 129, 16, 226, 64, 11, 9, 198, 20, 195, 69, 56, 226, 64, 11, 9, 198, 44, 146, 149, 80, 226,
+			64, 11, 9, 198, 24, 150, 133, 80, 226, 64, 11, 9, 198, 52, 20, 129, 16, 226, 64, 11, 9, 198, 36, 225, 21, 48, 226, 64, 11, 6,
+			195, 53, 194, 128, 15, 0, 7, 195, 88, 19, 128, 11, 17, 9, 198, 72, 83, 98, 48, 170, 203, 11, 11, 136, 195, 169, 114, 107, 101, 122,
+			197, 145, 11, 21, 67, 88, 19, 128, 84, 108, 50, 10, 6, 15, 37, 47, 12, 0, 11, 81, 105, 116, 116, 32, 32, 67, 88, 19, 128, 84,
+			108, 50, 23, 89, 111, 49, 91, 113, 81, 109, 65, 0, 11, 81, 115, 122, 195, 188, 107, 115, 195, 169, 103, 101, 109, 32, 18, 67, 88, 19,
+			128, 84, 108, 50, 23, 52, 114, 0, 11, 81, 114, 195, 161, 32, 23, 67, 88, 19, 128, 84, 108, 50, 23, 37, 72, 109, 57, 109, 0, 11,
+			81, 105, 100, 101, 106, 101, 32, 47, 72, 81, 195, 79, 28, 21, 15, 81, 64, 47, 114, 65, 39, 81, 108, 47, 39, 47, 12, 23, 49, 37,
+			108, 72, 114, 91, 23, 55, 109, 89, 0, 11, 82, 107, 105, 97, 100, 195, 161, 115, 32, 108, 101, 115, 122, 32, 11, 200, 81, 195, 79, 28,
+			21, 15, 81, 64, 11, 0, 15, 140, 110, 101, 118, 101, 108, 197, 145, 107, 110, 195, 169, 108, 11, 12, 201, 36, 229, 15, 57, 192, 201, 156,
+			160, 64, 11, 14, 139, 107, 101, 114, 101, 115, 197, 145, 106, 195, 188, 107, 11, 9, 198, 52, 81, 203, 137, 35, 137, 11, 11, 200, 77, 161,
+			82, 21, 67, 162, 56, 176, 11, 12, 201, 44, 151, 12, 50, 85, 28, 76, 243, 128, 11, 0, 17, 2, 95, 41, 57, 6, 39, 71, 88, 114,
+			52, 115, 57, 109, 55, 0, 27, 27, 69, 57, 146, 84, 56, 144, 67, 37, 47, 50, 37, 23, 108, 49, 12, 39, 52, 0, 11, 81, 97, 107,
+			107, 111, 114, 32, 9, 198, 29, 145, 82, 20, 184, 148, 11, 0, 17, 2, 95, 40, 71, 6, 108, 55, 88, 114, 52, 115, 57, 109, 55, 0,
+			27, 9, 198, 44, 244, 156, 74, 115, 0, 11, 11, 200, 137, 37, 34, 44, 83, 10, 172, 176, 11, 10, 199, 80, 19, 28, 48, 215, 14, 100,
+			11, 0, 6, 195, 8, 18, 201, 11, 6, 195, 24, 241, 217, 11, 12, 201, 168, 164, 129, 44, 86, 132, 137, 53, 0, 11, 6, 195, 76, 244,
+			128, 11, 6, 195, 56, 82, 201, 11, 11, 67, 8, 20, 128, 71, 108, 52, 0, 42, 42, 0, 9, 2, 95, 46, 48, 39, 50, 47, 0, 20,
+			145, 102, 114, 97, 107, 99, 105, 195, 179, 118, 101, 122, 101, 116, 197, 145, 106, 101, 11, 11, 200, 20, 196, 133, 56, 65, 90, 137, 48, 11,
+			0, 12, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 27, 14, 203, 80, 19, 28, 48, 179, 218, 156, 167, 22, 4, 192, 11, 13, 202, 46,
+			36, 218, 172, 200, 139, 20, 179, 162, 48, 11, 11, 200, 82, 132, 148, 136, 225, 84, 137, 64, 11, 12, 201, 52, 20, 129, 17, 103, 14, 100,
+			18, 84, 11, 12, 201, 77, 168, 139, 33, 198, 156, 10, 115, 0, 11, 14, 203, 77, 68, 129, 82, 33, 201, 112, 167, 22, 4, 192, 11, 7,
+			196, 24, 18, 193, 16, 11, 8, 197, 36, 65, 74, 136, 224, 11, 9, 197, 20, 193, 74, 136, 224, 15, 11, 0, 10, 2, 95, 44, 84, 109,
+			89, 122, 118, 0, 10, 199, 74, 129, 218, 149, 65, 78, 36, 11, 0, 9, 198, 29, 151, 18, 80, 167, 11, 11, 9, 198, 40, 21, 129, 76,
+			195, 205, 11, 6, 195, 81, 68, 192, 11, 8, 197, 8, 84, 218, 136, 192, 11, 9, 198, 80, 20, 148, 4, 195, 205, 11, 12, 67, 53, 36,
+			192, 65, 37, 89, 37, 89, 0, 25, 6, 195, 49, 68, 192, 15, 10, 2, 95, 51, 107, 114, 52, 39, 65, 0, 0, 12, 201, 16, 151, 11,
+			82, 179, 148, 21, 72, 147, 11, 9, 198, 173, 161, 77, 54, 113, 0, 11, 20, 68, 113, 53, 28, 44, 114, 91, 47, 114, 49, 23, 109, 55,
+			0, 11, 81, 101, 108, 32, 10, 2, 95, 50, 49, 109, 47, 12, 118, 0, 0, 13, 202, 32, 19, 28, 48, 42, 206, 80, 85, 34, 76, 11,
+			9, 198, 65, 35, 196, 84, 183, 12, 11, 22, 67, 46, 134, 148, 49, 110, 89, 47, 15, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108, 116,
+			32, 8, 197, 49, 197, 10, 112, 176, 11, 8, 197, 49, 197, 10, 112, 176, 11, 7, 196, 52, 20, 129, 16, 11, 7, 195, 46, 134, 148, 11,
+			17, 7, 2, 95, 49, 109, 79, 0, 0, 6, 195, 81, 195, 128, 11, 10, 199, 44, 244, 170, 4, 178, 193, 48, 11, 10, 2, 95, 48, 50,
+			40, 55, 55, 108, 0, 0, 8, 197, 88, 85, 20, 20, 176, 11, 9, 198, 81, 195, 65, 17, 71, 11, 11, 9, 198, 44, 148, 129, 44, 21,
+			1, 11, 9, 198, 76, 244, 143, 104, 21, 1, 11, 9, 198, 66, 35, 148, 20, 177, 78, 17, 8, 2, 95, 55, 107, 113, 121, 0, 0, 11,
+			200, 52, 243, 132, 32, 21, 14, 112, 176, 11, 9, 198, 88, 149, 28, 41, 197, 0, 11, 7, 196, 168, 164, 220, 28, 11, 8, 133, 110, 197,
+			145, 110, 105, 11, 9, 198, 112, 193, 15, 104, 21, 1, 11, 11, 200, 40, 21, 129, 76, 243, 20, 112, 176, 11, 8, 2, 95, 54, 107, 108,
+			121, 0, 0, 7, 2, 95, 53, 110, 121, 0, 0, 10, 199, 88, 19, 12, 156, 178, 193, 48, 11, 10, 199, 65, 196, 148, 60, 178, 193, 48,
+			11, 9, 198, 77, 163, 204, 29, 195, 0, 11, 8, 2, 95, 52, 50, 113, 79, 0, 0, 16, 2, 95, 59, 48, 39, 50, 47, 39, 91, 84,
+			109, 89, 122, 118, 0, 22, 67, 168, 118, 64, 116, 79, 10, 6, 15, 83, 109, 91, 47, 0, 11, 81, 102, 101, 115, 116, 32, 37, 67, 168,
+			118, 64, 116, 79, 10, 6, 15, 113, 52, 47, 109, 55, 65, 109, 89, 47, 109, 65, 0, 11, 81, 195, 169, 114, 116, 101, 108, 109, 101, 122,
+			116, 101, 109, 32, 35, 67, 168, 118, 64, 116, 79, 10, 6, 15, 113, 52, 47, 109, 55, 65, 109, 88, 109, 65, 0, 11, 81, 195, 169, 114,
+			116, 101, 108, 109, 101, 122, 101, 109, 32, 21, 67, 168, 118, 64, 116, 79, 23, 107, 37, 89, 37, 0, 11, 81, 104, 105, 115, 122, 105, 32,
+			35, 70, 137, 37, 5, 48, 209, 64, 113, 52, 47, 109, 55, 65, 109, 23, 83, 109, 55, 52, 115, 50, 37, 0, 11, 81, 102, 101, 108, 114,
+			195, 179, 110, 105, 32, 9, 198, 137, 37, 5, 48, 209, 64, 11, 6, 195, 82, 163, 0, 11, 6, 195, 168, 118, 64, 11, 0, 15, 2, 95,
+			58, 49, 109, 47, 12, 118, 91, 48, 39, 50, 47, 0, 30, 71, 77, 160, 66, 112, 198, 90, 156, 89, 108, 71, 114, 57, 88, 115, 23, 40,
+			47, 114, 50, 0, 11, 81, 117, 116, 195, 161, 110, 32, 10, 199, 36, 229, 15, 57, 192, 201, 156, 11, 0, 10, 199, 21, 33, 68, 54, 35,
+			153, 20, 11, 11, 200, 36, 225, 143, 72, 215, 3, 38, 112, 11, 11, 2, 95, 57, 49, 37, 55, 109, 50, 119, 0, 0, 9, 2, 95, 56,
+			67, 39, 55, 119, 0, 0, 13, 2, 95, 63, 49, 113, 52, 72, 118, 57, 109, 55, 0, 38, 67, 56, 17, 217, 50, 108, 79, 10, 6, 15,
+			65, 109, 81, 55, 109, 48, 109, 47, 113, 91, 47, 0, 11, 81, 109, 101, 103, 108, 101, 112, 101, 116, 195, 169, 115, 116, 32, 18, 143, 98,
+			195, 182, 110, 103, 195, 169, 115, 122, 197, 145, 98, 197, 145, 108, 11, 12, 201, 46, 179, 40, 56, 36, 226, 28, 113, 76, 11, 9, 198, 77,
+			167, 18, 52, 22, 167, 11, 6, 195, 56, 17, 217, 11, 6, 195, 32, 86, 128, 11, 0, 10, 2, 95, 62, 50, 108, 79, 39, 71, 0, 6,
+			195, 136, 197, 133, 11, 9, 198, 24, 82, 34, 72, 85, 0, 11, 0, 38, 68, 33, 196, 143, 52, 107, 114, 52, 39, 65, 23, 113, 84, 37,
+			81, 23, 71, 112, 52, 50, 37, 0, 11, 82, 195, 169, 118, 105, 103, 32, 98, 195, 173, 114, 110, 105, 32, 6, 195, 46, 131, 20, 11, 13,
+			202, 24, 83, 20, 20, 193, 80, 149, 65, 78, 36, 11, 10, 199, 81, 196, 135, 100, 19, 14, 36, 11, 10, 199, 113, 68, 1, 44, 243, 14,
+			36, 11, 6, 195, 18, 163, 20, 11, 7, 196, 4, 67, 212, 80, 11, 6, 195, 26, 35, 20, 11, 0, 11, 2, 95, 60, 49, 37, 91, 91,
+			109, 71, 0, 7, 196, 52, 84, 226, 48, 11, 41, 68, 52, 17, 193, 76, 65, 108, 81, 108, 91, 23, 107, 118, 65, 113, 52, 91, 113, 49,
+			55, 109, 47, 0, 11, 81, 104, 197, 145, 109, 195, 169, 114, 115, 195, 169, 107, 108, 101, 116, 32, 7, 196, 52, 17, 193, 76, 11, 0, 12,
+			201, 65, 35, 199, 72, 19, 79, 44, 21, 0, 11, 52, 73, 77, 160, 78, 44, 50, 103, 44, 21, 0, 89, 108, 50, 49, 119, 37, 115, 49,
+			108, 47, 15, 108, 55, 49, 108, 55, 65, 108, 88, 88, 108, 50, 108, 49, 0, 11, 81, 97, 108, 107, 97, 108, 109, 97, 122, 122, 97, 110,
+			97, 107, 32, 8, 197, 44, 21, 137, 13, 48, 11, 9, 198, 80, 84, 150, 21, 165, 133, 11, 8, 197, 72, 84, 43, 49, 64, 11, 0, 11,
+			200, 81, 196, 135, 100, 19, 14, 4, 176, 11, 9, 198, 10, 162, 148, 5, 66, 129, 11, 13, 138, 116, 101, 109, 101, 116, 197, 145, 98, 101,
+			110, 11, 6, 195, 4, 64, 84, 11, 6, 195, 64, 84, 148, 11, 6, 195, 76, 244, 148, 11, 13, 4, 95, 49, 113, 120, 109, 55, 91, 109,
+			57, 109, 0, 0, 29, 71, 32, 21, 28, 72, 246, 154, 4, 107, 108, 47, 114, 52, 39, 88, 88, 108, 23, 65, 109, 81, 0, 11, 81, 109,
+			101, 103, 32, 27, 69, 77, 169, 204, 77, 160, 89, 115, 55, 89, 23, 107, 39, 88, 88, 114, 0, 11, 81, 104, 111, 122, 122, 195, 161, 32,
+			8, 197, 77, 169, 204, 77, 160, 11, 0, 30, 6, 101, 108, 197, 145, 116, 116, 109, 55, 118, 47, 12, 23, 49, 110, 88, 110, 55, 0, 11,
+			81, 107, 195, 182, 122, 195, 182, 108, 32, 39, 6, 101, 108, 197, 145, 116, 116, 109, 55, 118, 47, 12, 23, 48, 40, 71, 55, 37, 49, 114,
+			55, 47, 108, 0, 11, 81, 112, 117, 98, 108, 105, 107, 195, 161, 108, 116, 97, 32, 9, 198, 81, 81, 10, 113, 67, 203, 11, 11, 134, 101,
+			108, 197, 145, 116, 116, 15, 17, 11, 18, 4, 195, 186, 46, 110, 116, 79, 50, 109, 84, 109, 88, 109, 47, 12, 0, 25, 0, 10, 199, 36,
+			112, 90, 60, 194, 156, 44, 11, 9, 198, 24, 148, 148, 5, 69, 129, 11, 10, 199, 44, 20, 8, 5, 66, 156, 44, 11, 13, 138, 114, 101,
+			110, 100, 197, 145, 114, 110, 101, 107, 11, 0, 14, 139, 107, 101, 114, 101, 115, 107, 101, 100, 197, 145, 107, 11, 13, 202, 81, 196, 147, 4,
+			64, 76, 60, 208, 129, 56, 11, 35, 70, 20, 208, 133, 72, 82, 192, 109, 65, 71, 109, 52, 109, 49, 23, 89, 114, 65, 114, 52, 108, 0,
+			11, 81, 115, 122, 195, 161, 109, 195, 161, 114, 97, 32, 7, 196, 172, 202, 206, 44, 11, 0, 18, 143, 115, 195, 188, 108, 108, 121, 101, 115,
+			122, 116, 197, 145, 98, 101, 110, 11, 38, 69, 44, 86, 133, 48, 144, 49, 109, 88, 109, 55, 37, 23, 108, 6, 23, 88, 109, 50, 113, 49,
+			109, 47, 0, 11, 82, 97, 32, 122, 101, 110, 195, 169, 107, 101, 116, 32, 9, 134, 100, 195, 182, 102, 197, 145, 11, 12, 201, 65, 34, 79,
+			72, 149, 28, 77, 48, 76, 11, 0, 40, 7, 110, 121, 101, 108, 118, 197, 177, 67, 109, 55, 84, 117, 23, 37, 91, 65, 109, 52, 47, 109,
+			47, 118, 49, 0, 11, 81, 105, 115, 109, 101, 114, 116, 101, 116, 197, 145, 107, 32, 12, 201, 24, 241, 204, 4, 194, 207, 104, 243, 64, 11,
+			11, 200, 32, 83, 25, 77, 169, 78, 136, 224, 11, 6, 195, 157, 39, 20, 11, 6, 195, 113, 39, 20, 11, 9, 198, 48, 85, 143, 56, 226,
+			64, 11, 13, 138, 100, 195, 169, 108, 101, 108, 197, 145, 116, 116, 17, 0, 8, 197, 72, 82, 140, 36, 176, 11, 12, 201, 77, 170, 22, 21,
+			69, 19, 136, 113, 75, 11, 65, 73, 169, 67, 85, 80, 21, 39, 8, 19, 128, 116, 47, 65, 40, 47, 108, 47, 115, 71, 108, 50, 23, 37,
+			91, 23, 108, 89, 47, 23, 47, 108, 50, 114, 76, 39, 57, 57, 57, 114, 49, 0, 11, 83, 105, 115, 32, 97, 122, 116, 32, 116, 97, 110,
+			195, 161, 99, 115, 111, 108, 106, 195, 161, 107, 32, 12, 201, 49, 197, 15, 28, 21, 39, 8, 19, 128, 11, 8, 197, 81, 81, 10, 84, 176,
+			11, 9, 198, 64, 192, 84, 24, 244, 141, 11, 6, 195, 172, 118, 64, 11, 0, 8, 197, 45, 105, 212, 113, 64, 11, 8, 197, 49, 195, 153,
+			113, 64, 11, 8, 197, 17, 39, 22, 113, 64, 11, 10, 199, 52, 81, 206, 137, 166, 171, 44, 11, 9, 198, 137, 9, 84, 137, 53, 0, 11,
+			0, 33, 4, 95, 226, 128, 163, 107, 114, 52, 39, 65, 89, 110, 81, 108, 55, 108, 49, 116, 83, 109, 55, 91, 39, 52, 39, 55, 114, 91,
+			57, 109, 55, 0, 9, 198, 21, 49, 84, 8, 83, 128, 11, 9, 198, 80, 83, 5, 24, 243, 128, 11, 8, 197, 80, 20, 148, 60, 208, 11,
+			9, 134, 116, 197, 177, 110, 197, 145, 11, 8, 197, 32, 149, 20, 20, 208, 11, 0, 15, 4, 95, 226, 128, 162, 55, 37, 91, 47, 108, 57,
+			109, 55, 0, 9, 198, 80, 84, 212, 90, 36, 128, 11, 8, 197, 81, 39, 7, 113, 32, 11, 7, 196, 26, 35, 153, 80, 11, 10, 135, 104,
+			195, 169, 116, 102, 197, 145, 15, 0, 10, 199, 168, 164, 129, 149, 39, 19, 4, 11, 0, 20, 67, 136, 197, 5, 113, 55, 47, 109, 23, 65,
+			109, 81, 0, 11, 81, 109, 101, 103, 32, 10, 199, 58, 133, 133, 44, 81, 34, 76, 11, 9, 198, 28, 243, 132, 60, 195, 196, 11, 7, 196,
+			53, 83, 139, 4, 11, 7, 132, 100, 197, 145, 108, 11, 0, 11, 136, 115, 122, 197, 177, 114, 197, 145, 107, 11, 9, 198, 53, 85, 1, 80,
+			224, 75, 11, 0, 19, 4, 95, 226, 128, 166, 48, 39, 50, 47, 48, 39, 50, 47, 48, 39, 50, 47, 0, 9, 198, 82, 35, 92, 74, 115,
+			0, 11, 8, 197, 49, 197, 20, 112, 224, 11, 0, 19, 67, 85, 48, 128, 195, 186, 101, 115, 98, 195, 169, 116, 0, 44, 29, 81, 116, 32,
+			19, 67, 85, 48, 128, 195, 186, 101, 115, 98, 195, 169, 110, 0, 44, 29, 81, 110, 32, 20, 67, 85, 48, 128, 195, 186, 101, 115, 98, 195,
+			169, 110, 0, 44, 29, 42, 81, 110, 32, 9, 198, 32, 83, 25, 21, 69, 5, 11, 6, 195, 16, 80, 192, 15, 0, 16, 141, 101, 114, 101,
+			100, 109, 195, 169, 110, 121, 101, 122, 197, 145, 11, 11, 200, 89, 195, 12, 4, 195, 137, 84, 176, 11, 11, 200, 46, 134, 144, 60, 229, 10,
+			113, 64, 11, 11, 200, 46, 35, 153, 77, 161, 82, 149, 64, 11, 7, 196, 80, 81, 217, 20, 11, 15, 204, 52, 81, 211, 105, 195, 76, 112,
+			197, 1, 80, 226, 64, 11, 8, 197, 14, 33, 226, 73, 64, 11, 7, 196, 52, 81, 217, 20, 11, 7, 196, 149, 35, 156, 44, 11, 7, 196,
+			149, 34, 156, 44, 11, 7, 132, 98, 197, 145, 108, 72, 0, 15, 4, 95, 226, 128, 155, 37, 72, 113, 88, 118, 57, 109, 55, 0, 9, 198,
+			46, 36, 132, 137, 49, 73, 11, 0, 15, 4, 95, 226, 128, 154, 37, 72, 113, 88, 118, 57, 109, 55, 0, 9, 198, 64, 243, 148, 40, 18,
+			78, 11, 12, 201, 80, 83, 5, 66, 179, 34, 76, 82, 192, 11, 6, 195, 24, 154, 128, 11, 0, 25, 4, 95, 226, 128, 153, 57, 39, 71,
+			12, 39, 55, 72, 108, 55, 37, 37, 72, 113, 88, 118, 57, 109, 55, 0, 9, 198, 56, 17, 217, 44, 244, 170, 11, 13, 138, 118, 195, 169,
+			103, 122, 197, 145, 100, 105, 107, 11, 10, 199, 28, 243, 132, 60, 197, 28, 44, 11, 6, 195, 36, 65, 64, 11, 13, 202, 80, 84, 136, 21,
+			52, 226, 30, 178, 197, 80, 11, 9, 198, 20, 195, 79, 56, 69, 1, 11, 9, 198, 24, 148, 148, 5, 69, 1, 11, 6, 195, 46, 35, 64,
+			11, 6, 195, 36, 65, 64, 11, 0, 24, 4, 95, 226, 128, 152, 71, 108, 55, 39, 55, 72, 108, 55, 37, 37, 72, 113, 88, 118, 57, 109,
+			55, 0, 12, 201, 52, 81, 194, 149, 162, 1, 82, 112, 78, 11, 10, 199, 49, 197, 8, 5, 73, 193, 44, 11, 11, 136, 114, 101, 110, 100,
+			197, 145, 114, 116, 11, 7, 196, 56, 82, 197, 52, 11, 0, 15, 4, 95, 226, 128, 159, 37, 72, 113, 88, 118, 57, 109, 55, 0, 11, 200,
+			46, 36, 5, 77, 56, 135, 20, 176, 11, 9, 198, 46, 36, 132, 137, 49, 77, 11, 0, 15, 4, 95, 226, 128, 158, 37, 72, 113, 88, 118,
+			57, 109, 55, 0, 12, 201, 77, 170, 22, 21, 68, 226, 28, 82, 192, 11, 12, 201, 80, 83, 5, 66, 85, 34, 77, 49, 76, 11, 9, 198,
+			52, 243, 132, 80, 19, 64, 11, 0, 15, 4, 95, 226, 128, 157, 37, 72, 113, 88, 118, 57, 109, 55, 0, 19, 2, 95, 91, 67, 6, 37,
+			47, 115, 89, 110, 81, 55, 109, 47, 109, 91, 0, 27, 0, 15, 4, 95, 226, 128, 156, 37, 72, 113, 88, 118, 57, 109, 55, 0, 13, 202,
+			32, 19, 135, 78, 163, 25, 61, 165, 28, 44, 11, 15, 140, 114, 101, 110, 100, 115, 122, 101, 114, 114, 197, 145, 108, 11, 11, 5, 95, 49,
+			77, 49, 101, 109, 88, 52, 0, 0, 18, 4, 95, 226, 128, 147, 81, 39, 50, 72, 39, 55, 108, 47, 57, 109, 55, 0, 11, 200, 89, 195,
+			12, 4, 194, 207, 106, 112, 11, 0, 14, 203, 65, 35, 199, 72, 19, 74, 4, 146, 203, 4, 192, 11, 8, 133, 115, 122, 197, 177, 107, 11,
+			17, 66, 88, 144, 107, 108, 47, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 14, 2, 95, 95, 108, 55, 114, 107, 116, 88, 114, 91,
+			0, 27, 18, 143, 116, 101, 108, 101, 112, 104, 101, 108, 121, 195, 169, 114, 197, 145, 108, 11, 30, 67, 76, 242, 192, 91, 39, 49, 23, 47,
+			111, 52, 109, 55, 65, 109, 47, 0, 11, 81, 116, 195, 188, 114, 101, 108, 109, 101, 116, 32, 6, 195, 77, 169, 78, 11, 6, 195, 76, 242,
+			192, 11, 0, 34, 67, 80, 85, 20, 47, 109, 47, 12, 23, 108, 88, 10, 6, 15, 111, 79, 71, 109, 50, 0, 11, 82, 97, 122, 32, 195,
+			188, 103, 121, 98, 101, 110, 32, 47, 67, 88, 85, 20, 84, 109, 47, 12, 23, 108, 23, 47, 114, 34, 79, 108, 55, 114, 91, 39, 49, 71,
+			108, 50, 0, 11, 82, 97, 32, 116, 195, 161, 114, 103, 121, 97, 108, 195, 161, 115, 111, 107, 98, 97, 110, 32, 11, 200, 80, 84, 218, 80,
+			83, 43, 56, 176, 11, 6, 195, 82, 37, 133, 11, 8, 197, 80, 85, 20, 136, 176, 11, 8, 197, 32, 149, 20, 136, 176, 11, 6, 195, 88,
+			85, 20, 11, 6, 195, 80, 85, 20, 11, 0, 19, 2, 95, 93, 88, 6, 114, 52, 115, 89, 110, 81, 55, 109, 47, 109, 91, 0, 27, 7,
+			196, 32, 85, 5, 80, 11, 32, 68, 32, 85, 5, 80, 107, 109, 47, 109, 47, 23, 107, 108, 89, 50, 114, 55, 47, 0, 11, 81, 104, 97,
+			115, 122, 110, 195, 161, 108, 116, 32, 20, 145, 108, 101, 104, 101, 116, 197, 145, 115, 195, 169, 103, 101, 105, 114, 197, 145, 108, 11, 7, 196,
+			24, 241, 193, 80, 11, 7, 196, 20, 197, 133, 80, 11, 7, 196, 33, 197, 28, 56, 11, 7, 196, 20, 197, 133, 80, 11, 6, 195, 78, 179,
+			20, 11, 18, 66, 90, 128, 84, 6, 109, 90, 72, 15, 10, 6, 110, 89, 122, 109, 0, 25, 0, 14, 203, 8, 87, 12, 50, 85, 28, 76,
+			242, 206, 112, 192, 11, 9, 198, 20, 195, 28, 81, 196, 212, 11, 9, 198, 20, 194, 156, 73, 196, 212, 11, 13, 7, 95, 35, 45, 195, 161,
+			114, 97, 114, 52, 108, 0, 15, 5, 95, 49, 77, 49, 111, 109, 88, 52, 109, 72, 37, 49, 0, 0, 9, 198, 21, 54, 139, 161, 161, 64,
+			11, 8, 197, 80, 19, 28, 49, 64, 11, 9, 198, 113, 71, 12, 49, 196, 212, 11, 6, 195, 56, 18, 192, 11, 0, 17, 4, 95, 226, 128,
+			148, 49, 84, 37, 52, 47, 65, 112, 50, 40, 89, 0, 34, 70, 24, 244, 132, 149, 69, 129, 83, 39, 52, 72, 112, 47, 84, 108, 23, 108,
+			6, 23, 89, 115, 47, 0, 11, 82, 97, 32, 115, 122, 195, 179, 116, 32, 16, 205, 160, 226, 207, 72, 215, 14, 101, 160, 84, 60, 179, 156,
+			48, 11, 0, 11, 3, 95, 97, 114, 6, 108, 52, 108, 71, 0, 7, 2, 95, 97, 108, 12, 0, 8, 197, 89, 196, 138, 112, 176, 11, 37,
+			70, 76, 146, 197, 74, 179, 20, 91, 37, 49, 109, 52, 111, 55, 47, 23, 49, 37, 83, 39, 81, 50, 39, 65, 0, 11, 81, 107, 105, 102,
+			111, 103, 110, 111, 109, 32, 8, 197, 34, 85, 138, 112, 176, 11, 9, 198, 61, 37, 143, 76, 224, 75, 11, 10, 199, 173, 163, 5, 80, 82,
+			194, 20, 11, 12, 201, 80, 84, 212, 172, 193, 84, 56, 82, 192, 11, 8, 133, 110, 197, 145, 116, 116, 11, 0, 10, 2, 95, 96, 47, 39,
+			65, 48, 108, 0, 26, 67, 137, 97, 83, 113, 84, 109, 91, 23, 109, 65, 71, 109, 52, 47, 0, 11, 81, 101, 109, 98, 101, 114, 116, 32,
+			24, 67, 137, 97, 83, 113, 84, 109, 91, 23, 109, 65, 71, 109, 52, 0, 11, 81, 101, 109, 98, 101, 114, 32, 27, 67, 137, 97, 83, 113,
+			84, 109, 91, 23, 49, 37, 91, 83, 37, 116, 0, 11, 81, 107, 105, 115, 102, 105, 195, 186, 32, 21, 67, 137, 97, 83, 113, 84, 109, 91,
+			23, 83, 37, 116, 0, 11, 81, 102, 105, 195, 186, 32, 28, 67, 137, 97, 83, 113, 84, 109, 91, 23, 49, 37, 91, 55, 114, 67, 0, 11,
+			81, 107, 105, 115, 108, 195, 161, 110, 121, 32, 22, 67, 137, 97, 83, 113, 84, 109, 91, 23, 55, 114, 67, 0, 11, 81, 108, 195, 161, 110,
+			121, 32, 19, 67, 137, 97, 83, 113, 84, 109, 91, 23, 50, 118, 0, 11, 81, 110, 197, 145, 32, 25, 67, 137, 97, 83, 113, 84, 109, 91,
+			23, 83, 113, 52, 83, 37, 0, 11, 81, 102, 195, 169, 114, 102, 105, 32, 29, 67, 137, 97, 83, 113, 84, 109, 91, 23, 49, 37, 91, 83,
+			37, 116, 47, 0, 11, 81, 107, 105, 115, 102, 105, 195, 186, 116, 32, 23, 67, 137, 97, 83, 113, 84, 109, 91, 23, 83, 37, 116, 47, 0,
+			11, 81, 102, 105, 195, 186, 116, 32, 30, 67, 137, 97, 83, 113, 84, 109, 91, 23, 49, 37, 91, 55, 114, 67, 47, 0, 11, 81, 107, 105,
+			115, 108, 195, 161, 110, 121, 116, 32, 24, 67, 137, 97, 83, 113, 84, 109, 91, 23, 55, 114, 67, 47, 0, 11, 81, 108, 195, 161, 110, 121,
+			116, 32, 23, 67, 137, 97, 83, 113, 84, 109, 91, 23, 50, 118, 52, 109, 0, 11, 81, 110, 197, 145, 114, 101, 32, 29, 67, 137, 97, 83,
+			113, 84, 109, 91, 23, 83, 113, 52, 83, 37, 52, 108, 0, 11, 81, 102, 195, 169, 114, 102, 105, 114, 97, 32, 29, 67, 137, 97, 83, 113,
+			84, 109, 91, 23, 49, 37, 91, 83, 37, 116, 47, 0, 11, 81, 107, 105, 115, 102, 105, 195, 186, 116, 32, 27, 67, 137, 97, 83, 113, 84,
+			109, 91, 23, 49, 37, 91, 83, 37, 116, 0, 11, 81, 107, 105, 115, 102, 105, 195, 186, 32, 13, 138, 195, 182, 116, 108, 101, 116, 116, 197,
+			145, 108, 11, 34, 67, 137, 97, 83, 113, 84, 109, 91, 23, 47, 114, 65, 39, 81, 108, 47, 114, 91, 0, 11, 81, 116, 195, 161, 109, 111,
+			103, 97, 116, 195, 161, 115, 32, 30, 67, 137, 97, 83, 113, 84, 109, 91, 15, 49, 39, 52, 114, 71, 115, 55, 0, 11, 81, 107, 111, 114,
+			195, 161, 98, 195, 179, 108, 32, 29, 67, 137, 97, 83, 113, 84, 109, 91, 15, 79, 109, 52, 109, 49, 109, 47, 0, 11, 81, 103, 121, 101,
+			114, 101, 107, 101, 116, 32, 6, 195, 137, 97, 83, 11, 10, 199, 80, 20, 148, 113, 55, 18, 4, 11, 10, 199, 136, 164, 218, 4, 183, 18,
+			4, 17, 0, 34, 71, 32, 18, 148, 61, 69, 28, 44, 107, 108, 57, 47, 39, 47, 12, 114, 49, 23, 84, 113, 81, 52, 109, 0, 11, 81,
+			118, 195, 169, 103, 114, 101, 32, 46, 72, 56, 82, 34, 105, 56, 135, 8, 80, 50, 109, 107, 113, 91, 12, 113, 81, 71, 109, 10, 6, 15,
+			111, 47, 49, 110, 88, 110, 47, 12, 0, 11, 81, 195, 188, 116, 107, 195, 182, 122, 195, 182, 116, 116, 32, 11, 200, 36, 179, 206, 82, 35,
+			92, 72, 16, 11, 11, 200, 65, 35, 194, 50, 35, 92, 72, 16, 11, 12, 201, 80, 84, 171, 48, 85, 5, 44, 85, 0, 11, 10, 199, 80,
+			17, 204, 4, 194, 156, 44, 11, 12, 201, 57, 146, 76, 89, 195, 165, 81, 196, 212, 11, 9, 198, 88, 19, 1, 32, 245, 129, 11, 0, 11,
+			200, 77, 167, 13, 49, 194, 156, 72, 16, 11, 40, 8, 109, 105, 101, 108, 197, 145, 116, 116, 65, 37, 109, 55, 118, 47, 12, 23, 83, 39,
+			57, 47, 108, 47, 50, 114, 0, 11, 81, 102, 111, 108, 121, 116, 97, 116, 110, 195, 161, 32, 12, 137, 107, 195, 182, 108, 116, 197, 145, 114,
+			101, 11, 8, 197, 32, 149, 20, 172, 176, 11, 8, 197, 32, 149, 20, 172, 176, 11, 0, 6, 2, 95, 101, 109, 0, 9, 198, 88, 148, 211,
+			106, 178, 192, 11, 0, 13, 202, 24, 83, 142, 80, 20, 148, 113, 55, 18, 4, 11, 12, 201, 81, 195, 79, 28, 21, 28, 77, 48, 76, 11,
+			11, 200, 65, 33, 70, 21, 39, 12, 40, 16, 11, 10, 199, 44, 144, 162, 46, 179, 22, 20, 11, 0, 12, 201, 20, 118, 69, 105, 65, 84,
+			137, 49, 78, 11, 12, 201, 20, 118, 69, 105, 65, 84, 137, 49, 78, 11, 32, 73, 20, 118, 69, 105, 65, 84, 137, 49, 78, 109, 79, 12,
+			109, 89, 47, 109, 47, 113, 91, 109, 50, 23, 37, 91, 0, 11, 81, 105, 115, 32, 16, 205, 82, 132, 150, 136, 230, 74, 5, 96, 83, 48,
+			21, 15, 80, 11, 12, 201, 44, 145, 143, 29, 196, 207, 49, 71, 11, 11, 0, 34, 73, 112, 195, 1, 66, 85, 15, 81, 71, 11, 114, 55,
+			12, 108, 48, 112, 47, 39, 47, 12, 114, 49, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32, 56, 11, 105, 100, 197, 145, 106, 195, 161,
+			114, 195, 161, 115, 37, 72, 118, 57, 114, 52, 114, 91, 23, 55, 109, 89, 23, 108, 23, 57, 109, 55, 12, 109, 65, 88, 118, 0, 11, 83,
+			108, 101, 115, 122, 32, 97, 32, 106, 101, 108, 108, 101, 109, 122, 197, 145, 32, 9, 198, 10, 179, 148, 21, 67, 137, 11, 15, 140, 102, 101,
+			108, 195, 188, 108, 101, 116, 114, 197, 145, 108, 11, 0, 10, 199, 40, 83, 5, 57, 72, 147, 20, 11, 6, 195, 77, 168, 148, 11, 0, 10,
+			199, 17, 39, 7, 84, 199, 19, 4, 11, 17, 142, 109, 197, 177, 107, 195, 182, 100, 195, 169, 115, 114, 197, 145, 108, 11, 7, 196, 78, 163,
+			25, 80, 11, 0, 10, 199, 36, 195, 5, 82, 34, 197, 76, 11, 11, 200, 161, 52, 218, 20, 113, 75, 21, 64, 11, 34, 70, 24, 83, 28,
+			48, 199, 19, 83, 109, 55, 114, 55, 12, 114, 91, 23, 89, 109, 52, 37, 50, 47, 0, 11, 81, 115, 122, 101, 114, 105, 110, 116, 32, 11,
+			200, 81, 195, 79, 28, 21, 28, 76, 16, 11, 11, 200, 173, 161, 78, 21, 65, 75, 21, 64, 11, 11, 200, 8, 83, 153, 168, 165, 28, 76,
+			16, 11, 7, 196, 160, 227, 133, 44, 11, 0, 9, 198, 72, 83, 132, 20, 197, 0, 11, 12, 137, 102, 101, 108, 101, 108, 197, 145, 115, 101,
+			11, 10, 199, 89, 195, 1, 77, 165, 28, 76, 11, 8, 197, 160, 234, 11, 21, 64, 11, 10, 199, 81, 195, 79, 28, 21, 28, 76, 11, 11,
+			200, 20, 118, 69, 57, 37, 72, 113, 48, 17, 0, 46, 10, 104, 111, 114, 100, 101, 114, 101, 106, 197, 177, 107, 39, 52, 72, 109, 52, 109,
+			57, 117, 23, 49, 113, 52, 72, 113, 91, 71, 109, 50, 0, 11, 81, 107, 195, 169, 114, 100, 195, 169, 115, 98, 101, 110, 32, 7, 196, 89,
+			196, 143, 52, 11, 7, 196, 66, 35, 4, 4, 11, 10, 199, 8, 87, 12, 50, 85, 28, 76, 11, 7, 196, 66, 35, 4, 4, 11, 6, 195,
+			18, 131, 148, 11, 0, 12, 3, 95, 104, 101, 107, 6, 113, 71, 109, 52, 0, 9, 198, 8, 20, 156, 80, 167, 20, 11, 10, 199, 80, 84,
+			141, 20, 195, 133, 44, 11, 11, 200, 8, 84, 218, 21, 38, 162, 76, 80, 11, 9, 198, 53, 83, 139, 112, 167, 20, 11, 0, 7, 2, 95,
+			115, 109, 91, 0, 11, 200, 80, 84, 141, 136, 177, 75, 21, 64, 11, 11, 200, 161, 52, 218, 20, 170, 14, 56, 144, 11, 11, 200, 44, 81,
+			34, 49, 145, 75, 21, 64, 11, 11, 200, 40, 83, 26, 137, 49, 75, 21, 64, 11, 7, 196, 42, 115, 129, 44, 11, 10, 4, 95, 50, 48,
+			101, 107, 40, 89, 0, 0, 8, 197, 44, 244, 170, 4, 176, 11, 40, 70, 8, 80, 211, 172, 197, 0, 71, 109, 76, 111, 55, 47, 23, 113,
+			52, 47, 113, 49, 113, 50, 109, 49, 0, 11, 81, 195, 169, 114, 116, 195, 169, 107, 195, 169, 110, 101, 107, 32, 47, 12, 107, 195, 169, 114,
+			100, 197, 145, 195, 173, 118, 101, 116, 49, 113, 52, 72, 118, 112, 84, 109, 47, 23, 49, 113, 89, 112, 47, 109, 50, 37, 0, 11, 81, 107,
+			195, 169, 115, 122, 195, 173, 116, 101, 110, 105, 32, 49, 12, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101, 116, 49, 113, 52, 72, 118,
+			112, 84, 109, 47, 23, 49, 113, 89, 112, 47, 109, 50, 109, 49, 0, 11, 81, 107, 195, 169, 115, 122, 195, 173, 116, 101, 110, 101, 107, 32,
+			9, 198, 20, 208, 133, 73, 33, 76, 11, 8, 197, 26, 35, 14, 20, 176, 11, 15, 140, 107, 195, 169, 114, 100, 197, 145, 195, 173, 118, 101,
+			116, 11, 8, 197, 74, 36, 218, 20, 176, 11, 7, 196, 58, 37, 133, 56, 11, 8, 197, 112, 195, 14, 4, 176, 11, 0, 11, 200, 45, 83,
+			20, 169, 39, 10, 113, 64, 11, 8, 197, 50, 36, 10, 20, 224, 11, 11, 4, 95, 104, 97, 99, 48, 37, 48, 108, 0, 0, 8, 197, 8,
+			83, 142, 20, 64, 11, 21, 66, 97, 96, 47, 37, 88, 109, 50, 110, 47, 12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 11, 200, 80,
+			20, 148, 32, 21, 14, 4, 176, 11, 12, 201, 32, 145, 193, 57, 148, 218, 112, 192, 64, 11, 30, 67, 25, 84, 129, 83, 40, 52, 108, 23,
+			72, 39, 55, 81, 39, 49, 108, 47, 0, 11, 81, 100, 111, 108, 103, 111, 107, 97, 116, 32, 6, 195, 25, 84, 129, 11, 12, 201, 4, 67,
+			205, 112, 230, 79, 105, 64, 64, 11, 6, 195, 21, 36, 133, 11, 0, 9, 198, 46, 36, 132, 21, 165, 5, 11, 11, 200, 32, 20, 218, 57,
+			195, 10, 84, 176, 11, 11, 200, 32, 83, 25, 104, 85, 2, 20, 224, 11, 11, 200, 36, 225, 37, 80, 245, 20, 4, 176, 11, 0, 9, 198,
+			34, 37, 22, 136, 120, 142, 11, 8, 197, 157, 39, 11, 36, 112, 11, 8, 197, 80, 21, 129, 49, 144, 11, 0, 8, 197, 32, 20, 131, 60,
+			192, 11, 11, 200, 32, 21, 1, 48, 243, 77, 4, 192, 11, 9, 198, 77, 170, 203, 78, 33, 192, 11, 12, 201, 77, 160, 75, 20, 208, 133,
+			72, 82, 64, 11, 9, 198, 77, 170, 203, 78, 33, 192, 11, 0, 18, 2, 95, 123, 49, 6, 109, 88, 72, 118, 49, 108, 48, 76, 39, 91,
+			0, 27, 35, 67, 5, 36, 129, 108, 52, 52, 108, 10, 6, 15, 47, 110, 52, 109, 49, 109, 72, 50, 37, 0, 11, 81, 116, 195, 182, 114,
+			101, 107, 101, 100, 110, 105, 32, 30, 67, 5, 36, 129, 108, 52, 52, 108, 10, 6, 15, 49, 113, 52, 57, 111, 49, 0, 11, 81, 107, 195,
+			169, 114, 106, 195, 188, 107, 32, 30, 67, 5, 36, 129, 108, 52, 52, 108, 23, 57, 40, 47, 39, 47, 12, 108, 65, 0, 11, 81, 106, 117,
+			116, 111, 116, 116, 97, 109, 32, 37, 67, 5, 36, 129, 108, 52, 52, 108, 23, 84, 39, 50, 108, 47, 49, 39, 88, 115, 108, 50, 0, 11,
+			81, 118, 111, 110, 97, 116, 107, 111, 122, 195, 179, 97, 110, 32, 18, 67, 5, 36, 129, 108, 52, 52, 108, 23, 37, 91, 0, 11, 81, 105,
+			115, 32, 23, 67, 61, 36, 129, 39, 52, 52, 108, 10, 6, 15, 108, 55, 114, 0, 11, 81, 97, 108, 195, 161, 32, 45, 67, 5, 36, 129,
+			108, 52, 52, 108, 23, 49, 109, 55, 12, 23, 39, 72, 108, 83, 37, 79, 109, 55, 50, 37, 0, 11, 82, 107, 101, 108, 108, 32, 111, 100,
+			97, 102, 105, 103, 121, 101, 108, 110, 105, 32, 35, 68, 88, 147, 28, 28, 84, 37, 55, 114, 81, 15, 72, 37, 76, 118, 91, 113, 81, 109,
+			0, 11, 81, 100, 105, 99, 115, 197, 145, 115, 195, 169, 103, 101, 32, 6, 195, 5, 36, 129, 11, 0, 9, 198, 90, 33, 218, 21, 69, 0,
+			11, 9, 198, 90, 33, 218, 21, 69, 0, 11, 9, 198, 32, 19, 28, 49, 197, 0, 11, 0, 20, 4, 95, 226, 128, 179, 72, 40, 48, 55,
+			108, 108, 48, 39, 89, 47, 52, 115, 83, 0, 10, 199, 20, 193, 40, 57, 65, 78, 36, 11, 9, 198, 44, 86, 133, 50, 36, 212, 11, 0,
+			15, 4, 95, 226, 128, 178, 108, 48, 39, 89, 47, 52, 115, 83, 0, 15, 204, 44, 243, 134, 36, 117, 82, 112, 50, 103, 41, 197, 0, 11,
+			10, 199, 46, 36, 218, 149, 65, 78, 36, 11, 0, 10, 199, 46, 132, 171, 48, 216, 142, 100, 11, 36, 73, 8, 243, 153, 60, 201, 84, 4,
+			226, 64, 71, 39, 67, 39, 55, 112, 47, 108, 50, 37, 23, 52, 108, 57, 47, 108, 0, 11, 81, 114, 97, 106, 116, 97, 32, 9, 198, 112,
+			195, 37, 81, 83, 139, 11, 12, 201, 8, 150, 143, 57, 153, 84, 4, 226, 64, 11, 12, 201, 8, 150, 148, 61, 57, 84, 4, 226, 64, 11,
+			15, 4, 95, 50, 48, 113, 107, 40, 89, 108, 72, 37, 49, 108, 0, 0, 14, 4, 95, 226, 128, 176, 109, 88, 52, 109, 55, 113, 49, 0,
+			9, 198, 88, 86, 162, 74, 37, 0, 11, 6, 195, 88, 149, 20, 11, 0, 16, 2, 95, 125, 84, 6, 113, 81, 49, 108, 48, 76, 39, 91,
+			0, 27, 9, 198, 41, 85, 15, 81, 64, 75, 11, 7, 196, 53, 85, 1, 80, 11, 0, 20, 2, 95, 124, 83, 111, 81, 12, 118, 55, 109,
+			81, 109, 91, 84, 39, 50, 108, 55, 0, 8, 197, 169, 54, 148, 4, 208, 11, 9, 198, 44, 244, 156, 8, 19, 128, 11, 10, 199, 16, 243,
+			7, 61, 163, 129, 44, 11, 10, 199, 80, 20, 148, 4, 195, 65, 44, 11, 6, 195, 45, 196, 128, 11, 6, 195, 41, 196, 128, 11, 7, 195,
+			9, 196, 128, 72, 8, 0, 27, 69, 20, 195, 106, 49, 64, 109, 55, 65, 116, 55, 47, 23, 113, 84, 109, 49, 0, 11, 81, 195, 169, 118,
+			101, 107, 32, 25, 69, 82, 35, 92, 40, 16, 47, 113, 65, 114, 57, 108, 23, 55, 109, 89, 0, 11, 81, 108, 101, 115, 122, 32, 8, 197,
+			82, 35, 92, 40, 16, 11, 0, 38, 68, 74, 33, 197, 56, 52, 113, 81, 109, 50, 23, 49, 37, 47, 108, 55, 114, 55, 47, 114, 49, 0,
+			11, 81, 107, 105, 116, 97, 108, 195, 161, 108, 116, 195, 161, 107, 32, 9, 198, 112, 195, 37, 80, 167, 11, 11, 0, 8, 197, 80, 19, 132,
+			148, 160, 11, 7, 132, 102, 197, 145, 115, 11, 7, 196, 77, 197, 130, 4, 11, 12, 201, 80, 20, 148, 4, 195, 92, 88, 19, 0, 11, 10,
+			199, 20, 197, 5, 72, 161, 68, 80, 11, 0, 7, 66, 105, 48, 90, 113, 0, 9, 198, 4, 167, 14, 48, 165, 75, 11, 7, 132, 98, 197,
+			145, 114, 11, 0, 12, 201, 77, 160, 66, 112, 198, 79, 105, 167, 11, 11, 11, 200, 36, 225, 21, 49, 196, 220, 72, 16, 11, 14, 139, 102,
+			101, 106, 108, 197, 145, 100, 195, 182, 116, 116, 11, 14, 139, 107, 101, 122, 100, 197, 145, 100, 195, 182, 116, 116, 11, 0, 31, 67, 4, 131,
+			204, 108, 107, 39, 55, 23, 84, 108, 50, 23, 48, 113, 50, 88, 0, 11, 82, 118, 97, 110, 32, 112, 195, 169, 110, 122, 32, 10, 199, 32,
+			83, 25, 104, 85, 2, 20, 11, 8, 197, 4, 176, 82, 77, 160, 11, 0, 10, 199, 76, 183, 12, 113, 165, 28, 44, 11, 16, 141, 101, 108,
+			107, 101, 122, 100, 197, 145, 100, 195, 182, 116, 116, 11, 14, 4, 95, 50, 48, 111, 107, 40, 89, 108, 72, 37, 49, 0, 0, 9, 198, 77,
+			161, 76, 48, 83, 64, 11, 17, 142, 109, 101, 103, 107, 101, 122, 100, 197, 145, 100, 195, 182, 116, 116, 11, 11, 200, 8, 150, 129, 48, 243,
+			77, 4, 192, 11, 17, 198, 72, 244, 211, 105, 83, 0, 11, 81, 102, 117, 116, 111, 116, 116, 32, 11, 200, 5, 52, 218, 60, 227, 153, 4,
+			192, 11, 17, 142, 195, 169, 114, 100, 101, 107, 108, 197, 145, 100, 195, 182, 116, 116, 11, 12, 67, 16, 245, 206, 72, 39, 58, 50, 0, 42,
+			42, 0, 8, 197, 80, 19, 153, 113, 64, 11, 9, 198, 24, 244, 132, 84, 195, 137, 11, 12, 201, 81, 196, 135, 100, 19, 28, 76, 243, 128,
+			11, 14, 139, 112, 101, 116, 197, 145, 102, 105, 114, 197, 145, 108, 11, 9, 198, 24, 83, 20, 20, 227, 137, 11, 9, 198, 32, 83, 25, 21,
+			163, 137, 11, 9, 198, 24, 244, 132, 84, 195, 137, 11, 9, 198, 32, 83, 25, 21, 163, 137, 11, 0, 53, 73, 80, 20, 148, 4, 195, 65,
+			44, 176, 76, 47, 108, 52, 47, 108, 55, 65, 108, 49, 12, 108, 55, 10, 6, 15, 49, 108, 48, 76, 39, 55, 108, 47, 71, 108, 50, 0,
+			11, 81, 107, 97, 112, 99, 115, 111, 108, 97, 116, 98, 97, 110, 32, 27, 4, 102, 197, 145, 116, 83, 118, 47, 23, 84, 114, 52, 40, 50,
+			49, 0, 11, 81, 118, 195, 161, 114, 117, 110, 107, 32, 36, 71, 58, 133, 133, 50, 36, 197, 76, 50, 110, 84, 109, 55, 113, 91, 109, 91,
+			23, 47, 109, 89, 47, 109, 47, 0, 11, 81, 116, 101, 115, 122, 116, 101, 116, 32, 9, 198, 8, 150, 148, 61, 48, 84, 11, 15, 140, 116,
+			195, 169, 116, 101, 108, 195, 169, 114, 197, 145, 108, 11, 7, 132, 102, 197, 145, 116, 11, 0, 16, 141, 116, 195, 182, 114, 118, 195, 169, 110,
+			121, 114, 197, 145, 108, 11, 9, 198, 36, 65, 71, 21, 57, 84, 11, 9, 198, 77, 167, 14, 18, 34, 193, 11, 0, 11, 200, 40, 241, 211,
+			104, 16, 156, 49, 144, 11, 30, 69, 4, 192, 80, 84, 192, 108, 55, 108, 48, 40, 55, 23, 84, 109, 50, 12, 37, 109, 0, 11, 81, 118,
+			101, 110, 110, 105, 101, 32, 8, 197, 4, 192, 80, 84, 192, 11, 0, 11, 200, 20, 211, 34, 44, 86, 148, 21, 64, 11, 10, 199, 72, 81,
+			201, 77, 165, 5, 72, 11, 9, 198, 28, 243, 132, 60, 195, 137, 11, 0, 33, 68, 76, 244, 156, 56, 91, 39, 52, 114, 50, 23, 49, 37,
+			72, 109, 52, 111, 55, 47, 0, 11, 81, 107, 105, 100, 101, 114, 195, 188, 108, 116, 32, 19, 144, 107, 195, 182, 122, 108, 101, 107, 101, 100,
+			195, 169, 115, 98, 197, 145, 108, 11, 9, 198, 46, 131, 153, 89, 71, 18, 11, 7, 196, 76, 244, 156, 56, 11, 0, 7, 196, 29, 196, 132,
+			4, 11, 36, 73, 44, 144, 68, 113, 51, 203, 10, 115, 0, 49, 37, 108, 72, 114, 91, 39, 49, 71, 115, 55, 23, 108, 107, 39, 88, 0,
+			11, 81, 97, 104, 104, 111, 122, 32, 13, 202, 77, 161, 77, 136, 198, 76, 22, 84, 156, 76, 11, 7, 196, 9, 196, 139, 36, 11, 0, 10,
+			199, 33, 197, 20, 137, 37, 28, 72, 11, 9, 198, 80, 18, 193, 72, 160, 64, 11, 9, 198, 4, 212, 21, 48, 192, 64, 11, 10, 199, 88,
+			20, 137, 112, 228, 211, 112, 11, 9, 198, 88, 149, 1, 80, 160, 64, 11, 9, 198, 53, 85, 1, 80, 160, 64, 11, 0, 10, 199, 21, 49,
+			84, 20, 176, 133, 56, 11, 7, 196, 136, 161, 162, 48, 17, 6, 195, 53, 64, 64, 13, 0, 7, 196, 85, 64, 220, 56, 11, 8, 197, 89,
+			195, 20, 4, 176, 11, 7, 196, 90, 33, 197, 104, 11, 7, 196, 32, 246, 148, 4, 11, 0, 14, 203, 52, 81, 206, 100, 147, 22, 112, 229,
+			76, 113, 48, 11, 9, 198, 4, 192, 80, 77, 162, 75, 11, 10, 199, 77, 170, 204, 21, 69, 5, 52, 11, 9, 198, 24, 83, 20, 137, 65,
+			76, 11, 9, 198, 90, 35, 9, 80, 82, 192, 11, 0, 9, 198, 137, 97, 75, 8, 83, 128, 11, 9, 198, 52, 83, 66, 73, 195, 128, 11,
+			45, 68, 20, 118, 73, 44, 109, 79, 12, 37, 49, 10, 6, 15, 47, 109, 55, 109, 48, 107, 109, 57, 113, 52, 118, 55, 0, 11, 81, 116,
+			101, 108, 101, 112, 104, 101, 108, 121, 195, 169, 114, 197, 145, 108, 32, 18, 207, 76, 18, 148, 157, 71, 10, 136, 179, 218, 80, 21, 39, 41,
+			195, 128, 11, 33, 68, 20, 118, 73, 44, 109, 79, 12, 37, 49, 23, 84, 109, 88, 109, 47, 118, 57, 109, 0, 11, 81, 118, 101, 122, 101,
+			116, 197, 145, 106, 101, 32, 40, 68, 20, 118, 73, 44, 109, 79, 12, 37, 49, 23, 49, 113, 48, 84, 37, 91, 109, 55, 118, 57, 109, 0,
+			11, 81, 107, 195, 169, 112, 118, 105, 115, 101, 108, 197, 145, 106, 101, 32, 9, 198, 64, 243, 148, 41, 195, 128, 11, 9, 198, 44, 20, 3,
+			77, 195, 128, 11, 7, 196, 20, 118, 73, 44, 11, 17, 66, 97, 128, 107, 116, 89, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 10,
+			199, 74, 36, 218, 48, 85, 5, 44, 11, 11, 200, 8, 85, 133, 104, 85, 20, 20, 176, 11, 10, 199, 80, 84, 133, 53, 68, 197, 56, 11,
+			9, 198, 46, 134, 168, 49, 65, 75, 11, 0, 8, 197, 161, 52, 218, 20, 112, 11, 40, 72, 60, 197, 129, 76, 21, 12, 4, 224, 39, 55,
+			84, 108, 91, 108, 47, 55, 108, 50, 23, 55, 109, 84, 113, 55, 52, 109, 0, 11, 81, 108, 101, 118, 195, 169, 108, 114, 101, 32, 11, 200,
+			36, 229, 5, 72, 225, 84, 20, 224, 11, 11, 200, 37, 51, 69, 72, 85, 12, 20, 224, 11, 8, 197, 50, 35, 153, 20, 112, 11, 9, 198,
+			65, 196, 148, 41, 197, 0, 11, 10, 199, 50, 36, 34, 76, 184, 142, 80, 11, 22, 67, 97, 134, 0, 107, 108, 52, 65, 37, 50, 119, 12,
+			35, 55, 0, 44, 42, 81, 97, 108, 32, 0, 12, 201, 32, 20, 218, 57, 195, 1, 81, 64, 76, 11, 12, 201, 24, 83, 11, 21, 42, 204,
+			80, 82, 192, 11, 5, 194, 112, 224, 72, 0, 14, 203, 80, 20, 1, 77, 165, 1, 48, 21, 20, 4, 192, 11, 7, 196, 56, 82, 201, 44,
+			11, 13, 4, 95, 35, 51, 50, 89, 6, 115, 49, 110, 88, 0, 0, 12, 201, 32, 149, 129, 80, 179, 218, 61, 69, 0, 11, 9, 198, 4,
+			192, 75, 84, 195, 137, 11, 0, 9, 198, 88, 147, 28, 29, 197, 0, 11, 8, 197, 57, 147, 205, 60, 224, 11, 8, 197, 64, 144, 67, 60,
+			224, 11, 13, 7, 95, 35, 45, 195, 169, 105, 103, 113, 37, 81, 0, 0, 6, 195, 74, 36, 192, 11, 6, 195, 46, 36, 192, 11, 0, 25,
+			69, 24, 244, 132, 84, 192, 83, 39, 34, 72, 40, 55, 23, 109, 55, 118, 0, 11, 81, 101, 108, 197, 145, 32, 9, 134, 116, 197, 145, 108,
+			101, 100, 11, 8, 197, 24, 244, 132, 84, 192, 11, 0, 10, 199, 24, 150, 133, 80, 226, 107, 44, 11, 23, 67, 97, 98, 64, 47, 37, 88,
+			109, 50, 107, 108, 47, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 26, 67, 97, 98, 64, 47, 37, 88, 109, 50, 107, 108, 47, 39, 72,
+			37, 49, 37, 81, 0, 44, 42, 81, 105, 103, 32, 0, 32, 67, 4, 210, 84, 108, 65, 37, 47, 23, 107, 108, 89, 50, 114, 55, 39, 49,
+			0, 11, 81, 104, 97, 115, 122, 110, 195, 161, 108, 111, 107, 32, 26, 67, 96, 150, 0, 47, 37, 88, 109, 50, 49, 37, 55, 109, 50, 119,
+			12, 109, 55, 0, 44, 42, 81, 101, 108, 32, 0, 12, 201, 46, 83, 156, 48, 21, 28, 88, 19, 0, 11, 8, 197, 36, 226, 220, 8, 32,
+			11, 0, 24, 67, 53, 196, 128, 65, 114, 52, 10, 6, 15, 108, 48, 52, 115, 0, 11, 81, 97, 112, 114, 195, 179, 32, 31, 67, 53, 196,
+			128, 65, 114, 52, 10, 6, 15, 109, 55, 113, 52, 47, 113, 49, 0, 11, 81, 101, 108, 195, 169, 114, 116, 195, 169, 107, 32, 49, 67, 53,
+			196, 128, 65, 114, 52, 10, 6, 15, 49, 109, 84, 113, 91, 71, 113, 10, 6, 15, 107, 108, 55, 12, 108, 50, 37, 0, 11, 82, 107, 101,
+			118, 195, 169, 115, 98, 195, 169, 32, 104, 97, 108, 108, 97, 110, 105, 32, 34, 67, 53, 196, 128, 65, 114, 52, 23, 55, 109, 107, 109, 76,
+			12, 113, 81, 109, 91, 0, 11, 81, 108, 101, 104, 101, 116, 115, 195, 169, 103, 101, 115, 32, 32, 67, 53, 196, 128, 65, 114, 52, 23, 65,
+			109, 81, 89, 39, 49, 39, 47, 12, 0, 11, 81, 109, 101, 103, 115, 122, 111, 107, 111, 116, 116, 32, 9, 198, 82, 35, 92, 88, 19, 0,
+			11, 32, 67, 53, 196, 128, 65, 114, 52, 23, 49, 39, 52, 114, 71, 52, 115, 55, 0, 11, 81, 107, 111, 114, 195, 161, 98, 98, 114, 195,
+			179, 108, 32, 23, 68, 76, 147, 131, 76, 91, 37, 50, 76, 15, 81, 39, 50, 72, 0, 11, 81, 103, 111, 110, 100, 32, 37, 68, 76, 147,
+			131, 76, 91, 37, 50, 76, 23, 109, 79, 12, 109, 47, 113, 52, 47, 113, 91, 0, 11, 81, 101, 103, 121, 101, 116, 195, 169, 114, 116, 195,
+			169, 115, 32, 23, 67, 53, 196, 128, 65, 114, 52, 15, 91, 39, 49, 108, 47, 0, 11, 81, 115, 111, 107, 97, 116, 32, 9, 198, 13, 58,
+			11, 44, 83, 128, 11, 9, 198, 60, 192, 211, 156, 32, 128, 11, 7, 196, 76, 147, 131, 76, 11, 6, 195, 89, 196, 128, 11, 6, 195, 53,
+			196, 128, 11, 6, 195, 113, 4, 128, 15, 0, 7, 196, 136, 195, 133, 44, 11, 12, 201, 32, 20, 218, 57, 195, 39, 44, 21, 0, 11, 10,
+			199, 57, 149, 71, 60, 69, 1, 56, 11, 7, 196, 80, 18, 193, 72, 11, 9, 198, 77, 73, 76, 85, 58, 128, 11, 11, 200, 28, 22, 132,
+			5, 55, 7, 61, 64, 11, 8, 195, 53, 66, 64, 13, 42, 42, 14, 68, 29, 148, 197, 88, 79, 109, 91, 109, 84, 0, 42, 42, 0, 25,
+			69, 26, 131, 40, 81, 64, 83, 110, 55, 110, 47, 12, 23, 114, 55, 12, 0, 11, 81, 195, 161, 108, 108, 32, 52, 74, 46, 133, 5, 48,
+			86, 133, 81, 68, 226, 28, 49, 110, 47, 109, 55, 109, 88, 109, 76, 12, 113, 81, 23, 71, 37, 89, 47, 39, 91, 112, 47, 108, 50, 37,
+			0, 11, 81, 98, 105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 105, 32, 22, 69, 26, 131, 40, 81, 64, 83, 110, 55, 110, 47, 12, 23,
+			37, 91, 0, 11, 81, 105, 115, 32, 14, 203, 72, 83, 132, 20, 195, 5, 56, 84, 211, 136, 112, 11, 7, 196, 40, 241, 220, 56, 11, 7,
+			196, 14, 83, 69, 56, 11, 9, 197, 46, 134, 168, 81, 64, 72, 17, 8, 197, 26, 131, 40, 81, 64, 11, 8, 197, 54, 129, 232, 81, 64,
+			11, 0, 26, 71, 77, 167, 13, 60, 197, 1, 52, 89, 114, 65, 39, 55, 47, 108, 65, 23, 49, 37, 0, 11, 81, 107, 105, 32, 8, 197,
+			46, 36, 138, 20, 224, 11, 9, 198, 37, 39, 14, 101, 83, 20, 11, 8, 197, 36, 112, 90, 112, 224, 11, 10, 199, 13, 50, 78, 112, 197,
+			1, 52, 11, 11, 200, 32, 17, 19, 21, 33, 71, 8, 80, 11, 5, 194, 160, 224, 11, 10, 135, 197, 145, 115, 122, 195, 169, 110, 15, 0,
+			9, 198, 77, 167, 14, 18, 34, 192, 11, 8, 197, 25, 194, 140, 8, 16, 11, 10, 199, 18, 131, 148, 161, 69, 5, 52, 11, 0, 14, 139,
+			101, 108, 197, 145, 102, 111, 114, 100, 117, 108, 116, 11, 10, 199, 77, 167, 13, 60, 197, 1, 44, 11, 9, 198, 28, 243, 132, 60, 194, 129,
+			11, 7, 132, 101, 108, 197, 145, 11, 7, 132, 101, 108, 197, 145, 11, 13, 67, 5, 67, 64, 114, 47, 113, 109, 65, 0, 42, 42, 0, 6,
+			195, 148, 120, 146, 11, 12, 201, 77, 161, 82, 88, 86, 133, 81, 65, 76, 11, 51, 73, 77, 161, 82, 88, 86, 133, 80, 82, 192, 89, 109,
+			52, 84, 109, 88, 109, 47, 109, 49, 23, 48, 114, 57, 114, 88, 107, 108, 47, 50, 108, 49, 0, 11, 81, 112, 195, 161, 108, 121, 195, 161,
+			122, 104, 97, 116, 110, 97, 107, 32, 8, 197, 46, 133, 40, 81, 64, 11, 13, 202, 24, 83, 19, 106, 115, 1, 49, 196, 207, 44, 11, 10,
+			199, 65, 35, 199, 72, 19, 66, 4, 11, 14, 139, 118, 195, 169, 103, 122, 197, 145, 100, 116, 101, 107, 11, 8, 197, 24, 244, 146, 113, 48,
+			11, 0, 27, 66, 168, 160, 116, 57, 10, 6, 15, 108, 71, 55, 108, 49, 39, 47, 0, 11, 81, 97, 98, 108, 97, 107, 111, 116, 32, 30,
+			66, 168, 160, 116, 57, 23, 65, 109, 81, 39, 55, 72, 114, 91, 47, 0, 11, 81, 109, 101, 103, 111, 108, 100, 195, 161, 115, 116, 32, 45,
+			13, 101, 108, 108, 101, 110, 197, 145, 114, 122, 195, 182, 116, 116, 109, 55, 12, 109, 50, 110, 52, 88, 110, 47, 12, 23, 109, 79, 91, 113,
+			81, 109, 0, 11, 81, 101, 103, 121, 115, 195, 169, 103, 101, 32, 20, 66, 168, 160, 116, 57, 15, 108, 57, 47, 115, 0, 11, 81, 97, 106,
+			116, 195, 179, 32, 9, 198, 44, 149, 1, 49, 195, 20, 11, 9, 198, 88, 150, 147, 29, 195, 20, 11, 5, 194, 168, 160, 11, 0, 14, 203,
+			36, 225, 146, 5, 53, 18, 84, 181, 42, 72, 16, 11, 0, 23, 69, 77, 160, 86, 113, 64, 89, 108, 84, 114, 47, 23, 91, 109, 65, 0,
+			11, 81, 115, 101, 109, 32, 9, 198, 61, 54, 148, 61, 163, 137, 11, 8, 197, 56, 20, 10, 113, 64, 11, 7, 196, 72, 244, 211, 104, 11,
+			0, 12, 137, 107, 195, 182, 116, 101, 110, 100, 197, 145, 11, 9, 198, 64, 147, 12, 4, 224, 84, 11, 9, 198, 40, 21, 129, 76, 192, 84,
+			11, 8, 197, 44, 81, 4, 20, 224, 17, 0, 13, 138, 98, 197, 145, 118, 195, 173, 116, 101, 110, 105, 11, 12, 201, 52, 81, 193, 48, 20,
+			37, 82, 114, 129, 11, 0, 14, 139, 107, 195, 182, 122, 108, 101, 107, 101, 100, 197, 145, 11, 11, 200, 45, 34, 84, 36, 181, 83, 77, 192,
+			11, 0, 30, 71, 52, 147, 137, 77, 165, 5, 72, 65, 37, 50, 37, 89, 47, 109, 52, 15, 84, 39, 55, 47, 0, 11, 81, 118, 111, 108,
+			116, 32, 12, 201, 20, 118, 69, 56, 201, 84, 20, 226, 64, 11, 10, 199, 52, 147, 137, 77, 165, 5, 72, 11, 6, 195, 74, 36, 218, 11,
+			0, 11, 200, 13, 50, 78, 112, 194, 149, 56, 176, 11, 10, 199, 64, 20, 129, 54, 37, 5, 72, 11, 0, 6, 195, 24, 154, 148, 11, 0,
+			10, 199, 89, 195, 20, 61, 162, 1, 80, 11, 0, 0, 8, 197, 52, 244, 206, 136, 176, 11, 13, 202, 77, 161, 77, 8, 84, 235, 48, 226,
+			107, 44, 11, 0, 8, 197, 89, 193, 217, 156, 176, 11, 0, 43, 70, 44, 83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 23, 71,
+			37, 89, 47, 39, 91, 112, 47, 108, 50, 37, 0, 11, 81, 98, 105, 122, 116, 111, 115, 195, 173, 116, 97, 110, 105, 32, 34, 70, 44, 83,
+			12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 23, 83, 37, 88, 109, 47, 50, 37, 0, 11, 81, 102, 105, 122, 101, 116, 110, 105, 32,
+			39, 70, 44, 83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 23, 108, 6, 15, 48, 52, 39, 81, 52, 108, 65, 0, 11, 82, 97,
+			32, 112, 114, 111, 103, 114, 97, 109, 32, 44, 70, 52, 81, 5, 72, 33, 64, 65, 109, 72, 109, 52, 71, 109, 23, 47, 109, 52, 109, 55,
+			113, 91, 113, 71, 109, 50, 0, 11, 81, 116, 101, 114, 101, 108, 195, 169, 115, 195, 169, 98, 101, 110, 32, 9, 198, 46, 84, 226, 72, 146,
+			192, 11, 37, 70, 44, 83, 12, 20, 225, 64, 49, 109, 55, 12, 109, 50, 109, 15, 49, 110, 84, 109, 47, 50, 37, 109, 0, 11, 81, 107,
+			195, 182, 118, 101, 116, 110, 105, 101, 32, 9, 198, 44, 83, 12, 20, 225, 64, 11, 0, 6, 195, 20, 197, 128, 11, 10, 199, 57, 147, 205,
+			80, 21, 39, 44, 11, 6, 195, 21, 53, 5, 17, 0, 7, 196, 105, 196, 15, 72, 11, 25, 68, 97, 98, 73, 36, 47, 37, 88, 109, 50,
+			67, 39, 55, 119, 12, 108, 55, 0, 44, 42, 81, 97, 108, 32, 0, 9, 198, 34, 115, 129, 64, 145, 192, 11, 6, 195, 113, 37, 0, 11,
+			0, 0, 51, 73, 24, 83, 8, 5, 54, 142, 112, 201, 203, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 49, 23, 55, 109, 47, 110, 55,
+			47, 113, 91, 109, 37, 47, 0, 11, 81, 108, 101, 116, 195, 182, 108, 116, 195, 169, 115, 101, 105, 116, 32, 72, 73, 24, 83, 142, 80, 20,
+			148, 61, 69, 0, 83, 109, 50, 12, 47, 108, 52, 47, 39, 47, 12, 23, 37, 91, 49, 39, 55, 114, 49, 23, 65, 111, 49, 110, 47, 12,
+			109, 47, 113, 91, 113, 47, 0, 11, 82, 105, 115, 107, 111, 108, 195, 161, 107, 32, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 195, 169,
+			115, 195, 169, 116, 32, 40, 73, 24, 83, 8, 5, 54, 142, 112, 201, 203, 83, 109, 55, 107, 108, 89, 50, 114, 55, 115, 49, 23, 57, 110,
+			50, 12, 109, 49, 0, 11, 81, 106, 195, 182, 110, 110, 101, 107, 32, 10, 199, 24, 241, 193, 16, 128, 84, 156, 11, 6, 195, 29, 5, 64,
+			13, 0, 45, 71, 80, 19, 165, 80, 19, 132, 156, 47, 108, 50, 112, 47, 108, 50, 72, 115, 23, 37, 91, 65, 109, 52, 109, 47, 109, 49,
+			109, 47, 0, 11, 81, 105, 115, 109, 101, 114, 101, 116, 101, 107, 101, 116, 32, 11, 200, 25, 85, 20, 5, 66, 1, 82, 112, 11, 8, 197,
+			80, 19, 149, 50, 112, 11, 10, 199, 21, 84, 167, 65, 192, 167, 48, 11, 0, 6, 195, 34, 164, 192, 11, 0, 19, 144, 109, 197, 177, 107,
+			195, 182, 100, 116, 101, 116, 195, 169, 115, 104, 101, 122, 11, 8, 197, 113, 37, 76, 56, 144, 11, 6, 195, 77, 197, 128, 11, 10, 199, 77,
+			163, 205, 8, 21, 9, 28, 17, 0, 6, 195, 88, 17, 217, 72, 13, 202, 77, 161, 77, 64, 243, 148, 41, 192, 167, 48, 11, 7, 196, 34,
+			84, 133, 44, 11, 7, 196, 4, 66, 156, 44, 11, 6, 195, 24, 17, 217, 11, 7, 195, 88, 17, 217, 76, 8, 20, 4, 95, 51, 48, 113,
+			107, 108, 52, 10, 65, 37, 50, 119, 108, 72, 37, 49, 108, 0, 0, 35, 70, 46, 134, 168, 57, 56, 135, 49, 110, 88, 110, 50, 91, 113,
+			81, 23, 91, 39, 52, 108, 37, 71, 108, 0, 11, 81, 115, 111, 114, 97, 105, 98, 97, 32, 9, 198, 80, 17, 207, 104, 21, 0, 11, 9,
+			198, 24, 20, 1, 16, 244, 192, 11, 0, 7, 196, 4, 176, 82, 80, 11, 0, 10, 199, 65, 35, 199, 72, 19, 79, 44, 11, 6, 195, 77,
+			170, 7, 11, 0, 26, 70, 80, 19, 28, 48, 160, 64, 47, 108, 55, 114, 55, 57, 108, 23, 65, 109, 81, 0, 11, 81, 109, 101, 103, 32,
+			9, 198, 34, 115, 129, 64, 160, 64, 11, 20, 68, 81, 194, 129, 44, 47, 114, 57, 108, 49, 23, 37, 91, 0, 11, 81, 105, 115, 32, 12,
+			201, 89, 195, 20, 4, 179, 218, 32, 21, 0, 11, 7, 196, 52, 245, 15, 72, 11, 6, 195, 46, 36, 218, 11, 0, 7, 196, 89, 193, 231,
+			44, 11, 7, 196, 82, 36, 133, 56, 11, 11, 67, 65, 54, 148, 48, 89, 12, 47, 0, 41, 0, 9, 198, 36, 120, 142, 100, 82, 192, 11,
+			9, 198, 161, 67, 5, 80, 82, 192, 11, 12, 201, 28, 243, 132, 60, 192, 84, 80, 19, 0, 11, 0, 34, 69, 40, 83, 5, 57, 64, 57,
+			109, 55, 109, 50, 47, 23, 89, 114, 65, 40, 49, 52, 108, 0, 11, 81, 115, 122, 195, 161, 109, 117, 107, 114, 97, 32, 8, 197, 40, 83,
+			5, 57, 64, 11, 0, 9, 198, 41, 196, 129, 80, 18, 64, 11, 8, 197, 149, 39, 19, 72, 16, 11, 0, 10, 199, 40, 83, 5, 57, 65,
+			78, 20, 11, 12, 201, 77, 161, 82, 21, 1, 76, 56, 82, 192, 11, 12, 201, 24, 145, 217, 20, 195, 69, 76, 82, 192, 11, 8, 196, 32,
+			16, 156, 72, 72, 8, 0, 9, 134, 102, 197, 145, 122, 110, 105, 11, 12, 201, 173, 161, 77, 20, 197, 5, 80, 146, 192, 11, 10, 199, 46,
+			134, 144, 60, 229, 10, 4, 11, 9, 198, 88, 147, 28, 29, 192, 129, 11, 11, 136, 116, 197, 145, 108, 195, 188, 110, 107, 11, 19, 4, 95,
+			51, 48, 111, 107, 108, 52, 10, 65, 37, 50, 119, 108, 72, 37, 49, 0, 0, 16, 141, 109, 197, 177, 107, 195, 182, 100, 116, 101, 116, 116,
+			101, 107, 11, 12, 201, 8, 150, 143, 81, 68, 220, 29, 73, 204, 11, 0, 8, 197, 21, 33, 74, 137, 64, 11, 8, 197, 52, 20, 16, 113,
+			64, 11, 7, 196, 46, 36, 5, 76, 11, 7, 196, 21, 164, 133, 56, 11, 14, 203, 80, 83, 10, 21, 57, 84, 137, 56, 136, 21, 160, 11,
+			8, 197, 58, 34, 28, 57, 144, 11, 0, 9, 198, 40, 241, 213, 56, 176, 84, 11, 9, 198, 16, 243, 7, 84, 176, 84, 11, 11, 200, 112,
+			195, 1, 64, 245, 18, 156, 192, 11, 12, 137, 109, 197, 177, 107, 195, 182, 100, 197, 145, 11, 8, 197, 56, 82, 235, 56, 176, 11, 9, 198,
+			52, 17, 213, 56, 176, 84, 11, 0, 9, 198, 44, 20, 14, 112, 226, 192, 11, 10, 199, 48, 144, 197, 56, 49, 73, 80, 11, 9, 198, 88,
+			243, 14, 112, 226, 192, 11, 9, 198, 52, 83, 148, 172, 226, 192, 11, 9, 198, 80, 84, 150, 172, 226, 192, 11, 7, 196, 82, 131, 78, 36,
+			11, 7, 196, 49, 197, 14, 36, 11, 0, 36, 7, 115, 122, 105, 110, 116, 197, 177, 89, 37, 50, 47, 117, 23, 83, 109, 55, 107, 118, 88,
+			109, 47, 0, 11, 81, 102, 101, 108, 104, 197, 145, 122, 101, 116, 32, 10, 199, 24, 83, 43, 48, 85, 5, 80, 11, 10, 199, 46, 36, 5,
+			77, 56, 135, 20, 11, 10, 199, 74, 36, 218, 48, 85, 5, 80, 11, 8, 197, 44, 153, 82, 56, 144, 11, 0, 7, 196, 137, 38, 137, 44,
+			11, 6, 195, 113, 42, 128, 11, 0, 10, 199, 44, 20, 3, 76, 243, 14, 36, 11, 12, 201, 24, 145, 217, 20, 195, 69, 105, 65, 84, 11,
+			9, 198, 12, 146, 204, 60, 229, 0, 11, 12, 201, 52, 81, 207, 48, 64, 78, 84, 226, 192, 11, 10, 199, 48, 83, 69, 57, 65, 78, 36,
+			11, 0, 13, 202, 20, 194, 226, 65, 161, 76, 137, 58, 206, 44, 11, 0, 10, 199, 58, 36, 5, 77, 56, 135, 20, 11, 49, 15, 98, 197,
+			177, 110, 99, 115, 101, 108, 101, 107, 109, 195, 169, 110, 121, 71, 111, 50, 76, 109, 55, 109, 49, 65, 113, 67, 10, 6, 15, 79, 108, 50,
+			116, 57, 108, 0, 11, 81, 103, 121, 97, 110, 195, 186, 106, 97, 32, 16, 205, 32, 246, 154, 112, 167, 18, 84, 199, 19, 60, 176, 129, 56,
+			11, 12, 201, 52, 81, 212, 20, 201, 84, 172, 226, 192, 11, 0, 7, 196, 82, 131, 73, 44, 11, 7, 196, 9, 195, 137, 44, 11, 0, 31,
+			68, 49, 197, 39, 44, 55, 114, 47, 115, 49, 23, 89, 114, 65, 114, 52, 108, 0, 11, 81, 115, 122, 195, 161, 109, 195, 161, 114, 97, 32,
+			12, 201, 24, 83, 8, 5, 54, 142, 112, 195, 137, 11, 7, 196, 46, 129, 40, 76, 11, 0, 8, 197, 112, 195, 10, 60, 224, 11, 6, 195,
+			25, 194, 148, 11, 6, 195, 26, 162, 148, 11, 0, 0, 7, 196, 4, 176, 201, 156, 11, 0, 13, 202, 52, 81, 211, 106, 179, 5, 82, 36,
+			226, 80, 11, 45, 68, 85, 64, 193, 36, 40, 119, 12, 108, 37, 23, 113, 48, 111, 55, 109, 47, 109, 23, 109, 55, 118, 47, 12, 0, 11,
+			82, 195, 169, 112, 195, 188, 108, 101, 116, 101, 32, 101, 108, 197, 145, 116, 116, 32, 13, 202, 24, 83, 20, 172, 229, 5, 82, 36, 226, 80,
+			11, 0, 0, 47, 70, 89, 196, 136, 5, 73, 192, 84, 114, 52, 107, 108, 47, 115, 23, 108, 55, 108, 49, 40, 55, 114, 91, 114, 52, 115,
+			55, 0, 11, 81, 97, 108, 97, 107, 117, 108, 195, 161, 115, 195, 161, 114, 195, 179, 108, 32, 27, 70, 89, 196, 136, 5, 73, 192, 84, 114,
+			52, 107, 108, 47, 115, 23, 109, 91, 118, 0, 11, 81, 101, 115, 197, 145, 32, 9, 198, 89, 196, 136, 5, 73, 192, 11, 9, 198, 89, 193,
+			200, 5, 73, 192, 11, 9, 198, 49, 197, 8, 5, 73, 192, 11, 9, 198, 89, 196, 136, 5, 73, 192, 11, 0, 9, 198, 89, 195, 12, 113,
+			41, 204, 11, 0, 29, 72, 52, 81, 207, 48, 66, 1, 82, 112, 65, 109, 81, 39, 55, 72, 107, 108, 47, 115, 23, 108, 88, 0, 11, 81,
+			97, 122, 32, 10, 199, 32, 19, 28, 49, 196, 167, 48, 11, 8, 197, 88, 84, 154, 38, 112, 11, 8, 197, 24, 18, 193, 18, 112, 11, 0,
+			22, 66, 137, 32, 113, 52, 23, 84, 113, 81, 109, 47, 0, 11, 81, 118, 195, 169, 103, 101, 116, 32, 7, 196, 5, 39, 14, 100, 11, 12,
+			201, 44, 20, 3, 76, 243, 8, 5, 73, 192, 11, 17, 66, 137, 32, 113, 52, 10, 6, 15, 109, 55, 0, 11, 81, 101, 108, 32, 11, 200,
+			80, 20, 148, 113, 55, 18, 156, 192, 11, 5, 194, 169, 32, 11, 5, 194, 137, 32, 11, 0, 8, 197, 112, 195, 14, 36, 16, 11, 11, 67,
+			53, 197, 128, 65, 114, 84, 0, 42, 42, 6, 195, 53, 196, 131, 15, 0, 9, 198, 50, 37, 5, 104, 226, 64, 11, 9, 198, 73, 197, 133,
+			56, 226, 64, 11, 7, 196, 90, 35, 9, 44, 11, 0, 10, 199, 46, 179, 40, 56, 17, 39, 80, 11, 9, 198, 40, 83, 5, 44, 85, 0,
+			11, 9, 198, 46, 36, 26, 20, 195, 137, 11, 9, 198, 13, 50, 78, 112, 195, 137, 11, 12, 201, 8, 150, 143, 57, 153, 84, 4, 226, 65,
+			11, 0, 31, 72, 28, 83, 133, 73, 192, 201, 157, 48, 81, 109, 50, 109, 52, 114, 119, 37, 115, 91, 10, 6, 15, 39, 49, 0, 11, 81,
+			111, 107, 32, 11, 200, 28, 83, 133, 73, 192, 201, 157, 48, 11, 7, 196, 40, 241, 207, 80, 11, 7, 196, 40, 241, 207, 80, 11, 7, 196,
+			85, 64, 83, 80, 11, 0, 40, 70, 77, 163, 205, 61, 42, 128, 89, 39, 65, 39, 52, 116, 23, 84, 39, 55, 47, 23, 55, 114, 47, 50,
+			37, 0, 11, 82, 118, 111, 108, 116, 32, 108, 195, 161, 116, 110, 105, 32, 8, 197, 88, 242, 211, 61, 64, 11, 8, 197, 44, 86, 132, 21,
+			64, 11, 12, 201, 24, 83, 4, 60, 193, 207, 104, 226, 64, 11, 14, 139, 103, 121, 197, 145, 122, 107, 195, 182, 100, 110, 105, 11, 0, 9,
+			198, 89, 195, 20, 4, 224, 64, 11, 38, 70, 24, 244, 137, 57, 64, 129, 83, 39, 52, 37, 50, 47, 71, 108, 23, 49, 109, 52, 111, 55,
+			50, 109, 49, 0, 11, 81, 107, 101, 114, 195, 188, 108, 110, 101, 107, 32, 10, 199, 20, 211, 34, 45, 54, 137, 44, 11, 7, 196, 54, 163,
+			9, 44, 11, 0, 12, 201, 48, 85, 133, 106, 35, 153, 20, 195, 137, 11, 9, 198, 32, 21, 28, 49, 144, 129, 11, 9, 198, 40, 83, 19,
+			106, 116, 129, 11, 7, 196, 80, 84, 162, 56, 11, 0, 9, 198, 82, 84, 21, 76, 242, 192, 11, 12, 201, 33, 197, 20, 137, 37, 28, 72,
+			243, 39, 11, 7, 196, 49, 197, 10, 4, 11, 0, 11, 200, 4, 194, 129, 77, 55, 7, 72, 16, 11, 8, 197, 4, 192, 75, 61, 64, 11,
+			8, 197, 76, 241, 15, 73, 64, 11, 8, 197, 80, 84, 150, 21, 64, 11, 0, 11, 200, 72, 19, 135, 40, 18, 84, 156, 192, 11, 10, 199,
+			137, 10, 204, 21, 72, 130, 20, 11, 12, 201, 77, 167, 14, 18, 34, 213, 44, 21, 0, 11, 12, 201, 88, 150, 147, 29, 195, 1, 80, 245,
+			0, 11, 0, 30, 69, 88, 85, 20, 172, 176, 84, 109, 47, 12, 111, 49, 10, 6, 15, 113, 89, 52, 109, 0, 11, 81, 195, 169, 115, 122,
+			114, 101, 32, 43, 73, 81, 195, 79, 28, 21, 28, 77, 32, 64, 47, 114, 65, 39, 81, 108, 47, 114, 91, 52, 108, 23, 57, 39, 81, 39,
+			91, 40, 55, 47, 0, 11, 81, 106, 111, 103, 111, 115, 117, 108, 116, 32, 8, 197, 8, 83, 142, 172, 176, 11, 0, 12, 201, 20, 197, 162,
+			29, 168, 147, 136, 33, 64, 11, 28, 71, 81, 195, 65, 77, 165, 10, 4, 47, 114, 65, 108, 89, 80, 108, 23, 108, 55, 114, 0, 11, 81,
+			97, 108, 195, 161, 32, 0, 12, 201, 65, 32, 75, 80, 146, 213, 76, 16, 130, 11, 0, 30, 69, 21, 56, 140, 101, 64, 109, 91, 113, 57,
+			47, 10, 6, 15, 55, 114, 47, 39, 49, 0, 11, 81, 108, 195, 161, 116, 111, 107, 32, 10, 199, 24, 244, 146, 113, 48, 167, 48, 11, 0,
+			8, 197, 32, 22, 156, 56, 176, 11, 10, 199, 81, 41, 206, 41, 196, 167, 48, 11, 11, 200, 60, 181, 1, 81, 196, 194, 156, 192, 11, 0,
+			34, 70, 56, 85, 133, 50, 36, 192, 50, 109, 84, 109, 55, 113, 91, 23, 47, 113, 65, 114, 57, 108, 0, 11, 81, 116, 195, 169, 109, 195,
+			161, 106, 97, 32, 7, 196, 81, 81, 14, 112, 11, 0, 13, 202, 64, 147, 12, 4, 224, 84, 60, 176, 167, 48, 11, 8, 197, 8, 89, 82,
+			56, 144, 11, 0, 18, 67, 112, 103, 0, 195, 161, 102, 195, 161, 116, 0, 44, 29, 42, 81, 116, 32, 19, 67, 137, 97, 78, 113, 84, 109,
+			50, 23, 114, 47, 0, 11, 81, 195, 161, 116, 32, 9, 198, 44, 81, 22, 20, 224, 197, 11, 14, 67, 16, 228, 192, 72, 113, 109, 50, 109,
+			91, 0, 42, 42, 0, 36, 68, 80, 85, 20, 20, 47, 109, 47, 12, 109, 23, 84, 37, 55, 114, 81, 39, 91, 12, 114, 0, 11, 81, 118,
+			105, 108, 195, 161, 103, 111, 115, 115, 195, 161, 32, 22, 68, 36, 112, 90, 4, 37, 81, 108, 88, 108, 23, 84, 108, 50, 0, 11, 81, 118,
+			97, 110, 32, 11, 200, 160, 226, 232, 49, 68, 226, 28, 80, 11, 10, 199, 20, 193, 143, 28, 17, 14, 36, 11, 12, 201, 46, 134, 168, 77,
+			56, 135, 137, 97, 76, 11, 10, 199, 8, 83, 85, 80, 21, 14, 36, 11, 10, 199, 20, 197, 137, 76, 83, 14, 36, 11, 14, 203, 52, 81,
+			203, 161, 161, 76, 149, 72, 147, 72, 80, 11, 6, 195, 46, 113, 42, 11, 7, 196, 88, 85, 20, 20, 11, 6, 195, 49, 193, 217, 11, 7,
+			196, 80, 85, 20, 20, 11, 0, 8, 197, 77, 160, 75, 52, 16, 11, 17, 196, 49, 197, 20, 4, 11, 81, 112, 101, 116, 197, 145, 102, 105,
+			116, 32, 8, 197, 60, 179, 218, 104, 16, 11, 13, 138, 115, 122, 97, 107, 195, 169, 114, 116, 197, 145, 11, 7, 196, 49, 197, 20, 4, 11,
+			6, 195, 78, 36, 148, 11, 15, 8, 95, 35, 45, 195, 161, 110, 97, 107, 114, 50, 108, 49, 0, 0, 9, 198, 20, 209, 76, 21, 65, 78,
+			11, 7, 196, 5, 36, 167, 48, 11, 7, 196, 5, 36, 167, 48, 11, 0, 9, 198, 14, 83, 69, 105, 65, 64, 11, 9, 198, 90, 131, 7,
+			100, 33, 78, 11, 12, 201, 89, 195, 20, 61, 165, 1, 80, 226, 64, 11, 8, 197, 44, 81, 4, 36, 112, 17, 17, 10, 95, 35, 45, 105,
+			107, 195, 161, 110, 97, 107, 114, 50, 108, 49, 0, 0, 37, 72, 33, 83, 12, 4, 72, 139, 60, 176, 107, 40, 55, 12, 108, 72, 113, 49,
+			39, 49, 23, 76, 40, 48, 114, 50, 0, 11, 81, 99, 115, 117, 112, 195, 161, 110, 32, 10, 199, 10, 179, 148, 21, 52, 226, 44, 11, 10,
+			199, 80, 84, 150, 21, 161, 84, 20, 11, 7, 196, 56, 20, 10, 4, 11, 10, 199, 60, 179, 218, 32, 21, 20, 4, 11, 0, 11, 200, 72,
+			82, 204, 112, 208, 211, 148, 176, 11, 8, 197, 88, 19, 12, 88, 16, 11, 12, 201, 28, 243, 132, 60, 192, 84, 82, 115, 0, 11, 9, 198,
+			28, 243, 132, 60, 195, 203, 11, 10, 199, 32, 151, 14, 100, 243, 20, 4, 11, 10, 199, 44, 149, 1, 49, 195, 20, 4, 11, 0, 9, 198,
+			89, 193, 15, 48, 224, 75, 11, 10, 199, 80, 20, 137, 25, 197, 129, 48, 11, 9, 198, 46, 182, 132, 20, 225, 75, 11, 7, 196, 105, 196,
+			149, 48, 11, 12, 201, 65, 35, 199, 72, 19, 74, 112, 224, 75, 11, 10, 135, 197, 145, 114, 110, 97, 103, 121, 11, 10, 199, 32, 244, 132,
+			112, 149, 129, 48, 11, 10, 135, 98, 101, 108, 197, 145, 108, 101, 11, 12, 201, 32, 19, 135, 61, 165, 1, 81, 64, 64, 11, 12, 201, 8,
+			150, 143, 81, 68, 220, 28, 224, 75, 11, 7, 196, 80, 83, 9, 44, 11, 0, 12, 3, 95, 122, 104, 49, 6, 112, 50, 108, 37, 0, 8,
+			197, 77, 9, 210, 60, 192, 11, 9, 198, 157, 39, 11, 8, 19, 128, 11, 8, 197, 32, 83, 25, 20, 176, 11, 11, 200, 36, 225, 193, 80,
+			192, 78, 84, 176, 11, 9, 198, 82, 35, 92, 8, 19, 128, 11, 7, 196, 20, 195, 168, 44, 11, 8, 197, 56, 82, 212, 20, 176, 11, 0,
+			9, 198, 48, 84, 218, 56, 82, 192, 72, 10, 199, 76, 84, 133, 30, 32, 133, 56, 11, 38, 71, 52, 81, 217, 136, 176, 133, 56, 65, 109,
+			79, 113, 49, 71, 109, 50, 23, 84, 114, 52, 107, 108, 47, 115, 0, 11, 81, 118, 195, 161, 114, 104, 97, 116, 195, 179, 32, 9, 198, 44,
+			84, 133, 76, 146, 192, 11, 9, 198, 4, 230, 65, 28, 242, 192, 11, 9, 198, 24, 82, 211, 104, 146, 192, 11, 9, 198, 72, 244, 211, 104,
+			18, 192, 11, 0, 31, 72, 112, 195, 1, 64, 245, 2, 4, 224, 114, 55, 12, 108, 48, 39, 47, 71, 108, 50, 23, 84, 108, 50, 0, 11,
+			81, 118, 97, 110, 32, 15, 204, 112, 195, 1, 53, 66, 84, 45, 196, 147, 112, 112, 64, 11, 15, 204, 46, 36, 22, 37, 49, 76, 80, 161,
+			73, 56, 82, 192, 11, 12, 201, 64, 19, 129, 77, 162, 207, 16, 224, 75, 11, 12, 201, 112, 195, 37, 81, 196, 220, 32, 246, 128, 11, 6,
+			195, 46, 36, 212, 11, 6, 195, 53, 196, 212, 11, 0, 9, 198, 72, 243, 148, 4, 226, 64, 11, 13, 202, 29, 153, 199, 101, 83, 28, 77,
+			194, 15, 104, 11, 9, 198, 48, 85, 5, 56, 226, 64, 11, 12, 201, 45, 85, 1, 81, 196, 207, 44, 224, 75, 11, 9, 198, 12, 83, 12,
+			113, 41, 204, 11, 10, 199, 112, 195, 37, 80, 245, 20, 4, 11, 9, 198, 80, 20, 148, 4, 226, 64, 11, 6, 195, 36, 112, 90, 11, 9,
+			198, 52, 243, 132, 4, 226, 64, 11, 7, 196, 4, 227, 129, 44, 11, 0, 8, 197, 81, 81, 21, 56, 176, 76, 14, 203, 8, 150, 148, 61,
+			57, 84, 113, 55, 8, 61, 160, 11, 12, 201, 52, 81, 212, 20, 129, 84, 21, 69, 0, 11, 8, 197, 48, 18, 212, 4, 176, 11, 0, 41,
+			70, 24, 82, 140, 21, 69, 0, 83, 109, 57, 55, 109, 47, 12, 10, 6, 15, 48, 52, 39, 119, 109, 89, 12, 39, 52, 0, 11, 81, 112,
+			114, 111, 99, 101, 115, 115, 122, 111, 114, 32, 8, 197, 57, 149, 71, 90, 112, 11, 0, 8, 197, 76, 82, 148, 20, 208, 11, 15, 204, 4,
+			194, 193, 48, 208, 90, 61, 69, 1, 44, 224, 75, 11, 0, 13, 202, 44, 145, 71, 137, 54, 165, 80, 85, 20, 20, 11, 8, 197, 137, 34,
+			78, 80, 144, 11, 9, 198, 77, 161, 82, 17, 194, 71, 17, 0, 26, 67, 82, 128, 130, 47, 110, 71, 12, 23, 39, 52, 89, 114, 81, 0,
+			11, 81, 111, 114, 115, 122, 195, 161, 103, 32, 12, 201, 81, 196, 147, 5, 50, 28, 104, 41, 204, 11, 77, 67, 82, 128, 130, 47, 110, 71,
+			12, 23, 107, 109, 57, 109, 50, 23, 89, 108, 49, 108, 72, 39, 88, 37, 49, 23, 83, 109, 55, 23, 108, 23, 83, 109, 55, 107, 118, 88,
+			109, 47, 0, 11, 85, 104, 101, 108, 121, 101, 110, 32, 115, 122, 97, 107, 97, 100, 111, 122, 105, 107, 32, 102, 101, 108, 32, 97, 32, 102,
+			101, 108, 104, 197, 145, 122, 101, 116, 32, 11, 200, 20, 194, 28, 74, 85, 1, 56, 144, 11, 47, 67, 82, 128, 130, 47, 110, 71, 12, 23,
+			83, 109, 55, 107, 118, 23, 84, 108, 55, 115, 89, 112, 50, 117, 0, 11, 82, 102, 101, 108, 104, 197, 145, 32, 118, 97, 108, 195, 179, 115,
+			122, 195, 173, 110, 197, 177, 32, 9, 198, 80, 20, 148, 4, 226, 65, 11, 6, 195, 82, 128, 130, 11, 0, 10, 199, 20, 195, 69, 57, 65,
+			78, 36, 11, 9, 198, 20, 120, 147, 104, 85, 0, 11, 9, 198, 8, 16, 146, 112, 195, 137, 11, 10, 199, 32, 19, 12, 28, 21, 14, 36,
+			11, 0, 8, 197, 32, 244, 211, 106, 160, 11, 11, 200, 137, 33, 5, 44, 84, 211, 136, 112, 11, 10, 199, 46, 133, 5, 48, 86, 142, 36,
+			11, 0, 8, 197, 56, 17, 217, 61, 64, 11, 9, 198, 88, 149, 1, 80, 167, 11, 11, 9, 198, 72, 244, 211, 104, 16, 130, 11, 10, 199,
+			20, 197, 133, 32, 85, 9, 44, 11, 7, 196, 77, 169, 204, 80, 11, 0, 6, 195, 36, 72, 154, 11, 8, 197, 49, 197, 15, 81, 64, 11,
+			16, 67, 44, 98, 201, 49, 114, 109, 83, 49, 114, 37, 0, 13, 42, 42, 0, 9, 198, 32, 144, 156, 44, 21, 0, 11, 9, 198, 54, 36,
+			133, 82, 37, 0, 11, 7, 196, 21, 53, 34, 56, 11, 8, 197, 74, 35, 76, 36, 176, 11, 0, 7, 196, 50, 36, 22, 20, 11, 10, 199,
+			16, 243, 7, 61, 163, 212, 80, 11, 10, 199, 4, 64, 75, 61, 163, 212, 80, 11, 0, 58, 75, 112, 195, 1, 53, 66, 84, 45, 196, 147,
+			112, 112, 35, 55, 12, 108, 65, 47, 37, 47, 49, 114, 52, 91, 114, 81, 23, 47, 109, 34, 84, 109, 88, 109, 47, 113, 52, 118, 55, 0,
+			11, 81, 116, 101, 114, 118, 101, 122, 101, 116, 195, 169, 114, 197, 145, 108, 32, 9, 198, 25, 194, 140, 32, 246, 128, 11, 12, 201, 36, 229,
+			34, 104, 216, 142, 100, 82, 192, 11, 8, 197, 105, 82, 1, 57, 64, 11, 0, 8, 197, 24, 241, 206, 4, 176, 76, 0, 15, 204, 90, 33,
+			210, 20, 128, 74, 81, 196, 220, 88, 19, 0, 11, 10, 199, 161, 97, 90, 21, 64, 133, 56, 11, 9, 198, 8, 84, 218, 136, 197, 133, 11,
+			10, 199, 37, 50, 207, 49, 192, 129, 56, 11, 9, 198, 18, 131, 148, 137, 53, 0, 11, 10, 199, 72, 83, 132, 77, 161, 82, 20, 11, 9,
+			198, 8, 195, 203, 44, 242, 192, 11, 15, 67, 4, 68, 204, 114, 72, 113, 109, 91, 109, 55, 0, 42, 42, 0, 6, 20, 0, 0, 244, 0,
+			0, 0, 81, 1, 0, 0, 251, 0, 0, 0, 113, 1, 0, 0, 0, 0, 0, 0, 6, 18, 66, 98, 0, 99, 0, 100, 0, 102, 0, 103,
+			0, 104, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 112, 0, 115, 0, 116, 0, 114, 0, 118, 0, 119, 0, 122, 0, 7, 6, 99,
+			104, 0, 4, 1, 115, 2, 105, 108, 108, 105, 110, 103, 3, 0, 1, 115, 105, 102, 2, 101, 114, 3, 0, 4, 1, 105, 115, 105, 114, 117,
+			106, 3, 76, 0, 1, 105, 118, 101, 108, 103, 101, 107, 0, 1, 105, 118, 101, 115, 99, 97, 106, 101, 112, 0, 1, 105, 118, 111, 107, 108,
+			97, 115, 115, 97, 114, 103, 0, 1, 105, 118, 111, 107, 115, 97, 108, 98, 0, 1, 161, 195, 103, 114, 111, 102, 0, 1, 169, 195, 112, 2,
+			121, 0, 1, 169, 195, 122, 115, 0, 5, 1, 1, 105, 110, 97, 106, 109, 97, 100, 0, 8, 105, 122, 2, 121, 0, 99, 115, 1, 105, 115,
+			105, 114, 117, 106, 3, 76, 12, 0, 105, 112, 5, 1, 3, 76, 37, 48, 0, 4, 101, 8, 169, 195, 122, 115, 2, 110, 121, 3, 76, 113,
+			0, 195, 169, 8, 169, 195, 122, 115, 2, 110, 121, 0, 4, 1, 105, 110, 114, 101, 116, 116, 101, 109, 3, 99, 0, 1, 105, 114, 2, 116,
+			101, 114, 0, 1, 110, 188, 195, 109, 2, 101, 110, 0, 4, 1, 97, 2, 97, 101, 109, 3, 107, 0, 1, 97, 2, 105, 108, 108, 101, 115,
+			0, 1, 97, 2, 195, 161, 116, 0, 1, 97, 98, 0, 1, 97, 99, 114, 97, 2, 111, 110, 0, 1, 97, 99, 114, 97, 2, 111, 110, 0,
+			1, 97, 100, 108, 97, 98, 2, 105, 110, 0, 1, 97, 102, 0, 1, 97, 106, 2, 116, 0, 1, 97, 108, 97, 109, 2, 105, 116, 0, 1,
+			97, 109, 2, 105, 97, 118, 101, 108, 108, 0, 1, 97, 109, 2, 105, 110, 195, 161, 0, 1, 97, 110, 97, 109, 108, 97, 0, 1, 97, 114,
+			107, 0, 1, 97, 122, 115, 2, 97, 114, 105, 100, 0, 1, 101, 2, 195, 179, 0, 1, 101, 108, 2, 110, 101, 114, 0, 1, 101, 109, 2,
+			97, 0, 1, 101, 116, 0, 1, 105, 114, 116, 2, 105, 110, 0, 1, 105, 116, 2, 111, 110, 0, 1, 105, 116, 122, 115, 105, 100, 2, 111,
+			110, 0, 1, 105, 116, 122, 115, 111, 110, 111, 114, 107, 2, 111, 110, 0, 1, 105, 122, 115, 112, 0, 1, 111, 115, 97, 109, 2, 105, 115,
+			116, 17, 65, 0, 1, 111, 116, 122, 115, 2, 97, 115, 122, 116, 105, 0, 1, 111, 122, 97, 109, 2, 105, 115, 0, 1, 111, 122, 97, 109,
+			2, 105, 122, 109, 0, 1, 114, 97, 2, 97, 105, 107, 117, 115, 0, 1, 114, 97, 2, 105, 116, 101, 107, 116, 195, 186, 0, 1, 114, 97,
+			2, 105, 118, 195, 161, 108, 0, 1, 114, 97, 2, 195, 173, 118, 0, 1, 114, 97, 103, 105, 108, 111, 0, 1, 114, 97, 110, 97, 2, 105,
+			0, 1, 114, 97, 110, 111, 109, 2, 105, 0, 1, 114, 97, 114, 101, 105, 104, 2, 105, 0, 1, 114, 111, 2, 195, 173, 100, 101, 97, 0,
+			1, 117, 101, 2, 97, 114, 105, 115, 122, 0, 1, 117, 110, 117, 101, 0, 1, 121, 122, 115, 112, 0, 8, 114, 97, 2, 105, 109, 195, 169,
+			0, 8, 114, 111, 2, 105, 100, 101, 0, 4, 1, 101, 99, 2, 101, 116, 3, 107, 12, 0, 1, 101, 112, 103, 101, 108, 2, 101, 115, 0,
+			1, 105, 114, 116, 115, 2, 101, 108, 0, 8, 101, 112, 0, 7, 6, 100, 122, 0, 4, 1, 97, 122, 161, 195, 122, 115, 2, 101, 110, 101,
+			3, 72, 88, 0, 1, 101, 114, 122, 101, 2, 101, 110, 101, 0, 1, 103, 97, 114, 97, 109, 115, 2, 195, 182, 108, 100, 0, 1, 169, 195,
+			118, 110, 111, 104, 2, 195, 161, 115, 122, 108, 195, 179, 0, 1, 169, 195, 122, 115, 101, 98, 2, 97, 118, 97, 114, 0, 4, 115, 3, 75,
+			0, 115, 1, 17, 67, 0, 115, 1, 97, 2, 17, 65, 0, 115, 2, 17, 67, 0, 4, 115, 1, 97, 114, 97, 104, 97, 109, 2, 17, 65,
+			3, 75, 12, 0, 115, 1, 101, 110, 101, 109, 2, 17, 65, 0, 115, 1, 105, 114, 98, 2, 17, 65, 0, 115, 5, 1, 1, 111, 98, 109,
+			97, 107, 2, 17, 65, 0, 115, 8, 111, 100, 2, 17, 65, 0, 4, 1, 145, 197, 108, 101, 100, 101, 122, 115, 3, 88, 0, 1, 145, 197,
+			108, 101, 116, 101, 118, 182, 195, 107, 0, 1, 145, 197, 114, 169, 195, 107, 0, 1, 145, 197, 116, 101, 103, 101, 116, 110, 101, 109, 0, 1,
+			145, 197, 116, 101, 103, 101, 121, 110, 101, 102, 0, 1, 177, 197, 114, 177, 197, 121, 103, 2, 105, 107, 0, 1, 179, 195, 103, 111, 102, 2,
+			195, 179, 0, 1, 179, 195, 108, 108, 105, 118, 0, 1, 179, 195, 108, 111, 107, 114, 117, 98, 0, 1, 179, 195, 108, 111, 107, 116, 105, 116,
+			0, 1, 179, 195, 108, 161, 195, 98, 109, 105, 104, 0, 1, 179, 195, 108, 161, 195, 98, 111, 100, 0, 1, 179, 195, 108, 161, 195, 112, 97,
+			107, 0, 1, 179, 195, 112, 97, 114, 97, 104, 0, 1, 179, 195, 112, 111, 108, 0, 1, 179, 195, 114, 97, 107, 97, 0, 1, 179, 195, 115,
+			114, 111, 98, 0, 1, 179, 195, 116, 97, 103, 108, 108, 97, 104, 0, 1, 179, 195, 116, 97, 103, 110, 105, 114, 0, 1, 179, 195, 116, 97,
+			103, 110, 161, 195, 114, 0, 1, 179, 195, 116, 97, 103, 111, 112, 97, 116, 0, 1, 145, 197, 108, 101, 100, 101, 122, 115, 2, 107, 195, 182,
+			3, 89, 0, 4, 1, 101, 114, 169, 195, 107, 3, 119, 0, 1, 101, 114, 169, 195, 109, 2, 107, 0, 1, 179, 195, 2, 107, 111, 100, 0,
+			1, 179, 195, 103, 111, 102, 2, 107, 111, 100, 0, 1, 179, 195, 122, 186, 195, 104, 0, 8, 179, 195, 2, 107, 111, 0, 4, 3, 120, 12,
+			0, 0, 1, 17, 65, 2, 17, 65, 0, 1, 101, 2, 195, 169, 115, 0, 1, 101, 2, 197, 145, 0, 7, 6, 103, 121, 0, 115, 3, 76,
+			0, 115, 1, 17, 65, 2, 17, 65, 3, 76, 12, 0, 4, 3, 79, 0, 1, 97, 2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 97, 2,
+			115, 101, 106, 0, 1, 97, 2, 115, 195, 169, 114, 195, 188, 108, 0, 1, 97, 102, 2, 115, 195, 169, 114, 195, 188, 108, 0, 1, 97, 110,
+			2, 115, 97, 108, 108, 195, 179, 0, 1, 97, 110, 2, 115, 97, 114, 108, 195, 179, 0, 1, 97, 110, 2, 115, 101, 98, 101, 115, 0, 1,
+			97, 110, 2, 115, 105, 101, 116, 0, 1, 97, 110, 2, 115, 105, 107, 101, 114, 0, 1, 97, 110, 2, 115, 111, 107, 195, 161, 114, 97, 0,
+			1, 97, 110, 2, 115, 111, 114, 0, 1, 97, 110, 2, 115, 116, 114, 97, 116, 195, 169, 103, 105, 97, 0, 1, 97, 110, 2, 115, 116, 195,
+			173, 108, 0, 1, 97, 110, 2, 115, 195, 161, 103, 0, 1, 97, 110, 2, 115, 195, 161, 112, 0, 1, 101, 2, 101, 115, 45, 101, 103, 121,
+			101, 100, 195, 188, 108, 0, 1, 101, 2, 106, 101, 103, 121, 197, 177, 0, 1, 101, 2, 106, 101, 108, 101, 110, 116, 195, 169, 115, 197, 177,
+			0, 1, 101, 2, 115, 97, 114, 107, 195, 186, 0, 1, 101, 2, 115, 101, 106, 116, 197, 177, 0, 1, 101, 2, 115, 111, 114, 0, 1, 101,
+			2, 115, 195, 173, 110, 197, 177, 0, 1, 101, 104, 2, 115, 195, 169, 103, 0, 1, 101, 106, 2, 101, 110, 107, 195, 169, 110, 116, 0, 1,
+			101, 106, 2, 101, 122, 116, 101, 0, 1, 101, 106, 2, 195, 169, 114, 116, 0, 1, 101, 106, 100, 169, 195, 118, 2, 115, 116, 114, 97, 116,
+			195, 169, 0, 1, 101, 118, 2, 195, 169, 114, 116, 195, 169, 107, 0, 1, 110, 182, 195, 121, 103, 2, 115, 111, 114, 0, 1, 111, 104, 2,
 			115, 101, 0, 1, 111, 104, 101, 115, 2, 115, 101, 0, 1, 114, 161, 195, 116, 2, 106, 117, 116, 97, 108, 0, 1, 114, 161, 195, 116, 2,
 			115, 111, 114, 0, 1, 114, 161, 195, 116, 2, 115, 111, 114, 111, 122, 97, 116, 0, 1, 161, 195, 2, 115, 111, 114, 0, 1, 161, 195, 108,
 			2, 115, 195, 161, 0, 1, 161, 195, 118, 116, 169, 195, 2, 106, 97, 118, 195, 173, 116, 0, 1, 169, 195, 110, 2, 106, 101, 103, 121, 0,
@@ -20335,827 +30162,1094 @@ FilesInMemory create_espeakdata_dicts () {
 			2, 105, 107, 0, 8, 173, 195, 2, 106, 195, 161, 114, 0, 106, 1, 17, 67, 0, 4, 1, 101, 2, 45, 101, 103, 121, 3, 79, 12, 0,
 			1, 101, 2, 97, 114, 195, 161, 110, 116, 0, 1, 101, 2, 97, 122, 111, 110, 0, 1, 101, 2, 101, 108, 197, 145, 114, 101, 0, 1, 101,
 			2, 101, 109, 98, 101, 114, 0, 1, 101, 2, 101, 110, 107, 195, 169, 110, 116, 0, 1, 101, 2, 101, 110, 114, 97, 110, 103, 0, 1, 101,
-			2, 101, 110, 115, 195, 186, 108, 121, 0, 1, 101, 2, 101, 115, 195, 188, 108, 101, 116, 0, 1, 101, 2, 101, 116, 195, 169, 114, 116, 0,
-			1, 101, 2, 101, 122, 107, 101, 100, 0, 1, 101, 2, 101, 122, 116, 101, 116, 0, 1, 101, 2, 105, 100, 101, 106, 197, 177, 0, 1, 101,
-			2, 105, 114, 195, 161, 110, 121, 195, 186, 0, 1, 101, 2, 195, 161, 108, 116, 97, 108, 195, 161, 110, 0, 1, 101, 2, 195, 169, 106, 115,
-			122, 97, 107, 0, 1, 101, 2, 195, 169, 114, 116, 0, 1, 101, 2, 195, 169, 114, 116, 101, 108, 109, 197, 177, 0, 1, 101, 2, 195, 186,
-			116, 116, 97, 108, 0, 1, 101, 45, 109, 101, 110, 2, 101, 122, 0, 1, 101, 45, 109, 101, 110, 2, 105, 107, 0, 1, 101, 45, 109, 101,
-			110, 2, 195, 188, 116, 116, 0, 1, 101, 97, 114, 106, 186, 195, 2, 101, 115, 195, 173, 116, 0, 1, 101, 99, 110, 105, 109, 114, 97, 104,
-			2, 101, 100, 105, 107, 0, 1, 101, 101, 108, 101, 98, 2, 101, 122, 0, 1, 101, 101, 122, 115, 115, 182, 195, 2, 101, 115, 195, 173, 116,
-			0, 1, 101, 103, 101, 109, 108, 169, 195, 102, 2, 101, 122, 0, 1, 101, 105, 107, 2, 101, 122, 0, 1, 101, 110, 101, 122, 105, 116, 2,
-			101, 100, 105, 107, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 100, 115, 122, 101, 114, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 110,
-			0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 115, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 116, 0, 1, 101, 110, 111, 122, 115, 117,
-			104, 2, 101, 100, 0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 100, 105, 107, 0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 115,
-			0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 122, 0, 1, 101, 116, 101, 108, 188, 195, 112, 169, 195, 2, 195, 188, 116, 116, 0, 1,
-			101, 122, 161, 195, 122, 115, 2, 101, 100, 105, 107, 0, 1, 101, 122, 161, 195, 122, 115, 2, 101, 115, 0, 8, 101, 2, 97, 98, 108, 97,
-			107, 0, 8, 101, 2, 101, 108, 0, 8, 101, 2, 101, 115, 0, 8, 101, 2, 101, 116, 32, 0, 8, 101, 2, 101, 116, 108, 101, 110, 0,
-			8, 101, 2, 101, 122, 0, 8, 101, 2, 101, 122, 109, 195, 169, 110, 121, 0, 8, 101, 2, 105, 100, 197, 145, 0, 8, 101, 2, 105, 107,
-			0, 8, 101, 2, 111, 108, 100, 97, 108, 0, 8, 101, 2, 195, 161, 103, 121, 0, 8, 101, 2, 195, 169, 32, 0, 8, 101, 2, 195, 169,
-			118, 0, 8, 101, 2, 195, 179, 114, 195, 161, 0, 8, 101, 2, 195, 182, 110, 116, 101, 116, 0, 8, 101, 2, 195, 182, 115, 115, 122, 101,
-			103, 0, 8, 101, 2, 195, 188, 116, 0, 8, 101, 45, 116, 110, 105, 109, 2, 195, 169, 32, 0, 8, 101, 103, 101, 109, 2, 101, 122, 0,
-			8, 101, 107, 101, 122, 115, 105, 104, 2, 101, 0, 8, 101, 110, 111, 122, 115, 117, 104, 2, 101, 0, 8, 101, 114, 101, 122, 115, 121, 103,
-			101, 2, 101, 0, 106, 1, 17, 65, 2, 17, 65, 0, 106, 1, 97, 104, 0, 106, 1, 101, 2, 101, 108, 101, 110, 116, 195, 169, 115, 197,
-			177, 3, 79, 57, 0, 4, 115, 122, 3, 79, 89, 0, 115, 122, 1, 17, 65, 2, 17, 65, 0, 115, 122, 1, 97, 110, 2, 97, 0, 4,
-			115, 1, 101, 2, 195, 161, 118, 3, 79, 91, 0, 115, 1, 101, 2, 195, 169, 103, 0, 115, 1, 101, 2, 195, 173, 107, 0, 115, 1, 186,
-			195, 2, 101, 0, 115, 8, 173, 195, 2, 101, 0, 7, 6, 115, 115, 0, 4, 122, 1, 97, 2, 105, 115, 122, 116, 101, 110, 115, 3, 89,
-			0, 122, 1, 97, 2, 105, 115, 122, 116, 195, 161, 108, 0, 122, 1, 97, 107, 2, 195, 173, 114, 111, 122, 0, 122, 1, 97, 109, 2, 195,
-			173, 114, 111, 122, 0, 122, 1, 97, 112, 2, 195, 173, 114, 111, 122, 0, 122, 1, 111, 114, 105, 112, 2, 107, 97, 0, 122, 2, 18, 66,
-			0, 122, 2, 45, 18, 66, 0, 122, 8, 97, 2, 105, 115, 122, 116, 0, 122, 8, 101, 2, 101, 110, 99, 105, 0, 122, 8, 101, 122, 115,
-			101, 110, 2, 101, 114, 0, 4, 1, 117, 105, 98, 117, 110, 97, 100, 3, 89, 12, 0, 1, 117, 116, 110, 101, 118, 117, 106, 0, 8, 101,
-			107, 2, 101, 108, 114, 105, 110, 103, 0, 122, 1, 97, 118, 97, 116, 2, 97, 0, 122, 1, 97, 118, 107, 2, 105, 97, 107, 195, 169, 114,
-			0, 122, 1, 97, 118, 108, 111, 0, 122, 1, 97, 118, 109, 97, 104, 0, 122, 1, 97, 118, 114, 111, 115, 2, 195, 161, 107, 0, 122, 1,
-			97, 118, 117, 121, 110, 0, 122, 1, 97, 118, 121, 116, 111, 107, 0, 122, 1, 97, 118, 186, 195, 121, 110, 0, 122, 1, 101, 108, 169, 195,
-			108, 182, 195, 102, 2, 101, 109, 0, 122, 1, 117, 105, 98, 117, 110, 97, 100, 0, 122, 1, 117, 116, 110, 101, 118, 117, 106, 0, 122, 8,
-			97, 108, 101, 109, 2, 195, 173, 110, 0, 122, 8, 97, 118, 97, 114, 0, 122, 8, 97, 118, 114, 111, 115, 0, 122, 8, 97, 118, 117, 115,
-			2, 97, 0, 122, 8, 169, 195, 110, 101, 112, 2, 195, 173, 110, 0, 122, 114, 3, 89, 52, 0, 122, 98, 3, 89, 71, 0, 4, 1, 117,
-			109, 2, 111, 108, 105, 110, 3, 89, 122, 0, 122, 0, 4, 1, 117, 116, 108, 101, 2, 111, 108, 3, 91, 0, 1, 145, 197, 108, 101, 108,
-			101, 102, 2, 195, 169, 103, 0, 1, 188, 195, 108, 112, 2, 122, 115, 0, 2, 18, 66, 0, 2, 45, 18, 66, 0, 4, 1, 105, 114, 102,
-			2, 122, 195, 182, 108, 3, 91, 12, 0, 1, 161, 195, 110, 97, 98, 98, 111, 114, 0, 114, 3, 91, 52, 0, 98, 3, 91, 71, 0, 4,
-			122, 1, 97, 103, 97, 109, 2, 195, 161, 114, 195, 186, 3, 91, 89, 0, 122, 1, 97, 103, 111, 102, 2, 101, 103, 0, 122, 1, 97, 103,
-			117, 108, 2, 101, 114, 197, 177, 0, 122, 1, 97, 107, 2, 195, 169, 107, 0, 122, 1, 97, 107, 97, 107, 2, 195, 169, 107, 0, 122, 1,
-			97, 107, 114, 97, 102, 2, 101, 109, 0, 122, 1, 97, 107, 114, 97, 102, 2, 101, 114, 197, 177, 0, 122, 1, 97, 107, 114, 97, 102, 2,
-			117, 107, 0, 122, 1, 97, 107, 114, 97, 102, 2, 195, 188, 114, 107, 0, 122, 1, 97, 107, 114, 97, 102, 2, 197, 145, 108, 197, 145, 0,
-			122, 1, 97, 109, 114, 161, 195, 104, 2, 97, 98, 0, 122, 1, 97, 109, 114, 161, 195, 104, 2, 195, 161, 109, 0, 122, 1, 97, 109, 114,
-			161, 195, 104, 2, 195, 182, 0, 122, 1, 97, 115, 2, 101, 109, 0, 122, 1, 97, 115, 97, 118, 2, 97, 107, 0, 122, 1, 97, 116, 116,
-			111, 108, 97, 104, 0, 122, 1, 97, 116, 117, 2, 101, 114, 0, 122, 1, 97, 116, 117, 2, 105, 110, 116, 0, 122, 1, 97, 116, 117, 2,
-			111, 108, 103, 0, 122, 1, 97, 116, 117, 2, 195, 161, 108, 0, 122, 1, 97, 116, 117, 2, 195, 161, 109, 0, 122, 1, 97, 118, 109, 97,
-			104, 2, 197, 145, 107, 101, 0, 122, 1, 97, 122, 114, 111, 98, 2, 197, 145, 114, 0, 122, 1, 101, 98, 98, 182, 195, 116, 2, 195, 161,
-			109, 0, 122, 1, 101, 100, 101, 122, 105, 116, 2, 195, 161, 108, 108, 195, 161, 115, 0, 122, 1, 101, 100, 108, 182, 195, 122, 2, 195, 188,
-			114, 107, 0, 122, 1, 101, 100, 108, 182, 195, 122, 2, 195, 188, 114, 107, 101, 0, 122, 1, 101, 100, 169, 195, 2, 195, 161, 106, 0, 122,
-			1, 101, 100, 169, 195, 2, 195, 188, 108, 0, 122, 1, 101, 104, 169, 195, 2, 195, 161, 106, 0, 122, 1, 101, 104, 169, 195, 109, 0, 122,
-			1, 101, 107, 169, 195, 2, 195, 179, 0, 122, 1, 101, 107, 169, 195, 2, 195, 179, 108, 0, 122, 1, 101, 107, 169, 195, 107, 2, 195, 188,
-			114, 107, 0, 122, 1, 101, 108, 101, 100, 101, 102, 2, 195, 161, 114, 110, 121, 0, 122, 1, 101, 108, 101, 102, 106, 101, 116, 2, 195, 161,
-			106, 0, 122, 1, 101, 108, 169, 195, 2, 101, 109, 0, 122, 1, 101, 108, 182, 195, 107, 2, 101, 109, 0, 122, 1, 101, 109, 101, 110, 2,
-			195, 173, 118, 0, 122, 1, 101, 109, 101, 110, 2, 197, 145, 114, 109, 0, 122, 1, 101, 109, 121, 108, 101, 115, 2, 197, 145, 107, 101, 0,
-			122, 1, 101, 110, 101, 121, 103, 101, 0, 122, 1, 101, 110, 101, 121, 103, 101, 2, 195, 161, 108, 0, 122, 1, 101, 112, 101, 122, 115, 2,
-			111, 109, 98, 97, 116, 0, 122, 1, 101, 114, 100, 101, 109, 2, 195, 169, 107, 0, 122, 1, 101, 114, 101, 118, 2, 197, 145, 107, 101, 0,
-			122, 1, 101, 114, 101, 122, 115, 145, 197, 108, 0, 122, 1, 101, 114, 169, 195, 104, 101, 102, 2, 195, 188, 114, 107, 0, 122, 1, 101, 114,
-			169, 195, 104, 101, 102, 2, 197, 145, 107, 101, 0, 122, 1, 101, 114, 169, 195, 118, 2, 195, 161, 106, 0, 122, 1, 101, 115, 99, 169, 195,
-			109, 0, 122, 1, 101, 115, 182, 195, 114, 182, 195, 118, 2, 197, 145, 107, 101, 0, 122, 1, 101, 116, 101, 108, 101, 121, 103, 188, 195, 2,
-			111, 98, 0, 122, 1, 101, 116, 101, 122, 114, 101, 122, 115, 2, 101, 114, 0, 122, 1, 101, 116, 114, 169, 195, 118, 2, 195, 161, 122, 97,
-			100, 0, 122, 1, 101, 116, 114, 169, 195, 118, 2, 197, 145, 108, 197, 145, 0, 122, 1, 101, 118, 100, 101, 110, 2, 195, 188, 114, 107, 0,
-			122, 1, 101, 118, 101, 108, 2, 101, 100, 0, 122, 1, 101, 118, 121, 110, 182, 195, 107, 0, 122, 1, 101, 118, 121, 110, 182, 195, 107, 2,
-			101, 107, 0, 122, 1, 101, 121, 103, 101, 104, 2, 195, 182, 103, 0, 122, 1, 101, 121, 108, 101, 107, 107, 105, 112, 2, 195, 161, 114, 110,
-			121, 0, 122, 1, 101, 121, 110, 101, 104, 114, 182, 195, 118, 2, 197, 145, 107, 101, 0, 122, 1, 101, 122, 115, 145, 197, 0, 122, 1, 101,
-			122, 188, 195, 116, 2, 101, 109, 0, 122, 1, 105, 107, 2, 101, 98, 0, 122, 1, 105, 107, 2, 101, 100, 0, 122, 1, 105, 107, 2, 101,
-			107, 114, 195, 169, 110, 121, 0, 122, 1, 105, 107, 2, 101, 114, 197, 177, 0, 122, 1, 105, 107, 2, 111, 98, 0, 122, 1, 105, 107, 2,
-			195, 161, 109, 0, 122, 1, 105, 107, 2, 195, 169, 107, 0, 122, 1, 105, 107, 2, 195, 179, 116, 195, 161, 114, 0, 122, 1, 105, 109, 97,
-			114, 105, 112, 2, 101, 114, 197, 177, 0, 122, 1, 105, 115, 99, 111, 107, 2, 101, 114, 101, 112, 0, 122, 1, 105, 116, 169, 195, 102, 2,
-			101, 114, 197, 177, 0, 122, 1, 105, 118, 182, 195, 116, 0, 122, 1, 105, 118, 182, 195, 116, 2, 195, 186, 114, 0, 122, 1, 105, 122, 161,
-			195, 98, 0, 122, 1, 105, 122, 161, 195, 111, 2, 101, 114, 197, 177, 0, 122, 1, 105, 122, 161, 195, 114, 102, 2, 101, 114, 197, 177, 0,
-			122, 1, 110, 101, 105, 108, 107, 2, 111, 102, 116, 0, 122, 1, 111, 99, 114, 97, 104, 0, 122, 1, 111, 100, 108, 111, 115, 122, 0, 122,
-			1, 111, 103, 111, 108, 97, 121, 103, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 2, 195,
-			188, 114, 107, 101, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 2, 197, 145, 107, 101, 0, 122, 1, 111, 107, 2, 97, 114, 118, 0, 122,
-			1, 111, 107, 97, 108, 2, 195, 161, 109, 0, 122, 1, 111, 107, 116, 105, 116, 2, 111, 108, 103, 195, 161, 108, 0, 122, 1, 111, 107, 161,
-			195, 98, 117, 116, 2, 101, 108, 0, 122, 1, 111, 107, 179, 195, 105, 102, 2, 101, 107, 114, 0, 122, 1, 111, 108, 169, 195, 99, 110, 161,
-			195, 112, 0, 122, 1, 111, 109, 97, 108, 108, 105, 118, 0, 122, 1, 111, 109, 97, 108, 108, 105, 118, 2, 195, 169, 107, 0, 122, 1, 111,
-			109, 111, 108, 112, 109, 101, 116, 2, 97, 107, 0, 122, 1, 111, 109, 114, 111, 107, 0, 122, 1, 111, 112, 97, 108, 2, 195, 161, 114, 0,
-			122, 1, 111, 112, 186, 195, 112, 2, 195, 186, 110, 121, 111, 103, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 107, 0, 122, 1, 111, 114,
-			97, 107, 2, 195, 169, 114, 105, 97, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 114, 105, 195, 161, 0, 122, 1, 111, 114, 97, 107, 2,
-			195, 169, 114, 105, 195, 161, 106, 195, 186, 0, 122, 1, 111, 114, 97, 109, 0, 122, 1, 111, 114, 97, 118, 97, 122, 2, 195, 188, 114, 0,
-			122, 1, 111, 114, 97, 118, 117, 102, 2, 101, 107, 195, 169, 114, 0, 122, 1, 111, 114, 105, 112, 2, 101, 109, 0, 122, 1, 111, 114, 105,
-			112, 97, 112, 0, 122, 1, 111, 114, 111, 112, 145, 197, 108, 0, 122, 1, 111, 114, 111, 116, 111, 109, 2, 101, 109, 195, 188, 118, 101, 103,
-			0, 122, 1, 111, 114, 111, 116, 111, 109, 2, 195, 161, 110, 0, 122, 1, 111, 114, 111, 122, 115, 2, 101, 114, 197, 177, 0, 122, 1, 111,
-			114, 161, 195, 118, 2, 101, 114, 0, 122, 1, 111, 114, 161, 195, 118, 2, 105, 108, 117, 101, 116, 116, 0, 122, 1, 111, 114, 161, 195, 118,
-			2, 195, 169, 112, 101, 0, 122, 1, 111, 114, 173, 195, 115, 122, 2, 195, 161, 106, 0, 122, 1, 111, 114, 173, 195, 115, 122, 2, 195, 169,
-			110, 0, 122, 1, 111, 116, 108, 161, 195, 116, 2, 195, 161, 114, 110, 121, 0, 122, 1, 111, 118, 114, 111, 2, 97, 107, 195, 169, 114, 116,
-			197, 145, 0, 122, 1, 111, 118, 114, 111, 2, 101, 109, 195, 169, 108, 121, 0, 122, 1, 111, 118, 114, 111, 2, 101, 114, 0, 122, 1, 111,
-			118, 114, 111, 2, 101, 114, 0, 122, 1, 111, 118, 114, 111, 2, 195, 161, 122, 0, 122, 1, 111, 118, 114, 111, 2, 195, 182, 118, 101, 116,
-			115, 195, 169, 103, 0, 122, 1, 111, 121, 103, 97, 102, 2, 101, 110, 116, 0, 122, 1, 111, 121, 110, 97, 114, 97, 2, 197, 145, 107, 101,
-			0, 122, 1, 114, 101, 118, 2, 97, 107, 0, 122, 1, 114, 101, 118, 2, 101, 114, 122, 0, 122, 1, 114, 111, 98, 2, 101, 109, 0, 122,
-			1, 114, 111, 98, 2, 195, 179, 114, 0, 122, 1, 114, 111, 115, 2, 101, 114, 197, 177, 0, 122, 1, 114, 111, 121, 103, 2, 197, 177, 114,
-			0, 122, 1, 114, 145, 197, 145, 197, 108, 101, 2, 101, 114, 197, 177, 0, 122, 1, 114, 161, 195, 116, 2, 101, 107, 195, 169, 114, 0, 122,
-			1, 114, 161, 195, 116, 2, 101, 114, 0, 122, 1, 114, 161, 195, 116, 2, 111, 109, 115, 122, 195, 169, 100, 0, 122, 1, 114, 161, 195, 116,
-			2, 195, 182, 118, 101, 0, 122, 1, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 111, 98, 0, 122, 1, 117, 103, 179, 195, 108, 97, 116,
-			97, 107, 2, 195, 161, 109, 0, 122, 1, 117, 107, 105, 115, 122, 117, 109, 0, 122, 1, 117, 109, 116, 105, 114, 2, 97, 98, 0, 122, 1,
-			117, 109, 122, 105, 107, 101, 116, 97, 107, 2, 101, 114, 197, 177, 0, 122, 1, 117, 110, 161, 195, 108, 117, 2, 195, 161, 122, 97, 100, 0,
-			122, 1, 117, 112, 97, 107, 0, 122, 1, 117, 112, 105, 116, 2, 195, 161, 109, 0, 122, 1, 117, 116, 105, 98, 97, 104, 2, 101, 114, 197,
-			177, 0, 122, 1, 117, 116, 110, 105, 114, 105, 98, 97, 108, 2, 101, 114, 0, 122, 1, 117, 116, 161, 195, 107, 105, 100, 110, 105, 122, 115,
-			0, 122, 1, 117, 120, 117, 108, 0, 122, 1, 117, 122, 108, 117, 112, 2, 195, 161, 109, 0, 122, 1, 145, 197, 2, 97, 114, 118, 0, 122,
-			1, 145, 197, 2, 195, 161, 114, 109, 0, 122, 1, 145, 197, 2, 195, 182, 114, 110, 121, 0, 122, 1, 145, 197, 2, 195, 188, 108, 101, 0,
-			122, 1, 145, 197, 2, 195, 188, 108, 197, 145, 0, 122, 1, 145, 197, 104, 2, 101, 114, 101, 108, 0, 122, 1, 145, 197, 104, 2, 101, 114,
-			101, 112, 0, 122, 1, 145, 197, 108, 188, 195, 112, 101, 114, 2, 116, 114, 195, 161, 106, 107, 0, 122, 1, 145, 197, 108, 188, 195, 112, 101,
-			114, 2, 195, 161, 114, 110, 121, 0, 122, 1, 145, 197, 112, 105, 99, 0, 122, 1, 161, 195, 100, 97, 2, 101, 114, 197, 177, 0, 122, 1,
-			161, 195, 100, 97, 2, 195, 188, 110, 101, 116, 0, 122, 1, 161, 195, 100, 97, 122, 161, 195, 108, 0, 122, 1, 161, 195, 100, 111, 112, 97,
-			108, 108, 161, 195, 103, 101, 109, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 100, 111, 118, 2, 105, 110, 116, 0, 122, 1, 161, 195, 100,
-			114, 161, 195, 115, 99, 2, 195, 179, 108, 0, 122, 1, 161, 195, 100, 117, 116, 2, 105, 110, 116, 0, 122, 1, 161, 195, 100, 117, 116, 2,
-			111, 109, 106, 0, 122, 1, 161, 195, 100, 179, 195, 122, 115, 2, 105, 0, 122, 1, 161, 195, 101, 116, 2, 101, 114, 118, 0, 122, 1, 161,
-			195, 103, 108, 97, 115, 114, 161, 195, 116, 2, 195, 161, 109, 98, 97, 0, 122, 1, 161, 195, 103, 110, 111, 114, 111, 122, 115, 0, 122, 1,
-			161, 195, 103, 110, 111, 122, 114, 111, 98, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 110, 161, 195, 114, 2, 101, 114, 0, 122, 1,
-			161, 195, 103, 111, 104, 117, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 111, 116, 116, 97, 107, 0, 122, 1, 161, 195, 103, 111,
-			118, 161, 195, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 114, 161, 195, 115, 0, 122, 1, 161, 195, 103, 122, 111, 109, 0,
-			122, 1, 161, 195, 103, 186, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 104, 108, 161, 195, 109, 0, 122, 1, 161, 195, 104, 117,
-			114, 2, 101, 107, 101, 114, 101, 0, 122, 1, 161, 195, 104, 117, 114, 2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 161, 195, 104, 117,
-			114, 2, 111, 98, 0, 122, 1, 161, 195, 106, 161, 195, 102, 2, 101, 114, 0, 122, 1, 161, 195, 107, 97, 108, 2, 101, 110, 0, 122, 1,
-			161, 195, 107, 105, 114, 112, 97, 112, 0, 122, 1, 161, 195, 107, 110, 111, 115, 0, 122, 1, 161, 195, 107, 111, 122, 115, 2, 101, 114, 0,
-			122, 1, 161, 195, 107, 111, 122, 115, 2, 195, 161, 109, 0, 122, 1, 161, 195, 108, 97, 116, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161,
-			195, 108, 106, 97, 104, 2, 195, 182, 103, 0, 122, 1, 161, 195, 108, 107, 117, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108,
-			108, 97, 118, 2, 97, 98, 0, 122, 1, 161, 195, 108, 108, 161, 195, 0, 122, 1, 161, 195, 108, 108, 161, 195, 2, 195, 182, 103, 0, 122,
-			1, 161, 195, 108, 108, 161, 195, 110, 101, 108, 108, 101, 2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 161, 195, 108, 109, 97, 122, 115,
-			117, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108, 109, 111, 2, 97, 103, 0, 122, 1, 161, 195, 108, 109, 161, 195, 116, 2,
-			195, 169, 107, 0, 122, 1, 161, 195, 108, 114, 111, 116, 105, 118, 0, 122, 1, 161, 195, 108, 116, 179, 195, 112, 0, 122, 1, 161, 195, 108,
-			117, 100, 110, 161, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108, 117, 103, 161, 195, 116, 2, 97, 98, 195, 161, 108, 121, 0,
-			122, 1, 161, 195, 108, 117, 106, 161, 195, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108, 179, 195, 122, 115, 2, 97, 98, 97, 100, 0,
-			122, 1, 161, 195, 109, 2, 101, 114, 0, 122, 1, 161, 195, 109, 2, 111, 114, 0, 122, 1, 161, 195, 109, 2, 197, 145, 114, 0, 122, 1,
-			161, 195, 109, 108, 97, 2, 195, 188, 114, 107, 0, 122, 1, 161, 195, 109, 108, 97, 2, 195, 188, 114, 107, 101, 0, 122, 1, 161, 195, 109,
-			111, 116, 161, 195, 108, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 109, 111, 121, 110, 2, 97, 98, 0, 122, 1, 161, 195, 109, 111, 121,
-			110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 98, 98, 111, 114, 2, 101, 114, 0, 122, 1, 161, 195, 110, 97, 98, 98, 111,
-			115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 104, 117, 122, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 107,
-			107, 105, 121, 110, 2, 101, 114, 0, 122, 1, 161, 195, 110, 97, 108, 108, 105, 118, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97,
-			116, 116, 97, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 103, 161, 195, 109, 0, 122, 1, 161, 195, 110, 114, 97, 98, 2,
-			197, 145, 107, 0, 122, 1, 161, 195, 110, 114, 161, 195, 112, 2, 195, 169, 107, 0, 122, 1, 161, 195, 110, 169, 195, 122, 115, 2, 101, 107,
-			0, 122, 1, 161, 195, 112, 97, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 112, 97, 115, 99, 2, 195, 161, 109, 0, 122, 1,
-			161, 195, 114, 97, 112, 97, 107, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 97, 118, 97, 107, 2, 101, 114, 197, 177, 0, 122, 1,
-			161, 195, 114, 97, 118, 97, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 103, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161,
-			195, 114, 161, 195, 106, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 161, 195, 106, 2, 111, 108, 103, 195, 161, 108, 97, 116, 0, 122,
+			2, 101, 110, 115, 195, 186, 108, 121, 0, 1, 101, 2, 101, 115, 195, 173, 116, 0, 1, 101, 2, 101, 115, 195, 188, 108, 101, 116, 0, 1,
+			101, 2, 101, 116, 195, 169, 114, 116, 0, 1, 101, 2, 101, 122, 107, 101, 100, 0, 1, 101, 2, 101, 122, 116, 101, 116, 0, 1, 101, 2,
+			105, 100, 101, 106, 197, 177, 0, 1, 101, 2, 105, 114, 195, 161, 110, 121, 195, 186, 0, 1, 101, 2, 195, 161, 108, 116, 97, 108, 195, 161,
+			110, 0, 1, 101, 2, 195, 169, 106, 115, 122, 97, 107, 0, 1, 101, 2, 195, 169, 114, 116, 0, 1, 101, 2, 195, 169, 114, 116, 101, 108,
+			109, 197, 177, 0, 1, 101, 2, 195, 186, 116, 116, 97, 108, 0, 1, 101, 45, 109, 101, 110, 2, 101, 122, 0, 1, 101, 45, 109, 101, 110,
+			2, 105, 107, 0, 1, 101, 45, 109, 101, 110, 2, 195, 188, 116, 116, 0, 1, 101, 97, 114, 106, 186, 195, 2, 101, 115, 195, 173, 116, 0,
+			1, 101, 99, 110, 105, 109, 114, 97, 104, 2, 101, 100, 105, 107, 0, 1, 101, 101, 108, 101, 98, 2, 101, 122, 0, 1, 101, 101, 122, 115,
+			115, 182, 195, 2, 101, 115, 195, 173, 116, 0, 1, 101, 103, 101, 109, 108, 169, 195, 102, 2, 101, 122, 0, 1, 101, 105, 107, 2, 101, 122,
+			0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 100, 105, 107, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 100, 115, 122, 101, 114, 0, 1,
+			101, 110, 101, 122, 105, 116, 2, 101, 110, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101, 115, 0, 1, 101, 110, 101, 122, 105, 116, 2, 101,
+			116, 0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 100, 0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 100, 105, 107, 0, 1, 101,
+			110, 111, 122, 115, 117, 104, 2, 101, 115, 0, 1, 101, 110, 111, 122, 115, 117, 104, 2, 101, 122, 0, 1, 101, 116, 101, 108, 188, 195, 112,
+			169, 195, 2, 195, 188, 116, 116, 0, 1, 101, 122, 161, 195, 122, 115, 2, 101, 100, 105, 107, 0, 1, 101, 122, 161, 195, 122, 115, 2, 101,
+			115, 0, 8, 101, 2, 97, 98, 108, 97, 107, 0, 8, 101, 2, 101, 108, 0, 8, 101, 2, 101, 115, 0, 8, 101, 2, 101, 116, 32, 0,
+			8, 101, 2, 101, 116, 108, 101, 110, 0, 8, 101, 2, 101, 122, 0, 8, 101, 2, 101, 122, 109, 195, 169, 110, 121, 0, 8, 101, 2, 105,
+			100, 197, 145, 0, 8, 101, 2, 105, 107, 0, 8, 101, 2, 111, 108, 100, 97, 108, 0, 8, 101, 2, 195, 161, 103, 121, 0, 8, 101, 2,
+			195, 169, 32, 0, 8, 101, 2, 195, 169, 118, 0, 8, 101, 2, 195, 179, 114, 195, 161, 0, 8, 101, 2, 195, 182, 110, 116, 101, 116, 0,
+			8, 101, 2, 195, 182, 115, 115, 122, 101, 103, 0, 8, 101, 2, 195, 188, 116, 0, 8, 101, 45, 116, 110, 105, 109, 2, 195, 169, 32, 0,
+			8, 101, 103, 101, 109, 2, 101, 122, 0, 8, 101, 107, 101, 122, 115, 105, 104, 2, 101, 0, 8, 101, 110, 111, 122, 115, 117, 104, 2, 101,
+			0, 8, 101, 114, 101, 122, 115, 121, 103, 101, 2, 101, 0, 106, 1, 17, 65, 2, 17, 65, 0, 106, 1, 97, 104, 0, 106, 1, 101, 2,
+			101, 108, 101, 110, 116, 195, 169, 115, 197, 177, 3, 79, 57, 0, 4, 115, 122, 3, 79, 89, 0, 115, 122, 1, 17, 65, 2, 17, 65, 0,
+			115, 122, 1, 97, 110, 2, 97, 0, 4, 115, 1, 101, 2, 195, 161, 118, 3, 79, 91, 0, 115, 1, 101, 2, 195, 169, 103, 0, 115, 1,
+			101, 2, 195, 173, 107, 0, 115, 1, 186, 195, 2, 101, 0, 115, 8, 173, 195, 2, 101, 0, 7, 6, 115, 115, 0, 4, 122, 1, 97, 2,
+			105, 115, 122, 116, 101, 110, 115, 3, 89, 0, 122, 1, 97, 2, 105, 115, 122, 116, 195, 161, 108, 0, 122, 1, 97, 107, 2, 195, 173, 114,
+			111, 122, 0, 122, 1, 97, 109, 2, 195, 173, 114, 111, 122, 0, 122, 1, 97, 112, 2, 195, 173, 114, 111, 122, 0, 122, 1, 111, 114, 105,
+			112, 2, 107, 97, 0, 122, 2, 18, 66, 0, 122, 2, 45, 18, 66, 0, 122, 8, 97, 2, 105, 115, 122, 116, 0, 122, 8, 101, 2, 101,
+			110, 99, 105, 0, 122, 8, 101, 122, 115, 101, 110, 2, 101, 114, 0, 4, 1, 117, 105, 98, 117, 110, 97, 100, 3, 89, 12, 0, 1, 117,
+			116, 110, 101, 118, 117, 106, 0, 8, 101, 107, 2, 101, 108, 114, 105, 110, 103, 0, 122, 1, 97, 118, 97, 116, 2, 97, 0, 122, 1, 97,
+			118, 107, 2, 105, 97, 107, 195, 169, 114, 0, 122, 1, 97, 118, 108, 111, 0, 122, 1, 97, 118, 109, 97, 104, 0, 122, 1, 97, 118, 114,
+			111, 115, 2, 195, 161, 107, 0, 122, 1, 97, 118, 117, 107, 2, 97, 108, 0, 122, 1, 97, 118, 117, 121, 110, 0, 122, 1, 97, 118, 121,
+			116, 111, 107, 0, 122, 1, 97, 118, 186, 195, 121, 110, 0, 122, 1, 101, 108, 169, 195, 108, 182, 195, 102, 2, 101, 109, 0, 122, 1, 101,
+			117, 108, 98, 2, 97, 108, 0, 122, 1, 101, 118, 2, 197, 145, 107, 0, 122, 1, 101, 118, 101, 108, 101, 98, 2, 101, 110, 0, 122, 1,
+			101, 118, 121, 110, 182, 195, 107, 2, 195, 169, 0, 122, 1, 111, 114, 2, 97, 98, 98, 0, 122, 1, 117, 105, 98, 117, 110, 97, 100, 0,
+			122, 1, 117, 116, 110, 101, 118, 117, 106, 0, 122, 1, 161, 195, 100, 97, 118, 0, 122, 1, 161, 195, 114, 103, 117, 116, 105, 109, 2, 97,
+			108, 0, 122, 1, 169, 195, 114, 101, 103, 110, 101, 116, 2, 195, 188, 114, 107, 0, 122, 8, 97, 108, 101, 109, 2, 195, 173, 110, 0, 122,
+			8, 97, 118, 97, 114, 0, 122, 8, 97, 118, 114, 111, 115, 0, 122, 8, 97, 118, 117, 115, 2, 97, 0, 122, 8, 97, 118, 121, 116, 97,
+			107, 0, 122, 8, 169, 195, 110, 101, 112, 2, 195, 173, 110, 0, 122, 114, 3, 89, 52, 0, 122, 98, 3, 89, 71, 0, 4, 1, 117, 109,
+			2, 111, 108, 105, 110, 3, 89, 122, 0, 122, 0, 4, 1, 117, 116, 108, 101, 2, 111, 108, 3, 91, 0, 1, 145, 197, 108, 101, 108, 101,
+			102, 2, 195, 169, 103, 0, 1, 188, 195, 108, 112, 2, 122, 115, 0, 2, 18, 66, 0, 2, 45, 18, 66, 0, 4, 1, 105, 114, 102, 2,
+			122, 195, 182, 108, 3, 91, 12, 0, 1, 161, 195, 110, 97, 98, 98, 111, 114, 0, 114, 3, 91, 52, 0, 98, 3, 91, 71, 0, 4, 122,
+			1, 97, 100, 161, 195, 110, 3, 91, 89, 0, 122, 1, 97, 103, 97, 109, 2, 105, 110, 116, 0, 122, 1, 97, 103, 97, 109, 2, 195, 161,
+			114, 195, 186, 0, 122, 1, 97, 103, 111, 102, 0, 122, 1, 97, 103, 111, 102, 2, 101, 103, 0, 122, 1, 97, 103, 114, 111, 104, 0, 122,
+			1, 97, 103, 117, 108, 2, 101, 114, 197, 177, 0, 122, 1, 97, 104, 114, 182, 195, 115, 0, 122, 1, 97, 107, 2, 195, 169, 107, 0, 122,
+			1, 97, 107, 97, 107, 0, 122, 1, 97, 107, 97, 107, 2, 195, 169, 107, 0, 122, 1, 97, 107, 104, 169, 195, 109, 2, 101, 114, 0, 122,
+			1, 97, 107, 108, 108, 101, 109, 0, 122, 1, 97, 107, 114, 97, 102, 2, 101, 109, 0, 122, 1, 97, 107, 114, 97, 102, 2, 101, 114, 197,
+			177, 0, 122, 1, 97, 107, 114, 97, 102, 2, 117, 107, 0, 122, 1, 97, 107, 114, 97, 102, 2, 195, 188, 114, 107, 0, 122, 1, 97, 107,
+			114, 97, 102, 2, 197, 145, 108, 197, 145, 0, 122, 1, 97, 108, 105, 121, 110, 0, 122, 1, 97, 109, 114, 161, 195, 104, 0, 122, 1, 97,
+			109, 114, 161, 195, 104, 2, 97, 98, 0, 122, 1, 97, 109, 114, 161, 195, 104, 2, 195, 161, 109, 0, 122, 1, 97, 109, 114, 161, 195, 104,
+			2, 195, 182, 0, 122, 1, 97, 115, 2, 101, 109, 0, 122, 1, 97, 115, 2, 105, 107, 108, 0, 122, 1, 97, 115, 2, 105, 109, 98, 0,
+			122, 1, 97, 115, 2, 111, 98, 111, 114, 0, 122, 1, 97, 115, 2, 111, 98, 114, 0, 122, 1, 97, 115, 97, 118, 2, 97, 107, 0, 122,
+			1, 97, 116, 116, 111, 108, 97, 104, 0, 122, 1, 97, 116, 117, 0, 122, 1, 97, 116, 117, 2, 101, 114, 0, 122, 1, 97, 116, 117, 2,
+			105, 110, 116, 0, 122, 1, 97, 116, 117, 2, 111, 108, 103, 0, 122, 1, 97, 116, 117, 2, 195, 161, 108, 0, 122, 1, 97, 116, 117, 2,
+			195, 161, 109, 0, 122, 1, 97, 118, 109, 97, 104, 2, 197, 145, 107, 101, 0, 122, 1, 97, 118, 114, 97, 122, 115, 0, 122, 1, 97, 122,
+			114, 111, 98, 2, 197, 145, 114, 0, 122, 1, 97, 122, 161, 195, 122, 115, 0, 122, 1, 101, 98, 98, 182, 195, 116, 2, 195, 161, 109, 0,
+			122, 1, 101, 98, 101, 119, 0, 122, 1, 101, 100, 101, 122, 105, 116, 0, 122, 1, 101, 100, 101, 122, 105, 116, 2, 195, 161, 108, 108, 195,
+			161, 115, 0, 122, 1, 101, 100, 108, 182, 195, 122, 2, 195, 188, 114, 107, 0, 122, 1, 101, 100, 108, 182, 195, 122, 2, 195, 188, 114, 107,
+			101, 0, 122, 1, 101, 100, 169, 195, 2, 195, 161, 106, 0, 122, 1, 101, 100, 169, 195, 2, 195, 188, 108, 0, 122, 1, 101, 103, 169, 195,
+			115, 100, 108, 182, 195, 122, 0, 122, 1, 101, 103, 169, 195, 115, 114, 101, 116, 115, 101, 109, 0, 122, 1, 101, 104, 114, 101, 116, 0, 122,
+			1, 101, 104, 169, 195, 2, 195, 161, 106, 0, 122, 1, 101, 104, 169, 195, 109, 0, 122, 1, 101, 105, 114, 97, 99, 0, 122, 1, 101, 106,
+			108, 101, 116, 0, 122, 1, 101, 107, 101, 110, 169, 195, 0, 122, 1, 101, 107, 169, 195, 2, 195, 179, 0, 122, 1, 101, 107, 169, 195, 2,
+			195, 179, 108, 0, 122, 1, 101, 107, 169, 195, 107, 2, 195, 188, 114, 107, 0, 122, 1, 101, 108, 2, 97, 98, 0, 122, 1, 101, 108, 101,
+			100, 101, 102, 2, 195, 161, 114, 110, 121, 0, 122, 1, 101, 108, 101, 102, 106, 101, 116, 2, 195, 161, 106, 0, 122, 1, 101, 108, 169, 195,
+			2, 101, 109, 0, 122, 1, 101, 108, 169, 195, 122, 115, 0, 122, 1, 101, 108, 182, 195, 107, 0, 122, 1, 101, 108, 182, 195, 107, 2, 101,
+			109, 0, 122, 1, 101, 109, 101, 110, 2, 195, 173, 118, 0, 122, 1, 101, 109, 101, 110, 2, 197, 145, 114, 109, 0, 122, 1, 101, 109, 121,
+			108, 101, 115, 2, 197, 145, 107, 101, 0, 122, 1, 101, 110, 101, 121, 103, 101, 0, 122, 1, 101, 110, 101, 121, 103, 101, 2, 195, 161, 108,
+			0, 122, 1, 101, 112, 101, 122, 115, 2, 111, 109, 98, 97, 116, 0, 122, 1, 101, 114, 100, 101, 109, 2, 195, 169, 107, 0, 122, 1, 101,
+			114, 101, 118, 2, 197, 145, 107, 101, 0, 122, 1, 101, 114, 101, 122, 115, 145, 197, 108, 0, 122, 1, 101, 114, 169, 195, 104, 101, 102, 2,
+			195, 188, 114, 107, 0, 122, 1, 101, 114, 169, 195, 104, 101, 102, 2, 197, 145, 107, 101, 0, 122, 1, 101, 114, 169, 195, 118, 2, 195, 161,
+			106, 0, 122, 1, 101, 115, 99, 169, 195, 109, 0, 122, 1, 101, 115, 182, 195, 114, 182, 195, 118, 2, 197, 145, 107, 101, 0, 122, 1, 101,
+			116, 101, 108, 101, 121, 103, 188, 195, 2, 111, 98, 0, 122, 1, 101, 116, 101, 122, 114, 101, 122, 115, 2, 101, 114, 0, 122, 1, 101, 116,
+			110, 101, 104, 0, 122, 1, 101, 116, 110, 169, 195, 107, 110, 182, 195, 0, 122, 1, 101, 116, 114, 169, 195, 118, 2, 195, 161, 122, 97, 100,
+			0, 122, 1, 101, 116, 114, 169, 195, 118, 2, 197, 145, 108, 197, 145, 0, 122, 1, 101, 116, 116, 101, 107, 0, 122, 1, 101, 117, 108, 98,
+			0, 122, 1, 101, 118, 100, 101, 110, 2, 195, 188, 114, 107, 0, 122, 1, 101, 118, 101, 108, 0, 122, 1, 101, 118, 101, 108, 2, 101, 100,
+			0, 122, 1, 101, 118, 121, 110, 182, 195, 107, 0, 122, 1, 101, 118, 121, 110, 182, 195, 107, 2, 101, 107, 0, 122, 1, 101, 118, 173, 195,
+			109, 100, 108, 182, 195, 102, 0, 122, 1, 101, 118, 177, 197, 109, 100, 108, 182, 195, 102, 0, 122, 1, 101, 118, 177, 197, 109, 122, 169, 195,
+			107, 0, 122, 1, 101, 121, 103, 101, 2, 195, 161, 109, 0, 122, 1, 101, 121, 103, 101, 104, 2, 195, 182, 103, 0, 122, 1, 101, 121, 103,
+			169, 195, 110, 0, 122, 1, 101, 121, 108, 101, 107, 107, 105, 112, 2, 195, 161, 114, 110, 121, 0, 122, 1, 101, 121, 110, 101, 104, 114, 182,
+			195, 118, 2, 197, 145, 107, 101, 0, 122, 1, 101, 121, 110, 169, 195, 122, 115, 114, 101, 0, 122, 1, 101, 122, 115, 145, 197, 0, 122, 1,
+			101, 122, 115, 173, 195, 100, 0, 122, 1, 101, 122, 188, 195, 116, 2, 101, 109, 0, 122, 1, 105, 107, 2, 101, 98, 0, 122, 1, 105, 107,
+			2, 101, 100, 0, 122, 1, 105, 107, 2, 101, 107, 101, 0, 122, 1, 105, 107, 2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 105, 107,
+			2, 101, 114, 197, 177, 0, 122, 1, 105, 107, 2, 111, 98, 0, 122, 1, 105, 107, 2, 195, 161, 109, 0, 122, 1, 105, 107, 2, 195, 169,
+			107, 0, 122, 1, 105, 107, 2, 195, 179, 116, 195, 161, 114, 0, 122, 1, 105, 108, 161, 195, 105, 99, 111, 122, 115, 0, 122, 1, 105, 108,
+			161, 195, 114, 117, 116, 108, 117, 107, 0, 122, 1, 105, 109, 97, 104, 2, 195, 173, 110, 0, 122, 1, 105, 109, 97, 114, 105, 112, 0, 122,
+			1, 105, 109, 97, 114, 105, 112, 2, 101, 114, 197, 177, 0, 122, 1, 105, 110, 114, 111, 107, 105, 110, 117, 0, 122, 1, 105, 115, 99, 111,
+			107, 2, 101, 114, 101, 112, 0, 122, 1, 105, 116, 115, 101, 112, 0, 122, 1, 105, 116, 169, 195, 102, 0, 122, 1, 105, 116, 169, 195, 102,
+			2, 101, 114, 197, 177, 0, 122, 1, 105, 118, 182, 195, 116, 0, 122, 1, 105, 118, 182, 195, 116, 2, 195, 186, 114, 0, 122, 1, 105, 120,
+			97, 116, 0, 122, 1, 105, 122, 161, 195, 98, 0, 122, 1, 105, 122, 161, 195, 102, 0, 122, 1, 105, 122, 161, 195, 111, 2, 101, 114, 197,
+			177, 0, 122, 1, 105, 122, 161, 195, 114, 102, 2, 101, 114, 197, 177, 0, 122, 1, 105, 122, 173, 195, 108, 97, 110, 97, 0, 122, 1, 105,
+			122, 173, 195, 114, 107, 0, 122, 1, 105, 122, 179, 195, 100, 0, 122, 1, 105, 122, 179, 195, 104, 99, 105, 122, 115, 112, 0, 122, 1, 110,
+			97, 116, 115, 110, 111, 107, 0, 122, 1, 110, 101, 100, 105, 99, 110, 105, 0, 122, 1, 110, 101, 100, 105, 122, 101, 114, 0, 122, 1, 110,
+			101, 105, 108, 107, 2, 111, 102, 116, 0, 122, 1, 110, 101, 110, 105, 116, 110, 111, 107, 0, 122, 1, 110, 101, 118, 108, 111, 118, 101, 0,
+			122, 1, 110, 161, 195, 109, 114, 111, 102, 2, 105, 110, 116, 0, 122, 1, 110, 161, 195, 114, 103, 105, 109, 101, 0, 122, 1, 110, 161, 195,
+			116, 117, 109, 0, 122, 1, 111, 99, 114, 97, 0, 122, 1, 111, 99, 114, 97, 104, 0, 122, 1, 111, 100, 97, 121, 110, 161, 195, 104, 0,
+			122, 1, 111, 100, 108, 111, 115, 122, 0, 122, 1, 111, 102, 2, 195, 173, 110, 0, 122, 1, 111, 103, 110, 161, 195, 108, 0, 122, 1, 111,
+			103, 111, 108, 97, 121, 103, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 2, 195, 188, 114,
+			107, 101, 0, 122, 1, 111, 103, 161, 195, 108, 105, 118, 2, 197, 145, 107, 101, 0, 122, 1, 111, 107, 2, 97, 114, 118, 0, 122, 1, 111,
+			107, 97, 108, 2, 195, 161, 109, 0, 122, 1, 111, 107, 105, 98, 117, 107, 0, 122, 1, 111, 107, 108, 105, 121, 103, 0, 122, 1, 111, 107,
+			110, 117, 98, 114, 101, 118, 0, 122, 1, 111, 107, 116, 105, 116, 2, 111, 108, 103, 0, 122, 1, 111, 107, 161, 195, 98, 117, 116, 2, 101,
+			108, 0, 122, 1, 111, 107, 161, 195, 114, 0, 122, 1, 111, 107, 169, 195, 116, 161, 195, 106, 0, 122, 1, 111, 107, 179, 195, 105, 102, 2,
+			101, 107, 114, 0, 122, 1, 111, 108, 161, 195, 112, 2, 101, 110, 0, 122, 1, 111, 108, 169, 195, 99, 110, 161, 195, 112, 0, 122, 1, 111,
+			109, 97, 108, 108, 105, 118, 0, 122, 1, 111, 109, 97, 108, 108, 105, 118, 2, 195, 169, 107, 0, 122, 1, 111, 109, 111, 108, 112, 109, 101,
+			116, 2, 97, 107, 0, 122, 1, 111, 109, 114, 111, 107, 0, 122, 1, 111, 112, 97, 108, 2, 195, 161, 114, 0, 122, 1, 111, 112, 186, 195,
+			112, 2, 195, 186, 110, 121, 111, 103, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 107, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 114,
+			105, 97, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 114, 105, 195, 161, 0, 122, 1, 111, 114, 97, 107, 2, 195, 169, 114, 105, 195, 161,
+			106, 195, 186, 0, 122, 1, 111, 114, 97, 109, 0, 122, 1, 111, 114, 97, 118, 97, 122, 2, 195, 188, 114, 0, 122, 1, 111, 114, 97, 118,
+			117, 102, 0, 122, 1, 111, 114, 97, 118, 117, 102, 2, 101, 107, 195, 169, 114, 0, 122, 1, 111, 114, 105, 112, 2, 101, 109, 0, 122, 1,
+			111, 114, 105, 112, 97, 112, 0, 122, 1, 111, 114, 111, 112, 145, 197, 108, 0, 122, 1, 111, 114, 111, 116, 111, 109, 0, 122, 1, 111, 114,
+			111, 116, 111, 109, 2, 101, 109, 195, 188, 118, 101, 103, 0, 122, 1, 111, 114, 111, 116, 111, 109, 2, 195, 161, 110, 0, 122, 1, 111, 114,
+			111, 122, 115, 2, 101, 114, 197, 177, 0, 122, 1, 111, 114, 161, 195, 112, 107, 169, 195, 114, 101, 107, 0, 122, 1, 111, 114, 161, 195, 116,
+			118, 121, 110, 182, 195, 107, 0, 122, 1, 111, 114, 161, 195, 118, 2, 101, 114, 0, 122, 1, 111, 114, 161, 195, 118, 2, 105, 108, 117, 101,
+			116, 116, 0, 122, 1, 111, 114, 161, 195, 118, 2, 195, 169, 112, 101, 0, 122, 1, 111, 114, 173, 195, 115, 122, 2, 195, 161, 106, 0, 122,
+			1, 111, 114, 173, 195, 115, 122, 2, 195, 169, 110, 0, 122, 1, 111, 114, 179, 195, 107, 2, 101, 110, 0, 122, 1, 111, 115, 122, 186, 195,
+			114, 0, 122, 1, 111, 116, 97, 107, 97, 108, 0, 122, 1, 111, 116, 105, 112, 114, 161, 195, 107, 0, 122, 1, 111, 116, 108, 161, 195, 116,
+			2, 195, 161, 114, 110, 121, 0, 122, 1, 111, 116, 122, 105, 98, 0, 122, 1, 111, 118, 114, 111, 0, 122, 1, 111, 118, 114, 111, 2, 97,
+			107, 195, 169, 114, 116, 197, 145, 0, 122, 1, 111, 118, 114, 111, 2, 101, 109, 195, 169, 108, 121, 0, 122, 1, 111, 118, 114, 111, 2, 101,
+			114, 0, 122, 1, 111, 118, 114, 111, 2, 101, 114, 0, 122, 1, 111, 118, 114, 111, 2, 195, 161, 122, 0, 122, 1, 111, 118, 114, 111, 2,
+			195, 182, 118, 101, 116, 115, 195, 169, 103, 0, 122, 1, 111, 121, 103, 97, 102, 2, 101, 110, 116, 0, 122, 1, 111, 121, 108, 161, 195, 103,
+			114, 101, 116, 122, 115, 101, 0, 122, 1, 111, 121, 110, 97, 114, 97, 2, 197, 145, 107, 101, 0, 122, 1, 114, 101, 118, 2, 97, 107, 0,
+			122, 1, 114, 101, 118, 2, 101, 114, 0, 122, 1, 114, 101, 118, 2, 101, 114, 122, 0, 122, 1, 114, 111, 98, 2, 101, 109, 0, 122, 1,
+			114, 111, 98, 2, 195, 179, 114, 0, 122, 1, 114, 111, 115, 2, 101, 114, 197, 177, 0, 122, 1, 114, 111, 121, 103, 2, 197, 177, 114, 0,
+			122, 1, 114, 145, 197, 145, 197, 108, 101, 2, 101, 114, 197, 177, 0, 122, 1, 114, 161, 195, 116, 2, 101, 107, 195, 169, 114, 0, 122, 1,
+			114, 161, 195, 116, 2, 101, 114, 0, 122, 1, 114, 161, 195, 116, 2, 111, 109, 115, 122, 195, 169, 100, 0, 122, 1, 114, 161, 195, 116, 2,
+			195, 182, 118, 101, 0, 122, 1, 114, 161, 195, 116, 114, 111, 107, 0, 122, 1, 117, 100, 179, 195, 105, 114, 101, 112, 0, 122, 1, 117, 103,
+			161, 195, 109, 0, 122, 1, 117, 103, 179, 195, 103, 97, 100, 101, 112, 0, 122, 1, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 111, 98,
+			0, 122, 1, 117, 103, 179, 195, 108, 97, 116, 97, 107, 2, 195, 161, 109, 0, 122, 1, 117, 103, 179, 195, 108, 105, 112, 101, 0, 122, 1,
+			117, 103, 179, 195, 108, 111, 104, 99, 105, 122, 115, 112, 0, 122, 1, 117, 103, 179, 195, 108, 111, 114, 111, 101, 116, 101, 109, 0, 122, 1,
+			117, 107, 105, 109, 97, 110, 105, 100, 0, 122, 1, 117, 107, 105, 110, 111, 114, 116, 107, 101, 108, 101, 0, 122, 1, 117, 107, 105, 114, 116,
+			110, 105, 0, 122, 1, 117, 107, 105, 115, 122, 117, 109, 0, 122, 1, 117, 107, 105, 116, 101, 116, 110, 105, 122, 115, 0, 122, 1, 117, 107,
+			105, 116, 122, 115, 117, 107, 97, 0, 122, 1, 117, 108, 107, 105, 99, 0, 122, 1, 117, 108, 173, 195, 116, 115, 0, 122, 1, 117, 108, 179,
+			195, 112, 0, 122, 1, 117, 109, 116, 105, 114, 0, 122, 1, 117, 109, 116, 105, 114, 2, 97, 98, 0, 122, 1, 117, 109, 122, 97, 103, 114,
+			111, 0, 122, 1, 117, 109, 122, 105, 107, 101, 116, 97, 107, 2, 101, 114, 197, 177, 0, 122, 1, 117, 109, 122, 105, 108, 97, 116, 105, 112,
+			97, 107, 0, 122, 1, 117, 109, 122, 105, 114, 117, 116, 0, 122, 1, 117, 109, 122, 105, 116, 117, 97, 0, 122, 1, 117, 110, 105, 99, 105,
+			114, 0, 122, 1, 117, 110, 161, 195, 108, 117, 2, 195, 161, 122, 97, 100, 0, 122, 1, 117, 110, 179, 195, 107, 97, 105, 100, 0, 122, 1,
+			117, 110, 179, 195, 114, 116, 0, 122, 1, 117, 112, 97, 107, 0, 122, 1, 117, 112, 105, 116, 2, 195, 161, 109, 0, 122, 1, 117, 112, 173,
+			195, 116, 0, 122, 1, 117, 114, 112, 105, 99, 0, 122, 1, 117, 114, 116, 105, 99, 0, 122, 1, 117, 114, 173, 195, 118, 0, 122, 1, 117,
+			114, 179, 195, 107, 0, 122, 1, 117, 115, 179, 195, 109, 2, 101, 114, 0, 122, 1, 117, 116, 105, 98, 97, 104, 2, 101, 114, 197, 177, 0,
+			122, 1, 117, 116, 107, 97, 116, 0, 122, 1, 117, 116, 107, 101, 102, 102, 101, 0, 122, 1, 117, 116, 107, 105, 108, 102, 110, 111, 107, 0,
+			122, 1, 117, 116, 110, 105, 114, 105, 98, 97, 108, 0, 122, 1, 117, 116, 110, 105, 114, 105, 98, 97, 108, 2, 101, 114, 0, 122, 1, 117,
+			116, 120, 101, 116, 0, 122, 1, 117, 116, 122, 115, 101, 103, 0, 122, 1, 117, 116, 161, 195, 107, 105, 100, 110, 105, 122, 115, 0, 122, 1,
+			117, 116, 173, 195, 114, 0, 122, 1, 117, 120, 117, 108, 0, 122, 1, 117, 122, 108, 117, 112, 0, 122, 1, 117, 122, 108, 117, 112, 2, 195,
+			161, 109, 0, 122, 1, 117, 122, 114, 117, 107, 0, 122, 1, 117, 122, 115, 115, 97, 98, 0, 122, 1, 117, 122, 169, 195, 106, 0, 122, 1,
+			145, 197, 2, 97, 114, 118, 0, 122, 1, 145, 197, 2, 195, 161, 114, 109, 0, 122, 1, 145, 197, 2, 195, 182, 114, 110, 121, 0, 122, 1,
+			145, 197, 2, 195, 188, 108, 101, 0, 122, 1, 145, 197, 2, 195, 188, 108, 197, 145, 0, 122, 1, 145, 197, 104, 2, 101, 114, 101, 108, 0,
+			122, 1, 145, 197, 104, 2, 101, 114, 101, 112, 0, 122, 1, 145, 197, 108, 109, 101, 2, 101, 114, 197, 177, 0, 122, 1, 145, 197, 108, 188,
+			195, 112, 101, 114, 2, 116, 114, 195, 161, 106, 107, 0, 122, 1, 145, 197, 108, 188, 195, 112, 101, 114, 2, 195, 161, 114, 110, 121, 0, 122,
+			1, 145, 197, 110, 107, 101, 116, 0, 122, 1, 145, 197, 112, 105, 99, 0, 122, 1, 145, 197, 116, 110, 101, 109, 0, 122, 1, 145, 197, 116,
+			188, 195, 0, 122, 1, 145, 197, 122, 101, 118, 101, 0, 122, 1, 161, 195, 98, 97, 122, 115, 106, 173, 195, 100, 0, 122, 1, 161, 195, 100,
+			97, 0, 122, 1, 161, 195, 100, 97, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 100, 97, 2, 195, 188, 110, 101, 116, 0, 122, 1, 161,
+			195, 100, 97, 122, 161, 195, 108, 0, 122, 1, 161, 195, 100, 105, 115, 122, 100, 0, 122, 1, 161, 195, 100, 108, 111, 103, 101, 109, 0, 122,
+			1, 161, 195, 100, 110, 111, 109, 0, 122, 1, 161, 195, 100, 111, 108, 108, 161, 195, 122, 115, 0, 122, 1, 161, 195, 100, 111, 112, 97, 108,
+			108, 161, 195, 103, 101, 109, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 100, 111, 118, 2, 105, 110, 116, 0, 122, 1, 161, 195, 100, 114,
+			161, 195, 115, 99, 2, 195, 179, 108, 0, 122, 1, 161, 195, 100, 117, 116, 0, 122, 1, 161, 195, 100, 117, 116, 2, 105, 110, 116, 0, 122,
+			1, 161, 195, 100, 117, 116, 2, 111, 109, 106, 0, 122, 1, 161, 195, 100, 179, 195, 122, 115, 2, 105, 0, 122, 1, 161, 195, 100, 186, 195,
+			106, 0, 122, 1, 161, 195, 101, 116, 2, 101, 114, 118, 0, 122, 1, 161, 195, 102, 2, 101, 114, 0, 122, 1, 161, 195, 103, 108, 97, 115,
+			114, 161, 195, 116, 2, 195, 161, 109, 98, 97, 0, 122, 1, 161, 195, 103, 110, 111, 114, 111, 122, 115, 0, 122, 1, 161, 195, 103, 110, 111,
+			122, 114, 111, 98, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 110, 161, 195, 114, 2, 101, 114, 0, 122, 1, 161, 195, 103, 111, 104,
+			117, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 111, 112, 105, 115, 99, 0, 122, 1, 161, 195, 103, 111, 116, 116, 97, 107, 0,
+			122, 1, 161, 195, 103, 111, 118, 161, 195, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 103, 114, 111, 102, 2, 101, 114, 0, 122,
+			1, 161, 195, 103, 114, 161, 195, 115, 0, 122, 1, 161, 195, 103, 122, 111, 109, 0, 122, 1, 161, 195, 103, 161, 195, 118, 0, 122, 1, 161,
+			195, 103, 186, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 104, 108, 161, 195, 109, 0, 122, 1, 161, 195, 104, 117, 114, 2, 101,
+			107, 101, 114, 101, 0, 122, 1, 161, 195, 104, 117, 114, 2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 161, 195, 104, 117, 114, 2, 111,
+			98, 0, 122, 1, 161, 195, 106, 161, 195, 102, 2, 101, 114, 0, 122, 1, 161, 195, 107, 97, 108, 0, 122, 1, 161, 195, 107, 97, 108, 2,
+			101, 110, 0, 122, 1, 161, 195, 107, 105, 114, 112, 97, 112, 0, 122, 1, 161, 195, 107, 110, 111, 115, 0, 122, 1, 161, 195, 107, 111, 122,
+			115, 2, 101, 114, 0, 122, 1, 161, 195, 107, 111, 122, 115, 2, 195, 161, 109, 0, 122, 1, 161, 195, 107, 117, 98, 0, 122, 1, 161, 195,
+			108, 97, 114, 97, 121, 110, 0, 122, 1, 161, 195, 108, 97, 116, 117, 0, 122, 1, 161, 195, 108, 97, 116, 117, 2, 101, 114, 197, 177, 0,
+			122, 1, 161, 195, 108, 103, 97, 110, 111, 118, 0, 122, 1, 161, 195, 108, 106, 97, 104, 2, 195, 182, 103, 0, 122, 1, 161, 195, 108, 107,
+			117, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108, 108, 97, 118, 0, 122, 1, 161, 195, 108, 108, 97, 118, 2, 97, 98, 0,
+			122, 1, 161, 195, 108, 108, 161, 195, 0, 122, 1, 161, 195, 108, 108, 161, 195, 2, 195, 182, 103, 0, 122, 1, 161, 195, 108, 108, 161, 195,
+			110, 101, 108, 108, 101, 2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 161, 195, 108, 109, 97, 114, 161, 195, 0, 122, 1, 161, 195, 108,
+			109, 97, 122, 115, 117, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 108, 109, 111, 2, 97, 103, 0, 122, 1, 161, 195, 108, 109,
+			111, 101, 122, 115, 115, 182, 195, 0, 122, 1, 161, 195, 108, 109, 161, 195, 108, 108, 105, 118, 0, 122, 1, 161, 195, 108, 109, 161, 195, 116,
+			2, 195, 169, 107, 0, 122, 1, 161, 195, 108, 111, 98, 111, 100, 0, 122, 1, 161, 195, 108, 111, 103, 110, 161, 195, 108, 0, 122, 1, 161,
+			195, 108, 111, 107, 114, 111, 104, 0, 122, 1, 161, 195, 108, 111, 114, 97, 115, 122, 2, 101, 114, 0, 122, 1, 161, 195, 108, 111, 114, 111,
+			115, 108, 101, 102, 0, 122, 1, 161, 195, 108, 111, 115, 112, 97, 116, 0, 122, 1, 161, 195, 108, 111, 116, 108, 101, 0, 122, 1, 161, 195,
+			108, 114, 97, 122, 97, 112, 0, 122, 1, 161, 195, 108, 114, 111, 116, 103, 101, 109, 0, 122, 1, 161, 195, 108, 114, 111, 116, 105, 118, 0,
+			122, 1, 161, 195, 108, 116, 179, 195, 112, 0, 122, 1, 161, 195, 108, 117, 100, 110, 161, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161,
+			195, 108, 117, 103, 161, 195, 116, 2, 97, 98, 195, 161, 108, 121, 0, 122, 1, 161, 195, 108, 117, 106, 161, 195, 2, 101, 114, 197, 177, 0,
+			122, 1, 161, 195, 108, 117, 110, 97, 116, 0, 122, 1, 161, 195, 108, 117, 115, 114, 161, 195, 116, 0, 122, 1, 161, 195, 108, 161, 195, 116,
+			105, 98, 109, 111, 114, 116, 0, 122, 1, 161, 195, 108, 161, 195, 116, 110, 161, 195, 107, 0, 122, 1, 161, 195, 108, 161, 195, 118, 111, 116,
+			101, 116, 0, 122, 1, 161, 195, 108, 179, 195, 122, 115, 2, 97, 98, 97, 100, 0, 122, 1, 161, 195, 108, 186, 195, 121, 110, 0, 122, 1,
+			161, 195, 109, 2, 101, 114, 0, 122, 1, 161, 195, 109, 2, 111, 114, 0, 122, 1, 161, 195, 109, 2, 197, 145, 114, 0, 122, 1, 161, 195,
+			109, 108, 97, 2, 195, 188, 114, 107, 0, 122, 1, 161, 195, 109, 108, 97, 2, 195, 188, 114, 107, 101, 0, 122, 1, 161, 195, 109, 111, 108,
+			108, 161, 195, 0, 122, 1, 161, 195, 109, 111, 116, 161, 195, 108, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 109, 111, 121, 110, 0, 122,
+			1, 161, 195, 109, 111, 121, 110, 2, 97, 98, 0, 122, 1, 161, 195, 109, 111, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 109,
+			121, 103, 101, 0, 122, 1, 161, 195, 109, 173, 195, 114, 112, 0, 122, 1, 161, 195, 110, 97, 98, 98, 111, 100, 0, 122, 1, 161, 195, 110,
+			97, 98, 98, 111, 108, 0, 122, 1, 161, 195, 110, 97, 98, 98, 111, 114, 0, 122, 1, 161, 195, 110, 97, 98, 98, 111, 114, 2, 101, 114,
+			0, 122, 1, 161, 195, 110, 97, 98, 98, 111, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 104, 111, 114, 0, 122, 1,
+			161, 195, 110, 97, 104, 117, 122, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 107, 107, 105, 121, 110, 2, 101, 114, 0, 122, 1,
+			161, 195, 110, 97, 108, 108, 105, 118, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 110, 97, 116, 116, 97, 115, 99, 2, 101, 114, 197, 177,
+			0, 122, 1, 161, 195, 110, 103, 161, 195, 109, 0, 122, 1, 161, 195, 110, 111, 118, 0, 122, 1, 161, 195, 110, 111, 118, 108, 101, 102, 0,
+			122, 1, 161, 195, 110, 114, 97, 98, 2, 197, 145, 107, 0, 122, 1, 161, 195, 110, 114, 161, 195, 112, 2, 195, 169, 107, 0, 122, 1, 161,
+			195, 110, 169, 195, 122, 115, 2, 101, 107, 0, 122, 1, 161, 195, 112, 97, 107, 2, 197, 145, 108, 197, 145, 0, 122, 1, 161, 195, 112, 97,
+			115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 112, 97, 115, 99, 2, 195, 161, 109, 0, 122, 1, 161, 195, 112, 109, 161, 195, 108,
+			0, 122, 1, 161, 195, 114, 97, 112, 97, 107, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 97, 118, 97, 107, 2, 101, 114, 197, 177,
+			0, 122, 1, 161, 195, 114, 97, 118, 97, 115, 99, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 103, 117, 0, 122, 1, 161, 195, 114,
+			103, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 114, 111, 115, 122, 117, 0, 122, 1, 161, 195, 114, 114, 97, 118, 0, 122, 1, 161,
+			195, 114, 114, 111, 102, 145, 197, 114, 101, 0, 122, 1, 161, 195, 114, 161, 195, 106, 0, 122, 1, 161, 195, 114, 161, 195, 106, 2, 101, 114,
+			197, 177, 0, 122, 1, 161, 195, 114, 161, 195, 106, 2, 111, 108, 103, 195, 161, 108, 97, 116, 0, 122, 1, 161, 195, 114, 173, 195, 0, 122,
 			1, 161, 195, 114, 173, 195, 2, 97, 107, 195, 169, 114, 0, 122, 1, 161, 195, 114, 173, 195, 145, 197, 108, 101, 2, 101, 114, 0, 122, 1,
-			161, 195, 114, 186, 195, 122, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 97, 103, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161,
-			195, 116, 97, 104, 2, 195, 188, 110, 101, 0, 122, 1, 161, 195, 116, 97, 108, 108, 97, 118, 2, 101, 114, 0, 122, 1, 161, 195, 116, 97,
-			116, 122, 111, 107, 116, 97, 108, 105, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 97, 118, 105, 104, 2, 101, 114, 197, 177,
-			0, 122, 1, 161, 195, 116, 106, 97, 104, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 106, 186, 195, 121, 103, 2, 97, 98, 195, 161,
-			108, 121, 0, 122, 1, 161, 195, 116, 108, 111, 107, 105, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 110, 161, 195, 114, 0, 122,
-			1, 161, 195, 116, 110, 161, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 114, 105, 2, 195, 169, 108, 0, 122, 1, 161, 195,
-			116, 161, 195, 108, 2, 195, 182, 103, 0, 122, 1, 161, 195, 116, 161, 195, 108, 108, 101, 2, 101, 114, 0, 122, 1, 161, 195, 116, 173, 195,
-			115, 97, 116, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 118, 108, 97, 2, 101, 103, 0, 122, 1, 161, 195, 118, 173, 195, 104, 105,
-			107, 0, 122, 1, 161, 195, 121, 110, 161, 195, 104, 2, 97, 103, 0, 122, 1, 161, 195, 121, 116, 114, 161, 195, 104, 2, 195, 161, 114, 110,
-			121, 0, 122, 1, 161, 195, 122, 97, 116, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 122, 111, 107, 97, 114, 179, 195, 122, 115, 2,
-			195, 161, 109, 0, 122, 1, 161, 195, 122, 111, 107, 108, 97, 108, 103, 111, 102, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 122, 114, 161,
-			195, 103, 117, 115, 0, 122, 1, 169, 195, 100, 145, 197, 122, 114, 101, 122, 115, 2, 101, 0, 122, 1, 169, 195, 103, 110, 101, 108, 2, 97,
-			98, 195, 161, 108, 121, 0, 122, 1, 169, 195, 103, 110, 101, 114, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 110, 101, 122, 103, 169,
-			195, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 114, 101, 112, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 114, 182, 195, 2,
-			101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 114, 182, 195, 100, 0, 122, 1, 169, 195, 103, 114, 182, 195, 100, 121, 110, 110, 101, 109, 2,
-			101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 122, 101, 114, 2, 195, 161, 109, 0, 122, 1, 169, 195, 103, 145, 197, 98, 2, 101, 114, 197,
-			177, 0, 122, 1, 169, 195, 103, 169, 195, 2, 97, 98, 195, 161, 108, 121, 0, 122, 1, 169, 195, 103, 169, 195, 2, 97, 103, 0, 122, 1,
-			169, 195, 103, 182, 195, 104, 182, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 107, 2, 195, 186, 114, 195, 161, 115, 0, 122, 1,
-			169, 195, 107, 182, 195, 108, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 107, 182, 195, 108, 2, 195, 161, 109, 0, 122, 1, 169, 195, 108,
-			101, 107, 169, 195, 122, 114, 169, 195, 2, 105, 110, 116, 0, 122, 1, 169, 195, 108, 101, 109, 101, 2, 101, 114, 0, 122, 1, 169, 195, 108,
-			101, 114, 101, 122, 115, 2, 101, 116, 116, 0, 122, 1, 169, 195, 108, 101, 115, 105, 118, 100, 110, 111, 103, 2, 101, 114, 0, 122, 1, 169,
-			195, 108, 107, 182, 195, 121, 110, 182, 195, 107, 2, 195, 169, 108, 0, 122, 1, 169, 195, 108, 108, 101, 103, 182, 195, 122, 115, 2, 101, 114,
-			197, 177, 0, 122, 1, 169, 195, 108, 121, 110, 169, 195, 118, 114, 182, 195, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 108, 145, 197, 100,
-			2, 195, 182, 103, 0, 122, 1, 169, 195, 108, 169, 195, 98, 2, 97, 108, 97, 103, 0, 122, 1, 169, 195, 108, 169, 195, 98, 2, 195, 182,
-			118, 0, 122, 1, 169, 195, 108, 188, 195, 2, 97, 107, 0, 122, 1, 169, 195, 108, 188, 195, 107, 101, 110, 101, 109, 2, 101, 114, 197, 177,
-			0, 122, 1, 169, 195, 108, 188, 195, 112, 101, 108, 101, 116, 2, 101, 114, 0, 122, 1, 169, 195, 108, 188, 195, 112, 101, 114, 2, 101, 114,
-			0, 122, 1, 169, 195, 110, 101, 107, 107, 182, 195, 122, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 110, 101, 108, 101, 106, 2, 101, 114,
-			197, 177, 0, 122, 1, 169, 195, 114, 112, 2, 101, 114, 0, 122, 1, 169, 195, 114, 169, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169,
-			195, 114, 182, 195, 116, 2, 195, 182, 103, 0, 122, 1, 169, 195, 114, 182, 195, 116, 105, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195,
-			115, 101, 2, 195, 182, 103, 0, 122, 1, 169, 195, 115, 101, 114, 101, 107, 0, 122, 1, 169, 195, 116, 101, 100, 114, 105, 104, 2, 101, 114,
-			118, 101, 0, 122, 1, 169, 195, 116, 101, 100, 114, 105, 104, 2, 195, 182, 118, 101, 103, 0, 122, 1, 169, 195, 116, 101, 103, 169, 195, 98,
-			2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 101, 107, 101, 102, 2, 195, 188, 114, 107, 0, 122, 1, 169, 195, 116, 101, 108, 188, 195,
-			122, 115, 2, 97, 98, 0, 122, 1, 169, 195, 116, 101, 112, 101, 108, 103, 101, 109, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 101,
-			116, 2, 101, 0, 122, 1, 169, 195, 116, 101, 116, 108, 101, 100, 110, 101, 114, 2, 101, 114, 0, 122, 1, 169, 195, 116, 106, 101, 108, 2,
-			195, 182, 103, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 2, 97, 98, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 2, 97, 98, 195,
-			161, 108, 121, 111, 122, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116,
-			2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 110, 101, 108, 101, 106, 2, 105, 110, 116, 0, 122, 1, 169, 195, 116, 110, 105, 104, 182, 195,
-			107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 114, 101, 115, 0, 122, 1, 169, 195, 116, 114, 169, 195, 115, 2, 195, 161, 109, 0,
-			122, 1, 169, 195, 116, 122, 115, 101, 118, 169, 195, 116, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 173, 195, 114, 101, 107, 0, 122,
-			1, 169, 195, 116, 173, 195, 114, 101, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 177, 197, 102, 2, 97, 103, 0, 122, 1,
-			169, 195, 116, 182, 195, 107, 0, 122, 1, 169, 195, 116, 188, 195, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 188, 195, 2, 195, 161,
-			109, 0, 122, 1, 169, 195, 116, 188, 195, 97, 116, 106, 97, 114, 2, 101, 114, 0, 122, 1, 169, 195, 118, 182, 195, 108, 2, 101, 114, 197,
-			177, 0, 122, 1, 169, 195, 118, 182, 195, 108, 121, 108, 111, 116, 122, 115, 105, 112, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 122, 101,
-			107, 108, 101, 100, 110, 101, 114, 2, 101, 114, 0, 122, 1, 169, 195, 122, 108, 101, 106, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 122,
-			145, 197, 116, 114, 101, 102, 2, 101, 114, 197, 177, 0, 122, 1, 179, 195, 100, 97, 2, 195, 161, 109, 108, 97, 0, 122, 1, 179, 195, 105,
+			161, 195, 114, 179, 195, 0, 122, 1, 161, 195, 114, 186, 195, 122, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 115, 97, 118, 108, 111,
+			0, 122, 1, 161, 195, 116, 97, 103, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 97, 103, 122, 97, 103, 105, 0, 122, 1, 161,
+			195, 116, 97, 104, 0, 122, 1, 161, 195, 116, 97, 104, 2, 195, 188, 110, 101, 0, 122, 1, 161, 195, 116, 97, 108, 107, 97, 122, 0, 122,
+			1, 161, 195, 116, 97, 108, 108, 97, 118, 2, 101, 114, 0, 122, 1, 161, 195, 116, 97, 116, 107, 111, 0, 122, 1, 161, 195, 116, 97, 116,
+			107, 111, 2, 101, 114, 0, 122, 1, 161, 195, 116, 97, 116, 108, 161, 195, 103, 108, 111, 122, 115, 0, 122, 1, 161, 195, 116, 97, 116, 117,
+			107, 0, 122, 1, 161, 195, 116, 97, 116, 122, 111, 107, 116, 97, 108, 105, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 97,
+			118, 105, 104, 0, 122, 1, 161, 195, 116, 97, 118, 105, 104, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 105, 99, 97, 112, 97, 107,
+			0, 122, 1, 161, 195, 116, 105, 100, 105, 118, 107, 105, 108, 0, 122, 1, 161, 195, 116, 105, 108, 97, 101, 114, 0, 122, 1, 161, 195, 116,
+			105, 114, 111, 105, 114, 112, 0, 122, 1, 161, 195, 116, 105, 114, 111, 116, 117, 97, 0, 122, 1, 161, 195, 116, 105, 116, 110, 101, 100, 105,
+			0, 122, 1, 161, 195, 116, 105, 118, 105, 116, 97, 101, 114, 107, 0, 122, 1, 161, 195, 116, 105, 118, 105, 116, 107, 97, 0, 122, 1, 161,
+			195, 116, 106, 97, 104, 0, 122, 1, 161, 195, 116, 106, 97, 104, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 106, 186, 195, 121, 103,
+			2, 97, 98, 195, 161, 108, 121, 0, 122, 1, 161, 195, 116, 108, 111, 107, 105, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 108,
+			161, 195, 118, 0, 122, 1, 161, 195, 116, 110, 97, 98, 98, 111, 114, 0, 122, 1, 161, 195, 116, 110, 105, 116, 116, 97, 107, 0, 122, 1,
+			161, 195, 116, 110, 161, 195, 114, 0, 122, 1, 161, 195, 116, 110, 161, 195, 114, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 111, 107,
+			108, 97, 0, 122, 1, 161, 195, 116, 114, 97, 116, 97, 103, 97, 109, 0, 122, 1, 161, 195, 116, 114, 97, 116, 110, 97, 98, 114, 97, 107,
+			0, 122, 1, 161, 195, 116, 114, 97, 116, 114, 101, 122, 115, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 116, 114, 97, 116, 122, 161, 195,
+			104, 0, 122, 1, 161, 195, 116, 114, 105, 2, 195, 169, 108, 0, 122, 1, 161, 195, 116, 114, 161, 195, 121, 103, 0, 122, 1, 161, 195, 116,
+			115, 111, 112, 0, 122, 1, 161, 195, 116, 122, 115, 97, 108, 161, 195, 118, 0, 122, 1, 161, 195, 116, 161, 195, 108, 2, 195, 182, 103, 0,
+			122, 1, 161, 195, 116, 161, 195, 108, 108, 101, 0, 122, 1, 161, 195, 116, 161, 195, 108, 108, 101, 2, 101, 114, 0, 122, 1, 161, 195, 116,
+			173, 195, 100, 110, 105, 0, 122, 1, 161, 195, 116, 173, 195, 100, 114, 111, 102, 0, 122, 1, 161, 195, 116, 173, 195, 115, 97, 116, 117, 0,
+			122, 1, 161, 195, 116, 173, 195, 115, 97, 116, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 118, 108, 97, 2, 101, 103, 0, 122, 1,
+			161, 195, 118, 111, 114, 0, 122, 1, 161, 195, 118, 173, 195, 104, 0, 122, 1, 161, 195, 118, 173, 195, 104, 105, 107, 0, 122, 1, 161, 195,
+			118, 173, 195, 118, 0, 122, 1, 161, 195, 121, 103, 97, 102, 0, 122, 1, 161, 195, 121, 108, 111, 102, 2, 101, 114, 0, 122, 1, 161, 195,
+			121, 108, 117, 103, 0, 122, 1, 161, 195, 121, 110, 161, 195, 104, 2, 97, 103, 0, 122, 1, 161, 195, 121, 116, 114, 161, 195, 104, 2, 195,
+			161, 114, 110, 121, 0, 122, 1, 161, 195, 122, 97, 109, 108, 97, 107, 108, 97, 0, 122, 1, 161, 195, 122, 97, 116, 117, 2, 101, 114, 0,
+			122, 1, 161, 195, 122, 97, 116, 117, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 122, 103, 110, 97, 104, 0, 122, 1, 161, 195, 122, 111,
+			103, 108, 111, 100, 105, 107, 0, 122, 1, 161, 195, 122, 111, 107, 97, 114, 179, 195, 122, 115, 2, 195, 161, 109, 0, 122, 1, 161, 195, 122,
+			111, 107, 107, 97, 115, 0, 122, 1, 161, 195, 122, 111, 107, 108, 97, 108, 103, 111, 102, 2, 101, 114, 197, 177, 0, 122, 1, 161, 195, 122,
+			111, 107, 108, 97, 108, 108, 161, 195, 118, 0, 122, 1, 161, 195, 122, 111, 107, 108, 161, 195, 98, 179, 195, 114, 112, 0, 122, 1, 161, 195,
+			122, 111, 107, 116, 97, 116, 117, 109, 0, 122, 1, 161, 195, 122, 111, 107, 116, 97, 118, 105, 104, 0, 122, 1, 161, 195, 122, 114, 161, 195,
+			103, 117, 115, 0, 122, 1, 161, 195, 122, 115, 116, 161, 195, 106, 0, 122, 1, 161, 195, 122, 115, 161, 195, 109, 2, 101, 114, 197, 177, 0,
+			122, 1, 161, 195, 122, 161, 195, 98, 109, 111, 98, 0, 122, 1, 161, 195, 122, 161, 195, 102, 0, 122, 1, 169, 195, 100, 101, 107, 101, 108,
+			122, 182, 195, 107, 0, 122, 1, 169, 195, 100, 101, 107, 108, 101, 109, 101, 0, 122, 1, 169, 195, 100, 101, 115, 101, 122, 115, 169, 195, 114,
+			0, 122, 1, 169, 195, 100, 101, 122, 115, 0, 122, 1, 169, 195, 100, 122, 101, 107, 0, 122, 1, 169, 195, 100, 145, 197, 108, 101, 118, 177,
+			197, 109, 0, 122, 1, 169, 195, 100, 145, 197, 108, 106, 101, 102, 0, 122, 1, 169, 195, 100, 145, 197, 122, 114, 101, 122, 115, 0, 122, 1,
+			169, 195, 100, 145, 197, 122, 114, 101, 122, 115, 2, 101, 0, 122, 1, 169, 195, 100, 182, 195, 107, 108, 145, 197, 114, 101, 0, 122, 1, 169,
+			195, 100, 182, 195, 107, 177, 197, 109, 0, 122, 1, 169, 195, 102, 182, 195, 100, 0, 122, 1, 169, 195, 103, 101, 98, 101, 108, 0, 122, 1,
+			169, 195, 103, 101, 99, 114, 101, 115, 0, 122, 1, 169, 195, 103, 101, 118, 101, 115, 99, 0, 122, 1, 169, 195, 103, 110, 101, 108, 2, 97,
+			98, 195, 161, 108, 121, 0, 122, 1, 169, 195, 103, 110, 101, 114, 0, 122, 1, 169, 195, 103, 110, 101, 114, 2, 101, 114, 197, 177, 0, 122,
+			1, 169, 195, 103, 110, 101, 115, 114, 101, 118, 0, 122, 1, 169, 195, 103, 110, 101, 122, 103, 169, 195, 2, 101, 114, 197, 177, 0, 122, 1,
+			169, 195, 103, 114, 101, 112, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 114, 101, 115, 99, 105, 115, 99, 0, 122, 1, 169, 195, 103,
+			114, 182, 195, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 114, 182, 195, 100, 0, 122, 1, 169, 195, 103, 114, 182, 195, 100, 121, 110,
+			110, 101, 109, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 122, 101, 114, 2, 195, 161, 109, 0, 122, 1, 169, 195, 103, 145, 197, 98,
+			2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 169, 195, 2, 97, 98, 195, 161, 108, 121, 0, 122, 1, 169, 195, 103, 169, 195, 2, 97,
+			103, 0, 122, 1, 169, 195, 103, 182, 195, 102, 182, 195, 114, 0, 122, 1, 169, 195, 103, 182, 195, 102, 188, 195, 98, 0, 122, 1, 169, 195,
+			103, 182, 195, 104, 182, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 103, 182, 195, 121, 110, 0, 122, 1, 169, 195, 103, 182, 195,
+			122, 115, 115, 188, 195, 116, 0, 122, 1, 169, 195, 107, 2, 101, 114, 0, 122, 1, 169, 195, 107, 2, 195, 161, 110, 0, 122, 1, 169, 195,
+			107, 2, 195, 161, 114, 0, 122, 1, 169, 195, 107, 2, 195, 186, 114, 195, 161, 115, 0, 122, 1, 169, 195, 107, 182, 195, 108, 2, 101, 114,
+			197, 177, 0, 122, 1, 169, 195, 107, 182, 195, 108, 2, 195, 161, 109, 0, 122, 1, 169, 195, 108, 101, 100, 110, 101, 114, 0, 122, 1, 169,
+			195, 108, 101, 107, 169, 195, 122, 114, 169, 195, 2, 105, 110, 116, 0, 122, 1, 169, 195, 108, 101, 108, 122, 115, 169, 195, 0, 122, 1, 169,
+			195, 108, 101, 108, 182, 195, 0, 122, 1, 169, 195, 108, 101, 109, 101, 2, 101, 114, 0, 122, 1, 169, 195, 108, 101, 112, 105, 114, 105, 99,
+			0, 122, 1, 169, 195, 108, 101, 114, 101, 122, 115, 2, 101, 116, 116, 0, 122, 1, 169, 195, 108, 101, 115, 105, 118, 100, 110, 111, 103, 2,
+			101, 114, 0, 122, 1, 169, 195, 108, 101, 118, 114, 169, 195, 0, 122, 1, 169, 195, 108, 101, 118, 177, 197, 109, 0, 122, 1, 169, 195, 108,
+			107, 182, 195, 121, 110, 182, 195, 107, 2, 195, 169, 108, 0, 122, 1, 169, 195, 108, 108, 101, 103, 182, 195, 122, 115, 2, 101, 114, 197, 177,
+			0, 122, 1, 169, 195, 108, 109, 182, 195, 0, 122, 1, 169, 195, 108, 116, 169, 195, 109, 115, 105, 0, 122, 1, 169, 195, 108, 121, 110, 169,
+			195, 118, 114, 182, 195, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 108, 145, 197, 100, 2, 97, 98, 0, 122, 1, 169, 195, 108, 145, 197,
+			100, 2, 195, 182, 103, 0, 122, 1, 169, 195, 108, 169, 195, 97, 122, 115, 115, 105, 118, 0, 122, 1, 169, 195, 108, 169, 195, 98, 2, 97,
+			108, 97, 103, 0, 122, 1, 169, 195, 108, 169, 195, 98, 2, 195, 182, 118, 0, 122, 1, 169, 195, 108, 169, 195, 122, 115, 101, 98, 108, 101,
+			0, 122, 1, 169, 195, 108, 177, 197, 121, 103, 0, 122, 1, 169, 195, 108, 182, 195, 108, 101, 106, 0, 122, 1, 169, 195, 108, 188, 195, 0,
+			122, 1, 169, 195, 108, 188, 195, 2, 97, 107, 0, 122, 1, 169, 195, 108, 188, 195, 107, 101, 110, 101, 109, 2, 101, 114, 197, 177, 0, 122,
+			1, 169, 195, 108, 188, 195, 112, 101, 108, 101, 116, 0, 122, 1, 169, 195, 108, 188, 195, 112, 101, 108, 101, 116, 2, 101, 114, 0, 122, 1,
+			169, 195, 108, 188, 195, 112, 101, 108, 101, 116, 2, 105, 115, 122, 0, 122, 1, 169, 195, 108, 188, 195, 112, 101, 114, 2, 101, 114, 0, 122,
+			1, 169, 195, 109, 114, 101, 116, 0, 122, 1, 169, 195, 110, 101, 98, 98, 105, 108, 0, 122, 1, 169, 195, 110, 101, 107, 107, 182, 195, 122,
+			2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 110, 101, 108, 101, 106, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 110, 101, 115, 114, 182,
+			195, 112, 0, 122, 1, 169, 195, 112, 101, 108, 2, 101, 114, 0, 122, 1, 169, 195, 114, 2, 101, 108, 101, 0, 122, 1, 169, 195, 114, 101,
+			118, 114, 161, 195, 0, 122, 1, 169, 195, 114, 112, 2, 97, 107, 0, 122, 1, 169, 195, 114, 112, 2, 101, 114, 0, 122, 1, 169, 195, 114,
+			114, 161, 195, 0, 122, 1, 169, 195, 114, 169, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 114, 177, 197, 116, 0, 122, 1, 169,
+			195, 114, 177, 197, 122, 115, 0, 122, 1, 169, 195, 114, 182, 195, 116, 0, 122, 1, 169, 195, 114, 182, 195, 116, 2, 195, 182, 103, 0, 122,
+			1, 169, 195, 114, 182, 195, 116, 105, 107, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 114, 182, 195, 116, 116, 161, 195, 0, 122, 1, 169,
+			195, 115, 101, 0, 122, 1, 169, 195, 115, 101, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 115, 101, 2, 195, 182, 103, 0, 122, 1, 169,
+			195, 115, 101, 114, 101, 107, 0, 122, 1, 169, 195, 116, 101, 100, 114, 105, 104, 0, 122, 1, 169, 195, 116, 101, 100, 114, 105, 104, 2, 101,
+			114, 118, 101, 0, 122, 1, 169, 195, 116, 101, 100, 114, 105, 104, 2, 195, 182, 118, 101, 103, 0, 122, 1, 169, 195, 116, 101, 103, 169, 195,
+			98, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 101, 107, 101, 102, 2, 195, 188, 114, 107, 0, 122, 1, 169, 195, 116, 101, 108, 188,
+			195, 122, 115, 2, 97, 98, 0, 122, 1, 169, 195, 116, 101, 108, 188, 195, 122, 115, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 101, 112,
+			101, 108, 103, 101, 109, 0, 122, 1, 169, 195, 116, 101, 112, 101, 108, 103, 101, 109, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 101,
+			116, 2, 101, 0, 122, 1, 169, 195, 116, 101, 116, 108, 101, 100, 110, 101, 114, 2, 101, 114, 0, 122, 1, 169, 195, 116, 101, 122, 101, 118,
+			0, 122, 1, 169, 195, 116, 106, 101, 108, 2, 195, 182, 103, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 0, 122, 1, 169, 195, 116, 108,
+			182, 195, 116, 2, 97, 98, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 2, 97, 98, 195, 161, 108, 121, 111, 122, 0, 122, 1, 169, 195,
+			116, 108, 182, 195, 116, 2, 97, 107, 0, 122, 1, 169, 195, 116, 108, 182, 195, 116, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 108,
+			182, 195, 116, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 109, 101, 114, 101, 116, 0, 122, 1, 169, 195, 116, 110, 101, 108, 101, 106, 0,
+			122, 1, 169, 195, 116, 110, 101, 108, 101, 106, 2, 105, 110, 116, 0, 122, 1, 169, 195, 116, 110, 105, 104, 182, 195, 107, 2, 101, 114, 197,
+			177, 0, 122, 1, 169, 195, 116, 114, 101, 115, 0, 122, 1, 169, 195, 116, 114, 169, 195, 115, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116,
+			122, 115, 101, 106, 114, 101, 103, 0, 122, 1, 169, 195, 116, 122, 115, 101, 108, 106, 101, 102, 0, 122, 1, 169, 195, 116, 122, 115, 101, 118,
+			169, 195, 116, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 173, 195, 112, 169, 195, 2, 97, 98, 0, 122, 1, 169, 195, 116, 173, 195,
+			114, 101, 107, 0, 122, 1, 169, 195, 116, 173, 195, 114, 101, 121, 110, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 116, 173, 195, 115, 101,
+			108, 101, 116, 105, 104, 0, 122, 1, 169, 195, 116, 173, 195, 115, 145, 197, 114, 101, 0, 122, 1, 169, 195, 116, 177, 197, 102, 2, 97, 103,
+			0, 122, 1, 169, 195, 116, 177, 197, 104, 0, 122, 1, 169, 195, 116, 182, 195, 107, 0, 122, 1, 169, 195, 116, 188, 195, 2, 101, 114, 197,
+			177, 0, 122, 1, 169, 195, 116, 188, 195, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 188, 195, 97, 116, 106, 97, 114, 2, 101, 114, 0,
+			122, 1, 169, 195, 118, 101, 116, 108, 101, 102, 0, 122, 1, 169, 195, 118, 182, 195, 108, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 118,
+			182, 195, 108, 2, 195, 161, 109, 0, 122, 1, 169, 195, 118, 182, 195, 108, 121, 108, 111, 116, 122, 115, 105, 112, 2, 101, 114, 197, 177, 0,
+			122, 1, 169, 195, 118, 182, 195, 122, 115, 0, 122, 1, 169, 195, 122, 100, 101, 0, 122, 1, 169, 195, 122, 101, 99, 110, 101, 102, 107, 117,
+			98, 0, 122, 1, 169, 195, 122, 101, 103, 114, 169, 195, 109, 0, 122, 1, 169, 195, 122, 101, 106, 101, 102, 105, 107, 0, 122, 1, 169, 195,
+			122, 101, 107, 101, 108, 188, 195, 121, 103, 0, 122, 1, 169, 195, 122, 101, 107, 108, 101, 100, 110, 101, 114, 2, 101, 114, 0, 122, 1, 169,
+			195, 122, 101, 107, 169, 195, 102, 0, 122, 1, 169, 195, 122, 101, 108, 101, 118, 101, 108, 0, 122, 1, 169, 195, 122, 101, 112, 169, 195, 107,
+			101, 108, 0, 122, 1, 169, 195, 122, 101, 118, 114, 101, 116, 0, 122, 1, 169, 195, 122, 103, 169, 195, 108, 0, 122, 1, 169, 195, 122, 108,
+			101, 106, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 122, 110, 182, 195, 116, 103, 182, 195, 114, 0, 122, 1, 169, 195, 122, 114, 145, 197,
+			110, 101, 108, 108, 101, 0, 122, 1, 169, 195, 122, 114, 169, 195, 0, 122, 1, 169, 195, 122, 115, 116, 101, 109, 0, 122, 1, 169, 195, 122,
+			121, 103, 101, 106, 2, 101, 114, 0, 122, 1, 169, 195, 122, 145, 197, 102, 0, 122, 1, 169, 195, 122, 145, 197, 107, 114, 169, 195, 109, 0,
+			122, 1, 169, 195, 122, 145, 197, 116, 114, 101, 102, 2, 101, 114, 197, 177, 0, 122, 1, 169, 195, 122, 182, 195, 100, 108, 182, 195, 118, 182,
+			195, 108, 0, 122, 1, 169, 195, 122, 182, 195, 107, 116, 188, 195, 0, 122, 1, 169, 195, 122, 182, 195, 116, 110, 182, 195, 0, 122, 1, 179,
+			195, 100, 97, 0, 122, 1, 179, 195, 100, 97, 2, 195, 161, 109, 108, 97, 0, 122, 1, 179, 195, 103, 117, 114, 0, 122, 1, 179, 195, 105,
 			99, 161, 195, 107, 105, 110, 117, 109, 109, 111, 107, 2, 111, 98, 0, 122, 1, 179, 195, 105, 100, 161, 195, 114, 2, 101, 114, 101, 112, 0,
-			122, 1, 179, 195, 105, 100, 161, 195, 114, 2, 111, 98, 0, 122, 1, 179, 195, 107, 105, 115, 99, 0, 122, 1, 179, 195, 107, 105, 115, 99,
-			2, 195, 161, 109, 0, 122, 1, 179, 195, 110, 111, 118, 2, 101, 114, 101, 110, 195, 161, 100, 0, 122, 1, 179, 195, 112, 109, 97, 107, 0,
-			122, 1, 179, 195, 114, 186, 195, 122, 115, 2, 101, 109, 0, 122, 1, 179, 195, 116, 117, 97, 2, 101, 109, 195, 188, 118, 101, 103, 0, 122,
-			1, 179, 195, 118, 186, 195, 102, 2, 101, 114, 115, 122, 0, 122, 1, 179, 195, 118, 186, 195, 102, 2, 105, 109, 0, 122, 1, 182, 195, 108,
-			182, 195, 102, 106, 101, 116, 2, 195, 161, 106, 0, 122, 1, 182, 195, 114, 107, 182, 195, 2, 101, 107, 195, 169, 114, 0, 122, 1, 182, 195,
-			114, 145, 197, 122, 115, 2, 195, 173, 118, 0, 122, 1, 182, 195, 114, 182, 195, 118, 2, 101, 109, 0, 122, 1, 182, 195, 116, 110, 182, 195,
-			107, 0, 122, 1, 182, 195, 116, 110, 182, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 182, 195, 118, 177, 197, 104, 2, 101, 109, 197, 177,
-			0, 122, 1, 186, 195, 100, 2, 97, 107, 195, 161, 108, 108, 0, 122, 1, 186, 195, 104, 2, 97, 102, 116, 0, 122, 1, 186, 195, 104, 2,
-			101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 186, 195, 104, 2, 101, 108, 101, 116, 0, 122, 1, 186, 195, 104, 2, 195, 161, 108, 108, 195,
-			173, 116, 0, 122, 1, 186, 195, 121, 103, 161, 195, 0, 122, 1, 188, 195, 108, 112, 2, 101, 114, 197, 177, 0, 122, 2, 195, 173, 110, 197,
-			177, 0, 122, 8, 97, 100, 114, 111, 0, 122, 8, 97, 107, 97, 107, 2, 195, 179, 0, 122, 8, 97, 107, 114, 97, 102, 2, 105, 103, 0,
-			122, 8, 97, 107, 114, 97, 102, 2, 195, 161, 106, 0, 122, 8, 97, 110, 105, 0, 122, 8, 97, 115, 2, 101, 103, 0, 122, 8, 97, 115,
-			2, 195, 161, 114, 110, 121, 0, 122, 8, 97, 116, 117, 115, 97, 118, 0, 122, 8, 97, 118, 109, 97, 104, 2, 195, 188, 114, 107, 101, 0,
-			122, 8, 101, 100, 169, 195, 2, 101, 115, 122, 116, 101, 115, 116, 0, 122, 8, 101, 103, 169, 195, 115, 99, 110, 101, 122, 115, 2, 197, 177,
-			122, 0, 122, 8, 101, 107, 101, 114, 101, 107, 2, 195, 169, 107, 0, 122, 8, 101, 109, 101, 110, 0, 122, 8, 101, 110, 101, 109, 101, 107,
-			0, 122, 8, 101, 110, 169, 195, 109, 0, 122, 8, 101, 114, 101, 118, 0, 122, 8, 101, 116, 110, 101, 104, 2, 97, 107, 0, 122, 8, 101,
-			122, 115, 101, 109, 2, 195, 188, 114, 0, 122, 8, 105, 102, 107, 97, 98, 0, 122, 8, 105, 107, 2, 195, 161, 108, 108, 195, 161, 0, 122,
-			8, 105, 112, 115, 161, 195, 106, 2, 111, 98, 0, 122, 8, 105, 114, 103, 105, 116, 0, 122, 8, 105, 114, 145, 197, 107, 0, 122, 8, 105,
-			115, 97, 104, 2, 97, 103, 0, 122, 8, 111, 98, 109, 111, 103, 0, 122, 8, 111, 103, 97, 121, 103, 97, 2, 101, 114, 103, 0, 122, 8,
-			111, 103, 161, 195, 108, 105, 118, 2, 101, 109, 0, 122, 8, 111, 107, 2, 101, 109, 0, 122, 8, 111, 107, 105, 109, 0, 122, 8, 111, 107,
-			122, 115, 105, 112, 0, 122, 8, 111, 109, 97, 122, 115, 0, 122, 8, 111, 109, 161, 195, 118, 0, 122, 8, 111, 112, 97, 107, 0, 122, 8,
-			111, 112, 97, 110, 2, 111, 98, 0, 122, 8, 111, 114, 161, 195, 118, 0, 122, 8, 111, 114, 161, 195, 118, 2, 195, 169, 108, 0, 122, 8,
-			111, 121, 103, 110, 111, 114, 0, 122, 8, 114, 101, 118, 2, 101, 114, 0, 122, 8, 114, 111, 115, 2, 101, 115, 122, 195, 169, 108, 121, 0,
-			122, 8, 114, 111, 121, 103, 0, 122, 8, 114, 161, 195, 104, 0, 122, 8, 114, 161, 195, 116, 2, 111, 98, 0, 122, 8, 114, 161, 195, 121,
-			110, 2, 101, 114, 197, 177, 0, 122, 8, 117, 100, 108, 111, 107, 2, 101, 0, 122, 8, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 101,
-			114, 0, 122, 8, 117, 107, 101, 104, 2, 97, 103, 0, 122, 8, 117, 107, 179, 195, 109, 0, 122, 8, 117, 112, 173, 195, 116, 2, 195, 161,
-			109, 0, 122, 8, 117, 112, 173, 195, 116, 2, 195, 182, 118, 101, 103, 0, 122, 8, 117, 114, 173, 195, 118, 2, 101, 114, 0, 122, 8, 145,
-			197, 2, 101, 108, 108, 0, 122, 8, 145, 197, 2, 101, 114, 197, 177, 0, 122, 8, 145, 197, 2, 105, 0, 122, 8, 145, 197, 2, 111, 107,
-			195, 161, 0, 122, 8, 145, 197, 2, 195, 169, 107, 0, 122, 8, 145, 197, 104, 0, 122, 8, 161, 195, 102, 2, 195, 173, 110, 0, 122, 8,
-			161, 195, 103, 97, 99, 97, 107, 2, 101, 114, 0, 122, 8, 161, 195, 103, 114, 111, 102, 0, 122, 8, 161, 195, 107, 97, 108, 0, 122, 8,
-			161, 195, 107, 97, 114, 0, 122, 8, 161, 195, 108, 97, 2, 111, 108, 103, 0, 122, 8, 161, 195, 108, 179, 195, 122, 115, 0, 122, 8, 161,
-			195, 109, 2, 195, 179, 0, 122, 8, 161, 195, 109, 111, 108, 108, 97, 118, 0, 122, 8, 161, 195, 114, 114, 111, 102, 0, 122, 8, 161, 195,
-			115, 0, 122, 8, 161, 195, 115, 122, 179, 195, 114, 2, 197, 145, 107, 0, 122, 8, 161, 195, 116, 97, 104, 2, 101, 114, 0, 122, 8, 161,
-			195, 116, 110, 97, 107, 114, 111, 104, 2, 101, 114, 0, 122, 8, 161, 195, 116, 114, 111, 112, 0, 122, 8, 161, 195, 116, 161, 195, 108, 2,
-			195, 182, 103, 0, 122, 8, 161, 195, 118, 108, 105, 122, 115, 0, 122, 8, 169, 195, 99, 101, 114, 2, 195, 161, 114, 195, 186, 0, 122, 8,
-			169, 195, 100, 101, 107, 108, 101, 122, 173, 195, 104, 0, 122, 8, 169, 195, 103, 169, 195, 0, 122, 8, 169, 195, 107, 112, 105, 115, 99, 0,
-			122, 8, 169, 195, 107, 169, 195, 98, 0, 122, 8, 169, 195, 114, 2, 101, 114, 197, 177, 0, 122, 8, 169, 195, 116, 101, 100, 108, 188, 195,
-			107, 0, 122, 8, 169, 195, 116, 101, 116, 110, 188, 195, 116, 105, 107, 0, 122, 8, 169, 195, 116, 101, 118, 0, 122, 8, 169, 195, 116, 106,
-			101, 108, 0, 122, 8, 169, 195, 116, 173, 195, 114, 101, 107, 2, 97, 103, 0, 122, 8, 169, 195, 118, 101, 107, 0, 122, 8, 169, 195, 118,
-			101, 107, 2, 101, 114, 0, 122, 8, 169, 195, 122, 101, 100, 110, 101, 114, 101, 98, 2, 101, 0, 122, 8, 179, 195, 106, 0, 122, 8, 179,
-			195, 106, 97, 104, 0, 122, 8, 179, 195, 116, 173, 195, 114, 105, 112, 2, 101, 0, 122, 8, 182, 195, 114, 107, 182, 195, 2, 101, 103, 0,
-			122, 8, 182, 195, 114, 107, 182, 195, 2, 101, 107, 101, 114, 101, 0, 122, 8, 182, 195, 114, 107, 188, 195, 116, 0, 122, 8, 182, 195, 114,
-			182, 195, 107, 2, 105, 103, 0, 122, 8, 182, 195, 114, 182, 195, 118, 0, 122, 8, 186, 195, 104, 2, 97, 108, 111, 110, 110, 97, 0, 122,
-			8, 186, 195, 104, 2, 105, 103, 101, 116, 0, 122, 8, 186, 195, 104, 2, 195, 173, 110, 0, 7, 6, 115, 122, 0, 4, 3, 89, 0, 1,
-			97, 118, 97, 114, 2, 195, 161, 114, 0, 1, 97, 118, 97, 116, 2, 195, 161, 114, 97, 0, 1, 100, 110, 101, 114, 2, 101, 114, 101, 116,
-			197, 145, 0, 1, 100, 110, 101, 114, 2, 101, 114, 3, 89, 12, 0, 4, 116, 1, 97, 114, 97, 112, 2, 115, 101, 103, 103, 3, 89, 47,
-			0, 116, 1, 101, 98, 122, 97, 2, 115, 105, 115, 97, 107, 0, 116, 1, 101, 114, 101, 107, 2, 115, 111, 114, 0, 116, 1, 101, 114, 101,
-			107, 2, 115, 122, 101, 114, 0, 116, 1, 117, 121, 110, 2, 115, 195, 188, 118, 101, 103, 0, 4, 116, 115, 122, 3, 89, 47, 89, 0, 116,
-			115, 122, 1, 97, 114, 97, 112, 2, 97, 103, 0, 116, 115, 122, 1, 97, 114, 97, 112, 2, 97, 110, 100, 195, 161, 108, 0, 116, 115, 122,
-			1, 97, 114, 97, 112, 2, 101, 107, 0, 116, 115, 122, 1, 101, 114, 101, 107, 2, 101, 0, 116, 115, 122, 1, 105, 108, 2, 101, 114, 197,
-			177, 0, 116, 115, 122, 1, 105, 116, 97, 98, 2, 101, 114, 197, 177, 0, 116, 115, 122, 8, 97, 109, 97, 100, 0, 4, 116, 115, 122, 101,
-			1, 105, 116, 97, 98, 2, 103, 195, 169, 3, 89, 47, 89, 109, 0, 116, 115, 122, 101, 1, 105, 116, 101, 109, 97, 0, 116, 115, 122, 101,
-			1, 111, 114, 100, 2, 114, 122, 197, 145, 0, 116, 115, 122, 101, 8, 97, 107, 0, 4, 116, 115, 1, 97, 108, 97, 109, 2, 117, 103, 97,
-			108, 3, 89, 47, 91, 0, 116, 115, 1, 97, 114, 97, 112, 2, 105, 104, 101, 100, 0, 116, 115, 1, 97, 114, 97, 112, 2, 111, 110, 107,
-			0, 116, 115, 1, 97, 114, 97, 112, 2, 111, 114, 115, 0, 116, 115, 1, 97, 114, 97, 112, 2, 117, 104, 97, 110, 0, 116, 115, 1, 97,
-			114, 97, 112, 2, 195, 188, 116, 101, 0, 116, 115, 1, 101, 116, 2, 111, 114, 111, 122, 0, 116, 115, 8, 97, 109, 97, 100, 0, 116, 115,
-			3, 89, 76, 12, 0, 116, 115, 122, 97, 3, 89, 119, 108, 0, 116, 115, 122, 101, 3, 89, 119, 109, 0, 115, 1, 169, 195, 103, 101, 2,
-			195, 169, 103, 3, 91, 0, 4, 115, 1, 97, 103, 105, 2, 195, 161, 103, 111, 115, 3, 91, 12, 0, 115, 1, 169, 195, 107, 103, 101, 108,
-			2, 195, 169, 103, 101, 115, 0, 1, 97, 118, 2, 97, 98, 108, 3, 91, 15, 88, 0, 4, 1, 97, 118, 2, 195, 161, 112, 111, 114, 3,
-			91, 88, 0, 1, 97, 118, 2, 195, 161, 114, 0, 1, 111, 114, 97, 109, 2, 117, 103, 0, 1, 161, 195, 108, 108, 97, 104, 2, 97, 118,
-			97, 114, 0, 1, 161, 195, 121, 108, 107, 161, 195, 102, 2, 101, 110, 101, 0, 1, 169, 195, 118, 101, 2, 97, 118, 97, 114, 0, 1, 179,
-			195, 110, 111, 118, 2, 101, 110, 101, 0, 1, 182, 195, 114, 182, 195, 107, 2, 117, 103, 0, 2, 97, 99, 115, 107, 0, 2, 195, 182, 108,
-			100, 0, 4, 115, 1, 97, 118, 2, 97, 110, 195, 169, 114, 3, 91, 90, 0, 115, 1, 97, 118, 2, 195, 173, 114, 0, 115, 1, 101, 122,
-			105, 118, 2, 101, 109, 0, 115, 1, 161, 195, 107, 110, 111, 115, 2, 101, 109, 108, 0, 115, 1, 161, 195, 116, 2, 105, 110, 0, 115, 1,
-			169, 195, 116, 114, 101, 115, 2, 195, 173, 114, 0, 115, 2, 195, 161, 107, 0, 7, 6, 116, 106, 0, 4, 1, 97, 104, 2, 101, 103, 121,
-			197, 177, 3, 47, 57, 0, 1, 97, 108, 108, 161, 195, 2, 195, 179, 108, 195, 169, 116, 0, 1, 97, 108, 111, 100, 110, 111, 103, 2, 101,
-			108, 0, 1, 97, 108, 117, 103, 110, 97, 104, 2, 97, 118, 195, 173, 116, 0, 1, 97, 108, 117, 103, 110, 97, 104, 2, 101, 108, 0, 1,
-			97, 109, 97, 121, 108, 111, 102, 2, 101, 108, 0, 1, 97, 110, 111, 118, 2, 101, 103, 121, 0, 1, 97, 112, 97, 115, 99, 2, 101, 108,
-			0, 1, 97, 112, 97, 115, 99, 2, 195, 161, 116, 195, 169, 107, 0, 1, 97, 122, 111, 103, 108, 111, 100, 2, 97, 118, 195, 173, 116, 0,
-			1, 101, 108, 98, 98, 182, 195, 116, 2, 195, 182, 118, 101, 100, 101, 108, 0, 1, 101, 108, 101, 116, 122, 115, 105, 116, 2, 101, 103, 121,
-			0, 1, 101, 108, 114, 169, 195, 98, 2, 101, 103, 121, 0, 1, 101, 108, 169, 195, 2, 101, 108, 0, 1, 101, 108, 169, 195, 2, 195, 161,
-			114, 97, 100, 195, 169, 107, 0, 1, 101, 108, 188, 195, 114, 101, 116, 2, 101, 108, 195, 182, 108, 0, 1, 101, 109, 169, 195, 110, 2, 117,
-			104, 195, 161, 0, 1, 101, 110, 101, 109, 2, 101, 103, 103, 121, 0, 1, 101, 110, 101, 109, 2, 101, 103, 121, 0, 1, 101, 110, 101, 122,
-			188, 195, 2, 101, 108, 0, 1, 101, 110, 114, 101, 116, 110, 105, 2, 101, 103, 121, 0, 1, 101, 110, 188, 195, 122, 115, 2, 101, 108, 0,
-			1, 101, 115, 101, 2, 111, 103, 0, 1, 101, 122, 101, 106, 101, 102, 2, 101, 108, 0, 1, 101, 122, 114, 169, 195, 122, 182, 195, 107, 2,
-			97, 118, 195, 173, 0, 1, 101, 122, 115, 169, 195, 109, 114, 101, 116, 2, 111, 103, 0, 1, 101, 122, 115, 169, 195, 109, 114, 101, 116, 2,
-			195, 161, 114, 0, 1, 101, 122, 115, 169, 195, 109, 114, 101, 116, 2, 195, 161, 116, 195, 169, 107, 0, 1, 101, 122, 121, 108, 101, 104, 2,
-			101, 108, 0, 1, 101, 122, 177, 197, 121, 116, 110, 101, 108, 108, 105, 98, 2, 101, 108, 0, 1, 108, 111, 104, 2, 195, 161, 116, 195, 169,
-			107, 0, 1, 110, 97, 107, 107, 111, 114, 2, 195, 161, 114, 97, 100, 195, 169, 107, 0, 1, 110, 101, 122, 115, 2, 97, 107, 97, 98, 0,
-			1, 110, 101, 122, 115, 2, 195, 161, 110, 111, 115, 0, 1, 110, 111, 114, 102, 2, 195, 161, 114, 0, 1, 110, 111, 115, 99, 2, 195, 161,
-			116, 195, 169, 107, 0, 1, 111, 112, 97, 108, 108, 161, 195, 2, 97, 118, 117, 108, 0, 1, 111, 112, 97, 108, 108, 161, 195, 2, 101, 108,
-			0, 1, 114, 111, 112, 115, 2, 195, 161, 116, 195, 169, 107, 0, 1, 114, 188, 195, 107, 2, 101, 108, 0, 1, 115, 101, 116, 2, 195, 161,
-			116, 195, 169, 107, 0, 1, 115, 188, 195, 122, 101, 2, 101, 108, 118, 0, 1, 122, 115, 182, 195, 114, 182, 195, 107, 2, 195, 161, 114, 0,
-			1, 161, 195, 2, 117, 115, 115, 0, 1, 161, 195, 2, 117, 116, 0, 1, 161, 195, 2, 195, 161, 114, 0, 1, 161, 195, 2, 195, 182, 0,
-			1, 161, 195, 2, 195, 182, 104, 101, 0, 1, 161, 195, 2, 195, 182, 110, 0, 1, 161, 195, 2, 195, 182, 115, 115, 122, 0, 1, 161, 195,
-			2, 195, 182, 116, 0, 1, 169, 195, 104, 2, 101, 103, 121, 197, 177, 0, 1, 169, 195, 107, 2, 101, 103, 121, 197, 177, 0, 1, 169, 195,
-			107, 105, 112, 2, 195, 161, 116, 115, 122, 0, 1, 169, 195, 108, 2, 111, 103, 111, 115, 117, 108, 116, 115, 195, 161, 103, 0, 1, 169, 195,
-			110, 101, 122, 2, 195, 161, 116, 115, 122, 0, 1, 179, 195, 107, 115, 2, 117, 104, 195, 161, 115, 122, 0, 1, 179, 195, 112, 2, 101, 0,
-			1, 182, 195, 2, 101, 103, 121, 197, 177, 0, 1, 186, 195, 2, 97, 118, 195, 173, 0, 1, 186, 195, 2, 101, 108, 122, 195, 169, 115, 0,
-			1, 186, 195, 2, 101, 108, 122, 197, 145, 0, 1, 186, 195, 2, 111, 103, 0, 2, 101, 108, 0, 8, 97, 122, 161, 195, 108, 98, 161, 195,
-			116, 2, 101, 103, 121, 0, 8, 101, 108, 101, 116, 122, 115, 105, 116, 2, 101, 108, 0, 8, 101, 108, 122, 115, 169, 195, 107, 2, 101, 108,
-			101, 110, 0, 8, 110, 97, 122, 115, 101, 100, 2, 195, 161, 114, 109, 0, 8, 122, 115, 101, 114, 101, 107, 2, 195, 161, 0, 8, 122, 115,
-			169, 195, 118, 2, 195, 179, 115, 108, 0, 8, 161, 195, 2, 101, 108, 101, 110, 116, 107, 101, 122, 0, 8, 161, 195, 2, 117, 0, 8, 161,
-			195, 2, 195, 182, 106, 0, 4, 195, 161, 116, 115, 115, 122, 1, 161, 195, 3, 47, 57, 114, 119, 12, 0, 195, 161, 116, 115, 122, 1, 161,
-			195, 0, 4, 1, 17, 67, 3, 80, 0, 1, 110, 111, 115, 99, 0, 1, 114, 188, 195, 107, 0, 1, 115, 188, 195, 122, 101, 0, 4, 1,
-			17, 65, 2, 17, 65, 3, 80, 12, 0, 1, 101, 108, 122, 188, 195, 0, 1, 161, 195, 103, 2, 195, 161, 114, 0, 1, 161, 195, 104, 2,
-			195, 161, 114, 0, 1, 161, 195, 108, 114, 111, 107, 2, 195, 161, 114, 97, 0, 1, 161, 195, 114, 97, 98, 2, 195, 161, 114, 0, 7, 6,
-			116, 115, 0, 4, 122, 1, 97, 100, 97, 3, 47, 89, 0, 122, 1, 97, 100, 97, 2, 111, 108, 103, 195, 161, 108, 116, 97, 116, 0, 122,
-			1, 97, 104, 2, 195, 161, 122, 0, 122, 1, 97, 108, 117, 100, 110, 105, 2, 195, 179, 0, 122, 1, 101, 108, 98, 98, 182, 195, 116, 2,
-			111, 108, 0, 122, 1, 101, 108, 188, 195, 115, 99, 101, 98, 2, 195, 179, 0, 122, 1, 101, 110, 2, 111, 0, 122, 1, 101, 110, 101, 109,
-			2, 195, 169, 108, 0, 122, 1, 101, 116, 101, 114, 101, 122, 115, 2, 111, 108, 103, 195, 161, 108, 97, 116, 0, 122, 1, 101, 122, 109, 101,
-			110, 2, 111, 0, 122, 1, 105, 104, 2, 101, 0, 122, 1, 105, 104, 2, 195, 179, 0, 122, 1, 106, 101, 115, 2, 195, 182, 0, 122, 1,
-			110, 97, 108, 2, 195, 179, 0, 122, 1, 110, 101, 98, 2, 111, 114, 117, 108, 0, 122, 1, 110, 101, 122, 115, 2, 111, 98, 114, 111, 107,
-			0, 122, 1, 110, 101, 122, 115, 2, 195, 169, 107, 0, 122, 1, 110, 111, 114, 102, 2, 111, 108, 103, 195, 161, 108, 0, 122, 1, 110, 111,
-			115, 99, 2, 195, 169, 110, 0, 122, 1, 110, 161, 195, 112, 2, 195, 169, 108, 0, 122, 1, 111, 112, 97, 121, 103, 0, 122, 1, 114, 101,
-			107, 2, 111, 109, 115, 122, 195, 169, 100, 0, 122, 1, 114, 111, 112, 115, 2, 111, 108, 103, 195, 161, 108, 0, 122, 1, 114, 188, 195, 107,
-			2, 195, 179, 0, 122, 1, 161, 195, 2, 97, 0, 122, 1, 161, 195, 2, 101, 0, 122, 1, 161, 195, 2, 111, 107, 0, 122, 1, 161, 195,
-			2, 195, 182, 0, 122, 1, 161, 195, 2, 195, 186, 0, 122, 1, 161, 195, 2, 197, 145, 0, 122, 1, 161, 195, 2, 197, 177, 0, 122, 1,
-			161, 195, 98, 97, 107, 2, 195, 169, 0, 122, 1, 161, 195, 104, 2, 195, 169, 108, 0, 122, 1, 161, 195, 108, 2, 101, 0, 122, 1, 161,
-			195, 108, 2, 101, 114, 195, 169, 115, 122, 0, 122, 1, 161, 195, 122, 115, 115, 97, 112, 2, 195, 169, 108, 0, 122, 1, 169, 195, 104, 2,
-			195, 161, 122, 0, 122, 1, 169, 195, 107, 2, 101, 114, 101, 112, 0, 122, 1, 169, 195, 107, 2, 195, 161, 122, 0, 122, 1, 169, 195, 107,
-			2, 195, 173, 110, 0, 122, 1, 169, 195, 108, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 182, 195, 115, 2, 197, 145, 107, 101, 0, 122,
-			1, 179, 195, 107, 115, 2, 111, 107, 110, 121, 0, 122, 1, 179, 195, 114, 100, 2, 197, 145, 114, 0, 122, 1, 182, 195, 2, 195, 161, 122,
-			0, 122, 1, 186, 195, 2, 111, 114, 111, 115, 0, 122, 1, 186, 195, 2, 195, 169, 108, 0, 122, 2, 97, 0, 122, 2, 101, 0, 122, 2,
-			195, 161, 0, 122, 8, 97, 104, 2, 111, 98, 0, 122, 8, 97, 104, 99, 2, 111, 98, 0, 122, 8, 161, 195, 2, 111, 108, 103, 195, 161,
-			108, 0, 122, 8, 161, 195, 2, 111, 114, 111, 110, 103, 0, 122, 8, 161, 195, 2, 111, 114, 117, 108, 116, 0, 122, 8, 161, 195, 2, 111,
-			114, 195, 173, 116, 0, 122, 8, 169, 195, 104, 2, 111, 98, 0, 122, 8, 169, 195, 107, 2, 111, 98, 0, 122, 8, 179, 195, 112, 2, 195,
-			169, 107, 0, 122, 8, 182, 195, 2, 111, 98, 0, 122, 195, 169, 1, 169, 195, 122, 115, 3, 47, 89, 113, 0, 4, 1, 97, 100, 97, 3,
-			47, 91, 0, 1, 97, 100, 97, 108, 101, 102, 2, 111, 114, 0, 1, 97, 104, 2, 195, 161, 118, 0, 1, 97, 108, 108, 161, 195, 2, 101,
-			114, 101, 103, 0, 1, 97, 108, 111, 100, 110, 111, 103, 2, 111, 114, 0, 1, 97, 108, 114, 111, 107, 97, 121, 103, 2, 111, 114, 111, 122,
-			0, 1, 97, 108, 117, 100, 122, 111, 109, 2, 111, 0, 1, 97, 108, 161, 195, 103, 115, 122, 105, 118, 2, 111, 114, 0, 1, 97, 108, 161,
-			195, 103, 115, 122, 105, 118, 2, 111, 114, 111, 122, 97, 0, 1, 97, 109, 97, 121, 108, 111, 102, 2, 195, 161, 118, 0, 1, 97, 110, 97,
-			103, 97, 100, 2, 101, 106, 0, 1, 97, 114, 105, 108, 101, 102, 2, 195, 161, 118, 0, 1, 97, 122, 161, 195, 108, 98, 161, 195, 116, 2,
-			111, 114, 0, 1, 101, 103, 105, 122, 115, 2, 111, 114, 0, 1, 101, 108, 101, 118, 177, 197, 109, 2, 111, 0, 1, 101, 108, 101, 118, 177,
-			197, 109, 2, 195, 161, 118, 0, 1, 101, 108, 101, 121, 103, 101, 107, 2, 195, 169, 114, 0, 1, 101, 108, 114, 169, 195, 115, 173, 195, 107,
-			2, 111, 114, 111, 122, 97, 116, 0, 1, 101, 108, 122, 188, 195, 2, 111, 114, 0, 1, 101, 108, 188, 195, 112, 169, 195, 2, 97, 114, 111,
-			107, 0, 1, 101, 108, 188, 195, 112, 169, 195, 2, 97, 114, 111, 107, 0, 1, 101, 108, 188, 195, 114, 101, 116, 2, 195, 161, 118, 0, 1,
-			101, 108, 188, 195, 115, 99, 101, 98, 2, 195, 169, 0, 1, 101, 110, 2, 101, 0, 1, 101, 110, 2, 195, 161, 116, 111, 114, 0, 1, 101,
-			110, 101, 109, 2, 111, 114, 0, 1, 101, 118, 182, 195, 122, 115, 2, 97, 112, 107, 0, 1, 101, 122, 109, 101, 110, 2, 116, 114, 97, 116,
-			195, 169, 0, 1, 101, 122, 188, 195, 102, 97, 107, 110, 117, 109, 2, 97, 98, 108, 0, 1, 105, 98, 2, 101, 98, 101, 115, 115, 195, 169,
-			103, 0, 1, 105, 109, 2, 101, 0, 1, 108, 97, 98, 111, 107, 2, 117, 103, 195, 161, 114, 0, 1, 108, 111, 104, 2, 195, 161, 112, 97,
-			100, 116, 0, 1, 110, 105, 109, 2, 101, 109, 0, 1, 110, 111, 115, 99, 2, 195, 169, 114, 0, 1, 110, 161, 195, 114, 111, 107, 2, 101,
-			0, 1, 111, 98, 111, 114, 2, 111, 102, 0, 1, 111, 111, 98, 2, 111, 114, 114, 101, 110, 100, 0, 1, 111, 112, 97, 108, 108, 161, 195,
-			2, 111, 114, 0, 1, 114, 97, 112, 2, 195, 161, 118, 0, 1, 114, 161, 195, 112, 2, 97, 106, 116, 195, 179, 0, 1, 114, 161, 195, 122,
-			2, 111, 114, 195, 186, 0, 1, 115, 101, 116, 2, 195, 169, 114, 0, 1, 117, 99, 110, 117, 104, 2, 195, 161, 103, 0, 1, 122, 115, 101,
-			116, 2, 111, 114, 0, 1, 161, 195, 2, 101, 103, 195, 173, 116, 0, 1, 161, 195, 2, 101, 106, 108, 101, 0, 1, 161, 195, 2, 111, 114,
-			0, 1, 161, 195, 2, 117, 103, 0, 1, 161, 195, 2, 117, 104, 0, 1, 161, 195, 2, 117, 114, 0, 1, 161, 195, 2, 195, 169, 0, 1,
-			161, 195, 2, 195, 182, 112, 114, 197, 145, 0, 1, 161, 195, 2, 195, 182, 112, 195, 182, 114, 0, 1, 161, 195, 2, 195, 188, 108, 116, 0,
-			1, 161, 195, 2, 195, 188, 116, 0, 1, 161, 195, 2, 195, 188, 118, 195, 173, 116, 0, 1, 161, 195, 103, 2, 195, 188, 108, 108, 121, 101,
-			100, 0, 1, 169, 195, 107, 2, 97, 114, 107, 195, 186, 0, 1, 169, 195, 107, 2, 97, 114, 111, 107, 0, 1, 169, 195, 107, 2, 101, 98,
-			101, 115, 115, 195, 169, 103, 101, 115, 0, 1, 169, 195, 107, 2, 111, 114, 0, 1, 169, 195, 107, 2, 195, 161, 118, 0, 1, 169, 195, 114,
-			182, 195, 115, 2, 101, 98, 0, 1, 179, 195, 107, 115, 2, 97, 112, 107, 97, 0, 1, 179, 195, 114, 100, 2, 195, 182, 118, 195, 169, 110,
-			110, 121, 0, 1, 179, 195, 114, 100, 2, 195, 182, 118, 195, 169, 110, 121, 0, 1, 179, 195, 122, 111, 98, 2, 111, 0, 1, 186, 195, 107,
-			2, 117, 103, 0, 8, 161, 195, 2, 111, 100, 111, 114, 0, 8, 186, 195, 2, 195, 161, 118, 0, 4, 1, 106, 3, 76, 0, 1, 110, 101,
-			109, 2, 118, 195, 161, 114, 0, 1, 110, 182, 195, 100, 2, 195, 182, 110, 0, 2, 32, 14, 128, 128, 130, 0, 2, 97, 0, 2, 101, 0,
-			2, 111, 0, 2, 117, 0, 2, 195, 161, 0, 2, 195, 169, 0, 4, 1, 97, 108, 108, 161, 195, 2, 195, 161, 103, 3, 76, 12, 0, 1,
-			97, 108, 117, 109, 0, 1, 101, 104, 101, 108, 2, 195, 169, 103, 0, 1, 101, 104, 101, 116, 2, 195, 169, 103, 0, 1, 101, 105, 115, 0,
-			1, 101, 107, 188, 195, 115, 2, 195, 169, 103, 0, 1, 101, 108, 106, 101, 102, 2, 195, 169, 103, 0, 1, 101, 109, 169, 195, 110, 2, 195,
-			169, 103, 0, 1, 101, 114, 101, 109, 115, 105, 2, 195, 169, 103, 0, 1, 101, 114, 169, 195, 2, 195, 169, 103, 0, 1, 101, 118, 101, 110,
-			2, 195, 169, 103, 0, 1, 101, 118, 182, 195, 107, 2, 195, 169, 103, 0, 1, 101, 118, 182, 195, 122, 115, 2, 195, 169, 103, 0, 1, 101,
-			122, 101, 108, 101, 116, 182, 195, 107, 2, 195, 169, 103, 0, 1, 101, 122, 105, 102, 2, 195, 169, 103, 0, 1, 101, 122, 109, 101, 110, 0,
-			1, 105, 103, 101, 115, 2, 195, 169, 0, 1, 111, 116, 97, 103, 111, 109, 161, 195, 116, 2, 195, 161, 103, 0, 1, 111, 122, 105, 98, 2,
-			195, 161, 103, 0, 1, 117, 99, 110, 117, 104, 2, 195, 161, 103, 0, 1, 161, 195, 2, 195, 179, 0, 1, 161, 195, 106, 97, 115, 2, 195,
-			161, 103, 0, 1, 161, 195, 112, 97, 2, 195, 161, 103, 0, 1, 161, 195, 114, 97, 98, 0, 1, 169, 195, 107, 2, 195, 169, 103, 0, 1,
-			169, 195, 109, 101, 122, 115, 2, 195, 169, 103, 0, 1, 169, 195, 114, 2, 195, 169, 103, 0, 1, 169, 195, 116, 182, 195, 115, 2, 195, 169,
-			103, 0, 1, 169, 195, 118, 2, 195, 169, 103, 0, 1, 173, 195, 103, 101, 115, 0, 1, 173, 195, 108, 108, 161, 195, 0, 1, 173, 195, 114,
-			111, 122, 115, 2, 97, 0, 1, 173, 195, 114, 188, 195, 2, 101, 0, 1, 177, 197, 102, 0, 1, 177, 197, 104, 0, 1, 182, 195, 116, 182,
-			195, 107, 2, 195, 169, 103, 0, 8, 161, 195, 104, 2, 195, 161, 103, 0, 100, 3, 76, 72, 0, 195, 182, 3, 76, 110, 0, 195, 188, 3,
-			76, 111, 0, 4, 122, 1, 101, 109, 2, 118, 101, 3, 119, 0, 122, 1, 101, 109, 101, 108, 2, 118, 195, 169, 110, 0, 122, 1, 161, 195,
-			106, 2, 104, 97, 115, 115, 0, 122, 1, 161, 195, 106, 2, 104, 97, 116, 0, 122, 1, 161, 195, 106, 2, 109, 0, 122, 1, 161, 195, 106,
-			2, 118, 0, 4, 115, 122, 1, 97, 108, 108, 97, 104, 2, 111, 110, 3, 119, 12, 0, 115, 122, 1, 101, 109, 2, 101, 0, 115, 122, 1,
-			101, 109, 2, 195, 188, 107, 0, 115, 122, 1, 161, 195, 106, 0, 115, 122, 1, 161, 195, 108, 2, 97, 110, 97, 107, 0, 115, 122, 1, 161,
-			195, 108, 2, 111, 110, 0, 115, 122, 8, 161, 195, 108, 2, 195, 169, 107, 0, 122, 1, 97, 108, 108, 97, 104, 2, 97, 0, 122, 1, 97,
-			108, 108, 97, 104, 2, 105, 107, 0, 122, 1, 101, 105, 115, 0, 122, 1, 101, 109, 2, 101, 0, 122, 1, 101, 109, 2, 101, 116, 0, 122,
-			1, 101, 109, 2, 105, 107, 0, 122, 1, 101, 116, 0, 122, 1, 161, 195, 106, 2, 17, 65, 0, 122, 1, 161, 195, 106, 2, 111, 107, 0,
-			122, 1, 161, 195, 108, 2, 17, 65, 0, 122, 1, 169, 195, 104, 2, 101, 114, 0, 122, 1, 169, 195, 107, 2, 101, 114, 0, 122, 1, 182,
-			195, 2, 195, 182, 114, 0, 122, 1, 182, 195, 112, 2, 101, 110, 0, 122, 2, 32, 14, 128, 128, 131, 0, 122, 2, 111, 0, 122, 2, 195,
-			169, 0, 122, 2, 197, 145, 0, 122, 195, 179, 2, 32, 14, 128, 128, 132, 3, 119, 12, 115, 0, 7, 6, 116, 116, 0, 4, 1, 97, 108,
-			97, 2, 106, 195, 161, 114, 3, 47, 0, 1, 101, 107, 105, 114, 107, 2, 106, 195, 161, 116, 0, 1, 101, 107, 105, 114, 107, 2, 106, 195,
-			161, 116, 0, 1, 111, 108, 97, 104, 2, 115, 195, 161, 112, 97, 100, 0, 1, 182, 195, 108, 188, 195, 122, 115, 110, 110, 101, 98, 2, 106,
-			101, 108, 109, 101, 122, 0, 4, 3, 47, 12, 0, 1, 101, 122, 101, 121, 108, 101, 104, 2, 114, 197, 145, 108, 0, 1, 122, 115, 101, 114,
-			101, 107, 2, 197, 177, 122, 0, 1, 169, 195, 122, 115, 2, 114, 97, 110, 99, 115, 195, 173, 114, 0, 103, 121, 3, 47, 12, 79, 0, 114,
-			3, 47, 52, 0, 4, 115, 2, 195, 161, 3, 76, 12, 0, 115, 2, 195, 169, 0, 4, 106, 3, 80, 12, 0, 121, 0, 121, 106, 0, 115,
-			122, 1, 101, 109, 2, 101, 116, 3, 119, 12, 0, 7, 6, 116, 121, 0, 1, 110, 101, 122, 115, 100, 110, 105, 109, 3, 47, 37, 0, 2,
-			97, 114, 100, 3, 47, 57, 0, 7, 6, 195, 161, 0, 3, 114, 0, 105, 103, 1, 21, 2, 32, 14, 128, 192, 131, 3, 114, 37, 81, 0,
-			116, 195, 179, 108, 1, 21, 2, 32, 14, 128, 192, 132, 3, 114, 47, 115, 55, 0, 110, 97, 107, 1, 21, 2, 32, 14, 128, 192, 132, 3,
-			114, 50, 108, 49, 0, 114, 97, 1, 21, 2, 32, 14, 128, 192, 131, 3, 114, 52, 108, 0, 98, 97, 110, 1, 21, 2, 32, 14, 128, 192,
-			132, 3, 114, 71, 108, 50, 0, 7, 6, 195, 169, 0, 3, 113, 0, 105, 2, 195, 169, 3, 113, 12, 112, 0, 105, 103, 1, 21, 2, 32,
-			14, 128, 192, 131, 3, 113, 37, 81, 0, 116, 197, 145, 108, 1, 21, 2, 32, 14, 128, 192, 132, 3, 113, 47, 118, 55, 0, 110, 101, 107,
-			1, 21, 2, 32, 14, 128, 192, 132, 3, 113, 50, 109, 49, 0, 114, 101, 1, 21, 2, 32, 14, 128, 192, 131, 3, 113, 52, 109, 0, 98,
-			101, 110, 1, 21, 2, 32, 14, 128, 192, 132, 3, 113, 71, 109, 50, 0, 104, 115, 195, 169, 103, 3, 113, 91, 113, 81, 0, 104, 115, 195,
-			169, 103, 103, 3, 113, 91, 113, 81, 12, 0, 7, 6, 195, 171, 0, 3, 110, 0, 7, 6, 195, 173, 0, 4, 1, 116, 2, 122, 101, 110,
-			3, 37, 0, 1, 116, 2, 122, 101, 115, 0, 1, 116, 2, 122, 101, 116, 0, 1, 118, 2, 122, 101, 110, 0, 1, 118, 2, 122, 195, 169,
-			114, 101, 0, 1, 122, 115, 2, 118, 97, 116, 110, 0, 1, 122, 115, 2, 118, 97, 116, 195, 161, 115, 0, 1, 122, 115, 2, 118, 101, 0,
-			8, 116, 2, 122, 195, 188, 107, 0, 8, 118, 2, 122, 105, 0, 8, 122, 115, 2, 110, 195, 169, 115, 115, 122, 0, 8, 122, 115, 2, 110,
-			195, 169, 115, 122, 0, 8, 122, 115, 2, 118, 97, 116, 116, 97, 107, 0, 8, 122, 115, 2, 118, 97, 116, 116, 195, 161, 107, 107, 0, 8,
-			122, 115, 2, 118, 97, 116, 195, 179, 0, 8, 122, 115, 103, 101, 109, 2, 118, 97, 116, 116, 97, 0, 116, 115, 122, 1, 100, 97, 98, 97,
-			122, 115, 3, 37, 119, 12, 0, 4, 3, 112, 0, 1, 116, 2, 122, 101, 115, 122, 0, 1, 122, 115, 2, 118, 101, 108, 0, 1, 122, 115,
-			2, 118, 101, 109, 195, 169, 115, 122, 116, 0, 1, 122, 115, 115, 101, 114, 103, 97, 2, 118, 0, 8, 118, 2, 122, 105, 195, 179, 0, 116,
-			115, 3, 112, 76, 12, 0, 116, 115, 100, 3, 112, 76, 72, 0, 116, 115, 122, 1, 122, 115, 101, 118, 3, 112, 119, 12, 0, 7, 6, 195,
-			179, 0, 3, 115, 0, 7, 6, 195, 182, 0, 3, 110, 0, 7, 6, 195, 186, 0, 4, 1, 104, 2, 103, 111, 109, 3, 40, 0, 1, 104,
-			2, 115, 122, 97, 110, 0, 1, 104, 2, 115, 122, 97, 115, 0, 1, 104, 2, 115, 122, 97, 116, 0, 8, 104, 2, 103, 103, 121, 0, 8,
-			104, 2, 103, 111, 99, 115, 0, 8, 104, 2, 103, 121, 0, 4, 3, 116, 0, 1, 104, 2, 115, 122, 97, 110, 110, 121, 0, 7, 6, 195,
-			188, 0, 3, 111, 0, 116, 116, 2, 18, 66, 3, 111, 47, 0, 116, 116, 3, 111, 47, 12, 0, 116, 116, 114, 3, 111, 47, 52, 0, 116,
-			116, 98, 3, 111, 47, 71, 0, 116, 116, 121, 2, 18, 66, 3, 111, 80, 0, 116, 116, 121, 3, 111, 80, 12, 0, 116, 116, 121, 114, 3,
-			111, 80, 52, 0, 116, 116, 121, 98, 3, 111, 80, 71, 0, 7, 6, 197, 145, 0, 3, 118, 0, 7, 6, 197, 177, 0, 4, 1, 116, 2,
-			122, 105, 106, 195, 161, 116, 195, 169, 107, 3, 111, 0, 8, 116, 2, 110, 106, 195, 182, 110, 0, 8, 116, 2, 110, 195, 169, 115, 0, 3,
-			117, 0, 7, 6, 97, 0, 8, 2, 32, 3, 2, 108, 0, 108, 1, 45, 32, 48, 48, 15, 2, 32, 3, 88, 108, 55, 0, 3, 108, 0,
-			108, 1, 45, 32, 48, 48, 48, 2, 32, 3, 108, 55, 0, 104, 104, 111, 122, 3, 108, 107, 39, 88, 0, 7, 6, 98, 0, 4, 1, 45,
-			98, 3, 0, 1, 45, 98, 98, 3, 0, 4, 3, 71, 0, 98, 2, 18, 66, 0, 98, 2, 45, 18, 66, 0, 4, 2, 45, 98, 3, 71,
-			12, 0, 98, 0, 98, 2, 45, 98, 0, 105, 122, 2, 17, 65, 3, 71, 37, 88, 4, 0, 98, 114, 3, 71, 52, 0, 98, 106, 3, 71,
-			57, 0, 97, 110, 1, 21, 2, 32, 14, 128, 192, 131, 3, 71, 108, 50, 0, 97, 116, 116, 104, 105, 195, 161, 110, 121, 8, 3, 71, 108,
-			80, 12, 114, 67, 37, 0, 101, 110, 1, 21, 2, 32, 14, 128, 128, 131, 3, 71, 109, 50, 0, 105, 101, 100, 101, 114, 109, 101, 105, 101,
-			114, 5, 1, 3, 71, 112, 72, 109, 52, 65, 114, 57, 109, 52, 0, 7, 6, 99, 0, 4, 1, 45, 99, 3, 0, 4, 1, 45, 99, 99,
-			3, 0, 4, 99, 115, 1, 45, 115, 99, 3, 0, 4, 99, 115, 1, 45, 115, 99, 99, 3, 0, 4, 115, 1, 45, 99, 3, 0, 4, 115,
-			1, 45, 115, 99, 3, 0, 115, 1, 45, 115, 99, 99, 3, 0, 107, 5, 1, 8, 111, 116, 115, 2, 104, 111, 108, 109, 3, 49, 0, 4,
-			99, 115, 1, 45, 99, 99, 3, 76, 0, 99, 115, 2, 18, 66, 0, 99, 115, 2, 45, 18, 66, 0, 115, 0, 115, 1, 45, 99, 99, 0,
-			115, 1, 105, 118, 97, 107, 2, 122, 0, 115, 1, 105, 118, 97, 107, 2, 122, 195, 161, 116, 111, 110, 121, 0, 115, 1, 108, 117, 107, 2,
-			122, 195, 182, 114, 103, 0, 115, 1, 108, 182, 195, 109, 188, 195, 121, 103, 2, 122, 115, 0, 115, 1, 110, 105, 108, 105, 98, 2, 122, 195,
-			182, 114, 0, 115, 1, 110, 105, 108, 105, 107, 2, 122, 195, 182, 114, 0, 115, 1, 110, 161, 195, 116, 2, 105, 99, 115, 0, 115, 1, 110,
-			161, 195, 116, 161, 195, 115, 2, 97, 112, 0, 115, 1, 114, 169, 195, 2, 195, 173, 112, 116, 101, 0, 115, 1, 117, 112, 97, 112, 0, 115,
-			1, 161, 195, 116, 114, 97, 107, 2, 122, 195, 161, 112, 111, 0, 4, 99, 115, 3, 76, 12, 0, 99, 115, 2, 45, 99, 99, 115, 0, 99,
-			115, 2, 45, 99, 115, 0, 115, 1, 161, 195, 114, 97, 98, 2, 195, 161, 103, 116, 97, 0, 115, 2, 45, 99, 99, 115, 0, 115, 2, 45,
-			99, 115, 0, 99, 115, 114, 3, 76, 52, 0, 115, 122, 1, 161, 195, 112, 97, 108, 97, 107, 2, 101, 110, 3, 76, 88, 0, 4, 99, 115,
-			2, 45, 115, 122, 3, 76, 89, 0, 115, 2, 45, 115, 122, 0, 115, 122, 115, 3, 76, 90, 0, 4, 3, 119, 0, 1, 97, 108, 97, 109,
-			2, 115, 195, 161, 0, 1, 97, 108, 97, 109, 2, 115, 195, 188, 108, 0, 1, 97, 122, 97, 108, 0, 1, 101, 114, 101, 112, 2, 99, 115,
-			0, 1, 101, 114, 101, 112, 2, 115, 195, 188, 116, 0, 1, 108, 105, 102, 2, 99, 115, 105, 122, 0, 1, 108, 111, 112, 2, 115, 111, 0,
-			1, 108, 111, 121, 110, 2, 115, 101, 98, 0, 1, 110, 97, 104, 117, 115, 0, 1, 110, 101, 99, 105, 108, 2, 115, 195, 169, 114, 116, 195,
-			169, 115, 0, 1, 110, 101, 108, 105, 107, 2, 99, 115, 97, 116, 111, 114, 110, 0, 1, 110, 101, 108, 105, 107, 2, 115, 99, 104, 105, 108,
-			108, 0, 1, 110, 101, 108, 105, 107, 2, 115, 195, 161, 118, 0, 1, 110, 101, 121, 103, 101, 102, 0, 1, 110, 101, 121, 110, 173, 195, 2,
-			115, 195, 169, 103, 0, 1, 110, 105, 114, 101, 103, 0, 1, 110, 111, 98, 97, 114, 97, 103, 2, 115, 101, 114, 0, 1, 110, 111, 103, 114,
-			97, 121, 110, 2, 99, 115, 0, 1, 110, 111, 114, 97, 118, 100, 117, 2, 115, 101, 114, 0, 1, 110, 161, 195, 108, 2, 99, 115, 0, 1,
-			110, 161, 195, 116, 2, 99, 115, 0, 1, 110, 161, 195, 116, 2, 115, 0, 1, 110, 182, 195, 108, 188, 195, 107, 2, 115, 195, 169, 0, 1,
-			111, 98, 114, 161, 195, 2, 99, 115, 195, 186, 99, 115, 0, 1, 111, 98, 114, 161, 195, 2, 115, 117, 100, 0, 1, 111, 122, 115, 2, 115,
-			101, 103, 195, 169, 108, 121, 0, 1, 114, 97, 2, 99, 115, 111, 110, 0, 1, 114, 97, 100, 117, 107, 2, 115, 111, 114, 111, 122, 97, 116,
-			0, 1, 114, 97, 104, 2, 99, 115, 101, 108, 101, 107, 0, 1, 114, 97, 104, 2, 99, 115, 111, 112, 111, 114, 116, 0, 1, 114, 101, 110,
-			2, 115, 116, 195, 179, 108, 97, 0, 1, 114, 111, 112, 2, 115, 122, 0, 1, 114, 111, 112, 2, 115, 195, 169, 0, 1, 114, 169, 195, 2,
-			115, 111, 100, 114, 0, 1, 114, 169, 195, 98, 2, 99, 115, 117, 116, 0, 1, 114, 169, 195, 98, 2, 115, 195, 188, 118, 101, 103, 0, 1,
-			161, 195, 112, 2, 115, 195, 179, 0, 1, 169, 195, 116, 105, 110, 97, 122, 115, 2, 99, 115, 0, 1, 179, 195, 98, 114, 161, 195, 2, 99,
-			115, 195, 186, 99, 115, 0, 1, 179, 195, 104, 111, 98, 2, 115, 97, 112, 107, 0, 1, 179, 195, 104, 111, 98, 2, 115, 105, 112, 107, 0,
-			1, 179, 195, 108, 97, 116, 114, 97, 109, 0, 1, 179, 195, 114, 107, 111, 112, 2, 99, 115, 0, 8, 97, 105, 112, 2, 99, 115, 97, 114,
-			110, 111, 107, 0, 8, 97, 108, 97, 109, 2, 115, 105, 118, 195, 173, 116, 0, 8, 101, 103, 101, 106, 0, 8, 108, 105, 102, 2, 99, 115,
-			195, 173, 107, 0, 8, 108, 111, 112, 2, 99, 115, 97, 116, 0, 8, 110, 97, 98, 97, 108, 0, 8, 110, 101, 106, 169, 195, 107, 0, 8,
-			110, 101, 108, 105, 107, 2, 99, 115, 111, 109, 195, 179, 0, 8, 110, 101, 108, 105, 107, 2, 99, 115, 195, 182, 118, 0, 8, 110, 105, 114,
-			112, 2, 115, 195, 169, 103, 0, 8, 110, 111, 103, 114, 105, 118, 2, 115, 195, 161, 103, 0, 8, 110, 111, 106, 186, 195, 0, 8, 110, 169,
-			195, 109, 108, 101, 2, 115, 195, 169, 103, 0, 8, 114, 97, 2, 115, 101, 98, 0, 8, 114, 97, 2, 115, 195, 169, 114, 195, 188, 108, 0,
-			8, 114, 101, 110, 2, 115, 116, 195, 179, 108, 195, 161, 0, 8, 114, 169, 195, 2, 99, 115, 0, 8, 114, 169, 195, 2, 115, 97, 108, 97,
-			107, 0, 8, 114, 169, 195, 2, 115, 97, 115, 0, 8, 114, 169, 195, 2, 115, 101, 108, 121, 0, 8, 114, 169, 195, 2, 115, 105, 115, 97,
-			107, 0, 8, 114, 169, 195, 2, 115, 195, 173, 112, 0, 8, 117, 114, 117, 107, 0, 8, 161, 195, 107, 97, 2, 115, 195, 182, 118, 0, 8,
-			161, 195, 107, 161, 195, 2, 115, 195, 182, 118, 0, 8, 161, 195, 114, 2, 115, 195, 161, 103, 0, 8, 169, 195, 108, 106, 101, 102, 0, 8,
-			179, 195, 104, 111, 98, 2, 115, 122, 0, 8, 179, 195, 107, 2, 99, 115, 111, 109, 195, 179, 0, 8, 179, 195, 108, 97, 112, 2, 115, 195,
-			161, 103, 0, 99, 2, 18, 66, 0, 99, 2, 45, 18, 66, 0, 99, 2, 45, 99, 99, 115, 0, 99, 2, 45, 99, 115, 0, 99, 8, 105,
-			118, 2, 115, 111, 114, 0, 122, 1, 19, 0, 122, 8, 110, 105, 2, 195, 169, 100, 0, 4, 2, 45, 99, 3, 119, 12, 0, 99, 0, 99,
-			2, 45, 99, 0, 99, 114, 3, 119, 52, 0, 4, 2, 45, 99, 115, 3, 119, 76, 0, 99, 115, 1, 110, 101, 99, 105, 108, 0, 115, 122,
-			3, 119, 89, 0, 115, 8, 179, 195, 104, 111, 98, 3, 119, 91, 0, 115, 111, 114, 8, 114, 97, 104, 3, 119, 91, 39, 52, 0, 7, 6,
-			100, 0, 4, 1, 45, 100, 3, 0, 4, 1, 45, 100, 100, 3, 0, 1, 114, 111, 107, 101, 114, 2, 115, 101, 98, 101, 115, 115, 195, 169,
-			103, 3, 0, 116, 1, 122, 101, 107, 3, 47, 0, 4, 116, 3, 47, 12, 0, 116, 2, 115, 122, 0, 116, 116, 0, 116, 116, 1, 101, 108,
-			108, 188, 195, 102, 2, 195, 169, 0, 116, 115, 122, 195, 169, 3, 47, 12, 89, 113, 0, 110, 121, 1, 110, 105, 109, 3, 67, 0, 4, 3,
-			72, 0, 1, 97, 98, 97, 122, 115, 2, 106, 101, 103, 0, 1, 97, 98, 97, 122, 115, 2, 115, 116, 114, 97, 110, 100, 0, 1, 97, 98,
-			97, 122, 115, 2, 115, 122, 101, 108, 108, 101, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 101, 110, 116, 0, 1, 97, 98, 97, 122, 115,
-			2, 115, 122, 101, 114, 101, 108, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 111, 102, 116, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122,
-			111, 109, 98, 97, 116, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 195, 161, 106, 195, 186, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122,
-			195, 161, 108, 108, 195, 161, 115, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 195, 179, 108, 0, 1, 97, 104, 2, 106, 195, 161, 114, 97,
-			116, 0, 1, 97, 104, 2, 115, 101, 103, 195, 169, 100, 0, 1, 97, 104, 2, 115, 111, 114, 0, 1, 97, 104, 2, 115, 122, 101, 114, 116,
-			195, 161, 0, 1, 97, 104, 2, 115, 122, 105, 110, 0, 1, 97, 104, 145, 197, 102, 2, 115, 101, 103, 195, 169, 100, 0, 1, 97, 109, 114,
-			97, 104, 2, 115, 111, 114, 0, 1, 97, 109, 114, 97, 104, 2, 115, 122, 105, 110, 116, 0, 1, 97, 109, 114, 97, 104, 2, 115, 122, 195,
-			161, 122, 0, 1, 97, 112, 2, 115, 111, 114, 0, 1, 97, 112, 2, 115, 122, 101, 114, 197, 177, 0, 1, 97, 112, 2, 115, 122, 197, 145,
-			110, 121, 0, 1, 97, 118, 2, 115, 122, 101, 100, 101, 114, 0, 1, 97, 118, 2, 115, 122, 101, 103, 102, 0, 1, 97, 118, 2, 115, 122,
-			101, 114, 197, 177, 0, 1, 97, 118, 2, 115, 122, 105, 108, 118, 0, 1, 97, 118, 2, 115, 122, 116, 114, 195, 161, 106, 107, 0, 1, 97,
-			118, 2, 115, 122, 195, 179, 106, 0, 1, 97, 118, 2, 115, 122, 197, 145, 0, 1, 97, 118, 2, 115, 195, 161, 102, 114, 0, 1, 97, 122,
-			161, 195, 122, 115, 2, 115, 122, 101, 109, 108, 101, 0, 1, 97, 122, 161, 195, 122, 115, 2, 115, 122, 105, 110, 116, 0, 1, 97, 122, 161,
-			195, 122, 115, 2, 115, 122, 195, 161, 109, 0, 1, 101, 101, 119, 116, 2, 115, 97, 112, 107, 0, 1, 101, 101, 119, 116, 2, 115, 122, 195,
-			182, 118, 101, 116, 0, 1, 101, 114, 122, 101, 2, 115, 101, 103, 195, 169, 0, 1, 101, 114, 122, 101, 2, 115, 122, 101, 109, 0, 1, 101,
-			114, 122, 101, 2, 115, 122, 101, 114, 116, 101, 0, 1, 101, 114, 122, 101, 2, 115, 122, 105, 110, 0, 1, 101, 114, 122, 101, 2, 115, 122,
-			195, 161, 0, 1, 101, 114, 122, 101, 2, 122, 195, 161, 115, 122, 108, 0, 1, 101, 121, 103, 101, 110, 2, 115, 122, 195, 161, 122, 0, 1,
-			101, 121, 103, 101, 110, 2, 115, 122, 195, 169, 108, 0, 1, 101, 122, 105, 116, 2, 115, 122, 195, 161, 109, 0, 1, 101, 122, 105, 116, 2,
-			115, 122, 195, 161, 122, 0, 1, 103, 97, 114, 97, 109, 115, 2, 115, 122, 195, 173, 110, 0, 1, 105, 118, 182, 195, 114, 2, 115, 111, 114,
-			111, 122, 0, 1, 105, 118, 182, 195, 114, 2, 122, 195, 161, 114, 0, 1, 105, 118, 182, 195, 114, 2, 122, 195, 161, 114, 108, 97, 116, 0,
-			1, 106, 97, 102, 2, 116, 121, 195, 186, 107, 0, 1, 108, 111, 98, 111, 107, 2, 115, 122, 195, 182, 103, 0, 1, 108, 111, 104, 2, 115,
-			195, 188, 0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 103, 195, 169, 108, 121, 0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 114, 107, 101,
-			0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 114, 122, 195, 169, 0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 114, 197, 177, 0, 1, 108,
-			182, 195, 102, 2, 115, 122, 111, 114, 111, 115, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 173, 110, 101, 107, 0, 1, 108, 182, 195, 102,
-			2, 115, 122, 195, 173, 110, 195, 169, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 173, 110, 197, 177, 0, 1, 108, 182, 195, 102, 2, 115,
-			122, 195, 182, 107, 197, 145, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 188, 114, 107, 0, 1, 108, 182, 195, 102, 2, 115, 195, 161, 110,
-			99, 0, 1, 108, 182, 195, 102, 2, 115, 195, 161, 118, 0, 1, 108, 182, 195, 122, 2, 115, 97, 112, 107, 0, 1, 108, 182, 195, 122, 2,
-			115, 122, 101, 109, 0, 1, 108, 182, 195, 122, 2, 115, 122, 195, 173, 110, 0, 1, 108, 182, 195, 122, 2, 115, 195, 161, 118, 0, 1, 110,
-			97, 108, 97, 107, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 110, 97, 108, 97, 107, 2, 115, 122, 101, 114, 0, 1, 110, 97, 108, 97,
-			107, 2, 115, 122, 101, 114, 101, 112, 0, 1, 110, 97, 114, 116, 115, 2, 115, 122, 101, 122, 111, 110, 0, 1, 110, 101, 114, 2, 115, 122,
-			97, 0, 1, 110, 101, 114, 2, 115, 122, 101, 114, 101, 116, 197, 145, 0, 1, 110, 101, 114, 2, 122, 97, 118, 97, 114, 0, 1, 110, 101,
-			115, 99, 2, 115, 195, 169, 114, 116, 195, 169, 115, 0, 1, 110, 105, 109, 2, 106, 111, 98, 98, 97, 110, 0, 1, 111, 115, 114, 111, 98,
-			2, 115, 122, 0, 1, 111, 115, 161, 195, 109, 2, 115, 111, 114, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 97, 107, 195, 161, 0, 1,
-			111, 115, 161, 195, 109, 2, 115, 122, 101, 114, 101, 112, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 105, 110, 0, 1, 111, 115, 161, 195,
-			109, 2, 115, 122, 195, 188, 108, 195, 182, 116, 116, 0, 1, 114, 97, 100, 110, 97, 116, 115, 2, 106, 101, 103, 121, 0, 1, 114, 97, 107,
-			2, 115, 117, 0, 1, 114, 97, 107, 2, 115, 122, 101, 114, 197, 177, 0, 1, 114, 97, 107, 2, 115, 122, 195, 173, 106, 0, 1, 114, 111,
-			102, 2, 106, 195, 161, 110, 111, 115, 0, 1, 114, 111, 104, 2, 115, 122, 195, 169, 107, 0, 1, 114, 111, 104, 2, 115, 122, 195, 173, 0,
-			1, 114, 111, 106, 102, 2, 115, 122, 101, 114, 197, 177, 0, 1, 114, 111, 107, 101, 114, 2, 115, 101, 98, 101, 115, 115, 195, 169, 103, 0,
-			1, 114, 111, 107, 101, 114, 2, 115, 117, 103, 195, 161, 114, 0, 1, 114, 111, 107, 101, 114, 2, 115, 122, 101, 114, 107, 101, 122, 0, 1,
-			114, 111, 107, 101, 114, 2, 115, 122, 105, 110, 116, 0, 1, 114, 161, 195, 105, 108, 105, 109, 2, 115, 122, 111, 114, 0, 1, 114, 161, 195,
-			122, 97, 104, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 114, 161, 195, 122, 110, 97, 109, 2, 115, 122, 111, 98, 0, 1, 114, 169, 195,
-			116, 2, 115, 122, 111, 107, 110, 121, 0, 1, 114, 169, 195, 116, 2, 115, 122, 195, 173, 106, 0, 1, 114, 169, 195, 116, 2, 115, 195, 169,
-			114, 195, 188, 108, 0, 1, 145, 197, 114, 101, 2, 115, 122, 101, 114, 197, 177, 0, 1, 161, 195, 108, 97, 115, 99, 2, 106, 111, 103, 0,
-			1, 161, 195, 108, 97, 115, 99, 2, 115, 101, 103, 195, 173, 116, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115, 122, 101, 114, 101, 116, 197,
-			145, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115, 122, 111, 99, 105, 111, 108, 0, 1, 161, 195, 110, 0, 1, 161, 195, 110, 2, 115, 117,
-			104, 111, 103, 0, 1, 161, 195, 110, 2, 115, 122, 101, 114, 100, 0, 1, 161, 195, 110, 2, 115, 122, 105, 108, 195, 161, 110, 0, 1, 161,
-			195, 110, 2, 115, 122, 195, 169, 107, 0, 1, 161, 195, 110, 2, 115, 122, 195, 182, 118, 101, 0, 1, 161, 195, 110, 2, 115, 122, 197, 145,
-			110, 121, 101, 0, 1, 161, 195, 110, 2, 115, 195, 173, 112, 0, 1, 161, 195, 110, 114, 101, 104, 2, 115, 122, 0, 1, 161, 195, 112, 114,
-			161, 195, 2, 115, 195, 161, 118, 0, 1, 161, 195, 112, 114, 161, 195, 2, 115, 195, 161, 118, 0, 1, 161, 195, 112, 114, 161, 195, 2, 122,
-			195, 161, 115, 122, 108, 195, 179, 0, 1, 161, 195, 118, 2, 115, 122, 195, 179, 122, 97, 0, 1, 161, 195, 122, 115, 105, 108, 97, 112, 2,
-			115, 111, 114, 0, 1, 169, 195, 98, 101, 2, 106, 101, 103, 0, 1, 169, 195, 108, 101, 115, 99, 2, 115, 111, 0, 1, 169, 195, 118, 2,
-			106, 101, 103, 121, 0, 1, 169, 195, 118, 110, 111, 104, 2, 115, 101, 114, 101, 103, 0, 1, 169, 195, 118, 121, 103, 188, 195, 2, 106, 101,
-			108, 0, 1, 169, 195, 122, 115, 101, 98, 2, 106, 97, 118, 195, 173, 116, 0, 1, 169, 195, 122, 115, 101, 98, 2, 106, 101, 108, 0, 1,
-			169, 195, 122, 115, 101, 98, 2, 115, 101, 98, 101, 115, 115, 195, 169, 103, 0, 1, 169, 195, 122, 115, 101, 98, 2, 115, 116, 195, 173, 108,
-			117, 115, 0, 1, 169, 195, 122, 115, 101, 98, 2, 115, 122, 105, 110, 0, 1, 169, 195, 122, 115, 101, 98, 2, 122, 97, 103, 121, 0, 1,
-			169, 195, 122, 115, 109, 111, 122, 115, 2, 115, 111, 114, 0, 1, 173, 195, 104, 2, 115, 122, 101, 114, 0, 1, 173, 195, 104, 2, 115, 122,
-			101, 114, 107, 101, 122, 101, 116, 0, 1, 179, 195, 104, 2, 115, 122, 197, 145, 114, 0, 1, 179, 195, 106, 2, 115, 122, 105, 118, 195, 161,
-			114, 0, 1, 179, 195, 107, 2, 106, 101, 108, 0, 1, 179, 195, 107, 2, 115, 111, 114, 0, 1, 179, 195, 107, 2, 115, 122, 101, 114, 107,
-			101, 0, 1, 179, 195, 107, 2, 115, 122, 195, 179, 0, 1, 179, 195, 109, 2, 106, 97, 118, 97, 115, 108, 97, 116, 0, 1, 179, 195, 109,
-			2, 115, 111, 114, 0, 1, 179, 195, 114, 112, 97, 2, 115, 122, 0, 1, 179, 195, 116, 97, 107, 2, 115, 117, 103, 195, 161, 114, 0, 1,
-			179, 195, 116, 117, 2, 106, 101, 108, 195, 182, 108, 0, 1, 179, 195, 116, 117, 2, 115, 122, 101, 114, 118, 0, 1, 179, 195, 122, 105, 112,
-			101, 2, 115, 122, 101, 114, 0, 1, 179, 195, 122, 105, 112, 101, 2, 115, 122, 101, 114, 101, 112, 0, 1, 182, 195, 107, 2, 115, 122, 105,
-			114, 195, 169, 110, 0, 1, 182, 195, 107, 2, 115, 122, 105, 116, 195, 161, 108, 195, 161, 115, 0, 1, 182, 195, 116, 182, 195, 2, 115, 122,
-			195, 188, 108, 195, 182, 0, 1, 186, 195, 108, 2, 122, 115, 195, 173, 114, 0, 8, 97, 104, 2, 106, 195, 161, 116, 195, 169, 107, 0, 8,
-			97, 104, 2, 115, 122, 101, 114, 0, 8, 97, 104, 2, 115, 122, 195, 161, 108, 108, 0, 8, 97, 109, 114, 97, 104, 2, 115, 122, 195, 188,
-			108, 0, 8, 97, 118, 2, 115, 122, 97, 103, 0, 8, 97, 118, 2, 115, 122, 97, 109, 0, 8, 97, 118, 2, 115, 122, 195, 161, 114, 110,
-			121, 0, 8, 103, 97, 114, 97, 109, 115, 2, 115, 122, 0, 8, 108, 111, 104, 2, 115, 97, 114, 108, 195, 179, 0, 8, 108, 182, 195, 102,
-			2, 115, 122, 101, 108, 108, 101, 0, 8, 108, 182, 195, 102, 2, 115, 122, 101, 114, 122, 0, 8, 108, 182, 195, 102, 2, 115, 122, 105, 103,
-			101, 116, 0, 8, 108, 182, 195, 102, 2, 115, 122, 117, 114, 111, 107, 0, 8, 108, 182, 195, 102, 2, 115, 122, 195, 173, 110, 0, 8, 108,
-			182, 195, 102, 2, 115, 122, 195, 188, 108, 116, 0, 8, 110, 101, 114, 2, 106, 101, 108, 0, 8, 110, 111, 103, 2, 115, 122, 101, 114, 0,
-			8, 114, 97, 107, 2, 115, 122, 195, 186, 114, 0, 8, 114, 111, 104, 2, 115, 122, 101, 107, 0, 8, 114, 161, 195, 105, 108, 105, 98, 2,
-			115, 122, 111, 0, 8, 114, 169, 195, 116, 2, 122, 115, 101, 98, 0, 8, 122, 188, 195, 107, 2, 115, 122, 101, 108, 108, 0, 8, 161, 195,
-			110, 2, 115, 195, 182, 118, 0, 8, 161, 195, 114, 2, 115, 195, 179, 122, 0, 8, 179, 195, 107, 2, 115, 122, 111, 98, 0, 8, 182, 195,
-			107, 2, 115, 122, 101, 114, 197, 177, 0, 8, 182, 195, 107, 2, 115, 122, 195, 188, 114, 107, 0, 8, 186, 195, 108, 2, 115, 122, 111, 107,
-			195, 161, 115, 0, 100, 1, 97, 104, 2, 32, 14, 128, 128, 130, 0, 100, 2, 18, 66, 0, 100, 2, 45, 18, 66, 0, 4, 2, 45, 100,
-			3, 72, 12, 0, 100, 0, 100, 1, 161, 195, 110, 0, 100, 2, 45, 100, 0, 111, 98, 101, 114, 109, 97, 110, 110, 3, 72, 39, 71, 12,
-			109, 52, 65, 108, 50, 0, 100, 114, 3, 72, 52, 0, 100, 98, 3, 72, 71, 0, 122, 1, 101, 101, 119, 116, 2, 97, 107, 3, 72, 88,
-			0, 4, 115, 122, 1, 97, 2, 195, 173, 3, 72, 89, 0, 115, 122, 1, 101, 101, 119, 116, 2, 111, 107, 0, 115, 122, 1, 110, 101, 114,
-			2, 101, 114, 105, 110, 116, 0, 115, 122, 1, 110, 101, 114, 116, 101, 110, 101, 109, 2, 101, 114, 197, 177, 0, 115, 122, 1, 169, 195, 0,
-			115, 122, 2, 97, 0, 115, 122, 2, 195, 161, 0, 115, 122, 8, 110, 101, 114, 2, 101, 114, 101, 116, 101, 116, 0, 195, 188, 104, 116, 197,
-			145, 108, 3, 72, 111, 47, 118, 55, 0, 195, 188, 104, 98, 101, 3, 72, 111, 71, 109, 0, 195, 188, 104, 118, 101, 108, 3, 72, 111, 84,
-			109, 55, 0, 105, 101, 115, 101, 108, 5, 1, 3, 72, 112, 88, 109, 55, 0, 4, 100, 122, 115, 2, 18, 66, 3, 75, 0, 100, 122, 115,
-			2, 45, 18, 66, 0, 4, 100, 122, 115, 1, 105, 114, 98, 2, 101, 108, 3, 75, 12, 0, 122, 115, 1, 111, 98, 109, 97, 107, 0, 4,
-			115, 1, 17, 67, 3, 76, 0, 115, 2, 17, 67, 0, 4, 115, 1, 17, 65, 2, 17, 65, 3, 76, 12, 0, 115, 1, 169, 195, 108, 101,
-			115, 99, 2, 195, 169, 103, 0, 116, 115, 0, 106, 1, 17, 67, 3, 79, 0, 4, 106, 3, 79, 12, 0, 106, 1, 17, 65, 2, 17, 65,
-			0, 4, 115, 122, 3, 119, 0, 115, 122, 1, 110, 101, 114, 2, 101, 114, 105, 110, 116, 101, 103, 114, 195, 161, 99, 105, 195, 179, 0, 115,
-			122, 2, 17, 67, 0, 115, 122, 8, 110, 111, 109, 2, 97, 0, 4, 115, 122, 1, 97, 2, 17, 65, 3, 119, 12, 0, 115, 122, 1, 101,
-			2, 17, 65, 0, 115, 122, 1, 111, 2, 17, 65, 0, 115, 122, 1, 179, 195, 0, 115, 122, 1, 182, 195, 116, 182, 195, 2, 195, 182, 114,
-			0, 115, 122, 2, 32, 14, 128, 128, 131, 0, 100, 122, 2, 18, 66, 3, 120, 0, 7, 6, 101, 0, 108, 1, 45, 32, 48, 48, 48, 2,
-			32, 3, 51, 109, 55, 0, 3, 109, 0, 108, 1, 45, 32, 48, 48, 48, 48, 48, 48, 2, 32, 3, 109, 55, 0, 103, 121, 101, 122, 115,
-			195, 169, 103, 8, 3, 109, 79, 12, 109, 91, 91, 113, 81, 0, 103, 121, 101, 122, 115, 195, 169, 103, 103, 8, 3, 109, 79, 12, 109, 91,
-			91, 113, 81, 12, 0, 104, 104, 101, 122, 8, 3, 109, 107, 109, 88, 0, 7, 6, 102, 0, 4, 3, 83, 0, 102, 1, 97, 2, 195, 169,
-			108, 0, 102, 1, 101, 2, 97, 106, 116, 0, 102, 1, 101, 2, 195, 169, 108, 0, 102, 2, 18, 66, 0, 102, 2, 45, 18, 66, 0, 102,
-			114, 3, 83, 52, 0, 102, 98, 3, 83, 71, 0, 195, 188, 104, 114, 101, 114, 5, 1, 3, 83, 117, 52, 109, 52, 0, 7, 6, 103, 0,
-			4, 1, 45, 103, 3, 0, 4, 121, 1, 45, 103, 3, 0, 4, 121, 1, 45, 103, 103, 3, 0, 121, 1, 45, 121, 103, 3, 0, 107, 3,
-			49, 12, 0, 104, 1, 169, 195, 2, 97, 106, 108, 97, 3, 49, 107, 0, 4, 103, 121, 1, 101, 109, 2, 18, 66, 3, 79, 0, 103, 121,
-			1, 101, 109, 2, 45, 18, 66, 0, 103, 121, 1, 101, 109, 2, 109, 97, 103, 0, 103, 121, 2, 18, 66, 0, 103, 121, 2, 45, 18, 66,
-			0, 4, 103, 121, 3, 79, 12, 0, 103, 121, 1, 101, 108, 101, 2, 195, 169, 0, 103, 121, 1, 101, 109, 2, 32, 14, 128, 128, 131, 0,
-			103, 121, 1, 101, 109, 2, 45, 103, 121, 0, 103, 121, 1, 101, 109, 2, 101, 108, 0, 103, 121, 1, 101, 109, 2, 101, 109, 0, 103, 121,
-			1, 101, 109, 2, 101, 115, 0, 103, 121, 1, 101, 109, 2, 101, 116, 0, 103, 121, 1, 101, 109, 2, 195, 173, 122, 0, 103, 121, 8, 101,
-			109, 2, 101, 110, 32, 0, 103, 121, 106, 1, 111, 114, 2, 195, 169, 107, 0, 121, 2, 45, 103, 121, 0, 4, 103, 121, 114, 3, 79, 52,
-			0, 103, 121, 114, 1, 101, 109, 0, 4, 103, 121, 98, 3, 79, 71, 0, 103, 121, 98, 1, 101, 109, 0, 4, 3, 81, 0, 1, 97, 116,
-			2, 103, 121, 197, 177, 108, 0, 1, 97, 121, 108, 179, 195, 104, 2, 103, 121, 117, 108, 0, 1, 97, 121, 110, 97, 2, 103, 121, 195, 161,
-			114, 0, 1, 97, 121, 110, 97, 2, 103, 121, 197, 145, 122, 0, 1, 97, 121, 110, 97, 2, 103, 121, 197, 177, 106, 116, 0, 1, 97, 121,
-			110, 97, 105, 100, 97, 104, 2, 103, 121, 195, 161, 114, 0, 1, 101, 100, 105, 2, 103, 121, 0, 1, 101, 108, 2, 103, 121, 0, 1, 101,
-			109, 2, 103, 121, 0, 1, 101, 114, 101, 115, 2, 103, 121, 197, 177, 106, 0, 1, 101, 114, 101, 121, 110, 2, 103, 121, 0, 1, 101, 114,
-			169, 195, 109, 2, 103, 121, 0, 1, 101, 114, 188, 195, 99, 114, 97, 2, 103, 121, 117, 108, 108, 97, 100, 195, 161, 115, 0, 1, 101, 116,
-			101, 98, 2, 103, 121, 195, 179, 103, 121, 195, 161, 115, 122, 0, 1, 101, 118, 182, 195, 122, 115, 2, 103, 121, 197, 177, 106, 116, 0, 1,
-			101, 118, 188, 195, 2, 103, 121, 0, 1, 101, 121, 108, 169, 195, 98, 2, 103, 121, 197, 177, 106, 116, 0, 1, 105, 103, 169, 195, 118, 2,
-			103, 121, 97, 0, 1, 105, 103, 169, 195, 118, 2, 103, 121, 195, 182, 0, 1, 110, 97, 104, 2, 103, 121, 97, 107, 111, 114, 0, 1, 110,
-			117, 108, 112, 117, 107, 2, 103, 121, 195, 161, 114, 0, 1, 111, 100, 161, 195, 98, 2, 103, 121, 0, 1, 111, 102, 2, 103, 121, 97, 108,
-			117, 0, 1, 111, 102, 2, 103, 121, 195, 182, 0, 1, 111, 102, 2, 103, 121, 197, 177, 114, 197, 177, 0, 1, 111, 106, 2, 103, 121, 97,
-			107, 111, 114, 0, 1, 111, 108, 161, 195, 122, 2, 103, 121, 0, 1, 111, 114, 100, 2, 103, 121, 97, 110, 195, 186, 0, 1, 111, 114, 112,
-			2, 103, 121, 97, 107, 0, 1, 161, 195, 108, 105, 118, 2, 103, 121, 0, 1, 161, 195, 108, 105, 118, 2, 103, 121, 197, 177, 108, 195, 182,
-			108, 0, 1, 161, 195, 114, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161, 195, 114, 105, 118, 2, 103, 121, 0, 1, 161, 195, 115, 97, 107,
-			116, 105, 114, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161, 195, 115, 100, 161, 195, 109, 105, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161,
-			195, 115, 115, 111, 103, 161, 195, 108, 105, 118, 2, 103, 121, 0, 1, 161, 195, 122, 115, 114, 111, 2, 103, 121, 97, 114, 97, 112, 111, 100,
-			0, 1, 161, 195, 122, 115, 114, 111, 2, 103, 121, 197, 177, 108, 195, 169, 115, 0, 1, 169, 195, 100, 110, 101, 118, 2, 103, 121, 0, 1,
-			169, 195, 106, 177, 197, 109, 2, 103, 121, 195, 161, 114, 0, 1, 169, 195, 108, 2, 103, 121, 195, 182, 107, 0, 1, 169, 195, 115, 101, 108,
-			101, 2, 103, 121, 0, 1, 169, 195, 115, 105, 103, 169, 195, 114, 2, 103, 121, 197, 177, 106, 116, 0, 1, 169, 195, 115, 108, 101, 102, 2,
-			103, 121, 0, 1, 169, 195, 115, 115, 101, 108, 101, 116, 182, 195, 107, 2, 103, 121, 97, 107, 0, 1, 169, 195, 115, 116, 110, 101, 122, 115,
-			2, 103, 121, 0, 1, 182, 195, 100, 2, 103, 121, 97, 112, 106, 195, 186, 0, 1, 182, 195, 122, 115, 2, 103, 121, 195, 161, 114, 0, 8,
-			97, 121, 103, 97, 2, 103, 121, 0, 8, 110, 161, 195, 108, 2, 103, 121, 0, 8, 111, 108, 2, 103, 121, 197, 177, 106, 116, 0, 8, 169,
-			195, 106, 2, 103, 121, 195, 161, 114, 0, 8, 169, 195, 115, 101, 108, 101, 102, 2, 103, 121, 105, 108, 107, 111, 115, 0, 103, 1, 117, 103,
-			2, 111, 108, 0, 103, 2, 18, 66, 0, 103, 2, 45, 18, 66, 0, 4, 2, 45, 103, 3, 81, 12, 0, 103, 0, 103, 1, 101, 108, 2,
-			114, 111, 116, 101, 115, 122, 107, 0, 103, 114, 3, 81, 52, 0, 103, 98, 3, 81, 71, 0, 4, 2, 45, 103, 121, 3, 81, 79, 0, 103,
-			2, 45, 103, 121, 0, 111, 101, 116, 104, 5, 1, 8, 3, 81, 118, 47, 109, 0, 7, 6, 104, 0, 4, 1, 101, 115, 99, 2, 98, 195,
-			161, 110, 121, 97, 3, 0, 4, 8, 101, 115, 99, 2, 111, 114, 115, 122, 195, 161, 103, 3, 0, 4, 8, 101, 115, 99, 2, 115, 122, 108,
-			111, 118, 195, 161, 107, 3, 0, 4, 8, 117, 106, 2, 107, 111, 108, 98, 3, 0, 4, 8, 117, 106, 2, 115, 97, 106, 116, 3, 0, 4,
-			8, 117, 106, 2, 115, 122, 195, 161, 114, 110, 121, 195, 169, 107, 3, 0, 8, 117, 106, 2, 116, 101, 110, 121, 195, 169, 115, 122, 3, 0,
-			4, 3, 107, 0, 104, 1, 101, 100, 110, 105, 109, 2, 101, 122, 0, 104, 2, 45, 18, 66, 0, 101, 114, 116, 122, 3, 107, 109, 52, 119,
-			0, 7, 6, 105, 0, 4, 3, 37, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 103, 1, 21, 2, 32, 14, 128, 128, 130, 3, 37, 81,
-			0, 104, 111, 122, 1, 21, 2, 32, 14, 128, 192, 132, 3, 37, 107, 39, 88, 0, 7, 6, 106, 0, 4, 3, 57, 0, 106, 2, 18, 66,
-			0, 106, 2, 45, 18, 66, 0, 106, 114, 3, 57, 52, 0, 106, 98, 3, 57, 71, 0, 97, 118, 195, 173, 116, 115, 8, 3, 57, 108, 84,
-			112, 76, 12, 0, 97, 118, 195, 173, 116, 115, 100, 8, 3, 57, 108, 84, 112, 76, 72, 0, 195, 169, 105, 103, 1, 21, 2, 32, 14, 128,
-			128, 132, 3, 57, 113, 37, 81, 0, 195, 169, 116, 197, 145, 108, 1, 21, 2, 32, 14, 128, 128, 133, 3, 57, 113, 47, 118, 55, 0, 195,
-			169, 110, 101, 107, 1, 21, 2, 32, 14, 128, 128, 133, 3, 57, 113, 50, 109, 49, 0, 195, 169, 114, 101, 1, 21, 2, 32, 14, 128, 128,
-			132, 3, 57, 113, 52, 109, 0, 195, 169, 118, 101, 108, 1, 21, 2, 32, 14, 128, 128, 133, 3, 57, 113, 84, 109, 55, 0, 195, 161, 105,
-			103, 1, 21, 2, 32, 14, 128, 192, 132, 3, 57, 114, 37, 81, 0, 195, 161, 116, 195, 179, 108, 1, 21, 2, 32, 14, 128, 192, 133, 3,
-			57, 114, 47, 115, 55, 0, 195, 161, 110, 97, 107, 1, 21, 2, 32, 14, 128, 192, 133, 3, 57, 114, 50, 108, 49, 0, 195, 161, 114, 97,
-			1, 21, 2, 32, 14, 128, 192, 132, 3, 57, 114, 52, 108, 0, 195, 161, 98, 97, 110, 1, 21, 2, 32, 14, 128, 192, 133, 3, 57, 114,
-			71, 108, 50, 0, 195, 161, 118, 97, 108, 1, 21, 2, 32, 14, 128, 192, 133, 3, 57, 114, 84, 108, 55, 0, 7, 6, 107, 0, 4, 1,
-			45, 107, 3, 0, 1, 45, 107, 107, 3, 0, 4, 3, 49, 0, 107, 2, 18, 66, 0, 107, 2, 45, 18, 66, 0, 195, 182, 122, 116, 195,
-			161, 114, 115, 97, 115, 195, 161, 103, 8, 3, 49, 6, 110, 89, 47, 114, 52, 91, 108, 91, 114, 81, 0, 195, 182, 122, 116, 195, 161, 114,
-			115, 97, 115, 195, 161, 103, 103, 8, 3, 49, 6, 110, 89, 47, 114, 52, 91, 108, 91, 114, 81, 12, 0, 4, 2, 45, 107, 3, 49, 12,
-			0, 107, 0, 107, 2, 17, 67, 0, 107, 2, 45, 107, 0, 107, 8, 169, 195, 116, 161, 195, 106, 2, 108, 105, 101, 110, 115, 0, 111, 115,
-			115, 117, 116, 104, 3, 49, 39, 91, 116, 47, 0, 111, 115, 115, 117, 116, 104, 116, 3, 49, 39, 91, 116, 47, 12, 0, 111, 115, 115, 117,
-			116, 104, 106, 3, 49, 39, 91, 116, 80, 12, 0, 107, 114, 3, 49, 52, 0, 107, 106, 3, 49, 57, 0, 107, 98, 3, 49, 71, 0, 195,
-			182, 122, 8, 3, 49, 110, 88, 0, 195, 182, 122, 116, 8, 3, 49, 110, 89, 47, 0, 195, 182, 122, 112, 111, 110, 116, 3, 49, 110, 89,
-			48, 39, 50, 47, 0, 195, 182, 122, 112, 111, 110, 116, 116, 3, 49, 110, 89, 48, 39, 50, 47, 12, 0, 195, 182, 122, 112, 111, 110, 116,
-			106, 3, 49, 110, 89, 48, 39, 50, 80, 0, 195, 182, 122, 115, 195, 169, 103, 3, 49, 110, 91, 91, 113, 81, 0, 195, 169, 115, 122, 115,
-			195, 169, 103, 3, 49, 113, 91, 91, 113, 81, 0, 195, 169, 115, 122, 115, 195, 169, 103, 103, 3, 49, 113, 91, 91, 113, 81, 12, 0, 7,
-			6, 108, 0, 4, 3, 55, 0, 1, 101, 2, 106, 117, 115, 0, 1, 101, 2, 106, 117, 116, 0, 1, 101, 2, 106, 195, 161, 116, 115, 122,
-			0, 1, 101, 102, 2, 106, 97, 118, 195, 173, 116, 0, 1, 101, 102, 2, 106, 101, 103, 121, 0, 1, 101, 102, 2, 106, 101, 108, 101, 110,
-			0, 1, 101, 102, 2, 106, 111, 103, 111, 115, 195, 173, 116, 0, 1, 101, 102, 2, 106, 117, 0, 1, 101, 102, 2, 106, 195, 161, 114, 0,
-			1, 101, 102, 2, 106, 195, 182, 0, 1, 106, 161, 195, 102, 0, 1, 169, 195, 122, 115, 2, 106, 101, 103, 121, 0, 1, 169, 195, 122, 115,
-			2, 106, 195, 161, 114, 0, 1, 188, 195, 116, 122, 115, 101, 114, 101, 107, 2, 106, 0, 8, 169, 195, 102, 2, 106, 111, 98, 98, 0, 108,
-			1, 101, 2, 105, 112, 115, 122, 0, 108, 1, 101, 116, 97, 103, 97, 98, 2, 105, 122, 0, 108, 1, 101, 116, 110, 105, 2, 105, 103, 101,
-			0, 108, 1, 105, 109, 2, 105, 0, 108, 2, 18, 66, 0, 108, 2, 45, 18, 66, 0, 4, 1, 182, 195, 107, 182, 195, 2, 106, 111, 103,
-			3, 55, 12, 0, 1, 186, 195, 116, 2, 106, 0, 4, 121, 1, 17, 67, 2, 32, 3, 55, 37, 0, 121, 8, 104, 116, 169, 195, 107, 0,
-			108, 114, 3, 55, 52, 0, 4, 108, 121, 1, 101, 117, 109, 97, 122, 115, 3, 55, 55, 37, 0, 121, 1, 101, 117, 109, 97, 122, 115, 0,
-			4, 106, 1, 101, 2, 195, 161, 114, 3, 55, 57, 0, 106, 8, 97, 116, 2, 195, 161, 110, 0, 106, 8, 101, 2, 195, 182, 0, 108, 98,
-			3, 55, 71, 0, 4, 108, 1, 161, 195, 2, 106, 3, 57, 0, 108, 121, 2, 45, 18, 66, 0, 121, 0, 4, 1, 97, 108, 106, 161, 195,
-			102, 2, 106, 3, 57, 57, 0, 1, 169, 195, 99, 2, 106, 195, 161, 0, 106, 1, 101, 107, 0, 106, 1, 101, 114, 169, 195, 98, 0, 106,
-			1, 169, 195, 122, 115, 101, 98, 0, 108, 121, 0, 4, 106, 1, 111, 100, 110, 111, 103, 3, 57, 57, 57, 0, 106, 1, 161, 195, 110, 106,
-			97, 115, 0, 108, 106, 0, 4, 106, 3, 61, 57, 0, 106, 1, 17, 65, 2, 17, 65, 0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 1,
-			111, 107, 2, 117, 110, 105, 0, 109, 2, 18, 66, 0, 109, 2, 45, 18, 66, 0, 7, 6, 110, 0, 4, 3, 50, 0, 1, 97, 108, 116,
-			97, 103, 110, 105, 2, 106, 111, 103, 0, 1, 101, 98, 121, 108, 101, 104, 2, 106, 195, 161, 114, 0, 1, 101, 98, 122, 182, 195, 107, 2,
-			106, 195, 161, 114, 0, 1, 101, 98, 145, 197, 102, 2, 106, 195, 161, 114, 0, 1, 101, 108, 108, 101, 2, 106, 97, 118, 97, 108, 108, 116,
-			0, 1, 101, 108, 108, 101, 2, 106, 97, 118, 97, 115, 108, 97, 116, 0, 1, 101, 108, 108, 101, 2, 106, 101, 103, 121, 0, 1, 101, 108,
-			108, 101, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 101, 108, 108, 111, 112, 2, 106, 101, 108, 101, 110, 0, 1, 101, 108, 169, 195, 2,
-			106, 195, 161, 114, 0, 1, 101, 118, 116, 182, 195, 2, 121, 97, 114, 100, 0, 1, 101, 118, 121, 103, 101, 110, 2, 121, 97, 114, 100, 0,
-			1, 101, 121, 103, 101, 2, 106, 111, 103, 195, 186, 0, 1, 101, 121, 103, 110, 105, 0, 1, 105, 98, 97, 107, 2, 110, 121, 195, 173, 108,
-			0, 1, 111, 100, 106, 97, 108, 117, 116, 2, 106, 111, 103, 0, 1, 111, 102, 111, 114, 107, 105, 109, 2, 110, 121, 195, 173, 108, 195, 161,
-			115, 0, 1, 111, 114, 101, 112, 2, 106, 101, 103, 121, 0, 1, 111, 116, 101, 98, 2, 106, 195, 161, 114, 100, 97, 0, 1, 111, 121, 103,
-			97, 118, 2, 106, 111, 103, 0, 1, 111, 121, 103, 97, 118, 2, 110, 121, 105, 108, 97, 116, 107, 111, 122, 97, 116, 0, 1, 145, 197, 115,
-			169, 195, 107, 2, 106, 195, 182, 118, 197, 145, 0, 1, 161, 195, 101, 99, 179, 195, 2, 106, 195, 161, 114, 0, 1, 161, 195, 103, 97, 109,
-			2, 106, 101, 108, 108, 101, 103, 0, 1, 161, 195, 103, 97, 109, 2, 106, 111, 103, 0, 1, 161, 195, 103, 97, 109, 2, 110, 121, 101, 108,
-			0, 1, 161, 195, 108, 122, 115, 111, 114, 111, 2, 110, 121, 111, 109, 0, 1, 161, 195, 114, 103, 105, 108, 105, 102, 2, 110, 121, 101, 108,
-			0, 1, 161, 195, 116, 117, 2, 110, 121, 111, 109, 0, 1, 173, 195, 122, 115, 2, 106, 101, 108, 122, 195, 169, 115, 0, 1, 173, 195, 122,
-			115, 2, 106, 195, 161, 116, 0, 1, 173, 195, 122, 115, 2, 106, 195, 179, 122, 97, 110, 0, 1, 173, 195, 122, 115, 2, 110, 121, 111, 109,
-			0, 1, 177, 197, 98, 2, 106, 101, 108, 0, 1, 182, 195, 2, 106, 101, 108, 195, 182, 108, 0, 1, 182, 195, 2, 106, 195, 161, 114, 195,
-			179, 0, 1, 182, 195, 115, 99, 108, 182, 195, 107, 2, 106, 101, 103, 121, 122, 0, 2, 103, 0, 2, 107, 0, 8, 101, 108, 108, 101, 2,
-			106, 97, 118, 0, 8, 101, 108, 116, 101, 116, 101, 104, 100, 100, 101, 102, 2, 106, 101, 108, 108, 101, 0, 8, 105, 122, 115, 2, 106, 195,
-			161, 116, 115, 122, 0, 8, 177, 197, 98, 2, 110, 121, 111, 109, 0, 8, 182, 195, 2, 110, 121, 111, 109, 0, 110, 1, 111, 107, 2, 101,
-			107, 116, 111, 114, 0, 110, 2, 18, 66, 0, 110, 2, 45, 18, 66, 0, 110, 114, 3, 50, 52, 0, 106, 1, 105, 122, 110, 101, 98, 3,
-			50, 57, 0, 110, 121, 1, 161, 195, 103, 97, 109, 2, 117, 103, 100, 195, 173, 106, 3, 50, 67, 0, 110, 98, 3, 50, 71, 0, 121, 108,
-			111, 110, 5, 1, 8, 3, 50, 109, 57, 55, 39, 50, 0, 101, 109, 8, 2, 45, 3, 50, 109, 65, 0, 108, 1, 161, 195, 106, 97, 3,
-			55, 12, 0, 108, 106, 1, 161, 195, 106, 97, 3, 57, 12, 0, 2, 112, 3, 65, 0, 4, 106, 1, 101, 104, 105, 112, 2, 32, 14, 128,
-			128, 130, 3, 67, 0, 106, 1, 105, 2, 101, 107, 99, 105, 195, 179, 0, 110, 121, 1, 101, 109, 2, 111, 114, 115, 122, 195, 161, 103, 0,
-			110, 121, 1, 105, 2, 101, 107, 99, 105, 195, 179, 0, 110, 121, 2, 18, 66, 0, 110, 121, 2, 45, 18, 66, 0, 110, 121, 2, 99, 115,
-			0, 110, 121, 8, 101, 109, 2, 97, 115, 115, 122, 0, 121, 0, 121, 1, 101, 115, 114, 101, 118, 2, 106, 111, 103, 0, 121, 1, 101, 115,
-			114, 101, 118, 2, 106, 195, 161, 116, 195, 169, 107, 0, 121, 1, 145, 197, 122, 101, 109, 2, 106, 0, 121, 1, 161, 195, 105, 104, 2, 106,
-			0, 121, 1, 161, 195, 109, 111, 108, 108, 161, 195, 2, 106, 101, 108, 0, 121, 1, 161, 195, 109, 114, 111, 107, 2, 106, 97, 118, 97, 115,
-			108, 97, 116, 0, 121, 1, 161, 195, 109, 114, 111, 107, 2, 106, 101, 108, 101, 110, 116, 195, 169, 115, 0, 121, 1, 161, 195, 109, 116, 111,
-			107, 108, 97, 2, 106, 0, 121, 1, 161, 195, 114, 105, 2, 106, 101, 108, 0, 121, 1, 161, 195, 114, 116, 111, 98, 2, 106, 195, 161, 116,
-			195, 169, 107, 0, 121, 1, 161, 195, 118, 114, 161, 195, 118, 105, 122, 115, 2, 106, 195, 161, 116, 115, 122, 0, 121, 1, 169, 195, 100, 105,
-			2, 106, 101, 108, 0, 121, 1, 169, 195, 102, 2, 106, 101, 108, 0, 121, 1, 169, 195, 109, 100, 101, 114, 101, 2, 106, 0, 121, 1, 169,
-			195, 109, 101, 114, 101, 121, 110, 2, 106, 195, 161, 116, 195, 169, 107, 0, 121, 1, 169, 195, 109, 101, 115, 101, 2, 106, 101, 108, 0, 121,
-			1, 169, 195, 109, 116, 173, 195, 115, 101, 106, 108, 101, 116, 2, 106, 97, 118, 117, 0, 121, 1, 169, 195, 118, 114, 182, 195, 116, 2, 106,
-			97, 118, 97, 0, 121, 8, 101, 109, 2, 97, 115, 115, 122, 0, 110, 121, 114, 3, 67, 52, 0, 4, 106, 3, 67, 67, 0, 110, 121, 0,
-			121, 106, 0, 110, 121, 98, 3, 67, 71, 0, 118, 100, 97, 8, 2, 45, 3, 109, 50, 84, 113, 72, 113, 114, 0, 7, 6, 111, 0, 3,
-			39, 0, 7, 6, 112, 0, 4, 1, 45, 112, 3, 0, 1, 45, 112, 112, 3, 0, 4, 3, 48, 0, 112, 2, 18, 66, 0, 112, 2, 45,
-			18, 66, 0, 2, 118, 3, 48, 10, 0, 4, 2, 45, 112, 3, 48, 12, 0, 112, 0, 112, 2, 17, 67, 0, 111, 116, 115, 100, 97, 109,
-			5, 1, 8, 3, 48, 39, 119, 72, 114, 65, 0, 112, 114, 3, 48, 52, 0, 112, 98, 3, 48, 71, 0, 7, 6, 113, 0, 4, 3, 49,
-			84, 0, 117, 0, 7, 6, 114, 0, 4, 2, 99, 99, 3, 51, 0, 2, 114, 0, 101, 1, 21, 2, 32, 14, 128, 128, 130, 3, 51, 109,
-			0, 4, 3, 52, 0, 1, 114, 0, 114, 1, 97, 2, 111, 103, 195, 161, 110, 115, 0, 114, 1, 101, 116, 2, 105, 101, 114, 0, 114, 1,
-			101, 116, 2, 111, 114, 105, 0, 114, 1, 105, 2, 105, 116, 195, 161, 0, 114, 1, 111, 107, 2, 101, 112, 101, 116, 195, 161, 0, 114, 1,
-			117, 107, 110, 111, 107, 2, 101, 110, 0, 114, 2, 18, 66, 0, 114, 2, 45, 18, 66, 0, 114, 8, 97, 2, 111, 103, 97, 110, 99, 105,
-			0, 109, 3, 52, 10, 65, 0, 4, 105, 99, 104, 97, 5, 1, 8, 2, 114, 100, 3, 52, 37, 99, 114, 0, 105, 99, 104, 195, 161, 8,
-			2, 114, 100, 0, 114, 114, 3, 52, 52, 0, 114, 98, 3, 52, 71, 0, 97, 1, 21, 2, 32, 14, 128, 128, 130, 3, 52, 108, 0, 7,
-			6, 115, 0, 122, 1, 45, 115, 3, 0, 5, 1, 1, 108, 101, 104, 2, 105, 110, 107, 105, 3, 88, 0, 4, 1, 108, 101, 103, 110, 101,
-			3, 89, 0, 5, 1, 1, 117, 105, 98, 117, 110, 97, 100, 0, 5, 1, 1, 117, 116, 110, 101, 118, 117, 106, 0, 122, 1, 45, 115, 110,
-			100, 0, 2, 45, 115, 122, 3, 89, 12, 0, 4, 108, 111, 5, 1, 8, 111, 3, 89, 55, 115, 0, 108, 195, 179, 5, 1, 8, 111, 0,
-			4, 101, 109, 109, 101, 108, 119, 101, 105, 115, 8, 3, 89, 109, 65, 65, 109, 55, 84, 109, 57, 89, 0, 101, 109, 109, 101, 108, 119, 101,
-			105, 115, 115, 8, 0, 101, 109, 109, 101, 108, 119, 101, 105, 195, 159, 8, 0, 97, 97, 114, 5, 1, 8, 3, 89, 114, 52, 0, 4, 3,
-			91, 0, 1, 97, 107, 114, 97, 102, 2, 115, 122, 197, 145, 114, 0, 1, 97, 118, 2, 115, 0, 1, 100, 108, 182, 195, 102, 2, 195, 161,
-			110, 99, 0, 1, 101, 110, 103, 161, 195, 109, 0, 1, 101, 121, 110, 110, 101, 122, 115, 2, 122, 115, 195, 161, 0, 1, 101, 122, 110, 169,
-			195, 112, 0, 1, 105, 107, 2, 115, 122, 101, 110, 116, 0, 1, 105, 107, 2, 115, 122, 105, 103, 101, 116, 0, 1, 105, 107, 2, 115, 122,
-			197, 145, 108, 197, 145, 0, 1, 105, 107, 2, 122, 115, 105, 100, 195, 161, 0, 1, 105, 107, 2, 122, 115, 105, 100, 195, 179, 0, 1, 105,
-			120, 97, 108, 97, 103, 0, 1, 111, 103, 111, 108, 97, 121, 103, 2, 122, 195, 161, 115, 122, 108, 195, 179, 0, 1, 111, 107, 111, 116, 2,
-			122, 195, 161, 115, 122, 108, 0, 1, 111, 108, 169, 195, 99, 110, 161, 195, 112, 0, 1, 111, 114, 161, 195, 118, 2, 122, 97, 106, 0, 1,
-			111, 114, 161, 195, 118, 2, 122, 115, 0, 1, 111, 116, 161, 195, 110, 161, 195, 114, 103, 0, 1, 111, 121, 110, 111, 103, 97, 114, 100, 0,
-			1, 117, 100, 108, 111, 107, 0, 1, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 115, 122, 116, 114, 195, 161, 106, 107, 0, 1, 117, 109,
-			116, 105, 114, 2, 122, 97, 106, 0, 1, 117, 109, 116, 105, 114, 2, 122, 97, 118, 97, 114, 0, 1, 117, 112, 173, 195, 116, 2, 122, 117,
-			98, 0, 1, 145, 197, 121, 110, 114, 101, 145, 197, 116, 106, 101, 0, 1, 161, 195, 100, 97, 104, 2, 115, 122, 97, 103, 0, 1, 161, 195,
-			102, 2, 115, 122, 195, 161, 114, 195, 186, 0, 1, 161, 195, 103, 122, 111, 109, 2, 122, 97, 118, 97, 0, 1, 161, 195, 105, 114, 179, 195,
-			0, 1, 161, 195, 106, 111, 116, 0, 1, 161, 195, 107, 115, 117, 112, 0, 1, 161, 195, 108, 100, 97, 112, 0, 1, 161, 195, 108, 108, 97,
-			104, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 110, 97, 98, 98, 111, 114, 0, 1, 161, 195, 110, 97, 98, 98, 111, 114, 2, 122, 97,
-			106, 0, 1, 161, 195, 114, 114, 111, 102, 145, 197, 114, 101, 2, 122, 97, 98, 195, 161, 108, 0, 1, 161, 195, 116, 105, 116, 110, 101, 100,
-			105, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 116, 114, 97, 116, 97, 103, 97, 109, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 116,
-			161, 195, 108, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 118, 108, 97, 2, 122, 97, 118, 97, 0, 1, 161, 195, 121, 108, 107, 161, 195,
-			102, 2, 122, 101, 110, 0, 1, 161, 195, 122, 97, 109, 108, 97, 107, 108, 97, 2, 115, 122, 101, 114, 118, 101, 114, 0, 1, 169, 195, 100,
-			101, 107, 108, 101, 115, 105, 118, 2, 122, 97, 118, 97, 0, 1, 169, 195, 100, 182, 195, 107, 177, 197, 109, 2, 122, 97, 118, 97, 0, 1,
-			169, 195, 103, 101, 107, 101, 114, 98, 0, 1, 169, 195, 108, 101, 109, 114, 101, 116, 0, 1, 169, 195, 112, 169, 195, 108, 0, 1, 169, 195,
-			116, 188, 195, 2, 122, 195, 161, 112, 0, 1, 169, 195, 122, 101, 100, 101, 102, 0, 1, 182, 195, 114, 182, 195, 107, 2, 115, 122, 101, 103,
-			0, 1, 186, 195, 104, 2, 115, 122, 97, 103, 0, 8, 101, 118, 177, 197, 109, 145, 197, 107, 2, 115, 122, 0, 8, 105, 107, 2, 122, 111,
-			109, 98, 111, 114, 0, 8, 105, 108, 105, 112, 0, 8, 111, 108, 97, 116, 122, 115, 97, 0, 8, 111, 114, 105, 112, 0, 8, 117, 103, 114,
-			161, 195, 0, 8, 161, 195, 100, 108, 161, 195, 0, 8, 161, 195, 107, 110, 117, 109, 0, 8, 161, 195, 108, 173, 195, 121, 110, 0, 8, 169,
-			195, 108, 182, 195, 107, 114, 182, 195, 112, 2, 115, 122, 0, 8, 169, 195, 114, 145, 197, 108, 2, 115, 122, 0, 8, 169, 195, 122, 112, 169,
-			195, 107, 0, 8, 169, 195, 122, 115, 116, 101, 116, 0, 8, 179, 195, 118, 186, 195, 102, 2, 122, 101, 110, 101, 0, 8, 182, 195, 114, 182,
-			195, 107, 2, 115, 122, 97, 107, 195, 161, 108, 0, 8, 182, 195, 114, 182, 195, 118, 0, 104, 5, 1, 8, 97, 119, 2, 105, 110, 103, 0,
-			4, 115, 122, 8, 161, 195, 110, 114, 97, 98, 2, 195, 188, 114, 107, 101, 3, 91, 89, 0, 115, 122, 8, 161, 195, 118, 108, 97, 2, 195,
-			188, 107, 115, 195, 169, 0, 1, 105, 107, 2, 101, 98, 98, 3, 91, 91, 0, 7, 6, 116, 0, 4, 1, 45, 116, 3, 0, 4, 1, 45,
-			116, 116, 3, 0, 4, 121, 1, 45, 116, 3, 0, 4, 121, 1, 45, 116, 116, 3, 0, 121, 1, 45, 121, 116, 3, 0, 4, 3, 47, 0,
-			1, 45, 2, 32, 0, 1, 97, 99, 117, 116, 2, 115, 122, 195, 169, 112, 0, 1, 97, 104, 2, 99, 101, 108, 108, 0, 1, 97, 108, 100,
-			97, 112, 2, 115, 122, 197, 145, 110, 121, 0, 1, 97, 108, 108, 161, 195, 2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 97, 108, 108, 161,
-			195, 2, 115, 122, 197, 145, 114, 0, 1, 97, 108, 111, 121, 116, 97, 112, 2, 115, 101, 108, 121, 0, 1, 97, 112, 97, 115, 99, 2, 115,
-			122, 111, 108, 103, 0, 1, 97, 114, 161, 195, 106, 2, 115, 122, 111, 108, 103, 195, 161, 108, 0, 1, 97, 118, 105, 100, 2, 99, 105, 107,
-			107, 0, 1, 97, 118, 105, 100, 2, 115, 122, 195, 169, 112, 0, 1, 97, 122, 161, 195, 108, 98, 161, 195, 116, 2, 99, 101, 108, 108, 0,
-			1, 97, 122, 179, 195, 108, 161, 195, 104, 2, 115, 101, 109, 108, 101, 103, 101, 115, 0, 1, 101, 108, 101, 115, 99, 108, 182, 195, 98, 2,
-			115, 97, 118, 97, 0, 1, 101, 108, 103, 182, 195, 122, 115, 2, 115, 122, 111, 98, 0, 1, 101, 108, 121, 103, 188, 195, 2, 115, 122, 111,
-			98, 0, 1, 101, 108, 122, 188, 195, 2, 115, 122, 111, 98, 0, 1, 101, 108, 169, 195, 2, 115, 111, 114, 118, 97, 115, 122, 0, 1, 101,
-			108, 169, 195, 2, 115, 122, 111, 109, 106, 0, 1, 101, 108, 188, 195, 114, 101, 116, 2, 99, 195, 169, 108, 0, 1, 101, 109, 114, 101, 112,
-			2, 115, 122, 101, 114, 197, 177, 0, 1, 101, 110, 2, 99, 0, 1, 101, 116, 114, 169, 195, 115, 173, 195, 107, 2, 115, 122, 195, 161, 122,
-			97, 100, 0, 1, 101, 116, 182, 195, 107, 2, 115, 122, 195, 161, 109, 0, 1, 101, 118, 182, 195, 122, 115, 2, 115, 195, 161, 118, 0, 1,
-			101, 122, 101, 106, 101, 102, 2, 99, 195, 173, 109, 0, 1, 101, 122, 101, 106, 101, 102, 2, 115, 111, 114, 0, 1, 101, 122, 109, 101, 110,
-			2, 115, 122, 195, 173, 110, 0, 1, 101, 122, 121, 103, 169, 195, 110, 2, 99, 101, 110, 116, 105, 0, 1, 105, 102, 97, 114, 103, 2, 99,
-			101, 114, 117, 122, 0, 1, 105, 108, 101, 2, 115, 122, 111, 108, 103, 0, 1, 105, 112, 114, 161, 195, 107, 2, 115, 122, 197, 145, 110, 121,
-			0, 1, 105, 122, 105, 118, 2, 115, 122, 111, 98, 0, 1, 108, 97, 122, 115, 97, 2, 106, 101, 103, 0, 1, 108, 161, 195, 110, 122, 115,
-			97, 104, 2, 99, 105, 107, 107, 0, 1, 110, 97, 107, 107, 111, 114, 2, 115, 101, 103, 195, 173, 116, 0, 1, 110, 111, 106, 97, 118, 2,
-			115, 122, 111, 114, 111, 115, 0, 1, 110, 111, 114, 102, 2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 110, 111, 115, 99, 2, 115, 111, 118,
+			122, 1, 179, 195, 105, 100, 161, 195, 114, 2, 111, 98, 0, 122, 1, 179, 195, 106, 97, 104, 2, 108, 101, 110, 103, 0, 122, 1, 179, 195,
+			106, 97, 104, 114, 177, 197, 0, 122, 1, 179, 195, 107, 105, 115, 99, 0, 122, 1, 179, 195, 107, 105, 115, 99, 2, 195, 161, 109, 0, 122,
+			1, 179, 195, 108, 122, 115, 161, 195, 122, 0, 122, 1, 179, 195, 110, 111, 118, 2, 101, 114, 101, 110, 195, 161, 100, 0, 122, 1, 179, 195,
+			112, 109, 97, 107, 0, 122, 1, 179, 195, 114, 186, 195, 122, 115, 2, 101, 109, 0, 122, 1, 179, 195, 116, 111, 102, 0, 122, 1, 179, 195,
+			116, 117, 97, 0, 122, 1, 179, 195, 116, 117, 97, 2, 101, 109, 195, 188, 118, 101, 103, 0, 122, 1, 179, 195, 118, 186, 195, 102, 0, 122,
+			1, 179, 195, 118, 186, 195, 102, 2, 101, 114, 115, 122, 0, 122, 1, 179, 195, 118, 186, 195, 102, 2, 105, 109, 0, 122, 1, 179, 195, 121,
+			110, 97, 0, 122, 1, 179, 195, 121, 110, 117, 98, 0, 122, 1, 182, 195, 107, 182, 195, 116, 115, 188, 195, 0, 122, 1, 182, 195, 108, 182,
+			195, 102, 106, 101, 116, 2, 195, 161, 106, 0, 122, 1, 182, 195, 114, 107, 182, 195, 2, 101, 107, 195, 169, 114, 0, 122, 1, 182, 195, 114,
+			145, 197, 107, 2, 101, 103, 0, 122, 1, 182, 195, 114, 145, 197, 122, 115, 2, 195, 173, 118, 0, 122, 1, 182, 195, 114, 182, 195, 107, 2,
+			101, 0, 122, 1, 182, 195, 114, 182, 195, 118, 2, 101, 109, 0, 122, 1, 182, 195, 116, 110, 182, 195, 107, 0, 122, 1, 182, 195, 116, 110,
+			182, 195, 107, 2, 101, 114, 197, 177, 0, 122, 1, 182, 195, 118, 116, 182, 195, 0, 122, 1, 182, 195, 118, 177, 197, 104, 2, 101, 109, 197,
+			177, 0, 122, 1, 186, 195, 100, 2, 97, 107, 195, 161, 108, 108, 0, 122, 1, 186, 195, 104, 2, 97, 102, 116, 0, 122, 1, 186, 195, 104,
+			2, 101, 107, 114, 195, 169, 110, 121, 0, 122, 1, 186, 195, 104, 2, 101, 107, 116, 0, 122, 1, 186, 195, 104, 2, 101, 108, 101, 116, 0,
+			122, 1, 186, 195, 104, 2, 101, 109, 108, 0, 122, 1, 186, 195, 104, 2, 101, 114, 0, 122, 1, 186, 195, 104, 2, 105, 110, 116, 0, 122,
+			1, 186, 195, 104, 2, 195, 161, 108, 0, 122, 1, 186, 195, 104, 2, 195, 161, 108, 108, 195, 173, 116, 0, 122, 1, 186, 195, 104, 2, 195,
+			182, 114, 110, 121, 0, 122, 1, 186, 195, 104, 2, 195, 188, 107, 115, 195, 169, 0, 122, 1, 186, 195, 121, 103, 161, 195, 0, 122, 1, 188,
+			195, 108, 112, 2, 101, 114, 197, 177, 0, 122, 2, 195, 173, 110, 197, 177, 0, 122, 2, 195, 188, 114, 107, 0, 122, 2, 197, 145, 107, 101,
+			0, 122, 8, 97, 100, 114, 111, 0, 122, 8, 97, 107, 97, 107, 2, 195, 179, 0, 122, 8, 97, 107, 114, 97, 102, 2, 105, 103, 0, 122,
+			8, 97, 107, 114, 97, 102, 2, 195, 161, 106, 0, 122, 8, 97, 110, 105, 0, 122, 8, 97, 115, 2, 101, 103, 0, 122, 8, 97, 115, 2,
+			195, 161, 114, 110, 121, 0, 122, 8, 97, 116, 117, 115, 97, 118, 0, 122, 8, 97, 118, 109, 97, 104, 2, 195, 188, 114, 107, 101, 0, 122,
+			8, 101, 100, 169, 195, 2, 101, 115, 122, 116, 101, 115, 116, 0, 122, 8, 101, 103, 169, 195, 115, 99, 110, 101, 122, 115, 2, 197, 177, 122,
+			0, 122, 8, 101, 107, 101, 114, 101, 107, 2, 195, 169, 107, 0, 122, 8, 101, 109, 101, 110, 0, 122, 8, 101, 110, 101, 109, 101, 107, 0,
+			122, 8, 101, 110, 169, 195, 109, 0, 122, 8, 101, 114, 101, 118, 0, 122, 8, 101, 116, 110, 101, 104, 2, 97, 107, 0, 122, 8, 101, 122,
+			115, 101, 109, 2, 195, 188, 114, 0, 122, 8, 105, 102, 107, 97, 98, 0, 122, 8, 105, 107, 2, 101, 114, 115, 122, 0, 122, 8, 105, 107,
+			2, 195, 161, 108, 108, 195, 161, 0, 122, 8, 105, 107, 2, 195, 169, 114, 105, 0, 122, 8, 105, 107, 2, 195, 182, 118, 0, 122, 8, 105,
+			112, 115, 161, 195, 106, 2, 111, 98, 0, 122, 8, 105, 114, 103, 105, 116, 0, 122, 8, 105, 114, 145, 197, 107, 0, 122, 8, 105, 115, 97,
+			104, 2, 97, 103, 0, 122, 8, 111, 98, 109, 111, 103, 0, 122, 8, 111, 103, 97, 121, 103, 97, 2, 101, 114, 103, 0, 122, 8, 111, 103,
+			161, 195, 108, 105, 118, 2, 101, 109, 0, 122, 8, 111, 107, 2, 101, 109, 0, 122, 8, 111, 107, 2, 101, 114, 0, 122, 8, 111, 107, 105,
+			109, 0, 122, 8, 111, 107, 111, 0, 122, 8, 111, 107, 122, 115, 105, 112, 0, 122, 8, 111, 109, 97, 122, 115, 0, 122, 8, 111, 109, 161,
+			195, 118, 0, 122, 8, 111, 112, 97, 107, 0, 122, 8, 111, 112, 97, 110, 2, 111, 98, 0, 122, 8, 111, 114, 161, 195, 118, 0, 122, 8,
+			111, 114, 161, 195, 118, 2, 195, 169, 108, 0, 122, 8, 111, 121, 103, 110, 111, 114, 0, 122, 8, 114, 101, 118, 2, 101, 114, 0, 122, 8,
+			114, 111, 115, 2, 97, 98, 0, 122, 8, 114, 111, 115, 2, 101, 115, 122, 195, 169, 108, 121, 0, 122, 8, 114, 111, 121, 103, 0, 122, 8,
+			114, 161, 195, 104, 0, 122, 8, 114, 161, 195, 116, 2, 111, 98, 0, 122, 8, 114, 161, 195, 121, 110, 2, 101, 114, 197, 177, 0, 122, 8,
+			117, 100, 108, 111, 107, 2, 101, 0, 122, 8, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 101, 114, 0, 122, 8, 117, 107, 101, 104, 2,
+			97, 103, 0, 122, 8, 117, 107, 179, 195, 109, 0, 122, 8, 117, 112, 173, 195, 116, 2, 195, 161, 109, 0, 122, 8, 117, 112, 173, 195, 116,
+			2, 195, 182, 118, 101, 103, 0, 122, 8, 117, 114, 173, 195, 118, 2, 101, 114, 0, 122, 8, 117, 116, 107, 97, 116, 110, 111, 107, 0, 122,
+			8, 117, 122, 110, 101, 122, 115, 110, 111, 107, 0, 122, 8, 145, 197, 2, 101, 108, 108, 0, 122, 8, 145, 197, 2, 101, 114, 197, 177, 0,
+			122, 8, 145, 197, 2, 105, 0, 122, 8, 145, 197, 2, 108, 195, 161, 118, 0, 122, 8, 145, 197, 2, 111, 107, 195, 161, 0, 122, 8, 145,
+			197, 2, 195, 169, 107, 0, 122, 8, 145, 197, 104, 0, 122, 8, 161, 195, 102, 2, 195, 173, 110, 0, 122, 8, 161, 195, 103, 97, 99, 97,
+			107, 2, 101, 114, 0, 122, 8, 161, 195, 103, 114, 111, 102, 0, 122, 8, 161, 195, 107, 97, 108, 0, 122, 8, 161, 195, 107, 97, 114, 0,
+			122, 8, 161, 195, 108, 97, 2, 111, 108, 103, 0, 122, 8, 161, 195, 108, 179, 195, 122, 115, 0, 122, 8, 161, 195, 109, 2, 195, 179, 0,
+			122, 8, 161, 195, 109, 111, 108, 108, 97, 118, 0, 122, 8, 161, 195, 109, 111, 121, 110, 2, 105, 110, 0, 122, 8, 161, 195, 114, 114, 111,
+			102, 0, 122, 8, 161, 195, 115, 0, 122, 8, 161, 195, 115, 122, 179, 195, 114, 2, 197, 145, 107, 0, 122, 8, 161, 195, 116, 97, 104, 2,
+			101, 114, 0, 122, 8, 161, 195, 116, 110, 97, 107, 114, 111, 104, 2, 101, 114, 0, 122, 8, 161, 195, 116, 114, 111, 112, 0, 122, 8, 161,
+			195, 116, 161, 195, 108, 2, 195, 182, 103, 0, 122, 8, 161, 195, 118, 108, 105, 122, 115, 0, 122, 8, 169, 195, 99, 101, 114, 2, 195, 161,
+			114, 195, 186, 0, 122, 8, 169, 195, 100, 101, 107, 108, 101, 122, 173, 195, 104, 0, 122, 8, 169, 195, 103, 169, 195, 0, 122, 8, 169, 195,
+			107, 112, 105, 115, 99, 0, 122, 8, 169, 195, 107, 169, 195, 98, 0, 122, 8, 169, 195, 114, 2, 101, 114, 197, 177, 0, 122, 8, 169, 195,
+			116, 101, 100, 108, 188, 195, 107, 0, 122, 8, 169, 195, 116, 101, 116, 110, 188, 195, 116, 105, 107, 0, 122, 8, 169, 195, 116, 101, 118, 0,
+			122, 8, 169, 195, 116, 106, 101, 108, 0, 122, 8, 169, 195, 116, 173, 195, 114, 101, 107, 2, 97, 103, 0, 122, 8, 169, 195, 116, 177, 197,
+			102, 0, 122, 8, 169, 195, 118, 101, 107, 0, 122, 8, 169, 195, 118, 101, 107, 2, 101, 114, 0, 122, 8, 169, 195, 122, 101, 100, 110, 101,
+			114, 101, 98, 2, 101, 0, 122, 8, 179, 195, 105, 100, 2, 105, 108, 195, 161, 0, 122, 8, 179, 195, 106, 0, 122, 8, 179, 195, 106, 97,
+			104, 0, 122, 8, 179, 195, 110, 111, 118, 2, 105, 118, 0, 122, 8, 179, 195, 116, 173, 195, 114, 105, 112, 2, 101, 0, 122, 8, 182, 195,
+			114, 107, 182, 195, 2, 101, 103, 0, 122, 8, 182, 195, 114, 107, 182, 195, 2, 101, 107, 101, 114, 101, 0, 122, 8, 182, 195, 114, 107, 188,
+			195, 116, 0, 122, 8, 182, 195, 114, 182, 195, 107, 2, 105, 103, 0, 122, 8, 182, 195, 114, 182, 195, 118, 0, 122, 8, 186, 195, 104, 2,
+			97, 108, 111, 110, 110, 97, 0, 122, 8, 186, 195, 104, 2, 105, 103, 101, 116, 0, 122, 8, 186, 195, 104, 2, 195, 173, 110, 0, 122, 8,
+			186, 195, 104, 2, 195, 182, 118, 0, 7, 6, 115, 122, 0, 4, 3, 89, 0, 1, 97, 118, 97, 114, 2, 195, 161, 114, 0, 1, 97, 118,
+			97, 116, 2, 195, 161, 114, 97, 0, 1, 97, 118, 97, 116, 2, 195, 161, 114, 195, 179, 108, 0, 1, 100, 110, 101, 114, 2, 101, 114, 101,
+			116, 197, 145, 0, 1, 101, 122, 110, 169, 195, 112, 2, 107, 0, 1, 182, 195, 109, 182, 195, 115, 99, 2, 195, 182, 108, 0, 1, 100, 110,
+			101, 114, 2, 101, 114, 3, 89, 12, 0, 4, 116, 1, 97, 114, 97, 112, 2, 115, 101, 103, 103, 3, 89, 47, 0, 116, 1, 101, 98, 122,
+			97, 2, 115, 105, 115, 97, 107, 0, 116, 1, 101, 114, 101, 107, 2, 115, 111, 114, 0, 116, 1, 101, 114, 101, 107, 2, 115, 122, 101, 114,
+			0, 116, 1, 117, 121, 110, 2, 115, 195, 188, 118, 101, 103, 0, 4, 116, 115, 122, 3, 89, 47, 89, 0, 116, 115, 122, 1, 97, 114, 97,
+			112, 2, 97, 103, 0, 116, 115, 122, 1, 97, 114, 97, 112, 2, 97, 110, 100, 195, 161, 108, 0, 116, 115, 122, 1, 97, 114, 97, 112, 2,
+			101, 107, 0, 116, 115, 122, 1, 101, 114, 101, 107, 2, 97, 108, 97, 0, 116, 115, 122, 1, 101, 114, 101, 107, 2, 101, 0, 116, 115, 122,
+			1, 101, 116, 2, 101, 122, 111, 110, 0, 116, 115, 122, 1, 105, 108, 2, 101, 109, 101, 107, 0, 116, 115, 122, 1, 105, 108, 2, 101, 114,
+			197, 177, 0, 116, 115, 122, 1, 105, 116, 97, 98, 2, 101, 114, 197, 177, 0, 116, 115, 122, 8, 97, 109, 97, 100, 0, 4, 116, 115, 122,
+			101, 1, 105, 116, 97, 98, 2, 103, 195, 169, 3, 89, 47, 89, 109, 0, 116, 115, 122, 101, 1, 105, 116, 101, 109, 97, 0, 116, 115, 122,
+			101, 1, 111, 114, 100, 2, 114, 122, 197, 145, 0, 116, 115, 122, 101, 8, 97, 107, 0, 4, 116, 115, 1, 97, 108, 97, 109, 2, 117, 103,
+			97, 108, 3, 89, 47, 91, 0, 116, 115, 1, 97, 108, 108, 97, 98, 2, 195, 186, 108, 121, 0, 116, 115, 1, 97, 114, 97, 112, 2, 97,
+			108, 195, 161, 0, 116, 115, 1, 97, 114, 97, 112, 2, 101, 114, 101, 0, 116, 115, 1, 97, 114, 97, 112, 2, 105, 104, 101, 100, 0, 116,
+			115, 1, 97, 114, 97, 112, 2, 111, 110, 107, 0, 116, 115, 1, 97, 114, 97, 112, 2, 111, 114, 98, 0, 116, 115, 1, 97, 114, 97, 112,
+			2, 111, 114, 115, 0, 116, 115, 1, 97, 114, 97, 112, 2, 117, 104, 97, 110, 0, 116, 115, 1, 97, 114, 97, 112, 2, 195, 188, 116, 101,
+			0, 116, 115, 1, 101, 116, 2, 111, 114, 111, 122, 0, 116, 115, 8, 97, 109, 97, 100, 0, 116, 115, 8, 101, 116, 2, 111, 114, 0, 116,
+			115, 3, 89, 76, 12, 0, 116, 115, 122, 97, 3, 89, 119, 108, 0, 116, 115, 122, 101, 3, 89, 119, 109, 0, 115, 1, 169, 195, 103, 101,
+			2, 195, 169, 103, 3, 91, 0, 4, 115, 1, 97, 103, 105, 2, 195, 161, 103, 111, 115, 3, 91, 12, 0, 115, 1, 169, 195, 107, 103, 101,
+			108, 2, 195, 169, 103, 101, 115, 0, 1, 97, 118, 2, 97, 98, 108, 3, 91, 15, 88, 0, 4, 1, 97, 118, 2, 195, 161, 112, 111, 114,
+			3, 91, 88, 0, 1, 97, 118, 2, 195, 161, 114, 0, 1, 111, 114, 97, 109, 2, 117, 103, 0, 1, 161, 195, 108, 108, 97, 104, 2, 97,
+			118, 97, 114, 0, 1, 161, 195, 108, 108, 161, 195, 110, 101, 108, 108, 101, 2, 195, 179, 110, 0, 1, 161, 195, 121, 108, 107, 161, 195, 102,
+			2, 101, 110, 101, 0, 1, 169, 195, 114, 2, 195, 161, 114, 195, 161, 115, 0, 1, 169, 195, 118, 101, 2, 97, 118, 97, 114, 0, 1, 179,
+			195, 110, 111, 118, 2, 101, 110, 101, 0, 1, 182, 195, 114, 182, 195, 107, 2, 117, 103, 0, 2, 97, 99, 115, 107, 0, 2, 97, 118, 97,
+			114, 0, 2, 195, 182, 108, 100, 0, 4, 115, 1, 97, 118, 2, 97, 110, 195, 169, 114, 3, 91, 90, 0, 115, 1, 97, 118, 2, 195, 173,
+			114, 0, 115, 1, 101, 118, 121, 110, 101, 2, 105, 110, 0, 115, 1, 101, 122, 105, 118, 2, 101, 109, 0, 115, 1, 161, 195, 107, 110, 111,
+			115, 2, 101, 109, 108, 0, 115, 1, 161, 195, 116, 2, 105, 110, 0, 115, 1, 169, 195, 116, 114, 101, 115, 2, 105, 114, 0, 115, 1, 169,
+			195, 116, 114, 101, 115, 2, 195, 173, 114, 0, 115, 2, 195, 161, 107, 0, 7, 6, 116, 106, 0, 4, 1, 97, 104, 2, 101, 103, 121, 197,
+			177, 3, 47, 57, 0, 1, 97, 108, 108, 161, 195, 2, 195, 179, 108, 195, 169, 116, 0, 1, 97, 108, 111, 100, 110, 111, 103, 2, 101, 108,
+			0, 1, 97, 108, 117, 103, 110, 97, 104, 2, 97, 118, 195, 173, 116, 0, 1, 97, 108, 117, 103, 110, 97, 104, 2, 101, 108, 0, 1, 97,
+			109, 97, 121, 108, 111, 102, 2, 101, 108, 0, 1, 97, 110, 111, 118, 2, 101, 103, 103, 121, 0, 1, 97, 110, 111, 118, 2, 101, 103, 121,
+			0, 1, 97, 112, 97, 115, 99, 2, 101, 108, 0, 1, 97, 112, 97, 115, 99, 2, 195, 161, 116, 195, 169, 107, 0, 1, 97, 122, 97, 118,
+			97, 122, 115, 2, 101, 103, 0, 1, 97, 122, 97, 118, 97, 122, 115, 2, 111, 103, 0, 1, 97, 122, 111, 103, 108, 111, 100, 2, 97, 118,
+			195, 173, 116, 0, 1, 101, 108, 98, 98, 182, 195, 116, 2, 195, 182, 118, 101, 100, 101, 108, 0, 1, 101, 108, 101, 116, 122, 115, 105, 116,
+			2, 101, 103, 121, 0, 1, 101, 108, 114, 169, 195, 98, 2, 101, 103, 121, 0, 1, 101, 108, 169, 195, 2, 101, 108, 0, 1, 101, 108, 169,
+			195, 2, 195, 161, 114, 97, 100, 195, 169, 107, 0, 1, 101, 108, 188, 195, 114, 101, 116, 2, 101, 108, 195, 182, 108, 0, 1, 101, 109, 169,
+			195, 110, 2, 117, 104, 195, 161, 0, 1, 101, 110, 101, 109, 2, 101, 103, 103, 121, 0, 1, 101, 110, 101, 109, 2, 101, 103, 121, 0, 1,
+			101, 110, 101, 122, 188, 195, 2, 101, 108, 0, 1, 101, 110, 114, 101, 116, 110, 105, 2, 101, 103, 121, 0, 1, 101, 110, 188, 195, 122, 115,
+			2, 101, 108, 0, 1, 101, 115, 101, 2, 111, 103, 0, 1, 101, 122, 101, 106, 101, 102, 2, 101, 108, 0, 1, 101, 122, 114, 169, 195, 122,
+			182, 195, 107, 2, 97, 118, 195, 173, 0, 1, 101, 122, 115, 169, 195, 109, 114, 101, 116, 2, 111, 103, 0, 1, 101, 122, 115, 169, 195, 109,
+			114, 101, 116, 2, 195, 161, 114, 0, 1, 101, 122, 115, 169, 195, 109, 114, 101, 116, 2, 195, 161, 116, 195, 169, 107, 0, 1, 101, 122, 121,
+			108, 101, 104, 2, 101, 108, 0, 1, 101, 122, 177, 197, 121, 116, 110, 101, 108, 108, 105, 98, 2, 101, 108, 0, 1, 101, 122, 177, 197, 121,
+			116, 110, 101, 108, 108, 105, 98, 2, 195, 161, 116, 195, 169, 0, 1, 108, 111, 104, 2, 195, 161, 116, 195, 169, 107, 0, 1, 110, 97, 107,
+			107, 111, 114, 2, 195, 161, 114, 97, 100, 195, 169, 107, 0, 1, 110, 101, 122, 115, 2, 97, 107, 97, 98, 0, 1, 110, 101, 122, 115, 2,
+			195, 161, 110, 111, 115, 0, 1, 110, 111, 114, 102, 2, 195, 161, 114, 0, 1, 110, 111, 115, 99, 2, 195, 161, 116, 195, 169, 107, 0, 1,
+			111, 112, 97, 108, 108, 161, 195, 2, 97, 118, 117, 108, 0, 1, 111, 112, 97, 108, 108, 161, 195, 2, 101, 108, 0, 1, 114, 111, 112, 115,
+			2, 195, 161, 116, 195, 169, 107, 0, 1, 114, 188, 195, 107, 2, 101, 108, 0, 1, 115, 101, 116, 2, 195, 161, 116, 195, 169, 107, 0, 1,
+			115, 188, 195, 122, 101, 2, 101, 108, 118, 0, 1, 122, 115, 182, 195, 114, 182, 195, 107, 2, 195, 161, 114, 0, 1, 161, 195, 2, 117, 115,
+			115, 0, 1, 161, 195, 2, 117, 116, 0, 1, 161, 195, 2, 195, 161, 114, 0, 1, 161, 195, 2, 195, 182, 0, 1, 161, 195, 2, 195, 182,
+			104, 101, 0, 1, 161, 195, 2, 195, 182, 110, 0, 1, 161, 195, 2, 195, 182, 115, 115, 122, 0, 1, 161, 195, 2, 195, 182, 116, 0, 1,
+			169, 195, 104, 2, 101, 103, 121, 197, 177, 0, 1, 169, 195, 107, 2, 101, 103, 121, 197, 177, 0, 1, 169, 195, 107, 2, 195, 161, 116, 115,
+			122, 109, 0, 1, 169, 195, 107, 105, 112, 2, 195, 161, 116, 115, 122, 0, 1, 169, 195, 108, 2, 111, 103, 111, 115, 117, 108, 116, 115, 195,
+			161, 103, 0, 1, 169, 195, 110, 101, 122, 2, 195, 161, 116, 115, 122, 0, 1, 179, 195, 107, 115, 2, 117, 104, 195, 161, 115, 122, 0, 1,
+			179, 195, 112, 2, 101, 0, 1, 182, 195, 2, 101, 103, 121, 197, 177, 0, 1, 186, 195, 2, 97, 118, 195, 173, 0, 1, 186, 195, 2, 101,
+			108, 122, 195, 169, 115, 0, 1, 186, 195, 2, 101, 108, 122, 197, 145, 0, 1, 186, 195, 2, 111, 103, 0, 2, 101, 108, 0, 8, 97, 122,
+			161, 195, 108, 98, 161, 195, 116, 2, 101, 103, 121, 0, 8, 101, 108, 101, 116, 122, 115, 105, 116, 2, 101, 108, 0, 8, 101, 108, 122, 115,
+			169, 195, 107, 2, 101, 108, 101, 110, 0, 8, 110, 97, 122, 115, 101, 100, 2, 195, 161, 114, 109, 0, 8, 122, 115, 101, 114, 101, 107, 2,
+			195, 161, 0, 8, 122, 115, 169, 195, 118, 2, 195, 179, 115, 108, 0, 8, 161, 195, 2, 101, 108, 101, 110, 116, 107, 101, 122, 0, 8, 161,
+			195, 2, 117, 0, 8, 161, 195, 2, 195, 182, 106, 0, 4, 195, 161, 116, 115, 115, 122, 1, 161, 195, 3, 47, 57, 114, 119, 12, 0, 195,
+			161, 116, 115, 122, 1, 161, 195, 0, 4, 1, 17, 67, 3, 80, 0, 1, 110, 111, 115, 99, 0, 1, 114, 188, 195, 107, 0, 1, 115, 188,
+			195, 122, 101, 0, 4, 1, 17, 65, 2, 17, 65, 3, 80, 12, 0, 1, 101, 108, 122, 188, 195, 0, 1, 161, 195, 103, 2, 195, 161, 114,
+			0, 1, 161, 195, 104, 2, 195, 161, 114, 0, 1, 161, 195, 108, 114, 111, 107, 2, 195, 161, 114, 97, 0, 1, 161, 195, 114, 97, 98, 2,
+			195, 161, 114, 0, 7, 6, 116, 115, 0, 4, 122, 1, 97, 100, 97, 3, 47, 89, 0, 122, 1, 97, 100, 97, 2, 111, 108, 103, 195, 161,
+			108, 116, 97, 116, 0, 122, 1, 97, 104, 2, 195, 161, 122, 0, 122, 1, 97, 108, 117, 100, 110, 105, 2, 195, 179, 0, 122, 1, 101, 108,
+			98, 98, 182, 195, 116, 2, 111, 108, 0, 122, 1, 101, 108, 188, 195, 115, 99, 101, 98, 2, 195, 179, 0, 122, 1, 101, 110, 2, 111, 0,
+			122, 1, 101, 110, 101, 109, 2, 195, 169, 108, 0, 122, 1, 101, 116, 101, 114, 101, 122, 115, 2, 111, 108, 103, 195, 161, 108, 97, 116, 0,
+			122, 1, 101, 122, 109, 101, 110, 2, 111, 0, 122, 1, 105, 104, 2, 101, 0, 122, 1, 105, 104, 2, 195, 179, 0, 122, 1, 106, 101, 115,
+			2, 195, 182, 0, 122, 1, 110, 97, 108, 2, 195, 179, 0, 122, 1, 110, 101, 98, 2, 111, 114, 117, 108, 0, 122, 1, 110, 101, 122, 115,
+			2, 111, 98, 114, 111, 107, 0, 122, 1, 110, 101, 122, 115, 2, 195, 169, 107, 0, 122, 1, 110, 111, 114, 102, 2, 111, 108, 103, 195, 161,
+			108, 0, 122, 1, 110, 111, 115, 99, 2, 195, 169, 110, 0, 122, 1, 110, 161, 195, 112, 2, 195, 169, 108, 0, 122, 1, 111, 112, 97, 121,
+			103, 0, 122, 1, 114, 101, 107, 2, 111, 109, 115, 122, 195, 169, 100, 0, 122, 1, 114, 111, 112, 115, 2, 111, 108, 103, 195, 161, 108, 0,
+			122, 1, 114, 188, 195, 107, 2, 195, 179, 0, 122, 1, 161, 195, 2, 97, 0, 122, 1, 161, 195, 2, 101, 0, 122, 1, 161, 195, 2, 111,
+			107, 0, 122, 1, 161, 195, 2, 195, 182, 0, 122, 1, 161, 195, 2, 195, 186, 0, 122, 1, 161, 195, 2, 197, 145, 0, 122, 1, 161, 195,
+			2, 197, 177, 0, 122, 1, 161, 195, 98, 97, 107, 2, 195, 169, 0, 122, 1, 161, 195, 104, 2, 195, 169, 108, 0, 122, 1, 161, 195, 108,
+			2, 101, 0, 122, 1, 161, 195, 108, 2, 101, 114, 195, 169, 115, 122, 0, 122, 1, 161, 195, 122, 115, 115, 97, 112, 2, 195, 169, 108, 0,
+			122, 1, 169, 195, 104, 2, 195, 161, 122, 0, 122, 1, 169, 195, 107, 2, 101, 114, 101, 112, 0, 122, 1, 169, 195, 107, 2, 195, 161, 122,
+			0, 122, 1, 169, 195, 107, 2, 195, 173, 110, 0, 122, 1, 169, 195, 108, 2, 195, 161, 109, 0, 122, 1, 169, 195, 116, 182, 195, 115, 2,
+			197, 145, 107, 101, 0, 122, 1, 179, 195, 107, 115, 2, 111, 107, 110, 121, 0, 122, 1, 179, 195, 114, 100, 2, 197, 145, 114, 0, 122, 1,
+			182, 195, 2, 195, 161, 122, 0, 122, 1, 186, 195, 2, 111, 114, 111, 115, 0, 122, 1, 186, 195, 2, 195, 169, 108, 0, 122, 2, 97, 0,
+			122, 2, 101, 0, 122, 2, 195, 161, 0, 122, 8, 97, 104, 2, 111, 98, 0, 122, 8, 97, 104, 99, 2, 111, 98, 0, 122, 8, 161, 195,
+			2, 111, 108, 103, 195, 161, 108, 0, 122, 8, 161, 195, 2, 111, 114, 111, 110, 103, 0, 122, 8, 161, 195, 2, 111, 114, 117, 108, 116, 0,
+			122, 8, 161, 195, 2, 111, 114, 195, 173, 116, 0, 122, 8, 169, 195, 104, 2, 111, 98, 0, 122, 8, 169, 195, 107, 2, 111, 98, 0, 122,
+			8, 179, 195, 112, 2, 195, 169, 107, 0, 122, 8, 182, 195, 2, 111, 98, 0, 122, 195, 169, 1, 169, 195, 122, 115, 3, 47, 89, 113, 0,
+			4, 1, 97, 100, 97, 3, 47, 91, 0, 1, 97, 100, 97, 108, 101, 102, 2, 111, 114, 0, 1, 97, 104, 2, 195, 161, 118, 0, 1, 97,
+			108, 108, 161, 195, 2, 101, 114, 101, 103, 0, 1, 97, 108, 111, 100, 110, 111, 103, 2, 111, 114, 0, 1, 97, 108, 114, 111, 107, 97, 121,
+			103, 2, 111, 114, 111, 122, 0, 1, 97, 108, 117, 100, 122, 111, 109, 2, 111, 0, 1, 97, 108, 161, 195, 103, 115, 122, 105, 118, 2, 111,
+			114, 0, 1, 97, 108, 161, 195, 103, 115, 122, 105, 118, 2, 111, 114, 111, 122, 97, 0, 1, 97, 109, 97, 121, 108, 111, 102, 2, 195, 161,
+			118, 0, 1, 97, 110, 97, 103, 97, 100, 2, 101, 106, 0, 1, 97, 114, 105, 108, 101, 102, 2, 195, 161, 118, 0, 1, 97, 122, 97, 118,
+			97, 122, 115, 2, 111, 0, 1, 97, 122, 161, 195, 108, 98, 161, 195, 116, 2, 111, 114, 0, 1, 101, 103, 105, 122, 115, 2, 101, 106, 0,
+			1, 101, 103, 105, 122, 115, 2, 111, 0, 1, 101, 103, 105, 122, 115, 2, 111, 114, 0, 1, 101, 108, 101, 118, 177, 197, 109, 2, 111, 0,
+			1, 101, 108, 101, 118, 177, 197, 109, 2, 195, 161, 118, 0, 1, 101, 108, 101, 121, 103, 101, 107, 2, 195, 169, 114, 0, 1, 101, 108, 114,
+			169, 195, 115, 173, 195, 107, 2, 111, 114, 111, 122, 97, 116, 0, 1, 101, 108, 121, 110, 169, 195, 114, 101, 109, 2, 111, 114, 0, 1, 101,
+			108, 122, 188, 195, 2, 111, 114, 0, 1, 101, 108, 188, 195, 112, 169, 195, 2, 97, 114, 111, 107, 0, 1, 101, 108, 188, 195, 112, 169, 195,
+			2, 97, 114, 111, 107, 0, 1, 101, 108, 188, 195, 114, 101, 116, 2, 195, 161, 118, 0, 1, 101, 108, 188, 195, 115, 99, 101, 98, 2, 195,
+			169, 0, 1, 101, 110, 2, 101, 0, 1, 101, 110, 2, 195, 161, 116, 111, 114, 0, 1, 101, 110, 101, 109, 2, 111, 114, 0, 1, 101, 118,
+			182, 195, 122, 115, 2, 97, 112, 107, 0, 1, 101, 122, 109, 101, 110, 2, 116, 114, 97, 116, 195, 169, 0, 1, 101, 122, 188, 195, 102, 97,
+			107, 110, 117, 109, 2, 97, 98, 108, 0, 1, 105, 98, 2, 101, 98, 101, 115, 115, 195, 169, 103, 0, 1, 105, 109, 2, 101, 0, 1, 108,
+			97, 98, 111, 107, 2, 117, 103, 195, 161, 114, 0, 1, 108, 111, 104, 2, 195, 161, 112, 97, 100, 116, 0, 1, 110, 105, 109, 2, 101, 109,
+			0, 1, 110, 111, 115, 99, 2, 195, 169, 114, 0, 1, 110, 161, 195, 114, 111, 107, 2, 101, 0, 1, 111, 98, 111, 114, 2, 111, 102, 0,
+			1, 111, 111, 98, 2, 111, 114, 114, 101, 110, 100, 0, 1, 111, 112, 97, 108, 108, 161, 195, 2, 111, 114, 0, 1, 114, 97, 112, 2, 195,
+			161, 118, 0, 1, 114, 161, 195, 112, 2, 97, 106, 116, 195, 179, 0, 1, 114, 161, 195, 122, 2, 111, 114, 195, 186, 0, 1, 115, 101, 116,
+			2, 195, 169, 114, 0, 1, 117, 99, 110, 117, 104, 2, 195, 161, 103, 0, 1, 122, 115, 101, 116, 2, 111, 114, 0, 1, 161, 195, 2, 101,
+			103, 195, 173, 116, 0, 1, 161, 195, 2, 101, 106, 108, 101, 0, 1, 161, 195, 2, 111, 114, 0, 1, 161, 195, 2, 117, 103, 0, 1, 161,
+			195, 2, 117, 104, 0, 1, 161, 195, 2, 117, 114, 0, 1, 161, 195, 2, 195, 169, 0, 1, 161, 195, 2, 195, 182, 112, 114, 197, 145, 0,
+			1, 161, 195, 2, 195, 182, 112, 195, 182, 114, 0, 1, 161, 195, 2, 195, 188, 108, 116, 0, 1, 161, 195, 2, 195, 188, 116, 0, 1, 161,
+			195, 2, 195, 188, 118, 195, 173, 116, 0, 1, 161, 195, 103, 2, 195, 188, 108, 108, 121, 101, 100, 0, 1, 169, 195, 107, 2, 97, 114, 107,
+			195, 186, 0, 1, 169, 195, 107, 2, 97, 114, 111, 107, 0, 1, 169, 195, 107, 2, 101, 98, 101, 115, 115, 195, 169, 103, 101, 115, 0, 1,
+			169, 195, 107, 2, 111, 114, 0, 1, 169, 195, 107, 2, 195, 161, 118, 0, 1, 169, 195, 114, 182, 195, 115, 2, 101, 98, 0, 1, 179, 195,
+			107, 115, 2, 97, 112, 107, 97, 0, 1, 179, 195, 114, 100, 2, 195, 182, 118, 195, 169, 110, 110, 121, 0, 1, 179, 195, 114, 100, 2, 195,
+			182, 118, 195, 169, 110, 121, 0, 1, 179, 195, 122, 111, 98, 2, 111, 0, 1, 186, 195, 107, 2, 117, 103, 0, 8, 161, 195, 2, 111, 100,
+			111, 114, 0, 8, 186, 195, 2, 195, 161, 118, 0, 4, 1, 106, 3, 76, 0, 1, 110, 101, 109, 2, 118, 195, 161, 114, 0, 1, 110, 182,
+			195, 100, 2, 195, 182, 110, 0, 2, 32, 14, 128, 128, 130, 0, 2, 97, 0, 2, 101, 0, 2, 111, 0, 2, 117, 0, 2, 195, 161, 0,
+			2, 195, 169, 0, 4, 1, 97, 108, 108, 161, 195, 2, 195, 161, 103, 3, 76, 12, 0, 1, 97, 108, 117, 109, 0, 1, 101, 104, 101, 108,
+			2, 195, 169, 103, 0, 1, 101, 104, 101, 116, 2, 195, 169, 103, 0, 1, 101, 105, 115, 0, 1, 101, 107, 188, 195, 115, 2, 195, 169, 103,
+			0, 1, 101, 108, 106, 101, 102, 2, 195, 169, 103, 0, 1, 101, 109, 169, 195, 110, 2, 195, 169, 103, 0, 1, 101, 114, 101, 109, 115, 105,
+			2, 195, 169, 103, 0, 1, 101, 114, 169, 195, 2, 195, 169, 103, 0, 1, 101, 118, 101, 110, 2, 195, 169, 103, 0, 1, 101, 118, 182, 195,
+			107, 2, 195, 169, 103, 0, 1, 101, 118, 182, 195, 122, 115, 2, 195, 169, 103, 0, 1, 101, 122, 101, 108, 101, 116, 182, 195, 107, 2, 195,
+			169, 103, 0, 1, 101, 122, 105, 102, 2, 195, 169, 103, 0, 1, 101, 122, 109, 101, 110, 0, 1, 105, 103, 101, 115, 2, 195, 169, 0, 1,
+			111, 116, 97, 103, 111, 109, 161, 195, 116, 2, 195, 161, 103, 0, 1, 111, 122, 105, 98, 2, 195, 161, 103, 0, 1, 117, 99, 110, 117, 104,
+			2, 195, 161, 103, 0, 1, 161, 195, 2, 195, 179, 0, 1, 161, 195, 106, 97, 115, 2, 195, 161, 103, 0, 1, 161, 195, 112, 97, 2, 195,
+			161, 103, 0, 1, 161, 195, 114, 97, 98, 0, 1, 169, 195, 107, 2, 195, 169, 103, 0, 1, 169, 195, 109, 101, 122, 115, 2, 195, 169, 103,
+			0, 1, 169, 195, 114, 2, 195, 169, 103, 0, 1, 169, 195, 116, 182, 195, 115, 2, 195, 169, 103, 0, 1, 169, 195, 118, 2, 195, 169, 103,
+			0, 1, 173, 195, 103, 101, 115, 0, 1, 173, 195, 108, 108, 161, 195, 0, 1, 173, 195, 114, 111, 122, 115, 2, 97, 0, 1, 173, 195, 114,
+			188, 195, 2, 101, 0, 1, 177, 197, 102, 0, 1, 177, 197, 104, 0, 1, 182, 195, 116, 182, 195, 107, 2, 195, 169, 103, 0, 8, 161, 195,
+			104, 2, 195, 161, 103, 0, 100, 3, 76, 72, 0, 195, 182, 3, 76, 110, 0, 195, 188, 3, 76, 111, 0, 4, 122, 1, 101, 109, 2, 118,
+			101, 3, 119, 0, 122, 1, 101, 109, 101, 108, 2, 118, 195, 169, 110, 0, 122, 1, 161, 195, 106, 2, 104, 97, 115, 115, 0, 122, 1, 161,
+			195, 106, 2, 104, 97, 116, 0, 122, 1, 161, 195, 106, 2, 109, 0, 122, 1, 161, 195, 106, 2, 118, 0, 4, 115, 122, 1, 97, 108, 108,
+			97, 104, 2, 111, 110, 3, 119, 12, 0, 115, 122, 1, 101, 109, 2, 101, 0, 115, 122, 1, 101, 109, 2, 195, 188, 107, 0, 115, 122, 1,
+			161, 195, 106, 0, 115, 122, 1, 161, 195, 108, 2, 97, 110, 97, 107, 0, 115, 122, 1, 161, 195, 108, 2, 111, 110, 0, 115, 122, 8, 161,
+			195, 108, 2, 195, 169, 107, 0, 122, 1, 97, 108, 108, 97, 104, 2, 97, 0, 122, 1, 97, 108, 108, 97, 104, 2, 105, 107, 0, 122, 1,
+			101, 105, 115, 0, 122, 1, 101, 109, 2, 101, 0, 122, 1, 101, 109, 2, 101, 116, 0, 122, 1, 101, 109, 2, 105, 107, 0, 122, 1, 101,
+			116, 0, 122, 1, 161, 195, 106, 2, 17, 65, 0, 122, 1, 161, 195, 106, 2, 111, 107, 0, 122, 1, 161, 195, 108, 2, 17, 65, 0, 122,
+			1, 169, 195, 104, 2, 101, 114, 0, 122, 1, 169, 195, 107, 2, 101, 114, 0, 122, 1, 182, 195, 2, 195, 182, 114, 0, 122, 1, 182, 195,
+			112, 2, 101, 110, 0, 122, 2, 32, 14, 128, 128, 131, 0, 122, 2, 111, 0, 122, 2, 195, 169, 0, 122, 2, 197, 145, 0, 122, 195, 179,
+			2, 32, 14, 128, 128, 132, 3, 119, 12, 115, 0, 7, 6, 116, 116, 0, 4, 1, 97, 108, 97, 2, 106, 195, 161, 114, 3, 47, 0, 1,
+			101, 107, 105, 114, 107, 2, 106, 195, 161, 116, 0, 1, 101, 107, 105, 114, 107, 2, 106, 195, 161, 116, 0, 1, 111, 108, 97, 104, 2, 115,
+			195, 161, 112, 97, 100, 0, 1, 111, 116, 161, 195, 108, 108, 101, 2, 106, 111, 103, 0, 1, 145, 197, 110, 108, 101, 102, 2, 106, 195, 161,
+			116, 115, 122, 195, 179, 0, 1, 182, 195, 108, 188, 195, 122, 115, 110, 110, 101, 98, 2, 106, 101, 108, 109, 101, 122, 0, 4, 3, 47, 12,
+			0, 1, 101, 122, 101, 121, 108, 101, 104, 2, 114, 197, 145, 108, 0, 1, 122, 115, 101, 114, 101, 107, 2, 197, 177, 122, 0, 1, 169, 195,
+			122, 115, 2, 114, 97, 110, 99, 115, 195, 173, 114, 0, 103, 121, 3, 47, 12, 79, 0, 114, 3, 47, 52, 0, 4, 115, 2, 195, 161, 3,
+			76, 12, 0, 115, 2, 195, 169, 0, 4, 106, 3, 80, 12, 0, 121, 0, 121, 106, 0, 115, 122, 1, 101, 109, 2, 101, 116, 3, 119, 12,
+			0, 7, 6, 116, 121, 0, 1, 110, 101, 122, 115, 100, 110, 105, 109, 3, 47, 37, 0, 2, 97, 114, 100, 3, 47, 57, 0, 7, 6, 195,
+			161, 0, 3, 114, 0, 105, 103, 1, 21, 2, 32, 14, 128, 192, 131, 3, 114, 37, 81, 0, 116, 195, 179, 108, 1, 21, 2, 32, 14, 128,
+			192, 132, 3, 114, 47, 115, 55, 0, 110, 97, 107, 1, 21, 2, 32, 14, 128, 192, 132, 3, 114, 50, 108, 49, 0, 114, 97, 1, 21, 2,
+			32, 14, 128, 192, 131, 3, 114, 52, 108, 0, 98, 97, 110, 1, 21, 2, 32, 14, 128, 192, 132, 3, 114, 71, 108, 50, 0, 7, 6, 195,
+			169, 0, 3, 113, 0, 105, 2, 195, 169, 3, 113, 12, 112, 0, 105, 103, 1, 21, 2, 32, 14, 128, 192, 131, 3, 113, 37, 81, 0, 116,
+			197, 145, 108, 1, 21, 2, 32, 14, 128, 192, 132, 3, 113, 47, 118, 55, 0, 110, 101, 107, 1, 21, 2, 32, 14, 128, 192, 132, 3, 113,
+			50, 109, 49, 0, 114, 101, 1, 21, 2, 32, 14, 128, 192, 131, 3, 113, 52, 109, 0, 98, 101, 110, 1, 21, 2, 32, 14, 128, 192, 132,
+			3, 113, 71, 109, 50, 0, 104, 115, 195, 169, 103, 3, 113, 91, 113, 81, 0, 104, 115, 195, 169, 103, 103, 3, 113, 91, 113, 81, 12, 0,
+			7, 6, 195, 171, 0, 3, 110, 0, 7, 6, 195, 173, 0, 4, 1, 116, 2, 122, 101, 110, 3, 37, 0, 1, 116, 2, 122, 101, 115, 0,
+			1, 116, 2, 122, 101, 116, 0, 1, 118, 2, 122, 101, 110, 0, 1, 118, 2, 122, 195, 169, 114, 101, 0, 1, 122, 115, 2, 118, 97, 116,
+			110, 0, 1, 122, 115, 2, 118, 97, 116, 195, 161, 115, 0, 1, 122, 115, 2, 118, 101, 0, 8, 116, 2, 122, 195, 188, 107, 0, 8, 118,
+			2, 122, 105, 0, 8, 122, 115, 2, 110, 195, 169, 115, 115, 122, 0, 8, 122, 115, 2, 110, 195, 169, 115, 122, 0, 8, 122, 115, 2, 118,
+			97, 116, 116, 97, 107, 0, 8, 122, 115, 2, 118, 97, 116, 116, 195, 161, 107, 107, 0, 8, 122, 115, 2, 118, 97, 116, 195, 179, 0, 8,
+			122, 115, 103, 101, 109, 2, 118, 97, 116, 116, 97, 0, 116, 115, 122, 1, 100, 97, 98, 97, 122, 115, 3, 37, 119, 12, 0, 4, 3, 112,
+			0, 1, 116, 2, 122, 101, 115, 122, 0, 1, 118, 2, 122, 101, 110, 101, 114, 0, 1, 122, 115, 2, 118, 101, 108, 0, 1, 122, 115, 2,
+			118, 101, 109, 101, 108, 0, 1, 122, 115, 2, 118, 101, 109, 195, 169, 115, 122, 116, 0, 1, 122, 115, 2, 118, 101, 114, 101, 0, 1, 122,
+			115, 2, 118, 101, 114, 195, 169, 0, 1, 122, 115, 2, 118, 101, 114, 197, 145, 0, 1, 122, 115, 2, 118, 101, 118, 197, 145, 0, 1, 122,
+			115, 115, 101, 99, 101, 114, 2, 118, 101, 0, 1, 122, 115, 115, 101, 114, 103, 97, 2, 118, 0, 1, 122, 115, 115, 101, 114, 103, 111, 114,
+			112, 2, 118, 101, 0, 1, 122, 115, 115, 101, 114, 112, 120, 101, 2, 118, 0, 8, 118, 2, 122, 105, 195, 179, 0, 116, 115, 3, 112, 76,
+			12, 0, 116, 115, 100, 3, 112, 76, 72, 0, 116, 115, 122, 1, 122, 115, 101, 118, 3, 112, 119, 12, 0, 7, 6, 195, 179, 0, 3, 115,
+			0, 7, 6, 195, 182, 0, 3, 110, 0, 7, 6, 195, 186, 0, 4, 1, 104, 2, 103, 111, 109, 3, 40, 0, 1, 104, 2, 115, 122, 97,
+			110, 0, 1, 104, 2, 115, 122, 97, 115, 0, 1, 104, 2, 115, 122, 97, 116, 0, 8, 104, 2, 103, 103, 121, 0, 8, 104, 2, 103, 111,
+			99, 115, 0, 8, 104, 2, 103, 121, 0, 4, 3, 116, 0, 1, 104, 2, 115, 122, 97, 110, 110, 121, 0, 7, 6, 195, 188, 0, 3, 111,
+			0, 116, 116, 2, 18, 66, 3, 111, 47, 0, 116, 116, 3, 111, 47, 12, 0, 116, 116, 114, 3, 111, 47, 52, 0, 116, 116, 98, 3, 111,
+			47, 71, 0, 116, 116, 121, 2, 18, 66, 3, 111, 80, 0, 116, 116, 121, 3, 111, 80, 12, 0, 116, 116, 121, 114, 3, 111, 80, 52, 0,
+			116, 116, 121, 98, 3, 111, 80, 71, 0, 7, 6, 197, 145, 0, 3, 118, 0, 7, 6, 197, 177, 0, 4, 1, 116, 2, 122, 105, 106, 195,
+			161, 116, 195, 169, 107, 3, 111, 0, 8, 116, 2, 110, 106, 195, 182, 110, 0, 8, 116, 2, 110, 195, 169, 115, 0, 3, 117, 0, 7, 6,
+			97, 0, 8, 2, 32, 3, 2, 108, 0, 108, 1, 45, 32, 48, 48, 15, 2, 32, 3, 88, 108, 55, 0, 3, 108, 0, 108, 1, 45, 32,
+			48, 48, 48, 2, 32, 3, 108, 55, 0, 104, 104, 111, 122, 3, 108, 107, 39, 88, 0, 7, 6, 98, 0, 4, 1, 45, 98, 3, 0, 1,
+			45, 98, 98, 3, 0, 4, 3, 71, 0, 98, 2, 18, 66, 0, 98, 2, 45, 18, 66, 0, 4, 2, 45, 98, 3, 71, 12, 0, 98, 0,
+			98, 2, 45, 98, 0, 105, 122, 2, 17, 65, 3, 71, 37, 88, 4, 0, 98, 114, 3, 71, 52, 0, 98, 106, 3, 71, 57, 0, 97, 110,
+			1, 21, 2, 32, 14, 128, 192, 131, 3, 71, 108, 50, 0, 97, 116, 116, 104, 105, 195, 161, 110, 121, 8, 3, 71, 108, 80, 12, 114, 67,
+			37, 0, 101, 110, 1, 21, 2, 32, 14, 128, 128, 131, 3, 71, 109, 50, 0, 105, 101, 100, 101, 114, 109, 101, 105, 101, 114, 5, 1, 3,
+			71, 112, 72, 109, 52, 65, 114, 57, 109, 52, 0, 7, 6, 99, 0, 4, 1, 45, 99, 3, 0, 4, 1, 45, 99, 99, 3, 0, 4, 99,
+			115, 1, 45, 115, 99, 3, 0, 4, 99, 115, 1, 45, 115, 99, 99, 3, 0, 4, 115, 1, 45, 99, 3, 0, 4, 115, 1, 45, 115, 99,
+			3, 0, 115, 1, 45, 115, 99, 99, 3, 0, 107, 5, 1, 8, 111, 116, 115, 2, 104, 111, 108, 109, 3, 49, 0, 4, 99, 115, 1, 45,
+			99, 99, 3, 76, 0, 99, 115, 2, 18, 66, 0, 99, 115, 2, 45, 18, 66, 0, 115, 0, 115, 1, 45, 99, 99, 0, 115, 1, 105, 118,
+			97, 107, 2, 122, 0, 115, 1, 105, 118, 97, 107, 2, 122, 195, 161, 116, 111, 110, 121, 0, 115, 1, 105, 118, 100, 110, 101, 122, 115, 2,
+			122, 97, 98, 0, 115, 1, 108, 117, 107, 2, 122, 101, 110, 0, 115, 1, 108, 117, 107, 2, 122, 195, 182, 114, 103, 0, 115, 1, 108, 182,
+			195, 109, 188, 195, 121, 103, 2, 122, 115, 0, 115, 1, 110, 105, 108, 105, 98, 2, 122, 195, 182, 114, 0, 115, 1, 110, 105, 108, 105, 107,
+			2, 122, 195, 182, 114, 0, 115, 1, 110, 161, 195, 108, 122, 115, 111, 114, 111, 2, 111, 114, 0, 115, 1, 110, 161, 195, 116, 2, 105, 0,
+			115, 1, 110, 161, 195, 116, 2, 105, 99, 115, 0, 115, 1, 110, 161, 195, 116, 105, 116, 0, 115, 1, 110, 161, 195, 116, 161, 195, 115, 2,
+			97, 112, 0, 115, 1, 111, 112, 97, 107, 2, 122, 195, 161, 114, 0, 115, 1, 114, 169, 195, 2, 195, 173, 112, 116, 101, 0, 115, 1, 117,
+			112, 97, 112, 0, 115, 1, 161, 195, 107, 114, 97, 98, 2, 122, 101, 110, 0, 115, 1, 161, 195, 112, 97, 108, 97, 107, 2, 122, 111, 110,
+			0, 115, 1, 161, 195, 116, 114, 97, 107, 2, 122, 195, 161, 112, 111, 0, 115, 8, 108, 111, 112, 97, 107, 0, 4, 99, 115, 3, 76, 12,
+			0, 99, 115, 2, 45, 99, 99, 115, 0, 99, 115, 2, 45, 99, 115, 0, 115, 1, 161, 195, 114, 97, 98, 2, 195, 161, 103, 116, 97, 0,
+			115, 2, 45, 99, 99, 115, 0, 115, 2, 45, 99, 115, 0, 99, 115, 114, 3, 76, 52, 0, 115, 122, 1, 161, 195, 112, 97, 108, 97, 107,
+			2, 101, 110, 3, 76, 88, 0, 4, 99, 115, 2, 45, 115, 122, 3, 76, 89, 0, 115, 2, 45, 115, 122, 0, 115, 122, 115, 3, 76, 90,
+			0, 4, 3, 119, 0, 1, 97, 108, 97, 109, 2, 99, 115, 0, 1, 97, 108, 97, 109, 2, 115, 195, 161, 0, 1, 97, 108, 97, 109, 2,
+			115, 195, 188, 108, 0, 1, 97, 114, 116, 97, 109, 2, 115, 111, 114, 0, 1, 97, 122, 97, 108, 0, 1, 101, 114, 101, 112, 2, 99, 115,
+			0, 1, 101, 114, 101, 112, 2, 115, 195, 188, 116, 0, 1, 101, 114, 116, 101, 107, 2, 99, 115, 0, 1, 101, 114, 116, 101, 107, 2, 115,
+			111, 0, 1, 108, 105, 102, 2, 99, 115, 105, 122, 0, 1, 108, 111, 112, 2, 115, 111, 0, 1, 108, 111, 121, 110, 2, 99, 115, 97, 116,
+			0, 1, 108, 111, 121, 110, 2, 115, 97, 114, 107, 0, 1, 108, 111, 121, 110, 2, 115, 101, 98, 0, 1, 108, 111, 121, 110, 2, 115, 101,
+			106, 0, 1, 108, 111, 121, 110, 2, 115, 117, 103, 0, 1, 110, 97, 104, 117, 115, 0, 1, 110, 101, 99, 105, 108, 2, 115, 195, 169, 114,
+			116, 195, 169, 115, 0, 1, 110, 101, 108, 105, 107, 2, 99, 115, 97, 116, 111, 114, 110, 0, 1, 110, 101, 108, 105, 107, 2, 115, 99, 104,
+			105, 108, 108, 0, 1, 110, 101, 108, 105, 107, 2, 115, 195, 161, 118, 0, 1, 110, 101, 121, 103, 101, 102, 0, 1, 110, 101, 121, 110, 173,
+			195, 2, 115, 195, 169, 103, 0, 1, 110, 105, 109, 114, 97, 104, 2, 115, 111, 114, 0, 1, 110, 105, 114, 101, 103, 0, 1, 110, 111, 98,
+			97, 114, 97, 103, 2, 115, 101, 114, 0, 1, 110, 111, 103, 114, 97, 121, 110, 2, 99, 115, 0, 1, 110, 111, 106, 102, 105, 2, 99, 115,
+			97, 112, 0, 1, 110, 111, 110, 97, 116, 2, 99, 115, 0, 1, 110, 111, 114, 97, 118, 100, 117, 2, 115, 101, 114, 0, 1, 110, 161, 195,
+			108, 2, 99, 115, 0, 1, 110, 161, 195, 108, 2, 115, 101, 98, 0, 1, 110, 161, 195, 108, 2, 115, 111, 114, 0, 1, 110, 161, 195, 116,
+			2, 99, 115, 0, 1, 110, 161, 195, 116, 2, 115, 0, 1, 110, 182, 195, 108, 188, 195, 107, 2, 115, 195, 169, 0, 1, 111, 98, 114, 161,
+			195, 2, 99, 115, 195, 186, 99, 115, 0, 1, 111, 98, 114, 161, 195, 2, 115, 117, 100, 0, 1, 111, 122, 115, 2, 115, 101, 103, 195, 169,
+			108, 121, 0, 1, 114, 97, 2, 99, 115, 111, 110, 0, 1, 114, 97, 100, 117, 107, 2, 115, 111, 114, 111, 122, 97, 116, 0, 1, 114, 97,
+			104, 2, 99, 115, 101, 108, 101, 107, 0, 1, 114, 97, 104, 2, 99, 115, 111, 112, 111, 114, 116, 0, 1, 114, 97, 107, 2, 115, 111, 114,
+			0, 1, 114, 101, 110, 2, 115, 116, 195, 179, 108, 97, 0, 1, 114, 101, 112, 106, 106, 117, 2, 99, 115, 0, 1, 114, 111, 112, 2, 115,
+			122, 0, 1, 114, 111, 112, 2, 115, 195, 169, 0, 1, 114, 169, 195, 2, 115, 111, 100, 114, 0, 1, 114, 169, 195, 98, 2, 99, 115, 117,
+			116, 0, 1, 114, 169, 195, 98, 2, 115, 195, 188, 118, 101, 103, 0, 1, 114, 169, 195, 100, 105, 108, 2, 99, 115, 0, 1, 117, 100, 114,
+			161, 195, 112, 2, 99, 115, 0, 1, 161, 195, 110, 114, 111, 116, 2, 115, 111, 114, 0, 1, 161, 195, 112, 2, 115, 195, 179, 0, 1, 169,
+			195, 116, 105, 110, 97, 122, 115, 2, 99, 115, 0, 1, 179, 195, 98, 114, 161, 195, 2, 99, 115, 195, 186, 99, 115, 0, 1, 179, 195, 104,
+			111, 98, 2, 115, 97, 112, 107, 0, 1, 179, 195, 104, 111, 98, 2, 115, 105, 112, 107, 0, 1, 179, 195, 108, 97, 116, 114, 97, 109, 0,
+			1, 179, 195, 114, 97, 100, 2, 99, 115, 0, 1, 179, 195, 114, 107, 111, 112, 2, 99, 115, 0, 1, 179, 195, 114, 107, 111, 112, 2, 115,
+			195, 161, 0, 8, 97, 105, 112, 2, 99, 115, 97, 114, 110, 111, 107, 0, 8, 97, 108, 97, 109, 2, 115, 105, 118, 195, 173, 116, 0, 8,
+			101, 103, 101, 106, 0, 8, 108, 105, 102, 2, 99, 115, 195, 173, 107, 0, 8, 108, 111, 112, 2, 99, 115, 97, 116, 0, 8, 110, 97, 98,
+			97, 108, 0, 8, 110, 101, 106, 169, 195, 107, 0, 8, 110, 101, 108, 105, 107, 2, 99, 115, 111, 109, 195, 179, 0, 8, 110, 101, 108, 105,
+			107, 2, 99, 115, 195, 182, 118, 0, 8, 110, 105, 114, 112, 2, 115, 195, 169, 103, 0, 8, 110, 111, 103, 114, 105, 118, 2, 115, 195, 161,
+			103, 0, 8, 110, 111, 106, 186, 195, 0, 8, 110, 169, 195, 109, 108, 101, 2, 115, 195, 169, 103, 0, 8, 114, 97, 2, 115, 101, 98, 0,
+			8, 114, 97, 2, 115, 195, 169, 114, 195, 188, 108, 0, 8, 114, 101, 110, 2, 115, 116, 195, 179, 108, 195, 161, 0, 8, 114, 169, 195, 2,
+			99, 115, 0, 8, 114, 169, 195, 2, 115, 97, 108, 97, 107, 0, 8, 114, 169, 195, 2, 115, 97, 114, 117, 0, 8, 114, 169, 195, 2, 115,
+			97, 115, 0, 8, 114, 169, 195, 2, 115, 101, 108, 121, 0, 8, 114, 169, 195, 2, 115, 105, 115, 97, 107, 0, 8, 114, 169, 195, 2, 115,
+			195, 173, 112, 0, 8, 117, 114, 117, 107, 0, 8, 161, 195, 107, 97, 2, 115, 195, 182, 118, 0, 8, 161, 195, 107, 161, 195, 2, 115, 195,
+			182, 118, 0, 8, 161, 195, 114, 2, 115, 195, 161, 103, 0, 8, 169, 195, 108, 106, 101, 102, 0, 8, 179, 195, 104, 111, 98, 2, 115, 122,
+			0, 8, 179, 195, 107, 2, 99, 115, 111, 109, 195, 179, 0, 8, 179, 195, 108, 97, 112, 2, 115, 195, 161, 103, 0, 99, 1, 101, 104, 2,
+			115, 97, 106, 116, 0, 99, 2, 18, 66, 0, 99, 2, 45, 18, 66, 0, 99, 2, 45, 99, 99, 115, 0, 99, 2, 45, 99, 115, 0, 99,
+			8, 105, 118, 2, 115, 111, 114, 0, 122, 1, 19, 0, 122, 8, 110, 105, 2, 195, 169, 100, 0, 4, 2, 45, 99, 3, 119, 12, 0, 99,
+			0, 99, 2, 45, 99, 0, 99, 114, 3, 119, 52, 0, 4, 2, 45, 99, 115, 3, 119, 76, 0, 99, 115, 1, 110, 101, 99, 105, 108, 0,
+			4, 99, 115, 122, 3, 119, 89, 0, 99, 115, 122, 0, 115, 122, 0, 115, 8, 179, 195, 104, 111, 98, 3, 119, 91, 0, 115, 111, 114, 8,
+			114, 97, 104, 3, 119, 91, 39, 52, 0, 7, 6, 100, 0, 4, 1, 45, 100, 3, 0, 4, 1, 45, 100, 100, 3, 0, 1, 114, 111, 107,
+			101, 114, 2, 115, 101, 98, 101, 115, 115, 195, 169, 103, 3, 0, 116, 1, 122, 101, 107, 3, 47, 0, 4, 116, 3, 47, 12, 0, 116, 2,
+			115, 122, 0, 116, 116, 0, 116, 116, 1, 101, 108, 108, 188, 195, 102, 2, 195, 169, 0, 116, 115, 122, 195, 169, 3, 47, 12, 89, 113, 0,
+			110, 121, 1, 110, 105, 109, 3, 67, 0, 4, 3, 72, 0, 1, 97, 98, 97, 122, 115, 2, 106, 101, 103, 0, 1, 97, 98, 97, 122, 115,
+			2, 115, 97, 106, 116, 0, 1, 97, 98, 97, 122, 115, 2, 115, 116, 114, 97, 110, 100, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 101,
+			108, 108, 101, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 101, 109, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 101, 110, 116, 0, 1,
+			97, 98, 97, 122, 115, 2, 115, 122, 101, 114, 101, 108, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 111, 102, 116, 0, 1, 97, 98, 97,
+			122, 115, 2, 115, 122, 111, 109, 98, 97, 116, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 195, 161, 106, 195, 186, 0, 1, 97, 98, 97,
+			122, 115, 2, 115, 122, 195, 161, 108, 108, 195, 161, 115, 0, 1, 97, 98, 97, 122, 115, 2, 115, 122, 195, 179, 108, 0, 1, 97, 99, 110,
+			105, 109, 114, 97, 104, 2, 115, 122, 101, 0, 1, 97, 104, 2, 106, 195, 161, 114, 97, 116, 0, 1, 97, 104, 2, 115, 101, 103, 195, 169,
+			100, 0, 1, 97, 104, 2, 115, 111, 114, 0, 1, 97, 104, 2, 115, 122, 101, 114, 116, 195, 161, 0, 1, 97, 104, 2, 115, 122, 105, 110,
+			0, 1, 97, 104, 145, 197, 102, 2, 115, 101, 103, 195, 169, 100, 0, 1, 97, 109, 114, 97, 104, 2, 115, 111, 114, 0, 1, 97, 109, 114,
+			97, 104, 2, 115, 122, 105, 110, 116, 0, 1, 97, 109, 114, 97, 104, 2, 115, 122, 195, 161, 110, 100, 195, 169, 107, 0, 1, 97, 109, 114,
+			97, 104, 2, 115, 122, 195, 161, 122, 0, 1, 97, 112, 2, 115, 111, 114, 0, 1, 97, 112, 2, 115, 122, 101, 114, 197, 177, 0, 1, 97,
+			112, 2, 115, 122, 111, 109, 115, 122, 195, 169, 0, 1, 97, 112, 2, 115, 122, 197, 145, 110, 121, 0, 1, 97, 118, 2, 115, 122, 101, 100,
+			101, 114, 0, 1, 97, 118, 2, 115, 122, 101, 103, 102, 0, 1, 97, 118, 2, 115, 122, 101, 114, 197, 177, 0, 1, 97, 118, 2, 115, 122,
+			105, 108, 118, 0, 1, 97, 118, 2, 115, 122, 116, 114, 195, 161, 106, 107, 0, 1, 97, 118, 2, 115, 122, 195, 161, 108, 108, 195, 173, 0,
+			1, 97, 118, 2, 115, 122, 195, 179, 106, 0, 1, 97, 118, 2, 115, 122, 197, 145, 0, 1, 97, 118, 2, 115, 195, 161, 102, 114, 0, 1,
+			97, 118, 2, 116, 121, 195, 186, 107, 0, 1, 97, 122, 161, 195, 122, 115, 2, 115, 122, 101, 109, 108, 101, 0, 1, 97, 122, 161, 195, 122,
+			115, 2, 115, 122, 105, 110, 116, 0, 1, 97, 122, 161, 195, 122, 115, 2, 115, 122, 195, 161, 109, 0, 1, 101, 101, 119, 116, 2, 115, 97,
+			112, 107, 0, 1, 101, 101, 119, 116, 2, 115, 122, 195, 182, 118, 101, 116, 0, 1, 101, 114, 122, 101, 2, 115, 101, 103, 195, 169, 0, 1,
+			101, 114, 122, 101, 2, 115, 122, 101, 109, 0, 1, 101, 114, 122, 101, 2, 115, 122, 101, 114, 116, 101, 0, 1, 101, 114, 122, 101, 2, 115,
+			122, 105, 110, 0, 1, 101, 114, 122, 101, 2, 115, 122, 195, 161, 0, 1, 101, 114, 122, 101, 2, 122, 195, 161, 115, 122, 108, 0, 1, 101,
+			121, 103, 101, 2, 115, 122, 195, 161, 109, 0, 1, 101, 121, 103, 101, 110, 2, 115, 122, 195, 161, 122, 0, 1, 101, 121, 103, 101, 110, 2,
+			115, 122, 195, 169, 108, 0, 1, 101, 122, 105, 116, 2, 115, 122, 101, 100, 0, 1, 101, 122, 105, 116, 2, 115, 122, 195, 161, 109, 0, 1,
+			101, 122, 105, 116, 2, 115, 122, 195, 161, 122, 0, 1, 103, 97, 114, 97, 109, 115, 2, 115, 122, 195, 173, 110, 0, 1, 105, 112, 105, 108,
+			2, 115, 122, 105, 110, 116, 0, 1, 105, 118, 182, 195, 114, 2, 115, 111, 114, 111, 122, 0, 1, 105, 118, 182, 195, 114, 2, 122, 195, 161,
+			114, 0, 1, 105, 118, 182, 195, 114, 2, 122, 195, 161, 114, 108, 97, 116, 0, 1, 106, 97, 102, 2, 116, 121, 195, 186, 107, 0, 1, 108,
+			111, 98, 111, 107, 2, 115, 122, 195, 182, 103, 0, 1, 108, 111, 104, 2, 115, 122, 111, 110, 100, 0, 1, 108, 111, 104, 2, 115, 122, 112,
+			117, 116, 110, 121, 105, 107, 0, 1, 108, 111, 104, 2, 115, 195, 188, 0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 103, 195, 169, 108, 121,
+			0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 114, 107, 101, 0, 1, 108, 182, 195, 102, 2, 115, 122, 101, 114, 122, 195, 169, 0, 1, 108,
+			182, 195, 102, 2, 115, 122, 101, 114, 197, 177, 0, 1, 108, 182, 195, 102, 2, 115, 122, 111, 114, 111, 115, 0, 1, 108, 182, 195, 102, 2,
+			115, 122, 195, 173, 110, 101, 107, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 173, 110, 195, 169, 0, 1, 108, 182, 195, 102, 2, 115, 122,
+			195, 173, 110, 197, 177, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 182, 107, 197, 145, 0, 1, 108, 182, 195, 102, 2, 115, 122, 195, 188,
+			114, 107, 0, 1, 108, 182, 195, 102, 2, 115, 195, 161, 110, 99, 0, 1, 108, 182, 195, 102, 2, 115, 195, 161, 118, 0, 1, 108, 182, 195,
+			122, 2, 115, 97, 112, 107, 0, 1, 108, 182, 195, 122, 2, 115, 122, 101, 109, 0, 1, 108, 182, 195, 122, 2, 115, 122, 195, 173, 110, 0,
+			1, 108, 182, 195, 122, 2, 115, 195, 161, 118, 0, 1, 110, 97, 108, 97, 107, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 110, 97, 108,
+			97, 107, 2, 115, 122, 101, 114, 0, 1, 110, 97, 108, 97, 107, 2, 115, 122, 101, 114, 101, 112, 0, 1, 110, 97, 108, 116, 101, 104, 115,
+			2, 115, 122, 105, 103, 101, 0, 1, 110, 97, 114, 116, 115, 2, 115, 122, 101, 116, 116, 0, 1, 110, 97, 114, 116, 115, 2, 115, 122, 101,
+			122, 111, 110, 0, 1, 110, 101, 114, 2, 115, 122, 97, 0, 1, 110, 101, 114, 2, 115, 122, 101, 114, 101, 116, 197, 145, 0, 1, 110, 101,
+			114, 2, 122, 97, 118, 97, 114, 0, 1, 110, 101, 115, 99, 2, 115, 195, 169, 114, 116, 195, 169, 115, 0, 1, 110, 105, 109, 2, 106, 111,
+			98, 98, 97, 110, 0, 1, 110, 111, 107, 97, 118, 2, 115, 122, 0, 1, 110, 182, 195, 114, 145, 197, 98, 2, 115, 122, 101, 0, 1, 111,
+			115, 114, 111, 98, 2, 115, 122, 0, 1, 111, 115, 161, 195, 109, 2, 115, 111, 114, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 97, 107,
+			195, 161, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 97, 118, 97, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 101, 114, 101, 112, 0,
+			1, 111, 115, 161, 195, 109, 2, 115, 122, 105, 110, 0, 1, 111, 115, 161, 195, 109, 2, 115, 122, 195, 188, 108, 195, 182, 116, 116, 0, 1,
+			114, 97, 100, 110, 97, 116, 115, 2, 106, 101, 103, 121, 0, 1, 114, 97, 107, 2, 115, 117, 0, 1, 114, 97, 107, 2, 115, 122, 101, 114,
+			197, 177, 0, 1, 114, 97, 107, 2, 115, 122, 195, 173, 106, 0, 1, 114, 111, 102, 2, 106, 195, 161, 110, 111, 115, 0, 1, 114, 111, 104,
+			2, 115, 122, 195, 169, 107, 0, 1, 114, 111, 104, 2, 115, 122, 195, 173, 0, 1, 114, 111, 106, 102, 2, 115, 122, 101, 114, 197, 177, 0,
+			1, 114, 111, 107, 101, 114, 2, 115, 101, 98, 101, 115, 115, 195, 169, 103, 0, 1, 114, 111, 107, 101, 114, 2, 115, 117, 103, 195, 161, 114,
+			0, 1, 114, 111, 107, 101, 114, 2, 115, 122, 101, 114, 0, 1, 114, 111, 107, 101, 114, 2, 115, 122, 101, 114, 107, 101, 122, 0, 1, 114,
+			111, 107, 101, 114, 2, 115, 122, 101, 122, 111, 0, 1, 114, 111, 107, 101, 114, 2, 115, 122, 105, 110, 116, 0, 1, 114, 111, 107, 107, 97,
+			2, 106, 195, 161, 116, 115, 122, 0, 1, 114, 161, 195, 105, 108, 105, 109, 2, 115, 122, 111, 114, 0, 1, 114, 161, 195, 122, 97, 104, 2,
+			106, 195, 161, 116, 195, 169, 107, 0, 1, 114, 161, 195, 122, 110, 97, 109, 2, 115, 122, 111, 98, 0, 1, 114, 169, 195, 116, 2, 115, 122,
+			111, 107, 110, 121, 0, 1, 114, 169, 195, 116, 2, 115, 122, 195, 173, 106, 0, 1, 114, 169, 195, 116, 2, 115, 195, 169, 114, 195, 188, 108,
+			0, 1, 145, 197, 108, 101, 2, 115, 122, 101, 114, 118, 0, 1, 145, 197, 114, 101, 2, 115, 122, 101, 114, 197, 177, 0, 1, 145, 197, 115,
+			99, 2, 115, 122, 101, 114, 197, 177, 0, 1, 161, 195, 107, 114, 161, 195, 2, 115, 122, 101, 114, 197, 177, 0, 1, 161, 195, 108, 97, 115,
+			99, 2, 106, 111, 103, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115, 101, 103, 195, 173, 116, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115,
+			122, 101, 114, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115, 122, 101, 114, 101, 116, 197, 145, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115,
+			122, 111, 99, 105, 111, 108, 0, 1, 161, 195, 108, 97, 115, 99, 2, 115, 122, 116, 111, 114, 0, 1, 161, 195, 110, 0, 1, 161, 195, 110,
+			2, 115, 117, 104, 111, 103, 0, 1, 161, 195, 110, 2, 115, 122, 101, 114, 100, 0, 1, 161, 195, 110, 2, 115, 122, 105, 108, 195, 161, 110,
+			0, 1, 161, 195, 110, 2, 115, 122, 195, 169, 107, 0, 1, 161, 195, 110, 2, 115, 122, 195, 182, 118, 101, 0, 1, 161, 195, 110, 2, 115,
+			122, 197, 145, 110, 121, 101, 0, 1, 161, 195, 110, 2, 115, 195, 173, 112, 0, 1, 161, 195, 110, 114, 101, 104, 2, 115, 122, 0, 1, 161,
+			195, 112, 114, 161, 195, 2, 115, 195, 161, 118, 0, 1, 161, 195, 112, 114, 161, 195, 2, 115, 195, 161, 118, 0, 1, 161, 195, 112, 114, 161,
+			195, 2, 122, 195, 161, 115, 122, 108, 195, 179, 0, 1, 161, 195, 114, 161, 195, 121, 110, 2, 115, 122, 101, 114, 101, 0, 1, 161, 195, 118,
+			2, 115, 122, 195, 179, 122, 97, 0, 1, 161, 195, 122, 115, 105, 108, 97, 112, 2, 115, 111, 114, 0, 1, 169, 195, 98, 101, 2, 106, 101,
+			103, 0, 1, 169, 195, 108, 101, 115, 99, 2, 115, 111, 0, 1, 169, 195, 118, 2, 106, 101, 103, 103, 121, 0, 1, 169, 195, 118, 2, 106,
+			101, 103, 121, 0, 1, 169, 195, 118, 110, 111, 104, 2, 115, 101, 114, 101, 103, 0, 1, 169, 195, 118, 115, 2, 122, 115, 101, 98, 0, 1,
+			169, 195, 118, 121, 103, 188, 195, 2, 106, 101, 108, 0, 1, 169, 195, 122, 115, 101, 98, 2, 106, 97, 118, 195, 173, 116, 0, 1, 169, 195,
+			122, 115, 101, 98, 2, 106, 101, 108, 0, 1, 169, 195, 122, 115, 101, 98, 2, 115, 101, 98, 101, 115, 115, 195, 169, 103, 0, 1, 169, 195,
+			122, 115, 101, 98, 2, 115, 116, 195, 173, 108, 117, 115, 0, 1, 169, 195, 122, 115, 101, 98, 2, 115, 122, 105, 110, 0, 1, 169, 195, 122,
+			115, 101, 98, 2, 122, 97, 103, 121, 0, 1, 169, 195, 122, 115, 109, 111, 122, 115, 2, 106, 111, 103, 0, 1, 169, 195, 122, 115, 109, 111,
+			122, 115, 2, 115, 111, 114, 0, 1, 173, 195, 104, 2, 115, 122, 101, 114, 0, 1, 173, 195, 104, 2, 115, 122, 101, 114, 107, 101, 122, 101,
+			116, 0, 1, 179, 195, 104, 2, 115, 122, 197, 145, 114, 0, 1, 179, 195, 106, 2, 115, 122, 105, 118, 195, 161, 114, 0, 1, 179, 195, 107,
+			2, 106, 101, 108, 0, 1, 179, 195, 107, 2, 115, 111, 114, 0, 1, 179, 195, 107, 2, 115, 122, 101, 114, 107, 101, 0, 1, 179, 195, 107,
+			2, 115, 122, 195, 179, 0, 1, 179, 195, 107, 2, 115, 122, 195, 182, 118, 101, 0, 1, 179, 195, 109, 2, 106, 97, 118, 97, 115, 108, 97,
+			116, 0, 1, 179, 195, 109, 2, 115, 111, 114, 0, 1, 179, 195, 114, 112, 97, 2, 115, 122, 0, 1, 179, 195, 116, 97, 107, 2, 115, 117,
+			103, 195, 161, 114, 0, 1, 179, 195, 116, 117, 2, 106, 101, 108, 195, 182, 108, 0, 1, 179, 195, 116, 117, 2, 115, 122, 101, 114, 118, 0,
+			1, 179, 195, 122, 105, 112, 101, 2, 115, 122, 101, 114, 0, 1, 179, 195, 122, 105, 112, 101, 2, 115, 122, 101, 114, 101, 112, 0, 1, 182,
+			195, 107, 2, 115, 122, 105, 114, 195, 169, 110, 0, 1, 182, 195, 107, 2, 115, 122, 105, 116, 195, 161, 108, 195, 161, 115, 0, 1, 182, 195,
+			116, 182, 195, 2, 115, 122, 195, 188, 108, 195, 182, 0, 1, 186, 195, 108, 2, 122, 115, 195, 173, 114, 0, 1, 186, 195, 114, 2, 115, 122,
+			101, 114, 197, 177, 0, 8, 97, 104, 2, 106, 195, 161, 116, 195, 169, 107, 0, 8, 97, 104, 2, 115, 122, 101, 114, 0, 8, 97, 104, 2,
+			115, 122, 195, 161, 108, 108, 0, 8, 97, 109, 114, 97, 104, 2, 115, 122, 195, 188, 108, 0, 8, 97, 118, 2, 115, 122, 97, 103, 0, 8,
+			97, 118, 2, 115, 122, 97, 109, 0, 8, 97, 118, 2, 115, 122, 101, 114, 98, 0, 8, 97, 118, 2, 115, 122, 195, 161, 114, 110, 121, 0,
+			8, 103, 97, 114, 97, 109, 115, 2, 115, 122, 0, 8, 108, 111, 104, 2, 115, 97, 114, 108, 195, 179, 0, 8, 108, 182, 195, 102, 2, 115,
+			122, 101, 108, 108, 101, 0, 8, 108, 182, 195, 102, 2, 115, 122, 101, 114, 122, 0, 8, 108, 182, 195, 102, 2, 115, 122, 105, 103, 101, 116,
+			0, 8, 108, 182, 195, 102, 2, 115, 122, 117, 114, 111, 107, 0, 8, 108, 182, 195, 102, 2, 115, 122, 195, 173, 110, 0, 8, 108, 182, 195,
+			102, 2, 115, 122, 195, 188, 108, 116, 0, 8, 110, 101, 114, 2, 106, 101, 108, 0, 8, 110, 111, 103, 2, 115, 122, 101, 114, 0, 8, 114,
+			97, 107, 2, 115, 122, 195, 186, 114, 0, 8, 114, 111, 104, 2, 115, 122, 101, 107, 0, 8, 114, 161, 195, 105, 108, 105, 98, 2, 115, 122,
+			111, 0, 8, 114, 169, 195, 116, 2, 122, 115, 101, 98, 0, 8, 122, 188, 195, 107, 2, 115, 122, 101, 108, 108, 0, 8, 161, 195, 110, 2,
+			115, 122, 101, 103, 0, 8, 161, 195, 110, 2, 115, 195, 182, 118, 0, 8, 161, 195, 114, 2, 115, 195, 179, 122, 0, 8, 179, 195, 107, 2,
+			115, 122, 111, 98, 0, 8, 182, 195, 107, 2, 115, 122, 101, 114, 197, 177, 0, 8, 182, 195, 107, 2, 115, 122, 195, 188, 114, 107, 0, 8,
+			186, 195, 108, 2, 115, 122, 111, 107, 195, 161, 115, 0, 100, 1, 97, 104, 2, 32, 14, 128, 128, 130, 0, 100, 2, 18, 66, 0, 100, 2,
+			45, 18, 66, 0, 4, 2, 45, 100, 3, 72, 12, 0, 100, 0, 100, 1, 161, 195, 110, 0, 100, 2, 45, 100, 0, 111, 98, 101, 114, 109,
+			97, 110, 110, 3, 72, 39, 71, 12, 109, 52, 65, 108, 50, 0, 100, 114, 3, 72, 52, 0, 100, 98, 3, 72, 71, 0, 122, 1, 101, 101,
+			119, 116, 2, 97, 107, 3, 72, 88, 0, 4, 115, 122, 1, 97, 2, 195, 173, 3, 72, 89, 0, 115, 122, 1, 101, 101, 119, 116, 2, 111,
+			107, 0, 115, 122, 1, 110, 101, 114, 2, 101, 114, 105, 110, 116, 0, 115, 122, 1, 110, 101, 114, 116, 101, 110, 101, 109, 2, 101, 114, 197,
+			177, 0, 115, 122, 1, 169, 195, 0, 115, 122, 2, 97, 0, 115, 122, 2, 195, 161, 0, 115, 122, 8, 110, 101, 114, 2, 101, 114, 101, 116,
+			101, 116, 0, 115, 122, 8, 110, 101, 114, 116, 2, 101, 0, 195, 188, 104, 116, 197, 145, 108, 3, 72, 111, 47, 118, 55, 0, 195, 188, 104,
+			98, 101, 3, 72, 111, 71, 109, 0, 195, 188, 104, 118, 101, 108, 3, 72, 111, 84, 109, 55, 0, 105, 101, 115, 101, 108, 5, 1, 3, 72,
+			112, 88, 109, 55, 0, 4, 100, 122, 115, 2, 18, 66, 3, 75, 0, 100, 122, 115, 2, 45, 18, 66, 0, 4, 100, 122, 115, 1, 105, 114,
+			98, 2, 101, 108, 3, 75, 12, 0, 122, 115, 1, 111, 98, 109, 97, 107, 0, 4, 115, 1, 17, 67, 3, 76, 0, 115, 2, 17, 67, 0,
+			4, 115, 1, 17, 65, 2, 17, 65, 3, 76, 12, 0, 115, 1, 169, 195, 108, 101, 115, 99, 2, 195, 169, 103, 0, 116, 115, 0, 106, 1,
+			17, 67, 3, 79, 0, 4, 106, 3, 79, 12, 0, 106, 1, 17, 65, 2, 17, 65, 0, 4, 115, 122, 3, 119, 0, 115, 122, 1, 110, 101,
+			114, 2, 101, 114, 105, 110, 116, 101, 103, 114, 195, 161, 99, 105, 195, 179, 0, 115, 122, 2, 17, 67, 0, 115, 122, 8, 110, 111, 109, 2,
+			97, 0, 4, 115, 122, 1, 97, 2, 17, 65, 3, 119, 12, 0, 115, 122, 1, 101, 2, 17, 65, 0, 115, 122, 1, 111, 2, 17, 65, 0,
+			115, 122, 1, 179, 195, 0, 115, 122, 1, 182, 195, 116, 182, 195, 2, 195, 182, 114, 0, 115, 122, 2, 32, 14, 128, 128, 131, 0, 100, 122,
+			2, 18, 66, 3, 120, 0, 7, 6, 101, 0, 108, 1, 45, 32, 48, 48, 48, 2, 32, 3, 51, 109, 55, 0, 3, 109, 0, 108, 1, 45,
+			32, 48, 48, 48, 48, 48, 48, 2, 32, 3, 109, 55, 0, 103, 121, 101, 122, 115, 195, 169, 103, 3, 109, 79, 12, 109, 91, 91, 113, 81,
+			0, 103, 121, 101, 122, 115, 195, 169, 103, 103, 3, 109, 79, 12, 109, 91, 91, 113, 81, 12, 0, 104, 104, 101, 122, 8, 3, 109, 107, 109,
+			88, 0, 7, 6, 102, 0, 4, 3, 83, 0, 102, 1, 97, 2, 195, 169, 108, 0, 102, 1, 101, 2, 97, 106, 116, 0, 102, 1, 101, 2,
+			195, 169, 108, 0, 102, 2, 18, 66, 0, 102, 2, 45, 18, 66, 0, 102, 114, 3, 83, 52, 0, 102, 98, 3, 83, 71, 0, 195, 188, 104,
+			114, 101, 114, 5, 1, 3, 83, 117, 52, 109, 52, 0, 7, 6, 103, 0, 4, 1, 45, 103, 3, 0, 4, 121, 1, 45, 103, 3, 0, 4,
+			121, 1, 45, 103, 103, 3, 0, 121, 1, 45, 121, 103, 3, 0, 107, 3, 49, 12, 0, 104, 1, 169, 195, 2, 97, 106, 108, 97, 3, 49,
+			107, 0, 4, 103, 121, 1, 101, 109, 2, 18, 66, 3, 79, 0, 103, 121, 1, 101, 109, 2, 45, 18, 66, 0, 103, 121, 1, 101, 109, 2,
+			109, 97, 103, 0, 103, 121, 2, 18, 66, 0, 103, 121, 2, 45, 18, 66, 0, 4, 103, 121, 3, 79, 12, 0, 103, 121, 1, 101, 108, 101,
+			2, 101, 108, 0, 103, 121, 1, 101, 108, 101, 2, 195, 169, 0, 103, 121, 1, 101, 109, 2, 32, 14, 128, 128, 131, 0, 103, 121, 1, 101,
+			109, 2, 45, 103, 121, 0, 103, 121, 1, 101, 109, 2, 97, 115, 122, 0, 103, 121, 1, 101, 109, 2, 101, 108, 0, 103, 121, 1, 101, 109,
+			2, 101, 109, 0, 103, 121, 1, 101, 109, 2, 101, 115, 0, 103, 121, 1, 101, 109, 2, 101, 116, 0, 103, 121, 1, 101, 109, 2, 105, 108,
+			108, 0, 103, 121, 1, 101, 109, 2, 195, 173, 122, 0, 103, 121, 1, 101, 109, 2, 195, 182, 110, 116, 101, 0, 103, 121, 1, 101, 109, 2,
+			195, 188, 108, 116, 101, 116, 0, 103, 121, 8, 101, 109, 2, 101, 110, 32, 0, 103, 121, 106, 1, 111, 114, 2, 195, 169, 107, 0, 121, 2,
+			45, 103, 121, 0, 4, 103, 121, 114, 3, 79, 52, 0, 103, 121, 114, 1, 101, 109, 0, 4, 103, 121, 98, 3, 79, 71, 0, 103, 121, 98,
+			1, 101, 109, 0, 4, 3, 81, 0, 1, 97, 108, 97, 122, 115, 2, 103, 121, 97, 107, 111, 114, 0, 1, 97, 108, 97, 122, 115, 2, 103,
+			121, 195, 161, 114, 0, 1, 97, 108, 97, 122, 115, 2, 103, 121, 197, 177, 106, 116, 0, 1, 97, 108, 97, 122, 115, 103, 110, 97, 104, 2,
+			103, 121, 0, 1, 97, 108, 108, 105, 115, 99, 2, 103, 121, 0, 1, 97, 108, 116, 161, 195, 2, 103, 121, 0, 1, 97, 109, 2, 103, 121,
+			195, 161, 114, 0, 1, 97, 116, 2, 103, 121, 195, 188, 108, 0, 1, 97, 116, 2, 103, 121, 197, 177, 108, 0, 1, 97, 116, 103, 169, 195,
+			118, 2, 103, 121, 0, 1, 97, 121, 108, 179, 195, 104, 2, 103, 121, 0, 1, 97, 121, 108, 179, 195, 104, 2, 103, 121, 117, 108, 0, 1,
+			97, 121, 110, 97, 2, 103, 121, 0, 1, 97, 121, 110, 97, 2, 103, 121, 195, 161, 114, 0, 1, 97, 121, 110, 97, 2, 103, 121, 197, 145,
+			122, 0, 1, 97, 121, 110, 97, 2, 103, 121, 197, 177, 106, 116, 0, 1, 97, 121, 110, 97, 105, 100, 97, 104, 2, 103, 121, 195, 161, 114,
+			0, 1, 101, 100, 105, 2, 103, 121, 0, 1, 101, 103, 2, 103, 121, 195, 161, 114, 0, 1, 101, 108, 2, 103, 121, 0, 1, 101, 108, 101,
+			118, 121, 103, 101, 2, 103, 121, 0, 1, 101, 108, 122, 115, 169, 195, 114, 2, 103, 121, 0, 1, 101, 109, 2, 103, 121, 0, 1, 101, 114,
+			101, 115, 2, 103, 121, 0, 1, 101, 114, 101, 115, 2, 103, 121, 197, 177, 106, 0, 1, 101, 114, 101, 121, 110, 2, 103, 121, 0, 1, 101,
+			114, 169, 195, 102, 2, 103, 121, 0, 1, 101, 114, 169, 195, 109, 2, 103, 121, 0, 1, 101, 114, 188, 195, 99, 114, 97, 2, 103, 121, 117,
+			108, 108, 97, 100, 195, 161, 115, 0, 1, 101, 116, 101, 98, 2, 103, 121, 0, 1, 101, 116, 169, 195, 114, 2, 103, 121, 0, 1, 101, 118,
+			182, 195, 122, 115, 2, 103, 121, 197, 177, 106, 116, 0, 1, 101, 118, 188, 195, 2, 103, 121, 0, 1, 101, 121, 108, 169, 195, 98, 2, 103,
+			121, 0, 1, 101, 121, 110, 145, 197, 122, 115, 2, 103, 121, 0, 1, 101, 122, 145, 197, 116, 2, 103, 121, 0, 1, 105, 103, 169, 195, 118,
+			2, 103, 121, 0, 1, 105, 103, 169, 195, 118, 2, 103, 121, 195, 182, 0, 1, 110, 97, 104, 2, 103, 121, 0, 1, 110, 97, 104, 2, 103,
+			121, 97, 107, 111, 114, 0, 1, 110, 97, 108, 114, 97, 98, 2, 103, 121, 0, 1, 110, 97, 114, 97, 104, 2, 103, 121, 0, 1, 110, 101,
+			108, 122, 115, 2, 103, 121, 0, 1, 110, 105, 2, 103, 121, 195, 161, 114, 0, 1, 110, 105, 112, 109, 182, 195, 100, 2, 103, 121, 0, 1,
+			110, 105, 112, 112, 111, 100, 2, 103, 121, 0, 1, 110, 117, 108, 112, 117, 107, 2, 103, 121, 195, 161, 114, 0, 1, 110, 161, 195, 114, 101,
+			109, 117, 98, 2, 103, 121, 0, 1, 111, 100, 161, 195, 98, 2, 103, 121, 0, 1, 111, 102, 2, 103, 121, 97, 108, 117, 0, 1, 111, 102,
+			2, 103, 121, 195, 182, 0, 1, 111, 102, 2, 103, 121, 197, 177, 114, 197, 177, 0, 1, 111, 106, 2, 103, 121, 97, 107, 111, 114, 0, 1,
+			111, 106, 2, 103, 121, 195, 188, 109, 0, 1, 111, 106, 2, 103, 121, 197, 177, 106, 116, 0, 1, 111, 108, 97, 121, 103, 2, 103, 121, 0,
+			1, 111, 108, 161, 195, 122, 2, 103, 121, 0, 1, 111, 114, 100, 2, 103, 121, 0, 1, 111, 114, 111, 104, 2, 103, 121, 0, 1, 111, 114,
+			112, 2, 103, 121, 97, 107, 0, 1, 111, 121, 110, 186, 195, 122, 115, 2, 103, 121, 0, 1, 114, 117, 116, 97, 109, 97, 114, 100, 2, 103,
+			121, 0, 1, 117, 114, 2, 103, 121, 97, 110, 116, 0, 1, 161, 195, 108, 105, 118, 2, 103, 121, 0, 1, 161, 195, 108, 105, 118, 2, 103,
+			121, 197, 177, 108, 195, 182, 108, 0, 1, 161, 195, 114, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161, 195, 114, 105, 118, 2, 103, 121, 0,
+			1, 161, 195, 115, 97, 107, 116, 105, 114, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161, 195, 115, 97, 116, 122, 115, 105, 116, 2, 103, 121,
+			0, 1, 161, 195, 115, 100, 161, 195, 109, 105, 2, 103, 121, 197, 177, 106, 116, 0, 1, 161, 195, 115, 103, 111, 100, 108, 111, 98, 2, 103,
+			121, 0, 1, 161, 195, 115, 103, 117, 122, 97, 104, 2, 103, 121, 0, 1, 161, 195, 115, 105, 107, 117, 99, 2, 103, 121, 0, 1, 161, 195,
+			115, 106, 186, 195, 2, 103, 121, 0, 1, 161, 195, 115, 109, 111, 114, 97, 98, 2, 103, 121, 0, 1, 161, 195, 115, 115, 111, 103, 161, 195,
+			108, 105, 118, 2, 103, 121, 0, 1, 161, 195, 115, 115, 111, 110, 111, 122, 97, 2, 103, 121, 0, 1, 161, 195, 115, 115, 161, 195, 109, 2,
+			103, 121, 0, 1, 161, 195, 115, 116, 116, 111, 122, 105, 98, 2, 103, 121, 0, 1, 161, 195, 122, 115, 114, 111, 2, 103, 121, 97, 114, 97,
+			112, 111, 100, 0, 1, 161, 195, 122, 115, 114, 111, 2, 103, 121, 197, 177, 108, 195, 169, 115, 0, 1, 169, 195, 99, 2, 103, 121, 105, 108,
+			0, 1, 169, 195, 99, 2, 103, 121, 197, 177, 114, 0, 1, 169, 195, 100, 110, 101, 118, 2, 103, 121, 0, 1, 169, 195, 106, 2, 103, 121,
+			197, 177, 114, 0, 1, 169, 195, 106, 177, 197, 109, 2, 103, 121, 195, 161, 114, 0, 1, 169, 195, 108, 2, 103, 121, 195, 161, 114, 0, 1,
+			169, 195, 108, 2, 103, 121, 195, 182, 107, 0, 1, 169, 195, 115, 101, 108, 101, 2, 103, 121, 0, 1, 169, 195, 115, 101, 121, 108, 188, 195,
+			104, 2, 103, 121, 0, 1, 169, 195, 115, 103, 101, 116, 101, 98, 2, 103, 121, 0, 1, 169, 195, 115, 105, 103, 169, 195, 114, 2, 103, 121,
+			197, 177, 106, 116, 0, 1, 169, 195, 115, 107, 182, 195, 114, 182, 195, 2, 103, 121, 0, 1, 169, 195, 115, 108, 101, 102, 2, 103, 121, 0,
+			1, 169, 195, 115, 110, 101, 108, 108, 101, 2, 103, 121, 0, 1, 169, 195, 115, 110, 182, 195, 122, 182, 195, 107, 2, 103, 121, 0, 1, 169,
+			195, 115, 115, 101, 98, 101, 115, 2, 103, 121, 0, 1, 169, 195, 115, 115, 101, 100, 169, 195, 2, 103, 121, 0, 1, 169, 195, 115, 115, 101,
+			107, 101, 100, 114, 169, 195, 2, 103, 121, 0, 1, 169, 195, 115, 115, 101, 108, 101, 116, 182, 195, 107, 2, 103, 121, 97, 107, 0, 1, 169,
+			195, 115, 115, 101, 112, 169, 195, 110, 2, 103, 121, 0, 1, 169, 195, 115, 115, 101, 114, 173, 195, 104, 2, 103, 121, 0, 1, 169, 195, 115,
+			116, 101, 104, 101, 116, 2, 103, 121, 0, 1, 169, 195, 115, 116, 101, 118, 182, 195, 122, 115, 2, 103, 121, 0, 1, 169, 195, 115, 116, 101,
+			122, 109, 101, 110, 2, 103, 121, 0, 1, 169, 195, 115, 116, 108, 188, 195, 122, 115, 101, 102, 2, 103, 121, 0, 1, 169, 195, 115, 116, 110,
+			101, 122, 115, 2, 103, 121, 0, 1, 169, 195, 115, 116, 122, 115, 105, 116, 2, 103, 121, 0, 1, 169, 195, 115, 121, 103, 101, 2, 103, 121,
+			0, 1, 169, 195, 115, 177, 197, 104, 2, 103, 121, 0, 1, 169, 195, 118, 2, 103, 121, 97, 110, 116, 0, 1, 182, 195, 100, 2, 103, 121,
+			97, 112, 106, 195, 186, 0, 1, 182, 195, 100, 2, 103, 121, 195, 161, 114, 0, 1, 182, 195, 100, 114, 182, 195, 2, 103, 121, 0, 1, 182,
+			195, 122, 115, 2, 103, 121, 111, 114, 115, 0, 1, 182, 195, 122, 115, 2, 103, 121, 195, 161, 114, 0, 8, 97, 109, 2, 103, 121, 197, 177,
+			106, 116, 0, 8, 97, 121, 103, 97, 2, 103, 121, 0, 8, 101, 122, 115, 2, 103, 121, 195, 161, 114, 0, 8, 110, 161, 195, 108, 2, 103,
+			121, 0, 8, 111, 108, 2, 103, 121, 197, 177, 106, 116, 0, 8, 169, 195, 106, 2, 103, 121, 195, 161, 114, 0, 8, 169, 195, 115, 101, 108,
+			101, 102, 2, 103, 121, 105, 108, 107, 111, 115, 0, 103, 1, 117, 103, 2, 111, 108, 0, 103, 2, 18, 66, 0, 103, 2, 45, 18, 66, 0,
+			4, 2, 45, 103, 3, 81, 12, 0, 103, 0, 103, 1, 101, 108, 2, 114, 111, 116, 101, 115, 122, 107, 0, 103, 114, 3, 81, 52, 0, 103,
+			98, 3, 81, 71, 0, 4, 2, 45, 103, 121, 3, 81, 79, 0, 103, 2, 45, 103, 121, 0, 111, 101, 116, 104, 5, 1, 8, 3, 81, 118,
+			47, 109, 0, 7, 6, 104, 0, 4, 1, 101, 115, 99, 2, 98, 195, 161, 110, 121, 97, 3, 0, 4, 8, 101, 115, 99, 2, 111, 114, 115,
+			122, 195, 161, 103, 3, 0, 4, 8, 101, 115, 99, 2, 115, 122, 108, 111, 118, 195, 161, 107, 3, 0, 4, 8, 117, 106, 2, 107, 111, 108,
+			98, 3, 0, 4, 8, 117, 106, 2, 115, 97, 106, 116, 3, 0, 4, 8, 117, 106, 2, 115, 122, 195, 161, 114, 110, 121, 195, 169, 107, 3,
+			0, 8, 117, 106, 2, 116, 101, 110, 121, 195, 169, 115, 122, 3, 0, 4, 3, 107, 0, 104, 1, 101, 100, 110, 105, 109, 2, 101, 122, 0,
+			104, 2, 45, 18, 66, 0, 101, 114, 116, 122, 3, 107, 109, 52, 119, 0, 7, 6, 105, 0, 4, 3, 37, 0, 1, 21, 2, 32, 14, 128,
+			128, 129, 0, 103, 1, 21, 2, 32, 14, 128, 128, 130, 3, 37, 81, 0, 104, 111, 122, 1, 21, 2, 32, 14, 128, 192, 132, 3, 37, 107,
+			39, 88, 0, 7, 6, 106, 0, 4, 3, 57, 0, 106, 2, 18, 66, 0, 106, 2, 45, 18, 66, 0, 106, 114, 3, 57, 52, 0, 106, 98,
+			3, 57, 71, 0, 97, 118, 195, 173, 116, 115, 8, 3, 57, 108, 84, 112, 76, 12, 0, 97, 118, 195, 173, 116, 115, 100, 8, 3, 57, 108,
+			84, 112, 76, 72, 0, 195, 169, 105, 103, 1, 21, 2, 32, 14, 128, 128, 132, 3, 57, 113, 37, 81, 0, 195, 169, 116, 197, 145, 108, 1,
+			21, 2, 32, 14, 128, 128, 133, 3, 57, 113, 47, 118, 55, 0, 195, 169, 110, 101, 107, 1, 21, 2, 32, 14, 128, 128, 133, 3, 57, 113,
+			50, 109, 49, 0, 195, 169, 114, 101, 1, 21, 2, 32, 14, 128, 128, 132, 3, 57, 113, 52, 109, 0, 195, 169, 118, 101, 108, 1, 21, 2,
+			32, 14, 128, 128, 133, 3, 57, 113, 84, 109, 55, 0, 195, 161, 105, 103, 1, 21, 2, 32, 14, 128, 192, 132, 3, 57, 114, 37, 81, 0,
+			195, 161, 116, 195, 179, 108, 1, 21, 2, 32, 14, 128, 192, 133, 3, 57, 114, 47, 115, 55, 0, 195, 161, 110, 97, 107, 1, 21, 2, 32,
+			14, 128, 192, 133, 3, 57, 114, 50, 108, 49, 0, 195, 161, 114, 97, 1, 21, 2, 32, 14, 128, 192, 132, 3, 57, 114, 52, 108, 0, 195,
+			161, 98, 97, 110, 1, 21, 2, 32, 14, 128, 192, 133, 3, 57, 114, 71, 108, 50, 0, 195, 161, 118, 97, 108, 1, 21, 2, 32, 14, 128,
+			192, 133, 3, 57, 114, 84, 108, 55, 0, 7, 6, 107, 0, 4, 1, 45, 107, 3, 0, 1, 45, 107, 107, 3, 0, 4, 3, 49, 0, 107,
+			2, 18, 66, 0, 107, 2, 45, 18, 66, 0, 195, 182, 122, 116, 195, 161, 114, 115, 97, 115, 195, 161, 103, 8, 3, 49, 6, 110, 89, 47,
+			114, 52, 91, 108, 91, 114, 81, 0, 195, 182, 122, 116, 195, 161, 114, 115, 97, 115, 195, 161, 103, 103, 8, 3, 49, 6, 110, 89, 47, 114,
+			52, 91, 108, 91, 114, 81, 12, 0, 4, 2, 45, 107, 3, 49, 12, 0, 107, 0, 107, 2, 17, 67, 0, 107, 2, 45, 107, 0, 107, 8,
+			169, 195, 116, 161, 195, 106, 2, 108, 105, 101, 110, 115, 0, 111, 115, 115, 117, 116, 104, 3, 49, 39, 91, 116, 47, 0, 111, 115, 115, 117,
+			116, 104, 116, 3, 49, 39, 91, 116, 47, 12, 0, 111, 115, 115, 117, 116, 104, 106, 3, 49, 39, 91, 116, 80, 12, 0, 107, 114, 3, 49,
+			52, 0, 107, 106, 3, 49, 57, 0, 107, 98, 3, 49, 71, 0, 195, 182, 122, 8, 3, 49, 110, 88, 0, 195, 182, 122, 116, 8, 3, 49,
+			110, 89, 47, 0, 195, 182, 122, 112, 111, 110, 116, 3, 49, 110, 89, 48, 39, 50, 47, 0, 195, 182, 122, 112, 111, 110, 116, 116, 3, 49,
+			110, 89, 48, 39, 50, 47, 12, 0, 195, 182, 122, 112, 111, 110, 116, 106, 3, 49, 110, 89, 48, 39, 50, 80, 0, 195, 182, 122, 115, 195,
+			169, 103, 103, 3, 49, 110, 91, 12, 113, 81, 12, 0, 195, 182, 122, 115, 195, 169, 103, 3, 49, 110, 91, 91, 113, 81, 0, 195, 169, 115,
+			122, 115, 195, 169, 103, 3, 49, 113, 91, 91, 113, 81, 0, 195, 169, 115, 122, 115, 195, 169, 103, 103, 3, 49, 113, 91, 91, 113, 81, 12,
+			0, 7, 6, 108, 0, 4, 3, 55, 0, 1, 101, 2, 106, 117, 115, 0, 1, 101, 2, 106, 117, 116, 0, 1, 101, 2, 106, 195, 161, 116,
+			115, 122, 0, 1, 101, 102, 2, 106, 97, 118, 195, 173, 116, 0, 1, 101, 102, 2, 106, 101, 103, 121, 0, 1, 101, 102, 2, 106, 101, 108,
+			101, 110, 0, 1, 101, 102, 2, 106, 111, 103, 111, 115, 195, 173, 116, 0, 1, 101, 102, 2, 106, 117, 0, 1, 101, 102, 2, 106, 195, 161,
+			114, 0, 1, 101, 102, 2, 106, 195, 182, 0, 1, 106, 161, 195, 102, 0, 1, 169, 195, 118, 101, 108, 2, 108, 121, 117, 107, 0, 1, 169,
+			195, 121, 110, 2, 108, 121, 117, 107, 0, 1, 169, 195, 122, 115, 2, 106, 101, 103, 121, 0, 1, 169, 195, 122, 115, 2, 106, 195, 161, 114,
+			0, 1, 188, 195, 102, 2, 108, 121, 117, 107, 0, 1, 188, 195, 116, 122, 115, 101, 114, 101, 107, 2, 106, 0, 8, 169, 195, 102, 2, 106,
+			111, 98, 98, 0, 108, 1, 101, 2, 105, 112, 115, 122, 0, 108, 1, 101, 116, 97, 103, 97, 98, 2, 105, 122, 0, 108, 1, 101, 116, 110,
+			105, 2, 105, 103, 101, 0, 108, 1, 105, 109, 2, 105, 0, 108, 2, 18, 66, 0, 108, 2, 45, 18, 66, 0, 4, 1, 182, 195, 107, 182,
+			195, 2, 106, 111, 103, 3, 55, 12, 0, 1, 186, 195, 116, 2, 106, 0, 4, 121, 1, 17, 67, 2, 32, 3, 55, 37, 0, 121, 8, 104,
+			116, 169, 195, 107, 0, 108, 114, 3, 55, 52, 0, 4, 108, 121, 1, 101, 117, 109, 97, 122, 115, 3, 55, 55, 37, 0, 121, 1, 101, 117,
+			109, 97, 122, 115, 0, 4, 106, 1, 101, 2, 195, 161, 114, 3, 55, 57, 0, 106, 8, 97, 116, 2, 195, 161, 110, 0, 106, 8, 101, 2,
+			195, 182, 0, 108, 98, 3, 55, 71, 0, 4, 108, 1, 161, 195, 2, 106, 3, 57, 0, 108, 121, 2, 45, 18, 66, 0, 121, 0, 4, 1,
+			97, 108, 106, 161, 195, 102, 2, 106, 3, 57, 57, 0, 1, 169, 195, 99, 2, 106, 195, 161, 0, 106, 1, 101, 107, 0, 106, 1, 101, 114,
+			169, 195, 98, 0, 106, 1, 169, 195, 122, 115, 101, 98, 0, 108, 121, 0, 4, 106, 1, 111, 100, 110, 111, 103, 3, 57, 57, 57, 0, 106,
+			1, 161, 195, 110, 106, 97, 115, 0, 108, 106, 0, 4, 106, 3, 61, 57, 0, 106, 1, 17, 65, 2, 17, 65, 0, 7, 6, 109, 0, 4,
+			3, 65, 0, 109, 1, 111, 107, 2, 117, 110, 105, 0, 109, 2, 18, 66, 0, 109, 2, 45, 18, 66, 0, 7, 6, 110, 0, 39, 69, 109,
+			3, 11, 6, 109, 55, 55, 47, 4, 113, 4, 109, 91, 0, 4, 3, 50, 0, 1, 97, 108, 116, 97, 103, 110, 105, 2, 106, 111, 103, 0,
+			1, 97, 108, 116, 97, 103, 110, 105, 2, 110, 121, 105, 108, 0, 1, 97, 116, 2, 110, 121, 111, 109, 100, 0, 1, 101, 98, 121, 108, 101,
+			104, 2, 106, 195, 161, 114, 0, 1, 101, 98, 122, 182, 195, 107, 2, 106, 195, 161, 114, 0, 1, 101, 98, 145, 197, 102, 2, 106, 195, 161,
+			114, 0, 1, 101, 108, 108, 101, 2, 106, 97, 118, 97, 108, 108, 116, 0, 1, 101, 108, 108, 101, 2, 106, 97, 118, 97, 115, 108, 97, 116,
+			0, 1, 101, 108, 108, 101, 2, 106, 101, 103, 121, 0, 1, 101, 108, 108, 101, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 101, 108, 108,
+			111, 112, 2, 106, 101, 108, 101, 110, 0, 1, 101, 108, 169, 195, 2, 106, 195, 161, 114, 0, 1, 101, 118, 116, 182, 195, 2, 121, 97, 114,
+			100, 0, 1, 101, 118, 121, 103, 101, 110, 2, 121, 97, 114, 100, 0, 1, 101, 121, 103, 101, 2, 106, 111, 103, 195, 186, 0, 1, 101, 121,
+			103, 110, 105, 0, 1, 101, 122, 110, 97, 107, 115, 2, 110, 121, 0, 1, 105, 97, 107, 111, 107, 2, 110, 121, 0, 1, 105, 98, 97, 107,
+			2, 110, 121, 195, 173, 108, 0, 1, 105, 102, 114, 111, 109, 2, 110, 121, 0, 1, 105, 122, 110, 101, 98, 2, 110, 121, 0, 1, 111, 98,
+			114, 97, 107, 2, 110, 121, 0, 1, 111, 100, 106, 97, 108, 117, 116, 2, 106, 111, 103, 0, 1, 111, 101, 116, 110, 97, 112, 2, 110, 121,
+			0, 1, 111, 102, 101, 108, 101, 116, 2, 110, 121, 0, 1, 111, 102, 111, 114, 107, 105, 109, 2, 110, 121, 195, 173, 108, 195, 161, 115, 0,
+			1, 111, 105, 2, 110, 121, 0, 1, 111, 108, 98, 97, 115, 2, 110, 121, 0, 1, 111, 110, 161, 195, 107, 2, 106, 111, 103, 0, 1, 111,
+			112, 117, 107, 2, 110, 121, 0, 1, 111, 114, 101, 112, 2, 106, 101, 103, 121, 0, 1, 111, 114, 107, 105, 109, 2, 110, 121, 0, 1, 111,
+			114, 116, 107, 101, 108, 101, 2, 110, 121, 0, 1, 111, 114, 116, 107, 101, 108, 101, 2, 110, 121, 0, 1, 111, 114, 116, 117, 101, 110, 2,
+			110, 121, 0, 1, 111, 116, 97, 114, 97, 109, 2, 110, 121, 0, 1, 111, 116, 101, 98, 2, 106, 195, 161, 114, 100, 97, 0, 1, 111, 121,
+			103, 97, 2, 106, 195, 161, 116, 115, 122, 0, 1, 111, 121, 103, 97, 118, 2, 106, 111, 103, 0, 1, 111, 121, 103, 97, 118, 2, 110, 121,
+			0, 1, 111, 121, 103, 97, 118, 2, 110, 121, 105, 108, 97, 116, 107, 111, 122, 97, 116, 0, 1, 111, 122, 115, 97, 104, 2, 106, 195, 161,
+			114, 0, 1, 111, 122, 115, 97, 104, 2, 110, 121, 0, 1, 111, 122, 115, 161, 195, 118, 2, 110, 121, 0, 1, 145, 197, 115, 169, 195, 107,
+			2, 106, 195, 182, 118, 197, 145, 0, 1, 161, 195, 98, 2, 110, 121, 195, 173, 114, 101, 0, 1, 161, 195, 101, 99, 179, 195, 2, 106, 195,
+			161, 114, 0, 1, 161, 195, 103, 97, 109, 2, 106, 101, 108, 108, 101, 103, 0, 1, 161, 195, 103, 97, 109, 2, 106, 111, 103, 0, 1, 161,
+			195, 103, 97, 109, 2, 110, 121, 97, 114, 0, 1, 161, 195, 103, 97, 109, 2, 110, 121, 101, 108, 0, 1, 161, 195, 105, 100, 101, 109, 2,
+			110, 121, 0, 1, 161, 195, 108, 101, 99, 114, 111, 112, 2, 110, 121, 0, 1, 161, 195, 108, 122, 115, 111, 114, 111, 2, 110, 121, 111, 109,
+			0, 1, 161, 195, 114, 103, 105, 108, 105, 102, 2, 110, 121, 101, 108, 0, 1, 161, 195, 116, 117, 2, 110, 121, 111, 109, 0, 1, 161, 195,
+			118, 105, 116, 110, 101, 122, 115, 2, 110, 121, 0, 1, 161, 195, 122, 97, 107, 2, 110, 121, 0, 1, 169, 195, 103, 105, 120, 111, 2, 110,
+			121, 0, 1, 169, 195, 122, 114, 97, 2, 110, 121, 0, 1, 169, 195, 122, 115, 2, 106, 101, 108, 101, 107, 0, 1, 169, 195, 122, 115, 2,
+			110, 121, 111, 109, 0, 1, 169, 195, 122, 115, 2, 110, 121, 111, 109, 0, 1, 169, 195, 122, 115, 2, 110, 121, 111, 109, 0, 1, 173, 195,
+			122, 115, 2, 106, 101, 108, 101, 115, 0, 1, 173, 195, 122, 115, 2, 106, 101, 108, 122, 195, 169, 115, 0, 1, 173, 195, 122, 115, 2, 106,
+			195, 161, 116, 0, 1, 173, 195, 122, 115, 2, 106, 195, 179, 122, 97, 110, 0, 1, 173, 195, 122, 115, 2, 110, 121, 111, 109, 0, 1, 177,
+			197, 98, 2, 106, 101, 108, 0, 1, 182, 195, 2, 106, 101, 108, 195, 182, 108, 0, 1, 182, 195, 2, 106, 195, 161, 114, 195, 179, 0, 1,
+			182, 195, 108, 188, 195, 107, 2, 106, 195, 161, 114, 97, 0, 1, 182, 195, 115, 99, 108, 182, 195, 107, 2, 106, 101, 103, 121, 122, 0, 1,
+			182, 195, 115, 99, 108, 182, 195, 107, 2, 110, 121, 0, 1, 182, 195, 115, 99, 108, 182, 195, 107, 2, 110, 121, 97, 107, 0, 2, 103, 0,
+			2, 107, 0, 8, 101, 108, 108, 101, 2, 106, 97, 118, 0, 8, 101, 108, 116, 101, 116, 101, 104, 100, 100, 101, 102, 2, 106, 101, 108, 108,
+			101, 0, 8, 105, 122, 115, 2, 106, 195, 161, 116, 115, 122, 0, 8, 177, 197, 98, 2, 110, 121, 111, 109, 0, 8, 182, 195, 2, 110, 121,
+			111, 109, 0, 8, 182, 195, 2, 110, 121, 117, 103, 0, 110, 1, 111, 107, 2, 101, 107, 116, 111, 114, 0, 110, 2, 18, 66, 0, 110, 2,
+			45, 18, 66, 0, 101, 109, 45, 108, 116, 115, 3, 50, 6, 109, 65, 15, 11, 6, 109, 55, 55, 47, 4, 113, 4, 109, 91, 0, 110, 114,
+			3, 50, 52, 0, 106, 1, 105, 122, 110, 101, 98, 3, 50, 57, 0, 4, 110, 121, 1, 161, 195, 103, 97, 109, 2, 117, 103, 100, 195, 173,
+			106, 3, 50, 67, 0, 110, 121, 2, 101, 108, 118, 0, 110, 121, 2, 101, 108, 118, 0, 110, 98, 3, 50, 71, 0, 121, 108, 111, 110, 5,
+			1, 8, 3, 50, 109, 57, 55, 39, 50, 0, 101, 109, 8, 2, 45, 3, 50, 109, 65, 0, 108, 1, 161, 195, 106, 97, 3, 55, 12, 0,
+			108, 106, 1, 161, 195, 106, 97, 3, 57, 12, 0, 2, 112, 3, 65, 0, 4, 106, 1, 101, 104, 105, 112, 2, 32, 14, 128, 128, 130, 3,
+			67, 0, 106, 1, 105, 2, 101, 107, 99, 105, 195, 179, 0, 110, 121, 1, 101, 109, 2, 111, 114, 115, 122, 195, 161, 103, 0, 110, 121, 1,
+			105, 2, 101, 107, 99, 105, 195, 179, 0, 110, 121, 2, 18, 66, 0, 110, 121, 2, 45, 18, 66, 0, 110, 121, 2, 99, 115, 0, 110, 121,
+			8, 101, 109, 2, 97, 115, 115, 122, 0, 121, 0, 121, 1, 101, 115, 114, 101, 118, 2, 106, 111, 103, 0, 121, 1, 101, 115, 114, 101, 118,
+			2, 106, 195, 161, 116, 115, 122, 0, 121, 1, 101, 115, 114, 101, 118, 2, 106, 195, 161, 116, 195, 169, 107, 0, 121, 1, 114, 161, 195, 2,
+			106, 195, 161, 116, 195, 169, 0, 121, 1, 145, 197, 122, 101, 109, 2, 106, 0, 121, 1, 161, 195, 104, 111, 100, 2, 106, 195, 182, 118, 0,
+			121, 1, 161, 195, 105, 104, 2, 106, 0, 121, 1, 161, 195, 107, 114, 111, 122, 115, 111, 98, 2, 106, 101, 108, 101, 116, 0, 121, 1, 161,
+			195, 109, 111, 108, 108, 161, 195, 2, 106, 101, 108, 0, 121, 1, 161, 195, 109, 114, 111, 107, 2, 106, 97, 118, 97, 115, 108, 97, 116, 0,
+			121, 1, 161, 195, 109, 114, 111, 107, 2, 106, 101, 108, 101, 110, 116, 195, 169, 115, 0, 121, 1, 161, 195, 109, 116, 111, 107, 108, 97, 2,
+			106, 0, 121, 1, 161, 195, 114, 105, 2, 106, 101, 108, 0, 121, 1, 161, 195, 114, 116, 111, 98, 2, 106, 195, 161, 116, 195, 169, 107, 0,
+			121, 1, 161, 195, 118, 114, 161, 195, 118, 105, 122, 115, 2, 106, 195, 161, 116, 115, 122, 0, 121, 1, 169, 195, 100, 105, 2, 106, 101, 108,
+			0, 121, 1, 169, 195, 102, 2, 106, 101, 108, 0, 121, 1, 169, 195, 103, 101, 108, 2, 106, 195, 161, 114, 0, 121, 1, 169, 195, 103, 105,
+			2, 106, 111, 103, 0, 121, 1, 169, 195, 109, 100, 101, 114, 101, 2, 106, 0, 121, 1, 169, 195, 109, 101, 114, 101, 121, 110, 2, 106, 195,
+			161, 116, 195, 169, 107, 0, 121, 1, 169, 195, 109, 101, 115, 101, 2, 106, 101, 108, 0, 121, 1, 169, 195, 109, 116, 173, 195, 115, 101, 106,
+			108, 101, 116, 2, 106, 0, 121, 1, 169, 195, 109, 116, 173, 195, 115, 101, 106, 108, 101, 116, 2, 106, 97, 118, 117, 0, 121, 1, 169, 195,
+			118, 114, 182, 195, 116, 2, 106, 97, 118, 97, 0, 121, 1, 169, 195, 118, 122, 115, 169, 195, 114, 2, 106, 101, 103, 121, 0, 121, 8, 101,
+			109, 2, 97, 115, 115, 122, 0, 110, 121, 1, 182, 195, 107, 2, 101, 108, 118, 3, 67, 12, 0, 110, 121, 114, 3, 67, 52, 0, 4, 106,
+			3, 67, 67, 0, 110, 121, 0, 121, 106, 0, 110, 121, 98, 3, 67, 71, 0, 118, 100, 97, 8, 2, 45, 3, 109, 50, 84, 113, 72, 113,
+			114, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 4, 1, 45, 112, 3, 0, 1, 45, 112, 112, 3, 0, 4, 3, 48, 0, 112,
+			2, 18, 66, 0, 112, 2, 45, 18, 66, 0, 2, 118, 3, 48, 10, 0, 4, 2, 45, 112, 3, 48, 12, 0, 112, 0, 112, 2, 17, 67,
+			0, 111, 116, 115, 100, 97, 109, 5, 1, 8, 3, 48, 39, 119, 72, 114, 65, 0, 112, 114, 3, 48, 52, 0, 112, 98, 3, 48, 71, 0,
+			7, 6, 113, 0, 4, 3, 49, 84, 0, 117, 0, 7, 6, 114, 0, 4, 2, 99, 99, 3, 51, 0, 2, 114, 0, 101, 1, 21, 2, 32,
+			14, 128, 128, 130, 3, 51, 109, 0, 4, 3, 52, 0, 1, 114, 0, 114, 1, 97, 2, 111, 103, 195, 161, 110, 115, 0, 114, 1, 101, 116,
+			2, 105, 101, 114, 0, 114, 1, 101, 116, 2, 111, 114, 105, 0, 114, 1, 105, 2, 105, 116, 195, 161, 0, 114, 1, 111, 107, 2, 101, 112,
+			101, 116, 195, 161, 0, 114, 1, 117, 107, 110, 111, 107, 2, 101, 110, 0, 114, 2, 18, 66, 0, 114, 2, 45, 18, 66, 0, 114, 8, 97,
+			2, 111, 103, 97, 110, 99, 105, 0, 109, 3, 52, 10, 65, 0, 4, 105, 99, 104, 97, 5, 1, 8, 2, 114, 100, 3, 52, 37, 99, 114,
+			0, 105, 99, 104, 195, 161, 8, 2, 114, 100, 0, 114, 114, 3, 52, 52, 0, 114, 98, 3, 52, 71, 0, 97, 1, 21, 2, 32, 14, 128,
+			128, 130, 3, 52, 108, 0, 7, 6, 115, 0, 122, 1, 45, 115, 3, 0, 5, 1, 1, 108, 101, 104, 2, 105, 110, 107, 105, 3, 88, 0,
+			4, 1, 108, 101, 103, 110, 101, 3, 89, 0, 5, 1, 1, 117, 105, 98, 117, 110, 97, 100, 0, 5, 1, 1, 117, 116, 110, 101, 118, 117,
+			106, 0, 122, 1, 45, 115, 110, 100, 0, 2, 45, 115, 122, 3, 89, 12, 0, 4, 108, 111, 5, 1, 8, 111, 3, 89, 55, 115, 0, 108,
+			195, 179, 5, 1, 8, 111, 0, 4, 101, 109, 109, 101, 108, 119, 101, 105, 115, 8, 3, 89, 109, 65, 65, 109, 55, 84, 109, 57, 89, 0,
+			101, 109, 109, 101, 108, 119, 101, 105, 115, 115, 8, 0, 101, 109, 109, 101, 108, 119, 101, 105, 195, 159, 8, 0, 97, 97, 114, 5, 1, 8,
+			3, 89, 114, 52, 0, 4, 3, 91, 0, 1, 97, 107, 114, 97, 102, 2, 115, 122, 197, 145, 114, 0, 1, 97, 118, 2, 115, 0, 1, 100,
+			108, 182, 195, 102, 2, 195, 161, 110, 99, 0, 1, 101, 110, 101, 121, 103, 101, 2, 122, 195, 161, 114, 0, 1, 101, 110, 103, 161, 195, 109,
+			0, 1, 101, 117, 108, 98, 2, 122, 101, 110, 0, 1, 101, 117, 108, 98, 2, 122, 111, 110, 0, 1, 101, 121, 110, 110, 101, 122, 115, 2,
+			122, 115, 195, 161, 0, 1, 101, 122, 110, 169, 195, 112, 0, 1, 105, 107, 2, 115, 122, 101, 110, 116, 0, 1, 105, 107, 2, 115, 122, 105,
+			103, 101, 116, 0, 1, 105, 107, 2, 115, 122, 197, 145, 108, 197, 145, 0, 1, 105, 107, 2, 122, 115, 105, 100, 195, 161, 0, 1, 105, 107,
+			2, 122, 115, 105, 100, 195, 179, 0, 1, 105, 120, 97, 108, 97, 103, 0, 1, 105, 122, 161, 195, 102, 2, 122, 195, 161, 114, 0, 1, 111,
+			103, 111, 108, 97, 121, 103, 2, 122, 195, 161, 115, 122, 108, 195, 179, 0, 1, 111, 107, 110, 117, 98, 114, 101, 118, 2, 122, 101, 110, 0,
+			1, 111, 107, 111, 116, 2, 122, 195, 161, 115, 122, 108, 0, 1, 111, 108, 169, 195, 99, 110, 161, 195, 112, 0, 1, 111, 114, 161, 195, 118,
+			2, 122, 97, 106, 0, 1, 111, 114, 161, 195, 118, 2, 122, 115, 0, 1, 111, 116, 161, 195, 110, 161, 195, 114, 103, 0, 1, 111, 118, 114,
+			111, 2, 122, 115, 101, 98, 0, 1, 111, 121, 110, 111, 103, 97, 114, 100, 0, 1, 111, 122, 115, 161, 195, 98, 108, 111, 107, 0, 1, 114,
+			161, 195, 116, 114, 111, 107, 2, 122, 101, 110, 0, 1, 117, 100, 108, 111, 107, 0, 1, 117, 103, 179, 195, 103, 97, 100, 101, 112, 2, 115,
+			122, 116, 114, 195, 161, 106, 107, 0, 1, 117, 107, 101, 122, 115, 2, 122, 101, 110, 0, 1, 117, 109, 116, 105, 114, 2, 122, 97, 106, 0,
+			1, 117, 109, 116, 105, 114, 2, 122, 97, 118, 97, 114, 0, 1, 117, 112, 173, 195, 116, 2, 122, 117, 98, 0, 1, 117, 114, 179, 195, 107,
+			2, 122, 101, 110, 0, 1, 117, 116, 107, 105, 108, 102, 110, 111, 107, 2, 122, 195, 179, 110, 0, 1, 117, 122, 115, 115, 97, 98, 2, 122,
+			101, 110, 0, 1, 145, 197, 2, 115, 122, 97, 118, 97, 0, 1, 145, 197, 2, 115, 122, 101, 110, 116, 0, 1, 145, 197, 2, 115, 122, 195,
+			161, 106, 0, 1, 145, 197, 2, 115, 122, 195, 161, 109, 0, 1, 145, 197, 2, 115, 122, 195, 179, 0, 1, 145, 197, 121, 110, 114, 101, 145,
+			197, 116, 106, 101, 0, 1, 161, 195, 100, 97, 104, 2, 115, 122, 97, 103, 0, 1, 161, 195, 102, 2, 115, 122, 195, 161, 114, 195, 186, 0,
+			1, 161, 195, 103, 122, 111, 109, 2, 122, 97, 118, 97, 0, 1, 161, 195, 105, 114, 179, 195, 0, 1, 161, 195, 106, 111, 116, 0, 1, 161,
+			195, 107, 115, 117, 112, 0, 1, 161, 195, 108, 100, 97, 112, 0, 1, 161, 195, 108, 108, 97, 104, 2, 122, 97, 118, 97, 114, 0, 1, 161,
+			195, 108, 117, 107, 105, 109, 2, 122, 97, 99, 115, 0, 1, 161, 195, 110, 97, 98, 98, 111, 114, 0, 1, 161, 195, 110, 97, 98, 98, 111,
+			114, 2, 122, 97, 106, 0, 1, 161, 195, 114, 114, 111, 102, 145, 197, 114, 101, 2, 122, 97, 98, 195, 161, 108, 0, 1, 161, 195, 116, 105,
+			116, 110, 101, 100, 105, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 116, 114, 97, 116, 97, 103, 97, 109, 2, 122, 97, 118, 97, 114, 0,
+			1, 161, 195, 116, 161, 195, 108, 2, 122, 97, 118, 97, 114, 0, 1, 161, 195, 118, 108, 97, 2, 122, 97, 118, 97, 0, 1, 161, 195, 121,
+			108, 107, 161, 195, 102, 2, 122, 101, 110, 0, 1, 161, 195, 122, 97, 109, 108, 97, 107, 108, 97, 2, 115, 122, 101, 114, 118, 101, 114, 0,
+			1, 161, 195, 122, 111, 103, 108, 111, 100, 108, 101, 102, 0, 1, 169, 195, 100, 101, 107, 108, 101, 115, 105, 118, 2, 122, 97, 118, 97, 0,
+			1, 169, 195, 100, 114, 169, 195, 107, 0, 1, 169, 195, 100, 182, 195, 107, 177, 197, 109, 2, 122, 97, 118, 97, 0, 1, 169, 195, 103, 101,
+			107, 101, 114, 98, 0, 1, 169, 195, 108, 101, 109, 114, 101, 116, 0, 1, 169, 195, 108, 188, 195, 112, 101, 108, 101, 116, 2, 122, 195, 179,
+			110, 0, 1, 169, 195, 112, 169, 195, 108, 0, 1, 169, 195, 114, 182, 195, 116, 2, 122, 195, 179, 110, 0, 1, 169, 195, 116, 188, 195, 2,
+			122, 195, 161, 112, 0, 1, 169, 195, 122, 101, 100, 101, 102, 0, 1, 169, 195, 122, 103, 169, 195, 118, 0, 1, 179, 195, 103, 117, 114, 2,
+			122, 195, 161, 114, 106, 0, 1, 179, 195, 116, 97, 108, 117, 109, 2, 122, 101, 110, 0, 1, 179, 195, 118, 186, 195, 102, 2, 122, 101, 110,
+			195, 169, 0, 1, 182, 195, 114, 182, 195, 107, 2, 115, 122, 101, 103, 0, 1, 186, 195, 104, 2, 115, 122, 97, 103, 0, 8, 101, 118, 177,
+			197, 109, 145, 197, 107, 2, 115, 122, 0, 8, 105, 107, 2, 115, 122, 195, 173, 110, 0, 8, 105, 107, 2, 122, 111, 109, 98, 111, 114, 0,
+			8, 105, 108, 105, 112, 0, 8, 111, 108, 97, 116, 122, 115, 97, 0, 8, 111, 114, 105, 112, 0, 8, 117, 103, 114, 161, 195, 0, 8, 161,
+			195, 100, 97, 2, 122, 195, 161, 114, 0, 8, 161, 195, 100, 108, 161, 195, 0, 8, 161, 195, 107, 110, 117, 109, 0, 8, 161, 195, 108, 173,
+			195, 121, 110, 0, 8, 169, 195, 108, 182, 195, 107, 114, 182, 195, 112, 2, 115, 122, 0, 8, 169, 195, 114, 145, 197, 108, 2, 115, 122, 0,
+			8, 169, 195, 122, 112, 169, 195, 107, 0, 8, 169, 195, 122, 115, 116, 101, 116, 0, 8, 179, 195, 118, 186, 195, 102, 2, 122, 101, 110, 101,
+			0, 8, 182, 195, 114, 182, 195, 107, 2, 115, 122, 97, 107, 195, 161, 108, 0, 8, 182, 195, 114, 182, 195, 118, 0, 104, 5, 1, 8, 97,
+			119, 2, 105, 110, 103, 0, 4, 115, 122, 8, 161, 195, 110, 114, 97, 98, 2, 195, 188, 114, 107, 101, 3, 91, 89, 0, 115, 122, 8, 161,
+			195, 118, 108, 97, 2, 195, 188, 107, 115, 195, 169, 0, 1, 105, 107, 2, 101, 98, 98, 3, 91, 91, 0, 7, 6, 116, 0, 4, 1, 45,
+			116, 3, 0, 4, 1, 45, 116, 116, 3, 0, 4, 121, 1, 45, 116, 3, 0, 4, 121, 1, 45, 116, 116, 3, 0, 121, 1, 45, 121, 116,
+			3, 0, 4, 3, 47, 0, 1, 45, 2, 32, 0, 1, 97, 99, 117, 116, 2, 115, 122, 195, 169, 112, 0, 1, 97, 104, 2, 99, 101, 108,
+			108, 0, 1, 97, 108, 100, 97, 112, 2, 115, 122, 197, 145, 110, 121, 0, 1, 97, 108, 108, 161, 195, 2, 99, 105, 114, 107, 0, 1, 97,
+			108, 108, 161, 195, 2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 97, 108, 108, 161, 195, 2, 115, 122, 197, 145, 114, 0, 1, 97, 108, 111,
+			100, 110, 111, 103, 2, 115, 122, 111, 110, 100, 0, 1, 97, 108, 111, 121, 116, 97, 112, 2, 115, 101, 108, 121, 0, 1, 97, 109, 97, 107,
+			2, 106, 195, 182, 118, 101, 100, 101, 108, 0, 1, 97, 112, 97, 115, 99, 2, 115, 122, 111, 108, 103, 0, 1, 97, 114, 161, 195, 106, 2,
+			115, 122, 111, 108, 103, 195, 161, 108, 0, 1, 97, 118, 105, 100, 2, 99, 105, 107, 107, 0, 1, 97, 118, 105, 100, 2, 99, 105, 114, 107,
+			0, 1, 97, 118, 105, 100, 2, 115, 122, 195, 169, 112, 0, 1, 97, 122, 115, 111, 109, 2, 115, 101, 106, 116, 0, 1, 97, 122, 115, 116,
+			161, 195, 108, 2, 106, 195, 179, 105, 110, 0, 1, 97, 122, 161, 195, 108, 98, 161, 195, 116, 2, 99, 101, 108, 108, 0, 1, 97, 122, 179,
+			195, 108, 161, 195, 104, 2, 115, 101, 109, 108, 101, 103, 101, 115, 0, 1, 101, 106, 97, 108, 105, 118, 2, 115, 122, 195, 169, 107, 0, 1,
+			101, 108, 101, 115, 99, 108, 182, 195, 98, 2, 115, 97, 118, 97, 0, 1, 101, 108, 101, 116, 122, 115, 105, 116, 2, 106, 101, 103, 103, 121,
+			0, 1, 101, 108, 103, 182, 195, 122, 115, 2, 115, 122, 111, 98, 0, 1, 101, 108, 121, 103, 188, 195, 2, 115, 122, 111, 98, 0, 1, 101,
+			108, 122, 188, 195, 2, 115, 122, 111, 98, 0, 1, 101, 108, 169, 195, 2, 115, 111, 114, 118, 97, 115, 122, 0, 1, 101, 108, 169, 195, 2,
+			115, 122, 111, 109, 106, 0, 1, 101, 108, 188, 195, 112, 169, 195, 2, 115, 122, 111, 98, 114, 195, 161, 0, 1, 101, 108, 188, 195, 114, 101,
+			116, 2, 99, 195, 169, 108, 0, 1, 101, 109, 114, 101, 112, 2, 115, 122, 101, 114, 197, 177, 0, 1, 101, 110, 2, 99, 0, 1, 101, 110,
+			114, 101, 116, 110, 105, 2, 106, 111, 103, 0, 1, 101, 115, 101, 2, 115, 122, 195, 169, 116, 118, 195, 161, 0, 1, 101, 116, 114, 169, 195,
+			115, 173, 195, 107, 2, 115, 122, 195, 161, 122, 97, 100, 0, 1, 101, 116, 182, 195, 107, 2, 115, 122, 195, 161, 109, 0, 1, 101, 118, 182,
+			195, 122, 115, 2, 115, 195, 161, 118, 0, 1, 101, 122, 101, 106, 101, 102, 2, 99, 195, 173, 109, 0, 1, 101, 122, 101, 106, 101, 102, 2,
+			115, 111, 114, 0, 1, 101, 122, 109, 101, 110, 2, 115, 122, 195, 173, 110, 0, 1, 101, 122, 115, 116, 101, 109, 2, 115, 111, 114, 0, 1,
+			101, 122, 121, 103, 169, 195, 110, 2, 99, 101, 110, 116, 105, 0, 1, 105, 98, 2, 115, 122, 195, 169, 108, 101, 115, 0, 1, 105, 102, 97,
+			114, 103, 2, 99, 101, 114, 117, 122, 0, 1, 105, 108, 101, 2, 115, 122, 111, 108, 103, 0, 1, 105, 110, 161, 195, 114, 103, 2, 115, 122,
+			111, 98, 0, 1, 105, 112, 114, 161, 195, 107, 2, 115, 122, 197, 145, 110, 121, 0, 1, 105, 122, 105, 118, 2, 115, 122, 111, 98, 0, 1,
+			106, 97, 115, 2, 115, 97, 108, 195, 161, 116, 0, 1, 106, 101, 115, 2, 115, 122, 105, 110, 116, 101, 0, 1, 106, 101, 115, 2, 115, 197,
+			177, 114, 197, 177, 0, 1, 107, 101, 114, 105, 100, 2, 115, 122, 111, 114, 122, 97, 0, 1, 108, 97, 122, 115, 97, 2, 106, 101, 103, 0,
+			1, 108, 161, 195, 110, 122, 115, 97, 104, 2, 99, 105, 107, 107, 0, 1, 110, 97, 107, 107, 111, 114, 2, 115, 101, 103, 195, 173, 116, 0,
+			1, 110, 101, 122, 115, 2, 115, 122, 111, 98, 0, 1, 110, 111, 106, 97, 118, 2, 115, 122, 111, 114, 111, 115, 0, 1, 110, 111, 114, 102,
+			2, 115, 101, 98, 195, 169, 115, 122, 0, 1, 110, 111, 115, 99, 2, 115, 111, 118, 195, 161, 0, 1, 110, 111, 115, 99, 2, 115, 111, 118,
 			195, 161, 110, 121, 0, 1, 110, 111, 115, 99, 2, 115, 195, 161, 114, 103, 97, 0, 1, 110, 161, 195, 102, 101, 108, 101, 2, 115, 122, 197,
 			145, 114, 0, 1, 110, 161, 195, 109, 169, 195, 121, 103, 2, 115, 122, 111, 108, 105, 0, 1, 111, 98, 111, 114, 2, 115, 122, 111, 110, 100,
-			0, 1, 114, 111, 112, 115, 2, 99, 101, 110, 116, 0, 1, 114, 161, 195, 112, 2, 115, 122, 195, 169, 107, 104, 195, 161, 122, 0, 1, 114,
-			161, 195, 122, 2, 115, 122, 195, 169, 107, 0, 1, 115, 188, 195, 122, 101, 2, 115, 97, 114, 107, 0, 1, 115, 188, 195, 122, 101, 2, 115,
-			122, 111, 98, 0, 1, 115, 188, 195, 122, 101, 2, 115, 122, 195, 169, 108, 0, 1, 115, 188, 195, 122, 101, 2, 115, 122, 197, 145, 107, 101,
-			0, 1, 115, 188, 195, 122, 101, 2, 115, 122, 197, 145, 114, 0, 1, 117, 109, 97, 109, 2, 115, 122, 197, 145, 114, 0, 1, 117, 109, 97,
-			112, 2, 99, 195, 169, 114, 0, 1, 117, 109, 97, 112, 2, 115, 122, 111, 107, 0, 1, 122, 115, 101, 116, 2, 99, 105, 107, 107, 0, 1,
-			122, 115, 101, 116, 2, 99, 195, 169, 108, 0, 1, 122, 115, 105, 108, 2, 99, 105, 112, 101, 108, 0, 1, 161, 195, 2, 99, 97, 112, 108,
-			97, 116, 0, 1, 161, 195, 2, 99, 105, 107, 195, 161, 122, 0, 1, 161, 195, 2, 99, 195, 173, 109, 0, 1, 161, 195, 106, 97, 115, 2,
-			115, 122, 101, 109, 195, 169, 0, 1, 161, 195, 106, 97, 115, 2, 115, 122, 101, 114, 197, 177, 0, 1, 161, 195, 107, 97, 108, 112, 2, 99,
-			195, 169, 103, 0, 1, 161, 195, 107, 111, 114, 98, 2, 115, 101, 108, 121, 0, 1, 161, 195, 107, 111, 114, 98, 2, 115, 122, 0, 1, 161,
-			195, 108, 114, 97, 107, 115, 2, 115, 122, 195, 173, 110, 0, 1, 161, 195, 118, 105, 118, 2, 115, 122, 195, 179, 0, 1, 169, 195, 107, 110,
-			101, 122, 105, 116, 2, 115, 122, 195, 169, 108, 0, 1, 169, 195, 116, 182, 195, 115, 2, 115, 122, 111, 98, 0, 1, 169, 195, 122, 115, 2,
-			115, 117, 103, 195, 161, 114, 0, 1, 169, 195, 122, 115, 2, 115, 122, 111, 114, 116, 195, 173, 114, 0, 1, 169, 195, 122, 115, 2, 115, 122,
-			111, 114, 195, 173, 116, 0, 1, 169, 195, 122, 115, 2, 115, 195, 182, 112, 195, 182, 114, 0, 1, 179, 195, 112, 2, 115, 101, 108, 101, 106,
-			116, 0, 1, 182, 195, 2, 121, 97, 114, 100, 0, 2, 99, 115, 0, 8, 97, 108, 108, 161, 195, 2, 115, 122, 111, 98, 0, 8, 101, 108,
-			103, 101, 122, 115, 2, 115, 122, 0, 8, 102, 97, 116, 2, 115, 101, 108, 121, 0, 8, 105, 115, 122, 161, 195, 112, 2, 115, 122, 0, 8,
-			106, 97, 115, 2, 115, 122, 195, 173, 110, 0, 8, 110, 111, 122, 115, 105, 118, 2, 115, 122, 111, 108, 103, 195, 161, 108, 0, 8, 111, 98,
-			111, 114, 2, 115, 122, 111, 102, 116, 118, 101, 0, 8, 114, 97, 112, 2, 115, 122, 195, 169, 108, 0, 8, 114, 111, 112, 115, 2, 99, 195,
-			169, 108, 0, 8, 115, 101, 2, 115, 122, 195, 169, 108, 0, 8, 115, 101, 116, 2, 115, 122, 197, 145, 114, 0, 8, 145, 197, 114, 2, 115,
-			122, 197, 145, 107, 0, 8, 161, 195, 2, 115, 122, 111, 108, 103, 195, 161, 108, 116, 97, 116, 0, 8, 169, 195, 104, 2, 99, 111, 108, 0,
-			8, 169, 195, 107, 2, 115, 122, 195, 169, 108, 0, 8, 169, 195, 116, 182, 195, 115, 2, 115, 122, 197, 145, 107, 0, 8, 179, 195, 112, 2,
-			115, 122, 111, 108, 103, 195, 161, 108, 0, 104, 1, 97, 2, 195, 169, 110, 0, 116, 1, 182, 195, 100, 108, 188, 195, 107, 2, 103, 121, 197,
-			177, 108, 0, 116, 2, 18, 66, 0, 116, 2, 45, 18, 66, 0, 116, 8, 111, 114, 102, 2, 195, 173, 114, 0, 4, 2, 45, 116, 3, 47,
-			12, 0, 116, 2, 45, 116, 0, 4, 121, 1, 114, 97, 109, 115, 182, 195, 114, 182, 195, 118, 3, 47, 37, 0, 121, 1, 122, 115, 111, 110,
-			0, 121, 8, 97, 107, 2, 110, 0, 116, 106, 8, 111, 2, 195, 161, 114, 3, 47, 57, 0, 115, 122, 8, 186, 195, 2, 195, 169, 107, 3,
-			47, 89, 0, 101, 114, 109, 195, 169, 115, 122, 101, 116, 101, 115, 3, 47, 109, 52, 65, 113, 89, 109, 47, 109, 91, 0, 104, 195, 182, 107,
-			195, 182, 108, 121, 3, 47, 110, 49, 110, 55, 37, 0, 8, 2, 32, 3, 47, 113, 0, 195, 179, 108, 1, 21, 2, 32, 14, 128, 192, 131,
-			3, 47, 115, 55, 0, 197, 145, 108, 1, 21, 2, 32, 14, 128, 192, 131, 3, 47, 118, 55, 0, 4, 115, 1, 105, 115, 97, 122, 161, 195,
-			104, 2, 97, 3, 76, 12, 0, 115, 1, 169, 195, 107, 169, 195, 98, 101, 122, 115, 115, 182, 195, 2, 101, 0, 115, 8, 105, 107, 97, 122,
-			115, 2, 111, 110, 0, 4, 116, 121, 2, 18, 66, 3, 80, 0, 121, 0, 121, 106, 1, 17, 67, 0, 4, 2, 45, 116, 121, 3, 80, 12,
-			0, 116, 2, 45, 116, 121, 0, 121, 2, 45, 116, 121, 0, 121, 106, 1, 17, 65, 2, 17, 65, 0, 4, 115, 122, 1, 101, 109, 2, 118,
-			195, 169, 110, 121, 3, 119, 0, 115, 122, 1, 101, 116, 2, 104, 0, 115, 122, 1, 161, 195, 106, 2, 100, 0, 115, 122, 1, 161, 195, 108,
-			2, 118, 97, 0, 115, 122, 2, 104, 0, 4, 99, 3, 119, 12, 0, 115, 115, 122, 1, 161, 195, 108, 105, 107, 2, 195, 169, 107, 0, 115,
-			122, 1, 97, 108, 108, 97, 104, 2, 195, 161, 110, 97, 107, 0, 115, 122, 1, 97, 108, 108, 97, 104, 2, 195, 179, 100, 0, 115, 122, 1,
-			101, 109, 2, 105, 116, 101, 107, 0, 115, 122, 8, 182, 195, 107, 2, 101, 114, 0, 7, 6, 117, 0, 3, 40, 0, 1, 116, 101, 106, 118,
-			111, 122, 115, 2, 110, 105, 195, 179, 3, 116, 0, 7, 6, 118, 0, 3, 84, 0, 101, 114, 115, 97, 105, 108, 108, 101, 115, 5, 1, 8,
-			3, 84, 109, 52, 89, 114, 57, 0, 8, 2, 32, 3, 84, 113, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 8, 2, 32, 3,
-			37, 49, 89, 0, 3, 49, 89, 0, 7, 6, 121, 0, 4, 3, 37, 0, 1, 25, 2, 25, 0, 8, 3, 57, 0, 97, 114, 100, 3, 57,
-			108, 52, 72, 0, 97, 114, 100, 100, 3, 57, 108, 52, 72, 12, 0, 7, 6, 122, 0, 4, 3, 88, 0, 1, 97, 114, 161, 195, 122, 115,
-			2, 115, 195, 188, 108, 116, 0, 1, 101, 109, 101, 108, 2, 115, 116, 195, 186, 0, 1, 101, 109, 101, 108, 2, 115, 122, 101, 114, 122, 0,
-			1, 101, 109, 101, 110, 0, 1, 110, 169, 195, 112, 0, 1, 114, 111, 116, 2, 115, 195, 161, 103, 0, 1, 117, 97, 108, 97, 107, 2, 115,
-			195, 161, 103, 0, 1, 145, 197, 2, 115, 195, 182, 114, 195, 169, 116, 0, 1, 145, 197, 103, 2, 115, 117, 103, 195, 161, 114, 0, 1, 145,
-			197, 103, 2, 115, 195, 173, 112, 0, 1, 161, 195, 103, 2, 99, 115, 197, 145, 0, 1, 161, 195, 103, 2, 115, 112, 114, 97, 0, 1, 161,
-			195, 103, 2, 115, 117, 103, 0, 1, 161, 195, 104, 2, 115, 97, 114, 107, 111, 116, 0, 1, 161, 195, 104, 2, 115, 97, 114, 111, 107, 0,
-			1, 161, 195, 104, 2, 115, 111, 0, 1, 161, 195, 104, 114, 179, 195, 107, 2, 115, 195, 161, 0, 1, 161, 195, 112, 111, 116, 0, 1, 161,
-			195, 118, 116, 110, 111, 115, 99, 0, 1, 169, 195, 104, 101, 110, 2, 115, 195, 186, 108, 121, 0, 1, 169, 195, 104, 101, 110, 2, 115, 195,
-			186, 108, 121, 195, 186, 0, 1, 169, 195, 107, 2, 115, 101, 98, 0, 1, 169, 195, 107, 2, 115, 122, 0, 1, 169, 195, 107, 2, 115, 195,
-			169, 114, 195, 188, 108, 0, 1, 169, 195, 107, 2, 122, 115, 105, 98, 98, 97, 100, 195, 161, 115, 0, 1, 169, 195, 109, 2, 115, 195, 182,
-			114, 0, 1, 169, 195, 114, 2, 115, 97, 114, 107, 0, 1, 169, 195, 114, 2, 115, 97, 118, 0, 1, 169, 195, 114, 2, 115, 101, 114, 108,
-			101, 103, 0, 1, 169, 195, 114, 2, 115, 101, 114, 112, 101, 110, 121, 197, 145, 0, 1, 169, 195, 114, 2, 115, 105, 112, 107, 0, 1, 169,
-			195, 114, 2, 115, 105, 115, 97, 107, 0, 1, 169, 195, 114, 2, 115, 111, 100, 0, 1, 169, 195, 114, 2, 115, 111, 100, 114, 111, 110, 121,
-			0, 1, 169, 195, 114, 2, 115, 195, 161, 114, 107, 195, 161, 0, 1, 169, 195, 114, 2, 115, 195, 173, 112, 0, 1, 173, 195, 99, 101, 114,
-			112, 2, 115, 195, 169, 103, 0, 1, 173, 195, 116, 2, 115, 195, 161, 118, 0, 1, 173, 195, 118, 114, 161, 195, 2, 115, 195, 186, 106, 0,
-			1, 177, 197, 116, 0, 1, 177, 197, 116, 2, 122, 115, 195, 161, 107, 0, 1, 177, 197, 122, 115, 2, 115, 195, 188, 108, 116, 0, 1, 179,
-			195, 108, 97, 107, 0, 1, 179, 195, 114, 116, 97, 109, 2, 115, 97, 112, 107, 0, 1, 179, 195, 114, 116, 97, 109, 2, 115, 105, 112, 107,
-			0, 1, 179, 195, 114, 116, 97, 109, 2, 122, 115, 195, 161, 107, 0, 1, 182, 195, 107, 122, 101, 2, 115, 111, 114, 0, 1, 182, 195, 107,
-			122, 101, 2, 115, 195, 161, 118, 0, 1, 182, 195, 107, 122, 115, 101, 2, 115, 111, 114, 0, 1, 182, 195, 107, 122, 115, 101, 2, 115, 195,
-			161, 118, 0, 8, 110, 111, 114, 98, 0, 8, 114, 111, 98, 2, 122, 115, 195, 173, 114, 0, 8, 145, 197, 2, 115, 101, 98, 0, 8, 145,
-			197, 2, 115, 117, 116, 0, 8, 145, 197, 103, 0, 8, 145, 197, 103, 2, 115, 195, 188, 118, 195, 182, 108, 116, 0, 8, 161, 195, 108, 2,
-			115, 101, 98, 0, 8, 161, 195, 108, 2, 115, 195, 179, 104, 0, 8, 161, 195, 122, 115, 2, 115, 111, 114, 0, 8, 169, 195, 109, 2, 115,
-			101, 114, 0, 8, 169, 195, 109, 2, 115, 195, 161, 114, 103, 0, 8, 169, 195, 116, 105, 118, 0, 8, 173, 195, 116, 2, 115, 104, 105, 108,
-			108, 0, 8, 173, 195, 116, 2, 115, 111, 114, 0, 8, 173, 195, 116, 2, 115, 111, 117, 0, 8, 173, 195, 116, 2, 122, 115, 195, 161, 107,
-			0, 8, 173, 195, 118, 2, 115, 0, 8, 177, 197, 116, 2, 122, 115, 111, 110, 103, 108, 197, 145, 114, 0, 99, 1, 161, 195, 109, 2, 115,
-			122, 0, 99, 1, 169, 195, 109, 2, 115, 122, 0, 122, 1, 161, 195, 121, 103, 105, 118, 2, 195, 161, 108, 108, 0, 122, 2, 98, 0, 122,
-			2, 116, 0, 122, 2, 118, 0, 4, 115, 122, 3, 88, 89, 0, 115, 122, 8, 161, 195, 103, 2, 195, 161, 109, 108, 97, 0, 115, 122, 8,
-			161, 195, 103, 2, 195, 161, 109, 108, 195, 161, 0, 4, 115, 1, 97, 103, 2, 195, 161, 103, 3, 88, 91, 0, 115, 1, 145, 197, 2, 117,
-			116, 97, 0, 115, 8, 161, 195, 118, 2, 111, 114, 0, 115, 8, 169, 195, 104, 101, 110, 2, 101, 108, 121, 0, 115, 8, 169, 195, 114, 2,
-			195, 179, 0, 4, 1, 97, 2, 116, 3, 89, 0, 1, 97, 2, 116, 195, 161, 110, 0, 1, 97, 109, 108, 97, 107, 108, 97, 2, 107, 111,
-			0, 1, 101, 2, 116, 0, 1, 101, 100, 110, 101, 114, 2, 107, 101, 100, 0, 1, 101, 106, 101, 102, 101, 98, 2, 116, 101, 0, 1, 101,
-			106, 101, 102, 101, 108, 2, 116, 101, 0, 1, 101, 106, 101, 102, 101, 108, 2, 116, 195, 169, 107, 0, 1, 101, 107, 2, 100, 116, 0, 1,
-			101, 118, 114, 101, 122, 115, 2, 107, 101, 100, 0, 1, 101, 121, 103, 101, 2, 107, 101, 0, 1, 101, 121, 103, 101, 2, 116, 101, 0, 1,
-			101, 121, 108, 101, 104, 2, 107, 101, 0, 1, 101, 121, 108, 101, 104, 2, 107, 101, 100, 0, 1, 105, 98, 2, 116, 97, 116, 0, 1, 105,
-			98, 2, 116, 111, 110, 115, 0, 1, 105, 98, 2, 116, 111, 115, 0, 1, 110, 169, 195, 112, 2, 116, 0, 1, 110, 169, 195, 112, 2, 116,
-			195, 161, 114, 0, 1, 111, 98, 111, 100, 2, 116, 0, 1, 111, 98, 111, 107, 2, 116, 0, 1, 111, 102, 111, 112, 2, 107, 111, 100, 0,
-			1, 111, 103, 108, 111, 100, 2, 116, 0, 1, 111, 103, 110, 97, 104, 2, 116, 0, 1, 111, 103, 111, 98, 2, 116, 195, 161, 107, 0, 1,
-			111, 104, 2, 116, 97, 0, 1, 111, 104, 2, 116, 195, 161, 0, 1, 111, 107, 97, 108, 116, 97, 115, 99, 2, 116, 97, 0, 1, 111, 107,
-			97, 108, 116, 97, 115, 99, 2, 116, 111, 107, 0, 1, 111, 107, 108, 97, 108, 103, 111, 102, 2, 116, 0, 1, 111, 107, 108, 161, 195, 108,
-			97, 116, 2, 116, 0, 1, 111, 107, 111, 2, 116, 0, 1, 111, 107, 116, 97, 110, 111, 118, 2, 116, 97, 0, 1, 111, 107, 116, 97, 116,
-			105, 118, 2, 116, 0, 1, 111, 107, 169, 195, 100, 110, 161, 195, 106, 97, 2, 116, 0, 1, 111, 107, 169, 195, 106, 161, 195, 116, 2, 116,
-			97, 115, 115, 0, 1, 111, 107, 169, 195, 106, 161, 195, 116, 2, 116, 97, 116, 0, 1, 111, 114, 161, 195, 116, 97, 104, 2, 116, 0, 1,
-			111, 116, 108, 161, 195, 118, 2, 116, 97, 115, 115, 0, 1, 111, 116, 108, 161, 195, 118, 2, 116, 97, 116, 0, 1, 111, 116, 114, 97, 116,
-			2, 107, 0, 1, 111, 116, 114, 97, 116, 2, 116, 0, 1, 111, 116, 122, 115, 111, 2, 107, 111, 100, 0, 1, 111, 121, 110, 161, 195, 105,
-			104, 2, 116, 0, 1, 111, 121, 110, 161, 195, 109, 108, 117, 110, 97, 116, 2, 116, 0, 1, 145, 197, 108, 101, 100, 101, 122, 115, 2, 107,
-			195, 182, 0, 1, 145, 197, 108, 108, 101, 122, 115, 2, 116, 101, 116, 0, 1, 145, 197, 116, 106, 101, 114, 2, 107, 195, 182, 0, 1, 145,
-			197, 116, 106, 101, 114, 2, 116, 0, 1, 145, 197, 121, 103, 2, 107, 195, 182, 100, 0, 1, 145, 197, 121, 103, 2, 116, 0, 1, 161, 195,
-			98, 105, 104, 2, 116, 97, 116, 0, 1, 161, 195, 104, 2, 116, 97, 114, 116, 195, 161, 115, 0, 1, 161, 195, 107, 99, 111, 107, 2, 116,
-			97, 0, 1, 161, 195, 114, 2, 107, 195, 179, 100, 0, 1, 161, 195, 114, 97, 121, 103, 97, 109, 2, 107, 111, 100, 0, 1, 161, 195, 114,
-			97, 121, 103, 97, 109, 2, 116, 0, 1, 161, 195, 116, 122, 115, 105, 116, 2, 116, 0, 1, 169, 195, 116, 110, 105, 2, 107, 101, 100, 0,
-			1, 169, 195, 116, 110, 105, 2, 116, 0, 1, 173, 195, 118, 2, 115, 122, 105, 110, 116, 0, 1, 179, 195, 116, 106, 186, 195, 121, 110, 2,
-			107, 111, 0, 1, 179, 195, 116, 114, 97, 116, 2, 107, 0, 1, 179, 195, 116, 114, 97, 116, 2, 116, 0, 1, 182, 195, 98, 110, 182, 195,
-			108, 188, 195, 107, 2, 116, 101, 116, 0, 1, 182, 195, 100, 108, 188, 195, 2, 116, 0, 1, 182, 195, 107, 103, 101, 100, 105, 2, 112, 111,
-			110, 0, 1, 182, 195, 107, 109, 101, 122, 115, 2, 116, 0, 1, 182, 195, 107, 115, 99, 161, 195, 110, 97, 116, 2, 116, 195, 161, 114, 115,
-			97, 115, 195, 161, 103, 0, 1, 182, 195, 107, 122, 115, 101, 2, 116, 0, 1, 182, 195, 116, 108, 182, 195, 2, 107, 195, 182, 0, 1, 182,
-			195, 116, 108, 182, 195, 2, 116, 101, 0, 1, 182, 195, 116, 108, 182, 195, 107, 2, 107, 195, 182, 100, 0, 1, 182, 195, 116, 182, 195, 107,
-			2, 107, 195, 182, 0, 1, 182, 195, 116, 182, 195, 107, 2, 116, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2, 107, 111, 0, 1, 186, 195,
-			115, 99, 186, 195, 98, 2, 107, 111, 100, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2, 116, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2,
-			116, 97, 116, 0, 4, 115, 122, 1, 161, 195, 122, 115, 2, 111, 114, 3, 89, 12, 0, 115, 122, 1, 173, 195, 116, 2, 101, 114, 0, 115,
-			122, 1, 173, 195, 118, 2, 105, 110, 116, 101, 115, 0, 115, 122, 1, 177, 197, 116, 2, 101, 114, 195, 169, 115, 115, 122, 0, 115, 122, 1,
-			177, 197, 116, 2, 101, 114, 195, 169, 115, 122, 0, 4, 115, 3, 90, 0, 115, 8, 110, 169, 195, 112, 2, 101, 100, 0, 115, 8, 111, 114,
-			2, 122, 97, 98, 195, 161, 108, 0, 4, 115, 122, 115, 1, 111, 114, 2, 101, 109, 3, 90, 12, 0, 122, 115, 0, 115, 122, 1, 114, 182,
-			195, 116, 2, 195, 161, 115, 122, 108, 195, 179, 3, 90, 88, 0, 4, 1, 169, 195, 104, 101, 110, 2, 115, 195, 169, 3, 91, 0, 115, 1,
-			105, 114, 2, 116, 0, 115, 1, 161, 195, 114, 97, 100, 2, 102, 195, 169, 115, 122, 101, 107, 0, 115, 1, 161, 195, 114, 97, 103, 2, 116,
-			195, 161, 114, 111, 108, 195, 179, 0, 4, 115, 1, 97, 103, 2, 195, 161, 103, 3, 91, 91, 0, 115, 1, 97, 103, 105, 2, 195, 161, 103,
-			0, 115, 8, 97, 114, 161, 195, 122, 115, 2, 195, 161, 103, 0, 4, 1, 108, 97, 119, 2, 101, 114, 3, 119, 0, 1, 179, 195, 103, 111,
-			102, 2, 107, 111, 100, 0, 4, 105, 112, 112, 122, 195, 161, 114, 3, 119, 37, 48, 88, 114, 52, 0, 105, 112, 122, 195, 161, 114, 0, 195,
-			188, 114, 105, 99, 104, 8, 3, 119, 111, 52, 37, 0, 7, 6, 0, 195, 177, 3, 67, 0, 36, 3, 72, 39, 55, 55, 114, 52, 0, 195,
-			167, 3, 76, 0, 195, 159, 3, 89, 0, 4, 195, 164, 3, 109, 0, 195, 166, 0, 195, 184, 3, 110, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts25 = FileInMemory_createWithData (112825, reinterpret_cast<const char *> (&espeakdata_dicts25_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/hu_dict", 
+			0, 1, 114, 101, 99, 110, 111, 107, 2, 106, 101, 103, 0, 1, 114, 111, 107, 122, 115, 101, 2, 115, 122, 111, 108, 103, 195, 161, 108, 0,
+			1, 114, 111, 112, 111, 115, 99, 2, 115, 111, 114, 115, 111, 108, 0, 1, 114, 111, 112, 115, 2, 99, 101, 110, 116, 0, 1, 114, 111, 112,
+			115, 2, 115, 195, 169, 114, 0, 1, 114, 161, 195, 112, 2, 115, 122, 195, 169, 107, 104, 195, 161, 122, 0, 1, 114, 161, 195, 122, 2, 115,
+			122, 195, 169, 107, 0, 1, 115, 188, 195, 122, 101, 2, 115, 97, 114, 107, 0, 1, 115, 188, 195, 122, 101, 2, 115, 122, 111, 98, 0, 1,
+			115, 188, 195, 122, 101, 2, 115, 122, 195, 169, 108, 0, 1, 115, 188, 195, 122, 101, 2, 115, 122, 197, 145, 107, 101, 0, 1, 115, 188, 195,
+			122, 101, 2, 115, 122, 197, 145, 114, 0, 1, 117, 109, 97, 109, 2, 115, 122, 197, 145, 114, 0, 1, 117, 109, 97, 112, 2, 99, 195, 169,
+			114, 0, 1, 117, 109, 97, 112, 2, 115, 122, 111, 107, 0, 1, 122, 115, 101, 116, 2, 99, 105, 107, 107, 0, 1, 122, 115, 101, 116, 2,
+			99, 105, 107, 108, 0, 1, 122, 115, 101, 116, 2, 99, 195, 169, 108, 0, 1, 122, 115, 101, 116, 2, 106, 195, 161, 114, 109, 0, 1, 122,
+			115, 101, 116, 2, 106, 195, 161, 116, 195, 169, 107, 0, 1, 122, 115, 105, 108, 2, 99, 105, 112, 101, 108, 0, 1, 122, 115, 114, 97, 107,
+			2, 106, 195, 161, 114, 97, 116, 0, 1, 161, 195, 2, 99, 97, 112, 108, 97, 116, 0, 1, 161, 195, 2, 99, 105, 107, 195, 161, 122, 0,
+			1, 161, 195, 2, 99, 195, 173, 109, 0, 1, 161, 195, 102, 122, 115, 111, 102, 2, 106, 195, 182, 118, 101, 100, 101, 108, 0, 1, 161, 195,
+			106, 97, 115, 2, 115, 122, 101, 109, 195, 169, 0, 1, 161, 195, 106, 97, 115, 2, 115, 122, 101, 114, 197, 177, 0, 1, 161, 195, 107, 97,
+			108, 112, 2, 99, 195, 169, 103, 0, 1, 161, 195, 107, 111, 114, 98, 2, 115, 101, 108, 121, 0, 1, 161, 195, 107, 111, 114, 98, 2, 115,
+			122, 0, 1, 161, 195, 108, 114, 97, 107, 115, 2, 115, 122, 195, 173, 110, 0, 1, 161, 195, 114, 97, 98, 2, 115, 122, 101, 114, 101, 110,
+			0, 1, 161, 195, 118, 105, 118, 2, 115, 122, 195, 179, 0, 1, 169, 195, 107, 110, 101, 122, 105, 116, 2, 115, 122, 195, 169, 108, 0, 1,
+			169, 195, 110, 105, 114, 97, 108, 107, 2, 115, 122, 0, 1, 169, 195, 116, 182, 195, 115, 2, 115, 122, 111, 98, 0, 1, 169, 195, 122, 115,
+			2, 115, 117, 103, 195, 161, 114, 0, 1, 169, 195, 122, 115, 2, 115, 122, 111, 114, 116, 195, 173, 114, 0, 1, 169, 195, 122, 115, 2, 115,
+			122, 111, 114, 195, 173, 116, 0, 1, 169, 195, 122, 115, 2, 115, 195, 182, 112, 195, 182, 114, 0, 1, 179, 195, 112, 2, 115, 101, 108, 101,
+			106, 116, 0, 1, 182, 195, 2, 121, 97, 114, 100, 0, 2, 99, 115, 0, 8, 97, 108, 108, 161, 195, 2, 115, 122, 111, 98, 0, 8, 101,
+			108, 103, 101, 122, 115, 2, 115, 122, 0, 8, 102, 97, 116, 2, 115, 101, 108, 121, 0, 8, 105, 115, 122, 161, 195, 112, 2, 115, 122, 0,
+			8, 106, 97, 115, 2, 115, 122, 195, 173, 110, 0, 8, 110, 111, 122, 115, 105, 118, 2, 115, 122, 111, 108, 103, 195, 161, 108, 0, 8, 111,
+			98, 111, 114, 2, 115, 122, 111, 102, 116, 118, 101, 0, 8, 114, 97, 112, 2, 115, 122, 195, 169, 108, 0, 8, 114, 111, 112, 115, 2, 99,
+			195, 169, 108, 0, 8, 115, 101, 2, 115, 122, 195, 169, 108, 0, 8, 115, 101, 116, 2, 115, 122, 197, 145, 114, 0, 8, 145, 197, 114, 2,
+			115, 122, 197, 145, 107, 0, 8, 161, 195, 2, 115, 122, 111, 108, 103, 195, 161, 108, 116, 97, 116, 0, 8, 169, 195, 104, 2, 99, 111, 108,
+			0, 8, 169, 195, 107, 2, 115, 122, 195, 169, 108, 0, 8, 169, 195, 116, 182, 195, 115, 2, 115, 122, 197, 145, 107, 0, 8, 179, 195, 112,
+			2, 115, 122, 111, 108, 103, 195, 161, 108, 0, 104, 1, 97, 2, 195, 169, 110, 0, 116, 1, 182, 195, 100, 108, 188, 195, 107, 2, 103, 121,
+			197, 177, 108, 0, 116, 2, 18, 66, 0, 116, 2, 45, 18, 66, 0, 116, 8, 111, 114, 102, 2, 195, 173, 114, 0, 4, 2, 45, 116, 3,
+			47, 12, 0, 116, 2, 45, 116, 0, 4, 121, 1, 114, 97, 109, 115, 182, 195, 114, 182, 195, 118, 3, 47, 37, 0, 121, 1, 122, 115, 111,
+			110, 0, 121, 8, 97, 107, 2, 110, 0, 116, 106, 8, 111, 2, 195, 161, 114, 3, 47, 57, 0, 4, 115, 122, 1, 161, 195, 2, 111, 114,
+			122, 195, 161, 115, 3, 47, 89, 0, 115, 122, 8, 186, 195, 2, 195, 169, 107, 0, 101, 114, 109, 195, 169, 115, 122, 101, 116, 101, 115, 3,
+			47, 109, 52, 65, 113, 89, 109, 47, 109, 91, 0, 104, 195, 182, 107, 195, 182, 108, 121, 3, 47, 110, 49, 110, 55, 37, 0, 8, 2, 32,
+			3, 47, 113, 0, 195, 179, 108, 1, 21, 2, 32, 14, 128, 192, 131, 3, 47, 115, 55, 0, 197, 145, 108, 1, 21, 2, 32, 14, 128, 192,
+			131, 3, 47, 118, 55, 0, 4, 115, 1, 105, 115, 97, 122, 161, 195, 104, 2, 97, 3, 76, 12, 0, 115, 1, 169, 195, 107, 169, 195, 98,
+			101, 122, 115, 115, 182, 195, 2, 101, 0, 115, 8, 105, 107, 97, 122, 115, 2, 111, 110, 0, 4, 116, 121, 2, 18, 66, 3, 80, 0, 121,
+			0, 121, 106, 1, 17, 67, 0, 4, 2, 45, 116, 121, 3, 80, 12, 0, 116, 2, 45, 116, 121, 0, 121, 2, 45, 116, 121, 0, 121, 106,
+			1, 17, 65, 2, 17, 65, 0, 4, 115, 122, 1, 101, 109, 2, 118, 195, 169, 110, 121, 3, 119, 0, 115, 122, 1, 101, 116, 2, 104, 0,
+			115, 122, 1, 161, 195, 106, 2, 100, 0, 115, 122, 1, 161, 195, 108, 2, 118, 97, 0, 115, 122, 2, 104, 0, 4, 99, 3, 119, 12, 0,
+			115, 115, 122, 1, 161, 195, 108, 105, 107, 2, 195, 169, 107, 0, 115, 122, 1, 97, 108, 108, 97, 104, 2, 195, 161, 110, 97, 107, 0, 115,
+			122, 1, 97, 108, 108, 97, 104, 2, 195, 179, 100, 0, 115, 122, 1, 101, 109, 2, 105, 116, 101, 107, 0, 115, 122, 8, 182, 195, 107, 2,
+			101, 114, 0, 7, 6, 117, 0, 3, 40, 0, 1, 116, 101, 106, 118, 111, 122, 115, 2, 110, 105, 195, 179, 3, 116, 0, 7, 6, 118, 0,
+			3, 84, 0, 101, 114, 115, 97, 105, 108, 108, 101, 115, 5, 1, 8, 3, 84, 109, 52, 89, 114, 57, 0, 8, 2, 32, 3, 84, 113, 0,
+			7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 8, 2, 32, 3, 37, 49, 89, 0, 3, 49, 89, 0, 7, 6, 121, 0, 4, 3, 37,
+			0, 1, 25, 2, 25, 0, 8, 3, 57, 0, 97, 114, 100, 3, 57, 108, 52, 72, 0, 97, 114, 100, 100, 3, 57, 108, 52, 72, 12, 0,
+			7, 6, 122, 0, 4, 3, 88, 0, 1, 97, 109, 108, 97, 104, 0, 1, 97, 114, 161, 195, 122, 115, 2, 115, 195, 188, 108, 116, 0, 1,
+			101, 109, 101, 108, 0, 1, 101, 109, 101, 108, 2, 115, 108, 195, 161, 0, 1, 101, 109, 101, 108, 2, 115, 116, 195, 186, 0, 1, 101, 109,
+			101, 108, 2, 115, 122, 101, 114, 122, 0, 1, 101, 109, 101, 110, 0, 1, 106, 97, 114, 2, 115, 97, 0, 1, 106, 97, 114, 2, 115, 107,
+			105, 99, 0, 1, 106, 97, 114, 2, 115, 111, 114, 0, 1, 106, 97, 114, 2, 115, 116, 0, 1, 110, 169, 195, 112, 0, 1, 114, 111, 116,
+			2, 115, 195, 161, 103, 0, 1, 117, 97, 108, 97, 107, 2, 115, 195, 161, 103, 0, 1, 145, 197, 2, 115, 97, 108, 195, 161, 116, 0, 1,
+			145, 197, 2, 115, 195, 173, 114, 195, 161, 0, 1, 145, 197, 2, 115, 195, 182, 114, 195, 169, 116, 0, 1, 145, 197, 103, 2, 115, 117, 103,
+			195, 161, 114, 0, 1, 145, 197, 103, 2, 115, 195, 173, 112, 0, 1, 161, 195, 103, 2, 99, 115, 197, 145, 0, 1, 161, 195, 103, 2, 115,
+			101, 98, 0, 1, 161, 195, 103, 2, 115, 112, 114, 97, 0, 1, 161, 195, 103, 2, 115, 116, 101, 114, 0, 1, 161, 195, 103, 2, 115, 117,
+			103, 0, 1, 161, 195, 103, 2, 115, 195, 161, 116, 0, 1, 161, 195, 103, 2, 115, 195, 173, 112, 0, 1, 161, 195, 103, 2, 115, 195, 186,
+			114, 0, 1, 161, 195, 103, 2, 115, 195, 188, 116, 0, 1, 161, 195, 103, 2, 115, 197, 177, 114, 0, 1, 161, 195, 103, 2, 122, 115, 195,
+			161, 109, 0, 1, 161, 195, 104, 2, 115, 97, 114, 107, 111, 116, 0, 1, 161, 195, 104, 2, 115, 97, 114, 111, 107, 0, 1, 161, 195, 104,
+			2, 115, 111, 0, 1, 161, 195, 104, 114, 179, 195, 107, 2, 115, 195, 161, 0, 1, 161, 195, 112, 111, 116, 0, 1, 161, 195, 118, 2, 115,
+			195, 169, 114, 0, 1, 161, 195, 118, 116, 110, 111, 115, 99, 0, 1, 169, 195, 104, 101, 110, 2, 115, 195, 186, 108, 121, 0, 1, 169, 195,
+			104, 101, 110, 2, 115, 195, 186, 108, 121, 195, 186, 0, 1, 169, 195, 107, 2, 115, 101, 98, 0, 1, 169, 195, 107, 2, 115, 122, 0, 1,
+			169, 195, 107, 2, 115, 195, 169, 114, 195, 188, 108, 0, 1, 169, 195, 107, 2, 122, 115, 105, 98, 98, 97, 100, 195, 161, 115, 0, 1, 169,
+			195, 109, 2, 115, 195, 182, 114, 0, 1, 169, 195, 114, 2, 115, 97, 114, 107, 0, 1, 169, 195, 114, 2, 115, 97, 118, 0, 1, 169, 195,
+			114, 2, 115, 101, 114, 108, 101, 103, 0, 1, 169, 195, 114, 2, 115, 101, 114, 112, 101, 110, 121, 197, 145, 0, 1, 169, 195, 114, 2, 115,
+			105, 112, 107, 0, 1, 169, 195, 114, 2, 115, 105, 115, 97, 107, 0, 1, 169, 195, 114, 2, 115, 111, 100, 0, 1, 169, 195, 114, 2, 115,
+			111, 100, 114, 111, 110, 121, 0, 1, 169, 195, 114, 2, 115, 195, 161, 114, 107, 195, 161, 0, 1, 169, 195, 114, 2, 115, 195, 173, 112, 0,
+			1, 169, 195, 114, 2, 122, 115, 97, 110, 0, 1, 173, 195, 99, 101, 114, 112, 2, 115, 195, 169, 103, 0, 1, 173, 195, 116, 2, 115, 99,
+			104, 0, 1, 173, 195, 116, 2, 115, 101, 98, 0, 1, 173, 195, 116, 2, 115, 195, 161, 118, 0, 1, 173, 195, 118, 0, 1, 173, 195, 118,
+			2, 122, 115, 111, 110, 103, 0, 1, 173, 195, 118, 2, 122, 115, 195, 161, 107, 0, 1, 173, 195, 118, 114, 161, 195, 2, 115, 195, 186, 106,
+			0, 1, 177, 197, 116, 0, 1, 177, 197, 116, 2, 122, 115, 195, 161, 107, 0, 1, 177, 197, 122, 115, 2, 115, 195, 188, 108, 116, 0, 1,
+			179, 195, 108, 97, 107, 0, 1, 179, 195, 114, 116, 97, 109, 2, 115, 97, 112, 107, 0, 1, 179, 195, 114, 116, 97, 109, 2, 115, 105, 112,
+			107, 0, 1, 179, 195, 114, 116, 97, 109, 2, 122, 115, 195, 161, 107, 0, 1, 182, 195, 107, 122, 101, 2, 115, 111, 114, 0, 1, 182, 195,
+			107, 122, 101, 2, 115, 195, 161, 118, 0, 1, 182, 195, 107, 122, 115, 101, 0, 1, 182, 195, 107, 122, 115, 101, 2, 115, 111, 114, 0, 1,
+			182, 195, 107, 122, 115, 101, 2, 115, 195, 161, 118, 0, 8, 110, 111, 114, 98, 0, 8, 114, 111, 98, 2, 122, 115, 195, 173, 114, 0, 8,
+			145, 197, 2, 115, 101, 98, 0, 8, 145, 197, 2, 115, 117, 116, 0, 8, 145, 197, 103, 0, 8, 145, 197, 103, 2, 115, 195, 188, 118, 195,
+			182, 108, 116, 0, 8, 161, 195, 108, 2, 115, 101, 98, 0, 8, 161, 195, 108, 2, 115, 195, 179, 104, 0, 8, 161, 195, 122, 115, 2, 115,
+			111, 114, 0, 8, 169, 195, 109, 2, 115, 101, 114, 0, 8, 169, 195, 109, 2, 115, 195, 161, 114, 103, 0, 8, 169, 195, 116, 105, 118, 0,
+			8, 173, 195, 116, 2, 115, 104, 105, 108, 108, 0, 8, 173, 195, 116, 2, 115, 111, 114, 0, 8, 173, 195, 116, 2, 115, 111, 117, 0, 8,
+			173, 195, 116, 2, 122, 115, 195, 161, 107, 0, 8, 173, 195, 118, 2, 115, 0, 8, 177, 197, 116, 2, 122, 115, 111, 110, 103, 108, 197, 145,
+			114, 0, 99, 1, 161, 195, 109, 2, 115, 122, 0, 99, 1, 169, 195, 109, 2, 115, 122, 0, 122, 1, 161, 195, 121, 103, 105, 118, 2, 195,
+			161, 108, 108, 0, 122, 2, 98, 0, 122, 2, 116, 0, 122, 2, 118, 0, 4, 115, 122, 3, 88, 89, 0, 115, 122, 8, 161, 195, 103, 2,
+			195, 161, 109, 108, 97, 0, 115, 122, 8, 161, 195, 103, 2, 195, 161, 109, 108, 195, 161, 0, 4, 115, 1, 97, 103, 2, 195, 161, 103, 3,
+			88, 91, 0, 115, 1, 145, 197, 2, 117, 116, 97, 0, 115, 8, 161, 195, 118, 2, 111, 114, 0, 115, 8, 169, 195, 104, 101, 110, 2, 101,
+			108, 121, 0, 115, 8, 169, 195, 114, 2, 195, 179, 0, 4, 1, 97, 2, 116, 3, 89, 0, 1, 97, 2, 116, 195, 161, 110, 0, 1, 97,
+			109, 108, 97, 107, 108, 97, 2, 107, 111, 0, 1, 101, 2, 116, 0, 1, 101, 100, 110, 101, 114, 2, 107, 101, 100, 0, 1, 101, 106, 101,
+			102, 101, 98, 2, 116, 101, 0, 1, 101, 106, 101, 102, 101, 108, 2, 116, 101, 0, 1, 101, 106, 101, 102, 101, 108, 2, 116, 195, 169, 107,
+			0, 1, 101, 107, 2, 100, 116, 0, 1, 101, 118, 114, 101, 122, 115, 2, 107, 101, 100, 0, 1, 101, 121, 103, 101, 2, 107, 101, 0, 1,
+			101, 121, 103, 101, 2, 116, 101, 0, 1, 101, 121, 108, 101, 104, 2, 107, 101, 0, 1, 101, 121, 108, 101, 104, 2, 107, 101, 100, 0, 1,
+			105, 98, 2, 116, 97, 116, 0, 1, 105, 98, 2, 116, 111, 110, 115, 0, 1, 105, 98, 2, 116, 111, 115, 0, 1, 110, 169, 195, 112, 2,
+			116, 0, 1, 110, 169, 195, 112, 2, 116, 195, 161, 114, 0, 1, 111, 98, 111, 100, 2, 116, 0, 1, 111, 98, 111, 107, 2, 116, 0, 1,
+			111, 102, 111, 112, 2, 107, 111, 100, 0, 1, 111, 103, 108, 111, 100, 2, 116, 0, 1, 111, 103, 110, 97, 104, 2, 116, 0, 1, 111, 103,
+			111, 98, 2, 116, 195, 161, 107, 0, 1, 111, 104, 2, 116, 97, 0, 1, 111, 104, 2, 116, 195, 161, 0, 1, 111, 107, 97, 108, 116, 97,
+			115, 99, 2, 116, 97, 0, 1, 111, 107, 97, 108, 116, 97, 115, 99, 2, 116, 111, 107, 0, 1, 111, 107, 108, 97, 108, 103, 111, 102, 2,
+			116, 0, 1, 111, 107, 108, 161, 195, 108, 97, 116, 2, 116, 0, 1, 111, 107, 111, 2, 116, 0, 1, 111, 107, 116, 97, 110, 111, 118, 2,
+			116, 97, 0, 1, 111, 107, 116, 97, 116, 105, 118, 2, 116, 0, 1, 111, 107, 169, 195, 100, 110, 161, 195, 106, 97, 2, 116, 0, 1, 111,
+			107, 169, 195, 106, 161, 195, 116, 2, 116, 97, 115, 115, 0, 1, 111, 107, 169, 195, 106, 161, 195, 116, 2, 116, 97, 116, 0, 1, 111, 114,
+			161, 195, 116, 97, 104, 2, 116, 0, 1, 111, 116, 108, 161, 195, 118, 2, 116, 97, 115, 115, 0, 1, 111, 116, 108, 161, 195, 118, 2, 116,
+			97, 116, 0, 1, 111, 116, 114, 97, 116, 2, 107, 0, 1, 111, 116, 114, 97, 116, 2, 116, 0, 1, 111, 116, 122, 115, 111, 2, 107, 111,
+			100, 0, 1, 111, 121, 110, 161, 195, 105, 104, 2, 116, 0, 1, 111, 121, 110, 161, 195, 109, 108, 117, 110, 97, 116, 2, 116, 0, 1, 145,
+			197, 108, 101, 100, 101, 122, 115, 2, 107, 195, 182, 0, 1, 145, 197, 108, 108, 101, 122, 115, 2, 116, 101, 116, 0, 1, 145, 197, 116, 106,
+			101, 114, 2, 107, 195, 182, 0, 1, 145, 197, 116, 106, 101, 114, 2, 116, 0, 1, 145, 197, 121, 103, 2, 107, 195, 182, 100, 0, 1, 145,
+			197, 121, 103, 2, 116, 0, 1, 161, 195, 98, 105, 104, 2, 116, 97, 116, 0, 1, 161, 195, 104, 2, 116, 97, 114, 116, 195, 161, 115, 0,
+			1, 161, 195, 107, 99, 111, 107, 2, 116, 97, 0, 1, 161, 195, 114, 2, 107, 195, 179, 100, 0, 1, 161, 195, 114, 97, 121, 103, 97, 109,
+			2, 107, 111, 100, 0, 1, 161, 195, 114, 97, 121, 103, 97, 109, 2, 116, 0, 1, 161, 195, 116, 122, 115, 105, 116, 2, 116, 0, 1, 169,
+			195, 116, 110, 105, 2, 107, 101, 100, 0, 1, 169, 195, 116, 110, 105, 2, 116, 0, 1, 173, 195, 118, 2, 115, 122, 105, 110, 116, 0, 1,
+			179, 195, 116, 106, 186, 195, 121, 110, 2, 107, 111, 0, 1, 179, 195, 116, 114, 97, 116, 2, 107, 0, 1, 179, 195, 116, 114, 97, 116, 2,
+			116, 0, 1, 182, 195, 98, 110, 182, 195, 108, 188, 195, 107, 2, 116, 101, 116, 0, 1, 182, 195, 100, 108, 188, 195, 2, 116, 0, 1, 182,
+			195, 107, 103, 101, 100, 105, 2, 112, 111, 110, 0, 1, 182, 195, 107, 103, 169, 195, 115, 122, 115, 169, 195, 103, 101, 2, 112, 111, 110, 116,
+			0, 1, 182, 195, 107, 109, 101, 122, 115, 2, 116, 0, 1, 182, 195, 107, 115, 99, 161, 195, 110, 97, 116, 2, 116, 195, 161, 114, 115, 97,
+			115, 195, 161, 103, 0, 1, 182, 195, 107, 122, 115, 101, 2, 116, 0, 1, 182, 195, 116, 108, 182, 195, 2, 107, 195, 182, 0, 1, 182, 195,
+			116, 108, 182, 195, 2, 116, 101, 0, 1, 182, 195, 116, 108, 182, 195, 107, 2, 107, 195, 182, 100, 0, 1, 182, 195, 116, 182, 195, 107, 2,
+			107, 195, 182, 0, 1, 182, 195, 116, 182, 195, 107, 2, 116, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2, 107, 111, 0, 1, 186, 195, 115,
+			99, 186, 195, 98, 2, 107, 111, 100, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2, 116, 0, 1, 186, 195, 115, 99, 186, 195, 98, 2, 116,
+			97, 116, 0, 4, 115, 122, 1, 161, 195, 122, 115, 2, 111, 114, 3, 89, 12, 0, 115, 122, 1, 173, 195, 116, 2, 101, 114, 0, 115, 122,
+			1, 173, 195, 118, 2, 105, 110, 116, 101, 115, 0, 115, 122, 1, 177, 197, 116, 2, 101, 114, 195, 169, 115, 115, 122, 0, 115, 122, 1, 177,
+			197, 116, 2, 101, 114, 195, 169, 115, 122, 0, 4, 115, 3, 90, 0, 115, 1, 105, 114, 2, 122, 97, 98, 0, 115, 1, 161, 195, 122, 115,
+			115, 97, 109, 2, 122, 117, 104, 0, 115, 8, 110, 169, 195, 112, 2, 101, 100, 0, 115, 8, 111, 114, 2, 122, 97, 98, 195, 161, 108, 0,
+			4, 115, 122, 115, 1, 111, 114, 2, 101, 109, 3, 90, 12, 0, 122, 115, 0, 4, 115, 122, 1, 114, 182, 195, 100, 2, 195, 182, 114, 3,
+			90, 88, 0, 115, 122, 1, 114, 182, 195, 116, 2, 195, 161, 115, 122, 108, 195, 179, 0, 4, 1, 169, 195, 104, 101, 110, 2, 115, 195, 169,
+			3, 91, 0, 115, 1, 105, 114, 2, 116, 0, 115, 1, 161, 195, 114, 97, 100, 2, 102, 195, 169, 115, 122, 101, 107, 0, 115, 1, 161, 195,
+			114, 97, 103, 2, 116, 195, 161, 114, 111, 108, 195, 179, 0, 4, 115, 1, 97, 103, 2, 195, 161, 103, 3, 91, 91, 0, 115, 1, 97, 103,
+			105, 2, 195, 161, 103, 0, 115, 1, 97, 114, 161, 195, 122, 115, 2, 195, 161, 103, 0, 4, 1, 108, 97, 119, 2, 101, 114, 3, 119, 0,
+			1, 179, 195, 103, 111, 102, 2, 107, 111, 100, 0, 4, 105, 112, 112, 122, 195, 161, 114, 3, 119, 37, 48, 88, 114, 52, 0, 105, 112, 122,
+			195, 161, 114, 0, 195, 188, 114, 105, 99, 104, 8, 3, 119, 111, 52, 37, 0, 7, 6, 0, 195, 177, 3, 67, 0, 36, 3, 72, 39, 55,
+			55, 114, 52, 0, 195, 167, 3, 76, 0, 195, 159, 3, 89, 0, 4, 195, 164, 3, 109, 0, 195, 166, 0, 195, 184, 3, 110, 0, 7, 0,
+			0};
+		autoFileInMemory espeakdata_dicts28 = FileInMemory_createWithData (113340, reinterpret_cast<const char *> (&espeakdata_dicts28_data), 
+			U"espeak-1.48.04-source/espeak-data/hu_dict", 
 			U"hu");
-		Collection_addItem (me.peek(), espeakdata_dicts25.transfer());
+		my addItem_move (espeakdata_dicts28.move());
 
-		static unsigned char espeakdata_dicts26_data[2436] = {
-			0, 4, 0, 0, 114, 6, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 0, 6, 65, 8, 71, 37, 0, 0, 0,
-			0, 0, 6, 65, 12, 89, 37, 0, 0, 0, 0, 0, 6, 65, 16, 72, 37, 0, 0, 0, 0, 0, 5, 65, 20, 36, 0, 0, 0, 0,
-			0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 4, 16, 20, 10, 89, 47, 39, 69, 35,
-			49, 6, 36, 55, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3,
-			95, 51, 88, 57, 36, 34, 36, 89, 6, 40, 50, 0, 0, 13, 3, 95, 48, 67, 107, 35, 34, 57, 6, 40, 34, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 48, 47, 6, 35, 89, 13, 0,
+		static unsigned char espeakdata_dicts29_data[3401] = {
+			0, 4, 0, 0, 252, 9, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 0, 6, 65, 8, 71, 37, 0, 0, 0,
+			0, 0, 6, 65, 12, 89, 37, 0, 0, 0, 0, 0, 6, 65, 16, 72, 37, 0, 0, 0, 0, 18, 4, 95, 100, 112, 116, 10, 89, 47,
+			39, 69, 35, 49, 6, 36, 55, 10, 0, 0, 5, 65, 20, 36, 0, 0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 9, 134,
+			213, 164, 213, 184, 214, 130, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 36, 72, 39, 55, 35, 34, 0, 0, 15, 1, 37, 213,
+			191, 213, 184, 213, 175, 213, 184, 213, 189, 0, 29, 0, 0, 0, 0, 0, 21, 1, 42, 213, 161, 213, 189, 213, 191, 213, 178, 213, 161, 213,
+			182, 213, 171, 213, 183, 0, 29, 0, 21, 1, 43, 213, 163, 213, 184, 214, 130, 213, 180, 213, 161, 214, 128, 213, 161, 213, 174, 0, 29, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 61, 213, 176, 213, 161, 213, 190, 213, 161, 213, 189,
+			213, 161, 214, 128, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 213, 175, 213, 161, 214, 128, 213, 184, 213, 178, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 213, 164, 213, 184, 214, 130, 214,
+			132, 76, 11, 136, 213, 164, 213, 184, 214, 130, 214, 132, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 213, 182, 213, 161, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 213, 167, 214, 128, 76, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 132, 213, 184, 214, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 9, 4, 213, 184, 213, 190, 39, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 10,
+			213, 184, 213, 190, 214, 132, 213, 165, 214, 128, 39, 84, 115, 36, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 51, 88,
+			57, 36, 34, 36, 89, 6, 40, 50, 0, 0, 13, 3, 95, 48, 67, 107, 35, 34, 57, 6, 40, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 213, 165, 213, 182, 214, 132, 76, 0, 0, 11, 136, 213, 180, 213, 165, 213, 182,
+			214, 132, 76, 0, 0, 13, 138, 213, 182, 214, 128, 213, 161, 213, 182, 214, 132, 76, 0, 11, 3, 95, 49, 48, 47, 6, 35, 89, 13, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 55, 88, 57, 36, 39, 25, 35, 50, 35, 89, 6, 40, 50, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 88, 47, 35, 89, 50, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 11, 3, 95, 50, 88, 115, 89, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 63,
@@ -21166,153 +31260,178 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 50, 65, 37, 55, 6, 39, 50, 0, 0, 0, 0, 13, 4, 95, 48, 77, 49, 107, 35, 88,
 			6, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 3, 95, 214, 133, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 3, 95, 213, 168, 6, 13, 25, 0, 0, 7, 3, 95, 213, 167, 36, 0, 0, 0, 0, 0, 0, 0, 8, 3, 95, 213, 161,
-			110, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 3, 1, 16, 65, 4, 36,
-			117, 23, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 95, 51, 57, 36, 34, 6, 36, 115, 0, 0, 11, 2, 95, 50, 57, 36, 34, 49,
-			6, 40, 0, 0, 9, 2, 95, 49, 65, 6, 36, 49, 0, 0, 10, 2, 95, 48, 88, 13, 69, 6, 39, 0, 0, 9, 2, 95, 55, 57,
-			6, 39, 25, 0, 0, 9, 2, 95, 54, 84, 6, 36, 114, 0, 0, 10, 2, 95, 53, 107, 6, 37, 50, 81, 0, 0, 10, 2, 95, 52,
-			76, 6, 39, 34, 89, 0, 0, 0, 7, 2, 214, 134, 83, 36, 0, 0, 9, 2, 95, 57, 6, 37, 50, 13, 0, 0, 8, 2, 95, 56,
-			6, 40, 25, 0, 7, 2, 214, 132, 115, 36, 0, 0, 8, 2, 214, 131, 113, 108, 34, 0, 0, 8, 2, 214, 130, 107, 108, 50, 0, 0,
-			7, 2, 214, 129, 117, 39, 0, 0, 7, 2, 214, 128, 34, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 7, 2, 213, 166, 88, 35, 0, 0, 8, 2, 213, 165, 57, 36, 76, 0, 0, 7, 2, 213, 164, 72, 35, 0, 0, 8, 2,
-			213, 163, 81, 37, 65, 0, 0, 8, 2, 213, 162, 71, 36, 50, 0, 0, 0, 0, 8, 2, 213, 175, 49, 36, 50, 0, 0, 7, 2, 213,
-			174, 117, 35, 0, 0, 7, 2, 213, 173, 106, 36, 0, 0, 8, 2, 213, 172, 55, 108, 50, 0, 0, 8, 2, 213, 171, 37, 50, 37, 0,
-			0, 7, 2, 213, 170, 90, 36, 0, 0, 7, 2, 213, 169, 25, 39, 0, 0, 0, 7, 2, 213, 183, 91, 35, 0, 0, 7, 2, 213, 182,
-			50, 40, 0, 0, 7, 2, 213, 181, 107, 37, 0, 0, 8, 2, 213, 180, 65, 36, 50, 0, 0, 7, 2, 213, 179, 80, 36, 0, 0, 8,
-			2, 213, 178, 54, 35, 72, 0, 0, 7, 2, 213, 177, 116, 35, 0, 0, 7, 2, 213, 176, 107, 39, 0, 0, 8, 2, 213, 191, 47, 108,
-			50, 0, 0, 8, 2, 213, 190, 84, 36, 84, 0, 0, 7, 2, 213, 189, 89, 36, 0, 0, 7, 2, 213, 188, 69, 35, 0, 0, 7, 2,
-			213, 187, 75, 36, 0, 0, 7, 2, 213, 186, 48, 36, 0, 0, 7, 2, 213, 185, 76, 35, 0, 0, 7, 2, 213, 184, 84, 39, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 18, 66, 213, 162, 0, 213, 163, 0, 213, 169, 0, 213, 175, 0, 213, 186, 0, 213, 191, 0, 214, 132, 0, 7, 6, 18, 67, 213, 184,
-			214, 130, 0, 213, 161, 213, 181, 0, 213, 171, 214, 130, 0, 213, 171, 213, 181, 0, 213, 184, 213, 181, 0, 7, 6, 20, 0, 0, 135, 5,
-			0, 0, 101, 5, 130, 5, 0, 0, 0, 0, 6, 1, 50, 0, 4, 3, 35, 0, 213, 181, 2, 32, 0, 213, 181, 3, 110, 0, 7, 6,
-			1, 51, 0, 3, 71, 0, 8, 2, 17, 67, 3, 71, 13, 0, 7, 6, 1, 52, 0, 3, 81, 0, 8, 2, 17, 67, 3, 81, 13, 0,
-			7, 6, 1, 53, 0, 3, 72, 0, 8, 2, 17, 67, 3, 72, 13, 0, 7, 6, 1, 54, 0, 3, 36, 0, 213, 161, 3, 57, 35, 0,
-			8, 3, 57, 36, 0, 214, 133, 3, 57, 39, 0, 7, 6, 1, 55, 0, 8, 2, 18, 66, 3, 13, 88, 0, 3, 88, 0, 8, 2, 17,
-			67, 3, 88, 13, 0, 7, 6, 1, 56, 0, 3, 36, 0, 214, 133, 3, 109, 0, 213, 181, 3, 111, 0, 7, 6, 1, 57, 0, 3, 13,
-			0, 7, 6, 1, 58, 0, 3, 25, 0, 8, 2, 17, 67, 3, 25, 13, 0, 7, 6, 1, 59, 0, 3, 90, 0, 7, 6, 1, 60, 0,
-			3, 37, 0, 214, 130, 2, 32, 3, 37, 84, 0, 214, 130, 3, 108, 0, 213, 181, 3, 112, 0, 7, 6, 1, 61, 0, 3, 55, 0, 8,
-			2, 17, 67, 3, 55, 13, 0, 7, 6, 1, 62, 0, 3, 106, 0, 7, 6, 1, 63, 0, 3, 117, 0, 8, 2, 17, 67, 3, 117, 13,
-			0, 7, 6, 1, 64, 0, 3, 49, 0, 8, 2, 17, 67, 3, 49, 13, 0, 7, 6, 1, 65, 0, 3, 107, 0, 8, 2, 17, 67, 3,
-			107, 13, 0, 7, 6, 1, 66, 0, 3, 116, 0, 8, 2, 17, 67, 3, 116, 13, 0, 7, 6, 1, 67, 0, 3, 54, 0, 8, 2, 17,
-			67, 3, 54, 13, 0, 7, 6, 1, 68, 0, 3, 80, 0, 8, 2, 17, 67, 3, 80, 13, 0, 7, 6, 1, 69, 0, 1, 17, 67, 2,
-			32, 3, 13, 65, 0, 4, 3, 65, 0, 1, 18, 67, 2, 32, 0, 8, 2, 17, 67, 3, 65, 13, 0, 7, 6, 1, 70, 0, 3, 107,
-			0, 8, 2, 17, 67, 3, 107, 13, 0, 7, 6, 1, 71, 0, 1, 17, 67, 2, 32, 3, 13, 50, 0, 4, 3, 50, 0, 1, 18, 67,
-			2, 32, 0, 8, 2, 17, 67, 3, 50, 13, 0, 7, 6, 1, 72, 0, 8, 2, 213, 191, 3, 13, 91, 0, 3, 91, 0, 8, 2, 17,
-			67, 3, 91, 13, 0, 7, 6, 1, 73, 0, 4, 3, 39, 0, 213, 181, 2, 32, 0, 213, 181, 1, 17, 65, 3, 39, 57, 0, 214, 130,
-			3, 40, 0, 213, 181, 3, 40, 57, 0, 214, 130, 2, 17, 65, 3, 84, 0, 8, 3, 84, 39, 0, 7, 6, 1, 74, 0, 3, 76, 0,
-			8, 2, 17, 67, 3, 76, 13, 0, 7, 6, 1, 75, 0, 3, 48, 0, 8, 2, 17, 67, 3, 48, 13, 0, 7, 6, 1, 76, 0, 3,
-			75, 0, 8, 2, 17, 67, 3, 75, 13, 0, 7, 6, 1, 77, 0, 3, 69, 0, 8, 2, 17, 67, 3, 69, 13, 0, 7, 6, 1, 78,
-			0, 8, 2, 18, 66, 3, 13, 89, 0, 3, 89, 0, 8, 2, 17, 67, 3, 89, 13, 0, 7, 6, 1, 79, 0, 3, 84, 0, 8, 2,
-			17, 67, 3, 84, 13, 0, 7, 6, 1, 80, 0, 3, 47, 0, 8, 2, 17, 67, 3, 47, 13, 0, 7, 6, 1, 81, 0, 1, 17, 67,
-			2, 32, 3, 13, 34, 0, 4, 3, 34, 0, 1, 18, 67, 2, 32, 0, 8, 2, 17, 67, 3, 34, 13, 0, 7, 6, 1, 82, 0, 3,
-			114, 0, 8, 2, 17, 67, 3, 114, 13, 0, 7, 6, 1, 83, 0, 3, 84, 0, 8, 2, 17, 67, 3, 84, 13, 0, 7, 6, 1, 84,
-			0, 8, 2, 17, 67, 3, 48, 6, 13, 0, 3, 113, 0, 7, 6, 1, 85, 0, 3, 115, 0, 8, 2, 17, 67, 3, 115, 13, 0, 7,
-			6, 1, 86, 0, 3, 39, 0, 7, 6, 1, 87, 0, 3, 83, 0, 8, 2, 17, 67, 3, 83, 13, 0, 7, 6, 0, 36, 3, 72, 39,
-			55, 13, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts26 = FileInMemory_createWithData (2435, reinterpret_cast<const char *> (&espeakdata_dicts26_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/hy_dict", 
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 213, 180, 213, 171, 76, 0, 0, 0, 0, 0, 0, 7, 132, 213, 164, 213,
+			161, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 99, 97, 112, 65, 4, 36, 117, 23, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 194, 171, 118, 35, 49, 4, 36, 34, 25, 13,
+			15, 71, 6, 35, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 213, 165, 214, 132, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 19, 3, 95, 194, 187, 118, 35, 49, 4, 36, 34, 25, 13, 15, 113, 6, 35, 49, 0, 0, 0, 0, 0, 9, 134, 213, 175, 213, 161,
+			213, 180, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 213, 165, 213, 190, 76,
+			0, 0, 0, 9, 134, 213, 176, 213, 165, 213, 191, 76, 7, 132, 213, 165, 213, 189, 76, 0, 0, 0, 0, 0, 7, 132, 213, 165, 213, 182,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 214, 138, 57, 36, 50, 25, 35, 65, 50,
+			6, 35, 0, 0, 0, 0, 15, 3, 95, 214, 137, 84, 36, 34, 75, 35, 49, 6, 36, 47, 0, 0, 0, 0, 0, 8, 3, 95, 214, 133,
+			39, 0, 101, 9, 3, 95, 214, 133, 6, 39, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 10, 3, 95, 213, 168, 6, 13, 25, 0, 101, 9, 3, 95, 213, 168, 6, 13, 12, 0, 0, 8, 3, 95, 213, 167, 36, 0, 101,
+			9, 3, 95, 213, 167, 6, 36, 12, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 213, 161, 110, 71, 0, 101, 8, 3, 95, 213, 161, 35,
+			12, 0, 0, 0, 12, 3, 95, 213, 159, 48, 35, 47, 6, 37, 58, 0, 0, 15, 3, 95, 213, 158, 107, 35, 34, 114, 35, 49, 6, 35,
+			50, 0, 0, 10, 3, 95, 213, 157, 71, 6, 40, 25, 0, 0, 19, 3, 95, 213, 156, 71, 35, 114, 35, 49, 35, 50, 118, 35, 49, 6,
+			35, 50, 0, 0, 11, 3, 95, 213, 155, 91, 6, 36, 91, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,
+			95, 41, 113, 35, 49, 35, 81, 4, 37, 117, 13, 15, 113, 6, 35, 49, 0, 0, 19, 2, 95, 40, 113, 35, 49, 35, 81, 4, 37, 117,
+			13, 15, 71, 6, 35, 114, 0, 0, 0, 13, 2, 95, 46, 65, 37, 75, 35, 49, 6, 36, 47, 0, 0, 8, 2, 95, 45, 81, 37, 117,
+			0, 0, 14, 2, 95, 44, 89, 47, 39, 34, 35, 49, 6, 36, 47, 0, 0, 11, 2, 95, 51, 57, 36, 34, 6, 36, 115, 0, 0, 11,
+			2, 95, 50, 57, 36, 34, 49, 6, 40, 0, 0, 9, 2, 95, 49, 65, 6, 36, 49, 0, 0, 10, 2, 95, 48, 88, 13, 69, 6, 39,
+			0, 0, 9, 2, 95, 55, 57, 6, 39, 25, 0, 0, 9, 2, 95, 54, 84, 6, 36, 114, 0, 0, 10, 2, 95, 53, 107, 6, 37, 50,
+			81, 0, 0, 10, 2, 95, 52, 118, 6, 39, 34, 89, 0, 0, 9, 2, 214, 135, 57, 36, 84, 0, 101, 9, 2, 214, 135, 57, 6, 36,
+			84, 0, 0, 14, 2, 95, 58, 84, 36, 34, 75, 35, 49, 6, 36, 47, 0, 8, 2, 214, 134, 83, 36, 0, 101, 8, 2, 214, 134, 83,
+			6, 13, 0, 0, 9, 2, 95, 57, 6, 37, 50, 13, 0, 0, 8, 2, 95, 56, 6, 40, 25, 0, 8, 2, 214, 132, 115, 36, 0, 101,
+			8, 2, 214, 132, 115, 6, 13, 0, 0, 9, 2, 214, 131, 113, 108, 34, 0, 101, 8, 2, 214, 131, 113, 6, 13, 0, 0, 9, 2, 214,
+			130, 107, 108, 50, 0, 101, 8, 2, 214, 130, 6, 40, 12, 0, 0, 8, 2, 214, 129, 114, 39, 0, 101, 8, 2, 214, 129, 114, 6, 13,
+			0, 0, 8, 2, 214, 128, 34, 36, 0, 101, 8, 2, 214, 128, 34, 6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 9, 134, 213, 184, 214, 128, 213, 168, 76, 0, 5, 130, 213, 167, 76, 0, 8, 2, 213, 166, 88, 35, 0, 101, 8, 2,
+			213, 166, 88, 6, 13, 0, 0, 9, 2, 213, 165, 57, 36, 76, 0, 101, 8, 2, 213, 165, 57, 6, 36, 0, 0, 8, 2, 213, 164, 72,
+			35, 0, 101, 8, 2, 213, 164, 72, 6, 13, 0, 0, 9, 2, 213, 163, 81, 37, 65, 0, 101, 8, 2, 213, 163, 81, 6, 13, 0, 0,
+			9, 2, 213, 162, 71, 36, 50, 0, 101, 8, 2, 213, 162, 71, 6, 13, 0, 0, 0, 0, 9, 2, 213, 175, 49, 36, 50, 0, 101, 8,
+			2, 213, 175, 49, 6, 13, 0, 0, 8, 2, 213, 174, 117, 35, 0, 101, 8, 2, 213, 174, 117, 6, 13, 0, 0, 8, 2, 213, 173, 106,
+			36, 0, 101, 8, 2, 213, 173, 106, 6, 13, 0, 0, 9, 2, 213, 172, 55, 108, 50, 0, 101, 8, 2, 213, 172, 55, 6, 13, 0, 0,
+			9, 2, 213, 171, 37, 50, 37, 0, 101, 8, 2, 213, 171, 6, 37, 12, 0, 0, 8, 2, 213, 170, 90, 36, 0, 101, 8, 2, 213, 170,
+			90, 6, 13, 0, 0, 8, 2, 213, 169, 25, 39, 0, 101, 8, 2, 213, 169, 25, 6, 13, 0, 0, 0, 8, 2, 213, 183, 91, 35, 0,
+			101, 8, 2, 213, 183, 91, 6, 13, 0, 0, 8, 2, 213, 182, 50, 40, 0, 101, 8, 2, 213, 182, 50, 6, 13, 0, 0, 8, 2, 213,
+			181, 107, 37, 0, 101, 8, 2, 213, 181, 57, 6, 13, 0, 0, 9, 2, 213, 180, 65, 36, 50, 0, 101, 8, 2, 213, 180, 65, 6, 13,
+			0, 0, 8, 2, 213, 179, 76, 36, 0, 101, 8, 2, 213, 179, 76, 6, 13, 0, 0, 9, 2, 213, 178, 54, 35, 47, 0, 101, 8, 2,
+			213, 178, 54, 6, 13, 0, 0, 8, 2, 213, 177, 116, 35, 0, 101, 8, 2, 213, 177, 116, 6, 13, 0, 0, 8, 2, 213, 176, 107, 39,
+			0, 101, 8, 2, 213, 176, 107, 6, 13, 0, 0, 9, 2, 213, 191, 47, 108, 50, 0, 101, 8, 2, 213, 191, 47, 6, 13, 0, 0, 9,
+			2, 213, 190, 84, 36, 84, 0, 101, 8, 2, 213, 190, 84, 6, 13, 0, 0, 8, 2, 213, 189, 89, 36, 0, 101, 8, 2, 213, 189, 89,
+			6, 13, 0, 0, 8, 2, 213, 188, 52, 35, 0, 101, 8, 2, 213, 188, 52, 6, 13, 0, 0, 8, 2, 213, 187, 75, 36, 0, 101, 8,
+			2, 213, 187, 75, 6, 13, 0, 0, 8, 2, 213, 186, 48, 36, 0, 101, 8, 2, 213, 186, 48, 6, 13, 0, 0, 8, 2, 213, 185, 118,
+			35, 0, 101, 8, 2, 213, 185, 118, 6, 13, 0, 0, 8, 2, 213, 184, 84, 39, 0, 101, 8, 2, 213, 184, 84, 6, 39, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 134, 213, 161, 213, 181, 213, 164, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 213, 161, 213, 181, 213, 189, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 213, 161, 213, 181, 213, 182, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 213, 171, 213, 189, 213, 175, 76, 28, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 18, 66, 213, 162, 0, 213, 163, 0, 213, 169, 0, 213, 175, 0, 213, 186, 0, 213, 191, 0, 214, 132, 0,
+			7, 6, 18, 67, 213, 184, 214, 130, 213, 181, 0, 213, 184, 214, 130, 0, 213, 161, 213, 181, 0, 213, 171, 214, 130, 0, 213, 171, 213, 181,
+			0, 213, 184, 213, 181, 0, 213, 161, 0, 213, 165, 0, 213, 168, 0, 213, 171, 0, 213, 184, 0, 214, 133, 0, 7, 6, 20, 0, 0, 0,
+			135, 5, 0, 0, 101, 5, 130, 5, 0, 0, 0, 0, 6, 1, 50, 0, 4, 3, 35, 0, 213, 181, 5, 1, 2, 32, 0, 213, 181, 3,
+			110, 0, 7, 6, 1, 51, 0, 3, 71, 0, 8, 2, 17, 66, 3, 71, 13, 0, 7, 6, 1, 52, 0, 3, 81, 0, 8, 2, 17, 66,
+			3, 81, 13, 0, 7, 6, 1, 53, 0, 3, 72, 0, 8, 2, 17, 66, 3, 72, 13, 0, 7, 6, 1, 54, 0, 3, 36, 0, 213, 161,
+			3, 57, 35, 0, 8, 3, 57, 36, 0, 214, 133, 3, 57, 39, 0, 7, 6, 1, 55, 0, 8, 2, 18, 66, 12, 3, 13, 88, 0, 3,
+			88, 0, 8, 2, 17, 66, 3, 88, 13, 0, 7, 6, 1, 56, 0, 3, 36, 0, 214, 133, 3, 109, 0, 213, 181, 3, 111, 0, 7, 6,
+			1, 57, 0, 3, 13, 0, 7, 6, 1, 58, 0, 3, 25, 0, 8, 2, 17, 66, 3, 25, 13, 0, 7, 6, 1, 59, 0, 3, 90, 0,
+			7, 6, 1, 60, 0, 3, 37, 0, 214, 130, 2, 32, 3, 37, 84, 0, 214, 130, 3, 108, 0, 213, 181, 2, 25, 3, 112, 0, 7, 6,
+			1, 61, 0, 3, 55, 0, 8, 2, 17, 66, 3, 55, 13, 0, 7, 6, 1, 62, 0, 3, 106, 0, 7, 6, 1, 63, 0, 3, 117, 0,
+			8, 2, 17, 66, 3, 117, 13, 0, 7, 6, 1, 64, 0, 3, 49, 0, 8, 2, 17, 66, 3, 49, 13, 0, 7, 6, 1, 65, 0, 3,
+			107, 0, 8, 2, 17, 66, 3, 107, 13, 0, 7, 6, 1, 66, 0, 3, 116, 0, 8, 2, 17, 66, 3, 116, 13, 0, 7, 6, 1, 67,
+			0, 3, 54, 0, 8, 2, 17, 66, 3, 54, 13, 0, 7, 6, 1, 68, 0, 3, 76, 0, 8, 2, 17, 66, 3, 76, 13, 0, 7, 6,
+			1, 69, 0, 1, 17, 67, 2, 32, 3, 13, 65, 0, 4, 3, 65, 0, 1, 18, 67, 2, 32, 0, 8, 2, 17, 66, 3, 65, 13, 0,
+			7, 6, 1, 70, 0, 3, 57, 0, 8, 2, 17, 66, 3, 57, 13, 0, 5, 1, 8, 3, 107, 0, 5, 1, 8, 2, 17, 66, 3, 107,
+			13, 0, 7, 6, 1, 71, 0, 1, 17, 67, 2, 32, 3, 13, 50, 0, 4, 3, 50, 0, 1, 18, 67, 2, 32, 0, 8, 2, 17, 66,
+			3, 50, 13, 0, 7, 6, 1, 72, 0, 8, 2, 213, 191, 3, 13, 91, 0, 3, 91, 0, 8, 2, 17, 66, 3, 91, 13, 0, 7, 6,
+			1, 73, 0, 4, 3, 39, 0, 213, 181, 5, 1, 2, 32, 0, 213, 181, 1, 17, 65, 3, 39, 57, 0, 214, 130, 3, 40, 0, 213, 181,
+			3, 40, 57, 0, 214, 130, 2, 17, 65, 3, 84, 0, 8, 3, 84, 39, 0, 7, 6, 1, 74, 0, 3, 118, 0, 8, 2, 17, 66, 3,
+			118, 13, 0, 7, 6, 1, 75, 0, 3, 48, 0, 8, 2, 17, 66, 3, 48, 13, 0, 7, 6, 1, 76, 0, 3, 75, 0, 8, 2, 17,
+			66, 3, 75, 13, 0, 7, 6, 1, 77, 0, 5, 1, 1, 18, 67, 2, 18, 67, 3, 16, 0, 3, 51, 0, 8, 2, 17, 66, 3, 51,
+			13, 0, 7, 6, 1, 78, 0, 8, 2, 18, 66, 12, 3, 13, 89, 0, 3, 89, 0, 8, 2, 17, 66, 3, 89, 13, 0, 7, 6, 1,
+			79, 0, 3, 84, 0, 8, 2, 17, 66, 3, 84, 13, 0, 7, 6, 1, 80, 0, 3, 47, 0, 8, 2, 17, 66, 3, 47, 13, 0, 7,
+			6, 1, 81, 0, 1, 17, 67, 2, 32, 3, 13, 34, 0, 4, 3, 34, 0, 1, 18, 67, 2, 32, 0, 5, 1, 1, 18, 67, 2, 18,
+			67, 0, 8, 2, 17, 66, 3, 34, 13, 0, 7, 6, 1, 82, 0, 3, 114, 0, 8, 2, 17, 66, 3, 114, 13, 0, 7, 6, 1, 83,
+			0, 3, 84, 0, 8, 2, 17, 66, 3, 84, 13, 0, 7, 6, 1, 84, 0, 3, 113, 0, 8, 2, 17, 66, 3, 113, 13, 0, 7, 6,
+			1, 85, 0, 3, 115, 0, 8, 2, 17, 66, 3, 115, 13, 0, 7, 6, 1, 86, 0, 3, 39, 0, 7, 6, 1, 87, 0, 3, 83, 0,
+			8, 2, 17, 66, 3, 83, 13, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts29 = FileInMemory_createWithData (3400, reinterpret_cast<const char *> (&espeakdata_dicts29_data), 
+			U"espeak-1.48.04-source/espeak-data/hy_dict", 
 			U"hy");
-		Collection_addItem (me.peek(), espeakdata_dicts26.transfer());
+		my addItem_move (espeakdata_dicts29.move());
 
-		static unsigned char espeakdata_dicts27_data[3083] = {
-			0, 4, 0, 0, 29, 10, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0,
-			0, 0, 6, 65, 12, 76, 36, 0, 0, 0, 13, 4, 95, 8, 1, 3, 107, 6, 35, 76, 109, 49, 0, 0, 0, 6, 65, 16, 72, 36,
-			0, 0, 0, 0, 0, 5, 65, 20, 36, 0, 0, 0, 0, 0, 6, 65, 24, 109, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0,
-			0, 6, 195, 76, 19, 135, 72, 0, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 11, 1, 35, 48, 6, 35, 81, 35, 51, 0, 27,
-			0, 5, 65, 36, 37, 0, 0, 12, 1, 37, 48, 13, 52, 89, 6, 109, 50, 0, 27, 0, 14, 1, 38, 47, 4, 35, 50, 72, 35, 72,
-			6, 35, 50, 0, 0, 12, 68, 8, 80, 133, 44, 71, 109, 71, 124, 19, 0, 0, 6, 65, 40, 75, 36, 0, 0, 0, 12, 1, 42, 71,
-			6, 37, 50, 47, 35, 68, 0, 27, 0, 12, 1, 43, 47, 6, 35, 65, 71, 35, 107, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0,
-			0, 18, 1, 47, 81, 4, 35, 52, 37, 89, 15, 65, 6, 37, 52, 37, 68, 0, 27, 0, 6, 65, 48, 109, 55, 0, 0, 0, 0, 0,
-			6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6, 65, 56, 109, 50, 0, 0, 0, 0, 0, 5, 65, 60, 39, 0, 0, 17, 1, 61, 89,
-			4, 35, 65, 35, 15, 72, 6, 109, 68, 35, 50, 0, 27, 0, 0, 0, 12, 1, 64, 35, 15, 49, 6, 109, 110, 50, 81, 0, 6, 65,
-			64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 37, 0, 0, 0, 0, 0, 6, 65, 72, 109, 51, 0, 0, 0, 0, 0, 6, 65,
-			76, 109, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88,
-			83, 36, 0, 0, 0, 0, 0, 12, 1, 92, 6, 71, 109, 49, 89, 55, 109, 91, 0, 6, 65, 92, 58, 36, 0, 0, 0, 15, 1, 94,
-			47, 4, 35, 50, 72, 35, 47, 6, 39, 48, 37, 0, 0, 0, 15, 4, 95, 49, 77, 49, 89, 13, 34, 6, 37, 71, 40, 10, 0, 7,
-			65, 96, 109, 49, 89, 0, 0, 15, 4, 95, 49, 77, 50, 89, 13, 75, 6, 40, 47, 35, 10, 0, 0, 16, 4, 95, 49, 77, 51, 89,
-			13, 65, 6, 37, 55, 57, 35, 51, 0, 0, 0, 6, 65, 100, 57, 36, 0, 0, 0, 0, 0, 7, 65, 104, 88, 109, 47, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6, 37, 55, 72, 36, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 64, 17, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 4, 95, 4, 16, 20, 10, 49, 4, 39, 65, 35, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 19,
-			1, 32, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 19,
-			128, 72, 0, 6, 195, 32, 19, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 20, 137, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 8, 18, 23, 4, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 14, 4, 95, 13, 3, 14, 65, 6, 35, 49, 52, 110, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 51, 88, 47, 6, 37, 81, 35, 48, 40, 55, 40, 107,
-			0, 0, 13, 3, 95, 48, 67, 51, 6, 35, 47, 40, 89, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 67, 89, 13,
-			52, 6, 35, 47, 40, 89, 23, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 49, 57, 89, 13, 65, 71, 6, 37, 55, 35, 50, 71, 13,
-			55, 35, 89, 0, 0, 19, 3, 95, 49, 56, 72, 13, 55, 6, 35, 48, 35, 50, 71, 13, 55, 35, 89, 0, 0, 0, 0, 0, 0, 0,
-			0, 14, 3, 95, 49, 49, 89, 6, 13, 71, 13, 55, 35, 89, 0, 0, 14, 3, 95, 49, 48, 89, 13, 48, 6, 40, 55, 40, 107, 0,
-			0, 16, 3, 95, 49, 51, 47, 6, 37, 81, 35, 71, 13, 55, 35, 89, 0, 0, 15, 3, 95, 49, 50, 72, 6, 40, 35, 71, 13, 55,
-			35, 89, 0, 0, 16, 3, 95, 49, 53, 55, 6, 37, 65, 35, 71, 13, 55, 35, 89, 0, 0, 17, 3, 95, 49, 52, 6, 13, 65, 48,
-			35, 47, 71, 13, 55, 35, 89, 0, 0, 17, 3, 95, 49, 55, 47, 6, 40, 75, 40, 107, 71, 13, 55, 35, 89, 0, 0, 16, 3, 95,
-			49, 54, 6, 13, 50, 35, 65, 71, 13, 55, 35, 89, 0, 0, 0, 17, 3, 95, 55, 88, 47, 6, 40, 75, 40, 107, 48, 40, 55, 40,
-			107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 44, 80, 49, 13, 0, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 3, 95, 50, 88, 72, 6, 40, 35, 48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 17, 3, 95, 63, 63, 49, 4, 39, 72, 36, 107, 6, 40, 52, 40, 83, 0, 0, 0, 0, 17, 3, 95, 52, 88, 6, 109, 65,
-			48, 35, 47, 48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 53, 88, 55, 6, 37, 65, 35, 48, 40, 55,
-			40, 107, 0, 0, 0, 0, 9, 198, 76, 80, 129, 28, 18, 64, 72, 0, 0, 0, 0, 0, 16, 3, 95, 54, 88, 6, 109, 50, 35, 65,
-			48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 56, 88, 72, 13, 55,
-			6, 35, 48, 35, 50, 48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 57, 88, 89, 13, 65, 71, 6, 37,
-			55, 35, 50, 48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 7, 196, 77, 80, 84, 84, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 15, 7, 15, 6, 110, 81, 39, 50, 109, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 100, 19, 135, 72, 13, 4, 95, 48, 77, 50, 75, 6, 40, 47,
-			35, 10, 0, 0, 14, 4, 95, 48, 77, 51, 65, 6, 37, 55, 57, 35, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 51, 6, 37, 71,
-			40, 10, 0, 0, 13, 4, 95, 2, 18, 22, 71, 52, 6, 37, 12, 84, 0, 0, 0, 0, 0, 0, 0, 12, 68, 8, 80, 197, 44, 71,
-			109, 76, 124, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
-			4, 95, 3, 9, 18, 47, 6, 39, 48, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 19, 20, 11,
-			89, 47, 51, 6, 39, 49, 0, 0, 0, 13, 4, 95, 1, 3, 21, 35, 49, 57, 6, 40, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 12, 4, 95, 18, 14, 7, 52, 6, 37, 68, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 1, 3, 50, 72, 40, 71, 13, 55, 35, 49, 57, 6, 40, 47, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198,
-			16, 20, 137, 64, 17, 1, 72, 0, 0, 0, 0, 0, 0, 16, 2, 194, 163, 48, 39, 50, 89, 47, 6, 109, 52, 55, 37, 68, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 3, 5, 4, 89, 13,
-			72, 6, 37, 55, 35, 0, 0, 0, 0, 14, 4, 95, 12, 9, 7, 72, 6, 117, 81, 51, 35, 83, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 8, 82, 193, 76, 66, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 0, 0, 0, 8, 197, 64, 84, 129, 56, 112, 66, 0, 0, 0, 7, 196, 84, 229, 21, 44,
-			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 17, 2, 95, 34, 47, 4, 35, 50, 72, 35, 49, 6, 40, 47, 37, 48, 0, 0, 17, 2, 95, 33, 47, 4, 35, 50,
-			72, 35, 15, 89, 6, 109, 52, 40, 0, 0, 0, 19, 2, 95, 39, 49, 4, 40, 47, 37, 48, 15, 47, 6, 40, 68, 81, 35, 55, 0,
-			0, 0, 0, 0, 0, 13, 4, 95, 3, 1, 16, 71, 6, 109, 89, 35, 51, 0, 0, 18, 2, 95, 41, 49, 4, 40, 52, 40, 68, 15,
-			47, 6, 40, 47, 40, 48, 0, 0, 17, 2, 95, 40, 49, 4, 40, 52, 40, 68, 15, 71, 6, 40, 49, 35, 0, 0, 10, 67, 64, 84,
-			128, 48, 13, 34, 0, 72, 0, 11, 2, 95, 46, 47, 6, 37, 47, 37, 19, 0, 0, 17, 2, 95, 45, 47, 4, 35, 50, 72, 35, 107,
-			6, 40, 71, 40, 68, 0, 0, 10, 2, 95, 44, 49, 6, 39, 65, 35, 0, 0, 10, 2, 95, 51, 47, 6, 37, 81, 35, 0, 0, 9,
-			2, 95, 50, 72, 6, 40, 35, 0, 0, 10, 2, 95, 49, 89, 6, 35, 47, 40, 0, 0, 9, 2, 95, 48, 50, 6, 39, 55, 0, 0,
-			11, 2, 95, 55, 47, 6, 40, 75, 40, 107, 0, 0, 10, 2, 95, 54, 6, 13, 50, 35, 65, 0, 0, 10, 2, 95, 53, 55, 6, 37,
-			65, 35, 0, 0, 11, 2, 95, 52, 6, 13, 65, 48, 35, 47, 0, 0, 17, 2, 95, 59, 47, 4, 37, 47, 37, 19, 15, 49, 6, 39,
-			65, 35, 0, 0, 16, 2, 95, 58, 47, 4, 37, 47, 37, 19, 15, 72, 6, 40, 35, 0, 0, 14, 2, 95, 57, 89, 13, 65, 71, 6,
-			37, 55, 35, 50, 0, 0, 13, 2, 95, 56, 72, 13, 55, 6, 35, 48, 35, 50, 0, 0, 17, 2, 95, 63, 47, 4, 35, 50, 72, 35,
-			15, 47, 6, 35, 67, 35, 0, 0, 17, 2, 95, 62, 55, 4, 109, 71, 37, 107, 15, 72, 6, 35, 52, 37, 0, 0, 0, 17, 2, 95,
-			60, 49, 4, 40, 52, 35, 68, 15, 72, 6, 35, 52, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 11, 4, 95, 4, 15, 20, 72, 6, 110, 47, 0, 0, 0, 0, 17, 2, 95, 91, 49, 4, 40, 52, 40, 68,
-			15, 89, 6, 37, 49, 40, 0, 0, 0, 0, 0, 18, 2, 95, 95, 81, 4, 35, 52, 37, 89, 15, 71, 6, 35, 58, 35, 107, 0, 0,
-			0, 24, 2, 95, 93, 49, 4, 40, 52, 40, 68, 15, 89, 4, 37, 49, 40, 15, 47, 6, 40, 47, 40, 48, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 7, 18, 22, 81, 52, 6, 35, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 20, 2, 95, 123, 49, 4, 40, 52, 40, 68, 15, 49, 40, 52, 6, 35, 58, 35, 55, 0, 13, 4, 95, 4, 9, 1, 6,
-			40, 65, 55, 114, 47, 0, 0, 0, 0, 0, 0, 0, 27, 2, 95, 125, 49, 4, 40, 52, 40, 68, 15, 49, 40, 52, 4, 35, 58, 35,
-			55, 15, 47, 6, 40, 47, 40, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 64, 85, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 197, 4, 64, 76, 4, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts30_data[3083] = {
+			0, 4, 0, 0, 29, 10, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 7, 196, 84, 229, 21, 44, 72, 0, 6,
+			65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12, 76, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 7, 196, 77, 80,
+			84, 84, 72, 0, 0, 14, 4, 95, 100, 112, 116, 10, 49, 4, 39, 65, 35, 10, 0, 0, 5, 65, 20, 36, 0, 0, 0, 0, 0, 6,
+			65, 24, 109, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 11, 1,
+			35, 48, 6, 35, 81, 35, 51, 0, 27, 0, 5, 65, 36, 37, 0, 0, 12, 1, 37, 48, 13, 52, 89, 6, 109, 50, 0, 27, 0, 14,
+			1, 38, 47, 4, 35, 50, 72, 35, 72, 6, 35, 50, 0, 0, 0, 6, 65, 40, 75, 36, 0, 0, 0, 12, 1, 42, 71, 6, 37, 50,
+			47, 35, 68, 0, 27, 0, 12, 1, 43, 47, 6, 35, 65, 71, 35, 107, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 18, 1,
+			47, 81, 4, 35, 52, 37, 89, 15, 65, 6, 37, 52, 37, 68, 0, 27, 0, 13, 4, 95, 100, 105, 97, 6, 40, 65, 55, 114, 47, 0,
+			6, 65, 48, 109, 55, 0, 0, 0, 0, 0, 6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6, 65, 56, 109, 50, 0, 0, 0, 0, 0,
+			5, 65, 60, 39, 0, 0, 17, 1, 61, 89, 4, 35, 65, 35, 15, 72, 6, 109, 68, 35, 50, 0, 27, 0, 0, 0, 12, 1, 64, 35,
+			15, 49, 6, 109, 110, 50, 81, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 37, 0, 0, 0, 0, 0, 6, 65,
+			72, 109, 51, 0, 0, 0, 0, 11, 4, 95, 100, 111, 116, 72, 6, 110, 47, 0, 0, 6, 65, 76, 109, 89, 0, 0, 0, 0, 0, 6,
+			65, 80, 47, 36, 0, 0, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88, 83, 36, 0, 0, 0, 0, 0, 12, 1,
+			92, 6, 71, 109, 49, 89, 55, 109, 91, 0, 6, 65, 92, 58, 36, 0, 0, 0, 15, 1, 94, 47, 4, 35, 50, 72, 35, 47, 6, 39,
+			48, 37, 0, 0, 0, 15, 4, 95, 49, 77, 49, 89, 13, 34, 6, 37, 71, 40, 10, 0, 7, 65, 96, 109, 49, 89, 0, 0, 15, 4,
+			95, 49, 77, 50, 89, 13, 75, 6, 40, 47, 35, 10, 0, 0, 16, 4, 95, 49, 77, 51, 89, 13, 65, 6, 37, 55, 57, 35, 51, 0,
+			0, 0, 6, 65, 100, 57, 36, 0, 0, 0, 0, 0, 7, 65, 104, 88, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6, 37, 55, 72, 36, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6,
+			37, 55, 72, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 64, 17, 1, 72,
+			0, 0, 0, 0, 0, 14, 4, 95, 109, 99, 110, 65, 6, 35, 49, 52, 110, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 144, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 19, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 64, 85, 72, 0, 0, 0, 0, 0, 0, 6, 195, 76, 19,
+			135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 111, 103, 111, 6, 110,
+			81, 39, 50, 109, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 100, 19, 135, 72, 6, 195, 32, 19, 135, 72,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 98, 114, 118, 71, 52, 6, 37, 12, 84, 0, 0, 0, 0, 0, 18, 4, 95, 97,
+			99, 50, 72, 40, 71, 13, 55, 35, 49, 57, 6, 40, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 16, 3, 95, 51, 88, 47, 6, 37, 81, 35, 48, 40, 55, 40, 107, 0, 0, 13, 3, 95, 48, 67, 51, 6, 35,
+			47, 40, 89, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 67, 89, 13, 52, 6, 35, 47, 40, 89, 23, 0, 0, 0,
+			12, 68, 8, 80, 197, 44, 71, 109, 76, 124, 19, 0, 12, 68, 8, 80, 133, 44, 71, 109, 71, 124, 19, 0, 0, 0, 0, 0, 20, 3,
+			95, 49, 57, 89, 13, 65, 71, 6, 37, 55, 35, 50, 71, 13, 55, 35, 89, 0, 0, 19, 3, 95, 49, 56, 72, 13, 55, 6, 35, 48,
+			35, 50, 71, 13, 55, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49, 89, 6, 13, 71, 13, 55, 35, 89, 0, 0,
+			14, 3, 95, 49, 48, 89, 13, 48, 6, 40, 55, 40, 107, 0, 0, 16, 3, 95, 49, 51, 47, 6, 37, 81, 35, 71, 13, 55, 35, 89,
+			0, 0, 15, 3, 95, 49, 50, 72, 6, 40, 35, 71, 13, 55, 35, 89, 0, 0, 16, 3, 95, 49, 53, 55, 6, 37, 65, 35, 71, 13,
+			55, 35, 89, 0, 0, 17, 3, 95, 49, 52, 6, 13, 65, 48, 35, 47, 71, 13, 55, 35, 89, 0, 0, 17, 3, 95, 49, 55, 47, 6,
+			40, 75, 40, 107, 71, 13, 55, 35, 89, 0, 0, 16, 3, 95, 49, 54, 6, 13, 50, 35, 65, 71, 13, 55, 35, 89, 0, 0, 8, 197,
+			4, 64, 76, 4, 128, 72, 0, 17, 3, 95, 55, 88, 47, 6, 40, 75, 40, 107, 48, 40, 55, 40, 107, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 198, 16, 20, 137, 64, 17, 1, 72, 0, 0, 0, 0, 13, 4, 95, 97, 99, 117, 35, 49, 57, 6, 40, 47, 0, 0, 0,
+			0, 8, 66, 44, 80, 49, 13, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 50, 88, 72, 6, 40, 35, 48, 40, 55,
+			40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 20, 137, 72, 0, 0, 0, 0, 0, 17, 3, 95, 63, 63, 49, 4, 39,
+			72, 36, 107, 6, 40, 52, 40, 83, 0, 0, 0, 0, 17, 3, 95, 52, 88, 6, 109, 65, 48, 35, 47, 48, 40, 55, 40, 107, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 53, 88, 55, 6, 37, 65, 35, 48, 40, 55, 40, 107, 0, 0, 0, 12, 4, 95, 114, 110,
+			103, 52, 6, 37, 68, 81, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 54, 88, 6, 109, 50, 35, 65, 48, 40, 55, 40, 107, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 56, 88, 72, 13, 55, 6, 35, 48, 35, 50, 48, 40,
+			55, 40, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 57, 88, 89, 13, 65, 71, 6, 37, 55, 35, 50, 48, 40, 55, 40,
+			107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 115, 116, 107, 89, 47, 51, 6, 39, 49, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 99, 105,
+			114, 47, 6, 39, 48, 37, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 50, 75, 6, 40, 47, 35, 10, 0, 0, 14, 4, 95, 48, 77,
+			51, 65, 6, 37, 55, 57, 35, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 51, 6, 37, 71, 40, 10, 0, 0, 0, 0, 0, 0, 7,
+			196, 8, 18, 23, 4, 72, 0, 0, 0, 0, 0, 14, 4, 95, 108, 105, 103, 72, 6, 117, 81, 51, 35, 83, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 14, 4, 95, 99, 101, 100, 89, 13, 72, 6, 37, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4,
+			95, 99, 97, 112, 71, 6, 109, 89, 35, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 103, 114,
+			118, 81, 52, 6, 35, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 194, 163, 48, 39, 50, 89,
+			47, 6, 109, 52, 55, 37, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 198, 76, 80, 129, 28, 18, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 17, 2, 95, 34, 47, 4, 35, 50, 72, 35, 49, 6, 40, 47, 37, 48, 0, 0, 17, 2, 95, 33, 47, 4, 35, 50, 72, 35,
+			15, 89, 6, 109, 52, 40, 0, 0, 0, 19, 2, 95, 39, 49, 4, 40, 47, 37, 48, 15, 47, 6, 40, 68, 81, 35, 55, 0, 0, 0,
+			0, 0, 0, 0, 18, 2, 95, 41, 49, 4, 40, 52, 40, 68, 15, 47, 6, 40, 47, 40, 48, 0, 0, 17, 2, 95, 40, 49, 4, 40,
+			52, 40, 68, 15, 71, 6, 40, 49, 35, 0, 0, 10, 67, 64, 84, 128, 48, 13, 34, 0, 72, 0, 11, 2, 95, 46, 47, 6, 37, 47,
+			37, 19, 0, 0, 17, 2, 95, 45, 47, 4, 35, 50, 72, 35, 107, 6, 40, 71, 40, 68, 0, 0, 10, 2, 95, 44, 49, 6, 39, 65,
+			35, 0, 0, 10, 2, 95, 51, 47, 6, 37, 81, 35, 0, 0, 9, 2, 95, 50, 72, 6, 40, 35, 0, 0, 10, 2, 95, 49, 89, 6,
+			35, 47, 40, 0, 0, 9, 2, 95, 48, 50, 6, 39, 55, 0, 0, 11, 2, 95, 55, 47, 6, 40, 75, 40, 107, 0, 0, 10, 2, 95,
+			54, 6, 13, 50, 35, 65, 0, 0, 10, 2, 95, 53, 55, 6, 37, 65, 35, 0, 0, 11, 2, 95, 52, 6, 13, 65, 48, 35, 47, 0,
+			0, 17, 2, 95, 59, 47, 4, 37, 47, 37, 19, 15, 49, 6, 39, 65, 35, 0, 0, 16, 2, 95, 58, 47, 4, 37, 47, 37, 19, 15,
+			72, 6, 40, 35, 0, 0, 14, 2, 95, 57, 89, 13, 65, 71, 6, 37, 55, 35, 50, 0, 0, 13, 2, 95, 56, 72, 13, 55, 6, 35,
+			48, 35, 50, 0, 0, 17, 2, 95, 63, 47, 4, 35, 50, 72, 35, 15, 47, 6, 35, 67, 35, 0, 0, 17, 2, 95, 62, 55, 4, 109,
+			71, 37, 107, 15, 72, 6, 35, 52, 37, 0, 0, 0, 17, 2, 95, 60, 49, 4, 40, 52, 35, 68, 15, 72, 6, 35, 52, 37, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 91, 49, 4,
+			40, 52, 40, 68, 15, 89, 6, 37, 49, 40, 0, 0, 0, 0, 0, 18, 2, 95, 95, 81, 4, 35, 52, 37, 89, 15, 71, 6, 35, 58,
+			35, 107, 0, 0, 0, 24, 2, 95, 93, 49, 4, 40, 52, 40, 68, 15, 89, 4, 37, 49, 40, 15, 47, 6, 40, 47, 40, 48, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76, 109,
+			49, 0, 0, 0, 0, 0, 0, 0, 20, 2, 95, 123, 49, 4, 40, 52, 40, 68, 15, 49, 40, 52, 6, 35, 58, 35, 55, 0, 0, 0,
+			0, 0, 0, 0, 27, 2, 95, 125, 49, 4, 40, 52, 40, 68, 15, 49, 40, 52, 4, 35, 58, 35, 55, 15, 47, 6, 40, 47, 40, 48,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 8, 82, 193, 76, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 19, 1, 32, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 197, 64, 84, 129, 56, 112, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 4, 1, 32, 17, 65, 3, 23, 35, 0, 1, 97, 0, 1, 117, 97, 0, 3, 35,
 			0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 4, 101, 2, 110, 3, 71, 13, 0, 101, 8, 2, 21, 21, 0,
 			7, 6, 99, 0, 3, 76, 0, 104, 3, 106, 0, 7, 6, 100, 0, 3, 72, 0, 106, 3, 75, 0, 7, 6, 101, 0, 4, 1, 32, 17,
@@ -21330,1702 +31449,2314 @@ FilesInMemory create_espeakdata_dicts () {
 			8, 3, 88, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3, 0, 42,
 			42, 3, 0, 42, 1, 42, 42, 2, 32, 3, 24, 0, 45, 8, 32, 2, 32, 15, 3, 47, 4, 35, 50, 72, 35, 49, 6, 40, 52, 35,
 			68, 0, 42, 3, 71, 6, 37, 50, 47, 35, 68, 0, 36, 3, 72, 110, 55, 35, 51, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts27 = FileInMemory_createWithData (3082, reinterpret_cast<const char *> (&espeakdata_dicts27_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/id_dict", 
+		autoFileInMemory espeakdata_dicts30 = FileInMemory_createWithData (3082, reinterpret_cast<const char *> (&espeakdata_dicts30_data), 
+			U"espeak-1.48.04-source/espeak-data/id_dict", 
 			U"id");
-		Collection_addItem (me.peek(), espeakdata_dicts27.transfer());
+		my addItem_move (espeakdata_dicts30.move());
 
-		static unsigned char espeakdata_dicts28_data[5469] = {
-			0, 4, 0, 0, 1, 16, 0, 0, 0, 0, 0, 0, 0, 8, 132, 5, 195, 176, 1, 76, 8, 0, 0, 0, 8, 196, 25, 148, 137, 72,
-			76, 8, 0, 7, 65, 8, 71, 57, 112, 0, 0, 0, 9, 134, 13, 195, 173, 14, 21, 13, 76, 0, 0, 7, 65, 12, 89, 57, 112, 0,
-			0, 0, 0, 6, 195, 20, 225, 1, 8, 0, 7, 65, 16, 72, 57, 112, 0, 6, 195, 76, 147, 142, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 65, 24, 111, 83, 0, 8, 197, 28, 81, 206, 84, 208, 28, 0, 0, 0, 0, 7, 65, 28, 81, 57, 112, 0, 0, 0, 0, 0,
-			6, 65, 32, 107, 126, 0, 0, 0, 0, 9, 1, 35, 65, 109, 55, 55, 35, 0, 0, 0, 0, 9, 134, 8, 195, 182, 6, 21, 13, 72,
-			0, 0, 8, 65, 40, 57, 6, 115, 86, 0, 0, 0, 0, 9, 1, 43, 71, 55, 6, 116, 89, 0, 0, 7, 65, 44, 49, 6, 126, 0,
-			0, 0, 0, 12, 1, 47, 89, 49, 125, 89, 72, 138, 109, 81, 0, 0, 6, 65, 48, 111, 137, 0, 8, 133, 195, 190, 1, 195, 176, 76,
-			8, 133, 195, 190, 1, 195, 176, 72, 0, 9, 134, 5, 9, 7, 9, 195, 176, 76, 0, 10, 135, 21, 18, 195, 176, 21, 195, 176, 72, 0,
-			0, 6, 65, 52, 111, 65, 0, 12, 137, 8, 195, 182, 6, 195, 176, 21, 195, 176, 72, 8, 133, 5, 18, 21, 195, 176, 72, 0, 0, 0,
-			7, 196, 52, 147, 142, 4, 76, 10, 135, 195, 190, 5, 9, 18, 18, 1, 76, 0, 6, 65, 56, 111, 50, 0, 6, 131, 6, 195, 166, 76,
-			6, 131, 6, 195, 166, 76, 10, 5, 95, 48, 1, 14, 4, 115, 100, 0, 0, 0, 0, 0, 0, 19, 1, 61, 89, 6, 113, 65, 35, 89,
-			111, 65, 65, 4, 111, 34, 138, 49, 109, 0, 0, 0, 10, 135, 195, 190, 5, 9, 18, 18, 9, 76, 0, 7, 65, 64, 48, 57, 112, 0,
-			0, 0, 6, 195, 53, 83, 128, 76, 0, 7, 196, 52, 147, 12, 36, 8, 0, 6, 65, 68, 49, 116, 0, 0, 0, 0, 0, 7, 65, 72,
-			111, 34, 138, 0, 6, 195, 100, 98, 82, 28, 0, 0, 0, 6, 195, 53, 83, 137, 76, 0, 6, 65, 76, 111, 89, 0, 8, 197, 53, 147,
-			132, 37, 32, 76, 0, 0, 0, 8, 132, 13, 195, 179, 20, 76, 28, 0, 7, 65, 80, 47, 57, 112, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 196, 52, 147, 142, 36, 76, 0, 7, 65, 88, 84, 35, 83, 0, 0, 0, 0, 0, 16, 65, 92, 47, 84, 6, 120, 84, 35, 55, 72,
-			84, 4, 35, 83, 0, 0, 0, 0, 0, 7, 65, 96, 112, 101, 89, 0, 0, 18, 4, 95, 49, 77, 50, 124, 50, 15, 65, 6, 109, 72,
-			55, 57, 127, 50, 0, 0, 0, 0, 16, 65, 100, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 110, 0, 14, 0, 0, 9, 134, 195, 190,
-			5, 19, 19, 9, 76, 9, 134, 195, 190, 5, 19, 19, 9, 76, 0, 0, 8, 65, 104, 89, 112, 47, 35, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 9, 134, 195, 190, 5, 19, 19, 21, 76, 0, 8, 196, 84, 225, 9, 72, 72, 28, 0, 0, 0, 6, 195, 53, 83, 148,
-			76, 0, 6, 195, 53, 83, 149, 76, 0, 0, 0, 0, 0, 0, 0, 6, 195, 28, 20, 212, 76, 9, 134, 195, 190, 5, 19, 19, 1, 76,
-			0, 9, 134, 13, 195, 173, 14, 9, 18, 76, 0, 0, 6, 194, 4, 96, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 7,
-			195, 161, 20, 21, 13, 76, 0, 0, 0, 0, 10, 135, 22, 1, 18, 195, 176, 19, 20, 72, 0, 0, 0, 0, 10, 135, 6, 195, 169, 11,
-			11, 19, 20, 76, 0, 0, 0, 0, 6, 195, 5, 82, 192, 28, 0, 7, 196, 32, 147, 142, 4, 76, 0, 8, 197, 53, 83, 132, 84, 208,
-			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 95, 50, 77, 50, 47, 84, 6, 122, 34, 138, 15, 65, 6, 109, 72, 55, 57, 127,
-			50, 0, 0, 0, 12, 68, 8, 243, 12, 4, 71, 114, 55, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 8, 133, 195, 190, 9, 14, 14, 76, 0, 7, 196, 77, 83, 85, 72, 76, 0, 0, 0, 0, 7, 196, 32, 147, 142, 36, 76, 0, 0,
-			0, 6, 195, 32, 149, 20, 76, 0, 0, 0, 0, 0, 9, 134, 13, 195, 173, 14, 1, 18, 76, 0, 0, 0, 0, 9, 134, 195, 161, 195,
-			176, 21, 18, 8, 0, 0, 0, 0, 0, 0, 5, 194, 21, 32, 72, 0, 0, 0, 0, 0, 6, 195, 21, 37, 0, 72, 0, 0, 8, 197,
-			32, 147, 142, 5, 32, 76, 0, 0, 6, 195, 56, 82, 64, 76, 0, 0, 0, 0, 0, 10, 135, 22, 5, 18, 195, 176, 21, 13, 72, 15,
-			4, 95, 4, 16, 20, 10, 49, 4, 114, 65, 65, 35, 10, 0, 0, 8, 133, 195, 190, 9, 20, 20, 76, 0, 0, 0, 6, 195, 56, 83,
-			65, 8, 0, 8, 197, 4, 227, 129, 73, 48, 8, 7, 132, 195, 190, 1, 21, 76, 7, 132, 195, 190, 1, 21, 72, 0, 0, 0, 0, 0,
-			9, 198, 56, 242, 203, 85, 35, 128, 76, 23, 4, 95, 51, 77, 50, 87, 138, 57, 6, 126, 34, 138, 15, 65, 6, 109, 72, 55, 57, 127,
-			50, 0, 0, 0, 7, 196, 32, 147, 137, 72, 76, 0, 10, 135, 22, 5, 18, 195, 176, 21, 18, 72, 0, 8, 133, 6, 195, 161, 21, 13,
-			76, 0, 0, 7, 196, 32, 19, 132, 4, 28, 0, 0, 0, 0, 7, 132, 8, 9, 195, 176, 76, 0, 0, 0, 7, 132, 195, 190, 9, 7,
-			76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 28, 21, 0, 76, 0, 7, 132, 195, 161, 20, 20, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 194, 20, 96, 76, 8, 0, 0, 8, 133, 13, 195, 173, 14, 21, 76, 0, 0, 0, 0, 0, 9, 134, 19, 195, 173,
-			14, 21, 13, 76, 0, 6, 195, 32, 17, 129, 72, 10, 135, 195, 190, 195, 173, 14, 21, 13, 76, 8, 133, 13, 195, 173, 14, 19, 76, 0,
-			0, 0, 0, 0, 10, 135, 6, 5, 14, 7, 21, 195, 176, 76, 0, 8, 132, 22, 9, 195, 176, 76, 28, 7, 132, 22, 9, 195, 176, 72,
-			0, 0, 0, 0, 8, 133, 7, 195, 161, 20, 21, 76, 0, 6, 195, 32, 147, 142, 76, 0, 0, 0, 8, 133, 13, 195, 173, 14, 1, 76,
-			0, 6, 195, 32, 19, 142, 72, 0, 6, 195, 32, 19, 129, 76, 0, 0, 0, 0, 6, 195, 32, 147, 129, 76, 0, 6, 195, 32, 147, 128,
-			76, 0, 0, 0, 6, 195, 88, 84, 129, 72, 0, 0, 7, 196, 32, 81, 149, 72, 72, 7, 196, 32, 147, 129, 72, 76, 0, 0, 0, 0,
-			0, 0, 6, 195, 32, 147, 149, 76, 0, 0, 0, 0, 0, 0, 11, 136, 22, 5, 18, 195, 176, 9, 195, 176, 72, 6, 195, 32, 147, 147,
-			76, 0, 0, 9, 134, 8, 1, 6, 9, 195, 176, 72, 0, 0, 0, 8, 197, 56, 242, 203, 72, 16, 76, 6, 195, 28, 85, 0, 76, 0,
-			0, 0, 8, 133, 19, 195, 173, 14, 1, 76, 0, 9, 134, 195, 190, 195, 173, 14, 1, 76, 0, 0, 8, 132, 8, 10, 195, 161, 76, 28,
-			0, 0, 0, 0, 0, 8, 133, 12, 195, 173, 11, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 24, 83, 135, 84, 76, 0, 10, 3, 95, 49, 6, 6, 123, 107, 72, 0, 0, 9, 134, 7, 5, 20, 9, 195, 176, 76, 0, 0, 8,
-			196, 20, 101, 9, 72, 76, 8, 0, 0, 0, 0, 0, 10, 3, 95, 50, 6, 47, 84, 6, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			11, 3, 95, 51, 6, 87, 138, 57, 6, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 52, 6, 83, 57, 6, 120, 100, 117,
-			34, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 147,
-			149, 52, 76, 0, 0, 6, 194, 20, 224, 76, 8, 0, 16, 3, 95, 51, 88, 87, 138, 57, 6, 126, 47, 37, 38, 4, 117, 0, 0, 15,
-			3, 95, 48, 67, 107, 6, 117, 50, 72, 14, 16, 117, 86, 0, 0, 9, 134, 195, 161, 20, 20, 21, 13, 76, 0, 0, 0, 0, 0, 0,
-			0, 20, 3, 95, 49, 67, 6, 123, 107, 72, 15, 107, 6, 117, 50, 72, 14, 51, 35, 86, 0, 0, 8, 197, 56, 242, 203, 85, 32, 76,
-			0, 0, 0, 9, 198, 56, 242, 203, 85, 37, 0, 76, 0, 0, 13, 3, 95, 49, 57, 50, 6, 108, 72, 57, 125, 50, 0, 0, 12, 3,
-			95, 49, 56, 6, 126, 72, 57, 125, 50, 0, 0, 7, 196, 88, 244, 129, 72, 76, 20, 3, 95, 50, 67, 47, 84, 6, 120, 15, 107, 6,
-			117, 50, 72, 14, 51, 117, 86, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49, 6, 111, 72, 55, 111, 84, 4, 117, 0, 0, 11,
-			3, 95, 49, 48, 47, 6, 108, 38, 117, 0, 0, 21, 3, 95, 51, 67, 87, 138, 57, 6, 116, 15, 107, 6, 117, 50, 72, 14, 51, 117,
-			86, 0, 14, 3, 95, 49, 51, 87, 138, 6, 111, 107, 72, 125, 50, 0, 0, 11, 3, 95, 49, 50, 47, 6, 127, 105, 83, 0, 0, 13,
-			3, 95, 49, 53, 83, 6, 109, 65, 47, 125, 50, 0, 0, 15, 3, 95, 49, 52, 83, 57, 6, 127, 34, 138, 47, 125, 50, 0, 0, 13,
-			3, 95, 49, 55, 89, 6, 130, 72, 57, 125, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 111, 101, 89, 72, 125, 50, 0, 0, 11, 136,
-			195, 190, 5, 9, 18, 18, 1, 18, 76, 0, 15, 3, 95, 55, 88, 89, 57, 6, 120, 47, 37, 38, 4, 117, 0, 0, 9, 134, 195, 161,
-			20, 20, 9, 18, 76, 24, 3, 95, 52, 67, 83, 57, 6, 120, 100, 117, 34, 138, 15, 107, 6, 117, 50, 72, 14, 51, 117, 86, 0, 0,
-			0, 0, 0, 0, 0, 6, 195, 28, 85, 1, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 195, 190, 5, 9, 13, 76, 8,
-			133, 195, 190, 5, 9, 13, 76, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 50, 88, 47, 6, 117, 107, 72, 117, 100, 4, 117, 0, 0,
-			0, 0, 0, 0, 9, 134, 19, 195, 173, 14, 1, 18, 76, 0, 10, 135, 195, 190, 195, 173, 14, 1, 18, 76, 0, 0, 8, 133, 195, 190,
-			5, 9, 18, 76, 8, 133, 195, 190, 5, 9, 18, 72, 0, 7, 196, 33, 99, 210, 80, 8, 0, 0, 7, 132, 6, 195, 166, 18, 76, 0,
-			0, 12, 3, 95, 63, 63, 47, 6, 125, 81, 107, 134, 0, 0, 0, 0, 18, 3, 95, 52, 88, 83, 57, 6, 120, 16, 51, 117, 47, 4,
-			37, 38, 117, 0, 0, 0, 8, 197, 52, 147, 142, 5, 32, 76, 0, 0, 14, 6, 8, 1, 12, 12, 195, 179, 107, 35, 55, 55, 127, 0,
-			0, 0, 0, 0, 15, 3, 95, 53, 88, 83, 6, 109, 65, 47, 37, 38, 4, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95,
-			54, 88, 89, 6, 111, 101, 89, 72, 37, 38, 4, 117, 0, 0, 0, 0, 0, 7, 195, 76, 83, 64, 76, 28, 6, 195, 52, 149, 20, 76,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 56, 88, 6, 125, 107, 72, 35, 47, 4, 37, 38, 117, 0, 0, 0,
-			0, 0, 10, 135, 14, 15, 11, 11, 21, 195, 176, 76, 0, 0, 0, 0, 16, 3, 95, 57, 88, 50, 6, 108, 38, 117, 47, 4, 37, 38,
-			117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 142, 76, 0, 0, 0,
-			9, 134, 13, 5, 195, 176, 1, 14, 8, 0, 0, 0, 0, 0, 0, 9, 134, 13, 21, 14, 9, 195, 176, 76, 9, 134, 22, 5, 18, 9,
-			195, 176, 72, 0, 0, 8, 133, 195, 190, 5, 19, 19, 76, 0, 7, 131, 195, 161, 14, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 132, 8, 195, 186, 14, 72, 0, 0, 7, 196, 28, 85, 21, 52, 76, 0, 0, 15, 4, 95, 48, 77, 50, 65, 6, 109, 72, 55, 57,
-			127, 50, 0, 0, 0, 0, 14, 4, 95, 48, 77, 49, 87, 6, 116, 89, 117, 50, 72, 0, 0, 0, 0, 12, 68, 53, 147, 12, 4, 65,
-			109, 55, 55, 35, 0, 0, 0, 9, 198, 56, 242, 203, 72, 20, 128, 76, 0, 6, 195, 88, 244, 128, 76, 0, 7, 196, 28, 85, 21, 72,
-			76, 6, 195, 88, 244, 129, 76, 0, 0, 9, 198, 56, 242, 203, 72, 148, 128, 76, 6, 131, 195, 169, 7, 72, 0, 0, 8, 132, 13, 5,
-			195, 176, 76, 28, 0, 0, 0, 0, 0, 8, 133, 195, 190, 9, 195, 176, 72, 0, 0, 0, 6, 131, 14, 195, 169, 8, 0, 0, 0, 0,
-			7, 196, 88, 81, 206, 4, 8, 7, 196, 88, 81, 206, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 100, 178,
-			213, 72, 76, 7, 196, 60, 178, 213, 72, 76, 0, 6, 195, 28, 81, 206, 28, 0, 0, 0, 7, 196, 53, 83, 132, 36, 76, 0, 0, 0,
-			6, 195, 52, 145, 192, 76, 0, 6, 195, 20, 145, 193, 76, 0, 8, 197, 53, 83, 132, 37, 32, 76, 0, 0, 9, 134, 8, 1, 6, 195,
-			176, 9, 72, 0, 0, 8, 133, 22, 5, 18, 195, 176, 72, 0, 6, 194, 60, 112, 76, 8, 0, 6, 195, 88, 244, 148, 76, 0, 6, 195,
-			88, 244, 149, 72, 0, 0, 0, 0, 0, 6, 195, 88, 244, 142, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 195,
-			189, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 108, 0, 0, 11, 136, 6, 18, 1, 13, 8, 10, 195, 161, 28, 0, 0, 9, 134, 22,
-			5, 18, 195, 176, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 22, 1, 18, 195, 176, 72, 0, 0, 0, 7, 3, 95,
-			195, 173, 108, 0, 0, 0, 0, 0, 7, 196, 53, 83, 132, 84, 76, 0, 0, 8, 133, 21, 18, 195, 176, 21, 72, 0, 0, 6, 195, 21,
-			37, 21, 72, 0, 10, 135, 8, 1, 6, 195, 176, 9, 18, 72, 0, 0, 0, 7, 3, 95, 195, 161, 126, 0, 0, 0, 0, 0, 8, 133,
-			6, 195, 169, 11, 11, 76, 0, 0, 0, 0, 0, 0, 0, 9, 134, 195, 190, 5, 20, 20, 1, 76, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 196, 53, 83, 137, 72, 76, 0, 0, 0, 0, 0, 0, 0, 8, 133, 195, 190, 1, 14, 14, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 7, 131, 195, 186, 18, 76, 28, 0, 0, 8, 133, 195, 190, 195, 173, 14, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
-			21, 37, 64, 72, 0, 0, 0, 0, 0, 6, 195, 21, 37, 77, 72, 0, 10, 135, 195, 190, 5, 14, 14, 1, 14, 76, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 2, 195, 161, 126, 0, 14, 5, 130, 195, 161, 76, 6, 130, 195, 161, 76, 28, 0, 0, 0, 0, 7, 2,
-			195, 173, 108, 0, 14, 6, 130, 195, 173, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 195, 176, 112, 86, 0, 0,
-			0, 11, 2, 195, 190, 87, 6, 114, 34, 72, 134, 0, 0, 0, 0, 17, 2, 195, 189, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 108,
-			0, 14, 0, 0, 11, 136, 195, 190, 5, 19, 19, 1, 18, 9, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 88, 244,
-			149, 52, 72, 0, 0, 0, 8, 133, 195, 190, 195, 166, 18, 76, 12, 137, 195, 190, 5, 19, 19, 1, 18, 1, 18, 76, 8, 133, 195, 190,
-			195, 166, 18, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 88, 20, 147, 80, 72, 0, 0, 10, 135, 195, 190, 1, 14, 14, 9,
-			7, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 195, 190, 5, 7, 1, 18, 8, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 53, 147, 132, 36, 76, 0, 10, 135, 19, 195, 173, 195, 176, 1, 14, 8, 0, 0, 6, 195,
-			32, 81, 128, 72, 0, 0, 0, 0, 10, 135, 13, 25, 14, 4, 21, 195, 176, 76, 10, 135, 13, 21, 14, 4, 21, 195, 176, 76, 10, 135,
-			7, 195, 161, 20, 21, 195, 176, 76, 10, 135, 195, 161, 20, 20, 21, 195, 176, 76, 7, 195, 80, 147, 0, 76, 28, 7, 131, 1, 195, 176,
-			76, 28, 0, 0, 16, 2, 95, 25, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 110, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95,
-			34, 79, 122, 89, 35, 55, 119, 107, 71, 0, 0, 23, 2, 95, 33, 6, 117, 107, 71, 138, 127, 48, 117, 50, 35, 51, 65, 4, 111, 34,
-			138, 49, 109, 0, 0, 0, 0, 13, 2, 95, 38, 115, 100, 65, 111, 34, 138, 49, 109, 0, 0, 10, 135, 195, 190, 5, 19, 19, 9, 18,
-			76, 0, 13, 2, 95, 36, 72, 6, 114, 72, 55, 35, 34, 138, 0, 24, 4, 95, 52, 77, 50, 83, 57, 6, 128, 16, 35, 34, 138, 15,
-			65, 6, 109, 72, 55, 57, 127, 50, 0, 0, 6, 195, 77, 99, 192, 8, 0, 14, 4, 95, 3, 1, 16, 89, 72, 6, 127, 34, 138, 72,
-			0, 0, 18, 2, 95, 41, 89, 84, 6, 110, 57, 109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 10, 2, 95, 40, 89, 84, 110, 57, 109,
-			0, 0, 0, 15, 2, 95, 46, 48, 6, 40, 136, 107, 81, 72, 117, 34, 138, 0, 0, 15, 2, 95, 45, 71, 35, 50, 72, 89, 72, 34,
-			138, 109, 81, 0, 0, 11, 2, 95, 44, 49, 6, 114, 65, 65, 35, 0, 0, 6, 195, 88, 20, 128, 72, 11, 2, 95, 51, 87, 138, 6,
-			108, 34, 138, 0, 0, 11, 2, 95, 50, 72, 84, 6, 124, 34, 138, 0, 0, 9, 2, 95, 49, 6, 123, 72, 50, 0, 0, 9, 2, 95,
-			48, 50, 6, 40, 137, 0, 0, 9, 2, 95, 55, 89, 57, 6, 120, 0, 0, 10, 2, 95, 54, 89, 6, 112, 101, 89, 0, 0, 9, 2,
-			95, 53, 83, 6, 109, 65, 0, 0, 9, 134, 6, 195, 161, 9, 195, 176, 76, 14, 2, 95, 52, 83, 57, 6, 128, 16, 51, 109, 34, 138,
-			0, 0, 16, 2, 95, 59, 89, 6, 112, 65, 37, 49, 4, 114, 65, 65, 35, 0, 0, 18, 2, 95, 58, 72, 84, 6, 108, 48, 40, 136,
-			107, 81, 72, 117, 34, 138, 0, 0, 10, 2, 95, 57, 50, 6, 108, 38, 117, 0, 0, 9, 134, 13, 21, 14, 21, 195, 176, 76, 10, 2,
-			95, 56, 6, 125, 107, 72, 35, 0, 0, 23, 2, 95, 63, 89, 71, 6, 117, 34, 72, 134, 37, 68, 81, 4, 35, 65, 111, 34, 138, 49,
-			109, 0, 0, 20, 2, 95, 62, 6, 114, 72, 81, 55, 114, 84, 109, 55, 4, 115, 49, 35, 89, 72, 0, 0, 8, 197, 24, 83, 135, 84,
-			208, 76, 0, 12, 2, 95, 60, 114, 72, 81, 55, 114, 84, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 132, 6, 18, 195, 161,
-			76, 28, 0, 7, 196, 20, 145, 213, 52, 76, 0, 0, 7, 132, 195, 190, 195, 186, 72, 0, 0, 0, 0, 0, 0, 0, 7, 132, 195, 190,
-			195, 179, 8, 0, 0, 0, 0, 0, 0, 15, 2, 95, 91, 107, 114, 34, 72, 134, 81, 55, 114, 84, 109, 0, 0, 0, 0, 9, 134, 6,
-			195, 166, 18, 195, 176, 76, 0, 16, 2, 95, 95, 117, 50, 72, 109, 51, 89, 72, 34, 138, 109, 81, 0, 0, 0, 23, 2, 95, 93, 107,
-			6, 114, 34, 72, 134, 81, 55, 114, 84, 109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 20, 2, 95, 92, 6, 120, 84, 117, 101, 72, 89,
-			49, 4, 125, 89, 72, 138, 109, 81, 0, 0, 0, 7, 196, 53, 147, 132, 84, 76, 0, 0, 0, 7, 132, 195, 190, 195, 161, 76, 7, 132,
-			195, 190, 195, 161, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 133, 195, 190, 22, 195, 173, 76, 8, 8, 133, 195, 190, 22, 195, 173,
-			76, 0, 0, 0, 0, 0, 0, 6, 195, 20, 178, 201, 76, 0, 0, 0, 0, 0, 15, 2, 95, 123, 89, 55, 130, 84, 117, 89, 84, 109,
-			57, 109, 0, 0, 0, 0, 6, 194, 84, 208, 76, 28, 0, 0, 0, 24, 2, 95, 125, 89, 55, 6, 130, 84, 117, 89, 84, 4, 109, 57,
-			109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 0, 0, 0, 0, 10, 135, 8, 195, 182, 6, 195, 176, 21, 72, 6, 131, 19, 195, 161, 76,
-			10, 135, 195, 190, 5, 19, 19, 21, 13, 76, 0, 0, 0, 0, 0, 0, 0, 6, 131, 19, 195, 186, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 25, 32, 77, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 53, 147, 132, 84, 208, 76, 0, 0, 0,
-			0, 7, 195, 33, 97, 82, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 13, 195, 173, 14, 76, 0, 0, 0, 0, 7, 132,
-			19, 195, 173, 14, 76, 0, 0, 0, 0, 0, 11, 136, 8, 195, 182, 6, 195, 176, 21, 13, 72, 0, 0, 0, 0, 0, 8, 133, 195, 161,
-			20, 20, 9, 76, 0, 0, 0, 0, 8, 133, 195, 161, 20, 20, 21, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 21, 18, 195, 176, 21,
-			13, 72, 0, 0, 6, 195, 76, 149, 20, 76, 0, 0, 10, 135, 195, 190, 5, 19, 19, 1, 18, 76, 0, 0, 0, 7, 196, 53, 83, 149,
-			52, 76, 7, 196, 53, 83, 149, 52, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 22,
-			15, 18, 21, 195, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 195, 173, 0, 195, 189, 0, 195, 166, 0, 101,
-			0, 105, 0, 121, 0, 106, 0, 7, 6, 18, 67, 195, 190, 0, 99, 0, 102, 0, 104, 0, 107, 0, 112, 0, 116, 0, 120, 0, 115, 0,
-			7, 6, 18, 68, 112, 0, 116, 0, 107, 0, 7, 6, 20, 0, 0, 0, 120, 0, 0, 0, 120, 0, 122, 0, 0, 0, 0, 0, 6, 195,
-			161, 0, 2, 17, 67, 17, 67, 3, 125, 0, 4, 3, 126, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 166, 0, 2, 17, 67, 17, 67,
-			3, 121, 0, 4, 3, 122, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 169, 0, 2, 17, 67, 17, 67, 3, 57, 111, 0, 4, 3, 57,
-			112, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 173, 0, 2, 17, 67, 17, 67, 3, 37, 0, 4, 3, 108, 0, 2, 17, 69, 17, 68,
-			0, 7, 6, 195, 176, 0, 3, 86, 0, 4, 2, 17, 66, 3, 87, 0, 2, 32, 32, 0, 7, 6, 195, 179, 0, 2, 17, 67, 17, 67,
-			3, 127, 0, 4, 3, 128, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 182, 0, 8, 2, 21, 14, 128, 132, 129, 3, 4, 120, 0, 2,
-			17, 67, 17, 67, 3, 119, 0, 4, 3, 120, 0, 2, 17, 69, 17, 68, 0, 4, 2, 110, 103, 3, 129, 0, 2, 110, 103, 0, 7, 6,
-			195, 186, 0, 2, 17, 67, 17, 67, 3, 40, 0, 4, 3, 116, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 189, 0, 2, 17, 67, 17,
-			67, 3, 37, 0, 4, 3, 108, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 190, 0, 3, 87, 0, 7, 6, 97, 0, 108, 8, 2, 21,
-			14, 128, 132, 130, 3, 4, 113, 55, 0, 4, 2, 17, 67, 17, 67, 3, 35, 0, 8, 2, 108, 108, 12, 0, 4, 3, 113, 0, 2, 17,
-			69, 17, 68, 0, 4, 2, 110, 103, 3, 125, 0, 2, 110, 107, 0, 117, 2, 17, 67, 17, 67, 3, 129, 0, 4, 117, 3, 130, 0, 117,
-			2, 17, 69, 17, 68, 0, 7, 6, 98, 0, 4, 3, 71, 0, 98, 0, 7, 6, 99, 0, 3, 49, 0, 4, 2, 101, 3, 89, 0, 2,
-			105, 0, 7, 6, 100, 0, 4, 3, 72, 0, 100, 0, 7, 6, 101, 0, 2, 17, 67, 17, 67, 3, 111, 0, 4, 3, 112, 0, 2, 17,
-			69, 17, 68, 0, 4, 2, 110, 103, 3, 123, 0, 2, 110, 107, 0, 105, 2, 17, 67, 17, 67, 0, 121, 2, 17, 67, 17, 67, 0, 4,
-			105, 3, 124, 0, 105, 2, 17, 69, 17, 68, 0, 121, 0, 121, 2, 17, 69, 17, 68, 0, 103, 105, 3, 124, 57, 109, 0, 7, 6, 102,
-			0, 110, 100, 3, 65, 47, 0, 4, 1, 21, 2, 108, 3, 71, 0, 1, 21, 2, 110, 0, 4, 3, 83, 0, 102, 0, 4, 1, 17, 65,
-			2, 17, 65, 3, 84, 0, 1, 108, 2, 17, 65, 0, 110, 116, 3, 133, 71, 47, 0, 7, 6, 103, 0, 4, 1, 161, 195, 2, 97, 3,
-			0, 4, 1, 161, 195, 2, 117, 3, 0, 4, 1, 179, 195, 2, 97, 3, 0, 4, 1, 179, 195, 2, 117, 3, 0, 4, 1, 186, 195, 2,
-			97, 3, 0, 1, 186, 195, 2, 117, 3, 0, 4, 1, 17, 65, 2, 105, 3, 57, 0, 1, 17, 65, 2, 106, 0, 4, 2, 105, 3, 79,
-			0, 8, 2, 101, 0, 8, 2, 105, 0, 8, 2, 195, 166, 0, 8, 2, 195, 173, 0, 106, 0, 106, 8, 0, 4, 3, 81, 0, 1, 17,
-			65, 2, 108, 0, 1, 17, 65, 2, 110, 0, 8, 0, 103, 0, 110, 2, 32, 3, 81, 134, 0, 4, 1, 17, 65, 2, 97, 3, 100, 0,
-			1, 17, 65, 2, 114, 0, 1, 17, 65, 2, 117, 0, 1, 17, 65, 2, 195, 176, 0, 4, 2, 32, 3, 101, 0, 2, 115, 0, 116, 3,
-			101, 72, 0, 7, 6, 104, 0, 118, 3, 49, 84, 0, 106, 3, 99, 0, 108, 3, 105, 0, 3, 107, 0, 110, 3, 107, 134, 0, 114, 3,
-			107, 138, 0, 7, 6, 105, 0, 4, 1, 25, 2, 110, 103, 3, 37, 0, 1, 25, 2, 110, 107, 0, 2, 17, 67, 17, 67, 3, 109, 0,
-			4, 3, 110, 0, 2, 17, 69, 17, 68, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 2, 116, 3, 47, 0, 8, 3, 49, 0,
-			2, 18, 66, 3, 79, 0, 4, 8, 2, 18, 66, 3, 80, 0, 106, 0, 4, 3, 81, 0, 2, 25, 0, 2, 115, 3, 101, 0, 2, 107,
-			3, 107, 0, 7, 6, 108, 0, 3, 55, 0, 108, 3, 72, 55, 0, 4, 2, 17, 66, 29, 3, 105, 0, 2, 32, 0, 4, 108, 2, 17,
-			66, 29, 3, 137, 0, 108, 2, 32, 0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 2, 25, 0, 1, 17, 66, 3, 107, 133, 0, 2, 18,
-			68, 3, 133, 0, 7, 6, 110, 0, 4, 3, 50, 0, 110, 2, 25, 0, 110, 3, 50, 12, 0, 2, 103, 105, 3, 67, 0, 2, 103, 3,
-			68, 0, 103, 2, 32, 3, 68, 81, 0, 4, 110, 1, 105, 101, 3, 72, 50, 0, 110, 1, 117, 97, 0, 110, 1, 121, 101, 0, 110, 1,
-			161, 195, 0, 110, 1, 166, 195, 0, 110, 1, 169, 195, 0, 110, 1, 173, 195, 0, 110, 1, 179, 195, 0, 110, 1, 186, 195, 0, 110, 1,
-			189, 195, 0, 1, 17, 66, 3, 107, 134, 0, 2, 18, 68, 3, 134, 0, 107, 2, 105, 3, 135, 79, 0, 2, 107, 3, 136, 0, 103, 116,
-			2, 25, 3, 136, 72, 0, 1, 17, 65, 2, 107, 3, 136, 107, 0, 7, 6, 111, 0, 2, 17, 67, 17, 67, 3, 114, 0, 4, 3, 115,
-			0, 2, 17, 69, 17, 68, 0, 4, 2, 110, 103, 3, 127, 0, 2, 110, 107, 0, 4, 2, 103, 105, 3, 131, 0, 2, 103, 106, 0, 7,
-			6, 112, 0, 8, 3, 48, 0, 3, 71, 0, 4, 2, 107, 3, 83, 0, 2, 115, 0, 2, 116, 0, 112, 3, 107, 71, 0, 7, 6, 113,
-			0, 3, 49, 84, 0, 7, 6, 114, 0, 1, 17, 67, 3, 14, 51, 0, 1, 17, 65, 2, 17, 65, 3, 16, 51, 0, 2, 32, 3, 23,
-			51, 0, 4, 3, 23, 52, 0, 8, 0, 2, 18, 67, 3, 34, 138, 0, 114, 3, 51, 16, 51, 0, 110, 3, 51, 72, 134, 0, 108, 2,
-			17, 66, 3, 51, 137, 0, 1, 108, 3, 69, 51, 0, 108, 3, 72, 55, 0, 7, 6, 115, 0, 3, 89, 0, 115, 3, 89, 139, 0, 4,
-			104, 2, 32, 3, 91, 0, 104, 8, 0, 7, 6, 116, 0, 8, 3, 47, 0, 3, 72, 0, 4, 104, 2, 32, 3, 87, 0, 104, 8, 0,
-			4, 2, 108, 3, 107, 72, 0, 2, 110, 0, 116, 0, 7, 6, 117, 0, 4, 1, 25, 2, 110, 103, 3, 40, 0, 1, 25, 2, 110, 107,
-			0, 1, 21, 2, 110, 117, 109, 32, 3, 114, 0, 2, 17, 67, 17, 67, 3, 117, 0, 4, 3, 118, 0, 2, 17, 69, 17, 68, 0, 4,
-			2, 103, 105, 3, 132, 0, 2, 103, 106, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 4, 3,
-			49, 89, 0, 122, 0, 7, 6, 121, 0, 4, 1, 25, 2, 110, 103, 3, 37, 0, 1, 25, 2, 110, 107, 0, 2, 17, 67, 17, 67, 3,
-			109, 0, 4, 3, 110, 0, 2, 17, 69, 17, 68, 0, 7, 6, 122, 0, 122, 3, 47, 89, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72,
-			114, 55, 55, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts28 = FileInMemory_createWithData (5468, reinterpret_cast<const char *> (&espeakdata_dicts28_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/is_dict", 
+		static unsigned char espeakdata_dicts31_data[5401] = {
+			0, 4, 0, 0, 192, 15, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 101, 105, 103, 105, 195, 176, 76, 9, 134, 118, 111, 114, 117, 195,
+			176, 72, 0, 0, 9, 198, 25, 32, 77, 32, 167, 0, 28, 0, 7, 65, 8, 71, 57, 112, 0, 0, 0, 0, 0, 7, 65, 12, 89, 57,
+			112, 0, 0, 0, 0, 0, 7, 65, 16, 72, 57, 112, 0, 0, 0, 0, 6, 195, 53, 83, 148, 76, 15, 4, 95, 100, 112, 116, 10, 49,
+			4, 114, 65, 65, 35, 10, 0, 0, 12, 137, 104, 195, 182, 102, 195, 176, 117, 195, 176, 72, 8, 133, 195, 190, 105, 116, 116, 76, 0, 0,
+			0, 9, 134, 195, 161, 195, 176, 117, 114, 8, 0, 6, 65, 24, 111, 83, 0, 0, 0, 0, 0, 7, 65, 28, 81, 57, 112, 0, 6, 195,
+			53, 83, 149, 76, 0, 0, 0, 0, 6, 65, 32, 107, 126, 0, 0, 0, 0, 5, 194, 58, 32, 8, 9, 1, 35, 65, 109, 55, 55, 35,
+			0, 0, 0, 6, 195, 25, 197, 77, 76, 11, 136, 195, 190, 101, 105, 114, 114, 97, 114, 76, 0, 6, 65, 112, 126, 0, 49, 4, 193, 112,
+			76, 5, 193, 112, 76, 28, 0, 0, 8, 65, 40, 57, 6, 115, 86, 0, 0, 0, 0, 9, 1, 43, 71, 55, 6, 116, 89, 0, 0, 7,
+			65, 44, 49, 6, 126, 0, 0, 0, 0, 12, 1, 47, 89, 49, 125, 89, 72, 138, 109, 81, 0, 0, 6, 65, 48, 111, 137, 0, 0, 0,
+			0, 0, 6, 65, 52, 111, 65, 0, 0, 7, 196, 53, 83, 132, 84, 76, 0, 0, 0, 6, 65, 56, 111, 50, 0, 7, 132, 195, 190, 97,
+			117, 76, 7, 132, 195, 190, 97, 117, 72, 0, 0, 0, 0, 0, 19, 1, 61, 89, 6, 113, 65, 35, 89, 111, 65, 65, 4, 111, 34, 138,
+			49, 109, 0, 0, 0, 0, 7, 65, 64, 48, 57, 112, 0, 0, 0, 6, 195, 53, 83, 128, 76, 9, 134, 117, 114, 195, 176, 117, 109, 72,
+			0, 0, 6, 65, 68, 49, 116, 0, 0, 0, 0, 0, 7, 65, 72, 111, 34, 138, 0, 0, 0, 7, 132, 195, 190, 105, 103, 76, 0, 0,
+			6, 65, 76, 111, 89, 0, 0, 0, 0, 0, 7, 65, 80, 47, 57, 112, 0, 0, 0, 0, 6, 195, 28, 20, 212, 76, 0, 0, 0, 0,
+			0, 7, 65, 88, 84, 35, 83, 0, 0, 0, 0, 0, 16, 65, 92, 47, 84, 6, 120, 84, 35, 55, 72, 84, 4, 35, 83, 0, 6, 195,
+			21, 37, 21, 72, 0, 7, 196, 32, 147, 149, 52, 76, 0, 8, 133, 195, 190, 105, 110, 110, 76, 0, 0, 7, 65, 96, 112, 101, 89, 0,
+			0, 18, 4, 95, 49, 77, 50, 124, 50, 15, 65, 6, 109, 72, 55, 57, 127, 50, 0, 0, 0, 0, 16, 65, 100, 6, 117, 83, 89, 37,
+			55, 114, 50, 15, 4, 110, 0, 49, 0, 0, 0, 0, 8, 65, 104, 89, 112, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 195, 26, 34, 203, 76, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 54, 83, 129, 72, 76, 0, 0, 6, 194,
+			4, 96, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 82, 192,
+			28, 8, 196, 25, 148, 137, 72, 76, 8, 9, 134, 195, 190, 195, 173, 110, 97, 76, 0, 10, 135, 195, 190, 195, 173, 110, 117, 109, 76, 0,
+			0, 0, 0, 0, 0, 6, 195, 50, 82, 193, 8, 0, 0, 7, 196, 78, 83, 129, 72, 76, 0, 0, 6, 195, 52, 147, 142, 76, 22, 4,
+			95, 50, 77, 50, 47, 84, 6, 122, 34, 138, 15, 65, 6, 109, 72, 55, 57, 127, 50, 0, 0, 0, 0, 6, 195, 25, 32, 77, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 17, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 32, 19, 12, 156, 107, 35, 55,
+			55, 127, 0, 0, 0, 9, 134, 195, 190, 101, 115, 115, 105, 76, 9, 134, 195, 190, 101, 115, 115, 105, 76, 0, 0, 0, 0, 0, 8, 197,
+			56, 242, 203, 85, 32, 76, 0, 0, 7, 196, 53, 147, 132, 36, 76, 0, 9, 134, 195, 190, 101, 115, 115, 97, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 5, 194, 21, 32, 72, 0, 9, 134, 118, 101, 114, 195, 176, 97, 72, 0, 0, 6, 195, 20, 225, 1, 8, 0,
+			0, 6, 195, 21, 37, 0, 72, 0, 0, 0, 0, 6, 195, 56, 82, 64, 76, 9, 134, 195, 190, 101, 115, 115, 117, 76, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 54, 83, 137, 72, 76, 0, 0, 6, 195, 76, 147, 142, 76, 23, 4, 95, 51, 77, 50,
+			87, 138, 57, 6, 126, 34, 138, 15, 65, 6, 109, 72, 55, 57, 127, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 135, 102, 101, 110, 103, 117, 195, 176, 76, 0, 0, 7, 195, 25, 39, 0, 76, 28, 0, 0, 0, 0, 0, 0, 6, 195, 28, 21, 0,
+			76, 0, 0, 0, 0, 7, 196, 88, 244, 129, 72, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 20, 96, 76, 8, 0, 0, 10, 135,
+			195, 190, 195, 173, 110, 97, 114, 76, 0, 9, 134, 195, 190, 101, 116, 116, 97, 76, 0, 0, 0, 7, 196, 32, 147, 142, 4, 76, 0, 0,
+			0, 0, 7, 132, 104, 105, 195, 176, 76, 0, 8, 197, 53, 83, 132, 84, 208, 76, 0, 9, 134, 104, 97, 102, 105, 195, 176, 72, 8, 133,
+			195, 190, 101, 115, 115, 76, 0, 0, 0, 8, 197, 28, 81, 206, 84, 208, 28, 0, 6, 195, 32, 147, 142, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 196, 53, 83, 137, 72, 76, 0, 0, 8, 197, 53, 147, 132, 84, 208, 76, 0, 0, 6, 195, 32, 147, 128, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 33, 97, 82, 76, 8, 0, 6, 195, 32, 19, 129, 76, 0, 0, 0, 9, 134, 109, 117,
+			110, 105, 195, 176, 76, 6, 195, 54, 83, 128, 76, 0, 0, 7, 196, 28, 85, 21, 52, 76, 0, 0, 6, 195, 32, 19, 142, 72, 0, 0,
+			0, 6, 195, 28, 85, 0, 76, 0, 0, 0, 8, 133, 195, 190, 101, 105, 109, 76, 8, 133, 195, 190, 101, 105, 109, 76, 0, 0, 0, 0,
+			0, 0, 0, 8, 133, 195, 190, 101, 105, 114, 76, 8, 133, 195, 190, 101, 105, 114, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			65, 148, 108, 0, 49, 5, 193, 148, 76, 28, 0, 0, 6, 195, 32, 147, 129, 76, 0, 0, 5, 194, 78, 160, 76, 0, 6, 195, 78, 83,
+			128, 76, 0, 0, 0, 8, 133, 118, 97, 114, 195, 176, 72, 0, 6, 195, 34, 163, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 196, 113, 69, 9, 72, 76, 0, 0, 0, 0, 12, 68, 53, 147, 12, 4, 65, 109, 55, 55, 35, 0, 0, 0, 0,
+			0, 12, 68, 8, 243, 12, 4, 71, 114, 55, 55, 35, 0, 0, 0, 0, 6, 195, 88, 84, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 196, 32, 81, 149, 72, 72, 7, 196, 32, 147, 129, 72, 76, 0, 9, 134, 109, 101, 195, 176, 97, 110, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 20, 224, 76, 8, 0, 16, 3, 95, 51, 88, 87, 138, 57, 6, 126, 47, 37, 38, 4, 117,
+			0, 0, 15, 3, 95, 48, 67, 107, 6, 117, 50, 72, 14, 16, 117, 86, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 244, 129, 76,
+			0, 20, 3, 95, 49, 67, 6, 123, 107, 72, 15, 107, 6, 117, 50, 72, 14, 51, 35, 86, 0, 0, 0, 0, 0, 9, 198, 56, 242, 203,
+			85, 37, 0, 76, 0, 8, 133, 118, 101, 114, 195, 176, 72, 0, 13, 3, 95, 49, 57, 50, 6, 108, 72, 57, 125, 50, 0, 0, 12, 3,
+			95, 49, 56, 6, 126, 72, 57, 125, 50, 0, 0, 20, 3, 95, 50, 67, 47, 84, 6, 120, 15, 107, 6, 117, 50, 72, 14, 51, 117, 86,
+			0, 0, 0, 0, 0, 0, 9, 198, 56, 242, 203, 72, 20, 128, 76, 0, 14, 3, 95, 49, 49, 6, 111, 72, 55, 111, 84, 4, 117, 0,
+			0, 11, 3, 95, 49, 48, 47, 6, 108, 38, 117, 0, 0, 21, 3, 95, 51, 67, 87, 138, 57, 6, 116, 15, 107, 6, 117, 50, 72, 14,
+			51, 117, 86, 0, 14, 3, 95, 49, 51, 87, 138, 6, 111, 107, 72, 125, 50, 0, 0, 11, 3, 95, 49, 50, 47, 6, 127, 105, 83, 0,
+			0, 13, 3, 95, 49, 53, 83, 6, 109, 65, 47, 125, 50, 0, 0, 15, 3, 95, 49, 52, 83, 57, 6, 127, 34, 138, 47, 125, 50, 0,
+			0, 13, 3, 95, 49, 55, 89, 6, 130, 72, 57, 125, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 111, 101, 89, 72, 125, 50, 0, 0,
+			0, 15, 3, 95, 55, 88, 89, 57, 6, 120, 47, 37, 38, 4, 117, 0, 0, 24, 3, 95, 52, 67, 83, 57, 6, 120, 100, 117, 34, 138,
+			15, 107, 6, 117, 50, 72, 14, 51, 117, 86, 0, 0, 0, 0, 7, 195, 32, 167, 0, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 28, 85, 1, 76, 0, 0, 10, 3, 95, 49, 102, 6, 123, 107, 72, 0, 0, 0, 0, 0, 0, 0, 7, 196, 28, 85, 21, 72, 76,
+			0, 0, 9, 198, 56, 242, 203, 72, 148, 128, 76, 10, 3, 95, 50, 102, 47, 84, 6, 120, 0, 0, 0, 15, 3, 95, 50, 88, 47, 6,
+			117, 107, 72, 117, 100, 4, 117, 0, 0, 0, 0, 0, 6, 195, 32, 147, 149, 76, 0, 0, 11, 3, 95, 51, 102, 87, 138, 57, 6, 116,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 63, 63, 47, 6, 125, 81, 107, 134, 0, 0, 14, 3, 95, 52, 102, 83, 57, 6, 120,
+			100, 117, 34, 138, 0, 0, 0, 18, 3, 95, 52, 88, 83, 57, 6, 120, 16, 51, 117, 47, 4, 37, 38, 117, 0, 0, 0, 0, 0, 10,
+			135, 110, 111, 107, 107, 117, 195, 176, 76, 0, 0, 8, 133, 195, 190, 105, 195, 176, 72, 0, 0, 15, 3, 95, 53, 88, 83, 6, 109, 65,
+			47, 37, 38, 4, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 54, 88, 89, 6, 111, 101, 89, 72, 37, 38, 4, 117, 0,
+			0, 0, 0, 0, 7, 195, 76, 83, 64, 76, 28, 0, 0, 0, 5, 194, 77, 192, 76, 0, 0, 0, 8, 197, 56, 242, 203, 72, 16, 76,
+			0, 0, 0, 0, 7, 196, 78, 83, 149, 52, 76, 7, 196, 54, 83, 149, 52, 76, 0, 0, 16, 3, 95, 56, 88, 6, 125, 107, 72, 35,
+			47, 4, 37, 38, 117, 0, 0, 0, 6, 195, 32, 147, 147, 76, 0, 0, 0, 0, 0, 9, 134, 103, 101, 116, 105, 195, 176, 76, 0, 16,
+			3, 95, 57, 88, 50, 6, 108, 38, 117, 47, 4, 37, 38, 117, 0, 0, 6, 195, 54, 83, 129, 76, 0, 0, 0, 0, 0, 0, 0, 7,
+			196, 77, 83, 85, 72, 76, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 136, 112, 72, 0, 0, 10, 135, 195, 190, 101, 115, 115, 105, 114,
+			76, 0, 0, 7, 196, 88, 81, 206, 4, 8, 7, 196, 88, 81, 206, 4, 8, 7, 196, 52, 147, 142, 4, 76, 0, 0, 0, 0, 0, 7,
+			196, 113, 69, 21, 52, 76, 0, 8, 132, 109, 101, 195, 176, 76, 28, 0, 0, 0, 0, 8, 132, 118, 105, 195, 176, 76, 28, 7, 132, 118,
+			105, 195, 176, 72, 0, 0, 7, 196, 32, 147, 142, 36, 76, 0, 0, 11, 136, 118, 101, 114, 195, 176, 105, 195, 176, 72, 0, 6, 195, 21,
+			37, 77, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 6, 109, 72, 55, 57, 127, 50, 0, 0, 0, 0,
+			14, 4, 95, 48, 77, 49, 87, 6, 116, 89, 117, 50, 72, 0, 0, 0, 8, 197, 24, 83, 135, 84, 208, 76, 0, 0, 0, 0, 7, 195,
+			54, 117, 0, 76, 28, 6, 195, 88, 244, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 149, 20, 76,
+			0, 0, 0, 0, 0, 0, 6, 195, 29, 197, 21, 76, 0, 0, 0, 0, 0, 0, 0, 10, 135, 195, 190, 101, 115, 115, 97, 114, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 145, 192, 76, 0, 0, 0, 0, 0, 0, 0, 6, 194, 60, 112, 76, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 99, 97, 112, 89, 72, 6, 127, 34, 138, 72, 0, 0, 0, 0, 8, 133, 195, 190, 97,
+			110, 110, 76, 0, 0, 5, 194, 25, 240, 76, 5, 194, 25, 240, 76, 10, 135, 104, 97, 102, 195, 176, 105, 114, 72, 11, 136, 195, 190, 101,
+			115, 115, 97, 114, 105, 76, 0, 0, 0, 17, 3, 95, 195, 189, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 108, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 52, 147, 12, 36, 8, 0, 0, 0, 0, 0, 0, 7, 3, 95, 195, 173, 108, 0, 0, 7, 196, 33,
+			99, 210, 80, 8, 0, 0, 0, 10, 135, 195, 190, 101, 105, 114, 114, 97, 76, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 95, 195, 161,
+			126, 0, 9, 134, 195, 190, 101, 103, 97, 114, 8, 10, 135, 195, 190, 101, 105, 114, 114, 105, 76, 0, 0, 6, 195, 113, 69, 9, 76, 7,
+			196, 20, 145, 213, 52, 76, 0, 0, 0, 0, 0, 0, 6, 195, 54, 83, 147, 76, 0, 0, 0, 0, 0, 0, 7, 196, 53, 83, 132, 36,
+			76, 0, 0, 0, 0, 0, 7, 196, 100, 178, 213, 72, 76, 7, 196, 60, 178, 213, 72, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 6, 195, 28, 81, 206, 28, 0, 0, 0, 0, 6, 195, 100, 98, 82, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
+			20, 145, 193, 76, 0, 0, 6, 195, 21, 37, 64, 72, 0, 0, 0, 0, 0, 8, 197, 53, 147, 132, 37, 32, 76, 0, 6, 195, 53, 83,
+			137, 76, 0, 0, 0, 8, 197, 52, 147, 142, 5, 32, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 2, 195, 176, 112, 86, 0, 0, 0, 11, 2, 195, 190, 87, 6, 114, 34, 72, 134, 0, 0, 0, 0, 17, 2,
+			195, 189, 6, 117, 83, 89, 37, 55, 114, 50, 15, 4, 108, 0, 49, 0, 8, 197, 53, 83, 132, 37, 32, 76, 0, 0, 0, 0, 10, 135,
+			195, 190, 101, 115, 115, 117, 109, 76, 8, 197, 32, 147, 142, 5, 32, 76, 0, 0, 7, 196, 24, 83, 135, 84, 76, 0, 7, 196, 29, 197,
+			21, 52, 76, 0, 10, 135, 104, 195, 182, 102, 195, 176, 117, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 195,
+			190, 101, 110, 110, 97, 110, 76, 0, 0, 0, 0, 0, 9, 134, 118, 101, 114, 105, 195, 176, 72, 0, 10, 135, 109, 121, 110, 100, 117, 195,
+			176, 76, 10, 135, 109, 117, 110, 100, 117, 195, 176, 76, 10, 135, 118, 97, 114, 195, 176, 115, 116, 72, 7, 131, 97, 195, 176, 76, 28, 0,
+			0, 0, 0, 8, 196, 20, 101, 9, 72, 76, 8, 0, 0, 0, 0, 0, 10, 135, 118, 101, 114, 195, 176, 117, 109, 72, 0, 0, 8, 133,
+			117, 114, 195, 176, 117, 72, 0, 0, 0, 0, 0, 0, 0, 10, 135, 118, 101, 114, 195, 176, 117, 114, 72, 0, 0, 0, 0, 6, 195, 54,
+			83, 149, 76, 0, 0, 0, 8, 133, 195, 190, 195, 173, 110, 76, 0, 0, 0, 0, 6, 195, 32, 81, 128, 72, 0, 7, 196, 52, 147, 142,
+			36, 76, 0, 0, 0, 7, 195, 80, 147, 0, 76, 28, 0, 0, 8, 133, 101, 114, 117, 195, 176, 72, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 88, 244, 148, 76, 13, 2, 95, 34, 79, 122, 89, 35, 55, 119, 107, 71, 0, 0, 23, 2, 95, 33, 6, 117, 107, 71, 138, 127, 48,
+			117, 50, 35, 51, 65, 4, 111, 34, 138, 49, 109, 0, 0, 0, 0, 13, 2, 95, 38, 115, 100, 65, 111, 34, 138, 49, 109, 0, 0, 0,
+			13, 2, 95, 36, 72, 6, 114, 72, 55, 35, 34, 138, 0, 24, 4, 95, 52, 77, 50, 83, 57, 6, 128, 16, 35, 34, 138, 15, 65, 6,
+			109, 72, 55, 57, 127, 50, 0, 0, 6, 195, 88, 244, 149, 72, 6, 195, 77, 99, 192, 8, 12, 137, 195, 190, 101, 115, 115, 97, 114, 97,
+			114, 76, 0, 0, 18, 2, 95, 41, 89, 84, 6, 110, 57, 109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 10, 2, 95, 40, 89, 84, 110,
+			57, 109, 0, 0, 0, 15, 2, 95, 46, 48, 6, 40, 136, 107, 81, 72, 117, 34, 138, 0, 0, 15, 2, 95, 45, 71, 35, 50, 72, 89,
+			72, 34, 138, 109, 81, 0, 0, 11, 2, 95, 44, 49, 6, 114, 65, 65, 35, 0, 0, 6, 195, 88, 20, 128, 72, 11, 2, 95, 51, 87,
+			138, 6, 108, 34, 138, 0, 0, 11, 2, 95, 50, 72, 84, 6, 124, 34, 138, 0, 0, 9, 2, 95, 49, 6, 123, 72, 50, 0, 0, 9,
+			2, 95, 48, 50, 6, 40, 137, 0, 0, 9, 2, 95, 55, 89, 57, 6, 120, 0, 0, 10, 2, 95, 54, 89, 6, 112, 101, 89, 0, 0,
+			9, 2, 95, 53, 83, 6, 109, 65, 0, 0, 9, 134, 102, 195, 161, 105, 195, 176, 76, 14, 2, 95, 52, 83, 57, 6, 128, 16, 51, 109,
+			34, 138, 0, 0, 10, 135, 103, 195, 161, 116, 117, 195, 176, 76, 6, 195, 56, 83, 65, 8, 16, 2, 95, 59, 89, 6, 112, 65, 37, 49,
+			4, 114, 65, 65, 35, 0, 0, 10, 135, 195, 190, 97, 110, 110, 105, 103, 8, 18, 2, 95, 58, 72, 84, 6, 108, 48, 40, 136, 107, 81,
+			72, 117, 34, 138, 0, 0, 10, 2, 95, 57, 50, 6, 108, 38, 117, 0, 0, 10, 2, 95, 56, 6, 125, 107, 72, 35, 0, 0, 23, 2,
+			95, 63, 89, 71, 6, 117, 34, 72, 134, 37, 68, 81, 4, 35, 65, 111, 34, 138, 49, 109, 0, 0, 20, 2, 95, 62, 6, 114, 72, 81,
+			55, 114, 84, 109, 55, 4, 115, 49, 35, 89, 72, 0, 0, 0, 12, 2, 95, 60, 114, 72, 81, 55, 114, 84, 109, 0, 0, 11, 136, 104,
+			195, 182, 102, 195, 176, 117, 109, 72, 8, 197, 4, 227, 129, 73, 48, 8, 0, 7, 196, 53, 147, 132, 84, 76, 6, 195, 113, 69, 21, 76,
+			0, 0, 0, 0, 0, 0, 6, 195, 88, 244, 142, 76, 0, 0, 0, 0, 7, 132, 195, 190, 195, 186, 72, 0, 8, 133, 195, 190, 195, 166,
+			114, 76, 8, 133, 195, 190, 195, 166, 114, 72, 0, 0, 0, 0, 0, 0, 7, 132, 195, 190, 195, 179, 8, 0, 0, 0, 7, 196, 88, 244,
+			149, 52, 72, 0, 9, 198, 56, 242, 203, 85, 35, 128, 76, 0, 0, 15, 2, 95, 91, 107, 114, 34, 72, 134, 81, 55, 114, 84, 109, 0,
+			0, 0, 0, 0, 16, 2, 95, 95, 117, 50, 72, 109, 51, 89, 72, 34, 138, 109, 81, 0, 0, 9, 133, 195, 190, 118, 195, 173, 76, 8,
+			6, 195, 76, 149, 20, 76, 6, 195, 52, 149, 20, 76, 8, 133, 195, 190, 118, 195, 173, 76, 0, 23, 2, 95, 93, 107, 6, 114, 34, 72,
+			134, 81, 55, 114, 84, 109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 20, 2, 95, 92, 6, 120, 84, 117, 101, 72, 89, 49, 4, 125, 89,
+			72, 138, 109, 81, 0, 0, 0, 0, 7, 196, 34, 129, 149, 52, 72, 0, 0, 7, 132, 195, 190, 195, 161, 76, 7, 132, 195, 190, 195, 161,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 115, 195, 173, 195, 176, 97, 110, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 15, 2, 95, 123, 89, 55, 130, 84, 117, 89, 84, 109, 57, 109, 0, 0, 0, 16, 2, 95, 121, 6, 117, 83, 89, 37, 55, 114, 50,
+			15, 4, 110, 0, 0, 9, 134, 102, 195, 166, 114, 195, 176, 76, 6, 194, 84, 208, 76, 28, 0, 0, 0, 24, 2, 95, 125, 89, 55, 6,
+			130, 84, 117, 89, 84, 4, 109, 57, 109, 55, 6, 115, 49, 35, 89, 72, 0, 0, 0, 7, 196, 32, 147, 137, 72, 76, 0, 0, 10, 5,
+			95, 48, 97, 110, 100, 115, 100, 0, 0, 0, 0, 7, 196, 53, 83, 149, 52, 76, 7, 196, 53, 83, 149, 52, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 19, 132, 4, 28, 0, 0, 0, 0, 0, 6, 194, 112, 224, 76, 8, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 178, 201, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 244, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 104, 97, 102,
+			195, 176, 105, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 132, 101, 195, 176, 97, 76, 8, 0, 0, 0, 0, 0, 0, 6, 195,
+			113, 69, 0, 76, 8, 133, 195, 190, 97, 195, 176, 76, 8, 133, 195, 190, 97, 195, 176, 72, 0, 0, 10, 135, 117, 114, 195, 176, 117, 195,
+			176, 72, 10, 135, 195, 161, 116, 116, 117, 195, 176, 76, 0, 0, 6, 194, 169, 32, 76, 28, 0, 0, 0, 0, 7, 196, 88, 20, 147, 80,
+			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 26,
+			34, 203, 77, 64, 76, 0, 0, 0, 9, 134, 109, 117, 110, 117, 195, 176, 76, 0, 8, 196, 84, 225, 9, 72, 72, 28, 0, 6, 195, 78,
+			83, 129, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 195, 173, 0, 195, 189, 0, 195, 166, 0, 101, 0, 105, 0, 121, 0,
+			106, 0, 7, 6, 18, 67, 195, 190, 0, 99, 0, 102, 0, 104, 0, 107, 0, 112, 0, 116, 0, 120, 0, 115, 0, 7, 6, 18, 68, 112,
+			0, 116, 0, 107, 0, 7, 6, 20, 120, 0, 0, 0, 120, 0, 122, 0, 0, 0, 0, 0, 6, 195, 161, 0, 2, 17, 67, 17, 67, 3,
+			125, 0, 4, 3, 126, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 166, 0, 2, 17, 67, 17, 67, 3, 121, 0, 4, 3, 122, 0, 2,
+			17, 69, 17, 68, 0, 7, 6, 195, 169, 0, 2, 17, 67, 17, 67, 3, 57, 111, 0, 4, 3, 57, 112, 0, 2, 17, 69, 17, 68, 0,
+			7, 6, 195, 173, 0, 2, 17, 67, 17, 67, 3, 37, 0, 4, 3, 108, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 176, 0, 3, 86,
+			0, 4, 2, 17, 66, 3, 87, 0, 2, 32, 32, 0, 7, 6, 195, 179, 0, 2, 17, 67, 17, 67, 3, 127, 0, 4, 3, 128, 0, 2,
+			17, 69, 17, 68, 0, 7, 6, 195, 182, 0, 8, 2, 21, 14, 128, 132, 129, 3, 4, 120, 0, 2, 17, 67, 17, 67, 3, 119, 0, 4,
+			3, 120, 0, 2, 17, 69, 17, 68, 0, 4, 2, 110, 103, 3, 129, 0, 2, 110, 103, 0, 7, 6, 195, 186, 0, 2, 17, 67, 17, 67,
+			3, 40, 0, 4, 3, 116, 0, 2, 17, 69, 17, 68, 0, 7, 6, 195, 189, 0, 2, 17, 67, 17, 67, 3, 37, 0, 4, 3, 108, 0,
+			2, 17, 69, 17, 68, 0, 7, 6, 195, 190, 0, 3, 87, 0, 7, 6, 97, 0, 108, 8, 2, 21, 14, 128, 132, 130, 3, 4, 113, 55,
+			0, 4, 2, 17, 67, 17, 67, 3, 35, 0, 8, 2, 108, 108, 12, 0, 4, 3, 113, 0, 2, 17, 69, 17, 68, 0, 4, 2, 110, 103,
+			3, 125, 0, 2, 110, 107, 0, 117, 2, 17, 67, 17, 67, 3, 129, 0, 4, 117, 3, 130, 0, 117, 2, 17, 69, 17, 68, 0, 7, 6,
+			98, 0, 4, 3, 71, 0, 98, 0, 7, 6, 99, 0, 3, 49, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 7, 6, 100, 0, 4, 3,
+			72, 0, 100, 0, 7, 6, 101, 0, 2, 17, 67, 17, 67, 3, 111, 0, 4, 3, 112, 0, 2, 17, 69, 17, 68, 0, 4, 2, 110, 103,
+			3, 123, 0, 2, 110, 107, 0, 105, 2, 17, 67, 17, 67, 0, 121, 2, 17, 67, 17, 67, 0, 4, 105, 3, 124, 0, 105, 2, 17, 69,
+			17, 68, 0, 121, 0, 121, 2, 17, 69, 17, 68, 0, 103, 105, 3, 124, 57, 109, 0, 7, 6, 102, 0, 110, 100, 3, 65, 47, 0, 4,
+			1, 21, 2, 108, 3, 71, 0, 1, 21, 2, 110, 0, 4, 3, 83, 0, 102, 0, 4, 1, 17, 65, 2, 17, 65, 3, 84, 0, 1, 108,
+			2, 17, 65, 0, 110, 116, 3, 133, 71, 47, 0, 7, 6, 103, 0, 4, 1, 161, 195, 2, 97, 3, 0, 4, 1, 161, 195, 2, 117, 3,
+			0, 4, 1, 179, 195, 2, 97, 3, 0, 4, 1, 179, 195, 2, 117, 3, 0, 4, 1, 186, 195, 2, 97, 3, 0, 1, 186, 195, 2, 117,
+			3, 0, 4, 1, 17, 65, 2, 105, 3, 57, 0, 1, 17, 65, 2, 106, 0, 4, 2, 105, 3, 79, 0, 8, 2, 101, 0, 8, 2, 105,
+			0, 8, 2, 195, 166, 0, 8, 2, 195, 173, 0, 106, 0, 106, 8, 0, 4, 3, 81, 0, 1, 17, 65, 2, 108, 0, 1, 17, 65, 2,
+			110, 0, 8, 0, 103, 0, 110, 2, 32, 3, 81, 134, 0, 4, 1, 17, 65, 2, 97, 3, 100, 0, 1, 17, 65, 2, 114, 0, 1, 17,
+			65, 2, 117, 0, 1, 17, 65, 2, 195, 176, 0, 4, 2, 32, 3, 101, 0, 2, 115, 0, 116, 3, 101, 72, 0, 7, 6, 104, 0, 118,
+			3, 49, 84, 0, 106, 3, 99, 0, 108, 3, 105, 0, 3, 107, 0, 110, 3, 107, 134, 0, 114, 3, 107, 138, 0, 7, 6, 105, 0, 4,
+			1, 25, 2, 110, 103, 3, 37, 0, 1, 25, 2, 110, 107, 0, 2, 17, 67, 17, 67, 3, 109, 0, 4, 3, 110, 0, 2, 17, 69, 17,
+			68, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 2, 116, 3, 47, 0, 8, 3, 49, 0, 2, 18, 66, 3, 79, 0, 4, 8,
+			2, 18, 66, 3, 80, 0, 106, 0, 4, 3, 81, 0, 2, 25, 0, 2, 115, 3, 101, 0, 2, 107, 3, 107, 0, 7, 6, 108, 0, 3,
+			55, 0, 108, 3, 72, 55, 0, 4, 2, 17, 66, 29, 3, 105, 0, 2, 32, 0, 4, 108, 2, 17, 66, 29, 3, 137, 0, 108, 2, 32,
+			0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 2, 25, 0, 1, 17, 66, 3, 107, 133, 0, 2, 18, 68, 3, 133, 0, 7, 6, 110, 0,
+			4, 3, 50, 0, 110, 2, 25, 0, 110, 3, 50, 12, 0, 2, 103, 105, 3, 67, 0, 2, 103, 3, 68, 0, 103, 2, 32, 3, 68, 81,
+			0, 4, 110, 1, 105, 101, 3, 72, 50, 0, 110, 1, 117, 97, 0, 110, 1, 121, 101, 0, 110, 1, 161, 195, 0, 110, 1, 166, 195, 0,
+			110, 1, 169, 195, 0, 110, 1, 173, 195, 0, 110, 1, 179, 195, 0, 110, 1, 186, 195, 0, 110, 1, 189, 195, 0, 1, 17, 66, 3, 107,
+			134, 0, 2, 18, 68, 3, 134, 0, 107, 2, 105, 3, 135, 79, 0, 2, 107, 3, 136, 0, 103, 116, 2, 25, 3, 136, 72, 0, 1, 17,
+			65, 2, 107, 3, 136, 107, 0, 7, 6, 111, 0, 2, 17, 67, 17, 67, 3, 114, 0, 4, 3, 115, 0, 2, 17, 69, 17, 68, 0, 4,
+			2, 110, 103, 3, 127, 0, 2, 110, 107, 0, 4, 2, 103, 105, 3, 131, 0, 2, 103, 106, 0, 7, 6, 112, 0, 8, 3, 48, 0, 3,
+			71, 0, 4, 2, 107, 3, 83, 0, 2, 115, 0, 2, 116, 0, 112, 3, 107, 71, 0, 7, 6, 113, 0, 3, 49, 84, 0, 7, 6, 114,
+			0, 1, 17, 67, 3, 14, 51, 0, 1, 17, 65, 2, 17, 65, 3, 16, 51, 0, 2, 32, 3, 23, 51, 0, 4, 3, 23, 52, 0, 8,
+			0, 2, 18, 67, 3, 34, 138, 0, 114, 3, 51, 16, 51, 0, 110, 3, 51, 72, 134, 0, 108, 2, 17, 66, 3, 51, 137, 0, 1, 108,
+			3, 69, 51, 0, 108, 3, 72, 55, 0, 7, 6, 115, 0, 3, 89, 0, 115, 3, 89, 139, 0, 4, 104, 2, 32, 3, 91, 0, 104, 8,
+			0, 7, 6, 116, 0, 8, 3, 47, 0, 3, 72, 0, 4, 104, 2, 32, 3, 87, 0, 104, 8, 0, 4, 2, 108, 3, 107, 72, 0, 2,
+			110, 0, 116, 0, 7, 6, 117, 0, 4, 1, 25, 2, 110, 103, 3, 40, 0, 1, 25, 2, 110, 107, 0, 1, 21, 2, 110, 117, 109, 32,
+			3, 114, 0, 2, 17, 67, 17, 67, 3, 117, 0, 4, 3, 118, 0, 2, 17, 69, 17, 68, 0, 4, 2, 103, 105, 3, 132, 0, 2, 103,
+			106, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 4, 3, 49, 89, 0, 122, 0, 7, 6, 121,
+			0, 4, 1, 25, 2, 110, 103, 3, 37, 0, 1, 25, 2, 110, 107, 0, 2, 17, 67, 17, 67, 3, 109, 0, 4, 3, 110, 0, 2, 17,
+			69, 17, 68, 0, 7, 6, 122, 0, 122, 3, 47, 89, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 114, 55, 55, 35, 34, 0, 7, 0,
+			0};
+		autoFileInMemory espeakdata_dicts31 = FileInMemory_createWithData (5400, reinterpret_cast<const char *> (&espeakdata_dicts31_data), 
+			U"espeak-1.48.04-source/espeak-data/is_dict", 
 			U"is");
-		Collection_addItem (me.peek(), espeakdata_dicts28.transfer());
+		my addItem_move (espeakdata_dicts31.move());
 
-		static unsigned char espeakdata_dicts29_data[43393] = {
-			0, 4, 0, 0, 251, 159, 0, 0, 0, 9, 198, 5, 97, 86, 4, 227, 192, 72, 17, 70, 88, 16, 213, 60, 195, 192, 84, 35, 49, 6,
-			40, 110, 55, 39, 0, 0, 10, 199, 56, 80, 210, 60, 195, 199, 36, 20, 0, 6, 195, 52, 83, 128, 21, 0, 6, 195, 60, 35, 9, 66,
-			0, 7, 65, 4, 35, 12, 0, 14, 4, 193, 4, 72, 9, 197, 64, 244, 144, 61, 32, 65, 21, 9, 198, 8, 192, 83, 24, 83, 64, 20,
-			0, 9, 198, 80, 144, 149, 72, 243, 128, 67, 10, 198, 80, 83, 5, 28, 243, 128, 66, 20, 9, 198, 76, 147, 131, 72, 243, 128, 65, 9,
-			198, 5, 48, 193, 48, 17, 128, 66, 9, 198, 4, 229, 9, 24, 243, 128, 66, 0, 10, 199, 88, 243, 20, 4, 209, 84, 72, 66, 10, 199,
-			80, 84, 1, 56, 80, 200, 36, 20, 10, 199, 64, 192, 78, 36, 209, 84, 72, 66, 10, 199, 64, 83, 148, 4, 209, 84, 72, 66, 9, 198,
-			60, 211, 212, 80, 84, 137, 20, 10, 199, 52, 147, 12, 36, 209, 84, 72, 66, 6, 195, 48, 240, 128, 20, 9, 198, 37, 51, 212, 80, 84,
-			137, 20, 9, 198, 29, 32, 84, 80, 84, 137, 66, 10, 199, 12, 83, 148, 36, 209, 84, 72, 66, 0, 9, 198, 76, 245, 20, 61, 163, 206,
-			20, 7, 196, 72, 144, 133, 12, 20, 12, 200, 64, 84, 143, 56, 244, 208, 61, 32, 67, 20, 0, 6, 65, 8, 71, 37, 0, 13, 202, 16,
-			144, 201, 4, 227, 143, 88, 84, 201, 52, 20, 9, 197, 12, 243, 147, 60, 224, 65, 20, 8, 197, 12, 148, 205, 60, 224, 66, 9, 197, 12,
-			83, 148, 36, 224, 65, 20, 8, 197, 12, 20, 140, 36, 224, 66, 0, 9, 198, 72, 144, 207, 88, 84, 128, 66, 0, 9, 198, 65, 35, 211,
-			12, 83, 137, 20, 11, 199, 64, 84, 147, 20, 99, 206, 20, 66, 20, 0, 9, 198, 76, 241, 199, 36, 244, 142, 21, 9, 198, 4, 197, 15,
-			24, 244, 142, 21, 0, 6, 65, 12, 76, 37, 0, 8, 197, 88, 86, 154, 20, 224, 65, 8, 197, 72, 83, 132, 36, 224, 65, 8, 197, 12,
-			244, 142, 20, 240, 65, 8, 197, 12, 243, 15, 72, 224, 21, 8, 197, 12, 149, 137, 48, 80, 66, 8, 197, 8, 244, 142, 20, 240, 65, 0,
-			9, 198, 88, 144, 68, 61, 69, 0, 21, 9, 198, 52, 17, 199, 36, 244, 128, 21, 9, 198, 48, 21, 20, 61, 50, 64, 20, 9, 198, 12,
-			20, 9, 56, 84, 128, 21, 0, 13, 4, 95, 8, 1, 3, 107, 6, 35, 76, 36, 49, 0, 6, 195, 80, 241, 128, 20, 10, 199, 24, 147,
-			1, 80, 83, 9, 4, 68, 10, 199, 16, 148, 204, 21, 52, 201, 4, 67, 0, 11, 200, 64, 20, 133, 77, 65, 83, 36, 80, 68, 7, 196,
-			48, 145, 86, 20, 20, 7, 196, 40, 84, 207, 48, 20, 11, 200, 20, 211, 196, 36, 19, 9, 76, 144, 67, 11, 200, 13, 84, 150, 36, 194,
-			78, 20, 240, 67, 0, 6, 65, 16, 72, 37, 0, 12, 201, 76, 19, 148, 4, 32, 82, 8, 20, 128, 67, 8, 197, 69, 80, 76, 61, 32,
-			21, 9, 197, 64, 84, 137, 21, 32, 65, 21, 6, 195, 52, 83, 142, 21, 8, 197, 21, 2, 82, 61, 64, 20, 8, 197, 16, 148, 133, 81,
-			64, 20, 0, 6, 195, 77, 3, 211, 20, 9, 198, 76, 244, 130, 37, 67, 204, 67, 0, 12, 201, 81, 84, 130, 61, 97, 78, 80, 243, 0,
-			20, 10, 198, 61, 69, 5, 56, 84, 133, 67, 21, 10, 199, 56, 244, 141, 4, 225, 9, 4, 67, 9, 198, 52, 148, 197, 72, 84, 133, 67,
-			0, 11, 200, 52, 243, 148, 20, 51, 211, 5, 32, 67, 0, 7, 65, 20, 36, 12, 0, 14, 5, 193, 20, 72, 8, 6, 195, 80, 243, 142,
-			21, 8, 197, 36, 194, 5, 85, 48, 21, 16, 69, 29, 80, 73, 56, 16, 81, 58, 35, 6, 37, 12, 50, 35, 0, 8, 197, 16, 145, 83,
-			37, 48, 20, 12, 201, 12, 19, 80, 60, 64, 82, 76, 81, 192, 67, 0, 6, 195, 21, 0, 64, 20, 9, 198, 64, 19, 12, 5, 99, 204,
-			67, 10, 198, 36, 225, 5, 8, 149, 0, 66, 21, 9, 198, 24, 147, 15, 76, 241, 128, 66, 9, 198, 21, 0, 82, 12, 130, 65, 67, 9,
-			198, 21, 0, 71, 56, 85, 76, 65, 9, 198, 20, 227, 129, 28, 243, 128, 66, 0, 6, 195, 100, 241, 0, 20, 10, 199, 81, 32, 84, 4,
-			194, 65, 76, 67, 10, 199, 52, 83, 132, 20, 193, 86, 36, 20, 10, 199, 52, 19, 77, 36, 97, 82, 36, 66, 10, 199, 48, 144, 193, 57,
-			68, 143, 64, 66, 6, 195, 25, 35, 196, 20, 0, 11, 67, 69, 82, 65, 49, 58, 6, 37, 35, 0, 11, 200, 12, 243, 143, 76, 49, 82,
-			48, 16, 66, 6, 195, 80, 243, 137, 20, 7, 196, 72, 145, 83, 36, 20, 0, 8, 65, 24, 36, 83, 83, 36, 0, 8, 197, 88, 243, 19,
-			12, 144, 20, 8, 197, 77, 1, 67, 36, 80, 20, 8, 197, 76, 83, 137, 48, 80, 66, 8, 197, 52, 84, 211, 36, 16, 66, 8, 197, 52,
-			84, 143, 64, 80, 65, 8, 197, 48, 241, 199, 36, 16, 20, 8, 197, 48, 147, 79, 56, 80, 20, 9, 197, 44, 20, 129, 80, 80, 67, 20,
-			8, 197, 24, 241, 199, 36, 16, 20, 8, 197, 21, 67, 201, 48, 80, 65, 8, 197, 5, 64, 76, 36, 16, 67, 8, 197, 4, 229, 15, 56,
-			144, 20, 0, 9, 198, 77, 84, 16, 61, 53, 0, 21, 9, 198, 52, 17, 206, 21, 50, 64, 20, 9, 198, 12, 20, 147, 60, 194, 64, 66,
-			9, 198, 4, 224, 76, 37, 50, 64, 66, 0, 10, 198, 88, 19, 19, 21, 50, 65, 66, 20, 10, 198, 52, 17, 206, 21, 50, 65, 66, 20,
-			10, 199, 36, 212, 5, 72, 97, 84, 80, 20, 9, 198, 16, 148, 212, 60, 226, 65, 67, 9, 198, 12, 83, 143, 52, 19, 137, 66, 6, 195,
-			9, 35, 196, 20, 9, 198, 4, 208, 90, 104, 243, 137, 66, 0, 7, 196, 64, 193, 83, 36, 20, 9, 198, 21, 81, 197, 56, 243, 0, 68,
-			11, 200, 12, 20, 15, 48, 149, 133, 72, 144, 67, 0, 6, 65, 28, 75, 37, 0, 8, 197, 52, 243, 129, 16, 80, 65, 8, 197, 24, 244,
-			16, 60, 192, 20, 8, 197, 24, 19, 5, 12, 144, 20, 8, 197, 20, 195, 1, 16, 80, 65, 9, 198, 4, 229, 9, 17, 35, 199, 20, 0,
-			13, 202, 77, 3, 1, 56, 51, 143, 64, 193, 85, 72, 67, 6, 195, 48, 243, 135, 20, 10, 198, 37, 51, 208, 80, 84, 128, 66, 20, 9,
-			198, 4, 224, 66, 5, 50, 64, 66, 0, 14, 203, 88, 147, 12, 5, 96, 76, 48, 83, 15, 56, 112, 20, 10, 199, 81, 33, 78, 80, 84,
-			201, 52, 20, 6, 195, 80, 243, 128, 20, 10, 199, 80, 83, 5, 12, 19, 69, 72, 67, 6, 195, 16, 243, 128, 21, 10, 199, 12, 21, 5,
-			12, 129, 83, 36, 20, 9, 198, 4, 208, 90, 104, 243, 133, 66, 0, 11, 200, 77, 84, 5, 73, 53, 9, 80, 80, 66, 11, 200, 52, 147,
-			12, 20, 99, 199, 48, 144, 20, 6, 195, 16, 243, 129, 66, 11, 200, 12, 243, 148, 72, 17, 82, 20, 240, 67, 0, 8, 65, 32, 35, 49,
-			12, 35, 0, 12, 201, 12, 20, 212, 72, 243, 9, 8, 84, 128, 67, 0, 9, 198, 64, 243, 9, 28, 243, 128, 66, 9, 198, 52, 16, 195,
-			32, 147, 128, 65, 9, 198, 5, 4, 137, 12, 83, 128, 21, 0, 6, 195, 80, 244, 132, 21, 6, 195, 48, 244, 132, 21, 0, 8, 196, 56,
-			83, 12, 4, 72, 28, 15, 1, 35, 49, 35, 50, 76, 36, 55, 55, 36, 47, 12, 39, 0, 7, 196, 64, 243, 12, 36, 20, 7, 196, 56,
-			81, 213, 76, 20, 6, 195, 52, 84, 137, 66, 7, 196, 48, 147, 12, 4, 66, 6, 195, 5, 67, 205, 65, 0, 6, 195, 5, 67, 206, 65,
-			7, 65, 36, 37, 12, 0, 14, 5, 193, 36, 72, 9, 8, 197, 88, 147, 131, 37, 64, 65, 8, 197, 76, 147, 12, 4, 32, 65, 6, 195,
-			64, 246, 154, 21, 6, 195, 5, 67, 206, 66, 0, 15, 1, 37, 48, 36, 14, 16, 76, 6, 36, 50, 47, 39, 0, 27, 9, 198, 81, 34,
-			71, 48, 145, 128, 65, 9, 198, 8, 20, 207, 16, 147, 128, 66, 9, 198, 5, 32, 207, 76, 83, 128, 21, 0, 6, 1, 38, 10, 36, 0,
-			10, 199, 80, 16, 200, 36, 209, 84, 72, 66, 9, 198, 76, 98, 78, 80, 84, 133, 66, 10, 199, 65, 35, 211, 36, 81, 213, 60, 20, 0,
-			6, 195, 80, 244, 129, 66, 7, 196, 64, 83, 142, 20, 21, 0, 8, 65, 40, 75, 36, 12, 57, 0, 6, 195, 80, 244, 130, 21, 9, 198,
-			64, 83, 1, 88, 84, 135, 21, 8, 197, 12, 148, 15, 48, 192, 21, 8, 197, 4, 212, 15, 48, 192, 21, 0, 9, 198, 76, 115, 205, 8,
-			84, 128, 65, 10, 198, 72, 240, 149, 72, 83, 148, 67, 20, 9, 198, 72, 147, 66, 61, 36, 192, 21, 9, 198, 64, 20, 1, 88, 84, 128,
-			66, 7, 195, 12, 148, 143, 66, 20, 0, 14, 1, 42, 35, 89, 47, 36, 51, 37, 89, 49, 39, 0, 27, 10, 199, 77, 68, 129, 64, 147,
-			205, 8, 21, 9, 198, 60, 224, 207, 28, 83, 133, 67, 9, 198, 16, 148, 208, 20, 225, 9, 20, 0, 8, 1, 43, 48, 57, 40, 0, 27,
-			7, 196, 80, 19, 9, 4, 66, 7, 196, 64, 243, 9, 4, 66, 7, 196, 52, 81, 9, 4, 20, 0, 8, 197, 36, 225, 15, 48, 240, 66,
-			9, 65, 44, 49, 35, 48, 12, 35, 0, 8, 197, 80, 84, 133, 9, 32, 65, 9, 197, 76, 193, 83, 36, 16, 65, 20, 8, 197, 48, 148,
-			212, 60, 224, 66, 8, 197, 21, 51, 206, 21, 32, 66, 8, 197, 8, 246, 154, 60, 192, 20, 0, 6, 195, 48, 244, 143, 72, 7, 195, 48,
-			244, 143, 76, 9, 9, 198, 16, 83, 9, 8, 84, 128, 66, 0, 10, 1, 46, 48, 40, 50, 47, 39, 0, 27, 10, 199, 69, 80, 78, 80,
-			243, 69, 56, 21, 9, 198, 60, 224, 207, 28, 83, 137, 67, 0, 9, 1, 47, 89, 55, 35, 91, 0, 27, 7, 196, 80, 83, 137, 4, 20,
-			7, 196, 76, 145, 80, 20, 20, 8, 196, 76, 83, 142, 60, 66, 20, 7, 196, 76, 16, 133, 36, 66, 11, 200, 64, 21, 15, 28, 83, 133,
-			76, 144, 67, 11, 200, 53, 85, 1, 28, 83, 133, 76, 144, 67, 7, 196, 52, 17, 137, 4, 65, 11, 200, 25, 32, 84, 21, 35, 137, 80,
-			16, 68, 11, 200, 21, 52, 15, 76, 147, 69, 81, 32, 67, 11, 200, 12, 20, 18, 36, 99, 199, 48, 144, 20, 0, 8, 65, 48, 109, 55,
-			55, 36, 0, 8, 197, 36, 228, 197, 81, 64, 20, 0, 9, 198, 64, 20, 129, 8, 244, 132, 21, 0, 6, 195, 69, 81, 76, 72, 10, 199,
-			88, 83, 131, 21, 51, 1, 60, 67, 10, 199, 12, 243, 80, 4, 115, 137, 4, 67, 0, 8, 196, 56, 83, 12, 20, 72, 28, 11, 200, 16,
-			244, 16, 36, 244, 5, 81, 64, 20, 7, 196, 5, 32, 66, 36, 65, 0, 8, 65, 52, 109, 65, 65, 36, 0, 8, 197, 12, 195, 196, 36,
-			16, 20, 0, 9, 198, 53, 85, 1, 28, 83, 128, 66, 12, 201, 24, 244, 129, 52, 147, 137, 24, 84, 137, 68, 9, 198, 16, 148, 25, 48,
-			243, 128, 65, 0, 10, 199, 72, 150, 154, 36, 51, 206, 36, 66, 6, 195, 52, 83, 148, 21, 6, 195, 52, 83, 148, 21, 0, 10, 67, 69,
-			81, 73, 49, 122, 36, 57, 0, 7, 196, 72, 243, 154, 36, 66, 7, 196, 72, 240, 130, 36, 20, 7, 196, 72, 16, 130, 36, 66, 7, 196,
-			64, 193, 85, 72, 65, 7, 196, 52, 84, 197, 72, 65, 7, 196, 36, 225, 84, 80, 20, 10, 198, 16, 80, 197, 8, 19, 0, 66, 20, 7,
-			196, 8, 240, 130, 36, 20, 0, 8, 197, 24, 16, 197, 88, 144, 76, 8, 65, 56, 109, 50, 50, 36, 0, 8, 197, 64, 83, 15, 64, 80,
-			65, 0, 9, 198, 28, 197, 67, 61, 50, 64, 20, 9, 198, 13, 33, 77, 37, 50, 64, 65, 0, 14, 1, 58, 72, 4, 40, 36, 48, 6,
-			40, 50, 47, 37, 0, 10, 199, 77, 81, 4, 36, 16, 207, 56, 66, 10, 199, 65, 33, 68, 36, 193, 84, 80, 20, 9, 198, 5, 49, 137,
-			77, 50, 65, 67, 0, 11, 200, 28, 147, 143, 28, 83, 133, 76, 144, 67, 9, 198, 20, 193, 77, 61, 50, 78, 67, 0, 7, 65, 60, 110,
-			12, 0, 14, 9, 198, 64, 84, 148, 4, 229, 15, 8, 5, 193, 60, 72, 8, 9, 198, 81, 32, 83, 12, 244, 147, 21, 8, 197, 76, 99,
-			199, 28, 144, 20, 8, 197, 76, 83, 5, 56, 144, 20, 8, 197, 64, 147, 1, 16, 80, 65, 8, 197, 52, 145, 15, 48, 192, 21, 8, 197,
-			52, 19, 132, 20, 144, 66, 8, 197, 36, 229, 18, 36, 112, 66, 8, 197, 25, 80, 201, 48, 80, 66, 8, 197, 16, 83, 5, 8, 144, 20,
-			8, 197, 12, 147, 133, 76, 144, 20, 0, 11, 1, 61, 40, 81, 58, 35, 55, 36, 0, 27, 6, 195, 61, 0, 67, 66, 9, 198, 52, 243,
-			143, 24, 244, 128, 66, 9, 198, 48, 243, 137, 12, 84, 128, 66, 9, 198, 16, 144, 83, 64, 244, 128, 66, 0, 9, 198, 81, 34, 67, 21,
-			50, 77, 20, 10, 199, 12, 83, 148, 72, 243, 69, 72, 66, 0, 9, 198, 72, 85, 9, 56, 243, 0, 67, 11, 200, 24, 149, 15, 12, 83,
-			143, 76, 144, 21, 9, 198, 12, 192, 85, 76, 243, 0, 65, 9, 198, 5, 3, 211, 81, 35, 198, 66, 7, 196, 4, 192, 133, 16, 20, 0,
-			13, 1, 64, 49, 37, 6, 39, 76, 12, 39, 55, 35, 0, 13, 1, 64, 49, 37, 6, 39, 76, 12, 39, 55, 35, 0, 6, 65, 64, 48,
-			37, 0, 0, 9, 198, 64, 81, 1, 88, 83, 128, 21, 10, 198, 61, 33, 193, 56, 243, 128, 65, 21, 9, 198, 52, 21, 1, 64, 19, 128,
-			67, 9, 198, 37, 51, 211, 64, 147, 128, 67, 0, 9, 198, 4, 210, 76, 12, 20, 133, 66, 0, 0, 6, 65, 68, 49, 40, 0, 9, 198,
-			72, 80, 201, 65, 35, 195, 66, 6, 195, 52, 86, 154, 20, 8, 197, 9, 32, 68, 37, 0, 65, 0, 0, 7, 195, 84, 224, 64, 72, 9,
-			6, 195, 60, 34, 84, 65, 0, 8, 196, 76, 83, 15, 56, 66, 20, 7, 196, 61, 48, 193, 72, 20, 7, 196, 12, 240, 129, 76, 20, 7,
-			196, 4, 192, 133, 72, 65, 0, 8, 65, 72, 109, 51, 16, 36, 0, 8, 197, 64, 84, 132, 60, 224, 21, 8, 197, 52, 19, 16, 20, 192,
-			21, 0, 9, 198, 88, 19, 19, 20, 48, 192, 21, 6, 195, 80, 240, 195, 21, 9, 198, 64, 244, 201, 48, 194, 80, 66, 9, 198, 4, 229,
-			5, 72, 244, 192, 65, 0, 9, 198, 77, 1, 67, 84, 197, 77, 65, 10, 199, 76, 84, 150, 60, 100, 133, 56, 21, 10, 199, 72, 240, 195,
-			5, 49, 67, 12, 21, 10, 199, 52, 243, 143, 4, 192, 133, 72, 67, 10, 199, 24, 197, 77, 20, 225, 15, 76, 20, 0, 7, 196, 4, 32,
-			137, 4, 76, 12, 200, 80, 83, 5, 56, 49, 70, 4, 192, 67, 20, 7, 196, 76, 19, 13, 36, 66, 12, 200, 52, 84, 197, 56, 49, 70,
-			4, 192, 67, 20, 6, 195, 16, 241, 197, 20, 0, 8, 65, 76, 36, 89, 89, 36, 0, 9, 198, 77, 64, 77, 8, 80, 195, 21, 12, 201,
-			65, 35, 208, 20, 65, 85, 80, 144, 192, 67, 8, 197, 52, 20, 141, 61, 32, 65, 8, 197, 28, 85, 20, 37, 64, 65, 6, 195, 20, 97,
-			66, 20, 8, 197, 12, 83, 66, 4, 192, 65, 8, 197, 12, 19, 129, 4, 224, 65, 8, 197, 12, 19, 9, 9, 32, 65, 8, 197, 8, 21,
-			20, 37, 64, 65, 8, 197, 8, 20, 130, 21, 32, 65, 0, 8, 197, 77, 0, 84, 60, 192, 65, 8, 197, 77, 0, 76, 5, 64, 65, 9,
-			198, 77, 0, 71, 56, 243, 0, 66, 12, 201, 77, 0, 67, 12, 19, 129, 64, 243, 9, 67, 11, 200, 77, 0, 67, 12, 17, 143, 72, 224,
-			21, 9, 198, 65, 33, 70, 21, 69, 0, 20, 9, 198, 64, 147, 194, 8, 144, 192, 21, 7, 195, 20, 225, 71, 65, 20, 10, 198, 16, 145,
-			1, 12, 129, 64, 67, 20, 9, 198, 12, 83, 12, 60, 193, 64, 21, 9, 198, 4, 147, 15, 12, 129, 64, 20, 0, 6, 195, 80, 241, 192,
-			20, 6, 195, 48, 241, 192, 20, 6, 195, 36, 211, 204, 65, 10, 199, 12, 19, 80, 4, 115, 143, 48, 67, 0, 11, 200, 64, 84, 141, 4,
-			100, 143, 77, 64, 65, 7, 196, 61, 32, 201, 4, 21, 7, 196, 21, 100, 143, 76, 20, 7, 196, 12, 241, 15, 48, 21, 0, 6, 65, 80,
-			47, 37, 0, 10, 198, 80, 84, 143, 48, 65, 71, 66, 20, 8, 197, 80, 20, 148, 5, 32, 65, 8, 197, 77, 81, 5, 77, 64, 66, 6,
-			195, 76, 147, 206, 66, 8, 197, 72, 148, 15, 77, 64, 21, 8, 197, 65, 35, 212, 37, 32, 65, 8, 197, 64, 84, 146, 21, 32, 66, 9,
-			198, 52, 86, 154, 4, 225, 71, 66, 8, 197, 36, 229, 5, 29, 32, 65, 8, 197, 21, 100, 133, 85, 128, 65, 8, 197, 16, 84, 15, 77,
-			64, 21, 8, 197, 12, 244, 146, 21, 32, 66, 8, 197, 8, 148, 15, 77, 64, 21, 0, 9, 198, 81, 34, 80, 60, 65, 64, 65, 10, 198,
-			28, 147, 214, 4, 225, 64, 65, 21, 9, 198, 12, 243, 134, 36, 225, 64, 66, 9, 198, 12, 131, 210, 104, 245, 192, 66, 13, 202, 12, 130,
-			85, 76, 21, 133, 12, 50, 9, 4, 20, 13, 202, 8, 19, 14, 20, 245, 5, 72, 20, 9, 4, 70, 0, 6, 195, 76, 147, 192, 66, 10,
-			199, 76, 147, 131, 72, 243, 137, 4, 67, 9, 198, 64, 84, 195, 32, 144, 201, 20, 10, 199, 64, 19, 1, 28, 243, 137, 4, 68, 9, 198,
-			52, 240, 207, 56, 84, 201, 66, 6, 195, 21, 83, 128, 65, 9, 198, 20, 211, 211, 80, 20, 201, 66, 10, 199, 12, 147, 195, 36, 20, 137,
-			4, 67, 10, 199, 4, 225, 137, 28, 243, 137, 4, 68, 6, 195, 4, 224, 80, 65, 0, 7, 195, 76, 18, 197, 66, 20, 7, 196, 64, 83,
-			12, 20, 21, 0, 9, 197, 80, 83, 133, 72, 80, 66, 21, 12, 201, 28, 83, 133, 72, 22, 137, 60, 225, 64, 20, 8, 197, 12, 20, 1,
-			12, 80, 66, 12, 201, 5, 48, 204, 21, 2, 79, 16, 245, 0, 68, 0, 9, 198, 77, 1, 67, 12, 130, 64, 20, 9, 198, 65, 35, 211,
-			80, 21, 0, 65, 9, 198, 21, 32, 129, 12, 83, 192, 66, 9, 198, 5, 3, 211, 80, 21, 0, 66, 0, 9, 198, 77, 1, 67, 12, 130,
-			65, 20, 6, 195, 20, 226, 64, 66, 9, 198, 12, 19, 66, 60, 66, 65, 20, 0, 11, 200, 80, 85, 18, 5, 32, 200, 36, 16, 67, 7,
-			196, 76, 19, 148, 20, 66, 7, 196, 72, 80, 130, 36, 21, 11, 200, 65, 35, 195, 60, 228, 207, 48, 80, 20, 7, 196, 56, 83, 142, 36,
-			20, 9, 198, 20, 211, 212, 36, 51, 206, 66, 7, 195, 12, 147, 197, 66, 20, 0, 6, 65, 88, 84, 40, 0, 8, 197, 72, 149, 15, 12,
-			48, 21, 8, 197, 72, 85, 133, 72, 80, 21, 8, 197, 36, 225, 68, 36, 16, 20, 8, 197, 28, 16, 129, 48, 144, 65, 8, 197, 13, 84,
-			131, 84, 208, 65, 8, 197, 5, 4, 137, 48, 80, 66, 0, 6, 195, 80, 244, 147, 21, 12, 201, 76, 50, 9, 104, 241, 146, 20, 226, 65,
-			68, 9, 198, 52, 243, 15, 12, 130, 64, 20, 9, 198, 29, 32, 68, 60, 194, 64, 65, 9, 198, 12, 19, 142, 60, 34, 64, 20, 0, 9,
-			198, 81, 32, 71, 20, 66, 65, 20, 0, 8, 196, 56, 83, 12, 60, 72, 28, 17, 4, 95, 49, 77, 52, 40, 50, 71, 37, 55, 37, 6,
-			39, 50, 36, 0, 11, 200, 28, 192, 85, 12, 241, 129, 56, 80, 67, 11, 200, 12, 244, 142, 84, 51, 208, 36, 16, 20, 11, 200, 12, 244,
-			18, 60, 192, 76, 36, 16, 68, 7, 196, 12, 16, 129, 48, 65, 7, 196, 4, 208, 137, 80, 65, 0, 12, 1, 92, 71, 35, 49, 89, 55,
-			35, 91, 0, 27, 14, 65, 92, 72, 6, 39, 48, 12, 57, 35, 84, 6, 40, 0, 6, 195, 80, 244, 142, 21, 8, 197, 80, 130, 69, 76,
-			144, 20, 8, 197, 76, 148, 212, 20, 208, 20, 8, 197, 56, 243, 65, 16, 80, 65, 8, 197, 48, 243, 135, 32, 144, 20, 8, 197, 12, 20,
-			211, 60, 192, 66, 8, 197, 5, 69, 15, 72, 224, 21, 0, 9, 198, 76, 243, 15, 64, 16, 192, 67, 9, 198, 57, 83, 129, 80, 18, 192,
-			67, 9, 198, 56, 83, 199, 72, 80, 192, 20, 6, 195, 28, 147, 199, 21, 7, 195, 20, 97, 83, 65, 20, 0, 0, 7, 196, 64, 243, 148,
-			60, 20, 11, 200, 65, 35, 194, 61, 48, 201, 16, 80, 20, 0, 13, 4, 95, 49, 77, 49, 65, 6, 37, 55, 55, 36, 0, 8, 65, 96,
-			6, 37, 49, 89, 0, 8, 197, 28, 243, 142, 21, 48, 20, 8, 197, 20, 226, 201, 17, 80, 20, 6, 195, 16, 246, 154, 21, 9, 198, 4,
-			113, 83, 36, 192, 79, 68, 0, 6, 194, 4, 64, 72, 28, 17, 4, 95, 49, 77, 50, 40, 50, 65, 37, 55, 37, 6, 39, 50, 36, 0,
-			9, 198, 21, 81, 193, 56, 83, 192, 67, 0, 18, 4, 95, 49, 77, 51, 40, 50, 65, 37, 55, 37, 6, 35, 51, 72, 39, 0, 10, 199,
-			36, 224, 207, 53, 3, 5, 80, 20, 6, 195, 36, 98, 84, 65, 9, 198, 12, 130, 67, 32, 144, 137, 67, 9, 198, 12, 128, 77, 8, 84,
-			153, 21, 9, 198, 12, 21, 1, 48, 148, 201, 66, 0, 7, 196, 104, 81, 137, 72, 65, 7, 196, 80, 243, 22, 20, 20, 7, 196, 73, 83,
-			212, 36, 20, 7, 196, 64, 243, 9, 76, 21, 7, 195, 60, 20, 201, 65, 20, 7, 196, 48, 144, 133, 72, 65, 7, 196, 48, 144, 133, 72,
-			65, 7, 196, 48, 16, 129, 72, 65, 6, 195, 16, 244, 197, 20, 9, 198, 9, 32, 71, 4, 66, 78, 67, 9, 198, 8, 20, 130, 4, 225,
-			82, 21, 0, 12, 65, 100, 6, 37, 48, 89, 37, 55, 39, 50, 0, 7, 195, 4, 211, 210, 66, 21, 0, 9, 198, 52, 20, 129, 52, 19,
-			192, 67, 0, 10, 199, 64, 147, 142, 37, 1, 68, 36, 66, 9, 198, 64, 20, 129, 85, 37, 9, 67, 9, 198, 36, 225, 133, 48, 144, 197,
-			67, 9, 198, 24, 245, 15, 48, 148, 201, 66, 11, 199, 5, 48, 197, 57, 50, 79, 56, 68, 21, 6, 195, 4, 226, 84, 65, 0, 7, 196,
-			80, 19, 15, 72, 21, 7, 196, 65, 35, 214, 20, 20, 8, 196, 12, 17, 134, 20, 66, 20, 0, 10, 65, 104, 72, 88, 36, 12, 47, 35,
-			0, 8, 197, 24, 244, 131, 60, 192, 21, 8, 197, 12, 244, 146, 20, 64, 20, 12, 201, 12, 243, 134, 72, 21, 5, 72, 226, 84, 67, 8,
-			197, 12, 241, 207, 72, 224, 21, 8, 197, 12, 84, 131, 60, 192, 21, 8, 197, 5, 32, 71, 60, 224, 67, 8, 197, 4, 48, 197, 56, 224,
-			21, 0, 9, 198, 4, 211, 210, 28, 244, 192, 67, 0, 6, 195, 64, 244, 192, 20, 10, 199, 57, 84, 129, 52, 147, 137, 76, 66, 10, 199,
-			52, 19, 143, 16, 244, 5, 72, 67, 0, 7, 196, 21, 32, 78, 60, 72, 12, 201, 52, 81, 9, 80, 84, 146, 4, 225, 79, 68, 7, 196,
-			13, 80, 195, 84, 66, 15, 204, 5, 32, 201, 12, 243, 134, 72, 21, 5, 72, 226, 84, 69, 0, 8, 197, 92, 21, 20, 61, 32, 21, 8,
-			197, 88, 83, 132, 37, 64, 65, 8, 197, 80, 19, 77, 5, 32, 65, 9, 198, 76, 20, 131, 60, 96, 71, 66, 6, 195, 28, 147, 214, 21,
-			8, 197, 24, 84, 142, 21, 64, 66, 12, 201, 20, 194, 79, 12, 83, 148, 72, 144, 192, 20, 0, 9, 198, 48, 84, 85, 36, 193, 64, 20,
-			9, 198, 13, 84, 212, 60, 65, 64, 20, 9, 198, 12, 244, 146, 21, 69, 0, 20, 9, 198, 4, 225, 77, 60, 225, 64, 20, 9, 198, 4,
-			65, 76, 36, 225, 64, 21, 0, 10, 199, 81, 84, 130, 60, 113, 84, 80, 20, 9, 198, 81, 33, 83, 21, 69, 5, 20, 10, 199, 80, 240,
-			207, 24, 84, 143, 48, 68, 10, 199, 52, 84, 131, 4, 230, 137, 4, 67, 10, 199, 36, 229, 5, 72, 209, 90, 104, 20, 10, 199, 28, 84,
-			129, 72, 50, 9, 4, 67, 10, 199, 24, 83, 143, 12, 244, 9, 4, 20, 10, 199, 21, 51, 212, 72, 244, 9, 4, 68, 10, 199, 21, 2,
-			76, 21, 52, 201, 4, 68, 12, 201, 20, 225, 5, 12, 20, 201, 48, 192, 66, 68, 10, 199, 12, 20, 15, 12, 50, 9, 4, 20, 9, 198,
-			5, 69, 9, 88, 149, 1, 68, 10, 199, 5, 64, 82, 5, 52, 201, 4, 68, 0, 7, 196, 64, 243, 9, 64, 65, 7, 196, 64, 147, 15,
-			80, 20, 7, 196, 64, 83, 15, 80, 20, 0, 9, 198, 52, 145, 206, 4, 225, 71, 66, 12, 201, 52, 20, 131, 36, 20, 9, 20, 65, 64,
-			20, 8, 197, 36, 225, 68, 37, 64, 66, 8, 197, 12, 19, 80, 61, 32, 65, 0, 9, 198, 80, 84, 211, 36, 193, 64, 20, 9, 198, 80,
-			83, 198, 4, 225, 64, 66, 9, 198, 76, 84, 211, 36, 193, 64, 20, 9, 198, 28, 147, 214, 36, 225, 64, 21, 0, 10, 198, 65, 35, 199,
-			56, 244, 201, 65, 20, 10, 199, 8, 244, 135, 61, 35, 211, 20, 20, 9, 198, 4, 224, 67, 48, 20, 201, 66, 6, 195, 4, 81, 0, 20,
-			0, 7, 196, 77, 65, 67, 12, 21, 7, 196, 61, 33, 193, 56, 65, 7, 196, 21, 33, 68, 20, 20, 10, 198, 5, 53, 78, 12, 147, 206,
-			67, 21, 0, 9, 197, 88, 243, 5, 72, 80, 66, 21, 8, 197, 88, 84, 129, 12, 80, 66, 8, 197, 48, 21, 82, 20, 16, 65, 8, 197,
-			12, 244, 205, 36, 48, 20, 8, 197, 12, 244, 143, 56, 80, 20, 0, 9, 198, 81, 34, 80, 60, 194, 64, 65, 12, 201, 65, 50, 67, 61,
-			50, 78, 80, 84, 201, 67, 12, 201, 65, 50, 67, 60, 19, 129, 48, 148, 201, 68, 9, 198, 65, 33, 71, 4, 66, 64, 67, 9, 198, 64,
-			192, 84, 4, 226, 64, 65, 9, 198, 64, 81, 1, 28, 241, 192, 20, 0, 10, 199, 80, 83, 5, 88, 145, 5, 60, 67, 9, 198, 64, 192,
-			84, 4, 226, 65, 67, 9, 198, 52, 16, 195, 4, 33, 73, 67, 10, 199, 29, 80, 82, 16, 20, 143, 8, 20, 9, 198, 13, 84, 212, 60,
-			66, 65, 20, 9, 198, 12, 243, 77, 20, 66, 65, 20, 10, 199, 8, 144, 140, 36, 245, 5, 12, 20, 9, 198, 4, 227, 205, 4, 194, 65,
-			68, 6, 195, 4, 85, 0, 20, 0, 7, 196, 72, 147, 150, 36, 66, 11, 200, 64, 19, 147, 64, 84, 141, 36, 16, 67, 7, 196, 25, 33,
-			68, 16, 21, 11, 200, 21, 35, 212, 60, 208, 78, 36, 16, 69, 8, 196, 5, 32, 200, 20, 66, 20, 0, 9, 197, 76, 81, 5, 72, 80,
-			66, 21, 8, 197, 76, 80, 143, 72, 112, 21, 12, 201, 65, 32, 84, 61, 97, 67, 12, 130, 64, 20, 9, 197, 64, 245, 5, 72, 80, 66,
-			21, 9, 197, 64, 241, 5, 72, 80, 66, 21, 8, 197, 60, 32, 140, 36, 112, 20, 8, 197, 57, 80, 204, 20, 240, 65, 23, 73, 28, 84,
-			143, 28, 194, 70, 36, 51, 192, 75, 109, 51, 39, 61, 6, 37, 83, 37, 49, 39, 0, 8, 197, 21, 84, 143, 64, 144, 20, 8, 197, 20,
-			225, 193, 28, 80, 67, 12, 201, 12, 243, 12, 21, 97, 67, 12, 130, 64, 20, 0, 9, 198, 81, 34, 69, 56, 226, 64, 20, 9, 198, 76,
-			48, 80, 60, 194, 64, 65, 9, 198, 29, 80, 82, 4, 226, 64, 67, 9, 198, 20, 227, 133, 4, 66, 64, 66, 12, 201, 4, 229, 18, 61,
-			3, 211, 60, 98, 65, 69, 0, 9, 198, 80, 84, 148, 20, 226, 65, 67, 9, 198, 80, 83, 211, 60, 98, 65, 68, 6, 195, 52, 84, 192,
-			20, 9, 198, 36, 228, 207, 56, 226, 65, 20, 9, 198, 28, 20, 132, 20, 226, 65, 20, 0, 7, 196, 76, 16, 129, 80, 65, 7, 196, 65,
-			33, 67, 36, 20, 7, 196, 52, 243, 137, 80, 65, 7, 196, 52, 241, 5, 52, 20, 7, 196, 28, 80, 133, 48, 20, 0, 8, 197, 56, 80,
-			212, 60, 224, 20, 0, 6, 195, 60, 33, 83, 20, 13, 202, 12, 20, 212, 20, 197, 5, 72, 210, 78, 36, 67, 9, 198, 8, 148, 212, 20,
-			48, 192, 21, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 6, 195, 80, 129, 84, 20, 0, 7, 196, 80, 83, 149, 20, 20, 11, 200, 64,
-			83, 15, 64, 243, 142, 21, 48, 20, 7, 196, 5, 144, 77, 20, 67, 0, 15, 204, 8, 21, 18, 4, 51, 205, 36, 243, 65, 12, 130, 65,
-			71, 0, 9, 198, 76, 145, 5, 72, 83, 192, 66, 9, 198, 56, 144, 207, 48, 19, 192, 67, 9, 198, 4, 192, 137, 72, 83, 192, 66, 0,
-			10, 199, 76, 16, 195, 5, 35, 211, 36, 20, 10, 199, 28, 19, 1, 81, 67, 211, 36, 20, 9, 198, 4, 224, 77, 56, 84, 201, 66, 0,
-			7, 196, 61, 69, 9, 12, 20, 9, 198, 8, 244, 195, 60, 225, 82, 21, 0, 8, 197, 81, 34, 79, 56, 96, 21, 0, 9, 198, 49, 80,
-			201, 25, 81, 192, 66, 29, 74, 12, 244, 148, 60, 50, 82, 13, 82, 84, 60, 49, 110, 14, 16, 47, 39, 76, 37, 14, 16, 49, 6, 40,
-			37, 47, 39, 0, 9, 198, 8, 16, 195, 5, 32, 64, 67, 0, 10, 199, 16, 80, 193, 52, 84, 143, 56, 66, 0, 7, 196, 88, 83, 148,
-			36, 21, 7, 196, 80, 241, 1, 72, 65, 7, 196, 77, 67, 210, 52, 21, 7, 196, 24, 241, 5, 72, 65, 7, 196, 4, 225, 143, 72, 65,
-			0, 8, 197, 84, 226, 83, 60, 224, 66, 6, 195, 61, 32, 70, 65, 8, 197, 52, 20, 131, 60, 224, 66, 0, 9, 198, 24, 147, 15, 9,
-			84, 192, 65, 9, 198, 16, 144, 129, 81, 66, 84, 66, 0, 10, 199, 77, 84, 5, 72, 99, 21, 60, 66, 6, 195, 69, 83, 212, 20, 10,
-			199, 65, 83, 148, 5, 49, 67, 12, 21, 9, 198, 56, 245, 133, 52, 36, 133, 20, 6, 195, 21, 97, 64, 20, 6, 195, 13, 33, 68, 20,
-			10, 199, 5, 33, 207, 77, 67, 204, 36, 67, 10, 199, 4, 48, 201, 64, 149, 5, 72, 66, 0, 7, 196, 88, 243, 20, 60, 21, 7, 196,
-			77, 67, 210, 56, 21, 11, 200, 8, 21, 20, 36, 32, 76, 20, 224, 21, 7, 196, 8, 17, 9, 4, 66, 0, 8, 197, 81, 85, 20, 61,
-			32, 21, 6, 195, 52, 243, 22, 20, 8, 197, 16, 19, 13, 5, 64, 65, 8, 197, 12, 243, 15, 56, 224, 21, 8, 197, 12, 19, 134, 61,
-			32, 65, 0, 10, 198, 65, 35, 212, 21, 84, 192, 65, 20, 12, 201, 48, 84, 15, 77, 3, 206, 16, 147, 9, 20, 9, 198, 33, 80, 72,
-			36, 225, 64, 67, 6, 195, 29, 33, 67, 20, 12, 201, 12, 147, 145, 84, 19, 148, 20, 227, 137, 20, 9, 198, 12, 20, 131, 5, 33, 64,
-			65, 0, 10, 199, 64, 20, 135, 32, 83, 9, 4, 67, 10, 199, 52, 144, 210, 60, 51, 211, 52, 20, 9, 198, 24, 83, 9, 12, 149, 1,
-			68, 10, 199, 8, 20, 137, 12, 83, 148, 72, 20, 0, 7, 196, 96, 83, 137, 4, 67, 11, 200, 81, 33, 68, 36, 49, 83, 36, 208, 20,
-			7, 196, 76, 243, 137, 4, 66, 7, 196, 61, 53, 9, 4, 65, 7, 196, 4, 33, 9, 4, 66, 0, 17, 70, 24, 18, 67, 12, 130, 79,
-			83, 35, 6, 37, 49, 12, 37, 39, 0, 9, 198, 20, 209, 82, 61, 65, 67, 20, 8, 197, 4, 197, 1, 37, 32, 66, 0, 9, 198, 4,
-			32, 137, 5, 65, 64, 76, 7, 194, 16, 16, 72, 9, 28, 9, 198, 81, 32, 77, 37, 65, 64, 65, 9, 198, 76, 244, 135, 21, 33, 64,
-			21, 9, 198, 52, 84, 211, 21, 33, 64, 66, 9, 198, 48, 81, 199, 21, 33, 64, 20, 9, 198, 8, 84, 135, 21, 33, 64, 66, 0, 9,
-			198, 88, 83, 15, 12, 149, 1, 68, 10, 199, 77, 68, 133, 81, 67, 201, 4, 21, 10, 199, 24, 245, 15, 28, 83, 137, 4, 68, 10, 199,
-			20, 194, 79, 24, 19, 137, 4, 69, 14, 203, 16, 144, 201, 5, 52, 197, 81, 65, 83, 36, 208, 20, 0, 10, 67, 20, 115, 9, 36, 61,
-			37, 0, 76, 11, 200, 88, 84, 143, 48, 19, 149, 61, 96, 20, 7, 196, 61, 37, 9, 12, 66, 7, 196, 44, 81, 137, 72, 20, 8, 196,
-			16, 80, 143, 72, 65, 20, 7, 196, 12, 241, 129, 56, 65, 11, 200, 12, 21, 5, 56, 19, 149, 61, 96, 20, 7, 196, 5, 33, 193, 56,
-			65, 0, 6, 195, 16, 19, 0, 72, 9, 197, 48, 84, 15, 72, 80, 65, 20, 9, 197, 24, 83, 79, 72, 80, 65, 20, 8, 197, 16, 241,
-			9, 12, 144, 21, 8, 197, 12, 83, 143, 8, 144, 20, 8, 197, 8, 244, 206, 36, 16, 20, 8, 197, 8, 19, 129, 72, 144, 65, 6, 195,
-			5, 97, 78, 21, 0, 11, 198, 12, 243, 12, 60, 66, 64, 66, 20, 9, 9, 198, 76, 148, 148, 61, 34, 64, 65, 12, 201, 69, 80, 84,
-			81, 35, 210, 84, 245, 5, 20, 9, 198, 24, 244, 195, 5, 34, 64, 65, 9, 198, 16, 84, 15, 76, 149, 0, 66, 9, 198, 12, 243, 12,
-			60, 66, 64, 20, 9, 198, 12, 19, 69, 17, 34, 64, 20, 10, 198, 4, 225, 68, 16, 245, 0, 66, 20, 0, 9, 198, 80, 83, 199, 60,
-			226, 65, 68, 10, 199, 72, 147, 80, 72, 245, 133, 72, 66, 10, 199, 52, 144, 210, 60, 98, 76, 52, 67, 10, 199, 28, 149, 76, 36, 19,
-			143, 88, 20, 11, 199, 28, 85, 19, 20, 208, 78, 36, 66, 20, 9, 198, 28, 83, 65, 81, 34, 65, 67, 10, 199, 12, 147, 143, 64, 149,
-			5, 12, 20, 6, 195, 8, 85, 0, 20, 9, 198, 8, 80, 195, 5, 34, 65, 67, 10, 199, 5, 64, 82, 28, 21, 9, 76, 66, 0, 7,
-			196, 88, 81, 15, 88, 65, 8, 196, 76, 81, 1, 56, 65, 20, 11, 200, 64, 244, 148, 4, 99, 199, 48, 144, 20, 6, 195, 61, 162, 65,
-			66, 7, 196, 56, 17, 9, 72, 66, 7, 196, 37, 81, 197, 72, 65, 0, 8, 197, 24, 16, 197, 88, 240, 76, 8, 197, 20, 32, 133, 72,
-			240, 72, 8, 197, 4, 192, 193, 48, 144, 65, 0, 10, 198, 76, 83, 142, 61, 34, 64, 65, 20, 9, 198, 64, 20, 129, 8, 149, 0, 66,
-			9, 198, 13, 33, 83, 12, 149, 0, 65, 9, 198, 12, 20, 131, 21, 34, 64, 65, 0, 9, 198, 81, 84, 135, 61, 98, 65, 20, 9, 198,
-			52, 244, 195, 61, 98, 65, 20, 9, 198, 52, 17, 83, 81, 34, 65, 67, 9, 198, 21, 131, 198, 61, 34, 65, 68, 9, 198, 20, 66, 84,
-			61, 34, 65, 68, 6, 195, 13, 33, 84, 20, 0, 7, 196, 65, 33, 71, 36, 20, 6, 195, 52, 243, 5, 20, 11, 200, 36, 51, 206, 61,
-			53, 1, 76, 144, 67, 9, 198, 8, 243, 142, 4, 224, 82, 66, 9, 198, 4, 210, 71, 16, 19, 0, 66, 0, 12, 201, 81, 34, 78, 37,
-			64, 80, 60, 194, 64, 67, 8, 197, 72, 147, 69, 16, 144, 20, 6, 195, 24, 81, 18, 20, 8, 197, 24, 19, 69, 16, 144, 20, 12, 201,
-			12, 20, 212, 20, 196, 197, 65, 34, 64, 20, 0, 13, 201, 81, 33, 66, 5, 49, 76, 20, 114, 5, 67, 21, 9, 198, 81, 32, 78, 76,
-			85, 20, 20, 6, 195, 29, 33, 83, 20, 0, 6, 195, 64, 244, 212, 21, 11, 199, 16, 145, 78, 12, 81, 129, 48, 66, 20, 6, 195, 13,
-			33, 80, 20, 0, 12, 201, 76, 245, 20, 60, 53, 84, 4, 225, 79, 68, 7, 196, 76, 50, 5, 16, 20, 7, 196, 5, 48, 197, 80, 20,
-			0, 0, 26, 73, 72, 240, 195, 5, 32, 73, 56, 243, 1, 14, 16, 39, 49, 12, 35, 51, 35, 6, 37, 50, 110, 55, 35, 0, 9, 198,
-			65, 35, 211, 64, 85, 20, 20, 9, 198, 65, 33, 80, 61, 53, 0, 21, 6, 195, 13, 33, 83, 20, 0, 9, 198, 104, 19, 132, 60, 32,
-			137, 20, 0, 7, 196, 88, 145, 5, 60, 65, 7, 196, 81, 34, 65, 12, 65, 7, 196, 77, 67, 208, 64, 21, 7, 196, 52, 148, 212, 4,
-			66, 9, 198, 52, 147, 137, 28, 243, 6, 67, 7, 196, 5, 33, 78, 20, 21, 0, 12, 201, 76, 19, 22, 4, 51, 206, 16, 245, 20, 21,
-			24, 73, 5, 85, 15, 88, 82, 67, 60, 195, 192, 35, 40, 47, 39, 84, 109, 6, 37, 49, 39, 55, 39, 0, 0, 9, 198, 64, 243, 9,
-			20, 68, 128, 20, 9, 198, 16, 144, 77, 21, 68, 128, 66, 0, 10, 199, 76, 83, 69, 77, 65, 78, 20, 66, 9, 198, 36, 224, 207, 57,
-			48, 201, 20, 0, 7, 195, 4, 115, 9, 72, 9, 7, 196, 12, 243, 15, 8, 65, 0, 8, 197, 88, 145, 206, 60, 192, 66, 8, 197, 24,
-			83, 19, 36, 224, 65, 9, 197, 9, 33, 71, 4, 224, 65, 20, 0, 0, 10, 199, 65, 33, 83, 8, 149, 5, 72, 66, 9, 198, 16, 144,
-			197, 52, 36, 133, 20, 10, 199, 12, 20, 193, 80, 244, 146, 20, 21, 0, 6, 195, 72, 85, 5, 21, 6, 195, 56, 84, 9, 20, 7, 196,
-			52, 19, 9, 4, 66, 7, 196, 28, 243, 9, 4, 66, 0, 8, 197, 80, 83, 196, 61, 64, 66, 9, 197, 76, 244, 150, 60, 192, 66, 21,
-			8, 197, 76, 195, 199, 4, 224, 20, 8, 197, 72, 149, 18, 61, 96, 20, 8, 197, 21, 35, 196, 61, 64, 66, 6, 195, 8, 83, 22, 21,
-			8, 197, 8, 17, 206, 60, 192, 66, 0, 9, 198, 24, 84, 212, 37, 96, 76, 65, 13, 202, 20, 193, 84, 81, 35, 212, 20, 51, 137, 12,
-			20, 9, 198, 12, 20, 212, 61, 33, 64, 65, 0, 10, 199, 48, 243, 66, 5, 33, 9, 4, 67, 0, 6, 195, 80, 21, 1, 66, 7, 196,
-			64, 243, 131, 20, 20, 6, 195, 64, 148, 9, 66, 11, 200, 52, 22, 154, 4, 48, 200, 21, 32, 66, 7, 196, 52, 19, 137, 4, 66, 7,
-			196, 44, 83, 137, 4, 20, 0, 9, 197, 80, 83, 80, 21, 32, 65, 20, 9, 197, 52, 85, 5, 61, 32, 66, 21, 0, 5, 194, 4, 144,
-			72, 9, 198, 48, 19, 131, 21, 69, 0, 21, 9, 198, 13, 35, 195, 21, 69, 0, 21, 9, 198, 8, 240, 195, 21, 69, 0, 21, 0, 10,
-			199, 24, 84, 146, 4, 115, 211, 80, 21, 9, 198, 4, 229, 9, 24, 21, 5, 66, 0, 7, 196, 76, 16, 137, 72, 66, 8, 196, 72, 243,
-			12, 20, 66, 20, 7, 196, 65, 34, 69, 28, 20, 0, 12, 201, 64, 243, 9, 52, 84, 212, 61, 33, 64, 67, 8, 197, 48, 16, 207, 56,
-			144, 65, 8, 197, 36, 225, 207, 72, 112, 21, 8, 197, 21, 2, 76, 60, 112, 66, 8, 197, 16, 147, 195, 48, 80, 65, 0, 9, 198, 104,
-			147, 135, 5, 34, 64, 65, 9, 198, 104, 145, 199, 85, 32, 84, 65, 9, 198, 16, 80, 213, 8, 149, 0, 66, 9, 198, 12, 243, 147, 84,
-			85, 0, 20, 0, 9, 198, 76, 81, 206, 5, 98, 65, 67, 9, 198, 76, 20, 148, 61, 34, 65, 67, 10, 199, 64, 243, 9, 13, 32, 84,
-			20, 66, 9, 198, 28, 84, 135, 61, 98, 65, 20, 6, 195, 12, 85, 0, 20, 9, 198, 12, 19, 148, 61, 34, 65, 67, 11, 199, 12, 17,
-			15, 56, 81, 200, 20, 66, 20, 0, 11, 200, 93, 80, 200, 21, 33, 82, 36, 16, 67, 11, 200, 80, 83, 73, 77, 67, 195, 48, 80, 66,
-			11, 200, 64, 243, 9, 80, 80, 206, 36, 48, 20, 11, 200, 37, 3, 195, 60, 225, 18, 36, 16, 68, 11, 200, 37, 1, 82, 81, 35, 198,
-			36, 16, 68, 7, 196, 36, 225, 133, 72, 65, 7, 196, 25, 35, 196, 20, 20, 11, 200, 16, 145, 76, 21, 69, 18, 36, 48, 20, 7, 196,
-			16, 17, 142, 36, 66, 11, 200, 12, 84, 131, 61, 2, 84, 20, 48, 20, 11, 200, 9, 84, 143, 13, 32, 90, 36, 16, 68, 10, 198, 9,
-			80, 197, 24, 19, 0, 66, 20, 0, 8, 197, 76, 147, 21, 72, 144, 65, 8, 197, 72, 245, 1, 72, 144, 65, 8, 197, 61, 99, 214, 36,
-			16, 67, 9, 198, 52, 18, 69, 85, 66, 67, 66, 8, 197, 28, 84, 146, 20, 144, 66, 8, 197, 12, 21, 1, 72, 144, 65, 0, 12, 201,
-			60, 67, 206, 80, 242, 65, 81, 34, 65, 70, 9, 198, 5, 48, 204, 21, 2, 64, 20, 0, 9, 198, 81, 85, 20, 5, 98, 65, 8, 9,
-			198, 81, 85, 20, 5, 98, 65, 67, 9, 198, 80, 147, 148, 61, 34, 65, 67, 9, 198, 76, 21, 18, 5, 2, 65, 67, 10, 199, 21, 21,
-			73, 48, 21, 5, 72, 67, 9, 198, 12, 244, 211, 21, 34, 65, 66, 9, 198, 5, 3, 195, 72, 149, 9, 66, 0, 7, 196, 76, 50, 5,
-			52, 20, 7, 196, 72, 244, 211, 36, 21, 7, 196, 65, 34, 65, 52, 65, 11, 200, 64, 193, 67, 61, 69, 5, 72, 144, 20, 7, 196, 61,
-			69, 9, 52, 20, 7, 196, 21, 49, 68, 72, 20, 9, 198, 16, 245, 129, 16, 243, 0, 66, 11, 200, 16, 148, 12, 60, 208, 90, 36, 16,
-			68, 8, 196, 12, 81, 129, 48, 65, 20, 11, 200, 4, 226, 83, 61, 69, 5, 72, 144, 20, 0, 8, 197, 80, 145, 80, 60, 192, 20, 8,
-			197, 64, 147, 154, 60, 192, 66, 0, 12, 201, 72, 17, 9, 61, 65, 82, 5, 2, 65, 70, 12, 201, 65, 50, 67, 61, 65, 82, 5, 2,
-			65, 69, 12, 201, 65, 32, 78, 61, 65, 82, 5, 2, 65, 69, 12, 201, 64, 84, 195, 5, 52, 197, 72, 243, 9, 67, 12, 201, 24, 148,
-			201, 61, 65, 82, 5, 2, 65, 70, 12, 201, 13, 35, 205, 61, 65, 82, 5, 2, 65, 69, 12, 201, 5, 35, 205, 5, 65, 82, 5, 2,
-			65, 70, 9, 198, 4, 208, 68, 21, 84, 192, 21, 0, 0, 10, 198, 80, 83, 5, 52, 85, 18, 66, 20, 9, 198, 16, 244, 201, 52, 85,
-			18, 66, 0, 15, 204, 13, 34, 83, 80, 19, 12, 61, 65, 82, 5, 2, 65, 70, 0, 0, 14, 203, 69, 80, 84, 80, 244, 132, 36, 49,
-			83, 36, 208, 20, 9, 198, 52, 20, 133, 81, 66, 77, 21, 9, 198, 12, 84, 142, 60, 32, 137, 20, 0, 7, 196, 80, 84, 208, 36, 20,
-			7, 196, 76, 147, 143, 72, 21, 7, 196, 72, 243, 12, 36, 66, 6, 195, 56, 83, 73, 20, 7, 196, 12, 243, 12, 36, 20, 0, 8, 197,
-			80, 19, 12, 20, 64, 66, 6, 195, 64, 131, 206, 20, 6, 195, 20, 35, 0, 20, 0, 9, 198, 81, 34, 77, 21, 68, 128, 65, 9, 198,
-			76, 240, 201, 21, 64, 64, 67, 9, 198, 64, 149, 5, 12, 144, 64, 20, 9, 198, 64, 20, 129, 88, 144, 64, 67, 9, 198, 36, 68, 143,
-			24, 240, 128, 66, 0, 12, 201, 64, 243, 148, 20, 192, 78, 16, 243, 6, 20, 6, 195, 52, 240, 64, 20, 0, 7, 196, 24, 83, 137, 76,
-			21, 0, 9, 198, 5, 97, 83, 76, 147, 79, 72, 12, 201, 56, 20, 131, 60, 193, 83, 76, 144, 64, 68, 6, 195, 52, 240, 66, 66, 12,
-			201, 48, 144, 193, 57, 68, 143, 64, 144, 64, 68, 8, 197, 21, 48, 200, 36, 192, 20, 9, 197, 16, 20, 137, 20, 224, 67, 21, 8, 197,
-			12, 194, 77, 20, 224, 65, 12, 201, 12, 21, 1, 64, 193, 83, 76, 144, 64, 68, 8, 197, 9, 37, 71, 60, 192, 65, 0, 9, 198, 88,
-			83, 129, 72, 144, 64, 67, 9, 198, 88, 19, 9, 28, 144, 64, 66, 9, 198, 84, 52, 143, 56, 144, 64, 67, 10, 198, 76, 147, 5, 76,
-			144, 64, 66, 20, 18, 70, 76, 81, 5, 12, 144, 64, 89, 36, 72, 36, 76, 6, 37, 12, 35, 0, 10, 198, 64, 243, 5, 76, 144, 64,
-			66, 20, 10, 198, 52, 19, 5, 76, 144, 64, 66, 20, 9, 198, 12, 243, 69, 16, 144, 64, 20, 0, 9, 198, 88, 83, 148, 20, 227, 137,
-			20, 10, 199, 64, 83, 148, 5, 3, 204, 36, 66, 10, 199, 52, 83, 16, 60, 209, 78, 20, 66, 10, 199, 52, 19, 5, 77, 49, 82, 20,
-			20, 6, 195, 21, 33, 0, 21, 10, 199, 8, 83, 133, 77, 49, 82, 20, 20, 0, 6, 195, 105, 83, 21, 66, 7, 196, 80, 244, 211, 20,
-			21, 8, 196, 76, 244, 201, 4, 65, 20, 7, 196, 4, 50, 5, 36, 66, 0, 8, 197, 61, 4, 15, 77, 64, 21, 8, 197, 52, 243, 135,
-			61, 160, 20, 12, 201, 28, 195, 211, 76, 243, 1, 48, 144, 64, 68, 8, 197, 24, 147, 195, 36, 224, 66, 8, 197, 21, 2, 84, 21, 64,
-			66, 12, 201, 12, 148, 195, 5, 80, 193, 76, 144, 64, 68, 8, 197, 8, 20, 130, 5, 32, 65, 8, 197, 4, 194, 77, 20, 224, 21, 0,
-			6, 195, 64, 145, 71, 20, 9, 198, 21, 2, 84, 60, 209, 64, 66, 0, 6, 195, 64, 145, 64, 20, 9, 198, 52, 17, 206, 20, 230, 137,
-			20, 0, 14, 68, 37, 48, 73, 4, 37, 88, 35, 6, 37, 12, 35, 0, 9, 198, 13, 35, 205, 60, 99, 210, 66, 8, 196, 12, 81, 15,
-			48, 65, 20, 7, 196, 5, 33, 79, 48, 66, 0, 8, 197, 72, 148, 207, 73, 64, 21, 8, 197, 64, 243, 9, 105, 160, 65, 0, 5, 194,
-			24, 16, 76, 6, 194, 16, 80, 72, 9, 9, 198, 80, 245, 82, 56, 81, 64, 21, 9, 198, 60, 193, 65, 12, 81, 64, 67, 13, 202, 53,
-			84, 201, 12, 245, 5, 72, 20, 9, 4, 70, 5, 194, 20, 48, 20, 13, 202, 12, 129, 77, 36, 245, 5, 72, 20, 9, 4, 70, 9, 198,
-			5, 65, 78, 60, 193, 128, 20, 0, 9, 67, 32, 18, 64, 35, 57, 0, 72, 7, 195, 56, 82, 64, 72, 28, 10, 199, 76, 81, 199, 36,
-			245, 137, 4, 67, 9, 198, 64, 19, 1, 52, 81, 5, 20, 10, 199, 24, 147, 15, 76, 241, 137, 4, 68, 9, 198, 12, 243, 80, 61, 53,
-			5, 21, 10, 199, 12, 16, 137, 56, 245, 137, 4, 68, 10, 199, 4, 229, 9, 52, 17, 137, 4, 67, 6, 195, 4, 112, 84, 65, 0, 7,
-			196, 64, 84, 212, 20, 20, 7, 196, 5, 97, 86, 4, 72, 7, 196, 5, 97, 84, 20, 72, 8, 196, 77, 66, 76, 20, 66, 20, 6, 195,
-			36, 229, 137, 66, 9, 198, 24, 244, 196, 36, 227, 214, 20, 7, 196, 8, 145, 143, 72, 65, 7, 196, 5, 96, 82, 36, 65, 7, 196, 5,
-			65, 76, 20, 65, 0, 7, 195, 16, 83, 0, 72, 9, 8, 197, 77, 3, 199, 48, 144, 20, 9, 198, 72, 82, 77, 64, 145, 71, 20, 8,
-			197, 65, 35, 195, 56, 80, 20, 12, 201, 29, 80, 82, 16, 19, 9, 56, 81, 64, 67, 9, 197, 12, 240, 204, 20, 16, 65, 20, 8, 197,
-			9, 35, 199, 48, 144, 20, 9, 197, 8, 243, 7, 36, 16, 65, 20, 8, 197, 4, 224, 78, 36, 16, 67, 9, 197, 4, 193, 82, 36, 16,
-			66, 21, 0, 9, 198, 9, 84, 195, 20, 210, 64, 20, 0, 6, 195, 16, 18, 64, 72, 10, 199, 88, 84, 195, 61, 98, 76, 20, 67, 0,
-			7, 196, 25, 83, 77, 60, 72, 16, 4, 95, 4, 16, 20, 10, 84, 6, 37, 51, 81, 39, 55, 35, 0, 7, 196, 76, 19, 132, 20, 66,
-			11, 200, 64, 81, 15, 28, 83, 133, 76, 144, 67, 11, 200, 61, 32, 200, 36, 64, 67, 20, 80, 67, 11, 200, 52, 85, 1, 24, 243, 133,
-			76, 144, 20, 0, 8, 197, 69, 81, 71, 48, 144, 72, 8, 197, 80, 83, 210, 36, 16, 67, 12, 201, 77, 66, 76, 61, 3, 201, 16, 82,
-			64, 69, 8, 197, 73, 85, 5, 56, 144, 20, 8, 197, 72, 80, 76, 80, 16, 67, 8, 197, 64, 20, 143, 16, 144, 66, 8, 197, 64, 20,
-			143, 16, 144, 20, 8, 197, 48, 245, 133, 72, 80, 21, 8, 197, 48, 85, 137, 80, 16, 67, 8, 197, 37, 3, 212, 20, 48, 20, 10, 198,
-			36, 115, 5, 76, 144, 83, 66, 20, 8, 197, 24, 83, 9, 12, 80, 66, 8, 197, 21, 48, 200, 36, 208, 20, 9, 197, 16, 245, 133, 72,
-			80, 66, 21, 9, 198, 12, 244, 144, 61, 33, 79, 66, 8, 197, 12, 83, 148, 72, 144, 20, 8, 197, 8, 245, 67, 48, 80, 67, 8, 197,
-			5, 85, 1, 72, 144, 65, 0, 9, 198, 65, 35, 208, 4, 227, 204, 67, 9, 198, 12, 243, 131, 72, 85, 0, 20, 9, 198, 12, 20, 133,
-			28, 114, 64, 21, 9, 198, 8, 19, 19, 4, 210, 64, 65, 9, 198, 4, 195, 15, 28, 114, 64, 20, 0, 9, 198, 76, 19, 79, 28, 114,
-			65, 20, 6, 195, 72, 85, 20, 20, 11, 199, 64, 20, 148, 20, 50, 80, 20, 66, 21, 9, 198, 48, 244, 133, 28, 114, 65, 20, 20, 70,
-			24, 20, 141, 4, 50, 65, 83, 35, 14, 16, 65, 35, 76, 6, 37, 12, 35, 0, 9, 198, 16, 240, 146, 84, 114, 65, 66, 0, 7, 196,
-			80, 20, 211, 36, 66, 7, 196, 69, 82, 69, 80, 20, 6, 195, 48, 19, 69, 66, 9, 198, 21, 84, 143, 64, 243, 0, 68, 8, 196, 16,
-			80, 137, 80, 65, 21, 11, 200, 12, 244, 205, 60, 115, 206, 36, 16, 68, 7, 196, 8, 144, 137, 80, 65, 11, 200, 5, 34, 83, 80, 241,
-			129, 56, 80, 67, 6, 195, 4, 227, 193, 20, 0, 9, 198, 24, 16, 195, 36, 19, 79, 76, 6, 195, 88, 85, 18, 21, 8, 197, 52, 243,
-			154, 60, 224, 66, 12, 201, 12, 20, 212, 20, 192, 201, 88, 149, 0, 67, 0, 9, 198, 76, 83, 73, 72, 85, 20, 20, 9, 198, 64, 20,
-			129, 64, 85, 20, 20, 9, 198, 20, 227, 133, 76, 147, 64, 20, 0, 6, 195, 21, 53, 0, 9, 6, 195, 84, 243, 64, 20, 10, 199, 64,
-			20, 129, 25, 32, 83, 36, 66, 10, 199, 52, 85, 1, 12, 83, 148, 72, 20, 6, 195, 21, 53, 0, 21, 6, 195, 16, 145, 84, 20, 0,
-			7, 196, 88, 84, 208, 72, 20, 7, 196, 77, 2, 69, 16, 20, 6, 195, 64, 21, 21, 66, 7, 195, 60, 35, 197, 65, 20, 7, 196, 52,
-			244, 212, 72, 21, 7, 196, 13, 80, 213, 48, 66, 10, 198, 13, 35, 199, 36, 243, 0, 65, 20, 7, 196, 12, 147, 133, 52, 65, 0, 8,
-			197, 72, 148, 207, 73, 48, 21, 8, 197, 72, 144, 207, 73, 48, 21, 6, 195, 8, 83, 66, 20, 0, 6, 194, 4, 192, 72, 9, 6, 194,
-			20, 64, 72, 8, 9, 198, 52, 243, 143, 64, 85, 20, 20, 10, 198, 4, 229, 9, 76, 243, 64, 67, 20, 0, 13, 201, 8, 20, 130, 4,
-			34, 69, 80, 243, 0, 67, 20, 0, 12, 68, 64, 244, 212, 4, 48, 110, 89, 47, 35, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55,
-			72, 36, 0, 7, 196, 88, 147, 143, 88, 20, 7, 196, 64, 83, 1, 28, 65, 7, 196, 16, 83, 5, 28, 65, 7, 196, 9, 33, 86, 20,
-			20, 0, 8, 197, 64, 21, 20, 36, 224, 65, 8, 197, 36, 229, 15, 72, 224, 21, 8, 197, 12, 243, 132, 36, 192, 20, 0, 9, 198, 104,
-			83, 143, 8, 144, 64, 20, 12, 201, 81, 33, 78, 80, 17, 21, 21, 50, 77, 20, 9, 198, 24, 21, 71, 48, 144, 64, 66, 9, 198, 12,
-			20, 143, 56, 144, 64, 67, 9, 198, 5, 64, 83, 76, 144, 64, 67, 9, 198, 5, 34, 84, 52, 144, 64, 67, 9, 198, 5, 32, 197, 88,
-			144, 64, 20, 9, 198, 4, 209, 71, 48, 144, 64, 20, 9, 198, 4, 84, 143, 88, 144, 64, 67, 0, 10, 199, 80, 83, 196, 61, 50, 65,
-			56, 69, 10, 199, 76, 83, 73, 9, 33, 86, 20, 20, 10, 198, 48, 147, 143, 48, 85, 77, 66, 20, 10, 199, 20, 195, 5, 77, 3, 206,
-			80, 20, 10, 199, 12, 20, 15, 48, 21, 143, 72, 21, 0, 7, 196, 80, 83, 5, 24, 65, 7, 196, 49, 83, 65, 12, 66, 7, 196, 12,
-			243, 15, 72, 21, 7, 196, 8, 243, 143, 76, 20, 7, 196, 4, 225, 18, 20, 66, 0, 12, 201, 80, 80, 206, 60, 52, 129, 104, 144, 64,
-			68, 9, 197, 76, 241, 199, 60, 192, 66, 21, 8, 197, 64, 84, 137, 60, 64, 66, 12, 201, 12, 20, 148, 60, 208, 78, 104, 144, 64, 68,
-			0, 9, 198, 61, 37, 9, 28, 144, 64, 66, 5, 194, 21, 64, 20, 10, 198, 12, 244, 141, 60, 228, 192, 66, 20, 9, 198, 8, 20, 143,
-			56, 144, 64, 67, 9, 198, 5, 33, 207, 88, 144, 64, 20, 0, 10, 199, 81, 35, 214, 5, 35, 194, 20, 20, 10, 199, 80, 84, 129, 64,
-			85, 84, 36, 67, 10, 199, 64, 20, 129, 64, 83, 132, 36, 68, 10, 199, 52, 19, 3, 21, 50, 78, 20, 21, 0, 11, 200, 76, 20, 132,
-			4, 224, 80, 4, 192, 67, 14, 68, 49, 80, 201, 4, 55, 40, 76, 6, 37, 12, 35, 0, 7, 196, 36, 115, 143, 80, 20, 7, 196, 24,
-			83, 143, 48, 66, 7, 196, 24, 83, 3, 20, 21, 0, 8, 197, 76, 49, 84, 81, 32, 20, 12, 201, 52, 148, 193, 57, 68, 143, 64, 144,
-			64, 68, 8, 197, 52, 83, 69, 57, 64, 20, 9, 198, 12, 147, 79, 48, 18, 83, 67, 12, 201, 12, 130, 82, 60, 208, 78, 104, 144, 64,
-			68, 12, 201, 4, 226, 83, 61, 68, 143, 64, 144, 64, 69, 0, 9, 198, 69, 80, 68, 73, 84, 12, 65, 9, 198, 65, 35, 212, 21, 69,
-			0, 20, 9, 198, 16, 148, 208, 21, 69, 0, 20, 0, 16, 67, 5, 101, 128, 97, 118, 118, 111, 99, 97, 116, 111, 0, 25, 29, 10, 199,
-			56, 21, 77, 4, 50, 9, 4, 68, 9, 198, 29, 32, 84, 84, 149, 1, 67, 6, 195, 24, 85, 68, 65, 0, 7, 196, 104, 83, 15, 80,
-			20, 7, 196, 88, 147, 133, 4, 65, 7, 196, 81, 34, 79, 16, 65, 11, 200, 81, 32, 80, 21, 163, 197, 17, 32, 20, 7, 196, 80, 147,
-			133, 4, 65, 9, 198, 80, 84, 146, 4, 227, 214, 20, 7, 196, 48, 147, 133, 4, 65, 7, 196, 24, 240, 137, 4, 66, 7, 196, 24, 147,
-			15, 80, 20, 11, 200, 12, 192, 77, 36, 67, 198, 61, 32, 67, 0, 8, 197, 72, 80, 204, 85, 64, 65, 8, 197, 28, 147, 206, 5, 64,
-			65, 8, 197, 13, 33, 77, 21, 32, 65, 0, 6, 194, 12, 144, 76, 9, 9, 198, 5, 52, 201, 20, 209, 64, 20, 0, 0, 7, 196, 5,
-			97, 86, 36, 72, 7, 196, 52, 19, 1, 28, 65, 9, 198, 28, 243, 5, 4, 67, 210, 68, 7, 196, 24, 243, 1, 28, 65, 7, 196, 24,
-			147, 143, 72, 21, 7, 196, 12, 81, 21, 60, 20, 0, 12, 201, 76, 245, 20, 60, 213, 76, 80, 148, 12, 67, 8, 197, 76, 83, 77, 4,
-			144, 66, 8, 197, 76, 51, 199, 48, 144, 20, 8, 197, 52, 85, 15, 16, 144, 20, 8, 197, 48, 21, 82, 36, 16, 67, 8, 197, 24, 84,
-			137, 80, 16, 67, 8, 197, 12, 245, 20, 36, 208, 20, 8, 197, 5, 81, 213, 72, 80, 65, 0, 9, 198, 56, 16, 129, 80, 82, 64, 67,
-			9, 198, 4, 48, 207, 48, 149, 0, 66, 0, 0, 7, 196, 85, 50, 78, 36, 65, 9, 198, 64, 147, 133, 72, 243, 0, 67, 9, 198, 64,
-			20, 129, 8, 243, 0, 66, 7, 196, 12, 243, 15, 56, 66, 11, 200, 12, 243, 12, 20, 224, 200, 36, 208, 20, 6, 195, 5, 101, 137, 66,
-			0, 9, 197, 64, 84, 15, 48, 144, 65, 20, 9, 198, 61, 69, 15, 80, 148, 0, 66, 8, 197, 12, 84, 193, 72, 80, 65, 8, 197, 12,
-			20, 207, 48, 144, 65, 8, 197, 12, 20, 148, 4, 208, 65, 0, 9, 198, 56, 149, 5, 72, 242, 64, 21, 9, 198, 52, 19, 133, 28, 114,
-			64, 67, 0, 6, 195, 64, 145, 84, 20, 9, 198, 52, 19, 137, 12, 243, 73, 20, 9, 198, 12, 243, 15, 76, 147, 73, 66, 0, 7, 196,
-			104, 83, 137, 80, 20, 7, 196, 96, 147, 5, 52, 20, 9, 198, 88, 144, 146, 4, 99, 206, 66, 8, 196, 80, 83, 133, 16, 65, 20, 7,
-			196, 28, 243, 7, 36, 20, 9, 198, 13, 34, 83, 76, 243, 0, 66, 8, 196, 12, 83, 133, 16, 65, 20, 7, 196, 12, 19, 129, 16, 65,
-			11, 200, 4, 192, 137, 28, 224, 83, 20, 112, 67, 0, 9, 198, 64, 84, 134, 84, 112, 83, 65, 19, 70, 29, 32, 84, 84, 149, 15, 81,
-			14, 16, 35, 47, 6, 40, 37, 47, 39, 0, 12, 201, 16, 147, 137, 81, 35, 198, 20, 227, 204, 69, 0, 10, 198, 4, 227, 205, 4, 195,
-			192, 66, 20, 9, 198, 5, 100, 129, 56, 227, 192, 72, 9, 198, 77, 3, 212, 61, 35, 128, 21, 9, 198, 36, 229, 5, 72, 147, 64, 65,
-			13, 201, 29, 80, 82, 16, 144, 82, 20, 114, 65, 67, 20, 13, 202, 12, 19, 15, 49, 162, 79, 12, 244, 148, 20, 21, 0, 6, 195, 48,
-			145, 84, 20, 10, 199, 36, 224, 207, 57, 53, 69, 80, 20, 9, 198, 21, 21, 65, 56, 147, 69, 66, 0, 12, 68, 32, 19, 142, 60, 35,
-			50, 50, 39, 0, 72, 6, 195, 89, 81, 21, 66, 7, 196, 76, 243, 9, 80, 65, 7, 196, 65, 35, 195, 36, 20, 7, 196, 64, 19, 129,
-			52, 65, 7, 196, 16, 147, 129, 52, 65, 7, 196, 16, 19, 129, 20, 65, 0, 0, 9, 198, 52, 243, 148, 72, 80, 76, 21, 9, 198, 12,
-			243, 148, 61, 35, 128, 21, 0, 6, 195, 61, 32, 193, 21, 10, 199, 77, 1, 82, 52, 144, 201, 16, 67, 6, 195, 61, 51, 73, 20, 6,
-			195, 36, 243, 137, 20, 10, 199, 4, 195, 15, 9, 35, 199, 36, 66, 0, 9, 198, 81, 34, 71, 20, 210, 78, 66, 9, 198, 76, 48, 76,
-			36, 113, 82, 66, 9, 198, 65, 33, 67, 4, 209, 82, 66, 6, 195, 56, 80, 128, 20, 6, 195, 24, 80, 128, 20, 0, 7, 196, 16, 83,
-			12, 4, 72, 7, 196, 16, 19, 12, 4, 72, 7, 196, 81, 34, 66, 84, 66, 8, 196, 80, 83, 133, 72, 65, 20, 7, 196, 76, 243, 129,
-			72, 20, 7, 196, 64, 147, 5, 60, 65, 7, 196, 36, 243, 1, 60, 67, 12, 201, 36, 225, 137, 56, 149, 5, 76, 147, 64, 20, 7, 196,
-			29, 33, 86, 20, 20, 7, 196, 16, 147, 129, 72, 65, 8, 196, 5, 97, 82, 20, 66, 21, 0, 13, 202, 64, 20, 148, 20, 227, 199, 20,
-			225, 83, 36, 68, 8, 197, 52, 16, 200, 36, 224, 65, 0, 9, 198, 81, 32, 83, 8, 244, 132, 21, 9, 198, 76, 99, 199, 48, 144, 64,
-			20, 6, 195, 72, 83, 137, 21, 9, 198, 64, 243, 9, 52, 84, 128, 66, 9, 198, 52, 85, 1, 52, 84, 128, 66, 9, 198, 4, 65, 83,
-			52, 144, 64, 67, 0, 6, 195, 73, 80, 64, 66, 10, 199, 12, 20, 144, 36, 225, 84, 36, 21, 0, 7, 196, 88, 148, 201, 72, 66, 12,
-			201, 65, 35, 212, 60, 208, 82, 80, 148, 133, 67, 7, 196, 64, 83, 132, 36, 66, 11, 200, 25, 32, 78, 12, 240, 143, 48, 192, 21, 11,
-			200, 12, 243, 5, 77, 65, 82, 60, 192, 68, 11, 200, 4, 192, 66, 5, 53, 18, 60, 224, 66, 0, 9, 198, 64, 243, 9, 56, 243, 73,
-			20, 8, 197, 64, 192, 84, 4, 224, 65, 8, 197, 64, 84, 137, 64, 192, 65, 9, 197, 8, 245, 133, 28, 224, 65, 20, 0, 9, 198, 80,
-			81, 15, 24, 244, 128, 66, 9, 198, 76, 51, 210, 64, 244, 128, 65, 9, 198, 52, 85, 1, 24, 244, 128, 66, 5, 194, 21, 96, 20, 9,
-			198, 4, 113, 78, 104, 144, 64, 67, 0, 6, 195, 61, 35, 208, 20, 10, 199, 36, 229, 18, 36, 228, 197, 12, 66, 10, 199, 21, 85, 9,
-			25, 35, 206, 20, 67, 10, 199, 16, 83, 9, 4, 229, 79, 88, 20, 10, 199, 5, 32, 207, 8, 19, 5, 56, 21, 0, 7, 196, 5, 97,
-			86, 60, 72, 7, 196, 76, 83, 3, 20, 21, 7, 196, 20, 208, 143, 48, 20, 7, 196, 12, 243, 5, 36, 66, 7, 196, 12, 19, 9, 4,
-			66, 7, 196, 8, 19, 9, 4, 66, 0, 0, 6, 195, 80, 16, 137, 66, 9, 198, 76, 240, 130, 61, 33, 192, 21, 9, 198, 60, 115, 137,
-			80, 83, 80, 20, 9, 198, 52, 19, 132, 61, 35, 0, 65, 13, 202, 12, 243, 148, 20, 212, 15, 72, 19, 133, 60, 68, 9, 198, 12, 20,
-			193, 56, 245, 128, 20, 0, 10, 199, 80, 85, 18, 4, 209, 84, 72, 66, 11, 199, 64, 243, 9, 56, 84, 201, 4, 67, 20, 11, 67, 9,
-			81, 64, 71, 6, 40, 12, 36, 0, 0, 11, 200, 64, 243, 1, 72, 147, 69, 81, 32, 67, 7, 196, 64, 147, 131, 20, 66, 7, 196, 52,
-			85, 15, 16, 20, 8, 196, 48, 19, 132, 60, 66, 20, 7, 196, 17, 33, 83, 16, 20, 11, 200, 13, 80, 143, 81, 64, 69, 17, 32, 20,
-			7, 196, 13, 35, 195, 20, 66, 9, 198, 12, 20, 131, 60, 99, 210, 66, 0, 8, 197, 81, 34, 69, 17, 32, 20, 12, 201, 12, 243, 148,
-			72, 244, 9, 20, 65, 64, 20, 8, 197, 4, 48, 197, 81, 64, 21, 0, 7, 66, 32, 16, 35, 0, 72, 7, 194, 16, 144, 72, 9, 28,
-			13, 202, 81, 32, 71, 36, 51, 205, 52, 81, 9, 4, 20, 5, 194, 20, 112, 20, 9, 198, 5, 3, 195, 72, 145, 128, 66, 0, 6, 195,
-			25, 82, 64, 72, 10, 199, 96, 83, 143, 24, 240, 137, 4, 68, 10, 199, 4, 229, 9, 4, 84, 133, 4, 67, 0, 7, 196, 16, 19, 12,
-			20, 72, 7, 196, 61, 98, 76, 20, 66, 9, 198, 12, 243, 80, 48, 85, 0, 20, 7, 196, 12, 19, 1, 60, 66, 0, 9, 197, 81, 35,
-			193, 16, 80, 65, 20, 8, 197, 77, 65, 82, 20, 240, 65, 8, 197, 64, 83, 70, 36, 112, 20, 8, 197, 56, 243, 131, 32, 80, 66, 6,
-			195, 24, 85, 0, 20, 9, 197, 21, 3, 195, 32, 80, 67, 20, 8, 197, 12, 19, 66, 72, 144, 66, 8, 197, 12, 19, 4, 20, 144, 66,
-			6, 195, 4, 245, 0, 20, 18, 70, 4, 195, 5, 49, 82, 65, 35, 55, 55, 109, 55, 6, 40, 37, 35, 0, 9, 197, 4, 193, 83, 36,
-			16, 66, 20, 0, 6, 195, 56, 85, 77, 65, 6, 195, 29, 35, 205, 21, 11, 67, 9, 82, 65, 71, 6, 40, 37, 35, 0, 0, 10, 199,
-			61, 37, 15, 81, 65, 82, 36, 20, 10, 199, 8, 148, 197, 77, 66, 76, 20, 67, 10, 199, 5, 85, 15, 24, 240, 213, 76, 20, 0, 7,
-			196, 81, 34, 79, 72, 21, 7, 196, 77, 67, 194, 36, 20, 11, 200, 76, 147, 85, 49, 64, 78, 20, 240, 67, 11, 200, 16, 144, 201, 4,
-			227, 143, 88, 80, 20, 7, 196, 12, 243, 132, 20, 66, 11, 200, 12, 19, 80, 36, 67, 199, 48, 144, 20, 12, 200, 8, 244, 135, 61, 49,
-			83, 36, 16, 67, 20, 7, 196, 4, 229, 9, 12, 66, 0, 8, 197, 104, 244, 16, 36, 16, 66, 8, 197, 76, 144, 129, 72, 144, 65, 8,
-			197, 76, 51, 210, 12, 144, 21, 10, 198, 64, 19, 132, 61, 50, 65, 66, 20, 8, 197, 52, 244, 137, 56, 144, 65, 8, 197, 24, 243, 12,
-			36, 16, 66, 8, 197, 12, 244, 16, 36, 16, 20, 8, 197, 8, 20, 137, 48, 80, 66, 10, 198, 4, 208, 146, 61, 50, 65, 66, 20, 0,
-			6, 195, 72, 83, 133, 20, 5, 194, 25, 80, 72, 9, 198, 104, 17, 193, 72, 243, 0, 67, 7, 195, 80, 19, 133, 66, 20, 9, 198, 61,
-			52, 197, 69, 82, 64, 20, 9, 198, 60, 211, 137, 80, 83, 0, 67, 9, 198, 21, 49, 71, 21, 50, 64, 20, 9, 198, 12, 147, 206, 16,
-			243, 0, 21, 9, 198, 4, 210, 76, 61, 50, 64, 20, 9, 198, 4, 208, 146, 61, 50, 64, 20, 0, 10, 199, 88, 84, 154, 20, 115, 137,
-			76, 20, 6, 195, 88, 83, 128, 21, 10, 199, 77, 3, 206, 80, 19, 133, 60, 66, 6, 195, 13, 35, 196, 20, 0, 6, 195, 104, 83, 135,
-			20, 7, 196, 80, 19, 1, 52, 65, 7, 196, 76, 83, 3, 36, 21, 7, 196, 76, 19, 1, 52, 66, 9, 198, 65, 35, 208, 61, 53, 0,
-			21, 23, 72, 52, 20, 195, 4, 197, 67, 36, 16, 65, 35, 89, 49, 35, 55, 40, 76, 6, 37, 12, 35, 0, 7, 196, 28, 243, 5, 52,
-			20, 11, 200, 25, 83, 210, 36, 193, 71, 28, 80, 21, 11, 200, 21, 32, 84, 61, 53, 5, 56, 80, 67, 12, 201, 16, 17, 200, 21, 36,
-			143, 80, 148, 0, 67, 9, 198, 12, 243, 80, 61, 53, 0, 21, 9, 198, 12, 243, 80, 61, 53, 0, 21, 11, 200, 12, 21, 1, 77, 68,
-			143, 24, 80, 66, 7, 196, 12, 19, 129, 48, 66, 11, 67, 9, 82, 79, 71, 6, 40, 37, 39, 0, 0, 9, 198, 64, 243, 5, 76, 147,
-			133, 21, 6, 195, 64, 21, 82, 66, 12, 201, 52, 85, 1, 52, 244, 134, 61, 50, 64, 67, 9, 198, 37, 4, 15, 52, 83, 133, 66, 0,
-			9, 198, 80, 84, 129, 64, 85, 84, 67, 6, 195, 36, 243, 133, 20, 18, 70, 25, 37, 83, 12, 147, 192, 83, 14, 16, 40, 91, 6, 37,
-			12, 39, 0, 0, 10, 199, 80, 20, 211, 4, 209, 84, 72, 66, 6, 195, 72, 83, 128, 21, 10, 199, 64, 20, 133, 56, 50, 9, 52, 20,
-			14, 203, 61, 98, 68, 21, 3, 211, 37, 162, 79, 56, 80, 20, 6, 195, 52, 243, 128, 20, 10, 199, 4, 229, 9, 13, 33, 83, 36, 20,
-			0, 7, 196, 28, 244, 135, 4, 21, 7, 196, 24, 243, 133, 52, 20, 7, 196, 16, 81, 9, 80, 65, 7, 196, 12, 19, 143, 4, 20, 0,
-			13, 201, 52, 144, 210, 61, 52, 15, 73, 83, 64, 66, 20, 9, 198, 4, 229, 9, 28, 243, 133, 66, 9, 198, 4, 229, 9, 21, 35, 197,
-			20, 0, 9, 198, 37, 51, 195, 72, 243, 128, 66, 9, 198, 28, 20, 143, 24, 19, 128, 66, 5, 194, 20, 128, 21, 7, 195, 16, 20, 133,
-			66, 20, 6, 195, 8, 84, 133, 21, 9, 198, 5, 53, 18, 4, 112, 76, 66, 0, 6, 195, 88, 84, 128, 21, 6, 195, 88, 84, 128, 21,
-			6, 195, 61, 36, 192, 21, 6, 195, 61, 36, 192, 21, 6, 195, 56, 84, 128, 21, 0, 7, 196, 80, 19, 129, 72, 65, 8, 196, 76, 243,
-			5, 60, 65, 20, 7, 196, 57, 83, 69, 72, 65, 9, 198, 48, 147, 73, 81, 35, 198, 66, 7, 196, 20, 195, 5, 72, 21, 7, 196, 12,
-			243, 133, 72, 65, 7, 196, 4, 229, 9, 24, 65, 0, 8, 197, 80, 244, 142, 60, 192, 21, 12, 201, 76, 19, 22, 4, 67, 210, 20, 115,
-			128, 20, 8, 197, 64, 17, 18, 60, 224, 66, 8, 197, 56, 17, 148, 60, 192, 66, 8, 197, 52, 22, 154, 60, 192, 66, 0, 6, 195, 104,
-			85, 137, 20, 6, 195, 64, 20, 133, 66, 9, 198, 28, 194, 67, 21, 35, 204, 67, 9, 198, 20, 97, 137, 52, 84, 128, 66, 9, 198, 16,
-			244, 137, 24, 244, 128, 66, 0, 10, 199, 76, 245, 133, 73, 161, 78, 20, 66, 11, 199, 64, 193, 88, 36, 115, 1, 76, 65, 20, 0, 6,
-			195, 88, 84, 135, 21, 7, 196, 88, 83, 5, 56, 21, 7, 196, 64, 19, 5, 56, 21, 7, 196, 8, 19, 5, 56, 21, 11, 200, 4, 52,
-			85, 4, 100, 133, 16, 64, 21, 0, 9, 198, 61, 69, 15, 8, 243, 137, 20, 9, 197, 20, 227, 149, 64, 192, 65, 20, 0, 9, 198, 36,
-			225, 197, 57, 80, 64, 20, 9, 198, 16, 82, 79, 80, 20, 128, 66, 9, 198, 5, 4, 9, 60, 208, 128, 21, 0, 10, 199, 16, 241, 5,
-			12, 19, 133, 76, 20, 10, 199, 4, 65, 77, 64, 145, 82, 20, 66, 0, 7, 196, 72, 148, 5, 36, 66, 9, 198, 28, 20, 196, 61, 69,
-			0, 21, 7, 196, 20, 36, 133, 36, 66, 11, 200, 12, 83, 133, 72, 83, 148, 60, 192, 20, 7, 196, 12, 19, 129, 64, 65, 7, 196, 12,
-			19, 129, 64, 65, 7, 196, 5, 52, 193, 36, 66, 11, 200, 5, 34, 83, 80, 244, 211, 20, 224, 67, 0, 8, 197, 48, 145, 86, 37, 64,
-			66, 8, 197, 16, 149, 137, 21, 64, 20, 6, 195, 13, 35, 214, 20, 8, 197, 4, 112, 68, 21, 160, 67, 0, 9, 198, 88, 145, 207, 56,
-			245, 128, 20, 6, 195, 80, 20, 137, 66, 6, 195, 64, 21, 133, 66, 6, 195, 52, 244, 137, 21, 18, 70, 4, 208, 133, 17, 81, 64, 35,
-			65, 71, 36, 72, 6, 40, 12, 36, 0, 0, 6, 195, 84, 245, 128, 20, 9, 198, 52, 20, 211, 5, 35, 211, 20, 0, 7, 196, 76, 20,
-			133, 36, 72, 6, 195, 13, 35, 211, 20, 7, 196, 12, 244, 133, 4, 65, 11, 200, 12, 19, 15, 72, 147, 69, 81, 32, 67, 7, 196, 8,
-			244, 133, 4, 65, 0, 9, 198, 76, 147, 129, 48, 81, 133, 20, 8, 197, 61, 37, 137, 21, 64, 20, 6, 195, 52, 246, 154, 21, 9, 197,
-			16, 243, 12, 5, 32, 65, 20, 8, 197, 5, 52, 197, 81, 64, 20, 8, 197, 5, 52, 5, 81, 64, 20, 8, 197, 4, 97, 133, 81, 64,
-			20, 0, 6, 66, 20, 144, 118, 0, 6, 195, 80, 16, 149, 66, 5, 194, 28, 80, 20, 18, 70, 12, 147, 65, 9, 81, 64, 76, 37, 65,
-			35, 71, 6, 40, 12, 36, 0, 9, 198, 8, 19, 131, 60, 227, 212, 20, 9, 198, 5, 161, 79, 81, 35, 208, 67, 0, 9, 198, 76, 147,
-			134, 61, 35, 211, 20, 10, 199, 20, 210, 67, 72, 19, 137, 4, 68, 12, 201, 20, 193, 84, 81, 35, 196, 61, 69, 0, 21, 6, 195, 8,
-			243, 0, 20, 0, 7, 196, 16, 83, 12, 20, 72, 8, 196, 20, 51, 15, 28, 65, 20, 7, 196, 9, 35, 204, 48, 21, 0, 8, 197, 88,
-			148, 137, 48, 80, 66, 8, 197, 85, 67, 208, 36, 16, 67, 8, 197, 84, 33, 82, 80, 16, 67, 8, 197, 64, 243, 12, 36, 48, 20, 8,
-			197, 52, 243, 12, 36, 48, 66, 6, 195, 28, 85, 0, 20, 8, 197, 21, 66, 79, 64, 80, 66, 8, 197, 17, 34, 79, 64, 80, 65, 8,
-			197, 5, 34, 69, 80, 80, 20, 0, 9, 198, 52, 20, 141, 37, 35, 204, 67, 9, 198, 36, 229, 5, 73, 3, 204, 67, 9, 198, 12, 20,
-			148, 61, 50, 64, 20, 9, 198, 4, 195, 15, 16, 243, 0, 66, 0, 10, 199, 4, 193, 5, 8, 20, 129, 56, 68, 0, 7, 196, 88, 84,
-			132, 20, 21, 11, 200, 88, 83, 15, 12, 148, 5, 16, 80, 67, 7, 196, 65, 34, 79, 72, 21, 9, 198, 5, 50, 78, 13, 35, 206, 66,
-			0, 6, 195, 104, 80, 146, 20, 12, 201, 88, 83, 148, 72, 147, 15, 69, 82, 64, 20, 8, 197, 72, 144, 143, 76, 144, 20, 8, 197, 64,
-			243, 80, 20, 144, 66, 8, 197, 60, 209, 76, 36, 16, 67, 8, 197, 24, 81, 5, 48, 80, 21, 8, 197, 12, 147, 137, 76, 144, 65, 8,
-			197, 5, 84, 207, 56, 144, 20, 9, 198, 4, 229, 9, 12, 148, 0, 66, 8, 197, 4, 209, 76, 36, 16, 67, 0, 9, 198, 76, 147, 80,
-			61, 50, 64, 20, 9, 198, 52, 19, 142, 61, 50, 64, 20, 9, 198, 12, 243, 131, 21, 50, 64, 20, 0, 10, 199, 48, 149, 15, 72, 19,
-			133, 60, 67, 15, 203, 12, 243, 80, 85, 64, 90, 36, 243, 129, 48, 80, 69, 21, 0, 7, 196, 16, 19, 12, 60, 72, 8, 196, 88, 83,
-			133, 80, 65, 20, 11, 200, 65, 32, 83, 76, 149, 5, 48, 80, 66, 11, 200, 64, 244, 212, 21, 34, 79, 72, 144, 21, 7, 196, 56, 85,
-			84, 72, 65, 11, 200, 52, 147, 12, 20, 98, 79, 72, 144, 21, 11, 200, 8, 192, 84, 80, 242, 68, 20, 144, 68, 11, 200, 5, 53, 5,
-			72, 242, 68, 20, 144, 69, 12, 201, 4, 225, 204, 61, 48, 83, 76, 243, 137, 67, 0, 9, 198, 80, 148, 201, 24, 243, 133, 66, 9, 198,
-			64, 244, 193, 52, 147, 133, 67, 8, 197, 28, 243, 129, 73, 48, 66, 0, 9, 198, 4, 48, 197, 81, 67, 192, 20, 9, 198, 20, 48, 197,
-			81, 67, 192, 8, 9, 198, 81, 34, 83, 76, 147, 128, 65, 9, 198, 64, 148, 143, 88, 19, 128, 66, 9, 198, 64, 84, 147, 36, 19, 128,
-			67, 9, 198, 52, 81, 193, 24, 243, 128, 66, 13, 202, 12, 243, 148, 72, 244, 207, 28, 113, 84, 80, 20, 9, 198, 4, 197, 1, 48, 83,
-			128, 21, 0, 10, 199, 4, 224, 76, 24, 16, 133, 80, 20, 0, 7, 196, 24, 244, 131, 4, 21, 7, 196, 88, 148, 201, 80, 65, 7, 196,
-			76, 244, 131, 36, 21, 8, 196, 72, 243, 132, 60, 66, 20, 9, 198, 21, 2, 67, 20, 229, 18, 20, 12, 201, 4, 225, 204, 61, 48, 83,
-			76, 243, 133, 67, 7, 196, 4, 211, 5, 80, 20, 0, 8, 197, 32, 83, 12, 5, 48, 66, 0, 9, 198, 24, 244, 211, 21, 35, 192, 72,
-			0, 6, 195, 76, 51, 204, 21, 0, 7, 196, 76, 84, 133, 56, 21, 0, 9, 198, 20, 97, 137, 12, 16, 197, 67, 0, 6, 195, 60, 195,
-			73, 20, 10, 198, 24, 193, 71, 36, 20, 192, 65, 20, 9, 198, 21, 21, 73, 88, 240, 192, 66, 0, 6, 195, 64, 19, 204, 65, 6, 195,
-			60, 192, 64, 66, 10, 199, 12, 19, 12, 36, 116, 129, 24, 66, 0, 13, 68, 4, 84, 133, 60, 35, 6, 109, 51, 36, 39, 0, 6, 195,
-			104, 80, 195, 21, 7, 196, 80, 84, 133, 76, 20, 7, 196, 76, 20, 129, 28, 65, 6, 195, 72, 80, 195, 21, 11, 200, 65, 33, 71, 4,
-			230, 137, 60, 192, 68, 7, 196, 52, 244, 133, 76, 20, 9, 198, 16, 84, 196, 20, 211, 206, 20, 7, 196, 16, 84, 143, 28, 65, 6, 195,
-			8, 80, 195, 21, 0, 8, 197, 80, 147, 137, 4, 224, 66, 12, 201, 24, 20, 141, 4, 49, 85, 80, 144, 192, 67, 8, 197, 8, 83, 148,
-			60, 224, 20, 0, 9, 198, 65, 35, 211, 20, 194, 84, 66, 9, 198, 65, 35, 211, 20, 48, 192, 21, 9, 198, 65, 35, 208, 61, 50, 84,
-			66, 9, 198, 12, 243, 80, 61, 50, 84, 66, 9, 198, 5, 69, 9, 52, 148, 192, 65, 0, 6, 195, 76, 51, 212, 20, 10, 199, 64, 244,
-			148, 4, 192, 133, 72, 66, 6, 195, 60, 65, 64, 20, 10, 199, 28, 245, 20, 5, 49, 67, 12, 21, 10, 199, 4, 229, 9, 4, 84, 133,
-			60, 67, 0, 7, 196, 61, 52, 201, 4, 66, 9, 198, 12, 16, 193, 76, 83, 142, 21, 0, 6, 195, 88, 84, 154, 21, 8, 197, 12, 84,
-			130, 21, 32, 65, 0, 0, 6, 195, 60, 193, 64, 66, 10, 199, 52, 243, 129, 72, 50, 9, 4, 67, 6, 195, 8, 81, 192, 20, 0, 7,
-			196, 76, 20, 129, 36, 72, 11, 200, 65, 33, 83, 85, 4, 15, 77, 64, 21, 7, 196, 64, 20, 137, 4, 66, 8, 196, 56, 20, 132, 60,
-			66, 20, 8, 196, 24, 245, 133, 4, 65, 20, 7, 196, 13, 33, 83, 80, 21, 7, 196, 12, 21, 133, 4, 65, 9, 198, 12, 20, 142, 37,
-			99, 210, 66, 7, 196, 5, 34, 83, 80, 65, 0, 9, 198, 73, 80, 197, 48, 192, 73, 67, 6, 195, 28, 193, 66, 20, 8, 197, 12, 20,
-			144, 5, 32, 65, 0, 9, 198, 76, 20, 133, 8, 33, 64, 72, 10, 198, 64, 192, 67, 12, 129, 64, 66, 20, 9, 198, 52, 148, 137, 4,
-			65, 64, 66, 6, 195, 9, 80, 149, 66, 0, 7, 195, 12, 243, 0, 72, 9, 10, 3, 226, 130, 164, 55, 37, 34, 35, 0, 10, 199, 77,
-			65, 82, 20, 245, 9, 64, 67, 9, 198, 72, 83, 9, 28, 147, 211, 21, 6, 195, 60, 66, 64, 20, 6, 195, 12, 194, 64, 65, 0, 7,
-			196, 28, 83, 133, 72, 65, 7, 196, 88, 20, 133, 56, 21, 7, 196, 61, 52, 197, 60, 65, 9, 198, 28, 144, 82, 4, 37, 66, 67, 0,
-			8, 197, 88, 241, 204, 36, 16, 20, 8, 197, 88, 83, 133, 72, 80, 20, 12, 201, 52, 243, 148, 21, 49, 71, 4, 193, 64, 67, 8, 197,
-			36, 212, 9, 20, 112, 20, 8, 197, 24, 241, 204, 36, 16, 20, 8, 197, 16, 144, 76, 60, 112, 66, 6, 195, 12, 245, 0, 20, 6, 195,
-			12, 245, 0, 20, 0, 9, 198, 60, 113, 197, 8, 34, 64, 20, 11, 67, 28, 194, 65, 61, 6, 37, 12, 35, 0, 10, 198, 20, 224, 197,
-			24, 19, 0, 66, 20, 9, 198, 12, 240, 195, 36, 66, 64, 20, 0, 10, 67, 28, 194, 64, 61, 37, 0, 9, 72, 10, 199, 76, 50, 9,
-			5, 98, 84, 84, 67, 6, 195, 52, 242, 192, 20, 0, 7, 196, 28, 83, 133, 76, 65, 7, 196, 64, 84, 133, 28, 65, 9, 198, 64, 83,
-			148, 4, 115, 206, 66, 11, 200, 48, 18, 71, 84, 81, 204, 36, 16, 20, 0, 8, 197, 61, 52, 9, 80, 80, 20, 12, 201, 61, 33, 129,
-			56, 245, 18, 60, 98, 64, 20, 8, 197, 52, 241, 204, 36, 16, 20, 8, 197, 52, 18, 79, 72, 144, 21, 8, 197, 13, 33, 77, 36, 16,
-			65, 9, 197, 8, 84, 212, 36, 16, 65, 21, 8, 197, 5, 33, 193, 48, 144, 67, 8, 197, 5, 32, 77, 20, 144, 67, 0, 9, 198, 85,
-			48, 133, 12, 130, 64, 20, 9, 198, 52, 20, 195, 4, 194, 64, 65, 0, 10, 199, 76, 147, 66, 36, 243, 148, 20, 21, 0, 7, 196, 16,
-			83, 12, 60, 72, 11, 200, 52, 244, 19, 84, 84, 212, 36, 16, 66, 7, 196, 52, 84, 137, 80, 65, 11, 200, 52, 19, 1, 88, 241, 204,
-			36, 16, 20, 7, 196, 12, 244, 133, 16, 65, 6, 195, 12, 193, 83, 20, 7, 196, 12, 19, 143, 64, 20, 0, 9, 198, 4, 229, 9, 88,
-			20, 137, 66, 0, 9, 198, 4, 32, 137, 4, 211, 192, 76, 9, 198, 4, 32, 137, 4, 211, 192, 72, 10, 198, 80, 83, 5, 24, 243, 128,
-			66, 20, 9, 198, 72, 19, 65, 16, 19, 128, 67, 9, 198, 25, 32, 83, 76, 147, 128, 65, 0, 10, 199, 72, 85, 18, 60, 116, 129, 16,
-			66, 10, 199, 29, 32, 86, 36, 209, 84, 72, 66, 6, 195, 12, 193, 84, 20, 0, 7, 196, 24, 19, 142, 60, 76, 7, 196, 64, 148, 129,
-			52, 65, 0, 12, 201, 76, 245, 20, 21, 36, 129, 56, 83, 192, 67, 9, 198, 4, 50, 5, 52, 83, 133, 66, 0, 15, 3, 95, 50, 49,
-			84, 6, 36, 50, 47, 6, 40, 50, 39, 0, 10, 198, 60, 197, 18, 20, 211, 196, 67, 20, 7, 195, 52, 244, 197, 66, 20, 9, 198, 20,
-			212, 9, 72, 83, 192, 66, 5, 194, 20, 192, 21, 0, 6, 195, 24, 84, 192, 20, 0, 7, 196, 76, 52, 143, 24, 20, 0, 8, 197, 65,
-			35, 198, 36, 192, 66, 8, 197, 64, 144, 68, 20, 224, 66, 8, 197, 16, 243, 6, 36, 224, 66, 0, 9, 198, 104, 20, 133, 88, 144, 192,
-			20, 9, 198, 72, 85, 18, 60, 98, 84, 65, 9, 198, 20, 229, 5, 72, 144, 192, 21, 9, 198, 20, 193, 71, 36, 16, 192, 67, 0, 6,
-			195, 72, 84, 192, 21, 0, 8, 196, 76, 86, 154, 20, 66, 20, 7, 196, 12, 244, 134, 84, 66, 8, 196, 12, 20, 142, 20, 66, 20, 7,
-			196, 8, 243, 148, 4, 66, 0, 8, 197, 76, 84, 150, 4, 192, 66, 9, 197, 24, 195, 210, 36, 224, 65, 21, 0, 15, 4, 95, 13, 3,
-			14, 65, 6, 35, 49, 14, 16, 39, 50, 0, 0, 6, 195, 100, 241, 192, 20, 10, 199, 12, 20, 9, 80, 19, 133, 60, 67, 6, 195, 8,
-			83, 212, 20, 0, 7, 196, 12, 21, 1, 36, 66, 7, 195, 9, 84, 143, 66, 20, 7, 196, 4, 148, 143, 48, 66, 0, 8, 197, 100, 241,
-			213, 73, 64, 20, 8, 197, 76, 145, 206, 61, 32, 21, 12, 201, 76, 80, 207, 56, 67, 199, 20, 226, 84, 68, 9, 198, 12, 20, 148, 60,
-			48, 201, 20, 0, 9, 198, 80, 244, 130, 60, 193, 64, 21, 9, 198, 76, 147, 129, 28, 241, 192, 20, 9, 198, 56, 21, 70, 72, 17, 192,
-			65, 9, 198, 16, 147, 205, 20, 65, 64, 20, 0, 10, 199, 72, 19, 143, 12, 50, 9, 4, 20, 10, 199, 69, 80, 82, 80, 148, 143, 48,
-			67, 10, 199, 52, 86, 154, 4, 68, 137, 4, 67, 10, 199, 4, 209, 84, 72, 244, 9, 4, 68, 0, 9, 198, 77, 65, 83, 36, 51, 210,
-			66, 9, 198, 64, 84, 134, 21, 69, 0, 20, 7, 196, 52, 244, 137, 4, 66, 9, 198, 36, 229, 5, 72, 147, 210, 21, 7, 196, 8, 245,
-			15, 48, 65, 7, 196, 8, 148, 15, 48, 66, 0, 15, 69, 80, 84, 211, 21, 32, 47, 36, 89, 89, 6, 109, 51, 0, 8, 197, 80, 84,
-			211, 21, 32, 65, 8, 197, 76, 84, 211, 21, 32, 20, 8, 197, 28, 147, 204, 37, 64, 65, 9, 198, 24, 19, 148, 60, 48, 201, 20, 6,
-			195, 16, 241, 0, 20, 8, 197, 16, 80, 210, 21, 64, 20, 0, 9, 198, 92, 147, 1, 56, 245, 192, 67, 9, 198, 80, 84, 146, 20, 211,
-			212, 20, 9, 198, 77, 68, 143, 48, 17, 192, 65, 10, 198, 76, 83, 133, 28, 129, 64, 65, 20, 9, 198, 64, 244, 131, 36, 193, 64, 66,
-			9, 198, 64, 83, 147, 36, 193, 64, 20, 9, 198, 61, 37, 15, 56, 245, 128, 20, 9, 198, 52, 83, 147, 36, 193, 64, 66, 10, 198, 52,
-			83, 78, 60, 225, 64, 65, 20, 5, 194, 20, 208, 20, 13, 202, 12, 149, 137, 80, 21, 133, 12, 50, 9, 4, 20, 0, 10, 199, 69, 80,
-			68, 72, 148, 15, 48, 67, 10, 199, 64, 244, 148, 61, 35, 211, 20, 20, 10, 199, 64, 20, 211, 5, 65, 77, 64, 20, 6, 195, 16, 243,
-			0, 20, 8, 197, 13, 34, 83, 61, 0, 20, 0, 11, 200, 81, 85, 20, 61, 52, 15, 73, 64, 67, 7, 196, 64, 245, 133, 72, 65, 7,
-			196, 21, 35, 201, 56, 67, 7, 196, 12, 19, 143, 88, 65, 0, 6, 195, 72, 81, 206, 21, 8, 197, 64, 243, 73, 12, 80, 21, 8, 197,
-			60, 225, 83, 80, 16, 67, 8, 197, 48, 145, 213, 72, 80, 65, 9, 197, 16, 161, 77, 8, 80, 66, 20, 9, 198, 12, 243, 148, 20, 212,
-			0, 20, 8, 197, 12, 83, 9, 8, 80, 65, 9, 198, 12, 20, 21, 48, 85, 9, 21, 8, 197, 4, 224, 76, 60, 112, 66, 0, 9, 198,
-			77, 81, 15, 88, 84, 212, 20, 9, 198, 8, 83, 133, 88, 243, 0, 20, 9, 198, 5, 165, 5, 12, 130, 64, 20, 0, 10, 199, 80, 21,
-			82, 36, 19, 143, 88, 20, 12, 201, 64, 192, 78, 80, 17, 197, 56, 85, 0, 20, 10, 199, 61, 38, 137, 57, 83, 214, 36, 20, 10, 199,
-			13, 34, 83, 80, 241, 143, 72, 66, 0, 7, 196, 85, 52, 193, 56, 65, 7, 196, 72, 245, 15, 72, 20, 9, 198, 72, 16, 129, 72, 32,
-			82, 66, 11, 200, 64, 145, 86, 21, 1, 76, 4, 112, 67, 7, 196, 64, 20, 5, 72, 65, 11, 200, 52, 149, 15, 12, 243, 132, 72, 144,
-			20, 6, 195, 16, 246, 0, 20, 9, 198, 16, 147, 199, 56, 85, 0, 20, 0, 8, 197, 88, 243, 20, 72, 144, 21, 12, 201, 64, 144, 195,
-			60, 195, 205, 36, 226, 64, 67, 8, 197, 20, 227, 210, 52, 80, 21, 8, 197, 20, 36, 137, 16, 144, 20, 8, 197, 16, 241, 193, 48, 144,
-			65, 8, 197, 12, 19, 210, 48, 80, 65, 8, 197, 5, 3, 212, 20, 208, 20, 8, 197, 4, 229, 5, 52, 144, 20, 0, 9, 198, 72, 150,
-			154, 60, 194, 64, 66, 0, 10, 199, 60, 226, 67, 60, 99, 210, 36, 67, 19, 70, 24, 244, 148, 84, 149, 15, 83, 110, 14, 16, 47, 6,
-			40, 37, 47, 39, 0, 0, 12, 200, 77, 68, 129, 64, 245, 5, 72, 80, 67, 21, 0, 9, 198, 36, 68, 143, 48, 148, 201, 66, 6, 195,
-			21, 133, 18, 20, 0, 6, 195, 40, 84, 201, 20, 9, 198, 13, 85, 1, 56, 83, 192, 66, 9, 198, 9, 35, 206, 104, 83, 192, 65, 0,
-			0, 9, 198, 72, 149, 133, 72, 33, 82, 66, 7, 196, 61, 52, 197, 80, 20, 7, 196, 52, 245, 5, 48, 66, 7, 196, 36, 212, 5, 80,
-			65, 7, 196, 29, 35, 211, 36, 20, 11, 200, 12, 144, 204, 60, 52, 143, 77, 48, 67, 7, 196, 12, 84, 129, 52, 65, 8, 196, 8, 244,
-			132, 60, 66, 20, 7, 196, 8, 85, 5, 48, 20, 7, 196, 5, 35, 211, 36, 20, 9, 198, 4, 197, 9, 52, 85, 18, 66, 0, 0, 6,
-			195, 72, 241, 9, 20, 9, 198, 5, 32, 143, 72, 83, 192, 66, 0, 14, 3, 95, 51, 88, 47, 14, 16, 6, 36, 50, 47, 35, 0, 6,
-			195, 61, 48, 192, 20, 0, 12, 3, 95, 48, 67, 76, 6, 36, 50, 47, 39, 0, 7, 196, 72, 148, 15, 76, 20, 7, 196, 64, 84, 133,
-			104, 21, 7, 196, 56, 245, 5, 76, 20, 7, 196, 8, 21, 129, 72, 65, 12, 201, 5, 3, 195, 5, 64, 83, 80, 20, 201, 68, 13, 201,
-			4, 211, 137, 60, 49, 78, 80, 84, 201, 68, 20, 0, 8, 197, 64, 192, 67, 20, 32, 20, 8, 197, 52, 243, 15, 12, 128, 20, 8, 197,
-			52, 22, 154, 36, 224, 66, 8, 197, 8, 243, 132, 20, 224, 21, 0, 17, 70, 12, 83, 19, 37, 84, 192, 123, 109, 55, 89, 57, 6, 40,
-			89, 0, 9, 198, 76, 244, 18, 4, 34, 84, 66, 9, 198, 24, 84, 143, 12, 144, 64, 20, 9, 198, 12, 147, 133, 80, 80, 192, 20, 9,
-			198, 5, 85, 15, 9, 84, 192, 65, 0, 0, 6, 195, 88, 241, 11, 20, 9, 198, 81, 34, 85, 53, 98, 82, 66, 7, 196, 64, 244, 143,
-			76, 21, 11, 200, 52, 86, 154, 60, 114, 79, 72, 224, 21, 7, 196, 52, 18, 15, 56, 66, 0, 17, 4, 95, 48, 90, 51, 65, 37, 55,
-			55, 6, 36, 88, 37, 65, 37, 0, 12, 201, 72, 16, 132, 60, 208, 78, 104, 144, 64, 68, 8, 197, 21, 64, 78, 60, 192, 67, 0, 17,
-			4, 95, 48, 90, 50, 76, 36, 50, 47, 6, 36, 88, 37, 65, 37, 0, 6, 195, 76, 81, 5, 20, 9, 198, 72, 19, 80, 60, 195, 0,
-			21, 0, 6, 195, 73, 83, 212, 20, 0, 9, 198, 88, 145, 9, 29, 32, 70, 66, 15, 204, 72, 243, 66, 36, 53, 66, 61, 69, 1, 20,
-			68, 128, 20, 7, 196, 52, 244, 143, 48, 66, 14, 68, 12, 243, 21, 36, 49, 39, 55, 6, 40, 12, 37, 0, 7, 196, 12, 83, 148, 72,
-			20, 7, 196, 8, 20, 143, 48, 66, 0, 6, 195, 88, 243, 22, 20, 6, 195, 76, 83, 22, 21, 8, 197, 48, 19, 135, 85, 32, 66, 9,
-			197, 24, 244, 198, 61, 32, 65, 20, 9, 197, 24, 244, 134, 61, 32, 65, 21, 8, 197, 12, 243, 132, 61, 32, 20, 0, 9, 198, 64, 19,
-			12, 5, 33, 64, 65, 9, 198, 52, 243, 132, 60, 193, 128, 20, 9, 198, 48, 19, 132, 60, 193, 128, 20, 9, 198, 24, 243, 7, 61, 33,
-			64, 65, 9, 198, 5, 85, 15, 29, 37, 64, 68, 9, 198, 4, 229, 9, 61, 1, 64, 66, 9, 198, 4, 195, 5, 28, 129, 64, 65, 0,
-			6, 195, 89, 83, 212, 20, 6, 195, 65, 33, 68, 20, 10, 199, 64, 81, 15, 24, 147, 9, 4, 68, 6, 195, 57, 83, 212, 20, 10, 199,
-			44, 19, 80, 84, 50, 5, 4, 21, 0, 7, 196, 65, 33, 90, 104, 20, 6, 195, 65, 33, 71, 20, 7, 196, 61, 33, 201, 4, 65, 0,
-			10, 198, 65, 33, 83, 8, 149, 5, 65, 20, 12, 201, 64, 244, 148, 61, 97, 78, 21, 33, 64, 20, 6, 195, 57, 83, 214, 20, 9, 198,
-			36, 225, 137, 56, 149, 1, 68, 8, 197, 28, 130, 79, 81, 64, 21, 8, 197, 12, 244, 211, 61, 96, 65, 0, 6, 194, 48, 16, 72, 9,
-			16, 3, 95, 49, 57, 72, 37, 76, 35, 50, 50, 6, 39, 84, 36, 0, 9, 198, 84, 224, 78, 36, 209, 64, 66, 13, 202, 77, 3, 5,
-			56, 243, 69, 28, 19, 9, 4, 69, 6, 195, 52, 18, 5, 66, 9, 198, 5, 3, 195, 61, 1, 64, 66, 0, 14, 3, 95, 49, 56, 72,
-			37, 76, 6, 110, 47, 12, 39, 0, 6, 195, 88, 243, 12, 21, 6, 195, 88, 84, 208, 20, 10, 199, 72, 240, 149, 77, 65, 90, 104, 20,
-			6, 195, 52, 244, 212, 21, 10, 199, 52, 148, 207, 28, 147, 137, 4, 68, 0, 7, 196, 28, 146, 143, 56, 66, 7, 196, 12, 147, 137, 72,
-			65, 7, 196, 4, 197, 133, 60, 65, 0, 8, 197, 76, 243, 65, 48, 144, 65, 8, 197, 76, 100, 133, 28, 144, 20, 8, 197, 57, 83, 69,
-			72, 144, 65, 12, 201, 20, 193, 84, 81, 35, 206, 88, 243, 20, 68, 8, 197, 12, 19, 129, 64, 80, 65, 0, 9, 198, 52, 19, 5, 88,
-			243, 0, 20, 9, 198, 8, 148, 197, 57, 162, 64, 20, 0, 10, 199, 88, 19, 16, 4, 229, 5, 56, 21, 10, 199, 76, 145, 206, 61, 34,
-			76, 20, 67, 10, 199, 72, 147, 143, 64, 149, 5, 12, 20, 10, 199, 64, 145, 84, 72, 20, 143, 40, 20, 6, 195, 8, 243, 12, 21, 0,
-			7, 196, 88, 148, 5, 72, 65, 7, 196, 80, 245, 1, 56, 65, 7, 196, 76, 21, 1, 56, 65, 7, 196, 64, 84, 140, 20, 66, 7, 196,
-			48, 21, 5, 72, 65, 7, 196, 12, 19, 148, 84, 66, 0, 8, 197, 4, 229, 5, 72, 16, 66, 8, 197, 69, 81, 76, 48, 16, 72, 8,
-			197, 88, 149, 133, 72, 144, 65, 9, 197, 88, 145, 193, 56, 240, 67, 20, 8, 197, 76, 81, 9, 12, 144, 21, 9, 197, 65, 35, 212, 20,
-			240, 65, 20, 8, 197, 52, 81, 9, 84, 208, 20, 8, 197, 17, 81, 207, 56, 112, 20, 8, 197, 12, 246, 79, 80, 80, 20, 9, 197, 12,
-			84, 193, 72, 240, 67, 20, 8, 197, 5, 32, 143, 72, 80, 67, 8, 197, 4, 225, 197, 48, 144, 65, 0, 13, 3, 95, 49, 49, 6, 40,
-			50, 72, 37, 76, 37, 0, 9, 198, 76, 20, 141, 5, 66, 64, 65, 9, 198, 64, 149, 20, 60, 226, 64, 65, 6, 195, 52, 19, 5, 20,
-			6, 195, 52, 19, 5, 66, 9, 198, 28, 84, 212, 85, 34, 64, 65, 9, 198, 8, 21, 20, 21, 34, 64, 66, 9, 198, 8, 17, 206, 60,
-			194, 64, 66, 0, 16, 3, 95, 50, 56, 84, 6, 36, 50, 47, 6, 110, 47, 12, 39, 0, 12, 3, 95, 49, 48, 72, 37, 6, 36, 76,
-			37, 0, 10, 199, 77, 80, 129, 13, 21, 69, 60, 66, 14, 203, 64, 144, 83, 81, 34, 78, 61, 1, 78, 36, 16, 70, 9, 198, 61, 37,
-			15, 81, 66, 67, 20, 9, 198, 20, 193, 84, 81, 34, 67, 20, 0, 15, 3, 95, 49, 51, 47, 14, 16, 6, 36, 72, 37, 76, 37, 0,
-			6, 195, 88, 243, 7, 20, 11, 200, 72, 17, 9, 12, 241, 129, 56, 144, 67, 7, 196, 64, 148, 143, 64, 20, 7, 196, 52, 19, 149, 48,
-			66, 11, 200, 12, 130, 82, 60, 112, 76, 20, 240, 67, 0, 13, 3, 95, 49, 50, 72, 6, 39, 72, 37, 76, 37, 0, 9, 198, 16, 147,
-			211, 13, 84, 137, 66, 9, 198, 4, 229, 9, 80, 84, 201, 66, 8, 197, 4, 35, 205, 5, 48, 66, 0, 15, 3, 95, 49, 53, 49, 122,
-			6, 37, 65, 72, 37, 76, 37, 0, 9, 198, 77, 68, 133, 57, 83, 192, 20, 6, 195, 40, 243, 5, 20, 12, 201, 36, 68, 143, 20, 193,
-			84, 81, 34, 67, 20, 0, 18, 3, 95, 49, 52, 49, 122, 35, 47, 12, 6, 110, 51, 72, 37, 76, 37, 0, 10, 199, 52, 84, 197, 56,
-			50, 9, 52, 20, 0, 7, 196, 12, 244, 147, 4, 21, 17, 3, 95, 49, 55, 72, 37, 76, 35, 89, 12, 6, 109, 47, 12, 36, 0, 9,
-			198, 72, 243, 66, 60, 81, 18, 20, 15, 204, 64, 244, 148, 4, 83, 9, 12, 245, 20, 21, 34, 64, 20, 8, 196, 64, 85, 1, 48, 65,
-			20, 7, 196, 64, 84, 137, 52, 66, 9, 198, 64, 84, 137, 52, 85, 18, 66, 7, 196, 28, 148, 5, 80, 20, 7, 196, 12, 244, 5, 80,
-			20, 16, 204, 12, 243, 148, 4, 50, 9, 48, 243, 69, 81, 34, 64, 68, 20, 9, 198, 12, 20, 146, 60, 64, 78, 66, 0, 13, 3, 95,
-			49, 54, 89, 6, 36, 72, 37, 76, 37, 0, 9, 198, 76, 244, 137, 76, 243, 5, 66, 9, 198, 25, 37, 77, 20, 230, 137, 20, 9, 198,
-			12, 20, 146, 60, 48, 201, 20, 9, 198, 12, 19, 12, 36, 51, 5, 65, 0, 6, 195, 61, 52, 193, 21, 9, 198, 12, 21, 1, 48, 85,
-			20, 20, 0, 15, 3, 95, 55, 88, 89, 36, 47, 12, 6, 35, 50, 47, 35, 0, 0, 7, 196, 77, 81, 204, 36, 72, 7, 196, 72, 21,
-			5, 60, 65, 7, 196, 52, 241, 15, 12, 20, 7, 196, 48, 84, 18, 20, 20, 7, 196, 8, 21, 133, 72, 65, 0, 9, 198, 64, 83, 133,
-			48, 244, 5, 66, 9, 198, 4, 229, 9, 48, 244, 5, 66, 8, 197, 4, 225, 84, 60, 192, 67, 0, 6, 195, 88, 245, 9, 20, 9, 198,
-			88, 20, 137, 21, 64, 64, 68, 9, 198, 76, 147, 149, 21, 52, 192, 20, 9, 198, 65, 35, 212, 61, 66, 80, 66, 9, 198, 65, 33, 84,
-			21, 34, 84, 66, 9, 198, 61, 69, 1, 20, 68, 128, 20, 0, 9, 198, 65, 84, 144, 85, 33, 79, 66, 0, 8, 196, 80, 85, 1, 56,
-			65, 20, 7, 196, 76, 149, 1, 72, 66, 7, 196, 32, 84, 150, 20, 66, 0, 8, 197, 64, 83, 148, 60, 64, 20, 8, 197, 52, 84, 212,
-			60, 192, 21, 9, 198, 28, 19, 132, 60, 193, 137, 20, 8, 197, 12, 83, 148, 60, 192, 20, 0, 10, 198, 80, 83, 5, 80, 86, 20, 67,
-			20, 13, 67, 65, 37, 65, 48, 14, 16, 6, 40, 12, 35, 0, 9, 198, 64, 19, 16, 20, 36, 128, 65, 13, 202, 28, 194, 80, 80, 241,
-			15, 57, 66, 68, 36, 20, 9, 198, 16, 83, 79, 13, 34, 84, 66, 0, 8, 197, 37, 51, 212, 61, 0, 66, 8, 197, 21, 83, 79, 49,
-			0, 20, 0, 10, 198, 80, 83, 5, 29, 32, 70, 66, 20, 7, 196, 76, 81, 9, 4, 20, 7, 196, 76, 52, 143, 80, 20, 11, 200, 65,
-			35, 212, 61, 53, 5, 48, 192, 21, 7, 196, 61, 36, 207, 48, 21, 7, 196, 56, 84, 143, 48, 65, 7, 196, 12, 20, 143, 80, 20, 0,
-			9, 198, 24, 16, 197, 88, 21, 5, 76, 9, 198, 80, 83, 199, 56, 145, 5, 20, 9, 198, 37, 51, 195, 72, 21, 5, 66, 0, 10, 198,
-			56, 85, 20, 5, 33, 64, 65, 20, 9, 198, 52, 19, 12, 5, 33, 64, 65, 9, 198, 36, 228, 213, 9, 33, 64, 65, 9, 198, 25, 83,
-			133, 9, 33, 64, 65, 0, 10, 199, 76, 245, 20, 61, 3, 211, 80, 21, 10, 199, 56, 144, 207, 52, 81, 9, 4, 20, 0, 7, 196, 8,
-			244, 146, 60, 21, 11, 200, 64, 246, 154, 4, 225, 200, 21, 32, 66, 7, 196, 24, 244, 147, 20, 21, 7, 196, 24, 83, 20, 72, 21, 9,
-			198, 24, 20, 195, 21, 69, 0, 21, 9, 198, 24, 16, 195, 21, 69, 0, 21, 9, 198, 12, 243, 132, 61, 69, 0, 21, 0, 9, 198, 52,
-			150, 20, 20, 50, 9, 20, 9, 198, 36, 65, 78, 80, 149, 1, 68, 12, 201, 16, 144, 201, 5, 52, 197, 81, 65, 64, 20, 8, 197, 4,
-			226, 67, 21, 64, 20, 0, 5, 194, 52, 16, 8, 9, 198, 89, 83, 20, 85, 33, 64, 65, 9, 198, 85, 33, 84, 21, 33, 64, 67, 9,
-			198, 77, 64, 84, 21, 33, 64, 66, 9, 198, 76, 147, 131, 61, 1, 64, 65, 9, 198, 52, 85, 20, 21, 33, 64, 20, 9, 198, 52, 85,
-			5, 61, 33, 64, 66, 9, 198, 13, 32, 84, 21, 33, 64, 66, 0, 10, 199, 76, 52, 137, 88, 19, 137, 4, 67, 10, 199, 65, 34, 71,
-			36, 243, 137, 4, 67, 10, 199, 64, 192, 78, 5, 33, 201, 4, 66, 10, 199, 52, 144, 83, 80, 83, 137, 4, 68, 6, 195, 24, 243, 0,
-			20, 10, 199, 13, 34, 79, 28, 83, 137, 4, 68, 10, 199, 12, 20, 15, 48, 147, 133, 4, 67, 0, 10, 198, 76, 50, 5, 81, 66, 78,
-			65, 21, 7, 196, 56, 245, 133, 72, 65, 9, 198, 52, 19, 147, 84, 85, 0, 20, 10, 198, 16, 81, 137, 12, 149, 0, 65, 20, 7, 196,
-			4, 229, 5, 72, 65, 0, 9, 198, 81, 34, 70, 60, 115, 9, 20, 9, 198, 80, 83, 5, 24, 147, 13, 67, 8, 197, 76, 49, 80, 76,
-			144, 20, 8, 197, 72, 240, 130, 36, 16, 20, 8, 197, 52, 147, 69, 76, 144, 20, 8, 197, 52, 81, 15, 48, 80, 65, 6, 195, 24, 245,
-			0, 20, 12, 201, 24, 243, 148, 4, 224, 70, 72, 81, 4, 21, 8, 197, 12, 194, 80, 20, 240, 65, 0, 10, 198, 81, 33, 86, 21, 34,
-			64, 65, 20, 9, 198, 36, 228, 213, 9, 34, 64, 65, 9, 198, 36, 228, 197, 81, 66, 64, 20, 9, 198, 12, 244, 129, 105, 160, 84, 66,
-			0, 10, 199, 77, 64, 84, 60, 193, 5, 72, 20, 10, 199, 52, 147, 132, 5, 81, 193, 76, 65, 10, 199, 24, 147, 15, 13, 32, 84, 20,
-			66, 10, 199, 21, 38, 133, 28, 245, 137, 56, 67, 6, 195, 12, 84, 16, 21, 10, 199, 8, 19, 131, 5, 35, 212, 80, 21, 0, 7, 196,
-			76, 83, 154, 4, 8, 7, 196, 80, 21, 1, 72, 65, 7, 196, 80, 20, 9, 72, 65, 7, 196, 77, 65, 76, 48, 21, 8, 196, 76, 85,
-			133, 76, 65, 20, 11, 200, 76, 20, 146, 4, 49, 78, 36, 16, 20, 7, 196, 65, 35, 218, 36, 66, 7, 196, 64, 21, 5, 72, 65, 7,
-			196, 52, 83, 148, 20, 21, 7, 196, 36, 229, 133, 72, 21, 11, 200, 24, 245, 15, 72, 149, 15, 12, 48, 21, 7, 196, 12, 21, 5, 56,
-			21, 7, 196, 5, 52, 207, 72, 65, 9, 198, 4, 229, 9, 16, 245, 0, 66, 0, 8, 197, 60, 211, 137, 84, 208, 20, 9, 198, 60, 208,
-			89, 100, 17, 9, 66, 9, 198, 52, 147, 149, 80, 243, 9, 66, 9, 198, 28, 20, 129, 57, 162, 65, 67, 8, 197, 24, 83, 20, 72, 80,
-			21, 8, 197, 12, 20, 212, 36, 112, 66, 8, 197, 8, 21, 78, 20, 144, 67, 0, 9, 198, 81, 33, 86, 37, 34, 64, 65, 9, 198, 64,
-			244, 212, 21, 34, 64, 65, 9, 198, 64, 84, 133, 80, 243, 0, 66, 9, 198, 52, 86, 133, 57, 162, 64, 20, 0, 12, 3, 95, 50, 88,
-			84, 6, 36, 50, 47, 57, 0, 10, 199, 81, 33, 78, 80, 83, 142, 36, 20, 10, 199, 12, 130, 82, 61, 3, 212, 20, 20, 0, 7, 196,
-			80, 245, 5, 52, 20, 11, 200, 77, 84, 18, 20, 208, 90, 36, 16, 68, 7, 196, 64, 20, 143, 64, 20, 11, 200, 56, 85, 82, 61, 69,
-			5, 72, 144, 20, 11, 200, 12, 21, 129, 48, 48, 86, 36, 16, 68, 0, 12, 201, 80, 148, 193, 56, 245, 20, 21, 34, 64, 20, 12, 201,
-			64, 20, 129, 12, 85, 1, 52, 243, 0, 69, 12, 201, 48, 84, 9, 16, 245, 20, 21, 34, 64, 20, 9, 198, 4, 227, 137, 8, 19, 5,
-			66, 0, 9, 198, 76, 51, 210, 72, 85, 20, 20, 0, 6, 195, 65, 33, 84, 20, 10, 199, 64, 84, 137, 77, 64, 83, 36, 66, 10, 199,
-			52, 85, 1, 77, 64, 83, 36, 66, 10, 199, 37, 4, 15, 64, 245, 1, 52, 67, 11, 199, 36, 68, 143, 12, 81, 129, 48, 67, 20, 6,
-			195, 28, 85, 20, 20, 9, 198, 8, 83, 12, 61, 97, 83, 20, 0, 6, 195, 81, 33, 83, 20, 6, 195, 81, 33, 83, 20, 9, 198, 76,
-			50, 5, 48, 85, 18, 65, 7, 196, 64, 245, 1, 48, 65, 7, 196, 60, 97, 137, 16, 20, 12, 200, 29, 32, 78, 60, 195, 5, 73, 48,
-			67, 21, 0, 12, 201, 88, 83, 148, 72, 147, 15, 69, 83, 192, 66, 9, 198, 80, 243, 20, 20, 50, 9, 20, 9, 198, 52, 19, 15, 12,
-			50, 9, 20, 9, 198, 36, 225, 133, 16, 83, 5, 21, 6, 195, 12, 85, 18, 21, 0, 6, 195, 52, 147, 73, 66, 9, 198, 36, 225, 197,
-			57, 83, 192, 20, 0, 6, 195, 52, 144, 64, 72, 12, 201, 12, 149, 15, 76, 50, 5, 48, 85, 18, 67, 12, 201, 12, 130, 85, 16, 147,
-			5, 81, 65, 82, 20, 6, 195, 8, 240, 64, 20, 0, 7, 196, 28, 245, 20, 4, 21, 7, 196, 12, 244, 20, 36, 20, 7, 196, 8, 22,
-			129, 72, 66, 0, 8, 197, 25, 32, 71, 60, 192, 65, 0, 9, 198, 88, 19, 5, 72, 144, 64, 66, 9, 198, 76, 84, 85, 4, 196, 192,
-			66, 6, 195, 56, 243, 73, 20, 9, 198, 52, 20, 207, 88, 144, 64, 20, 10, 198, 28, 83, 205, 21, 68, 128, 66, 20, 9, 198, 21, 48,
-			77, 21, 68, 128, 66, 9, 198, 8, 243, 129, 72, 48, 68, 66, 6, 195, 8, 241, 77, 20, 0, 10, 199, 88, 84, 208, 5, 50, 65, 56,
-			68, 10, 199, 76, 96, 82, 24, 19, 12, 36, 67, 6, 195, 44, 80, 64, 21, 10, 199, 12, 20, 212, 20, 195, 15, 56, 67, 0, 14, 3,
-			95, 63, 63, 89, 6, 37, 65, 71, 39, 55, 39, 0, 7, 196, 12, 20, 146, 20, 66, 11, 200, 4, 224, 84, 72, 240, 195, 60, 192, 20,
-			0, 12, 201, 21, 53, 5, 57, 50, 77, 21, 68, 128, 67, 0, 9, 198, 88, 144, 193, 72, 144, 64, 67, 9, 198, 88, 149, 15, 72, 144,
-			64, 21, 10, 198, 80, 148, 133, 76, 144, 64, 66, 20, 13, 202, 52, 20, 147, 36, 51, 214, 21, 65, 82, 20, 20, 9, 198, 28, 19, 5,
-			72, 144, 64, 66, 9, 198, 21, 81, 197, 56, 144, 64, 20, 9, 198, 21, 81, 143, 72, 144, 64, 68, 0, 6, 195, 52, 145, 64, 72, 15,
-			3, 95, 52, 88, 49, 122, 35, 51, 6, 35, 50, 47, 35, 0, 10, 199, 77, 2, 78, 21, 67, 204, 36, 66, 14, 203, 64, 20, 129, 48,
-			193, 76, 21, 2, 80, 20, 64, 69, 10, 199, 52, 81, 193, 12, 243, 15, 56, 20, 0, 9, 198, 76, 244, 208, 21, 69, 0, 20, 6, 195,
-			60, 209, 71, 20, 7, 196, 16, 85, 143, 80, 20, 7, 196, 12, 244, 9, 4, 20, 0, 8, 197, 77, 2, 82, 37, 64, 65, 8, 197, 64,
-			193, 84, 81, 32, 20, 9, 198, 64, 145, 15, 12, 50, 9, 20, 9, 198, 25, 83, 7, 20, 230, 137, 20, 12, 201, 12, 20, 16, 20, 195,
-			1, 56, 144, 64, 68, 12, 201, 5, 163, 207, 77, 1, 82, 52, 144, 64, 69, 12, 201, 5, 84, 212, 72, 19, 1, 76, 144, 64, 68, 0,
-			9, 198, 64, 243, 12, 36, 49, 64, 20, 0, 10, 199, 61, 2, 83, 80, 241, 15, 52, 67, 6, 195, 60, 193, 192, 20, 6, 195, 56, 241,
-			64, 20, 6, 195, 56, 241, 64, 66, 0, 15, 204, 81, 35, 205, 8, 240, 201, 80, 244, 5, 56, 144, 64, 70, 7, 196, 48, 241, 15, 48,
-			65, 9, 198, 36, 209, 78, 60, 99, 210, 67, 7, 196, 24, 84, 137, 4, 65, 9, 198, 12, 19, 12, 36, 49, 66, 20, 0, 12, 201, 76,
-			245, 20, 61, 52, 5, 12, 145, 64, 20, 12, 201, 64, 243, 148, 5, 52, 201, 21, 97, 64, 20, 8, 197, 53, 83, 148, 5, 160, 66, 9,
-			197, 48, 85, 129, 57, 64, 65, 20, 9, 197, 12, 243, 80, 85, 64, 65, 20, 8, 197, 4, 213, 76, 21, 64, 20, 0, 6, 194, 48, 80,
-			72, 9, 9, 198, 52, 17, 15, 56, 145, 64, 67, 9, 198, 36, 228, 201, 20, 209, 64, 20, 9, 198, 16, 149, 20, 60, 225, 192, 20, 13,
-			202, 16, 17, 200, 21, 36, 143, 80, 148, 9, 4, 69, 0, 16, 3, 95, 53, 88, 76, 37, 50, 49, 122, 6, 35, 50, 47, 35, 0, 10,
-			199, 88, 145, 5, 60, 51, 9, 64, 68, 10, 199, 52, 145, 204, 36, 244, 137, 4, 67, 6, 195, 52, 16, 84, 66, 6, 195, 28, 243, 0,
-			20, 10, 199, 9, 34, 83, 28, 245, 137, 4, 20, 0, 7, 196, 77, 33, 84, 20, 72, 9, 198, 81, 32, 78, 76, 149, 0, 65, 7, 196,
-			77, 70, 76, 20, 66, 11, 200, 65, 34, 77, 60, 113, 78, 37, 64, 67, 9, 198, 64, 19, 13, 4, 227, 214, 20, 9, 198, 60, 36, 207,
-			48, 85, 0, 20, 7, 196, 48, 84, 18, 36, 20, 7, 196, 24, 21, 9, 12, 66, 0, 6, 195, 72, 245, 26, 20, 8, 197, 72, 20, 1,
-			12, 80, 66, 9, 198, 56, 244, 207, 12, 243, 73, 20, 6, 195, 48, 85, 0, 20, 6, 195, 28, 245, 0, 20, 12, 201, 24, 21, 20, 37,
-			52, 5, 12, 145, 64, 20, 8, 197, 20, 193, 85, 76, 144, 66, 10, 198, 12, 147, 9, 20, 114, 65, 67, 20, 8, 197, 12, 19, 69, 72,
-			144, 65, 8, 197, 4, 115, 206, 36, 16, 67, 10, 198, 4, 48, 78, 80, 241, 9, 67, 20, 0, 9, 198, 81, 33, 68, 36, 50, 64, 21,
-			9, 198, 12, 147, 9, 20, 114, 64, 20, 9, 198, 8, 240, 66, 16, 147, 0, 67, 9, 198, 4, 211, 210, 72, 82, 64, 67, 0, 9, 198,
-			24, 16, 197, 88, 19, 79, 76, 6, 195, 76, 82, 64, 72, 7, 195, 88, 242, 64, 76, 9, 7, 195, 56, 242, 64, 76, 9, 10, 199, 16,
-			244, 15, 48, 21, 143, 72, 21, 10, 199, 5, 36, 15, 13, 32, 84, 20, 66, 0, 12, 200, 5, 69, 18, 5, 97, 82, 76, 240, 28, 67,
-			8, 196, 76, 245, 5, 72, 66, 21, 11, 200, 60, 229, 15, 28, 83, 133, 76, 144, 67, 11, 200, 52, 19, 135, 36, 21, 15, 36, 16, 21,
-			11, 200, 52, 19, 9, 56, 51, 206, 36, 16, 68, 9, 198, 48, 19, 80, 72, 81, 0, 20, 11, 200, 29, 32, 77, 36, 224, 67, 20, 80,
-			67, 11, 200, 13, 33, 86, 4, 192, 207, 72, 80, 20, 7, 196, 12, 244, 148, 20, 21, 7, 196, 8, 245, 133, 76, 20, 8, 196, 8, 85,
-			15, 56, 66, 20, 0, 8, 197, 69, 81, 76, 48, 80, 72, 8, 197, 72, 17, 9, 12, 80, 66, 9, 198, 64, 20, 129, 80, 242, 65, 21,
-			8, 197, 25, 80, 211, 36, 16, 65, 8, 197, 25, 34, 71, 36, 16, 65, 9, 198, 24, 19, 1, 76, 50, 65, 67, 9, 198, 21, 84, 137,
-			80, 210, 65, 68, 8, 197, 5, 32, 207, 72, 80, 65, 9, 198, 5, 3, 208, 81, 145, 205, 66, 8, 197, 4, 193, 78, 36, 16, 20, 0,
-			9, 198, 16, 244, 143, 80, 82, 64, 67, 7, 195, 4, 147, 69, 66, 20, 0, 15, 3, 95, 54, 88, 89, 36, 89, 89, 6, 35, 50, 47,
-			35, 0, 10, 199, 88, 19, 4, 37, 51, 212, 80, 21, 10, 199, 80, 85, 18, 5, 3, 196, 20, 66, 6, 195, 76, 85, 20, 20, 6, 195,
-			76, 85, 20, 20, 6, 195, 8, 243, 64, 20, 0, 11, 200, 77, 2, 65, 56, 21, 15, 36, 16, 21, 11, 200, 64, 192, 83, 52, 241, 5,
-			76, 208, 20, 7, 196, 56, 80, 149, 48, 21, 11, 200, 52, 83, 1, 56, 51, 206, 36, 16, 68, 0, 0, 9, 198, 4, 32, 137, 4, 227,
-			192, 76, 6, 195, 12, 195, 197, 20, 18, 70, 4, 32, 129, 36, 227, 192, 35, 71, 12, 35, 6, 37, 12, 50, 39, 0, 0, 6, 195, 85,
-			5, 80, 65, 6, 195, 72, 245, 20, 21, 10, 199, 64, 84, 137, 25, 32, 83, 36, 66, 10, 199, 61, 37, 15, 12, 83, 148, 72, 20, 14,
-			203, 36, 229, 5, 48, 194, 71, 32, 83, 154, 36, 16, 20, 9, 198, 8, 20, 201, 48, 85, 83, 21, 6, 195, 4, 131, 192, 66, 0, 9,
-			198, 64, 20, 129, 52, 85, 18, 66, 11, 200, 64, 16, 137, 48, 195, 206, 37, 48, 20, 7, 196, 21, 34, 90, 104, 65, 7, 196, 20, 54,
-			133, 52, 20, 7, 196, 12, 21, 5, 80, 20, 7, 196, 8, 85, 9, 48, 21, 0, 6, 195, 28, 195, 194, 20, 0, 6, 194, 36, 192, 72,
-			9, 9, 198, 56, 144, 207, 16, 83, 64, 20, 9, 198, 20, 225, 137, 80, 85, 84, 67, 0, 12, 201, 65, 35, 198, 60, 225, 9, 52, 85,
-			18, 67, 0, 9, 198, 72, 85, 143, 49, 97, 82, 20, 9, 198, 64, 243, 3, 21, 97, 82, 66, 11, 200, 16, 243, 85, 76, 227, 214, 5,
-			48, 20, 9, 198, 12, 243, 132, 60, 210, 78, 66, 0, 9, 197, 64, 243, 12, 36, 224, 65, 20, 8, 197, 9, 32, 68, 4, 224, 65, 0,
-			6, 195, 61, 68, 133, 21, 9, 198, 52, 148, 197, 72, 144, 64, 66, 9, 198, 25, 83, 137, 88, 144, 64, 67, 9, 198, 21, 81, 15, 12,
-			144, 64, 20, 9, 198, 16, 21, 1, 72, 144, 64, 67, 9, 198, 13, 84, 129, 104, 144, 64, 67, 9, 198, 12, 19, 15, 72, 144, 64, 67,
-			9, 198, 5, 37, 5, 72, 144, 64, 66, 9, 198, 5, 35, 79, 56, 144, 64, 67, 9, 198, 4, 192, 129, 56, 144, 64, 67, 9, 198, 4,
-			32, 129, 104, 144, 64, 67, 0, 10, 199, 64, 83, 148, 5, 65, 85, 12, 67, 9, 198, 5, 33, 78, 4, 49, 79, 67, 0, 12, 201, 56,
-			144, 193, 72, 17, 213, 20, 228, 197, 21, 12, 201, 16, 85, 84, 21, 35, 211, 80, 243, 73, 20, 0, 8, 197, 81, 32, 80, 4, 224, 65,
-			8, 197, 80, 244, 144, 20, 64, 20, 8, 197, 76, 84, 137, 60, 192, 66, 8, 197, 28, 144, 86, 20, 224, 21, 8, 197, 12, 244, 146, 36,
-			64, 66, 9, 198, 12, 19, 16, 21, 53, 9, 67, 8, 197, 4, 229, 5, 56, 224, 21, 0, 9, 198, 76, 51, 210, 16, 144, 64, 66, 9,
-			198, 64, 243, 9, 104, 144, 64, 67, 9, 198, 56, 145, 197, 72, 144, 64, 66, 9, 198, 52, 21, 5, 72, 144, 64, 66, 9, 198, 48, 149,
-			1, 56, 144, 64, 67, 9, 198, 48, 81, 193, 104, 144, 64, 67, 9, 198, 36, 212, 12, 36, 50, 84, 66, 0, 14, 3, 95, 56, 88, 39,
-			47, 12, 6, 35, 50, 47, 35, 0, 6, 195, 104, 241, 64, 20, 0, 11, 200, 88, 19, 2, 72, 85, 133, 56, 224, 21, 11, 200, 64, 244,
-			148, 36, 48, 201, 60, 192, 67, 11, 200, 64, 21, 76, 36, 192, 84, 36, 224, 68, 9, 198, 12, 244, 208, 21, 69, 0, 20, 0, 12, 201,
-			96, 83, 143, 28, 195, 211, 76, 144, 64, 68, 12, 201, 80, 84, 141, 60, 51, 208, 64, 144, 64, 20, 12, 201, 76, 84, 211, 84, 241, 143,
-			8, 144, 64, 68, 8, 197, 61, 68, 129, 57, 64, 65, 8, 197, 21, 48, 69, 17, 32, 20, 12, 201, 4, 229, 9, 52, 21, 5, 72, 144,
-			64, 68, 0, 9, 198, 65, 33, 67, 60, 49, 64, 20, 10, 198, 5, 85, 15, 56, 241, 64, 67, 20, 0, 10, 199, 37, 51, 212, 72, 244,
-			9, 4, 68, 0, 7, 196, 80, 240, 137, 4, 66, 7, 196, 77, 1, 79, 80, 20, 7, 196, 52, 84, 131, 20, 66, 0, 8, 197, 80, 83,
-			80, 61, 32, 65, 8, 197, 80, 83, 80, 61, 32, 20, 8, 197, 5, 52, 207, 73, 64, 21, 0, 5, 194, 32, 240, 72, 6, 195, 52, 145,
-			73, 72, 9, 198, 76, 81, 213, 4, 49, 64, 66, 9, 198, 61, 33, 70, 36, 49, 64, 21, 6, 195, 56, 241, 77, 20, 0, 14, 3, 95,
-			57, 88, 50, 39, 84, 6, 35, 50, 47, 35, 0, 10, 199, 81, 32, 84, 80, 244, 137, 4, 67, 9, 198, 60, 198, 78, 80, 131, 211, 65,
-			10, 199, 48, 81, 193, 80, 244, 137, 4, 68, 0, 7, 196, 65, 33, 84, 20, 20, 11, 200, 12, 20, 212, 20, 195, 149, 61, 96, 20, 9,
-			198, 4, 194, 81, 84, 245, 0, 66, 0, 8, 197, 88, 84, 143, 48, 144, 65, 8, 197, 80, 244, 129, 12, 80, 66, 8, 197, 52, 244, 134,
-			20, 208, 20, 8, 197, 28, 244, 135, 36, 16, 65, 8, 197, 28, 144, 67, 60, 208, 65, 8, 197, 24, 244, 135, 36, 16, 65, 8, 197, 13,
-			80, 133, 8, 80, 20, 8, 197, 5, 35, 79, 16, 144, 20, 0, 9, 198, 80, 245, 15, 28, 243, 0, 67, 0, 10, 199, 81, 33, 83, 76,
-			85, 20, 20, 20, 11, 199, 12, 84, 150, 21, 65, 82, 36, 66, 20, 0, 11, 200, 84, 226, 86, 21, 36, 201, 80, 16, 69, 9, 198, 37,
-			4, 15, 48, 149, 0, 66, 9, 198, 12, 244, 9, 48, 245, 0, 20, 9, 198, 5, 50, 78, 80, 245, 0, 66, 0, 9, 197, 88, 81, 5,
-			72, 80, 66, 21, 8, 197, 56, 245, 77, 20, 16, 21, 10, 198, 56, 244, 150, 20, 114, 65, 66, 20, 8, 197, 48, 148, 19, 36, 16, 65,
-			12, 201, 16, 85, 84, 21, 35, 206, 60, 210, 64, 20, 0, 15, 3, 95, 63, 65, 55, 36, 47, 12, 6, 36, 12, 51, 35, 0, 9, 198,
-			85, 50, 71, 56, 243, 0, 67, 10, 198, 12, 241, 199, 36, 243, 0, 65, 20, 9, 198, 12, 85, 14, 36, 50, 64, 20, 9, 198, 12, 20,
-			137, 56, 243, 0, 66, 9, 198, 5, 4, 15, 28, 114, 64, 20, 0, 10, 199, 12, 83, 148, 72, 145, 149, 28, 66, 0, 9, 198, 37, 51,
-			204, 4, 35, 206, 20, 7, 196, 9, 37, 83, 36, 66, 0, 12, 201, 52, 243, 148, 20, 114, 79, 72, 114, 64, 21, 8, 197, 45, 32, 75,
-			61, 112, 66, 0, 0, 0, 8, 196, 72, 81, 15, 96, 66, 20, 0, 6, 195, 60, 209, 82, 65, 0, 9, 198, 12, 20, 5, 48, 195, 192,
-			21, 13, 202, 57, 80, 204, 20, 244, 201, 57, 65, 83, 36, 68, 0, 7, 194, 36, 224, 72, 28, 9, 18, 66, 36, 224, 37, 50, 15, 49,
-			122, 4, 37, 0, 8, 81, 99, 117, 105, 32, 5, 194, 60, 32, 20, 12, 201, 20, 225, 15, 76, 50, 5, 48, 85, 18, 67, 0, 9, 67,
-			92, 80, 128, 58, 109, 71, 0, 15, 204, 88, 83, 148, 37, 21, 65, 81, 68, 133, 76, 147, 64, 20, 12, 201, 76, 245, 20, 60, 147, 147,
-			36, 83, 69, 20, 6, 195, 72, 240, 128, 20, 6, 195, 8, 240, 128, 20, 0, 7, 196, 77, 83, 12, 4, 72, 6, 195, 77, 67, 205, 20,
-			12, 201, 76, 84, 211, 4, 229, 5, 76, 147, 64, 20, 0, 8, 197, 21, 48, 71, 60, 224, 66, 8, 197, 8, 83, 9, 4, 192, 67, 8,
-			197, 4, 113, 82, 60, 192, 66, 0, 9, 198, 76, 50, 76, 36, 20, 128, 67, 9, 198, 21, 32, 137, 88, 244, 128, 66, 10, 198, 20, 48,
-			197, 80, 84, 128, 66, 20, 9, 198, 12, 243, 15, 56, 144, 64, 67, 0, 6, 195, 77, 80, 64, 72, 15, 4, 95, 15, 7, 15, 39, 81,
-			6, 39, 12, 50, 36, 49, 0, 6, 195, 76, 80, 128, 20, 6, 195, 12, 80, 128, 20, 10, 199, 12, 20, 212, 20, 195, 1, 72, 67, 10,
-			199, 5, 32, 201, 64, 83, 1, 28, 67, 0, 7, 196, 85, 48, 133, 12, 20, 7, 196, 84, 226, 84, 4, 67, 6, 195, 76, 83, 137, 20,
-			11, 200, 64, 243, 9, 77, 66, 82, 60, 192, 68, 7, 196, 60, 131, 73, 12, 20, 0, 6, 195, 81, 35, 214, 20, 8, 197, 81, 33, 77,
-			36, 192, 66, 8, 197, 80, 84, 146, 20, 224, 21, 8, 197, 80, 20, 144, 4, 224, 66, 8, 197, 72, 17, 204, 4, 224, 66, 8, 197, 64,
-			192, 84, 36, 224, 65, 6, 195, 61, 35, 0, 21, 8, 197, 12, 20, 212, 36, 224, 65, 0, 6, 195, 65, 35, 211, 20, 9, 198, 56, 144,
-			207, 80, 84, 128, 66, 9, 198, 41, 80, 90, 20, 148, 128, 65, 0, 6, 195, 81, 35, 212, 20, 0, 11, 200, 80, 244, 131, 32, 144, 82,
-			60, 192, 67, 7, 196, 53, 84, 197, 36, 66, 11, 200, 36, 228, 197, 81, 66, 67, 36, 64, 68, 8, 196, 24, 84, 143, 16, 66, 20, 0,
-			14, 73, 4, 48, 197, 48, 84, 129, 80, 244, 128, 21, 0, 10, 6, 195, 65, 35, 214, 20, 6, 195, 65, 35, 214, 20, 8, 197, 52, 20,
-			195, 5, 32, 65, 8, 197, 20, 194, 83, 37, 32, 67, 8, 197, 16, 147, 69, 81, 32, 65, 8, 197, 5, 162, 77, 85, 64, 65, 0, 9,
-			198, 13, 35, 206, 61, 67, 208, 66, 12, 201, 12, 20, 212, 20, 197, 133, 80, 84, 133, 20, 0, 6, 195, 77, 81, 64, 72, 6, 195, 77,
-			67, 208, 20, 6, 195, 65, 35, 212, 20, 10, 199, 52, 19, 5, 8, 243, 7, 20, 20, 10, 199, 5, 144, 84, 60, 195, 1, 32, 68, 11,
-			199, 4, 48, 193, 16, 83, 73, 4, 67, 20, 0, 11, 200, 77, 1, 83, 76, 147, 69, 81, 32, 66, 7, 196, 61, 97, 83, 80, 20, 9,
-			198, 16, 243, 9, 4, 227, 214, 20, 8, 196, 12, 241, 201, 4, 65, 20, 9, 198, 5, 85, 15, 52, 86, 154, 20, 0, 8, 195, 56, 83,
-			0, 72, 28, 9, 9, 197, 80, 244, 148, 61, 32, 65, 21, 8, 197, 72, 145, 197, 81, 64, 20, 6, 195, 56, 83, 0, 21, 8, 197, 16,
-			145, 133, 81, 64, 20, 8, 197, 12, 20, 211, 5, 32, 65, 8, 197, 5, 32, 137, 81, 32, 65, 0, 7, 194, 56, 80, 72, 28, 9, 9,
-			66, 48, 144, 55, 37, 0, 76, 9, 6, 194, 36, 240, 76, 9, 0, 6, 195, 76, 85, 76, 66, 10, 199, 52, 243, 143, 80, 243, 137, 4,
-			68, 14, 203, 36, 51, 211, 36, 67, 196, 20, 48, 69, 17, 32, 20, 0, 7, 196, 77, 83, 12, 20, 72, 15, 68, 104, 18, 82, 4, 72,
-			88, 35, 6, 37, 12, 51, 35, 0, 9, 198, 88, 147, 129, 88, 147, 0, 67, 7, 196, 65, 33, 86, 36, 20, 7, 196, 65, 33, 83, 76,
-			20, 7, 196, 56, 83, 73, 12, 66, 8, 196, 44, 20, 15, 44, 66, 20, 6, 195, 28, 83, 137, 20, 11, 200, 20, 224, 78, 80, 147, 205,
-			21, 32, 68, 11, 200, 12, 130, 69, 76, 19, 149, 61, 96, 20, 0, 9, 198, 24, 16, 197, 88, 19, 143, 76, 8, 197, 25, 84, 143, 56,
-			240, 72, 8, 197, 81, 32, 66, 20, 16, 65, 8, 197, 72, 240, 195, 36, 16, 20, 8, 197, 64, 84, 131, 32, 80, 66, 8, 197, 24, 80,
-			195, 36, 16, 20, 8, 197, 12, 244, 195, 36, 16, 20, 8, 197, 12, 240, 195, 36, 16, 20, 8, 197, 8, 240, 195, 36, 16, 20, 8, 197,
-			5, 32, 193, 16, 80, 65, 8, 197, 4, 194, 83, 20, 144, 67, 0, 17, 206, 72, 243, 66, 36, 51, 211, 36, 67, 196, 20, 48, 69, 17,
-			32, 20, 9, 198, 36, 228, 207, 48, 149, 0, 66, 10, 198, 12, 19, 21, 52, 85, 0, 67, 21, 0, 6, 195, 77, 82, 64, 72, 10, 199,
-			104, 145, 207, 81, 65, 82, 36, 20, 10, 199, 80, 144, 133, 72, 144, 68, 20, 67, 10, 199, 76, 21, 143, 72, 115, 129, 56, 67, 10, 199,
-			36, 225, 129, 57, 66, 76, 20, 67, 10, 199, 5, 32, 201, 65, 33, 84, 20, 20, 0, 9, 198, 64, 84, 140, 60, 209, 78, 21, 7, 196,
-			48, 84, 143, 76, 21, 11, 200, 21, 35, 69, 56, 85, 84, 36, 48, 67, 9, 198, 8, 84, 148, 36, 243, 0, 66, 9, 198, 4, 84, 143,
-			76, 243, 0, 67, 0, 8, 197, 104, 19, 143, 8, 144, 20, 8, 197, 88, 83, 148, 72, 80, 20, 8, 197, 76, 147, 143, 64, 80, 20, 8,
-			197, 72, 84, 213, 52, 80, 67, 6, 195, 65, 35, 194, 20, 8, 197, 64, 84, 147, 36, 16, 65, 8, 197, 61, 53, 9, 48, 80, 66, 9,
-			197, 48, 83, 85, 72, 80, 65, 20, 9, 197, 36, 67, 206, 20, 240, 66, 20, 6, 195, 29, 81, 82, 21, 9, 197, 20, 225, 129, 76, 144,
-			65, 20, 9, 198, 13, 33, 84, 4, 49, 79, 66, 9, 197, 12, 20, 201, 56, 240, 67, 20, 8, 197, 12, 20, 137, 80, 80, 67, 8, 197,
-			8, 145, 78, 56, 144, 20, 0, 9, 198, 65, 33, 83, 80, 149, 0, 65, 14, 202, 32, 84, 129, 12, 193, 79, 64, 243, 9, 76, 67, 21,
-			6, 195, 17, 35, 199, 20, 9, 198, 4, 211, 210, 61, 50, 64, 21, 0, 9, 198, 64, 243, 9, 13, 35, 205, 66, 14, 203, 20, 193, 84,
-			81, 35, 205, 4, 115, 133, 80, 80, 20, 6, 195, 8, 243, 128, 20, 10, 199, 5, 3, 204, 48, 147, 133, 60, 67, 0, 15, 4, 95, 48,
-			77, 52, 71, 37, 55, 37, 6, 39, 50, 37, 0, 11, 200, 61, 37, 15, 16, 244, 211, 36, 16, 68, 6, 195, 56, 243, 133, 20, 11, 200,
-			25, 32, 78, 12, 130, 71, 36, 16, 66, 7, 196, 12, 149, 137, 80, 65, 6, 195, 12, 83, 133, 21, 11, 200, 9, 83, 206, 5, 36, 143,
-			80, 144, 20, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6, 39, 50, 37, 0, 6, 195, 56, 245, 83, 66, 9, 198, 48, 20,
-			9, 16, 83, 192, 66, 7, 195, 21, 3, 195, 65, 20, 9, 198, 20, 193, 84, 81, 35, 196, 20, 0, 16, 4, 95, 48, 77, 51, 65, 37,
-			55, 37, 6, 35, 51, 72, 37, 0, 6, 195, 76, 83, 128, 21, 11, 199, 64, 20, 133, 57, 65, 83, 36, 66, 20, 9, 198, 64, 19, 5,
-			52, 243, 133, 20, 6, 195, 56, 243, 128, 20, 6, 195, 24, 243, 128, 20, 9, 198, 24, 147, 5, 52, 243, 133, 20, 9, 198, 12, 194, 83,
-			80, 83, 133, 65, 6, 195, 12, 83, 128, 21, 6, 195, 8, 243, 132, 20, 0, 7, 196, 8, 240, 195, 4, 21, 7, 196, 12, 20, 21, 80,
-			66, 0, 12, 4, 95, 48, 77, 49, 65, 6, 37, 55, 35, 0, 7, 195, 21, 3, 206, 65, 20, 6, 195, 12, 83, 142, 21, 0, 15, 4,
-			95, 2, 18, 22, 71, 14, 16, 6, 36, 12, 84, 36, 0, 9, 198, 61, 69, 1, 28, 243, 128, 66, 5, 194, 60, 64, 20, 9, 198, 52,
-			19, 1, 64, 83, 128, 21, 0, 9, 198, 76, 147, 132, 72, 243, 69, 65, 11, 199, 16, 148, 195, 72, 81, 9, 80, 66, 21, 9, 198, 12,
-			19, 12, 37, 35, 197, 66, 0, 7, 196, 12, 244, 137, 104, 65, 0, 8, 197, 64, 83, 132, 60, 192, 20, 8, 197, 52, 81, 15, 48, 192,
-			21, 8, 197, 32, 145, 82, 60, 224, 66, 0, 9, 198, 105, 80, 195, 32, 84, 128, 65, 9, 198, 72, 84, 208, 60, 228, 192, 20, 9, 198,
-			36, 68, 143, 88, 244, 128, 66, 6, 195, 12, 84, 131, 21, 6, 195, 12, 84, 131, 21, 6, 195, 8, 244, 135, 21, 0, 6, 195, 24, 244,
-			128, 21, 9, 198, 13, 34, 83, 4, 244, 133, 66, 6, 195, 12, 84, 128, 21, 6, 195, 12, 84, 128, 21, 0, 6, 195, 76, 84, 129, 21,
-			7, 196, 77, 65, 80, 64, 21, 6, 195, 72, 244, 133, 20, 7, 196, 64, 16, 197, 12, 20, 6, 195, 52, 20, 129, 66, 7, 196, 24, 241,
-			204, 36, 20, 9, 198, 24, 147, 15, 77, 49, 78, 66, 7, 196, 16, 241, 204, 36, 20, 6, 195, 8, 244, 133, 20, 0, 8, 197, 88, 83,
-			148, 60, 192, 20, 12, 201, 69, 80, 68, 72, 147, 1, 80, 84, 128, 67, 8, 197, 16, 243, 13, 4, 224, 20, 8, 197, 12, 22, 154, 60,
-			192, 66, 0, 5, 194, 61, 64, 20, 9, 198, 52, 243, 143, 52, 84, 128, 66, 9, 198, 48, 83, 208, 60, 193, 0, 20, 0, 6, 195, 8,
-			245, 128, 20, 6, 195, 8, 245, 128, 20, 0, 7, 196, 76, 147, 73, 4, 65, 8, 196, 72, 240, 143, 80, 66, 20, 6, 195, 56, 245, 133,
-			20, 0, 8, 197, 76, 245, 137, 21, 64, 66, 12, 201, 53, 83, 20, 37, 3, 5, 96, 84, 128, 20, 12, 201, 20, 210, 67, 72, 148, 20,
-			60, 98, 84, 68, 0, 13, 202, 88, 19, 4, 60, 32, 137, 4, 65, 78, 20, 67, 9, 198, 76, 19, 134, 72, 243, 148, 66, 6, 195, 21,
-			3, 211, 20, 0, 10, 199, 88, 19, 12, 20, 195, 206, 28, 20, 6, 195, 56, 245, 128, 20, 9, 198, 52, 147, 12, 21, 50, 77, 20, 10,
-			199, 37, 3, 212, 21, 35, 73, 4, 68, 10, 199, 28, 83, 212, 21, 35, 73, 4, 68, 9, 198, 21, 2, 71, 72, 17, 133, 66, 0, 7,
-			196, 16, 148, 15, 48, 66, 6, 195, 8, 245, 133, 20, 0, 9, 197, 80, 83, 133, 9, 32, 65, 20, 9, 197, 48, 85, 129, 57, 160, 65,
-			20, 8, 197, 36, 225, 133, 81, 64, 20, 8, 197, 20, 97, 133, 81, 64, 20, 8, 197, 16, 84, 213, 21, 64, 20, 8, 197, 8, 84, 207,
-			105, 160, 21, 0, 6, 194, 52, 144, 76, 9, 9, 198, 65, 35, 201, 21, 69, 0, 20, 9, 198, 65, 35, 196, 61, 69, 0, 21, 6, 195,
-			21, 21, 79, 20, 9, 198, 12, 81, 129, 48, 241, 128, 66, 6, 195, 8, 244, 147, 21, 0, 10, 199, 77, 2, 78, 5, 166, 143, 48, 67,
-			10, 199, 64, 148, 143, 52, 19, 137, 4, 68, 10, 199, 28, 244, 135, 60, 230, 143, 48, 67, 6, 195, 28, 86, 128, 21, 9, 198, 12, 130,
-			65, 88, 20, 137, 65, 10, 199, 12, 20, 148, 5, 1, 83, 80, 21, 9, 198, 4, 224, 71, 72, 17, 133, 66, 0, 7, 131, 14, 195, 169,
-			8, 9, 7, 196, 36, 209, 78, 36, 20, 9, 198, 28, 192, 68, 36, 243, 0, 66, 0, 8, 197, 88, 84, 195, 36, 48, 66, 8, 197, 77,
-			3, 5, 56, 144, 20, 8, 197, 64, 84, 195, 32, 80, 20, 6, 195, 24, 244, 146, 21, 8, 197, 21, 35, 69, 80, 80, 20, 8, 197, 8,
-			148, 5, 16, 80, 65, 0, 9, 198, 81, 32, 86, 21, 50, 64, 20, 9, 198, 21, 129, 82, 21, 50, 64, 66, 0, 20, 71, 60, 194, 77,
-			64, 144, 68, 20, 39, 55, 37, 65, 48, 6, 37, 35, 72, 36, 0, 14, 203, 64, 149, 67, 12, 129, 80, 21, 33, 133, 81, 64, 20, 9,
-			198, 52, 144, 210, 61, 67, 205, 66, 10, 199, 5, 32, 207, 12, 244, 197, 56, 21, 0, 7, 196, 84, 35, 204, 16, 20, 9, 198, 72, 81,
-			199, 37, 49, 78, 21, 7, 196, 65, 33, 84, 80, 20, 11, 200, 52, 243, 148, 20, 193, 80, 72, 80, 20, 8, 196, 52, 17, 207, 28, 66,
-			20, 6, 195, 21, 21, 73, 20, 9, 198, 9, 85, 1, 56, 243, 0, 67, 0, 8, 197, 81, 34, 65, 16, 80, 65, 8, 197, 80, 21, 1,
-			72, 144, 65, 8, 197, 76, 147, 132, 36, 16, 66, 8, 197, 36, 228, 207, 52, 208, 21, 8, 197, 36, 225, 133, 72, 144, 65, 6, 195, 24,
-			244, 142, 21, 8, 197, 17, 34, 65, 16, 80, 65, 8, 197, 4, 210, 68, 20, 144, 67, 0, 9, 198, 80, 83, 195, 72, 149, 0, 66, 6,
-			195, 52, 20, 143, 20, 6, 195, 52, 20, 143, 66, 9, 198, 16, 147, 195, 21, 50, 64, 66, 9, 198, 12, 19, 69, 72, 245, 0, 20, 0,
-			6, 195, 104, 243, 128, 20, 10, 199, 80, 19, 12, 60, 98, 84, 20, 66, 10, 199, 12, 243, 80, 61, 50, 84, 20, 66, 0, 7, 196, 76,
-			19, 79, 4, 20, 7, 196, 73, 80, 133, 48, 66, 11, 200, 64, 245, 1, 52, 241, 193, 48, 80, 67, 9, 198, 37, 3, 195, 20, 229, 18,
-			20, 11, 200, 36, 209, 78, 61, 69, 5, 72, 144, 20, 11, 200, 21, 65, 82, 61, 69, 5, 72, 144, 20, 9, 198, 16, 148, 208, 72, 86,
-			154, 20, 11, 200, 8, 147, 211, 36, 229, 5, 76, 144, 67, 11, 200, 5, 34, 83, 80, 245, 5, 48, 80, 67, 0, 12, 201, 72, 244, 208,
-			36, 115, 9, 61, 50, 64, 21, 6, 195, 8, 244, 142, 21, 12, 201, 5, 32, 201, 16, 147, 195, 21, 50, 64, 68, 0, 12, 201, 12, 243,
-			148, 72, 245, 133, 73, 50, 65, 67, 0, 10, 199, 52, 20, 129, 80, 243, 133, 80, 20, 9, 198, 48, 83, 211, 80, 83, 133, 66, 9, 198,
-			16, 147, 143, 52, 83, 133, 66, 9, 198, 8, 243, 7, 32, 84, 137, 65, 0, 6, 195, 104, 243, 133, 21, 7, 195, 24, 244, 137, 20, 9,
-			7, 196, 76, 240, 195, 36, 20, 6, 195, 24, 244, 137, 66, 0, 12, 201, 16, 83, 65, 72, 85, 5, 36, 243, 128, 21, 0, 10, 198, 88,
-			145, 197, 88, 19, 128, 66, 20, 9, 198, 24, 83, 143, 52, 83, 128, 66, 9, 198, 21, 69, 1, 28, 243, 128, 66, 10, 198, 21, 4, 201,
-			48, 243, 128, 65, 20, 9, 198, 8, 20, 137, 80, 243, 128, 66, 0, 6, 195, 28, 80, 192, 20, 0, 7, 196, 81, 80, 133, 72, 65, 7,
-			196, 52, 242, 82, 20, 67, 13, 68, 12, 144, 78, 20, 76, 6, 37, 35, 50, 36, 0, 0, 8, 197, 81, 32, 70, 36, 192, 66, 8, 197,
-			13, 33, 83, 60, 192, 66, 8, 197, 12, 243, 132, 60, 224, 21, 0, 6, 195, 76, 80, 195, 21, 9, 198, 64, 193, 85, 72, 144, 192, 65,
-			6, 195, 12, 80, 195, 21, 0, 10, 199, 80, 83, 5, 48, 21, 143, 72, 21, 10, 199, 36, 229, 5, 73, 50, 78, 16, 67, 0, 6, 195,
-			12, 80, 193, 20, 7, 196, 88, 81, 204, 36, 20, 7, 196, 76, 241, 204, 36, 20, 11, 200, 60, 197, 18, 20, 240, 197, 4, 224, 68, 7,
-			196, 53, 81, 148, 36, 66, 7, 196, 48, 147, 73, 56, 65, 0, 12, 201, 76, 83, 142, 4, 50, 5, 72, 144, 128, 68, 7, 195, 20, 32,
-			78, 65, 20, 12, 201, 12, 243, 80, 72, 21, 133, 56, 66, 84, 67, 0, 6, 195, 60, 225, 71, 20, 9, 198, 36, 65, 78, 80, 144, 192,
-			20, 9, 198, 21, 64, 77, 64, 84, 192, 65, 9, 198, 4, 229, 9, 48, 240, 192, 66, 9, 198, 4, 225, 18, 20, 148, 192, 66, 0, 9,
-			198, 76, 19, 80, 21, 148, 133, 66, 6, 195, 72, 241, 192, 20, 0, 7, 196, 77, 83, 12, 60, 72, 0, 8, 197, 104, 83, 154, 21, 32,
-			65, 9, 198, 88, 147, 12, 5, 35, 211, 20, 8, 197, 9, 84, 130, 21, 32, 65, 8, 197, 8, 84, 130, 21, 32, 65, 0, 10, 198, 24,
-			145, 83, 60, 193, 64, 65, 20, 9, 198, 24, 145, 78, 36, 193, 64, 66, 0, 14, 5, 19, 1, 18, 195, 178, 89, 108, 34, 6, 110, 0,
-			72, 10, 199, 21, 5, 1, 72, 50, 9, 4, 67, 0, 7, 196, 76, 83, 79, 48, 65, 6, 195, 72, 129, 65, 21, 7, 196, 48, 81, 199,
-			20, 21, 0, 8, 197, 76, 48, 80, 37, 64, 65, 6, 195, 64, 83, 0, 21, 6, 195, 64, 83, 0, 21, 9, 197, 52, 245, 13, 61, 64,
-			66, 20, 12, 201, 21, 2, 71, 48, 245, 20, 36, 65, 64, 20, 8, 197, 12, 19, 1, 9, 32, 65, 8, 197, 4, 112, 80, 37, 64, 66,
-			0, 9, 198, 5, 100, 133, 8, 33, 64, 72, 9, 198, 88, 84, 135, 36, 225, 64, 21, 9, 198, 76, 245, 20, 36, 193, 64, 66, 9, 198,
-			24, 149, 15, 24, 17, 192, 66, 9, 198, 16, 19, 79, 12, 193, 64, 65, 9, 198, 12, 84, 131, 36, 225, 64, 21, 9, 198, 12, 20, 205,
-			20, 225, 64, 65, 9, 198, 4, 227, 198, 20, 193, 64, 66, 0, 6, 195, 64, 81, 0, 20, 9, 198, 16, 144, 71, 56, 244, 201, 66, 0,
-			11, 200, 88, 84, 212, 20, 224, 78, 61, 96, 20, 7, 196, 76, 145, 193, 72, 65, 7, 196, 64, 145, 68, 20, 20, 11, 200, 12, 148, 131,
-			60, 49, 78, 81, 32, 20, 6, 195, 4, 34, 65, 66, 0, 8, 197, 5, 97, 83, 76, 80, 72, 9, 197, 88, 83, 133, 80, 144, 65, 20,
-			8, 197, 76, 241, 204, 36, 16, 20, 8, 197, 76, 19, 5, 52, 144, 20, 8, 197, 72, 144, 197, 72, 48, 21, 8, 197, 64, 244, 212, 84,
-			208, 65, 8, 197, 36, 208, 143, 12, 48, 21, 8, 197, 36, 68, 143, 64, 80, 65, 8, 197, 28, 83, 133, 88, 80, 20, 8, 197, 28, 19,
-			69, 80, 80, 20, 8, 197, 25, 81, 193, 12, 80, 66, 8, 197, 21, 34, 84, 20, 208, 20, 8, 197, 4, 193, 83, 76, 144, 20, 8, 197,
-			4, 115, 129, 80, 144, 65, 0, 9, 198, 88, 83, 133, 72, 66, 64, 67, 9, 198, 85, 52, 197, 28, 194, 64, 20, 9, 198, 80, 85, 84,
-			60, 226, 64, 65, 9, 198, 77, 3, 5, 56, 66, 68, 20, 9, 198, 28, 149, 71, 28, 147, 204, 65, 9, 198, 21, 2, 83, 60, 66, 64,
-			20, 9, 198, 5, 4, 15, 76, 149, 0, 66, 0, 9, 198, 104, 243, 198, 36, 194, 65, 68, 10, 199, 72, 144, 195, 60, 35, 206, 36, 20,
-			10, 199, 12, 83, 148, 85, 34, 80, 20, 66, 0, 8, 196, 64, 83, 206, 36, 65, 9, 11, 200, 80, 20, 132, 36, 116, 129, 16, 144, 66,
-			8, 196, 76, 83, 73, 56, 65, 21, 7, 196, 64, 19, 73, 72, 66, 6, 195, 56, 245, 137, 20, 7, 196, 56, 243, 73, 56, 65, 7, 196,
-			52, 16, 193, 12, 66, 11, 200, 8, 20, 137, 80, 243, 133, 76, 144, 20, 0, 8, 197, 76, 83, 80, 72, 80, 20, 6, 195, 72, 246, 154,
-			21, 8, 197, 65, 33, 77, 36, 16, 65, 9, 197, 48, 83, 85, 72, 144, 65, 20, 8, 197, 32, 243, 143, 72, 80, 67, 8, 197, 25, 84,
-			148, 20, 144, 66, 8, 197, 24, 83, 142, 20, 48, 20, 8, 197, 8, 20, 212, 36, 16, 65, 8, 197, 4, 194, 78, 20, 16, 66, 0, 9,
-			198, 64, 149, 5, 28, 194, 64, 20, 12, 201, 52, 144, 210, 60, 49, 70, 4, 194, 65, 69, 0, 6, 195, 52, 147, 192, 72, 9, 198, 76,
-			147, 148, 60, 226, 65, 67, 9, 198, 76, 19, 13, 60, 66, 65, 67, 10, 199, 20, 195, 5, 56, 144, 200, 20, 20, 0, 9, 198, 81, 33,
-			86, 37, 48, 78, 67, 12, 200, 16, 147, 143, 12, 81, 129, 48, 144, 67, 20, 0, 0, 22, 4, 95, 3, 9, 18, 76, 37, 38, 14, 16,
-			49, 39, 50, 83, 55, 6, 36, 89, 89, 39, 0, 0, 9, 198, 105, 80, 195, 32, 84, 137, 65, 10, 199, 77, 80, 131, 60, 228, 195, 36,
-			20, 9, 198, 8, 147, 1, 80, 84, 137, 66, 0, 7, 196, 64, 241, 199, 36, 20, 9, 198, 8, 240, 195, 4, 225, 82, 21, 0, 8, 133,
-			19, 1, 18, 195, 160, 72, 9, 198, 76, 20, 146, 4, 37, 83, 65, 0, 9, 198, 5, 100, 133, 52, 211, 192, 72, 9, 198, 76, 20, 133,
-			52, 211, 192, 72, 10, 198, 60, 210, 67, 72, 243, 128, 65, 20, 5, 194, 60, 128, 20, 6, 195, 8, 244, 195, 20, 0, 10, 67, 36, 20,
-			192, 37, 35, 88, 0, 65, 6, 195, 72, 244, 192, 20, 10, 199, 52, 85, 1, 8, 243, 9, 80, 67, 6, 195, 8, 244, 192, 20, 0, 7,
-			196, 52, 86, 9, 12, 21, 0, 8, 197, 24, 19, 3, 60, 224, 66, 0, 9, 198, 81, 34, 67, 32, 80, 192, 20, 9, 198, 13, 80, 213,
-			72, 34, 84, 66, 9, 198, 4, 229, 9, 28, 20, 192, 67, 0, 10, 199, 80, 148, 129, 64, 145, 68, 36, 20, 10, 199, 16, 241, 5, 12,
-			17, 207, 56, 67, 6, 195, 12, 84, 192, 20, 10, 199, 12, 20, 193, 48, 35, 210, 20, 66, 9, 198, 5, 37, 5, 24, 144, 197, 21, 6,
-			195, 4, 34, 84, 65, 0, 7, 196, 76, 51, 208, 4, 21, 6, 131, 95, 195, 185, 43, 7, 196, 84, 192, 197, 72, 65, 7, 196, 76, 16,
-			200, 4, 66, 6, 195, 72, 244, 197, 66, 7, 196, 72, 83, 79, 72, 65, 7, 196, 64, 193, 66, 20, 20, 7, 196, 60, 48, 200, 36, 20,
-			7, 196, 52, 16, 193, 60, 66, 7, 196, 12, 16, 193, 60, 66, 0, 8, 197, 64, 20, 212, 20, 224, 65, 9, 198, 60, 211, 199, 20, 225,
-			79, 67, 8, 197, 24, 16, 137, 60, 192, 66, 0, 9, 198, 76, 83, 65, 24, 244, 128, 66, 9, 198, 36, 115, 137, 80, 244, 128, 65, 0,
-			13, 4, 95, 19, 20, 11, 71, 6, 35, 51, 16, 35, 0, 12, 201, 9, 35, 195, 12, 244, 212, 20, 195, 0, 21, 0, 7, 196, 76, 80,
-			207, 48, 20, 7, 196, 64, 240, 207, 48, 66, 0, 14, 4, 95, 1, 3, 21, 35, 49, 6, 40, 12, 47, 39, 0, 6, 131, 95, 195, 178,
-			43, 8, 197, 64, 84, 132, 37, 64, 65, 6, 195, 28, 83, 214, 65, 0, 6, 131, 95, 195, 179, 43, 9, 198, 100, 19, 213, 56, 65, 64,
-			68, 9, 198, 21, 65, 79, 12, 193, 64, 66, 9, 198, 8, 21, 9, 12, 193, 64, 65, 0, 10, 199, 64, 81, 9, 5, 68, 137, 4, 67,
-			0, 9, 198, 81, 84, 130, 60, 96, 78, 67, 7, 196, 72, 83, 79, 80, 20, 6, 195, 12, 84, 201, 20, 7, 196, 5, 33, 5, 4, 65,
-			7, 196, 4, 225, 207, 48, 66, 0, 8, 197, 77, 64, 83, 21, 32, 21, 12, 201, 76, 83, 80, 72, 85, 133, 72, 65, 64, 21, 6, 195,
-			48, 243, 0, 20, 0, 6, 194, 48, 240, 72, 9, 9, 198, 77, 81, 134, 21, 69, 0, 20, 9, 198, 76, 147, 132, 60, 225, 64, 65, 9,
-			198, 12, 194, 77, 20, 225, 64, 65, 0, 6, 131, 95, 195, 172, 43, 10, 199, 80, 83, 195, 72, 22, 137, 4, 68, 6, 195, 48, 241, 0,
-			20, 9, 198, 25, 37, 84, 80, 244, 201, 20, 10, 198, 12, 147, 133, 8, 246, 0, 67, 20, 6, 195, 12, 84, 212, 21, 10, 199, 5, 84,
-			212, 72, 20, 201, 4, 67, 10, 199, 5, 37, 5, 52, 148, 201, 4, 67, 0, 12, 201, 88, 147, 12, 5, 52, 5, 12, 147, 211, 21, 7,
-			196, 52, 16, 197, 72, 65, 7, 196, 8, 16, 197, 56, 21, 0, 8, 197, 69, 81, 83, 80, 16, 72, 8, 197, 88, 149, 129, 12, 80, 66,
-			8, 197, 65, 35, 197, 52, 144, 20, 8, 197, 56, 80, 195, 32, 144, 20, 8, 197, 52, 83, 133, 12, 208, 20, 8, 197, 24, 148, 195, 32,
-			144, 66, 8, 197, 21, 52, 197, 72, 80, 20, 8, 197, 16, 144, 68, 20, 208, 20, 8, 197, 12, 240, 195, 32, 144, 20, 9, 197, 8, 241,
-			77, 36, 16, 66, 20, 8, 197, 5, 81, 1, 12, 80, 67, 8, 197, 5, 49, 80, 76, 144, 20, 8, 197, 4, 212, 5, 72, 80, 66, 8,
-			197, 4, 195, 21, 12, 80, 65, 0, 10, 198, 76, 84, 85, 4, 226, 64, 65, 20, 9, 198, 72, 83, 211, 80, 21, 0, 66, 9, 198, 64,
-			84, 20, 36, 66, 64, 20, 9, 198, 36, 225, 207, 8, 34, 64, 20, 0, 14, 4, 95, 18, 14, 7, 35, 50, 6, 36, 55, 55, 39, 0,
-			6, 131, 95, 195, 168, 43, 10, 199, 81, 33, 80, 64, 145, 68, 20, 20, 10, 199, 76, 16, 197, 72, 67, 212, 20, 20, 9, 198, 52, 84,
-			211, 20, 226, 65, 20, 6, 195, 48, 245, 0, 20, 9, 198, 36, 98, 71, 20, 226, 65, 68, 9, 198, 16, 144, 82, 12, 130, 65, 67, 10,
-			199, 12, 244, 148, 20, 229, 79, 88, 20, 10, 199, 8, 244, 195, 36, 208, 78, 36, 66, 10, 199, 5, 32, 200, 36, 209, 68, 20, 20, 0,
-			6, 131, 95, 195, 169, 43, 7, 196, 48, 147, 79, 56, 66, 6, 195, 28, 84, 213, 66, 12, 201, 12, 20, 148, 36, 192, 71, 36, 225, 79,
-			68, 9, 198, 5, 84, 212, 72, 19, 0, 67, 0, 8, 197, 4, 115, 211, 80, 16, 65, 8, 197, 88, 244, 212, 72, 16, 72, 8, 197, 56,
-			244, 212, 72, 16, 72, 9, 198, 80, 19, 135, 4, 226, 67, 67, 8, 197, 61, 33, 9, 56, 80, 21, 8, 197, 52, 242, 5, 48, 144, 21,
-			8, 197, 20, 195, 209, 84, 144, 20, 8, 197, 4, 227, 205, 20, 144, 67, 0, 9, 198, 72, 145, 15, 48, 98, 64, 20, 9, 198, 72, 85,
-			15, 72, 34, 68, 21, 9, 198, 5, 37, 5, 72, 147, 204, 67, 0, 29, 67, 33, 69, 16, 6, 35, 49, 12, 35, 47, 4, 37, 12, 47,
-			4, 37, 12, 48, 6, 37, 12, 10, 0, 81, 58, 47, 47, 32, 9, 198, 72, 20, 19, 60, 66, 65, 67, 9, 198, 24, 149, 15, 24, 17,
-			201, 66, 10, 199, 12, 20, 142, 37, 99, 210, 36, 66, 0, 7, 196, 72, 241, 201, 80, 65, 7, 196, 24, 16, 197, 80, 20, 7, 196, 16,
-			145, 67, 36, 20, 11, 200, 12, 83, 148, 61, 2, 69, 16, 144, 20, 6, 195, 8, 244, 201, 20, 7, 196, 4, 192, 193, 52, 65, 12, 200,
-			4, 112, 77, 20, 227, 143, 56, 80, 67, 20, 0, 0, 0, 6, 131, 95, 195, 160, 43, 9, 198, 76, 19, 21, 16, 80, 201, 20, 9, 198,
-			52, 85, 1, 80, 84, 201, 66, 0, 12, 68, 48, 81, 199, 36, 55, 36, 75, 6, 37, 0, 10, 198, 104, 84, 16, 20, 194, 78, 65, 20,
-			7, 196, 76, 81, 199, 36, 20, 7, 196, 72, 16, 197, 52, 20, 7, 196, 52, 241, 199, 36, 20, 0, 9, 197, 52, 82, 206, 21, 48, 66,
-			20, 6, 195, 5, 32, 66, 65, 0, 9, 198, 64, 148, 137, 80, 243, 192, 66, 9, 198, 56, 20, 195, 61, 53, 0, 21, 0, 10, 199, 64,
-			148, 201, 77, 68, 129, 80, 66, 10, 199, 24, 147, 15, 77, 68, 129, 80, 66, 9, 198, 9, 34, 78, 16, 148, 201, 65, 0, 6, 195, 20,
-			32, 133, 72, 7, 196, 104, 17, 193, 72, 65, 7, 196, 80, 83, 80, 36, 20, 6, 195, 76, 241, 9, 20, 9, 198, 64, 20, 129, 29, 32,
-			70, 66, 6, 195, 60, 115, 9, 20, 7, 196, 24, 145, 193, 72, 65, 6, 195, 4, 32, 129, 66, 0, 8, 197, 77, 2, 78, 60, 192, 65,
-			0, 9, 198, 8, 20, 130, 21, 32, 64, 66, 9, 198, 77, 3, 210, 60, 98, 84, 66, 12, 201, 64, 84, 132, 5, 49, 5, 24, 241, 213,
-			20, 9, 198, 48, 144, 133, 73, 64, 64, 67, 9, 198, 12, 148, 18, 21, 52, 192, 20, 0, 7, 195, 21, 32, 64, 72, 9, 9, 198, 88,
-			84, 148, 20, 36, 133, 65, 6, 195, 64, 83, 12, 21, 0, 6, 195, 77, 83, 201, 72, 9, 198, 64, 243, 9, 77, 65, 78, 66, 7, 196,
-			61, 33, 129, 56, 65, 7, 196, 60, 49, 65, 56, 66, 7, 196, 52, 240, 200, 36, 20, 7, 196, 28, 129, 68, 36, 20, 11, 200, 21, 33,
-			207, 77, 65, 82, 60, 192, 68, 8, 196, 8, 145, 206, 20, 66, 20, 7, 196, 4, 225, 207, 72, 65, 7, 196, 4, 192, 207, 88, 20, 0,
-			8, 197, 76, 48, 84, 60, 192, 65, 12, 201, 65, 35, 212, 60, 49, 82, 20, 36, 128, 67, 0, 9, 198, 88, 84, 148, 20, 36, 128, 65,
-			0, 10, 199, 52, 245, 15, 13, 35, 211, 76, 67, 0, 7, 196, 64, 145, 67, 20, 20, 7, 196, 61, 33, 133, 36, 66, 6, 195, 5, 33,
-			65, 65, 0, 12, 201, 52, 19, 5, 88, 243, 5, 57, 160, 64, 8, 8, 197, 88, 84, 195, 61, 96, 65, 6, 195, 21, 33, 66, 65, 9,
-			197, 8, 244, 198, 61, 32, 65, 20, 0, 23, 4, 95, 1, 3, 50, 72, 6, 39, 48, 12, 37, 38, 39, 23, 35, 49, 6, 40, 12, 47,
-			39, 0, 9, 198, 76, 83, 137, 61, 33, 64, 20, 9, 198, 52, 20, 141, 61, 33, 64, 65, 9, 198, 16, 243, 3, 21, 69, 0, 21, 9,
-			198, 16, 144, 66, 21, 65, 64, 20, 0, 10, 199, 61, 37, 15, 64, 81, 9, 4, 68, 0, 6, 195, 20, 32, 137, 72, 7, 196, 64, 145,
-			68, 72, 20, 11, 200, 5, 32, 201, 88, 84, 195, 61, 96, 67, 0, 6, 195, 52, 243, 0, 20, 6, 195, 52, 243, 0, 20, 8, 197, 52,
-			20, 141, 5, 32, 65, 8, 197, 13, 34, 67, 21, 64, 20, 0, 9, 198, 5, 100, 133, 77, 65, 64, 72, 9, 198, 17, 84, 129, 57, 65,
-			64, 8, 9, 198, 81, 32, 68, 61, 69, 0, 21, 6, 195, 72, 244, 211, 21, 6, 195, 72, 244, 211, 21, 0, 9, 198, 77, 66, 71, 52,
-			21, 5, 65, 6, 195, 72, 244, 208, 20, 6, 195, 52, 241, 0, 20, 6, 195, 52, 241, 0, 20, 10, 199, 37, 51, 208, 76, 81, 137, 4,
-			68, 9, 198, 20, 228, 195, 32, 81, 5, 67, 9, 198, 12, 243, 85, 56, 149, 1, 68, 0, 7, 196, 76, 144, 77, 60, 72, 8, 196, 76,
-			244, 18, 4, 76, 28, 7, 196, 80, 83, 80, 20, 20, 9, 198, 76, 243, 1, 72, 243, 0, 67, 9, 198, 64, 243, 9, 28, 19, 0, 66,
-			7, 196, 52, 241, 193, 56, 65, 6, 195, 21, 33, 77, 65, 0, 8, 197, 4, 195, 15, 72, 16, 21, 8, 197, 5, 97, 83, 76, 144, 72,
-			8, 197, 81, 32, 66, 36, 16, 66, 8, 197, 76, 83, 73, 16, 144, 67, 9, 197, 76, 19, 15, 52, 80, 67, 20, 8, 197, 65, 35, 206,
-			4, 240, 20, 6, 195, 20, 32, 146, 20, 8, 197, 12, 20, 129, 12, 240, 67, 6, 195, 5, 33, 78, 21, 9, 198, 4, 193, 197, 9, 34,
-			67, 20, 0, 9, 198, 76, 147, 5, 57, 162, 64, 20, 6, 195, 76, 84, 211, 20, 9, 198, 52, 243, 143, 64, 244, 212, 21, 9, 198, 36,
-			228, 85, 36, 85, 0, 20, 9, 198, 8, 84, 130, 21, 34, 64, 65, 0, 7, 195, 21, 34, 64, 72, 9, 10, 199, 56, 242, 67, 5, 69,
-			1, 72, 67, 6, 195, 52, 245, 0, 20, 6, 195, 52, 245, 0, 20, 6, 195, 12, 243, 12, 21, 6, 195, 12, 243, 12, 21, 10, 199, 12,
-			20, 193, 80, 83, 143, 88, 20, 9, 198, 12, 20, 135, 20, 114, 5, 20, 10, 199, 12, 20, 1, 56, 227, 210, 36, 66, 9, 198, 4, 225,
-			137, 64, 243, 9, 66, 0, 7, 196, 76, 147, 85, 56, 66, 7, 196, 72, 85, 143, 12, 65, 9, 198, 52, 85, 1, 56, 243, 0, 67, 7,
-			196, 8, 86, 154, 36, 20, 7, 196, 4, 192, 207, 72, 66, 0, 8, 197, 64, 84, 211, 36, 208, 20, 9, 198, 52, 20, 141, 61, 33, 79,
-			66, 8, 197, 12, 130, 69, 76, 80, 20, 8, 197, 5, 160, 82, 36, 16, 67, 8, 197, 5, 96, 82, 36, 16, 67, 8, 197, 5, 37, 5,
-			52, 144, 20, 8, 197, 4, 224, 84, 20, 208, 20, 0, 9, 198, 5, 100, 133, 77, 66, 64, 72, 9, 198, 77, 1, 84, 81, 34, 64, 20,
-			14, 202, 56, 16, 149, 12, 241, 15, 56, 244, 207, 72, 68, 20, 9, 198, 52, 243, 132, 61, 98, 64, 67, 0, 12, 201, 76, 19, 80, 36,
-			84, 132, 5, 33, 78, 21, 9, 198, 65, 35, 199, 20, 226, 69, 20, 9, 198, 13, 35, 195, 21, 98, 65, 67, 9, 198, 12, 244, 132, 60,
-			115, 9, 20, 0, 7, 196, 76, 144, 78, 60, 72, 11, 200, 52, 19, 9, 56, 53, 79, 72, 80, 20, 11, 200, 48, 84, 212, 72, 145, 207,
-			56, 144, 66, 12, 201, 24, 245, 15, 20, 193, 84, 81, 34, 67, 20, 7, 196, 24, 81, 193, 80, 65, 7, 196, 21, 81, 5, 52, 20, 6,
-			195, 12, 243, 1, 66, 13, 68, 12, 144, 78, 60, 76, 6, 37, 35, 50, 39, 0, 7, 196, 9, 81, 129, 48, 65, 0, 0, 0, 6, 195,
-			77, 83, 192, 72, 9, 198, 81, 34, 83, 12, 83, 5, 65, 6, 195, 76, 243, 4, 20, 9, 198, 52, 20, 211, 20, 230, 137, 20, 10, 198,
-			37, 51, 211, 12, 83, 5, 66, 20, 9, 198, 24, 80, 130, 72, 147, 5, 66, 10, 199, 20, 51, 211, 37, 53, 5, 52, 20, 9, 198, 5,
-			4, 18, 60, 48, 201, 20, 0, 7, 196, 76, 17, 193, 52, 65, 7, 196, 64, 81, 199, 36, 20, 7, 196, 61, 32, 137, 80, 65, 7, 196,
-			4, 225, 197, 48, 65, 7, 196, 4, 225, 197, 48, 65, 0, 0, 0, 10, 199, 65, 34, 86, 36, 193, 71, 36, 20, 9, 198, 64, 147, 143,
-			12, 50, 9, 20, 10, 199, 8, 17, 206, 61, 33, 71, 36, 20, 0, 7, 196, 88, 84, 18, 20, 20, 8, 196, 60, 96, 78, 80, 65, 20,
-			7, 196, 24, 147, 206, 16, 21, 7, 196, 20, 227, 206, 20, 20, 6, 195, 12, 245, 9, 20, 6, 195, 8, 19, 9, 66, 7, 196, 4, 112,
-			86, 20, 65, 0, 8, 197, 56, 83, 77, 20, 224, 21, 8, 197, 52, 21, 18, 60, 224, 20, 8, 197, 20, 117, 77, 20, 224, 66, 10, 198,
-			5, 33, 197, 57, 65, 79, 66, 20, 0, 9, 198, 64, 241, 5, 77, 64, 64, 67, 0, 10, 199, 76, 83, 5, 84, 50, 68, 36, 66, 9,
-			198, 52, 81, 193, 64, 241, 9, 20, 10, 199, 20, 194, 67, 61, 69, 5, 72, 20, 9, 198, 12, 243, 150, 60, 115, 9, 20, 0, 7, 196,
-			16, 81, 204, 36, 72, 7, 196, 16, 17, 204, 36, 72, 7, 196, 76, 21, 143, 12, 65, 7, 195, 72, 20, 5, 66, 20, 6, 195, 56, 21,
-			9, 66, 6, 195, 28, 245, 9, 20, 6, 195, 13, 83, 201, 20, 0, 8, 197, 88, 22, 154, 60, 192, 66, 8, 197, 61, 34, 71, 4, 224,
-			66, 8, 197, 24, 20, 147, 4, 192, 65, 8, 197, 12, 20, 211, 4, 192, 65, 0, 9, 198, 81, 34, 78, 37, 64, 64, 67, 9, 198, 24,
-			19, 13, 20, 229, 0, 20, 9, 198, 12, 243, 135, 20, 226, 84, 66, 9, 198, 12, 21, 20, 20, 68, 128, 65, 0, 9, 198, 24, 147, 9,
-			77, 65, 73, 67, 0, 6, 195, 24, 21, 5, 76, 6, 195, 88, 21, 5, 66, 7, 196, 76, 209, 71, 52, 20, 6, 195, 64, 84, 9, 20,
-			7, 196, 48, 19, 73, 4, 65, 0, 9, 198, 88, 145, 5, 61, 65, 67, 20, 8, 197, 52, 16, 193, 9, 32, 65, 9, 198, 28, 148, 19,
-			61, 65, 67, 20, 8, 197, 20, 193, 84, 81, 32, 20, 8, 197, 20, 193, 84, 81, 32, 20, 0, 9, 198, 52, 20, 148, 37, 33, 64, 65,
-			9, 198, 49, 81, 213, 9, 33, 64, 65, 9, 198, 12, 83, 5, 9, 33, 64, 65, 0, 10, 199, 76, 81, 206, 5, 3, 211, 80, 21, 9,
-			198, 65, 32, 83, 76, 81, 5, 20, 9, 198, 48, 144, 207, 52, 81, 5, 20, 10, 199, 20, 229, 21, 76, 144, 83, 52, 68, 10, 199, 16,
-			148, 212, 72, 241, 137, 4, 67, 9, 198, 12, 19, 148, 4, 36, 137, 65, 9, 198, 12, 19, 1, 52, 149, 1, 68, 0, 7, 196, 80, 83,
-			80, 72, 20, 12, 201, 72, 240, 195, 4, 115, 15, 72, 147, 211, 21, 6, 195, 72, 21, 5, 66, 9, 198, 20, 225, 15, 13, 34, 78, 66,
-			7, 196, 16, 145, 68, 72, 20, 6, 195, 12, 245, 5, 20, 7, 196, 12, 243, 79, 16, 65, 7, 196, 8, 145, 201, 4, 65, 7, 196, 4,
-			194, 67, 20, 66, 0, 8, 197, 77, 81, 200, 21, 32, 65, 8, 197, 72, 148, 18, 61, 96, 20, 8, 197, 72, 145, 15, 81, 64, 21, 12,
-			201, 64, 144, 90, 104, 21, 15, 73, 33, 64, 21, 6, 195, 56, 243, 0, 20, 8, 197, 37, 51, 194, 5, 32, 66, 8, 197, 12, 243, 12,
-			21, 32, 20, 0, 7, 66, 56, 240, 50, 110, 0, 9, 198, 5, 97, 86, 5, 65, 64, 72, 9, 198, 21, 32, 86, 5, 65, 64, 72, 5,
-			194, 76, 80, 8, 9, 198, 61, 69, 15, 9, 33, 64, 21, 5, 194, 60, 208, 20, 0, 9, 198, 65, 34, 78, 12, 148, 9, 65, 9, 198,
-			72, 19, 143, 12, 50, 9, 20, 9, 198, 65, 34, 78, 12, 148, 9, 66, 10, 199, 64, 243, 148, 20, 98, 67, 20, 21, 6, 195, 56, 241,
-			0, 20, 9, 198, 28, 195, 212, 80, 145, 5, 20, 10, 199, 16, 241, 5, 12, 17, 68, 72, 20, 10, 199, 12, 243, 147, 20, 194, 67, 20,
-			21, 9, 198, 12, 19, 69, 24, 149, 5, 66, 10, 199, 5, 4, 5, 56, 66, 67, 20, 67, 0, 7, 196, 72, 144, 201, 56, 65, 8, 196,
-			64, 80, 207, 72, 65, 20, 7, 196, 52, 242, 197, 56, 20, 8, 196, 20, 48, 84, 20, 65, 20, 7, 196, 12, 144, 197, 72, 65, 7, 196,
-			5, 33, 1, 72, 65, 7, 196, 4, 48, 82, 36, 65, 0, 9, 197, 88, 144, 193, 72, 144, 65, 9, 8, 197, 5, 97, 83, 80, 80, 72,
-			8, 197, 5, 97, 83, 80, 80, 72, 8, 197, 69, 81, 83, 80, 80, 72, 14, 2, 194, 163, 89, 47, 36, 34, 55, 6, 37, 50, 35, 0,
-			8, 197, 104, 145, 207, 80, 80, 20, 8, 197, 88, 240, 130, 36, 16, 20, 8, 197, 84, 226, 86, 60, 48, 66, 8, 197, 80, 19, 73, 28,
-			144, 66, 12, 201, 65, 33, 77, 36, 192, 213, 61, 33, 64, 20, 8, 197, 64, 84, 135, 4, 208, 65, 9, 197, 64, 80, 193, 72, 144, 65,
-			20, 8, 197, 37, 69, 9, 72, 144, 65, 8, 197, 5, 48, 193, 72, 144, 65, 0, 9, 198, 80, 147, 132, 5, 34, 64, 65, 9, 198, 80,
-			20, 148, 5, 34, 64, 65, 9, 198, 65, 33, 83, 21, 2, 64, 20, 9, 198, 36, 195, 5, 12, 149, 0, 66, 13, 202, 36, 51, 211, 37,
-			65, 84, 72, 17, 68, 72, 20, 10, 198, 17, 33, 78, 28, 245, 0, 66, 20, 9, 198, 16, 148, 208, 5, 34, 64, 65, 9, 198, 5, 52,
-			197, 57, 162, 64, 20, 0, 10, 198, 88, 84, 218, 65, 33, 77, 66, 21, 10, 199, 76, 83, 5, 84, 50, 68, 20, 66, 6, 195, 56, 245,
-			0, 20, 6, 195, 56, 245, 0, 20, 9, 198, 52, 243, 146, 61, 98, 65, 20, 9, 198, 37, 51, 212, 61, 2, 65, 68, 9, 198, 24, 84,
-			146, 61, 98, 65, 67, 6, 195, 12, 244, 20, 20, 9, 198, 12, 244, 5, 64, 241, 9, 20, 0, 16, 7, 3, 12, 9, 3, 8, 195, 169,
-			49, 55, 37, 12, 91, 36, 0, 7, 196, 80, 83, 80, 48, 20, 9, 198, 76, 50, 65, 8, 243, 0, 65, 11, 200, 72, 244, 1, 48, 240,
-			197, 72, 144, 67, 11, 200, 53, 83, 20, 36, 85, 14, 36, 48, 20, 11, 200, 37, 1, 82, 76, 243, 142, 36, 16, 68, 7, 196, 28, 83,
-			73, 56, 65, 0, 8, 197, 5, 97, 77, 52, 240, 72, 6, 195, 77, 83, 0, 72, 8, 197, 88, 244, 212, 72, 80, 72, 8, 197, 56, 244,
-			212, 72, 80, 72, 9, 198, 76, 243, 12, 21, 66, 67, 21, 8, 197, 37, 35, 206, 36, 16, 67, 8, 197, 4, 65, 15, 52, 80, 20, 0,
-			6, 194, 77, 80, 72, 9, 9, 198, 77, 68, 143, 57, 162, 64, 20, 12, 201, 64, 145, 84, 72, 20, 5, 73, 162, 65, 68, 12, 201, 52,
-			84, 137, 80, 240, 210, 5, 162, 65, 69, 12, 201, 37, 1, 82, 52, 85, 18, 61, 2, 65, 69, 9, 198, 25, 84, 142, 5, 34, 64, 65,
-			9, 198, 8, 148, 212, 85, 34, 64, 65, 12, 201, 5, 34, 83, 80, 240, 210, 5, 162, 65, 69, 0, 9, 198, 65, 35, 198, 21, 162, 65,
-			67, 9, 198, 64, 244, 134, 37, 34, 65, 67, 9, 198, 52, 241, 5, 77, 66, 65, 66, 6, 195, 48, 85, 20, 20, 9, 198, 20, 229, 1,
-			49, 2, 65, 67, 9, 198, 12, 20, 208, 21, 34, 65, 66, 9, 198, 4, 195, 5, 29, 34, 65, 67, 0, 7, 196, 80, 16, 201, 80, 65,
-			7, 196, 72, 80, 201, 80, 65, 9, 198, 36, 51, 211, 4, 81, 18, 20, 7, 196, 28, 227, 205, 20, 20, 0, 15, 204, 76, 240, 201, 4,
-			193, 5, 52, 240, 210, 5, 162, 65, 70, 9, 198, 12, 20, 15, 49, 83, 199, 20, 0, 9, 198, 36, 225, 9, 72, 85, 20, 20, 9, 198,
-			16, 148, 208, 61, 53, 0, 21, 9, 198, 9, 32, 67, 12, 85, 20, 21, 0, 13, 2, 194, 169, 49, 6, 39, 48, 37, 34, 117, 47, 0,
-			9, 198, 85, 65, 78, 76, 147, 5, 67, 9, 198, 52, 19, 143, 12, 50, 9, 20, 0, 0, 6, 195, 72, 16, 66, 66, 0, 12, 201, 72,
-			243, 80, 37, 48, 193, 80, 243, 5, 67, 9, 198, 60, 193, 79, 16, 245, 20, 21, 9, 198, 12, 19, 1, 76, 85, 20, 20, 0, 0, 7,
-			196, 64, 244, 16, 36, 21, 6, 195, 21, 32, 133, 66, 0, 8, 197, 100, 18, 23, 20, 128, 66, 8, 197, 12, 20, 131, 4, 224, 65, 0,
-			7, 2, 195, 168, 109, 0, 72, 9, 198, 76, 50, 79, 88, 144, 64, 66, 9, 198, 12, 84, 131, 32, 144, 64, 21, 9, 198, 4, 195, 5,
-			48, 144, 64, 67, 9, 198, 4, 193, 83, 76, 144, 64, 67, 0, 9, 198, 16, 80, 193, 64, 243, 9, 66, 0, 8, 196, 8, 17, 204, 36,
-			66, 9, 8, 196, 88, 84, 147, 60, 76, 28, 6, 195, 80, 83, 73, 20, 7, 196, 76, 21, 9, 72, 65, 7, 196, 64, 21, 9, 56, 65,
-			7, 196, 56, 147, 194, 20, 65, 8, 196, 24, 83, 73, 56, 65, 21, 7, 196, 12, 130, 78, 20, 66, 7, 196, 12, 130, 69, 76, 20, 12,
-			68, 8, 17, 204, 36, 71, 35, 61, 6, 37, 0, 0, 8, 197, 77, 2, 71, 60, 192, 65, 8, 197, 72, 20, 19, 60, 64, 66, 8, 197,
-			72, 20, 19, 60, 64, 20, 12, 201, 65, 50, 67, 32, 144, 84, 72, 144, 64, 67, 8, 197, 56, 245, 77, 20, 224, 66, 8, 197, 8, 19,
-			194, 4, 32, 67, 0, 9, 198, 80, 84, 129, 64, 144, 64, 67, 9, 198, 77, 3, 199, 48, 144, 64, 20, 9, 198, 76, 147, 79, 56, 144,
-			64, 67, 9, 198, 76, 19, 147, 13, 34, 84, 65, 9, 198, 76, 19, 65, 72, 144, 64, 67, 9, 198, 52, 243, 143, 16, 144, 64, 67, 9,
-			198, 21, 52, 12, 36, 50, 84, 66, 9, 198, 20, 208, 143, 48, 144, 64, 67, 9, 198, 5, 68, 143, 24, 144, 64, 67, 0, 8, 67, 4,
-			49, 64, 21, 0, 10, 10, 199, 76, 85, 20, 20, 208, 146, 20, 20, 9, 198, 36, 208, 146, 60, 115, 9, 20, 0, 14, 4, 95, 3, 5,
-			4, 76, 36, 72, 6, 37, 61, 35, 0, 9, 198, 88, 147, 12, 5, 51, 210, 67, 6, 195, 80, 83, 85, 66, 8, 196, 12, 130, 79, 16,
-			66, 20, 15, 204, 4, 229, 9, 65, 50, 67, 32, 144, 84, 72, 144, 64, 69, 0, 13, 201, 88, 19, 12, 20, 52, 143, 76, 144, 64, 67,
-			20, 8, 197, 80, 20, 129, 57, 64, 65, 8, 197, 77, 1, 84, 81, 32, 20, 12, 201, 56, 80, 210, 60, 208, 78, 104, 144, 64, 68, 12,
-			201, 36, 68, 143, 80, 84, 129, 64, 144, 64, 69, 12, 201, 24, 149, 15, 80, 84, 129, 64, 144, 64, 69, 12, 201, 16, 148, 208, 5, 33,
-			85, 56, 144, 64, 69, 12, 201, 12, 193, 80, 80, 243, 65, 56, 144, 64, 68, 8, 197, 12, 19, 148, 21, 32, 65, 8, 197, 12, 17, 134,
-			5, 32, 65, 12, 201, 5, 37, 5, 80, 84, 129, 64, 144, 64, 69, 0, 9, 198, 72, 148, 208, 21, 69, 0, 20, 9, 198, 16, 83, 148,
-			36, 49, 64, 20, 9, 198, 12, 243, 12, 21, 69, 0, 20, 0, 18, 4, 95, 12, 9, 7, 55, 4, 36, 81, 35, 47, 6, 40, 12, 51,
-			35, 0, 6, 195, 80, 83, 80, 20, 9, 198, 48, 21, 82, 20, 230, 137, 20, 10, 199, 36, 67, 204, 5, 68, 137, 4, 68, 9, 198, 28,
-			147, 143, 12, 50, 9, 20, 10, 199, 4, 227, 210, 21, 52, 201, 4, 68, 10, 199, 4, 208, 140, 36, 244, 9, 4, 68, 0, 7, 196, 76,
-			51, 210, 76, 21, 9, 198, 12, 84, 131, 60, 49, 66, 20, 8, 196, 12, 17, 206, 60, 66, 20, 0, 6, 195, 80, 83, 0, 21, 8, 197,
-			56, 81, 210, 5, 32, 66, 6, 195, 48, 83, 78, 20, 6, 195, 36, 48, 82, 65, 8, 197, 5, 65, 76, 21, 64, 20, 6, 195, 4, 48,
-			82, 65, 0, 5, 194, 80, 80, 20, 0, 7, 195, 12, 242, 64, 72, 9, 10, 199, 56, 245, 20, 21, 65, 77, 64, 20, 9, 198, 24, 147,
-			143, 12, 50, 9, 20, 10, 199, 20, 229, 21, 76, 144, 83, 80, 68, 10, 199, 12, 20, 142, 20, 98, 67, 20, 21, 0, 7, 196, 4, 224,
-			200, 20, 8, 11, 200, 80, 84, 154, 60, 113, 78, 37, 64, 67, 7, 196, 76, 85, 20, 20, 20, 7, 196, 76, 84, 18, 36, 20, 7, 196,
-			52, 81, 193, 72, 65, 6, 195, 28, 243, 77, 21, 6, 195, 28, 227, 205, 20, 14, 68, 24, 18, 78, 4, 83, 35, 6, 37, 12, 50, 35,
-			0, 0, 8, 197, 5, 100, 133, 52, 240, 72, 8, 197, 76, 20, 133, 52, 240, 72, 8, 197, 76, 21, 18, 5, 0, 65, 8, 197, 29, 32,
-			70, 20, 208, 20, 15, 69, 24, 197, 73, 16, 240, 83, 55, 6, 40, 37, 72, 39, 0, 8, 197, 20, 227, 212, 20, 48, 20, 8, 197, 12,
-			19, 143, 56, 80, 65, 8, 197, 12, 16, 195, 4, 208, 65, 0, 9, 198, 85, 38, 149, 48, 82, 64, 67, 13, 202, 81, 32, 78, 76, 48,
-			85, 12, 20, 201, 4, 68, 9, 198, 60, 195, 15, 48, 18, 64, 67, 9, 198, 56, 148, 195, 20, 210, 64, 20, 10, 198, 21, 52, 197, 72,
-			50, 64, 65, 20, 9, 198, 5, 51, 79, 56, 82, 64, 67, 0, 6, 195, 24, 18, 64, 76, 6, 195, 16, 82, 64, 72, 7, 195, 48, 82,
-			64, 76, 9, 10, 199, 64, 243, 9, 20, 68, 137, 12, 20, 10, 199, 24, 147, 15, 81, 65, 84, 20, 20, 10, 198, 12, 19, 66, 60, 114,
-			65, 66, 20, 0, 7, 196, 84, 197, 18, 4, 66, 6, 195, 76, 243, 77, 21, 7, 196, 60, 225, 193, 72, 65, 7, 196, 48, 19, 79, 56,
-			66, 7, 196, 16, 243, 73, 56, 65, 7, 196, 4, 194, 66, 36, 65, 0, 6, 195, 76, 227, 194, 20, 8, 197, 72, 245, 133, 72, 80, 21,
-			8, 197, 72, 81, 21, 12, 80, 65, 12, 201, 69, 80, 84, 80, 244, 132, 36, 50, 64, 21, 9, 198, 64, 19, 131, 72, 80, 83, 65, 8,
-			197, 21, 49, 77, 64, 144, 20, 9, 197, 16, 240, 204, 20, 16, 65, 20, 6, 195, 4, 49, 82, 65, 0, 8, 67, 4, 49, 83, 21, 0,
-			10, 6, 194, 81, 80, 76, 9, 9, 198, 64, 148, 133, 56, 82, 64, 67, 9, 198, 61, 35, 204, 60, 114, 64, 20, 9, 198, 52, 243, 143,
-			48, 149, 0, 66, 9, 198, 12, 19, 129, 104, 82, 64, 67, 9, 198, 12, 19, 79, 76, 50, 64, 20, 9, 198, 8, 148, 143, 12, 50, 64,
-			20, 9, 198, 4, 208, 146, 60, 114, 64, 20, 0, 10, 199, 77, 66, 76, 60, 32, 84, 20, 66, 6, 195, 76, 243, 64, 20, 9, 198, 24,
-			84, 137, 80, 242, 65, 21, 6, 195, 8, 145, 84, 20, 0, 11, 200, 80, 20, 129, 57, 64, 83, 36, 16, 67, 7, 196, 76, 84, 19, 36,
-			20, 11, 200, 76, 19, 9, 76, 49, 78, 16, 144, 21, 7, 196, 13, 80, 137, 80, 65, 9, 198, 4, 229, 9, 64, 21, 18, 66, 11, 200,
-			4, 229, 9, 56, 49, 78, 16, 144, 20, 9, 198, 4, 225, 18, 60, 114, 78, 66, 0, 7, 195, 20, 50, 74, 65, 21, 6, 195, 4, 50,
-			78, 65, 0, 10, 198, 48, 147, 134, 60, 227, 196, 67, 20, 0, 6, 195, 76, 227, 196, 20, 6, 195, 64, 85, 20, 20, 10, 199, 36, 65,
-			78, 80, 146, 201, 80, 68, 6, 195, 36, 49, 84, 65, 11, 199, 12, 244, 132, 20, 227, 206, 76, 67, 20, 10, 199, 12, 19, 142, 4, 195,
-			206, 28, 20, 10, 199, 4, 229, 9, 76, 84, 19, 36, 20, 0, 5, 195, 12, 243, 69, 9, 198, 88, 243, 20, 52, 85, 18, 65, 7, 196,
-			28, 83, 73, 80, 65, 0, 8, 197, 12, 244, 148, 21, 48, 66, 0, 9, 198, 20, 225, 137, 76, 83, 64, 20, 0, 9, 198, 88, 83, 12,
-			21, 68, 137, 21, 10, 199, 80, 84, 141, 61, 53, 1, 80, 66, 0, 7, 196, 80, 85, 20, 36, 20, 10, 198, 64, 148, 143, 76, 48, 70,
-			66, 20, 7, 196, 8, 243, 66, 20, 66, 0, 8, 197, 80, 244, 130, 36, 64, 21, 8, 197, 80, 147, 80, 4, 224, 65, 8, 197, 80, 19,
-			148, 4, 192, 65, 12, 201, 69, 82, 78, 16, 144, 197, 76, 147, 64, 20, 8, 197, 13, 35, 212, 4, 192, 65, 8, 197, 5, 84, 133, 60,
-			192, 67, 0, 9, 198, 76, 147, 143, 64, 144, 64, 20, 9, 198, 72, 149, 137, 56, 50, 84, 66, 9, 198, 65, 83, 9, 104, 144, 64, 67,
-			9, 198, 36, 225, 129, 52, 144, 64, 66, 9, 198, 21, 128, 197, 57, 68, 128, 20, 9, 198, 21, 84, 129, 76, 144, 64, 67, 9, 198, 21,
-			52, 5, 72, 144, 64, 66, 9, 198, 5, 53, 5, 72, 144, 64, 66, 10, 198, 5, 33, 5, 76, 144, 64, 66, 20, 0, 0, 7, 196, 72,
-			85, 9, 56, 65, 8, 196, 52, 22, 154, 20, 66, 20, 7, 196, 48, 19, 73, 56, 65, 0, 8, 197, 88, 19, 132, 4, 192, 65, 8, 197,
-			76, 19, 132, 4, 192, 65, 12, 201, 52, 84, 207, 64, 245, 1, 52, 144, 64, 68, 12, 201, 5, 85, 15, 12, 81, 129, 48, 144, 64, 70,
-			0, 9, 198, 73, 85, 5, 56, 144, 64, 20, 9, 198, 72, 147, 129, 76, 50, 84, 66, 9, 198, 65, 32, 83, 76, 80, 64, 65, 9, 198,
-			64, 20, 143, 16, 144, 64, 67, 9, 198, 24, 192, 77, 20, 224, 192, 21, 7, 195, 21, 36, 143, 66, 20, 10, 198, 16, 243, 15, 52, 144,
-			64, 66, 20, 9, 198, 5, 53, 5, 56, 144, 64, 67, 9, 198, 4, 193, 207, 88, 144, 64, 20, 0, 10, 199, 76, 53, 79, 48, 16, 149,
-			76, 67, 0, 9, 198, 24, 244, 211, 4, 227, 214, 20, 9, 198, 12, 20, 144, 60, 99, 210, 66, 7, 196, 4, 226, 68, 72, 65, 0, 8,
-			197, 81, 32, 70, 61, 32, 21, 12, 201, 80, 16, 200, 36, 48, 82, 16, 144, 64, 68, 12, 201, 52, 148, 195, 20, 195, 1, 56, 80, 64,
-			67, 7, 195, 20, 53, 66, 65, 20, 12, 201, 9, 32, 68, 36, 48, 82, 16, 144, 64, 68, 0, 6, 195, 48, 85, 67, 65, 0, 10, 199,
-			16, 145, 204, 61, 52, 201, 4, 67, 0, 6, 195, 64, 242, 0, 20, 7, 196, 8, 80, 82, 56, 21, 0, 8, 197, 81, 34, 77, 21, 32,
-			65, 8, 197, 81, 34, 70, 61, 32, 65, 6, 195, 64, 243, 0, 20, 8, 197, 37, 51, 205, 21, 32, 66, 8, 197, 16, 148, 208, 85, 64,
-			65, 8, 197, 9, 83, 7, 5, 32, 65, 0, 6, 194, 76, 144, 76, 9, 9, 198, 76, 241, 134, 36, 49, 64, 20, 9, 198, 64, 84, 142,
-			36, 49, 64, 66, 9, 198, 56, 20, 148, 20, 49, 64, 20, 9, 198, 52, 20, 211, 36, 209, 64, 65, 9, 198, 37, 53, 18, 36, 49, 64,
-			65, 9, 198, 24, 244, 142, 4, 49, 64, 66, 0, 10, 199, 76, 96, 67, 80, 84, 137, 4, 66, 10, 199, 29, 82, 68, 37, 166, 143, 48,
-			67, 10, 199, 29, 81, 82, 72, 18, 79, 48, 21, 0, 13, 68, 24, 145, 82, 36, 83, 6, 37, 36, 51, 37, 0, 7, 196, 64, 84, 149,
-			56, 66, 7, 196, 12, 243, 73, 76, 65, 7, 196, 12, 147, 69, 28, 65, 9, 198, 4, 100, 129, 28, 243, 0, 21, 0, 8, 197, 5, 97,
-			83, 80, 144, 72, 8, 197, 69, 81, 83, 80, 144, 72, 8, 197, 52, 243, 143, 52, 144, 20, 8, 197, 48, 84, 194, 36, 48, 20, 8, 197,
-			12, 83, 9, 56, 80, 21, 8, 197, 8, 244, 135, 36, 16, 65, 0, 9, 198, 76, 19, 85, 72, 18, 64, 67, 6, 195, 64, 244, 0, 20,
-			9, 198, 5, 69, 5, 56, 67, 204, 20, 0, 9, 198, 52, 147, 137, 52, 22, 0, 67, 10, 199, 25, 33, 67, 12, 85, 20, 20, 21, 9,
-			198, 5, 36, 143, 76, 50, 65, 20, 9, 198, 4, 225, 207, 76, 50, 65, 20, 0, 11, 200, 88, 83, 148, 37, 49, 84, 80, 80, 20, 7,
-			196, 80, 244, 142, 36, 21, 9, 198, 52, 20, 129, 80, 131, 206, 67, 7, 196, 24, 147, 79, 56, 66, 7, 196, 20, 66, 76, 20, 66, 0,
-			8, 197, 88, 244, 212, 72, 144, 72, 8, 197, 56, 244, 212, 72, 144, 72, 8, 197, 73, 80, 146, 36, 48, 66, 8, 197, 56, 84, 212, 48,
-			80, 66, 8, 197, 52, 20, 147, 36, 16, 65, 9, 197, 21, 69, 15, 72, 80, 65, 20, 8, 197, 21, 51, 198, 4, 112, 66, 8, 197, 12,
-			243, 12, 20, 112, 20, 8, 197, 12, 80, 201, 80, 16, 67, 9, 198, 12, 20, 148, 4, 49, 79, 66, 0, 9, 198, 72, 245, 133, 76, 50,
-			64, 20, 14, 202, 52, 243, 148, 20, 51, 205, 64, 21, 18, 36, 67, 20, 9, 198, 52, 19, 132, 36, 35, 204, 66, 9, 198, 21, 32, 67,
-			48, 149, 0, 66, 0, 7, 2, 95, 1, 35, 12, 0, 14, 203, 88, 147, 12, 4, 208, 83, 76, 20, 135, 36, 16, 68, 9, 198, 85, 53,
-			1, 76, 50, 65, 65, 9, 198, 72, 245, 133, 76, 50, 65, 20, 20, 71, 12, 20, 129, 36, 34, 67, 60, 49, 35, 51, 35, 6, 37, 71,
-			37, 49, 39, 0, 10, 199, 12, 19, 142, 36, 32, 76, 20, 66, 10, 199, 12, 19, 80, 4, 226, 76, 20, 67, 19, 70, 4, 195, 208, 20,
-			50, 65, 35, 55, 39, 48, 36, 76, 6, 37, 12, 35, 0, 0, 11, 200, 80, 83, 80, 61, 32, 78, 20, 240, 67, 7, 196, 24, 195, 197,
-			52, 20, 0, 12, 201, 52, 20, 148, 37, 35, 204, 60, 114, 64, 20, 0, 17, 70, 88, 82, 67, 60, 195, 192, 84, 109, 6, 37, 49, 39,
-			55, 39, 0, 9, 198, 65, 35, 194, 48, 83, 64, 20, 9, 198, 21, 48, 78, 80, 83, 64, 20, 0, 7, 2, 95, 5, 36, 12, 0, 10,
-			199, 20, 225, 137, 80, 85, 83, 36, 67, 0, 7, 196, 88, 243, 73, 80, 65, 7, 196, 76, 83, 69, 48, 20, 0, 8, 197, 16, 147, 206,
-			37, 48, 66, 0, 7, 2, 95, 9, 37, 12, 0, 9, 198, 64, 84, 137, 20, 113, 84, 20, 0, 10, 199, 61, 35, 199, 20, 225, 83, 36,
-			67, 6, 195, 36, 65, 9, 66, 6, 195, 8, 16, 129, 66, 0, 7, 2, 95, 15, 110, 12, 0, 6, 195, 44, 240, 128, 20, 6, 195, 12,
-			240, 128, 20, 0, 7, 196, 76, 35, 195, 12, 21, 7, 196, 56, 147, 69, 28, 20, 6, 195, 21, 48, 67, 20, 12, 201, 16, 144, 201, 61,
-			69, 5, 76, 147, 64, 20, 8, 196, 12, 131, 195, 60, 66, 20, 7, 196, 8, 147, 206, 16, 21, 0, 8, 197, 88, 242, 86, 60, 64, 20,
-			8, 197, 76, 244, 135, 60, 224, 65, 6, 195, 64, 83, 142, 21, 0, 9, 198, 72, 243, 65, 56, 144, 64, 67, 9, 198, 12, 243, 131, 61,
-			36, 192, 21, 0, 6, 195, 81, 80, 64, 72, 10, 199, 12, 192, 90, 60, 209, 78, 20, 66, 10, 198, 8, 243, 148, 20, 35, 203, 65, 20,
-			0, 7, 196, 88, 243, 69, 72, 65, 7, 196, 88, 84, 142, 20, 66, 8, 196, 80, 83, 69, 56, 65, 20, 7, 196, 76, 19, 65, 72, 65,
-			12, 200, 52, 243, 148, 20, 66, 83, 60, 224, 66, 20, 7, 196, 52, 81, 204, 36, 20, 7, 196, 13, 83, 133, 60, 65, 7, 196, 12, 19,
-			65, 72, 65, 0, 8, 197, 104, 244, 16, 60, 192, 20, 12, 201, 80, 80, 200, 56, 144, 207, 48, 244, 128, 20, 8, 197, 72, 149, 15, 72,
-			224, 21, 8, 197, 60, 210, 67, 36, 64, 67, 8, 197, 56, 84, 208, 60, 192, 20, 8, 197, 45, 84, 149, 52, 32, 65, 8, 197, 40, 244,
-			16, 60, 192, 20, 9, 198, 12, 243, 12, 61, 21, 73, 20, 8, 197, 12, 20, 144, 36, 224, 65, 0, 9, 198, 53, 83, 20, 37, 3, 0,
-			65, 9, 198, 52, 16, 207, 52, 84, 128, 67, 9, 198, 12, 243, 137, 24, 84, 128, 66, 10, 198, 12, 243, 135, 73, 80, 64, 65, 20, 9,
-			198, 4, 208, 82, 12, 244, 132, 67, 0, 10, 199, 104, 20, 15, 80, 80, 200, 36, 20, 10, 199, 9, 33, 78, 80, 243, 137, 12, 21, 10,
-			199, 4, 229, 9, 12, 19, 69, 72, 67, 0, 11, 200, 64, 144, 78, 80, 84, 146, 20, 224, 21, 0, 7, 2, 95, 21, 40, 12, 0, 9,
-			198, 88, 83, 148, 21, 50, 77, 20, 9, 197, 44, 84, 139, 101, 32, 65, 21, 9, 198, 12, 83, 148, 21, 50, 77, 20, 0, 9, 198, 12,
-			243, 137, 84, 113, 64, 65, 0, 6, 195, 81, 81, 64, 72, 6, 195, 88, 83, 0, 21, 6, 195, 88, 83, 0, 21, 10, 199, 12, 16, 200,
-			21, 52, 201, 4, 67, 0, 7, 196, 64, 84, 195, 20, 21, 8, 196, 52, 84, 201, 4, 65, 20, 0, 8, 197, 104, 147, 135, 5, 32, 65,
-			8, 197, 60, 113, 197, 81, 64, 20, 8, 197, 52, 20, 148, 61, 32, 65, 8, 197, 52, 19, 77, 85, 64, 66, 6, 195, 28, 243, 142, 21,
-			0, 6, 194, 80, 144, 76, 9, 9, 198, 72, 19, 69, 77, 49, 64, 20, 9, 198, 64, 83, 137, 76, 243, 0, 66, 6, 195, 61, 101, 137,
-			20, 9, 198, 24, 144, 193, 72, 243, 0, 67, 6, 195, 4, 65, 9, 66, 0, 10, 199, 5, 100, 133, 8, 33, 82, 60, 72, 10, 199, 28,
-			243, 9, 5, 33, 9, 4, 68, 10, 198, 8, 80, 84, 72, 150, 0, 65, 21, 11, 199, 5, 21, 73, 48, 81, 201, 4, 67, 20, 0, 6,
-			195, 76, 243, 143, 72, 6, 195, 76, 243, 143, 72, 7, 196, 4, 195, 69, 56, 21, 0, 6, 195, 88, 85, 0, 20, 8, 197, 80, 17, 4,
-			20, 144, 66, 6, 195, 76, 243, 142, 21, 9, 197, 76, 83, 143, 56, 144, 65, 20, 9, 198, 28, 19, 66, 85, 50, 65, 66, 8, 197, 16,
-			83, 79, 56, 80, 20, 6, 195, 12, 243, 142, 21, 8, 197, 12, 19, 137, 48, 80, 66, 9, 198, 5, 4, 129, 77, 50, 65, 67, 0, 6,
-			195, 28, 243, 137, 20, 9, 198, 16, 144, 76, 37, 50, 64, 66, 0, 7, 195, 49, 82, 64, 76, 9, 10, 199, 77, 64, 78, 37, 51, 1,
-			60, 67, 10, 199, 64, 20, 142, 5, 52, 207, 76, 67, 10, 199, 52, 20, 143, 8, 241, 21, 60, 20, 9, 198, 48, 148, 85, 36, 112, 83,
-			67, 9, 198, 21, 53, 18, 4, 225, 79, 66, 10, 199, 12, 243, 2, 72, 144, 207, 56, 67, 0, 15, 2, 95, 34, 84, 37, 51, 81, 39,
-			55, 36, 47, 12, 36, 0, 11, 200, 37, 53, 1, 57, 64, 78, 20, 16, 67, 7, 196, 28, 83, 196, 20, 20, 7, 196, 8, 193, 86, 36,
-			20, 0, 23, 2, 95, 33, 48, 4, 40, 50, 47, 39, 36, 89, 49, 55, 35, 65, 35, 47, 6, 37, 84, 39, 0, 8, 197, 88, 149, 18,
-			20, 240, 65, 8, 197, 88, 147, 137, 48, 80, 66, 12, 201, 80, 84, 141, 60, 113, 78, 21, 50, 64, 67, 8, 197, 69, 82, 69, 80, 80,
-			20, 12, 201, 61, 53, 5, 60, 113, 78, 21, 50, 64, 68, 9, 197, 52, 83, 79, 72, 80, 65, 20, 12, 201, 20, 193, 84, 81, 35, 204,
-			37, 50, 64, 67, 8, 197, 8, 242, 5, 52, 80, 20, 8, 197, 8, 144, 137, 80, 80, 65, 8, 197, 8, 19, 1, 4, 208, 65, 0, 6,
-			195, 64, 83, 129, 21, 6, 195, 4, 195, 5, 72, 11, 67, 20, 195, 1, 36, 55, 55, 35, 0, 76, 6, 195, 81, 85, 21, 66, 9, 198,
-			76, 147, 148, 21, 50, 64, 65, 9, 198, 37, 3, 198, 37, 50, 64, 66, 6, 195, 24, 19, 133, 66, 6, 195, 21, 35, 197, 20, 7, 195,
-			16, 83, 133, 66, 20, 9, 198, 5, 3, 198, 37, 50, 64, 66, 0, 8, 195, 12, 243, 128, 72, 8, 9, 15, 2, 95, 39, 35, 48, 6,
-			110, 89, 47, 51, 39, 83, 39, 0, 6, 195, 80, 85, 84, 65, 10, 199, 76, 21, 5, 48, 194, 84, 20, 66, 6, 195, 12, 240, 136, 21,
-			0, 12, 68, 40, 80, 78, 76, 75, 37, 12, 50, 88, 0, 7, 196, 72, 84, 197, 16, 20, 11, 200, 64, 243, 148, 72, 83, 79, 48, 144,
-			66, 11, 200, 64, 20, 146, 60, 48, 200, 36, 16, 20, 12, 200, 48, 84, 9, 48, 83, 85, 72, 80, 67, 20, 7, 196, 37, 51, 1, 52,
-			66, 11, 200, 21, 65, 82, 60, 113, 78, 20, 240, 68, 7, 196, 20, 195, 199, 36, 20, 6, 195, 12, 243, 135, 20, 0, 10, 198, 52, 16,
-			197, 16, 243, 133, 66, 20, 8, 197, 44, 18, 82, 61, 48, 66, 9, 198, 28, 19, 1, 80, 243, 133, 66, 12, 201, 24, 245, 15, 76, 147,
-			148, 21, 50, 64, 67, 9, 198, 16, 21, 80, 32, 147, 133, 68, 9, 198, 13, 81, 204, 36, 84, 137, 65, 9, 198, 12, 193, 79, 52, 83,
-			133, 66, 8, 197, 12, 21, 67, 5, 48, 65, 9, 198, 5, 52, 197, 52, 35, 5, 67, 6, 195, 5, 50, 78, 65, 0, 6, 195, 48, 83,
-			129, 21, 6, 195, 4, 195, 1, 72, 7, 195, 104, 19, 133, 66, 20, 6, 195, 20, 195, 5, 21, 0, 7, 195, 21, 35, 192, 72, 9, 6,
-			195, 64, 83, 132, 21, 6, 195, 5, 50, 76, 66, 0, 6, 195, 4, 195, 15, 72, 17, 4, 95, 3, 1, 16, 65, 35, 57, 6, 40, 89,
-			49, 39, 55, 35, 0, 7, 196, 76, 243, 65, 48, 65, 7, 196, 56, 83, 66, 72, 20, 8, 196, 28, 243, 73, 80, 65, 21, 7, 196, 20,
-			227, 195, 32, 20, 7, 196, 8, 241, 213, 20, 66, 9, 198, 4, 65, 78, 60, 209, 82, 67, 0, 21, 2, 95, 41, 49, 57, 4, 40, 88,
-			35, 48, 35, 51, 6, 36, 50, 47, 36, 88, 37, 0, 8, 197, 80, 131, 204, 61, 48, 21, 9, 198, 12, 21, 133, 16, 147, 133, 21, 0,
-			6, 195, 24, 20, 133, 76, 10, 198, 4, 48, 193, 57, 67, 192, 76, 28, 22, 2, 95, 40, 35, 48, 4, 36, 51, 47, 35, 48, 35, 51,
-			6, 36, 50, 47, 36, 88, 37, 0, 9, 198, 48, 244, 133, 16, 19, 128, 67, 9, 198, 44, 128, 77, 76, 147, 128, 66, 9, 198, 37, 4,
-			201, 48, 243, 128, 65, 13, 202, 20, 193, 84, 81, 35, 198, 61, 33, 83, 36, 20, 9, 198, 8, 20, 153, 80, 243, 128, 65, 0, 8, 195,
-			64, 84, 128, 72, 8, 9, 10, 199, 76, 81, 9, 12, 84, 201, 52, 20, 6, 195, 21, 50, 84, 65, 10, 199, 12, 243, 73, 57, 65, 82,
-			56, 67, 0, 7, 196, 77, 4, 133, 12, 20, 6, 195, 76, 244, 135, 21, 7, 196, 52, 16, 201, 56, 65, 7, 196, 21, 67, 137, 12, 20,
-			8, 196, 20, 35, 204, 36, 65, 20, 0, 14, 2, 95, 45, 47, 14, 16, 35, 47, 12, 37, 50, 39, 0, 12, 201, 84, 197, 18, 5, 65,
-			82, 72, 83, 128, 21, 8, 197, 81, 34, 84, 60, 224, 65, 8, 197, 64, 246, 154, 60, 192, 66, 0, 13, 2, 95, 44, 84, 6, 37, 51,
-			81, 39, 55, 35, 0, 9, 198, 76, 240, 195, 61, 36, 192, 21, 9, 198, 76, 50, 79, 64, 84, 128, 65, 9, 198, 76, 19, 79, 88, 20,
-			128, 67, 9, 198, 72, 147, 131, 61, 36, 192, 21, 13, 202, 65, 50, 67, 61, 65, 82, 5, 1, 85, 80, 69, 9, 198, 64, 84, 131, 61,
-			36, 192, 21, 9, 198, 61, 35, 5, 4, 228, 192, 21, 6, 195, 44, 244, 133, 66, 9, 198, 16, 148, 195, 61, 36, 192, 21, 6, 195, 12,
-			244, 133, 20, 9, 198, 12, 19, 15, 28, 84, 128, 66, 9, 198, 4, 193, 197, 56, 144, 128, 20, 0, 9, 2, 95, 51, 47, 51, 6, 36,
-			0, 6, 195, 76, 244, 132, 21, 10, 199, 12, 243, 12, 4, 113, 78, 20, 66, 0, 9, 2, 95, 50, 72, 6, 40, 36, 0, 7, 196, 76,
-			21, 21, 72, 65, 7, 196, 48, 147, 69, 56, 65, 6, 195, 12, 243, 147, 20, 7, 196, 12, 19, 69, 72, 65, 9, 198, 8, 84, 148, 60,
-			193, 0, 20, 0, 9, 2, 95, 49, 6, 40, 50, 39, 0, 8, 197, 77, 82, 67, 36, 64, 66, 6, 195, 64, 86, 154, 20, 8, 197, 52,
-			145, 206, 60, 192, 65, 8, 197, 24, 83, 77, 36, 224, 65, 8, 197, 16, 243, 142, 60, 192, 20, 12, 201, 8, 244, 135, 61, 48, 84, 60,
-			195, 0, 21, 9, 197, 5, 4, 18, 60, 64, 66, 20, 0, 11, 2, 95, 48, 72, 88, 6, 36, 51, 39, 0, 9, 198, 77, 64, 70, 24,
-			244, 128, 65, 6, 195, 48, 85, 133, 20, 10, 198, 12, 240, 207, 52, 84, 128, 66, 21, 0, 11, 2, 95, 55, 89, 6, 109, 47, 12, 36,
-			0, 10, 199, 24, 244, 141, 4, 194, 84, 4, 68, 6, 195, 5, 163, 212, 20, 0, 7, 196, 5, 100, 133, 36, 72, 9, 2, 95, 54, 89,
-			6, 109, 57, 0, 7, 196, 80, 148, 143, 48, 66, 7, 195, 64, 84, 143, 66, 20, 7, 196, 21, 67, 137, 4, 66, 7, 196, 17, 83, 9,
-			4, 66, 9, 198, 12, 244, 146, 61, 69, 0, 21, 0, 12, 2, 95, 53, 76, 6, 37, 50, 49, 122, 36, 0, 8, 197, 64, 192, 67, 37,
-			64, 65, 8, 197, 56, 20, 195, 37, 64, 65, 8, 197, 48, 20, 195, 37, 64, 65, 0, 13, 2, 95, 52, 49, 122, 6, 35, 47, 12, 51,
-			39, 0, 9, 198, 76, 48, 82, 64, 19, 148, 65, 13, 202, 8, 147, 212, 85, 32, 129, 104, 147, 206, 20, 20, 0, 9, 198, 5, 97, 83,
-			76, 84, 143, 72, 20, 2, 95, 59, 48, 4, 40, 50, 47, 39, 36, 84, 6, 37, 51, 81, 39, 55, 35, 0, 0, 7, 196, 52, 83, 66,
-			72, 20, 12, 201, 12, 147, 145, 84, 19, 148, 21, 50, 77, 20, 0, 10, 2, 95, 57, 50, 6, 110, 84, 36, 0, 8, 197, 64, 84, 141,
-			85, 64, 65, 8, 197, 28, 19, 66, 21, 32, 65, 8, 197, 12, 21, 20, 5, 32, 65, 0, 10, 2, 95, 56, 6, 110, 47, 12, 39, 0,
-			10, 198, 76, 241, 204, 36, 243, 0, 65, 20, 9, 198, 52, 85, 1, 64, 243, 148, 20, 10, 198, 5, 85, 15, 77, 67, 208, 68, 20, 0,
-			24, 2, 95, 63, 48, 4, 40, 50, 47, 39, 37, 50, 47, 36, 51, 39, 81, 35, 47, 6, 37, 84, 39, 0, 10, 199, 64, 20, 129, 16,
-			148, 197, 4, 67, 0, 18, 2, 95, 62, 49, 57, 4, 40, 88, 35, 6, 35, 50, 81, 39, 55, 39, 0, 11, 200, 81, 84, 130, 60, 19,
-			2, 21, 32, 67, 9, 198, 64, 148, 143, 77, 49, 78, 66, 11, 200, 12, 243, 148, 72, 19, 2, 21, 32, 66, 10, 198, 5, 85, 15, 13,
-			67, 206, 67, 20, 0, 9, 198, 77, 66, 80, 20, 225, 9, 20, 6, 195, 72, 245, 0, 20, 8, 197, 72, 16, 193, 48, 80, 65, 9, 197,
-			64, 144, 195, 32, 80, 66, 20, 10, 198, 61, 37, 5, 57, 50, 65, 66, 20, 8, 197, 52, 147, 9, 80, 80, 65, 8, 197, 48, 148, 1,
-			72, 144, 65, 9, 197, 48, 16, 195, 32, 80, 66, 20, 8, 197, 28, 83, 133, 76, 144, 20, 9, 197, 16, 80, 193, 16, 80, 65, 20, 8,
-			197, 12, 243, 147, 12, 144, 20, 9, 198, 12, 243, 80, 20, 225, 9, 20, 8, 197, 9, 83, 20, 20, 144, 66, 0, 19, 2, 95, 60, 35,
-			48, 4, 36, 51, 47, 35, 6, 35, 50, 81, 39, 55, 39, 0, 9, 198, 104, 19, 66, 21, 50, 64, 20, 9, 198, 61, 37, 5, 57, 50,
-			64, 20, 9, 198, 16, 145, 82, 21, 50, 64, 65, 0, 6, 195, 12, 244, 148, 21, 0, 7, 196, 80, 19, 65, 72, 65, 11, 200, 72, 85,
-			20, 36, 194, 78, 20, 240, 67, 9, 198, 56, 144, 197, 72, 21, 0, 66, 7, 196, 16, 147, 69, 72, 65, 11, 200, 16, 145, 1, 76, 48,
-			76, 36, 16, 68, 7, 196, 16, 19, 65, 72, 65, 11, 200, 9, 32, 67, 32, 144, 197, 72, 144, 66, 7, 196, 4, 211, 210, 36, 21, 0,
-			8, 197, 76, 81, 9, 48, 80, 66, 8, 197, 76, 19, 132, 36, 16, 66, 12, 201, 65, 50, 67, 60, 50, 78, 21, 50, 64, 20, 8, 197,
-			64, 20, 146, 60, 48, 65, 12, 201, 64, 19, 9, 56, 113, 78, 21, 50, 64, 67, 8, 197, 48, 244, 147, 36, 48, 21, 8, 197, 48, 145,
-			206, 20, 240, 65, 8, 197, 48, 84, 211, 36, 48, 20, 9, 198, 48, 21, 82, 5, 50, 65, 67, 8, 197, 36, 194, 65, 16, 80, 66, 8,
-			197, 21, 53, 1, 76, 144, 65, 8, 197, 12, 244, 142, 20, 16, 65, 8, 197, 12, 129, 79, 64, 80, 65, 8, 197, 8, 17, 9, 48, 80,
-			66, 12, 201, 4, 225, 201, 60, 113, 78, 21, 50, 64, 67, 0, 9, 198, 76, 147, 134, 37, 50, 64, 65, 9, 198, 65, 35, 212, 21, 50,
-			64, 65, 9, 198, 37, 3, 212, 21, 50, 64, 66, 9, 198, 16, 144, 84, 21, 50, 64, 66, 9, 198, 9, 34, 65, 57, 163, 204, 67, 0,
-			10, 199, 12, 244, 15, 48, 147, 69, 72, 67, 0, 9, 196, 76, 245, 20, 60, 76, 28, 21, 11, 200, 80, 244, 142, 4, 37, 79, 56, 144,
-			20, 15, 204, 61, 52, 201, 16, 244, 133, 17, 85, 20, 5, 50, 64, 65, 11, 200, 60, 194, 71, 5, 32, 200, 36, 16, 68, 11, 200, 12,
-			243, 5, 61, 69, 5, 72, 144, 20, 9, 198, 8, 243, 135, 36, 244, 142, 21, 11, 200, 5, 85, 5, 57, 66, 67, 32, 80, 20, 0, 9,
-			198, 64, 244, 137, 24, 84, 137, 66, 9, 198, 36, 224, 207, 49, 83, 69, 66, 0, 9, 198, 8, 20, 212, 36, 19, 128, 66, 0, 14, 203,
-			5, 48, 201, 84, 112, 67, 5, 1, 76, 48, 144, 21, 0, 7, 196, 88, 244, 199, 36, 20, 7, 196, 76, 147, 69, 80, 20, 12, 201, 72,
-			240, 195, 4, 114, 79, 88, 147, 133, 21, 12, 201, 52, 243, 148, 21, 97, 82, 28, 147, 133, 21, 6, 195, 36, 193, 79, 65, 7, 195, 28,
-			241, 207, 66, 20, 7, 196, 28, 19, 65, 48, 65, 12, 201, 5, 34, 83, 80, 241, 201, 80, 243, 133, 68, 0, 8, 133, 1, 22, 18, 195,
-			160, 72, 8, 197, 81, 33, 86, 21, 48, 20, 9, 198, 69, 80, 82, 21, 50, 77, 21, 8, 197, 60, 34, 68, 61, 48, 21, 9, 198, 52,
-			83, 15, 52, 19, 133, 66, 8, 197, 8, 147, 199, 5, 48, 67, 0, 10, 198, 8, 145, 78, 80, 147, 128, 65, 20, 9, 198, 8, 22, 65,
-			52, 243, 128, 67, 0, 10, 199, 76, 20, 133, 8, 33, 82, 60, 72, 10, 199, 84, 225, 9, 12, 84, 201, 52, 20, 6, 195, 80, 83, 204,
-			66, 10, 199, 52, 19, 12, 60, 96, 71, 36, 66, 0, 7, 196, 80, 84, 197, 72, 65, 7, 196, 77, 68, 133, 76, 20, 6, 195, 48, 80,
-			195, 21, 12, 201, 36, 229, 15, 56, 20, 149, 52, 244, 137, 21, 0, 8, 197, 48, 19, 80, 4, 64, 65, 8, 197, 16, 84, 205, 4, 224,
-			20, 6, 195, 12, 241, 206, 20, 9, 198, 5, 52, 197, 52, 147, 137, 66, 0, 9, 198, 60, 208, 133, 48, 144, 192, 67, 9, 198, 16, 243,
-			69, 56, 144, 192, 21, 0, 10, 199, 81, 34, 65, 80, 131, 15, 56, 65, 6, 195, 80, 80, 192, 20, 9, 198, 28, 243, 1, 76, 80, 195,
-			21, 6, 195, 16, 80, 192, 20, 10, 199, 12, 130, 76, 36, 17, 207, 56, 67, 0, 6, 195, 80, 80, 207, 21, 12, 200, 28, 195, 194, 36,
-			49, 70, 4, 192, 67, 20, 12, 200, 21, 65, 82, 60, 49, 70, 4, 192, 68, 20, 7, 196, 4, 224, 207, 72, 21, 0, 9, 198, 80, 19,
-			69, 72, 144, 197, 67, 8, 197, 52, 20, 146, 60, 224, 66, 8, 197, 28, 20, 154, 60, 224, 66, 8, 197, 16, 20, 147, 20, 224, 65, 8,
-			197, 12, 243, 77, 60, 64, 20, 9, 198, 8, 84, 135, 20, 113, 201, 21, 0, 13, 202, 80, 84, 141, 60, 83, 5, 81, 68, 137, 12, 20,
-			9, 198, 80, 83, 5, 52, 16, 192, 20, 9, 198, 21, 84, 137, 48, 240, 192, 67, 9, 198, 4, 225, 137, 48, 240, 192, 66, 0, 10, 199,
-			88, 19, 19, 5, 52, 201, 56, 66, 6, 195, 80, 80, 204, 20, 10, 199, 16, 148, 207, 72, 66, 78, 20, 21, 0, 7, 196, 5, 100, 129,
-			36, 72, 30, 4, 95, 4, 15, 20, 48, 6, 40, 50, 47, 39, 15, 89, 4, 39, 84, 14, 16, 35, 89, 49, 14, 16, 6, 37, 47, 12,
-			39, 0, 6, 195, 80, 80, 203, 20, 9, 198, 52, 19, 148, 36, 51, 210, 66, 9, 198, 12, 147, 133, 12, 197, 66, 67, 0, 8, 197, 77,
-			81, 4, 37, 64, 65, 8, 197, 76, 83, 137, 61, 32, 20, 8, 197, 76, 83, 137, 61, 32, 65, 8, 197, 72, 147, 142, 61, 96, 20, 8,
-			197, 72, 81, 4, 37, 64, 65, 8, 197, 65, 83, 16, 37, 64, 65, 8, 197, 64, 147, 214, 21, 32, 66, 8, 197, 52, 83, 136, 37, 32,
-			66, 9, 197, 13, 33, 68, 37, 64, 65, 21, 8, 197, 12, 243, 80, 37, 64, 65, 0, 10, 198, 76, 241, 143, 12, 193, 64, 65, 20, 6,
-			195, 20, 65, 65, 21, 6, 195, 16, 80, 201, 20, 6, 195, 8, 17, 197, 66, 6, 195, 4, 193, 65, 65, 0, 14, 5, 1, 22, 18, 195,
-			178, 108, 84, 34, 6, 110, 0, 72, 7, 195, 12, 129, 64, 72, 8, 20, 2, 95, 91, 35, 48, 6, 36, 51, 47, 35, 49, 122, 6, 35,
-			72, 14, 16, 35, 0, 10, 199, 64, 19, 12, 4, 229, 79, 80, 20, 9, 198, 52, 243, 143, 64, 16, 203, 67, 6, 195, 16, 81, 192, 20,
-			10, 199, 13, 34, 83, 61, 53, 15, 52, 66, 6, 195, 4, 193, 64, 66, 0, 9, 198, 77, 84, 5, 72, 147, 210, 21, 6, 195, 76, 244,
-			147, 21, 7, 196, 52, 148, 201, 4, 65, 7, 196, 12, 83, 66, 72, 20, 7, 196, 5, 36, 9, 4, 66, 12, 201, 4, 65, 78, 60, 148,
-			15, 24, 148, 201, 69, 0, 6, 195, 76, 241, 0, 20, 8, 197, 76, 50, 5, 73, 160, 21, 9, 198, 64, 148, 143, 48, 148, 201, 66, 8,
-			197, 64, 19, 132, 5, 32, 65, 6, 195, 48, 83, 206, 21, 8, 197, 20, 194, 88, 37, 32, 67, 6, 195, 20, 65, 78, 20, 9, 197, 16,
-			21, 150, 21, 32, 66, 21, 9, 197, 12, 243, 131, 5, 96, 65, 20, 6, 195, 4, 193, 78, 21, 0, 8, 198, 69, 80, 76, 12, 129, 64,
-			9, 66, 88, 144, 84, 37, 0, 76, 9, 9, 198, 76, 48, 78, 16, 19, 0, 65, 9, 198, 69, 80, 68, 72, 145, 192, 66, 9, 198, 64,
-			243, 12, 36, 225, 64, 20, 9, 198, 64, 84, 137, 12, 193, 64, 65, 9, 198, 56, 145, 86, 60, 193, 64, 20, 9, 198, 20, 113, 77, 60,
-			225, 64, 20, 9, 198, 12, 243, 147, 60, 193, 64, 20, 9, 198, 12, 243, 135, 72, 81, 192, 20, 6, 195, 8, 18, 193, 66, 9, 198, 5,
-			52, 1, 72, 17, 192, 66, 0, 8, 67, 12, 128, 84, 21, 0, 10, 16, 2, 95, 95, 6, 40, 50, 72, 36, 51, 89, 49, 39, 51, 36,
-			0, 10, 199, 65, 83, 3, 32, 84, 137, 4, 66, 9, 198, 64, 85, 20, 36, 225, 79, 66, 6, 195, 60, 130, 64, 20, 0, 13, 2, 95,
-			94, 49, 35, 48, 12, 40, 76, 12, 39, 0, 7, 196, 20, 193, 84, 80, 20, 10, 198, 8, 18, 129, 104, 85, 0, 67, 21, 7, 196, 5,
-			4, 5, 56, 21, 0, 8, 197, 5, 100, 133, 80, 80, 72, 8, 197, 69, 81, 83, 80, 240, 72, 19, 2, 95, 93, 49, 57, 4, 40, 88,
-			35, 49, 122, 6, 35, 72, 14, 16, 35, 0, 9, 198, 80, 148, 129, 56, 226, 65, 67, 9, 197, 64, 20, 133, 72, 80, 66, 21, 8, 197,
-			52, 147, 208, 36, 16, 67, 8, 197, 48, 147, 73, 80, 80, 65, 6, 195, 36, 51, 206, 20, 9, 198, 16, 144, 67, 60, 226, 65, 68, 8,
-			197, 16, 83, 79, 56, 144, 67, 8, 197, 12, 84, 131, 32, 144, 21, 8, 197, 8, 244, 135, 32, 144, 21, 0, 9, 198, 77, 65, 70, 4,
-			226, 64, 65, 6, 195, 64, 84, 149, 66, 9, 198, 36, 224, 197, 56, 66, 64, 20, 9, 198, 16, 80, 197, 56, 226, 64, 20, 9, 198, 12,
-			144, 204, 4, 66, 64, 65, 9, 198, 4, 48, 197, 28, 194, 64, 20, 0, 9, 198, 12, 243, 80, 72, 84, 211, 20, 6, 195, 4, 194, 64,
-			66, 0, 11, 200, 76, 83, 73, 12, 84, 131, 32, 144, 21, 12, 201, 76, 50, 9, 88, 83, 143, 28, 194, 65, 20, 12, 201, 69, 80, 76,
-			76, 149, 143, 28, 194, 65, 20, 11, 200, 64, 19, 142, 60, 48, 200, 36, 16, 20, 11, 200, 36, 229, 5, 73, 4, 133, 80, 80, 66, 8,
-			196, 20, 194, 84, 20, 65, 21, 7, 195, 12, 130, 79, 66, 20, 0, 8, 197, 88, 244, 212, 72, 240, 72, 8, 197, 56, 244, 212, 72, 240,
-			72, 6, 195, 76, 245, 146, 21, 9, 197, 56, 244, 212, 60, 144, 65, 21, 8, 197, 56, 18, 65, 16, 80, 65, 9, 198, 52, 19, 20, 20,
-			212, 0, 20, 8, 197, 24, 243, 79, 72, 144, 65, 8, 197, 21, 53, 15, 56, 144, 65, 8, 197, 21, 21, 73, 16, 144, 20, 9, 198, 20,
-			113, 77, 60, 226, 65, 68, 9, 198, 4, 226, 82, 36, 66, 65, 68, 0, 13, 2, 95, 96, 71, 35, 49, 48, 14, 16, 117, 65, 0, 12,
-			201, 60, 67, 206, 80, 245, 5, 12, 226, 67, 20, 9, 198, 52, 243, 135, 60, 194, 64, 20, 9, 198, 5, 96, 77, 64, 244, 212, 21, 0,
-			0, 11, 200, 80, 84, 129, 64, 85, 84, 36, 48, 67, 8, 196, 48, 80, 201, 80, 65, 21, 11, 200, 36, 229, 5, 72, 194, 78, 20, 16,
-			67, 7, 196, 21, 84, 137, 80, 65, 12, 201, 20, 224, 201, 12, 195, 208, 20, 66, 65, 69, 12, 201, 12, 147, 145, 84, 81, 143, 28, 194,
-			69, 20, 7, 196, 5, 67, 5, 80, 20, 6, 195, 4, 193, 83, 20, 7, 196, 4, 67, 69, 80, 20, 0, 8, 197, 65, 35, 212, 5, 48,
-			65, 6, 195, 28, 246, 154, 21, 8, 197, 24, 17, 68, 37, 48, 20, 6, 195, 20, 65, 82, 65, 0, 10, 198, 81, 34, 86, 20, 225, 84,
-			66, 20, 9, 198, 72, 245, 21, 48, 83, 192, 66, 9, 198, 52, 81, 9, 12, 83, 192, 66, 9, 198, 24, 244, 129, 56, 83, 192, 66, 0,
-			10, 199, 64, 83, 148, 5, 67, 5, 80, 20, 6, 195, 48, 83, 192, 21, 0, 12, 201, 65, 35, 211, 80, 17, 133, 72, 84, 201, 67, 6,
-			195, 64, 84, 195, 20, 6, 195, 64, 84, 195, 20, 6, 195, 12, 244, 195, 20, 7, 196, 5, 36, 133, 16, 20, 0, 9, 198, 72, 241, 9,
-			80, 244, 137, 21, 9, 198, 57, 85, 143, 48, 243, 133, 20, 0, 15, 4, 95, 7, 18, 22, 81, 14, 16, 6, 35, 12, 84, 36, 0, 6,
-			195, 12, 244, 193, 66, 10, 198, 12, 83, 1, 16, 243, 128, 65, 21, 0, 10, 199, 28, 194, 67, 60, 194, 83, 36, 66, 6, 195, 20, 66,
-			84, 65, 9, 198, 12, 241, 84, 4, 225, 79, 67, 9, 198, 12, 21, 20, 4, 225, 79, 66, 6, 195, 4, 194, 84, 65, 0, 11, 200, 12,
-			243, 69, 28, 194, 65, 57, 48, 67, 0, 8, 197, 104, 240, 195, 60, 192, 20, 8, 197, 88, 20, 133, 56, 224, 21, 8, 197, 72, 240, 195,
-			60, 192, 20, 8, 197, 64, 83, 132, 84, 192, 20, 8, 197, 52, 243, 20, 20, 224, 21, 6, 195, 48, 84, 194, 20, 8, 197, 16, 144, 67,
-			60, 224, 66, 8, 197, 12, 19, 73, 60, 224, 65, 8, 197, 9, 81, 134, 4, 192, 65, 0, 9, 198, 69, 80, 76, 12, 244, 192, 20, 7,
-			195, 65, 84, 133, 66, 20, 9, 198, 60, 198, 77, 64, 244, 192, 65, 9, 198, 52, 20, 137, 64, 244, 192, 20, 0, 6, 195, 20, 66, 80,
-			65, 10, 199, 17, 32, 71, 4, 210, 78, 20, 67, 0, 7, 196, 77, 68, 143, 24, 20, 8, 196, 72, 244, 197, 60, 65, 20, 9, 198, 72,
-			145, 146, 20, 65, 0, 21, 11, 200, 5, 32, 201, 16, 144, 67, 60, 224, 67, 0, 9, 198, 104, 84, 134, 4, 194, 85, 67, 8, 197, 52,
-			83, 147, 60, 192, 20, 9, 198, 12, 243, 80, 48, 144, 197, 20, 8, 197, 12, 243, 15, 28, 224, 20, 8, 197, 12, 19, 132, 20, 192, 21,
-			0, 6, 195, 65, 84, 137, 66, 6, 195, 64, 84, 201, 20, 9, 198, 64, 83, 148, 5, 67, 0, 20, 9, 198, 64, 83, 148, 5, 67, 0,
-			65, 9, 198, 12, 83, 148, 72, 144, 192, 20, 0, 0, 7, 196, 52, 84, 207, 48, 65, 13, 201, 16, 144, 207, 80, 147, 5, 16, 243, 137,
-			68, 20, 9, 198, 12, 243, 134, 21, 69, 0, 20, 0, 8, 197, 76, 148, 15, 57, 64, 20, 9, 198, 76, 128, 78, 28, 128, 73, 66, 9,
-			198, 64, 20, 129, 48, 148, 201, 66, 9, 197, 48, 84, 1, 57, 64, 65, 20, 0, 6, 195, 80, 84, 201, 20, 9, 198, 76, 84, 150, 36,
-			193, 64, 66, 10, 198, 52, 81, 193, 12, 193, 64, 65, 20, 9, 198, 21, 34, 71, 60, 225, 64, 66, 6, 195, 16, 84, 201, 20, 0, 20,
-			2, 95, 123, 35, 48, 4, 36, 51, 47, 35, 81, 14, 16, 6, 35, 83, 12, 35, 0, 16, 4, 95, 4, 9, 1, 72, 57, 36, 51, 6,
-			36, 12, 88, 126, 0, 10, 199, 76, 147, 135, 32, 147, 218, 104, 21, 10, 199, 5, 85, 15, 64, 147, 15, 80, 20, 9, 198, 5, 32, 200,
-			20, 192, 79, 67, 0, 8, 196, 76, 84, 201, 4, 65, 20, 7, 196, 72, 84, 201, 4, 65, 7, 196, 52, 84, 211, 20, 20, 0, 6, 195,
-			80, 241, 0, 20, 8, 197, 77, 83, 195, 21, 32, 65, 8, 197, 72, 83, 132, 37, 64, 65, 8, 197, 65, 35, 198, 21, 64, 20, 8, 197,
-			64, 20, 212, 61, 32, 21, 12, 201, 12, 20, 212, 20, 197, 133, 72, 65, 64, 21, 0, 9, 198, 77, 84, 146, 20, 225, 64, 21, 9, 198,
-			72, 85, 20, 36, 98, 76, 67, 9, 198, 64, 144, 90, 104, 243, 0, 67, 9, 198, 61, 53, 18, 60, 115, 212, 20, 9, 198, 28, 83, 148,
-			36, 193, 64, 66, 9, 198, 21, 48, 200, 36, 225, 64, 20, 9, 198, 16, 80, 201, 8, 83, 0, 67, 9, 198, 16, 80, 193, 48, 241, 192,
-			66, 9, 198, 12, 244, 148, 36, 193, 64, 66, 10, 198, 12, 86, 129, 56, 225, 64, 65, 21, 9, 198, 12, 21, 1, 48, 241, 192, 66, 9,
-			198, 4, 229, 5, 56, 225, 64, 21, 0, 0, 7, 196, 81, 84, 129, 56, 66, 7, 196, 72, 148, 193, 56, 65, 9, 198, 72, 80, 193, 72,
-			81, 0, 20, 7, 196, 52, 20, 197, 72, 66, 7, 196, 12, 244, 197, 56, 21, 7, 196, 5, 83, 15, 76, 67, 0, 19, 2, 95, 125, 49,
-			57, 4, 40, 88, 35, 81, 14, 16, 6, 35, 83, 12, 35, 0, 8, 197, 84, 36, 137, 4, 48, 67, 6, 195, 80, 245, 0, 20, 8, 197,
-			80, 84, 195, 32, 144, 20, 9, 197, 76, 20, 5, 72, 80, 66, 21, 9, 198, 52, 243, 133, 28, 194, 65, 20, 12, 201, 52, 81, 137, 77,
-			67, 198, 20, 193, 64, 67, 8, 197, 28, 19, 1, 80, 144, 65, 9, 198, 21, 2, 70, 4, 226, 65, 68, 8, 197, 5, 52, 197, 16, 144,
-			20, 9, 198, 4, 224, 82, 12, 130, 65, 67, 0, 6, 195, 80, 244, 0, 20, 9, 198, 52, 243, 5, 12, 243, 0, 20, 9, 198, 52, 148,
-			212, 72, 19, 0, 66, 6, 195, 20, 69, 73, 20, 0, 10, 199, 76, 245, 20, 60, 35, 211, 12, 20, 9, 198, 76, 244, 16, 72, 84, 211,
-			20, 10, 199, 64, 147, 129, 12, 245, 5, 12, 20, 11, 199, 64, 20, 148, 20, 227, 208, 20, 66, 20, 10, 199, 52, 243, 132, 4, 67, 210,
-			36, 21, 10, 199, 52, 20, 148, 36, 226, 84, 80, 67, 0, 8, 196, 21, 52, 5, 72, 65, 20, 11, 200, 61, 38, 137, 88, 80, 195, 32,
-			144, 20, 9, 198, 21, 2, 84, 72, 149, 0, 66, 9, 198, 12, 243, 80, 36, 85, 0, 20, 7, 196, 5, 165, 5, 12, 20, 7, 196, 4,
-			229, 65, 44, 66, 9, 198, 4, 193, 129, 8, 85, 0, 20, 7, 196, 4, 115, 210, 4, 67, 0, 8, 197, 80, 83, 129, 12, 80, 66, 9,
-			198, 76, 195, 214, 20, 226, 65, 20, 8, 197, 76, 50, 5, 72, 208, 21, 9, 198, 72, 243, 65, 56, 66, 65, 67, 9, 198, 65, 35, 211,
-			60, 66, 65, 67, 34, 77, 60, 194, 71, 60, 65, 78, 17, 35, 199, 48, 147, 205, 4, 110, 55, 37, 81, 39, 72, 36, 50, 72, 14, 16,
-			39, 61, 6, 37, 110, 65, 35, 0, 8, 197, 56, 21, 83, 20, 16, 65, 9, 198, 52, 243, 148, 60, 113, 201, 20, 8, 197, 52, 148, 212,
-			72, 16, 66, 8, 197, 48, 85, 20, 36, 112, 66, 8, 197, 20, 208, 140, 20, 208, 20, 0, 9, 198, 88, 19, 132, 4, 194, 64, 65, 6,
-			195, 80, 81, 213, 66, 6, 195, 76, 240, 201, 20, 6, 195, 48, 84, 205, 20, 9, 198, 29, 84, 208, 36, 226, 64, 65, 9, 198, 17, 84,
-			15, 56, 66, 64, 20, 6, 195, 12, 244, 201, 66, 9, 198, 12, 129, 82, 4, 66, 64, 65, 0, 10, 199, 24, 83, 77, 36, 226, 76, 20,
-			67, 10, 199, 13, 35, 211, 80, 16, 197, 60, 66, 0, 11, 200, 81, 84, 144, 36, 195, 209, 84, 144, 20, 9, 198, 72, 148, 208, 61, 53,
-			0, 21, 11, 200, 52, 243, 148, 21, 97, 82, 16, 80, 21, 11, 200, 37, 1, 82, 80, 84, 141, 36, 16, 68, 7, 196, 21, 84, 143, 64,
-			20, 0, 12, 201, 69, 80, 68, 72, 145, 143, 28, 194, 64, 20, 9, 198, 37, 3, 212, 4, 192, 77, 67, 0, 9, 198, 5, 97, 86, 4,
-			211, 192, 72, 9, 198, 21, 32, 86, 4, 211, 192, 72, 6, 195, 61, 4, 9, 20, 13, 202, 52, 20, 129, 12, 19, 1, 28, 243, 137, 76,
-			20, 6, 195, 12, 244, 205, 20, 6, 195, 12, 244, 205, 20, 0, 10, 199, 61, 34, 84, 80, 84, 143, 64, 67, 0, 9, 198, 81, 34, 80,
-			61, 53, 0, 21, 8, 196, 76, 84, 193, 52, 65, 20, 0, 8, 197, 76, 85, 146, 21, 48, 20, 9, 198, 16, 148, 208, 72, 244, 201, 20,
-			0, 9, 198, 24, 244, 211, 36, 211, 192, 72, 6, 194, 84, 224, 72, 9, 16, 70, 76, 49, 73, 12, 51, 192, 91, 109, 6, 37, 49, 12,
-			39, 0, 9, 198, 4, 229, 5, 48, 19, 192, 67, 0, 6, 195, 64, 243, 12, 21, 6, 195, 64, 243, 12, 21, 9, 198, 64, 84, 144, 21,
-			69, 79, 20, 19, 70, 12, 148, 131, 84, 149, 15, 76, 37, 14, 16, 49, 6, 40, 37, 47, 39, 0, 0, 7, 195, 76, 19, 15, 66, 20,
-			7, 196, 49, 85, 5, 60, 65, 9, 198, 4, 224, 67, 60, 225, 0, 20, 7, 196, 4, 115, 210, 16, 65, 0, 8, 197, 81, 84, 143, 48,
-			64, 20, 8, 197, 76, 19, 148, 20, 224, 65, 9, 197, 56, 147, 82, 60, 64, 66, 20, 9, 198, 52, 147, 12, 20, 227, 137, 20, 9, 197,
-			12, 244, 132, 60, 32, 65, 21, 0, 6, 195, 81, 83, 201, 72, 9, 198, 69, 80, 76, 37, 64, 64, 67, 6, 195, 52, 81, 9, 20, 6,
-			195, 5, 48, 197, 66, 0, 10, 199, 36, 229, 5, 72, 209, 68, 36, 20, 12, 201, 8, 245, 76, 21, 85, 5, 72, 147, 206, 21, 0, 0,
-			8, 197, 76, 50, 5, 72, 224, 21, 8, 197, 76, 48, 80, 60, 192, 65, 12, 201, 64, 244, 211, 36, 34, 76, 37, 64, 64, 69, 9, 198,
-			64, 80, 195, 36, 243, 9, 20, 10, 198, 56, 83, 65, 80, 241, 9, 67, 20, 8, 197, 12, 244, 16, 60, 192, 20, 0, 10, 198, 36, 224,
-			207, 28, 226, 84, 66, 20, 9, 198, 24, 20, 142, 21, 51, 204, 67, 9, 198, 5, 32, 200, 21, 66, 80, 66, 10, 198, 4, 48, 210, 20,
-			66, 84, 66, 21, 0, 10, 199, 80, 84, 212, 36, 211, 206, 20, 20, 10, 199, 61, 53, 18, 60, 115, 212, 36, 20, 10, 199, 52, 17, 206,
-			21, 68, 143, 56, 65, 10, 199, 16, 148, 207, 56, 84, 212, 4, 68, 9, 198, 16, 148, 195, 61, 65, 67, 20, 0, 7, 196, 104, 85, 71,
-			52, 65, 7, 196, 29, 85, 5, 36, 66, 0, 12, 201, 88, 147, 12, 5, 50, 77, 37, 84, 192, 68, 8, 197, 72, 148, 207, 49, 64, 20,
-			8, 197, 52, 244, 195, 61, 96, 20, 9, 197, 52, 243, 15, 81, 32, 65, 20, 8, 197, 17, 32, 71, 85, 64, 66, 8, 197, 13, 84, 195,
-			85, 64, 65, 0, 13, 202, 80, 83, 78, 61, 52, 15, 56, 66, 76, 36, 20, 9, 198, 76, 20, 211, 60, 225, 64, 65, 10, 198, 64, 144,
-			67, 21, 33, 64, 67, 21, 9, 198, 52, 17, 206, 21, 65, 64, 20, 7, 195, 48, 241, 5, 66, 20, 0, 10, 199, 9, 35, 206, 12, 130,
-			79, 48, 66, 6, 195, 9, 33, 68, 20, 8, 197, 8, 147, 212, 61, 0, 66, 9, 198, 4, 225, 137, 5, 32, 79, 67, 0, 7, 196, 61,
-			52, 143, 20, 65, 7, 196, 20, 194, 77, 36, 65, 7, 196, 13, 84, 15, 48, 65, 0, 9, 198, 64, 84, 144, 21, 69, 65, 20, 9, 198,
-			48, 245, 26, 61, 32, 73, 67, 6, 195, 25, 33, 78, 21, 0, 9, 198, 76, 20, 133, 77, 65, 64, 72, 9, 198, 88, 19, 12, 21, 97,
-			64, 20, 9, 198, 52, 144, 200, 36, 83, 0, 66, 14, 202, 12, 195, 210, 4, 209, 133, 56, 144, 207, 48, 69, 20, 9, 198, 12, 144, 204,
-			61, 1, 64, 20, 0, 10, 199, 69, 80, 68, 73, 84, 15, 48, 67, 10, 199, 64, 144, 195, 5, 33, 9, 4, 67, 10, 199, 52, 16, 210,
-			60, 51, 211, 52, 20, 0, 7, 196, 76, 148, 193, 72, 65, 7, 196, 72, 84, 201, 56, 65, 7, 196, 52, 148, 197, 72, 65, 7, 196, 12,
-			84, 193, 72, 65, 7, 195, 12, 17, 15, 66, 20, 6, 195, 5, 65, 79, 65, 7, 196, 4, 195, 208, 20, 65, 0, 6, 195, 104, 85, 0,
-			20, 15, 69, 80, 82, 83, 80, 16, 47, 109, 6, 37, 89, 47, 35, 0, 9, 198, 76, 145, 206, 61, 34, 65, 67, 8, 197, 64, 83, 15,
-			76, 144, 21, 9, 198, 56, 85, 83, 81, 34, 65, 65, 8, 197, 52, 147, 143, 72, 144, 21, 8, 197, 48, 144, 133, 72, 144, 65, 8, 197,
-			24, 80, 130, 72, 80, 20, 8, 197, 21, 81, 133, 52, 144, 20, 9, 198, 20, 229, 18, 61, 2, 65, 67, 9, 198, 20, 211, 198, 36, 194,
-			65, 68, 8, 197, 16, 80, 143, 48, 80, 65, 6, 195, 9, 33, 78, 21, 8, 197, 8, 19, 19, 4, 208, 65, 8, 197, 5, 48, 197, 76,
-			144, 20, 8, 197, 4, 148, 143, 48, 80, 20, 8, 197, 4, 32, 129, 100, 80, 67, 0, 6, 195, 84, 244, 0, 20, 9, 198, 76, 20, 211,
-			60, 226, 64, 65, 9, 198, 72, 147, 131, 61, 66, 64, 20, 9, 198, 20, 224, 207, 49, 2, 64, 20, 9, 198, 8, 243, 129, 77, 51, 204,
-			67, 0, 6, 195, 64, 84, 212, 21, 6, 195, 37, 51, 204, 65, 10, 199, 20, 48, 197, 57, 68, 137, 12, 20, 0, 11, 200, 80, 244, 142,
-			5, 33, 67, 12, 144, 20, 11, 200, 72, 81, 133, 72, 83, 132, 84, 208, 20, 11, 200, 61, 4, 18, 36, 209, 78, 80, 80, 20, 6, 195,
-			49, 83, 199, 20, 7, 196, 21, 84, 133, 44, 65, 10, 198, 4, 65, 5, 8, 149, 0, 66, 21, 9, 198, 4, 52, 143, 8, 21, 0, 66,
-			0, 8, 197, 77, 97, 86, 36, 16, 20, 8, 197, 72, 85, 15, 72, 80, 65, 10, 198, 61, 35, 211, 12, 244, 0, 66, 20, 8, 197, 24,
-			244, 141, 36, 48, 66, 9, 198, 24, 21, 20, 61, 34, 65, 67, 8, 197, 21, 21, 73, 64, 80, 65, 8, 197, 16, 243, 143, 72, 144, 67,
-			12, 201, 12, 192, 86, 36, 49, 77, 8, 19, 0, 67, 8, 197, 4, 53, 76, 20, 240, 66, 0, 9, 198, 76, 20, 133, 77, 66, 64, 72,
-			9, 198, 105, 80, 195, 5, 34, 64, 65, 13, 202, 80, 145, 204, 5, 68, 9, 48, 84, 197, 72, 20, 6, 195, 76, 244, 201, 20, 9, 198,
-			64, 147, 69, 57, 65, 76, 67, 9, 198, 28, 148, 143, 77, 64, 84, 66, 9, 198, 9, 80, 195, 5, 34, 64, 65, 0, 10, 198, 64, 19,
-			13, 5, 33, 83, 67, 20, 10, 199, 60, 211, 218, 36, 115, 212, 20, 20, 10, 199, 52, 148, 129, 24, 147, 210, 36, 21, 10, 199, 36, 229,
-			18, 60, 67, 212, 80, 21, 6, 195, 21, 51, 196, 20, 0, 6, 195, 64, 243, 3, 20, 7, 196, 64, 193, 90, 104, 20, 7, 196, 48, 85,
-			67, 36, 65, 12, 201, 37, 3, 195, 48, 244, 137, 17, 34, 65, 69, 11, 200, 16, 83, 79, 13, 32, 90, 36, 16, 68, 11, 200, 12, 21,
-			20, 37, 97, 82, 36, 16, 67, 11, 200, 8, 21, 20, 36, 53, 79, 72, 80, 20, 11, 200, 4, 116, 143, 76, 148, 212, 20, 208, 20, 0,
-			6, 195, 80, 243, 6, 20, 9, 198, 65, 33, 78, 76, 147, 5, 20, 6, 195, 61, 1, 82, 21, 9, 198, 28, 21, 68, 20, 230, 137, 20,
-			9, 198, 12, 84, 129, 56, 84, 201, 66, 0, 6, 195, 76, 19, 5, 66, 9, 198, 36, 227, 143, 13, 83, 192, 20, 6, 195, 28, 147, 5,
-			66, 10, 198, 20, 211, 69, 57, 64, 76, 65, 20, 0, 6, 195, 81, 83, 192, 72, 6, 195, 80, 243, 4, 20, 10, 199, 60, 113, 201, 28,
-			147, 210, 56, 21, 6, 195, 37, 64, 76, 65, 10, 199, 24, 147, 129, 48, 35, 210, 28, 21, 10, 199, 8, 243, 129, 12, 243, 19, 36, 20,
-			0, 7, 196, 36, 228, 201, 80, 65, 7, 196, 4, 67, 210, 56, 21, 0, 9, 198, 56, 240, 195, 36, 243, 1, 66, 9, 198, 52, 20, 195,
-			32, 147, 5, 66, 6, 195, 48, 241, 26, 21, 0, 11, 70, 36, 229, 5, 72, 225, 84, 21, 0, 10, 11, 67, 21, 52, 197, 36, 89, 89,
-			36, 0, 76, 6, 195, 64, 244, 5, 20, 6, 195, 17, 83, 205, 20, 10, 198, 12, 243, 135, 73, 83, 192, 65, 20, 0, 10, 199, 76, 16,
-			210, 36, 193, 71, 36, 20, 10, 199, 16, 241, 9, 12, 84, 201, 52, 20, 0, 6, 195, 80, 245, 15, 66, 6, 195, 80, 245, 15, 20, 7,
-			196, 44, 22, 65, 44, 66, 8, 196, 21, 69, 1, 72, 65, 20, 0, 9, 198, 64, 192, 83, 52, 241, 9, 20, 8, 197, 12, 147, 212, 60,
-			192, 65, 9, 198, 12, 19, 12, 36, 244, 5, 66, 8, 197, 9, 80, 195, 36, 224, 65, 0, 11, 67, 21, 52, 193, 36, 89, 89, 35, 0,
-			76, 9, 198, 88, 83, 149, 77, 64, 64, 67, 9, 198, 72, 17, 206, 5, 65, 76, 21, 10, 198, 48, 147, 65, 77, 51, 204, 67, 21, 13,
-			202, 21, 48, 67, 37, 51, 212, 80, 17, 68, 72, 20, 9, 198, 16, 148, 195, 5, 2, 84, 66, 0, 10, 199, 65, 35, 211, 21, 36, 9,
-			56, 66, 10, 199, 28, 19, 66, 4, 51, 210, 80, 21, 6, 195, 21, 52, 192, 21, 10, 199, 12, 243, 73, 56, 99, 210, 52, 67, 6, 195,
-			5, 51, 204, 65, 0, 7, 196, 24, 244, 212, 36, 72, 7, 196, 80, 85, 67, 72, 65, 7, 196, 48, 241, 204, 36, 20, 7, 196, 12, 244,
-			212, 4, 66, 0, 9, 198, 88, 19, 7, 60, 115, 9, 20, 8, 197, 52, 84, 195, 4, 192, 66, 8, 197, 16, 243, 13, 20, 224, 20, 8,
-			197, 12, 243, 135, 20, 64, 20, 0, 10, 198, 60, 211, 137, 9, 84, 192, 65, 20, 9, 198, 56, 81, 210, 37, 64, 64, 67, 9, 198, 12,
-			244, 148, 37, 51, 204, 67, 0, 15, 67, 93, 117, 192, 6, 84, 40, 6, 84, 40, 6, 84, 40, 0, 10, 199, 52, 243, 148, 61, 33, 129,
-			56, 66, 10, 199, 8, 192, 83, 80, 244, 15, 72, 66, 10, 199, 4, 116, 137, 24, 241, 204, 36, 20, 0, 7, 196, 80, 81, 207, 48, 65,
-			9, 198, 65, 35, 199, 21, 69, 0, 20, 9, 198, 64, 19, 131, 21, 69, 0, 21, 7, 196, 56, 241, 77, 36, 20, 7, 196, 28, 147, 210,
-			56, 21, 0, 8, 197, 53, 84, 212, 21, 32, 66, 9, 198, 48, 240, 193, 48, 149, 1, 68, 9, 198, 24, 147, 1, 72, 85, 5, 20, 9,
-			198, 12, 19, 3, 5, 33, 69, 66, 0, 11, 67, 21, 52, 201, 36, 89, 89, 37, 0, 76, 9, 198, 80, 84, 211, 21, 33, 64, 20, 9,
-			198, 56, 84, 212, 61, 33, 64, 65, 6, 195, 16, 245, 5, 20, 10, 198, 12, 80, 210, 61, 1, 64, 65, 20, 0, 12, 201, 36, 226, 78,
-			80, 84, 146, 61, 69, 0, 21, 6, 195, 21, 51, 208, 20, 10, 199, 12, 243, 12, 20, 195, 206, 28, 20, 0, 7, 196, 24, 244, 211, 20,
-			72, 11, 200, 52, 243, 148, 20, 97, 76, 81, 32, 21, 0, 8, 197, 76, 81, 213, 37, 64, 65, 8, 197, 64, 243, 4, 21, 32, 20, 9,
-			198, 61, 69, 15, 80, 148, 9, 66, 8, 197, 56, 148, 16, 85, 32, 66, 8, 197, 48, 85, 20, 21, 32, 20, 8, 197, 28, 19, 66, 5,
-			32, 65, 9, 197, 16, 84, 208, 61, 64, 65, 20, 0, 5, 194, 88, 240, 20, 6, 195, 60, 145, 9, 66, 9, 198, 48, 16, 200, 21, 65,
-			64, 20, 0, 11, 199, 29, 35, 211, 76, 243, 79, 16, 67, 20, 12, 201, 25, 32, 78, 12, 144, 67, 61, 37, 0, 21, 0, 7, 196, 76,
-			144, 84, 20, 72, 7, 196, 64, 17, 201, 56, 65, 11, 200, 24, 83, 137, 12, 245, 20, 21, 32, 20, 11, 200, 8, 19, 5, 56, 245, 20,
-			21, 32, 20, 7, 196, 5, 52, 18, 36, 66, 0, 8, 197, 24, 16, 197, 88, 16, 76, 6, 195, 88, 245, 0, 20, 8, 197, 76, 147, 148,
-			60, 208, 65, 8, 197, 72, 22, 154, 36, 16, 66, 8, 197, 64, 22, 154, 36, 16, 66, 9, 198, 52, 84, 137, 77, 65, 77, 20, 8, 197,
-			52, 20, 133, 52, 208, 21, 8, 197, 36, 212, 1, 72, 144, 65, 8, 197, 5, 3, 210, 36, 16, 67, 0, 6, 195, 64, 241, 9, 20, 9,
-			198, 64, 18, 12, 5, 98, 64, 65, 9, 198, 9, 33, 83, 4, 243, 0, 66, 0, 9, 198, 76, 20, 146, 60, 50, 0, 66, 9, 198, 5,
-			85, 5, 57, 66, 67, 20, 9, 198, 5, 85, 5, 57, 66, 67, 20, 0, 7, 196, 24, 244, 212, 20, 72, 9, 198, 76, 19, 79, 76, 21,
-			0, 66, 11, 200, 56, 147, 134, 60, 208, 78, 36, 16, 68, 7, 196, 36, 224, 213, 8, 65, 7, 196, 21, 53, 5, 72, 65, 9, 198, 4,
-			192, 193, 57, 64, 82, 66, 0, 9, 197, 12, 243, 148, 72, 240, 76, 28, 9, 197, 76, 51, 210, 104, 80, 66, 20, 8, 197, 72, 81, 9,
-			56, 144, 65, 9, 198, 60, 211, 212, 61, 2, 65, 68, 9, 197, 53, 81, 199, 36, 240, 66, 20, 8, 197, 28, 197, 84, 20, 240, 65, 8,
-			197, 28, 149, 82, 36, 16, 66, 9, 198, 24, 243, 7, 5, 34, 65, 67, 8, 197, 20, 113, 82, 36, 16, 66, 9, 198, 9, 83, 7, 5,
-			34, 65, 67, 8, 197, 4, 97, 143, 72, 144, 65, 8, 197, 4, 50, 5, 56, 144, 20, 0, 9, 198, 76, 147, 133, 17, 34, 64, 20, 9,
-			198, 9, 83, 7, 5, 34, 64, 65, 9, 198, 4, 84, 143, 77, 64, 84, 66, 0, 15, 203, 52, 243, 143, 12, 245, 9, 48, 81, 15, 56,
-			144, 69, 20, 10, 199, 4, 52, 85, 20, 67, 212, 80, 21, 0, 11, 200, 77, 68, 129, 56, 117, 82, 36, 16, 67, 11, 200, 52, 243, 148,
-			21, 97, 82, 16, 144, 21, 11, 200, 52, 243, 66, 5, 35, 195, 12, 144, 20, 7, 195, 44, 20, 15, 66, 20, 11, 200, 13, 80, 149, 49,
-			65, 82, 36, 16, 67, 11, 200, 4, 115, 210, 4, 99, 194, 36, 16, 69, 11, 200, 4, 34, 79, 81, 35, 198, 36, 16, 69, 0, 6, 195,
-			85, 65, 82, 65, 6, 195, 52, 85, 18, 21, 10, 198, 36, 83, 80, 76, 19, 5, 65, 20, 8, 197, 4, 64, 77, 5, 48, 67, 0, 0,
-			15, 204, 56, 85, 82, 61, 4, 201, 12, 130, 65, 81, 34, 65, 70, 14, 203, 36, 195, 21, 52, 147, 143, 80, 80, 206, 36, 48, 20, 0,
-			7, 196, 21, 53, 5, 80, 20, 7, 196, 5, 53, 1, 80, 65, 9, 198, 5, 32, 71, 61, 53, 0, 21, 0, 8, 197, 52, 17, 18, 5,
-			48, 66, 9, 198, 4, 65, 82, 8, 19, 5, 66, 0, 9, 198, 72, 144, 83, 76, 85, 20, 20, 0, 10, 199, 88, 19, 12, 20, 51, 210,
-			76, 21, 10, 199, 24, 147, 1, 57, 68, 143, 64, 66, 0, 7, 196, 76, 145, 86, 20, 20, 0, 8, 197, 77, 1, 67, 60, 192, 20, 12,
-			201, 76, 245, 20, 61, 4, 143, 16, 245, 20, 21, 8, 197, 24, 20, 195, 36, 224, 65, 8, 197, 12, 20, 195, 36, 224, 65, 8, 197, 8,
-			20, 142, 4, 32, 65, 8, 197, 4, 192, 207, 60, 192, 65, 0, 9, 198, 88, 80, 195, 32, 144, 64, 20, 9, 198, 81, 84, 131, 32, 144,
-			64, 66, 9, 198, 80, 85, 20, 60, 144, 64, 21, 9, 198, 72, 244, 193, 48, 144, 64, 67, 9, 198, 52, 19, 16, 20, 228, 192, 21, 9,
-			198, 24, 244, 195, 32, 144, 64, 66, 9, 198, 12, 240, 195, 32, 144, 64, 20, 9, 198, 12, 20, 137, 61, 66, 80, 67, 9, 198, 4, 48,
-			193, 16, 144, 64, 67, 9, 198, 4, 32, 129, 16, 144, 64, 67, 0, 6, 195, 76, 144, 64, 72, 10, 135, 2, 5, 14, 3, 8, 195, 168,
-			8, 10, 199, 65, 35, 208, 72, 145, 84, 4, 68, 12, 201, 65, 35, 195, 20, 66, 77, 20, 229, 0, 20, 0, 8, 196, 56, 81, 204, 36,
-			72, 28, 11, 200, 52, 243, 148, 21, 161, 77, 60, 192, 20, 9, 198, 16, 144, 80, 5, 51, 206, 66, 7, 196, 12, 244, 212, 36, 66, 9,
-			198, 4, 32, 129, 56, 67, 206, 21, 0, 8, 197, 76, 20, 147, 36, 224, 65, 8, 197, 52, 19, 135, 4, 224, 65, 12, 201, 4, 229, 15,
-			56, 243, 65, 76, 144, 64, 68, 0, 9, 198, 72, 244, 207, 48, 144, 64, 67, 9, 198, 64, 193, 83, 80, 144, 64, 65, 13, 202, 64, 145,
-			90, 60, 83, 5, 81, 68, 137, 12, 20, 0, 10, 198, 76, 179, 208, 20, 195, 211, 65, 21, 6, 195, 20, 209, 64, 20, 11, 199, 8, 83,
-			22, 20, 65, 82, 20, 67, 21, 0, 7, 196, 72, 81, 207, 48, 65, 7, 196, 64, 17, 207, 16, 20, 12, 200, 52, 243, 148, 20, 209, 83,
-			60, 192, 67, 20, 7, 196, 52, 241, 207, 48, 66, 9, 198, 16, 144, 76, 21, 69, 0, 20, 6, 195, 12, 145, 67, 20, 7, 196, 4, 228,
-			201, 4, 65, 7, 196, 4, 115, 211, 80, 21, 0, 9, 197, 104, 81, 134, 37, 32, 65, 20, 12, 201, 21, 51, 211, 12, 129, 76, 21, 68,
-			128, 67, 6, 195, 4, 209, 66, 20, 0, 9, 198, 21, 49, 81, 84, 145, 64, 20, 9, 198, 12, 240, 195, 36, 113, 64, 20, 0, 6, 195,
-			64, 241, 64, 20, 0, 7, 196, 76, 17, 207, 52, 65, 0, 8, 197, 88, 84, 148, 61, 96, 65, 8, 197, 80, 81, 84, 21, 64, 20, 8,
-			197, 80, 19, 129, 29, 32, 65, 8, 197, 48, 22, 154, 5, 32, 65, 12, 201, 24, 243, 148, 4, 225, 76, 36, 49, 64, 21, 8, 197, 20,
-			209, 82, 37, 64, 66, 9, 198, 12, 243, 3, 32, 145, 5, 20, 0, 9, 198, 88, 84, 142, 36, 49, 64, 66, 6, 195, 80, 243, 73, 20,
-			9, 198, 12, 244, 142, 36, 49, 64, 66, 9, 198, 4, 229, 9, 56, 241, 64, 66, 0, 10, 199, 81, 32, 77, 60, 113, 201, 4, 20, 12,
-			201, 24, 243, 148, 4, 226, 71, 61, 33, 0, 21, 9, 198, 12, 19, 3, 5, 33, 79, 66, 0, 7, 196, 73, 81, 137, 56, 65, 9, 198,
-			64, 19, 148, 4, 195, 206, 67, 7, 196, 52, 241, 207, 72, 65, 7, 196, 8, 21, 76, 20, 67, 0, 8, 197, 36, 229, 133, 12, 80, 8,
-			8, 197, 81, 83, 137, 76, 144, 65, 8, 197, 73, 81, 134, 36, 16, 66, 8, 197, 65, 35, 210, 60, 112, 65, 8, 197, 61, 32, 77, 4,
-			144, 67, 8, 197, 56, 147, 137, 88, 80, 65, 9, 198, 37, 51, 212, 72, 244, 0, 66, 8, 197, 12, 130, 83, 76, 16, 66, 8, 197, 5,
-			32, 197, 56, 80, 65, 10, 198, 4, 48, 68, 20, 210, 65, 67, 20, 0, 10, 135, 16, 5, 18, 3, 8, 195, 169, 8, 9, 198, 81, 33,
-			77, 21, 166, 128, 20, 9, 198, 80, 243, 13, 21, 166, 128, 20, 0, 6, 195, 64, 244, 16, 21, 11, 200, 28, 84, 211, 61, 0, 76, 20,
-			224, 21, 10, 199, 12, 243, 5, 61, 69, 5, 72, 20, 0, 7, 196, 76, 49, 76, 80, 21, 8, 196, 61, 101, 133, 72, 66, 21, 9, 198,
-			52, 20, 133, 52, 245, 0, 20, 10, 198, 36, 229, 143, 49, 80, 210, 66, 20, 7, 195, 20, 209, 83, 65, 20, 0, 8, 197, 84, 243, 73,
-			56, 144, 65, 9, 198, 76, 83, 5, 84, 50, 65, 66, 8, 197, 4, 52, 85, 20, 240, 65, 8, 197, 4, 32, 90, 36, 16, 67, 0, 6,
-			195, 16, 243, 65, 20, 6, 195, 4, 195, 197, 20, 0, 0, 12, 200, 52, 144, 210, 60, 225, 83, 36, 16, 67, 20, 11, 200, 36, 224, 213,
-			73, 50, 79, 56, 80, 20, 11, 200, 28, 83, 195, 20, 229, 18, 36, 48, 20, 11, 200, 12, 243, 131, 20, 229, 18, 36, 48, 20, 0, 0,
-			6, 195, 80, 243, 69, 66, 9, 198, 28, 84, 143, 48, 19, 64, 66, 13, 202, 12, 20, 212, 72, 245, 137, 48, 192, 82, 36, 67, 9, 198,
-			4, 208, 76, 28, 19, 64, 66, 0, 6, 195, 21, 67, 128, 20, 9, 198, 5, 32, 200, 36, 195, 195, 66, 7, 195, 4, 195, 192, 66, 20,
-			0, 7, 196, 24, 244, 211, 36, 72, 9, 198, 80, 85, 18, 4, 81, 18, 20, 0, 0, 9, 198, 76, 20, 129, 56, 227, 192, 72, 9, 198,
-			64, 243, 9, 24, 83, 64, 20, 9, 198, 52, 16, 193, 16, 19, 64, 67, 0, 6, 195, 20, 196, 192, 21, 6, 195, 20, 67, 204, 20, 9,
-			198, 4, 229, 8, 20, 210, 83, 65, 0, 7, 196, 64, 145, 86, 20, 20, 0, 9, 198, 8, 20, 149, 52, 147, 137, 66, 0, 9, 198, 81,
-			32, 78, 88, 144, 64, 66, 9, 198, 72, 81, 193, 48, 144, 64, 67, 9, 198, 36, 224, 197, 57, 68, 128, 20, 9, 198, 21, 161, 67, 32,
-			144, 64, 67, 0, 9, 198, 88, 147, 204, 4, 49, 79, 67, 10, 199, 76, 49, 71, 48, 145, 82, 20, 65, 10, 199, 5, 34, 83, 80, 17,
-			207, 72, 67, 0, 8, 196, 80, 145, 210, 20, 66, 20, 0, 12, 201, 76, 51, 210, 12, 144, 84, 60, 144, 64, 21, 9, 198, 4, 48, 213,
-			52, 243, 9, 66, 0, 9, 198, 52, 83, 15, 16, 144, 64, 67, 9, 198, 4, 227, 211, 52, 144, 64, 67, 9, 198, 4, 192, 149, 56, 80,
-			64, 66, 0, 10, 199, 72, 148, 18, 37, 53, 9, 56, 66, 10, 199, 64, 80, 197, 56, 81, 200, 36, 20, 10, 199, 36, 225, 197, 28, 225,
-			82, 20, 67, 6, 195, 20, 213, 64, 66, 10, 199, 12, 83, 148, 60, 48, 200, 36, 20, 0, 9, 198, 12, 149, 20, 4, 227, 214, 20, 0,
-			8, 197, 24, 84, 133, 81, 32, 65, 12, 201, 12, 148, 212, 36, 97, 76, 48, 80, 64, 67, 8, 197, 8, 20, 129, 81, 32, 65, 0, 0,
-			0, 0, 9, 198, 88, 147, 204, 4, 49, 69, 67, 0, 9, 198, 76, 85, 20, 36, 209, 64, 65, 9, 198, 76, 52, 143, 24, 243, 0, 65,
-			6, 195, 64, 241, 77, 20, 9, 198, 56, 240, 195, 36, 243, 0, 20, 9, 198, 25, 32, 84, 80, 83, 80, 20, 10, 198, 12, 21, 5, 12,
-			243, 0, 67, 20, 9, 198, 4, 84, 143, 28, 83, 0, 67, 0, 10, 199, 64, 84, 146, 20, 112, 85, 96, 66, 9, 198, 36, 68, 143, 12,
-			244, 147, 21, 10, 199, 4, 224, 83, 80, 20, 201, 4, 67, 0, 7, 196, 76, 145, 84, 20, 72, 9, 198, 36, 225, 15, 52, 149, 0, 66,
-			9, 198, 21, 49, 82, 12, 149, 0, 66, 7, 196, 12, 245, 80, 20, 67, 9, 198, 8, 144, 84, 32, 195, 206, 65, 0, 8, 197, 24, 16,
-			195, 36, 240, 76, 9, 198, 88, 148, 201, 28, 245, 9, 20, 8, 197, 80, 80, 206, 36, 48, 20, 8, 197, 72, 148, 15, 48, 144, 65, 8,
-			197, 64, 144, 206, 36, 48, 66, 8, 197, 61, 35, 211, 20, 144, 67, 9, 197, 8, 84, 143, 36, 16, 65, 21, 8, 197, 8, 16, 200, 20,
-			48, 20, 8, 197, 5, 161, 71, 48, 144, 20, 0, 9, 198, 81, 32, 77, 21, 166, 128, 20, 9, 198, 64, 20, 146, 36, 50, 68, 67, 9,
-			198, 48, 19, 149, 76, 82, 64, 67, 9, 198, 5, 32, 193, 56, 113, 76, 66, 0, 10, 199, 12, 129, 76, 36, 49, 82, 36, 66, 0, 11,
-			200, 76, 245, 20, 61, 33, 9, 56, 80, 21, 12, 201, 76, 51, 5, 72, 241, 5, 72, 210, 65, 68, 9, 198, 72, 80, 193, 64, 149, 0,
-			66, 11, 200, 52, 243, 69, 57, 64, 78, 20, 240, 67, 11, 200, 37, 53, 1, 57, 64, 78, 20, 240, 67, 0, 8, 197, 48, 83, 206, 104,
-			144, 20, 9, 198, 4, 192, 200, 36, 210, 65, 66, 0, 9, 198, 72, 243, 65, 28, 227, 204, 67, 9, 198, 12, 243, 12, 20, 114, 64, 20,
-			0, 6, 195, 64, 241, 84, 20, 11, 199, 20, 212, 5, 16, 240, 204, 20, 66, 20, 10, 199, 12, 20, 193, 80, 145, 76, 48, 21, 0, 9,
-			198, 77, 64, 82, 61, 53, 0, 65, 11, 200, 72, 83, 1, 80, 149, 137, 80, 16, 69, 11, 200, 64, 148, 143, 80, 80, 206, 36, 48, 20,
-			11, 200, 52, 81, 193, 21, 51, 198, 4, 112, 68, 12, 200, 24, 244, 211, 4, 49, 83, 36, 16, 67, 20, 11, 200, 20, 115, 195, 20, 229,
-			18, 36, 48, 20, 0, 6, 18, 66, 195, 160, 0, 195, 178, 0, 195, 179, 0, 195, 185, 0, 97, 0, 111, 0, 117, 0, 7, 6, 18, 67,
-			195, 169, 0, 195, 168, 0, 101, 0, 7, 6, 195, 160, 0, 3, 7, 35, 0, 117, 3, 7, 35, 2, 40, 0, 111, 2, 32, 24, 3, 7,
-			114, 0, 105, 2, 25, 3, 7, 117, 0, 7, 6, 97, 0, 4, 1, 21, 2, 98, 105, 108, 101, 32, 3, 6, 35, 0, 1, 21, 2, 103,
-			103, 105, 110, 101, 32, 0, 2, 116, 116, 101, 114, 17, 65, 32, 0, 118, 97, 110, 111, 1, 21, 2, 32, 14, 128, 128, 133, 3, 6, 35,
-			84, 35, 50, 39, 0, 4, 1, 21, 2, 99, 17, 65, 32, 3, 8, 35, 0, 1, 21, 2, 99, 104, 101, 32, 0, 4, 3, 35, 0, 1,
-			17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 105, 21, 2, 32, 14, 128, 192, 129, 0, 2, 105, 115, 109, 111, 32, 0, 2, 105, 115,
-			116, 17, 65, 32, 0, 117, 3, 35, 2, 40, 0, 111, 2, 32, 24, 3, 114, 0, 4, 101, 8, 2, 114, 3, 117, 0, 105, 2, 25, 0,
-			7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12, 0, 7, 6, 99, 0, 111, 1, 21, 2, 108, 17, 65, 32, 3, 8, 49, 39, 0, 4,
-			3, 49, 0, 104, 0, 4, 99, 3, 49, 12, 0, 99, 104, 0, 4, 2, 17, 71, 3, 76, 0, 2, 39, 0, 105, 2, 17, 65, 0, 4,
-			99, 2, 17, 71, 3, 76, 12, 0, 99, 105, 2, 17, 65, 0, 7, 6, 100, 0, 101, 114, 101, 1, 110, 3, 8, 72, 36, 51, 36, 0,
-			3, 72, 0, 100, 3, 72, 12, 0, 7, 6, 101, 0, 4, 1, 21, 2, 115, 105, 109, 111, 32, 3, 6, 36, 0, 1, 21, 2, 118, 111,
-			108, 17, 65, 32, 0, 2, 109, 111, 110, 17, 65, 32, 0, 4, 1, 17, 65, 2, 114, 32, 3, 6, 109, 0, 1, 21, 2, 114, 114, 105,
-			109, 111, 32, 0, 1, 21, 2, 99, 105, 32, 3, 8, 36, 0, 4, 1, 17, 67, 2, 114, 101, 32, 3, 8, 109, 0, 1, 17, 67, 11,
-			2, 114, 17, 65, 32, 0, 4, 3, 36, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 102, 2, 114, 109, 0, 1, 104, 2,
-			115, 115, 0, 1, 109, 2, 115, 115, 0, 1, 109, 21, 2, 110, 116, 17, 65, 32, 0, 1, 114, 17, 65, 21, 2, 32, 0, 2, 110, 103,
-			17, 65, 32, 0, 2, 114, 115, 105, 32, 24, 0, 2, 115, 115, 97, 32, 0, 2, 116, 116, 17, 65, 32, 0, 2, 122, 122, 17, 65, 32,
-			0, 8, 17, 67, 115, 2, 115, 115, 0, 4, 1, 99, 2, 116, 116, 17, 65, 32, 3, 109, 0, 1, 103, 2, 110, 101, 0, 1, 103, 103,
-			2, 114, 111, 32, 0, 1, 114, 2, 109, 0, 2, 17, 65, 0, 2, 17, 67, 11, 17, 65, 32, 0, 2, 17, 67, 32, 0, 2, 17, 67,
-			105, 17, 67, 17, 65, 32, 0, 2, 17, 67, 117, 108, 17, 65, 32, 0, 2, 108, 0, 2, 108, 108, 117, 0, 2, 110, 17, 65, 32, 0,
-			2, 110, 17, 67, 17, 65, 32, 0, 2, 114, 0, 2, 115, 116, 0, 2, 116, 105, 0, 2, 116, 114, 0, 2, 116, 116, 105, 21, 0, 2,
-			118, 105, 32, 0, 2, 118, 111, 32, 0, 2, 122, 17, 65, 0, 8, 114, 0, 105, 2, 25, 3, 109, 57, 0, 7, 6, 102, 0, 4, 1,
-			17, 65, 2, 101, 114, 111, 32, 3, 8, 83, 0, 1, 17, 65, 21, 2, 105, 108, 111, 32, 0, 3, 83, 0, 7, 6, 103, 0, 103, 101,
-			114, 1, 21, 2, 108, 111, 32, 3, 8, 75, 12, 36, 51, 0, 4, 108, 2, 105, 3, 61, 0, 108, 2, 195, 172, 0, 108, 105, 2, 17,
-			65, 0, 110, 3, 67, 0, 4, 2, 17, 71, 3, 75, 0, 105, 1, 110, 2, 97, 32, 0, 105, 2, 17, 65, 0, 4, 105, 2, 97, 32,
-			3, 75, 6, 125, 0, 195, 172, 2, 97, 32, 0, 4, 103, 2, 17, 71, 3, 75, 12, 0, 103, 105, 2, 17, 65, 0, 4, 3, 81, 0,
-			104, 0, 103, 3, 81, 12, 0, 108, 8, 3, 81, 55, 0, 117, 2, 17, 65, 3, 81, 58, 0, 7, 6, 104, 0, 3, 0, 4, 97, 8,
-			3, 107, 6, 35, 0, 195, 160, 8, 0, 7, 6, 105, 0, 4, 1, 108, 2, 17, 65, 3, 2, 37, 0, 1, 114, 2, 17, 65, 0, 4,
-			1, 21, 2, 98, 105, 108, 101, 32, 3, 6, 37, 0, 1, 21, 2, 100, 101, 114, 101, 32, 0, 2, 97, 99, 17, 65, 32, 0, 2, 97,
-			115, 105, 32, 0, 2, 103, 101, 110, 17, 65, 32, 0, 4, 97, 1, 29, 2, 32, 3, 6, 37, 35, 0, 97, 1, 102, 97, 2, 32, 0,
-			97, 1, 110, 111, 102, 2, 32, 0, 97, 1, 112, 111, 99, 115, 2, 32, 0, 97, 1, 114, 101, 2, 32, 0, 97, 1, 114, 111, 103, 2,
-			32, 0, 97, 1, 114, 116, 101, 109, 2, 32, 0, 97, 1, 116, 2, 32, 0, 110, 97, 115, 2, 32, 3, 6, 37, 50, 35, 89, 0, 115,
-			115, 101, 114, 111, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 37, 89, 89, 36, 34, 39, 0, 115, 115, 105, 109, 97, 1, 21, 2, 32,
-			14, 128, 128, 134, 3, 6, 37, 89, 89, 37, 65, 35, 0, 115, 115, 105, 109, 101, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 37, 89,
-			89, 37, 65, 36, 0, 115, 115, 105, 109, 105, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 37, 89, 89, 37, 65, 37, 0, 115, 115, 105,
-			109, 111, 1, 21, 2, 32, 14, 128, 128, 134, 3, 6, 37, 89, 89, 37, 65, 39, 0, 4, 1, 21, 2, 99, 17, 65, 32, 3, 8, 37,
-			0, 1, 21, 2, 99, 104, 17, 65, 32, 0, 1, 21, 2, 100, 17, 65, 32, 0, 1, 21, 2, 103, 17, 65, 32, 0, 1, 21, 2, 109,
-			97, 32, 0, 1, 21, 2, 109, 111, 32, 0, 1, 98, 2, 108, 101, 32, 0, 1, 99, 2, 108, 17, 65, 32, 0, 1, 103, 2, 108, 17,
-			65, 32, 0, 1, 109, 2, 108, 101, 32, 0, 1, 112, 2, 116, 101, 32, 0, 1, 114, 17, 67, 97, 108, 2, 109, 97, 32, 0, 1, 115,
-			115, 2, 108, 17, 65, 32, 0, 2, 108, 17, 65, 32, 0, 2, 110, 101, 32, 0, 97, 1, 21, 2, 32, 3, 8, 37, 2, 35, 0, 111,
-			1, 21, 2, 32, 14, 128, 192, 129, 3, 8, 37, 2, 39, 0, 4, 3, 37, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1,
-			21, 2, 17, 65, 110, 116, 101, 32, 0, 1, 114, 2, 109, 97, 32, 0, 1, 114, 116, 2, 99, 101, 32, 0, 1, 116, 115, 2, 109, 97,
-			32, 0, 1, 122, 110, 101, 2, 109, 97, 32, 0, 2, 111, 0, 2, 195, 178, 0, 2, 195, 179, 0, 8, 17, 67, 2, 97, 0, 8, 17,
-			67, 2, 195, 160, 0, 195, 160, 1, 21, 2, 32, 3, 37, 6, 35, 0, 4, 101, 1, 21, 2, 114, 17, 65, 32, 3, 37, 6, 109, 0,
-			195, 168, 1, 21, 2, 114, 17, 65, 32, 0, 195, 169, 1, 21, 2, 114, 17, 65, 32, 0, 4, 1, 18, 67, 2, 12, 3, 57, 0, 1,
-			97, 2, 12, 0, 1, 111, 2, 12, 0, 1, 160, 195, 2, 12, 0, 2, 17, 65, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0,
-			3, 49, 0, 107, 3, 49, 12, 0, 7, 6, 108, 0, 4, 3, 55, 0, 108, 2, 32, 0, 108, 2, 17, 67, 3, 55, 10, 0, 7, 6,
-			109, 0, 3, 65, 0, 105, 1, 17, 65, 2, 97, 32, 3, 65, 6, 37, 0, 7, 6, 110, 0, 4, 3, 50, 0, 2, 103, 17, 71, 0,
-			4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 4, 1, 21, 2, 103, 110, 111, 108, 111, 32, 3, 6, 39, 0, 1, 21, 2,
-			110, 122, 111, 108, 111, 32, 0, 4, 1, 21, 2, 102, 111, 110, 111, 32, 3, 6, 110, 0, 1, 21, 2, 103, 114, 97, 102, 111, 32, 0,
-			1, 21, 2, 108, 111, 103, 111, 32, 0, 1, 21, 2, 109, 101, 116, 114, 111, 32, 0, 1, 21, 2, 110, 111, 109, 111, 32, 0, 1, 108,
-			2, 103, 105, 99, 111, 32, 0, 2, 103, 101, 110, 17, 65, 32, 0, 2, 112, 111, 108, 17, 65, 32, 0, 2, 115, 116, 114, 97, 99, 17,
-			65, 32, 0, 4, 1, 21, 2, 100, 105, 32, 3, 8, 39, 0, 1, 21, 2, 100, 111, 32, 0, 1, 114, 100, 2, 109, 111, 32, 0, 1,
-			118, 2, 108, 17, 65, 32, 0, 4, 1, 17, 67, 17, 67, 2, 108, 17, 65, 32, 3, 8, 110, 0, 1, 21, 2, 108, 111, 32, 0, 1,
-			100, 110, 2, 108, 17, 65, 32, 0, 1, 105, 99, 2, 108, 17, 65, 32, 0, 1, 115, 110, 2, 108, 17, 65, 32, 0, 4, 3, 39, 0,
-			1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 99, 115, 2, 108, 116, 17, 65, 32, 0, 1, 102, 2, 114, 109, 17, 65, 32, 0,
-			1, 105, 2, 110, 101, 0, 1, 105, 2, 115, 111, 32, 0, 1, 105, 21, 2, 32, 14, 128, 192, 129, 0, 1, 114, 17, 65, 2, 115, 115,
-			17, 65, 32, 0, 2, 110, 105, 32, 0, 2, 114, 101, 32, 0, 105, 2, 111, 32, 3, 39, 2, 126, 0, 105, 2, 115, 17, 67, 17, 65,
-			32, 3, 39, 6, 37, 0, 4, 1, 21, 2, 108, 97, 32, 3, 110, 0, 1, 21, 2, 108, 105, 17, 65, 32, 0, 1, 21, 2, 109, 97,
-			32, 0, 1, 21, 2, 109, 111, 32, 0, 1, 99, 2, 108, 116, 17, 65, 32, 0, 1, 99, 115, 2, 112, 0, 1, 105, 0, 1, 105, 2,
-			108, 17, 65, 32, 0, 1, 109, 2, 98, 105, 108, 101, 0, 1, 110, 103, 2, 108, 97, 32, 0, 1, 117, 2, 108, 17, 65, 32, 0, 1,
-			118, 2, 108, 116, 0, 2, 17, 67, 11, 17, 65, 32, 0, 2, 17, 67, 17, 65, 17, 67, 17, 65, 32, 0, 2, 17, 67, 17, 67, 32,
-			0, 2, 17, 67, 114, 0, 2, 99, 97, 32, 0, 2, 99, 111, 32, 0, 2, 108, 29, 0, 2, 108, 105, 0, 2, 110, 105, 0, 2, 110,
-			111, 32, 0, 2, 111, 0, 2, 114, 0, 2, 115, 105, 32, 0, 2, 115, 115, 0, 2, 115, 116, 0, 2, 116, 116, 111, 108, 0, 2, 122,
-			17, 65, 0, 105, 3, 110, 2, 126, 0, 7, 6, 112, 0, 1, 109, 21, 2, 101, 114, 101, 32, 3, 8, 48, 0, 3, 48, 0, 112, 3,
-			48, 12, 0, 110, 8, 2, 21, 21, 3, 50, 0, 115, 8, 2, 17, 65, 21, 3, 89, 0, 7, 6, 113, 0, 4, 3, 49, 122, 0, 117,
-			0, 7, 6, 114, 0, 4, 3, 14, 16, 0, 1, 17, 67, 0, 8, 0, 1, 17, 65, 2, 17, 65, 3, 51, 0, 114, 3, 51, 16, 0,
-			7, 6, 115, 0, 1, 17, 65, 2, 17, 65, 3, 88, 0, 105, 97, 1, 21, 3, 88, 6, 37, 35, 0, 105, 195, 160, 1, 21, 3, 88,
-			37, 6, 35, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 1, 107, 0, 1, 108, 0, 1, 112, 0, 2, 99, 0, 2,
-			102, 0, 2, 107, 0, 2, 112, 0, 2, 113, 0, 2, 116, 0, 2, 120, 0, 8, 0, 105, 97, 1, 17, 67, 21, 3, 89, 6, 37, 35,
-			0, 99, 104, 2, 17, 71, 3, 89, 49, 0, 115, 3, 89, 89, 0, 4, 99, 2, 17, 71, 3, 91, 0, 99, 105, 2, 17, 65, 0, 104,
-			1, 25, 0, 104, 2, 25, 0, 4, 99, 105, 2, 105, 3, 91, 2, 37, 0, 99, 105, 2, 195, 172, 0, 7, 6, 116, 0, 3, 47, 0,
-			116, 3, 47, 12, 0, 7, 6, 117, 0, 4, 1, 21, 2, 99, 111, 108, 111, 32, 3, 6, 40, 0, 1, 21, 2, 100, 105, 110, 101, 32,
-			0, 2, 105, 116, 111, 32, 0, 1, 21, 2, 108, 17, 65, 32, 3, 8, 40, 0, 4, 3, 40, 0, 1, 108, 25, 2, 17, 65, 0, 1,
-			114, 25, 2, 17, 65, 0, 2, 17, 65, 3, 122, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 122, 0, 7, 6, 120, 0,
-			3, 49, 89, 0, 7, 6, 121, 0, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 4, 2, 18, 66, 17, 65, 3, 72, 88, 0,
-			8, 2, 105, 0, 8, 2, 195, 172, 0, 3, 123, 0, 122, 1, 17, 65, 3, 123, 12, 0, 7, 6, 0, 33, 1, 19, 3, 0, 195, 169,
-			3, 7, 36, 0, 195, 172, 3, 7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 179, 105, 3, 7, 39, 126, 0, 195, 185, 3, 7, 40, 0,
-			195, 168, 3, 7, 109, 0, 195, 168, 105, 2, 25, 3, 7, 109, 57, 0, 195, 178, 3, 7, 110, 0, 195, 178, 105, 3, 7, 110, 126, 0,
-			195, 169, 105, 2, 25, 3, 7, 118, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0,
-			33, 3, 10, 48, 6, 40, 50, 47, 39, 36, 89, 49, 55, 35, 65, 35, 47, 6, 37, 84, 39, 10, 0, 45, 8, 32, 2, 32, 15, 3,
-			65, 36, 50, 39, 0, 36, 3, 72, 39, 55, 55, 35, 34, 39, 0, 44, 2, 15, 3, 84, 6, 37, 34, 81, 39, 55, 35, 0, 194, 167,
-			3, 89, 36, 123, 37, 6, 39, 50, 36, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts29 = FileInMemory_createWithData (43392, reinterpret_cast<const char *> (&espeakdata_dicts29_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/it_dict", 
+		static unsigned char espeakdata_dicts32_data[61802] = {
+			0, 4, 0, 0, 171, 222, 0, 0, 15, 204, 72, 243, 66, 36, 53, 66, 61, 69, 1, 20, 68, 128, 15, 8, 197, 52, 244, 134, 20, 208,
+			15, 8, 197, 28, 144, 67, 60, 208, 65, 0, 11, 199, 5, 100, 133, 8, 33, 82, 60, 76, 15, 9, 198, 5, 165, 5, 12, 130, 64, 15,
+			0, 7, 196, 21, 35, 201, 56, 67, 0, 9, 198, 72, 148, 5, 80, 84, 140, 66, 9, 198, 25, 34, 71, 28, 84, 140, 65, 6, 195, 52,
+			83, 128, 16, 0, 8, 197, 88, 84, 143, 48, 144, 65, 8, 197, 5, 35, 79, 16, 144, 15, 0, 10, 199, 72, 148, 207, 49, 49, 82, 60,
+			66, 10, 199, 60, 48, 207, 73, 49, 82, 60, 66, 10, 199, 12, 243, 77, 37, 49, 82, 60, 66, 10, 199, 5, 52, 213, 57, 49, 82, 60,
+			66, 10, 199, 4, 48, 207, 73, 49, 82, 60, 66, 9, 198, 16, 147, 206, 36, 114, 64, 67, 9, 198, 21, 84, 143, 64, 82, 64, 68, 9,
+			198, 5, 84, 208, 36, 50, 64, 67, 7, 65, 4, 35, 12, 0, 49, 10, 199, 76, 20, 133, 8, 33, 82, 60, 78, 4, 193, 4, 76, 7,
+			196, 25, 33, 68, 16, 16, 0, 15, 69, 5, 0, 84, 36, 80, 35, 48, 35, 47, 6, 37, 36, 0, 9, 68, 5, 4, 12, 20, 21, 0,
+			47, 7, 196, 85, 50, 78, 36, 65, 7, 196, 80, 244, 142, 36, 16, 8, 196, 5, 32, 200, 20, 66, 15, 0, 8, 197, 12, 17, 5, 72,
+			80, 66, 8, 197, 56, 20, 15, 48, 144, 65, 21, 71, 44, 147, 15, 52, 85, 18, 36, 49, 37, 55, 6, 39, 65, 36, 47, 14, 16, 37,
+			0, 10, 199, 12, 19, 73, 48, 193, 82, 36, 67, 8, 197, 64, 81, 9, 56, 80, 66, 10, 69, 37, 2, 15, 56, 80, 21, 0, 47, 8,
+			197, 88, 244, 212, 72, 144, 76, 8, 197, 56, 244, 212, 72, 144, 76, 8, 197, 80, 83, 129, 12, 80, 66, 9, 197, 76, 81, 5, 72, 80,
+			66, 16, 9, 198, 72, 149, 137, 56, 50, 84, 66, 9, 197, 64, 245, 5, 72, 80, 66, 16, 9, 197, 64, 241, 5, 72, 80, 66, 16, 9,
+			197, 64, 84, 15, 48, 144, 65, 15, 10, 199, 61, 37, 15, 81, 65, 82, 36, 15, 10, 199, 52, 19, 77, 36, 97, 82, 36, 66, 6, 195,
+			48, 240, 128, 15, 8, 197, 48, 83, 206, 104, 144, 15, 8, 197, 20, 227, 210, 52, 80, 16, 8, 197, 20, 225, 193, 28, 80, 67, 8, 197,
+			12, 20, 207, 48, 144, 65, 8, 197, 12, 19, 210, 48, 80, 65, 0, 9, 198, 52, 19, 132, 4, 210, 64, 65, 9, 198, 48, 81, 199, 36,
+			210, 64, 65, 9, 198, 24, 244, 142, 4, 50, 64, 66, 9, 198, 20, 66, 70, 36, 50, 64, 67, 9, 198, 72, 245, 133, 76, 50, 64, 15,
+			9, 198, 56, 149, 5, 72, 242, 64, 16, 9, 198, 12, 243, 12, 20, 114, 64, 15, 9, 198, 12, 85, 14, 36, 50, 64, 15, 9, 198, 5,
+			4, 15, 28, 114, 64, 15, 0, 9, 198, 104, 16, 195, 5, 34, 65, 67, 13, 202, 52, 243, 148, 21, 5, 76, 12, 144, 78, 60, 68, 6,
+			65, 8, 71, 37, 0, 9, 198, 80, 83, 199, 60, 226, 65, 68, 8, 197, 76, 80, 143, 72, 112, 16, 9, 198, 72, 19, 143, 12, 50, 9,
+			15, 8, 197, 60, 32, 140, 36, 112, 15, 8, 197, 48, 85, 20, 36, 112, 66, 9, 198, 24, 147, 143, 12, 50, 9, 15, 6, 195, 20, 69,
+			73, 15, 9, 198, 8, 80, 195, 5, 34, 65, 67, 0, 7, 196, 4, 115, 210, 4, 67, 0, 8, 197, 56, 144, 207, 48, 16, 66, 8, 197,
+			88, 244, 212, 72, 16, 76, 8, 197, 56, 244, 212, 72, 16, 76, 8, 197, 56, 21, 83, 20, 16, 65, 8, 197, 52, 148, 212, 72, 16, 66,
+			7, 196, 24, 147, 79, 56, 66, 8, 197, 12, 20, 148, 4, 208, 65, 8, 197, 4, 115, 211, 80, 16, 65, 0, 7, 196, 76, 17, 193, 12,
+			66, 10, 199, 65, 35, 211, 36, 81, 213, 60, 15, 7, 196, 5, 165, 5, 12, 15, 0, 8, 197, 60, 229, 1, 56, 240, 66, 16, 69, 72,
+			84, 212, 36, 240, 14, 16, 36, 89, 47, 6, 37, 39, 0, 19, 70, 24, 20, 141, 4, 50, 69, 83, 35, 14, 16, 65, 35, 76, 6, 37,
+			36, 0, 8, 197, 5, 65, 78, 20, 240, 67, 6, 65, 12, 76, 37, 0, 10, 199, 20, 229, 21, 76, 144, 83, 80, 68, 16, 204, 12, 243,
+			148, 4, 50, 9, 48, 243, 69, 81, 34, 64, 68, 15, 0, 10, 199, 65, 33, 67, 37, 2, 84, 4, 66, 9, 198, 88, 144, 68, 61, 69,
+			0, 16, 6, 195, 72, 81, 206, 16, 0, 8, 197, 17, 80, 137, 80, 16, 65, 13, 68, 57, 147, 15, 56, 50, 6, 117, 55, 39, 50, 0,
+			6, 195, 80, 241, 128, 15, 8, 197, 52, 20, 147, 36, 16, 65, 7, 196, 48, 147, 79, 56, 66, 0, 10, 199, 88, 19, 12, 20, 51, 210,
+			76, 16, 0, 8, 197, 64, 21, 129, 56, 240, 66, 8, 197, 56, 85, 129, 56, 240, 66, 8, 197, 16, 149, 129, 56, 240, 66, 7, 65, 16,
+			73, 37, 12, 0, 9, 198, 76, 147, 132, 72, 243, 69, 65, 8, 197, 73, 80, 146, 36, 48, 66, 8, 197, 57, 80, 204, 20, 240, 65, 9,
+			198, 25, 37, 84, 80, 244, 201, 15, 12, 201, 16, 85, 84, 21, 35, 211, 80, 243, 73, 15, 0, 7, 196, 72, 147, 150, 36, 66, 10, 198,
+			64, 148, 143, 76, 48, 70, 66, 15, 9, 198, 64, 20, 129, 29, 32, 70, 66, 7, 196, 20, 66, 76, 20, 66, 0, 11, 200, 64, 84, 147,
+			20, 117, 73, 80, 16, 66, 9, 198, 12, 130, 65, 52, 147, 143, 65, 8, 197, 72, 81, 201, 56, 80, 66, 11, 70, 24, 16, 197, 8, 243,
+			203, 21, 0, 47, 12, 201, 81, 84, 130, 61, 97, 78, 80, 243, 0, 15, 11, 200, 64, 81, 15, 28, 83, 133, 76, 144, 67, 11, 200, 60,
+			229, 15, 28, 83, 133, 76, 144, 67, 8, 197, 56, 84, 212, 48, 80, 66, 8, 197, 52, 242, 5, 48, 144, 16, 11, 200, 52, 85, 1, 24,
+			243, 133, 76, 144, 15, 8, 197, 21, 84, 143, 64, 144, 15, 9, 197, 21, 69, 15, 72, 80, 65, 15, 8, 197, 20, 195, 209, 84, 144, 15,
+			10, 199, 12, 243, 73, 57, 65, 82, 56, 67, 8, 197, 12, 84, 193, 72, 80, 65, 8, 197, 4, 227, 205, 20, 144, 67, 0, 10, 199, 5,
+			4, 1, 73, 49, 82, 60, 66, 13, 4, 95, 100, 112, 116, 48, 6, 40, 50, 47, 39, 0, 9, 198, 81, 34, 69, 56, 226, 64, 15, 9,
+			198, 76, 48, 80, 60, 194, 64, 65, 9, 198, 72, 145, 15, 48, 98, 64, 15, 9, 198, 29, 80, 82, 4, 226, 64, 67, 9, 198, 20, 227,
+			133, 4, 66, 64, 66, 6, 195, 12, 84, 212, 16, 0, 18, 65, 20, 37, 89, 48, 6, 37, 49, 12, 0, 81, 115, 112, 101, 97, 107, 32,
+			7, 65, 20, 36, 12, 0, 49, 5, 193, 20, 76, 28, 8, 197, 21, 51, 198, 4, 112, 66, 8, 197, 12, 243, 12, 20, 112, 15, 0, 10,
+			198, 36, 225, 5, 8, 149, 0, 66, 16, 9, 198, 21, 0, 82, 12, 130, 65, 67, 9, 198, 21, 0, 71, 56, 85, 76, 65, 6, 195, 21,
+			0, 64, 15, 10, 199, 12, 20, 144, 36, 225, 84, 36, 16, 0, 9, 198, 5, 32, 129, 80, 22, 0, 67, 6, 195, 100, 241, 0, 15, 0,
+			12, 201, 72, 16, 195, 60, 115, 9, 21, 33, 64, 66, 13, 202, 5, 101, 129, 57, 64, 71, 28, 144, 78, 60, 67, 9, 198, 72, 144, 83,
+			76, 85, 20, 15, 12, 201, 65, 33, 77, 36, 192, 213, 61, 33, 64, 15, 9, 198, 60, 193, 79, 16, 245, 20, 16, 9, 198, 12, 19, 1,
+			76, 85, 20, 15, 0, 19, 70, 65, 35, 212, 20, 147, 133, 48, 14, 16, 39, 47, 36, 6, 37, 50, 36, 0, 11, 200, 5, 69, 18, 5,
+			97, 82, 76, 240, 67, 8, 65, 24, 36, 83, 83, 36, 0, 9, 198, 76, 81, 206, 5, 98, 65, 67, 9, 198, 76, 20, 148, 61, 34, 65,
+			67, 9, 198, 28, 84, 135, 61, 98, 65, 15, 9, 198, 12, 19, 148, 61, 34, 65, 67, 0, 10, 199, 76, 244, 212, 20, 225, 82, 20, 67,
+			9, 198, 77, 84, 16, 61, 53, 0, 16, 10, 199, 52, 83, 132, 20, 193, 86, 36, 15, 0, 15, 68, 64, 245, 197, 72, 48, 6, 35, 12,
+			58, 36, 14, 16, 0, 14, 203, 88, 147, 12, 4, 208, 83, 76, 20, 135, 36, 16, 68, 7, 196, 72, 245, 15, 72, 15, 7, 196, 64, 20,
+			5, 72, 65, 7, 196, 52, 20, 197, 72, 66, 7, 196, 52, 16, 197, 72, 65, 0, 9, 198, 21, 81, 197, 56, 243, 0, 68, 10, 199, 5,
+			85, 15, 24, 240, 213, 76, 15, 7, 196, 5, 83, 15, 76, 67, 0, 9, 198, 76, 19, 135, 84, 147, 129, 65, 9, 198, 72, 147, 143, 52,
+			147, 129, 66, 9, 198, 12, 243, 210, 16, 147, 129, 66, 19, 70, 4, 225, 18, 20, 147, 129, 35, 50, 72, 14, 16, 36, 6, 37, 50, 35,
+			0, 9, 198, 12, 144, 83, 13, 83, 129, 66, 18, 70, 12, 17, 134, 20, 147, 129, 49, 35, 83, 12, 109, 6, 37, 50, 35, 0, 6, 65,
+			28, 75, 37, 0, 10, 199, 12, 20, 148, 5, 1, 83, 80, 16, 6, 195, 5, 101, 137, 66, 0, 0, 13, 68, 28, 147, 201, 72, 75, 39,
+			6, 37, 14, 16, 0, 23, 69, 12, 20, 9, 80, 16, 49, 6, 35, 48, 37, 47, 35, 15, 49, 36, 0, 81, 99, 104, 101, 32, 20, 69,
+			12, 20, 9, 80, 16, 49, 6, 35, 48, 37, 47, 35, 15, 35, 0, 81, 97, 32, 8, 197, 88, 19, 21, 80, 16, 65, 9, 198, 65, 33,
+			83, 80, 19, 143, 65, 9, 198, 37, 52, 9, 72, 19, 143, 66, 9, 198, 36, 226, 90, 36, 19, 143, 66, 9, 198, 20, 229, 78, 12, 147,
+			143, 66, 9, 198, 5, 4, 1, 36, 19, 143, 66, 14, 69, 49, 82, 71, 36, 16, 55, 40, 6, 37, 75, 35, 0, 9, 198, 25, 84, 195,
+			36, 19, 143, 66, 14, 68, 52, 18, 197, 72, 65, 6, 118, 49, 109, 14, 16, 0, 10, 199, 88, 243, 20, 4, 209, 84, 72, 66, 7, 196,
+			85, 52, 193, 56, 65, 7, 196, 81, 84, 129, 56, 66, 6, 195, 80, 243, 128, 15, 10, 199, 80, 16, 200, 36, 209, 84, 72, 66, 7, 196,
+			72, 148, 193, 56, 65, 10, 199, 64, 192, 78, 36, 209, 84, 72, 66, 10, 199, 64, 83, 148, 4, 209, 84, 72, 66, 8, 197, 56, 245, 77,
+			20, 16, 16, 10, 199, 52, 147, 12, 36, 209, 84, 72, 66, 8, 197, 48, 148, 19, 36, 16, 65, 6, 195, 16, 243, 128, 16, 7, 196, 12,
+			244, 197, 56, 16, 10, 199, 12, 83, 148, 36, 209, 84, 72, 66, 8, 197, 5, 3, 212, 20, 208, 15, 0, 10, 199, 21, 48, 204, 84, 64,
+			78, 60, 66, 7, 196, 12, 243, 73, 76, 65, 0, 11, 200, 76, 51, 206, 24, 147, 129, 56, 240, 66, 11, 200, 25, 83, 154, 36, 243, 129,
+			56, 240, 67, 11, 200, 12, 243, 210, 16, 147, 129, 56, 240, 66, 8, 65, 32, 35, 49, 12, 35, 0, 12, 201, 21, 53, 5, 57, 50, 77,
+			21, 68, 128, 67, 9, 198, 12, 19, 12, 37, 35, 197, 66, 0, 0, 9, 198, 76, 83, 66, 72, 19, 143, 65, 9, 198, 56, 243, 73, 56,
+			19, 143, 65, 9, 198, 52, 84, 137, 80, 19, 143, 65, 10, 198, 48, 21, 143, 72, 19, 143, 66, 16, 9, 197, 28, 241, 5, 72, 80, 66,
+			16, 9, 198, 16, 83, 143, 80, 147, 143, 66, 9, 198, 49, 84, 195, 36, 19, 143, 66, 9, 198, 9, 80, 195, 36, 19, 143, 66, 8, 197,
+			84, 197, 9, 52, 144, 65, 11, 200, 24, 245, 15, 12, 19, 69, 72, 16, 67, 8, 197, 16, 80, 201, 56, 80, 66, 8, 197, 88, 243, 20,
+			72, 144, 16, 9, 197, 88, 81, 5, 72, 80, 66, 16, 8, 197, 80, 84, 195, 32, 144, 15, 8, 197, 28, 19, 1, 80, 144, 65, 8, 197,
+			20, 36, 137, 16, 144, 15, 8, 197, 16, 241, 193, 48, 144, 65, 15, 69, 5, 84, 201, 48, 144, 35, 40, 88, 6, 37, 55, 37, 0, 8,
+			197, 5, 52, 197, 16, 144, 15, 8, 197, 4, 229, 5, 52, 144, 15, 0, 9, 198, 73, 81, 199, 36, 226, 64, 65, 9, 198, 52, 83, 147,
+			36, 194, 64, 66, 7, 194, 58, 32, 76, 28, 46, 15, 1, 35, 49, 35, 50, 76, 36, 55, 55, 36, 47, 12, 39, 0, 13, 201, 88, 83,
+			148, 72, 147, 15, 69, 82, 64, 66, 15, 9, 198, 72, 150, 154, 60, 194, 64, 66, 9, 198, 72, 85, 20, 36, 98, 76, 67, 11, 200, 52,
+			86, 154, 60, 114, 79, 72, 224, 16, 12, 201, 16, 85, 84, 21, 35, 206, 60, 210, 64, 15, 0, 9, 198, 24, 244, 141, 36, 50, 5, 66,
+			17, 65, 36, 6, 117, 15, 83, 39, 50, 0, 81, 112, 104, 111, 110, 101, 32, 5, 193, 36, 76, 46, 26, 73, 72, 240, 195, 5, 32, 73,
+			56, 243, 1, 14, 16, 39, 49, 12, 35, 51, 35, 6, 37, 50, 110, 55, 35, 0, 9, 198, 64, 147, 143, 12, 50, 9, 15, 6, 195, 48,
+			84, 205, 15, 0, 6, 195, 37, 0, 64, 13, 15, 1, 37, 48, 36, 14, 16, 76, 6, 36, 50, 47, 39, 0, 27, 9, 198, 64, 148, 143,
+			77, 49, 78, 66, 7, 196, 28, 243, 7, 36, 15, 7, 196, 9, 37, 83, 36, 66, 0, 18, 70, 64, 83, 147, 36, 19, 79, 48, 36, 50,
+			89, 37, 6, 35, 65, 39, 0, 15, 69, 80, 149, 15, 48, 144, 47, 6, 37, 47, 39, 55, 37, 0, 9, 198, 24, 16, 197, 88, 19, 79,
+			67, 15, 5, 97, 118, 114, 195, 178, 108, 84, 14, 16, 6, 110, 0, 76, 6, 1, 38, 10, 36, 0, 8, 197, 72, 148, 15, 48, 144, 65,
+			8, 197, 61, 35, 211, 20, 144, 67, 11, 200, 16, 144, 201, 4, 227, 143, 88, 80, 15, 11, 200, 13, 33, 86, 4, 192, 207, 72, 80, 15,
+			8, 197, 5, 161, 71, 48, 144, 15, 0, 9, 198, 48, 19, 149, 76, 82, 64, 67, 0, 9, 198, 76, 36, 137, 28, 21, 9, 65, 13, 65,
+			40, 6, 37, 15, 55, 6, 40, 50, 81, 35, 0, 6, 195, 76, 240, 201, 15, 9, 198, 64, 84, 144, 21, 69, 65, 15, 10, 198, 48, 147,
+			143, 48, 85, 77, 66, 15, 0, 7, 196, 96, 147, 5, 52, 15, 10, 199, 76, 81, 9, 12, 84, 201, 52, 15, 9, 198, 72, 16, 129, 72,
+			32, 82, 66, 10, 199, 65, 83, 3, 32, 84, 137, 4, 66, 10, 199, 28, 243, 9, 5, 33, 9, 4, 68, 7, 196, 24, 195, 197, 52, 15,
+			11, 199, 5, 21, 73, 48, 81, 201, 4, 67, 15, 11, 200, 4, 224, 84, 72, 240, 195, 60, 192, 15, 0, 7, 196, 88, 17, 201, 56, 66,
+			16, 1, 42, 35, 89, 47, 36, 14, 16, 6, 37, 89, 49, 39, 0, 27, 9, 198, 65, 84, 144, 85, 33, 79, 66, 11, 200, 48, 18, 71,
+			84, 81, 204, 36, 16, 15, 10, 199, 16, 244, 15, 48, 21, 143, 72, 16, 10, 199, 12, 20, 212, 20, 195, 15, 56, 67, 12, 200, 8, 244,
+			135, 61, 49, 83, 36, 16, 67, 15, 10, 198, 5, 33, 197, 57, 65, 79, 66, 15, 0, 9, 198, 5, 85, 15, 56, 243, 64, 67, 8, 1,
+			43, 48, 57, 40, 0, 27, 9, 198, 65, 35, 194, 48, 83, 64, 15, 9, 198, 36, 229, 5, 72, 147, 64, 65, 9, 198, 21, 48, 78, 80,
+			83, 64, 15, 0, 14, 69, 76, 50, 65, 80, 240, 91, 37, 6, 35, 47, 110, 0, 7, 196, 56, 81, 193, 48, 65, 8, 197, 28, 148, 129,
+			56, 240, 65, 8, 197, 24, 16, 195, 36, 240, 77, 9, 65, 44, 49, 35, 48, 12, 35, 0, 9, 198, 77, 3, 212, 61, 35, 128, 16, 11,
+			199, 29, 35, 211, 76, 243, 79, 16, 67, 15, 7, 196, 28, 80, 133, 48, 15, 12, 201, 20, 224, 201, 12, 195, 208, 20, 66, 65, 69, 0,
+			9, 198, 76, 98, 76, 4, 227, 192, 65, 9, 198, 76, 98, 68, 36, 227, 192, 65, 9, 198, 76, 98, 68, 4, 227, 192, 65, 9, 198, 72,
+			83, 132, 4, 227, 192, 65, 9, 198, 64, 20, 148, 4, 227, 192, 65, 9, 198, 64, 20, 140, 36, 227, 192, 65, 9, 198, 64, 20, 140, 4,
+			227, 192, 65, 9, 198, 64, 17, 200, 36, 227, 192, 65, 17, 70, 36, 229, 137, 4, 227, 192, 37, 50, 84, 6, 37, 35, 50, 39, 0, 9,
+			198, 16, 85, 137, 4, 227, 192, 65, 9, 198, 8, 20, 212, 4, 227, 192, 65, 17, 70, 5, 101, 137, 4, 227, 192, 35, 84, 12, 6, 37,
+			35, 50, 39, 0, 9, 198, 52, 243, 132, 4, 227, 192, 66, 9, 198, 16, 16, 201, 4, 227, 192, 66, 9, 198, 4, 244, 212, 4, 227, 192,
+			67, 23, 73, 24, 148, 195, 32, 145, 84, 80, 147, 192, 83, 37, 89, 49, 37, 36, 47, 12, 6, 37, 39, 0, 9, 198, 5, 100, 129, 56,
+			227, 192, 76, 17, 70, 88, 82, 67, 60, 195, 192, 84, 109, 6, 37, 49, 39, 55, 39, 0, 7, 196, 52, 241, 5, 52, 15, 9, 198, 8,
+			148, 212, 20, 48, 192, 16, 10, 198, 4, 227, 205, 4, 195, 192, 66, 15, 7, 196, 4, 192, 193, 52, 65, 0, 0, 9, 1, 47, 89, 55,
+			35, 91, 0, 27, 8, 197, 56, 80, 212, 60, 224, 15, 0, 9, 198, 76, 48, 76, 64, 149, 1, 65, 16, 4, 95, 100, 105, 97, 72, 57,
+			36, 51, 6, 36, 12, 88, 126, 0, 8, 65, 48, 109, 55, 55, 36, 0, 8, 196, 80, 83, 133, 16, 65, 15, 9, 198, 64, 148, 143, 48,
+			148, 201, 66, 10, 199, 64, 84, 146, 20, 112, 85, 96, 66, 9, 198, 16, 144, 71, 56, 244, 201, 65, 8, 196, 12, 83, 133, 16, 65, 15,
+			7, 196, 12, 19, 129, 16, 65, 0, 7, 196, 65, 33, 67, 36, 15, 7, 196, 16, 145, 67, 36, 15, 0, 9, 198, 77, 101, 79, 80, 19,
+			143, 65, 9, 198, 77, 2, 69, 28, 19, 143, 65, 9, 198, 76, 99, 206, 16, 147, 143, 65, 9, 198, 72, 149, 9, 72, 19, 143, 66, 9,
+			198, 16, 81, 9, 12, 19, 143, 65, 9, 198, 4, 195, 5, 56, 19, 143, 66, 9, 198, 64, 17, 15, 88, 19, 143, 67, 10, 67, 40, 21,
+			211, 75, 39, 12, 89, 0, 0, 0, 9, 198, 76, 99, 210, 104, 21, 9, 65, 8, 65, 52, 109, 65, 65, 36, 0, 9, 198, 77, 66, 71,
+			52, 21, 5, 65, 7, 196, 76, 16, 129, 80, 65, 9, 198, 72, 241, 9, 80, 244, 137, 16, 12, 201, 65, 35, 211, 80, 17, 133, 72, 84,
+			201, 67, 7, 196, 52, 243, 137, 80, 65, 8, 197, 45, 32, 75, 61, 112, 66, 10, 199, 24, 147, 1, 57, 68, 143, 64, 66, 0, 12, 201,
+			21, 52, 12, 36, 50, 84, 4, 227, 192, 66, 10, 199, 76, 145, 206, 61, 34, 76, 20, 67, 10, 199, 76, 96, 82, 24, 19, 12, 36, 67,
+			10, 199, 52, 16, 210, 60, 51, 211, 52, 15, 0, 19, 72, 8, 21, 68, 20, 192, 73, 72, 80, 71, 110, 72, 55, 6, 109, 14, 16, 0,
+			0, 19, 70, 65, 34, 86, 4, 54, 64, 48, 14, 16, 6, 35, 37, 84, 35, 88, 37, 0, 10, 198, 16, 80, 197, 8, 19, 0, 66, 15,
+			0, 9, 198, 80, 241, 204, 36, 84, 133, 65, 9, 198, 72, 147, 65, 56, 84, 133, 67, 10, 198, 12, 243, 80, 36, 84, 133, 65, 16, 9,
+			198, 12, 241, 204, 36, 84, 133, 65, 9, 198, 8, 19, 66, 4, 114, 65, 66, 11, 70, 76, 241, 148, 92, 20, 133, 21, 0, 47, 16, 70,
+			32, 20, 132, 92, 20, 133, 6, 35, 34, 72, 122, 36, 51, 0, 8, 65, 56, 109, 50, 50, 36, 0, 9, 198, 81, 32, 77, 21, 166, 128,
+			15, 9, 198, 76, 98, 78, 80, 84, 133, 66, 0, 10, 199, 61, 38, 137, 57, 83, 214, 36, 15, 12, 201, 24, 20, 141, 4, 49, 85, 80,
+			144, 192, 67, 11, 199, 12, 84, 150, 21, 65, 82, 36, 66, 15, 0, 8, 196, 21, 52, 5, 72, 65, 15, 0, 0, 7, 65, 60, 110, 12,
+			0, 49, 5, 193, 60, 76, 28, 12, 201, 65, 35, 212, 60, 208, 82, 80, 148, 133, 67, 6, 195, 28, 84, 213, 66, 9, 198, 24, 245, 15,
+			48, 148, 201, 66, 12, 201, 12, 147, 145, 84, 19, 148, 20, 227, 137, 15, 0, 11, 1, 61, 40, 81, 58, 35, 55, 36, 0, 27, 6, 195,
+			61, 0, 67, 66, 0, 9, 198, 76, 99, 210, 104, 147, 143, 65, 9, 198, 72, 145, 21, 12, 19, 143, 66, 9, 198, 36, 229, 137, 80, 147,
+			143, 66, 9, 198, 36, 229, 137, 16, 147, 143, 66, 9, 198, 28, 83, 73, 80, 147, 143, 65, 8, 197, 21, 52, 18, 36, 208, 66, 9, 198,
+			21, 48, 76, 80, 19, 143, 66, 9, 198, 5, 52, 213, 52, 19, 143, 66, 9, 198, 5, 36, 137, 88, 147, 143, 66, 8, 197, 76, 50, 5,
+			72, 208, 16, 8, 197, 20, 208, 140, 20, 208, 15, 0, 10, 199, 80, 84, 141, 36, 224, 78, 60, 65, 9, 198, 72, 85, 9, 56, 243, 0,
+			67, 6, 195, 64, 145, 84, 15, 9, 198, 12, 192, 85, 76, 243, 0, 65, 0, 11, 200, 12, 243, 150, 21, 36, 201, 56, 240, 66, 8, 197,
+			5, 69, 18, 36, 48, 66, 13, 1, 64, 49, 37, 6, 39, 76, 12, 39, 55, 35, 0, 6, 65, 64, 48, 37, 0, 7, 196, 104, 83, 137,
+			80, 15, 0, 18, 70, 72, 144, 86, 88, 147, 192, 14, 16, 37, 35, 84, 12, 6, 126, 110, 0, 9, 198, 9, 35, 206, 104, 83, 192, 65,
+			0, 14, 69, 28, 147, 201, 72, 80, 75, 39, 6, 37, 51, 109, 0, 9, 198, 8, 21, 20, 21, 35, 15, 65, 8, 197, 64, 21, 18, 36,
+			80, 65, 0, 10, 199, 72, 148, 213, 60, 226, 78, 60, 67, 10, 199, 21, 53, 5, 56, 64, 78, 60, 66, 10, 199, 12, 243, 15, 52, 32,
+			78, 60, 67, 10, 199, 12, 243, 15, 52, 32, 78, 60, 67, 9, 198, 88, 19, 132, 4, 194, 64, 65, 9, 198, 29, 84, 208, 36, 226, 64,
+			65, 9, 198, 17, 84, 15, 56, 66, 64, 15, 11, 200, 12, 148, 131, 60, 49, 78, 81, 32, 15, 9, 198, 12, 129, 82, 4, 66, 64, 65,
+			7, 196, 4, 229, 65, 44, 66, 0, 6, 65, 68, 49, 40, 0, 9, 198, 60, 211, 212, 80, 84, 137, 15, 9, 198, 37, 51, 212, 80, 84,
+			137, 15, 9, 198, 29, 32, 84, 80, 84, 137, 66, 6, 195, 12, 244, 205, 15, 6, 195, 12, 244, 205, 15, 9, 198, 12, 19, 69, 24, 149,
+			5, 66, 8, 197, 9, 32, 68, 37, 0, 65, 0, 7, 196, 4, 226, 77, 20, 65, 7, 196, 80, 83, 149, 20, 15, 7, 196, 65, 35, 195,
+			36, 15, 7, 196, 5, 144, 77, 20, 67, 0, 11, 68, 49, 80, 229, 4, 21, 101, 115, 0, 47, 11, 200, 72, 80, 201, 65, 35, 195, 32,
+			80, 66, 7, 195, 84, 224, 64, 77, 46, 9, 198, 4, 229, 8, 20, 210, 83, 65, 0, 0, 7, 196, 4, 198, 129, 48, 65, 11, 67, 41,
+			84, 137, 57, 6, 40, 51, 126, 0, 9, 198, 65, 34, 78, 12, 148, 9, 65, 8, 65, 72, 109, 51, 16, 36, 0, 7, 196, 76, 83, 69,
+			48, 15, 9, 198, 64, 83, 133, 48, 244, 5, 66, 9, 198, 61, 69, 15, 80, 148, 9, 66, 6, 195, 61, 4, 9, 15, 6, 195, 40, 84,
+			201, 15, 9, 198, 12, 20, 21, 48, 85, 9, 16, 9, 198, 4, 229, 9, 48, 244, 5, 66, 0, 10, 199, 81, 32, 77, 60, 113, 201, 4,
+			15, 11, 200, 65, 33, 71, 4, 230, 137, 60, 192, 68, 10, 199, 64, 144, 195, 5, 33, 9, 4, 67, 7, 196, 64, 19, 129, 52, 65, 6,
+			195, 21, 133, 18, 15, 10, 199, 16, 241, 9, 12, 84, 201, 52, 15, 7, 196, 16, 147, 129, 52, 65, 0, 11, 200, 52, 19, 135, 36, 21,
+			15, 36, 16, 16, 11, 200, 52, 19, 9, 56, 51, 206, 36, 16, 68, 11, 200, 12, 19, 80, 36, 67, 199, 48, 144, 15, 0, 13, 72, 92,
+			20, 200, 36, 225, 212, 60, 224, 21, 0, 47, 10, 199, 65, 34, 78, 12, 148, 9, 60, 66, 10, 198, 52, 81, 5, 76, 147, 64, 66, 16,
+			13, 68, 32, 19, 142, 60, 35, 50, 50, 39, 0, 76, 32, 30, 4, 95, 100, 111, 116, 48, 6, 40, 50, 47, 39, 15, 89, 4, 39, 84,
+			14, 16, 35, 89, 49, 14, 16, 6, 37, 47, 12, 39, 0, 15, 204, 64, 244, 148, 4, 83, 9, 12, 245, 20, 21, 34, 64, 15, 9, 198,
+			8, 192, 83, 24, 83, 64, 15, 0, 8, 65, 76, 36, 89, 89, 36, 0, 9, 198, 12, 243, 148, 61, 35, 128, 16, 0, 9, 198, 88, 19,
+			7, 4, 227, 192, 65, 9, 198, 81, 35, 214, 36, 227, 192, 65, 9, 198, 80, 84, 212, 4, 227, 192, 65, 9, 198, 77, 0, 82, 48, 147,
+			143, 65, 9, 198, 77, 0, 82, 48, 19, 143, 65, 9, 198, 76, 84, 150, 36, 227, 192, 65, 9, 198, 76, 84, 150, 4, 227, 192, 65, 10,
+			198, 76, 81, 206, 4, 227, 192, 65, 15, 9, 198, 72, 84, 212, 4, 227, 192, 65, 9, 198, 72, 81, 206, 4, 227, 192, 65, 9, 198, 65,
+			33, 71, 4, 227, 192, 65, 9, 198, 64, 83, 147, 36, 227, 192, 65, 9, 198, 64, 20, 211, 4, 227, 192, 65, 9, 198, 29, 34, 68, 36,
+			227, 192, 65, 9, 198, 29, 34, 68, 4, 227, 192, 65, 9, 198, 16, 85, 20, 36, 227, 192, 65, 9, 198, 12, 21, 83, 4, 227, 192, 65,
+			9, 198, 9, 37, 67, 36, 227, 192, 65, 17, 70, 4, 149, 84, 4, 227, 192, 35, 57, 6, 40, 47, 35, 50, 39, 0, 12, 201, 77, 0,
+			90, 36, 244, 12, 4, 227, 192, 68, 9, 198, 76, 245, 146, 4, 227, 192, 66, 9, 198, 76, 244, 211, 4, 227, 192, 66, 9, 198, 76, 243,
+			4, 4, 227, 192, 66, 9, 198, 72, 246, 154, 4, 227, 192, 66, 9, 198, 72, 244, 211, 4, 227, 192, 66, 9, 198, 72, 241, 146, 4, 227,
+			192, 66, 9, 198, 64, 243, 154, 4, 227, 192, 66, 9, 198, 52, 244, 211, 4, 227, 192, 66, 17, 70, 52, 243, 154, 4, 227, 192, 65, 110,
+			50, 128, 6, 35, 50, 39, 0, 9, 198, 52, 243, 147, 4, 227, 192, 66, 9, 198, 48, 243, 135, 4, 227, 192, 66, 9, 198, 24, 244, 211,
+			4, 227, 192, 66, 9, 198, 16, 244, 154, 4, 227, 192, 66, 9, 198, 12, 244, 147, 4, 227, 192, 66, 11, 70, 77, 0, 78, 37, 50, 0,
+			21, 0, 47, 6, 195, 77, 0, 64, 13, 8, 197, 77, 0, 84, 60, 192, 65, 8, 197, 77, 0, 76, 5, 64, 65, 9, 198, 77, 0, 71,
+			56, 243, 0, 66, 12, 201, 77, 0, 67, 12, 19, 129, 64, 243, 9, 67, 11, 200, 77, 0, 67, 12, 17, 143, 72, 224, 16, 7, 196, 72,
+			16, 197, 52, 15, 9, 198, 65, 33, 70, 21, 69, 0, 15, 10, 199, 61, 35, 199, 20, 225, 83, 36, 67, 9, 198, 12, 20, 5, 48, 195,
+			192, 16, 0, 6, 195, 80, 241, 192, 15, 6, 195, 48, 241, 192, 15, 0, 13, 202, 80, 84, 141, 60, 83, 5, 81, 68, 137, 12, 15, 12,
+			201, 76, 245, 20, 60, 213, 76, 80, 148, 12, 67, 0, 6, 65, 80, 47, 37, 0, 11, 200, 12, 243, 69, 28, 194, 65, 57, 48, 67, 0,
+			15, 70, 12, 130, 67, 4, 115, 192, 76, 37, 49, 35, 81, 39, 0, 21, 71, 77, 68, 129, 80, 81, 201, 20, 89, 47, 14, 16, 35, 47,
+			36, 75, 6, 37, 36, 0, 9, 198, 76, 145, 5, 72, 83, 192, 66, 7, 196, 76, 81, 199, 36, 15, 9, 198, 64, 148, 137, 80, 243, 192,
+			66, 9, 198, 56, 144, 207, 48, 19, 192, 67, 7, 196, 52, 241, 199, 36, 15, 14, 68, 48, 81, 199, 36, 55, 6, 36, 75, 12, 4, 37,
+			0, 11, 200, 25, 32, 78, 12, 240, 143, 48, 192, 16, 7, 196, 16, 19, 129, 20, 65, 9, 198, 4, 192, 137, 72, 83, 192, 66, 0, 11,
+			200, 72, 148, 207, 49, 97, 82, 48, 16, 66, 14, 68, 9, 35, 206, 104, 71, 14, 16, 6, 39, 50, 128, 0, 6, 195, 76, 147, 192, 66,
+			10, 199, 64, 145, 84, 72, 20, 143, 40, 15, 6, 195, 60, 33, 83, 15, 6, 195, 21, 83, 128, 65, 0, 11, 199, 36, 225, 204, 60, 32,
+			78, 60, 66, 16, 10, 199, 72, 245, 15, 64, 192, 78, 60, 67, 10, 199, 8, 243, 15, 28, 224, 78, 60, 67, 6, 195, 80, 129, 84, 15,
+			9, 198, 52, 20, 141, 37, 35, 204, 67, 9, 198, 36, 229, 5, 73, 3, 204, 67, 0, 9, 198, 88, 83, 12, 21, 68, 137, 16, 7, 196,
+			72, 241, 201, 80, 65, 10, 199, 69, 80, 68, 73, 84, 15, 48, 67, 12, 201, 65, 50, 67, 61, 50, 78, 80, 84, 201, 67, 7, 196, 61,
+			52, 197, 80, 15, 7, 196, 36, 212, 5, 80, 65, 7, 196, 24, 16, 197, 80, 15, 12, 201, 5, 48, 204, 21, 2, 79, 16, 245, 0, 68,
+			0, 9, 198, 16, 83, 9, 52, 149, 0, 66, 9, 198, 65, 35, 211, 80, 21, 0, 65, 9, 198, 20, 211, 212, 36, 51, 206, 66, 10, 199,
+			8, 148, 197, 77, 66, 76, 20, 67, 9, 198, 5, 3, 211, 80, 21, 0, 66, 0, 6, 195, 20, 226, 64, 66, 0, 29, 67, 33, 69, 16,
+			6, 35, 49, 12, 35, 47, 4, 37, 12, 47, 4, 37, 12, 48, 6, 37, 12, 10, 0, 81, 58, 47, 47, 32, 12, 201, 72, 16, 132, 60,
+			208, 78, 104, 144, 64, 68, 9, 198, 28, 194, 67, 21, 35, 204, 67, 0, 6, 65, 88, 84, 40, 0, 6, 195, 89, 81, 21, 66, 7, 196,
+			21, 84, 143, 64, 15, 9, 198, 12, 130, 65, 88, 20, 137, 65, 6, 195, 8, 244, 201, 15, 0, 11, 200, 16, 148, 206, 21, 147, 1, 56,
+			64, 65, 10, 199, 84, 225, 9, 12, 84, 201, 52, 15, 10, 199, 76, 245, 133, 73, 161, 78, 20, 66, 0, 11, 200, 76, 20, 146, 4, 49,
+			78, 36, 16, 15, 0, 17, 4, 95, 49, 77, 52, 40, 50, 71, 37, 55, 37, 6, 39, 50, 36, 0, 0, 12, 1, 92, 71, 35, 49, 89,
+			55, 35, 91, 0, 27, 14, 65, 92, 72, 6, 39, 48, 12, 57, 35, 84, 6, 40, 0, 6, 195, 80, 81, 213, 66, 7, 196, 52, 245, 5,
+			48, 66, 7, 196, 8, 85, 5, 48, 15, 0, 7, 196, 12, 84, 129, 52, 65, 0, 0, 10, 199, 72, 148, 1, 28, 130, 78, 60, 66, 10,
+			199, 16, 81, 9, 12, 130, 78, 60, 65, 10, 199, 4, 113, 86, 60, 194, 78, 60, 66, 9, 198, 76, 244, 18, 4, 34, 84, 66, 9, 198,
+			72, 85, 18, 60, 98, 84, 65, 9, 198, 65, 33, 84, 21, 34, 84, 66, 6, 195, 48, 145, 84, 15, 8, 196, 8, 244, 132, 60, 65, 15,
+			0, 12, 200, 52, 145, 204, 36, 244, 137, 56, 240, 66, 16, 13, 4, 95, 49, 77, 49, 65, 6, 37, 55, 55, 36, 0, 8, 65, 96, 6,
+			37, 49, 89, 0, 7, 196, 76, 243, 9, 80, 65, 0, 9, 198, 5, 97, 86, 4, 211, 192, 75, 9, 198, 21, 32, 86, 4, 211, 192, 67,
+			5, 194, 4, 64, 76, 17, 4, 95, 49, 77, 50, 40, 50, 65, 37, 55, 37, 6, 39, 50, 36, 0, 7, 196, 29, 35, 211, 36, 15, 7,
+			196, 5, 35, 211, 36, 15, 9, 198, 5, 32, 143, 72, 83, 192, 66, 0, 18, 4, 95, 49, 77, 51, 40, 50, 65, 37, 55, 37, 6, 35,
+			51, 72, 39, 0, 0, 10, 199, 76, 100, 149, 81, 66, 78, 60, 65, 10, 199, 36, 212, 5, 28, 226, 78, 60, 66, 9, 198, 65, 35, 212,
+			61, 66, 80, 66, 15, 204, 61, 52, 201, 16, 244, 133, 17, 85, 20, 5, 50, 64, 65, 0, 12, 65, 100, 6, 37, 48, 89, 37, 55, 39,
+			50, 0, 6, 195, 61, 51, 73, 15, 6, 195, 36, 243, 137, 15, 6, 195, 36, 65, 9, 66, 7, 196, 4, 115, 210, 16, 65, 0, 18, 70,
+			76, 245, 86, 20, 226, 82, 89, 40, 84, 109, 50, 6, 37, 14, 16, 0, 7, 196, 77, 83, 12, 4, 76, 7, 196, 16, 83, 12, 4, 76,
+			7, 196, 16, 19, 12, 4, 76, 8, 197, 81, 84, 143, 48, 64, 15, 9, 197, 56, 147, 82, 60, 64, 66, 15, 0, 10, 199, 21, 38, 133,
+			28, 245, 137, 56, 67, 9, 198, 12, 244, 144, 61, 33, 79, 66, 9, 198, 12, 19, 3, 5, 33, 79, 66, 0, 17, 70, 12, 243, 137, 84,
+			112, 64, 49, 6, 39, 50, 57, 40, 81, 35, 0, 8, 197, 81, 34, 79, 56, 96, 16, 9, 198, 76, 99, 199, 48, 144, 64, 15, 7, 196,
+			76, 35, 195, 12, 16, 9, 198, 72, 243, 65, 56, 144, 64, 67, 9, 198, 25, 32, 84, 80, 83, 80, 15, 7, 196, 12, 20, 1, 12, 66,
+			9, 198, 4, 65, 83, 52, 144, 64, 67, 0, 10, 67, 64, 192, 89, 48, 55, 6, 119, 0, 8, 65, 104, 128, 109, 47, 35, 0, 6, 195,
+			72, 241, 9, 15, 7, 196, 8, 147, 206, 16, 16, 0, 9, 198, 48, 16, 146, 4, 67, 210, 65, 13, 68, 5, 97, 82, 20, 35, 84, 6,
+			36, 51, 36, 0, 8, 197, 88, 242, 86, 60, 64, 15, 9, 198, 76, 245, 20, 61, 163, 206, 15, 9, 198, 49, 80, 201, 25, 81, 192, 66,
+			7, 196, 29, 33, 86, 20, 15, 11, 200, 12, 243, 5, 77, 65, 82, 60, 192, 68, 0, 6, 195, 64, 244, 192, 15, 6, 195, 21, 84, 128,
+			65, 0, 9, 198, 77, 84, 195, 37, 64, 64, 65, 9, 198, 64, 19, 16, 37, 64, 64, 65, 9, 198, 4, 34, 76, 37, 64, 64, 66, 21,
+			71, 25, 32, 78, 12, 148, 195, 60, 83, 14, 16, 35, 50, 89, 6, 37, 89, 49, 39, 0, 9, 198, 4, 193, 197, 9, 32, 64, 65, 8,
+			197, 64, 192, 67, 20, 32, 15, 9, 198, 64, 147, 69, 57, 65, 76, 67, 7, 196, 61, 69, 9, 12, 15, 7, 196, 56, 147, 69, 28, 15,
+			9, 198, 24, 84, 143, 12, 144, 64, 15, 9, 197, 12, 244, 132, 60, 32, 65, 16, 9, 198, 8, 20, 130, 21, 32, 64, 66, 9, 198, 8,
+			16, 195, 5, 32, 64, 67, 11, 200, 4, 192, 66, 5, 53, 18, 60, 224, 66, 0, 6, 195, 20, 32, 133, 76, 6, 195, 61, 32, 193, 16,
+			9, 198, 16, 148, 208, 72, 244, 201, 15, 9, 198, 9, 34, 78, 16, 148, 201, 65, 6, 195, 8, 16, 129, 66, 9, 198, 5, 48, 193, 48,
+			17, 128, 66, 0, 16, 70, 76, 50, 65, 56, 67, 192, 91, 37, 6, 35, 50, 72, 110, 0, 9, 198, 76, 19, 22, 36, 227, 192, 65, 9,
+			198, 76, 19, 22, 4, 227, 192, 65, 9, 198, 60, 97, 146, 4, 227, 192, 65, 9, 198, 81, 33, 86, 4, 227, 192, 66, 9, 198, 76, 244,
+			18, 4, 227, 192, 66, 20, 71, 12, 20, 132, 36, 16, 200, 20, 49, 35, 14, 16, 72, 6, 37, 35, 49, 36, 0, 6, 195, 5, 68, 0,
+			13, 17, 70, 88, 16, 213, 60, 195, 192, 84, 35, 49, 6, 40, 110, 55, 39, 0, 10, 199, 80, 85, 18, 5, 3, 196, 20, 66, 8, 197,
+			77, 2, 78, 60, 192, 65, 9, 198, 12, 244, 146, 21, 69, 0, 15, 9, 198, 12, 147, 133, 80, 80, 192, 15, 0, 11, 200, 52, 243, 148,
+			21, 97, 82, 16, 80, 16, 11, 200, 4, 116, 143, 76, 148, 212, 20, 208, 15, 0, 10, 199, 77, 80, 129, 13, 21, 69, 60, 66, 6, 195,
+			64, 241, 84, 15, 0, 10, 198, 64, 19, 132, 61, 50, 65, 66, 15, 9, 198, 52, 147, 149, 80, 243, 9, 66, 9, 198, 48, 21, 82, 5,
+			50, 65, 67, 9, 198, 20, 113, 77, 60, 226, 65, 68, 11, 200, 12, 130, 82, 60, 112, 76, 20, 240, 67, 9, 198, 4, 226, 82, 36, 66,
+			65, 68, 10, 198, 4, 208, 146, 61, 50, 65, 66, 15, 6, 195, 4, 32, 129, 66, 0, 7, 196, 80, 83, 80, 36, 15, 8, 197, 8, 83,
+			9, 4, 192, 67, 8, 197, 4, 113, 82, 60, 192, 66, 0, 18, 70, 76, 50, 65, 81, 34, 67, 91, 37, 35, 47, 14, 16, 6, 126, 76,
+			0, 11, 200, 52, 243, 148, 21, 97, 82, 16, 144, 16, 12, 200, 24, 244, 211, 4, 49, 83, 36, 16, 67, 15, 11, 200, 12, 83, 148, 61,
+			2, 69, 16, 144, 15, 6, 195, 4, 81, 0, 15, 0, 10, 199, 64, 84, 147, 64, 144, 193, 12, 67, 9, 198, 25, 32, 84, 36, 50, 68,
+			67, 8, 197, 21, 48, 71, 60, 224, 66, 0, 9, 198, 80, 144, 149, 72, 243, 128, 67, 10, 198, 80, 83, 5, 28, 243, 128, 66, 15, 9,
+			198, 76, 147, 131, 72, 243, 128, 65, 8, 196, 72, 81, 15, 96, 66, 15, 11, 200, 64, 148, 143, 80, 80, 206, 36, 48, 15, 9, 198, 64,
+			80, 195, 36, 243, 9, 15, 6, 195, 60, 35, 9, 66, 11, 200, 20, 115, 195, 20, 229, 18, 36, 48, 15, 9, 198, 4, 229, 9, 24, 243,
+			128, 66, 0, 0, 8, 196, 80, 83, 133, 72, 66, 46, 8, 196, 76, 243, 129, 72, 65, 46, 7, 196, 76, 243, 129, 72, 15, 7, 196, 16,
+			147, 129, 72, 65, 6, 195, 4, 85, 0, 15, 0, 12, 201, 4, 113, 201, 84, 225, 197, 72, 225, 64, 66, 9, 197, 64, 244, 144, 61, 32,
+			65, 16, 12, 201, 12, 148, 212, 36, 97, 76, 48, 80, 64, 67, 10, 198, 5, 85, 15, 77, 67, 208, 68, 15, 0, 18, 70, 29, 80, 82,
+			16, 20, 128, 81, 58, 35, 14, 16, 72, 6, 35, 51, 0, 11, 70, 81, 113, 69, 80, 84, 128, 21, 0, 47, 9, 198, 64, 243, 9, 52,
+			84, 128, 66, 9, 198, 52, 85, 1, 52, 84, 128, 66, 0, 10, 199, 36, 225, 15, 56, 84, 201, 4, 67, 13, 70, 8, 245, 81, 84, 85,
+			0, 21, 102, 114, 0, 47, 7, 196, 81, 34, 66, 84, 66, 14, 203, 64, 20, 129, 48, 193, 76, 21, 2, 80, 20, 64, 69, 6, 195, 5,
+			32, 66, 65, 10, 199, 4, 224, 83, 80, 20, 201, 4, 67, 0, 8, 196, 88, 17, 133, 72, 65, 47, 6, 195, 52, 84, 192, 15, 10, 198,
+			36, 115, 5, 76, 144, 83, 66, 15, 10, 199, 13, 34, 83, 80, 241, 143, 72, 66, 7, 196, 8, 21, 129, 72, 65, 0, 7, 196, 72, 148,
+			15, 76, 15, 12, 201, 64, 144, 195, 60, 195, 205, 36, 226, 64, 67, 9, 198, 61, 53, 18, 60, 115, 212, 15, 7, 196, 56, 245, 5, 76,
+			15, 11, 200, 8, 21, 20, 36, 32, 76, 20, 224, 16, 0, 8, 197, 76, 85, 146, 21, 48, 15, 9, 197, 52, 82, 206, 21, 48, 66, 15,
+			0, 17, 70, 12, 83, 19, 37, 84, 192, 123, 109, 55, 89, 57, 6, 40, 89, 0, 13, 202, 88, 19, 4, 60, 32, 137, 4, 65, 78, 20,
+			67, 8, 196, 76, 84, 193, 52, 65, 15, 6, 195, 60, 209, 82, 65, 9, 198, 5, 85, 15, 9, 84, 192, 65, 0, 9, 1, 126, 47, 37,
+			55, 72, 36, 0, 10, 199, 80, 21, 82, 36, 19, 143, 88, 15, 0, 10, 199, 16, 80, 149, 81, 66, 78, 60, 66, 10, 199, 4, 113, 86,
+			60, 192, 78, 60, 66, 17, 4, 95, 116, 108, 100, 49, 39, 50, 15, 47, 6, 37, 55, 72, 36, 0, 8, 197, 52, 22, 154, 36, 224, 66,
+			8, 197, 8, 243, 132, 20, 224, 16, 0, 11, 200, 72, 17, 134, 61, 38, 137, 56, 240, 66, 11, 200, 28, 149, 68, 36, 50, 9, 56, 240,
+			65, 22, 72, 16, 80, 77, 9, 83, 1, 56, 240, 72, 36, 6, 35, 65, 71, 40, 55, 35, 50, 39, 0, 11, 200, 12, 243, 134, 21, 35,
+			65, 56, 240, 66, 11, 200, 76, 50, 78, 80, 147, 12, 36, 240, 67, 9, 68, 80, 245, 67, 32, 21, 0, 47, 7, 196, 88, 243, 73, 80,
+			65, 12, 201, 64, 84, 132, 5, 49, 5, 24, 241, 213, 15, 8, 197, 16, 147, 206, 37, 48, 66, 0, 9, 198, 24, 244, 211, 36, 211, 192,
+			77, 16, 70, 76, 49, 73, 12, 51, 192, 91, 109, 6, 37, 49, 12, 39, 0, 8, 197, 52, 243, 15, 12, 128, 15, 9, 198, 4, 229, 5,
+			48, 19, 192, 67, 0, 9, 198, 77, 101, 79, 80, 19, 15, 65, 11, 200, 72, 144, 193, 64, 149, 15, 48, 16, 67, 0, 7, 196, 64, 147,
+			5, 60, 65, 9, 198, 52, 85, 1, 64, 243, 148, 15, 8, 197, 52, 16, 200, 36, 224, 65, 7, 196, 36, 243, 1, 60, 67, 0, 9, 198,
+			88, 19, 7, 60, 115, 9, 15, 6, 195, 72, 83, 137, 16, 9, 198, 64, 20, 129, 85, 37, 9, 67, 0, 9, 198, 88, 192, 68, 36, 210,
+			82, 67, 8, 196, 8, 145, 206, 20, 66, 15, 0, 10, 199, 72, 148, 195, 84, 245, 5, 72, 66, 10, 199, 65, 33, 84, 20, 225, 5, 72,
+			66, 10, 199, 65, 33, 83, 8, 149, 5, 72, 66, 10, 199, 4, 48, 201, 64, 149, 5, 72, 66, 0, 7, 196, 85, 48, 133, 12, 15, 10,
+			199, 72, 240, 195, 5, 49, 67, 12, 16, 7, 196, 72, 144, 133, 12, 15, 7, 196, 60, 131, 73, 12, 15, 12, 201, 52, 81, 137, 77, 67,
+			198, 20, 193, 64, 67, 8, 197, 45, 84, 149, 52, 32, 65, 10, 199, 28, 245, 20, 5, 49, 67, 12, 16, 10, 198, 12, 243, 135, 73, 80,
+			64, 65, 15, 9, 198, 4, 113, 78, 104, 144, 64, 67, 0, 12, 201, 12, 21, 5, 73, 2, 76, 48, 20, 128, 65, 6, 195, 81, 83, 201,
+			76, 6, 195, 52, 81, 9, 15, 0, 7, 196, 60, 197, 18, 20, 76, 7, 196, 88, 84, 142, 20, 66, 11, 200, 76, 20, 132, 4, 224, 80,
+			4, 192, 67, 8, 197, 60, 210, 67, 36, 64, 67, 0, 11, 200, 24, 244, 142, 37, 68, 137, 12, 144, 67, 10, 199, 52, 243, 148, 61, 33,
+			129, 56, 66, 11, 200, 52, 243, 66, 5, 35, 195, 12, 144, 15, 6, 195, 21, 97, 64, 15, 0, 9, 198, 52, 244, 141, 61, 32, 64, 65,
+			7, 196, 4, 65, 9, 12, 66, 8, 197, 52, 144, 210, 60, 32, 65, 15, 69, 12, 194, 67, 34, 32, 49, 55, 37, 12, 91, 6, 36, 0,
+			6, 195, 64, 83, 12, 16, 11, 200, 5, 34, 83, 80, 244, 211, 20, 224, 67, 0, 9, 198, 88, 84, 195, 36, 50, 5, 66, 6, 195, 5,
+			48, 197, 66, 0, 7, 196, 77, 67, 210, 52, 16, 8, 197, 76, 48, 84, 60, 192, 65, 11, 199, 20, 212, 5, 16, 240, 204, 20, 66, 15,
+			10, 199, 12, 19, 142, 36, 32, 76, 20, 66, 10, 199, 12, 19, 80, 4, 226, 76, 20, 67, 0, 7, 196, 61, 33, 129, 56, 65, 7, 196,
+			60, 49, 65, 56, 66, 0, 17, 70, 16, 245, 206, 48, 240, 68, 72, 35, 122, 50, 55, 6, 110, 72, 0, 8, 197, 84, 226, 83, 60, 224,
+			66, 8, 197, 52, 20, 131, 60, 224, 66, 0, 9, 198, 52, 19, 22, 4, 114, 65, 66, 9, 198, 76, 195, 214, 20, 226, 65, 15, 9, 198,
+			76, 83, 5, 84, 50, 65, 66, 9, 198, 72, 243, 65, 56, 66, 65, 67, 9, 198, 65, 35, 211, 60, 66, 65, 67, 9, 198, 64, 20, 129,
+			80, 242, 65, 16, 9, 198, 60, 211, 212, 61, 2, 65, 68, 9, 198, 28, 20, 129, 57, 162, 65, 67, 9, 198, 24, 243, 7, 5, 34, 65,
+			67, 9, 198, 24, 19, 1, 76, 50, 65, 67, 9, 198, 21, 84, 137, 80, 210, 65, 68, 9, 198, 9, 83, 7, 5, 34, 65, 67, 0, 7,
+			196, 61, 4, 137, 52, 66, 5, 194, 16, 16, 76, 8, 197, 81, 33, 77, 36, 192, 66, 6, 195, 64, 83, 142, 16, 7, 196, 52, 240, 200,
+			36, 15, 7, 196, 28, 129, 68, 36, 15, 0, 9, 198, 80, 19, 135, 4, 226, 67, 67, 9, 198, 76, 243, 12, 21, 66, 67, 16, 7, 196,
+			64, 84, 133, 104, 16, 9, 198, 52, 18, 69, 85, 66, 67, 66, 0, 8, 197, 80, 84, 146, 20, 224, 16, 8, 197, 80, 20, 144, 4, 224,
+			66, 8, 197, 72, 17, 204, 4, 224, 66, 8, 197, 64, 192, 84, 36, 224, 65, 9, 197, 12, 243, 147, 60, 224, 65, 15, 8, 197, 12, 148,
+			205, 60, 224, 66, 9, 197, 12, 83, 148, 36, 224, 65, 15, 8, 197, 12, 20, 212, 36, 224, 65, 8, 197, 12, 20, 140, 36, 224, 66, 0,
+			6, 195, 16, 19, 0, 76, 10, 199, 12, 20, 193, 80, 145, 76, 48, 16, 0, 6, 195, 61, 32, 70, 65, 9, 198, 16, 84, 15, 76, 149,
+			0, 66, 10, 198, 4, 225, 68, 16, 245, 0, 66, 15, 0, 10, 199, 16, 148, 201, 57, 65, 71, 72, 66, 7, 196, 81, 83, 133, 72, 65,
+			7, 196, 88, 148, 201, 72, 66, 7, 195, 76, 19, 15, 66, 15, 6, 195, 8, 85, 0, 15, 0, 13, 202, 72, 20, 211, 60, 210, 71, 48,
+			144, 78, 60, 67, 10, 199, 36, 229, 18, 36, 228, 197, 12, 66, 0, 9, 198, 65, 33, 78, 16, 84, 128, 65, 9, 198, 16, 84, 201, 16,
+			84, 128, 66, 16, 70, 52, 145, 204, 36, 244, 128, 65, 37, 61, 6, 110, 14, 16, 0, 9, 198, 81, 32, 73, 48, 84, 128, 65, 9, 198,
+			77, 67, 208, 64, 84, 128, 65, 18, 70, 77, 1, 78, 12, 84, 128, 89, 48, 6, 36, 50, 89, 36, 14, 16, 0, 9, 198, 65, 33, 77,
+			36, 84, 128, 65, 18, 70, 25, 33, 69, 104, 84, 128, 83, 14, 16, 6, 37, 128, 109, 14, 16, 0, 9, 198, 12, 128, 82, 80, 84, 128,
+			65, 18, 70, 9, 35, 215, 76, 84, 128, 71, 14, 16, 6, 35, 58, 88, 109, 34, 0, 9, 198, 80, 81, 15, 24, 244, 128, 66, 6, 195,
+			77, 67, 205, 15, 6, 195, 76, 241, 9, 15, 9, 198, 76, 51, 210, 64, 244, 128, 65, 9, 198, 76, 50, 76, 36, 20, 128, 67, 9, 198,
+			72, 144, 207, 88, 84, 128, 66, 6, 195, 60, 115, 9, 15, 9, 198, 52, 85, 1, 24, 244, 128, 66, 9, 198, 21, 32, 137, 88, 244, 128,
+			66, 10, 198, 20, 48, 197, 80, 84, 128, 66, 15, 0, 10, 198, 37, 3, 195, 72, 149, 0, 66, 15, 16, 70, 64, 130, 76, 37, 4, 192,
+			83, 6, 37, 55, 37, 48, 89, 0, 10, 199, 81, 35, 214, 5, 35, 194, 20, 15, 12, 200, 80, 83, 5, 56, 49, 70, 4, 192, 67, 15,
+			9, 198, 64, 20, 129, 8, 149, 0, 66, 12, 200, 52, 84, 197, 56, 49, 70, 4, 192, 67, 15, 9, 198, 13, 33, 83, 12, 149, 0, 65,
+			9, 198, 12, 243, 131, 61, 36, 192, 16, 0, 7, 196, 72, 81, 197, 72, 65, 14, 68, 92, 21, 5, 72, 84, 6, 35, 47, 109, 14, 16,
+			0, 9, 198, 5, 97, 83, 76, 147, 79, 76, 7, 196, 104, 17, 193, 72, 65, 6, 195, 88, 241, 11, 15, 7, 196, 80, 241, 1, 72, 65,
+			12, 201, 72, 240, 195, 4, 115, 15, 72, 147, 211, 16, 7, 196, 24, 241, 5, 72, 65, 7, 196, 24, 145, 193, 72, 65, 10, 199, 5, 32,
+			207, 8, 19, 5, 56, 16, 7, 196, 4, 225, 143, 72, 65, 0, 8, 67, 92, 19, 12, 21, 0, 47, 7, 196, 64, 244, 143, 76, 16, 6,
+			195, 64, 243, 12, 16, 6, 195, 64, 243, 12, 16, 11, 200, 64, 144, 78, 80, 84, 146, 20, 224, 16, 9, 198, 4, 210, 71, 16, 19, 0,
+			66, 0, 9, 198, 64, 243, 9, 56, 243, 73, 15, 12, 201, 5, 34, 83, 80, 241, 201, 80, 243, 133, 68, 12, 201, 4, 225, 204, 61, 48,
+			83, 76, 243, 133, 67, 0, 11, 199, 65, 50, 67, 60, 195, 199, 36, 66, 47, 7, 196, 64, 83, 132, 36, 66, 9, 198, 24, 147, 15, 9,
+			84, 192, 65, 8, 197, 21, 64, 78, 60, 192, 67, 9, 198, 12, 148, 18, 21, 52, 192, 15, 0, 7, 196, 52, 18, 15, 56, 66, 6, 195,
+			21, 48, 67, 15, 11, 200, 12, 21, 1, 77, 68, 143, 24, 80, 66, 0, 8, 197, 76, 19, 148, 20, 224, 65, 7, 196, 49, 85, 5, 60,
+			65, 0, 9, 198, 104, 84, 134, 4, 194, 85, 67, 0, 9, 198, 65, 33, 80, 61, 53, 0, 16, 8, 197, 64, 84, 137, 64, 192, 65, 0,
+			9, 198, 21, 49, 71, 84, 19, 143, 66, 9, 198, 16, 84, 143, 28, 19, 143, 65, 9, 198, 28, 147, 210, 16, 19, 143, 66, 9, 198, 12,
+			147, 210, 48, 19, 143, 66, 11, 200, 76, 19, 9, 76, 49, 78, 16, 144, 16, 14, 203, 69, 80, 84, 80, 244, 132, 36, 49, 83, 36, 208,
+			15, 10, 199, 21, 21, 73, 48, 21, 5, 72, 67, 11, 200, 4, 229, 9, 56, 49, 78, 16, 144, 15, 0, 8, 197, 76, 244, 135, 60, 224,
+			65, 8, 197, 64, 192, 84, 4, 224, 65, 9, 198, 28, 148, 143, 77, 64, 84, 66, 6, 195, 13, 33, 68, 15, 9, 197, 8, 245, 133, 28,
+			224, 65, 15, 0, 9, 198, 4, 48, 213, 52, 243, 9, 66, 0, 14, 68, 44, 21, 9, 4, 49, 6, 35, 12, 47, 37, 35, 0, 7, 196,
+			64, 145, 67, 20, 15, 10, 199, 64, 20, 129, 64, 83, 132, 36, 68, 7, 196, 12, 19, 9, 4, 66, 7, 196, 8, 19, 9, 4, 66, 0,
+			9, 198, 77, 65, 78, 16, 19, 143, 65, 9, 198, 65, 33, 71, 32, 147, 143, 65, 9, 198, 60, 48, 213, 64, 19, 143, 65, 9, 198, 52,
+			244, 212, 72, 147, 143, 65, 9, 198, 13, 80, 201, 56, 19, 143, 66, 11, 200, 25, 83, 210, 36, 193, 71, 28, 80, 16, 10, 199, 4, 229,
+			9, 12, 19, 69, 72, 67, 0, 10, 198, 88, 21, 20, 20, 225, 64, 65, 9, 9, 198, 76, 83, 137, 61, 33, 64, 15, 9, 198, 76, 20,
+			211, 60, 225, 64, 65, 10, 199, 65, 83, 148, 5, 49, 67, 12, 16, 10, 198, 64, 144, 67, 21, 33, 64, 66, 16, 9, 198, 64, 19, 12,
+			5, 33, 64, 65, 9, 198, 52, 20, 141, 61, 33, 64, 65, 9, 198, 52, 17, 206, 21, 65, 64, 15, 9, 198, 33, 80, 72, 36, 225, 64,
+			67, 9, 198, 24, 243, 7, 61, 33, 64, 65, 10, 199, 16, 241, 5, 12, 19, 133, 76, 15, 9, 198, 16, 144, 66, 21, 65, 64, 15, 9,
+			198, 12, 20, 131, 5, 33, 64, 65, 9, 198, 4, 229, 9, 61, 1, 64, 66, 9, 198, 4, 195, 5, 28, 129, 64, 65, 0, 11, 200, 65,
+			35, 211, 20, 117, 79, 56, 240, 66, 22, 72, 64, 22, 137, 20, 229, 1, 56, 240, 48, 35, 123, 37, 6, 36, 50, 47, 35, 50, 39, 0,
+			11, 200, 12, 243, 147, 20, 229, 1, 56, 240, 66, 11, 200, 77, 84, 150, 60, 197, 1, 56, 240, 67, 11, 200, 77, 80, 141, 60, 229, 1,
+			56, 240, 67, 14, 203, 64, 84, 195, 61, 35, 195, 12, 130, 65, 56, 240, 69, 11, 200, 12, 148, 205, 60, 229, 1, 56, 240, 67, 12, 201,
+			64, 21, 5, 72, 227, 211, 80, 84, 128, 67, 21, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 49, 14, 16, 110, 89, 39, 83, 47,
+			0, 12, 201, 53, 83, 20, 37, 3, 5, 96, 84, 128, 15, 9, 198, 52, 243, 132, 60, 193, 128, 15, 9, 198, 48, 19, 132, 60, 193, 128,
+			15, 8, 196, 24, 84, 143, 16, 66, 15, 12, 201, 4, 225, 204, 61, 48, 83, 76, 243, 137, 67, 0, 13, 68, 36, 229, 137, 4, 126, 50,
+			84, 6, 126, 35, 0, 14, 68, 12, 21, 9, 4, 49, 6, 35, 12, 47, 37, 35, 0, 13, 66, 17, 32, 72, 39, 47, 12, 39, 8, 34,
+			0, 24, 6, 195, 81, 35, 214, 15, 7, 196, 76, 83, 3, 20, 16, 9, 198, 16, 144, 80, 5, 51, 206, 65, 7, 196, 8, 17, 9, 4,
+			66, 9, 198, 4, 32, 129, 56, 67, 206, 16, 0, 8, 197, 12, 149, 137, 48, 80, 66, 0, 18, 71, 76, 50, 65, 13, 21, 73, 60, 91,
+			4, 35, 49, 122, 6, 126, 110, 0, 9, 198, 28, 197, 84, 36, 225, 64, 65, 9, 198, 72, 243, 65, 28, 227, 204, 67, 9, 198, 52, 19,
+			132, 36, 35, 204, 66, 0, 10, 67, 52, 17, 5, 65, 6, 118, 72, 0, 8, 67, 25, 33, 69, 21, 0, 47, 6, 195, 76, 81, 5, 15,
+			9, 198, 24, 147, 9, 77, 65, 73, 67, 0, 10, 199, 5, 49, 18, 84, 32, 76, 20, 66, 9, 198, 76, 240, 130, 61, 33, 192, 16, 7,
+			196, 53, 84, 197, 36, 66, 10, 199, 20, 195, 5, 56, 144, 200, 20, 15, 0, 7, 196, 77, 67, 210, 56, 16, 6, 195, 65, 35, 211, 15,
+			0, 7, 196, 88, 243, 20, 60, 16, 9, 198, 48, 21, 20, 61, 50, 64, 15, 8, 197, 12, 243, 15, 56, 224, 16, 0, 8, 197, 4, 198,
+			129, 56, 240, 65, 12, 201, 69, 80, 84, 81, 35, 210, 84, 245, 5, 15, 9, 198, 60, 208, 89, 100, 17, 9, 66, 6, 195, 5, 33, 65,
+			65, 0, 5, 194, 4, 144, 76, 5, 194, 12, 80, 76, 7, 196, 61, 33, 133, 36, 66, 9, 198, 48, 19, 131, 21, 69, 0, 16, 11, 200,
+			36, 228, 197, 81, 66, 67, 36, 64, 68, 9, 198, 13, 35, 195, 21, 69, 0, 16, 9, 198, 8, 240, 195, 21, 69, 0, 16, 0, 9, 198,
+			76, 98, 79, 72, 19, 143, 66, 9, 198, 65, 33, 78, 16, 19, 143, 65, 17, 70, 28, 147, 201, 88, 19, 143, 75, 39, 6, 37, 84, 35,
+			50, 39, 0, 9, 198, 5, 69, 9, 72, 19, 143, 66, 9, 198, 4, 115, 211, 80, 19, 143, 67, 11, 200, 36, 225, 207, 72, 66, 71, 36,
+			16, 67, 11, 199, 24, 245, 15, 12, 243, 15, 72, 67, 47, 11, 200, 61, 37, 15, 16, 244, 211, 36, 16, 68, 11, 200, 25, 32, 78, 12,
+			130, 71, 36, 16, 66, 11, 200, 12, 244, 142, 84, 51, 208, 36, 16, 15, 11, 200, 12, 244, 18, 60, 192, 76, 36, 16, 68, 9, 198, 12,
+			243, 80, 72, 84, 211, 15, 0, 8, 197, 88, 86, 154, 20, 224, 65, 6, 195, 73, 83, 212, 15, 8, 197, 72, 83, 132, 36, 224, 65, 6,
+			195, 69, 83, 212, 15, 6, 195, 61, 35, 208, 15, 8, 197, 12, 243, 15, 72, 224, 16, 0, 10, 67, 104, 243, 205, 128, 40, 12, 65, 0,
+			6, 195, 76, 83, 137, 15, 9, 198, 61, 69, 15, 8, 243, 137, 15, 10, 198, 56, 83, 65, 80, 241, 9, 67, 15, 8, 197, 12, 244, 142,
+			20, 240, 65, 8, 197, 8, 244, 142, 20, 240, 65, 0, 10, 199, 28, 19, 12, 37, 3, 204, 36, 66, 15, 4, 95, 109, 99, 110, 65, 6,
+			35, 49, 14, 16, 39, 50, 0, 13, 202, 81, 32, 78, 76, 48, 85, 12, 20, 201, 4, 68, 10, 199, 64, 83, 148, 5, 3, 204, 36, 66,
+			9, 198, 16, 80, 213, 8, 149, 0, 66, 8, 197, 16, 19, 13, 5, 64, 65, 9, 198, 12, 243, 147, 84, 85, 0, 15, 10, 199, 5, 33,
+			207, 77, 67, 204, 36, 67, 0, 9, 198, 76, 84, 1, 72, 19, 143, 66, 9, 198, 72, 148, 195, 32, 147, 143, 65, 9, 198, 65, 33, 83,
+			76, 147, 143, 65, 9, 198, 64, 244, 15, 48, 19, 143, 65, 9, 198, 36, 225, 1, 28, 19, 143, 66, 9, 198, 36, 212, 1, 72, 19, 143,
+			66, 9, 198, 24, 145, 213, 72, 19, 143, 66, 12, 201, 12, 243, 132, 37, 98, 68, 21, 35, 0, 67, 9, 198, 4, 48, 207, 16, 19, 143,
+			66, 9, 198, 77, 3, 206, 28, 19, 143, 66, 9, 198, 64, 147, 218, 104, 19, 143, 67, 20, 70, 37, 1, 82, 48, 147, 139, 4, 37, 48,
+			36, 34, 15, 55, 6, 37, 50, 49, 0, 7, 196, 88, 243, 69, 72, 65, 7, 196, 76, 19, 65, 72, 65, 12, 201, 60, 67, 206, 80, 245,
+			5, 12, 226, 67, 15, 6, 195, 12, 85, 0, 15, 7, 196, 12, 19, 65, 72, 65, 7, 196, 4, 192, 207, 88, 15, 0, 13, 202, 5, 52,
+			197, 73, 32, 71, 48, 144, 78, 60, 67, 13, 202, 52, 243, 148, 20, 208, 82, 12, 144, 78, 60, 68, 10, 198, 9, 80, 197, 24, 19, 0,
+			66, 15, 9, 198, 5, 85, 15, 29, 37, 64, 68, 0, 9, 198, 72, 80, 213, 64, 84, 128, 66, 9, 198, 52, 17, 199, 36, 244, 128, 66,
+			9, 198, 81, 114, 84, 80, 84, 128, 65, 9, 198, 76, 48, 78, 56, 84, 128, 65, 9, 198, 64, 20, 148, 56, 84, 128, 65, 9, 198, 52,
+			243, 137, 80, 244, 128, 65, 9, 198, 16, 244, 16, 48, 84, 128, 65, 6, 195, 77, 83, 201, 76, 9, 198, 56, 144, 207, 80, 84, 128, 66,
+			9, 198, 52, 17, 199, 36, 244, 128, 16, 9, 198, 52, 16, 207, 52, 84, 128, 67, 9, 198, 41, 80, 90, 20, 148, 128, 65, 9, 198, 12,
+			243, 137, 24, 84, 128, 66, 9, 198, 12, 20, 9, 56, 84, 128, 16, 0, 10, 69, 77, 68, 133, 21, 64, 21, 0, 47, 12, 201, 65, 35,
+			208, 20, 65, 85, 80, 144, 192, 67, 10, 199, 52, 83, 16, 60, 209, 78, 20, 66, 11, 199, 52, 19, 3, 21, 50, 78, 20, 66, 16, 12,
+			201, 20, 194, 79, 12, 83, 148, 72, 144, 192, 15, 0, 8, 196, 20, 193, 193, 72, 65, 46, 8, 196, 21, 36, 143, 72, 65, 47, 10, 199,
+			76, 84, 150, 60, 100, 133, 56, 16, 9, 198, 64, 83, 1, 88, 84, 135, 16, 7, 196, 12, 83, 148, 72, 15, 11, 200, 8, 192, 84, 80,
+			242, 68, 20, 144, 68, 11, 200, 5, 53, 5, 72, 242, 68, 20, 144, 69, 7, 196, 4, 225, 207, 72, 65, 0, 8, 197, 21, 48, 71, 21,
+			32, 66, 15, 69, 28, 86, 83, 21, 32, 81, 6, 117, 88, 109, 14, 16, 0, 8, 197, 12, 243, 132, 61, 32, 65, 8, 197, 81, 85, 20,
+			61, 32, 16, 9, 198, 65, 35, 208, 4, 227, 204, 67, 8, 197, 48, 19, 135, 85, 32, 66, 9, 197, 24, 244, 198, 61, 32, 65, 15, 9,
+			197, 24, 244, 134, 61, 32, 65, 16, 9, 198, 16, 245, 129, 16, 243, 0, 66, 8, 197, 12, 243, 132, 61, 32, 15, 8, 197, 12, 19, 134,
+			61, 32, 65, 10, 199, 4, 229, 9, 4, 84, 133, 60, 67, 0, 12, 201, 64, 197, 82, 36, 243, 73, 12, 145, 0, 69, 9, 198, 88, 84,
+			148, 20, 36, 128, 65, 7, 196, 52, 244, 143, 48, 66, 9, 198, 12, 20, 193, 56, 245, 128, 15, 7, 196, 8, 20, 143, 48, 66, 9, 198,
+			5, 3, 208, 81, 145, 205, 66, 0, 8, 197, 76, 48, 80, 60, 192, 65, 10, 198, 65, 35, 212, 21, 84, 192, 65, 15, 7, 196, 52, 81,
+			204, 36, 15, 8, 197, 12, 244, 16, 60, 192, 15, 7, 196, 12, 243, 5, 36, 66, 0, 11, 200, 5, 34, 83, 80, 241, 129, 56, 80, 67,
+			12, 200, 4, 112, 77, 20, 227, 143, 56, 80, 67, 15, 0, 8, 197, 76, 50, 5, 72, 224, 16, 0, 9, 198, 76, 241, 199, 36, 16, 197,
+			66, 18, 70, 16, 148, 208, 36, 16, 197, 72, 37, 89, 48, 37, 6, 35, 76, 36, 0, 9, 198, 80, 19, 69, 72, 144, 197, 67, 7, 196,
+			20, 208, 143, 48, 15, 9, 198, 12, 243, 80, 48, 144, 197, 15, 0, 8, 197, 104, 244, 16, 60, 192, 15, 8, 197, 56, 84, 208, 60, 192,
+			15, 8, 197, 40, 244, 16, 60, 192, 15, 14, 68, 12, 243, 21, 36, 49, 39, 55, 6, 40, 12, 37, 0, 0, 10, 199, 64, 84, 134, 61,
+			35, 69, 72, 66, 8, 196, 80, 83, 69, 56, 65, 15, 6, 195, 29, 33, 67, 15, 10, 199, 12, 244, 15, 48, 147, 69, 72, 67, 0, 7,
+			196, 37, 96, 78, 60, 66, 20, 71, 9, 37, 88, 20, 195, 5, 76, 71, 14, 16, 40, 49, 89, 6, 109, 55, 12, 0, 9, 196, 5, 97,
+			86, 60, 78, 15, 32, 12, 201, 81, 34, 78, 37, 64, 80, 60, 194, 64, 67, 8, 197, 72, 149, 15, 72, 224, 16, 6, 195, 65, 33, 68,
+			15, 14, 203, 36, 51, 211, 36, 67, 196, 20, 48, 69, 17, 32, 15, 8, 197, 12, 20, 144, 36, 224, 65, 6, 195, 9, 33, 68, 15, 9,
+			198, 4, 84, 143, 77, 64, 84, 66, 0, 6, 195, 80, 16, 137, 66, 6, 195, 20, 35, 0, 15, 0, 14, 68, 76, 241, 137, 4, 89, 39,
+			83, 6, 37, 35, 0, 41, 14, 68, 4, 84, 133, 4, 35, 6, 109, 12, 51, 36, 35, 0, 6, 195, 88, 243, 22, 15, 8, 196, 76, 241,
+			137, 4, 65, 15, 6, 195, 76, 83, 22, 16, 7, 196, 61, 52, 143, 20, 65, 6, 195, 52, 243, 22, 15, 8, 196, 52, 84, 201, 4, 65,
+			15, 8, 196, 12, 241, 201, 4, 65, 15, 0, 9, 198, 21, 52, 15, 76, 149, 15, 66, 10, 199, 64, 244, 148, 4, 192, 133, 72, 66, 10,
+			199, 52, 243, 143, 4, 192, 133, 72, 67, 6, 195, 52, 240, 64, 15, 10, 199, 52, 19, 143, 16, 244, 5, 72, 67, 0, 10, 198, 48, 81,
+			199, 21, 33, 64, 65, 15, 9, 198, 5, 100, 133, 77, 65, 64, 76, 9, 198, 4, 32, 137, 5, 65, 64, 76, 9, 198, 76, 20, 133, 77,
+			65, 64, 76, 10, 198, 17, 84, 129, 57, 65, 64, 76, 28, 9, 198, 88, 19, 12, 21, 97, 64, 15, 9, 198, 84, 224, 78, 36, 209, 64,
+			66, 9, 198, 81, 32, 77, 37, 65, 64, 65, 9, 198, 76, 244, 135, 21, 33, 64, 16, 9, 198, 52, 84, 211, 21, 33, 64, 66, 9, 198,
+			12, 144, 204, 61, 1, 64, 15, 9, 198, 8, 84, 135, 21, 33, 64, 66, 9, 198, 5, 3, 195, 61, 1, 64, 66, 0, 11, 200, 72, 148,
+			18, 20, 225, 1, 56, 240, 66, 11, 200, 65, 33, 83, 20, 229, 9, 56, 240, 66, 11, 200, 65, 33, 83, 20, 229, 1, 56, 240, 66, 11,
+			200, 64, 84, 147, 37, 53, 1, 56, 240, 66, 11, 200, 36, 224, 207, 57, 68, 129, 56, 240, 66, 11, 200, 88, 19, 4, 61, 53, 1, 56,
+			240, 67, 11, 200, 12, 245, 133, 72, 50, 65, 56, 240, 67, 11, 200, 16, 80, 201, 52, 243, 143, 56, 240, 68, 11, 200, 12, 243, 80, 5,
+			68, 143, 56, 240, 67, 9, 198, 52, 243, 148, 60, 113, 201, 15, 7, 196, 52, 85, 15, 16, 15, 12, 201, 36, 229, 15, 56, 20, 149, 52,
+			244, 137, 16, 9, 198, 24, 149, 15, 24, 17, 201, 66, 7, 196, 17, 33, 83, 16, 15, 0, 7, 196, 76, 243, 137, 4, 65, 13, 68, 64,
+			21, 137, 4, 48, 35, 84, 6, 37, 35, 0, 13, 68, 61, 101, 137, 4, 6, 39, 84, 12, 37, 35, 0, 11, 68, 52, 245, 83, 20, 65,
+			35, 40, 89, 0, 7, 196, 96, 83, 137, 4, 67, 6, 195, 65, 35, 214, 15, 6, 195, 65, 35, 214, 15, 7, 196, 64, 147, 131, 20, 66,
+			7, 196, 64, 84, 195, 20, 16, 7, 196, 61, 53, 9, 4, 65, 13, 68, 61, 33, 201, 4, 6, 110, 14, 16, 75, 35, 0, 7, 196, 48,
+			145, 86, 20, 15, 9, 198, 16, 84, 196, 20, 211, 206, 15, 7, 196, 4, 33, 9, 4, 66, 0, 14, 67, 100, 245, 64, 21, 0, 47, 81,
+			116, 117, 98, 101, 32, 6, 195, 21, 33, 0, 16, 0, 17, 70, 4, 113, 78, 104, 145, 64, 35, 75, 36, 50, 123, 6, 37, 36, 0, 9,
+			198, 72, 19, 69, 77, 49, 64, 15, 9, 198, 5, 37, 5, 72, 147, 204, 67, 0, 6, 195, 5, 33, 69, 65, 6, 195, 48, 241, 5, 15,
+			9, 198, 8, 84, 135, 20, 113, 201, 16, 9, 198, 5, 3, 195, 72, 145, 128, 66, 0, 19, 71, 8, 244, 206, 36, 16, 200, 20, 71, 39,
+			88, 50, 6, 37, 35, 49, 36, 0, 7, 65, 132, 6, 109, 0, 77, 10, 199, 21, 21, 73, 88, 240, 200, 20, 66, 9, 198, 5, 50, 78,
+			13, 35, 206, 66, 0, 10, 199, 77, 81, 4, 36, 16, 207, 56, 66, 11, 200, 64, 245, 1, 52, 241, 193, 48, 80, 67, 6, 195, 64, 145,
+			64, 15, 11, 200, 5, 34, 83, 80, 245, 5, 48, 80, 67, 0, 12, 201, 4, 113, 201, 84, 225, 197, 72, 192, 64, 66, 7, 196, 80, 19,
+			148, 60, 76, 20, 71, 12, 20, 129, 36, 34, 67, 60, 49, 35, 51, 35, 6, 37, 71, 37, 49, 39, 0, 0, 7, 196, 40, 84, 207, 48,
+			15, 0, 5, 194, 24, 16, 76, 6, 194, 16, 80, 76, 46, 5, 194, 20, 48, 15, 0, 22, 72, 41, 81, 207, 76, 192, 86, 36, 16, 57,
+			40, 81, 39, 88, 55, 6, 35, 84, 37, 35, 0, 11, 67, 32, 18, 64, 6, 35, 57, 0, 76, 32, 6, 195, 56, 82, 64, 76, 11, 200,
+			80, 20, 129, 57, 64, 83, 36, 16, 67, 11, 200, 48, 84, 212, 72, 145, 207, 56, 144, 66, 11, 200, 16, 148, 12, 60, 208, 90, 36, 16,
+			68, 11, 200, 12, 244, 205, 60, 115, 206, 36, 16, 68, 0, 6, 195, 89, 83, 212, 15, 9, 198, 72, 85, 15, 72, 34, 68, 16, 6, 195,
+			57, 83, 212, 15, 0, 7, 195, 16, 83, 0, 76, 46, 9, 198, 28, 19, 132, 60, 193, 137, 15, 0, 15, 69, 45, 85, 193, 37, 64, 49,
+			122, 6, 109, 12, 37, 74, 0, 13, 202, 36, 212, 18, 20, 225, 9, 80, 244, 137, 4, 69, 8, 197, 72, 148, 207, 49, 64, 15, 13, 202,
+			53, 84, 201, 12, 245, 5, 72, 20, 9, 4, 70, 8, 197, 28, 130, 79, 81, 64, 16, 8, 197, 17, 32, 71, 85, 64, 66, 13, 202, 16,
+			17, 200, 21, 36, 143, 80, 148, 9, 4, 69, 8, 197, 13, 84, 195, 85, 64, 65, 13, 202, 12, 129, 77, 36, 245, 5, 72, 20, 9, 4,
+			70, 0, 18, 67, 16, 18, 64, 72, 6, 35, 37, 15, 49, 36, 0, 81, 99, 104, 101, 32, 12, 67, 16, 18, 64, 72, 6, 35, 12, 37,
+			0, 49, 6, 195, 16, 18, 64, 76, 10, 199, 77, 68, 129, 64, 147, 205, 8, 16, 0, 8, 197, 88, 84, 195, 61, 96, 65, 13, 201, 88,
+			19, 12, 20, 52, 143, 76, 144, 64, 67, 15, 6, 195, 81, 35, 212, 15, 8, 197, 81, 34, 69, 17, 32, 15, 12, 201, 80, 16, 200, 36,
+			48, 82, 16, 144, 64, 68, 8, 197, 69, 80, 76, 61, 32, 16, 9, 197, 64, 84, 137, 21, 32, 65, 16, 12, 201, 56, 80, 210, 60, 208,
+			78, 104, 144, 64, 68, 8, 197, 52, 244, 195, 61, 96, 15, 12, 201, 52, 148, 193, 57, 68, 143, 64, 144, 64, 68, 8, 197, 52, 20, 195,
+			5, 32, 65, 9, 197, 44, 84, 139, 101, 32, 65, 16, 12, 201, 36, 68, 143, 80, 84, 129, 64, 144, 64, 69, 12, 201, 28, 195, 211, 76,
+			243, 1, 48, 144, 64, 68, 10, 199, 24, 197, 77, 20, 225, 15, 76, 15, 12, 201, 24, 149, 15, 80, 84, 129, 64, 144, 64, 69, 8, 197,
+			20, 194, 83, 37, 32, 67, 12, 201, 16, 148, 208, 5, 33, 85, 56, 144, 64, 69, 8, 197, 16, 147, 69, 81, 32, 65, 8, 197, 12, 244,
+			211, 61, 96, 65, 12, 201, 12, 193, 80, 80, 243, 65, 56, 144, 64, 68, 12, 201, 12, 148, 195, 5, 80, 193, 76, 144, 64, 68, 12, 201,
+			12, 130, 82, 60, 208, 78, 104, 144, 64, 68, 10, 199, 12, 83, 148, 72, 145, 149, 28, 66, 12, 201, 9, 32, 68, 36, 48, 82, 16, 144,
+			64, 68, 12, 201, 5, 37, 5, 80, 84, 129, 64, 144, 64, 69, 12, 201, 4, 226, 83, 61, 68, 143, 64, 144, 64, 69, 0, 11, 200, 65,
+			35, 212, 20, 113, 193, 56, 240, 66, 11, 200, 21, 49, 82, 12, 149, 9, 56, 240, 66, 11, 200, 21, 49, 82, 12, 149, 1, 56, 240, 66,
+			11, 200, 12, 243, 85, 56, 144, 193, 56, 240, 66, 11, 200, 12, 21, 1, 48, 241, 193, 56, 240, 66, 11, 200, 4, 97, 146, 60, 229, 9,
+			56, 240, 66, 11, 200, 52, 243, 148, 21, 48, 193, 56, 240, 67, 11, 200, 52, 19, 205, 21, 69, 1, 56, 240, 68, 15, 204, 76, 240, 201,
+			4, 193, 5, 52, 240, 210, 5, 162, 65, 70, 12, 201, 76, 50, 9, 88, 83, 143, 28, 194, 65, 15, 12, 201, 69, 80, 76, 76, 149, 143,
+			28, 194, 65, 15, 11, 200, 4, 192, 137, 28, 224, 83, 20, 112, 67, 0, 8, 197, 77, 84, 195, 37, 64, 65, 13, 202, 81, 32, 71, 36,
+			51, 205, 52, 81, 9, 4, 15, 11, 199, 64, 84, 147, 20, 99, 206, 20, 66, 15, 6, 195, 21, 33, 66, 65, 8, 197, 21, 2, 82, 61,
+			64, 15, 8, 197, 16, 148, 133, 81, 64, 15, 9, 198, 12, 243, 131, 72, 85, 0, 15, 8, 197, 5, 162, 77, 85, 64, 65, 8, 197, 4,
+			48, 197, 81, 64, 16, 0, 0, 8, 197, 48, 81, 199, 21, 32, 65, 8, 197, 76, 128, 75, 21, 32, 65, 8, 197, 40, 240, 203, 21, 32,
+			65, 9, 197, 20, 66, 84, 61, 32, 65, 47, 8, 197, 9, 83, 139, 21, 32, 65, 9, 197, 52, 243, 15, 81, 32, 65, 15, 9, 198, 21,
+			84, 143, 64, 243, 0, 68, 9, 197, 8, 244, 198, 61, 32, 65, 15, 8, 197, 4, 197, 1, 37, 32, 66, 0, 12, 201, 12, 20, 212, 20,
+			192, 201, 88, 149, 0, 67, 0, 7, 196, 104, 85, 71, 52, 65, 9, 198, 64, 83, 148, 4, 115, 206, 66, 0, 6, 195, 84, 243, 64, 15,
+			6, 195, 65, 33, 71, 15, 11, 200, 28, 192, 85, 12, 241, 129, 56, 80, 67, 7, 195, 21, 53, 0, 16, 46, 0, 6, 195, 85, 48, 76,
+			65, 9, 198, 16, 144, 129, 81, 66, 84, 66, 10, 198, 13, 35, 199, 36, 243, 0, 65, 15, 9, 198, 12, 243, 135, 20, 226, 84, 66, 0,
+			11, 200, 24, 244, 141, 36, 51, 204, 36, 240, 68, 0, 11, 68, 88, 242, 76, 108, 21, 102, 114, 0, 47, 6, 194, 4, 192, 76, 46, 6,
+			194, 20, 64, 76, 28, 6, 195, 52, 83, 142, 16, 7, 196, 29, 85, 5, 36, 66, 0, 13, 201, 8, 20, 130, 4, 34, 69, 80, 243, 0,
+			67, 15, 0, 10, 199, 76, 51, 208, 64, 144, 78, 60, 65, 10, 199, 76, 48, 77, 8, 144, 78, 60, 65, 10, 199, 36, 229, 137, 16, 144,
+			78, 60, 66, 10, 199, 5, 101, 129, 48, 112, 78, 60, 66, 10, 199, 5, 52, 193, 48, 112, 78, 60, 66, 10, 199, 5, 4, 15, 28, 114,
+			78, 60, 66, 10, 199, 4, 97, 133, 72, 208, 78, 60, 66, 10, 199, 52, 244, 195, 32, 144, 78, 60, 67, 10, 199, 52, 20, 147, 12, 144,
+			78, 60, 66, 9, 198, 64, 244, 201, 48, 194, 80, 66, 8, 196, 48, 19, 132, 60, 66, 15, 12, 201, 12, 243, 80, 72, 21, 133, 56, 66,
+			84, 67, 0, 7, 195, 61, 101, 137, 65, 15, 9, 198, 16, 148, 208, 20, 225, 9, 15, 6, 195, 4, 65, 9, 66, 0, 14, 68, 104, 18,
+			82, 4, 128, 35, 6, 37, 12, 51, 35, 0, 9, 198, 81, 34, 85, 53, 98, 82, 66, 7, 196, 80, 83, 80, 20, 15, 6, 195, 57, 83,
+			214, 15, 7, 196, 4, 195, 208, 20, 65, 0, 8, 197, 76, 21, 21, 72, 80, 65, 8, 197, 72, 83, 79, 72, 80, 65, 8, 197, 81, 32,
+			66, 20, 16, 65, 9, 197, 80, 83, 133, 72, 16, 65, 15, 9, 197, 76, 19, 15, 52, 80, 67, 15, 8, 197, 72, 240, 195, 36, 16, 15,
+			9, 197, 48, 84, 15, 72, 80, 65, 15, 16, 69, 29, 80, 73, 56, 16, 81, 58, 35, 6, 37, 12, 50, 35, 0, 9, 197, 24, 83, 79,
+			72, 80, 65, 15, 8, 197, 24, 80, 195, 36, 16, 15, 8, 197, 24, 80, 130, 72, 80, 15, 8, 197, 16, 80, 143, 48, 80, 65, 8, 197,
+			12, 244, 195, 36, 16, 15, 8, 197, 12, 240, 195, 36, 16, 15, 8, 197, 12, 19, 129, 64, 80, 65, 8, 197, 8, 240, 195, 36, 16, 15,
+			9, 197, 4, 193, 83, 36, 16, 66, 15, 8, 197, 4, 148, 143, 48, 80, 15, 8, 197, 4, 32, 129, 100, 80, 67, 0, 10, 198, 72, 240,
+			149, 72, 83, 148, 67, 15, 10, 199, 57, 84, 129, 52, 147, 137, 76, 66, 7, 196, 56, 83, 73, 12, 66, 0, 11, 200, 77, 84, 211, 20,
+			117, 65, 56, 240, 66, 11, 200, 52, 20, 212, 85, 32, 129, 56, 240, 66, 11, 200, 36, 224, 193, 77, 68, 129, 56, 240, 66, 11, 200, 16,
+			148, 212, 85, 32, 129, 56, 240, 66, 11, 200, 12, 243, 148, 20, 225, 193, 56, 240, 66, 11, 200, 12, 243, 147, 20, 117, 65, 56, 240, 66,
+			11, 200, 12, 243, 131, 49, 81, 1, 56, 240, 66, 11, 200, 5, 4, 18, 21, 166, 137, 56, 240, 66, 11, 200, 4, 113, 201, 61, 35, 137,
+			56, 240, 66, 11, 200, 4, 52, 85, 37, 53, 1, 56, 240, 66, 11, 200, 64, 145, 82, 4, 225, 197, 48, 240, 66, 8, 197, 65, 35, 198,
+			84, 112, 65, 0, 9, 68, 76, 182, 80, 20, 21, 0, 47, 7, 196, 77, 83, 12, 20, 76, 7, 196, 16, 19, 12, 20, 76, 7, 196, 76,
+			244, 18, 4, 65, 11, 200, 80, 244, 131, 32, 144, 82, 60, 192, 67, 7, 196, 61, 98, 76, 20, 66, 5, 194, 21, 64, 15, 0, 9, 198,
+			28, 148, 143, 48, 19, 79, 66, 8, 197, 28, 83, 143, 88, 16, 65, 8, 197, 21, 3, 195, 32, 80, 65, 8, 197, 76, 20, 133, 80, 80,
+			78, 9, 197, 81, 35, 193, 16, 80, 65, 15, 8, 197, 81, 32, 66, 36, 16, 66, 15, 69, 80, 82, 83, 80, 16, 47, 109, 6, 37, 89,
+			47, 35, 0, 8, 197, 56, 243, 131, 32, 80, 66, 11, 200, 28, 147, 143, 28, 83, 133, 76, 144, 67, 8, 197, 16, 83, 79, 56, 80, 15,
+			8, 197, 12, 19, 137, 48, 80, 66, 8, 197, 8, 244, 206, 36, 16, 15, 8, 197, 5, 32, 193, 16, 80, 65, 8, 197, 4, 195, 15, 72,
+			16, 16, 0, 12, 201, 77, 97, 71, 48, 144, 84, 61, 50, 64, 66, 12, 201, 77, 64, 66, 36, 194, 84, 61, 50, 64, 67, 12, 201, 65,
+			50, 67, 60, 50, 78, 21, 50, 64, 15, 12, 201, 64, 19, 9, 56, 113, 78, 21, 50, 64, 67, 7, 196, 61, 37, 9, 12, 66, 12, 201,
+			52, 20, 148, 37, 35, 204, 60, 114, 64, 15, 12, 201, 4, 225, 201, 60, 113, 78, 21, 50, 64, 67, 0, 13, 67, 5, 50, 65, 7, 35,
+			12, 88, 37, 2, 35, 0, 8, 197, 64, 83, 70, 36, 112, 15, 6, 195, 52, 18, 5, 66, 9, 198, 24, 147, 15, 76, 241, 128, 66, 0,
+			10, 199, 37, 4, 15, 13, 32, 84, 20, 66, 27, 74, 24, 20, 141, 4, 49, 85, 80, 144, 200, 20, 83, 35, 14, 16, 65, 35, 76, 6,
+			36, 58, 47, 37, 49, 36, 0, 10, 199, 76, 16, 197, 72, 67, 212, 20, 15, 9, 198, 65, 35, 212, 21, 69, 0, 15, 7, 196, 65, 33,
+			86, 36, 15, 6, 195, 25, 33, 78, 16, 10, 199, 24, 147, 15, 81, 65, 84, 20, 15, 9, 198, 16, 148, 208, 21, 69, 0, 15, 10, 199,
+			12, 130, 82, 61, 3, 212, 20, 15, 10, 199, 12, 83, 148, 85, 34, 80, 20, 66, 0, 11, 200, 76, 245, 20, 61, 3, 211, 80, 80, 67,
+			8, 197, 72, 20, 1, 12, 144, 66, 6, 195, 77, 3, 211, 15, 11, 200, 72, 81, 133, 72, 83, 132, 84, 208, 15, 11, 200, 61, 4, 18,
+			36, 209, 78, 80, 80, 15, 7, 196, 52, 241, 193, 56, 65, 7, 196, 12, 241, 129, 56, 65, 7, 196, 5, 33, 193, 56, 65, 8, 197, 4,
+			194, 83, 20, 144, 67, 0, 7, 196, 76, 144, 77, 60, 76, 6, 195, 76, 85, 76, 66, 8, 196, 44, 20, 15, 44, 66, 15, 0, 8, 197,
+			16, 144, 193, 56, 240, 65, 9, 198, 104, 243, 198, 36, 194, 65, 68, 10, 198, 88, 19, 19, 21, 50, 65, 66, 15, 9, 198, 81, 32, 71,
+			20, 66, 65, 15, 8, 197, 65, 35, 206, 4, 240, 15, 10, 198, 52, 17, 206, 21, 50, 65, 66, 15, 9, 198, 16, 148, 212, 60, 226, 65,
+			67, 8, 197, 12, 20, 129, 12, 240, 67, 9, 198, 5, 49, 137, 77, 50, 65, 67, 0, 6, 194, 12, 144, 76, 46, 6, 195, 28, 243, 142,
+			16, 0, 8, 197, 25, 81, 193, 12, 144, 66, 11, 70, 92, 148, 133, 48, 84, 211, 21, 0, 47, 8, 197, 5, 97, 83, 76, 144, 76, 9,
+			197, 80, 83, 133, 72, 144, 65, 15, 9, 198, 76, 244, 16, 72, 84, 211, 15, 8, 197, 76, 83, 73, 16, 144, 67, 6, 195, 72, 244, 211,
+			16, 6, 195, 72, 244, 211, 16, 7, 196, 65, 33, 90, 104, 15, 8, 197, 16, 241, 9, 12, 144, 16, 8, 197, 12, 83, 143, 8, 144, 15,
+			8, 197, 8, 19, 129, 72, 144, 65, 0, 9, 198, 76, 145, 68, 37, 66, 64, 65, 10, 199, 61, 69, 5, 56, 112, 78, 60, 66, 10, 199,
+			24, 83, 9, 12, 144, 78, 60, 67, 9, 198, 80, 83, 132, 36, 226, 64, 65, 6, 195, 77, 67, 208, 15, 9, 198, 76, 148, 148, 61, 34,
+			64, 65, 9, 198, 76, 147, 5, 57, 162, 64, 15, 6, 195, 52, 244, 212, 16, 9, 198, 24, 244, 195, 5, 34, 64, 65, 11, 198, 12, 243,
+			12, 60, 66, 64, 66, 15, 46, 9, 198, 12, 19, 69, 17, 34, 64, 15, 9, 198, 8, 84, 130, 21, 34, 64, 65, 0, 8, 197, 72, 245,
+			137, 28, 240, 66, 8, 197, 73, 83, 12, 36, 240, 66, 15, 68, 76, 85, 21, 64, 89, 4, 36, 47, 15, 6, 35, 48, 0, 8, 197, 25,
+			84, 143, 56, 240, 73, 12, 201, 76, 50, 9, 104, 241, 146, 20, 226, 65, 68, 9, 198, 20, 227, 129, 28, 243, 128, 66, 9, 198, 16, 80,
+			193, 64, 243, 9, 66, 0, 10, 199, 84, 48, 201, 16, 84, 148, 36, 66, 8, 197, 13, 34, 67, 21, 64, 15, 9, 198, 4, 48, 207, 48,
+			149, 0, 66, 0, 0, 8, 197, 104, 147, 135, 5, 32, 65, 6, 195, 88, 84, 208, 15, 9, 197, 80, 244, 148, 61, 32, 65, 16, 6, 195,
+			65, 35, 212, 15, 9, 198, 64, 147, 133, 72, 243, 0, 67, 9, 198, 64, 20, 129, 8, 243, 0, 66, 8, 197, 52, 20, 148, 61, 32, 65,
+			8, 197, 12, 20, 211, 5, 32, 65, 8, 197, 5, 32, 137, 81, 32, 65, 0, 11, 200, 81, 32, 78, 76, 149, 1, 56, 240, 65, 11, 200,
+			76, 244, 146, 20, 113, 193, 56, 240, 66, 11, 200, 72, 145, 213, 5, 33, 1, 56, 240, 66, 14, 203, 72, 145, 9, 52, 83, 147, 36, 243,
+			129, 56, 240, 69, 11, 200, 72, 144, 200, 36, 81, 1, 56, 240, 66, 11, 200, 72, 144, 193, 72, 144, 193, 56, 240, 66, 11, 200, 65, 35,
+			214, 88, 81, 1, 56, 240, 66, 11, 200, 64, 244, 211, 20, 113, 193, 56, 240, 66, 22, 72, 36, 229, 133, 37, 48, 193, 56, 240, 37, 50,
+			84, 36, 6, 37, 89, 49, 35, 50, 39, 0, 11, 200, 36, 228, 212, 5, 84, 129, 56, 240, 66, 11, 200, 36, 228, 85, 4, 68, 129, 56,
+			240, 66, 11, 200, 16, 84, 15, 76, 149, 1, 56, 240, 66, 11, 200, 4, 194, 77, 20, 229, 1, 56, 240, 67, 6, 195, 20, 32, 137, 77,
+			6, 195, 20, 115, 9, 76, 7, 196, 61, 97, 83, 80, 15, 9, 198, 61, 69, 15, 80, 148, 0, 66, 8, 197, 36, 194, 5, 85, 48, 16,
+			8, 197, 16, 145, 83, 37, 48, 15, 0, 10, 199, 65, 34, 77, 5, 97, 82, 20, 67, 8, 197, 72, 145, 197, 81, 64, 15, 9, 198, 64,
+			243, 9, 77, 65, 78, 66, 8, 197, 60, 113, 197, 81, 64, 15, 8, 197, 52, 19, 77, 85, 64, 66, 8, 197, 16, 145, 133, 81, 64, 15,
+			10, 199, 12, 20, 193, 48, 35, 210, 20, 66, 10, 199, 4, 65, 77, 64, 145, 82, 20, 66, 0, 14, 68, 84, 225, 5, 72, 6, 35, 50,
+			72, 36, 14, 16, 0, 7, 196, 48, 245, 133, 72, 65, 7, 196, 20, 229, 5, 72, 65, 7, 196, 4, 101, 5, 72, 65, 7, 196, 64, 145,
+			68, 72, 15, 7, 196, 44, 81, 137, 72, 15, 8, 196, 16, 80, 143, 72, 65, 15, 7, 196, 12, 147, 137, 72, 65, 11, 200, 8, 20, 137,
+			80, 243, 133, 76, 144, 15, 0, 12, 201, 36, 229, 129, 28, 130, 84, 61, 50, 64, 67, 8, 197, 72, 240, 203, 21, 32, 65, 17, 69, 72,
+			19, 135, 21, 32, 14, 16, 6, 36, 50, 75, 36, 14, 16, 0, 8, 197, 52, 20, 139, 21, 32, 65, 8, 197, 40, 17, 213, 5, 32, 65,
+			14, 69, 32, 16, 203, 21, 32, 6, 35, 49, 36, 14, 16, 0, 8, 197, 28, 147, 135, 21, 32, 65, 8, 197, 12, 240, 203, 21, 32, 65,
+			6, 195, 88, 243, 12, 16, 12, 201, 80, 84, 141, 60, 113, 78, 21, 50, 64, 67, 10, 199, 77, 84, 5, 72, 99, 21, 60, 66, 12, 201,
+			61, 53, 5, 60, 113, 78, 21, 50, 64, 68, 12, 201, 52, 85, 1, 52, 244, 134, 61, 50, 64, 67, 8, 197, 52, 20, 141, 5, 32, 65,
+			12, 201, 20, 193, 84, 81, 35, 204, 37, 50, 64, 67, 9, 198, 13, 34, 83, 76, 243, 0, 66, 0, 10, 199, 52, 20, 148, 36, 226, 84,
+			80, 67, 7, 196, 13, 84, 15, 48, 65, 0, 6, 195, 5, 97, 78, 16, 0, 10, 199, 16, 148, 195, 72, 147, 73, 56, 66, 8, 197, 84,
+			97, 137, 12, 144, 66, 11, 200, 52, 243, 148, 20, 193, 80, 72, 80, 15, 7, 196, 28, 146, 143, 56, 66, 8, 197, 12, 19, 66, 72, 144,
+			66, 8, 197, 12, 19, 4, 20, 144, 66, 0, 9, 198, 64, 244, 148, 4, 210, 64, 65, 9, 198, 12, 84, 131, 5, 50, 64, 65, 7, 196,
+			52, 85, 5, 60, 65, 9, 198, 76, 19, 147, 13, 34, 84, 65, 9, 198, 72, 147, 129, 76, 50, 84, 66, 9, 198, 21, 52, 12, 36, 50,
+			84, 66, 7, 196, 4, 197, 133, 60, 65, 0, 8, 197, 88, 243, 1, 56, 240, 65, 10, 199, 21, 48, 204, 84, 65, 82, 48, 66, 8, 197,
+			5, 81, 213, 72, 240, 65, 9, 198, 88, 240, 193, 8, 243, 9, 66, 15, 69, 21, 52, 5, 4, 176, 37, 89, 48, 6, 37, 49, 12, 0,
+			9, 198, 4, 225, 137, 64, 243, 9, 66, 0, 6, 195, 80, 243, 142, 16, 7, 196, 20, 194, 77, 36, 65, 0, 8, 197, 76, 243, 65, 48,
+			144, 65, 8, 197, 76, 100, 133, 28, 144, 15, 11, 200, 64, 244, 212, 21, 34, 79, 72, 144, 16, 9, 198, 64, 84, 134, 84, 112, 83, 65,
+			8, 197, 57, 83, 69, 72, 144, 65, 11, 200, 52, 147, 12, 20, 98, 79, 72, 144, 16, 12, 200, 16, 147, 143, 12, 81, 129, 48, 144, 67,
+			15, 11, 200, 9, 32, 67, 32, 144, 197, 72, 144, 66, 0, 12, 201, 52, 17, 18, 21, 0, 84, 72, 144, 64, 67, 9, 198, 13, 34, 77,
+			36, 226, 64, 65, 6, 195, 56, 80, 128, 15, 6, 195, 28, 243, 137, 15, 6, 195, 24, 80, 128, 15, 7, 196, 12, 19, 1, 60, 66, 9,
+			198, 8, 148, 197, 57, 162, 64, 15, 0, 9, 198, 88, 83, 148, 20, 227, 137, 15, 8, 197, 77, 65, 82, 20, 240, 65, 12, 201, 48, 84,
+			15, 77, 3, 206, 16, 147, 9, 15, 9, 198, 12, 243, 150, 60, 115, 9, 15, 0, 8, 197, 72, 84, 21, 80, 16, 65, 8, 197, 61, 52,
+			9, 80, 16, 65, 8, 197, 5, 32, 143, 72, 80, 65, 13, 69, 21, 21, 73, 64, 80, 109, 49, 6, 37, 48, 0, 8, 197, 52, 83, 148,
+			72, 80, 76, 8, 197, 104, 244, 16, 36, 16, 66, 8, 197, 72, 85, 15, 72, 80, 65, 8, 197, 64, 84, 147, 36, 16, 65, 8, 197, 52,
+			241, 204, 36, 80, 15, 8, 197, 52, 84, 211, 36, 16, 66, 8, 197, 48, 241, 199, 36, 16, 15, 8, 197, 24, 243, 12, 36, 16, 66, 8,
+			197, 24, 241, 199, 36, 16, 15, 8, 197, 21, 21, 73, 64, 80, 65, 8, 197, 12, 246, 79, 80, 80, 15, 8, 197, 12, 244, 16, 36, 16,
+			15, 8, 197, 12, 130, 69, 76, 80, 15, 9, 197, 8, 84, 212, 36, 80, 65, 16, 8, 197, 5, 64, 76, 36, 16, 67, 8, 197, 5, 32,
+			143, 72, 80, 67, 0, 7, 196, 4, 229, 9, 12, 66, 0, 8, 197, 12, 243, 150, 60, 48, 65, 6, 195, 73, 80, 64, 66, 6, 195, 56,
+			85, 77, 65, 6, 195, 29, 35, 205, 16, 8, 197, 17, 81, 207, 56, 112, 15, 0, 7, 196, 28, 83, 196, 20, 15, 6, 195, 25, 35, 196,
+			15, 13, 201, 16, 144, 207, 80, 147, 5, 16, 243, 137, 68, 15, 7, 196, 12, 243, 132, 20, 66, 0, 8, 197, 5, 33, 201, 56, 16, 65,
+			8, 197, 80, 83, 210, 36, 80, 67, 8, 197, 77, 64, 84, 84, 16, 65, 14, 73, 76, 50, 15, 64, 83, 136, 5, 81, 82, 21, 0, 47,
+			8, 197, 69, 81, 76, 48, 16, 76, 8, 197, 88, 147, 137, 48, 80, 66, 8, 197, 88, 83, 148, 72, 80, 15, 8, 197, 77, 97, 86, 36,
+			16, 15, 8, 197, 77, 1, 67, 36, 80, 15, 8, 197, 76, 147, 143, 64, 80, 15, 8, 197, 76, 83, 137, 48, 80, 66, 8, 197, 69, 82,
+			69, 80, 80, 15, 8, 197, 61, 53, 9, 48, 80, 66, 8, 197, 52, 84, 143, 64, 80, 65, 9, 197, 52, 83, 79, 72, 80, 65, 15, 8,
+			197, 48, 147, 79, 56, 80, 15, 9, 197, 48, 83, 85, 72, 80, 65, 15, 9, 197, 44, 20, 129, 80, 80, 67, 15, 8, 197, 21, 67, 201,
+			48, 80, 65, 8, 197, 12, 20, 137, 80, 80, 67, 8, 197, 8, 242, 5, 52, 80, 15, 8, 197, 8, 144, 137, 80, 80, 65, 8, 197, 5,
+			160, 82, 36, 16, 67, 8, 197, 5, 96, 82, 36, 16, 67, 8, 197, 4, 229, 5, 72, 16, 66, 0, 7, 196, 72, 85, 143, 12, 65, 9,
+			198, 24, 147, 15, 77, 49, 78, 66, 5, 194, 21, 96, 15, 6, 195, 20, 32, 146, 15, 0, 11, 67, 77, 2, 69, 89, 48, 6, 37, 36,
+			0, 11, 67, 69, 82, 65, 49, 58, 6, 37, 35, 0, 9, 198, 52, 144, 210, 61, 67, 205, 66, 8, 197, 24, 244, 141, 36, 48, 66, 9,
+			198, 12, 20, 135, 20, 114, 5, 15, 11, 67, 9, 82, 65, 71, 6, 40, 37, 35, 0, 0, 10, 199, 72, 145, 213, 72, 114, 84, 4, 66,
+			10, 199, 64, 20, 148, 20, 50, 80, 4, 66, 10, 199, 56, 80, 197, 77, 50, 84, 4, 66, 6, 195, 33, 67, 76, 13, 10, 199, 76, 147,
+			66, 36, 243, 148, 20, 16, 7, 196, 72, 145, 83, 36, 15, 11, 199, 64, 20, 148, 20, 227, 208, 20, 66, 15, 11, 199, 64, 20, 148, 20,
+			50, 80, 20, 66, 16, 6, 195, 12, 243, 12, 16, 6, 195, 12, 243, 12, 16, 10, 199, 5, 32, 201, 65, 33, 84, 20, 15, 0, 8, 197,
+			72, 17, 9, 12, 144, 66, 8, 197, 104, 19, 143, 8, 144, 15, 8, 197, 88, 243, 19, 12, 144, 15, 8, 197, 64, 84, 211, 36, 208, 15,
+			11, 200, 36, 229, 5, 73, 4, 133, 80, 80, 66, 9, 197, 20, 225, 129, 76, 144, 65, 15, 8, 197, 8, 145, 78, 56, 144, 15, 8, 197,
+			4, 229, 15, 56, 144, 15, 8, 197, 4, 224, 84, 20, 208, 15, 0, 9, 198, 76, 53, 83, 4, 210, 64, 65, 9, 198, 64, 84, 140, 60,
+			209, 78, 16, 10, 199, 52, 20, 143, 8, 241, 21, 60, 15, 9, 198, 52, 19, 132, 61, 35, 0, 65, 9, 198, 52, 17, 206, 21, 50, 64,
+			15, 9, 198, 12, 20, 147, 60, 194, 64, 66, 6, 195, 9, 33, 78, 16, 9, 198, 4, 224, 76, 37, 50, 64, 66, 9, 198, 4, 211, 210,
+			61, 50, 64, 16, 0, 8, 197, 64, 17, 193, 56, 240, 65, 8, 197, 56, 81, 193, 56, 240, 65, 8, 197, 48, 81, 193, 56, 240, 65, 8,
+			197, 61, 69, 1, 56, 240, 66, 8, 197, 24, 16, 197, 88, 240, 78, 8, 197, 20, 32, 133, 72, 240, 77, 18, 70, 81, 85, 20, 5, 98,
+			65, 47, 40, 47, 12, 35, 84, 6, 37, 35, 0, 6, 195, 5, 97, 192, 13, 9, 198, 81, 84, 135, 61, 98, 65, 15, 9, 198, 80, 147,
+			148, 61, 34, 65, 67, 9, 198, 80, 84, 148, 20, 226, 65, 67, 9, 198, 80, 83, 211, 60, 98, 65, 68, 7, 196, 76, 147, 85, 56, 66,
+			8, 196, 76, 81, 1, 56, 65, 15, 9, 198, 76, 21, 18, 5, 2, 65, 67, 9, 198, 76, 19, 79, 28, 114, 65, 15, 6, 195, 61, 162,
+			65, 66, 9, 198, 52, 244, 195, 61, 98, 65, 15, 9, 198, 52, 243, 146, 61, 98, 65, 15, 9, 198, 52, 84, 211, 20, 226, 65, 15, 9,
+			198, 52, 17, 83, 81, 34, 65, 67, 9, 198, 48, 244, 133, 28, 114, 65, 15, 9, 198, 37, 51, 212, 61, 2, 65, 68, 9, 198, 36, 228,
+			207, 56, 226, 65, 15, 9, 198, 36, 98, 71, 20, 226, 65, 68, 9, 198, 28, 20, 132, 20, 226, 65, 15, 9, 198, 24, 84, 146, 61, 98,
+			65, 67, 20, 70, 24, 20, 141, 4, 50, 65, 83, 35, 14, 16, 65, 35, 76, 6, 37, 12, 35, 0, 9, 198, 21, 131, 198, 61, 34, 65,
+			68, 9, 198, 20, 66, 84, 61, 34, 65, 68, 9, 198, 16, 240, 146, 84, 114, 65, 66, 9, 198, 16, 144, 82, 12, 130, 65, 67, 9, 198,
+			12, 244, 211, 21, 34, 65, 66, 10, 198, 12, 19, 66, 60, 114, 65, 66, 15, 11, 67, 9, 81, 64, 71, 6, 40, 12, 36, 0, 0, 10,
+			199, 104, 145, 207, 81, 65, 82, 36, 15, 7, 196, 8, 86, 154, 36, 15, 0, 9, 198, 12, 130, 65, 52, 19, 143, 65, 8, 197, 77, 80,
+			140, 36, 208, 66, 11, 200, 24, 144, 77, 52, 145, 133, 72, 144, 66, 6, 195, 76, 84, 211, 15, 9, 198, 61, 37, 15, 81, 66, 67, 15,
+			9, 198, 20, 193, 84, 81, 34, 67, 15, 11, 200, 12, 20, 15, 48, 149, 133, 72, 144, 67, 9, 198, 5, 85, 5, 57, 66, 67, 15, 9,
+			198, 5, 85, 5, 57, 66, 67, 15, 8, 197, 5, 37, 5, 52, 144, 15, 8, 197, 4, 192, 193, 48, 144, 65, 0, 11, 68, 12, 129, 67,
+			44, 76, 109, 49, 12, 0, 9, 198, 5, 100, 133, 77, 66, 64, 76, 8, 66, 32, 16, 35, 0, 76, 32, 6, 194, 16, 144, 76, 46, 9,
+			198, 88, 145, 9, 29, 32, 70, 66, 10, 198, 80, 83, 5, 29, 32, 70, 66, 15, 9, 198, 77, 1, 84, 81, 34, 64, 15, 6, 195, 76,
+			243, 142, 16, 10, 198, 76, 83, 142, 61, 34, 64, 65, 15, 9, 198, 52, 243, 132, 61, 98, 64, 67, 10, 198, 36, 229, 143, 49, 80, 210,
+			66, 15, 5, 194, 20, 112, 15, 6, 195, 12, 243, 142, 16, 9, 198, 12, 20, 131, 21, 34, 64, 65, 0, 8, 197, 88, 17, 1, 56, 240,
+			65, 8, 197, 13, 33, 65, 56, 240, 65, 8, 197, 13, 80, 129, 56, 240, 66, 8, 197, 5, 36, 137, 28, 240, 66, 19, 70, 65, 35, 198,
+			21, 162, 69, 48, 14, 16, 39, 83, 36, 123, 6, 37, 36, 0, 18, 70, 20, 51, 206, 60, 210, 69, 36, 49, 39, 50, 39, 65, 6, 37,
+			36, 0, 9, 198, 4, 227, 205, 4, 194, 69, 68, 8, 197, 24, 80, 197, 72, 240, 65, 6, 195, 25, 82, 64, 76, 6, 195, 80, 243, 137,
+			15, 6, 195, 28, 83, 137, 15, 6, 195, 21, 33, 77, 65, 0, 9, 198, 12, 243, 80, 48, 85, 0, 15, 7, 196, 12, 19, 148, 84, 66,
+			0, 6, 195, 24, 85, 0, 15, 6, 195, 5, 65, 79, 65, 6, 195, 4, 245, 0, 15, 0, 7, 196, 65, 33, 83, 76, 15, 0, 9, 198,
+			12, 144, 83, 13, 83, 133, 66, 7, 196, 88, 81, 15, 88, 65, 7, 196, 81, 34, 79, 72, 16, 12, 201, 76, 245, 20, 60, 147, 147, 36,
+			83, 69, 15, 9, 198, 60, 224, 207, 28, 83, 133, 67, 0, 17, 70, 16, 148, 199, 84, 145, 0, 72, 37, 88, 81, 122, 6, 37, 72, 0,
+			10, 199, 76, 49, 71, 48, 145, 82, 20, 65, 6, 195, 72, 244, 208, 15, 10, 199, 52, 19, 5, 77, 49, 82, 20, 15, 10, 199, 12, 20,
+			193, 80, 244, 146, 20, 16, 10, 199, 8, 83, 133, 77, 49, 82, 20, 15, 0, 6, 195, 76, 243, 143, 77, 11, 200, 36, 51, 206, 61, 53,
+			1, 76, 144, 67, 0, 5, 194, 25, 80, 76, 9, 198, 104, 17, 193, 72, 243, 0, 67, 9, 198, 60, 211, 137, 80, 83, 0, 67, 9, 198,
+			12, 147, 206, 16, 243, 0, 16, 0, 7, 196, 88, 148, 5, 72, 65, 6, 195, 88, 83, 128, 16, 7, 196, 76, 148, 193, 72, 65, 7, 196,
+			56, 17, 9, 72, 66, 12, 201, 52, 243, 148, 21, 97, 82, 28, 147, 133, 16, 7, 196, 52, 148, 197, 72, 65, 7, 196, 48, 21, 5, 72,
+			65, 7, 196, 37, 81, 197, 72, 65, 7, 196, 12, 84, 193, 72, 65, 0, 12, 67, 89, 83, 204, 84, 40, 6, 39, 55, 0, 76, 7, 196,
+			77, 67, 194, 36, 15, 9, 198, 65, 35, 208, 61, 53, 0, 16, 12, 201, 16, 17, 200, 21, 36, 143, 80, 148, 0, 67, 9, 198, 12, 243,
+			80, 61, 53, 0, 16, 9, 198, 12, 243, 80, 61, 53, 0, 16, 6, 195, 8, 243, 12, 16, 0, 8, 197, 24, 83, 9, 12, 144, 66, 11,
+			200, 16, 148, 208, 36, 16, 197, 72, 80, 67, 10, 199, 88, 19, 4, 37, 51, 212, 80, 16, 8, 197, 80, 17, 4, 20, 144, 66, 12, 200,
+			77, 68, 129, 64, 245, 5, 72, 80, 67, 16, 8, 197, 76, 144, 129, 72, 144, 65, 9, 197, 76, 83, 143, 56, 144, 65, 15, 8, 197, 76,
+			51, 210, 12, 144, 16, 11, 200, 64, 192, 83, 52, 241, 5, 76, 208, 15, 8, 197, 52, 244, 137, 56, 144, 65, 8, 197, 52, 81, 9, 84,
+			208, 15, 10, 199, 36, 212, 5, 72, 97, 84, 80, 15, 8, 197, 8, 19, 19, 4, 208, 65, 0, 12, 201, 76, 19, 80, 36, 84, 132, 5,
+			33, 78, 16, 9, 198, 61, 52, 197, 69, 82, 64, 15, 9, 198, 21, 49, 71, 21, 50, 64, 15, 9, 198, 16, 144, 76, 37, 50, 64, 66,
+			6, 195, 5, 33, 78, 16, 9, 198, 4, 210, 76, 61, 50, 64, 15, 9, 198, 4, 208, 146, 61, 50, 64, 15, 0, 8, 197, 72, 80, 193,
+			56, 240, 65, 8, 197, 16, 245, 9, 56, 240, 65, 8, 197, 16, 245, 1, 56, 240, 65, 8, 197, 8, 20, 193, 56, 240, 65, 9, 197, 88,
+			145, 193, 56, 240, 67, 15, 7, 196, 80, 245, 1, 56, 65, 7, 196, 76, 21, 1, 56, 65, 7, 196, 72, 84, 201, 56, 65, 6, 195, 72,
+			83, 128, 16, 9, 197, 65, 35, 212, 20, 240, 65, 15, 6, 195, 52, 243, 128, 15, 0, 10, 199, 60, 193, 129, 81, 67, 210, 36, 67, 10,
+			199, 60, 226, 67, 60, 99, 210, 36, 67, 10, 199, 52, 243, 132, 4, 67, 210, 36, 16, 0, 9, 198, 77, 84, 5, 72, 19, 143, 65, 9,
+			198, 72, 148, 1, 28, 19, 143, 66, 9, 198, 37, 52, 9, 72, 147, 143, 66, 9, 198, 29, 80, 82, 16, 19, 143, 65, 9, 198, 16, 83,
+			143, 80, 19, 143, 66, 8, 197, 5, 4, 137, 80, 144, 65, 9, 198, 88, 148, 195, 36, 19, 143, 66, 9, 198, 81, 35, 206, 80, 19, 143,
+			66, 9, 198, 72, 244, 195, 36, 19, 143, 66, 9, 198, 24, 148, 195, 36, 19, 143, 66, 9, 198, 12, 144, 195, 36, 19, 143, 66, 9, 198,
+			8, 20, 195, 36, 19, 143, 66, 8, 197, 61, 52, 9, 80, 144, 65, 9, 198, 37, 1, 82, 80, 243, 143, 67, 8, 197, 5, 65, 78, 20,
+			144, 67, 8, 197, 88, 149, 133, 72, 144, 65, 8, 197, 76, 81, 9, 12, 144, 16, 11, 200, 72, 244, 1, 48, 240, 197, 72, 144, 67, 11,
+			200, 64, 193, 67, 61, 69, 5, 72, 144, 15, 8, 197, 64, 83, 15, 76, 144, 16, 11, 200, 56, 85, 82, 61, 69, 5, 72, 144, 15, 8,
+			197, 52, 147, 143, 72, 144, 16, 8, 197, 48, 144, 133, 72, 144, 65, 8, 197, 21, 81, 133, 52, 144, 15, 8, 197, 5, 48, 197, 76, 144,
+			15, 11, 200, 4, 226, 83, 61, 69, 5, 72, 144, 15, 8, 197, 4, 225, 197, 48, 144, 65, 0, 9, 198, 104, 19, 154, 36, 32, 82, 65,
+			12, 201, 12, 20, 130, 60, 226, 70, 21, 34, 64, 67, 11, 66, 16, 160, 72, 37, 15, 75, 6, 118, 0, 12, 201, 80, 148, 193, 56, 245,
+			20, 21, 34, 64, 15, 10, 199, 76, 245, 20, 60, 35, 211, 12, 15, 9, 198, 76, 20, 211, 60, 226, 64, 65, 9, 198, 76, 20, 141, 5,
+			66, 64, 65, 9, 198, 72, 147, 131, 61, 66, 64, 15, 12, 201, 48, 84, 9, 16, 245, 20, 21, 34, 64, 15, 9, 198, 28, 84, 212, 85,
+			34, 64, 65, 9, 198, 20, 224, 207, 49, 2, 64, 15, 5, 194, 20, 128, 16, 9, 198, 8, 243, 142, 4, 224, 82, 66, 9, 198, 8, 21,
+			20, 21, 34, 64, 66, 9, 198, 8, 17, 206, 60, 194, 64, 66, 0, 8, 197, 88, 81, 1, 56, 240, 65, 8, 197, 8, 17, 1, 56, 240,
+			65, 8, 197, 64, 84, 193, 72, 240, 65, 6, 195, 60, 52, 128, 13, 6, 195, 88, 84, 128, 16, 6, 195, 88, 84, 128, 16, 9, 198, 65,
+			35, 211, 12, 83, 137, 15, 6, 195, 61, 36, 192, 16, 6, 195, 61, 36, 192, 16, 6, 195, 56, 84, 128, 16, 7, 196, 4, 195, 69, 56,
+			16, 0, 10, 199, 37, 48, 210, 37, 98, 84, 36, 66, 10, 199, 80, 84, 129, 64, 85, 84, 36, 67, 6, 195, 21, 51, 196, 15, 0, 7,
+			196, 84, 48, 201, 16, 66, 9, 198, 81, 85, 5, 48, 19, 143, 66, 9, 198, 76, 147, 85, 48, 19, 143, 65, 9, 198, 36, 229, 137, 80,
+			19, 143, 66, 9, 198, 28, 83, 73, 80, 19, 143, 65, 9, 198, 16, 84, 137, 88, 147, 143, 66, 7, 196, 16, 80, 201, 16, 66, 12, 201,
+			5, 4, 18, 60, 98, 84, 80, 147, 143, 67, 12, 71, 20, 194, 90, 4, 33, 84, 32, 21, 0, 47, 0, 13, 202, 64, 84, 195, 60, 192,
+			78, 12, 144, 78, 60, 68, 6, 195, 29, 81, 82, 16, 0, 6, 195, 76, 244, 201, 15, 0, 6, 195, 13, 35, 196, 15, 6, 195, 9, 35,
+			196, 15, 0, 14, 69, 76, 50, 65, 72, 80, 91, 37, 6, 35, 51, 36, 0, 11, 200, 21, 52, 18, 36, 209, 82, 76, 144, 66, 7, 196,
+			16, 149, 137, 16, 66, 7, 196, 72, 84, 197, 16, 15, 8, 197, 52, 243, 129, 16, 80, 65, 10, 199, 28, 19, 66, 4, 51, 210, 80, 16,
+			8, 197, 20, 195, 1, 16, 80, 65, 0, 6, 195, 37, 65, 82, 65, 11, 200, 52, 243, 148, 21, 161, 77, 60, 192, 15, 0, 12, 201, 36,
+			212, 5, 73, 65, 82, 72, 149, 1, 67, 6, 195, 20, 195, 1, 76, 6, 195, 64, 83, 129, 16, 6, 195, 52, 243, 5, 15, 10, 199, 52,
+			81, 193, 12, 243, 15, 56, 15, 6, 195, 52, 19, 5, 15, 0, 13, 68, 20, 230, 137, 52, 36, 50, 128, 6, 37, 65, 0, 16, 70, 100,
+			241, 200, 61, 84, 148, 6, 57, 39, 81, 40, 34, 47, 0, 7, 196, 64, 193, 83, 36, 15, 9, 198, 28, 20, 196, 61, 69, 0, 16, 7,
+			196, 21, 81, 5, 52, 15, 0, 15, 69, 61, 1, 82, 4, 144, 39, 48, 109, 51, 6, 35, 37, 0, 9, 198, 52, 20, 141, 61, 33, 79,
+			66, 8, 197, 24, 19, 5, 12, 144, 15, 14, 203, 20, 193, 84, 81, 35, 205, 4, 115, 133, 80, 80, 15, 7, 196, 9, 81, 129, 48, 65,
+			10, 198, 8, 243, 148, 20, 35, 203, 65, 15, 0, 14, 68, 76, 144, 78, 60, 89, 6, 37, 35, 50, 39, 0, 76, 9, 198, 88, 144, 146,
+			4, 99, 206, 66, 9, 198, 52, 20, 129, 80, 131, 206, 67, 13, 68, 12, 144, 78, 60, 76, 6, 37, 35, 50, 39, 0, 9, 198, 4, 224,
+			66, 5, 50, 64, 66, 0, 18, 70, 28, 194, 67, 20, 210, 65, 81, 55, 37, 76, 36, 65, 6, 37, 35, 0, 6, 195, 4, 195, 5, 76,
+			6, 195, 32, 149, 128, 13, 6, 195, 84, 245, 128, 15, 6, 195, 72, 83, 133, 16, 10, 198, 56, 244, 150, 20, 114, 65, 66, 15, 6, 195,
+			56, 243, 133, 15, 6, 195, 24, 19, 133, 66, 6, 195, 21, 35, 197, 15, 7, 195, 16, 83, 133, 66, 15, 9, 198, 12, 83, 143, 52, 19,
+			137, 66, 6, 195, 12, 83, 133, 16, 9, 198, 5, 36, 143, 76, 50, 65, 15, 9, 198, 5, 3, 195, 72, 149, 9, 66, 9, 198, 4, 225,
+			207, 76, 50, 65, 15, 9, 198, 4, 208, 90, 104, 243, 137, 66, 0, 7, 196, 65, 33, 71, 36, 15, 10, 199, 12, 243, 73, 56, 99, 210,
+			52, 67, 10, 199, 12, 20, 1, 56, 227, 210, 36, 66, 0, 17, 70, 76, 50, 65, 88, 19, 143, 91, 37, 6, 35, 84, 35, 50, 39, 0,
+			9, 198, 21, 48, 76, 80, 147, 143, 66, 11, 200, 76, 48, 78, 16, 147, 129, 88, 144, 66, 9, 198, 76, 20, 131, 60, 96, 71, 66, 8,
+			197, 72, 147, 69, 16, 144, 15, 11, 200, 64, 19, 142, 60, 48, 200, 36, 16, 15, 11, 200, 52, 244, 19, 84, 84, 212, 36, 16, 66, 23,
+			72, 52, 20, 195, 4, 197, 67, 36, 16, 65, 35, 89, 49, 35, 55, 40, 76, 6, 37, 12, 35, 0, 11, 200, 52, 19, 1, 88, 241, 204,
+			36, 16, 15, 8, 197, 24, 19, 69, 16, 144, 15, 11, 200, 16, 145, 1, 76, 48, 76, 36, 16, 68, 0, 12, 201, 76, 83, 5, 104, 147,
+			206, 4, 194, 64, 68, 5, 194, 28, 80, 15, 8, 197, 24, 244, 16, 60, 192, 15, 6, 66, 20, 144, 118, 0, 12, 201, 12, 20, 212, 20,
+			196, 197, 65, 34, 64, 15, 0, 12, 201, 20, 193, 84, 81, 35, 196, 61, 69, 0, 16, 6, 195, 8, 243, 0, 15, 0, 9, 198, 49, 80,
+			201, 4, 227, 192, 66, 11, 200, 88, 19, 2, 72, 85, 133, 56, 224, 16, 10, 199, 77, 2, 78, 21, 67, 204, 36, 66, 6, 195, 64, 84,
+			212, 16, 9, 198, 52, 243, 143, 64, 244, 212, 16, 9, 198, 48, 20, 9, 16, 83, 192, 66, 6, 195, 13, 33, 84, 15, 0, 9, 198, 88,
+			241, 204, 36, 19, 143, 65, 9, 198, 77, 69, 68, 36, 19, 143, 65, 9, 198, 76, 83, 66, 72, 147, 143, 65, 9, 198, 76, 48, 77, 8,
+			147, 143, 65, 9, 198, 76, 21, 21, 72, 19, 143, 65, 9, 198, 52, 84, 137, 80, 147, 143, 65, 9, 198, 52, 19, 131, 32, 147, 143, 65,
+			9, 198, 36, 224, 201, 16, 19, 143, 65, 9, 198, 36, 211, 65, 28, 147, 128, 66, 18, 70, 29, 80, 73, 88, 19, 143, 81, 58, 35, 6,
+			37, 84, 35, 50, 39, 0, 9, 198, 21, 50, 83, 80, 19, 143, 66, 9, 198, 20, 193, 71, 28, 19, 143, 66, 9, 198, 4, 195, 5, 56,
+			147, 143, 66, 9, 198, 72, 144, 195, 36, 19, 143, 66, 9, 198, 64, 144, 195, 36, 19, 143, 66, 9, 198, 56, 240, 195, 36, 19, 143, 66,
+			6, 195, 28, 85, 0, 15, 0, 6, 195, 65, 35, 194, 15, 7, 196, 48, 84, 143, 76, 16, 9, 198, 4, 195, 15, 16, 243, 0, 66, 0,
+			9, 198, 72, 149, 133, 16, 84, 133, 67, 12, 201, 64, 145, 84, 72, 20, 5, 73, 162, 65, 68, 14, 202, 56, 16, 149, 12, 241, 15, 56,
+			244, 207, 72, 68, 15, 12, 201, 52, 84, 137, 80, 240, 210, 5, 162, 65, 69, 9, 198, 13, 34, 83, 4, 244, 133, 66, 12, 201, 5, 34,
+			83, 80, 240, 210, 5, 162, 65, 69, 10, 199, 5, 34, 83, 80, 17, 207, 72, 67, 0, 10, 198, 48, 147, 65, 77, 51, 204, 67, 16, 0,
+			10, 198, 64, 81, 199, 36, 244, 128, 66, 15, 11, 70, 12, 193, 65, 56, 84, 128, 21, 0, 47, 7, 196, 64, 148, 143, 64, 15, 10, 198,
+			37, 51, 208, 80, 84, 128, 66, 15, 11, 67, 9, 82, 79, 71, 6, 40, 37, 39, 0, 9, 198, 4, 229, 9, 12, 148, 0, 66, 0, 15,
+			70, 12, 128, 78, 56, 83, 0, 76, 6, 35, 50, 36, 55, 0, 11, 200, 64, 244, 148, 36, 48, 201, 60, 192, 67, 0, 9, 198, 52, 20,
+			195, 32, 84, 129, 65, 7, 196, 4, 192, 207, 72, 66, 8, 197, 4, 35, 205, 5, 48, 66, 0, 7, 196, 76, 83, 3, 36, 16, 13, 202,
+			52, 20, 147, 36, 51, 214, 21, 65, 82, 20, 15, 6, 195, 37, 51, 204, 65, 9, 198, 8, 243, 129, 77, 51, 204, 67, 7, 196, 8, 193,
+			86, 36, 15, 0, 8, 197, 72, 81, 21, 12, 144, 65, 6, 195, 88, 243, 7, 15, 10, 199, 65, 33, 68, 36, 193, 84, 80, 15, 7, 196,
+			52, 19, 149, 48, 66, 6, 195, 49, 83, 199, 15, 7, 196, 8, 20, 137, 48, 66, 0, 9, 198, 76, 147, 148, 21, 50, 64, 65, 9, 198,
+			72, 81, 199, 37, 49, 78, 16, 9, 198, 37, 3, 198, 37, 50, 64, 66, 9, 198, 5, 3, 198, 37, 50, 64, 66, 0, 9, 198, 72, 243,
+			80, 21, 37, 9, 65, 18, 70, 16, 21, 1, 8, 20, 197, 72, 35, 47, 35, 71, 6, 109, 37, 88, 0, 8, 197, 4, 53, 76, 20, 240,
+			66, 0, 17, 70, 61, 1, 82, 4, 147, 192, 39, 48, 36, 51, 6, 35, 57, 39, 0, 11, 199, 52, 144, 210, 60, 99, 206, 36, 66, 16,
+			10, 199, 81, 33, 78, 80, 83, 142, 36, 15, 7, 196, 80, 19, 1, 52, 65, 9, 198, 77, 68, 133, 57, 83, 192, 15, 7, 196, 76, 19,
+			1, 52, 66, 7, 196, 28, 243, 5, 52, 15, 13, 202, 20, 193, 84, 81, 35, 198, 61, 33, 83, 36, 15, 0, 6, 195, 21, 35, 199, 65,
+			8, 197, 5, 69, 9, 52, 144, 65, 8, 197, 16, 148, 206, 21, 144, 65, 6, 195, 104, 83, 135, 15, 6, 195, 48, 243, 135, 15, 9, 198,
+			48, 148, 85, 36, 112, 83, 67, 6, 195, 17, 35, 199, 15, 8, 197, 16, 243, 143, 72, 144, 67, 7, 196, 12, 19, 129, 48, 66, 8, 197,
+			8, 19, 1, 4, 208, 65, 0, 9, 198, 76, 20, 133, 77, 66, 64, 78, 9, 198, 105, 80, 195, 5, 34, 64, 65, 10, 199, 88, 84, 154,
+			20, 115, 137, 76, 15, 11, 200, 65, 35, 212, 61, 53, 5, 48, 192, 16, 7, 196, 21, 84, 133, 44, 65, 9, 198, 9, 80, 195, 5, 34,
+			64, 65, 9, 198, 4, 192, 193, 57, 64, 82, 66, 0, 6, 195, 72, 224, 64, 13, 8, 197, 88, 149, 18, 20, 240, 65, 0, 7, 196, 76,
+			84, 137, 20, 65, 6, 195, 80, 243, 4, 15, 6, 195, 76, 243, 4, 15, 7, 196, 61, 53, 9, 20, 65, 7, 196, 28, 244, 135, 4, 16,
+			18, 70, 25, 37, 83, 12, 147, 192, 83, 14, 16, 40, 91, 6, 37, 12, 39, 0, 7, 196, 12, 19, 143, 4, 15, 7, 196, 8, 240, 195,
+			4, 16, 0, 9, 198, 77, 64, 77, 8, 80, 195, 16, 7, 196, 76, 50, 5, 16, 15, 9, 198, 28, 243, 1, 76, 80, 195, 16, 0, 6,
+			195, 64, 21, 82, 66, 0, 11, 200, 72, 81, 201, 77, 68, 129, 56, 240, 66, 11, 200, 72, 19, 12, 20, 229, 9, 56, 240, 66, 11, 200,
+			72, 19, 12, 20, 229, 1, 56, 240, 66, 11, 200, 36, 195, 21, 77, 68, 129, 56, 240, 66, 11, 200, 12, 243, 150, 21, 36, 193, 56, 240,
+			66, 9, 198, 65, 34, 78, 12, 148, 5, 65, 18, 8, 95, 98, 114, 97, 105, 108, 108, 101, 71, 14, 16, 6, 117, 55, 55, 0, 6, 195,
+			60, 192, 64, 66, 9, 198, 12, 19, 12, 36, 244, 5, 66, 0, 6, 195, 64, 83, 132, 16, 7, 196, 12, 244, 147, 4, 16, 6, 195, 8,
+			243, 132, 15, 7, 196, 8, 241, 213, 20, 66, 0, 0, 7, 195, 61, 1, 82, 65, 16, 7, 195, 21, 65, 82, 65, 16, 6, 195, 37, 1,
+			82, 65, 6, 195, 24, 81, 18, 15, 0, 11, 67, 40, 243, 5, 57, 6, 110, 55, 36, 0, 6, 195, 4, 195, 1, 76, 11, 3, 226, 130,
+			172, 6, 36, 40, 51, 39, 0, 10, 199, 81, 34, 65, 80, 131, 15, 56, 65, 10, 199, 65, 35, 211, 21, 36, 9, 56, 66, 6, 195, 60,
+			65, 64, 15, 6, 195, 48, 83, 129, 16, 6, 195, 40, 243, 5, 15, 6, 195, 28, 147, 5, 66, 6, 195, 16, 243, 129, 66, 10, 199, 12,
+			130, 76, 36, 17, 207, 56, 67, 0, 7, 196, 76, 17, 193, 52, 65, 11, 200, 64, 21, 76, 36, 192, 84, 36, 224, 68, 10, 199, 25, 33,
+			67, 12, 85, 20, 20, 16, 0, 11, 200, 88, 83, 148, 37, 49, 84, 80, 80, 15, 11, 200, 65, 32, 83, 76, 149, 5, 48, 80, 66, 6,
+			195, 56, 245, 83, 66, 7, 196, 4, 225, 197, 48, 65, 0, 7, 196, 85, 48, 78, 60, 65, 12, 201, 72, 147, 131, 61, 36, 133, 72, 192,
+			64, 66, 0, 7, 195, 104, 19, 133, 66, 15, 6, 195, 60, 193, 64, 66, 6, 195, 36, 243, 133, 15, 6, 195, 20, 195, 5, 16, 6, 195,
+			8, 81, 192, 15, 0, 9, 198, 64, 241, 206, 4, 227, 192, 66, 7, 196, 64, 81, 199, 36, 15, 0, 11, 67, 56, 85, 211, 50, 37, 6,
+			40, 89, 0, 11, 200, 77, 84, 18, 20, 208, 90, 36, 16, 68, 11, 200, 77, 2, 65, 56, 21, 15, 36, 16, 16, 11, 200, 72, 17, 9,
+			12, 241, 129, 56, 144, 67, 11, 200, 61, 38, 137, 88, 80, 195, 32, 144, 15, 11, 200, 56, 147, 134, 60, 208, 78, 36, 16, 68, 11, 200,
+			52, 83, 1, 56, 51, 206, 36, 16, 68, 6, 195, 29, 33, 83, 15, 11, 200, 12, 21, 129, 48, 48, 86, 36, 16, 68, 0, 10, 199, 20,
+			48, 197, 57, 68, 137, 12, 15, 6, 195, 5, 50, 78, 65, 0, 11, 67, 8, 16, 153, 71, 6, 109, 71, 126, 0, 7, 195, 12, 243, 0,
+			76, 46, 11, 3, 226, 130, 164, 55, 126, 14, 16, 35, 0, 7, 196, 64, 193, 90, 104, 15, 6, 195, 60, 66, 64, 15, 6, 195, 12, 194,
+			64, 65, 0, 9, 198, 77, 65, 83, 21, 35, 192, 65, 9, 198, 28, 241, 18, 4, 227, 192, 66, 6, 195, 64, 244, 212, 16, 0, 11, 70,
+			40, 16, 203, 76, 243, 128, 21, 0, 47, 9, 198, 29, 32, 78, 16, 147, 128, 65, 15, 4, 95, 111, 103, 111, 39, 81, 6, 39, 12, 50,
+			36, 49, 0, 9, 198, 64, 243, 9, 28, 243, 128, 66, 9, 198, 61, 69, 1, 28, 243, 128, 66, 9, 198, 52, 19, 1, 64, 83, 128, 16,
+			9, 198, 52, 16, 195, 32, 147, 128, 65, 7, 196, 28, 148, 5, 80, 15, 7, 196, 24, 81, 193, 80, 65, 6, 195, 12, 245, 0, 15, 6,
+			195, 12, 245, 0, 15, 7, 196, 12, 244, 5, 80, 15, 7, 196, 5, 48, 197, 80, 15, 9, 198, 5, 4, 137, 12, 83, 128, 16, 0, 12,
+			68, 40, 80, 78, 76, 75, 37, 12, 50, 89, 0, 12, 201, 96, 83, 143, 28, 195, 211, 76, 144, 64, 68, 6, 195, 80, 243, 6, 15, 12,
+			201, 80, 84, 141, 60, 51, 208, 64, 144, 64, 15, 12, 201, 76, 84, 211, 84, 241, 143, 8, 144, 64, 68, 12, 201, 76, 51, 210, 12, 144,
+			84, 60, 144, 64, 16, 13, 202, 64, 145, 90, 60, 83, 5, 81, 68, 137, 12, 15, 10, 198, 20, 224, 197, 24, 19, 0, 66, 15, 12, 201,
+			12, 20, 16, 20, 195, 1, 56, 144, 64, 68, 12, 201, 5, 163, 207, 77, 1, 82, 52, 144, 64, 69, 12, 201, 5, 84, 212, 72, 19, 1,
+			76, 144, 64, 68, 12, 201, 4, 229, 15, 56, 243, 65, 76, 144, 64, 68, 12, 201, 4, 229, 9, 52, 21, 5, 72, 144, 64, 68, 0, 11,
+			200, 36, 224, 193, 72, 144, 193, 56, 240, 66, 11, 200, 16, 149, 129, 72, 144, 193, 56, 240, 66, 11, 200, 4, 195, 1, 72, 114, 9, 56,
+			240, 66, 10, 67, 28, 194, 64, 61, 37, 0, 46, 76, 9, 198, 88, 84, 148, 20, 36, 133, 65, 9, 198, 56, 245, 133, 52, 36, 133, 15,
+			6, 195, 52, 242, 192, 15, 9, 198, 52, 19, 137, 12, 243, 73, 15, 8, 197, 44, 18, 82, 61, 48, 66, 9, 198, 16, 144, 197, 52, 36,
+			133, 15, 9, 198, 12, 243, 15, 76, 147, 73, 66, 8, 197, 12, 21, 67, 5, 48, 65, 0, 6, 195, 80, 85, 84, 65, 10, 199, 21, 85,
+			9, 25, 35, 206, 20, 67, 10, 199, 17, 32, 71, 4, 210, 78, 20, 67, 6, 195, 13, 33, 80, 15, 10, 199, 12, 243, 12, 4, 113, 78,
+			20, 66, 10, 199, 12, 192, 90, 60, 209, 78, 20, 66, 0, 7, 196, 16, 81, 9, 80, 65, 7, 196, 12, 149, 137, 80, 65, 0, 6, 195,
+			65, 35, 198, 24, 11, 200, 12, 83, 133, 72, 83, 148, 60, 192, 15, 0, 12, 201, 88, 84, 137, 24, 144, 193, 80, 148, 201, 68, 12, 201,
+			65, 50, 67, 60, 19, 129, 48, 148, 201, 68, 0, 7, 196, 64, 84, 137, 52, 66, 7, 196, 20, 195, 199, 36, 15, 6, 195, 12, 240, 136,
+			16, 11, 200, 5, 32, 201, 16, 144, 67, 60, 224, 67, 0, 7, 196, 32, 245, 5, 48, 66, 8, 196, 64, 85, 1, 48, 65, 15, 11, 200,
+			21, 32, 84, 61, 53, 5, 56, 80, 67, 7, 195, 21, 3, 195, 65, 15, 0, 14, 68, 72, 22, 154, 60, 14, 16, 6, 35, 128, 12, 39,
+			0, 9, 198, 20, 193, 77, 61, 50, 78, 67, 0, 20, 71, 28, 19, 15, 65, 0, 78, 60, 81, 108, 55, 6, 39, 48, 12, 35, 50, 39,
+			0, 11, 70, 20, 225, 204, 37, 50, 0, 21, 0, 47, 6, 195, 81, 85, 21, 66, 10, 199, 12, 243, 2, 72, 144, 207, 56, 67, 12, 201,
+			4, 65, 78, 60, 148, 15, 24, 148, 201, 69, 0, 9, 198, 24, 244, 141, 36, 227, 192, 65, 9, 198, 20, 229, 18, 4, 227, 192, 65, 9,
+			198, 12, 244, 141, 4, 227, 192, 66, 9, 198, 65, 35, 211, 20, 194, 84, 66, 9, 198, 65, 35, 208, 61, 50, 84, 66, 7, 196, 48, 85,
+			67, 36, 65, 7, 196, 37, 51, 1, 52, 66, 9, 198, 36, 227, 143, 13, 83, 192, 15, 7, 196, 24, 243, 133, 52, 15, 9, 198, 16, 148,
+			195, 5, 2, 84, 66, 9, 198, 16, 83, 79, 13, 34, 84, 66, 9, 198, 12, 243, 80, 61, 50, 84, 66, 0, 8, 197, 76, 145, 14, 21,
+			144, 65, 11, 200, 76, 83, 73, 12, 84, 131, 32, 144, 16, 6, 195, 64, 243, 3, 15, 6, 195, 12, 243, 135, 15, 0, 10, 199, 36, 225,
+			81, 84, 149, 143, 12, 67, 5, 194, 36, 64, 13, 15, 3, 95, 50, 49, 84, 6, 36, 50, 47, 6, 40, 50, 39, 0, 5, 194, 20, 192,
+			16, 0, 6, 195, 24, 84, 192, 15, 6, 195, 17, 83, 205, 15, 9, 198, 12, 19, 16, 21, 53, 9, 67, 0, 9, 198, 76, 244, 141, 4,
+			227, 192, 66, 9, 198, 28, 246, 154, 4, 227, 192, 66, 7, 196, 56, 83, 12, 4, 76, 15, 3, 95, 50, 51, 84, 36, 50, 47, 37, 47,
+			51, 6, 36, 0, 7, 196, 88, 84, 18, 20, 15, 7, 196, 48, 147, 12, 4, 66, 7, 196, 48, 84, 18, 20, 15, 7, 196, 20, 227, 206,
+			20, 15, 7, 196, 5, 33, 78, 20, 16, 7, 196, 4, 112, 86, 20, 65, 0, 9, 198, 77, 84, 5, 72, 19, 128, 65, 9, 198, 37, 51,
+			195, 72, 243, 128, 66, 9, 198, 28, 20, 143, 24, 19, 128, 66, 7, 196, 24, 147, 206, 16, 16, 0, 18, 3, 95, 50, 53, 84, 36, 50,
+			47, 37, 76, 6, 37, 50, 49, 58, 109, 0, 7, 196, 77, 4, 133, 12, 15, 7, 196, 21, 67, 137, 12, 15, 0, 11, 200, 65, 35, 214,
+			20, 225, 193, 56, 240, 66, 11, 200, 12, 243, 150, 20, 225, 193, 56, 240, 66, 20, 3, 95, 50, 52, 84, 36, 50, 47, 37, 49, 58, 6,
+			35, 47, 12, 14, 16, 39, 0, 13, 202, 80, 145, 204, 5, 68, 9, 48, 84, 197, 72, 15, 6, 195, 72, 84, 192, 16, 0, 9, 68, 17,
+			34, 86, 20, 21, 0, 47, 17, 3, 95, 50, 55, 84, 36, 50, 47, 37, 89, 6, 109, 47, 12, 36, 0, 6, 195, 80, 244, 132, 16, 8,
+			197, 76, 147, 12, 4, 32, 65, 10, 199, 56, 80, 210, 60, 195, 199, 36, 15, 6, 195, 48, 244, 132, 16, 0, 15, 3, 95, 50, 54, 84,
+			36, 50, 47, 37, 89, 6, 109, 57, 0, 9, 198, 4, 193, 197, 56, 144, 128, 15, 0, 9, 198, 12, 83, 5, 9, 32, 64, 65, 9, 198,
+			52, 19, 148, 61, 96, 64, 65, 15, 4, 95, 98, 114, 118, 71, 14, 16, 6, 36, 12, 84, 36, 0, 9, 198, 88, 83, 149, 77, 64, 64,
+			67, 7, 196, 81, 34, 65, 12, 65, 9, 198, 64, 241, 5, 77, 64, 64, 67, 12, 201, 52, 243, 148, 20, 114, 79, 72, 114, 64, 16, 7,
+			196, 52, 241, 15, 12, 15, 0, 8, 67, 56, 85, 192, 21, 0, 47, 6, 195, 21, 52, 197, 76, 6, 195, 100, 241, 192, 15, 13, 202, 77,
+			3, 1, 56, 51, 143, 64, 193, 85, 72, 67, 9, 198, 65, 33, 78, 76, 147, 5, 15, 6, 195, 64, 244, 5, 15, 10, 198, 36, 83, 80,
+			76, 19, 5, 65, 15, 7, 196, 4, 229, 9, 24, 65, 9, 198, 4, 227, 137, 8, 19, 5, 66, 0, 7, 196, 64, 243, 12, 36, 15, 12,
+			200, 52, 243, 148, 20, 66, 83, 60, 224, 66, 15, 10, 199, 20, 51, 211, 37, 53, 5, 52, 15, 12, 201, 16, 147, 137, 81, 35, 198, 20,
+			227, 204, 69, 0, 9, 198, 24, 16, 195, 36, 19, 79, 76, 9, 198, 81, 34, 71, 48, 145, 128, 65, 0, 9, 68, 100, 18, 15, 60, 21,
+			0, 47, 23, 4, 95, 97, 99, 50, 72, 6, 39, 48, 12, 37, 38, 39, 23, 35, 49, 6, 40, 12, 47, 39, 0, 7, 196, 88, 145, 5,
+			60, 65, 0, 6, 195, 24, 20, 133, 77, 6, 195, 61, 52, 193, 16, 6, 195, 8, 84, 133, 16, 0, 9, 198, 64, 84, 134, 21, 69, 0,
+			15, 8, 197, 56, 83, 77, 20, 224, 16, 8, 197, 52, 21, 18, 60, 224, 15, 8, 197, 20, 117, 77, 20, 224, 66, 0, 6, 195, 16, 241,
+			0, 15, 6, 195, 13, 33, 83, 15, 0, 8, 197, 64, 83, 132, 60, 192, 15, 10, 199, 64, 20, 142, 5, 52, 207, 76, 67, 8, 197, 52,
+			81, 15, 48, 192, 16, 5, 194, 20, 208, 15, 0, 6, 195, 52, 84, 137, 66, 6, 195, 16, 243, 0, 15, 10, 199, 16, 83, 9, 4, 229,
+			79, 88, 15, 8, 197, 13, 34, 83, 61, 0, 15, 12, 201, 12, 243, 148, 72, 245, 133, 73, 50, 65, 67, 0, 9, 198, 64, 20, 146, 36,
+			50, 68, 67, 10, 199, 44, 19, 80, 84, 50, 5, 4, 16, 8, 197, 32, 145, 82, 60, 224, 66, 0, 7, 196, 36, 224, 201, 80, 65, 10,
+			199, 72, 85, 18, 60, 116, 129, 16, 66, 7, 196, 61, 32, 137, 80, 65, 7, 196, 36, 228, 201, 80, 65, 9, 198, 12, 243, 148, 20, 212,
+			0, 15, 9, 198, 8, 20, 207, 16, 147, 128, 66, 9, 198, 5, 32, 207, 76, 83, 128, 16, 0, 7, 196, 56, 81, 213, 76, 15, 9, 198,
+			8, 83, 133, 88, 243, 0, 15, 0, 11, 200, 81, 32, 80, 5, 52, 193, 56, 240, 66, 11, 200, 76, 244, 148, 20, 113, 201, 56, 240, 66,
+			11, 200, 76, 241, 4, 37, 49, 129, 56, 240, 66, 11, 200, 12, 243, 148, 36, 229, 73, 56, 240, 66, 11, 200, 12, 243, 148, 36, 229, 65,
+			56, 240, 66, 11, 200, 12, 243, 80, 48, 85, 1, 56, 240, 66, 18, 3, 226, 128, 176, 48, 4, 109, 14, 16, 15, 65, 6, 37, 55, 55,
+			109, 0, 9, 198, 88, 83, 148, 21, 50, 77, 15, 8, 197, 80, 131, 204, 61, 48, 16, 7, 196, 80, 19, 129, 72, 65, 9, 198, 77, 1,
+			67, 84, 197, 77, 65, 12, 201, 64, 192, 78, 80, 17, 197, 56, 85, 0, 15, 7, 196, 57, 83, 69, 72, 65, 7, 196, 56, 83, 66, 72,
+			15, 13, 201, 29, 80, 82, 16, 144, 82, 20, 114, 65, 67, 15, 7, 196, 20, 195, 5, 72, 16, 15, 204, 13, 34, 83, 80, 19, 12, 61,
+			65, 82, 5, 2, 65, 70, 7, 196, 12, 243, 133, 72, 65, 10, 198, 12, 83, 148, 21, 50, 77, 66, 15, 6, 195, 5, 67, 205, 65, 0,
+			13, 202, 36, 229, 5, 72, 48, 80, 20, 66, 78, 36, 68, 10, 199, 77, 80, 131, 60, 228, 195, 36, 15, 6, 195, 16, 246, 0, 15, 9,
+			198, 16, 147, 199, 56, 85, 0, 15, 0, 12, 201, 16, 80, 207, 53, 4, 137, 52, 19, 143, 67, 9, 198, 77, 3, 201, 48, 84, 128, 65,
+			9, 198, 44, 20, 200, 52, 148, 128, 65, 6, 195, 4, 195, 15, 76, 12, 201, 80, 80, 200, 56, 144, 207, 48, 244, 128, 15, 7, 196, 77,
+			67, 208, 64, 16, 8, 196, 28, 243, 73, 80, 65, 16, 9, 198, 20, 97, 137, 52, 84, 128, 66, 9, 198, 16, 244, 137, 24, 244, 128, 66,
+			7, 196, 12, 20, 21, 80, 66, 0, 8, 197, 88, 147, 131, 37, 64, 65, 0, 10, 199, 64, 147, 214, 36, 113, 201, 56, 67, 7, 196, 12,
+			245, 133, 72, 65, 7, 196, 8, 21, 133, 72, 65, 0, 9, 198, 76, 147, 149, 21, 52, 192, 15, 6, 195, 37, 64, 76, 65, 0, 9, 198,
+			64, 243, 9, 20, 68, 128, 15, 9, 198, 61, 69, 1, 20, 68, 128, 15, 7, 196, 20, 227, 195, 32, 15, 9, 198, 16, 144, 77, 21, 68,
+			128, 65, 14, 202, 12, 195, 210, 4, 209, 133, 56, 144, 207, 48, 69, 15, 10, 199, 5, 144, 84, 60, 195, 1, 32, 68, 0, 8, 197, 4,
+			229, 9, 12, 128, 66, 7, 196, 72, 21, 5, 60, 65, 12, 201, 65, 35, 198, 60, 225, 9, 52, 85, 18, 67, 12, 201, 12, 149, 15, 76,
+			50, 5, 48, 85, 18, 67, 8, 197, 4, 225, 84, 60, 192, 67, 0, 7, 196, 4, 67, 210, 56, 16, 0, 12, 201, 12, 243, 148, 72, 17,
+			4, 36, 51, 192, 67, 10, 199, 12, 243, 148, 84, 208, 67, 20, 67, 7, 196, 77, 81, 204, 36, 76, 9, 198, 36, 212, 12, 36, 50, 84,
+			66, 10, 198, 12, 243, 135, 73, 83, 192, 65, 15, 6, 195, 5, 50, 76, 66, 0, 15, 68, 28, 208, 73, 48, 75, 126, 15, 65, 6, 36,
+			37, 55, 0, 7, 196, 76, 243, 65, 48, 65, 9, 198, 64, 19, 131, 72, 80, 83, 65, 0, 8, 197, 80, 244, 142, 60, 192, 16, 8, 196,
+			76, 243, 5, 60, 65, 15, 9, 198, 76, 241, 199, 36, 244, 142, 16, 8, 197, 56, 17, 148, 60, 192, 66, 8, 197, 52, 22, 154, 60, 192,
+			66, 7, 195, 21, 3, 206, 65, 15, 6, 195, 12, 83, 142, 16, 6, 195, 5, 67, 206, 65, 9, 198, 4, 197, 15, 24, 244, 142, 16, 0,
+			14, 3, 95, 51, 88, 47, 14, 16, 6, 36, 50, 47, 35, 0, 6, 195, 104, 85, 137, 15, 11, 200, 64, 83, 15, 64, 243, 142, 21, 48,
+			15, 6, 195, 61, 48, 192, 15, 0, 9, 198, 88, 83, 135, 4, 227, 192, 65, 9, 198, 52, 19, 131, 4, 227, 192, 65, 9, 198, 28, 147,
+			195, 4, 227, 192, 65, 7, 196, 4, 226, 84, 4, 66, 15, 69, 16, 144, 77, 36, 224, 72, 37, 6, 35, 65, 37, 50, 0, 9, 198, 4,
+			48, 193, 57, 67, 192, 66, 13, 3, 95, 48, 67, 76, 6, 36, 50, 47, 39, 0, 76, 8, 197, 64, 17, 18, 60, 224, 66, 7, 196, 32,
+			84, 150, 20, 66, 9, 198, 12, 20, 137, 61, 66, 80, 67, 0, 13, 202, 65, 50, 67, 61, 65, 82, 5, 1, 85, 80, 69, 9, 198, 48,
+			244, 133, 16, 19, 128, 67, 9, 198, 44, 128, 77, 76, 147, 128, 66, 9, 198, 37, 4, 201, 48, 243, 128, 65, 9, 198, 12, 20, 15, 49,
+			83, 199, 15, 9, 198, 8, 20, 153, 80, 243, 128, 65, 0, 8, 197, 64, 83, 148, 60, 64, 15, 7, 196, 64, 16, 197, 12, 15, 9, 198,
+			36, 225, 197, 57, 80, 64, 15, 8, 197, 12, 243, 135, 20, 64, 15, 9, 198, 8, 243, 135, 36, 244, 142, 16, 0, 6, 195, 81, 32, 64,
+			76, 6, 195, 88, 245, 9, 15, 0, 6, 195, 76, 244, 132, 16, 11, 200, 64, 246, 154, 4, 225, 200, 21, 32, 66, 7, 196, 64, 83, 142,
+			20, 16, 11, 200, 52, 22, 154, 4, 48, 200, 21, 32, 66, 9, 198, 24, 84, 212, 37, 96, 76, 65, 0, 17, 4, 95, 48, 90, 51, 65,
+			37, 55, 55, 6, 36, 88, 37, 65, 37, 0, 12, 201, 76, 19, 148, 4, 32, 82, 8, 20, 128, 67, 9, 198, 5, 4, 9, 60, 208, 128,
+			16, 0, 24, 70, 76, 81, 213, 37, 64, 64, 89, 36, 81, 58, 6, 37, 47, 35, 15, 72, 35, 0, 81, 100, 97, 32, 8, 197, 77, 82,
+			67, 36, 64, 67, 9, 198, 56, 81, 210, 37, 64, 64, 66, 12, 201, 76, 83, 80, 72, 85, 133, 72, 65, 64, 16, 7, 196, 76, 21, 143,
+			12, 65, 9, 198, 72, 19, 80, 60, 195, 0, 16, 9, 198, 56, 81, 210, 37, 64, 64, 67, 12, 201, 52, 20, 131, 36, 20, 9, 20, 65,
+			64, 15, 12, 201, 21, 2, 71, 48, 245, 20, 36, 65, 64, 15, 12, 201, 12, 243, 148, 72, 244, 9, 20, 65, 64, 15, 12, 201, 12, 20,
+			212, 20, 197, 133, 72, 65, 64, 16, 9, 197, 5, 4, 18, 60, 64, 66, 15, 0, 6, 195, 80, 244, 129, 66, 6, 195, 76, 84, 129, 16,
+			10, 199, 69, 80, 78, 80, 243, 69, 56, 16, 7, 196, 12, 243, 15, 8, 65, 9, 198, 5, 52, 197, 52, 35, 5, 67, 0, 7, 196, 24,
+			241, 204, 36, 15, 10, 198, 20, 211, 69, 57, 64, 76, 65, 15, 7, 196, 16, 241, 204, 36, 15, 0, 15, 3, 226, 136, 158, 37, 50, 83,
+			37, 50, 6, 126, 47, 39, 0, 11, 200, 65, 35, 194, 61, 48, 201, 16, 80, 15, 11, 199, 16, 145, 78, 12, 81, 129, 48, 66, 15, 0,
+			12, 67, 9, 83, 206, 71, 40, 6, 39, 50, 0, 76, 9, 68, 76, 224, 67, 44, 21, 0, 47, 8, 197, 88, 145, 206, 60, 192, 66, 8,
+			197, 88, 22, 154, 60, 192, 66, 6, 195, 64, 246, 154, 16, 8, 197, 24, 20, 147, 4, 192, 65, 8, 197, 12, 20, 211, 4, 192, 65, 0,
+			9, 198, 60, 32, 140, 36, 114, 9, 65, 8, 67, 92, 21, 133, 21, 0, 47, 6, 195, 21, 52, 193, 76, 20, 3, 226, 137, 160, 50, 39,
+			50, 15, 40, 81, 58, 6, 35, 55, 36, 15, 4, 35, 0, 9, 198, 88, 148, 201, 28, 245, 9, 15, 6, 195, 72, 244, 133, 15, 6, 195,
+			44, 244, 133, 66, 6, 195, 12, 244, 133, 15, 11, 200, 12, 243, 148, 72, 17, 82, 20, 240, 67, 6, 195, 8, 244, 133, 15, 0, 7, 196,
+			16, 81, 204, 36, 76, 7, 196, 16, 17, 204, 36, 76, 8, 197, 61, 34, 71, 4, 224, 66, 8, 197, 24, 83, 19, 36, 224, 65, 9, 197,
+			9, 33, 71, 4, 224, 65, 15, 0, 24, 3, 226, 136, 154, 89, 4, 109, 67, 39, 15, 72, 4, 37, 15, 14, 16, 35, 72, 6, 37, 76,
+			36, 0, 0, 6, 194, 48, 16, 76, 46, 16, 3, 95, 49, 57, 72, 37, 76, 35, 50, 50, 6, 39, 84, 36, 0, 8, 197, 88, 83, 148,
+			60, 192, 15, 12, 201, 64, 243, 148, 20, 192, 78, 16, 243, 6, 15, 8, 197, 12, 148, 15, 48, 192, 16, 8, 197, 12, 22, 154, 60, 192,
+			66, 8, 197, 4, 212, 15, 48, 192, 16, 0, 14, 3, 95, 49, 56, 72, 37, 76, 6, 110, 47, 12, 39, 0, 9, 198, 64, 145, 15, 12,
+			50, 9, 15, 9, 198, 36, 224, 207, 49, 83, 69, 66, 0, 6, 195, 21, 98, 84, 65, 8, 197, 16, 243, 13, 4, 224, 15, 0, 9, 198,
+			88, 147, 12, 5, 35, 211, 15, 6, 195, 80, 245, 15, 66, 6, 195, 80, 245, 15, 15, 8, 196, 60, 96, 78, 80, 65, 15, 19, 70, 29,
+			32, 84, 84, 149, 15, 81, 14, 16, 35, 47, 6, 40, 37, 47, 39, 0, 0, 6, 195, 80, 244, 130, 16, 9, 198, 52, 19, 5, 88, 243,
+			0, 15, 9, 198, 12, 147, 133, 12, 197, 66, 67, 0, 7, 195, 4, 115, 9, 76, 46, 6, 195, 12, 245, 9, 15, 6, 195, 8, 19, 9,
+			66, 0, 10, 199, 16, 85, 5, 72, 210, 78, 4, 66, 9, 198, 76, 240, 195, 61, 36, 192, 16, 9, 198, 72, 147, 131, 61, 36, 192, 16,
+			9, 198, 72, 147, 66, 61, 36, 192, 16, 9, 198, 72, 84, 208, 60, 228, 192, 15, 9, 198, 64, 84, 131, 61, 36, 192, 16, 9, 198, 61,
+			35, 5, 4, 228, 192, 16, 6, 195, 21, 50, 84, 65, 9, 198, 16, 148, 195, 61, 36, 192, 16, 0, 26, 73, 36, 229, 1, 73, 50, 65,
+			88, 19, 143, 37, 50, 47, 35, 14, 16, 89, 37, 6, 35, 84, 35, 50, 39, 0, 17, 70, 73, 144, 78, 4, 148, 128, 14, 16, 6, 117,
+			35, 50, 36, 51, 0, 12, 201, 60, 197, 18, 20, 211, 206, 80, 19, 143, 68, 12, 201, 60, 197, 18, 20, 211, 206, 16, 19, 143, 68, 9,
+			198, 77, 64, 82, 80, 84, 128, 65, 11, 70, 77, 1, 65, 44, 84, 128, 21, 0, 47, 9, 198, 76, 178, 80, 64, 84, 128, 65, 9, 198,
+			64, 242, 78, 80, 84, 128, 65, 9, 198, 52, 19, 129, 28, 84, 128, 65, 9, 198, 24, 194, 80, 64, 84, 128, 65, 9, 198, 13, 32, 67,
+			44, 84, 128, 65, 11, 3, 226, 136, 146, 65, 6, 109, 50, 39, 0, 9, 198, 105, 80, 195, 32, 84, 128, 65, 9, 198, 76, 115, 205, 8,
+			84, 128, 65, 9, 198, 76, 50, 79, 64, 84, 128, 65, 9, 198, 76, 19, 79, 88, 20, 128, 67, 9, 198, 64, 20, 1, 88, 84, 128, 66,
+			9, 198, 36, 68, 143, 88, 244, 128, 66, 9, 198, 16, 82, 79, 80, 20, 128, 66, 9, 198, 12, 19, 15, 28, 84, 128, 66, 0, 16, 3,
+			95, 50, 57, 84, 36, 50, 47, 37, 50, 6, 110, 84, 36, 0, 13, 3, 95, 49, 49, 6, 40, 50, 72, 37, 76, 37, 0, 9, 198, 4,
+			229, 9, 64, 21, 18, 66, 0, 7, 196, 56, 145, 197, 72, 65, 17, 70, 88, 241, 1, 24, 243, 133, 84, 6, 39, 72, 35, 83, 39, 50,
+			0, 8, 196, 76, 149, 1, 72, 65, 46, 16, 3, 95, 50, 56, 84, 6, 36, 50, 47, 6, 110, 47, 12, 39, 0, 12, 3, 95, 49, 48,
+			72, 37, 6, 36, 76, 37, 0, 9, 198, 80, 148, 201, 24, 243, 133, 66, 7, 196, 76, 149, 1, 72, 66, 10, 198, 64, 243, 5, 76, 147,
+			133, 66, 16, 10, 198, 52, 16, 197, 16, 243, 133, 66, 15, 9, 198, 37, 4, 15, 52, 83, 133, 66, 9, 198, 28, 19, 1, 80, 243, 133,
+			66, 8, 196, 21, 69, 1, 72, 65, 15, 9, 198, 16, 21, 80, 32, 147, 133, 68, 9, 198, 12, 193, 79, 52, 83, 133, 66, 0, 7, 196,
+			4, 114, 84, 36, 65, 15, 3, 95, 49, 51, 47, 14, 16, 6, 36, 72, 37, 76, 37, 0, 8, 196, 20, 35, 204, 36, 65, 15, 0, 13,
+			3, 95, 49, 50, 72, 6, 39, 72, 37, 76, 37, 0, 12, 200, 76, 245, 20, 61, 33, 9, 56, 80, 66, 16, 9, 198, 64, 19, 16, 20,
+			36, 128, 65, 6, 195, 12, 84, 131, 16, 6, 195, 12, 84, 131, 16, 0, 8, 197, 56, 21, 137, 28, 128, 65, 15, 3, 95, 49, 53, 49,
+			122, 6, 37, 65, 72, 37, 76, 37, 0, 18, 4, 95, 99, 121, 114, 76, 126, 51, 6, 37, 55, 12, 126, 49, 110, 9, 0, 8, 197, 52,
+			84, 212, 60, 192, 16, 8, 197, 12, 147, 212, 60, 192, 65, 8, 197, 12, 83, 148, 60, 192, 15, 0, 18, 3, 95, 49, 52, 49, 122, 35,
+			47, 12, 6, 110, 51, 72, 37, 76, 37, 0, 8, 196, 80, 85, 1, 56, 65, 15, 7, 196, 12, 244, 137, 104, 65, 0, 17, 3, 95, 49,
+			55, 72, 37, 76, 35, 89, 12, 6, 109, 47, 12, 36, 0, 11, 200, 81, 32, 80, 21, 163, 197, 17, 32, 15, 10, 199, 52, 19, 5, 8,
+			243, 7, 20, 15, 11, 200, 13, 80, 143, 81, 64, 69, 17, 32, 15, 8, 197, 9, 80, 195, 36, 224, 65, 0, 13, 3, 95, 49, 54, 89,
+			6, 36, 72, 37, 76, 37, 0, 6, 195, 88, 84, 135, 16, 6, 195, 76, 244, 135, 16, 6, 195, 8, 244, 135, 16, 0, 8, 197, 64, 246,
+			154, 60, 192, 66, 6, 195, 48, 241, 26, 16, 7, 196, 44, 22, 65, 44, 66, 12, 201, 24, 243, 148, 4, 225, 76, 36, 49, 64, 16, 9,
+			197, 20, 227, 149, 64, 192, 65, 15, 0, 15, 3, 95, 55, 88, 89, 36, 47, 12, 6, 35, 50, 47, 35, 0, 7, 196, 88, 83, 5, 56,
+			16, 10, 199, 80, 83, 5, 12, 19, 69, 72, 67, 7, 196, 64, 19, 5, 56, 16, 7, 196, 52, 16, 201, 56, 65, 7, 196, 8, 19, 5,
+			56, 16, 0, 18, 70, 52, 81, 9, 5, 49, 84, 65, 6, 109, 72, 37, 35, 89, 36, 47, 0, 8, 197, 81, 34, 84, 60, 224, 65, 7,
+			196, 80, 19, 9, 4, 66, 7, 196, 76, 147, 73, 4, 65, 7, 196, 64, 243, 9, 4, 66, 7, 196, 52, 81, 9, 4, 15, 7, 196, 21,
+			67, 137, 4, 66, 7, 196, 17, 83, 9, 4, 66, 0, 24, 73, 12, 128, 78, 76, 243, 142, 36, 84, 128, 91, 4, 35, 68, 89, 6, 110,
+			50, 37, 36, 14, 16, 0, 9, 197, 76, 193, 83, 36, 16, 65, 15, 12, 201, 12, 20, 212, 72, 243, 9, 8, 84, 128, 67, 9, 198, 4,
+			229, 9, 17, 35, 199, 15, 0, 10, 198, 56, 85, 20, 5, 33, 64, 65, 15, 9, 198, 56, 84, 212, 61, 33, 64, 65, 9, 198, 52, 20,
+			148, 37, 33, 64, 65, 9, 198, 52, 19, 12, 5, 33, 64, 65, 9, 198, 49, 81, 213, 9, 33, 64, 65, 9, 198, 36, 228, 213, 9, 33,
+			64, 65, 9, 198, 12, 83, 5, 9, 33, 64, 65, 10, 198, 12, 80, 210, 61, 1, 64, 65, 15, 9, 198, 12, 20, 212, 61, 33, 64, 65,
+			0, 11, 200, 25, 83, 154, 36, 243, 137, 56, 240, 67, 11, 200, 12, 148, 131, 60, 225, 9, 56, 240, 66, 11, 200, 52, 243, 154, 4, 208,
+			129, 56, 240, 67, 9, 198, 80, 83, 199, 56, 145, 5, 15, 9, 198, 65, 32, 83, 76, 81, 5, 15, 9, 198, 48, 144, 207, 52, 81, 5,
+			15, 0, 12, 201, 81, 32, 83, 12, 83, 132, 4, 227, 192, 66, 12, 201, 76, 99, 210, 8, 144, 201, 4, 227, 192, 65, 12, 201, 76, 51,
+			210, 4, 113, 201, 4, 227, 192, 66, 12, 201, 64, 20, 148, 20, 50, 80, 4, 227, 192, 66, 12, 201, 21, 98, 68, 20, 230, 137, 4, 227,
+			192, 67, 12, 201, 16, 240, 213, 52, 83, 148, 4, 227, 192, 67, 12, 201, 12, 243, 134, 72, 243, 148, 36, 227, 192, 66, 12, 201, 12, 243,
+			80, 72, 83, 132, 4, 227, 192, 66, 13, 68, 5, 101, 137, 4, 35, 84, 12, 6, 125, 35, 0, 12, 201, 76, 19, 132, 88, 144, 201, 4,
+			227, 192, 67, 12, 201, 76, 19, 132, 88, 144, 201, 4, 227, 192, 67, 7, 196, 76, 81, 9, 4, 15, 7, 196, 52, 19, 9, 4, 66, 7,
+			196, 48, 19, 73, 4, 65, 7, 196, 28, 243, 9, 4, 66, 0, 12, 201, 77, 147, 148, 32, 84, 201, 104, 84, 128, 67, 24, 73, 72, 240,
+			203, 20, 97, 76, 48, 84, 128, 14, 16, 110, 49, 83, 6, 36, 55, 12, 36, 14, 16, 0, 9, 198, 81, 32, 83, 12, 244, 147, 16, 0,
+			9, 198, 16, 148, 207, 72, 66, 78, 66, 11, 199, 12, 244, 132, 20, 227, 206, 76, 67, 15, 18, 70, 4, 208, 133, 17, 81, 64, 35, 65,
+			71, 36, 72, 6, 40, 12, 36, 0, 0, 18, 70, 12, 242, 78, 12, 145, 1, 49, 39, 6, 37, 50, 76, 37, 47, 35, 0, 23, 73, 36,
+			212, 5, 4, 50, 13, 20, 229, 0, 37, 65, 48, 6, 37, 76, 65, 4, 36, 50, 74, 0, 6, 195, 24, 21, 5, 77, 6, 195, 88, 21,
+			5, 66, 9, 198, 76, 128, 78, 28, 128, 73, 66, 6, 195, 72, 85, 5, 16, 8, 197, 37, 51, 212, 61, 0, 66, 8, 197, 21, 83, 79,
+			49, 0, 15, 0, 10, 199, 81, 33, 78, 80, 84, 201, 52, 15, 7, 196, 76, 209, 71, 52, 15, 0, 6, 195, 12, 243, 147, 15, 0, 9,
+			197, 76, 244, 150, 60, 192, 66, 16, 8, 197, 8, 17, 206, 60, 192, 66, 0, 14, 4, 95, 97, 99, 117, 35, 49, 6, 40, 12, 47, 39,
+			0, 13, 67, 65, 37, 65, 48, 14, 16, 6, 40, 12, 35, 0, 6, 195, 56, 245, 133, 15, 6, 195, 48, 85, 133, 15, 9, 198, 12, 19,
+			3, 5, 33, 69, 66, 0, 8, 197, 76, 195, 199, 4, 224, 15, 9, 198, 24, 20, 195, 21, 69, 0, 16, 9, 198, 24, 16, 195, 21, 69,
+			0, 16, 9, 198, 12, 243, 132, 61, 69, 0, 16, 0, 0, 21, 71, 29, 80, 73, 76, 48, 78, 60, 81, 122, 35, 6, 37, 12, 89, 49,
+			35, 50, 39, 0, 6, 194, 52, 16, 76, 28, 9, 198, 16, 148, 208, 72, 86, 154, 15, 9, 198, 12, 149, 20, 4, 227, 214, 15, 8, 197,
+			8, 246, 154, 60, 192, 15, 0, 8, 197, 36, 225, 15, 48, 240, 66, 6, 195, 24, 243, 0, 15, 0, 8, 197, 56, 84, 211, 84, 224, 78,
+			10, 199, 52, 84, 131, 4, 230, 137, 4, 67, 9, 198, 52, 19, 147, 84, 85, 0, 15, 8, 197, 48, 148, 212, 60, 224, 66, 10, 199, 37,
+			3, 212, 21, 35, 73, 4, 68, 10, 199, 28, 84, 129, 72, 50, 9, 4, 67, 10, 199, 28, 83, 212, 21, 35, 73, 4, 68, 10, 199, 24,
+			147, 1, 80, 83, 9, 4, 68, 10, 199, 24, 83, 143, 12, 244, 9, 4, 15, 10, 199, 21, 51, 212, 72, 244, 9, 4, 68, 10, 199, 21,
+			5, 1, 72, 50, 9, 4, 67, 10, 199, 21, 2, 76, 21, 52, 201, 4, 68, 10, 199, 16, 148, 204, 21, 52, 201, 4, 67, 10, 198, 16,
+			81, 137, 12, 149, 0, 65, 15, 10, 199, 12, 20, 15, 12, 50, 9, 4, 15, 10, 199, 5, 64, 82, 5, 52, 201, 4, 68, 20, 71, 4,
+			48, 193, 16, 83, 73, 4, 35, 49, 12, 35, 72, 6, 109, 65, 37, 35, 0, 0, 7, 196, 77, 65, 80, 64, 16, 7, 196, 76, 52, 143,
+			80, 15, 15, 203, 52, 243, 143, 12, 245, 9, 48, 81, 15, 56, 144, 69, 15, 6, 195, 24, 245, 0, 15, 19, 70, 24, 244, 148, 84, 149,
+			15, 83, 110, 14, 16, 47, 6, 40, 37, 47, 39, 0, 7, 196, 12, 20, 143, 80, 15, 7, 196, 12, 19, 129, 64, 65, 7, 196, 12, 19,
+			129, 64, 65, 0, 8, 197, 80, 83, 196, 61, 64, 66, 8, 197, 21, 35, 196, 61, 64, 66, 0, 7, 196, 76, 21, 21, 72, 65, 6, 195,
+			56, 84, 9, 15, 6, 195, 28, 245, 9, 15, 6, 195, 13, 83, 201, 15, 7, 196, 12, 19, 69, 72, 65, 0, 12, 201, 36, 228, 213, 16,
+			144, 201, 4, 227, 192, 66, 12, 201, 12, 21, 1, 48, 241, 200, 36, 227, 192, 66, 12, 201, 76, 147, 80, 48, 144, 201, 4, 227, 192, 67,
+			12, 201, 64, 81, 5, 52, 243, 148, 4, 227, 192, 68, 12, 201, 24, 81, 5, 72, 144, 201, 4, 227, 192, 68, 16, 69, 92, 17, 206, 21,
+			32, 84, 6, 35, 81, 50, 109, 14, 16, 0, 10, 69, 17, 34, 86, 21, 32, 21, 0, 47, 8, 197, 80, 84, 133, 9, 32, 65, 8, 197,
+			72, 149, 18, 61, 96, 15, 8, 197, 21, 51, 206, 21, 32, 66, 11, 200, 12, 192, 77, 36, 67, 198, 61, 32, 67, 9, 198, 4, 229, 9,
+			16, 245, 0, 66, 0, 12, 201, 36, 229, 5, 73, 4, 133, 80, 19, 143, 66, 11, 200, 12, 19, 131, 20, 195, 1, 52, 144, 66, 12, 201,
+			60, 197, 18, 4, 211, 206, 80, 19, 143, 68, 12, 201, 60, 197, 18, 4, 211, 206, 16, 19, 143, 68, 12, 201, 12, 149, 18, 4, 211, 206,
+			80, 19, 143, 68, 9, 198, 77, 3, 206, 76, 244, 128, 65, 17, 70, 76, 51, 207, 80, 84, 128, 89, 49, 6, 40, 47, 109, 14, 16, 0,
+			9, 198, 77, 64, 70, 24, 244, 128, 65, 9, 198, 52, 243, 143, 52, 84, 128, 66, 9, 198, 16, 83, 9, 8, 84, 128, 66, 10, 198, 12,
+			240, 207, 52, 84, 128, 66, 16, 0, 9, 198, 64, 84, 133, 80, 243, 0, 66, 8, 197, 48, 145, 86, 37, 64, 66, 9, 198, 37, 3, 195,
+			20, 229, 18, 15, 8, 197, 16, 149, 137, 21, 64, 15, 0, 12, 3, 95, 50, 88, 84, 6, 36, 50, 47, 57, 0, 7, 196, 80, 85, 67,
+			72, 65, 9, 198, 12, 20, 148, 60, 48, 201, 15, 0, 8, 197, 8, 21, 20, 21, 32, 65, 17, 69, 93, 34, 84, 21, 32, 84, 14, 16,
+			6, 117, 47, 36, 14, 16, 0, 9, 197, 76, 83, 12, 21, 32, 65, 47, 16, 69, 72, 80, 68, 21, 32, 14, 16, 6, 37, 72, 109, 14,
+			16, 0, 9, 197, 52, 147, 12, 21, 32, 65, 46, 14, 69, 48, 80, 68, 21, 32, 55, 37, 72, 109, 14, 16, 0, 8, 197, 32, 149, 12,
+			21, 32, 65, 27, 67, 12, 19, 12, 49, 6, 39, 55, 15, 89, 6, 36, 50, 47, 109, 14, 16, 0, 81, 99, 101, 110, 116, 101, 114, 32,
+			7, 196, 72, 148, 5, 36, 66, 10, 198, 60, 211, 137, 9, 84, 192, 65, 15, 10, 199, 37, 4, 15, 64, 245, 1, 52, 67, 7, 196, 20,
+			36, 133, 36, 66, 7, 196, 5, 52, 193, 36, 66, 6, 195, 5, 51, 204, 65, 0, 9, 198, 88, 145, 207, 56, 245, 128, 15, 12, 201, 64,
+			20, 129, 12, 85, 1, 52, 243, 0, 69, 7, 196, 61, 36, 207, 48, 16, 7, 196, 56, 84, 143, 48, 65, 11, 199, 36, 68, 143, 12, 81,
+			129, 48, 67, 15, 9, 198, 12, 21, 20, 20, 68, 128, 65, 0, 8, 197, 64, 145, 206, 60, 192, 66, 8, 197, 52, 84, 195, 4, 192, 66,
+			10, 199, 12, 19, 142, 4, 195, 206, 28, 15, 0, 0, 8, 197, 61, 34, 71, 36, 224, 66, 7, 196, 24, 244, 212, 36, 76, 17, 3, 226,
+			136, 171, 37, 50, 47, 36, 81, 14, 16, 6, 35, 55, 36, 0, 12, 201, 76, 245, 20, 61, 4, 143, 16, 245, 20, 16, 7, 196, 48, 241,
+			204, 36, 15, 8, 197, 16, 243, 13, 20, 224, 15, 10, 199, 12, 129, 76, 36, 49, 82, 36, 66, 0, 14, 203, 16, 144, 201, 5, 52, 197,
+			81, 65, 83, 36, 208, 15, 0, 10, 199, 65, 35, 208, 4, 112, 78, 60, 66, 10, 199, 65, 35, 195, 85, 32, 78, 60, 66, 10, 199, 36,
+			229, 5, 57, 66, 78, 60, 66, 10, 199, 5, 83, 69, 57, 64, 78, 60, 67, 10, 199, 12, 244, 131, 32, 144, 78, 60, 67, 20, 71, 4,
+			225, 204, 36, 48, 78, 60, 35, 68, 81, 55, 37, 49, 6, 35, 50, 39, 0, 8, 197, 52, 145, 206, 60, 192, 65, 8, 197, 16, 243, 142,
+			60, 192, 15, 0, 11, 200, 64, 85, 15, 56, 50, 65, 56, 240, 67, 13, 72, 88, 145, 5, 60, 112, 77, 21, 48, 21, 0, 47, 6, 195,
+			52, 144, 64, 76, 6, 195, 80, 20, 137, 66, 6, 195, 52, 244, 137, 16, 7, 196, 48, 147, 69, 56, 65, 10, 199, 12, 83, 148, 72, 243,
+			69, 72, 66, 6, 195, 8, 240, 64, 15, 0, 8, 197, 25, 83, 13, 36, 224, 65, 7, 196, 24, 244, 211, 20, 77, 10, 198, 81, 34, 86,
+			20, 225, 84, 66, 15, 7, 196, 80, 83, 137, 4, 15, 7, 196, 64, 243, 131, 20, 15, 7, 196, 52, 17, 137, 4, 65, 10, 198, 48, 147,
+			134, 60, 227, 196, 67, 15, 7, 196, 24, 244, 147, 20, 16, 8, 197, 24, 83, 77, 36, 224, 65, 7, 196, 8, 244, 133, 4, 65, 7, 196,
+			4, 194, 67, 20, 66, 0, 10, 199, 64, 83, 148, 5, 67, 5, 80, 15, 10, 199, 52, 20, 129, 80, 243, 133, 80, 15, 7, 196, 12, 243,
+			79, 16, 65, 9, 198, 12, 147, 79, 48, 18, 83, 67, 10, 199, 4, 224, 76, 24, 16, 133, 80, 15, 0, 24, 70, 76, 81, 213, 37, 65,
+			64, 89, 36, 81, 58, 6, 37, 47, 36, 15, 72, 35, 0, 81, 100, 97, 32, 11, 199, 72, 148, 197, 73, 96, 78, 60, 66, 16, 10, 199,
+			72, 145, 149, 28, 144, 78, 60, 66, 10, 199, 48, 19, 69, 57, 64, 78, 60, 66, 10, 199, 36, 229, 133, 57, 66, 78, 60, 66, 10, 199,
+			12, 194, 67, 12, 130, 78, 60, 65, 10, 199, 5, 69, 5, 77, 66, 78, 60, 66, 10, 199, 4, 32, 129, 56, 67, 206, 60, 67, 10, 199,
+			88, 80, 195, 32, 144, 78, 60, 67, 9, 198, 76, 240, 210, 5, 65, 64, 65, 10, 199, 36, 225, 15, 77, 64, 78, 60, 67, 10, 199, 28,
+			21, 143, 73, 32, 78, 60, 67, 9, 198, 9, 83, 7, 5, 33, 64, 65, 9, 198, 5, 97, 86, 5, 65, 64, 75, 9, 198, 21, 32, 86,
+			5, 65, 64, 67, 9, 198, 89, 83, 20, 85, 33, 64, 65, 9, 198, 85, 33, 84, 21, 33, 64, 67, 9, 198, 77, 64, 84, 21, 33, 64,
+			66, 9, 198, 76, 147, 131, 61, 1, 64, 65, 9, 198, 61, 69, 15, 9, 33, 64, 16, 9, 198, 52, 85, 20, 21, 33, 64, 15, 9, 198,
+			52, 85, 5, 61, 33, 64, 66, 9, 198, 48, 16, 200, 21, 65, 64, 15, 9, 198, 13, 32, 84, 21, 33, 64, 66, 6, 195, 8, 83, 22,
+			16, 0, 6, 195, 21, 52, 201, 76, 6, 195, 44, 80, 64, 16, 0, 21, 72, 20, 148, 197, 56, 131, 215, 21, 32, 117, 88, 36, 50, 6,
+			35, 58, 109, 14, 16, 0, 14, 3, 95, 63, 63, 89, 6, 37, 65, 71, 39, 55, 39, 0, 7, 196, 76, 145, 80, 20, 15, 7, 196, 52,
+			19, 137, 4, 66, 7, 196, 44, 83, 137, 4, 15, 7, 196, 8, 145, 201, 4, 65, 0, 6, 195, 48, 244, 143, 76, 7, 195, 48, 244, 143,
+			76, 46, 10, 199, 12, 19, 80, 4, 115, 143, 48, 67, 0, 12, 66, 53, 32, 65, 126, 89, 47, 36, 34, 0, 24, 6, 195, 13, 35, 214,
+			15, 18, 70, 12, 147, 65, 9, 81, 64, 76, 37, 65, 35, 71, 6, 40, 12, 36, 0, 0, 6, 195, 52, 145, 64, 76, 15, 3, 95, 52,
+			88, 49, 122, 35, 51, 6, 35, 68, 47, 35, 0, 6, 195, 16, 245, 5, 15, 6, 195, 12, 245, 5, 15, 0, 9, 198, 76, 244, 208, 21,
+			69, 0, 15, 7, 196, 76, 16, 133, 36, 66, 0, 6, 195, 21, 3, 211, 15, 9, 198, 12, 81, 129, 48, 241, 128, 66, 0, 22, 72, 5,
+			85, 15, 88, 82, 67, 60, 192, 35, 40, 47, 39, 84, 36, 6, 37, 49, 39, 55, 0, 0, 6, 195, 64, 21, 133, 66, 6, 195, 60, 193,
+			192, 15, 6, 195, 56, 241, 64, 66, 6, 195, 56, 241, 64, 15, 6, 195, 8, 245, 133, 15, 0, 8, 197, 4, 112, 68, 21, 160, 67, 0,
+			9, 198, 61, 4, 15, 76, 84, 143, 66, 7, 196, 16, 148, 15, 48, 66, 12, 201, 16, 83, 65, 72, 85, 5, 36, 243, 128, 16, 0, 10,
+			199, 65, 35, 196, 84, 48, 78, 60, 66, 10, 199, 16, 85, 5, 77, 66, 78, 60, 66, 10, 199, 4, 48, 197, 81, 66, 78, 60, 66, 6,
+			194, 48, 80, 76, 46, 15, 4, 95, 115, 117, 98, 48, 6, 36, 72, 37, 76, 36, 15, 0, 0, 11, 200, 72, 20, 16, 61, 37, 9, 56,
+			240, 66, 11, 200, 36, 228, 212, 4, 195, 9, 56, 240, 66, 16, 3, 95, 53, 88, 76, 37, 50, 49, 122, 6, 35, 50, 47, 35, 0, 6,
+			195, 28, 243, 0, 15, 0, 20, 71, 4, 229, 9, 64, 21, 9, 20, 35, 50, 47, 37, 48, 35, 47, 6, 37, 36, 0, 9, 198, 81, 32,
+			78, 76, 149, 0, 65, 13, 202, 77, 3, 5, 56, 243, 69, 28, 19, 9, 4, 69, 10, 199, 64, 20, 135, 32, 83, 9, 4, 67, 10, 199,
+			61, 37, 15, 64, 81, 9, 4, 68, 9, 198, 60, 36, 207, 48, 85, 0, 15, 10, 199, 56, 21, 77, 4, 50, 9, 4, 68, 10, 199, 48,
+			243, 66, 5, 33, 9, 4, 67, 10, 199, 16, 148, 212, 72, 241, 137, 4, 67, 10, 199, 16, 145, 204, 61, 52, 201, 4, 67, 11, 200, 5,
+			32, 201, 88, 84, 195, 61, 96, 67, 10, 199, 4, 227, 210, 21, 52, 201, 4, 68, 10, 199, 4, 208, 140, 36, 244, 9, 4, 68, 0, 10,
+			198, 64, 84, 148, 4, 229, 15, 76, 28, 14, 4, 95, 114, 110, 103, 35, 50, 6, 36, 55, 55, 39, 0, 6, 195, 48, 85, 0, 15, 6,
+			195, 28, 245, 0, 15, 0, 10, 199, 81, 32, 68, 84, 48, 78, 60, 66, 10, 199, 12, 243, 80, 4, 144, 78, 60, 66, 10, 199, 4, 67,
+			208, 21, 34, 78, 60, 66, 10, 199, 76, 50, 83, 12, 144, 78, 60, 66, 20, 71, 5, 33, 79, 64, 192, 78, 60, 35, 51, 109, 39, 48,
+			55, 6, 35, 50, 39, 0, 9, 198, 52, 19, 148, 36, 51, 210, 66, 9, 198, 8, 240, 66, 16, 147, 0, 67, 8, 197, 4, 226, 67, 21,
+			64, 15, 0, 11, 200, 80, 83, 5, 24, 243, 129, 56, 240, 66, 6, 195, 76, 82, 64, 76, 6, 195, 52, 18, 64, 76, 7, 195, 88, 242,
+			64, 76, 46, 7, 195, 56, 242, 64, 76, 46, 6, 195, 64, 84, 9, 15, 9, 198, 21, 2, 71, 72, 17, 133, 66, 9, 198, 5, 4, 18,
+			60, 48, 201, 15, 0, 9, 198, 28, 147, 214, 4, 226, 76, 67, 16, 69, 92, 19, 26, 21, 32, 84, 6, 35, 55, 123, 109, 14, 16, 0,
+			8, 197, 88, 19, 26, 21, 32, 65, 10, 198, 80, 83, 5, 80, 86, 20, 67, 15, 9, 198, 48, 19, 80, 72, 81, 0, 15, 9, 197, 16,
+			243, 12, 5, 32, 65, 15, 13, 202, 12, 130, 85, 76, 21, 133, 12, 50, 9, 4, 15, 6, 195, 5, 163, 212, 15, 0, 7, 195, 64, 84,
+			143, 65, 15, 22, 72, 56, 81, 204, 36, 113, 78, 104, 16, 50, 36, 81, 55, 37, 75, 6, 36, 50, 123, 35, 0, 11, 200, 81, 33, 68,
+			36, 49, 83, 36, 208, 15, 10, 199, 80, 240, 207, 24, 84, 143, 48, 68, 8, 196, 72, 240, 143, 80, 66, 15, 0, 10, 199, 88, 19, 12,
+			20, 195, 206, 28, 15, 8, 197, 76, 245, 137, 21, 64, 66, 8, 197, 64, 192, 67, 37, 64, 65, 8, 197, 61, 37, 137, 21, 64, 15, 8,
+			197, 56, 20, 195, 37, 64, 65, 8, 197, 48, 20, 195, 37, 64, 65, 8, 197, 36, 228, 197, 81, 64, 15, 8, 197, 5, 52, 197, 81, 64,
+			15, 8, 197, 5, 52, 5, 81, 64, 15, 8, 197, 4, 97, 133, 81, 64, 15, 0, 15, 3, 95, 54, 88, 89, 36, 89, 89, 6, 35, 50,
+			47, 35, 0, 9, 198, 37, 3, 212, 4, 192, 77, 67, 7, 196, 24, 83, 20, 72, 16, 6, 195, 8, 243, 64, 15, 0, 8, 197, 4, 67,
+			208, 21, 32, 66, 16, 69, 92, 19, 20, 21, 32, 84, 6, 35, 55, 47, 36, 14, 16, 0, 14, 68, 4, 84, 133, 36, 35, 6, 109, 12,
+			51, 109, 37, 0, 9, 197, 80, 84, 212, 21, 32, 65, 47, 16, 69, 52, 18, 76, 21, 32, 65, 6, 109, 37, 55, 36, 14, 16, 0, 8,
+			197, 44, 147, 12, 21, 32, 65, 8, 197, 12, 19, 80, 21, 32, 65, 8, 197, 8, 242, 76, 21, 32, 65, 7, 196, 5, 100, 133, 36, 66,
+			7, 196, 76, 20, 133, 36, 78, 9, 197, 80, 83, 80, 21, 32, 65, 15, 8, 197, 53, 84, 212, 21, 32, 66, 9, 197, 52, 85, 5, 61,
+			32, 66, 16, 8, 197, 52, 16, 193, 9, 32, 65, 8, 197, 20, 193, 84, 81, 32, 15, 8, 197, 20, 193, 84, 81, 32, 15, 0, 7, 196,
+			80, 81, 207, 48, 65, 0, 6, 195, 64, 86, 154, 15, 7, 196, 8, 244, 146, 60, 16, 0, 7, 196, 28, 147, 210, 56, 16, 6, 195, 4,
+			131, 192, 66, 0, 7, 196, 56, 241, 77, 36, 15, 0, 7, 196, 80, 148, 143, 48, 66, 11, 200, 52, 147, 12, 20, 99, 199, 48, 144, 15,
+			0, 10, 199, 80, 84, 141, 36, 226, 78, 60, 65, 10, 199, 72, 145, 78, 81, 34, 78, 60, 66, 10, 199, 72, 144, 133, 48, 192, 78, 60,
+			66, 10, 199, 36, 229, 5, 57, 64, 78, 60, 66, 10, 199, 20, 194, 77, 36, 224, 78, 60, 66, 13, 68, 16, 144, 78, 60, 72, 6, 37,
+			35, 50, 39, 0, 10, 199, 52, 243, 143, 64, 192, 78, 60, 67, 10, 199, 52, 19, 148, 61, 96, 78, 60, 67, 6, 194, 36, 192, 76, 46,
+			9, 198, 12, 16, 193, 76, 83, 142, 16, 0, 11, 200, 52, 147, 149, 12, 50, 65, 56, 240, 67, 11, 200, 12, 20, 15, 72, 50, 65, 56,
+			240, 67, 0, 14, 68, 76, 144, 84, 20, 89, 37, 6, 35, 47, 36, 0, 76, 8, 196, 72, 243, 12, 20, 66, 15, 12, 201, 20, 210, 67,
+			72, 148, 20, 60, 98, 84, 68, 9, 198, 20, 193, 84, 81, 35, 196, 15, 8, 196, 20, 48, 84, 20, 65, 15, 0, 15, 69, 29, 82, 78,
+			20, 16, 81, 58, 37, 50, 6, 36, 35, 0, 8, 197, 8, 80, 197, 72, 16, 65, 8, 197, 5, 97, 83, 80, 80, 76, 8, 197, 5, 97,
+			83, 80, 80, 78, 8, 197, 69, 81, 83, 80, 80, 76, 8, 197, 104, 145, 207, 80, 80, 15, 8, 197, 85, 67, 208, 36, 16, 67, 8, 197,
+			84, 33, 82, 80, 16, 67, 8, 197, 52, 81, 15, 48, 80, 65, 10, 199, 36, 224, 207, 57, 53, 69, 80, 15, 8, 197, 16, 147, 195, 48,
+			80, 65, 8, 197, 12, 195, 196, 36, 16, 15, 11, 200, 12, 20, 18, 36, 99, 199, 48, 144, 15, 0, 10, 199, 72, 148, 201, 20, 64, 78,
+			60, 66, 10, 199, 36, 229, 133, 57, 64, 78, 60, 66, 10, 199, 12, 148, 131, 60, 192, 78, 60, 65, 10, 199, 5, 69, 5, 77, 64, 78,
+			60, 66, 7, 196, 65, 34, 69, 28, 15, 0, 11, 200, 4, 195, 15, 28, 114, 65, 56, 240, 66, 11, 200, 52, 21, 18, 36, 50, 65, 56,
+			240, 67, 8, 197, 88, 84, 195, 36, 48, 66, 9, 198, 76, 19, 21, 16, 80, 201, 15, 8, 197, 64, 243, 12, 36, 48, 15, 6, 195, 60,
+			145, 9, 66, 8, 197, 52, 243, 12, 36, 48, 66, 8, 197, 36, 225, 207, 72, 112, 16, 8, 197, 21, 2, 76, 60, 112, 66, 0, 7, 196,
+			56, 83, 12, 20, 76, 7, 196, 16, 83, 12, 20, 76, 9, 198, 76, 19, 134, 72, 243, 148, 66, 0, 11, 200, 16, 148, 212, 36, 229, 5,
+			76, 144, 66, 8, 197, 5, 81, 213, 72, 16, 65, 8, 197, 84, 197, 9, 52, 80, 65, 8, 197, 24, 16, 197, 88, 16, 78, 8, 197, 88,
+			240, 130, 36, 16, 15, 8, 197, 88, 148, 137, 48, 80, 66, 8, 197, 72, 240, 130, 36, 16, 15, 8, 197, 72, 22, 154, 36, 16, 66, 8,
+			197, 72, 16, 193, 48, 80, 65, 8, 197, 64, 84, 195, 32, 80, 15, 8, 197, 64, 22, 154, 36, 16, 66, 8, 197, 52, 147, 9, 80, 80,
+			65, 9, 197, 48, 16, 195, 32, 80, 66, 15, 11, 200, 24, 149, 15, 12, 83, 143, 76, 144, 16, 8, 197, 21, 66, 79, 64, 80, 66, 8,
+			197, 21, 35, 69, 80, 80, 15, 6, 195, 21, 21, 79, 15, 8, 197, 17, 34, 79, 64, 80, 65, 9, 197, 16, 80, 193, 16, 80, 65, 15,
+			8, 197, 8, 148, 5, 16, 80, 65, 11, 200, 8, 147, 211, 36, 229, 5, 76, 144, 67, 8, 197, 5, 34, 69, 80, 80, 15, 8, 197, 5,
+			3, 210, 36, 16, 67, 0, 12, 201, 72, 244, 208, 36, 115, 9, 61, 50, 64, 16, 8, 196, 20, 51, 15, 28, 65, 15, 12, 201, 16, 144,
+			201, 5, 52, 197, 81, 65, 64, 15, 12, 201, 5, 32, 201, 16, 147, 195, 21, 50, 64, 68, 0, 14, 3, 95, 56, 88, 39, 47, 12, 6,
+			35, 50, 47, 35, 0, 6, 195, 104, 241, 64, 15, 8, 197, 84, 226, 86, 60, 48, 66, 13, 201, 81, 33, 66, 5, 49, 76, 20, 114, 5,
+			67, 16, 0, 10, 199, 77, 66, 76, 60, 32, 84, 20, 66, 10, 199, 60, 211, 218, 36, 115, 212, 20, 15, 7, 196, 36, 209, 78, 36, 15,
+			10, 199, 16, 148, 207, 56, 84, 212, 4, 68, 9, 198, 12, 244, 208, 21, 69, 0, 15, 7, 196, 5, 32, 66, 36, 65, 0, 8, 197, 77,
+			3, 5, 56, 144, 15, 8, 197, 64, 84, 135, 4, 208, 65, 6, 195, 13, 35, 211, 15, 6, 195, 8, 244, 147, 16, 0, 9, 198, 72, 149,
+			133, 73, 50, 64, 66, 9, 198, 81, 33, 86, 37, 48, 78, 67, 9, 198, 81, 32, 86, 21, 50, 64, 15, 9, 198, 21, 129, 82, 21, 50,
+			64, 66, 0, 8, 197, 5, 4, 129, 56, 240, 65, 8, 197, 4, 198, 137, 56, 240, 65, 9, 198, 76, 147, 148, 60, 226, 65, 67, 9, 198,
+			76, 19, 13, 60, 66, 65, 67, 7, 196, 72, 144, 201, 56, 65, 7, 196, 52, 242, 197, 56, 15, 0, 6, 195, 69, 81, 76, 76, 7, 196,
+			4, 48, 82, 36, 65, 0, 8, 197, 88, 149, 129, 12, 144, 66, 9, 197, 88, 144, 193, 72, 144, 66, 46, 8, 197, 80, 19, 73, 28, 144,
+			66, 9, 197, 64, 80, 193, 72, 144, 65, 15, 8, 197, 48, 16, 207, 56, 144, 65, 8, 197, 37, 69, 9, 72, 144, 65, 8, 197, 5, 48,
+			193, 72, 144, 65, 0, 10, 199, 77, 84, 195, 37, 64, 78, 60, 65, 10, 199, 65, 35, 208, 36, 226, 78, 60, 66, 9, 198, 49, 80, 213,
+			9, 34, 64, 65, 7, 194, 32, 240, 15, 76, 32, 5, 194, 52, 80, 76, 9, 198, 104, 147, 135, 5, 34, 64, 65, 9, 198, 80, 147, 132,
+			5, 34, 64, 65, 9, 198, 80, 20, 148, 5, 34, 64, 65, 11, 200, 65, 33, 83, 85, 4, 15, 77, 64, 16, 9, 198, 65, 33, 83, 21,
+			2, 64, 15, 11, 200, 64, 84, 141, 4, 100, 143, 77, 64, 65, 9, 198, 16, 148, 208, 5, 34, 64, 65, 9, 198, 5, 52, 197, 57, 162,
+			64, 15, 0, 11, 200, 4, 194, 77, 20, 229, 9, 56, 240, 67, 21, 72, 21, 85, 9, 12, 130, 65, 56, 240, 36, 58, 72, 37, 49, 37,
+			6, 35, 50, 39, 0, 14, 3, 95, 57, 88, 50, 39, 84, 6, 35, 50, 47, 35, 0, 9, 198, 36, 208, 146, 60, 115, 9, 15, 0, 29,
+			75, 88, 148, 213, 4, 194, 90, 104, 22, 137, 60, 224, 84, 37, 88, 111, 35, 55, 37, 128, 12, 35, 123, 37, 6, 110, 50, 0, 10, 199,
+			61, 53, 18, 60, 115, 212, 36, 15, 9, 198, 13, 35, 206, 61, 67, 208, 66, 9, 198, 5, 96, 77, 64, 244, 212, 16, 9, 198, 4, 194,
+			81, 84, 245, 0, 66, 0, 10, 198, 76, 179, 208, 20, 195, 211, 65, 16, 14, 203, 64, 144, 83, 81, 34, 78, 61, 1, 78, 36, 16, 69,
+			9, 198, 53, 85, 1, 28, 83, 128, 66, 9, 198, 16, 148, 25, 48, 243, 128, 65, 0, 10, 199, 16, 148, 195, 85, 64, 78, 60, 66, 10,
+			199, 12, 243, 147, 60, 192, 78, 60, 66, 10, 199, 4, 67, 208, 21, 32, 78, 60, 66, 9, 198, 80, 245, 15, 28, 243, 0, 67, 8, 197,
+			76, 81, 213, 37, 64, 65, 8, 197, 72, 145, 15, 81, 64, 16, 9, 197, 16, 84, 208, 61, 64, 65, 15, 9, 198, 12, 19, 12, 36, 49,
+			66, 15, 0, 11, 200, 16, 84, 15, 76, 149, 9, 56, 240, 66, 7, 196, 52, 83, 66, 72, 15, 0, 8, 197, 53, 83, 214, 21, 32, 66,
+			16, 69, 88, 18, 78, 21, 32, 84, 6, 117, 50, 36, 14, 16, 0, 46, 9, 197, 80, 83, 133, 9, 32, 65, 15, 8, 197, 72, 148, 18,
+			61, 96, 15, 9, 198, 37, 4, 15, 48, 149, 0, 66, 8, 197, 28, 19, 66, 21, 32, 65, 8, 197, 25, 83, 133, 9, 32, 65, 6, 195,
+			21, 51, 208, 15, 9, 198, 12, 244, 9, 48, 245, 0, 15, 8, 197, 12, 21, 20, 5, 32, 65, 10, 199, 12, 21, 5, 12, 129, 83, 36,
+			15, 9, 198, 5, 50, 78, 80, 245, 0, 66, 10, 199, 4, 229, 9, 13, 33, 83, 36, 15, 9, 198, 4, 208, 82, 12, 244, 132, 67, 0,
+			22, 72, 88, 148, 213, 4, 194, 90, 104, 16, 84, 37, 88, 111, 35, 55, 6, 37, 128, 12, 35, 0, 12, 201, 12, 20, 193, 52, 20, 131,
+			36, 19, 143, 68, 11, 200, 81, 84, 144, 36, 195, 209, 84, 144, 15, 0, 12, 201, 16, 148, 212, 36, 225, 213, 21, 33, 64, 66, 15, 3,
+			95, 63, 65, 55, 36, 47, 12, 6, 36, 12, 51, 35, 0, 9, 198, 85, 50, 71, 56, 243, 0, 67, 9, 198, 72, 243, 66, 60, 81, 18,
+			15, 12, 201, 64, 243, 148, 5, 52, 201, 21, 97, 64, 15, 8, 197, 64, 84, 141, 85, 64, 65, 8, 197, 36, 225, 133, 81, 64, 15, 12,
+			201, 24, 245, 15, 76, 147, 148, 21, 50, 64, 67, 8, 197, 20, 97, 133, 81, 64, 15, 8, 197, 16, 84, 213, 21, 64, 15, 10, 198, 12,
+			241, 199, 36, 243, 0, 65, 15, 9, 198, 12, 20, 137, 56, 243, 0, 66, 0, 17, 206, 12, 243, 148, 72, 17, 4, 37, 53, 9, 56, 117,
+			65, 56, 240, 68, 8, 196, 36, 229, 5, 72, 65, 46, 7, 196, 80, 83, 80, 72, 15, 7, 196, 76, 16, 137, 72, 66, 7, 196, 56, 245,
+			133, 72, 65, 7, 196, 16, 145, 68, 72, 15, 7, 196, 4, 229, 5, 72, 65, 0, 8, 197, 52, 85, 20, 21, 32, 65, 16, 69, 77, 2,
+			68, 21, 32, 89, 48, 6, 117, 72, 36, 14, 16, 0, 9, 197, 76, 149, 20, 21, 32, 65, 47, 9, 197, 76, 148, 212, 21, 32, 65, 47,
+			9, 197, 76, 85, 20, 21, 32, 65, 47, 8, 197, 72, 18, 68, 21, 32, 65, 9, 197, 64, 244, 212, 21, 32, 65, 47, 9, 197, 52, 148,
+			212, 21, 32, 65, 47, 9, 197, 24, 243, 4, 21, 32, 65, 47, 8, 197, 8, 149, 20, 21, 32, 65, 9, 198, 81, 32, 78, 76, 85, 20,
+			15, 8, 197, 77, 81, 200, 21, 32, 65, 8, 197, 64, 243, 4, 21, 32, 15, 8, 197, 56, 148, 16, 85, 32, 66, 8, 197, 48, 85, 20,
+			21, 32, 15, 8, 197, 37, 51, 194, 5, 32, 66, 8, 197, 28, 19, 66, 5, 32, 65, 8, 197, 12, 243, 12, 21, 32, 15, 0, 11, 200,
+			64, 21, 15, 28, 83, 133, 76, 144, 67, 11, 200, 53, 85, 1, 28, 83, 133, 76, 144, 67, 12, 200, 48, 84, 9, 48, 83, 85, 72, 80,
+			67, 15, 10, 199, 36, 229, 18, 60, 67, 212, 80, 16, 0, 9, 198, 12, 244, 5, 73, 66, 78, 67, 6, 195, 52, 246, 154, 16, 9, 198,
+			12, 20, 148, 61, 50, 64, 15, 0, 6, 195, 80, 16, 149, 66, 9, 198, 12, 244, 132, 60, 115, 9, 15, 8, 197, 12, 194, 80, 20, 240,
+			65, 10, 199, 8, 20, 137, 12, 83, 148, 72, 15, 0, 9, 198, 77, 1, 71, 56, 84, 140, 65, 14, 4, 95, 115, 117, 112, 6, 35, 48,
+			37, 76, 36, 15, 0, 9, 197, 48, 85, 129, 57, 160, 65, 15, 8, 197, 8, 84, 207, 105, 160, 16, 0, 13, 4, 95, 115, 116, 107, 71,
+			6, 35, 51, 16, 35, 0, 8, 197, 76, 49, 80, 76, 144, 15, 8, 197, 52, 147, 69, 76, 144, 15, 11, 200, 36, 209, 78, 61, 69, 5,
+			72, 144, 15, 11, 200, 21, 65, 82, 61, 69, 5, 72, 144, 15, 11, 200, 12, 243, 5, 61, 69, 5, 72, 144, 15, 7, 196, 9, 35, 204,
+			48, 16, 0, 9, 198, 16, 148, 5, 56, 65, 82, 66, 9, 198, 12, 243, 147, 36, 65, 82, 66, 9, 198, 40, 83, 142, 36, 97, 82, 65,
+			9, 198, 28, 19, 135, 77, 65, 82, 65, 9, 198, 21, 132, 12, 61, 33, 82, 66, 10, 198, 81, 33, 86, 21, 34, 64, 65, 15, 9, 198,
+			72, 149, 133, 72, 33, 82, 66, 9, 198, 36, 228, 213, 9, 34, 64, 65, 9, 198, 36, 228, 197, 81, 66, 64, 15, 0, 9, 198, 12, 20,
+			9, 80, 243, 9, 66, 6, 194, 36, 224, 76, 46, 5, 194, 60, 32, 15, 6, 195, 24, 244, 146, 16, 0, 10, 199, 12, 243, 134, 36, 64,
+			84, 36, 66, 9, 67, 92, 80, 128, 58, 109, 71, 0, 6, 195, 72, 240, 128, 15, 6, 195, 8, 240, 128, 15, 0, 10, 199, 36, 65, 78,
+			80, 146, 201, 80, 68, 0, 8, 197, 64, 20, 146, 60, 48, 65, 8, 197, 48, 244, 147, 36, 48, 16, 8, 197, 48, 84, 211, 36, 48, 15,
+			8, 197, 12, 20, 212, 36, 112, 66, 0, 13, 68, 20, 193, 78, 4, 6, 109, 55, 109, 50, 35, 0, 7, 196, 24, 244, 212, 20, 77, 7,
+			196, 52, 83, 148, 20, 16, 7, 196, 25, 35, 196, 20, 15, 0, 14, 69, 76, 244, 8, 36, 16, 89, 110, 83, 6, 37, 35, 0, 8, 197,
+			52, 241, 5, 56, 16, 65, 8, 197, 4, 209, 76, 36, 16, 66, 10, 69, 28, 243, 199, 48, 80, 21, 0, 47, 8, 197, 88, 244, 212, 72,
+			80, 76, 8, 197, 56, 244, 212, 72, 80, 76, 6, 195, 77, 80, 64, 76, 12, 201, 88, 147, 12, 5, 50, 77, 37, 84, 192, 69, 8, 197,
+			76, 147, 132, 36, 16, 66, 6, 195, 76, 80, 128, 15, 9, 197, 76, 51, 210, 104, 80, 66, 15, 8, 197, 76, 19, 132, 36, 16, 66, 17,
+			206, 72, 243, 66, 36, 51, 211, 36, 67, 196, 20, 48, 69, 17, 32, 15, 8, 197, 60, 209, 76, 36, 16, 67, 7, 196, 36, 224, 213, 8,
+			65, 8, 197, 24, 83, 20, 72, 80, 16, 8, 197, 12, 244, 142, 20, 16, 65, 6, 195, 12, 80, 128, 15, 8, 197, 4, 65, 15, 52, 80,
+			15, 0, 8, 196, 52, 17, 207, 28, 66, 15, 0, 7, 196, 84, 35, 204, 16, 15, 6, 195, 64, 241, 9, 15, 6, 195, 61, 35, 0, 16,
+			12, 200, 29, 32, 78, 60, 195, 5, 73, 48, 67, 16, 0, 7, 196, 76, 83, 154, 4, 77, 7, 196, 88, 84, 132, 20, 16, 10, 199, 64,
+			84, 137, 77, 64, 83, 36, 66, 10, 199, 52, 85, 1, 77, 64, 83, 36, 66, 9, 198, 12, 20, 146, 60, 64, 78, 66, 0, 8, 197, 64,
+			21, 18, 36, 16, 65, 16, 69, 85, 1, 1, 80, 80, 35, 48, 15, 72, 6, 36, 37, 47, 0, 8, 197, 81, 34, 65, 16, 80, 65, 8,
+			197, 64, 83, 15, 64, 80, 65, 8, 197, 61, 99, 214, 36, 16, 67, 8, 197, 37, 35, 206, 36, 16, 67, 8, 197, 36, 194, 65, 16, 80,
+			66, 8, 197, 28, 149, 82, 36, 16, 66, 7, 196, 28, 83, 73, 56, 65, 8, 197, 24, 81, 5, 48, 80, 16, 8, 197, 20, 113, 82, 36,
+			16, 66, 8, 197, 17, 34, 65, 16, 80, 65, 8, 197, 12, 129, 79, 64, 80, 65, 8, 197, 8, 17, 9, 48, 80, 66, 0, 0, 8, 197,
+			53, 85, 1, 56, 240, 65, 9, 197, 5, 97, 77, 52, 240, 78, 32, 7, 196, 80, 83, 80, 48, 15, 0, 10, 199, 72, 144, 66, 36, 194,
+			84, 4, 67, 10, 199, 80, 19, 12, 60, 98, 84, 20, 66, 10, 199, 76, 21, 5, 48, 194, 84, 20, 66, 7, 196, 72, 243, 154, 36, 66,
+			7, 196, 72, 240, 130, 36, 15, 7, 196, 72, 16, 130, 36, 66, 10, 199, 12, 243, 80, 61, 50, 84, 20, 66, 7, 196, 8, 240, 130, 36,
+			15, 0, 8, 197, 24, 16, 197, 88, 144, 78, 6, 195, 77, 81, 64, 76, 8, 197, 80, 21, 1, 72, 144, 65, 11, 200, 77, 84, 5, 73,
+			53, 9, 80, 80, 66, 8, 197, 36, 225, 133, 72, 144, 65, 11, 200, 25, 32, 84, 21, 35, 137, 80, 16, 68, 11, 200, 20, 211, 196, 36,
+			19, 9, 76, 144, 67, 8, 197, 4, 210, 68, 20, 144, 67, 0, 11, 70, 24, 19, 148, 5, 54, 64, 21, 0, 47, 13, 201, 52, 144, 210,
+			61, 52, 15, 73, 83, 64, 66, 15, 9, 198, 28, 197, 67, 61, 50, 64, 15, 9, 198, 16, 147, 195, 21, 50, 64, 66, 9, 198, 13, 33,
+			77, 37, 50, 64, 65, 0, 8, 197, 44, 147, 79, 56, 240, 66, 7, 195, 56, 83, 0, 76, 46, 9, 198, 72, 20, 19, 60, 66, 65, 67,
+			9, 198, 65, 35, 198, 21, 162, 65, 67, 6, 195, 56, 83, 0, 16, 9, 198, 52, 241, 5, 77, 66, 65, 66, 9, 198, 24, 84, 137, 80,
+			242, 65, 16, 9, 198, 20, 229, 1, 49, 2, 65, 67, 9, 198, 13, 35, 195, 21, 98, 65, 67, 12, 201, 12, 147, 145, 84, 19, 148, 21,
+			50, 77, 15, 9, 198, 12, 20, 208, 21, 34, 65, 66, 9, 198, 4, 195, 5, 29, 34, 65, 67, 0, 6, 194, 56, 80, 76, 46, 6, 194,
+			48, 144, 76, 46, 6, 194, 36, 240, 76, 46, 7, 196, 16, 17, 142, 36, 66, 0, 7, 196, 64, 242, 197, 72, 65, 8, 197, 76, 147, 21,
+			72, 144, 65, 8, 197, 72, 245, 1, 72, 144, 65, 7, 196, 65, 34, 79, 72, 16, 7, 196, 64, 193, 85, 72, 65, 7, 196, 52, 84, 197,
+			72, 65, 8, 197, 36, 228, 207, 52, 208, 16, 8, 197, 28, 84, 146, 20, 144, 66, 8, 197, 12, 21, 1, 72, 144, 65, 0, 9, 198, 53,
+			83, 214, 37, 66, 64, 66, 9, 198, 88, 147, 129, 88, 147, 0, 67, 9, 198, 77, 68, 143, 57, 162, 64, 15, 9, 198, 25, 84, 142, 5,
+			34, 64, 65, 9, 198, 8, 148, 212, 85, 34, 64, 65, 9, 198, 5, 48, 204, 21, 2, 64, 15, 0, 18, 70, 76, 147, 80, 5, 66, 69,
+			89, 37, 65, 48, 35, 47, 6, 37, 36, 0, 19, 70, 24, 84, 146, 61, 98, 69, 83, 109, 51, 16, 39, 84, 6, 37, 2, 109, 0, 10,
+			67, 69, 81, 73, 49, 122, 36, 57, 0, 9, 198, 65, 35, 199, 20, 226, 69, 15, 0, 9, 198, 36, 228, 207, 48, 149, 0, 66, 9, 198,
+			36, 51, 211, 4, 81, 18, 15, 10, 198, 12, 19, 21, 52, 85, 0, 67, 16, 0, 8, 196, 72, 17, 1, 72, 65, 47, 7, 196, 61, 33,
+			5, 72, 65, 6, 195, 77, 82, 64, 76, 10, 67, 13, 82, 64, 49, 6, 40, 57, 0, 7, 196, 80, 21, 1, 72, 65, 10, 199, 80, 20,
+			211, 4, 209, 84, 72, 66, 7, 196, 80, 20, 9, 72, 65, 8, 196, 64, 80, 207, 72, 65, 15, 7, 196, 64, 21, 5, 72, 65, 10, 199,
+			61, 37, 15, 12, 83, 148, 72, 15, 10, 199, 52, 85, 1, 12, 83, 148, 72, 15, 7, 196, 36, 229, 133, 72, 16, 7, 196, 36, 225, 133,
+			72, 65, 7, 196, 12, 144, 197, 72, 65, 7, 196, 5, 52, 207, 72, 65, 7, 196, 5, 33, 1, 72, 65, 0, 8, 196, 76, 85, 133, 76,
+			65, 15, 6, 195, 52, 83, 148, 16, 6, 195, 52, 83, 148, 16, 6, 195, 12, 84, 16, 16, 9, 198, 8, 84, 148, 36, 243, 0, 66, 9,
+			198, 4, 84, 143, 76, 243, 0, 67, 0, 7, 196, 36, 225, 84, 80, 15, 0, 10, 199, 65, 33, 86, 20, 65, 82, 20, 67, 19, 71, 36,
+			225, 197, 28, 225, 82, 20, 37, 50, 75, 36, 67, 6, 109, 51, 36, 0, 11, 199, 5, 67, 79, 76, 97, 82, 20, 67, 15, 22, 4, 95,
+			99, 105, 114, 76, 37, 38, 14, 16, 49, 39, 50, 83, 55, 6, 36, 89, 89, 39, 0, 10, 199, 76, 85, 20, 20, 208, 146, 20, 15, 9,
+			198, 65, 33, 83, 80, 149, 0, 65, 10, 199, 64, 84, 137, 25, 32, 83, 36, 66, 10, 199, 64, 20, 129, 25, 32, 83, 36, 66, 11, 199,
+			8, 83, 22, 20, 65, 82, 20, 67, 16, 0, 10, 199, 80, 85, 18, 4, 209, 84, 72, 66, 7, 196, 64, 17, 201, 56, 65, 8, 196, 12,
+			21, 5, 56, 66, 16, 6, 195, 8, 243, 128, 15, 0, 12, 201, 5, 4, 1, 73, 65, 78, 21, 33, 64, 68, 15, 4, 95, 48, 77, 52,
+			71, 37, 55, 37, 6, 39, 50, 37, 0, 9, 198, 76, 83, 73, 72, 85, 20, 15, 9, 198, 76, 51, 210, 72, 85, 20, 15, 12, 201, 64,
+			244, 148, 61, 97, 78, 21, 33, 64, 15, 11, 200, 64, 243, 1, 72, 147, 69, 81, 32, 67, 9, 198, 64, 20, 129, 64, 85, 20, 15, 11,
+			200, 21, 52, 15, 76, 147, 69, 81, 32, 67, 11, 200, 12, 19, 15, 72, 147, 69, 81, 32, 67, 0, 8, 197, 16, 19, 137, 48, 240, 66,
+			9, 198, 81, 34, 67, 21, 50, 77, 15, 7, 196, 77, 65, 76, 48, 16, 9, 198, 64, 243, 9, 13, 35, 205, 66, 12, 201, 21, 51, 211,
+			12, 129, 76, 21, 68, 128, 67, 9, 198, 4, 208, 90, 104, 243, 133, 66, 10, 199, 4, 52, 85, 20, 67, 212, 80, 16, 0, 19, 70, 4,
+			198, 133, 36, 209, 82, 35, 55, 123, 6, 35, 37, 65, 36, 14, 16, 0, 9, 198, 81, 84, 142, 61, 97, 82, 66, 10, 198, 72, 84, 15,
+			73, 65, 82, 66, 47, 9, 198, 65, 83, 12, 61, 97, 82, 66, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6, 39, 50, 37, 0, 12,
+			201, 88, 83, 148, 72, 147, 15, 69, 83, 192, 66, 0, 11, 200, 16, 83, 9, 57, 21, 69, 72, 80, 66, 8, 197, 64, 20, 137, 28, 144,
+			66, 6, 195, 56, 243, 128, 76, 8, 197, 28, 83, 133, 76, 144, 65, 16, 4, 95, 48, 77, 51, 65, 37, 55, 37, 6, 35, 51, 72, 37,
+			0, 8, 197, 76, 147, 148, 60, 208, 65, 6, 195, 76, 83, 128, 16, 8, 197, 72, 144, 143, 76, 144, 15, 8, 197, 64, 243, 80, 20, 144,
+			66, 8, 197, 60, 211, 137, 84, 208, 15, 6, 195, 56, 243, 128, 15, 8, 197, 52, 20, 133, 52, 208, 16, 11, 200, 52, 19, 9, 56, 53,
+			79, 72, 80, 15, 8, 197, 48, 148, 1, 72, 144, 65, 6, 195, 24, 243, 128, 15, 8, 197, 12, 243, 147, 12, 144, 15, 8, 197, 12, 147,
+			137, 76, 144, 65, 6, 195, 12, 83, 128, 16, 8, 197, 9, 83, 20, 20, 144, 66, 11, 200, 8, 21, 20, 36, 53, 79, 72, 80, 15, 8,
+			197, 5, 84, 207, 56, 144, 15, 0, 12, 201, 88, 145, 5, 60, 48, 77, 21, 32, 64, 68, 9, 198, 104, 19, 66, 21, 50, 64, 15, 9,
+			198, 76, 147, 80, 61, 50, 64, 15, 9, 198, 61, 37, 5, 57, 50, 64, 15, 9, 198, 52, 19, 142, 61, 50, 64, 15, 9, 198, 16, 145,
+			82, 21, 50, 64, 65, 9, 198, 12, 243, 131, 21, 50, 64, 15, 0, 8, 197, 61, 53, 1, 56, 240, 66, 11, 67, 52, 83, 149, 65, 109,
+			50, 6, 40, 0, 12, 4, 95, 48, 77, 49, 65, 6, 37, 55, 35, 0, 0, 6, 195, 104, 80, 146, 15, 7, 196, 65, 35, 218, 36, 66,
+			5, 194, 60, 64, 15, 10, 199, 12, 20, 142, 37, 99, 210, 36, 66, 7, 196, 5, 52, 18, 36, 66, 0, 8, 197, 36, 212, 1, 72, 144,
+			65, 11, 200, 9, 83, 206, 5, 36, 143, 80, 144, 15, 8, 197, 8, 21, 78, 20, 144, 67, 0, 24, 70, 76, 81, 213, 37, 66, 64, 89,
+			36, 81, 58, 6, 37, 47, 37, 15, 72, 35, 0, 81, 100, 97, 32, 13, 202, 52, 243, 148, 20, 114, 79, 72, 64, 78, 60, 68, 9, 198,
+			81, 33, 86, 37, 34, 64, 65, 9, 198, 80, 84, 129, 64, 85, 84, 67, 9, 198, 64, 244, 212, 21, 34, 64, 65, 9, 198, 64, 18, 12,
+			5, 98, 64, 65, 9, 198, 52, 86, 133, 57, 162, 64, 15, 0, 9, 198, 88, 244, 129, 28, 147, 137, 66, 9, 198, 25, 83, 7, 20, 230,
+			137, 15, 0, 10, 199, 76, 21, 5, 48, 194, 84, 36, 66, 6, 195, 61, 97, 82, 65, 7, 196, 76, 19, 79, 4, 15, 7, 196, 28, 227,
+			205, 20, 15, 13, 68, 9, 81, 201, 20, 71, 40, 75, 7, 37, 36, 0, 0, 6, 195, 52, 20, 143, 66, 6, 195, 52, 20, 143, 15, 6,
+			195, 24, 244, 128, 16, 6, 195, 12, 84, 128, 16, 6, 195, 12, 84, 128, 16, 0, 0, 12, 71, 52, 16, 201, 57, 67, 211, 32, 21, 0,
+			47, 9, 198, 24, 16, 197, 88, 21, 5, 67, 9, 198, 37, 51, 195, 72, 21, 5, 66, 8, 197, 36, 229, 18, 36, 112, 66, 0, 5, 194,
+			61, 64, 15, 10, 199, 61, 2, 83, 80, 241, 15, 52, 67, 12, 200, 52, 243, 148, 20, 209, 83, 60, 192, 67, 15, 10, 199, 52, 144, 210,
+			60, 51, 211, 52, 15, 9, 198, 48, 83, 208, 60, 193, 0, 15, 9, 198, 37, 51, 204, 4, 35, 206, 15, 0, 18, 4, 95, 108, 105, 103,
+			55, 4, 36, 81, 35, 47, 6, 40, 12, 51, 35, 0, 8, 197, 64, 147, 1, 16, 80, 65, 8, 197, 25, 80, 201, 48, 80, 66, 6, 195,
+			8, 245, 128, 15, 6, 195, 8, 245, 128, 15, 9, 198, 4, 113, 83, 36, 192, 79, 68, 0, 13, 70, 8, 244, 132, 20, 21, 88, 21, 102,
+			114, 0, 47, 0, 9, 198, 29, 32, 84, 84, 149, 1, 66, 8, 196, 12, 81, 129, 48, 65, 15, 0, 7, 196, 61, 69, 9, 52, 65, 8,
+			197, 80, 145, 80, 60, 192, 15, 9, 198, 80, 84, 146, 4, 227, 214, 15, 7, 196, 76, 50, 5, 52, 15, 7, 196, 65, 34, 65, 52, 65,
+			8, 197, 64, 147, 154, 60, 192, 66, 10, 199, 64, 20, 133, 56, 50, 9, 52, 15, 7, 196, 61, 69, 9, 52, 15, 9, 198, 24, 244, 211,
+			4, 227, 214, 15, 10, 199, 24, 83, 77, 36, 226, 76, 20, 67, 0, 16, 69, 64, 245, 18, 4, 144, 48, 39, 47, 14, 16, 6, 35, 57,
+			0, 8, 197, 76, 99, 199, 28, 144, 15, 8, 197, 76, 83, 5, 56, 144, 15, 6, 195, 56, 245, 128, 15, 8, 197, 52, 19, 132, 20, 144,
+			66, 8, 197, 16, 83, 5, 8, 144, 15, 8, 197, 12, 147, 133, 76, 144, 15, 11, 200, 5, 85, 5, 57, 66, 67, 32, 80, 15, 0, 10,
+			199, 52, 244, 141, 61, 32, 78, 60, 65, 10, 199, 16, 149, 133, 57, 66, 78, 60, 66, 10, 199, 16, 85, 5, 77, 64, 78, 60, 66, 10,
+			199, 12, 243, 80, 21, 64, 78, 60, 66, 10, 199, 5, 36, 133, 77, 66, 78, 60, 66, 0, 15, 69, 76, 50, 65, 56, 240, 91, 6, 37,
+			38, 35, 50, 39, 0, 9, 198, 85, 53, 1, 76, 50, 65, 65, 11, 200, 80, 84, 129, 64, 85, 84, 36, 48, 67, 10, 199, 76, 245, 20,
+			61, 3, 211, 80, 16, 7, 196, 73, 80, 133, 48, 66, 9, 198, 72, 245, 133, 76, 50, 65, 15, 11, 200, 12, 144, 204, 60, 52, 143, 77,
+			48, 67, 9, 198, 4, 229, 9, 88, 20, 137, 66, 13, 201, 4, 211, 137, 60, 49, 78, 80, 84, 201, 68, 15, 19, 70, 4, 195, 208, 20,
+			50, 65, 35, 55, 39, 48, 36, 76, 6, 37, 12, 35, 0, 9, 198, 4, 192, 200, 36, 210, 65, 66, 0, 6, 194, 52, 144, 76, 46, 9,
+			198, 88, 147, 12, 5, 51, 210, 67, 7, 196, 72, 244, 211, 36, 16, 9, 198, 65, 35, 201, 21, 69, 0, 15, 9, 198, 65, 35, 196, 61,
+			69, 0, 16, 10, 199, 52, 148, 129, 24, 147, 210, 36, 16, 8, 197, 52, 145, 15, 48, 192, 16, 9, 198, 13, 35, 205, 60, 99, 210, 66,
+			9, 198, 12, 20, 144, 60, 99, 210, 66, 0, 14, 68, 80, 147, 69, 72, 47, 6, 117, 65, 36, 14, 16, 0, 9, 198, 88, 145, 5, 61,
+			65, 67, 15, 7, 196, 80, 19, 65, 72, 65, 11, 200, 64, 20, 146, 60, 48, 200, 36, 16, 15, 11, 200, 60, 194, 71, 5, 32, 200, 36,
+			16, 68, 7, 196, 56, 85, 84, 72, 65, 9, 198, 52, 20, 211, 5, 35, 211, 15, 9, 198, 28, 148, 19, 61, 65, 67, 15, 6, 195, 28,
+			86, 128, 16, 9, 198, 20, 209, 82, 61, 65, 67, 15, 9, 198, 16, 148, 195, 61, 65, 67, 15, 7, 196, 16, 147, 69, 72, 65, 7, 196,
+			16, 19, 65, 72, 65, 0, 12, 201, 69, 80, 68, 72, 145, 143, 28, 194, 64, 15, 10, 199, 52, 245, 15, 13, 35, 211, 76, 67, 9, 198,
+			28, 192, 68, 36, 243, 0, 66, 6, 195, 12, 244, 20, 15, 10, 199, 9, 33, 78, 80, 243, 137, 12, 16, 0, 9, 197, 16, 19, 12, 5,
+			48, 65, 41, 9, 198, 12, 148, 131, 84, 149, 9, 66, 9, 198, 60, 224, 207, 28, 83, 137, 67, 9, 198, 52, 243, 143, 24, 244, 128, 66,
+			12, 201, 52, 144, 210, 60, 49, 70, 4, 194, 65, 69, 11, 200, 52, 81, 193, 21, 51, 198, 4, 112, 68, 9, 198, 48, 243, 137, 12, 84,
+			128, 66, 14, 203, 36, 195, 21, 52, 147, 143, 80, 80, 206, 36, 48, 15, 8, 197, 28, 243, 129, 73, 48, 66, 6, 195, 21, 21, 73, 15,
+			9, 198, 16, 144, 83, 64, 244, 128, 66, 12, 201, 12, 147, 145, 84, 81, 143, 28, 194, 69, 15, 0, 12, 201, 88, 149, 15, 72, 50, 9,
+			4, 227, 192, 68, 10, 199, 24, 83, 77, 36, 226, 76, 36, 67, 10, 199, 12, 21, 1, 48, 241, 200, 36, 66, 10, 199, 104, 20, 15, 80,
+			80, 200, 36, 15, 10, 199, 72, 19, 143, 12, 50, 9, 4, 15, 11, 199, 64, 243, 9, 56, 84, 201, 4, 67, 15, 10, 199, 52, 243, 129,
+			72, 50, 9, 4, 67, 10, 199, 52, 86, 154, 4, 68, 137, 4, 67, 10, 199, 4, 209, 84, 72, 244, 9, 4, 68, 0, 10, 199, 29, 32,
+			86, 36, 209, 84, 72, 66, 7, 196, 21, 53, 5, 72, 65, 7, 196, 21, 49, 68, 72, 15, 0, 21, 72, 56, 243, 73, 56, 21, 9, 60,
+			224, 50, 39, 65, 126, 50, 6, 36, 91, 39, 50, 0, 9, 198, 12, 244, 148, 37, 51, 204, 67, 6, 195, 12, 244, 148, 16, 9, 198, 9,
+			85, 1, 56, 243, 0, 67, 0, 9, 198, 16, 80, 193, 16, 84, 133, 67, 9, 198, 5, 101, 129, 48, 84, 133, 67, 9, 198, 4, 48, 193,
+			16, 84, 133, 67, 8, 196, 88, 83, 133, 80, 65, 15, 10, 199, 81, 84, 130, 60, 113, 84, 80, 15, 9, 198, 76, 19, 80, 21, 148, 133,
+			66, 7, 196, 65, 33, 84, 80, 15, 7, 196, 64, 20, 143, 64, 15, 0, 17, 71, 12, 128, 77, 64, 17, 206, 20, 91, 35, 65, 48, 6,
+			35, 67, 0, 10, 199, 80, 84, 212, 36, 211, 206, 20, 15, 9, 198, 80, 83, 195, 72, 149, 0, 66, 9, 198, 12, 19, 69, 72, 245, 0,
+			15, 9, 198, 4, 208, 68, 21, 84, 192, 16, 0, 11, 200, 13, 84, 146, 36, 53, 76, 84, 208, 66, 6, 195, 104, 243, 128, 15, 0, 0,
+			8, 197, 12, 243, 148, 72, 240, 65, 9, 197, 53, 81, 199, 36, 240, 66, 15, 8, 197, 28, 197, 84, 20, 240, 65, 0, 7, 196, 80, 245,
+			5, 52, 15, 6, 195, 24, 244, 142, 16, 7, 196, 4, 211, 210, 36, 16, 0, 10, 198, 64, 19, 13, 5, 33, 83, 67, 15, 11, 200, 36,
+			224, 213, 73, 50, 79, 56, 80, 15, 15, 69, 21, 53, 1, 76, 144, 6, 109, 89, 47, 35, 88, 37, 0, 0, 10, 199, 72, 145, 78, 81,
+			32, 78, 60, 66, 10, 199, 5, 4, 18, 61, 98, 78, 60, 66, 7, 196, 16, 19, 12, 60, 76, 9, 198, 76, 147, 134, 37, 50, 64, 65,
+			9, 198, 69, 80, 68, 73, 84, 12, 65, 9, 198, 65, 35, 212, 21, 50, 64, 65, 9, 198, 37, 3, 212, 21, 50, 64, 66, 9, 198, 16,
+			144, 84, 21, 50, 64, 66, 0, 8, 197, 61, 38, 129, 56, 240, 66, 6, 195, 5, 100, 155, 76, 9, 198, 81, 34, 83, 76, 147, 128, 65,
+			9, 198, 64, 148, 143, 88, 19, 128, 66, 9, 198, 64, 84, 147, 36, 19, 128, 67, 9, 198, 52, 81, 193, 24, 243, 128, 66, 8, 197, 48,
+			145, 206, 20, 240, 65, 9, 198, 4, 197, 1, 48, 83, 128, 16, 0, 14, 67, 85, 49, 82, 6, 57, 40, 89, 36, 14, 16, 0, 47, 9,
+			198, 20, 48, 197, 81, 67, 192, 8, 9, 198, 4, 48, 197, 81, 67, 192, 15, 0, 8, 197, 80, 83, 129, 12, 144, 66, 11, 200, 77, 84,
+			5, 73, 53, 9, 80, 144, 66, 6, 195, 84, 144, 192, 13, 8, 197, 72, 81, 9, 56, 144, 65, 6, 195, 28, 80, 192, 15, 8, 197, 4,
+			97, 143, 72, 144, 65, 8, 197, 4, 50, 5, 56, 144, 15, 0, 10, 199, 72, 148, 213, 49, 66, 78, 60, 66, 10, 199, 65, 33, 80, 5,
+			32, 78, 60, 66, 20, 71, 48, 145, 86, 37, 66, 78, 60, 55, 37, 6, 109, 84, 37, 47, 37, 50, 39, 0, 9, 198, 76, 20, 211, 5,
+			34, 64, 65, 10, 199, 4, 225, 15, 73, 32, 78, 60, 67, 10, 199, 52, 83, 15, 29, 32, 78, 60, 67, 9, 198, 76, 147, 133, 17, 34,
+			64, 15, 9, 198, 9, 83, 7, 5, 34, 64, 65, 0, 11, 200, 5, 4, 15, 28, 114, 65, 56, 240, 66, 7, 196, 4, 97, 137, 16, 66,
+			11, 200, 29, 32, 77, 76, 50, 65, 56, 240, 66, 11, 200, 24, 147, 1, 12, 50, 65, 56, 240, 67, 10, 199, 65, 33, 86, 20, 225, 9,
+			80, 66, 11, 200, 4, 208, 146, 61, 50, 65, 56, 240, 67, 7, 196, 60, 97, 137, 16, 15, 0, 13, 68, 61, 101, 137, 20, 6, 39, 84,
+			12, 37, 36, 0, 17, 70, 4, 48, 207, 84, 229, 0, 35, 49, 12, 6, 35, 122, 50, 47, 0, 6, 195, 85, 65, 82, 65, 10, 199, 56,
+			21, 70, 72, 17, 200, 36, 65, 6, 195, 52, 85, 18, 16, 7, 196, 24, 244, 131, 4, 16, 10, 199, 4, 116, 137, 24, 241, 204, 36, 15,
+			0, 10, 199, 72, 148, 18, 37, 53, 9, 56, 66, 10, 199, 52, 17, 206, 21, 68, 143, 56, 65, 0, 9, 198, 24, 20, 142, 21, 51, 204,
+			67, 0, 9, 198, 81, 33, 83, 21, 69, 5, 15, 7, 196, 4, 192, 133, 16, 15, 0, 13, 202, 12, 20, 212, 72, 245, 137, 48, 192, 82,
+			36, 67, 9, 198, 4, 225, 18, 60, 114, 78, 66, 0, 6, 195, 72, 241, 192, 15, 0, 9, 198, 9, 34, 65, 57, 163, 204, 67, 0, 14,
+			73, 5, 4, 12, 36, 48, 84, 36, 243, 128, 21, 0, 47, 9, 198, 5, 69, 9, 88, 149, 1, 68, 0, 7, 196, 16, 80, 201, 52, 65,
+			7, 196, 76, 240, 195, 36, 15, 10, 199, 52, 84, 197, 56, 50, 9, 52, 15, 0, 10, 199, 80, 149, 149, 12, 243, 15, 72, 67, 6, 195,
+			60, 209, 192, 13, 10, 198, 80, 84, 143, 48, 65, 71, 66, 15, 9, 198, 52, 145, 206, 4, 225, 71, 66, 9, 198, 52, 86, 154, 4, 225,
+			71, 66, 0, 10, 199, 16, 149, 133, 57, 64, 78, 60, 66, 10, 199, 5, 36, 133, 77, 64, 78, 60, 66, 10, 199, 25, 32, 83, 81, 83,
+			206, 60, 66, 14, 4, 95, 99, 101, 100, 76, 36, 72, 6, 37, 61, 35, 0, 0, 9, 198, 36, 195, 21, 52, 147, 128, 66, 9, 198, 20,
+			208, 82, 28, 147, 128, 66, 6, 195, 104, 243, 133, 16, 10, 198, 88, 145, 197, 88, 19, 128, 66, 15, 6, 195, 64, 83, 0, 16, 6, 195,
+			64, 83, 0, 16, 9, 198, 64, 81, 1, 88, 83, 128, 16, 10, 198, 61, 33, 193, 56, 243, 128, 65, 16, 9, 198, 52, 21, 1, 64, 19,
+			128, 67, 9, 198, 37, 51, 211, 64, 147, 128, 67, 11, 200, 28, 83, 195, 20, 229, 18, 36, 48, 15, 9, 198, 24, 83, 143, 52, 83, 128,
+			66, 9, 198, 21, 69, 1, 28, 243, 128, 66, 10, 198, 21, 4, 201, 48, 243, 128, 65, 15, 11, 200, 12, 243, 131, 20, 229, 18, 36, 48,
+			15, 9, 198, 8, 20, 137, 80, 243, 128, 66, 0, 24, 70, 76, 81, 213, 37, 67, 192, 89, 36, 81, 58, 6, 37, 47, 39, 15, 72, 35,
+			0, 81, 100, 97, 32, 9, 198, 76, 81, 213, 37, 67, 192, 36, 9, 198, 65, 33, 83, 21, 35, 192, 65, 13, 68, 49, 82, 71, 36, 55,
+			122, 6, 37, 75, 37, 0, 0, 11, 200, 77, 68, 129, 56, 117, 82, 36, 16, 67, 6, 195, 64, 81, 0, 15, 12, 200, 52, 144, 210, 60,
+			225, 83, 36, 16, 67, 15, 7, 195, 44, 20, 15, 66, 15, 11, 200, 37, 1, 82, 80, 84, 141, 36, 16, 68, 11, 200, 16, 83, 79, 13,
+			32, 90, 36, 16, 68, 11, 200, 13, 80, 149, 49, 65, 82, 36, 16, 67, 11, 200, 12, 21, 20, 37, 97, 82, 36, 16, 67, 10, 199, 8,
+			192, 83, 80, 244, 15, 72, 66, 11, 200, 4, 115, 210, 4, 99, 194, 36, 16, 69, 11, 200, 4, 34, 79, 81, 35, 198, 36, 16, 69, 0,
+			10, 199, 80, 243, 12, 21, 32, 78, 60, 65, 10, 199, 72, 148, 1, 73, 64, 78, 60, 66, 10, 199, 16, 80, 201, 25, 32, 78, 60, 66,
+			12, 201, 76, 245, 20, 61, 52, 5, 12, 145, 64, 15, 6, 195, 65, 33, 84, 15, 6, 195, 48, 85, 20, 15, 6, 195, 28, 85, 20, 15,
+			0, 9, 198, 65, 35, 211, 76, 147, 69, 65, 7, 132, 112, 105, 195, 185, 76, 7, 196, 80, 16, 201, 80, 65, 7, 196, 72, 80, 201, 80,
+			65, 8, 197, 32, 83, 12, 5, 48, 66, 9, 198, 21, 21, 65, 56, 147, 69, 66, 0, 10, 199, 64, 81, 15, 24, 147, 9, 4, 68, 10,
+			199, 56, 144, 207, 52, 81, 9, 4, 15, 10, 199, 37, 51, 212, 72, 244, 9, 4, 68, 9, 198, 5, 4, 15, 76, 149, 0, 66, 0, 23,
+			72, 16, 83, 79, 13, 32, 90, 36, 80, 72, 36, 65, 39, 49, 14, 16, 35, 123, 6, 37, 36, 0, 10, 199, 88, 19, 19, 5, 52, 201,
+			56, 66, 0, 15, 204, 81, 35, 205, 8, 240, 201, 80, 244, 5, 56, 144, 64, 70, 0, 7, 196, 88, 148, 201, 80, 65, 10, 199, 69, 80,
+			82, 80, 148, 143, 48, 67, 9, 198, 4, 229, 9, 80, 84, 201, 66, 7, 196, 4, 211, 5, 80, 15, 8, 197, 4, 64, 77, 5, 48, 67,
+			0, 10, 199, 72, 144, 197, 88, 84, 142, 20, 66, 0, 6, 195, 52, 147, 192, 76, 6, 195, 36, 35, 64, 13, 0, 17, 4, 95, 99, 97,
+			112, 65, 35, 57, 6, 40, 89, 49, 39, 55, 35, 0, 0, 7, 196, 36, 225, 137, 48, 66, 7, 196, 64, 245, 1, 48, 65, 13, 202, 12,
+			243, 148, 72, 244, 207, 28, 113, 84, 80, 15, 9, 198, 12, 243, 12, 61, 21, 73, 15, 0, 18, 70, 80, 81, 78, 4, 113, 82, 47, 37,
+			50, 6, 119, 75, 36, 14, 16, 0, 7, 196, 76, 244, 131, 36, 16, 9, 198, 36, 225, 197, 57, 83, 192, 15, 6, 195, 8, 244, 142, 16,
+			0, 10, 69, 76, 210, 76, 21, 144, 21, 0, 47, 9, 198, 8, 83, 12, 61, 97, 83, 15, 0, 9, 198, 37, 53, 9, 81, 82, 84, 68,
+			20, 71, 4, 195, 15, 57, 64, 78, 60, 35, 55, 12, 39, 50, 47, 6, 35, 50, 39, 0, 8, 196, 76, 245, 20, 60, 65, 16, 8, 196,
+			72, 243, 132, 60, 66, 15, 10, 198, 36, 224, 207, 28, 226, 84, 66, 15, 10, 198, 4, 48, 210, 20, 66, 84, 66, 16, 0, 9, 198, 8,
+			20, 212, 36, 19, 128, 66, 0, 9, 198, 24, 244, 211, 21, 35, 192, 77, 23, 3, 95, 194, 183, 48, 6, 40, 50, 47, 39, 15, 76, 36,
+			50, 47, 14, 16, 6, 35, 55, 36, 0, 5, 194, 60, 128, 15, 9, 198, 5, 3, 211, 81, 35, 198, 66, 0, 11, 200, 60, 97, 133, 73,
+			67, 199, 48, 144, 66, 21, 3, 95, 194, 180, 35, 76, 12, 6, 109, 50, 47, 39, 15, 35, 49, 6, 40, 47, 39, 0, 11, 200, 80, 244,
+			142, 4, 37, 79, 56, 144, 15, 6, 195, 72, 244, 192, 15, 11, 200, 64, 243, 148, 72, 83, 79, 48, 144, 66, 10, 199, 36, 229, 5, 72,
+			209, 90, 104, 15, 6, 195, 8, 244, 192, 15, 0, 10, 199, 72, 148, 213, 60, 224, 78, 60, 67, 11, 199, 72, 148, 197, 73, 98, 78, 60,
+			66, 16, 10, 199, 72, 145, 137, 85, 64, 78, 60, 66, 20, 71, 48, 145, 86, 37, 64, 78, 60, 55, 37, 6, 109, 84, 37, 47, 35, 50,
+			39, 0, 10, 199, 48, 19, 69, 57, 66, 78, 60, 66, 10, 199, 4, 195, 5, 28, 130, 78, 60, 66, 9, 198, 60, 115, 137, 80, 83, 80,
+			15, 13, 202, 52, 20, 129, 12, 19, 1, 28, 243, 137, 76, 15, 7, 196, 5, 81, 1, 12, 67, 9, 198, 5, 32, 200, 21, 66, 80, 66,
+			0, 11, 200, 73, 84, 212, 36, 50, 65, 56, 240, 67, 11, 200, 52, 243, 148, 36, 50, 65, 56, 240, 67, 11, 200, 8, 20, 137, 76, 50,
+			65, 56, 240, 67, 6, 131, 95, 195, 186, 43, 0, 8, 197, 52, 17, 18, 36, 64, 66, 8, 197, 80, 19, 12, 20, 64, 66, 7, 196, 76,
+			145, 86, 20, 15, 9, 198, 64, 193, 85, 72, 144, 192, 65, 9, 198, 60, 208, 133, 48, 144, 192, 67, 9, 198, 21, 21, 73, 88, 240, 192,
+			66, 9, 198, 16, 243, 69, 56, 144, 192, 16, 6, 195, 12, 85, 18, 16, 0, 12, 201, 36, 229, 5, 73, 97, 78, 28, 19, 143, 67, 12,
+			201, 24, 84, 146, 4, 115, 211, 80, 19, 143, 68, 26, 73, 52, 86, 154, 61, 51, 208, 72, 19, 143, 65, 36, 128, 12, 39, 89, 39, 48,
+			14, 16, 6, 35, 50, 39, 0, 6, 195, 12, 84, 192, 15, 0, 6, 131, 95, 195, 185, 43, 10, 199, 88, 83, 131, 21, 51, 1, 60, 67,
+			8, 197, 8, 20, 142, 4, 32, 65, 0, 9, 198, 56, 240, 195, 36, 243, 1, 66, 6, 195, 52, 147, 73, 66, 9, 198, 36, 68, 143, 48,
+			148, 201, 66, 9, 198, 36, 68, 143, 24, 240, 128, 66, 0, 23, 71, 64, 145, 82, 49, 82, 71, 36, 48, 37, 2, 36, 14, 16, 15, 55,
+			40, 6, 37, 75, 37, 0, 19, 71, 28, 144, 78, 49, 82, 71, 36, 75, 35, 50, 55, 40, 6, 37, 75, 37, 0, 7, 196, 52, 242, 82,
+			20, 67, 8, 197, 48, 19, 80, 4, 64, 65, 7, 196, 28, 245, 20, 4, 16, 13, 68, 12, 144, 78, 20, 76, 6, 37, 35, 50, 36, 0,
+			0, 12, 201, 9, 35, 195, 12, 244, 212, 20, 195, 0, 16, 0, 18, 70, 28, 83, 210, 28, 144, 64, 75, 109, 6, 39, 12, 14, 16, 75,
+			35, 0, 9, 198, 28, 83, 133, 76, 144, 64, 66, 10, 198, 4, 193, 83, 76, 144, 64, 66, 41, 17, 70, 24, 147, 15, 88, 144, 64, 83,
+			37, 55, 39, 84, 6, 125, 35, 0, 9, 198, 88, 80, 195, 32, 144, 64, 15, 9, 198, 88, 19, 5, 72, 144, 64, 66, 9, 198, 81, 84,
+			131, 32, 144, 64, 66, 9, 198, 80, 85, 20, 60, 144, 64, 16, 9, 198, 76, 50, 79, 88, 144, 64, 66, 9, 198, 72, 244, 193, 48, 144,
+			64, 67, 9, 198, 64, 149, 5, 12, 144, 64, 15, 9, 198, 64, 20, 129, 88, 144, 64, 67, 9, 198, 52, 20, 207, 88, 144, 64, 15, 9,
+			198, 24, 244, 195, 32, 144, 64, 66, 9, 198, 12, 240, 195, 32, 144, 64, 15, 9, 198, 12, 84, 131, 32, 144, 64, 16, 8, 197, 12, 20,
+			131, 4, 224, 65, 9, 198, 5, 53, 18, 4, 112, 76, 66, 9, 198, 4, 195, 5, 48, 144, 64, 67, 9, 198, 4, 193, 83, 76, 144, 64,
+			67, 9, 198, 4, 48, 193, 16, 144, 64, 67, 9, 198, 4, 32, 129, 16, 144, 64, 67, 0, 22, 67, 12, 240, 193, 49, 4, 39, 49, 35,
+			49, 6, 39, 55, 35, 0, 81, 99, 111, 108, 97, 32, 6, 131, 95, 195, 178, 43, 9, 198, 76, 244, 137, 76, 243, 5, 66, 9, 198, 52,
+			20, 195, 32, 147, 5, 66, 9, 198, 36, 225, 133, 16, 83, 5, 16, 9, 198, 12, 19, 12, 36, 51, 5, 65, 9, 198, 4, 65, 82, 8,
+			19, 5, 66, 0, 6, 131, 95, 195, 179, 43, 0, 7, 195, 28, 229, 64, 13, 42, 6, 195, 81, 33, 83, 15, 6, 195, 81, 33, 83, 15,
+			0, 15, 204, 88, 83, 148, 37, 21, 65, 81, 68, 133, 76, 147, 64, 15, 8, 197, 12, 243, 132, 60, 224, 16, 0, 22, 3, 95, 194, 166,
+			71, 6, 35, 51, 16, 35, 15, 89, 48, 36, 123, 12, 6, 35, 47, 35, 0, 6, 195, 48, 243, 0, 15, 9, 198, 16, 147, 211, 13, 84,
+			137, 66, 0, 9, 198, 36, 224, 207, 73, 3, 210, 66, 9, 198, 12, 243, 12, 60, 51, 192, 65, 9, 198, 12, 243, 12, 4, 35, 210, 66,
+			9, 198, 72, 241, 18, 36, 115, 192, 66, 6, 194, 48, 240, 76, 46, 8, 197, 100, 18, 23, 20, 128, 66, 8, 197, 81, 32, 70, 36, 192,
+			66, 7, 196, 80, 84, 208, 36, 15, 9, 198, 77, 81, 134, 21, 69, 0, 15, 7, 196, 72, 243, 12, 36, 66, 7, 196, 64, 244, 16, 36,
+			16, 8, 197, 13, 33, 83, 60, 192, 66, 7, 196, 12, 243, 12, 36, 15, 0, 7, 196, 24, 16, 133, 72, 65, 6, 131, 95, 195, 172, 43,
+			6, 195, 48, 241, 0, 15, 10, 198, 12, 147, 133, 8, 246, 0, 67, 15, 0, 10, 199, 88, 147, 131, 60, 192, 78, 60, 65, 10, 199, 72,
+			149, 18, 61, 98, 78, 60, 66, 6, 131, 95, 195, 173, 43, 0, 11, 200, 12, 243, 134, 21, 35, 73, 56, 240, 66, 11, 200, 8, 242, 67,
+			61, 69, 9, 56, 240, 67, 11, 200, 4, 97, 146, 21, 69, 9, 56, 240, 66, 8, 197, 81, 33, 86, 21, 48, 15, 10, 199, 77, 1, 82,
+			52, 144, 201, 16, 67, 8, 197, 60, 34, 68, 61, 48, 16, 6, 195, 24, 244, 137, 66, 7, 195, 24, 244, 137, 15, 46, 7, 196, 21, 53,
+			5, 80, 15, 8, 197, 8, 147, 199, 5, 48, 67, 7, 196, 5, 53, 1, 80, 65, 0, 15, 70, 8, 80, 84, 48, 84, 192, 71, 126, 47,
+			39, 55, 89, 0, 21, 71, 64, 84, 137, 64, 86, 137, 20, 48, 36, 14, 16, 37, 48, 36, 123, 6, 37, 36, 0, 10, 199, 12, 21, 5,
+			28, 244, 137, 20, 68, 9, 198, 72, 83, 211, 80, 21, 0, 66, 6, 195, 72, 16, 66, 66, 9, 198, 64, 84, 137, 52, 85, 18, 66, 10,
+			198, 24, 193, 71, 36, 20, 192, 65, 15, 9, 198, 4, 197, 9, 52, 85, 18, 66, 0, 20, 67, 92, 81, 75, 58, 4, 37, 49, 10, 6,
+			36, 50, 72, 0, 81, 101, 110, 100, 32, 6, 131, 95, 195, 168, 43, 7, 196, 76, 147, 143, 72, 16, 6, 195, 48, 245, 0, 15, 6, 195,
+			36, 193, 79, 65, 7, 195, 28, 241, 207, 66, 15, 7, 196, 8, 22, 129, 72, 66, 0, 6, 131, 95, 195, 169, 43, 9, 198, 5, 84, 212,
+			72, 19, 0, 67, 0, 9, 198, 81, 34, 77, 21, 68, 128, 65, 7, 196, 76, 147, 69, 80, 15, 6, 195, 56, 83, 73, 15, 8, 197, 52,
+			17, 18, 5, 48, 66, 10, 198, 28, 83, 205, 21, 68, 128, 66, 15, 9, 198, 21, 48, 77, 21, 68, 128, 66, 0, 9, 198, 76, 84, 85,
+			4, 196, 192, 66, 10, 199, 76, 16, 210, 36, 193, 71, 36, 15, 10, 199, 65, 34, 86, 36, 193, 71, 36, 15, 6, 195, 64, 131, 206, 15,
+			10, 199, 8, 17, 206, 61, 33, 71, 36, 15, 0, 10, 199, 16, 241, 5, 12, 17, 68, 72, 15, 0, 0, 0, 7, 196, 88, 244, 199, 36,
+			15, 8, 197, 25, 32, 71, 60, 192, 65, 0, 10, 69, 16, 81, 74, 5, 144, 21, 0, 47, 6, 131, 95, 195, 160, 43, 7, 196, 76, 84,
+			133, 56, 16, 0, 9, 198, 8, 19, 131, 60, 208, 84, 65, 6, 131, 95, 195, 161, 43, 12, 201, 76, 84, 211, 4, 229, 5, 76, 147, 64,
+			15, 6, 195, 76, 51, 204, 16, 12, 201, 36, 225, 137, 56, 149, 5, 76, 147, 64, 15, 12, 201, 16, 144, 201, 61, 69, 5, 76, 147, 64,
+			15, 0, 6, 195, 76, 20, 155, 78, 11, 200, 64, 16, 137, 48, 195, 206, 37, 48, 15, 7, 196, 28, 19, 65, 48, 65, 10, 198, 8, 145,
+			78, 80, 147, 128, 65, 15, 9, 198, 8, 22, 65, 52, 243, 128, 67, 0, 9, 198, 56, 20, 195, 61, 53, 0, 16, 7, 196, 12, 244, 20,
+			36, 15, 0, 0, 24, 72, 56, 85, 211, 48, 85, 20, 21, 32, 50, 57, 40, 88, 55, 12, 6, 36, 47, 12, 36, 14, 16, 0, 19, 70,
+			36, 229, 5, 72, 225, 84, 6, 37, 50, 47, 36, 14, 16, 50, 109, 47, 0, 11, 200, 12, 243, 148, 72, 243, 12, 21, 32, 66, 11, 200,
+			52, 243, 148, 20, 51, 211, 5, 32, 67, 11, 200, 24, 83, 137, 12, 245, 20, 21, 32, 15, 11, 200, 8, 19, 5, 56, 245, 20, 21, 32,
+			15, 0, 6, 195, 60, 195, 73, 15, 6, 195, 8, 241, 77, 15, 0, 9, 198, 36, 224, 193, 64, 16, 192, 67, 9, 198, 88, 19, 19, 20,
+			48, 192, 16, 9, 198, 80, 83, 5, 52, 16, 192, 15, 8, 197, 72, 20, 19, 60, 64, 66, 8, 197, 72, 20, 19, 60, 64, 15, 9, 198,
+			65, 35, 211, 20, 48, 192, 16, 10, 199, 64, 80, 197, 56, 81, 200, 36, 15, 7, 196, 56, 147, 194, 20, 65, 9, 198, 36, 65, 78, 80,
+			144, 192, 15, 9, 198, 21, 84, 137, 48, 240, 192, 67, 10, 199, 12, 83, 148, 60, 48, 200, 36, 15, 7, 196, 12, 20, 146, 20, 66, 9,
+			198, 4, 229, 9, 48, 240, 192, 66, 9, 198, 4, 225, 137, 48, 240, 192, 66, 0, 7, 195, 21, 32, 64, 77, 46, 0, 17, 70, 52, 246,
+			137, 48, 192, 64, 65, 39, 128, 6, 37, 55, 12, 35, 0, 9, 198, 76, 51, 205, 60, 64, 64, 65, 7, 196, 76, 20, 129, 28, 65, 7,
+			196, 16, 84, 143, 28, 65, 8, 197, 8, 19, 194, 4, 32, 67, 0, 6, 195, 77, 35, 0, 13, 6, 195, 56, 243, 73, 15, 0, 10, 199,
+			76, 16, 210, 36, 98, 67, 36, 67, 11, 67, 52, 86, 154, 65, 6, 109, 128, 12, 0, 6, 195, 52, 86, 154, 15, 10, 199, 52, 19, 12,
+			60, 96, 71, 36, 66, 8, 197, 12, 243, 77, 60, 64, 15, 0, 7, 196, 64, 21, 9, 56, 65, 8, 196, 24, 83, 73, 56, 65, 16, 0,
+			9, 198, 36, 212, 5, 72, 144, 64, 66, 7, 196, 88, 84, 147, 60, 77, 9, 198, 88, 149, 15, 72, 144, 64, 16, 9, 198, 88, 144, 193,
+			72, 144, 64, 66, 9, 198, 88, 83, 129, 72, 144, 64, 67, 9, 198, 88, 19, 9, 28, 144, 64, 66, 9, 198, 84, 52, 143, 56, 144, 64,
+			67, 10, 198, 80, 148, 133, 76, 144, 64, 66, 15, 9, 198, 80, 84, 129, 64, 144, 64, 67, 9, 198, 77, 3, 199, 48, 144, 64, 15, 9,
+			198, 76, 147, 79, 56, 144, 64, 67, 10, 198, 76, 147, 5, 76, 144, 64, 66, 15, 18, 70, 76, 81, 5, 12, 144, 64, 89, 36, 72, 36,
+			76, 6, 37, 12, 35, 0, 9, 198, 76, 19, 65, 72, 144, 64, 67, 9, 198, 72, 244, 207, 48, 144, 64, 67, 10, 198, 64, 243, 5, 76,
+			144, 64, 66, 15, 9, 198, 64, 193, 83, 80, 144, 64, 65, 8, 197, 56, 245, 77, 20, 224, 66, 9, 198, 52, 243, 143, 16, 144, 64, 67,
+			10, 198, 52, 19, 5, 76, 144, 64, 66, 15, 9, 198, 28, 19, 5, 72, 144, 64, 66, 9, 198, 21, 81, 197, 56, 144, 64, 15, 9, 198,
+			21, 81, 143, 72, 144, 64, 68, 9, 198, 20, 208, 143, 48, 144, 64, 67, 9, 197, 16, 20, 137, 20, 224, 67, 16, 9, 198, 12, 243, 69,
+			16, 144, 64, 15, 8, 197, 12, 194, 77, 20, 224, 65, 9, 198, 5, 68, 143, 24, 144, 64, 67, 0, 12, 201, 84, 197, 18, 5, 65, 82,
+			72, 83, 128, 16, 6, 195, 12, 80, 193, 15, 0, 15, 69, 4, 149, 84, 4, 192, 35, 57, 6, 40, 47, 35, 55, 0, 7, 196, 37, 64,
+			76, 100, 65, 7, 196, 88, 81, 204, 36, 15, 8, 197, 77, 2, 71, 60, 192, 65, 7, 196, 76, 241, 204, 36, 15, 7, 196, 53, 81, 148,
+			36, 66, 8, 197, 21, 48, 200, 36, 192, 15, 9, 198, 16, 243, 3, 21, 69, 0, 16, 6, 195, 12, 241, 206, 15, 8, 197, 9, 37, 71,
+			60, 192, 65, 0, 8, 196, 76, 83, 15, 56, 66, 15, 7, 196, 48, 147, 73, 56, 65, 0, 8, 197, 80, 84, 141, 36, 224, 65, 8, 197,
+			21, 48, 77, 36, 224, 66, 10, 199, 12, 243, 1, 9, 35, 196, 60, 67, 8, 197, 64, 84, 132, 60, 224, 16, 0, 14, 69, 8, 16, 203,
+			85, 0, 71, 36, 49, 6, 35, 48, 0, 15, 67, 64, 16, 197, 21, 0, 47, 81, 109, 97, 107, 101, 114, 32, 9, 198, 80, 243, 20, 20,
+			50, 9, 15, 6, 195, 52, 243, 0, 15, 6, 195, 52, 243, 0, 15, 9, 198, 52, 19, 15, 12, 50, 9, 15, 0, 9, 66, 60, 176, 39,
+			49, 6, 118, 0, 9, 198, 81, 32, 68, 61, 69, 0, 16, 8, 66, 72, 80, 14, 16, 36, 0, 10, 66, 72, 80, 14, 16, 6, 109, 0,
+			41, 8, 197, 52, 19, 16, 20, 192, 16, 12, 201, 20, 225, 5, 12, 20, 201, 48, 192, 66, 68, 12, 201, 12, 19, 80, 60, 64, 82, 76,
+			81, 192, 67, 13, 202, 12, 19, 15, 49, 162, 79, 12, 244, 148, 20, 16, 8, 196, 8, 17, 204, 36, 66, 46, 0, 7, 196, 21, 52, 197,
+			72, 65, 7, 196, 61, 48, 193, 72, 65, 7, 196, 48, 20, 197, 72, 65, 7, 196, 81, 80, 133, 72, 65, 7, 196, 80, 84, 197, 72, 65,
+			7, 196, 61, 48, 193, 72, 15, 6, 195, 52, 241, 0, 15, 6, 195, 52, 241, 0, 15, 7, 196, 4, 192, 133, 72, 65, 0, 13, 202, 72,
+			20, 16, 72, 84, 197, 57, 66, 78, 60, 67, 15, 70, 52, 144, 200, 4, 83, 0, 65, 6, 117, 49, 110, 55, 0, 7, 196, 80, 84, 133,
+			76, 15, 7, 196, 77, 68, 133, 76, 15, 9, 198, 76, 243, 1, 72, 243, 0, 67, 9, 198, 64, 243, 9, 28, 19, 0, 66, 7, 196, 52,
+			244, 133, 76, 15, 7, 196, 12, 240, 129, 76, 15, 0, 18, 70, 36, 224, 85, 29, 84, 128, 37, 50, 6, 35, 122, 81, 40, 14, 16, 0,
+			0, 9, 198, 4, 225, 197, 48, 84, 192, 65, 25, 70, 12, 128, 82, 48, 84, 192, 21, 102, 114, 0, 47, 81, 98, 97, 117, 100, 101, 108,
+			97, 105, 114, 101, 32, 9, 198, 88, 243, 20, 52, 85, 18, 65, 10, 198, 80, 83, 5, 52, 85, 18, 66, 15, 9, 198, 76, 50, 5, 48,
+			85, 18, 65, 9, 198, 64, 20, 129, 52, 85, 18, 66, 10, 199, 64, 20, 129, 16, 148, 197, 4, 67, 6, 195, 52, 240, 66, 66, 9, 198,
+			36, 228, 85, 36, 85, 0, 15, 9, 198, 16, 244, 201, 52, 85, 18, 66, 9, 198, 5, 69, 9, 52, 148, 192, 65, 10, 199, 4, 229, 9,
+			4, 84, 133, 4, 67, 9, 198, 4, 229, 5, 72, 244, 192, 65, 0, 7, 195, 21, 34, 64, 77, 46, 6, 195, 52, 245, 0, 15, 6, 195,
+			52, 245, 0, 15, 17, 70, 24, 18, 67, 12, 130, 79, 83, 35, 6, 37, 49, 12, 37, 39, 0, 0, 9, 198, 16, 81, 9, 12, 19, 0,
+			65, 6, 195, 60, 34, 84, 65, 9, 198, 52, 85, 1, 56, 243, 0, 67, 7, 196, 24, 83, 137, 76, 16, 0, 0, 21, 71, 20, 209, 82,
+			28, 83, 131, 100, 36, 65, 6, 36, 14, 16, 75, 36, 50, 89, 37, 0, 9, 198, 52, 19, 16, 20, 228, 192, 16, 0, 6, 195, 104, 80,
+			195, 16, 6, 195, 80, 240, 195, 16, 6, 195, 76, 80, 195, 16, 6, 195, 72, 80, 195, 16, 8, 196, 61, 33, 9, 56, 65, 16, 6, 195,
+			48, 80, 195, 16, 6, 195, 12, 80, 195, 16, 6, 195, 8, 80, 195, 16, 0, 8, 197, 24, 20, 195, 36, 224, 65, 0, 12, 201, 76, 19,
+			22, 4, 67, 210, 20, 115, 128, 15, 9, 198, 69, 80, 82, 21, 50, 77, 16, 9, 198, 57, 85, 143, 48, 243, 133, 15, 9, 198, 52, 83,
+			15, 52, 19, 133, 66, 9, 198, 12, 21, 133, 16, 147, 133, 16, 9, 198, 4, 229, 9, 28, 243, 133, 66, 9, 198, 4, 50, 5, 52, 83,
+			133, 66, 0, 13, 70, 52, 243, 147, 36, 85, 82, 21, 102, 114, 0, 47, 8, 197, 77, 1, 67, 60, 192, 15, 13, 202, 16, 144, 201, 4,
+			227, 143, 88, 84, 201, 52, 15, 8, 197, 4, 192, 207, 60, 192, 65, 0, 11, 67, 64, 144, 67, 48, 57, 6, 35, 76, 0, 18, 70, 12,
+			245, 83, 12, 245, 83, 49, 4, 40, 89, 15, 49, 6, 40, 89, 0, 6, 195, 77, 83, 192, 76, 14, 3, 95, 194, 184, 76, 36, 72, 6,
+			37, 61, 37, 35, 0, 0, 8, 197, 20, 194, 77, 36, 224, 66, 14, 68, 4, 84, 133, 60, 35, 6, 109, 12, 51, 109, 39, 0, 8, 197,
+			80, 147, 137, 4, 224, 66, 6, 195, 80, 83, 204, 66, 6, 195, 64, 19, 204, 65, 12, 201, 20, 193, 84, 81, 35, 206, 88, 243, 20, 68,
+			8, 197, 16, 84, 205, 4, 224, 15, 8, 197, 8, 83, 148, 60, 224, 15, 0, 0, 10, 199, 77, 84, 5, 72, 98, 67, 20, 67, 12, 71,
+			20, 195, 209, 84, 83, 131, 20, 21, 0, 47, 10, 199, 64, 243, 148, 20, 98, 67, 20, 16, 10, 199, 12, 243, 147, 20, 194, 67, 20, 16,
+			10, 199, 12, 20, 142, 20, 98, 67, 20, 16, 10, 199, 5, 4, 5, 56, 66, 67, 20, 67, 0, 0, 11, 200, 12, 243, 80, 72, 83, 132,
+			21, 32, 66, 13, 72, 52, 19, 131, 32, 84, 212, 21, 32, 21, 0, 47, 11, 200, 64, 85, 18, 60, 194, 70, 21, 32, 67, 10, 199, 57,
+			83, 195, 12, 147, 206, 60, 15, 22, 72, 92, 147, 131, 32, 84, 212, 21, 32, 58, 37, 50, 76, 6, 36, 89, 47, 36, 14, 16, 0, 11,
+			200, 81, 84, 130, 60, 19, 2, 21, 32, 67, 11, 200, 20, 224, 78, 80, 147, 205, 21, 32, 68, 11, 200, 12, 243, 148, 72, 19, 2, 21,
+			32, 66, 0, 9, 198, 12, 243, 12, 60, 50, 9, 65, 10, 199, 64, 148, 201, 77, 68, 129, 80, 66, 7, 196, 64, 17, 207, 16, 15, 9,
+			198, 52, 150, 20, 20, 50, 9, 15, 9, 198, 52, 17, 206, 20, 230, 137, 15, 9, 198, 48, 21, 82, 20, 230, 137, 15, 10, 199, 24, 147,
+			15, 77, 68, 129, 80, 66, 8, 196, 12, 130, 79, 16, 66, 15, 9, 198, 4, 229, 9, 21, 35, 197, 15, 0, 12, 201, 72, 149, 133, 56,
+			66, 67, 4, 227, 192, 66, 12, 201, 72, 84, 212, 72, 147, 135, 4, 227, 192, 66, 12, 201, 36, 229, 5, 72, 84, 211, 4, 227, 192, 67,
+			12, 201, 16, 147, 69, 57, 66, 67, 4, 227, 192, 66, 12, 201, 12, 244, 212, 72, 147, 135, 4, 227, 192, 66, 12, 201, 12, 243, 148, 20,
+			212, 12, 4, 227, 192, 66, 12, 201, 12, 243, 132, 37, 98, 68, 4, 227, 192, 67, 12, 201, 12, 243, 131, 20, 229, 18, 4, 227, 192, 66,
+			12, 201, 76, 20, 129, 28, 246, 154, 4, 227, 192, 68, 12, 201, 65, 32, 83, 12, 244, 147, 4, 227, 192, 67, 7, 196, 4, 32, 137, 4,
+			76, 6, 195, 60, 196, 0, 13, 15, 4, 95, 103, 114, 118, 81, 14, 16, 6, 35, 12, 84, 36, 0, 7, 196, 80, 244, 211, 20, 16, 9,
+			198, 64, 147, 194, 8, 144, 192, 16, 7, 196, 61, 52, 201, 4, 66, 0, 0, 18, 70, 20, 225, 82, 28, 145, 64, 36, 50, 36, 14, 16,
+			75, 6, 37, 36, 0, 9, 198, 64, 243, 12, 36, 49, 64, 15, 9, 198, 21, 49, 81, 84, 145, 64, 15, 9, 198, 21, 2, 84, 60, 209,
+			64, 66, 9, 198, 16, 83, 148, 36, 49, 64, 15, 9, 198, 12, 240, 195, 36, 113, 64, 15, 0, 18, 70, 12, 242, 78, 12, 145, 5, 49,
+			110, 37, 50, 76, 6, 37, 72, 36, 0, 9, 198, 64, 19, 1, 52, 81, 5, 15, 9, 198, 28, 195, 212, 80, 145, 5, 15, 9, 198, 20,
+			228, 195, 32, 81, 5, 67, 9, 198, 12, 243, 3, 32, 145, 5, 15, 0, 13, 68, 4, 228, 201, 4, 6, 35, 50, 89, 37, 35, 0, 5,
+			194, 77, 64, 24, 9, 198, 24, 19, 13, 20, 229, 0, 15, 7, 196, 12, 244, 9, 4, 15, 7, 196, 4, 228, 201, 4, 65, 0, 0, 9,
+			198, 77, 80, 195, 84, 33, 64, 65, 10, 198, 76, 241, 143, 12, 193, 64, 65, 15, 8, 197, 24, 147, 195, 36, 224, 66, 10, 198, 24, 145,
+			83, 60, 193, 64, 65, 15, 9, 198, 24, 145, 78, 36, 193, 64, 66, 10, 198, 16, 145, 1, 12, 129, 64, 67, 15, 9, 198, 12, 83, 12,
+			60, 193, 64, 16, 8, 197, 4, 194, 77, 20, 224, 16, 9, 198, 4, 147, 15, 12, 129, 64, 15, 0, 9, 198, 20, 97, 137, 12, 16, 201,
+			67, 6, 195, 57, 97, 1, 13, 9, 198, 64, 84, 195, 32, 144, 201, 15, 0, 0, 8, 197, 12, 149, 137, 48, 144, 66, 16, 69, 9, 37,
+			83, 36, 144, 71, 14, 16, 40, 88, 6, 37, 57, 0, 11, 70, 9, 84, 201, 56, 84, 211, 21, 0, 47, 0, 10, 199, 72, 21, 150, 37,
+			50, 78, 60, 66, 10, 69, 65, 149, 8, 60, 224, 21, 0, 47, 7, 196, 77, 83, 12, 60, 76, 8, 197, 12, 19, 129, 4, 224, 65, 0,
+			6, 195, 56, 243, 0, 15, 9, 198, 52, 20, 211, 20, 230, 137, 15, 6, 195, 16, 241, 197, 15, 9, 198, 12, 130, 67, 32, 144, 137, 67,
+			0, 8, 197, 77, 66, 77, 60, 192, 65, 8, 66, 56, 240, 50, 110, 0, 9, 5, 194, 76, 80, 76, 24, 2, 194, 164, 89, 6, 37, 65,
+			71, 39, 55, 39, 15, 72, 37, 15, 84, 6, 35, 55, 40, 47, 35, 0, 5, 194, 60, 208, 15, 9, 198, 36, 209, 78, 60, 99, 210, 67,
+			6, 195, 20, 97, 66, 15, 8, 197, 12, 83, 66, 4, 192, 65, 7, 196, 4, 50, 5, 36, 66, 0, 7, 196, 77, 84, 5, 72, 65, 7,
+			195, 12, 144, 79, 9, 8, 6, 195, 56, 241, 0, 15, 7, 196, 4, 224, 207, 72, 16, 0, 20, 71, 29, 80, 73, 76, 51, 206, 60, 81,
+			40, 35, 6, 37, 89, 49, 39, 50, 39, 0, 9, 197, 8, 19, 142, 21, 32, 65, 47, 8, 197, 52, 20, 141, 61, 32, 65, 8, 197, 12,
+			84, 130, 21, 32, 65, 8, 197, 12, 19, 9, 9, 32, 65, 0, 14, 2, 194, 163, 89, 47, 36, 34, 55, 6, 37, 50, 35, 0, 12, 201,
+			72, 17, 9, 61, 65, 82, 5, 2, 65, 70, 12, 201, 65, 50, 67, 61, 65, 82, 5, 2, 65, 69, 12, 201, 65, 32, 78, 61, 65, 82,
+			5, 2, 65, 69, 12, 201, 37, 1, 82, 52, 85, 18, 61, 2, 65, 69, 12, 201, 24, 148, 201, 61, 65, 82, 5, 2, 65, 70, 7, 196,
+			16, 85, 143, 80, 15, 12, 201, 13, 35, 205, 61, 65, 82, 5, 2, 65, 69, 9, 198, 12, 244, 144, 61, 33, 65, 66, 12, 201, 5, 35,
+			205, 5, 65, 82, 5, 2, 65, 70, 0, 12, 201, 72, 144, 76, 48, 16, 195, 36, 227, 192, 67, 24, 73, 36, 225, 140, 84, 83, 154, 4,
+			227, 192, 37, 50, 83, 55, 40, 6, 109, 50, 123, 35, 50, 39, 0, 12, 201, 36, 224, 207, 73, 3, 210, 4, 227, 192, 66, 12, 201, 12,
+			243, 12, 4, 35, 210, 4, 227, 192, 66, 9, 198, 5, 69, 15, 56, 149, 0, 66, 14, 68, 40, 84, 154, 84, 57, 6, 109, 14, 16, 123,
+			40, 0, 12, 201, 25, 32, 78, 12, 84, 195, 4, 227, 192, 67, 19, 71, 12, 243, 80, 4, 115, 137, 20, 49, 39, 65, 48, 35, 67, 6,
+			37, 36, 0, 10, 199, 80, 83, 195, 72, 22, 137, 4, 68, 8, 197, 77, 2, 82, 37, 64, 65, 10, 199, 76, 147, 131, 72, 243, 137, 4,
+			67, 10, 199, 64, 148, 143, 52, 19, 137, 4, 68, 10, 199, 64, 19, 1, 28, 243, 137, 4, 68, 8, 197, 61, 4, 15, 77, 64, 16, 10,
+			199, 56, 244, 141, 4, 225, 9, 4, 67, 10, 199, 52, 243, 143, 80, 243, 137, 4, 68, 9, 198, 36, 195, 5, 12, 149, 0, 66, 13, 202,
+			28, 194, 80, 80, 241, 15, 57, 66, 68, 36, 15, 9, 198, 21, 64, 77, 64, 84, 192, 65, 8, 197, 21, 2, 84, 21, 64, 66, 9, 198,
+			21, 2, 67, 20, 229, 18, 15, 10, 198, 17, 33, 78, 28, 245, 0, 66, 15, 10, 199, 12, 243, 80, 4, 115, 137, 4, 67, 10, 199, 12,
+			147, 195, 36, 20, 137, 4, 67, 10, 199, 5, 84, 212, 72, 20, 201, 4, 67, 10, 199, 5, 37, 5, 52, 148, 201, 4, 67, 10, 199, 4,
+			225, 137, 28, 243, 137, 4, 68, 9, 198, 4, 225, 18, 20, 148, 192, 66, 0, 35, 2, 194, 161, 48, 6, 40, 50, 47, 39, 15, 36, 89,
+			49, 55, 35, 65, 35, 47, 6, 37, 84, 39, 15, 14, 16, 39, 84, 109, 91, 6, 35, 47, 39, 0, 6, 195, 80, 80, 207, 16, 7, 196,
+			76, 21, 9, 72, 65, 6, 195, 56, 245, 0, 15, 6, 195, 56, 245, 0, 15, 0, 8, 197, 64, 83, 132, 21, 32, 65, 8, 197, 52, 244,
+			132, 21, 32, 65, 16, 69, 72, 245, 84, 21, 32, 14, 16, 6, 40, 47, 109, 14, 16, 0, 6, 195, 76, 51, 212, 15, 9, 198, 76, 50,
+			65, 8, 243, 0, 65, 8, 197, 64, 193, 84, 81, 32, 15, 7, 196, 12, 130, 69, 76, 15, 8, 197, 8, 20, 130, 5, 32, 65, 0, 11,
+			67, 12, 149, 25, 89, 6, 37, 47, 126, 0, 6, 195, 77, 83, 0, 76, 6, 195, 80, 83, 73, 15, 10, 199, 29, 82, 68, 37, 166, 143,
+			48, 67, 10, 199, 29, 81, 82, 72, 18, 79, 48, 16, 0, 6, 194, 77, 80, 76, 46, 8, 197, 28, 85, 20, 37, 64, 65, 8, 197, 8,
+			21, 20, 37, 64, 65, 0, 6, 195, 64, 145, 71, 15, 6, 195, 60, 209, 71, 15, 14, 203, 36, 229, 5, 48, 194, 71, 32, 83, 154, 36,
+			16, 15, 0, 8, 197, 76, 20, 147, 36, 224, 65, 9, 198, 52, 243, 148, 72, 80, 76, 16, 8, 197, 52, 19, 135, 4, 224, 65, 0, 6,
+			195, 105, 83, 21, 66, 9, 198, 24, 19, 148, 60, 48, 201, 15, 0, 13, 202, 77, 4, 137, 28, 147, 206, 5, 67, 211, 36, 67, 13, 70,
+			80, 18, 76, 48, 85, 82, 21, 102, 114, 0, 47, 7, 195, 20, 32, 78, 65, 15, 9, 198, 16, 148, 208, 61, 53, 0, 16, 0, 9, 198,
+			12, 130, 69, 76, 84, 143, 65, 13, 2, 194, 169, 49, 6, 39, 48, 37, 34, 117, 47, 0, 6, 195, 60, 225, 71, 15, 7, 195, 20, 225,
+			71, 65, 15, 0, 10, 199, 72, 144, 133, 48, 194, 78, 60, 66, 10, 199, 65, 33, 86, 20, 64, 78, 60, 66, 10, 199, 64, 244, 212, 84,
+			192, 78, 60, 66, 10, 199, 36, 228, 197, 29, 80, 78, 60, 66, 10, 199, 4, 97, 133, 72, 210, 78, 60, 66, 16, 2, 194, 182, 48, 35,
+			51, 6, 35, 81, 14, 16, 35, 83, 39, 0, 8, 197, 52, 243, 135, 61, 160, 15, 8, 197, 52, 20, 146, 60, 224, 66, 8, 197, 28, 20,
+			154, 60, 224, 66, 8, 197, 16, 20, 147, 20, 224, 65, 0, 11, 200, 16, 243, 85, 76, 227, 214, 5, 48, 15, 0, 7, 196, 56, 81, 204,
+			36, 76, 0, 6, 195, 4, 32, 192, 13, 0, 10, 199, 72, 148, 197, 72, 32, 78, 60, 66, 10, 199, 36, 212, 5, 28, 224, 78, 60, 66,
+			10, 199, 5, 52, 207, 52, 210, 78, 60, 66, 10, 199, 4, 227, 149, 56, 50, 78, 60, 66, 10, 199, 76, 245, 20, 61, 67, 206, 60, 67,
+			10, 199, 52, 243, 4, 61, 96, 78, 60, 67, 23, 72, 88, 145, 5, 60, 208, 75, 21, 32, 84, 37, 72, 109, 39, 65, 6, 118, 49, 36,
+			14, 16, 0, 0, 10, 199, 36, 229, 5, 73, 4, 133, 80, 66, 10, 199, 80, 84, 141, 61, 53, 1, 80, 66, 10, 199, 36, 224, 207, 53,
+			3, 5, 80, 15, 11, 199, 16, 148, 195, 72, 81, 9, 80, 66, 16, 6, 195, 16, 80, 201, 15, 9, 198, 5, 65, 78, 60, 193, 128, 15,
+			0, 13, 2, 194, 176, 81, 14, 16, 6, 35, 12, 72, 37, 0, 7, 196, 64, 20, 137, 4, 66, 7, 196, 61, 32, 201, 4, 16, 7, 196,
+			52, 148, 201, 4, 65, 8, 196, 24, 245, 133, 4, 65, 15, 9, 198, 16, 149, 20, 60, 225, 192, 15, 7, 196, 12, 21, 133, 4, 65, 24,
+			73, 5, 85, 15, 88, 82, 67, 60, 195, 192, 35, 40, 47, 39, 84, 109, 6, 37, 49, 39, 55, 39, 0, 7, 196, 5, 36, 9, 4, 66,
+			0, 0, 9, 198, 88, 149, 20, 36, 209, 64, 65, 9, 198, 20, 208, 143, 48, 145, 64, 67, 19, 2, 194, 190, 47, 14, 16, 6, 36, 15,
+			49, 40, 6, 35, 14, 16, 47, 37, 0, 9, 198, 88, 84, 142, 36, 49, 64, 66, 9, 198, 80, 245, 82, 56, 81, 64, 16, 9, 198, 52,
+			17, 15, 56, 145, 64, 67, 9, 198, 36, 228, 201, 20, 209, 64, 15, 9, 198, 12, 244, 142, 36, 49, 64, 66, 9, 198, 4, 229, 9, 56,
+			241, 64, 66, 0, 6, 195, 85, 35, 0, 13, 37, 2, 194, 191, 48, 6, 40, 50, 47, 39, 15, 37, 50, 47, 36, 51, 16, 39, 81, 35,
+			47, 6, 37, 84, 39, 15, 14, 16, 39, 84, 109, 91, 6, 35, 47, 39, 0, 0, 16, 2, 194, 188, 40, 50, 15, 49, 40, 6, 35, 14,
+			16, 47, 39, 0, 9, 198, 69, 80, 68, 72, 145, 192, 66, 7, 196, 48, 81, 199, 20, 16, 14, 68, 37, 48, 73, 4, 37, 88, 35, 6,
+			37, 12, 35, 0, 9, 198, 24, 149, 15, 24, 17, 192, 66, 7, 196, 24, 84, 137, 4, 65, 9, 198, 12, 243, 135, 72, 81, 192, 15, 9,
+			198, 5, 52, 1, 72, 17, 192, 66, 0, 14, 2, 194, 189, 40, 50, 15, 65, 6, 109, 128, 12, 39, 0, 0, 9, 198, 24, 16, 195, 36,
+			225, 64, 66, 9, 198, 16, 84, 143, 28, 129, 64, 65, 9, 198, 5, 100, 133, 8, 33, 64, 76, 9, 198, 76, 20, 133, 8, 33, 64, 78,
+			9, 198, 88, 84, 135, 36, 225, 64, 16, 9, 198, 81, 34, 80, 60, 65, 64, 65, 9, 198, 76, 245, 20, 36, 193, 64, 66, 10, 198, 64,
+			243, 12, 36, 225, 64, 65, 15, 9, 198, 64, 84, 137, 12, 193, 64, 65, 9, 198, 56, 145, 86, 60, 193, 64, 15, 9, 198, 52, 148, 137,
+			4, 65, 64, 66, 10, 198, 28, 147, 214, 4, 225, 64, 65, 16, 9, 198, 20, 113, 77, 60, 225, 64, 15, 9, 198, 16, 19, 79, 12, 193,
+			64, 65, 9, 198, 12, 243, 147, 60, 193, 64, 15, 9, 198, 12, 84, 131, 36, 225, 64, 16, 9, 198, 12, 20, 205, 20, 225, 64, 65, 8,
+			196, 12, 17, 206, 60, 66, 15, 9, 198, 4, 227, 198, 20, 193, 64, 66, 0, 9, 198, 13, 33, 68, 21, 32, 201, 65, 6, 195, 72, 129,
+			65, 16, 6, 195, 20, 65, 65, 16, 8, 196, 12, 81, 15, 48, 65, 15, 7, 196, 5, 33, 79, 48, 66, 6, 195, 4, 193, 65, 65, 0,
+			13, 68, 48, 144, 197, 36, 55, 37, 76, 6, 109, 37, 0, 9, 198, 72, 148, 208, 21, 69, 0, 15, 9, 198, 12, 243, 12, 21, 69, 0,
+			15, 0, 9, 198, 5, 97, 83, 76, 84, 143, 76, 5, 130, 195, 177, 43, 0, 10, 199, 72, 21, 150, 37, 48, 78, 60, 66, 10, 199, 5,
+			36, 133, 12, 130, 78, 60, 66, 10, 199, 4, 97, 129, 76, 50, 78, 60, 66, 11, 200, 88, 84, 212, 20, 224, 78, 61, 96, 15, 11, 200,
+			88, 84, 143, 48, 19, 149, 61, 96, 15, 12, 201, 69, 82, 78, 16, 144, 197, 76, 147, 64, 15, 6, 195, 36, 211, 204, 65, 11, 200, 12,
+			21, 5, 56, 19, 149, 61, 96, 15, 0, 24, 67, 80, 83, 0, 47, 4, 109, 55, 15, 35, 84, 6, 37, 84, 38, 12, 0, 81, 97, 118,
+			105, 118, 32, 14, 73, 80, 133, 78, 16, 84, 130, 37, 33, 0, 21, 0, 47, 12, 67, 64, 17, 197, 48, 6, 109, 37, 75, 0, 47, 6,
+			195, 80, 83, 0, 16, 7, 196, 76, 83, 79, 48, 65, 7, 196, 12, 241, 15, 48, 16, 6, 195, 8, 17, 197, 66, 0, 5, 194, 80, 80,
+			76, 5, 194, 80, 80, 15, 9, 198, 77, 84, 5, 72, 147, 210, 16, 9, 198, 77, 65, 83, 36, 51, 210, 66, 9, 198, 36, 229, 5, 72,
+			147, 210, 16, 6, 195, 28, 193, 66, 15, 9, 198, 12, 20, 142, 37, 99, 210, 66, 9, 198, 5, 85, 15, 52, 86, 154, 15, 0, 7, 195,
+			12, 242, 64, 76, 46, 6, 195, 80, 80, 203, 15, 0, 10, 199, 64, 21, 20, 36, 224, 78, 60, 65, 21, 71, 36, 68, 143, 64, 192, 78,
+			60, 37, 72, 14, 16, 39, 48, 55, 6, 35, 50, 39, 0, 11, 200, 81, 32, 78, 76, 148, 212, 61, 32, 66, 9, 197, 76, 84, 150, 21,
+			32, 65, 47, 15, 69, 9, 81, 134, 21, 32, 71, 6, 35, 83, 36, 14, 16, 0, 8, 197, 104, 83, 154, 21, 32, 65, 8, 197, 80, 20,
+			148, 5, 32, 65, 8, 197, 76, 83, 137, 61, 32, 65, 8, 197, 76, 83, 137, 61, 32, 15, 8, 197, 65, 35, 212, 37, 32, 65, 8, 197,
+			64, 147, 214, 21, 32, 66, 8, 197, 64, 84, 146, 21, 32, 66, 8, 197, 52, 83, 136, 37, 32, 66, 8, 197, 36, 229, 5, 29, 32, 65,
+			7, 196, 21, 100, 143, 76, 15, 8, 197, 12, 244, 146, 21, 32, 65, 8, 197, 12, 20, 144, 5, 32, 65, 8, 197, 9, 84, 130, 21, 32,
+			65, 8, 197, 8, 84, 130, 21, 32, 65, 0, 8, 67, 80, 80, 77, 21, 0, 47, 8, 197, 76, 21, 18, 5, 0, 65, 7, 196, 4, 115,
+			211, 80, 16, 0, 10, 199, 64, 84, 137, 64, 86, 137, 4, 68, 20, 71, 24, 147, 15, 76, 241, 137, 20, 83, 37, 55, 39, 88, 39, 83,
+			6, 37, 36, 0, 10, 199, 8, 150, 154, 5, 36, 137, 4, 67, 8, 197, 80, 20, 129, 57, 64, 65, 10, 199, 77, 68, 133, 81, 67, 201,
+			4, 16, 10, 199, 76, 96, 67, 80, 84, 137, 4, 66, 10, 199, 76, 81, 199, 36, 245, 137, 4, 67, 8, 197, 72, 148, 207, 73, 64, 16,
+			10, 199, 37, 51, 208, 76, 81, 137, 4, 68, 10, 199, 24, 245, 15, 28, 83, 137, 4, 68, 10, 199, 24, 147, 15, 76, 241, 137, 4, 68,
+			10, 199, 20, 194, 79, 24, 19, 137, 4, 69, 9, 197, 12, 243, 80, 85, 64, 65, 15, 10, 199, 12, 16, 137, 56, 245, 137, 4, 68, 10,
+			199, 4, 229, 9, 52, 17, 137, 4, 67, 8, 197, 4, 213, 76, 21, 64, 15, 6, 195, 4, 209, 66, 15, 0, 10, 67, 24, 18, 64, 83,
+			6, 35, 37, 0, 6, 195, 16, 82, 64, 76, 7, 195, 48, 82, 64, 76, 46, 14, 203, 5, 48, 201, 84, 112, 67, 5, 1, 76, 48, 144,
+			16, 0, 9, 197, 64, 84, 132, 21, 32, 65, 15, 20, 71, 36, 229, 1, 76, 144, 77, 60, 37, 50, 47, 35, 88, 37, 6, 35, 65, 39,
+			0, 8, 197, 52, 20, 212, 21, 32, 65, 8, 197, 33, 83, 148, 21, 32, 65, 17, 69, 12, 83, 148, 21, 32, 89, 6, 36, 50, 47, 109,
+			14, 16, 0, 47, 9, 197, 104, 81, 134, 37, 32, 65, 15, 8, 197, 77, 1, 84, 81, 32, 15, 8, 197, 72, 147, 142, 61, 96, 15, 13,
+			202, 20, 193, 84, 81, 35, 212, 20, 51, 137, 12, 15, 8, 197, 12, 19, 148, 21, 32, 65, 8, 197, 12, 17, 134, 5, 32, 65, 0, 9,
+			198, 52, 16, 197, 48, 192, 73, 67, 10, 199, 77, 2, 78, 5, 166, 143, 48, 67, 9, 198, 76, 147, 129, 48, 81, 133, 15, 10, 199, 28,
+			244, 135, 60, 230, 143, 48, 67, 7, 196, 13, 33, 83, 80, 16, 9, 198, 12, 20, 146, 60, 48, 201, 15, 7, 196, 5, 34, 83, 80, 65,
+			12, 201, 4, 229, 18, 61, 3, 211, 60, 98, 65, 69, 9, 198, 4, 224, 71, 72, 17, 133, 66, 0, 13, 202, 76, 50, 9, 105, 163, 198,
+			72, 83, 137, 4, 68, 6, 194, 81, 80, 76, 46, 6, 195, 88, 84, 154, 16, 8, 197, 77, 81, 5, 77, 64, 66, 8, 197, 77, 81, 4,
+			37, 64, 65, 8, 197, 72, 148, 15, 77, 64, 16, 8, 197, 72, 81, 4, 37, 64, 65, 8, 197, 65, 83, 16, 37, 64, 65, 9, 198, 52,
+			243, 143, 48, 149, 0, 66, 8, 197, 16, 84, 15, 77, 64, 16, 9, 197, 13, 33, 68, 37, 64, 65, 16, 8, 197, 12, 243, 80, 37, 64,
+			65, 9, 198, 12, 131, 210, 104, 245, 192, 66, 8, 197, 8, 148, 15, 77, 64, 16, 0, 9, 197, 8, 83, 131, 34, 16, 76, 28, 6, 195,
+			76, 243, 64, 15, 0, 12, 201, 28, 83, 133, 72, 22, 137, 60, 225, 64, 15, 0, 21, 71, 16, 85, 18, 4, 144, 137, 48, 72, 36, 47,
+			14, 16, 35, 6, 37, 71, 37, 55, 0, 6, 195, 80, 83, 85, 66, 9, 198, 73, 80, 197, 48, 192, 73, 67, 7, 196, 72, 81, 207, 48,
+			65, 7, 196, 52, 241, 207, 48, 66, 9, 198, 48, 245, 26, 61, 32, 73, 67, 7, 196, 48, 241, 15, 48, 65, 0, 18, 71, 76, 50, 65,
+			13, 21, 73, 36, 91, 4, 35, 49, 122, 6, 126, 57, 0, 7, 196, 5, 100, 129, 36, 78, 7, 196, 76, 20, 129, 36, 66, 6, 195, 76,
+			147, 206, 66, 8, 197, 21, 100, 133, 85, 128, 65, 0, 18, 70, 41, 85, 133, 57, 69, 83, 57, 40, 84, 6, 36, 50, 47, 40, 89, 0,
+			6, 195, 12, 145, 67, 15, 9, 198, 8, 20, 201, 48, 85, 83, 16, 0, 6, 195, 80, 80, 204, 15, 8, 197, 64, 243, 9, 105, 160, 65,
+			8, 196, 56, 20, 132, 60, 66, 15, 0, 9, 198, 12, 84, 142, 60, 32, 137, 15, 0, 23, 72, 16, 148, 212, 72, 144, 149, 37, 64, 72,
+			37, 89, 47, 14, 16, 37, 71, 40, 6, 37, 47, 0, 0, 10, 199, 76, 147, 135, 32, 147, 218, 104, 16, 0, 9, 198, 64, 84, 137, 20,
+			113, 84, 15, 12, 201, 12, 243, 134, 72, 21, 5, 72, 226, 84, 67, 0, 8, 197, 72, 144, 197, 72, 48, 16, 8, 197, 65, 35, 210, 60,
+			112, 65, 10, 199, 56, 245, 20, 21, 65, 77, 64, 15, 10, 199, 52, 85, 1, 8, 243, 9, 80, 67, 8, 197, 36, 208, 143, 12, 48, 16,
+			0, 8, 196, 5, 97, 84, 20, 78, 32, 9, 198, 81, 84, 130, 60, 96, 78, 67, 7, 196, 76, 85, 20, 20, 15, 7, 196, 64, 84, 212,
+			20, 15, 6, 195, 36, 48, 82, 65, 7, 196, 5, 65, 76, 20, 65, 6, 195, 4, 48, 82, 65, 0, 8, 197, 77, 84, 5, 72, 16, 65,
+			15, 69, 4, 225, 77, 36, 80, 35, 50, 36, 65, 6, 37, 36, 0, 14, 69, 12, 128, 78, 12, 80, 91, 6, 35, 12, 50, 89, 0, 8,
+			197, 88, 241, 204, 36, 16, 16, 8, 197, 76, 241, 204, 36, 16, 15, 8, 197, 72, 20, 1, 12, 80, 66, 8, 197, 65, 35, 195, 56, 80,
+			15, 8, 197, 56, 147, 137, 88, 80, 65, 8, 197, 52, 147, 208, 36, 16, 67, 8, 197, 24, 241, 204, 36, 16, 15, 8, 197, 12, 19, 143,
+			56, 80, 65, 8, 197, 5, 32, 197, 56, 80, 65, 0, 9, 198, 76, 244, 130, 37, 67, 204, 67, 12, 201, 76, 80, 207, 56, 67, 199, 20,
+			226, 84, 68, 7, 196, 24, 21, 9, 12, 66, 0, 6, 195, 80, 243, 73, 15, 9, 198, 52, 147, 12, 21, 50, 77, 15, 8, 197, 36, 212,
+			9, 20, 112, 15, 8, 197, 20, 227, 212, 20, 48, 15, 8, 197, 16, 144, 76, 60, 112, 65, 0, 7, 196, 5, 97, 86, 4, 78, 11, 200,
+			81, 85, 20, 61, 52, 15, 73, 64, 67, 7, 196, 64, 145, 68, 20, 15, 7, 196, 64, 83, 12, 20, 16, 14, 68, 24, 18, 78, 4, 83,
+			35, 6, 37, 12, 50, 35, 0, 10, 199, 4, 195, 15, 9, 35, 199, 36, 66, 0, 9, 197, 80, 83, 133, 72, 80, 66, 16, 8, 197, 80,
+			19, 65, 72, 16, 66, 8, 197, 64, 17, 15, 88, 16, 65, 16, 69, 60, 227, 9, 56, 80, 4, 39, 50, 15, 55, 6, 117, 50, 0, 8,
+			197, 5, 97, 83, 76, 80, 76, 8, 197, 5, 100, 133, 80, 80, 76, 8, 197, 88, 83, 133, 72, 80, 15, 6, 195, 76, 244, 147, 16, 9,
+			197, 64, 20, 133, 72, 80, 66, 16, 8, 197, 36, 68, 143, 64, 80, 65, 8, 197, 28, 83, 133, 88, 80, 15, 8, 197, 28, 19, 69, 80,
+			80, 15, 8, 197, 25, 81, 193, 12, 80, 66, 9, 197, 12, 240, 204, 20, 16, 65, 15, 8, 197, 12, 130, 83, 76, 16, 66, 9, 197, 8,
+			243, 7, 36, 16, 65, 15, 8, 197, 4, 224, 78, 36, 16, 67, 9, 197, 4, 193, 82, 36, 16, 66, 16, 8, 197, 4, 115, 206, 36, 16,
+			67, 0, 8, 197, 76, 50, 5, 73, 160, 16, 0, 15, 69, 36, 16, 207, 64, 240, 37, 6, 35, 49, 39, 48, 39, 0, 11, 67, 20, 194,
+			65, 36, 55, 6, 37, 35, 0, 9, 198, 76, 53, 82, 72, 147, 5, 66, 11, 67, 76, 50, 69, 91, 6, 37, 2, 36, 0, 8, 197, 5,
+			100, 133, 52, 240, 78, 8, 197, 76, 20, 133, 52, 240, 78, 9, 198, 81, 34, 83, 12, 83, 5, 65, 10, 198, 37, 51, 211, 12, 83, 5,
+			66, 15, 15, 69, 24, 197, 73, 16, 240, 83, 55, 6, 40, 37, 72, 39, 0, 9, 198, 24, 80, 130, 72, 147, 5, 66, 6, 195, 8, 18,
+			193, 66, 6, 195, 4, 34, 65, 66, 0, 6, 195, 48, 83, 206, 16, 6, 195, 20, 65, 78, 15, 6, 195, 4, 193, 78, 16, 0, 9, 197,
+			88, 83, 133, 80, 144, 65, 15, 8, 197, 76, 19, 5, 52, 144, 15, 8, 197, 29, 32, 70, 20, 208, 15, 8, 197, 12, 16, 195, 4, 208,
+			65, 8, 197, 4, 193, 83, 76, 144, 15, 8, 197, 4, 115, 129, 80, 144, 65, 0, 9, 198, 21, 2, 83, 60, 66, 64, 67, 9, 198, 85,
+			52, 197, 28, 194, 64, 15, 9, 198, 80, 85, 84, 60, 226, 64, 65, 9, 198, 77, 1, 67, 12, 130, 64, 15, 6, 195, 64, 242, 0, 15,
+			8, 197, 53, 83, 148, 5, 160, 66, 9, 198, 21, 2, 83, 60, 66, 64, 15, 11, 200, 12, 130, 69, 76, 19, 149, 61, 96, 15, 0, 9,
+			198, 104, 19, 132, 60, 32, 137, 15, 12, 201, 81, 33, 78, 80, 17, 21, 21, 50, 77, 15, 7, 195, 76, 18, 197, 66, 15, 6, 195, 64,
+			243, 0, 15, 0, 9, 198, 16, 85, 5, 13, 67, 210, 66, 9, 198, 16, 85, 5, 13, 67, 210, 66, 6, 194, 76, 144, 76, 46, 7, 196,
+			76, 84, 18, 36, 15, 9, 198, 12, 84, 131, 60, 49, 66, 15, 9, 198, 12, 20, 131, 60, 99, 210, 66, 7, 196, 5, 96, 82, 36, 65,
+			0, 8, 197, 77, 3, 199, 48, 144, 15, 8, 197, 64, 244, 212, 84, 208, 65, 9, 198, 60, 198, 78, 80, 131, 211, 65, 7, 196, 28, 83,
+			133, 72, 65, 8, 197, 21, 34, 84, 20, 208, 15, 7, 196, 12, 83, 66, 72, 15, 8, 197, 9, 35, 199, 48, 144, 15, 0, 8, 197, 12,
+			244, 142, 21, 32, 65, 8, 197, 88, 84, 148, 61, 96, 65, 9, 198, 85, 38, 149, 48, 82, 64, 67, 8, 197, 64, 19, 132, 5, 32, 65,
+			9, 198, 60, 195, 15, 48, 18, 64, 67, 9, 198, 56, 148, 195, 20, 210, 64, 15, 6, 195, 52, 16, 84, 66, 10, 198, 21, 52, 197, 72,
+			50, 64, 65, 15, 8, 197, 20, 194, 88, 37, 32, 67, 9, 197, 16, 21, 150, 21, 32, 66, 16, 8, 197, 12, 19, 1, 9, 32, 65, 9,
+			198, 9, 84, 195, 20, 210, 64, 15, 9, 198, 5, 51, 79, 56, 82, 64, 67, 6, 195, 4, 224, 80, 65, 6, 195, 4, 112, 84, 65, 9,
+			198, 4, 100, 129, 28, 243, 0, 16, 0, 0, 12, 201, 4, 195, 15, 57, 64, 78, 4, 227, 192, 67, 13, 202, 80, 83, 78, 61, 52, 15,
+			56, 66, 76, 36, 15, 8, 197, 80, 81, 84, 21, 64, 15, 6, 195, 64, 244, 0, 15, 8, 197, 20, 209, 82, 37, 64, 66, 8, 197, 5,
+			65, 76, 21, 64, 15, 0, 8, 196, 72, 245, 133, 72, 65, 46, 9, 198, 52, 147, 137, 52, 22, 0, 67, 7, 196, 8, 145, 143, 72, 65,
+			0, 8, 197, 80, 83, 132, 21, 32, 65, 8, 197, 72, 83, 132, 21, 32, 65, 8, 197, 104, 244, 212, 21, 32, 65, 8, 197, 76, 53, 84,
+			21, 32, 65, 16, 69, 41, 83, 137, 61, 32, 57, 6, 40, 50, 37, 39, 14, 16, 0, 6, 195, 80, 83, 80, 15, 8, 197, 80, 19, 129,
+			29, 32, 65, 7, 196, 76, 51, 210, 76, 16, 9, 198, 64, 20, 129, 8, 244, 132, 16, 8, 197, 56, 81, 210, 5, 32, 66, 8, 197, 48,
+			22, 154, 5, 32, 65, 9, 197, 12, 243, 131, 5, 96, 65, 15, 0, 15, 69, 92, 147, 132, 61, 112, 122, 6, 126, 50, 72, 110, 122, 0,
+			6, 195, 36, 229, 137, 66, 0, 9, 198, 24, 147, 9, 65, 2, 78, 67, 15, 4, 95, 103, 117, 114, 81, 6, 111, 13, 65, 111, 49, 37,
+			0, 9, 198, 81, 34, 71, 20, 210, 78, 66, 8, 197, 76, 48, 80, 37, 64, 65, 11, 199, 64, 20, 133, 57, 65, 83, 36, 66, 15, 9,
+			197, 52, 245, 13, 61, 64, 66, 15, 6, 195, 48, 83, 78, 15, 9, 198, 21, 32, 67, 48, 149, 0, 66, 8, 197, 4, 112, 80, 37, 64,
+			66, 0, 0, 12, 201, 76, 19, 22, 4, 51, 206, 16, 245, 20, 16, 9, 198, 65, 35, 211, 64, 85, 20, 15, 11, 200, 52, 243, 148, 20,
+			97, 76, 81, 32, 16, 9, 198, 12, 21, 1, 48, 85, 20, 15, 0, 17, 70, 21, 48, 204, 4, 208, 73, 36, 89, 49, 55, 35, 65, 6,
+			117, 0, 9, 198, 37, 3, 208, 61, 64, 77, 67, 0, 9, 198, 65, 35, 195, 20, 65, 82, 66, 9, 198, 4, 48, 197, 56, 65, 82, 66,
+			10, 198, 80, 132, 137, 48, 193, 82, 65, 47, 10, 198, 72, 80, 207, 72, 65, 82, 66, 47, 7, 196, 76, 17, 207, 52, 65, 9, 198, 8,
+			244, 195, 60, 225, 82, 16, 0, 7, 196, 88, 20, 133, 56, 16, 9, 198, 76, 20, 146, 4, 37, 83, 65, 9, 198, 5, 32, 200, 36, 195,
+			195, 66, 0, 7, 196, 61, 52, 197, 60, 65, 9, 198, 60, 113, 197, 8, 34, 64, 15, 9, 198, 12, 240, 195, 36, 66, 64, 15, 0, 6,
+			195, 9, 80, 149, 66, 0, 11, 200, 80, 84, 154, 60, 113, 78, 37, 64, 67, 10, 199, 64, 244, 148, 61, 35, 211, 20, 15, 7, 196, 48,
+			84, 18, 36, 15, 10, 199, 8, 244, 135, 61, 35, 211, 20, 15, 13, 202, 8, 147, 212, 85, 32, 129, 104, 147, 206, 20, 15, 0, 24, 72,
+			84, 226, 86, 21, 36, 201, 81, 144, 57, 40, 50, 37, 84, 6, 36, 14, 16, 89, 37, 47, 126, 0, 7, 196, 52, 16, 193, 12, 66, 8,
+			197, 20, 193, 85, 76, 144, 66, 8, 197, 12, 19, 69, 72, 144, 65, 0, 9, 198, 52, 20, 137, 56, 18, 64, 67, 9, 198, 81, 33, 68,
+			36, 50, 64, 16, 8, 197, 72, 149, 15, 12, 48, 16, 6, 195, 44, 240, 128, 15, 8, 197, 24, 83, 142, 20, 48, 15, 6, 195, 12, 240,
+			128, 15, 9, 198, 12, 147, 9, 20, 114, 64, 15, 9, 198, 4, 211, 210, 72, 82, 64, 67, 0, 7, 196, 76, 19, 132, 20, 66, 7, 196,
+			12, 244, 148, 20, 16, 0, 8, 197, 77, 64, 84, 84, 80, 65, 9, 197, 36, 229, 5, 72, 80, 66, 16, 8, 197, 5, 96, 82, 36, 80,
+			67, 10, 69, 60, 97, 137, 12, 80, 21, 0, 47, 8, 197, 69, 81, 76, 48, 80, 76, 8, 197, 72, 245, 133, 72, 80, 16, 8, 197, 72,
+			81, 21, 12, 80, 65, 8, 197, 72, 17, 9, 12, 80, 66, 8, 197, 65, 33, 77, 36, 16, 65, 8, 197, 48, 245, 133, 72, 80, 16, 8,
+			197, 36, 225, 68, 36, 16, 15, 8, 197, 24, 83, 9, 12, 80, 66, 9, 197, 16, 245, 133, 72, 80, 66, 16, 8, 197, 13, 33, 77, 36,
+			16, 65, 8, 197, 8, 245, 67, 48, 80, 67, 9, 197, 8, 84, 212, 36, 16, 65, 16, 8, 197, 8, 20, 212, 36, 16, 65, 8, 197, 5,
+			32, 207, 72, 80, 65, 0, 9, 198, 60, 32, 140, 36, 112, 78, 65, 7, 196, 64, 84, 133, 28, 65, 0, 6, 195, 81, 80, 64, 76, 9,
+			2, 209, 135, 21, 114, 117, 0, 47, 8, 197, 37, 3, 212, 20, 48, 15, 14, 202, 32, 84, 129, 12, 193, 79, 64, 243, 9, 76, 67, 16,
+			15, 204, 5, 32, 201, 12, 243, 134, 72, 21, 5, 72, 226, 84, 69, 0, 10, 199, 72, 148, 5, 80, 84, 147, 36, 66, 10, 199, 5, 52,
+			213, 52, 84, 147, 36, 66, 9, 2, 209, 134, 21, 114, 117, 0, 47, 8, 196, 20, 194, 84, 20, 65, 16, 0, 15, 69, 77, 2, 65, 12,
+			80, 89, 48, 37, 6, 35, 76, 36, 0, 8, 197, 24, 243, 12, 36, 80, 66, 16, 69, 5, 4, 137, 48, 80, 35, 48, 14, 16, 6, 37,
+			55, 109, 0, 8, 197, 4, 210, 67, 32, 80, 66, 14, 69, 12, 128, 78, 28, 80, 76, 6, 109, 37, 50, 75, 0, 9, 2, 209, 133, 21,
+			114, 117, 0, 47, 8, 197, 80, 83, 210, 36, 16, 67, 8, 197, 76, 83, 80, 72, 80, 15, 8, 197, 72, 85, 133, 72, 80, 16, 8, 197,
+			61, 52, 9, 80, 80, 15, 8, 197, 56, 18, 65, 16, 80, 65, 8, 197, 48, 85, 137, 80, 16, 67, 8, 197, 32, 243, 143, 72, 80, 67,
+			8, 197, 25, 80, 211, 36, 16, 65, 8, 197, 25, 34, 71, 36, 16, 65, 9, 197, 16, 240, 204, 20, 16, 65, 15, 8, 197, 4, 193, 78,
+			36, 16, 15, 8, 197, 4, 32, 90, 36, 16, 67, 0, 7, 196, 25, 83, 77, 60, 76, 9, 2, 209, 132, 21, 114, 117, 0, 47, 9, 198,
+			53, 83, 20, 37, 3, 0, 65, 0, 8, 197, 16, 81, 1, 48, 240, 65, 15, 68, 9, 34, 65, 56, 71, 14, 16, 6, 35, 37, 35, 50,
+			0, 7, 196, 4, 192, 213, 56, 78, 6, 2, 209, 131, 40, 0, 7, 196, 48, 19, 79, 56, 66, 11, 67, 28, 194, 65, 61, 6, 37, 12,
+			35, 0, 7, 196, 16, 243, 73, 56, 65, 0, 9, 2, 209, 130, 21, 114, 117, 0, 47, 7, 196, 72, 80, 130, 36, 16, 8, 196, 64, 83,
+			206, 36, 65, 46, 7, 196, 56, 83, 142, 36, 15, 0, 9, 2, 209, 129, 21, 114, 117, 0, 47, 9, 197, 48, 83, 85, 72, 144, 65, 15,
+			8, 197, 28, 16, 129, 48, 144, 65, 8, 197, 25, 84, 148, 20, 144, 66, 8, 197, 21, 48, 200, 36, 208, 15, 0, 9, 198, 88, 84, 135,
+			36, 226, 64, 65, 9, 198, 76, 245, 20, 36, 194, 64, 66, 16, 70, 28, 147, 214, 4, 226, 64, 75, 6, 39, 84, 35, 50, 37, 0, 9,
+			2, 209, 128, 21, 114, 117, 0, 47, 9, 198, 64, 149, 5, 28, 194, 64, 15, 9, 198, 52, 243, 15, 12, 130, 64, 15, 6, 195, 36, 51,
+			206, 15, 9, 198, 29, 32, 68, 60, 194, 64, 65, 9, 198, 12, 19, 142, 60, 34, 64, 15, 0, 8, 67, 52, 146, 197, 21, 0, 47, 10,
+			67, 76, 50, 65, 91, 6, 126, 35, 0, 6, 195, 81, 81, 64, 76, 9, 2, 209, 143, 21, 114, 117, 0, 47, 6, 195, 88, 83, 0, 16,
+			6, 195, 88, 83, 0, 16, 8, 196, 76, 83, 73, 56, 65, 16, 7, 196, 56, 243, 73, 56, 65, 9, 198, 52, 19, 143, 12, 50, 9, 15,
+			0, 9, 2, 209, 142, 21, 114, 117, 0, 47, 7, 196, 4, 194, 66, 36, 65, 0, 8, 197, 69, 81, 71, 48, 144, 76, 9, 2, 209, 141,
+			21, 114, 117, 0, 47, 9, 198, 81, 33, 77, 21, 166, 128, 15, 9, 198, 80, 243, 13, 21, 166, 128, 15, 8, 197, 73, 85, 5, 56, 144,
+			15, 9, 198, 72, 83, 9, 28, 147, 211, 16, 8, 197, 64, 20, 143, 16, 144, 66, 8, 197, 64, 20, 143, 16, 144, 15, 8, 197, 21, 49,
+			77, 64, 144, 15, 8, 197, 13, 84, 131, 84, 208, 65, 8, 197, 12, 83, 148, 72, 144, 15, 8, 197, 5, 85, 1, 72, 144, 65, 0, 9,
+			198, 77, 64, 78, 48, 86, 64, 65, 9, 68, 40, 19, 69, 76, 21, 0, 47, 5, 194, 88, 80, 76, 6, 194, 80, 144, 76, 46, 15, 2,
+			209, 140, 57, 36, 34, 15, 65, 6, 39, 55, 12, 36, 0, 9, 198, 64, 148, 133, 56, 82, 64, 67, 9, 198, 64, 83, 137, 76, 243, 0,
+			66, 9, 198, 61, 35, 204, 60, 114, 64, 15, 8, 196, 28, 83, 133, 76, 65, 15, 9, 198, 24, 144, 193, 72, 243, 0, 67, 9, 198, 12,
+			20, 133, 28, 114, 64, 16, 9, 198, 12, 19, 129, 104, 82, 64, 67, 9, 198, 12, 19, 79, 76, 50, 64, 15, 9, 198, 8, 148, 143, 12,
+			50, 64, 15, 9, 198, 8, 19, 19, 4, 210, 64, 65, 9, 198, 4, 208, 146, 60, 114, 64, 15, 9, 198, 4, 195, 15, 28, 114, 64, 15,
+			0, 9, 2, 209, 139, 57, 36, 34, 112, 0, 7, 196, 76, 145, 193, 72, 65, 6, 195, 28, 243, 77, 16, 6, 195, 28, 227, 205, 15, 9,
+			198, 28, 147, 143, 12, 50, 9, 15, 10, 198, 8, 80, 84, 72, 150, 0, 65, 16, 0, 15, 2, 209, 138, 57, 109, 34, 15, 20, 72, 6,
+			40, 51, 35, 0, 14, 202, 52, 243, 148, 20, 51, 205, 64, 21, 18, 36, 67, 15, 0, 9, 2, 209, 137, 21, 114, 117, 0, 47, 6, 195,
+			88, 85, 0, 15, 0, 9, 198, 40, 243, 129, 80, 128, 78, 65, 9, 2, 209, 136, 21, 114, 117, 0, 47, 9, 198, 80, 85, 18, 4, 81,
+			18, 15, 7, 196, 8, 245, 133, 76, 15, 0, 7, 195, 49, 82, 64, 76, 46, 8, 196, 76, 245, 5, 72, 66, 16, 7, 196, 52, 241, 207,
+			72, 65, 7, 196, 52, 81, 193, 72, 65, 0, 8, 67, 12, 128, 84, 21, 0, 47, 15, 2, 95, 34, 84, 37, 51, 81, 39, 55, 36, 47,
+			12, 36, 0, 10, 199, 20, 229, 21, 76, 144, 83, 52, 67, 10, 199, 8, 243, 129, 12, 243, 19, 36, 15, 10, 199, 4, 229, 9, 76, 84,
+			19, 36, 15, 0, 23, 2, 95, 33, 48, 4, 40, 50, 47, 39, 36, 89, 49, 55, 35, 65, 35, 47, 6, 37, 84, 39, 0, 7, 196, 20,
+			193, 84, 80, 15, 0, 12, 201, 36, 229, 18, 5, 97, 68, 21, 33, 64, 68, 14, 73, 76, 128, 75, 21, 52, 5, 5, 33, 64, 21, 0,
+			47, 12, 201, 64, 243, 9, 52, 84, 212, 61, 33, 64, 67, 12, 201, 64, 144, 90, 104, 21, 15, 73, 33, 64, 16, 10, 199, 24, 147, 129,
+			48, 35, 210, 28, 16, 11, 200, 16, 244, 16, 36, 244, 5, 81, 64, 15, 12, 201, 8, 245, 76, 21, 85, 5, 72, 147, 206, 16, 0, 7,
+			195, 12, 243, 128, 76, 46, 15, 2, 95, 39, 35, 48, 6, 110, 89, 47, 51, 39, 83, 39, 0, 14, 203, 88, 147, 12, 5, 96, 76, 48,
+			83, 15, 56, 112, 15, 7, 196, 73, 81, 137, 56, 65, 9, 198, 64, 19, 5, 52, 243, 133, 15, 9, 198, 48, 83, 211, 80, 83, 133, 66,
+			9, 198, 24, 147, 5, 52, 243, 133, 15, 9, 198, 16, 147, 143, 52, 83, 133, 66, 9, 198, 12, 194, 83, 80, 83, 133, 65, 8, 196, 8,
+			85, 15, 56, 66, 15, 0, 9, 2, 209, 146, 72, 57, 109, 12, 0, 11, 200, 77, 1, 83, 76, 147, 69, 81, 32, 66, 9, 198, 52, 243,
+			143, 64, 85, 20, 15, 9, 198, 36, 225, 9, 72, 85, 20, 15, 9, 198, 9, 32, 67, 12, 85, 20, 16, 0, 8, 197, 16, 83, 79, 56,
+			144, 65, 6, 195, 4, 210, 67, 66, 9, 2, 209, 145, 21, 114, 117, 0, 47, 8, 197, 52, 18, 79, 72, 144, 16, 8, 197, 16, 83, 79,
+			56, 144, 67, 8, 197, 12, 84, 131, 32, 144, 16, 8, 197, 8, 244, 135, 32, 144, 16, 8, 197, 5, 33, 193, 48, 144, 67, 8, 197, 5,
+			32, 77, 20, 144, 67, 0, 9, 198, 72, 148, 207, 49, 97, 82, 66, 9, 198, 72, 85, 143, 49, 97, 82, 66, 20, 70, 12, 243, 80, 85,
+			65, 82, 49, 39, 65, 48, 57, 6, 40, 47, 36, 14, 16, 0, 9, 198, 85, 48, 133, 12, 130, 64, 15, 9, 198, 77, 65, 70, 4, 226,
+			64, 65, 6, 195, 72, 245, 26, 15, 9, 198, 72, 85, 143, 49, 97, 82, 15, 9, 198, 64, 243, 3, 21, 97, 82, 66, 9, 198, 52, 20,
+			195, 4, 194, 64, 65, 9, 198, 36, 224, 197, 56, 66, 64, 15, 9, 198, 16, 80, 197, 56, 226, 64, 15, 9, 198, 12, 144, 204, 4, 66,
+			64, 65, 9, 198, 4, 65, 78, 60, 209, 82, 67, 9, 198, 4, 48, 197, 28, 194, 64, 15, 0, 7, 195, 21, 35, 192, 77, 46, 8, 197,
+			69, 81, 83, 80, 240, 76, 7, 196, 5, 4, 5, 56, 16, 0, 9, 198, 65, 33, 79, 12, 53, 80, 66, 0, 8, 197, 72, 147, 73, 56,
+			144, 65, 21, 2, 95, 41, 49, 57, 4, 40, 88, 35, 48, 35, 51, 6, 36, 50, 47, 36, 88, 37, 0, 8, 197, 81, 83, 137, 76, 144,
+			65, 14, 203, 61, 98, 68, 21, 3, 211, 37, 162, 79, 56, 80, 15, 8, 197, 61, 32, 77, 4, 144, 67, 0, 9, 2, 209, 156, 49, 57,
+			109, 12, 0, 22, 2, 95, 40, 35, 48, 4, 36, 51, 47, 35, 48, 35, 51, 6, 36, 50, 47, 36, 88, 37, 0, 6, 195, 76, 245, 146,
+			16, 9, 198, 16, 244, 143, 80, 82, 64, 67, 0, 9, 198, 65, 35, 198, 84, 114, 9, 65, 9, 198, 16, 144, 76, 60, 114, 9, 65, 7,
+			195, 64, 84, 128, 76, 46, 8, 2, 209, 155, 78, 109, 12, 0, 0, 13, 68, 4, 228, 201, 20, 6, 35, 50, 89, 37, 36, 0, 11, 2,
+			95, 46, 48, 40, 50, 47, 39, 0, 27, 9, 198, 76, 243, 15, 64, 16, 192, 67, 9, 198, 56, 83, 199, 72, 80, 192, 15, 9, 198, 20,
+			225, 137, 80, 85, 84, 67, 0, 12, 201, 52, 144, 200, 20, 192, 78, 28, 83, 15, 67, 6, 195, 12, 147, 225, 76, 14, 2, 95, 45, 47,
+			14, 16, 35, 47, 12, 37, 50, 39, 0, 9, 198, 5, 32, 200, 20, 192, 79, 67, 0, 13, 2, 95, 44, 84, 6, 37, 51, 81, 39, 55,
+			35, 0, 6, 195, 4, 49, 82, 65, 0, 9, 2, 95, 51, 47, 51, 6, 36, 0, 10, 198, 65, 33, 83, 8, 149, 5, 65, 15, 9, 198,
+			24, 147, 1, 72, 85, 5, 15, 15, 69, 12, 243, 137, 84, 112, 49, 6, 39, 50, 37, 40, 75, 0, 9, 198, 12, 243, 80, 61, 53, 5,
+			16, 9, 198, 4, 229, 9, 24, 21, 5, 66, 0, 13, 68, 21, 67, 137, 20, 36, 47, 50, 6, 125, 36, 0, 14, 203, 64, 244, 148, 4,
+			51, 206, 80, 18, 78, 21, 32, 68, 9, 2, 95, 50, 72, 6, 40, 36, 0, 10, 199, 76, 16, 195, 5, 35, 211, 36, 15, 10, 199, 28,
+			19, 1, 81, 67, 211, 36, 15, 13, 202, 12, 20, 212, 20, 197, 5, 72, 210, 78, 36, 67, 9, 198, 8, 84, 148, 60, 193, 0, 15, 0,
+			9, 2, 95, 49, 6, 40, 50, 39, 0, 6, 195, 80, 244, 147, 16, 8, 197, 56, 243, 65, 16, 80, 65, 9, 198, 52, 243, 143, 64, 16,
+			203, 67, 7, 196, 12, 244, 133, 16, 65, 12, 201, 8, 244, 135, 61, 48, 84, 60, 195, 0, 16, 0, 12, 67, 72, 246, 154, 14, 16, 6,
+			110, 128, 12, 0, 11, 2, 95, 48, 128, 6, 36, 51, 39, 0, 76, 6, 195, 72, 246, 154, 16, 9, 198, 52, 147, 137, 28, 243, 6, 67,
+			9, 198, 9, 32, 71, 4, 66, 78, 67, 0, 9, 198, 24, 16, 201, 48, 149, 1, 66, 10, 67, 32, 243, 69, 107, 39, 12, 65, 0, 11,
+			2, 95, 55, 89, 6, 109, 47, 12, 36, 0, 9, 198, 52, 240, 207, 56, 84, 201, 66, 9, 198, 20, 211, 211, 80, 20, 201, 66, 6, 195,
+			4, 195, 197, 15, 7, 195, 4, 147, 69, 66, 15, 0, 9, 198, 80, 83, 148, 4, 227, 192, 65, 9, 198, 76, 83, 148, 4, 227, 192, 65,
+			9, 198, 64, 244, 148, 36, 227, 192, 65, 9, 198, 52, 243, 148, 4, 227, 192, 65, 9, 198, 12, 243, 132, 60, 227, 192, 66, 9, 198, 64,
+			16, 201, 4, 227, 192, 66, 9, 198, 8, 244, 132, 4, 227, 192, 66, 9, 198, 4, 48, 201, 4, 227, 192, 66, 9, 198, 48, 243, 148, 4,
+			227, 192, 66, 9, 2, 95, 54, 89, 6, 109, 57, 0, 9, 198, 57, 83, 129, 80, 18, 192, 67, 13, 202, 57, 80, 204, 20, 244, 201, 57,
+			65, 83, 36, 68, 8, 197, 52, 243, 154, 60, 224, 66, 9, 198, 12, 244, 146, 61, 69, 0, 16, 0, 12, 2, 95, 53, 76, 6, 37, 50,
+			49, 122, 36, 0, 16, 3, 95, 98, 110, 71, 109, 50, 81, 35, 55, 6, 109, 88, 36, 0, 8, 197, 80, 130, 69, 76, 144, 15, 9, 198,
+			72, 82, 77, 64, 145, 71, 15, 8, 197, 48, 243, 135, 32, 144, 15, 7, 195, 20, 209, 83, 65, 15, 0, 7, 196, 56, 83, 12, 60, 76,
+			14, 2, 95, 52, 49, 122, 6, 35, 47, 12, 14, 16, 39, 0, 9, 198, 24, 244, 196, 36, 227, 214, 15, 9, 198, 20, 227, 133, 76, 147,
+			64, 15, 0, 13, 5, 115, 97, 114, 195, 178, 89, 35, 51, 6, 110, 0, 9, 2, 208, 183, 21, 114, 117, 0, 47, 20, 2, 95, 59, 48,
+			4, 40, 50, 47, 39, 36, 84, 6, 37, 51, 81, 39, 55, 35, 0, 9, 198, 105, 80, 195, 32, 84, 137, 65, 9, 198, 28, 21, 68, 20,
+			230, 137, 15, 9, 198, 25, 37, 77, 20, 230, 137, 15, 6, 195, 16, 243, 65, 15, 9, 198, 8, 147, 1, 80, 84, 137, 66, 12, 201, 5,
+			3, 195, 5, 64, 83, 80, 20, 201, 68, 6, 195, 4, 227, 193, 15, 0, 9, 2, 208, 182, 21, 114, 117, 0, 47, 15, 2, 95, 58, 72,
+			4, 40, 36, 48, 6, 40, 50, 47, 37, 0, 7, 196, 80, 20, 211, 36, 66, 7, 196, 76, 84, 19, 36, 15, 13, 202, 64, 20, 148, 20,
+			227, 199, 20, 225, 83, 36, 68, 11, 200, 12, 20, 212, 20, 195, 149, 61, 96, 15, 8, 197, 5, 69, 15, 72, 224, 16, 0, 8, 67, 40,
+			16, 203, 21, 0, 47, 16, 70, 12, 128, 80, 48, 147, 128, 76, 6, 35, 48, 55, 37, 68, 0, 10, 2, 95, 57, 50, 6, 110, 84, 36,
+			0, 9, 2, 208, 181, 21, 114, 117, 0, 47, 8, 197, 76, 148, 212, 20, 208, 15, 9, 198, 76, 147, 134, 61, 35, 211, 15, 10, 199, 76,
+			81, 206, 5, 3, 211, 80, 16, 10, 199, 24, 84, 146, 4, 115, 211, 80, 16, 7, 196, 12, 16, 129, 48, 65, 0, 17, 70, 16, 148, 208,
+			48, 22, 64, 72, 37, 89, 48, 55, 6, 36, 37, 0, 10, 2, 95, 56, 6, 110, 47, 12, 39, 0, 9, 2, 208, 180, 21, 114, 117, 0,
+			47, 10, 198, 76, 241, 204, 36, 243, 0, 65, 15, 9, 198, 28, 243, 5, 4, 67, 210, 68, 8, 197, 12, 20, 211, 60, 192, 66, 0, 9,
+			2, 208, 179, 21, 114, 117, 0, 47, 24, 2, 95, 63, 48, 4, 40, 50, 47, 39, 37, 50, 47, 36, 51, 39, 81, 35, 47, 6, 37, 84,
+			39, 0, 6, 195, 76, 243, 77, 16, 7, 196, 64, 19, 73, 72, 66, 10, 199, 60, 113, 201, 28, 147, 210, 56, 16, 6, 195, 56, 245, 137,
+			15, 0, 12, 201, 4, 195, 15, 57, 64, 78, 36, 227, 192, 67, 10, 199, 8, 150, 154, 5, 36, 137, 20, 67, 10, 199, 4, 52, 143, 8,
+			22, 137, 4, 68, 12, 67, 24, 144, 84, 83, 6, 37, 35, 74, 0, 46, 9, 2, 208, 178, 21, 114, 117, 0, 47, 18, 2, 95, 62, 49,
+			57, 4, 40, 88, 35, 6, 35, 50, 81, 39, 55, 39, 0, 10, 199, 96, 83, 143, 24, 240, 137, 4, 68, 6, 195, 76, 85, 20, 15, 6,
+			195, 76, 85, 20, 15, 6, 195, 72, 85, 20, 15, 10, 199, 12, 16, 200, 21, 52, 201, 4, 67, 0, 12, 201, 36, 212, 12, 20, 209, 78,
+			80, 19, 143, 67, 12, 201, 5, 4, 1, 73, 65, 78, 28, 19, 143, 67, 12, 201, 84, 197, 18, 4, 211, 206, 80, 19, 143, 68, 12, 201,
+			84, 197, 18, 4, 211, 206, 16, 19, 143, 68, 12, 201, 76, 244, 18, 4, 211, 206, 16, 19, 143, 68, 12, 201, 64, 20, 146, 60, 48, 200,
+			36, 19, 143, 68, 9, 2, 208, 177, 21, 114, 117, 0, 47, 7, 196, 76, 49, 76, 80, 16, 6, 195, 72, 245, 0, 15, 7, 196, 69, 82,
+			69, 80, 15, 8, 196, 16, 80, 137, 80, 65, 16, 7, 195, 12, 130, 79, 66, 15, 7, 196, 12, 19, 143, 64, 15, 7, 196, 8, 144, 137,
+			80, 65, 0, 9, 2, 208, 176, 21, 114, 117, 0, 47, 19, 2, 95, 60, 35, 48, 4, 36, 51, 47, 35, 6, 35, 50, 81, 39, 55, 39,
+			0, 6, 195, 76, 227, 194, 15, 10, 199, 12, 243, 12, 20, 195, 206, 28, 15, 0, 9, 67, 8, 243, 205, 71, 40, 65, 0, 9, 2, 208,
+			191, 21, 114, 117, 0, 47, 8, 196, 61, 101, 133, 72, 66, 16, 10, 198, 61, 69, 5, 56, 84, 133, 67, 16, 7, 196, 60, 225, 193, 72,
+			65, 9, 198, 52, 148, 197, 72, 84, 133, 67, 9, 198, 12, 21, 1, 48, 148, 201, 66, 0, 6, 2, 208, 190, 110, 0, 6, 195, 64, 244,
+			16, 16, 9, 198, 56, 144, 197, 72, 21, 0, 66, 0, 9, 2, 208, 189, 21, 114, 117, 0, 47, 7, 196, 52, 84, 137, 80, 65, 7, 196,
+			4, 208, 137, 80, 65, 0, 9, 2, 208, 188, 21, 114, 117, 0, 47, 14, 2, 95, 64, 49, 37, 6, 39, 76, 12, 39, 55, 35, 0, 0,
+			8, 197, 17, 80, 137, 80, 240, 65, 14, 203, 76, 245, 20, 61, 0, 82, 4, 116, 129, 24, 144, 68, 9, 2, 208, 187, 21, 114, 117, 0,
+			47, 8, 197, 77, 80, 137, 80, 240, 65, 10, 198, 65, 35, 199, 56, 244, 201, 65, 15, 9, 198, 64, 20, 129, 48, 148, 201, 66, 9, 198,
+			52, 20, 133, 81, 66, 77, 16, 9, 198, 4, 224, 67, 48, 20, 201, 66, 9, 198, 4, 210, 76, 12, 20, 133, 66, 8, 197, 4, 52, 85,
+			20, 240, 65, 0, 9, 198, 21, 97, 82, 21, 53, 0, 65, 9, 198, 5, 48, 201, 4, 227, 192, 66, 9, 198, 64, 21, 18, 60, 227, 192,
+			66, 9, 198, 4, 32, 137, 4, 227, 192, 65, 9, 2, 208, 186, 21, 114, 117, 0, 47, 18, 70, 4, 32, 129, 36, 227, 192, 35, 71, 12,
+			35, 6, 37, 12, 50, 39, 0, 0, 16, 2, 208, 185, 6, 126, 15, 20, 71, 14, 16, 6, 36, 84, 36, 0, 9, 197, 56, 244, 212, 60,
+			144, 65, 16, 7, 196, 56, 80, 149, 48, 16, 6, 195, 28, 147, 199, 16, 8, 197, 24, 243, 79, 72, 144, 65, 8, 197, 21, 53, 15, 56,
+			144, 65, 8, 197, 21, 21, 73, 16, 144, 15, 0, 10, 199, 65, 35, 214, 60, 48, 78, 60, 65, 10, 199, 28, 149, 68, 36, 48, 78, 60,
+			65, 10, 199, 4, 195, 1, 12, 50, 78, 60, 66, 9, 198, 76, 50, 9, 48, 193, 82, 65, 7, 196, 16, 83, 12, 60, 76, 20, 2, 208,
+			184, 57, 36, 34, 112, 15, 20, 40, 49, 14, 16, 6, 35, 37, 50, 110, 0, 6, 195, 80, 244, 142, 16, 9, 198, 52, 243, 135, 60, 194,
+			64, 15, 9, 198, 8, 240, 195, 4, 225, 82, 16, 9, 198, 8, 20, 130, 4, 225, 82, 16, 0, 12, 201, 88, 84, 137, 24, 144, 193, 80,
+			20, 201, 68, 8, 197, 88, 244, 212, 72, 240, 76, 8, 197, 56, 244, 212, 72, 240, 76, 9, 198, 64, 244, 137, 24, 84, 137, 66, 6, 195,
+			64, 84, 149, 66, 9, 198, 8, 243, 7, 32, 84, 137, 65, 0, 18, 70, 72, 82, 78, 88, 147, 192, 14, 16, 36, 37, 50, 84, 6, 37,
+			39, 0, 9, 198, 4, 209, 82, 36, 115, 192, 66, 9, 198, 4, 32, 137, 4, 211, 192, 76, 10, 198, 4, 32, 137, 4, 211, 192, 76, 32,
+			0, 8, 197, 84, 243, 73, 56, 144, 65, 10, 198, 80, 83, 5, 24, 243, 128, 66, 15, 9, 198, 72, 19, 65, 16, 19, 128, 67, 9, 198,
+			25, 32, 83, 76, 147, 128, 65, 0, 10, 199, 5, 84, 208, 36, 48, 78, 60, 65, 9, 198, 12, 244, 142, 36, 50, 64, 66, 6, 195, 20,
+			65, 82, 65, 0, 6, 195, 16, 224, 64, 13, 30, 4, 95, 226, 128, 161, 49, 14, 16, 6, 39, 76, 36, 15, 55, 35, 47, 6, 37, 50,
+			35, 15, 72, 6, 110, 48, 12, 37, 35, 0, 0, 8, 196, 24, 84, 137, 20, 65, 15, 22, 4, 95, 226, 128, 160, 49, 14, 16, 6, 39,
+			76, 36, 15, 55, 35, 47, 6, 37, 50, 35, 0, 6, 195, 76, 227, 196, 15, 0, 7, 196, 77, 2, 69, 16, 15, 0, 17, 70, 12, 128,
+			77, 64, 147, 206, 76, 6, 109, 65, 48, 37, 39, 50, 0, 6, 195, 88, 85, 18, 16, 9, 198, 20, 225, 15, 13, 34, 78, 66, 0, 6,
+			195, 85, 48, 128, 13, 13, 3, 95, 101, 108, 81, 14, 16, 6, 36, 49, 110, 0, 6, 195, 80, 80, 192, 15, 6, 195, 16, 80, 192, 15,
+			0, 10, 199, 20, 225, 137, 80, 85, 83, 36, 67, 10, 199, 13, 34, 83, 61, 53, 15, 52, 66, 0, 10, 199, 4, 208, 82, 60, 115, 143,
+			48, 67, 29, 4, 95, 226, 128, 155, 84, 37, 51, 81, 39, 55, 6, 109, 47, 12, 35, 15, 89, 37, 50, 6, 37, 89, 47, 14, 16, 35,
+			0, 7, 195, 20, 97, 83, 65, 15, 6, 195, 12, 193, 83, 15, 10, 199, 9, 35, 206, 12, 130, 79, 48, 66, 7, 196, 5, 36, 133, 16,
+			15, 6, 195, 4, 193, 83, 15, 0, 12, 201, 76, 83, 5, 104, 147, 206, 4, 193, 64, 68, 28, 4, 95, 226, 128, 154, 84, 37, 51, 81,
+			39, 55, 6, 109, 47, 12, 35, 15, 37, 50, 15, 71, 6, 35, 89, 89, 39, 0, 12, 201, 52, 243, 148, 21, 49, 71, 4, 193, 64, 67,
+			0, 18, 70, 28, 22, 154, 21, 69, 1, 81, 35, 128, 12, 6, 109, 47, 12, 35, 0, 8, 67, 80, 147, 69, 21, 0, 47, 6, 195, 12,
+			243, 69, 76, 6, 195, 80, 243, 69, 66, 7, 195, 60, 35, 197, 65, 15, 6, 195, 12, 195, 197, 15, 0, 9, 198, 81, 84, 130, 36, 227,
+			192, 65, 9, 198, 81, 84, 130, 4, 227, 192, 65, 9, 198, 72, 81, 199, 4, 227, 192, 65, 9, 198, 64, 83, 147, 4, 227, 192, 65, 9,
+			198, 48, 81, 199, 4, 227, 192, 65, 9, 198, 48, 19, 131, 36, 227, 192, 65, 9, 198, 28, 20, 130, 4, 227, 192, 65, 9, 198, 12, 84,
+			131, 4, 227, 192, 65, 9, 198, 8, 240, 195, 36, 227, 192, 65, 9, 198, 80, 244, 195, 4, 227, 192, 66, 9, 198, 72, 241, 206, 4, 227,
+			192, 66, 9, 198, 52, 244, 135, 4, 227, 192, 66, 9, 198, 52, 148, 195, 4, 227, 192, 66, 9, 198, 28, 16, 130, 4, 227, 192, 66, 9,
+			198, 12, 244, 154, 4, 227, 192, 66, 9, 198, 12, 243, 154, 4, 227, 192, 66, 7, 196, 64, 241, 199, 36, 15, 7, 196, 12, 147, 133, 52,
+			65, 0, 7, 196, 13, 80, 213, 48, 66, 0, 10, 199, 76, 48, 82, 36, 48, 78, 60, 65, 10, 199, 36, 225, 143, 72, 210, 78, 60, 66,
+			10, 199, 12, 243, 150, 60, 48, 78, 60, 65, 10, 199, 5, 69, 5, 56, 112, 78, 60, 66, 10, 199, 76, 245, 146, 5, 67, 206, 60, 67,
+			13, 68, 61, 163, 206, 60, 39, 128, 6, 39, 50, 39, 0, 10, 199, 52, 144, 210, 61, 67, 206, 60, 67, 15, 3, 95, 103, 117, 81, 40,
+			75, 35, 51, 6, 35, 47, 37, 0, 37, 4, 95, 226, 128, 158, 72, 4, 110, 48, 12, 37, 36, 15, 84, 37, 14, 16, 81, 39, 55, 6,
+			109, 47, 12, 36, 15, 37, 50, 15, 71, 6, 35, 89, 89, 39, 0, 7, 196, 64, 243, 148, 60, 15, 9, 198, 20, 225, 137, 76, 83, 64,
+			15, 10, 198, 4, 229, 9, 76, 243, 64, 67, 15, 0, 28, 67, 12, 129, 64, 49, 36, 15, 49, 6, 35, 48, 37, 47, 35, 50, 39, 0,
+			81, 99, 97, 112, 105, 116, 97, 110, 111, 32, 9, 198, 12, 17, 204, 36, 20, 137, 65, 7, 195, 12, 129, 64, 76, 28, 20, 2, 95, 91,
+			35, 48, 6, 36, 51, 47, 35, 49, 122, 6, 35, 72, 14, 16, 35, 0, 6, 195, 16, 81, 192, 15, 9, 198, 13, 81, 204, 36, 84, 137,
+			65, 0, 9, 198, 8, 84, 135, 4, 211, 192, 65, 16, 70, 24, 148, 195, 32, 147, 192, 83, 6, 37, 89, 49, 37, 39, 0, 9, 198, 5,
+			100, 133, 52, 211, 192, 76, 9, 198, 76, 20, 133, 52, 211, 192, 76, 9, 198, 80, 84, 146, 20, 211, 212, 15, 0, 6, 195, 76, 241, 0,
+			15, 10, 199, 64, 19, 12, 4, 229, 79, 80, 15, 10, 199, 61, 34, 84, 80, 84, 143, 64, 67, 10, 198, 60, 210, 67, 72, 243, 128, 65,
+			15, 10, 199, 5, 85, 15, 64, 147, 15, 80, 15, 0, 10, 199, 16, 149, 133, 56, 112, 78, 60, 66, 10, 199, 5, 101, 133, 56, 112, 78,
+			60, 66, 9, 66, 88, 144, 84, 37, 0, 76, 46, 5, 194, 84, 176, 13, 9, 198, 76, 48, 78, 16, 19, 0, 65, 12, 201, 24, 21, 20,
+			37, 52, 5, 12, 145, 64, 15, 29, 74, 12, 244, 148, 60, 50, 82, 13, 82, 84, 60, 49, 110, 14, 16, 47, 39, 76, 37, 14, 16, 49,
+			6, 40, 37, 47, 39, 0, 0, 18, 2, 95, 95, 89, 39, 47, 12, 39, 55, 37, 50, 36, 6, 35, 47, 39, 0, 8, 197, 65, 35, 212,
+			5, 48, 65, 6, 195, 60, 130, 64, 15, 8, 197, 28, 243, 142, 21, 48, 15, 8, 197, 24, 17, 68, 37, 48, 15, 0, 12, 201, 72, 147,
+			135, 72, 22, 137, 4, 227, 192, 66, 12, 201, 16, 85, 5, 72, 210, 78, 4, 227, 192, 66, 12, 201, 12, 243, 134, 36, 117, 82, 36, 227,
+			192, 67, 12, 201, 12, 243, 131, 20, 229, 18, 36, 227, 192, 66, 10, 199, 4, 227, 129, 52, 20, 137, 4, 68, 10, 67, 92, 21, 20, 84,
+			35, 74, 12, 0, 21, 71, 76, 16, 210, 21, 53, 9, 20, 89, 35, 49, 14, 16, 36, 89, 47, 6, 37, 36, 0, 10, 199, 28, 243, 129,
+			73, 68, 137, 4, 67, 20, 71, 5, 85, 15, 56, 243, 73, 20, 35, 40, 47, 39, 50, 39, 65, 6, 37, 36, 0, 13, 2, 95, 94, 49,
+			35, 48, 12, 40, 76, 12, 39, 0, 10, 199, 76, 52, 137, 88, 19, 137, 4, 67, 6, 195, 72, 245, 20, 16, 10, 199, 65, 34, 71, 36,
+			243, 137, 4, 67, 10, 199, 64, 192, 78, 5, 33, 201, 4, 66, 10, 199, 52, 148, 207, 28, 147, 137, 4, 68, 10, 199, 52, 145, 204, 36,
+			244, 137, 4, 67, 10, 199, 52, 144, 83, 80, 83, 137, 4, 68, 10, 199, 48, 81, 193, 80, 244, 137, 4, 68, 6, 195, 16, 145, 84, 15,
+			10, 199, 13, 34, 79, 28, 83, 137, 4, 68, 13, 202, 12, 149, 137, 80, 21, 133, 12, 50, 9, 4, 15, 10, 199, 9, 34, 83, 28, 245,
+			137, 4, 15, 6, 195, 8, 145, 84, 15, 10, 198, 8, 18, 129, 104, 85, 0, 67, 16, 0, 7, 196, 20, 48, 201, 80, 65, 19, 2, 95,
+			93, 49, 57, 4, 40, 88, 35, 49, 122, 6, 35, 72, 14, 16, 35, 0, 7, 196, 13, 80, 137, 80, 65, 7, 196, 12, 21, 5, 80, 15,
+			9, 198, 4, 225, 137, 5, 32, 79, 67, 0, 9, 198, 76, 52, 149, 64, 243, 0, 65, 21, 4, 95, 226, 128, 150, 72, 4, 39, 48, 12,
+			37, 35, 15, 71, 6, 35, 51, 16, 35, 0, 6, 195, 28, 195, 194, 15, 6, 195, 8, 83, 66, 15, 10, 198, 5, 53, 78, 12, 147, 206,
+			67, 16, 0, 25, 4, 95, 226, 128, 149, 71, 6, 35, 51, 16, 35, 15, 39, 51, 37, 128, 110, 50, 47, 6, 35, 55, 36, 0, 7, 196,
+			88, 84, 208, 72, 15, 8, 197, 72, 148, 207, 73, 48, 16, 8, 197, 72, 144, 207, 73, 48, 16, 7, 196, 52, 244, 212, 72, 16, 9, 198,
+			12, 84, 129, 56, 84, 201, 66, 0, 8, 67, 8, 81, 80, 21, 0, 47, 6, 195, 85, 5, 80, 65, 6, 195, 12, 193, 84, 15, 0, 7,
+			196, 16, 145, 201, 80, 65, 12, 3, 95, 97, 114, 6, 35, 51, 35, 71, 110, 0, 7, 2, 95, 97, 35, 12, 0, 10, 199, 69, 80, 68,
+			72, 148, 15, 48, 67, 9, 198, 52, 19, 20, 20, 212, 0, 15, 8, 196, 48, 80, 201, 80, 65, 16, 7, 196, 21, 84, 137, 80, 65, 8,
+			197, 20, 226, 201, 17, 80, 15, 7, 196, 5, 67, 5, 80, 15, 7, 196, 4, 67, 69, 80, 15, 0, 8, 67, 40, 22, 154, 21, 0, 47,
+			13, 2, 95, 96, 71, 35, 49, 48, 14, 16, 117, 65, 0, 10, 198, 104, 84, 16, 20, 194, 78, 65, 15, 6, 195, 4, 50, 78, 65, 0,
+			12, 201, 36, 229, 18, 5, 69, 5, 56, 84, 133, 68, 6, 195, 64, 21, 21, 66, 12, 201, 12, 20, 212, 20, 197, 133, 80, 84, 133, 15,
+			0, 9, 198, 77, 83, 206, 4, 227, 192, 65, 9, 198, 77, 65, 70, 4, 227, 192, 65, 9, 198, 12, 20, 141, 20, 195, 192, 66, 9, 198,
+			8, 243, 26, 4, 227, 192, 66, 7, 196, 20, 54, 133, 52, 15, 0, 7, 2, 95, 101, 36, 12, 0, 7, 196, 76, 81, 9, 48, 66, 7,
+			196, 8, 85, 9, 48, 16, 0, 10, 199, 36, 225, 15, 77, 50, 78, 60, 66, 10, 199, 21, 52, 18, 36, 208, 78, 60, 66, 10, 199, 4,
+			195, 15, 28, 114, 78, 60, 66, 7, 196, 24, 19, 142, 60, 77, 9, 198, 76, 48, 76, 36, 113, 82, 66, 9, 198, 65, 33, 67, 4, 209,
+			82, 66, 9, 198, 56, 144, 207, 16, 83, 64, 15, 9, 198, 28, 84, 143, 48, 19, 64, 66, 12, 201, 20, 225, 15, 76, 50, 5, 48, 85,
+			18, 67, 7, 195, 20, 50, 74, 65, 16, 9, 198, 4, 208, 76, 28, 19, 64, 66, 0, 6, 195, 48, 83, 192, 16, 9, 198, 12, 128, 77,
+			8, 84, 153, 16, 0, 9, 198, 72, 245, 21, 48, 83, 192, 66, 7, 196, 64, 148, 129, 52, 65, 9, 198, 20, 212, 9, 72, 83, 192, 66,
+			0, 9, 198, 12, 19, 69, 73, 83, 128, 65, 7, 2, 95, 105, 37, 12, 0, 0, 10, 199, 72, 148, 213, 49, 64, 78, 60, 66, 10, 199,
+			4, 195, 1, 72, 112, 78, 60, 66, 10, 199, 76, 81, 207, 57, 160, 78, 60, 67, 10, 199, 9, 37, 83, 12, 144, 78, 60, 66, 10, 199,
+			9, 33, 83, 12, 144, 78, 60, 66, 7, 196, 64, 83, 1, 28, 65, 7, 196, 52, 86, 9, 12, 16, 7, 196, 16, 83, 5, 28, 65, 0,
+			9, 198, 4, 229, 9, 48, 244, 9, 66, 6, 195, 76, 244, 192, 13, 7, 2, 95, 111, 39, 12, 0, 6, 195, 12, 244, 192, 15, 0, 9,
+			198, 8, 83, 133, 16, 144, 192, 67, 9, 198, 49, 81, 15, 88, 144, 192, 67, 9, 198, 24, 81, 5, 72, 144, 192, 67, 9, 198, 104, 20,
+			133, 88, 144, 192, 15, 9, 198, 81, 34, 67, 32, 80, 192, 15, 7, 196, 64, 145, 86, 20, 15, 10, 198, 60, 197, 18, 20, 211, 196, 67,
+			15, 9, 198, 20, 229, 5, 72, 144, 192, 16, 9, 198, 20, 193, 71, 36, 16, 192, 67, 7, 196, 9, 33, 86, 20, 15, 0, 10, 199, 16,
+			148, 193, 8, 147, 9, 80, 67, 10, 199, 77, 65, 82, 20, 245, 9, 64, 67, 0, 8, 197, 12, 243, 134, 36, 64, 66, 9, 198, 64, 148,
+			212, 60, 192, 64, 66, 9, 198, 4, 227, 205, 4, 192, 64, 66, 14, 3, 95, 104, 101, 36, 71, 14, 16, 6, 117, 49, 110, 0, 8, 197,
+			80, 244, 130, 36, 64, 16, 0, 7, 196, 76, 52, 143, 24, 15, 9, 198, 52, 85, 1, 80, 84, 201, 66, 12, 201, 24, 244, 129, 52, 147,
+			137, 24, 84, 137, 68, 9, 198, 4, 224, 77, 56, 84, 201, 66, 10, 199, 4, 193, 5, 8, 20, 129, 56, 68, 0, 10, 67, 40, 244, 226,
+			21, 101, 115, 0, 47, 13, 68, 64, 244, 212, 4, 48, 6, 110, 89, 47, 35, 0, 7, 196, 80, 243, 22, 20, 15, 10, 199, 76, 83, 5,
+			84, 50, 68, 20, 66, 9, 198, 76, 48, 82, 64, 19, 148, 65, 9, 198, 72, 145, 146, 20, 65, 0, 16, 9, 198, 5, 32, 193, 56, 113,
+			76, 66, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76, 36, 49, 0, 0, 9, 198, 64, 84, 149, 28, 144, 64, 66, 9, 198, 28, 147,
+			210, 28, 144, 64, 65, 18, 70, 72, 144, 86, 88, 144, 64, 14, 16, 37, 35, 84, 12, 6, 125, 35, 0, 9, 198, 52, 16, 197, 72, 144,
+			64, 66, 9, 198, 36, 66, 79, 104, 144, 64, 68, 9, 198, 104, 83, 143, 8, 144, 64, 15, 9, 198, 81, 32, 78, 88, 144, 64, 66, 9,
+			198, 76, 147, 143, 64, 144, 64, 15, 9, 198, 72, 81, 193, 48, 144, 64, 67, 9, 198, 65, 83, 9, 104, 144, 64, 67, 9, 198, 64, 83,
+			148, 5, 67, 0, 65, 9, 198, 64, 83, 148, 5, 67, 0, 15, 9, 198, 52, 148, 197, 72, 144, 64, 66, 9, 198, 36, 225, 129, 52, 144,
+			64, 66, 9, 198, 25, 83, 137, 88, 144, 64, 67, 9, 198, 24, 21, 71, 48, 144, 64, 66, 9, 198, 21, 161, 67, 32, 144, 64, 67, 9,
+			198, 21, 84, 129, 76, 144, 64, 67, 9, 198, 21, 81, 15, 12, 144, 64, 15, 9, 198, 21, 52, 5, 72, 144, 64, 66, 6, 195, 16, 246,
+			154, 16, 9, 198, 16, 21, 1, 72, 144, 64, 67, 9, 198, 13, 84, 129, 104, 144, 64, 67, 9, 198, 12, 20, 143, 56, 144, 64, 67, 9,
+			198, 12, 19, 15, 72, 144, 64, 67, 9, 198, 5, 64, 83, 76, 144, 64, 67, 9, 198, 5, 53, 5, 72, 144, 64, 66, 9, 198, 5, 37,
+			5, 72, 144, 64, 66, 9, 198, 5, 35, 79, 56, 144, 64, 67, 9, 198, 5, 34, 84, 52, 144, 64, 67, 10, 198, 5, 33, 5, 76, 144,
+			64, 66, 15, 9, 198, 5, 32, 197, 88, 144, 64, 15, 9, 198, 4, 209, 71, 48, 144, 64, 15, 9, 198, 4, 192, 129, 56, 144, 64, 67,
+			9, 198, 4, 84, 143, 88, 144, 64, 67, 9, 198, 4, 32, 129, 104, 144, 64, 67, 0, 0, 8, 197, 80, 147, 80, 4, 224, 65, 7, 196,
+			73, 83, 212, 36, 15, 9, 198, 72, 17, 206, 5, 65, 76, 16, 8, 197, 64, 21, 20, 36, 224, 65, 8, 197, 36, 229, 15, 72, 224, 16,
+			9, 198, 12, 243, 134, 21, 69, 0, 15, 0, 7, 2, 95, 117, 40, 12, 0, 0, 10, 199, 9, 32, 67, 12, 144, 78, 60, 66, 8, 197,
+			80, 19, 148, 4, 192, 65, 9, 198, 16, 243, 9, 4, 227, 214, 15, 8, 197, 13, 35, 212, 4, 192, 65, 8, 197, 12, 243, 132, 36, 192,
+			15, 8, 197, 5, 84, 133, 60, 192, 67, 0, 8, 67, 92, 245, 192, 21, 0, 47, 20, 2, 95, 123, 35, 48, 4, 36, 51, 47, 35, 81,
+			14, 16, 6, 35, 83, 12, 35, 0, 11, 200, 64, 145, 86, 21, 1, 76, 4, 112, 67, 7, 195, 52, 244, 197, 66, 15, 7, 196, 21, 34,
+			90, 104, 65, 6, 195, 16, 244, 197, 15, 9, 198, 8, 20, 149, 52, 147, 137, 66, 0, 20, 4, 95, 226, 128, 188, 36, 89, 49, 55, 35,
+			65, 35, 123, 37, 6, 110, 50, 36, 0, 7, 196, 80, 85, 20, 36, 15, 9, 198, 52, 20, 129, 52, 19, 192, 67, 10, 199, 36, 229, 5,
+			72, 209, 68, 36, 15, 8, 197, 24, 19, 3, 60, 224, 66, 9, 198, 8, 19, 131, 60, 227, 212, 15, 0, 9, 198, 12, 144, 83, 13, 83,
+			128, 79, 21, 4, 95, 226, 128, 179, 72, 6, 110, 48, 12, 37, 39, 15, 6, 35, 48, 37, 76, 36, 0, 12, 201, 88, 147, 12, 5, 52,
+			5, 12, 147, 211, 16, 6, 195, 80, 241, 0, 15, 15, 203, 12, 243, 80, 85, 64, 90, 36, 243, 129, 48, 80, 69, 16, 0, 9, 198, 77,
+			1, 90, 104, 19, 0, 65, 10, 199, 72, 147, 65, 56, 112, 78, 60, 66, 16, 3, 95, 106, 97, 75, 35, 48, 12, 39, 50, 6, 36, 88,
+			109, 0, 14, 4, 95, 226, 128, 178, 48, 14, 16, 6, 37, 65, 37, 0, 10, 199, 72, 147, 143, 64, 149, 5, 12, 15, 7, 196, 64, 243,
+			9, 76, 16, 9, 198, 64, 144, 90, 104, 243, 0, 66, 10, 199, 12, 147, 143, 64, 149, 5, 12, 15, 10, 199, 5, 32, 201, 64, 83, 1,
+			28, 67, 0, 7, 196, 104, 81, 137, 72, 65, 7, 196, 88, 147, 143, 88, 15, 9, 198, 80, 148, 129, 56, 226, 65, 67, 10, 198, 61, 37,
+			5, 57, 50, 65, 66, 15, 7, 195, 60, 20, 201, 65, 15, 9, 198, 52, 243, 133, 28, 194, 65, 15, 7, 196, 48, 144, 133, 72, 65, 7,
+			196, 48, 144, 133, 72, 65, 7, 196, 48, 16, 129, 72, 65, 9, 198, 28, 19, 66, 85, 50, 65, 66, 9, 198, 21, 2, 70, 4, 226, 65,
+			68, 9, 198, 16, 144, 67, 60, 226, 65, 68, 11, 200, 12, 84, 131, 61, 2, 84, 20, 48, 15, 9, 198, 12, 19, 148, 4, 36, 137, 65,
+			10, 199, 12, 19, 12, 36, 116, 129, 24, 66, 9, 198, 5, 4, 129, 77, 50, 65, 67, 9, 198, 4, 224, 82, 12, 130, 65, 67, 18, 70,
+			4, 195, 5, 49, 82, 65, 35, 55, 55, 109, 55, 6, 40, 37, 35, 0, 0, 12, 201, 72, 17, 4, 61, 4, 9, 4, 227, 192, 66, 12,
+			201, 16, 148, 212, 36, 225, 213, 4, 227, 192, 66, 15, 70, 5, 96, 78, 12, 84, 192, 35, 84, 6, 35, 50, 89, 0, 14, 3, 95, 107,
+			111, 49, 39, 34, 36, 6, 35, 50, 110, 0, 9, 198, 72, 80, 193, 72, 81, 0, 15, 6, 195, 64, 85, 20, 15, 6, 195, 36, 49, 84,
+			65, 9, 198, 5, 161, 79, 81, 35, 208, 67, 0, 12, 201, 36, 212, 12, 20, 209, 78, 80, 147, 143, 67, 9, 198, 21, 48, 83, 64, 84,
+			128, 66, 14, 3, 95, 107, 110, 49, 6, 35, 50, 12, 35, 72, 35, 0, 19, 2, 95, 125, 49, 57, 4, 40, 88, 35, 81, 14, 16, 6,
+			35, 83, 12, 35, 0, 6, 195, 80, 245, 0, 15, 7, 196, 28, 83, 73, 80, 65, 0, 6, 195, 80, 244, 0, 15, 10, 199, 77, 64, 78,
+			37, 51, 1, 60, 67, 9, 198, 52, 243, 5, 12, 243, 0, 15, 9, 198, 52, 148, 212, 72, 19, 0, 66, 0, 11, 70, 24, 148, 133, 24,
+			246, 0, 21, 0, 47, 10, 199, 88, 19, 16, 4, 229, 5, 56, 16, 10, 199, 76, 21, 143, 72, 115, 129, 56, 67, 8, 197, 12, 244, 148,
+			21, 48, 66, 0, 22, 4, 95, 226, 128, 180, 47, 14, 16, 6, 37, 48, 55, 39, 15, 6, 35, 48, 37, 76, 36, 0, 6, 195, 36, 98,
+			84, 65, 23, 73, 28, 84, 143, 28, 194, 70, 36, 51, 192, 75, 109, 51, 39, 61, 6, 37, 83, 37, 49, 39, 0, 9, 198, 21, 2, 84,
+			72, 149, 0, 66, 9, 198, 12, 243, 80, 36, 85, 0, 15, 9, 198, 4, 193, 129, 8, 85, 0, 15, 0, 7, 196, 48, 147, 73, 80, 65,
+			6, 195, 64, 84, 195, 15, 6, 195, 64, 84, 195, 15, 6, 195, 12, 244, 195, 15, 6, 195, 8, 244, 195, 15, 0, 16, 3, 95, 107, 97,
+			75, 36, 110, 14, 16, 75, 6, 35, 50, 110, 0, 6, 195, 28, 246, 154, 16, 0, 0, 9, 198, 76, 81, 213, 60, 227, 192, 65, 9, 198,
+			76, 19, 20, 4, 227, 192, 65, 9, 198, 76, 19, 16, 4, 227, 192, 65, 9, 198, 13, 33, 68, 4, 227, 192, 65, 9, 198, 8, 19, 12,
+			4, 227, 192, 65, 9, 198, 4, 114, 84, 36, 227, 192, 65, 9, 198, 4, 114, 84, 4, 227, 192, 65, 9, 198, 76, 20, 129, 56, 227, 192,
+			78, 9, 198, 72, 148, 208, 61, 53, 0, 16, 9, 197, 64, 243, 12, 36, 224, 65, 15, 8, 197, 9, 32, 68, 4, 224, 65, 0, 0, 9,
+			198, 64, 243, 9, 24, 83, 64, 15, 11, 199, 64, 193, 88, 36, 115, 1, 76, 65, 15, 9, 198, 52, 16, 193, 16, 19, 64, 67, 0, 10,
+			199, 65, 35, 205, 21, 69, 5, 72, 66, 10, 199, 12, 243, 142, 21, 69, 5, 72, 66, 9, 198, 80, 83, 5, 24, 147, 13, 67, 9, 198,
+			52, 147, 12, 20, 227, 137, 15, 10, 199, 20, 194, 67, 61, 69, 5, 72, 15, 10, 199, 12, 20, 212, 20, 195, 1, 72, 67, 0, 5, 130,
+			105, 58, 49, 8, 196, 24, 244, 211, 36, 77, 15, 9, 198, 81, 34, 80, 61, 53, 0, 16, 10, 199, 76, 83, 5, 84, 50, 68, 36, 66,
+			8, 197, 64, 144, 68, 20, 224, 66, 8, 197, 16, 243, 6, 36, 224, 66, 0, 10, 198, 12, 83, 1, 16, 243, 128, 65, 16, 0, 6, 194,
+			84, 224, 76, 46, 10, 199, 81, 32, 84, 4, 194, 65, 76, 67, 8, 197, 65, 35, 198, 36, 192, 66, 11, 200, 65, 34, 77, 60, 113, 78,
+			37, 64, 67, 7, 195, 4, 211, 210, 66, 16, 0, 10, 199, 12, 243, 77, 21, 69, 5, 72, 66, 10, 199, 4, 193, 88, 4, 225, 5, 72,
+			67, 10, 199, 64, 20, 211, 20, 113, 197, 72, 67, 10, 199, 77, 84, 16, 61, 37, 5, 72, 66, 9, 198, 81, 34, 70, 60, 115, 9, 15,
+			7, 196, 80, 83, 5, 24, 65, 10, 199, 77, 64, 84, 60, 193, 5, 72, 15, 10, 199, 72, 147, 80, 72, 245, 133, 72, 66, 0, 7, 196,
+			76, 51, 208, 4, 16, 7, 196, 76, 16, 200, 4, 66, 9, 198, 12, 83, 148, 72, 144, 192, 15, 9, 198, 4, 224, 67, 60, 225, 0, 15,
+			0, 10, 199, 88, 145, 5, 60, 51, 9, 64, 68, 10, 199, 64, 20, 211, 5, 65, 77, 64, 15, 0, 8, 197, 76, 244, 146, 36, 64, 66,
+			8, 197, 16, 145, 134, 36, 64, 66, 9, 198, 13, 33, 77, 60, 224, 64, 66, 9, 197, 64, 84, 131, 34, 32, 76, 28, 8, 197, 80, 244,
+			144, 20, 64, 15, 10, 199, 80, 83, 5, 88, 145, 5, 60, 67, 8, 197, 64, 84, 137, 60, 64, 66, 7, 196, 49, 83, 65, 12, 66, 8,
+			197, 12, 244, 146, 36, 64, 66, 0, 9, 198, 84, 226, 86, 60, 50, 5, 66, 6, 195, 25, 32, 64, 76, 14, 3, 95, 109, 108, 65, 35,
+			55, 6, 117, 55, 35, 65, 0, 7, 196, 77, 68, 143, 24, 15, 12, 201, 56, 144, 193, 72, 17, 213, 20, 228, 197, 16, 10, 199, 5, 32,
+			207, 12, 244, 197, 56, 16, 0, 10, 199, 4, 225, 18, 60, 209, 68, 4, 66, 10, 199, 81, 33, 80, 64, 145, 68, 20, 15, 10, 199, 80,
+			144, 133, 72, 144, 68, 20, 67, 8, 196, 76, 86, 154, 20, 66, 15, 7, 196, 65, 35, 214, 20, 15, 7, 196, 64, 193, 66, 20, 15, 9,
+			198, 24, 192, 77, 20, 224, 192, 16, 8, 196, 12, 17, 134, 20, 66, 15, 10, 199, 5, 32, 200, 36, 209, 68, 20, 15, 0, 13, 3, 95,
+			111, 114, 39, 12, 51, 6, 37, 35, 12, 0, 11, 200, 88, 83, 15, 12, 148, 5, 16, 80, 67, 0, 14, 3, 95, 104, 121, 35, 14, 16,
+			65, 6, 36, 50, 110, 0, 9, 198, 76, 51, 210, 16, 144, 64, 66, 9, 198, 73, 85, 5, 56, 144, 64, 15, 9, 198, 65, 32, 83, 76,
+			80, 64, 65, 9, 198, 64, 243, 9, 104, 144, 64, 67, 9, 198, 64, 20, 143, 16, 144, 64, 67, 9, 198, 61, 37, 9, 28, 144, 64, 66,
+			9, 198, 56, 145, 197, 72, 144, 64, 66, 9, 198, 52, 83, 15, 16, 144, 64, 67, 9, 198, 52, 21, 5, 72, 144, 64, 66, 9, 198, 48,
+			149, 1, 56, 144, 64, 67, 9, 198, 48, 81, 193, 104, 144, 64, 67, 10, 198, 16, 243, 15, 52, 144, 64, 66, 15, 8, 197, 12, 244, 146,
+			20, 64, 15, 9, 198, 8, 20, 143, 56, 144, 64, 67, 9, 198, 5, 53, 5, 56, 144, 64, 67, 9, 198, 5, 33, 207, 88, 144, 64, 15,
+			9, 198, 4, 227, 211, 52, 144, 64, 67, 9, 198, 4, 193, 207, 88, 144, 64, 15, 0, 10, 199, 80, 83, 196, 61, 50, 65, 56, 69, 12,
+			201, 72, 243, 80, 37, 48, 193, 80, 243, 5, 67, 7, 196, 72, 85, 9, 56, 65, 6, 195, 61, 68, 133, 16, 7, 196, 48, 19, 73, 56,
+			65, 0, 14, 69, 12, 131, 208, 36, 224, 91, 39, 48, 6, 109, 68, 0, 7, 196, 60, 48, 200, 36, 15, 0, 9, 198, 12, 144, 83, 13,
+			83, 143, 66, 0, 12, 201, 12, 243, 148, 72, 17, 4, 36, 50, 64, 67, 8, 197, 28, 83, 148, 36, 192, 66, 8, 197, 88, 19, 132, 4,
+			192, 65, 9, 197, 76, 241, 199, 60, 192, 66, 16, 8, 197, 76, 19, 132, 4, 192, 65, 12, 201, 69, 80, 84, 80, 244, 132, 36, 50, 64,
+			16, 7, 196, 52, 16, 193, 60, 66, 7, 196, 12, 16, 193, 60, 66, 11, 200, 4, 52, 85, 4, 100, 133, 16, 64, 16, 0, 18, 70, 28,
+			20, 129, 57, 162, 69, 81, 35, 51, 35, 50, 123, 6, 37, 36, 0, 19, 70, 12, 20, 133, 77, 66, 69, 49, 35, 14, 16, 36, 89, 47,
+			6, 37, 36, 0, 18, 70, 4, 211, 137, 77, 66, 69, 35, 65, 50, 37, 89, 47, 6, 37, 36, 0, 6, 195, 65, 84, 133, 77, 8, 197,
+			8, 147, 212, 61, 0, 66, 0, 7, 196, 20, 66, 76, 36, 65, 8, 197, 64, 20, 212, 20, 224, 65, 8, 197, 12, 241, 207, 72, 224, 16,
+			8, 197, 5, 32, 71, 60, 224, 67, 8, 197, 4, 48, 197, 56, 224, 16, 0, 9, 198, 4, 193, 197, 9, 34, 67, 15, 0, 10, 199, 64,
+			147, 129, 12, 245, 5, 12, 15, 9, 198, 52, 144, 200, 36, 83, 0, 66, 6, 195, 48, 84, 194, 15, 9, 198, 28, 144, 82, 4, 37, 66,
+			67, 8, 197, 24, 244, 131, 60, 192, 16, 8, 197, 24, 16, 137, 60, 192, 66, 8, 197, 12, 84, 131, 60, 192, 16, 10, 199, 8, 144, 140,
+			36, 245, 5, 12, 15, 0, 7, 196, 80, 19, 15, 72, 16, 9, 198, 76, 145, 206, 61, 34, 65, 67, 12, 201, 76, 51, 5, 72, 241, 5,
+			72, 210, 65, 68, 9, 198, 56, 85, 83, 81, 34, 65, 65, 9, 198, 20, 229, 18, 61, 2, 65, 67, 9, 198, 20, 211, 198, 36, 194, 65,
+			68, 10, 198, 12, 147, 9, 20, 114, 65, 67, 15, 10, 198, 4, 48, 68, 20, 210, 65, 67, 15, 0, 6, 195, 36, 210, 84, 65, 9, 198,
+			69, 80, 76, 12, 244, 192, 15, 9, 198, 60, 198, 77, 64, 244, 192, 65, 9, 198, 52, 20, 137, 64, 244, 192, 15, 9, 198, 8, 243, 129,
+			72, 48, 68, 66, 9, 198, 4, 229, 9, 28, 20, 192, 67, 9, 198, 4, 211, 210, 28, 244, 192, 67, 0, 6, 195, 104, 85, 0, 15, 11,
+			200, 80, 20, 132, 36, 116, 129, 16, 144, 66, 0, 13, 202, 72, 20, 16, 72, 84, 197, 57, 64, 78, 60, 67, 6, 195, 84, 244, 0, 15,
+			7, 196, 8, 243, 143, 76, 15, 0, 7, 196, 52, 150, 5, 72, 65, 7, 196, 8, 246, 5, 72, 65, 12, 201, 64, 84, 195, 5, 52, 197,
+			72, 243, 9, 67, 7, 196, 12, 243, 15, 72, 16, 0, 34, 77, 60, 194, 71, 60, 65, 78, 17, 35, 199, 48, 147, 205, 4, 110, 55, 37,
+			81, 39, 72, 36, 50, 72, 14, 16, 39, 61, 6, 37, 110, 65, 35, 0, 6, 195, 20, 66, 84, 65, 10, 198, 12, 244, 141, 60, 228, 192,
+			66, 15, 7, 196, 12, 244, 134, 84, 66, 6, 195, 4, 226, 84, 65, 6, 195, 4, 194, 84, 65, 10, 198, 4, 65, 5, 8, 149, 0, 66,
+			16, 9, 198, 4, 52, 143, 8, 21, 0, 66, 0, 10, 198, 61, 35, 211, 12, 244, 0, 66, 15, 9, 198, 36, 224, 197, 57, 68, 128, 15,
+			9, 198, 21, 128, 197, 57, 68, 128, 15, 12, 201, 12, 192, 86, 36, 49, 77, 8, 19, 0, 67, 0, 10, 199, 72, 145, 80, 36, 195, 199,
+			60, 67, 12, 3, 95, 104, 105, 107, 6, 126, 50, 72, 37, 0, 0, 9, 198, 56, 244, 207, 12, 243, 73, 15, 0, 10, 199, 24, 245, 15,
+			29, 32, 70, 4, 66, 8, 197, 81, 32, 80, 4, 224, 65, 11, 200, 60, 197, 18, 20, 240, 197, 4, 224, 68, 8, 197, 28, 144, 86, 20,
+			224, 16, 6, 195, 20, 67, 204, 15, 8, 197, 4, 229, 5, 56, 224, 16, 0, 9, 198, 88, 148, 201, 80, 19, 143, 65, 9, 198, 76, 84,
+			1, 72, 147, 143, 66, 9, 198, 52, 19, 135, 36, 19, 143, 65, 9, 198, 20, 48, 197, 16, 19, 143, 66, 9, 198, 16, 145, 201, 80, 19,
+			143, 65, 9, 198, 16, 80, 201, 16, 19, 143, 66, 9, 198, 12, 130, 85, 16, 19, 143, 65, 9, 198, 48, 20, 131, 36, 19, 143, 66, 9,
+			198, 12, 244, 131, 36, 19, 143, 66, 9, 198, 76, 83, 73, 80, 243, 143, 67, 11, 200, 5, 32, 200, 20, 243, 15, 28, 144, 67, 9, 198,
+			72, 80, 201, 65, 35, 195, 66, 0, 8, 197, 12, 243, 147, 60, 192, 66, 12, 201, 77, 66, 76, 61, 3, 201, 16, 82, 64, 69, 8, 197,
+			76, 84, 137, 60, 192, 66, 12, 200, 28, 195, 194, 36, 49, 70, 4, 192, 67, 15, 12, 200, 21, 65, 82, 60, 49, 70, 4, 192, 68, 15,
+			0, 20, 71, 64, 16, 197, 52, 18, 197, 72, 48, 118, 89, 65, 6, 118, 49, 109, 14, 16, 0, 6, 195, 81, 83, 192, 76, 9, 198, 5,
+			52, 197, 52, 147, 137, 66, 0, 9, 198, 104, 145, 199, 85, 32, 84, 65, 8, 197, 88, 20, 133, 56, 224, 16, 8, 197, 52, 243, 20, 20,
+			224, 16, 9, 197, 24, 195, 210, 36, 224, 65, 16, 8, 197, 16, 144, 67, 60, 224, 66, 9, 198, 12, 244, 129, 105, 160, 84, 66, 8, 197,
+			12, 19, 73, 60, 224, 65, 0, 9, 198, 56, 21, 137, 28, 19, 143, 65, 9, 198, 36, 225, 9, 12, 19, 143, 65, 9, 198, 5, 36, 133,
+			12, 19, 143, 66, 12, 201, 69, 80, 68, 72, 147, 1, 80, 84, 128, 67, 7, 195, 21, 36, 143, 66, 15, 0, 8, 197, 104, 240, 195, 60,
+			192, 15, 8, 197, 76, 84, 150, 4, 192, 66, 8, 197, 72, 240, 195, 60, 192, 15, 8, 197, 64, 83, 132, 84, 192, 15, 10, 199, 52, 147,
+			132, 5, 81, 193, 76, 65, 8, 197, 9, 81, 134, 4, 192, 65, 0, 11, 199, 12, 243, 150, 21, 37, 5, 72, 66, 47, 22, 71, 32, 19,
+			66, 85, 33, 197, 72, 107, 35, 65, 71, 6, 40, 14, 16, 81, 36, 14, 16, 0, 21, 71, 12, 243, 148, 4, 147, 133, 72, 49, 39, 50,
+			47, 6, 118, 50, 109, 14, 16, 0, 47, 10, 199, 9, 83, 12, 16, 246, 133, 72, 66, 6, 195, 64, 84, 201, 15, 10, 199, 56, 242, 67,
+			5, 69, 1, 72, 67, 11, 200, 24, 245, 15, 72, 149, 15, 12, 48, 16, 10, 199, 12, 243, 5, 61, 69, 5, 72, 15, 0, 12, 201, 72,
+			17, 134, 36, 117, 82, 4, 227, 192, 67, 12, 201, 12, 243, 134, 36, 117, 82, 4, 227, 192, 67, 11, 70, 16, 81, 129, 84, 197, 0, 21,
+			0, 47, 7, 196, 24, 83, 3, 20, 16, 0, 0, 17, 70, 65, 83, 9, 104, 145, 64, 48, 40, 55, 37, 123, 6, 37, 36, 0, 9, 198,
+			52, 16, 197, 72, 145, 64, 66, 17, 70, 36, 66, 79, 104, 145, 64, 37, 72, 37, 39, 123, 6, 125, 36, 0, 9, 198, 65, 33, 67, 60,
+			49, 64, 15, 9, 198, 64, 19, 148, 4, 195, 206, 67, 12, 201, 61, 33, 129, 56, 245, 18, 60, 98, 64, 15, 10, 198, 5, 85, 15, 56,
+			241, 64, 67, 15, 0, 10, 198, 88, 84, 218, 65, 33, 77, 66, 16, 9, 198, 52, 84, 137, 77, 65, 77, 15, 6, 195, 21, 52, 192, 16,
+			0, 10, 199, 88, 84, 195, 61, 98, 76, 20, 67, 9, 198, 76, 147, 129, 28, 241, 192, 15, 9, 198, 56, 21, 70, 72, 17, 192, 65, 14,
+			68, 49, 80, 201, 4, 55, 40, 76, 6, 37, 12, 35, 0, 0, 11, 200, 80, 83, 73, 77, 67, 195, 48, 80, 66, 12, 201, 65, 35, 212,
+			60, 49, 82, 20, 36, 128, 67, 0, 9, 198, 72, 85, 143, 12, 129, 64, 65, 9, 198, 24, 21, 9, 12, 129, 64, 66, 9, 198, 100, 19,
+			213, 56, 65, 64, 68, 9, 198, 80, 244, 130, 60, 193, 64, 16, 9, 198, 76, 84, 150, 36, 193, 64, 66, 10, 198, 52, 81, 193, 12, 193,
+			64, 65, 15, 9, 198, 48, 84, 85, 36, 193, 64, 15, 9, 198, 21, 65, 79, 12, 193, 64, 66, 9, 198, 21, 34, 71, 60, 225, 64, 66,
+			9, 198, 16, 147, 205, 20, 65, 64, 15, 9, 198, 13, 84, 212, 60, 65, 64, 15, 9, 198, 8, 21, 9, 12, 193, 64, 65, 9, 198, 4,
+			225, 77, 60, 225, 64, 15, 9, 198, 4, 65, 76, 36, 225, 64, 16, 0, 8, 67, 9, 149, 5, 21, 0, 47, 6, 195, 13, 5, 64, 13,
+			15, 67, 93, 117, 192, 6, 84, 40, 6, 84, 40, 6, 84, 40, 0, 0, 13, 68, 5, 48, 201, 36, 6, 35, 89, 49, 126, 37, 0, 9,
+			198, 65, 35, 199, 21, 69, 0, 15, 9, 198, 64, 19, 131, 21, 69, 0, 16, 0, 9, 198, 76, 32, 82, 8, 19, 143, 65, 9, 198, 72,
+			148, 5, 80, 19, 143, 66, 9, 198, 72, 80, 201, 80, 19, 143, 65, 9, 198, 52, 244, 212, 72, 19, 143, 65, 9, 198, 17, 80, 137, 80,
+			19, 143, 65, 9, 198, 12, 19, 66, 36, 19, 143, 65, 9, 198, 5, 96, 78, 104, 19, 143, 66, 9, 198, 4, 195, 5, 28, 19, 143, 66,
+			9, 198, 52, 19, 131, 36, 19, 143, 66, 12, 201, 76, 52, 137, 12, 50, 9, 60, 194, 79, 68, 11, 200, 80, 244, 142, 5, 33, 67, 12,
+			144, 15, 7, 196, 24, 83, 143, 48, 66, 10, 199, 20, 195, 5, 77, 3, 206, 80, 15, 0, 9, 198, 52, 85, 20, 21, 35, 0, 65, 7,
+			196, 21, 32, 78, 60, 65, 9, 198, 64, 19, 13, 4, 227, 214, 15, 0, 11, 200, 72, 147, 143, 52, 147, 129, 56, 240, 66, 12, 200, 52,
+			145, 204, 36, 244, 129, 56, 240, 66, 16, 11, 200, 16, 84, 201, 16, 84, 137, 56, 240, 66, 11, 200, 16, 84, 201, 16, 84, 129, 56, 240,
+			66, 12, 200, 12, 243, 135, 48, 240, 129, 56, 240, 66, 16, 11, 67, 41, 85, 133, 57, 6, 40, 84, 36, 0, 12, 201, 36, 226, 78, 80,
+			84, 146, 61, 69, 0, 16, 10, 199, 12, 20, 15, 48, 21, 143, 72, 16, 0, 13, 68, 61, 35, 65, 36, 39, 14, 16, 65, 6, 117, 0,
+			10, 199, 80, 84, 1, 56, 80, 200, 36, 15, 9, 198, 77, 3, 5, 56, 66, 68, 15, 10, 199, 52, 144, 210, 60, 98, 76, 52, 67, 12,
+			201, 24, 243, 148, 4, 224, 70, 72, 81, 4, 16, 0, 9, 198, 76, 98, 79, 72, 147, 143, 66, 9, 198, 65, 33, 83, 76, 19, 143, 65,
+			9, 198, 5, 69, 9, 72, 147, 143, 66, 7, 196, 16, 80, 143, 48, 65, 9, 198, 8, 20, 137, 80, 243, 143, 67, 12, 201, 76, 83, 142,
+			4, 50, 5, 72, 144, 128, 68, 7, 196, 76, 80, 207, 48, 15, 7, 196, 64, 240, 207, 48, 66, 19, 70, 12, 148, 131, 84, 149, 15, 76,
+			37, 14, 16, 49, 6, 40, 37, 47, 39, 0, 0, 12, 201, 72, 144, 197, 88, 149, 15, 72, 144, 64, 69, 15, 3, 95, 109, 121, 71, 37,
+			14, 16, 65, 6, 35, 50, 110, 0, 16, 3, 95, 115, 105, 89, 126, 68, 81, 35, 55, 6, 36, 88, 36, 0, 5, 194, 88, 240, 15, 0,
+			7, 196, 84, 192, 197, 72, 65, 7, 196, 72, 83, 79, 72, 65, 12, 201, 37, 3, 195, 48, 244, 137, 17, 34, 65, 69, 12, 201, 25, 32,
+			78, 12, 144, 67, 61, 37, 0, 16, 11, 200, 21, 35, 69, 56, 85, 84, 36, 48, 67, 10, 198, 4, 48, 78, 80, 241, 9, 67, 15, 0,
+			10, 199, 12, 243, 80, 4, 114, 78, 36, 66, 8, 197, 92, 21, 20, 61, 32, 16, 8, 197, 80, 19, 77, 5, 32, 65, 8, 197, 76, 145,
+			206, 61, 32, 16, 6, 195, 20, 66, 80, 65, 0, 16, 70, 76, 50, 65, 80, 244, 128, 91, 37, 35, 47, 6, 39, 51, 0, 6, 195, 88,
+			245, 0, 15, 11, 200, 80, 85, 18, 5, 32, 200, 36, 16, 67, 9, 198, 76, 83, 65, 24, 244, 128, 66, 11, 200, 64, 244, 148, 4, 99,
+			199, 48, 144, 15, 11, 200, 64, 19, 147, 64, 84, 141, 36, 16, 67, 7, 196, 36, 115, 143, 80, 15, 9, 198, 36, 115, 137, 80, 244, 128,
+			65, 12, 201, 36, 68, 143, 20, 193, 84, 81, 34, 67, 15, 12, 201, 24, 245, 15, 20, 193, 84, 81, 34, 67, 15, 11, 200, 21, 35, 212,
+			60, 208, 78, 36, 16, 69, 0, 8, 197, 61, 68, 129, 57, 64, 65, 8, 197, 52, 83, 69, 57, 64, 15, 9, 198, 9, 33, 83, 4, 243,
+			0, 66, 9, 198, 8, 144, 84, 32, 195, 206, 65, 0, 9, 198, 76, 20, 146, 60, 50, 0, 66, 0, 9, 198, 64, 19, 148, 60, 99, 204,
+			66, 15, 69, 64, 192, 89, 21, 32, 48, 55, 6, 118, 109, 14, 16, 0, 8, 197, 76, 49, 84, 81, 32, 15, 9, 198, 76, 19, 79, 76,
+			21, 0, 66, 8, 197, 21, 48, 69, 17, 32, 15, 7, 196, 13, 80, 195, 84, 66, 6, 195, 8, 83, 212, 15, 9, 198, 5, 69, 5, 56,
+			67, 204, 15, 6, 195, 4, 34, 84, 65, 0, 9, 198, 64, 84, 144, 21, 69, 79, 15, 0, 8, 197, 88, 83, 132, 37, 64, 65, 8, 197,
+			24, 84, 142, 21, 64, 66, 0, 10, 199, 88, 84, 208, 5, 50, 65, 56, 67, 0, 11, 67, 52, 18, 76, 65, 6, 36, 37, 55, 0, 9,
+			3, 95, 108, 111, 55, 6, 114, 0, 10, 199, 76, 83, 69, 77, 65, 78, 20, 66, 7, 196, 12, 21, 1, 36, 66, 0, 11, 200, 64, 84,
+			141, 21, 69, 9, 52, 144, 66, 0, 8, 196, 72, 244, 197, 60, 65, 15, 0, 11, 200, 36, 228, 212, 4, 195, 1, 56, 240, 66, 11, 200,
+			21, 48, 83, 64, 84, 129, 56, 240, 66, 24, 72, 84, 197, 18, 5, 53, 79, 56, 240, 40, 55, 47, 14, 16, 35, 15, 89, 40, 6, 110,
+			50, 39, 0, 9, 198, 64, 192, 83, 52, 241, 9, 15, 9, 198, 52, 81, 193, 64, 241, 9, 15, 0, 12, 201, 72, 17, 199, 37, 83, 135,
+			4, 227, 192, 66, 10, 199, 80, 148, 129, 64, 145, 68, 36, 15, 10, 199, 64, 147, 142, 37, 1, 68, 36, 66, 8, 197, 12, 243, 15, 28,
+			224, 15, 9, 198, 5, 32, 71, 61, 53, 0, 16, 0, 7, 196, 4, 148, 143, 48, 66, 0, 13, 201, 24, 245, 15, 72, 84, 15, 73, 65,
+			82, 68, 47, 12, 3, 95, 116, 97, 47, 6, 35, 65, 126, 55, 0, 8, 197, 52, 83, 147, 60, 192, 15, 12, 201, 12, 130, 85, 16, 147,
+			5, 81, 65, 82, 15, 8, 197, 12, 19, 132, 20, 192, 16, 0, 6, 195, 80, 84, 201, 15, 9, 198, 36, 225, 133, 48, 144, 197, 67, 9,
+			198, 20, 97, 137, 12, 16, 197, 67, 6, 195, 16, 84, 201, 15, 9, 198, 12, 244, 5, 64, 241, 9, 15, 9, 198, 5, 37, 5, 24, 144,
+			197, 16, 0, 8, 196, 76, 84, 137, 4, 65, 16, 8, 196, 76, 84, 201, 4, 65, 15, 7, 196, 72, 84, 201, 4, 65, 7, 196, 52, 244,
+			137, 4, 66, 11, 199, 28, 85, 19, 20, 208, 78, 36, 66, 15, 6, 195, 24, 85, 68, 65, 7, 196, 5, 33, 5, 4, 65, 0, 7, 196,
+			81, 34, 79, 16, 65, 0, 16, 70, 12, 128, 82, 48, 145, 64, 76, 6, 35, 14, 16, 55, 37, 0, 18, 70, 64, 20, 143, 16, 145, 64,
+			48, 35, 14, 16, 39, 72, 6, 37, 36, 0, 17, 70, 52, 83, 15, 16, 145, 64, 65, 36, 55, 39, 72, 6, 37, 36, 0, 9, 198, 48,
+			16, 210, 36, 209, 64, 65, 10, 199, 8, 83, 133, 24, 144, 201, 60, 67, 13, 3, 95, 116, 101, 47, 6, 109, 55, 40, 81, 40, 0, 9,
+			198, 76, 241, 134, 36, 49, 64, 15, 9, 198, 76, 85, 20, 36, 209, 64, 65, 9, 198, 76, 81, 213, 4, 49, 64, 66, 10, 198, 76, 50,
+			5, 81, 66, 78, 65, 16, 9, 198, 64, 84, 142, 36, 49, 64, 66, 9, 198, 61, 33, 70, 36, 49, 64, 16, 9, 198, 56, 20, 148, 20,
+			49, 64, 15, 9, 198, 52, 20, 211, 36, 209, 64, 65, 9, 198, 37, 53, 18, 36, 49, 64, 65, 6, 195, 28, 147, 214, 16, 6, 195, 28,
+			83, 214, 65, 9, 198, 24, 244, 142, 4, 49, 64, 66, 9, 198, 5, 52, 201, 20, 209, 64, 15, 0, 6, 195, 76, 144, 64, 76, 10, 67,
+			12, 144, 64, 76, 6, 37, 35, 0, 12, 201, 65, 35, 195, 20, 66, 77, 20, 229, 0, 15, 0, 15, 68, 52, 20, 137, 4, 65, 35, 14,
+			16, 6, 37, 38, 35, 0, 7, 196, 80, 240, 137, 4, 66, 9, 198, 77, 68, 143, 48, 17, 192, 65, 7, 196, 52, 84, 211, 20, 15, 10,
+			199, 36, 225, 129, 57, 66, 76, 20, 67, 9, 198, 28, 149, 71, 28, 147, 204, 65, 7, 196, 24, 240, 137, 4, 66, 9, 198, 16, 80, 193,
+			48, 241, 192, 66, 9, 198, 12, 21, 1, 48, 241, 192, 66, 11, 199, 12, 17, 15, 56, 81, 200, 20, 66, 15, 0, 11, 200, 65, 35, 195,
+			60, 228, 207, 48, 80, 15, 9, 198, 36, 68, 143, 12, 244, 147, 16, 11, 200, 12, 243, 12, 20, 224, 200, 36, 208, 15, 0, 9, 198, 9,
+			32, 83, 36, 193, 64, 66, 9, 198, 49, 83, 65, 12, 129, 64, 66, 9, 198, 16, 83, 5, 28, 129, 64, 65, 16, 70, 9, 32, 73, 48,
+			193, 64, 71, 14, 16, 35, 37, 55, 12, 0, 9, 198, 80, 84, 211, 36, 193, 64, 15, 9, 198, 80, 83, 198, 4, 225, 64, 66, 9, 198,
+			77, 84, 146, 20, 225, 64, 16, 9, 198, 76, 147, 132, 60, 225, 64, 65, 9, 198, 76, 84, 211, 36, 193, 64, 15, 10, 198, 76, 83, 133,
+			28, 129, 64, 65, 15, 9, 198, 64, 244, 131, 36, 193, 64, 66, 9, 198, 64, 83, 147, 36, 193, 64, 15, 9, 198, 52, 83, 147, 36, 193,
+			64, 66, 10, 198, 52, 83, 78, 60, 225, 64, 65, 15, 10, 198, 28, 147, 214, 36, 225, 64, 65, 16, 9, 198, 21, 48, 200, 36, 225, 64,
+			15, 9, 198, 12, 244, 148, 36, 193, 64, 66, 9, 198, 12, 194, 77, 20, 225, 64, 65, 10, 198, 12, 86, 129, 56, 225, 64, 65, 16, 9,
+			198, 4, 229, 5, 56, 225, 64, 16, 0, 9, 198, 52, 16, 195, 4, 33, 73, 67, 6, 195, 20, 209, 64, 15, 10, 199, 16, 80, 193, 52,
+			84, 143, 56, 66, 7, 196, 8, 80, 82, 56, 16, 0, 9, 198, 16, 144, 76, 21, 69, 0, 15, 0, 0, 11, 200, 21, 33, 207, 77, 65,
+			82, 60, 192, 68, 0, 11, 200, 16, 148, 212, 85, 32, 137, 56, 240, 66, 11, 200, 12, 20, 130, 60, 115, 129, 56, 240, 67, 6, 195, 96,
+			211, 0, 13, 10, 199, 80, 83, 5, 48, 21, 143, 72, 16, 6, 195, 64, 241, 64, 15, 10, 199, 28, 149, 76, 36, 19, 143, 88, 15, 10,
+			199, 12, 244, 148, 20, 229, 79, 88, 15, 10, 199, 12, 20, 193, 80, 83, 143, 88, 15, 0, 9, 198, 12, 243, 132, 37, 98, 68, 67, 0,
+			7, 196, 4, 225, 207, 48, 65, 0, 12, 201, 80, 80, 206, 60, 52, 129, 104, 144, 64, 68, 10, 199, 64, 243, 9, 20, 68, 137, 12, 15,
+			12, 201, 56, 20, 131, 60, 193, 83, 76, 144, 64, 68, 12, 201, 52, 84, 207, 64, 245, 1, 52, 144, 64, 68, 12, 201, 48, 144, 193, 57,
+			68, 143, 64, 144, 64, 68, 12, 201, 12, 21, 1, 64, 193, 83, 76, 144, 64, 68, 12, 201, 12, 20, 148, 60, 208, 78, 104, 144, 64, 68,
+			12, 201, 5, 85, 15, 12, 81, 129, 48, 144, 64, 70, 0, 11, 200, 64, 243, 9, 80, 80, 206, 36, 48, 15, 11, 200, 53, 83, 20, 36,
+			85, 14, 36, 48, 15, 12, 201, 24, 243, 148, 4, 226, 71, 61, 33, 0, 16, 11, 200, 16, 145, 76, 21, 69, 18, 36, 48, 15, 0, 9,
+			197, 80, 84, 211, 21, 32, 65, 15, 8, 197, 76, 84, 211, 21, 32, 15, 8, 197, 12, 19, 80, 61, 32, 65, 10, 199, 8, 244, 195, 36,
+			208, 78, 36, 66, 0, 7, 196, 104, 83, 15, 80, 15, 11, 200, 93, 80, 200, 21, 33, 82, 36, 16, 67, 7, 196, 77, 1, 79, 80, 15,
+			7, 196, 64, 243, 9, 64, 65, 9, 198, 37, 51, 212, 72, 244, 0, 66, 11, 200, 37, 3, 195, 60, 225, 18, 36, 16, 68, 11, 200, 37,
+			1, 82, 81, 35, 198, 36, 16, 68, 11, 200, 37, 1, 82, 76, 243, 142, 36, 16, 68, 7, 196, 24, 147, 15, 80, 15, 11, 200, 9, 84,
+			143, 13, 32, 90, 36, 16, 68, 0, 9, 198, 36, 229, 9, 80, 243, 0, 66, 8, 197, 72, 80, 204, 85, 64, 65, 8, 197, 28, 147, 206,
+			5, 64, 65, 7, 195, 20, 53, 66, 65, 15, 10, 198, 5, 85, 15, 13, 67, 206, 67, 15, 8, 197, 5, 52, 207, 73, 64, 16, 0, 9,
+			198, 36, 224, 207, 57, 48, 201, 15, 11, 200, 28, 84, 211, 61, 0, 76, 20, 224, 16, 15, 204, 8, 21, 18, 4, 51, 205, 36, 243, 65,
+			12, 130, 65, 71, 7, 196, 4, 226, 68, 72, 65, 0, 8, 197, 64, 83, 133, 81, 32, 65, 9, 198, 92, 147, 1, 56, 245, 192, 67, 8,
+			197, 81, 32, 70, 61, 32, 16, 8, 197, 80, 83, 80, 61, 32, 65, 8, 197, 80, 83, 80, 61, 32, 15, 9, 198, 52, 20, 133, 52, 245,
+			0, 15, 8, 197, 24, 84, 133, 81, 32, 65, 8, 197, 13, 33, 77, 21, 32, 65, 8, 197, 8, 20, 129, 81, 32, 65, 13, 202, 8, 19,
+			14, 20, 245, 5, 72, 20, 9, 4, 70, 0, 7, 196, 60, 48, 213, 64, 65, 18, 71, 28, 130, 65, 12, 50, 79, 48, 81, 126, 35, 76,
+			12, 6, 39, 55, 0, 7, 196, 64, 147, 15, 80, 15, 7, 196, 64, 83, 15, 80, 15, 9, 198, 61, 37, 15, 56, 245, 128, 15, 0, 8,
+			197, 76, 148, 15, 57, 64, 15, 8, 197, 64, 84, 132, 37, 64, 65, 9, 197, 48, 84, 1, 57, 64, 65, 15, 8, 197, 36, 225, 68, 37,
+			64, 66, 8, 197, 28, 147, 204, 37, 64, 65, 8, 197, 16, 80, 210, 21, 64, 15, 0, 13, 202, 36, 51, 211, 37, 65, 84, 72, 17, 68,
+			72, 15, 10, 199, 16, 241, 5, 12, 17, 207, 56, 67, 11, 199, 5, 48, 197, 57, 50, 79, 56, 68, 16, 0, 0, 6, 195, 48, 85, 67,
+			65, 10, 199, 36, 229, 5, 73, 50, 78, 16, 67, 0, 0, 11, 200, 36, 229, 18, 20, 48, 201, 56, 240, 66, 6, 195, 21, 67, 128, 15,
+			7, 195, 4, 195, 192, 66, 15, 0, 0, 7, 196, 52, 84, 207, 48, 65, 7, 196, 8, 245, 15, 48, 65, 7, 196, 8, 148, 15, 48, 66,
+			0, 6, 195, 36, 115, 210, 65, 7, 196, 77, 65, 67, 12, 16, 7, 196, 52, 19, 1, 28, 65, 9, 198, 48, 147, 73, 81, 35, 198, 66,
+			7, 196, 24, 243, 1, 28, 65, 7, 196, 12, 147, 69, 28, 65, 10, 199, 5, 64, 82, 28, 21, 9, 76, 66, 0, 8, 197, 84, 36, 137,
+			4, 48, 67, 9, 198, 77, 66, 80, 20, 225, 9, 15, 6, 195, 64, 241, 77, 15, 6, 195, 56, 241, 77, 15, 10, 199, 29, 80, 82, 16,
+			20, 143, 8, 15, 6, 195, 20, 196, 192, 16, 8, 197, 12, 244, 205, 36, 48, 15, 9, 198, 12, 243, 80, 20, 225, 9, 15, 0, 7, 196,
+			76, 145, 84, 20, 76, 9, 198, 77, 3, 210, 60, 98, 84, 66, 10, 199, 72, 144, 195, 60, 35, 206, 36, 15, 7, 196, 65, 33, 84, 20,
+			15, 9, 198, 13, 80, 213, 72, 34, 84, 66, 0, 8, 197, 88, 19, 5, 72, 80, 66, 8, 197, 49, 80, 201, 56, 80, 66, 8, 197, 69,
+			81, 83, 80, 16, 76, 8, 197, 80, 244, 129, 12, 80, 66, 8, 197, 48, 21, 82, 20, 16, 65, 8, 197, 13, 80, 133, 8, 80, 15, 8,
+			197, 12, 83, 9, 56, 80, 16, 9, 197, 8, 241, 77, 36, 16, 66, 15, 8, 197, 5, 81, 213, 72, 80, 65, 0, 7, 196, 20, 228, 137,
+			12, 66, 12, 201, 65, 32, 84, 61, 97, 67, 12, 130, 64, 15, 12, 201, 12, 243, 12, 21, 97, 67, 12, 130, 64, 15, 0, 9, 198, 12,
+			20, 9, 80, 243, 1, 66, 9, 198, 76, 147, 143, 56, 147, 73, 66, 6, 195, 52, 145, 73, 76, 8, 197, 80, 80, 206, 36, 48, 15, 8,
+			197, 64, 144, 206, 36, 48, 66, 8, 197, 48, 84, 194, 36, 48, 15, 8, 197, 8, 16, 200, 20, 48, 15, 8, 197, 4, 224, 76, 60, 112,
+			66, 0, 10, 199, 9, 84, 143, 13, 32, 84, 20, 66, 11, 68, 76, 210, 76, 20, 88, 65, 117, 55, 0, 10, 199, 81, 33, 83, 76, 85,
+			20, 20, 15, 10, 199, 64, 243, 9, 13, 32, 84, 20, 66, 9, 198, 64, 81, 1, 28, 241, 192, 15, 9, 198, 64, 19, 12, 5, 99, 204,
+			67, 10, 199, 24, 147, 15, 13, 32, 84, 20, 66, 7, 196, 21, 33, 68, 20, 15, 10, 199, 5, 36, 15, 13, 32, 84, 20, 66, 0, 18,
+			70, 76, 53, 83, 36, 19, 79, 89, 49, 40, 88, 37, 6, 35, 65, 39, 0, 8, 197, 52, 147, 9, 80, 16, 65, 8, 197, 5, 35, 73,
+			16, 16, 66, 8, 197, 24, 84, 137, 80, 16, 66, 14, 69, 65, 86, 154, 48, 80, 48, 6, 35, 123, 39, 55, 0, 9, 197, 88, 243, 5,
+			72, 80, 66, 16, 8, 197, 88, 149, 129, 12, 80, 66, 8, 197, 88, 84, 129, 12, 80, 66, 9, 197, 76, 20, 5, 72, 80, 66, 16, 8,
+			197, 64, 243, 73, 12, 80, 16, 8, 197, 48, 145, 213, 72, 80, 65, 8, 197, 48, 21, 82, 36, 16, 67, 8, 197, 28, 244, 135, 36, 16,
+			65, 8, 197, 24, 244, 135, 36, 16, 65, 8, 197, 24, 84, 137, 80, 16, 67, 15, 69, 21, 52, 197, 72, 80, 6, 109, 89, 89, 36, 51,
+			36, 0, 9, 197, 16, 161, 77, 8, 80, 66, 15, 8, 197, 12, 244, 143, 56, 80, 15, 8, 197, 12, 83, 9, 8, 80, 65, 8, 197, 8,
+			244, 135, 36, 16, 65, 9, 197, 8, 84, 143, 36, 16, 65, 16, 8, 197, 4, 212, 5, 72, 80, 66, 8, 197, 4, 195, 21, 12, 80, 65,
+			0, 7, 196, 12, 81, 21, 60, 15, 0, 17, 70, 76, 50, 65, 8, 147, 5, 91, 37, 6, 35, 71, 37, 55, 36, 0, 13, 3, 95, 122,
+			104, 76, 126, 50, 6, 36, 88, 109, 0, 9, 197, 80, 83, 133, 72, 240, 65, 15, 7, 196, 64, 84, 149, 56, 66, 6, 195, 20, 213, 64,
+			66, 0, 0, 9, 198, 12, 20, 137, 12, 19, 15, 65, 8, 197, 65, 35, 197, 52, 144, 15, 8, 197, 56, 80, 195, 32, 144, 15, 8, 197,
+			12, 245, 20, 36, 208, 15, 8, 197, 12, 240, 195, 32, 144, 15, 8, 197, 5, 49, 80, 76, 144, 15, 0, 9, 198, 77, 84, 211, 36, 66,
+			64, 66, 9, 198, 81, 34, 80, 60, 194, 64, 65, 10, 198, 76, 84, 85, 4, 226, 64, 65, 15, 9, 198, 65, 33, 71, 4, 66, 64, 67,
+			11, 200, 64, 243, 9, 77, 66, 82, 60, 192, 68, 9, 198, 64, 192, 84, 4, 226, 64, 65, 9, 198, 64, 84, 20, 36, 66, 64, 15, 10,
+			199, 64, 83, 148, 5, 65, 85, 12, 67, 9, 198, 36, 225, 207, 8, 34, 64, 15, 0, 11, 200, 72, 81, 201, 77, 68, 137, 56, 240, 66,
+			8, 197, 64, 20, 129, 56, 240, 65, 11, 200, 12, 20, 9, 80, 243, 1, 56, 240, 66, 8, 197, 48, 144, 129, 56, 240, 65, 18, 70, 5,
+			49, 137, 77, 50, 69, 35, 89, 83, 37, 89, 12, 6, 37, 36, 0, 7, 196, 61, 33, 193, 56, 65, 7, 196, 8, 16, 197, 56, 16, 0,
+			7, 196, 5, 97, 86, 36, 78, 9, 198, 77, 81, 15, 88, 84, 212, 15, 12, 200, 64, 84, 143, 56, 244, 208, 61, 32, 67, 15, 13, 68,
+			24, 145, 82, 36, 83, 37, 6, 36, 51, 37, 0, 0, 9, 198, 16, 145, 201, 80, 19, 15, 65, 12, 201, 5, 101, 129, 57, 64, 71, 28,
+			147, 143, 67, 8, 197, 5, 97, 83, 80, 144, 78, 8, 197, 69, 81, 83, 80, 144, 76, 8, 197, 76, 83, 77, 4, 144, 66, 8, 197, 76,
+			51, 199, 48, 144, 15, 8, 197, 52, 243, 143, 52, 144, 15, 8, 197, 52, 85, 15, 16, 144, 15, 8, 197, 52, 83, 133, 12, 208, 15, 8,
+			197, 16, 144, 68, 20, 208, 15, 0, 9, 198, 76, 52, 143, 24, 243, 0, 65, 9, 198, 56, 240, 195, 36, 243, 0, 15, 9, 198, 56, 16,
+			129, 80, 82, 64, 67, 10, 198, 12, 21, 5, 12, 243, 0, 67, 15, 9, 198, 4, 84, 143, 28, 83, 0, 67, 0, 14, 68, 92, 17, 133,
+			72, 84, 6, 35, 83, 36, 14, 16, 0, 9, 198, 77, 1, 67, 12, 130, 65, 15, 10, 199, 72, 240, 149, 77, 65, 90, 104, 15, 7, 196,
+			64, 245, 133, 72, 65, 9, 198, 64, 192, 84, 4, 226, 65, 67, 9, 198, 13, 84, 212, 60, 66, 65, 15, 9, 198, 12, 243, 77, 20, 66,
+			65, 15, 6, 195, 12, 84, 201, 15, 9, 198, 12, 19, 66, 60, 66, 65, 15, 9, 198, 4, 227, 205, 4, 194, 65, 68, 0, 24, 72, 80,
+			84, 141, 36, 224, 84, 61, 32, 47, 36, 14, 16, 65, 37, 50, 6, 36, 47, 110, 14, 16, 0, 17, 6, 95, 114, 111, 109, 97, 110, 14,
+			16, 110, 65, 6, 35, 50, 39, 0, 8, 197, 77, 83, 195, 21, 32, 65, 8, 197, 77, 64, 83, 21, 32, 16, 10, 199, 72, 150, 154, 36,
+			51, 206, 36, 66, 8, 197, 64, 20, 212, 61, 32, 16, 9, 198, 36, 225, 15, 52, 149, 0, 66, 9, 198, 21, 49, 82, 12, 149, 0, 66,
+			0, 11, 200, 52, 149, 15, 12, 243, 132, 72, 144, 15, 10, 199, 48, 144, 193, 57, 68, 143, 64, 66, 0, 8, 197, 16, 148, 208, 85, 64,
+			65, 0, 7, 196, 24, 147, 143, 72, 16, 7, 196, 12, 19, 143, 88, 65, 0, 15, 69, 80, 22, 76, 61, 32, 47, 6, 119, 55, 39, 14,
+			16, 0, 8, 197, 81, 34, 77, 21, 32, 65, 8, 197, 81, 34, 70, 61, 32, 65, 9, 198, 72, 80, 193, 64, 149, 0, 66, 8, 197, 37,
+			51, 205, 21, 32, 66, 10, 199, 28, 194, 67, 60, 194, 83, 36, 66, 8, 197, 9, 83, 7, 5, 32, 65, 0, 7, 196, 72, 83, 79, 80,
+			15, 10, 199, 8, 19, 131, 5, 35, 212, 80, 16, 0, 16, 3, 95, 116, 105, 47, 37, 81, 14, 16, 6, 37, 50, 126, 35, 0, 8, 197,
+			72, 83, 132, 37, 64, 65, 8, 197, 65, 35, 198, 21, 64, 15, 0, 9, 3, 95, 116, 104, 47, 6, 117, 0, 13, 202, 21, 48, 67, 37,
+			51, 212, 80, 17, 68, 72, 15, 0, 10, 199, 64, 244, 211, 20, 65, 82, 20, 67, 10, 199, 52, 19, 148, 20, 225, 82, 20, 67, 6, 195,
+			4, 68, 204, 13, 9, 198, 81, 32, 83, 8, 244, 132, 16, 9, 198, 77, 64, 82, 61, 53, 0, 65, 10, 199, 76, 83, 73, 9, 33, 86,
+			20, 15, 0, 6, 18, 66, 195, 160, 0, 195, 178, 0, 195, 179, 0, 195, 185, 0, 97, 0, 111, 0, 117, 0, 7, 6, 18, 67, 195, 169,
+			0, 195, 168, 0, 101, 0, 7, 6, 18, 68, 98, 0, 100, 0, 103, 0, 108, 0, 109, 0, 110, 0, 114, 0, 118, 0, 7, 6, 18, 69,
+			103, 108, 105, 101, 108, 111, 0, 103, 108, 105, 101, 108, 97, 0, 103, 108, 105, 101, 108, 105, 0, 103, 108, 105, 101, 108, 101, 0, 103, 108,
+			105, 101, 110, 101, 0, 109, 101, 108, 111, 0, 116, 101, 108, 111, 0, 115, 101, 108, 111, 0, 99, 101, 108, 111, 0, 118, 101, 108, 111, 0,
+			109, 101, 108, 97, 0, 116, 101, 108, 97, 0, 115, 101, 108, 97, 0, 99, 101, 108, 97, 0, 118, 101, 108, 97, 0, 109, 101, 108, 105, 0,
+			116, 101, 108, 105, 0, 115, 101, 108, 105, 0, 99, 101, 108, 105, 0, 118, 101, 108, 105, 0, 109, 101, 108, 101, 0, 116, 101, 108, 101, 0,
+			115, 101, 108, 101, 0, 99, 101, 108, 101, 0, 118, 101, 108, 101, 0, 109, 101, 110, 101, 0, 116, 101, 110, 101, 0, 115, 101, 110, 101, 0,
+			99, 101, 110, 101, 0, 118, 101, 110, 101, 0, 103, 108, 105, 0, 109, 105, 0, 116, 105, 0, 108, 111, 0, 108, 97, 0, 108, 101, 0, 115,
+			105, 0, 99, 105, 0, 118, 105, 0, 108, 105, 0, 110, 101, 0, 7, 6, 18, 81, 48, 48, 0, 48, 49, 0, 48, 50, 0, 48, 51, 0,
+			48, 52, 0, 48, 53, 0, 48, 54, 0, 48, 55, 0, 48, 56, 0, 48, 57, 0, 49, 48, 0, 49, 49, 0, 49, 50, 0, 49, 51, 0,
+			49, 52, 0, 49, 53, 0, 49, 54, 0, 49, 55, 0, 49, 56, 0, 49, 57, 0, 50, 48, 0, 50, 49, 0, 50, 50, 0, 50, 51, 0,
+			48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 7, 6, 18, 82, 48, 0, 49, 0, 50, 0,
+			51, 0, 52, 0, 53, 0, 7, 6, 195, 160, 0, 3, 7, 35, 0, 117, 3, 7, 35, 2, 40, 0, 111, 2, 32, 24, 3, 7, 114, 0,
+			105, 2, 25, 3, 7, 117, 0, 7, 6, 97, 0, 4, 1, 21, 2, 98, 105, 108, 101, 32, 3, 6, 35, 0, 1, 21, 2, 103, 103, 105,
+			110, 101, 32, 0, 2, 105, 115, 109, 111, 32, 0, 2, 116, 116, 101, 114, 17, 65, 32, 0, 116, 101, 2, 18, 69, 32, 3, 6, 35, 47,
+			36, 0, 110, 100, 101, 114, 1, 21, 2, 18, 69, 32, 3, 6, 35, 50, 72, 109, 14, 16, 0, 109, 111, 1, 21, 2, 18, 69, 32, 3,
+			6, 35, 65, 39, 0, 118, 97, 110, 111, 2, 32, 3, 6, 35, 84, 35, 50, 39, 0, 4, 1, 21, 2, 99, 17, 65, 32, 3, 8, 35,
+			0, 1, 21, 2, 99, 104, 101, 32, 0, 4, 3, 35, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 105, 21, 2, 32, 14,
+			128, 192, 129, 0, 2, 105, 115, 116, 17, 65, 32, 0, 117, 3, 35, 2, 40, 0, 110, 99, 104, 39, 8, 2, 14, 129, 132, 133, 3, 35,
+			50, 49, 0, 108, 108, 39, 8, 2, 14, 129, 132, 132, 3, 35, 55, 55, 0, 101, 8, 2, 114, 3, 35, 109, 0, 111, 2, 32, 24, 3,
+			114, 0, 105, 2, 25, 3, 117, 0, 7, 6, 98, 0, 98, 97, 110, 111, 2, 32, 3, 8, 71, 12, 35, 50, 39, 0, 3, 71, 0, 98,
+			3, 71, 12, 0, 7, 6, 99, 0, 99, 104, 105, 97, 110, 111, 1, 17, 65, 2, 32, 3, 8, 49, 12, 37, 35, 50, 39, 0, 104, 105,
+			97, 110, 111, 2, 32, 3, 8, 49, 37, 35, 50, 39, 0, 111, 1, 21, 2, 108, 17, 65, 32, 3, 8, 49, 39, 0, 99, 105, 97, 110,
+			111, 2, 32, 3, 8, 76, 12, 35, 50, 39, 0, 105, 97, 110, 111, 2, 32, 3, 8, 76, 35, 50, 39, 0, 101, 1, 17, 65, 21, 21,
+			2, 17, 65, 32, 3, 8, 76, 109, 0, 4, 3, 49, 0, 104, 1, 115, 2, 17, 65, 0, 104, 2, 17, 71, 0, 4, 99, 3, 49, 12,
+			0, 99, 104, 2, 17, 71, 0, 107, 0, 113, 117, 3, 49, 12, 122, 0, 4, 2, 17, 71, 3, 76, 0, 39, 8, 2, 14, 129, 132, 130,
+			0, 104, 2, 97, 0, 104, 2, 111, 0, 104, 2, 117, 0, 105, 2, 17, 65, 0, 4, 99, 2, 17, 71, 3, 76, 12, 0, 99, 105, 2,
+			17, 65, 0, 7, 6, 100, 0, 4, 101, 114, 1, 17, 65, 17, 65, 104, 99, 2, 18, 69, 32, 3, 8, 72, 36, 14, 16, 0, 101, 114,
+			1, 101, 114, 2, 18, 69, 32, 0, 101, 114, 101, 1, 110, 3, 8, 72, 36, 51, 36, 0, 101, 114, 1, 105, 99, 2, 18, 69, 32, 3,
+			8, 72, 109, 14, 16, 0, 4, 3, 72, 0, 39, 8, 2, 14, 129, 132, 130, 0, 111, 110, 97, 2, 18, 69, 32, 3, 72, 6, 39, 50,
+			35, 0, 100, 3, 72, 12, 0, 97, 108, 108, 39, 8, 2, 14, 129, 132, 133, 3, 72, 35, 55, 55, 0, 101, 108, 108, 39, 8, 2, 14,
+			129, 132, 133, 3, 72, 36, 55, 55, 0, 111, 110, 97, 116, 2, 17, 71, 32, 3, 72, 39, 50, 6, 35, 47, 0, 7, 6, 101, 0, 4,
+			1, 21, 2, 115, 105, 109, 17, 65, 32, 3, 6, 36, 0, 1, 21, 2, 118, 111, 108, 17, 65, 32, 0, 2, 109, 111, 110, 17, 65, 32,
+			0, 105, 1, 114, 2, 32, 3, 6, 36, 37, 0, 116, 101, 2, 18, 69, 32, 3, 6, 36, 47, 36, 0, 110, 100, 101, 114, 1, 17, 67,
+			2, 18, 69, 32, 3, 6, 36, 50, 72, 36, 14, 16, 0, 118, 97, 110, 111, 2, 32, 3, 6, 36, 84, 35, 50, 39, 0, 115, 115, 101,
+			114, 2, 18, 69, 32, 3, 6, 36, 89, 12, 36, 51, 0, 4, 1, 17, 65, 2, 114, 32, 3, 6, 109, 0, 1, 21, 2, 114, 114, 105,
+			109, 111, 32, 0, 114, 100, 101, 114, 1, 17, 67, 2, 18, 69, 32, 3, 6, 109, 14, 16, 72, 36, 14, 16, 0, 99, 99, 111, 8, 2,
+			18, 69, 3, 6, 109, 49, 12, 39, 0, 103, 103, 105, 97, 1, 17, 67, 17, 67, 2, 110, 111, 32, 3, 6, 109, 75, 12, 35, 0, 1,
+			21, 2, 99, 105, 32, 3, 8, 36, 0, 4, 1, 17, 67, 2, 114, 101, 32, 3, 8, 109, 0, 1, 17, 67, 11, 2, 114, 17, 65, 32,
+			0, 4, 3, 36, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 102, 2, 114, 109, 0, 1, 104, 2, 115, 115, 0, 1, 109,
+			2, 115, 115, 0, 1, 109, 21, 2, 110, 116, 17, 65, 32, 0, 2, 110, 103, 17, 65, 32, 0, 2, 114, 115, 105, 32, 24, 0, 2, 115,
+			115, 97, 32, 0, 2, 116, 116, 17, 65, 32, 0, 2, 122, 122, 17, 65, 32, 0, 8, 17, 67, 115, 2, 115, 115, 0, 4, 1, 99, 2,
+			116, 116, 17, 65, 32, 3, 109, 0, 1, 103, 2, 110, 101, 0, 1, 103, 103, 2, 114, 111, 32, 0, 1, 114, 2, 109, 0, 2, 17, 65,
+			0, 2, 17, 67, 11, 17, 65, 32, 0, 2, 17, 67, 32, 0, 2, 17, 67, 105, 17, 67, 17, 65, 32, 0, 2, 17, 67, 117, 108, 17,
+			65, 32, 0, 2, 108, 0, 2, 108, 108, 117, 0, 2, 110, 17, 65, 32, 0, 2, 110, 17, 67, 17, 65, 32, 0, 2, 114, 0, 2, 115,
+			116, 0, 2, 116, 105, 0, 2, 116, 114, 0, 2, 116, 116, 105, 21, 0, 2, 118, 105, 32, 0, 2, 118, 111, 32, 0, 2, 122, 17, 65,
+			0, 8, 114, 0, 105, 2, 25, 3, 109, 57, 0, 7, 6, 102, 0, 4, 1, 17, 65, 2, 101, 114, 111, 32, 3, 8, 83, 0, 1, 17,
+			65, 21, 2, 105, 108, 111, 32, 0, 3, 83, 0, 102, 3, 83, 12, 0, 7, 6, 103, 0, 108, 105, 101, 114, 1, 21, 2, 18, 69, 32,
+			3, 8, 61, 109, 14, 16, 0, 103, 101, 114, 1, 21, 2, 18, 69, 32, 3, 8, 75, 12, 36, 14, 16, 0, 101, 114, 1, 17, 67, 17,
+			65, 2, 18, 69, 32, 3, 8, 75, 36, 14, 16, 0, 117, 101, 114, 1, 21, 2, 18, 69, 32, 3, 8, 81, 111, 36, 14, 16, 0, 4,
+			108, 2, 105, 3, 61, 0, 108, 2, 195, 172, 0, 108, 105, 2, 17, 65, 0, 110, 3, 67, 0, 110, 1, 97, 2, 17, 65, 32, 3, 67,
+			12, 0, 110, 1, 21, 2, 17, 65, 32, 3, 67, 38, 0, 4, 2, 17, 71, 3, 75, 0, 105, 1, 110, 2, 97, 32, 0, 105, 2, 17,
+			65, 0, 105, 117, 114, 97, 8, 2, 18, 69, 32, 3, 75, 6, 111, 51, 35, 0, 4, 105, 1, 111, 108, 2, 101, 32, 3, 75, 6, 125,
+			0, 105, 2, 97, 32, 0, 195, 172, 2, 97, 32, 0, 4, 103, 2, 17, 71, 3, 75, 12, 0, 103, 105, 2, 17, 65, 0, 4, 3, 81,
+			0, 104, 0, 103, 3, 81, 12, 0, 108, 8, 3, 81, 55, 0, 117, 2, 17, 65, 3, 81, 58, 0, 7, 6, 104, 0, 3, 0, 4, 97,
+			8, 3, 107, 6, 35, 0, 195, 160, 8, 0, 7, 6, 105, 0, 4, 1, 108, 2, 17, 65, 3, 2, 37, 0, 1, 114, 2, 17, 65, 0,
+			4, 1, 21, 2, 98, 105, 108, 101, 32, 3, 6, 37, 0, 1, 21, 2, 100, 101, 114, 101, 32, 0, 1, 100, 110, 97, 17, 67, 21, 21,
+			2, 110, 101, 32, 0, 2, 17, 67, 99, 97, 110, 111, 32, 0, 2, 97, 99, 17, 65, 32, 0, 2, 97, 115, 105, 32, 0, 2, 102, 105,
+			99, 97, 110, 111, 32, 0, 2, 103, 101, 110, 17, 65, 32, 0, 4, 97, 1, 29, 2, 32, 3, 6, 37, 35, 0, 97, 1, 102, 97, 2,
+			32, 0, 97, 1, 110, 111, 102, 2, 32, 0, 97, 1, 112, 111, 99, 115, 2, 32, 0, 97, 1, 114, 101, 2, 32, 0, 97, 1, 114, 111,
+			103, 2, 32, 0, 97, 1, 114, 116, 101, 109, 2, 32, 0, 97, 1, 116, 2, 32, 0, 97, 100, 1, 17, 67, 2, 17, 71, 32, 3, 6,
+			37, 35, 72, 0, 4, 101, 1, 102, 97, 2, 32, 3, 6, 37, 36, 0, 101, 1, 114, 101, 2, 32, 0, 101, 1, 114, 116, 101, 109, 2,
+			32, 0, 101, 1, 116, 2, 32, 0, 101, 8, 17, 67, 2, 32, 0, 116, 101, 2, 18, 69, 32, 3, 6, 37, 47, 36, 0, 110, 97, 115,
+			2, 32, 3, 6, 37, 50, 35, 89, 0, 102, 105, 99, 104, 105, 110, 111, 2, 32, 3, 6, 37, 83, 37, 49, 37, 50, 39, 0, 118, 97,
+			110, 111, 2, 32, 3, 6, 37, 84, 35, 50, 39, 0, 118, 101, 114, 2, 18, 69, 32, 3, 6, 37, 84, 109, 14, 16, 0, 115, 115, 97,
+			110, 111, 2, 32, 3, 6, 37, 89, 12, 35, 50, 39, 0, 115, 115, 101, 114, 111, 1, 21, 2, 32, 14, 128, 192, 134, 3, 6, 37, 89,
+			89, 36, 34, 39, 0, 115, 115, 105, 109, 1, 21, 2, 17, 65, 32, 3, 6, 37, 89, 89, 37, 65, 0, 4, 1, 17, 67, 17, 67, 17,
+			67, 17, 65, 2, 99, 97, 110, 111, 32, 3, 8, 37, 0, 1, 21, 2, 99, 17, 65, 32, 0, 1, 21, 2, 99, 104, 17, 65, 32, 0,
+			1, 21, 2, 100, 17, 65, 32, 0, 1, 21, 2, 103, 17, 65, 32, 0, 1, 21, 2, 109, 17, 65, 32, 0, 1, 98, 2, 108, 101, 32,
+			0, 1, 99, 2, 108, 17, 65, 32, 0, 1, 103, 2, 108, 17, 65, 32, 0, 1, 109, 2, 108, 101, 32, 0, 1, 112, 2, 116, 101, 32,
+			0, 1, 114, 17, 67, 97, 108, 2, 109, 17, 65, 32, 0, 1, 115, 115, 2, 108, 17, 65, 32, 0, 2, 108, 17, 65, 32, 0, 97, 1,
+			21, 2, 32, 3, 8, 37, 2, 35, 0, 111, 1, 21, 2, 32, 14, 128, 192, 129, 3, 8, 37, 2, 39, 0, 111, 110, 111, 1, 21, 2,
+			32, 3, 8, 37, 39, 50, 39, 0, 4, 110, 1, 103, 21, 2, 17, 71, 32, 3, 8, 37, 50, 0, 110, 1, 109, 17, 67, 2, 17, 71,
+			32, 0, 110, 1, 109, 105, 2, 17, 71, 32, 0, 4, 110, 101, 1, 99, 2, 32, 3, 8, 37, 50, 36, 0, 110, 101, 1, 100, 2, 32,
+			0, 4, 3, 37, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 21, 2, 17, 65, 110, 116, 101, 32, 0, 1, 114, 2, 109,
+			97, 32, 0, 1, 114, 116, 2, 99, 17, 71, 32, 0, 2, 111, 0, 2, 195, 178, 0, 2, 195, 179, 0, 195, 160, 1, 21, 2, 32, 3,
+			37, 6, 35, 0, 4, 101, 1, 21, 2, 114, 17, 65, 32, 3, 37, 6, 109, 0, 195, 169, 1, 21, 2, 114, 17, 65, 32, 0, 118, 101,
+			114, 1, 100, 2, 18, 69, 32, 3, 37, 84, 6, 109, 14, 16, 0, 4, 1, 18, 67, 2, 12, 3, 57, 0, 1, 97, 2, 12, 0, 1,
+			111, 2, 12, 0, 1, 160, 195, 2, 12, 0, 2, 17, 65, 0, 7, 6, 106, 0, 117, 97, 110, 8, 3, 21, 101, 115, 0, 1, 21, 2,
+			32, 3, 57, 0, 3, 75, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3, 49, 12, 0, 7, 6, 108, 0, 4, 3, 55, 0, 39, 8, 2,
+			14, 129, 132, 130, 0, 108, 2, 32, 0, 97, 115, 99, 105, 97, 2, 18, 69, 32, 3, 55, 6, 35, 91, 35, 0, 108, 2, 17, 67, 3,
+			55, 10, 0, 7, 6, 109, 0, 98, 97, 110, 111, 2, 32, 3, 8, 65, 71, 35, 50, 39, 0, 4, 3, 65, 0, 39, 8, 2, 14, 129,
+			132, 130, 0, 101, 116, 116, 101, 114, 2, 18, 69, 32, 3, 65, 6, 36, 47, 47, 36, 14, 16, 0, 105, 1, 17, 65, 2, 97, 32, 3,
+			65, 6, 37, 0, 101, 122, 122, 39, 8, 2, 14, 129, 132, 133, 3, 65, 109, 128, 12, 0, 7, 6, 110, 0, 100, 111, 2, 18, 69, 32,
+			3, 8, 50, 72, 39, 0, 101, 1, 17, 65, 2, 17, 65, 32, 3, 8, 50, 109, 0, 4, 3, 50, 0, 2, 103, 17, 71, 0, 101, 116,
+			116, 101, 114, 2, 18, 69, 32, 3, 50, 6, 109, 47, 12, 36, 14, 16, 0, 101, 97, 110, 99, 104, 39, 8, 2, 14, 129, 132, 135, 3,
+			50, 36, 35, 50, 49, 0, 101, 108, 108, 39, 8, 2, 14, 129, 132, 133, 3, 50, 36, 55, 55, 0, 122, 8, 17, 65, 122, 2, 17, 65,
+			3, 50, 128, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 4, 1, 21, 2, 103, 110, 111, 108, 111, 32, 3, 6, 39,
+			0, 1, 21, 2, 110, 122, 111, 108, 111, 32, 0, 1, 117, 2, 110, 111, 32, 0, 110, 100, 101, 114, 1, 17, 67, 2, 18, 69, 32, 3,
+			6, 39, 50, 72, 109, 14, 16, 0, 118, 97, 110, 111, 2, 32, 3, 6, 39, 84, 35, 50, 39, 0, 118, 101, 114, 2, 18, 69, 32, 3,
+			6, 39, 84, 109, 14, 16, 0, 115, 97, 110, 111, 2, 32, 3, 6, 39, 88, 35, 50, 39, 0, 4, 1, 21, 2, 102, 111, 110, 17, 65,
+			32, 3, 6, 110, 0, 1, 21, 2, 103, 114, 97, 102, 111, 32, 0, 1, 21, 2, 108, 111, 103, 111, 32, 0, 1, 21, 2, 109, 101, 116,
+			114, 111, 32, 0, 1, 21, 2, 110, 111, 109, 111, 32, 0, 1, 108, 2, 103, 105, 99, 111, 32, 0, 2, 17, 67, 17, 67, 97, 110, 111,
+			32, 0, 2, 17, 67, 17, 67, 105, 99, 97, 110, 111, 32, 0, 2, 103, 101, 110, 17, 65, 32, 0, 2, 112, 111, 108, 17, 65, 32, 0,
+			2, 115, 116, 114, 97, 99, 17, 65, 32, 0, 4, 1, 21, 2, 100, 105, 32, 3, 8, 39, 0, 1, 21, 2, 100, 111, 32, 0, 1, 114,
+			100, 2, 109, 111, 32, 0, 1, 118, 2, 108, 17, 65, 32, 0, 4, 1, 17, 67, 17, 67, 2, 108, 17, 65, 32, 3, 8, 110, 0, 1,
+			21, 2, 108, 111, 32, 0, 1, 21, 2, 110, 111, 32, 0, 1, 100, 110, 2, 108, 17, 65, 32, 0, 1, 105, 99, 2, 108, 17, 65, 32,
+			0, 1, 115, 110, 2, 108, 17, 65, 32, 0, 4, 3, 39, 0, 1, 17, 67, 21, 2, 32, 14, 128, 192, 129, 0, 1, 99, 115, 2, 108,
+			116, 17, 65, 32, 0, 1, 102, 2, 114, 109, 17, 65, 32, 0, 1, 105, 2, 110, 101, 0, 1, 105, 2, 115, 111, 32, 0, 1, 105, 21,
+			2, 32, 14, 128, 192, 129, 0, 1, 114, 17, 65, 2, 115, 115, 17, 65, 32, 0, 2, 110, 105, 32, 0, 2, 114, 17, 71, 32, 0, 105,
+			2, 111, 32, 3, 39, 2, 126, 0, 105, 2, 115, 17, 67, 17, 65, 32, 3, 39, 6, 37, 0, 4, 1, 21, 2, 108, 17, 65, 32, 3,
+			110, 0, 1, 21, 2, 108, 105, 17, 65, 32, 0, 1, 21, 2, 109, 97, 32, 0, 1, 21, 2, 109, 111, 32, 0, 1, 99, 2, 108, 116,
+			17, 65, 32, 0, 1, 99, 115, 2, 112, 17, 65, 32, 0, 1, 105, 0, 1, 105, 2, 108, 17, 65, 32, 0, 1, 109, 2, 98, 105, 108,
+			101, 0, 1, 110, 103, 2, 108, 97, 32, 0, 1, 117, 2, 108, 17, 65, 32, 0, 1, 118, 2, 108, 116, 17, 65, 32, 0, 2, 17, 67,
+			11, 17, 65, 32, 0, 2, 17, 67, 17, 65, 17, 67, 17, 65, 32, 0, 2, 17, 67, 17, 67, 32, 0, 2, 17, 67, 114, 0, 2, 99,
+			97, 32, 0, 2, 99, 111, 32, 0, 2, 108, 29, 0, 2, 108, 105, 0, 2, 110, 105, 0, 2, 111, 0, 2, 114, 0, 2, 115, 105, 32,
+			0, 2, 115, 115, 0, 2, 115, 116, 0, 2, 116, 116, 111, 108, 0, 2, 122, 17, 65, 0, 105, 3, 110, 2, 126, 0, 118, 101, 114, 1,
+			100, 2, 18, 69, 32, 3, 110, 84, 6, 109, 14, 16, 0, 7, 6, 112, 0, 1, 109, 21, 2, 101, 114, 17, 71, 32, 3, 8, 48, 0,
+			3, 48, 0, 112, 3, 48, 12, 0, 110, 8, 2, 21, 21, 3, 50, 0, 115, 8, 2, 17, 65, 21, 3, 89, 0, 7, 6, 113, 0, 3,
+			49, 0, 117, 3, 49, 122, 0, 117, 101, 115, 116, 39, 8, 2, 14, 129, 132, 134, 3, 49, 122, 36, 89, 47, 0, 117, 101, 108, 108, 39,
+			8, 2, 14, 129, 132, 134, 3, 49, 122, 109, 55, 55, 0, 7, 6, 114, 0, 4, 1, 17, 65, 2, 32, 3, 8, 14, 16, 0, 1, 21,
+			2, 18, 69, 32, 0, 4, 3, 14, 16, 0, 1, 17, 67, 0, 2, 32, 0, 8, 0, 97, 105, 1, 17, 67, 2, 32, 3, 14, 16, 6,
+			117, 0, 1, 17, 65, 2, 17, 65, 3, 51, 0, 97, 105, 1, 17, 65, 2, 32, 3, 51, 6, 117, 0, 114, 3, 51, 16, 0, 114, 97,
+			105, 2, 32, 3, 51, 16, 6, 117, 0, 7, 6, 115, 0, 99, 97, 110, 111, 1, 17, 65, 2, 32, 3, 8, 89, 49, 35, 50, 39, 0,
+			99, 104, 105, 97, 110, 111, 1, 17, 65, 2, 32, 3, 8, 89, 49, 37, 35, 50, 39, 0, 99, 105, 97, 110, 111, 2, 32, 3, 8, 91,
+			35, 50, 39, 0, 99, 101, 114, 1, 21, 2, 18, 69, 32, 3, 8, 91, 109, 14, 16, 0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 0,
+			2, 18, 68, 0, 105, 97, 1, 21, 2, 32, 3, 88, 6, 37, 35, 0, 105, 101, 1, 21, 2, 32, 3, 88, 6, 37, 36, 0, 105, 195,
+			160, 1, 21, 3, 88, 37, 6, 35, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 1, 107, 0, 1, 108, 0, 1, 112,
+			0, 2, 99, 0, 2, 102, 0, 2, 107, 0, 2, 112, 0, 2, 113, 0, 2, 116, 0, 2, 120, 0, 8, 0, 105, 97, 1, 17, 67, 21,
+			3, 89, 6, 37, 35, 0, 115, 1, 17, 65, 2, 17, 65, 3, 89, 12, 0, 111, 116, 116, 111, 8, 2, 14, 129, 132, 133, 3, 89, 39,
+			47, 12, 39, 0, 117, 108, 108, 39, 8, 2, 14, 129, 132, 133, 3, 89, 40, 55, 55, 0, 99, 104, 2, 17, 71, 3, 89, 49, 0, 115,
+			3, 89, 89, 0, 4, 99, 2, 17, 71, 3, 91, 0, 99, 105, 2, 17, 65, 0, 104, 1, 17, 65, 2, 17, 65, 0, 104, 1, 25, 0,
+			104, 2, 25, 0, 99, 105, 2, 195, 172, 3, 91, 2, 37, 0, 99, 105, 105, 3, 91, 37, 57, 0, 7, 6, 116, 0, 116, 1, 21, 2,
+			97, 110, 111, 32, 3, 8, 47, 12, 0, 3, 47, 0, 116, 3, 47, 12, 0, 116, 111, 114, 105, 97, 1, 97, 2, 32, 3, 47, 12, 39,
+			51, 6, 37, 35, 0, 116, 111, 114, 105, 101, 1, 97, 2, 32, 3, 47, 12, 39, 51, 6, 126, 36, 0, 114, 105, 97, 1, 97, 21, 2,
+			32, 3, 47, 14, 16, 6, 37, 35, 0, 114, 105, 101, 1, 97, 21, 2, 32, 3, 47, 14, 16, 6, 37, 36, 0, 7, 6, 117, 0, 4,
+			1, 21, 2, 99, 111, 108, 111, 32, 3, 6, 40, 0, 1, 21, 2, 100, 105, 110, 17, 71, 32, 0, 2, 105, 116, 111, 32, 0, 114, 97,
+			1, 17, 67, 2, 18, 69, 32, 3, 6, 40, 51, 35, 0, 98, 97, 110, 111, 2, 32, 3, 6, 40, 71, 35, 50, 39, 0, 100, 101, 114,
+			2, 18, 69, 32, 3, 6, 40, 72, 109, 14, 16, 0, 118, 97, 110, 111, 2, 32, 3, 6, 40, 84, 35, 50, 39, 0, 4, 1, 17, 67,
+			11, 17, 65, 2, 17, 65, 32, 3, 8, 40, 0, 1, 21, 2, 108, 17, 65, 32, 0, 1, 21, 21, 2, 17, 65, 32, 0, 4, 3, 40,
+			0, 1, 108, 25, 2, 17, 65, 0, 1, 114, 25, 2, 17, 65, 0, 110, 39, 8, 2, 14, 129, 132, 131, 3, 40, 50, 0, 114, 97, 108,
+			2, 17, 71, 32, 3, 40, 51, 6, 35, 55, 0, 8, 2, 17, 65, 3, 122, 0, 7, 6, 118, 0, 105, 1, 17, 67, 2, 17, 65, 32,
+			3, 8, 84, 126, 0, 3, 84, 0, 118, 3, 84, 12, 0, 118, 105, 2, 17, 65, 3, 84, 12, 37, 0, 105, 1, 17, 67, 2, 17, 65,
+			3, 84, 126, 0, 7, 6, 119, 0, 3, 122, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 2, 25, 3, 37, 0, 3, 57,
+			0, 7, 6, 122, 0, 122, 1, 21, 2, 97, 110, 111, 32, 3, 8, 123, 12, 0, 4, 122, 97, 1, 21, 21, 2, 18, 69, 32, 3, 8,
+			128, 12, 35, 0, 122, 97, 1, 105, 2, 110, 111, 32, 0, 3, 123, 0, 122, 1, 17, 65, 2, 17, 65, 3, 123, 12, 0, 105, 111, 110,
+			2, 17, 65, 32, 3, 123, 37, 6, 110, 50, 0, 105, 111, 110, 97, 2, 18, 69, 32, 3, 123, 37, 6, 110, 50, 35, 0, 105, 111, 110,
+			97, 2, 116, 105, 32, 3, 123, 37, 110, 50, 6, 35, 0, 105, 111, 110, 97, 108, 2, 17, 71, 32, 3, 123, 37, 110, 50, 6, 35, 55,
+			0, 4, 2, 18, 66, 17, 65, 3, 128, 0, 8, 2, 17, 65, 17, 67, 0, 8, 2, 17, 71, 0, 8, 17, 65, 2, 17, 65, 17, 67,
+			0, 4, 122, 1, 17, 65, 17, 67, 2, 97, 114, 17, 67, 3, 128, 12, 0, 122, 1, 105, 108, 21, 2, 17, 65, 0, 122, 8, 17, 65,
+			2, 17, 65, 0, 122, 97, 1, 105, 21, 2, 116, 105, 32, 3, 128, 12, 6, 35, 0, 7, 6, 206, 0, 4, 172, 3, 6, 35, 55, 83,
+			35, 10, 0, 177, 0, 183, 3, 6, 36, 12, 47, 35, 15, 81, 14, 16, 6, 36, 49, 35, 0, 174, 3, 6, 36, 12, 47, 35, 15, 81,
+			14, 16, 6, 36, 49, 35, 10, 0, 191, 3, 6, 39, 65, 126, 49, 14, 16, 39, 50, 10, 0, 181, 3, 6, 109, 48, 89, 126, 55, 39,
+			50, 0, 173, 3, 6, 109, 48, 89, 126, 55, 39, 50, 10, 0, 184, 3, 47, 6, 36, 12, 47, 35, 15, 81, 14, 16, 6, 36, 49, 35,
+			10, 0, 186, 3, 49, 6, 35, 48, 12, 35, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 190, 3, 49, 89, 6, 126, 15, 81, 14, 16,
+			6, 36, 49, 35, 10, 0, 189, 3, 50, 6, 57, 40, 12, 10, 0, 187, 3, 55, 6, 35, 65, 71, 72, 35, 10, 0, 188, 3, 65, 6,
+			57, 40, 12, 10, 0, 178, 3, 71, 6, 36, 47, 35, 10, 0, 180, 3, 72, 6, 109, 55, 47, 35, 10, 0, 179, 3, 81, 6, 35, 65,
+			12, 35, 10, 0, 4, 175, 3, 126, 6, 39, 47, 35, 10, 0, 185, 0, 182, 3, 128, 6, 36, 47, 35, 15, 81, 14, 16, 6, 36, 49,
+			35, 0, 7, 6, 207, 0, 140, 3, 6, 39, 65, 126, 49, 14, 16, 39, 50, 10, 0, 4, 133, 3, 6, 126, 48, 89, 126, 55, 39, 50,
+			10, 0, 141, 0, 129, 3, 14, 16, 6, 110, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 4, 137, 3, 39, 65, 6, 36, 81, 35, 10,
+			0, 142, 0, 132, 3, 47, 6, 35, 40, 10, 0, 128, 3, 48, 6, 126, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 136, 3, 48, 89,
+			6, 126, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 135, 3, 49, 6, 126, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 134, 3, 83,
+			6, 126, 15, 81, 14, 16, 6, 36, 49, 35, 10, 0, 4, 130, 3, 89, 6, 126, 81, 65, 35, 10, 0, 131, 0, 7, 6, 0, 33, 1,
+			19, 3, 0, 195, 161, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0, 4, 195, 172, 3, 7, 37, 0, 195, 173, 0, 195, 179, 3, 7, 39,
+			0, 195, 179, 105, 3, 7, 39, 126, 0, 4, 195, 185, 3, 7, 40, 0, 195, 186, 0, 195, 168, 3, 7, 109, 0, 195, 168, 105, 2, 25,
+			3, 7, 109, 57, 0, 195, 178, 3, 7, 110, 0, 195, 178, 105, 3, 7, 110, 126, 0, 195, 169, 105, 2, 25, 3, 7, 118, 0, 4, 45,
+			1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 58, 8, 32, 18, 81, 2, 32, 18, 82, 15, 32,
+			3, 10, 3, 109, 10, 0, 33, 3, 10, 48, 6, 40, 50, 47, 39, 36, 89, 49, 55, 35, 65, 35, 47, 6, 37, 84, 39, 10, 0, 45,
+			8, 32, 2, 32, 15, 3, 65, 36, 50, 39, 0, 4, 103, 110, 3, 67, 0, 195, 177, 0, 36, 3, 72, 6, 39, 55, 55, 35, 51, 39,
+			0, 44, 1, 15, 2, 15, 3, 84, 6, 37, 14, 16, 81, 39, 55, 35, 0, 194, 167, 3, 89, 36, 123, 37, 6, 39, 50, 36, 0, 7,
+			0, 0};
+		autoFileInMemory espeakdata_dicts32 = FileInMemory_createWithData (61801, reinterpret_cast<const char *> (&espeakdata_dicts32_data), 
+			U"espeak-1.48.04-source/espeak-data/it_dict", 
 			U"it");
-		Collection_addItem (me.peek(), espeakdata_dicts29.transfer());
+		my addItem_move (espeakdata_dicts32.move());
 
-		static unsigned char espeakdata_dicts30_data[2058] = {
+		static unsigned char espeakdata_dicts33_data[2058] = {
 			0, 4, 0, 0, 84, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 13, 0, 0, 0, 0, 0, 6, 65, 12,
-			91, 13, 0, 0, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 0,
-			0, 6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 10, 65, 32, 13, 107, 6, 13, 71, 40, 0, 0, 0, 0, 0, 7, 65, 36, 37, 9,
-			0, 72, 0, 0, 0, 0, 6, 65, 40, 90, 13, 0, 0, 0, 0, 0, 6, 65, 44, 49, 13, 0, 0, 0, 0, 0, 6, 65, 48, 55,
-			13, 0, 0, 0, 0, 0, 6, 65, 52, 65, 13, 0, 0, 0, 0, 0, 6, 65, 56, 50, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 65, 64, 48, 13, 0, 0, 0, 0, 0, 9, 65, 68, 49, 6, 13, 71, 40, 0, 0, 0, 0, 0, 6, 65, 72, 51, 13, 0, 0,
-			0, 0, 0, 6, 65, 76, 89, 13, 0, 0, 0, 0, 0, 6, 65, 80, 47, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88,
-			84, 13, 0, 0, 0, 0, 0, 9, 65, 92, 84, 6, 13, 71, 40, 0, 0, 0, 0, 0, 6, 65, 96, 101, 13, 0, 0, 0, 0, 0,
-			8, 65, 100, 6, 13, 71, 40, 0, 0, 0, 0, 0, 6, 65, 104, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 4, 3, 21, 39, 9, 91, 6, 40, 107, 37, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 95, 4, 16, 20, 48, 37,
-			10, 0, 0, 0, 0, 0, 0, 7, 132, 16, 15, 39, 5, 76, 0, 0, 0, 0, 7, 132, 26, 15, 39, 5, 76, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 13, 4, 16, 15, 39, 21, 27, 48, 39, 107, 40, 0, 72, 0, 0, 0, 0, 13, 4, 14, 15, 39, 21,
-			27, 50, 39, 107, 40, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 69, 36, 163, 206, 4, 144, 27, 37, 90,
-			39, 50, 6, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 14, 69, 36, 161, 78, 4, 144, 27, 37, 90, 36, 50, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-			4, 10, 1, 39, 1, 90, 6, 35, 107, 35, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 45, 80, 49, 40, 24, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 56, 16, 50, 6, 35, 11, 0, 0, 10, 67, 8, 242, 64, 71,
-			112, 24, 0, 72, 0, 0, 0, 0, 10, 67, 44, 82, 64, 49, 111, 24, 0, 72, 10, 67, 56, 242, 64, 27, 50, 112, 0, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 36, 160, 64, 27, 37, 90, 35,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 36, 161, 64, 27, 37, 90, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68,
-			36, 224, 74, 4, 27, 37, 50, 35, 90, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 18, 21, 39, 5, 51, 6, 40, 107,
-			36, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 9, 10, 5, 39, 9, 27, 37, 90, 36, 107, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 5, 39, 15, 76,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 64, 82, 64, 48, 6, 111, 11, 0, 0, 0, 0,
-			0, 10, 67, 28, 242, 64, 27, 81, 112, 0, 72, 10, 67, 56, 18, 64, 50, 6, 110, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			67, 36, 163, 192, 27, 37, 90, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 88, 21, 64,
-			84, 108, 24, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 1, 35, 71, 40, 0, 0, 0, 0, 0, 8,
-			2, 95, 5, 36, 71, 40, 0, 0, 0, 0, 8, 2, 95, 9, 37, 71, 40, 0, 0, 0, 8, 2, 95, 15, 39, 71, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 21, 40, 71, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 95, 51, 91, 37, 0, 0, 7, 2, 95, 50, 51, 36, 0, 0, 7, 2,
-			95, 49, 48, 35, 0, 0, 7, 2, 95, 48, 50, 39, 0, 0, 7, 2, 95, 55, 88, 36, 0, 0, 7, 2, 95, 54, 101, 35, 0, 0,
-			7, 2, 95, 53, 65, 40, 0, 0, 7, 2, 95, 52, 84, 39, 0, 0, 0, 0, 7, 2, 95, 57, 89, 39, 0, 0, 7, 2, 95, 56,
-			71, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 69, 36, 160, 78, 4, 144, 27, 37, 90, 35, 50, 6, 110, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 66, 80, 240, 24, 47, 39, 0,
+			91, 13, 0, 0, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 0, 10, 4, 95, 100, 112, 116, 48, 37, 10, 0, 0, 0, 0, 0,
+			0, 6, 65, 24, 83, 13, 0, 0, 0, 0, 0, 6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 10, 65, 32, 13, 107, 6, 13, 71, 40,
+			0, 0, 0, 0, 0, 7, 65, 36, 37, 9, 0, 72, 0, 0, 0, 0, 6, 65, 40, 90, 13, 0, 0, 0, 0, 0, 6, 65, 44, 49,
+			13, 0, 0, 0, 0, 0, 6, 65, 48, 55, 13, 0, 0, 0, 0, 0, 6, 65, 52, 65, 13, 0, 0, 0, 0, 0, 6, 65, 56, 50,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 13, 0, 0, 0, 0, 0, 9, 65, 68, 49, 6, 13, 71, 40, 0, 0,
+			0, 0, 0, 7, 132, 122, 111, 39, 101, 76, 6, 65, 72, 51, 13, 0, 0, 0, 0, 0, 6, 65, 76, 89, 13, 0, 0, 0, 0, 0,
+			6, 65, 80, 47, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 13, 0, 0, 0, 0, 0, 9, 65, 92, 84, 6, 13,
+			71, 40, 0, 0, 0, 0, 0, 6, 65, 96, 101, 13, 0, 0, 0, 0, 0, 8, 65, 100, 6, 13, 71, 40, 0, 0, 0, 0, 0, 6,
+			65, 104, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 99, 117, 39, 105, 91, 6, 40, 107, 37, 11, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 13, 4, 112, 111, 39, 117, 27, 48, 39, 107, 40, 0, 72, 0, 0, 0, 0, 13, 4, 110, 111, 39, 117, 27, 50, 39, 107,
+			40, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 112, 111, 39, 101, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 105,
+			106, 101, 39, 105, 27, 37, 90, 36, 107, 37, 0, 0, 0, 9, 66, 45, 80, 49, 40, 24, 0, 72, 0, 0, 0, 0, 0, 13, 4, 106,
+			97, 39, 97, 90, 6, 35, 107, 35, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+			66, 56, 16, 50, 6, 35, 11, 0, 0, 10, 67, 8, 242, 64, 71, 112, 24, 0, 72, 0, 0, 0, 0, 10, 67, 44, 82, 64, 49, 111,
+			24, 0, 72, 10, 67, 56, 242, 64, 27, 50, 112, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 114, 117, 39, 101, 51, 6, 40,
+			107, 36, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 69, 36, 163, 206, 4, 144, 27, 37, 90, 39, 50, 6, 110, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 10, 67, 36, 160, 64, 27, 37, 90, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 36, 161, 64, 27, 37, 90,
+			36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 64, 82, 64, 48, 6, 111, 11, 0, 0, 0, 0, 6, 131, 101,
+			39, 111, 76, 0, 10, 67, 28, 242, 64, 27, 81, 112, 0, 72, 10, 67, 56, 18, 64, 50, 6, 110, 11, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 10, 67, 36, 163, 192, 27, 37, 90, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67,
+			88, 21, 64, 84, 108, 24, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 36, 161, 78, 4,
+			144, 27, 37, 90, 36, 50, 110, 0, 0, 0, 0, 0, 0, 0, 13, 68, 36, 224, 74, 4, 27, 37, 50, 35, 90, 35, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 2, 95, 51, 91, 37, 0, 0, 7, 2, 95, 50, 51, 36, 0, 0, 7, 2, 95, 49, 48, 35, 0, 0, 7, 2, 95, 48,
+			50, 39, 0, 0, 7, 2, 95, 55, 88, 36, 0, 0, 7, 2, 95, 54, 101, 35, 0, 0, 7, 2, 95, 53, 65, 40, 0, 0, 7, 2,
+			95, 52, 84, 39, 0, 0, 0, 0, 7, 2, 95, 57, 89, 39, 0, 0, 7, 2, 95, 56, 71, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 15, 69, 36, 160, 78, 4, 144, 27, 37, 90, 35, 50, 6, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 97, 35, 71, 40, 0, 0, 0, 0, 0, 8,
+			2, 95, 101, 36, 71, 40, 0, 0, 0, 0, 0, 8, 2, 95, 105, 37, 71, 40, 0, 0, 0, 8, 2, 95, 111, 39, 71, 40, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 117, 40, 71, 40, 0, 0, 0, 0, 0, 0, 9, 66, 80, 240, 24, 47, 39, 0,
 			72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23047,405 +33778,363 @@ FilesInMemory create_espeakdata_dicts () {
 			3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121, 0, 3, 13, 0, 7, 6, 122, 0, 3, 88,
 			0, 7, 6, 0, 203, 136, 3, 6, 0, 39, 8, 2, 32, 3, 6, 13, 107, 13, 0, 4, 46, 3, 11, 0, 46, 2, 32, 14, 128, 128,
 			129, 0, 46, 8, 2, 21, 14, 128, 132, 129, 0, 39, 3, 107, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts30 = FileInMemory_createWithData (2057, reinterpret_cast<const char *> (&espeakdata_dicts30_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/jbo_dict", 
+		autoFileInMemory espeakdata_dicts33 = FileInMemory_createWithData (2057, reinterpret_cast<const char *> (&espeakdata_dicts33_data), 
+			U"espeak-1.48.04-source/espeak-data/jbo_dict", 
 			U"jbo");
-		Collection_addItem (me.peek(), espeakdata_dicts30.transfer());
+		my addItem_move (espeakdata_dicts33.move());
 
-		static unsigned char espeakdata_dicts31_data[3163] = {
-			0, 4, 0, 0, 158, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 33, 111, 6, 35, 101, 37, 55, 37, 89, 15, 50, 4, 37, 91, 35, 50,
-			37, 0, 0, 0, 12, 1, 35, 50, 6, 39, 65, 36, 34, 37, 0, 27, 0, 0, 13, 1, 37, 48, 34, 39, 109, 36, 50, 47, 37, 0,
-			27, 0, 6, 1, 38, 72, 35, 0, 0, 0, 0, 0, 16, 1, 42, 84, 35, 34, 84, 89, 49, 84, 55, 35, 84, 37, 0, 27, 0, 11,
-			1, 43, 48, 55, 37, 40, 89, 37, 0, 27, 0, 0, 0, 11, 1, 46, 112, 36, 34, 47, 37, 55, 37, 0, 0, 29, 1, 47, 65, 6,
-			35, 34, 109, 101, 50, 37, 84, 15, 72, 6, 35, 101, 34, 37, 55, 37, 15, 101, 6, 35, 88, 37, 0, 27, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 11, 5, 95, 48, 1, 14, 4, 72, 2, 35, 0, 0, 0, 0, 0, 0, 11, 1, 61, 47, 39, 55, 39, 71, 35, 0, 27,
-			0, 0, 0, 11, 1, 64, 111, 35, 100, 55, 40, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			4, 95, 48, 67, 48, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1, 92, 65, 6, 35, 34, 75,
-			84, 50, 37, 84, 15, 72, 6, 35, 101, 34, 37, 55, 37, 15, 101, 6, 35, 88, 37, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 225, 131, 147, 225, 131, 144, 72, 28, 0, 0, 12, 4, 95, 50,
-			67, 48, 39, 34, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 4, 16, 20, 65, 25, 36, 55, 37, 10, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 225, 131, 156, 50, 6, 13, 0, 0, 7, 3, 225, 131, 157, 39, 0, 0, 9, 3,
-			225, 131, 158, 48, 6, 13, 0, 0, 9, 3, 225, 131, 159, 90, 6, 13, 0, 0, 7, 3, 225, 131, 152, 37, 0, 0, 9, 3, 225, 131,
-			153, 49, 6, 13, 0, 0, 9, 3, 225, 131, 154, 55, 6, 13, 0, 0, 9, 3, 225, 131, 155, 65, 6, 13, 0, 0, 0, 9, 3, 225,
-			131, 149, 84, 6, 13, 0, 0, 9, 3, 225, 131, 150, 88, 6, 13, 0, 16, 5, 95, 48, 77, 50, 24, 65, 6, 37, 55, 37, 39, 50,
-			37, 0, 0, 9, 3, 225, 131, 151, 25, 6, 13, 0, 0, 7, 3, 225, 131, 144, 35, 0, 0, 9, 3, 225, 131, 145, 71, 6, 13, 0,
-			0, 9, 3, 225, 131, 146, 81, 6, 13, 0, 0, 9, 3, 225, 131, 147, 72, 6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 95, 48, 77, 49, 24, 6, 35, 25, 35, 89, 37, 0, 0, 0, 11, 3, 225, 131,
-			184, 36, 55, 37, 83, 37, 0, 0, 0, 0, 9, 3, 225, 131, 181, 107, 39, 36, 0, 0, 9, 3, 225, 131, 180, 107, 35, 34, 0, 0,
-			10, 3, 225, 131, 183, 89, 107, 84, 35, 0, 0, 8, 3, 225, 131, 182, 83, 37, 0, 0, 8, 3, 225, 131, 177, 107, 36, 0, 0, 9,
-			3, 225, 131, 176, 107, 6, 13, 0, 0, 9, 3, 225, 131, 179, 84, 37, 36, 0, 13, 4, 95, 51, 67, 48, 89, 35, 65, 35, 89, 37,
-			0, 0, 9, 3, 225, 131, 178, 107, 37, 36, 0, 0, 9, 3, 225, 131, 173, 80, 6, 13, 0, 0, 9, 3, 225, 131, 172, 112, 6, 13,
-			0, 0, 9, 3, 225, 131, 175, 75, 6, 13, 0, 0, 9, 3, 225, 131, 174, 101, 6, 13, 0, 0, 9, 3, 225, 131, 169, 76, 6, 13,
-			0, 0, 9, 3, 225, 131, 168, 91, 6, 13, 0, 0, 9, 3, 225, 131, 171, 111, 6, 13, 0, 0, 9, 3, 225, 131, 170, 109, 6, 13,
-			0, 0, 9, 3, 225, 131, 165, 110, 6, 13, 0, 0, 9, 3, 225, 131, 164, 108, 6, 13, 0, 0, 9, 3, 225, 131, 167, 104, 6, 13,
-			0, 0, 9, 3, 225, 131, 166, 100, 6, 13, 0, 0, 9, 3, 225, 131, 161, 89, 6, 13, 0, 0, 9, 3, 225, 131, 160, 34, 6, 13,
-			0, 0, 7, 3, 225, 131, 163, 40, 0, 7, 3, 225, 131, 163, 40, 0, 0, 9, 3, 225, 131, 162, 47, 6, 13, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 52, 67, 48, 39, 47, 101, 35, 89, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 48, 6, 39, 109, 37, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 6, 95, 18, 15, 13, 1, 14, 65, 6,
-			36, 89, 35, 65, 36, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 48, 90, 53, 65, 36, 6, 35, 89, 37, 35, 25, 35, 89, 36,
-			72, 37, 0, 13, 3, 95, 54, 48, 89, 6, 35, 65, 39, 112, 37, 0, 0, 20, 4, 95, 48, 90, 52, 65, 36, 6, 35, 25, 37, 35,
-			25, 35, 89, 36, 72, 37, 0, 8, 3, 95, 48, 67, 35, 89, 0, 0, 0, 19, 4, 95, 48, 90, 54, 65, 36, 65, 6, 37, 55, 37,
-			39, 50, 36, 72, 37, 0, 0, 15, 4, 95, 48, 90, 49, 65, 36, 6, 35, 25, 36, 72, 37, 0, 0, 0, 17, 4, 95, 48, 90, 51,
-			65, 36, 6, 35, 25, 35, 89, 36, 72, 37, 0, 0, 15, 4, 95, 48, 90, 50, 65, 36, 6, 35, 89, 36, 72, 37, 0, 0, 0, 0,
-			0, 0, 0, 14, 4, 95, 53, 67, 48, 101, 6, 40, 25, 35, 89, 37, 0, 0, 0, 15, 3, 95, 49, 57, 109, 101, 34, 6, 35, 65,
-			36, 47, 37, 0, 0, 15, 3, 95, 49, 56, 25, 84, 34, 6, 35, 65, 36, 47, 37, 0, 0, 10, 3, 95, 50, 67, 39, 34, 35, 89,
-			0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 49, 25, 6, 36, 34, 25, 65, 36, 47, 37, 0, 0, 10, 3, 95, 49, 48, 6, 35,
-			25, 37, 0, 0, 11, 3, 95, 51, 67, 89, 35, 65, 35, 89, 0, 13, 3, 95, 49, 51, 109, 6, 35, 65, 36, 47, 37, 0, 0, 14,
-			3, 95, 49, 50, 25, 6, 39, 34, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 53, 25, 101, 6, 40, 25, 65, 36, 47, 37, 0, 0,
-			15, 3, 95, 49, 52, 25, 6, 39, 25, 101, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 55, 76, 84, 6, 37, 72, 65, 36, 47, 37,
-			0, 0, 16, 3, 95, 49, 54, 25, 6, 36, 110, 84, 89, 65, 36, 47, 37, 0, 0, 0, 0, 11, 3, 95, 52, 67, 39, 47, 101, 35,
-			89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 53, 67, 101, 6, 40, 25, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-			3, 95, 52, 48, 6, 39, 34, 65, 39, 112, 37, 0, 0, 13, 3, 95, 54, 67, 6, 36, 110, 84, 89, 35, 89, 0, 0, 0, 0, 0,
-			0, 0, 0, 9, 3, 95, 50, 88, 6, 39, 109, 0, 0, 13, 3, 95, 55, 67, 91, 84, 6, 37, 72, 35, 89, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 11, 3, 95, 56, 67, 34, 84, 35, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 88, 6, 39, 34,
-			65, 39, 112, 0, 0, 13, 3, 95, 57, 67, 109, 101, 34, 6, 35, 35, 89, 0, 0, 0, 0, 0, 15, 4, 95, 54, 67, 48, 6, 36,
-			110, 84, 89, 35, 89, 37, 0, 0, 0, 0, 14, 3, 95, 56, 48, 6, 39, 25, 101, 65, 39, 112, 37, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 12, 3, 95, 54, 88, 89, 6, 35, 65, 39, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			13, 3, 95, 56, 88, 6, 39, 25, 101, 65, 39, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 55, 67, 48, 91, 84, 6,
-			37, 72, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 6, 37, 55,
-			37, 39, 50, 0, 0, 0, 0, 12, 4, 95, 48, 77, 49, 6, 35, 25, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 4, 95, 56, 67, 48, 34, 84, 35, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 23, 67, 33, 69, 16, 6, 36, 57, 76, 47, 37, 47, 37, 48, 107, 37, 10, 0, 81, 58, 47, 47, 32, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 57, 67, 48, 109, 101, 34, 6, 35, 35, 89, 37,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 8, 4, 95, 225, 131, 148, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34,
-			71, 34, 14, 80, 104, 35, 55, 37, 0, 0, 0, 0, 14, 2, 95, 39, 35, 48, 39, 89, 47, 34, 39, 83, 37, 0, 0, 0, 0, 0,
-			0, 0, 34, 2, 95, 41, 65, 6, 35, 34, 75, 84, 36, 50, 35, 15, 65, 34, 14, 81, 84, 6, 35, 55, 37, 15, 108, 34, 14, 76,
-			101, 6, 37, 55, 37, 0, 35, 2, 95, 41, 65, 6, 35, 34, 75, 84, 36, 50, 35, 15, 108, 6, 37, 81, 40, 34, 4, 40, 55, 37,
-			15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 34, 2, 95, 40, 65, 6, 35, 34, 109, 101, 36, 50, 35, 15, 65, 34, 14, 81,
-			84, 6, 35, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 35, 2, 95, 40, 65, 6, 35, 34, 109, 101, 36, 50, 35, 15,
-			108, 6, 37, 81, 40, 34, 4, 40, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 0, 0, 9, 2, 95, 45, 47, 37,
-			34, 36, 0, 0, 10, 2, 95, 44, 65, 111, 37, 65, 36, 0, 0, 10, 2, 95, 51, 89, 6, 35, 65, 37, 0, 0, 9, 2, 95, 50,
-			6, 39, 34, 37, 0, 0, 10, 2, 95, 49, 6, 36, 34, 25, 37, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 37, 0, 0, 11, 2,
-			95, 55, 91, 84, 6, 37, 72, 37, 0, 0, 11, 2, 95, 54, 6, 36, 110, 84, 89, 37, 0, 0, 10, 2, 95, 53, 101, 6, 40, 25,
-			37, 0, 0, 10, 2, 95, 52, 6, 39, 25, 101, 37, 0, 0, 16, 2, 95, 59, 112, 36, 34, 47, 37, 55, 65, 111, 37, 65, 36, 0,
-			0, 14, 2, 95, 58, 39, 34, 112, 36, 34, 47, 37, 55, 37, 0, 0, 10, 2, 95, 57, 109, 101, 34, 6, 35, 0, 0, 9, 2, 95,
-			56, 34, 84, 6, 35, 0, 0, 21, 2, 95, 63, 49, 6, 37, 25, 101, 84, 37, 89, 15, 50, 4, 37, 91, 35, 50, 37, 0, 0, 11,
-			2, 95, 62, 65, 36, 47, 39, 71, 35, 0, 0, 0, 14, 2, 95, 60, 50, 35, 49, 55, 36, 71, 39, 71, 35, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 2, 95, 91, 65, 6, 35, 34, 109,
-			101, 36, 50, 35, 15, 49, 84, 6, 35, 72, 34, 35, 47, 4, 40, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 0,
-			0, 0, 0, 0, 35, 2, 95, 93, 65, 6, 35, 34, 75, 84, 36, 50, 35, 15, 108, 6, 37, 81, 40, 34, 4, 40, 55, 37, 15, 108,
-			34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 0, 0, 0, 0, 21, 2, 95, 96, 40, 49, 40, 100, 65, 35, 15, 35, 48, 39, 89, 47,
-			34, 39, 83, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 81, 0, 1, 45, 2, 32, 3, 2, 35, 0,
-			3, 35, 0, 7, 6, 1, 82, 0, 3, 71, 0, 7, 6, 1, 83, 0, 3, 81, 0, 7, 6, 1, 84, 0, 3, 72, 0, 7, 6, 1,
-			85, 0, 1, 45, 2, 32, 3, 2, 36, 0, 3, 36, 0, 7, 6, 1, 86, 0, 3, 84, 0, 7, 6, 1, 87, 0, 3, 88, 0, 7,
-			6, 1, 88, 0, 3, 25, 0, 7, 6, 1, 89, 0, 1, 45, 2, 32, 3, 2, 37, 0, 3, 37, 0, 7, 6, 1, 90, 0, 3, 49,
-			0, 7, 6, 1, 91, 0, 3, 55, 0, 7, 6, 1, 92, 0, 3, 65, 0, 7, 6, 1, 93, 0, 3, 50, 0, 7, 6, 1, 94, 0,
-			1, 45, 2, 32, 3, 2, 39, 0, 3, 39, 0, 7, 6, 1, 95, 0, 3, 48, 0, 7, 6, 1, 96, 0, 3, 90, 0, 7, 6, 1,
-			97, 0, 3, 34, 0, 1, 25, 2, 17, 67, 17, 67, 3, 34, 14, 0, 7, 6, 1, 98, 0, 3, 89, 0, 7, 6, 1, 99, 0, 3,
-			47, 0, 7, 6, 1, 100, 0, 1, 45, 2, 32, 3, 2, 40, 0, 3, 40, 0, 7, 6, 1, 101, 0, 3, 108, 0, 7, 6, 1, 102,
-			0, 3, 110, 0, 7, 6, 1, 103, 0, 3, 100, 0, 7, 6, 1, 104, 0, 3, 104, 0, 7, 6, 1, 105, 0, 3, 91, 0, 7, 6,
-			1, 106, 0, 3, 76, 0, 7, 6, 1, 107, 0, 3, 109, 0, 7, 6, 1, 108, 0, 3, 111, 0, 7, 6, 1, 109, 0, 3, 112, 0,
-			7, 6, 1, 110, 0, 3, 80, 0, 7, 6, 1, 111, 0, 3, 101, 0, 7, 6, 1, 112, 0, 3, 75, 0, 7, 6, 1, 113, 0, 3,
-			107, 0, 7, 6, 1, 114, 0, 3, 36, 57, 0, 7, 6, 1, 115, 0, 3, 57, 0, 7, 6, 1, 116, 0, 3, 58, 0, 7, 6, 1,
-			117, 0, 3, 101, 0, 7, 6, 1, 118, 0, 3, 39, 12, 0, 7, 6, 1, 119, 0, 3, 83, 0, 7, 6, 1, 120, 0, 3, 13, 0,
-			7, 6, 1, 121, 0, 3, 19, 0, 7, 6, 1, 122, 0, 3, 0, 7, 6, 1, 123, 0, 3, 0, 7, 6, 208, 0, 3, 21, 114, 117,
-			0, 7, 6, 209, 0, 3, 21, 114, 117, 0, 7, 6, 210, 0, 3, 21, 114, 117, 0, 7, 6, 211, 0, 3, 21, 114, 117, 0, 7, 6,
-			0, 36, 3, 72, 39, 55, 35, 34, 37, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts31 = FileInMemory_createWithData (3162, reinterpret_cast<const char *> (&espeakdata_dicts31_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ka_dict", 
+		static unsigned char espeakdata_dicts34_data[3139] = {
+			0, 4, 0, 0, 170, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4,
+			95, 100, 112, 116, 65, 25, 36, 55, 37, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 33, 111, 6,
+			35, 101, 37, 55, 37, 89, 15, 50, 4, 37, 91, 35, 50, 37, 0, 0, 0, 12, 1, 35, 50, 6, 39, 65, 36, 34, 37, 0, 27, 0,
+			0, 13, 1, 37, 48, 34, 39, 109, 36, 50, 47, 37, 0, 27, 0, 6, 1, 38, 72, 35, 0, 0, 0, 0, 0, 16, 1, 42, 84, 35,
+			34, 84, 89, 49, 84, 55, 35, 84, 37, 0, 27, 0, 11, 1, 43, 48, 55, 37, 40, 89, 37, 0, 27, 0, 0, 0, 11, 1, 46, 112,
+			36, 34, 47, 37, 55, 37, 0, 0, 29, 1, 47, 65, 6, 35, 34, 109, 101, 50, 37, 84, 15, 72, 6, 35, 101, 34, 37, 55, 37, 15,
+			101, 6, 35, 88, 37, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 61, 47, 39, 55, 39, 71, 35,
+			0, 27, 0, 0, 0, 11, 1, 64, 111, 35, 100, 55, 40, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 10, 4, 95, 48, 67, 48, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 67, 33, 69, 16, 6, 36, 57, 76, 47, 37,
+			47, 37, 48, 107, 37, 10, 0, 81, 58, 47, 47, 32, 0, 6, 65, 88, 21, 0, 47, 0, 0, 0, 0, 29, 1, 92, 65, 6, 35, 34,
+			75, 84, 50, 37, 84, 15, 72, 6, 35, 101, 34, 37, 55, 37, 15, 101, 6, 35, 88, 37, 0, 27, 0, 0, 0, 0, 6, 65, 96, 21,
+			0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 225, 131, 147, 225, 131, 144, 72,
+			28, 0, 0, 12, 4, 95, 50, 67, 48, 39, 34, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 9, 3, 225, 131, 156, 50, 6, 13, 0, 0, 7, 3, 225, 131, 157, 39, 0, 0, 9, 3, 225, 131, 158, 48, 6, 13,
+			0, 0, 9, 3, 225, 131, 159, 90, 6, 13, 0, 0, 7, 3, 225, 131, 152, 37, 0, 0, 9, 3, 225, 131, 153, 49, 6, 13, 0, 0,
+			9, 3, 225, 131, 154, 55, 6, 13, 0, 0, 9, 3, 225, 131, 155, 65, 6, 13, 0, 0, 0, 9, 3, 225, 131, 149, 84, 6, 13, 0,
+			0, 9, 3, 225, 131, 150, 88, 6, 13, 0, 0, 9, 3, 225, 131, 151, 25, 6, 13, 0, 0, 7, 3, 225, 131, 144, 35, 0, 0, 9,
+			3, 225, 131, 145, 71, 6, 13, 0, 0, 9, 3, 225, 131, 146, 81, 6, 13, 0, 0, 9, 3, 225, 131, 147, 72, 6, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 225, 131, 184, 36, 55, 37, 83, 37,
+			0, 0, 0, 0, 9, 3, 225, 131, 181, 107, 39, 36, 0, 0, 9, 3, 225, 131, 180, 107, 35, 34, 0, 0, 10, 3, 225, 131, 183, 89,
+			107, 84, 35, 0, 0, 8, 3, 225, 131, 182, 83, 37, 0, 0, 8, 3, 225, 131, 177, 107, 36, 0, 0, 9, 3, 225, 131, 176, 107, 6,
+			13, 0, 0, 9, 3, 225, 131, 179, 84, 37, 36, 0, 13, 4, 95, 51, 67, 48, 89, 35, 65, 35, 89, 37, 0, 0, 9, 3, 225, 131,
+			178, 107, 37, 36, 0, 0, 9, 3, 225, 131, 173, 80, 6, 13, 0, 0, 9, 3, 225, 131, 172, 112, 6, 13, 0, 0, 9, 3, 225, 131,
+			175, 75, 6, 13, 0, 0, 9, 3, 225, 131, 174, 101, 6, 13, 0, 0, 9, 3, 225, 131, 169, 76, 6, 13, 0, 0, 9, 3, 225, 131,
+			168, 91, 6, 13, 0, 0, 9, 3, 225, 131, 171, 111, 6, 13, 0, 0, 9, 3, 225, 131, 170, 109, 6, 13, 0, 0, 9, 3, 225, 131,
+			165, 110, 6, 13, 0, 0, 9, 3, 225, 131, 164, 108, 6, 13, 0, 0, 9, 3, 225, 131, 167, 104, 6, 13, 0, 0, 9, 3, 225, 131,
+			166, 100, 6, 13, 0, 0, 9, 3, 225, 131, 161, 89, 6, 13, 0, 0, 9, 3, 225, 131, 160, 34, 6, 13, 0, 0, 7, 3, 225, 131,
+			163, 40, 0, 7, 3, 225, 131, 163, 40, 0, 0, 9, 3, 225, 131, 162, 47, 6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 16, 5, 95, 48, 77, 50, 120, 65, 6, 37, 55, 37, 39, 50, 37, 0, 0, 0, 0, 13, 4, 95, 52, 67, 48, 39,
+			47, 101, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 48,
+			6, 39, 109, 37, 0, 0, 0, 14, 5, 95, 48, 77, 49, 120, 6, 35, 25, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 48, 90, 53, 65, 36, 6,
+			35, 89, 37, 35, 25, 35, 89, 36, 72, 37, 0, 13, 3, 95, 54, 48, 89, 6, 35, 65, 39, 112, 37, 0, 0, 20, 4, 95, 48, 90,
+			52, 65, 36, 6, 35, 25, 37, 35, 25, 35, 89, 36, 72, 37, 0, 8, 3, 95, 48, 67, 35, 89, 0, 0, 0, 19, 4, 95, 48, 90,
+			54, 65, 36, 65, 6, 37, 55, 37, 39, 50, 36, 72, 37, 0, 0, 15, 4, 95, 48, 90, 49, 65, 36, 6, 35, 25, 36, 72, 37, 0,
+			0, 0, 17, 4, 95, 48, 90, 51, 65, 36, 6, 35, 25, 35, 89, 36, 72, 37, 0, 0, 15, 4, 95, 48, 90, 50, 65, 36, 6, 35,
+			89, 36, 72, 37, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 53, 67, 48, 101, 6, 40, 25, 35, 89, 37, 0, 0, 0, 15, 3, 95,
+			49, 57, 109, 101, 34, 6, 35, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 56, 25, 84, 34, 6, 35, 65, 36, 47, 37, 0, 0, 10,
+			3, 95, 50, 67, 39, 34, 35, 89, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 49, 25, 6, 36, 34, 25, 65, 36, 47, 37, 0,
+			0, 10, 3, 95, 49, 48, 6, 35, 25, 37, 0, 0, 11, 3, 95, 51, 67, 89, 35, 65, 35, 89, 0, 13, 3, 95, 49, 51, 109, 6,
+			35, 65, 36, 47, 37, 0, 0, 14, 3, 95, 49, 50, 25, 6, 39, 34, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 53, 25, 101, 6,
+			40, 25, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 52, 25, 6, 39, 25, 101, 65, 36, 47, 37, 0, 0, 15, 3, 95, 49, 55, 76,
+			84, 6, 37, 72, 65, 36, 47, 37, 0, 0, 16, 3, 95, 49, 54, 25, 6, 36, 110, 84, 89, 65, 36, 47, 37, 0, 0, 0, 0, 11,
+			3, 95, 52, 67, 39, 47, 101, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 53, 67, 101, 6, 40, 25, 35, 89, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 52, 48, 6, 39, 34, 65, 39, 112, 37, 0, 0, 13, 3, 95, 54, 67, 6, 36, 110, 84,
+			89, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 50, 88, 6, 39, 109, 0, 0, 13, 3, 95, 55, 67, 91, 84, 6, 37,
+			72, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 56, 67, 34, 84, 35, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 3, 95, 52, 88, 6, 39, 34, 65, 39, 112, 0, 0, 13, 3, 95, 57, 67, 109, 101, 34, 6, 35, 35, 89, 0, 0, 0, 0, 0,
+			15, 4, 95, 54, 67, 48, 6, 36, 110, 84, 89, 35, 89, 37, 0, 0, 0, 0, 14, 3, 95, 56, 48, 6, 39, 25, 101, 65, 39, 112,
+			37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 54, 88, 89, 6, 35, 65, 39, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 6, 39, 25, 101, 65, 39, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			4, 95, 55, 67, 48, 91, 84, 6, 37, 72, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4,
+			95, 48, 77, 50, 65, 6, 37, 55, 37, 39, 50, 0, 0, 0, 0, 12, 4, 95, 48, 77, 49, 6, 35, 25, 35, 89, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 56, 67, 48, 34, 84, 35, 35, 89, 37, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 15, 4, 95, 57, 67, 48, 109, 101, 34, 6, 35, 35, 89, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 95, 225, 131, 148, 36, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 71, 34, 14, 80, 104, 35, 55, 37, 0, 0, 0, 0, 14, 2, 95,
+			39, 35, 48, 39, 89, 47, 34, 39, 83, 37, 0, 0, 0, 0, 0, 0, 0, 34, 2, 95, 41, 65, 6, 35, 34, 75, 84, 36, 50, 35,
+			15, 65, 34, 14, 81, 84, 6, 35, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 35, 2, 95, 41, 65, 6, 35, 34, 75,
+			84, 36, 50, 35, 15, 108, 6, 37, 81, 40, 34, 4, 40, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 34, 2, 95,
+			40, 65, 6, 35, 34, 109, 101, 36, 50, 35, 15, 65, 34, 14, 81, 84, 6, 35, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37,
+			0, 35, 2, 95, 40, 65, 6, 35, 34, 109, 101, 36, 50, 35, 15, 108, 6, 37, 81, 40, 34, 4, 40, 55, 37, 15, 108, 34, 14, 76,
+			101, 6, 37, 55, 37, 0, 0, 0, 0, 9, 2, 95, 45, 47, 37, 34, 36, 0, 0, 10, 2, 95, 44, 65, 111, 37, 65, 36, 0, 0,
+			10, 2, 95, 51, 89, 6, 35, 65, 37, 0, 0, 9, 2, 95, 50, 6, 39, 34, 37, 0, 0, 10, 2, 95, 49, 6, 36, 34, 25, 37,
+			0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 37, 0, 0, 11, 2, 95, 55, 91, 84, 6, 37, 72, 37, 0, 0, 11, 2, 95, 54, 6,
+			36, 110, 84, 89, 37, 0, 0, 10, 2, 95, 53, 101, 6, 40, 25, 37, 0, 0, 10, 2, 95, 52, 6, 39, 25, 101, 37, 0, 0, 16,
+			2, 95, 59, 112, 36, 34, 47, 37, 55, 65, 111, 37, 65, 36, 0, 0, 14, 2, 95, 58, 39, 34, 112, 36, 34, 47, 37, 55, 37, 0,
+			0, 10, 2, 95, 57, 109, 101, 34, 6, 35, 0, 0, 9, 2, 95, 56, 34, 84, 6, 35, 0, 0, 21, 2, 95, 63, 49, 6, 37, 25,
+			101, 84, 37, 89, 15, 50, 4, 37, 91, 35, 50, 37, 0, 0, 11, 2, 95, 62, 65, 36, 47, 39, 71, 35, 0, 0, 0, 14, 2, 95,
+			60, 50, 35, 49, 55, 36, 71, 39, 71, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 37, 2, 95, 91, 65, 6, 35, 34, 109, 101, 36, 50, 35, 15, 49, 84, 6, 35, 72, 34, 35, 47, 4, 40,
+			55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 0, 0, 0, 0, 0, 35, 2, 95, 93, 65, 6, 35, 34, 75, 84, 36,
+			50, 35, 15, 108, 6, 37, 81, 40, 34, 4, 40, 55, 37, 15, 108, 34, 14, 76, 101, 6, 37, 55, 37, 0, 0, 0, 0, 0, 0, 21,
+			2, 95, 96, 40, 49, 40, 100, 65, 35, 15, 35, 48, 39, 89, 47, 34, 39, 83, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 95, 48, 97, 110, 100, 72, 2,
+			35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 16, 6, 95, 114, 111, 109, 97, 110, 65, 6, 36, 89, 35, 65, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 1, 49, 0, 1, 45, 2, 32, 3, 2, 35, 0, 3, 35, 0, 7, 6, 1, 50, 0, 3, 71, 0, 7, 6, 1, 51, 0, 3, 81,
+			0, 7, 6, 1, 52, 0, 3, 72, 0, 7, 6, 1, 53, 0, 1, 45, 2, 32, 3, 2, 36, 0, 3, 36, 0, 7, 6, 1, 54, 0,
+			3, 84, 0, 7, 6, 1, 55, 0, 3, 88, 0, 7, 6, 1, 56, 0, 3, 25, 0, 7, 6, 1, 57, 0, 1, 45, 2, 32, 3, 2,
+			37, 0, 3, 37, 0, 7, 6, 1, 58, 0, 3, 49, 0, 7, 6, 1, 59, 0, 3, 55, 0, 7, 6, 1, 60, 0, 3, 65, 0, 7,
+			6, 1, 61, 0, 3, 50, 0, 7, 6, 1, 62, 0, 1, 45, 2, 32, 3, 2, 39, 0, 3, 39, 0, 7, 6, 1, 63, 0, 3, 48,
+			0, 7, 6, 1, 64, 0, 3, 90, 0, 7, 6, 1, 65, 0, 3, 34, 0, 1, 25, 2, 17, 67, 17, 67, 3, 34, 14, 0, 7, 6,
+			1, 66, 0, 3, 89, 0, 7, 6, 1, 67, 0, 3, 47, 0, 7, 6, 1, 68, 0, 1, 45, 2, 32, 3, 2, 40, 0, 3, 40, 0,
+			7, 6, 1, 69, 0, 3, 108, 0, 7, 6, 1, 70, 0, 3, 110, 0, 7, 6, 1, 71, 0, 3, 100, 0, 7, 6, 1, 72, 0, 3,
+			104, 0, 7, 6, 1, 73, 0, 3, 91, 0, 7, 6, 1, 74, 0, 3, 76, 0, 7, 6, 1, 75, 0, 3, 109, 0, 7, 6, 1, 76,
+			0, 3, 111, 0, 7, 6, 1, 77, 0, 3, 112, 0, 7, 6, 1, 78, 0, 3, 80, 0, 7, 6, 1, 79, 0, 3, 101, 0, 7, 6,
+			1, 80, 0, 3, 75, 0, 7, 6, 1, 81, 0, 3, 107, 0, 7, 6, 1, 82, 0, 3, 36, 57, 0, 7, 6, 1, 83, 0, 3, 57,
+			0, 7, 6, 1, 84, 0, 3, 58, 0, 7, 6, 1, 85, 0, 3, 101, 0, 7, 6, 1, 86, 0, 3, 39, 12, 0, 7, 6, 1, 87,
+			0, 3, 83, 0, 7, 6, 1, 88, 0, 3, 13, 0, 7, 6, 1, 89, 0, 3, 19, 0, 7, 6, 1, 90, 0, 3, 0, 7, 6, 1,
+			91, 0, 3, 0, 7, 6, 0, 36, 3, 72, 39, 55, 35, 34, 37, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts34 = FileInMemory_createWithData (3138, reinterpret_cast<const char *> (&espeakdata_dicts34_data), 
+			U"espeak-1.48.04-source/espeak-data/ka_dict", 
 			U"ka");
-		Collection_addItem (me.peek(), espeakdata_dicts31.transfer());
-
-		static unsigned char espeakdata_dicts32_data[2024] = {
-			0, 4, 0, 0, 132, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 4, 16, 20, 10, 71, 4, 110, 47, 108, 50, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 48, 90, 53, 90, 6, 110, 88,
-			15, 65, 4, 109, 68, 50, 112, 50, 0, 11, 3, 95, 51, 88, 6, 39, 47, 109, 88, 0, 0, 18, 4, 95, 48, 90, 52, 6, 39, 50,
-			15, 65, 4, 109, 68, 50, 112, 50, 0, 10, 3, 95, 48, 67, 90, 6, 110, 88, 0, 0, 22, 4, 95, 48, 90, 55, 6, 39, 50, 15,
-			65, 37, 55, 55, 37, 4, 39, 50, 50, 112, 50, 0, 0, 18, 4, 95, 48, 90, 54, 65, 37, 55, 55, 37, 6, 39, 50, 50, 112, 50,
-			0, 0, 13, 4, 95, 48, 90, 49, 6, 39, 50, 50, 112, 50, 0, 0, 0, 14, 4, 95, 48, 90, 51, 65, 6, 109, 68, 50, 112, 50,
-			0, 0, 14, 4, 95, 48, 90, 50, 90, 6, 110, 88, 72, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 48, 90, 57, 65, 37, 55, 55, 37, 6, 112, 34, 72, 47, 112, 50, 0, 0, 23, 4, 95,
-			48, 90, 56, 90, 6, 110, 88, 15, 65, 37, 55, 55, 37, 6, 39, 50, 50, 112, 50, 0, 0, 0, 0, 13, 3, 95, 55, 88, 90, 6,
-			36, 47, 48, 108, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 49, 88, 6, 39, 50,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 90, 37, 6, 109, 34, 65, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 88, 104, 6, 109, 34, 109, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3,
-			95, 53, 88, 6, 36, 55, 38, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 54, 88, 6, 112, 55, 48, 109, 89, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 89, 6, 36, 49, 89, 36, 50, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 47, 6, 39, 104, 89, 112, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 55, 37, 6, 39, 50, 0, 0, 16, 4, 95, 48, 77, 51, 65, 37, 55, 55, 37,
-			6, 112, 34, 72, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 109, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 209, 135, 76, 36, 0, 0, 8, 2, 209, 134, 47, 89, 36, 0, 0, 7, 2, 209, 133,
-			106, 112, 0, 0, 7, 2, 209, 132, 114, 83, 0, 0, 0, 7, 2, 209, 130, 47, 36, 0, 0, 7, 2, 209, 129, 114, 89, 0, 0, 7,
-			2, 209, 128, 114, 34, 0, 0, 0, 0, 0, 15, 2, 209, 140, 90, 108, 68, 108, 91, 49, 36, 55, 108, 49, 0, 0, 0, 10, 2, 209,
-			138, 112, 57, 109, 34, 40, 0, 0, 8, 2, 209, 137, 91, 76, 35, 0, 0, 7, 2, 209, 136, 91, 35, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 7, 2, 210, 147, 116, 36, 0, 0, 0, 0, 0, 7, 2, 95, 51, 110, 91, 0, 0, 9, 2, 95, 50,
-			36, 49, 6, 108, 0, 0, 9, 2, 95, 49, 71, 6, 108, 34, 0, 0, 9, 2, 95, 48, 50, 6, 115, 55, 0, 0, 11, 2, 95, 55,
-			90, 6, 36, 47, 6, 108, 0, 7, 2, 210, 155, 104, 112, 0, 0, 10, 2, 95, 54, 112, 55, 47, 6, 109, 0, 0, 9, 2, 95, 53,
-			71, 6, 36, 89, 0, 0, 10, 2, 95, 52, 47, 6, 115, 34, 47, 0, 0, 7, 2, 208, 183, 88, 36, 0, 0, 7, 2, 208, 182, 90,
-			36, 0, 0, 11, 2, 95, 57, 47, 39, 116, 6, 109, 88, 0, 0, 11, 2, 95, 56, 89, 36, 81, 6, 108, 88, 0, 7, 2, 208, 180,
-			72, 36, 0, 0, 7, 2, 210, 163, 114, 68, 0, 7, 2, 208, 179, 81, 36, 0, 0, 7, 2, 208, 178, 84, 36, 0, 0, 7, 2, 208,
-			177, 71, 36, 0, 0, 0, 7, 2, 208, 191, 48, 36, 0, 0, 0, 7, 2, 208, 189, 114, 50, 0, 0, 7, 2, 208, 188, 114, 65, 0,
-			0, 7, 2, 208, 187, 114, 55, 0, 0, 7, 2, 208, 186, 49, 112, 0, 0, 12, 2, 208, 185, 104, 109, 89, 104, 112, 6, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 210, 187, 107, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 17, 0, 2, 208, 185, 3, 35, 0, 3, 112,
-			0, 7, 6, 1, 18, 0, 3, 71, 0, 7, 6, 1, 19, 0, 3, 84, 0, 7, 6, 1, 20, 0, 3, 81, 0, 7, 6, 1, 21, 0,
-			3, 72, 0, 7, 6, 1, 22, 0, 3, 36, 0, 7, 6, 1, 23, 0, 3, 90, 0, 7, 6, 1, 24, 0, 3, 88, 0, 7, 6, 1,
-			25, 0, 3, 37, 0, 7, 6, 1, 26, 0, 3, 57, 0, 7, 6, 1, 27, 0, 3, 49, 0, 7, 6, 1, 28, 0, 3, 55, 0, 7,
-			6, 1, 29, 0, 3, 65, 0, 7, 6, 1, 30, 0, 3, 50, 0, 7, 6, 1, 31, 0, 3, 39, 0, 7, 6, 1, 32, 0, 3, 48,
-			0, 7, 6, 1, 33, 0, 3, 34, 0, 7, 6, 1, 34, 0, 3, 89, 0, 7, 6, 1, 35, 0, 3, 47, 0, 7, 6, 1, 36, 0,
-			3, 40, 0, 4, 1, 17, 65, 3, 58, 0, 2, 17, 65, 0, 7, 6, 1, 37, 0, 3, 83, 0, 7, 6, 1, 38, 0, 3, 106, 0,
-			7, 6, 1, 39, 0, 3, 47, 89, 0, 7, 6, 1, 40, 0, 3, 76, 0, 7, 6, 1, 41, 0, 3, 91, 0, 7, 6, 1, 42, 0,
-			3, 91, 76, 0, 7, 6, 1, 44, 0, 3, 109, 0, 7, 6, 1, 46, 0, 3, 114, 0, 7, 6, 1, 47, 0, 3, 38, 40, 0, 7,
-			6, 1, 48, 0, 3, 38, 35, 0, 7, 6, 1, 50, 0, 3, 38, 39, 0, 7, 6, 1, 55, 0, 3, 108, 0, 7, 6, 1, 116, 0,
-			3, 116, 0, 7, 6, 1, 124, 0, 3, 104, 0, 7, 6, 210, 163, 0, 3, 68, 0, 7, 6, 210, 175, 0, 3, 110, 0, 7, 6, 210,
-			177, 0, 3, 111, 0, 7, 6, 210, 187, 0, 3, 107, 0, 7, 6, 211, 153, 0, 3, 113, 0, 7, 6, 211, 169, 0, 3, 115, 0, 7,
-			6, 0, 4, 209, 138, 3, 0, 209, 140, 3, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts32 = FileInMemory_createWithData (2023, reinterpret_cast<const char *> (&espeakdata_dicts32_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/kk_dict", 
-			U"kk");
-		Collection_addItem (me.peek(), espeakdata_dicts32.transfer());
+		my addItem_move (espeakdata_dicts34.move());
 
-		static unsigned char espeakdata_dicts33_data[1678] = {
-			0, 4, 0, 0, 44, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
-			89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0,
-			0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 40, 57, 36,
-			0, 0, 0, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65,
-			0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 7,
-			65, 68, 104, 35, 12, 0, 0, 0, 0, 0, 6, 65, 72, 36, 34, 0, 0, 0, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0,
-			6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 36, 0,
-			0, 0, 0, 0, 7, 65, 96, 37, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 4, 16, 20, 49, 39, 65, 12, 35, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 48, 104, 6, 40, 37, 55, 37, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 13, 2, 95, 51, 48, 6, 37, 68, 35, 89, 40, 47, 0, 0, 12, 2, 95, 50, 65, 6, 35, 34, 55, 40, 49,
-			0, 0, 13, 2, 95, 49, 35, 47, 6, 35, 12, 89, 36, 104, 0, 0, 11, 2, 95, 48, 50, 6, 40, 12, 55, 40, 0, 0, 19, 2,
-			95, 55, 35, 34, 83, 37, 50, 36, 104, 65, 6, 35, 34, 55, 40, 49, 0, 0, 15, 2, 95, 54, 35, 34, 83, 6, 37, 50, 37, 105,
-			37, 47, 0, 0, 13, 2, 95, 53, 47, 6, 35, 105, 37, 65, 35, 47, 0, 0, 13, 2, 95, 52, 89, 6, 37, 89, 35, 65, 35, 47,
-			0, 0, 0, 0, 16, 2, 95, 57, 104, 40, 55, 37, 68, 37, 55, 6, 40, 35, 47, 0, 0, 20, 2, 95, 56, 35, 34, 83, 37, 50,
-			36, 104, 48, 6, 37, 68, 35, 89, 40, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 195, 165, 0, 3, 111, 0, 7, 6, 195, 166, 0, 3, 109, 0, 7, 6, 195, 184, 0, 3, 110, 0, 7, 6, 97,
-			0, 3, 35, 0, 97, 3, 35, 12, 0, 105, 2, 32, 3, 108, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 4,
-			2, 101, 3, 89, 0, 2, 105, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 36, 0, 101, 3, 36, 12, 0, 7, 6, 102,
-			0, 3, 83, 0, 102, 3, 83, 12, 0, 7, 6, 103, 0, 103, 3, 99, 12, 0, 3, 100, 0, 7, 6, 104, 0, 3, 107, 0, 104, 3,
-			107, 12, 0, 7, 6, 105, 0, 3, 37, 0, 105, 3, 37, 12, 0, 7, 6, 106, 0, 3, 57, 0, 106, 3, 57, 12, 0, 7, 6, 107,
-			0, 3, 49, 0, 107, 3, 49, 12, 0, 7, 6, 108, 0, 3, 55, 0, 108, 3, 105, 0, 7, 6, 109, 0, 3, 65, 0, 109, 3, 65,
-			12, 0, 7, 6, 110, 0, 3, 50, 0, 110, 3, 50, 12, 0, 103, 3, 68, 0, 110, 103, 3, 68, 12, 0, 7, 6, 111, 0, 3, 39,
-			0, 111, 3, 39, 12, 0, 7, 6, 112, 0, 3, 48, 0, 3, 48, 12, 0, 7, 6, 113, 0, 3, 104, 0, 113, 3, 104, 12, 0, 7,
-			6, 114, 0, 3, 34, 0, 114, 3, 106, 12, 0, 7, 6, 115, 0, 3, 89, 0, 115, 3, 89, 12, 0, 7, 6, 116, 0, 3, 47, 0,
-			116, 3, 47, 12, 0, 108, 3, 112, 0, 115, 3, 113, 0, 7, 6, 117, 0, 3, 40, 0, 117, 3, 40, 12, 0, 7, 6, 118, 0, 3,
-			84, 0, 118, 3, 84, 12, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 25,
-			3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 6, 39, 55, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts33 = FileInMemory_createWithData (1677, reinterpret_cast<const char *> (&espeakdata_dicts33_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/kl_dict", 
+		static unsigned char espeakdata_dicts35_data[2646] = {
+			0, 4, 0, 0, 81, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 108, 0, 0, 0, 0, 0, 6, 65, 12,
+			89, 108, 0, 0, 0, 0, 0, 6, 65, 16, 72, 108, 0, 0, 0, 0, 13, 4, 95, 100, 112, 116, 49, 39, 65, 12, 35, 10, 0, 0,
+			0, 0, 0, 0, 6, 65, 24, 108, 83, 0, 0, 0, 0, 0, 6, 65, 28, 57, 37, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 40, 57, 108, 0, 0, 0, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65,
+			48, 108, 55, 0, 0, 0, 0, 0, 6, 65, 52, 108, 65, 0, 0, 0, 0, 0, 6, 65, 56, 108, 50, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 65, 64, 48, 108, 0, 0, 0, 0, 0, 6, 65, 68, 104, 35, 0, 0, 0, 0, 0, 6, 65, 72, 108, 34, 0, 0, 0,
+			0, 0, 6, 65, 76, 108, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84,
+			108, 0, 0, 0, 0, 21, 4, 95, 49, 77, 52, 6, 36, 12, 50, 15, 71, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 6, 65, 92,
+			58, 108, 0, 0, 0, 0, 0, 17, 4, 95, 49, 77, 49, 36, 72, 15, 47, 6, 40, 12, 89, 14, 50, 0, 7, 65, 96, 37, 49, 89,
+			0, 0, 21, 4, 95, 49, 77, 50, 6, 36, 12, 50, 15, 65, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 21, 4, 95, 49, 77, 51,
+			6, 36, 12, 50, 15, 65, 37, 55, 37, 57, 6, 35, 12, 72, 0, 0, 0, 0, 0, 0, 0, 6, 65, 104, 88, 108, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 51, 88, 111, 47, 34, 6, 110, 83,
+			47, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 95, 111,
+			114, 100, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4,
+			95, 49, 49, 111, 108, 55, 83, 72, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 12, 4, 95, 49, 48, 111, 47, 37, 13, 50, 115, 0, 0, 13, 4, 95, 49, 48, 110, 104, 6, 40, 55, 37, 47, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 50, 111, 47, 111, 55, 83, 72, 115, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 95, 55, 88, 111, 107, 110, 55, 83, 57, 6, 110, 34,
+			89, 36, 50, 89, 47, 113, 84, 13, 50, 13, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 88, 47, 51, 6, 110, 86, 84, 13, 0,
+			0, 14, 3, 95, 48, 67, 107, 6, 40, 50, 16, 13, 12, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49, 67, 36, 72,
+			15, 107, 6, 40, 50, 34, 13, 12, 86, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 57, 50, 6, 36, 72, 14, 50, 0, 0, 11,
+			3, 95, 49, 56, 6, 110, 72, 14, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 108, 55, 84, 13, 0, 0, 9,
+			3, 95, 49, 48, 47, 6, 37, 0, 0, 13, 3, 95, 49, 51, 47, 51, 6, 110, 72, 14, 50, 0, 0, 10, 3, 95, 49, 50, 47, 6,
+			111, 55, 0, 0, 13, 3, 95, 49, 53, 83, 6, 36, 65, 47, 14, 50, 0, 0, 14, 3, 95, 49, 52, 83, 57, 6, 39, 34, 72, 14,
+			50, 0, 0, 12, 3, 95, 49, 55, 89, 6, 114, 72, 14, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 35, 57, 89, 72, 14, 50, 0,
+			0, 0, 15, 3, 95, 55, 88, 107, 110, 55, 83, 57, 6, 110, 34, 89, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 111, 83, 114, 34,
+			89, 72, 115, 0, 0, 14, 3, 95, 49, 110, 35, 47, 6, 35, 12, 89, 108, 104, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50,
+			111, 110, 50, 13, 50, 0, 0, 13, 3, 95, 50, 110, 65, 6, 35, 34, 55, 40, 49, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95,
+			51, 111, 47, 34, 108, 72, 57, 115, 0, 0, 14, 3, 95, 51, 110, 48, 6, 37, 68, 35, 89, 40, 47, 0, 0, 0, 11, 3, 95, 50,
+			88, 47, 6, 113, 12, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 53, 111, 83, 108, 65, 47, 115,
+			0, 0, 14, 3, 95, 53, 110, 47, 6, 35, 105, 37, 65, 35, 47, 0, 0, 0, 11, 3, 95, 52, 88, 83, 6, 114, 12, 111, 0, 0,
+			0, 0, 0, 0, 11, 3, 95, 54, 111, 89, 57, 108, 72, 115, 0, 0, 16, 3, 95, 54, 110, 35, 34, 83, 6, 37, 50, 37, 105, 37,
+			47, 0, 0, 0, 14, 3, 95, 53, 88, 107, 110, 55, 6, 47, 16, 108, 89, 0, 0, 0, 0, 0, 0, 11, 3, 95, 55, 111, 89, 113,
+			84, 50, 115, 0, 0, 20, 3, 95, 55, 110, 35, 34, 83, 37, 50, 108, 104, 65, 6, 35, 34, 55, 40, 49, 0, 0, 0, 11, 3, 95,
+			54, 88, 47, 16, 6, 108, 89, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 48, 110, 50, 6, 40, 12, 55, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 11, 3, 95, 57, 111, 50, 37, 13, 50, 115, 0, 0, 17, 3, 95, 57, 110, 104, 40, 55, 37, 68, 37, 55, 6, 40, 35,
+			47, 0, 0, 0, 11, 3, 95, 56, 88, 83, 6, 37, 34, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 57, 88, 107, 110,
+			55, 83, 6, 108, 65, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 52, 111, 83, 57, 36, 111, 0,
+			0, 14, 3, 95, 52, 110, 89, 6, 37, 89, 35, 65, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 48, 77, 52, 71, 37, 55, 37, 57, 6, 39, 12, 50, 115, 0,
+			0, 21, 3, 95, 56, 110, 35, 34, 83, 37, 50, 108, 104, 48, 6, 37, 68, 35, 89, 40, 47, 0, 0, 10, 3, 95, 56, 111, 111, 47,
+			50, 115, 0, 17, 4, 95, 48, 77, 50, 65, 37, 55, 37, 57, 6, 39, 12, 50, 111, 0, 0, 17, 4, 95, 48, 77, 51, 65, 37, 55,
+			37, 57, 6, 35, 12, 72, 115, 0, 0, 0, 14, 4, 95, 48, 77, 49, 47, 6, 40, 12, 89, 14, 50, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 50, 88, 111, 47, 6, 113, 84,
+			13, 50, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 52, 88, 111, 83, 114, 111, 6, 47, 113, 84, 13, 50, 13, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 24, 4, 95, 53, 88, 111, 107, 110, 55, 47, 16, 6, 108, 89, 36, 50, 89, 47, 113, 84, 13, 50, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 51, 6, 36, 0, 0, 8, 2, 95, 50, 47, 6, 39, 0,
+			0, 8, 2, 95, 49, 6, 36, 50, 0, 0, 9, 2, 95, 48, 6, 50, 112, 55, 0, 0, 9, 2, 95, 55, 89, 6, 113, 58, 0, 0,
+			10, 2, 95, 54, 89, 6, 108, 100, 89, 0, 0, 9, 2, 95, 53, 83, 6, 108, 65, 0, 0, 9, 2, 95, 52, 83, 6, 37, 111, 0,
+			0, 0, 0, 8, 2, 95, 57, 50, 6, 37, 0, 0, 10, 2, 95, 56, 6, 112, 12, 72, 13, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+			4, 95, 54, 88, 111, 47, 34, 6, 108, 89, 36, 50, 89, 47, 113, 84, 13, 50, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 5, 95, 48, 97, 110,
+			100, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 56, 88, 111, 83, 37, 34, 89, 36, 50, 89, 47, 113, 84, 13, 50, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 24, 4, 95, 57, 88, 111, 107, 110, 55, 83, 6, 108, 65, 89, 36, 50, 89, 47, 113, 84, 13, 50, 13, 0, 0, 0, 0, 0, 6,
+			18, 66, 110, 110, 103, 0, 110, 103, 0, 7, 6, 195, 165, 0, 3, 112, 0, 7, 6, 195, 166, 0, 3, 110, 0, 7, 6, 195, 184, 0,
+			3, 114, 0, 7, 6, 97, 0, 2, 17, 67, 17, 67, 3, 6, 35, 0, 4, 3, 35, 0, 2, 18, 66, 0, 4, 97, 3, 35, 12, 0,
+			97, 113, 0, 97, 114, 0, 105, 2, 32, 3, 109, 0, 116, 2, 32, 3, 110, 47, 0, 112, 2, 32, 3, 110, 48, 0, 107, 2, 32, 3,
+			110, 81, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 7, 6, 100, 0,
+			3, 72, 0, 7, 6, 101, 0, 2, 17, 67, 17, 67, 3, 6, 108, 0, 4, 3, 108, 0, 2, 18, 66, 0, 101, 3, 108, 12, 0, 7,
+			6, 102, 0, 3, 83, 0, 102, 3, 83, 12, 0, 7, 6, 103, 0, 103, 2, 105, 3, 99, 12, 0, 3, 100, 0, 103, 3, 101, 12, 0,
+			7, 6, 104, 0, 3, 107, 0, 104, 3, 107, 12, 0, 7, 6, 105, 0, 2, 17, 67, 17, 67, 3, 6, 37, 0, 4, 3, 37, 0, 2,
+			18, 66, 0, 105, 3, 37, 12, 0, 7, 6, 106, 0, 3, 57, 0, 106, 3, 57, 12, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3, 49,
+			12, 0, 7, 6, 108, 0, 3, 55, 0, 108, 3, 105, 0, 7, 6, 109, 0, 3, 65, 0, 109, 3, 65, 12, 0, 7, 6, 110, 0, 3,
+			50, 0, 110, 3, 50, 12, 0, 97, 3, 50, 35, 0, 97, 97, 3, 50, 35, 12, 0, 103, 3, 68, 0, 110, 103, 3, 68, 12, 0, 7,
+			6, 111, 0, 2, 17, 67, 17, 67, 3, 6, 39, 0, 4, 3, 39, 0, 2, 18, 66, 0, 111, 3, 39, 12, 0, 7, 6, 112, 0, 3,
+			48, 0, 112, 3, 48, 12, 0, 7, 6, 113, 0, 3, 104, 0, 113, 3, 104, 104, 0, 7, 6, 114, 0, 3, 34, 0, 108, 3, 34, 105,
+			0, 114, 3, 106, 12, 0, 7, 6, 115, 0, 3, 89, 0, 115, 3, 89, 12, 0, 7, 6, 116, 0, 3, 47, 0, 116, 3, 47, 12, 0,
+			1, 105, 2, 32, 3, 78, 0, 108, 3, 116, 0, 4, 2, 105, 3, 117, 0, 115, 0, 7, 6, 117, 0, 2, 17, 67, 17, 67, 3, 6,
+			40, 0, 4, 3, 40, 0, 2, 18, 66, 0, 117, 3, 40, 12, 0, 7, 6, 118, 0, 3, 84, 0, 118, 3, 84, 12, 0, 7, 6, 119,
+			0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 17, 67, 17, 67, 3, 6, 37, 0, 4, 1, 25,
+			2, 18, 66, 3, 37, 0, 1, 25, 2, 25, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 6, 39, 55,
+			35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts35 = FileInMemory_createWithData (2645, reinterpret_cast<const char *> (&espeakdata_dicts35_data), 
+			U"espeak-1.48.04-source/espeak-data/kl_dict", 
 			U"kl");
-		Collection_addItem (me.peek(), espeakdata_dicts33.transfer());
+		my addItem_move (espeakdata_dicts35.move());
 
-		static unsigned char espeakdata_dicts34_data[5368] = {
+		static unsigned char espeakdata_dicts36_data[5516] = {
 			0, 4, 0, 0, 127, 17, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
 			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 11, 6, 224, 178, 149, 224, 179, 141, 37,
-			49, 0, 0, 0, 5, 65, 20, 112, 0, 0, 0, 0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65, 28, 75, 112, 0, 0,
-			0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 16, 1, 33, 118, 89, 144, 35, 34, 57, 35, 144, 37, 50, 107, 36, 0, 0, 0, 0, 6,
-			65, 36, 118, 57, 0, 0, 13, 1, 37, 48, 34, 35, 47, 37, 93, 35, 47, 35, 0, 0, 9, 1, 38, 65, 35, 47, 47, 40, 0, 0,
-			0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 0, 0, 14, 1, 44, 35, 55, 48, 35, 84, 37, 34, 118, 65, 35, 0, 7, 65, 44, 49,
-			114, 57, 0, 0, 0, 15, 1, 46, 48, 123, 34, 66, 35, 84, 37, 34, 118, 65, 35, 0, 0, 0, 6, 65, 48, 116, 55, 0, 0, 13,
-			1, 49, 49, 118, 55, 40, 0, 82, 47, 32, 52, 32, 13, 1, 49, 35, 34, 139, 35, 0, 82, 47, 32, 50, 32, 0, 0, 16, 1, 51,
-			65, 40, 49, 49, 118, 55, 40, 0, 82, 47, 32, 52, 32, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 0, 6, 65, 56, 116, 50, 0,
-			0, 0, 0, 0, 5, 65, 60, 119, 0, 0, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 15, 140, 224, 178, 164, 224, 178, 174, 224, 179,
-			141, 224, 178, 174, 72, 0, 0, 0, 7, 65, 68, 49, 57, 123, 0, 0, 0, 0, 0, 15, 140, 224, 178, 135, 224, 178, 181, 224, 178, 168,
-			224, 179, 129, 72, 6, 65, 72, 118, 34, 0, 0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 12, 4, 95, 48, 67, 48, 50,
-			6, 123, 34, 40, 0, 0, 6, 65, 80, 138, 112, 0, 0, 0, 25, 149, 224, 178, 134, 224, 178, 166, 224, 178, 190, 224, 178, 151, 224, 179,
-			141, 224, 178, 175, 224, 179, 130, 72, 8, 0, 0, 6, 65, 84, 57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0,
-			0, 11, 65, 92, 72, 35, 71, 35, 55, 57, 123, 0, 0, 0, 0, 0, 7, 65, 96, 116, 49, 89, 0, 0, 0, 0, 0, 7, 65, 100,
-			58, 118, 57, 0, 0, 0, 0, 0, 15, 140, 224, 178, 135, 224, 178, 181, 224, 178, 179, 224, 179, 129, 72, 7, 65, 104, 88, 116, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 178, 168, 224, 178, 168, 224, 179, 141,
-			224, 178, 168, 72, 0, 0, 0, 18, 143, 224, 178, 168, 224, 178, 191, 224, 178, 168, 224, 179, 141, 224, 178, 168, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 49, 67, 48, 50, 123, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95,
-			50, 67, 48, 6, 37, 50, 50, 123, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 4, 16, 20, 10, 72, 6, 35, 93,
-			118, 65, 93, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 5, 95, 48,
-			77, 50, 24, 55, 6, 35, 49, 91, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 15, 5, 95, 48, 77, 49, 24, 89, 6, 118, 84, 37, 34, 35, 0, 11, 6, 224, 178, 175, 224, 179, 141, 37, 57,
-			0, 0, 0, 0, 0, 11, 6, 224, 178, 173, 224, 179, 141, 37, 137, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 51, 67, 48, 65,
-			6, 40, 50, 50, 123, 34, 40, 0, 0, 0, 0, 0, 0, 11, 6, 224, 178, 179, 224, 179, 141, 37, 62, 0, 11, 6, 224, 178, 171, 224,
-			179, 141, 37, 136, 0, 0, 0, 0, 0, 11, 6, 224, 178, 177, 224, 179, 141, 37, 34, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224,
-			178, 133, 224, 178, 181, 224, 179, 129, 72, 0, 0, 0, 15, 140, 224, 178, 185, 224, 178, 178, 224, 178, 181, 224, 179, 129, 72, 15, 140, 224,
-			178, 164, 224, 178, 190, 224, 178, 181, 224, 179, 129, 72, 15, 140, 224, 178, 168, 224, 178, 190, 224, 178, 181, 224, 179, 129, 72, 0, 0, 11,
-			6, 224, 178, 159, 224, 179, 141, 37, 140, 0, 0, 18, 143, 224, 178, 149, 224, 179, 134, 224, 178, 178, 224, 178, 181, 224, 179, 129, 72, 0,
-			0, 0, 11, 6, 224, 178, 157, 224, 179, 141, 37, 145, 0, 0, 0, 15, 140, 224, 178, 133, 224, 178, 168, 224, 179, 135, 224, 178, 149, 72,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 178, 163, 224, 179, 141, 37, 66, 0, 11, 6, 224, 178, 155, 224, 179, 141, 37,
-			144, 0, 0, 0, 0, 0, 11, 6, 224, 178, 185, 224, 179, 141, 37, 107, 0, 11, 6, 224, 178, 161, 224, 179, 141, 37, 141, 0, 11, 6,
-			224, 178, 153, 224, 179, 141, 37, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 178, 167, 224, 179, 141, 37,
-			141, 0, 0, 0, 0, 0, 12, 137, 224, 178, 133, 224, 178, 181, 224, 178, 176, 72, 11, 6, 224, 178, 165, 224, 179, 141, 37, 138, 0, 0,
-			12, 137, 224, 178, 133, 224, 178, 181, 224, 178, 179, 72, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 133, 224, 178, 181, 224, 178, 168,
-			72, 0, 0, 0, 18, 143, 224, 178, 135, 224, 178, 181, 224, 179, 129, 224, 178, 151, 224, 178, 179, 72, 18, 143, 224, 178, 133, 224, 178, 181,
-			224, 179, 129, 224, 178, 151, 224, 178, 179, 72, 0, 0, 0, 0, 0, 0, 15, 140, 224, 178, 168, 224, 178, 174, 224, 179, 141, 224, 178, 174,
-			72, 0, 0, 0, 18, 143, 224, 178, 168, 224, 178, 191, 224, 178, 174, 224, 179, 141, 224, 178, 174, 72, 0, 0, 0, 0, 0, 19, 3, 95,
-			51, 57, 65, 6, 39, 84, 35, 138, 39, 65, 71, 35, 138, 12, 40, 0, 18, 3, 95, 50, 49, 6, 113, 48, 12, 35, 6, 138, 12, 39,
-			50, 72, 40, 0, 0, 15, 140, 224, 178, 168, 224, 179, 128, 224, 178, 181, 224, 179, 129, 72, 16, 3, 95, 51, 56, 65, 6, 39, 84, 35,
-			138, 36, 50, 140, 40, 0, 0, 18, 3, 95, 50, 51, 113, 48, 12, 35, 6, 138, 12, 65, 6, 123, 34, 40, 0, 0, 18, 3, 95, 50,
-			50, 113, 48, 12, 35, 6, 138, 12, 36, 34, 35, 141, 40, 0, 11, 6, 224, 178, 183, 224, 179, 141, 37, 93, 0, 0, 17, 3, 95, 50,
-			53, 113, 48, 12, 35, 6, 138, 12, 6, 134, 72, 40, 0, 0, 15, 140, 224, 178, 133, 224, 178, 181, 224, 178, 179, 224, 179, 129, 72, 19,
-			3, 95, 50, 52, 113, 48, 12, 35, 6, 138, 12, 50, 6, 118, 55, 49, 40, 0, 0, 16, 3, 95, 50, 55, 113, 48, 12, 35, 6, 138,
-			12, 114, 62, 40, 0, 0, 16, 3, 95, 50, 54, 113, 48, 12, 35, 6, 138, 12, 118, 34, 40, 0, 11, 6, 224, 178, 181, 224, 179, 141,
-			37, 84, 0, 0, 17, 3, 95, 51, 49, 65, 6, 39, 84, 35, 138, 12, 39, 50, 72, 40, 0, 0, 0, 17, 3, 95, 51, 51, 65, 6,
-			39, 84, 35, 138, 65, 6, 123, 34, 40, 0, 0, 17, 3, 95, 51, 50, 65, 6, 39, 84, 35, 138, 36, 34, 35, 141, 40, 0, 0, 16,
-			3, 95, 51, 53, 65, 6, 39, 84, 35, 138, 6, 134, 72, 40, 0, 0, 18, 3, 95, 51, 52, 65, 6, 39, 84, 35, 138, 50, 6, 118,
-			55, 49, 40, 0, 0, 15, 3, 95, 51, 55, 65, 6, 39, 84, 35, 138, 114, 62, 40, 0, 0, 15, 3, 95, 51, 54, 65, 6, 39, 84,
-			35, 138, 118, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 55, 57, 116, 48,
-			12, 35, 138, 39, 65, 71, 35, 138, 12, 40, 0, 17, 3, 95, 54, 49, 35, 34, 35, 84, 35, 138, 12, 39, 50, 72, 40, 0, 0, 15,
-			3, 95, 55, 56, 116, 48, 12, 35, 138, 36, 50, 140, 40, 0, 14, 3, 95, 51, 88, 65, 6, 39, 84, 35, 138, 12, 40, 0, 0, 11,
-			3, 95, 48, 67, 50, 6, 123, 34, 118, 0, 17, 3, 95, 54, 51, 35, 34, 35, 84, 35, 138, 65, 6, 123, 34, 40, 0, 0, 17, 3,
-			95, 54, 50, 35, 34, 35, 84, 35, 138, 36, 34, 35, 141, 40, 0, 0, 15, 3, 95, 54, 53, 35, 34, 35, 84, 35, 138, 134, 72, 40,
-			0, 0, 18, 3, 95, 54, 52, 35, 34, 35, 84, 35, 138, 50, 6, 118, 55, 49, 40, 0, 0, 15, 3, 95, 54, 55, 35, 34, 35, 84,
-			35, 138, 114, 62, 40, 0, 0, 15, 3, 95, 54, 54, 35, 34, 35, 84, 35, 138, 118, 34, 40, 0, 0, 16, 3, 95, 55, 49, 116, 48,
-			12, 35, 138, 12, 39, 50, 72, 40, 0, 0, 0, 10, 3, 95, 49, 67, 50, 123, 34, 118, 0, 16, 3, 95, 55, 51, 116, 48, 12, 35,
-			138, 65, 6, 123, 34, 40, 0, 0, 16, 3, 95, 55, 50, 116, 48, 12, 35, 138, 36, 34, 35, 141, 40, 0, 0, 14, 3, 95, 55, 53,
-			116, 48, 12, 35, 138, 134, 72, 40, 0, 0, 17, 3, 95, 55, 52, 116, 48, 12, 35, 138, 50, 6, 118, 55, 49, 40, 0, 0, 13, 4,
-			95, 53, 67, 48, 6, 134, 50, 123, 34, 40, 0, 14, 3, 95, 55, 55, 116, 48, 12, 35, 138, 114, 62, 40, 0, 0, 14, 3, 95, 55,
-			54, 116, 48, 12, 35, 138, 118, 34, 40, 0, 0, 19, 3, 95, 49, 57, 107, 35, 6, 138, 12, 6, 39, 65, 71, 35, 138, 12, 40, 0,
-			0, 16, 3, 95, 49, 56, 107, 35, 72, 37, 50, 6, 36, 50, 140, 40, 0, 0, 13, 3, 95, 50, 67, 6, 37, 50, 50, 123, 34, 118,
-			0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 50, 57, 113, 48, 12, 35, 6, 138, 12, 39, 65, 71, 35, 138, 12, 40, 0, 15, 3, 95,
-			49, 49, 107, 35, 50, 50, 6, 39, 50, 72, 40, 0, 0, 17, 3, 95, 50, 56, 113, 48, 12, 35, 6, 138, 12, 36, 50, 140, 40, 0,
-			0, 14, 3, 95, 51, 67, 65, 6, 40, 50, 50, 123, 34, 118, 0, 15, 3, 95, 49, 51, 107, 35, 72, 37, 65, 6, 123, 34, 40, 0,
-			0, 15, 3, 95, 49, 50, 107, 35, 50, 12, 36, 34, 35, 141, 40, 0, 0, 14, 3, 95, 49, 53, 107, 35, 72, 37, 50, 134, 72, 40,
-			0, 0, 16, 3, 95, 49, 52, 107, 35, 72, 37, 50, 6, 118, 55, 49, 40, 0, 0, 15, 3, 95, 49, 55, 107, 35, 72, 37, 50, 6,
-			114, 62, 40, 0, 0, 14, 3, 95, 49, 54, 107, 35, 72, 37, 50, 118, 34, 40, 0, 0, 0, 14, 3, 95, 55, 88, 6, 116, 48, 12,
-			35, 138, 12, 40, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 52, 57, 50, 6, 35, 55, 35, 84, 35, 138, 39, 65, 71, 35, 138,
-			12, 40, 0, 0, 18, 3, 95, 52, 56, 50, 6, 35, 55, 35, 84, 35, 138, 36, 50, 140, 40, 0, 0, 12, 3, 95, 53, 67, 6, 134,
-			50, 123, 34, 118, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 53, 57, 134, 84, 35, 138, 39, 65, 71, 35, 138, 12, 40, 0, 19, 3,
-			95, 52, 49, 50, 6, 35, 55, 35, 84, 35, 138, 12, 39, 50, 72, 40, 0, 0, 14, 3, 95, 53, 56, 134, 84, 35, 138, 36, 50, 140,
-			40, 0, 12, 3, 95, 49, 88, 107, 6, 35, 138, 12, 40, 0, 0, 19, 3, 95, 52, 51, 50, 6, 35, 55, 35, 84, 35, 138, 65, 6,
-			123, 34, 40, 0, 0, 19, 3, 95, 52, 50, 50, 6, 35, 55, 35, 84, 35, 138, 36, 34, 35, 141, 40, 0, 0, 17, 3, 95, 52, 53,
-			50, 6, 35, 55, 35, 84, 35, 138, 134, 72, 40, 0, 0, 20, 3, 95, 52, 52, 50, 6, 35, 55, 35, 84, 35, 138, 50, 6, 118, 55,
-			49, 40, 0, 0, 17, 3, 95, 52, 55, 50, 6, 35, 55, 35, 84, 35, 138, 114, 62, 40, 0, 0, 17, 3, 95, 52, 54, 50, 6, 35,
-			55, 35, 84, 35, 138, 118, 34, 40, 0, 0, 19, 3, 95, 54, 57, 35, 34, 35, 84, 35, 138, 39, 65, 71, 35, 138, 12, 40, 0, 15,
-			3, 95, 53, 49, 134, 84, 35, 138, 12, 39, 50, 72, 40, 0, 0, 16, 3, 95, 54, 56, 35, 34, 35, 84, 35, 138, 36, 50, 140, 40,
-			0, 13, 3, 95, 50, 88, 113, 48, 12, 35, 138, 12, 40, 0, 0, 15, 3, 95, 53, 51, 134, 84, 35, 138, 65, 6, 123, 34, 40, 0,
-			0, 15, 3, 95, 53, 50, 134, 84, 35, 138, 36, 34, 35, 141, 40, 0, 0, 14, 3, 95, 53, 53, 134, 84, 35, 138, 6, 134, 72, 40,
-			0, 0, 16, 3, 95, 53, 52, 134, 84, 35, 138, 50, 6, 118, 55, 49, 40, 0, 0, 13, 3, 95, 53, 55, 134, 84, 35, 138, 114, 62,
-			40, 0, 0, 13, 3, 95, 53, 54, 134, 84, 35, 138, 118, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 63, 63, 35, 49,
-			93, 35, 34, 35, 0, 0, 0, 18, 3, 95, 56, 57, 116, 65, 71, 35, 138, 39, 65, 71, 35, 138, 12, 40, 0, 0, 15, 3, 95, 56,
-			56, 116, 65, 71, 35, 138, 36, 50, 140, 40, 0, 16, 3, 95, 52, 88, 50, 6, 35, 55, 35, 84, 35, 138, 12, 40, 0, 0, 15, 3,
-			95, 57, 67, 39, 65, 71, 35, 37, 50, 123, 34, 118, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 57, 57, 138, 6, 39, 65, 71, 35,
-			138, 39, 65, 71, 35, 138, 12, 40, 0, 16, 3, 95, 56, 49, 116, 65, 71, 35, 138, 12, 39, 50, 72, 40, 0, 0, 17, 3, 95, 57,
-			56, 138, 6, 39, 65, 71, 35, 138, 36, 50, 140, 40, 0, 13, 3, 95, 53, 88, 6, 134, 84, 35, 138, 12, 40, 0, 0, 16, 3, 95,
-			56, 51, 116, 65, 71, 35, 138, 65, 6, 123, 34, 40, 0, 0, 16, 3, 95, 56, 50, 116, 65, 71, 35, 138, 36, 34, 35, 141, 40, 0,
-			0, 14, 3, 95, 56, 53, 116, 65, 71, 35, 138, 134, 72, 40, 0, 0, 17, 3, 95, 56, 52, 116, 65, 71, 35, 138, 50, 6, 118, 55,
-			49, 40, 0, 0, 14, 3, 95, 56, 55, 116, 65, 71, 35, 138, 114, 62, 40, 0, 0, 14, 3, 95, 56, 54, 116, 65, 71, 35, 138, 118,
-			34, 40, 0, 0, 18, 3, 95, 57, 49, 138, 6, 39, 65, 71, 35, 138, 12, 39, 50, 72, 40, 0, 0, 15, 3, 95, 54, 88, 6, 35,
-			34, 35, 84, 35, 138, 12, 40, 0, 0, 18, 3, 95, 57, 51, 138, 6, 39, 65, 71, 35, 138, 65, 6, 123, 34, 40, 0, 0, 19, 3,
-			95, 57, 50, 138, 6, 39, 65, 71, 35, 138, 12, 36, 34, 35, 141, 40, 0, 0, 16, 3, 95, 57, 53, 138, 6, 39, 65, 71, 35, 138,
-			134, 72, 40, 0, 0, 19, 3, 95, 57, 52, 138, 6, 39, 65, 71, 35, 138, 50, 6, 118, 55, 49, 40, 0, 0, 12, 137, 224, 178, 135,
-			224, 178, 181, 224, 179, 129, 72, 16, 3, 95, 57, 55, 138, 6, 39, 65, 71, 35, 138, 114, 62, 40, 0, 0, 16, 3, 95, 57, 54, 138,
-			6, 39, 65, 71, 35, 138, 118, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 179, 158, 224, 179, 141, 37, 83, 0, 11,
-			6, 224, 178, 150, 224, 179, 141, 37, 146, 0, 0, 0, 14, 3, 95, 56, 88, 6, 116, 65, 71, 35, 138, 12, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 3, 95, 57, 88, 138, 6, 39, 65, 71, 35, 138, 12, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 137, 224, 178, 135, 224, 178, 181, 224, 178, 168, 72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224, 178,
-			181, 224, 178, 179, 72, 0, 12, 137, 224, 178, 135, 224, 178, 181, 224, 178, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 39, 50, 0, 0, 0, 15, 4, 95, 48, 77, 50, 55,
-			6, 35, 49, 91, 35, 72, 35, 0, 0, 12, 4, 95, 48, 77, 51, 49, 6, 39, 140, 37, 0, 0, 0, 16, 4, 95, 48, 77, 49, 89,
-			6, 118, 84, 37, 34, 35, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 224, 178, 136, 76, 0,
-			0, 6, 131, 224, 178, 134, 76, 0, 0, 8, 3, 224, 179, 140, 148, 135, 0, 0, 11, 3, 224, 179, 141, 84, 35, 47, 47, 40, 0, 0,
-			8, 3, 224, 179, 138, 18, 39, 0, 8, 3, 224, 178, 130, 35, 65, 0, 0, 9, 3, 224, 179, 139, 148, 119, 12, 0, 8, 3, 224, 178,
-			131, 35, 107, 0, 0, 8, 3, 224, 179, 136, 148, 134, 0, 0, 0, 8, 3, 224, 179, 134, 18, 36, 0, 0, 9, 3, 224, 179, 135, 148,
-			114, 12, 0, 0, 9, 3, 224, 179, 132, 148, 44, 12, 0, 0, 0, 9, 3, 224, 179, 130, 148, 123, 12, 0, 0, 9, 3, 224, 179, 131,
-			18, 34, 40, 0, 0, 9, 3, 224, 179, 128, 148, 112, 12, 0, 0, 8, 3, 224, 179, 129, 18, 40, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 15, 140, 224, 178, 135, 224, 178, 181, 224, 178, 176, 224, 179, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 67, 65, 101, 0,
-			48, 34, 134, 84, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 178, 190, 148, 118, 12, 0, 0, 8, 3, 224,
-			178, 191, 18, 37, 0, 0, 21, 67, 33, 69, 16, 114, 76, 47, 112, 47, 112, 6, 48, 112, 10, 0, 81, 58, 47, 47, 32, 11, 3, 224,
+			49, 0, 0, 16, 4, 95, 100, 112, 116, 10, 72, 6, 35, 93, 118, 65, 93, 35, 0, 0, 5, 65, 20, 112, 0, 0, 0, 0, 0, 6,
+			65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 16, 1, 33, 118,
+			89, 143, 35, 34, 57, 35, 143, 37, 50, 107, 36, 0, 0, 0, 0, 6, 65, 36, 118, 57, 0, 0, 13, 1, 37, 48, 34, 35, 47, 37,
+			93, 35, 47, 35, 0, 0, 9, 1, 38, 65, 35, 47, 47, 40, 0, 0, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 0, 0, 14, 1,
+			44, 35, 55, 48, 35, 84, 37, 34, 118, 65, 35, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 15, 1, 46, 48, 123, 34, 66, 35, 84,
+			37, 34, 118, 65, 35, 0, 0, 0, 6, 65, 48, 116, 55, 0, 0, 13, 1, 49, 49, 118, 55, 40, 0, 82, 47, 32, 52, 32, 13, 1,
+			49, 35, 34, 138, 35, 0, 82, 47, 32, 50, 32, 0, 0, 16, 1, 51, 65, 40, 49, 49, 118, 55, 40, 0, 82, 47, 32, 52, 32, 0,
+			6, 65, 52, 116, 65, 0, 0, 0, 0, 0, 6, 65, 56, 116, 50, 0, 0, 0, 0, 0, 5, 65, 60, 119, 0, 0, 0, 0, 0, 6,
+			65, 64, 48, 112, 0, 0, 15, 140, 224, 178, 164, 224, 178, 174, 224, 179, 141, 224, 178, 174, 72, 0, 0, 0, 7, 65, 68, 49, 57, 123,
+			0, 0, 0, 0, 0, 15, 140, 224, 178, 135, 224, 178, 181, 224, 178, 168, 224, 179, 129, 72, 6, 65, 72, 118, 34, 0, 0, 0, 0, 0,
+			6, 65, 76, 116, 89, 0, 0, 0, 0, 12, 4, 95, 48, 67, 48, 50, 6, 123, 34, 40, 0, 0, 6, 65, 80, 25, 112, 0, 0, 0,
+			25, 149, 224, 178, 134, 224, 178, 166, 224, 178, 190, 224, 178, 151, 224, 179, 141, 224, 178, 175, 224, 179, 130, 72, 8, 0, 0, 6, 65, 84,
+			57, 123, 0, 0, 0, 0, 21, 67, 33, 69, 16, 114, 76, 47, 112, 47, 112, 6, 48, 112, 10, 0, 81, 58, 47, 47, 32, 0, 6, 65,
+			88, 84, 112, 0, 0, 0, 0, 0, 11, 65, 92, 72, 35, 71, 35, 55, 57, 123, 0, 0, 0, 0, 0, 7, 65, 96, 116, 49, 89, 0,
+			0, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0, 15, 140, 224, 178, 135, 224, 178, 181, 224, 178, 179, 224, 179, 129, 72,
+			7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 178,
+			168, 224, 178, 168, 224, 179, 141, 224, 178, 168, 72, 0, 0, 0, 18, 143, 224, 178, 168, 224, 178, 191, 224, 178, 168, 224, 179, 141, 224, 178,
+			168, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 49, 67, 48, 50, 123, 34, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 14, 4, 95, 50, 67, 48, 6, 37, 50, 50, 123, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 178, 175, 224, 179, 141, 37, 57, 0, 0, 0, 0, 0, 11, 6, 224,
+			178, 173, 224, 179, 141, 37, 137, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 51, 67, 48, 65, 6, 40, 50, 50, 123, 34, 40, 0,
+			0, 0, 0, 0, 0, 11, 6, 224, 178, 179, 224, 179, 141, 37, 62, 0, 11, 6, 224, 178, 171, 224, 179, 141, 37, 136, 0, 0, 0, 0,
+			0, 11, 6, 224, 178, 177, 224, 179, 141, 37, 34, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 133, 224, 178, 181, 224, 179, 129,
+			72, 0, 0, 0, 15, 140, 224, 178, 185, 224, 178, 178, 224, 178, 181, 224, 179, 129, 72, 15, 140, 224, 178, 164, 224, 178, 190, 224, 178, 181,
+			224, 179, 129, 72, 15, 140, 224, 178, 168, 224, 178, 190, 224, 178, 181, 224, 179, 129, 72, 0, 0, 11, 6, 224, 178, 159, 224, 179, 141, 37,
+			139, 0, 0, 18, 143, 224, 178, 149, 224, 179, 134, 224, 178, 178, 224, 178, 181, 224, 179, 129, 72, 0, 0, 0, 11, 6, 224, 178, 157, 224,
+			179, 141, 37, 144, 0, 0, 0, 15, 140, 224, 178, 133, 224, 178, 168, 224, 179, 135, 224, 178, 149, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 11, 6, 224, 178, 163, 224, 179, 141, 37, 66, 0, 11, 6, 224, 178, 155, 224, 179, 141, 37, 143, 0, 0, 0, 0, 0, 11, 6,
+			224, 178, 185, 224, 179, 141, 37, 107, 0, 11, 6, 224, 178, 161, 224, 179, 141, 37, 140, 0, 11, 6, 224, 178, 153, 224, 179, 141, 37, 68,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 178, 167, 224, 179, 141, 37, 138, 0, 0, 0, 0, 0, 12, 137,
+			224, 178, 133, 224, 178, 181, 224, 178, 176, 72, 11, 6, 224, 178, 165, 224, 179, 141, 37, 25, 0, 0, 12, 137, 224, 178, 133, 224, 178, 181,
+			224, 178, 179, 72, 0, 0, 0, 14, 5, 95, 48, 77, 50, 120, 55, 6, 35, 49, 91, 35, 0, 0, 0, 0, 0, 12, 137, 224, 178, 133,
+			224, 178, 181, 224, 178, 168, 72, 0, 0, 0, 18, 143, 224, 178, 135, 224, 178, 181, 224, 179, 129, 224, 178, 151, 224, 178, 179, 72, 18, 143,
+			224, 178, 133, 224, 178, 181, 224, 179, 129, 224, 178, 151, 224, 178, 179, 72, 0, 0, 0, 0, 0, 0, 15, 140, 224, 178, 168, 224, 178, 174,
+			224, 179, 141, 224, 178, 174, 72, 0, 0, 0, 18, 143, 224, 178, 168, 224, 178, 191, 224, 178, 174, 224, 179, 141, 224, 178, 174, 72, 0, 0,
+			0, 0, 0, 19, 3, 95, 51, 57, 65, 6, 39, 84, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0, 18, 3, 95, 50, 49, 6, 113, 48,
+			12, 35, 6, 25, 12, 39, 50, 72, 40, 0, 0, 15, 140, 224, 178, 168, 224, 179, 128, 224, 178, 181, 224, 179, 129, 72, 16, 3, 95, 51,
+			56, 65, 6, 39, 84, 35, 25, 36, 50, 139, 40, 0, 0, 18, 3, 95, 50, 51, 113, 48, 12, 35, 6, 25, 12, 65, 6, 123, 34, 40,
+			0, 0, 15, 5, 95, 48, 77, 49, 120, 89, 6, 118, 84, 37, 34, 35, 0, 18, 3, 95, 50, 50, 113, 48, 12, 35, 6, 25, 12, 36,
+			34, 35, 140, 40, 0, 11, 6, 224, 178, 183, 224, 179, 141, 37, 93, 0, 0, 17, 3, 95, 50, 53, 113, 48, 12, 35, 6, 25, 12, 6,
+			134, 72, 40, 0, 0, 15, 140, 224, 178, 133, 224, 178, 181, 224, 178, 179, 224, 179, 129, 72, 19, 3, 95, 50, 52, 113, 48, 12, 35, 6,
+			25, 12, 50, 6, 118, 55, 49, 40, 0, 0, 16, 3, 95, 50, 55, 113, 48, 12, 35, 6, 25, 12, 114, 62, 40, 0, 0, 16, 3, 95,
+			50, 54, 113, 48, 12, 35, 6, 25, 12, 118, 34, 40, 0, 11, 6, 224, 178, 181, 224, 179, 141, 37, 84, 0, 0, 17, 3, 95, 51, 49,
+			65, 6, 39, 84, 35, 25, 12, 39, 50, 72, 40, 0, 0, 0, 17, 3, 95, 51, 51, 65, 6, 39, 84, 35, 25, 65, 6, 123, 34, 40,
+			0, 0, 17, 3, 95, 51, 50, 65, 6, 39, 84, 35, 25, 36, 34, 35, 140, 40, 0, 0, 16, 3, 95, 51, 53, 65, 6, 39, 84, 35,
+			25, 6, 134, 72, 40, 0, 0, 18, 3, 95, 51, 52, 65, 6, 39, 84, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 15, 3, 95, 51,
+			55, 65, 6, 39, 84, 35, 25, 114, 62, 40, 0, 0, 15, 3, 95, 51, 54, 65, 6, 39, 84, 35, 25, 118, 34, 40, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 55, 57, 116, 48, 12, 35, 25, 39, 65, 71, 35, 25, 12,
+			40, 0, 17, 3, 95, 54, 49, 35, 34, 35, 84, 35, 25, 12, 39, 50, 72, 40, 0, 0, 15, 3, 95, 55, 56, 116, 48, 12, 35, 25,
+			36, 50, 139, 40, 0, 14, 3, 95, 51, 88, 65, 6, 39, 84, 35, 25, 12, 40, 0, 0, 11, 3, 95, 48, 67, 50, 6, 123, 34, 118,
+			0, 17, 3, 95, 54, 51, 35, 34, 35, 84, 35, 25, 65, 6, 123, 34, 40, 0, 0, 17, 3, 95, 54, 50, 35, 34, 35, 84, 35, 25,
+			36, 34, 35, 140, 40, 0, 0, 15, 3, 95, 54, 53, 35, 34, 35, 84, 35, 25, 134, 72, 40, 0, 0, 18, 3, 95, 54, 52, 35, 34,
+			35, 84, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 15, 3, 95, 54, 55, 35, 34, 35, 84, 35, 25, 114, 62, 40, 0, 0, 15, 3,
+			95, 54, 54, 35, 34, 35, 84, 35, 25, 118, 34, 40, 0, 0, 16, 3, 95, 55, 49, 116, 48, 12, 35, 25, 12, 39, 50, 72, 40, 0,
+			0, 0, 10, 3, 95, 49, 67, 50, 123, 34, 118, 0, 16, 3, 95, 55, 51, 116, 48, 12, 35, 25, 65, 6, 123, 34, 40, 0, 0, 16,
+			3, 95, 55, 50, 116, 48, 12, 35, 25, 36, 34, 35, 140, 40, 0, 0, 14, 3, 95, 55, 53, 116, 48, 12, 35, 25, 134, 72, 40, 0,
+			0, 17, 3, 95, 55, 52, 116, 48, 12, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 13, 4, 95, 53, 67, 48, 6, 134, 50, 123, 34,
+			40, 0, 14, 3, 95, 55, 55, 116, 48, 12, 35, 25, 114, 62, 40, 0, 0, 14, 3, 95, 55, 54, 116, 48, 12, 35, 25, 118, 34, 40,
+			0, 0, 19, 3, 95, 49, 57, 107, 35, 6, 25, 12, 6, 39, 65, 71, 35, 25, 12, 40, 0, 0, 16, 3, 95, 49, 56, 107, 35, 72,
+			37, 50, 6, 36, 50, 139, 40, 0, 0, 13, 3, 95, 50, 67, 6, 37, 50, 50, 123, 34, 118, 0, 0, 0, 0, 0, 0, 0, 20, 3,
+			95, 50, 57, 113, 48, 12, 35, 6, 25, 12, 39, 65, 71, 35, 25, 12, 40, 0, 15, 3, 95, 49, 49, 107, 35, 50, 50, 6, 39, 50,
+			72, 40, 0, 0, 17, 3, 95, 50, 56, 113, 48, 12, 35, 6, 25, 12, 36, 50, 139, 40, 0, 0, 14, 3, 95, 51, 67, 65, 6, 40,
+			50, 50, 123, 34, 118, 0, 15, 3, 95, 49, 51, 107, 35, 72, 37, 65, 6, 123, 34, 40, 0, 0, 15, 3, 95, 49, 50, 107, 35, 50,
+			12, 36, 34, 35, 140, 40, 0, 0, 14, 3, 95, 49, 53, 107, 35, 72, 37, 50, 134, 72, 40, 0, 0, 16, 3, 95, 49, 52, 107, 35,
+			72, 37, 50, 6, 118, 55, 49, 40, 0, 0, 15, 3, 95, 49, 55, 107, 35, 72, 37, 50, 6, 114, 62, 40, 0, 0, 14, 3, 95, 49,
+			54, 107, 35, 72, 37, 50, 118, 34, 40, 0, 0, 0, 14, 3, 95, 55, 88, 6, 116, 48, 12, 35, 25, 12, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 21, 3, 95, 52, 57, 50, 6, 35, 55, 35, 84, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0, 0, 18, 3, 95, 52, 56,
+			50, 6, 35, 55, 35, 84, 35, 25, 36, 50, 139, 40, 0, 0, 12, 3, 95, 53, 67, 6, 134, 50, 123, 34, 118, 0, 0, 0, 0, 0,
+			0, 0, 17, 3, 95, 53, 57, 134, 84, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0, 19, 3, 95, 52, 49, 50, 6, 35, 55, 35, 84,
+			35, 25, 12, 39, 50, 72, 40, 0, 0, 14, 3, 95, 53, 56, 134, 84, 35, 25, 36, 50, 139, 40, 0, 12, 3, 95, 49, 88, 107, 6,
+			35, 25, 12, 40, 0, 0, 19, 3, 95, 52, 51, 50, 6, 35, 55, 35, 84, 35, 25, 65, 6, 123, 34, 40, 0, 0, 19, 3, 95, 52,
+			50, 50, 6, 35, 55, 35, 84, 35, 25, 36, 34, 35, 140, 40, 0, 0, 17, 3, 95, 52, 53, 50, 6, 35, 55, 35, 84, 35, 25, 134,
+			72, 40, 0, 0, 20, 3, 95, 52, 52, 50, 6, 35, 55, 35, 84, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 17, 3, 95, 52, 55,
+			50, 6, 35, 55, 35, 84, 35, 25, 114, 62, 40, 0, 0, 17, 3, 95, 52, 54, 50, 6, 35, 55, 35, 84, 35, 25, 118, 34, 40, 0,
+			0, 19, 3, 95, 54, 57, 35, 34, 35, 84, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0, 15, 3, 95, 53, 49, 134, 84, 35, 25, 12,
+			39, 50, 72, 40, 0, 0, 16, 3, 95, 54, 56, 35, 34, 35, 84, 35, 25, 36, 50, 139, 40, 0, 13, 3, 95, 50, 88, 113, 48, 12,
+			35, 25, 12, 40, 0, 0, 15, 3, 95, 53, 51, 134, 84, 35, 25, 65, 6, 123, 34, 40, 0, 0, 15, 3, 95, 53, 50, 134, 84, 35,
+			25, 36, 34, 35, 140, 40, 0, 0, 14, 3, 95, 53, 53, 134, 84, 35, 25, 6, 134, 72, 40, 0, 0, 16, 3, 95, 53, 52, 134, 84,
+			35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 13, 3, 95, 53, 55, 134, 84, 35, 25, 114, 62, 40, 0, 0, 13, 3, 95, 53, 54, 134,
+			84, 35, 25, 118, 34, 40, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 63, 63, 35, 49, 93, 35, 34, 35, 0, 0, 0, 18, 3,
+			95, 56, 57, 116, 65, 71, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0, 0, 15, 3, 95, 56, 56, 116, 65, 71, 35, 25, 36, 50, 139,
+			40, 0, 16, 3, 95, 52, 88, 50, 6, 35, 55, 35, 84, 35, 25, 12, 40, 0, 0, 15, 3, 95, 57, 67, 39, 65, 71, 35, 37, 50,
+			123, 34, 118, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 57, 57, 25, 6, 39, 65, 71, 35, 25, 39, 65, 71, 35, 25, 12, 40, 0,
+			16, 3, 95, 56, 49, 116, 65, 71, 35, 25, 12, 39, 50, 72, 40, 0, 0, 17, 3, 95, 57, 56, 25, 6, 39, 65, 71, 35, 25, 36,
+			50, 139, 40, 0, 13, 3, 95, 53, 88, 6, 134, 84, 35, 25, 12, 40, 0, 0, 16, 3, 95, 56, 51, 116, 65, 71, 35, 25, 65, 6,
+			123, 34, 40, 0, 0, 16, 3, 95, 56, 50, 116, 65, 71, 35, 25, 36, 34, 35, 140, 40, 0, 0, 14, 3, 95, 56, 53, 116, 65, 71,
+			35, 25, 134, 72, 40, 0, 0, 17, 3, 95, 56, 52, 116, 65, 71, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 14, 3, 95, 56, 55,
+			116, 65, 71, 35, 25, 114, 62, 40, 0, 0, 14, 3, 95, 56, 54, 116, 65, 71, 35, 25, 118, 34, 40, 0, 0, 18, 3, 95, 57, 49,
+			25, 6, 39, 65, 71, 35, 25, 12, 39, 50, 72, 40, 0, 0, 15, 3, 95, 54, 88, 6, 35, 34, 35, 84, 35, 25, 12, 40, 0, 0,
+			18, 3, 95, 57, 51, 25, 6, 39, 65, 71, 35, 25, 65, 6, 123, 34, 40, 0, 0, 19, 3, 95, 57, 50, 25, 6, 39, 65, 71, 35,
+			25, 12, 36, 34, 35, 140, 40, 0, 0, 16, 3, 95, 57, 53, 25, 6, 39, 65, 71, 35, 25, 134, 72, 40, 0, 0, 19, 3, 95, 57,
+			52, 25, 6, 39, 65, 71, 35, 25, 50, 6, 118, 55, 49, 40, 0, 0, 12, 137, 224, 178, 135, 224, 178, 181, 224, 179, 129, 72, 16, 3,
+			95, 57, 55, 25, 6, 39, 65, 71, 35, 25, 114, 62, 40, 0, 0, 16, 3, 95, 57, 54, 25, 6, 39, 65, 71, 35, 25, 118, 34, 40,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 179, 158, 224, 179, 141, 37, 83, 0, 11, 6, 224, 178, 150, 224, 179, 141, 37, 145,
+			0, 0, 0, 14, 3, 95, 56, 88, 6, 116, 65, 71, 35, 25, 12, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 57, 88,
+			25, 6, 39, 65, 71, 35, 25, 12, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224,
+			178, 181, 224, 178, 168, 72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224, 178, 181, 224, 178, 179, 72, 0, 12, 137, 224,
+			178, 135, 224, 178, 181, 224, 178, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4,
+			95, 48, 77, 52, 71, 6, 37, 55, 37, 39, 50, 0, 0, 0, 15, 4, 95, 48, 77, 50, 55, 6, 35, 49, 91, 35, 72, 35, 0, 0,
+			12, 4, 95, 48, 77, 51, 49, 6, 39, 139, 37, 0, 0, 0, 16, 4, 95, 48, 77, 49, 89, 6, 118, 84, 37, 34, 35, 72, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 224, 178, 136, 76, 0, 0, 6, 131, 224, 178, 134, 76, 0, 0,
+			8, 3, 224, 179, 140, 147, 135, 0, 0, 11, 3, 224, 179, 141, 84, 35, 47, 47, 40, 0, 0, 8, 3, 224, 179, 138, 18, 39, 0, 8,
+			3, 224, 178, 130, 35, 65, 0, 0, 9, 3, 224, 179, 139, 147, 119, 12, 0, 8, 3, 224, 178, 131, 35, 107, 0, 0, 8, 3, 224, 179,
+			136, 147, 134, 0, 0, 0, 8, 3, 224, 179, 134, 18, 36, 0, 0, 9, 3, 224, 179, 135, 147, 114, 12, 0, 0, 9, 3, 224, 179, 132,
+			147, 44, 12, 0, 0, 0, 9, 3, 224, 179, 130, 147, 123, 12, 0, 0, 9, 3, 224, 179, 131, 18, 34, 40, 0, 0, 9, 3, 224, 179,
+			128, 147, 112, 12, 0, 0, 8, 3, 224, 179, 129, 18, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 178, 135, 224, 178,
+			181, 224, 178, 176, 224, 179, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 67, 65, 101, 0, 48, 34, 134, 84, 35, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 178, 190, 147, 118, 12, 0, 0, 8, 3, 224, 178, 191, 18, 37, 0, 0, 11, 3, 224,
 			178, 188, 50, 40, 49, 47, 35, 0, 0, 14, 3, 224, 178, 189, 35, 84, 35, 81, 34, 35, 107, 35, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 57, 67, 48, 39, 65, 71, 35, 37, 50, 123, 34, 40, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 190, 65,
 			40, 49, 49, 118, 55, 40, 0, 0, 13, 2, 195, 183, 137, 118, 81, 118, 49, 118, 34, 35, 0, 0, 9, 2, 194, 188, 49, 118, 55, 40,
-			0, 0, 9, 2, 194, 189, 35, 34, 139, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 2, 194, 189, 35, 34, 138, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 178, 136, 224, 178, 151, 72, 0, 0, 11, 6, 224, 178, 168, 224, 179, 141, 37, 50, 0,
 			0, 0, 0, 0, 11, 6, 224, 178, 174, 224, 179, 141, 37, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224,
 			178, 172, 224, 179, 141, 37, 71, 0, 11, 6, 224, 178, 164, 224, 179, 141, 37, 47, 0, 0, 0, 0, 0, 11, 6, 224, 178, 178, 224, 179,
 			141, 37, 55, 0, 11, 6, 224, 178, 170, 224, 179, 141, 37, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224,
-			178, 184, 224, 179, 141, 37, 89, 0, 11, 6, 224, 178, 176, 224, 179, 141, 37, 34, 0, 11, 6, 224, 178, 152, 224, 179, 141, 37, 147, 0,
+			178, 184, 224, 179, 141, 37, 89, 0, 11, 6, 224, 178, 176, 224, 179, 141, 37, 34, 0, 11, 6, 224, 178, 152, 224, 179, 141, 37, 146, 0,
 			0, 0, 15, 140, 224, 178, 133, 224, 178, 181, 224, 178, 168, 224, 179, 129, 72, 10, 2, 95, 51, 65, 6, 123, 34, 40, 0, 0, 11, 2,
-			95, 50, 6, 36, 34, 35, 141, 40, 0, 0, 21, 146, 224, 178, 175, 224, 178, 190, 224, 178, 181, 224, 179, 129, 224, 178, 166, 224, 179, 129,
+			95, 50, 6, 36, 34, 35, 140, 40, 0, 0, 21, 146, 224, 178, 175, 224, 178, 190, 224, 178, 181, 224, 179, 129, 224, 178, 166, 224, 179, 129,
 			72, 10, 2, 95, 49, 6, 39, 50, 72, 40, 0, 11, 6, 224, 178, 158, 224, 179, 141, 37, 67, 0, 0, 11, 2, 95, 48, 89, 6, 39,
 			50, 50, 36, 0, 0, 21, 146, 224, 178, 175, 224, 178, 190, 224, 178, 181, 224, 179, 129, 224, 178, 166, 224, 179, 135, 72, 9, 2, 95, 55,
 			6, 114, 62, 40, 0, 0, 9, 2, 95, 54, 6, 118, 34, 40, 0, 0, 12, 137, 224, 178, 135, 224, 178, 164, 224, 178, 176, 72, 9, 2,
 			95, 53, 6, 134, 72, 40, 0, 0, 11, 2, 95, 52, 50, 6, 118, 55, 49, 40, 0, 0, 0, 0, 13, 2, 95, 57, 6, 39, 65, 71,
-			35, 138, 12, 40, 0, 0, 10, 2, 95, 56, 6, 36, 50, 140, 40, 0, 0, 11, 2, 95, 63, 35, 49, 93, 35, 34, 35, 0, 0, 0,
+			35, 25, 12, 40, 0, 0, 10, 2, 95, 56, 6, 36, 50, 139, 40, 0, 0, 11, 2, 95, 63, 35, 49, 93, 35, 34, 35, 0, 0, 0,
 			11, 6, 224, 178, 156, 224, 179, 141, 37, 79, 0, 0, 0, 0, 14, 9, 224, 178, 156, 224, 178, 188, 224, 179, 141, 37, 88, 0, 14, 9,
-			224, 178, 171, 224, 178, 188, 224, 179, 141, 37, 83, 0, 0, 11, 6, 224, 178, 162, 224, 179, 141, 37, 143, 0, 11, 6, 224, 178, 154, 224,
+			224, 178, 171, 224, 178, 188, 224, 179, 141, 37, 83, 0, 0, 11, 6, 224, 178, 162, 224, 179, 141, 37, 142, 0, 11, 6, 224, 178, 154, 224,
 			179, 141, 37, 80, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224, 178, 166, 224, 179, 129, 72, 12, 137, 224, 178, 133, 224,
 			178, 166, 224, 179, 129, 72, 0, 0, 16, 140, 224, 178, 134, 224, 178, 166, 224, 178, 176, 224, 179, 134, 72, 8, 0, 0, 0, 11, 6, 224,
-			178, 160, 224, 179, 141, 37, 142, 0, 0, 0, 15, 140, 224, 178, 133, 224, 178, 181, 224, 178, 176, 224, 179, 129, 72, 15, 140, 224, 178, 168,
+			178, 160, 224, 179, 141, 37, 141, 0, 0, 0, 15, 140, 224, 178, 133, 224, 178, 181, 224, 178, 176, 224, 179, 129, 72, 15, 140, 224, 178, 168,
 			224, 179, 128, 224, 178, 168, 224, 179, 129, 72, 15, 140, 224, 178, 168, 224, 178, 190, 224, 178, 168, 224, 179, 129, 72, 0, 0, 11, 6, 224,
 			178, 166, 224, 179, 141, 37, 72, 0, 0, 19, 143, 224, 178, 174, 224, 178, 164, 224, 179, 141, 224, 178, 164, 224, 179, 129, 72, 8, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224, 178, 130, 224, 178, 166, 72, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 178, 135, 224, 178, 166, 224, 178, 176, 72, 12, 137, 224, 178, 133, 224, 178,
 			166, 224, 178, 176, 72, 11, 6, 224, 178, 182, 224, 179, 141, 37, 97, 0, 0, 28, 152, 224, 178, 134, 224, 178, 166, 224, 179, 141, 224, 178,
-			166, 224, 178, 176, 224, 178, 191, 224, 178, 130, 224, 178, 166, 72, 8, 16, 70, 44, 19, 142, 4, 64, 64, 49, 35, 50, 50, 35, 141, 35,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			166, 224, 178, 176, 224, 178, 191, 224, 178, 130, 224, 178, 166, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 44, 19, 142, 4, 64, 64, 49, 35, 50, 50, 35, 140, 35, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -23453,20 +34142,24 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 230, 12, 0, 0, 48, 0, 0, 0, 231, 12, 0, 0, 49, 0, 0, 0,
 			232, 12, 0, 0, 50, 0, 0, 0, 233, 12, 0, 0, 51, 0, 0, 0, 234, 12, 0, 0, 52, 0, 0, 0, 235, 12, 0, 0, 53, 0,
 			0, 0, 236, 12, 0, 0, 54, 0, 0, 0, 237, 12, 0, 0, 55, 0, 0, 0, 238, 12, 0, 0, 56, 0, 0, 0, 239, 12, 0, 0,
-			57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7, 6, 1, 8, 0, 3, 37,
+			57, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 224, 178, 149, 0, 224, 178, 150, 0, 224, 178, 151, 0, 224, 178, 152, 0, 224, 178, 153,
+			0, 7, 6, 18, 67, 224, 178, 154, 0, 224, 178, 155, 0, 224, 178, 156, 0, 224, 178, 157, 0, 224, 178, 158, 0, 7, 6, 18, 68, 224,
+			178, 159, 0, 224, 178, 160, 0, 224, 178, 161, 0, 224, 178, 162, 0, 224, 178, 163, 0, 7, 6, 18, 69, 224, 178, 164, 0, 224, 178, 165,
+			0, 224, 178, 166, 0, 224, 178, 167, 0, 224, 178, 168, 0, 7, 6, 18, 70, 224, 178, 170, 0, 224, 178, 171, 0, 224, 178, 172, 0, 224,
+			178, 173, 0, 224, 178, 174, 0, 7, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7, 6, 1, 8, 0, 3, 37,
 			0, 7, 6, 1, 9, 0, 3, 112, 0, 7, 6, 1, 10, 0, 3, 40, 0, 7, 6, 1, 11, 0, 3, 123, 0, 7, 6, 1, 12, 0,
 			3, 34, 40, 0, 7, 6, 1, 15, 0, 3, 36, 0, 7, 6, 1, 16, 0, 3, 114, 0, 7, 6, 1, 17, 0, 3, 134, 0, 7, 6,
 			1, 19, 0, 3, 39, 0, 7, 6, 1, 20, 0, 3, 119, 0, 7, 6, 1, 21, 0, 3, 135, 0, 7, 6, 1, 22, 0, 2, 17, 66,
-			3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66,
-			3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 147, 0, 3, 147, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66,
+			3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66,
+			3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66,
 			3, 68, 0, 3, 68, 35, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0, 3, 80, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66,
-			3, 144, 0, 3, 144, 35, 0, 7, 6, 1, 29, 0, 2, 17, 66, 3, 79, 0, 3, 79, 35, 0, 224, 178, 188, 2, 17, 66, 3, 88,
-			0, 224, 178, 188, 3, 88, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 31, 0, 2, 17,
-			66, 3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 33, 0, 2, 17,
-			66, 3, 142, 0, 3, 142, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 35, 0, 2, 17,
-			66, 3, 143, 0, 3, 143, 35, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 2, 17,
-			66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 39, 0, 2, 17,
-			66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 41, 0, 2, 17,
+			3, 143, 0, 3, 143, 35, 0, 7, 6, 1, 29, 0, 2, 17, 66, 3, 79, 0, 3, 79, 35, 0, 224, 178, 188, 2, 17, 66, 3, 88,
+			0, 224, 178, 188, 3, 88, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 35, 0, 7, 6, 1, 31, 0, 2, 17,
+			66, 3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 33, 0, 2, 17,
+			66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 35, 0, 2, 17,
+			66, 3, 142, 0, 3, 142, 35, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 2, 17,
+			66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 35, 0, 7, 6, 1, 39, 0, 2, 17,
+			66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 41, 0, 2, 17,
 			66, 3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 44, 0, 224, 178,
 			188, 2, 17, 66, 3, 83, 0, 224, 178, 188, 3, 83, 35, 0, 2, 17, 66, 3, 136, 0, 3, 136, 35, 0, 7, 6, 1, 45, 0, 2,
 			17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137, 35, 0, 7, 6, 1, 47, 0, 2,
@@ -23477,16 +34170,17 @@ FilesInMemory create_espeakdata_dicts () {
 			17, 66, 3, 93, 0, 3, 93, 35, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 58, 0, 2,
 			17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 95, 0, 2, 17, 66, 3, 83, 0, 3, 83, 35, 0, 7, 6, 1, 97, 0, 3,
 			44, 0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104, 105, 0, 7, 6, 224, 178, 0, 191, 3, 37,
-			0, 130, 3, 65, 0, 131, 3, 107, 0, 190, 3, 118, 0, 7, 6, 224, 179, 0, 141, 3, 0, 4, 149, 3, 12, 0, 150, 0, 131, 3,
-			34, 40, 0, 134, 3, 36, 0, 138, 3, 39, 0, 129, 3, 40, 0, 132, 3, 44, 12, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3,
-			119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 140, 3, 135, 0, 7, 6, 0, 36, 3, 72, 119, 62, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts34 = FileInMemory_createWithData (5367, reinterpret_cast<const char *> (&espeakdata_dicts34_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/kn_dict", 
+			0, 130, 2, 18, 69, 3, 50, 0, 130, 3, 65, 0, 130, 2, 18, 68, 3, 66, 0, 130, 2, 18, 67, 3, 67, 0, 130, 2, 18, 66,
+			3, 68, 0, 131, 3, 107, 0, 190, 3, 118, 0, 7, 6, 224, 179, 0, 141, 3, 0, 4, 149, 3, 12, 0, 150, 0, 131, 3, 34, 40,
+			0, 134, 3, 36, 0, 138, 3, 39, 0, 129, 3, 40, 0, 132, 3, 44, 12, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3, 119, 0,
+			130, 3, 123, 0, 136, 3, 134, 0, 140, 3, 135, 0, 7, 6, 0, 36, 3, 72, 119, 62, 35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts36 = FileInMemory_createWithData (5515, reinterpret_cast<const char *> (&espeakdata_dicts36_data), 
+			U"espeak-1.48.04-source/espeak-data/kn_dict", 
 			U"kn");
-		Collection_addItem (me.peek(), espeakdata_dicts34.transfer());
+		my addItem_move (espeakdata_dicts36.move());
 
-		static unsigned char espeakdata_dicts35_data[6488] = {
-			0, 4, 0, 0, 75, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts37_data[6463] = {
+			0, 4, 0, 0, 65, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 48, 21, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 225,
 			132, 131, 225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 0, 29, 46, 21, 225, 132, 134, 225,
@@ -23496,397 +34190,396 @@ FilesInMemory create_espeakdata_dicts () {
 			133, 161, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 52, 24, 225, 132, 135, 225, 133, 174, 225, 132, 137, 225, 133, 181, 225, 134, 186,
 			225, 132, 131, 225, 133, 169, 225, 134, 175, 225, 132, 135, 225, 133, 174, 225, 132, 137, 225, 133, 181, 225, 134, 174, 225, 132, 132, 225, 133, 169,
 			225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 49, 77, 52, 81, 57, 6, 13, 68, 0,
-			0, 0, 0, 0, 13, 4, 95, 49, 77, 48, 76, 6, 107, 20, 13, 50, 0, 0, 11, 4, 95, 49, 77, 49, 65, 6, 35, 50, 0, 0,
-			10, 4, 95, 49, 77, 50, 6, 13, 104, 0, 0, 10, 4, 95, 49, 77, 51, 78, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 225,
-			132, 132, 6, 89, 20, 35, 68, 72, 4, 37, 104, 109, 72, 20, 0, 0, 13, 3, 225, 132, 133, 16, 37, 38, 6, 109, 34, 34, 0, 0,
-			12, 3, 225, 132, 134, 65, 37, 38, 6, 109, 65, 0, 0, 12, 3, 225, 132, 135, 48, 37, 38, 6, 109, 48, 0, 0, 12, 3, 225, 132,
-			128, 81, 37, 57, 6, 13, 104, 0, 0, 17, 3, 225, 132, 129, 6, 89, 20, 35, 68, 104, 4, 37, 57, 13, 104, 0, 0, 22, 6, 225,
-			132, 137, 225, 132, 135, 225, 132, 137, 225, 133, 181, 225, 132, 135, 225, 133, 161, 0, 29, 12, 3, 225, 132, 130, 50, 37, 38, 6, 109, 50,
-			0, 0, 13, 3, 225, 132, 131, 72, 37, 104, 6, 109, 72, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			13, 3, 225, 132, 144, 47, 107, 37, 38, 6, 109, 112, 0, 0, 12, 3, 225, 132, 145, 114, 37, 38, 6, 109, 48, 0, 0, 34, 15, 225,
-			132, 144, 225, 133, 165, 225, 134, 186, 225, 132, 137, 225, 133, 166, 225, 132, 144, 225, 133, 165, 225, 134, 174, 225, 132, 138, 225, 133, 166, 0,
-			29, 12, 3, 225, 132, 146, 107, 37, 38, 6, 109, 112, 0, 0, 0, 12, 3, 225, 132, 140, 78, 37, 38, 6, 109, 47, 0, 0, 17, 3,
-			225, 132, 141, 6, 89, 20, 35, 68, 77, 4, 37, 38, 109, 47, 0, 0, 39, 15, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 133, 178,
-			225, 134, 190, 225, 132, 131, 225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 178, 225, 134, 174, 0, 29, 14, 3, 225, 132, 142,
-			76, 107, 20, 6, 37, 38, 109, 47, 0, 0, 12, 3, 225, 132, 143, 111, 37, 38, 6, 109, 49, 0, 0, 17, 3, 225, 132, 136, 6, 89,
-			20, 35, 68, 71, 4, 37, 38, 109, 48, 0, 0, 12, 3, 225, 132, 137, 89, 37, 38, 6, 39, 112, 0, 0, 17, 3, 225, 132, 138, 6,
-			89, 20, 35, 68, 89, 4, 37, 38, 39, 112, 0, 0, 52, 24, 225, 132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 128, 225, 133, 181, 225,
-			134, 186, 225, 132, 137, 225, 133, 166, 225, 132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 128, 225, 133, 181, 225, 134, 174, 225, 132, 138, 225,
-			133, 166, 0, 29, 11, 3, 225, 132, 139, 37, 38, 6, 109, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133,
-			169, 225, 134, 186, 225, 132, 131, 225, 133, 174, 225, 134, 168, 225, 132, 135, 225, 133, 169, 225, 134, 174, 225, 132, 132, 225, 133, 174, 225, 134,
-			168, 0, 29, 0, 0, 0, 46, 21, 225, 133, 181, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 132, 128, 225, 133, 174, 225, 134, 168, 225,
-			133, 181, 225, 134, 174, 225, 132, 141, 225, 133, 161, 225, 132, 128, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0, 40, 18, 225, 132,
-			144, 225, 133, 162, 225, 134, 186, 225, 132, 140, 225, 133, 174, 225, 134, 175, 225, 132, 144, 225, 133, 162, 225, 134, 174, 225, 132, 141, 225, 133,
-			174, 225, 134, 175, 0, 29, 0, 34, 15, 225, 132, 146, 225, 133, 162, 225, 134, 186, 225, 132, 137, 225, 133, 174, 225, 132, 146, 225, 133, 162,
-			225, 134, 174, 225, 132, 138, 225, 133, 174, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 34, 15, 225, 132, 146, 225, 133, 172, 225, 134, 186,
-			225, 132, 135, 225, 133, 162, 225, 132, 146, 225, 133, 176, 225, 134, 174, 225, 132, 136, 225, 133, 162, 0, 29, 0, 0, 40, 18, 225, 132, 144,
-			225, 133, 172, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 171, 225, 132, 144, 225, 133, 172, 225, 134, 174, 225, 132, 129, 225, 133, 161,
-			225, 134, 171, 0, 29, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 171, 225, 132, 142, 225, 133,
-			161, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 171, 0, 29, 40, 18, 225, 132, 128, 225, 133, 169, 225, 134, 186, 225, 132, 128, 225,
-			133, 161, 225, 134, 171, 225, 132, 128, 225, 133, 169, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 171, 0, 29, 0, 0, 0, 0, 40,
-			18, 225, 132, 135, 225, 133, 181, 225, 134, 186, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 135, 225, 133, 181, 225, 134, 171, 225, 132,
-			134, 225, 133, 174, 225, 134, 175, 0, 29, 0, 0, 0, 0, 46, 21, 225, 132, 130, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 134, 186,
-			225, 132, 135, 225, 133, 162, 225, 132, 130, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 134, 174, 225, 132, 136, 225, 133, 162, 0, 29, 0,
-			0, 52, 24, 225, 132, 134, 225, 133, 166, 225, 134, 186, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 134,
-			225, 133, 166, 225, 134, 171, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 175, 0, 29, 0, 0, 46, 21, 225, 132, 146,
-			225, 133, 172, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 132, 146, 225, 133, 176, 225, 134, 174, 225, 132, 129,
-			225, 133, 161, 225, 132, 133, 225, 133, 174, 0, 29, 0, 61, 27, 225, 132, 131, 225, 133, 169, 225, 132, 133, 225, 133, 181, 225, 132, 129, 225,
-			133, 162, 225, 134, 186, 225, 133, 167, 225, 134, 175, 225, 132, 131, 225, 133, 169, 225, 132, 133, 225, 133, 181, 225, 132, 129, 225, 133, 162, 225,
-			134, 171, 225, 132, 130, 225, 133, 167, 225, 134, 175, 0, 29, 0, 0, 0, 0, 46, 21, 225, 132, 135, 225, 133, 167, 225, 134, 186, 225, 132,
-			128, 225, 133, 161, 225, 132, 133, 225, 133, 181, 225, 132, 135, 225, 133, 167, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 132, 133, 225, 133,
-			181, 0, 29, 46, 21, 225, 132, 131, 225, 133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 140, 225, 133, 181, 225, 132, 131, 225,
-			133, 162, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 132, 140, 225, 133, 181, 0, 29, 0, 0, 0, 40, 18, 225, 132, 142, 225, 133, 161,
-			225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 134, 171, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 141, 225, 133, 161, 225, 134, 171,
-			0, 29, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 134, 171, 225, 132, 142, 225, 133, 161, 225, 134,
-			174, 225, 132, 141, 225, 133, 161, 225, 134, 171, 0, 29, 0, 0, 0, 58, 27, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225,
-			134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 140, 225, 133, 181, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 174, 225,
-			132, 129, 225, 133, 161, 225, 132, 140, 225, 133, 181, 0, 29, 0, 0, 0, 0, 0, 58, 27, 225, 133, 174, 225, 132, 133, 225, 133, 165, 225,
-			134, 188, 225, 133, 181, 225, 134, 186, 225, 132, 137, 225, 133, 169, 225, 134, 168, 225, 133, 174, 225, 132, 133, 225, 133, 165, 225, 134, 188, 225,
-			133, 181, 225, 134, 174, 225, 132, 138, 225, 133, 169, 225, 134, 168, 0, 29, 0, 0, 0, 40, 18, 225, 132, 129, 225, 133, 162, 225, 134, 186,
-			225, 132, 134, 225, 133, 174, 225, 134, 168, 225, 132, 129, 225, 133, 162, 225, 134, 171, 225, 132, 134, 225, 133, 174, 225, 134, 168, 0, 29, 0,
-			0, 0, 0, 0, 42, 18, 225, 132, 130, 225, 133, 162, 225, 134, 186, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 130, 225, 133, 162,
-			225, 134, 171, 203, 144, 225, 132, 134, 225, 133, 174, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 52, 24, 225, 133, 163, 225, 134, 188,
-			225, 132, 142, 225, 133, 181, 225, 134, 186, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 133, 163, 225, 134, 188, 225, 132, 142, 225, 133, 181,
-			225, 134, 171, 225, 132, 134, 225, 133, 174, 225, 134, 175, 0, 29, 54, 24, 225, 132, 134, 225, 133, 169, 225, 132, 128, 225, 133, 181, 225, 134,
-			186, 225, 132, 135, 225, 133, 174, 225, 134, 175, 225, 132, 134, 225, 133, 169, 203, 144, 225, 132, 128, 225, 133, 181, 225, 134, 174, 225, 132, 136,
-			225, 133, 174, 225, 134, 175, 0, 29, 0, 0, 0, 0, 40, 18, 225, 132, 143, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225,
-			134, 185, 225, 132, 143, 225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 184, 0, 29, 0, 0, 0, 46, 21, 225, 132, 142,
-			225, 133, 166, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 132, 143, 225, 133, 177, 225, 132, 142, 225, 133, 166, 225, 134, 174, 225, 132, 136,
-			225, 133, 161, 225, 132, 143, 225, 133, 177, 0, 29, 0, 0, 42, 18, 225, 132, 137, 225, 133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 161,
-			225, 134, 188, 225, 132, 137, 225, 133, 162, 225, 134, 174, 203, 144, 225, 132, 129, 225, 133, 161, 225, 134, 188, 0, 29, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 142, 225, 133,
-			169, 225, 134, 186, 225, 132, 128, 225, 133, 174, 225, 134, 168, 225, 132, 142, 225, 133, 169, 225, 134, 174, 225, 132, 129, 225, 133, 174, 225, 134,
-			168, 0, 29, 0, 0, 0, 0, 0, 0, 46, 21, 225, 132, 140, 225, 133, 162, 225, 134, 186, 225, 132, 131, 225, 133, 165, 225, 132, 134, 225,
-			133, 181, 225, 132, 140, 225, 133, 162, 225, 134, 174, 225, 132, 132, 225, 133, 165, 225, 132, 134, 225, 133, 181, 0, 29, 0, 0, 0, 58, 27,
-			225, 132, 137, 225, 133, 165, 225, 134, 171, 225, 132, 140, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 174, 225, 134, 168, 225, 132, 137,
-			225, 133, 165, 225, 134, 171, 225, 132, 140, 225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 51, 88, 89, 6, 35, 65, 11, 15, 89, 6, 37, 48, 11, 0, 0,
-			11, 3, 95, 48, 67, 48, 6, 108, 104, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 55, 88, 76, 6, 107, 6, 37, 51, 11, 89, 6, 37, 48, 11, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 88, 89, 6, 37, 48, 11, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 15, 3, 95, 50, 88, 6, 37, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 16, 3, 95, 52, 88, 89, 6, 35, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			15, 3, 95, 53, 88, 6, 39, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 54, 88, 57, 6,
-			40, 104, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56,
-			88, 114, 6, 35, 51, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 40, 18, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225,
-			132, 130, 225, 133, 181, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 0, 29, 0, 0, 0, 0, 0,
-			0, 16, 3, 95, 57, 88, 81, 6, 40, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 36, 15, 225, 132, 130, 225,
-			133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 130, 225, 133, 162, 225, 134, 174, 203, 144, 225, 132, 129, 225, 133, 161, 0, 29,
-			0, 0, 0, 0, 0, 0, 46, 21, 225, 132, 135, 225, 133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225,
-			132, 135, 225, 133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 174, 225, 132, 129, 225, 133, 161, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 81, 57, 6,
-			13, 68, 0, 0, 0, 10, 4, 95, 48, 77, 50, 6, 13, 104, 0, 0, 10, 4, 95, 48, 77, 51, 78, 6, 39, 0, 0, 13, 4, 95,
-			48, 77, 48, 76, 6, 107, 20, 13, 50, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 34,
-			15, 225, 132, 145, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 181, 225, 132, 145, 225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133,
-			181, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 15, 225, 132, 131, 225, 133, 162, 225, 134, 186,
-			225, 133, 181, 225, 135, 129, 225, 132, 131, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 184, 0, 29, 37, 15, 225, 132,
-			129, 225, 133, 162, 225, 134, 186, 225, 133, 181, 225, 135, 129, 225, 132, 129, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134,
-			184, 0, 29, 0, 34, 15, 225, 132, 146, 225, 133, 172, 225, 134, 186, 225, 132, 137, 225, 133, 174, 225, 132, 146, 225, 133, 172, 225, 134, 174,
-			225, 132, 138, 225, 133, 174, 0, 29, 0, 34, 15, 225, 133, 181, 225, 134, 186, 225, 132, 134, 225, 133, 169, 225, 134, 183, 225, 133, 181, 225,
-			134, 171, 225, 132, 134, 225, 133, 169, 225, 134, 183, 0, 29, 0, 0, 0, 0, 49, 21, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133,
-			174, 225, 134, 186, 225, 133, 181, 225, 135, 129, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 171, 225, 132, 130, 225, 133,
-			181, 225, 134, 184, 0, 29, 0, 0, 0, 0, 31, 12, 225, 133, 173, 225, 134, 186, 225, 133, 181, 225, 134, 186, 225, 133, 173, 225, 134, 171,
-			225, 132, 130, 225, 133, 181, 225, 134, 174, 0, 29, 0, 0, 0, 0, 0, 46, 21, 225, 132, 140, 225, 133, 161, 225, 132, 133, 225, 133, 181,
-			225, 134, 186, 225, 132, 137, 225, 133, 166, 225, 132, 140, 225, 133, 161, 225, 132, 133, 225, 133, 181, 225, 134, 174, 225, 132, 138, 225, 133, 166,
-			0, 29, 0, 0, 0, 0, 49, 21, 225, 132, 135, 225, 133, 166, 225, 132, 128, 225, 133, 162, 225, 134, 186, 225, 133, 181, 225, 134, 186, 225,
-			132, 135, 225, 133, 166, 225, 132, 128, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 174, 0, 29, 46, 21, 225, 132, 128,
-			225, 133, 169, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225, 132, 140, 225, 133, 162, 225, 132, 128, 225, 133, 169, 225, 132, 133, 225, 133, 162,
-			225, 134, 174, 225, 132, 141, 225, 133, 162, 0, 29, 0, 0, 0, 0, 52, 24, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225,
-			132, 134, 225, 133, 161, 225, 133, 179, 225, 134, 175, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 171, 225, 132, 134, 225, 133, 161, 225,
-			133, 179, 225, 134, 175, 0, 29, 0, 0, 0, 39, 15, 225, 132, 146, 225, 133, 174, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 146,
-			225, 133, 174, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 39, 15, 225, 132, 131, 225, 133, 177, 225, 134, 186,
-			225, 133, 181, 225, 134, 175, 225, 132, 131, 225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 0, 0,
-			0, 45, 18, 225, 133, 168, 225, 132, 137, 225, 133, 161, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 133, 168, 203, 144, 225, 132, 137, 225,
-			133, 161, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 65, 18, 225, 132, 128, 225, 133, 161, 225, 133, 172, 225, 134, 186,
-			225, 133, 181, 225, 134, 175, 225, 132, 128, 225, 133, 161, 225, 133, 172, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 47, 225, 132,
-			128, 225, 133, 161, 225, 133, 176, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 0, 40, 18, 225, 132, 146, 225, 133, 162,
-			225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 135, 128, 225, 132, 146, 225, 133, 162, 225, 134, 174, 225, 132, 136, 225, 133, 167, 225, 134, 174,
-			0, 29, 0, 0, 49, 21, 225, 132, 137, 225, 133, 161, 225, 132, 137, 225, 133, 161, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 137,
-			225, 133, 161, 225, 132, 137, 225, 133, 161, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 49, 21, 225, 132, 131, 225, 133,
-			174, 225, 132, 133, 225, 133, 166, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 131, 225, 133, 174, 225, 132, 133, 225, 133, 166, 225, 134,
-			171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 0, 52, 24, 225, 132, 146, 225, 133, 167, 225, 134, 186,
-			225, 132, 135, 225, 133, 161, 225, 132, 130, 225, 133, 179, 225, 134, 175, 225, 132, 146, 225, 133, 167, 225, 134, 174, 225, 132, 136, 225, 133, 161,
-			225, 132, 130, 225, 133, 179, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133, 162, 225, 134, 186, 225, 132, 128,
-			225, 133, 181, 225, 134, 175, 225, 132, 135, 225, 133, 162, 225, 134, 174, 225, 132, 129, 225, 133, 181, 225, 134, 175, 0, 29, 40, 18, 225, 132,
-			134, 225, 133, 162, 225, 134, 186, 225, 132, 131, 225, 133, 169, 225, 134, 175, 225, 132, 134, 225, 133, 162, 225, 134, 174, 225, 132, 132, 225, 133,
-			169, 225, 134, 175, 0, 29, 0, 0, 0, 34, 15, 225, 132, 137, 225, 133, 174, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 132, 137, 225,
-			133, 174, 225, 134, 174, 225, 132, 141, 225, 133, 161, 0, 29, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 169,
-			225, 134, 188, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 141, 225, 133, 169, 225, 134, 188, 0, 29, 0, 0, 0, 46, 21, 225, 133,
-			161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 188, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134,
-			174, 225, 132, 136, 225, 133, 161, 225, 134, 188, 0, 29, 52, 24, 225, 132, 140, 225, 133, 169, 225, 132, 128, 225, 133, 162, 225, 134, 186, 225,
-			132, 137, 225, 133, 161, 225, 134, 175, 225, 132, 140, 225, 133, 169, 225, 132, 128, 225, 133, 162, 225, 134, 174, 225, 132, 138, 225, 133, 161, 225,
-			134, 175, 0, 29, 0, 40, 18, 225, 132, 143, 225, 133, 169, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 134, 188, 225, 132, 143, 225, 133,
-			169, 225, 134, 174, 225, 132, 136, 225, 133, 167, 225, 134, 188, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 89, 6,
-			35, 65, 11, 0, 0, 8, 2, 95, 50, 6, 37, 11, 0, 0, 9, 2, 95, 49, 6, 37, 51, 11, 0, 0, 10, 2, 95, 48, 57, 6,
-			13, 68, 11, 0, 0, 12, 2, 95, 55, 76, 6, 107, 6, 37, 51, 11, 0, 0, 10, 2, 95, 54, 57, 6, 40, 104, 11, 0, 0, 8,
-			2, 95, 53, 6, 39, 11, 0, 0, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 181, 225, 134, 184, 225, 132,
-			142, 225, 133, 161, 225, 134, 174, 225, 132, 141, 225, 133, 181, 225, 134, 184, 0, 29, 9, 2, 95, 52, 89, 6, 35, 11, 0, 0, 0, 0,
-			46, 21, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225, 132, 140, 225, 133, 181, 225, 134, 184, 225, 133, 161, 225, 132, 133, 225,
-			133, 162, 225, 134, 174, 225, 132, 141, 225, 133, 181, 225, 134, 184, 0, 29, 9, 2, 95, 57, 81, 6, 40, 11, 0, 0, 10, 2, 95, 56,
-			114, 6, 35, 51, 11, 0, 0, 0, 52, 24, 225, 132, 137, 225, 133, 172, 225, 134, 186, 225, 132, 140, 225, 133, 169, 225, 132, 128, 225, 133,
-			161, 225, 134, 168, 225, 132, 137, 225, 133, 176, 225, 134, 174, 225, 132, 141, 225, 133, 169, 225, 132, 128, 225, 133, 161, 225, 134, 168, 0, 29,
-			0, 0, 0, 63, 18, 225, 132, 128, 225, 133, 168, 225, 134, 186, 225, 132, 130, 225, 133, 161, 225, 134, 175, 225, 132, 128, 225, 133, 168, 225,
-			134, 171, 203, 144, 225, 132, 130, 225, 133, 161, 225, 134, 175, 47, 225, 132, 128, 225, 133, 166, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133,
-			161, 225, 134, 175, 0, 29, 58, 27, 225, 132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 137, 225, 133, 166, 225, 134, 186, 225, 132, 140, 225,
-			133, 181, 225, 134, 184, 225, 132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 137, 225, 133, 166, 225, 134, 174, 225, 132, 141, 225, 133, 181, 225,
-			134, 184, 0, 29, 0, 0, 0, 0, 0, 0, 54, 24, 225, 132, 140, 225, 133, 166, 225, 132, 137, 225, 133, 161, 225, 134, 186, 225, 132, 130,
-			225, 133, 161, 225, 134, 175, 225, 132, 140, 225, 133, 166, 203, 144, 225, 132, 137, 225, 133, 161, 225, 134, 174, 225, 132, 130, 225, 133, 161, 225,
-			134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 137, 225, 133, 166, 225, 134, 186, 225, 132,
-			135, 225, 133, 161, 225, 134, 188, 225, 132, 137, 225, 133, 166, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 188, 0, 29, 0, 0, 0,
-			0, 40, 18, 225, 132, 135, 225, 133, 162, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 134, 188, 225, 132, 135, 225, 133, 162, 225, 134, 174,
-			225, 132, 136, 225, 133, 167, 225, 134, 188, 0, 29, 40, 18, 225, 132, 128, 225, 133, 177, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 134,
-			188, 225, 132, 128, 225, 133, 177, 225, 134, 174, 225, 132, 136, 225, 133, 167, 225, 134, 188, 0, 29, 40, 18, 225, 132, 128, 225, 133, 177, 225,
-			134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 184, 225, 132, 128, 225, 133, 177, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 184, 0,
-			29, 0, 0, 52, 24, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 188, 225,
-			132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 188, 0, 29, 52, 24, 225, 132, 144,
-			225, 133, 165, 225, 134, 186, 225, 132, 134, 225, 133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 188, 225, 132, 144, 225, 133, 165, 225, 134, 171,
-			225, 132, 134, 225, 133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 188, 0, 29, 0, 0, 57, 24, 225, 132, 131, 225, 133, 177, 225, 134, 186,
-			225, 133, 181, 225, 134, 184, 225, 132, 134, 225, 133, 161, 225, 134, 186, 225, 132, 131, 225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225,
-			133, 181, 225, 134, 183, 225, 132, 134, 225, 133, 161, 225, 134, 174, 0, 29, 0, 60, 27, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 132,
-			128, 225, 133, 161, 225, 134, 175, 225, 132, 134, 225, 133, 161, 225, 134, 188, 225, 132, 131, 225, 133, 177, 225, 134, 174, 203, 144, 225, 132, 129,
-			225, 133, 161, 225, 134, 175, 225, 132, 134, 225, 133, 161, 225, 134, 188, 0, 29, 0, 54, 24, 225, 132, 137, 225, 133, 161, 225, 132, 140, 225,
-			133, 161, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 184, 225, 132, 137, 225, 133, 161, 203, 144, 225, 132, 140, 225, 133, 161, 225, 134,
-			174, 225, 132, 136, 225, 133, 161, 225, 134, 184, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 30, 225, 132, 134,
-			225, 133, 165, 225, 132, 133, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 181, 225, 132, 133, 225, 133, 179, 225, 134, 183, 225, 132, 134,
-			225, 133, 165, 225, 132, 133, 225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133, 181, 225, 132, 133, 225, 133, 181, 225, 134, 183, 0, 29, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 15, 225, 132, 145,
-			225, 133, 181, 225, 134, 186, 225, 132, 131, 225, 133, 162, 225, 132, 145, 225, 133, 181, 225, 134, 174, 225, 132, 132, 225, 133, 162, 0, 29, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,
-			21, 225, 132, 144, 225, 133, 172, 225, 134, 186, 225, 132, 134, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 132, 144, 225, 133, 172, 225, 134,
-			171, 203, 144, 225, 132, 134, 225, 133, 161, 225, 132, 133, 225, 133, 174, 47, 225, 132, 144, 225, 133, 176, 225, 134, 171, 203, 144, 225, 132, 134,
-			225, 133, 161, 225, 132, 133, 225, 133, 174, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 0,
-			6, 18, 66, 225, 134, 168, 0, 225, 134, 169, 0, 225, 134, 191, 0, 225, 134, 174, 0, 225, 135, 128, 0, 225, 134, 184, 0, 225, 135, 129,
-			0, 225, 134, 186, 0, 225, 134, 187, 0, 225, 134, 189, 0, 225, 134, 190, 0, 225, 134, 170, 0, 225, 134, 185, 0, 225, 134, 172, 0, 225,
-			134, 176, 0, 225, 134, 177, 0, 225, 134, 178, 0, 225, 134, 179, 0, 225, 134, 180, 0, 225, 134, 181, 0, 7, 6, 18, 67, 225, 133, 181,
-			0, 225, 133, 163, 0, 225, 133, 164, 0, 225, 133, 167, 0, 225, 133, 168, 0, 225, 133, 173, 0, 225, 133, 178, 0, 7, 6, 18, 68, 225,
-			135, 130, 0, 225, 134, 173, 0, 225, 134, 182, 0, 7, 6, 1, 1, 0, 8, 3, 81, 0, 3, 104, 0, 1, 18, 66, 3, 110, 0, 1,
-			18, 68, 3, 111, 0, 7, 6, 1, 2, 0, 3, 104, 20, 0, 7, 6, 1, 3, 0, 3, 38, 50, 0, 7, 6, 1, 4, 0, 1, 18,
-			68, 3, 47, 107, 0, 4, 3, 72, 0, 8, 0, 1, 18, 66, 3, 112, 0, 7, 6, 1, 5, 0, 3, 112, 0, 7, 6, 1, 6, 0,
-			3, 16, 0, 2, 32, 3, 55, 0, 7, 6, 1, 7, 0, 3, 38, 65, 0, 7, 6, 1, 8, 0, 8, 3, 48, 0, 3, 71, 0, 1,
-			18, 66, 3, 113, 0, 1, 18, 68, 3, 114, 0, 7, 6, 1, 9, 0, 3, 113, 0, 7, 6, 1, 10, 0, 3, 89, 0, 1, 18, 66,
-			3, 89, 20, 0, 7, 6, 1, 11, 0, 3, 89, 20, 0, 7, 6, 1, 12, 0, 3, 37, 38, 6, 109, 68, 0, 7, 6, 1, 13, 0,
-			1, 18, 68, 3, 76, 107, 38, 0, 3, 77, 0, 8, 3, 78, 0, 1, 18, 66, 3, 78, 20, 0, 7, 6, 1, 14, 0, 3, 6, 78,
-			20, 0, 7, 6, 1, 15, 0, 3, 76, 107, 20, 0, 7, 6, 1, 16, 0, 3, 111, 0, 7, 6, 1, 17, 0, 3, 47, 107, 0, 7,
-			6, 1, 18, 0, 3, 114, 0, 7, 6, 1, 19, 0, 4, 3, 107, 0, 8, 0, 7, 6, 1, 98, 0, 3, 35, 0, 7, 6, 1, 99,
-			0, 3, 108, 0, 7, 6, 1, 100, 0, 3, 57, 35, 0, 7, 6, 1, 101, 0, 3, 57, 108, 0, 7, 6, 1, 102, 0, 3, 13, 0,
-			7, 6, 1, 103, 0, 3, 36, 0, 7, 6, 1, 104, 0, 3, 57, 13, 0, 7, 6, 1, 105, 0, 3, 57, 36, 0, 7, 6, 1, 106,
-			0, 3, 39, 0, 7, 6, 1, 107, 0, 3, 58, 35, 0, 7, 6, 1, 108, 0, 3, 58, 108, 0, 7, 6, 1, 109, 0, 3, 58, 36,
-			0, 7, 6, 1, 110, 0, 3, 57, 39, 0, 7, 6, 1, 111, 0, 3, 40, 0, 7, 6, 1, 112, 0, 3, 58, 13, 0, 7, 6, 1,
-			113, 0, 3, 58, 36, 0, 7, 6, 1, 114, 0, 3, 58, 37, 0, 7, 6, 1, 115, 0, 3, 57, 40, 0, 7, 6, 1, 116, 0, 3,
-			109, 0, 7, 6, 1, 117, 0, 1, 17, 67, 3, 37, 0, 3, 109, 57, 0, 7, 6, 1, 118, 0, 3, 37, 0, 7, 6, 225, 134, 0,
-			168, 3, 104, 0, 168, 225, 132, 146, 3, 111, 0, 170, 3, 49, 0, 170, 2, 17, 65, 3, 49, 89, 0, 170, 225, 132, 146, 3, 111, 0,
-			169, 3, 49, 0, 169, 2, 17, 65, 3, 110, 0, 169, 225, 132, 146, 3, 111, 0, 191, 3, 49, 0, 191, 2, 17, 65, 3, 111, 0, 174,
-			225, 132, 146, 3, 47, 107, 0, 174, 225, 132, 130, 3, 50, 50, 0, 174, 225, 132, 134, 3, 65, 65, 0, 174, 3, 72, 20, 0, 174, 2,
-			18, 67, 3, 77, 0, 184, 3, 48, 0, 184, 225, 132, 146, 3, 114, 0, 185, 3, 48, 0, 4, 185, 2, 17, 65, 3, 48, 89, 20, 0,
-			185, 225, 132, 146, 0, 186, 225, 132, 130, 3, 50, 50, 0, 186, 225, 132, 134, 3, 65, 65, 0, 186, 2, 17, 65, 3, 89, 0, 186, 225,
-			132, 146, 3, 89, 20, 0, 186, 3, 112, 0, 187, 225, 132, 130, 3, 50, 50, 0, 187, 225, 132, 134, 3, 65, 65, 0, 187, 2, 17, 65,
-			3, 89, 20, 0, 187, 3, 112, 0, 189, 3, 47, 0, 189, 225, 132, 130, 3, 50, 50, 0, 189, 225, 132, 134, 3, 65, 65, 0, 189, 2,
-			17, 65, 3, 78, 0, 190, 3, 47, 0, 190, 225, 132, 130, 3, 50, 50, 0, 190, 225, 132, 134, 3, 65, 65, 0, 190, 2, 17, 65, 3,
-			76, 107, 38, 0, 171, 3, 50, 0, 172, 3, 50, 0, 172, 2, 17, 65, 3, 50, 77, 0, 4, 173, 3, 50, 0, 173, 2, 17, 65, 0,
-			183, 3, 65, 0, 188, 3, 68, 0, 175, 2, 17, 65, 3, 16, 0, 175, 3, 34, 34, 0, 175, 225, 132, 133, 3, 55, 0, 176, 3, 49,
-			0, 176, 2, 17, 65, 3, 55, 81, 0, 177, 2, 17, 65, 3, 55, 65, 0, 177, 3, 65, 0, 178, 3, 48, 0, 178, 2, 17, 65, 3,
-			55, 71, 0, 179, 3, 55, 0, 179, 2, 17, 65, 3, 55, 89, 0, 180, 3, 55, 0, 180, 2, 17, 65, 3, 55, 47, 107, 0, 181, 3,
-			48, 0, 181, 2, 17, 65, 3, 55, 114, 0, 182, 2, 17, 65, 3, 16, 0, 182, 3, 55, 0, 7, 6, 225, 135, 0, 128, 2, 17, 65,
-			3, 47, 107, 0, 128, 225, 132, 130, 3, 50, 50, 0, 128, 225, 132, 134, 3, 65, 65, 0, 128, 2, 18, 67, 3, 76, 107, 38, 0, 128,
-			3, 112, 0, 129, 3, 48, 0, 129, 2, 17, 65, 3, 114, 0, 130, 2, 17, 65, 3, 0, 130, 3, 112, 0, 7, 6, 0, 4, 46, 3,
-			0, 203, 144, 3, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts35 = FileInMemory_createWithData (6487, reinterpret_cast<const char *> (&espeakdata_dicts35_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ko_dict", 
+			0, 0, 0, 0, 12, 4, 95, 49, 77, 48, 76, 6, 107, 13, 50, 0, 0, 11, 4, 95, 49, 77, 49, 65, 6, 35, 50, 0, 0, 10,
+			4, 95, 49, 77, 50, 6, 13, 104, 0, 0, 10, 4, 95, 49, 77, 51, 78, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 225, 132,
+			132, 6, 115, 35, 68, 72, 4, 37, 104, 109, 118, 0, 0, 13, 3, 225, 132, 133, 16, 37, 38, 6, 109, 34, 34, 0, 0, 12, 3, 225,
+			132, 134, 65, 37, 38, 6, 109, 65, 0, 0, 12, 3, 225, 132, 135, 48, 37, 38, 6, 109, 48, 0, 0, 12, 3, 225, 132, 128, 81, 37,
+			57, 6, 13, 104, 0, 0, 16, 3, 225, 132, 129, 6, 115, 35, 68, 104, 4, 37, 57, 13, 104, 0, 0, 22, 6, 225, 132, 137, 225, 132,
+			135, 225, 132, 137, 225, 133, 181, 225, 132, 135, 225, 133, 161, 0, 29, 12, 3, 225, 132, 130, 50, 37, 38, 6, 109, 50, 0, 0, 12, 3,
+			225, 132, 131, 72, 37, 104, 6, 109, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 225, 132, 144,
+			47, 107, 37, 38, 6, 109, 112, 0, 0, 12, 3, 225, 132, 145, 114, 37, 38, 6, 109, 48, 0, 0, 34, 15, 225, 132, 144, 225, 133, 165,
+			225, 134, 186, 225, 132, 137, 225, 133, 166, 225, 132, 144, 225, 133, 165, 225, 134, 174, 225, 132, 138, 225, 133, 166, 0, 29, 12, 3, 225, 132,
+			146, 107, 37, 38, 6, 109, 112, 0, 0, 0, 12, 3, 225, 132, 140, 78, 37, 38, 6, 109, 47, 0, 0, 16, 3, 225, 132, 141, 6, 115,
+			35, 68, 77, 4, 37, 38, 109, 47, 0, 0, 39, 15, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 133, 178, 225, 134, 190, 225, 132, 131,
+			225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 178, 225, 134, 174, 0, 29, 13, 3, 225, 132, 142, 76, 107, 6, 37, 38, 109,
+			47, 0, 0, 12, 3, 225, 132, 143, 111, 37, 38, 6, 109, 49, 0, 0, 16, 3, 225, 132, 136, 6, 115, 35, 68, 71, 4, 37, 38, 109,
+			48, 0, 0, 12, 3, 225, 132, 137, 89, 37, 38, 6, 39, 112, 0, 0, 16, 3, 225, 132, 138, 6, 115, 35, 68, 89, 4, 37, 38, 39,
+			112, 0, 0, 52, 24, 225, 132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 128, 225, 133, 181, 225, 134, 186, 225, 132, 137, 225, 133, 166, 225,
+			132, 140, 225, 133, 165, 225, 134, 171, 225, 132, 128, 225, 133, 181, 225, 134, 174, 225, 132, 138, 225, 133, 166, 0, 29, 11, 3, 225, 132, 139,
+			37, 38, 6, 109, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133, 169, 225, 134, 186, 225, 132, 131, 225, 133,
+			174, 225, 134, 168, 225, 132, 135, 225, 133, 169, 225, 134, 174, 225, 132, 132, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 46, 21, 225,
+			133, 181, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 132, 128, 225, 133, 174, 225, 134, 168, 225, 133, 181, 225, 134, 174, 225, 132, 141, 225,
+			133, 161, 225, 132, 128, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0, 40, 18, 225, 132, 144, 225, 133, 162, 225, 134, 186, 225, 132,
+			140, 225, 133, 174, 225, 134, 175, 225, 132, 144, 225, 133, 162, 225, 134, 174, 225, 132, 141, 225, 133, 174, 225, 134, 175, 0, 29, 0, 34, 15,
+			225, 132, 146, 225, 133, 162, 225, 134, 186, 225, 132, 137, 225, 133, 174, 225, 132, 146, 225, 133, 162, 225, 134, 174, 225, 132, 138, 225, 133, 174,
+			0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 34, 15, 225, 132, 146, 225, 133, 172, 225, 134, 186, 225, 132, 135, 225, 133, 162, 225, 132, 146,
+			225, 133, 176, 225, 134, 174, 225, 132, 136, 225, 133, 162, 0, 29, 0, 0, 40, 18, 225, 132, 144, 225, 133, 172, 225, 134, 186, 225, 132, 128,
+			225, 133, 161, 225, 134, 171, 225, 132, 144, 225, 133, 172, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 171, 0, 29, 40, 18, 225, 132,
+			142, 225, 133, 161, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 171, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 129, 225, 133,
+			161, 225, 134, 171, 0, 29, 40, 18, 225, 132, 128, 225, 133, 169, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 171, 225, 132, 128, 225,
+			133, 169, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 171, 0, 29, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133, 181, 225, 134,
+			186, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 135, 225, 133, 181, 225, 134, 171, 225, 132, 134, 225, 133, 174, 225, 134, 175, 0, 29,
+			0, 0, 0, 0, 46, 21, 225, 132, 130, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 134, 186, 225, 132, 135, 225, 133, 162, 225, 132, 130,
+			225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 134, 174, 225, 132, 136, 225, 133, 162, 0, 29, 0, 0, 52, 24, 225, 132, 134, 225, 133, 166,
+			225, 134, 186, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 134, 225, 133, 166, 225, 134, 171, 225, 132, 130,
+			225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 175, 0, 29, 0, 0, 46, 21, 225, 132, 146, 225, 133, 172, 225, 134, 186, 225, 132, 128,
+			225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 132, 146, 225, 133, 176, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 132, 133, 225, 133, 174,
+			0, 29, 0, 61, 27, 225, 132, 131, 225, 133, 169, 225, 132, 133, 225, 133, 181, 225, 132, 129, 225, 133, 162, 225, 134, 186, 225, 133, 167, 225,
+			134, 175, 225, 132, 131, 225, 133, 169, 225, 132, 133, 225, 133, 181, 225, 132, 129, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 167, 225,
+			134, 175, 0, 29, 0, 0, 0, 0, 46, 21, 225, 132, 135, 225, 133, 167, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 133, 225, 133,
+			181, 225, 132, 135, 225, 133, 167, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 132, 133, 225, 133, 181, 0, 29, 46, 21, 225, 132, 131, 225,
+			133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 140, 225, 133, 181, 225, 132, 131, 225, 133, 162, 225, 134, 174, 225, 132, 129, 225,
+			133, 161, 225, 132, 140, 225, 133, 181, 0, 29, 0, 0, 0, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 161,
+			225, 134, 171, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 141, 225, 133, 161, 225, 134, 171, 0, 29, 40, 18, 225, 132, 142, 225, 133,
+			161, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 134, 171, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 141, 225, 133, 161, 225, 134,
+			171, 0, 29, 0, 0, 0, 58, 27, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225,
+			132, 140, 225, 133, 181, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 174, 225, 132, 129, 225, 133, 161, 225, 132, 140, 225,
+			133, 181, 0, 29, 0, 0, 0, 0, 0, 58, 27, 225, 133, 174, 225, 132, 133, 225, 133, 165, 225, 134, 188, 225, 133, 181, 225, 134, 186, 225,
+			132, 137, 225, 133, 169, 225, 134, 168, 225, 133, 174, 225, 132, 133, 225, 133, 165, 225, 134, 188, 225, 133, 181, 225, 134, 174, 225, 132, 138, 225,
+			133, 169, 225, 134, 168, 0, 29, 0, 0, 0, 40, 18, 225, 132, 129, 225, 133, 162, 225, 134, 186, 225, 132, 134, 225, 133, 174, 225, 134, 168,
+			225, 132, 129, 225, 133, 162, 225, 134, 171, 225, 132, 134, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0, 0, 42, 18, 225, 132, 130,
+			225, 133, 162, 225, 134, 186, 225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 132, 130, 225, 133, 162, 225, 134, 171, 203, 144, 225, 132, 134, 225,
+			133, 174, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0, 52, 24, 225, 133, 163, 225, 134, 188, 225, 132, 142, 225, 133, 181, 225, 134, 186,
+			225, 132, 134, 225, 133, 174, 225, 134, 175, 225, 133, 163, 225, 134, 188, 225, 132, 142, 225, 133, 181, 225, 134, 171, 225, 132, 134, 225, 133, 174,
+			225, 134, 175, 0, 29, 54, 24, 225, 132, 134, 225, 133, 169, 225, 132, 128, 225, 133, 181, 225, 134, 186, 225, 132, 135, 225, 133, 174, 225, 134,
+			175, 225, 132, 134, 225, 133, 169, 203, 144, 225, 132, 128, 225, 133, 181, 225, 134, 174, 225, 132, 136, 225, 133, 174, 225, 134, 175, 0, 29, 0,
+			0, 0, 0, 40, 18, 225, 132, 143, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 185, 225, 132, 143, 225, 133, 181, 225,
+			134, 174, 225, 132, 129, 225, 133, 161, 225, 134, 184, 0, 29, 0, 0, 0, 46, 21, 225, 132, 142, 225, 133, 166, 225, 134, 186, 225, 132, 135,
+			225, 133, 161, 225, 132, 143, 225, 133, 177, 225, 132, 142, 225, 133, 166, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 132, 143, 225, 133, 177,
+			0, 29, 0, 0, 42, 18, 225, 132, 137, 225, 133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 188, 225, 132, 137, 225, 133, 162,
+			225, 134, 174, 203, 144, 225, 132, 129, 225, 133, 161, 225, 134, 188, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 142, 225, 133, 169, 225, 134, 186, 225, 132, 128, 225, 133,
+			174, 225, 134, 168, 225, 132, 142, 225, 133, 169, 225, 134, 174, 225, 132, 129, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0, 0, 0,
+			46, 21, 225, 132, 140, 225, 133, 162, 225, 134, 186, 225, 132, 131, 225, 133, 165, 225, 132, 134, 225, 133, 181, 225, 132, 140, 225, 133, 162, 225,
+			134, 174, 225, 132, 132, 225, 133, 165, 225, 132, 134, 225, 133, 181, 0, 29, 0, 0, 0, 58, 27, 225, 132, 137, 225, 133, 165, 225, 134, 171,
+			225, 132, 140, 225, 133, 181, 225, 134, 186, 225, 132, 128, 225, 133, 174, 225, 134, 168, 225, 132, 137, 225, 133, 165, 225, 134, 171, 225, 132, 140,
+			225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133, 174, 225, 134, 168, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 17, 3, 95, 51, 88, 89, 6, 35, 65, 11, 15, 89, 6, 37, 48, 11, 0, 0, 11, 3, 95, 48, 67, 48, 6, 108, 104,
+			11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 18, 3, 95, 55, 88, 76, 6, 107, 6, 37, 51, 11, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 88, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 50,
+			88, 6, 37, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95,
+			52, 88, 89, 6, 35, 11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 53, 88, 6, 39, 11, 15,
+			89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 54, 88, 57, 6, 40, 104, 11, 15, 89, 6, 37, 48, 11,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56, 88, 114, 6, 35, 51, 11, 15, 89, 6,
+			37, 48, 11, 0, 0, 0, 40, 18, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225, 132, 130, 225, 133, 181, 225, 133, 161, 225,
+			132, 133, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 0, 29, 0, 0, 0, 0, 0, 0, 16, 3, 95, 57, 88, 81, 6, 40,
+			11, 15, 89, 6, 37, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 36, 15, 225, 132, 130, 225, 133, 162, 225, 134, 186, 225, 132, 128, 225,
+			133, 161, 225, 132, 130, 225, 133, 162, 225, 134, 174, 203, 144, 225, 132, 129, 225, 133, 161, 0, 29, 0, 0, 0, 0, 0, 0, 46, 21, 225,
+			132, 135, 225, 133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 132, 135, 225, 133, 161, 225, 132, 131, 225,
+			133, 161, 225, 134, 174, 225, 132, 129, 225, 133, 161, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 81, 57, 6, 13, 68, 0, 0, 0, 10, 4, 95, 48,
+			77, 50, 6, 13, 104, 0, 0, 10, 4, 95, 48, 77, 51, 78, 6, 39, 0, 0, 12, 4, 95, 48, 77, 48, 76, 6, 107, 13, 50, 0,
+			0, 11, 4, 95, 48, 77, 49, 65, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 34, 15, 225, 132, 145, 225, 133, 181, 225, 134, 186,
+			225, 132, 128, 225, 133, 181, 225, 132, 145, 225, 133, 181, 225, 134, 174, 225, 132, 129, 225, 133, 181, 0, 29, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 15, 225, 132, 131, 225, 133, 162, 225, 134, 186, 225, 133, 181, 225, 135, 129, 225, 132, 131, 225,
+			133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 184, 0, 29, 37, 15, 225, 132, 129, 225, 133, 162, 225, 134, 186, 225, 133, 181,
+			225, 135, 129, 225, 132, 129, 225, 133, 162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 184, 0, 29, 0, 34, 15, 225, 132, 146, 225,
+			133, 172, 225, 134, 186, 225, 132, 137, 225, 133, 174, 225, 132, 146, 225, 133, 172, 225, 134, 174, 225, 132, 138, 225, 133, 174, 0, 29, 0, 34,
+			15, 225, 133, 181, 225, 134, 186, 225, 132, 134, 225, 133, 169, 225, 134, 183, 225, 133, 181, 225, 134, 171, 225, 132, 134, 225, 133, 169, 225, 134,
+			183, 0, 29, 0, 0, 0, 0, 49, 21, 225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 186, 225, 133, 181, 225, 135, 129,
+			225, 132, 130, 225, 133, 161, 225, 132, 134, 225, 133, 174, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 184, 0, 29, 0, 0, 0, 0,
+			31, 12, 225, 133, 173, 225, 134, 186, 225, 133, 181, 225, 134, 186, 225, 133, 173, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 174, 0,
+			29, 0, 0, 0, 0, 0, 46, 21, 225, 132, 140, 225, 133, 161, 225, 132, 133, 225, 133, 181, 225, 134, 186, 225, 132, 137, 225, 133, 166, 225,
+			132, 140, 225, 133, 161, 225, 132, 133, 225, 133, 181, 225, 134, 174, 225, 132, 138, 225, 133, 166, 0, 29, 0, 0, 0, 0, 49, 21, 225, 132,
+			135, 225, 133, 166, 225, 132, 128, 225, 133, 162, 225, 134, 186, 225, 133, 181, 225, 134, 186, 225, 132, 135, 225, 133, 166, 225, 132, 128, 225, 133,
+			162, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 174, 0, 29, 46, 21, 225, 132, 128, 225, 133, 169, 225, 132, 133, 225, 133, 162, 225,
+			134, 186, 225, 132, 140, 225, 133, 162, 225, 132, 128, 225, 133, 169, 225, 132, 133, 225, 133, 162, 225, 134, 174, 225, 132, 141, 225, 133, 162, 0,
+			29, 0, 0, 0, 0, 52, 24, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186, 225, 132, 134, 225, 133, 161, 225, 133, 179, 225, 134,
+			175, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 171, 225, 132, 134, 225, 133, 161, 225, 133, 179, 225, 134, 175, 0, 29, 0, 0, 0,
+			39, 15, 225, 132, 146, 225, 133, 174, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 146, 225, 133, 174, 225, 134, 171, 203, 144, 225, 132,
+			130, 225, 133, 181, 225, 134, 175, 0, 29, 39, 15, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 131, 225,
+			133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 0, 0, 0, 45, 18, 225, 133, 168, 225, 132, 137, 225,
+			133, 161, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 133, 168, 203, 144, 225, 132, 137, 225, 133, 161, 225, 134, 171, 225, 132, 130, 225, 133,
+			181, 225, 134, 175, 0, 29, 65, 18, 225, 132, 128, 225, 133, 161, 225, 133, 172, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 128, 225,
+			133, 161, 225, 133, 172, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 47, 225, 132, 128, 225, 133, 161, 225, 133, 176, 225, 134, 171,
+			225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 0, 40, 18, 225, 132, 146, 225, 133, 162, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225,
+			135, 128, 225, 132, 146, 225, 133, 162, 225, 134, 174, 225, 132, 136, 225, 133, 167, 225, 134, 174, 0, 29, 0, 0, 49, 21, 225, 132, 137, 225,
+			133, 161, 225, 132, 137, 225, 133, 161, 225, 134, 186, 225, 133, 181, 225, 134, 175, 225, 132, 137, 225, 133, 161, 225, 132, 137, 225, 133, 161, 225,
+			134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175, 0, 29, 49, 21, 225, 132, 131, 225, 133, 174, 225, 132, 133, 225, 133, 166, 225, 134, 186,
+			225, 133, 181, 225, 134, 175, 225, 132, 131, 225, 133, 174, 225, 132, 133, 225, 133, 166, 225, 134, 171, 225, 132, 130, 225, 133, 181, 225, 134, 175,
+			0, 29, 0, 0, 0, 0, 0, 0, 0, 52, 24, 225, 132, 146, 225, 133, 167, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 132, 130, 225,
+			133, 179, 225, 134, 175, 225, 132, 146, 225, 133, 167, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 132, 130, 225, 133, 179, 225, 134, 175, 0,
+			29, 0, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133, 162, 225, 134, 186, 225, 132, 128, 225, 133, 181, 225, 134, 175, 225, 132, 135, 225,
+			133, 162, 225, 134, 174, 225, 132, 129, 225, 133, 181, 225, 134, 175, 0, 29, 40, 18, 225, 132, 134, 225, 133, 162, 225, 134, 186, 225, 132, 131,
+			225, 133, 169, 225, 134, 175, 225, 132, 134, 225, 133, 162, 225, 134, 174, 225, 132, 132, 225, 133, 169, 225, 134, 175, 0, 29, 0, 0, 0, 34,
+			15, 225, 132, 137, 225, 133, 174, 225, 134, 186, 225, 132, 140, 225, 133, 161, 225, 132, 137, 225, 133, 174, 225, 134, 174, 225, 132, 141, 225, 133,
+			161, 0, 29, 40, 18, 225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 169, 225, 134, 188, 225, 132, 142, 225, 133, 161, 225,
+			134, 174, 225, 132, 141, 225, 133, 169, 225, 134, 188, 0, 29, 0, 0, 0, 46, 21, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 186,
+			225, 132, 135, 225, 133, 161, 225, 134, 188, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 188,
+			0, 29, 52, 24, 225, 132, 140, 225, 133, 169, 225, 132, 128, 225, 133, 162, 225, 134, 186, 225, 132, 137, 225, 133, 161, 225, 134, 175, 225, 132,
+			140, 225, 133, 169, 225, 132, 128, 225, 133, 162, 225, 134, 174, 225, 132, 138, 225, 133, 161, 225, 134, 175, 0, 29, 0, 40, 18, 225, 132, 143,
+			225, 133, 169, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 134, 188, 225, 132, 143, 225, 133, 169, 225, 134, 174, 225, 132, 136, 225, 133, 167,
+			225, 134, 188, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 89, 6, 35, 65, 11, 0, 0, 8, 2, 95, 50, 6,
+			37, 11, 0, 0, 9, 2, 95, 49, 6, 37, 51, 11, 0, 0, 10, 2, 95, 48, 57, 6, 13, 68, 11, 0, 0, 12, 2, 95, 55, 76,
+			6, 107, 6, 37, 51, 11, 0, 0, 10, 2, 95, 54, 57, 6, 40, 104, 11, 0, 0, 8, 2, 95, 53, 6, 39, 11, 0, 0, 40, 18,
+			225, 132, 142, 225, 133, 161, 225, 134, 186, 225, 132, 140, 225, 133, 181, 225, 134, 184, 225, 132, 142, 225, 133, 161, 225, 134, 174, 225, 132, 141,
+			225, 133, 181, 225, 134, 184, 0, 29, 9, 2, 95, 52, 89, 6, 35, 11, 0, 0, 0, 0, 46, 21, 225, 133, 161, 225, 132, 133, 225, 133,
+			162, 225, 134, 186, 225, 132, 140, 225, 133, 181, 225, 134, 184, 225, 133, 161, 225, 132, 133, 225, 133, 162, 225, 134, 174, 225, 132, 141, 225, 133,
+			181, 225, 134, 184, 0, 29, 9, 2, 95, 57, 81, 6, 40, 11, 0, 0, 10, 2, 95, 56, 114, 6, 35, 51, 11, 0, 0, 0, 52, 24,
+			225, 132, 137, 225, 133, 172, 225, 134, 186, 225, 132, 140, 225, 133, 169, 225, 132, 128, 225, 133, 161, 225, 134, 168, 225, 132, 137, 225, 133, 176,
+			225, 134, 174, 225, 132, 141, 225, 133, 169, 225, 132, 128, 225, 133, 161, 225, 134, 168, 0, 29, 0, 0, 0, 63, 18, 225, 132, 128, 225, 133,
+			168, 225, 134, 186, 225, 132, 130, 225, 133, 161, 225, 134, 175, 225, 132, 128, 225, 133, 168, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 161,
+			225, 134, 175, 47, 225, 132, 128, 225, 133, 166, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 161, 225, 134, 175, 0, 29, 58, 27, 225, 132,
+			140, 225, 133, 165, 225, 134, 171, 225, 132, 137, 225, 133, 166, 225, 134, 186, 225, 132, 140, 225, 133, 181, 225, 134, 184, 225, 132, 140, 225, 133,
+			165, 225, 134, 171, 225, 132, 137, 225, 133, 166, 225, 134, 174, 225, 132, 141, 225, 133, 181, 225, 134, 184, 0, 29, 0, 0, 0, 0, 0, 0,
+			54, 24, 225, 132, 140, 225, 133, 166, 225, 132, 137, 225, 133, 161, 225, 134, 186, 225, 132, 130, 225, 133, 161, 225, 134, 175, 225, 132, 140, 225,
+			133, 166, 203, 144, 225, 132, 137, 225, 133, 161, 225, 134, 174, 225, 132, 130, 225, 133, 161, 225, 134, 175, 0, 29, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 40, 18, 225, 132, 137, 225, 133, 166, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 188, 225, 132, 137,
+			225, 133, 166, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 188, 0, 29, 0, 0, 0, 0, 40, 18, 225, 132, 135, 225, 133, 162, 225,
+			134, 186, 225, 132, 135, 225, 133, 167, 225, 134, 188, 225, 132, 135, 225, 133, 162, 225, 134, 174, 225, 132, 136, 225, 133, 167, 225, 134, 188, 0,
+			29, 40, 18, 225, 132, 128, 225, 133, 177, 225, 134, 186, 225, 132, 135, 225, 133, 167, 225, 134, 188, 225, 132, 128, 225, 133, 177, 225, 134, 174,
+			225, 132, 136, 225, 133, 167, 225, 134, 188, 0, 29, 40, 18, 225, 132, 128, 225, 133, 177, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134,
+			184, 225, 132, 128, 225, 133, 177, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 184, 0, 29, 0, 0, 52, 24, 225, 132, 134, 225, 133,
+			165, 225, 132, 133, 225, 133, 181, 225, 134, 186, 225, 132, 135, 225, 133, 161, 225, 134, 188, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133,
+			181, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 188, 0, 29, 52, 24, 225, 132, 144, 225, 133, 165, 225, 134, 186, 225, 132, 134, 225,
+			133, 161, 225, 132, 131, 225, 133, 161, 225, 134, 188, 225, 132, 144, 225, 133, 165, 225, 134, 171, 225, 132, 134, 225, 133, 161, 225, 132, 131, 225,
+			133, 161, 225, 134, 188, 0, 29, 0, 0, 57, 24, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 133, 181, 225, 134, 184, 225, 132, 134, 225,
+			133, 161, 225, 134, 186, 225, 132, 131, 225, 133, 177, 225, 134, 171, 203, 144, 225, 132, 130, 225, 133, 181, 225, 134, 183, 225, 132, 134, 225, 133,
+			161, 225, 134, 174, 0, 29, 0, 60, 27, 225, 132, 131, 225, 133, 177, 225, 134, 186, 225, 132, 128, 225, 133, 161, 225, 134, 175, 225, 132, 134,
+			225, 133, 161, 225, 134, 188, 225, 132, 131, 225, 133, 177, 225, 134, 174, 203, 144, 225, 132, 129, 225, 133, 161, 225, 134, 175, 225, 132, 134, 225,
+			133, 161, 225, 134, 188, 0, 29, 0, 54, 24, 225, 132, 137, 225, 133, 161, 225, 132, 140, 225, 133, 161, 225, 134, 186, 225, 132, 135, 225, 133,
+			161, 225, 134, 184, 225, 132, 137, 225, 133, 161, 203, 144, 225, 132, 140, 225, 133, 161, 225, 134, 174, 225, 132, 136, 225, 133, 161, 225, 134, 184,
+			0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 30, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 225,
+			134, 186, 225, 132, 128, 225, 133, 181, 225, 132, 133, 225, 133, 179, 225, 134, 183, 225, 132, 134, 225, 133, 165, 225, 132, 133, 225, 133, 181, 225,
+			134, 174, 225, 132, 129, 225, 133, 181, 225, 132, 133, 225, 133, 181, 225, 134, 183, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 15, 225, 132, 145, 225, 133, 181, 225, 134, 186, 225, 132, 131, 225,
+			133, 162, 225, 132, 145, 225, 133, 181, 225, 134, 174, 225, 132, 132, 225, 133, 162, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 21, 225, 132, 144, 225, 133, 172, 225, 134, 186,
+			225, 132, 134, 225, 133, 161, 225, 132, 133, 225, 133, 174, 225, 132, 144, 225, 133, 172, 225, 134, 171, 203, 144, 225, 132, 134, 225, 133, 161, 225,
+			132, 133, 225, 133, 174, 47, 225, 132, 144, 225, 133, 176, 225, 134, 171, 203, 144, 225, 132, 134, 225, 133, 161, 225, 132, 133, 225, 133, 174, 0,
+			29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 6, 18, 66, 225, 134, 168, 0, 225, 134, 169, 0, 225,
+			134, 191, 0, 225, 134, 174, 0, 225, 135, 128, 0, 225, 134, 184, 0, 225, 135, 129, 0, 225, 134, 186, 0, 225, 134, 187, 0, 225, 134, 189,
+			0, 225, 134, 190, 0, 225, 134, 170, 0, 225, 134, 185, 0, 225, 134, 172, 0, 225, 134, 176, 0, 225, 134, 177, 0, 225, 134, 178, 0, 225,
+			134, 179, 0, 225, 134, 180, 0, 225, 134, 181, 0, 7, 6, 18, 67, 225, 133, 181, 0, 225, 133, 163, 0, 225, 133, 164, 0, 225, 133, 167,
+			0, 225, 133, 168, 0, 225, 133, 173, 0, 225, 133, 178, 0, 7, 6, 18, 68, 225, 135, 130, 0, 225, 134, 173, 0, 225, 134, 182, 0, 7,
+			6, 1, 1, 0, 8, 3, 81, 0, 3, 104, 0, 1, 18, 66, 3, 110, 0, 1, 18, 68, 3, 111, 0, 7, 6, 1, 2, 0, 3, 116,
+			0, 7, 6, 1, 3, 0, 3, 38, 50, 0, 7, 6, 1, 4, 0, 1, 18, 68, 3, 47, 107, 0, 4, 3, 72, 0, 8, 0, 1, 18,
+			66, 3, 112, 0, 7, 6, 1, 5, 0, 3, 112, 0, 7, 6, 1, 6, 0, 3, 16, 0, 2, 32, 3, 55, 0, 7, 6, 1, 7, 0,
+			3, 38, 65, 0, 7, 6, 1, 8, 0, 8, 3, 48, 0, 3, 71, 0, 1, 18, 66, 3, 113, 0, 1, 18, 68, 3, 114, 0, 7, 6,
+			1, 9, 0, 3, 113, 0, 7, 6, 1, 10, 0, 3, 89, 0, 1, 18, 66, 3, 115, 0, 7, 6, 1, 11, 0, 3, 115, 0, 7, 6,
+			1, 12, 0, 3, 37, 38, 6, 109, 68, 0, 7, 6, 1, 13, 0, 1, 18, 68, 3, 76, 107, 38, 0, 3, 77, 0, 8, 3, 78, 0,
+			1, 18, 66, 3, 117, 0, 7, 6, 1, 14, 0, 3, 6, 117, 0, 7, 6, 1, 15, 0, 3, 76, 107, 0, 7, 6, 1, 16, 0, 3,
+			111, 0, 7, 6, 1, 17, 0, 3, 47, 107, 0, 7, 6, 1, 18, 0, 3, 114, 0, 7, 6, 1, 19, 0, 4, 3, 107, 0, 8, 0,
+			7, 6, 1, 98, 0, 3, 35, 0, 7, 6, 1, 99, 0, 3, 108, 0, 7, 6, 1, 100, 0, 3, 57, 35, 0, 7, 6, 1, 101, 0,
+			3, 57, 108, 0, 7, 6, 1, 102, 0, 3, 13, 0, 7, 6, 1, 103, 0, 3, 36, 0, 7, 6, 1, 104, 0, 3, 57, 13, 0, 7,
+			6, 1, 105, 0, 3, 57, 36, 0, 7, 6, 1, 106, 0, 3, 39, 0, 7, 6, 1, 107, 0, 3, 58, 35, 0, 7, 6, 1, 108, 0,
+			3, 58, 108, 0, 7, 6, 1, 109, 0, 3, 58, 36, 0, 7, 6, 1, 110, 0, 3, 57, 39, 0, 7, 6, 1, 111, 0, 3, 40, 0,
+			7, 6, 1, 112, 0, 3, 58, 13, 0, 7, 6, 1, 113, 0, 3, 58, 36, 0, 7, 6, 1, 114, 0, 3, 58, 37, 0, 7, 6, 1,
+			115, 0, 3, 57, 40, 0, 7, 6, 1, 116, 0, 3, 109, 0, 7, 6, 1, 117, 0, 1, 17, 67, 3, 37, 0, 3, 109, 57, 0, 7,
+			6, 1, 118, 0, 3, 37, 0, 7, 6, 225, 134, 0, 168, 3, 104, 0, 168, 225, 132, 146, 3, 111, 0, 170, 3, 49, 0, 170, 2, 17,
+			65, 3, 49, 89, 0, 170, 225, 132, 146, 3, 111, 0, 169, 3, 49, 0, 169, 2, 17, 65, 3, 110, 0, 169, 225, 132, 146, 3, 111, 0,
+			191, 3, 49, 0, 191, 2, 17, 65, 3, 111, 0, 174, 225, 132, 146, 3, 47, 107, 0, 174, 225, 132, 130, 3, 50, 50, 0, 174, 225, 132,
+			134, 3, 65, 65, 0, 174, 2, 18, 67, 3, 77, 0, 174, 3, 118, 0, 184, 3, 48, 0, 184, 225, 132, 146, 3, 114, 0, 185, 3, 48,
+			0, 4, 185, 2, 17, 65, 3, 48, 115, 0, 185, 225, 132, 146, 0, 186, 225, 132, 130, 3, 50, 50, 0, 186, 225, 132, 134, 3, 65, 65,
+			0, 186, 2, 17, 65, 3, 89, 0, 186, 3, 112, 0, 186, 225, 132, 146, 3, 115, 0, 187, 225, 132, 130, 3, 50, 50, 0, 187, 225, 132,
+			134, 3, 65, 65, 0, 187, 3, 112, 0, 187, 2, 17, 65, 3, 115, 0, 189, 3, 47, 0, 189, 225, 132, 130, 3, 50, 50, 0, 189, 225,
+			132, 134, 3, 65, 65, 0, 189, 2, 17, 65, 3, 78, 0, 190, 3, 47, 0, 190, 225, 132, 130, 3, 50, 50, 0, 190, 225, 132, 134, 3,
+			65, 65, 0, 190, 2, 17, 65, 3, 78, 107, 0, 171, 3, 50, 0, 172, 3, 50, 0, 172, 2, 17, 65, 3, 50, 77, 0, 4, 173, 3,
+			50, 0, 173, 2, 17, 65, 0, 183, 3, 65, 0, 188, 3, 68, 0, 175, 2, 17, 65, 3, 16, 0, 175, 225, 132, 133, 3, 55, 0, 175,
+			3, 64, 0, 176, 3, 49, 0, 176, 2, 17, 65, 3, 55, 81, 0, 177, 2, 17, 65, 3, 55, 65, 0, 177, 3, 65, 0, 178, 3, 48,
+			0, 178, 2, 17, 65, 3, 55, 71, 0, 179, 3, 55, 0, 179, 2, 17, 65, 3, 55, 89, 0, 180, 3, 55, 0, 180, 2, 17, 65, 3,
+			55, 47, 107, 0, 181, 3, 48, 0, 181, 2, 17, 65, 3, 55, 114, 0, 182, 2, 17, 65, 3, 16, 0, 182, 3, 55, 0, 7, 6, 225,
+			135, 0, 128, 2, 17, 65, 3, 47, 107, 0, 128, 225, 132, 130, 3, 50, 50, 0, 128, 225, 132, 134, 3, 65, 65, 0, 128, 2, 18, 67,
+			3, 78, 107, 0, 128, 3, 112, 0, 129, 3, 48, 0, 129, 2, 17, 65, 3, 114, 0, 130, 2, 17, 65, 3, 0, 130, 3, 112, 0, 7,
+			6, 0, 4, 46, 3, 0, 203, 144, 3, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts37 = FileInMemory_createWithData (6462, reinterpret_cast<const char *> (&espeakdata_dicts37_data), 
+			U"espeak-1.48.04-source/espeak-data/ko_dict", 
 			U"ko");
-		Collection_addItem (me.peek(), espeakdata_dicts35.transfer());
+		my addItem_move (espeakdata_dicts37.move());
 
-		static unsigned char espeakdata_dicts36_data[2277] = {
-			0, 4, 0, 0, 124, 7, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0,
-			0, 6, 65, 12, 75, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 6, 195, 92, 19, 128, 76, 0, 0, 0, 0, 0,
-			0, 6, 65, 24, 83, 36, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 36, 0, 0, 0, 0,
-			0, 0, 8, 1, 37, 89, 109, 72, 36, 0, 0, 0, 0, 6, 65, 40, 90, 36, 0, 0, 0, 9, 1, 42, 89, 47, 36, 51, 49, 0,
-			0, 0, 6, 65, 44, 49, 36, 0, 0, 0, 0, 0, 6, 65, 48, 55, 36, 0, 0, 0, 0, 0, 6, 65, 52, 65, 36, 0, 0, 0,
-			0, 0, 6, 65, 56, 50, 36, 0, 10, 5, 95, 48, 1, 14, 4, 10, 40, 0, 0, 0, 6, 195, 44, 148, 128, 72, 0, 0, 0, 0,
-			0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 104, 36, 0, 0, 0, 0, 0, 6, 65, 72, 51, 36, 0, 0, 0,
-			0, 0, 6, 65, 76, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84,
-			36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 36, 0, 0, 0, 0, 0, 6, 65, 96, 101, 36, 0, 13, 4, 95, 49, 77, 49, 107, 109,
-			88, 6, 35, 34, 0, 0, 14, 4, 95, 49, 77, 50, 65, 124, 55, 6, 57, 39, 50, 0, 0, 0, 0, 6, 65, 100, 57, 36, 0, 0,
-			0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 23, 195, 174, 76, 0, 0, 0,
-			0, 6, 131, 23, 195, 170, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195,
-			4, 226, 137, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 72, 5, 194, 8, 144, 72, 0, 0, 0, 0, 0, 0, 11,
-			4, 95, 4, 16, 20, 10, 101, 35, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 25, 195, 170, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			194, 4, 224, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 16, 144, 72, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 21, 160, 76, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8,
-			84, 192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 14, 5, 2, 195, 187, 65, 0, 0, 0, 18,
-			67, 33, 113, 0, 107, 109, 34, 15, 58, 109, 49, 37, 15, 72, 124, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95,
-			51, 88, 89, 6, 37, 0, 0, 10, 3, 95, 48, 67, 89, 6, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 49, 67,
-			89, 6, 109, 72, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 57, 50, 39, 88, 72, 6, 109, 107, 0, 0, 13, 3, 95, 49, 56,
-			107, 124, 90, 72, 6, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 49, 57, 35, 88, 72, 6, 125, 0, 0, 10, 3,
-			95, 49, 48, 72, 6, 109, 107, 0, 0, 12, 3, 95, 49, 51, 89, 36, 88, 72, 6, 125, 0, 0, 13, 3, 95, 49, 50, 72, 35, 50,
-			88, 72, 6, 125, 0, 0, 13, 3, 95, 49, 53, 48, 35, 50, 88, 72, 6, 125, 0, 0, 12, 3, 95, 49, 52, 76, 35, 51, 72, 6,
-			125, 0, 0, 13, 3, 95, 49, 55, 107, 124, 84, 72, 6, 109, 107, 0, 0, 13, 3, 95, 49, 54, 91, 35, 50, 88, 72, 6, 125, 0,
-			0, 0, 12, 3, 95, 55, 88, 107, 109, 83, 47, 6, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 131, 12, 195, 170, 76, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 88, 71, 6, 124, 89, 47, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 63, 47, 37, 48, 35, 0, 0, 0, 0, 10, 3, 95, 52, 88, 76, 6, 124, 55,
-			0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 40, 144, 72, 0, 12, 3, 95, 53, 88, 48, 36, 50, 75, 6, 37, 0, 0, 0, 6, 195,
-			28, 245, 0, 72, 0, 0, 0, 0, 0, 0, 11, 3, 95, 54, 88, 91, 6, 36, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 56, 88, 107, 36, 91, 47, 6, 36, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80,
-			76, 0, 10, 3, 95, 57, 88, 50, 6, 39, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 100, 19, 128, 72, 0,
-			0, 0, 14, 4, 95, 48, 77, 50, 65, 124, 55, 6, 57, 39, 50, 0, 0, 0, 0, 13, 4, 95, 48, 77, 49, 107, 109, 88, 6, 35,
-			34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 195, 170,
-			14, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 95, 195, 187, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 3, 95, 195, 174, 37, 0, 0, 0, 0, 0, 7, 3, 95, 195, 170, 36, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 72, 80, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 2, 195, 167, 76, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 197, 159, 91, 36, 0, 0, 0,
-			0, 5, 130, 195, 170, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 80, 76, 0, 0, 0, 6, 130,
-			195, 187, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0, 0, 0, 6, 2, 95, 5, 109, 0, 0, 0,
-			0, 6, 2, 95, 9, 124, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 21, 111,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 33, 71, 35, 50, 109, 91, 6, 35, 50, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 4, 95, 3, 1, 16, 65, 36, 88, 37, 50, 0, 0, 0, 0, 0, 8, 2, 95, 46, 101, 35, 55, 0, 0, 11, 2,
-			95, 45, 71, 109, 50, 72, 124, 49, 0, 0, 11, 2, 95, 44, 71, 36, 107, 50, 39, 49, 0, 0, 8, 2, 95, 51, 89, 6, 36, 0,
-			0, 8, 2, 95, 50, 72, 6, 111, 0, 0, 9, 2, 95, 49, 57, 6, 109, 49, 0, 0, 10, 2, 95, 48, 89, 6, 124, 83, 34, 0,
-			0, 10, 2, 95, 55, 107, 6, 109, 83, 47, 0, 0, 9, 2, 95, 54, 91, 6, 109, 91, 0, 0, 10, 2, 95, 53, 48, 6, 36, 50,
-			75, 0, 0, 9, 2, 95, 52, 75, 6, 35, 34, 0, 0, 14, 2, 95, 59, 101, 35, 55, 71, 36, 107, 50, 39, 49, 0, 0, 11, 2,
-			95, 58, 75, 39, 47, 101, 35, 55, 0, 0, 9, 2, 95, 57, 50, 6, 109, 107, 0, 0, 5, 194, 100, 16, 72, 5, 194, 92, 80, 76,
-			11, 2, 95, 56, 107, 6, 109, 57, 91, 47, 0, 0, 15, 2, 95, 63, 48, 124, 51, 89, 50, 37, 91, 6, 35, 50, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 25, 195, 170, 14, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 195,
-			174, 0, 105, 121, 0, 195, 170, 0, 101, 119, 0, 101, 121, 0, 7, 6, 195, 167, 0, 3, 76, 0, 7, 6, 195, 170, 0, 1, 21, 2,
-			32, 14, 128, 128, 129, 3, 2, 36, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 36, 50, 0, 3, 36, 0, 7, 6, 195, 174,
-			0, 3, 37, 0, 7, 6, 195, 187, 0, 3, 40, 0, 7, 6, 197, 159, 0, 3, 91, 0, 7, 6, 97, 0, 1, 21, 2, 32, 14, 128,
-			128, 129, 3, 2, 35, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 35, 50, 0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0,
-			7, 6, 99, 0, 3, 75, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 109, 0, 119, 3, 115, 0, 121, 3, 118, 0, 2,
-			32, 3, 125, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 2, 18, 66, 3, 79, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107,
-			0, 7, 6, 105, 0, 3, 124, 0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0, 3, 49, 0, 2, 18, 66, 3, 80, 0, 7, 6,
-			108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0,
-			3, 48, 0, 7, 6, 113, 0, 3, 104, 0, 7, 6, 114, 0, 1, 17, 65, 2, 17, 65, 3, 16, 0, 4, 3, 51, 0, 114, 0, 7,
-			6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 111, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119,
-			0, 3, 58, 0, 7, 6, 120, 0, 3, 101, 0, 119, 101, 3, 101, 58, 126, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3,
-			88, 0, 7, 6, 0, 36, 3, 72, 111, 55, 35, 34, 0, 195, 188, 3, 112, 0, 195, 182, 3, 124, 12, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts36 = FileInMemory_createWithData (2276, reinterpret_cast<const char *> (&espeakdata_dicts36_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ku_dict", 
+		static unsigned char espeakdata_dicts38_data[2269] = {
+			0, 4, 0, 0, 116, 7, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0,
+			0, 6, 65, 12, 75, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 6, 195, 92, 19, 128, 76, 0, 11, 4, 95, 100,
+			112, 116, 10, 101, 35, 55, 0, 0, 0, 0, 0, 0, 6, 65, 24, 83, 36, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0,
+			0, 0, 6, 65, 32, 107, 36, 0, 0, 0, 0, 0, 0, 8, 1, 37, 89, 109, 72, 36, 0, 0, 0, 0, 6, 65, 40, 90, 36, 0,
+			0, 0, 9, 1, 42, 89, 47, 36, 51, 49, 0, 0, 0, 6, 65, 44, 49, 36, 0, 0, 0, 0, 0, 6, 65, 48, 55, 36, 0, 0,
+			0, 0, 0, 6, 65, 52, 65, 36, 0, 0, 0, 0, 0, 6, 65, 56, 50, 36, 0, 0, 0, 6, 195, 44, 148, 128, 72, 0, 0, 0,
+			0, 0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 104, 36, 0, 0, 0, 0, 0, 6, 65, 72, 51, 36, 0, 0,
+			0, 0, 0, 6, 65, 76, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88,
+			84, 36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 36, 0, 0, 0, 0, 0, 6, 65, 96, 101, 36, 0, 13, 4, 95, 49, 77, 49, 107,
+			109, 88, 6, 35, 34, 0, 0, 14, 4, 95, 49, 77, 50, 65, 124, 55, 6, 57, 39, 50, 0, 0, 0, 0, 6, 65, 100, 57, 36, 0,
+			0, 0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 128, 76, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 5, 194, 16, 80, 72, 5, 194, 8, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 194, 4, 224, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 140, 76, 0, 0, 6, 194, 16, 144,
+			72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
+			21, 160, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 102, 51, 128, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 84, 192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 18, 67, 33, 113, 0, 107, 109, 34, 15, 58, 109, 49, 37, 15, 72, 124, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			9, 3, 95, 51, 88, 89, 6, 37, 0, 0, 10, 3, 95, 48, 67, 89, 6, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3,
+			95, 49, 67, 89, 6, 109, 72, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 57, 50, 39, 88, 72, 6, 109, 107, 0, 0, 13, 3,
+			95, 49, 56, 107, 124, 90, 72, 6, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 49, 57, 35, 88, 72, 6, 125, 0,
+			0, 10, 3, 95, 49, 48, 72, 6, 109, 107, 0, 0, 12, 3, 95, 49, 51, 89, 36, 88, 72, 6, 125, 0, 0, 13, 3, 95, 49, 50,
+			72, 35, 50, 88, 72, 6, 125, 0, 0, 13, 3, 95, 49, 53, 48, 35, 50, 88, 72, 6, 125, 0, 0, 12, 3, 95, 49, 52, 76, 35,
+			51, 72, 6, 125, 0, 0, 13, 3, 95, 49, 55, 107, 124, 84, 72, 6, 109, 107, 0, 0, 13, 3, 95, 49, 54, 91, 35, 50, 88, 72,
+			6, 125, 0, 0, 0, 12, 3, 95, 55, 88, 107, 109, 83, 47, 6, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 7, 195, 4, 226, 137, 72, 8, 0, 0, 0, 0, 11, 3, 95, 50, 88, 71, 6, 124, 89, 47, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 63, 47, 37, 48, 35, 0, 0, 0, 0, 10, 3, 95, 52, 88,
+			76, 6, 124, 55, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 40, 144, 72, 0, 12, 3, 95, 53, 88, 48, 36, 50, 75, 6, 37, 0,
+			0, 0, 6, 195, 28, 245, 0, 72, 0, 0, 0, 0, 0, 0, 11, 3, 95, 54, 88, 91, 6, 36, 89, 47, 0, 0, 0, 5, 194, 94,
+			48, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 56, 88, 107, 36, 91, 47, 6, 36, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 52, 80, 76, 0, 10, 3, 95, 57, 88, 50, 6, 39, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 100, 19, 128, 72, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 124, 55, 6, 57, 39, 50, 0, 0, 0, 0, 13, 4,
+			95, 48, 77, 49, 107, 109, 88, 6, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 110, 101, 98, 195, 187, 65, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 99, 97, 112, 65, 36, 88, 37, 50, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3, 95, 195, 187, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 3,
+			95, 195, 174, 37, 0, 0, 0, 0, 0, 7, 3, 95, 195, 170, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 72, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 5, 194, 140, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 50, 48, 76, 0, 0, 0, 0, 7, 2, 197, 159, 91, 36, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 80, 76, 0, 0, 0, 6, 130, 195, 187, 76, 8, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 13, 2, 95, 33, 71, 35, 50, 109, 91, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2,
+			95, 46, 101, 35, 55, 0, 0, 11, 2, 95, 45, 71, 109, 50, 72, 124, 49, 0, 0, 11, 2, 95, 44, 71, 36, 107, 50, 39, 49, 0,
+			0, 8, 2, 95, 51, 89, 6, 36, 0, 0, 8, 2, 95, 50, 72, 6, 111, 0, 0, 9, 2, 95, 49, 57, 6, 109, 49, 0, 0, 10,
+			2, 95, 48, 89, 6, 124, 83, 34, 0, 0, 10, 2, 95, 55, 107, 6, 109, 83, 47, 0, 0, 9, 2, 95, 54, 91, 6, 109, 91, 0,
+			0, 10, 2, 95, 53, 48, 6, 36, 50, 75, 0, 0, 9, 2, 95, 52, 75, 6, 35, 34, 0, 0, 14, 2, 95, 59, 101, 35, 55, 71,
+			36, 107, 50, 39, 49, 0, 0, 11, 2, 95, 58, 75, 39, 47, 101, 35, 55, 0, 0, 9, 2, 95, 57, 50, 6, 109, 107, 0, 0, 5,
+			194, 100, 16, 72, 5, 194, 92, 80, 76, 11, 2, 95, 56, 107, 6, 109, 57, 91, 47, 0, 0, 15, 2, 95, 63, 48, 124, 51, 89, 50,
+			37, 91, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 97, 35, 0, 0, 0, 0, 0, 5, 194, 94, 96, 76, 6,
+			2, 95, 101, 109, 0, 0, 0, 0, 0, 6, 2, 95, 105, 124, 0, 0, 0, 6, 2, 95, 111, 39, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 2, 95, 117, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5, 95, 48, 97, 110, 100, 10, 40,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 102, 48, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 195, 174, 0, 105, 121, 0, 195, 170, 0,
+			101, 119, 0, 101, 121, 0, 7, 6, 195, 167, 0, 3, 76, 0, 7, 6, 195, 170, 0, 1, 21, 2, 32, 14, 128, 128, 129, 3, 2, 36,
+			0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 36, 50, 0, 3, 36, 0, 7, 6, 195, 174, 0, 3, 37, 0, 7, 6, 195, 187,
+			0, 3, 40, 0, 7, 6, 197, 159, 0, 3, 91, 0, 7, 6, 97, 0, 1, 21, 2, 32, 14, 128, 128, 129, 3, 2, 35, 0, 110, 1,
+			21, 2, 32, 14, 128, 128, 130, 3, 2, 35, 50, 0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 75, 0, 7,
+			6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 109, 0, 119, 3, 115, 0, 121, 3, 118, 0, 2, 32, 3, 125, 0, 7, 6, 102, 0,
+			3, 83, 0, 7, 6, 103, 0, 2, 18, 66, 3, 79, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 124, 0,
+			7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0, 3, 49, 0, 2, 18, 66, 3, 80, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109,
+			0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3,
+			104, 0, 7, 6, 114, 0, 1, 17, 65, 2, 17, 65, 3, 16, 0, 4, 3, 51, 0, 114, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6,
+			116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 111, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0,
+			3, 101, 0, 119, 101, 3, 101, 58, 126, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72,
+			111, 55, 35, 34, 0, 195, 188, 3, 112, 0, 195, 182, 3, 124, 12, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts38 = FileInMemory_createWithData (2268, reinterpret_cast<const char *> (&espeakdata_dicts38_data), 
+			U"espeak-1.48.04-source/espeak-data/ku_dict", 
 			U"ku");
-		Collection_addItem (me.peek(), espeakdata_dicts36.transfer());
+		my addItem_move (espeakdata_dicts38.move());
 
-		static unsigned char espeakdata_dicts37_data[3818] = {
-			0, 4, 0, 0, 55, 11, 0, 0, 11, 136, 6, 21, 196, 171, 19, 20, 9, 19, 72, 0, 0, 0, 0, 6, 195, 76, 144, 137, 72, 6,
-			195, 69, 80, 69, 72, 6, 195, 69, 80, 69, 72, 0, 4, 193, 4, 72, 5, 65, 4, 112, 0, 0, 6, 131, 5, 196, 171, 72, 0, 7,
-			132, 6, 21, 196, 171, 72, 0, 7, 196, 37, 86, 20, 4, 72, 0, 6, 65, 8, 71, 113, 0, 0, 0, 0, 6, 195, 69, 80, 77, 72,
-			0, 6, 65, 12, 49, 113, 0, 0, 0, 0, 0, 6, 65, 16, 72, 113, 0, 0, 0, 10, 199, 65, 35, 208, 80, 84, 133, 4, 8, 6,
-			195, 21, 83, 64, 72, 0, 0, 4, 193, 20, 72, 5, 65, 20, 113, 0, 0, 0, 0, 6, 195, 76, 147, 133, 72, 6, 195, 64, 243, 133,
-			72, 0, 6, 65, 24, 108, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 113, 0, 0, 0, 0, 7, 196, 21, 53, 9, 76, 72, 0, 6,
-			65, 32, 107, 112, 0, 0, 0, 0, 6, 195, 21, 68, 201, 8, 0, 10, 65, 36, 6, 116, 50, 111, 89, 0, 41, 5, 65, 36, 114, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 136, 6, 21, 196, 147, 18, 21, 14, 20, 72, 0, 6, 65, 44, 49, 112, 0, 0, 0, 7, 132, 5,
-			196, 171, 19, 72, 0, 6, 195, 4, 229, 5, 72, 0, 6, 65, 48, 108, 55, 0, 0, 0, 10, 199, 65, 32, 69, 80, 84, 133, 4, 72,
-			0, 0, 6, 65, 52, 108, 65, 0, 0, 0, 0, 21, 2, 1, 46, 6, 35, 50, 47, 108, 15, 72, 6, 109, 38, 108, 65, 0, 81, 100,
-			46, 32, 29, 2, 1, 46, 35, 71, 15, 58, 51, 71, 4, 108, 15, 49, 110, 50, 72, 6, 114, 47, 35, 0, 82, 117, 46, 32, 99, 46,
-			32, 0, 6, 65, 56, 108, 50, 0, 0, 0, 0, 0, 5, 65, 60, 115, 0, 0, 0, 0, 0, 6, 65, 64, 48, 113, 0, 0, 10, 135,
-			6, 21, 5, 18, 196, 129, 19, 72, 5, 194, 4, 32, 72, 0, 0, 0, 7, 65, 68, 49, 58, 116, 0, 0, 0, 0, 0, 6, 65, 72,
-			108, 34, 0, 0, 0, 0, 0, 6, 65, 76, 108, 89, 0, 0, 0, 0, 22, 2, 4, 46, 72, 4, 114, 89, 15, 65, 6, 112, 50, 109,
-			71, 111, 89, 0, 81, 77, 46, 32, 0, 6, 65, 80, 47, 113, 0, 0, 5, 194, 4, 48, 72, 0, 0, 0, 5, 65, 84, 116, 0, 0,
-			0, 0, 0, 5, 65, 88, 116, 0, 0, 0, 0, 0, 8, 197, 69, 82, 66, 85, 48, 72, 0, 0, 0, 0, 7, 65, 96, 108, 49, 89,
-			0, 0, 9, 198, 36, 64, 201, 72, 51, 192, 8, 5, 194, 4, 64, 72, 0, 0, 0, 5, 65, 100, 114, 0, 0, 0, 0, 0, 9, 65,
-			104, 6, 88, 113, 47, 35, 0, 0, 5, 194, 5, 64, 8, 0, 0, 6, 195, 20, 226, 77, 8, 0, 0, 9, 198, 25, 81, 82, 21, 83,
-			148, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 65, 35, 208, 20, 72, 16, 2, 9, 46, 4, 109, 72, 15, 108, 89, 47,
-			0, 81, 101, 46, 32, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 85, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21,
-			32, 78, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 69, 83, 196, 8, 6,
-			195, 69, 83, 196, 72, 0, 0, 0, 0, 6, 195, 64, 244, 212, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 65, 35,
-			208, 37, 84, 192, 72, 0, 0, 7, 196, 81, 32, 78, 76, 72, 0, 0, 0, 0, 0, 0, 5, 194, 20, 16, 72, 0, 0, 0, 0, 0,
-			0, 7, 196, 77, 83, 85, 76, 72, 7, 196, 77, 84, 18, 4, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 21, 48, 72, 0,
-			0, 7, 196, 65, 35, 213, 80, 8, 0, 0, 0, 6, 195, 21, 53, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194,
-			21, 64, 72, 28, 0, 0, 0, 0, 0, 7, 132, 9, 196, 171, 19, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 21, 66, 65, 52, 8, 0, 0, 0, 0, 7, 196, 69, 83, 193, 16, 8, 0, 0, 0, 0, 0, 0, 9, 134, 6, 21, 5, 18, 197,
-			141, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 25, 82, 84, 72, 0, 8, 133, 5, 18, 196, 129, 13, 72, 7, 196, 64, 83, 133, 76, 72, 0, 0,
-			5, 194, 21, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 80, 144, 137, 72, 0, 0, 0,
-			8, 197, 21, 34, 84, 37, 48, 72, 0, 8, 133, 5, 18, 196, 129, 19, 72, 0, 0, 0, 8, 133, 5, 18, 196, 129, 20, 72, 15, 67,
-			36, 33, 0, 6, 109, 71, 114, 15, 72, 4, 108, 65, 0, 0, 14, 66, 36, 32, 6, 109, 71, 114, 15, 72, 4, 108, 65, 0, 0, 6,
-			195, 56, 80, 192, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 5, 18, 197, 141, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 12, 148, 131, 4, 72, 0, 0, 5, 194, 36, 64, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,
-			95, 51, 88, 47, 14, 16, 114, 81, 6, 109, 50, 47, 112, 0, 0, 13, 3, 95, 48, 67, 49, 6, 108, 50, 47, 111, 65, 0, 0, 0,
-			6, 195, 65, 32, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 49, 57, 116, 50, 72, 108, 58, 109, 81,
-			6, 109, 50, 47, 109, 0, 0, 19, 3, 95, 49, 56, 72, 111, 110, 72, 108, 58, 109, 81, 6, 109, 50, 47, 109, 0, 0, 0, 0, 0,
-			0, 0, 0, 14, 3, 95, 49, 49, 6, 116, 50, 72, 108, 49, 109, 65, 0, 6, 195, 52, 146, 9, 72, 0, 12, 3, 95, 49, 48, 72,
-			6, 108, 49, 108, 65, 0, 0, 17, 3, 95, 49, 51, 47, 14, 16, 4, 113, 72, 6, 108, 49, 109, 65, 0, 0, 15, 3, 95, 49, 50,
-			72, 111, 6, 110, 72, 108, 49, 109, 65, 0, 0, 17, 3, 95, 49, 53, 49, 58, 4, 114, 50, 72, 6, 108, 49, 109, 65, 0, 0, 20,
-			3, 95, 49, 52, 49, 58, 35, 47, 12, 58, 6, 110, 51, 72, 108, 49, 109, 65, 0, 0, 18, 3, 95, 49, 55, 89, 108, 48, 47, 6,
-			108, 50, 72, 108, 49, 109, 65, 0, 0, 14, 3, 95, 49, 54, 89, 6, 108, 72, 108, 49, 109, 65, 0, 0, 0, 18, 3, 95, 55, 88,
-			89, 108, 48, 47, 111, 112, 81, 6, 109, 50, 47, 112, 0, 0, 6, 131, 19, 21, 63, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 195, 5, 5, 68, 72, 0, 0, 11, 136, 6, 21, 196, 171, 19, 20, 196, 171, 72, 0, 10, 66, 36, 144, 72, 6, 111, 110, 0,
-			42, 7, 66, 36, 144, 109, 109, 0, 0, 0, 7, 196, 36, 229, 5, 72, 72, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 50, 88, 58,
-			114, 81, 6, 109, 50, 47, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 37, 78, 80, 72, 0, 0,
-			0, 19, 3, 95, 52, 88, 49, 58, 35, 72, 14, 16, 112, 81, 6, 109, 50, 47, 112, 0, 0, 7, 196, 5, 68, 85, 36, 8, 0, 0,
-			0, 0, 0, 8, 197, 77, 80, 148, 21, 32, 72, 0, 0, 19, 3, 95, 53, 88, 49, 58, 114, 68, 49, 58, 112, 81, 6, 109, 50, 47,
-			112, 0, 0, 7, 196, 36, 225, 146, 4, 72, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 54, 88, 89, 108, 49, 89, 112, 81, 6, 109,
-			50, 47, 112, 0, 0, 7, 196, 5, 68, 85, 20, 8, 0, 0, 9, 198, 88, 84, 212, 73, 83, 64, 72, 0, 6, 195, 20, 19, 64, 72,
-			0, 7, 196, 69, 80, 83, 36, 8, 0, 0, 0, 0, 6, 131, 20, 21, 63, 72, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 56, 88,
-			110, 49, 47, 115, 81, 6, 109, 50, 47, 112, 0, 0, 0, 7, 132, 13, 5, 196, 171, 72, 0, 0, 0, 0, 0, 0, 16, 3, 95, 57,
-			88, 50, 115, 50, 112, 81, 6, 109, 50, 47, 112, 0, 0, 6, 131, 13, 196, 147, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20,
-			149, 83, 72, 0, 8, 197, 21, 34, 77, 85, 48, 72, 0, 0, 0, 10, 135, 5, 18, 196, 129, 13, 21, 19, 72, 0, 7, 132, 17, 21,
-			196, 171, 72, 0, 12, 137, 6, 21, 5, 18, 196, 129, 13, 21, 19, 72, 0, 5, 194, 60, 32, 72, 5, 194, 36, 224, 72, 5, 194, 36,
-			224, 72, 0, 0, 0, 12, 137, 6, 21, 5, 18, 196, 171, 13, 21, 19, 72, 0, 9, 198, 65, 32, 69, 80, 84, 128, 72, 0, 0, 0,
-			0, 9, 198, 25, 81, 82, 84, 229, 0, 72, 0, 0, 0, 0, 10, 135, 6, 21, 5, 18, 196, 171, 19, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 195, 65, 35, 192, 72, 0, 0, 0, 0, 6, 195, 77, 83, 64, 72, 6, 195, 13, 83, 64, 72, 5,
-			195, 56, 243, 128, 0, 8, 133, 17, 21, 197, 141, 19, 72, 0, 13, 4, 95, 48, 77, 49, 65, 6, 109, 55, 55, 108, 0, 8, 197, 25,
-			82, 77, 85, 48, 72, 0, 0, 0, 0, 12, 201, 69, 81, 77, 4, 67, 79, 17, 83, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 9, 198, 69, 80, 77, 69, 80, 77, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 12, 148, 131, 84, 208, 72, 0, 0,
-			0, 0, 0, 0, 0, 8, 133, 17, 21, 196, 129, 19, 72, 0, 0, 9, 198, 56, 244, 212, 73, 83, 64, 72, 0, 0, 0, 0, 0, 6,
-			195, 77, 80, 128, 72, 0, 0, 0, 0, 6, 195, 77, 83, 148, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-			197, 21, 65, 78, 36, 208, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135,
-			14, 197, 141, 2, 196, 171, 19, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 76, 80, 213, 56, 69, 77, 72,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 7, 196, 77, 83, 148, 60, 72, 0, 0, 0, 6, 195, 21, 34, 84, 72, 0, 0, 0, 6, 195, 21, 34,
-			83, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 84,
-			197, 18, 4, 72, 7, 196, 36, 229, 18, 4, 72, 0, 8, 197, 21, 53, 15, 80, 80, 72, 8, 197, 12, 243, 148, 72, 16, 72, 0, 0,
-			0, 0, 0, 0, 6, 195, 56, 19, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 53, 5, 72, 0,
-			0, 9, 198, 69, 80, 77, 16, 149, 64, 8, 10, 135, 22, 197, 141, 2, 196, 171, 19, 72, 0, 0, 0, 8, 197, 25, 81, 82, 5, 64,
-			72, 0, 6, 195, 21, 53, 15, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134,
-			5, 197, 141, 18, 21, 13, 72, 0, 0, 0, 0, 0, 9, 198, 65, 35, 208, 80, 84, 128, 72, 0, 0, 0, 0, 6, 195, 21, 33, 193,
-			72, 0, 0, 6, 195, 21, 33, 207, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 83, 64, 8,
-			0, 0, 0, 0, 6, 195, 64, 84, 128, 72, 0, 0, 0, 10, 135, 17, 21, 196, 129, 18, 21, 13, 72, 0, 11, 2, 95, 51, 47, 14,
-			16, 4, 113, 89, 0, 0, 9, 2, 95, 50, 72, 6, 111, 110, 0, 0, 10, 2, 95, 49, 6, 116, 50, 111, 89, 0, 0, 11, 2, 95,
-			48, 50, 6, 111, 55, 55, 35, 0, 0, 12, 2, 95, 55, 89, 6, 108, 48, 47, 108, 65, 0, 0, 10, 2, 95, 54, 89, 4, 108, 49,
-			89, 0, 0, 13, 2, 95, 53, 49, 58, 6, 114, 68, 49, 58, 108, 0, 0, 14, 2, 95, 52, 49, 58, 6, 35, 47, 12, 111, 110, 51,
-			0, 0, 0, 0, 11, 2, 95, 57, 50, 6, 110, 58, 108, 65, 0, 0, 10, 2, 95, 56, 6, 110, 49, 47, 115, 0, 0, 0, 0, 0,
-			10, 135, 17, 21, 197, 141, 18, 21, 13, 72, 0, 0, 0, 8, 197, 56, 19, 81, 84, 80, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 36, 65, 79, 8, 0, 0, 0, 0, 7, 196, 77, 84, 5, 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67,
-			36, 66, 66, 6, 114, 72, 109, 71, 111, 89, 0, 0, 11, 66, 88, 144, 89, 4, 108, 49, 89, 0, 42, 7, 66, 88, 144, 58, 109, 0,
-			0, 0, 0, 9, 134, 5, 196, 129, 18, 21, 13, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 5, 196, 129, 19, 72, 0, 12, 137,
-			6, 21, 5, 18, 196, 171, 20, 9, 19, 72, 0, 0, 0, 0, 12, 137, 6, 21, 5, 18, 196, 129, 20, 9, 19, 72, 0, 14, 67, 36,
-			68, 64, 114, 72, 6, 108, 65, 49, 58, 108, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 148, 201, 8, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 25, 81, 82, 4, 208, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 20, 196, 147, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 196, 5, 85, 5, 52, 8, 0, 7, 132, 5, 197, 141, 19, 72, 0, 0, 0, 0, 8, 197, 88, 84, 147, 85, 48, 72, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 133, 18, 4, 72, 0, 0, 0,
-			0, 0, 0, 0, 9, 198, 65, 35, 216, 36, 213, 83, 72, 0, 10, 135, 5, 18, 196, 129, 20, 9, 19, 72, 0, 0, 0, 0, 0, 0,
-			6, 131, 5, 196, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 25, 81, 82, 37, 64, 72, 0, 6, 131, 5, 197,
-			141, 72, 0, 0, 0, 8, 197, 69, 80, 78, 16, 240, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 226, 0, 0, 0,
+		static unsigned char espeakdata_dicts39_data[3818] = {
+			0, 4, 0, 0, 55, 11, 0, 0, 7, 132, 102, 117, 196, 171, 72, 0, 0, 0, 0, 0, 4, 193, 4, 72, 5, 65, 4, 112, 0, 0,
+			7, 196, 65, 35, 208, 20, 72, 6, 131, 101, 196, 171, 72, 0, 0, 0, 6, 65, 8, 71, 113, 0, 0, 0, 0, 12, 201, 69, 81, 77,
+			4, 67, 79, 17, 83, 64, 8, 0, 6, 65, 12, 49, 113, 0, 0, 0, 0, 0, 6, 65, 16, 72, 113, 0, 0, 0, 6, 195, 21, 83,
+			64, 72, 0, 0, 4, 193, 20, 72, 5, 65, 20, 113, 0, 0, 0, 0, 0, 6, 65, 24, 108, 83, 0, 0, 0, 0, 0, 6, 65, 28,
+			81, 113, 0, 0, 0, 0, 0, 6, 65, 32, 107, 112, 0, 0, 0, 0, 0, 10, 65, 36, 6, 116, 50, 111, 89, 0, 41, 5, 65, 36,
+			114, 0, 0, 0, 0, 0, 0, 7, 196, 21, 66, 65, 52, 8, 0, 0, 0, 8, 197, 69, 80, 78, 16, 240, 8, 6, 65, 44, 49, 112,
+			0, 0, 0, 0, 0, 8, 197, 21, 34, 77, 85, 48, 72, 6, 65, 48, 108, 55, 0, 0, 0, 0, 0, 6, 65, 52, 108, 65, 0, 0,
+			0, 0, 0, 6, 65, 56, 108, 50, 0, 0, 0, 0, 0, 5, 65, 60, 115, 0, 0, 0, 8, 197, 25, 81, 82, 4, 208, 72, 0, 0,
+			6, 65, 64, 48, 113, 0, 0, 5, 194, 4, 32, 72, 0, 0, 0, 7, 65, 68, 49, 58, 116, 0, 0, 0, 0, 0, 6, 65, 72, 108,
+			34, 0, 0, 0, 0, 0, 6, 65, 76, 108, 89, 0, 0, 0, 0, 0, 7, 196, 69, 83, 193, 16, 8, 6, 65, 80, 47, 113, 0, 0,
+			5, 194, 4, 48, 72, 0, 0, 0, 5, 65, 84, 116, 0, 0, 0, 6, 195, 20, 149, 83, 72, 0, 0, 5, 65, 88, 116, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 65, 96, 108, 49, 89, 0, 0, 5, 194, 4, 64, 72, 0, 0, 0, 5, 65, 100, 114, 0, 0, 0, 0,
+			0, 9, 65, 104, 6, 88, 113, 47, 35, 0, 0, 5, 194, 5, 64, 8, 0, 0, 0, 0, 0, 0, 0, 6, 195, 69, 80, 69, 72, 6,
+			195, 69, 80, 69, 72, 0, 0, 0, 0, 6, 195, 76, 144, 137, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 85, 0,
+			8, 0, 0, 0, 0, 0, 0, 0, 7, 196, 37, 86, 20, 4, 72, 0, 0, 0, 0, 8, 133, 101, 114, 196, 129, 109, 72, 6, 131, 115,
+			117, 63, 72, 0, 0, 0, 6, 195, 65, 32, 69, 72, 0, 0, 7, 132, 101, 196, 171, 115, 72, 0, 0, 0, 0, 0, 0, 7, 196, 21,
+			32, 78, 80, 72, 0, 0, 0, 0, 9, 198, 65, 32, 69, 80, 84, 128, 72, 0, 0, 0, 0, 0, 0, 0, 8, 133, 101, 114, 196, 129,
+			115, 72, 0, 8, 133, 101, 114, 196, 129, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
+			20, 16, 72, 0, 0, 0, 0, 0, 0, 0, 9, 198, 65, 35, 208, 80, 84, 128, 72, 6, 195, 69, 80, 77, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 10, 135, 102, 117, 101, 114, 196, 129, 115, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 116, 117, 63, 72, 0, 0,
+			0, 6, 195, 21, 33, 193, 72, 0, 0, 0, 0, 0, 5, 194, 16, 80, 72, 0, 0, 0, 0, 10, 135, 118, 197, 141, 98, 196, 171, 115,
+			72, 0, 0, 0, 0, 5, 194, 21, 48, 72, 0, 0, 0, 0, 0, 6, 195, 21, 53, 0, 72, 0, 0, 0, 0, 11, 136, 102, 117, 196,
+			171, 115, 116, 196, 171, 72, 0, 0, 0, 0, 0, 11, 136, 102, 117, 196, 147, 114, 117, 110, 116, 72, 0, 0, 6, 194, 21, 64, 72, 28,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 33, 207, 8, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 132, 101, 114, 197, 141, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 147, 133, 72, 6, 195, 64,
+			243, 133, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 69, 83, 196, 8,
+			6, 195, 69, 83, 196, 72, 0, 0, 0, 6, 195, 52, 146, 9, 72, 0, 0, 0, 5, 194, 21, 128, 72, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 36, 33, 0, 6, 109, 71, 114, 15, 72, 4, 108, 65,
+			0, 0, 14, 66, 36, 32, 6, 109, 71, 114, 15, 72, 4, 108, 65, 0, 0, 6, 195, 56, 80, 192, 8, 0, 10, 135, 101, 114, 196, 129,
+			109, 117, 115, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 77, 83, 148, 60, 72, 0, 0, 0, 7, 132, 113, 117, 196, 171,
+			72, 0, 0, 0, 6, 195, 64, 244, 212, 72, 0, 0, 7, 196, 21, 53, 9, 76, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 137, 102, 117, 101, 114, 196, 129, 109, 117, 115, 72, 5, 194, 36, 64, 72, 0, 0, 0, 0, 12, 137, 102, 117, 101, 114, 196, 171,
+			109, 117, 115, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 68, 201, 8, 0, 0, 0, 0, 8, 197, 25,
+			82, 77, 85, 48, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 51, 88, 47, 14, 16, 114, 81, 6, 109, 50,
+			47, 112, 0, 0, 13, 3, 95, 48, 67, 49, 6, 108, 50, 47, 111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 21, 34, 83, 72, 0, 18, 3, 95, 49, 57, 116, 50, 72, 108, 58, 109, 81, 6, 109, 50, 47, 109, 0, 0, 19, 3, 95, 49,
+			56, 72, 111, 110, 72, 108, 58, 109, 81, 6, 109, 50, 47, 109, 0, 0, 6, 195, 21, 34, 84, 72, 0, 0, 7, 196, 64, 83, 133, 76,
+			72, 0, 0, 6, 195, 25, 82, 84, 72, 0, 0, 14, 3, 95, 49, 49, 6, 116, 50, 72, 108, 49, 109, 65, 0, 0, 12, 3, 95, 49,
+			48, 72, 6, 108, 49, 108, 65, 0, 0, 17, 3, 95, 49, 51, 47, 14, 16, 4, 113, 72, 6, 108, 49, 109, 65, 0, 9, 198, 65, 35,
+			208, 37, 84, 192, 72, 0, 15, 3, 95, 49, 50, 72, 111, 6, 110, 72, 108, 49, 109, 65, 0, 0, 17, 3, 95, 49, 53, 49, 58, 4,
+			114, 50, 72, 6, 108, 49, 109, 65, 0, 8, 133, 113, 117, 196, 129, 115, 72, 0, 20, 3, 95, 49, 52, 49, 58, 35, 47, 12, 58, 6,
+			110, 51, 72, 108, 49, 109, 65, 0, 0, 18, 3, 95, 49, 55, 89, 108, 48, 47, 6, 108, 50, 72, 108, 49, 109, 65, 0, 0, 14, 3,
+			95, 49, 54, 89, 6, 108, 72, 108, 49, 109, 65, 0, 0, 0, 18, 3, 95, 55, 88, 89, 108, 48, 47, 111, 112, 81, 6, 109, 50, 47,
+			112, 0, 0, 0, 0, 0, 9, 198, 69, 80, 77, 69, 80, 77, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 66, 36, 144,
+			72, 6, 111, 110, 0, 42, 7, 66, 36, 144, 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 81, 32, 78, 76, 72, 0, 14,
+			3, 95, 50, 88, 58, 114, 81, 6, 109, 50, 47, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 5, 68, 72, 0, 11,
+			136, 102, 117, 196, 171, 115, 116, 105, 115, 72, 0, 0, 0, 9, 198, 25, 81, 82, 21, 83, 148, 72, 0, 0, 0, 19, 3, 95, 52, 88,
+			49, 58, 35, 72, 14, 16, 112, 81, 6, 109, 50, 47, 112, 0, 0, 0, 0, 0, 6, 195, 4, 229, 5, 72, 0, 10, 135, 102, 117, 101,
+			114, 196, 171, 115, 72, 0, 0, 0, 19, 3, 95, 53, 88, 49, 58, 114, 68, 49, 58, 112, 81, 6, 109, 50, 47, 112, 0, 0, 6, 131,
+			109, 196, 147, 72, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 54, 88, 89, 108, 49, 89, 112, 81, 6, 109, 50, 47, 112, 0, 0, 0,
+			0, 0, 6, 195, 20, 19, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 56, 88, 110, 49, 47, 115, 81,
+			6, 109, 50, 47, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 57, 88, 50, 115, 50, 112, 81, 6, 109, 50, 47, 112, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 229, 5, 72, 72, 0, 0, 0, 8, 133, 113, 117, 197, 141, 115, 72, 0, 0, 0, 0,
+			0, 5, 194, 60, 32, 72, 5, 194, 36, 224, 72, 5, 194, 36, 224, 72, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 25, 81, 82, 84,
+			229, 0, 72, 7, 196, 77, 84, 18, 4, 72, 0, 8, 197, 56, 19, 81, 84, 80, 8, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 12,
+			148, 131, 84, 208, 72, 0, 0, 0, 0, 0, 7, 196, 77, 83, 85, 76, 72, 0, 0, 0, 6, 195, 65, 35, 192, 72, 7, 132, 109, 101,
+			196, 171, 72, 0, 0, 0, 0, 6, 195, 77, 83, 64, 72, 6, 195, 13, 83, 64, 72, 5, 195, 56, 243, 128, 0, 0, 13, 4, 95, 48,
+			77, 49, 65, 6, 109, 55, 55, 108, 0, 0, 0, 0, 0, 6, 195, 80, 144, 137, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 197, 21, 34, 84, 37, 48, 72, 0, 0, 9, 134, 102, 117, 101, 114, 197, 141, 72, 0, 0, 0, 0, 0, 0,
+			9, 198, 76, 80, 213, 56, 69, 77, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 80, 128, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 56, 244, 212, 73, 83, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 5,
+			85, 5, 52, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 101, 197, 141, 114, 117, 109, 72, 0, 10, 135, 113,
+			117, 196, 129, 114, 117, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 88, 84, 147, 85, 48, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 37,
+			78, 80, 72, 0, 10, 199, 65, 35, 208, 80, 84, 133, 4, 8, 10, 199, 65, 32, 69, 80, 84, 133, 4, 72, 0, 6, 195, 36, 65, 79,
+			8, 0, 0, 0, 0, 9, 134, 101, 196, 129, 114, 117, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 80, 72, 0, 7, 196, 77, 84, 5, 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 196, 5, 68, 85, 36, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 77, 83, 148, 72, 8, 197, 77, 80, 148, 21, 32, 72, 0, 0, 0, 0, 0, 0, 10, 135, 101, 114, 196, 129,
+			116, 105, 115, 72, 0, 6, 195, 56, 19, 64, 8, 9, 198, 65, 35, 216, 36, 213, 83, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 36, 225, 146, 4, 72, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 36, 66, 66, 6, 114, 72, 109, 71, 111, 89, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 102, 117, 101, 114, 196, 129, 116, 105, 115, 72, 0, 0, 0, 0, 0,
+			0, 8, 197, 21, 53, 15, 80, 80, 72, 0, 0, 0, 7, 196, 84, 197, 18, 4, 72, 7, 196, 36, 229, 18, 4, 72, 7, 196, 21, 133,
+			18, 4, 72, 0, 8, 197, 12, 243, 148, 72, 16, 72, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 21, 65, 78, 36, 208, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 17, 83, 64, 8, 0, 0, 0, 0, 6, 195, 64, 84, 128, 72, 0, 7,
+			196, 5, 68, 85, 20, 8, 0, 0, 0, 11, 2, 95, 51, 47, 14, 16, 4, 113, 89, 0, 0, 9, 2, 95, 50, 72, 6, 111, 110, 0,
+			0, 10, 2, 95, 49, 6, 116, 50, 111, 89, 0, 0, 11, 2, 95, 48, 50, 6, 111, 55, 55, 35, 0, 0, 12, 2, 95, 55, 89, 6,
+			108, 48, 47, 108, 65, 0, 0, 10, 2, 95, 54, 89, 4, 108, 49, 89, 0, 0, 13, 2, 95, 53, 49, 58, 6, 114, 68, 49, 58, 108,
+			0, 0, 14, 2, 95, 52, 49, 58, 6, 35, 47, 12, 111, 110, 51, 0, 0, 0, 0, 11, 2, 95, 57, 50, 6, 110, 58, 108, 65, 0,
+			0, 10, 2, 95, 56, 6, 110, 49, 47, 115, 0, 0, 8, 197, 69, 82, 66, 85, 48, 72, 0, 21, 2, 97, 46, 6, 35, 50, 47, 108,
+			15, 72, 6, 109, 38, 108, 65, 0, 81, 100, 46, 32, 29, 2, 97, 46, 35, 71, 15, 58, 51, 71, 4, 108, 15, 49, 110, 50, 72, 6,
+			114, 47, 35, 0, 82, 117, 46, 32, 99, 46, 32, 0, 7, 196, 65, 35, 213, 80, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198,
+			88, 84, 212, 73, 83, 64, 72, 0, 0, 0, 0, 0, 0, 7, 196, 12, 148, 131, 4, 72, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135,
+			110, 197, 141, 98, 196, 171, 115, 72, 22, 2, 100, 46, 72, 4, 114, 89, 15, 65, 6, 112, 50, 109, 71, 111, 89, 0, 81, 77, 46, 32,
+			0, 0, 0, 0, 9, 198, 36, 64, 201, 72, 51, 192, 8, 0, 0, 11, 66, 88, 144, 89, 4, 108, 49, 89, 0, 42, 7, 66, 88, 144,
+			58, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 113, 117, 197, 141, 114, 117, 109, 72, 0, 0, 0, 0, 0, 0, 7, 196, 69,
+			80, 83, 36, 8, 0, 0, 0, 14, 67, 36, 68, 64, 114, 72, 6, 108, 65, 49, 58, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 105, 46, 4, 109, 72, 15, 108, 89, 47, 0, 81, 101, 46, 32, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 102, 117, 101, 114, 196, 171, 116, 105, 115, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 131, 116, 196, 147, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 101, 197, 141, 115, 72,
+			0, 0, 0, 0, 0, 0, 6, 195, 56, 148, 201, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 53, 5, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 226, 77, 8, 0, 0, 0, 0, 0, 0, 7, 132, 101, 196, 129, 115, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 105, 196, 171, 115, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+			198, 69, 80, 77, 16, 149, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 53, 15, 72, 0, 6, 131, 101, 197,
+			141, 72, 0, 0, 0, 0, 6, 131, 101, 196, 129, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197,
+			25, 81, 82, 37, 64, 72, 8, 197, 25, 81, 82, 5, 64, 72, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 226, 0, 0, 0,
 			1, 1, 0, 0, 234, 0, 0, 0, 19, 1, 0, 0, 238, 0, 0, 0, 43, 1, 0, 0, 244, 0, 0, 0, 77, 1, 0, 0, 251, 0,
 			0, 0, 107, 1, 0, 0, 119, 1, 0, 0, 121, 0, 121, 0, 0, 0, 0, 0, 6, 18, 66, 97, 101, 0, 97, 117, 0, 101, 117, 0,
 			111, 101, 0, 121, 121, 0, 196, 129, 0, 196, 147, 0, 196, 171, 0, 197, 141, 0, 197, 171, 0, 195, 171, 0, 195, 188, 0, 195, 169, 0,
@@ -23919,635 +34612,735 @@ FilesInMemory create_espeakdata_dicts () {
 			4, 3, 58, 0, 8, 0, 118, 2, 12, 12, 12, 3, 58, 12, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 117, 0,
 			121, 3, 118, 0, 7, 6, 122, 0, 3, 88, 0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 12, 0, 122, 0, 7, 6, 0, 106, 3, 57,
 			0, 119, 3, 58, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts37 = FileInMemory_createWithData (3817, reinterpret_cast<const char *> (&espeakdata_dicts37_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/la_dict", 
+		autoFileInMemory espeakdata_dicts39 = FileInMemory_createWithData (3817, reinterpret_cast<const char *> (&espeakdata_dicts39_data), 
+			U"espeak-1.48.04-source/espeak-data/la_dict", 
 			U"la");
-		Collection_addItem (me.peek(), espeakdata_dicts37.transfer());
+		my addItem_move (espeakdata_dicts39.move());
+
+		static unsigned char espeakdata_dicts40_data[2871] = {
+			0, 4, 0, 0, 48, 8, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 6,
+			195, 21, 64, 192, 13, 0, 0, 8, 197, 13, 80, 78, 80, 240, 76, 6, 65, 12, 49, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36,
+			0, 0, 0, 6, 195, 76, 147, 128, 76, 0, 16, 4, 95, 100, 112, 116, 10, 84, 37, 52, 81, 6, 40, 55, 35, 0, 0, 4, 193, 20,
+			76, 0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 7, 65, 32, 107, 35,
+			91, 0, 0, 0, 0, 10, 1, 35, 81, 69, 37, 55, 57, 35, 0, 0, 10, 1, 36, 72, 39, 55, 35, 52, 89, 0, 0, 12, 1, 37,
+			48, 36, 52, 89, 36, 50, 47, 39, 0, 0, 7, 195, 12, 20, 128, 76, 28, 4, 193, 112, 43, 0, 0, 6, 65, 40, 90, 36, 0, 0,
+			0, 18, 1, 42, 89, 6, 37, 50, 57, 35, 72, 36, 89, 47, 6, 36, 55, 35, 0, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0,
+			0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65, 0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0,
+			0, 5, 193, 60, 76, 28, 0, 19, 1, 61, 89, 6, 37, 50, 57, 35, 72, 36, 36, 81, 6, 35, 55, 57, 35, 0, 0, 0, 0, 6,
+			65, 64, 48, 36, 0, 0, 0, 0, 0, 7, 65, 68, 49, 58, 35, 0, 0, 0, 6, 195, 4, 80, 192, 13, 0, 0, 6, 65, 72, 36,
+			52, 0, 0, 0, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 35, 0, 0, 0, 0, 0, 6, 65, 96, 36, 91, 0, 11, 4, 95, 49,
+			77, 49, 65, 6, 37, 55, 0, 0, 0, 0, 0, 6, 65, 100, 57, 35, 0, 0, 0, 6, 195, 48, 244, 192, 76, 0, 0, 6, 65, 104,
+			88, 36, 0, 0, 0, 6, 195, 64, 244, 192, 76, 0, 0, 6, 195, 21, 48, 197, 76, 0, 0, 0, 0, 0, 6, 194, 12, 16, 76, 28,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 20, 229, 18, 20,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 10, 66, 17, 32, 72, 39, 47, 39, 52, 0, 0, 0, 0, 0, 0, 0, 6, 195, 13, 80, 76, 76, 0, 0, 5, 194, 12,
+			80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 84,
+			131, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 80, 76, 5, 194, 20, 48, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 136, 43, 0, 0, 0, 5, 194, 12,
+			144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 48, 243, 135, 60, 76, 0, 6,
+			195, 64, 20, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 148, 43, 0, 0, 10, 3, 226, 130, 172, 115, 69, 39, 89, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 192, 76, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 5, 194, 20, 224, 76, 0, 13, 3, 95, 51, 88, 47, 69, 36, 72, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 3, 95, 49, 67, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 16, 76, 0, 0, 14, 3, 95,
+			50, 67, 72, 40, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 4, 193, 156, 43, 0, 0, 0, 0, 0, 15, 3, 95, 51, 67, 47, 69,
+			36, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 0, 9, 198, 64, 244, 148, 84, 113, 83, 15, 0, 0, 14, 3, 95, 55, 88, 89,
+			36, 47, 36, 72, 6, 36, 89, 0, 0, 18, 3, 95, 52, 67, 49, 58, 35, 47, 69, 39, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 17, 3, 95, 53, 67, 89, 37, 50, 49, 39, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 19, 4, 95, 97, 99,
+			117, 89, 37, 50, 57, 6, 36, 47, 35, 6, 35, 81, 40, 0, 0, 0, 0, 5, 194, 52, 16, 76, 0, 10, 3, 95, 49, 88, 72, 6,
+			36, 89, 0, 0, 14, 3, 95, 54, 67, 89, 36, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88,
+			72, 40, 72, 6, 36, 89, 0, 0, 16, 3, 95, 55, 67, 89, 36, 47, 36, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 15, 3, 95, 56, 67, 39, 47, 39, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 52, 88, 49,
+			58, 35, 47, 69, 39, 72, 6, 36, 89, 0, 0, 16, 3, 95, 57, 67, 50, 39, 84, 36, 89, 6, 36, 50, 47, 39, 0, 0, 0, 0,
+			6, 195, 4, 229, 5, 76, 0, 0, 0, 0, 15, 3, 95, 53, 88, 89, 37, 50, 49, 39, 72, 6, 36, 89, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 13, 3, 95, 54, 88, 89, 36, 89, 72, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 3, 95, 56, 88, 39, 47, 39, 72, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80, 76, 0, 14, 3,
+			95, 57, 88, 50, 39, 84, 36, 72, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 168, 43, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 77, 84, 18, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 39, 50, 0, 0, 0, 0, 11, 4, 95, 48, 77, 49,
+			65, 6, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 244, 192, 76, 6, 195, 56, 244, 192, 76, 6, 195, 77,
+			84, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 48, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 25, 32, 78,
+			76, 84, 192, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 76, 80, 76, 5, 194, 56, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 77, 80, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 5, 194, 60, 224, 76, 0, 0, 0, 0, 10, 2, 194, 176, 81, 34, 35, 72, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 81, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 76, 144, 76, 28, 0, 0, 0, 0, 0, 0, 7, 196, 24, 83, 9, 76, 15,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 243, 79, 76, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 12, 243, 148, 72,
+			16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 243, 128, 76, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 64, 84, 128, 76, 0, 10, 2, 95, 46, 48, 40, 50, 47, 39, 0, 0, 0, 12, 2, 95, 44, 84, 37, 52,
+			81, 40, 55, 35, 0, 0, 9, 2, 95, 51, 47, 69, 6, 36, 0, 0, 8, 2, 95, 50, 72, 6, 40, 0, 0, 8, 2, 95, 49, 6,
+			40, 50, 0, 0, 10, 2, 95, 48, 88, 6, 36, 34, 39, 0, 0, 10, 2, 95, 55, 89, 6, 36, 47, 36, 0, 0, 9, 2, 95, 54,
+			89, 6, 36, 89, 0, 0, 11, 2, 95, 53, 89, 6, 37, 50, 49, 39, 0, 0, 12, 2, 95, 52, 49, 58, 6, 35, 47, 69, 39, 0,
+			0, 18, 2, 95, 59, 48, 40, 50, 47, 39, 15, 84, 37, 52, 81, 40, 55, 35, 0, 0, 12, 2, 95, 58, 72, 40, 48, 40, 50, 47,
+			39, 0, 0, 10, 2, 95, 57, 50, 6, 39, 84, 36, 0, 0, 9, 2, 95, 56, 6, 39, 47, 39, 0, 0, 0, 0, 0, 0, 8, 197,
+			20, 225, 204, 21, 48, 15, 0, 0, 0, 0, 0, 0, 0, 7, 195, 4, 98, 78, 76, 28, 0, 0, 0, 0, 0, 6, 195, 4, 48, 192,
+			13, 0, 7, 196, 76, 148, 131, 4, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 2, 95, 97, 6, 35, 0, 0, 0, 0, 0, 7, 2, 95, 101, 6, 36, 0, 0, 0, 0, 0, 0, 0, 7, 2, 95, 111, 6, 39,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 53, 1, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 53, 18, 4, 76, 0, 0, 0,
+			8, 197, 13, 80, 78, 16, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0,
+			0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20,
+			0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0,
+			6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0,
+			0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0,
+			0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20,
+			0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0,
+			6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0,
+			0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0,
+			0, 0, 0, 0, 6, 97, 0, 2, 17, 67, 29, 3, 6, 35, 0, 117, 2, 29, 3, 6, 114, 0, 105, 2, 29, 3, 6, 117, 0, 3,
+			35, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 7, 6, 100, 0, 3, 72,
+			0, 106, 3, 75, 0, 7, 6, 101, 0, 2, 17, 67, 29, 3, 6, 36, 0, 117, 2, 29, 3, 6, 115, 0, 4, 3, 36, 0, 105, 8,
+			0, 117, 3, 115, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0,
+			2, 17, 67, 29, 3, 6, 37, 0, 1, 21, 2, 17, 65, 32, 3, 8, 37, 0, 3, 37, 0, 4, 1, 17, 65, 2, 17, 65, 3, 57,
+			0, 1, 108, 17, 65, 2, 17, 65, 0, 1, 110, 17, 65, 2, 17, 65, 0, 8, 2, 17, 65, 0, 7, 6, 106, 0, 4, 3, 90, 0,
+			1, 17, 65, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 110, 8, 2, 101, 109, 3, 50, 0,
+			3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 4, 2, 99, 3, 68, 0, 2, 103, 0, 103, 2, 29, 0, 7, 6, 111, 0, 2, 17, 67,
+			29, 3, 6, 39, 0, 105, 2, 29, 3, 6, 120, 0, 4, 3, 39, 0, 117, 0, 105, 3, 120, 0, 7, 6, 112, 0, 8, 2, 115, 17,
+			65, 3, 0, 3, 48, 0, 114, 101, 8, 2, 105, 3, 48, 69, 36, 0, 114, 111, 8, 2, 105, 3, 48, 69, 39, 0, 104, 8, 3, 83,
+			0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0, 2, 17, 67, 3, 52, 0, 3, 69, 0, 101, 8, 2, 105, 3, 69, 36, 0, 7,
+			6, 115, 0, 1, 29, 2, 32, 14, 128, 128, 129, 3, 6, 36, 89, 0, 4, 3, 89, 0, 2, 32, 14, 128, 128, 129, 0, 2, 32, 28,
+			17, 12, 0, 117, 112, 114, 97, 8, 3, 89, 40, 48, 69, 35, 0, 7, 6, 116, 0, 3, 47, 0, 120, 3, 76, 0, 7, 6, 117, 0,
+			2, 17, 67, 29, 3, 6, 40, 0, 4, 1, 21, 2, 97, 32, 3, 8, 40, 0, 1, 21, 2, 101, 32, 0, 1, 21, 2, 111, 32, 0,
+			3, 40, 0, 4, 1, 17, 65, 2, 17, 65, 3, 58, 0, 1, 99, 2, 17, 65, 12, 0, 1, 103, 2, 17, 65, 12, 0, 8, 2, 17,
+			65, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 91, 0, 7, 6, 121, 0, 1, 17, 67,
+			2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 161, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0,
+			195, 173, 3, 7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 186, 3, 7, 40, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts40 = FileInMemory_createWithData (2870, reinterpret_cast<const char *> (&espeakdata_dicts40_data), 
+			U"espeak-1.48.04-source/espeak-data/lfn_dict", 
+			U"lfn");
+		my addItem_move (espeakdata_dicts40.move());
 
-		static unsigned char espeakdata_dicts38_data[5185] = {
-			0, 4, 0, 0, 87, 12, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 0, 7, 65, 8, 71, 38, 112, 0, 0,
-			0, 0, 0, 7, 65, 12, 133, 38, 112, 0, 0, 0, 0, 0, 6, 65, 16, 135, 112, 0, 0, 0, 0, 0, 6, 65, 20, 36, 35, 0,
-			0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 112, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0,
-			0, 0, 0, 0, 13, 1, 36, 72, 6, 117, 137, 36, 34, 38, 37, 89, 0, 5, 65, 36, 37, 0, 0, 13, 1, 37, 48, 34, 6, 116,
-			133, 36, 50, 47, 121, 0, 0, 0, 0, 7, 65, 40, 57, 39, 47, 0, 0, 0, 14, 1, 42, 90, 84, 121, 81, 90, 72, 6, 118, 47,
-			112, 0, 0, 10, 1, 43, 48, 38, 137, 6, 40, 89, 0, 13, 67, 76, 21, 133, 89, 35, 84, 38, 6, 110, 10, 0, 0, 6, 65, 44,
-			49, 35, 0, 0, 0, 0, 25, 1, 47, 135, 36, 91, 37, 136, 6, 114, 136, 37, 89, 10, 71, 34, 119, 49, 38, 97, 50, 6, 115, 89,
-			0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65, 0, 0, 11, 67, 53, 83, 83, 65, 118, 65, 89, 10, 0,
-			0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 5, 193, 60, 72, 8, 5, 65, 60, 117, 0, 0, 9, 1, 61, 137, 6, 115,
-			81, 40, 0, 0, 0, 0, 9, 1, 64, 6, 110, 47, 35, 9, 0, 7, 65, 64, 48, 38, 112, 0, 0, 0, 0, 0, 6, 65, 68, 49,
-			119, 0, 0, 0, 0, 0, 6, 65, 72, 36, 34, 0, 0, 0, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0, 6, 65, 80, 134,
-			112, 0, 0, 0, 11, 70, 12, 243, 148, 36, 229, 69, 21, 0, 10, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 7, 65, 88, 84,
-			38, 112, 0, 0, 0, 0, 20, 4, 95, 49, 77, 52, 47, 34, 38, 37, 137, 37, 57, 6, 117, 50, 35, 89, 10, 0, 0, 24, 1, 92,
-			49, 121, 34, 38, 6, 114, 136, 37, 89, 10, 71, 34, 119, 49, 38, 97, 50, 6, 115, 89, 0, 16, 65, 92, 135, 84, 38, 6, 37, 81,
-			40, 71, 35, 10, 84, 112, 0, 0, 0, 0, 0, 19, 4, 95, 49, 77, 49, 47, 6, 119, 49, 89, 47, 35, 50, 134, 37, 89, 10, 0,
-			7, 65, 96, 37, 49, 89, 0, 0, 19, 4, 95, 49, 77, 50, 65, 38, 37, 137, 37, 57, 6, 117, 50, 35, 89, 10, 0, 0, 20, 4,
-			95, 49, 77, 51, 65, 38, 37, 137, 37, 57, 6, 109, 34, 72, 35, 89, 10, 0, 0, 0, 10, 65, 100, 115, 81, 34, 38, 36, 49, 0,
-			0, 0, 0, 0, 6, 65, 104, 94, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			8, 197, 52, 19, 137, 52, 144, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 195, 8, 85, 0, 72, 8, 0, 7, 196, 53, 83, 73, 76, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 72, 80, 68, 21, 32, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 17, 4, 95, 4, 16, 20, 10, 49, 35, 71, 137, 6, 36, 137, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 196, 41, 83, 73, 76, 66, 0, 0, 0, 0, 0, 0, 0, 6, 195, 9, 69, 128, 17, 10, 67, 80, 21,
-			64, 47, 108, 123, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 67, 48, 145, 84, 137, 127, 47,
-			6, 118, 84, 38, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 66, 29, 32, 81, 34, 6, 108, 37, 49, 119, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 69, 53, 83, 89, 76, 80, 65, 40, 65, 38, 115, 95, 6, 110, 10, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 12, 19, 131, 20, 192, 21, 0, 10, 0, 0, 0, 0, 0, 13,
-			67, 80, 21, 133, 47, 35, 84, 38, 6, 110, 10, 0, 8, 66, 17, 160, 72, 88, 112, 0, 0, 0, 0, 0, 0, 0, 11, 67, 41, 83,
-			83, 57, 118, 65, 89, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 194, 37, 32, 72, 8, 0, 12, 3, 226, 130, 172, 6, 110, 40, 34, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 66, 20, 192, 36, 137, 36, 49, 47, 34, 39, 136, 37, 136, 37,
-			89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 9, 134, 19, 1, 22, 196, 153, 19, 66, 0, 0, 0, 0, 18, 3, 95, 51, 88, 47, 34, 38, 6, 114, 89, 135, 36, 97, 37, 65,
-			47, 0, 0, 19, 5, 95, 48, 77, 66, 49, 47, 6, 119, 49, 89, 47, 35, 50, 78, 40, 10, 0, 12, 3, 95, 48, 67, 97, 37, 65,
-			47, 121, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 67, 97, 37, 65, 47, 35, 89, 10, 0, 0, 0, 0, 0, 0,
-			0, 18, 3, 95, 49, 57, 72, 36, 84, 38, 115, 136, 6, 117, 137, 37, 49, 35, 0, 0, 17, 3, 95, 49, 56, 35, 91, 47, 124, 136,
-			6, 117, 137, 37, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 49, 49, 84, 38, 127, 50, 6, 124, 137, 37, 49, 35, 0,
-			0, 13, 3, 95, 49, 48, 135, 6, 36, 97, 37, 65, 47, 0, 0, 15, 3, 95, 49, 51, 47, 34, 38, 6, 115, 137, 37, 49, 35, 0,
-			0, 15, 3, 95, 49, 50, 72, 84, 38, 6, 115, 137, 37, 49, 35, 0, 0, 18, 3, 95, 49, 53, 48, 38, 36, 50, 49, 38, 6, 117,
-			137, 37, 49, 35, 0, 0, 19, 3, 95, 49, 52, 49, 38, 36, 47, 40, 34, 38, 6, 117, 137, 37, 49, 35, 0, 0, 18, 3, 95, 49,
-			55, 95, 36, 48, 134, 115, 136, 6, 117, 137, 37, 49, 35, 0, 0, 15, 3, 95, 49, 54, 97, 36, 97, 6, 117, 137, 37, 49, 35, 0,
-			0, 0, 22, 3, 95, 55, 88, 95, 36, 48, 38, 134, 6, 115, 50, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 195, 49, 37, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 50, 88, 72,
-			84, 38, 6, 114, 135, 36, 97, 37, 65, 47, 0, 0, 20, 5, 95, 48, 77, 65, 49, 47, 6, 119, 49, 89, 47, 35, 50, 134, 37, 89,
-			10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 76, 52, 133, 20, 224, 21, 0, 10, 0, 0, 0, 0, 0, 0, 22, 3, 95,
-			52, 88, 49, 38, 6, 113, 47, 40, 34, 38, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 40, 144,
-			57, 114, 10, 0, 0, 22, 3, 95, 53, 88, 48, 38, 6, 110, 68, 38, 49, 38, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 18, 3, 95, 54, 88, 97, 6, 113, 97, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 15, 66, 57, 32, 50, 6, 40, 65, 38, 36, 34, 38, 37, 89, 0, 0, 21, 3, 95, 56, 88, 35,
-			91, 47, 6, 118, 39, 136, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 57, 88, 135, 36,
-			84, 38, 6, 115, 136, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			12, 3, 226, 153, 175, 72, 6, 127, 88, 35, 89, 0, 0, 0, 13, 3, 226, 153, 173, 71, 36, 65, 39, 55, 37, 89, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 67, 52, 19, 133, 65, 35, 136, 6,
-			110, 10, 0, 19, 4, 95, 48, 77, 52, 47, 34, 38, 37, 137, 37, 57, 6, 117, 50, 121, 10, 0, 0, 0, 18, 4, 95, 48, 77, 50,
-			65, 38, 37, 137, 37, 57, 6, 117, 50, 121, 10, 0, 0, 11, 67, 52, 19, 128, 65, 108, 35, 50, 10, 0, 19, 4, 95, 48, 77, 51,
-			65, 38, 37, 137, 37, 57, 6, 109, 34, 72, 121, 10, 0, 0, 0, 18, 4, 95, 48, 77, 49, 47, 6, 119, 49, 89, 47, 35, 50, 78,
-			122, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 179, 0, 17, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95, 194,
-			171, 55, 123, 90, 47, 6, 114, 50, 112, 89, 10, 49, 35, 71, 6, 118, 47, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 18, 69, 80,
-			21, 153, 40, 80, 47, 35, 84, 38, 115, 57, 38, 6, 110, 10, 0, 0, 0, 13, 67, 48, 245, 0, 55, 39, 47, 6, 115, 50, 119, 0,
-			0, 0, 0, 0, 0, 0, 9, 134, 20, 1, 22, 196, 153, 19, 66, 9, 134, 13, 1, 14, 196, 153, 19, 66, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95,
-			194, 187, 55, 123, 90, 47, 6, 114, 50, 112, 89, 10, 49, 35, 71, 6, 118, 47, 112, 89, 0, 0, 0, 0, 0, 0, 14, 2, 196, 133,
-			109, 10, 50, 117, 95, 6, 37, 136, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 196, 141, 78, 112, 0, 0, 0, 0, 0, 0,
-			0, 13, 2, 194, 167, 89, 6, 110, 49, 133, 37, 57, 35, 0, 6, 2, 196, 151, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 21, 2, 194, 169, 123, 47, 39, 34, 6, 114, 50, 112, 89, 15, 47, 6, 122, 89, 112, 89, 0, 15, 2, 196, 153, 36,
-			35, 10, 50, 117, 95, 6, 37, 136, 112, 0, 0, 16, 2, 194, 182, 48, 35, 34, 35, 81, 34, 6, 109, 83, 35, 89, 0, 0, 0, 0,
-			0, 0, 0, 14, 2, 194, 176, 55, 6, 108, 121, 48, 89, 50, 37, 89, 0, 0, 15, 2, 194, 177, 48, 55, 40, 89, 10, 65, 37, 50,
-			40, 89, 0, 0, 26, 2, 194, 190, 47, 34, 6, 115, 89, 15, 49, 38, 36, 134, 84, 38, 37, 34, 47, 6, 35, 72, 35, 137, 122, 0,
-			0, 6, 2, 196, 175, 115, 0, 0, 21, 2, 194, 188, 49, 38, 36, 134, 84, 38, 37, 34, 47, 6, 35, 72, 35, 137, 37, 89, 0, 0,
-			10, 2, 194, 189, 48, 6, 118, 89, 112, 0, 0, 0, 0, 0, 7, 2, 197, 161, 36, 91, 0, 0, 0, 0, 0, 0, 0, 14, 2, 197,
-			171, 119, 10, 37, 55, 81, 6, 117, 57, 37, 0, 0, 0, 0, 0, 0, 8, 66, 81, 80, 47, 118, 10, 0, 0, 0, 0, 14, 2, 197,
-			179, 119, 10, 50, 117, 95, 6, 37, 136, 112, 0, 0, 0, 0, 7, 2, 197, 190, 96, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 49, 69, 128, 17, 0, 0, 0, 0, 0, 0, 18, 69, 76, 21, 153, 40, 80, 89, 35, 84, 38, 115,
-			57, 38, 6, 110, 10, 0, 0, 0, 12, 71, 52, 17, 206, 36, 98, 69, 72, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 1, 197, 161, 108, 91, 10, 0, 0, 0, 0, 0, 0, 14, 67,
-			72, 18, 128, 34, 35, 57, 6, 116, 50, 35, 89, 0, 0, 0, 0, 0, 0, 22, 2, 95, 34, 134, 6, 127, 95, 39, 95, 39, 89, 10,
-			49, 35, 71, 6, 118, 47, 112, 89, 0, 0, 14, 2, 95, 33, 91, 123, 49, 47, 6, 118, 49, 35, 89, 0, 0, 0, 16, 2, 95, 39,
-			35, 48, 39, 89, 47, 34, 6, 116, 83, 35, 89, 0, 0, 0, 0, 0, 0, 0, 16, 2, 95, 41, 95, 49, 38, 137, 6, 110, 58, 89,
-			47, 35, 89, 0, 0, 16, 2, 95, 40, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 12, 2, 95, 46, 47, 6, 35,
-			91, 49, 35, 89, 0, 0, 11, 2, 95, 45, 65, 6, 114, 50, 40, 89, 0, 0, 14, 2, 95, 44, 49, 35, 71, 137, 6, 36, 137, 37,
-			89, 0, 0, 9, 2, 95, 51, 47, 34, 115, 89, 0, 0, 7, 2, 95, 50, 72, 40, 0, 0, 12, 2, 95, 49, 84, 38, 6, 127, 50,
-			35, 89, 0, 0, 11, 2, 95, 48, 50, 6, 40, 137, 37, 89, 0, 0, 13, 2, 95, 55, 95, 36, 48, 134, 115, 136, 6, 114, 0, 0,
-			10, 2, 95, 54, 97, 36, 91, 6, 114, 0, 0, 12, 2, 95, 53, 48, 38, 36, 50, 49, 6, 114, 0, 0, 13, 2, 95, 52, 49, 38,
-			36, 47, 40, 34, 6, 114, 0, 0, 19, 2, 95, 59, 49, 35, 71, 38, 137, 6, 36, 47, 35, 91, 49, 38, 37, 89, 0, 0, 17, 2,
-			95, 58, 135, 84, 38, 6, 114, 47, 35, 91, 49, 38, 37, 89, 0, 0, 12, 2, 95, 57, 135, 36, 84, 115, 136, 6, 114, 0, 0, 12,
-			2, 95, 56, 35, 91, 47, 124, 136, 6, 114, 0, 0, 15, 2, 95, 63, 49, 55, 123, 89, 47, 6, 118, 49, 35, 89, 0, 0, 0, 0,
-			0, 0, 0, 0, 9, 2, 95, 64, 6, 110, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 14, 4, 95, 4, 15, 20, 47, 6, 35, 91, 49, 35, 89, 0, 0, 0, 0, 27, 2, 95, 91, 55, 123, 90, 134, 6, 114, 38, 50,
-			37, 89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 0, 0, 27, 2, 95, 95, 48, 35, 71, 34, 123, 49, 38,
-			6, 114, 65, 39, 10, 71, 34, 119, 49, 38, 97, 50, 6, 115, 89, 0, 0, 15, 2, 95, 94, 91, 35, 49, 50, 6, 114, 89, 10, 37,
-			91, 0, 0, 27, 2, 95, 93, 55, 123, 90, 134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 92, 147, 132, 61, 116, 192, 21, 0, 10, 0, 10,
-			67, 40, 148, 192, 57, 114, 89, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 2, 95, 123, 34, 127, 89, 134, 6, 114, 38, 50, 37,
-			89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 0, 0, 0, 11, 2, 95, 126, 47, 6, 114, 55, 72, 112, 0,
-			0, 27, 2, 95, 125, 34, 127, 89, 134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 17, 69,
-			41, 83, 89, 76, 80, 57, 40, 65, 38, 115, 95, 6, 110, 10, 0, 0, 0, 11, 70, 24, 148, 133, 24, 246, 0, 21, 0, 10, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 197, 76, 21, 137, 52, 144, 67, 8, 197, 80, 21, 137, 52, 144, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 226, 192, 17, 0, 0, 17, 69, 52, 19, 153, 40,
-			80, 65, 35, 136, 115, 57, 38, 6, 110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 4, 197, 190, 75, 112,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 76, 21, 64, 89, 108, 123, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 100, 197, 190, 0, 197, 190, 0, 100, 122, 0, 98, 0, 100, 0, 103, 0, 122, 0,
-			104, 0, 7, 6, 18, 67, 197, 161, 0, 99, 104, 0, 196, 141, 0, 112, 0, 116, 0, 107, 0, 115, 0, 99, 0, 102, 0, 7, 6, 18,
-			69, 100, 197, 190, 0, 197, 190, 0, 100, 122, 0, 197, 161, 0, 99, 104, 0, 196, 141, 0, 98, 0, 100, 0, 103, 0, 122, 0, 104, 0,
-			112, 0, 116, 0, 107, 0, 115, 0, 99, 0, 102, 0, 108, 0, 109, 0, 110, 0, 114, 0, 106, 0, 118, 0, 7, 6, 18, 70, 196, 133,
-			0, 196, 153, 0, 196, 151, 0, 196, 175, 0, 197, 179, 0, 197, 171, 0, 97, 0, 101, 0, 105, 0, 121, 0, 111, 0, 117, 0, 7, 6,
-			18, 71, 196, 175, 0, 196, 153, 0, 196, 151, 0, 105, 0, 121, 0, 101, 0, 7, 6, 18, 75, 105, 117, 111, 115, 101, 0, 105, 97, 109,
-			115, 0, 105, 97, 105, 115, 0, 105, 117, 105, 0, 121, 106, 101, 0, 105, 97, 105, 0, 105, 197, 179, 0, 105, 117, 115, 0, 105, 115, 0,
-			105, 111, 0, 196, 175, 0, 105, 117, 0, 121, 106, 0, 121, 0, 7, 6, 18, 76, 105, 97, 109, 115, 0, 105, 97, 105, 115, 0, 105, 117,
-			111, 115, 0, 105, 97, 115, 0, 105, 117, 105, 0, 105, 196, 133, 0, 121, 106, 101, 0, 105, 97, 105, 0, 105, 197, 179, 0, 105, 117, 115,
-			0, 105, 111, 0, 105, 117, 0, 121, 106, 0, 121, 0, 7, 6, 18, 77, 117, 111, 115, 101, 0, 97, 109, 115, 0, 97, 105, 115, 0, 97,
-			115, 0, 117, 105, 0, 196, 133, 0, 97, 105, 0, 197, 179, 0, 117, 115, 0, 111, 0, 117, 0, 101, 0, 7, 6, 18, 78, 111, 109, 105,
-			115, 0, 111, 106, 101, 0, 111, 109, 115, 0, 111, 115, 101, 0, 111, 115, 0, 97, 105, 0, 196, 133, 0, 111, 106, 0, 111, 115, 0, 197,
-			179, 0, 97, 115, 0, 97, 0, 7, 6, 18, 79, 196, 151, 109, 105, 115, 0, 196, 151, 106, 101, 0, 196, 151, 109, 115, 0, 196, 151, 115,
-			101, 0, 196, 151, 115, 0, 196, 151, 106, 0, 105, 197, 179, 0, 196, 151, 109, 0, 196, 151, 0, 101, 105, 0, 196, 153, 0, 101, 0, 7,
-			6, 18, 86, 196, 141, 0, 116, 0, 7, 6, 18, 87, 100, 197, 190, 0, 100, 0, 7, 6, 196, 133, 0, 3, 109, 0, 7, 6, 196, 141,
-			0, 3, 76, 0, 2, 18, 71, 3, 78, 0, 7, 6, 196, 151, 0, 4, 3, 112, 0, 8, 112, 111, 107, 2, 196, 141, 105, 18, 78, 32,
-			0, 4, 1, 21, 2, 106, 18, 77, 32, 3, 112, 8, 0, 1, 21, 2, 106, 18, 78, 32, 0, 1, 21, 2, 110, 18, 77, 32, 0, 1,
-			21, 2, 110, 18, 79, 32, 0, 1, 21, 2, 196, 141, 105, 18, 78, 32, 0, 7, 6, 196, 153, 0, 3, 113, 0, 7, 6, 196, 175, 0,
-			3, 115, 0, 7, 6, 197, 161, 0, 2, 18, 66, 3, 90, 0, 4, 3, 91, 0, 197, 161, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3,
-			97, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 197, 171, 0, 4, 1, 21, 2, 107, 197, 161, 18, 86, 18, 75, 32, 3,
-			118, 8, 40, 0, 1, 21, 2, 107, 197, 161, 18, 86, 18, 79, 32, 0, 3, 119, 0, 7, 6, 197, 179, 0, 3, 119, 0, 7, 6, 197,
-			190, 0, 115, 3, 89, 0, 4, 3, 90, 0, 197, 190, 0, 4, 2, 18, 67, 3, 91, 0, 2, 32, 0, 197, 161, 0, 4, 2, 17, 67,
-			17, 67, 18, 71, 3, 96, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 97, 0, 4, 3, 35, 0, 2, 105, 122, 109, 18,
-			77, 32, 0, 4, 105, 1, 21, 2, 18, 86, 18, 75, 32, 3, 35, 8, 114, 0, 105, 1, 21, 2, 18, 86, 18, 79, 32, 0, 4, 105,
-			1, 21, 2, 110, 18, 75, 32, 3, 108, 8, 37, 0, 105, 1, 21, 2, 110, 18, 79, 32, 0, 105, 8, 109, 101, 190, 197, 2, 18, 86,
-			18, 75, 32, 0, 105, 8, 109, 101, 190, 197, 2, 18, 86, 18, 79, 32, 0, 105, 8, 116, 161, 197, 107, 117, 97, 2, 18, 86, 18, 75,
-			32, 0, 105, 8, 116, 161, 197, 107, 117, 97, 2, 18, 86, 18, 79, 32, 0, 2, 105, 107, 18, 78, 32, 3, 109, 0, 4, 105, 2, 18,
-			69, 3, 121, 0, 105, 2, 32, 0, 4, 117, 2, 18, 69, 3, 123, 0, 117, 2, 32, 0, 7, 6, 98, 0, 2, 18, 67, 3, 48, 0,
-			3, 71, 0, 4, 2, 17, 67, 18, 71, 3, 71, 38, 0, 2, 18, 71, 0, 7, 6, 99, 0, 104, 3, 101, 0, 104, 2, 18, 71, 3,
-			101, 38, 0, 3, 133, 0, 2, 18, 71, 3, 133, 38, 0, 7, 6, 100, 0, 4, 2, 18, 67, 3, 47, 0, 2, 32, 0, 3, 72, 0,
-			122, 3, 72, 88, 0, 122, 2, 18, 71, 3, 72, 94, 0, 197, 190, 3, 75, 0, 197, 190, 2, 18, 71, 3, 77, 0, 2, 18, 71, 3,
-			135, 0, 7, 6, 101, 0, 3, 36, 0, 105, 1, 21, 2, 118, 18, 78, 32, 3, 36, 8, 114, 0, 105, 3, 38, 122, 0, 7, 6, 102,
-			0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 18, 67, 3, 49, 0, 2, 32, 0, 4, 3, 81, 0, 103, 0, 7, 6, 104, 0, 3, 107,
-			0, 7, 6, 105, 0, 97, 3, 36, 0, 3, 37, 0, 4, 97, 1, 99, 2, 99, 105, 106, 18, 78, 32, 3, 37, 57, 35, 0, 97, 1,
-			99, 2, 108, 18, 77, 32, 0, 2, 17, 65, 3, 38, 0, 4, 1, 97, 2, 107, 18, 78, 32, 3, 57, 37, 0, 1, 97, 2, 122, 109,
-			18, 77, 32, 0, 1, 111, 2, 107, 18, 78, 32, 0, 4, 101, 2, 197, 161, 107, 3, 57, 127, 0, 101, 8, 2, 118, 0, 101, 8, 2,
-			197, 161, 109, 0, 101, 1, 21, 2, 110, 18, 78, 32, 3, 114, 8, 36, 0, 4, 101, 3, 127, 0, 101, 8, 116, 117, 97, 106, 2, 110,
-			18, 78, 32, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 4, 3, 49, 0, 107, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3,
-			49, 38, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 2, 18, 66, 3, 81, 0, 7, 6, 108, 0, 3, 55, 0, 4, 2, 17, 67,
-			17, 67, 18, 71, 3, 137, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 0, 4, 2, 17,
-			67, 17, 67, 18, 71, 3, 65, 38, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 110, 0, 4, 3, 50, 0, 110, 0, 4,
-			2, 17, 67, 17, 67, 18, 71, 3, 136, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 111, 0, 1, 102, 2, 110, 18, 77,
-			32, 3, 116, 8, 0, 3, 117, 0, 2, 107, 197, 161, 110, 18, 75, 32, 3, 117, 8, 0, 7, 6, 112, 0, 4, 3, 48, 0, 112, 0,
-			4, 2, 17, 67, 17, 67, 18, 71, 3, 48, 38, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 2, 18, 66, 3, 71, 0, 7, 6,
-			113, 0, 2, 18, 71, 3, 49, 38, 84, 38, 0, 3, 49, 84, 0, 7, 6, 114, 0, 4, 3, 34, 0, 114, 0, 4, 2, 17, 67, 17,
-			67, 18, 71, 3, 34, 38, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 115, 0, 2, 18, 66, 3, 88, 0, 4, 3, 89,
-			0, 115, 0, 197, 161, 3, 91, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 95, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7,
-			6, 116, 0, 4, 3, 47, 0, 116, 0, 2, 18, 66, 3, 72, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 134, 0, 2, 17, 67, 18,
-			71, 0, 2, 18, 71, 0, 7, 6, 117, 0, 3, 40, 0, 111, 1, 21, 2, 109, 101, 110, 18, 79, 32, 3, 118, 8, 39, 0, 111, 3,
-			124, 0, 105, 3, 126, 0, 7, 6, 118, 0, 3, 84, 0, 2, 18, 71, 3, 84, 38, 0, 7, 6, 119, 0, 3, 84, 0, 2, 18, 71,
-			3, 84, 38, 0, 7, 6, 120, 0, 2, 18, 71, 3, 49, 38, 95, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 115, 0, 4, 1, 21,
-			2, 18, 86, 18, 75, 32, 3, 115, 8, 0, 1, 21, 2, 18, 86, 18, 79, 32, 0, 1, 21, 2, 98, 18, 78, 32, 0, 1, 21, 2,
-			98, 18, 79, 32, 0, 1, 109, 117, 21, 2, 110, 18, 77, 32, 0, 1, 110, 101, 21, 2, 98, 18, 79, 32, 0, 8, 112, 97, 2, 21,
-			0, 7, 6, 122, 0, 3, 88, 0, 2, 18, 67, 3, 89, 0, 2, 100, 197, 190, 3, 90, 0, 2, 196, 141, 3, 91, 0, 4, 2, 17,
-			67, 18, 71, 3, 94, 0, 2, 18, 71, 0, 7, 6, 206, 0, 177, 3, 6, 35, 55, 83, 35, 10, 0, 181, 3, 6, 36, 48, 95, 37,
-			55, 39, 50, 10, 0, 191, 3, 6, 39, 65, 38, 37, 49, 34, 39, 50, 10, 0, 183, 3, 36, 47, 35, 10, 0, 186, 3, 49, 6, 35,
-			48, 35, 10, 0, 190, 3, 49, 95, 6, 37, 10, 0, 185, 3, 57, 39, 47, 35, 10, 0, 188, 3, 65, 38, 6, 37, 10, 0, 178, 3,
-			71, 38, 6, 36, 47, 35, 10, 0, 179, 3, 81, 6, 109, 65, 35, 10, 0, 182, 3, 94, 6, 36, 47, 35, 10, 0, 184, 3, 134, 36,
-			47, 35, 10, 0, 180, 3, 135, 6, 36, 55, 47, 35, 10, 0, 189, 3, 136, 6, 37, 10, 0, 187, 3, 137, 6, 35, 65, 72, 35, 10,
-			0, 7, 6, 207, 0, 133, 3, 6, 37, 48, 95, 37, 55, 39, 50, 10, 0, 129, 3, 34, 6, 39, 10, 0, 137, 3, 39, 65, 6, 36,
-			81, 35, 10, 0, 132, 3, 47, 6, 128, 10, 0, 128, 3, 48, 38, 6, 115, 10, 0, 136, 3, 48, 95, 6, 37, 10, 0, 134, 3, 83,
-			38, 6, 37, 10, 0, 4, 130, 3, 95, 6, 37, 81, 65, 35, 10, 0, 131, 0, 135, 3, 101, 38, 6, 37, 10, 0, 7, 6, 0, 4,
-			33, 2, 33, 3, 0, 4, 35, 1, 35, 3, 0, 4, 39, 3, 0, 4, 46, 1, 46, 3, 0, 58, 1, 32, 15, 2, 32, 15, 15, 32,
-			3, 0, 46, 2, 46, 3, 9, 0, 46, 3, 9, 47, 6, 35, 91, 49, 35, 89, 0, 33, 3, 9, 91, 123, 49, 47, 6, 118, 49, 35,
-			89, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 35, 1, 35, 35, 2, 32, 3,
-			24, 0, 60, 61, 3, 65, 35, 96, 6, 123, 10, 35, 34, 71, 6, 108, 10, 55, 115, 81, 40, 0, 45, 8, 32, 2, 32, 15, 3, 65,
-			37, 50, 40, 89, 0, 62, 61, 3, 72, 123, 81, 38, 6, 123, 10, 35, 34, 71, 6, 108, 10, 137, 115, 81, 40, 0, 58, 3, 135, 84,
-			38, 6, 114, 47, 35, 97, 49, 38, 37, 89, 0, 33, 61, 3, 136, 36, 137, 6, 115, 81, 40, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts38 = FileInMemory_createWithData (5184, reinterpret_cast<const char *> (&espeakdata_dicts38_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/lt_dict", 
+		static unsigned char espeakdata_dicts41_data[5172] = {
+			0, 4, 0, 0, 74, 12, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 0, 0, 0, 7, 65, 8, 71, 38, 112, 0, 0,
+			0, 0, 0, 7, 65, 12, 133, 38, 112, 0, 0, 0, 0, 0, 6, 65, 16, 135, 112, 0, 0, 0, 0, 17, 4, 95, 100, 112, 116, 10,
+			49, 35, 71, 137, 6, 36, 137, 37, 89, 0, 0, 6, 65, 20, 36, 35, 0, 0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0,
+			0, 6, 65, 28, 81, 112, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 0, 13, 1, 36, 72, 6, 117, 137, 36, 34,
+			38, 37, 89, 0, 5, 65, 36, 37, 0, 0, 13, 1, 37, 48, 34, 6, 116, 133, 36, 50, 47, 121, 0, 0, 0, 0, 7, 65, 40, 57,
+			39, 47, 0, 0, 0, 14, 1, 42, 90, 84, 121, 81, 90, 72, 6, 118, 47, 112, 0, 0, 10, 1, 43, 48, 38, 137, 6, 40, 89, 0,
+			0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 25, 1, 47, 135, 36, 91, 37, 136, 6, 114, 136, 37, 89, 10, 71, 34, 119, 49, 38, 97,
+			50, 6, 115, 89, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 8, 197, 52, 19, 137, 52, 144, 67, 0, 0, 6, 65, 52, 36, 65, 0,
+			0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 5, 193, 60, 72, 8, 5, 65, 60, 117, 0, 0, 9, 1, 61, 137, 6,
+			115, 81, 40, 0, 0, 0, 0, 9, 1, 64, 6, 110, 47, 35, 9, 0, 7, 65, 64, 48, 38, 112, 0, 0, 0, 0, 0, 6, 65, 68,
+			49, 119, 0, 0, 0, 0, 0, 6, 65, 72, 36, 34, 0, 0, 0, 0, 14, 4, 95, 100, 111, 116, 47, 6, 35, 91, 49, 35, 89, 0,
+			0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0, 6, 65, 80, 134, 112, 0, 0, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0,
+			7, 65, 88, 84, 38, 112, 0, 0, 0, 0, 20, 4, 95, 49, 77, 52, 47, 34, 38, 37, 137, 37, 57, 6, 117, 50, 35, 89, 10, 0,
+			0, 24, 1, 92, 49, 121, 34, 38, 6, 114, 136, 37, 89, 10, 71, 34, 119, 49, 38, 97, 50, 6, 115, 89, 0, 16, 65, 92, 135, 84,
+			38, 6, 37, 81, 40, 71, 35, 10, 84, 112, 0, 0, 0, 0, 14, 67, 48, 145, 84, 137, 127, 47, 6, 118, 84, 38, 119, 0, 0, 19,
+			4, 95, 49, 77, 49, 47, 6, 119, 49, 89, 47, 35, 50, 134, 37, 89, 10, 0, 7, 65, 96, 37, 49, 89, 0, 0, 19, 4, 95, 49,
+			77, 50, 65, 38, 37, 137, 37, 57, 6, 117, 50, 35, 89, 10, 0, 0, 20, 4, 95, 49, 77, 51, 65, 38, 37, 137, 37, 57, 6, 109,
+			34, 72, 35, 89, 10, 0, 0, 0, 10, 65, 100, 115, 81, 34, 38, 36, 49, 0, 0, 0, 0, 0, 6, 65, 104, 94, 112, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 85, 0, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 7, 80, 108, 91, 10, 0, 0, 0, 0, 17, 69, 53, 83, 89, 76, 80,
+			65, 40, 65, 38, 115, 95, 6, 110, 10, 0, 0, 0, 0, 0, 6, 195, 9, 69, 128, 13, 10, 67, 80, 21, 64, 47, 108, 123, 10, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 66,
+			29, 32, 81, 34, 6, 108, 37, 49, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 53, 83,
+			73, 76, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 17, 160, 72, 88, 112, 0, 0, 0, 0,
+			0, 0, 12, 67, 52, 19, 133, 65, 35, 136, 6, 110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 8, 197, 76, 21, 137, 52, 144, 67, 8, 197, 80, 21, 137, 52, 144, 67, 0, 0, 7, 196, 80, 21, 177, 76, 66, 0, 0, 0,
+			0, 0, 0, 0, 6, 194, 37, 32, 72, 8, 0, 12, 3, 226, 130, 172, 6, 110, 40, 34, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 21, 177, 76, 66, 0, 0, 0, 17, 66, 20, 192, 36, 137, 36,
+			49, 47, 34, 39, 136, 37, 136, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 12, 19, 131, 20, 192, 21, 0, 47, 0, 18, 3, 95, 51, 88, 47, 34,
+			38, 6, 114, 89, 135, 36, 97, 37, 65, 47, 0, 0, 19, 5, 95, 48, 77, 66, 49, 47, 6, 119, 49, 89, 47, 35, 50, 78, 40, 10,
+			0, 12, 3, 95, 48, 67, 97, 37, 65, 47, 121, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 67, 97, 37, 65, 47,
+			35, 89, 10, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 49, 57, 72, 36, 84, 38, 115, 136, 6, 117, 137, 37, 49, 35, 0, 0, 17,
+			3, 95, 49, 56, 35, 91, 47, 124, 136, 6, 117, 137, 37, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 49, 49, 84, 38,
+			127, 50, 6, 124, 137, 37, 49, 35, 0, 0, 13, 3, 95, 49, 48, 135, 6, 36, 97, 37, 65, 47, 0, 0, 15, 3, 95, 49, 51, 47,
+			34, 38, 6, 115, 137, 37, 49, 35, 0, 0, 15, 3, 95, 49, 50, 72, 84, 38, 6, 115, 137, 37, 49, 35, 0, 0, 18, 3, 95, 49,
+			53, 48, 38, 36, 50, 49, 38, 6, 117, 137, 37, 49, 35, 0, 0, 19, 3, 95, 49, 52, 49, 38, 36, 47, 40, 34, 38, 6, 117, 137,
+			37, 49, 35, 0, 0, 18, 3, 95, 49, 55, 95, 36, 48, 134, 115, 136, 6, 117, 137, 37, 49, 35, 0, 0, 15, 3, 95, 49, 54, 97,
+			36, 97, 6, 117, 137, 37, 49, 35, 0, 0, 0, 22, 3, 95, 55, 88, 95, 36, 48, 38, 134, 6, 115, 50, 36, 94, 135, 36, 97, 37,
+			65, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 49, 37, 0, 13, 0, 0, 13, 67, 76, 21, 133, 89, 35, 84, 38,
+			6, 110, 10, 0, 13, 67, 80, 21, 133, 47, 35, 84, 38, 6, 110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+			3, 95, 50, 88, 72, 84, 38, 6, 114, 135, 36, 97, 37, 65, 47, 0, 0, 10, 69, 72, 80, 68, 21, 32, 21, 0, 47, 20, 5, 95,
+			48, 77, 65, 49, 47, 6, 119, 49, 89, 47, 35, 50, 134, 37, 89, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 22, 3, 95, 52, 88, 49, 38, 6, 113, 47, 40, 34, 38, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 0, 0, 0, 0,
+			0, 8, 66, 40, 144, 57, 114, 10, 0, 0, 22, 3, 95, 53, 88, 48, 38, 6, 110, 68, 38, 49, 38, 36, 94, 135, 36, 97, 37, 65,
+			47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 54, 88, 97, 6, 113, 97, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 66, 57, 32, 50, 6, 40, 65, 38, 36, 34, 38, 37, 89, 0, 0, 21,
+			3, 95, 56, 88, 35, 91, 47, 6, 118, 39, 136, 36, 94, 135, 36, 97, 37, 65, 47, 0, 0, 0, 11, 67, 41, 83, 83, 57, 118, 65,
+			89, 10, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 57, 88, 135, 36, 84, 38, 6, 115, 136, 36, 94, 135, 36, 97, 37, 65, 47, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 226, 153, 175, 72, 6, 127, 88, 35, 89, 0, 0, 0,
+			13, 3, 226, 153, 173, 71, 36, 65, 39, 55, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 53, 83, 83, 65, 118, 65, 89, 10,
+			0, 0, 0, 7, 66, 19, 144, 75, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 48, 77,
+			52, 47, 34, 38, 37, 137, 37, 57, 6, 117, 50, 121, 10, 0, 0, 0, 18, 4, 95, 48, 77, 50, 65, 38, 37, 137, 37, 57, 6, 117,
+			50, 121, 10, 0, 0, 11, 67, 52, 19, 128, 65, 108, 35, 50, 10, 0, 19, 4, 95, 48, 77, 51, 65, 38, 37, 137, 37, 57, 6, 109,
+			34, 72, 121, 10, 0, 0, 0, 18, 4, 95, 48, 77, 49, 47, 6, 119, 49, 89, 47, 35, 50, 78, 122, 10, 0, 0, 0, 13, 65, 180,
+			109, 10, 50, 117, 95, 6, 37, 136, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 179, 0, 13,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65,
+			188, 78, 112, 0, 0, 0, 0, 24, 3, 95, 194, 171, 55, 123, 90, 47, 6, 114, 50, 112, 89, 10, 49, 35, 71, 6, 118, 47, 112, 89,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 48, 245, 0, 55, 39, 47, 6, 115, 50, 119, 0, 0, 0, 0, 0, 0, 10, 69,
+			76, 52, 133, 20, 224, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95, 194, 187, 55, 123, 90, 47, 6, 114, 50, 112, 89, 10, 49, 35, 71,
+			6, 118, 47, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 167, 89,
+			6, 110, 49, 133, 37, 57, 35, 0, 6, 2, 196, 151, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 2,
+			194, 169, 123, 47, 39, 34, 6, 114, 50, 112, 89, 15, 47, 6, 122, 89, 112, 89, 0, 14, 65, 196, 36, 35, 10, 50, 117, 95, 6, 37,
+			136, 112, 0, 0, 16, 2, 194, 182, 48, 35, 34, 35, 81, 34, 6, 109, 83, 35, 89, 0, 0, 0, 0, 0, 0, 0, 14, 2, 194, 176,
+			55, 6, 108, 121, 48, 89, 50, 37, 89, 0, 0, 15, 2, 194, 177, 48, 55, 40, 89, 10, 65, 37, 50, 40, 89, 0, 0, 26, 2, 194,
+			190, 47, 34, 6, 115, 89, 15, 49, 38, 36, 134, 84, 38, 37, 34, 47, 6, 35, 72, 35, 137, 122, 0, 0, 6, 2, 196, 175, 115, 0,
+			0, 21, 2, 194, 188, 49, 38, 36, 134, 84, 38, 37, 34, 47, 6, 35, 72, 35, 137, 37, 89, 0, 0, 10, 2, 194, 189, 48, 6, 118,
+			89, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 197, 171, 119, 10, 37, 55, 81, 6, 117, 57, 37, 0, 0, 0, 0,
+			0, 0, 8, 66, 81, 80, 47, 118, 10, 0, 0, 0, 0, 14, 2, 197, 179, 119, 10, 50, 117, 95, 6, 37, 136, 112, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 17, 69, 52, 19, 153, 40, 80, 65, 35, 136, 115, 57, 38, 6, 110, 10, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 49, 69, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 67, 72, 18, 128, 34, 35, 57, 6, 116, 50, 35, 89, 0, 0,
+			0, 0, 0, 0, 22, 2, 95, 34, 134, 6, 127, 95, 39, 95, 39, 89, 10, 49, 35, 71, 6, 118, 47, 112, 89, 0, 0, 14, 2, 95,
+			33, 91, 123, 49, 47, 6, 118, 49, 35, 89, 0, 0, 0, 16, 2, 95, 39, 35, 48, 39, 89, 47, 34, 6, 116, 83, 35, 89, 0, 0,
+			0, 0, 0, 0, 0, 16, 2, 95, 41, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 16, 2, 95, 40, 95, 49, 38, 137,
+			6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 12, 2, 95, 46, 47, 6, 35, 91, 49, 35, 89, 0, 0, 11, 2, 95, 45, 65, 6, 114,
+			50, 40, 89, 0, 0, 14, 2, 95, 44, 49, 35, 71, 137, 6, 36, 137, 37, 89, 0, 0, 9, 2, 95, 51, 47, 34, 115, 89, 0, 0,
+			7, 2, 95, 50, 72, 40, 0, 0, 12, 2, 95, 49, 84, 38, 6, 127, 50, 35, 89, 0, 0, 11, 2, 95, 48, 50, 6, 40, 137, 37,
+			89, 0, 0, 13, 2, 95, 55, 95, 36, 48, 134, 115, 136, 6, 114, 0, 0, 10, 2, 95, 54, 97, 36, 91, 6, 114, 0, 0, 12, 2,
+			95, 53, 48, 38, 36, 50, 49, 6, 114, 0, 0, 13, 2, 95, 52, 49, 38, 36, 47, 40, 34, 6, 114, 0, 0, 19, 2, 95, 59, 49,
+			35, 71, 38, 137, 6, 36, 47, 35, 91, 49, 38, 37, 89, 0, 0, 17, 2, 95, 58, 135, 84, 38, 6, 114, 47, 35, 91, 49, 38, 37,
+			89, 0, 0, 12, 2, 95, 57, 135, 36, 84, 115, 136, 6, 114, 0, 0, 12, 2, 95, 56, 35, 91, 47, 124, 136, 6, 114, 0, 0, 15,
+			2, 95, 63, 49, 55, 123, 89, 47, 6, 118, 49, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 64, 6, 110, 47, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 212, 36, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 12,
+			243, 148, 36, 229, 69, 21, 0, 47, 27, 2, 95, 91, 55, 123, 90, 134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6, 110, 58,
+			89, 47, 35, 89, 0, 0, 0, 0, 0, 27, 2, 95, 95, 48, 35, 71, 34, 123, 49, 38, 6, 114, 65, 39, 10, 71, 34, 119, 49, 38,
+			97, 50, 6, 115, 89, 0, 0, 15, 2, 95, 94, 91, 35, 49, 50, 6, 114, 89, 10, 37, 91, 0, 0, 27, 2, 95, 93, 55, 123, 90,
+			134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 40, 148, 192, 57, 114, 89, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 2, 95, 123,
+			34, 127, 89, 134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6, 110, 58, 89, 47, 35, 89, 0, 0, 0, 0, 0, 0, 11, 2,
+			95, 126, 47, 6, 114, 55, 72, 112, 0, 0, 27, 2, 95, 125, 34, 127, 89, 134, 6, 114, 38, 50, 37, 89, 10, 95, 49, 38, 137, 6,
+			110, 58, 89, 47, 35, 89, 0, 0, 0, 11, 70, 24, 148, 133, 24, 246, 0, 21, 0, 47, 0, 0, 0, 0, 7, 196, 52, 19, 177, 76,
+			66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 92, 147,
+			132, 61, 116, 192, 21, 0, 47, 0, 0, 7, 196, 41, 83, 73, 76, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+			71, 52, 17, 206, 36, 98, 69, 72, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 48, 226, 192, 13, 0, 0, 0, 0, 0, 6, 65, 228, 96, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18,
+			69, 76, 21, 153, 40, 80, 89, 35, 84, 38, 115, 57, 38, 6, 110, 10, 0, 0, 0, 0, 0, 17, 69, 41, 83, 89, 76, 80, 57, 40,
+			65, 38, 115, 95, 6, 110, 10, 0, 18, 69, 80, 21, 153, 40, 80, 47, 35, 84, 38, 115, 57, 38, 6, 110, 10, 0, 0, 0, 10, 67,
+			76, 21, 64, 89, 108, 123, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 100,
+			197, 190, 0, 197, 190, 0, 100, 122, 0, 98, 0, 100, 0, 103, 0, 122, 0, 104, 0, 7, 6, 18, 67, 197, 161, 0, 99, 104, 0, 196,
+			141, 0, 112, 0, 116, 0, 107, 0, 115, 0, 99, 0, 102, 0, 7, 6, 18, 69, 100, 197, 190, 0, 197, 190, 0, 100, 122, 0, 197, 161,
+			0, 99, 104, 0, 196, 141, 0, 98, 0, 100, 0, 103, 0, 122, 0, 104, 0, 112, 0, 116, 0, 107, 0, 115, 0, 99, 0, 102, 0, 108,
+			0, 109, 0, 110, 0, 114, 0, 106, 0, 118, 0, 7, 6, 18, 70, 196, 133, 0, 196, 153, 0, 196, 151, 0, 196, 175, 0, 197, 179, 0,
+			197, 171, 0, 97, 0, 101, 0, 105, 0, 121, 0, 111, 0, 117, 0, 7, 6, 18, 71, 196, 175, 0, 196, 153, 0, 196, 151, 0, 105, 0,
+			121, 0, 101, 0, 7, 6, 18, 75, 105, 117, 111, 115, 101, 0, 105, 97, 109, 115, 0, 105, 97, 105, 115, 0, 105, 117, 105, 0, 121, 106,
+			101, 0, 105, 97, 105, 0, 105, 197, 179, 0, 105, 117, 115, 0, 105, 115, 0, 105, 111, 0, 196, 175, 0, 105, 117, 0, 121, 106, 0, 121,
+			0, 7, 6, 18, 76, 105, 97, 109, 115, 0, 105, 97, 105, 115, 0, 105, 117, 111, 115, 0, 105, 97, 115, 0, 105, 117, 105, 0, 105, 196,
+			133, 0, 121, 106, 101, 0, 105, 97, 105, 0, 105, 197, 179, 0, 105, 117, 115, 0, 105, 111, 0, 105, 117, 0, 121, 106, 0, 121, 0, 7,
+			6, 18, 77, 117, 111, 115, 101, 0, 97, 109, 115, 0, 97, 105, 115, 0, 97, 115, 0, 117, 105, 0, 196, 133, 0, 97, 105, 0, 197, 179,
+			0, 117, 115, 0, 111, 0, 117, 0, 101, 0, 7, 6, 18, 78, 111, 109, 105, 115, 0, 111, 106, 101, 0, 111, 109, 115, 0, 111, 115, 101,
+			0, 111, 115, 0, 97, 105, 0, 196, 133, 0, 111, 106, 0, 111, 115, 0, 197, 179, 0, 97, 115, 0, 97, 0, 7, 6, 18, 79, 196, 151,
+			109, 105, 115, 0, 196, 151, 106, 101, 0, 196, 151, 109, 115, 0, 196, 151, 115, 101, 0, 196, 151, 115, 0, 196, 151, 106, 0, 105, 197, 179,
+			0, 196, 151, 109, 0, 196, 151, 0, 101, 105, 0, 196, 153, 0, 101, 0, 7, 6, 18, 86, 196, 141, 0, 116, 0, 7, 6, 18, 87, 100,
+			197, 190, 0, 100, 0, 7, 6, 196, 133, 0, 3, 109, 0, 7, 6, 196, 141, 0, 3, 76, 0, 2, 18, 71, 3, 78, 0, 7, 6, 196,
+			151, 0, 4, 3, 112, 0, 8, 112, 111, 107, 2, 196, 141, 105, 18, 78, 32, 0, 4, 1, 21, 2, 106, 18, 77, 32, 3, 112, 8, 0,
+			1, 21, 2, 106, 18, 78, 32, 0, 1, 21, 2, 110, 18, 77, 32, 0, 1, 21, 2, 110, 18, 79, 32, 0, 1, 21, 2, 196, 141, 105,
+			18, 78, 32, 0, 7, 6, 196, 153, 0, 3, 113, 0, 7, 6, 196, 175, 0, 3, 115, 0, 7, 6, 197, 161, 0, 2, 18, 66, 3, 90,
+			0, 4, 3, 91, 0, 197, 161, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 97, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7,
+			6, 197, 171, 0, 4, 1, 21, 2, 107, 197, 161, 18, 86, 18, 75, 32, 3, 118, 8, 40, 0, 1, 21, 2, 107, 197, 161, 18, 86, 18,
+			79, 32, 0, 3, 119, 0, 7, 6, 197, 179, 0, 3, 119, 0, 7, 6, 197, 190, 0, 115, 3, 89, 0, 4, 3, 90, 0, 197, 190, 0,
+			4, 2, 18, 67, 3, 91, 0, 2, 32, 0, 197, 161, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 96, 0, 2, 17, 67, 18, 71, 0,
+			2, 18, 71, 0, 7, 6, 97, 0, 4, 3, 35, 0, 2, 105, 122, 109, 18, 77, 32, 0, 4, 105, 1, 21, 2, 18, 86, 18, 75, 32,
+			3, 35, 8, 114, 0, 105, 1, 21, 2, 18, 86, 18, 79, 32, 0, 4, 105, 1, 21, 2, 110, 18, 75, 32, 3, 108, 8, 37, 0, 105,
+			1, 21, 2, 110, 18, 79, 32, 0, 105, 8, 109, 101, 190, 197, 2, 18, 86, 18, 75, 32, 0, 105, 8, 109, 101, 190, 197, 2, 18, 86,
+			18, 79, 32, 0, 105, 8, 116, 161, 197, 107, 117, 97, 2, 18, 86, 18, 75, 32, 0, 105, 8, 116, 161, 197, 107, 117, 97, 2, 18, 86,
+			18, 79, 32, 0, 2, 105, 107, 18, 78, 32, 3, 109, 0, 4, 105, 2, 18, 69, 3, 121, 0, 105, 2, 32, 0, 4, 117, 2, 18, 69,
+			3, 123, 0, 117, 2, 32, 0, 7, 6, 98, 0, 2, 18, 67, 3, 48, 0, 3, 71, 0, 4, 2, 17, 67, 18, 71, 3, 71, 38, 0,
+			2, 18, 71, 0, 7, 6, 99, 0, 104, 3, 101, 0, 104, 2, 18, 71, 3, 101, 38, 0, 3, 133, 0, 2, 18, 71, 3, 133, 38, 0,
+			7, 6, 100, 0, 4, 2, 18, 67, 3, 47, 0, 2, 32, 0, 3, 72, 0, 122, 3, 72, 88, 0, 122, 2, 18, 71, 3, 72, 94, 0,
+			197, 190, 3, 75, 0, 197, 190, 2, 18, 71, 3, 77, 0, 2, 18, 71, 3, 135, 0, 7, 6, 101, 0, 3, 36, 0, 105, 1, 21, 2,
+			118, 18, 78, 32, 3, 36, 8, 114, 0, 105, 3, 38, 122, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 18, 67, 3,
+			49, 0, 2, 32, 0, 4, 3, 81, 0, 103, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 97, 3, 36, 0, 3, 37, 0, 4,
+			97, 1, 99, 2, 99, 105, 106, 18, 78, 32, 3, 37, 57, 35, 0, 97, 1, 99, 2, 108, 18, 77, 32, 0, 2, 17, 65, 3, 38, 0,
+			4, 1, 97, 2, 107, 18, 78, 32, 3, 57, 37, 0, 1, 97, 2, 122, 109, 18, 77, 32, 0, 1, 111, 2, 107, 18, 78, 32, 0, 4,
+			101, 2, 197, 161, 107, 3, 57, 127, 0, 101, 8, 2, 118, 0, 101, 8, 2, 197, 161, 109, 0, 101, 1, 21, 2, 110, 18, 78, 32, 3,
+			114, 8, 36, 0, 4, 101, 3, 127, 0, 101, 8, 116, 117, 97, 106, 2, 110, 18, 78, 32, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6,
+			107, 0, 4, 3, 49, 0, 107, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 49, 38, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0,
+			2, 18, 66, 3, 81, 0, 7, 6, 108, 0, 3, 55, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 137, 0, 2, 17, 67, 18, 71, 0,
+			2, 18, 71, 0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 65, 38, 0, 2, 17, 67, 18,
+			71, 0, 2, 18, 71, 0, 7, 6, 110, 0, 4, 3, 50, 0, 110, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 136, 0, 2, 17, 67,
+			18, 71, 0, 2, 18, 71, 0, 7, 6, 111, 0, 1, 102, 2, 110, 18, 77, 32, 3, 116, 8, 0, 3, 117, 0, 2, 107, 197, 161, 110,
+			18, 75, 32, 3, 117, 8, 0, 7, 6, 112, 0, 4, 3, 48, 0, 112, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 48, 38, 0, 2,
+			17, 67, 18, 71, 0, 2, 18, 71, 0, 2, 18, 66, 3, 71, 0, 7, 6, 113, 0, 2, 18, 71, 3, 49, 38, 84, 38, 0, 3, 49,
+			84, 0, 7, 6, 114, 0, 4, 3, 34, 0, 114, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 34, 38, 0, 2, 17, 67, 18, 71, 0,
+			2, 18, 71, 0, 7, 6, 115, 0, 2, 18, 66, 3, 88, 0, 4, 3, 89, 0, 115, 0, 197, 161, 3, 91, 0, 4, 2, 17, 67, 17,
+			67, 18, 71, 3, 95, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 116, 0, 4, 3, 47, 0, 116, 0, 2, 18, 66, 3,
+			72, 0, 4, 2, 17, 67, 17, 67, 18, 71, 3, 134, 0, 2, 17, 67, 18, 71, 0, 2, 18, 71, 0, 7, 6, 117, 0, 3, 40, 0,
+			111, 1, 21, 2, 109, 101, 110, 18, 79, 32, 3, 118, 8, 39, 0, 111, 3, 124, 0, 105, 3, 126, 0, 7, 6, 118, 0, 3, 84, 0,
+			2, 18, 71, 3, 84, 38, 0, 7, 6, 119, 0, 3, 84, 0, 2, 18, 71, 3, 84, 38, 0, 7, 6, 120, 0, 2, 18, 71, 3, 49,
+			38, 95, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 115, 0, 4, 1, 21, 2, 18, 86, 18, 75, 32, 3, 115, 8, 0, 1, 21, 2,
+			18, 86, 18, 79, 32, 0, 1, 21, 2, 98, 18, 78, 32, 0, 1, 21, 2, 98, 18, 79, 32, 0, 1, 109, 117, 21, 2, 110, 18, 77,
+			32, 0, 1, 110, 101, 21, 2, 98, 18, 79, 32, 0, 8, 112, 97, 2, 21, 0, 7, 6, 122, 0, 3, 88, 0, 2, 18, 67, 3, 89,
+			0, 2, 100, 197, 190, 3, 90, 0, 2, 196, 141, 3, 91, 0, 4, 2, 17, 67, 18, 71, 3, 94, 0, 2, 18, 71, 0, 7, 6, 206,
+			0, 177, 3, 6, 35, 55, 83, 35, 10, 0, 181, 3, 6, 36, 48, 95, 37, 55, 39, 50, 10, 0, 191, 3, 6, 39, 65, 38, 37, 49,
+			34, 39, 50, 10, 0, 183, 3, 36, 47, 35, 10, 0, 186, 3, 49, 6, 35, 48, 35, 10, 0, 190, 3, 49, 95, 6, 37, 10, 0, 185,
+			3, 57, 39, 47, 35, 10, 0, 188, 3, 65, 38, 6, 37, 10, 0, 178, 3, 71, 38, 6, 36, 47, 35, 10, 0, 179, 3, 81, 6, 109,
+			65, 35, 10, 0, 182, 3, 94, 6, 36, 47, 35, 10, 0, 184, 3, 134, 36, 47, 35, 10, 0, 180, 3, 135, 6, 36, 55, 47, 35, 10,
+			0, 189, 3, 136, 6, 37, 10, 0, 187, 3, 137, 6, 35, 65, 72, 35, 10, 0, 7, 6, 207, 0, 133, 3, 6, 37, 48, 95, 37, 55,
+			39, 50, 10, 0, 129, 3, 34, 6, 39, 10, 0, 137, 3, 39, 65, 6, 36, 81, 35, 10, 0, 132, 3, 47, 6, 128, 10, 0, 128, 3,
+			48, 38, 6, 115, 10, 0, 136, 3, 48, 95, 6, 37, 10, 0, 134, 3, 83, 38, 6, 37, 10, 0, 4, 130, 3, 95, 6, 37, 81, 65,
+			35, 10, 0, 131, 0, 135, 3, 101, 38, 6, 37, 10, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 4, 35, 1, 35, 3, 0, 4, 39,
+			3, 0, 4, 46, 1, 46, 3, 0, 58, 1, 32, 15, 2, 32, 15, 15, 32, 3, 0, 46, 2, 46, 3, 9, 0, 46, 3, 9, 47, 6,
+			35, 91, 49, 35, 89, 0, 33, 3, 9, 91, 123, 49, 47, 6, 118, 49, 35, 89, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10,
+			0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 35, 1, 35, 35, 2, 32, 3, 24, 0, 60, 61, 3, 65, 35, 96, 6, 123, 10, 35, 34,
+			71, 6, 108, 10, 55, 115, 81, 40, 0, 45, 8, 32, 2, 32, 15, 3, 65, 37, 50, 40, 89, 0, 62, 61, 3, 72, 123, 81, 38, 6,
+			123, 10, 35, 34, 71, 6, 108, 10, 137, 115, 81, 40, 0, 58, 3, 135, 84, 38, 6, 114, 47, 35, 97, 49, 38, 37, 89, 0, 33, 61,
+			3, 136, 36, 137, 6, 115, 81, 40, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts41 = FileInMemory_createWithData (5171, reinterpret_cast<const char *> (&espeakdata_dicts41_data), 
+			U"espeak-1.48.04-source/espeak-data/lt_dict", 
 			U"lt");
-		Collection_addItem (me.peek(), espeakdata_dicts38.transfer());
+		my addItem_move (espeakdata_dicts41.move());
 
-		static unsigned char espeakdata_dicts39_data[12328] = {
-			0, 4, 0, 0, 72, 18, 0, 0, 0, 0, 11, 195, 44, 21, 84, 66, 81, 107, 196, 129, 32, 11, 195, 44, 21, 84, 66, 81, 99, 105,
-			107, 32, 0, 0, 0, 5, 65, 4, 35, 0, 0, 5, 194, 5, 0, 72, 0, 20, 67, 76, 16, 128, 89, 35, 71, 122, 72, 52, 108, 71,
-			35, 0, 44, 81, 98, 97, 32, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12, 124, 36, 0, 0, 0, 13, 4, 95,
-			8, 1, 3, 107, 6, 35, 76, 36, 49, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 5, 65, 20, 36, 0, 0, 0, 14,
-			4, 95, 48, 67, 15, 89, 6, 37, 65, 47, 116, 89, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			65, 32, 107, 35, 0, 0, 0, 0, 0, 10, 1, 36, 72, 39, 55, 113, 52, 37, 0, 5, 65, 36, 37, 0, 0, 13, 1, 37, 48, 52,
-			39, 124, 36, 50, 47, 37, 0, 27, 0, 6, 1, 38, 40, 50, 0, 8, 1, 38, 11, 2, 40, 50, 0, 0, 0, 6, 65, 40, 57, 36,
-			0, 0, 0, 9, 198, 64, 19, 1, 36, 176, 77, 66, 6, 195, 28, 20, 128, 72, 14, 1, 42, 88, 84, 116, 81, 88, 50, 108, 47, 36,
-			0, 27, 0, 10, 1, 43, 48, 55, 40, 89, 89, 0, 27, 0, 8, 197, 40, 80, 139, 4, 64, 66, 6, 65, 44, 49, 35, 0, 0, 0,
-			19, 67, 76, 21, 128, 89, 35, 84, 122, 50, 108, 71, 35, 0, 44, 81, 98, 97, 32, 0, 15, 1, 47, 89, 55, 108, 48, 89, 84, 108,
-			47, 51, 35, 0, 27, 0, 6, 65, 48, 36, 55, 0, 0, 9, 66, 49, 0, 55, 35, 48, 35, 0, 0, 0, 0, 6, 65, 52, 36, 65,
-			0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 7, 196, 48, 16, 129, 16, 72, 0, 5, 65, 60, 119, 0, 0, 13, 1,
-			61, 10, 84, 122, 50, 113, 72, 89, 10, 0, 27, 0, 0, 0, 9, 134, 6, 15, 1, 10, 196, 147, 67, 7, 1, 64, 35, 47, 9, 0,
-			6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 115, 0, 0, 0, 0, 0, 7, 65, 72, 36, 51, 52, 0, 0, 5, 194,
-			5, 32, 72, 0, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 109, 0, 0, 0, 11, 136, 16, 9, 1, 14,
-			196, 171, 14, 15, 20, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 25, 1, 92, 6,
-			35, 48, 81, 52, 122, 88, 47, 113, 15, 89, 55, 6, 108, 48, 89, 84, 108, 47, 51, 35, 0, 13, 65, 92, 72, 40, 71, 40, 55, 47,
-			6, 84, 36, 0, 0, 0, 0, 0, 18, 4, 95, 49, 77, 49, 47, 6, 115, 49, 89, 47, 119, 12, 47, 37, 89, 0, 7, 65, 96, 37,
-			49, 89, 0, 0, 15, 4, 95, 49, 77, 50, 65, 6, 37, 55, 57, 114, 50, 89, 0, 0, 0, 0, 9, 65, 100, 37, 81, 52, 36, 49,
-			0, 0, 9, 198, 20, 208, 129, 72, 115, 192, 20, 0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 9, 198, 37, 67, 133, 45, 84, 128, 67,
-			0, 0, 0, 8, 197, 80, 146, 208, 5, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 4, 197, 190, 21, 4, 15, 20, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 19, 142, 60, 20, 0, 0, 13, 67, 36, 84, 203, 122, 89, 49, 116, 47, 119, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 21, 52, 5, 72, 19, 148, 60, 20, 9, 134,
-			1, 16, 1, 11, 197, 161, 72, 0, 10, 135, 16, 18, 9, 5, 11, 197, 161, 72, 0, 0, 0, 7, 195, 8, 85, 0, 72, 8, 0, 0,
-			0, 6, 195, 4, 227, 143, 20, 0, 0, 0, 8, 133, 4, 196, 147, 196, 188, 72, 0, 0, 0, 12, 137, 11, 15, 13, 21, 14, 9, 11,
-			196, 147, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 85, 15, 20, 12, 66, 17, 32, 72, 39, 49, 47, 114, 52, 89,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 48, 21, 22, 55, 35, 47, 84, 122,
-			91, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 11, 15, 16, 197, 161, 72, 0, 6,
-			195, 64, 145, 64, 72, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 245, 15, 20, 6, 195, 52, 245, 15, 20, 0, 0, 14, 4, 95, 4,
-			16, 20, 49, 6, 39, 65, 35, 124, 10, 0, 0, 0, 5, 194, 21, 48, 72, 0, 0, 7, 196, 32, 19, 12, 60, 20, 0, 0, 0, 6,
-			195, 84, 227, 192, 20, 6, 195, 104, 83, 64, 72, 0, 0, 0, 0, 0, 16, 3, 95, 35, 57, 47, 35, 71, 40, 55, 35, 47, 114, 52,
-			89, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 36, 0, 0, 0, 0, 0, 7, 196, 8, 147, 135, 60, 20, 12, 137, 20, 21,
-			18, 16, 18, 5, 20, 196, 171, 66, 0, 0, 0, 0, 0, 9, 134, 18, 1, 14, 196, 141, 15, 20, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 81, 34, 77, 60, 20, 13, 67, 64, 145, 77, 48, 122, 65, 109, 52, 35, 65, 0, 0, 0, 0, 12, 67, 76, 176, 84, 89, 49, 35,
-			47, 108, 47, 0, 0, 0, 0, 10, 135, 7, 1, 12, 9, 6, 196, 147, 67, 0, 0, 7, 196, 9, 32, 86, 60, 20, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 76, 243, 133, 72, 16, 20,
-			15, 67, 24, 80, 146, 83, 36, 71, 52, 40, 113, 52, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 80, 146, 214, 36,
-			83, 128, 66, 9, 198, 4, 150, 150, 36, 83, 128, 66, 0, 0, 0, 0, 9, 198, 52, 17, 83, 81, 35, 192, 20, 9, 198, 52, 17, 83,
-			81, 35, 192, 66, 0, 6, 195, 64, 20, 128, 72, 0, 7, 196, 81, 34, 75, 60, 20, 0, 0, 0, 0, 7, 196, 16, 147, 135, 60, 20,
-			0, 0, 11, 66, 17, 160, 72, 88, 37, 65, 37, 89, 0, 8, 66, 17, 160, 72, 88, 109, 0, 0, 0, 0, 9, 134, 22, 9, 197, 134,
-			197, 161, 72, 0, 0, 0, 0, 0, 0, 11, 195, 56, 86, 128, 66, 81, 107, 97, 100, 32, 0, 0, 0, 0, 6, 195, 8, 86, 128, 72,
-			0, 0, 8, 197, 72, 242, 207, 44, 240, 20, 0, 0, 0, 10, 135, 1, 20, 5, 12, 10, 196, 147, 67, 0, 0, 0, 0, 0, 0, 7,
-			132, 16, 196, 129, 18, 72, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 15, 48, 6, 37, 52, 65, 116, 89, 0, 0, 0, 0, 12, 67,
-			64, 17, 192, 48, 35, 81, 35, 89, 124, 0, 9, 3, 226, 130, 172, 117, 52, 114, 0, 9, 3, 226, 130, 172, 117, 51, 39, 0, 0, 0,
-			0, 0, 13, 3, 226, 130, 168, 52, 115, 48, 108, 57, 35, 89, 0, 0, 12, 3, 95, 50, 15, 6, 39, 47, 52, 116, 89, 0, 0, 8,
-			197, 81, 84, 144, 5, 64, 66, 0, 0, 12, 67, 64, 18, 192, 48, 35, 49, 113, 48, 36, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51,
-			15, 47, 51, 6, 36, 91, 116, 89, 0, 9, 4, 95, 15, 18, 4, 116, 89, 0, 0, 0, 0, 0, 0, 0, 8, 133, 197, 190, 1, 2,
-			15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 53, 15, 48, 6, 122, 49, 47, 116, 89, 0, 0, 0, 14, 4, 95,
-			13, 3, 14, 65, 6, 35, 49, 52, 39, 50, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 15, 89, 6, 36, 89, 47, 116, 89, 0,
-			0, 0, 0, 9, 134, 196, 141, 5, 12, 12, 15, 20, 0, 0, 0, 0, 0, 15, 3, 95, 55, 15, 89, 6, 36, 48, 47, 108, 47, 116,
-			89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 51, 88, 47, 51, 6, 108, 89, 72, 36, 89, 65, 37, 47, 0,
-			0, 9, 198, 64, 21, 12, 4, 32, 78, 66, 13, 3, 95, 48, 67, 89, 6, 37, 65, 47, 37, 10, 0, 0, 0, 0, 0, 7, 196, 64,
-			148, 141, 76, 72, 14, 3, 95, 57, 15, 72, 6, 36, 84, 108, 47, 116, 89, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 89, 6, 37,
-			65, 124, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 49, 57, 72, 6, 36, 84, 37, 67, 48, 35, 72, 89, 65, 37, 47, 0, 0, 19,
-			3, 95, 49, 56, 6, 35, 89, 47, 119, 67, 48, 35, 72, 89, 65, 37, 47, 0, 0, 0, 12, 67, 48, 21, 0, 55, 35, 47, 108, 67,
-			40, 0, 0, 0, 0, 0, 12, 3, 226, 136, 146, 65, 108, 50, 40, 89, 89, 0, 0, 17, 3, 95, 49, 49, 84, 6, 122, 50, 48, 35,
-			72, 89, 65, 37, 47, 0, 0, 13, 3, 95, 49, 48, 72, 6, 36, 89, 65, 37, 47, 0, 0, 18, 3, 95, 49, 51, 47, 51, 6, 108,
-			89, 48, 35, 72, 89, 65, 37, 47, 0, 0, 17, 3, 95, 49, 50, 72, 6, 37, 84, 48, 35, 72, 89, 65, 37, 47, 0, 0, 9, 198,
-			49, 83, 66, 4, 115, 192, 20, 17, 3, 95, 49, 53, 48, 6, 122, 124, 48, 35, 72, 89, 65, 37, 47, 0, 0, 18, 3, 95, 49, 52,
-			76, 6, 36, 47, 52, 48, 35, 72, 89, 65, 37, 47, 0, 0, 7, 196, 80, 84, 1, 80, 66, 15, 3, 95, 52, 15, 76, 6, 36, 47,
-			40, 51, 47, 116, 89, 0, 20, 3, 95, 49, 55, 89, 6, 36, 48, 47, 37, 67, 48, 35, 72, 89, 65, 37, 47, 0, 0, 7, 132, 16,
-			196, 147, 3, 72, 17, 3, 95, 49, 54, 89, 6, 36, 91, 48, 35, 72, 89, 65, 37, 47, 0, 0, 0, 19, 3, 95, 55, 88, 89, 6,
-			36, 48, 47, 37, 67, 72, 36, 89, 65, 37, 47, 0, 0, 6, 195, 24, 245, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 66, 49, 48, 55, 35, 47, 37, 0, 41, 0, 16, 3, 95, 50, 88, 72, 6, 37,
-			84, 72, 36, 89, 65, 37, 47, 0, 0, 10, 135, 11, 1, 14, 1, 16, 196, 147, 67, 0, 0, 0, 6, 195, 65, 33, 84, 72, 0, 14,
-			3, 95, 56, 15, 6, 35, 89, 47, 39, 47, 116, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 63, 63, 52, 35, 49, 89,
-			47, 88, 108, 65, 36, 0, 0, 0, 5, 194, 37, 160, 72, 0, 17, 3, 95, 52, 88, 76, 6, 36, 47, 52, 72, 36, 89, 65, 37, 47,
-			0, 0, 12, 3, 1, 47, 19, 35, 49, 80, 37, 57, 40, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 76, 84, 20, 89, 36, 48, 47,
-			36, 65, 71, 52, 37, 89, 0, 17, 3, 95, 53, 88, 48, 6, 122, 124, 72, 4, 36, 89, 65, 37, 47, 0, 0, 0, 8, 197, 4, 146,
-			201, 16, 240, 20, 0, 0, 0, 0, 0, 5, 194, 49, 80, 17, 0, 6, 195, 60, 67, 192, 20, 16, 3, 95, 54, 88, 89, 6, 36, 91,
-			72, 36, 89, 65, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 5, 4, 128, 35, 48, 52, 108, 55, 37, 89, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 66, 57, 32, 50, 40, 65, 40, 52, 0, 0, 18, 3, 95, 56, 88, 6, 35, 89, 47, 119, 67, 72, 36, 89,
-			65, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 57, 88, 72, 6, 36, 84, 37, 67, 72, 36, 89, 65, 37, 47, 0,
-			0, 12, 196, 56, 86, 137, 56, 67, 81, 107, 117, 114, 32, 0, 0, 0, 0, 7, 196, 77, 64, 82, 64, 72, 0, 0, 10, 3, 95, 63,
-			65, 71, 40, 52, 124, 0, 0, 0, 7, 196, 9, 37, 78, 60, 20, 0, 0, 0, 0, 0, 0, 0, 11, 3, 226, 153, 175, 72, 122, 12,
-			88, 89, 0, 0, 0, 12, 3, 226, 153, 173, 71, 36, 65, 114, 55, 89, 0, 0, 0, 0, 14, 4, 95, 15, 7, 15, 6, 39, 81, 39,
-			50, 36, 49, 0, 0, 0, 0, 0, 10, 199, 52, 144, 210, 61, 51, 198, 80, 20, 0, 0, 0, 0, 0, 0, 0, 5, 194, 64, 16, 72,
-			0, 12, 67, 64, 17, 0, 48, 35, 72, 119, 65, 36, 0, 0, 0, 8, 197, 8, 243, 5, 72, 240, 20, 0, 13, 4, 10, 197, 171, 14,
-			57, 115, 50, 37, 57, 89, 0, 0, 12, 4, 197, 161, 196, 183, 91, 80, 37, 52, 35, 0, 0, 13, 4, 10, 197, 171, 12, 57, 115, 55,
-			37, 57, 89, 0, 0, 8, 197, 44, 22, 137, 56, 240, 20, 8, 197, 36, 225, 9, 28, 240, 20, 8, 197, 24, 144, 83, 44, 240, 20, 0,
-			5, 194, 57, 80, 72, 0, 6, 195, 61, 67, 192, 20, 21, 67, 52, 147, 128, 65, 37, 50, 37, 89, 47, 52, 37, 57, 35, 0, 44, 81,
-			106, 97, 32, 14, 67, 52, 147, 128, 65, 37, 50, 37, 65, 40, 65, 89, 0, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 6, 37, 55,
-			57, 114, 50, 37, 0, 0, 0, 0, 17, 4, 95, 48, 77, 49, 47, 6, 115, 49, 89, 47, 119, 12, 91, 37, 0, 0, 13, 4, 95, 2,
-			18, 22, 6, 108, 89, 40, 65, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 10, 197, 171, 19, 72, 0, 7, 196, 9, 37,
-			84, 60, 20, 0, 0, 0, 15, 67, 56, 245, 128, 50, 39, 84, 36, 65, 71, 52, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135,
-			16, 15, 18, 20, 10, 196, 147, 66, 0, 6, 195, 4, 150, 128, 72, 0, 0, 0, 0, 0, 7, 196, 52, 85, 18, 60, 20, 0, 0, 10,
-			135, 2, 5, 14, 4, 197, 190, 15, 20, 10, 135, 2, 1, 14, 4, 197, 190, 15, 20, 0, 0, 0, 0, 6, 195, 72, 242, 211, 20, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 19, 15, 12, 6, 5, 4, 197, 190, 15, 20, 12, 137, 19, 15, 12,
-			6, 5, 4, 197, 190, 15, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 22, 9, 197, 134, 1, 72, 0, 0, 0, 0, 19,
-			4, 95, 3, 9, 18, 72, 6, 37, 35, 49, 52, 37, 47, 37, 89, 49, 113, 0, 0, 0, 0, 0, 8, 133, 22, 9, 197, 134, 9, 72,
-			0, 12, 3, 95, 194, 180, 35, 49, 124, 36, 50, 124, 0, 0, 7, 196, 56, 82, 213, 72, 66, 0, 0, 16, 67, 52, 18, 211, 65, 35,
-			49, 89, 37, 65, 113, 55, 116, 89, 0, 0, 14, 67, 56, 244, 192, 50, 119, 89, 118, 49, 40, 65, 89, 0, 0, 0, 0, 0, 13, 4,
-			95, 19, 20, 11, 89, 47, 34, 6, 114, 49, 0, 0, 0, 13, 4, 95, 1, 3, 21, 6, 35, 49, 57, 115, 47, 0, 0, 14, 3, 95,
-			194, 171, 48, 6, 109, 72, 37, 67, 35, 89, 0, 0, 9, 198, 64, 20, 9, 48, 224, 77, 66, 0, 0, 27, 3, 95, 194, 166, 89, 6,
-			35, 72, 35, 55, 108, 47, 35, 15, 89, 47, 6, 113, 84, 89, 84, 108, 47, 52, 35, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 18,
-			14, 7, 52, 6, 37, 50, 81, 0, 0, 0, 0, 0, 11, 136, 6, 18, 9, 11, 1, 19, 196, 147, 67, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 9, 198, 5, 85, 15, 52, 245, 15, 20, 0, 0, 0, 7, 196, 64, 144, 78, 60, 66, 0, 8, 197, 40,
-			80, 139, 85, 32, 66, 0, 19, 4, 95, 1, 3, 50, 72, 6, 40, 71, 40, 55, 124, 35, 49, 57, 115, 47, 0, 0, 16, 5, 4, 26,
-			196, 171, 22, 72, 88, 108, 84, 119, 57, 37, 89, 0, 0, 0, 0, 6, 195, 65, 52, 147, 17, 0, 6, 195, 73, 2, 64, 17, 0, 0,
-			0, 0, 14, 67, 60, 181, 0, 39, 49, 47, 114, 71, 52, 37, 89, 0, 11, 136, 4, 5, 11, 15, 12, 20, 196, 147, 67, 0, 0, 0,
-			28, 3, 95, 194, 191, 6, 35, 48, 81, 52, 122, 88, 47, 113, 15, 57, 6, 118, 47, 113, 57, 40, 65, 88, 108, 65, 36, 0, 0, 0,
-			7, 196, 56, 82, 193, 16, 66, 0, 0, 19, 3, 95, 194, 187, 48, 6, 109, 72, 37, 67, 35, 89, 15, 124, 6, 122, 47, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 2, 196, 129, 113, 0, 0, 7, 2, 197, 134, 36, 67, 0, 0, 8, 197, 5, 37, 137, 20, 224, 66,
-			8, 2, 195, 151, 52, 117, 88, 0, 0, 6, 195, 16, 84, 15, 20, 9, 66, 77, 64, 89, 35, 50, 47, 0, 0, 7, 2, 196, 141, 76,
-			36, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 167, 89, 36, 49, 124, 37, 57, 35, 0, 0, 5, 194, 56, 240, 72, 0, 12, 67, 56,
-			241, 0, 50, 119, 72, 35, 61, 35, 0, 10, 2, 194, 165, 57, 109, 50, 35, 89, 0, 0, 10, 2, 194, 162, 124, 36, 50, 47, 37, 0,
-			0, 13, 2, 194, 163, 65, 113, 52, 124, 37, 67, 35, 89, 0, 6, 2, 196, 147, 109, 0, 0, 0, 0, 14, 2, 194, 174, 52, 36, 79,
-			37, 89, 47, 52, 109, 124, 0, 0, 7, 2, 197, 151, 36, 34, 0, 0, 0, 0, 0, 0, 0, 16, 2, 194, 169, 118, 47, 114, 52, 47,
-			122, 89, 108, 71, 35, 89, 0, 0, 14, 2, 194, 182, 48, 35, 52, 35, 81, 52, 113, 83, 89, 0, 0, 0, 0, 10, 2, 194, 181, 65,
-			37, 49, 51, 114, 0, 0, 0, 7, 2, 196, 163, 79, 36, 0, 0, 10, 2, 194, 176, 81, 52, 113, 72, 37, 0, 0, 15, 2, 194, 177,
-			48, 55, 40, 89, 65, 108, 50, 40, 89, 89, 0, 0, 23, 2, 194, 190, 47, 52, 6, 108, 89, 15, 124, 4, 36, 47, 40, 52, 47, 72,
-			35, 61, 35, 89, 0, 0, 10, 2, 195, 183, 72, 35, 55, 108, 124, 0, 0, 11, 66, 77, 96, 89, 84, 109, 47, 116, 89, 0, 17, 2,
-			194, 188, 124, 6, 36, 47, 40, 52, 47, 72, 4, 35, 61, 35, 0, 0, 9, 2, 194, 189, 48, 40, 89, 36, 0, 0, 14, 4, 95, 3,
-			5, 4, 89, 6, 36, 72, 108, 55, 35, 0, 0, 6, 2, 196, 171, 108, 0, 0, 10, 135, 1, 4, 1, 4, 197, 190, 15, 20, 10, 135,
-			1, 4, 1, 4, 197, 190, 15, 66, 0, 16, 4, 95, 12, 9, 7, 55, 6, 37, 81, 35, 47, 115, 52, 35, 0, 7, 2, 197, 161, 36,
-			91, 0, 0, 7, 196, 24, 16, 212, 60, 20, 17, 5, 16, 18, 45, 11, 19, 48, 52, 122, 49, 91, 50, 122, 49, 89, 0, 0, 7, 2,
-			196, 183, 80, 36, 0, 0, 0, 0, 0, 6, 2, 197, 171, 115, 0, 0, 0, 7, 195, 88, 18, 64, 72, 8, 0, 0, 0, 5, 194, 81,
-			80, 72, 7, 2, 196, 188, 36, 61, 0, 0, 0, 0, 9, 134, 22, 9, 197, 134, 1, 19, 72, 0, 0, 0, 7, 2, 197, 190, 90, 36,
-			0, 0, 0, 9, 198, 64, 20, 133, 80, 19, 64, 66, 0, 0, 0, 0, 0, 0, 7, 196, 44, 18, 193, 60, 20, 7, 196, 44, 18, 193,
-			60, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 64, 21, 137, 76,
-			19, 64, 66, 0, 8, 133, 12, 196, 171, 4, 26, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 67, 72, 18, 128, 52, 35, 57, 119, 50, 89, 0, 0, 0, 0, 0, 13, 67, 8, 146, 128, 71, 37, 57, 40, 91, 116,
-			89, 0, 12, 2, 95, 35, 34, 36, 89, 47, 108, 47, 36, 0, 0, 12, 2, 95, 34, 48, 109, 72, 37, 67, 35, 89, 0, 0, 13, 138,
-			16, 1, 20, 9, 5, 197, 161, 196, 129, 13, 66, 16, 2, 95, 33, 37, 88, 89, 118, 49, 40, 65, 88, 108, 65, 36, 0, 0, 0, 14,
-			2, 95, 39, 35, 48, 39, 89, 47, 34, 114, 83, 89, 0, 0, 7, 196, 76, 19, 66, 60, 20, 0, 0, 9, 134, 20, 196, 129, 16, 1,
-			20, 66, 0, 0, 12, 4, 95, 3, 1, 16, 55, 122, 55, 116, 89, 0, 0, 16, 2, 95, 41, 6, 122, 49, 35, 84, 35, 15, 124, 6,
-			122, 47, 0, 0, 11, 2, 95, 40, 6, 122, 49, 35, 84, 35, 0, 0, 0, 10, 2, 95, 46, 48, 40, 50, 49, 124, 0, 0, 11, 2,
-			95, 45, 65, 108, 50, 40, 89, 89, 0, 0, 10, 2, 95, 44, 49, 39, 65, 35, 124, 0, 0, 9, 2, 95, 51, 47, 51, 108, 89, 0,
-			0, 10, 2, 95, 50, 72, 6, 37, 84, 37, 0, 0, 10, 2, 95, 49, 84, 6, 122, 50, 89, 0, 0, 11, 2, 95, 48, 50, 6, 40,
-			55, 55, 36, 0, 0, 13, 2, 95, 55, 89, 6, 36, 48, 47, 37, 67, 37, 0, 0, 7, 196, 72, 85, 18, 60, 20, 10, 2, 95, 54,
-			89, 6, 36, 91, 37, 0, 0, 14, 67, 40, 19, 150, 57, 35, 50, 84, 113, 52, 37, 89, 0, 10, 2, 95, 53, 48, 6, 122, 124, 37,
-			0, 0, 11, 2, 95, 52, 76, 6, 36, 47, 52, 37, 0, 0, 13, 2, 95, 59, 89, 36, 65, 37, 49, 114, 55, 89, 0, 0, 9, 2,
-			95, 58, 49, 114, 55, 89, 0, 0, 12, 2, 95, 57, 72, 6, 36, 84, 37, 67, 37, 0, 0, 12, 2, 95, 56, 6, 35, 89, 47, 119,
-			67, 37, 0, 0, 16, 2, 95, 63, 57, 118, 47, 113, 57, 40, 65, 88, 108, 65, 36, 0, 0, 17, 2, 95, 62, 55, 6, 122, 55, 113,
-			49, 89, 15, 48, 6, 35, 52, 0, 0, 0, 17, 2, 95, 60, 65, 6, 35, 88, 113, 49, 89, 15, 48, 6, 35, 52, 0, 0, 0, 0,
-			0, 12, 137, 16, 18, 15, 20, 5, 197, 190, 196, 147, 67, 7, 2, 95, 64, 35, 47, 0, 0, 0, 0, 0, 0, 0, 6, 195, 48, 81,
-			207, 20, 0, 0, 0, 0, 0, 0, 0, 15, 67, 16, 80, 192, 72, 36, 80, 36, 65, 71, 52, 37, 89, 0, 0, 0, 0, 5, 194, 85,
-			160, 72, 0, 0, 13, 4, 95, 4, 15, 20, 48, 6, 40, 50, 49, 124, 0, 0, 0, 0, 18, 2, 95, 91, 49, 84, 6, 35, 72, 52,
-			113, 47, 122, 49, 35, 84, 35, 0, 0, 6, 195, 88, 148, 147, 72, 0, 0, 15, 4, 95, 226, 128, 146, 72, 119, 65, 40, 88, 108, 65,
-			36, 0, 0, 20, 2, 95, 95, 48, 35, 89, 84, 108, 47, 52, 119, 57, 40, 65, 88, 108, 65, 36, 0, 0, 10, 2, 95, 94, 89, 35,
-			49, 50, 36, 0, 0, 23, 2, 95, 93, 49, 84, 6, 35, 72, 52, 113, 47, 122, 49, 35, 84, 35, 15, 124, 6, 122, 47, 0, 0, 27,
-			4, 95, 226, 128, 150, 72, 6, 40, 71, 40, 55, 124, 47, 113, 89, 47, 4, 113, 84, 89, 84, 108, 47, 52, 35, 0, 0, 15, 67, 24,
-			18, 192, 83, 35, 49, 40, 55, 47, 113, 47, 36, 0, 14, 4, 2, 45, 2, 1, 71, 122, 72, 52, 108, 71, 35, 0, 0, 0, 8, 197,
-			44, 20, 212, 72, 240, 20, 0, 26, 2, 95, 96, 6, 35, 48, 81, 52, 122, 88, 47, 116, 89, 15, 6, 35, 48, 39, 89, 47, 52, 39,
-			83, 89, 0, 0, 0, 0, 0, 9, 198, 56, 84, 1, 72, 179, 192, 67, 0, 0, 0, 0, 12, 4, 95, 7, 18, 22, 81, 52, 6, 113,
-			84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 9, 5, 11, 197, 161, 72, 0, 0, 0, 16, 2, 95, 123, 83, 6, 37,
-			81, 115, 52, 122, 49, 35, 84, 35, 0, 13, 4, 95, 4, 9, 1, 6, 40, 65, 55, 118, 124, 0, 0, 0, 0, 0, 10, 199, 36, 226,
-			207, 28, 226, 84, 60, 20, 0, 10, 2, 95, 126, 47, 37, 55, 72, 36, 0, 0, 21, 2, 95, 125, 83, 6, 37, 81, 115, 52, 122, 49,
-			35, 84, 35, 15, 124, 6, 122, 47, 0, 0, 15, 2, 95, 124, 89, 47, 113, 84, 89, 84, 108, 47, 52, 35, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 194, 84, 224, 72, 8, 0, 0, 6, 195, 33, 81, 207, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 14, 4, 95, 35, 51, 50, 47, 40, 49, 91, 40, 65, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36, 229, 5, 72,
-			209, 67, 60, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 13, 196,
-			147, 19, 72, 0, 0, 6, 195, 49, 101, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 16, 243, 73, 56, 240, 20, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 4, 197, 190, 75, 109, 0, 0, 9, 198, 64, 17, 193, 48, 19, 64, 66, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 21, 82, 72, 0, 0, 0, 0,
-			6, 18, 66, 102, 0, 104, 0, 119, 0, 120, 0, 7, 6, 18, 67, 196, 141, 0, 196, 183, 0, 196, 188, 0, 197, 134, 0, 197, 190, 0,
-			7, 6, 18, 68, 105, 101, 109, 0, 97, 109, 0, 111, 115, 0, 196, 129, 0, 115, 0, 97, 0, 117, 0, 105, 0, 7, 6, 18, 69, 196,
-			129, 109, 0, 196, 129, 115, 0, 97, 115, 0, 97, 105, 0, 196, 129, 0, 117, 0, 97, 0, 7, 6, 18, 70, 105, 101, 109, 0, 105, 115,
-			0, 105, 109, 0, 111, 115, 0, 196, 171, 0, 105, 0, 7, 6, 18, 71, 196, 129, 0, 97, 0, 7, 6, 18, 72, 196, 147, 109, 0, 196,
-			147, 115, 0, 101, 115, 0, 101, 105, 0, 196, 147, 0, 101, 0, 105, 0, 117, 0, 7, 6, 18, 73, 97, 109, 105, 101, 115, 0, 97, 109,
-			196, 129, 115, 0, 97, 109, 97, 115, 0, 97, 109, 97, 0, 97, 109, 105, 0, 97, 109, 115, 0, 7, 6, 18, 74, 197, 161, 0, 115, 0,
-			7, 6, 18, 75, 116, 0, 100, 0, 106, 0, 7, 6, 18, 76, 105, 101, 109, 0, 111, 115, 0, 105, 0, 117, 0, 7, 6, 18, 77, 105,
-			101, 109, 0, 97, 109, 0, 111, 115, 0, 196, 129, 0, 115, 0, 7, 6, 18, 78, 196, 147, 0, 101, 0, 7, 6, 196, 129, 0, 3, 113,
-			0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 147, 0, 3, 109, 0, 7, 6, 196, 163, 0, 3, 79, 0, 7, 6, 196, 171, 0,
-			3, 108, 0, 7, 6, 196, 183, 0, 3, 80, 0, 7, 6, 196, 188, 0, 4, 1, 107, 2, 117, 3, 55, 57, 0, 1, 107, 2, 117, 0,
-			3, 61, 0, 7, 6, 197, 134, 0, 3, 67, 0, 7, 6, 197, 141, 0, 3, 114, 0, 7, 6, 197, 151, 0, 3, 34, 0, 7, 6, 197,
-			161, 0, 3, 91, 0, 7, 6, 197, 171, 0, 3, 115, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 3, 35, 0, 112, 3,
-			35, 48, 0, 105, 3, 116, 0, 117, 3, 118, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 104, 3, 76, 0, 3, 124, 0, 4,
-			104, 1, 105, 114, 100, 105, 114, 102, 2, 115, 3, 124, 107, 0, 104, 1, 114, 101, 2, 101, 114, 99, 111, 103, 115, 0, 7, 6, 100, 0,
-			3, 72, 0, 7, 6, 101, 0, 3, 36, 0, 105, 3, 117, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 8, 2,
-			32, 3, 81, 35, 0, 1, 32, 32, 15, 15, 2, 32, 3, 81, 35, 72, 35, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3,
-			37, 0, 101, 3, 122, 0, 117, 3, 123, 0, 7, 6, 106, 0, 3, 57, 0, 196, 129, 8, 3, 57, 113, 0, 196, 129, 110, 111, 8, 3,
-			57, 113, 50, 119, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 108, 3, 55, 55, 12, 0, 7, 6, 109, 0, 3,
-			65, 0, 97, 122, 8, 3, 65, 35, 88, 0, 109, 3, 65, 65, 12, 0, 7, 6, 110, 0, 3, 50, 0, 110, 3, 50, 50, 12, 0, 4,
-			2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 4, 1, 97, 2, 114, 3, 39, 0, 1, 97, 104, 0, 1, 98, 2, 98, 0, 1,
-			98, 2, 106, 18, 69, 32, 0, 1, 98, 2, 107, 115, 0, 1, 98, 2, 109, 98, 0, 1, 98, 2, 110, 196, 147, 0, 1, 98, 2, 114,
-			97, 107, 0, 1, 98, 2, 114, 97, 116, 0, 1, 98, 2, 114, 116, 0, 1, 98, 2, 116, 196, 129, 110, 0, 1, 98, 2, 196, 188, 197,
-			161, 0, 1, 98, 97, 2, 110, 0, 1, 98, 97, 2, 114, 0, 1, 98, 97, 107, 2, 116, 0, 1, 98, 97, 108, 2, 114, 97, 0, 1,
-			98, 97, 115, 2, 116, 0, 1, 98, 105, 114, 2, 110, 117, 107, 0, 1, 98, 109, 111, 0, 1, 98, 114, 97, 107, 0, 1, 98, 114, 117,
-			116, 0, 1, 99, 2, 108, 108, 0, 1, 99, 101, 109, 0, 1, 100, 2, 99, 0, 1, 100, 2, 100, 101, 107, 0, 1, 100, 2, 103, 109,
-			0, 1, 100, 2, 107, 117, 0, 1, 100, 2, 109, 105, 110, 0, 1, 100, 2, 109, 110, 18, 69, 32, 0, 1, 100, 2, 110, 107, 0, 1,
-			100, 2, 110, 110, 0, 1, 100, 2, 112, 0, 1, 100, 2, 114, 105, 0, 1, 100, 2, 116, 196, 129, 99, 0, 1, 100, 2, 116, 196, 147,
-			0, 1, 100, 2, 122, 0, 1, 100, 97, 2, 107, 0, 1, 100, 97, 2, 112, 0, 1, 100, 105, 101, 115, 112, 0, 1, 100, 105, 112, 115,
-			0, 1, 100, 110, 97, 109, 2, 108, 0, 1, 100, 111, 116, 114, 111, 2, 107, 0, 1, 101, 0, 1, 101, 163, 196, 0, 1, 102, 0, 1,
-			102, 2, 110, 111, 0, 1, 102, 2, 116, 111, 0, 1, 103, 2, 98, 101, 0, 1, 103, 2, 107, 0, 1, 103, 2, 110, 0, 1, 103, 2,
-			114, 105, 108, 0, 1, 103, 2, 116, 102, 0, 1, 103, 97, 2, 110, 196, 129, 0, 1, 103, 97, 102, 0, 1, 103, 105, 122, 2, 116, 18,
-			68, 32, 0, 1, 103, 110, 105, 114, 0, 1, 104, 0, 1, 105, 0, 1, 105, 2, 103, 0, 1, 105, 98, 0, 1, 105, 99, 2, 110, 0,
-			1, 105, 114, 116, 0, 1, 105, 115, 0, 1, 106, 2, 100, 101, 0, 1, 106, 2, 103, 0, 1, 106, 2, 110, 105, 0, 1, 106, 97, 109,
-			0, 1, 106, 102, 0, 1, 107, 2, 97, 108, 0, 1, 107, 2, 100, 101, 107, 0, 1, 107, 2, 100, 105, 102, 0, 1, 107, 2, 100, 196,
-			147, 0, 1, 107, 2, 101, 0, 1, 107, 2, 103, 110, 0, 1, 107, 2, 107, 111, 0, 1, 107, 2, 108, 97, 98, 0, 1, 107, 2, 108,
-			101, 0, 1, 107, 2, 108, 104, 0, 1, 107, 2, 108, 105, 0, 1, 107, 2, 108, 111, 0, 1, 107, 2, 108, 112, 0, 1, 107, 2, 108,
-			196, 129, 0, 1, 107, 2, 108, 196, 147, 0, 1, 107, 2, 108, 196, 171, 0, 1, 107, 2, 112, 101, 110, 0, 1, 107, 2, 112, 105, 106,
-			0, 1, 107, 2, 112, 117, 108, 196, 129, 0, 1, 107, 2, 112, 117, 108, 196, 147, 0, 1, 107, 2, 112, 196, 147, 17, 67, 0, 1, 107,
-			2, 112, 196, 147, 32, 0, 1, 107, 2, 114, 17, 65, 102, 0, 1, 107, 2, 114, 97, 0, 1, 107, 2, 114, 101, 106, 0, 1, 107, 2,
-			114, 101, 107, 0, 1, 107, 2, 114, 101, 108, 0, 1, 107, 2, 114, 101, 115, 0, 1, 107, 2, 114, 112, 0, 1, 107, 2, 114, 116, 0,
-			1, 107, 2, 114, 117, 109, 0, 1, 107, 2, 114, 117, 110, 0, 1, 107, 2, 114, 117, 112, 0, 1, 107, 2, 114, 118, 0, 1, 107, 2,
-			115, 105, 110, 0, 1, 107, 2, 115, 109, 0, 1, 107, 2, 115, 116, 196, 171, 109, 0, 1, 107, 2, 116, 97, 110, 0, 1, 107, 2, 116,
-			101, 0, 1, 107, 2, 116, 108, 0, 1, 107, 2, 116, 196, 147, 0, 1, 107, 2, 118, 0, 1, 107, 2, 196, 183, 0, 1, 107, 97, 2,
-			114, 0, 1, 107, 101, 100, 0, 1, 107, 105, 101, 108, 0, 1, 107, 105, 110, 0, 1, 107, 108, 97, 0, 1, 107, 111, 107, 2, 115, 0,
-			1, 107, 111, 115, 0, 1, 107, 111, 161, 197, 0, 1, 107, 114, 97, 110, 0, 1, 107, 114, 97, 115, 0, 1, 108, 2, 103, 97, 114, 0,
-			1, 108, 2, 106, 18, 71, 108, 0, 1, 108, 2, 107, 97, 108, 0, 1, 108, 2, 114, 110, 0, 1, 108, 2, 115, 106, 0, 1, 108, 2,
-			116, 18, 72, 32, 0, 1, 108, 2, 196, 163, 105, 122, 12, 0, 1, 108, 98, 2, 107, 0, 1, 108, 98, 2, 110, 0, 1, 108, 98, 2,
-			196, 183, 0, 1, 108, 101, 109, 2, 100, 114, 0, 1, 108, 101, 109, 2, 109, 0, 1, 108, 101, 118, 0, 1, 108, 102, 0, 1, 108, 103,
-			2, 98, 0, 1, 108, 103, 2, 109, 0, 1, 108, 103, 2, 114, 105, 0, 1, 108, 104, 2, 114, 111, 0, 1, 108, 105, 102, 0, 1, 108,
-			105, 112, 2, 116, 0, 1, 108, 107, 2, 122, 101, 116, 0, 1, 108, 111, 104, 0, 1, 108, 111, 107, 0, 1, 108, 112, 2, 109, 0, 1,
-			108, 112, 2, 118, 18, 68, 32, 0, 1, 108, 112, 115, 107, 101, 0, 1, 108, 115, 2, 118, 0, 1, 108, 115, 105, 100, 0, 1, 109, 2,
-			98, 0, 1, 109, 2, 100, 97, 108, 0, 1, 109, 2, 100, 101, 0, 1, 109, 2, 100, 105, 102, 0, 1, 109, 2, 100, 117, 0, 1, 109,
-			2, 100, 196, 129, 108, 0, 1, 109, 2, 108, 100, 0, 1, 109, 2, 108, 101, 0, 1, 109, 2, 108, 105, 0, 1, 109, 2, 108, 117, 0,
-			1, 109, 2, 109, 101, 110, 116, 0, 1, 109, 2, 110, 97, 114, 104, 0, 1, 109, 2, 110, 105, 116, 0, 1, 109, 2, 110, 111, 0, 1,
-			109, 2, 110, 115, 116, 0, 1, 109, 2, 110, 116, 0, 1, 109, 2, 112, 0, 1, 109, 2, 114, 97, 0, 1, 109, 2, 114, 102, 0, 1,
-			109, 2, 114, 115, 0, 1, 109, 2, 114, 196, 129, 0, 1, 109, 2, 116, 105, 0, 1, 109, 2, 116, 196, 171, 0, 1, 109, 2, 197, 161,
-			101, 0, 1, 109, 97, 2, 110, 0, 1, 109, 97, 2, 114, 0, 1, 109, 101, 100, 0, 1, 109, 105, 2, 110, 0, 1, 109, 114, 97, 104,
-			2, 110, 105, 122, 196, 147, 0, 1, 109, 114, 97, 104, 2, 110, 196, 147, 0, 1, 109, 115, 2, 196, 188, 0, 1, 109, 115, 105, 101, 115,
-			0, 1, 109, 115, 111, 2, 103, 0, 1, 109, 116, 97, 2, 115, 0, 1, 109, 117, 104, 0, 1, 110, 2, 107, 18, 75, 0, 1, 110, 2,
-			109, 101, 110, 0, 1, 110, 2, 109, 105, 110, 18, 71, 0, 1, 110, 2, 109, 105, 110, 18, 78, 0, 1, 110, 2, 114, 98, 0, 1, 110,
-			2, 114, 100, 0, 1, 110, 2, 114, 109, 0, 1, 110, 2, 114, 118, 0, 1, 110, 2, 116, 97, 114, 0, 1, 110, 2, 116, 196, 129, 114,
-			0, 1, 110, 2, 118, 18, 69, 32, 0, 1, 110, 2, 118, 97, 116, 0, 1, 110, 2, 118, 101, 108, 18, 72, 32, 0, 1, 110, 2, 118,
-			111, 0, 1, 110, 2, 118, 196, 129, 99, 105, 0, 1, 110, 97, 2, 108, 0, 1, 110, 97, 2, 109, 0, 1, 110, 97, 2, 110, 0, 1,
-			110, 97, 2, 116, 0, 1, 110, 97, 101, 107, 111, 0, 1, 110, 97, 114, 97, 112, 0, 1, 110, 101, 99, 115, 0, 1, 110, 101, 100, 0,
-			1, 110, 101, 102, 0, 1, 110, 101, 103, 0, 1, 110, 101, 116, 115, 2, 103, 0, 1, 110, 103, 0, 1, 110, 103, 97, 0, 1, 110, 105,
-			97, 107, 0, 1, 110, 105, 108, 2, 116, 105, 112, 0, 1, 110, 105, 109, 97, 0, 1, 110, 105, 118, 107, 101, 0, 1, 110, 111, 0, 1,
-			110, 111, 103, 0, 1, 110, 111, 109, 0, 1, 110, 111, 115, 0, 1, 110, 112, 105, 104, 0, 1, 110, 114, 97, 0, 1, 110, 116, 101, 0,
-			1, 112, 2, 100, 101, 0, 1, 112, 2, 101, 0, 1, 112, 2, 108, 97, 0, 1, 112, 2, 108, 101, 109, 0, 1, 112, 2, 108, 105, 0,
-			1, 112, 2, 108, 111, 0, 1, 112, 2, 108, 115, 116, 0, 1, 112, 2, 108, 196, 129, 0, 1, 112, 2, 108, 196, 171, 0, 1, 112, 2,
-			109, 101, 114, 0, 1, 112, 2, 109, 112, 0, 1, 112, 2, 110, 99, 0, 1, 112, 2, 112, 0, 1, 112, 2, 114, 99, 0, 1, 112, 2,
-			114, 111, 0, 1, 112, 2, 114, 116, 0, 1, 112, 2, 115, 116, 97, 109, 0, 1, 112, 2, 115, 116, 101, 109, 0, 1, 112, 2, 115, 116,
-			101, 110, 0, 1, 112, 2, 115, 116, 101, 114, 0, 1, 112, 2, 115, 116, 109, 0, 1, 112, 2, 115, 116, 115, 111, 0, 1, 112, 2, 115,
-			116, 117, 108, 0, 1, 112, 2, 116, 101, 110, 0, 1, 112, 2, 122, 0, 1, 112, 2, 196, 147, 0, 1, 112, 97, 2, 107, 0, 1, 112,
-			97, 2, 108, 0, 1, 112, 97, 2, 115, 116, 114, 111, 102, 0, 1, 112, 101, 2, 108, 0, 1, 112, 101, 2, 115, 18, 68, 32, 0, 1,
-			112, 101, 100, 0, 1, 112, 105, 104, 0, 1, 112, 105, 116, 0, 1, 112, 105, 116, 110, 97, 0, 1, 112, 111, 0, 1, 112, 111, 114, 112,
-			0, 1, 112, 114, 101, 116, 110, 105, 0, 1, 112, 115, 2, 110, 0, 1, 112, 115, 2, 114, 116, 0, 1, 112, 115, 101, 100, 0, 1, 112,
-			115, 105, 100, 0, 1, 114, 2, 108, 0, 1, 114, 2, 109, 97, 0, 1, 114, 2, 109, 98, 0, 1, 114, 2, 109, 196, 129, 0, 1, 114,
-			2, 114, 0, 1, 114, 2, 115, 105, 106, 0, 1, 114, 2, 115, 116, 98, 0, 1, 114, 2, 116, 101, 114, 0, 1, 114, 2, 116, 196, 147,
-			0, 1, 114, 97, 108, 111, 112, 0, 1, 114, 97, 109, 0, 1, 114, 97, 112, 2, 100, 0, 1, 114, 98, 2, 109, 0, 1, 114, 98, 2,
-			110, 0, 1, 114, 98, 2, 197, 161, 0, 1, 114, 100, 105, 104, 0, 1, 114, 101, 2, 103, 0, 1, 114, 101, 97, 2, 100, 0, 1, 114,
-			101, 97, 2, 102, 111, 0, 1, 114, 101, 97, 2, 115, 111, 0, 1, 114, 101, 116, 115, 0, 1, 114, 102, 2, 110, 0, 1, 114, 102, 97,
-			0, 1, 114, 103, 97, 0, 1, 114, 104, 2, 109, 0, 1, 114, 104, 2, 110, 111, 0, 1, 114, 104, 110, 105, 115, 0, 1, 114, 105, 98,
-			0, 1, 114, 105, 101, 110, 0, 1, 114, 105, 112, 0, 1, 114, 105, 190, 197, 0, 1, 114, 107, 2, 110, 197, 161, 0, 1, 114, 107, 2,
-			115, 0, 1, 114, 107, 97, 0, 1, 114, 111, 108, 104, 0, 1, 114, 111, 112, 0, 1, 114, 112, 2, 98, 0, 1, 114, 112, 2, 99, 0,
-			1, 114, 112, 2, 100, 0, 1, 114, 112, 2, 103, 110, 0, 1, 114, 112, 2, 103, 114, 0, 1, 114, 112, 2, 106, 0, 1, 114, 112, 2,
-			107, 0, 1, 114, 112, 2, 108, 101, 0, 1, 114, 112, 2, 109, 0, 1, 114, 112, 2, 112, 0, 1, 114, 112, 2, 115, 112, 0, 1, 114,
-			112, 2, 115, 116, 0, 1, 114, 112, 2, 116, 101, 0, 1, 114, 112, 2, 116, 111, 0, 1, 114, 112, 2, 118, 105, 110, 0, 1, 114, 112,
-			2, 118, 105, 122, 0, 1, 114, 112, 2, 118, 196, 171, 122, 0, 1, 114, 112, 2, 197, 190, 0, 1, 114, 112, 101, 0, 1, 114, 112, 109,
-			105, 0, 1, 114, 116, 2, 109, 0, 1, 114, 116, 2, 116, 0, 1, 114, 116, 101, 109, 0, 1, 114, 116, 101, 114, 0, 1, 114, 116, 105,
-			0, 1, 114, 116, 110, 105, 0, 1, 114, 116, 115, 97, 2, 110, 0, 1, 114, 116, 115, 107, 111, 0, 1, 115, 2, 99, 105, 0, 1, 115,
-			2, 107, 111, 0, 1, 115, 2, 107, 114, 0, 1, 115, 2, 108, 97, 114, 0, 1, 115, 2, 108, 102, 0, 1, 115, 2, 108, 105, 100, 0,
-			1, 115, 2, 108, 111, 196, 163, 0, 1, 115, 2, 108, 115, 116, 0, 1, 115, 2, 108, 116, 0, 1, 115, 2, 108, 118, 0, 1, 115, 2,
-			108, 196, 129, 114, 0, 1, 115, 2, 108, 196, 171, 100, 18, 68, 32, 0, 1, 115, 2, 108, 196, 171, 100, 196, 129, 0, 1, 115, 2, 110,
-			111, 0, 1, 115, 2, 110, 196, 129, 0, 1, 115, 2, 112, 114, 0, 1, 115, 2, 114, 0, 1, 115, 2, 118, 0, 1, 115, 97, 107, 110,
-			105, 0, 1, 115, 97, 114, 2, 108, 0, 1, 115, 98, 97, 2, 108, 0, 1, 115, 105, 2, 110, 0, 1, 115, 107, 101, 0, 1, 115, 110,
-			111, 107, 0, 1, 116, 2, 107, 115, 0, 1, 116, 2, 108, 101, 114, 0, 1, 116, 2, 109, 97, 115, 0, 1, 116, 2, 110, 0, 1, 116,
-			2, 110, 105, 122, 0, 1, 116, 2, 110, 110, 0, 1, 116, 2, 114, 0, 1, 116, 2, 114, 97, 0, 1, 116, 2, 114, 111, 0, 1, 116,
-			2, 114, 196, 129, 0, 1, 116, 2, 116, 196, 147, 109, 0, 1, 116, 97, 100, 0, 1, 116, 97, 109, 101, 110, 105, 107, 0, 1, 116, 101,
-			98, 0, 1, 116, 101, 103, 0, 1, 116, 101, 109, 2, 100, 0, 1, 116, 101, 110, 0, 1, 116, 101, 116, 2, 118, 0, 1, 116, 105, 99,
-			0, 1, 116, 105, 108, 0, 1, 116, 110, 97, 2, 108, 0, 1, 116, 110, 97, 2, 110, 0, 1, 116, 110, 97, 112, 0, 1, 116, 110, 101,
-			0, 1, 116, 110, 111, 0, 1, 116, 111, 102, 2, 103, 114, 0, 1, 116, 111, 109, 2, 100, 114, 111, 0, 1, 116, 111, 114, 112, 0, 1,
-			116, 112, 101, 2, 21, 0, 1, 116, 112, 105, 114, 107, 0, 1, 116, 114, 97, 107, 0, 1, 116, 114, 111, 0, 1, 116, 115, 2, 107, 104,
-			0, 1, 116, 115, 2, 109, 97, 116, 0, 1, 116, 115, 101, 114, 104, 0, 1, 116, 115, 105, 104, 0, 1, 116, 115, 105, 114, 97, 0, 1,
-			116, 115, 111, 2, 112, 18, 68, 32, 0, 1, 116, 117, 97, 2, 109, 0, 1, 116, 117, 97, 2, 114, 105, 0, 1, 116, 117, 108, 112, 2,
-			107, 0, 1, 118, 2, 98, 0, 1, 118, 2, 107, 97, 0, 1, 118, 2, 108, 100, 0, 1, 118, 2, 108, 101, 106, 0, 1, 118, 2, 108,
-			102, 0, 1, 118, 2, 108, 116, 0, 1, 118, 2, 108, 117, 0, 1, 118, 2, 108, 118, 0, 1, 118, 97, 102, 0, 1, 118, 97, 108, 115,
-			0, 1, 118, 97, 114, 98, 0, 1, 118, 101, 2, 108, 0, 1, 118, 105, 0, 1, 118, 105, 97, 114, 2, 32, 0, 1, 118, 107, 0, 1,
-			118, 110, 111, 107, 0, 1, 118, 114, 101, 110, 0, 1, 119, 0, 1, 120, 0, 1, 122, 2, 106, 18, 68, 32, 12, 0, 1, 122, 2, 110,
-			17, 65, 116, 111, 0, 1, 122, 2, 110, 100, 0, 1, 122, 97, 114, 0, 1, 122, 101, 109, 0, 1, 122, 105, 2, 108, 0, 1, 122, 110,
-			101, 0, 1, 161, 197, 2, 107, 0, 1, 161, 197, 2, 115, 101, 106, 0, 1, 190, 197, 2, 107, 101, 106, 0, 1, 190, 197, 2, 110, 103,
-			0, 1, 190, 197, 97, 109, 0, 1, 190, 197, 100, 2, 117, 108, 0, 2, 18, 66, 0, 2, 18, 71, 0, 2, 28, 17, 12, 12, 12, 12,
-			0, 2, 98, 97, 109, 0, 2, 98, 106, 101, 0, 2, 100, 105, 97, 0, 2, 105, 0, 2, 107, 101, 0, 2, 107, 115, 105, 0, 2, 107,
-			115, 111, 108, 0, 2, 107, 116, 0, 2, 107, 116, 111, 0, 2, 107, 117, 108, 0, 2, 107, 117, 112, 0, 2, 107, 196, 129, 108, 0, 2,
-			108, 101, 111, 0, 2, 108, 105, 103, 0, 2, 108, 105, 109, 112, 0, 2, 108, 111, 103, 0, 2, 108, 111, 196, 163, 0, 2, 108, 196, 171,
-			118, 0, 2, 109, 110, 105, 98, 0, 2, 109, 196, 129, 114, 0, 2, 110, 103, 0, 2, 110, 107, 111, 0, 2, 110, 111, 0, 2, 110, 116,
-			111, 0, 2, 112, 99, 0, 2, 112, 101, 114, 97, 116, 0, 2, 112, 111, 0, 2, 112, 116, 105, 107, 0, 2, 112, 116, 105, 109, 0, 2,
-			112, 116, 105, 115, 0, 2, 112, 116, 105, 196, 183, 0, 2, 114, 97, 110, 12, 0, 2, 114, 97, 116, 0, 2, 114, 100, 0, 2, 114, 103,
-			0, 2, 114, 104, 105, 100, 0, 2, 114, 105, 101, 110, 0, 2, 114, 105, 103, 0, 2, 114, 105, 196, 163, 0, 2, 114, 107, 0, 2, 114,
-			110, 105, 116, 0, 2, 114, 116, 111, 0, 2, 114, 196, 129, 107, 0, 2, 114, 196, 129, 116, 0, 2, 114, 196, 183, 0, 2, 115, 99, 105,
-			108, 0, 2, 115, 109, 111, 0, 2, 117, 0, 2, 122, 111, 110, 0, 8, 2, 98, 108, 105, 103, 0, 8, 2, 98, 115, 0, 8, 2, 100,
-			101, 107, 0, 8, 2, 107, 115, 97, 110, 18, 69, 32, 0, 8, 2, 107, 115, 102, 0, 8, 2, 108, 97, 102, 18, 68, 32, 0, 8, 2,
-			108, 103, 18, 69, 32, 0, 8, 2, 110, 100, 97, 116, 114, 0, 8, 2, 112, 101, 114, 0, 8, 2, 115, 107, 97, 114, 18, 68, 32, 0,
-			8, 2, 118, 196, 129, 99, 0, 8, 2, 196, 188, 101, 103, 18, 68, 32, 0, 8, 98, 2, 108, 196, 171, 100, 18, 68, 32, 0, 8, 98,
-			2, 116, 18, 72, 32, 0, 8, 100, 2, 103, 18, 68, 32, 0, 8, 100, 2, 107, 18, 68, 32, 0, 8, 100, 110, 105, 0, 8, 100, 129,
-			196, 2, 108, 102, 18, 68, 0, 8, 106, 2, 116, 18, 69, 32, 0, 8, 107, 2, 106, 18, 69, 0, 8, 107, 2, 114, 196, 129, 0, 8,
-			107, 105, 112, 0, 8, 107, 115, 97, 2, 108, 100, 18, 68, 32, 0, 8, 108, 2, 108, 105, 116, 18, 69, 32, 0, 8, 108, 2, 110, 0,
-			8, 108, 2, 116, 105, 197, 134, 18, 69, 0, 8, 108, 97, 2, 116, 0, 8, 108, 97, 103, 2, 112, 18, 68, 0, 8, 108, 105, 107, 0,
-			8, 109, 2, 110, 0, 8, 110, 2, 97, 115, 18, 68, 32, 0, 8, 110, 2, 116, 18, 69, 32, 0, 8, 110, 2, 118, 101, 109, 98, 0,
-			8, 110, 97, 110, 0, 8, 110, 101, 116, 115, 0, 8, 112, 2, 108, 105, 101, 100, 0, 8, 112, 2, 110, 105, 106, 18, 68, 32, 0, 8,
-			112, 2, 116, 97, 197, 161, 18, 69, 0, 8, 114, 2, 98, 101, 114, 116, 0, 8, 114, 2, 100, 101, 114, 105, 107, 18, 68, 32, 0, 8,
-			114, 2, 107, 196, 129, 100, 18, 72, 32, 0, 8, 114, 2, 122, 101, 116, 18, 72, 32, 0, 8, 114, 2, 122, 196, 171, 110, 18, 72, 32,
-			0, 8, 114, 97, 98, 2, 107, 0, 8, 114, 97, 98, 2, 109, 0, 8, 114, 97, 98, 2, 110, 17, 65, 0, 8, 114, 98, 2, 107, 196,
-			129, 116, 18, 68, 32, 0, 8, 114, 98, 108, 117, 2, 107, 18, 69, 32, 0, 8, 114, 99, 105, 109, 0, 8, 114, 103, 2, 122, 110, 105,
-			106, 0, 8, 114, 107, 105, 109, 2, 12, 0, 8, 114, 116, 2, 106, 0, 8, 116, 2, 110, 105, 106, 18, 69, 32, 0, 8, 116, 2, 112,
-			98, 0, 8, 116, 2, 112, 105, 110, 97, 109, 0, 8, 116, 2, 112, 109, 0, 8, 116, 2, 112, 196, 129, 122, 18, 68, 32, 0, 8, 116,
-			2, 114, 101, 0, 8, 116, 2, 114, 112, 17, 65, 100, 0, 8, 116, 2, 114, 116, 18, 72, 32, 0, 8, 116, 105, 118, 2, 108, 100, 18,
-			68, 32, 0, 8, 116, 107, 101, 104, 0, 8, 116, 110, 97, 2, 197, 134, 105, 110, 18, 69, 32, 0, 8, 116, 117, 97, 0, 8, 122, 101,
-			2, 116, 0, 8, 122, 105, 0, 8, 161, 197, 2, 114, 116, 18, 76, 0, 114, 112, 111, 1, 107, 3, 39, 34, 48, 39, 0, 4, 116, 111,
-			1, 108, 2, 32, 3, 39, 47, 39, 0, 116, 111, 8, 0, 116, 111, 1, 109, 3, 39, 47, 114, 0, 4, 112, 111, 1, 114, 116, 110, 97,
-			3, 39, 48, 39, 0, 112, 111, 8, 116, 2, 103, 0, 112, 111, 8, 116, 2, 108, 0, 112, 111, 8, 116, 2, 110, 0, 112, 116, 111, 8,
-			3, 39, 48, 47, 39, 0, 107, 97, 107, 111, 1, 107, 2, 108, 3, 39, 49, 35, 49, 114, 0, 107, 111, 107, 2, 18, 68, 32, 3, 39,
-			49, 39, 49, 0, 107, 111, 109, 111, 1, 108, 3, 39, 49, 39, 65, 39, 0, 107, 111, 100, 1, 114, 107, 3, 39, 49, 39, 72, 0, 4,
-			107, 111, 1, 114, 2, 112, 101, 3, 39, 49, 114, 0, 107, 111, 1, 116, 111, 114, 112, 0, 4, 110, 1, 107, 3, 39, 50, 0, 110, 8,
-			108, 107, 0, 4, 110, 111, 1, 107, 3, 39, 50, 39, 0, 110, 111, 8, 109, 0, 4, 110, 111, 1, 100, 3, 39, 50, 114, 0, 110, 111,
-			1, 107, 101, 0, 110, 111, 1, 114, 116, 115, 97, 0, 114, 111, 1, 107, 3, 39, 52, 39, 0, 114, 110, 111, 1, 112, 3, 39, 52, 50,
-			39, 0, 109, 1, 107, 3, 39, 65, 0, 4, 109, 111, 1, 104, 3, 39, 65, 39, 0, 109, 111, 1, 107, 0, 109, 111, 1, 116, 0, 109,
-			111, 116, 2, 111, 3, 39, 65, 39, 47, 0, 109, 111, 110, 111, 115, 111, 1, 108, 3, 39, 65, 39, 50, 6, 39, 89, 39, 0, 109, 112,
-			111, 1, 107, 3, 39, 65, 48, 39, 0, 110, 103, 111, 108, 111, 1, 109, 3, 39, 68, 81, 39, 55, 39, 0, 110, 103, 111, 1, 109, 3,
-			39, 68, 81, 114, 0, 98, 1, 107, 3, 39, 71, 0, 98, 111, 1, 114, 2, 116, 3, 39, 71, 39, 0, 100, 105, 111, 8, 3, 39, 72,
-			37, 114, 0, 4, 100, 111, 1, 106, 3, 39, 72, 39, 0, 100, 111, 1, 114, 2, 100, 101, 110, 0, 100, 111, 8, 0, 103, 111, 1, 108,
-			3, 39, 81, 39, 0, 118, 111, 1, 114, 112, 3, 39, 84, 39, 0, 118, 103, 111, 114, 111, 100, 1, 110, 3, 39, 84, 81, 39, 34, 39,
-			72, 0, 122, 111, 1, 108, 105, 102, 3, 39, 88, 114, 0, 115, 116, 111, 106, 1, 100, 3, 39, 89, 47, 39, 57, 0, 115, 102, 111, 1,
-			102, 3, 39, 89, 83, 114, 0, 4, 115, 111, 1, 98, 105, 114, 3, 39, 89, 114, 0, 115, 111, 1, 108, 105, 102, 0, 111, 3, 39, 114,
-			0, 4, 1, 98, 2, 108, 3, 114, 0, 1, 98, 2, 114, 115, 0, 1, 99, 114, 101, 104, 2, 103, 0, 1, 100, 101, 104, 2, 110, 0,
-			1, 100, 107, 101, 110, 97, 0, 1, 100, 110, 2, 109, 18, 68, 32, 0, 1, 100, 110, 111, 103, 2, 108, 0, 1, 100, 114, 2, 109, 18,
-			68, 32, 0, 1, 101, 100, 105, 118, 0, 1, 102, 2, 110, 105, 0, 1, 103, 2, 103, 0, 1, 103, 2, 110, 105, 106, 0, 1, 103, 2,
-			114, 105, 106, 0, 1, 103, 2, 116, 105, 107, 0, 1, 103, 2, 116, 105, 115, 0, 1, 103, 2, 196, 163, 0, 1, 103, 97, 2, 110, 0,
-			1, 103, 101, 2, 110, 0, 1, 103, 101, 98, 2, 110, 105, 0, 1, 103, 101, 108, 97, 2, 114, 0, 1, 103, 101, 116, 97, 107, 2, 114,
-			0, 1, 103, 114, 101, 110, 101, 0, 1, 103, 114, 117, 102, 2, 110, 0, 1, 105, 2, 100, 18, 72, 32, 0, 1, 105, 2, 110, 18, 72,
-			32, 0, 1, 105, 100, 97, 114, 0, 1, 105, 100, 105, 0, 1, 105, 100, 117, 97, 0, 1, 105, 114, 116, 97, 112, 0, 1, 105, 118, 97,
-			0, 1, 106, 108, 0, 1, 107, 2, 100, 18, 77, 32, 0, 1, 107, 2, 109, 18, 69, 32, 12, 0, 1, 107, 97, 108, 2, 110, 0, 1,
-			107, 110, 105, 115, 0, 1, 107, 115, 2, 112, 18, 68, 32, 0, 1, 107, 115, 2, 112, 105, 106, 18, 69, 32, 0, 1, 107, 115, 2, 112,
-			105, 115, 0, 1, 108, 2, 103, 12, 0, 1, 108, 2, 110, 0, 1, 108, 2, 196, 163, 0, 1, 108, 2, 196, 163, 12, 0, 1, 108, 97,
-			2, 103, 0, 1, 108, 97, 107, 2, 114, 0, 1, 108, 104, 2, 114, 0, 1, 108, 105, 2, 103, 0, 1, 108, 107, 105, 99, 0, 1, 108,
-			107, 108, 111, 102, 0, 1, 108, 111, 2, 110, 105, 106, 0, 1, 108, 111, 2, 110, 105, 115, 116, 0, 1, 108, 111, 115, 0, 1, 109, 2,
-			99, 97, 114, 0, 1, 109, 2, 100, 18, 69, 32, 0, 1, 109, 97, 110, 105, 100, 0, 1, 109, 101, 2, 99, 105, 0, 1, 109, 105, 101,
-			110, 112, 0, 1, 109, 114, 97, 104, 2, 110, 0, 1, 109, 115, 111, 0, 1, 110, 2, 100, 18, 72, 32, 0, 1, 110, 2, 109, 18, 68,
-			32, 0, 1, 110, 2, 109, 18, 72, 32, 0, 1, 110, 2, 109, 105, 106, 18, 69, 32, 0, 1, 110, 97, 2, 100, 0, 1, 110, 105, 107,
-			0, 1, 110, 112, 105, 104, 2, 122, 18, 72, 32, 0, 1, 112, 2, 108, 18, 68, 32, 0, 1, 112, 2, 108, 18, 72, 32, 0, 1, 112,
-			109, 111, 112, 0, 1, 114, 100, 2, 109, 18, 68, 0, 1, 114, 101, 97, 0, 1, 114, 101, 108, 107, 115, 0, 1, 114, 104, 2, 110, 0,
-			1, 114, 105, 101, 0, 1, 114, 107, 97, 109, 0, 1, 114, 107, 105, 2, 110, 0, 1, 114, 116, 2, 102, 18, 69, 32, 0, 1, 114, 116,
-			2, 112, 0, 1, 114, 116, 105, 2, 110, 0, 1, 114, 116, 107, 101, 108, 101, 0, 1, 114, 116, 110, 111, 107, 0, 1, 114, 117, 107, 2,
-			114, 18, 72, 32, 0, 1, 115, 2, 108, 111, 0, 1, 115, 2, 114, 18, 68, 32, 12, 0, 1, 115, 2, 114, 18, 72, 32, 12, 12, 0,
-			1, 115, 111, 114, 101, 97, 2, 108, 0, 1, 115, 112, 97, 114, 0, 1, 115, 114, 101, 112, 2, 110, 0, 1, 116, 2, 100, 18, 72, 32,
-			12, 0, 1, 116, 2, 108, 18, 69, 32, 12, 0, 1, 116, 2, 110, 105, 107, 18, 69, 32, 0, 1, 116, 2, 110, 105, 115, 107, 0, 1,
-			116, 2, 114, 18, 72, 32, 12, 12, 0, 1, 116, 21, 2, 114, 0, 1, 116, 97, 2, 109, 0, 1, 116, 97, 114, 97, 109, 0, 1, 116,
-			97, 114, 111, 0, 1, 116, 107, 111, 0, 1, 116, 108, 97, 100, 2, 110, 0, 1, 116, 110, 97, 2, 110, 18, 68, 32, 0, 1, 116, 110,
-			111, 112, 2, 110, 0, 1, 116, 111, 2, 112, 18, 68, 32, 0, 1, 116, 111, 102, 0, 1, 116, 111, 110, 111, 109, 2, 110, 0, 1, 116,
-			112, 2, 109, 18, 68, 32, 0, 1, 116, 117, 2, 112, 105, 0, 1, 117, 108, 102, 2, 114, 0, 1, 122, 2, 110, 0, 1, 122, 2, 114,
-			18, 68, 32, 12, 0, 1, 122, 2, 114, 18, 72, 32, 12, 12, 0, 1, 122, 105, 112, 101, 2, 100, 0, 2, 32, 0, 2, 108, 18, 68,
-			32, 12, 0, 2, 110, 18, 68, 32, 12, 0, 2, 112, 18, 68, 32, 12, 0, 2, 114, 18, 68, 32, 12, 0, 2, 122, 18, 68, 32, 0,
-			2, 122, 18, 72, 32, 12, 0, 8, 2, 109, 105, 0, 8, 2, 109, 115, 0, 8, 2, 112, 101, 114, 18, 69, 32, 0, 8, 100, 2, 122,
-			18, 69, 32, 12, 12, 0, 8, 101, 114, 101, 116, 115, 0, 8, 102, 2, 108, 105, 106, 18, 69, 32, 0, 8, 103, 105, 2, 114, 18, 68,
-			32, 0, 8, 106, 2, 103, 18, 68, 32, 0, 8, 107, 101, 0, 8, 108, 2, 197, 190, 18, 69, 32, 0, 8, 108, 103, 2, 114, 105, 106,
-			18, 69, 32, 0, 8, 109, 2, 110, 105, 107, 18, 69, 32, 0, 8, 109, 2, 122, 117, 0, 8, 109, 97, 114, 2, 110, 18, 69, 32, 0,
-			8, 109, 115, 2, 103, 18, 68, 32, 0, 8, 114, 97, 98, 2, 110, 18, 68, 32, 0, 8, 115, 107, 111, 2, 108, 18, 68, 32, 0, 8,
-			116, 2, 110, 117, 115, 18, 68, 32, 0, 8, 116, 2, 114, 105, 106, 18, 68, 32, 0, 8, 116, 110, 97, 102, 2, 109, 18, 68, 32, 0,
-			8, 116, 114, 97, 107, 2, 110, 18, 68, 32, 0, 108, 111, 1, 112, 2, 32, 3, 114, 55, 114, 0, 115, 116, 111, 112, 1, 116, 117, 97,
-			3, 114, 89, 47, 39, 48, 0, 4, 3, 119, 0, 1, 98, 2, 32, 0, 1, 98, 2, 108, 111, 197, 161, 0, 1, 98, 2, 108, 196, 171,
-			100, 18, 73, 32, 0, 1, 98, 2, 108, 196, 171, 106, 0, 1, 98, 2, 108, 196, 171, 115, 0, 1, 98, 2, 108, 196, 171, 116, 0, 1,
-			98, 2, 108, 196, 171, 197, 161, 0, 1, 98, 97, 118, 2, 108, 18, 72, 32, 0, 1, 98, 129, 196, 2, 108, 0, 1, 99, 2, 32, 0,
-			1, 100, 2, 32, 0, 1, 100, 2, 122, 18, 72, 32, 12, 12, 0, 1, 102, 114, 147, 196, 115, 0, 1, 103, 2, 32, 0, 1, 103, 2,
-			114, 111, 0, 1, 103, 97, 109, 2, 110, 0, 1, 103, 97, 118, 2, 110, 0, 1, 103, 105, 97, 100, 2, 110, 0, 1, 103, 105, 97, 109,
-			2, 110, 0, 1, 103, 105, 97, 122, 0, 1, 103, 108, 105, 2, 110, 18, 70, 32, 0, 1, 103, 111, 108, 115, 0, 1, 103, 114, 97, 109,
-			2, 110, 0, 1, 103, 117, 97, 2, 110, 0, 1, 103, 171, 196, 108, 0, 1, 106, 2, 32, 0, 1, 106, 2, 110, 18, 70, 32, 0, 1,
-			107, 2, 32, 0, 1, 107, 2, 107, 111, 103, 0, 1, 107, 2, 107, 116, 196, 147, 108, 0, 1, 107, 2, 110, 18, 70, 32, 0, 1, 107,
-			2, 112, 106, 0, 1, 107, 2, 112, 196, 147, 106, 18, 68, 32, 0, 1, 107, 2, 112, 196, 147, 106, 18, 69, 32, 0, 1, 107, 2, 114,
-			18, 70, 32, 12, 0, 1, 107, 2, 197, 134, 18, 70, 32, 0, 1, 107, 97, 114, 116, 0, 1, 107, 101, 105, 110, 0, 1, 107, 107, 105,
-			116, 2, 32, 0, 1, 107, 108, 97, 109, 2, 18, 75, 0, 1, 107, 108, 97, 161, 197, 0, 1, 107, 114, 147, 196, 112, 2, 110, 0, 1,
-			107, 114, 147, 196, 112, 2, 197, 134, 0, 1, 107, 115, 2, 108, 0, 1, 107, 115, 2, 108, 18, 69, 32, 0, 1, 107, 115, 97, 118, 0,
-			1, 107, 171, 197, 107, 0, 1, 108, 2, 32, 0, 1, 108, 2, 122, 18, 72, 32, 0, 1, 108, 103, 97, 2, 110, 18, 69, 32, 0, 1,
-			108, 103, 97, 110, 0, 1, 108, 103, 101, 2, 110, 0, 1, 108, 105, 97, 100, 2, 110, 0, 1, 108, 105, 100, 2, 110, 0, 1, 108, 105,
-			100, 2, 197, 134, 0, 1, 108, 105, 122, 2, 110, 0, 1, 108, 105, 122, 2, 197, 134, 0, 1, 108, 111, 107, 115, 2, 18, 74, 0, 1,
-			108, 111, 107, 115, 2, 18, 75, 0, 1, 108, 111, 115, 2, 115, 32, 0, 1, 108, 111, 115, 2, 116, 0, 1, 108, 111, 115, 2, 116, 32,
-			0, 1, 108, 111, 115, 2, 197, 161, 0, 1, 108, 115, 2, 103, 18, 68, 32, 0, 1, 108, 115, 2, 103, 111, 0, 1, 108, 147, 196, 2,
-			32, 0, 1, 108, 147, 196, 99, 0, 1, 108, 161, 197, 2, 103, 18, 68, 32, 0, 1, 109, 2, 32, 0, 1, 109, 105, 97, 122, 0, 1,
-			109, 115, 2, 107, 0, 1, 109, 115, 114, 101, 118, 0, 1, 109, 122, 105, 118, 0, 1, 110, 2, 32, 0, 1, 110, 2, 108, 105, 107, 0,
-			1, 110, 2, 109, 18, 69, 32, 0, 1, 110, 97, 161, 197, 0, 1, 110, 101, 116, 115, 2, 18, 74, 0, 1, 110, 101, 116, 115, 2, 18,
-			75, 0, 1, 110, 110, 97, 118, 0, 1, 112, 2, 32, 0, 1, 112, 2, 114, 97, 0, 1, 112, 2, 115, 116, 111, 0, 1, 112, 2, 115,
-			116, 196, 171, 0, 1, 114, 2, 32, 0, 1, 114, 2, 98, 101, 197, 190, 0, 1, 114, 2, 107, 116, 117, 0, 1, 114, 2, 122, 18, 72,
-			32, 0, 1, 114, 97, 98, 2, 107, 108, 0, 1, 114, 97, 98, 2, 107, 196, 188, 0, 1, 114, 98, 2, 32, 0, 1, 114, 100, 2, 32,
-			0, 1, 114, 103, 2, 122, 12, 0, 1, 114, 107, 2, 103, 0, 1, 114, 107, 2, 107, 111, 0, 1, 114, 107, 2, 112, 196, 188, 111, 0,
-			1, 114, 112, 97, 2, 99, 18, 72, 32, 0, 1, 114, 112, 97, 2, 107, 0, 1, 114, 116, 171, 196, 118, 115, 0, 1, 115, 2, 32, 0,
-			1, 115, 2, 108, 18, 68, 32, 0, 1, 115, 2, 108, 18, 70, 32, 0, 1, 115, 2, 108, 111, 116, 0, 1, 115, 2, 108, 111, 197, 161,
-			0, 1, 115, 2, 108, 196, 171, 18, 75, 0, 1, 116, 2, 32, 0, 1, 116, 2, 110, 18, 70, 32, 0, 1, 116, 2, 114, 110, 12, 0,
-			1, 116, 2, 114, 197, 134, 12, 0, 1, 116, 101, 105, 99, 2, 107, 0, 1, 116, 110, 97, 107, 0, 1, 116, 114, 111, 107, 2, 115, 32,
-			0, 1, 116, 114, 111, 112, 115, 0, 1, 116, 115, 2, 112, 111, 0, 1, 116, 117, 97, 188, 196, 0, 1, 116, 129, 196, 2, 32, 0, 1,
-			116, 147, 196, 2, 32, 0, 1, 116, 171, 196, 118, 2, 108, 18, 68, 32, 0, 1, 118, 2, 32, 0, 1, 118, 97, 0, 1, 118, 101, 105,
-			114, 0, 1, 118, 108, 97, 0, 1, 118, 129, 196, 108, 98, 0, 1, 118, 171, 196, 114, 98, 0, 1, 122, 2, 32, 0, 1, 122, 105, 98,
-			2, 18, 75, 12, 0, 1, 134, 197, 0, 1, 141, 196, 0, 1, 161, 197, 2, 32, 0, 1, 161, 197, 111, 2, 32, 0, 1, 161, 197, 117,
-			2, 32, 0, 1, 163, 196, 2, 32, 0, 1, 183, 196, 0, 1, 188, 196, 0, 1, 190, 197, 0, 2, 18, 67, 0, 2, 100, 101, 114, 101,
-			0, 2, 100, 101, 114, 196, 147, 0, 2, 110, 97, 107, 116, 32, 0, 2, 115, 32, 0, 2, 115, 116, 32, 0, 2, 116, 32, 12, 12, 0,
-			2, 116, 105, 101, 115, 32, 12, 0, 2, 197, 161, 115, 32, 0, 2, 197, 161, 197, 134, 0, 8, 2, 108, 18, 69, 32, 12, 0, 8, 2,
-			114, 18, 70, 32, 0, 8, 98, 2, 108, 97, 32, 0, 8, 98, 2, 108, 117, 0, 8, 98, 2, 108, 196, 129, 109, 32, 0, 8, 98, 2,
-			122, 18, 72, 32, 12, 0, 8, 98, 2, 122, 97, 32, 0, 8, 100, 2, 110, 18, 69, 32, 12, 12, 0, 8, 100, 171, 196, 112, 115, 2,
-			108, 18, 69, 32, 0, 8, 103, 2, 114, 97, 32, 0, 8, 103, 2, 114, 111, 115, 32, 12, 0, 8, 106, 2, 32, 0, 8, 106, 2, 122,
-			97, 32, 0, 8, 107, 2, 100, 18, 72, 32, 0, 8, 107, 2, 112, 18, 69, 32, 0, 8, 107, 2, 112, 196, 129, 32, 0, 8, 107, 2,
-			114, 18, 72, 32, 0, 8, 107, 2, 114, 97, 32, 0, 8, 107, 2, 114, 100, 105, 114, 0, 8, 107, 2, 114, 100, 122, 0, 8, 107, 2,
-			118, 196, 129, 114, 110, 18, 70, 32, 0, 8, 107, 101, 110, 2, 32, 0, 8, 107, 115, 2, 112, 18, 68, 32, 0, 8, 107, 115, 97, 112,
-			2, 112, 18, 68, 32, 0, 8, 108, 2, 103, 18, 68, 32, 0, 8, 108, 2, 110, 18, 72, 32, 0, 8, 108, 105, 112, 2, 116, 32, 0,
-			8, 108, 147, 196, 116, 2, 116, 117, 32, 0, 8, 109, 2, 100, 18, 72, 32, 0, 8, 109, 105, 97, 108, 2, 110, 18, 70, 32, 0, 8,
-			109, 117, 107, 2, 100, 18, 72, 32, 0, 8, 110, 2, 12, 0, 8, 112, 2, 108, 18, 70, 32, 0, 8, 112, 2, 108, 105, 101, 0, 8,
-			112, 2, 108, 105, 106, 18, 69, 32, 0, 8, 112, 2, 112, 18, 72, 32, 0, 8, 112, 2, 196, 188, 0, 8, 112, 129, 196, 114, 2, 32,
-			0, 8, 114, 2, 109, 18, 69, 32, 0, 8, 114, 101, 116, 115, 2, 115, 32, 0, 8, 114, 112, 2, 106, 196, 129, 109, 32, 0, 8, 114,
-			112, 2, 109, 32, 0, 8, 114, 112, 2, 109, 98, 0, 8, 114, 112, 2, 109, 101, 115, 0, 8, 114, 116, 115, 2, 112, 18, 68, 32, 0,
-			8, 114, 116, 115, 97, 107, 2, 108, 18, 70, 32, 0, 8, 116, 2, 12, 0, 8, 116, 2, 114, 101, 105, 122, 32, 0, 8, 116, 2, 114,
-			117, 100, 0, 8, 116, 2, 122, 105, 101, 109, 32, 0, 8, 116, 97, 100, 2, 115, 32, 0, 8, 116, 110, 111, 107, 2, 115, 32, 0, 8,
-			116, 110, 111, 108, 98, 2, 115, 32, 0, 8, 116, 115, 2, 114, 18, 72, 32, 0, 8, 116, 115, 97, 115, 2, 112, 97, 109, 32, 0, 8,
-			134, 197, 161, 197, 2, 114, 18, 70, 32, 0, 8, 161, 197, 2, 122, 105, 101, 109, 32, 0, 8, 183, 196, 161, 197, 2, 114, 18, 70, 32,
-			0, 116, 111, 2, 32, 3, 119, 47, 119, 0, 112, 8, 114, 116, 2, 18, 68, 32, 3, 119, 48, 0, 4, 112, 111, 1, 107, 3, 119, 48,
-			119, 0, 112, 111, 1, 116, 2, 116, 0, 112, 111, 1, 116, 2, 197, 161, 0, 108, 1, 112, 171, 196, 115, 2, 18, 68, 32, 3, 119, 55,
-			0, 4, 108, 111, 1, 107, 115, 3, 119, 55, 119, 0, 108, 111, 1, 108, 2, 18, 75, 0, 108, 111, 8, 108, 2, 18, 74, 0, 98, 111,
-			8, 114, 2, 116, 32, 3, 119, 71, 119, 0, 4, 100, 111, 1, 107, 2, 108, 3, 119, 72, 119, 0, 100, 111, 8, 2, 115, 32, 0, 103,
-			1, 114, 112, 115, 3, 119, 81, 0, 122, 111, 2, 108, 18, 68, 32, 3, 119, 88, 119, 0, 115, 116, 1, 114, 112, 115, 3, 119, 89, 47,
-			0, 115, 116, 111, 2, 18, 75, 3, 119, 89, 47, 119, 0, 7, 6, 112, 0, 3, 48, 0, 117, 115, 8, 3, 48, 40, 89, 0, 7, 6,
-			113, 0, 3, 49, 84, 0, 7, 6, 114, 0, 3, 52, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 1, 115, 2,
-			115, 3, 47, 12, 0, 111, 8, 2, 32, 3, 47, 119, 0, 7, 6, 117, 0, 3, 40, 0, 105, 3, 121, 0, 7, 6, 118, 0, 3, 84,
-			0, 105, 115, 8, 3, 84, 37, 89, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 57,
-			0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 4, 35, 1, 35, 3, 0, 4, 39, 3, 0, 4, 46, 1,
-			46, 3, 0, 58, 1, 32, 15, 2, 32, 15, 15, 32, 3, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 37, 88, 89, 118, 49, 40, 65,
-			88, 108, 65, 36, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 35, 1, 35,
-			35, 2, 32, 3, 24, 0, 58, 3, 49, 39, 55, 89, 0, 33, 61, 3, 50, 35, 84, 15, 84, 122, 50, 113, 72, 89, 0, 4, 35, 1,
-			32, 17, 65, 3, 52, 36, 89, 47, 108, 47, 36, 0, 35, 1, 32, 17, 67, 0, 62, 61, 3, 55, 6, 122, 55, 113, 49, 89, 15, 4,
-			84, 116, 15, 84, 6, 122, 50, 113, 72, 89, 0, 60, 61, 3, 65, 35, 88, 113, 49, 89, 15, 4, 84, 116, 15, 84, 6, 122, 50, 113,
-			72, 89, 0, 45, 8, 32, 2, 32, 15, 3, 65, 108, 50, 40, 89, 0, 36, 3, 72, 39, 55, 113, 34, 37, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts39 = FileInMemory_createWithData (12327, reinterpret_cast<const char *> (&espeakdata_dicts39_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/lv_dict", 
+		static unsigned char espeakdata_dicts42_data[12294] = {
+			0, 4, 0, 0, 38, 18, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 7, 196, 5, 0, 75, 212, 72, 5, 194, 5, 0,
+			72, 0, 20, 67, 76, 16, 128, 89, 35, 71, 122, 72, 52, 108, 71, 35, 0, 44, 81, 98, 97, 32, 0, 0, 6, 65, 8, 71, 36, 0,
+			0, 0, 0, 0, 7, 196, 77, 64, 82, 64, 72, 6, 65, 12, 124, 36, 0, 0, 0, 0, 10, 199, 36, 226, 207, 28, 226, 84, 60, 15,
+			0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 14, 4, 95, 100, 112, 116, 49, 6, 39, 65, 35, 124, 10, 0, 0, 5, 65, 20, 36, 0,
+			0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 0, 6, 195, 12, 21, 82, 72, 0, 0, 12, 67, 76, 176, 84, 89, 49,
+			35, 47, 108, 47, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 9, 198, 76, 243, 6, 20, 78, 79, 15, 9, 198, 76, 243, 6, 20,
+			78, 79, 66, 0, 10, 1, 36, 72, 39, 55, 113, 52, 37, 0, 5, 65, 36, 37, 0, 0, 13, 1, 37, 48, 52, 39, 124, 36, 50, 47,
+			37, 0, 27, 0, 6, 1, 38, 40, 50, 0, 8, 1, 38, 11, 2, 40, 50, 0, 0, 0, 6, 65, 40, 57, 36, 0, 0, 0, 6, 195,
+			28, 20, 128, 72, 14, 1, 42, 88, 84, 116, 81, 88, 50, 108, 47, 36, 0, 27, 0, 7, 196, 9, 37, 78, 60, 15, 7, 196, 9, 32,
+			86, 60, 15, 9, 198, 64, 21, 137, 76, 19, 64, 66, 10, 1, 43, 48, 55, 40, 89, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0,
+			0, 19, 67, 76, 21, 128, 89, 35, 84, 122, 50, 108, 71, 35, 0, 44, 81, 98, 97, 32, 0, 15, 1, 47, 89, 55, 108, 48, 89, 84,
+			108, 47, 51, 35, 0, 27, 0, 13, 4, 95, 100, 105, 97, 6, 40, 65, 55, 118, 124, 0, 6, 65, 48, 36, 55, 0, 0, 9, 66, 49,
+			0, 55, 35, 48, 35, 0, 0, 0, 0, 6, 65, 52, 36, 65, 0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 5,
+			65, 60, 119, 0, 0, 13, 1, 61, 10, 84, 122, 50, 113, 72, 89, 10, 0, 27, 0, 0, 0, 7, 1, 64, 35, 47, 9, 0, 6, 65,
+			64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 115, 0, 0, 0, 0, 0, 7, 65, 72, 36, 51, 52, 0, 0, 5, 194, 5, 32,
+			72, 0, 0, 13, 4, 95, 100, 111, 116, 48, 6, 40, 50, 49, 124, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 7, 196, 64, 19,
+			142, 60, 15, 11, 195, 44, 21, 84, 66, 81, 107, 196, 129, 32, 11, 195, 44, 21, 84, 66, 81, 99, 105, 107, 32, 0, 6, 65, 80, 47,
+			109, 0, 0, 0, 0, 12, 137, 107, 111, 109, 117, 110, 105, 107, 196, 147, 68, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88,
+			84, 36, 0, 0, 0, 0, 0, 25, 1, 92, 6, 35, 48, 81, 52, 122, 88, 47, 113, 15, 89, 55, 6, 108, 48, 89, 84, 108, 47, 51,
+			35, 0, 13, 65, 92, 72, 40, 71, 40, 55, 47, 6, 84, 36, 0, 0, 0, 0, 0, 18, 4, 95, 49, 77, 49, 47, 6, 115, 49, 89,
+			47, 119, 12, 47, 37, 89, 0, 7, 65, 96, 37, 49, 89, 0, 0, 15, 4, 95, 49, 77, 50, 65, 6, 37, 55, 57, 114, 50, 89, 0,
+			0, 0, 0, 9, 65, 100, 37, 81, 52, 36, 49, 0, 0, 0, 0, 0, 6, 65, 104, 88, 36, 0, 0, 0, 13, 67, 36, 84, 203, 122,
+			89, 49, 116, 47, 119, 47, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 8, 83, 132, 228, 240, 15, 0, 0, 0, 0, 0, 14, 4, 95,
+			48, 67, 111, 89, 6, 37, 65, 47, 116, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55,
+			72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 100, 196, 147, 196, 188, 72, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 33, 81, 207, 15, 7, 195, 8, 85, 0, 72, 8, 0, 0, 0, 0, 0, 7, 196, 64, 148, 141, 76, 72, 0,
+			0, 0, 0, 0, 0, 7, 132, 112, 196, 129, 114, 72, 0, 0, 0, 0, 0, 0, 0, 10, 199, 52, 144, 210, 61, 51, 198, 80, 15, 9,
+			198, 64, 19, 1, 36, 176, 77, 66, 0, 12, 66, 17, 32, 72, 39, 49, 47, 114, 52, 89, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64,
+			144, 78, 60, 66, 0, 0, 0, 9, 198, 5, 85, 15, 52, 245, 15, 15, 0, 9, 4, 95, 111, 114, 100, 116, 89, 0, 0, 0, 14, 4,
+			95, 109, 99, 110, 65, 6, 35, 49, 52, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 64, 145, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 21, 48, 72, 0,
+			0, 8, 197, 40, 80, 139, 85, 32, 66, 0, 0, 0, 6, 195, 84, 227, 192, 15, 6, 195, 104, 83, 64, 72, 0, 0, 0, 0, 0, 16,
+			3, 95, 35, 57, 47, 35, 71, 40, 55, 35, 47, 114, 52, 89, 0, 0, 0, 0, 8, 197, 76, 243, 133, 72, 16, 15, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 65, 52, 147, 13, 0, 0, 8, 197, 8, 243, 5, 72, 240, 15, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 112, 196, 147, 99, 72, 0, 0, 0, 0, 15, 67, 24, 80, 146, 83, 36, 71, 52, 40, 113,
+			52, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 118, 105, 197, 134, 197, 161, 72, 0, 0, 0, 0, 0, 0, 8, 197, 44, 22,
+			137, 56, 240, 15, 8, 197, 36, 225, 9, 28, 240, 15, 8, 197, 24, 144, 83, 44, 240, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 64, 20, 128, 72, 0, 0, 6, 195, 4, 227, 143, 15, 7, 196, 56, 82, 193, 16, 66, 0, 0, 0,
+			0, 0, 11, 66, 17, 160, 72, 88, 37, 65, 37, 89, 0, 8, 66, 17, 160, 72, 88, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			11, 195, 56, 86, 128, 66, 81, 107, 97, 100, 32, 0, 0, 0, 0, 6, 195, 8, 86, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			9, 198, 49, 83, 66, 4, 115, 192, 15, 0, 0, 0, 0, 0, 9, 198, 80, 146, 214, 36, 83, 128, 66, 9, 198, 4, 150, 150, 36, 83,
+			128, 66, 0, 0, 0, 0, 0, 0, 12, 67, 64, 17, 192, 48, 35, 81, 35, 89, 124, 0, 9, 3, 226, 130, 172, 117, 52, 114, 0, 9,
+			3, 226, 130, 172, 117, 51, 39, 0, 0, 0, 0, 0, 13, 3, 226, 130, 168, 52, 115, 48, 108, 57, 35, 89, 0, 0, 0, 0, 0, 12,
+			67, 64, 18, 192, 48, 35, 49, 113, 48, 36, 0, 0, 0, 7, 196, 80, 84, 1, 80, 66, 14, 4, 95, 111, 103, 111, 6, 39, 81, 39,
+			50, 36, 49, 0, 0, 0, 0, 10, 135, 103, 97, 108, 105, 102, 196, 147, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76,
+			19, 66, 60, 15, 0, 0, 9, 198, 52, 17, 83, 81, 35, 192, 15, 9, 198, 52, 17, 83, 81, 35, 192, 66, 0, 0, 0, 0, 0, 0,
+			13, 4, 95, 98, 114, 118, 6, 108, 89, 40, 65, 35, 0, 0, 0, 0, 0, 19, 4, 95, 97, 99, 50, 72, 6, 40, 71, 40, 55, 124,
+			35, 49, 57, 115, 47, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 24, 245, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+			196, 19, 149, 68, 60, 15, 0, 0, 0, 7, 196, 81, 34, 75, 60, 15, 0, 17, 3, 95, 51, 88, 47, 51, 6, 108, 89, 72, 36, 89,
+			65, 37, 47, 0, 0, 13, 3, 95, 48, 67, 89, 6, 37, 65, 47, 37, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49,
+			67, 89, 6, 37, 65, 124, 0, 0, 0, 0, 0, 8, 197, 5, 37, 137, 20, 224, 66, 0, 0, 19, 3, 95, 49, 57, 72, 6, 36, 84,
+			37, 67, 48, 35, 72, 89, 65, 37, 47, 0, 0, 19, 3, 95, 49, 56, 6, 35, 89, 47, 119, 67, 48, 35, 72, 89, 65, 37, 47, 0,
+			0, 0, 12, 67, 48, 21, 0, 55, 35, 47, 108, 67, 40, 0, 0, 0, 0, 0, 12, 3, 226, 136, 146, 65, 108, 50, 40, 89, 89, 0,
+			0, 17, 3, 95, 49, 49, 84, 6, 122, 50, 48, 35, 72, 89, 65, 37, 47, 0, 0, 13, 3, 95, 49, 48, 72, 6, 36, 89, 65, 37,
+			47, 0, 0, 18, 3, 95, 49, 51, 47, 51, 6, 108, 89, 48, 35, 72, 89, 65, 37, 47, 0, 0, 17, 3, 95, 49, 50, 72, 6, 37,
+			84, 48, 35, 72, 89, 65, 37, 47, 0, 0, 17, 3, 95, 49, 53, 48, 6, 122, 124, 48, 35, 72, 89, 65, 37, 47, 0, 0, 18, 3,
+			95, 49, 52, 76, 6, 36, 47, 52, 48, 35, 72, 89, 65, 37, 47, 0, 0, 20, 3, 95, 49, 55, 89, 6, 36, 48, 47, 37, 67, 48,
+			35, 72, 89, 65, 37, 47, 0, 0, 17, 3, 95, 49, 54, 89, 6, 36, 91, 48, 35, 72, 89, 65, 37, 47, 0, 0, 7, 196, 16, 147,
+			135, 60, 15, 0, 19, 3, 95, 55, 88, 89, 6, 36, 48, 47, 37, 67, 72, 36, 89, 65, 37, 47, 0, 0, 0, 6, 195, 88, 85, 15,
+			15, 6, 195, 16, 84, 15, 15, 0, 0, 9, 198, 64, 20, 9, 48, 224, 77, 66, 0, 13, 3, 95, 49, 111, 48, 6, 37, 52, 65, 116,
+			89, 0, 0, 0, 8, 197, 40, 80, 139, 4, 64, 66, 0, 0, 0, 0, 8, 197, 65, 34, 69, 47, 80, 72, 0, 13, 4, 95, 97, 99,
+			117, 6, 35, 49, 57, 115, 47, 0, 0, 12, 3, 95, 50, 111, 6, 39, 47, 52, 116, 89, 0, 0, 0, 7, 196, 9, 37, 84, 60, 15,
+			17, 5, 112, 114, 45, 107, 115, 48, 52, 122, 49, 91, 50, 122, 49, 89, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 111, 47, 51,
+			6, 36, 91, 116, 89, 0, 0, 0, 10, 66, 49, 48, 55, 35, 47, 37, 0, 41, 0, 16, 3, 95, 50, 88, 72, 6, 37, 84, 72, 36,
+			89, 65, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 63, 63, 52, 35, 49, 89, 47, 88, 108,
+			65, 36, 0, 13, 3, 95, 53, 111, 48, 6, 122, 49, 47, 116, 89, 0, 0, 0, 14, 67, 40, 19, 150, 57, 35, 50, 84, 113, 52, 37,
+			89, 0, 5, 194, 37, 160, 72, 0, 17, 3, 95, 52, 88, 76, 6, 36, 47, 52, 72, 36, 89, 65, 37, 47, 0, 0, 0, 0, 0, 0,
+			13, 3, 95, 54, 111, 89, 6, 36, 89, 47, 116, 89, 0, 0, 0, 0, 17, 3, 95, 53, 88, 48, 6, 122, 124, 72, 4, 36, 89, 65,
+			37, 47, 0, 0, 0, 12, 4, 95, 114, 110, 103, 52, 6, 37, 50, 81, 0, 0, 0, 0, 15, 3, 95, 55, 111, 89, 6, 36, 48, 47,
+			108, 47, 116, 89, 0, 0, 0, 5, 194, 49, 80, 13, 0, 6, 195, 60, 67, 192, 15, 16, 3, 95, 54, 88, 89, 6, 36, 91, 72, 36,
+			89, 65, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 72, 85, 18, 60, 15, 0, 13, 67, 5, 4, 128, 35, 48, 52, 108, 55,
+			37, 89, 0, 0, 0, 0, 0, 0, 14, 3, 95, 57, 111, 72, 6, 36, 84, 108, 47, 116, 89, 0, 0, 0, 10, 66, 57, 32, 50, 40,
+			65, 40, 52, 0, 0, 18, 3, 95, 56, 88, 6, 35, 89, 47, 119, 67, 72, 36, 89, 65, 37, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 18, 3, 95, 57, 88, 72, 6, 36, 84, 37, 67, 72, 36, 89, 65, 37, 47, 0, 0, 0, 0, 0, 0, 13, 4, 106, 197, 171, 108,
+			57, 115, 55, 37, 57, 89, 0, 0, 0, 13, 4, 106, 197, 171, 110, 57, 115, 50, 37, 57, 89, 0, 10, 3, 95, 63, 65, 71, 40, 52,
+			124, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 52, 111, 76, 6, 36, 47, 40, 51, 47, 116, 89, 0, 0, 13, 4, 95, 115, 116, 107,
+			89, 47, 34, 6, 114, 49, 0, 0, 0, 11, 3, 226, 153, 175, 72, 122, 12, 88, 89, 0, 0, 0, 12, 3, 226, 153, 173, 71, 36, 65,
+			114, 55, 89, 0, 0, 0, 0, 0, 0, 0, 12, 3, 97, 47, 115, 35, 49, 80, 37, 57, 40, 0, 0, 7, 132, 106, 197, 171, 115, 72,
+			0, 0, 7, 66, 19, 144, 75, 109, 0, 0, 0, 0, 0, 0, 5, 194, 64, 16, 72, 0, 12, 67, 64, 17, 0, 48, 35, 72, 119, 65,
+			36, 0, 0, 0, 0, 10, 135, 112, 111, 114, 116, 106, 196, 147, 66, 0, 12, 4, 197, 161, 196, 183, 91, 80, 37, 52, 35, 0, 0, 0,
+			0, 5, 194, 57, 80, 72, 19, 4, 95, 99, 105, 114, 72, 6, 37, 35, 49, 52, 37, 47, 37, 89, 49, 113, 0, 0, 6, 195, 61, 67,
+			192, 15, 21, 67, 52, 147, 128, 65, 37, 50, 37, 89, 47, 52, 37, 57, 35, 0, 44, 81, 106, 97, 32, 14, 67, 52, 147, 128, 65, 37,
+			50, 37, 65, 40, 65, 89, 0, 0, 0, 0, 14, 3, 95, 56, 111, 6, 35, 89, 47, 39, 47, 116, 89, 0, 15, 4, 95, 48, 77, 50,
+			65, 6, 37, 55, 57, 114, 50, 37, 0, 0, 0, 0, 8, 197, 72, 242, 207, 44, 240, 15, 17, 4, 95, 48, 77, 49, 47, 6, 115, 49,
+			89, 47, 119, 12, 91, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 48, 16, 129, 16, 72, 0, 0, 16, 4, 95, 108, 105, 103,
+			55, 6, 37, 81, 35, 47, 115, 52, 35, 0, 0, 0, 0, 0, 15, 67, 56, 245, 128, 50, 39, 84, 36, 65, 71, 52, 37, 89, 0, 0,
+			7, 196, 52, 85, 18, 60, 15, 0, 0, 0, 0, 0, 0, 10, 135, 97, 116, 101, 108, 106, 196, 147, 67, 0, 6, 195, 4, 150, 128, 72,
+			0, 0, 0, 0, 0, 0, 8, 197, 16, 243, 73, 56, 240, 15, 0, 0, 0, 0, 9, 134, 118, 105, 197, 134, 97, 115, 72, 0, 13, 67,
+			48, 21, 22, 55, 35, 47, 84, 122, 91, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 108, 196, 171, 100,
+			122, 72, 0, 14, 4, 95, 99, 101, 100, 89, 6, 36, 72, 108, 55, 35, 0, 0, 0, 0, 0, 6, 195, 65, 33, 84, 72, 0, 0, 0,
+			0, 0, 0, 0, 11, 136, 102, 114, 105, 107, 97, 115, 196, 147, 67, 0, 12, 4, 95, 99, 97, 112, 55, 122, 55, 116, 89, 0, 0, 0,
+			0, 0, 0, 0, 0, 12, 3, 95, 194, 180, 35, 49, 124, 36, 50, 124, 0, 0, 0, 0, 0, 14, 67, 56, 244, 192, 50, 119, 89, 118,
+			49, 40, 65, 89, 0, 0, 0, 0, 0, 6, 195, 72, 242, 211, 15, 6, 65, 188, 76, 36, 0, 0, 0, 0, 14, 3, 95, 194, 171, 48,
+			6, 109, 72, 37, 67, 35, 89, 0, 0, 16, 5, 100, 122, 196, 171, 118, 72, 88, 108, 84, 119, 57, 37, 89, 0, 0, 0, 27, 3, 95,
+			194, 166, 89, 6, 35, 72, 35, 55, 108, 47, 35, 15, 89, 47, 6, 113, 84, 89, 84, 108, 47, 52, 35, 0, 0, 0, 0, 0, 7, 196,
+			72, 19, 175, 60, 15, 0, 0, 6, 195, 48, 81, 207, 15, 0, 0, 0, 10, 135, 107, 97, 110, 97, 112, 196, 147, 67, 0, 0, 0, 7,
+			196, 188, 83, 12, 60, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
+			73, 2, 64, 13, 0, 12, 137, 116, 117, 114, 112, 114, 101, 116, 196, 171, 66, 0, 0, 0, 14, 67, 60, 181, 0, 39, 49, 47, 114, 71,
+			52, 37, 89, 0, 11, 136, 100, 101, 107, 111, 108, 116, 196, 147, 67, 0, 0, 0, 28, 3, 95, 194, 191, 6, 35, 48, 81, 52, 122, 88,
+			47, 113, 15, 57, 6, 118, 47, 113, 57, 40, 65, 88, 108, 65, 36, 0, 0, 0, 0, 0, 19, 3, 95, 194, 187, 48, 6, 109, 72, 37,
+			67, 35, 89, 15, 124, 6, 122, 47, 0, 0, 0, 0, 0, 9, 134, 116, 196, 129, 112, 97, 116, 66, 0, 0, 0, 0, 12, 4, 95, 103,
+			114, 118, 81, 52, 6, 113, 84, 0, 0, 6, 2, 196, 129, 113, 0, 0, 7, 2, 197, 134, 36, 67, 0, 0, 8, 2, 195, 151, 52, 117,
+			88, 0, 0, 9, 66, 77, 64, 89, 35, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 167, 89, 36, 49, 124, 37, 57, 35,
+			0, 0, 5, 194, 56, 240, 72, 0, 12, 67, 56, 241, 0, 50, 119, 72, 35, 61, 35, 0, 10, 2, 194, 165, 57, 109, 50, 35, 89, 0,
+			0, 10, 2, 194, 162, 124, 36, 50, 47, 37, 0, 0, 14, 4, 98, 45, 98, 97, 71, 122, 72, 52, 108, 71, 35, 0, 13, 2, 194, 163,
+			65, 113, 52, 124, 37, 67, 35, 89, 0, 6, 2, 196, 147, 109, 0, 0, 0, 0, 14, 2, 194, 174, 52, 36, 79, 37, 89, 47, 52, 109,
+			124, 0, 0, 7, 2, 197, 151, 36, 34, 0, 0, 0, 0, 0, 0, 0, 16, 2, 194, 169, 118, 47, 114, 52, 47, 122, 89, 108, 71, 35,
+			89, 0, 0, 14, 2, 194, 182, 48, 35, 52, 35, 81, 52, 113, 83, 89, 0, 0, 0, 0, 10, 2, 194, 181, 65, 37, 49, 51, 114, 0,
+			0, 0, 7, 2, 196, 163, 79, 36, 0, 0, 10, 2, 194, 176, 81, 52, 113, 72, 37, 0, 0, 15, 2, 194, 177, 48, 55, 40, 89, 65,
+			108, 50, 40, 89, 89, 0, 0, 23, 2, 194, 190, 47, 52, 6, 108, 89, 15, 124, 4, 36, 47, 40, 52, 47, 72, 35, 61, 35, 89, 0,
+			0, 10, 2, 195, 183, 72, 35, 55, 108, 124, 0, 0, 11, 66, 77, 96, 89, 84, 109, 47, 116, 89, 0, 17, 2, 194, 188, 124, 6, 36,
+			47, 40, 52, 47, 72, 4, 35, 61, 35, 0, 0, 9, 2, 194, 189, 48, 40, 89, 36, 0, 0, 7, 196, 24, 16, 212, 60, 15, 0, 6,
+			2, 196, 171, 108, 0, 0, 0, 0, 0, 7, 2, 196, 183, 80, 36, 0, 0, 0, 0, 0, 6, 2, 197, 171, 115, 0, 0, 0, 7, 195,
+			88, 18, 64, 72, 8, 0, 0, 0, 8, 197, 81, 84, 144, 5, 64, 66, 5, 194, 81, 80, 72, 7, 2, 196, 188, 36, 61, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 8, 197, 4, 64, 68, 228, 240, 15, 8, 197, 4, 64, 68, 228, 240, 66, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 6, 195, 88, 148, 147, 72, 0, 0, 0, 0, 0, 10, 199, 21, 52, 5, 72, 19, 148, 60, 15, 0, 0, 6, 195, 36, 82, 245, 72,
+			0, 0, 16, 67, 76, 84, 20, 89, 36, 48, 47, 36, 65, 71, 52, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 4,
+			146, 201, 16, 240, 15, 0, 0, 0, 0, 0, 6, 195, 52, 245, 15, 15, 6, 195, 52, 245, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 132, 109, 196, 147, 115, 72, 0, 0, 0, 0, 0, 0, 12, 67, 72, 18, 128, 52, 35, 57, 119, 50, 89, 0, 0,
+			0, 0, 0, 13, 67, 8, 146, 128, 71, 37, 57, 40, 91, 116, 89, 0, 12, 2, 95, 35, 34, 36, 89, 47, 108, 47, 36, 0, 0, 12,
+			2, 95, 34, 48, 109, 72, 37, 67, 35, 89, 0, 0, 16, 2, 95, 33, 37, 88, 89, 118, 49, 40, 65, 88, 108, 65, 36, 0, 0, 9,
+			198, 64, 21, 12, 4, 32, 78, 66, 0, 14, 2, 95, 39, 35, 48, 39, 89, 47, 34, 114, 83, 89, 0, 0, 0, 0, 0, 0, 0, 16,
+			2, 95, 41, 6, 122, 49, 35, 84, 35, 15, 124, 6, 122, 47, 0, 0, 11, 2, 95, 40, 6, 122, 49, 35, 84, 35, 0, 0, 0, 10,
+			2, 95, 46, 48, 40, 50, 49, 124, 0, 0, 11, 2, 95, 45, 65, 108, 50, 40, 89, 89, 0, 0, 10, 2, 95, 44, 49, 39, 65, 35,
+			124, 0, 0, 9, 2, 95, 51, 47, 51, 108, 89, 0, 0, 10, 2, 95, 50, 72, 6, 37, 84, 37, 0, 0, 10, 2, 95, 49, 84, 6,
+			122, 50, 89, 0, 0, 7, 196, 32, 19, 12, 60, 15, 11, 2, 95, 48, 50, 6, 40, 55, 55, 36, 0, 0, 13, 2, 95, 55, 89, 6,
+			36, 48, 47, 37, 67, 37, 0, 0, 10, 2, 95, 54, 89, 6, 36, 91, 37, 0, 0, 11, 136, 112, 105, 97, 110, 196, 171, 110, 111, 15,
+			10, 2, 95, 53, 48, 6, 122, 124, 37, 0, 0, 6, 195, 228, 16, 143, 15, 11, 2, 95, 52, 76, 6, 36, 47, 52, 37, 0, 0, 13,
+			2, 95, 59, 89, 36, 65, 37, 49, 114, 55, 89, 0, 0, 9, 2, 95, 58, 49, 114, 55, 89, 0, 0, 12, 2, 95, 57, 72, 6, 36,
+			84, 37, 67, 37, 0, 0, 12, 2, 95, 56, 6, 35, 89, 47, 119, 67, 37, 0, 0, 16, 2, 95, 63, 57, 118, 47, 113, 57, 40, 65,
+			88, 108, 65, 36, 0, 0, 17, 2, 95, 62, 55, 6, 122, 55, 113, 49, 89, 15, 48, 6, 35, 52, 0, 0, 0, 17, 2, 95, 60, 65,
+			6, 35, 88, 113, 49, 89, 15, 48, 6, 35, 52, 0, 0, 0, 0, 0, 7, 2, 95, 64, 35, 47, 0, 0, 0, 0, 0, 0, 8, 197,
+			44, 20, 212, 72, 240, 15, 0, 0, 0, 0, 0, 0, 6, 65, 212, 36, 91, 0, 0, 0, 15, 67, 16, 80, 192, 72, 36, 80, 36, 65,
+			71, 52, 37, 89, 0, 0, 0, 0, 5, 194, 85, 160, 72, 0, 0, 0, 0, 9, 198, 64, 20, 133, 80, 19, 64, 66, 0, 18, 2, 95,
+			91, 49, 84, 6, 35, 72, 52, 113, 47, 122, 49, 35, 84, 35, 0, 0, 0, 0, 15, 4, 95, 226, 128, 146, 72, 119, 65, 40, 88, 108,
+			65, 36, 0, 0, 20, 2, 95, 95, 48, 35, 89, 84, 108, 47, 52, 119, 57, 40, 65, 88, 108, 65, 36, 0, 0, 10, 2, 95, 94, 89,
+			35, 49, 50, 36, 0, 0, 23, 2, 95, 93, 49, 84, 6, 35, 72, 52, 113, 47, 122, 49, 35, 84, 35, 15, 124, 6, 122, 47, 0, 0,
+			27, 4, 95, 226, 128, 150, 72, 6, 40, 71, 40, 55, 124, 47, 113, 89, 47, 4, 113, 84, 89, 84, 108, 47, 52, 35, 0, 0, 15, 67,
+			24, 18, 192, 83, 35, 49, 40, 55, 47, 113, 47, 36, 0, 9, 134, 102, 111, 97, 106, 196, 147, 67, 0, 0, 0, 26, 2, 95, 96, 6,
+			35, 48, 81, 52, 122, 88, 47, 116, 89, 15, 6, 35, 48, 39, 89, 47, 52, 39, 83, 89, 0, 0, 0, 0, 0, 0, 0, 9, 198, 56,
+			84, 1, 72, 179, 192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76, 36, 49, 0, 0, 0,
+			0, 0, 0, 0, 16, 2, 95, 123, 83, 6, 37, 81, 115, 52, 122, 49, 35, 84, 35, 0, 0, 9, 198, 20, 208, 129, 72, 115, 192, 15,
+			0, 0, 0, 0, 10, 2, 95, 126, 47, 37, 55, 72, 36, 0, 0, 21, 2, 95, 125, 83, 6, 37, 81, 115, 52, 122, 49, 35, 84, 35,
+			15, 124, 6, 122, 47, 0, 0, 12, 137, 112, 114, 111, 116, 101, 197, 190, 196, 147, 67, 15, 2, 95, 124, 89, 47, 113, 84, 89, 84, 108,
+			47, 52, 35, 0, 0, 0, 0, 13, 138, 112, 97, 116, 105, 101, 197, 161, 196, 129, 109, 66, 0, 0, 0, 0, 0, 9, 198, 64, 17, 193,
+			48, 19, 64, 66, 0, 0, 0, 0, 6, 194, 84, 224, 72, 8, 0, 0, 0, 0, 0, 0, 0, 16, 67, 52, 18, 211, 65, 35, 49, 89,
+			37, 65, 113, 55, 116, 89, 0, 0, 7, 196, 44, 18, 193, 60, 15, 7, 196, 8, 147, 135, 60, 15, 7, 196, 44, 18, 193, 60, 66, 0,
+			0, 0, 0, 14, 4, 95, 35, 51, 50, 47, 40, 49, 91, 40, 65, 89, 0, 0, 0, 0, 0, 0, 7, 196, 56, 82, 213, 72, 66, 0,
+			0, 9, 198, 37, 67, 133, 45, 84, 128, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36,
+			229, 5, 72, 209, 67, 60, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 49, 101, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 8, 133, 118, 105, 197, 134, 97, 72, 0, 0, 8, 197, 80, 146, 208, 5, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 44, 244, 53, 72, 0, 0, 0, 0, 8, 133, 118, 105, 197, 134, 105, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 65, 228, 90, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 81,
+			34, 77, 60, 15, 0, 0, 0, 0, 0, 0, 8, 197, 8, 19, 132, 228, 240, 15, 0, 0, 0, 13, 67, 64, 145, 77, 48, 122, 65, 109,
+			52, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 196, 56, 86, 137, 56, 67, 81, 107, 117, 114, 32, 0, 0, 6, 18, 66, 102,
+			0, 104, 0, 119, 0, 120, 0, 7, 6, 18, 67, 196, 141, 0, 196, 183, 0, 196, 188, 0, 197, 134, 0, 197, 190, 0, 7, 6, 18, 68,
+			105, 101, 109, 0, 97, 109, 0, 111, 115, 0, 196, 129, 0, 115, 0, 97, 0, 117, 0, 105, 0, 7, 6, 18, 69, 196, 129, 109, 0, 196,
+			129, 115, 0, 97, 115, 0, 97, 105, 0, 196, 129, 0, 117, 0, 97, 0, 7, 6, 18, 70, 105, 101, 109, 0, 105, 115, 0, 105, 109, 0,
+			111, 115, 0, 196, 171, 0, 105, 0, 7, 6, 18, 71, 196, 129, 0, 97, 0, 7, 6, 18, 72, 196, 147, 109, 0, 196, 147, 115, 0, 101,
+			115, 0, 101, 105, 0, 196, 147, 0, 101, 0, 105, 0, 117, 0, 7, 6, 18, 73, 97, 109, 105, 101, 115, 0, 97, 109, 196, 129, 115, 0,
+			97, 109, 97, 115, 0, 97, 109, 97, 0, 97, 109, 105, 0, 97, 109, 115, 0, 7, 6, 18, 74, 197, 161, 0, 115, 0, 7, 6, 18, 75,
+			116, 0, 100, 0, 106, 0, 7, 6, 18, 76, 105, 101, 109, 0, 111, 115, 0, 105, 0, 117, 0, 7, 6, 18, 77, 105, 101, 109, 0, 97,
+			109, 0, 111, 115, 0, 196, 129, 0, 115, 0, 7, 6, 18, 78, 196, 147, 0, 101, 0, 7, 6, 196, 129, 0, 3, 113, 0, 7, 6, 196,
+			141, 0, 3, 76, 0, 7, 6, 196, 147, 0, 3, 109, 0, 7, 6, 196, 163, 0, 3, 79, 0, 7, 6, 196, 171, 0, 3, 108, 0, 7,
+			6, 196, 183, 0, 3, 80, 0, 7, 6, 196, 188, 0, 4, 1, 107, 2, 117, 3, 55, 57, 0, 1, 107, 2, 117, 0, 3, 61, 0, 7,
+			6, 197, 134, 0, 3, 67, 0, 7, 6, 197, 141, 0, 3, 114, 0, 7, 6, 197, 151, 0, 3, 34, 0, 7, 6, 197, 161, 0, 3, 91,
+			0, 7, 6, 197, 171, 0, 3, 115, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 3, 35, 0, 112, 3, 35, 48, 0, 105,
+			3, 116, 0, 117, 3, 118, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 104, 3, 76, 0, 3, 124, 0, 4, 104, 1, 105, 114,
+			100, 105, 114, 102, 2, 115, 3, 124, 107, 0, 104, 1, 114, 101, 2, 101, 114, 99, 111, 103, 115, 0, 7, 6, 100, 0, 3, 72, 0, 7,
+			6, 101, 0, 3, 36, 0, 105, 3, 117, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 8, 2, 32, 3, 81, 35,
+			0, 1, 32, 32, 15, 15, 2, 32, 3, 81, 35, 72, 35, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 101, 3,
+			122, 0, 117, 3, 123, 0, 7, 6, 106, 0, 3, 57, 0, 196, 129, 8, 3, 57, 113, 0, 196, 129, 110, 111, 8, 3, 57, 113, 50, 119,
+			0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 108, 3, 55, 55, 12, 0, 7, 6, 109, 0, 3, 65, 0, 97, 122,
+			8, 3, 65, 35, 88, 0, 109, 3, 65, 65, 12, 0, 7, 6, 110, 0, 3, 50, 0, 110, 3, 50, 50, 12, 0, 4, 2, 103, 3, 68,
+			0, 2, 107, 0, 7, 6, 111, 0, 4, 1, 97, 2, 114, 3, 39, 0, 1, 97, 104, 0, 1, 98, 2, 98, 0, 1, 98, 2, 106, 18,
+			69, 32, 0, 1, 98, 2, 107, 115, 0, 1, 98, 2, 109, 98, 0, 1, 98, 2, 110, 196, 147, 0, 1, 98, 2, 114, 97, 107, 0, 1,
+			98, 2, 114, 97, 116, 0, 1, 98, 2, 114, 116, 0, 1, 98, 2, 116, 196, 129, 110, 0, 1, 98, 2, 196, 188, 197, 161, 0, 1, 98,
+			97, 2, 110, 0, 1, 98, 97, 2, 114, 0, 1, 98, 97, 107, 2, 116, 0, 1, 98, 97, 108, 2, 114, 97, 0, 1, 98, 97, 115, 2,
+			116, 0, 1, 98, 105, 114, 2, 110, 117, 107, 0, 1, 98, 109, 111, 0, 1, 98, 114, 97, 107, 0, 1, 98, 114, 117, 116, 0, 1, 99,
+			2, 108, 108, 0, 1, 99, 101, 109, 0, 1, 100, 2, 99, 0, 1, 100, 2, 100, 101, 107, 0, 1, 100, 2, 103, 109, 0, 1, 100, 2,
+			107, 117, 0, 1, 100, 2, 109, 105, 110, 0, 1, 100, 2, 109, 110, 18, 69, 32, 0, 1, 100, 2, 110, 107, 0, 1, 100, 2, 110, 110,
+			0, 1, 100, 2, 112, 0, 1, 100, 2, 114, 105, 0, 1, 100, 2, 116, 196, 129, 99, 0, 1, 100, 2, 116, 196, 147, 0, 1, 100, 2,
+			122, 0, 1, 100, 97, 2, 107, 0, 1, 100, 97, 2, 112, 0, 1, 100, 105, 101, 115, 112, 0, 1, 100, 105, 112, 115, 0, 1, 100, 110,
+			97, 109, 2, 108, 0, 1, 100, 111, 116, 114, 111, 2, 107, 0, 1, 101, 0, 1, 101, 163, 196, 0, 1, 102, 0, 1, 102, 2, 110, 111,
+			0, 1, 102, 2, 116, 111, 0, 1, 103, 2, 98, 101, 0, 1, 103, 2, 107, 0, 1, 103, 2, 110, 0, 1, 103, 2, 114, 105, 108, 0,
+			1, 103, 2, 116, 102, 0, 1, 103, 97, 2, 110, 196, 129, 0, 1, 103, 97, 102, 0, 1, 103, 105, 122, 2, 116, 18, 68, 32, 0, 1,
+			103, 110, 105, 114, 0, 1, 104, 0, 1, 105, 0, 1, 105, 2, 103, 0, 1, 105, 98, 0, 1, 105, 99, 2, 110, 0, 1, 105, 114, 116,
+			0, 1, 105, 115, 0, 1, 106, 2, 100, 101, 0, 1, 106, 2, 103, 0, 1, 106, 2, 110, 105, 0, 1, 106, 97, 109, 0, 1, 106, 102,
+			0, 1, 107, 2, 97, 108, 0, 1, 107, 2, 100, 101, 107, 0, 1, 107, 2, 100, 105, 102, 0, 1, 107, 2, 100, 196, 147, 0, 1, 107,
+			2, 101, 0, 1, 107, 2, 103, 110, 0, 1, 107, 2, 107, 111, 0, 1, 107, 2, 108, 97, 98, 0, 1, 107, 2, 108, 101, 0, 1, 107,
+			2, 108, 104, 0, 1, 107, 2, 108, 105, 0, 1, 107, 2, 108, 111, 0, 1, 107, 2, 108, 112, 0, 1, 107, 2, 108, 196, 129, 0, 1,
+			107, 2, 108, 196, 147, 0, 1, 107, 2, 108, 196, 171, 0, 1, 107, 2, 112, 101, 110, 0, 1, 107, 2, 112, 105, 106, 0, 1, 107, 2,
+			112, 117, 108, 196, 129, 0, 1, 107, 2, 112, 117, 108, 196, 147, 0, 1, 107, 2, 112, 196, 147, 17, 67, 0, 1, 107, 2, 112, 196, 147,
+			32, 0, 1, 107, 2, 114, 17, 65, 102, 0, 1, 107, 2, 114, 97, 0, 1, 107, 2, 114, 101, 106, 0, 1, 107, 2, 114, 101, 107, 0,
+			1, 107, 2, 114, 101, 108, 0, 1, 107, 2, 114, 101, 115, 0, 1, 107, 2, 114, 112, 0, 1, 107, 2, 114, 116, 0, 1, 107, 2, 114,
+			117, 109, 0, 1, 107, 2, 114, 117, 110, 0, 1, 107, 2, 114, 117, 112, 0, 1, 107, 2, 114, 118, 0, 1, 107, 2, 115, 105, 110, 0,
+			1, 107, 2, 115, 109, 0, 1, 107, 2, 115, 116, 196, 171, 109, 0, 1, 107, 2, 116, 97, 110, 0, 1, 107, 2, 116, 101, 0, 1, 107,
+			2, 116, 108, 0, 1, 107, 2, 116, 196, 147, 0, 1, 107, 2, 118, 0, 1, 107, 2, 196, 183, 0, 1, 107, 97, 2, 114, 0, 1, 107,
+			101, 100, 0, 1, 107, 105, 101, 108, 0, 1, 107, 105, 110, 0, 1, 107, 108, 97, 0, 1, 107, 111, 107, 2, 115, 0, 1, 107, 111, 115,
+			0, 1, 107, 111, 161, 197, 0, 1, 107, 114, 97, 110, 0, 1, 107, 114, 97, 115, 0, 1, 108, 2, 103, 97, 114, 0, 1, 108, 2, 106,
+			18, 71, 108, 0, 1, 108, 2, 107, 97, 108, 0, 1, 108, 2, 114, 110, 0, 1, 108, 2, 115, 106, 0, 1, 108, 2, 116, 18, 72, 32,
+			0, 1, 108, 2, 196, 163, 105, 122, 12, 0, 1, 108, 98, 2, 107, 0, 1, 108, 98, 2, 110, 0, 1, 108, 98, 2, 196, 183, 0, 1,
+			108, 101, 109, 2, 100, 114, 0, 1, 108, 101, 109, 2, 109, 0, 1, 108, 101, 118, 0, 1, 108, 102, 0, 1, 108, 103, 2, 98, 0, 1,
+			108, 103, 2, 109, 0, 1, 108, 103, 2, 114, 105, 0, 1, 108, 104, 2, 114, 111, 0, 1, 108, 105, 102, 0, 1, 108, 105, 112, 2, 116,
+			0, 1, 108, 107, 2, 122, 101, 116, 0, 1, 108, 111, 104, 0, 1, 108, 111, 107, 0, 1, 108, 112, 2, 109, 0, 1, 108, 112, 2, 118,
+			18, 68, 32, 0, 1, 108, 112, 115, 107, 101, 0, 1, 108, 115, 2, 118, 0, 1, 108, 115, 105, 100, 0, 1, 109, 2, 98, 0, 1, 109,
+			2, 100, 97, 108, 0, 1, 109, 2, 100, 101, 0, 1, 109, 2, 100, 105, 102, 0, 1, 109, 2, 100, 117, 0, 1, 109, 2, 100, 196, 129,
+			108, 0, 1, 109, 2, 108, 100, 0, 1, 109, 2, 108, 101, 0, 1, 109, 2, 108, 105, 0, 1, 109, 2, 108, 117, 0, 1, 109, 2, 109,
+			101, 110, 116, 0, 1, 109, 2, 110, 97, 114, 104, 0, 1, 109, 2, 110, 105, 116, 0, 1, 109, 2, 110, 111, 0, 1, 109, 2, 110, 115,
+			116, 0, 1, 109, 2, 110, 116, 0, 1, 109, 2, 112, 0, 1, 109, 2, 114, 97, 0, 1, 109, 2, 114, 102, 0, 1, 109, 2, 114, 115,
+			0, 1, 109, 2, 114, 196, 129, 0, 1, 109, 2, 116, 105, 0, 1, 109, 2, 116, 196, 171, 0, 1, 109, 2, 197, 161, 101, 0, 1, 109,
+			97, 2, 110, 0, 1, 109, 97, 2, 114, 0, 1, 109, 101, 100, 0, 1, 109, 105, 2, 110, 0, 1, 109, 114, 97, 104, 2, 110, 105, 122,
+			196, 147, 0, 1, 109, 114, 97, 104, 2, 110, 196, 147, 0, 1, 109, 115, 2, 196, 188, 0, 1, 109, 115, 105, 101, 115, 0, 1, 109, 115,
+			111, 2, 103, 0, 1, 109, 116, 97, 2, 115, 0, 1, 109, 117, 104, 0, 1, 110, 2, 107, 18, 75, 0, 1, 110, 2, 109, 101, 110, 0,
+			1, 110, 2, 109, 105, 110, 18, 71, 0, 1, 110, 2, 109, 105, 110, 18, 78, 0, 1, 110, 2, 114, 98, 0, 1, 110, 2, 114, 100, 0,
+			1, 110, 2, 114, 109, 0, 1, 110, 2, 114, 118, 0, 1, 110, 2, 116, 97, 114, 0, 1, 110, 2, 116, 196, 129, 114, 0, 1, 110, 2,
+			118, 18, 69, 32, 0, 1, 110, 2, 118, 97, 116, 0, 1, 110, 2, 118, 101, 108, 18, 72, 32, 0, 1, 110, 2, 118, 111, 0, 1, 110,
+			2, 118, 196, 129, 99, 105, 0, 1, 110, 97, 2, 108, 0, 1, 110, 97, 2, 109, 0, 1, 110, 97, 2, 110, 0, 1, 110, 97, 2, 116,
+			0, 1, 110, 97, 101, 107, 111, 0, 1, 110, 97, 114, 97, 112, 0, 1, 110, 101, 99, 115, 0, 1, 110, 101, 100, 0, 1, 110, 101, 102,
+			0, 1, 110, 101, 103, 0, 1, 110, 101, 116, 115, 2, 103, 0, 1, 110, 103, 0, 1, 110, 103, 97, 0, 1, 110, 105, 97, 107, 0, 1,
+			110, 105, 108, 2, 116, 105, 112, 0, 1, 110, 105, 109, 97, 0, 1, 110, 105, 118, 107, 101, 0, 1, 110, 111, 0, 1, 110, 111, 103, 0,
+			1, 110, 111, 109, 0, 1, 110, 111, 115, 0, 1, 110, 112, 105, 104, 0, 1, 110, 114, 97, 0, 1, 110, 116, 101, 0, 1, 112, 2, 100,
+			101, 0, 1, 112, 2, 101, 0, 1, 112, 2, 108, 97, 0, 1, 112, 2, 108, 101, 109, 0, 1, 112, 2, 108, 105, 0, 1, 112, 2, 108,
+			111, 0, 1, 112, 2, 108, 115, 116, 0, 1, 112, 2, 108, 196, 129, 0, 1, 112, 2, 108, 196, 171, 0, 1, 112, 2, 109, 101, 114, 0,
+			1, 112, 2, 109, 112, 0, 1, 112, 2, 110, 99, 0, 1, 112, 2, 112, 0, 1, 112, 2, 114, 99, 0, 1, 112, 2, 114, 111, 0, 1,
+			112, 2, 114, 116, 0, 1, 112, 2, 115, 116, 97, 109, 0, 1, 112, 2, 115, 116, 101, 109, 0, 1, 112, 2, 115, 116, 101, 110, 0, 1,
+			112, 2, 115, 116, 101, 114, 0, 1, 112, 2, 115, 116, 109, 0, 1, 112, 2, 115, 116, 115, 111, 0, 1, 112, 2, 115, 116, 117, 108, 0,
+			1, 112, 2, 116, 101, 110, 0, 1, 112, 2, 122, 0, 1, 112, 2, 196, 147, 0, 1, 112, 97, 2, 107, 0, 1, 112, 97, 2, 108, 0,
+			1, 112, 97, 2, 115, 116, 114, 111, 102, 0, 1, 112, 101, 2, 108, 0, 1, 112, 101, 2, 115, 18, 68, 32, 0, 1, 112, 101, 100, 0,
+			1, 112, 105, 104, 0, 1, 112, 105, 116, 0, 1, 112, 105, 116, 110, 97, 0, 1, 112, 111, 0, 1, 112, 111, 114, 112, 0, 1, 112, 114,
+			101, 116, 110, 105, 0, 1, 112, 115, 2, 110, 0, 1, 112, 115, 2, 114, 116, 0, 1, 112, 115, 101, 100, 0, 1, 112, 115, 105, 100, 0,
+			1, 114, 2, 108, 0, 1, 114, 2, 109, 97, 0, 1, 114, 2, 109, 98, 0, 1, 114, 2, 109, 196, 129, 0, 1, 114, 2, 114, 0, 1,
+			114, 2, 115, 105, 106, 0, 1, 114, 2, 115, 116, 98, 0, 1, 114, 2, 116, 101, 114, 0, 1, 114, 2, 116, 196, 147, 0, 1, 114, 97,
+			108, 111, 112, 0, 1, 114, 97, 109, 0, 1, 114, 97, 112, 2, 100, 0, 1, 114, 98, 2, 109, 0, 1, 114, 98, 2, 110, 0, 1, 114,
+			98, 2, 197, 161, 0, 1, 114, 100, 105, 104, 0, 1, 114, 101, 2, 103, 0, 1, 114, 101, 97, 2, 100, 0, 1, 114, 101, 97, 2, 102,
+			111, 0, 1, 114, 101, 97, 2, 115, 111, 0, 1, 114, 101, 116, 115, 0, 1, 114, 102, 2, 110, 0, 1, 114, 102, 97, 0, 1, 114, 103,
+			97, 0, 1, 114, 104, 2, 109, 0, 1, 114, 104, 2, 110, 111, 0, 1, 114, 104, 110, 105, 115, 0, 1, 114, 105, 98, 0, 1, 114, 105,
+			101, 110, 0, 1, 114, 105, 112, 0, 1, 114, 105, 190, 197, 0, 1, 114, 107, 2, 110, 197, 161, 0, 1, 114, 107, 2, 115, 0, 1, 114,
+			107, 97, 0, 1, 114, 111, 108, 104, 0, 1, 114, 111, 112, 0, 1, 114, 112, 2, 98, 0, 1, 114, 112, 2, 99, 0, 1, 114, 112, 2,
+			100, 0, 1, 114, 112, 2, 103, 110, 0, 1, 114, 112, 2, 103, 114, 0, 1, 114, 112, 2, 106, 0, 1, 114, 112, 2, 107, 0, 1, 114,
+			112, 2, 108, 101, 0, 1, 114, 112, 2, 109, 0, 1, 114, 112, 2, 112, 0, 1, 114, 112, 2, 115, 112, 0, 1, 114, 112, 2, 115, 116,
+			0, 1, 114, 112, 2, 116, 101, 0, 1, 114, 112, 2, 116, 111, 0, 1, 114, 112, 2, 118, 105, 110, 0, 1, 114, 112, 2, 118, 105, 122,
+			0, 1, 114, 112, 2, 118, 196, 171, 122, 0, 1, 114, 112, 2, 197, 190, 0, 1, 114, 112, 101, 0, 1, 114, 112, 109, 105, 0, 1, 114,
+			116, 2, 109, 0, 1, 114, 116, 2, 116, 0, 1, 114, 116, 101, 109, 0, 1, 114, 116, 101, 114, 0, 1, 114, 116, 105, 0, 1, 114, 116,
+			110, 105, 0, 1, 114, 116, 115, 97, 2, 110, 0, 1, 114, 116, 115, 107, 111, 0, 1, 115, 2, 99, 105, 0, 1, 115, 2, 107, 111, 0,
+			1, 115, 2, 107, 114, 0, 1, 115, 2, 108, 97, 114, 0, 1, 115, 2, 108, 102, 0, 1, 115, 2, 108, 105, 100, 0, 1, 115, 2, 108,
+			111, 196, 163, 0, 1, 115, 2, 108, 115, 116, 0, 1, 115, 2, 108, 116, 0, 1, 115, 2, 108, 118, 0, 1, 115, 2, 108, 196, 129, 114,
+			0, 1, 115, 2, 108, 196, 171, 100, 18, 68, 32, 0, 1, 115, 2, 108, 196, 171, 100, 196, 129, 0, 1, 115, 2, 110, 111, 0, 1, 115,
+			2, 110, 196, 129, 0, 1, 115, 2, 112, 114, 0, 1, 115, 2, 114, 0, 1, 115, 2, 118, 0, 1, 115, 97, 107, 110, 105, 0, 1, 115,
+			97, 114, 2, 108, 0, 1, 115, 98, 97, 2, 108, 0, 1, 115, 105, 2, 110, 0, 1, 115, 107, 101, 0, 1, 115, 110, 111, 107, 0, 1,
+			116, 2, 107, 115, 0, 1, 116, 2, 108, 101, 114, 0, 1, 116, 2, 109, 97, 115, 0, 1, 116, 2, 110, 0, 1, 116, 2, 110, 105, 122,
+			0, 1, 116, 2, 110, 110, 0, 1, 116, 2, 114, 0, 1, 116, 2, 114, 97, 0, 1, 116, 2, 114, 111, 0, 1, 116, 2, 114, 196, 129,
+			0, 1, 116, 2, 116, 196, 147, 109, 0, 1, 116, 97, 100, 0, 1, 116, 97, 109, 101, 110, 105, 107, 0, 1, 116, 101, 98, 0, 1, 116,
+			101, 103, 0, 1, 116, 101, 109, 2, 100, 0, 1, 116, 101, 110, 0, 1, 116, 101, 116, 2, 118, 0, 1, 116, 105, 99, 0, 1, 116, 105,
+			108, 0, 1, 116, 110, 97, 2, 108, 0, 1, 116, 110, 97, 2, 110, 0, 1, 116, 110, 97, 112, 0, 1, 116, 110, 101, 0, 1, 116, 110,
+			111, 0, 1, 116, 111, 102, 2, 103, 114, 0, 1, 116, 111, 109, 2, 100, 114, 111, 0, 1, 116, 111, 114, 112, 0, 1, 116, 112, 101, 2,
+			21, 0, 1, 116, 112, 105, 114, 107, 0, 1, 116, 114, 97, 107, 0, 1, 116, 114, 111, 0, 1, 116, 115, 2, 107, 104, 0, 1, 116, 115,
+			2, 109, 97, 116, 0, 1, 116, 115, 101, 114, 104, 0, 1, 116, 115, 105, 104, 0, 1, 116, 115, 105, 114, 97, 0, 1, 116, 115, 111, 2,
+			112, 18, 68, 32, 0, 1, 116, 117, 97, 2, 109, 0, 1, 116, 117, 97, 2, 114, 105, 0, 1, 116, 117, 108, 112, 2, 107, 0, 1, 118,
+			2, 98, 0, 1, 118, 2, 107, 97, 0, 1, 118, 2, 108, 100, 0, 1, 118, 2, 108, 101, 106, 0, 1, 118, 2, 108, 102, 0, 1, 118,
+			2, 108, 116, 0, 1, 118, 2, 108, 117, 0, 1, 118, 2, 108, 118, 0, 1, 118, 97, 102, 0, 1, 118, 97, 108, 115, 0, 1, 118, 97,
+			114, 98, 0, 1, 118, 101, 2, 108, 0, 1, 118, 105, 0, 1, 118, 105, 97, 114, 2, 32, 0, 1, 118, 107, 0, 1, 118, 110, 111, 107,
+			0, 1, 118, 114, 101, 110, 0, 1, 119, 0, 1, 120, 0, 1, 122, 2, 106, 18, 68, 32, 12, 0, 1, 122, 2, 110, 17, 65, 116, 111,
+			0, 1, 122, 2, 110, 100, 0, 1, 122, 97, 114, 0, 1, 122, 101, 109, 0, 1, 122, 105, 2, 108, 0, 1, 122, 110, 101, 0, 1, 161,
+			197, 2, 107, 0, 1, 161, 197, 2, 115, 101, 106, 0, 1, 190, 197, 2, 107, 101, 106, 0, 1, 190, 197, 2, 110, 103, 0, 1, 190, 197,
+			97, 109, 0, 1, 190, 197, 100, 2, 117, 108, 0, 2, 18, 66, 0, 2, 18, 71, 0, 2, 28, 17, 12, 12, 12, 12, 0, 2, 98, 97,
+			109, 0, 2, 98, 106, 101, 0, 2, 100, 105, 97, 0, 2, 105, 0, 2, 107, 101, 0, 2, 107, 115, 105, 0, 2, 107, 115, 111, 108, 0,
+			2, 107, 116, 0, 2, 107, 116, 111, 0, 2, 107, 117, 108, 0, 2, 107, 117, 112, 0, 2, 107, 196, 129, 108, 0, 2, 108, 101, 111, 0,
+			2, 108, 105, 103, 0, 2, 108, 105, 109, 112, 0, 2, 108, 111, 103, 0, 2, 108, 111, 196, 163, 0, 2, 108, 196, 171, 118, 0, 2, 109,
+			110, 105, 98, 0, 2, 109, 196, 129, 114, 0, 2, 110, 103, 0, 2, 110, 107, 111, 0, 2, 110, 111, 0, 2, 110, 116, 111, 0, 2, 112,
+			99, 0, 2, 112, 101, 114, 97, 116, 0, 2, 112, 111, 0, 2, 112, 116, 105, 107, 0, 2, 112, 116, 105, 109, 0, 2, 112, 116, 105, 115,
+			0, 2, 112, 116, 105, 196, 183, 0, 2, 114, 97, 110, 12, 0, 2, 114, 97, 116, 0, 2, 114, 100, 0, 2, 114, 103, 0, 2, 114, 104,
+			105, 100, 0, 2, 114, 105, 101, 110, 0, 2, 114, 105, 103, 0, 2, 114, 105, 196, 163, 0, 2, 114, 107, 0, 2, 114, 110, 105, 116, 0,
+			2, 114, 116, 111, 0, 2, 114, 196, 129, 107, 0, 2, 114, 196, 129, 116, 0, 2, 114, 196, 183, 0, 2, 115, 99, 105, 108, 0, 2, 115,
+			109, 111, 0, 2, 117, 0, 2, 122, 111, 110, 0, 8, 2, 98, 108, 105, 103, 0, 8, 2, 98, 115, 0, 8, 2, 100, 101, 107, 0, 8,
+			2, 107, 115, 97, 110, 18, 69, 32, 0, 8, 2, 107, 115, 102, 0, 8, 2, 108, 97, 102, 18, 68, 32, 0, 8, 2, 108, 103, 18, 69,
+			32, 0, 8, 2, 110, 100, 97, 116, 114, 0, 8, 2, 112, 101, 114, 0, 8, 2, 115, 107, 97, 114, 18, 68, 32, 0, 8, 2, 118, 196,
+			129, 99, 0, 8, 2, 196, 188, 101, 103, 18, 68, 32, 0, 8, 98, 2, 108, 196, 171, 100, 18, 68, 32, 0, 8, 98, 2, 116, 18, 72,
+			32, 0, 8, 100, 2, 103, 18, 68, 32, 0, 8, 100, 2, 107, 18, 68, 32, 0, 8, 100, 110, 105, 0, 8, 100, 129, 196, 2, 108, 102,
+			18, 68, 0, 8, 106, 2, 116, 18, 69, 32, 0, 8, 107, 2, 106, 18, 69, 0, 8, 107, 2, 114, 196, 129, 0, 8, 107, 105, 112, 0,
+			8, 107, 115, 97, 2, 108, 100, 18, 68, 32, 0, 8, 108, 2, 108, 105, 116, 18, 69, 32, 0, 8, 108, 2, 110, 0, 8, 108, 2, 116,
+			105, 197, 134, 18, 69, 0, 8, 108, 97, 2, 116, 0, 8, 108, 97, 103, 2, 112, 18, 68, 0, 8, 108, 105, 107, 0, 8, 109, 2, 110,
+			0, 8, 110, 2, 97, 115, 18, 68, 32, 0, 8, 110, 2, 116, 18, 69, 32, 0, 8, 110, 2, 118, 101, 109, 98, 0, 8, 110, 97, 110,
+			0, 8, 110, 101, 116, 115, 0, 8, 112, 2, 108, 105, 101, 100, 0, 8, 112, 2, 110, 105, 106, 18, 68, 32, 0, 8, 112, 2, 116, 97,
+			197, 161, 18, 69, 0, 8, 114, 2, 98, 101, 114, 116, 0, 8, 114, 2, 100, 101, 114, 105, 107, 18, 68, 32, 0, 8, 114, 2, 107, 196,
+			129, 100, 18, 72, 32, 0, 8, 114, 2, 122, 101, 116, 18, 72, 32, 0, 8, 114, 2, 122, 196, 171, 110, 18, 72, 32, 0, 8, 114, 97,
+			98, 2, 107, 0, 8, 114, 97, 98, 2, 109, 0, 8, 114, 97, 98, 2, 110, 17, 65, 0, 8, 114, 98, 2, 107, 196, 129, 116, 18, 68,
+			32, 0, 8, 114, 98, 108, 117, 2, 107, 18, 69, 32, 0, 8, 114, 99, 105, 109, 0, 8, 114, 103, 2, 122, 110, 105, 106, 0, 8, 114,
+			107, 105, 109, 2, 12, 0, 8, 114, 116, 2, 106, 0, 8, 116, 2, 110, 105, 106, 18, 69, 32, 0, 8, 116, 2, 112, 98, 0, 8, 116,
+			2, 112, 105, 110, 97, 109, 0, 8, 116, 2, 112, 109, 0, 8, 116, 2, 112, 196, 129, 122, 18, 68, 32, 0, 8, 116, 2, 114, 101, 0,
+			8, 116, 2, 114, 112, 17, 65, 100, 0, 8, 116, 2, 114, 116, 18, 72, 32, 0, 8, 116, 105, 118, 2, 108, 100, 18, 68, 32, 0, 8,
+			116, 107, 101, 104, 0, 8, 116, 110, 97, 2, 197, 134, 105, 110, 18, 69, 32, 0, 8, 116, 117, 97, 0, 8, 122, 101, 2, 116, 0, 8,
+			122, 105, 0, 8, 161, 197, 2, 114, 116, 18, 76, 0, 114, 112, 111, 1, 107, 3, 39, 34, 48, 39, 0, 4, 116, 111, 1, 108, 2, 32,
+			3, 39, 47, 39, 0, 116, 111, 8, 0, 116, 111, 1, 109, 3, 39, 47, 114, 0, 4, 112, 111, 1, 114, 116, 110, 97, 3, 39, 48, 39,
+			0, 112, 111, 8, 116, 2, 103, 0, 112, 111, 8, 116, 2, 108, 0, 112, 111, 8, 116, 2, 110, 0, 112, 116, 111, 8, 3, 39, 48, 47,
+			39, 0, 107, 97, 107, 111, 1, 107, 2, 108, 3, 39, 49, 35, 49, 114, 0, 107, 111, 107, 2, 18, 68, 32, 3, 39, 49, 39, 49, 0,
+			107, 111, 109, 111, 1, 108, 3, 39, 49, 39, 65, 39, 0, 107, 111, 100, 1, 114, 107, 3, 39, 49, 39, 72, 0, 4, 107, 111, 1, 114,
+			2, 112, 101, 3, 39, 49, 114, 0, 107, 111, 1, 116, 111, 114, 112, 0, 4, 110, 1, 107, 3, 39, 50, 0, 110, 8, 108, 107, 0, 4,
+			110, 111, 1, 107, 3, 39, 50, 39, 0, 110, 111, 8, 109, 0, 4, 110, 111, 1, 100, 3, 39, 50, 114, 0, 110, 111, 1, 107, 101, 0,
+			110, 111, 1, 114, 116, 115, 97, 0, 114, 111, 1, 107, 3, 39, 52, 39, 0, 114, 110, 111, 1, 112, 3, 39, 52, 50, 39, 0, 109, 1,
+			107, 3, 39, 65, 0, 4, 109, 111, 1, 104, 3, 39, 65, 39, 0, 109, 111, 1, 107, 0, 109, 111, 1, 116, 0, 109, 111, 116, 2, 111,
+			3, 39, 65, 39, 47, 0, 109, 111, 110, 111, 115, 111, 1, 108, 3, 39, 65, 39, 50, 6, 39, 89, 39, 0, 109, 112, 111, 1, 107, 3,
+			39, 65, 48, 39, 0, 110, 103, 111, 108, 111, 1, 109, 3, 39, 68, 81, 39, 55, 39, 0, 110, 103, 111, 1, 109, 3, 39, 68, 81, 114,
+			0, 98, 1, 107, 3, 39, 71, 0, 98, 111, 1, 114, 2, 116, 3, 39, 71, 39, 0, 100, 105, 111, 8, 3, 39, 72, 37, 114, 0, 4,
+			100, 111, 1, 106, 3, 39, 72, 39, 0, 100, 111, 1, 114, 2, 100, 101, 110, 0, 100, 111, 8, 0, 103, 111, 1, 108, 3, 39, 81, 39,
+			0, 118, 111, 1, 114, 112, 3, 39, 84, 39, 0, 118, 103, 111, 114, 111, 100, 1, 110, 3, 39, 84, 81, 39, 34, 39, 72, 0, 122, 111,
+			1, 108, 105, 102, 3, 39, 88, 114, 0, 115, 116, 111, 106, 1, 100, 3, 39, 89, 47, 39, 57, 0, 115, 102, 111, 1, 102, 3, 39, 89,
+			83, 114, 0, 4, 115, 111, 1, 98, 105, 114, 3, 39, 89, 114, 0, 115, 111, 1, 108, 105, 102, 0, 111, 3, 39, 114, 0, 4, 1, 98,
+			2, 108, 3, 114, 0, 1, 98, 2, 114, 115, 0, 1, 99, 114, 101, 104, 2, 103, 0, 1, 100, 101, 104, 2, 110, 0, 1, 100, 107, 101,
+			110, 97, 0, 1, 100, 110, 2, 109, 18, 68, 32, 0, 1, 100, 110, 111, 103, 2, 108, 0, 1, 100, 114, 2, 109, 18, 68, 32, 0, 1,
+			101, 100, 105, 118, 0, 1, 102, 2, 110, 105, 0, 1, 103, 2, 103, 0, 1, 103, 2, 110, 105, 106, 0, 1, 103, 2, 114, 105, 106, 0,
+			1, 103, 2, 116, 105, 107, 0, 1, 103, 2, 116, 105, 115, 0, 1, 103, 2, 196, 163, 0, 1, 103, 97, 2, 110, 0, 1, 103, 101, 2,
+			110, 0, 1, 103, 101, 98, 2, 110, 105, 0, 1, 103, 101, 108, 97, 2, 114, 0, 1, 103, 101, 116, 97, 107, 2, 114, 0, 1, 103, 114,
+			101, 110, 101, 0, 1, 103, 114, 117, 102, 2, 110, 0, 1, 105, 2, 100, 18, 72, 32, 0, 1, 105, 2, 110, 18, 72, 32, 0, 1, 105,
+			100, 97, 114, 0, 1, 105, 100, 105, 0, 1, 105, 100, 117, 97, 0, 1, 105, 114, 116, 97, 112, 0, 1, 105, 118, 97, 0, 1, 106, 108,
+			0, 1, 107, 2, 100, 18, 77, 32, 0, 1, 107, 2, 109, 18, 69, 32, 12, 0, 1, 107, 97, 108, 2, 110, 0, 1, 107, 110, 105, 115,
+			0, 1, 107, 115, 2, 112, 18, 68, 32, 0, 1, 107, 115, 2, 112, 105, 106, 18, 69, 32, 0, 1, 107, 115, 2, 112, 105, 115, 0, 1,
+			108, 2, 103, 12, 0, 1, 108, 2, 110, 0, 1, 108, 2, 196, 163, 0, 1, 108, 2, 196, 163, 12, 0, 1, 108, 97, 2, 103, 0, 1,
+			108, 97, 107, 2, 114, 0, 1, 108, 104, 2, 114, 0, 1, 108, 105, 2, 103, 0, 1, 108, 107, 105, 99, 0, 1, 108, 107, 108, 111, 102,
+			0, 1, 108, 111, 2, 110, 105, 106, 0, 1, 108, 111, 2, 110, 105, 115, 116, 0, 1, 108, 111, 115, 0, 1, 109, 2, 99, 97, 114, 0,
+			1, 109, 2, 100, 18, 69, 32, 0, 1, 109, 97, 110, 105, 100, 0, 1, 109, 101, 2, 99, 105, 0, 1, 109, 105, 101, 110, 112, 0, 1,
+			109, 114, 97, 104, 2, 110, 0, 1, 109, 115, 111, 0, 1, 110, 2, 100, 18, 72, 32, 0, 1, 110, 2, 109, 18, 68, 32, 0, 1, 110,
+			2, 109, 18, 72, 32, 0, 1, 110, 2, 109, 105, 106, 18, 69, 32, 0, 1, 110, 97, 2, 100, 0, 1, 110, 105, 107, 0, 1, 110, 112,
+			105, 104, 2, 122, 18, 72, 32, 0, 1, 112, 2, 108, 18, 68, 32, 0, 1, 112, 2, 108, 18, 72, 32, 0, 1, 112, 109, 111, 112, 0,
+			1, 114, 100, 2, 109, 18, 68, 0, 1, 114, 101, 97, 0, 1, 114, 101, 108, 107, 115, 0, 1, 114, 104, 2, 110, 0, 1, 114, 105, 101,
+			0, 1, 114, 107, 97, 109, 0, 1, 114, 107, 105, 2, 110, 0, 1, 114, 116, 2, 102, 18, 69, 32, 0, 1, 114, 116, 2, 112, 0, 1,
+			114, 116, 105, 2, 110, 0, 1, 114, 116, 107, 101, 108, 101, 0, 1, 114, 116, 110, 111, 107, 0, 1, 114, 117, 107, 2, 114, 18, 72, 32,
+			0, 1, 115, 2, 108, 111, 0, 1, 115, 2, 114, 18, 68, 32, 12, 0, 1, 115, 2, 114, 18, 72, 32, 12, 12, 0, 1, 115, 111, 114,
+			101, 97, 2, 108, 0, 1, 115, 112, 97, 114, 0, 1, 115, 114, 101, 112, 2, 110, 0, 1, 116, 2, 100, 18, 72, 32, 12, 0, 1, 116,
+			2, 108, 18, 69, 32, 12, 0, 1, 116, 2, 110, 105, 107, 18, 69, 32, 0, 1, 116, 2, 110, 105, 115, 107, 0, 1, 116, 2, 114, 18,
+			72, 32, 12, 12, 0, 1, 116, 21, 2, 114, 0, 1, 116, 97, 2, 109, 0, 1, 116, 97, 114, 97, 109, 0, 1, 116, 97, 114, 111, 0,
+			1, 116, 107, 111, 0, 1, 116, 108, 97, 100, 2, 110, 0, 1, 116, 110, 97, 2, 110, 18, 68, 32, 0, 1, 116, 110, 111, 112, 2, 110,
+			0, 1, 116, 111, 2, 112, 18, 68, 32, 0, 1, 116, 111, 102, 0, 1, 116, 111, 110, 111, 109, 2, 110, 0, 1, 116, 112, 2, 109, 18,
+			68, 32, 0, 1, 116, 117, 2, 112, 105, 0, 1, 117, 108, 102, 2, 114, 0, 1, 122, 2, 110, 0, 1, 122, 2, 114, 18, 68, 32, 12,
+			0, 1, 122, 2, 114, 18, 72, 32, 12, 12, 0, 1, 122, 105, 112, 101, 2, 100, 0, 2, 32, 0, 2, 108, 18, 68, 32, 12, 0, 2,
+			110, 18, 68, 32, 12, 0, 2, 112, 18, 68, 32, 12, 0, 2, 114, 18, 68, 32, 12, 0, 2, 122, 18, 68, 32, 0, 2, 122, 18, 72,
+			32, 12, 0, 8, 2, 109, 105, 0, 8, 2, 109, 115, 0, 8, 2, 112, 101, 114, 18, 69, 32, 0, 8, 100, 2, 122, 18, 69, 32, 12,
+			12, 0, 8, 101, 114, 101, 116, 115, 0, 8, 102, 2, 108, 105, 106, 18, 69, 32, 0, 8, 103, 105, 2, 114, 18, 68, 32, 0, 8, 106,
+			2, 103, 18, 68, 32, 0, 8, 107, 101, 0, 8, 108, 2, 197, 190, 18, 69, 32, 0, 8, 108, 103, 2, 114, 105, 106, 18, 69, 32, 0,
+			8, 109, 2, 110, 105, 107, 18, 69, 32, 0, 8, 109, 2, 122, 117, 0, 8, 109, 97, 114, 2, 110, 18, 69, 32, 0, 8, 109, 115, 2,
+			103, 18, 68, 32, 0, 8, 114, 97, 98, 2, 110, 18, 68, 32, 0, 8, 115, 107, 111, 2, 108, 18, 68, 32, 0, 8, 116, 2, 110, 117,
+			115, 18, 68, 32, 0, 8, 116, 2, 114, 105, 106, 18, 68, 32, 0, 8, 116, 110, 97, 102, 2, 109, 18, 68, 32, 0, 8, 116, 114, 97,
+			107, 2, 110, 18, 68, 32, 0, 108, 111, 1, 112, 2, 32, 3, 114, 55, 114, 0, 115, 116, 111, 112, 1, 116, 117, 97, 3, 114, 89, 47,
+			39, 48, 0, 4, 3, 119, 0, 1, 98, 2, 32, 0, 1, 98, 2, 108, 111, 197, 161, 0, 1, 98, 2, 108, 196, 171, 100, 18, 73, 32,
+			0, 1, 98, 2, 108, 196, 171, 106, 0, 1, 98, 2, 108, 196, 171, 115, 0, 1, 98, 2, 108, 196, 171, 116, 0, 1, 98, 2, 108, 196,
+			171, 197, 161, 0, 1, 98, 97, 118, 2, 108, 18, 72, 32, 0, 1, 98, 129, 196, 2, 108, 0, 1, 99, 2, 32, 0, 1, 100, 2, 32,
+			0, 1, 100, 2, 122, 18, 72, 32, 12, 12, 0, 1, 102, 114, 147, 196, 115, 0, 1, 103, 2, 32, 0, 1, 103, 2, 114, 111, 0, 1,
+			103, 97, 109, 2, 110, 0, 1, 103, 97, 118, 2, 110, 0, 1, 103, 105, 97, 100, 2, 110, 0, 1, 103, 105, 97, 109, 2, 110, 0, 1,
+			103, 105, 97, 122, 0, 1, 103, 108, 105, 2, 110, 18, 70, 32, 0, 1, 103, 111, 108, 115, 0, 1, 103, 114, 97, 109, 2, 110, 0, 1,
+			103, 117, 97, 2, 110, 0, 1, 103, 171, 196, 108, 0, 1, 106, 2, 32, 0, 1, 106, 2, 110, 18, 70, 32, 0, 1, 107, 2, 32, 0,
+			1, 107, 2, 107, 111, 103, 0, 1, 107, 2, 107, 116, 196, 147, 108, 0, 1, 107, 2, 110, 18, 70, 32, 0, 1, 107, 2, 112, 106, 0,
+			1, 107, 2, 112, 196, 147, 106, 18, 68, 32, 0, 1, 107, 2, 112, 196, 147, 106, 18, 69, 32, 0, 1, 107, 2, 114, 18, 70, 32, 12,
+			0, 1, 107, 2, 197, 134, 18, 70, 32, 0, 1, 107, 97, 114, 116, 0, 1, 107, 101, 105, 110, 0, 1, 107, 107, 105, 116, 2, 32, 0,
+			1, 107, 108, 97, 109, 2, 18, 75, 0, 1, 107, 108, 97, 161, 197, 0, 1, 107, 114, 147, 196, 112, 2, 110, 0, 1, 107, 114, 147, 196,
+			112, 2, 197, 134, 0, 1, 107, 115, 2, 108, 0, 1, 107, 115, 2, 108, 18, 69, 32, 0, 1, 107, 115, 97, 118, 0, 1, 107, 171, 197,
+			107, 0, 1, 108, 2, 32, 0, 1, 108, 2, 122, 18, 72, 32, 0, 1, 108, 103, 97, 2, 110, 18, 69, 32, 0, 1, 108, 103, 97, 110,
+			0, 1, 108, 103, 101, 2, 110, 0, 1, 108, 105, 97, 100, 2, 110, 0, 1, 108, 105, 100, 2, 110, 0, 1, 108, 105, 100, 2, 197, 134,
+			0, 1, 108, 105, 122, 2, 110, 0, 1, 108, 105, 122, 2, 197, 134, 0, 1, 108, 111, 107, 115, 2, 18, 74, 0, 1, 108, 111, 107, 115,
+			2, 18, 75, 0, 1, 108, 111, 115, 2, 115, 32, 0, 1, 108, 111, 115, 2, 116, 0, 1, 108, 111, 115, 2, 116, 32, 0, 1, 108, 111,
+			115, 2, 197, 161, 0, 1, 108, 115, 2, 103, 18, 68, 32, 0, 1, 108, 115, 2, 103, 111, 0, 1, 108, 147, 196, 2, 32, 0, 1, 108,
+			147, 196, 99, 0, 1, 108, 161, 197, 2, 103, 18, 68, 32, 0, 1, 109, 2, 32, 0, 1, 109, 105, 97, 122, 0, 1, 109, 115, 2, 107,
+			0, 1, 109, 115, 114, 101, 118, 0, 1, 109, 122, 105, 118, 0, 1, 110, 2, 32, 0, 1, 110, 2, 108, 105, 107, 0, 1, 110, 2, 109,
+			18, 69, 32, 0, 1, 110, 97, 161, 197, 0, 1, 110, 101, 116, 115, 2, 18, 74, 0, 1, 110, 101, 116, 115, 2, 18, 75, 0, 1, 110,
+			110, 97, 118, 0, 1, 112, 2, 32, 0, 1, 112, 2, 114, 97, 0, 1, 112, 2, 115, 116, 111, 0, 1, 112, 2, 115, 116, 196, 171, 0,
+			1, 114, 2, 32, 0, 1, 114, 2, 98, 101, 197, 190, 0, 1, 114, 2, 107, 116, 117, 0, 1, 114, 2, 122, 18, 72, 32, 0, 1, 114,
+			97, 98, 2, 107, 108, 0, 1, 114, 97, 98, 2, 107, 196, 188, 0, 1, 114, 98, 2, 32, 0, 1, 114, 100, 2, 32, 0, 1, 114, 103,
+			2, 122, 12, 0, 1, 114, 107, 2, 103, 0, 1, 114, 107, 2, 107, 111, 0, 1, 114, 107, 2, 112, 196, 188, 111, 0, 1, 114, 112, 97,
+			2, 99, 18, 72, 32, 0, 1, 114, 112, 97, 2, 107, 0, 1, 114, 116, 171, 196, 118, 115, 0, 1, 115, 2, 32, 0, 1, 115, 2, 108,
+			18, 68, 32, 0, 1, 115, 2, 108, 18, 70, 32, 0, 1, 115, 2, 108, 111, 116, 0, 1, 115, 2, 108, 111, 197, 161, 0, 1, 115, 2,
+			108, 196, 171, 18, 75, 0, 1, 116, 2, 32, 0, 1, 116, 2, 110, 18, 70, 32, 0, 1, 116, 2, 114, 110, 12, 0, 1, 116, 2, 114,
+			197, 134, 12, 0, 1, 116, 101, 105, 99, 2, 107, 0, 1, 116, 110, 97, 107, 0, 1, 116, 114, 111, 107, 2, 115, 32, 0, 1, 116, 114,
+			111, 112, 115, 0, 1, 116, 115, 2, 112, 111, 0, 1, 116, 117, 97, 188, 196, 0, 1, 116, 129, 196, 2, 32, 0, 1, 116, 147, 196, 2,
+			32, 0, 1, 116, 171, 196, 118, 2, 108, 18, 68, 32, 0, 1, 118, 2, 32, 0, 1, 118, 97, 0, 1, 118, 101, 105, 114, 0, 1, 118,
+			108, 97, 0, 1, 118, 129, 196, 108, 98, 0, 1, 118, 171, 196, 114, 98, 0, 1, 122, 2, 32, 0, 1, 122, 105, 98, 2, 18, 75, 12,
+			0, 1, 134, 197, 0, 1, 141, 196, 0, 1, 161, 197, 2, 32, 0, 1, 161, 197, 111, 2, 32, 0, 1, 161, 197, 117, 2, 32, 0, 1,
+			163, 196, 2, 32, 0, 1, 183, 196, 0, 1, 188, 196, 0, 1, 190, 197, 0, 2, 18, 67, 0, 2, 100, 101, 114, 101, 0, 2, 100, 101,
+			114, 196, 147, 0, 2, 110, 97, 107, 116, 32, 0, 2, 115, 32, 0, 2, 115, 116, 32, 0, 2, 116, 32, 12, 12, 0, 2, 116, 105, 101,
+			115, 32, 12, 0, 2, 197, 161, 115, 32, 0, 2, 197, 161, 197, 134, 0, 8, 2, 108, 18, 69, 32, 12, 0, 8, 2, 114, 18, 70, 32,
+			0, 8, 98, 2, 108, 97, 32, 0, 8, 98, 2, 108, 117, 0, 8, 98, 2, 108, 196, 129, 109, 32, 0, 8, 98, 2, 122, 18, 72, 32,
+			12, 0, 8, 98, 2, 122, 97, 32, 0, 8, 100, 2, 110, 18, 69, 32, 12, 12, 0, 8, 100, 171, 196, 112, 115, 2, 108, 18, 69, 32,
+			0, 8, 103, 2, 114, 97, 32, 0, 8, 103, 2, 114, 111, 115, 32, 12, 0, 8, 106, 2, 32, 0, 8, 106, 2, 122, 97, 32, 0, 8,
+			107, 2, 100, 18, 72, 32, 0, 8, 107, 2, 112, 18, 69, 32, 0, 8, 107, 2, 112, 196, 129, 32, 0, 8, 107, 2, 114, 18, 72, 32,
+			0, 8, 107, 2, 114, 97, 32, 0, 8, 107, 2, 114, 100, 105, 114, 0, 8, 107, 2, 114, 100, 122, 0, 8, 107, 2, 118, 196, 129, 114,
+			110, 18, 70, 32, 0, 8, 107, 101, 110, 2, 32, 0, 8, 107, 115, 2, 112, 18, 68, 32, 0, 8, 107, 115, 97, 112, 2, 112, 18, 68,
+			32, 0, 8, 108, 2, 103, 18, 68, 32, 0, 8, 108, 2, 110, 18, 72, 32, 0, 8, 108, 105, 112, 2, 116, 32, 0, 8, 108, 147, 196,
+			116, 2, 116, 117, 32, 0, 8, 109, 2, 100, 18, 72, 32, 0, 8, 109, 105, 97, 108, 2, 110, 18, 70, 32, 0, 8, 109, 117, 107, 2,
+			100, 18, 72, 32, 0, 8, 110, 2, 12, 0, 8, 112, 2, 108, 18, 70, 32, 0, 8, 112, 2, 108, 105, 101, 0, 8, 112, 2, 108, 105,
+			106, 18, 69, 32, 0, 8, 112, 2, 112, 18, 72, 32, 0, 8, 112, 2, 196, 188, 0, 8, 112, 129, 196, 114, 2, 32, 0, 8, 114, 2,
+			109, 18, 69, 32, 0, 8, 114, 101, 116, 115, 2, 115, 32, 0, 8, 114, 112, 2, 106, 196, 129, 109, 32, 0, 8, 114, 112, 2, 109, 32,
+			0, 8, 114, 112, 2, 109, 98, 0, 8, 114, 112, 2, 109, 101, 115, 0, 8, 114, 116, 115, 2, 112, 18, 68, 32, 0, 8, 114, 116, 115,
+			97, 107, 2, 108, 18, 70, 32, 0, 8, 116, 2, 12, 0, 8, 116, 2, 114, 101, 105, 122, 32, 0, 8, 116, 2, 114, 117, 100, 0, 8,
+			116, 2, 122, 105, 101, 109, 32, 0, 8, 116, 97, 100, 2, 115, 32, 0, 8, 116, 110, 111, 107, 2, 115, 32, 0, 8, 116, 110, 111, 108,
+			98, 2, 115, 32, 0, 8, 116, 115, 2, 114, 18, 72, 32, 0, 8, 116, 115, 97, 115, 2, 112, 97, 109, 32, 0, 8, 134, 197, 161, 197,
+			2, 114, 18, 70, 32, 0, 8, 161, 197, 2, 122, 105, 101, 109, 32, 0, 8, 183, 196, 161, 197, 2, 114, 18, 70, 32, 0, 116, 111, 2,
+			32, 3, 119, 47, 119, 0, 112, 8, 114, 116, 2, 18, 68, 32, 3, 119, 48, 0, 4, 112, 111, 1, 107, 3, 119, 48, 119, 0, 112, 111,
+			1, 116, 2, 116, 0, 112, 111, 1, 116, 2, 197, 161, 0, 108, 1, 112, 171, 196, 115, 2, 18, 68, 32, 3, 119, 55, 0, 4, 108, 111,
+			1, 107, 115, 3, 119, 55, 119, 0, 108, 111, 1, 108, 2, 18, 75, 0, 108, 111, 8, 108, 2, 18, 74, 0, 98, 111, 8, 114, 2, 116,
+			32, 3, 119, 71, 119, 0, 4, 100, 111, 1, 107, 2, 108, 3, 119, 72, 119, 0, 100, 111, 8, 2, 115, 32, 0, 103, 1, 114, 112, 115,
+			3, 119, 81, 0, 122, 111, 2, 108, 18, 68, 32, 3, 119, 88, 119, 0, 115, 116, 1, 114, 112, 115, 3, 119, 89, 47, 0, 115, 116, 111,
+			2, 18, 75, 3, 119, 89, 47, 119, 0, 7, 6, 112, 0, 3, 48, 0, 117, 115, 8, 3, 48, 40, 89, 0, 7, 6, 113, 0, 3, 49,
+			84, 0, 7, 6, 114, 0, 3, 52, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 1, 115, 2, 115, 3, 47, 12,
+			0, 111, 8, 2, 32, 3, 47, 119, 0, 7, 6, 117, 0, 3, 40, 0, 105, 3, 121, 0, 7, 6, 118, 0, 3, 84, 0, 105, 115, 8,
+			3, 84, 37, 89, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122,
+			0, 3, 88, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 4, 35, 1, 35, 3, 0, 4, 39, 3, 0, 4, 46, 1, 46, 3, 0, 58,
+			1, 32, 15, 2, 32, 15, 15, 32, 3, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 37, 88, 89, 118, 49, 40, 65, 88, 108, 65, 36,
+			9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 35, 1, 35, 35, 2, 32, 3,
+			24, 0, 58, 3, 49, 39, 55, 89, 0, 33, 61, 3, 50, 35, 84, 15, 84, 122, 50, 113, 72, 89, 0, 4, 35, 1, 32, 17, 65, 3,
+			52, 36, 89, 47, 108, 47, 36, 0, 35, 1, 32, 17, 67, 0, 62, 61, 3, 55, 6, 122, 55, 113, 49, 89, 15, 4, 84, 116, 15, 84,
+			6, 122, 50, 113, 72, 89, 0, 60, 61, 3, 65, 35, 88, 113, 49, 89, 15, 4, 84, 116, 15, 84, 6, 122, 50, 113, 72, 89, 0, 45,
+			8, 32, 2, 32, 15, 3, 65, 108, 50, 40, 89, 0, 36, 3, 72, 39, 55, 113, 34, 37, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts42 = FileInMemory_createWithData (12293, reinterpret_cast<const char *> (&espeakdata_dicts42_data), 
+			U"espeak-1.48.04-source/espeak-data/lv_dict", 
 			U"lv");
-		Collection_addItem (me.peek(), espeakdata_dicts39.transfer());
+		my addItem_move (espeakdata_dicts42.move());
 
-		static unsigned char espeakdata_dicts40_data[4946] = {
-			0, 4, 0, 0, 152, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 138, 208, 184, 208, 188, 208, 176, 208, 176, 209, 130, 76, 0, 0, 15, 140, 208, 189, 208, 181, 208, 188, 208, 176, 208, 176, 209,
-			130, 76, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 33, 6, 37, 88, 84, 138, 76, 50, 138, 49, 0, 0, 0, 11, 1, 35, 71, 14,
-			16, 6, 39, 57, 10, 0, 0, 0, 10, 1, 37, 48, 6, 39, 89, 47, 39, 0, 0, 7, 1, 38, 10, 6, 37, 0, 0, 0, 0, 0,
-			0, 8, 1, 43, 48, 55, 40, 89, 0, 0, 0, 0, 0, 11, 1, 47, 49, 14, 16, 6, 39, 88, 10, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 9, 5, 95, 48, 1, 14, 4, 37, 0, 0, 0, 13, 1, 58, 72, 84, 36, 10, 47, 39, 76, 49, 37, 0, 0, 0, 0,
-			0, 0, 0, 8, 1, 64, 10, 6, 36, 47, 0, 0, 0, 0, 0, 7, 65, 68, 49, 84, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 49, 77, 52, 71, 37, 55, 37, 6, 39, 50, 0, 0,
-			17, 65, 92, 72, 84, 39, 89, 47, 14, 16, 40, 49, 39, 15, 84, 13, 0, 0, 0, 16, 1, 94, 117, 6, 37, 34, 49, 40, 65, 83,
-			55, 36, 49, 89, 0, 0, 0, 7, 65, 96, 37, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 104, 88, 13, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6, 37, 55, 72, 122, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 189, 208, 181,
-			208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 4, 16, 20, 9, 88, 6, 35, 48, 37, 16, 49, 122, 10, 0, 0, 0, 0, 9, 134,
-			209, 129, 209, 130, 208, 181, 72, 0, 0, 0, 0, 13, 138, 208, 189, 208, 181, 209, 129, 209, 130, 208, 181, 76, 0, 0, 15, 140, 208, 189,
-			208, 181, 208, 188, 208, 176, 209, 130, 208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 184, 208,
-			188, 208, 176, 209, 136, 76, 0, 0, 0, 0, 0, 0, 9, 134, 209, 129, 209, 131, 208, 188, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 208, 189, 208, 181, 209, 129, 209, 131, 208, 188, 76, 0, 0, 0, 20, 3, 226,
-			132, 162, 48, 14, 16, 39, 37, 88, 84, 6, 39, 72, 37, 47, 36, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 189,
-			208, 181, 208, 179, 208, 190, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 186, 208, 190, 208,
-			179, 208, 190, 8, 0, 0, 0, 18, 3, 226, 128, 166, 47, 14, 16, 6, 37, 15, 47, 6, 39, 76, 49, 37, 0, 0, 19, 3, 226, 128,
-			161, 72, 84, 6, 39, 36, 50, 15, 49, 14, 16, 6, 89, 47, 0, 0, 11, 3, 226, 128, 160, 49, 14, 16, 89, 47, 0, 0, 0, 20,
-			3, 226, 128, 162, 81, 6, 39, 55, 36, 65, 35, 15, 47, 6, 39, 76, 49, 122, 0, 0, 0, 11, 3, 226, 130, 172, 6, 36, 84, 51,
-			39, 0, 0, 0, 0, 0, 0, 11, 136, 208, 184, 208, 188, 208, 176, 208, 188, 76, 0, 11, 3, 95, 49, 6, 6, 36, 72, 50, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 6, 72, 84, 6, 36, 0, 0, 0, 0, 0, 13, 138, 208, 184, 208, 188, 208, 176,
+		static unsigned char espeakdata_dicts43_data[4946] = {
+			0, 4, 0, 0, 151, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4,
+			95, 100, 112, 116, 9, 88, 6, 35, 48, 37, 16, 49, 122, 10, 0, 0, 0, 0, 0, 13, 138, 208, 184, 208, 188, 208, 176, 208, 176, 209,
+			130, 76, 0, 0, 15, 140, 208, 189, 208, 181, 208, 188, 208, 176, 208, 176, 209, 130, 76, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 33,
+			6, 37, 88, 84, 138, 76, 50, 138, 49, 0, 0, 0, 11, 1, 35, 71, 14, 16, 6, 39, 57, 10, 0, 0, 0, 10, 1, 37, 48, 6,
+			39, 89, 47, 39, 0, 0, 7, 1, 38, 10, 6, 37, 0, 0, 0, 0, 0, 0, 8, 1, 43, 48, 55, 40, 89, 0, 0, 0, 0, 0,
+			11, 1, 47, 49, 14, 16, 6, 39, 88, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 58, 72, 84, 36, 10, 47,
+			39, 76, 49, 37, 0, 0, 0, 0, 0, 0, 0, 8, 1, 64, 10, 6, 36, 47, 0, 0, 0, 0, 0, 7, 65, 68, 49, 84, 13, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 49, 77, 52, 71,
+			37, 55, 37, 6, 39, 50, 0, 0, 17, 65, 92, 72, 84, 39, 89, 47, 14, 16, 40, 49, 39, 15, 84, 13, 0, 0, 0, 16, 1, 94,
+			117, 6, 37, 34, 49, 40, 65, 83, 55, 36, 49, 89, 0, 0, 0, 7, 65, 96, 37, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 65, 104, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,
+			126, 47, 6, 37, 55, 72, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 134, 208, 189, 208, 181, 208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 209, 129, 209, 130, 208, 181, 72, 0, 0,
+			0, 0, 13, 138, 208, 189, 208, 181, 209, 129, 209, 130, 208, 181, 76, 0, 0, 15, 140, 208, 189, 208, 181, 208, 188, 208, 176, 209, 130, 208,
+			181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 184, 208, 188, 208, 176, 209, 136, 76, 0, 0, 0,
+			0, 0, 0, 9, 134, 209, 129, 209, 131, 208, 188, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 138, 208, 189, 208, 181, 209, 129, 209, 131, 208, 188, 76, 0, 0, 0, 20, 3, 226, 132, 162, 48, 14, 16, 39, 37, 88, 84,
+			6, 39, 72, 37, 47, 36, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 189, 208, 181, 208, 179, 208, 190, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 186, 208, 190, 208, 179, 208, 190, 8, 0, 0, 0, 18, 3,
+			226, 128, 166, 47, 14, 16, 6, 37, 15, 47, 6, 39, 76, 49, 37, 0, 0, 19, 3, 226, 128, 161, 72, 84, 6, 39, 36, 50, 15, 49,
+			14, 16, 6, 89, 47, 0, 0, 11, 3, 226, 128, 160, 49, 14, 16, 89, 47, 0, 0, 0, 20, 3, 226, 128, 162, 81, 6, 39, 55, 36,
+			65, 35, 15, 47, 6, 39, 76, 49, 122, 0, 0, 0, 11, 3, 226, 130, 172, 6, 36, 84, 51, 39, 0, 0, 0, 0, 0, 0, 11, 136,
+			208, 184, 208, 188, 208, 176, 208, 188, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 208, 184, 208, 188, 208, 176,
 			208, 188, 208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 14, 3, 226, 128, 176, 48, 14, 16, 6, 39, 65, 37, 55, 0, 0, 11, 136, 208, 189, 208, 181, 208, 188, 208, 176, 76, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 47, 14, 16, 6, 37, 109, 89, 109, 47, 0, 0, 11, 3, 95, 48, 67, 89,
@@ -24559,85 +35352,86 @@ FilesInMemory create_espeakdata_dicts () {
 			6, 35, 36, 89, 36, 47, 0, 0, 19, 3, 95, 49, 52, 76, 109, 47, 37, 34, 37, 50, 6, 35, 36, 89, 36, 47, 0, 0, 18, 3,
 			95, 49, 55, 89, 109, 72, 40, 65, 50, 6, 35, 36, 89, 36, 47, 0, 0, 16, 3, 95, 49, 54, 91, 109, 89, 50, 6, 35, 36, 89,
 			36, 47, 0, 0, 0, 17, 3, 95, 55, 88, 89, 109, 72, 6, 40, 65, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 67, 91, 6, 109, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 14,
-			3, 95, 50, 88, 72, 84, 6, 35, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63,
-			63, 88, 50, 35, 49, 0, 0, 0, 0, 17, 3, 95, 52, 88, 76, 109, 47, 37, 44, 6, 37, 109, 89, 109, 47, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 3, 95, 53, 88, 48, 6, 109, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 186, 208, 190,
-			209, 152, 76, 0, 13, 3, 95, 54, 88, 91, 6, 109, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 16, 3, 95, 56, 88, 39, 89, 6, 40, 65, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95,
-			57, 88, 72, 109, 84, 6, 109, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 63, 65, 71, 40, 49, 84, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 208, 184, 208,
-			187, 208, 184, 72, 8, 9, 134, 208, 184, 208, 187, 208, 184, 8, 0, 0, 0, 0, 0, 0, 11, 136, 208, 177, 208, 184, 208, 187, 208, 176,
-			72, 0, 0, 0, 0, 15, 4, 95, 48, 77, 52, 71, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37,
-			55, 37, 6, 39, 50, 37, 0, 0, 16, 4, 95, 48, 77, 51, 65, 6, 37, 55, 37, 35, 34, 72, 138, 0, 0, 7, 132, 208, 187, 208,
-			184, 72, 0, 14, 4, 95, 48, 77, 49, 6, 37, 55, 57, 35, 72, 37, 0, 0, 11, 136, 208, 177, 208, 184, 208, 187, 208, 190, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 184, 208,
-			188, 208, 176, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 3, 95, 194, 173, 48, 14, 16,
-			6, 37, 84, 14, 16, 36, 65, 36, 50, 122, 15, 117, 6, 44, 47, 6, 37, 76, 49, 122, 0, 0, 0, 24, 3, 95, 194, 171, 6, 39,
-			47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 0, 9, 134, 208, 177, 208, 184, 208, 187, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 208, 189, 208, 181, 209, 129, 208, 181, 76, 0, 25, 3, 95, 194, 187,
-			88, 6, 35, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 11, 136, 208, 189, 208, 181, 209, 129,
-			208, 184, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 195, 151, 48, 6, 39, 0, 0, 0, 0, 20, 2, 197, 130, 55, 13, 15,
-			89, 122, 15, 117, 6, 44, 47, 6, 37, 117, 39, 65, 0, 0, 0, 0, 0, 0, 8, 2, 194, 167, 72, 36, 55, 0, 0, 12, 2, 194,
-			164, 84, 6, 35, 55, 40, 47, 122, 0, 0, 0, 0, 0, 0, 0, 19, 2, 194, 174, 51, 6, 36, 81, 37, 89, 47, 14, 16, 35, 117,
-			138, 57, 122, 0, 0, 0, 0, 0, 0, 0, 16, 2, 194, 168, 48, 14, 16, 6, 37, 57, 36, 81, 55, 122, 89, 0, 0, 13, 138, 208,
-			184, 208, 188, 208, 176, 209, 130, 208, 181, 76, 21, 2, 194, 169, 6, 35, 84, 47, 39, 51, 89, 49, 122, 15, 48, 14, 16, 35, 84, 122,
-			0, 0, 9, 2, 194, 182, 76, 55, 36, 50, 0, 0, 7, 2, 194, 183, 48, 39, 0, 0, 0, 12, 2, 194, 181, 65, 6, 37, 49, 14,
-			16, 39, 0, 0, 0, 0, 12, 2, 194, 176, 89, 47, 6, 36, 48, 36, 50, 0, 0, 0, 0, 15, 2, 195, 183, 48, 39, 72, 6, 36,
-			61, 4, 36, 50, 39, 0, 0, 0, 0, 0, 0, 12, 2, 194, 184, 89, 36, 72, 6, 37, 55, 122, 0, 0, 0, 9, 134, 209, 136, 209,
-			130, 208, 190, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 203, 152, 71, 14, 16, 6, 36, 84, 37, 89, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 209, 135, 76, 13, 0, 0, 7, 2, 209, 134, 117, 13, 0, 0, 7,
-			2, 209, 133, 101, 13, 0, 0, 7, 2, 209, 132, 83, 13, 0, 0, 0, 7, 2, 209, 130, 47, 13, 0, 0, 7, 2, 209, 129, 89, 13,
-			0, 0, 7, 2, 209, 128, 51, 13, 0, 0, 0, 0, 0, 0, 0, 8, 132, 208, 183, 208, 176, 72, 28, 0, 0, 7, 2, 209, 136, 91,
-			13, 0, 0, 0, 14, 2, 95, 34, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 7, 2, 209, 149, 118, 13, 0, 0, 0, 15, 2,
-			95, 39, 6, 35, 48, 39, 89, 47, 14, 16, 39, 83, 0, 7, 2, 209, 147, 77, 13, 0, 0, 18, 2, 95, 38, 47, 6, 44, 81, 6,
-			39, 84, 89, 49, 39, 15, 6, 37, 0, 0, 0, 11, 2, 95, 36, 72, 6, 39, 55, 122, 51, 0, 0, 7, 2, 209, 159, 75, 13, 0,
-			0, 15, 2, 95, 42, 118, 84, 6, 36, 88, 72, 37, 76, 49, 122, 0, 15, 2, 95, 42, 118, 84, 6, 36, 88, 72, 37, 76, 49, 13,
-			0, 0, 25, 2, 95, 41, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 24, 2,
-			95, 40, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 7, 2, 209, 156, 141, 13, 0, 0,
-			0, 11, 2, 95, 46, 47, 6, 39, 76, 49, 122, 0, 7, 2, 209, 154, 67, 13, 0, 0, 14, 2, 95, 45, 117, 6, 44, 47, 6, 37,
-			76, 49, 122, 0, 11, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 7, 2, 209, 153, 61, 13, 0, 0, 13, 2, 95, 44, 88, 6, 35,
-			48, 37, 51, 49, 122, 0, 7, 2, 209, 152, 57, 136, 0, 0, 9, 2, 95, 51, 47, 51, 6, 37, 0, 0, 10, 2, 95, 50, 72, 6,
-			84, 6, 35, 0, 0, 10, 2, 95, 49, 6, 36, 72, 36, 50, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 122, 0, 0, 11, 2, 95,
-			55, 89, 6, 109, 72, 40, 65, 0, 0, 10, 2, 95, 54, 91, 6, 109, 89, 47, 0, 0, 9, 2, 95, 53, 48, 6, 109, 47, 0, 0,
-			12, 2, 95, 52, 76, 6, 109, 47, 138, 16, 138, 0, 0, 19, 2, 95, 59, 47, 6, 39, 76, 49, 122, 88, 4, 35, 48, 37, 51, 49,
-			35, 0, 7, 2, 208, 183, 88, 13, 0, 0, 7, 2, 208, 182, 90, 13, 0, 0, 7, 2, 208, 181, 109, 0, 14, 6, 130, 208, 181, 72,
-			28, 11, 2, 95, 57, 72, 6, 109, 84, 109, 47, 0, 0, 10, 2, 95, 56, 6, 39, 89, 40, 65, 0, 7, 2, 208, 180, 72, 13, 0,
-			0, 15, 2, 95, 63, 48, 34, 6, 35, 91, 35, 55, 50, 37, 49, 0, 7, 2, 208, 179, 81, 13, 0, 0, 18, 2, 95, 62, 48, 39,
-			81, 6, 39, 55, 36, 65, 39, 15, 6, 39, 72, 0, 7, 2, 208, 178, 84, 13, 0, 0, 13, 2, 95, 61, 6, 36, 72, 50, 122, 49,
-			84, 39, 0, 13, 2, 95, 61, 6, 36, 72, 50, 122, 49, 84, 39, 0, 7, 2, 208, 177, 71, 13, 0, 0, 7, 2, 208, 176, 35, 0,
-			14, 8, 2, 208, 176, 35, 0, 72, 8, 16, 2, 95, 60, 48, 6, 39, 65, 35, 55, 39, 15, 6, 39, 72, 0, 0, 7, 2, 208, 191,
-			48, 13, 0, 0, 0, 7, 2, 208, 189, 50, 13, 0, 0, 13, 138, 208, 189, 208, 181, 208, 188, 208, 176, 209, 136, 76, 18, 2, 95, 64,
-			47, 6, 44, 81, 6, 39, 84, 89, 49, 39, 15, 6, 35, 0, 7, 2, 208, 188, 65, 13, 0, 0, 7, 2, 208, 187, 55, 13, 0, 0,
-			7, 2, 208, 186, 49, 13, 0, 0, 0, 8, 2, 208, 184, 37, 10, 0, 14, 9, 2, 208, 184, 37, 9, 0, 72, 8, 13, 2, 92, 92,
-			71, 6, 109, 49, 89, 55, 109, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 95, 226, 128, 154, 6, 39, 47,
-			84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 26, 4, 95, 226, 128, 153, 6, 36, 72, 37, 50, 36, 76,
-			36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 25, 4, 95, 226, 128, 152, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50,
-			6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 25, 4, 95, 226, 128, 158, 88, 35, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84,
-			39, 72, 50, 138, 49, 0, 0, 32, 2, 95, 91, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 89, 51, 6, 36, 72, 50, 122, 15, 88,
-			6, 35, 81, 14, 16, 35, 72, 122, 0, 26, 4, 95, 226, 128, 157, 88, 6, 35, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39,
-			72, 50, 138, 49, 0, 0, 25, 4, 95, 226, 128, 156, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49,
-			0, 0, 15, 4, 95, 226, 128, 147, 109, 50, 15, 117, 6, 44, 47, 122, 0, 0, 0, 10, 2, 95, 95, 117, 6, 44, 47, 122, 0, 0,
-			0, 33, 2, 95, 93, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 89, 51, 6, 36, 72, 50, 122, 15, 88, 6, 35, 81, 14, 16,
-			35, 72, 122, 0, 0, 0, 0, 15, 4, 95, 226, 128, 148, 109, 65, 15, 117, 6, 44, 47, 122, 0, 0, 13, 138, 208, 189, 208, 181, 209,
-			129, 208, 188, 208, 181, 76, 9, 134, 209, 129, 208, 188, 208, 181, 72, 0, 13, 2, 95, 96, 81, 14, 16, 6, 35, 84, 37, 89, 0, 0,
-			15, 140, 208, 189, 208, 181, 208, 188, 208, 176, 208, 188, 208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 208, 189,
-			208, 181, 208, 188, 208, 176, 208, 188, 76, 0, 0, 0, 0, 0, 25, 4, 95, 226, 128, 185, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50,
-			6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 0, 0, 32, 2, 95, 123, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 81, 6, 39,
-			55, 36, 65, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 0, 0, 0, 0, 0, 34, 2, 95, 125, 88, 6, 35, 47, 84,
-			39, 51, 36, 50, 122, 15, 81, 6, 39, 55, 36, 65, 35, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 21, 2, 95, 124,
-			84, 36, 51, 47, 37, 49, 35, 55, 50, 122, 15, 117, 6, 44, 47, 122, 0, 0, 7, 132, 209, 129, 208, 181, 72, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 209, 129, 208, 184, 72, 0, 0, 10, 4, 209, 129, 208,
-			190, 89, 10, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 177, 208, 181, 208, 176, 72, 0, 0, 0, 0, 17, 5, 95, 49,
-			77, 65, 51, 65, 6, 37, 55, 37, 35, 34, 72, 35, 0, 0, 15, 5, 95, 49, 77, 65, 50, 65, 37, 55, 37, 6, 39, 50, 0, 0,
-			15, 5, 95, 49, 77, 65, 49, 6, 37, 55, 57, 35, 72, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 132, 208, 178, 208, 190, 72, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 20, 0, 0, 97, 0, 0, 0, 48, 4, 0, 0, 98, 0, 0, 0, 49, 4, 0, 0, 99, 0, 0, 0, 70, 4, 0, 0, 7, 1,
+			0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 102, 6, 36, 72, 50, 35, 0, 0, 0, 0, 13, 3, 95, 54, 67, 91, 6, 109, 89, 47,
+			6, 39, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 102, 72, 84, 6, 36, 0, 0, 0, 14, 3, 95, 50, 88, 72, 84, 6, 35, 109,
+			89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 63, 88, 50, 35, 49, 0, 0, 0, 0,
+			17, 3, 95, 52, 88, 76, 109, 47, 37, 44, 6, 37, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 53, 88,
+			48, 6, 109, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 186, 208, 190, 209, 152, 76, 0, 13, 3, 95, 54, 88,
+			91, 6, 109, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 56, 88, 39,
+			89, 6, 40, 65, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 57, 88, 72, 109, 84, 6, 109, 109, 89,
+			109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 63, 65, 71, 40, 49, 84, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 208, 184, 208, 187, 208, 184, 72, 8, 9, 134, 208, 184,
+			208, 187, 208, 184, 8, 0, 0, 0, 0, 0, 0, 11, 136, 208, 177, 208, 184, 208, 187, 208, 176, 72, 0, 0, 0, 0, 15, 4, 95, 48,
+			77, 52, 71, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 37, 6, 39, 50, 37, 0, 0, 16,
+			4, 95, 48, 77, 51, 65, 6, 37, 55, 37, 35, 34, 72, 138, 0, 0, 7, 132, 208, 187, 208, 184, 72, 0, 14, 4, 95, 48, 77, 49,
+			6, 37, 55, 57, 35, 72, 37, 0, 0, 11, 136, 208, 177, 208, 184, 208, 187, 208, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 184, 208, 188, 208, 176, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 3, 95, 194, 173, 48, 14, 16, 6, 37, 84, 14, 16, 36, 65, 36, 50,
+			122, 15, 117, 6, 44, 47, 6, 37, 76, 49, 122, 0, 0, 0, 24, 3, 95, 194, 171, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6,
+			35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 0, 9, 134, 208, 177, 208, 184, 208, 187, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 11, 136, 208, 189, 208, 181, 209, 129, 208, 181, 76, 0, 25, 3, 95, 194, 187, 88, 6, 35, 47, 84, 39, 51, 36, 50,
+			15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 0, 11, 136, 208, 189, 208, 181, 209, 129, 208, 184, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 2, 195, 151, 48, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 194, 167, 72, 36, 55, 0, 0, 12, 2,
+			194, 164, 84, 6, 35, 55, 40, 47, 122, 0, 0, 0, 0, 0, 0, 0, 19, 2, 194, 174, 51, 6, 36, 81, 37, 89, 47, 14, 16, 35,
+			117, 138, 57, 122, 0, 0, 0, 0, 0, 0, 0, 16, 2, 194, 168, 48, 14, 16, 6, 37, 57, 36, 81, 55, 122, 89, 0, 0, 13, 138,
+			208, 184, 208, 188, 208, 176, 209, 130, 208, 181, 76, 21, 2, 194, 169, 6, 35, 84, 47, 39, 51, 89, 49, 122, 15, 48, 14, 16, 35, 84,
+			122, 0, 0, 9, 2, 194, 182, 76, 55, 36, 50, 0, 0, 7, 2, 194, 183, 48, 39, 0, 0, 0, 12, 2, 194, 181, 65, 6, 37, 49,
+			14, 16, 39, 0, 0, 19, 65, 200, 55, 13, 15, 89, 122, 15, 117, 6, 44, 47, 6, 37, 117, 39, 65, 0, 0, 0, 12, 2, 194, 176,
+			89, 47, 6, 36, 48, 36, 50, 0, 0, 0, 0, 15, 2, 195, 183, 48, 39, 72, 6, 36, 61, 4, 36, 50, 39, 0, 0, 0, 0, 0,
+			0, 12, 2, 194, 184, 89, 36, 72, 6, 37, 55, 122, 0, 0, 0, 9, 134, 209, 136, 209, 130, 208, 190, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 2, 203, 152, 71, 14, 16, 6, 36, 84, 37, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 2, 209, 135, 76, 13, 0, 0, 7, 2, 209, 134, 117, 13, 0, 0, 7, 2, 209, 133, 101, 13, 0, 0, 7, 2, 209,
+			132, 83, 13, 0, 0, 0, 7, 2, 209, 130, 47, 13, 0, 0, 7, 2, 209, 129, 89, 13, 0, 0, 7, 2, 209, 128, 51, 13, 0, 0,
+			0, 0, 0, 0, 0, 8, 132, 208, 183, 208, 176, 72, 28, 0, 0, 7, 2, 209, 136, 91, 13, 0, 0, 0, 14, 2, 95, 34, 50, 6,
+			35, 84, 39, 72, 50, 138, 49, 0, 0, 7, 2, 209, 149, 118, 13, 0, 0, 0, 15, 2, 95, 39, 6, 35, 48, 39, 89, 47, 14, 16,
+			39, 83, 0, 7, 2, 209, 147, 77, 13, 0, 0, 18, 2, 95, 38, 47, 6, 44, 81, 6, 39, 84, 89, 49, 39, 15, 6, 37, 0, 0,
+			0, 11, 2, 95, 36, 72, 6, 39, 55, 122, 51, 0, 0, 7, 2, 209, 159, 75, 13, 0, 0, 15, 2, 95, 42, 118, 84, 6, 36, 88,
+			72, 37, 76, 49, 122, 0, 15, 2, 95, 42, 118, 84, 6, 36, 88, 72, 37, 76, 49, 13, 0, 0, 25, 2, 95, 41, 88, 6, 35, 47,
+			84, 39, 51, 36, 50, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 24, 2, 95, 40, 6, 39, 47, 84, 39, 51, 36, 50,
+			122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 7, 2, 209, 156, 141, 13, 0, 0, 0, 11, 2, 95, 46, 47, 6, 39, 76, 49,
+			122, 0, 7, 2, 209, 154, 67, 13, 0, 0, 14, 2, 95, 45, 117, 6, 44, 47, 6, 37, 76, 49, 122, 0, 11, 2, 95, 45, 65, 6,
+			37, 50, 40, 89, 0, 7, 2, 209, 153, 61, 13, 0, 0, 13, 2, 95, 44, 88, 6, 35, 48, 37, 51, 49, 122, 0, 7, 2, 209, 152,
+			57, 136, 0, 0, 9, 2, 95, 51, 47, 51, 6, 37, 0, 0, 10, 2, 95, 50, 72, 6, 84, 6, 35, 0, 0, 10, 2, 95, 49, 6,
+			36, 72, 36, 50, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 122, 0, 0, 11, 2, 95, 55, 89, 6, 109, 72, 40, 65, 0, 0, 10,
+			2, 95, 54, 91, 6, 109, 89, 47, 0, 0, 9, 2, 95, 53, 48, 6, 109, 47, 0, 0, 12, 2, 95, 52, 76, 6, 109, 47, 138, 16,
+			138, 0, 0, 19, 2, 95, 59, 47, 6, 39, 76, 49, 122, 88, 4, 35, 48, 37, 51, 49, 35, 0, 7, 2, 208, 183, 88, 13, 0, 0,
+			7, 2, 208, 182, 90, 13, 0, 0, 7, 2, 208, 181, 109, 0, 49, 6, 130, 208, 181, 72, 28, 11, 2, 95, 57, 72, 6, 109, 84, 109,
+			47, 0, 0, 10, 2, 95, 56, 6, 39, 89, 40, 65, 0, 7, 2, 208, 180, 72, 13, 0, 0, 15, 2, 95, 63, 48, 34, 6, 35, 91,
+			35, 55, 50, 37, 49, 0, 7, 2, 208, 179, 81, 13, 0, 0, 18, 2, 95, 62, 48, 39, 81, 6, 39, 55, 36, 65, 39, 15, 6, 39,
+			72, 0, 7, 2, 208, 178, 84, 13, 0, 0, 13, 2, 95, 61, 6, 36, 72, 50, 122, 49, 84, 39, 0, 13, 2, 95, 61, 6, 36, 72,
+			50, 122, 49, 84, 39, 0, 7, 2, 208, 177, 71, 13, 0, 0, 7, 2, 208, 176, 35, 0, 49, 8, 2, 208, 176, 35, 0, 72, 8, 16,
+			2, 95, 60, 48, 6, 39, 65, 35, 55, 39, 15, 6, 39, 72, 0, 0, 7, 2, 208, 191, 48, 13, 0, 0, 0, 7, 2, 208, 189, 50,
+			13, 0, 0, 13, 138, 208, 189, 208, 181, 208, 188, 208, 176, 209, 136, 76, 18, 2, 95, 64, 47, 6, 44, 81, 6, 39, 84, 89, 49, 39,
+			15, 6, 35, 0, 7, 2, 208, 188, 65, 13, 0, 0, 7, 2, 208, 187, 55, 13, 0, 0, 7, 2, 208, 186, 49, 13, 0, 0, 0, 8,
+			2, 208, 184, 37, 10, 0, 49, 9, 2, 208, 184, 37, 9, 0, 72, 8, 13, 2, 92, 92, 71, 6, 109, 49, 89, 55, 109, 91, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 95, 226, 128, 154, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84,
+			39, 72, 50, 138, 49, 0, 0, 26, 4, 95, 226, 128, 153, 6, 36, 72, 37, 50, 36, 76, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50,
+			138, 49, 0, 0, 25, 4, 95, 226, 128, 152, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0,
+			0, 25, 4, 95, 226, 128, 158, 88, 35, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 32, 2, 95,
+			91, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 89, 51, 6, 36, 72, 50, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 26,
+			4, 95, 226, 128, 157, 88, 6, 35, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 25, 4, 95, 226,
+			128, 156, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0, 15, 4, 95, 226, 128, 147, 109, 50,
+			15, 117, 6, 44, 47, 122, 0, 0, 0, 10, 2, 95, 95, 117, 6, 44, 47, 122, 0, 0, 0, 33, 2, 95, 93, 88, 6, 35, 47, 84,
+			39, 51, 36, 50, 122, 15, 89, 51, 6, 36, 72, 50, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 0, 0, 15, 4, 95,
+			226, 128, 148, 109, 65, 15, 117, 6, 44, 47, 122, 0, 0, 13, 138, 208, 189, 208, 181, 209, 129, 208, 188, 208, 181, 76, 9, 134, 209, 129,
+			208, 188, 208, 181, 72, 0, 13, 2, 95, 96, 81, 14, 16, 6, 35, 84, 37, 89, 0, 0, 15, 140, 208, 189, 208, 181, 208, 188, 208, 176,
+			208, 188, 208, 181, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 208, 189, 208, 181, 208, 188, 208, 176, 208, 188, 76, 0,
+			0, 0, 0, 0, 25, 4, 95, 226, 128, 185, 6, 39, 47, 84, 39, 51, 36, 50, 15, 50, 6, 35, 84, 39, 72, 50, 138, 49, 0, 0,
+			0, 0, 0, 32, 2, 95, 123, 6, 39, 47, 84, 39, 51, 36, 50, 122, 15, 81, 6, 39, 55, 36, 65, 122, 15, 88, 6, 35, 81, 14,
+			16, 35, 72, 122, 0, 0, 0, 0, 0, 0, 0, 34, 2, 95, 125, 88, 6, 35, 47, 84, 39, 51, 36, 50, 122, 15, 81, 6, 39, 55,
+			36, 65, 35, 122, 15, 88, 6, 35, 81, 14, 16, 35, 72, 122, 0, 0, 21, 2, 95, 124, 84, 36, 51, 47, 37, 49, 35, 55, 50, 122,
+			15, 117, 6, 44, 47, 122, 0, 0, 7, 132, 209, 129, 208, 181, 72, 0, 0, 9, 5, 95, 48, 97, 110, 100, 37, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 209, 129, 208, 184, 72, 0, 0, 10, 4, 209, 129, 208, 190,
+			89, 10, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 208, 177, 208, 181, 208, 176, 72, 0, 0, 0, 0, 17, 5, 95, 49, 77,
+			65, 51, 65, 6, 37, 55, 37, 35, 34, 72, 35, 0, 0, 15, 5, 95, 49, 77, 65, 50, 65, 37, 55, 37, 6, 39, 50, 0, 0, 15,
+			5, 95, 49, 77, 65, 49, 6, 37, 55, 57, 35, 72, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 132, 208, 178, 208, 190, 72, 28, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			20, 0, 0, 0, 97, 0, 0, 0, 48, 4, 0, 0, 98, 0, 0, 0, 49, 4, 0, 0, 99, 0, 0, 0, 70, 4, 0, 0, 7, 1,
 			0, 0, 91, 4, 0, 0, 13, 1, 0, 0, 71, 4, 0, 0, 100, 0, 126, 1, 95, 4, 0, 0, 100, 0, 122, 0, 85, 4, 0, 0,
 			100, 0, 0, 0, 52, 4, 0, 0, 17, 1, 0, 0, 82, 4, 0, 0, 101, 0, 0, 0, 53, 4, 0, 0, 102, 0, 0, 0, 68, 4,
 			0, 0, 103, 0, 0, 0, 51, 4, 0, 0, 104, 0, 0, 0, 69, 4, 0, 0, 105, 0, 0, 0, 56, 4, 0, 0, 106, 0, 0, 0,
@@ -24647,17 +35441,17 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 0, 116, 0, 0, 0, 66, 4, 0, 0, 117, 0, 0, 0, 67, 4, 0, 0, 118, 0, 0, 0, 50, 4, 0, 0, 122, 0, 0, 0,
 			55, 4, 0, 0, 126, 1, 0, 0, 54, 4, 0, 0, 17, 1, 0, 0, 83, 4, 0, 0, 7, 1, 0, 0, 92, 4, 0, 0, 0, 0,
 			0, 0, 6, 196, 135, 0, 3, 78, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 145, 0, 3, 77, 0, 7, 6, 197, 161, 0,
-			3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 208, 176, 0, 3, 35, 0, 7, 6, 208, 177, 0, 3, 71, 0, 7, 6, 208,
-			178, 0, 2, 32, 3, 83, 0, 3, 84, 0, 7, 6, 208, 179, 0, 3, 81, 0, 7, 6, 208, 180, 0, 3, 72, 0, 7, 6, 208, 181,
-			0, 3, 36, 0, 7, 6, 208, 182, 0, 3, 90, 0, 7, 6, 208, 183, 0, 3, 88, 0, 7, 6, 208, 184, 0, 3, 37, 0, 8, 3,
-			37, 10, 0, 7, 6, 208, 186, 0, 3, 49, 0, 7, 6, 208, 187, 0, 3, 55, 0, 7, 6, 208, 188, 0, 3, 65, 0, 7, 6, 208,
-			189, 0, 3, 50, 0, 7, 6, 208, 190, 0, 3, 39, 0, 7, 6, 208, 191, 0, 3, 48, 0, 7, 6, 209, 128, 0, 1, 17, 67, 2,
+			3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 1, 17, 0, 3, 35, 0, 7, 6, 1, 18, 0, 3, 71, 0, 7, 6, 1,
+			19, 0, 2, 32, 3, 83, 0, 3, 84, 0, 7, 6, 1, 20, 0, 3, 81, 0, 7, 6, 1, 21, 0, 3, 72, 0, 7, 6, 1, 22,
+			0, 3, 36, 0, 7, 6, 1, 23, 0, 3, 90, 0, 7, 6, 1, 24, 0, 3, 88, 0, 7, 6, 1, 25, 0, 3, 37, 0, 8, 3,
+			37, 10, 0, 7, 6, 1, 27, 0, 3, 49, 0, 7, 6, 1, 28, 0, 3, 55, 0, 7, 6, 1, 29, 0, 3, 65, 0, 7, 6, 1,
+			30, 0, 3, 50, 0, 7, 6, 1, 31, 0, 3, 39, 0, 7, 6, 1, 32, 0, 3, 48, 0, 7, 6, 1, 33, 0, 1, 17, 67, 2,
 			17, 67, 3, 6, 34, 0, 1, 25, 2, 25, 3, 6, 44, 0, 1, 25, 2, 17, 65, 3, 14, 16, 0, 4, 3, 51, 0, 1, 17, 65,
-			2, 17, 65, 0, 2, 32, 0, 209, 128, 0, 7, 6, 209, 129, 0, 3, 89, 0, 7, 6, 209, 130, 0, 3, 47, 0, 7, 6, 209, 131,
-			0, 3, 40, 0, 7, 6, 209, 132, 0, 3, 83, 0, 7, 6, 209, 133, 0, 3, 107, 0, 7, 6, 209, 134, 0, 3, 117, 0, 7, 6,
-			209, 135, 0, 3, 78, 0, 7, 6, 209, 136, 0, 3, 91, 0, 7, 6, 209, 147, 0, 3, 77, 0, 7, 6, 209, 149, 0, 3, 118, 0,
-			7, 6, 209, 152, 0, 3, 57, 0, 7, 6, 209, 153, 0, 3, 61, 0, 7, 6, 209, 154, 0, 3, 67, 0, 7, 6, 209, 156, 0, 3,
-			141, 0, 7, 6, 209, 159, 0, 3, 75, 0, 7, 6, 97, 0, 3, 35, 0, 4, 2, 106, 3, 137, 0, 2, 114, 0, 7, 6, 98, 0,
+			2, 17, 65, 0, 2, 32, 0, 209, 128, 0, 7, 6, 1, 34, 0, 3, 89, 0, 7, 6, 1, 35, 0, 3, 47, 0, 7, 6, 1, 36,
+			0, 3, 40, 0, 7, 6, 1, 37, 0, 3, 83, 0, 7, 6, 1, 38, 0, 3, 107, 0, 7, 6, 1, 39, 0, 3, 117, 0, 7, 6,
+			1, 40, 0, 3, 78, 0, 7, 6, 1, 41, 0, 3, 91, 0, 7, 6, 1, 52, 0, 3, 77, 0, 7, 6, 1, 54, 0, 3, 118, 0,
+			7, 6, 1, 57, 0, 3, 57, 0, 7, 6, 1, 58, 0, 3, 61, 0, 7, 6, 1, 59, 0, 3, 67, 0, 7, 6, 1, 61, 0, 3,
+			141, 0, 7, 6, 1, 64, 0, 3, 75, 0, 7, 6, 97, 0, 3, 35, 0, 4, 2, 106, 3, 137, 0, 2, 114, 0, 7, 6, 98, 0,
 			3, 71, 0, 7, 6, 99, 0, 3, 117, 0, 7, 6, 100, 0, 3, 72, 0, 197, 190, 3, 75, 0, 122, 3, 118, 0, 7, 6, 101, 0,
 			120, 101, 1, 32, 46, 3, 2, 36, 49, 89, 36, 0, 4, 1, 106, 3, 36, 0, 2, 106, 0, 3, 109, 0, 7, 6, 102, 0, 3, 83,
 			0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 8, 3, 101, 0, 3, 107, 0, 7, 6, 105, 0, 110, 105, 1, 32, 46, 3, 2,
@@ -24686,272 +35480,572 @@ FilesInMemory create_espeakdata_dicts () {
 			1, 42, 42, 2, 32, 3, 24, 0, 61, 1, 61, 61, 2, 32, 0, 46, 3, 47, 39, 76, 49, 122, 0, 45, 8, 32, 2, 32, 15, 3,
 			65, 37, 50, 40, 89, 0, 36, 3, 72, 6, 39, 55, 122, 51, 0, 42, 3, 118, 84, 6, 36, 88, 72, 37, 76, 49, 122, 0, 195, 173,
 			3, 121, 0, 195, 169, 3, 123, 0, 195, 161, 3, 124, 0, 195, 179, 3, 125, 0, 195, 186, 3, 126, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts40 = FileInMemory_createWithData (4945, reinterpret_cast<const char *> (&espeakdata_dicts40_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/mk_dict", 
+		autoFileInMemory espeakdata_dicts43 = FileInMemory_createWithData (4945, reinterpret_cast<const char *> (&espeakdata_dicts43_data), 
+			U"espeak-1.48.04-source/espeak-data/mk_dict", 
 			U"mk");
-		Collection_addItem (me.peek(), espeakdata_dicts40.transfer());
+		my addItem_move (espeakdata_dicts43.move());
 
-		static unsigned char espeakdata_dicts41_data[3020] = {
-			0, 4, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
-			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 0, 0, 5, 65, 20, 112, 0, 0, 0,
-			0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 0,
-			0, 0, 6, 65, 36, 118, 57, 0, 0, 14, 1, 37, 97, 35, 47, 13, 65, 118, 50, 13, 65, 0, 27, 0, 14, 1, 38, 89, 35, 65,
-			40, 80, 80, 35, 57, 13, 65, 0, 0, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 13, 1, 42, 35, 89, 47, 13, 34, 37, 89, 49,
-			0, 27, 0, 12, 1, 43, 49, 123, 140, 140, 13, 66, 13, 65, 0, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 0, 0, 6, 65, 48,
-			116, 55, 0, 0, 0, 0, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 0, 6, 65, 56, 116, 50, 0, 0, 0, 0, 0, 5, 65, 60,
-			119, 0, 0, 9, 1, 61, 89, 35, 65, 13, 65, 0, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57,
-			123, 0, 0, 0, 0, 0, 6, 65, 72, 118, 51, 0, 0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47,
-			112, 0, 0, 0, 0, 0, 6, 65, 84, 57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 0, 11, 65, 92, 72,
-			109, 71, 109, 55, 57, 123, 0, 0, 0, 0, 0, 7, 65, 96, 116, 49, 89, 0, 0, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0,
-			0, 0, 0, 7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 18, 4, 95, 4, 16, 20, 10, 72, 6, 35, 97, 118, 65, 97, 13, 65, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 224, 180, 179, 224, 181, 142, 10, 6, 149, 62, 0, 0, 0, 0, 0, 13, 6, 224, 180, 177,
-			224, 181, 142, 10, 6, 149, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 180, 149, 224,
-			181, 142, 10, 37, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 224, 180, 163, 224, 181, 142, 10, 6, 149, 66,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 3, 95, 51, 88, 65, 6, 40, 48, 48, 35, 47, 0, 0, 10, 3, 95, 48, 67, 50, 6, 123, 51, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49, 57, 48, 6, 35, 47, 47, 39, 65, 48, 35, 47, 40, 0, 0, 16, 3,
-			95, 49, 56, 48, 6, 35, 47, 37, 50, 114, 140, 140, 149, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 49, 49, 48, 6, 35, 47,
-			37, 50, 39, 50, 50, 149, 0, 0, 12, 3, 95, 49, 48, 48, 6, 35, 47, 47, 149, 0, 0, 0, 16, 3, 95, 49, 50, 48, 6, 35,
-			50, 47, 34, 35, 66, 140, 149, 0, 0, 16, 3, 95, 49, 53, 48, 6, 35, 47, 37, 50, 35, 67, 80, 149, 0, 0, 0, 15, 3, 95,
-			49, 55, 48, 6, 35, 47, 37, 50, 114, 52, 149, 0, 0, 15, 3, 95, 49, 54, 48, 6, 35, 47, 37, 50, 35, 52, 149, 0, 0, 0,
-			13, 3, 95, 55, 88, 6, 36, 70, 40, 48, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
-			3, 95, 49, 88, 48, 6, 35, 47, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 88, 6, 37, 34, 40, 48, 35, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 52, 88, 50, 6, 118, 55, 48, 48, 35, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 53, 88, 6, 35, 50, 48, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
-			3, 95, 54, 88, 6, 35, 52, 40, 48, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3,
-			95, 56, 88, 6, 36, 66, 48, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 47, 6, 39, 66, 66, 123, 52,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 224, 181, 142, 144, 37, 62, 35, 144, 35, 34, 35, 65,
-			0, 0, 0, 8, 3, 224, 181, 140, 148, 135, 0, 0, 17, 3, 224, 181, 141, 144, 35, 50, 72, 34, 35, 49, 118, 34, 13, 65, 0, 0,
-			8, 3, 224, 181, 138, 18, 39, 0, 9, 3, 224, 180, 130, 6, 150, 65, 0, 0, 9, 3, 224, 181, 139, 148, 119, 12, 0, 14, 3, 224,
-			180, 131, 84, 37, 89, 35, 34, 81, 13, 65, 0, 0, 8, 3, 224, 181, 136, 148, 134, 0, 0, 0, 8, 3, 224, 181, 134, 18, 36, 0,
-			0, 9, 3, 224, 181, 135, 148, 114, 12, 0, 0, 10, 3, 224, 181, 132, 148, 34, 112, 12, 0, 0, 0, 9, 3, 224, 181, 130, 148, 123,
-			12, 0, 0, 9, 3, 224, 181, 131, 18, 34, 37, 0, 0, 9, 3, 224, 181, 128, 148, 112, 12, 0, 0, 8, 3, 224, 181, 129, 18, 40,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 55, 6, 35, 49, 93, 35, 65, 0, 0,
-			12, 4, 95, 48, 77, 51, 49, 6, 119, 140, 37, 0, 0, 0, 14, 4, 95, 48, 77, 49, 6, 118, 57, 37, 51, 35, 65, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224, 181, 151, 148, 135,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 180, 190, 148, 118, 12, 0, 0, 8, 3, 224, 180,
-			191, 18, 37, 0, 0, 0, 14, 3, 224, 180, 189, 35, 84, 35, 81, 34, 35, 107, 35, 0, 0, 0, 0, 0, 0, 10, 3, 224, 181, 190,
-			10, 6, 149, 62, 0, 0, 9, 3, 224, 181, 191, 10, 37, 49, 0, 0, 10, 3, 224, 181, 188, 10, 6, 149, 51, 0, 0, 9, 3, 224,
-			181, 189, 10, 37, 55, 0, 0, 10, 3, 224, 181, 186, 10, 6, 149, 66, 0, 0, 9, 3, 224, 181, 187, 10, 37, 50, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 180,
-			178, 224, 181, 142, 10, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 95, 33, 118,
-			97, 80, 13, 34, 57, 35, 80, 37, 107, 50, 13, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 46, 71, 37,
-			50, 72, 40, 0, 0, 0, 12, 2, 95, 44, 35, 68, 49, 40, 97, 13, 65, 0, 0, 11, 2, 95, 51, 65, 6, 40, 50, 50, 149, 0,
-			0, 11, 2, 95, 50, 34, 6, 35, 66, 140, 149, 0, 0, 10, 2, 95, 49, 6, 39, 50, 50, 149, 0, 0, 12, 2, 95, 48, 48, 6,
-			123, 79, 57, 13, 65, 0, 0, 9, 2, 95, 55, 6, 114, 70, 149, 0, 0, 9, 2, 95, 54, 6, 35, 52, 149, 0, 0, 10, 2, 95,
-			53, 6, 35, 67, 80, 149, 0, 0, 10, 2, 95, 52, 50, 6, 118, 55, 149, 0, 0, 11, 2, 95, 59, 34, 119, 139, 37, 50, 37, 0,
-			0, 0, 12, 2, 95, 57, 6, 39, 50, 48, 35, 47, 149, 0, 0, 10, 2, 95, 56, 6, 36, 140, 140, 149, 0, 0, 16, 2, 95, 63,
-			80, 119, 72, 57, 13, 80, 37, 107, 50, 13, 65, 0, 0, 12, 6, 224, 180, 168, 224, 181, 142, 10, 37, 50, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 102, 13, 0, 0, 48, 0, 0, 0, 103, 13,
-			0, 0, 49, 0, 0, 0, 104, 13, 0, 0, 50, 0, 0, 0, 105, 13, 0, 0, 51, 0, 0, 0, 106, 13, 0, 0, 52, 0, 0, 0,
-			107, 13, 0, 0, 53, 0, 0, 0, 108, 13, 0, 0, 54, 0, 0, 0, 109, 13, 0, 0, 55, 0, 0, 0, 110, 13, 0, 0, 56, 0,
-			0, 0, 111, 13, 0, 0, 57, 0, 0, 0, 71, 13, 62, 13, 75, 13, 0, 0, 70, 13, 62, 13, 74, 13, 0, 0, 70, 13, 87, 13,
-			76, 13, 0, 0, 0, 0, 0, 0, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 23, 0, 2, 17, 66,
-			3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 25, 0, 2, 17, 66,
-			3, 147, 0, 3, 147, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0, 7, 6, 1, 27, 0, 2, 17, 66,
-			3, 80, 0, 3, 80, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 144, 0, 3, 144, 35, 0, 7, 6, 1, 29, 0, 2, 17, 66,
-			3, 79, 0, 3, 79, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 31, 0, 2, 17, 66,
-			3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 33, 0, 2, 17, 66,
-			3, 142, 0, 3, 142, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 35, 0, 2, 17, 66,
-			3, 143, 0, 3, 143, 35, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 2, 17, 66,
-			3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 39, 0, 2, 17, 66,
-			3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 41, 0, 2, 17, 66,
-			3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 44, 0, 2, 17, 66,
-			3, 48, 0, 8, 138, 181, 224, 176, 180, 224, 141, 181, 224, 170, 180, 224, 2, 224, 180, 184, 224, 180, 176, 224, 181, 141, 3, 83, 35, 0,
-			3, 136, 35, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0,
-			3, 137, 35, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0,
-			3, 57, 35, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 52, 0,
-			3, 52, 35, 0, 224, 181, 141, 224, 180, 177, 3, 140, 140, 0, 1, 141, 181, 224, 168, 180, 224, 3, 151, 0, 7, 6, 1, 51, 0, 2,
-			17, 66, 3, 55, 0, 3, 55, 35, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 3, 62, 35, 0, 7, 6, 1, 53, 0, 2,
-			17, 66, 3, 70, 0, 3, 70, 35, 0, 7, 6, 1, 54, 0, 2, 17, 66, 3, 84, 0, 3, 84, 35, 0, 7, 6, 1, 55, 0, 2,
-			17, 66, 3, 97, 0, 3, 97, 35, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 35, 0, 7, 6, 1, 57, 0, 2,
-			17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 123, 0, 3,
-			66, 0, 7, 6, 1, 124, 0, 3, 50, 0, 7, 6, 1, 125, 0, 3, 34, 0, 7, 6, 1, 126, 0, 3, 55, 0, 7, 6, 1, 127,
-			0, 3, 62, 0, 7, 6, 1, 128, 0, 3, 49, 0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104,
-			105, 0, 7, 6, 224, 180, 0, 189, 3, 0, 133, 3, 35, 0, 142, 3, 36, 0, 4, 135, 3, 37, 0, 191, 0, 142, 8, 3, 38, 36,
-			0, 143, 8, 3, 38, 114, 0, 146, 3, 39, 0, 137, 3, 40, 0, 139, 3, 51, 149, 0, 130, 3, 65, 0, 131, 3, 107, 0, 136, 3,
+		static unsigned char espeakdata_dicts44_data[4160] = {
+			0, 4, 0, 0, 179, 11, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
+			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 0, 18, 4, 95, 100, 112, 116, 10, 72,
+			6, 35, 97, 118, 65, 97, 13, 65, 10, 0, 0, 5, 65, 20, 112, 0, 0, 0, 0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0,
+			6, 65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 0, 0, 0, 6, 65, 36, 118, 57, 0, 0, 14, 1, 37,
+			97, 35, 47, 13, 65, 118, 50, 13, 65, 0, 27, 0, 14, 1, 38, 89, 35, 65, 40, 80, 80, 35, 57, 13, 65, 0, 0, 0, 7, 65,
+			40, 75, 114, 57, 0, 0, 0, 13, 1, 42, 35, 89, 47, 13, 34, 37, 89, 49, 0, 27, 0, 12, 1, 43, 49, 123, 139, 139, 13, 66,
+			13, 65, 0, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 0, 0, 6, 65, 48, 116, 55, 0, 0, 0, 0, 0, 6, 65, 52, 116, 65,
+			0, 0, 0, 0, 0, 6, 65, 56, 116, 50, 0, 0, 0, 0, 0, 5, 65, 60, 119, 0, 0, 9, 1, 61, 89, 35, 65, 13, 65, 0,
+			0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 123, 0, 0, 0, 0, 0, 6, 65, 72, 118, 51, 0,
+			0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 13, 4, 95, 48, 67, 48, 50, 6, 123, 34, 12, 148, 0, 0, 6, 65, 80,
+			25, 112, 0, 0, 0, 0, 0, 6, 65, 84, 57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 0, 11, 65, 92,
+			72, 109, 71, 109, 55, 57, 123, 0, 0, 0, 0, 0, 7, 65, 96, 116, 49, 89, 0, 0, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0,
+			0, 16, 4, 95, 54, 48, 102, 6, 35, 52, 40, 84, 35, 47, 37, 50, 0, 15, 4, 95, 51, 88, 102, 65, 6, 40, 48, 48, 35, 47,
+			47, 0, 0, 0, 0, 7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 49, 67, 48, 39, 34, 148,
+			50, 123, 34, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95,
+			55, 48, 102, 6, 36, 70, 40, 84, 35, 47, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 50, 67,
+			48, 37, 51, 148, 50, 50, 6, 123, 34, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 16, 4, 95, 49, 56, 102, 48, 35, 47, 37, 50, 6, 36, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95,
+			49, 57, 102, 48, 6, 35, 47, 47, 39, 65, 48, 6, 35, 47, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 6, 224, 180, 179, 224, 181, 142, 10, 6, 148, 62, 0, 0, 0, 0,
+			0, 13, 6, 224, 180, 177, 224, 181, 142, 10, 6, 148, 51, 0, 0, 0, 0, 0, 15, 4, 95, 51, 67, 48, 65, 40, 50, 50, 6, 123,
+			34, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 180, 149, 224, 181, 142, 10, 37, 49, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 49, 48, 102, 48, 6, 35, 47, 37, 50, 0, 0, 0, 13, 6, 224, 180, 163, 224, 181, 142,
+			10, 6, 148, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 50, 102, 48, 6, 35, 50, 47,
+			34, 35, 66, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 51, 102, 48, 6, 35, 47, 37, 65, 123, 84, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 52, 102, 48, 6, 35, 47, 37, 50, 118, 55, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5,
+			95, 48, 77, 50, 120, 55, 6, 35, 49, 93, 35, 65, 0, 0, 16, 4, 95, 49, 53, 102, 48, 35, 47, 37, 50, 6, 35, 112, 57, 0,
+			0, 0, 15, 4, 95, 52, 67, 48, 50, 6, 118, 50, 50, 123, 34, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 13, 3, 95, 50, 48, 37, 34, 148, 84, 35, 47, 148, 0, 0, 0, 15, 5, 95, 48, 77, 49, 120, 6, 118,
+			57, 37, 51, 35, 65, 0, 0, 15, 4, 95, 55, 88, 102, 6, 36, 70, 40, 84, 35, 47, 47, 0, 0, 0, 0, 0, 0, 14, 3, 95,
+			51, 48, 65, 6, 40, 48, 48, 35, 47, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 3, 95, 54, 48, 35, 52, 40, 84, 35, 47, 148, 0, 15, 3, 95, 51, 88, 65, 6, 40, 48, 48, 35, 47,
+			47, 37, 0, 0, 11, 3, 95, 48, 67, 50, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 55, 48, 36, 70, 6,
+			40, 84, 35, 47, 148, 0, 0, 14, 3, 95, 49, 67, 39, 34, 148, 50, 123, 139, 139, 37, 0, 0, 0, 0, 0, 13, 4, 95, 53, 67,
+			48, 35, 67, 57, 123, 34, 148, 0, 0, 0, 16, 3, 95, 49, 57, 48, 35, 47, 47, 39, 65, 48, 35, 47, 148, 0, 0, 16, 3, 95,
+			49, 56, 48, 35, 47, 37, 50, 6, 36, 139, 47, 148, 0, 0, 15, 3, 95, 50, 67, 37, 34, 40, 50, 50, 123, 139, 139, 37, 0, 0,
+			0, 0, 0, 0, 0, 15, 3, 95, 49, 49, 48, 35, 47, 37, 50, 39, 50, 50, 148, 0, 0, 11, 3, 95, 49, 48, 48, 35, 47, 47,
+			148, 0, 0, 14, 3, 95, 51, 67, 65, 40, 50, 50, 123, 139, 139, 37, 0, 0, 15, 3, 95, 49, 50, 48, 35, 50, 47, 34, 35, 66,
+			47, 148, 0, 0, 16, 3, 95, 49, 53, 48, 35, 47, 37, 50, 6, 35, 67, 80, 148, 0, 0, 0, 15, 3, 95, 49, 55, 48, 35, 47,
+			37, 50, 6, 114, 70, 148, 0, 0, 15, 3, 95, 49, 54, 48, 35, 47, 37, 50, 6, 118, 52, 148, 0, 0, 0, 15, 3, 95, 55, 88,
+			36, 70, 6, 40, 84, 35, 47, 47, 37, 0, 0, 15, 3, 95, 52, 67, 50, 6, 118, 50, 50, 123, 139, 139, 37, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 13, 3, 95, 53, 67, 35, 67, 57, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 10, 3, 95, 49, 102, 6, 39, 50,
+			50, 0, 0, 0, 14, 3, 95, 52, 48, 50, 6, 118, 48, 48, 35, 47, 148, 0, 10, 3, 95, 49, 88, 48, 35, 47, 37, 0, 0, 14,
+			3, 95, 54, 67, 35, 52, 40, 50, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 102, 6, 34, 13, 66, 72, 0, 0,
+			0, 12, 3, 95, 53, 48, 35, 50, 48, 35, 47, 148, 0, 14, 3, 95, 50, 88, 37, 34, 40, 84, 35, 47, 47, 37, 0, 0, 15, 3,
+			95, 55, 67, 36, 70, 6, 40, 50, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 102, 6, 37, 65, 123, 84, 0, 0,
+			0, 0, 13, 3, 95, 56, 67, 36, 66, 66, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 11, 3, 95, 52, 102, 6, 37, 50, 118, 55,
+			0, 0, 0, 14, 3, 95, 52, 88, 50, 118, 48, 48, 35, 47, 47, 37, 0, 0, 19, 3, 95, 57, 67, 47, 39, 62, 62, 6, 118, 57,
+			37, 51, 35, 47, 47, 37, 0, 0, 0, 0, 0, 14, 4, 95, 54, 67, 48, 35, 52, 40, 50, 123, 34, 148, 0, 0, 10, 3, 95, 53,
+			102, 6, 35, 112, 57, 0, 0, 0, 12, 3, 95, 56, 48, 36, 66, 48, 35, 47, 148, 0, 13, 3, 95, 53, 88, 35, 50, 48, 35, 47,
+			47, 37, 0, 0, 19, 3, 95, 56, 51, 36, 66, 48, 35, 47, 47, 37, 65, 6, 123, 50, 50, 148, 0, 0, 0, 0, 17, 3, 95, 56,
+			52, 36, 66, 48, 35, 47, 47, 37, 50, 118, 55, 148, 0, 0, 0, 9, 3, 95, 54, 102, 6, 118, 52, 0, 0, 0, 15, 3, 95, 57,
+			48, 47, 6, 39, 66, 66, 123, 34, 12, 148, 0, 14, 3, 95, 54, 88, 35, 52, 40, 84, 35, 47, 47, 37, 0, 0, 0, 0, 0, 0,
+			0, 9, 3, 95, 55, 102, 6, 114, 70, 0, 0, 0, 0, 0, 0, 16, 4, 95, 52, 48, 102, 50, 6, 118, 48, 48, 35, 47, 37, 50,
+			0, 11, 4, 95, 49, 88, 102, 48, 6, 35, 47, 0, 0, 0, 0, 10, 3, 95, 56, 102, 6, 36, 50, 50, 0, 0, 0, 12, 3, 95,
+			56, 88, 36, 66, 48, 35, 47, 47, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 57, 102, 39, 65, 48, 6, 35, 47, 37, 50, 0, 0,
+			0, 15, 3, 95, 57, 88, 47, 6, 39, 66, 66, 123, 139, 139, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 15, 3, 224, 181, 142, 143, 37, 62, 35, 143, 35, 34, 35, 65, 0, 0, 0, 8, 3, 224, 181, 140, 147, 135, 0, 0, 17, 3, 224,
+			181, 141, 143, 35, 50, 72, 34, 35, 49, 118, 34, 13, 65, 0, 0, 8, 3, 224, 181, 138, 18, 39, 0, 9, 3, 224, 180, 130, 6, 149,
+			65, 0, 0, 9, 3, 224, 181, 139, 147, 119, 12, 0, 14, 3, 224, 180, 131, 84, 37, 89, 35, 34, 81, 13, 65, 0, 0, 8, 3, 224,
+			181, 136, 147, 134, 0, 0, 0, 8, 3, 224, 181, 134, 18, 36, 0, 0, 9, 3, 224, 181, 135, 147, 114, 12, 0, 0, 10, 3, 224, 181,
+			132, 147, 34, 112, 12, 0, 0, 0, 9, 3, 224, 181, 130, 147, 123, 12, 0, 0, 9, 3, 224, 181, 131, 18, 34, 37, 0, 0, 9, 3,
+			224, 181, 128, 147, 112, 12, 0, 0, 15, 4, 95, 55, 67, 48, 36, 70, 6, 40, 50, 123, 34, 148, 0, 8, 3, 224, 181, 129, 18, 40,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 48, 77, 50, 55, 6, 35, 49, 93, 35, 139, 139, 37,
+			0, 0, 12, 4, 95, 48, 77, 51, 49, 6, 119, 139, 37, 0, 0, 0, 16, 4, 95, 48, 77, 49, 6, 118, 57, 37, 51, 35, 47, 47,
+			37, 0, 0, 15, 4, 95, 53, 48, 102, 6, 35, 50, 48, 35, 47, 37, 50, 0, 15, 4, 95, 50, 88, 102, 6, 37, 34, 40, 84, 35,
+			47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224,
+			181, 151, 147, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 180, 190, 147, 118, 12, 0, 0,
+			8, 3, 224, 180, 191, 18, 37, 0, 0, 0, 14, 3, 224, 180, 189, 35, 84, 35, 81, 34, 35, 107, 35, 0, 0, 0, 0, 0, 13, 4,
+			95, 56, 67, 48, 36, 66, 66, 123, 34, 148, 0, 0, 10, 3, 224, 181, 190, 10, 6, 148, 62, 0, 0, 9, 3, 224, 181, 191, 10, 37,
+			49, 0, 0, 10, 3, 224, 181, 188, 10, 6, 148, 51, 0, 0, 9, 3, 224, 181, 189, 10, 37, 55, 0, 0, 10, 3, 224, 181, 186, 10,
+			6, 148, 66, 0, 0, 9, 3, 224, 181, 187, 10, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 51,
+			102, 120, 65, 6, 123, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 57, 67, 48, 47,
+			39, 62, 62, 6, 118, 57, 37, 51, 35, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			4, 95, 52, 88, 102, 50, 6, 118, 48, 48, 35, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 52, 102, 120, 50, 6, 118, 55, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+			4, 95, 56, 48, 102, 6, 36, 66, 48, 35, 47, 37, 50, 0, 14, 4, 95, 53, 88, 102, 6, 35, 50, 48, 35, 47, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 180, 178, 224, 181, 142, 10, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 18, 2, 95, 33, 118, 97, 80, 13, 34, 57, 35, 80, 37, 107, 50, 13, 65, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 15, 4, 95, 57, 48, 102, 47, 6, 39, 66, 66, 123, 34, 12, 0, 15, 4, 95, 54, 88, 102, 6, 35, 52, 40, 84, 35,
+			47, 47, 0, 0, 0, 10, 2, 95, 46, 71, 37, 50, 72, 40, 0, 0, 0, 12, 2, 95, 44, 35, 68, 49, 40, 97, 13, 65, 0, 0,
+			10, 2, 95, 51, 65, 123, 50, 50, 148, 0, 0, 10, 2, 95, 50, 34, 13, 66, 72, 148, 0, 0, 10, 2, 95, 49, 6, 39, 50, 50,
+			148, 0, 0, 12, 2, 95, 48, 48, 6, 123, 79, 57, 13, 65, 0, 0, 9, 2, 95, 55, 6, 114, 70, 148, 0, 0, 9, 2, 95, 54,
+			6, 118, 52, 148, 0, 0, 10, 2, 95, 53, 6, 35, 67, 80, 148, 0, 0, 9, 2, 95, 52, 50, 118, 55, 148, 0, 0, 11, 2, 95,
+			59, 34, 119, 138, 37, 50, 37, 0, 0, 0, 12, 2, 95, 57, 6, 39, 50, 48, 35, 47, 148, 0, 0, 10, 2, 95, 56, 6, 36, 139,
+			47, 148, 0, 0, 16, 2, 95, 63, 80, 119, 72, 57, 13, 80, 37, 107, 50, 13, 65, 0, 0, 12, 6, 224, 180, 168, 224, 181, 142, 10,
+			37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 50, 48, 102, 6,
+			37, 34, 40, 84, 35, 47, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 56, 88, 102, 6, 36, 66, 48, 35, 47, 47, 0, 0, 0, 0, 0, 16, 4, 95,
+			51, 48, 102, 65, 6, 40, 48, 48, 35, 47, 37, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 57, 88, 102, 47, 6, 39, 66, 66, 123, 139, 139, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 224, 180,
+			149, 224, 181, 141, 0, 224, 180, 154, 224, 181, 141, 0, 224, 180, 159, 224, 181, 141, 0, 224, 180, 164, 224, 181, 141, 0, 224, 180, 170, 224,
+			181, 141, 0, 32, 0, 7, 6, 20, 0, 0, 102, 13, 0, 0, 48, 0, 0, 0, 103, 13, 0, 0, 49, 0, 0, 0, 104, 13, 0, 0,
+			50, 0, 0, 0, 105, 13, 0, 0, 51, 0, 0, 0, 106, 13, 0, 0, 52, 0, 0, 0, 107, 13, 0, 0, 53, 0, 0, 0, 108, 13,
+			0, 0, 54, 0, 0, 0, 109, 13, 0, 0, 55, 0, 0, 0, 110, 13, 0, 0, 56, 0, 0, 0, 111, 13, 0, 0, 57, 0, 0, 0,
+			71, 13, 62, 13, 75, 13, 0, 0, 70, 13, 62, 13, 74, 13, 0, 0, 70, 13, 87, 13, 76, 13, 0, 0, 0, 0, 0, 0, 6, 1,
+			22, 0, 4, 1, 18, 66, 2, 17, 66, 3, 49, 0, 224, 181, 141, 0, 224, 181, 141, 224, 180, 149, 2, 17, 66, 3, 49, 12, 0, 224,
+			181, 141, 224, 180, 149, 3, 49, 12, 35, 0, 1, 18, 66, 3, 49, 35, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1,
+			23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1,
+			25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0, 7, 6, 1,
+			27, 0, 2, 17, 66, 3, 80, 0, 3, 80, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 143, 0, 3, 143, 35, 0, 7, 6, 1,
+			29, 0, 2, 17, 66, 3, 79, 0, 3, 79, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 35, 0, 7, 6, 1,
+			31, 0, 2, 17, 66, 3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 32, 0, 4, 1, 18, 66, 2, 17, 66, 3, 139, 0, 224, 181, 141,
+			0, 224, 181, 141, 224, 180, 159, 2, 17, 66, 3, 139, 12, 0, 224, 181, 141, 224, 180, 159, 3, 139, 12, 35, 0, 1, 18, 66, 3, 139,
+			35, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1,
+			34, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 35, 0, 2, 17, 66, 3, 142, 0, 3, 142, 35, 0, 7, 6, 1,
+			36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 4, 1, 18, 66, 2, 17, 66, 3, 47, 0, 224, 181, 141,
+			0, 224, 181, 141, 224, 180, 164, 2, 17, 66, 3, 47, 12, 0, 224, 181, 141, 224, 180, 164, 3, 47, 12, 35, 0, 1, 18, 66, 3, 47,
+			35, 0, 2, 17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 35, 0, 7, 6, 1,
+			39, 0, 2, 17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1,
+			41, 0, 2, 17, 66, 3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 43, 0, 4, 1, 18, 66, 2, 17, 66, 3, 48, 0, 224, 181, 141,
+			0, 224, 181, 141, 224, 180, 170, 2, 17, 66, 3, 48, 12, 0, 224, 181, 141, 224, 180, 170, 3, 48, 12, 35, 0, 1, 18, 66, 3, 48,
+			35, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 44, 0, 8, 138, 181, 224, 176, 180, 224, 141, 181, 224, 170, 180, 224,
+			2, 224, 180, 184, 224, 180, 176, 224, 181, 141, 3, 83, 35, 0, 2, 17, 66, 3, 136, 0, 3, 136, 35, 0, 7, 6, 1, 45, 0, 2,
+			17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137, 35, 0, 7, 6, 1, 47, 0, 2,
+			17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0, 3, 57, 35, 0, 7, 6, 1, 49, 0, 2,
+			17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 52, 0, 3, 52, 35, 0, 224, 181, 141, 224, 180, 177,
+			3, 139, 139, 0, 1, 141, 181, 224, 168, 180, 224, 3, 150, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 35, 0, 7,
+			6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 3, 62, 35, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 70, 0, 3, 70, 35, 0, 7,
+			6, 1, 54, 0, 2, 17, 66, 3, 84, 0, 3, 84, 35, 0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 97, 0, 3, 97, 35, 0, 7,
+			6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 35, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0, 3, 89, 35, 0, 7,
+			6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 123, 0, 3, 66, 0, 7, 6, 1, 124, 0, 3, 50, 0,
+			7, 6, 1, 125, 0, 3, 34, 0, 7, 6, 1, 126, 0, 3, 55, 0, 7, 6, 1, 127, 0, 3, 62, 0, 7, 6, 1, 128, 0, 3,
+			49, 0, 7, 6, 224, 180, 0, 189, 3, 0, 133, 3, 35, 0, 142, 3, 36, 0, 4, 135, 3, 37, 0, 191, 0, 142, 8, 3, 38, 36,
+			0, 143, 8, 3, 38, 114, 0, 146, 3, 39, 0, 137, 3, 40, 0, 139, 3, 51, 148, 0, 130, 3, 65, 0, 131, 3, 107, 0, 136, 3,
 			112, 0, 191, 2, 224, 180, 178, 224, 181, 141, 25, 3, 113, 0, 143, 3, 114, 0, 4, 134, 3, 118, 0, 190, 0, 147, 3, 119, 0, 138,
 			3, 123, 0, 144, 3, 134, 0, 148, 3, 135, 0, 7, 6, 224, 181, 0, 4, 141, 3, 0, 4, 141, 224, 181, 141, 3, 0, 142, 3, 0,
-			134, 3, 36, 0, 138, 3, 39, 0, 129, 3, 40, 0, 131, 3, 44, 0, 132, 3, 44, 12, 0, 160, 3, 51, 149, 12, 0, 161, 3, 55,
-			149, 12, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 4, 140, 3, 135, 0, 151, 0,
-			141, 2, 32, 3, 149, 0, 7, 6, 0, 36, 3, 72, 119, 62, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts41 = FileInMemory_createWithData (3019, reinterpret_cast<const char *> (&espeakdata_dicts41_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ml_dict", 
+			134, 3, 36, 0, 138, 3, 39, 0, 129, 3, 40, 0, 131, 3, 44, 0, 132, 3, 44, 12, 0, 160, 3, 51, 148, 12, 0, 161, 3, 55,
+			148, 12, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 4, 140, 3, 135, 0, 151, 0,
+			141, 2, 32, 3, 148, 0, 7, 6, 0, 36, 3, 72, 119, 62, 35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts44 = FileInMemory_createWithData (4159, reinterpret_cast<const char *> (&espeakdata_dicts44_data), 
+			U"espeak-1.48.04-source/espeak-data/ml_dict", 
 			U"ml");
-		Collection_addItem (me.peek(), espeakdata_dicts41.transfer());
+		my addItem_move (espeakdata_dicts44.move());
 
-		static unsigned char espeakdata_dicts42_data[4388] = {
-			0, 4, 0, 0, 189, 14, 0, 0, 0, 16, 70, 69, 81, 4, 36, 83, 64, 6, 13, 40, 72, 37, 12, 65, 0, 0, 0, 0, 0, 5,
-			65, 4, 35, 0, 0, 0, 0, 0, 10, 5, 7, 196, 167, 1, 24, 35, 91, 0, 6, 65, 8, 71, 13, 0, 0, 0, 0, 0, 6, 65,
-			12, 49, 35, 0, 0, 12, 5, 4, 9, 196, 161, 1, 72, 37, 75, 35, 0, 0, 0, 0, 7, 65, 16, 72, 36, 36, 0, 0, 0, 10,
-			67, 44, 145, 128, 99, 37, 12, 83, 0, 0, 0, 5, 65, 20, 36, 0, 0, 0, 0, 0, 8, 65, 24, 36, 83, 83, 36, 0, 0, 0,
-			0, 0, 6, 65, 28, 81, 126, 0, 0, 0, 10, 67, 92, 20, 84, 40, 35, 12, 47, 0, 0, 0, 8, 65, 32, 35, 49, 49, 35, 0,
-			0, 0, 0, 0, 19, 9, 20, 1, 7, 196, 167, 13, 9, 12, 24, 47, 35, 12, 65, 37, 55, 91, 0, 5, 65, 36, 37, 0, 0, 0,
-			0, 14, 7, 16, 15, 196, 161, 196, 161, 9, 39, 75, 37, 12, 0, 0, 17, 8, 20, 16, 15, 196, 161, 196, 161, 9, 47, 48, 39, 75,
-			37, 12, 0, 5, 65, 40, 126, 0, 0, 0, 11, 1, 42, 89, 47, 37, 55, 12, 35, 0, 27, 0, 10, 67, 92, 20, 129, 40, 35, 34,
-			35, 0, 10, 67, 92, 20, 129, 40, 35, 34, 35, 0, 16, 7, 20, 9, 5, 7, 196, 167, 9, 47, 37, 12, 112, 12, 0, 72, 9, 1,
-			43, 48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 6, 13, 0, 0, 0, 0, 16, 7, 20, 9, 5, 7, 196, 167, 21, 47, 37, 12,
-			40, 12, 0, 72, 9, 1, 47, 49, 118, 47, 12, 35, 0, 0, 8, 65, 48, 36, 55, 55, 36, 0, 0, 0, 0, 0, 8, 65, 52, 36,
-			65, 65, 36, 0, 0, 0, 0, 0, 8, 65, 56, 36, 50, 50, 36, 0, 0, 0, 0, 0, 5, 65, 60, 39, 0, 0, 12, 1, 61, 37,
-			12, 49, 58, 13, 55, 88, 0, 27, 0, 0, 0, 7, 1, 64, 10, 35, 47, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65,
-			68, 6, 13, 0, 0, 0, 0, 0, 8, 65, 72, 36, 34, 34, 36, 0, 0, 0, 0, 0, 14, 69, 44, 145, 78, 21, 64, 49, 37, 12,
-			50, 36, 47, 0, 8, 65, 76, 36, 89, 89, 36, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 12, 67, 36, 229, 9,
-			37, 50, 47, 37, 12, 0, 72, 0, 5, 65, 84, 40, 0, 5, 65, 84, 40, 0, 0, 0, 0, 17, 6, 22, 9, 196, 139, 9, 14, 84,
-			37, 12, 91, 13, 37, 12, 50, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 8, 1, 92, 49, 36, 50, 39, 0, 7, 65, 92,
-			40, 6, 13, 0, 0, 17, 70, 52, 147, 134, 48, 242, 192, 65, 37, 50, 83, 55, 39, 76, 36, 0, 0, 0, 0, 6, 132, 95, 49, 77,
-			49, 8, 65, 96, 36, 91, 91, 36, 0, 0, 0, 0, 0, 5, 65, 100, 111, 0, 0, 0, 0, 0, 8, 65, 104, 47, 89, 36, 36, 0,
-			0, 0, 15, 7, 1, 7, 196, 167, 13, 5, 12, 35, 12, 65, 36, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 10, 67, 53, 84, 128, 65, 40, 12, 34, 0, 0, 11, 68, 68, 16, 133, 48, 35, 71, 36, 55, 0, 12, 68, 68, 16, 133,
-			48, 35, 12, 71, 36, 55, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 52, 147, 139, 20, 162, 129, 65, 37, 50, 76, 114, 12, 35, 0, 15,
-			70, 52, 147, 139, 20, 162, 129, 65, 37, 50, 99, 114, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 50, 77, 49,
-			36, 55, 83, 114, 40, 50, 0, 0, 0, 13, 4, 95, 50, 77, 51, 88, 6, 13, 120, 81, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 5, 5, 196, 139, 196, 139, 101, 116, 83, 101, 116, 114, 97, 0, 29, 0, 0, 0, 0, 0, 0, 15, 5, 1,
-			196, 167, 14, 1, 35, 107, 6, 13, 50, 35, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 70, 64, 84, 141, 21, 166, 128, 48, 36, 34, 65,
-			36, 47, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 51, 77, 51, 47, 55, 36, 47, 12, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 32, 146, 129, 37, 12, 35, 0, 72, 0, 0, 0,
-			0, 0, 0, 16, 8, 7, 196, 167, 1, 13, 9, 12, 20, 35, 65, 37, 55, 47, 0, 0, 10, 67, 8, 82, 142, 71, 114, 12, 50, 0,
-			10, 67, 8, 82, 142, 71, 114, 12, 50, 0, 0, 0, 9, 67, 16, 19, 128, 72, 35, 50, 0, 0, 0, 0, 0, 10, 67, 25, 84, 64,
-			83, 40, 6, 13, 0, 0, 0, 0, 0, 0, 15, 5, 9, 197, 188, 4, 1, 37, 12, 88, 6, 13, 72, 35, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 18, 66, 12, 208, 116, 83, 101, 110, 116, 105, 109, 39, 101, 116, 114, 105, 0, 29, 0, 0, 0, 0, 0, 0, 13,
-			68, 16, 20, 130, 4, 72, 35, 34, 12, 71, 35, 0, 0, 0, 0, 19, 8, 6, 9, 12, 45, 13, 9, 10, 1, 83, 37, 12, 45, 65,
-			37, 12, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 7, 7, 196, 167, 1, 13, 5, 12, 35, 12, 65, 36, 55,
-			0, 15, 7, 7, 196, 167, 1, 13, 5, 12, 35, 12, 65, 36, 55, 0, 14, 7, 7, 196, 167, 1, 13, 5, 12, 35, 65, 36, 55, 0,
-			0, 0, 0, 0, 10, 3, 226, 130, 172, 36, 58, 34, 39, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 24, 144, 83, 37, 12, 0, 0,
-			10, 67, 52, 244, 148, 65, 39, 34, 47, 0, 0, 0, 0, 0, 9, 67, 16, 18, 192, 72, 35, 49, 0, 0, 13, 68, 52, 147, 132, 84,
-			65, 37, 50, 72, 40, 12, 0, 0, 0, 0, 0, 13, 68, 76, 20, 133, 80, 89, 35, 12, 34, 36, 47, 0, 0, 0, 0, 0, 0, 14,
-			4, 95, 53, 77, 51, 107, 6, 13, 35, 65, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 8, 10, 1, 7, 196,
-			167, 13, 5, 12, 37, 35, 12, 65, 36, 55, 0, 0, 0, 0, 9, 67, 40, 85, 192, 126, 40, 12, 0, 0, 9, 67, 40, 82, 203, 126,
-			76, 36, 0, 0, 0, 0, 0, 0, 10, 67, 16, 21, 206, 72, 118, 12, 50, 0, 0, 0, 17, 8, 20, 1, 7, 196, 167, 8, 15, 13,
-			47, 35, 107, 39, 65, 0, 72, 0, 10, 67, 16, 21, 203, 72, 118, 12, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			67, 52, 133, 88, 65, 40, 12, 91, 0, 9, 67, 52, 133, 88, 65, 40, 91, 0, 14, 3, 95, 51, 88, 47, 55, 6, 13, 47, 37, 12,
-			50, 0, 0, 10, 3, 95, 48, 67, 65, 37, 12, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 49, 67, 65, 37, 12, 118,
-			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 57, 47, 89, 36, 47, 35, 91, 36, 0, 0, 14, 3, 95, 49, 56, 47, 65, 37, 50,
-			47, 35, 91, 36, 0, 0, 0, 0, 16, 7, 20, 1, 7, 196, 167, 14, 1, 47, 35, 50, 35, 12, 0, 72, 0, 0, 0, 0, 13, 3,
-			95, 49, 49, 107, 6, 13, 72, 35, 91, 36, 0, 0, 11, 3, 95, 49, 48, 35, 6, 13, 34, 35, 0, 0, 13, 3, 95, 49, 51, 47,
-			55, 36, 47, 35, 91, 36, 0, 0, 11, 3, 95, 49, 50, 47, 50, 35, 91, 36, 0, 0, 16, 3, 95, 49, 53, 107, 6, 13, 65, 37,
-			89, 47, 35, 91, 36, 0, 0, 14, 3, 95, 49, 52, 36, 34, 71, 35, 47, 35, 91, 36, 0, 0, 13, 3, 95, 49, 55, 89, 71, 35,
-			47, 35, 91, 36, 0, 0, 12, 3, 95, 49, 54, 89, 37, 47, 35, 91, 36, 0, 0, 0, 13, 3, 95, 55, 88, 89, 6, 13, 71, 114,
-			12, 50, 0, 0, 0, 0, 17, 7, 20, 1, 7, 196, 167, 8, 1, 47, 35, 107, 6, 13, 35, 0, 72, 0, 0, 0, 15, 8, 2, 226,
-			128, 153, 8, 5, 11, 11, 71, 36, 76, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 66, 52, 16, 57, 37, 89, 47, 35, 101,
-			0, 11, 66, 52, 16, 57, 34, 37, 72, 40, 101, 0, 10, 66, 52, 16, 49, 126, 50, 40, 101, 0, 9, 66, 52, 16, 49, 126, 50, 101,
-			0, 5, 194, 52, 16, 72, 0, 10, 67, 52, 19, 0, 65, 35, 55, 12, 0, 0, 0, 0, 14, 7, 7, 196, 167, 1, 14, 4, 21, 35,
-			50, 72, 40, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88, 39, 91, 36, 34, 37, 50, 0, 0, 0, 0, 20, 10, 13, 39, 7, 196,
-			167, 1, 14, 4, 21, 24, 65, 6, 35, 50, 72, 40, 91, 0, 0, 0, 0, 0, 14, 7, 7, 196, 167, 1, 14, 4, 9, 35, 50, 72,
-			37, 0, 0, 0, 15, 6, 196, 167, 4, 5, 10, 14, 107, 6, 13, 72, 114, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52,
-			88, 36, 34, 71, 112, 12, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 66, 44, 112, 107, 105, 108, 111, 103, 114, 39, 97, 109, 58, 105,
-			0, 29, 0, 10, 67, 45, 83, 12, 80, 40, 55, 12, 0, 9, 67, 45, 83, 12, 65, 37, 50, 0, 11, 67, 45, 83, 12, 72, 35, 34,
-			71, 35, 0, 15, 3, 95, 53, 88, 107, 6, 13, 35, 65, 89, 37, 12, 50, 0, 0, 13, 8, 17, 9, 5, 7, 196, 167, 5, 4, 126,
-			72, 0, 0, 0, 0, 0, 0, 18, 8, 20, 9, 5, 7, 196, 167, 5, 11, 47, 37, 12, 35, 49, 36, 0, 72, 0, 0, 13, 3, 95,
-			54, 88, 89, 37, 47, 12, 37, 12, 50, 0, 0, 0, 0, 0, 9, 67, 68, 21, 20, 35, 47, 12, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 67, 80, 181, 78, 101, 37, 0, 0, 0, 15, 8, 7, 196, 167, 1, 14, 4, 8, 1, 35, 50, 12, 35, 0, 13, 3,
-			95, 56, 88, 47, 65, 36, 50, 37, 12, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 57, 88, 72, 4, 111, 72, 37, 50,
-			6, 37, 89, 114, 12, 50, 0, 0, 0, 0, 0, 0, 16, 4, 52, 48, 48, 48, 36, 34, 71, 35, 47, 36, 55, 36, 83, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 52, 147, 142, 65, 37, 50, 12, 0, 10, 67, 52, 147, 142, 107, 36, 65,
-			65, 0, 10, 67, 52, 147, 142, 83, 36, 57, 50, 0, 10, 67, 52, 147, 142, 65, 37, 12, 50, 0, 0, 0, 0, 12, 68, 37, 52, 201,
-			72, 37, 89, 12, 37, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 48, 147, 0, 107, 37, 50, 50, 0, 11, 67, 48, 147,
-			0, 55, 37, 12, 55, 12, 0, 0, 17, 66, 52, 112, 109, 105, 108, 105, 103, 114, 39, 97, 109, 58, 105, 0, 29, 0, 0, 12, 68, 40,
-			145, 78, 4, 121, 36, 50, 35, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 50, 65, 6, 37, 55, 121,
-			50, 0, 0, 15, 4, 95, 48, 77, 51, 71, 37, 6, 55, 37, 6, 40, 50, 0, 0, 0, 10, 4, 95, 48, 77, 49, 36, 55, 83, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 9, 13, 9, 14, 7, 196, 167, 1, 10, 18, 65, 37, 12, 50, 112, 34, 0, 19, 9,
-			13, 9, 14, 7, 196, 167, 1, 10, 18, 65, 37, 12, 50, 112, 12, 34, 0, 0, 0, 0, 0, 0, 0, 0, 16, 66, 44, 208, 107, 105,
-			108, 111, 109, 39, 101, 116, 114, 105, 0, 29, 0, 0, 0, 0, 0, 0, 0, 17, 8, 20, 1, 7, 196, 167, 11, 15, 13, 47, 35, 49,
-			39, 65, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 68, 44, 145, 78, 84, 99, 126, 50, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 196, 161, 15, 75, 36, 39, 0, 0, 0, 0, 0, 0, 0, 30, 76, 37, 36, 133,
-			77, 1, 84, 80, 149, 129, 52, 83, 148, 37, 34, 12, 36, 89, 48, 36, 47, 37, 84, 35, 65, 36, 50, 47, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 66, 52, 192, 109, 105, 108, 105, 108, 39, 105, 116, 114, 105, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 16, 66, 52, 208, 109, 105, 108, 105, 109, 39, 101, 116, 114, 105, 0, 29, 0, 10, 67, 24, 244, 212, 83,
-			39, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 10, 9, 12, 45, 17, 21, 4, 4, 9, 5, 13, 37, 45,
-			72, 37, 12, 65, 12, 6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 69, 34,
-			66, 34, 37, 12, 48, 0, 0, 8, 66, 80, 16, 47, 35, 12, 0, 0, 15, 70, 52, 133, 77, 36, 86, 0, 40, 65, 40, 65, 37, 91,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 196,
-			139, 76, 13, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194, 163, 89, 47, 36, 34, 55, 37, 50, 35, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 68, 37, 49, 133, 48, 37, 89, 83, 36, 55, 0, 0, 0, 0, 0, 0, 8, 2, 196, 167, 107, 6, 13, 0, 0, 0,
-			0, 0, 0, 0, 7, 2, 196, 161, 75, 36, 0, 0, 0, 0, 0, 18, 70, 52, 147, 130, 5, 36, 129, 65, 37, 50, 71, 35, 12, 34,
-			35, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 83, 77, 36, 65, 12, 0, 0, 14, 69, 44, 243,
-			148, 72, 16, 80, 39, 50, 47, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 67, 36, 181, 78, 37, 80, 40, 12, 50, 12, 0,
-			0, 15, 70, 16, 19, 23, 5, 21, 0, 72, 35, 55, 40, 35, 47, 0, 8, 2, 197, 188, 88, 6, 13, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 14, 68, 36, 229, 15, 52, 37, 12, 50, 47, 39, 65, 0, 72, 0, 15, 69, 52, 17, 23, 5, 32,
-			65, 35, 72, 40, 12, 35, 34, 0, 15, 69, 52, 17, 23, 5, 32, 65, 35, 72, 40, 35, 12, 34, 0, 0, 0, 0, 0, 0, 0, 0,
-			17, 70, 24, 194, 77, 44, 145, 78, 83, 55, 37, 50, 49, 37, 12, 65, 0, 17, 70, 24, 194, 77, 44, 145, 78, 83, 55, 37, 65, 49,
-			37, 50, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68, 36, 180, 197, 8, 37, 12, 49, 89, 36, 71, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 20, 1, 196, 167, 20, 47, 35, 107, 47, 0, 12, 5, 20, 1, 196, 167, 20, 47, 35,
-			107, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 35, 107, 35, 89, 107, 0, 0, 11, 2, 95, 34, 49, 58, 39,
-			110, 47, 89, 0, 0, 10, 67, 80, 213, 82, 47, 65, 40, 34, 0, 9, 2, 95, 33, 48, 40, 50, 47, 0, 0, 9, 67, 33, 83, 65,
-			40, 65, 35, 0, 11, 67, 33, 83, 65, 40, 12, 65, 35, 0, 72, 0, 11, 2, 95, 39, 35, 80, 80, 36, 50, 47, 0, 0, 6, 2,
-			95, 38, 40, 0, 0, 11, 4, 95, 52, 77, 51, 36, 34, 71, 35, 0, 17, 2, 95, 37, 48, 34, 39, 80, 36, 50, 47, 40, 35, 55,
-			37, 12, 0, 0, 13, 2, 95, 36, 72, 39, 55, 55, 35, 34, 40, 12, 0, 0, 0, 0, 14, 2, 95, 41, 48, 35, 34, 36, 50, 47,
-			36, 88, 37, 0, 0, 14, 2, 95, 40, 48, 35, 34, 36, 50, 47, 36, 88, 37, 0, 0, 0, 9, 2, 95, 46, 48, 40, 50, 47, 0,
-			0, 11, 2, 95, 45, 107, 35, 108, 83, 13, 50, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 12, 2, 95, 51, 47, 55, 37,
-			12, 36, 47, 35, 0, 0, 9, 2, 95, 50, 50, 114, 12, 50, 0, 0, 10, 67, 48, 82, 142, 55, 114, 50, 12, 0, 11, 2, 95, 49,
-			116, 12, 107, 6, 13, 72, 0, 0, 10, 2, 95, 48, 88, 6, 36, 16, 39, 0, 0, 10, 2, 95, 55, 89, 36, 71, 35, 12, 0, 0,
-			11, 2, 95, 54, 89, 37, 12, 47, 12, 35, 0, 0, 12, 2, 95, 53, 107, 6, 13, 35, 65, 89, 35, 0, 0, 9, 2, 95, 52, 36,
-			34, 71, 35, 0, 0, 16, 2, 95, 59, 89, 36, 65, 108, 49, 6, 39, 110, 55, 13, 50, 0, 0, 11, 2, 95, 58, 49, 39, 110, 55,
-			13, 50, 0, 0, 14, 2, 95, 57, 72, 111, 72, 37, 50, 6, 35, 89, 35, 0, 0, 13, 2, 95, 56, 47, 65, 37, 12, 50, 37, 12,
-			35, 0, 0, 15, 2, 95, 63, 65, 37, 89, 47, 39, 104, 89, 37, 57, 35, 0, 0, 10, 2, 95, 62, 35, 49, 71, 35, 34, 0, 0,
-			0, 9, 2, 95, 60, 37, 88, 6, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 2, 95, 91, 48, 35, 34, 36, 50, 47, 36, 88, 37, 0, 0, 0, 13, 69, 76, 82, 138, 21, 32, 89, 114,
-			12, 36, 34, 0, 0, 0, 13, 2, 95, 95, 35, 55, 35, 84, 37, 12, 84, 35, 0, 0, 0, 14, 2, 95, 93, 48, 35, 34, 36, 50,
-			47, 36, 88, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 96, 244, 148, 4,
-			91, 39, 34, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 95, 123, 35, 55, 49, 40, 35, 12, 55, 47, 39, 0, 0, 0, 0,
-			0, 0, 10, 67, 8, 148, 211, 71, 37, 89, 12, 0, 0, 15, 2, 95, 125, 55, 39, 48, 12, 40, 35, 12, 55, 47, 39, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69, 28, 128, 78, 17, 80, 57, 49, 39, 55, 55, 107, 39, 65, 0, 0, 0, 0, 0,
-			0, 0, 0, 11, 68, 40, 148, 212, 4, 37, 89, 47, 35, 0, 18, 9, 7, 196, 167, 1, 12, 11, 5, 13, 13, 35, 55, 76, 36, 65,
-			12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 96, 144, 91, 37, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 10, 67, 37, 52, 193, 37, 89, 12, 35, 0, 0, 0, 0, 0, 0, 0, 12, 68, 8, 244, 212, 4, 71, 39,
-			89, 47, 35, 0, 0, 0, 9, 67, 33, 85, 193, 40, 12, 35, 0, 9, 67, 33, 85, 193, 40, 35, 0, 72, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 44, 145, 78, 99, 37, 12, 50, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 9, 7, 196, 167, 1, 14, 4, 8, 15,
-			13, 35, 50, 72, 39, 65, 0, 0, 0, 0, 16, 7, 50, 48, 48, 48, 48, 48, 48, 88, 6, 13, 120, 81, 36, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 51, 48, 48, 48, 47, 55, 36,
-			47, 12, 0, 0, 0, 0, 0, 0, 11, 5, 7, 196, 167, 1, 12, 35, 55, 12, 0, 0, 0, 0, 0, 6, 196, 139, 0, 3, 76, 13,
-			0, 97, 3, 76, 13, 35, 0, 101, 3, 76, 13, 36, 0, 105, 3, 76, 13, 37, 0, 119, 3, 76, 13, 40, 6, 13, 0, 7, 6, 196,
-			161, 0, 3, 75, 0, 111, 3, 75, 39, 0, 7, 6, 196, 167, 0, 3, 107, 0, 117, 3, 107, 12, 40, 12, 0, 116, 3, 107, 47, 0,
-			7, 6, 197, 188, 0, 3, 88, 6, 13, 0, 4, 97, 3, 88, 35, 0, 103, 196, 167, 0, 101, 3, 88, 36, 0, 105, 101, 3, 88, 37,
-			12, 36, 0, 7, 6, 97, 0, 3, 35, 0, 97, 3, 35, 12, 0, 120, 3, 35, 91, 0, 117, 3, 118, 0, 7, 6, 98, 0, 3, 71,
-			0, 101, 3, 71, 6, 13, 0, 98, 3, 71, 12, 0, 114, 3, 71, 34, 6, 13, 0, 105, 101, 3, 71, 37, 6, 13, 0, 105, 3, 71,
-			37, 12, 0, 7, 6, 99, 0, 3, 80, 0, 7, 6, 100, 0, 100, 3, 72, 12, 0, 3, 72, 36, 0, 7, 6, 101, 0, 3, 36, 0,
-			119, 3, 120, 0, 117, 3, 120, 12, 0, 7, 6, 102, 0, 3, 83, 0, 102, 3, 83, 12, 0, 111, 3, 83, 39, 0, 7, 6, 103, 0,
-			196, 167, 3, 12, 0, 3, 81, 0, 103, 3, 81, 12, 0, 105, 3, 81, 37, 12, 0, 101, 3, 81, 126, 0, 7, 6, 104, 0, 3, 12,
-			0, 7, 6, 105, 0, 101, 3, 37, 12, 0, 3, 108, 0, 117, 3, 108, 40, 0, 7, 6, 106, 0, 106, 3, 37, 12, 0, 97, 3, 37,
-			35, 0, 111, 3, 37, 39, 0, 3, 121, 0, 101, 3, 126, 0, 7, 6, 107, 0, 97, 3, 49, 35, 0, 4, 3, 49, 36, 0, 101, 0,
-			105, 3, 49, 37, 12, 0, 105, 101, 3, 49, 37, 12, 36, 0, 117, 3, 49, 40, 12, 0, 111, 3, 80, 39, 0, 7, 6, 108, 0, 3,
-			55, 0, 7, 6, 109, 0, 4, 2, 110, 3, 37, 65, 0, 2, 112, 0, 2, 114, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 117,
-			3, 50, 40, 12, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 4, 1, 109, 97, 104, 115, 2, 111, 3, 48, 12,
-			0, 1, 109, 97, 107, 2, 97, 110, 106, 0, 1, 109, 97, 115, 2, 111, 111, 0, 8, 97, 116, 111, 2, 97, 0, 8, 101, 108, 111, 2,
-			97, 0, 112, 0, 7, 6, 113, 0, 117, 3, 0, 3, 6, 13, 0, 97, 3, 35, 0, 101, 3, 36, 0, 111, 3, 39, 0, 7, 6, 114,
-			0, 3, 34, 0, 97, 3, 34, 35, 12, 0, 105, 101, 3, 34, 37, 12, 36, 0, 111, 3, 34, 39, 12, 0, 7, 6, 115, 0, 3, 89,
-			0, 4, 97, 113, 3, 89, 35, 0, 97, 113, 113, 0, 105, 101, 3, 89, 37, 12, 36, 0, 7, 6, 116, 0, 3, 47, 0, 116, 3, 47,
-			12, 0, 7, 6, 117, 0, 3, 40, 0, 120, 3, 40, 91, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 40, 0, 7, 6,
-			120, 0, 3, 91, 36, 0, 105, 101, 3, 91, 114, 12, 0, 7, 6, 121, 0, 3, 111, 0, 121, 3, 111, 12, 0, 105, 3, 117, 0, 195,
-			182, 3, 127, 0, 7, 6, 122, 0, 3, 47, 89, 36, 0, 104, 1, 25, 3, 90, 0, 7, 6, 0, 196, 139, 3, 76, 13, 0, 197, 188,
-			3, 88, 6, 13, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts42 = FileInMemory_createWithData (4387, reinterpret_cast<const char *> (&espeakdata_dicts42_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/mt_dict", 
-			U"mt");
-		Collection_addItem (me.peek(), espeakdata_dicts42.transfer());
+		static unsigned char espeakdata_dicts45_data[12249] = {
+			0, 4, 0, 0, 220, 43, 0, 0, 0, 0, 0, 0, 15, 69, 44, 81, 78, 4, 208, 49, 13, 6, 13, 50, 35, 65, 0, 0, 18, 70,
+			80, 84, 130, 21, 48, 82, 47, 13, 51, 71, 6, 13, 89, 35, 34, 0, 6, 65, 4, 36, 12, 0, 0, 16, 69, 5, 0, 84, 4, 128,
+			35, 48, 13, 47, 6, 35, 107, 0, 8, 17, 70, 5, 0, 66, 36, 192, 64, 35, 48, 13, 71, 37, 55, 13, 0, 8, 0, 8, 197, 80,
+			85, 1, 64, 144, 8, 13, 69, 37, 2, 15, 56, 80, 117, 15, 83, 39, 50, 0, 0, 7, 196, 84, 229, 21, 44, 8, 13, 68, 76, 82,
+			129, 44, 89, 6, 13, 75, 35, 49, 0, 0, 7, 65, 8, 71, 37, 12, 0, 0, 18, 70, 44, 243, 80, 60, 225, 78, 49, 39, 65, 48,
+			6, 39, 50, 13, 50, 0, 18, 70, 76, 80, 133, 57, 64, 82, 89, 13, 71, 6, 13, 50, 47, 35, 34, 0, 0, 8, 197, 77, 84, 1,
+			100, 16, 8, 0, 0, 7, 65, 12, 89, 37, 12, 0, 0, 0, 0, 0, 7, 65, 16, 72, 37, 12, 0, 0, 0, 0, 8, 67, 20, 20,
+			212, 21, 0, 47, 13, 68, 76, 80, 129, 44, 89, 6, 13, 71, 35, 19, 0, 21, 4, 95, 100, 112, 116, 10, 48, 6, 13, 34, 48, 40,
+			55, 6, 40, 107, 35, 50, 10, 0, 0, 6, 65, 20, 37, 12, 0, 0, 13, 68, 36, 18, 84, 84, 57, 35, 6, 37, 47, 40, 0, 0,
+			0, 17, 70, 40, 83, 133, 72, 19, 0, 75, 109, 50, 6, 13, 51, 13, 55, 0, 19, 71, 8, 84, 148, 20, 224, 78, 28, 71, 13, 51,
+			47, 6, 13, 50, 35, 68, 0, 0, 6, 65, 24, 109, 83, 0, 0, 18, 70, 76, 83, 148, 36, 209, 78, 89, 109, 50, 47, 6, 37, 65,
+			13, 50, 0, 18, 70, 64, 83, 66, 21, 48, 82, 48, 13, 65, 71, 6, 13, 89, 35, 34, 0, 18, 70, 52, 83, 66, 21, 48, 82, 65,
+			13, 65, 71, 6, 13, 89, 35, 34, 0, 0, 9, 68, 64, 245, 197, 72, 21, 0, 47, 11, 67, 85, 66, 192, 40, 50, 47, 39, 19, 0,
+			0, 0, 7, 65, 28, 75, 37, 12, 0, 0, 13, 68, 44, 84, 138, 4, 49, 6, 13, 51, 75, 13, 0, 0, 0, 0, 6, 65, 32, 36,
+			76, 0, 0, 0, 0, 11, 70, 24, 148, 133, 24, 198, 64, 21, 0, 47, 13, 68, 5, 52, 5, 44, 6, 35, 89, 48, 124, 49, 0, 10,
+			1, 35, 48, 6, 35, 81, 35, 51, 0, 0, 5, 65, 36, 117, 0, 0, 12, 1, 37, 48, 13, 16, 51, 35, 47, 40, 89, 0, 0, 19,
+			1, 38, 109, 50, 15, 49, 6, 35, 65, 48, 13, 50, 37, 0, 81, 99, 111, 32, 8, 1, 38, 72, 6, 35, 50, 0, 0, 0, 15, 69,
+			77, 80, 138, 20, 176, 89, 6, 35, 71, 75, 124, 49, 0, 13, 68, 44, 82, 193, 48, 49, 6, 13, 49, 35, 55, 0, 6, 65, 40, 75,
+			36, 0, 0, 18, 70, 52, 22, 66, 4, 226, 192, 65, 6, 36, 37, 71, 6, 109, 50, 49, 0, 18, 70, 8, 84, 135, 20, 192, 82, 71,
+			13, 51, 81, 6, 13, 55, 35, 34, 0, 0, 0, 11, 1, 43, 80, 6, 35, 65, 48, 39, 34, 0, 0, 6, 65, 44, 49, 36, 0, 0,
+			0, 0, 10, 1, 47, 89, 47, 52, 6, 39, 49, 0, 0, 29, 76, 52, 83, 153, 20, 193, 83, 4, 146, 193, 56, 230, 65, 65, 13, 67,
+			13, 55, 13, 89, 117, 49, 6, 35, 50, 67, 13, 0, 18, 70, 8, 84, 144, 21, 53, 1, 71, 13, 51, 48, 6, 36, 89, 47, 35, 0,
+			13, 4, 95, 100, 105, 97, 6, 40, 65, 55, 114, 47, 0, 6, 65, 48, 109, 55, 0, 0, 0, 0, 11, 70, 12, 243, 80, 4, 230, 64,
+			21, 0, 47, 0, 15, 69, 80, 82, 206, 36, 176, 47, 6, 109, 49, 50, 37, 49, 0, 6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6,
+			65, 56, 109, 50, 0, 0, 0, 0, 0, 6, 65, 60, 39, 12, 0, 0, 16, 1, 61, 89, 4, 35, 65, 13, 15, 72, 6, 13, 68, 35,
+			50, 0, 0, 15, 69, 8, 19, 1, 16, 16, 71, 35, 55, 6, 35, 72, 35, 0, 0, 26, 73, 76, 84, 5, 73, 66, 77, 4, 224, 64,
+			89, 13, 48, 4, 13, 51, 47, 37, 65, 6, 35, 50, 13, 0, 8, 0, 12, 1, 64, 35, 15, 49, 6, 109, 110, 50, 81, 0, 7, 65,
+			64, 48, 37, 12, 0, 0, 0, 13, 67, 4, 33, 0, 6, 35, 71, 72, 40, 55, 0, 24, 0, 0, 8, 65, 68, 49, 57, 40, 12, 0,
+			0, 0, 0, 0, 6, 65, 72, 35, 34, 0, 0, 0, 8, 67, 80, 129, 64, 21, 0, 47, 0, 11, 4, 95, 100, 111, 116, 72, 6, 110,
+			47, 0, 0, 6, 65, 76, 109, 89, 0, 0, 0, 0, 0, 9, 198, 5, 64, 85, 65, 83, 128, 8, 14, 69, 12, 129, 82, 5, 48, 76,
+			6, 13, 34, 35, 89, 0, 7, 65, 80, 47, 37, 12, 0, 0, 0, 0, 0, 13, 68, 64, 84, 193, 80, 48, 6, 13, 89, 35, 47, 0,
+			13, 68, 20, 212, 1, 80, 6, 13, 65, 48, 35, 47, 0, 13, 68, 12, 84, 1, 80, 76, 6, 13, 48, 35, 47, 0, 7, 65, 84, 57,
+			40, 12, 0, 0, 0, 0, 0, 7, 65, 88, 84, 37, 12, 0, 0, 0, 0, 30, 76, 64, 84, 139, 20, 208, 129, 56, 112, 78, 57, 144,
+			64, 48, 13, 51, 49, 4, 13, 65, 71, 35, 68, 6, 35, 50, 67, 13, 0, 0, 13, 68, 44, 84, 193, 48, 49, 6, 13, 89, 35, 55,
+			0, 13, 65, 92, 72, 6, 35, 71, 13, 55, 37, 40, 12, 0, 0, 13, 68, 80, 84, 129, 52, 47, 6, 13, 51, 35, 65, 0, 0, 15,
+			1, 94, 47, 4, 35, 50, 72, 35, 47, 6, 39, 48, 37, 0, 0, 0, 18, 70, 52, 83, 133, 53, 0, 72, 65, 13, 50, 6, 13, 65,
+			48, 35, 107, 0, 17, 70, 52, 83, 133, 53, 0, 64, 65, 13, 50, 6, 13, 65, 48, 13, 0, 15, 4, 95, 49, 77, 49, 89, 13, 34,
+			6, 37, 71, 40, 10, 0, 7, 65, 96, 109, 49, 89, 0, 0, 15, 4, 95, 49, 77, 50, 89, 13, 75, 6, 40, 47, 13, 10, 0, 0,
+			16, 4, 95, 49, 77, 51, 89, 13, 71, 6, 37, 55, 37, 13, 50, 0, 0, 0, 6, 65, 100, 58, 117, 0, 0, 12, 68, 48, 81, 76,
+			4, 55, 6, 37, 55, 35, 0, 0, 0, 17, 70, 48, 83, 66, 4, 112, 64, 55, 13, 65, 71, 6, 35, 81, 35, 0, 0, 9, 68, 64,
+			245, 78, 16, 21, 0, 47, 7, 65, 104, 88, 109, 72, 0, 0, 0, 0, 17, 70, 52, 84, 132, 20, 176, 64, 65, 13, 51, 72, 6, 36,
+			49, 35, 0, 17, 70, 64, 84, 197, 73, 64, 64, 48, 13, 89, 6, 13, 51, 47, 13, 0, 17, 70, 8, 84, 197, 73, 64, 64, 71, 13,
+			89, 6, 13, 51, 47, 13, 0, 17, 70, 76, 82, 197, 72, 160, 64, 89, 13, 49, 6, 13, 51, 75, 13, 0, 19, 71, 64, 83, 135, 28,
+			84, 129, 44, 48, 13, 68, 81, 6, 13, 34, 35, 19, 0, 0, 0, 0, 9, 67, 100, 85, 192, 57, 37, 40, 0, 0, 0, 0, 0, 0,
+			15, 69, 77, 84, 131, 4, 160, 89, 6, 13, 51, 76, 35, 75, 0, 0, 0, 0, 0, 0, 0, 20, 71, 36, 225, 15, 56, 84, 201, 4,
+			37, 50, 72, 39, 50, 6, 118, 89, 37, 13, 0, 0, 0, 0, 9, 68, 76, 245, 84, 32, 21, 0, 47, 0, 0, 10, 1, 126, 47, 6,
+			37, 55, 72, 36, 0, 0, 13, 68, 44, 83, 1, 44, 49, 6, 13, 55, 35, 49, 0, 13, 4, 95, 116, 108, 100, 47, 6, 37, 55, 72,
+			13, 0, 0, 0, 0, 6, 195, 64, 144, 135, 13, 0, 0, 0, 6, 195, 4, 100, 0, 13, 0, 0, 10, 67, 77, 145, 68, 89, 6, 117,
+			72, 0, 17, 70, 80, 84, 135, 21, 48, 64, 47, 13, 51, 81, 6, 13, 89, 13, 0, 0, 12, 68, 29, 32, 78, 16, 81, 52, 109, 50,
+			72, 0, 0, 14, 68, 76, 84, 148, 4, 89, 6, 13, 34, 47, 13, 0, 8, 0, 20, 71, 44, 83, 5, 92, 21, 1, 56, 49, 13, 55,
+			36, 58, 6, 35, 47, 35, 50, 0, 0, 17, 70, 40, 83, 148, 21, 32, 64, 75, 13, 50, 47, 6, 13, 51, 13, 0, 25, 73, 16, 146,
+			197, 32, 83, 132, 4, 178, 64, 72, 37, 49, 4, 13, 107, 13, 50, 72, 6, 35, 49, 37, 0, 17, 70, 64, 83, 132, 21, 32, 64, 48,
+			13, 50, 72, 6, 13, 51, 13, 0, 0, 0, 0, 0, 0, 0, 0, 9, 68, 40, 20, 207, 56, 21, 0, 47, 0, 0, 0, 0, 13, 68,
+			16, 243, 1, 72, 72, 6, 110, 55, 13, 34, 0, 13, 68, 28, 83, 1, 72, 81, 6, 13, 55, 35, 34, 0, 0, 0, 17, 70, 60, 181,
+			15, 8, 84, 128, 39, 49, 47, 6, 39, 71, 13, 34, 0, 17, 70, 44, 244, 143, 56, 84, 128, 49, 39, 51, 6, 39, 50, 13, 34, 0,
+			17, 70, 16, 146, 197, 40, 20, 128, 72, 37, 49, 6, 13, 75, 35, 34, 0, 0, 0, 13, 68, 52, 85, 5, 72, 65, 6, 37, 47, 13,
+			34, 0, 19, 71, 16, 83, 132, 4, 225, 193, 56, 72, 109, 50, 72, 6, 35, 68, 35, 50, 0, 0, 22, 72, 76, 80, 129, 32, 17, 201,
+			4, 224, 89, 13, 71, 6, 35, 107, 19, 81, 37, 35, 50, 0, 8, 67, 92, 19, 12, 21, 0, 47, 23, 72, 64, 84, 147, 20, 66, 65,
+			4, 224, 48, 13, 51, 89, 4, 13, 72, 37, 6, 35, 35, 50, 0, 0, 0, 0, 20, 71, 44, 82, 5, 8, 21, 1, 56, 49, 13, 107,
+			36, 71, 6, 35, 47, 35, 50, 0, 0, 0, 0, 15, 69, 80, 83, 80, 4, 128, 47, 6, 13, 65, 48, 35, 107, 0, 0, 0, 0, 8,
+			67, 80, 243, 153, 21, 0, 47, 0, 0, 0, 0, 0, 13, 66, 17, 32, 72, 6, 39, 49, 47, 13, 51, 0, 24, 0, 0, 0, 11, 67,
+			4, 225, 1, 6, 35, 50, 72, 35, 0, 0, 15, 69, 76, 83, 66, 4, 128, 89, 6, 13, 65, 71, 35, 107, 0, 15, 69, 48, 83, 66,
+			4, 128, 55, 6, 13, 65, 71, 35, 107, 0, 15, 67, 17, 36, 0, 72, 35, 52, 37, 48, 6, 35, 72, 13, 0, 0, 0, 0, 6, 195,
+			64, 17, 1, 72, 13, 68, 12, 81, 193, 32, 76, 6, 13, 81, 35, 107, 0, 0, 0, 0, 0, 10, 69, 8, 244, 142, 20, 240, 21, 0,
+			47, 0, 14, 4, 95, 109, 99, 110, 65, 6, 35, 49, 52, 110, 50, 0, 0, 13, 68, 28, 83, 65, 72, 81, 6, 13, 65, 35, 34, 0,
+			0, 25, 73, 8, 82, 197, 72, 160, 83, 4, 208, 64, 71, 13, 49, 4, 13, 51, 75, 13, 89, 6, 35, 65, 13, 0, 0, 16, 70, 80,
+			83, 135, 44, 20, 128, 47, 6, 13, 68, 49, 35, 34, 0, 0, 11, 70, 72, 85, 84, 21, 36, 192, 21, 0, 47, 10, 69, 77, 68, 133,
+			21, 64, 21, 0, 47, 0, 0, 22, 72, 64, 84, 135, 60, 192, 75, 4, 224, 48, 13, 51, 81, 39, 55, 6, 35, 49, 35, 50, 0, 0,
+			0, 0, 7, 196, 56, 19, 85, 56, 8, 20, 71, 64, 84, 133, 53, 5, 65, 56, 48, 13, 51, 13, 65, 48, 6, 40, 35, 50, 0, 0,
+			18, 70, 8, 84, 148, 21, 64, 80, 71, 13, 51, 47, 6, 13, 47, 35, 48, 0, 0, 0, 0, 19, 71, 52, 83, 132, 20, 225, 193, 72,
+			65, 13, 50, 72, 6, 13, 68, 35, 34, 0, 14, 67, 8, 129, 0, 71, 6, 13, 51, 107, 35, 72, 0, 24, 0, 18, 70, 80, 84, 132,
+			20, 176, 84, 47, 13, 51, 72, 6, 13, 49, 35, 47, 0, 0, 0, 7, 196, 32, 19, 153, 4, 8, 0, 13, 72, 20, 229, 5, 73, 4,
+			137, 76, 80, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 16, 70, 44, 83, 66, 4, 225, 192, 49, 6, 13, 65, 71, 35, 68, 0, 0,
+			0, 0, 13, 68, 8, 81, 1, 32, 71, 6, 13, 72, 35, 107, 0, 0, 26, 73, 64, 84, 140, 20, 208, 129, 28, 16, 78, 48, 13, 51,
+			55, 4, 13, 65, 71, 35, 81, 6, 35, 35, 50, 0, 0, 0, 0, 0, 18, 70, 36, 228, 197, 57, 66, 70, 37, 50, 89, 6, 124, 50,
+			47, 37, 83, 0, 0, 0, 15, 69, 16, 242, 212, 61, 32, 72, 6, 39, 49, 47, 13, 34, 0, 0, 0, 0, 12, 71, 20, 69, 67, 5,
+			66, 79, 56, 21, 0, 47, 0, 19, 71, 8, 84, 148, 20, 112, 78, 28, 71, 6, 13, 51, 47, 13, 81, 35, 68, 0, 0, 7, 196, 52,
+			19, 1, 32, 8, 13, 68, 76, 19, 5, 32, 89, 6, 35, 55, 36, 107, 0, 13, 68, 80, 83, 1, 32, 47, 6, 13, 55, 35, 107, 0,
+			13, 68, 8, 83, 1, 32, 71, 6, 13, 55, 35, 107, 0, 0, 13, 68, 53, 83, 1, 36, 65, 40, 55, 6, 35, 37, 0, 0, 0, 0,
+			0, 0, 0, 15, 67, 52, 242, 4, 65, 39, 107, 6, 35, 65, 35, 72, 0, 24, 0, 0, 11, 70, 20, 225, 204, 4, 225, 0, 21, 0,
+			47, 0, 8, 197, 44, 85, 9, 44, 16, 8, 8, 197, 44, 84, 129, 56, 16, 8, 10, 69, 25, 32, 78, 12, 80, 21, 0, 47, 0, 0,
+			0, 13, 68, 80, 144, 82, 4, 47, 37, 6, 35, 51, 35, 0, 0, 15, 69, 76, 128, 70, 36, 80, 91, 35, 83, 6, 37, 19, 37, 0,
+			0, 0, 11, 67, 5, 50, 65, 35, 89, 6, 37, 35, 0, 0, 26, 73, 64, 83, 66, 20, 192, 74, 5, 32, 78, 48, 13, 65, 71, 4,
+			13, 55, 35, 75, 6, 35, 51, 35, 50, 0, 0, 9, 68, 84, 226, 79, 56, 21, 0, 47, 13, 72, 12, 243, 147, 61, 37, 9, 84, 208,
+			21, 0, 47, 0, 0, 17, 70, 52, 19, 1, 101, 50, 65, 65, 13, 55, 6, 36, 89, 37, 13, 0, 17, 70, 32, 80, 129, 80, 230, 65,
+			107, 109, 71, 6, 35, 47, 67, 13, 0, 0, 0, 24, 72, 84, 226, 86, 21, 36, 201, 80, 144, 57, 40, 50, 4, 37, 84, 13, 51, 89,
+			6, 37, 47, 37, 0, 0, 17, 70, 72, 80, 76, 37, 66, 64, 51, 37, 35, 55, 6, 37, 47, 37, 0, 25, 73, 64, 84, 147, 60, 224,
+			76, 37, 66, 64, 48, 13, 51, 89, 4, 13, 50, 35, 55, 6, 37, 47, 37, 0, 0, 0, 15, 69, 64, 133, 75, 21, 64, 48, 107, 6,
+			40, 49, 109, 47, 0, 0, 13, 68, 44, 82, 129, 72, 49, 6, 13, 75, 35, 34, 0, 0, 14, 69, 16, 83, 135, 5, 32, 72, 6, 13,
+			68, 35, 34, 0, 0, 0, 0, 0, 13, 68, 48, 84, 1, 76, 55, 6, 13, 48, 35, 89, 0, 0, 13, 68, 48, 83, 65, 32, 55, 6,
+			13, 65, 35, 107, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68, 72, 85, 1, 44, 34, 6, 13, 47, 35, 49, 0, 0, 0, 0, 0, 14,
+			69, 64, 85, 1, 56, 112, 48, 6, 13, 47, 35, 68, 0, 29, 67, 17, 147, 77, 72, 6, 40, 55, 37, 15, 57, 35, 50, 81, 15, 65,
+			35, 107, 6, 35, 15, 65, 6, 40, 55, 37, 13, 0, 0, 0, 15, 69, 80, 246, 79, 80, 16, 47, 39, 57, 6, 39, 47, 35, 0, 12,
+			67, 84, 211, 143, 6, 35, 65, 50, 39, 12, 0, 0, 0, 14, 69, 80, 81, 193, 56, 112, 47, 6, 13, 81, 35, 68, 0, 14, 69, 76,
+			81, 1, 56, 112, 89, 6, 13, 72, 35, 68, 0, 14, 69, 64, 81, 193, 56, 112, 48, 6, 13, 81, 35, 68, 0, 0, 0, 0, 13, 68,
+			76, 144, 149, 44, 89, 6, 36, 71, 39, 49, 0, 18, 70, 65, 33, 83, 36, 65, 78, 48, 51, 124, 89, 6, 37, 72, 13, 50, 0, 0,
+			9, 198, 52, 148, 193, 48, 230, 65, 8, 11, 67, 76, 82, 1, 89, 6, 36, 107, 35, 0, 18, 70, 88, 19, 5, 56, 50, 65, 84, 36,
+			55, 6, 13, 50, 89, 37, 35, 0, 0, 0, 0, 11, 194, 16, 144, 8, 81, 109, 97, 110, 97, 32, 5, 194, 16, 144, 72, 0, 0, 0,
+			0, 0, 18, 70, 8, 84, 132, 21, 0, 78, 71, 13, 51, 72, 6, 13, 48, 35, 50, 0, 0, 0, 9, 68, 72, 145, 200, 80, 21, 0,
+			47, 22, 72, 9, 83, 73, 65, 85, 5, 72, 16, 71, 40, 65, 37, 48, 6, 40, 47, 19, 51, 35, 0, 0, 13, 68, 44, 84, 129, 76,
+			49, 6, 13, 51, 35, 89, 0, 0, 0, 0, 0, 0, 7, 195, 16, 19, 128, 8, 72, 10, 67, 20, 243, 128, 6, 37, 39, 50, 0, 0,
+			11, 70, 16, 83, 141, 5, 34, 192, 21, 0, 47, 0, 14, 69, 9, 37, 78, 20, 144, 71, 6, 52, 40, 50, 117, 0, 0, 9, 198, 76,
+			84, 5, 73, 66, 64, 8, 18, 70, 28, 83, 69, 57, 64, 82, 81, 13, 65, 6, 13, 50, 47, 35, 34, 0, 18, 70, 80, 84, 147, 20,
+			64, 82, 47, 13, 51, 89, 6, 13, 72, 35, 34, 0, 16, 66, 32, 32, 107, 4, 35, 34, 37, 71, 6, 40, 55, 35, 50, 0, 0, 0,
+			0, 0, 0, 0, 10, 67, 48, 19, 132, 55, 109, 50, 72, 0, 0, 0, 0, 0, 18, 70, 80, 83, 69, 72, 195, 200, 47, 13, 65, 6,
+			13, 51, 55, 39, 107, 0, 0, 0, 0, 0, 0, 0, 16, 66, 12, 208, 89, 13, 50, 47, 37, 65, 6, 36, 47, 13, 34, 0, 0, 26,
+			73, 52, 19, 1, 101, 50, 65, 44, 147, 137, 65, 13, 55, 6, 36, 89, 37, 13, 15, 49, 6, 37, 50, 37, 0, 0, 8, 67, 92, 84,
+			212, 21, 0, 47, 0, 0, 0, 0, 17, 70, 52, 83, 133, 56, 112, 72, 65, 13, 50, 6, 13, 68, 35, 107, 0, 20, 71, 76, 82, 129,
+			33, 65, 82, 4, 89, 13, 75, 35, 107, 47, 6, 13, 51, 13, 0, 0, 0, 0, 6, 195, 5, 64, 85, 8, 0, 0, 16, 69, 53, 86,
+			137, 84, 208, 65, 6, 37, 40, 88, 37, 13, 65, 0, 0, 0, 18, 70, 52, 18, 143, 72, 149, 9, 65, 109, 75, 39, 34, 6, 37, 47,
+			37, 0, 0, 13, 68, 76, 83, 1, 52, 89, 6, 13, 55, 35, 65, 0, 13, 68, 44, 83, 1, 52, 49, 6, 13, 55, 35, 65, 0, 0,
+			6, 195, 76, 19, 135, 72, 0, 17, 70, 16, 145, 5, 56, 112, 82, 72, 37, 72, 6, 13, 68, 35, 34, 0, 0, 0, 0, 17, 70, 28,
+			19, 1, 44, 19, 128, 81, 35, 55, 6, 35, 49, 35, 50, 0, 0, 0, 0, 11, 67, 37, 3, 196, 117, 15, 48, 39, 72, 0, 25, 73,
+			8, 84, 141, 21, 54, 85, 5, 32, 84, 71, 13, 51, 65, 4, 13, 91, 40, 6, 35, 51, 35, 47, 0, 0, 12, 67, 21, 128, 207, 6,
+			109, 49, 89, 49, 39, 0, 0, 6, 194, 37, 32, 13, 24, 0, 11, 67, 44, 83, 129, 49, 6, 13, 50, 13, 0, 0, 0, 0, 0, 27,
+			74, 44, 80, 197, 52, 84, 140, 4, 225, 193, 56, 49, 13, 76, 4, 13, 51, 65, 13, 55, 6, 35, 68, 35, 50, 0, 0, 0, 23, 72,
+			44, 84, 197, 53, 80, 78, 100, 16, 49, 13, 89, 4, 13, 65, 40, 6, 13, 50, 67, 13, 0, 0, 27, 66, 12, 240, 49, 6, 35, 65,
+			48, 13, 50, 37, 15, 55, 37, 65, 6, 37, 47, 13, 72, 0, 81, 108, 116, 100, 32, 0, 0, 0, 9, 198, 52, 19, 1, 32, 19, 128,
+			8, 17, 70, 52, 84, 137, 12, 19, 128, 65, 6, 36, 34, 37, 49, 35, 50, 0, 13, 68, 80, 84, 1, 80, 47, 6, 13, 48, 35, 47,
+			0, 17, 70, 52, 83, 133, 44, 19, 128, 65, 13, 50, 6, 13, 49, 35, 50, 0, 13, 68, 44, 84, 193, 80, 49, 6, 13, 89, 35, 47,
+			0, 14, 4, 95, 111, 103, 111, 6, 110, 81, 39, 50, 109, 49, 0, 0, 0, 18, 70, 8, 84, 140, 21, 0, 83, 71, 13, 51, 55, 6,
+			13, 48, 35, 89, 0, 0, 8, 67, 48, 81, 148, 21, 0, 47, 17, 70, 44, 16, 137, 56, 85, 0, 49, 109, 71, 6, 37, 50, 13, 47,
+			0, 0, 13, 68, 76, 82, 193, 80, 89, 6, 13, 49, 35, 47, 0, 13, 68, 48, 82, 193, 80, 55, 6, 13, 49, 35, 47, 0, 13, 68,
+			16, 82, 193, 80, 72, 6, 13, 49, 35, 47, 0, 0, 16, 67, 65, 35, 198, 48, 34, 39, 83, 6, 36, 89, 13, 34, 0, 24, 0, 0,
+			0, 0, 0, 0, 0, 12, 195, 100, 19, 135, 8, 81, 109, 97, 110, 97, 32, 6, 195, 100, 19, 135, 72, 6, 195, 32, 19, 135, 72, 18,
+			70, 80, 84, 138, 20, 160, 83, 47, 13, 51, 75, 6, 13, 75, 35, 89, 0, 0, 0, 11, 67, 64, 20, 192, 48, 6, 35, 12, 89, 0,
+			0, 0, 11, 70, 52, 19, 1, 100, 19, 128, 21, 0, 47, 11, 70, 9, 34, 84, 4, 147, 128, 21, 0, 47, 0, 0, 0, 15, 69, 100,
+			16, 67, 60, 32, 57, 6, 35, 19, 49, 39, 71, 0, 13, 68, 64, 84, 212, 4, 48, 6, 36, 89, 47, 35, 0, 0, 0, 13, 4, 95,
+			98, 114, 118, 71, 52, 6, 37, 12, 84, 0, 0, 8, 67, 56, 85, 192, 21, 0, 47, 0, 0, 0, 18, 4, 95, 97, 99, 50, 72, 40,
+			71, 13, 55, 35, 49, 57, 6, 40, 47, 0, 0, 0, 0, 9, 68, 56, 244, 148, 32, 21, 0, 47, 25, 73, 44, 84, 197, 48, 19, 65,
+			80, 19, 128, 49, 13, 89, 4, 13, 55, 35, 65, 6, 35, 47, 35, 50, 0, 24, 73, 16, 148, 197, 28, 84, 129, 44, 19, 128, 72, 37,
+			89, 13, 81, 13, 51, 6, 13, 49, 35, 50, 0, 0, 0, 0, 9, 68, 52, 16, 193, 84, 21, 0, 47, 0, 11, 67, 8, 19, 139, 71,
+			6, 109, 50, 49, 0, 0, 13, 68, 44, 83, 1, 76, 49, 6, 13, 55, 35, 89, 0, 0, 10, 69, 76, 84, 137, 85, 48, 21, 0, 47,
+			18, 70, 80, 84, 140, 21, 0, 83, 47, 13, 51, 55, 6, 13, 48, 35, 89, 0, 13, 68, 8, 83, 129, 72, 71, 6, 13, 50, 35, 34,
+			0, 0, 18, 70, 80, 82, 206, 36, 176, 76, 47, 109, 49, 50, 6, 37, 49, 35, 55, 0, 0, 17, 70, 76, 80, 133, 56, 20, 128, 89,
+			13, 71, 6, 13, 50, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 70, 8, 84, 139, 21, 32, 83, 71, 13, 51, 49, 6, 13,
+			51, 35, 89, 0, 18, 70, 8, 19, 148, 21, 32, 83, 71, 35, 50, 47, 6, 13, 51, 35, 89, 0, 0, 12, 66, 20, 224, 6, 37, 50,
+			76, 36, 49, 0, 24, 0, 16, 3, 95, 51, 88, 47, 6, 37, 81, 13, 48, 40, 55, 39, 107, 0, 0, 16, 69, 76, 83, 1, 36, 224,
+			89, 13, 55, 6, 35, 37, 50, 0, 8, 13, 3, 95, 48, 67, 51, 6, 35, 47, 40, 89, 23, 0, 0, 9, 68, 81, 33, 78, 16, 21,
+			0, 47, 17, 70, 52, 20, 193, 44, 19, 128, 65, 35, 89, 6, 35, 49, 35, 50, 0, 0, 16, 70, 16, 149, 1, 57, 144, 64, 72, 37,
+			47, 6, 35, 67, 13, 0, 0, 0, 17, 70, 52, 83, 153, 4, 192, 72, 65, 13, 67, 6, 35, 55, 35, 107, 0, 0, 0, 0, 11, 67,
+			56, 244, 129, 50, 6, 39, 51, 35, 0, 11, 67, 16, 84, 129, 72, 6, 13, 51, 13, 0, 0, 9, 68, 16, 18, 76, 100, 21, 0, 47,
+			17, 70, 76, 85, 5, 56, 112, 72, 89, 13, 47, 6, 13, 68, 35, 107, 0, 15, 3, 95, 49, 67, 89, 13, 16, 6, 35, 47, 40, 89,
+			23, 0, 0, 18, 70, 16, 243, 69, 77, 66, 75, 72, 110, 65, 6, 109, 89, 47, 37, 49, 0, 0, 15, 69, 64, 84, 142, 4, 128, 48,
+			6, 13, 34, 50, 35, 107, 0, 12, 68, 8, 80, 197, 44, 71, 109, 76, 124, 19, 0, 12, 68, 8, 80, 133, 44, 71, 109, 71, 124, 19,
+			0, 0, 0, 21, 72, 44, 80, 129, 57, 144, 75, 4, 224, 49, 13, 71, 35, 67, 6, 35, 49, 35, 50, 0, 0, 0, 15, 69, 72, 83,
+			132, 4, 128, 51, 6, 13, 50, 72, 35, 107, 0, 20, 3, 95, 49, 57, 89, 13, 65, 71, 6, 37, 55, 35, 50, 71, 13, 55, 35, 89,
+			0, 0, 17, 3, 95, 49, 56, 55, 6, 35, 48, 35, 50, 71, 13, 55, 35, 89, 0, 0, 0, 21, 72, 16, 144, 133, 48, 83, 135, 29,
+			80, 72, 37, 71, 13, 55, 6, 13, 68, 81, 40, 0, 0, 13, 68, 44, 83, 65, 76, 49, 6, 13, 65, 35, 89, 0, 0, 0, 0, 11,
+			70, 77, 1, 65, 44, 84, 128, 21, 0, 47, 0, 21, 72, 76, 84, 197, 80, 83, 135, 4, 128, 89, 13, 89, 13, 47, 6, 13, 68, 35,
+			107, 0, 14, 3, 95, 49, 49, 89, 6, 13, 71, 13, 55, 35, 89, 0, 0, 12, 68, 76, 85, 1, 72, 89, 19, 47, 35, 34, 0, 17,
+			70, 16, 149, 5, 53, 0, 64, 72, 37, 47, 6, 13, 65, 48, 13, 0, 13, 68, 76, 81, 1, 72, 89, 6, 13, 72, 35, 34, 0, 14,
+			3, 95, 49, 48, 89, 13, 48, 6, 40, 55, 40, 107, 0, 0, 23, 72, 44, 80, 197, 48, 20, 149, 4, 224, 49, 13, 76, 4, 13, 55,
+			35, 51, 6, 40, 35, 50, 0, 16, 3, 95, 49, 51, 47, 6, 37, 81, 13, 71, 13, 55, 35, 89, 0, 0, 17, 70, 52, 83, 69, 28,
+			19, 135, 65, 13, 65, 6, 13, 81, 35, 68, 0, 15, 3, 95, 49, 50, 72, 6, 40, 13, 71, 13, 55, 35, 89, 0, 0, 13, 68, 64,
+			84, 129, 44, 48, 6, 36, 34, 35, 49, 0, 16, 3, 95, 49, 53, 55, 6, 37, 65, 13, 71, 13, 55, 35, 89, 0, 0, 6, 195, 85,
+			3, 64, 13, 17, 67, 76, 67, 128, 89, 13, 50, 72, 37, 52, 6, 37, 35, 50, 0, 24, 17, 3, 95, 49, 52, 6, 13, 65, 48, 35,
+			47, 71, 13, 55, 35, 89, 0, 0, 14, 69, 20, 225, 199, 4, 224, 6, 13, 68, 81, 35, 50, 0, 18, 3, 95, 49, 55, 47, 6, 40,
+			75, 2, 39, 107, 71, 13, 55, 35, 89, 0, 0, 25, 73, 44, 83, 69, 72, 65, 75, 4, 19, 128, 49, 13, 65, 4, 13, 51, 72, 36,
+			49, 6, 35, 35, 50, 0, 16, 3, 95, 49, 54, 6, 13, 50, 35, 65, 71, 13, 55, 35, 89, 0, 0, 8, 197, 4, 64, 76, 4, 128,
+			72, 15, 69, 21, 35, 208, 4, 128, 109, 34, 6, 39, 48, 35, 107, 0, 15, 69, 52, 83, 148, 4, 128, 65, 6, 13, 50, 47, 35, 107,
+			0, 11, 66, 32, 160, 107, 6, 35, 75, 37, 0, 24, 0, 19, 71, 64, 83, 135, 28, 83, 65, 72, 48, 13, 68, 81, 6, 13, 65, 35,
+			34, 0, 18, 3, 95, 55, 88, 47, 6, 40, 75, 2, 39, 107, 48, 40, 55, 39, 107, 0, 0, 9, 68, 52, 81, 9, 4, 21, 0, 47,
+			0, 0, 0, 17, 70, 64, 83, 153, 20, 192, 77, 48, 13, 67, 6, 13, 55, 35, 65, 0, 14, 67, 76, 68, 128, 89, 114, 72, 6, 35,
+			51, 13, 0, 24, 0, 0, 0, 13, 72, 28, 245, 133, 72, 227, 69, 57, 64, 21, 0, 47, 0, 9, 198, 16, 20, 137, 64, 17, 1, 72,
+			0, 0, 13, 68, 64, 80, 193, 32, 48, 6, 13, 76, 35, 107, 0, 0, 14, 73, 16, 148, 212, 72, 144, 149, 80, 147, 206, 21, 0, 47,
+			26, 73, 64, 84, 130, 20, 192, 78, 40, 16, 78, 48, 13, 51, 71, 4, 13, 55, 35, 50, 75, 6, 35, 35, 50, 0, 0, 13, 4, 95,
+			97, 99, 117, 35, 49, 57, 6, 40, 47, 0, 0, 0, 0, 8, 66, 44, 80, 49, 13, 0, 72, 0, 0, 0, 0, 0, 0, 0, 9, 68,
+			29, 35, 213, 64, 21, 0, 47, 17, 70, 76, 80, 133, 76, 20, 128, 89, 13, 71, 6, 13, 89, 35, 34, 0, 0, 19, 71, 64, 83, 133,
+			57, 64, 78, 28, 48, 13, 50, 6, 13, 50, 47, 35, 68, 0, 13, 68, 80, 81, 193, 76, 47, 6, 13, 81, 35, 89, 0, 0, 15, 3,
+			95, 50, 88, 72, 6, 40, 13, 48, 40, 55, 39, 107, 0, 0, 17, 70, 60, 211, 137, 9, 84, 192, 6, 39, 65, 50, 37, 71, 35, 89,
+			0, 0, 0, 0, 0, 8, 197, 8, 18, 11, 4, 224, 8, 0, 0, 0, 6, 195, 16, 20, 137, 72, 13, 68, 80, 83, 65, 56, 47, 6,
+			13, 65, 35, 50, 0, 0, 9, 68, 44, 244, 133, 4, 21, 0, 47, 0, 0, 0, 18, 70, 52, 85, 193, 72, 224, 73, 65, 13, 58, 35,
+			34, 50, 6, 35, 37, 0, 0, 21, 72, 8, 84, 148, 20, 225, 203, 5, 32, 71, 13, 51, 47, 6, 13, 68, 49, 35, 34, 0, 17, 3,
+			95, 63, 63, 49, 4, 39, 72, 36, 107, 6, 40, 52, 40, 83, 0, 0, 15, 67, 49, 65, 0, 55, 37, 65, 6, 37, 47, 13, 72, 0,
+			24, 0, 13, 66, 53, 32, 65, 6, 37, 89, 47, 13, 34, 0, 24, 0, 17, 3, 95, 52, 88, 6, 109, 65, 48, 35, 47, 48, 40, 55,
+			39, 107, 0, 0, 0, 20, 72, 80, 84, 133, 56, 113, 193, 57, 80, 47, 52, 13, 68, 81, 6, 35, 50, 40, 0, 17, 70, 56, 81, 193,
+			80, 145, 128, 50, 109, 81, 6, 13, 47, 37, 83, 0, 0, 0, 11, 67, 4, 181, 1, 6, 35, 49, 47, 35, 0, 0, 0, 0, 25, 73,
+			44, 85, 5, 57, 65, 82, 4, 208, 78, 49, 13, 47, 13, 50, 47, 13, 51, 6, 35, 65, 35, 50, 0, 0, 16, 3, 95, 53, 88, 55,
+			6, 37, 65, 13, 48, 40, 55, 39, 107, 0, 0, 0, 12, 4, 95, 114, 110, 103, 52, 6, 37, 68, 81, 0, 0, 18, 70, 65, 35, 198,
+			21, 51, 210, 48, 51, 39, 83, 6, 124, 89, 13, 34, 0, 0, 6, 195, 80, 20, 9, 8, 17, 70, 52, 83, 135, 20, 224, 73, 65, 13,
+			68, 13, 50, 6, 35, 37, 0, 0, 0, 13, 68, 80, 85, 1, 64, 47, 6, 13, 47, 35, 48, 0, 0, 0, 16, 3, 95, 54, 88, 6,
+			109, 50, 35, 65, 48, 40, 55, 39, 107, 0, 0, 11, 70, 76, 51, 212, 48, 19, 132, 21, 0, 47, 15, 69, 80, 80, 84, 21, 32, 47,
+			37, 6, 36, 47, 13, 34, 0, 0, 0, 19, 71, 16, 149, 5, 57, 64, 78, 28, 72, 37, 47, 6, 13, 50, 47, 35, 68, 0, 0, 0,
+			0, 0, 14, 66, 52, 64, 65, 39, 107, 6, 35, 65, 35, 72, 0, 24, 0, 9, 198, 76, 82, 9, 56, 113, 193, 8, 0, 11, 70, 37,
+			33, 76, 4, 225, 0, 21, 0, 47, 0, 15, 69, 16, 148, 133, 44, 16, 72, 37, 51, 6, 36, 49, 13, 0, 8, 197, 76, 83, 65, 76,
+			16, 8, 15, 69, 80, 84, 133, 76, 16, 47, 13, 52, 6, 37, 89, 35, 0, 10, 69, 29, 82, 78, 20, 16, 21, 0, 47, 0, 0, 14,
+			69, 44, 84, 15, 56, 112, 49, 6, 13, 48, 39, 68, 0, 0, 0, 0, 18, 70, 8, 84, 139, 21, 48, 78, 71, 13, 51, 49, 6, 13,
+			89, 35, 50, 0, 0, 10, 69, 8, 241, 73, 56, 112, 21, 0, 47, 17, 3, 95, 56, 88, 55, 6, 35, 48, 35, 50, 48, 40, 55, 39,
+			107, 0, 0, 0, 0, 18, 70, 80, 147, 132, 4, 176, 78, 47, 37, 50, 72, 6, 35, 49, 35, 50, 0, 0, 0, 0, 0, 14, 68, 53,
+			86, 137, 44, 65, 6, 37, 40, 88, 36, 49, 0, 0, 20, 3, 95, 57, 88, 89, 13, 65, 71, 6, 37, 55, 35, 50, 48, 40, 55, 39,
+			107, 0, 0, 0, 0, 13, 68, 40, 83, 1, 76, 75, 6, 13, 55, 35, 89, 0, 0, 18, 70, 16, 148, 197, 73, 64, 73, 72, 37, 89,
+			13, 51, 47, 6, 35, 37, 0, 0, 0, 0, 0, 0, 0, 0, 24, 73, 64, 83, 153, 20, 193, 83, 4, 144, 78, 48, 13, 67, 4, 13,
+			55, 13, 89, 6, 117, 35, 50, 0, 0, 0, 0, 13, 4, 95, 115, 116, 107, 89, 47, 51, 6, 39, 49, 0, 0, 18, 70, 56, 245, 133,
+			52, 33, 82, 50, 39, 84, 6, 109, 65, 71, 13, 34, 0, 13, 68, 48, 85, 1, 44, 55, 6, 13, 47, 35, 19, 0, 13, 68, 48, 85,
+			1, 44, 55, 6, 13, 47, 35, 49, 0, 0, 0, 26, 67, 100, 16, 128, 57, 35, 50, 81, 15, 35, 65, 35, 47, 15, 71, 13, 34, 107,
+			6, 39, 34, 65, 35, 47, 0, 0, 0, 14, 69, 76, 85, 15, 56, 112, 89, 13, 47, 6, 39, 68, 0, 0, 13, 68, 76, 84, 130, 4,
+			89, 6, 13, 51, 71, 13, 0, 0, 15, 69, 12, 81, 5, 72, 16, 76, 13, 72, 6, 13, 51, 13, 0, 0, 14, 73, 80, 80, 200, 56,
+			243, 15, 28, 145, 83, 21, 0, 47, 0, 0, 0, 15, 69, 104, 19, 66, 36, 16, 88, 6, 35, 65, 71, 37, 35, 0, 15, 69, 76, 81,
+			197, 72, 16, 89, 13, 81, 6, 13, 51, 13, 0, 0, 0, 0, 0, 15, 69, 80, 84, 139, 4, 208, 47, 6, 13, 51, 49, 35, 65, 0,
+			0, 0, 0, 0, 0, 9, 67, 12, 244, 144, 21, 0, 24, 47, 0, 0, 0, 0, 13, 72, 28, 83, 210, 28, 85, 15, 92, 224, 21, 0,
+			47, 0, 0, 26, 73, 44, 80, 133, 72, 177, 83, 4, 224, 78, 49, 13, 71, 4, 13, 51, 49, 13, 89, 6, 35, 50, 35, 50, 0, 13,
+			66, 53, 112, 65, 6, 36, 81, 35, 58, 35, 47, 0, 12, 4, 95, 99, 105, 114, 47, 6, 39, 48, 37, 0, 0, 18, 70, 72, 84, 21,
+			8, 194, 75, 51, 37, 48, 6, 35, 71, 55, 37, 19, 0, 0, 0, 0, 13, 4, 95, 48, 77, 50, 75, 6, 40, 47, 13, 10, 0, 0,
+			14, 4, 95, 48, 77, 51, 71, 6, 37, 55, 37, 13, 50, 0, 0, 0, 15, 74, 36, 229, 5, 72, 224, 84, 36, 243, 129, 48, 21, 0,
+			47, 13, 4, 95, 48, 77, 49, 51, 6, 37, 71, 40, 10, 0, 0, 0, 14, 69, 56, 81, 197, 72, 144, 50, 6, 13, 81, 52, 37, 0,
+			0, 0, 9, 68, 16, 21, 137, 16, 21, 0, 47, 0, 7, 196, 8, 18, 23, 4, 72, 0, 16, 67, 4, 148, 128, 21, 0, 47, 81, 102,
+			114, 97, 110, 99, 101, 32, 23, 67, 4, 148, 128, 6, 109, 12, 10, 6, 36, 12, 89, 37, 13, 10, 0, 81, 97, 115, 105, 97, 32, 0,
+			0, 0, 0, 14, 4, 95, 108, 105, 103, 72, 6, 117, 81, 51, 35, 83, 0, 0, 0, 0, 0, 0, 8, 67, 28, 148, 140, 21, 0, 47,
+			0, 0, 8, 66, 56, 112, 6, 13, 68, 0, 15, 66, 44, 208, 49, 37, 55, 39, 65, 6, 36, 47, 13, 34, 0, 0, 0, 0, 25, 73,
+			64, 84, 133, 53, 5, 65, 56, 230, 65, 48, 13, 51, 4, 13, 65, 48, 40, 6, 35, 50, 67, 13, 0, 0, 21, 71, 92, 146, 201, 64,
+			81, 9, 4, 58, 37, 49, 4, 37, 48, 6, 37, 72, 57, 35, 0, 11, 70, 4, 209, 82, 36, 48, 78, 21, 0, 47, 20, 71, 65, 85,
+			18, 4, 160, 89, 4, 48, 40, 47, 52, 13, 75, 6, 35, 57, 13, 0, 12, 71, 5, 84, 212, 72, 19, 9, 4, 21, 0, 47, 0, 0,
+			19, 71, 52, 83, 133, 57, 64, 78, 28, 65, 13, 50, 6, 13, 50, 47, 35, 68, 0, 18, 71, 64, 83, 153, 21, 32, 78, 28, 48, 13,
+			67, 6, 13, 34, 35, 68, 0, 0, 12, 71, 48, 149, 133, 73, 3, 207, 48, 21, 0, 47, 0, 7, 196, 44, 19, 1, 84, 8, 12, 71,
+			52, 83, 2, 61, 84, 142, 20, 21, 0, 47, 20, 71, 80, 84, 131, 20, 65, 82, 4, 47, 13, 51, 76, 13, 72, 6, 13, 51, 13, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 68, 44, 83, 129, 48, 49, 6, 13, 50, 35, 55, 0, 0, 0, 0, 0, 17, 70, 52, 83, 135, 28,
+			84, 193, 65, 13, 68, 81, 6, 13, 89, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 99, 101, 100, 89, 13,
+			72, 6, 37, 55, 35, 0, 0, 15, 67, 44, 243, 0, 49, 39, 55, 6, 39, 50, 13, 55, 0, 24, 0, 0, 0, 0, 0, 0, 11, 67,
+			32, 84, 143, 107, 6, 37, 52, 39, 0, 18, 70, 80, 84, 138, 20, 32, 75, 47, 13, 51, 75, 6, 13, 71, 35, 49, 0, 0, 0, 0,
+			21, 71, 57, 84, 136, 4, 194, 90, 4, 50, 4, 40, 51, 107, 35, 55, 6, 37, 88, 35, 0, 25, 73, 52, 83, 153, 20, 113, 82, 4,
+			176, 78, 65, 13, 67, 4, 13, 81, 13, 51, 6, 13, 49, 35, 50, 0, 0, 18, 70, 76, 84, 133, 57, 64, 75, 89, 13, 34, 6, 13,
+			50, 47, 35, 49, 0, 13, 69, 20, 225, 203, 5, 80, 6, 13, 68, 49, 114, 0, 0, 13, 4, 95, 99, 97, 112, 71, 6, 109, 89, 35,
+			51, 0, 0, 0, 26, 73, 16, 147, 1, 45, 48, 78, 4, 176, 78, 72, 37, 55, 4, 35, 49, 89, 35, 50, 6, 13, 49, 35, 50, 0,
+			0, 0, 0, 17, 70, 16, 146, 197, 76, 19, 128, 72, 37, 49, 6, 13, 89, 35, 50, 0, 0, 13, 68, 16, 83, 65, 52, 72, 6, 13,
+			65, 35, 65, 0, 0, 10, 69, 77, 145, 14, 21, 144, 21, 0, 47, 0, 0, 0, 0, 10, 67, 44, 84, 192, 49, 6, 36, 89, 0, 0,
+			18, 70, 80, 84, 139, 20, 224, 76, 47, 13, 51, 49, 6, 13, 50, 35, 55, 0, 0, 9, 198, 52, 19, 129, 44, 19, 1, 8, 0, 0,
+			0, 18, 70, 8, 84, 147, 4, 192, 72, 71, 13, 51, 89, 6, 35, 55, 35, 107, 0, 11, 67, 4, 225, 72, 6, 35, 50, 124, 107, 0,
+			17, 70, 52, 83, 153, 21, 48, 76, 65, 13, 67, 6, 13, 89, 35, 55, 0, 0, 24, 73, 44, 83, 69, 57, 65, 82, 36, 19, 128, 49,
+			13, 65, 4, 13, 50, 47, 52, 6, 37, 35, 50, 0, 25, 73, 64, 84, 5, 72, 146, 211, 4, 19, 128, 48, 13, 48, 4, 13, 51, 36,
+			49, 89, 6, 35, 35, 50, 0, 0, 0, 0, 0, 0, 15, 66, 52, 208, 65, 37, 55, 37, 65, 6, 36, 47, 13, 34, 0, 0, 8, 67,
+			65, 83, 139, 21, 0, 47, 0, 0, 0, 0, 0, 12, 67, 84, 226, 84, 57, 6, 40, 50, 37, 47, 0, 0, 0, 17, 70, 76, 80, 197,
+			64, 21, 0, 89, 13, 76, 6, 13, 48, 35, 47, 0, 0, 9, 67, 104, 243, 192, 88, 40, 12, 0, 0, 13, 68, 72, 17, 9, 60, 51,
+			6, 36, 72, 37, 39, 0, 0, 0, 0, 9, 68, 44, 20, 133, 56, 21, 0, 47, 0, 0, 17, 70, 20, 192, 75, 44, 19, 128, 109, 55,
+			6, 35, 49, 49, 35, 50, 0, 0, 10, 69, 76, 50, 15, 60, 192, 21, 0, 47, 0, 0, 11, 70, 36, 229, 5, 72, 225, 84, 21, 0,
+			47, 0, 0, 0, 0, 18, 70, 52, 83, 131, 20, 112, 72, 65, 13, 50, 76, 6, 13, 81, 35, 107, 0, 0, 0, 9, 68, 28, 83, 146,
+			20, 21, 0, 47, 13, 68, 16, 83, 132, 4, 72, 6, 13, 50, 72, 13, 0, 13, 68, 8, 83, 132, 4, 71, 6, 13, 50, 72, 13, 0,
+			0, 14, 67, 65, 65, 64, 48, 6, 34, 35, 37, 84, 13, 47, 0, 0, 18, 70, 4, 229, 71, 21, 32, 72, 35, 50, 6, 40, 81, 16,
+			51, 35, 107, 0, 13, 68, 40, 80, 129, 44, 75, 6, 13, 71, 35, 49, 0, 18, 70, 64, 83, 131, 20, 112, 72, 48, 13, 50, 76, 6,
+			13, 81, 35, 107, 0, 0, 0, 11, 67, 36, 209, 74, 6, 37, 65, 36, 75, 0, 0, 0, 13, 68, 80, 82, 193, 44, 47, 6, 13, 49,
+			35, 49, 0, 0, 0, 0, 13, 68, 48, 20, 197, 72, 55, 6, 36, 89, 13, 34, 0, 0, 11, 70, 52, 144, 200, 4, 83, 0, 21, 0,
+			47, 0, 0, 11, 70, 16, 245, 71, 48, 20, 192, 21, 0, 47, 0, 0, 18, 70, 56, 20, 201, 60, 224, 76, 50, 109, 91, 107, 6, 13,
+			50, 13, 55, 0, 0, 0, 0, 17, 70, 16, 148, 197, 72, 19, 135, 72, 37, 89, 6, 13, 51, 35, 68, 0, 0, 18, 70, 80, 84, 133,
+			56, 64, 72, 47, 13, 51, 6, 13, 50, 72, 35, 107, 0, 0, 24, 73, 8, 84, 147, 21, 53, 65, 36, 19, 128, 71, 13, 51, 89, 4,
+			13, 89, 40, 6, 117, 35, 50, 0, 25, 73, 44, 84, 5, 72, 48, 89, 4, 19, 128, 49, 13, 48, 4, 13, 51, 76, 35, 57, 6, 35,
+			35, 50, 0, 23, 73, 52, 83, 135, 20, 192, 75, 44, 19, 128, 65, 13, 68, 124, 55, 6, 35, 49, 49, 35, 50, 0, 24, 73, 44, 84,
+			197, 48, 20, 129, 76, 19, 128, 49, 13, 89, 13, 55, 35, 51, 6, 35, 89, 35, 50, 0, 0, 0, 0, 0, 0, 22, 72, 16, 148, 5,
+			72, 49, 80, 5, 64, 72, 37, 48, 13, 51, 76, 6, 13, 48, 35, 47, 0, 0, 0, 0, 20, 71, 8, 84, 148, 20, 212, 1, 80, 71,
+			13, 34, 47, 6, 13, 65, 48, 35, 47, 0, 0, 16, 70, 80, 83, 148, 4, 225, 192, 47, 6, 13, 50, 47, 35, 68, 0, 12, 4, 95,
+			103, 114, 118, 81, 52, 6, 35, 84, 0, 0, 0, 0, 6, 195, 44, 192, 201, 13, 0, 0, 0, 10, 69, 48, 243, 132, 60, 224, 21, 0,
+			47, 0, 11, 67, 36, 65, 65, 6, 117, 72, 37, 13, 0, 0, 17, 70, 16, 147, 5, 80, 18, 192, 72, 37, 55, 6, 13, 47, 35, 49,
+			0, 0, 0, 0, 0, 8, 197, 76, 19, 66, 36, 192, 8, 0, 0, 0, 17, 2, 194, 163, 48, 39, 50, 89, 47, 6, 109, 16, 51, 55,
+			37, 68, 0, 0, 20, 71, 44, 84, 138, 5, 48, 77, 4, 49, 13, 51, 75, 13, 89, 6, 35, 65, 13, 0, 17, 70, 76, 82, 197, 48,
+			20, 192, 89, 13, 49, 6, 13, 55, 35, 89, 0, 0, 0, 18, 70, 8, 84, 144, 20, 48, 72, 71, 13, 51, 48, 6, 13, 76, 35, 107,
+			0, 17, 70, 16, 146, 197, 56, 19, 0, 72, 37, 49, 6, 13, 50, 35, 55, 0, 0, 8, 67, 12, 149, 25, 21, 0, 47, 0, 14, 73,
+			20, 225, 201, 56, 81, 82, 36, 225, 192, 21, 0, 47, 23, 73, 41, 84, 149, 80, 84, 130, 4, 225, 192, 75, 40, 51, 40, 47, 6, 13,
+			51, 71, 35, 68, 0, 0, 0, 14, 69, 48, 83, 135, 4, 224, 55, 6, 13, 68, 35, 50, 0, 13, 68, 16, 84, 193, 44, 72, 6, 13,
+			89, 35, 49, 0, 14, 69, 16, 83, 135, 4, 224, 72, 6, 13, 68, 35, 50, 0, 0, 0, 0, 0, 0, 11, 70, 12, 243, 77, 21, 32,
+			197, 21, 0, 47, 0, 0, 0, 0, 0, 11, 70, 81, 32, 68, 36, 225, 192, 21, 0, 47, 16, 70, 8, 19, 139, 36, 225, 192, 71, 6,
+			109, 50, 49, 37, 68, 0, 0, 0, 0, 18, 70, 52, 83, 133, 72, 176, 77, 65, 13, 50, 6, 13, 51, 49, 35, 65, 0, 18, 70, 16,
+			149, 5, 72, 176, 77, 72, 37, 47, 6, 13, 51, 49, 35, 65, 0, 0, 0, 26, 74, 8, 84, 144, 20, 225, 193, 48, 19, 65, 56, 71,
+			13, 51, 48, 13, 68, 35, 55, 6, 35, 65, 35, 50, 0, 0, 0, 0, 0, 8, 67, 60, 225, 192, 110, 68, 0, 8, 67, 48, 81, 64,
+			21, 0, 47, 0, 0, 0, 0, 17, 70, 76, 80, 133, 48, 18, 0, 89, 13, 71, 6, 13, 55, 35, 107, 0, 0, 0, 0, 0, 0, 0,
+			0, 15, 69, 80, 83, 80, 5, 64, 47, 6, 13, 65, 48, 35, 47, 0, 15, 69, 76, 83, 80, 5, 64, 89, 6, 13, 65, 48, 35, 47,
+			0, 0, 14, 67, 12, 243, 64, 72, 6, 110, 47, 15, 49, 110, 65, 0, 0, 25, 73, 52, 83, 66, 21, 34, 84, 4, 133, 64, 65, 13,
+			65, 71, 4, 13, 51, 37, 47, 6, 35, 107, 40, 0, 0, 0, 0, 0, 0, 0, 0, 14, 68, 76, 80, 129, 8, 89, 6, 13, 71, 35,
+			71, 0, 8, 0, 0, 6, 195, 8, 17, 201, 8, 0, 0, 10, 69, 28, 83, 210, 28, 80, 21, 0, 47, 15, 69, 44, 19, 69, 72, 16,
+			49, 109, 65, 6, 13, 51, 13, 0, 0, 0, 0, 11, 70, 104, 80, 76, 4, 225, 0, 21, 0, 47, 0, 10, 69, 60, 227, 9, 56, 80,
+			21, 0, 47, 0, 0, 11, 67, 64, 82, 193, 48, 6, 13, 49, 13, 0, 0, 0, 11, 67, 20, 208, 83, 6, 13, 65, 35, 89, 0, 0,
+			0, 10, 69, 8, 20, 129, 12, 176, 21, 0, 47, 18, 70, 76, 83, 5, 76, 83, 65, 89, 13, 55, 13, 89, 6, 13, 65, 13, 0, 15,
+			69, 72, 83, 148, 4, 176, 34, 6, 13, 50, 47, 35, 49, 0, 15, 69, 72, 83, 148, 4, 176, 51, 6, 13, 50, 47, 35, 49, 0, 0,
+			5, 194, 76, 144, 72, 0, 17, 70, 64, 84, 193, 48, 18, 0, 48, 13, 89, 6, 35, 55, 35, 107, 0, 0, 17, 70, 16, 145, 201, 80,
+			19, 0, 72, 37, 75, 6, 37, 47, 13, 55, 0, 0, 9, 68, 12, 240, 83, 80, 21, 0, 47, 0, 0, 0, 10, 69, 80, 83, 132, 21,
+			32, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 27, 74, 52, 83, 153, 20, 192, 77, 5, 66, 193, 56, 65, 13, 67, 4, 13, 55, 35,
+			65, 6, 35, 47, 49, 35, 50, 0, 0, 0, 0, 0, 0, 17, 70, 16, 148, 129, 76, 18, 64, 72, 37, 51, 35, 89, 6, 35, 37, 0,
+			9, 198, 76, 80, 129, 28, 18, 64, 72, 0, 13, 68, 52, 84, 210, 4, 65, 6, 13, 89, 51, 13, 0, 0, 15, 69, 4, 113, 78, 16,
+			16, 35, 81, 6, 36, 50, 72, 35, 0, 0, 18, 70, 16, 83, 73, 44, 144, 78, 72, 13, 65, 37, 49, 6, 37, 35, 50, 0, 0, 0,
+			0, 15, 69, 92, 19, 137, 80, 16, 58, 35, 50, 6, 37, 47, 35, 0, 0, 0, 6, 195, 52, 18, 193, 8, 6, 195, 40, 146, 193, 8,
+			15, 196, 9, 82, 193, 56, 8, 81, 115, 97, 104, 97, 106, 97, 32, 0, 17, 70, 52, 83, 133, 44, 18, 192, 65, 13, 50, 6, 13, 49,
+			35, 49, 0, 0, 15, 69, 20, 229, 9, 80, 144, 109, 50, 47, 6, 37, 47, 37, 0, 0, 0, 0, 0, 15, 69, 76, 84, 148, 4, 144,
+			89, 13, 51, 47, 6, 35, 37, 0, 0, 12, 66, 72, 208, 51, 6, 37, 68, 81, 36, 47, 0, 0, 0, 17, 70, 52, 83, 5, 44, 21,
+			0, 65, 13, 55, 6, 13, 49, 35, 47, 0, 0, 0, 18, 70, 52, 84, 129, 36, 176, 78, 65, 13, 51, 35, 6, 37, 49, 35, 50, 0,
+			0, 0, 20, 71, 25, 33, 75, 84, 83, 147, 36, 83, 51, 37, 49, 40, 6, 13, 50, 89, 37, 0, 17, 2, 95, 34, 47, 4, 35, 50,
+			72, 35, 49, 6, 40, 47, 37, 48, 0, 0, 17, 70, 16, 148, 5, 28, 19, 135, 72, 37, 48, 6, 13, 81, 35, 68, 0, 17, 70, 64,
+			83, 69, 56, 19, 135, 48, 13, 65, 6, 13, 50, 35, 68, 0, 17, 2, 95, 33, 47, 4, 35, 50, 72, 35, 15, 89, 6, 109, 52, 40,
+			0, 0, 18, 70, 76, 84, 133, 52, 32, 78, 89, 13, 51, 6, 13, 65, 71, 35, 50, 0, 13, 68, 28, 84, 129, 44, 81, 6, 13, 34,
+			35, 19, 0, 0, 15, 69, 65, 35, 196, 84, 176, 48, 51, 6, 39, 72, 35, 49, 0, 19, 2, 95, 39, 49, 4, 40, 47, 37, 48, 15,
+			47, 6, 40, 68, 81, 35, 55, 0, 0, 0, 0, 0, 0, 12, 2, 95, 42, 71, 6, 37, 50, 47, 35, 68, 0, 0, 18, 2, 95, 41,
+			49, 4, 40, 52, 40, 68, 15, 47, 6, 40, 47, 40, 48, 0, 0, 17, 2, 95, 40, 49, 4, 40, 52, 40, 68, 15, 71, 6, 40, 49,
+			13, 0, 0, 10, 67, 64, 84, 128, 48, 13, 34, 0, 72, 0, 11, 2, 95, 46, 47, 6, 37, 47, 37, 19, 0, 0, 18, 70, 80, 84,
+			132, 21, 48, 75, 47, 13, 51, 72, 6, 13, 89, 35, 49, 0, 18, 70, 52, 83, 132, 21, 48, 75, 65, 13, 50, 72, 6, 13, 89, 35,
+			49, 0, 17, 2, 95, 45, 47, 4, 35, 50, 72, 35, 107, 6, 40, 71, 40, 68, 0, 0, 6, 195, 4, 112, 82, 8, 10, 2, 95, 44,
+			49, 6, 39, 65, 13, 0, 0, 10, 2, 95, 51, 47, 6, 37, 81, 13, 0, 0, 9, 2, 95, 50, 72, 6, 40, 13, 0, 0, 10, 2,
+			95, 49, 89, 6, 35, 47, 40, 0, 0, 11, 2, 95, 48, 49, 6, 39, 89, 39, 68, 0, 0, 15, 67, 76, 147, 69, 21, 0, 47, 81,
+			100, 97, 114, 98, 121, 32, 12, 2, 95, 55, 47, 6, 40, 75, 2, 39, 107, 0, 0, 13, 68, 4, 192, 149, 52, 6, 109, 55, 71, 13,
+			65, 0, 28, 75, 52, 83, 153, 20, 208, 149, 57, 146, 75, 4, 224, 65, 13, 67, 4, 13, 65, 71, 40, 67, 6, 37, 49, 35, 50, 0,
+			10, 2, 95, 54, 6, 13, 50, 35, 65, 0, 0, 10, 2, 95, 53, 55, 6, 37, 65, 13, 0, 0, 11, 2, 95, 52, 6, 13, 65, 48,
+			35, 47, 0, 0, 11, 195, 76, 19, 65, 8, 81, 97, 100, 97, 32, 17, 2, 95, 59, 47, 4, 37, 47, 37, 19, 15, 49, 6, 39, 65,
+			13, 0, 0, 16, 2, 95, 58, 47, 4, 37, 47, 37, 19, 15, 72, 6, 40, 13, 0, 0, 12, 71, 52, 85, 8, 60, 66, 83, 80, 21,
+			0, 47, 14, 2, 95, 57, 89, 13, 65, 71, 6, 37, 55, 35, 50, 0, 0, 11, 2, 95, 56, 55, 6, 35, 48, 35, 50, 0, 0, 17,
+			2, 95, 63, 47, 4, 35, 50, 72, 13, 15, 47, 6, 35, 67, 13, 0, 0, 17, 2, 95, 62, 55, 4, 109, 71, 37, 107, 15, 72, 6,
+			35, 52, 37, 0, 0, 11, 67, 20, 208, 75, 6, 13, 65, 35, 49, 0, 0, 11, 70, 16, 21, 137, 17, 51, 206, 21, 0, 47, 19, 70,
+			44, 82, 129, 100, 16, 78, 49, 4, 13, 75, 35, 57, 6, 35, 35, 50, 0, 17, 2, 95, 60, 49, 4, 40, 52, 35, 68, 15, 72, 6,
+			35, 52, 37, 0, 0, 11, 67, 20, 224, 77, 6, 13, 50, 35, 65, 0, 0, 7, 196, 92, 19, 1, 84, 8, 0, 0, 10, 67, 40, 80,
+			78, 75, 6, 37, 50, 0, 0, 26, 74, 52, 83, 153, 20, 193, 83, 4, 146, 193, 56, 65, 13, 67, 4, 13, 55, 13, 89, 6, 117, 49,
+			35, 50, 0, 0, 0, 0, 11, 70, 44, 147, 135, 16, 243, 64, 21, 0, 47, 0, 15, 69, 32, 83, 132, 4, 176, 107, 6, 13, 50, 72,
+			35, 19, 0, 0, 0, 17, 70, 80, 83, 5, 24, 243, 128, 47, 36, 55, 6, 37, 83, 39, 50, 0, 0, 20, 66, 100, 32, 57, 35, 50,
+			81, 15, 71, 13, 34, 107, 6, 39, 34, 65, 35, 47, 0, 0, 0, 0, 18, 70, 8, 84, 133, 57, 64, 75, 71, 13, 51, 6, 13, 50,
+			47, 35, 49, 0, 18, 70, 8, 84, 135, 21, 32, 75, 71, 13, 51, 81, 6, 13, 34, 35, 19, 0, 0, 0, 0, 13, 68, 80, 243, 135,
+			4, 47, 6, 39, 50, 81, 35, 0, 14, 73, 12, 243, 77, 60, 229, 197, 4, 197, 8, 21, 0, 47, 0, 0, 25, 73, 16, 148, 197, 48,
+			84, 193, 36, 176, 78, 72, 37, 89, 4, 13, 55, 13, 89, 6, 117, 49, 35, 50, 0, 0, 27, 74, 52, 83, 135, 20, 208, 129, 48, 146,
+			193, 56, 65, 13, 68, 4, 13, 65, 71, 35, 55, 6, 37, 49, 35, 50, 0, 0, 0, 0, 0, 11, 67, 80, 83, 65, 47, 6, 109, 65,
+			35, 0, 17, 2, 95, 91, 49, 4, 40, 52, 40, 68, 15, 89, 6, 37, 49, 40, 0, 0, 0, 9, 198, 52, 18, 21, 65, 83, 128, 8,
+			0, 0, 10, 69, 4, 148, 130, 85, 48, 21, 0, 47, 15, 69, 64, 83, 148, 5, 48, 48, 6, 13, 50, 47, 35, 89, 0, 15, 69, 44,
+			84, 148, 5, 48, 49, 6, 13, 51, 47, 35, 89, 0, 18, 2, 95, 95, 81, 4, 35, 52, 37, 89, 15, 71, 6, 35, 58, 35, 107, 0,
+			0, 20, 71, 56, 244, 212, 4, 193, 201, 4, 50, 39, 89, 47, 6, 35, 55, 75, 57, 35, 0, 19, 71, 44, 83, 80, 20, 227, 153, 4,
+			49, 109, 65, 48, 6, 36, 50, 67, 13, 0, 0, 13, 68, 64, 146, 197, 80, 48, 6, 37, 49, 109, 47, 0, 18, 70, 44, 82, 5, 56,
+			64, 75, 49, 13, 107, 6, 13, 50, 72, 35, 19, 0, 24, 2, 95, 93, 49, 4, 40, 52, 40, 68, 15, 89, 4, 37, 49, 40, 15, 47,
+			6, 40, 47, 40, 48, 0, 0, 18, 71, 52, 83, 153, 21, 32, 78, 28, 65, 13, 67, 6, 13, 34, 35, 68, 0, 6, 195, 12, 147, 66,
+			13, 13, 2, 95, 92, 6, 71, 109, 49, 89, 55, 109, 91, 0, 0, 17, 70, 76, 84, 21, 80, 82, 0, 89, 13, 48, 6, 40, 47, 36,
+			107, 0, 15, 69, 36, 225, 5, 45, 48, 6, 37, 50, 72, 109, 49, 89, 0, 0, 0, 13, 68, 16, 145, 201, 80, 72, 37, 6, 75, 37,
+			47, 0, 29, 75, 64, 84, 147, 20, 208, 129, 32, 19, 142, 100, 16, 48, 13, 51, 89, 4, 13, 65, 71, 35, 107, 6, 35, 50, 67, 13,
+			0, 0, 11, 67, 40, 22, 154, 75, 6, 109, 12, 89, 0, 0, 0, 0, 0, 0, 10, 67, 17, 83, 128, 72, 6, 40, 50, 0, 0, 0,
+			0, 0, 0, 13, 68, 80, 83, 80, 4, 47, 6, 13, 65, 48, 13, 0, 0, 0, 10, 69, 84, 226, 84, 20, 64, 21, 0, 47, 17, 70,
+			76, 83, 80, 20, 224, 64, 89, 13, 65, 48, 6, 13, 50, 13, 0, 17, 70, 16, 145, 5, 56, 64, 64, 72, 37, 72, 6, 13, 50, 72,
+			13, 0, 0, 18, 70, 65, 33, 83, 80, 20, 201, 48, 51, 109, 89, 47, 6, 35, 89, 37, 0, 0, 13, 68, 24, 83, 4, 4, 83, 6,
+			36, 55, 72, 35, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76, 109, 49, 0, 0, 9, 198, 52, 84, 203, 37, 5, 78, 8, 10,
+			69, 37, 51, 1, 56, 64, 21, 0, 47, 13, 68, 76, 145, 5, 44, 89, 6, 37, 72, 36, 49, 0, 15, 69, 8, 84, 136, 4, 64, 71,
+			6, 13, 51, 107, 35, 72, 0, 0, 11, 67, 28, 84, 193, 81, 6, 13, 89, 13, 0, 0, 0, 0, 0, 20, 2, 95, 123, 49, 4, 40,
+			52, 40, 68, 15, 49, 40, 52, 6, 35, 58, 35, 55, 0, 0, 0, 0, 13, 68, 64, 243, 9, 76, 48, 6, 39, 55, 37, 89, 0, 0,
+			0, 0, 18, 70, 80, 84, 140, 21, 64, 75, 47, 13, 51, 55, 6, 13, 47, 35, 49, 0, 27, 2, 95, 125, 49, 4, 40, 52, 40, 68,
+			15, 49, 40, 52, 4, 35, 58, 35, 55, 15, 47, 6, 40, 47, 40, 48, 0, 0, 25, 73, 44, 243, 80, 72, 82, 5, 57, 50, 70, 49,
+			39, 65, 48, 51, 37, 107, 6, 36, 50, 89, 37, 83, 0, 0, 0, 0, 0, 0, 20, 71, 64, 83, 5, 80, 18, 193, 56, 48, 13, 55,
+			13, 47, 6, 35, 49, 35, 50, 0, 0, 0, 0, 8, 67, 80, 245, 206, 21, 0, 47, 0, 0, 17, 70, 52, 83, 153, 20, 176, 84, 65,
+			13, 67, 6, 13, 49, 35, 47, 0, 17, 70, 52, 83, 135, 21, 48, 84, 65, 13, 68, 6, 13, 89, 35, 47, 0, 0, 0, 0, 0, 0,
+			0, 17, 70, 64, 82, 197, 72, 160, 64, 48, 13, 49, 6, 13, 51, 75, 13, 0, 17, 70, 8, 82, 197, 72, 160, 64, 71, 13, 49, 6,
+			13, 51, 75, 13, 0, 0, 10, 199, 76, 81, 1, 56, 114, 193, 56, 8, 20, 71, 44, 84, 133, 80, 18, 193, 56, 49, 13, 51, 13, 47,
+			6, 35, 49, 35, 50, 0, 0, 13, 68, 48, 147, 132, 4, 55, 6, 37, 50, 72, 35, 0, 0, 0, 17, 70, 104, 18, 193, 72, 144, 64,
+			88, 35, 49, 6, 35, 51, 57, 35, 0, 10, 69, 20, 69, 193, 72, 64, 21, 0, 47, 11, 70, 56, 145, 197, 72, 144, 64, 21, 0, 47,
+			11, 70, 40, 19, 65, 36, 48, 64, 21, 0, 47, 0, 19, 71, 52, 19, 1, 101, 50, 65, 56, 65, 13, 55, 6, 36, 89, 37, 13, 50,
+			0, 20, 71, 44, 84, 197, 8, 18, 193, 56, 49, 13, 89, 13, 71, 6, 35, 49, 35, 50, 0, 0, 0, 0, 0, 0, 17, 5, 109, 39,
+			115, 105, 97, 109, 97, 108, 97, 121, 115, 105, 97, 0, 29, 0, 0, 11, 70, 5, 36, 197, 56, 19, 0, 21, 0, 47, 13, 68, 80, 83,
+			137, 76, 47, 6, 109, 50, 37, 89, 0, 13, 68, 16, 84, 129, 76, 72, 6, 13, 51, 35, 89, 0, 9, 66, 100, 112, 57, 35, 50, 81,
+			0, 0, 13, 68, 8, 84, 193, 72, 71, 6, 13, 89, 35, 34, 0, 0, 17, 70, 76, 83, 5, 64, 20, 192, 89, 13, 55, 6, 13, 48,
+			35, 89, 0, 17, 70, 76, 83, 1, 72, 20, 192, 89, 13, 55, 6, 35, 51, 35, 89, 0, 0, 0, 9, 198, 92, 19, 1, 85, 5, 78,
+			8, 13, 68, 40, 82, 129, 76, 75, 6, 13, 75, 35, 89, 0, 0, 20, 71, 44, 80, 133, 8, 20, 193, 56, 49, 13, 71, 109, 71, 6,
+			35, 89, 35, 50, 0, 0, 0, 0, 0, 28, 74, 8, 84, 139, 21, 49, 77, 64, 21, 1, 56, 71, 13, 51, 49, 4, 13, 89, 13, 65,
+			48, 6, 35, 47, 35, 50, 0, 0, 9, 68, 53, 83, 20, 36, 21, 0, 47, 23, 72, 44, 82, 197, 12, 85, 193, 4, 224, 49, 13, 49,
+			4, 13, 76, 36, 58, 6, 35, 35, 50, 0, 23, 72, 44, 80, 197, 16, 84, 129, 4, 224, 49, 13, 76, 4, 13, 72, 13, 34, 6, 35,
+			35, 50, 0, 21, 72, 44, 84, 197, 77, 80, 73, 4, 224, 49, 13, 89, 13, 89, 40, 6, 117, 35, 50, 0, 0, 0, 0, 13, 68, 44,
+			84, 193, 56, 49, 6, 13, 89, 35, 50, 0, 13, 68, 44, 84, 193, 56, 49, 6, 13, 89, 35, 50, 0, 13, 68, 16, 84, 1, 56, 72,
+			6, 13, 48, 35, 50, 0, 0, 24, 73, 52, 83, 66, 4, 229, 5, 72, 20, 192, 65, 13, 65, 71, 35, 50, 47, 6, 13, 51, 35, 89,
+			0, 0, 0, 0, 0, 0, 8, 67, 21, 84, 143, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 75, 64, 84, 130,
+			20, 225, 1, 32, 20, 129, 4, 224, 48, 13, 51, 71, 13, 50, 72, 4, 13, 107, 35, 51, 6, 35, 35, 50, 0, 0, 32, 76, 8, 84,
+			144, 21, 35, 5, 52, 32, 71, 4, 19, 128, 71, 13, 51, 48, 13, 51, 55, 4, 13, 65, 71, 35, 81, 6, 35, 35, 50, 0, 0, 0,
+			0, 16, 70, 76, 18, 78, 80, 148, 192, 89, 6, 117, 50, 47, 37, 89, 0, 0, 12, 68, 44, 84, 129, 64, 49, 13, 51, 35, 48, 0,
+			0, 13, 68, 88, 148, 149, 76, 84, 6, 117, 51, 13, 89, 0, 13, 68, 48, 82, 193, 76, 55, 6, 13, 49, 35, 89, 0, 13, 68, 8,
+			82, 193, 76, 71, 6, 13, 49, 35, 89, 0, 0, 0, 0, 0, 0, 20, 71, 16, 145, 68, 5, 34, 193, 56, 72, 37, 109, 72, 6, 35,
+			51, 49, 35, 50, 0, 0, 9, 68, 84, 226, 84, 100, 21, 0, 47, 21, 71, 8, 20, 131, 20, 195, 206, 4, 71, 6, 35, 51, 89, 13,
+			55, 6, 39, 50, 35, 0, 0, 0, 14, 69, 80, 83, 135, 4, 128, 47, 6, 13, 68, 35, 107, 0, 0, 28, 74, 44, 84, 197, 40, 18,
+			20, 21, 32, 65, 56, 49, 13, 89, 13, 75, 4, 35, 107, 47, 13, 51, 6, 13, 35, 50, 0, 0, 0, 0, 0, 20, 71, 76, 84, 20,
+			20, 208, 133, 72, 89, 109, 48, 47, 6, 13, 65, 71, 13, 34, 0, 0, 13, 68, 60, 32, 77, 4, 39, 71, 6, 35, 65, 35, 0, 0,
+			0, 11, 70, 76, 84, 150, 36, 49, 64, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 19, 1, 32, 72,
+			0, 0, 0, 19, 71, 48, 83, 1, 44, 147, 153, 4, 55, 13, 55, 35, 49, 6, 37, 67, 13, 0, 0, 0, 0, 20, 72, 52, 83, 135,
+			20, 208, 129, 56, 112, 65, 13, 68, 6, 13, 65, 71, 35, 68, 0, 0, 0, 17, 70, 52, 83, 133, 80, 20, 0, 65, 13, 50, 6, 13,
+			47, 35, 48, 0, 0, 0, 0, 0, 0, 17, 70, 52, 18, 1, 80, 130, 82, 65, 35, 107, 6, 35, 47, 36, 34, 0, 0, 0, 0, 0,
+			0, 14, 69, 64, 83, 129, 56, 112, 48, 37, 50, 6, 109, 68, 0, 14, 69, 80, 83, 129, 56, 112, 47, 6, 13, 50, 35, 68, 0, 8,
+			197, 64, 84, 129, 56, 112, 66, 0, 13, 68, 24, 195, 210, 4, 83, 55, 6, 39, 34, 35, 0, 0, 15, 69, 104, 19, 5, 32, 16, 88,
+			35, 55, 6, 36, 107, 35, 0, 14, 69, 72, 19, 76, 20, 80, 51, 6, 35, 65, 55, 37, 0, 0, 0, 14, 69, 76, 84, 129, 56, 112,
+			89, 6, 13, 51, 35, 68, 0, 14, 69, 52, 83, 129, 56, 112, 65, 6, 13, 50, 35, 68, 0, 0, 13, 68, 5, 165, 82, 4, 35, 88,
+			6, 40, 52, 35, 0, 0, 0, 0, 13, 68, 80, 82, 193, 56, 47, 6, 13, 49, 35, 50, 0, 0, 0, 0, 0, 0, 0, 11, 70, 72,
+			84, 21, 8, 194, 67, 21, 0, 47, 0, 15, 66, 100, 208, 57, 35, 50, 81, 65, 6, 40, 55, 37, 13, 0, 0, 18, 70, 76, 85, 5,
+			48, 18, 0, 89, 13, 47, 6, 13, 55, 35, 107, 0, 8, 11, 67, 76, 84, 201, 89, 6, 36, 89, 37, 0, 17, 70, 52, 20, 193, 48,
+			18, 0, 65, 35, 89, 6, 35, 55, 35, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 70, 65, 35, 211, 64, 82, 192, 48, 51,
+			6, 39, 89, 48, 124, 49, 0, 0, 6, 97, 0, 4, 1, 21, 2, 107, 97, 104, 32, 3, 6, 13, 0, 1, 21, 2, 107, 97, 110, 32,
+			0, 1, 21, 2, 108, 97, 104, 32, 0, 1, 21, 2, 110, 121, 97, 32, 0, 1, 21, 2, 112, 117, 110, 32, 0, 1, 21, 2, 32, 3,
+			13, 0, 4, 1, 32, 17, 65, 3, 23, 35, 0, 1, 97, 0, 1, 117, 97, 0, 3, 35, 0, 117, 8, 3, 39, 0, 117, 3, 114, 0,
+			105, 3, 117, 0, 7, 6, 98, 0, 4, 3, 71, 0, 104, 8, 0, 101, 8, 2, 21, 21, 3, 71, 13, 0, 4, 101, 114, 8, 2, 17,
+			67, 97, 105, 29, 3, 71, 13, 51, 0, 101, 114, 8, 2, 17, 67, 97, 117, 29, 0, 101, 114, 8, 2, 21, 21, 0, 101, 114, 112, 101,
+			114, 8, 2, 21, 21, 3, 71, 13, 51, 48, 13, 51, 0, 101, 114, 107, 101, 8, 2, 21, 21, 3, 71, 13, 51, 49, 13, 0, 101, 114,
+			108, 101, 8, 2, 21, 21, 3, 71, 13, 51, 55, 13, 0, 101, 114, 115, 101, 8, 2, 21, 21, 3, 71, 13, 51, 89, 13, 0, 7, 6,
+			99, 0, 4, 3, 76, 0, 104, 0, 7, 6, 100, 0, 3, 72, 0, 106, 3, 75, 0, 7, 6, 101, 0, 4, 2, 17, 67, 17, 67, 17,
+			67, 117, 29, 3, 6, 13, 0, 2, 17, 67, 17, 67, 105, 29, 0, 2, 17, 67, 17, 67, 117, 29, 0, 2, 17, 67, 17, 67, 117, 29,
+			0, 2, 17, 67, 97, 105, 29, 0, 2, 17, 67, 105, 29, 0, 2, 17, 67, 117, 29, 0, 2, 110, 121, 117, 29, 0, 1, 109, 2, 32,
+			3, 13, 0, 4, 1, 32, 17, 65, 3, 23, 109, 0, 1, 101, 0, 4, 1, 17, 67, 2, 17, 67, 17, 67, 17, 67, 111, 17, 67, 107,
+			97, 110, 32, 3, 36, 0, 1, 17, 67, 17, 67, 101, 2, 29, 0, 1, 17, 67, 17, 67, 111, 2, 29, 0, 1, 17, 67, 101, 2, 29,
+			0, 1, 17, 67, 111, 2, 29, 0, 2, 17, 67, 101, 0, 2, 32, 0, 3, 109, 0, 8, 2, 17, 67, 111, 21, 3, 124, 0, 7, 6,
+			102, 0, 4, 3, 83, 0, 102, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 1, 21, 2, 17,
+			67, 110, 121, 97, 32, 3, 6, 36, 0, 4, 1, 32, 17, 65, 3, 23, 37, 0, 1, 105, 0, 4, 1, 21, 2, 17, 67, 17, 67, 97,
+			97, 110, 32, 3, 36, 0, 1, 21, 2, 17, 67, 29, 0, 3, 37, 0, 7, 6, 106, 0, 3, 75, 0, 7, 6, 107, 0, 2, 32, 3,
+			19, 0, 3, 49, 0, 1, 21, 21, 2, 97, 110, 110, 121, 97, 32, 3, 49, 6, 0, 101, 8, 2, 21, 21, 3, 49, 13, 0, 101, 115,
+			101, 8, 2, 21, 21, 3, 49, 13, 89, 13, 0, 104, 3, 101, 0, 7, 6, 108, 0, 4, 3, 55, 0, 108, 0, 7, 6, 109, 0, 3,
+			65, 0, 101, 8, 2, 21, 21, 3, 65, 13, 0, 101, 110, 101, 8, 2, 21, 21, 3, 65, 13, 50, 13, 0, 101, 109, 8, 2, 21, 21,
+			3, 65, 13, 65, 0, 101, 109, 112, 101, 8, 2, 21, 3, 65, 13, 65, 48, 13, 0, 101, 109, 112, 101, 110, 103, 101, 8, 2, 21, 21,
+			3, 65, 13, 65, 48, 13, 68, 13, 0, 101, 110, 103, 101, 8, 2, 21, 21, 3, 65, 13, 68, 13, 0, 7, 6, 110, 0, 3, 50, 0,
+			121, 3, 67, 0, 103, 3, 68, 0, 7, 6, 111, 0, 4, 1, 32, 17, 65, 3, 23, 39, 0, 1, 111, 0, 3, 39, 0, 101, 3, 40,
+			0, 2, 114, 3, 110, 0, 7, 6, 112, 0, 4, 3, 48, 0, 112, 0, 4, 101, 8, 2, 17, 67, 97, 105, 29, 3, 48, 13, 0, 101,
+			8, 2, 21, 21, 0, 101, 110, 101, 8, 2, 21, 21, 3, 48, 13, 50, 13, 0, 101, 110, 106, 101, 8, 2, 21, 21, 3, 48, 13, 50,
+			75, 13, 0, 101, 114, 115, 101, 8, 2, 21, 21, 3, 48, 13, 51, 89, 13, 0, 101, 109, 101, 8, 2, 21, 21, 3, 48, 13, 65, 13,
+			0, 101, 110, 103, 101, 8, 2, 21, 21, 3, 48, 13, 68, 13, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 58, 0, 7, 6, 114,
+			0, 1, 101, 2, 25, 3, 16, 34, 0, 4, 2, 25, 3, 34, 0, 2, 32, 0, 3, 51, 0, 7, 6, 115, 0, 4, 3, 89, 0, 115,
+			0, 4, 101, 8, 2, 17, 67, 97, 105, 29, 3, 89, 13, 0, 101, 8, 2, 21, 21, 0, 4, 104, 3, 91, 0, 106, 0, 121, 0, 7,
+			6, 116, 0, 3, 47, 0, 101, 114, 8, 2, 21, 3, 47, 6, 13, 16, 51, 0, 101, 114, 8, 2, 21, 21, 3, 47, 13, 16, 51, 0,
+			106, 3, 76, 0, 7, 6, 117, 0, 4, 1, 21, 2, 17, 67, 17, 67, 110, 121, 97, 32, 3, 6, 39, 0, 1, 21, 2, 17, 67, 110,
+			121, 97, 32, 0, 4, 1, 32, 17, 65, 3, 23, 40, 0, 1, 117, 0, 1, 21, 2, 17, 67, 29, 3, 39, 0, 3, 40, 0, 7, 6,
+			118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 3, 88, 0, 7, 6, 121, 0, 3, 57,
+			0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3, 0, 42, 42, 3, 0, 42, 1, 42, 42, 2, 32, 3,
+			24, 0, 45, 8, 32, 2, 32, 15, 3, 50, 6, 36, 81, 13, 47, 37, 83, 0, 42, 3, 71, 6, 37, 50, 47, 35, 68, 0, 36, 3,
+			72, 110, 55, 13, 51, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts45 = FileInMemory_createWithData (12248, reinterpret_cast<const char *> (&espeakdata_dicts45_data), 
+			U"espeak-1.48.04-source/espeak-data/ms_dict", 
+			U"ms");
+		my addItem_move (espeakdata_dicts45.move());
 
-		static unsigned char espeakdata_dicts43_data[1535] = {
+		static unsigned char espeakdata_dicts46_data[1535] = {
 			0, 4, 0, 0, 251, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -25004,108 +36098,108 @@ FilesInMemory create_espeakdata_dicts () {
 			0, 3, 57, 0, 7, 6, 122, 0, 3, 89, 0, 7, 6, 0, 35, 3, 9, 0, 107, 3, 49, 0, 114, 3, 51, 0, 119, 3, 58, 0,
 			98, 3, 71, 0, 100, 3, 72, 0, 103, 3, 81, 0, 102, 3, 83, 0, 118, 3, 84, 0, 4, 115, 3, 89, 0, 195, 167, 0, 106, 3,
 			101, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts43 = FileInMemory_createWithData (1534, reinterpret_cast<const char *> (&espeakdata_dicts43_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/nci_dict", 
+		autoFileInMemory espeakdata_dicts46 = FileInMemory_createWithData (1534, reinterpret_cast<const char *> (&espeakdata_dicts46_data), 
+			U"espeak-1.48.04-source/espeak-data/nci_dict", 
 			U"nci");
-		Collection_addItem (me.peek(), espeakdata_dicts43.transfer());
+		my addItem_move (espeakdata_dicts46.move());
 
-		static unsigned char espeakdata_dicts44_data[10795] = {
-			0, 4, 0, 0, 22, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 3, 129, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 224, 164, 149, 224, 165, 135, 49, 6, 36, 4, 12, 0, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 134, 224, 164, 185, 224, 165, 139, 72, 28, 0, 0, 0, 0, 0,
-			15, 6, 224, 164, 181, 224, 164, 168, 71, 6, 35, 6, 50, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 224, 164, 181, 224, 164,
-			176, 58, 6, 35, 34, 13, 12, 0, 0, 0, 23, 12, 224, 164, 166, 224, 164, 191, 224, 164, 143, 224, 164, 168, 72, 6, 37, 57, 6, 36,
-			50, 111, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 164, 151, 224, 164, 188, 100, 13, 0, 0, 0, 0, 0, 11, 6, 224, 164, 149, 224,
-			164, 188, 104, 13, 0, 0, 0, 9, 134, 224, 164, 181, 224, 164, 190, 8, 0, 0, 0, 0, 0, 0, 15, 140, 224, 164, 133, 224, 164, 165,
-			224, 164, 181, 224, 164, 190, 8, 0, 0, 0, 0, 11, 6, 224, 164, 171, 224, 164, 188, 83, 13, 0, 0, 0, 0, 18, 9, 224, 164, 185,
-			224, 165, 129, 224, 164, 168, 107, 6, 40, 6, 50, 13, 0, 0, 0, 0, 0, 20, 9, 224, 164, 151, 224, 164, 143, 224, 164, 168, 81, 6,
-			109, 57, 6, 36, 50, 111, 0, 0, 0, 0, 15, 4, 95, 4, 16, 20, 10, 138, 6, 119, 48, 55, 39, 10, 0, 0, 0, 0, 0, 0,
-			0, 0, 18, 9, 224, 164, 184, 224, 165, 129, 224, 164, 150, 89, 6, 40, 8, 146, 13, 0, 0, 14, 6, 224, 164, 137, 224, 164, 170, 40,
-			6, 48, 13, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 224, 164, 150, 224, 164, 190, 224, 164, 143, 224, 164, 168, 146, 35, 57,
+		static unsigned char espeakdata_dicts47_data[10818] = {
+			0, 4, 0, 0, 22, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4,
+			95, 100, 112, 116, 10, 25, 6, 119, 48, 55, 39, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 129, 58, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 224, 164, 149,
+			224, 165, 135, 49, 6, 36, 4, 12, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 134, 224, 164, 185, 224, 165, 139, 72, 28, 0, 0, 0, 0, 0, 15, 6, 224, 164, 181, 224, 164, 168, 71, 6, 35, 6, 50, 111, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 224, 164, 181, 224, 164, 176, 58, 6, 35, 34, 13, 12, 0, 0, 0, 23, 12, 224, 164, 166,
+			224, 164, 191, 224, 164, 143, 224, 164, 168, 72, 6, 37, 57, 6, 36, 50, 111, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 164, 151, 224,
+			164, 188, 100, 13, 0, 0, 0, 0, 0, 11, 6, 224, 164, 149, 224, 164, 188, 104, 13, 0, 0, 0, 9, 134, 224, 164, 181, 224, 164, 190,
+			8, 0, 0, 0, 0, 0, 0, 15, 140, 224, 164, 133, 224, 164, 165, 224, 164, 181, 224, 164, 190, 8, 0, 0, 0, 0, 11, 6, 224, 164,
+			171, 224, 164, 188, 83, 13, 0, 0, 0, 0, 18, 9, 224, 164, 185, 224, 165, 129, 224, 164, 168, 107, 6, 40, 6, 50, 13, 0, 0, 0,
+			0, 0, 20, 9, 224, 164, 151, 224, 164, 143, 224, 164, 168, 81, 6, 109, 57, 6, 36, 50, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 18, 9, 224, 164, 184, 224, 165, 129, 224, 164, 150, 89, 6, 40, 8, 145, 13, 0, 0, 14, 6, 224, 164, 137, 224, 164, 170, 40,
+			6, 48, 13, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 22, 12, 224, 164, 150, 224, 164, 190, 224, 164, 143, 224, 164, 168, 145, 35, 57,
 			6, 36, 50, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 164, 161, 224, 164, 188, 70, 13, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 9, 224, 164, 155, 224, 165, 129, 224, 164, 168, 144, 6, 40, 50, 6, 13, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 9, 224, 164, 155, 224, 165, 129, 224, 164, 168, 143, 6, 40, 50, 6, 13, 0, 0,
 			0, 0, 0, 20, 9, 224, 164, 173, 224, 164, 143, 224, 164, 168, 137, 6, 109, 57, 6, 36, 50, 111, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 13, 6, 224, 164, 133, 224, 164, 172, 109, 6, 71, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 19, 5, 95, 48, 77, 49, 48, 48, 13, 34, 6, 118, 34, 34, 72, 12, 139, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 19, 5, 95, 48, 77, 49, 48, 48, 13, 34, 6, 118, 34, 34, 72, 12, 138, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
 			3, 95, 51, 57, 122, 12, 50, 6, 35, 50, 6, 80, 6, 118, 55, 6, 112, 89, 0, 14, 3, 95, 50, 49, 114, 49, 12, 49, 6, 118,
 			112, 89, 0, 0, 12, 3, 95, 51, 56, 35, 34, 47, 6, 113, 89, 0, 10, 3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11, 3, 95,
 			50, 51, 47, 6, 114, 113, 89, 0, 0, 11, 3, 95, 50, 50, 71, 6, 118, 113, 89, 0, 0, 13, 3, 95, 50, 53, 48, 13, 80, 12,
 			6, 113, 89, 0, 0, 13, 3, 95, 50, 52, 80, 6, 120, 71, 6, 113, 89, 0, 0, 14, 3, 95, 50, 55, 89, 13, 47, 12, 6, 118,
-			113, 89, 0, 0, 14, 3, 95, 50, 54, 144, 13, 71, 6, 71, 6, 112, 89, 0, 0, 14, 3, 95, 51, 49, 114, 49, 13, 47, 12, 6,
+			113, 89, 0, 0, 14, 3, 95, 50, 54, 143, 13, 71, 6, 71, 6, 112, 89, 0, 0, 14, 3, 95, 51, 49, 114, 49, 13, 47, 12, 6,
 			113, 89, 0, 0, 10, 3, 95, 51, 48, 47, 6, 112, 89, 0, 0, 15, 3, 95, 51, 51, 47, 6, 114, 47, 6, 47, 6, 112, 89, 0,
 			0, 14, 3, 95, 51, 50, 71, 6, 35, 47, 12, 6, 113, 89, 0, 0, 12, 3, 95, 51, 53, 48, 127, 47, 6, 113, 89, 0, 0, 14,
 			3, 95, 51, 52, 80, 130, 4, 47, 6, 113, 12, 89, 0, 0, 12, 3, 95, 51, 55, 89, 127, 47, 6, 113, 89, 0, 0, 16, 3, 95,
-			51, 54, 144, 13, 12, 47, 6, 47, 6, 113, 12, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 12, 224, 164,
-			166, 224, 165, 129, 224, 164, 131, 224, 164, 150, 72, 6, 40, 5, 146, 13, 0, 0, 0, 0, 0, 14, 3, 95, 55, 57, 122, 6, 50, 6,
-			118, 89, 6, 112, 0, 16, 3, 95, 54, 49, 114, 49, 6, 35, 89, 13, 142, 6, 142, 112, 0, 0, 17, 3, 95, 55, 56, 35, 138, 107,
-			35, 47, 47, 12, 6, 109, 34, 12, 0, 11, 3, 95, 54, 48, 89, 6, 118, 142, 112, 0, 0, 11, 3, 95, 48, 67, 89, 6, 35, 57,
-			13, 0, 19, 3, 95, 54, 51, 47, 6, 34, 6, 112, 4, 89, 13, 142, 6, 142, 6, 112, 0, 0, 17, 3, 95, 54, 50, 71, 6, 115,
-			89, 13, 142, 6, 12, 142, 6, 112, 0, 0, 17, 3, 95, 54, 53, 48, 6, 127, 6, 89, 13, 142, 6, 142, 6, 112, 0, 0, 16, 3,
-			95, 54, 52, 80, 6, 120, 89, 13, 142, 6, 142, 6, 112, 0, 0, 18, 3, 95, 54, 55, 89, 6, 109, 47, 6, 89, 13, 142, 6, 142,
-			6, 112, 0, 0, 17, 3, 95, 54, 54, 144, 6, 116, 6, 89, 13, 142, 6, 142, 6, 112, 0, 0, 19, 3, 95, 55, 49, 114, 49, 6,
+			51, 54, 143, 13, 12, 47, 6, 47, 6, 113, 12, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 12, 224, 164,
+			166, 224, 165, 129, 224, 164, 131, 224, 164, 150, 72, 6, 40, 5, 145, 13, 0, 0, 0, 0, 0, 14, 3, 95, 55, 57, 122, 6, 50, 6,
+			118, 89, 6, 112, 0, 16, 3, 95, 54, 49, 114, 49, 6, 35, 89, 13, 141, 6, 141, 112, 0, 0, 17, 3, 95, 55, 56, 35, 25, 107,
+			35, 47, 47, 12, 6, 109, 34, 12, 0, 11, 3, 95, 54, 48, 89, 6, 118, 141, 112, 0, 0, 11, 3, 95, 48, 67, 89, 6, 35, 57,
+			13, 0, 19, 3, 95, 54, 51, 47, 6, 34, 6, 112, 4, 89, 13, 141, 6, 141, 6, 112, 0, 0, 17, 3, 95, 54, 50, 71, 6, 115,
+			89, 13, 141, 6, 12, 141, 6, 112, 0, 0, 17, 3, 95, 54, 53, 48, 6, 127, 6, 89, 13, 141, 6, 141, 6, 112, 0, 0, 16, 3,
+			95, 54, 52, 80, 6, 120, 89, 13, 141, 6, 141, 6, 112, 0, 0, 18, 3, 95, 54, 55, 89, 6, 109, 47, 6, 89, 13, 141, 6, 141,
+			6, 112, 0, 0, 17, 3, 95, 54, 54, 143, 6, 116, 6, 89, 13, 141, 6, 141, 6, 112, 0, 0, 19, 3, 95, 55, 49, 114, 49, 6,
 			35, 107, 6, 35, 47, 12, 6, 109, 34, 12, 0, 0, 17, 3, 95, 55, 48, 89, 6, 35, 47, 6, 47, 13, 34, 6, 112, 12, 0, 0,
 			17, 3, 95, 55, 51, 47, 113, 57, 35, 47, 47, 12, 6, 109, 34, 12, 0, 0, 17, 3, 95, 55, 50, 71, 13, 107, 6, 35, 47, 47,
-			6, 109, 34, 12, 0, 0, 17, 3, 95, 55, 53, 48, 35, 144, 4, 35, 47, 12, 6, 109, 34, 12, 0, 0, 16, 3, 95, 55, 52, 80,
+			6, 109, 34, 12, 0, 0, 17, 3, 95, 55, 53, 48, 35, 143, 4, 35, 47, 12, 6, 109, 34, 12, 0, 0, 16, 3, 95, 55, 52, 80,
 			120, 107, 35, 47, 12, 6, 109, 34, 12, 0, 0, 19, 3, 95, 55, 55, 89, 13, 47, 13, 107, 35, 47, 47, 12, 6, 109, 34, 12, 0,
-			0, 22, 3, 95, 55, 54, 144, 13, 6, 57, 6, 35, 107, 6, 35, 47, 6, 47, 6, 109, 34, 12, 0, 0, 15, 3, 95, 49, 57, 122,
-			12, 50, 50, 6, 118, 37, 6, 89, 0, 0, 13, 3, 95, 49, 56, 35, 6, 142, 6, 118, 34, 111, 0, 0, 0, 0, 0, 0, 0, 0,
-			16, 3, 95, 50, 57, 122, 12, 50, 6, 109, 50, 47, 6, 113, 89, 0, 14, 3, 95, 49, 49, 114, 6, 147, 6, 118, 34, 6, 109, 0,
-			0, 13, 3, 95, 50, 56, 35, 138, 12, 6, 118, 113, 89, 0, 10, 3, 95, 49, 48, 72, 6, 109, 89, 0, 0, 12, 3, 95, 49, 51,
+			0, 22, 3, 95, 55, 54, 143, 13, 6, 57, 6, 35, 107, 6, 35, 47, 6, 47, 6, 109, 34, 12, 0, 0, 15, 3, 95, 49, 57, 122,
+			12, 50, 50, 6, 118, 37, 6, 89, 0, 0, 13, 3, 95, 49, 56, 35, 6, 141, 6, 118, 34, 111, 0, 0, 0, 0, 0, 0, 0, 0,
+			16, 3, 95, 50, 57, 122, 12, 50, 6, 109, 50, 47, 6, 113, 89, 0, 14, 3, 95, 49, 49, 114, 6, 146, 6, 118, 34, 6, 109, 0,
+			0, 13, 3, 95, 50, 56, 35, 25, 12, 6, 118, 113, 89, 0, 10, 3, 95, 49, 48, 72, 6, 109, 89, 0, 0, 12, 3, 95, 49, 51,
 			47, 6, 114, 107, 34, 13, 0, 0, 11, 3, 95, 49, 50, 71, 6, 118, 34, 111, 0, 0, 13, 3, 95, 49, 53, 48, 6, 109, 50, 72,
-			34, 111, 0, 0, 11, 3, 95, 49, 52, 144, 6, 120, 72, 111, 0, 0, 12, 3, 95, 49, 55, 89, 6, 109, 47, 34, 111, 0, 0, 11,
-			3, 95, 49, 54, 89, 6, 119, 34, 111, 0, 0, 8, 3, 224, 164, 165, 138, 13, 0, 0, 10, 3, 224, 164, 164, 47, 13, 4, 0, 8,
-			8, 3, 224, 164, 164, 47, 13, 0, 0, 8, 3, 224, 164, 167, 139, 13, 0, 0, 8, 3, 224, 164, 166, 72, 13, 0, 0, 8, 3, 224,
-			164, 161, 141, 13, 0, 0, 8, 3, 224, 164, 160, 142, 13, 0, 0, 8, 3, 224, 164, 163, 66, 13, 0, 0, 8, 3, 224, 164, 162, 143,
-			13, 0, 0, 8, 3, 224, 164, 157, 145, 13, 0, 17, 3, 95, 52, 57, 122, 6, 50, 6, 35, 50, 6, 80, 6, 118, 89, 0, 0, 8,
-			3, 224, 164, 156, 79, 13, 0, 6, 131, 224, 165, 164, 8, 17, 3, 95, 52, 56, 35, 6, 142, 6, 80, 6, 118, 55, 6, 113, 89, 0,
-			0, 8, 3, 224, 164, 159, 140, 13, 0, 0, 17, 9, 224, 164, 184, 224, 164, 191, 224, 164, 164, 89, 6, 37, 47, 13, 0, 8, 3, 224,
-			164, 158, 67, 13, 0, 0, 8, 3, 224, 164, 153, 68, 13, 0, 0, 8, 3, 224, 164, 152, 147, 13, 0, 0, 8, 3, 224, 164, 155, 144,
+			34, 111, 0, 0, 11, 3, 95, 49, 52, 143, 6, 120, 72, 111, 0, 0, 12, 3, 95, 49, 55, 89, 6, 109, 47, 34, 111, 0, 0, 11,
+			3, 95, 49, 54, 89, 6, 119, 34, 111, 0, 0, 8, 3, 224, 164, 165, 25, 13, 0, 0, 10, 3, 224, 164, 164, 47, 13, 4, 0, 8,
+			8, 3, 224, 164, 164, 47, 13, 0, 0, 8, 3, 224, 164, 167, 138, 13, 0, 0, 8, 3, 224, 164, 166, 72, 13, 0, 0, 8, 3, 224,
+			164, 161, 140, 13, 0, 0, 8, 3, 224, 164, 160, 141, 13, 0, 0, 8, 3, 224, 164, 163, 66, 13, 0, 0, 8, 3, 224, 164, 162, 142,
+			13, 0, 0, 8, 3, 224, 164, 157, 144, 13, 0, 17, 3, 95, 52, 57, 122, 6, 50, 6, 35, 50, 6, 80, 6, 118, 89, 0, 0, 8,
+			3, 224, 164, 156, 79, 13, 0, 6, 131, 224, 165, 164, 8, 17, 3, 95, 52, 56, 35, 6, 141, 6, 80, 6, 118, 55, 6, 113, 89, 0,
+			0, 8, 3, 224, 164, 159, 139, 13, 0, 0, 17, 9, 224, 164, 184, 224, 164, 191, 224, 164, 164, 89, 6, 37, 47, 13, 0, 8, 3, 224,
+			164, 158, 67, 13, 0, 0, 8, 3, 224, 164, 153, 68, 13, 0, 0, 8, 3, 224, 164, 152, 146, 13, 0, 0, 8, 3, 224, 164, 155, 143,
 			13, 0, 0, 8, 3, 224, 164, 154, 80, 13, 0, 0, 9, 3, 224, 165, 157, 107, 34, 13, 0, 8, 3, 224, 164, 149, 49, 13, 0, 18,
-			3, 95, 53, 57, 122, 6, 50, 6, 109, 50, 6, 89, 6, 118, 142, 112, 0, 17, 3, 95, 52, 49, 36, 6, 12, 49, 80, 6, 118, 55,
-			6, 37, 89, 0, 0, 8, 3, 224, 165, 156, 34, 13, 0, 21, 3, 95, 53, 56, 35, 6, 50, 138, 12, 6, 118, 58, 13, 50, 6, 50,
+			3, 95, 53, 57, 122, 6, 50, 6, 109, 50, 6, 89, 6, 118, 141, 112, 0, 17, 3, 95, 52, 49, 36, 6, 12, 49, 80, 6, 118, 55,
+			6, 37, 89, 0, 0, 8, 3, 224, 165, 156, 34, 13, 0, 21, 3, 95, 53, 56, 35, 6, 50, 25, 12, 6, 118, 58, 13, 50, 6, 50,
 			6, 12, 109, 0, 12, 3, 95, 52, 48, 80, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 159, 57, 13, 0, 8, 3, 224, 164, 151,
 			81, 13, 0, 17, 3, 95, 52, 51, 47, 6, 34, 112, 80, 6, 118, 55, 6, 112, 89, 0, 0, 8, 3, 224, 165, 158, 83, 13, 0, 8,
-			3, 224, 164, 150, 146, 13, 0, 13, 3, 95, 52, 50, 71, 134, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 153, 101, 13, 0, 16,
+			3, 224, 164, 150, 145, 13, 0, 13, 3, 95, 52, 50, 71, 134, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 153, 101, 13, 0, 16,
 			3, 95, 52, 53, 48, 134, 6, 50, 47, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 152, 104, 13, 0, 14, 3, 95, 52, 52, 80,
-			120, 58, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 155, 88, 13, 0, 17, 3, 95, 52, 55, 89, 13, 6, 141, 80, 47, 118, 55,
-			6, 113, 89, 0, 0, 8, 3, 224, 165, 154, 100, 13, 0, 15, 3, 95, 52, 54, 144, 107, 113, 57, 118, 55, 6, 113, 89, 0, 0, 23,
+			120, 58, 118, 55, 6, 113, 89, 0, 0, 8, 3, 224, 165, 155, 88, 13, 0, 17, 3, 95, 52, 55, 89, 13, 6, 140, 80, 47, 118, 55,
+			6, 113, 89, 0, 0, 8, 3, 224, 165, 154, 100, 13, 0, 15, 3, 95, 52, 54, 143, 107, 113, 57, 118, 55, 6, 113, 89, 0, 0, 23,
 			3, 95, 54, 57, 122, 12, 50, 6, 35, 50, 6, 89, 6, 109, 47, 47, 6, 35, 34, 6, 112, 0, 18, 3, 95, 53, 49, 114, 49, 6,
-			118, 58, 109, 50, 6, 50, 12, 6, 109, 0, 0, 17, 3, 95, 54, 56, 35, 6, 142, 4, 89, 13, 142, 6, 142, 6, 112, 0, 12, 3,
+			118, 58, 109, 50, 6, 50, 12, 6, 109, 0, 0, 17, 3, 95, 54, 56, 35, 6, 141, 4, 89, 13, 141, 6, 141, 6, 112, 0, 12, 3,
 			95, 53, 48, 48, 13, 80, 6, 118, 89, 0, 0, 18, 3, 95, 53, 51, 47, 6, 34, 113, 12, 48, 6, 35, 50, 6, 50, 109, 0, 0,
 			17, 3, 95, 53, 50, 71, 6, 118, 58, 109, 50, 6, 50, 12, 6, 109, 0, 0, 17, 3, 95, 53, 53, 48, 6, 35, 80, 6, 48, 109,
 			50, 6, 50, 109, 0, 0, 16, 3, 95, 53, 52, 80, 6, 121, 123, 58, 109, 50, 6, 50, 109, 0, 0, 23, 3, 95, 53, 55, 89, 6,
-			109, 50, 6, 47, 12, 6, 118, 58, 13, 50, 6, 50, 6, 12, 109, 0, 0, 17, 3, 95, 53, 54, 144, 107, 13, 48, 12, 6, 109, 50,
+			109, 50, 6, 47, 12, 6, 118, 58, 13, 50, 6, 50, 6, 12, 109, 0, 0, 17, 3, 95, 53, 54, 143, 107, 13, 48, 12, 6, 109, 50,
 			6, 50, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 56, 57, 123, 50, 6, 118, 50, 6, 35, 71, 6, 71, 6, 114,
-			0, 0, 14, 3, 95, 56, 56, 35, 6, 142, 12, 118, 89, 6, 112, 0, 0, 0, 0, 8, 3, 224, 164, 185, 108, 13, 0, 0, 8, 3,
+			0, 0, 14, 3, 95, 56, 56, 35, 6, 141, 12, 118, 89, 6, 112, 0, 0, 0, 0, 8, 3, 224, 164, 185, 108, 13, 0, 0, 8, 3,
 			224, 164, 184, 89, 13, 0, 0, 0, 0, 8, 3, 224, 164, 181, 58, 13, 0, 19, 3, 95, 57, 57, 122, 12, 50, 6, 50, 6, 118, 50,
-			89, 107, 13, 57, 114, 0, 13, 3, 95, 56, 49, 114, 49, 6, 118, 89, 6, 112, 0, 0, 20, 3, 95, 57, 56, 35, 6, 50, 6, 142,
+			89, 107, 13, 57, 114, 0, 13, 3, 95, 56, 49, 114, 49, 6, 118, 89, 6, 112, 0, 0, 20, 3, 95, 57, 56, 35, 6, 50, 6, 141,
 			6, 118, 50, 13, 71, 6, 71, 6, 114, 0, 13, 3, 95, 56, 48, 35, 6, 89, 6, 89, 6, 112, 0, 0, 8, 3, 224, 164, 183, 93,
 			13, 0, 15, 3, 95, 56, 51, 47, 34, 113, 57, 6, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 182, 91, 13, 0, 12, 3, 95, 56,
 			50, 71, 134, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 177, 34, 13, 0, 15, 3, 95, 56, 53, 48, 6, 35, 80, 6, 118, 89, 6,
 			112, 0, 0, 7, 131, 224, 164, 176, 72, 8, 8, 3, 224, 164, 176, 34, 13, 0, 13, 3, 95, 56, 52, 80, 120, 34, 118, 89, 6, 112,
 			0, 0, 8, 3, 224, 164, 179, 62, 13, 0, 16, 3, 95, 56, 55, 89, 6, 109, 12, 47, 6, 118, 89, 6, 112, 0, 0, 8, 3, 224,
-			164, 178, 55, 13, 0, 14, 3, 95, 56, 54, 144, 13, 57, 6, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 173, 137, 13, 0, 17, 3,
+			164, 178, 55, 13, 0, 14, 3, 95, 56, 54, 143, 13, 57, 6, 118, 89, 6, 112, 0, 0, 8, 3, 224, 164, 173, 137, 13, 0, 17, 3,
 			95, 57, 49, 114, 49, 6, 118, 50, 13, 71, 6, 71, 6, 114, 0, 0, 8, 3, 224, 164, 172, 71, 13, 0, 13, 3, 95, 57, 48, 50,
 			13, 71, 6, 71, 6, 114, 0, 0, 8, 3, 224, 164, 175, 57, 13, 0, 19, 3, 95, 57, 51, 47, 34, 113, 57, 6, 118, 50, 13, 71,
 			6, 71, 6, 114, 0, 0, 11, 3, 224, 164, 174, 65, 111, 5, 0, 72, 28, 8, 3, 224, 164, 174, 65, 13, 0, 19, 3, 95, 57, 50,
 			71, 6, 35, 57, 6, 118, 50, 13, 71, 6, 71, 6, 114, 0, 0, 20, 3, 95, 57, 53, 48, 13, 50, 6, 80, 6, 118, 50, 13, 71,
 			6, 71, 6, 114, 0, 0, 8, 3, 224, 164, 168, 50, 13, 0, 18, 3, 95, 57, 52, 80, 120, 34, 6, 118, 50, 13, 71, 6, 71, 6,
 			114, 0, 0, 8, 3, 224, 164, 171, 136, 13, 0, 21, 3, 95, 57, 55, 89, 13, 50, 6, 47, 12, 6, 118, 50, 13, 71, 6, 71, 6,
-			114, 0, 0, 8, 3, 224, 164, 170, 48, 13, 0, 18, 3, 95, 57, 54, 144, 13, 57, 6, 118, 50, 13, 71, 6, 71, 6, 114, 0, 0,
+			114, 0, 0, 8, 3, 224, 164, 170, 48, 13, 0, 18, 3, 95, 57, 54, 143, 13, 57, 6, 118, 50, 13, 71, 6, 71, 6, 114, 0, 0,
 			0, 0, 0, 0, 0, 0, 42, 27, 224, 164, 176, 224, 164, 190, 224, 164, 183, 224, 165, 141, 224, 164, 159, 224, 165, 141, 224, 164, 176, 224,
-			164, 191, 224, 164, 175, 34, 6, 118, 91, 4, 140, 34, 113, 12, 57, 111, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			164, 191, 224, 164, 175, 34, 6, 118, 91, 4, 139, 34, 113, 12, 57, 111, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 56, 89, 107, 6, 35, 50, 4, 146, 13, 0, 0, 21, 4, 95, 48, 77, 57, 65,
-			6, 35, 107, 6, 118, 4, 89, 107, 6, 35, 50, 146, 13, 0, 0, 12, 4, 95, 48, 77, 54, 50, 6, 112, 55, 6, 0, 0, 14, 4,
+			0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 56, 89, 107, 6, 35, 50, 4, 145, 13, 0, 0, 21, 4, 95, 48, 77, 57, 65,
+			6, 35, 107, 6, 118, 4, 89, 107, 6, 35, 50, 145, 13, 0, 0, 12, 4, 95, 48, 77, 54, 50, 6, 112, 55, 6, 0, 0, 14, 4,
 			95, 48, 77, 55, 48, 6, 109, 72, 6, 65, 13, 0, 0, 12, 4, 95, 48, 77, 52, 6, 109, 34, 13, 71, 0, 0, 15, 4, 95, 48,
-			77, 53, 146, 6, 109, 34, 13, 71, 6, 109, 0, 0, 12, 4, 95, 48, 77, 50, 55, 6, 118, 146, 13, 0, 0, 15, 4, 95, 48, 77,
-			51, 49, 6, 35, 6, 34, 119, 141, 13, 0, 0, 0, 14, 4, 95, 48, 77, 49, 107, 13, 88, 6, 118, 34, 13, 0, 0, 0, 0, 0,
+			77, 53, 145, 6, 109, 34, 13, 71, 6, 109, 0, 0, 12, 4, 95, 48, 77, 50, 55, 6, 118, 145, 13, 0, 0, 15, 4, 95, 48, 77,
+			51, 49, 6, 35, 6, 34, 119, 140, 13, 0, 0, 0, 14, 4, 95, 48, 77, 49, 107, 13, 88, 6, 118, 34, 13, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -25115,14 +36209,14 @@ FilesInMemory create_espeakdata_dicts () {
 			101, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 224, 164, 170, 224, 164,
 			176, 48, 6, 35, 34, 13, 4, 0, 0, 14, 6, 224, 164, 156, 224, 164, 181, 79, 6, 109, 84, 13, 0, 0, 0, 0, 16, 6, 224, 164,
 			164, 224, 164, 176, 47, 6, 35, 34, 13, 4, 0, 8, 0, 0, 0, 9, 134, 224, 164, 168, 224, 164, 191, 8, 0, 0, 0, 0, 0, 0,
-			0, 17, 9, 224, 164, 172, 224, 164, 190, 224, 164, 159, 71, 6, 118, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6,
+			0, 17, 9, 224, 164, 172, 224, 164, 190, 224, 164, 159, 71, 6, 118, 139, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6,
 			224, 164, 156, 224, 164, 188, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
 			6, 224, 164, 134, 224, 164, 156, 118, 6, 79, 13, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 6, 112, 50, 0,
 			0, 10, 2, 95, 50, 72, 6, 123, 4, 112, 0, 0, 9, 2, 95, 49, 114, 6, 49, 6, 0, 0, 12, 2, 95, 48, 91, 6, 123, 50,
-			6, 50, 118, 0, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 8, 2, 95, 54, 144, 6, 111, 0, 0, 10, 2, 95, 53, 48, 6,
+			6, 50, 118, 0, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 8, 2, 95, 54, 143, 6, 111, 0, 0, 10, 2, 95, 53, 48, 6,
 			118, 50, 80, 0, 0, 10, 2, 95, 52, 80, 6, 118, 34, 12, 0, 0, 0, 0, 10, 2, 95, 57, 50, 6, 109, 6, 123, 0, 0, 8,
-			2, 95, 56, 6, 118, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			2, 95, 56, 6, 118, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 12, 224, 164, 185, 224, 165, 139, 224, 164, 135, 224, 164, 168, 107,
@@ -25235,4270 +36329,4458 @@ FilesInMemory create_espeakdata_dicts () {
 			58, 6, 37, 50, 6, 72, 6, 40, 0, 7, 6, 1, 4, 0, 4, 3, 58, 112, 89, 6, 109, 34, 4, 81, 13, 0, 8, 0, 1, 17,
 			67, 2, 32, 3, 108, 0, 4, 1, 17, 65, 2, 17, 65, 3, 108, 4, 0, 1, 17, 65, 2, 17, 67, 0, 1, 17, 65, 2, 32, 0,
 			1, 17, 67, 2, 17, 65, 0, 1, 17, 67, 2, 17, 67, 0, 7, 6, 1, 5, 0, 3, 126, 6, 0, 7, 6, 1, 6, 0, 3, 109,
-			0, 224, 164, 129, 3, 129, 6, 0, 7, 6, 1, 7, 0, 3, 118, 0, 224, 164, 135, 3, 118, 113, 0, 224, 164, 137, 3, 118, 122, 0,
-			224, 164, 138, 3, 118, 122, 6, 0, 224, 164, 129, 3, 128, 7, 0, 7, 6, 1, 8, 0, 3, 113, 0, 224, 164, 129, 3, 124, 6, 0,
-			7, 6, 1, 9, 0, 2, 32, 3, 112, 0, 3, 113, 12, 0, 224, 164, 129, 3, 124, 7, 0, 7, 6, 1, 10, 0, 3, 122, 0, 224,
-			164, 129, 3, 133, 6, 0, 7, 6, 1, 11, 0, 3, 122, 0, 224, 164, 129, 3, 133, 6, 0, 7, 6, 1, 12, 0, 3, 34, 113, 0,
-			7, 6, 1, 13, 0, 3, 55, 34, 113, 0, 7, 6, 1, 14, 0, 3, 116, 0, 7, 6, 1, 15, 0, 3, 36, 0, 224, 164, 129, 3,
-			126, 6, 0, 7, 6, 1, 16, 0, 3, 114, 0, 224, 164, 129, 3, 126, 6, 4, 0, 7, 6, 1, 17, 0, 224, 164, 129, 3, 127, 6,
-			0, 5, 2, 3, 134, 0, 3, 152, 0, 7, 6, 1, 18, 0, 3, 121, 0, 7, 6, 1, 19, 0, 3, 39, 0, 7, 6, 1, 20, 0,
-			3, 119, 0, 224, 164, 129, 3, 131, 6, 0, 7, 6, 1, 21, 0, 224, 164, 129, 3, 130, 6, 0, 5, 3, 3, 135, 0, 3, 153, 0,
-			7, 6, 1, 22, 0, 5, 1, 2, 32, 107, 3, 0, 2, 17, 66, 3, 49, 0, 2, 224, 165, 141, 224, 164, 149, 3, 49, 4, 0, 2,
-			224, 165, 141, 224, 164, 175, 3, 49, 12, 0, 3, 49, 109, 0, 4, 224, 164, 129, 3, 49, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165,
-			224, 2, 32, 3, 49, 149, 0, 7, 6, 1, 23, 0, 4, 2, 17, 66, 3, 146, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164,
-			150, 3, 146, 4, 0, 3, 146, 109, 0, 4, 224, 164, 129, 3, 146, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 146,
-			149, 0, 7, 6, 1, 24, 0, 4, 2, 17, 66, 3, 81, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 151, 3, 81, 4, 0,
-			3, 81, 109, 0, 4, 224, 164, 129, 3, 81, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 81, 149, 0, 7, 6, 1,
-			25, 0, 4, 2, 17, 66, 3, 147, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 152, 3, 147, 4, 0, 3, 147, 109, 0, 4,
-			224, 164, 129, 3, 147, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 147, 149, 0, 7, 6, 1, 26, 0, 4, 2, 17,
-			66, 3, 68, 0, 2, 32, 0, 3, 68, 109, 0, 1, 141, 165, 224, 2, 32, 3, 68, 149, 0, 7, 6, 1, 27, 0, 4, 2, 17, 66,
-			3, 80, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 154, 3, 80, 4, 0, 2, 224, 165, 141, 224, 164, 175, 3, 80, 12, 0,
-			3, 80, 109, 0, 4, 224, 164, 129, 3, 80, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 80, 149, 0, 7, 6, 1,
-			28, 0, 2, 17, 66, 3, 144, 0, 4, 1, 141, 165, 224, 2, 17, 67, 3, 144, 13, 0, 2, 32, 0, 3, 144, 109, 0, 4, 224, 164,
-			129, 3, 144, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 79, 0, 5, 1, 2, 32, 0, 2, 224, 165,
-			141, 224, 164, 156, 3, 79, 4, 0, 3, 79, 109, 0, 4, 224, 164, 129, 3, 79, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2,
-			32, 3, 79, 149, 0, 7, 6, 1, 30, 0, 2, 224, 165, 141, 224, 164, 157, 3, 79, 4, 0, 4, 2, 17, 66, 3, 145, 0, 2, 32,
-			0, 3, 145, 109, 0, 4, 224, 164, 129, 3, 145, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 67, 0, 2,
-			32, 3, 67, 13, 0, 1, 141, 165, 224, 156, 164, 224, 2, 32, 3, 67, 13, 12, 4, 0, 3, 67, 109, 0, 1, 141, 165, 224, 2, 32,
-			3, 67, 149, 0, 7, 6, 1, 32, 0, 4, 2, 17, 66, 3, 140, 0, 5, 1, 2, 32, 0, 4, 2, 224, 165, 141, 224, 164, 159, 3,
-			140, 4, 0, 2, 224, 165, 141, 224, 164, 160, 0, 2, 224, 165, 141, 224, 164, 175, 3, 140, 12, 0, 3, 140, 109, 0, 4, 224, 164, 129,
-			3, 140, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 140, 149, 0, 7, 6, 1, 33, 0, 5, 1, 2, 32, 3, 140,
-			107, 0, 4, 224, 164, 129, 3, 140, 107, 129, 6, 0, 224, 165, 133, 0, 2, 17, 66, 3, 142, 0, 2, 224, 165, 141, 224, 164, 160, 3,
-			142, 4, 0, 3, 142, 109, 0, 1, 141, 165, 224, 2, 32, 3, 142, 149, 0, 7, 6, 1, 34, 0, 4, 2, 17, 66, 3, 141, 0, 5,
-			1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 161, 3, 141, 4, 0, 4, 2, 224, 165, 141, 224, 164, 175, 3, 141, 12, 0, 224, 164, 188,
-			2, 17, 66, 0, 4, 224, 164, 188, 224, 164, 129, 3, 141, 12, 129, 6, 0, 224, 164, 188, 224, 165, 133, 0, 3, 141, 109, 0, 224, 164,
-			188, 3, 141, 109, 12, 0, 4, 224, 164, 129, 3, 141, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 141, 149, 0, 7,
-			6, 1, 35, 0, 4, 5, 1, 2, 32, 3, 141, 107, 0, 224, 164, 188, 2, 17, 66, 0, 224, 164, 188, 3, 141, 107, 109, 12, 0, 4,
-			224, 164, 129, 3, 141, 107, 129, 6, 0, 224, 165, 133, 0, 2, 17, 66, 3, 143, 0, 3, 143, 109, 0, 1, 141, 165, 224, 2, 32, 3,
-			143, 149, 0, 7, 6, 1, 36, 0, 4, 2, 17, 66, 3, 66, 0, 5, 1, 2, 32, 0, 2, 17, 67, 3, 66, 13, 0, 3, 66, 109,
-			0, 1, 141, 165, 224, 2, 32, 3, 66, 149, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 4, 2, 224, 165, 141, 224, 164, 164,
+			0, 224, 164, 129, 3, 129, 6, 0, 7, 6, 1, 7, 0, 3, 118, 0, 224, 164, 129, 3, 128, 7, 0, 7, 6, 1, 8, 0, 3, 113,
+			0, 224, 164, 129, 3, 124, 6, 0, 7, 6, 1, 9, 0, 2, 32, 3, 112, 0, 3, 113, 12, 0, 224, 164, 129, 3, 124, 7, 0, 7,
+			6, 1, 10, 0, 3, 122, 0, 224, 164, 129, 3, 133, 6, 0, 7, 6, 1, 11, 0, 3, 122, 0, 224, 164, 129, 3, 133, 6, 0, 7,
+			6, 1, 12, 0, 3, 34, 113, 0, 7, 6, 1, 13, 0, 3, 55, 34, 113, 0, 7, 6, 1, 14, 0, 3, 116, 0, 7, 6, 1, 15,
+			0, 3, 36, 0, 224, 164, 129, 3, 126, 6, 0, 7, 6, 1, 16, 0, 3, 114, 0, 224, 164, 129, 3, 126, 6, 4, 0, 7, 6, 1,
+			17, 0, 224, 164, 129, 3, 127, 6, 0, 5, 2, 3, 134, 0, 3, 151, 0, 7, 6, 1, 18, 0, 3, 121, 0, 7, 6, 1, 19, 0,
+			3, 39, 0, 7, 6, 1, 20, 0, 3, 119, 0, 224, 164, 129, 3, 131, 6, 0, 7, 6, 1, 21, 0, 224, 164, 129, 3, 130, 6, 0,
+			5, 3, 3, 135, 0, 3, 152, 0, 7, 6, 1, 22, 0, 5, 1, 2, 32, 107, 3, 0, 2, 17, 66, 3, 49, 0, 2, 224, 165, 141,
+			224, 164, 149, 3, 49, 4, 0, 2, 224, 165, 141, 224, 164, 175, 3, 49, 12, 0, 3, 49, 109, 0, 4, 224, 164, 129, 3, 49, 129, 6,
+			0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 49, 148, 0, 7, 6, 1, 23, 0, 4, 2, 17, 66, 3, 145, 0, 5, 1, 2,
+			32, 0, 2, 224, 165, 141, 224, 164, 150, 3, 145, 4, 0, 3, 145, 109, 0, 4, 224, 164, 129, 3, 145, 129, 6, 0, 224, 165, 133, 0,
+			1, 141, 165, 224, 2, 32, 3, 145, 148, 0, 7, 6, 1, 24, 0, 4, 2, 17, 66, 3, 81, 0, 5, 1, 2, 32, 0, 2, 224, 165,
+			141, 224, 164, 151, 3, 81, 4, 0, 3, 81, 109, 0, 4, 224, 164, 129, 3, 81, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2,
+			32, 3, 81, 148, 0, 7, 6, 1, 25, 0, 4, 2, 17, 66, 3, 146, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 152, 3,
+			146, 4, 0, 3, 146, 109, 0, 4, 224, 164, 129, 3, 146, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 146, 148, 0,
+			7, 6, 1, 26, 0, 4, 2, 17, 66, 3, 68, 0, 2, 32, 0, 3, 68, 109, 0, 1, 141, 165, 224, 2, 32, 3, 68, 148, 0, 7,
+			6, 1, 27, 0, 4, 2, 17, 66, 3, 80, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 154, 3, 80, 4, 0, 2, 224, 165,
+			141, 224, 164, 175, 3, 80, 12, 0, 3, 80, 109, 0, 4, 224, 164, 129, 3, 80, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2,
+			32, 3, 80, 148, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 143, 0, 4, 1, 141, 165, 224, 2, 17, 67, 3, 143, 13, 0, 2, 32,
+			0, 3, 143, 109, 0, 4, 224, 164, 129, 3, 143, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 79, 0,
+			5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 156, 3, 79, 4, 0, 3, 79, 109, 0, 4, 224, 164, 129, 3, 79, 129, 6, 0, 224,
+			165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 79, 148, 0, 7, 6, 1, 30, 0, 2, 224, 165, 141, 224, 164, 157, 3, 79, 4, 0, 4,
+			2, 17, 66, 3, 144, 0, 2, 32, 0, 3, 144, 109, 0, 4, 224, 164, 129, 3, 144, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 31,
+			0, 2, 17, 66, 3, 67, 0, 2, 32, 3, 67, 13, 0, 1, 141, 165, 224, 156, 164, 224, 2, 32, 3, 67, 13, 12, 4, 0, 3, 67,
+			109, 0, 1, 141, 165, 224, 2, 32, 3, 67, 148, 0, 7, 6, 1, 32, 0, 4, 2, 17, 66, 3, 139, 0, 5, 1, 2, 32, 0, 4,
+			2, 224, 165, 141, 224, 164, 159, 3, 139, 4, 0, 2, 224, 165, 141, 224, 164, 160, 0, 2, 224, 165, 141, 224, 164, 175, 3, 139, 12, 0,
+			3, 139, 109, 0, 4, 224, 164, 129, 3, 139, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 139, 148, 0, 7, 6, 1,
+			33, 0, 4, 2, 17, 66, 3, 141, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 160, 3, 141, 4, 0, 3, 141, 109, 0, 4,
+			224, 164, 129, 3, 141, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 141, 148, 0, 7, 6, 1, 34, 0, 4, 2, 17,
+			66, 3, 140, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 161, 3, 140, 4, 0, 4, 2, 224, 165, 141, 224, 164, 175, 3, 140,
+			12, 0, 224, 164, 188, 2, 17, 66, 0, 4, 224, 164, 188, 224, 164, 129, 3, 140, 12, 129, 6, 0, 224, 164, 188, 224, 165, 133, 0, 3,
+			140, 109, 0, 224, 164, 188, 3, 140, 109, 12, 0, 4, 224, 164, 129, 3, 140, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32,
+			3, 140, 148, 0, 7, 6, 1, 35, 0, 4, 2, 17, 66, 3, 142, 0, 5, 1, 2, 32, 0, 224, 164, 188, 2, 17, 66, 0, 3, 142,
+			109, 0, 224, 164, 188, 3, 142, 109, 12, 0, 4, 224, 164, 129, 3, 142, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3,
+			142, 148, 0, 7, 6, 1, 36, 0, 4, 2, 17, 66, 3, 66, 0, 5, 1, 2, 32, 0, 2, 17, 67, 3, 66, 13, 0, 3, 66, 109,
+			0, 1, 141, 165, 224, 2, 32, 3, 66, 148, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 4, 2, 224, 165, 141, 224, 164, 164,
 			3, 47, 4, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 175, 3, 47, 12, 0, 3, 47, 109, 0, 4, 224, 164, 129, 3, 47,
-			129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 47, 149, 0, 7, 6, 1, 38, 0, 4, 2, 17, 66, 3, 138, 0, 5,
-			1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 175, 3, 138, 4, 0, 3, 138, 109, 0, 4, 224, 164, 129, 3, 138, 129, 6, 0, 224, 165,
-			133, 0, 1, 141, 165, 224, 2, 32, 3, 138, 149, 0, 7, 6, 1, 39, 0, 4, 2, 17, 66, 3, 72, 0, 5, 1, 2, 32, 0, 2,
+			129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 47, 148, 0, 7, 6, 1, 38, 0, 4, 2, 17, 66, 3, 25, 0, 5,
+			1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 175, 3, 25, 4, 0, 3, 25, 109, 0, 4, 224, 164, 129, 3, 25, 129, 6, 0, 224, 165,
+			133, 0, 1, 141, 165, 224, 2, 32, 3, 25, 148, 0, 7, 6, 1, 39, 0, 4, 2, 17, 66, 3, 72, 0, 5, 1, 2, 32, 0, 2,
 			224, 165, 141, 224, 164, 166, 3, 72, 4, 0, 4, 2, 224, 165, 141, 224, 164, 167, 3, 72, 12, 0, 2, 224, 165, 141, 224, 164, 181, 0,
-			3, 72, 109, 0, 4, 224, 164, 129, 3, 72, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 72, 149, 0, 7, 6, 1,
-			40, 0, 4, 2, 17, 66, 3, 139, 0, 5, 1, 2, 32, 0, 3, 139, 109, 0, 4, 224, 164, 129, 3, 139, 129, 6, 0, 224, 165, 133,
-			0, 1, 141, 165, 224, 2, 32, 3, 139, 149, 0, 7, 6, 1, 41, 0, 4, 2, 17, 66, 3, 50, 0, 5, 1, 2, 32, 0, 2, 224,
+			3, 72, 109, 0, 4, 224, 164, 129, 3, 72, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 72, 148, 0, 7, 6, 1,
+			40, 0, 4, 2, 17, 66, 3, 138, 0, 5, 1, 2, 32, 0, 3, 138, 109, 0, 4, 224, 164, 129, 3, 138, 129, 6, 0, 224, 165, 133,
+			0, 1, 141, 165, 224, 2, 32, 3, 138, 148, 0, 7, 6, 1, 41, 0, 4, 2, 17, 66, 3, 50, 0, 5, 1, 2, 32, 0, 2, 224,
 			165, 141, 224, 164, 168, 3, 50, 4, 0, 4, 1, 136, 165, 224, 17, 67, 2, 32, 3, 50, 13, 0, 1, 143, 164, 224, 2, 32, 0, 1,
 			191, 164, 224, 166, 164, 224, 17, 66, 17, 67, 2, 32, 0, 1, 17, 66, 17, 67, 2, 224, 165, 129, 32, 3, 50, 40, 38, 0, 3, 50,
-			109, 0, 4, 224, 164, 129, 3, 50, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 50, 149, 0, 7, 6, 1, 42, 0,
+			109, 0, 4, 224, 164, 129, 3, 50, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 50, 148, 0, 7, 6, 1, 42, 0,
 			3, 50, 6, 35, 0, 7, 6, 1, 43, 0, 4, 2, 17, 66, 3, 48, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 170, 3,
 			48, 4, 0, 2, 224, 165, 141, 224, 164, 175, 3, 48, 12, 0, 3, 48, 109, 0, 4, 224, 164, 129, 3, 48, 129, 6, 0, 224, 165, 133,
-			0, 1, 141, 165, 224, 2, 32, 3, 48, 149, 0, 7, 6, 1, 44, 0, 4, 2, 17, 66, 3, 136, 0, 5, 1, 2, 32, 0, 2, 224,
+			0, 1, 141, 165, 224, 2, 32, 3, 48, 148, 0, 7, 6, 1, 44, 0, 4, 2, 17, 66, 3, 136, 0, 5, 1, 2, 32, 0, 2, 224,
 			165, 141, 224, 164, 168, 3, 136, 12, 0, 3, 136, 109, 0, 4, 224, 164, 129, 3, 136, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224,
-			2, 32, 3, 136, 149, 0, 7, 6, 1, 45, 0, 4, 2, 17, 66, 3, 71, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 172,
-			3, 71, 12, 0, 3, 71, 109, 0, 4, 224, 164, 129, 3, 71, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 71, 149,
-			0, 7, 6, 1, 46, 0, 4, 2, 17, 66, 3, 137, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 175, 3, 137, 4, 0, 3,
-			137, 109, 0, 4, 224, 164, 129, 3, 137, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 137, 149, 0, 7, 6, 1, 47,
-			0, 2, 17, 66, 3, 65, 0, 2, 224, 165, 141, 224, 164, 174, 3, 65, 4, 0, 2, 224, 165, 141, 224, 164, 175, 3, 65, 12, 0, 3,
-			65, 109, 0, 4, 224, 164, 129, 3, 65, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 65, 149, 0, 7, 6, 1, 48,
-			0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 5, 1, 2, 32, 3, 57, 111, 0, 4, 224, 164, 129, 3, 57, 129, 6, 0, 224, 165,
-			133, 0, 1, 141, 165, 224, 2, 32, 3, 57, 149, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 224, 165, 141, 226, 128, 141, 3,
-			34, 6, 12, 0, 1, 141, 165, 224, 2, 99, 3, 34, 6, 84, 12, 0, 2, 224, 165, 141, 17, 67, 3, 34, 12, 0, 4, 1, 135, 165,
-			224, 17, 67, 2, 32, 3, 34, 13, 0, 1, 135, 165, 224, 17, 67, 2, 32, 0, 3, 34, 109, 0, 224, 164, 176, 2, 32, 3, 34, 110,
-			34, 111, 0, 4, 224, 164, 129, 3, 34, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 34, 6, 0, 3, 34,
-			6, 109, 0, 1, 141, 165, 224, 2, 32, 3, 34, 149, 0, 7, 6, 1, 51, 0, 4, 2, 17, 66, 3, 55, 0, 5, 1, 2, 32, 0,
-			2, 224, 165, 141, 224, 164, 178, 3, 55, 12, 0, 3, 55, 109, 0, 4, 224, 164, 129, 3, 55, 129, 6, 0, 224, 165, 133, 0, 1, 141,
-			165, 224, 2, 32, 3, 55, 149, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3,
-			62, 109, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109, 0, 7, 6,
-			1, 54, 0, 1, 141, 165, 224, 167, 164, 224, 2, 32, 3, 6, 58, 109, 0, 8, 2, 17, 66, 3, 58, 0, 4, 1, 141, 165, 224, 17,
-			67, 3, 58, 6, 0, 1, 141, 165, 224, 167, 164, 224, 2, 17, 66, 0, 1, 141, 165, 224, 185, 164, 224, 0, 2, 17, 66, 0, 1, 141,
-			165, 224, 167, 164, 224, 2, 17, 67, 3, 58, 6, 109, 0, 4, 3, 58, 109, 0, 8, 0, 224, 164, 129, 8, 3, 58, 129, 6, 0, 8,
-			2, 224, 165, 141, 3, 84, 0, 4, 224, 164, 129, 3, 84, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 55, 0, 4, 2, 17, 66, 3,
-			91, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 154, 3, 91, 12, 0, 3, 91, 109, 0, 4, 224, 164, 129, 3, 91, 129, 6,
-			0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 91, 149, 0, 7, 6, 1, 56, 0, 4, 2, 17, 66, 3, 93, 0, 5, 1, 2,
-			32, 0, 4, 2, 224, 165, 141, 224, 164, 159, 3, 93, 4, 0, 2, 224, 165, 141, 224, 164, 160, 0, 3, 93, 109, 0, 4, 224, 164, 129,
-			3, 93, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 93, 149, 0, 7, 6, 1, 57, 0, 4, 2, 17, 66, 3, 89,
-			0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 184, 3, 89, 4, 0, 3, 89, 109, 0, 1, 141, 165, 224, 2, 32, 3, 89, 149,
-			0, 4, 224, 164, 129, 3, 91, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 109, 0, 4,
-			224, 164, 129, 3, 107, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 107, 149, 0, 7, 6, 1, 62, 0, 4, 1, 17,
-			65, 3, 12, 8, 0, 1, 17, 67, 0, 3, 109, 6, 49, 6, 118, 34, 13, 0, 7, 6, 1, 63, 0, 1, 17, 67, 3, 118, 0, 3,
-			118, 4, 49, 6, 118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 128, 6, 0, 224, 164, 181, 3, 135, 0, 7, 6, 1, 64, 0,
-			3, 37, 6, 49, 6, 118, 12, 34, 13, 0, 1, 17, 67, 3, 113, 0, 224, 164, 129, 1, 17, 67, 3, 124, 6, 0, 7, 6, 1, 65,
-			0, 1, 17, 67, 2, 32, 3, 112, 0, 3, 112, 4, 8, 49, 6, 118, 12, 34, 13, 0, 1, 17, 67, 3, 113, 12, 0, 224, 164, 129,
-			1, 17, 67, 3, 124, 6, 0, 7, 6, 1, 66, 0, 1, 17, 67, 3, 40, 0, 1, 168, 164, 224, 133, 164, 224, 3, 40, 4, 20, 0,
-			3, 122, 6, 49, 6, 118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 133, 6, 0, 7, 6, 1, 67, 0, 3, 58, 123, 4, 8,
-			49, 6, 118, 12, 34, 13, 0, 1, 17, 67, 3, 123, 0, 224, 164, 129, 1, 17, 67, 3, 133, 6, 0, 7, 6, 1, 68, 0, 1, 17,
-			67, 3, 34, 6, 113, 0, 3, 34, 112, 4, 49, 6, 118, 34, 13, 0, 7, 6, 1, 69, 0, 1, 17, 67, 3, 34, 34, 6, 112, 4,
-			0, 3, 34, 34, 112, 4, 49, 6, 118, 34, 13, 0, 7, 6, 1, 70, 0, 3, 116, 4, 80, 112, 50, 6, 107, 13, 12, 0, 1, 17,
-			67, 3, 129, 6, 0, 7, 6, 1, 71, 0, 1, 17, 67, 3, 36, 0, 3, 36, 6, 49, 6, 118, 12, 34, 149, 0, 7, 6, 1, 72,
-			0, 1, 17, 67, 3, 114, 0, 3, 114, 6, 49, 6, 118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 126, 6, 0, 7, 6, 1,
-			73, 0, 1, 17, 67, 3, 115, 0, 224, 164, 129, 1, 17, 67, 3, 127, 6, 0, 5, 2, 1, 17, 67, 3, 134, 0, 3, 152, 12, 6,
-			49, 6, 118, 12, 34, 13, 0, 7, 6, 1, 74, 0, 1, 17, 67, 3, 118, 50, 0, 3, 120, 0, 7, 6, 1, 75, 0, 1, 17, 67,
-			3, 39, 0, 3, 39, 49, 6, 118, 12, 34, 13, 0, 7, 6, 1, 76, 0, 1, 17, 67, 3, 119, 0, 3, 119, 4, 49, 6, 118, 12,
-			34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 131, 6, 0, 7, 6, 1, 77, 0, 1, 17, 67, 3, 120, 0, 3, 120, 40, 49, 118, 12,
-			34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 130, 6, 0, 5, 3, 1, 17, 67, 3, 135, 0, 7, 6, 1, 78, 0, 1, 17, 67, 3,
-			0, 1, 17, 67, 2, 17, 67, 32, 3, 8, 0, 3, 107, 6, 109, 55, 110, 50, 6, 47, 111, 0, 7, 6, 1, 81, 0, 3, 131, 7,
-			65, 0, 7, 6, 1, 89, 0, 2, 17, 66, 3, 104, 0, 3, 104, 109, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 101, 0, 3, 101,
-			109, 0, 7, 6, 1, 91, 0, 2, 17, 66, 3, 100, 0, 3, 100, 109, 0, 7, 6, 1, 92, 0, 2, 17, 66, 3, 88, 0, 3, 88,
-			109, 0, 7, 6, 1, 93, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 70, 107, 0, 3,
-			70, 107, 109, 0, 7, 6, 1, 95, 0, 2, 17, 66, 3, 83, 0, 3, 83, 109, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 57, 0,
-			3, 57, 109, 0, 7, 6, 1, 97, 0, 3, 34, 34, 113, 12, 0, 7, 6, 1, 98, 0, 3, 55, 55, 34, 112, 0, 7, 6, 1, 99,
-			0, 3, 55, 6, 34, 112, 49, 6, 118, 12, 34, 13, 0, 7, 6, 1, 100, 0, 3, 55, 55, 6, 34, 112, 4, 49, 6, 118, 12, 34,
-			13, 12, 0, 7, 6, 1, 115, 0, 3, 129, 6, 0, 7, 6, 1, 124, 0, 2, 17, 66, 3, 100, 0, 3, 100, 109, 0, 7, 6, 1,
-			125, 0, 2, 17, 66, 3, 88, 0, 3, 88, 109, 0, 7, 6, 1, 127, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1,
-			128, 0, 2, 17, 66, 3, 71, 0, 3, 71, 13, 0, 7, 6, 43, 0, 3, 48, 55, 109, 89, 0, 4, 1, 32, 17, 65, 3, 79, 6,
-			39, 72, 80, 6, 37, 50, 107, 111, 0, 1, 32, 17, 67, 0, 2, 32, 17, 65, 0, 2, 32, 17, 67, 0, 7, 6, 45, 0, 4, 1,
-			32, 12, 3, 65, 6, 35, 37, 50, 109, 8, 89, 0, 1, 32, 61, 0, 1, 32, 166, 165, 224, 0, 1, 32, 167, 165, 224, 0, 1, 32,
-			168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224, 0, 1, 32, 172, 165, 224, 0, 1, 32,
-			173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 2, 32, 12, 0, 2, 32, 61, 0, 2, 32, 224, 165, 166, 0,
-			2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169, 0, 2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0,
-			2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174, 0, 2, 32, 224, 165, 175, 0, 3, 141, 57, 118, 91, 0,
-			7, 6, 61, 0, 4, 1, 32, 17, 65, 3, 71, 109, 34, 6, 118, 71, 35, 8, 34, 0, 1, 32, 17, 67, 0, 1, 32, 166, 165, 224,
-			0, 1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224,
-			0, 1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 2, 32, 17, 65, 0,
-			2, 32, 17, 67, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169, 0, 2,
-			32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174, 0, 2,
-			32, 224, 165, 175, 0, 3, 113, 6, 88, 4, 112, 49, 6, 58, 109, 6, 55, 0, 7, 6, 91, 0, 3, 55, 6, 36, 83, 47, 71, 34,
-			6, 35, 49, 6, 36, 47, 0, 4, 2, 32, 17, 65, 3, 138, 6, 40, 55, 6, 39, 49, 6, 39, 89, 107, 140, 111, 89, 40, 34, 40,
-			0, 2, 32, 17, 67, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169, 0,
-			2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174, 0,
-			2, 32, 224, 165, 175, 0, 7, 6, 93, 0, 3, 34, 6, 35, 37, 47, 71, 34, 6, 35, 49, 6, 36, 47, 0, 4, 1, 32, 17, 65,
-			3, 138, 6, 40, 55, 6, 39, 49, 6, 39, 89, 107, 140, 111, 71, 6, 109, 50, 72, 111, 0, 1, 32, 17, 67, 0, 1, 32, 166, 165,
-			224, 0, 1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165,
-			224, 0, 1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 7, 6, 123, 0,
-			3, 55, 6, 36, 83, 47, 71, 34, 6, 150, 89, 0, 4, 2, 32, 17, 65, 3, 71, 6, 118, 68, 81, 6, 36, 49, 6, 39, 89, 107,
-			142, 111, 89, 40, 34, 40, 0, 2, 32, 17, 67, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0,
-			2, 32, 224, 165, 169, 0, 2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0,
-			2, 32, 224, 165, 174, 0, 2, 32, 224, 165, 175, 0, 7, 6, 125, 0, 3, 34, 6, 134, 47, 71, 34, 6, 150, 89, 0, 4, 1, 32,
-			17, 65, 3, 71, 6, 118, 68, 81, 6, 36, 49, 6, 39, 89, 107, 142, 111, 71, 6, 109, 50, 72, 111, 0, 1, 32, 17, 67, 0, 1,
-			32, 166, 165, 224, 0, 1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1,
-			32, 171, 165, 224, 0, 1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 7,
-			6, 0, 4, 224, 165, 145, 3, 0, 4, 224, 165, 147, 3, 0, 4, 224, 165, 148, 3, 0, 224, 165, 189, 3, 0, 37, 3, 48, 34, 109,
-			47, 37, 89, 107, 6, 84, 47, 0, 224, 165, 164, 3, 48, 40, 34, 6, 4, 66, 13, 4, 58, 6, 37, 34, 6, 118, 65, 0, 224, 164,
-			188, 3, 50, 6, 40, 6, 49, 6, 47, 6, 118, 0, 224, 165, 177, 3, 71, 6, 112, 50, 8, 72, 6, 123, 0, 224, 165, 165, 3, 72,
-			6, 39, 71, 6, 71, 111, 34, 111, 4, 58, 37, 34, 6, 118, 12, 65, 109, 0, 36, 3, 72, 121, 55, 109, 0, 224, 165, 176, 3, 109,
-			4, 50, 89, 107, 13, 0, 224, 165, 146, 3, 109, 72, 6, 119, 4, 34, 6, 36, 146, 6, 118, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts44 = FileInMemory_createWithData (10794, reinterpret_cast<const char *> (&espeakdata_dicts44_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ne_dict", 
+			2, 32, 3, 136, 148, 0, 7, 6, 1, 45, 0, 4, 2, 17, 66, 3, 71, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 172,
+			3, 71, 12, 0, 3, 71, 109, 0, 4, 224, 164, 129, 3, 71, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 71, 148,
+			0, 7, 6, 1, 46, 0, 1, 141, 165, 224, 2, 32, 3, 71, 107, 148, 0, 4, 2, 17, 66, 3, 137, 0, 5, 1, 2, 32, 0, 2,
+			224, 165, 141, 224, 164, 175, 3, 137, 4, 0, 3, 137, 109, 0, 4, 224, 164, 129, 3, 137, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1,
+			47, 0, 2, 17, 66, 3, 65, 0, 2, 224, 165, 141, 224, 164, 174, 3, 65, 4, 0, 2, 224, 165, 141, 224, 164, 175, 3, 65, 12, 0,
+			3, 65, 109, 0, 4, 224, 164, 129, 3, 65, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 65, 148, 0, 7, 6, 1,
+			48, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 5, 1, 2, 32, 3, 57, 111, 0, 4, 224, 164, 129, 3, 57, 129, 6, 0, 224,
+			165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 57, 148, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 224, 165, 141, 226, 128, 141,
+			3, 34, 6, 12, 0, 1, 141, 165, 224, 2, 99, 3, 34, 6, 84, 12, 0, 2, 224, 165, 141, 17, 67, 3, 34, 12, 0, 4, 1, 135,
+			165, 224, 17, 67, 2, 32, 3, 34, 13, 0, 1, 135, 165, 224, 17, 67, 2, 32, 0, 3, 34, 109, 0, 224, 164, 176, 2, 32, 3, 34,
+			110, 34, 111, 0, 4, 224, 164, 129, 3, 34, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 34, 6, 0, 3,
+			34, 6, 109, 0, 1, 141, 165, 224, 2, 32, 3, 34, 148, 0, 7, 6, 1, 51, 0, 4, 2, 17, 66, 3, 55, 0, 5, 1, 2, 32,
+			0, 2, 224, 165, 141, 224, 164, 178, 3, 55, 12, 0, 3, 55, 109, 0, 4, 224, 164, 129, 3, 55, 129, 6, 0, 224, 165, 133, 0, 1,
+			141, 165, 224, 2, 32, 3, 55, 148, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0,
+			3, 62, 109, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 62, 0, 1, 141, 165, 224, 2, 32, 3, 62, 13, 0, 3, 62, 109, 0, 7,
+			6, 1, 54, 0, 1, 141, 165, 224, 167, 164, 224, 2, 32, 3, 6, 58, 109, 0, 8, 2, 17, 66, 3, 58, 0, 4, 1, 141, 165, 224,
+			17, 67, 3, 58, 6, 0, 1, 141, 165, 224, 167, 164, 224, 2, 17, 66, 0, 1, 141, 165, 224, 185, 164, 224, 0, 2, 17, 66, 0, 1,
+			141, 165, 224, 167, 164, 224, 2, 17, 67, 3, 58, 6, 109, 0, 4, 3, 58, 109, 0, 8, 0, 224, 164, 129, 8, 3, 58, 129, 6, 0,
+			8, 2, 224, 165, 141, 3, 84, 0, 4, 224, 164, 129, 3, 84, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 55, 0, 4, 2, 17, 66,
+			3, 91, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 154, 3, 91, 12, 0, 3, 91, 109, 0, 4, 224, 164, 129, 3, 91, 129,
+			6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 91, 148, 0, 7, 6, 1, 56, 0, 4, 2, 17, 66, 3, 93, 0, 5, 1,
+			2, 32, 0, 4, 2, 224, 165, 141, 224, 164, 159, 3, 93, 4, 0, 2, 224, 165, 141, 224, 164, 160, 0, 3, 93, 109, 0, 4, 224, 164,
+			129, 3, 93, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 93, 148, 0, 7, 6, 1, 57, 0, 4, 2, 17, 66, 3,
+			89, 0, 5, 1, 2, 32, 0, 2, 224, 165, 141, 224, 164, 184, 3, 89, 4, 0, 3, 89, 109, 0, 1, 141, 165, 224, 2, 32, 3, 89,
+			148, 0, 4, 224, 164, 129, 3, 91, 129, 6, 0, 224, 165, 133, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 109, 0,
+			4, 224, 164, 129, 3, 107, 129, 6, 0, 224, 165, 133, 0, 1, 141, 165, 224, 2, 32, 3, 107, 148, 0, 7, 6, 1, 62, 0, 4, 1,
+			17, 65, 3, 12, 8, 0, 1, 17, 67, 0, 3, 109, 6, 49, 6, 118, 34, 13, 0, 7, 6, 1, 63, 0, 1, 17, 67, 3, 118, 0,
+			3, 118, 4, 49, 6, 118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 128, 6, 0, 7, 6, 1, 64, 0, 3, 37, 6, 49, 6,
+			118, 12, 34, 13, 0, 1, 17, 67, 3, 113, 0, 224, 164, 129, 1, 17, 67, 3, 124, 6, 0, 7, 6, 1, 65, 0, 1, 17, 67, 2,
+			32, 3, 112, 0, 3, 112, 4, 8, 49, 6, 118, 12, 34, 13, 0, 1, 17, 67, 3, 113, 12, 0, 224, 164, 129, 1, 17, 67, 3, 124,
+			6, 0, 7, 6, 1, 66, 0, 1, 17, 67, 3, 40, 0, 1, 168, 164, 224, 133, 164, 224, 3, 40, 4, 20, 0, 3, 122, 6, 49, 6,
+			118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 133, 6, 0, 7, 6, 1, 67, 0, 3, 58, 123, 4, 8, 49, 6, 118, 12, 34,
+			13, 0, 1, 17, 67, 3, 123, 0, 224, 164, 129, 1, 17, 67, 3, 133, 6, 0, 7, 6, 1, 68, 0, 1, 17, 67, 3, 34, 6, 113,
+			0, 3, 34, 112, 4, 49, 6, 118, 34, 13, 0, 7, 6, 1, 69, 0, 1, 17, 67, 3, 34, 34, 6, 112, 4, 0, 3, 34, 34, 112,
+			4, 49, 6, 118, 34, 13, 0, 7, 6, 1, 70, 0, 3, 116, 4, 80, 112, 50, 6, 107, 13, 12, 0, 1, 17, 67, 3, 129, 6, 0,
+			7, 6, 1, 71, 0, 1, 17, 67, 3, 36, 0, 3, 36, 6, 49, 6, 118, 12, 34, 148, 0, 7, 6, 1, 72, 0, 1, 17, 67, 3,
+			114, 0, 3, 114, 6, 49, 6, 118, 12, 34, 13, 0, 224, 164, 129, 1, 17, 67, 3, 126, 6, 0, 7, 6, 1, 73, 0, 1, 17, 67,
+			3, 115, 0, 224, 164, 129, 1, 17, 67, 3, 127, 6, 0, 5, 2, 1, 17, 67, 3, 134, 0, 3, 151, 12, 6, 49, 6, 118, 12, 34,
+			13, 0, 7, 6, 1, 74, 0, 1, 17, 67, 3, 118, 50, 0, 3, 120, 0, 7, 6, 1, 75, 0, 1, 17, 67, 3, 39, 0, 3, 39,
+			49, 6, 118, 12, 34, 13, 0, 7, 6, 1, 76, 0, 1, 17, 67, 3, 119, 0, 3, 119, 4, 49, 6, 118, 12, 34, 13, 0, 224, 164,
+			129, 1, 17, 67, 3, 131, 6, 0, 7, 6, 1, 77, 0, 1, 17, 67, 3, 120, 0, 3, 120, 40, 49, 118, 12, 34, 13, 0, 224, 164,
+			129, 1, 17, 67, 3, 130, 6, 0, 5, 3, 1, 17, 67, 3, 135, 0, 7, 6, 1, 78, 0, 1, 17, 67, 3, 0, 1, 17, 67, 2,
+			17, 67, 32, 3, 8, 0, 3, 107, 6, 109, 55, 110, 50, 6, 47, 111, 0, 7, 6, 1, 81, 0, 3, 131, 7, 65, 0, 7, 6, 1,
+			89, 0, 2, 17, 66, 3, 104, 0, 3, 104, 109, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 101, 0, 3, 101, 109, 0, 7, 6, 1,
+			91, 0, 2, 17, 66, 3, 100, 0, 3, 100, 109, 0, 7, 6, 1, 92, 0, 2, 17, 66, 3, 88, 0, 3, 88, 109, 0, 7, 6, 1,
+			93, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 70, 107, 0, 3, 70, 107, 109, 0, 7,
+			6, 1, 95, 0, 2, 17, 66, 3, 83, 0, 3, 83, 109, 0, 7, 6, 1, 96, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 7,
+			6, 1, 97, 0, 3, 34, 34, 113, 12, 0, 7, 6, 1, 98, 0, 3, 55, 55, 34, 112, 0, 7, 6, 1, 99, 0, 3, 55, 6, 34,
+			112, 49, 6, 118, 12, 34, 13, 0, 7, 6, 1, 100, 0, 3, 55, 55, 6, 34, 112, 4, 49, 6, 118, 12, 34, 13, 12, 0, 7, 6,
+			1, 115, 0, 3, 129, 6, 0, 7, 6, 1, 124, 0, 2, 17, 66, 3, 100, 0, 3, 100, 109, 0, 7, 6, 1, 125, 0, 2, 17, 66,
+			3, 88, 0, 3, 88, 109, 0, 7, 6, 1, 127, 0, 2, 17, 66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 128, 0, 2, 17, 66,
+			3, 71, 0, 3, 71, 13, 0, 7, 6, 43, 0, 3, 48, 55, 109, 89, 0, 4, 1, 32, 17, 65, 3, 79, 6, 39, 72, 80, 6, 37,
+			50, 107, 111, 0, 1, 32, 17, 67, 0, 2, 32, 17, 65, 0, 2, 32, 17, 67, 0, 7, 6, 45, 0, 4, 1, 32, 12, 3, 65, 6,
+			35, 37, 50, 109, 8, 89, 0, 1, 32, 61, 0, 1, 32, 166, 165, 224, 0, 1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1,
+			32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224, 0, 1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1,
+			32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 2, 32, 12, 0, 2, 32, 61, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167,
+			0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169, 0, 2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172,
+			0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174, 0, 2, 32, 224, 165, 175, 0, 3, 140, 57, 118, 91, 0, 7, 6, 61, 0, 4,
+			1, 32, 17, 65, 3, 71, 109, 34, 6, 118, 71, 35, 8, 34, 0, 1, 32, 17, 67, 0, 1, 32, 166, 165, 224, 0, 1, 32, 167, 165,
+			224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224, 0, 1, 32, 172, 165,
+			224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 2, 32, 17, 65, 0, 2, 32, 17, 67, 0,
+			2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169, 0, 2, 32, 224, 165, 170, 0,
+			2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174, 0, 2, 32, 224, 165, 175, 0,
+			3, 113, 6, 88, 4, 112, 49, 6, 58, 109, 6, 55, 0, 7, 6, 91, 0, 4, 2, 32, 17, 65, 3, 25, 6, 40, 55, 6, 39, 49,
+			6, 39, 89, 107, 139, 111, 89, 40, 34, 40, 0, 2, 32, 17, 67, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32,
+			224, 165, 168, 0, 2, 32, 224, 165, 169, 0, 2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32,
+			224, 165, 173, 0, 2, 32, 224, 165, 174, 0, 2, 32, 224, 165, 175, 0, 3, 55, 6, 36, 83, 47, 71, 34, 6, 35, 49, 6, 36, 47,
+			0, 7, 6, 93, 0, 4, 1, 32, 17, 65, 3, 25, 6, 40, 55, 6, 39, 49, 6, 39, 89, 107, 139, 111, 71, 6, 109, 50, 72, 111,
+			0, 1, 32, 17, 67, 0, 1, 32, 166, 165, 224, 0, 1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0,
+			1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224, 0, 1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0,
+			1, 32, 175, 165, 224, 0, 3, 34, 6, 35, 37, 47, 71, 34, 6, 35, 49, 6, 36, 47, 0, 7, 6, 123, 0, 3, 55, 6, 36, 83,
+			47, 71, 34, 6, 149, 89, 0, 4, 2, 32, 17, 65, 3, 71, 6, 118, 68, 81, 6, 36, 49, 6, 39, 89, 107, 141, 111, 89, 40, 34,
+			40, 0, 2, 32, 17, 67, 0, 2, 32, 224, 165, 166, 0, 2, 32, 224, 165, 167, 0, 2, 32, 224, 165, 168, 0, 2, 32, 224, 165, 169,
+			0, 2, 32, 224, 165, 170, 0, 2, 32, 224, 165, 171, 0, 2, 32, 224, 165, 172, 0, 2, 32, 224, 165, 173, 0, 2, 32, 224, 165, 174,
+			0, 2, 32, 224, 165, 175, 0, 7, 6, 125, 0, 3, 34, 6, 134, 47, 71, 34, 6, 149, 89, 0, 4, 1, 32, 17, 65, 3, 71, 6,
+			118, 68, 81, 6, 36, 49, 6, 39, 89, 107, 141, 111, 71, 6, 109, 50, 72, 111, 0, 1, 32, 17, 67, 0, 1, 32, 166, 165, 224, 0,
+			1, 32, 167, 165, 224, 0, 1, 32, 168, 165, 224, 0, 1, 32, 169, 165, 224, 0, 1, 32, 170, 165, 224, 0, 1, 32, 171, 165, 224, 0,
+			1, 32, 172, 165, 224, 0, 1, 32, 173, 165, 224, 0, 1, 32, 174, 165, 224, 0, 1, 32, 175, 165, 224, 0, 7, 6, 0, 224, 165, 148,
+			3, 4, 122, 72, 12, 138, 13, 34, 4, 13, 66, 13, 6, 109, 50, 47, 13, 0, 224, 165, 146, 3, 35, 6, 50, 6, 40, 72, 6, 109,
+			47, 47, 4, 13, 0, 37, 3, 48, 34, 109, 47, 37, 89, 107, 6, 84, 47, 0, 224, 165, 164, 3, 48, 40, 34, 6, 4, 66, 13, 4,
+			58, 6, 37, 34, 6, 118, 65, 0, 224, 165, 189, 3, 49, 4, 13, 66, 141, 13, 58, 6, 113, 34, 118, 65, 0, 224, 164, 188, 3, 50,
+			6, 40, 6, 49, 6, 47, 6, 118, 0, 224, 165, 165, 3, 72, 6, 112, 34, 146, 13, 4, 58, 6, 37, 34, 6, 118, 65, 0, 224, 165,
+			177, 3, 72, 109, 91, 13, 65, 35, 55, 13, 58, 111, 0, 36, 3, 72, 121, 55, 109, 0, 224, 165, 176, 3, 89, 35, 68, 49, 93, 114,
+			48, 13, 89, 6, 123, 80, 13, 49, 13, 0, 224, 165, 145, 3, 122, 72, 6, 109, 47, 47, 4, 13, 0, 224, 165, 147, 3, 122, 72, 12,
+			138, 13, 34, 4, 13, 66, 13, 118, 34, 6, 109, 65, 137, 13, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts47 = FileInMemory_createWithData (10817, reinterpret_cast<const char *> (&espeakdata_dicts47_data), 
+			U"espeak-1.48.04-source/espeak-data/ne_dict", 
 			U"ne");
-		Collection_addItem (me.peek(), espeakdata_dicts44.transfer());
+		my addItem_move (espeakdata_dicts47.move());
 
-		static unsigned char espeakdata_dicts45_data[21599] = {
-			0, 4, 0, 0, 41, 59, 0, 0, 0, 0, 0, 0, 0, 8, 197, 104, 242, 69, 81, 48, 66, 0, 10, 199, 44, 20, 130, 60, 226, 197,
-			48, 20, 10, 199, 52, 21, 83, 60, 193, 85, 52, 20, 0, 11, 70, 32, 20, 132, 92, 20, 133, 21, 0, 10, 7, 195, 92, 19, 148, 72,
-			8, 0, 0, 8, 197, 92, 145, 71, 20, 192, 20, 8, 197, 61, 32, 75, 20, 192, 20, 8, 197, 8, 85, 71, 20, 192, 20, 8, 197, 45,
-			33, 71, 20, 192, 20, 6, 65, 8, 71, 119, 0, 0, 9, 198, 76, 193, 78, 80, 84, 128, 20, 9, 198, 64, 197, 78, 16, 84, 128, 20,
-			9, 198, 44, 224, 80, 64, 84, 128, 20, 9, 198, 44, 192, 80, 64, 84, 128, 20, 9, 198, 12, 128, 82, 80, 84, 128, 20, 9, 198, 92,
-			19, 142, 20, 84, 128, 8, 0, 0, 11, 67, 12, 17, 133, 49, 115, 83, 6, 119, 0, 7, 196, 89, 32, 71, 20, 20, 0, 13, 69, 16,
-			145, 83, 20, 192, 72, 37, 88, 13, 55, 0, 24, 73, 8, 245, 82, 28, 243, 132, 36, 84, 128, 71, 40, 34, 101, 6, 122, 50, 72, 37,
-			12, 13, 34, 0, 8, 197, 77, 82, 203, 20, 192, 20, 8, 197, 72, 149, 19, 20, 192, 20, 9, 197, 104, 243, 1, 56, 112, 66, 8, 6,
-			65, 12, 89, 119, 0, 0, 9, 198, 57, 80, 200, 80, 84, 128, 20, 0, 13, 4, 95, 8, 1, 3, 107, 6, 115, 76, 111, 49, 0, 0,
-			11, 200, 89, 35, 213, 92, 83, 135, 20, 176, 22, 0, 8, 197, 49, 82, 77, 21, 32, 20, 6, 65, 16, 72, 119, 0, 0, 13, 202, 60,
-			225, 197, 52, 18, 203, 20, 194, 74, 44, 67, 0, 9, 67, 20, 83, 128, 13, 50, 0, 9, 0, 0, 8, 197, 52, 20, 141, 21, 32, 20,
-			16, 65, 20, 37, 12, 65, 119, 55, 0, 44, 81, 109, 97, 105, 108, 32, 5, 65, 20, 119, 0, 0, 16, 70, 21, 0, 85, 48, 85, 0,
-			119, 48, 122, 55, 6, 111, 47, 0, 0, 9, 67, 92, 146, 128, 85, 2, 123, 0, 9, 67, 28, 146, 128, 100, 2, 123, 0, 18, 4, 95,
-			48, 67, 15, 107, 6, 113, 50, 72, 111, 34, 47, 89, 47, 13, 0, 0, 0, 6, 65, 24, 111, 83, 0, 0, 0, 0, 9, 198, 76, 227,
-			197, 104, 83, 0, 20, 9, 198, 45, 114, 83, 64, 83, 0, 20, 9, 198, 45, 34, 78, 44, 83, 0, 20, 0, 8, 197, 52, 85, 19, 20,
-			192, 20, 6, 65, 28, 100, 119, 0, 0, 17, 70, 16, 85, 197, 88, 84, 128, 72, 13, 6, 85, 119, 84, 13, 34, 0, 16, 70, 8, 245,
-			68, 60, 148, 128, 71, 40, 72, 58, 6, 115, 34, 0, 9, 198, 76, 194, 68, 16, 84, 128, 20, 9, 198, 44, 193, 68, 16, 84, 128, 20,
-			0, 6, 195, 44, 19, 128, 72, 0, 0, 12, 201, 36, 225, 197, 92, 146, 203, 20, 193, 0, 67, 6, 65, 32, 107, 115, 0, 0, 9, 198,
-			64, 20, 148, 36, 177, 76, 20, 9, 198, 81, 35, 203, 44, 83, 128, 20, 0, 0, 11, 1, 35, 107, 6, 111, 49, 57, 13, 0, 27, 0,
-			6, 65, 36, 37, 12, 0, 0, 9, 198, 52, 240, 200, 80, 83, 128, 72, 13, 1, 37, 48, 14, 16, 122, 89, 6, 111, 50, 47, 0, 0,
-			0, 0, 8, 197, 92, 19, 139, 20, 192, 20, 8, 197, 88, 193, 71, 20, 192, 20, 8, 197, 44, 147, 139, 20, 192, 20, 8, 197, 32, 18,
-			203, 20, 192, 20, 8, 197, 92, 242, 203, 20, 192, 20, 8, 197, 80, 80, 203, 20, 192, 20, 6, 65, 40, 57, 119, 0, 0, 9, 198, 88,
-			194, 78, 16, 84, 128, 20, 9, 198, 76, 226, 80, 64, 84, 128, 20, 9, 198, 64, 19, 1, 88, 84, 128, 20, 9, 198, 44, 226, 80, 64,
-			84, 128, 20, 9, 198, 44, 193, 80, 64, 84, 128, 20, 9, 198, 32, 84, 143, 88, 84, 128, 20, 9, 198, 28, 197, 78, 16, 84, 128, 20,
-			9, 198, 24, 194, 80, 64, 84, 128, 20, 9, 198, 8, 197, 78, 16, 84, 128, 20, 0, 15, 1, 42, 89, 47, 6, 111, 16, 34, 111, 47,
-			38, 13, 0, 27, 0, 7, 196, 49, 32, 71, 20, 20, 7, 196, 17, 32, 71, 20, 20, 10, 1, 43, 48, 55, 6, 110, 89, 0, 27, 0,
-			8, 197, 64, 147, 135, 20, 192, 20, 8, 197, 40, 83, 135, 20, 192, 20, 8, 197, 32, 83, 135, 20, 192, 20, 8, 197, 24, 18, 203, 20,
-			192, 20, 8, 197, 17, 82, 75, 20, 192, 20, 8, 197, 9, 83, 135, 20, 192, 20, 8, 197, 8, 146, 203, 20, 192, 20, 8, 197, 8, 83,
-			135, 20, 192, 20, 8, 197, 80, 82, 203, 20, 192, 20, 8, 197, 16, 243, 135, 20, 192, 20, 6, 65, 44, 49, 115, 0, 0, 9, 198, 44,
-			225, 84, 80, 84, 128, 20, 9, 198, 28, 194, 84, 80, 84, 128, 20, 9, 198, 24, 192, 68, 16, 84, 128, 20, 0, 9, 1, 46, 48, 110,
-			50, 47, 0, 27, 0, 9, 1, 47, 89, 55, 6, 111, 91, 0, 0, 6, 65, 48, 111, 55, 0, 0, 0, 0, 0, 6, 65, 52, 111, 65,
-			0, 0, 9, 198, 16, 243, 210, 16, 21, 0, 66, 6, 194, 104, 240, 9, 76, 0, 0, 0, 10, 5, 95, 48, 1, 14, 4, 111, 50, 0,
-			6, 65, 56, 111, 50, 0, 0, 9, 198, 8, 146, 154, 36, 83, 132, 66, 0, 0, 9, 198, 76, 227, 210, 44, 83, 0, 20, 14, 70, 76,
-			133, 70, 24, 83, 0, 91, 110, 83, 13, 55, 0, 7, 196, 76, 16, 133, 48, 20, 13, 68, 48, 16, 133, 48, 55, 119, 71, 13, 55, 0,
-			20, 7, 196, 44, 16, 133, 48, 20, 9, 198, 81, 37, 70, 24, 83, 0, 20, 7, 196, 80, 16, 133, 48, 66, 7, 196, 104, 243, 69, 72,
-			20, 0, 8, 197, 25, 85, 19, 20, 192, 20, 0, 9, 198, 52, 148, 211, 80, 19, 132, 65, 9, 198, 64, 193, 84, 80, 84, 128, 20, 9,
-			198, 44, 193, 84, 80, 84, 128, 20, 9, 198, 44, 192, 68, 16, 84, 128, 20, 9, 198, 8, 192, 68, 16, 84, 128, 20, 15, 70, 81, 113,
-			65, 44, 84, 128, 47, 85, 37, 49, 13, 34, 0, 7, 194, 61, 0, 9, 76, 28, 0, 20, 71, 36, 225, 197, 56, 145, 85, 72, 108, 50,
-			88, 57, 13, 50, 57, 6, 121, 34, 0, 10, 199, 44, 241, 75, 20, 195, 197, 72, 20, 0, 0, 19, 1, 64, 9, 6, 115, 48, 13, 50,
-			89, 47, 4, 115, 34, 47, 38, 13, 9, 0, 6, 65, 64, 48, 119, 0, 0, 14, 70, 12, 128, 78, 76, 243, 128, 91, 117, 89, 6, 118,
-			0, 9, 198, 28, 83, 79, 28, 83, 128, 72, 0, 12, 201, 76, 50, 1, 72, 210, 78, 44, 83, 0, 20, 0, 13, 68, 104, 244, 1, 76,
-			88, 122, 48, 6, 116, 89, 0, 0, 6, 65, 68, 49, 109, 0, 0, 0, 17, 8, 3, 18, 195, 168, 3, 8, 5, 19, 49, 34, 111, 91,
-			13, 89, 0, 0, 0, 8, 197, 104, 241, 68, 20, 192, 20, 8, 197, 92, 147, 80, 20, 192, 20, 8, 197, 72, 241, 4, 20, 192, 20, 8,
-			197, 64, 241, 68, 20, 192, 20, 8, 197, 64, 147, 80, 20, 192, 20, 14, 69, 64, 17, 4, 20, 192, 48, 111, 72, 13, 55, 0, 20, 8,
-			197, 16, 243, 80, 20, 192, 20, 8, 197, 72, 241, 68, 20, 192, 20, 8, 197, 52, 145, 4, 20, 192, 20, 8, 197, 8, 241, 68, 20, 192,
-			20, 6, 65, 72, 111, 34, 0, 0, 16, 70, 12, 245, 82, 21, 84, 128, 49, 40, 12, 34, 6, 121, 34, 0, 0, 18, 71, 4, 53, 9,
-			21, 5, 78, 80, 116, 49, 89, 37, 48, 110, 50, 47, 0, 8, 67, 80, 129, 64, 86, 13, 0, 0, 6, 195, 76, 17, 197, 20, 7, 196,
-			29, 32, 71, 20, 20, 0, 8, 197, 44, 145, 84, 20, 192, 20, 8, 197, 12, 146, 134, 21, 32, 20, 6, 65, 76, 111, 89, 0, 0, 9,
-			198, 77, 0, 82, 80, 83, 0, 20, 8, 197, 77, 0, 84, 20, 192, 20, 0, 9, 198, 56, 19, 1, 80, 145, 197, 66, 0, 0, 8, 197,
-			24, 195, 210, 21, 64, 66, 6, 65, 80, 47, 119, 0, 0, 9, 198, 56, 19, 1, 80, 145, 192, 66, 0, 16, 70, 52, 20, 85, 21, 69,
-			5, 65, 115, 49, 6, 111, 47, 13, 0, 16, 70, 12, 244, 85, 21, 69, 5, 49, 122, 49, 6, 111, 47, 13, 0, 0, 0, 6, 65, 84,
-			2, 109, 0, 0, 9, 198, 45, 114, 78, 80, 85, 0, 66, 7, 66, 85, 0, 21, 0, 10, 0, 0, 9, 198, 105, 113, 78, 16, 83, 0,
-			20, 9, 198, 64, 20, 129, 8, 83, 0, 20, 0, 6, 65, 88, 83, 119, 0, 0, 9, 198, 8, 18, 143, 56, 85, 0, 67, 0, 0, 7,
-			196, 92, 17, 133, 48, 20, 9, 198, 28, 145, 67, 32, 83, 0, 20, 7, 196, 24, 16, 133, 48, 20, 7, 196, 56, 240, 133, 48, 20, 7,
-			196, 48, 144, 133, 48, 66, 0, 8, 197, 32, 84, 141, 4, 224, 65, 8, 197, 4, 212, 212, 20, 192, 20, 8, 197, 92, 144, 200, 20, 192,
-			20, 8, 197, 72, 240, 200, 20, 192, 20, 8, 197, 44, 149, 20, 20, 192, 20, 8, 197, 8, 245, 20, 20, 192, 20, 12, 1, 92, 71, 6,
-			111, 49, 89, 55, 111, 91, 0, 6, 65, 92, 84, 119, 0, 0, 0, 0, 0, 7, 65, 96, 108, 49, 89, 0, 0, 15, 70, 40, 16, 209,
-			84, 85, 0, 90, 35, 49, 6, 111, 47, 0, 0, 10, 199, 76, 50, 18, 60, 212, 5, 48, 20, 18, 71, 12, 20, 146, 61, 84, 197, 48,
-			49, 115, 34, 40, 89, 6, 111, 55, 0, 0, 7, 196, 76, 240, 133, 72, 20, 9, 198, 76, 50, 15, 84, 65, 82, 20, 9, 68, 77, 1,
-			65, 44, 21, 0, 10, 9, 68, 37, 65, 77, 76, 21, 0, 10, 0, 12, 69, 5, 35, 65, 56, 64, 21, 102, 114, 0, 10, 5, 65, 100,
-			123, 0, 0, 0, 0, 11, 200, 28, 81, 146, 37, 69, 85, 72, 64, 67, 0, 8, 197, 80, 147, 148, 20, 192, 20, 8, 197, 52, 19, 148,
-			20, 192, 20, 8, 197, 32, 244, 212, 20, 192, 20, 8, 197, 104, 245, 68, 20, 224, 72, 8, 197, 32, 17, 4, 20, 224, 72, 7, 65, 104,
-			88, 111, 47, 0, 0, 0, 7, 195, 92, 20, 192, 72, 9, 0, 0, 8, 197, 88, 243, 132, 20, 192, 20, 8, 197, 88, 83, 132, 20, 192,
-			20, 8, 197, 81, 85, 20, 20, 192, 20, 8, 197, 80, 85, 84, 20, 192, 20, 8, 197, 56, 85, 84, 20, 192, 20, 8, 197, 44, 16, 200,
-			20, 192, 20, 8, 197, 32, 19, 132, 20, 192, 20, 8, 197, 8, 240, 200, 20, 192, 20, 8, 197, 28, 243, 132, 20, 192, 20, 8, 197, 52,
-			20, 141, 61, 64, 66, 8, 197, 76, 244, 130, 21, 64, 66, 0, 14, 70, 28, 245, 65, 12, 129, 64, 100, 40, 6, 116, 91, 0, 0, 9,
-			198, 56, 17, 5, 48, 145, 197, 66, 0, 0, 13, 69, 52, 148, 211, 21, 32, 65, 108, 89, 13, 34, 0, 8, 197, 76, 84, 150, 21, 64,
-			66, 8, 195, 16, 243, 210, 9, 76, 28, 0, 9, 198, 56, 17, 5, 48, 145, 192, 66, 9, 198, 52, 148, 211, 48, 17, 192, 65, 0, 0,
-			0, 0, 0, 20, 71, 72, 84, 197, 73, 99, 201, 72, 34, 119, 88, 111, 34, 84, 58, 6, 115, 34, 0, 0, 9, 198, 44, 229, 80, 64,
-			83, 0, 20, 9, 198, 29, 33, 80, 64, 83, 0, 20, 0, 0, 0, 0, 9, 198, 105, 114, 74, 52, 83, 0, 20, 7, 196, 80, 17, 133,
-			48, 20, 0, 8, 197, 64, 145, 80, 20, 192, 20, 8, 197, 44, 241, 80, 20, 192, 20, 8, 197, 76, 241, 80, 20, 192, 20, 8, 197, 49,
-			85, 20, 20, 192, 20, 6, 195, 60, 33, 82, 20, 0, 0, 0, 9, 198, 56, 245, 133, 52, 33, 82, 66, 9, 198, 16, 80, 197, 52, 33,
-			82, 66, 7, 196, 8, 81, 5, 48, 20, 0, 23, 73, 4, 48, 197, 77, 51, 201, 72, 84, 192, 35, 49, 89, 111, 89, 58, 6, 35, 34,
-			13, 89, 0, 11, 70, 4, 148, 140, 36, 225, 83, 21, 0, 10, 0, 9, 198, 52, 20, 137, 60, 225, 84, 68, 0, 0, 7, 196, 21, 33,
-			197, 72, 20, 0, 9, 3, 13, 39, 14, 65, 13, 50, 0, 0, 0, 0, 7, 196, 28, 17, 5, 72, 20, 0, 0, 9, 198, 105, 112, 67,
-			33, 65, 76, 20, 0, 0, 11, 68, 52, 148, 211, 20, 65, 108, 89, 13, 0, 0, 8, 197, 76, 18, 203, 21, 32, 20, 0, 9, 198, 44,
-			242, 197, 81, 65, 64, 66, 0, 0, 0, 8, 197, 33, 83, 139, 21, 32, 20, 0, 5, 194, 8, 80, 17, 0, 39, 79, 60, 225, 5, 72,
-			128, 78, 16, 83, 9, 56, 116, 206, 61, 64, 64, 4, 39, 50, 72, 13, 34, 6, 107, 116, 50, 72, 13, 55, 108, 68, 89, 4, 50, 122,
-			47, 115, 0, 0, 7, 196, 20, 225, 5, 72, 20, 0, 0, 0, 7, 195, 16, 21, 0, 72, 8, 6, 195, 16, 21, 0, 72, 0, 12, 67,
-			8, 82, 1, 71, 119, 10, 107, 6, 115, 0, 0, 8, 197, 49, 144, 197, 84, 208, 20, 0, 9, 198, 40, 19, 149, 5, 34, 64, 67, 9,
-			198, 76, 50, 15, 24, 97, 76, 20, 0, 12, 201, 65, 35, 202, 20, 53, 9, 20, 193, 78, 67, 0, 9, 198, 5, 3, 211, 80, 83, 0,
-			20, 7, 196, 36, 161, 5, 48, 20, 0, 0, 9, 198, 44, 192, 82, 36, 225, 84, 67, 0, 0, 7, 196, 72, 241, 5, 48, 20, 7, 196,
-			40, 241, 5, 48, 20, 9, 198, 36, 224, 149, 72, 113, 82, 20, 7, 196, 28, 82, 1, 16, 72, 0, 0, 9, 198, 64, 21, 18, 36, 245,
-			0, 67, 17, 70, 64, 148, 212, 60, 193, 84, 48, 37, 89, 47, 122, 55, 6, 111, 0, 0, 0, 9, 198, 92, 81, 9, 41, 97, 82, 20,
-			9, 198, 28, 83, 79, 20, 65, 82, 20, 7, 196, 60, 81, 133, 56, 20, 0, 0, 0, 0, 7, 196, 44, 17, 5, 72, 20, 7, 196, 20,
-			97, 133, 56, 20, 0, 14, 69, 52, 85, 5, 20, 224, 65, 111, 47, 6, 119, 50, 0, 8, 197, 53, 83, 77, 20, 192, 20, 0, 9, 198,
-			76, 210, 69, 77, 1, 76, 20, 0, 0, 0, 8, 197, 81, 82, 77, 20, 192, 20, 8, 197, 72, 146, 141, 20, 192, 20, 8, 197, 17, 82,
-			77, 20, 192, 20, 8, 197, 8, 19, 139, 21, 64, 66, 8, 197, 64, 147, 131, 21, 64, 66, 8, 197, 92, 147, 4, 21, 32, 20, 8, 197,
-			44, 243, 4, 21, 32, 20, 8, 197, 44, 145, 80, 21, 32, 20, 8, 197, 32, 83, 4, 21, 32, 20, 8, 197, 16, 245, 20, 21, 32, 20,
-			0, 13, 70, 48, 148, 197, 81, 65, 64, 21, 102, 114, 0, 10, 0, 0, 0, 22, 73, 77, 81, 134, 72, 17, 197, 81, 65, 64, 89, 109,
-			83, 34, 115, 90, 6, 111, 47, 13, 0, 8, 197, 12, 244, 147, 21, 64, 66, 8, 197, 80, 83, 80, 21, 32, 20, 8, 197, 48, 241, 4,
-			21, 32, 20, 8, 197, 24, 147, 20, 21, 32, 20, 8, 197, 8, 17, 4, 21, 32, 20, 0, 0, 0, 7, 196, 60, 225, 5, 72, 20, 7,
-			196, 4, 225, 5, 72, 20, 0, 0, 0, 14, 67, 20, 230, 128, 111, 50, 88, 122, 84, 122, 34, 47, 0, 0, 9, 198, 105, 113, 78, 28,
-			83, 0, 20, 9, 198, 45, 112, 78, 76, 83, 0, 20, 9, 198, 9, 32, 66, 8, 83, 0, 20, 9, 198, 45, 33, 85, 64, 83, 0, 20,
-			7, 196, 80, 81, 5, 72, 20, 7, 196, 56, 81, 5, 72, 20, 7, 196, 56, 17, 5, 72, 20, 7, 196, 48, 81, 5, 72, 20, 0, 0,
-			0, 0, 7, 196, 72, 17, 133, 48, 20, 9, 198, 28, 226, 70, 24, 83, 0, 20, 9, 198, 21, 2, 83, 80, 83, 0, 20, 7, 196, 40,
-			241, 133, 48, 20, 0, 16, 205, 4, 50, 20, 21, 34, 204, 20, 147, 139, 36, 225, 5, 72, 20, 0, 0, 0, 7, 196, 104, 17, 5, 48,
-			20, 9, 198, 76, 193, 67, 33, 65, 82, 20, 7, 196, 60, 209, 1, 80, 8, 0, 0, 21, 7, 19, 13, 19, 39, 10, 5, 19, 111, 89,
-			111, 65, 6, 111, 89, 10, 57, 13, 89, 0, 0, 0, 7, 196, 81, 82, 69, 72, 20, 7, 196, 49, 82, 69, 72, 20, 0, 8, 197, 65,
-			33, 86, 20, 192, 20, 8, 197, 93, 33, 86, 20, 192, 20, 8, 197, 76, 163, 198, 20, 192, 20, 0, 9, 198, 76, 50, 9, 52, 209, 76,
-			20, 0, 0, 12, 68, 56, 17, 148, 4, 50, 116, 83, 47, 115, 0, 0, 8, 197, 72, 241, 70, 20, 192, 20, 8, 197, 32, 82, 66, 20,
-			192, 20, 8, 197, 16, 241, 90, 20, 192, 20, 0, 9, 198, 76, 50, 15, 52, 209, 76, 20, 7, 66, 21, 32, 13, 34, 0, 0, 6, 195,
-			105, 83, 20, 72, 7, 195, 16, 145, 64, 72, 28, 0, 0, 8, 197, 76, 86, 20, 21, 64, 66, 8, 197, 104, 243, 132, 21, 32, 20, 8,
-			197, 73, 82, 84, 21, 32, 20, 8, 197, 64, 85, 84, 21, 32, 20, 8, 197, 52, 147, 132, 21, 32, 20, 8, 197, 16, 242, 212, 21, 32,
-			20, 10, 197, 104, 243, 132, 21, 32, 9, 76, 8, 0, 0, 0, 9, 67, 36, 225, 197, 108, 68, 13, 0, 11, 200, 76, 241, 5, 52, 145,
-			84, 21, 32, 20, 0, 8, 197, 76, 84, 20, 21, 64, 66, 15, 69, 80, 242, 76, 21, 64, 47, 85, 116, 55, 6, 111, 47, 0, 8, 197,
-			60, 209, 76, 21, 64, 67, 8, 197, 92, 146, 132, 21, 32, 20, 8, 197, 48, 20, 212, 21, 32, 20, 8, 197, 28, 148, 212, 21, 32, 20,
-			0, 7, 66, 16, 80, 72, 13, 0, 0, 0, 11, 68, 32, 83, 137, 56, 21, 102, 114, 0, 10, 7, 196, 104, 245, 133, 72, 8, 0, 6,
-			195, 32, 16, 82, 72, 0, 0, 19, 71, 64, 148, 143, 84, 85, 20, 20, 48, 37, 16, 40, 85, 6, 111, 47, 13, 0, 10, 199, 21, 53,
-			1, 24, 85, 20, 20, 67, 0, 7, 196, 72, 17, 5, 72, 20, 7, 196, 60, 97, 133, 72, 20, 13, 4, 95, 4, 16, 20, 10, 49, 6,
-			113, 65, 115, 0, 0, 0, 26, 74, 84, 197, 18, 5, 98, 79, 48, 85, 20, 20, 110, 55, 47, 34, 115, 84, 37, 122, 55, 6, 111, 47,
-			13, 0, 0, 0, 12, 68, 8, 83, 7, 4, 71, 111, 55, 100, 115, 0, 7, 196, 76, 18, 133, 80, 66, 0, 0, 0, 0, 7, 196, 45,
-			82, 197, 48, 20, 7, 196, 44, 17, 5, 80, 66, 7, 196, 12, 17, 5, 80, 66, 8, 67, 80, 147, 69, 21, 0, 10, 9, 68, 13, 32,
-			83, 32, 21, 0, 10, 8, 196, 56, 17, 1, 80, 74, 8, 6, 195, 88, 211, 65, 17, 0, 0, 22, 66, 4, 192, 116, 55, 9, 49, 6,
-			116, 57, 72, 116, 0, 44, 81, 113, 97, 101, 100, 97, 32, 9, 198, 53, 50, 210, 4, 19, 64, 65, 0, 0, 12, 68, 92, 19, 133, 56,
-			85, 115, 50, 13, 50, 0, 13, 4, 95, 20, 12, 4, 47, 6, 108, 55, 72, 13, 0, 0, 13, 69, 52, 241, 83, 20, 192, 65, 40, 88,
-			13, 55, 0, 8, 197, 104, 16, 130, 20, 192, 20, 8, 197, 81, 83, 142, 20, 192, 20, 8, 197, 64, 85, 90, 20, 192, 20, 8, 197, 28,
-			146, 154, 20, 192, 20, 8, 197, 17, 82, 86, 20, 192, 20, 8, 197, 8, 240, 130, 20, 192, 20, 8, 197, 8, 16, 130, 20, 192, 20, 8,
-			197, 52, 244, 154, 20, 192, 20, 8, 197, 37, 48, 66, 20, 192, 67, 0, 9, 198, 44, 192, 85, 80, 84, 128, 20, 0, 10, 198, 48, 147,
-			143, 48, 85, 77, 20, 66, 0, 0, 8, 197, 105, 112, 86, 20, 192, 20, 8, 197, 44, 244, 146, 20, 192, 20, 8, 197, 8, 244, 146, 20,
-			192, 20, 8, 197, 8, 20, 146, 20, 192, 20, 8, 197, 49, 82, 70, 20, 192, 20, 8, 197, 44, 84, 150, 20, 192, 20, 8, 197, 44, 83,
-			142, 20, 192, 20, 0, 9, 198, 81, 34, 65, 56, 113, 76, 20, 0, 0, 11, 200, 92, 19, 140, 84, 145, 5, 56, 64, 66, 0, 14, 69,
-			64, 240, 200, 21, 64, 48, 113, 91, 6, 111, 47, 0, 10, 69, 64, 192, 89, 21, 32, 21, 0, 10, 0, 0, 0, 7, 196, 76, 147, 132,
-			76, 8, 0, 15, 69, 72, 81, 204, 21, 64, 34, 119, 100, 55, 6, 111, 47, 0, 8, 197, 92, 16, 73, 21, 32, 20, 8, 197, 48, 19,
-			77, 21, 32, 20, 0, 0, 0, 7, 196, 45, 82, 69, 72, 20, 0, 0, 11, 70, 4, 225, 18, 60, 145, 0, 21, 0, 10, 0, 18, 71,
-			21, 66, 81, 84, 85, 20, 20, 119, 47, 37, 49, 6, 111, 47, 13, 0, 0, 22, 72, 52, 147, 137, 77, 65, 82, 36, 80, 65, 37, 50,
-			108, 89, 47, 6, 108, 12, 34, 37, 0, 9, 198, 9, 37, 83, 76, 83, 0, 20, 9, 198, 45, 112, 75, 44, 83, 0, 20, 9, 198, 29,
-			34, 69, 104, 83, 0, 20, 0, 8, 197, 52, 22, 9, 52, 16, 65, 0, 10, 66, 21, 80, 119, 10, 109, 12, 0, 17, 0, 0, 9, 198,
-			77, 66, 69, 24, 83, 0, 20, 9, 198, 45, 34, 69, 8, 83, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 68, 56, 16, 137,
-			40, 50, 35, 71, 6, 123, 0, 0, 8, 197, 44, 227, 203, 20, 192, 20, 8, 197, 29, 37, 87, 20, 192, 20, 8, 197, 32, 80, 130, 20,
-			224, 72, 0, 9, 198, 88, 195, 212, 80, 84, 128, 20, 9, 198, 76, 227, 212, 80, 84, 128, 20, 9, 198, 76, 177, 76, 80, 84, 128, 20,
-			9, 198, 76, 50, 5, 52, 84, 128, 20, 9, 198, 24, 195, 212, 80, 84, 128, 20, 9, 198, 24, 195, 196, 16, 84, 128, 20, 9, 198, 9,
-			35, 197, 16, 84, 128, 20, 0, 0, 11, 68, 4, 195, 5, 76, 116, 55, 13, 89, 0, 13, 68, 4, 193, 21, 76, 116, 55, 72, 6, 110,
-			89, 0, 0, 8, 197, 44, 20, 19, 20, 192, 20, 8, 197, 33, 84, 211, 20, 192, 20, 8, 197, 45, 83, 142, 20, 224, 72, 0, 9, 198,
-			60, 181, 15, 8, 84, 128, 66, 9, 198, 77, 66, 74, 25, 49, 76, 20, 9, 198, 88, 194, 69, 28, 84, 128, 20, 9, 198, 77, 2, 74,
-			44, 84, 128, 20, 9, 198, 76, 195, 197, 8, 84, 128, 20, 9, 198, 52, 243, 147, 80, 84, 128, 20, 9, 198, 52, 81, 82, 16, 84, 128,
-			20, 9, 198, 52, 80, 78, 16, 84, 128, 20, 9, 198, 44, 226, 75, 44, 84, 128, 20, 9, 198, 24, 194, 75, 44, 84, 128, 20, 9, 198,
-			8, 194, 75, 44, 84, 128, 20, 9, 198, 8, 81, 78, 16, 84, 128, 20, 0, 0, 0, 8, 197, 76, 197, 73, 21, 32, 20, 8, 197, 52,
-			146, 141, 21, 32, 20, 8, 197, 44, 241, 84, 21, 32, 20, 0, 0, 0, 0, 0, 11, 70, 72, 84, 197, 5, 32, 200, 21, 0, 10, 0,
-			0, 7, 196, 92, 147, 4, 20, 72, 0, 8, 197, 61, 3, 1, 28, 80, 20, 6, 195, 16, 149, 0, 72, 0, 9, 198, 17, 112, 82, 72,
-			83, 0, 20, 11, 70, 52, 81, 9, 12, 19, 0, 21, 0, 10, 0, 18, 71, 76, 245, 66, 72, 85, 20, 20, 89, 40, 71, 34, 6, 111,
-			47, 13, 0, 10, 199, 52, 18, 143, 72, 85, 20, 20, 67, 16, 71, 12, 245, 67, 32, 85, 20, 20, 49, 40, 91, 6, 111, 47, 0, 9,
-			67, 32, 146, 128, 107, 2, 123, 0, 0, 9, 198, 76, 50, 1, 88, 245, 0, 66, 16, 70, 12, 245, 80, 48, 85, 0, 49, 40, 48, 55,
-			6, 111, 47, 0, 16, 70, 52, 19, 131, 32, 85, 0, 65, 116, 50, 91, 6, 111, 47, 0, 15, 70, 13, 35, 195, 32, 85, 0, 49, 34,
-			113, 91, 6, 111, 0, 0, 0, 9, 198, 77, 68, 149, 36, 177, 76, 20, 0, 0, 0, 0, 0, 11, 199, 64, 85, 18, 60, 193, 85, 52,
-			20, 66, 7, 195, 8, 83, 128, 72, 9, 0, 0, 0, 0, 0, 9, 198, 8, 83, 5, 52, 209, 82, 20, 0, 8, 197, 56, 21, 143, 20,
-			192, 66, 8, 197, 80, 147, 135, 20, 192, 20, 8, 197, 52, 84, 135, 20, 192, 20, 8, 197, 44, 243, 139, 20, 192, 20, 8, 197, 28, 244,
-			135, 20, 192, 20, 8, 197, 52, 242, 203, 20, 192, 20, 11, 70, 76, 241, 148, 92, 20, 133, 21, 0, 10, 0, 9, 198, 105, 112, 66, 8,
-			84, 128, 20, 9, 198, 77, 5, 84, 80, 84, 128, 20, 9, 198, 77, 1, 84, 80, 84, 128, 20, 9, 198, 44, 82, 76, 16, 84, 128, 20,
-			0, 12, 201, 92, 19, 148, 72, 245, 87, 20, 225, 0, 66, 0, 0, 13, 69, 52, 148, 211, 20, 224, 65, 108, 89, 13, 50, 0, 8, 197,
-			92, 146, 203, 20, 192, 20, 8, 197, 80, 242, 203, 20, 192, 20, 13, 69, 80, 16, 203, 20, 192, 47, 111, 49, 13, 55, 0, 8, 197, 16,
-			145, 199, 20, 192, 20, 8, 197, 44, 225, 75, 20, 192, 20, 0, 9, 198, 105, 112, 75, 44, 84, 128, 20, 9, 198, 49, 82, 83, 80, 84,
-			128, 20, 9, 198, 32, 241, 78, 16, 84, 128, 20, 9, 198, 24, 192, 75, 44, 84, 128, 20, 9, 198, 17, 82, 83, 80, 84, 128, 20, 9,
-			198, 12, 245, 78, 80, 84, 128, 20, 0, 7, 195, 8, 83, 148, 72, 9, 0, 0, 0, 0, 10, 199, 92, 146, 201, 64, 81, 9, 4, 67,
-			0, 0, 9, 198, 104, 241, 15, 20, 225, 5, 66, 0, 7, 66, 28, 80, 81, 13, 0, 0, 0, 0, 16, 69, 16, 19, 137, 12, 16, 72,
-			35, 50, 6, 37, 47, 89, 35, 0, 0, 9, 198, 76, 224, 66, 8, 83, 0, 20, 9, 198, 76, 163, 197, 52, 83, 0, 20, 9, 198, 44,
-			224, 66, 8, 83, 0, 20, 9, 198, 29, 32, 66, 8, 83, 0, 20, 9, 198, 28, 243, 195, 32, 83, 0, 20, 9, 198, 17, 33, 85, 80,
-			83, 0, 20, 0, 0, 12, 68, 8, 83, 137, 28, 71, 119, 50, 13, 100, 0, 0, 0, 9, 198, 77, 65, 67, 32, 83, 0, 20, 9, 198,
-			44, 226, 66, 8, 83, 0, 20, 9, 198, 25, 35, 205, 52, 83, 0, 20, 9, 198, 76, 50, 5, 16, 83, 0, 20, 0, 0, 7, 196, 56,
-			243, 133, 80, 66, 10, 198, 28, 85, 197, 21, 53, 0, 72, 9, 0, 0, 16, 70, 76, 147, 8, 61, 81, 84, 89, 37, 55, 40, 6, 111,
-			47, 0, 0, 0, 7, 196, 64, 19, 5, 80, 66, 0, 15, 69, 16, 149, 133, 73, 48, 72, 37, 84, 6, 111, 34, 89, 0, 0, 9, 198,
-			44, 84, 147, 80, 83, 128, 20, 0, 10, 199, 76, 50, 14, 4, 32, 133, 48, 20, 0, 0, 14, 69, 8, 83, 129, 72, 64, 71, 13, 50,
-			116, 34, 47, 0, 8, 197, 32, 241, 80, 20, 192, 20, 8, 197, 8, 82, 84, 20, 192, 20, 14, 69, 9, 33, 84, 20, 192, 71, 34, 13,
-			47, 111, 55, 0, 0, 9, 198, 76, 50, 21, 36, 97, 76, 20, 0, 0, 15, 70, 48, 21, 82, 20, 229, 0, 55, 122, 34, 6, 116, 67,
-			0, 7, 196, 44, 84, 5, 72, 20, 13, 3, 95, 49, 15, 6, 108, 12, 34, 89, 47, 13, 0, 0, 8, 197, 80, 148, 16, 20, 192, 20,
-			8, 197, 80, 83, 80, 20, 192, 20, 8, 197, 72, 147, 80, 20, 192, 20, 8, 197, 48, 148, 208, 20, 192, 20, 8, 197, 32, 243, 80, 20,
-			192, 20, 8, 197, 24, 145, 68, 20, 192, 20, 8, 197, 76, 147, 80, 20, 192, 20, 0, 17, 70, 76, 52, 129, 8, 33, 76, 89, 49, 34,
-			111, 71, 13, 55, 0, 20, 6, 195, 48, 17, 197, 20, 6, 195, 57, 97, 1, 17, 0, 14, 139, 9, 14, 7, 18, 5, 4, 9, 195, 171,
-			14, 20, 68, 16, 3, 226, 130, 172, 6, 121, 16, 122, 47, 4, 119, 49, 13, 50, 0, 0, 0, 9, 198, 16, 148, 203, 21, 69, 5, 66,
-			9, 198, 12, 20, 211, 21, 69, 5, 66, 8, 197, 8, 147, 10, 21, 64, 66, 8, 197, 105, 82, 86, 21, 32, 20, 8, 197, 49, 80, 130,
-			21, 32, 20, 8, 197, 48, 80, 130, 21, 32, 20, 8, 197, 33, 82, 86, 21, 32, 20, 8, 197, 8, 144, 130, 21, 32, 20, 11, 70, 32,
-			243, 69, 64, 17, 197, 21, 0, 10, 0, 12, 67, 64, 17, 197, 21, 0, 10, 81, 117, 112, 32, 14, 67, 64, 17, 197, 21, 0, 10, 81,
-			100, 111, 119, 110, 32, 0, 19, 71, 13, 84, 133, 81, 64, 71, 20, 49, 109, 34, 13, 47, 6, 115, 90, 13, 0, 0, 12, 3, 95, 50,
-			15, 47, 85, 6, 119, 72, 13, 0, 0, 0, 0, 0, 13, 68, 8, 83, 137, 56, 71, 119, 50, 6, 37, 50, 0, 9, 198, 12, 16, 137,
-			56, 85, 0, 67, 0, 10, 67, 32, 85, 0, 107, 13, 47, 0, 9, 0, 9, 198, 45, 35, 197, 104, 83, 0, 20, 9, 198, 44, 194, 78,
-			28, 83, 0, 20, 0, 16, 70, 24, 16, 197, 8, 243, 203, 83, 111, 37, 89, 71, 40, 49, 0, 10, 199, 76, 84, 20, 20, 208, 133, 72,
-			66, 0, 9, 198, 44, 16, 137, 56, 85, 0, 67, 7, 196, 92, 20, 5, 56, 20, 12, 3, 95, 51, 15, 72, 6, 111, 34, 72, 13, 0,
-			9, 4, 95, 15, 18, 4, 72, 13, 0, 0, 8, 197, 4, 113, 78, 16, 16, 66, 8, 197, 36, 230, 129, 28, 80, 20, 0, 9, 198, 17,
-			35, 208, 64, 83, 0, 20, 9, 198, 77, 67, 208, 64, 83, 0, 20, 6, 194, 37, 48, 72, 9, 0, 0, 7, 196, 64, 20, 133, 48, 20,
-			0, 0, 0, 0, 7, 196, 56, 20, 5, 48, 20, 7, 196, 64, 244, 5, 48, 20, 7, 196, 48, 84, 5, 48, 20, 7, 196, 64, 148, 5,
-			80, 66, 12, 68, 28, 147, 5, 80, 90, 37, 55, 6, 111, 0, 12, 68, 24, 147, 5, 80, 83, 37, 55, 6, 119, 0, 9, 198, 76, 50,
-			9, 48, 65, 82, 20, 0, 0, 0, 0, 0, 8, 197, 64, 83, 132, 20, 192, 20, 8, 197, 56, 16, 200, 20, 192, 20, 8, 197, 9, 82,
-			84, 20, 192, 20, 8, 197, 32, 83, 132, 20, 192, 20, 8, 197, 92, 147, 4, 20, 224, 72, 0, 9, 198, 77, 68, 149, 8, 33, 76, 20,
-			9, 198, 76, 195, 196, 16, 84, 128, 20, 9, 198, 44, 195, 196, 16, 84, 128, 20, 0, 0, 7, 196, 44, 20, 5, 72, 20, 12, 3, 95,
-			53, 15, 84, 6, 123, 84, 72, 13, 0, 0, 8, 197, 92, 83, 148, 20, 192, 20, 8, 197, 80, 244, 148, 20, 192, 20, 8, 197, 44, 20,
-			148, 20, 192, 20, 8, 197, 32, 20, 208, 20, 192, 20, 8, 197, 16, 20, 148, 20, 192, 20, 8, 197, 52, 244, 148, 20, 192, 20, 8, 197,
-			9, 82, 68, 20, 192, 20, 8, 197, 105, 83, 12, 20, 224, 72, 0, 15, 4, 95, 13, 3, 14, 65, 6, 116, 49, 14, 16, 113, 50, 0,
-			0, 8, 67, 56, 85, 192, 50, 127, 0, 0, 0, 17, 70, 4, 226, 83, 21, 69, 5, 115, 50, 37, 88, 6, 111, 47, 13, 0, 14, 69,
-			88, 145, 206, 21, 64, 84, 108, 67, 6, 111, 47, 0, 8, 197, 92, 241, 75, 21, 32, 20, 0, 0, 0, 12, 3, 95, 54, 15, 88, 6,
-			111, 89, 72, 13, 0, 0, 13, 69, 36, 225, 205, 5, 32, 108, 68, 65, 116, 34, 0, 8, 197, 12, 244, 150, 21, 64, 66, 8, 197, 76,
-			243, 142, 21, 64, 66, 8, 197, 64, 82, 71, 21, 32, 20, 8, 197, 40, 241, 75, 21, 32, 20, 0, 0, 0, 7, 196, 92, 244, 132, 80,
-			72, 0, 0, 16, 70, 73, 80, 146, 36, 82, 192, 34, 109, 71, 34, 6, 37, 49, 0, 9, 198, 44, 227, 203, 44, 83, 0, 20, 0, 19,
-			71, 92, 83, 9, 77, 112, 65, 72, 85, 111, 55, 108, 89, 58, 6, 115, 34, 0, 0, 13, 68, 8, 84, 137, 28, 71, 108, 12, 34, 13,
-			100, 0, 7, 196, 32, 20, 5, 72, 20, 7, 196, 44, 85, 5, 56, 20, 14, 3, 95, 55, 15, 88, 6, 119, 84, 13, 50, 72, 13, 0,
-			0, 8, 197, 41, 83, 12, 36, 80, 72, 8, 197, 41, 83, 12, 36, 80, 72, 0, 0, 0, 7, 196, 44, 21, 133, 48, 20, 0, 0, 0,
-			11, 199, 72, 81, 5, 44, 21, 133, 48, 20, 65, 0, 7, 196, 104, 85, 5, 48, 20, 7, 196, 44, 85, 5, 48, 20, 9, 68, 64, 21,
-			3, 32, 21, 0, 10, 0, 0, 9, 198, 12, 244, 147, 20, 193, 84, 67, 6, 194, 20, 224, 72, 8, 0, 13, 3, 95, 51, 88, 72, 6,
-			111, 34, 47, 13, 101, 0, 0, 7, 196, 104, 85, 133, 72, 20, 7, 196, 48, 85, 133, 72, 20, 7, 196, 16, 21, 133, 72, 20, 9, 68,
-			76, 149, 5, 76, 21, 0, 10, 14, 3, 95, 48, 67, 107, 6, 113, 50, 72, 111, 34, 47, 0, 0, 8, 197, 52, 243, 77, 20, 192, 20,
-			8, 197, 44, 243, 132, 20, 224, 72, 0, 0, 0, 21, 72, 60, 225, 193, 77, 69, 146, 36, 160, 113, 50, 100, 116, 89, 47, 84, 34, 6,
-			123, 0, 7, 196, 92, 21, 5, 72, 20, 7, 196, 104, 85, 5, 56, 20, 0, 8, 197, 64, 145, 77, 20, 192, 20, 0, 0, 17, 71, 72,
-			240, 200, 20, 99, 210, 80, 34, 39, 91, 6, 83, 39, 34, 0, 10, 199, 44, 19, 5, 24, 21, 5, 72, 20, 0, 0, 8, 197, 53, 84,
-			203, 21, 64, 66, 8, 197, 8, 241, 75, 21, 64, 66, 8, 197, 44, 144, 203, 21, 32, 20, 0, 9, 198, 53, 84, 197, 81, 65, 64, 66,
-			0, 0, 0, 21, 73, 52, 18, 83, 60, 227, 133, 81, 65, 64, 65, 111, 88, 113, 50, 6, 111, 47, 13, 0, 8, 197, 92, 18, 203, 21,
-			32, 20, 8, 197, 52, 82, 203, 21, 32, 20, 0, 7, 66, 40, 80, 57, 13, 0, 15, 3, 95, 49, 57, 50, 6, 119, 100, 13, 50, 47,
-			37, 50, 0, 0, 12, 3, 95, 49, 56, 6, 116, 101, 47, 37, 50, 0, 0, 14, 68, 8, 84, 137, 56, 71, 108, 12, 34, 6, 108, 50,
-			0, 7, 196, 80, 245, 133, 72, 20, 7, 196, 44, 21, 133, 72, 20, 7, 196, 20, 229, 5, 72, 20, 0, 0, 9, 198, 81, 33, 85, 104,
-			83, 0, 20, 9, 198, 45, 112, 66, 8, 83, 0, 20, 9, 198, 45, 33, 78, 28, 83, 0, 20, 9, 198, 44, 229, 84, 76, 83, 0, 20,
-			9, 198, 17, 37, 80, 64, 83, 0, 20, 0, 0, 9, 198, 64, 19, 70, 48, 85, 0, 66, 7, 196, 80, 21, 5, 72, 20, 7, 196, 64,
-			84, 5, 72, 20, 7, 196, 44, 244, 5, 72, 20, 7, 196, 8, 85, 5, 72, 20, 0, 0, 9, 198, 81, 114, 74, 24, 83, 0, 20, 9,
-			198, 76, 211, 203, 44, 83, 0, 20, 10, 3, 95, 49, 49, 6, 111, 55, 83, 0, 0, 10, 3, 95, 49, 48, 47, 6, 37, 50, 0, 0,
-			7, 196, 56, 85, 133, 48, 20, 7, 196, 44, 85, 133, 48, 20, 7, 196, 56, 21, 133, 48, 20, 7, 196, 8, 20, 133, 80, 66, 13, 3,
-			95, 49, 51, 72, 6, 111, 34, 47, 37, 50, 0, 0, 12, 3, 95, 49, 50, 47, 85, 6, 115, 55, 83, 0, 0, 13, 3, 95, 49, 53,
-			84, 6, 123, 83, 47, 37, 50, 0, 0, 14, 3, 95, 49, 52, 83, 6, 108, 12, 34, 47, 37, 50, 0, 0, 12, 68, 76, 84, 137, 20,
-			89, 108, 12, 34, 37, 0, 7, 196, 80, 149, 5, 48, 20, 7, 196, 56, 85, 5, 48, 20, 7, 196, 52, 85, 5, 48, 20, 7, 196, 52,
-			245, 5, 80, 66, 7, 196, 104, 241, 1, 80, 66, 12, 3, 95, 52, 15, 84, 6, 37, 34, 72, 13, 0, 15, 3, 95, 49, 55, 88, 6,
-			119, 84, 13, 50, 47, 37, 50, 0, 0, 13, 3, 95, 49, 54, 88, 6, 111, 89, 47, 37, 50, 0, 0, 0, 10, 199, 64, 19, 148, 60,
-			97, 133, 48, 20, 15, 3, 95, 55, 88, 88, 6, 119, 84, 13, 50, 47, 13, 101, 0, 0, 13, 68, 12, 245, 133, 72, 49, 110, 84, 13,
-			34, 0, 20, 8, 196, 92, 20, 133, 56, 72, 9, 0, 0, 0, 0, 7, 196, 8, 245, 5, 72, 20, 0, 8, 197, 104, 245, 133, 20, 192,
-			66, 8, 197, 104, 241, 207, 20, 64, 66, 0, 0, 0, 0, 0, 16, 70, 88, 81, 5, 81, 65, 64, 84, 13, 72, 6, 111, 47, 13, 0,
-			11, 70, 92, 80, 147, 37, 65, 64, 21, 0, 10, 0, 0, 0, 8, 197, 92, 148, 16, 21, 32, 20, 8, 197, 65, 84, 144, 21, 32, 20,
-			8, 197, 52, 244, 16, 21, 32, 20, 0, 0, 0, 13, 68, 60, 213, 133, 72, 122, 65, 84, 6, 111, 34, 0, 9, 198, 44, 243, 80, 48,
-			245, 0, 66, 0, 9, 198, 76, 83, 4, 21, 34, 69, 65, 15, 70, 72, 85, 129, 56, 50, 5, 34, 13, 84, 117, 50, 91, 0, 18, 70,
-			53, 148, 212, 21, 34, 69, 65, 108, 89, 47, 6, 108, 12, 34, 37, 0, 9, 198, 52, 148, 203, 60, 244, 0, 65, 18, 70, 33, 148, 212,
-			21, 34, 69, 107, 108, 89, 47, 108, 12, 34, 6, 37, 0, 0, 9, 198, 76, 50, 15, 80, 83, 0, 20, 0, 10, 199, 77, 84, 16, 61,
-			37, 5, 72, 20, 0, 9, 198, 64, 244, 148, 72, 85, 0, 66, 7, 196, 36, 165, 133, 72, 20, 0, 16, 70, 64, 148, 212, 4, 50, 5,
-			48, 37, 89, 47, 6, 116, 91, 0, 0, 9, 198, 45, 83, 147, 80, 83, 0, 20, 9, 198, 44, 20, 9, 81, 65, 76, 20, 0, 10, 69,
-			48, 20, 20, 61, 0, 21, 0, 10, 14, 3, 95, 50, 88, 47, 85, 6, 108, 50, 47, 13, 101, 0, 0, 7, 196, 32, 85, 133, 48, 20,
-			12, 68, 28, 85, 133, 48, 100, 119, 84, 13, 55, 0, 0, 9, 198, 12, 243, 148, 72, 243, 5, 66, 0, 0, 0, 7, 196, 72, 21, 5,
-			48, 20, 7, 196, 60, 53, 5, 80, 66, 9, 198, 76, 50, 21, 81, 65, 82, 20, 9, 198, 76, 50, 9, 81, 65, 82, 20, 13, 3, 95,
-			56, 15, 6, 116, 101, 47, 89, 47, 13, 0, 0, 0, 0, 0, 7, 196, 48, 22, 133, 72, 20, 9, 198, 28, 194, 78, 77, 65, 82, 20,
-			0, 0, 0, 16, 67, 9, 96, 128, 71, 123, 84, 6, 122, 34, 71, 119, 55, 47, 0, 0, 13, 3, 95, 63, 63, 89, 6, 37, 65, 71,
-			122, 55, 0, 0, 8, 197, 44, 145, 90, 20, 192, 20, 0, 0, 8, 67, 40, 241, 64, 75, 122, 0, 6, 195, 104, 245, 64, 72, 14, 3,
-			95, 52, 88, 83, 6, 108, 12, 34, 47, 13, 101, 0, 0, 0, 15, 69, 76, 177, 76, 21, 64, 89, 49, 13, 55, 6, 111, 47, 0, 8,
-			197, 88, 244, 132, 21, 32, 20, 8, 197, 44, 147, 132, 21, 32, 20, 8, 197, 8, 192, 68, 21, 32, 20, 0, 0, 0, 0, 8, 197, 4,
-			213, 76, 21, 64, 67, 8, 197, 44, 192, 84, 21, 32, 20, 0, 7, 194, 56, 16, 9, 76, 8, 8, 66, 36, 176, 2, 108, 49, 0, 0,
-			7, 195, 44, 210, 64, 17, 42, 13, 3, 95, 53, 88, 84, 6, 123, 83, 47, 13, 101, 0, 0, 7, 196, 104, 241, 18, 4, 66, 0, 0,
-			9, 198, 44, 225, 85, 44, 83, 0, 20, 9, 198, 52, 148, 129, 8, 83, 0, 67, 0, 17, 71, 12, 245, 82, 28, 85, 20, 20, 49, 40,
-			34, 90, 6, 111, 47, 0, 0, 9, 198, 52, 147, 129, 72, 85, 0, 67, 17, 70, 44, 194, 78, 44, 85, 0, 49, 55, 108, 68, 49, 6,
-			111, 47, 0, 11, 70, 21, 132, 12, 60, 149, 0, 21, 0, 10, 0, 7, 195, 52, 16, 82, 72, 8, 0, 9, 198, 105, 114, 69, 8, 83,
-			0, 20, 9, 198, 65, 34, 69, 28, 83, 0, 20, 0, 13, 3, 95, 54, 88, 88, 6, 111, 89, 47, 13, 101, 0, 0, 7, 196, 88, 86,
-			133, 48, 20, 7, 196, 24, 86, 133, 48, 20, 7, 196, 52, 22, 133, 48, 20, 7, 196, 56, 246, 133, 48, 20, 0, 6, 195, 20, 145, 82,
-			20, 0, 0, 11, 70, 92, 80, 147, 37, 65, 83, 21, 0, 10, 0, 7, 196, 36, 166, 133, 48, 20, 9, 198, 76, 50, 5, 81, 65, 82,
-			20, 0, 0, 10, 67, 40, 241, 89, 75, 122, 58, 37, 0, 0, 0, 0, 8, 197, 72, 144, 130, 20, 192, 20, 8, 197, 56, 85, 90, 20,
-			192, 20, 8, 197, 17, 80, 130, 20, 192, 20, 8, 197, 105, 82, 86, 20, 192, 20, 0, 9, 198, 80, 84, 212, 36, 177, 76, 20, 9, 198,
-			81, 33, 73, 80, 84, 128, 20, 0, 0, 0, 8, 197, 92, 84, 150, 20, 192, 20, 8, 197, 45, 113, 90, 20, 192, 20, 8, 197, 76, 224,
-			86, 20, 192, 20, 8, 197, 32, 244, 154, 20, 192, 20, 9, 198, 41, 80, 137, 48, 85, 77, 20, 0, 10, 66, 57, 32, 50, 110, 65, 13,
-			34, 0, 0, 10, 199, 92, 81, 215, 36, 166, 133, 72, 20, 13, 3, 95, 56, 88, 47, 6, 116, 101, 47, 13, 101, 0, 0, 0, 0, 0,
-			7, 195, 104, 240, 76, 66, 9, 0, 0, 8, 197, 44, 20, 144, 21, 64, 66, 8, 197, 80, 147, 77, 21, 32, 20, 8, 197, 48, 83, 77,
-			21, 32, 20, 0, 16, 70, 52, 21, 5, 72, 145, 64, 65, 115, 47, 6, 119, 34, 37, 0, 10, 198, 28, 84, 212, 4, 113, 64, 20, 66,
-			7, 66, 52, 80, 65, 13, 0, 0, 15, 3, 95, 57, 88, 50, 6, 119, 81, 13, 50, 47, 13, 101, 0, 0, 16, 70, 12, 148, 131, 84,
-			149, 0, 89, 108, 34, 49, 40, 6, 37, 0, 0, 14, 69, 8, 83, 137, 28, 80, 71, 119, 50, 13, 100, 13, 0, 8, 195, 52, 85, 0,
-			9, 76, 28, 0, 14, 70, 76, 133, 84, 80, 83, 0, 91, 110, 47, 13, 55, 0, 16, 70, 12, 83, 129, 44, 83, 0, 89, 13, 50, 115,
-			49, 13, 55, 0, 0, 10, 199, 12, 128, 82, 48, 245, 20, 20, 66, 10, 199, 9, 83, 12, 16, 246, 133, 72, 20, 0, 7, 196, 36, 166,
-			133, 72, 20, 0, 0, 9, 198, 77, 68, 133, 56, 113, 76, 20, 12, 3, 95, 63, 65, 55, 6, 111, 47, 13, 34, 0, 0, 0, 7, 196,
-			8, 22, 133, 48, 20, 13, 72, 20, 229, 5, 73, 4, 137, 76, 80, 21, 0, 10, 0, 6, 195, 84, 145, 82, 20, 0, 0, 0, 0, 0,
-			0, 7, 194, 36, 224, 9, 76, 28, 0, 0, 0, 16, 70, 36, 225, 197, 8, 244, 135, 108, 68, 119, 71, 113, 34, 101, 0, 0, 9, 198,
-			64, 19, 148, 76, 84, 128, 20, 9, 198, 44, 194, 69, 16, 84, 128, 20, 9, 198, 24, 195, 206, 44, 84, 128, 20, 0, 14, 4, 95, 15,
-			7, 15, 6, 122, 101, 122, 50, 111, 49, 0, 0, 0, 8, 197, 36, 164, 211, 20, 192, 20, 8, 197, 64, 241, 75, 20, 192, 20, 8, 197,
-			40, 241, 75, 20, 192, 20, 0, 9, 198, 105, 112, 78, 28, 84, 128, 20, 9, 198, 72, 243, 211, 80, 84, 128, 20, 9, 198, 28, 194, 66,
-			8, 84, 128, 20, 9, 198, 8, 243, 19, 80, 84, 128, 20, 0, 0, 0, 9, 198, 52, 148, 194, 73, 82, 75, 65, 8, 197, 57, 83, 77,
-			21, 32, 20, 0, 0, 10, 199, 36, 225, 197, 88, 243, 7, 20, 67, 0, 0, 0, 0, 29, 75, 20, 193, 147, 80, 81, 5, 57, 67, 195,
-			33, 64, 4, 111, 55, 83, 6, 89, 47, 119, 72, 13, 50, 47, 39, 100, 47, 0, 0, 12, 201, 60, 225, 197, 48, 243, 198, 48, 146, 139,
-			67, 9, 198, 81, 35, 197, 80, 83, 0, 20, 9, 198, 77, 112, 70, 24, 83, 0, 20, 9, 198, 65, 37, 84, 80, 83, 0, 20, 20, 72,
-			80, 245, 82, 56, 148, 85, 21, 64, 47, 40, 34, 50, 37, 49, 6, 111, 47, 0, 0, 0, 0, 10, 199, 52, 241, 9, 56, 85, 20, 20,
-			67, 0, 9, 198, 33, 82, 67, 32, 83, 0, 20, 9, 198, 29, 82, 67, 32, 83, 0, 20, 9, 198, 17, 33, 77, 52, 83, 0, 20, 9,
-			198, 77, 65, 78, 28, 83, 0, 20, 20, 72, 12, 128, 77, 9, 33, 84, 80, 80, 91, 35, 65, 71, 34, 6, 111, 47, 13, 0, 0, 8,
-			197, 52, 148, 211, 36, 80, 65, 0, 14, 139, 1, 12, 5, 24, 1, 14, 4, 18, 9, 195, 171, 67, 0, 23, 67, 88, 243, 132, 84, 113,
-			50, 10, 47, 116, 10, 47, 13, 0, 82, 100, 97, 116, 32, 100, 101, 32, 8, 195, 4, 19, 128, 9, 76, 28, 0, 7, 196, 72, 246, 133,
-			80, 66, 14, 4, 95, 48, 77, 52, 71, 6, 37, 55, 57, 40, 50, 0, 0, 6, 195, 52, 146, 142, 72, 0, 9, 198, 48, 243, 195, 32,
-			83, 128, 20, 6, 195, 104, 246, 143, 66, 6, 195, 40, 245, 87, 72, 14, 4, 95, 48, 77, 50, 65, 6, 37, 55, 57, 40, 50, 0, 0,
-			10, 199, 81, 32, 86, 21, 53, 9, 20, 67, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55, 57, 116, 34, 47, 0, 0, 0, 14, 4, 95,
-			48, 77, 49, 72, 6, 124, 88, 111, 50, 47, 0, 0, 14, 4, 95, 2, 18, 22, 71, 14, 16, 6, 119, 84, 13, 0, 0, 19, 71, 12,
-			16, 146, 36, 243, 5, 80, 49, 115, 71, 34, 37, 39, 55, 6, 111, 0, 0, 12, 68, 8, 85, 20, 100, 71, 111, 12, 47, 37, 0, 24,
-			73, 36, 212, 18, 20, 115, 133, 72, 147, 135, 108, 65, 48, 34, 4, 111, 100, 50, 6, 119, 108, 68, 0, 0, 8, 197, 56, 20, 193, 4,
-			192, 66, 8, 197, 76, 145, 80, 20, 192, 20, 8, 197, 72, 147, 139, 20, 192, 20, 8, 197, 32, 18, 211, 20, 192, 20, 8, 197, 12, 148,
-			139, 20, 192, 20, 0, 9, 198, 76, 160, 67, 32, 84, 128, 20, 9, 198, 44, 226, 83, 64, 84, 128, 20, 9, 198, 44, 225, 85, 80, 84,
-			128, 20, 9, 198, 44, 193, 85, 80, 84, 128, 20, 9, 198, 8, 197, 66, 8, 84, 128, 20, 11, 70, 92, 81, 75, 20, 225, 0, 21, 0,
-			10, 0, 6, 195, 92, 84, 132, 72, 0, 20, 72, 12, 128, 77, 64, 145, 206, 60, 224, 91, 116, 65, 48, 37, 57, 6, 113, 50, 0, 0,
-			8, 197, 92, 18, 203, 20, 192, 20, 8, 197, 80, 147, 139, 20, 192, 20, 8, 197, 76, 146, 203, 20, 192, 20, 8, 197, 24, 243, 139, 20,
-			192, 20, 8, 197, 16, 148, 211, 20, 192, 20, 8, 197, 88, 83, 139, 20, 192, 20, 0, 9, 198, 44, 226, 83, 80, 84, 128, 20, 9, 198,
-			12, 197, 83, 80, 84, 128, 20, 0, 0, 0, 8, 197, 104, 147, 22, 21, 32, 20, 8, 197, 8, 82, 82, 21, 32, 20, 0, 0, 0, 7,
-			196, 44, 20, 15, 80, 66, 0, 15, 69, 52, 83, 149, 21, 64, 65, 119, 50, 109, 6, 111, 47, 0, 8, 197, 76, 243, 66, 21, 32, 20,
-			0, 0, 19, 71, 25, 32, 78, 12, 130, 83, 20, 83, 34, 116, 6, 91, 37, 12, 88, 13, 0, 0, 9, 198, 77, 64, 70, 24, 83, 0,
-			20, 9, 198, 76, 193, 85, 80, 83, 0, 20, 9, 198, 45, 32, 66, 8, 83, 0, 20, 9, 198, 25, 37, 84, 76, 83, 0, 20, 0, 16,
-			205, 64, 20, 148, 36, 165, 143, 61, 38, 137, 81, 65, 82, 76, 66, 10, 69, 16, 83, 5, 80, 80, 21, 0, 10, 0, 9, 198, 44, 245,
-			5, 48, 85, 0, 67, 0, 0, 9, 198, 45, 34, 66, 8, 83, 0, 20, 9, 198, 9, 33, 73, 16, 83, 0, 20, 0, 0, 0, 0, 12,
-			68, 52, 85, 18, 60, 65, 119, 47, 34, 122, 0, 7, 196, 28, 22, 133, 80, 66, 7, 196, 41, 80, 133, 48, 20, 0, 0, 0, 18, 70,
-			24, 80, 146, 84, 20, 137, 83, 119, 71, 34, 109, 6, 115, 34, 37, 0, 19, 71, 12, 20, 212, 4, 115, 133, 80, 49, 116, 89, 47, 116,
-			67, 6, 111, 47, 0, 0, 0, 0, 9, 198, 76, 50, 5, 64, 83, 128, 20, 6, 194, 60, 96, 72, 8, 6, 194, 60, 96, 72, 8, 0,
-			0, 7, 195, 44, 227, 73, 17, 42, 0, 8, 197, 81, 34, 80, 20, 192, 20, 0, 9, 198, 48, 21, 133, 56, 65, 76, 20, 9, 198, 44,
-			22, 149, 36, 97, 76, 20, 0, 0, 0, 14, 69, 52, 148, 208, 20, 192, 65, 108, 89, 48, 13, 55, 0, 8, 197, 77, 64, 80, 20, 192,
-			20, 8, 197, 76, 20, 16, 20, 192, 20, 8, 197, 56, 84, 212, 20, 192, 20, 8, 197, 52, 148, 208, 20, 192, 20, 8, 197, 44, 244, 16,
-			20, 192, 20, 8, 197, 33, 84, 16, 20, 192, 20, 8, 197, 64, 84, 16, 20, 192, 20, 8, 197, 44, 84, 16, 20, 192, 20, 9, 3, 4,
-			39, 18, 72, 13, 34, 0, 0, 16, 70, 12, 243, 148, 61, 84, 128, 49, 122, 50, 47, 6, 40, 34, 0, 9, 198, 77, 68, 137, 8, 33,
-			76, 20, 0, 0, 0, 8, 197, 73, 80, 130, 21, 32, 20, 8, 197, 48, 240, 130, 21, 32, 20, 8, 197, 48, 16, 130, 21, 32, 20, 8,
-			197, 28, 144, 130, 21, 32, 20, 8, 197, 16, 240, 130, 21, 32, 20, 8, 197, 16, 16, 130, 21, 32, 20, 8, 195, 88, 243, 210, 9, 76,
-			8, 0, 0, 6, 195, 52, 17, 192, 72, 0, 0, 8, 197, 44, 192, 86, 21, 32, 20, 9, 3, 195, 169, 14, 111, 50, 0, 8, 0, 0,
-			17, 70, 61, 1, 82, 21, 69, 5, 122, 48, 13, 34, 6, 111, 47, 13, 0, 9, 198, 9, 37, 78, 21, 69, 5, 66, 18, 70, 4, 212,
-			5, 72, 17, 197, 116, 65, 48, 13, 34, 6, 115, 90, 13, 0, 0, 0, 0, 12, 201, 32, 81, 5, 57, 65, 78, 16, 17, 197, 20, 0,
-			9, 198, 56, 17, 18, 84, 178, 197, 66, 0, 9, 198, 36, 225, 197, 88, 19, 0, 67, 9, 198, 29, 35, 206, 16, 83, 0, 20, 0, 0,
-			0, 6, 195, 44, 211, 192, 17, 0, 0, 0, 20, 4, 95, 3, 9, 18, 89, 6, 108, 34, 49, 113, 50, 83, 55, 119, 49, 89, 13, 0,
-			0, 0, 0, 0, 0, 0, 7, 196, 65, 80, 133, 72, 20, 0, 8, 197, 76, 147, 148, 20, 192, 20, 8, 197, 28, 244, 132, 20, 192, 20,
-			0, 9, 198, 76, 50, 1, 80, 84, 128, 20, 0, 10, 199, 56, 21, 149, 48, 32, 65, 72, 66, 0, 15, 67, 52, 148, 197, 65, 37, 88,
-			117, 0, 44, 81, 101, 110, 32, 0, 8, 197, 92, 244, 148, 20, 192, 20, 8, 197, 92, 19, 132, 20, 192, 20, 8, 197, 52, 20, 148, 20,
-			192, 20, 8, 197, 28, 148, 208, 20, 192, 20, 8, 197, 105, 112, 84, 20, 192, 20, 8, 197, 16, 244, 144, 20, 192, 20, 8, 197, 16, 148,
-			212, 20, 192, 20, 0, 0, 6, 195, 45, 83, 148, 72, 14, 4, 95, 19, 20, 11, 89, 47, 14, 16, 6, 119, 48, 0, 0, 0, 13, 4,
-			95, 1, 3, 21, 6, 115, 37, 101, 4, 109, 0, 0, 9, 198, 104, 241, 1, 56, 145, 192, 66, 0, 16, 70, 72, 245, 76, 21, 69, 5,
-			34, 40, 55, 6, 111, 47, 13, 0, 17, 70, 17, 32, 73, 56, 17, 197, 72, 34, 111, 50, 6, 115, 90, 13, 0, 0, 0, 8, 197, 88,
-			243, 11, 21, 32, 20, 8, 197, 64, 145, 75, 21, 32, 20, 0, 0, 0, 9, 198, 76, 225, 85, 88, 83, 0, 20, 9, 198, 44, 194, 80,
-			64, 83, 0, 20, 9, 198, 29, 33, 78, 16, 83, 0, 20, 7, 196, 104, 81, 197, 56, 20, 7, 196, 72, 81, 197, 56, 20, 7, 196, 40,
-			81, 197, 56, 20, 7, 196, 52, 241, 197, 56, 72, 0, 9, 198, 88, 243, 12, 20, 66, 71, 66, 9, 198, 52, 148, 211, 80, 20, 0, 65,
-			0, 15, 70, 56, 85, 2, 60, 242, 192, 50, 111, 47, 71, 40, 49, 0, 0, 14, 4, 95, 18, 14, 7, 49, 6, 122, 16, 122, 50, 115,
-			0, 0, 7, 196, 61, 32, 133, 72, 20, 0, 0, 9, 198, 52, 148, 207, 60, 116, 212, 65, 0, 0, 11, 200, 36, 225, 143, 72, 208, 84,
-			36, 80, 67, 7, 196, 104, 81, 197, 48, 20, 7, 196, 72, 81, 197, 48, 20, 7, 196, 24, 16, 197, 80, 66, 9, 198, 88, 192, 65, 56,
-			65, 82, 20, 0, 0, 0, 0, 7, 196, 20, 225, 197, 48, 20, 0, 18, 69, 84, 37, 78, 81, 80, 40, 12, 6, 71, 40, 12, 50, 47,
-			40, 12, 0, 0, 0, 0, 7, 196, 48, 81, 197, 72, 20, 7, 196, 48, 17, 197, 72, 20, 0, 8, 197, 8, 241, 77, 20, 192, 20, 8,
-			197, 28, 19, 77, 20, 192, 20, 8, 197, 92, 244, 132, 20, 224, 72, 0, 9, 198, 28, 84, 5, 85, 1, 76, 20, 0, 0, 9, 198, 80,
-			84, 151, 36, 163, 0, 8, 0, 8, 197, 72, 243, 77, 20, 192, 20, 8, 197, 32, 243, 77, 20, 192, 20, 0, 0, 0, 11, 200, 92, 19,
-			147, 12, 128, 80, 20, 224, 66, 0, 8, 197, 40, 18, 203, 21, 32, 20, 8, 197, 32, 243, 135, 21, 32, 20, 8, 197, 9, 83, 139, 21,
-			32, 20, 14, 69, 104, 245, 193, 5, 32, 88, 122, 85, 6, 115, 34, 0, 0, 18, 4, 95, 1, 3, 50, 72, 6, 110, 71, 111, 55, 6,
-			115, 37, 101, 109, 0, 0, 0, 0, 8, 197, 9, 34, 75, 21, 64, 66, 8, 197, 44, 19, 139, 21, 32, 20, 8, 197, 16, 243, 139, 21,
-			32, 20, 0, 16, 70, 104, 83, 26, 5, 65, 64, 88, 36, 55, 88, 35, 47, 13, 0, 0, 0, 9, 198, 88, 16, 78, 16, 83, 0, 20,
-			9, 198, 4, 208, 78, 16, 83, 0, 20, 0, 0, 0, 0, 15, 70, 60, 194, 69, 76, 83, 0, 122, 55, 37, 89, 13, 55, 0, 10, 68,
-			12, 129, 67, 44, 76, 111, 49, 0, 11, 68, 12, 128, 79, 76, 101, 115, 113, 89, 0, 9, 198, 8, 244, 147, 80, 83, 0, 20, 9, 198,
-			77, 67, 198, 24, 83, 0, 20, 0, 0, 9, 198, 52, 148, 196, 73, 82, 192, 65, 9, 198, 81, 35, 205, 64, 85, 0, 66, 0, 15, 70,
-			28, 19, 65, 76, 50, 5, 100, 115, 65, 6, 116, 91, 0, 0, 7, 196, 88, 241, 197, 48, 20, 7, 196, 80, 81, 197, 48, 20, 7, 196,
-			56, 17, 197, 48, 20, 7, 196, 44, 81, 197, 48, 20, 7, 196, 32, 17, 197, 48, 20, 0, 0, 0, 0, 7, 196, 4, 225, 197, 48, 20,
-			9, 198, 64, 193, 73, 77, 65, 82, 20, 7, 196, 57, 81, 1, 80, 8, 0, 8, 197, 65, 35, 195, 21, 48, 66, 0, 0, 0, 0, 8,
-			197, 53, 84, 141, 20, 192, 20, 0, 9, 198, 76, 50, 1, 73, 33, 76, 20, 0, 0, 7, 196, 61, 81, 5, 72, 20, 7, 196, 32, 81,
-			70, 80, 72, 0, 8, 197, 49, 83, 77, 20, 192, 20, 8, 197, 45, 83, 77, 20, 192, 20, 0, 12, 6, 95, 15, 18, 4, 50, 48, 89,
-			47, 13, 0, 0, 0, 11, 68, 8, 82, 71, 20, 71, 111, 90, 13, 0, 0, 8, 197, 88, 241, 68, 21, 32, 20, 8, 197, 77, 81, 4,
-			21, 32, 20, 8, 197, 72, 81, 4, 21, 32, 20, 8, 197, 52, 241, 68, 21, 32, 20, 8, 197, 52, 241, 4, 21, 32, 20, 8, 197, 24,
-			243, 20, 21, 32, 20, 8, 197, 4, 50, 20, 21, 32, 20, 0, 9, 198, 8, 82, 1, 49, 97, 64, 8, 0, 0, 7, 196, 56, 19, 205,
-			36, 66, 0, 8, 197, 92, 147, 139, 21, 64, 66, 8, 197, 45, 35, 203, 21, 64, 66, 8, 197, 92, 84, 212, 21, 32, 20, 8, 197, 92,
-			20, 16, 21, 32, 20, 8, 197, 72, 20, 212, 21, 32, 20, 8, 197, 64, 145, 84, 21, 32, 20, 8, 197, 48, 84, 16, 21, 32, 20, 8,
-			197, 44, 85, 84, 21, 32, 20, 8, 197, 44, 85, 20, 21, 32, 20, 8, 197, 24, 243, 4, 21, 32, 20, 8, 197, 24, 241, 84, 21, 32,
-			20, 8, 197, 9, 83, 4, 21, 32, 20, 0, 7, 194, 60, 208, 9, 76, 28, 0, 0, 11, 200, 81, 35, 205, 64, 85, 20, 21, 32, 20,
-			7, 196, 52, 17, 197, 72, 20, 7, 196, 36, 210, 197, 72, 20, 7, 196, 72, 82, 197, 56, 20, 7, 196, 52, 240, 200, 80, 72, 6, 195,
-			60, 230, 133, 72, 0, 8, 197, 53, 84, 197, 84, 208, 20, 0, 0, 18, 70, 8, 16, 212, 21, 34, 69, 71, 116, 49, 47, 6, 108, 12,
-			34, 37, 0, 0, 9, 198, 77, 65, 77, 64, 83, 0, 20, 9, 198, 77, 2, 74, 8, 83, 0, 20, 9, 198, 45, 35, 206, 44, 83, 0,
-			20, 9, 198, 29, 34, 70, 24, 83, 0, 20, 9, 198, 17, 34, 66, 8, 83, 0, 20, 9, 198, 17, 33, 77, 64, 83, 0, 20, 0, 6,
-			195, 61, 97, 82, 20, 8, 195, 61, 97, 82, 9, 76, 8, 0, 9, 198, 77, 68, 143, 53, 1, 76, 20, 0, 10, 199, 20, 84, 135, 37,
-			53, 5, 72, 20, 0, 9, 198, 44, 17, 1, 77, 65, 82, 66, 7, 196, 80, 18, 197, 48, 20, 7, 196, 64, 81, 197, 48, 20, 7, 196,
-			44, 241, 197, 48, 20, 7, 196, 44, 18, 197, 48, 20, 7, 196, 104, 245, 197, 48, 66, 7, 196, 104, 245, 193, 80, 66, 0, 0, 0, 0,
-			7, 196, 16, 145, 69, 80, 66, 7, 196, 20, 226, 197, 48, 20, 9, 198, 77, 3, 9, 57, 65, 82, 20, 20, 70, 12, 243, 80, 85, 65,
-			82, 49, 113, 65, 48, 57, 6, 40, 47, 13, 34, 0, 20, 0, 17, 70, 5, 81, 213, 77, 69, 83, 125, 100, 6, 110, 89, 47, 110, 89,
-			0, 0, 9, 198, 104, 242, 149, 37, 53, 0, 66, 0, 0, 12, 68, 8, 82, 197, 72, 71, 119, 49, 13, 34, 0, 7, 196, 104, 82, 197,
-			72, 20, 7, 196, 52, 242, 197, 72, 20, 0, 8, 197, 92, 145, 66, 20, 192, 20, 8, 197, 28, 145, 66, 20, 192, 20, 0, 18, 70, 8,
-			83, 8, 4, 209, 76, 71, 6, 111, 55, 107, 115, 65, 13, 55, 0, 0, 0, 7, 196, 52, 82, 69, 72, 20, 0, 8, 197, 92, 82, 70,
-			20, 192, 20, 8, 197, 24, 241, 90, 20, 192, 20, 14, 69, 29, 32, 86, 20, 192, 100, 34, 111, 84, 13, 55, 0, 0, 0, 0, 7, 196,
-			24, 17, 207, 80, 66, 14, 4, 95, 3, 5, 4, 89, 6, 119, 72, 108, 55, 13, 0, 0, 8, 197, 8, 19, 12, 21, 64, 66, 8, 197,
-			92, 147, 148, 21, 32, 20, 0, 0, 15, 4, 95, 12, 9, 7, 55, 6, 37, 101, 115, 47, 109, 34, 0, 0, 0, 8, 197, 76, 224, 84,
-			21, 32, 20, 8, 197, 73, 83, 132, 21, 32, 20, 8, 197, 64, 21, 80, 21, 32, 20, 8, 197, 48, 245, 84, 21, 32, 20, 8, 197, 32,
-			147, 132, 21, 32, 20, 8, 197, 16, 243, 132, 21, 32, 20, 8, 197, 8, 20, 212, 21, 32, 20, 0, 9, 198, 64, 243, 9, 28, 195, 212,
-			67, 7, 194, 80, 80, 9, 76, 28, 0, 0, 7, 196, 80, 82, 197, 56, 20, 0, 21, 73, 72, 83, 129, 37, 52, 193, 56, 49, 64, 34,
-			111, 50, 119, 89, 6, 117, 89, 13, 0, 7, 195, 56, 16, 82, 9, 76, 0, 0, 0, 9, 198, 77, 2, 69, 28, 83, 0, 20, 9, 198,
-			76, 50, 1, 44, 83, 0, 20, 9, 198, 9, 35, 196, 16, 83, 0, 20, 9, 198, 16, 81, 77, 77, 64, 82, 20, 0, 0, 0, 0, 7,
-			196, 64, 146, 197, 80, 66, 7, 196, 48, 242, 197, 80, 66, 9, 198, 44, 197, 73, 77, 65, 82, 20, 0, 0, 0, 0, 9, 198, 76, 50,
-			1, 53, 1, 82, 20, 0, 14, 69, 8, 83, 132, 21, 48, 71, 111, 50, 72, 13, 89, 0, 0, 0, 0, 7, 196, 44, 242, 197, 72, 20,
-			7, 196, 8, 18, 197, 72, 20, 0, 8, 197, 92, 17, 134, 20, 192, 20, 8, 197, 76, 16, 130, 20, 192, 20, 8, 197, 72, 145, 134, 20,
-			192, 20, 8, 197, 72, 85, 90, 20, 192, 20, 8, 197, 72, 80, 130, 20, 192, 20, 8, 197, 65, 86, 154, 20, 192, 20, 8, 197, 44, 16,
-			130, 20, 192, 20, 8, 197, 28, 17, 134, 20, 192, 20, 8, 197, 16, 240, 130, 20, 192, 20, 8, 197, 9, 80, 130, 20, 192, 20, 8, 197,
-			8, 85, 90, 20, 192, 20, 8, 197, 72, 85, 90, 20, 192, 20, 8, 197, 17, 81, 134, 20, 192, 20, 0, 9, 198, 60, 36, 212, 4, 177,
-			76, 20, 0, 6, 195, 60, 228, 192, 72, 0, 0, 8, 197, 88, 146, 154, 20, 192, 20, 8, 197, 52, 244, 146, 20, 192, 20, 8, 197, 4,
-			20, 154, 20, 192, 20, 0, 9, 198, 77, 4, 143, 44, 177, 76, 20, 0, 0, 0, 8, 197, 80, 16, 140, 21, 64, 66, 8, 197, 48, 243,
-			77, 21, 32, 20, 8, 197, 44, 243, 77, 21, 32, 20, 0, 0, 6, 195, 92, 245, 64, 72, 0, 18, 72, 20, 208, 143, 84, 50, 21, 85,
-			32, 117, 71, 40, 91, 6, 109, 34, 0, 0, 8, 197, 88, 147, 204, 21, 64, 67, 8, 197, 64, 241, 73, 21, 32, 20, 8, 197, 40, 19,
-			77, 21, 32, 20, 0, 10, 198, 76, 243, 77, 36, 113, 64, 9, 76, 0, 0, 9, 198, 52, 148, 129, 44, 83, 0, 20, 7, 196, 8, 18,
-			197, 56, 20, 0, 8, 197, 52, 147, 137, 52, 16, 65, 0, 9, 198, 80, 83, 148, 4, 177, 76, 20, 0, 18, 71, 4, 211, 213, 72, 85,
-			20, 20, 115, 65, 40, 16, 6, 111, 47, 13, 0, 6, 195, 92, 21, 0, 72, 0, 7, 196, 72, 243, 65, 56, 66, 11, 200, 52, 148, 211,
-			37, 52, 201, 64, 144, 67, 11, 68, 24, 144, 200, 20, 83, 37, 91, 13, 0, 7, 196, 4, 226, 197, 72, 20, 0, 0, 9, 198, 76, 145,
-			193, 72, 85, 0, 67, 0, 0, 7, 196, 72, 18, 197, 48, 20, 7, 196, 64, 82, 197, 48, 20, 7, 196, 32, 82, 197, 48, 20, 7, 196,
-			20, 146, 197, 48, 20, 12, 68, 77, 82, 133, 80, 89, 109, 90, 6, 111, 0, 0, 0, 0, 10, 199, 8, 19, 133, 56, 114, 68, 76, 22,
-			10, 199, 76, 50, 18, 36, 178, 197, 48, 20, 22, 67, 56, 145, 84, 10, 50, 6, 37, 47, 15, 65, 4, 119, 34, 0, 81, 109, 101, 101,
-			114, 32, 11, 67, 56, 145, 84, 50, 4, 37, 47, 0, 11, 0, 7, 196, 104, 83, 69, 48, 20, 0, 0, 0, 0, 6, 195, 32, 80, 128,
-			72, 0, 0, 8, 197, 80, 85, 71, 20, 192, 20, 8, 197, 45, 33, 75, 20, 192, 20, 8, 197, 32, 82, 75, 20, 192, 20, 8, 197, 28,
-			85, 201, 48, 64, 72, 0, 9, 198, 76, 194, 78, 28, 84, 128, 20, 9, 198, 76, 177, 69, 48, 84, 128, 20, 9, 198, 36, 226, 193, 16,
-			84, 128, 20, 9, 198, 28, 194, 77, 52, 84, 128, 20, 0, 7, 2, 95, 19, 111, 89, 0, 0, 0, 8, 197, 92, 148, 211, 20, 192, 20,
-			8, 197, 33, 85, 19, 20, 192, 20, 8, 197, 9, 84, 211, 20, 192, 20, 8, 197, 77, 65, 75, 20, 192, 20, 8, 197, 65, 82, 203, 20,
-			192, 20, 6, 195, 104, 146, 142, 72, 8, 197, 32, 241, 87, 20, 192, 8, 6, 195, 104, 146, 142, 72, 0, 9, 198, 81, 114, 84, 80, 84,
-			128, 20, 9, 198, 77, 69, 77, 64, 84, 128, 20, 9, 198, 77, 67, 212, 80, 84, 128, 20, 9, 198, 77, 65, 75, 44, 84, 128, 20, 9,
-			198, 77, 65, 73, 28, 84, 128, 20, 9, 198, 76, 195, 194, 8, 84, 128, 20, 9, 198, 32, 19, 83, 80, 84, 128, 20, 0, 0, 0, 0,
-			7, 2, 95, 20, 47, 119, 0, 0, 0, 0, 8, 197, 104, 246, 133, 21, 32, 66, 0, 9, 198, 45, 37, 73, 52, 83, 0, 20, 0, 0,
-			0, 0, 9, 198, 93, 34, 69, 52, 83, 0, 20, 9, 198, 44, 197, 78, 28, 83, 0, 20, 9, 198, 25, 37, 77, 52, 83, 0, 20, 9,
-			198, 25, 34, 69, 52, 83, 0, 20, 9, 198, 5, 37, 9, 44, 83, 0, 20, 9, 198, 76, 50, 1, 52, 83, 0, 20, 0, 6, 195, 32,
-			80, 148, 72, 8, 195, 8, 146, 128, 9, 76, 8, 9, 67, 104, 146, 128, 88, 2, 123, 0, 9, 67, 40, 146, 128, 57, 2, 123, 0, 0,
-			11, 200, 92, 20, 211, 21, 33, 84, 80, 80, 67, 20, 2, 95, 34, 6, 115, 50, 107, 115, 55, 108, 50, 101, 89, 47, 119, 49, 13, 50,
-			0, 0, 18, 2, 95, 33, 6, 124, 47, 14, 16, 40, 48, 47, 4, 119, 49, 13, 50, 0, 0, 5, 194, 85, 112, 72, 0, 11, 67, 17,
-			81, 84, 72, 109, 6, 111, 47, 0, 6, 195, 44, 243, 128, 72, 10, 67, 32, 83, 128, 107, 2, 111, 50, 0, 0, 7, 196, 4, 210, 78,
-			60, 65, 7, 196, 72, 18, 197, 80, 66, 7, 196, 44, 242, 197, 80, 66, 0, 0, 0, 7, 195, 88, 19, 128, 9, 76, 0, 7, 196, 92,
-			83, 69, 48, 20, 17, 4, 95, 3, 1, 16, 107, 6, 122, 83, 72, 55, 111, 47, 13, 34, 0, 0, 12, 201, 12, 20, 130, 60, 194, 78,
-			21, 83, 64, 20, 18, 2, 95, 41, 107, 6, 115, 49, 57, 13, 89, 55, 6, 124, 47, 13, 50, 0, 0, 19, 2, 95, 40, 107, 6, 115,
-			49, 57, 13, 23, 6, 122, 48, 119, 50, 13, 50, 0, 0, 21, 71, 64, 84, 137, 24, 84, 137, 20, 48, 108, 12, 34, 37, 83, 108, 12,
-			34, 6, 37, 0, 10, 199, 52, 20, 141, 60, 193, 85, 52, 20, 0, 0, 8, 197, 92, 17, 199, 20, 192, 20, 8, 197, 72, 243, 147, 20,
-			192, 20, 8, 197, 72, 19, 147, 20, 192, 20, 8, 197, 64, 147, 139, 20, 192, 20, 8, 197, 52, 243, 139, 20, 192, 20, 8, 197, 52, 83,
-			135, 20, 192, 20, 8, 197, 33, 82, 75, 20, 192, 20, 8, 197, 8, 145, 199, 20, 192, 20, 8, 197, 76, 242, 203, 20, 192, 20, 17, 2,
-			95, 45, 49, 6, 113, 48, 111, 55, 47, 4, 119, 49, 13, 50, 0, 0, 9, 198, 76, 197, 73, 52, 84, 128, 20, 9, 198, 64, 195, 197,
-			80, 84, 128, 20, 9, 198, 44, 241, 83, 80, 84, 128, 20, 10, 2, 95, 44, 49, 6, 113, 65, 115, 0, 0, 6, 195, 48, 84, 128, 20,
-			9, 2, 95, 51, 72, 34, 6, 37, 0, 0, 11, 68, 76, 18, 78, 80, 21, 102, 114, 0, 10, 7, 196, 20, 211, 69, 72, 20, 9, 2,
-			95, 50, 47, 85, 6, 119, 0, 0, 8, 197, 92, 147, 139, 20, 192, 20, 8, 197, 92, 21, 87, 20, 192, 20, 8, 197, 76, 147, 135, 20,
-			192, 20, 8, 197, 72, 147, 135, 20, 192, 20, 8, 197, 56, 146, 203, 20, 192, 20, 8, 197, 52, 19, 135, 20, 192, 20, 8, 197, 32, 147,
-			139, 20, 192, 20, 8, 197, 80, 83, 135, 20, 192, 20, 8, 197, 44, 242, 203, 20, 192, 20, 12, 201, 12, 243, 147, 84, 210, 78, 16, 84,
-			128, 20, 8, 2, 95, 49, 6, 119, 50, 0, 0, 9, 198, 80, 82, 83, 80, 84, 128, 20, 9, 198, 52, 81, 83, 80, 84, 128, 20, 9,
-			198, 45, 113, 84, 80, 84, 128, 20, 9, 198, 44, 194, 78, 44, 84, 128, 20, 9, 198, 28, 81, 83, 80, 84, 128, 20, 9, 2, 95, 48,
-			50, 6, 110, 55, 0, 0, 11, 2, 95, 55, 88, 6, 119, 84, 13, 50, 0, 0, 9, 2, 95, 54, 88, 6, 111, 89, 0, 0, 8, 197,
-			65, 83, 22, 21, 32, 20, 8, 197, 44, 19, 22, 21, 32, 20, 9, 2, 95, 53, 84, 6, 123, 83, 0, 0, 9, 2, 95, 52, 84, 6,
-			37, 34, 0, 0, 15, 2, 95, 59, 48, 6, 110, 50, 47, 49, 113, 65, 4, 115, 0, 0, 17, 2, 95, 58, 72, 6, 110, 71, 13, 55,
-			13, 48, 4, 110, 50, 47, 0, 0, 8, 197, 52, 19, 135, 5, 64, 22, 8, 197, 44, 19, 70, 21, 32, 20, 11, 2, 95, 57, 50, 6,
-			119, 100, 13, 50, 0, 0, 9, 198, 88, 84, 132, 21, 35, 208, 67, 9, 198, 81, 35, 205, 52, 83, 0, 20, 9, 198, 77, 67, 205, 52,
-			83, 0, 20, 9, 198, 17, 35, 205, 52, 83, 0, 20, 6, 195, 16, 86, 133, 72, 7, 66, 92, 80, 85, 13, 0, 9, 2, 95, 56, 6,
-			116, 101, 47, 0, 0, 18, 71, 61, 85, 9, 48, 192, 71, 20, 40, 47, 37, 57, 6, 115, 90, 13, 0, 16, 2, 95, 63, 84, 14, 16,
-			6, 115, 101, 47, 119, 49, 13, 50, 0, 0, 7, 196, 64, 242, 197, 72, 20, 0, 8, 197, 76, 19, 15, 52, 240, 65, 8, 195, 84, 149,
-			0, 9, 76, 28, 0, 9, 198, 81, 114, 78, 44, 83, 0, 20, 9, 198, 93, 35, 206, 28, 83, 0, 20, 0, 0, 7, 196, 32, 19, 69,
-			72, 20, 9, 198, 88, 243, 210, 16, 21, 0, 8, 0, 0, 0, 0, 0, 0, 0, 14, 203, 92, 16, 82, 76, 50, 9, 40, 227, 9, 40,
-			176, 66, 10, 199, 52, 148, 194, 4, 180, 197, 48, 65, 0, 7, 196, 104, 19, 69, 48, 20, 7, 196, 32, 83, 69, 48, 20, 0, 0, 12,
-			201, 60, 225, 197, 72, 145, 70, 48, 146, 139, 67, 24, 73, 16, 145, 148, 60, 225, 197, 72, 147, 135, 72, 108, 83, 47, 4, 113, 68, 6,
-			119, 34, 108, 68, 0, 15, 70, 12, 130, 70, 24, 243, 128, 91, 37, 83, 6, 113, 50, 0, 0, 10, 199, 12, 243, 15, 77, 49, 85, 52,
-			20, 0, 7, 196, 48, 20, 197, 72, 20, 0, 8, 197, 72, 243, 80, 20, 192, 20, 8, 197, 28, 82, 213, 56, 64, 72, 0, 8, 67, 72,
-			16, 197, 21, 0, 10, 0, 0, 7, 196, 4, 196, 207, 24, 8, 0, 17, 70, 44, 147, 147, 32, 20, 193, 49, 108, 50, 91, 6, 115, 89,
-			115, 0, 13, 69, 92, 19, 135, 20, 224, 85, 116, 68, 13, 50, 0, 8, 197, 52, 84, 16, 20, 192, 20, 8, 197, 76, 85, 20, 20, 192,
-			20, 8, 197, 44, 85, 84, 20, 192, 20, 8, 197, 80, 83, 154, 36, 160, 8, 0, 0, 0, 12, 4, 95, 4, 15, 20, 48, 6, 110, 50,
-			47, 0, 0, 22, 73, 20, 83, 147, 28, 83, 9, 40, 180, 192, 119, 50, 89, 100, 13, 55, 6, 123, 49, 89, 0, 9, 198, 88, 147, 204,
-			21, 69, 5, 67, 9, 198, 72, 16, 204, 21, 69, 5, 66, 8, 197, 44, 241, 134, 21, 32, 20, 8, 197, 44, 17, 134, 21, 32, 20, 8,
-			197, 28, 16, 130, 21, 32, 20, 8, 197, 9, 81, 134, 21, 32, 20, 8, 197, 80, 245, 4, 5, 64, 8, 0, 15, 74, 20, 229, 5, 73,
-			64, 73, 56, 209, 78, 80, 21, 0, 10, 0, 6, 195, 104, 19, 0, 72, 0, 0, 15, 69, 9, 33, 86, 21, 64, 71, 34, 13, 84, 6,
-			111, 47, 0, 8, 197, 77, 2, 78, 21, 64, 66, 17, 70, 12, 245, 82, 80, 17, 197, 49, 40, 34, 47, 6, 115, 90, 13, 0, 8, 3,
-			201, 153, 14, 14, 50, 0, 0, 9, 198, 77, 65, 71, 28, 83, 0, 20, 9, 198, 76, 210, 83, 64, 83, 0, 20, 9, 198, 76, 197, 78,
-			28, 83, 0, 20, 0, 9, 67, 12, 128, 84, 76, 111, 47, 0, 6, 195, 20, 65, 76, 20, 8, 67, 24, 16, 212, 21, 0, 10, 21, 2,
-			95, 95, 55, 6, 108, 81, 111, 50, 47, 89, 47, 14, 16, 6, 119, 48, 57, 13, 0, 0, 9, 198, 45, 112, 82, 80, 85, 0, 66, 9,
-			198, 48, 22, 129, 72, 85, 0, 67, 0, 10, 69, 60, 227, 9, 56, 80, 21, 0, 10, 0, 17, 70, 56, 18, 82, 60, 34, 64, 50, 116,
-			57, 34, 6, 122, 71, 37, 0, 15, 70, 44, 83, 142, 20, 70, 64, 49, 111, 50, 13, 72, 111, 0, 9, 198, 45, 112, 82, 80, 83, 0,
-			20, 9, 198, 45, 32, 85, 92, 83, 0, 20, 9, 198, 44, 227, 194, 8, 83, 0, 20, 0, 6, 195, 4, 65, 76, 20, 7, 195, 60, 242,
-			192, 9, 76, 0, 0, 8, 197, 72, 81, 201, 52, 80, 66, 6, 195, 4, 65, 82, 20, 0, 0, 6, 195, 33, 83, 128, 72, 7, 3, 201,
-			153, 20, 47, 0, 0, 21, 72, 8, 194, 84, 104, 180, 137, 20, 112, 71, 55, 108, 47, 89, 49, 34, 37, 12, 81, 0, 7, 196, 5, 4,
-			5, 48, 20, 9, 198, 32, 84, 137, 56, 225, 82, 20, 0, 0, 0, 0, 0, 0, 14, 4, 95, 7, 18, 22, 100, 14, 16, 6, 115, 84,
-			13, 0, 0, 0, 0, 8, 197, 76, 146, 144, 20, 192, 20, 8, 197, 44, 19, 148, 20, 192, 20, 0, 9, 198, 77, 69, 73, 80, 84, 128,
-			20, 8, 67, 8, 20, 197, 21, 0, 10, 0, 0, 11, 200, 36, 225, 210, 36, 164, 5, 56, 64, 66, 0, 13, 69, 8, 82, 76, 20, 224,
-			71, 123, 55, 13, 50, 0, 14, 69, 52, 148, 212, 20, 224, 65, 108, 89, 47, 13, 50, 0, 8, 197, 80, 144, 200, 20, 192, 20, 8, 197,
-			72, 85, 84, 20, 192, 20, 8, 197, 44, 193, 80, 20, 192, 20, 8, 197, 32, 16, 200, 20, 192, 20, 8, 197, 9, 83, 132, 20, 192, 20,
-			8, 197, 24, 148, 212, 20, 192, 20, 8, 197, 92, 147, 12, 20, 224, 72, 0, 0, 0, 0, 12, 201, 80, 81, 197, 56, 224, 84, 85, 84,
-			128, 68, 15, 70, 64, 240, 200, 21, 69, 5, 48, 113, 91, 6, 111, 47, 0, 14, 69, 9, 81, 134, 21, 64, 71, 109, 83, 6, 111, 47,
-			0, 8, 197, 44, 244, 142, 21, 64, 66, 8, 197, 12, 20, 142, 21, 64, 66, 18, 70, 41, 83, 69, 48, 17, 197, 90, 109, 65, 13, 55,
-			6, 115, 90, 13, 0, 0, 0, 6, 195, 92, 147, 0, 72, 18, 2, 95, 123, 84, 6, 37, 34, 49, 116, 50, 47, 13, 107, 4, 115, 49,
-			0, 13, 4, 95, 4, 9, 1, 6, 110, 65, 55, 125, 47, 0, 0, 0, 9, 198, 4, 211, 210, 21, 69, 5, 67, 17, 70, 21, 21, 73,
-			64, 17, 197, 119, 49, 37, 48, 6, 115, 90, 13, 0, 8, 197, 48, 21, 87, 21, 32, 20, 0, 16, 70, 41, 84, 212, 36, 225, 64, 90,
-			109, 89, 47, 6, 37, 50, 0, 9, 198, 12, 128, 82, 4, 65, 64, 66, 9, 198, 81, 34, 80, 64, 83, 0, 20, 9, 198, 77, 66, 80,
-			64, 83, 0, 20, 9, 198, 9, 35, 203, 44, 83, 0, 20, 9, 198, 64, 84, 137, 44, 83, 0, 20, 16, 70, 16, 80, 201, 8, 83, 0,
-			72, 119, 89, 37, 71, 111, 55, 0, 11, 70, 60, 97, 140, 36, 225, 64, 21, 0, 10, 0, 0, 0, 8, 195, 80, 245, 0, 9, 76, 8,
-			25, 2, 95, 125, 84, 6, 37, 34, 49, 116, 50, 47, 13, 107, 4, 115, 49, 89, 55, 6, 124, 47, 13, 50, 0, 0, 17, 70, 52, 148,
-			212, 72, 19, 0, 65, 37, 89, 47, 34, 6, 116, 55, 0, 9, 198, 81, 32, 80, 64, 83, 0, 20, 9, 198, 17, 33, 78, 80, 83, 0,
-			20, 0, 0, 8, 67, 40, 21, 211, 21, 0, 10, 0, 0, 0, 0, 13, 68, 28, 84, 197, 48, 100, 119, 89, 13, 55, 0, 20, 0, 0,
-			10, 67, 56, 20, 201, 50, 116, 89, 37, 0, 0, 10, 67, 104, 144, 200, 88, 2, 108, 101, 0, 0, 13, 68, 5, 4, 137, 48, 115, 48,
-			34, 6, 108, 55, 0, 0, 6, 195, 61, 1, 78, 20, 0, 17, 70, 64, 192, 78, 12, 129, 84, 48, 55, 116, 50, 91, 6, 111, 47, 0,
-			0, 0, 7, 196, 21, 69, 5, 72, 20, 0, 8, 197, 92, 145, 77, 20, 192, 20, 8, 197, 77, 64, 77, 20, 192, 20, 8, 197, 72, 19,
-			77, 20, 192, 20, 0, 18, 70, 16, 148, 195, 37, 1, 76, 72, 108, 89, 6, 37, 48, 13, 55, 0, 20, 0, 10, 199, 56, 17, 5, 72,
-			128, 78, 16, 67, 0, 0, 8, 197, 16, 243, 77, 20, 192, 20, 0, 0, 0, 0, 14, 69, 9, 81, 7, 21, 64, 71, 110, 75, 6, 111,
-			47, 0, 8, 197, 24, 19, 19, 21, 64, 66, 15, 69, 12, 195, 211, 21, 64, 49, 55, 122, 88, 6, 111, 47, 0, 8, 197, 48, 82, 203,
-			21, 32, 20, 8, 197, 8, 17, 199, 21, 32, 20, 0, 0, 6, 195, 92, 147, 20, 72, 0, 0, 8, 197, 21, 66, 75, 21, 64, 67, 8,
-			197, 88, 147, 135, 21, 32, 20, 8, 197, 77, 82, 75, 21, 32, 20, 8, 197, 44, 84, 139, 21, 32, 20, 8, 197, 40, 243, 135, 21, 32,
-			20, 8, 197, 8, 192, 75, 21, 32, 20, 0, 9, 198, 45, 113, 66, 8, 83, 0, 20, 9, 198, 45, 34, 78, 28, 83, 0, 20, 11, 70,
-			52, 19, 23, 5, 33, 64, 21, 0, 10, 7, 66, 104, 80, 88, 13, 0, 0, 0, 0, 0, 9, 198, 88, 193, 85, 28, 83, 0, 20, 9,
-			198, 77, 69, 78, 80, 83, 0, 20, 0, 0, 11, 200, 52, 148, 214, 5, 69, 9, 56, 112, 65, 12, 68, 8, 84, 212, 20, 71, 111, 89,
-			47, 13, 0, 16, 70, 16, 245, 66, 48, 85, 0, 72, 40, 71, 55, 6, 111, 47, 0, 0, 9, 198, 17, 147, 129, 77, 66, 69, 67, 0,
-			0, 0, 7, 196, 17, 85, 133, 48, 20, 9, 198, 76, 50, 9, 65, 1, 82, 20, 0, 0, 0, 0, 0, 0, 0, 16, 67, 57, 148, 192,
-			50, 123, 89, 72, 6, 124, 88, 111, 50, 47, 0, 0, 7, 196, 20, 227, 210, 52, 66, 0, 9, 197, 56, 17, 9, 20, 224, 66, 9, 8,
-			197, 65, 83, 77, 20, 192, 20, 8, 197, 52, 244, 141, 20, 192, 20, 0, 14, 70, 12, 128, 83, 76, 148, 192, 91, 116, 89, 6, 37, 0,
-			0, 7, 195, 17, 84, 192, 72, 8, 0, 13, 72, 53, 83, 20, 37, 67, 213, 12, 128, 21, 0, 10, 0, 8, 197, 33, 83, 77, 20, 192,
-			20, 0, 8, 67, 76, 149, 5, 21, 0, 10, 0, 18, 71, 12, 128, 77, 64, 17, 206, 20, 91, 116, 65, 48, 6, 116, 67, 13, 0, 0,
-			0, 8, 197, 64, 20, 139, 21, 64, 66, 8, 197, 76, 145, 4, 21, 32, 20, 8, 197, 72, 145, 4, 21, 32, 20, 8, 197, 64, 241, 68,
-			21, 32, 20, 8, 197, 48, 145, 68, 21, 32, 20, 8, 197, 32, 19, 20, 21, 32, 20, 8, 197, 28, 241, 68, 21, 32, 20, 11, 70, 84,
-			197, 9, 52, 21, 5, 21, 0, 10, 0, 0, 0, 0, 8, 197, 64, 18, 203, 21, 64, 66, 8, 197, 104, 243, 4, 21, 32, 20, 8, 197,
-			80, 85, 20, 21, 32, 20, 8, 197, 64, 243, 4, 21, 32, 20, 8, 197, 52, 145, 84, 21, 32, 20, 8, 197, 48, 85, 84, 21, 32, 20,
-			8, 197, 48, 85, 20, 21, 32, 20, 8, 197, 8, 243, 4, 21, 32, 20, 8, 197, 8, 149, 20, 21, 32, 20, 0, 9, 198, 76, 229, 70,
-			24, 83, 0, 20, 9, 198, 44, 229, 70, 24, 83, 0, 20, 16, 70, 60, 228, 218, 20, 193, 128, 113, 50, 89, 6, 111, 55, 83, 0, 0,
-			0, 11, 200, 52, 147, 12, 36, 209, 84, 21, 32, 20, 0, 9, 198, 36, 225, 21, 13, 66, 69, 66, 9, 198, 4, 211, 133, 77, 66, 69,
-			67, 10, 69, 21, 48, 193, 64, 80, 21, 0, 10, 0, 9, 198, 92, 244, 147, 80, 83, 0, 20, 9, 198, 92, 20, 133, 53, 1, 76, 20,
-			0, 0, 0, 14, 69, 28, 243, 199, 48, 80, 81, 40, 12, 81, 13, 55, 0, 0, 17, 70, 40, 20, 146, 21, 65, 76, 90, 35, 34, 13,
-			47, 6, 111, 55, 0, 0, 0, 8, 196, 104, 240, 76, 76, 66, 8, 0, 0, 0, 10, 199, 77, 1, 75, 80, 18, 197, 48, 66, 10, 199,
-			77, 1, 75, 80, 18, 197, 48, 20, 0, 9, 198, 76, 229, 73, 77, 65, 82, 20, 9, 198, 64, 147, 139, 77, 65, 82, 20, 9, 198, 24,
-			197, 73, 77, 65, 82, 20, 0, 9, 3, 26, 39, 14, 88, 13, 50, 0, 0, 0, 0, 0, 14, 69, 8, 85, 133, 56, 64, 71, 119, 84,
-			13, 50, 72, 0, 8, 197, 24, 241, 70, 20, 192, 20, 8, 197, 72, 241, 66, 20, 192, 20, 8, 197, 52, 85, 66, 20, 192, 20, 9, 198,
-			5, 66, 5, 56, 85, 77, 20, 6, 195, 80, 241, 78, 8, 0, 0, 0, 0, 14, 69, 36, 225, 210, 36, 64, 108, 68, 14, 16, 108, 47,
-			0, 8, 197, 44, 85, 86, 20, 192, 20, 8, 197, 17, 33, 86, 20, 192, 20, 8, 197, 32, 85, 86, 20, 192, 20, 0, 9, 198, 77, 4,
-			129, 56, 177, 76, 20, 0, 0, 0, 8, 197, 48, 19, 80, 21, 64, 66, 8, 197, 44, 83, 148, 21, 32, 20, 8, 197, 9, 83, 80, 21,
-			32, 20, 0, 0, 0, 0, 8, 197, 52, 148, 218, 37, 64, 65, 23, 73, 16, 19, 65, 76, 49, 82, 36, 225, 192, 72, 35, 65, 116, 38,
-			89, 6, 119, 34, 108, 68, 0, 8, 197, 104, 147, 132, 21, 32, 20, 8, 197, 92, 243, 132, 21, 32, 20, 8, 197, 81, 85, 20, 21, 32,
-			20, 8, 197, 80, 85, 84, 21, 32, 20, 8, 197, 17, 112, 84, 21, 32, 20, 8, 197, 16, 83, 132, 21, 32, 20, 0, 9, 198, 88, 82,
-			9, 44, 83, 0, 20, 0, 0, 0, 12, 201, 21, 80, 200, 5, 34, 83, 80, 145, 64, 68, 0, 9, 198, 77, 2, 75, 44, 83, 0, 20,
-			9, 198, 65, 34, 75, 44, 83, 0, 20, 9, 198, 45, 33, 85, 44, 83, 0, 20, 9, 198, 81, 35, 197, 8, 83, 0, 20, 0, 0, 16,
-			70, 12, 16, 129, 72, 85, 0, 49, 115, 71, 115, 34, 6, 111, 0, 0, 14, 69, 12, 19, 129, 16, 16, 49, 116, 50, 115, 72, 115, 0,
-			0, 8, 67, 28, 19, 69, 21, 0, 10, 8, 67, 32, 243, 69, 21, 0, 10, 0, 34, 79, 104, 145, 75, 20, 226, 21, 37, 48, 133, 88,
-			19, 12, 36, 225, 192, 88, 37, 12, 49, 13, 50, 107, 124, 89, 71, 13, 84, 116, 55, 108, 68, 0, 0, 9, 198, 12, 128, 80, 37, 65,
-			82, 66, 0, 0, 0, 10, 199, 76, 16, 210, 37, 53, 9, 20, 67, 0, 0, 0, 0, 0, 0, 8, 197, 77, 82, 90, 20, 192, 20, 8,
-			197, 72, 241, 134, 20, 192, 20, 8, 197, 72, 17, 134, 20, 192, 20, 8, 197, 52, 241, 134, 20, 192, 20, 8, 197, 17, 82, 90, 20, 192,
-			20, 8, 197, 9, 81, 134, 20, 192, 20, 0, 0, 7, 195, 4, 196, 192, 72, 8, 0, 0, 8, 197, 92, 20, 146, 20, 192, 20, 8, 197,
-			52, 22, 154, 20, 192, 20, 8, 197, 44, 225, 86, 20, 192, 20, 8, 197, 44, 144, 130, 20, 192, 20, 8, 197, 32, 240, 130, 20, 192, 20,
-			8, 197, 77, 65, 86, 20, 224, 20, 0, 0, 0, 0, 12, 69, 12, 128, 76, 21, 64, 91, 115, 55, 111, 0, 13, 69, 12, 16, 200, 21,
-			64, 49, 116, 91, 6, 111, 0, 0, 0, 0, 0, 14, 69, 80, 245, 80, 21, 64, 47, 40, 48, 6, 111, 47, 0, 14, 69, 64, 245, 76,
-			21, 64, 48, 40, 55, 6, 111, 47, 0, 0, 9, 198, 76, 211, 197, 104, 83, 0, 20, 9, 198, 76, 210, 75, 44, 83, 0, 20, 9, 198,
-			29, 37, 73, 104, 83, 0, 20, 17, 70, 89, 34, 74, 4, 113, 64, 84, 34, 119, 57, 6, 115, 90, 13, 0, 17, 70, 52, 85, 18, 4,
-			113, 64, 65, 119, 47, 34, 6, 115, 90, 13, 0, 0, 12, 71, 52, 147, 11, 76, 128, 75, 20, 21, 0, 10, 0, 0, 15, 69, 8, 84,
-			137, 28, 80, 71, 108, 12, 34, 13, 100, 13, 0, 6, 195, 92, 16, 82, 8, 0, 9, 198, 81, 35, 199, 28, 83, 0, 20, 0, 0, 0,
-			0, 9, 198, 77, 4, 133, 56, 177, 76, 20, 0, 0, 21, 72, 4, 48, 197, 77, 51, 201, 72, 80, 35, 49, 89, 111, 89, 58, 6, 35,
-			34, 13, 0, 21, 72, 12, 19, 79, 84, 99, 1, 28, 80, 49, 115, 65, 40, 83, 55, 6, 115, 90, 13, 0, 0, 6, 18, 66, 103, 0,
-			107, 0, 7, 6, 98, 101, 0, 8, 2, 21, 14, 128, 132, 130, 3, 71, 13, 0, 8, 2, 114, 101, 110, 3, 71, 108, 12, 0, 4, 2,
+		static unsigned char espeakdata_dicts48_data[27198] = {
+			0, 4, 0, 0, 8, 71, 0, 0, 0, 11, 200, 28, 81, 146, 37, 69, 85, 72, 64, 67, 0, 0, 19, 71, 25, 32, 78, 12, 130, 83,
+			20, 83, 34, 116, 6, 91, 37, 12, 88, 13, 0, 0, 0, 0, 0, 8, 197, 41, 83, 12, 36, 80, 72, 8, 197, 41, 83, 12, 36, 80,
+			72, 0, 13, 68, 8, 84, 137, 28, 71, 108, 12, 34, 13, 100, 0, 0, 6, 65, 8, 71, 119, 0, 0, 10, 199, 52, 20, 141, 60, 193,
+			85, 52, 15, 0, 7, 196, 72, 243, 65, 56, 66, 0, 0, 6, 65, 12, 89, 119, 0, 0, 0, 8, 197, 52, 22, 9, 52, 16, 65, 7,
+			196, 36, 166, 133, 72, 15, 0, 0, 6, 65, 16, 72, 119, 0, 0, 11, 68, 24, 144, 200, 20, 83, 37, 91, 13, 0, 0, 16, 70, 24,
+			16, 197, 8, 243, 203, 83, 111, 37, 89, 71, 40, 49, 0, 17, 67, 20, 83, 128, 119, 50, 15, 84, 116, 50, 0, 81, 118, 97, 110, 32,
+			15, 67, 20, 83, 128, 119, 50, 15, 113, 83, 0, 81, 111, 102, 32, 9, 67, 20, 83, 128, 119, 50, 0, 49, 9, 67, 20, 83, 128, 13,
+			50, 0, 46, 0, 13, 4, 95, 100, 112, 116, 10, 49, 6, 113, 65, 115, 0, 0, 16, 65, 20, 37, 12, 65, 119, 55, 0, 44, 81, 109,
+			97, 105, 108, 32, 5, 65, 20, 119, 0, 0, 18, 71, 76, 245, 66, 72, 85, 20, 20, 89, 40, 71, 34, 6, 111, 47, 13, 0, 10, 199,
+			52, 18, 143, 72, 85, 20, 20, 67, 16, 71, 12, 245, 67, 32, 85, 20, 20, 49, 40, 91, 6, 111, 47, 0, 16, 70, 21, 0, 85, 48,
+			85, 0, 119, 48, 122, 55, 6, 111, 47, 0, 0, 9, 67, 92, 146, 128, 85, 2, 123, 0, 9, 67, 28, 146, 128, 100, 2, 123, 0, 0,
+			0, 6, 65, 24, 111, 83, 0, 0, 0, 7, 196, 32, 20, 5, 72, 15, 0, 9, 198, 76, 227, 197, 104, 83, 0, 15, 9, 198, 45, 114,
+			83, 64, 83, 0, 15, 9, 198, 45, 34, 78, 44, 83, 0, 15, 0, 6, 65, 28, 100, 119, 0, 0, 0, 7, 196, 44, 85, 5, 56, 15,
+			6, 195, 44, 19, 128, 72, 0, 0, 12, 201, 36, 225, 197, 92, 146, 203, 20, 193, 0, 67, 6, 65, 32, 107, 115, 0, 0, 0, 0, 11,
+			1, 35, 107, 6, 111, 49, 57, 13, 0, 27, 0, 6, 65, 36, 37, 12, 0, 0, 34, 79, 104, 145, 75, 20, 226, 21, 37, 48, 133, 88,
+			19, 12, 36, 225, 192, 88, 37, 12, 49, 13, 50, 107, 124, 89, 71, 13, 84, 116, 55, 108, 68, 0, 13, 1, 37, 48, 14, 16, 122, 89,
+			6, 111, 50, 47, 0, 0, 0, 0, 7, 196, 72, 18, 197, 48, 15, 7, 196, 64, 82, 197, 48, 15, 7, 196, 32, 82, 197, 48, 15, 7,
+			196, 20, 146, 197, 48, 15, 7, 196, 8, 22, 133, 48, 15, 10, 198, 48, 147, 143, 48, 85, 77, 15, 66, 6, 65, 40, 57, 119, 0, 0,
+			0, 12, 201, 60, 225, 197, 48, 243, 198, 48, 146, 139, 67, 14, 1, 42, 89, 47, 6, 111, 16, 34, 111, 47, 38, 13, 0, 0, 9, 1,
+			43, 48, 55, 6, 110, 89, 0, 0, 7, 196, 104, 81, 197, 48, 15, 7, 196, 80, 17, 133, 48, 15, 7, 196, 72, 81, 197, 48, 15, 6,
+			65, 44, 49, 115, 0, 0, 8, 197, 64, 145, 80, 20, 192, 15, 8, 197, 44, 241, 80, 20, 192, 15, 8, 197, 76, 241, 80, 20, 192, 15,
+			8, 197, 49, 85, 20, 20, 192, 15, 0, 19, 72, 16, 84, 201, 48, 197, 83, 36, 80, 72, 111, 89, 108, 55, 109, 88, 37, 0, 8, 1,
+			46, 48, 110, 50, 47, 0, 0, 9, 1, 47, 89, 55, 6, 111, 91, 0, 0, 9, 3, 122, 39, 110, 88, 13, 50, 0, 13, 4, 95, 100,
+			105, 97, 6, 110, 65, 55, 125, 47, 0, 6, 65, 48, 111, 55, 0, 0, 21, 71, 64, 84, 137, 24, 84, 137, 20, 48, 108, 12, 34, 37,
+			83, 108, 12, 34, 6, 37, 0, 0, 8, 67, 40, 21, 211, 21, 0, 47, 0, 0, 6, 65, 52, 111, 65, 0, 0, 9, 198, 16, 243, 210,
+			16, 21, 0, 66, 6, 194, 104, 240, 46, 76, 0, 0, 0, 11, 70, 76, 241, 148, 92, 20, 133, 21, 0, 47, 11, 70, 32, 20, 132, 92,
+			20, 133, 21, 0, 47, 6, 65, 56, 111, 50, 0, 0, 10, 199, 12, 243, 15, 77, 49, 85, 52, 15, 0, 7, 196, 61, 32, 133, 72, 15,
+			0, 9, 198, 76, 227, 210, 44, 83, 0, 15, 14, 70, 76, 133, 70, 24, 83, 0, 91, 110, 83, 13, 55, 0, 9, 198, 81, 37, 70, 24,
+			83, 0, 15, 0, 7, 196, 44, 21, 133, 48, 15, 0, 7, 194, 61, 0, 46, 76, 28, 6, 195, 92, 16, 82, 8, 15, 1, 61, 100, 13,
+			55, 6, 123, 49, 47, 119, 49, 13, 50, 0, 0, 7, 196, 4, 226, 197, 72, 15, 0, 11, 199, 16, 241, 76, 52, 21, 9, 28, 66, 16,
+			0, 14, 69, 36, 211, 69, 57, 48, 108, 65, 6, 111, 50, 89, 0, 19, 1, 64, 9, 6, 115, 48, 13, 50, 89, 47, 4, 115, 34, 47,
+			38, 13, 9, 0, 6, 65, 64, 48, 119, 0, 0, 0, 12, 201, 76, 50, 1, 72, 210, 78, 44, 83, 0, 15, 0, 0, 6, 65, 68, 49,
+			109, 0, 0, 0, 0, 0, 10, 67, 56, 20, 201, 50, 116, 89, 37, 0, 7, 196, 104, 83, 69, 48, 15, 6, 65, 72, 111, 34, 0, 0,
+			6, 195, 60, 33, 82, 15, 0, 8, 67, 80, 129, 64, 86, 13, 0, 0, 12, 4, 95, 100, 111, 116, 48, 6, 110, 50, 47, 0, 0, 7,
+			196, 8, 81, 5, 48, 15, 7, 196, 20, 225, 197, 48, 15, 7, 65, 76, 111, 89, 0, 49, 0, 9, 198, 77, 0, 82, 80, 83, 0, 15,
+			8, 197, 77, 0, 84, 20, 192, 15, 9, 198, 77, 0, 84, 80, 84, 128, 15, 0, 0, 12, 201, 21, 80, 200, 5, 34, 83, 80, 145, 64,
+			68, 0, 7, 65, 80, 47, 119, 0, 49, 6, 65, 80, 47, 119, 0, 0, 0, 0, 0, 17, 70, 61, 1, 82, 21, 69, 5, 122, 48, 13,
+			34, 6, 111, 47, 13, 0, 9, 198, 9, 37, 78, 21, 69, 5, 66, 7, 196, 24, 16, 197, 80, 66, 6, 65, 84, 2, 109, 0, 0, 9,
+			198, 45, 114, 78, 80, 85, 0, 66, 7, 66, 85, 0, 21, 0, 47, 0, 0, 9, 198, 105, 113, 78, 16, 83, 0, 15, 9, 198, 64, 20,
+			129, 8, 83, 0, 15, 0, 14, 203, 45, 33, 68, 36, 85, 23, 4, 20, 132, 36, 112, 67, 10, 199, 44, 20, 130, 60, 226, 197, 48, 15,
+			6, 65, 88, 83, 119, 0, 0, 9, 198, 8, 18, 143, 56, 85, 0, 67, 5, 194, 5, 48, 15, 0, 0, 9, 198, 28, 145, 67, 32, 83,
+			0, 15, 0, 7, 196, 104, 85, 5, 48, 15, 7, 196, 44, 85, 5, 48, 15, 13, 68, 28, 84, 197, 48, 100, 119, 89, 13, 55, 0, 15,
+			8, 197, 13, 84, 150, 21, 48, 16, 12, 1, 92, 71, 6, 111, 49, 89, 55, 111, 91, 0, 6, 65, 92, 84, 119, 0, 0, 6, 195, 84,
+			145, 82, 15, 0, 0, 21, 72, 60, 225, 193, 77, 69, 146, 36, 160, 113, 50, 100, 116, 89, 47, 84, 34, 6, 123, 0, 0, 12, 68, 77,
+			82, 133, 80, 89, 109, 90, 6, 111, 0, 9, 68, 64, 21, 3, 32, 21, 0, 47, 7, 65, 96, 108, 49, 89, 0, 0, 15, 70, 40, 16,
+			209, 84, 85, 0, 90, 35, 49, 6, 111, 47, 0, 0, 0, 0, 5, 65, 100, 123, 0, 0, 0, 0, 18, 71, 92, 84, 212, 20, 194, 74,
+			44, 85, 111, 89, 47, 13, 55, 13, 49, 0, 9, 198, 77, 4, 143, 44, 177, 76, 15, 9, 198, 76, 210, 69, 77, 1, 76, 15, 9, 198,
+			81, 34, 65, 56, 113, 76, 15, 0, 7, 65, 104, 88, 111, 47, 0, 0, 8, 197, 28, 85, 201, 48, 64, 72, 0, 6, 195, 92, 20, 192,
+			15, 10, 199, 88, 243, 23, 5, 52, 197, 56, 15, 7, 195, 92, 20, 192, 72, 46, 0, 9, 198, 76, 50, 15, 24, 97, 76, 15, 0, 0,
+			8, 197, 8, 241, 77, 20, 192, 15, 8, 197, 28, 19, 77, 20, 192, 15, 6, 195, 61, 1, 78, 15, 12, 71, 52, 147, 11, 76, 128, 75,
+			20, 21, 0, 47, 0, 0, 8, 197, 92, 244, 132, 20, 224, 72, 0, 0, 8, 66, 12, 16, 49, 115, 0, 25, 0, 0, 0, 0, 0, 18,
+			69, 84, 37, 78, 81, 80, 40, 12, 6, 71, 40, 12, 50, 47, 40, 12, 0, 18, 4, 95, 48, 67, 111, 107, 6, 113, 50, 72, 111, 34,
+			47, 89, 47, 13, 0, 0, 9, 198, 88, 84, 132, 21, 35, 208, 67, 9, 198, 105, 112, 67, 33, 65, 76, 15, 9, 198, 44, 229, 80, 64,
+			83, 0, 15, 9, 198, 29, 33, 80, 64, 83, 0, 15, 8, 197, 48, 146, 141, 21, 32, 15, 0, 9, 198, 88, 195, 212, 80, 84, 128, 15,
+			9, 198, 76, 229, 71, 28, 84, 128, 15, 9, 198, 76, 227, 212, 80, 84, 128, 15, 9, 198, 76, 209, 76, 80, 84, 128, 15, 9, 198, 76,
+			194, 75, 44, 84, 128, 15, 9, 198, 76, 177, 76, 80, 84, 128, 15, 9, 198, 76, 50, 5, 52, 84, 128, 15, 9, 198, 65, 37, 76, 48,
+			84, 128, 15, 9, 198, 24, 195, 212, 80, 84, 128, 15, 9, 198, 24, 195, 196, 16, 84, 128, 15, 9, 198, 17, 32, 77, 52, 84, 128, 15,
+			9, 198, 9, 35, 197, 16, 84, 128, 15, 8, 197, 104, 242, 69, 81, 48, 66, 0, 0, 6, 195, 52, 84, 192, 15, 7, 196, 104, 85, 133,
+			72, 15, 7, 196, 48, 85, 133, 72, 15, 7, 196, 21, 33, 197, 72, 15, 7, 196, 16, 21, 133, 72, 15, 0, 11, 200, 92, 19, 147, 12,
+			128, 80, 20, 224, 66, 9, 198, 105, 114, 74, 52, 83, 0, 15, 9, 68, 76, 149, 5, 76, 21, 0, 47, 0, 13, 68, 5, 4, 137, 48,
+			115, 48, 34, 6, 108, 55, 0, 0, 8, 197, 52, 243, 77, 20, 192, 15, 0, 12, 68, 56, 16, 137, 40, 50, 35, 71, 6, 123, 0, 0,
+			8, 197, 44, 243, 132, 20, 224, 72, 22, 67, 56, 145, 84, 10, 50, 6, 37, 47, 15, 65, 4, 119, 34, 0, 81, 109, 101, 101, 114, 32,
+			11, 67, 56, 145, 84, 50, 4, 37, 47, 0, 9, 10, 67, 104, 144, 200, 88, 2, 108, 101, 0, 13, 4, 95, 116, 108, 100, 47, 6, 108,
+			55, 72, 13, 0, 0, 0, 8, 197, 44, 227, 203, 20, 192, 15, 8, 197, 29, 37, 87, 20, 192, 15, 0, 0, 8, 197, 32, 80, 130, 20,
+			224, 72, 0, 9, 198, 4, 211, 210, 21, 69, 5, 67, 0, 0, 10, 199, 44, 19, 5, 24, 21, 5, 72, 15, 0, 0, 0, 0, 0, 9,
+			198, 77, 68, 149, 36, 177, 76, 15, 0, 16, 70, 64, 148, 212, 4, 50, 5, 48, 37, 89, 47, 6, 116, 91, 0, 0, 8, 197, 72, 243,
+			77, 20, 192, 15, 8, 197, 32, 243, 77, 20, 192, 15, 0, 7, 196, 72, 81, 5, 56, 15, 0, 0, 0, 8, 197, 36, 164, 211, 20, 192,
+			15, 8, 197, 92, 145, 71, 20, 192, 15, 8, 197, 64, 241, 75, 20, 192, 15, 8, 197, 61, 32, 75, 20, 192, 15, 8, 197, 40, 241, 75,
+			20, 192, 15, 8, 197, 8, 85, 71, 20, 192, 15, 8, 197, 45, 33, 71, 20, 192, 15, 5, 194, 8, 80, 13, 0, 0, 0, 9, 198, 17,
+			147, 129, 77, 66, 69, 67, 0, 0, 7, 195, 16, 21, 0, 72, 8, 6, 195, 16, 21, 0, 72, 0, 9, 198, 88, 243, 210, 16, 81, 76,
+			65, 11, 68, 4, 195, 5, 76, 116, 55, 13, 89, 0, 13, 68, 4, 193, 21, 76, 116, 55, 72, 6, 110, 89, 0, 9, 198, 77, 66, 74,
+			25, 49, 76, 15, 9, 198, 77, 4, 129, 56, 177, 76, 15, 9, 198, 76, 50, 15, 52, 209, 76, 15, 7, 195, 92, 19, 148, 72, 8, 0,
+			9, 198, 60, 181, 15, 8, 84, 128, 66, 21, 72, 8, 194, 84, 104, 180, 137, 20, 112, 71, 55, 108, 47, 89, 49, 34, 37, 12, 81, 0,
+			9, 198, 88, 195, 203, 44, 84, 128, 15, 9, 198, 88, 194, 69, 28, 84, 128, 15, 9, 198, 77, 68, 143, 64, 84, 128, 15, 9, 198, 77,
+			67, 198, 24, 84, 128, 15, 9, 198, 77, 2, 74, 44, 84, 128, 15, 9, 198, 76, 195, 205, 52, 84, 128, 15, 9, 198, 76, 195, 197, 8,
+			84, 128, 15, 9, 198, 76, 194, 78, 28, 84, 128, 15, 9, 198, 76, 194, 74, 52, 84, 128, 15, 9, 198, 76, 193, 78, 80, 84, 128, 15,
+			9, 198, 76, 177, 69, 48, 84, 128, 15, 9, 198, 76, 163, 203, 44, 84, 128, 15, 9, 198, 65, 37, 73, 48, 84, 128, 15, 9, 198, 65,
+			35, 208, 64, 84, 128, 15, 9, 198, 64, 197, 78, 16, 84, 128, 15, 9, 198, 64, 192, 75, 44, 84, 128, 15, 9, 198, 64, 145, 78, 80,
+			84, 128, 15, 9, 198, 64, 19, 148, 76, 84, 128, 15, 9, 198, 52, 243, 147, 80, 84, 128, 15, 9, 198, 52, 81, 82, 16, 84, 128, 15,
+			9, 198, 52, 80, 78, 16, 84, 128, 15, 9, 198, 49, 81, 213, 8, 84, 128, 15, 9, 198, 45, 114, 74, 48, 84, 128, 15, 9, 198, 45,
+			112, 83, 80, 84, 128, 15, 9, 198, 44, 226, 75, 44, 84, 128, 15, 9, 198, 44, 224, 80, 64, 84, 128, 15, 9, 198, 44, 197, 73, 80,
+			84, 128, 15, 9, 198, 44, 195, 206, 80, 84, 128, 15, 9, 198, 44, 194, 69, 16, 84, 128, 15, 9, 198, 44, 193, 70, 24, 84, 128, 15,
+			9, 198, 44, 192, 80, 64, 84, 128, 15, 9, 198, 36, 226, 193, 16, 84, 128, 15, 9, 198, 29, 35, 206, 16, 84, 128, 15, 9, 198, 29,
+			34, 69, 56, 84, 128, 15, 9, 198, 28, 194, 77, 52, 84, 128, 15, 9, 198, 24, 195, 206, 44, 84, 128, 15, 17, 70, 24, 194, 82, 80,
+			84, 128, 83, 55, 110, 34, 47, 13, 34, 0, 15, 9, 198, 24, 194, 78, 80, 84, 128, 15, 9, 198, 24, 194, 75, 44, 84, 128, 15, 9,
+			198, 17, 37, 73, 48, 84, 128, 15, 9, 198, 12, 128, 82, 80, 84, 128, 15, 9, 198, 8, 194, 75, 44, 84, 128, 15, 9, 198, 8, 81,
+			78, 16, 84, 128, 15, 9, 198, 92, 19, 142, 20, 84, 128, 8, 0, 0, 7, 196, 92, 21, 5, 72, 15, 7, 196, 76, 81, 5, 72, 15,
+			7, 196, 48, 81, 197, 72, 15, 7, 196, 48, 17, 197, 72, 15, 7, 196, 28, 17, 5, 72, 15, 7, 196, 21, 69, 5, 72, 15, 0, 9,
+			198, 77, 68, 143, 53, 1, 76, 15, 9, 198, 44, 20, 9, 81, 65, 76, 15, 9, 198, 5, 3, 211, 80, 83, 0, 15, 17, 70, 40, 20,
+			146, 21, 65, 76, 90, 35, 34, 13, 47, 6, 111, 55, 0, 0, 0, 29, 75, 20, 193, 147, 80, 81, 5, 57, 67, 195, 33, 64, 4, 111,
+			55, 83, 6, 89, 47, 119, 72, 13, 50, 47, 39, 100, 47, 0, 8, 197, 92, 145, 77, 20, 192, 15, 8, 197, 77, 64, 77, 20, 192, 15,
+			8, 197, 72, 19, 77, 20, 192, 15, 8, 197, 64, 145, 77, 20, 192, 15, 0, 7, 196, 104, 85, 5, 56, 15, 0, 13, 69, 105, 82, 68,
+			20, 224, 88, 124, 72, 13, 50, 0, 0, 0, 14, 69, 16, 85, 1, 36, 192, 72, 119, 47, 6, 116, 57, 0, 8, 197, 80, 85, 71, 20,
+			192, 15, 8, 197, 44, 20, 19, 20, 192, 15, 8, 197, 33, 84, 211, 20, 192, 15, 8, 197, 45, 33, 75, 20, 192, 15, 8, 197, 32, 82,
+			75, 20, 192, 15, 9, 198, 64, 21, 18, 36, 245, 0, 67, 0, 10, 199, 76, 50, 18, 60, 82, 69, 72, 15, 10, 199, 20, 84, 135, 37,
+			53, 5, 72, 15, 0, 8, 197, 45, 83, 142, 20, 224, 72, 0, 0, 11, 68, 52, 148, 211, 20, 65, 108, 89, 13, 0, 0, 10, 199, 92,
+			81, 215, 36, 166, 133, 72, 15, 0, 9, 198, 53, 84, 197, 81, 65, 64, 66, 9, 198, 44, 242, 197, 81, 65, 64, 66, 0, 24, 73, 8,
+			245, 82, 28, 243, 132, 36, 84, 128, 71, 40, 34, 101, 6, 122, 50, 72, 37, 12, 13, 34, 0, 0, 7, 196, 89, 32, 71, 20, 15, 0,
+			0, 0, 9, 197, 104, 243, 1, 56, 112, 66, 8, 0, 0, 0, 0, 11, 67, 12, 17, 133, 49, 115, 83, 6, 119, 0, 0, 13, 69, 16,
+			145, 83, 20, 192, 72, 37, 88, 13, 55, 0, 8, 197, 77, 82, 203, 20, 192, 15, 8, 197, 72, 149, 19, 20, 192, 15, 6, 195, 104, 146,
+			142, 72, 6, 195, 104, 146, 142, 72, 0, 0, 9, 4, 95, 111, 114, 100, 72, 13, 0, 0, 0, 8, 197, 53, 84, 203, 21, 64, 66, 8,
+			197, 8, 241, 75, 21, 64, 66, 15, 4, 95, 109, 99, 110, 65, 6, 116, 49, 14, 16, 113, 50, 0, 0, 14, 67, 20, 230, 128, 111, 50,
+			88, 122, 84, 122, 34, 47, 0, 0, 9, 198, 105, 113, 78, 28, 83, 0, 15, 9, 198, 77, 68, 137, 8, 33, 76, 15, 17, 70, 76, 52,
+			129, 8, 33, 76, 89, 49, 34, 111, 71, 13, 55, 0, 15, 9, 198, 45, 112, 78, 76, 83, 0, 15, 9, 198, 9, 32, 66, 8, 83, 0,
+			15, 9, 198, 45, 33, 85, 64, 83, 0, 15, 8, 197, 76, 197, 73, 21, 32, 15, 8, 197, 52, 146, 141, 21, 32, 15, 8, 197, 44, 241,
+			84, 21, 32, 15, 8, 197, 24, 193, 77, 21, 32, 15, 0, 9, 198, 105, 112, 78, 28, 84, 128, 15, 9, 198, 81, 114, 84, 80, 84, 128,
+			15, 9, 198, 81, 33, 75, 44, 84, 128, 15, 9, 198, 77, 69, 77, 64, 84, 128, 15, 9, 198, 77, 67, 212, 80, 84, 128, 15, 9, 198,
+			77, 65, 75, 44, 84, 128, 15, 9, 198, 77, 65, 73, 28, 84, 128, 15, 9, 198, 77, 64, 75, 44, 84, 128, 15, 9, 198, 76, 195, 194,
+			8, 84, 128, 15, 9, 198, 76, 194, 74, 44, 84, 128, 15, 9, 198, 76, 194, 66, 8, 84, 128, 15, 9, 198, 72, 243, 211, 80, 84, 128,
+			15, 9, 198, 65, 35, 212, 76, 84, 128, 15, 9, 198, 57, 80, 200, 80, 84, 128, 15, 9, 198, 44, 244, 147, 80, 84, 128, 15, 9, 198,
+			32, 19, 83, 80, 84, 128, 15, 9, 198, 29, 34, 69, 64, 84, 128, 15, 9, 198, 28, 195, 197, 36, 84, 128, 15, 9, 198, 28, 194, 66,
+			8, 84, 128, 15, 9, 198, 17, 114, 78, 28, 84, 128, 15, 9, 198, 17, 33, 75, 44, 84, 128, 15, 9, 198, 17, 33, 73, 56, 84, 128,
+			15, 9, 198, 9, 35, 197, 36, 84, 128, 15, 9, 198, 8, 243, 19, 80, 84, 128, 15, 9, 198, 8, 197, 70, 24, 84, 128, 15, 0, 11,
+			200, 92, 19, 140, 84, 145, 5, 56, 64, 66, 0, 0, 9, 198, 28, 226, 70, 24, 83, 0, 15, 9, 198, 21, 2, 83, 80, 83, 0, 15,
+			8, 197, 76, 18, 203, 21, 32, 15, 8, 197, 64, 192, 71, 21, 32, 15, 8, 197, 64, 146, 203, 21, 32, 15, 8, 197, 44, 144, 203, 21,
+			32, 15, 8, 197, 32, 244, 139, 21, 32, 15, 8, 197, 32, 19, 135, 21, 32, 15, 0, 0, 8, 197, 16, 243, 77, 20, 192, 15, 0, 21,
+			72, 4, 48, 197, 77, 51, 201, 72, 80, 35, 49, 89, 111, 89, 58, 6, 35, 34, 13, 0, 0, 0, 0, 8, 197, 92, 148, 211, 20, 192,
+			15, 8, 197, 33, 85, 19, 20, 192, 15, 8, 197, 9, 84, 211, 20, 192, 15, 8, 197, 77, 65, 75, 20, 192, 15, 8, 197, 65, 82, 203,
+			20, 192, 15, 8, 197, 32, 241, 87, 20, 192, 8, 0, 0, 0, 0, 0, 13, 72, 20, 229, 5, 73, 4, 137, 76, 80, 21, 0, 47, 0,
+			16, 70, 104, 83, 26, 5, 65, 64, 88, 36, 55, 88, 35, 47, 13, 0, 11, 70, 52, 19, 23, 5, 33, 64, 21, 0, 47, 0, 18, 71,
+			4, 53, 9, 21, 5, 78, 80, 116, 49, 89, 37, 48, 110, 50, 47, 0, 0, 12, 68, 52, 20, 135, 20, 65, 116, 34, 90, 13, 0, 7,
+			66, 21, 32, 13, 34, 0, 0, 7, 195, 16, 145, 64, 72, 28, 0, 0, 0, 0, 0, 0, 0, 15, 66, 16, 80, 72, 13, 15, 119, 50,
+			0, 81, 101, 101, 110, 32, 7, 66, 16, 80, 72, 13, 0, 0, 0, 0, 9, 3, 109, 39, 110, 65, 13, 50, 0, 0, 14, 69, 9, 81,
+			7, 21, 64, 71, 110, 75, 6, 111, 47, 0, 8, 197, 24, 19, 19, 21, 64, 66, 15, 69, 12, 195, 211, 21, 64, 49, 55, 122, 88, 6,
+			111, 47, 0, 0, 11, 200, 36, 225, 143, 72, 208, 84, 36, 80, 67, 0, 8, 197, 88, 193, 73, 21, 32, 15, 8, 197, 57, 83, 77, 21,
+			32, 15, 8, 197, 49, 82, 77, 21, 32, 15, 8, 197, 17, 35, 205, 21, 32, 15, 0, 10, 67, 41, 84, 153, 90, 109, 34, 37, 0, 0,
+			5, 194, 21, 48, 15, 0, 0, 9, 198, 8, 146, 154, 36, 83, 132, 66, 8, 197, 104, 18, 203, 21, 32, 15, 8, 197, 92, 18, 203, 21,
+			32, 15, 8, 197, 77, 3, 203, 21, 32, 15, 8, 197, 64, 242, 203, 21, 32, 15, 8, 197, 52, 82, 203, 21, 32, 15, 8, 197, 48, 82,
+			203, 21, 32, 15, 8, 197, 44, 192, 71, 21, 32, 15, 8, 197, 44, 18, 203, 21, 32, 15, 8, 197, 40, 19, 139, 21, 32, 15, 8, 197,
+			40, 18, 203, 21, 32, 15, 8, 197, 33, 83, 139, 21, 32, 15, 8, 197, 32, 243, 135, 21, 32, 15, 8, 197, 32, 242, 203, 21, 32, 15,
+			8, 197, 32, 146, 203, 21, 32, 15, 8, 197, 32, 146, 135, 21, 32, 15, 8, 197, 9, 83, 139, 21, 32, 15, 8, 197, 8, 243, 139, 21,
+			32, 15, 8, 197, 8, 17, 199, 21, 32, 15, 14, 69, 104, 245, 193, 5, 32, 88, 122, 85, 6, 115, 34, 0, 0, 0, 0, 0, 0, 0,
+			22, 66, 4, 192, 116, 55, 9, 49, 6, 116, 57, 72, 116, 0, 44, 81, 113, 97, 101, 100, 97, 32, 0, 0, 0, 0, 0, 22, 72, 29,
+			32, 86, 20, 226, 1, 28, 80, 100, 34, 115, 84, 13, 50, 107, 6, 115, 100, 13, 0, 0, 12, 68, 28, 83, 9, 28, 100, 119, 55, 13,
+			100, 0, 0, 0, 22, 73, 9, 82, 84, 20, 228, 200, 84, 148, 192, 71, 124, 47, 13, 50, 89, 107, 6, 124, 89, 0, 22, 73, 8, 147,
+			142, 20, 228, 200, 84, 148, 192, 71, 108, 50, 13, 50, 89, 107, 6, 124, 89, 0, 9, 198, 12, 132, 137, 77, 65, 78, 15, 7, 196, 92,
+			147, 4, 20, 72, 0, 8, 197, 61, 3, 1, 28, 80, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 92, 147, 20, 72, 0, 0,
+			8, 197, 21, 66, 75, 21, 64, 67, 8, 197, 9, 34, 75, 21, 64, 66, 11, 70, 4, 225, 18, 60, 145, 0, 21, 0, 47, 0, 12, 201,
+			60, 225, 197, 72, 145, 70, 48, 146, 139, 67, 0, 9, 198, 9, 37, 83, 76, 83, 0, 15, 9, 198, 45, 112, 75, 44, 83, 0, 15, 9,
+			198, 29, 34, 69, 104, 83, 0, 15, 8, 197, 52, 20, 141, 21, 32, 15, 8, 197, 104, 246, 133, 21, 32, 66, 0, 0, 10, 199, 77, 3,
+			210, 80, 145, 86, 20, 66, 10, 66, 21, 80, 119, 10, 109, 12, 0, 13, 0, 7, 196, 80, 245, 133, 72, 15, 7, 196, 44, 21, 133, 72,
+			15, 7, 196, 20, 229, 5, 72, 15, 0, 9, 198, 77, 66, 69, 24, 83, 0, 15, 9, 198, 45, 34, 69, 8, 83, 0, 15, 8, 197, 104,
+			19, 135, 21, 32, 15, 8, 197, 88, 147, 135, 21, 32, 15, 8, 197, 80, 83, 135, 21, 32, 15, 8, 197, 77, 82, 75, 21, 32, 15, 8,
+			197, 76, 224, 75, 21, 32, 15, 8, 197, 44, 84, 139, 21, 32, 15, 8, 197, 44, 19, 139, 21, 32, 15, 8, 197, 40, 243, 135, 21, 32,
+			15, 8, 197, 32, 20, 139, 21, 32, 15, 8, 197, 16, 243, 139, 21, 32, 15, 8, 197, 8, 192, 75, 21, 32, 15, 0, 0, 18, 70, 92,
+			84, 133, 48, 65, 78, 85, 108, 12, 34, 13, 55, 72, 13, 50, 0, 0, 14, 68, 8, 84, 137, 56, 71, 108, 12, 34, 6, 108, 50, 0,
+			0, 0, 0, 0, 0, 0, 9, 198, 56, 17, 18, 84, 178, 197, 66, 12, 68, 8, 84, 212, 20, 71, 111, 89, 47, 13, 0, 0, 8, 197,
+			65, 33, 77, 36, 80, 65, 0, 0, 0, 0, 8, 197, 52, 148, 211, 36, 80, 65, 0, 0, 0, 10, 199, 52, 241, 9, 56, 85, 20, 20,
+			67, 0, 8, 197, 49, 144, 197, 84, 208, 15, 11, 200, 92, 20, 211, 21, 33, 84, 80, 80, 67, 20, 72, 12, 128, 77, 9, 33, 84, 80,
+			80, 91, 35, 65, 71, 34, 6, 111, 47, 13, 0, 0, 0, 12, 67, 8, 82, 1, 71, 119, 10, 107, 6, 115, 0, 0, 0, 0, 9, 198,
+			40, 19, 149, 5, 34, 64, 67, 10, 68, 12, 129, 67, 44, 76, 111, 49, 0, 0, 18, 70, 8, 16, 212, 21, 34, 69, 71, 116, 49, 47,
+			6, 108, 12, 34, 37, 0, 0, 9, 198, 52, 148, 196, 73, 82, 192, 65, 0, 6, 195, 16, 149, 0, 72, 0, 9, 198, 17, 112, 82, 72,
+			83, 0, 15, 11, 70, 52, 81, 9, 12, 19, 0, 21, 0, 47, 0, 7, 196, 72, 242, 197, 72, 15, 9, 67, 32, 146, 128, 107, 2, 123,
+			0, 0, 9, 198, 76, 50, 1, 88, 245, 0, 66, 16, 70, 12, 245, 80, 48, 85, 0, 49, 40, 48, 55, 6, 111, 47, 0, 16, 70, 52,
+			19, 131, 32, 85, 0, 65, 116, 50, 91, 6, 111, 47, 0, 15, 70, 13, 35, 195, 32, 85, 0, 49, 34, 113, 91, 6, 111, 0, 0, 0,
+			0, 7, 196, 80, 21, 5, 72, 15, 7, 196, 64, 84, 5, 72, 15, 7, 196, 44, 244, 5, 72, 15, 7, 196, 8, 85, 5, 72, 15, 0,
+			0, 0, 0, 7, 195, 8, 83, 128, 72, 46, 0, 0, 24, 73, 16, 145, 148, 60, 225, 197, 72, 147, 135, 72, 108, 83, 47, 4, 113, 68,
+			6, 119, 34, 108, 68, 0, 0, 0, 0, 0, 0, 0, 12, 201, 92, 19, 148, 72, 245, 87, 20, 225, 0, 66, 9, 198, 41, 80, 137, 48,
+			85, 77, 15, 0, 23, 67, 88, 243, 132, 84, 113, 50, 10, 47, 116, 10, 47, 13, 0, 82, 100, 97, 116, 32, 100, 101, 32, 0, 17, 71,
+			72, 240, 200, 20, 99, 210, 80, 34, 39, 91, 6, 83, 39, 34, 0, 0, 0, 0, 0, 7, 196, 88, 241, 197, 48, 15, 7, 196, 80, 81,
+			197, 48, 15, 7, 196, 56, 17, 197, 48, 15, 7, 196, 44, 81, 197, 48, 15, 7, 196, 32, 17, 197, 48, 15, 7, 196, 36, 161, 5, 48,
+			15, 0, 0, 0, 0, 11, 200, 52, 148, 211, 37, 52, 201, 64, 144, 67, 6, 195, 9, 33, 83, 15, 0, 8, 197, 52, 85, 19, 20, 192,
+			15, 7, 66, 28, 80, 100, 13, 0, 0, 0, 0, 7, 196, 8, 20, 133, 80, 66, 9, 198, 48, 243, 195, 32, 83, 128, 15, 0, 9, 198,
+			76, 224, 66, 8, 83, 0, 15, 9, 198, 76, 163, 197, 52, 83, 0, 15, 9, 198, 44, 224, 66, 8, 83, 0, 15, 9, 198, 29, 32, 66,
+			8, 83, 0, 15, 9, 198, 28, 243, 195, 32, 83, 0, 15, 9, 198, 17, 33, 85, 80, 83, 0, 15, 0, 0, 6, 195, 32, 80, 148, 72,
+			0, 10, 199, 56, 17, 5, 72, 128, 78, 16, 67, 17, 70, 16, 85, 197, 88, 84, 128, 72, 13, 6, 85, 119, 84, 13, 34, 0, 16, 70,
+			8, 245, 68, 60, 148, 128, 71, 40, 72, 58, 6, 115, 34, 0, 9, 198, 76, 195, 203, 44, 84, 128, 15, 9, 198, 76, 194, 68, 16, 84,
+			128, 15, 9, 198, 56, 144, 200, 80, 84, 128, 15, 9, 198, 44, 193, 68, 16, 84, 128, 15, 9, 198, 9, 32, 76, 48, 84, 128, 15, 9,
+			198, 77, 65, 76, 48, 84, 128, 15, 0, 9, 198, 77, 65, 67, 32, 83, 0, 15, 9, 198, 44, 226, 66, 8, 83, 0, 15, 9, 198, 25,
+			35, 205, 52, 83, 0, 15, 9, 198, 76, 50, 5, 16, 83, 0, 15, 8, 196, 12, 128, 79, 76, 15, 65, 0, 8, 197, 52, 20, 135, 21,
+			48, 16, 0, 10, 198, 28, 85, 197, 21, 53, 0, 72, 46, 0, 7, 196, 56, 85, 133, 48, 15, 7, 196, 44, 85, 133, 48, 15, 7, 196,
+			56, 21, 133, 48, 15, 0, 0, 11, 200, 52, 148, 214, 5, 69, 9, 56, 112, 65, 0, 0, 0, 0, 0, 12, 68, 76, 84, 137, 20, 89,
+			108, 12, 34, 37, 0, 0, 7, 196, 28, 82, 1, 16, 72, 0, 12, 201, 28, 83, 9, 40, 178, 5, 8, 33, 82, 15, 0, 0, 15, 70,
+			48, 21, 82, 20, 229, 0, 55, 122, 34, 6, 116, 67, 0, 13, 68, 88, 84, 147, 4, 84, 6, 111, 34, 88, 115, 0, 0, 6, 195, 104,
+			246, 143, 66, 0, 0, 16, 3, 226, 130, 172, 6, 121, 16, 122, 47, 4, 119, 49, 13, 50, 0, 0, 18, 71, 4, 211, 213, 72, 85, 20,
+			20, 115, 65, 40, 16, 6, 111, 47, 13, 0, 0, 7, 196, 72, 241, 5, 48, 15, 7, 196, 40, 241, 5, 48, 15, 7, 196, 4, 225, 197,
+			48, 15, 0, 0, 22, 73, 64, 244, 148, 20, 97, 85, 36, 195, 5, 48, 113, 34, 47, 13, 83, 6, 13, 57, 13, 0, 0, 26, 74, 84,
+			197, 18, 5, 98, 79, 48, 85, 20, 20, 110, 55, 47, 34, 115, 84, 37, 122, 55, 6, 111, 47, 13, 0, 0, 6, 195, 40, 245, 87, 72,
+			0, 0, 19, 72, 56, 243, 210, 16, 83, 9, 40, 176, 50, 122, 34, 72, 13, 55, 13, 49, 0, 0, 9, 198, 12, 16, 137, 56, 85, 0,
+			67, 0, 7, 196, 52, 245, 5, 80, 66, 9, 198, 81, 35, 203, 44, 83, 128, 15, 7, 196, 104, 241, 1, 80, 66, 17, 67, 32, 85, 0,
+			107, 13, 47, 15, 119, 50, 0, 81, 101, 101, 110, 32, 10, 67, 32, 85, 0, 107, 13, 47, 0, 46, 14, 4, 95, 111, 103, 111, 6, 122,
+			101, 122, 50, 111, 49, 0, 0, 16, 205, 64, 20, 148, 36, 165, 143, 61, 38, 137, 81, 65, 82, 76, 66, 9, 198, 45, 35, 197, 104, 83,
+			0, 15, 9, 198, 44, 194, 78, 28, 83, 0, 15, 0, 9, 198, 5, 66, 5, 56, 85, 77, 15, 0, 11, 67, 17, 81, 84, 72, 109, 6,
+			111, 47, 0, 9, 198, 44, 16, 137, 56, 85, 0, 67, 0, 7, 196, 72, 246, 133, 80, 66, 7, 196, 72, 18, 197, 80, 66, 7, 196, 44,
+			242, 197, 80, 66, 0, 11, 200, 36, 225, 210, 36, 164, 5, 56, 64, 66, 9, 198, 17, 35, 208, 64, 83, 0, 15, 9, 198, 77, 67, 208,
+			64, 83, 0, 15, 9, 198, 45, 34, 69, 28, 83, 0, 15, 6, 194, 37, 48, 72, 46, 0, 0, 9, 198, 77, 68, 133, 56, 113, 76, 15,
+			0, 11, 68, 49, 83, 131, 32, 55, 110, 50, 91, 0, 7, 196, 80, 149, 5, 48, 15, 7, 196, 56, 85, 5, 48, 15, 7, 196, 17, 85,
+			133, 48, 15, 7, 196, 52, 85, 5, 48, 15, 0, 0, 0, 0, 0, 7, 196, 4, 210, 78, 60, 65, 6, 195, 52, 146, 142, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 14, 4, 95, 98, 114, 118, 71, 14, 16, 6, 119, 84, 13, 0, 0, 8, 67, 56, 85, 192, 50, 127, 0, 9,
+			198, 12, 243, 148, 72, 243, 5, 66, 0, 0, 0, 8, 197, 53, 84, 141, 20, 192, 15, 18, 4, 95, 97, 99, 50, 72, 6, 110, 71, 111,
+			55, 6, 115, 37, 101, 109, 0, 0, 7, 196, 60, 81, 133, 56, 15, 0, 0, 0, 8, 197, 56, 20, 193, 4, 192, 66, 8, 197, 76, 145,
+			80, 20, 192, 15, 8, 197, 72, 147, 139, 20, 192, 15, 8, 197, 32, 18, 211, 20, 192, 15, 8, 197, 12, 148, 139, 20, 192, 15, 0, 0,
+			0, 9, 198, 52, 240, 200, 80, 83, 128, 72, 7, 196, 57, 81, 1, 80, 8, 0, 9, 198, 44, 227, 203, 44, 83, 0, 15, 0, 12, 68,
+			16, 147, 133, 72, 72, 37, 50, 6, 119, 0, 0, 0, 9, 198, 105, 112, 66, 8, 84, 128, 15, 9, 198, 92, 81, 76, 16, 84, 128, 15,
+			9, 198, 77, 5, 84, 80, 84, 128, 15, 9, 198, 77, 1, 84, 80, 84, 128, 15, 9, 198, 44, 193, 85, 52, 84, 128, 15, 9, 198, 44,
+			193, 84, 76, 84, 128, 15, 0, 0, 8, 197, 65, 35, 195, 21, 48, 66, 13, 68, 12, 245, 133, 72, 49, 110, 84, 13, 34, 0, 15, 0,
+			0, 9, 198, 52, 148, 194, 73, 82, 75, 65, 18, 71, 48, 81, 83, 72, 81, 197, 48, 55, 119, 89, 34, 119, 100, 13, 55, 0, 11, 199,
+			72, 81, 5, 44, 21, 133, 48, 15, 65, 0, 0, 8, 196, 92, 20, 133, 56, 72, 46, 0, 0, 7, 196, 92, 83, 69, 48, 15, 0, 8,
+			197, 56, 21, 143, 20, 192, 66, 8, 197, 80, 147, 135, 20, 192, 15, 8, 197, 52, 84, 135, 20, 192, 15, 8, 197, 44, 243, 139, 20, 192,
+			15, 8, 197, 28, 244, 135, 20, 192, 15, 8, 197, 52, 242, 203, 20, 192, 15, 6, 194, 20, 224, 72, 8, 0, 13, 3, 95, 51, 88, 72,
+			6, 111, 34, 47, 13, 101, 0, 0, 11, 68, 88, 84, 146, 20, 84, 111, 34, 13, 0, 23, 73, 4, 48, 197, 77, 51, 201, 72, 84, 192,
+			35, 49, 89, 111, 89, 58, 6, 35, 34, 13, 89, 0, 9, 198, 44, 192, 82, 36, 225, 84, 67, 14, 3, 95, 48, 67, 107, 6, 113, 50,
+			72, 13, 34, 47, 0, 0, 0, 8, 197, 104, 241, 207, 20, 64, 66, 0, 0, 6, 195, 92, 84, 132, 72, 0, 0, 0, 0, 0, 0, 8,
+			197, 53, 83, 77, 20, 192, 15, 8, 197, 49, 83, 77, 20, 192, 15, 8, 197, 45, 83, 77, 20, 192, 15, 0, 7, 196, 20, 97, 133, 56,
+			15, 0, 14, 69, 52, 85, 5, 20, 224, 65, 111, 47, 6, 119, 50, 0, 0, 6, 195, 25, 34, 83, 15, 0, 8, 197, 92, 19, 139, 20,
+			192, 15, 8, 197, 92, 18, 203, 20, 192, 15, 8, 197, 88, 193, 71, 20, 192, 15, 8, 197, 80, 147, 139, 20, 192, 15, 8, 197, 76, 146,
+			203, 20, 192, 15, 8, 197, 44, 147, 139, 20, 192, 15, 8, 197, 32, 18, 203, 20, 192, 15, 8, 197, 24, 243, 139, 20, 192, 15, 8, 197,
+			16, 148, 211, 20, 192, 15, 8, 197, 92, 242, 203, 20, 192, 15, 8, 197, 88, 83, 139, 20, 192, 15, 8, 197, 80, 80, 203, 20, 192, 15,
+			7, 66, 40, 80, 57, 13, 0, 15, 3, 95, 49, 57, 50, 6, 119, 100, 13, 50, 47, 37, 50, 0, 0, 22, 72, 16, 84, 207, 56, 64,
+			78, 45, 48, 72, 111, 89, 113, 50, 72, 6, 116, 68, 49, 89, 0, 12, 3, 95, 49, 56, 6, 116, 101, 47, 37, 50, 0, 0, 0, 0,
+			9, 198, 81, 33, 85, 104, 83, 0, 15, 9, 198, 45, 112, 66, 8, 83, 0, 15, 9, 198, 45, 33, 78, 28, 83, 0, 15, 9, 198, 44,
+			229, 84, 76, 83, 0, 15, 9, 198, 17, 37, 80, 64, 83, 0, 15, 0, 0, 9, 198, 64, 19, 70, 48, 85, 0, 66, 0, 9, 198, 105,
+			112, 77, 52, 84, 128, 15, 9, 198, 105, 112, 75, 44, 84, 128, 15, 9, 198, 104, 85, 82, 16, 84, 128, 15, 9, 198, 88, 194, 78, 16,
+			84, 128, 15, 9, 198, 88, 193, 75, 44, 84, 128, 15, 9, 198, 77, 67, 203, 44, 84, 128, 15, 9, 198, 76, 227, 197, 88, 84, 128, 15,
+			9, 198, 76, 226, 80, 64, 84, 128, 15, 9, 198, 76, 224, 85, 92, 84, 128, 15, 9, 198, 76, 197, 73, 52, 84, 128, 15, 9, 198, 76,
+			160, 67, 32, 84, 128, 15, 9, 198, 65, 82, 83, 80, 84, 128, 15, 9, 198, 65, 37, 84, 76, 84, 128, 15, 9, 198, 65, 35, 206, 44,
+			84, 128, 15, 9, 198, 64, 195, 197, 80, 84, 128, 15, 9, 198, 64, 19, 1, 88, 84, 128, 15, 9, 198, 49, 82, 83, 80, 84, 128, 15,
+			9, 198, 45, 33, 78, 80, 84, 128, 15, 9, 198, 45, 33, 78, 28, 84, 128, 15, 9, 198, 45, 32, 83, 76, 84, 128, 15, 9, 198, 45,
+			32, 65, 36, 84, 128, 15, 9, 198, 44, 241, 83, 80, 84, 128, 15, 9, 198, 44, 226, 83, 64, 84, 128, 15, 9, 198, 44, 226, 80, 64,
+			84, 128, 15, 9, 198, 44, 225, 85, 80, 84, 128, 15, 9, 198, 44, 193, 85, 80, 84, 128, 15, 9, 198, 44, 193, 80, 64, 84, 128, 15,
+			9, 198, 32, 241, 78, 16, 84, 128, 15, 9, 198, 32, 84, 143, 88, 84, 128, 15, 9, 198, 28, 197, 78, 16, 84, 128, 15, 9, 198, 24,
+			194, 80, 64, 84, 128, 15, 9, 198, 24, 192, 75, 44, 84, 128, 15, 9, 198, 17, 82, 83, 80, 84, 128, 15, 9, 198, 17, 32, 65, 36,
+			84, 128, 15, 9, 198, 12, 245, 78, 80, 84, 128, 15, 9, 198, 9, 35, 205, 52, 84, 128, 15, 9, 198, 9, 32, 78, 16, 84, 128, 15,
+			9, 198, 8, 197, 78, 16, 84, 128, 15, 9, 198, 8, 197, 66, 8, 84, 128, 15, 9, 198, 8, 197, 66, 8, 84, 128, 15, 0, 9, 198,
+			81, 114, 74, 24, 83, 0, 15, 9, 198, 76, 211, 203, 44, 83, 0, 15, 10, 3, 95, 49, 49, 6, 111, 55, 83, 0, 0, 7, 196, 44,
+			17, 5, 72, 15, 7, 196, 8, 245, 5, 72, 15, 10, 199, 8, 194, 75, 76, 83, 69, 56, 15, 10, 3, 95, 49, 48, 47, 6, 37, 50,
+			0, 0, 12, 68, 8, 85, 20, 100, 71, 111, 12, 47, 37, 0, 7, 196, 20, 227, 210, 52, 66, 14, 70, 12, 128, 83, 76, 148, 192, 91,
+			116, 89, 6, 37, 0, 13, 3, 95, 49, 51, 72, 6, 111, 34, 47, 37, 50, 0, 0, 10, 199, 77, 1, 75, 80, 18, 197, 48, 66, 19,
+			71, 52, 16, 84, 72, 81, 197, 48, 65, 115, 47, 34, 119, 100, 13, 55, 0, 16, 10, 199, 77, 1, 75, 80, 18, 197, 48, 15, 12, 3,
+			95, 49, 50, 47, 85, 6, 115, 55, 83, 0, 0, 8, 197, 65, 83, 77, 20, 192, 15, 8, 197, 52, 244, 141, 20, 192, 15, 8, 197, 104,
+			245, 133, 20, 192, 66, 13, 3, 95, 49, 53, 84, 6, 123, 83, 47, 37, 50, 0, 0, 11, 200, 89, 35, 213, 92, 83, 135, 20, 176, 17,
+			14, 3, 95, 49, 52, 83, 6, 108, 12, 34, 47, 37, 50, 0, 0, 9, 197, 56, 17, 9, 20, 224, 66, 46, 10, 199, 36, 225, 197, 88,
+			243, 7, 20, 67, 19, 71, 13, 84, 133, 81, 64, 71, 20, 49, 109, 34, 13, 47, 6, 115, 90, 13, 0, 15, 3, 95, 49, 55, 88, 6,
+			119, 84, 13, 50, 47, 37, 50, 0, 0, 8, 66, 136, 224, 111, 50, 0, 8, 13, 3, 95, 49, 54, 88, 6, 111, 89, 47, 37, 50, 0,
+			0, 15, 69, 36, 65, 65, 4, 192, 37, 72, 119, 57, 6, 115, 55, 0, 8, 197, 92, 146, 203, 20, 192, 15, 8, 197, 92, 17, 199, 20,
+			192, 15, 8, 197, 80, 242, 203, 20, 192, 15, 13, 69, 80, 16, 203, 20, 192, 47, 111, 49, 13, 55, 0, 8, 197, 72, 243, 147, 20, 192,
+			15, 8, 197, 72, 19, 147, 20, 192, 15, 8, 197, 64, 147, 139, 20, 192, 15, 8, 197, 52, 243, 139, 20, 192, 15, 8, 197, 52, 83, 135,
+			20, 192, 15, 8, 197, 33, 82, 75, 20, 192, 15, 8, 197, 16, 145, 199, 20, 192, 15, 8, 197, 8, 145, 199, 20, 192, 15, 8, 197, 76,
+			242, 203, 20, 192, 15, 8, 197, 44, 225, 75, 20, 192, 15, 0, 15, 3, 95, 55, 88, 88, 6, 119, 84, 13, 50, 47, 13, 101, 0, 0,
+			15, 69, 60, 49, 65, 4, 224, 122, 89, 119, 57, 6, 115, 50, 0, 13, 69, 52, 148, 211, 20, 224, 65, 108, 89, 13, 50, 0, 11, 68,
+			8, 82, 71, 20, 71, 111, 90, 13, 0, 0, 0, 13, 70, 48, 148, 197, 81, 65, 64, 21, 102, 114, 0, 47, 16, 70, 4, 53, 9, 21,
+			97, 64, 116, 49, 47, 6, 37, 84, 13, 0, 16, 70, 88, 81, 5, 81, 65, 64, 84, 13, 72, 6, 111, 47, 13, 0, 11, 70, 92, 80,
+			147, 37, 65, 64, 21, 0, 47, 9, 198, 8, 82, 1, 49, 97, 64, 8, 0, 0, 7, 196, 49, 32, 71, 20, 15, 7, 196, 17, 32, 71,
+			20, 15, 11, 200, 76, 241, 5, 52, 145, 84, 21, 32, 15, 13, 3, 95, 49, 111, 6, 108, 12, 34, 89, 47, 13, 0, 0, 0, 0, 8,
+			67, 76, 149, 5, 21, 0, 47, 0, 0, 0, 8, 197, 81, 82, 77, 20, 192, 15, 8, 197, 72, 146, 141, 20, 192, 15, 8, 197, 17, 82,
+			77, 20, 192, 15, 0, 13, 4, 95, 97, 99, 117, 6, 115, 37, 101, 4, 109, 0, 0, 12, 3, 95, 50, 111, 47, 85, 6, 119, 72, 13,
+			0, 0, 0, 8, 197, 64, 147, 135, 20, 192, 15, 8, 197, 40, 83, 135, 20, 192, 15, 8, 197, 32, 83, 135, 20, 192, 15, 8, 197, 24,
+			18, 203, 20, 192, 15, 8, 197, 17, 82, 75, 20, 192, 15, 8, 197, 9, 83, 135, 20, 192, 15, 8, 197, 8, 146, 203, 20, 192, 15, 8,
+			197, 8, 83, 135, 20, 192, 15, 8, 197, 80, 82, 203, 20, 192, 15, 8, 197, 16, 243, 135, 20, 192, 15, 0, 0, 10, 199, 81, 32, 86,
+			21, 53, 9, 20, 67, 9, 198, 44, 243, 80, 48, 245, 0, 66, 0, 9, 198, 52, 148, 203, 60, 244, 0, 65, 7, 196, 32, 81, 70, 80,
+			72, 0, 17, 71, 105, 82, 68, 20, 194, 74, 44, 88, 124, 72, 13, 55, 13, 49, 0, 9, 198, 76, 50, 15, 80, 83, 0, 15, 8, 197,
+			8, 19, 139, 21, 64, 66, 8, 197, 64, 147, 131, 21, 64, 66, 0, 21, 72, 44, 193, 73, 57, 161, 82, 36, 112, 49, 55, 123, 50, 88,
+			6, 119, 34, 13, 100, 0, 7, 196, 20, 211, 69, 72, 15, 0, 9, 198, 64, 244, 148, 72, 85, 0, 66, 8, 197, 52, 145, 90, 21, 32,
+			15, 8, 197, 44, 193, 86, 21, 32, 15, 7, 195, 8, 83, 148, 72, 46, 12, 3, 95, 51, 111, 72, 6, 111, 34, 72, 13, 0, 0, 11,
+			68, 76, 18, 78, 80, 21, 102, 114, 0, 47, 9, 198, 80, 82, 83, 80, 84, 128, 15, 9, 198, 77, 68, 133, 64, 84, 128, 15, 9, 198,
+			76, 227, 197, 64, 84, 128, 15, 9, 198, 52, 81, 83, 80, 84, 128, 15, 9, 198, 45, 113, 84, 80, 84, 128, 15, 9, 198, 45, 37, 73,
+			64, 84, 128, 15, 9, 198, 44, 227, 197, 36, 84, 128, 15, 9, 198, 44, 226, 83, 80, 84, 128, 15, 9, 198, 44, 226, 74, 64, 84, 128,
+			15, 9, 198, 44, 225, 84, 80, 84, 128, 15, 9, 198, 44, 194, 78, 44, 84, 128, 15, 9, 198, 28, 197, 73, 64, 84, 128, 15, 9, 198,
+			28, 194, 84, 80, 84, 128, 15, 9, 198, 28, 81, 83, 80, 84, 128, 15, 9, 198, 25, 34, 75, 44, 84, 128, 15, 9, 198, 24, 192, 68,
+			16, 84, 128, 15, 9, 198, 17, 33, 78, 104, 84, 128, 15, 9, 198, 12, 197, 83, 80, 84, 128, 15, 0, 9, 198, 45, 83, 147, 80, 83,
+			0, 15, 0, 7, 196, 61, 81, 5, 72, 15, 10, 69, 48, 20, 20, 61, 0, 21, 0, 47, 14, 3, 95, 50, 88, 47, 85, 6, 108, 50,
+			47, 13, 101, 0, 0, 8, 197, 92, 147, 4, 21, 32, 15, 8, 197, 88, 149, 20, 21, 32, 15, 8, 197, 72, 147, 12, 21, 32, 15, 8,
+			197, 72, 83, 12, 21, 32, 15, 8, 197, 44, 243, 4, 21, 32, 15, 8, 197, 44, 145, 80, 21, 32, 15, 8, 197, 44, 21, 20, 21, 32,
+			15, 8, 197, 32, 83, 4, 21, 32, 15, 8, 197, 17, 32, 68, 21, 32, 15, 8, 197, 16, 245, 20, 21, 32, 15, 8, 197, 16, 83, 12,
+			21, 32, 15, 0, 10, 199, 52, 148, 194, 4, 180, 197, 48, 65, 0, 8, 197, 33, 83, 77, 20, 192, 15, 0, 0, 0, 0, 8, 197, 92,
+			147, 139, 20, 192, 15, 8, 197, 92, 21, 87, 20, 192, 15, 8, 197, 76, 147, 135, 20, 192, 15, 8, 197, 72, 147, 135, 20, 192, 15, 8,
+			197, 56, 146, 203, 20, 192, 15, 8, 197, 52, 19, 135, 20, 192, 15, 8, 197, 32, 147, 139, 20, 192, 15, 8, 197, 28, 243, 199, 20, 192,
+			15, 8, 197, 80, 83, 135, 20, 192, 15, 8, 197, 44, 242, 203, 20, 192, 15, 0, 12, 201, 32, 81, 5, 57, 65, 78, 16, 17, 197, 15,
+			10, 199, 44, 241, 75, 20, 195, 197, 72, 15, 0, 16, 70, 76, 147, 8, 61, 81, 84, 89, 37, 55, 40, 6, 111, 47, 0, 0, 19, 71,
+			12, 20, 212, 4, 115, 133, 80, 49, 116, 89, 47, 116, 67, 6, 111, 47, 0, 0, 0, 16, 67, 9, 96, 128, 71, 123, 84, 6, 122, 34,
+			71, 119, 55, 47, 0, 0, 12, 3, 95, 53, 111, 84, 6, 123, 84, 72, 13, 0, 13, 3, 95, 63, 63, 89, 6, 37, 65, 71, 122, 55,
+			0, 0, 16, 70, 60, 228, 218, 20, 193, 128, 113, 50, 89, 6, 111, 55, 83, 0, 0, 0, 8, 67, 40, 241, 64, 75, 122, 0, 6, 195,
+			104, 245, 64, 72, 14, 3, 95, 52, 88, 83, 6, 108, 12, 34, 47, 13, 101, 0, 0, 0, 0, 0, 0, 7, 196, 56, 19, 205, 36, 66,
+			12, 3, 95, 54, 111, 88, 6, 111, 89, 72, 13, 0, 0, 0, 8, 66, 48, 80, 55, 13, 0, 46, 7, 194, 56, 16, 46, 76, 8, 8,
+			66, 36, 176, 2, 108, 49, 0, 18, 4, 95, 115, 117, 98, 89, 6, 110, 48, 89, 49, 34, 108, 48, 47, 15, 0, 0, 7, 195, 44, 210,
+			64, 13, 42, 13, 3, 95, 53, 88, 84, 6, 123, 83, 47, 13, 101, 0, 0, 0, 14, 4, 95, 114, 110, 103, 49, 6, 122, 16, 122, 50,
+			115, 0, 0, 9, 198, 44, 225, 85, 44, 83, 0, 15, 9, 198, 52, 148, 129, 8, 83, 0, 67, 8, 197, 12, 244, 147, 21, 64, 66, 8,
+			197, 64, 20, 139, 21, 64, 66, 0, 0, 9, 198, 52, 147, 129, 72, 85, 0, 67, 17, 70, 44, 194, 78, 44, 85, 0, 49, 55, 108, 68,
+			49, 6, 111, 47, 0, 8, 197, 104, 147, 22, 21, 32, 15, 8, 197, 76, 241, 90, 21, 32, 15, 8, 197, 76, 195, 214, 21, 32, 15, 8,
+			197, 65, 83, 22, 21, 32, 15, 8, 197, 64, 241, 78, 21, 32, 15, 8, 197, 44, 19, 22, 21, 32, 15, 11, 70, 21, 132, 12, 60, 149,
+			0, 21, 0, 47, 14, 3, 95, 55, 111, 88, 6, 119, 84, 13, 50, 72, 13, 0, 0, 0, 10, 199, 8, 19, 133, 56, 114, 68, 76, 17,
+			9, 198, 105, 114, 69, 8, 83, 0, 15, 9, 198, 65, 34, 69, 28, 83, 0, 15, 0, 13, 3, 95, 54, 88, 88, 6, 111, 89, 47, 13,
+			101, 0, 0, 9, 198, 52, 148, 211, 80, 19, 132, 65, 8, 197, 92, 148, 16, 21, 32, 15, 8, 197, 88, 241, 68, 21, 32, 15, 8, 197,
+			80, 83, 80, 21, 32, 15, 8, 197, 77, 81, 4, 21, 32, 15, 8, 197, 76, 244, 16, 21, 32, 15, 8, 197, 76, 145, 4, 21, 32, 15,
+			8, 197, 72, 145, 4, 21, 32, 15, 8, 197, 72, 81, 4, 21, 32, 15, 8, 197, 65, 84, 144, 21, 32, 15, 8, 197, 65, 32, 76, 21,
+			32, 15, 8, 197, 64, 241, 68, 21, 32, 15, 8, 197, 64, 20, 16, 21, 32, 15, 8, 197, 52, 244, 16, 21, 32, 15, 8, 197, 52, 244,
+			16, 21, 32, 15, 8, 197, 52, 241, 68, 21, 32, 15, 8, 197, 52, 241, 4, 21, 32, 15, 8, 197, 48, 241, 4, 21, 32, 15, 8, 197,
+			48, 241, 4, 21, 32, 15, 8, 197, 48, 145, 68, 21, 32, 15, 8, 197, 44, 195, 212, 21, 32, 15, 8, 197, 32, 19, 20, 21, 32, 15,
+			8, 197, 29, 32, 84, 21, 32, 15, 8, 197, 28, 241, 68, 21, 32, 15, 8, 197, 24, 243, 20, 21, 32, 15, 8, 197, 24, 147, 20, 21,
+			32, 15, 8, 197, 20, 83, 20, 21, 32, 15, 8, 197, 16, 20, 16, 21, 32, 15, 8, 197, 8, 17, 4, 21, 32, 15, 8, 197, 4, 50,
+			20, 21, 32, 15, 8, 197, 16, 147, 12, 21, 32, 15, 0, 10, 199, 76, 50, 18, 36, 178, 197, 48, 15, 0, 0, 9, 198, 56, 19, 1,
+			80, 145, 197, 66, 9, 198, 56, 17, 5, 48, 145, 197, 66, 18, 70, 41, 83, 69, 48, 17, 197, 90, 109, 65, 13, 55, 6, 115, 90, 13,
+			0, 17, 70, 17, 32, 73, 56, 17, 197, 72, 34, 111, 50, 6, 115, 90, 13, 0, 11, 70, 32, 243, 69, 64, 17, 197, 21, 0, 47, 0,
+			0, 0, 12, 201, 65, 35, 202, 20, 53, 9, 20, 193, 78, 67, 9, 198, 77, 4, 137, 56, 113, 82, 15, 0, 0, 0, 16, 69, 16, 19,
+			137, 12, 16, 72, 35, 50, 6, 37, 47, 89, 35, 0, 10, 69, 21, 48, 193, 64, 80, 21, 0, 47, 0, 0, 0, 0, 10, 69, 16, 83,
+			5, 80, 80, 21, 0, 47, 0, 22, 73, 77, 81, 134, 72, 17, 197, 81, 65, 64, 89, 109, 83, 34, 115, 90, 6, 111, 47, 13, 0, 21,
+			73, 52, 18, 83, 60, 227, 133, 81, 65, 64, 65, 111, 88, 113, 50, 6, 111, 47, 13, 0, 10, 66, 57, 32, 50, 110, 65, 13, 34, 0,
+			12, 6, 95, 111, 114, 100, 50, 48, 89, 47, 13, 0, 0, 6, 195, 60, 230, 133, 72, 13, 3, 95, 56, 88, 47, 6, 116, 101, 47, 13,
+			101, 0, 0, 0, 8, 197, 53, 84, 197, 84, 208, 15, 0, 0, 7, 196, 72, 82, 197, 56, 15, 6, 195, 16, 86, 133, 72, 0, 0, 0,
+			9, 198, 77, 3, 210, 80, 145, 70, 66, 7, 66, 52, 80, 65, 13, 0, 0, 15, 3, 95, 57, 88, 50, 6, 119, 81, 13, 50, 47, 13,
+			101, 0, 0, 16, 70, 12, 148, 131, 84, 149, 0, 89, 108, 34, 49, 40, 6, 37, 0, 0, 8, 195, 52, 85, 0, 46, 76, 28, 0, 14,
+			70, 76, 133, 84, 80, 83, 0, 91, 110, 47, 13, 55, 0, 16, 70, 12, 83, 129, 44, 83, 0, 89, 13, 50, 115, 49, 13, 55, 0, 8,
+			197, 92, 147, 139, 21, 64, 66, 8, 197, 64, 18, 203, 21, 64, 66, 8, 197, 45, 35, 203, 21, 64, 66, 0, 0, 8, 197, 104, 241, 78,
+			21, 32, 15, 8, 197, 89, 34, 74, 21, 32, 15, 8, 197, 76, 243, 66, 21, 32, 15, 8, 197, 44, 19, 70, 21, 32, 15, 0, 7, 196,
+			44, 20, 15, 80, 66, 0, 8, 197, 52, 19, 135, 5, 64, 17, 15, 69, 52, 83, 149, 21, 64, 65, 119, 50, 109, 6, 111, 47, 0, 12,
+			3, 95, 63, 65, 55, 6, 111, 47, 13, 34, 0, 0, 13, 68, 60, 213, 133, 72, 122, 65, 84, 6, 111, 34, 0, 7, 196, 60, 225, 5,
+			72, 15, 7, 196, 4, 225, 5, 72, 15, 0, 8, 197, 104, 243, 4, 21, 32, 15, 8, 197, 92, 84, 212, 21, 32, 15, 8, 197, 92, 20,
+			16, 21, 32, 15, 8, 197, 80, 85, 20, 21, 32, 15, 8, 197, 76, 241, 80, 21, 32, 15, 8, 197, 72, 20, 212, 21, 32, 15, 8, 197,
+			64, 244, 16, 21, 32, 15, 8, 197, 64, 243, 4, 21, 32, 15, 8, 197, 64, 145, 84, 21, 32, 15, 8, 197, 64, 145, 80, 21, 32, 15,
+			8, 197, 64, 84, 212, 21, 32, 15, 8, 197, 52, 245, 20, 21, 32, 15, 8, 197, 52, 145, 84, 21, 32, 15, 8, 197, 48, 85, 84, 21,
+			32, 15, 8, 197, 48, 85, 20, 21, 32, 15, 8, 197, 48, 84, 16, 21, 32, 15, 8, 197, 44, 85, 84, 21, 32, 15, 8, 197, 44, 85,
+			20, 21, 32, 15, 8, 197, 32, 245, 84, 21, 32, 15, 8, 197, 28, 147, 12, 21, 32, 15, 8, 197, 24, 243, 4, 21, 32, 15, 8, 197,
+			24, 241, 84, 21, 32, 15, 8, 197, 24, 21, 20, 21, 32, 15, 8, 197, 9, 83, 4, 21, 32, 15, 8, 197, 8, 243, 4, 21, 32, 15,
+			8, 197, 8, 149, 20, 21, 32, 15, 8, 197, 104, 149, 20, 21, 32, 15, 0, 0, 0, 0, 12, 3, 95, 52, 111, 84, 6, 37, 34, 72,
+			13, 0, 20, 4, 95, 115, 117, 112, 89, 6, 109, 48, 13, 34, 89, 49, 34, 108, 48, 47, 15, 0, 0, 14, 69, 77, 68, 133, 4, 208,
+			89, 47, 34, 37, 12, 65, 0, 14, 4, 95, 115, 116, 107, 89, 47, 14, 16, 6, 119, 48, 0, 0, 9, 198, 56, 245, 133, 52, 33, 82,
+			66, 9, 198, 16, 80, 197, 52, 33, 82, 66, 9, 198, 88, 192, 65, 56, 65, 82, 15, 9, 198, 76, 50, 9, 65, 1, 82, 15, 9, 198,
+			36, 224, 149, 72, 113, 82, 15, 0, 7, 194, 36, 224, 46, 76, 28, 0, 0, 0, 0, 12, 68, 88, 84, 148, 20, 84, 111, 34, 47, 13,
+			0, 0, 14, 69, 28, 243, 199, 48, 80, 81, 40, 12, 81, 13, 55, 0, 14, 69, 88, 84, 147, 80, 80, 84, 111, 34, 89, 47, 13, 0,
+			0, 12, 68, 8, 83, 137, 28, 71, 119, 50, 13, 100, 0, 0, 0, 0, 11, 200, 36, 225, 210, 20, 66, 100, 57, 64, 68, 16, 69, 36,
+			65, 65, 48, 80, 37, 72, 119, 57, 6, 115, 55, 13, 0, 14, 69, 21, 35, 211, 36, 80, 119, 34, 6, 122, 88, 37, 0, 0, 0, 15,
+			70, 28, 19, 65, 76, 50, 5, 100, 115, 65, 6, 116, 91, 0, 15, 74, 20, 229, 5, 73, 64, 73, 56, 209, 78, 80, 21, 0, 47, 0,
+			11, 199, 64, 85, 18, 60, 193, 85, 52, 15, 66, 0, 0, 0, 0, 0, 7, 196, 64, 242, 197, 72, 15, 0, 9, 198, 81, 35, 197, 80,
+			83, 0, 15, 9, 198, 77, 112, 70, 24, 83, 0, 15, 9, 198, 65, 37, 84, 80, 83, 0, 15, 0, 7, 196, 52, 240, 200, 80, 72, 0,
+			0, 7, 196, 80, 81, 5, 72, 15, 7, 196, 56, 81, 5, 72, 15, 7, 196, 56, 17, 5, 72, 15, 7, 196, 52, 17, 197, 72, 15, 7,
+			196, 48, 81, 5, 72, 15, 7, 196, 36, 210, 197, 72, 15, 7, 196, 36, 165, 133, 72, 15, 0, 9, 198, 33, 82, 67, 32, 83, 0, 15,
+			9, 198, 29, 82, 67, 32, 83, 0, 15, 9, 198, 17, 33, 77, 52, 83, 0, 15, 9, 198, 77, 65, 78, 28, 83, 0, 15, 0, 0, 20,
+			4, 95, 99, 105, 114, 89, 6, 108, 34, 49, 113, 50, 83, 55, 119, 49, 89, 13, 0, 0, 8, 195, 4, 19, 128, 46, 76, 28, 0, 14,
+			4, 95, 48, 77, 52, 71, 6, 37, 55, 57, 40, 50, 0, 0, 0, 9, 198, 44, 17, 1, 77, 65, 82, 66, 9, 198, 12, 128, 80, 37,
+			65, 82, 66, 9, 198, 76, 193, 67, 33, 65, 82, 15, 9, 198, 76, 50, 21, 81, 65, 82, 15, 9, 198, 76, 50, 9, 81, 65, 82, 15,
+			9, 198, 76, 50, 5, 81, 65, 82, 15, 9, 198, 44, 197, 73, 77, 65, 82, 15, 9, 198, 44, 149, 19, 12, 129, 82, 15, 9, 198, 76,
+			50, 5, 65, 1, 82, 15, 13, 3, 95, 56, 111, 6, 116, 101, 47, 89, 47, 13, 0, 14, 4, 95, 48, 77, 50, 65, 6, 37, 55, 57,
+			40, 50, 0, 0, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55, 57, 116, 34, 47, 0, 0, 0, 8, 197, 76, 19, 15, 52, 240, 65, 14,
+			4, 95, 48, 77, 49, 72, 6, 124, 88, 111, 50, 47, 0, 0, 0, 0, 0, 0, 6, 195, 61, 97, 82, 15, 11, 70, 92, 81, 75, 20,
+			225, 0, 21, 0, 47, 8, 195, 61, 97, 82, 46, 76, 8, 0, 0, 0, 0, 0, 15, 4, 95, 108, 105, 103, 55, 6, 37, 101, 115, 47,
+			109, 34, 0, 0, 0, 7, 196, 80, 18, 197, 48, 15, 7, 196, 72, 17, 133, 48, 15, 7, 196, 64, 81, 197, 48, 15, 7, 196, 44, 241,
+			197, 48, 15, 7, 196, 44, 18, 197, 48, 15, 7, 196, 40, 241, 133, 48, 15, 7, 196, 104, 245, 197, 48, 66, 0, 0, 0, 12, 68, 52,
+			85, 18, 60, 65, 119, 47, 34, 122, 0, 0, 7, 196, 76, 16, 133, 48, 15, 13, 68, 48, 16, 133, 48, 55, 119, 71, 13, 55, 0, 15,
+			7, 196, 44, 16, 133, 48, 15, 7, 196, 41, 80, 133, 48, 15, 7, 196, 80, 16, 133, 48, 66, 0, 8, 197, 25, 85, 19, 20, 192, 15,
+			0, 7, 196, 104, 243, 69, 72, 15, 7, 196, 32, 19, 69, 72, 15, 0, 9, 198, 52, 148, 207, 60, 116, 212, 65, 9, 198, 77, 64, 70,
+			24, 83, 0, 15, 9, 198, 76, 193, 85, 80, 83, 0, 15, 9, 198, 45, 32, 66, 8, 83, 0, 15, 9, 198, 25, 37, 84, 76, 83, 0,
+			15, 0, 9, 198, 81, 34, 76, 48, 84, 128, 15, 9, 198, 64, 197, 73, 104, 84, 128, 15, 9, 198, 64, 193, 84, 80, 84, 128, 15, 9,
+			198, 45, 37, 76, 48, 84, 128, 15, 9, 198, 44, 226, 69, 104, 84, 128, 15, 9, 198, 44, 193, 84, 80, 84, 128, 15, 9, 198, 44, 192,
+			68, 16, 84, 128, 15, 14, 70, 28, 81, 85, 92, 84, 128, 100, 126, 13, 34, 0, 15, 9, 198, 8, 192, 68, 16, 84, 128, 15, 15, 70,
+			81, 113, 65, 44, 84, 128, 47, 85, 37, 49, 13, 34, 0, 0, 10, 199, 92, 146, 201, 64, 81, 9, 4, 67, 19, 71, 21, 96, 78, 28,
+			83, 9, 20, 119, 84, 116, 68, 100, 6, 119, 55, 37, 0, 22, 73, 20, 83, 147, 28, 83, 9, 40, 180, 192, 119, 50, 89, 100, 13, 55,
+			6, 123, 49, 89, 0, 9, 198, 44, 245, 5, 48, 85, 0, 67, 0, 0, 13, 202, 60, 225, 197, 52, 18, 203, 20, 194, 74, 44, 67, 9,
+			198, 45, 34, 66, 8, 83, 0, 15, 9, 198, 9, 33, 73, 16, 83, 0, 15, 0, 7, 196, 56, 243, 133, 80, 66, 0, 18, 71, 12, 128,
+			77, 64, 17, 206, 20, 91, 116, 65, 48, 6, 116, 67, 13, 0, 0, 0, 0, 7, 196, 32, 85, 133, 48, 15, 12, 68, 28, 85, 133, 48,
+			100, 119, 84, 13, 55, 0, 0, 9, 198, 76, 50, 9, 48, 97, 82, 15, 9, 198, 76, 50, 9, 48, 65, 82, 15, 9, 198, 32, 84, 137,
+			56, 225, 82, 15, 0, 20, 71, 36, 225, 197, 56, 145, 85, 72, 108, 50, 88, 57, 13, 50, 57, 6, 121, 34, 0, 11, 70, 4, 148, 140,
+			36, 225, 83, 21, 0, 47, 0, 0, 7, 196, 44, 20, 133, 48, 15, 0, 21, 7, 115, 109, 115, 39, 106, 101, 115, 111, 89, 111, 65, 6,
+			111, 89, 10, 57, 13, 89, 0, 6, 194, 60, 96, 72, 8, 6, 194, 60, 96, 72, 8, 0, 0, 0, 17, 70, 44, 147, 147, 32, 20, 193,
+			49, 108, 50, 91, 6, 115, 89, 115, 0, 12, 201, 80, 81, 197, 56, 224, 84, 85, 84, 128, 68, 0, 0, 0, 0, 9, 198, 16, 148, 203,
+			21, 69, 5, 66, 9, 198, 12, 20, 211, 21, 69, 5, 66, 17, 70, 4, 226, 83, 21, 69, 5, 115, 50, 37, 88, 6, 111, 47, 13, 0,
+			0, 0, 0, 0, 7, 196, 104, 17, 5, 48, 15, 7, 196, 20, 226, 197, 48, 15, 0, 0, 6, 195, 52, 17, 192, 72, 0, 14, 4, 95,
+			99, 101, 100, 89, 6, 119, 72, 108, 55, 13, 0, 0, 14, 70, 12, 128, 78, 76, 243, 128, 91, 117, 89, 6, 118, 0, 9, 198, 76, 50,
+			5, 64, 83, 128, 15, 9, 198, 28, 83, 79, 28, 83, 128, 72, 0, 0, 0, 9, 198, 29, 35, 197, 104, 83, 0, 15, 0, 15, 69, 16,
+			149, 133, 73, 48, 72, 37, 84, 6, 111, 34, 89, 0, 7, 196, 60, 53, 5, 80, 66, 7, 196, 104, 245, 193, 80, 66, 7, 196, 60, 209,
+			1, 80, 8, 0, 0, 0, 9, 198, 36, 225, 197, 88, 19, 0, 67, 9, 198, 29, 35, 206, 16, 83, 0, 15, 8, 196, 104, 240, 76, 76,
+			66, 8, 0, 7, 196, 28, 22, 133, 80, 66, 7, 196, 64, 19, 5, 80, 66, 0, 0, 6, 195, 44, 211, 192, 13, 0, 9, 198, 77, 4,
+			133, 56, 177, 76, 15, 17, 4, 95, 99, 97, 112, 107, 6, 122, 83, 72, 55, 111, 47, 13, 34, 0, 0, 7, 196, 72, 21, 5, 48, 15,
+			0, 9, 198, 48, 21, 193, 4, 145, 82, 15, 0, 9, 198, 72, 84, 197, 73, 97, 83, 16, 11, 70, 92, 80, 147, 37, 65, 83, 21, 0,
+			47, 0, 0, 18, 70, 60, 49, 65, 56, 83, 128, 122, 89, 119, 57, 6, 115, 50, 13, 50, 0, 17, 70, 92, 20, 197, 52, 83, 128, 85,
+			115, 89, 13, 65, 13, 50, 0, 15, 9, 198, 44, 84, 147, 80, 83, 128, 15, 0, 0, 0, 11, 68, 104, 81, 100, 56, 88, 119, 13, 50,
+			0, 0, 0, 14, 69, 8, 85, 133, 56, 64, 71, 119, 84, 13, 50, 72, 0, 0, 21, 72, 12, 19, 79, 84, 99, 1, 28, 80, 49, 115,
+			65, 40, 83, 55, 6, 115, 90, 13, 0, 0, 0, 0, 14, 69, 8, 83, 129, 72, 64, 71, 13, 50, 116, 34, 47, 0, 8, 197, 28, 82,
+			213, 56, 64, 72, 0, 0, 0, 10, 199, 64, 19, 148, 60, 97, 133, 48, 15, 0, 8, 197, 92, 145, 66, 20, 192, 15, 8, 197, 65, 33,
+			86, 20, 192, 15, 8, 197, 28, 145, 66, 20, 192, 15, 8, 197, 93, 33, 86, 20, 192, 15, 8, 197, 76, 163, 198, 20, 192, 15, 0, 0,
+			0, 0, 8, 197, 81, 34, 80, 20, 192, 15, 0, 0, 9, 198, 76, 225, 85, 88, 83, 0, 15, 9, 198, 44, 194, 80, 64, 83, 0, 15,
+			9, 198, 29, 33, 78, 16, 83, 0, 15, 13, 68, 104, 244, 1, 76, 88, 122, 48, 6, 116, 89, 0, 0, 9, 198, 52, 148, 211, 80, 20,
+			0, 65, 7, 196, 16, 145, 69, 80, 66, 0, 0, 7, 196, 81, 82, 69, 72, 15, 7, 196, 49, 82, 69, 72, 15, 7, 196, 48, 22, 133,
+			72, 15, 0, 0, 0, 0, 0, 0, 0, 8, 197, 64, 241, 90, 20, 192, 15, 0, 0, 17, 71, 60, 244, 212, 20, 194, 74, 44, 122, 89,
+			47, 13, 55, 13, 49, 0, 0, 15, 70, 12, 130, 70, 24, 243, 128, 91, 37, 83, 6, 113, 50, 0, 7, 196, 104, 19, 69, 48, 15, 7,
+			196, 32, 83, 69, 48, 15, 0, 8, 197, 32, 241, 80, 20, 192, 15, 8, 197, 8, 82, 84, 20, 192, 15, 14, 69, 9, 33, 84, 20, 192,
+			71, 34, 13, 47, 111, 55, 0, 0, 0, 9, 198, 52, 20, 137, 60, 225, 84, 68, 17, 70, 64, 148, 212, 60, 193, 84, 48, 37, 89, 47,
+			122, 55, 6, 111, 0, 9, 198, 12, 244, 147, 20, 193, 84, 67, 17, 70, 64, 192, 78, 12, 129, 84, 48, 55, 116, 50, 91, 6, 111, 47,
+			0, 11, 200, 81, 35, 205, 64, 85, 20, 21, 32, 15, 11, 200, 76, 50, 18, 20, 85, 87, 21, 32, 15, 11, 200, 52, 147, 12, 36, 209,
+			84, 21, 32, 15, 0, 0, 14, 69, 36, 225, 210, 36, 64, 108, 68, 14, 16, 108, 47, 0, 0, 7, 196, 4, 196, 207, 24, 8, 0, 9,
+			198, 80, 84, 151, 36, 163, 0, 8, 0, 9, 3, 100, 39, 114, 72, 13, 34, 0, 0, 12, 68, 56, 17, 148, 4, 50, 116, 83, 47, 115,
+			0, 6, 195, 80, 241, 78, 8, 0, 0, 9, 198, 64, 20, 148, 36, 177, 76, 15, 11, 70, 72, 84, 197, 5, 32, 200, 21, 0, 47, 0,
+			10, 199, 76, 50, 18, 60, 212, 5, 48, 15, 18, 71, 12, 20, 146, 61, 84, 197, 48, 49, 115, 34, 40, 89, 6, 111, 55, 0, 0, 8,
+			197, 92, 82, 70, 20, 192, 15, 8, 197, 72, 241, 70, 20, 192, 15, 8, 197, 32, 82, 66, 20, 192, 15, 8, 197, 24, 241, 90, 20, 192,
+			15, 8, 197, 16, 241, 90, 20, 192, 15, 14, 69, 29, 32, 86, 20, 192, 100, 34, 111, 84, 13, 55, 0, 0, 0, 0, 8, 67, 72, 16,
+			197, 21, 0, 47, 0, 14, 69, 52, 148, 208, 20, 192, 65, 108, 89, 48, 13, 55, 0, 8, 197, 104, 241, 68, 20, 192, 15, 8, 197, 92,
+			147, 80, 20, 192, 15, 8, 197, 77, 64, 80, 20, 192, 15, 8, 197, 76, 20, 16, 20, 192, 15, 8, 197, 72, 241, 4, 20, 192, 15, 8,
+			197, 64, 241, 68, 20, 192, 15, 8, 197, 64, 147, 80, 20, 192, 15, 14, 69, 64, 17, 4, 20, 192, 48, 111, 72, 13, 55, 0, 15, 8,
+			197, 56, 84, 212, 20, 192, 15, 8, 197, 52, 148, 208, 20, 192, 15, 8, 197, 44, 244, 16, 20, 192, 15, 8, 197, 33, 84, 16, 20, 192,
+			15, 8, 197, 16, 243, 80, 20, 192, 15, 8, 197, 72, 241, 68, 20, 192, 15, 8, 197, 64, 84, 16, 20, 192, 15, 8, 197, 52, 145, 4,
+			20, 192, 15, 8, 197, 44, 84, 16, 20, 192, 15, 8, 197, 8, 241, 68, 20, 192, 15, 0, 7, 196, 48, 20, 197, 72, 15, 7, 196, 44,
+			84, 5, 72, 15, 7, 196, 28, 20, 5, 72, 15, 0, 9, 198, 88, 16, 78, 16, 83, 0, 15, 9, 198, 4, 208, 78, 16, 83, 0, 15,
+			0, 16, 70, 12, 245, 82, 21, 84, 128, 49, 40, 12, 34, 6, 121, 34, 0, 7, 195, 44, 227, 73, 13, 42, 0, 9, 198, 12, 128, 82,
+			28, 84, 192, 16, 5, 131, 239, 187, 191, 0, 12, 68, 8, 82, 197, 72, 71, 119, 49, 13, 34, 0, 7, 196, 104, 82, 197, 72, 15, 7,
+			196, 52, 242, 197, 72, 15, 0, 15, 70, 60, 194, 69, 76, 83, 0, 122, 55, 37, 89, 13, 55, 0, 9, 198, 8, 244, 147, 80, 83, 0,
+			15, 9, 198, 77, 67, 198, 24, 83, 0, 15, 0, 0, 9, 198, 81, 35, 205, 64, 85, 0, 66, 0, 0, 0, 0, 8, 197, 24, 241, 70,
+			20, 192, 15, 8, 197, 72, 241, 66, 20, 192, 15, 8, 197, 52, 85, 66, 20, 192, 15, 8, 197, 44, 145, 90, 20, 192, 15, 0, 0, 0,
+			0, 21, 71, 65, 34, 86, 36, 193, 71, 20, 48, 34, 37, 84, 37, 55, 6, 119, 90, 13, 0, 16, 8, 197, 80, 148, 16, 20, 192, 15,
+			8, 197, 80, 83, 80, 20, 192, 15, 8, 197, 72, 243, 80, 20, 192, 15, 8, 197, 72, 147, 80, 20, 192, 15, 8, 197, 48, 148, 208, 20,
+			192, 15, 8, 197, 32, 243, 80, 20, 192, 15, 8, 197, 24, 145, 68, 20, 192, 15, 8, 197, 76, 147, 80, 20, 192, 15, 20, 72, 80, 245,
+			82, 56, 148, 85, 21, 64, 47, 40, 34, 50, 37, 49, 6, 111, 47, 0, 18, 71, 61, 85, 9, 48, 192, 71, 20, 40, 47, 37, 57, 6,
+			115, 90, 13, 0, 0, 0, 21, 73, 72, 83, 129, 37, 52, 193, 56, 49, 64, 34, 111, 50, 119, 89, 6, 117, 89, 13, 0, 11, 200, 92,
+			16, 71, 32, 19, 26, 21, 32, 15, 0, 19, 71, 12, 16, 146, 36, 243, 5, 80, 49, 115, 71, 34, 37, 39, 55, 6, 111, 0, 0, 14,
+			4, 95, 103, 114, 118, 100, 14, 16, 6, 115, 84, 13, 0, 0, 0, 9, 198, 12, 242, 5, 76, 145, 64, 66, 0, 0, 7, 196, 29, 32,
+			71, 20, 15, 0, 0, 0, 6, 195, 57, 97, 1, 13, 0, 0, 0, 9, 198, 64, 243, 9, 28, 195, 212, 67, 0, 6, 195, 76, 17, 197,
+			15, 6, 195, 48, 17, 197, 15, 0, 8, 197, 44, 145, 84, 20, 192, 15, 7, 194, 60, 208, 46, 76, 28, 0, 0, 39, 79, 60, 225, 5,
+			72, 128, 78, 16, 83, 9, 56, 116, 206, 61, 64, 64, 4, 39, 50, 72, 13, 34, 6, 107, 116, 50, 72, 13, 55, 108, 68, 89, 4, 50,
+			122, 47, 115, 0, 8, 197, 105, 82, 86, 21, 32, 15, 8, 197, 56, 146, 150, 21, 32, 15, 8, 197, 49, 80, 130, 21, 32, 15, 8, 197,
+			48, 80, 130, 21, 32, 15, 8, 197, 33, 82, 86, 21, 32, 15, 8, 197, 32, 80, 130, 21, 32, 15, 8, 197, 12, 146, 134, 21, 32, 15,
+			8, 197, 8, 144, 130, 21, 32, 15, 6, 195, 105, 83, 20, 72, 0, 16, 70, 12, 243, 148, 61, 84, 128, 49, 122, 50, 47, 6, 40, 34,
+			0, 0, 8, 197, 76, 86, 20, 21, 64, 66, 15, 69, 76, 177, 76, 21, 64, 89, 49, 13, 55, 6, 111, 47, 0, 0, 12, 201, 48, 16,
+			71, 17, 33, 77, 64, 83, 0, 15, 7, 196, 52, 82, 69, 72, 15, 0, 9, 198, 77, 65, 77, 64, 83, 0, 15, 9, 198, 77, 2, 74,
+			8, 83, 0, 15, 9, 198, 45, 35, 206, 44, 83, 0, 15, 9, 198, 29, 34, 70, 24, 83, 0, 15, 9, 198, 17, 34, 66, 8, 83, 0,
+			15, 9, 198, 17, 33, 77, 64, 83, 0, 15, 8, 197, 104, 243, 132, 21, 32, 15, 8, 197, 104, 19, 132, 21, 32, 15, 8, 197, 88, 244,
+			132, 21, 32, 15, 8, 197, 73, 82, 84, 21, 32, 15, 14, 69, 64, 240, 200, 21, 32, 48, 113, 101, 13, 34, 0, 15, 8, 197, 64, 85,
+			84, 21, 32, 15, 8, 197, 52, 147, 132, 21, 32, 15, 8, 197, 44, 147, 132, 21, 32, 15, 8, 197, 16, 242, 212, 21, 32, 15, 8, 197,
+			8, 192, 68, 21, 32, 15, 10, 197, 104, 243, 132, 21, 32, 46, 76, 8, 0, 0, 20, 72, 88, 84, 135, 21, 162, 67, 33, 64, 84, 111,
+			34, 100, 13, 88, 108, 101, 47, 0, 8, 197, 8, 147, 10, 21, 64, 66, 0, 0, 8, 197, 64, 84, 146, 60, 224, 66, 8, 197, 4, 65,
+			77, 20, 224, 15, 8, 197, 80, 83, 154, 36, 160, 8, 0, 10, 199, 76, 50, 14, 4, 32, 133, 48, 15, 0, 8, 197, 44, 85, 86, 20,
+			192, 15, 8, 197, 17, 33, 86, 20, 192, 15, 8, 197, 32, 85, 86, 20, 192, 15, 0, 0, 13, 69, 92, 19, 135, 20, 224, 85, 116, 68,
+			13, 50, 0, 0, 0, 8, 197, 52, 84, 16, 20, 192, 15, 8, 197, 76, 85, 20, 20, 192, 15, 8, 197, 44, 85, 84, 20, 192, 15, 9,
+			198, 104, 242, 149, 37, 53, 0, 66, 8, 195, 88, 243, 210, 46, 76, 8, 0, 0, 0, 0, 11, 2, 194, 176, 100, 34, 115, 72, 13, 50,
+			0, 0, 0, 0, 9, 198, 104, 241, 15, 20, 225, 5, 66, 0, 9, 198, 56, 19, 1, 80, 145, 192, 66, 0, 0, 0, 9, 67, 36, 225,
+			197, 108, 68, 13, 0, 0, 0, 0, 0, 12, 67, 64, 17, 197, 21, 0, 47, 81, 117, 112, 32, 14, 67, 64, 17, 197, 21, 0, 47, 81,
+			100, 111, 119, 110, 32, 0, 10, 66, 80, 80, 47, 13, 0, 46, 76, 28, 0, 0, 8, 197, 80, 240, 130, 21, 32, 15, 8, 197, 77, 81,
+			134, 21, 32, 15, 8, 197, 73, 80, 130, 21, 32, 15, 8, 197, 65, 81, 134, 21, 32, 15, 8, 197, 64, 17, 134, 21, 32, 15, 8, 197,
+			48, 240, 130, 21, 32, 15, 8, 197, 48, 16, 130, 21, 32, 15, 8, 197, 44, 241, 134, 21, 32, 15, 8, 197, 44, 17, 134, 21, 32, 15,
+			8, 197, 28, 144, 130, 21, 32, 15, 8, 197, 28, 16, 130, 21, 32, 15, 8, 197, 16, 240, 130, 21, 32, 15, 8, 197, 16, 16, 130, 21,
+			32, 15, 8, 197, 9, 81, 134, 21, 32, 15, 0, 7, 196, 24, 17, 207, 80, 66, 0, 8, 197, 76, 84, 20, 21, 64, 66, 8, 197, 48,
+			19, 80, 21, 64, 66, 15, 69, 80, 242, 76, 21, 64, 47, 85, 116, 55, 6, 111, 47, 0, 8, 197, 60, 209, 76, 21, 64, 67, 8, 197,
+			8, 19, 12, 21, 64, 66, 8, 197, 4, 213, 76, 21, 64, 67, 0, 0, 9, 198, 77, 2, 69, 28, 83, 0, 15, 9, 198, 76, 50, 1,
+			44, 83, 0, 15, 9, 198, 9, 35, 196, 16, 83, 0, 15, 8, 197, 92, 147, 148, 21, 32, 15, 8, 197, 92, 146, 132, 21, 32, 15, 8,
+			197, 77, 67, 212, 21, 32, 15, 8, 197, 76, 192, 80, 21, 32, 15, 8, 197, 65, 35, 208, 21, 32, 15, 8, 197, 48, 20, 212, 21, 32,
+			15, 8, 197, 44, 192, 84, 21, 32, 15, 8, 197, 44, 83, 148, 21, 32, 15, 8, 197, 33, 82, 76, 21, 32, 15, 8, 197, 28, 148, 212,
+			21, 32, 15, 8, 197, 17, 113, 80, 21, 32, 15, 8, 197, 9, 83, 80, 21, 32, 15, 0, 0, 8, 197, 24, 195, 210, 21, 64, 66, 8,
+			197, 80, 245, 4, 5, 64, 8, 0, 0, 0, 0, 10, 199, 52, 21, 83, 60, 193, 85, 52, 15, 0, 17, 70, 5, 81, 213, 77, 69, 83,
+			125, 100, 6, 110, 89, 47, 110, 89, 0, 0, 0, 17, 70, 21, 21, 73, 64, 17, 197, 119, 49, 37, 48, 6, 115, 90, 13, 0, 17, 70,
+			12, 245, 82, 80, 17, 197, 49, 40, 34, 47, 6, 115, 90, 13, 0, 18, 70, 4, 212, 5, 72, 17, 197, 116, 65, 48, 13, 34, 6, 115,
+			90, 13, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 228, 192, 72, 0, 0, 0, 7, 196, 104, 241, 18, 4, 66, 0, 11, 68, 32, 83,
+			137, 56, 21, 102, 114, 0, 47, 8, 197, 81, 32, 76, 36, 80, 65, 7, 196, 80, 82, 197, 56, 15, 10, 69, 60, 227, 9, 56, 80, 21,
+			0, 47, 0, 6, 195, 4, 177, 76, 15, 0, 8, 197, 52, 243, 142, 36, 176, 15, 0, 0, 6, 195, 92, 245, 64, 72, 0, 0, 0, 0,
+			0, 9, 198, 52, 148, 129, 44, 83, 0, 15, 8, 197, 105, 113, 86, 21, 32, 15, 8, 197, 44, 192, 86, 21, 32, 15, 0, 0, 8, 197,
+			52, 148, 218, 37, 64, 65, 0, 7, 196, 104, 245, 133, 72, 8, 6, 195, 92, 21, 0, 72, 0, 8, 197, 105, 113, 84, 21, 32, 15, 8,
+			197, 104, 147, 132, 21, 32, 15, 8, 197, 92, 243, 132, 21, 32, 15, 8, 197, 92, 147, 132, 21, 32, 15, 8, 197, 81, 85, 20, 21, 32,
+			15, 8, 197, 80, 85, 84, 21, 32, 15, 8, 197, 76, 224, 84, 21, 32, 15, 8, 197, 73, 83, 132, 21, 32, 15, 8, 197, 64, 21, 80,
+			21, 32, 15, 8, 197, 48, 245, 84, 21, 32, 15, 8, 197, 48, 19, 132, 21, 32, 15, 8, 197, 48, 16, 200, 21, 32, 15, 8, 197, 32,
+			147, 132, 21, 32, 15, 8, 197, 16, 243, 132, 21, 32, 15, 8, 197, 16, 83, 132, 21, 32, 15, 8, 197, 8, 20, 212, 21, 32, 15, 0,
+			0, 15, 69, 9, 33, 86, 21, 64, 71, 34, 13, 84, 6, 111, 47, 0, 9, 198, 76, 145, 193, 72, 85, 0, 67, 8, 197, 77, 2, 78,
+			21, 64, 66, 0, 0, 0, 0, 18, 70, 92, 81, 9, 41, 97, 82, 85, 6, 111, 47, 123, 84, 13, 34, 0, 15, 9, 198, 76, 50, 18,
+			5, 1, 82, 15, 9, 198, 76, 50, 9, 41, 65, 82, 15, 9, 198, 64, 195, 197, 73, 65, 82, 15, 9, 198, 64, 193, 73, 77, 65, 82,
+			15, 9, 198, 28, 83, 79, 20, 65, 82, 15, 0, 13, 68, 8, 83, 137, 56, 71, 119, 50, 6, 37, 50, 0, 0, 0, 0, 0, 0, 6,
+			195, 32, 80, 128, 72, 0, 14, 203, 92, 16, 82, 76, 50, 9, 40, 227, 9, 40, 176, 66, 0, 8, 197, 4, 113, 78, 16, 16, 66, 0,
+			7, 195, 56, 16, 82, 46, 76, 6, 195, 32, 16, 82, 72, 0, 0, 0, 14, 69, 12, 19, 129, 16, 16, 49, 116, 50, 115, 72, 115, 0,
+			8, 197, 72, 81, 201, 52, 80, 66, 8, 197, 36, 230, 129, 28, 80, 15, 0, 0, 0, 11, 200, 4, 193, 88, 4, 225, 18, 38, 64, 67,
+			0, 0, 15, 70, 44, 83, 142, 20, 70, 64, 49, 111, 50, 13, 72, 111, 0, 12, 201, 12, 20, 130, 60, 194, 78, 21, 83, 64, 15, 0,
+			0, 0, 0, 9, 198, 45, 37, 73, 52, 83, 0, 15, 0, 7, 196, 104, 84, 5, 72, 15, 0, 0, 0, 9, 198, 93, 34, 69, 52, 83,
+			0, 15, 9, 198, 44, 197, 78, 28, 83, 0, 15, 9, 198, 25, 37, 77, 52, 83, 0, 15, 9, 198, 25, 34, 69, 52, 83, 0, 15, 9,
+			198, 5, 37, 9, 44, 83, 0, 15, 9, 198, 76, 50, 1, 52, 83, 0, 15, 0, 7, 196, 72, 17, 5, 72, 15, 7, 196, 60, 97, 133,
+			72, 15, 8, 195, 8, 146, 128, 46, 76, 8, 9, 67, 104, 146, 128, 88, 2, 123, 0, 9, 67, 40, 146, 128, 57, 2, 123, 0, 0, 9,
+			67, 12, 128, 84, 76, 111, 47, 0, 8, 67, 24, 16, 212, 21, 0, 47, 20, 2, 95, 34, 6, 115, 50, 107, 115, 55, 108, 50, 101, 89,
+			47, 119, 49, 13, 50, 0, 0, 18, 2, 95, 33, 6, 124, 47, 14, 16, 40, 48, 47, 4, 119, 49, 13, 50, 0, 0, 5, 194, 85, 112,
+			72, 0, 6, 195, 44, 243, 128, 72, 10, 67, 32, 83, 128, 107, 2, 111, 50, 0, 0, 0, 0, 17, 70, 56, 18, 82, 60, 34, 64, 50,
+			116, 57, 34, 6, 122, 71, 37, 0, 9, 198, 77, 4, 143, 21, 65, 82, 15, 9, 198, 77, 3, 9, 57, 65, 82, 15, 9, 198, 76, 229,
+			73, 77, 65, 82, 15, 9, 198, 76, 50, 15, 44, 177, 82, 15, 9, 198, 76, 50, 15, 25, 65, 82, 15, 9, 198, 76, 50, 1, 53, 1,
+			82, 15, 9, 198, 64, 147, 139, 77, 65, 82, 15, 9, 198, 64, 19, 137, 20, 177, 82, 15, 9, 198, 52, 19, 12, 61, 65, 82, 15, 9,
+			198, 44, 227, 197, 77, 65, 82, 15, 9, 198, 28, 194, 78, 77, 65, 82, 15, 9, 198, 24, 197, 73, 77, 65, 82, 15, 9, 198, 16, 81,
+			77, 77, 65, 82, 15, 20, 70, 12, 243, 80, 85, 65, 82, 49, 113, 65, 48, 57, 6, 40, 47, 13, 34, 0, 15, 9, 198, 8, 83, 5,
+			52, 209, 82, 15, 18, 70, 8, 85, 23, 21, 65, 82, 71, 111, 47, 85, 6, 119, 47, 13, 34, 0, 0, 7, 196, 92, 20, 5, 56, 15,
+			7, 195, 88, 19, 128, 46, 76, 0, 6, 195, 20, 65, 76, 15, 0, 18, 2, 95, 41, 107, 6, 115, 49, 57, 13, 89, 55, 6, 124, 47,
+			13, 50, 0, 0, 6, 195, 4, 65, 82, 15, 19, 2, 95, 40, 107, 6, 115, 49, 57, 13, 23, 6, 122, 48, 119, 50, 13, 50, 0, 0,
+			0, 18, 72, 20, 208, 143, 84, 50, 21, 85, 32, 117, 71, 40, 91, 6, 109, 34, 0, 0, 17, 2, 95, 45, 49, 6, 113, 48, 111, 55,
+			47, 4, 119, 49, 13, 50, 0, 0, 7, 195, 52, 16, 82, 72, 8, 10, 2, 95, 44, 49, 6, 113, 65, 115, 0, 0, 11, 70, 84, 197,
+			9, 52, 21, 5, 21, 0, 47, 9, 2, 95, 51, 72, 34, 6, 37, 0, 0, 12, 68, 8, 83, 7, 4, 71, 111, 55, 100, 115, 0, 9,
+			2, 95, 50, 47, 85, 6, 119, 0, 0, 6, 195, 28, 192, 83, 15, 8, 2, 95, 49, 6, 119, 50, 0, 0, 9, 2, 95, 48, 50, 6,
+			110, 55, 0, 0, 8, 67, 28, 19, 69, 21, 0, 47, 8, 67, 32, 243, 69, 21, 0, 47, 11, 2, 95, 55, 88, 6, 119, 84, 13, 50,
+			0, 0, 9, 2, 95, 54, 88, 6, 111, 89, 0, 0, 9, 2, 95, 53, 84, 6, 123, 83, 0, 0, 9, 2, 95, 52, 84, 6, 37, 34,
+			0, 0, 15, 2, 95, 59, 48, 6, 110, 50, 47, 49, 113, 65, 4, 115, 0, 0, 8, 197, 32, 84, 141, 4, 224, 65, 17, 2, 95, 58,
+			72, 6, 110, 71, 13, 55, 13, 48, 4, 110, 50, 47, 0, 0, 7, 196, 92, 17, 133, 48, 15, 7, 196, 24, 16, 133, 48, 15, 7, 196,
+			56, 240, 133, 48, 15, 7, 196, 48, 144, 133, 48, 66, 11, 2, 95, 57, 50, 6, 119, 100, 13, 50, 0, 0, 8, 197, 4, 212, 212, 20,
+			192, 15, 8, 197, 92, 144, 200, 20, 192, 15, 9, 198, 81, 35, 205, 52, 83, 0, 15, 9, 198, 77, 67, 205, 52, 83, 0, 15, 8, 197,
+			72, 240, 200, 20, 192, 15, 8, 197, 44, 149, 20, 20, 192, 15, 8, 197, 8, 245, 20, 20, 192, 15, 9, 198, 17, 35, 205, 52, 83, 0,
+			15, 7, 66, 92, 80, 85, 13, 0, 9, 2, 95, 56, 6, 116, 101, 47, 0, 0, 16, 2, 95, 63, 84, 14, 16, 6, 115, 101, 47, 119,
+			49, 13, 50, 0, 0, 0, 7, 196, 76, 18, 133, 80, 66, 8, 195, 84, 149, 0, 46, 76, 28, 0, 13, 202, 92, 84, 139, 81, 82, 71,
+			20, 194, 74, 44, 66, 9, 198, 81, 114, 78, 44, 83, 0, 15, 9, 198, 93, 35, 206, 28, 83, 0, 15, 0, 7, 196, 8, 82, 69, 72,
+			15, 0, 23, 73, 16, 19, 65, 76, 49, 82, 36, 225, 192, 72, 35, 65, 116, 38, 89, 6, 119, 34, 108, 68, 0, 9, 198, 88, 243, 210,
+			16, 21, 0, 8, 0, 0, 0, 24, 73, 36, 225, 143, 72, 208, 84, 36, 85, 133, 108, 50, 83, 113, 34, 65, 115, 47, 6, 37, 84, 13,
+			0, 0, 0, 7, 196, 88, 86, 133, 48, 15, 7, 196, 24, 86, 133, 48, 15, 7, 196, 52, 22, 133, 48, 15, 7, 196, 56, 246, 133, 48,
+			15, 9, 198, 17, 35, 207, 29, 65, 83, 16, 0, 9, 198, 76, 50, 15, 84, 65, 82, 15, 0, 18, 70, 24, 80, 146, 84, 20, 137, 83,
+			119, 71, 34, 109, 6, 115, 34, 37, 0, 0, 6, 195, 4, 65, 76, 15, 0, 7, 196, 64, 20, 133, 48, 15, 0, 0, 0, 0, 0, 6,
+			195, 20, 145, 82, 15, 0, 9, 198, 88, 147, 204, 21, 69, 5, 67, 16, 70, 72, 245, 76, 21, 69, 5, 34, 40, 55, 6, 111, 47, 13,
+			0, 9, 198, 72, 16, 204, 21, 69, 5, 66, 15, 70, 64, 240, 200, 21, 69, 5, 48, 113, 91, 6, 111, 47, 0, 16, 70, 52, 20, 85,
+			21, 69, 5, 65, 115, 49, 6, 111, 47, 13, 0, 16, 70, 12, 244, 85, 21, 69, 5, 49, 122, 49, 6, 111, 47, 13, 0, 0, 0, 0,
+			0, 8, 67, 80, 147, 69, 21, 0, 47, 0, 0, 7, 196, 45, 82, 197, 48, 15, 0, 9, 198, 53, 50, 210, 4, 19, 64, 65, 0, 6,
+			195, 104, 19, 0, 72, 6, 195, 88, 211, 65, 13, 0, 0, 9, 68, 13, 32, 83, 32, 21, 0, 47, 0, 9, 198, 77, 65, 71, 28, 83,
+			0, 15, 9, 198, 76, 210, 83, 64, 83, 0, 15, 9, 198, 76, 197, 78, 28, 83, 0, 15, 0, 21, 2, 95, 95, 55, 6, 108, 81, 111,
+			50, 47, 89, 47, 14, 16, 6, 119, 48, 57, 13, 0, 0, 10, 199, 76, 16, 210, 37, 53, 9, 20, 67, 9, 198, 45, 112, 82, 80, 85,
+			0, 66, 9, 198, 48, 22, 129, 72, 85, 0, 67, 0, 7, 196, 64, 146, 197, 80, 66, 7, 196, 48, 242, 197, 80, 66, 7, 196, 44, 17,
+			5, 80, 66, 7, 196, 12, 17, 5, 80, 66, 8, 196, 56, 17, 1, 80, 74, 8, 0, 9, 198, 45, 112, 82, 80, 83, 0, 15, 9, 198,
+			45, 32, 85, 92, 83, 0, 15, 9, 198, 44, 227, 194, 8, 83, 0, 15, 0, 8, 197, 8, 244, 132, 21, 48, 18, 7, 195, 60, 242, 192,
+			46, 76, 0, 0, 7, 196, 64, 148, 5, 80, 66, 12, 68, 28, 147, 5, 80, 90, 37, 55, 6, 111, 0, 12, 68, 24, 147, 5, 80, 83,
+			37, 55, 6, 119, 0, 0, 0, 6, 195, 33, 83, 128, 72, 0, 0, 7, 196, 36, 166, 133, 48, 15, 0, 9, 198, 44, 243, 73, 20, 177,
+			82, 15, 0, 0, 0, 7, 196, 56, 20, 5, 48, 15, 7, 196, 64, 244, 5, 48, 15, 7, 196, 48, 84, 5, 48, 15, 7, 196, 5, 4,
+			5, 48, 15, 0, 0, 0, 0, 0, 0, 7, 2, 95, 115, 111, 89, 0, 0, 9, 198, 92, 20, 133, 53, 1, 76, 15, 9, 198, 80, 83,
+			148, 4, 177, 76, 15, 0, 6, 195, 24, 193, 83, 15, 13, 4, 95, 104, 97, 99, 107, 6, 115, 76, 111, 49, 0, 0, 12, 69, 5, 35,
+			65, 56, 64, 21, 102, 114, 0, 47, 9, 68, 77, 1, 65, 44, 21, 0, 47, 0, 12, 68, 92, 19, 133, 56, 85, 115, 50, 13, 50, 0,
+			0, 9, 198, 76, 50, 1, 73, 33, 76, 15, 9, 198, 80, 84, 212, 36, 177, 76, 15, 9, 198, 60, 36, 212, 4, 177, 76, 15, 0, 9,
+			198, 88, 243, 12, 20, 66, 71, 66, 17, 70, 48, 85, 133, 56, 66, 71, 55, 119, 84, 13, 50, 72, 13, 100, 0, 0, 13, 69, 52, 241,
+			83, 20, 192, 65, 40, 88, 13, 55, 0, 8, 197, 104, 16, 130, 20, 192, 15, 8, 197, 92, 17, 134, 20, 192, 15, 8, 197, 81, 83, 142,
+			20, 192, 15, 8, 197, 76, 16, 130, 20, 192, 15, 8, 197, 72, 145, 134, 20, 192, 15, 8, 197, 72, 85, 90, 20, 192, 15, 8, 197, 72,
+			80, 130, 20, 192, 15, 8, 197, 65, 86, 154, 20, 192, 15, 8, 197, 64, 85, 90, 20, 192, 15, 8, 197, 44, 16, 130, 20, 192, 15, 8,
+			197, 28, 146, 154, 20, 192, 15, 8, 197, 28, 17, 134, 20, 192, 15, 8, 197, 17, 82, 86, 20, 192, 15, 8, 197, 16, 240, 130, 20, 192,
+			15, 8, 197, 9, 80, 130, 20, 192, 15, 8, 197, 8, 240, 130, 20, 192, 15, 8, 197, 8, 85, 90, 20, 192, 15, 8, 197, 8, 16, 130,
+			20, 192, 15, 8, 197, 72, 85, 90, 20, 192, 15, 8, 197, 52, 244, 154, 20, 192, 15, 8, 197, 17, 81, 134, 20, 192, 15, 8, 197, 37,
+			48, 66, 20, 192, 67, 7, 2, 95, 116, 47, 119, 0, 0, 6, 195, 92, 147, 0, 72, 18, 2, 95, 123, 84, 6, 37, 34, 49, 116, 50,
+			47, 13, 107, 4, 115, 49, 0, 0, 0, 0, 9, 198, 81, 34, 80, 64, 83, 0, 15, 9, 198, 77, 66, 80, 64, 83, 0, 15, 9, 198,
+			9, 35, 203, 44, 83, 0, 15, 8, 197, 76, 147, 148, 20, 192, 15, 9, 198, 64, 84, 137, 44, 83, 0, 15, 8, 197, 28, 244, 132, 20,
+			192, 15, 16, 70, 16, 80, 201, 8, 83, 0, 72, 119, 89, 37, 71, 111, 55, 0, 9, 68, 37, 65, 77, 76, 21, 0, 47, 0, 8, 197,
+			32, 241, 86, 21, 48, 16, 7, 196, 76, 240, 133, 72, 15, 0, 0, 9, 198, 76, 195, 196, 16, 84, 128, 15, 9, 198, 76, 195, 196, 16,
+			84, 128, 15, 9, 198, 44, 195, 196, 16, 84, 128, 15, 8, 195, 80, 245, 0, 46, 76, 8, 25, 2, 95, 125, 84, 6, 37, 34, 49, 116,
+			50, 47, 13, 107, 4, 115, 49, 89, 55, 6, 124, 47, 13, 50, 0, 0, 17, 70, 52, 148, 212, 72, 19, 0, 65, 37, 89, 47, 34, 6,
+			116, 55, 0, 9, 198, 81, 32, 80, 64, 83, 0, 15, 9, 198, 17, 33, 78, 80, 83, 0, 15, 0, 10, 67, 40, 241, 89, 75, 122, 58,
+			37, 0, 14, 69, 8, 83, 132, 21, 48, 71, 111, 50, 72, 13, 89, 0, 8, 197, 52, 241, 82, 5, 48, 15, 0, 0, 9, 198, 81, 33,
+			73, 80, 84, 128, 15, 9, 198, 44, 192, 85, 80, 84, 128, 15, 10, 5, 95, 48, 97, 110, 100, 111, 50, 0, 0, 0, 0, 9, 198, 28,
+			84, 5, 85, 1, 76, 15, 18, 70, 16, 148, 195, 37, 1, 76, 72, 108, 89, 6, 37, 48, 13, 55, 0, 15, 0, 0, 8, 197, 72, 144,
+			130, 20, 192, 15, 8, 197, 56, 85, 90, 20, 192, 15, 8, 197, 17, 80, 130, 20, 192, 15, 8, 197, 105, 82, 86, 20, 192, 15, 0, 10,
+			199, 76, 50, 18, 4, 225, 5, 72, 15, 0, 8, 197, 92, 147, 4, 20, 224, 72, 0, 0, 8, 197, 64, 83, 132, 20, 192, 15, 8, 197,
+			56, 16, 200, 20, 192, 15, 8, 197, 9, 82, 84, 20, 192, 15, 8, 197, 32, 83, 132, 20, 192, 15, 0, 10, 199, 77, 84, 16, 61, 37,
+			5, 72, 15, 10, 199, 76, 50, 21, 12, 133, 5, 72, 15, 10, 199, 76, 50, 18, 60, 178, 197, 72, 15, 0, 0, 0, 0, 15, 70, 72,
+			85, 129, 56, 50, 5, 34, 13, 84, 117, 50, 91, 0, 0, 0, 0, 0, 16, 205, 4, 50, 20, 21, 34, 204, 20, 147, 139, 36, 225, 5,
+			72, 15, 0, 9, 198, 77, 68, 149, 8, 33, 76, 15, 0, 0, 8, 197, 105, 112, 86, 20, 192, 15, 8, 197, 88, 146, 154, 20, 192, 15,
+			8, 197, 52, 244, 146, 20, 192, 15, 8, 197, 44, 244, 146, 20, 192, 15, 8, 197, 8, 244, 146, 20, 192, 15, 8, 197, 8, 20, 146, 20,
+			192, 15, 8, 197, 4, 20, 154, 20, 192, 15, 8, 197, 49, 82, 70, 20, 192, 15, 8, 197, 44, 84, 150, 20, 192, 15, 8, 197, 44, 83,
+			142, 20, 192, 15, 8, 197, 44, 244, 154, 20, 192, 15, 0, 9, 198, 76, 83, 4, 21, 34, 69, 65, 18, 70, 53, 148, 212, 21, 34, 69,
+			65, 108, 89, 47, 6, 108, 12, 34, 37, 0, 15, 67, 52, 148, 197, 65, 37, 88, 117, 0, 44, 81, 101, 110, 32, 9, 198, 36, 225, 21,
+			13, 66, 69, 66, 18, 70, 33, 148, 212, 21, 34, 69, 107, 108, 89, 47, 108, 12, 34, 6, 37, 0, 9, 198, 4, 211, 133, 77, 66, 69,
+			67, 8, 67, 8, 20, 197, 21, 0, 47, 0, 15, 69, 36, 229, 5, 72, 224, 108, 50, 47, 6, 111, 34, 50, 0, 8, 197, 104, 245, 68,
+			20, 224, 72, 8, 197, 32, 17, 4, 20, 224, 72, 0, 0, 8, 197, 92, 244, 148, 20, 192, 15, 8, 197, 92, 19, 132, 20, 192, 15, 8,
+			197, 80, 147, 148, 20, 192, 15, 8, 197, 52, 20, 148, 20, 192, 15, 9, 198, 45, 113, 66, 8, 83, 0, 15, 9, 198, 45, 34, 78, 28,
+			83, 0, 15, 8, 197, 28, 148, 208, 20, 192, 15, 8, 197, 105, 112, 84, 20, 192, 15, 8, 197, 52, 19, 148, 20, 192, 15, 8, 197, 32,
+			244, 212, 20, 192, 15, 8, 197, 16, 244, 144, 20, 192, 15, 8, 197, 16, 148, 212, 20, 192, 15, 7, 66, 104, 80, 88, 13, 0, 0, 7,
+			196, 65, 80, 133, 72, 15, 7, 196, 48, 244, 5, 72, 15, 7, 196, 44, 20, 5, 72, 15, 0, 15, 70, 49, 83, 131, 32, 84, 192, 55,
+			110, 50, 91, 13, 89, 0, 0, 9, 198, 77, 69, 73, 80, 84, 128, 15, 9, 198, 76, 50, 1, 80, 84, 128, 15, 9, 198, 8, 195, 197,
+			16, 84, 128, 15, 0, 9, 198, 88, 193, 85, 28, 83, 0, 15, 9, 198, 77, 69, 78, 80, 83, 0, 15, 0, 7, 196, 44, 242, 197, 72,
+			15, 7, 196, 32, 18, 197, 72, 15, 7, 196, 8, 18, 197, 72, 15, 0, 16, 70, 16, 245, 66, 48, 85, 0, 72, 40, 71, 55, 6, 111,
+			47, 0, 0, 0, 13, 72, 53, 83, 20, 37, 67, 213, 12, 128, 21, 0, 47, 0, 0, 16, 69, 21, 133, 5, 72, 224, 111, 49, 89, 47,
+			6, 111, 34, 50, 0, 9, 198, 76, 50, 9, 52, 209, 76, 15, 18, 70, 8, 83, 8, 4, 209, 76, 71, 6, 111, 55, 107, 115, 65, 13,
+			55, 0, 0, 24, 73, 36, 212, 18, 20, 115, 133, 72, 147, 135, 108, 65, 48, 34, 4, 111, 100, 50, 6, 119, 108, 68, 0, 0, 8, 197,
+			92, 84, 150, 20, 192, 15, 8, 197, 77, 82, 90, 20, 192, 15, 8, 197, 72, 241, 134, 20, 192, 15, 8, 197, 72, 17, 134, 20, 192, 15,
+			8, 197, 52, 241, 134, 20, 192, 15, 8, 197, 45, 113, 90, 20, 192, 15, 8, 197, 17, 82, 90, 20, 192, 15, 8, 197, 9, 81, 134, 20,
+			192, 15, 8, 197, 76, 224, 86, 20, 192, 15, 8, 197, 32, 244, 154, 20, 192, 15, 0, 10, 199, 56, 21, 149, 48, 32, 65, 72, 66, 10,
+			199, 16, 146, 196, 60, 83, 133, 72, 15, 0, 25, 73, 4, 65, 77, 8, 83, 133, 52, 83, 132, 115, 72, 13, 65, 71, 13, 50, 6, 119,
+			65, 13, 50, 72, 0, 8, 197, 105, 83, 12, 20, 224, 72, 0, 21, 73, 88, 84, 146, 20, 178, 74, 44, 84, 128, 84, 111, 34, 13, 49,
+			123, 49, 13, 34, 0, 12, 201, 64, 145, 84, 21, 1, 85, 80, 84, 128, 15, 12, 201, 12, 243, 147, 84, 210, 78, 16, 84, 128, 15, 12,
+			201, 5, 37, 9, 77, 66, 69, 44, 84, 128, 15, 0, 8, 197, 92, 83, 148, 20, 192, 15, 8, 197, 80, 244, 148, 20, 192, 15, 8, 197,
+			76, 146, 144, 20, 192, 15, 8, 197, 44, 20, 148, 20, 192, 15, 8, 197, 44, 19, 148, 20, 192, 15, 8, 197, 32, 20, 208, 20, 192, 15,
+			8, 197, 16, 20, 148, 20, 192, 15, 8, 197, 52, 244, 148, 20, 192, 15, 8, 197, 9, 82, 68, 20, 192, 15, 0, 16, 67, 57, 148, 192,
+			50, 123, 89, 72, 6, 124, 88, 111, 50, 47, 0, 19, 71, 92, 83, 9, 77, 112, 65, 72, 85, 111, 55, 108, 89, 58, 6, 115, 34, 0,
+			10, 199, 76, 50, 18, 36, 178, 197, 72, 15, 10, 199, 9, 83, 12, 16, 246, 133, 72, 15, 0, 0, 0, 9, 198, 36, 229, 129, 76, 145,
+			64, 66, 0, 7, 195, 17, 84, 192, 72, 8, 0, 9, 198, 104, 241, 1, 56, 145, 192, 66, 0, 0, 14, 70, 28, 245, 65, 12, 129, 64,
+			100, 40, 6, 116, 91, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 201, 153, 110, 14, 50, 0, 0, 8, 197, 88, 243, 132, 20, 192, 15,
+			8, 197, 88, 83, 132, 20, 192, 15, 8, 197, 81, 85, 20, 20, 192, 15, 8, 197, 80, 85, 84, 20, 192, 15, 9, 198, 76, 229, 70, 24,
+			83, 0, 15, 8, 197, 56, 85, 84, 20, 192, 15, 9, 198, 44, 229, 70, 24, 83, 0, 15, 8, 197, 44, 16, 200, 20, 192, 15, 8, 197,
+			32, 19, 132, 20, 192, 15, 8, 197, 8, 240, 200, 20, 192, 15, 8, 197, 28, 243, 132, 20, 192, 15, 0, 0, 9, 198, 29, 35, 197, 88,
+			84, 192, 16, 8, 197, 92, 241, 75, 21, 32, 15, 8, 197, 76, 209, 75, 21, 32, 15, 8, 197, 45, 32, 75, 21, 32, 15, 0, 0, 9,
+			198, 92, 244, 147, 80, 83, 0, 15, 14, 69, 64, 240, 200, 21, 64, 48, 113, 91, 6, 111, 47, 0, 0, 0, 10, 69, 64, 192, 89, 21,
+			32, 21, 0, 47, 0, 16, 70, 36, 225, 197, 8, 244, 135, 108, 68, 119, 71, 113, 34, 101, 0, 12, 201, 32, 243, 199, 17, 33, 77, 64,
+			83, 0, 15, 0, 8, 197, 52, 20, 141, 61, 64, 66, 8, 197, 76, 244, 130, 21, 64, 66, 14, 69, 88, 145, 206, 21, 64, 84, 108, 67,
+			6, 111, 47, 0, 0, 8, 3, 201, 153, 116, 13, 47, 0, 0, 9, 198, 76, 50, 21, 36, 97, 76, 15, 9, 198, 48, 21, 133, 56, 65,
+			76, 15, 9, 198, 44, 22, 149, 36, 97, 76, 15, 8, 197, 77, 65, 86, 20, 224, 15, 0, 15, 70, 13, 40, 67, 32, 84, 192, 49, 34,
+			111, 91, 13, 89, 0, 0, 8, 197, 92, 20, 146, 20, 192, 15, 8, 197, 52, 22, 154, 20, 192, 15, 8, 197, 44, 225, 86, 20, 192, 15,
+			8, 197, 44, 144, 130, 20, 192, 15, 8, 197, 32, 240, 130, 20, 192, 15, 0, 0, 13, 69, 8, 82, 76, 20, 224, 71, 123, 55, 13, 50,
+			0, 14, 69, 52, 148, 212, 20, 224, 65, 108, 89, 47, 13, 50, 0, 8, 197, 92, 147, 12, 20, 224, 72, 0, 0, 8, 197, 80, 144, 200,
+			20, 192, 15, 8, 197, 72, 85, 84, 20, 192, 15, 8, 197, 44, 193, 80, 20, 192, 15, 8, 197, 32, 16, 200, 20, 192, 15, 8, 197, 9,
+			83, 132, 20, 192, 15, 8, 197, 24, 148, 212, 20, 192, 15, 12, 201, 53, 81, 199, 20, 230, 137, 25, 65, 82, 15, 0, 10, 199, 76, 84,
+			20, 20, 208, 133, 72, 66, 0, 13, 68, 28, 83, 149, 4, 100, 119, 50, 109, 85, 115, 0, 0, 0, 17, 70, 72, 243, 65, 56, 49, 64,
+			34, 122, 65, 6, 117, 89, 13, 0, 16, 16, 70, 52, 21, 5, 72, 145, 64, 65, 115, 47, 6, 119, 34, 37, 0, 16, 70, 4, 66, 5,
+			76, 145, 64, 116, 47, 107, 6, 119, 88, 37, 0, 17, 70, 89, 34, 74, 4, 113, 64, 84, 34, 119, 57, 6, 115, 90, 13, 0, 17, 70,
+			52, 85, 18, 4, 113, 64, 65, 119, 47, 34, 6, 115, 90, 13, 0, 10, 198, 28, 84, 212, 4, 113, 64, 15, 66, 10, 198, 76, 243, 77,
+			36, 113, 64, 46, 76, 0, 0, 9, 198, 56, 17, 5, 48, 145, 192, 66, 9, 198, 52, 148, 211, 48, 17, 192, 65, 0, 0, 16, 70, 41,
+			84, 212, 36, 225, 64, 90, 109, 89, 47, 6, 37, 50, 0, 9, 198, 12, 128, 82, 4, 65, 64, 66, 10, 198, 4, 229, 5, 56, 225, 64,
+			66, 16, 11, 70, 60, 97, 140, 36, 225, 64, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 22, 72, 52, 147, 137, 77, 65, 82, 36, 80,
+			65, 37, 50, 108, 89, 47, 6, 108, 12, 34, 37, 0, 0, 9, 198, 88, 82, 9, 44, 83, 0, 15, 0, 0, 13, 69, 36, 225, 205, 5,
+			32, 108, 68, 65, 116, 34, 0, 13, 69, 52, 148, 211, 21, 32, 65, 108, 89, 13, 34, 0, 8, 197, 104, 82, 75, 21, 32, 15, 8, 197,
+			77, 64, 75, 21, 32, 15, 8, 197, 65, 33, 75, 21, 32, 15, 8, 197, 64, 82, 71, 21, 32, 15, 8, 197, 40, 241, 75, 21, 32, 15,
+			8, 197, 40, 85, 75, 21, 32, 15, 0, 0, 12, 69, 12, 128, 76, 21, 64, 91, 115, 55, 111, 0, 9, 198, 77, 2, 75, 44, 83, 0,
+			15, 9, 198, 65, 34, 75, 44, 83, 0, 15, 9, 198, 45, 33, 85, 44, 83, 0, 15, 9, 198, 81, 35, 197, 8, 83, 0, 15, 8, 197,
+			44, 20, 144, 21, 64, 66, 8, 197, 80, 16, 140, 21, 64, 66, 15, 69, 72, 81, 204, 21, 64, 34, 119, 100, 55, 6, 111, 47, 0, 13,
+			69, 12, 16, 200, 21, 64, 49, 116, 91, 6, 111, 0, 7, 196, 76, 147, 132, 76, 8, 0, 0, 16, 70, 12, 16, 129, 72, 85, 0, 49,
+			115, 71, 115, 34, 6, 111, 0, 8, 197, 92, 16, 73, 21, 32, 15, 8, 197, 80, 147, 77, 21, 32, 15, 8, 197, 48, 243, 77, 21, 32,
+			15, 8, 197, 48, 83, 77, 21, 32, 15, 8, 197, 48, 19, 77, 21, 32, 15, 8, 197, 44, 243, 77, 21, 32, 15, 6, 195, 45, 83, 148,
+			72, 0, 0, 14, 69, 9, 81, 134, 21, 64, 71, 109, 83, 6, 111, 47, 0, 8, 197, 76, 84, 150, 21, 64, 66, 8, 197, 12, 244, 150,
+			21, 64, 66, 8, 197, 76, 243, 142, 21, 64, 66, 8, 197, 44, 244, 142, 21, 64, 66, 8, 197, 12, 20, 142, 21, 64, 66, 0, 0, 20,
+			72, 12, 128, 77, 64, 145, 206, 60, 224, 91, 116, 65, 48, 37, 57, 6, 113, 50, 0, 7, 195, 104, 240, 76, 66, 46, 0, 0, 0, 0,
+			0, 0, 8, 195, 16, 243, 210, 46, 76, 28, 0, 20, 71, 72, 84, 197, 73, 99, 201, 72, 34, 119, 88, 111, 34, 84, 58, 6, 115, 34,
+			0, 0, 0, 15, 69, 8, 84, 137, 28, 80, 71, 108, 12, 34, 13, 100, 13, 0, 14, 69, 8, 83, 137, 28, 80, 71, 119, 50, 13, 100,
+			13, 0, 0, 0, 16, 70, 20, 228, 85, 141, 65, 64, 117, 49, 6, 111, 47, 13, 0, 16, 7, 195, 4, 196, 192, 72, 8, 0, 10, 199,
+			12, 128, 82, 48, 245, 20, 20, 66, 19, 71, 64, 148, 143, 84, 85, 20, 20, 48, 37, 16, 40, 85, 6, 111, 47, 13, 0, 18, 71, 21,
+			66, 81, 84, 85, 20, 20, 119, 47, 37, 49, 6, 111, 47, 13, 0, 10, 199, 21, 53, 1, 24, 85, 20, 20, 67, 17, 71, 12, 245, 82,
+			28, 85, 20, 20, 49, 40, 34, 90, 6, 111, 47, 0, 0, 8, 197, 52, 147, 137, 52, 16, 65, 0, 9, 198, 8, 241, 90, 20, 209, 78,
+			15, 0, 7, 196, 8, 18, 197, 56, 15, 0, 15, 70, 56, 85, 2, 60, 242, 192, 50, 111, 47, 71, 40, 49, 0, 0, 0, 0, 9, 198,
+			21, 132, 12, 61, 50, 69, 66, 7, 196, 104, 81, 197, 56, 15, 7, 196, 72, 81, 197, 56, 15, 7, 196, 40, 81, 197, 56, 15, 7, 196,
+			52, 241, 197, 56, 72, 0, 0, 0, 9, 198, 76, 211, 197, 104, 83, 0, 15, 9, 198, 76, 210, 75, 44, 83, 0, 15, 9, 198, 29, 37,
+			73, 104, 83, 0, 15, 0, 7, 196, 64, 245, 133, 72, 15, 0, 8, 197, 92, 82, 71, 21, 32, 15, 8, 197, 88, 243, 11, 21, 32, 15,
+			8, 197, 64, 145, 75, 21, 32, 15, 8, 197, 64, 21, 19, 21, 32, 15, 8, 197, 48, 21, 87, 21, 32, 15, 0, 0, 9, 198, 81, 35,
+			199, 28, 83, 0, 15, 14, 69, 80, 245, 80, 21, 64, 47, 40, 48, 6, 111, 47, 0, 8, 197, 88, 147, 204, 21, 64, 67, 14, 69, 64,
+			245, 76, 21, 64, 48, 40, 55, 6, 111, 47, 0, 0, 7, 196, 45, 82, 69, 72, 15, 0, 8, 197, 64, 241, 73, 21, 32, 15, 8, 197,
+			40, 19, 77, 21, 32, 15, 0, 7, 196, 92, 244, 132, 80, 72, 0, 0, 0, 16, 70, 73, 80, 146, 36, 82, 192, 34, 109, 71, 34, 6,
+			37, 49, 0, 0, 6, 18, 66, 103, 0, 107, 0, 7, 6, 18, 67, 100, 101, 110, 32, 0, 110, 101, 110, 32, 0, 100, 101, 32, 0, 116,
+			32, 0, 100, 32, 0, 32, 0, 7, 6, 98, 101, 0, 8, 2, 21, 14, 128, 132, 130, 3, 71, 13, 0, 122, 111, 101, 107, 101, 114, 115,
+			8, 2, 21, 14, 128, 132, 137, 3, 71, 13, 88, 6, 40, 49, 13, 34, 89, 0, 8, 2, 114, 101, 110, 3, 71, 108, 12, 0, 4, 2,
 			108, 103, 3, 71, 111, 0, 8, 2, 17, 67, 11, 0, 8, 2, 17, 67, 17, 67, 101, 32, 0, 8, 2, 17, 67, 17, 67, 101, 110, 32,
 			0, 8, 2, 17, 67, 106, 101, 25, 0, 8, 2, 99, 17, 67, 0, 8, 2, 110, 103, 101, 108, 0, 8, 2, 114, 109, 0, 8, 2, 115,
 			116, 105, 97, 0, 105, 101, 8, 2, 114, 3, 71, 111, 37, 13, 0, 4, 8, 2, 17, 67, 101, 114, 32, 3, 71, 119, 0, 8, 2, 100,
 			101, 108, 0, 8, 2, 116, 101, 114, 0, 8, 2, 118, 101, 110, 32, 0, 8, 2, 122, 101, 109, 0, 8, 2, 122, 105, 103, 0, 101, 8,
 			2, 12, 0, 118, 101, 114, 8, 3, 71, 119, 84, 13, 34, 0, 117, 8, 3, 71, 121, 0, 4, 105, 8, 2, 100, 101, 3, 71, 123, 0,
-			105, 8, 2, 116, 101, 108, 0, 7, 6, 99, 104, 0, 101, 1, 10, 2, 32, 3, 8, 91, 0, 4, 8, 2, 97, 100, 111, 114, 3, 76,
-			0, 8, 2, 97, 114, 116, 101, 114, 0, 8, 2, 105, 112, 0, 101, 114, 114, 121, 8, 3, 76, 111, 34, 37, 0, 4, 1, 97, 116, 101,
-			100, 3, 91, 0, 1, 110, 97, 108, 98, 0, 1, 110, 97, 118, 101, 114, 2, 101, 0, 1, 110, 117, 114, 98, 0, 1, 111, 114, 98, 2,
-			101, 0, 1, 111, 114, 98, 2, 117, 0, 1, 114, 97, 109, 0, 2, 195, 169, 0, 8, 0, 8, 111, 112, 2, 101, 0, 105, 8, 2, 99,
-			97, 110, 101, 3, 91, 2, 37, 0, 97, 117, 8, 2, 102, 102, 101, 3, 91, 2, 122, 0, 97, 112, 101, 114, 111, 110, 8, 3, 91, 4,
-			116, 48, 13, 34, 118, 50, 0, 97, 117, 8, 2, 118, 105, 110, 3, 91, 4, 122, 0, 101, 113, 117, 101, 8, 3, 91, 111, 49, 0, 111,
-			8, 2, 113, 117, 101, 3, 91, 113, 0, 97, 114, 103, 8, 2, 21, 3, 91, 116, 34, 90, 0, 97, 110, 103, 8, 2, 101, 3, 91, 117,
-			90, 0, 4, 3, 101, 0, 8, 2, 97, 111, 0, 8, 2, 97, 114, 105, 0, 8, 2, 101, 109, 105, 0, 8, 2, 108, 111, 0, 8, 2,
-			111, 108, 101, 0, 8, 2, 111, 114, 0, 8, 2, 114, 0, 7, 6, 101, 114, 0, 4, 1, 21, 2, 105, 110, 103, 32, 3, 6, 108, 12,
-			34, 0, 1, 21, 2, 105, 110, 103, 101, 110, 32, 0, 101, 110, 2, 32, 3, 6, 108, 12, 34, 13, 50, 0, 4, 1, 10, 2, 32, 28,
-			33, 3, 8, 13, 34, 0, 1, 10, 2, 100, 32, 28, 33, 0, 1, 10, 2, 100, 101, 32, 28, 33, 0, 1, 10, 2, 100, 101, 110, 32,
+			105, 8, 2, 116, 101, 108, 0, 7, 6, 99, 104, 0, 101, 1, 10, 2, 32, 3, 8, 91, 0, 8, 2, 114, 105, 115, 116, 3, 49, 0,
+			4, 8, 2, 97, 100, 111, 114, 3, 76, 0, 8, 2, 97, 114, 116, 101, 114, 0, 8, 2, 105, 112, 0, 101, 114, 114, 121, 8, 3, 76,
+			111, 34, 37, 0, 4, 1, 97, 116, 101, 100, 3, 91, 0, 1, 110, 97, 108, 98, 0, 1, 110, 97, 118, 101, 114, 2, 101, 0, 1, 110,
+			117, 114, 98, 0, 1, 111, 114, 98, 2, 101, 0, 1, 111, 114, 98, 2, 117, 0, 1, 114, 97, 109, 0, 2, 195, 169, 0, 8, 0, 8,
+			111, 112, 2, 101, 0, 105, 8, 2, 99, 97, 110, 101, 3, 91, 2, 37, 0, 97, 117, 8, 2, 102, 102, 101, 3, 91, 2, 122, 0, 97,
+			112, 101, 114, 111, 110, 8, 3, 91, 4, 116, 48, 13, 34, 118, 50, 0, 97, 117, 8, 2, 118, 105, 110, 3, 91, 4, 122, 0, 101, 113,
+			117, 101, 8, 3, 91, 111, 49, 0, 111, 8, 2, 113, 117, 101, 3, 91, 113, 0, 97, 114, 103, 8, 2, 21, 3, 91, 116, 34, 90, 0,
+			97, 110, 103, 8, 2, 101, 3, 91, 117, 90, 0, 4, 3, 101, 0, 8, 2, 97, 111, 0, 8, 2, 97, 114, 105, 0, 8, 2, 101, 109,
+			105, 0, 8, 2, 108, 111, 0, 8, 2, 111, 108, 101, 0, 8, 2, 111, 114, 0, 8, 2, 114, 0, 7, 6, 101, 110, 0, 4, 116, 1,
+			21, 2, 32, 3, 6, 111, 50, 47, 0, 116, 1, 21, 2, 101, 32, 0, 116, 1, 21, 2, 101, 110, 32, 0, 116, 1, 21, 2, 101, 114,
+			32, 0, 116, 1, 21, 2, 101, 114, 101, 32, 0, 116, 1, 21, 2, 115, 116, 32, 0, 116, 1, 21, 2, 115, 116, 101, 32, 0, 116, 1,
+			103, 97, 0, 1, 10, 2, 101, 32, 28, 33, 14, 128, 129, 131, 3, 8, 13, 50, 13, 0, 1, 10, 2, 101, 110, 32, 28, 33, 14, 128,
+			129, 132, 3, 8, 13, 50, 13, 50, 0, 1, 10, 2, 116, 32, 28, 33, 14, 128, 129, 131, 3, 8, 13, 50, 47, 0, 100, 101, 1, 10,
+			2, 32, 14, 128, 128, 129, 3, 13, 0, 4, 1, 10, 2, 32, 14, 128, 208, 130, 3, 13, 50, 0, 1, 10, 2, 105, 115, 115, 101, 110,
+			32, 0, 1, 17, 67, 17, 65, 25, 2, 32, 14, 128, 129, 130, 0, 1, 100, 110, 97, 2, 32, 14, 128, 128, 130, 0, 1, 101, 105, 2,
+			32, 14, 128, 128, 130, 0, 1, 106, 17, 65, 25, 2, 32, 14, 128, 128, 130, 0, 1, 107, 105, 10, 2, 32, 14, 128, 128, 130, 0, 1,
+			108, 101, 2, 32, 12, 14, 128, 208, 130, 0, 1, 108, 108, 2, 32, 14, 128, 128, 131, 0, 1, 114, 101, 2, 32, 12, 14, 128, 208, 130,
+			0, 1, 120, 17, 65, 25, 2, 32, 14, 128, 128, 130, 0, 100, 101, 110, 1, 10, 2, 32, 14, 128, 128, 130, 0, 100, 1, 10, 2, 32,
+			3, 13, 50, 72, 0, 115, 1, 10, 2, 32, 14, 128, 192, 131, 3, 13, 50, 89, 0, 7, 6, 101, 114, 0, 4, 1, 21, 2, 105, 110,
+			103, 32, 3, 6, 108, 12, 34, 0, 1, 21, 2, 105, 110, 103, 101, 110, 32, 0, 101, 110, 2, 32, 3, 6, 108, 12, 34, 13, 50, 0,
+			101, 110, 100, 2, 32, 3, 6, 108, 12, 34, 13, 50, 72, 0, 4, 1, 10, 2, 32, 28, 33, 3, 8, 13, 34, 0, 1, 10, 2, 100,
+			32, 28, 33, 0, 1, 10, 2, 100, 101, 32, 28, 33, 0, 1, 10, 2, 100, 101, 110, 32, 28, 33, 0, 1, 10, 2, 100, 101, 114, 32,
 			28, 33, 0, 1, 10, 2, 101, 32, 28, 33, 0, 1, 10, 2, 101, 110, 32, 28, 33, 0, 1, 10, 2, 101, 110, 100, 32, 28, 33, 0,
-			1, 10, 2, 101, 110, 100, 101, 32, 28, 33, 0, 1, 10, 2, 105, 110, 103, 32, 28, 33, 0, 1, 10, 2, 105, 110, 103, 101, 110, 32,
-			28, 33, 0, 1, 10, 2, 116, 32, 28, 33, 0, 4, 1, 10, 2, 32, 3, 13, 34, 0, 1, 10, 2, 101, 110, 32, 28, 33, 0, 1,
-			21, 2, 97, 97, 114, 32, 0, 1, 108, 111, 116, 2, 97, 98, 101, 108, 0, 1, 115, 105, 109, 2, 97, 98, 101, 108, 0, 2, 105, 106,
-			32, 0, 105, 101, 2, 32, 3, 13, 34, 6, 37, 0, 101, 1, 10, 2, 32, 3, 13, 34, 13, 0, 97, 1, 10, 2, 32, 3, 13, 34,
-			115, 0, 8, 2, 21, 14, 128, 132, 130, 3, 111, 34, 0, 103, 101, 114, 8, 3, 111, 34, 100, 13, 34, 0, 1, 10, 2, 17, 67, 21,
-			3, 112, 34, 0, 7, 6, 111, 110, 0, 4, 103, 8, 2, 97, 97, 114, 110, 3, 4, 113, 50, 100, 6, 0, 103, 8, 2, 97, 110, 115,
-			0, 103, 8, 2, 114, 105, 106, 112, 98, 97, 97, 114, 0, 103, 8, 2, 114, 111, 110, 100, 0, 103, 8, 2, 117, 110, 115, 116, 105, 103,
-			0, 103, 8, 2, 117, 117, 114, 0, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 4, 113, 50, 100, 13, 0, 100, 101, 114, 8, 2, 21,
-			14, 128, 132, 133, 3, 6, 113, 50, 72, 13, 34, 0, 8, 2, 116, 101, 21, 14, 128, 132, 130, 3, 113, 50, 0, 97, 97, 110, 8, 2,
-			21, 14, 128, 132, 133, 3, 113, 50, 6, 115, 50, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 113, 50, 47, 0, 100, 101, 114, 8, 3,
-			113, 50, 72, 13, 34, 0, 4, 103, 101, 8, 2, 100, 105, 101, 114, 116, 3, 113, 50, 100, 13, 0, 103, 101, 8, 2, 108, 111, 111, 102,
-			0, 103, 101, 8, 2, 108, 117, 107, 0, 103, 101, 8, 2, 109, 97, 107, 0, 103, 101, 8, 2, 110, 97, 100, 101, 0, 103, 101, 8, 2,
-			114, 105, 101, 102, 0, 103, 101, 8, 2, 118, 97, 108, 0, 7, 6, 114, 101, 0, 4, 8, 2, 99, 101, 110, 116, 3, 34, 13, 0, 8,
-			2, 99, 101, 112, 116, 0, 8, 2, 99, 108, 97, 109, 0, 8, 2, 103, 101, 101, 114, 0, 8, 2, 103, 101, 114, 101, 110, 0, 8, 2,
-			115, 101, 114, 118, 101, 32, 0, 8, 2, 99, 111, 114, 100, 3, 34, 36, 6, 0, 8, 2, 99, 101, 112, 116, 105, 101, 102, 3, 34, 119,
-			0, 112, 114, 101, 2, 115, 97, 105, 108, 108, 3, 34, 119, 48, 34, 119, 0, 7, 6, 116, 101, 0, 103, 101, 110, 8, 2, 14, 128, 132,
-			133, 3, 47, 6, 119, 100, 13, 50, 0, 4, 8, 2, 103, 101, 108, 105, 106, 107, 14, 128, 132, 130, 3, 47, 13, 0, 8, 2, 103, 101,
-			109, 111, 101, 116, 14, 128, 132, 130, 0, 8, 2, 103, 111, 101, 100, 0, 8, 2, 104, 117, 105, 0, 8, 2, 107, 101, 101, 114, 0, 8,
-			2, 107, 111, 114, 116, 0, 8, 2, 108, 101, 117, 114, 0, 8, 2, 108, 111, 111, 114, 0, 8, 2, 109, 101, 101, 114, 0, 8, 2, 109,
-			105, 100, 100, 0, 8, 2, 110, 97, 0, 8, 2, 110, 101, 101, 114, 0, 8, 2, 114, 101, 99, 104, 116, 0, 8, 2, 115, 97, 109, 0,
-			8, 2, 118, 101, 101, 108, 0, 8, 2, 118, 101, 114, 103, 101, 101, 102, 14, 128, 132, 130, 0, 8, 2, 118, 111, 111, 114, 115, 99, 104,
-			105, 106, 110, 0, 8, 2, 118, 111, 114, 0, 8, 2, 118, 114, 101, 100, 0, 8, 2, 119, 101, 114, 107, 0, 114, 117, 103, 8, 2, 14,
-			128, 132, 133, 3, 47, 13, 34, 6, 110, 101, 0, 119, 101, 101, 103, 8, 2, 14, 128, 132, 134, 3, 47, 13, 85, 6, 119, 101, 0, 7,
-			6, 97, 0, 99, 104, 1, 109, 2, 105, 110, 3, 2, 115, 91, 0, 102, 102, 105, 99, 104, 8, 3, 2, 116, 83, 37, 91, 0, 105, 114,
-			101, 2, 32, 3, 6, 111, 12, 34, 13, 0, 105, 114, 2, 32, 3, 6, 111, 34, 0, 4, 1, 21, 2, 100, 101, 32, 3, 6, 115, 0,
-			1, 21, 2, 116, 97, 32, 0, 2, 116, 111, 114, 32, 0, 97, 2, 17, 67, 32, 0, 97, 2, 114, 100, 32, 0, 114, 105, 115, 2, 32,
-			3, 6, 115, 34, 108, 89, 0, 114, 105, 115, 115, 101, 110, 2, 32, 3, 6, 115, 34, 108, 89, 13, 50, 0, 97, 110, 8, 2, 21, 14,
-			128, 132, 131, 3, 6, 115, 50, 0, 98, 101, 108, 1, 21, 2, 32, 3, 6, 115, 71, 13, 55, 0, 98, 101, 108, 101, 1, 21, 2, 32,
-			3, 6, 115, 71, 13, 55, 13, 0, 103, 101, 2, 32, 24, 3, 6, 115, 90, 13, 0, 4, 110, 116, 1, 21, 2, 32, 3, 6, 116, 50,
-			47, 0, 110, 116, 1, 21, 2, 101, 32, 0, 110, 116, 1, 21, 2, 101, 110, 32, 0, 110, 116, 1, 21, 2, 101, 114, 32, 0, 105, 108,
-			108, 101, 2, 32, 3, 6, 116, 57, 13, 0, 105, 108, 108, 101, 115, 2, 32, 3, 6, 116, 57, 13, 89, 0, 103, 110, 101, 1, 21, 2,
-			32, 3, 6, 116, 67, 13, 0, 102, 8, 2, 17, 67, 21, 14, 128, 132, 130, 3, 6, 116, 83, 0, 1, 17, 67, 21, 21, 2, 32, 3,
-			8, 115, 0, 103, 101, 115, 2, 32, 14, 128, 128, 129, 3, 89, 0, 105, 8, 2, 109, 97, 98, 101, 108, 3, 111, 0, 4, 3, 115, 0,
-			1, 116, 2, 98, 108, 101, 97, 117, 0, 97, 0, 97, 1, 122, 2, 109, 32, 0, 101, 0, 97, 114, 1, 21, 2, 32, 14, 128, 128, 131,
-			3, 115, 34, 0, 97, 114, 100, 1, 21, 2, 32, 14, 128, 128, 132, 3, 115, 34, 47, 0, 4, 97, 105, 3, 115, 57, 0, 121, 0, 103,
-			101, 2, 32, 28, 17, 3, 115, 100, 13, 0, 4, 2, 17, 67, 25, 3, 116, 0, 2, 120, 0, 4, 1, 98, 2, 98, 121, 3, 119, 0,
-			105, 1, 100, 2, 115, 121, 0, 105, 108, 1, 109, 3, 119, 108, 55, 0, 4, 117, 3, 125, 0, 117, 119, 0, 7, 6, 98, 0, 1, 98,
-			3, 0, 97, 97, 114, 1, 10, 2, 32, 14, 128, 128, 132, 3, 8, 71, 115, 34, 0, 97, 114, 101, 1, 10, 2, 32, 14, 128, 128, 132,
-			3, 8, 71, 115, 34, 13, 0, 8, 111, 2, 115, 116, 97, 107, 3, 48, 0, 115, 2, 32, 24, 3, 48, 89, 0, 3, 71, 0, 105, 106,
-			2, 122, 111, 110, 100, 3, 71, 2, 37, 0, 105, 110, 110, 101, 110, 8, 2, 14, 128, 132, 134, 3, 71, 6, 108, 50, 13, 50, 0, 117,
-			117, 114, 116, 8, 2, 21, 21, 14, 128, 132, 133, 3, 71, 6, 109, 34, 47, 0, 111, 118, 101, 110, 8, 2, 14, 128, 132, 133, 3, 71,
-			6, 122, 84, 13, 50, 0, 105, 106, 8, 2, 17, 67, 21, 14, 128, 132, 131, 3, 71, 6, 123, 0, 117, 105, 116, 101, 110, 8, 2, 14,
-			128, 132, 134, 3, 71, 6, 124, 47, 13, 50, 0, 114, 97, 110, 100, 8, 3, 71, 34, 6, 116, 50, 72, 0, 97, 97, 110, 3, 71, 115,
-			50, 0, 7, 6, 99, 0, 4, 3, 49, 0, 107, 0, 111, 2, 110, 99, 101, 114, 116, 3, 49, 2, 113, 0, 111, 110, 103, 114, 101, 115,
-			8, 3, 49, 113, 50, 100, 34, 6, 111, 89, 0, 111, 97, 99, 104, 3, 49, 122, 76, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2,
-			121, 0, 4, 105, 1, 21, 2, 101, 101, 108, 3, 91, 0, 105, 1, 21, 2, 101, 117, 115, 0, 105, 1, 21, 2, 101, 117, 122, 0, 105,
-			1, 21, 2, 195, 171, 0, 105, 2, 97, 0, 105, 2, 111, 0, 7, 6, 100, 0, 1, 100, 3, 0, 4, 2, 115, 116, 3, 47, 0, 116,
-			0, 106, 3, 47, 57, 0, 115, 2, 32, 24, 3, 47, 89, 0, 3, 72, 0, 4, 101, 8, 2, 103, 101, 101, 110, 3, 72, 13, 0, 101,
-			8, 2, 122, 101, 108, 102, 0, 106, 8, 3, 75, 0, 7, 6, 101, 0, 117, 109, 1, 115, 117, 109, 21, 2, 32, 3, 4, 119, 110, 65,
-			0, 4, 1, 21, 2, 114, 101, 110, 100, 101, 32, 3, 6, 108, 0, 1, 21, 2, 114, 101, 110, 100, 101, 110, 32, 0, 101, 1, 21, 2,
-			114, 32, 0, 101, 1, 21, 2, 114, 100, 32, 0, 101, 1, 21, 2, 114, 100, 101, 32, 0, 101, 1, 21, 2, 114, 100, 101, 110, 32, 0,
-			101, 1, 21, 2, 114, 116, 32, 0, 4, 110, 116, 1, 21, 2, 32, 3, 6, 111, 50, 47, 0, 110, 116, 1, 21, 2, 101, 32, 0, 110,
-			116, 1, 21, 2, 101, 110, 32, 0, 110, 116, 1, 21, 2, 101, 114, 32, 0, 110, 116, 1, 21, 2, 101, 114, 101, 32, 0, 110, 116, 1,
-			21, 2, 115, 116, 32, 0, 110, 116, 1, 21, 2, 115, 116, 101, 32, 0, 110, 116, 1, 103, 97, 0, 108, 1, 21, 2, 32, 3, 6, 111,
-			55, 0, 115, 1, 21, 2, 32, 14, 128, 208, 130, 3, 6, 111, 89, 0, 115, 115, 101, 110, 1, 21, 2, 32, 14, 128, 208, 133, 3, 6,
-			111, 89, 13, 50, 0, 4, 101, 1, 21, 2, 29, 32, 3, 6, 119, 0, 101, 1, 21, 2, 32, 0, 108, 101, 1, 10, 2, 32, 3, 6,
-			119, 55, 13, 0, 108, 101, 110, 1, 21, 2, 32, 3, 6, 119, 55, 13, 50, 0, 117, 109, 2, 32, 28, 17, 3, 6, 119, 110, 65, 0,
-			97, 2, 32, 3, 6, 119, 115, 0, 117, 114, 1, 21, 2, 32, 3, 6, 121, 34, 0, 117, 122, 101, 1, 105, 2, 32, 3, 6, 121, 88,
-			13, 0, 117, 122, 101, 114, 1, 105, 2, 32, 3, 6, 121, 88, 13, 34, 0, 117, 122, 101, 114, 101, 1, 105, 2, 32, 3, 6, 121, 88,
-			13, 34, 13, 0, 117, 115, 1, 105, 2, 32, 3, 6, 121, 89, 0, 117, 115, 116, 1, 105, 2, 32, 3, 6, 121, 89, 47, 0, 117, 115,
-			116, 101, 1, 105, 2, 32, 3, 6, 121, 89, 47, 13, 0, 97, 117, 2, 32, 3, 6, 122, 0, 105, 116, 1, 116, 105, 2, 32, 3, 6,
-			123, 47, 0, 110, 1, 10, 2, 101, 32, 28, 33, 14, 128, 129, 131, 3, 8, 13, 50, 13, 0, 110, 1, 10, 2, 101, 110, 32, 28, 33,
-			14, 128, 129, 132, 3, 8, 13, 50, 13, 50, 0, 110, 1, 10, 2, 116, 32, 28, 33, 14, 128, 129, 131, 3, 8, 13, 50, 47, 0, 4,
-			108, 1, 10, 2, 32, 28, 33, 3, 8, 13, 55, 0, 108, 1, 10, 2, 100, 101, 32, 28, 33, 0, 108, 1, 10, 2, 100, 101, 110, 32,
-			28, 33, 0, 108, 1, 10, 2, 101, 32, 28, 33, 0, 108, 1, 10, 2, 101, 110, 32, 28, 33, 0, 108, 1, 10, 2, 101, 110, 100, 32,
-			28, 33, 0, 108, 1, 10, 2, 105, 110, 103, 32, 28, 33, 0, 108, 1, 10, 2, 105, 110, 103, 101, 110, 32, 28, 33, 0, 108, 1, 10,
-			2, 116, 32, 28, 33, 0, 4, 1, 10, 2, 109, 101, 110, 116, 3, 13, 0, 1, 10, 2, 110, 105, 115, 115, 101, 110, 32, 0, 1, 17,
-			67, 10, 2, 32, 14, 128, 208, 129, 0, 1, 17, 67, 17, 65, 25, 2, 32, 14, 128, 129, 129, 0, 1, 103, 105, 2, 32, 12, 14, 128,
-			208, 129, 0, 1, 106, 17, 65, 25, 2, 32, 14, 128, 128, 129, 0, 1, 108, 101, 2, 32, 12, 14, 128, 208, 129, 0, 1, 114, 101, 2,
-			32, 12, 14, 128, 208, 129, 0, 1, 115, 2, 99, 111, 110, 100, 0, 1, 115, 2, 99, 117, 117, 114, 0, 2, 32, 0, 110, 100, 101, 1,
-			10, 2, 32, 14, 128, 128, 129, 0, 117, 105, 108, 108, 101, 3, 13, 6, 109, 0, 195, 175, 2, 12, 3, 13, 10, 108, 0, 114, 101, 115,
-			1, 21, 2, 32, 14, 128, 208, 132, 3, 13, 34, 6, 111, 89, 0, 114, 101, 115, 115, 101, 110, 1, 21, 2, 32, 14, 128, 192, 135, 3,
-			13, 34, 6, 111, 89, 13, 50, 0, 4, 110, 1, 10, 2, 32, 14, 128, 208, 130, 3, 13, 50, 0, 110, 1, 17, 67, 17, 65, 25, 2,
-			32, 14, 128, 129, 130, 0, 110, 1, 100, 110, 97, 2, 32, 14, 128, 128, 130, 0, 110, 1, 106, 17, 65, 25, 2, 32, 14, 128, 128, 130,
-			0, 110, 1, 108, 101, 2, 32, 12, 14, 128, 208, 130, 0, 110, 1, 108, 108, 2, 32, 14, 128, 128, 131, 0, 110, 1, 114, 101, 2, 32,
-			12, 14, 128, 208, 130, 0, 110, 100, 101, 110, 1, 10, 2, 32, 14, 128, 128, 130, 0, 116, 116, 101, 110, 1, 21, 2, 32, 14, 128, 128,
-			131, 0, 110, 100, 1, 10, 2, 32, 3, 13, 50, 72, 0, 110, 115, 1, 10, 2, 32, 14, 128, 192, 131, 3, 13, 50, 89, 0, 108, 105,
-			106, 107, 115, 1, 10, 3, 13, 55, 13, 49, 89, 0, 108, 100, 1, 10, 2, 32, 3, 13, 55, 72, 0, 109, 1, 10, 2, 32, 3, 13,
-			65, 0, 4, 115, 1, 17, 67, 17, 65, 25, 2, 32, 14, 128, 129, 130, 3, 13, 89, 0, 115, 1, 21, 2, 32, 28, 33, 0, 115, 1,
-			106, 21, 2, 32, 0, 4, 2, 114, 3, 108, 12, 0, 101, 2, 114, 0, 4, 1, 99, 2, 110, 116, 114, 117, 109, 3, 111, 0, 1, 100,
-			105, 2, 110, 116, 0, 1, 115, 101, 114, 112, 2, 110, 116, 0, 2, 17, 67, 25, 0, 2, 114, 116, 115, 15, 0, 2, 120, 0, 120, 112,
-			111, 115, 105, 116, 105, 101, 8, 3, 111, 49, 89, 48, 122, 88, 6, 37, 47, 89, 37, 0, 1, 10, 2, 110, 17, 66, 21, 3, 112, 0,
-			4, 1, 29, 3, 119, 0, 1, 99, 111, 114, 112, 2, 100, 117, 0, 8, 112, 2, 110, 105, 98, 101, 108, 0, 101, 0, 100, 101, 110, 3,
-			119, 72, 13, 50, 0, 3, 120, 0, 117, 3, 121, 0, 97, 117, 3, 122, 0, 105, 2, 12, 3, 123, 0, 101, 117, 119, 3, 126, 0, 7,
-			6, 102, 0, 1, 102, 3, 0, 3, 83, 0, 7, 6, 103, 0, 4, 105, 1, 21, 2, 101, 117, 115, 3, 90, 0, 105, 1, 21, 2, 101,
-			117, 122, 0, 4, 3, 100, 0, 103, 0, 101, 110, 101, 114, 2, 97, 97, 108, 3, 100, 4, 119, 50, 13, 34, 0, 4, 101, 2, 98, 105,
-			101, 100, 3, 100, 13, 0, 101, 2, 115, 112, 114, 101, 107, 0, 101, 2, 118, 97, 108, 0, 101, 8, 2, 21, 14, 128, 132, 130, 0, 101,
-			108, 105, 106, 107, 8, 3, 100, 13, 55, 123, 49, 0, 105, 1, 105, 108, 101, 114, 2, 101, 117, 3, 100, 37, 57, 0, 101, 8, 2, 114,
-			17, 67, 3, 100, 111, 0, 4, 101, 8, 2, 118, 101, 110, 3, 100, 119, 0, 101, 8, 2, 118, 101, 114, 0, 101, 8, 2, 118, 105, 110,
-			103, 0, 101, 101, 8, 0, 101, 117, 8, 3, 100, 121, 0, 1, 115, 3, 101, 0, 7, 6, 104, 0, 1, 17, 67, 2, 25, 3, 0, 3,
-			107, 0, 101, 114, 105, 110, 110, 8, 3, 107, 2, 111, 34, 108, 50, 0, 101, 114, 115, 101, 110, 8, 3, 107, 6, 111, 34, 89, 13, 50,
-			0, 101, 114, 8, 2, 101, 110, 3, 107, 108, 12, 34, 0, 101, 114, 8, 2, 21, 14, 128, 132, 131, 3, 107, 111, 34, 0, 101, 105, 100,
-			1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 123, 47, 0, 7, 6, 105, 0, 4, 101, 1, 100, 2, 32, 3, 6, 37, 0, 101, 1, 103,
-			2, 32, 0, 101, 1, 109, 2, 32, 0, 101, 1, 112, 2, 32, 0, 101, 2, 17, 67, 101, 32, 0, 101, 2, 17, 67, 101, 110, 32, 0,
-			101, 2, 17, 67, 101, 114, 32, 0, 101, 2, 17, 67, 101, 114, 101, 32, 0, 101, 2, 17, 67, 106, 101, 29, 32, 0, 101, 2, 17, 67,
-			115, 116, 101, 32, 0, 101, 2, 17, 67, 116, 106, 101, 29, 32, 0, 101, 2, 29, 0, 101, 2, 114, 100, 32, 0, 101, 2, 114, 101, 110,
-			32, 0, 98, 101, 108, 1, 21, 2, 32, 3, 6, 37, 71, 13, 55, 0, 98, 101, 108, 101, 1, 21, 2, 32, 3, 6, 37, 71, 13, 55,
-			13, 0, 110, 110, 8, 2, 21, 14, 128, 132, 130, 3, 6, 108, 0, 110, 8, 2, 17, 67, 21, 14, 128, 132, 130, 3, 6, 108, 50, 0,
-			115, 116, 1, 21, 2, 32, 3, 6, 108, 89, 47, 0, 115, 116, 101, 110, 1, 21, 2, 32, 3, 6, 108, 89, 47, 13, 50, 0, 115, 109,
-			101, 1, 21, 2, 32, 3, 6, 108, 89, 65, 13, 0, 4, 106, 1, 21, 2, 110, 32, 3, 6, 123, 0, 106, 2, 32, 0, 106, 2, 101,
-			32, 0, 106, 2, 101, 110, 0, 106, 2, 116, 106, 101, 29, 0, 103, 101, 1, 21, 2, 32, 14, 128, 208, 131, 3, 8, 13, 100, 13, 0,
-			103, 101, 114, 1, 21, 2, 32, 3, 8, 13, 100, 13, 34, 0, 103, 101, 114, 101, 1, 21, 2, 32, 3, 8, 13, 100, 13, 34, 13, 0,
-			103, 101, 110, 1, 21, 2, 32, 3, 8, 13, 100, 13, 50, 0, 103, 115, 116, 1, 21, 2, 32, 3, 8, 13, 100, 89, 47, 0, 103, 115,
-			116, 101, 1, 21, 2, 32, 3, 8, 13, 100, 89, 47, 13, 0, 103, 1, 21, 2, 32, 14, 128, 208, 130, 3, 8, 13, 101, 0, 99, 117,
-			115, 1, 10, 2, 32, 3, 8, 37, 49, 110, 89, 0, 4, 99, 97, 1, 10, 2, 32, 3, 8, 37, 49, 115, 0, 107, 97, 1, 10, 2,
-			32, 0, 4, 99, 111, 1, 10, 2, 32, 3, 8, 37, 49, 122, 0, 107, 111, 1, 10, 2, 32, 0, 115, 99, 104, 1, 21, 2, 32, 3,
-			8, 37, 89, 0, 115, 99, 104, 101, 1, 21, 2, 32, 3, 8, 37, 89, 13, 0, 99, 105, 1, 10, 2, 32, 3, 8, 37, 89, 37, 0,
-			4, 3, 37, 0, 2, 99, 104, 101, 32, 0, 101, 0, 101, 117, 122, 101, 2, 32, 3, 37, 57, 6, 121, 88, 13, 0, 101, 117, 122, 101,
-			114, 2, 32, 3, 37, 57, 6, 121, 88, 13, 34, 0, 101, 117, 122, 101, 114, 101, 2, 32, 3, 37, 57, 6, 121, 88, 13, 34, 13, 0,
-			101, 117, 115, 2, 32, 3, 37, 57, 6, 121, 89, 0, 101, 117, 115, 116, 2, 32, 3, 37, 57, 6, 121, 89, 47, 0, 101, 117, 115, 116,
-			101, 2, 32, 3, 37, 57, 6, 121, 89, 47, 13, 0, 101, 117, 119, 3, 37, 58, 0, 111, 2, 110, 97, 103, 101, 3, 37, 113, 0, 101,
-			101, 3, 37, 119, 0, 4, 2, 17, 67, 25, 3, 108, 0, 2, 120, 0, 106, 2, 12, 3, 123, 0, 7, 6, 106, 0, 3, 57, 0, 111,
-			117, 2, 114, 110, 97, 3, 90, 40, 0, 7, 6, 107, 0, 1, 107, 3, 0, 3, 49, 0, 111, 110, 105, 110, 103, 8, 3, 49, 6, 122,
-			50, 108, 68, 0, 111, 107, 107, 101, 114, 101, 108, 3, 49, 113, 49, 13, 34, 6, 111, 55, 0, 97, 108, 101, 8, 2, 110, 100, 101, 3,
-			49, 115, 55, 6, 111, 0, 111, 110, 105, 110, 103, 105, 110, 8, 3, 49, 122, 50, 108, 100, 6, 108, 50, 0, 7, 6, 108, 0, 1, 108,
-			3, 0, 3, 55, 0, 105, 106, 107, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 13, 49, 0, 105, 106, 107, 101, 1, 10, 2, 32, 14,
-			128, 128, 133, 3, 55, 13, 49, 13, 0, 105, 106, 107, 101, 114, 1, 10, 2, 32, 14, 128, 128, 134, 3, 55, 13, 49, 13, 34, 0, 105,
-			106, 107, 101, 114, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 55, 13, 49, 13, 34, 13, 0, 105, 106, 107, 101, 110, 1, 10, 2, 32,
-			14, 128, 128, 134, 3, 55, 13, 49, 13, 50, 0, 105, 106, 107, 115, 116, 1, 10, 2, 32, 14, 128, 128, 134, 3, 55, 13, 49, 89, 47,
-			0, 105, 106, 107, 115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 55, 13, 49, 89, 47, 13, 0, 105, 106, 107, 104, 101, 105, 100,
-			1, 10, 2, 32, 14, 128, 128, 136, 3, 55, 13, 49, 107, 123, 47, 0, 97, 110, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 55, 35,
-			68, 13, 0, 97, 97, 110, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 115, 50, 0, 111, 122, 101, 1, 21, 2, 32, 14, 128, 128, 132,
-			3, 55, 122, 88, 13, 0, 111, 122, 101, 110, 1, 21, 2, 32, 14, 128, 128, 133, 3, 55, 122, 88, 13, 50, 0, 111, 111, 115, 1, 21,
-			2, 32, 14, 128, 128, 132, 3, 55, 122, 89, 0, 111, 111, 103, 1, 21, 2, 32, 3, 55, 122, 101, 0, 7, 6, 109, 0, 1, 109, 3,
-			0, 3, 65, 0, 105, 8, 2, 115, 21, 3, 65, 2, 108, 0, 105, 115, 8, 2, 103, 117, 110, 3, 65, 2, 108, 89, 0, 4, 105, 115,
-			8, 2, 99, 111, 109, 109, 14, 128, 132, 131, 3, 65, 6, 108, 89, 0, 105, 115, 8, 2, 100, 97, 14, 128, 132, 131, 0, 105, 115, 8,
-			2, 103, 21, 14, 128, 132, 131, 0, 105, 115, 8, 2, 103, 101, 21, 14, 128, 132, 131, 0, 105, 115, 8, 2, 105, 110, 21, 14, 128, 132,
-			131, 0, 105, 115, 8, 2, 107, 108, 101, 117, 14, 128, 132, 131, 0, 105, 115, 8, 2, 108, 105, 101, 112, 14, 128, 132, 131, 0, 105, 115,
-			8, 2, 108, 111, 14, 128, 132, 131, 0, 105, 115, 8, 2, 116, 17, 65, 0, 105, 115, 118, 101, 114, 8, 2, 21, 3, 65, 6, 108, 89,
-			83, 13, 34, 0, 101, 101, 8, 2, 21, 14, 128, 132, 131, 3, 65, 6, 119, 0, 101, 110, 117, 2, 32, 3, 65, 13, 50, 109, 0, 4,
-			105, 115, 8, 2, 97, 110, 17, 67, 3, 65, 37, 88, 0, 105, 115, 8, 2, 195, 168, 0, 97, 110, 97, 103, 101, 109, 101, 110, 116, 3,
-			65, 115, 50, 108, 75, 65, 13, 50, 47, 0, 7, 6, 110, 0, 1, 110, 3, 0, 4, 3, 50, 0, 2, 103, 28, 19, 0, 2, 107, 28,
-			19, 0, 4, 97, 2, 116, 117, 114, 3, 50, 2, 115, 0, 97, 2, 118, 105, 103, 0, 97, 8, 2, 112, 111, 108, 17, 65, 0, 97, 8,
-			2, 118, 111, 108, 103, 21, 0, 97, 112, 111, 108, 101, 111, 110, 3, 50, 2, 115, 48, 122, 55, 13, 57, 113, 50, 0, 97, 8, 2, 114,
-			99, 3, 50, 2, 116, 0, 97, 114, 99, 105, 8, 2, 115, 3, 50, 2, 116, 34, 89, 108, 0, 105, 101, 117, 119, 115, 8, 2, 21, 14,
-			128, 132, 134, 3, 50, 6, 37, 58, 89, 0, 4, 97, 8, 2, 17, 67, 21, 21, 14, 128, 132, 130, 3, 50, 6, 115, 0, 97, 8, 2,
-			17, 67, 21, 24, 0, 97, 110, 111, 8, 2, 21, 14, 128, 132, 132, 3, 50, 6, 115, 50, 122, 0, 105, 115, 1, 21, 21, 2, 32, 14,
-			128, 128, 131, 3, 50, 108, 89, 0, 105, 115, 101, 110, 1, 21, 21, 2, 32, 14, 128, 128, 133, 3, 50, 108, 89, 13, 50, 0, 4, 97,
-			8, 2, 100, 101, 114, 3, 50, 115, 0, 97, 8, 2, 116, 105, 111, 110, 0, 97, 8, 2, 118, 114, 0, 97, 116, 117, 117, 114, 8, 3,
-			50, 115, 47, 6, 109, 34, 0, 4, 97, 8, 2, 17, 67, 11, 3, 50, 116, 0, 97, 8, 2, 99, 104, 116, 0, 111, 111, 114, 100, 8,
-			2, 21, 14, 128, 132, 133, 3, 50, 122, 34, 72, 0, 106, 3, 67, 0, 4, 2, 107, 3, 68, 0, 103, 0, 7, 6, 111, 0, 110, 8,
-			2, 21, 14, 128, 132, 130, 3, 2, 113, 50, 0, 118, 101, 114, 8, 2, 21, 14, 128, 132, 132, 3, 4, 122, 84, 13, 34, 0, 101, 2,
-			29, 32, 3, 6, 40, 0, 105, 114, 2, 32, 3, 6, 85, 115, 34, 0, 112, 8, 2, 21, 21, 14, 128, 132, 130, 3, 6, 113, 48, 0,
-			4, 111, 2, 17, 67, 32, 3, 6, 122, 0, 111, 2, 29, 0, 112, 8, 2, 101, 114, 97, 3, 6, 122, 48, 0, 112, 101, 110, 8, 2,
-			21, 14, 128, 132, 132, 3, 6, 122, 48, 13, 50, 0, 112, 101, 110, 105, 110, 103, 115, 8, 2, 14, 128, 132, 136, 3, 6, 122, 48, 13,
-			50, 108, 68, 89, 0, 111, 110, 3, 6, 122, 50, 0, 1, 17, 67, 21, 21, 2, 32, 3, 8, 122, 0, 98, 115, 99, 2, 117, 3, 39,
-			48, 89, 49, 0, 4, 101, 3, 40, 0, 117, 1, 99, 2, 112, 117, 0, 117, 1, 100, 2, 98, 108, 117, 0, 117, 1, 114, 116, 2, 118,
-			97, 105, 108, 0, 117, 2, 99, 104, 101, 32, 0, 117, 2, 114, 97, 103, 101, 0, 117, 1, 116, 2, 114, 3, 40, 12, 0, 101, 105, 3,
-			40, 57, 0, 117, 118, 101, 2, 114, 116, 117, 3, 40, 84, 111, 0, 117, 99, 104, 2, 101, 110, 32, 3, 40, 91, 0, 4, 105, 1, 99,
-			2, 102, 102, 117, 3, 85, 116, 0, 105, 1, 108, 112, 2, 116, 0, 4, 2, 17, 67, 25, 3, 113, 0, 2, 120, 0, 112, 8, 2, 116,
-			105, 111, 110, 3, 113, 48, 0, 111, 2, 114, 3, 114, 0, 4, 3, 122, 0, 1, 114, 112, 2, 103, 114, 97, 109, 0, 2, 114, 0, 111,
-			0, 111, 105, 3, 122, 57, 0, 111, 115, 116, 8, 2, 21, 14, 128, 132, 132, 3, 122, 89, 47, 0, 4, 117, 3, 125, 0, 117, 119, 0,
-			7, 6, 112, 0, 1, 112, 3, 0, 3, 48, 0, 97, 114, 97, 99, 104, 2, 117, 116, 3, 48, 4, 115, 34, 115, 91, 0, 111, 108, 105,
-			116, 105, 101, 8, 2, 21, 3, 48, 122, 55, 6, 37, 47, 89, 37, 0, 111, 108, 105, 116, 105, 101, 107, 8, 3, 48, 122, 55, 37, 47,
-			6, 37, 49, 0, 4, 104, 2, 25, 3, 83, 0, 104, 8, 0, 114, 111, 103, 114, 97, 109, 109, 97, 1, 21, 2, 32, 14, 128, 128, 135,
-			3, 122, 100, 34, 116, 65, 65, 35, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 1, 21, 2, 101, 101, 114, 0, 117, 1, 21, 2, 101,
-			114, 101, 110, 32, 0, 117, 101, 1, 21, 2, 32, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 114, 3, 16, 34, 0, 4, 3, 34, 0,
-			1, 17, 65, 2, 17, 65, 0, 1, 17, 67, 2, 17, 65, 0, 101, 118, 97, 110, 99, 104, 3, 34, 13, 84, 117, 50, 91, 0, 101, 99,
-			104, 101, 114, 99, 104, 3, 34, 13, 91, 111, 34, 91, 0, 111, 117, 116, 101, 3, 34, 40, 47, 13, 0, 7, 6, 115, 0, 2, 115, 3,
-			0, 101, 108, 1, 10, 2, 32, 3, 8, 89, 13, 55, 0, 101, 108, 101, 110, 1, 10, 2, 32, 3, 8, 89, 13, 55, 13, 50, 0, 4,
-			1, 17, 65, 2, 17, 65, 3, 88, 0, 2, 98, 0, 2, 100, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 8, 101,
-			114, 118, 2, 101, 0, 99, 0, 99, 104, 2, 32, 0, 99, 104, 2, 101, 32, 0, 116, 97, 110, 100, 97, 97, 114, 100, 8, 2, 21, 14,
-			128, 132, 137, 3, 89, 47, 6, 116, 50, 72, 115, 34, 47, 0, 116, 114, 97, 97, 116, 1, 21, 2, 32, 14, 128, 128, 134, 3, 89, 47,
-			34, 115, 47, 0, 4, 99, 2, 111, 111, 112, 3, 89, 49, 0, 99, 2, 111, 112, 105, 0, 106, 101, 1, 21, 2, 32, 3, 89, 57, 13,
-			0, 99, 104, 3, 89, 101, 0, 105, 1, 17, 65, 2, 111, 3, 90, 0, 4, 99, 104, 8, 2, 110, 3, 91, 0, 104, 2, 25, 0, 104,
-			8, 0, 105, 1, 21, 2, 111, 0, 106, 0, 115, 105, 1, 21, 2, 111, 0, 7, 6, 116, 0, 1, 116, 3, 0, 105, 101, 1, 115, 2,
-			32, 3, 8, 47, 37, 0, 105, 101, 2, 32, 3, 8, 47, 89, 37, 0, 4, 105, 101, 1, 99, 2, 32, 3, 8, 89, 37, 0, 105, 101,
-			1, 107, 2, 32, 0, 105, 101, 1, 112, 2, 32, 0, 4, 3, 47, 0, 1, 115, 2, 105, 12, 12, 0, 2, 104, 97, 97, 114, 0, 2,
-			104, 97, 118, 0, 100, 0, 104, 0, 104, 8, 0, 101, 97, 109, 8, 3, 47, 6, 37, 12, 65, 0, 111, 101, 8, 2, 21, 14, 128, 132,
-			131, 3, 47, 6, 40, 0, 114, 97, 110, 115, 8, 2, 21, 14, 128, 132, 133, 3, 47, 34, 4, 116, 50, 89, 0, 114, 97, 105, 110, 8,
-			3, 47, 34, 119, 50, 0, 101, 97, 109, 2, 32, 3, 47, 37, 12, 65, 0, 106, 3, 47, 38, 0, 111, 117, 99, 104, 2, 101, 3, 47,
-			40, 91, 0, 105, 101, 1, 97, 114, 99, 2, 32, 3, 47, 89, 6, 37, 0, 115, 106, 3, 76, 0, 4, 105, 1, 21, 2, 97, 3, 91,
-			0, 105, 1, 21, 2, 101, 117, 115, 0, 105, 1, 21, 2, 101, 117, 122, 0, 105, 1, 21, 2, 111, 110, 0, 105, 1, 21, 2, 195, 171,
-			0, 4, 105, 101, 101, 2, 108, 32, 3, 91, 6, 119, 0, 105, 195, 171, 2, 108, 101, 32, 0, 7, 6, 117, 0, 4, 2, 115, 105, 101,
-			32, 3, 6, 109, 0, 117, 2, 114, 32, 0, 116, 101, 1, 21, 2, 32, 3, 6, 109, 47, 0, 105, 116, 8, 2, 21, 14, 128, 132, 131,
-			3, 6, 124, 47, 0, 4, 3, 109, 0, 117, 0, 4, 2, 17, 67, 25, 3, 110, 0, 2, 120, 0, 105, 3, 124, 0, 4, 119, 3, 127,
-			0, 119, 2, 32, 0, 7, 6, 118, 0, 1, 115, 3, 83, 0, 3, 84, 0, 97, 110, 8, 2, 21, 14, 128, 132, 131, 3, 84, 2, 116,
-			50, 0, 111, 111, 114, 116, 8, 2, 21, 14, 128, 132, 133, 3, 84, 6, 114, 34, 47, 0, 101, 114, 8, 2, 21, 14, 128, 132, 131, 3,
-			84, 13, 34, 0, 101, 114, 103, 101, 8, 2, 108, 101, 3, 84, 13, 34, 100, 6, 119, 0, 101, 114, 8, 2, 115, 105, 101, 32, 3, 84,
-			111, 34, 0, 101, 114, 100, 101, 114, 8, 3, 84, 111, 34, 72, 13, 34, 0, 97, 110, 122, 101, 108, 102, 8, 2, 21, 14, 128, 132, 135,
-			3, 84, 116, 50, 88, 4, 111, 55, 83, 0, 97, 110, 103, 8, 3, 84, 116, 68, 0, 7, 6, 119, 0, 4, 2, 17, 67, 25, 3, 58,
-			0, 2, 29, 0, 114, 8, 3, 84, 34, 0, 3, 85, 0, 101, 103, 8, 2, 21, 14, 128, 132, 131, 3, 85, 6, 111, 100, 0, 97, 110,
-			8, 2, 21, 14, 128, 132, 131, 3, 85, 6, 116, 50, 0, 97, 110, 8, 2, 18, 66, 21, 14, 128, 132, 131, 3, 85, 6, 116, 68, 0,
-			101, 115, 116, 8, 2, 21, 14, 128, 132, 132, 3, 85, 111, 89, 47, 0, 4, 97, 110, 8, 2, 100, 101, 108, 3, 85, 116, 50, 0, 97,
-			110, 110, 8, 2, 101, 101, 114, 0, 97, 110, 111, 114, 100, 101, 108, 105, 106, 107, 8, 3, 85, 116, 50, 23, 6, 113, 34, 72, 13, 55,
-			13, 49, 0, 97, 110, 116, 114, 111, 117, 119, 105, 103, 8, 3, 85, 116, 50, 47, 34, 6, 125, 13, 100, 0, 97, 110, 118, 111, 101, 103,
-			108, 105, 106, 107, 8, 3, 85, 116, 50, 84, 6, 40, 101, 55, 13, 49, 0, 97, 110, 115, 116, 97, 108, 116, 105, 103, 8, 3, 85, 116,
-			50, 89, 47, 6, 116, 55, 47, 13, 100, 0, 97, 110, 115, 109, 97, 107, 101, 108, 105, 106, 107, 8, 3, 85, 116, 50, 89, 65, 6, 115,
-			49, 13, 55, 13, 49, 0, 97, 110, 104, 111, 112, 105, 103, 8, 3, 85, 116, 50, 107, 6, 122, 48, 13, 100, 0, 97, 110, 8, 2, 107,
-			101, 108, 3, 85, 116, 68, 0, 4, 101, 103, 8, 2, 101, 32, 3, 85, 119, 100, 0, 101, 103, 8, 2, 101, 110, 0, 7, 6, 120, 0,
-			3, 49, 89, 0, 7, 6, 121, 0, 3, 37, 0, 8, 2, 17, 65, 3, 57, 0, 4, 2, 17, 67, 25, 3, 108, 0, 2, 120, 0, 7,
-			6, 122, 0, 4, 1, 115, 3, 0, 2, 122, 3, 0, 3, 88, 0, 111, 103, 101, 8, 2, 21, 14, 128, 132, 132, 3, 88, 4, 39, 81,
-			13, 0, 101, 108, 101, 2, 32, 14, 128, 128, 132, 3, 88, 119, 55, 13, 0, 117, 105, 100, 8, 2, 21, 14, 128, 132, 132, 3, 88, 124,
-			47, 0, 101, 108, 102, 1, 21, 2, 32, 14, 128, 128, 132, 3, 89, 6, 111, 55, 83, 0, 7, 6, 0, 195, 168, 114, 101, 2, 32, 3,
-			6, 111, 34, 13, 0, 195, 169, 2, 32, 3, 6, 119, 0, 195, 171, 110, 1, 101, 105, 114, 101, 2, 32, 14, 128, 128, 130, 3, 13, 50,
-			0, 44, 2, 15, 3, 49, 6, 113, 65, 115, 0, 45, 8, 32, 2, 32, 15, 3, 65, 6, 108, 50, 0, 36, 3, 72, 6, 113, 55, 116,
-			34, 0, 39, 115, 1, 21, 2, 32, 14, 128, 128, 130, 3, 89, 0, 4, 195, 169, 3, 119, 0, 195, 169, 195, 169, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts45 = FileInMemory_createWithData (21598, reinterpret_cast<const char *> (&espeakdata_dicts45_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/nl_dict", 
+			1, 10, 2, 101, 110, 100, 101, 32, 28, 33, 0, 1, 10, 2, 105, 103, 32, 28, 33, 0, 1, 10, 2, 105, 103, 101, 32, 28, 33, 0,
+			1, 10, 2, 105, 110, 103, 32, 28, 33, 0, 1, 10, 2, 105, 110, 103, 101, 110, 32, 28, 33, 0, 1, 10, 2, 115, 116, 32, 28, 33,
+			0, 1, 10, 2, 115, 116, 101, 32, 28, 33, 0, 1, 10, 2, 116, 32, 28, 33, 0, 4, 1, 10, 2, 32, 3, 13, 34, 0, 1, 21,
+			2, 97, 97, 114, 32, 0, 1, 100, 110, 111, 104, 2, 100, 32, 0, 1, 108, 111, 116, 2, 97, 98, 101, 108, 0, 1, 115, 105, 109, 2,
+			97, 98, 101, 108, 0, 2, 105, 106, 32, 0, 105, 101, 2, 32, 3, 13, 34, 6, 37, 0, 101, 115, 1, 21, 2, 32, 14, 128, 208, 132,
+			3, 13, 34, 6, 111, 89, 0, 101, 115, 115, 101, 110, 1, 21, 2, 32, 14, 128, 192, 135, 3, 13, 34, 6, 111, 89, 13, 50, 0, 101,
+			1, 10, 2, 32, 3, 13, 34, 13, 0, 119, 105, 106, 115, 1, 10, 2, 32, 14, 136, 128, 134, 3, 13, 34, 85, 123, 89, 0, 97, 1,
+			10, 2, 32, 3, 13, 34, 115, 0, 8, 2, 21, 14, 128, 132, 130, 3, 111, 34, 0, 103, 101, 114, 8, 3, 111, 34, 100, 13, 34, 0,
+			1, 10, 2, 17, 67, 21, 3, 112, 34, 0, 7, 6, 101, 115, 0, 4, 1, 21, 2, 32, 14, 128, 208, 130, 3, 6, 111, 89, 0, 2,
+			32, 28, 20, 12, 0, 115, 101, 110, 1, 21, 2, 32, 14, 128, 208, 133, 3, 6, 111, 89, 13, 50, 0, 105, 115, 99, 104, 1, 21, 3,
+			6, 119, 88, 37, 89, 0, 4, 1, 17, 67, 17, 65, 25, 2, 32, 14, 128, 129, 130, 3, 13, 89, 0, 1, 21, 2, 32, 28, 33, 0,
+			4, 1, 21, 2, 32, 28, 18, 14, 128, 128, 129, 3, 89, 0, 1, 98, 109, 2, 32, 14, 128, 128, 129, 0, 1, 100, 102, 2, 32, 14,
+			128, 128, 129, 0, 1, 100, 110, 2, 32, 14, 128, 128, 129, 0, 1, 100, 114, 2, 32, 14, 128, 128, 129, 0, 1, 106, 21, 2, 32, 14,
+			128, 128, 129, 0, 1, 116, 103, 2, 32, 14, 128, 128, 129, 0, 1, 116, 108, 2, 32, 14, 128, 128, 129, 0, 1, 116, 109, 2, 32, 14,
+			128, 128, 129, 0, 1, 116, 110, 2, 32, 14, 128, 128, 129, 0, 1, 116, 119, 2, 32, 14, 128, 128, 129, 0, 1, 122, 21, 2, 32, 14,
+			128, 128, 129, 0, 1, 29, 2, 32, 3, 111, 89, 0, 2, 105, 101, 32, 3, 119, 88, 0, 7, 6, 103, 101, 0, 110, 114, 101, 3, 90,
+			117, 34, 13, 0, 110, 101, 114, 2, 97, 97, 108, 3, 100, 4, 119, 50, 13, 34, 0, 4, 2, 98, 105, 101, 100, 3, 100, 13, 0, 2,
+			115, 112, 114, 101, 107, 0, 2, 118, 97, 108, 0, 8, 2, 21, 14, 128, 132, 130, 0, 108, 105, 106, 107, 8, 3, 100, 13, 55, 123, 49,
+			0, 109, 101, 101, 110, 116, 101, 8, 2, 21, 14, 128, 132, 136, 3, 100, 13, 65, 6, 119, 50, 47, 13, 0, 98, 114, 117, 105, 107, 101,
+			114, 115, 8, 2, 21, 14, 128, 132, 138, 3, 100, 13, 71, 34, 6, 124, 49, 13, 34, 89, 0, 4, 8, 2, 107, 17, 67, 3, 100, 111,
+			0, 8, 2, 108, 17, 67, 0, 8, 2, 114, 17, 67, 0, 4, 2, 118, 101, 110, 100, 32, 3, 100, 119, 0, 2, 118, 101, 114, 0, 2,
+			118, 105, 110, 103, 0, 8, 2, 108, 101, 110, 18, 67, 0, 8, 2, 116, 101, 110, 18, 67, 0, 8, 2, 118, 101, 110, 0, 101, 8, 0,
+			117, 8, 3, 100, 121, 0, 105, 8, 3, 100, 123, 0, 7, 6, 111, 110, 0, 8, 2, 21, 14, 128, 132, 130, 3, 2, 113, 50, 0, 4,
+			103, 8, 2, 97, 97, 114, 110, 3, 4, 113, 50, 100, 6, 0, 103, 8, 2, 97, 110, 115, 0, 103, 8, 2, 114, 105, 106, 112, 98, 97,
+			97, 114, 0, 103, 8, 2, 114, 111, 110, 100, 0, 103, 8, 2, 117, 110, 115, 116, 105, 103, 0, 103, 8, 2, 117, 117, 114, 0, 103, 101,
+			8, 2, 21, 14, 128, 132, 132, 3, 4, 113, 50, 100, 13, 0, 100, 101, 114, 8, 2, 21, 14, 128, 132, 133, 3, 6, 113, 50, 72, 13,
+			34, 0, 8, 2, 116, 101, 21, 14, 128, 132, 130, 3, 113, 50, 0, 97, 97, 110, 8, 2, 21, 14, 128, 132, 133, 3, 113, 50, 6, 115,
+			50, 0, 116, 8, 2, 21, 14, 128, 132, 131, 3, 113, 50, 47, 0, 100, 101, 114, 8, 3, 113, 50, 72, 13, 34, 0, 4, 103, 101, 8,
+			2, 100, 105, 101, 114, 116, 3, 113, 50, 100, 13, 0, 103, 101, 8, 2, 108, 111, 111, 102, 0, 103, 101, 8, 2, 108, 117, 107, 0, 103,
+			101, 8, 2, 109, 97, 107, 0, 103, 101, 8, 2, 110, 97, 100, 101, 0, 103, 101, 8, 2, 114, 105, 101, 102, 0, 103, 101, 8, 2, 118,
+			97, 108, 0, 7, 6, 114, 101, 0, 4, 8, 2, 99, 101, 110, 116, 3, 34, 13, 0, 8, 2, 99, 101, 112, 116, 0, 8, 2, 99, 101,
+			115, 0, 8, 2, 99, 108, 97, 109, 0, 8, 2, 103, 101, 101, 114, 0, 8, 2, 103, 101, 114, 101, 110, 0, 8, 2, 115, 101, 114, 118,
+			101, 32, 0, 109, 101, 2, 100, 105, 101, 3, 34, 13, 65, 6, 119, 0, 100, 97, 99, 116, 105, 101, 8, 2, 14, 128, 132, 136, 3, 34,
+			13, 72, 6, 116, 49, 89, 37, 0, 118, 97, 110, 99, 104, 3, 34, 13, 84, 117, 50, 91, 0, 99, 104, 101, 114, 99, 104, 3, 34, 13,
+			91, 111, 34, 91, 0, 103, 101, 114, 105, 110, 103, 8, 3, 34, 13, 100, 6, 108, 12, 34, 108, 68, 0, 103, 105, 115, 116, 101, 114, 8,
+			3, 34, 13, 100, 6, 108, 89, 47, 13, 34, 0, 8, 2, 99, 111, 114, 100, 3, 34, 36, 6, 0, 8, 2, 99, 101, 112, 116, 105, 101,
+			102, 3, 34, 119, 0, 112, 114, 101, 2, 115, 97, 105, 108, 108, 3, 34, 119, 48, 34, 119, 0, 103, 101, 108, 8, 3, 34, 119, 100, 13,
+			55, 0, 7, 6, 116, 101, 0, 103, 101, 110, 8, 2, 14, 128, 132, 133, 3, 47, 6, 119, 100, 13, 50, 0, 4, 8, 2, 103, 101, 108,
+			105, 106, 107, 14, 128, 132, 130, 3, 47, 13, 0, 8, 2, 103, 101, 109, 111, 101, 116, 14, 128, 132, 130, 0, 8, 2, 103, 111, 101, 100,
+			0, 8, 2, 104, 117, 105, 0, 8, 2, 107, 101, 101, 114, 0, 8, 2, 107, 111, 114, 116, 0, 8, 2, 108, 101, 117, 114, 0, 8, 2,
+			108, 111, 111, 114, 0, 8, 2, 109, 101, 101, 114, 0, 8, 2, 109, 105, 100, 100, 0, 8, 2, 110, 97, 0, 8, 2, 110, 101, 101, 114,
+			0, 8, 2, 114, 101, 99, 104, 116, 0, 8, 2, 115, 97, 109, 0, 8, 2, 118, 101, 101, 108, 0, 8, 2, 118, 101, 114, 103, 101, 101,
+			102, 14, 128, 132, 130, 0, 8, 2, 118, 111, 111, 114, 115, 99, 104, 105, 106, 110, 0, 8, 2, 118, 111, 114, 0, 8, 2, 118, 114, 101,
+			100, 0, 8, 2, 119, 101, 114, 107, 0, 114, 117, 103, 8, 2, 14, 128, 132, 133, 3, 47, 13, 34, 6, 110, 101, 0, 119, 101, 101, 103,
+			8, 2, 14, 128, 132, 134, 3, 47, 13, 85, 6, 119, 101, 0, 103, 101, 8, 2, 108, 105, 106, 107, 3, 47, 13, 100, 13, 0, 7, 6,
+			195, 170, 0, 3, 111, 0, 7, 6, 97, 0, 99, 104, 1, 109, 2, 105, 110, 3, 2, 115, 91, 0, 102, 102, 105, 99, 104, 8, 3, 2,
+			116, 83, 37, 91, 0, 105, 114, 101, 2, 32, 3, 6, 111, 12, 34, 13, 0, 105, 114, 2, 32, 3, 6, 111, 34, 0, 4, 1, 21, 2,
+			100, 101, 32, 3, 6, 115, 0, 1, 21, 2, 116, 97, 32, 0, 2, 116, 111, 114, 32, 0, 97, 2, 17, 67, 32, 0, 97, 2, 114, 100,
+			32, 0, 114, 105, 115, 2, 32, 3, 6, 115, 34, 108, 89, 0, 114, 105, 115, 115, 101, 110, 2, 32, 3, 6, 115, 34, 108, 89, 13, 50,
+			0, 97, 110, 8, 2, 21, 14, 128, 132, 131, 3, 6, 115, 50, 0, 98, 101, 108, 1, 21, 2, 32, 3, 6, 115, 71, 13, 55, 0, 98,
+			101, 108, 101, 1, 21, 2, 32, 3, 6, 115, 71, 13, 55, 13, 0, 103, 101, 2, 32, 3, 6, 115, 90, 13, 0, 99, 116, 105, 101, 8,
+			2, 21, 14, 128, 132, 133, 3, 6, 116, 49, 89, 37, 0, 4, 110, 116, 1, 21, 2, 32, 3, 6, 116, 50, 47, 0, 110, 116, 1, 21,
+			2, 101, 32, 0, 110, 116, 1, 21, 2, 101, 110, 32, 0, 110, 116, 1, 21, 2, 101, 114, 32, 0, 105, 108, 108, 101, 2, 32, 3, 6,
+			116, 57, 13, 0, 105, 108, 108, 101, 115, 2, 32, 3, 6, 116, 57, 13, 89, 0, 103, 110, 101, 1, 21, 2, 32, 3, 6, 116, 67, 13,
+			0, 102, 8, 2, 17, 67, 21, 14, 128, 132, 130, 3, 6, 116, 83, 0, 111, 2, 32, 3, 6, 125, 0, 1, 17, 67, 21, 21, 2, 32,
+			3, 8, 115, 0, 103, 101, 115, 2, 32, 14, 128, 128, 129, 3, 89, 0, 105, 8, 2, 109, 97, 98, 101, 108, 3, 111, 0, 4, 3, 115,
+			0, 1, 116, 2, 98, 108, 101, 97, 117, 0, 8, 2, 100, 114, 101, 115, 115, 12, 12, 12, 0, 97, 0, 97, 1, 122, 2, 109, 32, 0,
+			101, 0, 97, 114, 1, 10, 2, 32, 14, 128, 128, 131, 3, 115, 34, 0, 114, 101, 115, 1, 21, 2, 32, 3, 115, 34, 6, 111, 89, 0,
+			97, 114, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 115, 34, 47, 0, 4, 97, 105, 3, 115, 57, 0, 121, 0, 100, 114, 101, 115, 8,
+			2, 21, 14, 128, 132, 133, 3, 115, 72, 34, 6, 111, 89, 0, 102, 8, 2, 114, 105, 107, 97, 3, 115, 83, 0, 103, 101, 2, 32, 28,
+			17, 3, 115, 100, 13, 0, 4, 2, 17, 67, 25, 3, 116, 0, 2, 120, 0, 108, 108, 101, 115, 8, 2, 21, 14, 128, 132, 133, 3, 116,
+			55, 13, 88, 0, 105, 3, 116, 57, 0, 4, 99, 104, 116, 1, 109, 25, 2, 105, 103, 12, 3, 116, 101, 47, 0, 99, 104, 116, 1, 114,
+			107, 2, 105, 103, 12, 0, 99, 104, 116, 105, 103, 1, 21, 2, 32, 14, 128, 128, 134, 3, 116, 101, 47, 13, 100, 0, 4, 1, 98, 2,
+			98, 121, 3, 119, 0, 105, 1, 100, 2, 115, 121, 0, 99, 101, 1, 21, 2, 32, 3, 119, 89, 0, 105, 108, 1, 109, 3, 119, 108, 55,
+			0, 4, 117, 3, 125, 0, 117, 119, 0, 7, 6, 98, 0, 1, 98, 3, 0, 97, 97, 114, 1, 10, 2, 32, 14, 128, 128, 132, 3, 8,
+			71, 115, 34, 0, 97, 114, 101, 1, 10, 2, 32, 14, 128, 128, 132, 3, 8, 71, 115, 34, 13, 0, 8, 111, 2, 115, 116, 97, 107, 3,
+			48, 0, 115, 2, 32, 24, 3, 48, 89, 0, 3, 71, 0, 105, 106, 2, 122, 111, 110, 100, 3, 71, 2, 37, 0, 4, 111, 101, 107, 8,
+			2, 21, 14, 128, 132, 132, 3, 71, 6, 40, 49, 0, 111, 101, 107, 8, 2, 106, 101, 0, 105, 110, 110, 101, 110, 8, 2, 14, 128, 132,
+			134, 3, 71, 6, 108, 50, 13, 50, 0, 117, 117, 114, 116, 8, 2, 21, 21, 14, 128, 132, 133, 3, 71, 6, 109, 34, 47, 0, 111, 118,
+			101, 110, 8, 2, 14, 128, 132, 133, 3, 71, 6, 122, 84, 13, 50, 0, 105, 106, 8, 2, 17, 67, 21, 14, 128, 132, 131, 3, 71, 6,
+			123, 0, 117, 105, 116, 101, 110, 8, 2, 14, 128, 132, 134, 3, 71, 6, 124, 47, 13, 50, 0, 101, 108, 97, 115, 116, 105, 110, 103, 8,
+			2, 21, 14, 128, 132, 137, 3, 71, 13, 55, 6, 116, 89, 47, 108, 68, 0, 101, 108, 101, 105, 100, 115, 8, 2, 21, 14, 128, 132, 135,
+			3, 71, 13, 55, 6, 123, 47, 89, 0, 101, 100, 114, 105, 106, 102, 115, 8, 2, 21, 14, 128, 132, 136, 3, 71, 13, 72, 34, 6, 123,
+			83, 89, 0, 114, 97, 110, 100, 8, 3, 71, 34, 6, 116, 50, 72, 0, 114, 97, 105, 108, 108, 101, 8, 2, 21, 14, 128, 132, 135, 3,
+			71, 34, 6, 116, 57, 13, 0, 97, 97, 110, 3, 71, 115, 50, 0, 105, 106, 101, 101, 110, 8, 3, 71, 123, 6, 119, 50, 0, 7, 6,
+			99, 0, 4, 3, 49, 0, 107, 0, 111, 2, 110, 99, 101, 114, 116, 3, 49, 2, 113, 0, 111, 110, 99, 101, 110, 116, 114, 97, 116, 105,
+			101, 8, 2, 21, 14, 128, 132, 140, 3, 49, 113, 50, 89, 111, 50, 47, 34, 6, 115, 47, 89, 37, 0, 111, 110, 103, 114, 101, 115, 8,
+			3, 49, 113, 50, 100, 34, 6, 111, 89, 0, 111, 109, 112, 117, 116, 101, 114, 8, 2, 21, 14, 128, 132, 136, 3, 49, 113, 65, 48, 57,
+			6, 40, 47, 13, 34, 0, 111, 97, 99, 104, 3, 49, 122, 76, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2, 121, 0, 101, 115, 2,
+			32, 3, 89, 6, 111, 89, 0, 101, 2, 115, 32, 28, 33, 3, 89, 13, 0, 4, 105, 1, 21, 2, 101, 101, 108, 3, 91, 0, 105, 1,
+			21, 2, 101, 117, 115, 0, 105, 1, 21, 2, 101, 117, 122, 0, 105, 1, 21, 2, 195, 171, 0, 105, 2, 97, 0, 105, 2, 111, 0, 7,
+			6, 100, 0, 1, 100, 3, 0, 4, 2, 115, 116, 3, 47, 0, 116, 0, 106, 3, 47, 57, 0, 115, 2, 32, 24, 3, 47, 89, 0, 3,
+			72, 0, 111, 101, 108, 8, 2, 21, 14, 128, 132, 132, 3, 72, 6, 40, 55, 0, 4, 101, 8, 2, 103, 101, 101, 110, 3, 72, 13, 0,
+			101, 8, 2, 122, 101, 108, 102, 0, 106, 8, 3, 75, 0, 7, 6, 101, 0, 117, 109, 1, 115, 117, 109, 21, 2, 32, 3, 4, 119, 110,
+			65, 0, 4, 1, 21, 2, 114, 101, 110, 100, 101, 32, 3, 6, 108, 0, 1, 21, 2, 114, 101, 110, 100, 101, 110, 32, 0, 101, 1, 21,
+			2, 114, 32, 0, 101, 1, 21, 2, 114, 100, 32, 0, 101, 1, 21, 2, 114, 100, 101, 32, 0, 101, 1, 21, 2, 114, 100, 101, 110, 32,
+			0, 101, 1, 21, 2, 114, 116, 32, 0, 120, 101, 2, 32, 3, 6, 111, 49, 89, 13, 0, 108, 1, 21, 2, 32, 3, 6, 111, 55, 0,
+			4, 101, 1, 21, 2, 29, 32, 3, 6, 119, 0, 101, 1, 21, 2, 32, 0, 108, 101, 1, 10, 2, 32, 3, 6, 119, 55, 13, 0, 108,
+			101, 110, 1, 21, 2, 32, 3, 6, 119, 55, 13, 50, 0, 117, 109, 2, 32, 28, 17, 3, 6, 119, 110, 65, 0, 97, 2, 32, 3, 6,
+			119, 115, 0, 117, 114, 1, 21, 2, 32, 3, 6, 121, 34, 0, 117, 122, 101, 1, 105, 2, 32, 3, 6, 121, 88, 13, 0, 117, 122, 101,
+			114, 1, 105, 2, 32, 3, 6, 121, 88, 13, 34, 0, 117, 122, 101, 114, 101, 1, 105, 2, 32, 3, 6, 121, 88, 13, 34, 13, 0, 117,
+			115, 1, 105, 2, 32, 3, 6, 121, 89, 0, 117, 115, 116, 1, 105, 2, 32, 3, 6, 121, 89, 47, 0, 117, 115, 116, 101, 1, 105, 2,
+			32, 3, 6, 121, 89, 47, 13, 0, 97, 117, 3, 6, 122, 0, 105, 116, 1, 116, 105, 2, 32, 3, 6, 123, 47, 0, 4, 108, 1, 10,
+			2, 32, 28, 33, 3, 8, 13, 55, 0, 108, 1, 10, 2, 100, 101, 32, 28, 33, 0, 108, 1, 10, 2, 100, 101, 110, 32, 28, 33, 0,
+			108, 1, 10, 2, 101, 32, 28, 33, 0, 108, 1, 10, 2, 101, 110, 32, 28, 33, 0, 108, 1, 10, 2, 101, 110, 100, 32, 28, 33, 0,
+			108, 1, 10, 2, 105, 103, 32, 28, 33, 0, 108, 1, 10, 2, 105, 103, 101, 32, 28, 33, 0, 108, 1, 10, 2, 105, 110, 103, 32, 28,
+			33, 0, 108, 1, 10, 2, 105, 110, 103, 101, 110, 32, 28, 33, 0, 108, 1, 10, 2, 116, 32, 28, 33, 0, 97, 1, 110, 105, 108, 2,
+			32, 3, 8, 37, 57, 115, 0, 4, 1, 10, 2, 32, 3, 13, 0, 1, 10, 2, 109, 101, 110, 116, 0, 1, 10, 2, 110, 116, 105, 103,
+			0, 1, 17, 67, 10, 2, 32, 14, 128, 208, 129, 0, 1, 17, 67, 17, 65, 25, 2, 32, 14, 128, 129, 129, 0, 1, 99, 2, 32, 12,
+			12, 0, 1, 103, 105, 2, 32, 12, 14, 136, 208, 129, 0, 1, 106, 17, 65, 25, 2, 32, 14, 128, 128, 129, 0, 1, 107, 106, 105, 108,
+			2, 32, 14, 136, 128, 129, 0, 1, 108, 101, 2, 32, 12, 14, 128, 208, 129, 0, 1, 114, 101, 2, 32, 12, 14, 128, 208, 129, 0, 1,
+			115, 2, 99, 111, 110, 100, 0, 1, 115, 2, 99, 117, 117, 114, 0, 117, 105, 108, 108, 101, 3, 13, 6, 109, 0, 195, 175, 2, 12, 3,
+			13, 10, 108, 0, 116, 116, 101, 110, 1, 21, 2, 32, 14, 128, 128, 131, 3, 13, 50, 0, 108, 1, 112, 112, 97, 2, 32, 3, 13, 55,
+			0, 108, 105, 106, 107, 115, 1, 10, 3, 13, 55, 13, 49, 89, 0, 108, 100, 115, 1, 21, 2, 32, 3, 13, 55, 47, 89, 0, 108, 100,
+			1, 10, 2, 32, 3, 13, 55, 72, 0, 108, 1, 21, 2, 101, 110, 32, 28, 34, 3, 13, 64, 0, 109, 1, 10, 2, 32, 3, 13, 65,
+			0, 109, 101, 110, 1, 10, 2, 32, 28, 17, 3, 13, 65, 13, 50, 0, 1, 21, 2, 115, 32, 28, 34, 12, 14, 128, 128, 129, 3, 89,
+			0, 4, 2, 114, 3, 108, 12, 0, 101, 1, 104, 2, 114, 32, 0, 101, 2, 114, 0, 4, 1, 99, 2, 110, 116, 114, 117, 109, 3, 111,
+			0, 1, 100, 105, 2, 110, 116, 0, 1, 115, 101, 114, 112, 2, 110, 116, 0, 2, 17, 67, 25, 0, 2, 114, 116, 115, 15, 0, 2, 120,
+			0, 120, 112, 111, 115, 105, 116, 105, 101, 8, 3, 111, 49, 89, 48, 122, 88, 6, 37, 47, 89, 37, 0, 1, 10, 2, 110, 17, 66, 21,
+			3, 112, 0, 4, 1, 29, 3, 119, 0, 1, 99, 111, 114, 112, 2, 100, 117, 0, 8, 112, 2, 110, 105, 98, 101, 108, 0, 101, 0, 109,
+			1, 110, 114, 97, 97, 119, 3, 119, 65, 0, 100, 101, 110, 2, 32, 3, 119, 72, 13, 50, 0, 3, 120, 0, 117, 3, 121, 0, 105, 2,
+			12, 3, 123, 0, 101, 117, 119, 3, 126, 0, 7, 6, 102, 0, 1, 102, 3, 0, 3, 83, 0, 97, 109, 105, 108, 105, 101, 8, 2, 21,
+			14, 128, 132, 135, 3, 83, 115, 65, 6, 37, 55, 37, 0, 4, 2, 98, 3, 84, 0, 2, 100, 0, 7, 6, 103, 0, 110, 1, 105, 115,
+			2, 97, 3, 67, 0, 111, 111, 103, 8, 2, 101, 108, 3, 81, 40, 12, 81, 0, 4, 1, 101, 101, 108, 108, 111, 99, 3, 90, 0, 1,
+			114, 101, 110, 101, 2, 105, 101, 0, 2, 101, 101, 32, 0, 2, 195, 169, 0, 8, 111, 108, 2, 101, 101, 114, 0, 8, 111, 108, 2, 101,
+			114, 101, 110, 0, 105, 1, 21, 2, 101, 117, 115, 0, 105, 1, 21, 2, 101, 117, 122, 0, 4, 3, 100, 0, 103, 0, 97, 115, 116, 8,
+			2, 21, 3, 100, 6, 116, 89, 47, 0, 97, 115, 116, 101, 110, 8, 2, 21, 14, 128, 132, 134, 3, 100, 6, 116, 89, 47, 13, 50, 0,
+			105, 1, 105, 108, 101, 114, 2, 101, 117, 3, 100, 37, 57, 0, 1, 115, 3, 101, 0, 7, 6, 104, 0, 1, 17, 67, 2, 25, 3, 0,
+			3, 107, 0, 101, 114, 105, 110, 110, 8, 3, 107, 2, 111, 34, 108, 50, 0, 117, 108, 112, 8, 2, 21, 21, 14, 128, 132, 132, 3, 107,
+			6, 110, 55, 48, 0, 101, 114, 102, 115, 116, 8, 2, 21, 14, 128, 132, 134, 3, 107, 6, 111, 34, 83, 89, 47, 0, 101, 114, 115, 101,
+			110, 8, 3, 107, 6, 111, 34, 89, 13, 50, 0, 111, 110, 100, 101, 110, 8, 2, 21, 14, 128, 132, 134, 3, 107, 6, 113, 50, 72, 13,
+			50, 0, 97, 110, 100, 1, 17, 67, 2, 32, 14, 128, 128, 132, 3, 107, 6, 116, 50, 47, 0, 111, 111, 103, 116, 101, 8, 2, 21, 14,
+			128, 132, 134, 3, 107, 6, 122, 101, 47, 13, 0, 101, 114, 8, 2, 101, 110, 3, 107, 108, 12, 34, 0, 4, 101, 114, 8, 2, 21, 14,
+			128, 132, 131, 3, 107, 111, 34, 0, 101, 114, 8, 2, 100, 101, 114, 0, 101, 114, 8, 2, 100, 115, 0, 97, 110, 100, 105, 99, 97, 112,
+			8, 3, 107, 111, 50, 72, 37, 49, 111, 48, 0, 101, 105, 100, 1, 10, 2, 32, 14, 128, 128, 132, 3, 107, 123, 47, 0, 7, 6, 105,
+			0, 4, 1, 109, 97, 102, 2, 108, 105, 101, 3, 6, 37, 0, 101, 1, 100, 2, 32, 0, 101, 1, 103, 2, 32, 0, 101, 1, 109, 2,
+			32, 0, 101, 1, 112, 2, 32, 0, 101, 2, 17, 67, 101, 32, 0, 101, 2, 17, 67, 101, 110, 32, 0, 101, 2, 17, 67, 101, 114, 32,
+			0, 101, 2, 17, 67, 101, 114, 101, 32, 0, 101, 2, 17, 67, 106, 101, 29, 32, 0, 101, 2, 17, 67, 115, 116, 101, 32, 0, 101, 2,
+			17, 67, 116, 106, 101, 29, 32, 0, 101, 2, 29, 0, 101, 2, 114, 100, 32, 0, 101, 2, 114, 101, 110, 32, 0, 195, 171, 110, 2, 32,
+			3, 6, 37, 13, 50, 0, 110, 101, 2, 32, 3, 6, 37, 50, 13, 0, 110, 101, 115, 2, 32, 3, 6, 37, 50, 13, 89, 0, 98, 101,
+			108, 1, 21, 2, 32, 3, 6, 37, 71, 13, 55, 0, 98, 101, 108, 101, 1, 21, 2, 32, 3, 6, 37, 71, 13, 55, 13, 0, 99, 101,
+			1, 114, 2, 32, 3, 6, 37, 89, 13, 0, 99, 101, 115, 1, 114, 2, 32, 3, 6, 37, 89, 13, 89, 0, 4, 110, 8, 2, 17, 67,
+			21, 14, 128, 132, 130, 3, 6, 108, 50, 0, 110, 8, 2, 97, 21, 14, 128, 132, 130, 0, 110, 110, 8, 2, 101, 114, 0, 115, 116, 1,
+			21, 2, 32, 3, 6, 108, 89, 47, 0, 115, 116, 101, 110, 1, 21, 2, 32, 3, 6, 108, 89, 47, 13, 50, 0, 115, 109, 101, 1, 21,
+			2, 32, 3, 6, 108, 89, 65, 13, 0, 4, 106, 1, 21, 2, 110, 32, 3, 6, 123, 0, 106, 2, 32, 0, 106, 2, 101, 32, 0, 106,
+			2, 101, 110, 0, 106, 2, 116, 106, 101, 29, 0, 103, 1, 21, 2, 32, 14, 128, 208, 130, 3, 8, 13, 100, 0, 103, 101, 114, 1, 21,
+			2, 32, 3, 8, 13, 100, 13, 34, 0, 103, 101, 114, 101, 1, 21, 2, 32, 3, 8, 13, 100, 13, 34, 13, 0, 103, 101, 110, 1, 21,
+			2, 32, 3, 8, 13, 100, 13, 50, 0, 103, 115, 116, 1, 21, 2, 32, 3, 8, 13, 100, 89, 47, 0, 103, 115, 116, 101, 1, 21, 2,
+			32, 3, 8, 13, 100, 89, 47, 13, 0, 4, 101, 1, 115, 110, 17, 65, 17, 67, 2, 32, 3, 8, 37, 0, 101, 1, 115, 115, 2, 32,
+			0, 101, 1, 115, 115, 17, 65, 17, 67, 2, 32, 0, 195, 171, 1, 115, 2, 32, 3, 8, 37, 13, 0, 99, 117, 115, 1, 10, 2, 32,
+			3, 8, 37, 49, 110, 89, 0, 4, 99, 97, 1, 10, 2, 32, 3, 8, 37, 49, 115, 0, 107, 97, 1, 10, 2, 32, 0, 4, 99, 111,
+			1, 10, 2, 32, 3, 8, 37, 49, 122, 0, 107, 111, 1, 10, 2, 32, 0, 115, 99, 104, 1, 21, 2, 32, 3, 8, 37, 89, 0, 115,
+			99, 104, 101, 1, 21, 2, 32, 3, 8, 37, 89, 13, 0, 99, 105, 1, 10, 2, 32, 3, 8, 37, 89, 37, 0, 117, 109, 1, 114, 17,
+			65, 2, 32, 3, 8, 37, 110, 65, 0, 97, 1, 114, 17, 65, 2, 32, 3, 8, 37, 115, 0, 103, 101, 1, 21, 2, 32, 14, 136, 128,
+			129, 3, 13, 0, 103, 101, 8, 2, 32, 3, 13, 100, 13, 0, 4, 3, 37, 0, 2, 99, 104, 101, 32, 0, 101, 0, 105, 0, 111, 2,
+			100, 101, 32, 3, 37, 6, 122, 0, 111, 100, 101, 115, 2, 32, 3, 37, 6, 122, 72, 13, 89, 0, 101, 117, 122, 101, 2, 32, 3, 37,
+			57, 6, 121, 88, 13, 0, 101, 117, 122, 101, 114, 2, 32, 3, 37, 57, 6, 121, 88, 13, 34, 0, 101, 117, 122, 101, 114, 101, 2, 32,
+			3, 37, 57, 6, 121, 88, 13, 34, 13, 0, 101, 117, 115, 2, 32, 3, 37, 57, 6, 121, 89, 0, 101, 117, 115, 116, 2, 32, 3, 37,
+			57, 6, 121, 89, 47, 0, 101, 117, 115, 116, 101, 2, 32, 3, 37, 57, 6, 121, 89, 47, 13, 0, 101, 117, 119, 3, 37, 58, 0, 111,
+			2, 110, 97, 103, 101, 3, 37, 113, 0, 101, 101, 3, 37, 119, 0, 4, 2, 17, 67, 25, 3, 108, 0, 2, 120, 0, 4, 110, 8, 2,
+			100, 111, 3, 108, 50, 0, 110, 8, 2, 102, 111, 114, 109, 97, 0, 110, 8, 2, 115, 99, 114, 105, 112, 0, 110, 110, 8, 2, 105, 103,
+			0, 110, 116, 101, 114, 8, 3, 108, 50, 47, 13, 34, 0, 110, 102, 111, 114, 109, 97, 116, 105, 101, 8, 2, 21, 14, 128, 132, 138, 3,
+			108, 50, 83, 113, 34, 65, 6, 115, 47, 89, 37, 0, 110, 103, 8, 2, 101, 17, 67, 32, 3, 108, 68, 0, 115, 2, 32, 3, 108, 89,
+			0, 106, 2, 12, 3, 123, 0, 7, 6, 106, 0, 3, 57, 0, 97, 97, 114, 8, 2, 21, 14, 128, 132, 132, 3, 57, 6, 115, 34, 0,
+			97, 97, 114, 2, 108, 105, 106, 107, 3, 57, 115, 34, 0, 111, 117, 2, 114, 110, 97, 3, 90, 40, 0, 7, 6, 107, 0, 1, 107, 3,
+			0, 3, 49, 0, 105, 110, 100, 101, 114, 8, 2, 21, 14, 128, 132, 134, 3, 49, 6, 108, 50, 72, 13, 34, 0, 101, 117, 122, 101, 8,
+			2, 21, 14, 128, 132, 133, 3, 49, 6, 121, 88, 13, 0, 111, 110, 105, 110, 103, 8, 3, 49, 6, 122, 50, 108, 68, 0, 114, 101, 100,
+			105, 101, 116, 8, 2, 21, 14, 128, 132, 135, 3, 49, 34, 13, 72, 6, 37, 47, 0, 111, 107, 107, 101, 114, 101, 108, 3, 49, 113, 49,
+			13, 34, 6, 111, 55, 0, 97, 108, 101, 8, 2, 110, 100, 101, 3, 49, 115, 55, 6, 111, 0, 97, 110, 116, 111, 111, 114, 8, 2, 21,
+			14, 128, 132, 135, 3, 49, 116, 50, 47, 6, 122, 34, 0, 111, 110, 105, 110, 103, 105, 110, 8, 3, 49, 122, 50, 108, 100, 6, 108, 50,
+			0, 2, 100, 3, 81, 0, 7, 6, 108, 0, 4, 1, 108, 3, 0, 108, 1, 105, 97, 116, 101, 100, 3, 0, 3, 55, 0, 105, 101, 102,
+			100, 101, 115, 8, 2, 21, 14, 128, 132, 135, 3, 55, 6, 37, 83, 72, 13, 89, 0, 101, 110, 116, 101, 8, 2, 21, 14, 128, 132, 133,
+			3, 55, 6, 111, 50, 47, 13, 0, 4, 97, 110, 100, 8, 2, 21, 14, 128, 132, 132, 3, 55, 6, 116, 50, 72, 0, 97, 110, 100, 8,
+			2, 101, 0, 105, 106, 107, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 13, 49, 0, 105, 106, 107, 101, 114, 1, 10, 2, 32, 14, 128,
+			128, 134, 3, 55, 13, 49, 13, 34, 0, 105, 106, 107, 101, 114, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 55, 13, 49, 13, 34, 13,
+			0, 105, 106, 107, 101, 110, 1, 10, 2, 32, 14, 128, 128, 134, 3, 55, 13, 49, 13, 50, 0, 105, 106, 107, 115, 116, 1, 10, 2, 32,
+			14, 128, 128, 134, 3, 55, 13, 49, 89, 47, 0, 105, 106, 107, 115, 116, 101, 1, 10, 2, 32, 14, 128, 128, 135, 3, 55, 13, 49, 89,
+			47, 13, 0, 105, 106, 107, 104, 101, 100, 101, 110, 1, 10, 2, 32, 14, 128, 128, 137, 3, 55, 13, 49, 107, 119, 72, 13, 50, 0, 105,
+			106, 107, 104, 101, 105, 100, 1, 10, 2, 32, 14, 128, 128, 136, 3, 55, 13, 49, 107, 123, 47, 0, 97, 110, 103, 101, 8, 2, 21, 14,
+			128, 132, 133, 3, 55, 35, 68, 13, 0, 97, 97, 110, 1, 10, 2, 32, 14, 128, 128, 132, 3, 55, 115, 50, 0, 111, 122, 101, 1, 21,
+			2, 32, 14, 128, 128, 132, 3, 55, 122, 88, 13, 0, 111, 122, 101, 110, 1, 21, 2, 32, 14, 128, 128, 133, 3, 55, 122, 88, 13, 50,
+			0, 111, 111, 115, 1, 21, 2, 32, 14, 128, 128, 132, 3, 55, 122, 89, 0, 111, 111, 103, 1, 21, 2, 32, 3, 55, 122, 101, 0, 7,
+			6, 109, 0, 1, 109, 3, 0, 3, 65, 0, 105, 8, 2, 115, 21, 3, 65, 2, 108, 0, 105, 115, 8, 2, 103, 117, 110, 3, 65, 2,
+			108, 89, 0, 4, 105, 115, 8, 2, 99, 111, 109, 109, 14, 128, 132, 131, 3, 65, 6, 108, 89, 0, 105, 115, 8, 2, 100, 97, 14, 128,
+			132, 131, 0, 105, 115, 8, 2, 103, 21, 14, 128, 132, 131, 0, 105, 115, 8, 2, 103, 101, 21, 14, 128, 132, 131, 0, 105, 115, 8, 2,
+			105, 110, 21, 14, 128, 132, 131, 0, 105, 115, 8, 2, 107, 108, 101, 117, 14, 128, 132, 131, 0, 105, 115, 8, 2, 108, 105, 101, 112, 14,
+			128, 132, 131, 0, 105, 115, 8, 2, 108, 111, 14, 128, 132, 131, 0, 105, 115, 8, 2, 116, 17, 65, 0, 105, 115, 118, 101, 114, 8, 2,
+			21, 3, 65, 6, 108, 89, 83, 13, 34, 0, 101, 101, 8, 2, 21, 14, 128, 132, 131, 3, 65, 6, 119, 0, 101, 110, 117, 2, 32, 3,
+			65, 13, 50, 109, 0, 105, 8, 2, 99, 114, 111, 3, 65, 37, 0, 4, 105, 115, 8, 2, 97, 110, 17, 67, 3, 65, 37, 88, 0, 105,
+			115, 8, 2, 195, 168, 0, 101, 101, 8, 2, 114, 17, 67, 3, 65, 108, 12, 0, 105, 108, 105, 101, 117, 8, 3, 65, 108, 55, 57, 6,
+			121, 0, 117, 122, 105, 101, 107, 8, 2, 21, 14, 128, 132, 134, 3, 65, 109, 88, 6, 37, 49, 0, 97, 110, 97, 103, 101, 109, 101, 110,
+			116, 3, 65, 115, 50, 108, 75, 65, 13, 50, 47, 0, 7, 6, 110, 0, 1, 110, 3, 0, 4, 3, 50, 0, 2, 103, 28, 19, 0, 2,
+			107, 28, 19, 0, 4, 97, 2, 116, 117, 114, 3, 50, 2, 115, 0, 97, 2, 118, 105, 103, 0, 97, 8, 2, 112, 111, 108, 17, 65, 0,
+			97, 8, 2, 118, 111, 108, 103, 21, 0, 97, 112, 111, 108, 101, 111, 110, 3, 50, 2, 115, 48, 122, 55, 13, 57, 113, 50, 0, 97, 8,
+			2, 114, 99, 3, 50, 2, 116, 0, 97, 114, 99, 105, 8, 2, 115, 3, 50, 2, 116, 34, 89, 108, 0, 105, 101, 117, 119, 115, 8, 2,
+			21, 14, 128, 132, 134, 3, 50, 6, 37, 58, 89, 0, 4, 97, 8, 2, 17, 67, 21, 21, 14, 128, 132, 130, 3, 50, 6, 115, 0, 97,
+			8, 2, 17, 67, 21, 24, 0, 97, 110, 111, 8, 2, 21, 14, 128, 132, 132, 3, 50, 6, 115, 50, 122, 0, 97, 106, 97, 97, 114, 115,
+			8, 2, 21, 14, 128, 132, 135, 3, 50, 6, 115, 57, 115, 34, 89, 0, 105, 115, 1, 21, 21, 2, 32, 14, 128, 128, 131, 3, 50, 108,
+			89, 0, 105, 115, 101, 110, 1, 21, 21, 2, 32, 14, 128, 128, 133, 3, 50, 108, 89, 13, 50, 0, 4, 97, 8, 2, 100, 101, 114, 3,
+			50, 115, 0, 97, 8, 2, 116, 105, 111, 110, 0, 97, 8, 2, 118, 114, 0, 97, 116, 117, 117, 114, 8, 3, 50, 115, 47, 6, 109, 34,
+			0, 97, 118, 105, 103, 97, 116, 105, 101, 8, 2, 21, 14, 128, 132, 137, 3, 50, 115, 84, 37, 100, 6, 115, 47, 89, 37, 0, 4, 97,
+			8, 2, 17, 67, 11, 3, 50, 116, 0, 97, 8, 2, 99, 104, 116, 0, 111, 111, 114, 100, 8, 2, 21, 14, 128, 132, 133, 3, 50, 122,
+			34, 72, 0, 111, 116, 105, 116, 105, 101, 8, 2, 21, 14, 128, 132, 135, 3, 50, 122, 47, 6, 37, 47, 89, 37, 0, 106, 3, 67, 0,
+			4, 2, 107, 3, 68, 0, 103, 0, 7, 6, 111, 0, 118, 101, 114, 8, 2, 21, 14, 128, 132, 132, 3, 4, 122, 84, 13, 34, 0, 101,
+			2, 29, 32, 3, 6, 40, 0, 105, 114, 2, 32, 3, 6, 85, 115, 34, 0, 112, 8, 2, 21, 21, 14, 128, 132, 130, 3, 6, 113, 48,
+			0, 110, 2, 32, 3, 6, 113, 50, 0, 110, 101, 110, 2, 32, 3, 6, 113, 50, 13, 50, 0, 4, 111, 2, 17, 67, 32, 3, 6, 122,
+			0, 111, 2, 29, 0, 4, 112, 8, 2, 101, 110, 101, 110, 12, 3, 6, 122, 48, 0, 112, 8, 2, 101, 114, 97, 0, 112, 101, 110, 8,
+			2, 21, 14, 128, 132, 132, 3, 6, 122, 48, 13, 50, 0, 112, 101, 110, 105, 110, 103, 115, 8, 2, 14, 128, 132, 136, 3, 6, 122, 48,
+			13, 50, 108, 68, 89, 0, 111, 110, 3, 6, 122, 50, 0, 118, 101, 114, 104, 101, 105, 100, 8, 3, 6, 122, 84, 13, 34, 107, 123, 47,
+			0, 1, 17, 67, 21, 21, 2, 32, 3, 8, 122, 0, 98, 115, 99, 2, 117, 3, 39, 48, 89, 49, 0, 4, 101, 3, 40, 0, 117, 1,
+			99, 2, 112, 117, 0, 117, 1, 100, 2, 98, 108, 117, 0, 117, 1, 114, 116, 2, 118, 97, 105, 108, 0, 117, 2, 99, 104, 101, 32, 0,
+			117, 2, 114, 97, 103, 101, 0, 117, 1, 116, 2, 114, 3, 40, 12, 0, 101, 105, 3, 40, 57, 0, 117, 118, 101, 2, 114, 116, 117, 3,
+			40, 84, 111, 0, 117, 115, 105, 97, 1, 104, 116, 110, 101, 3, 40, 90, 6, 116, 0, 117, 99, 104, 2, 101, 110, 32, 3, 40, 91, 0,
+			4, 105, 1, 99, 2, 102, 102, 117, 3, 85, 116, 0, 105, 1, 108, 112, 2, 116, 0, 4, 2, 17, 67, 25, 3, 113, 0, 2, 120, 0,
+			112, 8, 2, 116, 105, 111, 110, 3, 113, 48, 0, 112, 112, 101, 114, 8, 3, 113, 48, 13, 34, 0, 109, 103, 101, 118, 105, 110, 103, 3,
+			113, 65, 100, 6, 119, 84, 108, 68, 0, 102, 102, 105, 99, 101, 3, 113, 83, 13, 89, 0, 115, 2, 32, 3, 113, 89, 0, 111, 2, 114,
+			3, 114, 0, 4, 3, 122, 0, 1, 114, 112, 2, 103, 114, 97, 109, 0, 2, 114, 0, 111, 0, 111, 105, 3, 122, 57, 0, 118, 101, 114,
+			105, 103, 101, 110, 8, 3, 122, 84, 13, 34, 13, 100, 13, 50, 0, 111, 115, 116, 8, 2, 21, 14, 128, 132, 132, 3, 122, 89, 47, 0,
+			4, 117, 3, 125, 0, 117, 119, 0, 7, 6, 112, 0, 1, 112, 3, 0, 3, 48, 0, 97, 114, 97, 99, 104, 2, 117, 116, 3, 48, 4,
+			115, 34, 115, 91, 0, 111, 108, 105, 116, 105, 101, 8, 2, 21, 3, 48, 122, 55, 6, 37, 47, 89, 37, 0, 111, 108, 105, 116, 105, 101,
+			107, 8, 3, 48, 122, 55, 37, 47, 6, 37, 49, 0, 4, 104, 2, 25, 3, 83, 0, 104, 8, 0, 114, 111, 103, 114, 97, 109, 109, 97,
+			1, 21, 2, 32, 14, 128, 128, 135, 3, 122, 100, 34, 116, 65, 65, 35, 0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 1, 21, 2, 101,
+			101, 114, 0, 117, 1, 21, 2, 101, 114, 101, 110, 32, 0, 117, 101, 1, 21, 2, 32, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 114,
+			3, 16, 34, 0, 4, 3, 34, 0, 1, 17, 65, 2, 17, 65, 0, 1, 17, 67, 2, 17, 65, 0, 111, 117, 116, 101, 3, 34, 40, 47,
+			13, 0, 7, 6, 115, 0, 2, 115, 3, 0, 105, 101, 1, 114, 17, 65, 17, 67, 2, 32, 3, 8, 88, 37, 0, 1, 21, 2, 32, 28,
+			17, 3, 8, 89, 0, 101, 108, 1, 10, 2, 32, 3, 8, 89, 13, 55, 0, 101, 108, 101, 110, 1, 10, 2, 32, 3, 8, 89, 13, 55,
+			13, 50, 0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 0, 2, 98, 0, 2, 100, 0, 4, 3, 89, 0, 1, 21, 2, 32, 14, 128, 128,
+			129, 0, 1, 97, 2, 32, 0, 8, 101, 114, 118, 2, 101, 0, 99, 2, 101, 0, 99, 2, 105, 0, 99, 104, 2, 32, 0, 99, 104, 2,
+			101, 32, 0, 99, 104, 2, 101, 114, 32, 0, 97, 109, 101, 110, 8, 2, 21, 14, 128, 132, 133, 3, 89, 6, 115, 65, 13, 50, 0, 99,
+			105, 101, 110, 99, 101, 3, 89, 35, 108, 13, 50, 89, 0, 116, 97, 103, 101, 8, 2, 21, 14, 128, 132, 133, 3, 89, 47, 6, 115, 90,
+			13, 0, 116, 97, 114, 116, 8, 2, 21, 14, 128, 132, 133, 3, 89, 47, 6, 116, 34, 47, 0, 116, 97, 100, 115, 8, 2, 21, 14, 128,
+			132, 133, 3, 89, 47, 6, 116, 47, 89, 0, 116, 97, 110, 100, 97, 97, 114, 100, 8, 2, 21, 14, 128, 132, 137, 3, 89, 47, 6, 116,
+			50, 72, 115, 34, 47, 0, 116, 114, 97, 97, 116, 1, 21, 2, 32, 14, 128, 128, 134, 3, 89, 47, 34, 115, 47, 0, 112, 111, 114, 116,
+			8, 2, 21, 14, 128, 132, 133, 3, 89, 48, 6, 113, 34, 47, 0, 4, 99, 2, 111, 111, 112, 3, 89, 49, 0, 99, 2, 111, 112, 105,
+			0, 99, 97, 110, 8, 2, 18, 67, 3, 89, 49, 111, 50, 0, 106, 101, 1, 21, 2, 32, 3, 89, 57, 13, 0, 99, 104, 3, 89, 101,
+			0, 101, 114, 118, 105, 99, 101, 3, 89, 110, 84, 13, 89, 0, 105, 1, 17, 65, 2, 111, 3, 90, 0, 4, 99, 104, 8, 2, 110, 3,
+			91, 0, 104, 2, 25, 0, 104, 2, 111, 112, 0, 104, 8, 0, 105, 1, 21, 2, 111, 0, 106, 0, 115, 105, 1, 21, 2, 111, 0, 7,
+			6, 116, 0, 1, 116, 3, 0, 105, 101, 1, 115, 2, 32, 3, 8, 47, 37, 0, 105, 101, 2, 32, 3, 8, 47, 89, 37, 0, 4, 105,
+			101, 1, 99, 2, 32, 3, 8, 89, 37, 0, 105, 101, 1, 107, 2, 32, 0, 105, 101, 1, 112, 2, 32, 0, 4, 3, 47, 0, 1, 115,
+			2, 105, 12, 12, 0, 2, 104, 97, 97, 114, 0, 2, 104, 97, 118, 0, 100, 0, 104, 0, 104, 8, 0, 101, 97, 109, 8, 3, 47, 6,
+			37, 12, 65, 0, 111, 101, 8, 2, 21, 14, 128, 132, 131, 3, 47, 6, 40, 0, 114, 97, 110, 115, 8, 2, 21, 14, 128, 132, 133, 3,
+			47, 34, 4, 116, 50, 89, 0, 114, 97, 105, 110, 8, 3, 47, 34, 119, 50, 0, 101, 97, 109, 2, 32, 3, 47, 37, 12, 65, 0, 106,
+			3, 47, 38, 0, 111, 117, 99, 104, 2, 101, 3, 47, 40, 91, 0, 105, 101, 1, 97, 114, 99, 2, 32, 3, 47, 89, 6, 37, 0, 115,
+			106, 3, 76, 0, 4, 105, 1, 21, 2, 97, 3, 91, 0, 105, 1, 21, 2, 101, 117, 115, 0, 105, 1, 21, 2, 101, 117, 122, 0, 105,
+			1, 21, 2, 111, 110, 0, 105, 1, 21, 2, 195, 171, 0, 4, 105, 101, 101, 2, 108, 32, 3, 91, 6, 119, 0, 105, 195, 171, 2, 108,
+			101, 32, 0, 7, 6, 117, 0, 4, 2, 115, 105, 101, 32, 3, 6, 109, 0, 117, 2, 114, 32, 0, 116, 101, 1, 21, 2, 32, 3, 6,
+			109, 47, 0, 117, 108, 2, 32, 3, 6, 109, 55, 0, 105, 116, 8, 2, 21, 14, 128, 132, 131, 3, 6, 124, 47, 0, 4, 3, 109, 0,
+			117, 0, 119, 2, 17, 65, 3, 109, 58, 0, 4, 2, 17, 67, 25, 3, 110, 0, 2, 120, 0, 115, 2, 32, 3, 110, 89, 0, 105, 3,
+			124, 0, 119, 2, 25, 3, 127, 0, 7, 6, 118, 0, 1, 115, 3, 83, 0, 3, 84, 0, 97, 110, 8, 2, 21, 14, 128, 132, 131, 3,
+			84, 2, 116, 50, 0, 111, 111, 114, 8, 3, 84, 6, 114, 34, 0, 111, 111, 114, 116, 8, 2, 21, 14, 128, 132, 133, 3, 84, 6, 114,
+			34, 47, 0, 111, 111, 114, 106, 97, 97, 114, 115, 8, 2, 21, 14, 128, 132, 137, 3, 84, 6, 114, 34, 57, 115, 34, 89, 0, 101, 114,
+			8, 2, 21, 14, 128, 132, 131, 3, 84, 13, 34, 0, 101, 114, 107, 101, 101, 114, 115, 8, 2, 21, 14, 128, 132, 136, 3, 84, 13, 34,
+			49, 6, 108, 12, 34, 89, 0, 114, 105, 106, 119, 105, 108, 108, 105, 103, 101, 114, 115, 8, 2, 21, 14, 128, 132, 141, 3, 84, 34, 123,
+			85, 6, 108, 55, 13, 100, 13, 34, 89, 0, 101, 114, 8, 2, 101, 110, 25, 3, 84, 108, 12, 34, 0, 101, 114, 8, 2, 115, 105, 101,
+			32, 3, 84, 111, 34, 0, 101, 114, 100, 101, 114, 8, 3, 84, 111, 34, 72, 13, 34, 0, 97, 107, 97, 110, 116, 105, 101, 8, 2, 21,
+			14, 128, 132, 136, 3, 84, 115, 49, 6, 116, 50, 47, 89, 37, 0, 97, 110, 122, 101, 108, 102, 8, 2, 21, 14, 128, 132, 135, 3, 84,
+			116, 50, 88, 4, 111, 55, 83, 0, 97, 110, 103, 8, 3, 84, 116, 68, 0, 7, 6, 119, 0, 4, 2, 17, 67, 25, 3, 58, 0, 2,
+			29, 0, 114, 8, 2, 21, 3, 84, 34, 0, 3, 85, 0, 101, 114, 101, 108, 100, 8, 2, 21, 14, 128, 132, 134, 3, 85, 6, 108, 12,
+			34, 13, 55, 47, 0, 101, 101, 114, 115, 8, 2, 21, 14, 128, 132, 133, 3, 85, 6, 108, 12, 34, 89, 0, 105, 110, 116, 101, 114, 8,
+			2, 21, 14, 128, 132, 134, 3, 85, 6, 108, 50, 47, 13, 34, 0, 4, 101, 114, 107, 8, 2, 21, 14, 128, 132, 132, 3, 85, 6, 111,
+			34, 49, 0, 101, 114, 107, 8, 2, 101, 108, 0, 101, 114, 107, 8, 2, 105, 110, 103, 0, 101, 116, 115, 8, 2, 21, 14, 128, 132, 132,
+			3, 85, 6, 111, 47, 89, 0, 101, 103, 8, 2, 21, 14, 128, 132, 131, 3, 85, 6, 111, 100, 0, 97, 116, 101, 114, 8, 2, 21, 14,
+			128, 132, 133, 3, 85, 6, 115, 47, 13, 34, 0, 97, 110, 8, 2, 21, 14, 128, 132, 131, 3, 85, 6, 116, 50, 0, 97, 110, 8, 2,
+			18, 66, 21, 14, 128, 132, 131, 3, 85, 6, 116, 68, 0, 111, 111, 110, 8, 2, 21, 14, 128, 132, 132, 3, 85, 6, 122, 50, 0, 101,
+			115, 116, 8, 2, 21, 14, 128, 132, 132, 3, 85, 111, 89, 47, 0, 4, 97, 110, 8, 2, 100, 101, 108, 3, 85, 116, 50, 0, 97, 110,
+			110, 8, 2, 101, 101, 114, 0, 97, 110, 111, 114, 100, 101, 108, 105, 106, 107, 8, 3, 85, 116, 50, 23, 6, 113, 34, 72, 13, 55, 13,
+			49, 0, 97, 110, 116, 114, 111, 117, 119, 105, 103, 8, 3, 85, 116, 50, 47, 34, 6, 125, 13, 100, 0, 97, 110, 118, 111, 101, 103, 108,
+			105, 106, 107, 8, 3, 85, 116, 50, 84, 6, 40, 101, 55, 13, 49, 0, 97, 110, 115, 116, 97, 108, 116, 105, 103, 8, 3, 85, 116, 50,
+			89, 47, 6, 116, 55, 47, 13, 100, 0, 97, 110, 115, 109, 97, 107, 101, 108, 105, 106, 107, 8, 3, 85, 116, 50, 89, 65, 6, 115, 49,
+			13, 55, 13, 49, 0, 97, 110, 104, 111, 112, 105, 103, 8, 3, 85, 116, 50, 107, 6, 122, 48, 13, 100, 0, 97, 110, 8, 2, 107, 101,
+			108, 3, 85, 116, 68, 0, 4, 101, 103, 8, 2, 101, 32, 3, 85, 119, 100, 0, 101, 103, 8, 2, 101, 110, 0, 101, 103, 8, 2, 105,
+			110, 103, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 37, 0, 8, 2, 17, 65, 3, 57, 0, 4, 2, 17, 67, 25,
+			3, 108, 0, 2, 120, 0, 7, 6, 122, 0, 4, 1, 115, 3, 0, 2, 122, 3, 0, 3, 88, 0, 111, 103, 101, 8, 2, 21, 14, 128,
+			132, 132, 3, 88, 4, 122, 100, 13, 0, 101, 101, 8, 2, 21, 14, 128, 132, 131, 3, 88, 6, 119, 0, 111, 109, 101, 114, 8, 2, 21,
+			14, 128, 132, 133, 3, 88, 6, 122, 65, 13, 34, 0, 101, 108, 101, 2, 32, 14, 128, 128, 132, 3, 88, 119, 55, 13, 0, 117, 105, 100,
+			8, 2, 21, 14, 128, 132, 132, 3, 88, 124, 47, 0, 101, 101, 117, 119, 8, 3, 88, 126, 0, 101, 108, 102, 1, 21, 2, 32, 14, 128,
+			128, 132, 3, 89, 6, 111, 55, 83, 0, 7, 6, 0, 195, 168, 114, 101, 2, 32, 3, 6, 111, 34, 13, 0, 195, 169, 2, 32, 3, 6,
+			119, 0, 195, 171, 110, 1, 101, 105, 114, 101, 2, 32, 14, 128, 128, 130, 3, 13, 50, 0, 44, 2, 15, 3, 49, 6, 113, 65, 115, 0,
+			45, 8, 32, 2, 32, 15, 3, 65, 6, 108, 50, 0, 36, 3, 72, 6, 113, 55, 116, 34, 0, 39, 115, 1, 21, 2, 32, 14, 128, 128,
+			130, 3, 89, 0, 4, 195, 169, 3, 119, 0, 195, 169, 195, 169, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts48 = FileInMemory_createWithData (27197, reinterpret_cast<const char *> (&espeakdata_dicts48_data), 
+			U"espeak-1.48.04-source/espeak-data/nl_dict", 
 			U"nl");
-		Collection_addItem (me.peek(), espeakdata_dicts45.transfer());
+		my addItem_move (espeakdata_dicts48.move());
 
-		static unsigned char espeakdata_dicts46_data[4198] = {
-			0, 4, 0, 0, 246, 12, 0, 0, 0, 0, 0, 7, 195, 52, 83, 128, 72, 8, 0, 0, 5, 65, 4, 120, 0, 0, 0, 0, 0, 6,
-			65, 8, 71, 117, 0, 0, 0, 0, 0, 6, 65, 12, 89, 117, 0, 0, 0, 0, 0, 6, 65, 16, 72, 117, 0, 0, 0, 6, 195, 76,
-			147, 128, 76, 0, 0, 0, 0, 16, 4, 95, 48, 67, 15, 107, 6, 125, 50, 72, 51, 13, 72, 108, 0, 0, 6, 195, 76, 147, 133, 76,
-			0, 6, 65, 24, 115, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 117, 0, 0, 0, 6, 195, 44, 19, 128, 76, 0, 0, 6, 65, 32,
-			107, 122, 0, 0, 0, 0, 15, 1, 35, 50, 125, 65, 65, 13, 51, 47, 115, 68, 50, 0, 27, 0, 6, 65, 36, 110, 0, 14, 5, 193,
-			36, 72, 28, 0, 14, 1, 37, 48, 51, 6, 124, 89, 6, 115, 50, 47, 0, 27, 0, 7, 1, 38, 121, 12, 81, 0, 0, 0, 6, 65,
-			40, 57, 117, 0, 0, 0, 11, 1, 42, 89, 95, 35, 51, 50, 108, 0, 27, 0, 9, 1, 43, 48, 55, 125, 89, 0, 27, 0, 6, 65,
-			44, 49, 122, 0, 0, 0, 0, 14, 1, 47, 89, 49, 51, 121, 89, 47, 51, 13, 49, 0, 27, 0, 6, 65, 48, 115, 55, 0, 0, 0,
-			0, 0, 6, 65, 52, 115, 65, 0, 0, 6, 195, 52, 83, 147, 8, 7, 195, 52, 83, 147, 72, 8, 0, 0, 0, 10, 5, 95, 48, 1,
-			14, 4, 124, 81, 0, 6, 65, 56, 115, 50, 0, 0, 0, 0, 0, 0, 10, 1, 61, 35, 51, 55, 110, 49, 0, 27, 0, 0, 0, 13,
-			1, 64, 49, 51, 113, 55, 55, 119, 55, 83, 119, 0, 6, 65, 64, 48, 117, 0, 0, 0, 0, 0, 6, 65, 68, 49, 126, 0, 0, 0,
-			0, 0, 6, 65, 72, 116, 51, 0, 0, 0, 6, 195, 8, 193, 64, 76, 0, 0, 6, 65, 76, 115, 89, 0, 0, 0, 0, 0, 6, 65,
-			80, 47, 117, 0, 0, 0, 11, 70, 12, 243, 148, 36, 229, 69, 21, 0, 10, 6, 195, 52, 81, 192, 76, 0, 0, 0, 0, 0, 0, 6,
-			65, 88, 84, 117, 0, 0, 0, 0, 0, 22, 1, 92, 121, 65, 84, 115, 50, 72, 47, 15, 89, 49, 51, 121, 89, 47, 51, 13, 49, 0,
-			27, 14, 65, 92, 72, 6, 121, 71, 12, 115, 55, 4, 84, 117, 0, 0, 0, 15, 1, 94, 89, 109, 51, 49, 125, 65, 83, 55, 115, 49,
-			89, 0, 0, 0, 17, 4, 95, 49, 77, 49, 6, 115, 47, 15, 47, 6, 126, 89, 13, 50, 0, 7, 65, 96, 115, 49, 89, 0, 0, 21,
-			4, 95, 49, 77, 50, 6, 117, 50, 15, 65, 6, 109, 55, 55, 110, 38, 4, 124, 50, 0, 0, 0, 0, 6, 195, 8, 194, 82, 76, 0,
-			0, 0, 0, 7, 65, 104, 89, 115, 47, 0, 0, 6, 194, 5, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 83, 142, 21,
-			64, 76, 0, 0, 0, 7, 196, 32, 17, 4, 20, 72, 0, 0, 0, 0, 0, 0, 0, 7, 195, 32, 244, 192, 72, 8, 0, 0, 15, 69,
-			77, 148, 212, 20, 208, 89, 111, 89, 47, 6, 117, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 57, 15, 50,
-			6, 109, 47, 12, 13, 50, 72, 108, 0, 0, 0, 0, 6, 194, 5, 96, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196,
-			84, 225, 5, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 20, 227, 128, 72, 8, 15, 4, 95, 49, 56, 15, 6,
-			119, 47, 12, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 32, 83, 142, 20, 76, 0, 0, 0, 0, 0, 10,
-			69, 72, 80, 68, 21, 32, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32,
-			21, 20, 72, 6, 195, 16, 149, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 49, 15, 6, 115, 55, 55, 115, 84, 47,
-			108, 0, 0, 0, 0, 8, 66, 21, 32, 4, 116, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 16, 80, 72, 110, 0, 76, 0,
-			0, 0, 0, 0, 9, 67, 16, 85, 0, 72, 117, 0, 76, 17, 4, 95, 49, 51, 15, 47, 51, 6, 115, 47, 12, 13, 50, 72, 108, 0,
-			0, 12, 4, 95, 4, 16, 20, 49, 121, 65, 65, 119, 0, 0, 0, 5, 194, 17, 80, 76, 0, 6, 195, 32, 19, 64, 76, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 4, 95, 20, 12, 4, 47, 6, 109, 55, 72, 108, 0, 0, 0, 0, 16, 4, 95, 49, 53, 15, 83, 6,
-			115, 65, 47, 13, 50, 72, 108, 0, 0, 0, 0, 8, 66, 21, 64, 115, 47, 0, 72, 0, 0, 0, 0, 0, 14, 4, 95, 49, 50, 15,
-			47, 6, 121, 55, 84, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 55, 15, 89, 6, 111, 47, 12, 13, 50, 72,
-			108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 176, 76, 76, 17, 4, 95, 49, 52, 15, 83, 57, 6, 123, 51, 47, 13, 65,
-			72, 108, 0, 0, 0, 0, 10, 67, 4, 225, 0, 108, 50, 72, 0, 9, 0, 0, 0, 0, 0, 0, 0, 7, 196, 16, 83, 142, 20, 76,
-			0, 0, 0, 0, 0, 17, 4, 95, 49, 54, 15, 89, 6, 115, 49, 89, 47, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 5, 194, 32,
-			16, 76, 5, 194, 16, 144, 76, 0, 0, 0, 0, 0, 0, 8, 196, 48, 19, 135, 76, 72, 8, 0, 0, 16, 5, 95, 48, 77, 49, 15,
-			47, 6, 126, 89, 13, 50, 72, 108, 0, 0, 6, 195, 16, 147, 128, 76, 6, 195, 32, 19, 128, 76, 0, 0, 0, 6, 195, 16, 147, 133,
-			76, 0, 0, 0, 0, 0, 6, 195, 32, 20, 128, 72, 0, 8, 196, 20, 195, 5, 72, 72, 8, 0, 10, 69, 12, 19, 131, 20, 192, 21,
-			0, 10, 0, 0, 0, 7, 196, 24, 244, 132, 36, 8, 7, 196, 36, 227, 133, 56, 8, 0, 0, 0, 0, 6, 195, 32, 19, 147, 76, 0,
-			0, 0, 0, 0, 0, 5, 194, 20, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 196, 16, 84, 133, 76, 76, 13, 3, 95, 49, 15, 83, 6, 113, 51, 89, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			67, 40, 81, 192, 57, 116, 109, 0, 76, 0, 12, 3, 95, 50, 15, 6, 119, 50, 72, 51, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			13, 3, 95, 51, 15, 47, 51, 6, 115, 72, 57, 108, 0, 11, 4, 95, 15, 18, 4, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 197, 32, 83, 142, 21, 48, 76, 0, 0, 0, 7, 196, 24, 244, 129, 56, 8, 0, 0, 0, 0, 12, 3, 95, 53, 15,
-			83, 6, 115, 65, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 54, 15, 91, 6, 115, 47, 12, 108, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 224, 72, 0, 13, 3, 95, 51, 88, 47, 51, 6, 115,
-			47, 12, 110, 0, 0, 13, 3, 95, 48, 67, 107, 6, 125, 50, 72, 51, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49,
-			67, 6, 115, 47, 15, 107, 6, 125, 50, 72, 51, 108, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 57, 50, 6, 109, 47, 12, 13,
-			50, 0, 0, 12, 3, 95, 49, 56, 6, 119, 47, 12, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 115, 55,
-			84, 108, 0, 0, 9, 3, 95, 49, 48, 47, 6, 110, 0, 0, 14, 3, 95, 49, 51, 47, 51, 6, 115, 47, 12, 13, 50, 0, 0, 11,
-			3, 95, 49, 50, 47, 6, 121, 55, 84, 0, 0, 13, 3, 95, 49, 53, 83, 6, 115, 65, 47, 13, 50, 0, 0, 14, 3, 95, 49, 52,
-			83, 57, 6, 123, 51, 47, 13, 50, 0, 0, 12, 3, 95, 52, 15, 83, 57, 6, 118, 51, 108, 0, 13, 3, 95, 49, 55, 89, 6, 111,
-			47, 12, 13, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 115, 49, 89, 47, 13, 50, 0, 0, 0, 6, 195, 61, 52, 192, 76, 12, 3,
-			95, 55, 88, 89, 6, 111, 47, 12, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 10, 3, 95, 50, 88, 95, 6, 126, 108, 0, 0, 0, 0, 0, 0, 14, 3, 95, 56, 15, 6, 121, 47, 12, 13, 50,
-			72, 108, 0, 0, 0, 0, 0, 0, 10, 69, 76, 52, 133, 20, 224, 21, 0, 10, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 88, 83,
-			6, 114, 51, 47, 110, 0, 0, 0, 0, 0, 10, 67, 56, 241, 64, 50, 123, 12, 108, 0, 0, 0, 0, 0, 12, 3, 95, 53, 88, 83,
-			6, 115, 65, 47, 110, 0, 0, 0, 0, 0, 0, 0, 13, 69, 60, 97, 137, 12, 80, 121, 83, 83, 110, 89, 0, 0, 0, 13, 3, 95,
-			54, 88, 89, 6, 115, 49, 89, 47, 110, 0, 0, 0, 14, 4, 95, 50, 88, 15, 95, 6, 126, 13, 50, 72, 108, 0, 0, 7, 132, 22,
-			195, 165, 18, 76, 0, 6, 195, 52, 149, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 56, 88, 6, 121,
-			47, 12, 110, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 81, 0, 72, 8, 0, 0, 12, 3, 95, 57, 88, 50, 6, 109, 47, 12, 110,
-			0, 0, 7, 196, 16, 85, 20, 20, 76, 0, 11, 67, 56, 241, 78, 50, 123, 12, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 6, 194, 36, 224, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
-			56, 81, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 128, 76, 0, 0, 0, 19, 4, 95, 48, 77, 50, 65, 6, 109,
-			55, 55, 110, 38, 4, 124, 50, 13, 51, 0, 0, 0, 6, 195, 52, 147, 133, 76, 7, 196, 60, 246, 13, 48, 17, 0, 13, 4, 95, 48,
-			77, 49, 47, 6, 126, 89, 13, 50, 0, 0, 0, 0, 0, 0, 0, 12, 67, 24, 244, 128, 83, 121, 34, 12, 0, 72, 8, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 60, 112, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 19, 4, 95, 3, 9, 18, 89, 6, 109, 51, 49, 125, 65, 83, 55, 115, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 1, 3, 21, 120, 6, 49, 125, 47, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 3, 95, 195, 165, 122, 0, 0, 0, 0, 0, 0, 0, 8, 133, 15, 7, 19, 195, 165, 28, 0, 0, 0, 0,
-			0, 0, 7, 196, 45, 83, 142, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 245, 0, 72,
-			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194,
-			60, 208, 72, 28, 0, 0, 0, 0, 0, 0, 0, 6, 195, 61, 97, 82, 28, 0, 0, 7, 2, 195, 165, 122, 0, 14, 6, 130, 195, 165,
-			72, 28, 0, 0, 0, 0, 0, 7, 131, 16, 195, 165, 72, 28, 0, 0, 0, 0, 0, 0, 0, 5, 130, 195, 169, 43, 0, 0, 0, 0,
-			0, 15, 4, 95, 3, 5, 4, 89, 6, 117, 72, 109, 55, 55, 108, 0, 0, 0, 0, 0, 0, 0, 7, 132, 2, 195, 184, 18, 76, 7,
-			132, 6, 195, 184, 18, 8, 5, 130, 195, 188, 43, 0, 0, 0, 0, 8, 133, 22, 195, 165, 18, 5, 76, 0, 0, 0, 0, 0, 9, 67,
-			44, 243, 64, 49, 121, 65, 0, 7, 195, 76, 243, 64, 72, 8, 0, 0, 0, 0, 6, 195, 16, 83, 64, 76, 0, 0, 0, 0, 0, 0,
-			8, 133, 22, 195, 165, 18, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 76, 0, 0, 0, 0,
-			0, 12, 71, 52, 17, 206, 36, 98, 69, 72, 21, 0, 10, 0, 0, 8, 197, 16, 84, 147, 60, 208, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 2, 95, 9, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 80, 147, 0, 72, 28, 0,
-			0, 0, 0, 0, 8, 133, 22, 195, 166, 18, 5, 76, 0, 8, 197, 76, 181, 76, 48, 80, 76, 0, 0, 0, 9, 198, 76, 181, 76, 48,
-			85, 0, 76, 13, 2, 95, 34, 119, 50, 83, 114, 51, 91, 13, 55, 0, 0, 8, 197, 52, 83, 12, 60, 208, 8, 15, 2, 95, 33, 126,
-			47, 51, 124, 48, 89, 47, 115, 68, 50, 0, 0, 0, 14, 2, 95, 39, 119, 48, 123, 89, 47, 51, 6, 124, 83, 0, 0, 0, 0, 11,
-			2, 95, 36, 72, 121, 55, 55, 120, 51, 0, 0, 6, 195, 16, 83, 128, 76, 0, 11, 2, 95, 42, 89, 95, 35, 51, 50, 108, 0, 0,
-			21, 2, 95, 41, 48, 35, 51, 35, 68, 47, 6, 117, 89, 15, 91, 55, 6, 125, 47, 12, 0, 0, 6, 195, 16, 84, 133, 76, 6, 195,
-			16, 84, 133, 76, 24, 2, 95, 40, 48, 35, 51, 35, 68, 47, 6, 117, 89, 15, 71, 13, 57, 6, 111, 50, 50, 13, 51, 0, 0, 9,
-			67, 32, 84, 128, 107, 116, 51, 0, 0, 12, 2, 95, 46, 48, 125, 68, 49, 47, 126, 65, 0, 0, 8, 133, 22, 195, 166, 18, 20, 72,
-			10, 2, 95, 45, 89, 47, 51, 117, 49, 0, 0, 6, 195, 8, 20, 133, 72, 10, 2, 95, 44, 49, 121, 65, 65, 119, 0, 0, 9, 67,
-			16, 84, 128, 72, 116, 51, 0, 6, 195, 88, 20, 128, 72, 9, 2, 95, 51, 47, 51, 6, 117, 0, 0, 8, 2, 95, 50, 47, 6, 124,
-			0, 0, 8, 2, 95, 49, 6, 117, 50, 0, 0, 9, 2, 95, 48, 50, 6, 125, 55, 0, 0, 8, 2, 95, 55, 91, 6, 126, 0, 0,
-			10, 2, 95, 54, 89, 6, 115, 49, 89, 0, 0, 9, 2, 95, 53, 83, 6, 115, 65, 0, 0, 10, 2, 95, 52, 83, 6, 110, 51, 115,
-			0, 0, 14, 2, 95, 59, 89, 117, 65, 110, 49, 124, 55, 121, 50, 0, 0, 10, 2, 95, 58, 49, 124, 55, 121, 50, 0, 0, 8, 2,
-			95, 57, 50, 6, 110, 0, 0, 10, 2, 95, 56, 6, 121, 47, 12, 108, 0, 0, 18, 2, 95, 63, 89, 48, 113, 51, 91, 65, 121, 55,
-			89, 47, 115, 68, 50, 0, 0, 13, 2, 95, 62, 89, 47, 113, 51, 13, 15, 115, 50, 0, 0, 10, 2, 95, 61, 35, 51, 55, 110, 49,
-			0, 0, 14, 2, 95, 60, 65, 109, 50, 72, 51, 108, 15, 115, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 88, 147, 0, 76, 6, 195, 16, 81, 192, 76, 28, 2, 95, 91, 84, 6, 115,
-			50, 89, 47, 51, 108, 15, 107, 6, 120, 49, 117, 48, 35, 51, 35, 68, 47, 6, 117, 89, 0, 0, 0, 0, 6, 195, 36, 178, 197, 72,
-			5, 194, 88, 144, 76, 0, 6, 195, 8, 18, 192, 8, 15, 2, 95, 95, 125, 50, 72, 35, 51, 91, 47, 51, 13, 49, 0, 0, 0, 25,
-			2, 95, 93, 107, 6, 131, 51, 108, 15, 107, 6, 120, 49, 117, 48, 35, 51, 35, 68, 47, 6, 117, 89, 0, 0, 22, 2, 95, 92, 121,
-			65, 84, 115, 50, 72, 47, 15, 89, 49, 51, 121, 89, 47, 51, 13, 49, 0, 0, 0, 0, 0, 23, 2, 95, 96, 6, 121, 65, 84, 115,
-			50, 72, 47, 15, 119, 48, 123, 89, 47, 51, 6, 124, 83, 0, 0, 6, 195, 33, 83, 128, 76, 0, 0, 0, 0, 0, 0, 0, 14, 4,
-			95, 7, 18, 22, 81, 51, 6, 120, 84, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 4, 9,
-			1, 47, 51, 6, 117, 65, 119, 0, 0, 0, 0, 0, 0, 7, 196, 8, 194, 84, 80, 76, 0, 0, 0, 11, 70, 24, 148, 133, 24, 246,
-			0, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 7, 131, 19, 195, 165, 72, 8, 0, 10, 4, 95, 35, 48, 57, 47, 120, 71, 0, 0,
-			0, 0, 0, 0, 8, 196, 21, 69, 5, 72, 72, 8, 0, 0, 0, 7, 195, 25, 32, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 16,
-			4, 95, 35, 51, 50, 65, 115, 55, 55, 121, 65, 51, 124, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 7, 195, 33, 98, 83, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 16, 148,
-			211, 20, 76, 0, 6, 195, 85, 65, 78, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 9, 67, 48, 241, 64, 55, 124, 0, 41, 0, 0, 0, 0, 7, 195, 76, 19, 84, 72, 8, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 149, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 164, 0, 2, 17, 67, 17, 67, 3, 115, 0,
-			3, 116, 0, 7, 6, 195, 165, 0, 2, 17, 67, 17, 67, 3, 121, 0, 3, 122, 0, 101, 3, 122, 108, 0, 7, 6, 195, 166, 0, 2,
-			17, 67, 17, 67, 3, 35, 0, 3, 116, 0, 2, 114, 3, 118, 0, 7, 6, 195, 182, 0, 2, 17, 67, 17, 67, 3, 113, 0, 3, 114,
-			0, 7, 6, 195, 184, 0, 2, 17, 67, 17, 67, 3, 113, 0, 3, 114, 0, 121, 3, 131, 0, 7, 6, 97, 0, 4, 2, 17, 67, 3,
-			35, 0, 101, 2, 17, 67, 17, 67, 0, 101, 3, 118, 0, 4, 2, 17, 67, 17, 67, 3, 119, 0, 2, 32, 0, 3, 120, 0, 97, 2,
-			17, 67, 17, 67, 3, 121, 0, 97, 3, 122, 0, 105, 3, 127, 0, 117, 3, 132, 0, 7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12,
-			0, 101, 8, 2, 21, 3, 71, 13, 0, 7, 6, 99, 0, 3, 49, 0, 99, 3, 49, 12, 0, 4, 2, 101, 105, 3, 89, 0, 2, 105,
-			0, 2, 121, 0, 2, 195, 184, 121, 0, 8, 2, 101, 0, 104, 3, 91, 0, 7, 6, 100, 0, 1, 114, 2, 32, 3, 0, 3, 72, 0,
-			100, 3, 72, 12, 0, 101, 116, 1, 10, 2, 32, 3, 72, 108, 0, 7, 6, 101, 0, 1, 10, 2, 17, 67, 32, 3, 13, 0, 116, 1,
-			10, 2, 32, 3, 13, 47, 0, 110, 1, 10, 2, 32, 3, 13, 50, 0, 110, 115, 1, 10, 2, 32, 3, 13, 50, 89, 0, 115, 1, 10,
-			2, 32, 3, 13, 89, 0, 2, 114, 17, 67, 3, 35, 0, 1, 10, 2, 32, 3, 108, 0, 4, 1, 29, 2, 109, 32, 3, 115, 0, 2,
-			17, 67, 17, 67, 0, 110, 101, 1, 10, 2, 32, 3, 115, 50, 108, 0, 3, 117, 0, 105, 3, 128, 0, 7, 6, 102, 0, 3, 83, 0,
-			7, 6, 103, 0, 4, 2, 101, 105, 3, 57, 0, 2, 105, 0, 2, 121, 0, 2, 195, 184, 121, 0, 106, 0, 2, 110, 3, 68, 0, 3,
-			81, 0, 103, 3, 81, 12, 0, 7, 6, 104, 0, 106, 3, 57, 0, 118, 3, 84, 0, 3, 107, 0, 7, 6, 105, 0, 4, 2, 17, 67,
-			17, 67, 3, 109, 0, 103, 1, 10, 2, 32, 0, 3, 110, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3,
-			49, 12, 0, 4, 2, 101, 105, 3, 101, 0, 2, 105, 0, 2, 121, 0, 2, 195, 184, 121, 0, 106, 0, 7, 6, 108, 0, 4, 3, 55,
-			0, 108, 2, 25, 0, 100, 3, 55, 55, 0, 106, 3, 57, 0, 7, 6, 109, 0, 4, 3, 65, 0, 109, 2, 25, 0, 7, 6, 110, 0,
-			4, 3, 50, 0, 110, 2, 25, 0, 100, 3, 50, 50, 0, 4, 2, 107, 3, 68, 0, 103, 0, 7, 6, 111, 0, 2, 17, 67, 17, 67,
-			3, 121, 0, 101, 3, 121, 108, 0, 4, 2, 110, 100, 3, 123, 0, 2, 114, 116, 0, 2, 115, 116, 0, 4, 3, 124, 0, 1, 98, 2,
-			114, 100, 0, 101, 1, 98, 21, 2, 32, 0, 105, 3, 129, 0, 7, 6, 112, 0, 3, 48, 0, 112, 3, 48, 12, 0, 7, 6, 113, 0,
-			3, 49, 0, 113, 3, 49, 12, 0, 117, 3, 49, 58, 0, 7, 6, 114, 0, 3, 51, 0, 115, 2, 32, 3, 91, 0, 7, 6, 115, 0,
-			4, 3, 89, 0, 1, 17, 65, 2, 108, 17, 65, 0, 115, 2, 32, 0, 115, 3, 89, 89, 0, 4, 1, 114, 3, 91, 0, 2, 108, 0,
-			99, 104, 0, 106, 0, 107, 2, 101, 105, 0, 107, 2, 105, 0, 107, 2, 121, 0, 107, 2, 195, 184, 121, 0, 107, 106, 0, 7, 6, 116,
-			0, 3, 47, 0, 116, 3, 47, 12, 0, 105, 2, 111, 110, 3, 91, 0, 106, 3, 95, 0, 7, 6, 117, 0, 2, 17, 67, 17, 67, 3,
-			125, 0, 3, 126, 0, 105, 3, 130, 0, 7, 6, 118, 0, 4, 3, 84, 0, 118, 2, 32, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6,
-			120, 0, 2, 120, 3, 0, 3, 49, 89, 0, 8, 3, 89, 0, 7, 6, 121, 0, 2, 17, 67, 17, 67, 3, 111, 0, 3, 112, 0, 7,
-			6, 122, 0, 4, 122, 3, 88, 0, 122, 2, 32, 0, 3, 89, 0, 7, 6, 0, 4, 33, 1, 19, 3, 0, 46, 1, 46, 3, 0, 195,
-			169, 3, 6, 117, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 6, 126, 47, 51, 124, 48, 89, 47, 115, 68, 50, 9, 0, 4, 45, 1,
-			32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 46, 3, 48, 125, 68, 49, 47, 126, 65, 0, 45, 8,
-			32, 2, 32, 15, 3, 65, 110, 50, 126, 89, 0, 36, 3, 72, 121, 55, 55, 120, 51, 0, 195, 188, 3, 112, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts46 = FileInMemory_createWithData (4197, reinterpret_cast<const char *> (&espeakdata_dicts46_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/no_dict", 
+		static unsigned char espeakdata_dicts49_data[4179] = {
+			0, 4, 0, 0, 227, 12, 0, 0, 0, 0, 0, 7, 195, 52, 83, 128, 72, 8, 0, 0, 5, 65, 4, 120, 0, 0, 0, 0, 0, 6,
+			65, 8, 71, 117, 0, 0, 0, 8, 197, 16, 84, 147, 60, 208, 8, 0, 0, 6, 65, 12, 89, 117, 0, 0, 0, 0, 0, 6, 65, 16,
+			72, 117, 0, 0, 0, 6, 195, 76, 147, 128, 76, 0, 12, 4, 95, 100, 112, 116, 49, 121, 65, 65, 119, 0, 0, 7, 196, 8, 194, 84,
+			80, 76, 0, 0, 0, 0, 6, 65, 24, 115, 83, 0, 0, 11, 67, 56, 241, 78, 50, 123, 12, 13, 50, 0, 0, 0, 0, 6, 65, 28,
+			81, 117, 0, 0, 0, 6, 195, 44, 19, 128, 76, 0, 0, 6, 65, 32, 107, 122, 0, 0, 0, 0, 15, 1, 35, 50, 125, 65, 65, 13,
+			51, 47, 115, 68, 50, 0, 27, 0, 6, 65, 36, 110, 0, 49, 5, 193, 36, 72, 28, 0, 14, 1, 37, 48, 51, 6, 124, 89, 6, 115,
+			50, 47, 0, 27, 0, 7, 1, 38, 121, 12, 81, 0, 0, 0, 6, 65, 40, 57, 117, 0, 0, 0, 11, 1, 42, 89, 95, 35, 51, 50,
+			108, 0, 27, 0, 9, 1, 43, 48, 55, 125, 89, 0, 27, 0, 6, 65, 44, 49, 122, 0, 0, 0, 15, 69, 77, 148, 212, 20, 208, 89,
+			111, 89, 47, 6, 117, 65, 0, 0, 14, 1, 47, 89, 49, 51, 121, 89, 47, 51, 13, 49, 0, 27, 0, 13, 4, 95, 100, 105, 97, 47,
+			51, 6, 117, 65, 119, 0, 6, 65, 48, 115, 55, 0, 0, 0, 0, 0, 6, 65, 52, 115, 65, 0, 0, 0, 0, 0, 6, 65, 56, 115,
+			50, 0, 0, 0, 0, 0, 0, 10, 1, 61, 35, 51, 55, 110, 49, 0, 27, 0, 0, 0, 13, 1, 64, 49, 51, 113, 55, 55, 119, 55,
+			83, 119, 0, 6, 65, 64, 48, 117, 0, 0, 0, 0, 0, 6, 65, 68, 49, 126, 0, 0, 0, 0, 6, 195, 76, 176, 76, 76, 0, 6,
+			65, 72, 116, 51, 0, 0, 0, 6, 195, 8, 193, 64, 76, 0, 0, 6, 65, 76, 115, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 117,
+			0, 0, 0, 6, 195, 52, 81, 192, 76, 0, 0, 0, 6, 195, 89, 228, 133, 76, 0, 0, 0, 6, 65, 88, 84, 117, 0, 0, 0, 0,
+			0, 22, 1, 92, 121, 65, 84, 115, 50, 72, 47, 15, 89, 49, 51, 121, 89, 47, 51, 13, 49, 0, 27, 14, 65, 92, 72, 6, 121, 71,
+			12, 115, 55, 4, 84, 117, 0, 0, 0, 15, 1, 94, 89, 109, 51, 49, 125, 65, 83, 55, 115, 49, 89, 0, 0, 0, 17, 4, 95, 49,
+			77, 49, 6, 115, 47, 15, 47, 6, 126, 89, 13, 50, 0, 7, 65, 96, 115, 49, 89, 0, 0, 21, 4, 95, 49, 77, 50, 6, 117, 50,
+			15, 65, 6, 109, 55, 55, 110, 38, 4, 124, 50, 0, 0, 6, 65, 120, 122, 0, 49, 5, 193, 120, 72, 28, 0, 0, 0, 0, 0, 0,
+			7, 65, 104, 89, 115, 47, 0, 0, 6, 194, 5, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95,
+			48, 67, 111, 107, 6, 125, 50, 72, 51, 13, 72, 108, 0, 0, 0, 0, 0, 7, 195, 32, 244, 192, 72, 8, 0, 0, 0, 0, 0, 13,
+			4, 95, 116, 108, 100, 47, 6, 109, 55, 72, 108, 0, 0, 0, 0, 0, 0, 0, 7, 196, 45, 83, 142, 20, 76, 0, 0, 0, 0, 6,
+			194, 5, 96, 72, 28, 7, 196, 16, 83, 142, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+			196, 21, 69, 5, 72, 72, 8, 0, 0, 0, 0, 7, 195, 20, 227, 128, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 111, 114, 100, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 21, 32, 4, 116, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66,
+			16, 80, 72, 110, 0, 76, 0, 0, 0, 0, 0, 9, 67, 16, 85, 0, 72, 117, 0, 76, 0, 0, 0, 5, 194, 17, 80, 76, 0, 6,
+			195, 32, 19, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 49, 57, 111, 50, 6, 109, 47, 12, 13, 50,
+			72, 108, 0, 0, 0, 0, 8, 66, 21, 64, 115, 47, 0, 72, 0, 8, 197, 76, 181, 76, 48, 80, 76, 0, 0, 0, 0, 4, 193, 136,
+			43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 84, 225, 5, 72, 28, 0, 0, 0, 0, 15, 4, 95, 49, 56, 111,
+			6, 119, 47, 12, 13, 50, 72, 108, 0, 0, 0, 0, 10, 67, 4, 225, 0, 108, 50, 72, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 89, 228, 148, 76, 0, 0, 0, 0, 0, 0, 6, 195, 76, 147, 133, 76, 0, 0, 0, 5, 194, 32, 16, 76, 5, 194, 16, 144,
+			76, 0, 0, 0, 0, 8, 196, 48, 19, 135, 76, 72, 8, 0, 0, 0, 0, 0, 6, 195, 16, 147, 128, 76, 6, 195, 32, 19, 128, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 20, 128, 72, 0, 0, 15, 4, 95, 49, 49, 111, 6, 115, 55, 55, 115, 84, 47, 108,
+			0, 0, 0, 0, 0, 6, 195, 89, 244, 148, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 144, 72, 0, 0, 6, 195, 89,
+			244, 133, 76, 0, 17, 4, 95, 49, 51, 111, 47, 51, 6, 115, 47, 12, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 197, 52, 83, 12, 60, 208, 8, 0, 0, 0, 0, 16, 4, 95, 49, 53, 111, 83, 6, 115, 65, 47, 13, 50, 72, 108,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 49, 50, 111, 47, 6, 121, 55, 84, 47, 108, 0, 0, 0, 6, 195, 16, 147, 133,
+			76, 6, 195, 52, 147, 133, 76, 10, 67, 40, 81, 192, 57, 116, 109, 0, 76, 0, 0, 7, 196, 60, 246, 13, 48, 13, 0, 0, 0, 0,
+			16, 4, 95, 49, 55, 111, 89, 6, 111, 47, 12, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 49, 52, 111,
+			83, 57, 6, 123, 51, 47, 13, 65, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95,
+			49, 54, 111, 89, 6, 115, 49, 89, 47, 13, 50, 72, 108, 0, 0, 0, 6, 195, 16, 84, 133, 76, 6, 195, 16, 84, 133, 76, 0, 0,
+			7, 195, 33, 98, 83, 72, 8, 0, 0, 0, 0, 0, 0, 8, 196, 20, 195, 5, 72, 72, 8, 0, 0, 0, 16, 5, 95, 48, 77, 49,
+			111, 47, 6, 126, 89, 13, 50, 72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 12, 19, 131, 20, 192, 21, 0, 47, 5, 194,
+			20, 224, 72, 0, 13, 3, 95, 51, 88, 47, 51, 6, 115, 47, 12, 110, 0, 0, 7, 196, 32, 83, 142, 20, 76, 13, 3, 95, 48, 67,
+			107, 6, 125, 50, 72, 51, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49, 67, 6, 115, 47, 15, 107, 6, 125, 50, 72,
+			51, 108, 0, 0, 0, 0, 6, 195, 8, 20, 133, 72, 0, 0, 0, 13, 3, 95, 49, 57, 50, 6, 109, 47, 12, 13, 50, 0, 0, 12,
+			3, 95, 49, 56, 6, 119, 47, 12, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 26, 148, 128, 8, 11, 3, 95, 49, 49, 6,
+			115, 55, 84, 108, 0, 0, 9, 3, 95, 49, 48, 47, 6, 110, 0, 0, 7, 196, 24, 244, 132, 36, 8, 14, 3, 95, 49, 51, 47, 51,
+			6, 115, 47, 12, 13, 50, 0, 0, 11, 3, 95, 49, 50, 47, 6, 121, 55, 84, 0, 0, 13, 3, 95, 49, 53, 83, 6, 115, 65, 47,
+			13, 50, 0, 0, 14, 3, 95, 49, 52, 83, 57, 6, 123, 51, 47, 13, 50, 0, 0, 13, 3, 95, 49, 55, 89, 6, 111, 47, 12, 13,
+			50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 115, 49, 89, 47, 13, 50, 0, 0, 0, 7, 196, 36, 227, 133, 56, 8, 6, 195, 61, 52,
+			192, 76, 12, 3, 95, 55, 88, 89, 6, 111, 47, 12, 110, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 111, 83, 6, 113, 51, 89, 47,
+			108, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 97, 99, 117, 120, 6, 49, 125, 47, 12, 0, 0, 12, 3, 95, 50, 111, 6, 119,
+			50, 72, 51, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 111, 47, 51, 6, 115, 72, 57, 108, 0, 0, 0, 6, 195,
+			10, 148, 128, 76, 0, 10, 3, 95, 50, 88, 95, 6, 126, 108, 0, 0, 10, 69, 72, 80, 68, 21, 32, 21, 0, 47, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 196, 16, 148, 211, 20, 76, 0, 0, 0, 0, 12, 3, 95, 53, 111, 83, 6, 115, 65, 47, 108, 0, 0, 0, 0,
+			12, 3, 95, 52, 88, 83, 6, 114, 51, 47, 110, 0, 0, 0, 6, 195, 32, 19, 147, 76, 0, 0, 10, 67, 56, 241, 64, 50, 123, 12,
+			108, 0, 0, 12, 3, 95, 54, 111, 91, 6, 115, 47, 12, 108, 0, 0, 0, 0, 12, 3, 95, 53, 88, 83, 6, 115, 65, 47, 110, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 89, 6, 115, 49, 89, 47, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 56, 88, 6, 121, 47, 12, 110, 0, 0, 0, 0, 6, 195, 85, 65, 78, 28, 0, 0, 0,
+			7, 195, 52, 81, 0, 72, 8, 0, 0, 12, 3, 95, 57, 88, 50, 6, 109, 47, 12, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 12, 3, 95, 52, 111, 83, 57, 6, 118, 51, 108, 0, 0, 0, 0, 6, 194, 36, 224, 72, 28, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 52, 83, 147, 8, 7, 195, 52, 83, 147, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 81, 0,
+			8, 0, 0, 0, 0, 0, 0, 0, 4, 193, 172, 43, 19, 4, 95, 99, 105, 114, 89, 6, 109, 51, 49, 125, 65, 83, 55, 115, 49, 89,
+			0, 0, 6, 195, 52, 147, 128, 76, 0, 0, 0, 14, 3, 95, 56, 111, 6, 121, 47, 12, 13, 50, 72, 108, 0, 19, 4, 95, 48, 77,
+			50, 65, 6, 109, 55, 55, 110, 38, 4, 124, 50, 13, 51, 0, 0, 0, 0, 13, 4, 95, 48, 77, 49, 47, 6, 126, 89, 13, 50, 0,
+			0, 0, 0, 0, 0, 6, 195, 61, 97, 82, 28, 0, 12, 67, 24, 244, 128, 83, 121, 34, 12, 0, 72, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 52, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 50, 88, 111, 95, 6, 126, 13, 50,
+			72, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 99, 101, 100,
+			89, 6, 117, 72, 109, 55, 55, 108, 0, 0, 0, 6, 194, 60, 112, 72, 8, 0, 0, 6, 195, 32, 21, 20, 72, 6, 195, 16, 149, 20,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 116, 222, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 76, 52, 133, 20, 224, 21, 0, 47, 7, 3, 95,
+			195, 165, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196,
+			16, 84, 133, 76, 76, 0, 0, 0, 7, 195, 52, 245, 0, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			14, 4, 95, 103, 114, 118, 81, 51, 6, 120, 84, 110, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 60, 208,
+			72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 44, 243, 64, 49, 121, 65, 0, 7, 195, 76, 243, 64, 72, 8, 0,
+			0, 0, 0, 6, 195, 16, 83, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 77, 224, 72, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 195, 36, 178, 197, 72, 0, 5, 194, 76, 144, 76, 0, 0, 7, 195, 76, 19, 84, 72, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 69, 60, 97, 137, 12, 80, 121, 83, 83, 110, 89, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 195, 80, 147, 0, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 76, 181, 76, 48, 85, 0, 76,
+			13, 2, 95, 34, 119, 50, 83, 114, 51, 91, 13, 55, 0, 0, 15, 2, 95, 33, 126, 47, 51, 124, 48, 89, 47, 115, 68, 50, 0, 0,
+			0, 14, 2, 95, 39, 119, 48, 123, 89, 47, 51, 6, 124, 83, 0, 0, 0, 0, 11, 2, 95, 36, 72, 121, 55, 55, 120, 51, 0, 0,
+			6, 195, 16, 83, 128, 76, 0, 11, 2, 95, 42, 89, 95, 35, 51, 50, 108, 0, 0, 21, 2, 95, 41, 48, 35, 51, 35, 68, 47, 6,
+			117, 89, 15, 91, 55, 6, 125, 47, 12, 0, 0, 24, 2, 95, 40, 48, 35, 51, 35, 68, 47, 6, 117, 89, 15, 71, 13, 57, 6, 111,
+			50, 50, 13, 51, 0, 0, 9, 67, 32, 84, 128, 107, 116, 51, 0, 0, 12, 2, 95, 46, 48, 125, 68, 49, 47, 126, 65, 0, 0, 10,
+			2, 95, 45, 89, 47, 51, 117, 49, 0, 0, 10, 2, 95, 44, 49, 121, 65, 65, 119, 0, 0, 9, 67, 16, 84, 128, 72, 116, 51, 0,
+			6, 195, 88, 20, 128, 72, 9, 2, 95, 51, 47, 51, 6, 117, 0, 0, 8, 2, 95, 50, 47, 6, 124, 0, 0, 8, 2, 95, 49, 6,
+			117, 50, 0, 0, 9, 2, 95, 48, 50, 6, 125, 55, 0, 0, 8, 2, 95, 55, 91, 6, 126, 0, 0, 10, 2, 95, 54, 89, 6, 115,
+			49, 89, 0, 0, 9, 2, 95, 53, 83, 6, 115, 65, 0, 0, 10, 2, 95, 52, 83, 6, 110, 51, 115, 0, 0, 14, 2, 95, 59, 89,
+			117, 65, 110, 49, 124, 55, 121, 50, 0, 0, 10, 2, 95, 58, 49, 124, 55, 121, 50, 0, 0, 8, 2, 95, 57, 50, 6, 110, 0, 0,
+			10, 2, 95, 56, 6, 121, 47, 12, 108, 0, 0, 18, 2, 95, 63, 89, 48, 113, 51, 91, 65, 121, 55, 89, 47, 115, 68, 50, 0, 0,
+			13, 2, 95, 62, 89, 47, 113, 51, 13, 15, 115, 50, 0, 0, 10, 2, 95, 61, 35, 51, 55, 110, 49, 0, 0, 14, 2, 95, 60, 65,
+			109, 50, 72, 51, 108, 15, 115, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 11, 70, 12, 243, 148, 36, 229, 69, 21, 0, 47, 6, 195, 88, 147, 0, 76, 6, 195, 16, 81, 192, 76, 28, 2, 95,
+			91, 84, 6, 115, 50, 89, 47, 51, 108, 15, 107, 6, 120, 49, 117, 48, 35, 51, 35, 68, 47, 6, 117, 89, 0, 0, 0, 0, 5, 194,
+			88, 144, 76, 0, 6, 195, 8, 18, 192, 8, 8, 197, 32, 83, 142, 21, 48, 76, 15, 2, 95, 95, 125, 50, 72, 35, 51, 91, 47, 51,
+			13, 49, 0, 0, 6, 195, 76, 149, 20, 76, 6, 195, 52, 149, 20, 76, 0, 25, 2, 95, 93, 107, 6, 131, 51, 108, 15, 107, 6, 120,
+			49, 117, 48, 35, 51, 35, 68, 47, 6, 117, 89, 0, 0, 22, 2, 95, 92, 121, 65, 84, 115, 50, 72, 47, 15, 89, 49, 51, 121, 89,
+			47, 51, 13, 49, 0, 0, 0, 0, 0, 23, 2, 95, 96, 6, 121, 65, 84, 115, 50, 72, 47, 15, 119, 48, 123, 89, 47, 51, 6, 124,
+			83, 0, 0, 6, 195, 33, 83, 128, 76, 0, 0, 0, 0, 0, 0, 6, 2, 95, 105, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 24, 148, 133, 24, 246, 0, 21, 0, 47, 0, 0, 10, 5, 95, 48,
+			97, 110, 100, 124, 81, 0, 0, 0, 0, 0, 0, 0, 7, 196, 24, 244, 129, 56, 8, 10, 4, 95, 35, 48, 57, 47, 120, 71, 0, 0,
+			0, 0, 6, 195, 8, 194, 82, 76, 0, 0, 0, 0, 0, 7, 195, 25, 32, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95,
+			35, 51, 50, 65, 115, 55, 55, 121, 65, 51, 124, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 89, 228, 128, 76, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 71, 52, 17, 206, 36, 98, 69, 72, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 67, 48, 241, 64, 55, 124, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 83,
+			142, 21, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 65, 224, 72, 28, 0, 0, 7, 196, 16, 85, 20, 20, 76, 0, 0, 0,
+			0, 7, 196, 32, 17, 4, 20, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			195, 164, 0, 2, 17, 67, 17, 67, 3, 115, 0, 3, 116, 0, 7, 6, 195, 165, 0, 2, 17, 67, 17, 67, 3, 121, 0, 3, 122, 0,
+			101, 3, 122, 108, 0, 7, 6, 195, 166, 0, 2, 17, 67, 17, 67, 3, 35, 0, 3, 116, 0, 2, 114, 3, 118, 0, 7, 6, 195, 182,
+			0, 2, 17, 67, 17, 67, 3, 113, 0, 3, 114, 0, 7, 6, 195, 184, 0, 2, 17, 67, 17, 67, 3, 113, 0, 3, 114, 0, 121, 3,
+			131, 0, 7, 6, 97, 0, 4, 2, 17, 67, 3, 35, 0, 101, 2, 17, 67, 17, 67, 0, 101, 3, 118, 0, 4, 2, 17, 67, 17, 67,
+			3, 119, 0, 2, 32, 0, 3, 120, 0, 97, 2, 17, 67, 17, 67, 3, 121, 0, 97, 3, 122, 0, 105, 3, 127, 0, 117, 3, 132, 0,
+			7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12, 0, 101, 8, 2, 21, 3, 71, 13, 0, 7, 6, 99, 0, 3, 49, 0, 99, 3, 49,
+			12, 0, 4, 2, 101, 105, 3, 89, 0, 2, 105, 0, 2, 121, 0, 2, 195, 184, 121, 0, 8, 2, 101, 0, 104, 3, 91, 0, 7, 6,
+			100, 0, 1, 114, 2, 32, 3, 0, 3, 72, 0, 100, 3, 72, 12, 0, 101, 116, 1, 10, 2, 32, 3, 72, 108, 0, 7, 6, 101, 0,
+			1, 10, 2, 17, 67, 32, 3, 13, 0, 116, 1, 10, 2, 32, 3, 13, 47, 0, 110, 1, 10, 2, 32, 3, 13, 50, 0, 110, 115, 1,
+			10, 2, 32, 3, 13, 50, 89, 0, 115, 1, 10, 2, 32, 3, 13, 89, 0, 2, 114, 17, 67, 3, 35, 0, 1, 10, 2, 32, 3, 108,
+			0, 4, 1, 29, 2, 109, 32, 3, 115, 0, 2, 17, 67, 17, 67, 0, 110, 101, 1, 10, 2, 32, 3, 115, 50, 108, 0, 3, 117, 0,
+			105, 3, 128, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 101, 105, 3, 57, 0, 2, 105, 0, 2, 121, 0, 2, 195,
+			184, 121, 0, 106, 0, 2, 110, 3, 68, 0, 3, 81, 0, 103, 3, 81, 12, 0, 7, 6, 104, 0, 106, 3, 57, 0, 118, 3, 84, 0,
+			3, 107, 0, 7, 6, 105, 0, 4, 2, 17, 67, 17, 67, 3, 109, 0, 103, 1, 10, 2, 32, 0, 3, 110, 0, 7, 6, 106, 0, 3,
+			57, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3, 49, 12, 0, 4, 2, 101, 105, 3, 101, 0, 2, 105, 0, 2, 121, 0, 2, 195, 184,
+			121, 0, 106, 0, 7, 6, 108, 0, 4, 3, 55, 0, 108, 2, 25, 0, 100, 3, 55, 55, 0, 106, 3, 57, 0, 7, 6, 109, 0, 4,
+			3, 65, 0, 109, 2, 25, 0, 7, 6, 110, 0, 4, 3, 50, 0, 110, 2, 25, 0, 100, 3, 50, 50, 0, 4, 2, 107, 3, 68, 0,
+			103, 0, 7, 6, 111, 0, 2, 17, 67, 17, 67, 3, 121, 0, 101, 3, 121, 108, 0, 4, 2, 110, 100, 3, 123, 0, 2, 114, 116, 0,
+			2, 115, 116, 0, 4, 3, 124, 0, 1, 98, 2, 114, 100, 0, 101, 1, 98, 21, 2, 32, 0, 105, 3, 129, 0, 7, 6, 112, 0, 3,
+			48, 0, 112, 3, 48, 12, 0, 7, 6, 113, 0, 3, 49, 0, 113, 3, 49, 12, 0, 117, 3, 49, 58, 0, 7, 6, 114, 0, 3, 51,
+			0, 115, 2, 32, 3, 91, 0, 7, 6, 115, 0, 4, 3, 89, 0, 1, 17, 65, 2, 108, 17, 65, 0, 115, 2, 32, 0, 115, 3, 89,
+			89, 0, 4, 1, 114, 3, 91, 0, 2, 108, 0, 99, 104, 0, 106, 0, 107, 2, 101, 105, 0, 107, 2, 105, 0, 107, 2, 121, 0, 107,
+			2, 195, 184, 121, 0, 107, 106, 0, 7, 6, 116, 0, 3, 47, 0, 116, 3, 47, 12, 0, 105, 2, 111, 110, 3, 91, 0, 106, 3, 95,
+			0, 7, 6, 117, 0, 2, 17, 67, 17, 67, 3, 125, 0, 3, 126, 0, 105, 3, 130, 0, 7, 6, 118, 0, 4, 3, 84, 0, 118, 2,
+			32, 0, 7, 6, 119, 0, 3, 84, 0, 7, 6, 120, 0, 2, 120, 3, 0, 3, 49, 89, 0, 8, 3, 89, 0, 7, 6, 121, 0, 2,
+			17, 67, 17, 67, 3, 111, 0, 3, 112, 0, 7, 6, 122, 0, 4, 122, 3, 88, 0, 122, 2, 32, 0, 3, 89, 0, 7, 6, 0, 4,
+			33, 1, 19, 3, 0, 46, 1, 46, 3, 0, 195, 169, 3, 6, 117, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 6, 126, 47, 51, 124,
+			48, 89, 47, 115, 68, 50, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 46,
+			3, 48, 125, 68, 49, 47, 126, 65, 0, 45, 8, 32, 2, 32, 15, 3, 65, 110, 50, 126, 89, 0, 36, 3, 72, 121, 55, 55, 120, 51,
+			0, 195, 188, 3, 112, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts49 = FileInMemory_createWithData (4178, reinterpret_cast<const char *> (&espeakdata_dicts49_data), 
+			U"espeak-1.48.04-source/espeak-data/no_dict", 
 			U"no");
-		Collection_addItem (me.peek(), espeakdata_dicts46.transfer());
+		my addItem_move (espeakdata_dicts49.move());
 
-		static unsigned char espeakdata_dicts47_data[3416] = {
-			0, 4, 0, 0, 113, 11, 0, 0, 0, 0, 0, 0, 0, 22, 4, 95, 56, 77, 49, 72, 37, 49, 6, 36, 47, 36, 89, 37, 89, 58,
-			6, 35, 12, 37, 0, 5, 65, 4, 35, 0, 0, 33, 4, 95, 56, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106,
-			6, 39, 12, 55, 39, 89, 37, 89, 58, 6, 35, 12, 37, 0, 0, 0, 0, 9, 65, 8, 71, 37, 12, 37, 12, 0, 0, 0, 0, 0,
-			9, 65, 12, 89, 37, 12, 37, 12, 0, 0, 0, 0, 7, 196, 100, 16, 78, 36, 8, 0, 9, 65, 16, 72, 37, 12, 37, 12, 0, 0,
-			0, 0, 0, 8, 65, 20, 37, 12, 37, 12, 0, 0, 0, 0, 0, 8, 65, 24, 36, 12, 83, 40, 0, 0, 0, 0, 0, 9, 197, 12,
-			129, 78, 100, 80, 72, 28, 6, 65, 28, 111, 13, 0, 0, 0, 0, 6, 195, 100, 83, 129, 76, 0, 8, 65, 32, 36, 37, 76, 37, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 8, 65, 40, 75, 6, 36, 37, 0, 0, 0, 0, 0, 7, 65, 44, 49, 36, 37, 0, 0, 0, 0,
-			0, 8, 65, 48, 36, 12, 55, 37, 0, 0, 0, 0, 0, 8, 65, 52, 6, 36, 65, 40, 0, 0, 0, 0, 0, 8, 65, 56, 6, 36,
-			50, 37, 0, 0, 0, 0, 0, 8, 65, 60, 39, 12, 39, 12, 0, 0, 0, 0, 8, 196, 104, 83, 153, 20, 72, 28, 8, 196, 100, 83,
-			153, 20, 72, 28, 8, 196, 92, 83, 153, 20, 72, 28, 0, 10, 65, 64, 48, 6, 37, 12, 37, 12, 0, 0, 0, 0, 0, 7, 65, 68,
-			49, 57, 40, 0, 0, 0, 0, 0, 7, 65, 72, 35, 53, 36, 0, 0, 0, 0, 0, 9, 65, 76, 6, 36, 12, 89, 37, 0, 0, 0,
-			0, 0, 10, 65, 80, 47, 6, 37, 12, 37, 12, 0, 0, 0, 6, 195, 92, 19, 192, 76, 0, 0, 8, 65, 84, 40, 12, 40, 12, 0,
-			0, 0, 0, 7, 195, 80, 242, 193, 72, 28, 0, 10, 65, 88, 84, 6, 37, 12, 37, 12, 0, 0, 0, 0, 0, 16, 69, 76, 82, 207,
-			48, 240, 89, 36, 49, 6, 108, 12, 55, 108, 0, 11, 65, 92, 72, 35, 71, 35, 55, 57, 40, 0, 0, 0, 0, 6, 195, 92, 18, 197,
-			76, 0, 17, 4, 95, 49, 77, 49, 23, 6, 89, 20, 6, 37, 49, 36, 47, 36, 0, 10, 65, 96, 36, 49, 6, 36, 89, 36, 0, 0,
-			25, 4, 95, 49, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 55, 36, 49, 106, 6, 39, 12, 55, 39, 0, 0, 0, 6, 195, 76,
-			148, 201, 76, 0, 8, 65, 100, 58, 6, 35, 37, 0, 0, 0, 0, 0, 10, 65, 104, 88, 6, 36, 12, 47, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 5, 80, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			195, 32, 17, 9, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 147, 15, 76,
-			0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 112, 86, 100, 240, 8, 0, 0, 0, 0, 19, 4, 95, 50, 77, 49, 72, 37, 49, 6, 36,
-			47, 36, 48, 6, 36, 72, 37, 0, 0, 30, 4, 95, 50, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39,
-			12, 55, 39, 48, 6, 36, 72, 37, 0, 0, 0, 7, 196, 4, 145, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 32, 21,
-			1, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 8, 144, 72, 28, 0, 0, 0, 0, 0, 6, 195, 32, 146, 64, 72, 0, 19,
-			4, 95, 4, 16, 20, 83, 36, 12, 106, 36, 55, 40, 6, 35, 12, 50, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95,
-			51, 77, 49, 72, 37, 49, 6, 36, 47, 36, 47, 6, 35, 12, 53, 39, 0, 0, 31, 4, 95, 51, 77, 50, 72, 37, 49, 6, 36, 47,
-			36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 47, 6, 35, 12, 53, 39, 0, 0, 0, 0, 0, 0, 0, 8, 196, 64, 147, 132,
-			36, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 37, 112, 80, 60, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 197, 89,
-			145, 78, 100, 80, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 53, 112, 64, 72, 28, 0, 0, 0, 13, 67, 80,
-			16, 129, 47, 10, 6, 35, 12, 71, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 45, 112, 76, 60, 8, 0, 0, 6,
-			194, 4, 240, 72, 8, 0, 0, 0, 9, 197, 53, 113, 78, 100, 80, 72, 28, 9, 197, 44, 21, 9, 44, 16, 72, 28, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 6, 195, 72, 83, 129, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 92, 19, 1, 44, 147, 137,
-			8, 0, 0, 0, 0, 0, 0, 17, 67, 41, 85, 64, 79, 4, 40, 12, 57, 35, 0, 8, 81, 121, 97, 32, 0, 8, 196, 80, 20, 129,
-			4, 76, 8, 10, 68, 80, 19, 135, 84, 91, 40, 0, 28, 0, 0, 0, 0, 0, 8, 197, 64, 19, 129, 64, 240, 8, 0, 0, 0, 0,
-			8, 197, 48, 18, 201, 56, 144, 8, 8, 197, 36, 225, 193, 92, 16, 8, 0, 6, 195, 100, 243, 129, 76, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 56, 224, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 133, 49, 5, 14, 25, 5, 72, 28,
-			0, 0, 6, 194, 24, 144, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 53, 77, 49, 72, 37, 49,
-			6, 36, 47, 36, 105, 6, 35, 12, 50, 39, 0, 0, 0, 0, 30, 4, 95, 53, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65,
-			35, 49, 106, 6, 39, 12, 55, 39, 105, 6, 35, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 51, 88, 65, 35, 89, 6, 39, 12, 65, 36,
-			47, 6, 35, 12, 53, 39, 0, 0, 14, 3, 95, 48, 67, 55, 36, 49, 106, 6, 39, 55, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 194, 48, 16, 72, 28, 0, 0, 19, 3, 95, 50, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 48, 36,
-			72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 51, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 47, 6, 35, 12, 53,
-			39, 0, 0, 0, 0, 21, 4, 95, 54, 77, 49, 72, 37, 49, 6, 36, 47, 36, 47, 89, 6, 36, 12, 55, 35, 0, 0, 7, 196, 45,
-			112, 89, 20, 8, 0, 0, 32, 4, 95, 54, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39,
-			47, 89, 6, 36, 12, 55, 35, 0, 0, 20, 3, 95, 55, 88, 65, 35, 89, 6, 39, 12, 65, 36, 91, 6, 40, 12, 48, 35, 0, 0,
-			19, 3, 95, 52, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95,
-			53, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 105, 6, 35, 12, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 88,
-			55, 36, 89, 6, 39, 12, 65, 36, 0, 0, 22, 3, 95, 54, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 47, 89, 6, 36, 12, 55,
-			35, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 50, 88, 65, 35, 89, 6, 39, 12, 65, 36, 48, 36, 72, 37, 0, 0, 20, 3,
-			95, 55, 67, 65, 35, 49, 106, 6, 39, 55, 39, 91, 6, 40, 12, 48, 35, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 73, 76,
-			0, 0, 22, 3, 95, 56, 67, 65, 35, 49, 106, 6, 39, 55, 39, 89, 37, 89, 58, 6, 35, 12, 37, 0, 0, 0, 0, 0, 0, 0,
-			0, 18, 3, 95, 52, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 42, 50, 36, 0, 0, 21, 3, 95, 57, 67, 65, 35, 49, 106, 6,
-			39, 55, 39, 89, 36, 67, 6, 35, 50, 36, 0, 0, 0, 0, 0, 0, 0, 6, 194, 56, 16, 72, 8, 0, 20, 3, 95, 53, 88, 65,
-			35, 89, 6, 39, 12, 65, 36, 105, 6, 35, 12, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 54, 88, 65, 35, 89,
-			6, 39, 12, 65, 36, 47, 89, 6, 36, 12, 55, 35, 0, 0, 0, 0, 0, 19, 4, 95, 55, 77, 49, 72, 37, 49, 6, 36, 47, 36,
-			91, 40, 12, 48, 35, 0, 0, 0, 0, 30, 4, 95, 55, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39,
-			12, 55, 39, 91, 40, 12, 48, 35, 0, 0, 10, 199, 36, 160, 80, 60, 181, 87, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 22, 3,
-			95, 56, 88, 65, 35, 89, 6, 39, 12, 65, 36, 89, 37, 89, 58, 6, 35, 12, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3,
-			95, 57, 88, 65, 35, 89, 6, 39, 12, 65, 36, 89, 36, 67, 6, 35, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 64, 16, 72, 28, 6, 194, 64,
-			16, 72, 28, 0, 0, 0, 17, 69, 72, 19, 15, 44, 16, 53, 2, 35, 55, 6, 108, 12, 49, 35, 0, 0, 0, 0, 13, 68, 80, 128,
-			66, 4, 47, 6, 35, 12, 71, 35, 0, 0, 9, 197, 45, 112, 77, 8, 16, 72, 8, 0, 0, 7, 195, 52, 147, 128, 72, 28, 0, 6,
-			195, 92, 83, 129, 76, 6, 195, 8, 243, 129, 72, 16, 4, 95, 48, 77, 52, 23, 71, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 0,
-			16, 4, 95, 48, 77, 51, 23, 65, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 16, 4, 95, 48, 77, 49, 6, 89, 20, 6, 37, 49,
-			36, 47, 36, 0, 0, 0, 0, 8, 196, 8, 16, 68, 4, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 195, 100, 18, 197, 76, 0, 0, 0, 0, 0, 0, 12, 4, 95, 3, 9, 18, 49, 6, 36, 83, 35,
-			0, 32, 4, 95, 57, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 89, 36, 67, 6, 35,
-			50, 36, 0, 0, 0, 0, 21, 4, 95, 57, 77, 49, 72, 37, 49, 6, 36, 47, 36, 89, 36, 67, 6, 35, 50, 36, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 92, 85, 197, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45,
-			84, 213, 16, 144, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 225, 193, 60, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 147, 1, 72, 8, 0, 0,
-			0, 0, 7, 195, 8, 19, 9, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 45, 85, 193, 72, 8, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 40, 20, 15, 8, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 45, 80,
-			78, 104, 144, 64, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 92, 16, 72, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 36, 160, 80, 60, 8, 0, 0, 0, 0, 7, 195, 89, 144, 64, 72, 28, 0, 0, 0,
-			0, 22, 67, 45, 112, 64, 49, 58, 35, 15, 49, 4, 40, 58, 35, 0, 8, 81, 107, 117, 119, 97, 32, 7, 195, 45, 112, 64, 72, 28,
-			7, 195, 45, 112, 64, 72, 28, 0, 7, 196, 44, 148, 200, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 195, 45, 112, 79, 8, 0, 0, 0, 0, 0, 0, 6, 195, 48, 83, 129, 76, 28, 4, 95, 52, 77, 50, 72, 37, 49, 6, 36,
-			47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 42, 50, 36, 0, 0, 17, 4, 95, 52, 77, 49, 72, 37, 49, 6, 36, 47,
-			36, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 95, 51, 47, 6, 35, 12, 53, 39, 0, 0, 10, 2, 95, 50, 48,
-			6, 36, 72, 37, 0, 0, 8, 2, 95, 49, 47, 36, 36, 0, 0, 13, 2, 95, 48, 55, 36, 83, 6, 36, 12, 55, 35, 0, 0, 11,
-			2, 95, 55, 91, 6, 40, 12, 48, 35, 0, 0, 12, 2, 95, 54, 47, 89, 6, 36, 12, 55, 35, 0, 0, 11, 2, 95, 53, 105, 6,
-			35, 12, 50, 39, 0, 0, 9, 2, 95, 52, 6, 42, 50, 36, 0, 0, 0, 0, 12, 2, 95, 57, 89, 36, 67, 6, 35, 50, 36, 0,
-			0, 6, 194, 100, 16, 72, 28, 13, 2, 95, 56, 89, 37, 89, 58, 6, 35, 12, 37, 0, 0, 0, 0, 8, 197, 57, 146, 78, 100, 144,
-			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 8, 160, 64, 84, 84, 79, 6, 35, 0,
-			6, 195, 36, 192, 64, 8, 7, 195, 12, 128, 64, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 104, 16, 72, 28,
-			0, 0, 0, 8, 197, 64, 19, 79, 40, 16, 8, 0, 6, 195, 104, 18, 197, 76, 0, 7, 195, 36, 194, 64, 76, 8, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 20, 201, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 92, 19, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 195, 33, 82, 207, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 112, 67, 32, 240, 8, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 4, 208, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36, 194, 75, 92, 19, 66, 4, 8, 0, 0, 9, 198, 8, 17, 1, 48, 22, 65, 8,
-			0, 7, 195, 44, 19, 65, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 195, 100, 86, 69, 76, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 4, 3, 35, 0, 2, 32, 0, 8,
-			2, 17, 67, 0, 8, 17, 67, 0, 2, 115, 3, 35, 12, 0, 7, 6, 98, 0, 3, 82, 0, 7, 6, 99, 0, 3, 49, 0, 104, 3,
-			76, 0, 7, 6, 100, 0, 3, 72, 0, 104, 3, 86, 0, 7, 6, 101, 0, 3, 36, 0, 1, 115, 3, 37, 0, 101, 3, 37, 38, 36,
-			12, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 104, 3, 100, 0, 3, 106, 0, 8, 107, 3, 111, 0, 7, 6, 104, 0, 108,
-			3, 105, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 105, 3, 37, 12, 0, 7, 6, 106, 0, 3, 79, 0, 7, 6, 107, 0, 3,
-			49, 0, 104, 3, 101, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 4, 1, 25, 2, 21, 21, 3, 23, 65, 0, 1, 25, 2,
-			98, 21, 21, 0, 1, 25, 2, 118, 21, 21, 0, 1, 25, 2, 119, 21, 21, 0, 4, 1, 25, 2, 17, 67, 3, 41, 0, 8, 0, 4,
-			3, 65, 0, 2, 17, 65, 0, 7, 6, 110, 0, 8, 3, 42, 0, 4, 8, 2, 103, 3, 43, 0, 8, 2, 103, 21, 21, 0, 8, 2,
-			107, 0, 8, 2, 107, 21, 21, 0, 4, 3, 50, 0, 2, 17, 65, 0, 2, 21, 21, 0, 4, 2, 99, 104, 3, 67, 0, 2, 106, 0,
-			121, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 103, 0, 103, 39, 0, 7, 6, 111, 0, 111, 3, 39, 12, 0, 3, 108, 0, 7, 6,
-			112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0, 3, 53, 0, 7, 6, 115, 0, 3, 89, 0, 2, 101, 3, 89,
-			20, 0, 101, 8, 116, 3, 89, 37, 12, 0, 7, 6, 116, 0, 3, 47, 0, 115, 101, 110, 3, 47, 89, 6, 36, 12, 50, 0, 104, 3,
-			47, 107, 0, 108, 3, 105, 0, 108, 104, 3, 110, 0, 7, 6, 117, 0, 3, 40, 0, 4, 8, 100, 3, 40, 12, 0, 117, 0, 7, 6,
-			118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122,
-			0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3, 0, 42, 42, 3, 0, 42, 1, 42, 42, 2, 32, 3, 24, 0, 37, 3,
-			35, 89, 37, 55, 37, 65, 37, 35, 0, 195, 180, 3, 39, 0, 42, 3, 67, 39, 47, 35, 0, 36, 3, 72, 39, 55, 35, 0, 197, 161,
-			8, 116, 3, 76, 0, 4, 197, 161, 3, 91, 0, 197, 161, 8, 112, 2, 104, 0, 195, 170, 3, 109, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts47 = FileInMemory_createWithData (3415, reinterpret_cast<const char *> (&espeakdata_dicts47_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/nso_dict", 
-			U"nso");
-		Collection_addItem (me.peek(), espeakdata_dicts47.transfer());
+		static unsigned char espeakdata_dicts50_data[4766] = {
+			0, 4, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4,
+			95, 100, 112, 116, 10, 72, 13, 89, 13, 65, 55, 6, 119, 10, 0, 0, 0, 0, 0, 0, 0, 12, 6, 224, 172, 162, 224, 172, 188, 107,
+			70, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 36, 140, 121, 55, 35, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 51, 57, 6, 109, 12, 50, 109, 76, 4, 35, 55, 37, 91, 0, 13, 3,
+			95, 50, 49, 6, 36, 49, 39, 4, 37, 91, 0, 0, 17, 3, 95, 51, 56, 6, 109, 12, 141, 109, 47, 4, 37, 34, 37, 91, 0, 13,
+			3, 95, 50, 48, 49, 6, 39, 70, 37, 4, 36, 0, 0, 12, 3, 95, 50, 51, 47, 6, 36, 58, 37, 91, 0, 0, 11, 3, 95, 50,
+			50, 71, 6, 35, 37, 91, 0, 0, 12, 3, 95, 50, 53, 48, 6, 109, 76, 37, 91, 0, 0, 12, 3, 95, 50, 52, 76, 6, 39, 71,
+			37, 91, 0, 0, 15, 3, 95, 50, 55, 91, 6, 109, 47, 36, 58, 4, 37, 91, 0, 0, 12, 3, 95, 50, 54, 149, 6, 109, 71, 37,
+			91, 0, 0, 16, 3, 95, 51, 49, 6, 36, 49, 109, 47, 4, 37, 34, 37, 91, 0, 0, 12, 3, 95, 51, 48, 47, 6, 37, 34, 37,
+			91, 0, 0, 13, 3, 95, 51, 51, 47, 6, 36, 58, 47, 37, 91, 0, 0, 13, 3, 95, 51, 50, 71, 6, 109, 12, 47, 37, 91, 0,
+			0, 17, 3, 95, 51, 53, 48, 6, 109, 4, 124, 47, 37, 34, 4, 37, 91, 0, 0, 16, 3, 95, 51, 52, 76, 6, 109, 40, 47, 4,
+			37, 34, 37, 91, 0, 0, 16, 3, 95, 51, 55, 91, 109, 6, 124, 47, 37, 34, 4, 37, 91, 0, 0, 13, 3, 95, 51, 54, 149, 6,
+			109, 12, 47, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 9, 4, 95, 224, 172, 144, 39, 57, 0, 0, 8, 4, 95, 224, 172, 147, 39,
+			0, 0, 0, 0, 0, 8, 4, 95, 224, 172, 143, 36, 0, 0, 0, 0, 0, 0, 15, 3, 95, 55, 57, 6, 109, 12, 50, 35, 4, 109,
+			91, 37, 0, 15, 3, 95, 54, 49, 6, 36, 49, 109, 91, 4, 109, 141, 37, 0, 0, 18, 3, 95, 55, 56, 6, 109, 12, 141, 6, 109,
+			89, 47, 109, 34, 4, 37, 0, 13, 3, 95, 54, 48, 91, 6, 35, 141, 37, 4, 36, 0, 0, 11, 3, 95, 48, 67, 91, 6, 109, 107,
+			39, 0, 15, 3, 95, 54, 51, 47, 6, 36, 58, 91, 109, 141, 4, 37, 0, 0, 14, 3, 95, 54, 50, 71, 6, 35, 91, 109, 141, 4,
+			37, 0, 0, 15, 3, 95, 54, 53, 48, 109, 6, 130, 91, 109, 141, 4, 37, 0, 0, 15, 3, 95, 54, 52, 76, 6, 109, 40, 91, 4,
+			109, 141, 37, 0, 0, 17, 3, 95, 54, 55, 91, 6, 109, 12, 47, 109, 91, 4, 109, 141, 37, 0, 0, 15, 3, 95, 54, 54, 149, 6,
+			109, 12, 91, 109, 141, 4, 37, 0, 0, 17, 3, 95, 55, 49, 36, 49, 6, 109, 12, 89, 47, 109, 34, 4, 37, 0, 0, 15, 3, 95,
+			55, 48, 91, 6, 109, 12, 47, 40, 34, 4, 37, 0, 0, 16, 3, 95, 55, 51, 47, 6, 36, 58, 89, 47, 109, 34, 4, 37, 0, 0,
+			15, 3, 95, 55, 50, 71, 6, 35, 89, 47, 109, 34, 4, 37, 0, 0, 18, 3, 95, 55, 53, 48, 109, 50, 76, 6, 109, 89, 47, 109,
+			34, 4, 37, 0, 0, 16, 3, 95, 55, 52, 76, 109, 6, 40, 89, 47, 109, 34, 4, 37, 0, 0, 19, 3, 95, 55, 55, 91, 6, 109,
+			12, 47, 6, 109, 89, 47, 109, 34, 4, 37, 0, 0, 16, 3, 95, 55, 54, 149, 109, 6, 109, 89, 47, 109, 34, 4, 37, 0, 0, 14,
+			3, 95, 49, 57, 6, 40, 50, 36, 58, 4, 37, 91, 0, 0, 14, 3, 95, 49, 56, 6, 109, 12, 141, 109, 16, 4, 121, 0, 0, 0,
+			0, 0, 0, 0, 0, 17, 3, 95, 50, 57, 6, 109, 12, 50, 109, 47, 4, 37, 34, 37, 91, 0, 13, 3, 95, 49, 49, 6, 36, 81,
+			35, 16, 12, 121, 0, 0, 14, 3, 95, 50, 56, 6, 109, 141, 36, 58, 4, 37, 91, 0, 11, 3, 95, 49, 48, 72, 6, 39, 91, 121,
+			0, 0, 12, 3, 95, 49, 51, 47, 6, 36, 58, 34, 121, 0, 0, 11, 3, 95, 49, 50, 71, 6, 35, 16, 121, 0, 0, 15, 3, 95,
+			49, 53, 48, 6, 109, 50, 72, 109, 16, 6, 121, 0, 0, 13, 3, 95, 49, 52, 76, 6, 121, 40, 72, 6, 121, 0, 0, 14, 3, 95,
+			49, 55, 91, 6, 109, 47, 109, 16, 4, 121, 0, 0, 14, 3, 95, 49, 54, 91, 6, 39, 107, 109, 45, 6, 121, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 15, 3, 95, 52, 57, 109, 12, 50, 6, 109, 50, 76, 35, 91, 0, 0, 11, 3, 224, 165, 164, 72, 109, 66, 140,
+			109, 0, 19, 3, 95, 52, 56, 6, 109, 12, 141, 6, 109, 76, 4, 35, 45, 4, 37, 91, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,
+			95, 53, 57, 6, 109, 12, 50, 109, 91, 6, 109, 141, 37, 0, 17, 3, 95, 52, 49, 6, 36, 49, 109, 76, 4, 35, 45, 4, 37, 91,
+			0, 0, 15, 3, 95, 53, 56, 6, 109, 12, 141, 35, 71, 4, 109, 50, 0, 13, 3, 95, 52, 48, 76, 6, 35, 45, 4, 37, 91, 0,
+			0, 18, 3, 95, 52, 51, 47, 6, 36, 58, 57, 109, 4, 35, 45, 4, 37, 91, 0, 0, 17, 3, 95, 52, 50, 71, 6, 109, 57, 109,
+			4, 35, 45, 4, 37, 91, 0, 0, 16, 3, 95, 52, 53, 48, 109, 6, 124, 76, 35, 45, 4, 37, 91, 0, 0, 17, 3, 95, 52, 52,
+			76, 6, 109, 40, 34, 4, 35, 45, 4, 37, 91, 0, 0, 18, 3, 95, 52, 55, 91, 6, 109, 47, 109, 76, 4, 35, 45, 4, 37, 91,
+			0, 0, 18, 3, 95, 52, 54, 149, 6, 109, 57, 109, 4, 35, 45, 4, 37, 91, 121, 0, 0, 18, 3, 95, 54, 57, 6, 109, 12, 50,
+			6, 109, 89, 47, 109, 34, 6, 37, 0, 14, 3, 95, 53, 49, 6, 36, 49, 35, 71, 4, 109, 50, 0, 0, 15, 3, 95, 54, 56, 6,
+			109, 70, 109, 91, 4, 109, 141, 37, 0, 13, 3, 95, 53, 48, 48, 6, 109, 12, 76, 35, 91, 0, 0, 13, 3, 95, 53, 51, 47, 6,
+			36, 58, 48, 109, 50, 0, 0, 11, 3, 95, 53, 50, 71, 6, 35, 40, 50, 0, 0, 17, 3, 95, 53, 53, 48, 6, 109, 12, 50, 76,
+			35, 71, 4, 109, 50, 0, 0, 15, 3, 95, 53, 52, 76, 6, 109, 12, 40, 71, 4, 109, 50, 0, 0, 15, 3, 95, 53, 55, 91, 6,
+			109, 47, 35, 71, 4, 109, 50, 0, 0, 13, 3, 95, 53, 54, 149, 6, 109, 12, 48, 109, 50, 0, 0, 15, 3, 224, 173, 141, 6, 107,
+			109, 55, 6, 109, 50, 47, 121, 0, 7, 3, 224, 172, 133, 121, 0, 0, 12, 3, 224, 173, 140, 6, 39, 58, 49, 35, 34, 0, 0, 14,
+			3, 224, 172, 135, 107, 34, 121, 91, 12, 39, 6, 37, 0, 0, 7, 3, 224, 172, 134, 35, 0, 0, 18, 3, 224, 172, 129, 76, 6, 121,
+			50, 72, 34, 39, 71, 37, 50, 72, 40, 0, 0, 12, 3, 224, 173, 136, 6, 39, 57, 49, 35, 34, 0, 0, 14, 3, 224, 172, 131, 71,
+			6, 37, 91, 121, 34, 81, 39, 0, 11, 3, 224, 173, 139, 6, 39, 49, 35, 34, 0, 0, 14, 3, 224, 172, 130, 6, 121, 50, 40, 91,
+			91, 121, 34, 0, 0, 17, 3, 95, 56, 57, 6, 109, 12, 50, 35, 50, 4, 109, 71, 36, 58, 0, 0, 15, 3, 95, 56, 56, 6, 109,
+			12, 141, 35, 4, 109, 91, 37, 0, 0, 11, 3, 224, 173, 135, 6, 36, 49, 35, 34, 0, 0, 0, 16, 3, 224, 173, 129, 107, 34, 121,
+			91, 12, 39, 40, 49, 35, 34, 0, 0, 15, 3, 224, 173, 128, 72, 6, 112, 34, 146, 37, 49, 35, 34, 0, 0, 12, 3, 224, 173, 131,
+			34, 6, 37, 49, 35, 34, 0, 0, 16, 3, 224, 173, 130, 72, 6, 112, 34, 146, 6, 40, 49, 35, 34, 0, 0, 18, 3, 95, 57, 57,
+			6, 109, 12, 50, 6, 36, 58, 91, 109, 47, 4, 39, 0, 15, 3, 95, 56, 49, 6, 36, 49, 35, 4, 109, 12, 91, 37, 0, 0, 27,
+			3, 95, 57, 56, 6, 109, 12, 141, 35, 50, 4, 109, 71, 36, 58, 109, 50, 6, 36, 58, 91, 109, 47, 4, 39, 0, 12, 3, 95, 56,
+			48, 6, 109, 12, 4, 91, 37, 0, 0, 18, 3, 95, 56, 51, 47, 6, 36, 58, 57, 109, 4, 35, 109, 91, 4, 37, 0, 0, 17, 3,
+			95, 56, 50, 71, 6, 109, 57, 109, 4, 35, 109, 91, 4, 37, 0, 0, 17, 3, 95, 56, 53, 48, 6, 109, 12, 50, 76, 35, 4, 109,
+			91, 37, 0, 0, 18, 3, 95, 56, 52, 76, 6, 109, 12, 40, 34, 4, 35, 109, 91, 4, 37, 0, 0, 15, 3, 95, 56, 55, 91, 6,
+			109, 47, 35, 4, 109, 91, 37, 0, 0, 17, 3, 95, 56, 54, 149, 6, 109, 57, 109, 4, 35, 109, 91, 4, 37, 0, 0, 16, 3, 95,
+			57, 49, 6, 36, 49, 35, 50, 4, 109, 71, 36, 58, 0, 0, 12, 3, 95, 57, 48, 50, 6, 109, 71, 36, 58, 0, 0, 20, 3, 95,
+			57, 51, 47, 6, 36, 58, 57, 109, 4, 35, 50, 109, 71, 4, 36, 58, 0, 0, 20, 3, 95, 57, 50, 71, 6, 109, 12, 57, 109, 4,
+			35, 50, 109, 71, 4, 36, 58, 0, 0, 18, 3, 95, 57, 53, 48, 6, 109, 50, 76, 35, 50, 4, 109, 71, 36, 58, 0, 0, 19, 3,
+			95, 57, 52, 76, 6, 109, 40, 34, 4, 35, 50, 109, 71, 4, 36, 58, 0, 0, 17, 3, 95, 57, 55, 91, 6, 109, 47, 35, 50, 4,
+			109, 71, 36, 58, 0, 0, 20, 3, 95, 57, 54, 149, 6, 109, 12, 57, 109, 4, 35, 50, 109, 71, 4, 36, 58, 0, 0, 8, 3, 224,
+			172, 165, 25, 121, 0, 0, 8, 3, 224, 172, 164, 47, 121, 0, 0, 8, 3, 224, 172, 167, 138, 121, 0, 0, 8, 3, 224, 172, 166, 72,
+			121, 0, 0, 8, 3, 224, 172, 161, 140, 121, 0, 0, 8, 3, 224, 172, 160, 141, 121, 0, 0, 9, 3, 224, 172, 163, 66, 6, 121, 0,
+			0, 8, 3, 224, 172, 162, 142, 121, 0, 0, 8, 3, 224, 172, 157, 144, 121, 0, 0, 8, 3, 224, 172, 156, 79, 121, 0, 0, 8, 3,
+			224, 172, 159, 139, 121, 0, 0, 10, 3, 224, 172, 158, 6, 37, 68, 130, 0, 0, 11, 3, 224, 172, 153, 6, 40, 68, 81, 130, 0, 0,
+			8, 3, 224, 172, 152, 146, 121, 0, 0, 9, 3, 224, 172, 155, 76, 107, 121, 0, 0, 8, 3, 224, 172, 154, 76, 121, 0, 0, 9, 3,
+			224, 173, 157, 107, 70, 121, 0, 8, 3, 224, 172, 149, 49, 121, 0, 0, 8, 3, 224, 172, 148, 39, 58, 0, 8, 3, 224, 173, 156, 70,
+			121, 0, 0, 8, 3, 224, 173, 159, 121, 57, 0, 8, 3, 224, 172, 151, 81, 121, 0, 0, 8, 3, 224, 172, 150, 145, 121, 0, 0, 0,
+			9, 3, 224, 172, 144, 39, 57, 0, 76, 0, 9, 3, 224, 172, 147, 39, 0, 76, 28, 0, 0, 0, 0, 8, 3, 224, 172, 143, 36, 0,
+			76, 0, 0, 14, 3, 224, 172, 137, 107, 34, 121, 91, 12, 39, 6, 40, 0, 0, 14, 3, 224, 172, 136, 72, 6, 112, 34, 146, 39, 6,
+			37, 0, 0, 8, 3, 224, 172, 139, 34, 37, 0, 0, 14, 3, 224, 172, 138, 72, 6, 112, 34, 146, 39, 6, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 11, 3, 224, 172, 190, 6, 35, 49, 35, 34, 0, 0, 17, 3, 224, 172, 191, 107, 34, 121, 91, 12, 39, 6, 37,
+			49, 35, 34, 0, 0, 12, 3, 224, 172, 188, 71, 6, 37, 50, 72, 40, 0, 0, 0, 0, 0, 16, 3, 224, 172, 184, 72, 4, 39, 50,
+			47, 36, 91, 12, 6, 121, 0, 0, 8, 3, 224, 172, 185, 107, 121, 0, 0, 17, 3, 224, 172, 182, 47, 4, 35, 55, 36, 71, 39, 91,
+			12, 6, 121, 0, 0, 18, 3, 224, 172, 183, 65, 4, 40, 138, 36, 50, 12, 39, 91, 12, 6, 121, 0, 0, 0, 8, 3, 224, 172, 181,
+			84, 121, 0, 0, 8, 3, 224, 172, 178, 55, 121, 0, 0, 0, 8, 3, 224, 172, 176, 34, 121, 0, 0, 0, 8, 3, 224, 172, 174, 65,
+			121, 0, 0, 9, 3, 224, 172, 175, 75, 6, 121, 0, 0, 8, 3, 224, 172, 172, 71, 121, 0, 0, 8, 3, 224, 172, 173, 137, 121, 0,
+			12, 4, 95, 48, 77, 52, 6, 109, 34, 109, 71, 0, 0, 8, 3, 224, 172, 170, 48, 121, 0, 13, 4, 95, 48, 77, 53, 145, 6, 109,
+			34, 109, 71, 0, 0, 8, 3, 224, 172, 171, 83, 121, 0, 13, 4, 95, 48, 77, 50, 55, 6, 109, 145, 145, 121, 0, 0, 9, 3, 224,
+			172, 168, 50, 6, 121, 0, 12, 4, 95, 48, 77, 51, 49, 6, 39, 139, 37, 0, 0, 0, 15, 4, 95, 48, 77, 49, 107, 6, 109, 79,
+			35, 16, 4, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 172, 161, 224, 172, 188,
+			70, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 44, 49, 39, 65, 35, 0, 0, 10, 2, 95, 51, 47, 6, 37, 50, 37, 0, 0, 9,
+			2, 95, 50, 72, 6, 40, 37, 0, 0, 11, 2, 95, 49, 6, 36, 6, 49, 6, 39, 0, 0, 11, 2, 95, 48, 91, 6, 123, 50, 57,
+			14, 0, 0, 10, 2, 95, 55, 91, 6, 35, 47, 39, 0, 0, 8, 2, 95, 54, 149, 6, 39, 0, 0, 11, 2, 95, 53, 48, 6, 35,
+			50, 76, 121, 0, 0, 10, 2, 95, 52, 76, 6, 35, 34, 37, 0, 0, 0, 0, 9, 2, 95, 57, 50, 6, 109, 121, 0, 0, 9, 2,
+			95, 56, 6, 35, 141, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 20, 102, 11, 0, 0, 48, 0, 0, 0, 103, 11, 0, 0, 49, 0, 0, 0, 104, 11, 0, 0, 50, 0, 0, 0, 105, 11, 0, 0,
+			51, 0, 0, 0, 106, 11, 0, 0, 52, 0, 0, 0, 107, 11, 0, 0, 53, 0, 0, 0, 108, 11, 0, 0, 54, 0, 0, 0, 109, 11,
+			0, 0, 55, 0, 0, 0, 110, 11, 0, 0, 56, 0, 0, 0, 111, 11, 0, 0, 57, 0, 0, 0, 33, 11, 60, 11, 92, 11, 0, 0,
+			34, 11, 60, 11, 93, 11, 0, 0, 0, 0, 0, 0, 6, 1, 58, 0, 2, 17, 66, 3, 84, 0, 3, 84, 109, 0, 7, 6, 1, 2,
+			0, 1, 17, 67, 3, 130, 0, 7, 6, 1, 3, 0, 4, 1, 17, 65, 3, 68, 0, 1, 17, 67, 0, 7, 6, 1, 4, 0, 3, 0,
+			2, 32, 3, 108, 0, 7, 6, 1, 6, 0, 3, 109, 0, 224, 172, 129, 3, 130, 0, 7, 6, 1, 7, 0, 3, 35, 0, 224, 172, 129,
+			3, 128, 0, 7, 6, 1, 8, 0, 3, 37, 0, 224, 172, 129, 3, 124, 0, 7, 6, 1, 9, 0, 3, 37, 0, 224, 172, 129, 3, 124,
+			0, 7, 6, 1, 10, 0, 3, 40, 0, 224, 172, 129, 3, 133, 0, 7, 6, 1, 11, 0, 3, 123, 0, 224, 172, 129, 3, 133, 0, 7,
+			6, 1, 12, 0, 3, 34, 40, 0, 224, 172, 129, 3, 34, 133, 0, 7, 6, 1, 13, 0, 3, 45, 34, 6, 37, 0, 7, 6, 1, 16,
+			0, 3, 36, 0, 224, 172, 129, 3, 126, 0, 7, 6, 1, 17, 0, 3, 39, 57, 0, 224, 172, 129, 3, 131, 57, 0, 7, 6, 1, 20,
+			0, 3, 39, 0, 224, 172, 129, 3, 131, 0, 7, 6, 1, 21, 0, 3, 39, 58, 0, 224, 172, 129, 3, 131, 58, 0, 7, 6, 1, 22,
+			0, 2, 17, 66, 3, 49, 0, 3, 49, 109, 0, 224, 173, 141, 224, 172, 183, 2, 17, 66, 3, 145, 145, 0, 224, 173, 141, 224, 172, 183,
+			3, 145, 145, 109, 0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 109, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81,
+			0, 3, 81, 109, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 109, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68,
+			0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 76, 0, 3, 76, 109, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 149,
+			0, 3, 149, 109, 0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 79, 0, 224, 173, 141, 224, 172, 172, 2, 17, 66, 0, 4, 3, 79,
+			109, 0, 224, 173, 141, 224, 172, 172, 0, 224, 173, 141, 224, 172, 158, 2, 17, 66, 3, 81, 81, 0, 224, 173, 141, 224, 172, 158, 3, 81,
+			81, 131, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 109, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 50, 0, 3,
+			50, 109, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 3, 139, 109, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 141, 0, 3,
+			141, 109, 0, 7, 6, 1, 34, 0, 224, 172, 188, 2, 17, 66, 3, 70, 0, 224, 172, 188, 3, 70, 109, 0, 2, 17, 66, 3, 140, 0,
+			3, 140, 109, 0, 7, 6, 1, 35, 0, 224, 172, 188, 2, 17, 66, 3, 107, 70, 0, 224, 172, 188, 3, 107, 70, 109, 0, 2, 17, 66,
+			3, 142, 0, 3, 142, 109, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 37, 0, 2, 17, 66,
+			3, 47, 0, 2, 32, 3, 47, 39, 0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 109, 0, 7, 6,
+			1, 39, 0, 2, 17, 66, 3, 72, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 109, 0, 7, 6,
+			1, 41, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 109, 0, 7, 6,
+			1, 44, 0, 2, 17, 66, 3, 136, 0, 3, 136, 109, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 109, 0, 7, 6,
+			1, 46, 0, 2, 17, 66, 3, 137, 0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 65, 0, 3, 65, 109, 0, 7, 6,
+			1, 48, 0, 224, 172, 188, 2, 17, 66, 3, 0, 1, 141, 173, 224, 2, 17, 66, 32, 3, 12, 0, 1, 141, 173, 224, 2, 32, 3, 12,
+			121, 0, 224, 172, 188, 8, 2, 17, 66, 3, 57, 0, 224, 172, 188, 3, 57, 109, 0, 2, 17, 66, 3, 75, 0, 3, 75, 109, 0, 4,
+			1, 141, 173, 224, 2, 17, 67, 3, 148, 0, 224, 172, 190, 1, 141, 173, 224, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 3,
+			34, 109, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 109, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 45, 0, 3,
+			45, 109, 0, 7, 6, 1, 54, 0, 2, 17, 66, 3, 58, 0, 3, 58, 109, 0, 7, 6, 1, 55, 0, 2, 224, 173, 141, 224, 172, 178,
+			3, 89, 0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 91, 0, 3, 91, 109, 0, 7, 6,
+			1, 57, 0, 4, 2, 224, 173, 141, 224, 172, 164, 3, 89, 0, 2, 224, 173, 141, 224, 172, 165, 0, 2, 224, 173, 141, 224, 172, 175, 0,
+			4, 2, 17, 66, 3, 91, 0, 224, 173, 141, 224, 172, 172, 8, 2, 17, 66, 0, 4, 3, 91, 109, 0, 224, 173, 141, 224, 172, 172, 8,
+			0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 2, 32, 3, 107, 39, 0, 3, 107, 109, 0, 7, 6, 1, 61, 0, 3, 0, 7,
+			6, 1, 63, 0, 1, 17, 67, 3, 35, 0, 224, 172, 129, 1, 17, 67, 3, 128, 0, 7, 6, 1, 64, 0, 1, 17, 67, 3, 37, 0,
+			224, 172, 129, 1, 17, 67, 3, 124, 0, 7, 6, 1, 65, 0, 1, 17, 67, 3, 37, 0, 224, 172, 129, 1, 17, 67, 3, 124, 0, 7,
+			6, 1, 66, 0, 1, 17, 67, 3, 40, 0, 224, 172, 129, 1, 17, 67, 3, 133, 0, 7, 6, 1, 67, 0, 1, 17, 67, 3, 123, 0,
+			224, 172, 129, 1, 17, 67, 3, 133, 12, 0, 7, 6, 1, 68, 0, 1, 17, 67, 3, 34, 6, 40, 0, 224, 172, 129, 1, 17, 67, 3,
+			34, 6, 133, 0, 7, 6, 1, 72, 0, 1, 17, 67, 3, 36, 0, 1, 17, 67, 3, 36, 58, 0, 224, 172, 129, 1, 17, 67, 3, 126,
+			0, 7, 6, 1, 73, 0, 1, 17, 67, 3, 39, 57, 0, 224, 172, 129, 1, 17, 67, 3, 131, 57, 0, 7, 6, 1, 76, 0, 1, 17,
+			67, 3, 39, 0, 224, 172, 129, 1, 17, 67, 3, 131, 0, 7, 6, 1, 77, 0, 1, 17, 67, 3, 39, 58, 0, 224, 172, 129, 1, 17,
+			67, 3, 131, 58, 0, 7, 6, 1, 78, 0, 1, 17, 67, 3, 0, 7, 6, 1, 79, 0, 3, 47, 0, 7, 6, 1, 93, 0, 2, 17,
+			66, 3, 70, 0, 3, 70, 109, 0, 7, 6, 1, 94, 0, 2, 17, 66, 3, 107, 70, 0, 2, 32, 3, 107, 70, 39, 0, 3, 107, 70,
+			109, 0, 7, 6, 1, 96, 0, 8, 2, 17, 66, 3, 57, 0, 2, 32, 3, 57, 39, 0, 3, 57, 109, 0, 7, 6, 0, 4, 224, 172,
+			139, 3, 44, 0, 224, 173, 131, 0, 224, 173, 132, 0, 224, 173, 160, 0, 4, 224, 172, 140, 3, 45, 0, 224, 173, 161, 0, 224, 173, 162,
+			0, 224, 173, 163, 0, 224, 165, 164, 3, 48, 6, 40, 34, 66, 6, 39, 109, 6, 37, 34, 35, 65, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts50 = FileInMemory_createWithData (4765, reinterpret_cast<const char *> (&espeakdata_dicts50_data), 
+			U"espeak-1.48.04-source/espeak-data/or_dict", 
+			U"or");
+		my addItem_move (espeakdata_dicts50.move());
 
-		static unsigned char espeakdata_dicts48_data[5257] = {
-			0, 4, 0, 0, 113, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 28, 18, 224, 168, 149, 224, 169, 128, 224, 168, 172, 224, 169, 139, 224, 168, 176, 224, 168, 161, 49, 6, 112, 71, 39,
-			51, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 24, 224, 168,
-			184, 224, 169, 139, 224, 168, 171, 224, 168, 159, 224, 168, 181, 224, 168, 191, 224, 168, 133, 224, 168, 176, 89, 6, 121, 83, 47, 58, 116, 51,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 4, 16, 20, 10, 72, 121, 138, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 51, 57, 122, 50, 13, 47, 6, 35, 55, 37,
-			0, 10, 3, 95, 50, 49, 113, 49, 12, 37, 0, 0, 13, 3, 95, 51, 56, 109, 142, 6, 109, 47, 12, 37, 0, 10, 3, 95, 50, 48,
-			84, 6, 37, 108, 0, 0, 10, 3, 95, 50, 51, 47, 6, 36, 37, 0, 0, 19, 4, 95, 224, 168, 135, 6, 113, 51, 113, 15, 89, 113,
-			107, 6, 35, 51, 37, 0, 10, 3, 95, 50, 50, 71, 6, 35, 37, 0, 0, 18, 4, 95, 224, 168, 134, 6, 116, 51, 109, 15, 49, 109,
-			50, 50, 6, 35, 0, 12, 3, 95, 50, 53, 48, 6, 109, 50, 145, 37, 0, 0, 11, 3, 95, 50, 52, 80, 6, 121, 84, 37, 0, 0,
-			12, 3, 95, 50, 55, 89, 13, 47, 6, 35, 37, 0, 0, 12, 3, 95, 50, 54, 144, 6, 109, 71, 12, 37, 0, 0, 13, 3, 95, 51,
-			49, 113, 49, 6, 109, 47, 12, 37, 0, 0, 10, 3, 95, 51, 48, 47, 6, 37, 108, 0, 0, 11, 3, 95, 51, 51, 47, 6, 36, 47,
-			37, 0, 0, 12, 3, 95, 51, 50, 71, 6, 109, 47, 12, 37, 0, 0, 11, 3, 95, 51, 53, 48, 6, 127, 47, 37, 0, 0, 11, 3,
-			95, 51, 52, 80, 6, 130, 47, 37, 0, 0, 11, 3, 95, 51, 55, 89, 6, 127, 47, 37, 0, 0, 12, 3, 95, 51, 54, 144, 6, 109,
-			47, 12, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 226, 130, 185, 34, 40, 48, 37, 0, 0, 0, 0,
-			0, 12, 3, 95, 55, 57, 122, 66, 6, 35, 89, 37, 0, 11, 3, 95, 54, 49, 113, 49, 6, 35, 142, 0, 0, 14, 3, 95, 55, 56,
-			109, 142, 6, 109, 47, 12, 13, 51, 0, 11, 3, 95, 54, 48, 89, 6, 109, 142, 12, 0, 0, 9, 3, 95, 48, 67, 89, 6, 121, 0,
-			13, 3, 95, 54, 51, 47, 13, 51, 6, 36, 142, 108, 0, 0, 11, 3, 95, 54, 50, 71, 6, 35, 142, 108, 0, 0, 10, 3, 95, 54,
-			53, 48, 6, 127, 142, 0, 0, 11, 3, 95, 54, 52, 80, 6, 121, 142, 108, 0, 0, 14, 3, 95, 54, 55, 89, 13, 47, 6, 35, 108,
-			13, 142, 0, 0, 11, 3, 95, 54, 54, 144, 113, 6, 35, 142, 0, 0, 15, 3, 95, 55, 49, 113, 49, 108, 6, 109, 47, 12, 13, 51,
-			0, 0, 11, 3, 224, 165, 132, 35, 72, 72, 35, 49, 0, 13, 3, 95, 55, 48, 89, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95,
-			55, 51, 47, 13, 108, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 50, 71, 13, 108, 6, 109, 47, 12, 13, 51, 0, 0, 16,
-			3, 95, 55, 53, 48, 13, 50, 79, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 52, 80, 121, 108, 6, 109, 47, 12, 13, 51,
-			0, 0, 15, 3, 95, 55, 55, 89, 13, 47, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 54, 144, 113, 108, 6, 109, 47, 12,
-			13, 51, 0, 0, 10, 3, 95, 49, 57, 6, 122, 50, 37, 0, 0, 12, 3, 95, 49, 56, 109, 142, 6, 35, 51, 128, 0, 0, 19, 4,
-			95, 224, 168, 148, 6, 116, 51, 109, 15, 49, 109, 50, 121, 51, 6, 35, 0, 0, 0, 0, 0, 20, 4, 95, 224, 168, 144, 6, 116, 51,
-			109, 15, 72, 122, 55, 6, 35, 84, 35, 65, 0, 0, 17, 4, 95, 224, 168, 147, 6, 122, 51, 109, 15, 107, 39, 51, 6, 35, 0, 0,
-			13, 3, 95, 50, 57, 122, 50, 6, 109, 47, 12, 37, 0, 12, 3, 95, 49, 49, 81, 113, 6, 35, 51, 128, 0, 0, 11, 3, 95, 50,
-			56, 109, 142, 6, 35, 37, 0, 10, 3, 95, 49, 48, 72, 6, 109, 89, 0, 0, 11, 3, 95, 49, 51, 47, 6, 36, 51, 128, 0, 0,
-			18, 4, 95, 224, 168, 143, 6, 113, 51, 113, 15, 55, 6, 35, 84, 35, 65, 0, 11, 3, 95, 49, 50, 71, 6, 35, 51, 128, 0, 0,
-			14, 3, 95, 49, 53, 48, 6, 109, 50, 72, 13, 51, 128, 0, 0, 18, 4, 95, 224, 168, 137, 6, 122, 51, 109, 15, 6, 121, 50, 49,
-			35, 51, 0, 11, 3, 95, 49, 52, 80, 6, 121, 72, 128, 0, 0, 19, 4, 95, 224, 168, 136, 6, 113, 51, 113, 15, 71, 113, 107, 6,
-			35, 51, 37, 0, 13, 3, 95, 49, 55, 89, 13, 47, 6, 35, 51, 128, 0, 0, 11, 3, 95, 49, 54, 89, 6, 39, 62, 128, 0, 0,
-			20, 12, 224, 168, 136, 224, 168, 174, 224, 169, 135, 224, 168, 178, 6, 112, 65, 150, 55, 0, 21, 4, 95, 224, 168, 138, 6, 122, 51, 109,
-			15, 72, 122, 55, 6, 116, 50, 49, 35, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 57, 6, 122, 66, 125, 79, 35,
-			0, 0, 12, 3, 224, 165, 164, 141, 6, 109, 50, 141, 37, 0, 15, 3, 95, 52, 56, 109, 142, 12, 13, 47, 6, 35, 55, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 11, 3, 95, 53, 57, 122, 66, 6, 35, 142, 0, 14, 3, 95, 52, 49, 113, 49, 13, 47, 6, 35, 55, 37,
-			0, 0, 15, 3, 95, 53, 56, 6, 109, 142, 12, 13, 84, 125, 79, 35, 0, 11, 3, 95, 52, 48, 80, 6, 35, 55, 37, 0, 0, 15,
-			3, 95, 52, 51, 47, 13, 51, 13, 47, 6, 35, 55, 37, 0, 0, 13, 3, 95, 52, 50, 71, 13, 47, 6, 35, 55, 37, 0, 0, 16,
-			3, 95, 52, 53, 48, 13, 50, 79, 13, 47, 6, 35, 55, 37, 0, 0, 13, 3, 95, 52, 52, 80, 121, 47, 6, 35, 55, 37, 0, 0,
-			14, 3, 95, 52, 55, 89, 13, 50, 47, 6, 35, 55, 37, 0, 0, 12, 3, 95, 52, 54, 144, 113, 6, 35, 55, 37, 0, 0, 14, 3,
-			95, 54, 57, 122, 66, 6, 109, 47, 12, 13, 51, 0, 14, 3, 95, 53, 49, 6, 113, 49, 13, 84, 125, 79, 35, 0, 0, 12, 3, 95,
-			54, 56, 109, 142, 12, 6, 35, 142, 0, 13, 3, 95, 53, 48, 48, 13, 50, 79, 6, 35, 108, 0, 0, 15, 3, 95, 53, 51, 47, 6,
-			109, 51, 13, 84, 125, 79, 35, 0, 0, 13, 3, 95, 53, 50, 71, 6, 109, 84, 125, 79, 35, 0, 0, 15, 3, 95, 53, 53, 48, 6,
-			109, 80, 13, 84, 125, 79, 35, 0, 0, 13, 3, 95, 53, 52, 80, 6, 109, 51, 125, 79, 35, 0, 0, 15, 3, 95, 53, 55, 89, 6,
-			109, 47, 13, 84, 125, 79, 35, 0, 0, 13, 3, 95, 53, 54, 144, 6, 109, 48, 125, 79, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 15, 3, 95, 56, 57, 122, 66, 128, 50, 13, 84, 6, 36, 68, 0, 0, 12, 3, 95, 56, 56, 109, 142, 6, 35, 89, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 16, 3, 95, 57, 57, 50, 113, 51, 6, 109, 50, 50, 13, 84, 126, 0, 12, 3, 95, 56, 49, 113, 49, 6,
-			35, 89, 37, 0, 0, 14, 3, 95, 57, 56, 109, 142, 6, 35, 50, 13, 84, 126, 0, 11, 3, 95, 56, 48, 6, 109, 89, 89, 37, 0,
-			0, 14, 3, 95, 56, 51, 47, 13, 51, 13, 6, 35, 89, 37, 0, 0, 12, 3, 95, 56, 50, 71, 113, 6, 35, 89, 37, 0, 0, 14,
-			3, 95, 56, 53, 48, 13, 50, 79, 6, 35, 89, 37, 0, 0, 13, 3, 95, 56, 52, 80, 13, 51, 6, 35, 89, 37, 0, 0, 13, 3,
-			95, 56, 55, 89, 13, 47, 6, 35, 89, 37, 0, 0, 12, 3, 95, 56, 54, 144, 113, 6, 35, 89, 37, 0, 0, 16, 3, 95, 57, 49,
-			113, 49, 13, 6, 35, 50, 13, 84, 4, 126, 0, 0, 12, 3, 95, 57, 48, 50, 6, 109, 71, 12, 36, 0, 0, 16, 3, 95, 57, 51,
-			47, 13, 51, 13, 6, 35, 50, 13, 84, 126, 0, 0, 16, 3, 95, 57, 50, 71, 113, 38, 6, 35, 50, 13, 84, 4, 126, 0, 0, 15,
-			3, 95, 57, 53, 48, 13, 80, 6, 35, 50, 13, 84, 126, 0, 0, 15, 3, 95, 57, 52, 80, 13, 51, 6, 35, 50, 13, 84, 126, 0,
-			0, 15, 3, 95, 57, 55, 89, 13, 47, 6, 35, 50, 13, 84, 126, 0, 0, 14, 3, 95, 57, 54, 144, 113, 6, 35, 50, 13, 84, 126,
-			0, 0, 10, 3, 224, 168, 133, 6, 116, 51, 109, 0, 12, 3, 224, 169, 141, 107, 109, 55, 109, 50, 47, 0, 0, 13, 3, 224, 169, 140,
-			49, 109, 50, 6, 121, 51, 35, 0, 0, 0, 0, 0, 13, 3, 224, 169, 136, 72, 13, 55, 6, 35, 84, 128, 0, 0, 11, 3, 224, 169,
-			139, 107, 39, 51, 6, 35, 0, 12, 3, 224, 168, 131, 84, 37, 89, 35, 51, 81, 0, 0, 12, 3, 224, 168, 130, 71, 113, 50, 72, 6,
-			37, 0, 0, 0, 0, 11, 3, 224, 169, 135, 55, 6, 35, 84, 128, 0, 0, 0, 11, 3, 224, 169, 129, 121, 50, 49, 35, 51, 0, 0,
-			13, 3, 224, 169, 128, 71, 113, 107, 6, 35, 51, 37, 0, 0, 0, 15, 3, 224, 169, 130, 72, 122, 55, 6, 116, 50, 49, 35, 51, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 6, 109, 51, 13, 71, 0, 0, 13, 4, 95,
-			48, 77, 53, 146, 6, 109, 51, 13, 71, 0, 0, 12, 4, 95, 48, 77, 50, 55, 6, 109, 146, 12, 0, 0, 13, 4, 95, 48, 77, 51,
-			49, 6, 109, 51, 39, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 108, 13, 79, 6, 35, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			12, 3, 224, 168, 190, 49, 109, 50, 50, 6, 35, 0, 0, 13, 3, 224, 168, 191, 89, 113, 107, 6, 35, 51, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 224, 169, 178, 6, 113, 51, 113, 0, 0, 10, 3, 224, 169,
-			179, 6, 122, 51, 109, 0, 0, 12, 3, 224, 169, 176, 47, 113, 48, 48, 6, 37, 0, 0, 11, 3, 224, 169, 177, 109, 72, 72, 109, 49,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
-			18, 224, 168, 181, 224, 169, 136, 224, 168, 172, 224, 168, 170, 224, 169, 135, 224, 168, 156, 58, 6, 116, 71, 48, 150, 75, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 25, 15, 224, 168, 184, 224, 168, 176, 224, 168, 149, 224, 168, 190, 224, 168, 176, 89, 51, 13, 49, 6, 35, 51,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 29, 18, 224, 168, 184, 224, 168, 176, 224, 168, 149, 224, 168, 190, 224, 168, 176, 224, 169, 128, 89, 51, 13, 49, 6, 35, 51, 37,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 6, 125, 50, 0, 0, 8, 2, 95, 50, 72,
-			6, 39, 0, 0, 9, 2, 95, 49, 6, 113, 49, 12, 0, 0, 10, 2, 95, 48, 88, 6, 37, 51, 39, 0, 0, 10, 2, 95, 55, 89,
-			6, 109, 47, 12, 0, 0, 8, 2, 95, 54, 144, 6, 36, 0, 0, 10, 2, 95, 53, 48, 6, 109, 50, 79, 0, 0, 9, 2, 95, 52,
-			80, 6, 35, 51, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 130, 0, 0, 9, 2, 95, 56, 6, 109, 142, 12, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 102, 10, 0, 0, 48, 0, 0, 0,
-			103, 10, 0, 0, 49, 0, 0, 0, 104, 10, 0, 0, 50, 0, 0, 0, 105, 10, 0, 0, 51, 0, 0, 0, 106, 10, 0, 0, 52, 0,
-			0, 0, 107, 10, 0, 0, 53, 0, 0, 0, 108, 10, 0, 0, 54, 0, 0, 0, 109, 10, 0, 0, 55, 0, 0, 0, 110, 10, 0, 0,
-			56, 0, 0, 0, 111, 10, 0, 0, 57, 0, 0, 0, 230, 10, 0, 0, 48, 0, 0, 0, 231, 10, 0, 0, 49, 0, 0, 0, 232, 10,
-			0, 0, 50, 0, 0, 0, 233, 10, 0, 0, 51, 0, 0, 0, 234, 10, 0, 0, 52, 0, 0, 0, 235, 10, 0, 0, 53, 0, 0, 0,
-			236, 10, 0, 0, 54, 0, 0, 0, 237, 10, 0, 0, 55, 0, 0, 0, 238, 10, 0, 0, 56, 0, 0, 0, 239, 10, 0, 0, 57, 0,
-			0, 0, 56, 10, 60, 10, 54, 10, 0, 0, 50, 10, 60, 10, 51, 10, 0, 0, 22, 10, 60, 10, 89, 10, 0, 0, 23, 10, 60, 10,
-			90, 10, 0, 0, 28, 10, 60, 10, 91, 10, 0, 0, 43, 10, 60, 10, 94, 10, 0, 0, 5, 10, 72, 10, 16, 10, 0, 0, 5, 10,
-			62, 10, 6, 10, 0, 0, 5, 10, 76, 10, 20, 10, 0, 0, 114, 10, 64, 10, 8, 10, 0, 0, 114, 10, 63, 10, 7, 10, 0, 0,
-			114, 10, 71, 10, 15, 10, 0, 0, 115, 10, 65, 10, 9, 10, 0, 0, 115, 10, 66, 10, 10, 10, 0, 0, 0, 0, 0, 0, 6, 1,
-			3, 0, 3, 68, 0, 7, 6, 1, 4, 0, 3, 107, 0, 7, 6, 1, 6, 0, 3, 4, 109, 0, 4, 224, 168, 130, 3, 129, 0, 224,
-			169, 176, 0, 7, 6, 1, 7, 0, 3, 35, 0, 4, 224, 168, 130, 3, 128, 0, 224, 169, 176, 0, 7, 6, 1, 8, 0, 3, 113, 0,
-			4, 224, 168, 130, 3, 125, 0, 224, 169, 176, 0, 7, 6, 1, 9, 0, 3, 37, 0, 4, 224, 168, 130, 3, 124, 0, 224, 169, 176, 0,
-			7, 6, 1, 10, 0, 3, 122, 0, 4, 224, 168, 130, 3, 132, 0, 224, 169, 176, 0, 7, 6, 1, 11, 0, 3, 40, 0, 4, 224, 168,
-			130, 3, 133, 0, 224, 169, 176, 0, 7, 6, 1, 16, 0, 3, 36, 0, 4, 224, 168, 130, 3, 126, 0, 224, 169, 176, 0, 7, 6, 1,
-			17, 0, 3, 116, 0, 4, 224, 168, 130, 3, 127, 0, 224, 169, 176, 0, 7, 6, 1, 20, 0, 3, 39, 0, 4, 224, 168, 130, 3, 131,
-			0, 224, 169, 176, 0, 7, 6, 1, 21, 0, 3, 121, 0, 4, 224, 168, 130, 3, 130, 0, 224, 169, 176, 0, 7, 6, 1, 22, 0, 4,
-			1, 21, 2, 32, 3, 49, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 49, 12, 0, 1, 177, 169, 224, 2, 32, 0,
-			1, 177, 169, 224, 3, 49, 12, 109, 0, 3, 49, 109, 0, 7, 6, 1, 23, 0, 4, 1, 21, 2, 32, 3, 146, 0, 2, 17, 66, 0,
-			4, 1, 177, 169, 224, 2, 17, 66, 3, 146, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 146, 12, 109, 0, 3, 146,
-			109, 0, 7, 6, 1, 24, 0, 4, 1, 21, 2, 32, 3, 81, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 81, 12,
-			0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 81, 12, 109, 0, 3, 81, 109, 0, 7, 6, 1, 25, 0, 8, 2, 17, 66,
-			3, 49, 149, 0, 8, 3, 49, 149, 109, 0, 4, 1, 21, 2, 32, 3, 147, 0, 2, 17, 66, 0, 3, 147, 109, 0, 7, 6, 1, 26,
-			0, 4, 1, 21, 2, 32, 3, 68, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 68, 12, 0, 1, 177, 169, 224, 2,
-			32, 0, 1, 177, 169, 224, 3, 68, 12, 109, 0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 4, 1, 21, 2, 32, 3, 80, 0, 2, 17,
-			66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 80, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 80, 12, 109, 0,
-			3, 80, 109, 0, 7, 6, 1, 28, 0, 4, 1, 21, 2, 32, 3, 144, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3,
-			144, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 144, 12, 109, 0, 3, 144, 109, 0, 7, 6, 1, 29, 0, 4, 1,
-			21, 2, 32, 3, 79, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 79, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1,
-			177, 169, 224, 3, 79, 12, 109, 0, 3, 79, 109, 0, 7, 6, 1, 30, 0, 8, 2, 17, 66, 3, 80, 149, 0, 8, 3, 80, 149, 109,
-			0, 4, 1, 21, 2, 32, 3, 145, 0, 2, 17, 66, 0, 3, 145, 109, 0, 7, 6, 1, 31, 0, 4, 1, 21, 2, 32, 3, 67, 0,
-			2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 67, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 67, 12,
-			109, 0, 3, 67, 109, 0, 7, 6, 1, 32, 0, 4, 1, 21, 2, 32, 3, 140, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17,
-			66, 3, 140, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 140, 12, 109, 0, 3, 140, 109, 0, 7, 6, 1, 33, 0,
-			4, 1, 21, 2, 32, 3, 142, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 142, 12, 0, 1, 177, 169, 224, 2, 32,
-			0, 1, 177, 169, 224, 3, 142, 12, 109, 0, 3, 142, 109, 0, 7, 6, 1, 34, 0, 4, 1, 21, 2, 32, 3, 141, 0, 2, 17, 66,
-			0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 141, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 141, 12, 109, 0, 3,
-			141, 109, 0, 7, 6, 1, 35, 0, 8, 2, 17, 66, 3, 140, 0, 8, 3, 140, 149, 109, 0, 4, 1, 21, 2, 32, 3, 143, 0, 2,
-			17, 66, 0, 3, 143, 109, 0, 7, 6, 1, 36, 0, 4, 1, 21, 2, 32, 3, 66, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2,
-			17, 66, 3, 66, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 66, 12, 109, 0, 3, 66, 109, 0, 7, 6, 1, 37,
-			0, 4, 1, 21, 2, 32, 3, 47, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 47, 12, 0, 1, 177, 169, 224, 2,
-			32, 0, 1, 177, 169, 224, 3, 47, 12, 109, 0, 3, 47, 109, 0, 7, 6, 1, 38, 0, 4, 1, 21, 2, 32, 3, 138, 0, 2, 17,
-			66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 138, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 138, 12, 109, 0,
-			3, 138, 109, 0, 7, 6, 1, 39, 0, 4, 1, 21, 2, 32, 3, 72, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3,
-			72, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 72, 12, 109, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 8, 2,
-			17, 66, 3, 47, 149, 0, 8, 3, 47, 149, 109, 0, 4, 1, 21, 2, 32, 3, 139, 0, 2, 17, 66, 0, 3, 139, 109, 0, 7, 6,
-			1, 41, 0, 4, 1, 21, 2, 32, 3, 50, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 50, 12, 0, 1, 177, 169,
-			224, 2, 32, 0, 1, 177, 169, 224, 3, 50, 12, 109, 0, 3, 50, 109, 0, 7, 6, 1, 43, 0, 4, 1, 21, 2, 32, 3, 48, 0,
-			2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 48, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 48, 12,
-			109, 0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 4, 1, 21, 2, 32, 3, 136, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17,
-			66, 3, 136, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 136, 12, 109, 0, 3, 136, 109, 0, 7, 6, 1, 45, 0,
-			4, 1, 21, 2, 32, 3, 71, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 71, 12, 0, 1, 177, 169, 224, 2, 32,
-			0, 1, 177, 169, 224, 3, 71, 12, 109, 0, 3, 71, 109, 0, 7, 6, 1, 46, 0, 8, 2, 17, 66, 3, 48, 149, 0, 8, 3, 48,
-			149, 109, 0, 4, 1, 21, 2, 32, 3, 137, 0, 2, 17, 66, 0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 4, 1, 21, 2, 32, 3,
-			65, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 65, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3,
-			65, 12, 109, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 4, 1, 21, 2, 32, 3, 57, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224,
-			2, 17, 66, 3, 57, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 57, 12, 109, 0, 3, 57, 109, 0, 7, 6, 1,
-			49, 0, 4, 1, 21, 2, 32, 3, 51, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 51, 12, 0, 1, 177, 169, 224,
-			2, 32, 0, 1, 177, 169, 224, 3, 51, 12, 109, 0, 3, 51, 109, 0, 7, 6, 1, 51, 0, 4, 1, 21, 2, 32, 3, 55, 0, 2,
-			17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 55, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 55, 12, 109,
-			0, 3, 55, 109, 0, 7, 6, 1, 52, 0, 4, 1, 21, 2, 32, 3, 62, 0, 2, 17, 66, 0, 3, 62, 109, 0, 7, 6, 1, 54,
-			0, 4, 1, 21, 2, 32, 3, 84, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 84, 12, 0, 1, 177, 169, 224, 2,
-			32, 0, 1, 177, 169, 224, 3, 84, 12, 109, 0, 3, 84, 109, 0, 7, 6, 1, 55, 0, 4, 1, 21, 2, 32, 3, 91, 0, 2, 17,
-			66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 91, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 91, 12, 109, 0,
-			3, 91, 109, 0, 7, 6, 1, 57, 0, 4, 1, 21, 2, 32, 3, 89, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3,
-			89, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 89, 12, 109, 0, 3, 89, 109, 0, 7, 6, 1, 58, 0, 4, 1,
-			21, 2, 32, 3, 108, 0, 2, 17, 66, 0, 3, 108, 109, 0, 7, 6, 1, 61, 0, 3, 0, 7, 6, 1, 63, 0, 3, 35, 0, 4,
-			224, 168, 130, 3, 128, 0, 224, 169, 176, 0, 7, 6, 1, 64, 0, 3, 113, 0, 4, 224, 168, 130, 3, 125, 0, 224, 169, 176, 0, 7,
-			6, 1, 65, 0, 3, 37, 0, 4, 224, 168, 130, 3, 124, 0, 224, 169, 176, 0, 7, 6, 1, 66, 0, 3, 122, 0, 4, 224, 168, 130,
-			3, 132, 0, 224, 169, 176, 0, 7, 6, 1, 67, 0, 3, 40, 0, 4, 224, 168, 130, 3, 133, 0, 224, 169, 176, 0, 7, 6, 1, 72,
-			0, 3, 36, 0, 4, 224, 168, 130, 3, 126, 0, 224, 169, 176, 0, 7, 6, 1, 73, 0, 3, 116, 0, 4, 224, 168, 130, 3, 127, 0,
-			224, 169, 176, 0, 7, 6, 1, 76, 0, 3, 39, 0, 4, 224, 168, 130, 3, 131, 0, 224, 169, 176, 0, 7, 6, 1, 77, 0, 3, 121,
-			0, 4, 224, 168, 130, 3, 130, 0, 224, 169, 176, 0, 7, 6, 1, 78, 0, 3, 0, 7, 6, 1, 90, 0, 4, 1, 21, 2, 32, 3,
-			101, 0, 2, 17, 66, 0, 3, 101, 109, 0, 7, 6, 1, 91, 0, 4, 1, 21, 2, 32, 3, 100, 0, 2, 17, 66, 0, 3, 100, 109,
-			0, 7, 6, 1, 92, 0, 4, 1, 21, 2, 32, 3, 88, 0, 2, 17, 66, 0, 3, 88, 109, 0, 7, 6, 1, 93, 0, 4, 1, 21,
-			2, 32, 3, 52, 0, 2, 17, 66, 0, 3, 52, 109, 0, 7, 6, 1, 95, 0, 4, 1, 21, 2, 32, 3, 83, 0, 2, 17, 66, 0,
-			3, 83, 109, 0, 7, 6, 1, 113, 0, 3, 50, 0, 7, 6, 1, 114, 0, 3, 0, 7, 6, 1, 115, 0, 3, 37, 0, 7, 6, 1,
-			116, 0, 3, 40, 0, 7, 6, 224, 171, 0, 160, 3, 44, 0, 7, 6, 0, 37, 3, 48, 109, 89, 116, 50, 47, 0, 36, 3, 72, 121,
-			55, 109, 51, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts48 = FileInMemory_createWithData (5256, reinterpret_cast<const char *> (&espeakdata_dicts48_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/pa_dict", 
+		static unsigned char espeakdata_dicts51_data[6173] = {
+			0, 4, 0, 0, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 168, 164, 224, 169, 136,
+			224, 168, 168, 224, 169, 130, 224, 169, 176, 72, 0, 0, 0, 21, 12, 224, 168, 172, 224, 169, 139, 224, 168, 176, 224, 168, 161, 98, 111, 97,
+			114, 100, 0, 29, 0, 0, 0, 16, 4, 95, 100, 112, 116, 10, 72, 13, 89, 13, 65, 55, 6, 119, 0, 0, 0, 16, 140, 224, 168, 172,
+			224, 168, 191, 224, 168, 168, 224, 168, 190, 72, 8, 15, 140, 224, 168, 134, 224, 168, 170, 224, 168, 166, 224, 168, 190, 72, 0, 12, 137, 224,
+			168, 181, 224, 168, 191, 224, 168, 154, 72, 0, 0, 12, 137, 224, 168, 168, 224, 169, 130, 224, 169, 176, 72, 12, 137, 224, 168, 164, 224, 169,
+			130, 224, 169, 176, 72, 12, 137, 224, 168, 164, 224, 169, 130, 224, 169, 176, 72, 0, 0, 30, 18, 224, 168, 149, 224, 169, 128, 224, 168, 172,
+			224, 169, 139, 224, 168, 176, 224, 168, 161, 107, 101, 121, 98, 111, 97, 114, 100, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 137, 224, 168, 164, 224, 169, 177, 224, 168, 149, 72, 13, 1, 37, 48, 51, 6, 109, 47, 113, 91, 13, 47, 0, 0, 0, 0, 0, 0,
+			9, 1, 42, 47, 6, 35, 51, 35, 0, 0, 10, 1, 43, 79, 6, 109, 40, 65, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			15, 140, 224, 168, 164, 224, 169, 135, 224, 168, 176, 224, 168, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 61, 71, 13, 51, 6,
+			35, 71, 13, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 168, 176, 224, 168, 185, 224, 169, 128, 72,
+			0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 168, 176, 224, 168, 185, 224, 169, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 184,
+			224, 168, 190, 224, 168, 161, 224, 169, 128, 72, 0, 0, 0, 0, 0, 0, 21, 146, 224, 168, 164, 224, 169, 129, 224, 168, 185, 224, 168, 190,
+			224, 168, 161, 224, 169, 128, 72, 0, 15, 140, 224, 168, 184, 224, 168, 190, 224, 168, 161, 224, 169, 135, 72, 0, 0, 0, 15, 140, 224, 168,
+			181, 224, 168, 191, 224, 169, 177, 224, 168, 154, 72, 0, 0, 0, 21, 146, 224, 168, 164, 224, 169, 129, 224, 168, 185, 224, 168, 190, 224, 168,
+			161, 224, 169, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 168, 134, 224, 168, 170, 224, 168, 168, 224, 169, 130, 224,
+			169, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 155, 224, 168, 137, 224, 168, 168, 224, 169, 141, 224, 168, 185, 224,
+			168, 190, 224, 168, 130, 224, 168, 168, 224, 169, 130, 224, 169, 176, 72, 9, 134, 224, 168, 137, 224, 168, 185, 72, 9, 134, 224, 168, 137, 224,
+			168, 185, 72, 30, 155, 224, 168, 135, 224, 168, 168, 224, 169, 141, 224, 168, 185, 224, 168, 190, 224, 168, 130, 224, 168, 168, 224, 169, 130, 224,
+			169, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 168, 176, 224, 168, 185, 224, 168, 190, 72, 0, 0, 0, 0, 9, 134, 224,
+			168, 135, 224, 168, 185, 72, 9, 134, 224, 168, 135, 224, 168, 185, 72, 0, 0, 0, 0, 0, 36, 24, 224, 168, 184, 224, 169, 139, 224, 168,
+			171, 224, 168, 159, 224, 168, 181, 224, 168, 191, 224, 168, 133, 224, 168, 176, 115, 111, 102, 116, 119, 97, 114, 101, 0, 29, 0, 0, 15, 140,
+			224, 168, 184, 224, 168, 190, 224, 168, 161, 224, 168, 190, 72, 0, 0, 0, 0, 0, 0, 21, 146, 224, 168, 164, 224, 169, 129, 224, 168, 185,
+			224, 168, 190, 224, 168, 161, 224, 168, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 57, 132, 68, 47, 6, 35, 55, 37, 0, 10, 3, 95, 50, 49, 113, 49, 12, 37, 0,
+			0, 13, 3, 95, 51, 56, 109, 141, 6, 109, 47, 12, 37, 0, 10, 3, 95, 50, 48, 84, 6, 37, 108, 0, 0, 10, 3, 95, 50, 51,
+			47, 6, 36, 37, 0, 0, 19, 4, 95, 224, 168, 135, 6, 113, 51, 113, 15, 89, 113, 107, 6, 35, 51, 37, 0, 10, 3, 95, 50, 50,
+			71, 6, 35, 37, 0, 0, 18, 4, 95, 224, 168, 134, 6, 116, 51, 109, 15, 49, 109, 50, 50, 6, 35, 0, 12, 3, 95, 50, 53, 48,
+			6, 109, 80, 12, 37, 0, 0, 11, 3, 95, 50, 52, 80, 6, 121, 84, 37, 0, 0, 12, 3, 95, 50, 55, 89, 13, 47, 6, 35, 37,
+			0, 0, 12, 3, 95, 50, 54, 143, 6, 109, 71, 12, 37, 0, 0, 13, 3, 95, 51, 49, 113, 49, 6, 109, 47, 12, 37, 0, 0, 10,
+			3, 95, 51, 48, 47, 6, 37, 108, 0, 0, 12, 3, 95, 51, 51, 47, 6, 36, 47, 12, 37, 0, 0, 12, 3, 95, 51, 50, 71, 6,
+			109, 47, 12, 37, 0, 0, 12, 3, 95, 51, 53, 48, 6, 116, 68, 47, 37, 0, 0, 12, 3, 95, 51, 52, 80, 6, 121, 68, 47, 37,
+			0, 0, 12, 3, 95, 51, 55, 89, 6, 116, 68, 47, 37, 0, 0, 12, 3, 95, 51, 54, 143, 6, 109, 47, 12, 37, 0, 0, 0, 0,
+			0, 18, 143, 224, 168, 137, 224, 168, 184, 224, 168, 164, 224, 169, 139, 224, 168, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 3, 95, 55, 57, 122, 66, 6, 35, 89, 37, 0, 13, 3, 95, 54, 49, 113, 49, 6, 35, 108, 13, 139, 0, 0, 14, 3,
+			95, 55, 56, 109, 141, 6, 109, 47, 12, 13, 51, 0, 11, 3, 95, 54, 48, 89, 6, 109, 141, 12, 0, 0, 9, 3, 95, 48, 67, 89,
+			6, 121, 0, 14, 3, 95, 54, 51, 47, 13, 51, 6, 126, 108, 13, 139, 0, 0, 12, 3, 95, 54, 50, 71, 6, 35, 108, 13, 139, 0,
+			0, 12, 3, 95, 54, 53, 48, 6, 127, 108, 13, 139, 0, 0, 12, 3, 95, 54, 52, 80, 6, 130, 108, 13, 139, 0, 0, 14, 3, 95,
+			54, 55, 89, 13, 47, 6, 35, 108, 13, 139, 0, 0, 13, 3, 95, 54, 54, 143, 36, 6, 35, 108, 13, 139, 0, 0, 14, 3, 95, 55,
+			49, 113, 49, 6, 109, 47, 12, 13, 51, 0, 0, 13, 3, 95, 55, 48, 89, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 51,
+			47, 13, 108, 6, 36, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 50, 71, 13, 108, 6, 109, 47, 12, 13, 51, 0, 0, 9, 134, 224,
+			168, 166, 224, 169, 128, 72, 15, 3, 95, 55, 53, 48, 13, 79, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 52, 80, 121, 108,
+			6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 55, 89, 13, 47, 6, 109, 47, 12, 13, 51, 0, 0, 15, 3, 95, 55, 54, 143,
+			113, 108, 6, 109, 47, 12, 13, 51, 0, 0, 11, 3, 95, 49, 57, 6, 122, 50, 50, 37, 0, 0, 9, 134, 224, 168, 166, 224, 169, 135,
+			72, 12, 3, 95, 49, 56, 109, 141, 6, 35, 51, 128, 0, 0, 19, 4, 95, 224, 168, 148, 6, 116, 51, 109, 15, 49, 109, 50, 121, 51,
+			6, 35, 0, 0, 0, 0, 0, 20, 4, 95, 224, 168, 144, 6, 116, 51, 109, 15, 72, 122, 55, 6, 35, 84, 35, 65, 0, 0, 17, 4,
+			95, 224, 168, 147, 6, 122, 51, 109, 15, 107, 39, 51, 6, 35, 0, 0, 13, 3, 95, 50, 57, 122, 50, 6, 109, 47, 12, 37, 0, 12,
+			3, 95, 49, 49, 81, 113, 6, 35, 51, 128, 0, 0, 11, 3, 95, 50, 56, 109, 141, 6, 35, 37, 0, 10, 3, 95, 49, 48, 72, 6,
+			109, 89, 0, 0, 11, 3, 95, 49, 51, 47, 6, 36, 51, 128, 0, 0, 18, 4, 95, 224, 168, 143, 6, 113, 51, 113, 15, 55, 6, 35,
+			84, 35, 65, 0, 11, 3, 95, 49, 50, 71, 6, 35, 51, 128, 0, 0, 14, 3, 95, 49, 53, 48, 6, 109, 50, 72, 13, 51, 128, 0,
+			0, 18, 4, 95, 224, 168, 137, 6, 122, 51, 109, 15, 6, 121, 50, 49, 35, 51, 0, 11, 3, 95, 49, 52, 80, 6, 121, 72, 128, 0,
+			0, 19, 4, 95, 224, 168, 136, 6, 113, 51, 113, 15, 71, 113, 107, 6, 35, 51, 37, 0, 13, 3, 95, 49, 55, 89, 13, 47, 6, 35,
+			51, 128, 0, 0, 11, 3, 95, 49, 54, 89, 6, 39, 62, 128, 0, 0, 21, 12, 224, 168, 136, 224, 168, 174, 224, 169, 135, 224, 168, 178,
+			101, 109, 97, 105, 108, 0, 29, 21, 4, 95, 224, 168, 138, 6, 122, 51, 109, 15, 72, 122, 55, 6, 116, 50, 49, 35, 51, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 13, 3, 95, 52, 57, 122, 50, 6, 109, 50, 79, 35, 0, 0, 12, 3, 224, 165, 164, 140, 6, 109, 50, 140,
+			37, 0, 15, 3, 95, 52, 56, 4, 13, 52, 13, 47, 6, 35, 55, 37, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 53, 57, 122,
+			66, 6, 35, 141, 0, 14, 3, 95, 52, 49, 113, 49, 13, 47, 6, 35, 55, 37, 0, 0, 16, 3, 95, 53, 56, 4, 13, 141, 13, 84,
+			6, 109, 50, 79, 35, 0, 11, 3, 95, 52, 48, 80, 6, 35, 55, 37, 0, 0, 15, 3, 95, 52, 51, 47, 13, 51, 13, 47, 6, 35,
+			55, 37, 0, 0, 12, 3, 95, 52, 50, 71, 36, 6, 35, 55, 37, 0, 0, 14, 3, 95, 52, 53, 48, 13, 50, 47, 6, 35, 55, 37,
+			0, 0, 13, 3, 95, 52, 52, 80, 122, 47, 6, 35, 55, 37, 0, 0, 14, 3, 95, 52, 55, 89, 13, 50, 47, 6, 35, 55, 37, 0,
+			0, 12, 3, 95, 52, 54, 143, 113, 6, 35, 55, 37, 0, 0, 14, 3, 95, 54, 57, 122, 66, 6, 109, 47, 12, 13, 51, 0, 16, 3,
+			95, 53, 49, 4, 13, 49, 13, 84, 6, 109, 50, 79, 35, 0, 0, 14, 3, 95, 54, 56, 4, 13, 141, 6, 35, 108, 13, 139, 0, 13,
+			3, 95, 53, 48, 48, 13, 50, 79, 6, 35, 108, 0, 0, 17, 3, 95, 53, 51, 47, 4, 13, 51, 13, 84, 6, 109, 50, 79, 35, 0,
+			0, 14, 3, 95, 53, 50, 71, 13, 84, 6, 109, 50, 79, 35, 0, 0, 17, 3, 95, 53, 53, 48, 4, 13, 80, 13, 84, 6, 109, 50,
+			79, 35, 0, 0, 14, 3, 95, 53, 52, 80, 122, 51, 6, 109, 50, 79, 35, 0, 0, 17, 3, 95, 53, 55, 89, 4, 13, 47, 13, 84,
+			6, 109, 50, 79, 35, 0, 0, 14, 3, 95, 53, 54, 143, 13, 48, 6, 109, 50, 79, 35, 0, 0, 0, 0, 9, 134, 224, 168, 166, 224,
+			168, 190, 72, 0, 0, 0, 0, 12, 3, 95, 63, 63, 6, 109, 145, 12, 13, 51, 0, 0, 0, 15, 140, 224, 168, 135, 224, 168, 184, 224,
+			168, 166, 224, 168, 190, 72, 15, 3, 95, 56, 57, 122, 50, 6, 35, 50, 13, 84, 4, 126, 0, 0, 12, 3, 95, 56, 56, 109, 141, 6,
+			35, 89, 37, 0, 0, 0, 0, 0, 12, 137, 224, 168, 164, 224, 169, 139, 224, 168, 130, 72, 0, 0, 0, 9, 134, 224, 168, 184, 224, 169,
+			128, 72, 16, 3, 95, 57, 57, 50, 13, 52, 6, 125, 50, 13, 84, 4, 126, 0, 15, 3, 95, 56, 49, 4, 113, 49, 113, 38, 6, 35,
+			89, 37, 0, 0, 14, 3, 95, 57, 56, 109, 141, 6, 35, 50, 13, 84, 126, 0, 11, 3, 95, 56, 48, 6, 109, 89, 89, 37, 0, 0,
+			16, 3, 95, 56, 51, 47, 4, 13, 51, 113, 38, 6, 35, 89, 37, 0, 0, 18, 143, 224, 168, 135, 224, 168, 184, 224, 168, 164, 224, 169,
+			139, 224, 168, 130, 72, 13, 3, 95, 56, 50, 71, 113, 38, 6, 35, 89, 37, 0, 0, 13, 3, 95, 56, 53, 48, 13, 80, 6, 35, 89,
+			37, 0, 0, 13, 3, 95, 56, 52, 80, 122, 51, 6, 35, 89, 37, 0, 0, 13, 3, 95, 56, 55, 89, 13, 47, 6, 35, 89, 37, 0,
+			0, 13, 3, 95, 56, 54, 143, 113, 38, 6, 35, 89, 37, 0, 0, 15, 3, 95, 57, 49, 113, 49, 6, 35, 50, 13, 84, 4, 126, 0,
+			0, 12, 3, 95, 57, 48, 50, 6, 109, 71, 12, 36, 0, 0, 16, 3, 95, 57, 51, 47, 13, 51, 6, 128, 50, 13, 84, 4, 126, 0,
+			0, 14, 3, 95, 57, 50, 71, 6, 35, 50, 13, 84, 4, 126, 0, 0, 16, 3, 95, 57, 53, 48, 13, 80, 6, 35, 50, 13, 84, 4,
+			126, 0, 0, 16, 3, 95, 57, 52, 80, 122, 51, 6, 35, 50, 13, 84, 4, 126, 0, 0, 15, 3, 95, 57, 55, 89, 13, 47, 6, 35,
+			50, 13, 84, 126, 0, 0, 14, 3, 95, 57, 54, 143, 113, 6, 35, 50, 13, 84, 126, 0, 0, 10, 3, 224, 168, 133, 6, 116, 51, 109,
+			0, 12, 3, 224, 169, 141, 107, 109, 55, 109, 50, 47, 0, 0, 13, 3, 224, 169, 140, 49, 109, 50, 6, 121, 51, 35, 0, 0, 0, 0,
+			0, 13, 3, 224, 169, 136, 72, 13, 55, 6, 35, 84, 128, 0, 0, 11, 3, 224, 169, 139, 107, 39, 51, 6, 35, 0, 12, 3, 224, 168,
+			131, 84, 37, 89, 35, 51, 81, 0, 0, 12, 3, 224, 168, 130, 71, 113, 50, 72, 6, 37, 0, 0, 0, 0, 11, 3, 224, 169, 135, 55,
+			6, 35, 84, 128, 0, 0, 0, 11, 3, 224, 169, 129, 121, 50, 49, 35, 51, 0, 0, 13, 3, 224, 169, 128, 71, 113, 107, 6, 35, 51,
+			37, 0, 0, 0, 15, 3, 224, 169, 130, 72, 122, 55, 6, 116, 50, 49, 35, 51, 0, 0, 9, 134, 224, 168, 184, 224, 168, 168, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 52, 6, 109, 51, 13, 71, 0, 0, 13, 4, 95, 48, 77,
+			53, 145, 6, 109, 51, 13, 71, 0, 0, 12, 4, 95, 48, 77, 50, 55, 6, 109, 145, 12, 0, 0, 13, 4, 95, 48, 77, 51, 49, 6,
+			109, 51, 39, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 108, 13, 79, 6, 35, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3,
+			224, 168, 190, 49, 109, 50, 50, 6, 35, 0, 0, 13, 3, 224, 168, 191, 89, 113, 107, 6, 35, 51, 37, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 224, 169, 178, 6, 113, 51, 113, 0, 0, 10, 3, 224, 169, 179, 6,
+			122, 51, 109, 0, 0, 12, 3, 224, 169, 176, 47, 113, 48, 48, 6, 37, 0, 0, 11, 3, 224, 169, 177, 109, 72, 72, 109, 49, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 168, 174, 224, 169, 136, 224, 168, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 168, 185, 224, 168, 190, 224, 168,
+			130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 174, 224, 169, 135, 224, 168, 176, 224, 169, 135, 72, 0,
+			0, 0, 0, 0, 15, 140, 224, 168, 174, 224, 169, 135, 224, 168, 176, 224, 169, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 137, 224, 168, 184, 224, 168, 166, 224, 169,
+			128, 72, 0, 0, 5, 131, 239, 187, 191, 0, 15, 140, 224, 168, 137, 224, 168, 184, 224, 168, 166, 224, 169, 135, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 174, 224, 169, 135, 224, 168, 176, 224, 168, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 9, 134, 224, 168, 134, 224, 168, 170, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 137, 224, 168, 184, 224, 168, 166, 224, 168, 190, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 168, 137, 224, 168, 168, 224, 169, 141, 224, 168,
+			185, 224, 168, 190, 224, 168, 130, 224, 168, 166, 224, 169, 128, 72, 0, 0, 0, 27, 152, 224, 168, 137, 224, 168, 168, 224, 169, 141, 224, 168,
+			185, 224, 168, 190, 224, 168, 130, 224, 168, 166, 224, 169, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 168, 137, 224, 168, 168, 224, 169, 141, 224,
+			168, 185, 224, 168, 190, 224, 168, 130, 224, 168, 166, 224, 168, 190, 72, 27, 152, 224, 168, 135, 224, 168, 168, 224, 169, 141, 224, 168, 185, 224,
+			168, 190, 224, 168, 130, 224, 168, 166, 224, 168, 190, 72, 0, 0, 0, 0, 0, 18, 143, 224, 168, 174, 224, 169, 136, 224, 168, 168, 224, 169,
+			130, 224, 169, 176, 72, 9, 2, 95, 51, 47, 6, 125, 50, 0, 0, 8, 2, 95, 50, 72, 6, 39, 0, 0, 9, 2, 95, 49, 6, 113,
+			49, 12, 0, 0, 10, 2, 95, 48, 88, 6, 37, 51, 39, 0, 0, 10, 2, 95, 55, 89, 6, 109, 47, 12, 0, 0, 8, 2, 95, 54,
+			143, 6, 36, 0, 0, 24, 149, 224, 168, 164, 224, 169, 129, 224, 168, 185, 224, 168, 190, 224, 168, 168, 224, 169, 130, 224, 169, 176, 72, 10,
+			2, 95, 53, 48, 6, 109, 50, 79, 0, 0, 9, 2, 95, 52, 80, 6, 35, 51, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 130, 0,
+			0, 9, 2, 95, 56, 6, 109, 141, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 168, 164, 224, 169, 130, 224, 168, 184, 224, 169, 128, 224, 168, 130, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 168, 184,
+			224, 168, 190, 224, 168, 168, 224, 169, 130, 224, 169, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 133, 224, 168, 184,
+			224, 169, 128, 224, 168, 130, 72, 0, 0, 0, 0, 0, 0, 15, 140, 224, 168, 134, 224, 168, 170, 224, 168, 166, 224, 169, 128, 72, 0, 15,
+			140, 224, 168, 134, 224, 168, 170, 224, 168, 166, 224, 169, 135, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 137, 224, 168, 185, 224, 169, 136, 224, 168, 130, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 168, 185,
+			224, 168, 168, 72, 0, 0, 0, 0, 0, 9, 134, 224, 168, 185, 224, 169, 139, 72, 0, 0, 0, 9, 134, 224, 168, 185, 224, 169, 136, 72,
+			0, 0, 0, 6, 20, 0, 0, 0, 102, 10, 0, 0, 48, 0, 0, 0, 103, 10, 0, 0, 49, 0, 0, 0, 104, 10, 0, 0, 50, 0,
+			0, 0, 105, 10, 0, 0, 51, 0, 0, 0, 106, 10, 0, 0, 52, 0, 0, 0, 107, 10, 0, 0, 53, 0, 0, 0, 108, 10, 0, 0,
+			54, 0, 0, 0, 109, 10, 0, 0, 55, 0, 0, 0, 110, 10, 0, 0, 56, 0, 0, 0, 111, 10, 0, 0, 57, 0, 0, 0, 230, 10,
+			0, 0, 48, 0, 0, 0, 231, 10, 0, 0, 49, 0, 0, 0, 232, 10, 0, 0, 50, 0, 0, 0, 233, 10, 0, 0, 51, 0, 0, 0,
+			234, 10, 0, 0, 52, 0, 0, 0, 235, 10, 0, 0, 53, 0, 0, 0, 236, 10, 0, 0, 54, 0, 0, 0, 237, 10, 0, 0, 55, 0,
+			0, 0, 238, 10, 0, 0, 56, 0, 0, 0, 239, 10, 0, 0, 57, 0, 0, 0, 56, 10, 60, 10, 54, 10, 0, 0, 50, 10, 60, 10,
+			51, 10, 0, 0, 22, 10, 60, 10, 89, 10, 0, 0, 23, 10, 60, 10, 90, 10, 0, 0, 28, 10, 60, 10, 91, 10, 0, 0, 43, 10,
+			60, 10, 94, 10, 0, 0, 5, 10, 72, 10, 16, 10, 0, 0, 5, 10, 62, 10, 6, 10, 0, 0, 5, 10, 76, 10, 20, 10, 0, 0,
+			114, 10, 64, 10, 8, 10, 0, 0, 114, 10, 63, 10, 7, 10, 0, 0, 114, 10, 71, 10, 15, 10, 0, 0, 115, 10, 65, 10, 9, 10,
+			0, 0, 115, 10, 66, 10, 10, 10, 0, 0, 0, 0, 0, 0, 6, 1, 3, 0, 3, 68, 0, 7, 6, 1, 4, 0, 3, 107, 0, 7,
+			6, 1, 6, 0, 3, 4, 109, 0, 4, 224, 168, 130, 3, 129, 0, 224, 169, 176, 0, 7, 6, 1, 7, 0, 3, 35, 0, 4, 224, 168,
+			130, 3, 128, 0, 224, 169, 176, 0, 7, 6, 1, 8, 0, 3, 113, 0, 4, 224, 168, 130, 3, 125, 0, 224, 169, 176, 0, 7, 6, 1,
+			9, 0, 3, 37, 0, 4, 224, 168, 130, 3, 124, 0, 224, 169, 176, 0, 7, 6, 1, 10, 0, 3, 122, 0, 4, 224, 168, 130, 3, 132,
+			0, 224, 169, 176, 0, 7, 6, 1, 11, 0, 3, 40, 0, 4, 224, 168, 130, 3, 133, 0, 224, 169, 176, 0, 7, 6, 1, 16, 0, 3,
+			36, 0, 4, 224, 168, 130, 3, 126, 0, 224, 169, 176, 0, 7, 6, 1, 17, 0, 3, 116, 0, 4, 224, 168, 130, 3, 127, 0, 224, 169,
+			176, 0, 7, 6, 1, 20, 0, 3, 39, 0, 4, 224, 168, 130, 3, 131, 0, 224, 169, 176, 0, 7, 6, 1, 21, 0, 3, 121, 0, 4,
+			224, 168, 130, 3, 130, 0, 224, 169, 176, 0, 7, 6, 1, 22, 0, 4, 1, 21, 2, 32, 3, 49, 0, 2, 17, 66, 0, 4, 1, 177,
+			169, 224, 2, 17, 66, 3, 49, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 49, 12, 109, 0, 3, 49, 109, 0, 7,
+			6, 1, 23, 0, 4, 1, 21, 2, 32, 3, 145, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 145, 12, 0, 1, 177,
+			169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 145, 12, 109, 0, 3, 145, 109, 0, 7, 6, 1, 24, 0, 4, 1, 21, 2, 32, 3, 81,
+			0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 81, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 81,
+			12, 109, 0, 3, 81, 109, 0, 7, 6, 1, 25, 0, 8, 2, 17, 66, 3, 49, 148, 0, 8, 3, 49, 148, 109, 0, 4, 1, 21, 2,
+			32, 3, 146, 0, 2, 17, 66, 0, 3, 146, 109, 0, 7, 6, 1, 26, 0, 4, 1, 21, 2, 32, 3, 68, 0, 2, 17, 66, 0, 4,
+			1, 177, 169, 224, 2, 17, 66, 3, 68, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 68, 12, 109, 0, 3, 68, 109,
+			0, 7, 6, 1, 27, 0, 4, 1, 21, 2, 32, 3, 80, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 80, 12, 0,
+			1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 80, 12, 109, 0, 3, 80, 109, 0, 7, 6, 1, 28, 0, 4, 1, 21, 2, 32,
+			3, 143, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 143, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224,
+			3, 143, 12, 109, 0, 3, 143, 109, 0, 7, 6, 1, 29, 0, 4, 1, 21, 2, 32, 3, 79, 0, 2, 17, 66, 0, 4, 1, 177, 169,
+			224, 2, 17, 66, 3, 79, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 79, 12, 109, 0, 3, 79, 109, 0, 7, 6,
+			1, 30, 0, 8, 2, 17, 66, 3, 80, 148, 0, 8, 3, 80, 148, 109, 0, 4, 1, 21, 2, 32, 3, 144, 0, 2, 17, 66, 0, 3,
+			144, 109, 0, 7, 6, 1, 31, 0, 4, 1, 21, 2, 32, 3, 67, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 67,
+			12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 67, 12, 109, 0, 3, 67, 109, 0, 7, 6, 1, 32, 0, 4, 1, 21,
+			2, 32, 3, 139, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 139, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177,
+			169, 224, 3, 139, 12, 109, 0, 3, 139, 109, 0, 7, 6, 1, 33, 0, 4, 1, 21, 2, 32, 3, 141, 0, 2, 17, 66, 0, 4, 1,
+			177, 169, 224, 2, 17, 66, 3, 141, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 141, 12, 109, 0, 3, 141, 109, 0,
+			7, 6, 1, 34, 0, 4, 1, 21, 2, 32, 3, 140, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 140, 12, 0, 1,
+			177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 140, 12, 109, 0, 3, 140, 109, 0, 7, 6, 1, 35, 0, 8, 2, 17, 66, 3, 139,
+			0, 8, 3, 139, 148, 109, 0, 4, 1, 21, 2, 32, 3, 142, 0, 2, 17, 66, 0, 3, 142, 109, 0, 7, 6, 1, 36, 0, 4, 1,
+			21, 2, 32, 3, 66, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 66, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1,
+			177, 169, 224, 3, 66, 12, 109, 0, 3, 66, 109, 0, 7, 6, 1, 37, 0, 4, 1, 21, 2, 32, 3, 47, 0, 2, 17, 66, 0, 4,
+			1, 177, 169, 224, 2, 17, 66, 3, 47, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 47, 12, 109, 0, 3, 47, 109,
+			0, 7, 6, 1, 38, 0, 4, 1, 21, 2, 32, 3, 25, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 25, 12, 0,
+			1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 25, 12, 109, 0, 3, 25, 109, 0, 7, 6, 1, 39, 0, 4, 1, 21, 2, 32,
+			3, 72, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 72, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224,
+			3, 72, 12, 109, 0, 3, 72, 109, 0, 7, 6, 1, 40, 0, 8, 2, 17, 66, 3, 47, 148, 0, 8, 3, 47, 148, 109, 0, 4, 1,
+			21, 2, 32, 3, 138, 0, 2, 17, 66, 0, 3, 138, 109, 0, 7, 6, 1, 41, 0, 4, 1, 21, 2, 32, 3, 50, 0, 2, 17, 66,
+			0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 50, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 50, 12, 109, 0, 3,
+			50, 109, 0, 7, 6, 1, 43, 0, 4, 1, 21, 2, 32, 3, 48, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 48,
+			12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 48, 12, 109, 0, 3, 48, 109, 0, 7, 6, 1, 44, 0, 4, 1, 21,
+			2, 32, 3, 136, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 136, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177,
+			169, 224, 3, 136, 12, 109, 0, 3, 136, 109, 0, 7, 6, 1, 45, 0, 4, 1, 21, 2, 32, 3, 71, 0, 2, 17, 66, 0, 4, 1,
+			177, 169, 224, 2, 17, 66, 3, 71, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 71, 12, 109, 0, 3, 71, 109, 0,
+			7, 6, 1, 46, 0, 8, 2, 17, 66, 3, 48, 148, 0, 8, 3, 48, 148, 109, 0, 4, 1, 21, 2, 32, 3, 137, 0, 2, 17, 66,
+			0, 3, 137, 109, 0, 7, 6, 1, 47, 0, 4, 1, 21, 2, 32, 3, 65, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66,
+			3, 65, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 65, 12, 109, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 4,
+			1, 21, 2, 32, 3, 57, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 57, 12, 0, 1, 177, 169, 224, 2, 32, 0,
+			1, 177, 169, 224, 3, 57, 12, 109, 0, 3, 57, 109, 0, 7, 6, 1, 49, 0, 4, 1, 21, 2, 32, 3, 34, 0, 2, 17, 66, 0,
+			4, 1, 177, 169, 224, 2, 17, 66, 3, 34, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 34, 12, 109, 0, 3, 34,
+			109, 0, 7, 6, 1, 51, 0, 4, 1, 21, 2, 32, 3, 55, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 55, 12,
+			0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 55, 12, 109, 0, 3, 55, 109, 0, 7, 6, 1, 52, 0, 4, 1, 21, 2,
+			32, 3, 62, 0, 2, 17, 66, 0, 3, 62, 109, 0, 7, 6, 1, 54, 0, 4, 1, 21, 2, 32, 3, 84, 0, 2, 17, 66, 0, 4,
+			1, 177, 169, 224, 2, 17, 66, 3, 84, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 84, 12, 109, 0, 3, 84, 109,
+			0, 7, 6, 1, 55, 0, 4, 1, 21, 2, 32, 3, 91, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 91, 12, 0,
+			1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224, 3, 91, 12, 109, 0, 3, 91, 109, 0, 7, 6, 1, 57, 0, 4, 1, 21, 2, 32,
+			3, 89, 0, 2, 17, 66, 0, 4, 1, 177, 169, 224, 2, 17, 66, 3, 89, 12, 0, 1, 177, 169, 224, 2, 32, 0, 1, 177, 169, 224,
+			3, 89, 12, 109, 0, 3, 89, 109, 0, 7, 6, 1, 58, 0, 4, 1, 21, 2, 32, 3, 108, 0, 2, 17, 66, 0, 3, 108, 109, 0,
+			7, 6, 1, 61, 0, 3, 0, 7, 6, 1, 63, 0, 3, 35, 0, 4, 224, 168, 130, 3, 128, 0, 224, 169, 176, 0, 7, 6, 1, 64,
+			0, 3, 113, 0, 4, 224, 168, 130, 3, 125, 0, 224, 169, 176, 0, 7, 6, 1, 65, 0, 3, 37, 0, 4, 224, 168, 130, 3, 124, 0,
+			224, 169, 176, 0, 7, 6, 1, 66, 0, 3, 122, 0, 4, 224, 168, 130, 3, 132, 0, 224, 169, 176, 0, 7, 6, 1, 67, 0, 3, 40,
+			0, 4, 224, 168, 130, 3, 133, 0, 224, 169, 176, 0, 7, 6, 1, 72, 0, 3, 36, 0, 4, 224, 168, 130, 3, 126, 0, 224, 169, 176,
+			0, 7, 6, 1, 73, 0, 3, 116, 0, 4, 224, 168, 130, 3, 127, 0, 224, 169, 176, 0, 7, 6, 1, 76, 0, 3, 39, 0, 4, 224,
+			168, 130, 3, 131, 0, 224, 169, 176, 0, 7, 6, 1, 77, 0, 3, 121, 0, 4, 224, 168, 130, 3, 130, 0, 224, 169, 176, 0, 7, 6,
+			1, 78, 0, 3, 0, 7, 6, 1, 90, 0, 4, 1, 21, 2, 32, 3, 101, 0, 2, 17, 66, 0, 3, 101, 109, 0, 7, 6, 1, 91,
+			0, 4, 1, 21, 2, 32, 3, 100, 0, 2, 17, 66, 0, 3, 100, 109, 0, 7, 6, 1, 92, 0, 4, 1, 21, 2, 32, 3, 88, 0,
+			2, 17, 66, 0, 3, 88, 109, 0, 7, 6, 1, 93, 0, 4, 1, 21, 2, 32, 3, 70, 0, 2, 17, 66, 0, 3, 70, 109, 0, 7,
+			6, 1, 95, 0, 4, 1, 21, 2, 32, 3, 83, 0, 2, 17, 66, 0, 3, 83, 109, 0, 7, 6, 1, 113, 0, 3, 50, 0, 7, 6,
+			1, 114, 0, 3, 0, 7, 6, 1, 115, 0, 3, 37, 0, 7, 6, 1, 116, 0, 3, 40, 0, 7, 6, 224, 171, 0, 160, 3, 44, 0,
+			7, 6, 0, 37, 3, 48, 109, 89, 116, 50, 47, 0, 36, 3, 72, 121, 55, 109, 51, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts51 = FileInMemory_createWithData (6172, reinterpret_cast<const char *> (&espeakdata_dicts51_data), 
+			U"espeak-1.48.04-source/espeak-data/pa_dict", 
 			U"pa");
-		Collection_addItem (me.peek(), espeakdata_dicts48.transfer());
-
-		static unsigned char espeakdata_dicts49_data[2134] = {
-			0, 4, 0, 0, 163, 6, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0,
-			0, 6, 65, 12, 89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 4, 193, 20, 76, 0, 0, 0, 0, 6,
-			65, 24, 109, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0, 0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 0, 5,
-			193, 36, 76, 8, 0, 0, 0, 0, 6, 65, 40, 57, 36, 0, 0, 0, 6, 195, 64, 244, 128, 76, 0, 0, 6, 65, 44, 49, 35, 0,
-			0, 0, 0, 0, 6, 65, 48, 109, 55, 0, 0, 0, 0, 0, 6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6, 65, 56, 109, 50, 0,
-			0, 0, 0, 0, 5, 193, 60, 76, 8, 0, 0, 0, 0, 6, 65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 112, 0, 0,
-			0, 0, 0, 6, 65, 72, 109, 51, 0, 0, 0, 0, 0, 6, 65, 76, 109, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 36, 0, 0, 0, 0, 0, 7, 65, 96,
-			109, 49, 89, 0, 0, 0, 0, 0, 11, 65, 100, 37, 81, 51, 6, 109, 49, 0, 14, 5, 193, 100, 72, 8, 0, 0, 0, 0, 7, 65,
-			104, 88, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 4,
-			16, 20, 10, 49, 110, 65, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 8, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 5, 194, 20, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 88, 47, 51, 6, 37, 50, 47, 35, 0, 0, 11,
-			3, 95, 48, 67, 89, 57, 6, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 3, 95, 49, 49, 72, 57, 36, 89, 6, 40, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 55, 88, 89,
-			36, 47, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 16, 8, 0, 11,
-			3, 95, 49, 88, 72, 57, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 45, 80, 76, 28, 0, 12, 3, 95, 50, 88, 71,
-			6, 37, 50, 47, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 52, 88, 49, 58, 35,
-			51, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 56, 16, 76, 0, 16, 3, 95, 53, 88, 89, 37, 50, 49, 58,
-			6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 54, 88, 89, 36, 89, 6, 36, 50, 47, 35, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 88, 39, 76, 6, 36, 50, 47, 35, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 3, 95, 57, 88, 50, 39, 71, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 12, 4, 95, 48, 77, 50, 65, 37, 6, 39, 50, 0, 0, 11, 195, 44, 83, 128, 72, 28, 81, 115, 117, 32, 0, 0, 11,
-			4, 95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52,
-			144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 244, 192,
-			76, 0, 0, 0, 0, 0, 0, 13, 4, 95, 1, 3, 21, 89, 49, 109, 51, 48, 37, 0, 0, 0, 0, 0, 7, 131, 195, 178, 6, 76,
-			8, 0, 5, 194, 48, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 244, 207, 76, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 80, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			5, 194, 77, 80, 76, 0, 0, 0, 0, 0, 5, 130, 195, 161, 43, 0, 0, 0, 0, 5, 130, 195, 173, 43, 0, 0, 0, 0, 5, 130,
-			195, 169, 43, 0, 0, 0, 0, 0, 0, 5, 130, 195, 179, 43, 0, 0, 8, 2, 195, 177, 36, 67, 36, 0, 0, 0, 0, 0, 0, 5,
-			130, 195, 186, 43, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 35, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0, 0, 0, 6,
-			2, 95, 5, 36, 0, 0, 0, 0, 6, 2, 95, 9, 37, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 12, 2, 95, 25, 37, 81, 51, 6, 109, 49, 0, 14, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 193, 213,
-			56, 76, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 83, 128, 76, 6, 195, 56, 19, 128, 76, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			2, 95, 51, 47, 51, 6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 39, 89, 0, 0, 9, 2, 95, 49, 6, 40, 50, 40, 0, 0,
-			10, 2, 95, 48, 88, 6, 36, 51, 39, 0, 0, 10, 2, 95, 55, 91, 6, 36, 47, 36, 0, 0, 10, 2, 95, 54, 89, 6, 109, 57,
-			89, 0, 0, 11, 2, 95, 53, 89, 6, 37, 50, 49, 40, 0, 0, 12, 2, 95, 52, 49, 58, 35, 47, 6, 36, 51, 0, 0, 0, 0,
-			11, 2, 95, 57, 50, 58, 6, 36, 71, 36, 0, 0, 9, 2, 95, 56, 6, 39, 76, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 7, 18, 22, 81, 51, 35, 84, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 4, 194, 80, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 84,
-			224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 80, 16, 129,
-			80, 16, 76, 0, 0, 6, 195, 4, 210, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 168, 0, 3, 6, 109, 0, 7, 6, 195,
-			177, 0, 3, 67, 0, 7, 6, 195, 178, 0, 3, 6, 110, 0, 7, 6, 195, 185, 0, 3, 113, 0, 105, 3, 113, 57, 0, 7, 6, 195,
-			188, 0, 3, 112, 0, 105, 3, 112, 57, 0, 7, 6, 97, 0, 3, 35, 0, 97, 3, 35, 12, 0, 105, 3, 117, 0, 7, 6, 98, 0,
-			3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 104, 3, 76, 0, 2, 17, 71, 3, 89, 0, 7, 6, 100, 0, 3, 72, 0, 106, 3, 75,
-			0, 7, 6, 101, 0, 3, 36, 0, 101, 3, 36, 12, 0, 117, 3, 36, 58, 0, 105, 3, 118, 0, 7, 6, 102, 0, 3, 83, 0, 7,
-			6, 103, 0, 4, 3, 81, 0, 117, 2, 17, 71, 0, 2, 17, 71, 3, 101, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3,
-			37, 0, 4, 1, 17, 65, 2, 25, 3, 57, 0, 2, 17, 65, 0, 106, 3, 118, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0,
-			3, 49, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 97, 110, 1, 10, 2, 32,
-			3, 50, 2, 35, 50, 0, 2, 32, 3, 68, 0, 7, 6, 111, 0, 3, 39, 0, 111, 3, 39, 12, 0, 117, 3, 39, 58, 0, 101, 3,
-			40, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 2, 17, 65, 3, 49, 58, 0, 117, 105, 3, 49, 58, 37,
-			0, 7, 6, 114, 0, 3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0,
-			3, 40, 0, 105, 3, 40, 57, 0, 2, 17, 65, 3, 58, 0, 117, 3, 112, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3,
-			58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 2, 17, 65, 3, 88, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57,
-			0, 7, 6, 122, 0, 3, 88, 0, 106, 3, 90, 0, 7, 6, 0, 195, 161, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0, 195, 173, 3,
-			7, 37, 0, 195, 179, 3, 7, 39, 0, 195, 186, 3, 7, 40, 0, 39, 3, 19, 0, 36, 3, 72, 110, 55, 110, 0, 195, 167, 3, 89,
-			0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts49 = FileInMemory_createWithData (2133, reinterpret_cast<const char *> (&espeakdata_dicts49_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/pap_dict", 
-			U"pap");
-		Collection_addItem (me.peek(), espeakdata_dicts49.transfer());
+		my addItem_move (espeakdata_dicts51.move());
 
-		static unsigned char espeakdata_dicts50_data[39426] = {
-			0, 4, 0, 0, 34, 121, 0, 0, 0, 0, 0, 0, 0, 7, 132, 196, 135, 13, 9, 20, 12, 65, 4, 35, 55, 6, 35, 0, 81, 108,
-			97, 32, 5, 193, 4, 72, 28, 13, 138, 16, 9, 196, 153, 3, 9, 21, 19, 5, 20, 65, 0, 8, 133, 196, 135, 16, 15, 13, 20, 0,
-			0, 7, 196, 104, 194, 67, 104, 20, 10, 135, 4, 197, 186, 7, 14, 196, 133, 20, 0, 17, 142, 4, 26, 9, 5, 23, 9, 196, 153, 3,
-			9, 21, 19, 5, 20, 66, 6, 65, 8, 71, 109, 0, 0, 12, 137, 23, 3, 8, 18, 26, 3, 26, 196, 133, 20, 0, 7, 132, 4, 21,
-			197, 155, 20, 17, 71, 12, 128, 82, 52, 85, 83, 20, 91, 35, 51, 65, 109, 88, 0, 66, 15, 67, 21, 64, 192, 109, 117, 6, 109, 47,
-			109, 51, 35, 0, 24, 0, 7, 196, 92, 145, 83, 104, 20, 11, 67, 12, 17, 133, 49, 35, 83, 109, 0, 66, 16, 141, 4, 26, 9, 5,
-			23, 9, 196, 153, 196, 135, 19, 5, 20, 65, 0, 10, 135, 12, 197, 155, 14, 9, 19, 26, 20, 6, 65, 12, 117, 109, 0, 0, 9, 198,
-			76, 180, 154, 100, 54, 128, 20, 7, 132, 12, 5, 197, 186, 20, 0, 16, 71, 12, 130, 72, 84, 18, 21, 4, 76, 37, 58, 35, 58, 35,
-			0, 13, 4, 95, 8, 1, 3, 107, 6, 35, 76, 109, 49, 0, 0, 8, 133, 19, 16, 1, 197, 155, 20, 8, 133, 13, 18, 196, 133, 3,
-			20, 7, 132, 12, 5, 197, 188, 20, 0, 15, 69, 64, 242, 82, 61, 64, 48, 40, 58, 35, 51, 6, 111, 0, 6, 65, 16, 72, 109, 0,
-			0, 9, 134, 26, 4, 196, 133, 197, 188, 20, 10, 135, 20, 18, 26, 196, 133, 197, 155, 20, 10, 135, 19, 11, 18, 26, 196, 133, 3, 20,
-			10, 135, 18, 197, 188, 14, 196, 133, 3, 20, 9, 134, 4, 18, 196, 133, 197, 188, 20, 0, 9, 134, 19, 26, 3, 26, 196, 133, 20, 11,
-			136, 16, 19, 20, 18, 26, 196, 133, 3, 20, 0, 7, 196, 92, 145, 82, 104, 20, 7, 196, 76, 176, 77, 48, 20, 11, 68, 13, 84, 146,
-			100, 49, 35, 51, 112, 0, 0, 13, 138, 23, 3, 8, 18, 26, 3, 26, 196, 133, 3, 20, 8, 197, 53, 38, 133, 77, 160, 20, 8, 197,
-			29, 38, 133, 77, 160, 20, 11, 136, 3, 8, 18, 26, 3, 26, 196, 133, 20, 21, 65, 20, 37, 65, 109, 57, 55, 111, 84, 109, 0, 81,
-			109, 97, 105, 108, 111, 119, 101, 32, 25, 65, 20, 37, 65, 109, 57, 55, 111, 84, 109, 81, 111, 0, 81, 109, 97, 105, 108, 111, 119, 101,
-			103, 111, 32, 21, 65, 20, 37, 65, 109, 57, 55, 111, 84, 112, 0, 81, 109, 97, 105, 108, 111, 119, 121, 32, 19, 65, 20, 37, 65, 109,
-			57, 55, 111, 65, 0, 81, 109, 97, 105, 108, 111, 109, 32, 17, 65, 20, 37, 65, 109, 57, 55, 37, 0, 81, 109, 97, 105, 108, 105, 32,
-			17, 65, 20, 37, 65, 109, 57, 55, 109, 0, 81, 109, 97, 105, 108, 101, 32, 19, 65, 20, 37, 65, 109, 57, 55, 109, 65, 0, 81, 109,
-			97, 105, 108, 101, 109, 32, 17, 65, 20, 37, 65, 109, 57, 55, 35, 0, 81, 109, 97, 105, 108, 97, 32, 15, 65, 20, 37, 65, 109, 57,
-			55, 0, 81, 109, 97, 105, 108, 32, 5, 65, 20, 109, 0, 0, 0, 6, 195, 92, 146, 128, 20, 8, 133, 196, 135, 13, 9, 10, 20, 25,
-			67, 69, 82, 64, 49, 84, 37, 48, 51, 111, 49, 84, 111, 0, 67, 82, 112, 114, 111, 32, 113, 117, 111, 32, 0, 12, 137, 2, 197, 188,
-			4, 197, 188, 196, 133, 3, 20, 9, 198, 4, 33, 82, 16, 81, 78, 65, 12, 68, 72, 145, 200, 80, 51, 35, 57, 47, 0, 17, 0, 6,
-			65, 24, 109, 83, 0, 0, 11, 136, 26, 23, 9, 195, 179, 26, 197, 130, 20, 0, 8, 133, 26, 18, 1, 197, 186, 20, 8, 133, 23, 196,
-			153, 19, 26, 20, 0, 7, 196, 93, 160, 137, 40, 20, 7, 196, 44, 195, 137, 20, 20, 20, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88,
-			67, 38, 109, 0, 81, 110, 105, 101, 32, 21, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32,
-			20, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 84, 35, 89, 0, 81, 119, 97, 115, 32, 21, 68, 65, 38, 133, 104, 48, 91, 6, 109,
-			89, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 18, 68, 65, 38, 133, 104, 48, 91, 6, 109, 89, 47, 111, 0, 81, 116, 111, 32, 18,
-			68, 65, 38, 133, 104, 48, 91, 6, 109, 89, 47, 109, 0, 81, 116, 101, 32, 19, 68, 65, 38, 133, 104, 48, 91, 6, 109, 89, 47, 114,
-			0, 81, 116, 196, 133, 32, 21, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 20, 68, 65,
-			38, 133, 104, 48, 91, 6, 109, 88, 50, 35, 89, 0, 81, 110, 97, 115, 32, 0, 7, 132, 197, 188, 7, 1, 20, 10, 135, 197, 155, 13,
-			9, 5, 19, 26, 20, 7, 65, 28, 81, 57, 109, 0, 0, 10, 135, 11, 18, 26, 20, 21, 197, 155, 20, 10, 135, 2, 25, 197, 130, 1,
-			197, 155, 76, 0, 11, 136, 13, 9, 1, 197, 130, 1, 197, 155, 76, 0, 7, 196, 104, 64, 82, 104, 20, 9, 134, 18, 197, 188, 14, 9,
-			10, 20, 0, 6, 65, 32, 101, 35, 0, 0, 8, 133, 13, 11, 14, 196, 133, 20, 0, 9, 134, 4, 18, 23, 9, 196, 153, 20, 9, 134,
-			3, 26, 3, 26, 196, 133, 20, 0, 10, 135, 13, 19, 26, 3, 26, 196, 133, 20, 7, 196, 52, 179, 137, 40, 20, 8, 1, 35, 107, 35,
-			91, 0, 27, 0, 8, 197, 104, 36, 143, 13, 160, 20, 8, 197, 76, 53, 75, 73, 160, 20, 5, 193, 36, 72, 28, 0, 8, 133, 197, 188,
-			18, 196, 133, 20, 21, 6, 4, 195, 169, 10, 195, 160, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 101, 32, 20, 6, 4, 195, 169,
-			10, 195, 160, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 32, 12, 1, 37, 48, 51, 6, 111, 117, 109, 50, 47, 0, 0, 9, 134,
-			197, 188, 7, 14, 196, 133, 20, 6, 195, 105, 54, 80, 20, 7, 1, 38, 35, 50, 72, 0, 0, 9, 134, 26, 12, 1, 26, 197, 130, 20,
-			7, 196, 104, 64, 83, 104, 20, 7, 196, 44, 195, 137, 40, 20, 0, 9, 134, 26, 9, 197, 155, 196, 135, 20, 7, 65, 40, 57, 111, 47,
-			0, 0, 10, 135, 26, 12, 5, 197, 186, 196, 135, 20, 10, 135, 23, 12, 5, 197, 186, 196, 135, 20, 0, 9, 67, 76, 148, 128, 89, 109,
-			51, 0, 14, 1, 42, 81, 84, 38, 6, 35, 89, 47, 49, 35, 0, 27, 0, 12, 137, 23, 19, 9, 196, 133, 197, 155, 196, 135, 20, 9,
-			1, 43, 48, 55, 40, 89, 0, 27, 0, 8, 197, 80, 50, 14, 36, 160, 20, 8, 197, 76, 50, 14, 36, 160, 20, 6, 195, 28, 20, 130,
-			20, 12, 201, 12, 132, 137, 77, 67, 208, 32, 84, 128, 65, 6, 65, 44, 49, 35, 0, 0, 9, 134, 26, 23, 196, 133, 20, 16, 20, 0,
-			8, 133, 23, 18, 196, 133, 2, 20, 8, 133, 20, 18, 196, 133, 2, 20, 12, 137, 19, 20, 23, 9, 5, 18, 4, 197, 186, 20, 10, 199,
-			28, 83, 148, 48, 83, 65, 56, 65, 12, 1, 46, 49, 51, 6, 111, 48, 49, 35, 0, 27, 0, 8, 133, 20, 18, 196, 133, 3, 20, 8,
-			133, 20, 14, 196, 133, 3, 20, 8, 133, 16, 18, 196, 133, 3, 20, 8, 133, 16, 14, 196, 133, 3, 20, 9, 67, 76, 148, 133, 89, 37,
-			51, 0, 9, 1, 47, 89, 55, 109, 91, 0, 27, 0, 8, 197, 93, 50, 207, 13, 160, 20, 8, 133, 13, 18, 21, 197, 188, 20, 7, 132,
-			7, 14, 196, 133, 20, 6, 65, 48, 109, 55, 0, 0, 10, 135, 23, 16, 18, 26, 196, 133, 3, 20, 9, 134, 19, 197, 130, 21, 197, 188,
-			20, 8, 133, 12, 7, 14, 196, 133, 20, 9, 134, 11, 18, 196, 133, 197, 188, 20, 0, 10, 135, 16, 18, 26, 196, 133, 197, 188, 20, 0,
-			11, 136, 23, 16, 18, 26, 196, 133, 197, 188, 20, 8, 133, 23, 13, 195, 179, 23, 20, 8, 133, 20, 12, 196, 133, 3, 20, 10, 135, 4,
-			197, 186, 7, 14, 196, 153, 20, 0, 8, 197, 104, 65, 80, 13, 160, 20, 9, 134, 13, 4, 12, 196, 133, 3, 20, 9, 134, 12, 197, 188,
-			196, 133, 3, 20, 9, 134, 7, 197, 188, 196, 133, 3, 20, 6, 65, 52, 109, 65, 0, 0, 12, 137, 23, 3, 8, 18, 26, 3, 26, 196,
-			153, 20, 8, 133, 13, 11, 14, 196, 153, 20, 0, 9, 134, 19, 26, 3, 26, 196, 153, 20, 9, 134, 3, 26, 3, 26, 196, 153, 20, 0,
-			7, 196, 104, 211, 195, 104, 20, 10, 135, 13, 19, 26, 3, 26, 196, 153, 20, 7, 196, 9, 38, 141, 36, 20, 0, 11, 136, 3, 8, 18,
-			26, 3, 26, 196, 153, 20, 6, 65, 56, 109, 50, 0, 0, 9, 198, 92, 145, 83, 104, 54, 128, 20, 16, 66, 57, 0, 50, 35, 48, 91,
-			6, 112, 49, 58, 35, 72, 0, 24, 0, 8, 133, 23, 18, 1, 197, 186, 20, 0, 6, 195, 44, 20, 141, 20, 19, 67, 64, 246, 129, 48,
-			111, 88, 6, 35, 67, 37, 65, 0, 81, 110, 105, 109, 32, 20, 67, 64, 246, 129, 48, 111, 88, 6, 35, 67, 38, 114, 0, 81, 110, 105,
-			196, 133, 32, 20, 67, 64, 246, 129, 48, 111, 88, 6, 35, 65, 50, 114, 0, 81, 109, 110, 196, 133, 32, 30, 7, 13, 1, 9, 20, 18,
-			195, 169, 65, 109, 47, 51, 109, 72, 111, 47, 6, 109, 55, 0, 81, 100, 39, 104, 111, 116, 101, 108, 32, 0, 14, 65, 60, 6, 111, 84,
-			35, 89, 0, 81, 119, 97, 115, 32, 15, 65, 60, 6, 111, 47, 112, 65, 10, 0, 81, 116, 121, 109, 32, 15, 65, 60, 6, 111, 47, 112,
-			107, 0, 81, 116, 121, 99, 104, 32, 12, 65, 60, 6, 111, 47, 111, 0, 81, 116, 111, 32, 12, 65, 60, 6, 111, 47, 109, 0, 81, 116,
-			101, 32, 13, 65, 60, 6, 111, 47, 114, 0, 81, 116, 196, 133, 32, 15, 65, 60, 6, 111, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32,
-			14, 65, 60, 6, 111, 67, 38, 109, 0, 81, 110, 105, 101, 32, 14, 65, 60, 6, 111, 67, 37, 65, 0, 81, 110, 105, 109, 32, 16, 65,
-			60, 6, 111, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 14, 65, 60, 6, 111, 50, 35, 89, 0, 81, 110, 97, 115, 32, 16, 65,
-			60, 6, 111, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 4, 193, 60, 76, 0, 14, 1, 61, 51, 6, 40, 84, 50, 35, 15, 97,
-			109, 0, 27, 0, 0, 7, 196, 52, 179, 137, 20, 20, 0, 8, 133, 19, 20, 196, 133, 16, 20, 10, 1, 64, 65, 6, 35, 58, 48, 35,
-			0, 6, 65, 64, 48, 109, 0, 0, 9, 134, 23, 19, 20, 196, 133, 16, 20, 15, 70, 12, 128, 78, 76, 243, 128, 91, 35, 50, 89, 114,
-			0, 66, 0, 0, 0, 8, 197, 105, 114, 69, 77, 160, 20, 8, 197, 73, 114, 69, 77, 160, 20, 8, 197, 28, 226, 69, 77, 160, 20, 6,
-			65, 68, 49, 40, 0, 0, 0, 14, 67, 16, 240, 192, 72, 6, 111, 117, 109, 50, 47, 0, 24, 0, 9, 134, 23, 9, 12, 7, 197, 130,
-			20, 9, 134, 4, 14, 9, 15, 197, 130, 20, 0, 10, 135, 197, 155, 13, 9, 15, 197, 130, 20, 10, 135, 19, 20, 197, 130, 21, 3, 26,
-			20, 9, 134, 19, 16, 19, 15, 196, 135, 20, 10, 135, 19, 16, 197, 130, 21, 3, 26, 20, 9, 134, 197, 130, 7, 15, 196, 135, 20, 6,
-			65, 72, 109, 51, 0, 0, 10, 135, 23, 4, 26, 9, 15, 196, 135, 20, 9, 134, 197, 155, 3, 9, 5, 12, 20, 10, 135, 4, 197, 186,
-			7, 15, 196, 135, 20, 17, 70, 16, 85, 137, 12, 84, 192, 72, 37, 84, 35, 57, 89, 37, 89, 0, 0, 0, 0, 10, 135, 23, 196, 135,
-			23, 9, 3, 26, 20, 6, 195, 92, 34, 74, 20, 6, 65, 76, 109, 91, 0, 0, 7, 196, 77, 0, 82, 104, 20, 6, 195, 77, 0, 76,
-			20, 9, 198, 76, 180, 154, 101, 54, 128, 20, 0, 0, 21, 72, 13, 84, 146, 36, 53, 76, 84, 208, 49, 40, 51, 6, 37, 49, 40, 55,
-			40, 65, 0, 0, 8, 197, 80, 181, 201, 77, 160, 20, 9, 134, 197, 155, 3, 9, 5, 3, 20, 8, 197, 77, 161, 77, 73, 160, 20, 6,
-			65, 80, 47, 109, 0, 0, 0, 9, 134, 197, 188, 7, 14, 196, 153, 20, 7, 132, 13, 195, 179, 23, 20, 8, 133, 13, 9, 15, 197, 130,
-			20, 7, 195, 4, 226, 64, 76, 8, 0, 10, 135, 19, 26, 197, 130, 1, 2, 25, 20, 9, 198, 104, 208, 82, 77, 160, 218, 20, 6, 195,
-			77, 163, 9, 20, 7, 132, 19, 195, 179, 12, 20, 7, 196, 52, 145, 82, 104, 20, 9, 134, 197, 130, 7, 15, 197, 130, 20, 6, 195, 52,
-			226, 69, 72, 0, 7, 132, 26, 23, 196, 153, 20, 10, 135, 23, 12, 195, 179, 11, 197, 130, 20, 10, 135, 23, 4, 26, 9, 15, 197, 130,
-			20, 7, 132, 7, 14, 196, 153, 20, 10, 135, 4, 197, 186, 7, 15, 197, 130, 20, 10, 135, 3, 8, 3, 9, 15, 197, 130, 20, 0, 10,
-			135, 197, 155, 13, 9, 15, 196, 135, 20, 8, 133, 19, 26, 197, 130, 1, 20, 8, 133, 12, 7, 14, 196, 153, 20, 0, 6, 195, 93, 146,
-			128, 20, 12, 137, 23, 197, 155, 3, 9, 5, 11, 197, 130, 20, 0, 7, 196, 104, 161, 83, 104, 20, 9, 134, 16, 12, 23, 15, 197, 130,
-			20, 9, 198, 13, 162, 206, 36, 84, 218, 20, 0, 7, 65, 88, 83, 35, 58, 0, 0, 11, 136, 26, 23, 12, 195, 179, 11, 197, 130, 20,
-			7, 132, 11, 195, 179, 10, 20, 0, 14, 67, 52, 80, 192, 65, 109, 117, 109, 50, 35, 89, 0, 24, 0, 9, 134, 26, 4, 23, 195, 179,
-			10, 20, 15, 4, 95, 49, 77, 52, 71, 38, 6, 37, 55, 57, 111, 50, 0, 0, 12, 69, 40, 16, 203, 36, 80, 75, 109, 49, 37, 0,
-			13, 1, 92, 71, 6, 109, 49, 89, 55, 109, 91, 0, 27, 8, 65, 92, 84, 112, 0, 72, 14, 0, 8, 197, 93, 0, 84, 73, 160, 20,
-			0, 10, 1, 94, 72, 6, 35, 91, 109, 49, 0, 0, 7, 196, 104, 65, 82, 104, 20, 7, 196, 48, 115, 137, 20, 20, 0, 7, 132, 18,
-			23, 196, 133, 20, 6, 195, 52, 226, 74, 20, 16, 7, 4, 39, 1, 13, 15, 21, 18, 72, 35, 65, 40, 51, 0, 66, 11, 1, 96, 6,
-			35, 49, 117, 109, 50, 47, 0, 7, 65, 96, 37, 49, 89, 0, 14, 4, 95, 49, 77, 49, 47, 6, 112, 97, 111, 50, 117, 0, 0, 8,
-			133, 197, 188, 18, 196, 153, 20, 22, 66, 4, 64, 35, 72, 6, 111, 49, 40, 55, 111, 89, 0, 81, 111, 99, 117, 108, 111, 115, 32, 16,
-			66, 4, 64, 35, 72, 107, 6, 111, 49, 0, 81, 104, 111, 99, 32, 15, 4, 95, 49, 77, 50, 65, 38, 6, 37, 55, 57, 111, 50, 0,
-			0, 16, 4, 95, 49, 77, 51, 65, 38, 6, 37, 55, 57, 35, 51, 72, 0, 0, 22, 5, 16, 16, 197, 130, 11, 48, 111, 47, 48, 40,
-			58, 49, 6, 111, 84, 50, 37, 49, 0, 24, 0, 9, 134, 16, 12, 23, 15, 196, 135, 20, 9, 134, 13, 15, 197, 155, 196, 135, 20, 8,
-			197, 17, 33, 80, 13, 160, 20, 7, 132, 196, 135, 16, 1, 20, 10, 65, 100, 6, 37, 81, 51, 109, 49, 0, 0, 0, 0, 7, 132, 7,
-			15, 197, 132, 20, 22, 72, 13, 83, 66, 21, 35, 1, 56, 64, 49, 6, 35, 65, 71, 109, 51, 55, 109, 50, 72, 0, 0, 9, 134, 197,
-			188, 7, 15, 196, 135, 20, 10, 135, 26, 12, 196, 133, 11, 197, 130, 20, 9, 134, 23, 19, 9, 15, 196, 135, 20, 9, 134, 10, 5, 197,
-			155, 196, 135, 20, 8, 65, 104, 88, 112, 0, 72, 14, 0, 9, 134, 26, 13, 25, 197, 155, 12, 20, 10, 135, 26, 1, 10, 197, 155, 196,
-			135, 20, 10, 135, 23, 25, 10, 197, 155, 196, 135, 20, 11, 136, 23, 19, 9, 196, 133, 11, 197, 130, 20, 10, 135, 16, 12, 5, 197, 155,
-			196, 135, 20, 11, 136, 2, 18, 26, 13, 9, 15, 197, 130, 20, 0, 19, 67, 12, 148, 192, 117, 37, 89, 65, 6, 111, 55, 0, 81, 109,
-			111, 108, 108, 32, 18, 67, 12, 148, 192, 117, 37, 89, 72, 6, 40, 51, 0, 81, 100, 117, 114, 32, 0, 9, 134, 197, 155, 13, 9, 5,
-			10, 20, 14, 68, 5, 48, 201, 36, 6, 35, 89, 49, 109, 57, 0, 17, 0, 0, 0, 0, 0, 6, 195, 80, 240, 218, 20, 9, 134, 19,
-			3, 8, 197, 130, 15, 20, 0, 9, 198, 104, 210, 69, 73, 165, 192, 20, 10, 135, 19, 26, 3, 26, 196, 133, 3, 20, 0, 0, 9, 134,
-			197, 188, 7, 15, 197, 130, 20, 8, 133, 26, 13, 195, 179, 23, 20, 9, 134, 23, 19, 9, 15, 197, 130, 20, 7, 196, 48, 115, 137, 40,
-			20, 12, 137, 3, 8, 18, 26, 3, 26, 196, 133, 3, 20, 9, 134, 2, 12, 1, 11, 197, 130, 20, 16, 4, 9, 14, 197, 188, 37, 50,
-			90, 6, 112, 67, 109, 51, 0, 24, 0, 8, 197, 104, 210, 69, 73, 160, 20, 6, 195, 104, 193, 74, 20, 10, 135, 26, 2, 12, 1, 11,
-			197, 130, 20, 7, 132, 18, 23, 196, 153, 20, 0, 8, 133, 26, 197, 130, 15, 13, 20, 10, 135, 23, 5, 10, 197, 155, 196, 135, 20, 0,
-			10, 199, 92, 50, 18, 104, 50, 83, 104, 20, 11, 136, 20, 197, 130, 21, 197, 155, 196, 135, 20, 0, 9, 134, 26, 23, 9, 15, 197, 130,
-			20, 9, 134, 20, 197, 130, 21, 3, 26, 20, 7, 196, 77, 2, 83, 104, 20, 9, 134, 12, 196, 133, 11, 197, 130, 20, 9, 198, 17, 33,
-			206, 36, 84, 218, 20, 0, 6, 195, 104, 70, 66, 20, 13, 138, 19, 20, 18, 26, 196, 133, 197, 155, 196, 135, 20, 13, 138, 19, 16, 18,
-			26, 196, 133, 197, 155, 196, 135, 20, 13, 138, 3, 8, 18, 26, 196, 153, 197, 155, 196, 135, 20, 13, 69, 40, 19, 137, 12, 80, 75, 109,
-			67, 37, 89, 0, 0, 9, 198, 104, 116, 154, 21, 54, 128, 20, 9, 198, 76, 180, 154, 21, 54, 128, 20, 0, 9, 134, 19, 3, 8, 197,
-			130, 1, 20, 0, 6, 195, 104, 64, 77, 20, 9, 134, 196, 135, 23, 9, 3, 26, 20, 7, 196, 13, 161, 77, 84, 76, 0, 20, 1, 124,
-			49, 51, 4, 109, 89, 49, 35, 15, 48, 38, 111, 50, 6, 111, 84, 35, 0, 0, 8, 133, 19, 26, 197, 130, 25, 20, 9, 198, 44, 195,
-			137, 21, 54, 128, 20, 0, 10, 1, 126, 47, 6, 112, 55, 72, 35, 0, 0, 8, 133, 26, 13, 195, 179, 3, 20, 7, 132, 19, 196, 153,
-			16, 20, 0, 7, 132, 26, 23, 196, 133, 20, 6, 195, 104, 64, 74, 20, 0, 0, 0, 0, 9, 134, 26, 23, 9, 15, 196, 135, 20, 8,
-			197, 76, 50, 18, 85, 0, 20, 9, 134, 16, 1, 197, 155, 196, 135, 20, 0, 10, 135, 26, 5, 10, 197, 155, 196, 135, 20, 10, 135, 7,
-			18, 26, 13, 15, 196, 135, 20, 10, 135, 4, 15, 10, 197, 155, 196, 135, 20, 0, 11, 136, 23, 26, 5, 10, 197, 155, 196, 135, 20, 11,
-			136, 19, 9, 196, 133, 197, 155, 196, 135, 20, 0, 7, 196, 77, 162, 204, 36, 20, 12, 137, 16, 18, 26, 5, 10, 197, 155, 196, 135, 20,
-			7, 196, 17, 162, 65, 8, 20, 0, 8, 197, 104, 70, 137, 20, 192, 20, 8, 197, 77, 4, 201, 20, 160, 20, 0, 8, 133, 19, 20, 12,
-			196, 133, 20, 0, 0, 0, 0, 7, 132, 23, 15, 197, 186, 20, 0, 0, 9, 134, 26, 10, 1, 4, 197, 130, 20, 9, 134, 19, 26, 5,
-			4, 197, 130, 20, 7, 196, 29, 38, 141, 36, 20, 0, 11, 136, 23, 9, 12, 7, 197, 130, 2, 25, 20, 11, 136, 4, 14, 9, 15, 197,
-			130, 2, 25, 20, 10, 135, 23, 19, 26, 5, 4, 197, 130, 20, 8, 197, 76, 96, 74, 13, 160, 20, 10, 135, 16, 12, 195, 179, 20, 197,
-			130, 20, 0, 12, 137, 197, 155, 13, 9, 15, 197, 130, 2, 25, 20, 11, 136, 26, 2, 18, 26, 25, 4, 197, 130, 20, 11, 136, 23, 16,
-			12, 195, 179, 20, 197, 130, 20, 11, 136, 19, 16, 12, 195, 179, 20, 197, 130, 20, 11, 136, 7, 14, 9, 195, 179, 20, 197, 130, 20, 0,
-			0, 9, 134, 20, 23, 195, 179, 18, 26, 20, 0, 11, 136, 16, 12, 23, 15, 197, 130, 2, 25, 20, 10, 135, 11, 18, 26, 5, 16, 197,
-			130, 20, 0, 11, 136, 26, 23, 9, 195, 179, 4, 197, 130, 20, 0, 13, 138, 26, 23, 12, 195, 179, 11, 197, 130, 2, 25, 20, 0, 7,
-			196, 93, 2, 83, 104, 20, 0, 6, 195, 40, 81, 26, 20, 0, 0, 0, 33, 7, 3, 8, 1, 18, 7, 195, 169, 91, 35, 51, 90, 109,
-			72, 35, 83, 109, 51, 0, 68, 81, 100, 39, 97, 102, 102, 97, 105, 114, 101, 115, 32, 0, 8, 197, 76, 50, 12, 60, 208, 20, 6, 195,
-			29, 32, 74, 20, 6, 195, 13, 160, 74, 20, 0, 8, 133, 19, 20, 12, 196, 153, 20, 0, 0, 6, 195, 29, 32, 77, 20, 18, 72, 8,
-			80, 85, 40, 243, 1, 37, 48, 71, 111, 90, 111, 55, 6, 109, 0, 0, 0, 0, 9, 134, 19, 3, 8, 197, 130, 25, 20, 20, 71, 13,
-			80, 137, 13, 83, 21, 52, 49, 40, 71, 6, 37, 49, 40, 55, 40, 65, 0, 0, 7, 196, 77, 2, 69, 12, 20, 7, 196, 13, 162, 193,
-			40, 20, 0, 6, 195, 13, 165, 74, 20, 8, 197, 8, 16, 129, 12, 128, 66, 0, 0, 0, 7, 196, 64, 50, 1, 40, 20, 7, 196, 45,
-			32, 67, 104, 20, 0, 6, 195, 93, 165, 74, 20, 0, 13, 66, 17, 32, 72, 6, 111, 49, 47, 111, 51, 0, 24, 0, 0, 8, 133, 23,
-			4, 15, 196, 135, 20, 7, 196, 77, 162, 207, 48, 20, 8, 133, 11, 15, 16, 196, 135, 20, 0, 6, 195, 93, 38, 74, 20, 6, 195, 77,
-			166, 74, 20, 9, 134, 19, 11, 15, 16, 196, 135, 20, 8, 197, 9, 161, 21, 73, 160, 20, 0, 10, 135, 23, 26, 14, 9, 5, 196, 135,
-			20, 11, 136, 23, 26, 7, 1, 18, 4, 197, 186, 20, 11, 136, 197, 155, 23, 9, 19, 26, 3, 26, 20, 0, 8, 133, 23, 4, 15, 197,
-			130, 20, 8, 133, 16, 1, 4, 197, 130, 20, 7, 132, 11, 15, 197, 155, 20, 0, 9, 134, 19, 20, 25, 7, 197, 130, 20, 7, 196, 64,
-			197, 207, 52, 20, 7, 196, 17, 33, 207, 52, 20, 9, 134, 2, 12, 1, 4, 197, 130, 20, 0, 15, 140, 19, 3, 8, 197, 130, 25, 2,
-			25, 197, 155, 13, 25, 20, 10, 135, 26, 2, 12, 1, 4, 197, 130, 20, 10, 135, 23, 9, 196, 133, 4, 197, 130, 20, 8, 197, 12, 131,
-			85, 73, 160, 20, 21, 73, 88, 147, 129, 36, 116, 133, 81, 65, 64, 58, 37, 50, 109, 81, 34, 109, 47, 0, 67, 0, 11, 136, 26, 23,
-			9, 196, 133, 4, 197, 130, 20, 11, 136, 26, 13, 9, 195, 179, 20, 197, 130, 20, 11, 136, 23, 13, 9, 195, 179, 20, 197, 130, 20, 8,
-			133, 12, 197, 155, 14, 9, 20, 0, 6, 195, 13, 166, 64, 72, 0, 7, 196, 77, 4, 149, 40, 20, 9, 134, 11, 23, 9, 20, 197, 130,
-			20, 7, 196, 17, 38, 153, 40, 20, 7, 196, 17, 33, 193, 40, 20, 0, 10, 135, 197, 155, 12, 5, 16, 197, 130, 20, 0, 0, 13, 138,
-			26, 23, 9, 195, 179, 26, 197, 130, 2, 25, 20, 8, 133, 18, 1, 4, 197, 186, 20, 9, 134, 4, 197, 186, 7, 15, 13, 20, 0, 9,
-			134, 26, 10, 5, 4, 197, 186, 20, 0, 0, 12, 137, 2, 25, 197, 130, 25, 197, 155, 13, 25, 76, 0, 13, 138, 19, 26, 12, 9, 2,
-			25, 197, 155, 13, 25, 20, 13, 138, 13, 9, 1, 197, 130, 25, 197, 155, 13, 25, 76, 0, 13, 138, 19, 3, 8, 197, 130, 15, 19, 26,
-			3, 26, 20, 7, 196, 64, 50, 1, 52, 20, 0, 10, 135, 26, 23, 195, 179, 4, 197, 186, 20, 10, 135, 19, 26, 11, 15, 4, 197, 186,
-			20, 7, 195, 61, 32, 90, 72, 28, 0, 11, 136, 26, 197, 130, 21, 19, 26, 3, 26, 20, 0, 0, 7, 196, 80, 179, 137, 20, 20, 7,
-			196, 17, 33, 193, 52, 20, 7, 196, 13, 162, 193, 52, 20, 0, 11, 136, 26, 12, 1, 26, 197, 130, 2, 25, 20, 0, 12, 137, 26, 12,
-			196, 133, 11, 197, 130, 2, 25, 20, 0, 13, 138, 23, 19, 9, 196, 133, 11, 197, 130, 2, 25, 20, 13, 138, 2, 18, 26, 13, 9, 15,
-			197, 130, 2, 25, 20, 0, 7, 196, 93, 50, 69, 40, 20, 7, 196, 76, 50, 12, 4, 20, 0, 11, 136, 26, 23, 9, 15, 197, 130, 2,
-			25, 20, 11, 136, 12, 196, 133, 11, 197, 130, 2, 25, 20, 8, 197, 76, 50, 12, 5, 0, 20, 0, 8, 133, 7, 26, 9, 196, 133, 20,
-			6, 195, 60, 35, 203, 76, 0, 8, 133, 197, 155, 14, 9, 10, 20, 9, 134, 4, 197, 186, 7, 1, 13, 20, 0, 9, 134, 23, 196, 153,
-			4, 197, 186, 20, 9, 134, 19, 26, 25, 4, 197, 186, 20, 8, 133, 7, 26, 9, 196, 135, 20, 9, 134, 196, 135, 16, 1, 19, 26, 20,
-			10, 135, 11, 20, 195, 179, 18, 25, 13, 76, 0, 9, 134, 26, 19, 26, 25, 196, 135, 20, 10, 135, 26, 4, 18, 1, 4, 197, 186, 20,
-			9, 134, 26, 2, 9, 5, 197, 155, 20, 8, 197, 77, 162, 204, 36, 160, 20, 9, 134, 19, 11, 18, 25, 196, 135, 20, 9, 134, 16, 12,
-			23, 1, 196, 135, 20, 9, 134, 13, 197, 188, 25, 196, 135, 20, 9, 134, 13, 4, 12, 9, 196, 135, 20, 9, 134, 197, 130, 7, 1, 196,
-			135, 20, 0, 8, 133, 197, 188, 7, 15, 13, 20, 10, 135, 23, 26, 14, 9, 5, 197, 155, 20, 9, 134, 11, 18, 5, 197, 155, 12, 20,
-			10, 135, 4, 197, 186, 7, 1, 196, 135, 20, 11, 66, 13, 96, 89, 37, 84, 6, 37, 0, 17, 0, 9, 134, 197, 155, 16, 9, 196, 133,
-			20, 6, 195, 76, 48, 76, 20, 7, 132, 18, 25, 196, 135, 20, 7, 132, 16, 9, 196, 135, 20, 13, 138, 14, 9, 5, 11, 20, 195, 179,
-			18, 25, 13, 76, 0, 8, 133, 26, 13, 21, 197, 155, 20, 8, 133, 16, 19, 21, 196, 135, 20, 8, 133, 11, 18, 25, 196, 135, 20, 9,
-			134, 4, 197, 186, 7, 1, 10, 20, 0, 9, 134, 26, 197, 188, 25, 196, 135, 20, 10, 135, 26, 7, 195, 179, 4, 197, 186, 20, 9, 134,
-			23, 19, 26, 25, 196, 135, 20, 8, 197, 13, 160, 201, 77, 160, 20, 10, 135, 3, 8, 195, 179, 4, 197, 186, 20, 7, 195, 13, 166, 74,
-			72, 12, 0, 10, 135, 23, 4, 26, 9, 1, 196, 135, 20, 11, 136, 23, 3, 8, 195, 179, 4, 197, 186, 20, 10, 135, 197, 155, 13, 9,
-			1, 196, 135, 20, 11, 136, 19, 26, 11, 195, 179, 4, 197, 186, 20, 10, 135, 19, 16, 19, 9, 5, 196, 135, 20, 9, 134, 19, 197, 130,
-			25, 197, 132, 20, 11, 136, 19, 3, 8, 195, 179, 4, 197, 186, 20, 7, 132, 18, 25, 197, 130, 20, 7, 132, 16, 9, 197, 130, 20, 11,
-			136, 2, 197, 186, 4, 26, 9, 19, 26, 20, 0, 8, 133, 16, 19, 21, 197, 130, 20, 8, 133, 13, 9, 1, 197, 130, 20, 8, 133, 11,
-			18, 25, 197, 130, 20, 8, 133, 13, 9, 1, 197, 130, 76, 12, 137, 2, 196, 153, 4, 26, 9, 5, 19, 26, 76, 0, 9, 134, 26, 197,
-			188, 25, 197, 130, 20, 9, 134, 23, 19, 26, 25, 197, 130, 20, 9, 134, 197, 155, 3, 9, 21, 2, 20, 9, 134, 4, 14, 9, 1, 197,
-			130, 20, 6, 195, 13, 166, 77, 77, 0, 8, 133, 23, 19, 21, 197, 132, 20, 10, 135, 23, 4, 26, 9, 1, 197, 130, 20, 10, 135, 197,
-			155, 13, 9, 1, 197, 130, 20, 6, 195, 45, 38, 74, 20, 8, 133, 3, 26, 25, 197, 132, 20, 10, 135, 3, 8, 3, 9, 1, 197, 130,
-			20, 0, 9, 134, 26, 13, 9, 5, 197, 132, 20, 9, 134, 23, 20, 18, 25, 197, 132, 20, 7, 132, 20, 25, 197, 130, 20, 23, 66, 16,
-			80, 72, 109, 84, 111, 55, 6, 35, 57, 0, 81, 118, 111, 108, 97, 105, 108, 108, 101, 32, 25, 66, 16, 80, 72, 109, 55, 35, 65, 109,
-			88, 6, 114, 0, 82, 108, 97, 32, 109, 97, 105, 115, 111, 110, 32, 17, 66, 16, 80, 72, 109, 57, 40, 51, 109, 0, 81, 105, 117, 114,
-			101, 32, 19, 66, 16, 80, 72, 109, 83, 35, 49, 47, 111, 0, 81, 102, 97, 99, 116, 111, 32, 14, 70, 52, 21, 82, 36, 49, 64, 65,
-			111, 51, 37, 89, 0, 0, 0, 7, 196, 105, 114, 69, 40, 20, 9, 134, 26, 19, 26, 25, 197, 130, 20, 6, 195, 104, 67, 205, 20, 7,
-			196, 80, 179, 137, 40, 20, 7, 196, 77, 68, 149, 40, 20, 9, 134, 19, 11, 18, 25, 197, 130, 20, 9, 134, 16, 12, 23, 1, 197, 130,
-			20, 9, 134, 13, 197, 188, 25, 197, 130, 20, 9, 134, 13, 4, 12, 9, 197, 130, 20, 9, 134, 197, 130, 7, 1, 197, 130, 20, 0, 8,
-			197, 64, 50, 14, 36, 80, 20, 10, 135, 4, 197, 186, 7, 1, 197, 130, 20, 0, 0, 8, 133, 197, 188, 7, 1, 10, 20, 8, 133, 23,
-			9, 4, 197, 186, 20, 8, 133, 23, 1, 4, 197, 186, 20, 8, 133, 19, 1, 4, 197, 186, 20, 0, 9, 134, 26, 2, 21, 4, 197, 186,
-			20, 9, 134, 20, 18, 21, 4, 197, 186, 20, 9, 134, 19, 3, 5, 4, 197, 186, 20, 18, 4, 95, 4, 16, 20, 10, 48, 91, 109, 119,
-			6, 37, 50, 109, 49, 10, 0, 0, 10, 135, 19, 16, 196, 153, 4, 197, 186, 20, 10, 135, 19, 9, 196, 133, 4, 197, 186, 20, 0, 8,
-			133, 197, 188, 7, 1, 13, 20, 11, 136, 26, 2, 18, 26, 25, 4, 197, 186, 20, 9, 198, 104, 20, 19, 81, 38, 128, 20, 11, 136, 23,
-			19, 9, 196, 133, 4, 197, 186, 20, 9, 198, 77, 2, 69, 65, 38, 128, 20, 9, 198, 64, 244, 19, 81, 38, 128, 20, 0, 8, 133, 26,
-			197, 188, 21, 10, 20, 0, 7, 196, 40, 80, 149, 80, 66, 0, 7, 132, 13, 197, 188, 25, 20, 0, 11, 136, 19, 16, 18, 1, 23, 4,
-			197, 186, 20, 22, 67, 16, 145, 83, 116, 6, 37, 57, 109, 89, 6, 37, 51, 109, 0, 81, 105, 114, 97, 101, 32, 0, 6, 195, 104, 214,
-			76, 20, 9, 134, 197, 155, 16, 9, 196, 153, 20, 12, 137, 19, 11, 18, 26, 25, 23, 4, 197, 186, 20, 6, 195, 52, 243, 64, 20, 6,
-			195, 40, 83, 64, 20, 6, 195, 16, 19, 64, 20, 0, 7, 196, 105, 114, 69, 52, 20, 7, 196, 17, 162, 69, 48, 20, 0, 0, 0, 0,
-			7, 196, 76, 50, 12, 36, 20, 7, 196, 52, 67, 5, 40, 20, 7, 196, 40, 242, 131, 104, 20, 7, 196, 13, 160, 201, 40, 20, 7, 196,
-			12, 131, 5, 40, 20, 14, 4, 95, 20, 12, 4, 88, 47, 6, 112, 55, 72, 114, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 6,
-			195, 76, 181, 74, 20, 0, 0, 9, 134, 197, 155, 14, 9, 196, 133, 20, 6, 195, 76, 181, 76, 20, 8, 133, 14, 21, 4, 197, 186, 20,
-			7, 132, 2, 9, 196, 135, 20, 0, 7, 196, 93, 54, 153, 40, 20, 9, 134, 197, 155, 3, 9, 19, 26, 20, 8, 133, 19, 13, 21, 196,
-			135, 20, 8, 133, 7, 14, 9, 196, 135, 20, 8, 133, 3, 14, 9, 196, 135, 20, 12, 68, 5, 32, 213, 76, 35, 34, 49, 40, 89, 0,
-			0, 9, 134, 197, 188, 7, 1, 196, 135, 20, 10, 135, 26, 197, 130, 21, 4, 197, 186, 20, 6, 195, 92, 181, 74, 20, 9, 134, 197, 155,
-			14, 9, 196, 135, 20, 8, 197, 77, 68, 154, 21, 0, 20, 10, 135, 19, 20, 18, 21, 4, 197, 186, 20, 9, 134, 19, 20, 12, 9, 196,
-			135, 20, 9, 134, 11, 18, 196, 153, 196, 135, 20, 0, 10, 135, 23, 11, 18, 196, 153, 196, 135, 20, 10, 135, 19, 11, 18, 196, 153, 196,
-			135, 20, 8, 133, 11, 16, 9, 196, 133, 20, 0, 7, 132, 2, 25, 196, 135, 20, 14, 6, 3, 15, 21, 16, 195, 169, 49, 40, 48, 6,
-			109, 0, 7, 132, 2, 25, 196, 135, 76, 14, 67, 17, 97, 0, 72, 37, 84, 37, 72, 6, 37, 0, 17, 0, 8, 133, 23, 11, 21, 196,
-			135, 20, 8, 133, 19, 11, 21, 196, 135, 20, 8, 133, 14, 196, 153, 196, 135, 20, 8, 133, 11, 16, 9, 196, 135, 20, 7, 196, 29, 112,
-			82, 104, 20, 8, 133, 3, 12, 9, 196, 135, 20, 6, 195, 40, 83, 85, 72, 0, 9, 134, 26, 23, 9, 1, 196, 135, 20, 9, 134, 23,
-			19, 9, 1, 196, 135, 20, 8, 197, 77, 65, 82, 13, 160, 20, 6, 195, 76, 181, 66, 20, 8, 197, 64, 148, 218, 13, 160, 20, 0, 7,
-			132, 2, 25, 197, 130, 20, 7, 132, 2, 25, 197, 130, 76, 0, 8, 133, 23, 11, 21, 197, 130, 20, 8, 133, 19, 11, 21, 197, 130, 20,
-			8, 133, 11, 16, 9, 197, 130, 20, 11, 136, 7, 18, 26, 13, 9, 5, 196, 135, 20, 8, 133, 3, 12, 9, 197, 130, 20, 0, 12, 137,
-			16, 9, 15, 197, 130, 2, 25, 197, 155, 20, 9, 134, 26, 23, 9, 1, 197, 130, 20, 9, 134, 23, 19, 9, 1, 197, 130, 20, 12, 137,
-			11, 19, 26, 20, 1, 197, 130, 196, 135, 20, 0, 8, 133, 26, 19, 21, 197, 132, 20, 9, 134, 13, 11, 14, 196, 133, 3, 20, 0, 10,
-			135, 3, 26, 3, 26, 196, 133, 3, 20, 11, 136, 2, 18, 26, 13, 9, 1, 197, 130, 20, 7, 132, 2, 9, 197, 130, 20, 21, 66, 12,
-			144, 89, 37, 72, 109, 84, 6, 35, 68, 0, 81, 100, 101, 118, 97, 110, 116, 32, 6, 194, 12, 144, 72, 12, 0, 6, 195, 64, 145, 76,
-			20, 11, 136, 13, 19, 26, 3, 26, 196, 133, 3, 20, 8, 133, 7, 14, 9, 197, 130, 20, 8, 133, 3, 14, 9, 197, 130, 20, 0, 9,
-			134, 197, 188, 7, 1, 197, 130, 20, 7, 196, 104, 115, 137, 40, 20, 9, 134, 197, 155, 14, 9, 197, 130, 20, 9, 134, 19, 20, 12, 9,
-			197, 130, 20, 0, 0, 6, 195, 28, 20, 0, 20, 0, 0, 6, 195, 93, 38, 133, 20, 7, 196, 92, 179, 5, 40, 20, 9, 134, 16, 196,
-			153, 4, 197, 186, 20, 9, 134, 196, 135, 13, 9, 19, 26, 20, 0, 10, 135, 23, 16, 196, 153, 4, 197, 186, 20, 6, 195, 64, 145, 74,
-			20, 8, 197, 13, 162, 206, 36, 80, 20, 8, 197, 52, 22, 9, 52, 16, 65, 0, 8, 133, 13, 197, 155, 3, 9, 20, 0, 8, 133, 23,
-			197, 188, 25, 10, 20, 19, 71, 12, 244, 25, 72, 145, 200, 80, 49, 6, 111, 48, 112, 51, 35, 57, 47, 0, 0, 0, 10, 135, 197, 155,
-			16, 9, 5, 19, 26, 20, 0, 0, 0, 9, 198, 92, 50, 18, 104, 50, 74, 20, 0, 0, 0, 10, 67, 61, 32, 193, 111, 51, 49, 35,
-			0, 0, 7, 132, 13, 18, 196, 133, 20, 16, 70, 12, 128, 82, 52, 85, 82, 91, 35, 51, 65, 109, 51, 0, 66, 20, 67, 32, 16, 128,
-			107, 35, 71, 37, 55, 37, 47, 111, 84, 6, 35, 50, 112, 0, 24, 10, 135, 11, 20, 195, 179, 18, 26, 25, 76, 0, 7, 132, 23, 1,
-			197, 188, 20, 7, 196, 12, 131, 1, 40, 20, 0, 9, 134, 19, 11, 18, 26, 196, 133, 20, 0, 8, 133, 19, 11, 21, 197, 155, 20, 10,
-			135, 16, 19, 20, 18, 26, 196, 133, 20, 7, 132, 12, 9, 197, 186, 20, 8, 133, 11, 1, 18, 196, 135, 20, 13, 138, 14, 9, 5, 11,
-			20, 195, 179, 18, 26, 25, 76, 0, 7, 132, 23, 18, 196, 133, 20, 9, 134, 23, 9, 5, 18, 196, 135, 20, 7, 132, 197, 155, 12, 5,
-			20, 8, 133, 7, 18, 25, 197, 186, 20, 0, 9, 134, 23, 7, 18, 25, 197, 186, 20, 7, 132, 13, 1, 197, 188, 20, 7, 132, 12, 9,
-			197, 188, 20, 7, 196, 29, 32, 83, 104, 20, 0, 8, 197, 29, 38, 141, 36, 160, 20, 7, 132, 7, 1, 197, 155, 20, 0, 8, 133, 23,
-			13, 21, 197, 155, 20, 0, 0, 10, 135, 20, 18, 26, 196, 153, 197, 155, 20, 8, 133, 11, 16, 9, 196, 153, 20, 0, 13, 69, 77, 68,
-			133, 21, 64, 89, 47, 51, 37, 47, 0, 19, 67, 65, 3, 210, 48, 111, 72, 48, 111, 51, 6, 40, 76, 67, 37, 49, 0, 24, 0, 0,
-			9, 134, 197, 188, 18, 196, 133, 3, 20, 9, 134, 2, 18, 14, 196, 133, 3, 20, 0, 10, 135, 197, 188, 7, 14, 196, 133, 3, 20, 7,
-			196, 92, 179, 5, 64, 20, 10, 135, 20, 3, 8, 14, 196, 133, 3, 20, 16, 70, 24, 244, 151, 5, 33, 0, 83, 111, 51, 58, 109, 51,
-			72, 0, 0, 9, 134, 197, 155, 14, 9, 196, 153, 20, 10, 135, 19, 197, 130, 1, 2, 197, 130, 20, 0, 8, 133, 3, 12, 196, 133, 3,
-			20, 7, 195, 81, 147, 73, 72, 12, 0, 9, 134, 197, 155, 12, 196, 133, 3, 20, 0, 9, 198, 104, 211, 137, 20, 164, 218, 20, 10, 135,
-			197, 130, 197, 188, 196, 133, 3, 20, 7, 196, 45, 114, 67, 104, 20, 10, 135, 4, 18, 197, 188, 196, 133, 3, 20, 0, 8, 133, 23, 196,
-			133, 20, 16, 20, 24, 69, 65, 38, 133, 104, 80, 48, 91, 109, 88, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 20, 73,
-			72, 21, 1, 80, 245, 73, 48, 193, 64, 34, 35, 47, 35, 47, 40, 57, 0, 67, 0, 6, 195, 29, 35, 205, 20, 0, 8, 133, 23, 9,
-			5, 197, 186, 20, 6, 195, 64, 146, 128, 20, 6, 195, 16, 18, 128, 20, 6, 195, 40, 82, 128, 72, 0, 7, 196, 105, 54, 153, 40, 20,
-			7, 196, 76, 179, 5, 40, 20, 0, 14, 69, 52, 17, 1, 52, 80, 65, 35, 72, 6, 35, 65, 0, 12, 137, 16, 15, 14, 9, 5, 23,
-			1, 197, 188, 8, 0, 9, 198, 93, 54, 133, 64, 54, 128, 20, 6, 195, 13, 160, 201, 20, 0, 7, 132, 197, 155, 14, 9, 20, 9, 134,
-			19, 11, 23, 1, 197, 155, 20, 7, 195, 81, 147, 64, 72, 12, 18, 67, 57, 83, 64, 50, 40, 65, 55, 111, 49, 0, 81, 108, 111, 99,
-			107, 32, 0, 9, 134, 12, 197, 188, 25, 19, 26, 20, 0, 0, 0, 6, 195, 92, 181, 80, 20, 7, 132, 13, 18, 196, 153, 20, 18, 67,
-			52, 243, 128, 65, 114, 91, 109, 51, 0, 66, 81, 99, 104, 101, 114, 32, 18, 67, 52, 243, 128, 65, 111, 50, 35, 65, 37, 0, 67, 81,
-			97, 109, 105, 32, 0, 8, 133, 3, 14, 9, 196, 153, 20, 0, 6, 195, 77, 50, 74, 20, 0, 0, 17, 8, 3, 15, 12, 12, 195, 168,
-			7, 5, 49, 111, 55, 109, 90, 0, 66, 16, 67, 52, 116, 128, 65, 35, 81, 6, 37, 89, 47, 109, 51, 0, 24, 0, 7, 196, 93, 67,
-			195, 104, 20, 7, 196, 92, 116, 129, 40, 20, 22, 73, 52, 17, 5, 52, 242, 83, 20, 195, 5, 65, 35, 72, 65, 40, 35, 88, 6, 109,
-			55, 0, 12, 68, 17, 34, 86, 20, 72, 34, 35, 57, 84, 0, 0, 8, 197, 64, 50, 14, 36, 160, 20, 0, 9, 134, 23, 19, 11, 1,
-			197, 188, 20, 9, 134, 18, 26, 196, 153, 197, 188, 20, 0, 0, 9, 134, 23, 23, 9, 5, 197, 186, 20, 10, 135, 23, 23, 9, 5, 18,
-			196, 135, 20, 10, 135, 23, 7, 9, 196, 153, 196, 135, 20, 0, 9, 134, 19, 3, 8, 14, 196, 133, 20, 10, 135, 7, 12, 196, 153, 4,
-			197, 186, 20, 16, 3, 226, 132, 162, 47, 51, 6, 109, 57, 72, 65, 35, 51, 49, 0, 0, 8, 133, 26, 12, 15, 196, 135, 20, 9, 134,
-			16, 18, 196, 153, 197, 188, 20, 8, 133, 11, 15, 18, 196, 135, 20, 0, 11, 136, 23, 19, 26, 3, 26, 14, 196, 133, 20, 7, 132, 23,
-			18, 196, 153, 20, 9, 134, 19, 13, 196, 153, 196, 135, 20, 9, 134, 19, 11, 15, 18, 196, 135, 20, 8, 133, 18, 15, 4, 197, 186, 20,
-			9, 134, 12, 5, 197, 186, 196, 135, 20, 0, 9, 134, 18, 26, 196, 153, 197, 186, 20, 7, 196, 64, 50, 15, 52, 20, 7, 196, 12, 131,
-			1, 64, 20, 0, 0, 7, 132, 18, 196, 133, 2, 20, 12, 137, 7, 18, 26, 196, 133, 197, 186, 196, 135, 20, 0, 8, 133, 26, 12, 15,
-			197, 130, 20, 9, 134, 11, 12, 14, 196, 133, 3, 20, 13, 138, 4, 197, 186, 7, 14, 9, 196, 153, 196, 135, 20, 0, 7, 196, 104, 37,
-			82, 104, 20, 9, 198, 77, 3, 204, 77, 160, 218, 20, 9, 198, 76, 181, 201, 21, 32, 218, 20, 10, 135, 19, 3, 8, 14, 196, 133, 3,
-			20, 0, 9, 134, 19, 11, 18, 26, 196, 153, 20, 14, 6, 13, 195, 188, 19, 12, 9, 65, 40, 89, 55, 37, 0, 0, 10, 135, 16, 19,
-			20, 18, 26, 196, 153, 20, 5, 194, 8, 240, 8, 0, 8, 133, 26, 14, 15, 197, 130, 20, 9, 134, 18, 197, 188, 196, 133, 3, 20, 9,
-			134, 13, 197, 188, 196, 133, 3, 20, 0, 9, 134, 26, 23, 1, 18, 197, 130, 20, 9, 134, 26, 20, 1, 18, 197, 130, 20, 9, 134, 23,
-			20, 1, 18, 197, 130, 20, 9, 134, 23, 16, 1, 18, 197, 130, 20, 7, 132, 11, 1, 197, 188, 20, 0, 12, 69, 12, 130, 76, 48, 144,
-			76, 37, 55, 37, 0, 0, 0, 0, 7, 196, 52, 147, 3, 104, 20, 22, 72, 77, 1, 67, 36, 19, 9, 80, 80, 89, 48, 109, 89, 57,
-			35, 55, 37, 47, 6, 109, 0, 0, 0, 0, 0, 9, 134, 11, 15, 197, 132, 3, 26, 20, 12, 137, 13, 9, 5, 12, 9, 197, 155, 13,
-			25, 76, 0, 0, 9, 198, 4, 195, 9, 76, 243, 128, 65, 0, 0, 7, 196, 76, 181, 82, 92, 20, 0, 8, 197, 77, 163, 9, 9, 144,
-			20, 0, 9, 134, 26, 19, 20, 196, 133, 16, 20, 0, 6, 195, 92, 64, 64, 20, 6, 195, 17, 144, 128, 20, 0, 7, 196, 92, 54, 149,
-			40, 20, 7, 196, 81, 35, 195, 104, 20, 7, 196, 77, 67, 195, 104, 20, 0, 0, 6, 195, 77, 67, 9, 20, 8, 133, 16, 18, 15, 196,
-			135, 20, 0, 9, 134, 26, 7, 18, 15, 196, 135, 20, 7, 132, 19, 19, 196, 133, 20, 8, 133, 19, 196, 133, 3, 26, 20, 6, 195, 76,
-			64, 64, 17, 0, 9, 134, 26, 197, 130, 195, 179, 10, 20, 9, 134, 23, 11, 18, 195, 179, 10, 20, 9, 134, 19, 11, 18, 195, 179, 10,
-			20, 7, 196, 13, 161, 83, 104, 20, 0, 6, 195, 92, 193, 74, 20, 8, 197, 13, 162, 206, 36, 160, 20, 0, 8, 133, 26, 14, 15, 197,
-			155, 20, 8, 133, 26, 4, 15, 196, 135, 20, 8, 133, 19, 20, 15, 196, 135, 20, 6, 195, 16, 32, 77, 20, 16, 67, 57, 97, 1, 109,
-			50, 83, 35, 58, 72, 109, 6, 35, 0, 17, 0, 9, 134, 7, 15, 197, 155, 196, 135, 20, 0, 7, 196, 61, 53, 18, 104, 20, 10, 135,
-			11, 197, 130, 195, 179, 196, 135, 20, 0, 8, 197, 17, 37, 201, 77, 160, 20, 0, 12, 137, 16, 18, 26, 25, 10, 197, 155, 196, 135, 20,
-			21, 67, 64, 17, 197, 48, 109, 57, 75, 72, 6, 35, 58, 50, 0, 81, 100, 111, 119, 110, 32, 17, 67, 64, 17, 197, 48, 109, 57, 75,
-			6, 35, 48, 0, 81, 117, 112, 32, 0, 8, 133, 26, 4, 15, 197, 130, 20, 11, 136, 23, 19, 26, 3, 26, 14, 196, 153, 20, 6, 195,
-			92, 179, 208, 20, 8, 133, 20, 12, 15, 197, 130, 20, 8, 133, 19, 20, 15, 197, 130, 20, 0, 6, 195, 92, 193, 67, 20, 7, 196, 92,
-			68, 129, 64, 20, 0, 10, 135, 26, 18, 195, 179, 19, 197, 130, 20, 8, 197, 104, 116, 129, 77, 160, 20, 10, 135, 23, 18, 195, 179, 19,
-			197, 130, 20, 10, 135, 14, 9, 195, 179, 19, 197, 130, 20, 6, 195, 16, 32, 74, 20, 0, 11, 136, 23, 26, 18, 195, 179, 19, 197, 130,
-			20, 11, 136, 19, 20, 18, 26, 5, 7, 197, 130, 20, 5, 194, 40, 16, 76, 0, 9, 134, 26, 197, 130, 195, 179, 23, 20, 12, 137, 23,
-			26, 14, 9, 195, 179, 19, 197, 130, 20, 6, 195, 81, 146, 128, 20, 8, 133, 16, 18, 15, 197, 130, 20, 8, 133, 7, 1, 19, 197, 130,
-			20, 6, 195, 12, 194, 64, 20, 0, 13, 138, 26, 197, 188, 195, 179, 197, 130, 11, 197, 130, 20, 9, 134, 26, 7, 18, 15, 197, 130, 20,
-			7, 196, 104, 116, 129, 8, 20, 11, 136, 23, 3, 8, 197, 130, 15, 197, 132, 20, 7, 196, 53, 35, 195, 104, 20, 6, 195, 36, 50, 0,
-			72, 0, 0, 9, 198, 76, 50, 12, 36, 38, 64, 20, 9, 198, 80, 179, 137, 21, 54, 128, 20, 0, 0, 7, 196, 92, 19, 3, 104, 20,
-			7, 196, 77, 160, 218, 4, 20, 0, 0, 8, 133, 16, 18, 15, 197, 155, 20, 9, 198, 29, 38, 141, 37, 54, 128, 20, 0, 0, 12, 68,
-			40, 19, 133, 80, 75, 35, 50, 109, 47, 0, 0, 9, 134, 19, 3, 8, 14, 196, 153, 20, 6, 195, 64, 20, 154, 20, 13, 69, 16, 147,
-			135, 33, 144, 116, 37, 68, 81, 37, 0, 0, 6, 195, 80, 18, 201, 76, 0, 11, 136, 11, 20, 195, 179, 18, 5, 13, 21, 76, 10, 199,
-			12, 19, 129, 88, 84, 129, 48, 66, 0, 9, 198, 93, 38, 133, 77, 160, 218, 20, 7, 196, 92, 181, 82, 92, 20, 7, 196, 92, 116, 129,
-			52, 20, 12, 68, 12, 148, 131, 4, 117, 37, 51, 49, 35, 0, 0, 6, 195, 8, 80, 218, 20, 18, 4, 16, 197, 130, 11, 48, 40, 58,
-			49, 6, 111, 84, 50, 37, 49, 0, 24, 0, 14, 139, 14, 9, 5, 11, 20, 195, 179, 18, 5, 13, 21, 76, 9, 198, 61, 50, 69, 53,
-			49, 84, 65, 0, 0, 7, 196, 9, 35, 195, 104, 20, 0, 8, 133, 7, 4, 25, 197, 188, 8, 0, 0, 9, 134, 19, 11, 1, 18, 196,
-			135, 20, 9, 134, 16, 197, 130, 15, 196, 135, 20, 0, 10, 135, 23, 16, 197, 130, 15, 196, 135, 20, 10, 135, 19, 26, 3, 26, 15, 196,
-			135, 20, 10, 135, 19, 16, 197, 130, 15, 196, 135, 20, 0, 10, 135, 26, 197, 130, 196, 133, 3, 26, 20, 8, 197, 12, 128, 201, 20, 160,
-			20, 18, 70, 4, 225, 197, 48, 144, 193, 35, 50, 81, 109, 55, 37, 49, 35, 0, 66, 18, 67, 37, 65, 0, 37, 15, 47, 35, 49, 15,
-			72, 35, 55, 109, 57, 0, 24, 0, 8, 133, 23, 12, 15, 196, 135, 20, 15, 70, 29, 32, 69, 12, 20, 192, 81, 51, 109, 49, 35, 89,
-			0, 19, 4, 95, 13, 3, 14, 50, 35, 72, 49, 51, 109, 97, 55, 6, 111, 50, 109, 0, 0, 9, 134, 23, 18, 195, 179, 196, 135, 20,
-			7, 132, 197, 155, 16, 9, 20, 9, 67, 56, 85, 192, 67, 38, 40, 0, 19, 71, 21, 99, 204, 85, 66, 79, 56, 109, 84, 111, 55, 6,
-			40, 91, 112, 50, 0, 0, 10, 135, 26, 23, 18, 195, 179, 196, 135, 20, 10, 135, 23, 16, 1, 197, 155, 196, 135, 20, 7, 196, 92, 181,
-			82, 104, 20, 10, 135, 19, 16, 1, 197, 155, 196, 135, 20, 10, 135, 19, 11, 18, 195, 179, 196, 135, 20, 10, 135, 13, 197, 130, 195, 179,
-			196, 135, 20, 7, 196, 12, 131, 9, 64, 20, 0, 6, 195, 104, 224, 74, 20, 11, 136, 26, 13, 197, 130, 195, 179, 196, 135, 20, 11, 136,
-			23, 16, 12, 5, 197, 155, 196, 135, 20, 11, 136, 19, 16, 12, 5, 197, 155, 196, 135, 20, 11, 136, 19, 11, 197, 130, 195, 179, 196, 135,
-			20, 11, 136, 16, 195, 179, 10, 197, 155, 196, 135, 20, 6, 195, 12, 194, 74, 20, 15, 67, 45, 5, 0, 49, 35, 48, 6, 37, 47, 35,
-			50, 0, 24, 0, 6, 195, 104, 224, 77, 20, 12, 137, 20, 18, 26, 196, 133, 197, 155, 196, 135, 20, 12, 137, 16, 18, 26, 196, 133, 197,
-			155, 196, 135, 20, 8, 133, 7, 14, 196, 133, 3, 20, 21, 67, 37, 68, 0, 37, 15, 47, 109, 65, 40, 15, 48, 111, 72, 111, 71, 50,
-			109, 0, 24, 13, 67, 76, 52, 201, 89, 49, 6, 35, 88, 37, 0, 17, 0, 10, 135, 23, 26, 2, 18, 15, 197, 132, 20, 13, 138, 23,
-			16, 18, 26, 196, 133, 197, 155, 196, 135, 20, 8, 133, 23, 12, 15, 197, 130, 20, 8, 133, 19, 16, 15, 197, 130, 20, 10, 135, 19, 16,
-			197, 130, 15, 197, 132, 20, 9, 134, 12, 7, 14, 196, 133, 3, 20, 0, 9, 134, 26, 7, 1, 4, 197, 130, 20, 7, 196, 104, 68, 129,
-			64, 20, 9, 134, 18, 195, 179, 19, 197, 130, 20, 9, 134, 12, 196, 133, 7, 197, 130, 20, 7, 196, 12, 132, 129, 64, 20, 12, 68, 12,
-			148, 131, 20, 49, 37, 51, 49, 109, 0, 0, 10, 135, 26, 2, 9, 5, 7, 197, 130, 20, 10, 135, 23, 2, 9, 5, 7, 197, 130, 20,
-			0, 5, 194, 16, 240, 76, 0, 6, 195, 44, 192, 80, 20, 8, 133, 11, 9, 19, 197, 130, 20, 6, 195, 40, 84, 212, 76, 0, 9, 134,
-			26, 23, 9, 19, 197, 130, 20, 9, 134, 26, 14, 9, 11, 197, 130, 20, 9, 134, 26, 13, 25, 19, 197, 130, 20, 7, 196, 104, 116, 129,
-			40, 20, 9, 134, 19, 16, 1, 19, 197, 130, 20, 9, 134, 19, 11, 9, 19, 197, 130, 20, 9, 134, 13, 1, 18, 26, 197, 130, 20, 13,
-			5, 10, 15, 19, 195, 169, 107, 111, 88, 6, 109, 0, 0, 10, 135, 19, 26, 3, 26, 15, 197, 130, 20, 6, 195, 44, 193, 74, 20, 0,
-			11, 136, 20, 18, 26, 196, 133, 19, 197, 130, 20, 9, 198, 52, 179, 137, 21, 54, 128, 20, 9, 198, 48, 115, 137, 21, 54, 128, 20, 9,
-			198, 9, 35, 137, 21, 54, 128, 20, 0, 12, 137, 197, 188, 195, 179, 197, 130, 11, 197, 130, 20, 10, 135, 23, 197, 155, 3, 9, 5, 12,
-			20, 12, 137, 19, 20, 18, 26, 196, 133, 19, 197, 130, 20, 0, 9, 134, 197, 130, 196, 133, 3, 26, 20, 7, 196, 45, 2, 83, 104, 20,
-			7, 196, 17, 162, 79, 8, 20, 0, 10, 135, 23, 197, 130, 196, 133, 3, 26, 20, 11, 136, 11, 20, 195, 179, 18, 5, 7, 15, 76, 15,
-			69, 16, 85, 137, 12, 80, 72, 37, 84, 6, 35, 57, 89, 0, 0, 8, 133, 26, 18, 15, 197, 155, 20, 0, 8, 133, 26, 197, 188, 25,
-			10, 20, 9, 134, 23, 26, 14, 15, 197, 155, 20, 7, 132, 19, 19, 196, 153, 20, 0, 9, 134, 16, 197, 130, 1, 3, 26, 20, 9, 134,
-			12, 197, 155, 14, 9, 10, 20, 14, 139, 14, 9, 5, 11, 20, 195, 179, 18, 5, 7, 15, 76, 0, 6, 195, 92, 64, 74, 20, 10, 135,
-			19, 16, 197, 130, 1, 3, 26, 20, 6, 195, 48, 144, 218, 20, 0, 6, 195, 92, 64, 77, 20, 0, 9, 134, 23, 26, 13, 195, 179, 3,
-			20, 6, 195, 92, 193, 80, 20, 0, 7, 196, 104, 116, 129, 52, 20, 0, 6, 195, 52, 240, 218, 20, 6, 195, 16, 20, 218, 20, 0, 0,
-			11, 136, 19, 3, 8, 197, 130, 1, 2, 25, 20, 16, 3, 95, 51, 88, 47, 91, 112, 120, 6, 109, 97, 80, 38, 37, 0, 0, 0, 6,
-			195, 81, 32, 70, 20, 0, 7, 132, 197, 188, 21, 10, 20, 0, 7, 132, 20, 12, 196, 133, 20, 0, 8, 133, 13, 4, 12, 196, 133, 20,
-			7, 196, 16, 84, 3, 104, 20, 11, 200, 52, 21, 20, 21, 34, 15, 72, 224, 65, 0, 0, 8, 133, 23, 14, 15, 197, 155, 20, 0, 10,
-			135, 23, 197, 130, 195, 179, 197, 188, 20, 0, 7, 196, 12, 131, 21, 64, 20, 10, 3, 95, 49, 67, 89, 47, 6, 111, 0, 0, 0, 0,
-			8, 133, 10, 1, 4, 197, 130, 20, 0, 9, 134, 19, 9, 1, 4, 197, 130, 20, 9, 134, 18, 26, 5, 4, 197, 130, 20, 9, 134, 11,
-			18, 1, 4, 197, 130, 20, 9, 134, 3, 8, 21, 4, 197, 130, 20, 0, 10, 135, 26, 18, 26, 5, 4, 197, 130, 20, 10, 135, 23, 11,
-			18, 1, 4, 197, 130, 20, 10, 135, 19, 11, 18, 1, 4, 197, 130, 20, 10, 135, 19, 3, 8, 21, 4, 197, 130, 20, 10, 135, 11, 197,
-			130, 1, 4, 197, 130, 20, 6, 195, 40, 84, 218, 20, 10, 135, 2, 18, 26, 25, 4, 197, 130, 20, 0, 11, 136, 26, 7, 196, 153, 19,
-			20, 197, 130, 20, 6, 195, 64, 50, 1, 20, 5, 194, 40, 80, 20, 18, 3, 95, 49, 57, 120, 109, 84, 38, 109, 47, 50, 6, 35, 97,
-			119, 109, 0, 0, 12, 137, 26, 7, 14, 9, 195, 179, 20, 197, 130, 20, 12, 137, 23, 7, 14, 9, 195, 179, 20, 197, 130, 20, 16, 3,
-			95, 49, 56, 111, 97, 109, 65, 50, 6, 35, 97, 119, 109, 0, 0, 9, 134, 19, 9, 15, 4, 197, 130, 20, 9, 134, 2, 195, 179, 4,
-			197, 130, 20, 15, 3, 95, 50, 67, 72, 84, 38, 6, 109, 97, 80, 38, 109, 0, 0, 10, 135, 23, 19, 9, 15, 4, 197, 130, 20, 10,
-			135, 3, 8, 18, 25, 16, 197, 130, 20, 0, 11, 136, 19, 11, 18, 26, 5, 16, 197, 130, 20, 11, 136, 19, 3, 8, 18, 25, 16, 197,
-			130, 20, 0, 6, 195, 17, 32, 80, 20, 0, 9, 134, 18, 26, 5, 197, 186, 2, 20, 26, 68, 12, 20, 148, 20, 49, 35, 51, 47, 71,
-			55, 6, 35, 50, 91, 0, 81, 98, 108, 97, 110, 99, 104, 101, 32, 0, 8, 197, 40, 84, 212, 20, 208, 76, 0, 16, 3, 95, 49, 49,
-			57, 109, 72, 109, 50, 6, 35, 97, 119, 109, 0, 0, 13, 3, 95, 49, 48, 120, 6, 109, 97, 109, 67, 119, 0, 0, 8, 133, 13, 4,
-			12, 196, 153, 20, 8, 133, 4, 197, 186, 7, 1, 20, 13, 3, 95, 51, 67, 47, 91, 6, 112, 89, 47, 35, 0, 15, 3, 95, 49, 51,
-			47, 91, 112, 50, 6, 35, 97, 119, 109, 0, 0, 15, 3, 95, 49, 50, 72, 84, 35, 50, 6, 35, 97, 119, 109, 0, 0, 11, 136, 26,
-			23, 9, 196, 153, 11, 19, 26, 20, 16, 3, 95, 49, 53, 48, 57, 109, 47, 50, 6, 35, 97, 119, 109, 0, 0, 16, 3, 95, 49, 52,
-			76, 47, 109, 51, 50, 6, 35, 97, 119, 109, 0, 0, 17, 3, 95, 49, 55, 97, 109, 72, 109, 65, 50, 6, 35, 97, 119, 109, 0, 0,
-			15, 3, 95, 49, 54, 91, 109, 89, 50, 6, 35, 97, 119, 109, 0, 0, 0, 13, 67, 81, 148, 192, 47, 112, 97, 113, 117, 112, 0, 24,
-			18, 3, 95, 55, 88, 97, 109, 72, 109, 65, 120, 6, 109, 97, 111, 50, 47, 0, 0, 15, 3, 95, 52, 67, 76, 47, 6, 109, 51, 112,
-			89, 47, 35, 0, 0, 0, 9, 134, 19, 11, 1, 18, 197, 188, 20, 0, 6, 195, 93, 69, 76, 20, 10, 199, 13, 165, 5, 73, 148, 212,
-			4, 65, 0, 10, 135, 19, 11, 18, 26, 25, 196, 135, 20, 0, 0, 0, 10, 135, 26, 197, 130, 195, 179, 197, 188, 20, 0, 10, 135, 26,
-			7, 14, 9, 5, 196, 135, 20, 15, 3, 95, 53, 67, 48, 38, 6, 109, 67, 119, 89, 109, 47, 0, 0, 13, 138, 19, 3, 8, 197, 130,
-			25, 197, 155, 13, 25, 20, 8, 197, 64, 145, 80, 73, 160, 20, 0, 11, 136, 7, 197, 130, 1, 19, 26, 3, 26, 20, 0, 12, 137, 19,
-			16, 197, 130, 1, 19, 26, 3, 26, 20, 0, 9, 134, 19, 16, 1, 4, 197, 130, 20, 7, 196, 13, 162, 207, 52, 20, 0, 10, 135, 26,
-			19, 9, 1, 4, 197, 130, 20, 10, 135, 23, 19, 9, 1, 4, 197, 130, 20, 8, 197, 77, 2, 69, 13, 160, 20, 10, 135, 13, 9, 195,
-			179, 20, 197, 130, 20, 0, 11, 136, 19, 20, 18, 26, 25, 7, 197, 130, 20, 11, 136, 16, 18, 26, 196, 133, 4, 197, 130, 20, 5, 194,
-			52, 16, 20, 5, 194, 52, 16, 76, 0, 12, 137, 23, 16, 18, 26, 196, 133, 4, 197, 130, 20, 12, 137, 19, 16, 18, 26, 196, 133, 4,
-			197, 130, 20, 0, 7, 196, 81, 37, 193, 40, 20, 13, 3, 95, 54, 67, 91, 6, 109, 97, 89, 109, 47, 0, 0, 10, 135, 26, 19, 9,
-			15, 4, 197, 130, 20, 10, 135, 19, 11, 18, 26, 25, 197, 130, 20, 0, 11, 136, 23, 23, 9, 195, 179, 4, 197, 130, 20, 0, 7, 132,
-			197, 188, 18, 5, 20, 8, 197, 77, 160, 218, 101, 0, 20, 12, 137, 3, 8, 197, 130, 195, 179, 4, 197, 130, 20, 0, 9, 134, 23, 10,
-			5, 4, 197, 186, 20, 7, 196, 77, 160, 218, 100, 20, 9, 134, 19, 20, 21, 4, 197, 186, 20, 7, 196, 45, 37, 193, 92, 20, 0, 10,
-			135, 26, 23, 196, 153, 4, 197, 186, 20, 8, 197, 77, 160, 218, 60, 208, 20, 10, 135, 11, 197, 130, 1, 4, 197, 186, 20, 10, 135, 7,
-			197, 130, 1, 4, 197, 186, 20, 0, 14, 139, 19, 26, 197, 130, 25, 2, 25, 197, 155, 13, 25, 20, 14, 139, 19, 3, 8, 12, 9, 2,
-			25, 197, 155, 13, 25, 20, 11, 136, 26, 7, 197, 130, 1, 4, 197, 186, 20, 9, 134, 23, 18, 195, 179, 197, 188, 20, 0, 11, 136, 19,
-			26, 12, 9, 197, 155, 13, 25, 20, 7, 132, 20, 12, 196, 153, 20, 12, 137, 19, 26, 3, 26, 196, 153, 4, 197, 186, 20, 12, 137, 3,
-			8, 197, 130, 15, 19, 26, 3, 26, 20, 7, 195, 81, 144, 200, 72, 12, 15, 3, 95, 50, 88, 72, 84, 35, 120, 6, 109, 97, 119, 35,
-			0, 0, 16, 5, 95, 48, 77, 65, 49, 47, 112, 97, 6, 111, 50, 117, 109, 0, 15, 3, 95, 55, 67, 97, 6, 109, 72, 109, 65, 89,
-			109, 47, 0, 0, 0, 11, 136, 2, 197, 130, 25, 19, 26, 3, 26, 20, 18, 5, 95, 48, 77, 65, 51, 65, 38, 37, 55, 57, 6, 35,
-			51, 72, 112, 0, 0, 17, 70, 88, 20, 137, 21, 65, 83, 84, 35, 34, 57, 109, 47, 109, 0, 67, 17, 5, 95, 48, 77, 65, 50, 65,
-			38, 37, 55, 57, 6, 111, 50, 112, 0, 0, 7, 196, 81, 37, 193, 52, 20, 0, 17, 5, 95, 48, 77, 65, 52, 71, 38, 37, 55, 57,
-			6, 111, 50, 112, 0, 0, 0, 6, 195, 80, 176, 64, 20, 0, 14, 3, 95, 56, 67, 6, 111, 97, 109, 65, 89, 109, 47, 0, 0, 27,
-			69, 76, 52, 133, 20, 224, 89, 49, 51, 37, 50, 51, 6, 37, 72, 109, 34, 0, 81, 114, 101, 97, 100, 101, 114, 32, 0, 8, 133, 26,
-			2, 9, 196, 135, 20, 8, 133, 23, 2, 9, 196, 135, 20, 0, 9, 134, 23, 197, 188, 25, 196, 135, 20, 9, 134, 23, 26, 2, 9, 196,
-			135, 20, 8, 133, 11, 196, 133, 19, 26, 20, 8, 133, 10, 5, 4, 197, 186, 20, 9, 134, 4, 18, 7, 1, 196, 135, 20, 9, 134, 3,
-			26, 11, 1, 196, 135, 20, 0, 7, 196, 53, 37, 67, 104, 20, 9, 134, 197, 130, 1, 4, 197, 186, 20, 9, 134, 2, 18, 5, 4, 197,
-			186, 20, 12, 137, 10, 5, 19, 20, 5, 197, 155, 13, 25, 76, 12, 3, 95, 63, 63, 89, 112, 65, 71, 111, 55, 0, 0, 10, 135, 26,
-			23, 9, 5, 4, 197, 186, 20, 8, 197, 77, 160, 218, 84, 160, 20, 7, 132, 11, 21, 196, 135, 20, 0, 8, 133, 26, 9, 1, 196, 135,
-			20, 8, 133, 26, 2, 25, 196, 135, 20, 8, 133, 23, 18, 25, 196, 135, 20, 8, 133, 20, 12, 9, 196, 135, 20, 8, 133, 19, 26, 25,
-			196, 135, 20, 12, 137, 18, 197, 188, 14, 9, 196, 153, 196, 135, 20, 8, 133, 13, 9, 5, 196, 135, 20, 10, 135, 12, 197, 155, 14, 9,
-			196, 133, 20, 8, 133, 13, 9, 5, 196, 135, 76, 0, 12, 137, 19, 16, 18, 26, 196, 153, 4, 197, 186, 20, 9, 134, 12, 197, 188, 25,
-			196, 135, 20, 9, 134, 7, 14, 9, 5, 196, 135, 20, 9, 134, 4, 26, 9, 1, 196, 135, 20, 9, 134, 4, 14, 9, 5, 196, 135, 20,
-			17, 3, 95, 52, 88, 76, 47, 109, 51, 120, 6, 109, 97, 80, 38, 37, 0, 0, 10, 135, 23, 7, 14, 9, 5, 196, 135, 20, 10, 135,
-			197, 155, 13, 9, 5, 196, 135, 20, 10, 135, 19, 26, 11, 12, 9, 196, 135, 20, 10, 135, 19, 16, 197, 130, 25, 196, 135, 20, 7, 196,
-			76, 54, 133, 64, 20, 10, 135, 12, 197, 155, 14, 9, 196, 135, 20, 10, 135, 3, 8, 23, 9, 1, 196, 135, 20, 9, 134, 3, 8, 15,
-			4, 197, 186, 20, 10, 135, 3, 8, 3, 9, 5, 196, 135, 20, 9, 134, 2, 195, 179, 4, 197, 186, 20, 17, 3, 95, 57, 67, 120, 6,
-			109, 84, 38, 109, 67, 119, 89, 109, 47, 0, 0, 9, 134, 197, 188, 7, 14, 9, 5, 20, 10, 135, 26, 18, 195, 179, 4, 197, 186, 20,
-			8, 133, 26, 7, 1, 197, 132, 20, 10, 135, 19, 13, 18, 15, 4, 197, 186, 20, 10, 135, 19, 197, 130, 15, 4, 197, 186, 20, 11, 136,
-			16, 19, 20, 18, 26, 25, 196, 135, 20, 11, 136, 2, 197, 186, 4, 26, 9, 196, 135, 20, 10, 135, 2, 18, 195, 179, 4, 197, 186, 20,
-			0, 11, 136, 19, 13, 18, 195, 179, 4, 197, 186, 20, 7, 132, 11, 21, 197, 130, 20, 11, 136, 7, 197, 130, 195, 179, 4, 197, 186, 20,
-			0, 8, 133, 26, 9, 1, 197, 130, 20, 8, 133, 26, 2, 25, 197, 130, 20, 8, 133, 23, 18, 25, 197, 130, 20, 8, 133, 20, 12, 9,
-			197, 130, 20, 8, 133, 19, 26, 25, 197, 130, 20, 0, 7, 132, 19, 21, 197, 132, 20, 9, 134, 12, 197, 188, 25, 197, 130, 20, 9, 134,
-			4, 26, 9, 1, 197, 130, 20, 7, 196, 12, 132, 149, 64, 20, 0, 10, 135, 19, 26, 11, 12, 9, 197, 130, 20, 10, 135, 19, 16, 19,
-			9, 1, 197, 130, 20, 10, 135, 12, 197, 155, 14, 9, 197, 130, 20, 10, 135, 3, 8, 23, 9, 1, 197, 130, 20, 18, 67, 56, 17, 0,
-			50, 6, 35, 72, 84, 35, 89, 0, 81, 119, 97, 115, 32, 18, 67, 56, 17, 0, 50, 6, 35, 47, 47, 112, 65, 0, 81, 116, 121, 109,
-			32, 16, 67, 56, 17, 0, 50, 6, 35, 47, 47, 111, 0, 81, 116, 111, 32, 16, 67, 56, 17, 0, 50, 6, 35, 47, 47, 109, 0, 81,
-			116, 101, 32, 17, 67, 56, 17, 0, 50, 6, 35, 47, 47, 114, 0, 81, 116, 196, 133, 32, 18, 67, 56, 17, 0, 50, 6, 35, 72, 67,
-			38, 109, 0, 81, 110, 105, 101, 32, 19, 67, 56, 17, 0, 50, 6, 35, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 18, 67, 56,
-			17, 0, 50, 6, 35, 72, 67, 37, 65, 0, 81, 110, 105, 109, 32, 19, 67, 56, 17, 0, 50, 6, 35, 72, 67, 38, 114, 0, 81, 110,
-			105, 196, 133, 32, 18, 67, 56, 17, 0, 50, 6, 35, 72, 50, 35, 89, 0, 81, 110, 97, 115, 32, 6, 195, 56, 17, 0, 76, 0, 11,
-			136, 16, 19, 20, 18, 26, 25, 197, 130, 20, 11, 136, 2, 197, 186, 4, 26, 9, 197, 130, 20, 16, 66, 56, 16, 50, 6, 35, 84, 35,
-			89, 0, 81, 119, 97, 115, 32, 17, 66, 56, 16, 50, 6, 35, 47, 112, 65, 10, 0, 81, 116, 121, 109, 32, 17, 66, 56, 16, 50, 6,
-			35, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 14, 66, 56, 16, 50, 6, 35, 47, 111, 0, 81, 116, 111, 32, 14, 66, 56, 16, 50,
-			6, 35, 47, 109, 0, 81, 116, 101, 32, 15, 66, 56, 16, 50, 6, 35, 47, 114, 0, 81, 116, 196, 133, 32, 17, 66, 56, 16, 50, 6,
-			35, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 16, 66, 56, 16, 50, 6, 35, 67, 38, 109, 0, 81, 110, 105, 101, 32, 17, 66, 56,
-			16, 50, 6, 35, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 56, 16, 50, 6, 35, 67, 37, 65, 0, 81, 110, 105, 109, 32,
-			18, 66, 56, 16, 50, 6, 35, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 16, 66, 56, 16, 50, 6, 35, 50, 35, 89, 0, 81,
-			110, 97, 115, 32, 18, 66, 56, 16, 50, 6, 35, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 5, 194, 56, 16, 76, 0, 8, 133,
-			26, 2, 9, 197, 130, 20, 10, 135, 23, 16, 197, 130, 25, 197, 132, 20, 8, 133, 23, 2, 9, 197, 130, 20, 6, 195, 77, 69, 76, 20,
-			10, 135, 19, 16, 197, 130, 25, 197, 132, 20, 6, 195, 28, 243, 0, 20, 16, 71, 12, 128, 76, 48, 83, 135, 20, 76, 109, 55, 109, 50,
-			75, 0, 17, 3, 95, 53, 88, 48, 38, 109, 67, 120, 6, 109, 97, 111, 50, 47, 0, 0, 9, 134, 23, 197, 188, 25, 197, 130, 20, 9,
-			134, 23, 26, 2, 9, 197, 130, 20, 9, 134, 4, 18, 7, 1, 197, 130, 20, 9, 134, 3, 26, 11, 1, 197, 130, 20, 0, 6, 195, 65,
-			37, 74, 20, 0, 6, 195, 92, 67, 205, 20, 8, 133, 13, 9, 5, 197, 155, 20, 0, 0, 9, 134, 26, 14, 21, 4, 197, 186, 20, 7,
-			196, 77, 160, 82, 64, 20, 9, 134, 197, 130, 21, 4, 197, 186, 20, 9, 134, 2, 196, 133, 4, 197, 186, 20, 0, 10, 135, 26, 2, 18,
-			21, 4, 197, 186, 20, 10, 135, 23, 19, 20, 25, 4, 197, 186, 20, 6, 195, 81, 37, 74, 20, 10, 135, 19, 23, 196, 153, 4, 197, 186,
-			20, 10, 135, 197, 130, 1, 19, 26, 3, 26, 20, 10, 135, 2, 18, 26, 25, 4, 197, 186, 20, 12, 69, 60, 97, 137, 12, 80, 111, 83,
-			37, 89, 0, 0, 11, 136, 26, 18, 26, 196, 153, 4, 197, 186, 20, 11, 136, 16, 18, 26, 196, 153, 4, 197, 186, 20, 0, 12, 137, 23,
-			16, 18, 26, 196, 153, 4, 197, 186, 20, 12, 137, 19, 16, 18, 26, 196, 133, 4, 197, 186, 20, 15, 67, 81, 163, 128, 47, 111, 15, 88,
-			50, 35, 76, 112, 0, 24, 16, 3, 95, 54, 88, 91, 109, 96, 120, 6, 109, 97, 111, 50, 47, 0, 0, 9, 134, 197, 188, 7, 14, 9,
-			10, 20, 9, 134, 26, 18, 15, 4, 197, 186, 20, 9, 134, 23, 18, 15, 4, 197, 186, 20, 0, 10, 135, 23, 3, 8, 15, 4, 197, 186,
-			20, 0, 0, 6, 195, 52, 19, 64, 20, 6, 195, 52, 19, 64, 76, 0, 15, 70, 52, 243, 147, 36, 85, 82, 65, 109, 89, 57, 6, 109,
-			0, 0, 0, 6, 195, 16, 35, 205, 20, 0, 0, 0, 8, 133, 26, 14, 9, 197, 188, 20, 7, 132, 11, 21, 197, 155, 20, 0, 7, 132,
-			197, 188, 25, 10, 20, 8, 133, 26, 23, 1, 196, 135, 20, 8, 133, 20, 11, 1, 196, 135, 20, 8, 133, 19, 19, 1, 196, 135, 20, 8,
-			133, 18, 23, 1, 196, 135, 20, 6, 195, 52, 19, 89, 76, 0, 8, 133, 26, 12, 9, 197, 186, 20, 9, 134, 26, 7, 14, 9, 196, 135,
-			20, 9, 134, 20, 18, 23, 1, 196, 135, 20, 10, 135, 19, 20, 18, 26, 25, 197, 188, 20, 8, 133, 10, 21, 4, 197, 186, 20, 0, 9,
-			134, 26, 23, 9, 4, 197, 186, 20, 9, 134, 19, 196, 133, 4, 197, 186, 20, 10, 135, 13, 11, 14, 196, 133, 196, 135, 20, 9, 134, 2,
-			18, 21, 4, 197, 186, 20, 0, 8, 133, 26, 13, 1, 197, 188, 20, 10, 135, 26, 2, 196, 133, 4, 197, 186, 20, 11, 136, 197, 155, 23,
-			9, 196, 153, 196, 135, 20, 10, 135, 18, 26, 196, 133, 4, 197, 186, 20, 7, 132, 3, 21, 196, 135, 20, 0, 8, 133, 26, 18, 25, 196,
-			135, 20, 8, 133, 26, 7, 1, 197, 155, 20, 8, 133, 23, 16, 9, 196, 135, 20, 8, 133, 23, 9, 1, 196, 135, 20, 8, 133, 19, 16,
-			9, 196, 135, 20, 8, 133, 19, 9, 1, 196, 135, 20, 11, 136, 16, 18, 26, 196, 133, 4, 197, 186, 20, 8, 133, 16, 9, 1, 196, 135,
-			20, 12, 137, 4, 197, 188, 4, 197, 188, 25, 196, 135, 20, 11, 136, 2, 197, 130, 196, 133, 4, 197, 186, 20, 18, 67, 65, 38, 153, 48,
-			91, 6, 112, 84, 35, 89, 0, 81, 119, 97, 115, 32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 47, 112, 65, 0, 81, 116, 121, 109, 32,
-			19, 67, 65, 38, 153, 48, 91, 6, 112, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 47, 109,
-			57, 0, 81, 116, 101, 106, 32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 67, 37, 65, 0, 81, 110, 105, 109, 32, 20, 67, 65, 38, 153,
-			48, 91, 6, 112, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 19, 67, 65, 38, 153, 48, 91, 6, 112, 67, 37, 107, 0, 81, 110,
-			105, 99, 104, 32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 50, 35, 89, 0, 81, 110, 97, 115, 32, 20, 67, 65, 38, 153, 48, 91, 6,
-			112, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 6, 195, 65, 38, 153, 76, 0, 12, 137, 26, 2, 197, 130, 196, 133, 4, 197, 186,
-			20, 12, 137, 23, 16, 18, 26, 196, 133, 4, 197, 186, 20, 15, 67, 13, 68, 140, 49, 6, 111, 50, 47, 51, 111, 55, 0, 17, 17, 3,
-			95, 56, 88, 111, 97, 109, 65, 120, 6, 109, 97, 111, 50, 47, 0, 0, 9, 134, 26, 13, 18, 15, 197, 186, 20, 10, 135, 197, 155, 23,
-			9, 5, 196, 135, 20, 10, 135, 19, 26, 3, 26, 25, 196, 135, 20, 10, 135, 12, 7, 14, 9, 5, 196, 135, 20, 10, 135, 12, 7, 14,
-			196, 133, 196, 135, 20, 0, 11, 136, 26, 7, 23, 1, 197, 130, 196, 135, 20, 11, 136, 20, 3, 8, 14, 9, 5, 196, 135, 20, 10, 135,
-			13, 197, 155, 3, 9, 19, 26, 20, 0, 12, 137, 23, 19, 26, 3, 26, 196, 133, 196, 135, 20, 9, 134, 3, 8, 3, 5, 197, 132, 20,
-			9, 67, 12, 195, 213, 49, 55, 40, 0, 0, 8, 133, 26, 18, 25, 197, 130, 20, 8, 133, 23, 16, 9, 197, 130, 20, 8, 133, 23, 9,
-			1, 197, 130, 20, 8, 133, 19, 16, 9, 197, 130, 20, 8, 133, 19, 9, 1, 197, 130, 20, 8, 133, 16, 9, 1, 197, 130, 20, 26, 12,
-			19, 16, 195, 169, 3, 9, 1, 12, 9, 20, 195, 169, 89, 48, 109, 89, 57, 35, 55, 37, 47, 6, 109, 0, 0, 0, 10, 135, 12, 7,
-			14, 196, 133, 197, 130, 20, 0, 11, 136, 7, 18, 26, 13, 9, 1, 197, 130, 20, 5, 194, 36, 208, 72, 0, 8, 133, 197, 188, 25, 197,
-			130, 20, 8, 133, 26, 23, 1, 197, 130, 20, 12, 137, 23, 19, 26, 3, 26, 196, 133, 197, 130, 20, 8, 133, 20, 11, 1, 197, 130, 20,
-			8, 133, 19, 19, 1, 197, 130, 20, 8, 133, 18, 23, 1, 197, 130, 20, 19, 3, 95, 57, 88, 120, 109, 84, 38, 109, 67, 120, 6, 109,
-			97, 111, 50, 47, 0, 0, 9, 134, 26, 7, 14, 9, 197, 130, 20, 9, 134, 20, 18, 23, 1, 197, 130, 20, 7, 196, 17, 37, 201, 40,
-			20, 0, 10, 135, 13, 11, 14, 196, 133, 197, 130, 20, 6, 195, 52, 145, 74, 20, 13, 69, 24, 243, 132, 84, 80, 83, 114, 72, 6, 37,
-			0, 12, 69, 88, 243, 196, 60, 240, 84, 40, 72, 40, 0, 0, 9, 198, 65, 38, 153, 45, 38, 128, 20, 8, 133, 14, 9, 5, 197, 155,
-			20, 7, 132, 9, 4, 197, 186, 20, 0, 11, 136, 16, 9, 15, 197, 130, 2, 25, 13, 20, 6, 195, 52, 145, 76, 20, 12, 137, 4, 197,
-			188, 4, 197, 188, 25, 197, 130, 20, 0, 9, 134, 197, 155, 12, 5, 19, 26, 20, 0, 8, 197, 17, 33, 206, 36, 80, 20, 0, 5, 194,
-			53, 80, 72, 12, 3, 95, 63, 65, 55, 37, 47, 109, 51, 35, 0, 0, 0, 9, 134, 18, 195, 179, 4, 197, 186, 20, 0, 10, 135, 23,
-			18, 195, 179, 4, 197, 186, 20, 6, 195, 80, 176, 74, 20, 10, 135, 19, 3, 8, 15, 4, 197, 186, 20, 10, 135, 7, 18, 195, 179, 4,
-			197, 186, 20, 0, 6, 195, 80, 176, 77, 20, 11, 136, 19, 197, 130, 195, 179, 4, 197, 186, 20, 11, 136, 16, 197, 130, 195, 179, 4, 197,
-			186, 20, 10, 135, 12, 197, 155, 14, 9, 196, 153, 20, 0, 12, 137, 19, 16, 197, 130, 195, 179, 4, 197, 186, 20, 12, 137, 19, 3, 8,
-			197, 130, 15, 4, 197, 186, 20, 12, 137, 3, 8, 197, 130, 195, 179, 4, 197, 186, 20, 0, 13, 138, 19, 3, 8, 197, 130, 195, 179, 4,
-			197, 186, 20, 7, 196, 52, 20, 148, 92, 20, 0, 0, 0, 0, 0, 9, 134, 26, 7, 18, 25, 197, 186, 20, 0, 9, 134, 26, 23, 9,
-			5, 197, 155, 20, 6, 195, 105, 112, 66, 20, 10, 135, 19, 11, 15, 197, 132, 3, 26, 20, 0, 7, 132, 23, 5, 197, 186, 20, 0, 11,
-			136, 19, 20, 18, 26, 196, 153, 197, 155, 20, 9, 134, 18, 197, 188, 14, 196, 133, 20, 17, 4, 95, 15, 7, 15, 88, 111, 81, 6, 111,
-			50, 80, 38, 109, 65, 0, 0, 9, 134, 197, 188, 18, 5, 19, 26, 20, 6, 195, 104, 227, 205, 20, 0, 7, 132, 16, 14, 196, 133, 20,
-			0, 10, 135, 7, 23, 1, 197, 130, 196, 135, 20, 0, 6, 195, 93, 67, 208, 20, 10, 199, 52, 144, 210, 61, 51, 198, 80, 65, 0, 10,
-			135, 11, 20, 195, 179, 18, 196, 133, 76, 0, 6, 195, 105, 114, 74, 20, 8, 197, 92, 144, 200, 73, 160, 20, 13, 137, 16, 18, 26, 5,
-			3, 9, 5, 197, 188, 76, 8, 0, 11, 136, 23, 16, 5, 197, 130, 26, 197, 130, 20, 11, 136, 19, 16, 5, 197, 130, 26, 197, 130, 20,
-			0, 13, 138, 14, 9, 5, 11, 20, 195, 179, 18, 196, 133, 76, 0, 9, 134, 26, 13, 1, 18, 197, 130, 20, 6, 195, 17, 33, 193, 20,
-			0, 10, 135, 16, 5, 197, 130, 26, 197, 130, 20, 6, 195, 64, 19, 0, 20, 8, 197, 12, 128, 82, 13, 160, 20, 0, 0, 11, 136, 7,
-			18, 26, 13, 9, 196, 133, 3, 20, 0, 6, 195, 105, 114, 69, 20, 6, 195, 73, 114, 69, 20, 0, 8, 133, 19, 11, 1, 197, 188, 20,
-			0, 9, 198, 104, 226, 69, 52, 54, 128, 20, 11, 136, 26, 13, 9, 196, 153, 11, 3, 26, 20, 9, 198, 81, 35, 211, 104, 54, 128, 20,
-			0, 8, 133, 19, 11, 1, 197, 186, 20, 10, 199, 13, 165, 5, 73, 148, 212, 84, 65, 0, 7, 196, 9, 166, 67, 104, 20, 12, 68, 40,
-			84, 146, 100, 75, 109, 51, 112, 0, 9, 10, 68, 40, 84, 146, 100, 75, 109, 51, 0, 0, 0, 9, 134, 26, 2, 12, 9, 197, 188, 20,
-			15, 67, 65, 35, 195, 48, 34, 6, 111, 117, 109, 50, 47, 0, 24, 0, 0, 7, 196, 105, 112, 82, 104, 20, 7, 196, 76, 147, 210, 8,
-			20, 17, 4, 95, 48, 77, 52, 71, 38, 37, 55, 57, 6, 111, 50, 40, 83, 0, 0, 6, 195, 73, 114, 74, 20, 16, 67, 65, 35, 198,
-			48, 51, 111, 83, 6, 109, 89, 111, 51, 0, 24, 0, 9, 198, 52, 147, 137, 53, 83, 64, 65, 15, 70, 52, 21, 82, 20, 83, 128, 65,
-			111, 51, 6, 37, 50, 0, 17, 4, 95, 48, 77, 50, 65, 38, 37, 55, 57, 6, 111, 50, 40, 83, 0, 0, 9, 67, 88, 243, 128, 83,
-			111, 50, 0, 18, 4, 95, 48, 77, 51, 65, 38, 37, 55, 57, 6, 35, 51, 72, 40, 83, 0, 0, 0, 15, 4, 95, 48, 77, 49, 47,
-			112, 97, 6, 109, 50, 117, 112, 0, 0, 5, 194, 60, 64, 72, 14, 4, 95, 2, 18, 22, 71, 51, 6, 109, 84, 37, 89, 0, 0, 8,
-			133, 23, 12, 9, 197, 186, 20, 8, 133, 3, 5, 4, 197, 186, 20, 0, 9, 134, 26, 23, 9, 5, 197, 186, 20, 9, 134, 26, 19, 1,
-			4, 197, 186, 20, 9, 134, 23, 19, 1, 4, 197, 186, 20, 0, 8, 133, 26, 23, 1, 197, 188, 20, 9, 134, 197, 130, 11, 1, 196, 135,
-			20, 0, 8, 133, 2, 18, 14, 196, 133, 20, 0, 9, 134, 20, 3, 8, 14, 196, 133, 20, 9, 134, 19, 11, 12, 14, 196, 133, 20, 18,
-			71, 13, 35, 201, 77, 48, 78, 80, 49, 51, 40, 35, 89, 6, 35, 68, 0, 0, 6, 195, 104, 116, 129, 20, 9, 134, 7, 18, 15, 4,
-			197, 186, 20, 9, 134, 2, 18, 15, 4, 197, 186, 20, 0, 8, 133, 19, 13, 1, 197, 188, 20, 17, 8, 4, 5, 12, 39, 1, 18, 20,
-			5, 72, 109, 55, 6, 35, 51, 0, 0, 8, 133, 197, 130, 197, 188, 5, 20, 8, 133, 11, 12, 14, 196, 133, 20, 14, 3, 197, 155, 23,
-			97, 84, 38, 109, 50, 47, 112, 0, 24, 0, 9, 134, 16, 3, 8, 14, 196, 133, 20, 17, 70, 24, 16, 201, 20, 225, 9, 83, 35, 89,
-			57, 109, 50, 72, 37, 0, 0, 8, 133, 19, 19, 196, 133, 3, 20, 0, 7, 132, 16, 14, 196, 153, 20, 0, 11, 136, 26, 26, 9, 196,
-			133, 2, 197, 130, 20, 9, 134, 197, 130, 11, 1, 197, 132, 20, 0, 24, 3, 197, 155, 16, 97, 84, 38, 109, 50, 47, 109, 57, 15, 48,
-			35, 65, 38, 109, 67, 119, 37, 0, 24, 0, 9, 134, 26, 4, 1, 18, 197, 130, 20, 9, 134, 23, 4, 1, 18, 197, 130, 20, 6, 195,
-			81, 37, 193, 20, 9, 134, 197, 130, 11, 1, 197, 130, 20, 0, 10, 135, 26, 13, 1, 18, 26, 197, 130, 20, 0, 10, 135, 197, 155, 16,
-			9, 196, 133, 3, 20, 5, 194, 52, 144, 72, 0, 9, 134, 18, 197, 188, 14, 196, 153, 20, 11, 136, 12, 197, 155, 14, 9, 196, 133, 3,
-			20, 0, 0, 10, 135, 14, 9, 15, 197, 132, 3, 26, 20, 15, 69, 16, 83, 5, 80, 80, 72, 37, 55, 6, 109, 57, 47, 0, 0, 0,
-			0, 7, 196, 77, 1, 83, 104, 20, 0, 14, 69, 12, 194, 67, 32, 80, 49, 55, 37, 91, 6, 109, 0, 11, 136, 2, 25, 12, 9, 197,
-			155, 13, 25, 76, 0, 12, 137, 19, 3, 8, 12, 9, 197, 155, 13, 25, 20, 12, 137, 19, 26, 197, 130, 25, 197, 155, 13, 25, 20, 5,
-			194, 53, 144, 76, 0, 6, 195, 105, 112, 76, 20, 10, 135, 19, 16, 18, 196, 153, 197, 188, 20, 0, 0, 8, 133, 19, 11, 196, 133, 16,
-			20, 0, 9, 198, 52, 22, 9, 53, 83, 64, 65, 0, 9, 67, 61, 85, 0, 35, 58, 47, 0, 0, 0, 8, 197, 76, 180, 154, 101, 112,
-			20, 8, 133, 19, 9, 196, 133, 16, 20, 0, 0, 6, 195, 16, 192, 64, 72, 6, 195, 32, 64, 64, 17, 0, 7, 196, 77, 67, 9, 40,
-			20, 9, 134, 4, 18, 197, 188, 25, 10, 20, 13, 68, 88, 242, 76, 4, 84, 40, 35, 55, 35, 0, 67, 0, 9, 134, 26, 14, 9, 5,
-			197, 155, 20, 9, 134, 23, 14, 9, 5, 197, 155, 20, 9, 134, 23, 7, 18, 15, 196, 135, 20, 9, 134, 196, 135, 16, 15, 196, 135, 20,
-			9, 134, 3, 8, 12, 15, 196, 135, 20, 8, 197, 9, 38, 141, 36, 160, 20, 0, 10, 135, 19, 3, 8, 12, 15, 196, 135, 20, 7, 132,
-			16, 195, 179, 10, 20, 0, 7, 132, 12, 15, 196, 135, 20, 6, 195, 28, 224, 64, 20, 10, 135, 4, 26, 9, 5, 18, 197, 188, 20, 6,
-			195, 60, 224, 64, 76, 0, 9, 134, 26, 8, 1, 197, 132, 2, 20, 11, 136, 26, 4, 26, 9, 5, 18, 197, 188, 20, 0, 10, 135, 26,
-			13, 9, 5, 18, 197, 186, 20, 9, 134, 26, 197, 130, 15, 196, 135, 20, 8, 197, 77, 160, 218, 100, 160, 20, 9, 134, 19, 20, 18, 15,
-			196, 135, 20, 9, 134, 19, 16, 18, 15, 196, 135, 20, 8, 197, 76, 180, 154, 100, 160, 20, 8, 197, 17, 33, 206, 36, 160, 20, 9, 134,
-			2, 197, 130, 15, 196, 135, 20, 0, 7, 132, 12, 15, 197, 130, 20, 0, 0, 9, 134, 19, 16, 18, 15, 197, 130, 20, 7, 132, 18, 15,
-			197, 132, 20, 0, 6, 195, 52, 20, 154, 20, 0, 11, 136, 26, 14, 9, 195, 179, 19, 197, 130, 20, 11, 136, 23, 14, 9, 195, 179, 19,
-			197, 130, 20, 0, 6, 195, 60, 225, 64, 76, 0, 9, 134, 23, 7, 18, 15, 197, 130, 20, 7, 132, 20, 15, 197, 132, 20, 7, 196, 77,
-			3, 15, 52, 20, 9, 134, 18, 197, 188, 15, 197, 130, 20, 9, 134, 13, 9, 12, 11, 197, 130, 20, 9, 134, 13, 4, 12, 15, 197, 130,
-			20, 8, 133, 197, 130, 195, 179, 23, 20, 9, 134, 196, 135, 16, 15, 197, 130, 20, 9, 134, 3, 8, 12, 15, 197, 130, 20, 9, 198, 40,
-			243, 129, 80, 128, 78, 65, 0, 10, 135, 26, 13, 195, 179, 7, 197, 130, 20, 10, 135, 26, 13, 9, 12, 11, 197, 130, 20, 10, 135, 19,
-			3, 8, 12, 15, 197, 130, 20, 6, 195, 65, 53, 74, 20, 8, 197, 45, 2, 79, 73, 160, 20, 10, 135, 11, 12, 196, 153, 19, 197, 130,
-			20, 0, 11, 136, 23, 26, 13, 195, 179, 7, 197, 130, 20, 9, 134, 19, 20, 18, 15, 197, 132, 20, 11, 136, 19, 11, 12, 196, 153, 19,
-			197, 130, 20, 9, 134, 11, 197, 130, 15, 197, 132, 20, 9, 134, 3, 8, 18, 15, 197, 132, 20, 8, 133, 2, 18, 14, 196, 153, 20, 6,
-			194, 56, 144, 72, 23, 0, 6, 195, 104, 115, 204, 20, 6, 195, 80, 194, 64, 20, 10, 135, 19, 11, 197, 130, 15, 197, 132, 20, 9, 134,
-			19, 11, 12, 14, 196, 153, 20, 10, 135, 19, 3, 8, 18, 15, 197, 132, 20, 6, 195, 53, 146, 128, 20, 15, 70, 40, 80, 78, 21, 69,
-			5, 90, 35, 50, 6, 109, 47, 0, 0, 9, 134, 20, 1, 197, 132, 3, 26, 20, 6, 195, 28, 226, 69, 20, 0, 0, 9, 198, 76, 50,
-			12, 5, 54, 128, 20, 13, 5, 3, 1, 6, 195, 169, 49, 35, 83, 109, 0, 66, 0, 8, 133, 19, 20, 195, 179, 10, 20, 6, 195, 45,
-			82, 128, 20, 6, 195, 60, 226, 64, 76, 10, 199, 16, 148, 195, 61, 97, 82, 100, 66, 0, 6, 195, 80, 179, 205, 20, 0, 24, 69, 65,
-			38, 133, 16, 80, 48, 91, 109, 72, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 23, 69, 65, 38, 133, 16, 80, 48, 91,
-			109, 72, 6, 109, 65, 50, 114, 0, 81, 109, 110, 196, 133, 32, 0, 7, 132, 18, 195, 179, 2, 20, 11, 136, 3, 8, 197, 130, 5, 16,
-			3, 26, 20, 0, 8, 133, 23, 18, 195, 179, 2, 20, 0, 6, 195, 28, 224, 77, 20, 0, 8, 197, 65, 53, 18, 105, 144, 20, 6, 195,
-			28, 224, 74, 20, 0, 8, 133, 11, 12, 14, 196, 153, 20, 16, 4, 95, 3, 9, 18, 88, 72, 6, 35, 91, 80, 38, 109, 65, 0, 0,
-			8, 133, 26, 4, 195, 179, 2, 20, 9, 134, 16, 3, 8, 14, 196, 153, 20, 10, 199, 76, 145, 68, 20, 212, 197, 80, 65, 0, 7, 196,
-			92, 145, 76, 8, 20, 9, 198, 81, 38, 133, 77, 160, 218, 20, 0, 6, 195, 76, 229, 74, 20, 0, 0, 9, 134, 20, 3, 8, 14, 196,
-			153, 20, 7, 132, 2, 15, 196, 135, 20, 15, 67, 52, 193, 0, 65, 37, 55, 57, 35, 51, 72, 40, 83, 0, 0, 9, 134, 23, 18, 196,
-			153, 3, 26, 20, 6, 195, 80, 181, 201, 20, 7, 196, 76, 180, 153, 40, 20, 8, 133, 11, 14, 15, 196, 135, 20, 8, 133, 7, 18, 15,
-			196, 135, 20, 8, 133, 7, 14, 15, 196, 135, 20, 8, 133, 4, 2, 15, 196, 135, 20, 8, 133, 2, 18, 15, 196, 135, 20, 11, 68, 76,
-			48, 78, 20, 89, 49, 35, 50, 0, 0, 9, 134, 11, 197, 130, 15, 197, 155, 20, 9, 134, 7, 18, 26, 15, 196, 135, 20, 0, 0, 8,
-			133, 23, 16, 195, 179, 10, 20, 8, 133, 19, 16, 195, 179, 10, 20, 7, 132, 14, 15, 197, 155, 20, 7, 132, 4, 15, 196, 135, 20, 18,
-			71, 12, 128, 78, 80, 147, 12, 100, 91, 35, 50, 47, 37, 57, 37, 0, 67, 0, 7, 196, 45, 37, 83, 104, 20, 19, 67, 13, 84, 129,
-			49, 37, 51, 35, 89, 35, 111, 0, 81, 195, 167, 97, 111, 32, 11, 67, 40, 244, 197, 107, 111, 88, 6, 109, 0, 0, 9, 134, 23, 19,
-			20, 15, 196, 135, 20, 9, 134, 23, 16, 18, 15, 197, 155, 20, 9, 134, 19, 197, 130, 15, 196, 135, 20, 9, 134, 19, 11, 14, 15, 196,
-			135, 20, 9, 134, 16, 3, 8, 15, 196, 135, 20, 6, 195, 12, 226, 74, 20, 6, 195, 8, 240, 218, 20, 0, 10, 135, 26, 7, 197, 130,
-			15, 197, 155, 20, 7, 132, 4, 15, 197, 130, 20, 15, 70, 12, 128, 66, 48, 148, 192, 91, 35, 71, 55, 37, 0, 66, 0, 8, 133, 12,
-			5, 7, 197, 130, 20, 9, 134, 2, 196, 153, 4, 196, 133, 76, 17, 4, 95, 19, 20, 11, 89, 49, 51, 109, 97, 55, 6, 111, 50, 109,
-			0, 0, 9, 134, 23, 19, 20, 15, 197, 130, 20, 9, 134, 19, 197, 130, 15, 197, 130, 20, 9, 134, 16, 3, 8, 15, 197, 130, 20, 0,
-			10, 135, 23, 9, 196, 153, 4, 197, 130, 20, 6, 195, 28, 226, 74, 20, 8, 133, 2, 18, 15, 197, 132, 20, 14, 4, 95, 1, 3, 21,
-			10, 6, 111, 89, 47, 51, 109, 0, 0, 11, 136, 16, 18, 26, 196, 133, 7, 197, 130, 20, 20, 3, 95, 195, 179, 4, 40, 10, 49, 51,
-			109, 89, 49, 111, 84, 6, 35, 50, 109, 0, 0, 12, 137, 23, 16, 18, 26, 196, 133, 7, 197, 130, 20, 12, 137, 19, 16, 18, 26, 196,
-			133, 7, 197, 130, 20, 8, 133, 16, 1, 19, 197, 130, 20, 8, 133, 7, 18, 15, 197, 130, 20, 8, 133, 7, 14, 15, 197, 130, 20, 8,
-			133, 4, 2, 15, 197, 130, 20, 0, 9, 134, 26, 7, 1, 19, 197, 130, 20, 9, 134, 13, 195, 179, 7, 197, 130, 20, 9, 134, 7, 18,
-			26, 15, 197, 130, 20, 10, 135, 4, 197, 186, 7, 14, 9, 5, 20, 0, 10, 135, 23, 13, 1, 18, 26, 197, 130, 20, 10, 135, 4, 18,
-			197, 188, 15, 197, 130, 20, 0, 7, 132, 2, 195, 179, 10, 20, 0, 10, 135, 19, 16, 5, 197, 130, 197, 132, 20, 8, 133, 18, 196, 153,
-			3, 26, 20, 8, 133, 13, 196, 153, 3, 26, 20, 8, 133, 10, 196, 153, 3, 26, 20, 9, 134, 2, 197, 186, 4, 26, 9, 20, 9, 134,
-			13, 9, 1, 197, 130, 25, 76, 0, 9, 134, 26, 7, 14, 195, 179, 10, 20, 0, 9, 134, 19, 16, 18, 15, 197, 155, 20, 14, 69, 88,
-			149, 129, 12, 80, 84, 37, 84, 35, 76, 109, 0, 0, 11, 136, 23, 4, 26, 9, 196, 153, 3, 26, 20, 7, 132, 4, 195, 179, 10, 20,
-			0, 12, 137, 4, 197, 186, 23, 9, 196, 153, 3, 26, 20, 16, 4, 95, 18, 14, 7, 88, 49, 6, 40, 58, 80, 38, 109, 65, 0, 0,
-			9, 134, 4, 18, 196, 153, 3, 26, 20, 0, 9, 134, 7, 197, 130, 15, 197, 155, 20, 10, 135, 4, 197, 186, 7, 14, 9, 10, 20, 10,
-			135, 2, 18, 26, 196, 153, 3, 26, 20, 17, 70, 12, 243, 5, 76, 192, 87, 49, 111, 55, 109, 89, 55, 111, 58, 0, 0, 9, 67, 72,
-			240, 203, 34, 111, 49, 0, 17, 70, 4, 229, 8, 60, 230, 64, 109, 50, 47, 111, 50, 112, 0, 65, 9, 14, 70, 4, 229, 8, 60, 230,
-			64, 109, 50, 47, 111, 50, 0, 0, 8, 133, 26, 18, 195, 179, 2, 20, 0, 7, 196, 13, 166, 73, 52, 76, 0, 0, 0, 9, 134, 2,
-			196, 153, 4, 196, 153, 76, 0, 7, 132, 20, 196, 153, 16, 20, 10, 67, 64, 192, 89, 48, 55, 109, 57, 0, 0, 8, 197, 76, 180, 151,
-			5, 112, 20, 0, 0, 0, 10, 135, 19, 26, 197, 130, 25, 2, 25, 20, 7, 196, 93, 51, 149, 40, 20, 9, 198, 5, 32, 200, 37, 33,
-			74, 67, 0, 9, 134, 16, 9, 3, 8, 196, 135, 20, 0, 0, 0, 7, 196, 76, 176, 67, 104, 20, 0, 11, 136, 2, 197, 188, 4, 197,
-			188, 196, 133, 20, 0, 9, 134, 13, 14, 195, 179, 197, 188, 20, 8, 133, 11, 197, 130, 1, 13, 20, 0, 10, 135, 20, 18, 23, 195, 179,
-			197, 188, 20, 8, 133, 7, 14, 196, 153, 2, 20, 9, 134, 2, 25, 197, 130, 5, 13, 76, 0, 21, 67, 56, 17, 5, 50, 35, 72, 6,
-			109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 20, 67, 56, 17, 5, 50, 35, 72, 6, 109, 65, 50, 114, 0, 81, 109, 110, 196,
-			133, 32, 11, 136, 11, 20, 195, 179, 18, 25, 3, 8, 76, 14, 68, 52, 144, 77, 36, 65, 35, 57, 6, 35, 65, 37, 0, 13, 68, 20,
-			161, 67, 80, 37, 90, 6, 109, 49, 47, 0, 0, 10, 135, 26, 4, 5, 3, 8, 197, 130, 20, 6, 195, 52, 20, 218, 76, 0, 11, 136,
-			197, 155, 3, 9, 3, 8, 197, 130, 20, 21, 4, 95, 1, 3, 50, 101, 4, 40, 68, 81, 35, 51, 6, 40, 65, 55, 35, 58, 47, 0,
-			0, 9, 134, 12, 15, 197, 130, 2, 25, 20, 14, 139, 14, 9, 5, 11, 20, 195, 179, 18, 25, 3, 8, 76, 0, 10, 135, 26, 9, 15,
-			197, 130, 2, 25, 20, 10, 135, 26, 4, 15, 197, 130, 2, 25, 20, 10, 135, 20, 12, 15, 197, 130, 2, 25, 20, 10, 135, 19, 20, 15,
-			197, 130, 2, 25, 20, 10, 135, 14, 9, 11, 197, 130, 2, 25, 20, 0, 11, 136, 19, 16, 18, 15, 197, 130, 2, 25, 20, 11, 136, 4,
-			18, 7, 15, 197, 130, 2, 25, 20, 11, 136, 3, 26, 11, 15, 197, 130, 2, 25, 20, 8, 197, 104, 115, 210, 77, 160, 20, 6, 195, 44,
-			229, 74, 20, 10, 135, 3, 9, 5, 18, 16, 197, 130, 20, 0, 15, 66, 64, 144, 48, 109, 37, 38, 6, 109, 89, 0, 81, 115, 32, 12,
-			137, 26, 18, 195, 179, 19, 197, 130, 2, 25, 20, 12, 137, 23, 18, 195, 179, 19, 197, 130, 2, 25, 20, 12, 137, 19, 16, 19, 9, 15,
-			197, 130, 2, 25, 20, 12, 137, 19, 16, 9, 5, 11, 197, 130, 2, 25, 20, 12, 137, 14, 9, 195, 179, 19, 197, 130, 2, 25, 20, 12,
-			137, 3, 8, 23, 9, 15, 197, 130, 2, 25, 20, 11, 66, 60, 176, 111, 49, 6, 109, 57, 0, 42, 11, 66, 60, 176, 111, 49, 111, 58,
-			111, 0, 24, 6, 194, 80, 16, 72, 12, 0, 13, 138, 26, 14, 9, 195, 179, 19, 197, 130, 2, 25, 20, 13, 138, 23, 26, 18, 195, 179,
-			19, 197, 130, 2, 25, 20, 13, 138, 23, 14, 9, 195, 179, 19, 197, 130, 2, 25, 20, 13, 138, 19, 20, 18, 26, 5, 7, 197, 130, 2,
-			25, 20, 12, 137, 197, 155, 3, 9, 5, 18, 16, 197, 130, 20, 12, 137, 16, 9, 5, 18, 26, 3, 8, 197, 130, 20, 0, 14, 139, 23,
-			26, 14, 9, 195, 179, 19, 197, 130, 2, 25, 20, 9, 198, 93, 53, 18, 104, 83, 0, 20, 0, 15, 140, 26, 197, 188, 195, 179, 197, 130,
-			11, 197, 130, 2, 25, 20, 6, 195, 64, 197, 74, 20, 0, 0, 8, 133, 13, 18, 15, 197, 186, 20, 8, 133, 12, 197, 188, 25, 10, 20,
-			13, 138, 2, 196, 153, 4, 26, 9, 5, 3, 9, 5, 76, 0, 18, 72, 40, 16, 209, 84, 83, 9, 56, 80, 90, 35, 49, 55, 6, 37,
-			50, 0, 0, 6, 195, 65, 147, 0, 20, 12, 69, 12, 128, 82, 52, 80, 91, 35, 51, 65, 0, 19, 71, 8, 16, 203, 77, 0, 67, 20,
-			71, 6, 109, 49, 89, 48, 109, 57, 89, 0, 0, 9, 134, 26, 13, 195, 179, 197, 188, 20, 0, 10, 135, 23, 4, 18, 195, 179, 197, 188,
-			20, 0, 10, 67, 12, 243, 1, 49, 111, 55, 35, 0, 0, 10, 135, 19, 20, 23, 195, 179, 18, 26, 20, 0, 11, 136, 19, 20, 3, 8,
-			195, 179, 18, 26, 20, 9, 134, 3, 26, 197, 130, 1, 16, 20, 0, 0, 7, 196, 104, 36, 153, 48, 20, 0, 7, 2, 196, 135, 119, 110,
-			0, 0, 0, 13, 67, 52, 164, 128, 65, 6, 35, 57, 111, 51, 0, 24, 6, 2, 196, 133, 114, 0, 0, 0, 0, 8, 133, 197, 155, 12,
-			196, 133, 20, 0, 0, 7, 196, 104, 34, 69, 12, 20, 0, 8, 197, 76, 50, 12, 4, 160, 20, 9, 134, 197, 130, 11, 15, 196, 135, 20,
-			10, 2, 195, 151, 51, 6, 35, 88, 112, 0, 0, 10, 135, 14, 9, 5, 197, 155, 196, 135, 20, 11, 136, 11, 18, 26, 25, 23, 4, 197,
-			186, 20, 7, 2, 197, 132, 109, 67, 0, 0, 10, 135, 23, 26, 13, 195, 179, 197, 188, 20, 11, 136, 19, 3, 26, 25, 197, 155, 196, 135,
-			20, 11, 136, 7, 14, 9, 5, 197, 155, 196, 135, 20, 9, 134, 2, 25, 197, 130, 1, 13, 76, 10, 199, 5, 32, 200, 36, 66, 65, 44,
-			67, 5, 130, 196, 141, 43, 5, 130, 196, 141, 43, 0, 12, 137, 23, 7, 14, 9, 5, 197, 155, 196, 135, 20, 9, 134, 197, 130, 11, 15,
-			197, 130, 20, 9, 134, 3, 9, 3, 8, 197, 130, 20, 7, 2, 197, 130, 109, 58, 0, 0, 8, 197, 12, 128, 197, 77, 160, 20, 0, 11,
-			136, 7, 197, 130, 21, 3, 8, 197, 130, 20, 0, 9, 134, 23, 25, 197, 130, 2, 25, 20, 9, 134, 18, 25, 197, 130, 2, 25, 20, 9,
-			134, 16, 9, 197, 130, 2, 25, 20, 9, 134, 11, 21, 197, 130, 2, 25, 20, 0, 10, 135, 26, 9, 1, 197, 130, 2, 25, 20, 10, 135,
-			26, 2, 25, 197, 130, 2, 25, 20, 10, 135, 23, 18, 25, 197, 130, 2, 25, 20, 10, 135, 20, 12, 9, 197, 130, 2, 25, 20, 10, 135,
-			19, 26, 25, 197, 130, 2, 25, 20, 10, 135, 16, 19, 21, 197, 130, 2, 25, 20, 10, 135, 16, 18, 1, 197, 130, 2, 25, 20, 10, 135,
-			16, 12, 21, 197, 130, 2, 25, 20, 10, 135, 13, 9, 1, 197, 130, 2, 25, 20, 10, 135, 11, 18, 25, 197, 130, 2, 25, 20, 9, 134,
-			23, 197, 155, 3, 9, 2, 20, 7, 196, 81, 37, 207, 52, 20, 11, 68, 4, 194, 67, 20, 109, 55, 37, 89, 0, 0, 11, 136, 26, 197,
-			188, 25, 197, 130, 2, 25, 20, 11, 136, 26, 197, 188, 21, 197, 130, 2, 25, 20, 11, 136, 26, 7, 18, 1, 197, 130, 2, 25, 20, 11,
-			136, 23, 19, 26, 25, 197, 130, 2, 25, 20, 11, 136, 23, 7, 18, 1, 197, 130, 2, 25, 20, 11, 136, 19, 16, 18, 1, 197, 130, 2,
-			25, 20, 11, 136, 12, 197, 188, 25, 197, 130, 2, 25, 20, 11, 136, 4, 26, 9, 1, 197, 130, 2, 25, 20, 11, 136, 4, 14, 9, 1,
-			197, 130, 2, 25, 20, 11, 136, 3, 26, 3, 9, 197, 130, 2, 25, 20, 8, 197, 105, 115, 5, 13, 160, 20, 8, 197, 81, 38, 133, 77,
-			160, 20, 10, 135, 20, 196, 153, 3, 8, 197, 130, 20, 8, 197, 64, 50, 1, 77, 160, 20, 14, 2, 194, 167, 48, 35, 51, 6, 35, 81,
-			51, 35, 83, 0, 16, 2, 195, 159, 91, 4, 35, 34, 83, 109, 89, 10, 6, 109, 89, 0, 0, 12, 137, 23, 4, 26, 9, 1, 197, 130,
-			2, 25, 20, 12, 137, 197, 155, 13, 9, 1, 197, 130, 2, 25, 20, 12, 137, 19, 26, 11, 12, 9, 197, 130, 2, 25, 20, 12, 137, 19,
-			16, 19, 9, 1, 197, 130, 2, 25, 20, 12, 137, 19, 197, 130, 1, 2, 197, 130, 2, 25, 20, 12, 137, 12, 197, 155, 14, 9, 197, 130,
-			2, 25, 20, 12, 137, 3, 8, 23, 9, 1, 197, 130, 2, 25, 20, 12, 137, 3, 8, 3, 9, 1, 197, 130, 2, 25, 20, 12, 2, 194,
-			164, 84, 35, 55, 6, 40, 47, 35, 0, 0, 13, 138, 23, 16, 5, 197, 130, 26, 197, 130, 2, 25, 20, 13, 138, 19, 16, 5, 197, 130,
-			26, 197, 130, 2, 25, 20, 13, 138, 16, 19, 20, 18, 26, 25, 197, 130, 2, 25, 20, 13, 138, 3, 8, 18, 26, 3, 9, 197, 130, 2,
-			25, 20, 13, 138, 2, 197, 186, 4, 26, 9, 197, 130, 2, 25, 20, 8, 133, 21, 10, 4, 197, 186, 20, 8, 2, 194, 165, 57, 109, 50,
-			0, 0, 9, 134, 14, 1, 10, 4, 197, 186, 20, 33, 68, 12, 144, 197, 72, 117, 4, 37, 117, 109, 51, 49, 40, 65, 49, 6, 35, 58,
-			55, 109, 0, 82, 99, 117, 109, 32, 99, 97, 117, 108, 101, 32, 9, 2, 194, 162, 117, 109, 50, 47, 0, 0, 11, 136, 2, 197, 188, 4,
-			197, 188, 196, 153, 20, 9, 2, 194, 163, 83, 40, 50, 47, 0, 0, 15, 70, 12, 245, 78, 81, 38, 64, 49, 35, 50, 47, 51, 112, 0,
-			0, 25, 2, 194, 161, 111, 72, 84, 51, 4, 111, 47, 50, 112, 15, 84, 112, 49, 91, 6, 112, 49, 67, 37, 49, 0, 0, 7, 196, 92,
-			34, 69, 12, 20, 7, 196, 76, 180, 154, 100, 20, 11, 136, 13, 9, 1, 197, 188, 4, 197, 188, 20, 16, 7, 3, 12, 9, 3, 8, 195,
-			169, 49, 55, 37, 91, 6, 109, 0, 15, 2, 194, 174, 88, 35, 89, 76, 109, 90, 6, 111, 50, 112, 0, 5, 130, 195, 166, 43, 5, 130,
-			195, 166, 43, 0, 12, 137, 26, 13, 9, 15, 197, 188, 4, 197, 188, 20, 8, 197, 76, 180, 154, 101, 0, 20, 17, 2, 194, 175, 50, 35,
-			72, 49, 51, 109, 97, 55, 6, 109, 67, 109, 0, 0, 15, 70, 12, 130, 65, 57, 66, 64, 49, 57, 35, 50, 47, 37, 0, 13, 2, 194,
-			172, 50, 109, 81, 6, 35, 117, 57, 35, 0, 5, 130, 195, 164, 43, 5, 130, 195, 164, 43, 0, 5, 130, 195, 165, 43, 5, 130, 195, 165,
-			43, 0, 10, 135, 13, 9, 1, 197, 130, 5, 13, 76, 0, 8, 133, 11, 197, 130, 1, 16, 20, 25, 2, 194, 171, 83, 51, 35, 50, 117,
-			4, 40, 89, 80, 37, 15, 117, 40, 118, 6, 112, 89, 58, 40, 83, 0, 0, 12, 2, 194, 168, 6, 40, 65, 55, 35, 58, 47, 0, 0,
-			9, 134, 4, 15, 197, 130, 2, 25, 20, 13, 2, 195, 161, 35, 55, 6, 35, 0, 81, 108, 97, 32, 6, 2, 196, 153, 113, 0, 0, 10,
-			135, 26, 12, 15, 197, 130, 2, 25, 20, 10, 135, 23, 12, 15, 197, 130, 2, 25, 20, 10, 135, 23, 9, 15, 197, 130, 2, 25, 20, 10,
-			135, 19, 16, 15, 197, 130, 2, 25, 20, 10, 135, 19, 9, 15, 197, 130, 2, 25, 20, 10, 135, 16, 9, 15, 197, 130, 2, 25, 20, 10,
-			135, 12, 5, 7, 197, 130, 2, 25, 20, 12, 2, 194, 182, 35, 49, 6, 35, 48, 37, 47, 0, 0, 11, 136, 26, 7, 1, 4, 197, 130,
-			2, 25, 20, 11, 136, 23, 19, 20, 15, 197, 130, 2, 25, 20, 11, 136, 23, 12, 5, 11, 197, 130, 2, 25, 20, 11, 136, 20, 18, 23,
-			15, 197, 130, 2, 25, 20, 11, 136, 19, 197, 130, 15, 197, 130, 2, 25, 20, 11, 136, 18, 195, 179, 19, 197, 130, 2, 25, 20, 11, 136,
-			16, 9, 5, 11, 197, 130, 2, 25, 20, 11, 136, 16, 3, 8, 15, 197, 130, 2, 25, 20, 11, 136, 12, 196, 133, 7, 197, 130, 2, 25,
-			20, 9, 134, 26, 4, 197, 130, 1, 23, 20, 9, 134, 23, 19, 197, 130, 1, 23, 20, 15, 69, 64, 17, 197, 85, 0, 48, 109, 57, 75,
-			6, 35, 48, 0, 0, 12, 137, 26, 23, 12, 5, 11, 197, 130, 2, 25, 20, 12, 137, 26, 2, 9, 5, 7, 197, 130, 2, 25, 20, 12,
-			137, 23, 9, 196, 153, 4, 197, 130, 2, 25, 20, 12, 137, 23, 2, 9, 5, 7, 197, 130, 2, 25, 20, 5, 194, 60, 224, 76, 19, 2,
-			194, 180, 4, 111, 89, 47, 51, 112, 10, 6, 35, 49, 117, 109, 50, 47, 0, 0, 13, 138, 26, 26, 9, 196, 133, 2, 197, 130, 2, 25,
-			20, 13, 138, 23, 23, 9, 195, 179, 26, 197, 130, 2, 25, 20, 13, 138, 19, 20, 197, 130, 21, 11, 197, 130, 2, 25, 20, 13, 138, 16,
-			18, 26, 196, 133, 7, 197, 130, 2, 25, 20, 13, 138, 7, 18, 26, 13, 9, 15, 197, 130, 2, 25, 20, 7, 132, 23, 9, 196, 135, 20,
-			7, 132, 13, 25, 196, 135, 20, 9, 67, 88, 144, 64, 84, 37, 35, 0, 5, 130, 195, 173, 43, 5, 130, 195, 173, 43, 0, 14, 139, 23,
-			16, 18, 26, 196, 133, 7, 197, 130, 2, 25, 20, 14, 139, 197, 155, 13, 9, 5, 18, 4, 197, 130, 2, 25, 20, 14, 139, 19, 16, 18,
-			26, 196, 133, 7, 197, 130, 2, 25, 20, 7, 196, 105, 115, 5, 12, 20, 8, 133, 26, 12, 5, 196, 135, 20, 9, 134, 26, 5, 10, 4,
-			197, 186, 20, 9, 134, 26, 1, 10, 4, 197, 186, 20, 8, 133, 23, 26, 21, 196, 135, 20, 9, 134, 23, 25, 10, 4, 197, 186, 20, 9,
-			134, 23, 5, 10, 4, 197, 186, 20, 8, 133, 20, 18, 21, 196, 135, 20, 9, 134, 197, 155, 16, 9, 19, 26, 20, 8, 133, 16, 18, 21,
-			196, 135, 20, 7, 196, 16, 226, 69, 40, 20, 8, 133, 4, 196, 133, 196, 135, 20, 13, 2, 194, 178, 49, 84, 6, 35, 72, 51, 35, 47,
-			0, 0, 10, 135, 26, 14, 1, 10, 4, 197, 186, 20, 9, 134, 26, 13, 196, 133, 196, 135, 20, 6, 195, 104, 145, 74, 20, 9, 134, 23,
-			26, 12, 5, 196, 135, 20, 10, 135, 23, 26, 5, 10, 4, 197, 186, 20, 10, 135, 23, 20, 197, 130, 15, 3, 26, 20, 10, 135, 23, 197,
-			130, 195, 179, 3, 26, 20, 9, 134, 23, 3, 26, 21, 196, 135, 20, 10, 135, 19, 20, 197, 130, 15, 3, 26, 20, 9, 134, 11, 12, 196,
-			133, 196, 135, 20, 10, 135, 7, 18, 1, 14, 4, 197, 186, 20, 9, 134, 7, 9, 196, 133, 196, 135, 20, 9, 134, 3, 9, 196, 133, 196,
-			135, 20, 9, 134, 3, 8, 23, 25, 196, 135, 20, 21, 10, 22, 1, 18, 9, 195, 169, 20, 195, 169, 19, 84, 35, 34, 57, 109, 47, 109,
-			0, 67, 12, 2, 194, 179, 91, 6, 109, 97, 78, 35, 50, 0, 7, 2, 197, 155, 97, 37, 0, 0, 11, 136, 26, 23, 197, 130, 195, 179,
-			3, 26, 20, 11, 136, 26, 7, 18, 1, 14, 4, 197, 186, 20, 10, 135, 26, 7, 9, 196, 133, 196, 135, 20, 10, 135, 23, 26, 9, 196,
-			133, 196, 135, 20, 10, 135, 23, 7, 9, 196, 133, 196, 135, 20, 10, 135, 23, 3, 9, 196, 133, 196, 135, 20, 10, 135, 19, 11, 12, 196,
-			133, 196, 135, 20, 10, 135, 19, 3, 8, 23, 25, 196, 135, 20, 13, 2, 194, 176, 89, 47, 6, 111, 48, 38, 109, 67, 0, 0, 8, 133,
-			197, 188, 18, 25, 10, 20, 7, 132, 23, 25, 196, 135, 20, 11, 136, 197, 155, 3, 9, 196, 133, 196, 135, 20, 7, 132, 19, 25, 196, 135,
-			20, 15, 2, 194, 177, 48, 55, 40, 89, 65, 6, 37, 50, 40, 89, 0, 5, 130, 197, 153, 43, 5, 130, 197, 153, 43, 0, 8, 133, 16,
-			12, 21, 196, 135, 20, 10, 135, 7, 18, 26, 13, 9, 196, 133, 20, 16, 2, 194, 190, 47, 15, 91, 112, 76, 83, 6, 35, 51, 47, 109,
-			0, 5, 130, 195, 182, 43, 5, 130, 195, 182, 43, 0, 9, 134, 23, 7, 18, 1, 196, 135, 20, 9, 134, 20, 18, 26, 5, 196, 135, 20,
-			9, 134, 19, 20, 18, 1, 196, 135, 20, 9, 134, 19, 16, 18, 1, 196, 135, 20, 9, 134, 16, 18, 26, 5, 196, 135, 20, 13, 67, 85,
-			35, 0, 40, 109, 51, 6, 109, 55, 0, 17, 23, 2, 194, 191, 111, 72, 84, 51, 4, 111, 47, 50, 112, 15, 48, 112, 47, 35, 57, 67,
-			37, 49, 0, 13, 2, 195, 183, 120, 109, 55, 6, 109, 67, 38, 109, 0, 0, 7, 132, 23, 25, 197, 130, 20, 17, 2, 194, 188, 57, 109,
-			72, 50, 35, 76, 83, 6, 35, 51, 47, 35, 0, 0, 8, 133, 16, 12, 21, 197, 130, 20, 7, 195, 56, 145, 64, 72, 23, 6, 195, 56,
-			145, 64, 76, 16, 2, 194, 189, 57, 109, 72, 50, 35, 72, 51, 6, 40, 81, 35, 0, 0, 7, 132, 23, 9, 197, 132, 20, 9, 134, 23,
-			7, 18, 1, 197, 130, 20, 9, 134, 19, 16, 18, 1, 197, 130, 20, 7, 195, 80, 83, 85, 72, 12, 15, 4, 95, 3, 5, 4, 88, 117,
-			109, 116, 6, 37, 55, 114, 0, 0, 8, 197, 92, 116, 129, 77, 160, 20, 7, 132, 18, 197, 188, 25, 20, 32, 2, 194, 187, 48, 51, 6,
-			35, 84, 112, 15, 83, 51, 35, 50, 117, 4, 40, 89, 80, 37, 15, 117, 40, 118, 6, 112, 89, 58, 40, 83, 0, 0, 9, 134, 23, 197,
-			188, 5, 197, 132, 20, 7, 132, 23, 9, 197, 130, 20, 7, 132, 13, 25, 197, 130, 20, 13, 2, 194, 184, 117, 109, 116, 6, 37, 55, 55,
-			35, 0, 0, 8, 133, 23, 26, 21, 197, 130, 20, 8, 133, 20, 18, 21, 197, 130, 20, 8, 133, 16, 18, 21, 197, 130, 20, 8, 133, 4,
-			196, 133, 197, 130, 20, 16, 2, 194, 185, 57, 109, 72, 109, 50, 81, 6, 40, 51, 50, 109, 0, 5, 130, 195, 177, 43, 5, 130, 197, 161,
-			43, 5, 130, 195, 177, 43, 5, 130, 197, 161, 43, 16, 4, 95, 12, 9, 7, 55, 37, 81, 35, 47, 6, 40, 51, 35, 0, 0, 10, 135,
-			10, 1, 4, 197, 130, 2, 25, 20, 9, 134, 23, 3, 26, 21, 197, 130, 20, 9, 134, 18, 197, 188, 1, 197, 130, 20, 7, 132, 18, 1,
-			197, 132, 20, 7, 132, 13, 9, 197, 132, 20, 9, 134, 11, 12, 196, 133, 197, 130, 20, 9, 134, 7, 9, 196, 133, 197, 130, 20, 0, 11,
-			136, 26, 10, 1, 4, 197, 130, 2, 25, 20, 11, 136, 19, 26, 5, 4, 197, 130, 2, 25, 20, 11, 136, 19, 9, 1, 4, 197, 130, 2,
-			25, 20, 11, 136, 18, 26, 5, 4, 197, 130, 2, 25, 20, 11, 136, 11, 18, 1, 4, 197, 130, 2, 25, 20, 11, 136, 3, 8, 21, 4,
-			197, 130, 2, 25, 20, 10, 135, 26, 7, 9, 196, 133, 197, 130, 20, 8, 197, 93, 164, 149, 77, 160, 20, 10, 135, 23, 26, 9, 196, 133,
-			197, 130, 20, 10, 135, 23, 7, 9, 196, 133, 197, 130, 20, 10, 135, 23, 3, 9, 196, 133, 197, 130, 20, 8, 197, 77, 50, 69, 77, 160,
-			20, 10, 135, 19, 11, 12, 196, 133, 197, 130, 20, 8, 197, 76, 54, 133, 77, 160, 20, 8, 197, 64, 226, 69, 77, 160, 20, 8, 133, 16,
-			12, 21, 197, 132, 20, 7, 132, 12, 197, 188, 25, 20, 8, 197, 45, 2, 65, 73, 160, 20, 8, 197, 13, 162, 193, 77, 160, 20, 12, 201,
-			80, 133, 78, 16, 84, 130, 37, 33, 0, 65, 0, 12, 137, 26, 18, 26, 5, 4, 197, 130, 2, 25, 20, 12, 137, 26, 4, 5, 3, 8,
-			197, 130, 2, 25, 20, 12, 137, 23, 19, 26, 5, 4, 197, 130, 2, 25, 20, 12, 137, 23, 11, 18, 1, 4, 197, 130, 2, 25, 20, 12,
-			137, 19, 11, 18, 1, 4, 197, 130, 2, 25, 20, 12, 137, 19, 3, 8, 21, 4, 197, 130, 2, 25, 20, 12, 137, 16, 12, 195, 179, 20,
-			197, 130, 2, 25, 20, 12, 137, 11, 197, 130, 1, 4, 197, 130, 2, 25, 20, 12, 137, 2, 18, 26, 25, 4, 197, 130, 2, 25, 20, 8,
-			133, 197, 155, 12, 196, 153, 20, 11, 136, 197, 155, 3, 9, 196, 133, 197, 130, 20, 20, 66, 88, 16, 84, 35, 71, 6, 35, 68, 49, 0,
-			81, 98, 97, 110, 113, 117, 101, 32, 6, 194, 80, 80, 72, 12, 5, 130, 195, 188, 43, 5, 130, 195, 188, 43, 0, 13, 138, 26, 7, 196,
-			153, 19, 20, 197, 130, 2, 25, 20, 13, 138, 26, 2, 18, 26, 25, 4, 197, 130, 2, 25, 20, 13, 138, 23, 16, 12, 195, 179, 20, 197,
-			130, 2, 25, 20, 13, 138, 197, 155, 3, 9, 3, 8, 197, 130, 2, 25, 20, 13, 138, 19, 20, 196, 153, 3, 8, 197, 130, 2, 25, 20,
-			13, 138, 19, 16, 12, 195, 179, 20, 197, 130, 2, 25, 20, 13, 138, 7, 14, 9, 195, 179, 20, 197, 130, 2, 25, 20, 0, 14, 139, 26,
-			7, 14, 9, 195, 179, 20, 197, 130, 2, 25, 20, 14, 139, 23, 7, 14, 9, 195, 179, 20, 197, 130, 2, 25, 20, 14, 139, 197, 155, 13,
-			9, 15, 18, 4, 197, 130, 2, 25, 20, 7, 196, 92, 193, 67, 104, 20, 6, 195, 28, 227, 205, 20, 9, 134, 4, 15, 10, 4, 197, 186,
-			20, 7, 196, 81, 147, 11, 60, 76, 0, 15, 140, 19, 16, 9, 5, 18, 26, 3, 8, 197, 130, 2, 25, 20, 8, 197, 77, 68, 154, 100,
-			48, 20, 13, 69, 53, 81, 83, 48, 144, 65, 40, 89, 55, 37, 0, 12, 69, 28, 83, 210, 28, 80, 75, 111, 34, 75, 0, 0, 11, 136,
-			19, 16, 9, 5, 18, 4, 197, 186, 20, 11, 136, 16, 18, 26, 5, 10, 4, 197, 186, 20, 5, 130, 195, 184, 43, 5, 130, 195, 184, 43,
-			0, 0, 7, 196, 76, 145, 67, 104, 20, 0, 8, 197, 76, 179, 14, 36, 80, 20, 8, 197, 76, 50, 12, 4, 208, 20, 11, 2, 203, 135,
-			49, 6, 35, 51, 111, 50, 0, 0, 0, 0, 7, 196, 104, 161, 68, 104, 20, 0, 6, 195, 77, 84, 218, 20, 0, 0, 9, 134, 4, 21,
-			197, 130, 2, 25, 20, 9, 134, 2, 25, 197, 130, 2, 25, 20, 6, 195, 60, 227, 192, 76, 0, 10, 135, 197, 188, 21, 197, 130, 2, 25,
-			20, 10, 135, 26, 18, 25, 197, 130, 2, 25, 20, 10, 135, 26, 14, 1, 197, 130, 2, 25, 20, 10, 135, 23, 16, 9, 197, 130, 2, 25,
-			20, 10, 135, 23, 11, 21, 197, 130, 2, 25, 20, 10, 135, 23, 9, 1, 197, 130, 2, 25, 20, 10, 135, 23, 4, 15, 197, 130, 2, 25,
-			20, 10, 135, 19, 16, 9, 197, 130, 2, 25, 20, 10, 135, 19, 11, 21, 197, 130, 2, 25, 20, 10, 135, 19, 9, 1, 197, 130, 2, 25,
-			20, 10, 135, 16, 9, 1, 197, 130, 2, 25, 20, 10, 135, 16, 1, 4, 197, 130, 2, 25, 20, 10, 135, 11, 16, 9, 197, 130, 2, 25,
-			20, 10, 135, 7, 18, 1, 197, 130, 2, 25, 20, 10, 135, 7, 14, 1, 197, 130, 2, 25, 20, 10, 135, 4, 2, 1, 197, 130, 2, 25,
-			20, 10, 135, 3, 12, 9, 197, 130, 2, 25, 20, 7, 196, 92, 50, 69, 48, 20, 5, 130, 197, 190, 43, 5, 130, 197, 190, 43, 0, 11,
-			136, 26, 23, 9, 1, 197, 130, 2, 25, 20, 11, 136, 23, 19, 9, 1, 197, 130, 2, 25, 20, 11, 136, 20, 11, 23, 9, 197, 130, 2,
-			25, 20, 11, 136, 19, 20, 25, 7, 197, 130, 2, 25, 20, 11, 136, 19, 16, 1, 4, 197, 130, 2, 25, 20, 11, 136, 19, 197, 130, 1,
-			197, 130, 2, 25, 20, 11, 136, 197, 130, 11, 15, 197, 130, 2, 25, 20, 11, 136, 7, 18, 26, 1, 197, 130, 2, 25, 20, 11, 136, 4,
-			18, 23, 9, 197, 130, 2, 25, 20, 11, 136, 3, 9, 3, 8, 197, 130, 2, 25, 20, 11, 136, 2, 12, 1, 4, 197, 130, 2, 25, 20,
-			0, 12, 137, 26, 19, 9, 1, 4, 197, 130, 2, 25, 20, 12, 137, 26, 2, 12, 1, 4, 197, 130, 2, 25, 20, 12, 137, 23, 19, 9,
-			1, 4, 197, 130, 2, 25, 20, 12, 137, 23, 9, 196, 133, 4, 197, 130, 2, 25, 20, 12, 137, 19, 26, 3, 26, 1, 197, 130, 2, 25,
-			20, 12, 137, 13, 197, 155, 3, 9, 197, 130, 2, 25, 20, 12, 137, 13, 9, 195, 179, 20, 197, 130, 2, 25, 20, 12, 137, 12, 7, 14,
-			196, 133, 197, 130, 2, 25, 20, 9, 198, 92, 147, 133, 29, 33, 84, 67, 11, 66, 76, 128, 109, 89, 6, 101, 35, 0, 17, 8, 2, 197,
-			188, 96, 109, 47, 0, 0, 13, 138, 26, 23, 9, 196, 133, 4, 197, 130, 2, 25, 20, 13, 138, 26, 13, 9, 195, 179, 20, 197, 130, 2,
-			25, 20, 13, 138, 23, 13, 9, 195, 179, 20, 197, 130, 2, 25, 20, 13, 138, 19, 20, 18, 26, 25, 7, 197, 130, 2, 25, 20, 13, 138,
-			16, 18, 26, 196, 133, 4, 197, 130, 2, 25, 20, 13, 138, 7, 18, 26, 13, 9, 1, 197, 130, 2, 25, 20, 13, 138, 7, 197, 130, 21,
-			3, 8, 197, 130, 2, 25, 20, 13, 138, 2, 18, 26, 13, 9, 1, 197, 130, 2, 25, 20, 7, 132, 12, 1, 196, 135, 20, 7, 132, 4,
-			1, 196, 135, 20, 0, 14, 139, 23, 19, 26, 3, 26, 196, 133, 197, 130, 2, 25, 20, 14, 139, 23, 16, 18, 26, 196, 133, 4, 197, 130,
-			2, 25, 20, 14, 139, 197, 155, 13, 9, 1, 18, 4, 197, 130, 2, 25, 20, 14, 139, 19, 16, 18, 26, 196, 133, 4, 197, 130, 2, 25,
-			20, 8, 133, 26, 26, 21, 196, 135, 20, 8, 133, 26, 4, 21, 197, 155, 20, 8, 133, 23, 12, 5, 196, 135, 20, 8, 133, 19, 14, 21,
-			196, 135, 20, 8, 133, 18, 26, 21, 196, 135, 20, 8, 133, 16, 12, 5, 196, 135, 20, 8, 2, 197, 186, 90, 109, 47, 0, 0, 9, 134,
-			23, 19, 20, 1, 196, 135, 20, 9, 134, 19, 26, 16, 5, 196, 135, 20, 9, 134, 16, 3, 8, 1, 196, 135, 20, 10, 135, 197, 130, 197,
-			188, 5, 19, 26, 20, 9, 134, 196, 135, 16, 1, 196, 135, 20, 9, 134, 196, 135, 13, 9, 196, 135, 20, 9, 134, 3, 8, 12, 1, 196,
-			135, 20, 0, 10, 135, 23, 20, 18, 196, 133, 196, 135, 20, 10, 135, 20, 11, 14, 196, 133, 196, 135, 20, 10, 135, 19, 26, 3, 26, 21,
-			196, 135, 20, 10, 135, 19, 20, 18, 196, 133, 196, 135, 20, 10, 135, 19, 3, 8, 12, 1, 196, 135, 20, 10, 135, 2, 18, 14, 196, 133,
-			196, 135, 20, 0, 11, 136, 197, 188, 7, 14, 196, 133, 196, 135, 20, 7, 132, 23, 9, 197, 155, 20, 11, 136, 20, 3, 8, 14, 196, 133,
-			196, 135, 20, 11, 136, 19, 3, 8, 197, 130, 5, 197, 155, 20, 10, 199, 76, 50, 12, 5, 54, 131, 104, 20, 11, 136, 18, 197, 188, 14,
-			196, 133, 196, 135, 20, 7, 132, 16, 1, 197, 155, 20, 9, 134, 196, 135, 13, 9, 196, 133, 20, 7, 132, 2, 1, 196, 135, 20, 9, 198,
-			52, 18, 211, 36, 213, 77, 65, 0, 8, 133, 197, 188, 21, 196, 135, 20, 8, 133, 7, 18, 1, 196, 135, 20, 8, 133, 7, 14, 1, 196,
-			135, 20, 12, 137, 4, 197, 186, 7, 14, 196, 133, 196, 135, 20, 8, 133, 4, 2, 1, 196, 135, 20, 10, 135, 2, 18, 26, 13, 9, 196,
-			133, 20, 8, 133, 2, 18, 1, 196, 135, 20, 32, 68, 12, 130, 76, 36, 76, 4, 37, 55, 37, 49, 111, 50, 49, 6, 35, 34, 50, 109,
-			0, 82, 99, 111, 110, 32, 99, 97, 114, 110, 101, 32, 11, 68, 12, 130, 76, 36, 76, 37, 55, 37, 0, 6, 195, 9, 147, 9, 76, 0,
-			9, 134, 20, 11, 23, 9, 196, 135, 20, 9, 134, 19, 197, 130, 1, 196, 135, 20, 9, 134, 13, 18, 26, 5, 196, 135, 20, 9, 134, 7,
-			18, 26, 1, 196, 135, 20, 9, 134, 4, 18, 26, 5, 196, 135, 20, 6, 195, 16, 210, 74, 20, 0, 10, 135, 19, 26, 3, 26, 5, 196,
-			135, 20, 0, 8, 133, 197, 188, 21, 197, 130, 20, 9, 134, 20, 11, 23, 9, 196, 133, 20, 9, 134, 19, 26, 11, 12, 196, 133, 20, 8,
-			133, 7, 18, 1, 197, 130, 20, 8, 133, 7, 14, 1, 197, 130, 20, 8, 133, 4, 2, 1, 197, 130, 20, 0, 9, 134, 20, 11, 23, 9,
-			197, 130, 20, 9, 134, 19, 197, 130, 1, 197, 130, 20, 8, 133, 18, 23, 196, 133, 3, 20, 9, 134, 7, 18, 26, 1, 197, 130, 20, 7,
-			132, 7, 9, 197, 132, 20, 0, 8, 133, 16, 12, 5, 197, 132, 20, 0, 9, 134, 23, 19, 20, 1, 197, 132, 20, 9, 134, 197, 155, 23,
-			9, 197, 132, 20, 7, 132, 12, 1, 197, 130, 20, 7, 132, 4, 1, 197, 130, 20, 0, 8, 133, 26, 26, 21, 197, 130, 20, 8, 133, 19,
-			14, 21, 197, 130, 20, 0, 7, 196, 104, 116, 143, 52, 20, 9, 134, 23, 19, 20, 1, 197, 130, 20, 6, 195, 64, 197, 193, 20, 9, 134,
-			16, 3, 8, 1, 197, 130, 20, 9, 134, 13, 4, 12, 1, 197, 130, 20, 9, 134, 196, 135, 16, 1, 197, 130, 20, 9, 134, 196, 135, 13,
-			9, 197, 130, 20, 9, 134, 3, 8, 12, 1, 197, 130, 20, 0, 6, 195, 92, 19, 0, 20, 10, 135, 20, 11, 14, 196, 133, 197, 130, 20,
-			8, 197, 77, 161, 80, 13, 160, 20, 10, 135, 19, 26, 3, 26, 21, 197, 130, 20, 6, 195, 76, 147, 0, 20, 10, 135, 19, 3, 8, 12,
-			1, 197, 130, 20, 8, 197, 56, 148, 218, 13, 160, 20, 8, 133, 13, 195, 179, 4, 12, 20, 10, 135, 4, 18, 197, 188, 1, 197, 130, 20,
-			10, 135, 2, 18, 14, 196, 133, 197, 130, 20, 7, 132, 19, 9, 196, 153, 72, 0, 11, 136, 197, 188, 7, 14, 196, 133, 197, 130, 20, 11,
-			136, 20, 3, 8, 14, 196, 133, 197, 130, 20, 11, 136, 18, 197, 188, 14, 196, 133, 197, 130, 20, 7, 132, 18, 1, 197, 186, 20, 16, 66,
-			64, 240, 48, 6, 111, 84, 35, 89, 0, 81, 119, 97, 115, 32, 16, 66, 64, 240, 48, 6, 111, 47, 112, 65, 0, 81, 116, 121, 109, 32,
-			14, 66, 64, 240, 48, 6, 111, 47, 111, 0, 81, 116, 111, 32, 14, 66, 64, 240, 48, 6, 111, 47, 109, 0, 81, 116, 101, 32, 15, 66,
-			64, 240, 48, 6, 111, 47, 114, 0, 81, 116, 196, 133, 32, 16, 66, 64, 240, 48, 6, 111, 67, 38, 109, 0, 81, 110, 105, 101, 32, 17,
-			66, 64, 240, 48, 6, 111, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 64, 240, 48, 6, 111, 67, 37, 65, 0, 81, 110, 105,
-			109, 32, 18, 66, 64, 240, 48, 6, 111, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 16, 66, 64, 240, 48, 6, 111, 50, 35, 89,
-			0, 81, 110, 97, 115, 32, 18, 66, 64, 240, 48, 6, 111, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 5, 194, 64, 240, 76, 0,
-			12, 137, 4, 197, 186, 7, 14, 196, 133, 197, 130, 20, 18, 67, 64, 241, 0, 48, 6, 111, 72, 84, 35, 89, 0, 81, 119, 97, 115, 32,
-			18, 67, 64, 241, 0, 48, 6, 111, 47, 47, 112, 65, 0, 81, 116, 121, 109, 32, 16, 67, 64, 241, 0, 48, 6, 111, 47, 47, 111, 0,
-			81, 116, 111, 32, 16, 67, 64, 241, 0, 48, 6, 111, 47, 47, 109, 0, 81, 116, 101, 32, 17, 67, 64, 241, 0, 48, 6, 111, 47, 47,
-			114, 0, 81, 116, 196, 133, 32, 18, 67, 64, 241, 0, 48, 6, 111, 72, 67, 38, 109, 0, 81, 110, 105, 101, 32, 19, 67, 64, 241, 0,
-			48, 6, 111, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 18, 67, 64, 241, 0, 48, 6, 111, 72, 67, 37, 65, 0, 81, 110, 105,
-			109, 32, 19, 67, 64, 241, 0, 48, 6, 111, 72, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 18, 67, 64, 241, 0, 48, 6, 111, 72,
-			50, 35, 89, 0, 81, 110, 97, 115, 32, 6, 195, 64, 241, 0, 76, 19, 2, 203, 157, 101, 4, 40, 68, 81, 35, 51, 6, 40, 65, 55,
-			35, 58, 47, 0, 0, 9, 134, 20, 197, 130, 15, 3, 26, 20, 7, 196, 76, 180, 143, 8, 20, 6, 195, 53, 38, 133, 20, 9, 134, 197,
-			130, 197, 188, 25, 10, 20, 10, 135, 7, 18, 26, 13, 9, 196, 153, 20, 0, 8, 133, 4, 196, 133, 197, 188, 20, 12, 2, 203, 155, 111,
-			81, 6, 111, 50, 109, 49, 0, 0, 12, 2, 203, 152, 71, 51, 6, 109, 84, 37, 89, 0, 0, 19, 2, 203, 153, 81, 6, 40, 51, 50,
-			35, 10, 49, 51, 6, 111, 48, 49, 35, 0, 0, 9, 134, 197, 188, 7, 1, 19, 26, 20, 9, 134, 197, 155, 14, 9, 19, 26, 20, 10,
-			68, 8, 241, 85, 24, 71, 109, 83, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0, 0, 9, 67, 88, 145, 87, 84, 38, 40, 0,
-			0, 9, 134, 19, 26, 11, 12, 196, 153, 20, 0, 7, 196, 92, 145, 68, 104, 20, 0, 11, 136, 19, 3, 8, 197, 130, 15, 2, 25, 20,
-			12, 137, 15, 197, 155, 13, 9, 21, 19, 5, 20, 65, 13, 69, 40, 84, 147, 21, 144, 75, 109, 51, 88, 37, 0, 0, 6, 2, 95, 9,
-			37, 0, 0, 9, 134, 196, 135, 13, 9, 196, 153, 20, 14, 139, 19, 26, 5, 197, 155, 3, 9, 21, 19, 5, 20, 65, 0, 6, 2, 95,
-			15, 111, 0, 0, 9, 134, 26, 197, 130, 1, 197, 186, 20, 9, 134, 23, 197, 130, 1, 197, 186, 20, 7, 196, 28, 224, 83, 104, 20, 0,
-			8, 197, 4, 194, 83, 60, 224, 65, 0, 9, 134, 23, 9, 196, 133, 197, 188, 20, 0, 7, 132, 20, 18, 196, 133, 20, 7, 132, 16, 18,
-			196, 133, 20, 0, 18, 9, 4, 5, 12, 12, 39, 1, 18, 20, 5, 72, 109, 55, 6, 35, 51, 0, 10, 135, 10, 5, 19, 20, 5, 197,
-			155, 76, 0, 11, 136, 19, 20, 18, 26, 196, 133, 197, 155, 20, 9, 134, 4, 18, 7, 14, 196, 133, 20, 9, 134, 3, 26, 11, 14, 196,
-			133, 20, 0, 16, 70, 8, 16, 203, 92, 20, 132, 71, 109, 49, 58, 109, 51, 72, 0, 0, 9, 134, 19, 20, 197, 130, 21, 3, 20, 8,
-			133, 4, 197, 130, 21, 2, 20, 9, 134, 3, 8, 3, 196, 133, 3, 20, 7, 2, 95, 23, 84, 40, 0, 0, 0, 9, 134, 20, 11, 23,
-			9, 196, 153, 20, 6, 2, 95, 21, 40, 0, 0, 0, 0, 7, 196, 92, 116, 143, 52, 20, 10, 135, 197, 155, 14, 9, 196, 133, 3, 20,
-			10, 135, 196, 135, 13, 9, 196, 133, 3, 20, 8, 2, 95, 26, 88, 109, 47, 0, 0, 8, 197, 105, 112, 76, 13, 160, 20, 10, 135, 26,
-			7, 18, 25, 26, 197, 130, 20, 11, 136, 2, 18, 26, 13, 9, 196, 133, 3, 20, 13, 138, 10, 5, 19, 20, 5, 197, 155, 3, 9, 5,
-			76, 0, 8, 133, 11, 18, 1, 197, 155, 20, 10, 135, 2, 18, 26, 13, 9, 196, 153, 20, 0, 8, 133, 196, 135, 16, 1, 10, 20, 0,
-			7, 196, 92, 194, 67, 104, 20, 7, 196, 16, 32, 83, 104, 20, 10, 135, 2, 25, 197, 130, 5, 197, 155, 76, 11, 200, 52, 19, 132, 20,
-			192, 146, 61, 64, 65, 0, 10, 135, 26, 7, 197, 130, 21, 19, 26, 20, 0, 11, 136, 197, 188, 7, 14, 9, 5, 19, 26, 20, 9, 134,
-			26, 13, 18, 21, 197, 188, 20, 6, 195, 52, 67, 9, 20, 18, 67, 16, 82, 129, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 101,
-			32, 17, 67, 16, 82, 129, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 32, 9, 134, 11, 15, 12, 1, 197, 188, 66, 0, 10, 135,
-			26, 23, 9, 196, 133, 197, 188, 20, 8, 133, 26, 12, 5, 197, 186, 20, 8, 133, 23, 12, 5, 197, 186, 20, 6, 195, 48, 82, 128, 20,
-			6, 195, 8, 146, 128, 20, 7, 195, 80, 82, 128, 72, 12, 0, 7, 196, 104, 36, 143, 40, 20, 9, 134, 13, 197, 188, 25, 19, 26, 20,
-			8, 133, 196, 135, 16, 1, 13, 20, 14, 2, 95, 34, 117, 40, 118, 6, 112, 89, 58, 40, 83, 0, 0, 9, 198, 93, 54, 131, 104, 226,
-			69, 20, 10, 135, 4, 197, 186, 7, 1, 19, 26, 20, 11, 69, 69, 82, 67, 32, 80, 49, 37, 91, 0, 15, 2, 95, 33, 84, 112, 49,
-			91, 6, 112, 49, 67, 37, 49, 0, 0, 9, 198, 93, 64, 83, 104, 54, 128, 20, 9, 198, 44, 192, 83, 104, 54, 128, 20, 5, 194, 81,
-			144, 76, 0, 10, 135, 19, 20, 18, 26, 5, 197, 188, 20, 9, 67, 12, 243, 128, 49, 111, 50, 0, 14, 2, 95, 39, 35, 48, 6, 111,
-			89, 47, 51, 111, 83, 0, 0, 9, 198, 93, 54, 131, 104, 226, 74, 20, 7, 196, 92, 180, 143, 64, 20, 0, 0, 16, 67, 52, 195, 5,
-			65, 35, 72, 65, 40, 35, 88, 6, 109, 55, 0, 10, 67, 40, 19, 133, 75, 109, 57, 50, 0, 11, 2, 95, 36, 72, 6, 111, 55, 35,
-			51, 0, 0, 7, 195, 80, 83, 128, 72, 12, 0, 7, 196, 77, 3, 1, 52, 20, 12, 68, 4, 66, 69, 84, 35, 72, 57, 6, 109, 0,
-			7, 196, 52, 16, 201, 20, 76, 13, 4, 95, 3, 1, 16, 72, 6, 40, 90, 109, 10, 0, 0, 23, 73, 12, 147, 145, 84, 80, 197, 57,
-			67, 192, 76, 37, 50, 49, 58, 109, 76, 109, 50, 47, 111, 0, 15, 2, 95, 41, 48, 111, 50, 35, 84, 38, 6, 35, 97, 109, 0, 0,
-			6, 195, 92, 116, 129, 20, 11, 2, 95, 40, 50, 35, 84, 38, 35, 89, 0, 0, 8, 133, 11, 197, 130, 21, 10, 20, 0, 8, 133, 20,
-			11, 14, 196, 133, 20, 10, 135, 7, 18, 25, 197, 186, 196, 135, 20, 0, 11, 136, 26, 23, 9, 5, 197, 186, 196, 135, 20, 8, 133, 26,
-			14, 21, 197, 188, 20, 11, 136, 26, 7, 18, 25, 197, 186, 196, 135, 20, 11, 136, 23, 23, 9, 5, 197, 186, 196, 135, 20, 10, 135, 23,
-			9, 5, 197, 132, 3, 26, 20, 11, 136, 23, 7, 18, 25, 197, 186, 196, 135, 20, 8, 133, 13, 25, 197, 155, 12, 20, 13, 2, 95, 45,
-			65, 6, 112, 97, 55, 50, 37, 49, 0, 0, 11, 136, 26, 23, 9, 5, 197, 132, 3, 26, 20, 8, 133, 9, 197, 155, 196, 135, 20, 14,
-			2, 95, 44, 48, 91, 109, 119, 6, 37, 50, 109, 49, 0, 0, 7, 132, 4, 18, 196, 133, 20, 19, 71, 12, 19, 69, 52, 33, 82, 80,
-			49, 35, 65, 109, 65, 71, 6, 109, 51, 0, 9, 2, 95, 51, 47, 91, 6, 112, 0, 0, 10, 135, 26, 10, 5, 197, 155, 196, 135, 20,
-			10, 135, 23, 9, 5, 197, 186, 196, 135, 20, 11, 136, 19, 16, 18, 26, 196, 133, 197, 188, 20, 7, 196, 9, 35, 137, 40, 20, 8, 133,
-			13, 1, 10, 196, 133, 76, 27, 68, 76, 245, 78, 16, 89, 35, 58, 50, 72, 15, 75, 6, 40, 89, 109, 51, 0, 81, 106, 117, 105, 99,
-			101, 114, 32, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 8, 197, 76, 179, 14, 36, 160, 20, 8, 197, 76, 50, 12, 20, 160, 20, 11,
-			2, 95, 49, 57, 6, 109, 72, 109, 50, 0, 0, 11, 136, 197, 155, 23, 9, 15, 4, 3, 26, 20, 11, 2, 95, 48, 88, 6, 109, 51,
-			111, 12, 0, 0, 7, 132, 16, 18, 196, 153, 20, 6, 195, 45, 114, 76, 20, 11, 2, 95, 55, 97, 6, 109, 72, 109, 65, 0, 0, 10,
-			2, 95, 54, 91, 6, 109, 97, 119, 0, 0, 9, 134, 3, 26, 11, 14, 196, 153, 20, 11, 2, 95, 53, 48, 38, 6, 109, 67, 119, 0,
-			0, 11, 136, 23, 23, 9, 195, 179, 26, 197, 130, 20, 8, 133, 4, 13, 196, 133, 3, 20, 11, 2, 95, 52, 76, 47, 6, 109, 51, 112,
-			0, 0, 8, 133, 12, 1, 26, 197, 130, 20, 9, 134, 11, 16, 9, 196, 133, 3, 20, 13, 2, 95, 59, 97, 51, 6, 109, 72, 67, 37,
-			49, 0, 0, 9, 134, 23, 12, 1, 26, 197, 130, 20, 10, 135, 20, 11, 23, 9, 196, 133, 3, 20, 10, 135, 197, 155, 13, 9, 196, 133,
-			3, 20, 10, 135, 19, 26, 11, 12, 196, 133, 3, 20, 9, 134, 7, 18, 25, 26, 197, 130, 20, 10, 135, 4, 18, 23, 9, 196, 133, 3,
-			20, 9, 198, 12, 131, 1, 77, 160, 218, 20, 15, 2, 95, 58, 72, 84, 40, 49, 51, 6, 111, 48, 109, 49, 0, 0, 10, 135, 23, 9,
-			195, 179, 26, 197, 130, 20, 10, 135, 23, 7, 18, 25, 26, 197, 130, 20, 8, 197, 64, 197, 193, 77, 160, 20, 13, 2, 95, 57, 120, 6,
-			109, 84, 38, 109, 67, 119, 0, 0, 14, 139, 19, 3, 8, 197, 130, 25, 197, 155, 3, 9, 5, 20, 18, 66, 92, 80, 84, 6, 109, 65,
-			67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 16, 70, 12, 128, 82, 52, 19, 148, 91, 35, 51, 65, 35, 50, 0, 66, 5, 194, 92, 80,
-			72, 10, 2, 95, 56, 6, 111, 97, 109, 65, 0, 0, 19, 71, 12, 243, 131, 36, 84, 135, 20, 49, 111, 50, 89, 57, 6, 109, 51, 90,
-			0, 20, 2, 95, 63, 88, 50, 4, 35, 49, 15, 88, 35, 48, 112, 47, 6, 35, 67, 35, 0, 0, 9, 134, 26, 23, 196, 153, 197, 186,
-			20, 7, 196, 76, 179, 195, 104, 20, 13, 2, 95, 62, 58, 38, 6, 109, 68, 49, 91, 109, 0, 0, 12, 137, 26, 2, 197, 130, 1, 197,
-			186, 197, 132, 20, 0, 11, 136, 197, 155, 23, 9, 1, 4, 3, 26, 20, 9, 198, 64, 197, 83, 104, 54, 128, 20, 9, 198, 52, 20, 147,
-			104, 54, 128, 20, 12, 2, 95, 60, 65, 67, 6, 109, 57, 91, 109, 0, 0, 0, 7, 196, 105, 37, 83, 104, 20, 7, 196, 104, 35, 195,
-			104, 20, 7, 196, 12, 145, 82, 64, 20, 0, 0, 9, 198, 104, 226, 83, 104, 54, 128, 20, 9, 198, 12, 132, 154, 12, 146, 128, 20, 0,
-			7, 132, 20, 18, 196, 153, 20, 0, 7, 196, 76, 180, 143, 64, 20, 7, 132, 11, 196, 133, 16, 20, 7, 196, 9, 35, 137, 20, 20, 0,
-			9, 134, 4, 18, 7, 14, 196, 153, 20, 0, 9, 198, 61, 5, 9, 53, 83, 64, 65, 0, 6, 195, 93, 112, 76, 20, 0, 7, 196, 64,
-			21, 18, 104, 20, 0, 0, 6, 195, 104, 161, 77, 20, 8, 133, 23, 4, 21, 197, 155, 20, 8, 133, 16, 19, 15, 196, 135, 20, 10, 135,
-			4, 197, 188, 4, 197, 188, 25, 20, 10, 67, 12, 240, 193, 49, 111, 49, 35, 0, 0, 9, 134, 13, 1, 197, 155, 196, 135, 20, 9, 134,
-			4, 26, 9, 15, 196, 135, 20, 0, 10, 135, 3, 26, 25, 197, 155, 196, 135, 20, 0, 11, 136, 26, 13, 9, 5, 197, 155, 196, 135, 20,
-			11, 136, 26, 7, 196, 153, 197, 155, 196, 135, 20, 11, 136, 23, 13, 9, 5, 197, 155, 196, 135, 20, 11, 136, 23, 11, 18, 1, 197, 155,
-			196, 135, 20, 11, 136, 19, 20, 18, 5, 197, 155, 196, 135, 20, 11, 136, 19, 11, 18, 1, 197, 155, 196, 135, 20, 0, 8, 133, 26, 9,
-			15, 196, 135, 20, 12, 137, 26, 7, 14, 9, 5, 197, 155, 196, 135, 20, 12, 137, 23, 26, 14, 9, 5, 197, 155, 196, 135, 20, 10, 67,
-			88, 144, 197, 84, 37, 117, 109, 0, 9, 198, 4, 225, 197, 48, 84, 192, 65, 0, 9, 134, 16, 21, 197, 155, 196, 135, 20, 8, 133, 8,
-			1, 197, 132, 2, 20, 9, 134, 4, 18, 7, 15, 196, 135, 20, 9, 134, 3, 26, 11, 15, 196, 135, 20, 13, 67, 85, 48, 128, 40, 109,
-			89, 71, 6, 109, 0, 17, 0, 10, 135, 18, 195, 179, 197, 155, 196, 135, 20, 10, 135, 13, 9, 5, 197, 155, 196, 135, 20, 10, 135, 3,
-			8, 23, 9, 15, 196, 135, 20, 10, 135, 2, 195, 179, 197, 155, 196, 135, 20, 0, 11, 136, 26, 18, 195, 179, 197, 155, 196, 135, 20, 6,
-			195, 104, 34, 74, 20, 11, 136, 23, 18, 195, 179, 197, 155, 196, 135, 20, 0, 0, 8, 133, 26, 9, 15, 197, 130, 20, 8, 133, 14, 9,
-			11, 197, 130, 20, 14, 67, 20, 177, 192, 109, 49, 35, 81, 38, 6, 109, 0, 17, 19, 71, 25, 32, 78, 12, 148, 195, 60, 83, 51, 35,
-			50, 89, 37, 89, 49, 111, 0, 0, 9, 198, 77, 4, 154, 100, 180, 154, 20, 8, 133, 4, 18, 197, 188, 25, 20, 9, 134, 4, 18, 7,
-			15, 197, 130, 20, 9, 134, 3, 26, 11, 15, 197, 130, 20, 14, 4, 95, 4, 15, 20, 88, 49, 51, 111, 48, 49, 114, 0, 0, 10, 135,
-			19, 16, 19, 9, 15, 197, 130, 20, 10, 135, 19, 16, 9, 5, 11, 197, 130, 20, 10, 135, 3, 8, 23, 9, 15, 197, 130, 20, 0, 0,
-			6, 195, 104, 161, 64, 20, 7, 195, 4, 193, 64, 76, 28, 24, 2, 95, 91, 50, 4, 35, 84, 38, 35, 89, 15, 49, 84, 35, 72, 51,
-			35, 47, 6, 111, 84, 112, 0, 0, 9, 134, 26, 23, 25, 11, 197, 130, 20, 8, 133, 20, 11, 14, 196, 153, 20, 9, 134, 18, 26, 5,
-			11, 197, 130, 20, 9, 134, 4, 26, 9, 15, 197, 130, 20, 9, 134, 2, 18, 1, 11, 197, 130, 20, 0, 10, 135, 26, 18, 26, 5, 11,
-			197, 130, 20, 10, 135, 26, 2, 18, 1, 11, 197, 130, 20, 8, 197, 93, 160, 149, 73, 160, 20, 8, 197, 92, 180, 143, 13, 160, 20, 8,
-			197, 81, 37, 193, 77, 160, 20, 8, 197, 17, 33, 193, 77, 160, 20, 0, 6, 195, 64, 226, 69, 20, 16, 66, 104, 16, 88, 6, 35, 67,
-			38, 109, 0, 81, 110, 105, 101, 32, 17, 66, 104, 16, 88, 6, 35, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 104, 16, 88,
-			6, 35, 84, 35, 89, 0, 81, 119, 97, 115, 32, 16, 66, 104, 16, 88, 6, 35, 47, 112, 65, 0, 81, 116, 121, 109, 32, 14, 66, 104,
-			16, 88, 6, 35, 47, 111, 0, 81, 116, 111, 32, 14, 66, 104, 16, 88, 6, 35, 47, 109, 0, 81, 116, 101, 32, 15, 66, 104, 16, 88,
-			6, 35, 47, 114, 0, 81, 116, 196, 133, 32, 16, 66, 104, 16, 88, 6, 35, 67, 37, 65, 0, 81, 110, 105, 109, 32, 17, 66, 104, 16,
-			88, 6, 35, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 16, 66, 104, 16, 88, 6, 35, 50, 35, 89, 0, 81, 110, 97, 115, 32, 18,
-			66, 104, 16, 88, 6, 35, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 5, 194, 104, 16, 76, 0, 8, 133, 11, 18, 195, 179, 10,
-			20, 17, 2, 95, 95, 48, 111, 72, 49, 51, 109, 97, 55, 6, 109, 67, 109, 0, 0, 9, 134, 23, 11, 197, 130, 21, 10, 20, 7, 196,
-			80, 181, 201, 40, 20, 9, 134, 19, 11, 197, 130, 21, 10, 20, 18, 70, 64, 17, 197, 16, 245, 206, 48, 109, 57, 75, 72, 6, 35, 58,
-			50, 0, 0, 10, 135, 14, 9, 1, 197, 132, 3, 26, 20, 28, 69, 52, 18, 84, 72, 80, 65, 109, 47, 51, 109, 72, 111, 47, 6, 109,
-			55, 0, 81, 100, 39, 104, 111, 116, 101, 108, 32, 30, 2, 95, 93, 48, 51, 35, 84, 112, 15, 50, 4, 35, 84, 38, 35, 89, 15, 49,
-			84, 35, 72, 51, 35, 47, 6, 111, 84, 112, 0, 0, 9, 198, 77, 162, 204, 37, 54, 128, 20, 9, 198, 65, 53, 18, 105, 146, 128, 20,
-			10, 67, 40, 18, 197, 75, 109, 57, 49, 0, 0, 6, 195, 73, 146, 128, 20, 6, 195, 17, 82, 128, 20, 9, 67, 12, 243, 204, 49, 40,
-			55, 0, 0, 7, 196, 12, 145, 83, 104, 20, 12, 137, 2, 196, 153, 4, 26, 9, 5, 13, 25, 76, 8, 133, 2, 25, 197, 130, 1, 76,
-			0, 6, 195, 8, 16, 218, 20, 31, 69, 12, 128, 82, 28, 80, 91, 35, 51, 90, 109, 72, 35, 83, 109, 51, 0, 68, 81, 100, 39, 97,
-			102, 102, 97, 105, 114, 101, 115, 32, 0, 9, 198, 77, 160, 218, 101, 54, 128, 20, 8, 133, 2, 25, 197, 130, 15, 76, 0, 7, 132, 4,
-			18, 196, 153, 20, 0, 0, 6, 195, 64, 226, 74, 20, 0, 0, 0, 0, 0, 8, 133, 26, 23, 15, 196, 135, 20, 8, 133, 20, 11, 15,
-			196, 135, 20, 8, 133, 19, 19, 15, 196, 135, 20, 8, 133, 18, 23, 15, 196, 135, 20, 16, 70, 13, 84, 129, 12, 19, 192, 49, 37, 51,
-			35, 89, 35, 111, 0, 26, 67, 12, 244, 193, 49, 4, 111, 88, 35, 50, 6, 111, 89, 47, 51, 35, 0, 81, 110, 111, 115, 116, 114, 97,
-			32, 14, 4, 95, 7, 18, 22, 119, 6, 113, 91, 80, 38, 109, 0, 0, 9, 134, 21, 10, 197, 155, 196, 135, 20, 20, 67, 88, 148, 192,
-			84, 37, 88, 35, 84, 37, 0, 67, 82, 97, 32, 118, 105, 115, 32, 21, 67, 88, 148, 192, 84, 37, 88, 35, 84, 37, 0, 67, 82, 195,
-			160, 32, 118, 105, 115, 32, 0, 9, 134, 26, 13, 196, 153, 3, 26, 20, 7, 196, 12, 226, 83, 104, 20, 8, 133, 3, 8, 3, 196, 133,
-			20, 12, 68, 13, 83, 16, 4, 49, 40, 55, 48, 35, 0, 0, 11, 136, 26, 23, 9, 5, 197, 155, 196, 135, 20, 11, 136, 26, 14, 9,
-			5, 197, 155, 196, 135, 20, 11, 136, 23, 14, 9, 5, 197, 155, 196, 135, 20, 8, 197, 92, 70, 137, 20, 160, 20, 0, 12, 137, 23, 26,
-			18, 195, 179, 197, 155, 196, 135, 20, 8, 133, 23, 9, 15, 196, 135, 20, 8, 133, 19, 9, 15, 196, 135, 20, 8, 133, 16, 9, 15, 196,
-			135, 20, 6, 131, 19, 196, 133, 76, 0, 8, 133, 197, 188, 25, 3, 26, 20, 9, 134, 20, 18, 23, 15, 196, 135, 20, 9, 134, 16, 15,
-			197, 155, 196, 135, 20, 0, 10, 135, 23, 16, 21, 197, 155, 196, 135, 20, 10, 135, 19, 16, 21, 197, 155, 196, 135, 20, 10, 135, 16, 9,
-			5, 197, 155, 196, 135, 20, 10, 135, 14, 1, 10, 197, 155, 196, 135, 20, 10, 135, 11, 18, 1, 197, 155, 196, 135, 20, 0, 11, 136, 11,
-			197, 130, 1, 197, 155, 196, 135, 20, 8, 197, 12, 133, 201, 20, 160, 20, 0, 10, 135, 19, 3, 8, 197, 130, 15, 13, 20, 0, 8, 133,
-			23, 9, 15, 197, 130, 20, 8, 133, 19, 9, 15, 197, 130, 20, 8, 133, 16, 9, 15, 197, 130, 20, 6, 195, 8, 21, 192, 20, 0, 9,
-			134, 26, 13, 195, 179, 18, 26, 20, 9, 134, 23, 12, 5, 11, 197, 130, 20, 9, 134, 20, 18, 23, 15, 197, 130, 20, 9, 134, 16, 9,
-			5, 11, 197, 130, 20, 0, 10, 135, 26, 23, 12, 5, 11, 197, 130, 20, 6, 195, 48, 80, 218, 20, 0, 11, 136, 19, 20, 197, 130, 21,
-			11, 197, 130, 20, 11, 136, 7, 18, 26, 13, 9, 15, 197, 130, 20, 0, 8, 133, 26, 23, 15, 197, 130, 20, 8, 133, 20, 11, 15, 197,
-			130, 20, 12, 137, 197, 155, 13, 9, 5, 18, 4, 197, 130, 20, 8, 133, 19, 19, 15, 197, 130, 20, 8, 133, 18, 23, 15, 197, 130, 20,
-			21, 2, 95, 123, 50, 4, 35, 84, 38, 35, 89, 15, 49, 55, 35, 65, 51, 111, 84, 112, 0, 15, 4, 95, 4, 9, 1, 10, 6, 40,
-			65, 55, 35, 58, 47, 0, 0, 9, 198, 80, 50, 14, 36, 84, 218, 20, 9, 134, 19, 9, 5, 11, 197, 130, 20, 9, 198, 76, 50, 14,
-			36, 84, 218, 20, 9, 134, 13, 195, 179, 11, 197, 130, 20, 9, 134, 3, 9, 5, 11, 197, 130, 20, 9, 198, 12, 132, 154, 12, 148, 218,
-			20, 8, 133, 2, 25, 197, 130, 25, 76, 7, 195, 80, 81, 207, 72, 12, 0, 10, 135, 26, 13, 195, 179, 11, 197, 130, 20, 10, 135, 23,
-			3, 9, 5, 11, 197, 130, 20, 10, 135, 20, 197, 130, 21, 11, 197, 130, 20, 0, 9, 134, 20, 18, 23, 15, 197, 132, 20, 11, 136, 197,
-			155, 3, 9, 5, 11, 197, 130, 20, 9, 134, 4, 26, 23, 15, 197, 132, 20, 10, 135, 2, 196, 153, 4, 26, 9, 5, 76, 5, 194, 80,
-			240, 72, 0, 10, 135, 19, 20, 18, 23, 15, 197, 132, 20, 0, 7, 196, 104, 224, 67, 104, 20, 6, 195, 104, 32, 87, 20, 7, 196, 77,
-			4, 129, 92, 20, 7, 196, 25, 84, 131, 104, 20, 7, 196, 12, 194, 83, 104, 20, 0, 8, 197, 77, 160, 218, 4, 208, 20, 23, 73, 12,
-			130, 80, 64, 83, 132, 4, 193, 64, 76, 37, 48, 109, 50, 72, 109, 57, 55, 0, 65, 9, 21, 73, 12, 130, 80, 64, 83, 132, 4, 193,
-			64, 76, 37, 48, 109, 50, 72, 109, 57, 55, 0, 9, 134, 11, 20, 195, 179, 18, 1, 76, 28, 2, 95, 125, 48, 51, 35, 84, 112, 15,
-			50, 4, 35, 84, 38, 35, 89, 15, 49, 55, 35, 65, 51, 6, 111, 84, 112, 0, 0, 8, 133, 19, 11, 15, 197, 155, 20, 0, 0, 8,
-			133, 11, 197, 130, 15, 13, 20, 12, 137, 14, 9, 5, 11, 20, 195, 179, 18, 1, 76, 12, 67, 40, 21, 211, 75, 6, 109, 58, 89, 0,
-			17, 0, 10, 135, 19, 20, 18, 196, 153, 3, 26, 20, 10, 135, 19, 16, 197, 130, 15, 19, 26, 20, 6, 195, 72, 16, 218, 20, 9, 134,
-			11, 20, 195, 179, 18, 5, 76, 0, 9, 198, 77, 160, 218, 5, 54, 128, 20, 9, 198, 9, 38, 141, 37, 54, 128, 20, 5, 194, 93, 144,
-			76, 0, 6, 195, 12, 134, 76, 20, 0, 12, 137, 14, 9, 5, 11, 20, 195, 179, 18, 5, 76, 0, 0, 0, 0, 9, 198, 76, 179, 14,
-			36, 84, 218, 20, 9, 198, 64, 50, 14, 36, 84, 218, 20, 8, 133, 3, 8, 3, 196, 153, 20, 0, 0, 17, 70, 12, 16, 133, 72, 225,
-			84, 49, 35, 71, 109, 51, 50, 6, 109, 0, 0, 8, 133, 26, 197, 130, 1, 10, 20, 0, 9, 134, 23, 20, 18, 195, 179, 10, 20, 9,
-			134, 19, 20, 18, 195, 179, 10, 20, 0, 15, 70, 12, 243, 84, 21, 52, 197, 49, 114, 47, 6, 109, 89, 0, 0, 0, 8, 133, 23, 23,
-			15, 197, 186, 20, 0, 8, 133, 26, 197, 130, 1, 13, 20, 8, 133, 23, 197, 130, 1, 13, 20, 11, 136, 19, 20, 18, 23, 195, 179, 197,
-			188, 20, 8, 133, 12, 197, 188, 196, 133, 20, 7, 196, 17, 84, 3, 104, 20, 6, 195, 9, 32, 75, 20, 0, 0, 21, 67, 64, 241, 5,
-			48, 111, 72, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 20, 67, 64, 241, 5, 48, 111, 72, 6, 109, 65, 50, 114, 0,
-			81, 109, 110, 196, 133, 32, 0, 8, 133, 11, 195, 179, 18, 26, 20, 0, 0, 0, 10, 135, 16, 18, 15, 197, 130, 2, 25, 20, 10, 135,
-			13, 9, 15, 197, 130, 2, 25, 20, 10, 135, 7, 1, 19, 197, 130, 2, 25, 20, 11, 136, 19, 20, 196, 153, 3, 8, 197, 130, 20, 13,
-			4, 95, 35, 51, 50, 89, 48, 35, 117, 57, 35, 0, 0, 11, 136, 26, 23, 25, 11, 197, 130, 2, 25, 20, 11, 136, 26, 7, 18, 15,
-			197, 130, 2, 25, 20, 11, 136, 23, 7, 18, 15, 197, 130, 2, 25, 20, 11, 136, 18, 197, 188, 15, 197, 130, 2, 25, 20, 11, 136, 18,
-			26, 5, 11, 197, 130, 2, 25, 20, 11, 136, 13, 9, 12, 11, 197, 130, 2, 25, 20, 11, 136, 13, 4, 12, 15, 197, 130, 2, 25, 20,
-			11, 136, 197, 130, 7, 15, 197, 130, 2, 25, 20, 11, 136, 4, 26, 9, 15, 197, 130, 2, 25, 20, 11, 136, 196, 135, 16, 15, 197, 130,
-			2, 25, 20, 11, 136, 3, 8, 12, 15, 197, 130, 2, 25, 20, 11, 136, 2, 18, 1, 11, 197, 130, 2, 25, 20, 9, 134, 23, 26, 14,
-			195, 179, 23, 20, 12, 137, 197, 155, 13, 9, 15, 18, 4, 197, 130, 20, 15, 67, 85, 49, 192, 40, 10, 109, 89, 81, 38, 6, 109, 0,
-			17, 0, 12, 137, 26, 18, 26, 5, 11, 197, 130, 2, 25, 20, 12, 137, 26, 13, 195, 179, 7, 197, 130, 2, 25, 20, 12, 137, 26, 13,
-			9, 12, 11, 197, 130, 2, 25, 20, 12, 137, 26, 2, 18, 1, 11, 197, 130, 2, 25, 20, 12, 137, 23, 12, 195, 179, 11, 197, 130, 2,
-			25, 20, 12, 137, 23, 4, 26, 9, 15, 197, 130, 2, 25, 20, 12, 137, 19, 3, 8, 12, 15, 197, 130, 2, 25, 20, 12, 137, 11, 12,
-			196, 153, 19, 197, 130, 2, 25, 20, 12, 137, 4, 197, 186, 7, 15, 197, 130, 2, 25, 20, 12, 137, 3, 8, 3, 9, 15, 197, 130, 2,
-			25, 20, 13, 138, 19, 16, 9, 5, 18, 26, 3, 8, 197, 130, 20, 9, 134, 19, 5, 3, 8, 197, 130, 20, 9, 134, 16, 21, 3, 8,
-			197, 130, 20, 12, 137, 2, 25, 12, 9, 197, 155, 3, 9, 5, 76, 0, 13, 138, 19, 3, 8, 12, 9, 197, 155, 3, 9, 5, 20, 13,
-			138, 19, 26, 197, 130, 25, 197, 155, 3, 9, 5, 20, 13, 138, 23, 26, 13, 195, 179, 7, 197, 130, 2, 25, 20, 13, 138, 19, 11, 12,
-			196, 153, 19, 197, 130, 2, 25, 20, 8, 197, 92, 65, 80, 13, 160, 20, 13, 138, 2, 25, 197, 130, 25, 197, 155, 3, 9, 5, 76, 0,
-			14, 139, 19, 26, 12, 9, 2, 25, 197, 155, 3, 9, 5, 20, 14, 139, 23, 197, 155, 3, 9, 5, 11, 197, 130, 2, 25, 20, 17, 66,
-			104, 80, 88, 6, 109, 65, 50, 114, 0, 81, 109, 110, 196, 133, 32, 18, 66, 104, 80, 88, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110,
-			105, 101, 32, 14, 139, 13, 9, 1, 197, 130, 25, 197, 155, 3, 9, 5, 76, 0, 15, 140, 19, 26, 197, 130, 25, 2, 25, 197, 155, 3,
-			9, 5, 20, 15, 140, 19, 8, 197, 130, 25, 2, 25, 197, 155, 3, 9, 5, 20, 15, 140, 19, 3, 8, 12, 9, 2, 25, 197, 155, 3,
-			9, 5, 20, 11, 136, 19, 3, 8, 197, 130, 25, 2, 25, 20, 6, 195, 45, 2, 64, 20, 0, 13, 138, 26, 13, 9, 5, 18, 26, 3,
-			8, 197, 130, 20, 7, 196, 93, 4, 129, 92, 20, 10, 68, 12, 243, 84, 20, 49, 114, 47, 0, 11, 200, 76, 145, 68, 52, 149, 83, 21,
-			64, 65, 0, 10, 135, 197, 155, 12, 196, 153, 3, 26, 20, 0, 0, 0, 0, 6, 195, 77, 2, 74, 20, 0, 10, 135, 19, 3, 8, 197,
-			130, 5, 13, 20, 0, 14, 67, 52, 195, 128, 65, 37, 55, 57, 111, 50, 40, 83, 0, 0, 0, 8, 133, 26, 197, 130, 1, 16, 20, 6,
-			195, 93, 2, 74, 20, 6, 195, 9, 144, 218, 20, 9, 134, 11, 20, 195, 179, 18, 25, 76, 0, 0, 0, 12, 137, 14, 9, 5, 11, 20,
-			195, 179, 18, 25, 76, 0, 14, 69, 4, 225, 18, 21, 112, 109, 50, 72, 34, 57, 40, 0, 0, 0, 7, 132, 3, 12, 196, 133, 20, 0,
-			7, 196, 105, 38, 133, 12, 20, 7, 196, 93, 53, 1, 92, 20, 0, 6, 195, 105, 165, 74, 20, 9, 134, 197, 130, 197, 188, 196, 133, 20,
-			9, 134, 4, 18, 197, 188, 196, 133, 20, 10, 135, 11, 20, 195, 179, 18, 5, 10, 76, 0, 7, 131, 20, 196, 133, 72, 12, 0, 8, 133,
-			26, 23, 15, 197, 186, 20, 0, 8, 133, 18, 197, 188, 196, 133, 20, 8, 133, 13, 197, 188, 196, 133, 20, 10, 135, 13, 197, 155, 3, 9,
-			196, 135, 20, 13, 138, 14, 9, 5, 11, 20, 195, 179, 18, 5, 10, 76, 0, 6, 195, 105, 38, 74, 20, 6, 195, 45, 2, 74, 20, 6,
-			195, 33, 80, 218, 20, 0, 0, 8, 133, 26, 14, 1, 197, 130, 20, 0, 8, 133, 12, 197, 188, 196, 153, 20, 0, 9, 134, 23, 9, 197,
-			130, 2, 25, 20, 9, 134, 20, 25, 197, 130, 2, 25, 20, 9, 134, 13, 25, 197, 130, 2, 25, 20, 10, 135, 26, 13, 196, 133, 4, 18,
-			26, 20, 8, 197, 92, 145, 84, 73, 160, 20, 8, 197, 77, 68, 129, 77, 160, 20, 10, 135, 13, 197, 155, 3, 9, 197, 130, 20, 0, 10,
-			135, 26, 12, 1, 197, 130, 2, 25, 20, 10, 135, 26, 4, 1, 197, 130, 2, 25, 20, 10, 135, 26, 2, 9, 197, 130, 2, 25, 20, 10,
-			135, 23, 26, 21, 197, 130, 2, 25, 20, 10, 135, 23, 4, 1, 197, 130, 2, 25, 20, 10, 135, 23, 2, 9, 197, 130, 2, 25, 20, 10,
-			135, 20, 18, 21, 197, 130, 2, 25, 20, 10, 135, 16, 18, 21, 197, 130, 2, 25, 20, 10, 135, 4, 196, 133, 197, 130, 2, 25, 20, 10,
-			135, 3, 26, 21, 197, 130, 2, 25, 20, 0, 11, 136, 26, 19, 26, 25, 197, 130, 2, 25, 20, 11, 136, 26, 13, 1, 18, 197, 130, 2,
-			25, 20, 11, 136, 23, 197, 188, 25, 197, 130, 2, 25, 20, 11, 136, 23, 26, 2, 9, 197, 130, 2, 25, 20, 11, 136, 23, 3, 26, 21,
-			197, 130, 2, 25, 20, 11, 136, 19, 20, 18, 21, 197, 130, 2, 25, 20, 11, 136, 19, 16, 18, 21, 197, 130, 2, 25, 20, 11, 136, 19,
-			11, 18, 25, 197, 130, 2, 25, 20, 11, 136, 18, 197, 188, 1, 197, 130, 2, 25, 20, 11, 136, 16, 12, 23, 1, 197, 130, 2, 25, 20,
-			11, 136, 13, 197, 188, 25, 197, 130, 2, 25, 20, 11, 136, 13, 9, 196, 133, 197, 130, 2, 25, 20, 11, 136, 13, 4, 12, 9, 197, 130,
-			2, 25, 20, 11, 136, 197, 130, 7, 1, 197, 130, 2, 25, 20, 11, 136, 11, 12, 196, 133, 197, 130, 2, 25, 20, 11, 136, 7, 9, 196,
-			133, 197, 130, 2, 25, 20, 11, 136, 4, 18, 7, 1, 197, 130, 2, 25, 20, 11, 136, 3, 26, 11, 1, 197, 130, 2, 25, 20, 0, 12,
-			137, 19, 26, 12, 9, 197, 155, 3, 9, 5, 20, 12, 137, 26, 197, 188, 196, 133, 197, 130, 2, 25, 20, 12, 137, 26, 13, 9, 196, 133,
-			197, 130, 2, 25, 20, 12, 137, 26, 7, 18, 25, 26, 197, 130, 2, 25, 20, 12, 137, 26, 7, 9, 196, 133, 197, 130, 2, 25, 20, 12,
-			137, 23, 197, 188, 196, 133, 197, 130, 2, 25, 20, 12, 137, 23, 26, 9, 196, 133, 197, 130, 2, 25, 20, 12, 137, 23, 26, 4, 196, 133,
-			197, 130, 2, 25, 20, 12, 137, 23, 16, 9, 196, 133, 197, 130, 2, 25, 20, 12, 137, 23, 7, 9, 196, 133, 197, 130, 2, 25, 20, 12,
-			137, 23, 3, 9, 196, 133, 197, 130, 2, 25, 20, 12, 137, 19, 16, 9, 196, 133, 197, 130, 2, 25, 20, 12, 137, 19, 11, 12, 196, 133,
-			197, 130, 2, 25, 20, 12, 137, 16, 5, 197, 130, 26, 197, 130, 2, 25, 20, 12, 137, 4, 197, 186, 7, 1, 197, 130, 2, 25, 20, 10,
-			67, 12, 149, 15, 117, 37, 47, 111, 0, 19, 67, 12, 20, 19, 49, 35, 48, 89, 55, 111, 49, 0, 81, 108, 111, 99, 107, 32, 0, 13,
-			138, 23, 19, 16, 9, 196, 133, 197, 130, 2, 25, 20, 13, 138, 197, 155, 3, 9, 196, 133, 197, 130, 2, 25, 20, 8, 197, 104, 34, 69,
-			73, 160, 20, 8, 197, 77, 2, 69, 77, 160, 20, 13, 138, 13, 9, 5, 12, 9, 197, 155, 3, 9, 5, 76, 0, 14, 139, 23, 3, 8,
-			18, 26, 3, 9, 197, 130, 2, 25, 20, 0, 0, 8, 133, 197, 130, 11, 15, 13, 20, 0, 15, 69, 21, 48, 193, 64, 80, 109, 89, 49,
-			6, 109, 57, 48, 0, 0, 11, 136, 26, 10, 5, 197, 186, 4, 197, 186, 20, 0, 12, 137, 7, 14, 9, 5, 197, 186, 4, 197, 186, 20,
-			0, 7, 196, 64, 197, 193, 40, 20, 9, 134, 13, 197, 155, 3, 9, 10, 20, 0, 0, 10, 135, 19, 3, 8, 197, 130, 1, 13, 20, 0,
-			0, 7, 196, 64, 197, 193, 52, 20, 9, 134, 13, 196, 133, 4, 18, 26, 20, 7, 132, 197, 130, 1, 16, 20, 9, 198, 4, 195, 9, 77,
-			65, 82, 65, 0, 6, 195, 73, 144, 218, 20, 0, 10, 135, 26, 23, 15, 197, 130, 2, 25, 20, 10, 135, 26, 14, 15, 197, 130, 2, 25,
-			20, 10, 135, 20, 11, 15, 197, 130, 2, 25, 20, 10, 135, 19, 19, 15, 197, 130, 2, 25, 20, 10, 135, 18, 23, 15, 197, 130, 2, 25,
-			20, 10, 135, 16, 1, 19, 197, 130, 2, 25, 20, 10, 135, 12, 1, 26, 197, 130, 2, 25, 20, 10, 135, 11, 9, 19, 197, 130, 2, 25,
-			20, 10, 135, 7, 18, 15, 197, 130, 2, 25, 20, 10, 135, 7, 14, 15, 197, 130, 2, 25, 20, 10, 135, 4, 2, 15, 197, 130, 2, 25,
-			20, 8, 133, 197, 130, 26, 1, 23, 20, 15, 6, 22, 15, 9, 12, 195, 160, 84, 40, 35, 55, 35, 0, 67, 0, 11, 136, 197, 188, 7,
-			15, 197, 130, 2, 25, 20, 11, 136, 26, 23, 9, 19, 197, 130, 2, 25, 20, 11, 136, 26, 23, 1, 18, 197, 130, 2, 25, 20, 11, 136,
-			26, 20, 1, 18, 197, 130, 2, 25, 20, 11, 136, 26, 14, 9, 11, 197, 130, 2, 25, 20, 11, 136, 26, 13, 25, 19, 197, 130, 2, 25,
-			20, 11, 136, 26, 7, 1, 19, 197, 130, 2, 25, 20, 11, 136, 26, 4, 1, 18, 197, 130, 2, 25, 20, 11, 136, 23, 20, 1, 18, 197,
-			130, 2, 25, 20, 11, 136, 23, 19, 9, 15, 197, 130, 2, 25, 20, 11, 136, 23, 16, 1, 18, 197, 130, 2, 25, 20, 11, 136, 23, 12,
-			1, 26, 197, 130, 2, 25, 20, 11, 136, 23, 4, 1, 18, 197, 130, 2, 25, 20, 11, 136, 19, 16, 1, 19, 197, 130, 2, 25, 20, 11,
-			136, 19, 11, 9, 19, 197, 130, 2, 25, 20, 11, 136, 19, 9, 5, 11, 197, 130, 2, 25, 20, 11, 136, 13, 195, 179, 11, 197, 130, 2,
-			25, 20, 11, 136, 13, 195, 179, 7, 197, 130, 2, 25, 20, 11, 136, 13, 1, 18, 26, 197, 130, 2, 25, 20, 11, 136, 197, 130, 11, 1,
-			197, 130, 2, 25, 20, 11, 136, 7, 18, 26, 15, 197, 130, 2, 25, 20, 11, 136, 7, 18, 25, 26, 197, 130, 2, 25, 20, 11, 136, 3,
-			9, 5, 11, 197, 130, 2, 25, 20, 11, 136, 2, 12, 1, 11, 197, 130, 2, 25, 20, 0, 12, 137, 26, 13, 195, 179, 11, 197, 130, 2,
-			25, 20, 12, 137, 26, 13, 1, 18, 26, 197, 130, 2, 25, 20, 12, 137, 26, 2, 12, 1, 11, 197, 130, 2, 25, 20, 12, 137, 23, 13,
-			1, 18, 26, 197, 130, 2, 25, 20, 12, 137, 23, 9, 195, 179, 26, 197, 130, 2, 25, 20, 12, 137, 23, 7, 18, 25, 26, 197, 130, 2,
-			25, 20, 12, 137, 23, 3, 9, 5, 11, 197, 130, 2, 25, 20, 12, 137, 20, 197, 130, 21, 11, 197, 130, 2, 25, 20, 12, 137, 19, 26,
-			3, 26, 15, 197, 130, 2, 25, 20, 12, 137, 4, 18, 197, 188, 15, 197, 130, 2, 25, 20, 9, 134, 10, 196, 133, 20, 18, 26, 20, 7,
-			196, 12, 133, 193, 48, 20, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 38, 109, 0, 81, 110, 105, 101, 32, 21, 68, 65, 38,
-			133, 16, 48, 91, 6, 109, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 84, 35,
-			89, 0, 81, 119, 97, 115, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 112, 65, 0, 81, 116, 121, 109, 32, 21, 68, 65,
-			38, 133, 16, 48, 91, 6, 109, 47, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 18, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47,
-			111, 0, 81, 116, 111, 32, 18, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 109, 0, 81, 116, 101, 32, 19, 68, 65, 38, 133, 16,
-			48, 91, 6, 109, 47, 47, 114, 0, 81, 116, 196, 133, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 37, 65, 0, 81, 110,
-			105, 109, 32, 21, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 20, 68, 65, 38, 133, 16,
-			48, 91, 6, 109, 72, 50, 35, 89, 0, 81, 110, 97, 115, 32, 7, 196, 65, 38, 133, 16, 76, 0, 13, 138, 20, 18, 26, 196, 133, 19,
-			197, 130, 2, 25, 20, 13, 138, 197, 155, 3, 9, 5, 11, 197, 130, 2, 25, 20, 8, 197, 104, 208, 82, 81, 112, 20, 6, 195, 92, 145,
-			74, 20, 7, 132, 14, 21, 196, 135, 20, 0, 14, 139, 197, 188, 195, 179, 197, 130, 11, 197, 130, 2, 25, 20, 14, 139, 19, 20, 18, 26,
-			196, 133, 19, 197, 130, 2, 25, 20, 8, 133, 26, 12, 1, 196, 135, 20, 8, 133, 26, 4, 1, 196, 135, 20, 8, 133, 23, 4, 1, 196,
-			135, 20, 11, 136, 19, 16, 9, 196, 153, 20, 18, 26, 20, 8, 133, 13, 12, 5, 196, 135, 20, 8, 133, 13, 196, 133, 196, 135, 20, 6,
-			195, 12, 128, 197, 20, 0, 9, 134, 19, 20, 18, 21, 196, 135, 20, 9, 134, 19, 16, 18, 21, 196, 135, 20, 9, 134, 18, 197, 188, 5,
-			196, 135, 20, 9, 134, 16, 9, 196, 133, 196, 135, 20, 10, 199, 4, 212, 212, 21, 33, 1, 52, 65, 0, 10, 135, 26, 197, 188, 196, 133,
-			196, 135, 20, 10, 135, 26, 13, 9, 196, 133, 196, 135, 20, 10, 135, 23, 26, 4, 196, 133, 196, 135, 20, 10, 135, 23, 16, 9, 196, 133,
-			196, 135, 20, 10, 135, 19, 16, 9, 196, 133, 196, 135, 20, 8, 133, 197, 130, 11, 1, 13, 20, 7, 196, 52, 145, 76, 36, 76, 9, 198,
-			4, 194, 83, 80, 18, 82, 65, 0, 11, 136, 23, 19, 16, 9, 196, 133, 196, 135, 20, 10, 135, 10, 5, 197, 186, 4, 197, 186, 20, 0,
-			6, 195, 92, 145, 77, 20, 12, 137, 23, 3, 8, 18, 26, 3, 9, 196, 135, 20, 8, 133, 16, 18, 1, 196, 135, 20, 10, 67, 12, 149,
-			25, 117, 37, 47, 112, 0, 0, 9, 134, 197, 188, 18, 5, 196, 135, 20, 9, 134, 26, 197, 188, 21, 196, 135, 20, 9, 134, 26, 7, 18,
-			1, 196, 135, 20, 12, 137, 26, 2, 18, 21, 197, 186, 4, 197, 186, 20, 9, 134, 23, 18, 26, 5, 196, 135, 20, 8, 133, 197, 130, 11,
-			1, 10, 20, 12, 137, 4, 197, 186, 7, 14, 9, 5, 19, 26, 20, 9, 134, 3, 26, 3, 9, 196, 135, 20, 10, 67, 48, 240, 68, 55,
-			111, 58, 72, 0, 0, 9, 134, 19, 197, 130, 25, 19, 26, 20, 11, 136, 13, 9, 15, 197, 188, 4, 197, 188, 20, 13, 68, 24, 246, 69,
-			72, 83, 40, 35, 57, 6, 109, 0, 10, 67, 12, 144, 79, 76, 57, 35, 58, 0, 0, 11, 136, 3, 8, 18, 26, 3, 9, 196, 135, 20,
-			0, 0, 6, 195, 92, 145, 64, 20, 8, 133, 16, 18, 1, 197, 130, 20, 0, 9, 134, 26, 197, 188, 21, 197, 130, 20, 9, 134, 26, 7,
-			18, 1, 197, 130, 20, 8, 133, 18, 197, 188, 196, 153, 20, 9, 134, 3, 26, 3, 9, 197, 130, 20, 6, 195, 12, 145, 67, 20, 0, 8,
-			133, 26, 7, 9, 197, 132, 20, 8, 197, 77, 67, 9, 77, 160, 20, 0, 11, 136, 3, 8, 18, 26, 3, 9, 197, 130, 20, 0, 11, 136,
-			19, 9, 15, 4, 197, 130, 2, 25, 20, 11, 136, 19, 5, 3, 8, 197, 130, 2, 25, 20, 11, 136, 16, 21, 3, 8, 197, 130, 2, 25,
-			20, 11, 136, 2, 195, 179, 4, 197, 130, 2, 25, 20, 8, 133, 26, 12, 1, 197, 130, 20, 8, 133, 26, 4, 1, 197, 130, 20, 8, 133,
-			23, 4, 1, 197, 130, 20, 8, 133, 3, 26, 21, 197, 130, 20, 7, 132, 3, 12, 196, 153, 20, 0, 12, 137, 23, 19, 9, 15, 4, 197,
-			130, 2, 25, 20, 12, 137, 11, 18, 26, 5, 16, 197, 130, 2, 25, 20, 12, 137, 3, 9, 5, 18, 16, 197, 130, 2, 25, 20, 12, 137,
-			3, 8, 18, 25, 16, 197, 130, 2, 25, 20, 7, 196, 104, 112, 82, 8, 20, 7, 196, 81, 38, 133, 64, 20, 9, 134, 19, 20, 18, 21,
-			197, 130, 20, 9, 134, 19, 16, 18, 21, 197, 130, 20, 9, 134, 13, 9, 196, 133, 197, 130, 20, 7, 196, 45, 38, 133, 64, 20, 0, 13,
-			138, 26, 23, 9, 195, 179, 4, 197, 130, 2, 25, 20, 13, 138, 19, 11, 18, 26, 5, 16, 197, 130, 2, 25, 20, 13, 138, 19, 3, 8,
-			18, 25, 16, 197, 130, 2, 25, 20, 10, 135, 26, 197, 188, 196, 133, 197, 130, 20, 10, 135, 26, 13, 9, 196, 133, 197, 130, 20, 10, 135,
-			23, 197, 188, 196, 133, 197, 130, 20, 10, 135, 23, 26, 4, 196, 133, 197, 130, 20, 10, 135, 23, 16, 9, 196, 133, 197, 130, 20, 8, 197,
-			77, 2, 69, 73, 160, 20, 10, 135, 19, 16, 9, 196, 133, 197, 130, 20, 8, 197, 76, 180, 149, 77, 160, 20, 8, 197, 52, 67, 9, 77,
-			160, 20, 8, 197, 45, 38, 153, 13, 160, 20, 9, 134, 4, 18, 197, 188, 196, 153, 20, 0, 14, 139, 197, 155, 3, 9, 5, 18, 16, 197,
-			130, 2, 25, 20, 14, 139, 16, 9, 5, 18, 26, 3, 8, 197, 130, 2, 25, 20, 11, 136, 23, 19, 16, 9, 196, 133, 197, 130, 20, 0,
-			15, 140, 26, 13, 9, 5, 18, 26, 3, 8, 197, 130, 2, 25, 20, 12, 137, 23, 3, 8, 18, 26, 3, 9, 197, 130, 20, 10, 135, 3,
-			8, 18, 26, 1, 197, 132, 20, 0, 11, 200, 93, 54, 131, 104, 226, 69, 77, 160, 20, 11, 136, 19, 3, 8, 18, 26, 1, 197, 132, 20,
-			0, 10, 135, 19, 9, 5, 18, 4, 197, 186, 20, 18, 8, 3, 21, 18, 1, 195, 167, 1, 15, 49, 37, 51, 35, 89, 35, 111, 0, 0,
-			11, 136, 20, 23, 9, 5, 18, 4, 197, 186, 20, 0, 0, 0, 12, 137, 26, 13, 9, 1, 197, 188, 4, 197, 188, 20, 8, 197, 80, 50,
-			14, 36, 80, 20, 8, 197, 76, 50, 14, 36, 80, 20, 8, 197, 12, 132, 154, 12, 144, 20, 0, 9, 198, 105, 114, 67, 33, 38, 128, 20,
-			9, 198, 93, 160, 137, 21, 38, 128, 20, 10, 67, 32, 243, 69, 101, 111, 58, 65, 0, 0, 6, 195, 16, 243, 64, 20, 0, 9, 198, 65,
-			53, 18, 105, 148, 218, 20, 0, 9, 134, 12, 1, 197, 130, 2, 25, 20, 9, 134, 4, 1, 197, 130, 2, 25, 20, 9, 134, 2, 9, 197,
-			130, 2, 25, 20, 0, 10, 135, 197, 188, 25, 197, 130, 2, 25, 20, 10, 135, 26, 26, 21, 197, 130, 2, 25, 20, 10, 135, 26, 23, 1,
-			197, 130, 2, 25, 20, 10, 135, 26, 13, 25, 197, 130, 2, 25, 20, 10, 135, 23, 12, 1, 197, 130, 2, 25, 20, 10, 135, 20, 12, 1,
-			197, 130, 2, 25, 20, 10, 135, 20, 11, 1, 197, 130, 2, 25, 20, 10, 135, 19, 20, 1, 197, 130, 2, 25, 20, 10, 135, 19, 19, 1,
-			197, 130, 2, 25, 20, 10, 135, 19, 16, 1, 197, 130, 2, 25, 20, 10, 135, 19, 14, 21, 197, 130, 2, 25, 20, 10, 135, 18, 23, 1,
-			197, 130, 2, 25, 20, 10, 135, 11, 14, 21, 197, 130, 2, 25, 20, 10, 135, 10, 196, 133, 197, 130, 2, 25, 20, 10, 135, 7, 14, 9,
-			197, 130, 2, 25, 20, 10, 135, 3, 14, 9, 197, 130, 2, 25, 20, 0, 11, 136, 197, 188, 7, 1, 197, 130, 2, 25, 20, 11, 136, 26,
-			7, 14, 9, 197, 130, 2, 25, 20, 11, 136, 23, 19, 20, 1, 197, 130, 2, 25, 20, 11, 136, 23, 19, 14, 21, 197, 130, 2, 25, 20,
-			11, 136, 20, 18, 23, 1, 197, 130, 2, 25, 20, 11, 136, 197, 155, 14, 9, 197, 130, 2, 25, 20, 11, 136, 19, 20, 12, 9, 197, 130,
-			2, 25, 20, 11, 136, 16, 3, 8, 1, 197, 130, 2, 25, 20, 11, 136, 13, 4, 12, 1, 197, 130, 2, 25, 20, 11, 136, 11, 23, 9,
-			20, 197, 130, 2, 25, 20, 11, 136, 11, 197, 130, 21, 197, 130, 2, 25, 20, 11, 136, 196, 135, 16, 1, 197, 130, 2, 25, 20, 11, 136,
-			196, 135, 13, 9, 197, 130, 2, 25, 20, 11, 136, 3, 8, 12, 1, 197, 130, 2, 25, 20, 6, 195, 92, 19, 64, 72, 0, 12, 137, 26,
-			19, 9, 15, 4, 197, 130, 2, 25, 20, 12, 137, 26, 4, 10, 196, 133, 197, 130, 2, 25, 20, 12, 137, 23, 11, 197, 130, 21, 197, 130,
-			2, 25, 20, 12, 137, 20, 11, 14, 196, 133, 197, 130, 2, 25, 20, 12, 137, 20, 196, 153, 3, 8, 197, 130, 2, 25, 20, 12, 137, 197,
-			155, 12, 5, 16, 197, 130, 2, 25, 20, 12, 137, 19, 26, 3, 26, 21, 197, 130, 2, 25, 20, 12, 137, 19, 11, 18, 26, 25, 197, 130,
-			2, 25, 20, 12, 137, 19, 11, 197, 130, 21, 197, 130, 2, 25, 20, 12, 137, 19, 3, 8, 12, 1, 197, 130, 2, 25, 20, 12, 137, 13,
-			11, 14, 196, 133, 197, 130, 2, 25, 20, 12, 137, 4, 18, 197, 188, 1, 197, 130, 2, 25, 20, 12, 137, 2, 18, 14, 196, 133, 197, 130,
-			2, 25, 20, 0, 13, 138, 197, 188, 7, 14, 196, 133, 197, 130, 2, 25, 20, 13, 138, 23, 23, 9, 195, 179, 4, 197, 130, 2, 25, 20,
-			13, 138, 20, 3, 8, 14, 196, 133, 197, 130, 2, 25, 20, 13, 138, 18, 197, 188, 14, 196, 133, 197, 130, 2, 25, 20, 13, 138, 16, 3,
-			8, 14, 196, 133, 197, 130, 2, 25, 20, 13, 138, 4, 18, 7, 14, 196, 133, 197, 130, 2, 25, 20, 13, 138, 3, 26, 11, 14, 196, 133,
-			197, 130, 2, 25, 20, 9, 134, 197, 130, 197, 188, 196, 153, 20, 7, 132, 12, 5, 196, 135, 20, 0, 14, 139, 4, 197, 188, 4, 197, 188,
-			25, 197, 130, 2, 25, 20, 14, 139, 4, 197, 186, 7, 14, 196, 133, 197, 130, 2, 25, 20, 14, 139, 3, 8, 197, 130, 195, 179, 4, 197,
-			130, 2, 25, 20, 8, 133, 26, 23, 9, 196, 135, 20, 8, 133, 26, 13, 25, 196, 135, 20, 8, 133, 23, 12, 1, 196, 135, 20, 8, 133,
-			19, 20, 1, 196, 135, 20, 8, 133, 11, 14, 21, 196, 135, 20, 8, 133, 11, 12, 5, 196, 135, 20, 8, 133, 10, 196, 133, 196, 135, 20,
-			0, 9, 134, 26, 18, 26, 21, 196, 135, 20, 9, 134, 23, 19, 14, 21, 196, 135, 20, 9, 134, 23, 18, 26, 21, 196, 135, 20, 9, 134,
-			23, 16, 12, 5, 196, 135, 20, 9, 134, 19, 16, 12, 5, 196, 135, 20, 9, 134, 19, 11, 12, 5, 196, 135, 20, 9, 134, 16, 14, 196,
-			133, 196, 135, 20, 9, 134, 13, 4, 12, 5, 196, 135, 20, 9, 134, 11, 197, 130, 21, 196, 135, 20, 13, 67, 45, 4, 128, 49, 35, 48,
-			51, 35, 55, 0, 24, 0, 10, 135, 26, 4, 10, 196, 133, 196, 135, 20, 10, 135, 23, 11, 197, 130, 21, 196, 135, 20, 8, 133, 19, 19,
-			9, 196, 133, 20, 10, 135, 19, 11, 197, 130, 21, 196, 135, 20, 10, 135, 4, 18, 197, 188, 5, 196, 135, 20, 9, 198, 4, 192, 83, 80,
-			18, 82, 65, 0, 11, 136, 19, 20, 197, 130, 1, 13, 197, 155, 20, 11, 136, 19, 3, 8, 14, 196, 133, 196, 135, 20, 11, 136, 19, 3,
-			8, 197, 130, 1, 197, 155, 20, 10, 135, 16, 195, 179, 10, 4, 197, 186, 20, 11, 136, 16, 3, 8, 14, 196, 133, 196, 135, 20, 7, 132,
-			4, 21, 196, 135, 20, 11, 136, 4, 18, 7, 14, 196, 133, 196, 135, 20, 11, 136, 3, 26, 11, 14, 196, 133, 196, 135, 20, 0, 11, 136,
-			18, 197, 188, 14, 9, 5, 19, 26, 20, 11, 136, 16, 18, 26, 25, 10, 4, 197, 186, 20, 0, 10, 135, 197, 155, 3, 9, 5, 18, 16,
-			20, 9, 134, 16, 197, 130, 1, 196, 135, 20, 9, 134, 4, 18, 23, 9, 196, 135, 20, 0, 10, 135, 23, 16, 197, 130, 1, 196, 135, 20,
-			10, 135, 19, 26, 3, 26, 1, 196, 135, 20, 10, 135, 19, 16, 197, 130, 1, 196, 135, 20, 9, 134, 197, 130, 11, 1, 19, 26, 20, 11,
-			136, 7, 23, 9, 197, 188, 4, 197, 188, 20, 19, 67, 12, 131, 215, 76, 35, 58, 76, 35, 40, 0, 66, 81, 99, 104, 111, 119, 32, 0,
-			8, 197, 77, 68, 154, 20, 192, 20, 9, 134, 4, 18, 23, 9, 196, 133, 20, 0, 8, 133, 26, 23, 196, 133, 3, 20, 7, 132, 4, 21,
-			197, 130, 20, 0, 0, 9, 134, 4, 18, 23, 9, 197, 130, 20, 0, 8, 133, 26, 23, 9, 197, 132, 20, 10, 135, 19, 26, 3, 26, 1,
-			197, 130, 20, 8, 133, 19, 20, 1, 197, 132, 20, 9, 134, 18, 197, 188, 14, 9, 5, 20, 0, 9, 134, 197, 188, 197, 130, 15, 16, 20,
-			9, 134, 19, 6, 18, 21, 197, 132, 20, 14, 70, 12, 245, 20, 4, 113, 64, 49, 111, 47, 112, 75, 0, 15, 70, 12, 243, 12, 4, 113,
-			64, 49, 111, 55, 6, 35, 90, 0, 10, 135, 13, 9, 196, 153, 4, 26, 25, 76, 0, 8, 133, 26, 13, 25, 197, 130, 20, 8, 133, 23,
-			12, 1, 197, 130, 20, 8, 133, 20, 12, 1, 197, 130, 20, 12, 137, 197, 155, 13, 9, 1, 18, 4, 197, 130, 20, 8, 133, 19, 20, 1,
-			197, 130, 20, 8, 133, 19, 16, 1, 197, 130, 20, 8, 133, 11, 14, 21, 197, 130, 20, 8, 133, 10, 196, 133, 197, 130, 20, 18, 67, 12,
-			131, 208, 76, 111, 48, 89, 40, 37, 0, 81, 115, 117, 101, 121, 32, 0, 9, 134, 23, 19, 14, 21, 197, 130, 20, 7, 196, 93, 38, 133,
-			64, 20, 9, 134, 11, 197, 130, 21, 197, 130, 20, 0, 8, 133, 26, 18, 1, 197, 132, 20, 8, 197, 104, 210, 76, 13, 160, 20, 10, 135,
-			26, 4, 10, 196, 133, 197, 130, 20, 10, 135, 23, 11, 197, 130, 21, 197, 130, 20, 10, 135, 19, 11, 197, 130, 21, 197, 130, 20, 8, 197,
-			52, 150, 132, 73, 160, 20, 8, 197, 29, 86, 132, 73, 160, 20, 0, 9, 134, 19, 16, 12, 21, 197, 132, 20, 11, 136, 16, 3, 8, 14,
-			196, 133, 197, 130, 20, 11, 136, 4, 18, 7, 14, 196, 133, 197, 130, 20, 11, 136, 3, 26, 11, 14, 196, 133, 197, 130, 20, 14, 70, 12,
-			243, 12, 20, 113, 64, 49, 111, 55, 109, 75, 0, 0, 8, 197, 105, 54, 129, 73, 0, 20, 0, 7, 196, 104, 224, 83, 104, 20, 7, 196,
-			92, 64, 83, 104, 20, 12, 68, 12, 245, 80, 20, 49, 40, 48, 6, 109, 0, 7, 132, 20, 5, 197, 188, 8, 0, 9, 198, 93, 54, 131,
-			104, 84, 0, 20, 11, 136, 23, 19, 11, 18, 26, 5, 197, 155, 20, 6, 195, 76, 145, 74, 20, 10, 135, 4, 18, 197, 188, 25, 19, 26,
-			20, 0, 11, 136, 2, 18, 21, 197, 186, 4, 197, 186, 20, 0, 0, 8, 133, 23, 197, 130, 15, 13, 20, 7, 196, 80, 176, 83, 104, 20,
-			0, 8, 133, 16, 18, 1, 197, 188, 20, 0, 0, 7, 132, 197, 130, 11, 1, 20, 0, 0, 6, 18, 66, 107, 97, 99, 104, 0, 107, 196,
-			153, 0, 107, 196, 133, 0, 107, 111, 109, 0, 107, 97, 0, 107, 105, 0, 99, 101, 0, 107, 111, 0, 7, 6, 100, 103, 0, 4, 1, 101,
-			122, 114, 112, 3, 72, 81, 0, 8, 97, 110, 0, 8, 97, 110, 101, 105, 110, 0, 8, 97, 110, 111, 112, 0, 8, 97, 110, 111, 112, 101,
-			105, 110, 0, 8, 111, 0, 8, 111, 101, 105, 110, 0, 8, 111, 111, 112, 0, 8, 111, 111, 112, 101, 105, 110, 0, 8, 111, 112, 0, 8,
-			111, 112, 101, 105, 110, 0, 8, 111, 112, 111, 112, 0, 8, 111, 112, 111, 112, 101, 105, 110, 0, 4, 3, 75, 0, 101, 2, 32, 0, 7,
-			6, 111, 101, 0, 4, 1, 106, 2, 114, 3, 109, 0, 1, 106, 108, 0, 1, 115, 2, 114, 0, 1, 106, 99, 3, 111, 109, 0, 7, 6,
-			112, 104, 0, 3, 83, 0, 7, 6, 115, 104, 0, 4, 8, 105, 102, 2, 97, 114, 109, 111, 110, 3, 89, 101, 0, 8, 107, 101, 0, 8,
-			121, 100, 0, 3, 91, 0, 105, 114, 101, 3, 91, 35, 57, 109, 51, 0, 7, 6, 116, 104, 0, 4, 8, 3, 47, 0, 8, 101, 2, 97,
-			110, 97, 107, 0, 101, 8, 2, 32, 3, 72, 109, 0, 101, 119, 3, 83, 57, 40, 0, 117, 110, 100, 101, 114, 98, 105, 8, 2, 114, 100,
-			3, 83, 109, 50, 72, 109, 51, 71, 109, 0, 97, 110, 107, 8, 3, 83, 109, 68, 49, 0, 3, 89, 0, 2, 105, 101, 32, 3, 95, 0,
-			7, 6, 116, 122, 0, 2, 197, 130, 3, 47, 88, 0, 3, 117, 0, 7, 6, 195, 164, 0, 3, 109, 0, 7, 6, 195, 165, 0, 3, 111,
-			0, 7, 6, 195, 166, 0, 3, 109, 0, 7, 6, 195, 173, 0, 3, 37, 0, 2, 17, 65, 3, 37, 57, 0, 7, 6, 195, 177, 0, 3,
-			67, 0, 2, 17, 65, 3, 67, 38, 0, 7, 6, 195, 179, 0, 4, 1, 21, 2, 17, 67, 197, 130, 98, 121, 32, 3, 8, 40, 0, 1,
-			21, 2, 17, 67, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 197, 155, 32, 0, 3, 40, 0, 7, 6, 195,
-			182, 0, 3, 109, 0, 7, 6, 195, 184, 0, 3, 109, 0, 7, 6, 195, 188, 0, 3, 37, 0, 7, 6, 196, 133, 0, 4, 2, 108, 3,
-			111, 0, 2, 197, 130, 0, 4, 2, 99, 3, 111, 50, 0, 2, 100, 0, 2, 116, 0, 4, 2, 98, 3, 111, 65, 0, 2, 112, 0, 4,
-			2, 99, 105, 3, 111, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197, 186, 0, 2, 196, 135, 0, 4, 2, 103, 3, 111, 68, 0, 2, 107,
-			0, 3, 114, 0, 4, 2, 32, 3, 114, 10, 0, 2, 32, 17, 65, 0, 7, 6, 196, 135, 0, 3, 119, 0, 4, 2, 98, 3, 120, 0,
-			2, 103, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 153, 0, 4, 1, 105, 2, 116, 110, 97, 3, 109, 0, 2, 32, 0, 2,
-			108, 0, 2, 197, 130, 0, 2, 32, 17, 65, 3, 109, 10, 0, 4, 2, 99, 3, 109, 50, 0, 2, 100, 0, 2, 116, 0, 4, 2, 98,
-			3, 109, 65, 0, 2, 112, 0, 4, 2, 99, 105, 3, 109, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197, 186, 0, 2, 115, 105, 0, 2,
-			196, 135, 0, 2, 197, 155, 0, 196, 135, 2, 100, 122, 105, 101, 0, 4, 2, 103, 3, 109, 68, 0, 2, 107, 0, 3, 113, 0, 7, 6,
-			197, 130, 0, 2, 32, 3, 0, 3, 58, 0, 4, 1, 17, 65, 2, 32, 3, 58, 10, 0, 1, 115, 121, 109, 2, 32, 0, 98, 121, 109,
-			1, 21, 2, 32, 14, 128, 128, 129, 3, 65, 0, 98, 121, 197, 155, 1, 21, 2, 32, 14, 128, 128, 129, 3, 97, 0, 7, 6, 197, 132,
-			0, 3, 67, 0, 7, 6, 197, 153, 0, 3, 90, 0, 7, 6, 197, 155, 0, 196, 135, 2, 100, 122, 105, 101, 3, 96, 0, 3, 97, 0,
-			7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 186, 0, 3, 96, 0, 2, 32, 3, 97, 0, 7, 6, 197, 188, 0, 3, 90, 0, 2,
-			32, 3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 108, 108, 111, 119, 101, 101, 1, 104, 2, 110, 32, 3, 6, 35,
-			55, 111, 58, 112, 0, 4, 1, 21, 2, 197, 130, 98, 121, 32, 3, 8, 35, 0, 1, 21, 2, 197, 130, 98, 121, 109, 32, 0, 1, 21,
-			2, 197, 130, 98, 121, 197, 155, 32, 0, 1, 130, 197, 21, 2, 98, 121, 32, 0, 1, 130, 197, 21, 2, 98, 121, 109, 32, 0, 1, 130,
-			197, 21, 2, 98, 121, 197, 155, 32, 0, 3, 35, 0, 2, 32, 3, 35, 10, 0, 4, 105, 8, 107, 2, 114, 3, 35, 37, 0, 105, 8,
-			116, 108, 97, 2, 114, 0, 114, 99, 121, 8, 2, 21, 14, 129, 132, 132, 3, 35, 51, 117, 112, 0, 108, 108, 111, 119, 101, 101, 1, 104,
-			2, 110, 3, 35, 55, 111, 58, 112, 0, 101, 8, 2, 114, 17, 65, 3, 35, 109, 0, 4, 101, 2, 32, 3, 109, 0, 101, 8, 0, 105,
-			1, 17, 67, 2, 114, 0, 99, 107, 117, 2, 112, 3, 109, 49, 35, 0, 114, 99, 104, 105, 101, 8, 3, 109, 51, 76, 37, 0, 114, 99,
-			104, 105, 101, 8, 2, 17, 67, 3, 109, 51, 76, 38, 109, 0, 108, 8, 104, 2, 108, 3, 111, 0, 7, 6, 98, 0, 4, 2, 32, 3,
-			48, 0, 197, 130, 1, 97, 106, 2, 107, 17, 65, 0, 3, 71, 0, 2, 105, 3, 71, 38, 0, 105, 2, 17, 65, 3, 71, 38, 57, 0,
-			4, 101, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 3, 71, 109, 34, 81, 0, 195, 182, 114, 103, 1, 21, 21, 2, 32, 14, 129,
-			128, 132, 0, 195, 184, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 0, 111, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 3,
-			71, 111, 34, 81, 0, 7, 6, 99, 0, 104, 97, 2, 109, 112, 105, 3, 47, 90, 109, 0, 4, 1, 17, 65, 118, 3, 49, 0, 1, 101,
-			115, 111, 99, 2, 97, 110, 115, 0, 1, 105, 100, 2, 116, 17, 65, 0, 2, 97, 99, 105, 101, 32, 0, 2, 97, 108, 118, 0, 2, 97,
-			116, 32, 0, 2, 97, 116, 97, 32, 0, 2, 97, 116, 97, 109, 105, 32, 0, 2, 97, 116, 101, 109, 32, 0, 2, 97, 116, 111, 32, 0,
-			2, 97, 116, 111, 109, 32, 0, 2, 108, 105, 112, 0, 2, 111, 115, 101, 99, 97, 110, 115, 0, 2, 111, 115, 105, 110, 0, 2, 111, 116,
-			97, 110, 103, 0, 2, 115, 0, 8, 2, 97, 98, 101, 114, 110, 101, 116, 0, 8, 2, 97, 108, 101, 110, 100, 0, 8, 2, 97, 110, 0,
-			8, 2, 97, 112, 112, 0, 8, 2, 97, 112, 115, 32, 0, 8, 2, 97, 112, 115, 108, 111, 0, 8, 2, 97, 114, 97, 118, 0, 8, 2,
-			97, 114, 108, 0, 8, 2, 97, 114, 112, 0, 8, 2, 97, 114, 116, 0, 8, 2, 97, 114, 118, 0, 8, 2, 108, 17, 65, 0, 8, 2,
-			111, 109, 0, 8, 2, 111, 110, 17, 67, 0, 8, 2, 111, 114, 17, 67, 0, 8, 2, 111, 119, 98, 111, 0, 8, 2, 114, 0, 8, 2,
-			117, 109, 117, 108, 0, 8, 101, 100, 2, 111, 114, 0, 8, 110, 105, 108, 2, 111, 108, 110, 0, 8, 114, 97, 2, 97, 100, 105, 97, 32,
-			0, 8, 114, 97, 2, 97, 100, 105, 105, 32, 0, 8, 114, 97, 2, 97, 100, 105, 111, 32, 0, 8, 114, 97, 2, 97, 100, 105, 196, 133,
-			32, 0, 8, 114, 97, 2, 97, 100, 105, 196, 153, 32, 0, 8, 115, 105, 100, 2, 111, 0, 99, 2, 97, 99, 105, 101, 32, 0, 99, 2,
-			97, 116, 17, 65, 0, 99, 2, 97, 116, 32, 0, 99, 2, 97, 116, 97, 32, 0, 99, 2, 97, 116, 97, 109, 105, 32, 0, 99, 2, 97,
-			116, 101, 109, 32, 0, 99, 2, 97, 116, 111, 32, 0, 99, 2, 97, 116, 111, 109, 32, 0, 99, 8, 111, 109, 2, 17, 65, 0, 104, 8,
-			2, 114, 105, 115, 116, 111, 0, 107, 1, 17, 65, 118, 0, 107, 1, 111, 108, 2, 32, 0, 107, 1, 111, 108, 2, 97, 32, 0, 107, 1,
-			111, 108, 2, 105, 101, 109, 32, 0, 107, 1, 111, 108, 2, 117, 32, 0, 107, 8, 101, 100, 0, 107, 8, 111, 114, 2, 17, 65, 0, 4,
-			8, 2, 97, 109, 101, 109, 98, 101, 114, 116, 3, 49, 35, 0, 97, 108, 2, 108, 17, 65, 0, 97, 108, 121, 2, 112, 115, 3, 49, 35,
-			55, 37, 0, 97, 115, 99, 3, 49, 35, 89, 49, 0, 117, 114, 105, 101, 8, 3, 49, 37, 51, 37, 0, 114, 111, 105, 115, 115, 8, 3,
-			49, 51, 34, 40, 35, 89, 0, 114, 97, 99, 107, 3, 49, 51, 35, 49, 0, 114, 101, 101, 110, 114, 101, 97, 8, 115, 2, 100, 3, 49,
-			51, 37, 50, 51, 37, 0, 114, 101, 115, 99, 2, 101, 110, 100, 3, 49, 51, 109, 91, 76, 0, 108, 111, 119, 8, 2, 110, 3, 49, 55,
-			35, 58, 0, 108, 101, 97, 8, 2, 17, 67, 3, 49, 55, 37, 0, 108, 111, 105, 115, 8, 2, 111, 3, 49, 55, 40, 35, 88, 0, 108,
-			111, 99, 104, 8, 2, 97, 114, 100, 3, 49, 55, 111, 91, 0, 4, 97, 8, 2, 109, 3, 49, 109, 0, 117, 8, 2, 114, 108, 105, 0,
-			97, 108, 2, 108, 3, 49, 111, 0, 111, 112, 121, 119, 114, 105, 8, 2, 116, 3, 49, 111, 48, 112, 51, 35, 57, 0, 111, 99, 107, 8,
-			3, 49, 111, 49, 0, 111, 110, 99, 8, 2, 101, 114, 116, 3, 49, 111, 50, 76, 0, 111, 97, 99, 104, 8, 3, 49, 111, 58, 76, 0,
-			4, 99, 2, 105, 32, 3, 76, 0, 99, 2, 105, 97, 32, 0, 99, 2, 105, 99, 104, 32, 0, 99, 2, 105, 101, 103, 111, 32, 0, 99,
-			2, 105, 101, 109, 32, 0, 99, 2, 105, 101, 109, 117, 32, 0, 99, 2, 105, 105, 101, 32, 0, 99, 2, 105, 109, 32, 0, 99, 2, 105,
-			109, 105, 32, 0, 99, 2, 105, 110, 97, 32, 0, 99, 2, 105, 110, 101, 109, 32, 0, 99, 2, 105, 110, 105, 101, 32, 0, 99, 2, 105,
-			110, 111, 32, 0, 99, 2, 105, 111, 32, 0, 104, 1, 17, 65, 118, 0, 104, 8, 2, 105, 112, 0, 122, 0, 104, 97, 110, 2, 110, 101,
-			108, 3, 76, 35, 0, 104, 97, 114, 108, 101, 8, 2, 115, 3, 76, 35, 51, 55, 89, 0, 104, 111, 119, 8, 2, 100, 101, 114, 3, 76,
-			35, 58, 0, 104, 105, 101, 8, 2, 102, 3, 76, 37, 0, 104, 105, 112, 112, 101, 110, 100, 97, 108, 8, 2, 17, 65, 3, 76, 37, 48,
-			109, 50, 72, 109, 57, 55, 0, 105, 99, 8, 2, 101, 114, 111, 110, 3, 76, 37, 76, 0, 104, 97, 108, 108, 101, 110, 103, 8, 2, 101,
-			114, 3, 76, 109, 55, 109, 50, 75, 0, 8, 2, 105, 110, 101, 114, 3, 89, 0, 4, 105, 1, 114, 97, 2, 97, 32, 3, 89, 37, 57,
-			0, 105, 1, 114, 97, 2, 105, 32, 0, 105, 1, 114, 97, 2, 111, 32, 0, 105, 1, 114, 97, 2, 196, 133, 32, 0, 105, 1, 114, 97,
-			2, 196, 153, 32, 0, 4, 105, 1, 17, 65, 2, 97, 110, 97, 32, 3, 89, 57, 0, 105, 1, 17, 65, 2, 97, 110, 101, 109, 32, 0,
-			105, 1, 17, 65, 2, 97, 110, 105, 101, 32, 0, 105, 1, 17, 65, 2, 97, 110, 111, 32, 0, 105, 1, 17, 65, 2, 97, 110, 111, 119,
-			105, 32, 0, 105, 1, 105, 108, 2, 97, 32, 0, 105, 1, 105, 108, 2, 105, 32, 0, 105, 1, 105, 108, 2, 111, 32, 0, 105, 1, 105,
-			108, 2, 196, 133, 32, 0, 105, 1, 105, 108, 2, 196, 153, 32, 0, 4, 104, 2, 101, 114, 114, 3, 91, 0, 104, 2, 101, 118, 0, 104,
-			105, 99, 8, 2, 97, 103, 17, 65, 3, 91, 37, 49, 0, 104, 111, 112, 105, 8, 2, 110, 3, 91, 111, 48, 109, 0, 104, 2, 105, 3,
-			99, 0, 104, 3, 107, 0, 104, 105, 1, 121, 115, 112, 2, 97, 3, 107, 37, 0, 104, 105, 2, 17, 65, 3, 107, 57, 0, 4, 3, 117,
-			0, 1, 105, 118, 2, 101, 0, 8, 2, 105, 114, 0, 8, 2, 111, 109, 98, 101, 114, 0, 8, 2, 111, 109, 98, 114, 17, 65, 0, 8,
-			2, 111, 109, 105, 101, 115, 0, 8, 2, 111, 109, 105, 110, 117, 0, 4, 2, 105, 3, 119, 0, 105, 2, 17, 65, 0, 7, 6, 100, 0,
-			2, 32, 3, 47, 0, 3, 72, 0, 105, 2, 17, 65, 3, 72, 57, 0, 4, 197, 188, 8, 97, 110, 3, 72, 90, 0, 197, 188, 8, 97,
-			110, 111, 112, 0, 197, 188, 8, 111, 0, 197, 188, 8, 111, 112, 0, 4, 122, 105, 8, 97, 110, 2, 101, 109, 3, 72, 96, 0, 122, 105,
-			8, 111, 112, 2, 101, 109, 0, 197, 188, 3, 75, 0, 197, 188, 2, 32, 3, 76, 0, 2, 105, 3, 116, 0, 4, 105, 101, 115, 2, 101,
-			108, 3, 116, 37, 88, 0, 105, 101, 115, 2, 108, 17, 65, 0, 122, 2, 32, 3, 117, 0, 122, 3, 118, 0, 197, 186, 2, 32, 3, 119,
-			0, 4, 122, 2, 105, 3, 120, 0, 122, 105, 2, 17, 65, 0, 197, 186, 0, 7, 6, 101, 0, 4, 1, 21, 2, 17, 67, 197, 130, 98,
-			121, 32, 3, 8, 109, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 197, 155, 32,
-			0, 4, 105, 8, 2, 17, 67, 3, 35, 57, 0, 105, 8, 108, 107, 2, 110, 0, 4, 97, 1, 100, 2, 108, 101, 114, 3, 37, 0, 97,
-			1, 112, 115, 2, 107, 0, 97, 1, 116, 0, 97, 8, 17, 67, 2, 32, 0, 97, 8, 104, 2, 108, 101, 0, 97, 8, 108, 2, 100, 0,
-			101, 2, 110, 0, 101, 8, 17, 67, 2, 32, 0, 97, 108, 105, 116, 121, 1, 114, 2, 32, 3, 37, 6, 109, 55, 37, 47, 112, 0, 109,
-			97, 105, 108, 8, 3, 37, 65, 109, 57, 55, 0, 97, 115, 1, 108, 2, 105, 110, 3, 37, 88, 0, 4, 3, 109, 0, 97, 1, 114, 2,
-			103, 97, 110, 0, 97, 8, 104, 2, 100, 0, 2, 32, 17, 65, 3, 109, 10, 0, 97, 1, 116, 2, 116, 114, 3, 109, 35, 0, 97, 118,
-			121, 1, 104, 2, 25, 3, 109, 84, 37, 0, 1, 105, 2, 32, 3, 110, 0, 117, 2, 116, 115, 99, 104, 3, 111, 57, 0, 7, 6, 102,
-			0, 3, 83, 0, 105, 2, 17, 65, 3, 83, 38, 57, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 101, 110, 116, 108, 101, 109, 97, 110,
-			8, 3, 75, 109, 50, 47, 109, 55, 65, 109, 50, 0, 4, 101, 111, 114, 103, 105, 8, 2, 97, 32, 3, 75, 111, 51, 75, 57, 0, 101,
-			111, 114, 103, 105, 8, 2, 105, 32, 0, 101, 111, 114, 103, 105, 8, 2, 111, 32, 0, 101, 111, 114, 103, 105, 8, 2, 196, 133, 32, 0,
-			101, 111, 114, 103, 105, 8, 2, 196, 153, 32, 0, 4, 3, 81, 0, 104, 0, 2, 105, 3, 81, 38, 0, 105, 1, 105, 104, 2, 101, 3,
-			81, 57, 0, 197, 130, 2, 32, 3, 81, 58, 0, 97, 116, 101, 2, 115, 3, 81, 109, 57, 47, 0, 7, 6, 104, 0, 2, 105, 3, 99,
-			0, 3, 101, 0, 105, 2, 17, 65, 3, 101, 57, 0, 7, 6, 105, 0, 114, 101, 8, 102, 2, 102, 111, 120, 32, 3, 6, 35, 57, 109,
-			51, 0, 4, 1, 21, 2, 98, 121, 197, 155, 99, 105, 101, 32, 3, 8, 37, 0, 1, 21, 2, 98, 121, 197, 155, 109, 121, 32, 0, 1,
-			97, 100, 117, 21, 2, 18, 66, 32, 0, 1, 97, 104, 99, 21, 2, 18, 66, 32, 0, 1, 97, 122, 111, 21, 2, 18, 66, 32, 0, 1,
-			98, 97, 108, 21, 2, 18, 66, 32, 0, 1, 102, 97, 114, 21, 2, 18, 66, 32, 0, 1, 102, 105, 108, 21, 2, 18, 66, 32, 0, 1,
-			102, 111, 114, 21, 2, 18, 66, 32, 0, 1, 102, 121, 99, 21, 2, 18, 66, 32, 0, 1, 103, 97, 114, 21, 2, 18, 66, 32, 0, 1,
-			103, 111, 103, 21, 2, 18, 66, 32, 0, 1, 103, 111, 108, 2, 18, 66, 32, 0, 1, 103, 114, 117, 21, 2, 18, 66, 32, 0, 1, 104,
-			99, 121, 21, 2, 18, 66, 32, 0, 1, 108, 21, 2, 98, 121, 32, 0, 1, 108, 21, 2, 197, 155, 99, 105, 101, 32, 0, 1, 108, 21,
-			2, 197, 155, 109, 121, 32, 0, 1, 108, 97, 116, 21, 2, 18, 66, 32, 0, 1, 108, 98, 117, 21, 2, 18, 66, 32, 0, 1, 108, 107,
-			121, 21, 2, 18, 66, 32, 0, 1, 108, 111, 98, 21, 2, 18, 66, 32, 0, 1, 108, 111, 104, 21, 2, 18, 66, 32, 0, 1, 108, 112,
-			101, 21, 2, 18, 66, 32, 0, 1, 108, 117, 97, 21, 2, 18, 66, 32, 0, 1, 109, 97, 110, 21, 2, 18, 66, 32, 0, 1, 109, 97,
-			114, 21, 2, 18, 66, 32, 0, 1, 109, 101, 108, 21, 2, 18, 66, 32, 0, 1, 109, 101, 110, 21, 2, 18, 66, 32, 0, 1, 109, 101,
-			115, 21, 2, 18, 66, 32, 0, 1, 109, 105, 109, 2, 18, 66, 32, 0, 1, 109, 105, 110, 21, 2, 18, 66, 32, 0, 1, 109, 108, 97,
-			21, 2, 18, 66, 32, 0, 1, 109, 111, 107, 21, 2, 18, 66, 32, 0, 1, 109, 111, 110, 21, 2, 18, 66, 32, 0, 1, 109, 111, 114,
-			21, 2, 18, 66, 32, 0, 1, 109, 114, 101, 21, 2, 18, 66, 32, 0, 1, 109, 114, 111, 21, 2, 18, 66, 32, 0, 1, 109, 115, 106,
-			21, 2, 18, 66, 32, 0, 1, 109, 116, 121, 21, 2, 18, 66, 32, 0, 1, 110, 21, 2, 98, 121, 32, 0, 1, 110, 21, 2, 197, 155,
-			99, 105, 101, 32, 0, 1, 110, 97, 103, 21, 2, 18, 66, 32, 0, 1, 110, 97, 104, 21, 2, 18, 66, 32, 0, 1, 110, 97, 116, 21,
-			2, 18, 66, 32, 0, 1, 110, 97, 117, 21, 2, 18, 66, 32, 0, 1, 110, 101, 103, 21, 2, 18, 66, 32, 0, 1, 110, 104, 99, 21,
-			2, 18, 66, 32, 0, 1, 110, 105, 108, 21, 2, 18, 66, 32, 0, 1, 110, 111, 101, 21, 2, 18, 66, 32, 0, 1, 110, 111, 102, 21,
-			2, 18, 66, 32, 0, 1, 110, 111, 105, 21, 2, 18, 66, 32, 0, 1, 110, 111, 109, 21, 2, 18, 66, 32, 0, 1, 110, 111, 110, 21,
-			2, 18, 66, 32, 0, 1, 110, 111, 112, 21, 2, 18, 66, 32, 0, 1, 110, 111, 114, 21, 2, 18, 66, 32, 0, 1, 110, 111, 116, 2,
-			99, 101, 32, 0, 1, 110, 111, 116, 2, 107, 111, 32, 0, 1, 110, 111, 116, 2, 107, 196, 133, 32, 0, 1, 110, 111, 116, 2, 107, 196,
-			153, 32, 0, 1, 110, 111, 116, 97, 116, 2, 107, 97, 32, 0, 1, 110, 111, 116, 97, 116, 2, 107, 97, 99, 104, 32, 0, 1, 110, 111,
-			116, 97, 116, 2, 107, 105, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 97, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 97,
-			99, 104, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 105, 32, 0, 1, 110, 117, 109, 21, 2, 18, 66, 32, 0, 1, 111, 114, 101,
-			21, 2, 18, 66, 32, 0, 1, 112, 111, 114, 21, 2, 18, 66, 32, 0, 1, 112, 112, 105, 21, 2, 18, 66, 32, 0, 1, 119, 97, 108,
-			21, 2, 18, 66, 32, 0, 2, 197, 130, 98, 121, 32, 0, 2, 197, 130, 98, 121, 109, 32, 0, 2, 197, 130, 98, 121, 197, 155, 32, 0,
-			8, 109, 114, 101, 116, 2, 18, 66, 32, 0, 8, 109, 116, 121, 114, 2, 18, 66, 32, 0, 8, 110, 111, 116, 2, 107, 97, 32, 0, 8,
-			110, 111, 116, 2, 107, 97, 99, 104, 32, 0, 8, 110, 111, 116, 2, 107, 105, 32, 0, 8, 112, 101, 2, 18, 66, 0, 4, 97, 1, 17,
-			67, 21, 2, 197, 130, 121, 98, 121, 32, 3, 8, 38, 35, 0, 97, 1, 17, 67, 21, 2, 197, 130, 121, 98, 121, 197, 155, 99, 105, 101,
-			32, 0, 97, 1, 17, 67, 21, 2, 197, 130, 121, 98, 121, 197, 155, 109, 121, 32, 0, 4, 101, 1, 17, 67, 21, 2, 108, 105, 98, 121,
-			32, 3, 8, 38, 109, 0, 101, 1, 17, 67, 21, 2, 108, 105, 98, 121, 197, 155, 99, 105, 101, 32, 0, 101, 1, 17, 67, 21, 2, 108,
-			105, 98, 121, 197, 155, 109, 121, 32, 0, 8, 114, 100, 2, 118, 3, 35, 57, 0, 99, 8, 109, 2, 114, 111, 3, 35, 57, 49, 0, 109,
-			101, 8, 116, 3, 35, 57, 65, 0, 109, 101, 8, 116, 2, 114, 3, 35, 57, 65, 109, 0, 114, 101, 8, 102, 2, 102, 111, 3, 35, 57,
-			109, 51, 0, 4, 3, 37, 0, 8, 110, 105, 109, 111, 100, 2, 99, 101, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 97, 32,
-			12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 97, 99, 104, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 105, 32, 12, 12,
-			0, 8, 110, 105, 109, 111, 100, 2, 107, 111, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 111, 109, 32, 12, 12, 0, 8, 110,
-			105, 109, 111, 100, 2, 107, 196, 133, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 196, 153, 32, 12, 12, 0, 8, 110, 111, 114,
-			101, 119, 2, 99, 101, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 97, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107,
-			97, 99, 104, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 105, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 111, 32,
-			12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 111, 109, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 196, 133, 32, 12, 12,
-			0, 8, 110, 111, 114, 101, 119, 2, 107, 196, 153, 32, 12, 12, 0, 4, 105, 1, 107, 97, 114, 2, 32, 3, 37, 57, 37, 0, 105, 1,
-			109, 188, 197, 2, 32, 0, 1, 17, 67, 2, 17, 65, 3, 38, 0, 8, 108, 107, 2, 101, 3, 38, 37, 57, 0, 101, 1, 17, 67, 2,
-			32, 3, 38, 110, 0, 4, 1, 17, 65, 2, 17, 65, 3, 57, 0, 2, 17, 65, 32, 12, 0, 7, 6, 106, 0, 3, 57, 0, 8, 2,
-			105, 109, 3, 75, 0, 101, 97, 2, 110, 115, 3, 75, 37, 0, 4, 97, 99, 107, 8, 2, 32, 3, 75, 109, 49, 0, 97, 99, 107, 8,
-			2, 115, 0, 97, 99, 107, 8, 2, 121, 0, 97, 99, 107, 121, 8, 2, 32, 3, 75, 109, 49, 37, 0, 97, 109, 101, 115, 8, 3, 75,
-			109, 57, 65, 89, 0, 97, 109, 101, 115, 105, 8, 2, 101, 32, 3, 75, 109, 57, 65, 97, 0, 101, 102, 102, 8, 3, 75, 109, 83, 0,
-			97, 122, 122, 3, 75, 109, 88, 0, 97, 122, 122, 2, 32, 3, 75, 109, 89, 0, 111, 104, 110, 8, 3, 75, 111, 50, 0, 111, 110, 97,
-			116, 104, 8, 3, 75, 111, 50, 35, 47, 0, 111, 104, 110, 105, 8, 2, 101, 3, 75, 111, 67, 38, 0, 97, 99, 113, 117, 101, 115, 8,
-			3, 90, 35, 49, 0, 8, 2, 105, 109, 101, 110, 3, 107, 0, 7, 6, 107, 0, 3, 49, 0, 108, 111, 119, 8, 2, 110, 3, 49, 55,
-			35, 58, 0, 197, 130, 2, 32, 3, 49, 58, 0, 7, 6, 108, 0, 3, 55, 0, 2, 32, 3, 55, 10, 0, 105, 8, 111, 112, 2, 17,
-			65, 3, 55, 37, 0, 105, 2, 17, 65, 3, 55, 57, 0, 7, 6, 109, 0, 3, 65, 0, 2, 32, 3, 65, 10, 0, 106, 8, 2, 114,
-			17, 65, 3, 65, 35, 57, 111, 0, 105, 8, 101, 105, 122, 2, 17, 65, 3, 65, 38, 0, 105, 1, 17, 65, 2, 17, 65, 3, 65, 57,
-			0, 99, 8, 2, 14, 129, 132, 130, 3, 65, 109, 49, 0, 7, 6, 110, 0, 3, 50, 0, 2, 32, 3, 50, 10, 0, 116, 111, 110, 1,
-			17, 65, 21, 2, 32, 14, 129, 128, 132, 3, 50, 47, 111, 50, 0, 103, 1, 97, 2, 101, 108, 3, 50, 75, 0, 4, 111, 102, 102, 2,
-			32, 14, 129, 128, 132, 3, 50, 111, 84, 0, 111, 102, 102, 2, 97, 32, 0, 111, 102, 102, 2, 97, 99, 104, 32, 0, 111, 102, 102, 2,
-			97, 109, 105, 32, 0, 111, 102, 102, 2, 101, 109, 32, 0, 111, 102, 102, 2, 105, 101, 32, 0, 111, 102, 102, 2, 111, 109, 32, 0, 111,
-			102, 102, 2, 111, 119, 105, 32, 0, 111, 102, 102, 2, 117, 32, 0, 4, 2, 99, 105, 3, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197,
-			186, 0, 2, 105, 0, 2, 196, 135, 0, 4, 105, 2, 17, 65, 3, 67, 38, 0, 121, 2, 39, 101, 103, 111, 32, 0, 121, 2, 39, 101,
-			109, 117, 32, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 103, 116, 111, 110, 1, 17, 65, 21, 2, 32, 14, 129, 128, 133, 3, 68, 81,
-			47, 111, 50, 0, 7, 6, 111, 0, 117, 116, 8, 103, 97, 114, 2, 32, 3, 6, 40, 0, 119, 8, 100, 2, 110, 3, 35, 58, 0, 117,
-			116, 115, 105, 100, 8, 3, 35, 58, 117, 35, 57, 72, 0, 105, 8, 112, 2, 114, 111, 116, 17, 65, 3, 40, 58, 35, 0, 101, 116, 104,
-			3, 109, 47, 0, 3, 111, 0, 2, 32, 17, 65, 3, 111, 12, 10, 0, 116, 101, 98, 111, 111, 8, 110, 2, 17, 67, 3, 111, 58, 47,
-			71, 40, 0, 7, 6, 112, 0, 3, 48, 0, 4, 197, 130, 8, 2, 99, 3, 48, 40, 58, 49, 111, 84, 50, 37, 0, 197, 130, 8, 2,
-			107, 0, 4, 105, 8, 111, 107, 2, 17, 65, 3, 48, 57, 0, 105, 8, 111, 107, 111, 116, 111, 102, 2, 17, 65, 0, 4, 112, 197, 130,
-			8, 2, 99, 3, 48, 111, 47, 48, 40, 58, 49, 111, 84, 50, 37, 0, 112, 197, 130, 8, 2, 107, 0, 7, 6, 113, 0, 3, 49, 0,
-			117, 2, 17, 65, 3, 49, 84, 0, 7, 6, 114, 0, 4, 3, 51, 0, 1, 17, 65, 2, 122, 197, 130, 0, 1, 25, 2, 17, 65, 0,
-			1, 32, 17, 65, 2, 17, 65, 0, 1, 97, 109, 2, 122, 108, 105, 110, 0, 1, 97, 109, 2, 122, 110, 0, 1, 97, 109, 100, 111, 2,
-			122, 97, 0, 2, 122, 105, 0, 8, 97, 109, 97, 122, 2, 122, 97, 0, 8, 97, 109, 122, 2, 122, 97, 0, 8, 111, 98, 2, 122, 111,
-			106, 0, 114, 1, 17, 65, 2, 17, 65, 0, 121, 39, 2, 101, 0, 105, 2, 17, 65, 3, 51, 57, 0, 4, 122, 8, 105, 109, 2, 97,
-			32, 12, 12, 12, 3, 51, 88, 0, 122, 8, 105, 109, 2, 97, 99, 104, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 97, 109, 105, 32,
-			12, 12, 12, 0, 122, 8, 105, 109, 2, 111, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 111, 119, 105, 101, 32, 12, 12, 12, 0, 122,
-			8, 105, 109, 2, 121, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 195, 179, 119, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 196, 133,
-			32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 196, 153, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97, 32, 12, 12, 12, 0, 122, 8,
-			117, 109, 2, 97, 99, 104, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97, 109, 105, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97,
-			115, 105, 99, 104, 108, 0, 122, 8, 117, 109, 2, 111, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 111, 119, 105, 101, 32, 12, 12, 12,
-			0, 122, 8, 117, 109, 2, 121, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 195, 179, 119, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2,
-			196, 133, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 196, 153, 32, 12, 12, 12, 0, 4, 122, 2, 97, 110, 100, 3, 51, 117, 0, 122,
-			2, 105, 110, 105, 32, 0, 122, 2, 105, 110, 105, 99, 104, 32, 0, 122, 2, 105, 110, 105, 101, 103, 111, 32, 0, 122, 2, 105, 110, 105,
-			101, 109, 117, 32, 0, 122, 2, 105, 110, 105, 109, 32, 0, 122, 2, 105, 110, 105, 109, 105, 32, 0, 122, 2, 111, 110, 105, 32, 0, 122,
-			2, 111, 110, 105, 99, 104, 32, 0, 122, 2, 111, 110, 105, 101, 103, 111, 32, 0, 122, 2, 111, 110, 105, 101, 109, 117, 32, 0, 122, 2,
-			111, 110, 105, 109, 32, 0, 122, 2, 111, 110, 105, 109, 105, 32, 0, 122, 3, 90, 0, 4, 122, 1, 99, 2, 17, 65, 3, 91, 0, 122,
-			1, 102, 2, 17, 65, 0, 122, 1, 104, 0, 122, 1, 107, 0, 122, 1, 112, 0, 122, 1, 115, 2, 17, 65, 0, 122, 1, 116, 0, 122,
-			1, 122, 99, 2, 17, 65, 0, 122, 1, 122, 115, 2, 17, 65, 0, 122, 1, 135, 196, 2, 17, 65, 0, 122, 1, 155, 197, 2, 17, 65,
-			0, 122, 2, 32, 0, 7, 6, 115, 0, 4, 105, 1, 115, 2, 109, 97, 32, 3, 8, 37, 0, 105, 1, 115, 2, 109, 101, 109, 32, 0,
-			105, 1, 115, 2, 109, 105, 101, 32, 0, 105, 1, 115, 2, 109, 111, 32, 0, 4, 111, 110, 8, 101, 99, 108, 97, 115, 2, 32, 12, 12,
-			3, 8, 89, 111, 50, 0, 111, 110, 8, 105, 116, 97, 112, 2, 32, 12, 12, 0, 8, 97, 117, 113, 2, 105, 3, 88, 0, 3, 89, 0,
-			4, 105, 1, 107, 101, 108, 112, 2, 32, 3, 89, 37, 0, 105, 2, 98, 0, 105, 2, 99, 0, 105, 2, 100, 0, 105, 2, 102, 0, 105,
-			2, 103, 0, 105, 2, 104, 0, 105, 2, 108, 105, 107, 111, 0, 105, 2, 108, 108, 0, 105, 2, 108, 111, 115, 0, 105, 2, 108, 118, 0,
-			105, 2, 109, 0, 105, 2, 110, 103, 0, 105, 2, 110, 117, 115, 0, 105, 2, 113, 0, 105, 2, 114, 0, 105, 2, 116, 0, 105, 2, 118,
-			0, 105, 2, 120, 0, 105, 8, 107, 97, 109, 2, 32, 0, 116, 101, 105, 110, 1, 121, 3, 89, 47, 109, 37, 50, 0, 99, 104, 101, 114,
-			122, 3, 89, 49, 109, 51, 117, 0, 4, 105, 8, 97, 116, 115, 97, 110, 97, 2, 97, 32, 3, 89, 57, 0, 105, 8, 97, 116, 115, 97,
-			110, 97, 2, 105, 32, 0, 105, 8, 97, 116, 115, 97, 110, 97, 2, 111, 32, 0, 105, 8, 97, 116, 115, 97, 110, 97, 2, 196, 133, 32,
-			0, 105, 8, 97, 116, 115, 97, 110, 97, 2, 196, 153, 32, 0, 4, 99, 104, 1, 97, 112, 2, 97, 3, 89, 101, 0, 99, 104, 1, 101,
-			2, 97, 116, 111, 0, 99, 104, 2, 97, 98, 17, 65, 32, 0, 99, 104, 2, 97, 98, 32, 0, 99, 104, 2, 97, 98, 97, 109, 105, 32,
-			0, 99, 104, 2, 97, 98, 101, 109, 32, 0, 99, 104, 2, 97, 98, 105, 101, 32, 0, 99, 104, 2, 97, 98, 111, 109, 0, 99, 104, 2,
-			97, 98, 111, 115, 122, 0, 99, 104, 2, 97, 98, 111, 119, 17, 65, 0, 99, 104, 2, 97, 98, 195, 179, 0, 99, 104, 2, 97, 100, 122,
-			17, 65, 0, 99, 104, 2, 97, 100, 122, 107, 0, 99, 104, 2, 97, 109, 32, 0, 99, 104, 2, 97, 109, 105, 0, 99, 104, 2, 97, 109,
-			105, 17, 65, 0, 99, 104, 2, 97, 114, 97, 107, 116, 0, 99, 104, 2, 101, 100, 17, 65, 0, 99, 104, 2, 101, 100, 32, 0, 99, 104,
-			2, 101, 109, 97, 116, 0, 99, 104, 2, 105, 122, 109, 17, 65, 0, 99, 104, 2, 105, 122, 109, 32, 0, 99, 104, 2, 105, 122, 111, 0,
-			99, 104, 2, 108, 97, 108, 105, 0, 99, 104, 2, 108, 97, 110, 17, 65, 0, 99, 104, 2, 108, 97, 196, 135, 0, 99, 104, 2, 108, 97,
-			197, 130, 0, 99, 104, 2, 108, 101, 108, 105, 0, 99, 104, 2, 108, 117, 100, 110, 17, 65, 0, 99, 104, 2, 110, 105, 101, 32, 0, 99,
-			104, 2, 110, 105, 196, 153, 0, 99, 104, 2, 110, 196, 133, 0, 99, 104, 2, 110, 196, 153, 0, 99, 104, 2, 111, 100, 97, 99, 104, 32,
-			0, 99, 104, 2, 111, 100, 97, 109, 105, 32, 0, 99, 104, 2, 111, 100, 101, 107, 32, 0, 99, 104, 2, 111, 100, 107, 97, 0, 99, 104,
-			2, 111, 100, 107, 105, 0, 99, 104, 2, 111, 100, 107, 105, 101, 109, 32, 0, 99, 104, 2, 111, 100, 107, 111, 119, 0, 99, 104, 2, 111,
-			100, 107, 111, 119, 105, 32, 0, 99, 104, 2, 111, 100, 107, 117, 32, 0, 99, 104, 2, 111, 100, 107, 195, 179, 0, 99, 104, 2, 111, 100,
-			111, 119, 0, 99, 104, 2, 111, 100, 121, 32, 0, 99, 104, 2, 111, 100, 122, 105, 0, 99, 104, 2, 111, 100, 122, 196, 133, 0, 99, 104,
-			2, 111, 100, 122, 196, 153, 0, 99, 104, 2, 111, 100, 195, 179, 0, 99, 104, 2, 111, 114, 111, 119, 97, 0, 99, 104, 2, 111, 114, 122,
-			101, 0, 99, 104, 2, 111, 119, 17, 65, 0, 99, 104, 2, 111, 119, 97, 0, 99, 104, 2, 114, 111, 110, 17, 65, 0, 99, 104, 2, 114,
-			111, 110, 32, 0, 99, 104, 2, 114, 117, 112, 32, 0, 99, 104, 2, 114, 117, 112, 97, 108, 105, 0, 99, 104, 2, 114, 117, 112, 97, 110,
-			17, 65, 0, 99, 104, 2, 114, 117, 112, 97, 196, 135, 32, 0, 99, 104, 2, 114, 117, 112, 97, 197, 130, 0, 99, 104, 2, 114, 117, 112,
-			105, 17, 65, 0, 99, 104, 2, 114, 121, 112, 17, 65, 0, 99, 104, 2, 114, 121, 112, 108, 0, 99, 104, 2, 114, 121, 112, 197, 130, 0,
-			99, 104, 2, 114, 122, 17, 65, 0, 99, 104, 2, 117, 100, 110, 0, 99, 104, 2, 119, 121, 99, 105, 0, 99, 104, 2, 119, 121, 116, 17,
-			65, 0, 99, 104, 2, 121, 108, 17, 65, 0, 99, 104, 2, 121, 197, 130, 0, 99, 104, 2, 195, 179, 0, 99, 104, 2, 196, 133, 0, 99,
-			104, 2, 196, 153, 0, 99, 104, 2, 197, 130, 0, 99, 104, 8, 2, 101, 116, 121, 0, 99, 104, 8, 2, 101, 116, 121, 110, 0, 99, 104,
-			8, 2, 108, 101, 98, 32, 0, 99, 104, 8, 2, 108, 101, 98, 105, 0, 99, 104, 8, 2, 121, 108, 32, 0, 99, 104, 8, 119, 2, 111,
-			100, 0, 101, 110, 1, 21, 2, 32, 14, 129, 128, 131, 3, 89, 109, 50, 0, 111, 110, 1, 21, 2, 32, 14, 129, 128, 131, 3, 89, 111,
-			50, 0, 4, 99, 104, 3, 91, 0, 107, 106, 2, 17, 65, 0, 122, 0, 4, 116, 101, 105, 110, 3, 91, 47, 35, 57, 50, 0, 116, 101,
-			105, 110, 2, 32, 14, 129, 128, 133, 0, 99, 104, 119, 97, 114, 122, 3, 91, 84, 35, 51, 117, 0, 99, 104, 111, 101, 3, 91, 109, 0,
-			4, 101, 97, 8, 2, 110, 32, 3, 91, 111, 0, 101, 97, 8, 2, 110, 97, 32, 0, 101, 97, 8, 2, 110, 101, 109, 32, 0, 101, 97,
-			8, 2, 110, 105, 101, 32, 0, 101, 97, 8, 2, 110, 111, 119, 105, 32, 0, 101, 97, 8, 2, 110, 117, 32, 0, 4, 2, 105, 3, 97,
-			0, 105, 2, 17, 65, 0, 4, 105, 1, 117, 100, 2, 103, 114, 3, 97, 37, 0, 105, 2, 98, 114, 122, 0, 105, 2, 99, 17, 65, 0,
-			105, 2, 99, 104, 0, 105, 2, 99, 122, 0, 105, 2, 100, 108, 17, 65, 0, 105, 2, 100, 108, 32, 0, 105, 2, 100, 197, 130, 0, 105,
-			8, 2, 116, 17, 65, 0, 105, 8, 2, 116, 32, 0, 105, 8, 2, 116, 107, 0, 7, 6, 116, 0, 4, 3, 47, 0, 2, 114, 122, 0,
-			2, 115, 0, 111, 119, 110, 2, 32, 14, 129, 128, 132, 3, 47, 35, 58, 50, 0, 105, 2, 17, 65, 3, 47, 57, 0, 116, 104, 101, 119,
-			3, 89, 57, 40, 0, 2, 105, 3, 115, 0, 7, 6, 117, 0, 4, 1, 21, 2, 197, 130, 98, 121, 32, 3, 8, 40, 0, 1, 21, 2,
-			197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 197, 130, 98, 121, 197, 155, 32, 0, 110, 99, 104, 8, 108, 3, 35, 50, 76, 0, 4, 3,
-			40, 0, 1, 97, 110, 2, 99, 122, 0, 1, 97, 110, 2, 107, 0, 1, 97, 114, 97, 112, 0, 1, 97, 116, 101, 109, 0, 1, 101, 17,
-			67, 2, 109, 32, 0, 1, 101, 17, 67, 2, 115, 0, 8, 97, 122, 0, 8, 101, 105, 110, 0, 8, 101, 122, 114, 112, 0, 2, 32, 17,
-			65, 3, 40, 10, 0, 101, 116, 111, 111, 116, 104, 8, 108, 98, 3, 40, 47, 40, 83, 0, 115, 105, 99, 8, 109, 2, 97, 108, 32, 3,
-			57, 6, 40, 88, 37, 49, 0, 115, 105, 99, 8, 109, 2, 97, 108, 3, 57, 40, 88, 37, 49, 0, 4, 1, 97, 3, 58, 0, 1, 101,
-			0, 8, 97, 122, 2, 116, 111, 0, 105, 99, 107, 8, 98, 3, 58, 37, 49, 0, 7, 6, 118, 0, 105, 99, 101, 8, 2, 21, 14, 129,
-			132, 132, 3, 58, 37, 117, 109, 0, 4, 1, 102, 2, 17, 65, 3, 83, 0, 1, 104, 2, 17, 65, 0, 1, 107, 2, 17, 65, 0, 1,
-			112, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 1, 116, 2, 17, 65, 0, 2, 111, 108, 107, 115, 0, 3, 84, 0, 105, 108, 108, 101,
-			2, 32, 14, 129, 128, 133, 3, 84, 37, 55, 0, 7, 6, 119, 0, 2, 115, 107, 3, 10, 84, 0, 4, 114, 105, 103, 104, 3, 51, 35,
-			57, 0, 114, 105, 103, 104, 1, 17, 67, 0, 8, 2, 32, 3, 58, 0, 101, 101, 2, 107, 3, 58, 37, 0, 4, 8, 2, 32, 102, 3,
-			58, 109, 0, 8, 2, 32, 109, 110, 0, 97, 115, 104, 105, 8, 3, 58, 111, 91, 37, 0, 105, 110, 100, 111, 119, 8, 3, 58, 112, 50,
-			72, 111, 58, 0, 4, 1, 99, 2, 17, 65, 3, 83, 0, 1, 102, 2, 17, 65, 0, 1, 104, 2, 17, 65, 0, 1, 107, 2, 17, 65,
-			0, 1, 112, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 1, 116, 2, 17, 65, 0, 1, 122, 99, 2, 17, 65, 0, 1, 122, 115, 2,
-			17, 65, 0, 1, 135, 196, 2, 17, 65, 0, 1, 155, 197, 2, 17, 65, 0, 2, 32, 0, 8, 2, 32, 99, 0, 8, 2, 32, 104, 0,
-			8, 2, 32, 107, 0, 8, 2, 32, 112, 0, 8, 2, 32, 115, 0, 8, 2, 32, 116, 0, 3, 84, 0, 105, 99, 101, 8, 2, 21, 14,
-			129, 132, 132, 3, 84, 37, 117, 109, 0, 115, 122, 1, 114, 101, 105, 2, 17, 65, 3, 91, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7,
-			6, 121, 0, 4, 39, 1, 114, 2, 101, 103, 111, 32, 3, 0, 39, 1, 114, 2, 101, 109, 117, 32, 3, 0, 4, 1, 21, 2, 197, 130,
-			98, 121, 32, 3, 8, 112, 0, 1, 21, 2, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 197, 130, 98, 121, 197, 155, 32, 0, 1, 98,
-			101, 2, 197, 155, 99, 105, 101, 32, 0, 1, 98, 101, 2, 197, 155, 109, 121, 32, 0, 1, 100, 108, 97, 21, 2, 18, 66, 32, 0, 1,
-			100, 111, 108, 21, 2, 18, 66, 32, 0, 1, 100, 111, 116, 21, 2, 18, 66, 32, 0, 1, 100, 114, 111, 21, 2, 18, 66, 32, 0, 1,
-			114, 101, 109, 21, 2, 18, 66, 32, 0, 1, 114, 101, 116, 21, 2, 18, 66, 32, 0, 1, 114, 111, 102, 21, 2, 18, 66, 32, 0, 1,
-			114, 111, 103, 21, 2, 18, 66, 32, 0, 1, 114, 111, 116, 21, 2, 18, 66, 32, 0, 1, 114, 116, 101, 21, 2, 18, 66, 32, 0, 1,
-			114, 116, 107, 21, 2, 18, 66, 32, 0, 1, 114, 116, 112, 21, 2, 18, 66, 32, 0, 1, 115, 97, 108, 21, 2, 18, 66, 32, 0, 1,
-			115, 107, 101, 21, 2, 18, 66, 32, 0, 1, 116, 97, 98, 21, 2, 18, 66, 32, 0, 1, 116, 97, 105, 21, 2, 18, 66, 32, 0, 1,
-			116, 97, 109, 21, 2, 18, 66, 32, 0, 1, 116, 97, 114, 21, 2, 18, 66, 32, 0, 1, 116, 97, 116, 21, 2, 18, 66, 32, 0, 1,
-			116, 101, 97, 21, 2, 18, 66, 32, 0, 1, 116, 101, 99, 21, 2, 18, 66, 32, 0, 1, 116, 101, 100, 21, 2, 18, 66, 32, 0, 1,
-			116, 101, 103, 21, 2, 18, 66, 32, 0, 1, 116, 101, 104, 21, 2, 18, 66, 32, 0, 1, 116, 101, 108, 21, 2, 18, 66, 32, 0, 1,
-			116, 101, 109, 21, 2, 18, 66, 32, 0, 1, 116, 101, 110, 21, 2, 18, 66, 32, 0, 1, 116, 101, 111, 21, 2, 18, 66, 32, 0, 1,
-			116, 101, 114, 21, 2, 18, 66, 32, 0, 1, 116, 101, 116, 21, 2, 18, 66, 32, 0, 1, 116, 105, 108, 21, 2, 18, 66, 32, 0, 1,
-			116, 107, 97, 21, 2, 18, 66, 32, 0, 1, 116, 107, 101, 21, 2, 18, 66, 32, 0, 1, 116, 107, 114, 21, 2, 18, 66, 32, 0, 1,
-			116, 108, 97, 21, 2, 18, 66, 32, 0, 1, 116, 110, 97, 21, 2, 18, 66, 32, 0, 1, 116, 110, 101, 21, 2, 18, 66, 32, 0, 1,
-			116, 111, 98, 21, 2, 18, 66, 32, 0, 1, 116, 111, 105, 21, 2, 18, 66, 32, 0, 1, 116, 111, 110, 21, 2, 18, 66, 32, 0, 1,
-			116, 111, 114, 21, 2, 18, 66, 32, 0, 1, 116, 111, 122, 21, 2, 18, 66, 32, 0, 1, 116, 112, 101, 21, 2, 18, 66, 32, 0, 1,
-			116, 112, 105, 21, 2, 18, 66, 32, 0, 1, 116, 112, 111, 2, 18, 66, 32, 0, 1, 116, 115, 97, 21, 2, 18, 66, 32, 0, 1, 116,
-			115, 101, 21, 2, 18, 66, 32, 0, 1, 116, 115, 105, 21, 2, 18, 66, 32, 0, 1, 116, 115, 111, 21, 2, 18, 66, 32, 0, 1, 116,
-			115, 117, 21, 2, 18, 66, 32, 0, 1, 116, 115, 121, 21, 2, 18, 66, 32, 0, 1, 116, 117, 97, 21, 2, 18, 66, 32, 0, 1, 116,
-			117, 101, 21, 2, 18, 66, 32, 0, 1, 116, 121, 114, 21, 2, 18, 66, 32, 0, 1, 122, 101, 110, 21, 2, 18, 66, 32, 0, 1, 122,
-			105, 102, 2, 18, 66, 32, 0, 1, 130, 197, 21, 2, 98, 121, 32, 0, 1, 130, 197, 21, 2, 98, 121, 197, 155, 99, 105, 101, 32, 0,
-			1, 130, 197, 21, 2, 98, 121, 197, 155, 109, 121, 32, 0, 8, 98, 97, 2, 197, 155, 99, 105, 101, 32, 0, 8, 98, 97, 2, 197, 155,
-			109, 121, 32, 0, 8, 115, 97, 108, 107, 2, 18, 66, 32, 0, 8, 116, 97, 116, 115, 2, 18, 66, 32, 0, 8, 116, 101, 2, 18, 66,
-			32, 0, 8, 116, 107, 97, 114, 112, 2, 18, 66, 32, 0, 8, 116, 115, 105, 109, 2, 18, 66, 0, 8, 116, 121, 114, 107, 2, 18, 66,
-			32, 0, 4, 39, 1, 17, 67, 2, 101, 103, 111, 32, 3, 38, 0, 39, 1, 17, 67, 2, 101, 109, 117, 32, 0, 4, 1, 17, 65, 2,
-			17, 65, 3, 57, 0, 1, 17, 65, 2, 32, 0, 8, 2, 17, 65, 0, 4, 3, 112, 0, 8, 114, 111, 116, 115, 105, 104, 2, 107, 97,
-			12, 12, 0, 8, 114, 111, 116, 115, 105, 104, 2, 107, 111, 109, 12, 12, 0, 8, 114, 116, 101, 116, 2, 107, 97, 12, 12, 0, 8, 114,
-			116, 101, 116, 2, 107, 111, 109, 12, 12, 0, 8, 116, 97, 112, 2, 12, 12, 0, 2, 32, 17, 65, 3, 112, 10, 0, 7, 6, 122, 0,
-			4, 3, 88, 0, 8, 2, 32, 0, 8, 111, 114, 2, 105, 17, 67, 0, 4, 105, 8, 2, 17, 67, 3, 88, 10, 37, 0, 105, 8, 101,
-			105, 110, 2, 17, 67, 0, 122, 8, 2, 97, 32, 3, 88, 10, 88, 0, 4, 105, 1, 111, 109, 2, 108, 108, 3, 88, 37, 0, 105, 2,
-			17, 67, 0, 8, 2, 32, 109, 110, 3, 88, 109, 0, 4, 2, 32, 3, 89, 0, 8, 2, 32, 99, 0, 8, 2, 32, 102, 0, 8, 2,
-			32, 104, 0, 8, 2, 32, 107, 0, 8, 2, 32, 112, 0, 8, 2, 32, 115, 0, 8, 2, 32, 116, 0, 4, 2, 105, 3, 96, 0, 105,
-			2, 17, 65, 0, 4, 105, 2, 109, 12, 3, 96, 37, 0, 105, 8, 2, 112, 0, 4, 2, 105, 110, 105, 32, 3, 117, 0, 2, 105, 110,
-			105, 99, 104, 32, 0, 2, 105, 110, 105, 101, 103, 111, 32, 0, 2, 105, 110, 105, 101, 109, 117, 32, 0, 2, 105, 110, 105, 109, 32, 0,
-			2, 105, 110, 105, 109, 105, 32, 0, 122, 2, 97, 32, 0, 122, 2, 97, 99, 104, 32, 0, 122, 2, 97, 109, 105, 32, 0, 122, 2, 97,
-			110, 105, 32, 0, 122, 2, 97, 110, 105, 99, 104, 32, 0, 122, 2, 97, 110, 105, 101, 103, 111, 32, 0, 122, 2, 97, 110, 105, 101, 109,
-			117, 32, 0, 122, 2, 97, 110, 105, 109, 32, 0, 122, 2, 97, 110, 105, 109, 105, 32, 0, 122, 2, 105, 110, 105, 32, 0, 122, 2, 105,
-			110, 105, 99, 104, 32, 0, 122, 2, 105, 110, 105, 101, 103, 111, 32, 0, 122, 2, 105, 110, 105, 101, 109, 117, 32, 0, 122, 2, 105, 110,
-			105, 109, 32, 0, 122, 2, 105, 110, 105, 109, 105, 32, 0, 122, 2, 111, 32, 0, 122, 2, 111, 110, 105, 32, 0, 122, 2, 111, 110, 105,
-			99, 104, 32, 0, 122, 2, 111, 110, 105, 101, 103, 111, 32, 0, 122, 2, 111, 110, 105, 101, 109, 117, 32, 0, 122, 2, 111, 110, 105, 109,
-			32, 0, 122, 2, 111, 110, 105, 109, 105, 32, 0, 122, 2, 121, 32, 0, 122, 2, 195, 179, 119, 32, 0, 122, 2, 196, 153, 32, 0, 122,
-			8, 17, 65, 109, 2, 17, 65, 0, 122, 8, 105, 112, 0, 117, 114, 105, 8, 2, 99, 104, 3, 117, 40, 51, 112, 0, 7, 6, 126, 0,
-			3, 0, 7, 6, 0, 39, 97, 2, 32, 14, 128, 128, 130, 3, 35, 0, 39, 117, 2, 32, 14, 128, 128, 130, 3, 40, 0, 36, 3, 72,
-			111, 55, 35, 51, 0, 39, 101, 109, 2, 32, 14, 128, 128, 131, 3, 109, 65, 0, 39, 101, 109, 117, 2, 32, 14, 128, 128, 132, 3, 109,
-			65, 40, 0, 39, 101, 103, 111, 2, 32, 14, 128, 128, 132, 3, 109, 81, 111, 0, 39, 111, 119, 105, 2, 32, 14, 128, 128, 132, 3, 111,
-			84, 37, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts50 = FileInMemory_createWithData (39425, reinterpret_cast<const char *> (&espeakdata_dicts50_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/pl_dict", 
-			U"pl");
-		Collection_addItem (me.peek(), espeakdata_dicts50.transfer());
-
-		static unsigned char espeakdata_dicts51_data[2570] = {
-			0, 4, 0, 0, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 9, 5, 95, 48, 1, 14, 4, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_dicts52_data[2129] = {
+			0, 4, 0, 0, 158, 6, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 76, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0,
+			0, 6, 65, 12, 89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 12, 4, 95, 100, 112, 116, 10, 49, 110, 65,
+			108, 0, 0, 4, 193, 20, 76, 0, 0, 0, 0, 6, 65, 24, 109, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 36, 0, 0, 0, 0,
+			0, 6, 65, 32, 107, 35, 0, 0, 0, 0, 0, 5, 193, 36, 76, 8, 0, 0, 4, 193, 112, 43, 0, 0, 6, 65, 40, 57, 36, 0,
+			0, 0, 6, 195, 64, 244, 128, 76, 0, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65, 48, 109, 55, 0, 0, 0, 0, 0,
+			6, 65, 52, 109, 65, 0, 0, 0, 0, 0, 6, 65, 56, 109, 50, 0, 0, 0, 0, 0, 5, 193, 60, 76, 8, 0, 0, 0, 0, 6,
+			65, 64, 48, 36, 0, 0, 0, 0, 0, 6, 65, 68, 49, 112, 0, 0, 0, 6, 195, 8, 244, 207, 76, 0, 0, 6, 65, 72, 109, 51,
+			0, 0, 0, 0, 0, 6, 65, 76, 109, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			65, 88, 84, 36, 0, 0, 0, 0, 0, 6, 65, 92, 58, 36, 0, 0, 0, 0, 0, 7, 65, 96, 109, 49, 89, 0, 0, 0, 0, 0,
+			11, 65, 100, 37, 81, 51, 6, 109, 49, 0, 49, 5, 193, 100, 72, 8, 0, 0, 0, 0, 7, 65, 104, 88, 109, 47, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 51, 88, 89, 6, 37, 0, 0, 10, 3, 95, 48, 67,
-			89, 6, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 13, 3, 95, 55, 88, 107, 6, 109, 83, 47, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 3, 95, 49, 88, 72, 6, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 88, 71, 6,
-			37, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 52, 88, 76, 6, 108, 107, 55,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 53, 88, 48, 6, 37, 50, 75, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			11, 3, 95, 54, 88, 91, 6, 109, 89, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95,
-			56, 88, 107, 6, 109, 91, 47, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 57, 88, 50, 109, 84, 6, 109, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 89, 6, 108, 12, 107, 0, 0, 9, 2, 95, 50, 72, 6, 40, 12, 0,
-			0, 9, 2, 95, 49, 57, 6, 109, 49, 0, 0, 11, 2, 95, 48, 89, 108, 6, 83, 108, 34, 0, 0, 10, 2, 95, 55, 107, 6, 109,
-			83, 47, 0, 0, 9, 2, 95, 54, 91, 108, 6, 91, 0, 0, 10, 2, 95, 53, 48, 109, 6, 50, 75, 0, 0, 10, 2, 95, 52, 76,
-			6, 109, 107, 34, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 39, 0, 0, 10, 2, 95, 56, 107, 6, 109, 91, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 217, 135, 107, 6, 108, 12, 72, 39, 76, 109,
-			91, 65, 0, 0, 9, 2, 217, 134, 50, 6, 40, 50, 0, 0, 9, 2, 217, 133, 65, 6, 37, 65, 0, 0, 9, 2, 217, 132, 55, 6,
-			109, 65, 0, 0, 0, 9, 2, 217, 130, 51, 6, 109, 83, 0, 0, 9, 2, 217, 129, 83, 6, 108, 12, 0, 0, 0, 0, 9, 2, 218,
-			134, 76, 6, 108, 12, 0, 0, 0, 0, 0, 0, 0, 10, 2, 217, 136, 58, 6, 39, 12, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 10, 2, 216, 167, 109, 55, 6, 108, 83, 0, 0, 0, 0, 9, 2, 219, 140, 57, 6, 109, 12, 0, 0, 0, 0, 12, 2, 216, 161,
-			107, 109, 65, 88, 6, 108, 12, 0, 0, 0, 9, 2, 216, 175, 72, 6, 109, 55, 0, 0, 9, 2, 216, 174, 106, 6, 108, 12, 0, 0,
-			9, 2, 216, 173, 107, 6, 108, 12, 0, 0, 9, 2, 216, 172, 75, 6, 37, 65, 0, 0, 9, 2, 216, 171, 89, 6, 108, 12, 0, 0,
-			9, 2, 216, 170, 47, 6, 108, 12, 0, 0, 0, 9, 2, 216, 168, 71, 6, 108, 12, 0, 0, 9, 2, 216, 183, 47, 6, 109, 12, 0,
-			0, 9, 2, 216, 182, 88, 6, 109, 72, 0, 0, 9, 2, 216, 181, 89, 6, 109, 72, 0, 0, 9, 2, 216, 180, 91, 6, 37, 50, 0,
-			0, 9, 2, 216, 179, 89, 6, 37, 50, 0, 0, 9, 2, 216, 178, 88, 6, 108, 12, 0, 0, 9, 2, 216, 177, 34, 6, 108, 12, 0,
-			0, 9, 2, 216, 176, 88, 6, 109, 55, 0, 0, 9, 2, 218, 175, 81, 6, 109, 83, 0, 0, 0, 0, 0, 0, 9, 2, 216, 186, 51,
-			6, 110, 50, 0, 0, 9, 2, 218, 169, 49, 6, 109, 83, 0, 8, 2, 216, 185, 6, 110, 50, 0, 0, 9, 2, 216, 184, 88, 6, 109,
-			12, 0, 0, 0, 9, 2, 217, 190, 48, 6, 108, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 96, 6, 0, 0, 48, 0, 0, 0,
-			97, 6, 0, 0, 49, 0, 0, 0, 98, 6, 0, 0, 50, 0, 0, 0, 99, 6, 0, 0, 51, 0, 0, 0, 100, 6, 0, 0, 52, 0,
-			0, 0, 101, 6, 0, 0, 53, 0, 0, 0, 102, 6, 0, 0, 54, 0, 0, 0, 103, 6, 0, 0, 55, 0, 0, 0, 104, 6, 0, 0,
-			56, 0, 0, 0, 105, 6, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 217, 142, 0, 217, 144, 0, 217, 143, 0, 217, 139,
-			0, 217, 141, 0, 217, 136, 0, 216, 167, 0, 217, 135, 0, 219, 140, 0, 216, 169, 0, 217, 138, 0, 7, 6, 18, 67, 217, 142, 0, 217,
-			144, 0, 217, 143, 0, 7, 6, 18, 68, 216, 167, 0, 216, 168, 0, 217, 190, 0, 216, 170, 0, 216, 171, 0, 216, 172, 0, 218, 134, 0,
-			216, 173, 0, 216, 174, 0, 216, 175, 0, 216, 176, 0, 216, 177, 0, 216, 178, 0, 218, 152, 0, 216, 179, 0, 216, 180, 0, 216, 181, 0,
-			216, 182, 0, 216, 183, 0, 216, 184, 0, 216, 185, 0, 216, 186, 0, 217, 129, 0, 217, 130, 0, 218, 169, 0, 218, 175, 0, 217, 132, 0,
-			217, 133, 0, 217, 134, 0, 217, 136, 0, 217, 135, 0, 219, 140, 0, 7, 6, 1, 34, 0, 2, 18, 66, 3, 0, 3, 13, 0, 7, 6,
-			1, 35, 0, 3, 109, 0, 7, 6, 1, 40, 0, 8, 2, 18, 66, 3, 0, 217, 141, 3, 108, 50, 0, 4, 3, 109, 0, 2, 32, 0,
-			217, 139, 3, 109, 50, 0, 7, 6, 1, 41, 0, 4, 1, 18, 68, 2, 18, 68, 3, 71, 0, 2, 18, 66, 0, 2, 32, 0, 3, 71,
-			109, 0, 7, 6, 1, 42, 0, 2, 32, 3, 13, 0, 2, 18, 66, 3, 107, 0, 3, 107, 109, 0, 7, 6, 1, 43, 0, 4, 2, 18,
-			66, 3, 47, 0, 2, 32, 0, 3, 47, 109, 0, 7, 6, 1, 44, 0, 4, 2, 18, 66, 3, 89, 0, 2, 32, 0, 3, 89, 109, 0,
-			7, 6, 1, 45, 0, 4, 2, 18, 66, 3, 75, 0, 2, 32, 0, 3, 75, 109, 0, 7, 6, 1, 46, 0, 4, 2, 18, 66, 3, 107,
-			0, 2, 32, 0, 3, 107, 109, 0, 7, 6, 1, 47, 0, 4, 2, 18, 66, 3, 106, 0, 2, 32, 0, 3, 106, 109, 0, 7, 6, 1,
-			48, 0, 4, 2, 18, 66, 3, 72, 0, 2, 32, 0, 3, 72, 109, 0, 7, 6, 1, 49, 0, 4, 2, 18, 66, 3, 88, 0, 2, 32,
-			0, 3, 88, 109, 0, 7, 6, 1, 50, 0, 4, 2, 18, 66, 3, 51, 0, 2, 32, 0, 3, 51, 109, 0, 7, 6, 1, 51, 0, 4,
-			2, 18, 66, 3, 88, 0, 2, 32, 0, 3, 88, 109, 0, 7, 6, 1, 52, 0, 4, 1, 18, 67, 2, 18, 68, 3, 89, 0, 1, 18,
-			68, 2, 18, 68, 0, 2, 18, 66, 0, 2, 32, 0, 3, 89, 109, 0, 7, 6, 1, 53, 0, 4, 2, 18, 66, 3, 91, 0, 2, 32,
-			0, 3, 91, 109, 0, 7, 6, 1, 54, 0, 4, 2, 18, 66, 3, 89, 0, 2, 32, 0, 3, 89, 109, 0, 7, 6, 1, 55, 0, 4,
-			2, 18, 66, 3, 88, 0, 2, 32, 0, 3, 88, 109, 0, 7, 6, 1, 56, 0, 4, 2, 18, 66, 3, 47, 0, 2, 32, 0, 3, 47,
-			109, 0, 7, 6, 1, 57, 0, 4, 2, 18, 66, 3, 88, 0, 2, 32, 0, 3, 88, 109, 0, 7, 6, 1, 58, 0, 2, 18, 66, 3,
-			0, 2, 32, 3, 13, 9, 0, 3, 109, 0, 7, 6, 1, 59, 0, 4, 2, 18, 66, 3, 51, 0, 2, 32, 0, 3, 51, 109, 0, 7,
-			6, 1, 65, 0, 3, 0, 7, 6, 1, 66, 0, 4, 2, 18, 66, 3, 83, 0, 2, 32, 0, 3, 83, 109, 0, 7, 6, 1, 67, 0,
-			4, 2, 18, 66, 3, 51, 0, 2, 32, 0, 3, 51, 109, 0, 7, 6, 1, 69, 0, 4, 2, 18, 66, 3, 55, 0, 2, 32, 0, 3,
-			55, 109, 0, 7, 6, 1, 70, 0, 4, 2, 18, 66, 3, 65, 0, 2, 32, 0, 3, 65, 109, 0, 7, 6, 1, 71, 0, 4, 1, 18,
-			67, 2, 18, 68, 3, 50, 0, 1, 18, 68, 2, 18, 68, 0, 2, 18, 66, 0, 2, 32, 0, 3, 50, 109, 0, 7, 6, 1, 72, 0,
-			2, 32, 3, 13, 0, 2, 18, 66, 3, 107, 0, 3, 107, 109, 0, 7, 6, 1, 73, 0, 4, 1, 18, 68, 2, 18, 68, 3, 40, 0,
-			2, 32, 0, 2, 18, 66, 3, 84, 0, 3, 84, 109, 0, 7, 6, 1, 75, 0, 3, 37, 0, 8, 3, 57, 109, 0, 7, 6, 1, 79,
-			0, 3, 109, 0, 7, 6, 1, 80, 0, 3, 39, 0, 7, 6, 1, 81, 0, 3, 108, 0, 7, 6, 1, 82, 0, 3, 12, 0, 7, 6,
-			1, 127, 0, 4, 1, 18, 68, 2, 18, 68, 3, 48, 0, 2, 18, 66, 0, 2, 32, 0, 3, 48, 109, 0, 7, 6, 218, 134, 0, 4,
-			2, 18, 66, 3, 76, 0, 2, 32, 0, 3, 76, 109, 0, 7, 6, 218, 152, 0, 4, 2, 18, 66, 3, 90, 0, 2, 32, 0, 3, 90,
-			109, 0, 7, 6, 218, 169, 0, 4, 1, 18, 67, 2, 18, 68, 3, 49, 0, 1, 18, 68, 2, 18, 68, 0, 2, 18, 66, 0, 2, 32,
-			0, 3, 49, 109, 0, 7, 6, 218, 175, 0, 4, 2, 18, 66, 3, 81, 0, 2, 32, 0, 3, 81, 109, 0, 7, 6, 219, 140, 0, 3,
-			37, 0, 8, 3, 57, 109, 0, 7, 6, 0, 36, 3, 72, 39, 55, 13, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts51 = FileInMemory_createWithData (2569, reinterpret_cast<const char *> (&espeakdata_dicts51_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/prs_dict", 
-			U"prs");
-		Collection_addItem (me.peek(), espeakdata_dicts51.transfer());
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 136, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 16, 144, 76, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
+			8, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 193, 213, 56, 76, 0, 0, 0,
+			0, 0, 0, 4, 193, 148, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 20, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 51, 88, 47, 51, 6, 37, 50, 47, 35, 0, 0, 11, 3, 95, 48, 67, 89,
+			57, 6, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 156, 43, 0, 0,
+			0, 13, 3, 95, 49, 49, 72, 57, 36, 89, 6, 40, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 55, 88, 89, 36,
+			47, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 97, 99, 117, 89, 49, 109, 51, 48,
+			37, 0, 0, 0, 0, 5, 194, 52, 16, 8, 0, 11, 3, 95, 49, 88, 72, 57, 6, 36, 89, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+			194, 45, 80, 76, 28, 0, 12, 3, 95, 50, 88, 71, 6, 37, 50, 47, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 15, 3, 95, 52, 88, 49, 58, 35, 51, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 56, 16,
+			76, 0, 16, 3, 95, 53, 88, 89, 37, 50, 49, 58, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 54,
+			88, 89, 36, 89, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56,
+			88, 39, 76, 6, 36, 50, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 57, 88, 50, 39, 71, 6, 36, 50, 47, 35,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 168, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 50, 65, 37, 6, 39, 50,
+			0, 0, 11, 195, 44, 83, 128, 72, 28, 81, 115, 117, 32, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 37, 55, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 244, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
+			48, 240, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 5, 194, 80, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 4, 95, 103, 114, 118, 81, 51, 35, 84, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 77, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2,
+			195, 177, 36, 67, 36, 0, 0, 0, 7, 131, 195, 178, 102, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 35, 192,
+			76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 80, 16, 129, 80, 16, 76, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 83, 128, 76, 6, 195, 56, 19, 128, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 47, 51, 6, 36, 89, 0, 0, 9, 2, 95, 50, 72, 6, 39, 89, 0, 0, 9,
+			2, 95, 49, 6, 40, 50, 40, 0, 0, 10, 2, 95, 48, 88, 6, 36, 51, 39, 0, 0, 10, 2, 95, 55, 91, 6, 36, 47, 36, 0,
+			0, 10, 2, 95, 54, 89, 6, 109, 57, 89, 0, 0, 11, 2, 95, 53, 89, 6, 37, 50, 49, 40, 0, 0, 12, 2, 95, 52, 49, 58,
+			35, 47, 6, 36, 51, 0, 0, 0, 0, 11, 2, 95, 57, 50, 58, 6, 36, 71, 36, 0, 0, 9, 2, 95, 56, 6, 39, 76, 39, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 97, 35, 0, 0, 0, 0, 0, 6, 2, 95, 101, 36, 0, 0, 0, 0, 0, 6,
+			2, 95, 105, 37, 0, 0, 0, 6, 2, 95, 111, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 95,
+			121, 37, 81, 51, 6, 109, 49, 0, 49, 0, 4, 194, 80, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			5, 194, 84, 224, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 4, 210, 64, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 168, 0, 3, 6, 109, 0, 7, 6, 195, 177, 0, 3, 67, 0,
+			7, 6, 195, 178, 0, 3, 6, 110, 0, 7, 6, 195, 185, 0, 3, 113, 0, 105, 3, 113, 57, 0, 7, 6, 195, 188, 0, 3, 112, 0,
+			105, 3, 112, 57, 0, 7, 6, 97, 0, 3, 35, 0, 97, 3, 35, 12, 0, 105, 3, 117, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6,
+			99, 0, 3, 49, 0, 104, 3, 76, 0, 2, 17, 71, 3, 89, 0, 7, 6, 100, 0, 3, 72, 0, 106, 3, 75, 0, 7, 6, 101, 0,
+			3, 36, 0, 101, 3, 36, 12, 0, 117, 3, 36, 58, 0, 105, 3, 118, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 3,
+			81, 0, 117, 2, 17, 71, 0, 2, 17, 71, 3, 101, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 4, 1, 17,
+			65, 2, 25, 3, 57, 0, 2, 17, 65, 0, 106, 3, 118, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6,
+			108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 97, 110, 1, 10, 2, 32, 3, 50, 2, 35, 50,
+			0, 2, 32, 3, 68, 0, 7, 6, 111, 0, 3, 39, 0, 111, 3, 39, 12, 0, 117, 3, 39, 58, 0, 101, 3, 40, 0, 7, 6, 112,
+			0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 2, 17, 65, 3, 49, 58, 0, 117, 105, 3, 49, 58, 37, 0, 7, 6, 114, 0,
+			3, 51, 0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 40, 0, 105, 3,
+			40, 57, 0, 2, 17, 65, 3, 58, 0, 117, 3, 112, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120,
+			0, 3, 49, 89, 0, 8, 2, 17, 65, 3, 88, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0,
+			3, 88, 0, 106, 3, 90, 0, 7, 6, 0, 195, 161, 3, 7, 35, 0, 195, 169, 3, 7, 36, 0, 195, 173, 3, 7, 37, 0, 195, 179,
+			3, 7, 39, 0, 195, 186, 3, 7, 40, 0, 39, 3, 19, 0, 36, 3, 72, 110, 55, 110, 0, 195, 167, 3, 89, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts52 = FileInMemory_createWithData (2128, reinterpret_cast<const char *> (&espeakdata_dicts52_data), 
+			U"espeak-1.48.04-source/espeak-data/pap_dict", 
+			U"pap");
+		my addItem_move (espeakdata_dicts52.move());
 
-		static unsigned char espeakdata_dicts52_data[18253] = {
-			0, 4, 0, 0, 160, 47, 0, 0, 22, 69, 16, 84, 15, 37, 48, 72, 36, 48, 6, 136, 89, 49, 135, 0, 102, 81, 113, 117, 101, 32,
-			0, 9, 198, 52, 20, 148, 20, 195, 192, 20, 0, 0, 0, 0, 9, 198, 77, 81, 197, 72, 83, 64, 20, 8, 197, 12, 244, 150, 61, 48,
-			20, 9, 198, 12, 130, 78, 20, 195, 192, 20, 10, 135, 3, 1, 2, 5, 195, 167, 1, 21, 18, 70, 28, 245, 133, 72, 227, 192, 81, 39,
-			84, 6, 36, 34, 50, 111, 0, 37, 6, 65, 4, 35, 0, 14, 9, 198, 12, 243, 148, 84, 67, 192, 102, 8, 65, 4, 132, 0, 101, 76,
-			34, 5, 193, 4, 76, 34, 0, 0, 18, 70, 32, 20, 132, 92, 20, 133, 107, 6, 35, 34, 72, 58, 36, 14, 0, 102, 19, 70, 32, 20,
-			132, 92, 20, 133, 6, 35, 34, 72, 4, 58, 6, 109, 44, 0, 101, 0, 12, 68, 37, 48, 65, 12, 37, 88, 6, 132, 49, 0, 7, 196,
-			52, 147, 136, 4, 76, 0, 0, 17, 70, 8, 16, 203, 85, 4, 192, 71, 109, 49, 6, 132, 48, 89, 0, 102, 0, 9, 67, 53, 82, 64,
-			65, 58, 37, 0, 6, 195, 21, 80, 64, 17, 16, 67, 21, 64, 192, 4, 36, 123, 6, 109, 47, 36, 16, 132, 0, 102, 16, 67, 21, 64,
-			192, 4, 36, 123, 6, 109, 47, 12, 16, 132, 0, 101, 0, 0, 0, 0, 6, 195, 69, 81, 64, 72, 13, 4, 95, 8, 1, 3, 49, 35,
-			16, 6, 39, 68, 0, 0, 11, 68, 28, 21, 83, 76, 81, 6, 114, 89, 0, 6, 195, 32, 242, 133, 21, 0, 0, 0, 10, 199, 21, 53,
-			1, 72, 83, 79, 76, 72, 0, 0, 8, 197, 52, 243, 133, 72, 16, 20, 6, 65, 20, 109, 0, 14, 7, 65, 20, 37, 0, 102, 72, 7,
-			65, 20, 37, 0, 101, 72, 0, 9, 198, 16, 80, 129, 37, 131, 192, 102, 0, 16, 4, 95, 48, 67, 15, 89, 118, 68, 47, 6, 109, 88,
-			37, 65, 0, 0, 0, 0, 0, 0, 7, 196, 56, 81, 210, 60, 21, 7, 196, 40, 241, 213, 20, 20, 0, 8, 197, 64, 84, 209, 84, 80,
-			20, 0, 0, 16, 4, 95, 51, 88, 15, 47, 51, 37, 90, 6, 109, 88, 37, 65, 0, 0, 0, 0, 10, 198, 21, 128, 71, 21, 35, 192,
-			20, 36, 0, 0, 0, 0, 14, 1, 37, 48, 39, 34, 89, 6, 118, 68, 47, 111, 0, 27, 0, 8, 1, 38, 10, 6, 36, 10, 0, 0,
-			0, 14, 73, 64, 192, 89, 77, 64, 84, 36, 243, 128, 21, 0, 10, 0, 0, 7, 195, 64, 244, 128, 102, 72, 6, 195, 64, 244, 128, 72,
-			15, 1, 42, 132, 89, 47, 36, 16, 6, 37, 89, 49, 111, 0, 27, 0, 15, 68, 52, 81, 9, 4, 65, 6, 109, 72, 4, 37, 132, 0,
-			101, 8, 1, 43, 65, 117, 138, 0, 27, 0, 17, 69, 92, 17, 206, 21, 32, 84, 6, 35, 81, 124, 50, 36, 34, 0, 103, 15, 69, 92,
-			17, 206, 21, 32, 84, 6, 35, 81, 50, 36, 34, 0, 0, 0, 11, 1, 46, 48, 6, 39, 68, 47, 111, 0, 27, 0, 0, 0, 0, 0,
-			0, 8, 197, 28, 19, 5, 72, 16, 20, 13, 138, 5, 19, 20, 195, 161, 22, 1, 13, 15, 19, 72, 0, 9, 198, 77, 84, 15, 73, 67,
-			192, 20, 10, 135, 195, 169, 18, 1, 13, 15, 19, 72, 0, 0, 11, 67, 52, 83, 149, 65, 36, 50, 40, 0, 101, 0, 11, 69, 24, 81,
-			15, 72, 16, 21, 0, 101, 10, 8, 197, 76, 84, 137, 4, 208, 72, 9, 5, 95, 48, 1, 14, 4, 37, 0, 0, 0, 0, 0, 6, 65,
-			60, 110, 0, 14, 5, 193, 60, 76, 34, 0, 14, 1, 61, 10, 10, 37, 81, 58, 6, 132, 55, 10, 0, 27, 0, 0, 0, 6, 195, 69,
-			81, 82, 102, 10, 1, 64, 132, 101, 6, 39, 71, 132, 0, 0, 17, 70, 32, 19, 9, 76, 243, 128, 132, 55, 6, 37, 89, 132, 68, 0,
-			101, 0, 0, 6, 195, 16, 240, 197, 21, 0, 0, 0, 11, 67, 16, 240, 192, 72, 6, 110, 49, 0, 101, 0, 7, 196, 69, 81, 68, 4,
-			20, 0, 15, 69, 16, 80, 137, 4, 224, 72, 6, 109, 71, 57, 129, 68, 0, 0, 9, 198, 4, 193, 133, 72, 84, 192, 20, 0, 0, 0,
-			14, 69, 65, 149, 8, 60, 224, 48, 6, 117, 87, 129, 68, 0, 0, 14, 68, 77, 0, 67, 20, 89, 48, 6, 118, 89, 112, 0, 101, 0,
-			0, 6, 195, 80, 241, 193, 20, 0, 0, 11, 67, 48, 240, 203, 55, 6, 110, 49, 0, 101, 9, 198, 21, 53, 18, 60, 97, 64, 20, 0,
-			0, 24, 72, 21, 52, 5, 4, 177, 68, 37, 64, 37, 89, 48, 6, 37, 12, 49, 109, 72, 4, 37, 47, 0, 101, 7, 196, 13, 33, 68,
-			20, 21, 0, 16, 69, 92, 147, 132, 61, 112, 58, 6, 37, 68, 72, 39, 58, 0, 102, 17, 69, 92, 147, 132, 61, 112, 58, 6, 37, 68,
-			72, 6, 39, 40, 0, 101, 8, 197, 28, 83, 5, 36, 16, 20, 8, 197, 13, 33, 83, 12, 80, 20, 8, 197, 8, 243, 5, 36, 16, 20,
-			0, 8, 66, 85, 0, 132, 48, 0, 101, 0, 16, 4, 95, 49, 67, 15, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 21, 72, 61,
-			1, 78, 60, 97, 137, 12, 80, 6, 39, 48, 118, 68, 6, 110, 83, 37, 89, 0, 0, 6, 65, 88, 84, 36, 0, 0, 6, 194, 5, 48,
-			76, 34, 0, 0, 8, 196, 52, 243, 8, 60, 21, 37, 17, 4, 95, 49, 77, 52, 6, 128, 50, 47, 34, 37, 55, 57, 6, 130, 0, 0,
-			15, 69, 72, 243, 131, 32, 144, 34, 6, 110, 50, 99, 37, 12, 0, 8, 197, 52, 147, 136, 5, 48, 76, 0, 0, 0, 11, 200, 52, 19,
-			148, 37, 97, 82, 21, 48, 20, 0, 12, 4, 95, 49, 77, 49, 65, 6, 116, 10, 0, 102, 13, 4, 95, 49, 77, 49, 65, 6, 37, 55,
-			10, 0, 101, 7, 65, 96, 91, 37, 138, 0, 0, 6, 195, 84, 229, 19, 17, 15, 4, 95, 49, 77, 50, 6, 128, 65, 37, 55, 57, 6,
-			130, 0, 0, 16, 4, 95, 49, 77, 51, 6, 128, 65, 71, 37, 55, 57, 6, 130, 0, 0, 12, 68, 77, 1, 65, 44, 89, 48, 37, 12,
-			49, 0, 7, 196, 64, 83, 15, 76, 72, 0, 13, 67, 16, 245, 206, 72, 6, 35, 4, 58, 50, 0, 101, 0, 0, 11, 67, 100, 84, 192,
-			57, 6, 109, 89, 0, 101, 6, 195, 16, 244, 192, 72, 6, 195, 48, 244, 192, 72, 0, 12, 137, 20, 9, 22, 195, 169, 18, 5, 9, 19,
-			72, 0, 0, 0, 10, 199, 64, 241, 5, 72, 83, 79, 76, 76, 0, 0, 0, 9, 198, 4, 193, 213, 52, 20, 192, 72, 6, 195, 12, 20,
-			207, 102, 0, 0, 6, 195, 64, 244, 197, 21, 7, 196, 80, 83, 136, 60, 72, 0, 0, 9, 198, 56, 20, 85, 20, 193, 64, 21, 18, 70,
-			16, 20, 85, 20, 193, 64, 72, 132, 49, 6, 36, 55, 112, 0, 76, 34, 5, 194, 4, 80, 17, 0, 0, 0, 0, 12, 67, 48, 241, 207,
-			55, 6, 110, 81, 111, 0, 102, 19, 67, 48, 241, 207, 55, 6, 110, 81, 40, 49, 135, 0, 102, 81, 113, 117, 101, 32, 0, 0, 0, 0,
-			0, 0, 15, 68, 21, 128, 197, 48, 4, 109, 49, 89, 6, 109, 55, 0, 101, 14, 68, 25, 32, 77, 20, 83, 51, 6, 118, 65, 37, 0,
-			102, 14, 68, 25, 32, 77, 20, 83, 34, 6, 118, 65, 112, 0, 101, 0, 9, 198, 64, 244, 148, 4, 229, 15, 102, 0, 0, 14, 67, 84,
-			226, 88, 57, 6, 40, 50, 37, 49, 89, 0, 102, 15, 67, 84, 226, 88, 4, 40, 12, 50, 6, 37, 49, 89, 0, 101, 0, 7, 196, 76,
-			240, 133, 52, 20, 0, 16, 69, 64, 147, 210, 21, 48, 48, 37, 6, 110, 16, 37, 89, 0, 102, 0, 10, 198, 20, 212, 18, 20, 115, 192,
-			21, 37, 9, 198, 12, 128, 77, 20, 115, 192, 21, 0, 0, 0, 0, 0, 7, 195, 77, 32, 64, 102, 24, 18, 67, 77, 32, 64, 4, 109,
-			95, 6, 109, 34, 34, 57, 6, 35, 0, 101, 24, 0, 7, 196, 64, 241, 5, 72, 76, 7, 196, 80, 147, 136, 4, 72, 0, 0, 19, 70,
-			21, 132, 18, 21, 52, 192, 4, 109, 49, 89, 48, 34, 6, 109, 89, 0, 101, 9, 198, 16, 84, 195, 61, 96, 64, 21, 0, 9, 198, 20,
-			229, 77, 21, 33, 77, 20, 0, 6, 195, 72, 81, 5, 21, 0, 0, 0, 9, 198, 21, 66, 81, 84, 85, 1, 21, 0, 11, 4, 95, 49,
-			67, 48, 89, 6, 118, 68, 0, 0, 10, 198, 72, 81, 146, 21, 48, 207, 20, 36, 0, 6, 194, 16, 16, 72, 34, 0, 0, 0, 8, 197,
-			21, 53, 9, 88, 80, 72, 0, 7, 195, 104, 83, 15, 20, 36, 0, 11, 67, 16, 21, 0, 72, 6, 35, 47, 0, 101, 9, 198, 81, 32,
-			81, 84, 82, 65, 20, 18, 4, 95, 50, 67, 15, 72, 40, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 7, 196, 104, 244, 146, 4,
-			21, 0, 0, 0, 0, 7, 196, 64, 241, 5, 52, 76, 0, 0, 19, 70, 36, 229, 18, 4, 225, 84, 37, 68, 47, 51, 35, 50, 6, 109,
-			47, 0, 102, 0, 0, 11, 67, 56, 83, 5, 50, 36, 55, 112, 0, 77, 0, 8, 197, 21, 53, 1, 37, 48, 72, 0, 9, 198, 72, 83,
-			79, 73, 51, 192, 20, 0, 0, 13, 68, 100, 18, 15, 60, 37, 35, 107, 6, 40, 0, 102, 15, 68, 100, 18, 15, 60, 6, 37, 4, 35,
-			107, 6, 40, 0, 101, 7, 196, 5, 1, 71, 60, 21, 0, 0, 10, 198, 76, 83, 136, 61, 32, 64, 101, 21, 9, 198, 12, 19, 148, 61,
-			32, 64, 21, 6, 195, 8, 83, 15, 20, 0, 13, 67, 56, 86, 20, 50, 6, 109, 49, 89, 47, 0, 101, 0, 7, 196, 24, 80, 146, 20,
-			20, 0, 12, 201, 21, 52, 9, 72, 244, 85, 21, 64, 64, 21, 0, 9, 198, 76, 147, 131, 21, 32, 64, 20, 5, 194, 17, 32, 24, 0,
-			0, 13, 68, 56, 84, 211, 20, 50, 6, 36, 89, 112, 0, 76, 0, 15, 69, 32, 149, 12, 21, 32, 107, 6, 37, 47, 55, 36, 34, 0,
-			16, 69, 72, 80, 68, 21, 32, 34, 6, 37, 72, 4, 132, 44, 0, 101, 0, 0, 0, 0, 0, 0, 0, 7, 196, 29, 33, 71, 60, 21,
-			16, 68, 56, 84, 212, 20, 50, 6, 36, 89, 76, 37, 0, 102, 76, 34, 0, 0, 6, 195, 52, 241, 15, 20, 0, 10, 199, 64, 17, 5,
-			12, 84, 212, 20, 21, 0, 0, 16, 69, 36, 229, 133, 40, 16, 37, 68, 84, 6, 109, 90, 132, 0, 102, 0, 0, 0, 6, 131, 8, 195,
-			161, 76, 20, 68, 76, 19, 22, 60, 89, 6, 35, 55, 84, 40, 89, 135, 0, 102, 81, 115, 101, 32, 14, 68, 56, 244, 211, 4, 50, 6,
-			110, 89, 132, 0, 102, 76, 0, 0, 0, 0, 10, 135, 5, 24, 16, 5, 195, 167, 1, 21, 0, 0, 0, 0, 14, 68, 52, 83, 143, 72,
-			65, 36, 50, 6, 110, 34, 0, 102, 14, 68, 52, 83, 143, 72, 65, 112, 50, 6, 110, 44, 0, 101, 0, 0, 0, 9, 198, 12, 16, 200,
-			61, 36, 129, 21, 0, 7, 196, 12, 241, 146, 20, 20, 0, 0, 19, 70, 16, 245, 206, 48, 240, 68, 72, 35, 128, 68, 55, 6, 39, 58,
-			72, 0, 103, 18, 70, 16, 245, 206, 48, 240, 68, 72, 114, 68, 55, 6, 39, 58, 72, 0, 102, 21, 70, 16, 245, 206, 48, 240, 68, 72,
-			6, 35, 4, 58, 50, 55, 6, 39, 40, 72, 0, 101, 0, 0, 15, 68, 48, 147, 149, 96, 55, 6, 37, 50, 111, 49, 89, 0, 102, 16,
-			68, 48, 147, 149, 96, 55, 4, 37, 50, 6, 40, 49, 89, 0, 101, 0, 0, 15, 70, 8, 16, 130, 4, 113, 64, 71, 6, 35, 71, 37,
-			75, 0, 10, 135, 5, 24, 16, 5, 195, 167, 15, 21, 0, 0, 7, 196, 5, 1, 68, 88, 17, 0, 0, 5, 194, 16, 80, 72, 0, 0,
-			0, 0, 0, 9, 198, 60, 66, 83, 76, 82, 65, 20, 19, 4, 95, 51, 67, 15, 47, 51, 37, 89, 118, 68, 47, 6, 109, 88, 37, 65,
-			0, 0, 17, 70, 32, 245, 13, 4, 147, 0, 107, 39, 47, 65, 6, 118, 55, 0, 102, 18, 70, 32, 245, 13, 4, 147, 0, 107, 6, 110,
-			47, 65, 6, 118, 55, 0, 101, 16, 4, 95, 4, 16, 20, 10, 84, 6, 37, 34, 81, 40, 55, 132, 0, 0, 0, 0, 0, 7, 196, 24,
-			243, 7, 4, 20, 0, 0, 9, 198, 21, 48, 210, 61, 67, 192, 21, 0, 0, 12, 67, 80, 147, 69, 47, 6, 117, 65, 112, 0, 101, 11,
-			200, 21, 53, 9, 88, 84, 132, 21, 48, 20, 7, 196, 17, 35, 199, 4, 20, 0, 8, 197, 64, 244, 131, 61, 48, 20, 0, 0, 0, 9,
-			3, 95, 35, 57, 47, 35, 71, 0, 11, 4, 95, 20, 12, 4, 47, 37, 55, 0, 101, 10, 4, 95, 20, 12, 4, 76, 6, 116, 0, 0,
-			0, 6, 195, 20, 68, 0, 17, 0, 19, 71, 48, 21, 143, 37, 50, 69, 72, 55, 35, 84, 58, 35, 88, 57, 6, 36, 0, 11, 67, 4,
-			197, 0, 6, 35, 55, 47, 0, 101, 10, 199, 12, 20, 129, 13, 65, 82, 20, 20, 10, 199, 12, 17, 5, 72, 225, 84, 4, 21, 7, 195,
-			84, 228, 192, 72, 34, 0, 0, 0, 25, 12, 19, 3, 8, 18, 195, 182, 4, 9, 14, 7, 5, 18, 91, 34, 6, 36, 72, 37, 50, 81,
-			36, 34, 0, 9, 198, 21, 52, 5, 72, 208, 64, 20, 0, 0, 0, 15, 69, 64, 192, 89, 21, 32, 48, 55, 6, 118, 132, 44, 0, 101,
-			0, 0, 11, 136, 1, 4, 5, 18, 5, 195, 167, 15, 21, 0, 14, 68, 64, 21, 83, 20, 48, 6, 35, 40, 12, 88, 0, 101, 13, 137,
-			18, 5, 3, 15, 13, 5, 195, 167, 15, 21, 37, 8, 196, 16, 240, 146, 60, 21, 37, 0, 0, 0, 0, 8, 196, 56, 244, 211, 60, 102,
-			76, 0, 8, 197, 64, 83, 5, 28, 240, 21, 8, 197, 52, 19, 5, 80, 16, 21, 0, 9, 198, 21, 53, 1, 72, 82, 64, 72, 0, 9,
-			198, 12, 81, 129, 48, 82, 65, 20, 0, 11, 68, 48, 245, 73, 76, 21, 102, 114, 0, 10, 0, 8, 197, 76, 244, 18, 20, 208, 20, 9,
-			197, 21, 52, 5, 80, 240, 21, 37, 8, 197, 80, 147, 136, 4, 208, 72, 0, 17, 7, 1, 12, 13, 15, 195, 167, 15, 114, 65, 6, 110,
-			89, 111, 0, 36, 6, 194, 21, 80, 76, 32, 0, 0, 0, 9, 134, 16, 18, 5, 195, 167, 15, 21, 8, 197, 4, 193, 213, 57, 48, 72,
-			0, 10, 135, 1, 16, 18, 5, 195, 167, 15, 21, 9, 198, 80, 149, 133, 72, 19, 64, 72, 9, 198, 80, 149, 133, 72, 19, 64, 72, 0,
-			0, 12, 68, 25, 33, 85, 16, 83, 34, 6, 136, 72, 0, 18, 70, 20, 147, 147, 80, 82, 78, 11, 6, 117, 50, 91, 47, 4, 117, 50,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 80, 16, 128, 47, 6, 35, 71, 0, 101, 6, 195, 5, 96, 192, 17, 0, 7, 196, 52,
-			244, 132, 4, 21, 7, 196, 48, 84, 132, 4, 20, 7, 196, 28, 244, 132, 4, 21, 7, 196, 57, 83, 65, 76, 72, 0, 16, 69, 76, 52,
-			143, 48, 192, 89, 49, 12, 34, 6, 39, 55, 0, 101, 0, 0, 9, 67, 61, 33, 192, 110, 34, 81, 0, 0, 0, 0, 0, 10, 199, 21,
-			52, 85, 20, 193, 84, 60, 21, 0, 13, 68, 52, 245, 83, 20, 65, 6, 114, 88, 37, 0, 102, 0, 0, 5, 194, 4, 240, 72, 0, 6,
-			195, 25, 82, 64, 72, 6, 195, 61, 50, 64, 17, 0, 7, 196, 64, 244, 211, 60, 76, 0, 15, 69, 21, 52, 5, 4, 176, 37, 89, 48,
-			6, 37, 12, 49, 0, 8, 197, 20, 208, 143, 72, 16, 102, 22, 4, 95, 52, 67, 15, 49, 58, 35, 72, 16, 37, 90, 118, 68, 47, 6,
-			109, 88, 37, 65, 0, 0, 17, 70, 48, 82, 66, 56, 150, 128, 55, 6, 117, 71, 50, 37, 12, 123, 0, 0, 0, 0, 9, 198, 9, 35,
-			205, 20, 194, 1, 20, 8, 197, 80, 149, 133, 72, 16, 72, 0, 19, 70, 72, 146, 142, 16, 17, 76, 101, 6, 35, 37, 50, 38, 72, 6,
-			35, 55, 0, 6, 195, 57, 83, 65, 72, 16, 5, 95, 48, 77, 49, 15, 65, 37, 55, 6, 109, 88, 37, 65, 0, 0, 6, 195, 57, 83,
-			64, 72, 0, 7, 196, 25, 33, 86, 60, 21, 12, 67, 60, 194, 15, 6, 39, 61, 111, 0, 104, 37, 13, 67, 60, 194, 15, 6, 39, 55,
-			57, 111, 0, 102, 37, 0, 19, 4, 95, 55, 88, 15, 89, 36, 48, 47, 58, 35, 90, 6, 109, 88, 37, 65, 0, 0, 12, 67, 48, 147,
-			133, 55, 6, 35, 37, 50, 0, 101, 9, 198, 64, 84, 209, 84, 83, 64, 20, 18, 70, 72, 85, 15, 72, 227, 192, 101, 36, 47, 6, 110,
-			34, 50, 111, 0, 36, 0, 0, 6, 195, 17, 3, 195, 17, 0, 0, 17, 70, 77, 65, 80, 32, 83, 128, 89, 47, 6, 37, 12, 84, 13,
-			50, 0, 13, 66, 16, 160, 72, 4, 37, 12, 75, 6, 118, 0, 101, 6, 195, 24, 84, 129, 20, 19, 67, 64, 20, 129, 48, 4, 35, 16,
-			132, 49, 135, 0, 102, 81, 113, 117, 101, 32, 6, 195, 64, 20, 129, 72, 0, 0, 0, 16, 70, 88, 243, 20, 4, 148, 133, 84, 110, 55,
-			47, 6, 109, 34, 0, 16, 69, 85, 3, 15, 4, 64, 132, 48, 55, 6, 39, 40, 72, 0, 101, 18, 70, 76, 241, 148, 92, 20, 133, 89,
-			6, 110, 83, 47, 58, 36, 14, 0, 102, 20, 70, 76, 241, 148, 92, 20, 133, 89, 6, 110, 83, 47, 4, 58, 6, 109, 44, 0, 101, 17,
-			69, 12, 19, 131, 20, 192, 49, 6, 132, 50, 89, 6, 109, 55, 0, 101, 9, 198, 4, 194, 67, 21, 32, 197, 20, 0, 17, 70, 8, 84,
-			142, 32, 20, 132, 71, 36, 34, 50, 6, 35, 34, 72, 0, 6, 195, 24, 84, 133, 20, 0, 0, 7, 196, 17, 83, 65, 76, 72, 0, 0,
-			18, 70, 21, 53, 9, 88, 84, 128, 36, 89, 76, 37, 84, 6, 109, 34, 0, 72, 0, 0, 0, 0, 12, 67, 48, 149, 133, 55, 6, 35,
-			37, 84, 0, 101, 6, 195, 80, 149, 133, 72, 0, 6, 195, 32, 149, 128, 17, 0, 12, 67, 56, 84, 143, 50, 6, 109, 34, 40, 0, 101,
-			7, 196, 80, 84, 133, 36, 72, 7, 196, 76, 84, 133, 36, 72, 0, 11, 136, 6, 195, 180, 13, 1, 13, 15, 19, 72, 0, 0, 0, 15,
-			68, 64, 83, 1, 76, 48, 6, 36, 55, 132, 89, 0, 102, 72, 7, 196, 16, 83, 5, 76, 76, 0, 9, 198, 29, 35, 211, 20, 194, 1,
-			20, 9, 197, 4, 49, 82, 80, 240, 21, 37, 0, 0, 0, 8, 196, 81, 35, 195, 60, 21, 37, 0, 9, 197, 4, 35, 210, 80, 240, 20,
-			36, 0, 0, 0, 0, 8, 197, 64, 244, 148, 61, 48, 20, 0, 0, 20, 70, 77, 3, 210, 80, 147, 135, 89, 48, 6, 110, 34, 47, 4,
-			37, 50, 81, 0, 101, 0, 7, 196, 24, 244, 131, 4, 21, 8, 196, 12, 84, 131, 4, 20, 36, 12, 137, 1, 14, 15, 9, 20, 5, 195,
-			167, 1, 21, 0, 11, 136, 20, 195, 173, 14, 8, 5, 9, 19, 72, 0, 9, 198, 76, 147, 131, 21, 35, 192, 20, 10, 135, 5, 19, 20,
-			1, 18, 195, 161, 72, 0, 0, 14, 68, 20, 197, 15, 56, 6, 109, 55, 47, 132, 68, 0, 101, 10, 135, 6, 195, 180, 18, 5, 9, 19,
-			72, 0, 0, 17, 70, 52, 18, 79, 72, 84, 192, 65, 117, 6, 110, 16, 37, 89, 0, 102, 9, 198, 5, 68, 143, 104, 84, 192, 20, 0,
-			0, 27, 11, 20, 5, 12, 5, 13, 195, 179, 22, 5, 9, 19, 47, 4, 109, 55, 4, 109, 65, 6, 110, 84, 118, 138, 0, 101, 8, 196,
-			5, 3, 201, 60, 20, 36, 13, 3, 95, 49, 15, 48, 51, 37, 65, 6, 118, 16, 0, 0, 0, 6, 195, 57, 97, 1, 17, 0, 10, 199,
-			21, 53, 9, 88, 84, 133, 76, 20, 10, 3, 226, 130, 172, 6, 115, 16, 111, 0, 0, 6, 195, 8, 80, 207, 21, 6, 195, 57, 83, 147,
-			72, 0, 0, 10, 67, 64, 17, 197, 48, 6, 118, 75, 0, 12, 137, 1, 14, 15, 9, 20, 5, 195, 167, 15, 21, 0, 0, 7, 196, 48,
-			84, 132, 60, 20, 13, 3, 95, 50, 15, 89, 36, 81, 6, 128, 68, 72, 0, 0, 12, 67, 64, 147, 210, 48, 37, 6, 110, 34, 0, 102,
-			0, 12, 137, 20, 195, 173, 14, 8, 1, 13, 15, 19, 72, 0, 0, 7, 196, 16, 83, 1, 76, 76, 20, 6, 16, 18, 15, 6, 194, 170,
-			48, 51, 4, 39, 83, 36, 89, 6, 39, 16, 132, 0, 0, 8, 197, 64, 244, 145, 84, 80, 102, 19, 4, 95, 53, 67, 15, 49, 37, 68,
-			90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 0, 7, 196, 64, 84, 132, 20, 20, 11, 200, 12, 243, 136, 20, 49, 83, 80, 80,
-			21, 14, 3, 95, 51, 15, 47, 36, 16, 14, 89, 6, 118, 16, 0, 8, 4, 95, 15, 18, 4, 39, 0, 0, 0, 0, 0, 6, 195, 104,
-			84, 143, 20, 0, 0, 0, 0, 7, 196, 88, 84, 130, 60, 20, 8, 196, 29, 35, 218, 60, 20, 36, 7, 196, 24, 84, 133, 52, 20, 0,
-			0, 0, 10, 199, 21, 53, 9, 88, 84, 129, 52, 72, 6, 195, 4, 244, 192, 72, 0, 7, 196, 48, 244, 5, 76, 20, 0, 0, 9, 198,
-			12, 243, 69, 72, 84, 192, 21, 0, 6, 195, 16, 20, 192, 72, 6, 195, 48, 20, 192, 72, 0, 11, 3, 95, 53, 15, 49, 6, 37, 68,
-			47, 0, 0, 16, 69, 56, 83, 19, 60, 224, 50, 6, 109, 55, 89, 132, 68, 0, 101, 0, 14, 4, 95, 13, 3, 14, 65, 35, 49, 51,
-			6, 39, 68, 0, 0, 0, 0, 12, 201, 52, 19, 148, 37, 97, 82, 16, 84, 192, 20, 0, 0, 0, 7, 196, 76, 84, 137, 4, 72, 11,
-			3, 95, 54, 15, 89, 6, 36, 89, 47, 0, 0, 0, 17, 70, 9, 32, 73, 48, 193, 64, 71, 51, 6, 35, 37, 55, 37, 0, 102, 18,
-			70, 9, 32, 73, 48, 193, 64, 71, 12, 34, 6, 35, 37, 55, 112, 0, 101, 5, 194, 20, 208, 72, 6, 194, 16, 240, 72, 34, 0, 0,
-			0, 8, 197, 52, 244, 133, 36, 16, 20, 0, 0, 0, 7, 196, 24, 244, 133, 76, 21, 8, 196, 12, 84, 131, 60, 20, 36, 12, 3, 95,
-			55, 15, 89, 6, 109, 76, 37, 65, 0, 0, 0, 0, 0, 0, 8, 197, 4, 211, 210, 21, 48, 21, 0, 0, 0, 7, 196, 8, 244, 132,
-			60, 20, 11, 200, 4, 192, 129, 81, 35, 218, 21, 48, 20, 12, 68, 24, 244, 129, 52, 83, 39, 16, 130, 0, 73, 0, 11, 67, 20, 225,
-			0, 6, 36, 50, 72, 0, 101, 0, 0, 6, 195, 65, 32, 64, 72, 13, 3, 95, 51, 88, 47, 51, 6, 37, 68, 47, 132, 0, 0, 7,
-			195, 76, 83, 15, 20, 36, 19, 6, 16, 18, 15, 6, 194, 186, 48, 51, 4, 39, 83, 36, 89, 6, 39, 34, 0, 14, 3, 95, 48, 67,
-			89, 6, 118, 68, 47, 111, 138, 0, 102, 14, 3, 95, 48, 67, 89, 6, 118, 68, 47, 40, 138, 0, 101, 0, 0, 0, 21, 71, 12, 193,
-			86, 21, 36, 207, 56, 49, 55, 6, 109, 84, 36, 34, 89, 39, 68, 0, 102, 21, 71, 12, 193, 86, 21, 36, 207, 56, 49, 55, 6, 109,
-			84, 112, 34, 89, 132, 68, 0, 101, 6, 195, 17, 32, 64, 24, 0, 8, 196, 76, 240, 146, 20, 101, 21, 14, 68, 76, 240, 146, 20, 89,
-			6, 39, 71, 51, 112, 0, 102, 10, 3, 95, 57, 15, 50, 6, 39, 50, 0, 0, 17, 69, 16, 84, 201, 28, 224, 72, 4, 37, 88, 6,
-			35, 37, 50, 0, 101, 0, 0, 18, 71, 76, 192, 67, 45, 112, 82, 20, 89, 55, 6, 35, 49, 58, 36, 14, 0, 7, 132, 20, 195, 170,
-			13, 72, 0, 13, 67, 53, 1, 71, 4, 109, 65, 48, 6, 109, 81, 0, 12, 3, 95, 49, 67, 89, 6, 118, 68, 47, 40, 0, 0, 9,
-			198, 21, 48, 207, 64, 85, 1, 21, 0, 0, 10, 199, 76, 80, 143, 73, 33, 73, 4, 20, 0, 0, 0, 9, 198, 12, 20, 197, 9, 33,
-			64, 20, 5, 194, 48, 16, 72, 8, 4, 95, 35, 194, 170, 132, 0, 16, 3, 95, 49, 57, 72, 36, 88, 36, 50, 6, 110, 84, 112, 0,
-			102, 16, 3, 95, 49, 57, 72, 112, 88, 132, 50, 6, 110, 84, 112, 0, 101, 0, 14, 3, 95, 49, 56, 72, 36, 88, 6, 120, 47, 40,
-			0, 102, 15, 3, 95, 49, 56, 72, 112, 88, 6, 110, 37, 47, 40, 0, 101, 0, 16, 3, 95, 50, 67, 72, 40, 88, 6, 118, 68, 47,
-			111, 88, 0, 102, 16, 3, 95, 50, 67, 72, 40, 88, 6, 118, 68, 47, 40, 138, 0, 101, 0, 8, 197, 40, 241, 213, 20, 208, 20, 18,
-			4, 95, 54, 67, 15, 89, 118, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 0, 7, 195, 28, 83, 15, 20, 36, 6, 195, 8,
-			243, 15, 21, 0, 8, 197, 29, 35, 211, 76, 240, 21, 16, 69, 21, 53, 5, 88, 80, 36, 89, 47, 36, 84, 112, 0, 102, 74, 0, 11,
-			3, 95, 49, 49, 6, 39, 68, 88, 112, 0, 0, 10, 3, 95, 49, 48, 72, 6, 109, 138, 0, 0, 7, 196, 5, 52, 201, 52, 102, 17,
-			3, 95, 51, 67, 47, 51, 36, 88, 6, 36, 68, 47, 111, 88, 0, 102, 17, 3, 95, 51, 67, 47, 34, 112, 88, 6, 36, 68, 47, 40,
-			138, 0, 101, 13, 3, 95, 49, 51, 47, 51, 6, 36, 88, 37, 0, 102, 13, 3, 95, 49, 51, 47, 34, 6, 36, 88, 112, 0, 101, 0,
-			8, 197, 80, 84, 133, 37, 48, 72, 8, 197, 76, 84, 133, 37, 48, 72, 13, 4, 95, 49, 88, 15, 72, 6, 109, 89, 37, 65, 0, 11,
-			3, 95, 49, 50, 72, 6, 39, 88, 112, 0, 0, 12, 3, 95, 49, 53, 49, 6, 37, 68, 88, 112, 0, 0, 15, 3, 95, 49, 52, 49,
-			35, 47, 6, 39, 34, 88, 112, 0, 102, 15, 3, 95, 49, 52, 49, 132, 47, 6, 39, 34, 88, 112, 0, 101, 0, 6, 195, 4, 145, 19,
-			17, 13, 3, 95, 52, 15, 49, 58, 6, 35, 16, 14, 47, 0, 17, 3, 95, 49, 55, 72, 4, 36, 88, 36, 89, 6, 109, 76, 112, 0,
-			102, 16, 3, 95, 49, 55, 72, 112, 88, 132, 89, 6, 109, 47, 112, 0, 101, 0, 16, 3, 95, 49, 54, 72, 4, 36, 88, 36, 89, 6,
-			118, 138, 0, 102, 16, 3, 95, 49, 54, 72, 112, 88, 132, 89, 6, 36, 37, 138, 0, 101, 0, 8, 4, 95, 35, 194, 186, 111, 0, 0,
-			15, 3, 95, 55, 88, 89, 36, 47, 6, 118, 68, 47, 132, 0, 102, 15, 3, 95, 55, 88, 89, 112, 47, 6, 118, 68, 47, 132, 0, 101,
-			0, 7, 196, 80, 149, 133, 72, 20, 0, 0, 9, 198, 64, 148, 149, 21, 64, 64, 21, 9, 198, 4, 193, 207, 104, 84, 192, 20, 0, 0,
-			0, 0, 9, 198, 13, 32, 84, 21, 32, 64, 20, 9, 198, 5, 84, 212, 21, 32, 64, 20, 0, 0, 7, 196, 64, 241, 9, 4, 76, 16,
-			3, 95, 53, 67, 49, 37, 67, 6, 118, 68, 47, 111, 88, 0, 102, 16, 3, 95, 53, 67, 49, 37, 67, 6, 118, 68, 47, 40, 138, 0,
-			101, 0, 0, 0, 0, 6, 195, 61, 52, 207, 21, 0, 14, 69, 48, 22, 79, 85, 64, 55, 6, 118, 4, 114, 47, 0, 16, 69, 12, 243,
-			8, 21, 32, 49, 39, 61, 6, 109, 34, 0, 104, 37, 17, 69, 12, 243, 8, 21, 32, 49, 39, 55, 57, 6, 109, 34, 0, 102, 37, 0,
-			9, 198, 72, 84, 207, 49, 97, 64, 20, 12, 137, 16, 15, 4, 195, 173, 1, 13, 15, 19, 76, 0, 13, 138, 20, 9, 22, 195, 169, 18,
-			1, 13, 15, 19, 72, 6, 195, 52, 19, 0, 102, 6, 195, 4, 20, 16, 17, 0, 6, 195, 65, 32, 83, 72, 11, 3, 1, 46, 3, 6,
-			35, 89, 6, 36, 0, 0, 9, 198, 72, 84, 207, 49, 97, 77, 20, 0, 12, 137, 19, 5, 18, 195, 173, 1, 13, 15, 19, 72, 0, 21,
-			71, 44, 193, 86, 21, 36, 207, 56, 49, 55, 6, 109, 84, 36, 34, 89, 132, 68, 0, 101, 8, 132, 1, 20, 195, 169, 102, 72, 0, 11,
-			200, 5, 4, 133, 56, 65, 83, 80, 80, 21, 21, 68, 4, 229, 5, 76, 6, 129, 68, 76, 37, 89, 49, 135, 0, 102, 81, 113, 117, 101,
-			32, 0, 9, 198, 12, 245, 66, 21, 33, 77, 20, 21, 69, 21, 128, 197, 80, 240, 36, 89, 6, 109, 47, 40, 89, 135, 0, 102, 81, 115,
-			101, 32, 0, 0, 13, 3, 95, 50, 88, 84, 6, 37, 68, 76, 112, 0, 102, 13, 3, 95, 50, 88, 84, 6, 37, 68, 47, 112, 0, 101,
-			0, 0, 0, 16, 70, 72, 145, 77, 4, 227, 128, 34, 6, 37, 12, 65, 35, 50, 0, 0, 9, 198, 12, 245, 66, 21, 33, 83, 20, 0,
-			11, 3, 95, 56, 15, 120, 47, 6, 35, 84, 0, 0, 8, 197, 5, 1, 78, 5, 48, 102, 17, 69, 56, 84, 212, 21, 48, 50, 6, 36,
-			89, 76, 37, 89, 0, 102, 76, 0, 0, 19, 71, 25, 34, 69, 17, 34, 67, 32, 83, 34, 6, 37, 12, 72, 34, 37, 91, 0, 0, 14,
-			68, 25, 35, 206, 80, 83, 34, 6, 39, 50, 47, 0, 101, 7, 196, 24, 22, 133, 72, 76, 0, 0, 0, 0, 7, 196, 76, 241, 146, 20,
-			20, 15, 3, 95, 63, 63, 89, 6, 37, 65, 71, 39, 55, 111, 10, 0, 0, 11, 4, 14, 195, 163, 15, 50, 4, 130, 0, 11, 0, 5,
-			194, 53, 32, 24, 0, 14, 5, 22, 15, 3, 195, 170, 84, 39, 89, 6, 36, 0, 76, 16, 3, 95, 52, 88, 49, 58, 35, 16, 6, 118,
-			68, 47, 132, 0, 102, 16, 3, 95, 52, 88, 49, 58, 132, 16, 6, 36, 68, 47, 132, 0, 101, 0, 0, 0, 0, 0, 8, 196, 24, 244,
-			146, 60, 20, 36, 0, 0, 5, 194, 56, 16, 72, 0, 16, 3, 95, 53, 88, 89, 37, 68, 49, 58, 6, 118, 68, 47, 132, 0, 0, 7,
-			196, 64, 81, 18, 4, 20, 0, 9, 197, 20, 228, 133, 16, 240, 20, 36, 21, 4, 95, 55, 67, 15, 89, 36, 48, 76, 37, 90, 118, 68,
-			47, 6, 109, 88, 37, 65, 0, 0, 0, 6, 195, 24, 242, 64, 72, 0, 0, 15, 69, 60, 97, 137, 12, 80, 6, 110, 83, 4, 37, 89,
-			0, 101, 9, 198, 21, 34, 84, 72, 82, 65, 20, 8, 197, 5, 21, 69, 48, 16, 76, 0, 0, 15, 3, 95, 54, 88, 89, 36, 89, 6,
-			118, 68, 47, 132, 0, 102, 15, 3, 95, 54, 88, 89, 112, 89, 6, 118, 68, 47, 132, 0, 101, 0, 0, 15, 4, 95, 50, 88, 15, 84,
-			37, 90, 6, 109, 88, 37, 65, 0, 0, 0, 6, 195, 76, 83, 64, 102, 0, 7, 196, 24, 22, 133, 52, 76, 0, 17, 7, 11, 18, 195,
-			188, 7, 5, 18, 49, 51, 6, 37, 90, 36, 34, 0, 0, 0, 9, 198, 53, 83, 8, 21, 33, 83, 20, 0, 13, 68, 77, 65, 86, 20,
-			89, 47, 6, 37, 12, 84, 0, 7, 196, 65, 33, 84, 4, 21, 7, 196, 52, 241, 15, 76, 20, 0, 0, 9, 198, 21, 3, 208, 20, 144,
-			64, 20, 9, 198, 80, 241, 1, 88, 144, 64, 102, 0, 0, 14, 68, 53, 82, 84, 4, 65, 58, 6, 37, 68, 47, 132, 0, 7, 196, 52,
-			84, 132, 4, 20, 7, 196, 24, 86, 133, 76, 20, 0, 0, 18, 70, 36, 228, 212, 4, 195, 0, 4, 37, 50, 89, 47, 6, 35, 55, 0,
-			101, 0, 10, 67, 52, 18, 76, 65, 6, 118, 55, 0, 17, 67, 13, 68, 140, 49, 6, 39, 68, 47, 12, 34, 4, 110, 55, 0, 101, 9,
-			134, 20, 5, 18, 195, 163, 15, 72, 13, 3, 95, 56, 88, 120, 47, 6, 118, 68, 47, 132, 0, 0, 0, 11, 136, 16, 15, 4, 5, 18,
-			195, 163, 15, 76, 0, 0, 6, 195, 88, 245, 64, 76, 7, 195, 76, 85, 64, 76, 34, 0, 7, 196, 12, 244, 148, 60, 20, 0, 12, 5,
-			11, 195, 188, 8, 12, 49, 6, 37, 55, 0, 0, 5, 194, 52, 80, 72, 0, 15, 3, 95, 57, 88, 50, 39, 84, 6, 118, 68, 47, 132,
-			0, 102, 15, 3, 95, 57, 88, 50, 40, 84, 6, 118, 68, 47, 132, 0, 101, 0, 0, 17, 69, 72, 80, 68, 52, 80, 34, 6, 37, 12,
-			72, 65, 37, 12, 0, 101, 8, 197, 88, 19, 5, 80, 16, 21, 8, 197, 53, 84, 133, 80, 16, 21, 0, 0, 0, 7, 196, 88, 246, 133,
-			76, 20, 0, 8, 197, 77, 81, 197, 72, 80, 20, 0, 12, 137, 5, 14, 4, 5, 18, 5, 195, 167, 15, 21, 13, 3, 95, 63, 65, 55,
-			6, 36, 47, 51, 132, 10, 0, 0, 0, 0, 12, 136, 5, 19, 6, 15, 18, 195, 167, 15, 20, 36, 11, 136, 5, 19, 20, 1, 18, 195,
-			163, 15, 72, 0, 0, 0, 0, 8, 197, 24, 244, 212, 21, 48, 72, 16, 69, 56, 244, 211, 5, 48, 50, 6, 110, 89, 132, 89, 0, 102,
-			76, 0, 0, 0, 11, 67, 92, 80, 128, 58, 6, 109, 71, 0, 102, 0, 0, 13, 69, 28, 82, 83, 20, 192, 81, 6, 117, 88, 137, 0,
-			0, 0, 7, 132, 22, 195, 163, 15, 76, 6, 195, 77, 80, 64, 76, 14, 4, 95, 15, 7, 15, 39, 81, 39, 50, 6, 36, 49, 0, 0,
-			14, 68, 77, 64, 82, 80, 89, 47, 6, 35, 34, 47, 0, 101, 7, 196, 20, 229, 18, 20, 102, 0, 9, 198, 20, 228, 85, 4, 229, 15,
-			102, 0, 6, 195, 65, 35, 211, 72, 0, 23, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 49, 51, 39, 58, 89, 6, 110, 83, 47,
-			0, 102, 24, 71, 52, 144, 210, 61, 51, 198, 80, 65, 4, 37, 49, 12, 34, 6, 39, 89, 4, 110, 83, 47, 0, 101, 0, 7, 195, 60,
-			225, 5, 102, 72, 0, 0, 0, 0, 7, 196, 36, 65, 73, 4, 20, 0, 0, 0, 20, 4, 95, 56, 67, 15, 39, 49, 76, 37, 90, 118,
-			68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 8, 197, 64, 20, 133, 16, 80, 21, 8, 197, 28, 19, 69, 80, 16, 21, 8, 197, 24, 20,
-			143, 24, 16, 20, 9, 197, 5, 1, 82, 80, 240, 21, 37, 0, 10, 3, 195, 160, 19, 4, 35, 12, 89, 0, 0, 0, 0, 15, 69, 81,
-			84, 137, 56, 112, 47, 6, 40, 16, 37, 68, 81, 0, 8, 197, 64, 241, 9, 4, 208, 76, 16, 69, 5, 21, 69, 48, 80, 132, 49, 6,
-			36, 55, 112, 0, 76, 34, 0, 11, 67, 21, 145, 83, 6, 35, 37, 88, 0, 101, 6, 194, 61, 48, 76, 34, 0, 7, 195, 65, 35, 192,
-			72, 34, 0, 7, 196, 81, 33, 86, 60, 21, 17, 4, 95, 48, 77, 52, 47, 34, 37, 55, 57, 6, 127, 57, 88, 0, 102, 17, 4, 95,
-			48, 77, 52, 47, 34, 37, 55, 57, 6, 127, 57, 138, 0, 101, 0, 9, 134, 20, 5, 18, 195, 161, 19, 72, 12, 67, 65, 35, 198, 48,
-			34, 6, 110, 83, 0, 24, 0, 6, 195, 76, 85, 83, 76, 16, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 127, 57, 88, 0, 102, 16,
-			4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 127, 57, 138, 0, 101, 0, 10, 67, 88, 243, 128, 83, 2, 110, 50, 0, 11, 199, 16, 84,
-			197, 77, 1, 82, 60, 21, 37, 16, 4, 95, 48, 77, 51, 71, 37, 55, 57, 6, 127, 57, 88, 0, 102, 16, 4, 95, 48, 77, 51, 71,
-			37, 55, 57, 6, 127, 57, 138, 0, 101, 0, 14, 68, 53, 82, 84, 60, 65, 58, 6, 37, 68, 47, 111, 0, 7, 196, 28, 84, 141, 20,
-			20, 0, 12, 4, 95, 48, 77, 49, 65, 6, 116, 10, 0, 102, 13, 4, 95, 48, 77, 49, 65, 6, 37, 55, 10, 0, 101, 0, 9, 198,
-			20, 229, 143, 49, 67, 192, 21, 13, 4, 95, 2, 18, 22, 71, 51, 6, 109, 84, 37, 0, 0, 0, 0, 16, 69, 56, 85, 212, 60, 224,
-			50, 6, 37, 38, 40, 47, 39, 68, 0, 0, 0, 6, 195, 76, 84, 128, 72, 0, 6, 195, 24, 244, 129, 72, 0, 0, 0, 0, 7, 196,
-			65, 33, 84, 60, 21, 0, 8, 197, 12, 245, 66, 21, 32, 20, 0, 0, 0, 0, 0, 0, 0, 0, 16, 69, 16, 83, 5, 80, 80, 72,
-			6, 37, 55, 6, 37, 47, 0, 101, 8, 197, 29, 33, 76, 32, 16, 20, 0, 6, 195, 77, 80, 83, 76, 0, 0, 0, 0, 6, 194, 61,
-			80, 102, 72, 0, 0, 0, 8, 197, 12, 244, 142, 61, 48, 20, 0, 17, 70, 24, 86, 78, 52, 19, 128, 83, 6, 35, 37, 50, 65, 13,
-			50, 0, 9, 198, 8, 86, 133, 73, 35, 192, 21, 0, 0, 0, 8, 197, 80, 244, 148, 61, 48, 20, 0, 10, 198, 80, 83, 80, 21, 35,
-			192, 20, 36, 10, 198, 20, 229, 5, 73, 35, 192, 21, 37, 9, 198, 5, 84, 212, 21, 35, 192, 20, 8, 133, 20, 5, 18, 195, 161, 72,
-			0, 0, 7, 196, 52, 241, 68, 4, 20, 6, 195, 8, 240, 193, 21, 7, 196, 88, 19, 79, 76, 76, 10, 135, 16, 15, 4, 5, 18, 195,
-			161, 79, 7, 196, 80, 83, 79, 76, 72, 0, 10, 198, 16, 84, 193, 64, 81, 207, 21, 37, 0, 0, 0, 7, 196, 24, 241, 207, 76, 20,
-			7, 196, 12, 129, 70, 20, 20, 0, 9, 134, 22, 15, 3, 195, 170, 19, 76, 0, 7, 195, 76, 80, 207, 21, 37, 9, 198, 64, 241, 5,
-			52, 244, 192, 76, 0, 7, 132, 14, 195, 179, 19, 76, 6, 195, 12, 225, 64, 17, 0, 6, 195, 40, 241, 193, 20, 0, 0, 0, 0, 0,
-			10, 198, 16, 84, 208, 72, 86, 143, 20, 36, 0, 0, 19, 4, 95, 57, 67, 15, 50, 39, 68, 90, 118, 68, 47, 6, 109, 88, 37, 65,
-			0, 0, 0, 8, 197, 16, 84, 195, 20, 208, 20, 0, 0, 0, 0, 8, 197, 24, 244, 211, 20, 208, 21, 8, 197, 21, 53, 1, 88, 16,
-			72, 23, 69, 76, 83, 80, 72, 80, 89, 6, 36, 68, 48, 34, 37, 49, 135, 0, 102, 81, 113, 117, 101, 32, 0, 0, 19, 4, 95, 52,
-			88, 15, 49, 58, 35, 72, 16, 35, 90, 6, 109, 88, 37, 65, 0, 0, 0, 0, 9, 3, 195, 169, 19, 109, 89, 0, 72, 20, 4, 95,
-			3, 9, 18, 89, 37, 34, 49, 128, 68, 83, 55, 6, 109, 49, 89, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 20,
-			192, 102, 72, 11, 67, 56, 244, 192, 50, 40, 138, 0, 102, 72, 6, 195, 56, 244, 192, 72, 6, 195, 60, 212, 192, 17, 0, 0, 0, 0,
-			12, 4, 95, 19, 20, 11, 71, 6, 35, 101, 132, 0, 0, 0, 12, 3, 95, 194, 170, 35, 88, 6, 37, 67, 111, 0, 13, 4, 95, 1,
-			3, 21, 132, 81, 6, 40, 72, 111, 0, 0, 0, 6, 195, 60, 229, 64, 65, 0, 0, 0, 5, 194, 48, 240, 72, 12, 66, 76, 16, 4,
-			109, 89, 57, 6, 35, 0, 101, 12, 3, 4, 46, 3, 72, 4, 36, 89, 6, 36, 0, 0, 0, 7, 196, 4, 209, 66, 4, 20, 0, 8,
-			197, 12, 244, 133, 36, 16, 20, 0, 12, 67, 40, 241, 207, 90, 6, 110, 81, 111, 0, 36, 0, 13, 4, 95, 18, 14, 7, 129, 50, 6,
-			109, 55, 0, 101, 11, 4, 95, 18, 14, 7, 129, 50, 6, 137, 0, 0, 28, 3, 95, 194, 161, 4, 36, 89, 49, 55, 132, 65, 35, 89,
-			4, 130, 4, 37, 68, 84, 36, 34, 76, 6, 37, 72, 132, 0, 6, 131, 95, 195, 169, 43, 0, 9, 198, 16, 148, 195, 61, 33, 15, 20,
-			9, 198, 16, 84, 195, 61, 33, 15, 20, 0, 0, 23, 67, 33, 69, 16, 35, 81, 4, 35, 47, 36, 47, 36, 6, 48, 36, 10, 0, 81,
-			58, 47, 47, 32, 0, 0, 0, 14, 5, 5, 19, 20, 195, 161, 36, 89, 47, 6, 35, 0, 72, 0, 6, 131, 95, 195, 160, 43, 0, 7,
-			196, 52, 147, 204, 60, 21, 0, 15, 69, 84, 37, 78, 81, 80, 40, 71, 6, 40, 50, 47, 40, 0, 8, 197, 80, 244, 146, 21, 48, 21,
-			0, 10, 198, 76, 244, 211, 20, 115, 192, 21, 37, 14, 5, 19, 5, 18, 195, 161, 89, 36, 16, 35, 0, 102, 74, 0, 0, 7, 196, 76,
-			244, 18, 20, 20, 0, 9, 198, 60, 36, 207, 48, 85, 15, 21, 0, 6, 195, 64, 83, 15, 72, 0, 10, 67, 21, 32, 64, 109, 16, 132,
-			0, 73, 0, 0, 0, 9, 198, 64, 19, 8, 21, 64, 64, 21, 5, 194, 77, 32, 24, 0, 7, 132, 22, 195, 179, 19, 76, 0, 10, 67,
-			21, 32, 77, 109, 16, 130, 0, 73, 0, 10, 67, 77, 83, 210, 89, 58, 110, 34, 0, 0, 15, 67, 41, 1, 71, 90, 4, 110, 47, 132,
-			48, 6, 109, 81, 0, 19, 4, 95, 1, 3, 50, 132, 81, 6, 40, 72, 111, 72, 6, 40, 48, 55, 111, 0, 0, 0, 0, 15, 69, 8,
-			16, 203, 85, 0, 71, 109, 49, 6, 132, 48, 0, 102, 0, 9, 66, 60, 176, 110, 49, 6, 118, 0, 9, 198, 12, 243, 69, 77, 65, 64,
-			21, 9, 198, 8, 147, 8, 21, 65, 64, 21, 9, 198, 17, 84, 129, 57, 65, 64, 102, 0, 9, 198, 60, 36, 207, 48, 85, 1, 21, 0,
-			0, 0, 0, 0, 0, 0, 30, 3, 95, 194, 191, 4, 37, 68, 47, 36, 101, 4, 39, 81, 35, 89, 4, 130, 4, 37, 68, 84, 36, 34,
-			76, 6, 37, 72, 132, 0, 0, 19, 4, 95, 53, 88, 15, 49, 37, 68, 49, 58, 35, 90, 6, 109, 88, 37, 65, 0, 0, 14, 68, 88,
-			241, 197, 48, 83, 6, 39, 12, 81, 13, 55, 0, 14, 68, 76, 51, 213, 80, 89, 49, 6, 35, 40, 47, 0, 101, 13, 67, 64, 83, 1,
-			48, 6, 36, 55, 132, 0, 102, 72, 11, 67, 16, 83, 5, 72, 36, 55, 112, 0, 77, 7, 196, 4, 32, 68, 88, 17, 0, 12, 3, 95,
-			194, 186, 110, 88, 6, 37, 67, 111, 0, 0, 0, 11, 136, 19, 5, 18, 195, 173, 5, 9, 19, 72, 0, 7, 196, 40, 241, 193, 52, 20,
-			6, 195, 16, 83, 1, 76, 0, 9, 198, 81, 32, 86, 21, 52, 207, 21, 8, 197, 12, 244, 144, 61, 48, 20, 0, 0, 0, 12, 67, 77,
-			84, 197, 88, 6, 40, 12, 123, 13, 0, 6, 195, 12, 244, 1, 20, 0, 0, 9, 198, 61, 1, 82, 21, 64, 64, 21, 9, 198, 53, 85,
-			18, 21, 64, 64, 21, 6, 195, 12, 245, 15, 21, 0, 0, 0, 0, 9, 198, 60, 36, 212, 21, 32, 64, 20, 0, 10, 199, 76, 245, 66,
-			21, 33, 5, 76, 20, 9, 198, 65, 35, 198, 21, 33, 77, 20, 10, 199, 12, 245, 66, 21, 33, 5, 76, 20, 0, 8, 196, 76, 244, 18,
-			60, 20, 36, 0, 0, 9, 198, 65, 35, 198, 21, 33, 64, 20, 0, 10, 199, 28, 243, 143, 73, 33, 73, 4, 20, 0, 6, 195, 80, 85,
-			1, 21, 0, 15, 69, 53, 83, 8, 21, 32, 65, 40, 61, 6, 109, 34, 0, 104, 16, 69, 53, 83, 8, 21, 32, 65, 40, 55, 57, 6,
-			109, 34, 0, 102, 15, 2, 194, 167, 48, 132, 16, 6, 35, 81, 51, 35, 83, 111, 0, 9, 2, 195, 159, 21, 100, 101, 0, 10, 0, 5,
-			194, 76, 80, 72, 9, 66, 56, 240, 50, 40, 0, 72, 34, 9, 2, 194, 164, 6, 115, 16, 111, 0, 0, 9, 198, 81, 35, 205, 8, 85,
-			1, 21, 0, 0, 0, 0, 6, 195, 60, 213, 0, 17, 0, 12, 67, 24, 150, 5, 83, 6, 37, 91, 112, 0, 101, 7, 196, 72, 241, 193,
-			76, 20, 11, 67, 72, 150, 1, 101, 6, 37, 91, 132, 0, 0, 10, 4, 1, 24, 195, 169, 35, 91, 109, 0, 5, 130, 195, 167, 43, 0,
-			0, 9, 134, 16, 15, 18, 195, 169, 13, 102, 0, 5, 130, 195, 162, 43, 0, 5, 130, 195, 163, 43, 0, 15, 70, 56, 85, 77, 4, 227,
-			128, 50, 6, 136, 65, 35, 50, 0, 6, 195, 12, 244, 15, 20, 7, 130, 195, 160, 14, 15, 43, 8, 2, 195, 160, 4, 35, 12, 0, 0,
-			5, 130, 195, 161, 43, 0, 13, 68, 52, 245, 137, 20, 65, 6, 40, 84, 37, 0, 101, 0, 8, 197, 52, 244, 148, 61, 48, 20, 0, 6,
-			195, 76, 242, 83, 72, 0, 19, 71, 28, 245, 20, 25, 34, 69, 16, 81, 6, 110, 47, 83, 34, 37, 12, 47, 0, 11, 136, 12, 195, 173,
-			4, 5, 18, 5, 19, 21, 6, 195, 4, 32, 192, 17, 5, 130, 195, 173, 43, 0, 14, 68, 4, 67, 194, 20, 132, 72, 6, 110, 71, 112,
-			0, 101, 13, 68, 76, 130, 70, 80, 91, 6, 37, 83, 47, 0, 101, 5, 130, 195, 170, 43, 0, 0, 9, 2, 194, 176, 81, 51, 6, 114,
-			0, 0, 7, 130, 195, 169, 14, 15, 43, 7, 2, 195, 169, 109, 0, 72, 0, 7, 196, 56, 245, 143, 76, 20, 0, 15, 69, 16, 20, 151,
-			36, 224, 72, 6, 134, 34, 58, 37, 50, 0, 0, 9, 198, 64, 193, 66, 20, 144, 64, 20, 5, 130, 195, 180, 43, 0, 5, 130, 195, 181,
-			43, 0, 15, 4, 95, 3, 5, 4, 89, 112, 72, 6, 37, 61, 132, 0, 101, 15, 4, 95, 3, 5, 4, 89, 36, 75, 6, 37, 55, 57,
-			132, 0, 0, 5, 130, 195, 179, 43, 0, 9, 198, 12, 21, 15, 73, 161, 64, 21, 0, 16, 4, 95, 12, 9, 7, 55, 37, 81, 35, 72,
-			6, 40, 16, 132, 0, 0, 6, 195, 65, 81, 5, 76, 0, 0, 17, 70, 32, 21, 203, 36, 225, 192, 107, 6, 39, 12, 49, 37, 50, 81,
-			0, 5, 194, 80, 80, 72, 5, 130, 195, 188, 43, 0, 9, 198, 76, 241, 146, 21, 53, 5, 21, 9, 198, 12, 244, 146, 21, 53, 5, 21,
-			0, 7, 196, 24, 243, 79, 76, 72, 5, 130, 195, 186, 43, 0, 23, 73, 52, 243, 148, 21, 52, 85, 36, 85, 64, 65, 4, 39, 68, 47,
-			36, 89, 49, 57, 6, 36, 0, 8, 197, 12, 243, 69, 72, 16, 21, 8, 197, 12, 20, 133, 80, 16, 21, 0, 7, 195, 12, 243, 79, 102,
-			72, 0, 6, 195, 88, 18, 64, 76, 0, 7, 196, 65, 81, 5, 72, 20, 7, 196, 64, 244, 146, 4, 21, 0, 0, 19, 70, 65, 35, 196,
-			84, 53, 0, 48, 12, 34, 6, 132, 72, 132, 49, 47, 0, 101, 5, 194, 81, 80, 76, 0, 10, 67, 12, 243, 64, 49, 39, 65, 0, 101,
-			11, 199, 5, 36, 133, 52, 84, 211, 60, 21, 37, 6, 195, 12, 243, 64, 72, 18, 4, 95, 54, 88, 15, 89, 36, 49, 89, 35, 90, 6,
-			109, 88, 37, 65, 0, 0, 0, 0, 9, 198, 13, 33, 83, 12, 83, 64, 20, 0, 6, 195, 80, 83, 64, 72, 0, 0, 9, 134, 195, 169,
-			18, 5, 9, 19, 72, 0, 0, 0, 7, 196, 76, 243, 79, 76, 72, 0, 0, 9, 198, 64, 192, 84, 20, 144, 64, 20, 9, 198, 12, 243,
-			13, 20, 144, 64, 20, 0, 0, 0, 16, 69, 44, 84, 142, 20, 192, 49, 6, 109, 34, 50, 13, 55, 0, 102, 17, 69, 44, 84, 142, 20,
-			192, 49, 6, 109, 34, 50, 4, 109, 55, 0, 101, 0, 7, 195, 21, 36, 143, 21, 37, 0, 6, 195, 76, 245, 64, 72, 0, 14, 67, 21,
-			53, 5, 6, 36, 89, 76, 37, 0, 102, 76, 34, 0, 0, 0, 7, 195, 80, 85, 64, 76, 34, 0, 14, 67, 21, 53, 1, 6, 109, 89,
-			47, 132, 0, 102, 76, 34, 0, 8, 197, 5, 1, 83, 5, 32, 102, 0, 5, 194, 84, 80, 17, 0, 0, 14, 68, 52, 18, 197, 72, 65,
-			6, 118, 49, 132, 44, 0, 101, 8, 133, 16, 18, 195, 160, 19, 72, 0, 8, 197, 76, 19, 5, 80, 16, 21, 0, 0, 10, 199, 65, 34,
-			77, 5, 97, 82, 4, 20, 9, 198, 16, 144, 82, 72, 82, 65, 20, 9, 198, 4, 192, 193, 80, 82, 65, 20, 0, 16, 5, 95, 49, 77,
-			49, 15, 65, 37, 55, 6, 109, 88, 37, 65, 0, 0, 8, 197, 88, 145, 82, 20, 208, 20, 8, 197, 76, 241, 146, 20, 208, 20, 0, 0,
-			6, 2, 95, 1, 35, 0, 0, 0, 0, 9, 198, 5, 53, 1, 88, 19, 64, 72, 0, 6, 2, 95, 5, 109, 0, 0, 7, 196, 88, 84,
-			141, 20, 20, 0, 0, 9, 198, 72, 80, 207, 72, 67, 192, 20, 9, 198, 4, 208, 82, 20, 195, 192, 20, 9, 198, 65, 81, 5, 72, 19,
-			64, 76, 0, 0, 6, 2, 95, 15, 110, 0, 6, 195, 76, 240, 128, 102, 0, 12, 68, 64, 17, 88, 4, 48, 35, 36, 91, 35, 0, 0,
-			16, 69, 4, 194, 83, 60, 224, 132, 55, 6, 37, 89, 132, 68, 0, 101, 0, 9, 198, 88, 19, 133, 77, 48, 64, 21, 6, 195, 76, 240,
-			133, 20, 0, 6, 195, 81, 80, 64, 76, 0, 14, 68, 64, 242, 78, 80, 48, 6, 39, 37, 50, 47, 0, 101, 6, 195, 61, 99, 211, 20,
-			8, 133, 16, 195, 180, 4, 5, 76, 0, 0, 17, 70, 76, 48, 78, 56, 84, 128, 89, 49, 6, 109, 50, 132, 34, 0, 101, 0, 0, 6,
-			195, 80, 83, 147, 72, 0, 0, 0, 0, 15, 68, 76, 85, 21, 64, 89, 6, 109, 47, 6, 132, 48, 0, 101, 0, 0, 13, 4, 95, 226,
-			136, 146, 65, 6, 36, 50, 111, 89, 0, 0, 0, 13, 68, 76, 182, 80, 20, 89, 49, 6, 117, 48, 0, 102, 14, 68, 76, 182, 80, 20,
-			89, 49, 6, 35, 37, 48, 0, 101, 0, 8, 197, 64, 84, 133, 16, 80, 21, 16, 69, 4, 51, 210, 16, 240, 132, 49, 6, 110, 34, 72,
-			111, 0, 36, 0, 0, 15, 2, 95, 35, 49, 4, 35, 34, 75, 37, 50, 6, 114, 0, 102, 16, 2, 95, 35, 49, 4, 35, 34, 72, 37,
-			50, 6, 35, 55, 0, 101, 0, 24, 2, 95, 34, 6, 35, 71, 51, 37, 38, 6, 35, 89, 48, 132, 15, 72, 6, 40, 48, 55, 132, 138,
-			0, 11, 2, 95, 34, 6, 35, 89, 48, 132, 138, 0, 0, 16, 2, 95, 33, 4, 36, 89, 49, 55, 132, 65, 35, 89, 6, 130, 0, 0,
-			0, 11, 67, 61, 99, 192, 6, 39, 84, 40, 0, 101, 16, 2, 95, 39, 132, 48, 6, 110, 89, 47, 51, 39, 83, 111, 0, 102, 17, 2,
-			95, 39, 35, 48, 6, 110, 89, 47, 34, 4, 39, 83, 112, 0, 101, 0, 6, 195, 80, 85, 83, 76, 7, 2, 95, 38, 6, 36, 0, 0,
-			0, 6, 195, 17, 83, 65, 72, 12, 2, 95, 36, 89, 4, 37, 83, 51, 6, 130, 0, 0, 6, 195, 17, 83, 64, 72, 0, 14, 68, 28,
-			208, 73, 48, 90, 36, 65, 6, 118, 55, 0, 102, 15, 68, 28, 208, 73, 48, 81, 4, 36, 65, 6, 118, 55, 0, 101, 15, 2, 95, 42,
-			132, 89, 47, 36, 16, 6, 37, 89, 49, 111, 0, 16, 4, 95, 3, 1, 16, 65, 117, 6, 40, 89, 49, 40, 55, 111, 0, 0, 20, 2,
-			95, 41, 83, 4, 109, 91, 132, 48, 35, 16, 6, 118, 68, 47, 36, 88, 112, 0, 0, 20, 2, 95, 40, 4, 35, 71, 51, 37, 48, 35,
-			16, 6, 118, 68, 47, 36, 88, 112, 0, 0, 10, 2, 95, 47, 71, 6, 35, 100, 132, 0, 0, 0, 10, 2, 95, 45, 6, 37, 83, 118,
-			68, 0, 0, 16, 70, 45, 37, 69, 28, 84, 128, 49, 51, 6, 37, 90, 36, 34, 0, 13, 2, 95, 44, 84, 6, 37, 34, 81, 40, 55,
-			132, 0, 0, 6, 195, 16, 84, 128, 20, 6, 195, 80, 84, 128, 72, 6, 195, 53, 36, 192, 24, 10, 2, 95, 51, 47, 51, 6, 36, 138,
-			0, 0, 9, 2, 95, 50, 72, 6, 120, 138, 0, 0, 24, 73, 61, 4, 5, 56, 129, 73, 52, 84, 128, 11, 6, 110, 48, 13, 50, 107,
-			4, 117, 65, 35, 34, 0, 9, 2, 95, 49, 6, 128, 68, 0, 102, 9, 2, 95, 49, 6, 40, 65, 0, 101, 0, 15, 70, 53, 81, 76,
-			48, 84, 128, 65, 6, 37, 55, 36, 34, 0, 11, 67, 80, 85, 133, 47, 36, 84, 112, 0, 73, 11, 2, 95, 48, 88, 6, 109, 16, 111,
-			0, 102, 11, 2, 95, 48, 88, 6, 109, 16, 40, 0, 101, 0, 11, 2, 95, 55, 89, 6, 109, 76, 112, 0, 102, 11, 2, 95, 55, 89,
-			6, 109, 47, 112, 0, 101, 0, 9, 2, 95, 54, 89, 6, 118, 138, 0, 0, 11, 2, 95, 53, 89, 6, 37, 68, 49, 40, 0, 0, 6,
-			195, 16, 85, 129, 21, 13, 2, 95, 52, 49, 58, 6, 35, 47, 51, 40, 0, 102, 13, 2, 95, 52, 49, 58, 6, 35, 47, 34, 40, 0,
-			101, 0, 21, 2, 95, 59, 48, 4, 39, 68, 47, 40, 10, 37, 84, 6, 37, 34, 81, 40, 55, 132, 0, 0, 6, 195, 16, 85, 143, 21,
-			7, 196, 16, 84, 195, 20, 20, 16, 2, 95, 58, 72, 4, 120, 89, 48, 6, 39, 68, 47, 40, 89, 0, 0, 10, 2, 95, 57, 50, 6,
-			110, 84, 112, 0, 0, 9, 2, 95, 56, 6, 120, 47, 40, 0, 0, 18, 2, 95, 63, 4, 37, 68, 47, 36, 101, 4, 39, 81, 35, 89,
-			6, 130, 0, 0, 6, 195, 81, 80, 83, 76, 10, 2, 95, 62, 65, 117, 6, 110, 34, 0, 0, 8, 197, 80, 20, 5, 80, 80, 21, 8,
-			197, 12, 16, 197, 80, 80, 21, 8, 197, 4, 35, 210, 16, 240, 20, 11, 2, 95, 61, 37, 81, 58, 6, 114, 0, 102, 12, 2, 95, 61,
-			37, 81, 58, 6, 35, 55, 0, 101, 0, 11, 2, 95, 60, 65, 36, 50, 6, 110, 34, 0, 0, 6, 195, 16, 86, 128, 20, 6, 195, 24,
-			22, 128, 76, 0, 17, 70, 88, 243, 11, 52, 19, 142, 83, 6, 110, 55, 49, 65, 35, 50, 0, 21, 68, 16, 84, 196, 20, 72, 6, 36,
-			89, 75, 37, 49, 135, 0, 102, 81, 113, 117, 101, 32, 8, 196, 16, 84, 196, 20, 102, 72, 0, 0, 0, 0, 15, 6, 13, 195, 188, 12,
-			5, 18, 65, 6, 37, 55, 36, 34, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 80, 207, 73, 67, 192, 20, 10, 198, 20, 230, 5, 73,
-			67, 192, 21, 37, 8, 133, 16, 18, 195, 178, 19, 72, 0, 6, 195, 20, 192, 64, 76, 6, 195, 36, 48, 192, 17, 0, 7, 196, 4, 67,
-			210, 20, 20, 0, 0, 18, 70, 52, 83, 143, 72, 84, 192, 65, 36, 50, 6, 110, 16, 37, 89, 0, 102, 9, 198, 80, 149, 133, 72, 84,
-			192, 20, 0, 6, 195, 85, 48, 128, 17, 6, 195, 56, 32, 64, 17, 0, 14, 68, 64, 18, 78, 80, 48, 6, 35, 37, 50, 47, 0, 101,
-			11, 67, 8, 16, 203, 71, 6, 109, 49, 0, 101, 7, 196, 64, 245, 143, 76, 20, 7, 195, 28, 246, 143, 20, 36, 0, 11, 67, 4, 192,
-			78, 6, 35, 55, 13, 50, 0, 0, 9, 198, 65, 81, 5, 52, 244, 192, 76, 9, 198, 24, 22, 133, 52, 244, 192, 76, 9, 198, 80, 149,
-			133, 52, 244, 192, 72, 9, 198, 21, 53, 1, 52, 244, 192, 72, 0, 11, 67, 20, 193, 64, 6, 36, 55, 112, 0, 76, 0, 16, 70, 72,
-			144, 200, 5, 33, 0, 101, 6, 37, 91, 132, 34, 72, 0, 13, 4, 95, 4, 15, 20, 48, 6, 39, 68, 47, 111, 0, 0, 0, 0, 6,
-			195, 20, 49, 192, 17, 18, 2, 95, 91, 4, 35, 71, 51, 37, 49, 39, 58, 91, 6, 36, 76, 37, 0, 0, 6, 195, 20, 192, 83, 76,
-			0, 14, 69, 20, 194, 88, 37, 32, 36, 55, 37, 91, 37, 34, 0, 0, 7, 66, 88, 144, 84, 37, 0, 0, 16, 2, 95, 95, 89, 4,
-			40, 71, 55, 37, 67, 6, 35, 72, 40, 0, 0, 19, 2, 95, 94, 89, 4, 37, 34, 49, 128, 68, 83, 55, 6, 109, 49, 89, 40, 0,
-			0, 14, 69, 60, 227, 9, 56, 80, 39, 68, 55, 117, 68, 0, 102, 18, 2, 95, 93, 83, 4, 109, 91, 132, 49, 39, 58, 91, 6, 36,
-			76, 37, 0, 0, 21, 2, 95, 92, 71, 4, 35, 101, 132, 4, 37, 68, 84, 36, 34, 76, 6, 37, 72, 132, 0, 0, 6, 195, 24, 34,
-			64, 17, 0, 6, 195, 20, 193, 83, 76, 0, 16, 69, 4, 115, 211, 80, 240, 132, 81, 6, 39, 89, 47, 111, 0, 102, 17, 4, 95, 56,
-			88, 15, 39, 49, 47, 39, 90, 6, 109, 88, 37, 65, 0, 0, 11, 2, 95, 96, 81, 51, 6, 35, 84, 37, 0, 0, 0, 6, 195, 12,
-			240, 207, 21, 7, 132, 16, 18, 195, 160, 72, 0, 16, 7, 13, 195, 188, 12, 12, 5, 18, 65, 6, 37, 55, 36, 34, 0, 0, 9, 198,
-			20, 225, 143, 72, 51, 192, 20, 0, 0, 7, 196, 64, 84, 193, 52, 20, 0, 0, 6, 195, 64, 84, 193, 20, 9, 198, 52, 244, 131, 20,
-			115, 192, 21, 13, 4, 95, 7, 18, 22, 81, 51, 6, 35, 84, 37, 0, 0, 16, 67, 76, 244, 192, 4, 109, 89, 57, 4, 110, 6, 109,
-			89, 0, 101, 0, 0, 0, 18, 70, 92, 147, 132, 61, 116, 192, 58, 6, 37, 68, 72, 39, 58, 89, 0, 102, 20, 70, 92, 147, 132, 61,
-			116, 192, 58, 6, 37, 68, 72, 6, 39, 40, 12, 88, 0, 101, 0, 10, 199, 21, 53, 9, 88, 83, 79, 76, 72, 6, 195, 56, 20, 192,
-			72, 0, 0, 0, 9, 198, 80, 84, 133, 52, 244, 192, 72, 9, 198, 76, 84, 133, 52, 244, 192, 72, 7, 132, 16, 18, 195, 178, 72, 0,
-			0, 7, 195, 64, 84, 207, 21, 37, 6, 195, 64, 84, 207, 20, 6, 195, 17, 83, 147, 72, 12, 67, 8, 147, 211, 71, 6, 37, 4, 110,
-			91, 0, 0, 0, 0, 15, 2, 95, 123, 4, 35, 71, 51, 37, 91, 6, 35, 84, 37, 0, 13, 4, 95, 4, 9, 1, 47, 51, 6, 36,
-			65, 132, 0, 0, 0, 15, 69, 52, 83, 8, 61, 32, 65, 36, 61, 6, 110, 34, 0, 104, 16, 69, 52, 83, 8, 61, 32, 65, 36, 55,
-			57, 6, 110, 34, 0, 102, 0, 16, 70, 60, 97, 140, 36, 225, 64, 110, 83, 55, 6, 117, 68, 0, 102, 6, 194, 84, 208, 72, 34, 0,
-			0, 13, 68, 64, 245, 197, 72, 48, 6, 114, 132, 44, 0, 101, 9, 2, 95, 126, 76, 6, 116, 0, 102, 10, 2, 95, 126, 47, 6, 37,
-			55, 0, 101, 0, 8, 197, 64, 84, 132, 20, 208, 20, 15, 2, 95, 125, 83, 4, 109, 91, 132, 91, 6, 35, 84, 37, 0, 0, 20, 2,
-			95, 124, 71, 4, 35, 101, 132, 84, 4, 36, 34, 76, 37, 49, 6, 114, 0, 102, 21, 2, 95, 124, 71, 4, 35, 101, 132, 84, 4, 36,
-			34, 76, 37, 49, 6, 35, 55, 0, 101, 0, 19, 70, 24, 148, 133, 24, 246, 0, 83, 6, 35, 37, 13, 83, 110, 49, 89, 0, 102, 20,
-			70, 24, 148, 133, 24, 246, 0, 83, 6, 35, 37, 132, 34, 83, 110, 49, 89, 0, 101, 0, 13, 67, 40, 21, 211, 75, 6, 35, 40, 12,
-			88, 0, 101, 0, 0, 0, 9, 198, 65, 84, 197, 72, 65, 83, 20, 0, 7, 195, 76, 240, 207, 20, 36, 6, 195, 76, 240, 207, 21, 11,
-			200, 5, 52, 197, 52, 35, 5, 36, 16, 20, 0, 16, 69, 4, 48, 197, 77, 48, 6, 35, 49, 89, 4, 109, 89, 0, 101, 0, 0, 0,
-			0, 0, 0, 0, 15, 68, 8, 194, 78, 16, 71, 55, 6, 35, 37, 50, 72, 0, 101, 7, 196, 21, 36, 143, 76, 21, 0, 0, 0, 12,
-			67, 21, 48, 192, 6, 109, 89, 49, 124, 0, 103, 11, 67, 21, 48, 192, 6, 109, 89, 49, 0, 102, 0, 7, 196, 8, 84, 212, 4, 21,
-			0, 0, 9, 198, 65, 83, 136, 21, 64, 64, 20, 6, 195, 64, 241, 5, 76, 0, 0, 0, 0, 18, 70, 88, 84, 130, 21, 65, 64, 84,
-			36, 34, 71, 6, 36, 76, 37, 0, 102, 9, 198, 8, 80, 133, 77, 65, 64, 21, 14, 4, 95, 35, 51, 50, 91, 48, 6, 35, 89, 111,
-			0, 101, 14, 4, 95, 35, 51, 50, 36, 89, 48, 6, 35, 89, 111, 0, 0, 0, 0, 20, 8, 19, 195, 173, 13, 2, 15, 12, 15, 89,
-			6, 37, 68, 71, 39, 55, 111, 0, 104, 19, 8, 19, 195, 173, 13, 2, 15, 12, 15, 89, 6, 37, 65, 71, 39, 55, 111, 0, 0, 0,
-			0, 11, 5, 5, 46, 21, 46, 1, 109, 40, 35, 0, 0, 0, 16, 70, 4, 32, 67, 5, 130, 64, 35, 71, 35, 49, 35, 91, 112, 0,
-			0, 0, 21, 72, 32, 82, 83, 20, 224, 133, 72, 112, 107, 6, 117, 88, 109, 50, 71, 36, 34, 81, 0, 13, 68, 52, 18, 79, 72, 65,
-			117, 6, 110, 34, 0, 102, 15, 68, 52, 18, 79, 72, 65, 4, 132, 57, 6, 110, 44, 0, 101, 0, 17, 4, 95, 57, 88, 15, 50, 39,
-			50, 35, 90, 6, 109, 88, 37, 65, 0, 0, 17, 70, 61, 85, 12, 60, 242, 192, 4, 114, 47, 55, 6, 40, 49, 0, 102, 18, 70, 61,
-			85, 12, 60, 242, 192, 6, 35, 40, 47, 55, 6, 40, 49, 0, 101, 0, 19, 70, 88, 84, 130, 21, 65, 83, 84, 36, 34, 71, 6, 36,
-			76, 37, 89, 0, 102, 0, 12, 68, 52, 18, 76, 76, 65, 6, 118, 55, 89, 0, 20, 70, 21, 132, 12, 61, 33, 82, 36, 49, 89, 48,
-			55, 6, 110, 16, 36, 34, 0, 102, 22, 70, 21, 132, 12, 61, 33, 82, 4, 36, 49, 89, 48, 55, 6, 110, 12, 16, 132, 44, 0, 101,
-			0, 0, 0, 9, 198, 16, 84, 198, 20, 50, 15, 21, 0, 0, 0, 19, 70, 36, 229, 5, 72, 225, 84, 37, 68, 47, 36, 34, 50, 6,
-			109, 47, 0, 102, 13, 67, 21, 52, 197, 6, 36, 89, 37, 0, 102, 76, 34, 0, 6, 195, 37, 52, 192, 17, 0, 0, 0, 9, 198, 76,
-			20, 138, 21, 64, 64, 20, 9, 198, 64, 20, 212, 61, 32, 64, 21, 9, 198, 52, 20, 146, 21, 64, 64, 21, 9, 198, 12, 244, 142, 21,
-			64, 64, 21, 9, 198, 12, 20, 146, 21, 64, 64, 21, 11, 67, 21, 52, 193, 6, 109, 89, 132, 0, 76, 0, 0, 6, 195, 13, 5, 67,
-			17, 0, 0, 12, 67, 76, 149, 5, 89, 6, 117, 76, 37, 0, 102, 11, 67, 76, 149, 5, 89, 6, 117, 47, 0, 101, 13, 67, 76, 20,
-			9, 89, 4, 35, 48, 6, 37, 0, 101, 9, 198, 88, 147, 204, 21, 64, 64, 21, 0, 6, 195, 13, 5, 64, 17, 0, 0, 9, 198, 12,
-			19, 73, 76, 85, 1, 21, 0, 26, 10, 20, 5, 12, 5, 13, 195, 179, 22, 5, 12, 47, 4, 109, 55, 4, 109, 65, 6, 110, 84, 109,
-			55, 0, 101, 9, 198, 76, 244, 150, 21, 65, 64, 21, 9, 198, 64, 244, 146, 21, 65, 64, 21, 9, 198, 80, 149, 133, 77, 65, 64, 72,
-			0, 0, 12, 67, 12, 20, 19, 49, 6, 35, 48, 89, 0, 101, 7, 196, 24, 244, 211, 20, 21, 13, 68, 16, 84, 211, 20, 72, 6, 36,
-			89, 112, 0, 76, 0, 0, 12, 137, 18, 5, 6, 15, 18, 195, 167, 15, 19, 20, 0, 0, 12, 68, 44, 193, 73, 56, 49, 55, 6, 117,
-			50, 0, 16, 68, 21, 53, 5, 76, 6, 36, 89, 76, 37, 89, 0, 102, 76, 34, 0, 15, 69, 21, 48, 193, 64, 80, 91, 49, 6, 118,
-			48, 112, 0, 101, 0, 11, 67, 64, 246, 1, 48, 6, 39, 91, 132, 0, 11, 67, 52, 86, 1, 65, 6, 36, 91, 132, 0, 0, 0, 7,
-			196, 24, 244, 212, 20, 21, 7, 196, 24, 244, 212, 20, 72, 0, 15, 69, 28, 243, 199, 48, 80, 81, 6, 40, 81, 39, 55, 0, 102, 16,
-			69, 28, 243, 199, 48, 80, 81, 6, 40, 12, 81, 132, 55, 0, 101, 8, 197, 52, 81, 197, 72, 16, 20, 0, 0, 9, 198, 80, 149, 133,
-			77, 65, 83, 72, 0, 8, 196, 12, 131, 210, 60, 21, 37, 0, 0, 0, 0, 0, 16, 69, 56, 244, 211, 61, 48, 50, 6, 110, 89, 111,
-			89, 0, 102, 76, 0, 0, 7, 195, 84, 208, 64, 72, 34, 0, 6, 195, 64, 242, 83, 102, 0, 12, 136, 20, 18, 15, 16, 5, 195, 167,
-			15, 21, 37, 0, 12, 137, 1, 13, 1, 14, 8, 5, 195, 167, 15, 21, 0, 9, 134, 5, 19, 20, 195, 163, 15, 72, 0, 11, 67, 52,
-			86, 15, 65, 6, 36, 91, 111, 0, 0, 19, 70, 16, 146, 139, 77, 68, 129, 72, 6, 37, 57, 49, 89, 47, 34, 134, 12, 0, 0, 9,
-			198, 64, 19, 135, 20, 144, 64, 20, 0, 0, 7, 196, 21, 53, 15, 84, 72, 0, 0, 11, 67, 52, 86, 9, 65, 36, 91, 6, 37, 0,
-			6, 195, 36, 81, 69, 17, 0, 0, 14, 68, 28, 244, 212, 60, 81, 6, 110, 89, 47, 111, 0, 36, 0, 14, 69, 53, 81, 76, 21, 32,
-			65, 6, 37, 55, 36, 34, 0, 0, 12, 137, 5, 19, 6, 15, 18, 195, 167, 15, 19, 20, 0, 0, 0, 11, 136, 3, 15, 14, 8, 5,
-			195, 167, 15, 21, 7, 132, 19, 195, 163, 15, 72, 0, 0, 0, 7, 196, 76, 241, 210, 4, 20, 7, 196, 28, 84, 211, 60, 21, 7, 196,
-			21, 53, 1, 72, 72, 0, 14, 70, 72, 245, 83, 76, 80, 85, 51, 40, 89, 6, 39, 0, 8, 197, 5, 85, 15, 72, 16, 21, 0, 13,
-			67, 32, 243, 69, 107, 6, 39, 58, 65, 37, 0, 102, 11, 67, 32, 243, 69, 6, 39, 65, 112, 0, 101, 0, 20, 71, 52, 84, 211, 20,
-			225, 197, 72, 65, 6, 109, 89, 132, 50, 75, 132, 44, 0, 101, 18, 70, 52, 83, 8, 61, 33, 83, 65, 36, 61, 6, 110, 16, 37, 89,
-			0, 104, 19, 70, 52, 83, 8, 61, 33, 83, 65, 36, 55, 57, 6, 110, 16, 37, 89, 0, 102, 0, 0, 0, 9, 198, 20, 225, 207, 72,
-			67, 192, 20, 0, 0, 0, 8, 197, 80, 83, 132, 21, 48, 72, 0, 8, 133, 6, 1, 195, 167, 15, 76, 0, 0, 12, 137, 1, 13, 1,
-			14, 8, 5, 195, 167, 1, 21, 0, 0, 0, 9, 134, 19, 5, 18, 195, 163, 15, 72, 0, 14, 68, 76, 208, 82, 80, 89, 65, 6, 35,
-			34, 47, 0, 101, 7, 196, 40, 241, 207, 76, 20, 0, 0, 0, 21, 71, 65, 80, 140, 37, 50, 5, 72, 48, 6, 132, 71, 55, 4, 37,
-			91, 132, 44, 0, 101, 10, 199, 8, 244, 130, 60, 193, 84, 4, 21, 0, 0, 0, 0, 7, 195, 52, 85, 64, 76, 34, 6, 195, 4, 68,
-			204, 17, 0, 7, 195, 84, 208, 83, 72, 34, 0, 0, 0, 0, 11, 135, 3, 15, 13, 5, 195, 167, 15, 21, 37, 18, 7, 3, 15, 13,
-			5, 195, 167, 15, 49, 39, 65, 6, 109, 89, 111, 0, 36, 0, 17, 70, 76, 83, 22, 4, 113, 77, 89, 115, 84, 6, 35, 90, 118, 68,
-			0, 8, 197, 69, 80, 78, 16, 240, 102, 0, 9, 198, 64, 241, 5, 72, 82, 64, 79, 0, 0, 0, 0, 0, 10, 199, 5, 67, 79, 76,
-			97, 82, 4, 20, 0, 6, 195, 52, 85, 83, 76, 0, 6, 18, 66, 97, 109, 0, 97, 0, 7, 6, 18, 67, 101, 109, 0, 101, 0, 7,
-			6, 18, 68, 97, 109, 0, 97, 0, 111, 0, 7, 6, 18, 69, 117, 101, 109, 0, 97, 109, 0, 101, 109, 0, 117, 101, 0, 97, 0, 101,
-			0, 111, 0, 7, 6, 18, 70, 114, 100, 101, 115, 0, 114, 97, 109, 0, 114, 101, 109, 0, 114, 97, 0, 114, 101, 0, 114, 0, 7, 6,
-			195, 160, 0, 3, 35, 0, 8, 2, 115, 32, 3, 117, 0, 4, 2, 109, 3, 129, 0, 2, 110, 0, 109, 2, 25, 3, 129, 65, 0, 110,
-			104, 2, 17, 65, 3, 129, 67, 0, 110, 2, 25, 3, 129, 68, 0, 7, 6, 195, 161, 0, 4, 3, 7, 35, 0, 2, 105, 17, 67, 25,
-			0, 2, 117, 17, 67, 25, 0, 4, 117, 3, 7, 114, 0, 117, 2, 115, 0, 4, 105, 3, 7, 117, 0, 105, 2, 115, 0, 121, 0, 108,
-			5, 1, 3, 7, 134, 55, 0, 7, 6, 195, 162, 0, 4, 2, 109, 3, 7, 129, 0, 2, 110, 0, 109, 2, 25, 3, 7, 129, 65, 0,
-			110, 104, 3, 7, 129, 67, 0, 110, 2, 25, 3, 7, 129, 68, 0, 3, 7, 132, 0, 7, 6, 195, 163, 0, 3, 129, 0, 111, 3, 130,
-			0, 7, 6, 195, 169, 0, 4, 3, 7, 109, 0, 2, 105, 17, 67, 25, 0, 2, 117, 17, 67, 25, 0, 121, 3, 7, 118, 0, 4, 109,
-			2, 32, 3, 7, 118, 68, 0, 109, 2, 115, 32, 0, 110, 2, 32, 0, 110, 2, 115, 32, 0, 4, 105, 3, 7, 119, 0, 105, 2, 115,
-			0, 4, 117, 3, 7, 137, 0, 117, 2, 115, 0, 7, 6, 195, 170, 0, 3, 7, 36, 0, 110, 104, 3, 7, 36, 67, 0, 109, 2, 17,
-			67, 3, 7, 118, 65, 0, 4, 109, 2, 32, 3, 7, 118, 68, 0, 109, 2, 32, 0, 110, 2, 25, 0, 7, 6, 195, 173, 0, 4, 3,
-			7, 37, 0, 2, 109, 0, 2, 110, 0, 109, 2, 17, 67, 3, 7, 37, 65, 0, 110, 104, 3, 7, 37, 67, 0, 4, 109, 2, 32, 3,
-			7, 37, 68, 0, 110, 2, 25, 0, 7, 6, 195, 179, 0, 4, 3, 7, 110, 0, 2, 105, 17, 67, 25, 0, 117, 3, 7, 110, 58, 0,
-			4, 105, 3, 7, 136, 0, 105, 2, 115, 0, 121, 0, 7, 6, 195, 180, 0, 3, 7, 39, 0, 109, 2, 17, 67, 3, 7, 39, 65, 0,
-			110, 104, 3, 7, 39, 67, 0, 4, 109, 2, 32, 3, 7, 39, 68, 0, 110, 2, 25, 0, 7, 6, 195, 181, 0, 3, 127, 0, 101, 3,
-			127, 57, 0, 7, 6, 195, 186, 0, 3, 7, 40, 0, 109, 2, 17, 67, 3, 7, 128, 65, 0, 110, 104, 3, 7, 128, 67, 0, 4, 109,
-			2, 32, 3, 7, 128, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 25, 0, 7, 6, 97, 0, 5, 1, 2, 108, 25, 3, 4, 134,
-			0, 4, 2, 114, 32, 3, 6, 35, 0, 5, 1, 2, 122, 32, 0, 8, 2, 32, 31, 0, 99, 195, 167, 5, 1, 1, 17, 67, 3, 6,
-			35, 6, 89, 0, 5, 1, 2, 108, 32, 3, 6, 134, 0, 5, 1, 1, 112, 2, 100, 32, 3, 8, 109, 0, 109, 2, 32, 3, 8, 129,
-			68, 0, 109, 2, 32, 3, 8, 130, 0, 4, 1, 10, 2, 32, 3, 8, 132, 0, 1, 10, 2, 115, 32, 0, 5, 1, 2, 32, 0, 5,
-			1, 2, 115, 32, 0, 4, 1, 10, 2, 32, 97, 3, 8, 133, 0, 1, 10, 2, 32, 195, 160, 0, 5, 1, 2, 32, 97, 0, 5, 1,
-			2, 32, 195, 160, 0, 4, 3, 35, 0, 2, 105, 17, 67, 25, 0, 2, 105, 117, 32, 0, 2, 108, 104, 12, 0, 2, 117, 17, 67, 25,
-			0, 8, 2, 32, 0, 4, 108, 5, 2, 2, 25, 3, 114, 0, 111, 2, 32, 0, 117, 0, 117, 2, 115, 0, 4, 105, 3, 117, 0, 105,
-			2, 115, 0, 121, 0, 4, 2, 109, 3, 129, 0, 2, 110, 0, 109, 2, 17, 67, 3, 129, 65, 0, 110, 104, 2, 17, 65, 3, 129, 67,
-			0, 4, 109, 5, 4, 2, 17, 67, 3, 129, 68, 0, 110, 2, 25, 12, 0, 4, 2, 17, 67, 17, 67, 32, 3, 132, 0, 2, 17, 67,
-			32, 0, 2, 109, 17, 65, 21, 0, 2, 109, 17, 65, 114, 32, 0, 2, 110, 17, 65, 21, 0, 2, 110, 17, 65, 114, 32, 0, 7, 6,
-			98, 0, 2, 98, 3, 0, 4, 3, 71, 0, 5, 3, 2, 115, 0, 5, 3, 2, 32, 17, 67, 3, 71, 10, 0, 8, 2, 32, 3, 71,
-			36, 0, 5, 3, 2, 17, 66, 3, 71, 124, 0, 7, 6, 99, 0, 5, 1, 2, 99, 3, 0, 116, 5, 1, 1, 17, 65, 3, 47, 0,
-			4, 3, 49, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0, 107, 0, 5, 3, 2, 32, 17, 67, 3, 49, 10, 0, 116, 5, 1, 1,
-			97, 116, 110, 111, 99, 2, 17, 65, 3, 49, 47, 0, 5, 3, 2, 17, 66, 3, 49, 124, 0, 4, 2, 17, 71, 3, 89, 0, 195, 167,
-			5, 1, 1, 17, 65, 0, 8, 2, 32, 3, 89, 36, 0, 104, 3, 91, 0, 7, 6, 100, 0, 2, 100, 3, 0, 3, 72, 0, 5, 3,
-			2, 32, 17, 67, 3, 72, 10, 0, 8, 2, 32, 3, 72, 36, 0, 4, 5, 2, 2, 101, 32, 3, 75, 0, 5, 2, 2, 105, 0, 5,
-			2, 2, 195, 173, 0, 5, 3, 2, 17, 66, 3, 75, 124, 0, 7, 6, 101, 0, 4, 5, 1, 1, 100, 2, 110, 17, 67, 17, 65, 17,
+		static unsigned char espeakdata_dicts53_data[34925] = {
+			0, 4, 0, 0, 141, 103, 0, 0, 0, 9, 198, 4, 194, 83, 80, 18, 82, 65, 9, 198, 4, 192, 83, 80, 18, 82, 65, 0, 7, 196,
+			17, 37, 201, 40, 15, 0, 8, 197, 77, 161, 80, 13, 160, 15, 8, 197, 56, 148, 218, 13, 160, 15, 0, 0, 6, 195, 184, 210, 64, 15,
+			12, 65, 4, 35, 55, 6, 35, 0, 81, 108, 97, 32, 5, 193, 4, 72, 28, 0, 0, 7, 196, 92, 179, 5, 40, 15, 6, 195, 28, 226,
+			114, 15, 13, 69, 40, 19, 137, 12, 80, 75, 109, 67, 37, 89, 0, 15, 69, 16, 85, 137, 12, 80, 72, 37, 84, 6, 35, 57, 89, 0,
+			0, 6, 195, 104, 193, 110, 15, 7, 196, 81, 121, 210, 104, 15, 6, 195, 80, 179, 238, 15, 6, 195, 65, 53, 110, 15, 6, 195, 52, 193,
+			110, 15, 6, 195, 52, 145, 76, 15, 6, 195, 44, 229, 110, 15, 6, 195, 44, 193, 110, 15, 7, 196, 45, 73, 210, 180, 76, 0, 6, 195,
+			93, 38, 133, 15, 6, 65, 8, 71, 109, 0, 0, 9, 198, 77, 64, 200, 157, 38, 128, 15, 9, 198, 77, 2, 113, 81, 38, 128, 15, 0,
+			7, 196, 77, 1, 114, 204, 15, 7, 196, 17, 162, 79, 8, 15, 15, 67, 21, 64, 192, 109, 117, 6, 109, 47, 109, 51, 35, 0, 24, 0,
+			7, 196, 224, 112, 83, 104, 15, 0, 8, 197, 104, 124, 149, 77, 160, 15, 6, 65, 12, 117, 109, 0, 0, 0, 6, 195, 104, 32, 87, 15,
+			8, 197, 52, 22, 9, 52, 16, 65, 0, 0, 6, 65, 16, 72, 109, 0, 0, 6, 195, 107, 35, 205, 15, 6, 195, 44, 193, 74, 15, 6,
+			195, 17, 43, 120, 15, 9, 198, 52, 145, 76, 39, 67, 89, 76, 0, 7, 196, 105, 114, 109, 224, 15, 7, 196, 104, 224, 67, 104, 15, 6,
+			195, 104, 64, 114, 15, 6, 195, 92, 192, 114, 15, 6, 195, 77, 64, 114, 15, 6, 195, 28, 224, 114, 15, 7, 196, 25, 84, 131, 104, 15,
+			6, 195, 16, 32, 114, 15, 8, 197, 13, 162, 206, 36, 80, 15, 7, 196, 12, 194, 83, 104, 15, 10, 68, 8, 241, 85, 24, 71, 109, 83,
+			0, 0, 6, 195, 76, 229, 110, 15, 18, 4, 95, 100, 112, 116, 10, 48, 91, 109, 119, 6, 37, 50, 109, 49, 10, 0, 0, 8, 197, 50,
+			209, 242, 9, 144, 15, 9, 198, 52, 179, 137, 21, 54, 128, 15, 9, 198, 48, 115, 137, 21, 54, 128, 15, 9, 198, 9, 35, 137, 21, 54,
+			128, 15, 21, 65, 20, 37, 65, 109, 57, 55, 111, 84, 109, 0, 81, 109, 97, 105, 108, 111, 119, 101, 32, 25, 65, 20, 37, 65, 109, 57,
+			55, 111, 84, 109, 81, 111, 0, 81, 109, 97, 105, 108, 111, 119, 101, 103, 111, 32, 21, 65, 20, 37, 65, 109, 57, 55, 111, 84, 112, 0,
+			81, 109, 97, 105, 108, 111, 119, 121, 32, 19, 65, 20, 37, 65, 109, 57, 55, 111, 65, 0, 81, 109, 97, 105, 108, 111, 109, 32, 17, 65,
+			20, 37, 65, 109, 57, 55, 37, 0, 81, 109, 97, 105, 108, 105, 32, 17, 65, 20, 37, 65, 109, 57, 55, 109, 0, 81, 109, 97, 105, 108,
+			101, 32, 19, 65, 20, 37, 65, 109, 57, 55, 109, 65, 0, 81, 109, 97, 105, 108, 101, 109, 32, 17, 65, 20, 37, 65, 109, 57, 55, 35,
+			0, 81, 109, 97, 105, 108, 97, 32, 15, 65, 20, 37, 65, 109, 57, 55, 0, 81, 109, 97, 105, 108, 32, 5, 65, 20, 109, 0, 0, 9,
+			198, 105, 41, 211, 200, 38, 64, 15, 9, 198, 104, 210, 109, 200, 38, 64, 15, 9, 198, 104, 203, 75, 200, 38, 64, 15, 9, 198, 93, 2,
+			109, 200, 38, 64, 15, 9, 198, 92, 201, 203, 200, 38, 64, 15, 9, 198, 92, 153, 218, 200, 38, 64, 15, 9, 198, 92, 156, 68, 200, 38,
+			64, 15, 9, 198, 92, 155, 68, 200, 38, 64, 15, 9, 198, 77, 2, 109, 200, 38, 64, 15, 9, 198, 52, 179, 173, 200, 38, 64, 15, 6,
+			195, 64, 145, 74, 15, 6, 195, 52, 145, 74, 15, 0, 6, 195, 93, 2, 114, 15, 6, 195, 92, 146, 128, 15, 7, 196, 80, 176, 83, 104,
+			15, 6, 195, 48, 22, 178, 15, 25, 67, 69, 82, 64, 49, 84, 37, 48, 51, 111, 49, 84, 111, 0, 67, 82, 112, 114, 111, 32, 113, 117,
+			111, 32, 0, 7, 196, 77, 4, 129, 92, 15, 0, 9, 198, 65, 38, 153, 45, 38, 128, 15, 6, 65, 24, 109, 83, 0, 0, 6, 195, 104,
+			70, 66, 15, 0, 0, 7, 196, 200, 176, 83, 104, 15, 0, 7, 65, 28, 81, 57, 109, 0, 0, 0, 8, 197, 77, 160, 218, 4, 208, 15,
+			0, 0, 8, 197, 209, 2, 69, 77, 160, 15, 6, 195, 208, 226, 64, 15, 6, 65, 32, 101, 35, 0, 0, 6, 195, 225, 146, 128, 15, 6,
+			195, 225, 82, 128, 15, 9, 198, 224, 115, 137, 21, 54, 128, 15, 0, 7, 196, 77, 2, 83, 104, 15, 6, 195, 75, 131, 173, 15, 8, 197,
+			17, 33, 206, 36, 80, 15, 0, 6, 195, 65, 51, 238, 15, 10, 199, 56, 145, 75, 82, 116, 133, 40, 76, 11, 200, 52, 21, 20, 21, 34,
+			15, 72, 224, 65, 8, 1, 35, 107, 35, 91, 0, 27, 0, 8, 197, 224, 112, 114, 9, 144, 15, 8, 197, 54, 113, 242, 9, 144, 15, 8,
+			197, 200, 176, 114, 9, 144, 15, 8, 197, 200, 112, 114, 9, 144, 15, 9, 198, 104, 116, 154, 21, 54, 128, 15, 9, 198, 76, 180, 154, 21,
+			54, 128, 15, 5, 193, 36, 72, 28, 0, 9, 198, 93, 161, 45, 200, 38, 64, 15, 9, 198, 93, 41, 211, 200, 38, 64, 15, 9, 198, 80,
+			179, 173, 200, 38, 64, 15, 9, 198, 208, 193, 80, 200, 38, 64, 15, 9, 198, 64, 201, 212, 200, 38, 64, 15, 9, 198, 64, 92, 154, 200,
+			38, 64, 15, 9, 198, 56, 153, 211, 200, 38, 64, 15, 9, 198, 55, 64, 201, 200, 38, 64, 15, 9, 198, 52, 153, 212, 200, 38, 64, 15,
+			9, 198, 47, 32, 68, 200, 38, 64, 15, 9, 198, 19, 113, 207, 200, 38, 64, 15, 9, 198, 17, 46, 15, 200, 38, 64, 15, 9, 198, 9,
+			35, 173, 200, 38, 64, 15, 9, 198, 4, 33, 82, 16, 81, 78, 65, 12, 1, 37, 48, 51, 6, 111, 117, 109, 50, 47, 0, 0, 22, 72,
+			77, 1, 67, 36, 19, 9, 80, 80, 89, 48, 109, 89, 57, 35, 55, 37, 47, 6, 109, 0, 12, 65, 112, 35, 55, 6, 35, 0, 81, 108,
+			97, 32, 7, 1, 38, 35, 50, 72, 0, 0, 6, 195, 52, 145, 110, 15, 6, 195, 29, 35, 238, 15, 6, 195, 52, 145, 110, 76, 0, 12,
+			201, 77, 2, 69, 73, 160, 200, 200, 38, 64, 15, 7, 65, 40, 57, 111, 47, 0, 0, 0, 9, 67, 76, 148, 128, 89, 109, 51, 0, 9,
+			67, 72, 240, 203, 34, 111, 49, 0, 14, 1, 42, 81, 84, 38, 6, 35, 89, 47, 49, 35, 0, 27, 0, 6, 195, 105, 124, 119, 15, 9,
+			1, 43, 48, 55, 40, 89, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 7, 196, 13, 166, 73, 52, 76, 0, 12, 1, 46, 49, 51, 6,
+			111, 48, 49, 35, 0, 27, 0, 9, 1, 47, 89, 55, 109, 91, 0, 27, 0, 6, 65, 48, 109, 55, 0, 15, 4, 95, 100, 105, 97, 10,
+			6, 40, 65, 55, 35, 58, 47, 0, 0, 6, 195, 224, 115, 205, 15, 0, 6, 195, 224, 115, 177, 15, 6, 195, 105, 112, 114, 15, 6, 195,
+			104, 144, 114, 15, 6, 195, 92, 144, 114, 15, 6, 195, 77, 48, 114, 15, 6, 195, 73, 112, 114, 15, 6, 195, 64, 144, 114, 15, 7, 196,
+			45, 2, 83, 104, 15, 12, 67, 40, 21, 211, 75, 6, 109, 58, 89, 0, 13, 0, 6, 195, 81, 43, 67, 15, 6, 195, 76, 213, 110, 15,
+			6, 195, 76, 181, 110, 15, 6, 195, 64, 235, 67, 15, 6, 195, 53, 43, 67, 15, 6, 195, 28, 235, 67, 15, 0, 8, 197, 10, 113, 50,
+			9, 144, 15, 6, 195, 104, 64, 77, 15, 9, 198, 77, 160, 218, 5, 54, 128, 15, 9, 198, 9, 38, 141, 37, 54, 128, 15, 10, 198, 65,
+			38, 133, 12, 145, 120, 76, 8, 6, 65, 52, 109, 65, 0, 0, 6, 195, 76, 145, 74, 15, 7, 196, 13, 161, 77, 84, 76, 0, 7, 196,
+			104, 224, 83, 104, 15, 8, 197, 104, 117, 193, 202, 224, 15, 7, 196, 92, 64, 83, 104, 15, 6, 195, 208, 226, 113, 15, 6, 195, 75, 131,
+			177, 15, 6, 195, 45, 38, 114, 15, 0, 9, 198, 45, 54, 148, 7, 43, 128, 15, 7, 196, 19, 113, 206, 196, 15, 0, 6, 195, 94, 213,
+			16, 15, 6, 65, 56, 109, 50, 0, 0, 16, 66, 57, 0, 50, 35, 48, 91, 6, 112, 49, 58, 35, 72, 0, 24, 0, 0, 0, 14, 65,
+			60, 6, 111, 84, 35, 89, 0, 81, 119, 97, 115, 32, 15, 65, 60, 6, 111, 47, 112, 65, 10, 0, 81, 116, 121, 109, 32, 15, 65, 60,
+			6, 111, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 12, 65, 60, 6, 111, 47, 111, 0, 81, 116, 111, 32, 12, 65, 60, 6, 111, 47,
+			109, 0, 81, 116, 101, 32, 13, 65, 60, 6, 111, 47, 114, 0, 81, 116, 196, 133, 32, 15, 65, 60, 6, 111, 67, 38, 114, 0, 81, 110,
+			105, 196, 133, 32, 14, 65, 60, 6, 111, 67, 38, 109, 0, 81, 110, 105, 101, 32, 14, 65, 60, 6, 111, 67, 37, 65, 0, 81, 110, 105,
+			109, 32, 16, 65, 60, 6, 111, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 14, 65, 60, 6, 111, 50, 35, 89, 0, 81, 110, 97,
+			115, 32, 16, 65, 60, 6, 111, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 4, 193, 60, 76, 0, 9, 198, 40, 84, 212, 23, 67,
+			89, 76, 14, 1, 61, 51, 6, 40, 84, 50, 35, 15, 97, 109, 0, 27, 0, 6, 195, 107, 134, 74, 15, 0, 7, 196, 79, 38, 83, 104,
+			15, 0, 8, 197, 51, 67, 137, 77, 160, 15, 10, 1, 64, 65, 6, 35, 58, 48, 35, 0, 6, 65, 64, 48, 109, 0, 0, 0, 0, 6,
+			195, 104, 195, 238, 15, 11, 200, 93, 54, 131, 104, 226, 69, 77, 160, 15, 6, 195, 65, 35, 238, 15, 6, 195, 44, 227, 238, 15, 17, 70,
+			4, 229, 8, 60, 230, 64, 109, 50, 47, 111, 50, 112, 0, 65, 46, 14, 70, 4, 229, 8, 60, 230, 64, 109, 50, 47, 111, 50, 0, 0,
+			9, 198, 64, 147, 242, 9, 147, 64, 15, 6, 195, 92, 64, 77, 15, 9, 198, 44, 195, 137, 21, 54, 128, 15, 6, 65, 68, 49, 40, 0,
+			0, 0, 14, 67, 16, 240, 192, 72, 6, 111, 117, 109, 50, 47, 0, 24, 0, 0, 6, 65, 72, 109, 51, 0, 0, 7, 196, 76, 180, 167,
+			184, 15, 0, 7, 196, 104, 124, 116, 184, 15, 7, 196, 83, 37, 116, 184, 15, 7, 196, 76, 155, 116, 184, 15, 9, 67, 88, 145, 87, 84,
+			38, 40, 0, 0, 14, 4, 95, 100, 111, 116, 88, 49, 51, 111, 48, 49, 114, 0, 0, 9, 198, 93, 4, 154, 183, 75, 128, 15, 6, 195,
+			77, 64, 115, 15, 6, 65, 76, 109, 89, 0, 0, 9, 198, 77, 0, 83, 200, 38, 64, 15, 8, 197, 77, 0, 114, 9, 144, 15, 9, 198,
+			77, 0, 68, 200, 38, 64, 15, 7, 196, 77, 0, 116, 184, 15, 6, 195, 77, 0, 116, 15, 7, 196, 77, 0, 83, 200, 15, 7, 196, 77,
+			0, 82, 104, 15, 6, 195, 77, 0, 114, 15, 6, 195, 77, 0, 76, 15, 7, 196, 77, 0, 68, 200, 15, 0, 0, 0, 6, 65, 80, 47,
+			109, 0, 0, 6, 195, 92, 64, 74, 15, 0, 7, 195, 4, 226, 64, 76, 8, 0, 8, 197, 48, 81, 242, 9, 144, 15, 6, 195, 105, 123,
+			67, 15, 6, 195, 77, 59, 67, 15, 6, 195, 73, 123, 67, 15, 7, 196, 52, 20, 148, 92, 15, 0, 7, 196, 105, 41, 211, 200, 15, 15,
+			70, 40, 80, 78, 21, 69, 5, 90, 35, 50, 6, 109, 47, 0, 0, 8, 197, 104, 226, 103, 79, 32, 15, 6, 195, 80, 176, 74, 15, 0,
+			6, 195, 93, 146, 128, 15, 0, 8, 197, 93, 164, 167, 210, 224, 15, 6, 195, 92, 193, 80, 15, 0, 9, 198, 77, 68, 154, 183, 75, 128,
+			15, 9, 198, 77, 4, 154, 183, 75, 128, 15, 7, 65, 88, 83, 35, 58, 0, 0, 0, 14, 67, 52, 80, 192, 65, 109, 117, 109, 50, 35,
+			89, 0, 24, 0, 7, 196, 73, 161, 119, 8, 15, 6, 195, 12, 134, 76, 15, 15, 4, 95, 49, 77, 52, 71, 38, 6, 37, 55, 57, 111,
+			50, 0, 0, 13, 1, 92, 71, 6, 109, 49, 89, 55, 109, 91, 0, 27, 8, 65, 92, 84, 112, 0, 72, 49, 0, 9, 198, 93, 0, 82,
+			200, 38, 64, 15, 7, 196, 104, 116, 129, 52, 15, 8, 197, 93, 0, 84, 73, 160, 15, 7, 196, 93, 0, 116, 184, 15, 7, 196, 93, 0,
+			82, 200, 15, 0, 10, 1, 94, 72, 6, 35, 91, 109, 49, 0, 0, 0, 6, 195, 80, 176, 77, 15, 11, 1, 96, 6, 35, 49, 117, 109,
+			50, 47, 0, 7, 65, 96, 37, 49, 89, 0, 14, 4, 95, 49, 77, 49, 47, 6, 112, 97, 111, 50, 117, 0, 0, 6, 195, 104, 64, 74,
+			15, 6, 195, 72, 16, 218, 15, 6, 195, 48, 144, 218, 15, 22, 66, 4, 64, 35, 72, 6, 111, 49, 40, 55, 111, 89, 0, 81, 111, 99,
+			117, 108, 111, 115, 32, 16, 66, 4, 64, 35, 72, 107, 6, 111, 49, 0, 81, 104, 111, 99, 32, 15, 4, 95, 49, 77, 50, 65, 38, 6,
+			37, 55, 57, 111, 50, 0, 0, 9, 198, 11, 17, 26, 36, 84, 218, 76, 4, 193, 120, 43, 4, 193, 120, 43, 16, 4, 95, 49, 77, 51,
+			65, 38, 6, 37, 55, 57, 35, 51, 72, 0, 0, 0, 10, 65, 100, 6, 37, 81, 51, 109, 49, 0, 0, 0, 6, 195, 224, 115, 173, 15,
+			7, 196, 105, 41, 244, 184, 15, 7, 196, 66, 114, 180, 184, 15, 0, 0, 7, 196, 104, 217, 199, 200, 15, 9, 198, 12, 132, 154, 199, 75,
+			128, 15, 10, 67, 64, 192, 89, 48, 55, 109, 57, 0, 8, 65, 104, 88, 112, 0, 72, 49, 0, 7, 196, 105, 116, 167, 184, 15, 6, 195,
+			74, 208, 128, 15, 9, 198, 13, 162, 206, 36, 84, 218, 15, 0, 19, 67, 12, 148, 192, 117, 37, 89, 65, 6, 111, 55, 0, 81, 109, 111,
+			108, 108, 32, 18, 67, 12, 148, 192, 117, 37, 89, 72, 6, 40, 51, 0, 81, 100, 117, 114, 32, 0, 19, 71, 25, 32, 78, 12, 148, 195,
+			60, 83, 51, 35, 50, 89, 37, 89, 49, 111, 0, 0, 6, 195, 104, 112, 115, 15, 10, 67, 61, 32, 193, 111, 51, 49, 35, 0, 0, 11,
+			200, 52, 19, 132, 20, 192, 146, 61, 64, 65, 0, 6, 195, 104, 194, 119, 15, 0, 7, 196, 95, 64, 201, 8, 15, 0, 0, 8, 197, 77,
+			162, 204, 180, 48, 15, 8, 197, 77, 160, 218, 180, 48, 15, 8, 197, 76, 180, 154, 180, 48, 15, 8, 197, 13, 160, 218, 180, 48, 15, 0,
+			7, 196, 93, 51, 149, 40, 15, 0, 7, 196, 80, 181, 201, 200, 15, 6, 195, 54, 113, 242, 15, 6, 195, 50, 209, 242, 15, 0, 9, 198,
+			93, 54, 131, 104, 226, 69, 15, 7, 196, 93, 41, 211, 200, 15, 7, 196, 56, 153, 211, 200, 15, 0, 8, 197, 93, 164, 167, 79, 32, 15,
+			8, 197, 81, 38, 173, 79, 32, 15, 6, 195, 81, 32, 70, 15, 8, 197, 76, 179, 49, 79, 32, 15, 6, 195, 203, 139, 67, 15, 7, 196,
+			17, 46, 45, 12, 15, 7, 196, 184, 210, 109, 12, 15, 0, 7, 196, 92, 145, 68, 104, 15, 7, 196, 76, 50, 50, 4, 15, 9, 198, 29,
+			38, 141, 38, 208, 192, 15, 13, 69, 40, 84, 147, 21, 144, 75, 109, 51, 88, 37, 0, 0, 0, 6, 195, 105, 114, 115, 15, 6, 195, 104,
+			114, 115, 15, 10, 199, 92, 50, 18, 104, 54, 173, 12, 15, 8, 197, 76, 180, 151, 5, 112, 15, 0, 6, 195, 95, 35, 205, 15, 8, 197,
+			65, 38, 173, 31, 32, 15, 0, 0, 6, 195, 201, 160, 87, 15, 0, 6, 195, 47, 32, 80, 15, 19, 71, 12, 244, 25, 72, 145, 200, 80,
+			49, 6, 111, 48, 112, 51, 35, 57, 47, 0, 9, 198, 63, 67, 73, 85, 49, 84, 65, 20, 1, 124, 49, 51, 4, 109, 89, 49, 35, 15,
+			48, 38, 111, 50, 6, 111, 84, 35, 0, 0, 0, 6, 195, 93, 41, 194, 15, 7, 196, 12, 131, 1, 40, 15, 10, 1, 126, 47, 6, 112,
+			55, 72, 35, 0, 0, 7, 196, 224, 115, 137, 40, 15, 14, 4, 95, 116, 108, 100, 88, 47, 6, 112, 55, 72, 114, 0, 0, 0, 6, 195,
+			52, 240, 218, 15, 6, 195, 16, 20, 218, 15, 13, 66, 209, 112, 97, 84, 38, 109, 50, 47, 112, 0, 24, 0, 9, 198, 19, 113, 206, 36,
+			84, 218, 15, 0, 16, 70, 12, 128, 82, 52, 19, 148, 91, 35, 51, 65, 35, 50, 0, 66, 4, 193, 124, 43, 4, 193, 124, 43, 0, 8,
+			197, 76, 50, 18, 85, 0, 15, 17, 70, 88, 20, 137, 137, 72, 147, 84, 35, 34, 57, 109, 47, 109, 0, 67, 0, 6, 195, 104, 217, 248,
+			15, 6, 195, 208, 203, 64, 15, 0, 7, 196, 93, 163, 103, 224, 15, 0, 6, 195, 225, 91, 128, 15, 6, 195, 42, 219, 128, 15, 6, 195,
+			18, 219, 128, 15, 23, 73, 12, 130, 80, 64, 83, 132, 4, 193, 64, 76, 37, 48, 109, 50, 72, 109, 57, 55, 0, 65, 46, 21, 73, 12,
+			130, 80, 64, 83, 132, 4, 193, 64, 76, 37, 48, 109, 50, 72, 109, 57, 55, 0, 0, 0, 9, 198, 209, 114, 79, 16, 54, 128, 15, 8,
+			197, 76, 50, 12, 62, 224, 15, 6, 195, 74, 112, 128, 15, 9, 198, 31, 32, 83, 104, 54, 128, 15, 0, 6, 195, 107, 133, 74, 15, 6,
+			195, 203, 139, 64, 15, 7, 196, 17, 162, 65, 8, 15, 0, 14, 69, 12, 194, 67, 34, 32, 49, 55, 37, 91, 6, 109, 0, 0, 7, 196,
+			93, 160, 137, 184, 15, 7, 196, 93, 38, 133, 184, 15, 0, 8, 197, 104, 70, 137, 20, 192, 15, 6, 195, 51, 67, 137, 15, 0, 7, 196,
+			28, 224, 83, 104, 15, 0, 7, 196, 104, 112, 83, 200, 15, 7, 196, 76, 147, 196, 200, 15, 7, 196, 64, 145, 75, 200, 15, 7, 196, 12,
+			144, 200, 200, 15, 10, 199, 5, 32, 200, 36, 66, 65, 44, 67, 0, 6, 195, 54, 113, 12, 15, 0, 8, 197, 93, 4, 154, 180, 48, 15,
+			7, 196, 77, 162, 204, 36, 15, 0, 8, 197, 76, 50, 18, 63, 48, 15, 0, 7, 196, 105, 112, 82, 200, 15, 7, 196, 93, 160, 137, 200,
+			15, 8, 197, 77, 4, 201, 20, 160, 15, 9, 198, 76, 50, 18, 104, 28, 192, 15, 0, 12, 201, 76, 50, 12, 36, 38, 116, 12, 145, 64,
+			15, 8, 197, 105, 50, 79, 19, 32, 15, 8, 197, 92, 208, 82, 107, 32, 15, 8, 197, 92, 70, 137, 63, 32, 15, 8, 197, 92, 70, 137,
+			7, 32, 15, 7, 196, 83, 16, 200, 200, 15, 8, 197, 77, 160, 218, 7, 32, 15, 8, 197, 77, 4, 201, 7, 32, 15, 7, 196, 45, 2,
+			109, 12, 15, 7, 196, 44, 195, 173, 12, 15, 8, 197, 12, 145, 82, 67, 32, 15, 8, 197, 12, 132, 153, 67, 32, 15, 8, 197, 12, 128,
+			201, 7, 32, 15, 7, 196, 12, 128, 237, 12, 15, 0, 7, 196, 224, 115, 173, 12, 15, 6, 195, 105, 112, 66, 15, 7, 196, 209, 2, 109,
+			12, 15, 8, 197, 208, 50, 67, 35, 32, 15, 0, 0, 10, 199, 104, 210, 69, 73, 160, 200, 200, 15, 8, 197, 11, 129, 56, 180, 48, 15,
+			0, 0, 8, 197, 105, 124, 167, 13, 160, 15, 9, 198, 105, 114, 69, 204, 54, 128, 15, 9, 198, 92, 70, 137, 196, 54, 128, 15, 9, 198,
+			12, 140, 133, 64, 54, 128, 15, 0, 6, 195, 105, 32, 119, 15, 6, 195, 93, 32, 119, 15, 6, 195, 76, 176, 119, 15, 0, 7, 196, 83,
+			35, 195, 104, 15, 0, 6, 195, 107, 32, 80, 15, 7, 196, 104, 34, 69, 208, 15, 8, 197, 45, 73, 210, 20, 160, 76, 0, 0, 7, 196,
+			104, 194, 67, 104, 15, 0, 8, 197, 29, 38, 141, 36, 160, 15, 0, 9, 198, 105, 114, 65, 200, 38, 64, 15, 9, 198, 105, 54, 153, 200,
+			38, 64, 15, 9, 198, 104, 226, 75, 200, 38, 64, 15, 9, 198, 104, 160, 68, 200, 38, 64, 15, 9, 198, 104, 115, 137, 200, 38, 64, 15,
+			9, 198, 93, 160, 137, 200, 38, 64, 15, 9, 198, 92, 193, 75, 200, 38, 64, 15, 9, 198, 92, 147, 7, 200, 38, 64, 15, 9, 198, 92,
+			116, 143, 200, 38, 64, 15, 9, 198, 80, 181, 201, 200, 38, 64, 15, 9, 198, 76, 50, 50, 100, 38, 64, 15, 9, 198, 64, 50, 15, 200,
+			38, 64, 15, 9, 198, 52, 147, 11, 200, 38, 64, 15, 9, 198, 45, 114, 84, 200, 38, 64, 15, 9, 198, 45, 32, 68, 200, 38, 64, 15,
+			9, 198, 17, 37, 201, 200, 38, 64, 15, 9, 198, 12, 131, 15, 200, 38, 64, 15, 6, 195, 76, 155, 80, 15, 0, 0, 0, 11, 200, 56,
+			145, 75, 82, 116, 133, 53, 80, 76, 8, 197, 4, 194, 83, 60, 224, 65, 0, 0, 6, 195, 93, 41, 248, 15, 6, 195, 55, 139, 64, 15,
+			6, 195, 51, 139, 64, 15, 0, 0, 7, 196, 80, 28, 195, 104, 15, 7, 196, 17, 44, 67, 104, 15, 0, 9, 198, 77, 163, 9, 208, 214,
+			64, 15, 6, 195, 107, 35, 238, 15, 7, 196, 77, 68, 143, 184, 15, 7, 196, 77, 4, 143, 184, 15, 7, 196, 76, 179, 210, 184, 15, 10,
+			199, 52, 144, 210, 61, 51, 198, 80, 65, 12, 201, 12, 132, 137, 77, 67, 208, 32, 84, 128, 65, 0, 13, 66, 17, 32, 72, 6, 111, 49,
+			47, 111, 51, 0, 24, 0, 6, 195, 93, 9, 202, 15, 9, 198, 65, 53, 18, 105, 155, 128, 15, 6, 195, 11, 17, 45, 76, 0, 6, 195,
+			104, 69, 116, 15, 0, 7, 196, 105, 114, 69, 208, 15, 7, 196, 93, 53, 1, 184, 15, 7, 196, 92, 226, 69, 208, 15, 7, 196, 81, 38,
+			133, 184, 15, 7, 196, 76, 179, 208, 184, 15, 7, 196, 65, 38, 133, 184, 15, 7, 196, 64, 197, 193, 184, 15, 7, 196, 64, 144, 200, 184,
+			15, 7, 196, 53, 38, 133, 184, 15, 7, 196, 29, 38, 129, 184, 15, 7, 196, 17, 38, 133, 184, 15, 21, 67, 64, 241, 5, 48, 111, 72,
+			6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 20, 67, 64, 241, 5, 48, 111, 72, 6, 109, 65, 50, 114, 0, 81, 109, 110,
+			196, 133, 32, 21, 67, 56, 17, 5, 50, 35, 72, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 20, 67, 56, 17, 5, 50,
+			35, 72, 6, 109, 65, 50, 114, 0, 81, 109, 110, 196, 133, 32, 0, 7, 196, 104, 18, 180, 184, 15, 8, 197, 12, 133, 201, 62, 224, 15,
+			0, 7, 196, 76, 188, 143, 204, 15, 6, 195, 29, 38, 119, 15, 7, 196, 29, 32, 83, 104, 15, 0, 7, 196, 93, 53, 15, 200, 15, 7,
+			196, 77, 4, 143, 200, 15, 6, 195, 79, 35, 242, 15, 7, 196, 76, 145, 75, 200, 15, 7, 196, 76, 80, 200, 200, 15, 8, 197, 53, 54,
+			131, 107, 16, 15, 8, 197, 9, 38, 141, 39, 16, 15, 0, 9, 198, 105, 112, 82, 200, 38, 64, 15, 9, 198, 104, 208, 82, 200, 38, 64,
+			15, 9, 198, 104, 116, 129, 200, 38, 64, 15, 9, 198, 93, 64, 82, 200, 38, 64, 15, 9, 198, 93, 53, 1, 200, 38, 64, 15, 9, 198,
+			93, 50, 79, 200, 38, 64, 15, 9, 198, 92, 192, 90, 200, 38, 64, 15, 9, 198, 92, 64, 82, 200, 38, 64, 15, 9, 198, 81, 37, 193,
+			200, 38, 64, 15, 9, 198, 77, 161, 68, 200, 38, 64, 15, 9, 198, 77, 70, 71, 200, 38, 64, 15, 9, 198, 77, 68, 149, 200, 38, 64,
+			15, 9, 198, 77, 4, 149, 200, 38, 64, 15, 9, 198, 76, 50, 50, 4, 38, 64, 15, 9, 198, 73, 161, 75, 200, 38, 64, 15, 9, 198,
+			64, 197, 207, 200, 38, 64, 15, 9, 198, 64, 197, 193, 200, 38, 64, 15, 9, 198, 52, 67, 15, 200, 38, 64, 15, 9, 198, 52, 20, 154,
+			200, 38, 64, 15, 9, 198, 29, 38, 143, 200, 38, 64, 15, 9, 198, 29, 38, 129, 200, 38, 64, 15, 9, 198, 17, 162, 79, 200, 38, 64,
+			15, 9, 198, 17, 33, 193, 200, 38, 64, 15, 9, 198, 16, 226, 79, 200, 38, 64, 15, 9, 198, 13, 162, 207, 200, 38, 64, 15, 9, 198,
+			12, 145, 75, 200, 38, 64, 15, 9, 198, 9, 32, 75, 200, 38, 64, 15, 11, 67, 12, 17, 133, 49, 35, 83, 109, 0, 66, 0, 14, 68,
+			52, 144, 77, 36, 65, 35, 57, 6, 35, 65, 37, 0, 0, 7, 196, 17, 84, 3, 104, 15, 7, 196, 16, 84, 3, 104, 15, 6, 195, 13,
+			166, 64, 72, 0, 7, 196, 93, 53, 1, 200, 15, 7, 196, 64, 197, 193, 200, 15, 7, 196, 52, 20, 154, 200, 15, 7, 196, 29, 38, 129,
+			200, 15, 0, 8, 197, 104, 210, 76, 47, 32, 15, 8, 197, 104, 36, 129, 47, 32, 15, 8, 197, 76, 50, 21, 19, 32, 15, 0, 8, 197,
+			77, 76, 67, 35, 32, 15, 19, 4, 95, 109, 99, 110, 50, 35, 72, 49, 51, 109, 97, 55, 6, 111, 50, 109, 0, 0, 8, 197, 12, 140,
+			167, 19, 32, 15, 0, 7, 196, 44, 252, 195, 104, 15, 0, 6, 195, 104, 227, 205, 15, 7, 196, 12, 131, 21, 64, 15, 0, 9, 198, 77,
+			172, 153, 208, 214, 64, 15, 8, 197, 185, 0, 114, 9, 144, 15, 7, 196, 104, 212, 149, 224, 15, 6, 195, 77, 172, 129, 15, 9, 198, 17,
+			33, 206, 36, 84, 218, 15, 7, 196, 185, 0, 83, 104, 15, 6, 195, 185, 0, 77, 15, 6, 195, 185, 0, 114, 15, 6, 195, 185, 0, 74,
+			15, 6, 195, 185, 0, 110, 15, 6, 195, 185, 0, 64, 15, 13, 69, 77, 68, 133, 21, 64, 89, 47, 51, 37, 47, 0, 0, 8, 197, 104,
+			44, 173, 19, 112, 15, 6, 195, 9, 32, 75, 15, 0, 7, 196, 93, 44, 67, 104, 15, 0, 0, 9, 198, 93, 50, 210, 104, 93, 0, 15,
+			0, 7, 196, 92, 156, 130, 100, 15, 7, 196, 64, 156, 130, 100, 15, 7, 196, 48, 252, 130, 100, 15, 7, 196, 48, 28, 130, 100, 15, 7,
+			196, 16, 252, 130, 100, 15, 7, 196, 16, 28, 130, 100, 15, 7, 196, 8, 156, 130, 100, 15, 7, 196, 92, 145, 83, 104, 15, 7, 196, 76,
+			50, 50, 100, 15, 0, 0, 9, 198, 76, 180, 154, 100, 54, 128, 15, 0, 0, 7, 196, 76, 176, 67, 104, 15, 0, 0, 8, 197, 76, 50,
+			12, 5, 0, 15, 18, 70, 4, 225, 197, 48, 144, 193, 35, 50, 81, 109, 55, 37, 49, 35, 0, 66, 6, 195, 28, 70, 120, 8, 0, 7,
+			196, 76, 176, 82, 224, 15, 19, 67, 65, 3, 210, 48, 111, 72, 48, 111, 51, 6, 40, 76, 67, 37, 49, 0, 24, 0, 0, 6, 195, 105,
+			35, 244, 15, 6, 195, 202, 208, 218, 15, 7, 196, 12, 131, 196, 220, 15, 0, 6, 195, 107, 134, 110, 15, 6, 195, 104, 226, 120, 15, 8,
+			197, 104, 224, 74, 19, 112, 15, 8, 197, 104, 68, 129, 19, 112, 15, 8, 197, 93, 161, 74, 19, 112, 15, 6, 195, 51, 134, 110, 15, 6,
+			195, 45, 44, 110, 15, 8, 197, 29, 32, 78, 19, 112, 15, 0, 9, 198, 104, 116, 129, 56, 77, 192, 15, 7, 196, 104, 35, 9, 224, 15,
+			6, 195, 29, 162, 109, 15, 11, 66, 13, 96, 89, 37, 84, 6, 37, 0, 13, 0, 0, 6, 195, 92, 213, 116, 15, 7, 196, 77, 166, 68,
+			220, 15, 8, 197, 45, 73, 210, 100, 208, 76, 0, 6, 195, 95, 134, 110, 15, 6, 195, 17, 33, 193, 15, 0, 0, 0, 6, 195, 95, 134,
+			114, 15, 9, 198, 92, 50, 18, 104, 50, 110, 15, 6, 195, 55, 134, 114, 15, 6, 195, 184, 210, 114, 15, 0, 0, 7, 196, 29, 38, 141,
+			36, 15, 23, 66, 16, 80, 72, 109, 84, 111, 55, 6, 35, 57, 0, 81, 118, 111, 108, 97, 105, 108, 108, 101, 32, 25, 66, 16, 80, 72,
+			109, 55, 35, 65, 109, 88, 6, 114, 0, 82, 108, 97, 32, 109, 97, 105, 115, 111, 110, 32, 17, 66, 16, 80, 72, 109, 57, 40, 51, 109,
+			0, 81, 105, 117, 114, 101, 32, 19, 66, 16, 80, 72, 109, 83, 35, 49, 47, 111, 0, 81, 102, 97, 99, 116, 111, 32, 23, 66, 209, 0,
+			97, 84, 38, 109, 50, 47, 109, 57, 15, 48, 35, 65, 38, 109, 67, 119, 37, 0, 24, 6, 195, 52, 20, 218, 76, 0, 9, 198, 92, 50,
+			18, 104, 50, 114, 15, 0, 6, 195, 107, 134, 114, 15, 6, 195, 93, 67, 208, 15, 6, 195, 51, 134, 114, 15, 0, 6, 195, 104, 208, 120,
+			15, 7, 196, 92, 179, 5, 64, 15, 6, 195, 65, 32, 120, 15, 7, 196, 51, 67, 137, 200, 15, 13, 68, 20, 161, 67, 80, 37, 90, 6,
+			109, 49, 47, 0, 0, 0, 0, 7, 196, 55, 64, 201, 40, 15, 0, 6, 195, 76, 208, 120, 15, 6, 195, 76, 176, 120, 15, 0, 9, 198,
+			93, 161, 193, 72, 77, 192, 15, 15, 69, 64, 242, 82, 61, 64, 48, 40, 58, 35, 51, 6, 111, 0, 0, 0, 8, 197, 76, 50, 50, 60,
+			208, 15, 7, 196, 76, 49, 68, 220, 15, 8, 197, 52, 144, 114, 20, 208, 76, 0, 7, 196, 95, 43, 67, 104, 15, 0, 6, 195, 105, 114,
+			74, 15, 0, 6, 195, 52, 243, 64, 15, 6, 195, 40, 83, 64, 15, 6, 195, 16, 19, 64, 15, 6, 195, 11, 17, 49, 76, 0, 6, 195,
+			104, 217, 195, 15, 8, 197, 92, 144, 200, 73, 160, 15, 0, 0, 13, 68, 88, 242, 76, 108, 84, 40, 35, 55, 35, 0, 67, 0, 0, 8,
+			197, 76, 96, 74, 13, 160, 15, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 17, 70, 24, 16, 201, 20, 225, 9, 83, 35, 89, 57, 109,
+			50, 72, 37, 0, 16, 7, 100, 39, 97, 109, 111, 117, 114, 72, 35, 65, 40, 51, 0, 66, 7, 195, 81, 147, 73, 72, 10, 0, 6, 195,
+			77, 50, 109, 15, 10, 68, 12, 243, 84, 20, 49, 114, 47, 0, 0, 8, 197, 77, 68, 154, 103, 128, 15, 6, 195, 17, 93, 0, 15, 0,
+			7, 196, 81, 37, 68, 220, 15, 7, 196, 77, 69, 68, 220, 15, 0, 8, 197, 77, 68, 154, 21, 0, 15, 0, 7, 196, 92, 180, 177, 184,
+			15, 7, 196, 81, 38, 177, 208, 15, 7, 196, 76, 180, 177, 184, 15, 6, 195, 52, 18, 173, 76, 0, 6, 195, 32, 28, 194, 15, 24, 69,
+			65, 38, 133, 104, 80, 48, 91, 109, 88, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 14, 67, 17, 97, 0, 72, 37, 84,
+			37, 72, 6, 37, 0, 13, 0, 6, 195, 107, 32, 119, 15, 7, 196, 92, 188, 149, 40, 15, 8, 197, 19, 129, 56, 102, 224, 15, 0, 6,
+			195, 55, 134, 110, 15, 6, 195, 184, 210, 110, 15, 0, 6, 195, 200, 176, 115, 15, 0, 6, 195, 92, 67, 242, 15, 0, 8, 197, 105, 112,
+			76, 13, 160, 15, 7, 196, 8, 192, 68, 200, 15, 0, 6, 195, 105, 114, 69, 15, 7, 196, 93, 163, 167, 92, 15, 7, 196, 76, 176, 77,
+			48, 15, 6, 195, 73, 114, 69, 15, 6, 195, 64, 50, 1, 15, 0, 6, 195, 18, 114, 128, 15, 21, 66, 12, 144, 89, 37, 72, 109, 84,
+			6, 35, 68, 0, 81, 100, 101, 118, 97, 110, 116, 32, 6, 194, 12, 144, 72, 10, 0, 6, 195, 105, 165, 114, 15, 7, 196, 93, 12, 153,
+			204, 15, 6, 195, 65, 37, 114, 15, 17, 67, 67, 34, 192, 48, 40, 58, 49, 6, 111, 84, 50, 37, 49, 0, 24, 0, 7, 196, 104, 160,
+			68, 200, 15, 8, 197, 92, 65, 80, 13, 160, 15, 0, 8, 197, 95, 134, 114, 9, 144, 15, 8, 197, 55, 134, 114, 9, 144, 15, 8, 197,
+			200, 179, 242, 9, 144, 15, 8, 197, 184, 210, 114, 9, 144, 15, 8, 197, 76, 180, 129, 19, 32, 15, 0, 9, 198, 64, 147, 242, 9, 157,
+			0, 15, 6, 195, 28, 20, 0, 15, 0, 0, 11, 200, 92, 50, 18, 104, 50, 114, 9, 144, 15, 7, 196, 104, 37, 68, 220, 15, 7, 196,
+			9, 37, 68, 220, 15, 7, 196, 9, 33, 68, 220, 15, 0, 0, 7, 196, 105, 123, 84, 64, 15, 0, 0, 6, 195, 95, 17, 55, 15, 6,
+			195, 67, 17, 55, 15, 0, 7, 196, 107, 43, 67, 104, 15, 0, 6, 195, 44, 195, 177, 15, 11, 68, 13, 84, 146, 100, 49, 35, 51, 112,
+			0, 0, 7, 196, 92, 145, 82, 104, 15, 9, 198, 77, 69, 201, 21, 33, 55, 15, 6, 195, 28, 29, 0, 15, 0, 8, 197, 53, 38, 133,
+			77, 160, 15, 8, 197, 29, 38, 133, 77, 160, 15, 8, 197, 12, 128, 82, 13, 160, 15, 0, 0, 7, 196, 92, 116, 143, 52, 15, 6, 195,
+			44, 229, 74, 15, 6, 195, 40, 84, 218, 15, 17, 71, 12, 128, 82, 52, 85, 83, 20, 91, 35, 51, 65, 109, 88, 0, 66, 0, 0, 8,
+			197, 104, 115, 210, 77, 160, 15, 6, 195, 52, 67, 9, 15, 20, 67, 32, 16, 128, 107, 35, 71, 37, 55, 37, 47, 111, 84, 6, 35, 50,
+			112, 0, 24, 0, 26, 68, 12, 20, 148, 20, 49, 35, 51, 47, 71, 55, 6, 35, 50, 91, 0, 81, 98, 108, 97, 110, 99, 104, 101, 32,
+			0, 12, 69, 12, 128, 82, 52, 80, 91, 35, 51, 65, 0, 0, 6, 195, 104, 64, 110, 15, 6, 195, 93, 2, 110, 15, 6, 195, 92, 227,
+			244, 15, 6, 195, 92, 192, 110, 15, 6, 195, 65, 44, 120, 15, 6, 195, 28, 224, 110, 15, 0, 6, 195, 29, 35, 205, 15, 0, 0, 11,
+			69, 69, 82, 67, 32, 80, 49, 37, 91, 0, 19, 71, 12, 19, 69, 52, 33, 82, 80, 49, 35, 65, 109, 65, 71, 6, 109, 51, 0, 14,
+			69, 52, 17, 1, 52, 80, 65, 35, 72, 6, 35, 65, 0, 0, 6, 195, 77, 64, 110, 15, 6, 195, 29, 162, 110, 15, 6, 195, 28, 226,
+			110, 15, 7, 196, 19, 113, 206, 180, 15, 6, 195, 16, 32, 110, 15, 0, 18, 67, 16, 82, 129, 72, 109, 90, 35, 84, 6, 37, 0, 81,
+			118, 117, 101, 32, 17, 67, 16, 82, 129, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 32, 0, 7, 196, 208, 193, 83, 104, 15, 8,
+			197, 45, 38, 148, 87, 64, 15, 6, 195, 17, 46, 25, 15, 0, 0, 0, 7, 196, 92, 194, 67, 104, 15, 6, 195, 80, 179, 242, 15, 6,
+			195, 52, 147, 242, 15, 7, 196, 45, 114, 67, 104, 15, 6, 195, 44, 148, 242, 15, 7, 196, 16, 32, 83, 104, 15, 0, 16, 70, 24, 244,
+			151, 5, 33, 0, 83, 111, 51, 58, 109, 51, 72, 0, 0, 0, 7, 196, 225, 156, 130, 100, 15, 7, 196, 225, 92, 130, 100, 15, 7, 196,
+			42, 220, 130, 100, 15, 7, 196, 18, 220, 130, 100, 15, 8, 197, 105, 114, 103, 107, 32, 15, 6, 195, 66, 114, 128, 15, 6, 195, 10, 114,
+			128, 15, 0, 6, 195, 76, 229, 114, 15, 6, 195, 65, 53, 114, 15, 6, 195, 64, 17, 50, 15, 6, 195, 44, 229, 114, 15, 6, 195, 40,
+			17, 50, 15, 6, 195, 28, 20, 242, 15, 6, 195, 13, 165, 114, 15, 0, 9, 198, 92, 188, 149, 200, 38, 64, 15, 9, 198, 83, 37, 75,
+			200, 38, 64, 15, 9, 198, 83, 16, 200, 200, 38, 64, 15, 9, 198, 208, 210, 79, 200, 38, 64, 15, 9, 198, 79, 32, 66, 200, 38, 64,
+			15, 9, 198, 76, 188, 149, 200, 38, 64, 15, 9, 198, 51, 67, 137, 200, 38, 64, 15, 9, 198, 19, 113, 193, 200, 38, 64, 15, 9, 198,
+			17, 46, 1, 200, 38, 64, 15, 0, 10, 199, 104, 36, 154, 100, 76, 130, 100, 15, 10, 199, 77, 68, 154, 100, 124, 130, 100, 15, 10, 199,
+			12, 132, 154, 12, 156, 130, 100, 15, 0, 7, 196, 93, 4, 129, 92, 15, 6, 195, 73, 172, 120, 15, 0, 12, 201, 104, 210, 69, 73, 160,
+			200, 200, 38, 64, 15, 6, 195, 64, 146, 128, 15, 6, 195, 16, 18, 128, 15, 6, 195, 40, 82, 128, 72, 0, 6, 195, 17, 32, 80, 15,
+			0, 8, 197, 52, 144, 114, 7, 64, 76, 12, 68, 72, 145, 200, 80, 51, 35, 57, 47, 0, 13, 0, 0, 7, 195, 81, 147, 64, 72, 10,
+			18, 67, 57, 83, 64, 50, 40, 65, 55, 111, 49, 0, 81, 108, 111, 99, 107, 32, 0, 6, 195, 95, 32, 119, 15, 6, 195, 80, 179, 177,
+			15, 7, 196, 76, 188, 149, 40, 15, 6, 195, 52, 179, 177, 15, 10, 199, 13, 165, 5, 73, 148, 212, 84, 65, 0, 8, 197, 40, 84, 212,
+			20, 208, 76, 0, 0, 7, 196, 105, 54, 153, 40, 15, 7, 196, 76, 179, 5, 40, 15, 18, 67, 52, 243, 128, 65, 114, 91, 109, 51, 0,
+			66, 81, 99, 104, 101, 114, 32, 18, 67, 52, 243, 128, 65, 111, 50, 35, 65, 37, 0, 67, 81, 97, 109, 105, 32, 0, 10, 199, 16, 148,
+			195, 61, 97, 82, 100, 66, 0, 9, 198, 104, 226, 69, 52, 54, 128, 15, 9, 198, 81, 35, 211, 104, 54, 128, 15, 0, 6, 195, 64, 197,
+			74, 15, 0, 8, 197, 224, 115, 242, 9, 144, 15, 8, 197, 74, 116, 242, 9, 144, 15, 8, 197, 200, 115, 242, 9, 144, 15, 8, 197, 28,
+			155, 114, 9, 144, 15, 7, 196, 93, 2, 83, 104, 15, 6, 195, 13, 160, 201, 15, 16, 67, 52, 116, 128, 65, 35, 81, 6, 37, 89, 47,
+			109, 51, 0, 24, 0, 9, 198, 104, 217, 203, 200, 38, 64, 15, 9, 198, 104, 217, 199, 200, 38, 64, 15, 9, 198, 104, 114, 109, 200, 38,
+			64, 15, 9, 198, 104, 66, 173, 200, 38, 64, 15, 9, 198, 93, 162, 109, 200, 38, 64, 15, 9, 198, 92, 114, 109, 200, 38, 64, 15, 9,
+			198, 92, 50, 109, 200, 38, 64, 15, 9, 198, 208, 210, 65, 200, 38, 64, 15, 9, 198, 76, 179, 45, 200, 38, 64, 15, 9, 198, 48, 115,
+			173, 200, 38, 64, 15, 9, 198, 44, 204, 83, 200, 38, 64, 15, 0, 10, 199, 77, 68, 154, 20, 124, 130, 100, 15, 10, 199, 76, 180, 154,
+			21, 12, 130, 100, 15, 10, 199, 76, 50, 18, 101, 12, 130, 100, 15, 10, 199, 65, 53, 18, 105, 156, 130, 100, 15, 10, 199, 29, 38, 141,
+			36, 252, 130, 100, 15, 10, 199, 29, 38, 141, 36, 28, 130, 100, 15, 10, 199, 9, 38, 141, 36, 252, 130, 100, 15, 10, 199, 9, 38, 141,
+			36, 28, 130, 100, 15, 0, 6, 195, 105, 112, 110, 15, 6, 195, 104, 144, 110, 15, 6, 195, 92, 144, 110, 15, 6, 195, 44, 20, 174, 15,
+			0, 6, 195, 224, 115, 238, 15, 7, 196, 76, 147, 210, 8, 15, 11, 200, 77, 161, 116, 12, 149, 83, 21, 64, 65, 9, 198, 52, 18, 211,
+			36, 213, 77, 65, 0, 7, 196, 44, 195, 137, 20, 15, 0, 8, 197, 105, 114, 69, 222, 224, 15, 16, 3, 226, 132, 162, 47, 51, 6, 109,
+			57, 72, 65, 35, 51, 49, 0, 0, 6, 195, 105, 114, 110, 15, 6, 195, 77, 48, 110, 15, 6, 195, 73, 112, 110, 15, 0, 0, 7, 196,
+			209, 2, 83, 104, 15, 0, 8, 197, 104, 116, 153, 222, 224, 15, 8, 197, 76, 50, 12, 60, 208, 15, 9, 198, 56, 145, 75, 82, 116, 173,
+			76, 0, 7, 196, 67, 41, 196, 220, 15, 0, 6, 195, 104, 227, 242, 15, 6, 195, 104, 195, 242, 15, 7, 196, 93, 160, 137, 40, 15, 6,
+			195, 65, 35, 242, 15, 6, 195, 29, 35, 242, 15, 10, 67, 12, 243, 1, 49, 111, 55, 35, 0, 0, 0, 9, 198, 93, 64, 83, 104, 54,
+			128, 15, 9, 198, 93, 54, 133, 64, 54, 128, 15, 9, 198, 44, 192, 83, 104, 54, 128, 15, 12, 68, 54, 180, 204, 36, 65, 40, 89, 55,
+			37, 0, 0, 6, 195, 77, 2, 74, 15, 6, 195, 40, 81, 26, 15, 5, 194, 8, 240, 8, 9, 198, 52, 147, 137, 53, 83, 64, 65, 0,
+			6, 195, 76, 181, 114, 15, 6, 195, 76, 144, 114, 15, 0, 0, 15, 70, 52, 21, 82, 20, 83, 128, 65, 111, 51, 6, 37, 50, 0, 0,
+			0, 0, 7, 196, 208, 226, 83, 104, 15, 0, 0, 7, 196, 104, 214, 116, 48, 15, 9, 198, 75, 131, 137, 21, 54, 128, 15, 0, 0, 12,
+			68, 40, 84, 146, 100, 75, 109, 51, 112, 0, 46, 10, 68, 40, 84, 146, 100, 75, 109, 51, 0, 0, 15, 67, 65, 35, 195, 48, 34, 6,
+			111, 117, 109, 50, 47, 0, 24, 0, 0, 7, 196, 104, 36, 143, 40, 15, 7, 196, 9, 166, 67, 104, 15, 20, 68, 65, 38, 133, 104, 48,
+			91, 6, 109, 88, 67, 38, 109, 0, 81, 110, 105, 101, 32, 21, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 67, 37, 107, 0, 81, 110,
+			105, 99, 104, 32, 20, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 84, 35, 89, 0, 81, 119, 97, 115, 32, 21, 68, 65, 38, 133, 104,
+			48, 91, 6, 109, 89, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 18, 68, 65, 38, 133, 104, 48, 91, 6, 109, 89, 47, 111, 0, 81,
+			116, 111, 32, 18, 68, 65, 38, 133, 104, 48, 91, 6, 109, 89, 47, 109, 0, 81, 116, 101, 32, 19, 68, 65, 38, 133, 104, 48, 91, 6,
+			109, 89, 47, 114, 0, 81, 116, 196, 133, 32, 21, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 67, 38, 114, 0, 81, 110, 105, 196, 133,
+			32, 20, 68, 65, 38, 133, 104, 48, 91, 6, 109, 88, 50, 35, 89, 0, 81, 110, 97, 115, 32, 0, 0, 0, 6, 195, 46, 114, 128, 15,
+			6, 195, 29, 32, 74, 15, 6, 195, 13, 160, 74, 15, 0, 6, 195, 92, 64, 64, 15, 6, 195, 80, 203, 64, 15, 6, 195, 17, 144, 128,
+			15, 6, 195, 12, 203, 64, 15, 0, 0, 6, 195, 77, 155, 128, 15, 6, 195, 57, 91, 128, 15, 6, 195, 53, 155, 128, 15, 0, 0, 6,
+			195, 104, 157, 46, 15, 6, 195, 67, 35, 238, 15, 6, 195, 200, 179, 238, 15, 6, 195, 200, 115, 238, 15, 6, 195, 40, 93, 46, 15, 6,
+			195, 28, 253, 46, 15, 6, 195, 11, 35, 238, 15, 6, 195, 76, 64, 64, 13, 0, 7, 196, 45, 32, 116, 184, 15, 7, 196, 52, 16, 201,
+			20, 76, 0, 4, 193, 148, 43, 4, 193, 148, 43, 0, 9, 198, 65, 38, 153, 43, 75, 128, 15, 9, 198, 65, 38, 133, 43, 75, 128, 15,
+			0, 6, 195, 79, 35, 238, 15, 6, 195, 64, 253, 46, 15, 6, 195, 52, 29, 46, 15, 22, 73, 52, 17, 5, 52, 242, 83, 20, 195, 5,
+			65, 35, 72, 65, 40, 35, 88, 6, 109, 55, 0, 0, 7, 196, 19, 113, 207, 184, 15, 0, 7, 196, 104, 36, 153, 48, 15, 6, 195, 93,
+			53, 115, 15, 0, 8, 197, 104, 147, 242, 9, 144, 15, 8, 197, 29, 35, 242, 9, 144, 15, 0, 16, 67, 52, 195, 5, 65, 35, 72, 65,
+			40, 35, 88, 6, 109, 55, 0, 10, 67, 40, 19, 133, 75, 109, 57, 50, 0, 0, 6, 195, 75, 131, 242, 15, 0, 0, 6, 195, 93, 2,
+			74, 15, 5, 194, 40, 16, 76, 0, 6, 195, 81, 146, 128, 15, 6, 195, 29, 32, 77, 15, 6, 195, 12, 194, 64, 15, 0, 6, 195, 224,
+			115, 242, 15, 6, 195, 92, 181, 80, 15, 8, 197, 92, 50, 50, 63, 48, 15, 6, 195, 200, 179, 242, 15, 6, 195, 200, 115, 242, 15, 6,
+			195, 36, 50, 0, 72, 0, 7, 196, 92, 180, 143, 64, 15, 7, 196, 83, 37, 75, 200, 15, 17, 4, 95, 111, 103, 111, 88, 111, 81, 6,
+			111, 50, 80, 38, 109, 65, 0, 0, 0, 9, 198, 95, 64, 201, 20, 188, 128, 15, 0, 0, 0, 16, 67, 65, 35, 198, 48, 51, 111, 83,
+			6, 109, 89, 111, 51, 0, 24, 0, 19, 71, 21, 99, 204, 85, 66, 79, 56, 109, 84, 111, 55, 6, 40, 91, 112, 50, 0, 0, 0, 8,
+			197, 19, 113, 206, 36, 160, 15, 0, 6, 195, 73, 114, 74, 15, 0, 7, 196, 105, 112, 82, 104, 15, 7, 196, 104, 64, 82, 104, 15, 15,
+			70, 12, 243, 84, 21, 52, 197, 49, 114, 47, 6, 109, 89, 0, 0, 0, 10, 199, 56, 145, 75, 82, 116, 154, 100, 76, 0, 0, 6, 195,
+			64, 235, 64, 15, 6, 195, 28, 235, 64, 15, 0, 6, 195, 225, 43, 64, 15, 0, 6, 195, 93, 155, 128, 15, 6, 195, 73, 155, 128, 15,
+			6, 195, 45, 91, 128, 15, 6, 195, 17, 91, 128, 15, 6, 195, 13, 91, 128, 15, 6, 195, 9, 155, 128, 15, 17, 70, 12, 243, 5, 76,
+			192, 87, 49, 111, 55, 109, 89, 55, 111, 58, 0, 6, 195, 9, 155, 128, 76, 0, 0, 6, 195, 64, 29, 46, 15, 6, 195, 52, 253, 46,
+			15, 0, 12, 68, 17, 34, 86, 20, 72, 34, 35, 57, 84, 0, 0, 9, 198, 12, 132, 154, 12, 155, 128, 15, 18, 67, 37, 65, 0, 37,
+			15, 47, 35, 49, 15, 72, 35, 55, 109, 57, 0, 24, 0, 7, 196, 105, 38, 133, 12, 15, 7, 196, 77, 2, 69, 12, 15, 6, 195, 64,
+			144, 110, 15, 6, 195, 45, 38, 110, 15, 14, 4, 95, 98, 114, 118, 71, 51, 6, 109, 84, 37, 89, 0, 0, 8, 197, 95, 64, 201, 20,
+			192, 15, 6, 195, 92, 116, 129, 15, 6, 195, 47, 35, 244, 15, 6, 195, 41, 81, 55, 15, 9, 67, 56, 85, 192, 67, 38, 40, 0, 10,
+			199, 28, 83, 148, 48, 83, 65, 56, 65, 0, 7, 196, 104, 128, 115, 8, 15, 0, 8, 197, 93, 161, 74, 210, 224, 15, 15, 67, 45, 5,
+			0, 49, 35, 48, 6, 37, 47, 35, 50, 0, 24, 10, 199, 12, 19, 129, 88, 84, 129, 48, 66, 0, 6, 195, 77, 50, 74, 15, 21, 67,
+			37, 68, 0, 37, 15, 47, 109, 65, 40, 15, 48, 111, 72, 111, 71, 50, 109, 0, 24, 21, 4, 95, 97, 99, 50, 101, 4, 40, 68, 81,
+			35, 51, 6, 40, 65, 55, 35, 58, 47, 0, 0, 6, 195, 80, 195, 242, 15, 7, 196, 52, 179, 137, 40, 15, 7, 196, 48, 115, 173, 12,
+			15, 0, 6, 195, 18, 222, 0, 15, 0, 7, 196, 104, 217, 203, 200, 15, 7, 196, 17, 46, 15, 200, 15, 10, 199, 52, 145, 76, 39, 64,
+			201, 20, 76, 0, 8, 197, 93, 50, 109, 47, 32, 15, 5, 194, 16, 240, 76, 8, 197, 8, 16, 129, 12, 128, 66, 0, 6, 195, 225, 43,
+			67, 15, 7, 196, 52, 67, 45, 12, 15, 7, 196, 13, 162, 193, 40, 15, 0, 7, 196, 208, 226, 109, 12, 15, 7, 196, 208, 210, 109, 12,
+			15, 7, 196, 75, 131, 173, 12, 15, 7, 196, 45, 114, 84, 200, 15, 0, 8, 197, 104, 35, 1, 19, 32, 15, 8, 197, 92, 180, 129, 19,
+			32, 15, 8, 197, 76, 50, 12, 63, 32, 15, 9, 198, 65, 53, 18, 106, 208, 192, 15, 9, 198, 53, 54, 131, 106, 208, 192, 15, 9, 198,
+			9, 38, 141, 38, 208, 192, 15, 0, 8, 197, 208, 50, 69, 47, 32, 15, 9, 198, 77, 4, 154, 100, 180, 154, 15, 0, 11, 200, 76, 140,
+			153, 9, 157, 3, 36, 80, 15, 14, 69, 4, 225, 18, 21, 112, 109, 50, 72, 34, 57, 40, 0, 0, 12, 68, 4, 66, 69, 84, 35, 72,
+			57, 6, 109, 0, 0, 7, 196, 95, 41, 195, 104, 15, 0, 0, 6, 195, 92, 193, 119, 15, 6, 195, 31, 35, 244, 15, 0, 7, 196, 104,
+			124, 143, 208, 15, 0, 0, 8, 197, 65, 53, 18, 107, 16, 15, 0, 6, 195, 105, 41, 194, 15, 6, 195, 104, 73, 194, 15, 7, 196, 92,
+			116, 129, 40, 15, 15, 70, 12, 243, 12, 132, 113, 64, 49, 111, 55, 109, 90, 0, 66, 0, 8, 197, 104, 36, 143, 13, 160, 15, 7, 196,
+			77, 3, 1, 52, 15, 8, 197, 76, 53, 75, 73, 160, 15, 8, 197, 64, 50, 14, 36, 160, 15, 6, 195, 44, 30, 0, 15, 0, 0, 6,
+			195, 13, 165, 74, 15, 6, 195, 9, 144, 218, 15, 0, 16, 3, 95, 51, 88, 47, 91, 112, 120, 6, 109, 97, 80, 38, 37, 0, 0, 6,
+			195, 72, 252, 192, 15, 6, 195, 72, 28, 192, 15, 6, 195, 52, 156, 192, 15, 0, 7, 196, 80, 181, 201, 180, 15, 7, 196, 17, 37, 201,
+			180, 15, 0, 6, 195, 54, 219, 128, 15, 6, 195, 39, 75, 128, 15, 10, 199, 64, 156, 67, 37, 84, 197, 80, 65, 0, 6, 195, 105, 115,
+			247, 15, 6, 195, 46, 212, 218, 15, 9, 198, 12, 132, 154, 13, 171, 64, 15, 0, 0, 9, 198, 80, 50, 14, 36, 91, 128, 15, 9, 198,
+			29, 38, 141, 36, 91, 128, 15, 7, 196, 9, 156, 133, 52, 76, 27, 68, 76, 245, 78, 16, 89, 35, 58, 50, 72, 15, 75, 6, 40, 89,
+			109, 51, 0, 81, 106, 117, 105, 99, 101, 114, 32, 0, 7, 196, 104, 34, 69, 12, 15, 6, 195, 81, 156, 128, 15, 9, 198, 209, 114, 65,
+			16, 54, 128, 15, 9, 198, 65, 53, 18, 105, 148, 218, 15, 6, 195, 53, 156, 128, 15, 0, 11, 200, 76, 50, 50, 100, 38, 116, 53, 144,
+			15, 6, 195, 104, 116, 129, 15, 6, 195, 47, 37, 74, 15, 6, 195, 40, 81, 55, 15, 6, 195, 12, 81, 55, 15, 0, 10, 3, 95, 49,
+			67, 89, 47, 6, 111, 0, 0, 0, 8, 197, 77, 172, 153, 9, 144, 15, 7, 196, 104, 210, 69, 204, 15, 0, 7, 196, 93, 67, 195, 104,
+			15, 7, 196, 44, 195, 137, 40, 15, 7, 196, 9, 35, 173, 12, 15, 0, 7, 196, 93, 64, 82, 200, 15, 7, 196, 92, 64, 82, 200, 15,
+			8, 197, 80, 181, 201, 180, 48, 15, 8, 197, 80, 50, 14, 180, 48, 15, 8, 197, 76, 50, 14, 180, 48, 15, 7, 196, 45, 32, 68, 200,
+			15, 8, 197, 17, 37, 201, 180, 48, 15, 0, 0, 6, 195, 105, 165, 74, 15, 5, 194, 40, 80, 15, 18, 3, 95, 49, 57, 120, 109, 84,
+			38, 109, 47, 50, 6, 35, 97, 119, 109, 0, 0, 8, 197, 93, 160, 146, 63, 48, 15, 9, 198, 64, 145, 82, 104, 50, 50, 15, 7, 196,
+			64, 50, 1, 40, 15, 7, 196, 52, 179, 173, 12, 15, 8, 197, 12, 132, 154, 7, 48, 15, 16, 3, 95, 49, 56, 111, 97, 109, 65, 50,
+			6, 35, 97, 119, 109, 0, 0, 7, 196, 105, 64, 82, 200, 15, 6, 195, 105, 54, 80, 15, 7, 196, 104, 192, 90, 200, 15, 7, 196, 104,
+			112, 68, 200, 15, 7, 196, 104, 64, 82, 200, 15, 8, 197, 76, 50, 12, 4, 160, 15, 7, 196, 29, 38, 90, 200, 15, 15, 3, 95, 50,
+			67, 72, 84, 38, 6, 109, 97, 80, 38, 109, 0, 0, 9, 198, 77, 172, 153, 208, 50, 69, 15, 8, 197, 104, 116, 153, 107, 32, 15, 8,
+			197, 104, 34, 69, 31, 32, 15, 8, 197, 93, 50, 79, 19, 32, 15, 8, 197, 92, 50, 69, 47, 32, 15, 8, 197, 76, 180, 154, 103, 32,
+			15, 8, 197, 51, 67, 137, 180, 48, 15, 8, 197, 45, 38, 133, 67, 32, 15, 8, 197, 12, 133, 201, 63, 32, 15, 8, 197, 12, 133, 201,
+			7, 32, 15, 8, 197, 12, 128, 201, 63, 32, 15, 0, 7, 196, 93, 53, 1, 92, 15, 0, 11, 200, 77, 172, 153, 9, 157, 3, 36, 80,
+			15, 0, 0, 9, 198, 76, 50, 50, 103, 67, 89, 15, 7, 196, 9, 156, 129, 52, 76, 0, 16, 3, 95, 49, 49, 57, 109, 72, 109, 50,
+			6, 35, 97, 119, 109, 0, 0, 6, 195, 107, 41, 248, 15, 6, 195, 95, 41, 248, 15, 6, 195, 92, 145, 119, 15, 6, 195, 92, 17, 55,
+			15, 13, 3, 95, 49, 48, 120, 6, 109, 97, 109, 67, 119, 0, 0, 6, 195, 93, 69, 76, 15, 9, 198, 11, 17, 26, 36, 83, 89, 76,
+			13, 3, 95, 51, 67, 47, 91, 6, 112, 89, 47, 35, 0, 15, 3, 95, 49, 51, 47, 91, 112, 50, 6, 35, 97, 119, 109, 0, 0, 8,
+			197, 77, 12, 129, 13, 160, 15, 8, 197, 76, 179, 243, 13, 160, 15, 8, 197, 56, 147, 243, 13, 160, 15, 7, 196, 17, 37, 201, 196, 15,
+			8, 197, 9, 38, 177, 13, 160, 15, 15, 3, 95, 49, 50, 72, 84, 35, 50, 6, 35, 97, 119, 109, 0, 0, 8, 197, 105, 38, 114, 9,
+			144, 15, 8, 197, 104, 227, 242, 9, 144, 15, 8, 197, 81, 37, 114, 9, 144, 15, 8, 197, 65, 35, 242, 9, 144, 15, 8, 197, 45, 2,
+			114, 9, 144, 15, 16, 3, 95, 49, 53, 48, 57, 109, 47, 50, 6, 35, 97, 119, 109, 0, 0, 7, 196, 104, 64, 83, 104, 15, 16, 3,
+			95, 49, 52, 76, 47, 109, 51, 50, 6, 35, 97, 119, 109, 0, 0, 17, 3, 95, 49, 55, 97, 109, 72, 109, 65, 50, 6, 35, 97, 119,
+			109, 0, 0, 15, 3, 95, 49, 54, 91, 109, 89, 50, 6, 35, 97, 119, 109, 0, 0, 6, 195, 93, 165, 74, 15, 7, 196, 13, 172, 129,
+			64, 15, 0, 6, 195, 225, 33, 64, 15, 7, 196, 45, 32, 67, 104, 15, 13, 67, 81, 148, 192, 47, 112, 97, 113, 117, 112, 0, 24, 18,
+			3, 95, 55, 88, 97, 109, 72, 109, 65, 120, 6, 109, 97, 111, 50, 47, 0, 0, 6, 195, 92, 156, 192, 15, 6, 195, 80, 252, 192, 15,
+			6, 195, 75, 139, 64, 15, 6, 195, 28, 252, 192, 15, 6, 195, 28, 156, 192, 15, 15, 3, 95, 52, 67, 76, 47, 6, 109, 51, 112, 89,
+			47, 35, 0, 0, 0, 6, 195, 76, 179, 244, 15, 0, 7, 196, 93, 163, 143, 208, 15, 9, 198, 93, 54, 131, 104, 235, 64, 15, 0, 6,
+			195, 224, 112, 77, 15, 7, 196, 93, 12, 143, 184, 15, 6, 195, 47, 32, 77, 15, 0, 8, 197, 76, 50, 15, 19, 112, 15, 0, 6, 195,
+			93, 156, 128, 15, 9, 198, 93, 54, 131, 104, 226, 74, 15, 6, 195, 92, 69, 116, 15, 6, 195, 73, 156, 128, 15, 6, 195, 45, 92, 128,
+			15, 6, 195, 17, 92, 128, 15, 6, 195, 9, 156, 128, 15, 6, 195, 9, 156, 128, 76, 0, 7, 196, 104, 226, 69, 208, 15, 6, 195, 208,
+			226, 74, 15, 0, 7, 196, 56, 145, 116, 184, 15, 15, 3, 95, 53, 67, 48, 38, 6, 109, 67, 119, 89, 109, 47, 0, 0, 7, 196, 80,
+			181, 201, 196, 15, 7, 196, 77, 162, 207, 48, 15, 7, 196, 11, 113, 26, 36, 15, 0, 8, 197, 92, 34, 114, 9, 144, 15, 8, 197, 80,
+			194, 114, 9, 144, 15, 8, 197, 80, 179, 242, 9, 144, 15, 8, 197, 76, 147, 242, 9, 144, 15, 8, 197, 52, 147, 242, 9, 144, 15, 8,
+			197, 44, 148, 242, 9, 144, 15, 8, 197, 28, 226, 114, 9, 144, 15, 8, 197, 12, 226, 114, 9, 144, 15, 7, 196, 93, 53, 1, 204, 15,
+			8, 197, 29, 38, 141, 39, 16, 15, 0, 6, 195, 12, 204, 64, 15, 22, 72, 77, 8, 131, 36, 19, 9, 82, 32, 89, 48, 109, 89, 57,
+			35, 55, 37, 47, 6, 109, 0, 14, 4, 95, 97, 99, 117, 10, 6, 111, 89, 47, 51, 109, 0, 0, 7, 196, 92, 192, 90, 200, 15, 8,
+			197, 80, 50, 14, 36, 160, 15, 7, 196, 77, 161, 68, 200, 15, 8, 197, 76, 50, 14, 36, 160, 15, 0, 7, 196, 19, 113, 207, 200, 15,
+			0, 6, 195, 227, 35, 208, 15, 6, 195, 105, 38, 74, 15, 7, 196, 77, 68, 143, 204, 15, 8, 197, 65, 38, 173, 19, 32, 15, 5, 194,
+			52, 16, 15, 6, 195, 45, 2, 74, 15, 5, 194, 52, 16, 76, 0, 0, 7, 196, 73, 161, 68, 200, 15, 7, 196, 65, 80, 200, 200, 15,
+			7, 196, 12, 133, 68, 200, 15, 4, 193, 160, 43, 4, 193, 160, 43, 13, 3, 95, 54, 67, 91, 6, 109, 97, 89, 109, 47, 0, 0, 8,
+			197, 105, 115, 5, 47, 32, 15, 8, 197, 105, 38, 133, 47, 32, 15, 8, 197, 105, 38, 133, 19, 32, 15, 8, 197, 104, 35, 1, 47, 32,
+			15, 8, 197, 92, 116, 153, 107, 32, 15, 8, 197, 92, 34, 69, 31, 32, 15, 8, 197, 77, 162, 204, 39, 32, 15, 8, 197, 77, 160, 218,
+			87, 32, 15, 8, 197, 77, 160, 218, 63, 32, 15, 8, 197, 77, 4, 201, 63, 32, 15, 8, 197, 77, 2, 69, 47, 32, 15, 8, 197, 76,
+			50, 12, 7, 32, 15, 7, 196, 12, 131, 1, 64, 15, 0, 8, 197, 105, 114, 109, 19, 32, 15, 6, 195, 28, 20, 130, 15, 0, 8, 197,
+			77, 160, 218, 101, 0, 15, 6, 195, 53, 35, 247, 15, 0, 7, 196, 104, 18, 132, 220, 15, 10, 199, 77, 2, 69, 73, 160, 200, 200, 15,
+			0, 8, 197, 76, 145, 82, 19, 112, 15, 0, 9, 198, 65, 38, 133, 40, 77, 192, 15, 6, 195, 56, 145, 116, 15, 6, 195, 52, 145, 116,
+			15, 0, 7, 196, 76, 181, 193, 208, 15, 15, 3, 95, 50, 88, 72, 84, 35, 120, 6, 109, 97, 119, 35, 0, 0, 7, 196, 105, 35, 196,
+			220, 15, 8, 197, 93, 163, 137, 23, 64, 15, 7, 196, 92, 82, 132, 220, 15, 7, 196, 9, 35, 196, 220, 15, 16, 5, 95, 48, 77, 65,
+			49, 47, 112, 97, 6, 111, 50, 117, 109, 0, 15, 3, 95, 55, 67, 97, 6, 109, 72, 109, 65, 89, 109, 47, 0, 0, 8, 197, 92, 145,
+			115, 13, 160, 15, 8, 197, 94, 229, 201, 13, 160, 15, 8, 197, 77, 76, 143, 13, 160, 15, 0, 8, 197, 104, 214, 114, 9, 144, 15, 8,
+			197, 104, 195, 242, 9, 144, 15, 8, 197, 93, 38, 114, 9, 144, 15, 8, 197, 80, 195, 242, 9, 144, 15, 8, 197, 77, 166, 114, 9, 144,
+			15, 8, 197, 77, 172, 129, 9, 144, 15, 8, 197, 45, 38, 114, 9, 144, 15, 8, 197, 28, 227, 242, 9, 144, 15, 18, 5, 95, 48, 77,
+			65, 51, 65, 38, 37, 55, 57, 6, 35, 51, 72, 112, 0, 0, 6, 195, 80, 204, 64, 15, 7, 196, 9, 35, 137, 40, 15, 17, 5, 95,
+			48, 77, 65, 50, 65, 38, 37, 55, 57, 6, 111, 50, 112, 0, 0, 8, 197, 76, 179, 14, 36, 160, 15, 8, 197, 76, 50, 12, 20, 160,
+			15, 7, 196, 64, 50, 15, 52, 15, 6, 195, 52, 30, 0, 15, 0, 17, 5, 95, 48, 77, 65, 52, 71, 38, 37, 55, 57, 6, 111, 50,
+			112, 0, 0, 6, 195, 93, 38, 74, 15, 6, 195, 77, 166, 74, 15, 0, 6, 195, 80, 176, 64, 15, 0, 6, 195, 200, 176, 77, 15, 8,
+			197, 9, 161, 21, 73, 160, 15, 11, 68, 4, 194, 67, 20, 109, 55, 37, 89, 0, 14, 3, 95, 56, 67, 6, 111, 97, 109, 65, 89, 109,
+			47, 0, 0, 6, 195, 45, 93, 0, 15, 10, 199, 76, 145, 68, 20, 212, 197, 80, 65, 0, 6, 195, 104, 227, 244, 15, 6, 195, 65, 35,
+			244, 15, 7, 196, 51, 67, 137, 180, 15, 0, 8, 197, 77, 68, 154, 23, 128, 15, 8, 197, 17, 162, 69, 75, 128, 15, 0, 7, 196, 104,
+			82, 132, 220, 15, 7, 196, 56, 18, 132, 220, 15, 6, 195, 203, 129, 64, 15, 6, 195, 45, 2, 109, 15, 12, 3, 95, 63, 63, 89, 112,
+			65, 71, 111, 55, 0, 0, 7, 196, 209, 114, 113, 184, 15, 8, 197, 76, 212, 143, 19, 112, 15, 0, 7, 196, 93, 50, 193, 224, 15, 9,
+			198, 81, 114, 69, 72, 77, 192, 15, 6, 195, 76, 181, 116, 15, 9, 198, 65, 38, 153, 40, 77, 192, 15, 7, 196, 11, 43, 68, 220, 15,
+			7, 196, 44, 243, 1, 224, 66, 0, 6, 195, 81, 37, 193, 15, 6, 195, 208, 226, 110, 15, 6, 195, 76, 220, 110, 15, 17, 3, 95, 52,
+			88, 76, 47, 109, 51, 120, 6, 109, 97, 80, 38, 37, 0, 0, 7, 196, 105, 114, 68, 220, 15, 7, 196, 92, 114, 113, 184, 15, 7, 196,
+			81, 37, 207, 52, 15, 7, 196, 77, 12, 153, 184, 15, 7, 196, 64, 197, 207, 52, 15, 7, 196, 55, 64, 201, 184, 15, 7, 196, 17, 33,
+			207, 52, 15, 17, 3, 95, 57, 67, 120, 6, 109, 84, 38, 109, 67, 119, 89, 109, 47, 0, 0, 7, 196, 105, 124, 68, 220, 15, 7, 196,
+			52, 144, 114, 100, 76, 0, 8, 197, 104, 38, 114, 9, 144, 15, 8, 197, 104, 34, 114, 9, 144, 15, 8, 197, 92, 181, 114, 9, 144, 15,
+			8, 197, 77, 2, 114, 9, 144, 15, 8, 197, 56, 146, 242, 9, 144, 15, 8, 197, 48, 22, 178, 9, 144, 15, 6, 195, 104, 217, 215, 15,
+			8, 197, 75, 131, 137, 198, 224, 15, 0, 6, 195, 64, 236, 64, 15, 9, 198, 19, 113, 206, 39, 27, 128, 15, 9, 67, 76, 148, 133, 89,
+			37, 51, 0, 0, 6, 195, 208, 226, 114, 15, 0, 18, 67, 56, 17, 0, 50, 6, 35, 72, 84, 35, 89, 0, 81, 119, 97, 115, 32, 18,
+			67, 56, 17, 0, 50, 6, 35, 47, 47, 112, 65, 0, 81, 116, 121, 109, 32, 16, 67, 56, 17, 0, 50, 6, 35, 47, 47, 111, 0, 81,
+			116, 111, 32, 16, 67, 56, 17, 0, 50, 6, 35, 47, 47, 109, 0, 81, 116, 101, 32, 17, 67, 56, 17, 0, 50, 6, 35, 47, 47, 114,
+			0, 81, 116, 196, 133, 32, 18, 67, 56, 17, 0, 50, 6, 35, 72, 67, 38, 109, 0, 81, 110, 105, 101, 32, 19, 67, 56, 17, 0, 50,
+			6, 35, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 18, 67, 56, 17, 0, 50, 6, 35, 72, 67, 37, 65, 0, 81, 110, 105, 109,
+			32, 19, 67, 56, 17, 0, 50, 6, 35, 72, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 18, 67, 56, 17, 0, 50, 6, 35, 72, 50,
+			35, 89, 0, 81, 110, 97, 115, 32, 6, 195, 56, 17, 0, 76, 0, 16, 66, 56, 16, 50, 6, 35, 84, 35, 89, 0, 81, 119, 97, 115,
+			32, 17, 66, 56, 16, 50, 6, 35, 47, 112, 65, 10, 0, 81, 116, 121, 109, 32, 17, 66, 56, 16, 50, 6, 35, 47, 112, 107, 0, 81,
+			116, 121, 99, 104, 32, 14, 66, 56, 16, 50, 6, 35, 47, 111, 0, 81, 116, 111, 32, 14, 66, 56, 16, 50, 6, 35, 47, 109, 0, 81,
+			116, 101, 32, 15, 66, 56, 16, 50, 6, 35, 47, 114, 0, 81, 116, 196, 133, 32, 17, 66, 56, 16, 50, 6, 35, 67, 38, 114, 0, 81,
+			110, 105, 196, 133, 32, 16, 66, 56, 16, 50, 6, 35, 67, 38, 109, 0, 81, 110, 105, 101, 32, 17, 66, 56, 16, 50, 6, 35, 67, 37,
+			107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 56, 16, 50, 6, 35, 67, 37, 65, 0, 81, 110, 105, 109, 32, 18, 66, 56, 16, 50, 6,
+			35, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 16, 66, 56, 16, 50, 6, 35, 50, 35, 89, 0, 81, 110, 97, 115, 32, 18, 66,
+			56, 16, 50, 6, 35, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 5, 194, 56, 16, 76, 0, 6, 195, 28, 243, 0, 15, 6, 195,
+			28, 236, 66, 15, 17, 3, 95, 53, 88, 48, 38, 109, 67, 120, 6, 109, 97, 111, 50, 47, 0, 0, 8, 197, 92, 145, 84, 73, 160, 15,
+			8, 197, 77, 68, 129, 77, 160, 15, 8, 197, 64, 145, 80, 73, 160, 15, 0, 16, 4, 95, 114, 110, 103, 88, 49, 6, 40, 58, 80, 38,
+			109, 65, 0, 0, 0, 0, 6, 195, 107, 32, 77, 15, 7, 196, 93, 48, 68, 220, 15, 7, 196, 93, 35, 196, 220, 15, 7, 196, 29, 35,
+			196, 220, 15, 6, 195, 9, 156, 129, 76, 0, 8, 197, 77, 162, 207, 19, 112, 15, 0, 9, 198, 104, 36, 154, 100, 77, 192, 15, 9, 198,
+			77, 2, 69, 72, 77, 192, 15, 0, 15, 67, 81, 163, 128, 47, 111, 15, 88, 50, 35, 76, 112, 0, 24, 6, 195, 76, 156, 64, 72, 16,
+			3, 95, 54, 88, 91, 109, 96, 120, 6, 109, 97, 111, 50, 47, 0, 0, 7, 196, 105, 48, 68, 220, 15, 7, 196, 92, 161, 68, 220, 15,
+			6, 195, 77, 67, 49, 15, 7, 196, 13, 162, 207, 52, 15, 0, 0, 4, 193, 164, 43, 4, 193, 164, 43, 0, 6, 195, 52, 19, 64, 15,
+			6, 195, 28, 236, 64, 15, 9, 198, 19, 117, 201, 196, 54, 128, 15, 8, 197, 12, 140, 167, 19, 112, 15, 6, 195, 52, 19, 64, 76, 0,
+			8, 197, 93, 50, 207, 13, 160, 15, 9, 198, 76, 50, 50, 156, 77, 192, 15, 6, 195, 48, 94, 0, 15, 6, 195, 45, 114, 76, 15, 6,
+			195, 19, 113, 193, 15, 0, 0, 6, 195, 33, 80, 218, 15, 0, 18, 72, 8, 80, 85, 40, 243, 1, 37, 48, 71, 111, 90, 111, 55, 6,
+			109, 0, 0, 8, 197, 12, 131, 85, 73, 160, 15, 8, 197, 12, 128, 197, 77, 160, 15, 0, 15, 69, 21, 48, 193, 64, 80, 109, 89, 49,
+			6, 109, 57, 48, 0, 0, 0, 7, 196, 77, 4, 177, 224, 15, 0, 7, 196, 104, 161, 68, 220, 15, 7, 196, 104, 114, 109, 184, 15, 7,
+			196, 52, 179, 173, 184, 15, 7, 196, 51, 67, 137, 184, 15, 6, 195, 48, 115, 173, 15, 0, 8, 197, 64, 50, 14, 182, 224, 15, 8, 197,
+			11, 113, 26, 38, 224, 15, 9, 198, 52, 144, 114, 103, 67, 89, 76, 15, 69, 16, 83, 5, 80, 80, 72, 37, 55, 6, 109, 57, 47, 0,
+			0, 9, 198, 93, 38, 133, 77, 160, 218, 15, 6, 195, 76, 144, 110, 15, 21, 73, 88, 147, 129, 36, 116, 133, 81, 65, 64, 58, 37, 50,
+			109, 81, 34, 109, 47, 0, 67, 0, 9, 198, 77, 12, 129, 77, 160, 218, 15, 17, 3, 95, 56, 88, 111, 97, 109, 65, 120, 6, 109, 97,
+			111, 50, 47, 0, 0, 7, 196, 93, 68, 167, 40, 15, 6, 195, 74, 113, 55, 15, 6, 195, 201, 81, 55, 15, 6, 195, 10, 113, 55, 15,
+			0, 8, 197, 80, 50, 14, 182, 224, 15, 8, 197, 76, 50, 14, 182, 224, 15, 0, 6, 195, 95, 129, 115, 15, 0, 7, 196, 104, 37, 82,
+			104, 15, 6, 195, 92, 195, 242, 15, 7, 196, 77, 76, 149, 12, 15, 11, 200, 56, 145, 75, 82, 116, 153, 12, 128, 76, 0, 8, 197, 64,
+			197, 193, 77, 160, 15, 0, 7, 196, 55, 64, 201, 200, 15, 19, 67, 12, 20, 19, 49, 35, 48, 89, 55, 111, 49, 0, 81, 108, 111, 99,
+			107, 32, 0, 8, 197, 11, 113, 26, 39, 32, 15, 5, 194, 36, 208, 72, 0, 8, 197, 208, 226, 114, 9, 144, 15, 8, 197, 47, 37, 114,
+			9, 144, 15, 6, 195, 81, 37, 114, 15, 8, 197, 77, 68, 151, 63, 48, 15, 7, 196, 77, 4, 149, 40, 15, 7, 196, 77, 12, 153, 204,
+			15, 7, 196, 17, 38, 153, 40, 15, 7, 196, 17, 33, 193, 40, 15, 19, 3, 95, 57, 88, 120, 109, 84, 38, 109, 67, 120, 6, 109, 97,
+			111, 50, 47, 0, 0, 9, 198, 104, 210, 76, 47, 32, 153, 15, 8, 197, 104, 34, 69, 73, 160, 15, 8, 197, 77, 2, 69, 77, 160, 15,
+			8, 197, 77, 2, 69, 13, 160, 15, 7, 196, 76, 144, 68, 200, 15, 0, 8, 197, 104, 65, 67, 35, 32, 15, 8, 197, 93, 50, 65, 19,
+			32, 15, 10, 67, 12, 149, 15, 117, 37, 47, 111, 0, 0, 11, 200, 64, 145, 82, 104, 50, 50, 9, 144, 15, 0, 0, 7, 196, 104, 229,
+			68, 220, 15, 16, 70, 8, 16, 203, 92, 20, 132, 71, 109, 49, 58, 109, 51, 72, 0, 0, 8, 197, 105, 114, 69, 19, 112, 15, 6, 195,
+			105, 112, 120, 15, 8, 197, 104, 36, 149, 19, 112, 15, 8, 197, 93, 53, 25, 19, 112, 15, 7, 196, 208, 204, 67, 104, 15, 8, 197, 77,
+			68, 149, 19, 112, 15, 7, 196, 12, 137, 196, 220, 15, 8, 197, 9, 38, 153, 19, 112, 15, 0, 9, 198, 92, 50, 18, 104, 50, 74, 15,
+			5, 194, 53, 80, 72, 12, 3, 95, 63, 65, 55, 37, 47, 109, 51, 35, 0, 0, 0, 7, 196, 93, 146, 132, 220, 15, 7, 196, 77, 68,
+			167, 40, 15, 6, 195, 78, 209, 55, 15, 7, 196, 16, 242, 132, 220, 15, 6, 195, 10, 209, 55, 15, 0, 6, 195, 203, 140, 64, 15, 12,
+			69, 12, 130, 76, 48, 144, 76, 37, 55, 37, 0, 0, 0, 9, 198, 76, 180, 154, 101, 113, 55, 15, 0, 8, 197, 104, 65, 80, 13, 160,
+			15, 0, 17, 4, 95, 115, 116, 107, 89, 49, 51, 109, 97, 55, 6, 111, 50, 109, 0, 0, 0, 7, 196, 81, 37, 193, 40, 15, 0, 8,
+			197, 105, 115, 5, 13, 160, 15, 8, 197, 81, 38, 133, 77, 160, 15, 8, 197, 64, 50, 1, 77, 160, 15, 0, 6, 195, 92, 64, 110, 15,
+			6, 195, 77, 2, 110, 15, 6, 195, 29, 32, 110, 15, 0, 6, 195, 48, 93, 238, 15, 0, 0, 6, 195, 78, 208, 218, 15, 0, 6, 195,
+			105, 38, 110, 15, 6, 195, 104, 213, 116, 15, 6, 195, 104, 192, 110, 15, 6, 195, 104, 38, 110, 15, 6, 195, 104, 34, 110, 15, 6, 195,
+			93, 38, 110, 15, 7, 196, 92, 34, 69, 12, 15, 6, 195, 92, 34, 110, 15, 6, 195, 80, 194, 110, 15, 6, 195, 77, 166, 110, 15, 6,
+			195, 76, 147, 238, 15, 6, 195, 65, 32, 110, 15, 6, 195, 45, 2, 110, 15, 6, 195, 44, 244, 46, 15, 6, 195, 12, 226, 110, 15, 6,
+			195, 12, 194, 110, 15, 6, 195, 9, 32, 110, 15, 0, 0, 7, 196, 104, 193, 119, 184, 15, 9, 198, 77, 3, 204, 77, 160, 218, 15, 9,
+			198, 76, 181, 201, 21, 32, 218, 15, 8, 197, 40, 84, 212, 23, 64, 76, 0, 6, 195, 105, 115, 242, 15, 6, 195, 104, 147, 242, 15, 8,
+			197, 93, 114, 69, 222, 224, 15, 6, 195, 92, 147, 242, 15, 6, 195, 77, 51, 242, 15, 7, 196, 76, 179, 195, 104, 15, 6, 195, 73, 115,
+			242, 15, 6, 195, 64, 147, 242, 15, 14, 69, 12, 194, 67, 32, 80, 49, 55, 37, 91, 6, 109, 0, 0, 15, 67, 36, 238, 0, 37, 50,
+			90, 6, 112, 67, 109, 51, 0, 24, 0, 9, 198, 64, 197, 83, 104, 54, 128, 15, 9, 198, 52, 20, 147, 104, 54, 128, 15, 6, 195, 51,
+			134, 64, 15, 0, 6, 195, 72, 29, 192, 15, 6, 195, 52, 67, 49, 15, 6, 195, 48, 157, 192, 15, 7, 196, 9, 38, 141, 36, 15, 6,
+			195, 9, 35, 177, 15, 0, 6, 195, 64, 197, 114, 15, 6, 195, 48, 81, 242, 15, 0, 7, 196, 208, 50, 85, 8, 15, 6, 195, 202, 117,
+			192, 15, 0, 7, 196, 92, 153, 218, 200, 15, 6, 195, 209, 2, 64, 15, 6, 195, 64, 19, 0, 15, 0, 0, 0, 7, 196, 225, 33, 83,
+			104, 15, 7, 196, 45, 37, 193, 92, 15, 15, 70, 12, 130, 65, 57, 66, 64, 49, 57, 35, 50, 47, 37, 0, 0, 0, 9, 198, 104, 36,
+			129, 47, 32, 153, 15, 9, 198, 76, 180, 129, 19, 32, 153, 15, 9, 198, 76, 50, 21, 19, 32, 153, 15, 9, 198, 9, 38, 153, 19, 32,
+			153, 15, 16, 71, 12, 130, 72, 84, 18, 21, 4, 76, 37, 58, 35, 58, 35, 0, 0, 9, 198, 105, 115, 39, 47, 32, 153, 15, 9, 198,
+			105, 114, 103, 107, 32, 153, 15, 9, 198, 104, 226, 103, 79, 32, 153, 15, 9, 198, 104, 124, 83, 83, 32, 153, 15, 9, 198, 93, 163, 103,
+			31, 32, 153, 15, 9, 198, 93, 114, 103, 19, 32, 153, 15, 9, 198, 92, 210, 103, 83, 32, 153, 15, 9, 198, 81, 38, 173, 79, 32, 153,
+			15, 9, 198, 208, 50, 69, 47, 32, 153, 15, 9, 198, 208, 50, 67, 35, 32, 153, 15, 9, 198, 77, 76, 67, 35, 32, 153, 15, 9, 198,
+			77, 3, 39, 83, 32, 153, 15, 9, 198, 77, 1, 114, 107, 32, 153, 15, 9, 198, 64, 50, 14, 183, 32, 153, 15, 9, 198, 17, 33, 206,
+			183, 32, 153, 15, 9, 198, 13, 162, 206, 183, 32, 153, 15, 8, 197, 77, 76, 129, 55, 64, 15, 33, 68, 12, 144, 197, 72, 117, 4, 37,
+			117, 109, 51, 49, 40, 65, 49, 6, 35, 58, 55, 109, 0, 82, 99, 117, 109, 32, 99, 97, 117, 108, 101, 32, 9, 198, 9, 156, 153, 208,
+			50, 69, 76, 7, 196, 45, 73, 210, 20, 76, 0, 10, 199, 76, 50, 50, 103, 64, 201, 20, 15, 9, 198, 19, 113, 206, 183, 32, 153, 15,
+			7, 196, 104, 115, 167, 40, 15, 10, 199, 52, 144, 114, 103, 64, 201, 20, 76, 0, 0, 6, 195, 36, 77, 192, 15, 7, 196, 9, 156, 133,
+			208, 76, 4, 193, 172, 43, 4, 193, 172, 43, 16, 4, 95, 99, 105, 114, 88, 72, 6, 35, 91, 80, 38, 109, 65, 0, 0, 7, 196, 104,
+			211, 195, 104, 15, 0, 6, 195, 48, 158, 0, 15, 17, 4, 95, 48, 77, 52, 71, 38, 37, 55, 57, 6, 111, 50, 40, 83, 0, 0, 9,
+			198, 92, 145, 83, 104, 54, 128, 15, 6, 195, 55, 134, 64, 15, 0, 6, 195, 92, 93, 192, 15, 9, 198, 4, 195, 9, 77, 65, 82, 65,
+			17, 4, 95, 48, 77, 50, 65, 38, 37, 55, 57, 6, 111, 50, 40, 83, 0, 0, 8, 197, 77, 160, 218, 60, 208, 15, 6, 195, 64, 29,
+			0, 15, 9, 67, 88, 243, 128, 83, 111, 50, 0, 7, 196, 45, 73, 210, 100, 76, 18, 4, 95, 48, 77, 51, 65, 38, 37, 55, 57, 6,
+			35, 51, 72, 40, 83, 0, 0, 0, 8, 197, 107, 134, 114, 9, 144, 15, 8, 197, 107, 133, 114, 9, 144, 15, 8, 197, 51, 134, 114, 9,
+			144, 15, 7, 196, 93, 163, 103, 12, 15, 15, 4, 95, 48, 77, 49, 47, 112, 97, 6, 109, 50, 117, 112, 0, 0, 5, 194, 60, 64, 72,
+			0, 5, 65, 180, 114, 0, 0, 7, 196, 104, 69, 231, 40, 15, 6, 195, 80, 176, 110, 15, 7, 196, 208, 50, 83, 104, 15, 15, 70, 12,
+			245, 78, 81, 38, 64, 49, 35, 50, 47, 51, 112, 0, 0, 8, 197, 79, 35, 242, 9, 144, 15, 8, 197, 79, 32, 114, 9, 144, 15, 8,
+			197, 92, 50, 15, 19, 112, 15, 0, 7, 196, 56, 18, 180, 184, 15, 11, 67, 12, 17, 162, 49, 35, 83, 109, 0, 66, 0, 8, 197, 92,
+			116, 153, 222, 224, 15, 0, 10, 199, 76, 50, 50, 61, 54, 131, 104, 15, 6, 195, 44, 244, 174, 15, 7, 196, 184, 210, 83, 104, 15, 0,
+			6, 195, 185, 3, 238, 15, 0, 7, 196, 104, 82, 180, 184, 15, 7, 196, 92, 145, 119, 184, 15, 7, 196, 77, 12, 143, 184, 15, 7, 196,
+			79, 41, 196, 220, 15, 7, 196, 64, 145, 116, 184, 15, 7, 196, 31, 41, 196, 220, 15, 6, 195, 12, 128, 237, 15, 7, 196, 9, 35, 137,
+			20, 15, 13, 202, 17, 162, 69, 92, 156, 67, 37, 84, 197, 80, 66, 0, 7, 196, 105, 37, 83, 104, 15, 7, 196, 104, 35, 195, 104, 15,
+			6, 195, 77, 67, 242, 15, 6, 195, 77, 3, 242, 15, 7, 196, 52, 147, 3, 104, 15, 6, 195, 28, 227, 242, 15, 6, 195, 16, 35, 242,
+			15, 9, 198, 12, 140, 143, 77, 160, 218, 15, 16, 4, 95, 108, 105, 103, 55, 37, 81, 35, 47, 6, 40, 51, 35, 0, 0, 0, 9, 198,
+			104, 226, 83, 104, 54, 128, 15, 6, 195, 75, 134, 64, 15, 19, 67, 64, 246, 129, 48, 111, 88, 6, 35, 67, 37, 65, 0, 81, 110, 105,
+			109, 32, 20, 67, 64, 246, 129, 48, 111, 88, 6, 35, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 20, 67, 64, 246, 129, 48, 111, 88,
+			6, 35, 65, 50, 114, 0, 81, 109, 110, 196, 133, 32, 0, 6, 195, 92, 253, 192, 15, 8, 197, 77, 1, 114, 107, 32, 15, 7, 196, 64,
+			50, 1, 52, 15, 6, 195, 48, 93, 192, 15, 0, 6, 195, 92, 181, 114, 15, 0, 6, 195, 105, 112, 76, 15, 0, 8, 197, 75, 131, 242,
+			9, 144, 15, 8, 197, 75, 128, 114, 9, 144, 15, 8, 197, 44, 203, 114, 9, 144, 15, 8, 197, 185, 3, 242, 9, 144, 15, 0, 8, 197,
+			93, 114, 103, 107, 32, 15, 8, 197, 93, 1, 114, 107, 32, 15, 7, 196, 77, 160, 218, 100, 15, 5, 194, 52, 144, 72, 0, 8, 197, 19,
+			129, 56, 103, 32, 15, 0, 9, 198, 52, 22, 9, 53, 83, 64, 65, 0, 7, 196, 12, 145, 82, 64, 15, 0, 9, 198, 105, 114, 113, 45,
+			54, 128, 15, 9, 198, 11, 113, 26, 37, 54, 128, 15, 0, 9, 198, 224, 115, 173, 200, 38, 64, 15, 7, 196, 45, 73, 210, 4, 76, 0,
+			10, 199, 104, 115, 137, 157, 76, 130, 100, 15, 10, 199, 93, 163, 137, 157, 60, 130, 100, 15, 10, 199, 95, 64, 201, 20, 188, 130, 100, 15,
+			10, 199, 93, 54, 131, 106, 220, 130, 100, 15, 10, 199, 93, 4, 154, 180, 124, 130, 100, 15, 10, 199, 93, 4, 154, 180, 76, 130, 100, 15,
+			10, 199, 92, 115, 137, 157, 76, 130, 100, 15, 10, 199, 208, 210, 79, 72, 76, 130, 100, 15, 10, 199, 208, 210, 69, 72, 76, 130, 100, 15,
+			10, 199, 208, 210, 65, 72, 76, 130, 100, 15, 10, 199, 208, 50, 69, 73, 12, 130, 100, 15, 10, 199, 77, 68, 154, 181, 60, 130, 100, 15,
+			10, 199, 77, 4, 154, 180, 124, 130, 100, 15, 10, 199, 77, 4, 154, 180, 76, 130, 100, 15, 0, 8, 197, 208, 210, 69, 77, 160, 15, 6,
+			195, 44, 20, 141, 15, 0, 5, 194, 53, 144, 76, 0, 7, 196, 77, 1, 83, 104, 15, 21, 72, 13, 84, 146, 36, 53, 76, 84, 208, 49,
+			40, 51, 6, 37, 49, 40, 55, 40, 65, 0, 0, 0, 9, 198, 12, 132, 154, 12, 146, 128, 15, 0, 0, 7, 196, 64, 197, 193, 40, 15,
+			9, 67, 61, 85, 0, 35, 58, 47, 0, 0, 11, 200, 76, 50, 12, 36, 38, 116, 53, 144, 15, 7, 195, 81, 144, 200, 72, 10, 0, 9,
+			198, 4, 195, 9, 76, 243, 128, 65, 6, 65, 184, 119, 110, 0, 0, 7, 196, 76, 180, 154, 100, 15, 0, 6, 195, 16, 192, 64, 72, 6,
+			195, 32, 64, 64, 13, 0, 7, 196, 51, 67, 137, 196, 15, 0, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 38, 109, 0, 81,
+			110, 105, 101, 32, 21, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 20, 68, 65, 38, 133,
+			16, 48, 91, 6, 109, 72, 84, 35, 89, 0, 81, 119, 97, 115, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 112, 65, 0,
+			81, 116, 121, 109, 32, 21, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 112, 107, 0, 81, 116, 121, 99, 104, 32, 18, 68, 65, 38,
+			133, 16, 48, 91, 6, 109, 47, 47, 111, 0, 81, 116, 111, 32, 18, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 109, 0, 81, 116,
+			101, 32, 19, 68, 65, 38, 133, 16, 48, 91, 6, 109, 47, 47, 114, 0, 81, 116, 196, 133, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6,
+			109, 72, 67, 37, 65, 0, 81, 110, 105, 109, 32, 21, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 67, 38, 114, 0, 81, 110, 105, 196,
+			133, 32, 20, 68, 65, 38, 133, 16, 48, 91, 6, 109, 72, 50, 35, 89, 0, 81, 110, 97, 115, 32, 7, 196, 65, 38, 133, 16, 76, 0,
+			9, 198, 105, 50, 79, 19, 32, 153, 15, 9, 198, 92, 208, 82, 107, 32, 153, 15, 9, 198, 92, 70, 137, 63, 32, 153, 15, 9, 198, 77,
+			4, 201, 7, 32, 153, 15, 9, 198, 12, 145, 82, 67, 32, 153, 15, 9, 198, 12, 132, 153, 67, 32, 153, 15, 9, 198, 12, 128, 201, 7,
+			32, 153, 15, 7, 196, 80, 179, 137, 20, 15, 6, 195, 46, 212, 0, 15, 7, 196, 16, 242, 180, 184, 15, 0, 9, 198, 105, 114, 109, 19,
+			32, 153, 15, 9, 198, 208, 50, 109, 200, 38, 64, 15, 9, 198, 75, 131, 173, 200, 38, 64, 15, 9, 198, 65, 38, 173, 19, 32, 153, 15,
+			9, 198, 31, 37, 67, 35, 32, 153, 15, 8, 197, 92, 180, 129, 210, 224, 15, 6, 195, 28, 224, 64, 15, 6, 195, 60, 224, 64, 76, 0,
+			9, 198, 12, 140, 167, 19, 32, 153, 15, 9, 198, 104, 115, 137, 23, 75, 128, 15, 9, 198, 92, 115, 137, 23, 75, 128, 15, 0, 6, 195,
+			84, 173, 46, 15, 7, 196, 203, 129, 83, 104, 15, 0, 7, 196, 93, 146, 180, 184, 15, 7, 196, 64, 193, 116, 184, 15, 7, 196, 52, 179,
+			137, 20, 15, 7, 196, 52, 145, 116, 184, 15, 7, 196, 13, 166, 116, 184, 15, 0, 7, 196, 104, 220, 167, 184, 15, 7, 196, 76, 188, 167,
+			184, 15, 0, 6, 195, 54, 114, 242, 15, 6, 195, 50, 210, 242, 15, 6, 195, 185, 3, 242, 15, 0, 6, 195, 105, 53, 115, 15, 7, 196,
+			104, 203, 75, 200, 15, 7, 196, 92, 201, 203, 200, 15, 7, 196, 208, 210, 79, 200, 15, 6, 195, 64, 197, 115, 15, 6, 195, 64, 193, 115,
+			15, 0, 7, 196, 17, 33, 193, 52, 15, 7, 196, 13, 162, 193, 52, 15, 7, 195, 61, 32, 90, 72, 28, 0, 6, 195, 60, 225, 64, 76,
+			0, 8, 197, 93, 2, 114, 9, 144, 15, 8, 197, 12, 194, 114, 9, 144, 15, 15, 4, 95, 99, 101, 100, 88, 117, 109, 116, 6, 37, 55,
+			114, 0, 0, 15, 70, 12, 128, 78, 76, 243, 128, 91, 35, 50, 89, 114, 0, 66, 0, 8, 197, 105, 115, 39, 47, 32, 15, 6, 195, 200,
+			20, 0, 15, 6, 194, 56, 144, 72, 23, 0, 7, 196, 226, 124, 139, 200, 15, 6, 195, 80, 194, 64, 15, 7, 196, 77, 12, 143, 204, 15,
+			6, 195, 53, 146, 128, 15, 0, 8, 197, 107, 137, 242, 47, 32, 15, 7, 196, 208, 210, 69, 40, 15, 0, 7, 196, 76, 180, 143, 64, 15,
+			0, 0, 6, 195, 45, 82, 128, 15, 6, 195, 60, 226, 64, 76, 0, 7, 196, 76, 181, 82, 92, 15, 7, 196, 17, 46, 25, 40, 15, 0,
+			0, 0, 0, 13, 4, 95, 99, 97, 112, 72, 6, 40, 90, 109, 10, 0, 0, 0, 7, 196, 81, 37, 193, 52, 15, 7, 196, 64, 197, 193,
+			52, 15, 0, 6, 195, 44, 253, 0, 15, 17, 70, 88, 20, 137, 21, 65, 83, 84, 35, 34, 57, 109, 47, 109, 0, 67, 0, 0, 9, 198,
+			45, 73, 210, 20, 213, 64, 76, 0, 0, 15, 67, 52, 193, 0, 65, 37, 55, 57, 35, 51, 72, 40, 83, 0, 0, 6, 195, 104, 214, 110,
+			15, 9, 198, 61, 5, 9, 53, 83, 64, 65, 0, 6, 195, 65, 93, 46, 15, 0, 7, 196, 93, 5, 116, 184, 15, 7, 196, 77, 5, 116,
+			184, 15, 13, 68, 88, 242, 76, 4, 84, 40, 35, 55, 35, 0, 67, 0, 8, 197, 105, 114, 69, 210, 224, 15, 8, 197, 104, 226, 69, 210,
+			224, 15, 8, 197, 104, 210, 69, 210, 224, 15, 8, 197, 93, 3, 5, 210, 224, 15, 8, 197, 92, 226, 69, 210, 224, 15, 8, 197, 76, 54,
+			153, 210, 224, 15, 8, 197, 28, 226, 69, 210, 224, 15, 0, 7, 196, 105, 115, 5, 12, 15, 9, 198, 93, 163, 137, 23, 75, 128, 15, 0,
+			6, 195, 104, 161, 77, 15, 0, 7, 196, 104, 161, 116, 184, 15, 7, 196, 92, 193, 119, 184, 15, 9, 198, 80, 50, 14, 36, 84, 218, 15,
+			7, 196, 208, 210, 79, 184, 15, 9, 198, 76, 50, 14, 36, 84, 218, 15, 7, 196, 76, 50, 12, 4, 15, 6, 195, 55, 41, 238, 15, 6,
+			195, 47, 41, 238, 15, 9, 198, 12, 132, 154, 12, 148, 218, 15, 0, 6, 195, 104, 67, 242, 15, 8, 197, 92, 210, 69, 210, 224, 15, 8,
+			197, 77, 68, 133, 210, 224, 15, 7, 196, 77, 67, 9, 40, 15, 8, 197, 77, 3, 5, 210, 224, 15, 8, 197, 76, 180, 129, 210, 224, 15,
+			7, 196, 64, 21, 18, 104, 15, 4, 193, 188, 43, 4, 193, 188, 43, 0, 8, 197, 9, 38, 141, 36, 160, 15, 0, 6, 195, 208, 203, 67,
+			15, 7, 196, 76, 50, 50, 60, 15, 7, 196, 64, 92, 154, 200, 15, 6, 195, 12, 128, 197, 15, 10, 67, 12, 240, 193, 49, 111, 49, 35,
+			0, 0, 6, 195, 92, 145, 74, 15, 8, 197, 77, 76, 149, 47, 32, 15, 20, 3, 95, 195, 179, 4, 40, 10, 49, 51, 109, 89, 49, 111,
+			84, 6, 35, 50, 109, 0, 0, 8, 197, 77, 163, 9, 9, 144, 15, 6, 195, 93, 165, 114, 15, 7, 196, 93, 50, 69, 40, 15, 7, 196,
+			16, 226, 69, 40, 15, 0, 9, 198, 12, 132, 154, 13, 171, 67, 15, 0, 8, 197, 105, 50, 65, 19, 32, 15, 8, 197, 93, 54, 133, 19,
+			32, 15, 8, 197, 9, 38, 153, 19, 32, 15, 6, 195, 9, 35, 243, 15, 0, 0, 10, 199, 76, 50, 12, 39, 64, 201, 20, 15, 0, 0,
+			8, 197, 104, 208, 82, 81, 112, 15, 0, 0, 6, 195, 104, 193, 119, 15, 0, 0, 8, 197, 76, 180, 154, 101, 112, 15, 0, 0, 7, 196,
+			92, 54, 149, 40, 15, 0, 8, 197, 105, 114, 69, 77, 160, 15, 8, 197, 73, 114, 69, 77, 160, 15, 8, 197, 28, 226, 69, 77, 160, 15,
+			27, 69, 76, 52, 133, 20, 224, 89, 49, 51, 37, 50, 51, 6, 37, 72, 109, 34, 0, 81, 114, 101, 97, 100, 101, 114, 32, 0, 7, 196,
+			12, 133, 193, 48, 15, 0, 6, 195, 73, 144, 218, 15, 0, 0, 6, 195, 93, 112, 76, 15, 0, 0, 16, 71, 12, 128, 76, 48, 83, 135,
+			20, 76, 109, 55, 109, 50, 75, 0, 11, 200, 76, 145, 68, 52, 149, 83, 21, 64, 65, 0, 6, 195, 93, 115, 247, 15, 0, 6, 195, 107,
+			41, 202, 15, 17, 70, 12, 16, 133, 72, 225, 84, 49, 35, 71, 109, 51, 50, 6, 109, 0, 10, 67, 48, 240, 68, 55, 111, 58, 72, 0,
+			0, 7, 196, 104, 116, 129, 184, 15, 7, 196, 93, 163, 5, 184, 15, 7, 196, 92, 145, 82, 184, 15, 6, 195, 92, 145, 77, 15, 7, 196,
+			92, 116, 143, 184, 15, 7, 196, 80, 181, 201, 184, 15, 7, 196, 77, 164, 5, 184, 15, 6, 195, 77, 67, 9, 15, 7, 196, 12, 131, 15,
+			184, 15, 0, 0, 7, 196, 80, 50, 14, 180, 15, 7, 196, 76, 50, 14, 180, 15, 7, 196, 64, 50, 14, 180, 15, 6, 195, 60, 35, 203,
+			76, 0, 8, 197, 65, 53, 18, 106, 208, 15, 8, 197, 53, 54, 131, 106, 208, 15, 8, 197, 9, 38, 141, 38, 208, 15, 5, 194, 78, 208,
+			76, 0, 7, 196, 104, 116, 143, 184, 15, 7, 196, 93, 3, 5, 184, 15, 7, 196, 92, 116, 129, 184, 15, 7, 196, 92, 54, 149, 184, 15,
+			7, 196, 77, 67, 9, 184, 15, 7, 196, 77, 3, 5, 184, 15, 7, 196, 52, 67, 9, 184, 15, 7, 196, 52, 67, 5, 184, 15, 7, 196,
+			16, 226, 69, 184, 15, 7, 196, 13, 160, 201, 184, 15, 7, 196, 12, 131, 1, 184, 15, 0, 8, 197, 77, 160, 218, 6, 224, 15, 8, 197,
+			48, 115, 137, 22, 224, 15, 0, 7, 196, 81, 35, 195, 104, 15, 7, 196, 77, 67, 195, 104, 15, 6, 195, 17, 46, 45, 15, 9, 198, 45,
+			73, 210, 20, 115, 192, 76, 0, 7, 196, 105, 114, 65, 200, 15, 7, 196, 104, 115, 137, 200, 15, 7, 196, 92, 116, 143, 200, 15, 8, 197,
+			77, 160, 218, 100, 160, 15, 7, 196, 77, 68, 149, 200, 15, 8, 197, 76, 180, 154, 100, 160, 15, 7, 196, 17, 37, 201, 200, 15, 8, 197,
+			17, 33, 206, 36, 160, 15, 7, 196, 12, 131, 15, 200, 15, 0, 0, 8, 197, 104, 124, 83, 83, 32, 15, 8, 197, 92, 210, 103, 83, 32,
+			15, 6, 195, 79, 20, 0, 15, 8, 197, 28, 226, 103, 83, 32, 15, 7, 196, 12, 128, 197, 204, 15, 0, 6, 195, 225, 92, 128, 15, 9,
+			198, 104, 115, 137, 157, 76, 128, 15, 9, 198, 92, 115, 137, 157, 76, 128, 15, 6, 195, 46, 116, 154, 15, 6, 195, 42, 220, 128, 15, 6,
+			195, 19, 37, 66, 15, 6, 195, 18, 220, 128, 15, 0, 7, 196, 105, 114, 83, 200, 15, 7, 196, 104, 116, 143, 200, 15, 7, 196, 92, 116,
+			129, 200, 15, 7, 196, 92, 54, 149, 200, 15, 8, 197, 77, 162, 204, 36, 160, 15, 7, 196, 77, 67, 9, 200, 15, 7, 196, 52, 67, 1,
+			200, 15, 7, 196, 13, 160, 201, 200, 15, 7, 196, 12, 131, 1, 200, 15, 7, 196, 8, 192, 75, 200, 15, 0, 7, 196, 92, 156, 68, 200,
+			15, 7, 196, 92, 155, 68, 200, 15, 10, 67, 88, 144, 197, 84, 37, 117, 109, 0, 0, 15, 66, 64, 144, 48, 109, 37, 38, 6, 109, 89,
+			0, 81, 115, 32, 9, 198, 77, 68, 154, 100, 124, 128, 15, 7, 196, 76, 100, 149, 204, 15, 11, 66, 60, 176, 111, 49, 6, 109, 57, 0,
+			42, 11, 66, 60, 176, 111, 49, 111, 58, 111, 0, 24, 9, 198, 9, 147, 9, 208, 50, 69, 76, 6, 194, 80, 16, 72, 10, 0, 0, 9,
+			198, 93, 53, 18, 104, 83, 0, 15, 0, 0, 9, 198, 4, 225, 197, 48, 84, 192, 65, 17, 70, 16, 85, 137, 12, 84, 192, 72, 37, 84,
+			35, 57, 89, 37, 89, 0, 0, 6, 195, 92, 145, 55, 15, 6, 195, 95, 20, 218, 15, 6, 195, 76, 17, 55, 15, 6, 195, 72, 241, 55,
+			15, 6, 195, 72, 17, 55, 15, 6, 195, 57, 81, 55, 15, 0, 0, 8, 197, 77, 68, 177, 13, 160, 15, 8, 197, 77, 76, 149, 13, 160,
+			15, 8, 197, 77, 12, 149, 13, 160, 15, 6, 195, 65, 147, 0, 15, 8, 197, 56, 144, 115, 13, 160, 15, 8, 197, 200, 20, 218, 13, 160,
+			15, 19, 71, 8, 16, 203, 77, 0, 67, 20, 71, 6, 109, 49, 89, 48, 109, 57, 89, 0, 0, 7, 196, 208, 50, 69, 48, 15, 0, 7,
+			196, 19, 113, 193, 52, 15, 16, 70, 13, 84, 129, 128, 19, 192, 49, 37, 51, 35, 89, 35, 111, 0, 0, 8, 197, 13, 162, 206, 36, 160,
+			15, 0, 0, 6, 195, 104, 145, 74, 15, 15, 70, 52, 243, 147, 36, 85, 82, 65, 109, 89, 57, 6, 109, 0, 0, 7, 196, 76, 179, 14,
+			196, 15, 0, 8, 197, 92, 195, 242, 9, 144, 15, 8, 197, 92, 144, 114, 9, 144, 15, 8, 197, 92, 67, 242, 9, 144, 15, 8, 197, 80,
+			176, 114, 9, 144, 15, 8, 197, 77, 67, 242, 9, 144, 15, 8, 197, 77, 64, 114, 9, 144, 15, 8, 197, 77, 3, 242, 9, 144, 15, 8,
+			197, 76, 144, 114, 9, 144, 15, 8, 197, 65, 32, 114, 9, 144, 15, 8, 197, 52, 144, 114, 9, 144, 15, 8, 197, 16, 35, 242, 9, 144,
+			15, 8, 197, 77, 160, 218, 84, 160, 15, 0, 6, 195, 76, 187, 80, 15, 0, 6, 195, 208, 204, 64, 15, 19, 71, 12, 243, 131, 36, 84,
+			135, 20, 49, 111, 50, 89, 57, 6, 109, 51, 90, 0, 7, 196, 52, 145, 76, 36, 76, 0, 6, 195, 77, 73, 202, 15, 13, 67, 52, 164,
+			128, 65, 6, 35, 57, 111, 51, 0, 24, 0, 6, 195, 59, 27, 128, 15, 6, 195, 45, 32, 116, 15, 9, 198, 92, 147, 133, 29, 33, 84,
+			67, 0, 7, 196, 105, 114, 65, 184, 15, 7, 196, 104, 115, 137, 184, 15, 7, 196, 93, 50, 79, 184, 15, 7, 196, 81, 37, 193, 184, 15,
+			7, 196, 77, 68, 149, 184, 15, 7, 196, 77, 4, 149, 184, 15, 7, 196, 76, 179, 143, 184, 15, 7, 196, 76, 176, 82, 184, 15, 7, 196,
+			64, 197, 207, 184, 15, 7, 196, 29, 38, 143, 184, 15, 7, 196, 28, 226, 69, 184, 15, 7, 196, 17, 37, 201, 184, 15, 7, 196, 17, 33,
+			193, 184, 15, 7, 196, 13, 162, 207, 184, 15, 7, 196, 12, 133, 217, 184, 15, 0, 14, 4, 95, 103, 114, 118, 119, 6, 113, 91, 80, 38,
+			109, 0, 0, 7, 196, 76, 179, 14, 180, 15, 0, 0, 7, 196, 105, 114, 79, 184, 15, 7, 196, 93, 51, 149, 184, 15, 7, 196, 93, 50,
+			65, 184, 15, 7, 196, 81, 37, 207, 184, 15, 7, 196, 77, 4, 207, 184, 15, 7, 196, 17, 33, 207, 184, 15, 6, 195, 16, 32, 77, 15,
+			7, 196, 13, 162, 193, 184, 15, 7, 196, 11, 129, 56, 180, 15, 10, 2, 195, 151, 51, 6, 35, 88, 112, 0, 0, 6, 195, 104, 34, 74,
+			15, 6, 195, 92, 193, 74, 15, 8, 197, 92, 70, 137, 6, 224, 15, 0, 7, 196, 13, 161, 83, 104, 15, 12, 68, 12, 245, 80, 136, 49,
+			40, 48, 6, 109, 0, 0, 7, 196, 104, 208, 82, 200, 15, 7, 196, 104, 116, 129, 200, 15, 7, 196, 93, 50, 79, 200, 15, 7, 196, 81,
+			37, 193, 200, 15, 7, 196, 77, 4, 149, 200, 15, 6, 195, 76, 48, 76, 15, 7, 196, 64, 197, 207, 200, 15, 7, 196, 52, 67, 15, 200,
+			15, 7, 196, 29, 38, 143, 200, 15, 7, 196, 17, 33, 193, 200, 15, 7, 196, 13, 162, 207, 200, 15, 0, 7, 196, 64, 201, 212, 200, 15,
+			16, 67, 57, 97, 1, 109, 50, 83, 35, 58, 72, 109, 6, 35, 0, 13, 0, 8, 197, 104, 210, 103, 83, 32, 15, 8, 197, 93, 3, 39,
+			83, 32, 15, 6, 195, 83, 20, 0, 15, 8, 197, 77, 3, 39, 83, 32, 15, 0, 7, 196, 80, 50, 14, 196, 15, 7, 196, 76, 50, 14,
+			196, 15, 7, 196, 53, 37, 67, 104, 15, 6, 195, 17, 46, 49, 15, 0, 8, 197, 105, 115, 242, 9, 144, 15, 8, 197, 105, 112, 114, 9,
+			144, 15, 8, 197, 104, 192, 114, 9, 144, 15, 8, 197, 104, 64, 114, 9, 144, 15, 8, 197, 92, 147, 242, 9, 144, 15, 8, 197, 80, 192,
+			114, 9, 144, 15, 8, 197, 76, 229, 114, 9, 144, 15, 8, 197, 73, 115, 242, 9, 144, 15, 8, 197, 73, 112, 114, 9, 144, 15, 8, 197,
+			65, 53, 114, 9, 144, 15, 8, 197, 44, 229, 114, 9, 144, 15, 8, 197, 40, 17, 50, 9, 144, 15, 8, 197, 29, 32, 114, 9, 144, 15,
+			8, 197, 28, 224, 114, 9, 144, 15, 8, 197, 28, 20, 242, 9, 144, 15, 7, 196, 105, 118, 75, 200, 15, 7, 196, 105, 114, 79, 200, 15,
+			7, 196, 93, 51, 149, 200, 15, 7, 196, 93, 50, 65, 200, 15, 7, 196, 81, 37, 207, 200, 15, 7, 196, 76, 180, 153, 200, 15, 7, 196,
+			52, 67, 9, 200, 15, 7, 196, 17, 33, 207, 200, 15, 7, 196, 16, 226, 65, 200, 15, 7, 196, 13, 162, 193, 200, 15, 0, 8, 197, 104,
+			208, 82, 107, 32, 15, 7, 196, 47, 32, 68, 200, 15, 7, 196, 11, 129, 56, 196, 15, 14, 2, 194, 167, 48, 35, 51, 6, 35, 81, 51,
+			35, 83, 0, 16, 2, 195, 159, 91, 4, 35, 34, 83, 109, 89, 10, 6, 109, 89, 0, 0, 8, 197, 105, 114, 103, 19, 32, 15, 8, 197,
+			93, 114, 103, 19, 32, 15, 6, 195, 77, 172, 153, 15, 9, 198, 76, 180, 154, 21, 12, 128, 15, 9, 198, 65, 53, 18, 105, 156, 128, 15,
+			9, 198, 29, 38, 141, 36, 252, 128, 15, 8, 197, 31, 37, 67, 35, 32, 15, 7, 196, 12, 132, 143, 204, 15, 12, 2, 194, 164, 84, 35,
+			55, 6, 40, 47, 35, 0, 0, 9, 198, 208, 210, 69, 72, 76, 128, 15, 9, 198, 208, 210, 65, 72, 76, 128, 15, 7, 196, 75, 131, 137,
+			20, 15, 10, 67, 12, 144, 79, 76, 57, 35, 58, 0, 8, 2, 194, 165, 57, 109, 50, 0, 0, 6, 195, 104, 112, 116, 15, 9, 2, 194,
+			162, 117, 109, 50, 47, 0, 0, 7, 196, 77, 4, 143, 208, 15, 9, 2, 194, 163, 83, 40, 50, 47, 0, 0, 9, 198, 77, 4, 129, 92,
+			77, 192, 15, 9, 198, 76, 179, 14, 36, 84, 218, 15, 9, 198, 64, 50, 14, 36, 84, 218, 15, 0, 6, 195, 84, 161, 55, 15, 13, 68,
+			24, 246, 69, 72, 83, 40, 35, 57, 6, 109, 0, 25, 2, 194, 161, 111, 72, 84, 51, 4, 111, 47, 50, 112, 15, 84, 112, 49, 91, 6,
+			112, 49, 67, 37, 49, 0, 0, 28, 69, 52, 18, 84, 74, 32, 65, 109, 47, 51, 109, 72, 111, 47, 6, 109, 55, 0, 81, 100, 39, 104,
+			111, 116, 101, 108, 32, 15, 2, 194, 174, 88, 35, 89, 76, 109, 90, 6, 111, 50, 112, 0, 0, 7, 196, 104, 43, 68, 220, 15, 8, 197,
+			93, 76, 143, 13, 160, 15, 7, 196, 93, 12, 68, 220, 15, 7, 196, 79, 35, 196, 220, 15, 8, 197, 76, 180, 154, 101, 0, 15, 7, 196,
+			76, 54, 133, 64, 15, 7, 196, 73, 171, 68, 220, 15, 7, 196, 28, 204, 68, 220, 15, 10, 67, 12, 149, 25, 117, 37, 47, 112, 0, 12,
+			201, 17, 162, 69, 92, 156, 110, 76, 85, 0, 65, 17, 2, 194, 175, 50, 35, 72, 49, 51, 109, 97, 55, 6, 109, 67, 109, 0, 0, 6,
+			195, 92, 34, 74, 15, 8, 197, 76, 212, 167, 19, 112, 15, 13, 2, 194, 172, 50, 109, 81, 6, 35, 117, 57, 35, 0, 5, 130, 195, 164,
+			43, 5, 130, 195, 164, 43, 0, 0, 0, 9, 198, 76, 180, 154, 101, 54, 128, 15, 25, 2, 194, 171, 83, 51, 35, 50, 117, 4, 40, 89,
+			80, 37, 15, 117, 40, 118, 6, 112, 89, 58, 40, 83, 0, 0, 7, 195, 13, 166, 74, 72, 10, 10, 199, 4, 212, 212, 21, 33, 1, 52,
+			65, 12, 2, 194, 168, 6, 40, 65, 55, 35, 58, 47, 0, 0, 7, 196, 64, 50, 14, 196, 15, 6, 195, 56, 253, 0, 15, 5, 65, 196,
+			113, 0, 0, 8, 197, 104, 144, 114, 9, 144, 15, 8, 197, 104, 67, 242, 9, 144, 15, 8, 197, 76, 181, 114, 9, 144, 15, 8, 197, 64,
+			144, 114, 9, 144, 15, 8, 197, 64, 17, 50, 9, 144, 15, 8, 197, 13, 165, 114, 9, 144, 15, 8, 197, 13, 160, 201, 77, 160, 15, 12,
+			2, 194, 182, 35, 49, 6, 35, 48, 37, 47, 0, 0, 15, 69, 64, 17, 197, 85, 0, 48, 109, 57, 75, 6, 35, 48, 0, 0, 6, 195,
+			225, 44, 64, 15, 7, 196, 105, 53, 45, 64, 15, 7, 196, 93, 53, 45, 64, 15, 5, 194, 60, 224, 76, 19, 2, 194, 180, 4, 111, 89,
+			47, 51, 112, 10, 6, 35, 49, 117, 109, 50, 47, 0, 0, 9, 67, 88, 144, 64, 84, 37, 35, 0, 0, 9, 198, 61, 50, 69, 53, 49,
+			84, 65, 13, 2, 194, 178, 49, 84, 6, 35, 72, 51, 35, 47, 0, 6, 65, 200, 109, 58, 0, 0, 6, 195, 104, 229, 120, 15, 7, 196,
+			93, 4, 143, 208, 15, 12, 2, 194, 179, 91, 6, 109, 97, 78, 35, 50, 0, 0, 7, 196, 93, 161, 45, 184, 15, 7, 196, 93, 68, 173,
+			184, 15, 7, 196, 208, 210, 65, 184, 15, 9, 198, 45, 38, 153, 92, 77, 192, 15, 7, 196, 9, 35, 173, 184, 15, 13, 2, 194, 176, 89,
+			47, 6, 111, 48, 38, 109, 67, 0, 0, 7, 196, 224, 115, 173, 184, 15, 7, 196, 104, 112, 82, 8, 15, 7, 196, 208, 50, 109, 184, 15,
+			15, 2, 194, 177, 48, 55, 40, 89, 65, 6, 37, 50, 40, 89, 0, 5, 130, 197, 153, 43, 5, 130, 197, 153, 43, 0, 8, 197, 19, 113,
+			206, 182, 224, 15, 14, 70, 52, 21, 82, 36, 49, 64, 65, 111, 51, 37, 89, 0, 16, 2, 194, 190, 47, 15, 91, 112, 76, 83, 6, 35,
+			51, 47, 109, 0, 0, 6, 195, 225, 33, 110, 15, 7, 196, 77, 124, 68, 220, 15, 6, 195, 79, 32, 110, 15, 6, 195, 64, 235, 110, 15,
+			6, 195, 67, 32, 110, 15, 6, 195, 200, 176, 110, 15, 6, 195, 200, 112, 110, 15, 7, 196, 47, 32, 68, 220, 15, 6, 195, 44, 203, 110,
+			15, 13, 67, 85, 35, 0, 40, 109, 51, 6, 109, 55, 0, 13, 23, 2, 194, 191, 111, 72, 84, 51, 4, 111, 47, 50, 112, 15, 48, 112,
+			47, 35, 57, 67, 37, 49, 0, 13, 2, 195, 183, 120, 109, 55, 6, 109, 67, 38, 109, 0, 0, 8, 197, 104, 161, 119, 19, 112, 15, 8,
+			197, 92, 50, 39, 19, 112, 15, 8, 197, 77, 162, 231, 19, 112, 15, 8, 197, 76, 50, 39, 19, 112, 15, 6, 195, 52, 20, 154, 15, 8,
+			197, 9, 37, 119, 19, 112, 15, 17, 2, 194, 188, 57, 109, 72, 50, 35, 76, 83, 6, 35, 51, 47, 35, 0, 0, 9, 198, 104, 210, 79,
+			224, 78, 0, 15, 9, 198, 93, 4, 154, 180, 77, 192, 15, 9, 198, 77, 4, 154, 180, 77, 192, 15, 9, 198, 76, 50, 50, 60, 77, 192,
+			15, 7, 196, 61, 53, 18, 104, 15, 9, 198, 28, 226, 69, 220, 77, 192, 15, 7, 195, 56, 145, 64, 72, 23, 6, 195, 56, 145, 64, 76,
+			16, 2, 194, 189, 57, 109, 72, 50, 35, 72, 51, 6, 40, 81, 35, 0, 0, 6, 195, 44, 203, 114, 15, 8, 197, 17, 37, 201, 77, 160,
+			15, 0, 32, 2, 194, 187, 48, 51, 6, 35, 84, 112, 15, 83, 51, 35, 50, 117, 4, 40, 89, 80, 37, 15, 117, 40, 118, 6, 112, 89,
+			58, 40, 83, 0, 0, 6, 195, 209, 114, 115, 15, 6, 195, 79, 38, 115, 15, 13, 2, 194, 184, 117, 109, 116, 6, 37, 55, 55, 35, 0,
+			0, 16, 2, 194, 185, 57, 109, 72, 109, 50, 81, 6, 40, 51, 50, 109, 0, 5, 130, 195, 177, 43, 5, 130, 195, 177, 43, 0, 8, 197,
+			92, 192, 114, 9, 144, 15, 8, 197, 77, 51, 242, 9, 144, 15, 8, 197, 77, 48, 114, 9, 144, 15, 8, 197, 64, 147, 242, 9, 144, 15,
+			8, 197, 16, 32, 114, 9, 144, 15, 8, 197, 77, 67, 9, 77, 160, 15, 0, 7, 196, 104, 210, 109, 200, 15, 7, 196, 93, 2, 109, 200,
+			15, 7, 196, 77, 2, 109, 200, 15, 7, 196, 52, 179, 173, 200, 15, 7, 196, 17, 46, 1, 200, 15, 12, 201, 80, 133, 78, 16, 84, 130,
+			37, 33, 0, 65, 21, 67, 64, 17, 197, 48, 109, 57, 75, 72, 6, 35, 58, 50, 0, 81, 100, 111, 119, 110, 32, 17, 67, 64, 17, 197,
+			48, 109, 57, 75, 6, 35, 48, 0, 81, 117, 112, 32, 0, 7, 196, 77, 3, 15, 52, 15, 7, 196, 75, 131, 173, 200, 15, 6, 195, 51,
+			140, 64, 15, 20, 66, 88, 16, 84, 35, 71, 6, 35, 68, 49, 0, 81, 98, 97, 110, 113, 117, 101, 32, 6, 194, 80, 80, 72, 10, 9,
+			198, 56, 145, 75, 82, 116, 153, 76, 0, 9, 198, 93, 54, 131, 106, 220, 128, 15, 8, 197, 19, 113, 206, 183, 32, 15, 0, 6, 195, 92,
+			179, 208, 15, 0, 7, 196, 92, 68, 129, 64, 15, 6, 195, 13, 166, 77, 77, 0, 0, 8, 197, 77, 68, 154, 199, 64, 15, 7, 196, 19,
+			113, 207, 52, 15, 0, 0, 7, 196, 12, 132, 149, 64, 15, 11, 2, 203, 135, 49, 6, 35, 51, 111, 50, 0, 0, 6, 195, 95, 32, 77,
+			15, 0, 6, 195, 92, 193, 67, 15, 9, 198, 77, 4, 154, 196, 77, 192, 15, 0, 8, 197, 80, 181, 201, 77, 160, 15, 8, 197, 77, 161,
+			77, 73, 160, 15, 6, 195, 80, 94, 0, 8, 0, 7, 195, 80, 83, 85, 72, 10, 0, 6, 195, 45, 38, 74, 15, 0, 6, 195, 12, 145,
+			67, 15, 6, 195, 60, 227, 192, 76, 0, 8, 197, 92, 116, 129, 77, 160, 15, 0, 6, 195, 78, 115, 0, 15, 0, 6, 195, 12, 226, 113,
+			15, 11, 66, 76, 128, 109, 89, 6, 101, 35, 0, 13, 6, 65, 204, 109, 67, 0, 0, 6, 195, 224, 112, 74, 15, 7, 196, 104, 116, 129,
+			8, 15, 6, 195, 184, 210, 113, 15, 0, 7, 196, 92, 180, 167, 40, 15, 0, 8, 197, 104, 210, 69, 75, 112, 15, 0, 7, 196, 104, 210,
+			109, 184, 15, 7, 196, 93, 12, 129, 184, 15, 7, 196, 93, 2, 109, 184, 15, 9, 198, 81, 38, 133, 77, 160, 218, 15, 7, 196, 209, 114,
+			69, 184, 15, 6, 195, 77, 67, 45, 15, 7, 196, 77, 2, 109, 184, 15, 6, 195, 9, 35, 173, 15, 0, 8, 197, 93, 52, 9, 182, 224,
+			15, 8, 197, 64, 50, 14, 36, 80, 15, 6, 195, 184, 210, 109, 15, 12, 69, 28, 83, 210, 28, 80, 75, 111, 34, 75, 0, 0, 9, 198,
+			93, 54, 131, 106, 219, 128, 15, 6, 195, 92, 195, 238, 15, 6, 195, 81, 37, 110, 15, 0, 6, 195, 224, 112, 110, 15, 8, 197, 77, 68,
+			154, 100, 48, 15, 7, 196, 76, 180, 153, 184, 15, 7, 196, 76, 155, 68, 220, 15, 0, 6, 195, 52, 67, 45, 15, 6, 195, 16, 32, 74,
+			15, 0, 6, 195, 93, 43, 66, 15, 28, 69, 52, 18, 84, 72, 80, 65, 109, 47, 51, 109, 72, 111, 47, 6, 109, 55, 0, 81, 100, 39,
+			104, 111, 116, 101, 108, 32, 0, 6, 195, 224, 112, 114, 15, 8, 197, 104, 116, 129, 77, 160, 15, 8, 197, 93, 160, 149, 73, 160, 15, 7,
+			196, 92, 193, 75, 200, 15, 8, 197, 92, 180, 143, 13, 160, 15, 8, 197, 81, 37, 193, 77, 160, 15, 6, 195, 79, 32, 114, 15, 6, 195,
+			75, 128, 114, 15, 6, 195, 200, 176, 114, 15, 6, 195, 200, 112, 114, 15, 8, 197, 17, 33, 193, 77, 160, 15, 7, 196, 81, 147, 11, 60,
+			76, 0, 0, 20, 71, 13, 80, 137, 13, 83, 21, 52, 49, 40, 71, 6, 37, 49, 40, 55, 40, 65, 0, 0, 7, 196, 105, 114, 69, 40,
+			15, 7, 196, 80, 179, 137, 40, 15, 7, 196, 77, 68, 149, 40, 15, 0, 6, 195, 107, 133, 114, 15, 6, 195, 104, 115, 204, 15, 8, 197,
+			77, 2, 69, 73, 160, 15, 8, 197, 76, 180, 149, 77, 160, 15, 8, 197, 52, 67, 9, 77, 160, 15, 8, 197, 45, 38, 153, 13, 160, 15,
+			7, 196, 42, 213, 18, 104, 15, 8, 197, 45, 73, 210, 105, 144, 76, 0, 6, 195, 107, 41, 215, 15, 7, 196, 93, 161, 45, 200, 15, 6,
+			195, 92, 19, 0, 15, 7, 196, 80, 179, 173, 200, 15, 7, 196, 76, 179, 45, 200, 15, 6, 195, 76, 147, 0, 15, 6, 195, 64, 226, 69,
+			15, 6, 195, 28, 226, 69, 15, 7, 196, 19, 113, 193, 200, 15, 7, 196, 9, 35, 173, 200, 15, 6, 195, 52, 226, 69, 72, 0, 9, 198,
+			77, 163, 9, 208, 50, 69, 15, 16, 66, 64, 240, 48, 6, 111, 84, 35, 89, 0, 81, 119, 97, 115, 32, 16, 66, 64, 240, 48, 6, 111,
+			47, 112, 65, 0, 81, 116, 121, 109, 32, 14, 66, 64, 240, 48, 6, 111, 47, 111, 0, 81, 116, 111, 32, 14, 66, 64, 240, 48, 6, 111,
+			47, 109, 0, 81, 116, 101, 32, 15, 66, 64, 240, 48, 6, 111, 47, 114, 0, 81, 116, 196, 133, 32, 16, 66, 64, 240, 48, 6, 111, 67,
+			38, 109, 0, 81, 110, 105, 101, 32, 17, 66, 64, 240, 48, 6, 111, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 64, 240, 48,
+			6, 111, 67, 37, 65, 0, 81, 110, 105, 109, 32, 18, 66, 64, 240, 48, 6, 111, 67, 38, 109, 57, 0, 81, 110, 105, 101, 106, 32, 16,
+			66, 64, 240, 48, 6, 111, 50, 35, 89, 0, 81, 110, 97, 115, 32, 18, 66, 64, 240, 48, 6, 111, 65, 67, 38, 109, 0, 81, 109, 110,
+			105, 101, 32, 5, 194, 64, 240, 76, 0, 6, 195, 184, 210, 74, 15, 18, 67, 64, 241, 0, 48, 6, 111, 72, 84, 35, 89, 0, 81, 119,
+			97, 115, 32, 18, 67, 64, 241, 0, 48, 6, 111, 47, 47, 112, 65, 0, 81, 116, 121, 109, 32, 16, 67, 64, 241, 0, 48, 6, 111, 47,
+			47, 111, 0, 81, 116, 111, 32, 16, 67, 64, 241, 0, 48, 6, 111, 47, 47, 109, 0, 81, 116, 101, 32, 17, 67, 64, 241, 0, 48, 6,
+			111, 47, 47, 114, 0, 81, 116, 196, 133, 32, 18, 67, 64, 241, 0, 48, 6, 111, 72, 67, 38, 109, 0, 81, 110, 105, 101, 32, 19, 67,
+			64, 241, 0, 48, 6, 111, 72, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 18, 67, 64, 241, 0, 48, 6, 111, 72, 67, 37, 65, 0,
+			81, 110, 105, 109, 32, 19, 67, 64, 241, 0, 48, 6, 111, 72, 67, 38, 114, 0, 81, 110, 105, 196, 133, 32, 18, 67, 64, 241, 0, 48,
+			6, 111, 72, 50, 35, 89, 0, 81, 110, 97, 115, 32, 13, 69, 53, 81, 83, 48, 144, 65, 40, 89, 55, 37, 0, 6, 195, 64, 241, 0,
+			76, 9, 198, 45, 73, 210, 100, 50, 0, 76, 19, 2, 203, 157, 101, 4, 40, 68, 81, 35, 51, 6, 40, 65, 55, 35, 58, 47, 0, 0,
+			7, 196, 76, 180, 167, 40, 15, 6, 195, 73, 172, 119, 15, 0, 6, 195, 104, 67, 205, 15, 6, 195, 77, 163, 9, 15, 12, 2, 203, 155,
+			111, 81, 6, 111, 50, 109, 49, 0, 0, 9, 198, 105, 38, 133, 47, 32, 153, 15, 9, 198, 104, 208, 82, 107, 32, 153, 15, 9, 198, 92,
+			34, 69, 31, 32, 153, 15, 9, 198, 77, 162, 204, 39, 32, 153, 15, 9, 198, 77, 2, 69, 47, 32, 153, 15, 9, 198, 76, 50, 12, 7,
+			32, 153, 15, 6, 195, 104, 75, 120, 15, 12, 2, 203, 152, 71, 51, 6, 109, 84, 37, 89, 0, 0, 19, 2, 203, 153, 81, 6, 40, 51,
+			50, 35, 10, 49, 51, 6, 111, 48, 49, 35, 0, 0, 0, 9, 198, 107, 137, 242, 47, 32, 153, 15, 7, 196, 81, 38, 133, 64, 15, 7,
+			196, 45, 38, 133, 64, 15, 9, 198, 64, 243, 137, 21, 112, 120, 8, 0, 6, 195, 65, 53, 74, 15, 0, 9, 198, 104, 36, 149, 220, 77,
+			192, 15, 9, 198, 93, 4, 154, 196, 77, 192, 15, 7, 196, 52, 145, 82, 104, 15, 0, 6, 195, 92, 30, 0, 15, 6, 195, 77, 69, 76,
+			15, 8, 197, 45, 2, 79, 73, 160, 15, 0, 0, 0, 0, 8, 197, 93, 164, 149, 77, 160, 15, 8, 197, 77, 50, 69, 77, 160, 15, 8,
+			197, 76, 54, 133, 77, 160, 15, 8, 197, 64, 226, 69, 77, 160, 15, 8, 197, 45, 2, 65, 73, 160, 15, 8, 197, 13, 162, 193, 77, 160,
+			15, 0, 0, 6, 195, 45, 2, 113, 15, 0, 6, 195, 105, 165, 110, 15, 6, 195, 93, 165, 110, 15, 6, 195, 77, 51, 238, 15, 6, 195,
+			73, 115, 238, 15, 0, 6, 195, 92, 67, 205, 15, 0, 7, 196, 77, 160, 218, 4, 15, 0, 8, 197, 80, 50, 14, 36, 80, 15, 8, 197,
+			76, 179, 14, 36, 80, 15, 8, 197, 76, 50, 14, 36, 80, 15, 12, 69, 60, 97, 137, 12, 80, 111, 83, 37, 89, 0, 0, 6, 195, 105,
+			115, 238, 15, 6, 195, 104, 147, 238, 15, 6, 195, 92, 147, 238, 15, 6, 195, 64, 197, 110, 15, 6, 195, 64, 193, 110, 15, 0, 7, 196,
+			65, 38, 173, 224, 15, 6, 195, 55, 16, 218, 15, 6, 195, 200, 176, 74, 15, 6, 195, 43, 16, 218, 15, 0, 7, 196, 81, 38, 173, 208,
+			15, 7, 196, 9, 156, 129, 208, 76, 0, 8, 197, 55, 64, 201, 77, 160, 15, 24, 69, 65, 38, 133, 16, 80, 48, 91, 109, 72, 6, 109,
+			65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 23, 69, 65, 38, 133, 16, 80, 48, 91, 109, 72, 6, 109, 65, 50, 114, 0, 81, 109,
+			110, 196, 133, 32, 31, 69, 12, 128, 82, 28, 80, 91, 35, 51, 90, 109, 72, 35, 83, 109, 51, 0, 68, 81, 100, 39, 97, 102, 102, 97,
+			105, 114, 101, 115, 32, 0, 7, 196, 45, 33, 116, 48, 15, 8, 197, 29, 38, 173, 222, 224, 15, 9, 198, 12, 131, 1, 77, 160, 218, 15,
+			0, 6, 195, 104, 224, 114, 15, 6, 195, 104, 192, 114, 15, 6, 195, 92, 64, 114, 15, 6, 195, 80, 192, 114, 15, 6, 195, 65, 32, 114,
+			15, 6, 195, 64, 20, 242, 15, 7, 196, 53, 35, 195, 104, 15, 6, 195, 29, 32, 114, 15, 0, 6, 195, 48, 115, 177, 15, 0, 9, 198,
+			80, 179, 137, 21, 54, 128, 15, 9, 198, 77, 162, 204, 37, 54, 128, 15, 8, 197, 76, 50, 12, 4, 208, 15, 0, 9, 198, 76, 50, 12,
+			36, 38, 64, 15, 6, 195, 65, 37, 74, 15, 0, 6, 195, 105, 38, 114, 15, 6, 195, 104, 38, 114, 15, 6, 195, 93, 38, 114, 15, 6,
+			195, 77, 166, 114, 15, 6, 195, 77, 2, 114, 15, 6, 195, 45, 2, 114, 15, 6, 195, 12, 226, 114, 15, 6, 195, 12, 194, 114, 15, 10,
+			67, 40, 18, 197, 75, 109, 57, 49, 0, 0, 0, 8, 197, 104, 44, 129, 223, 48, 15, 7, 196, 79, 32, 66, 200, 15, 0, 0, 6, 195,
+			107, 32, 74, 15, 6, 195, 75, 16, 218, 15, 6, 195, 28, 227, 205, 15, 0, 9, 198, 105, 115, 5, 47, 32, 153, 15, 9, 198, 105, 50,
+			65, 19, 32, 153, 15, 9, 198, 105, 38, 133, 19, 32, 153, 15, 9, 198, 104, 65, 67, 35, 32, 153, 15, 9, 198, 104, 35, 1, 47, 32,
+			153, 15, 9, 198, 104, 35, 1, 19, 32, 153, 15, 9, 198, 93, 54, 133, 19, 32, 153, 15, 9, 198, 93, 50, 65, 19, 32, 153, 15, 9,
+			198, 92, 180, 129, 19, 32, 153, 15, 9, 198, 92, 116, 153, 107, 32, 153, 15, 9, 198, 77, 160, 218, 87, 32, 153, 15, 9, 198, 77, 160,
+			218, 63, 32, 153, 15, 9, 198, 77, 4, 201, 63, 32, 153, 15, 9, 198, 76, 50, 12, 63, 32, 153, 15, 6, 195, 200, 179, 205, 15, 0,
+			9, 198, 105, 162, 109, 11, 32, 153, 15, 9, 198, 105, 114, 103, 19, 32, 153, 15, 9, 198, 93, 164, 167, 79, 32, 153, 15, 9, 198, 93,
+			52, 9, 183, 32, 153, 15, 9, 198, 93, 50, 109, 47, 32, 153, 15, 9, 198, 93, 1, 114, 107, 32, 153, 15, 9, 198, 92, 226, 103, 79,
+			32, 153, 15, 9, 198, 80, 50, 14, 183, 32, 153, 15, 9, 198, 77, 76, 149, 47, 32, 153, 15, 9, 198, 76, 179, 49, 79, 32, 153, 15,
+			9, 198, 28, 226, 103, 83, 32, 153, 15, 9, 198, 11, 113, 26, 39, 32, 153, 15, 0, 9, 198, 19, 129, 56, 103, 32, 153, 15, 9, 198,
+			40, 243, 129, 80, 128, 78, 65, 0, 6, 195, 48, 82, 128, 15, 6, 195, 8, 146, 128, 15, 7, 195, 80, 82, 128, 72, 10, 0, 14, 2,
+			95, 34, 117, 40, 118, 6, 112, 89, 58, 40, 83, 0, 0, 7, 196, 77, 160, 82, 64, 15, 8, 197, 77, 68, 154, 183, 64, 15, 15, 2,
+			95, 33, 84, 112, 49, 91, 6, 112, 49, 67, 37, 49, 0, 0, 9, 198, 104, 208, 82, 77, 160, 218, 15, 5, 194, 81, 144, 76, 0, 7,
+			196, 104, 161, 83, 104, 15, 7, 196, 80, 181, 201, 40, 15, 9, 67, 12, 243, 128, 49, 111, 50, 0, 14, 2, 95, 39, 35, 48, 6, 111,
+			89, 47, 51, 111, 83, 0, 6, 65, 208, 97, 37, 0, 0, 7, 196, 54, 209, 18, 104, 15, 0, 9, 198, 76, 50, 12, 5, 54, 128, 15,
+			9, 198, 65, 53, 18, 105, 146, 128, 15, 0, 11, 2, 95, 36, 72, 6, 111, 55, 35, 51, 0, 0, 7, 196, 92, 193, 67, 104, 15, 7,
+			195, 80, 83, 128, 72, 10, 0, 9, 198, 92, 50, 18, 104, 54, 177, 15, 0, 8, 197, 104, 219, 68, 73, 160, 15, 9, 198, 104, 20, 19,
+			81, 38, 128, 15, 9, 198, 77, 2, 69, 65, 38, 128, 15, 9, 198, 64, 244, 19, 81, 38, 128, 15, 15, 2, 95, 41, 48, 111, 50, 35,
+			84, 38, 6, 35, 97, 109, 0, 0, 6, 195, 92, 193, 110, 15, 6, 195, 92, 181, 110, 15, 6, 195, 77, 67, 238, 15, 6, 195, 64, 147,
+			238, 15, 7, 196, 19, 129, 56, 100, 15, 6, 195, 16, 35, 238, 15, 6, 195, 9, 35, 238, 15, 11, 2, 95, 40, 50, 35, 84, 38, 35,
+			89, 0, 0, 0, 8, 197, 107, 139, 114, 9, 144, 15, 9, 198, 104, 34, 69, 31, 32, 153, 15, 9, 198, 93, 50, 79, 19, 32, 153, 15,
+			9, 198, 92, 70, 137, 7, 32, 153, 15, 9, 198, 92, 50, 69, 47, 32, 153, 15, 9, 198, 77, 160, 218, 7, 32, 153, 15, 9, 198, 45,
+			38, 133, 67, 32, 153, 15, 7, 196, 29, 112, 114, 184, 15, 23, 73, 12, 147, 145, 84, 80, 197, 57, 67, 192, 76, 37, 50, 49, 58, 109,
+			76, 109, 50, 47, 111, 0, 0, 13, 2, 95, 45, 65, 6, 112, 97, 55, 50, 37, 49, 0, 0, 9, 198, 226, 124, 139, 200, 38, 64, 15,
+			14, 2, 95, 44, 48, 91, 109, 119, 6, 37, 50, 109, 49, 0, 0, 9, 2, 95, 51, 47, 91, 6, 112, 0, 0, 8, 197, 93, 4, 154,
+			183, 128, 15, 7, 196, 29, 38, 119, 184, 15, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 8, 197, 17, 46, 25, 77, 160, 15, 12, 69,
+			40, 16, 203, 36, 80, 75, 109, 49, 37, 0, 11, 2, 95, 49, 57, 6, 109, 72, 109, 50, 0, 0, 6, 195, 80, 235, 67, 15, 6, 195,
+			80, 203, 67, 15, 6, 195, 65, 43, 67, 15, 6, 195, 12, 203, 67, 15, 11, 2, 95, 48, 88, 6, 109, 51, 111, 12, 0, 0, 7, 196,
+			92, 19, 3, 104, 15, 6, 195, 80, 176, 114, 15, 6, 195, 52, 144, 114, 15, 7, 196, 12, 145, 83, 104, 15, 6, 195, 52, 144, 114, 76,
+			10, 67, 32, 243, 69, 101, 111, 58, 65, 0, 11, 2, 95, 55, 97, 6, 109, 72, 109, 65, 0, 0, 9, 198, 92, 50, 18, 104, 54, 173,
+			15, 10, 2, 95, 54, 91, 6, 109, 97, 119, 0, 0, 9, 198, 77, 160, 218, 101, 54, 128, 15, 9, 198, 29, 38, 141, 37, 54, 128, 15,
+			11, 2, 95, 53, 48, 38, 6, 109, 67, 119, 0, 0, 6, 195, 81, 37, 74, 15, 11, 2, 95, 52, 76, 47, 6, 109, 51, 112, 0, 0,
+			6, 195, 104, 214, 114, 15, 6, 195, 104, 34, 114, 15, 6, 195, 92, 34, 114, 15, 6, 195, 80, 194, 114, 15, 6, 195, 76, 147, 242, 15,
+			6, 195, 56, 146, 242, 15, 13, 2, 95, 59, 97, 51, 6, 109, 72, 67, 37, 49, 0, 0, 15, 2, 95, 58, 72, 84, 40, 49, 51, 6,
+			111, 48, 109, 49, 0, 0, 9, 198, 105, 114, 67, 33, 38, 128, 15, 9, 198, 93, 160, 137, 21, 38, 128, 15, 13, 2, 95, 57, 120, 6,
+			109, 84, 38, 109, 67, 119, 0, 0, 8, 197, 105, 162, 109, 11, 32, 15, 18, 66, 92, 80, 84, 6, 109, 65, 67, 38, 109, 0, 81, 109,
+			110, 105, 101, 32, 5, 194, 92, 80, 72, 10, 2, 95, 56, 6, 111, 97, 109, 65, 0, 0, 20, 2, 95, 63, 88, 50, 4, 35, 49, 15,
+			88, 35, 48, 112, 47, 6, 35, 67, 35, 0, 0, 8, 197, 95, 139, 114, 9, 144, 15, 13, 2, 95, 62, 58, 38, 6, 109, 68, 49, 91,
+			109, 0, 0, 7, 196, 40, 80, 149, 80, 66, 0, 12, 2, 95, 60, 65, 67, 6, 109, 57, 91, 109, 0, 0, 6, 195, 225, 144, 218, 15,
+			6, 195, 80, 179, 205, 15, 0, 8, 197, 77, 4, 154, 183, 128, 15, 9, 198, 9, 156, 153, 208, 214, 64, 76, 0, 8, 197, 77, 12, 143,
+			77, 160, 15, 6, 195, 53, 157, 12, 15, 8, 197, 19, 113, 193, 77, 160, 15, 12, 68, 40, 19, 133, 80, 75, 35, 50, 109, 47, 0, 0,
+			0, 0, 6, 195, 12, 128, 241, 15, 0, 0, 0, 7, 196, 76, 145, 67, 104, 15, 0, 9, 67, 12, 243, 204, 49, 40, 55, 0, 0, 8,
+			197, 77, 69, 231, 73, 160, 15, 8, 197, 12, 132, 154, 12, 144, 15, 0, 0, 6, 195, 93, 41, 238, 15, 6, 195, 93, 43, 64, 15, 7,
+			196, 92, 145, 76, 8, 15, 6, 195, 65, 43, 64, 15, 6, 195, 80, 18, 201, 76, 0, 9, 198, 104, 116, 153, 107, 32, 153, 15, 9, 198,
+			76, 180, 154, 103, 32, 153, 15, 9, 198, 12, 133, 201, 63, 32, 153, 15, 9, 198, 12, 133, 201, 7, 32, 153, 15, 9, 198, 12, 128, 201,
+			63, 32, 153, 15, 12, 68, 12, 148, 131, 4, 117, 37, 51, 49, 35, 0, 0, 9, 198, 104, 210, 103, 83, 32, 153, 15, 9, 198, 93, 114,
+			103, 107, 32, 153, 15, 9, 198, 93, 3, 39, 83, 32, 153, 15, 9, 198, 65, 38, 173, 31, 32, 153, 15, 7, 196, 93, 41, 244, 184, 15,
+			6, 195, 8, 251, 128, 15, 6, 195, 8, 27, 128, 15, 4, 193, 212, 43, 4, 193, 212, 43, 0, 8, 197, 93, 50, 109, 210, 224, 15, 8,
+			197, 81, 38, 173, 210, 224, 15, 8, 197, 65, 38, 173, 210, 224, 15, 0, 13, 67, 85, 48, 128, 40, 109, 89, 71, 6, 109, 0, 13, 0,
+			7, 196, 92, 82, 180, 184, 15, 7, 196, 48, 115, 137, 20, 15, 0, 7, 196, 47, 32, 116, 184, 15, 0, 6, 195, 64, 226, 74, 15, 6,
+			195, 16, 219, 67, 15, 20, 73, 72, 21, 1, 80, 245, 73, 48, 193, 64, 34, 35, 47, 35, 47, 40, 57, 0, 67, 0, 14, 67, 20, 177,
+			192, 109, 49, 35, 81, 38, 6, 109, 0, 13, 0, 7, 196, 105, 114, 69, 52, 15, 6, 195, 104, 214, 76, 15, 0, 7, 196, 92, 50, 69,
+			48, 15, 7, 196, 17, 162, 69, 48, 15, 6, 195, 13, 166, 115, 15, 13, 69, 16, 147, 135, 33, 144, 116, 37, 68, 81, 37, 0, 22, 67,
+			16, 145, 83, 116, 6, 37, 57, 109, 89, 6, 37, 51, 109, 0, 81, 105, 114, 97, 101, 32, 0, 8, 197, 104, 224, 114, 9, 144, 15, 8,
+			197, 92, 64, 114, 9, 144, 15, 8, 197, 64, 20, 242, 9, 144, 15, 8, 197, 92, 226, 103, 79, 32, 15, 6, 195, 77, 84, 218, 15, 20,
+			67, 65, 12, 139, 48, 111, 47, 48, 40, 58, 49, 6, 111, 84, 50, 37, 49, 0, 24, 0, 9, 198, 104, 210, 65, 224, 78, 0, 15, 6,
+			195, 104, 161, 64, 15, 9, 198, 93, 163, 137, 157, 60, 128, 15, 9, 198, 77, 68, 154, 181, 60, 128, 15, 7, 195, 4, 193, 64, 76, 28,
+			24, 2, 95, 91, 50, 4, 35, 84, 38, 35, 89, 15, 49, 84, 35, 72, 51, 35, 47, 6, 111, 84, 112, 0, 0, 0, 7, 196, 224, 115,
+			137, 20, 15, 6, 195, 105, 32, 115, 15, 0, 6, 195, 47, 35, 243, 15, 16, 66, 104, 16, 88, 6, 35, 67, 38, 109, 0, 81, 110, 105,
+			101, 32, 17, 66, 104, 16, 88, 6, 35, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 16, 66, 104, 16, 88, 6, 35, 84, 35, 89, 0,
+			81, 119, 97, 115, 32, 16, 66, 104, 16, 88, 6, 35, 47, 112, 65, 0, 81, 116, 121, 109, 32, 14, 66, 104, 16, 88, 6, 35, 47, 111,
+			0, 81, 116, 111, 32, 14, 66, 104, 16, 88, 6, 35, 47, 109, 0, 81, 116, 101, 32, 15, 66, 104, 16, 88, 6, 35, 47, 114, 0, 81,
+			116, 196, 133, 32, 16, 66, 104, 16, 88, 6, 35, 67, 37, 65, 0, 81, 110, 105, 109, 32, 17, 66, 104, 16, 88, 6, 35, 67, 38, 114,
+			0, 81, 110, 105, 196, 133, 32, 16, 66, 104, 16, 88, 6, 35, 50, 35, 89, 0, 81, 110, 97, 115, 32, 18, 66, 104, 16, 88, 6, 35,
+			65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 5, 194, 104, 16, 76, 0, 9, 198, 93, 4, 154, 180, 124, 128, 15, 9, 198, 77, 4,
+			154, 180, 124, 128, 15, 6, 195, 51, 134, 74, 15, 17, 2, 95, 95, 48, 111, 72, 49, 51, 109, 97, 55, 6, 109, 67, 109, 0, 0, 0,
+			30, 2, 95, 93, 48, 51, 35, 84, 112, 15, 50, 4, 35, 84, 38, 35, 89, 15, 49, 84, 35, 72, 51, 35, 47, 6, 111, 84, 112, 0,
+			0, 7, 196, 92, 181, 82, 92, 15, 0, 6, 195, 225, 38, 74, 15, 6, 195, 73, 146, 128, 15, 6, 195, 28, 224, 77, 15, 6, 195, 17,
+			82, 128, 15, 0, 0, 6, 2, 95, 97, 35, 0, 0, 6, 195, 64, 20, 154, 15, 6, 195, 52, 226, 74, 15, 6, 195, 28, 224, 74, 15,
+			6, 195, 8, 16, 218, 15, 0, 7, 196, 104, 65, 82, 104, 15, 0, 0, 8, 197, 65, 53, 18, 105, 144, 15, 0, 0, 7, 196, 104, 161,
+			68, 104, 15, 0, 7, 196, 92, 116, 129, 52, 15, 0, 6, 2, 95, 105, 37, 0, 0, 18, 67, 18, 34, 155, 72, 109, 90, 35, 84, 6,
+			37, 0, 81, 118, 117, 101, 32, 17, 67, 18, 34, 155, 72, 109, 90, 35, 84, 6, 37, 0, 81, 118, 117, 32, 0, 6, 195, 81, 43, 64,
+			15, 6, 195, 53, 43, 64, 15, 6, 195, 17, 43, 64, 15, 6, 195, 16, 35, 205, 15, 20, 67, 88, 148, 192, 84, 37, 88, 35, 84, 37,
+			0, 67, 82, 97, 32, 118, 105, 115, 32, 21, 67, 88, 148, 192, 84, 37, 88, 35, 84, 37, 0, 67, 82, 195, 160, 32, 118, 105, 115, 32,
+			6, 2, 95, 111, 111, 0, 0, 6, 195, 74, 125, 46, 15, 7, 196, 67, 32, 67, 104, 15, 7, 196, 19, 113, 193, 40, 15, 12, 68, 13,
+			83, 16, 4, 49, 40, 55, 48, 35, 0, 0, 6, 195, 92, 155, 128, 15, 6, 195, 64, 155, 128, 15, 6, 195, 48, 251, 128, 15, 6, 195,
+			48, 91, 128, 15, 6, 195, 48, 27, 128, 15, 6, 195, 16, 251, 128, 15, 6, 195, 16, 27, 128, 15, 6, 195, 8, 155, 128, 15, 0, 6,
+			195, 104, 67, 238, 15, 6, 195, 28, 227, 238, 15, 0, 6, 195, 224, 112, 64, 15, 6, 195, 105, 123, 64, 15, 7, 196, 105, 38, 149, 184,
+			15, 7, 196, 93, 53, 15, 184, 15, 6, 195, 77, 59, 64, 15, 6, 195, 73, 123, 64, 15, 6, 195, 45, 41, 202, 15, 0, 7, 196, 104,
+			220, 67, 104, 15, 8, 197, 93, 114, 69, 74, 224, 15, 6, 195, 10, 125, 46, 15, 11, 67, 40, 244, 226, 107, 111, 88, 6, 109, 0, 11,
+			68, 76, 48, 78, 20, 89, 49, 35, 50, 0, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76, 109, 49, 0, 0, 6, 195, 9, 156, 143,
+			76, 0, 7, 196, 208, 50, 69, 12, 15, 7, 196, 76, 180, 153, 40, 15, 6, 195, 75, 139, 67, 15, 6, 195, 55, 139, 67, 15, 6, 195,
+			51, 139, 67, 15, 6, 195, 31, 139, 67, 15, 6, 195, 8, 21, 192, 15, 26, 67, 12, 244, 193, 49, 4, 111, 88, 35, 50, 6, 111, 89,
+			47, 51, 35, 0, 81, 110, 111, 115, 116, 114, 97, 32, 7, 2, 95, 119, 84, 40, 0, 0, 0, 7, 196, 52, 153, 212, 200, 15, 7, 196,
+			44, 204, 83, 200, 15, 6, 2, 95, 117, 40, 0, 0, 0, 7, 196, 52, 67, 5, 40, 15, 7, 196, 13, 160, 201, 40, 15, 7, 196, 12,
+			131, 5, 40, 15, 21, 2, 95, 123, 50, 4, 35, 84, 38, 35, 89, 15, 49, 55, 35, 65, 51, 111, 84, 112, 0, 0, 7, 196, 76, 50,
+			12, 36, 15, 6, 195, 74, 116, 242, 15, 8, 2, 95, 122, 88, 109, 47, 0, 0, 0, 8, 197, 93, 163, 103, 31, 32, 15, 5, 194, 80,
+			240, 72, 0, 9, 198, 105, 114, 83, 200, 38, 64, 15, 9, 198, 105, 64, 82, 200, 38, 64, 15, 9, 198, 104, 214, 83, 200, 38, 64, 15,
+			9, 198, 104, 192, 90, 200, 38, 64, 15, 9, 198, 104, 116, 143, 200, 38, 64, 15, 9, 198, 104, 112, 68, 200, 38, 64, 15, 9, 198, 104,
+			64, 82, 200, 38, 64, 15, 9, 198, 93, 54, 153, 200, 38, 64, 15, 9, 198, 92, 116, 129, 200, 38, 64, 15, 9, 198, 92, 54, 149, 200,
+			38, 64, 15, 9, 198, 77, 67, 9, 200, 38, 64, 15, 9, 198, 77, 4, 129, 200, 38, 64, 15, 9, 198, 76, 178, 83, 200, 38, 64, 15,
+			9, 198, 64, 145, 75, 200, 38, 64, 15, 9, 198, 52, 67, 1, 200, 38, 64, 15, 9, 198, 29, 38, 90, 200, 38, 64, 15, 9, 198, 13,
+			160, 201, 200, 38, 64, 15, 9, 198, 12, 144, 200, 200, 38, 64, 15, 9, 198, 12, 131, 1, 200, 38, 64, 15, 9, 198, 8, 192, 75, 200,
+			38, 64, 15, 9, 198, 8, 192, 68, 200, 38, 64, 15, 0, 0, 28, 2, 95, 125, 48, 51, 35, 84, 112, 15, 50, 4, 35, 84, 38, 35,
+			89, 15, 49, 55, 35, 65, 51, 6, 111, 84, 112, 0, 0, 11, 200, 77, 163, 9, 9, 157, 3, 36, 80, 15, 0, 0, 9, 198, 56, 145,
+			75, 82, 116, 129, 76, 0, 0, 6, 195, 76, 229, 74, 15, 6, 195, 8, 80, 218, 15, 5, 194, 93, 144, 76, 0, 7, 196, 81, 37, 231,
+			224, 15, 0, 8, 197, 77, 68, 151, 159, 128, 15, 8, 197, 17, 33, 80, 13, 160, 15, 0, 6, 195, 92, 157, 0, 15, 0, 6, 195, 76,
+			181, 74, 15, 8, 197, 52, 156, 68, 105, 144, 76, 0, 7, 196, 40, 242, 131, 104, 15, 0, 16, 70, 13, 84, 129, 12, 19, 192, 49, 37,
+			51, 35, 89, 35, 111, 0, 0, 0, 0, 7, 196, 105, 54, 153, 184, 15, 7, 196, 93, 38, 149, 184, 15, 7, 196, 76, 179, 5, 184, 15,
+			7, 196, 64, 50, 15, 184, 15, 0, 6, 195, 47, 35, 205, 15, 7, 196, 185, 114, 67, 104, 15, 0, 0, 6, 194, 82, 208, 72, 10, 18,
+			70, 64, 17, 197, 16, 245, 206, 48, 109, 57, 75, 72, 6, 35, 58, 50, 0, 0, 7, 196, 93, 54, 153, 184, 15, 7, 196, 77, 68, 129,
+			184, 15, 7, 196, 77, 4, 129, 184, 15, 10, 199, 76, 50, 12, 5, 54, 131, 104, 15, 6, 195, 200, 176, 64, 15, 0, 8, 197, 104, 115,
+			137, 22, 224, 15, 8, 197, 93, 163, 137, 22, 224, 15, 8, 197, 92, 115, 137, 22, 224, 15, 8, 197, 92, 70, 137, 62, 224, 15, 8, 197,
+			77, 160, 218, 102, 224, 15, 8, 197, 77, 160, 218, 62, 224, 15, 8, 197, 77, 4, 201, 22, 224, 15, 8, 197, 76, 180, 154, 102, 224, 15,
+			8, 197, 76, 50, 23, 102, 224, 15, 8, 197, 29, 38, 141, 62, 224, 15, 8, 197, 12, 128, 201, 22, 224, 15, 0, 0, 9, 198, 104, 210,
+			113, 44, 54, 128, 15, 9, 198, 107, 37, 83, 104, 54, 128, 15, 0, 7, 196, 92, 68, 167, 224, 15, 7, 196, 12, 226, 83, 104, 15, 7,
+			196, 9, 35, 195, 104, 15, 19, 67, 13, 84, 129, 49, 37, 51, 35, 89, 35, 111, 0, 81, 195, 167, 97, 111, 32, 17, 8, 100, 101, 108,
+			39, 97, 114, 116, 101, 72, 109, 55, 6, 35, 51, 0, 0, 7, 196, 105, 54, 153, 200, 15, 7, 196, 104, 226, 75, 200, 15, 7, 196, 92,
+			147, 7, 200, 15, 6, 195, 76, 181, 76, 15, 7, 196, 73, 161, 75, 200, 15, 7, 196, 64, 50, 15, 200, 15, 7, 196, 52, 147, 11, 200,
+			15, 7, 196, 12, 145, 75, 200, 15, 18, 9, 100, 101, 108, 108, 39, 97, 114, 116, 101, 72, 109, 55, 6, 35, 51, 0, 0, 7, 196, 208,
+			193, 80, 200, 15, 0, 7, 196, 17, 165, 207, 204, 15, 13, 4, 95, 35, 51, 50, 89, 48, 35, 117, 57, 35, 0, 0, 6, 195, 225, 156,
+			128, 15, 7, 196, 93, 54, 153, 40, 15, 9, 198, 208, 50, 69, 73, 12, 128, 15, 15, 67, 85, 49, 192, 40, 10, 109, 89, 81, 38, 6,
+			109, 0, 13, 11, 67, 40, 244, 197, 107, 111, 88, 6, 109, 0, 0, 7, 196, 104, 214, 83, 200, 15, 7, 196, 93, 54, 153, 200, 15, 7,
+			196, 77, 4, 129, 200, 15, 7, 196, 76, 178, 83, 200, 15, 32, 68, 12, 130, 76, 36, 76, 4, 37, 55, 37, 49, 111, 50, 49, 6, 35,
+			34, 50, 109, 0, 82, 99, 111, 110, 32, 99, 97, 114, 110, 101, 32, 11, 68, 12, 130, 76, 36, 76, 37, 55, 37, 0, 0, 0, 9, 198,
+			104, 36, 154, 100, 76, 128, 15, 9, 198, 12, 132, 154, 12, 156, 128, 15, 17, 66, 104, 80, 88, 6, 109, 65, 50, 114, 0, 81, 109, 110,
+			196, 133, 32, 18, 66, 104, 80, 88, 6, 109, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101, 32, 0, 9, 198, 93, 4, 154, 180, 76, 128,
+			15, 6, 195, 80, 181, 201, 15, 9, 198, 208, 210, 79, 72, 76, 128, 15, 9, 198, 77, 4, 154, 180, 76, 128, 15, 6, 195, 45, 2, 64,
+			15, 0, 6, 195, 185, 3, 205, 15, 15, 70, 29, 32, 69, 12, 20, 192, 81, 51, 109, 49, 35, 89, 0, 0, 0, 8, 197, 76, 50, 50,
+			20, 208, 15, 8, 197, 76, 50, 50, 4, 208, 15, 12, 68, 5, 32, 213, 76, 35, 34, 49, 40, 89, 0, 0, 6, 195, 52, 19, 89, 76,
+			0, 0, 0, 9, 198, 104, 211, 137, 20, 164, 218, 15, 9, 198, 209, 114, 83, 104, 54, 128, 15, 6, 195, 52, 233, 248, 15, 9, 198, 11,
+			38, 83, 104, 54, 128, 15, 0, 7, 196, 93, 60, 129, 92, 15, 14, 67, 52, 195, 128, 65, 37, 55, 57, 111, 50, 40, 83, 0, 0, 8,
+			197, 92, 70, 137, 20, 160, 15, 8, 197, 12, 128, 201, 20, 160, 15, 7, 65, 220, 96, 109, 47, 0, 0, 0, 8, 197, 105, 165, 114, 9,
+			144, 15, 8, 197, 65, 37, 114, 9, 144, 15, 8, 197, 64, 197, 114, 9, 144, 15, 6, 195, 92, 181, 74, 15, 0, 7, 196, 104, 76, 129,
+			92, 15, 6, 195, 93, 44, 64, 15, 0, 0, 7, 196, 81, 156, 130, 100, 15, 7, 196, 53, 156, 130, 100, 15, 6, 195, 77, 75, 80, 15,
+			0, 6, 195, 92, 156, 128, 15, 6, 195, 64, 156, 128, 15, 6, 195, 48, 252, 128, 15, 6, 195, 48, 28, 128, 15, 6, 195, 16, 252, 128,
+			15, 6, 195, 16, 28, 128, 15, 6, 195, 8, 156, 128, 15, 0, 9, 198, 105, 118, 75, 200, 38, 64, 15, 9, 198, 105, 114, 79, 200, 38,
+			64, 15, 9, 198, 104, 112, 83, 200, 38, 64, 15, 9, 198, 93, 53, 15, 200, 38, 64, 15, 9, 198, 93, 51, 149, 200, 38, 64, 15, 9,
+			198, 93, 50, 65, 200, 38, 64, 15, 9, 198, 81, 37, 207, 200, 38, 64, 15, 9, 198, 77, 4, 143, 200, 38, 64, 15, 9, 198, 76, 180,
+			153, 200, 38, 64, 15, 9, 198, 76, 147, 196, 200, 38, 64, 15, 9, 198, 76, 145, 75, 200, 38, 64, 15, 9, 198, 76, 80, 200, 200, 38,
+			64, 15, 9, 198, 76, 50, 50, 60, 38, 64, 15, 9, 198, 73, 161, 68, 200, 38, 64, 15, 9, 198, 65, 80, 200, 200, 38, 64, 15, 9,
+			198, 64, 50, 1, 200, 38, 64, 15, 9, 198, 52, 67, 9, 200, 38, 64, 15, 9, 198, 17, 162, 65, 200, 38, 64, 15, 9, 198, 17, 33,
+			207, 200, 38, 64, 15, 9, 198, 16, 226, 65, 200, 38, 64, 15, 9, 198, 13, 162, 193, 200, 38, 64, 15, 9, 198, 12, 133, 68, 200, 38,
+			64, 15, 6, 195, 77, 9, 202, 15, 7, 196, 17, 162, 79, 184, 15, 0, 6, 195, 77, 92, 192, 15, 0, 7, 196, 77, 160, 218, 180, 15,
+			7, 196, 76, 180, 154, 180, 15, 7, 196, 17, 33, 206, 180, 15, 7, 196, 13, 162, 206, 180, 15, 7, 196, 13, 160, 218, 180, 15, 0, 8,
+			197, 29, 38, 141, 38, 208, 15, 14, 70, 12, 245, 20, 4, 113, 64, 49, 111, 47, 112, 75, 0, 15, 70, 12, 243, 12, 4, 113, 64, 49,
+			111, 55, 6, 35, 90, 0, 0, 6, 195, 95, 134, 74, 15, 6, 195, 208, 193, 64, 15, 6, 195, 75, 129, 110, 15, 7, 196, 64, 50, 1,
+			184, 15, 7, 196, 17, 162, 65, 184, 15, 6, 195, 12, 155, 110, 15, 0, 8, 197, 77, 162, 204, 38, 224, 15, 8, 197, 77, 160, 218, 86,
+			224, 15, 8, 197, 77, 160, 218, 22, 224, 15, 8, 197, 12, 133, 201, 6, 224, 15, 0, 7, 196, 77, 162, 204, 180, 15, 19, 67, 12, 131,
+			215, 76, 35, 58, 76, 35, 40, 0, 66, 81, 99, 104, 111, 119, 32, 0, 10, 199, 77, 172, 153, 9, 157, 13, 100, 15, 6, 195, 8, 240,
+			218, 15, 0, 0, 7, 196, 77, 70, 71, 200, 15, 6, 195, 28, 155, 114, 15, 7, 196, 17, 162, 79, 200, 15, 7, 196, 16, 226, 79, 200,
+			15, 7, 196, 9, 32, 75, 200, 15, 6, 195, 10, 113, 50, 15, 14, 68, 5, 48, 201, 36, 6, 35, 89, 49, 109, 57, 0, 13, 0, 0,
+			7, 196, 81, 37, 207, 204, 15, 7, 196, 77, 3, 21, 204, 15, 8, 197, 11, 17, 26, 36, 80, 76, 0, 6, 195, 65, 44, 64, 15, 0,
+			7, 196, 64, 50, 1, 200, 15, 7, 196, 17, 162, 65, 200, 15, 0, 7, 196, 93, 156, 130, 100, 15, 7, 196, 73, 156, 130, 100, 15, 7,
+			196, 45, 92, 130, 100, 15, 7, 196, 17, 92, 130, 100, 15, 7, 196, 9, 156, 130, 100, 15, 6, 195, 54, 117, 192, 15, 0, 7, 196, 93,
+			68, 153, 204, 15, 9, 198, 77, 68, 154, 20, 124, 128, 15, 9, 198, 76, 50, 18, 101, 12, 128, 15, 9, 198, 29, 38, 141, 36, 28, 128,
+			15, 9, 198, 9, 38, 141, 36, 252, 128, 15, 9, 198, 9, 38, 141, 36, 28, 128, 15, 0, 0, 7, 196, 93, 114, 69, 220, 15, 7, 196,
+			83, 37, 67, 104, 15, 15, 70, 12, 128, 66, 48, 148, 192, 91, 35, 71, 55, 37, 0, 66, 0, 7, 196, 12, 131, 9, 64, 15, 0, 6,
+			195, 76, 181, 66, 15, 31, 69, 12, 128, 82, 30, 32, 91, 35, 51, 90, 109, 72, 35, 83, 109, 51, 0, 68, 81, 100, 39, 97, 102, 102,
+			97, 105, 114, 101, 115, 32, 0, 6, 195, 92, 194, 119, 15, 18, 67, 65, 38, 153, 48, 91, 6, 112, 84, 35, 89, 0, 81, 119, 97, 115,
+			32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 47, 112, 65, 0, 81, 116, 121, 109, 32, 19, 67, 65, 38, 153, 48, 91, 6, 112, 47, 112,
+			107, 0, 81, 116, 121, 99, 104, 32, 18, 67, 65, 38, 153, 48, 91, 6, 112, 47, 109, 57, 0, 81, 116, 101, 106, 32, 18, 67, 65, 38,
+			153, 48, 91, 6, 112, 67, 37, 65, 0, 81, 110, 105, 109, 32, 20, 67, 65, 38, 153, 48, 91, 6, 112, 67, 38, 109, 57, 0, 81, 110,
+			105, 101, 106, 32, 19, 67, 65, 38, 153, 48, 91, 6, 112, 67, 37, 107, 0, 81, 110, 105, 99, 104, 32, 18, 67, 65, 38, 153, 48, 91,
+			6, 112, 50, 35, 89, 0, 81, 110, 97, 115, 32, 20, 67, 65, 38, 153, 48, 91, 6, 112, 65, 67, 38, 109, 0, 81, 109, 110, 105, 101,
+			32, 6, 195, 9, 147, 9, 76, 6, 195, 65, 38, 153, 76, 0, 0, 7, 196, 40, 93, 196, 220, 15, 18, 72, 40, 16, 209, 84, 83, 9,
+			56, 80, 90, 35, 49, 55, 6, 37, 50, 0, 0, 8, 197, 105, 38, 177, 19, 112, 15, 8, 197, 104, 124, 129, 19, 112, 15, 8, 197, 65,
+			38, 177, 19, 112, 15, 8, 197, 65, 38, 173, 19, 112, 15, 6, 195, 12, 226, 74, 15, 7, 65, 224, 90, 109, 47, 0, 0, 7, 196, 45,
+			37, 83, 104, 15, 6, 195, 40, 83, 85, 72, 0, 8, 197, 12, 133, 201, 20, 160, 15, 11, 200, 56, 145, 75, 82, 116, 133, 28, 240, 76,
+			15, 67, 13, 68, 140, 49, 6, 111, 50, 47, 51, 111, 55, 0, 13, 0, 0, 8, 197, 93, 165, 114, 9, 144, 15, 8, 197, 77, 68, 154,
+			20, 192, 15, 6, 195, 16, 210, 74, 15, 0, 7, 196, 29, 112, 82, 104, 15, 0, 8, 197, 77, 65, 82, 13, 160, 15, 8, 197, 64, 148,
+			218, 13, 160, 15, 0, 0, 0, 9, 198, 76, 144, 68, 200, 38, 64, 15, 6, 195, 47, 37, 110, 15, 13, 67, 76, 52, 201, 89, 49, 6,
+			35, 88, 37, 0, 13, 0, 7, 196, 104, 66, 173, 184, 15, 7, 196, 93, 162, 109, 184, 15, 7, 196, 92, 114, 109, 184, 15, 7, 196, 92,
+			50, 109, 184, 15, 7, 196, 80, 179, 173, 184, 15, 7, 196, 208, 210, 69, 184, 15, 7, 196, 77, 68, 173, 184, 15, 7, 196, 76, 179, 45,
+			184, 15, 7, 196, 48, 115, 173, 184, 15, 6, 195, 44, 195, 173, 15, 7, 196, 19, 113, 193, 184, 15, 0, 6, 195, 208, 226, 109, 15, 7,
+			196, 75, 131, 173, 184, 15, 0, 14, 70, 12, 243, 12, 20, 113, 64, 49, 111, 55, 109, 75, 0, 0, 6, 195, 104, 224, 77, 15, 6, 195,
+			104, 219, 110, 15, 8, 197, 208, 50, 69, 73, 0, 15, 6, 195, 64, 155, 110, 15, 0, 12, 68, 12, 148, 131, 20, 49, 37, 51, 49, 109,
+			0, 0, 7, 196, 93, 41, 196, 220, 15, 7, 196, 29, 41, 196, 220, 15, 7, 196, 31, 32, 68, 220, 15, 0, 6, 195, 104, 224, 74, 15,
+			8, 197, 93, 50, 109, 19, 112, 15, 6, 195, 12, 194, 74, 15, 0, 7, 196, 92, 181, 82, 104, 15, 6, 195, 92, 145, 64, 15, 6, 195,
+			77, 60, 64, 15, 0, 7, 196, 104, 116, 143, 52, 15, 6, 195, 52, 155, 114, 15, 6, 195, 9, 156, 153, 76, 0, 7, 196, 92, 188, 149,
+			200, 15, 7, 196, 77, 160, 218, 196, 15, 7, 196, 76, 180, 154, 196, 15, 7, 196, 76, 188, 149, 200, 15, 7, 196, 17, 33, 206, 196, 15,
+			7, 196, 13, 160, 218, 196, 15, 0, 6, 195, 92, 217, 215, 15, 8, 197, 19, 113, 206, 36, 80, 15, 0, 6, 195, 81, 44, 64, 15, 6,
+			195, 64, 197, 193, 15, 6, 195, 17, 44, 64, 15, 0, 6, 195, 75, 140, 64, 15, 0, 7, 196, 77, 162, 204, 196, 15, 0, 7, 196, 224,
+			115, 173, 200, 15, 7, 196, 208, 50, 109, 200, 15, 0, 9, 198, 93, 54, 131, 104, 236, 64, 15, 0, 7, 196, 75, 131, 137, 40, 15, 0,
+			7, 196, 104, 68, 129, 64, 15, 7, 196, 12, 132, 129, 64, 15, 0, 0, 0, 9, 198, 104, 210, 69, 73, 165, 192, 15, 8, 197, 52, 144,
+			120, 19, 128, 15, 8, 197, 29, 114, 120, 19, 128, 15, 4, 193, 228, 43, 4, 193, 228, 43, 0, 7, 196, 105, 121, 196, 220, 15, 7, 196,
+			104, 121, 196, 220, 15, 7, 196, 66, 114, 132, 220, 15, 6, 195, 53, 37, 120, 15, 10, 199, 56, 145, 75, 82, 116, 153, 52, 76, 0, 6,
+			195, 28, 226, 74, 15, 0, 6, 195, 105, 124, 64, 15, 6, 195, 73, 124, 64, 15, 6, 195, 16, 243, 64, 15, 9, 67, 12, 195, 213, 49,
+			55, 40, 0, 9, 198, 9, 147, 9, 208, 214, 64, 76, 0, 9, 198, 56, 145, 75, 82, 116, 133, 76, 0, 7, 196, 13, 162, 206, 196, 15,
+			0, 22, 72, 13, 83, 66, 21, 35, 1, 56, 64, 49, 6, 35, 65, 71, 109, 51, 55, 109, 50, 72, 0, 16, 70, 12, 128, 82, 52, 85,
+			82, 91, 35, 51, 65, 109, 51, 0, 66, 0, 6, 195, 53, 44, 64, 15, 6, 195, 92, 19, 64, 72, 0, 0, 0, 0, 6, 195, 107, 133,
+			110, 15, 9, 198, 12, 132, 154, 13, 172, 64, 15, 13, 67, 45, 4, 128, 49, 35, 48, 51, 35, 55, 0, 24, 0, 6, 195, 107, 139, 110,
+			15, 7, 196, 92, 116, 153, 220, 15, 7, 196, 77, 12, 129, 184, 15, 7, 196, 55, 134, 83, 104, 15, 6, 195, 55, 64, 201, 15, 6, 195,
+			52, 179, 173, 15, 7, 196, 17, 46, 5, 184, 15, 12, 68, 12, 245, 80, 20, 49, 40, 48, 6, 109, 0, 0, 8, 197, 17, 33, 206, 182,
+			224, 15, 8, 197, 13, 162, 206, 182, 224, 15, 13, 69, 24, 243, 132, 84, 80, 83, 114, 72, 6, 37, 0, 0, 6, 195, 92, 67, 238, 15,
+			6, 195, 73, 165, 110, 15, 6, 195, 65, 37, 110, 15, 0, 9, 198, 104, 70, 137, 21, 46, 0, 15, 7, 196, 76, 180, 143, 8, 15, 6,
+			195, 28, 155, 110, 15, 0, 7, 196, 104, 212, 143, 220, 15, 7, 196, 104, 116, 153, 220, 15, 7, 196, 92, 188, 149, 184, 15, 6, 195, 80,
+			179, 173, 15, 7, 196, 76, 188, 149, 184, 15, 8, 197, 76, 50, 12, 6, 224, 15, 8, 197, 52, 147, 248, 19, 128, 15, 7, 196, 51, 134,
+			83, 104, 15, 10, 199, 13, 165, 5, 73, 148, 212, 4, 65, 0, 10, 199, 77, 163, 9, 9, 157, 13, 100, 15, 7, 196, 105, 41, 196, 220,
+			15, 7, 196, 107, 37, 68, 220, 15, 6, 195, 209, 2, 109, 15, 7, 196, 77, 12, 68, 220, 15, 7, 196, 9, 41, 196, 220, 15, 14, 69,
+			88, 149, 129, 12, 80, 84, 37, 84, 35, 76, 109, 0, 0, 6, 195, 80, 240, 218, 15, 0, 10, 199, 92, 50, 18, 104, 50, 83, 104, 15,
+			6, 195, 81, 43, 66, 15, 8, 197, 77, 12, 167, 19, 112, 15, 6, 195, 53, 38, 133, 15, 7, 196, 48, 115, 137, 40, 15, 0, 6, 195,
+			64, 145, 76, 15, 0, 6, 195, 209, 2, 113, 15, 18, 71, 13, 35, 201, 77, 48, 78, 80, 49, 51, 40, 35, 89, 6, 35, 68, 0, 0,
+			0, 8, 197, 54, 114, 242, 9, 144, 15, 8, 197, 52, 155, 114, 9, 144, 15, 8, 197, 50, 210, 242, 9, 144, 15, 7, 196, 104, 115, 137,
+			40, 15, 0, 7, 196, 104, 217, 210, 104, 15, 8, 197, 104, 210, 76, 13, 160, 15, 8, 197, 52, 150, 132, 73, 160, 15, 6, 195, 47, 37,
+			114, 15, 8, 197, 29, 86, 132, 73, 160, 15, 18, 71, 12, 128, 78, 80, 147, 12, 100, 91, 35, 50, 47, 37, 57, 37, 0, 67, 0, 6,
+			195, 107, 139, 114, 15, 7, 196, 104, 114, 109, 200, 15, 7, 196, 104, 66, 173, 200, 15, 6, 195, 95, 139, 114, 15, 7, 196, 93, 162, 109,
+			200, 15, 7, 196, 92, 114, 109, 200, 15, 7, 196, 92, 50, 109, 200, 15, 7, 196, 208, 210, 65, 200, 15, 7, 196, 48, 115, 173, 200, 15,
+			0, 8, 197, 93, 52, 9, 183, 32, 15, 8, 197, 80, 50, 14, 183, 32, 15, 8, 197, 64, 50, 14, 183, 32, 15, 8, 197, 17, 33, 206,
+			183, 32, 15, 8, 197, 13, 162, 206, 183, 32, 15, 0, 8, 197, 105, 54, 129, 73, 0, 15, 0, 6, 195, 203, 134, 74, 15, 6, 195, 200,
+			17, 55, 15, 7, 196, 51, 67, 137, 40, 15, 6, 195, 44, 192, 80, 15, 0, 9, 198, 93, 54, 131, 104, 84, 0, 15, 10, 199, 11, 17,
+			26, 36, 80, 201, 20, 76, 10, 199, 40, 84, 212, 23, 64, 201, 20, 76, 7, 195, 80, 81, 207, 72, 10, 0, 6, 195, 92, 155, 120, 15,
+			6, 195, 45, 43, 120, 15, 9, 198, 5, 32, 200, 37, 33, 74, 67, 0, 0, 7, 196, 105, 114, 69, 220, 15, 18, 67, 12, 131, 208, 76,
+			111, 48, 89, 40, 37, 0, 81, 115, 117, 101, 121, 32, 6, 195, 40, 84, 212, 76, 0, 7, 196, 93, 38, 133, 64, 15, 8, 197, 76, 50,
+			50, 23, 64, 15, 8, 197, 76, 50, 50, 7, 64, 15, 0, 6, 195, 104, 193, 74, 15, 6, 195, 79, 37, 120, 15, 6, 195, 48, 80, 218,
+			15, 0, 7, 196, 104, 116, 129, 40, 15, 9, 198, 77, 160, 218, 196, 77, 192, 15, 12, 69, 88, 243, 196, 60, 240, 84, 40, 72, 40, 0,
+			0, 9, 198, 76, 50, 12, 39, 67, 89, 15, 8, 197, 104, 210, 69, 73, 160, 15, 0, 6, 18, 66, 107, 97, 99, 104, 0, 107, 196, 153,
+			0, 107, 196, 133, 0, 107, 111, 109, 0, 107, 97, 0, 107, 105, 0, 99, 101, 0, 107, 111, 0, 7, 6, 100, 103, 0, 4, 1, 101, 122,
+			114, 112, 3, 72, 81, 0, 8, 97, 110, 0, 8, 97, 110, 101, 105, 110, 0, 8, 97, 110, 111, 112, 0, 8, 97, 110, 111, 112, 101, 105,
+			110, 0, 8, 111, 0, 8, 111, 101, 105, 110, 0, 8, 111, 111, 112, 0, 8, 111, 111, 112, 101, 105, 110, 0, 8, 111, 112, 0, 8, 111,
+			112, 101, 105, 110, 0, 8, 111, 112, 111, 112, 0, 8, 111, 112, 111, 112, 101, 105, 110, 0, 4, 3, 75, 0, 101, 2, 32, 0, 7, 6,
+			111, 101, 0, 4, 1, 106, 2, 114, 3, 109, 0, 1, 106, 108, 0, 1, 115, 2, 114, 0, 1, 106, 99, 3, 111, 109, 0, 7, 6, 112,
+			104, 0, 3, 83, 0, 7, 6, 115, 104, 0, 4, 8, 105, 102, 2, 97, 114, 109, 111, 110, 3, 89, 101, 0, 8, 107, 101, 0, 8, 121,
+			100, 0, 3, 91, 0, 105, 114, 101, 3, 91, 35, 57, 109, 51, 0, 7, 6, 116, 104, 0, 4, 8, 3, 47, 0, 8, 101, 2, 97, 110,
+			97, 107, 0, 101, 8, 2, 32, 3, 72, 109, 0, 101, 119, 3, 83, 57, 40, 0, 117, 110, 100, 101, 114, 98, 105, 8, 2, 114, 100, 3,
+			83, 109, 50, 72, 109, 51, 71, 109, 0, 97, 110, 107, 8, 3, 83, 109, 68, 49, 0, 3, 89, 0, 2, 105, 101, 32, 3, 95, 0, 7,
+			6, 116, 122, 0, 2, 197, 130, 3, 47, 88, 0, 3, 117, 0, 7, 6, 195, 164, 0, 3, 109, 0, 7, 6, 195, 165, 0, 3, 111, 0,
+			7, 6, 195, 166, 0, 3, 109, 0, 7, 6, 195, 173, 0, 3, 37, 0, 2, 17, 65, 3, 37, 57, 0, 7, 6, 195, 177, 0, 3, 67,
+			0, 2, 17, 65, 3, 67, 38, 0, 7, 6, 195, 179, 0, 4, 1, 21, 2, 17, 67, 197, 130, 98, 121, 32, 3, 8, 40, 0, 1, 21,
+			2, 17, 67, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 197, 155, 32, 0, 3, 40, 0, 7, 6, 195, 182,
+			0, 3, 109, 0, 7, 6, 195, 184, 0, 3, 109, 0, 7, 6, 195, 188, 0, 3, 37, 0, 7, 6, 196, 133, 0, 4, 2, 108, 3, 111,
+			0, 2, 197, 130, 0, 4, 2, 99, 3, 111, 50, 0, 2, 100, 0, 2, 116, 0, 4, 2, 98, 3, 111, 65, 0, 2, 112, 0, 4, 2,
+			99, 105, 3, 111, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197, 186, 0, 2, 196, 135, 0, 4, 2, 103, 3, 111, 68, 0, 2, 107, 0,
+			3, 114, 0, 4, 2, 32, 3, 114, 10, 0, 2, 32, 17, 65, 0, 7, 6, 196, 135, 0, 3, 119, 0, 4, 2, 98, 3, 120, 0, 2,
+			103, 0, 7, 6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 153, 0, 4, 1, 105, 2, 116, 110, 97, 3, 109, 0, 2, 32, 0, 2, 108,
+			0, 2, 197, 130, 0, 2, 32, 17, 65, 3, 109, 10, 0, 4, 2, 99, 3, 109, 50, 0, 2, 100, 0, 2, 116, 0, 4, 2, 98, 3,
+			109, 65, 0, 2, 112, 0, 4, 2, 99, 105, 3, 109, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197, 186, 0, 2, 115, 105, 0, 2, 196,
+			135, 0, 2, 197, 155, 0, 196, 135, 2, 100, 122, 105, 101, 0, 4, 2, 103, 3, 109, 68, 0, 2, 107, 0, 3, 113, 0, 7, 6, 197,
+			130, 0, 2, 32, 3, 0, 3, 58, 0, 4, 1, 17, 65, 2, 32, 3, 58, 10, 0, 1, 115, 121, 109, 2, 32, 0, 98, 121, 109, 1,
+			21, 2, 32, 14, 128, 128, 129, 3, 65, 0, 98, 121, 197, 155, 1, 21, 2, 32, 14, 128, 128, 129, 3, 97, 0, 7, 6, 197, 132, 0,
+			3, 67, 0, 7, 6, 197, 153, 0, 3, 90, 0, 7, 6, 197, 155, 0, 196, 135, 2, 100, 122, 105, 101, 3, 96, 0, 3, 97, 0, 7,
+			6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 186, 0, 3, 96, 0, 2, 32, 3, 97, 0, 7, 6, 197, 188, 0, 3, 90, 0, 2, 32,
+			3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 108, 108, 111, 119, 101, 101, 1, 104, 2, 110, 32, 3, 6, 35, 55,
+			111, 58, 112, 0, 4, 1, 21, 2, 197, 130, 98, 121, 32, 3, 8, 35, 0, 1, 21, 2, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2,
+			197, 130, 98, 121, 197, 155, 32, 0, 1, 130, 197, 21, 2, 98, 121, 32, 0, 1, 130, 197, 21, 2, 98, 121, 109, 32, 0, 1, 130, 197,
+			21, 2, 98, 121, 197, 155, 32, 0, 3, 35, 0, 2, 32, 3, 35, 10, 0, 4, 105, 8, 107, 2, 114, 3, 35, 37, 0, 105, 8, 116,
+			108, 97, 2, 114, 0, 114, 99, 121, 8, 2, 21, 14, 129, 132, 132, 3, 35, 51, 117, 112, 0, 108, 108, 111, 119, 101, 101, 1, 104, 2,
+			110, 3, 35, 55, 111, 58, 112, 0, 101, 8, 2, 114, 17, 65, 3, 35, 109, 0, 4, 101, 2, 32, 3, 109, 0, 101, 8, 0, 105, 1,
+			17, 67, 2, 114, 0, 99, 107, 117, 2, 112, 3, 109, 49, 35, 0, 114, 99, 104, 105, 101, 8, 3, 109, 51, 76, 37, 0, 114, 99, 104,
+			105, 101, 8, 2, 17, 67, 3, 109, 51, 76, 38, 109, 0, 108, 8, 104, 2, 108, 3, 111, 0, 7, 6, 98, 0, 4, 2, 32, 3, 48,
+			0, 197, 130, 1, 97, 106, 2, 107, 17, 65, 0, 3, 71, 0, 2, 105, 3, 71, 38, 0, 105, 2, 17, 65, 3, 71, 38, 57, 0, 4,
+			101, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 3, 71, 109, 34, 81, 0, 195, 182, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128,
+			132, 0, 195, 184, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 0, 111, 114, 103, 1, 21, 21, 2, 32, 14, 129, 128, 132, 3, 71,
+			111, 34, 81, 0, 7, 6, 99, 0, 104, 97, 2, 109, 112, 105, 3, 47, 90, 109, 0, 4, 1, 17, 65, 118, 3, 49, 0, 1, 101, 115,
+			111, 99, 2, 97, 110, 115, 0, 1, 105, 100, 2, 116, 17, 65, 0, 2, 97, 99, 105, 101, 32, 0, 2, 97, 108, 118, 0, 2, 97, 116,
+			32, 0, 2, 97, 116, 97, 32, 0, 2, 97, 116, 97, 109, 105, 32, 0, 2, 97, 116, 101, 109, 32, 0, 2, 97, 116, 111, 32, 0, 2,
+			97, 116, 111, 109, 32, 0, 2, 108, 105, 112, 0, 2, 111, 115, 101, 99, 97, 110, 115, 0, 2, 111, 115, 105, 110, 0, 2, 111, 116, 97,
+			110, 103, 0, 2, 115, 0, 8, 2, 97, 98, 101, 114, 110, 101, 116, 0, 8, 2, 97, 108, 101, 110, 100, 0, 8, 2, 97, 110, 0, 8,
+			2, 97, 112, 112, 0, 8, 2, 97, 112, 115, 32, 0, 8, 2, 97, 112, 115, 108, 111, 0, 8, 2, 97, 114, 97, 118, 0, 8, 2, 97,
+			114, 108, 0, 8, 2, 97, 114, 112, 0, 8, 2, 97, 114, 116, 0, 8, 2, 97, 114, 118, 0, 8, 2, 108, 17, 65, 0, 8, 2, 111,
+			109, 0, 8, 2, 111, 110, 17, 67, 0, 8, 2, 111, 114, 17, 67, 0, 8, 2, 111, 119, 98, 111, 0, 8, 2, 114, 0, 8, 2, 117,
+			109, 117, 108, 0, 8, 101, 100, 2, 111, 114, 0, 8, 110, 105, 108, 2, 111, 108, 110, 0, 8, 114, 97, 2, 97, 100, 105, 97, 32, 0,
+			8, 114, 97, 2, 97, 100, 105, 105, 32, 0, 8, 114, 97, 2, 97, 100, 105, 111, 32, 0, 8, 114, 97, 2, 97, 100, 105, 196, 133, 32,
+			0, 8, 114, 97, 2, 97, 100, 105, 196, 153, 32, 0, 8, 115, 105, 100, 2, 111, 0, 99, 2, 97, 99, 105, 101, 32, 0, 99, 2, 97,
+			116, 17, 65, 0, 99, 2, 97, 116, 32, 0, 99, 2, 97, 116, 97, 32, 0, 99, 2, 97, 116, 97, 109, 105, 32, 0, 99, 2, 97, 116,
+			101, 109, 32, 0, 99, 2, 97, 116, 111, 32, 0, 99, 2, 97, 116, 111, 109, 32, 0, 99, 8, 111, 109, 2, 17, 65, 0, 104, 8, 2,
+			114, 105, 115, 116, 111, 0, 107, 1, 17, 65, 118, 0, 107, 1, 111, 108, 2, 32, 0, 107, 1, 111, 108, 2, 97, 32, 0, 107, 1, 111,
+			108, 2, 105, 101, 109, 32, 0, 107, 1, 111, 108, 2, 117, 32, 0, 107, 8, 101, 100, 0, 107, 8, 111, 114, 2, 17, 65, 0, 4, 8,
+			2, 97, 109, 101, 109, 98, 101, 114, 116, 3, 49, 35, 0, 97, 108, 2, 108, 17, 65, 0, 97, 108, 121, 2, 112, 115, 3, 49, 35, 55,
+			37, 0, 97, 115, 99, 3, 49, 35, 89, 49, 0, 117, 114, 105, 101, 8, 3, 49, 37, 51, 37, 0, 114, 111, 105, 115, 115, 8, 3, 49,
+			51, 34, 40, 35, 89, 0, 114, 97, 99, 107, 3, 49, 51, 35, 49, 0, 114, 101, 101, 110, 114, 101, 97, 8, 115, 2, 100, 3, 49, 51,
+			37, 50, 51, 37, 0, 114, 101, 115, 99, 2, 101, 110, 100, 3, 49, 51, 109, 91, 76, 0, 108, 111, 119, 8, 2, 110, 3, 49, 55, 35,
+			58, 0, 108, 101, 97, 8, 2, 17, 67, 3, 49, 55, 37, 0, 108, 111, 105, 115, 8, 2, 111, 3, 49, 55, 40, 35, 88, 0, 108, 111,
+			99, 104, 8, 2, 97, 114, 100, 3, 49, 55, 111, 91, 0, 4, 97, 8, 2, 109, 3, 49, 109, 0, 117, 8, 2, 114, 108, 105, 0, 97,
+			108, 2, 108, 3, 49, 111, 0, 111, 112, 121, 119, 114, 105, 8, 2, 116, 3, 49, 111, 48, 112, 51, 35, 57, 0, 111, 99, 107, 8, 3,
+			49, 111, 49, 0, 111, 110, 99, 8, 2, 101, 114, 116, 3, 49, 111, 50, 76, 0, 111, 97, 99, 104, 8, 3, 49, 111, 58, 76, 0, 4,
+			99, 2, 105, 32, 3, 76, 0, 99, 2, 105, 97, 32, 0, 99, 2, 105, 99, 104, 32, 0, 99, 2, 105, 101, 103, 111, 32, 0, 99, 2,
+			105, 101, 109, 32, 0, 99, 2, 105, 101, 109, 117, 32, 0, 99, 2, 105, 105, 101, 32, 0, 99, 2, 105, 109, 32, 0, 99, 2, 105, 109,
+			105, 32, 0, 99, 2, 105, 110, 97, 32, 0, 99, 2, 105, 110, 101, 109, 32, 0, 99, 2, 105, 110, 105, 101, 32, 0, 99, 2, 105, 110,
+			111, 32, 0, 99, 2, 105, 111, 32, 0, 104, 1, 17, 65, 118, 0, 104, 8, 2, 105, 112, 0, 122, 0, 104, 97, 110, 2, 110, 101, 108,
+			3, 76, 35, 0, 104, 97, 114, 108, 101, 8, 2, 115, 3, 76, 35, 51, 55, 89, 0, 104, 111, 119, 8, 2, 100, 101, 114, 3, 76, 35,
+			58, 0, 104, 105, 101, 8, 2, 102, 3, 76, 37, 0, 104, 105, 112, 112, 101, 110, 100, 97, 108, 8, 2, 17, 65, 3, 76, 37, 48, 109,
+			50, 72, 109, 57, 55, 0, 105, 99, 8, 2, 101, 114, 111, 110, 3, 76, 37, 76, 0, 104, 97, 108, 108, 101, 110, 103, 8, 2, 101, 114,
+			3, 76, 109, 55, 109, 50, 75, 0, 8, 2, 105, 110, 101, 114, 3, 89, 0, 4, 105, 1, 114, 97, 2, 97, 32, 3, 89, 37, 57, 0,
+			105, 1, 114, 97, 2, 105, 32, 0, 105, 1, 114, 97, 2, 111, 32, 0, 105, 1, 114, 97, 2, 196, 133, 32, 0, 105, 1, 114, 97, 2,
+			196, 153, 32, 0, 4, 105, 1, 17, 65, 2, 97, 110, 97, 32, 3, 89, 57, 0, 105, 1, 17, 65, 2, 97, 110, 101, 109, 32, 0, 105,
+			1, 17, 65, 2, 97, 110, 105, 101, 32, 0, 105, 1, 17, 65, 2, 97, 110, 111, 32, 0, 105, 1, 17, 65, 2, 97, 110, 111, 119, 105,
+			32, 0, 105, 1, 105, 108, 2, 97, 32, 0, 105, 1, 105, 108, 2, 105, 32, 0, 105, 1, 105, 108, 2, 111, 32, 0, 105, 1, 105, 108,
+			2, 196, 133, 32, 0, 105, 1, 105, 108, 2, 196, 153, 32, 0, 4, 104, 2, 101, 114, 114, 3, 91, 0, 104, 2, 101, 118, 0, 104, 105,
+			99, 8, 2, 97, 103, 17, 65, 3, 91, 37, 49, 0, 104, 111, 112, 105, 8, 2, 110, 3, 91, 111, 48, 109, 0, 104, 2, 105, 3, 99,
+			0, 104, 3, 107, 0, 104, 105, 1, 121, 115, 112, 2, 97, 3, 107, 37, 0, 104, 105, 2, 17, 65, 3, 107, 57, 0, 4, 3, 117, 0,
+			1, 105, 118, 2, 101, 0, 8, 2, 105, 114, 0, 8, 2, 111, 109, 98, 101, 114, 0, 8, 2, 111, 109, 98, 114, 17, 65, 0, 8, 2,
+			111, 109, 105, 101, 115, 0, 8, 2, 111, 109, 105, 110, 117, 0, 4, 2, 105, 3, 119, 0, 105, 2, 17, 65, 0, 7, 6, 100, 0, 2,
+			32, 3, 47, 0, 3, 72, 0, 105, 2, 17, 65, 3, 72, 57, 0, 4, 197, 188, 8, 97, 110, 3, 72, 90, 0, 197, 188, 8, 97, 110,
+			111, 112, 0, 197, 188, 8, 111, 0, 197, 188, 8, 111, 112, 0, 4, 122, 105, 8, 97, 110, 2, 101, 109, 3, 72, 96, 0, 122, 105, 8,
+			111, 112, 2, 101, 109, 0, 197, 188, 3, 75, 0, 197, 188, 2, 32, 3, 76, 0, 2, 105, 3, 116, 0, 4, 105, 101, 115, 2, 101, 108,
+			3, 116, 37, 88, 0, 105, 101, 115, 2, 108, 17, 65, 0, 122, 2, 32, 3, 117, 0, 122, 3, 118, 0, 197, 186, 2, 32, 3, 119, 0,
+			4, 122, 2, 105, 3, 120, 0, 122, 105, 2, 17, 65, 0, 197, 186, 0, 7, 6, 101, 0, 4, 1, 21, 2, 17, 67, 197, 130, 98, 121,
+			32, 3, 8, 109, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 17, 67, 197, 130, 98, 121, 197, 155, 32, 0,
+			4, 105, 8, 2, 17, 67, 3, 35, 57, 0, 105, 8, 108, 107, 2, 110, 0, 4, 97, 1, 100, 2, 108, 101, 114, 3, 37, 0, 97, 1,
+			112, 115, 2, 107, 0, 97, 1, 116, 0, 97, 8, 17, 67, 2, 32, 0, 97, 8, 104, 2, 108, 101, 0, 97, 8, 108, 2, 100, 0, 101,
+			2, 110, 0, 101, 8, 17, 67, 2, 32, 0, 97, 108, 105, 116, 121, 1, 114, 2, 32, 3, 37, 6, 109, 55, 37, 47, 112, 0, 109, 97,
+			105, 108, 8, 3, 37, 65, 109, 57, 55, 0, 97, 115, 1, 108, 2, 105, 110, 3, 37, 88, 0, 4, 3, 109, 0, 97, 1, 114, 2, 103,
+			97, 110, 0, 97, 8, 104, 2, 100, 0, 2, 32, 17, 65, 3, 109, 10, 0, 97, 1, 116, 2, 116, 114, 3, 109, 35, 0, 97, 118, 121,
+			1, 104, 2, 25, 3, 109, 84, 37, 0, 1, 105, 2, 32, 3, 110, 0, 117, 2, 116, 115, 99, 104, 3, 111, 57, 0, 7, 6, 102, 0,
+			3, 83, 0, 105, 2, 17, 65, 3, 83, 38, 57, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 101, 110, 116, 108, 101, 109, 97, 110, 8,
+			3, 75, 109, 50, 47, 109, 55, 65, 109, 50, 0, 4, 101, 111, 114, 103, 105, 8, 2, 97, 32, 3, 75, 111, 51, 75, 57, 0, 101, 111,
+			114, 103, 105, 8, 2, 105, 32, 0, 101, 111, 114, 103, 105, 8, 2, 111, 32, 0, 101, 111, 114, 103, 105, 8, 2, 196, 133, 32, 0, 101,
+			111, 114, 103, 105, 8, 2, 196, 153, 32, 0, 4, 3, 81, 0, 104, 0, 2, 105, 3, 81, 38, 0, 105, 1, 105, 104, 2, 101, 3, 81,
+			57, 0, 197, 130, 2, 32, 3, 81, 58, 0, 97, 116, 101, 2, 115, 3, 81, 109, 57, 47, 0, 7, 6, 104, 0, 2, 105, 3, 99, 0,
+			3, 101, 0, 105, 2, 17, 65, 3, 101, 57, 0, 7, 6, 105, 0, 114, 101, 8, 102, 2, 102, 111, 120, 32, 3, 6, 35, 57, 109, 51,
+			0, 4, 1, 21, 2, 98, 121, 197, 155, 99, 105, 101, 32, 3, 8, 37, 0, 1, 21, 2, 98, 121, 197, 155, 109, 121, 32, 0, 1, 97,
+			100, 117, 21, 2, 18, 66, 32, 0, 1, 97, 104, 99, 21, 2, 18, 66, 32, 0, 1, 97, 122, 111, 21, 2, 18, 66, 32, 0, 1, 98,
+			97, 108, 21, 2, 18, 66, 32, 0, 1, 102, 97, 114, 21, 2, 18, 66, 32, 0, 1, 102, 105, 108, 21, 2, 18, 66, 32, 0, 1, 102,
+			111, 114, 21, 2, 18, 66, 32, 0, 1, 102, 121, 99, 21, 2, 18, 66, 32, 0, 1, 103, 97, 114, 21, 2, 18, 66, 32, 0, 1, 103,
+			111, 103, 21, 2, 18, 66, 32, 0, 1, 103, 111, 108, 2, 18, 66, 32, 0, 1, 103, 114, 117, 21, 2, 18, 66, 32, 0, 1, 104, 99,
+			121, 21, 2, 18, 66, 32, 0, 1, 108, 21, 2, 98, 121, 32, 0, 1, 108, 21, 2, 197, 155, 99, 105, 101, 32, 0, 1, 108, 21, 2,
+			197, 155, 109, 121, 32, 0, 1, 108, 97, 116, 21, 2, 18, 66, 32, 0, 1, 108, 98, 117, 21, 2, 18, 66, 32, 0, 1, 108, 107, 121,
+			21, 2, 18, 66, 32, 0, 1, 108, 111, 98, 21, 2, 18, 66, 32, 0, 1, 108, 111, 104, 21, 2, 18, 66, 32, 0, 1, 108, 112, 101,
+			21, 2, 18, 66, 32, 0, 1, 108, 117, 97, 21, 2, 18, 66, 32, 0, 1, 109, 97, 110, 21, 2, 18, 66, 32, 0, 1, 109, 97, 114,
+			21, 2, 18, 66, 32, 0, 1, 109, 101, 108, 21, 2, 18, 66, 32, 0, 1, 109, 101, 110, 21, 2, 18, 66, 32, 0, 1, 109, 101, 115,
+			21, 2, 18, 66, 32, 0, 1, 109, 105, 109, 2, 18, 66, 32, 0, 1, 109, 105, 110, 21, 2, 18, 66, 32, 0, 1, 109, 108, 97, 21,
+			2, 18, 66, 32, 0, 1, 109, 111, 107, 21, 2, 18, 66, 32, 0, 1, 109, 111, 110, 21, 2, 18, 66, 32, 0, 1, 109, 111, 114, 21,
+			2, 18, 66, 32, 0, 1, 109, 114, 101, 21, 2, 18, 66, 32, 0, 1, 109, 114, 111, 21, 2, 18, 66, 32, 0, 1, 109, 115, 106, 21,
+			2, 18, 66, 32, 0, 1, 109, 116, 121, 21, 2, 18, 66, 32, 0, 1, 110, 21, 2, 98, 121, 32, 0, 1, 110, 21, 2, 197, 155, 99,
+			105, 101, 32, 0, 1, 110, 97, 103, 21, 2, 18, 66, 32, 0, 1, 110, 97, 104, 21, 2, 18, 66, 32, 0, 1, 110, 97, 116, 21, 2,
+			18, 66, 32, 0, 1, 110, 97, 117, 21, 2, 18, 66, 32, 0, 1, 110, 101, 103, 21, 2, 18, 66, 32, 0, 1, 110, 104, 99, 21, 2,
+			18, 66, 32, 0, 1, 110, 105, 108, 21, 2, 18, 66, 32, 0, 1, 110, 111, 101, 21, 2, 18, 66, 32, 0, 1, 110, 111, 102, 21, 2,
+			18, 66, 32, 0, 1, 110, 111, 105, 21, 2, 18, 66, 32, 0, 1, 110, 111, 109, 21, 2, 18, 66, 32, 0, 1, 110, 111, 110, 21, 2,
+			18, 66, 32, 0, 1, 110, 111, 112, 21, 2, 18, 66, 32, 0, 1, 110, 111, 114, 21, 2, 18, 66, 32, 0, 1, 110, 111, 116, 2, 99,
+			101, 32, 0, 1, 110, 111, 116, 2, 107, 111, 32, 0, 1, 110, 111, 116, 2, 107, 196, 133, 32, 0, 1, 110, 111, 116, 2, 107, 196, 153,
+			32, 0, 1, 110, 111, 116, 97, 116, 2, 107, 97, 32, 0, 1, 110, 111, 116, 97, 116, 2, 107, 97, 99, 104, 32, 0, 1, 110, 111, 116,
+			97, 116, 2, 107, 105, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 97, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 97, 99,
+			104, 32, 0, 1, 110, 111, 116, 107, 101, 116, 2, 107, 105, 32, 0, 1, 110, 117, 109, 21, 2, 18, 66, 32, 0, 1, 111, 114, 101, 21,
+			2, 18, 66, 32, 0, 1, 112, 111, 114, 21, 2, 18, 66, 32, 0, 1, 112, 112, 105, 21, 2, 18, 66, 32, 0, 1, 119, 97, 108, 21,
+			2, 18, 66, 32, 0, 2, 197, 130, 98, 121, 32, 0, 2, 197, 130, 98, 121, 109, 32, 0, 2, 197, 130, 98, 121, 197, 155, 32, 0, 8,
+			109, 114, 101, 116, 2, 18, 66, 32, 0, 8, 109, 116, 121, 114, 2, 18, 66, 32, 0, 8, 110, 111, 116, 2, 107, 97, 32, 0, 8, 110,
+			111, 116, 2, 107, 97, 99, 104, 32, 0, 8, 110, 111, 116, 2, 107, 105, 32, 0, 8, 112, 101, 2, 18, 66, 0, 4, 97, 1, 17, 67,
+			21, 2, 197, 130, 121, 98, 121, 32, 3, 8, 38, 35, 0, 97, 1, 17, 67, 21, 2, 197, 130, 121, 98, 121, 197, 155, 99, 105, 101, 32,
+			0, 97, 1, 17, 67, 21, 2, 197, 130, 121, 98, 121, 197, 155, 109, 121, 32, 0, 4, 101, 1, 17, 67, 21, 2, 108, 105, 98, 121, 32,
+			3, 8, 38, 109, 0, 101, 1, 17, 67, 21, 2, 108, 105, 98, 121, 197, 155, 99, 105, 101, 32, 0, 101, 1, 17, 67, 21, 2, 108, 105,
+			98, 121, 197, 155, 109, 121, 32, 0, 8, 114, 100, 2, 118, 3, 35, 57, 0, 99, 8, 109, 2, 114, 111, 3, 35, 57, 49, 0, 109, 101,
+			8, 116, 3, 35, 57, 65, 0, 109, 101, 8, 116, 2, 114, 3, 35, 57, 65, 109, 0, 114, 101, 8, 102, 2, 102, 111, 3, 35, 57, 109,
+			51, 0, 4, 3, 37, 0, 8, 110, 105, 109, 111, 100, 2, 99, 101, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 97, 32, 12,
+			12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 97, 99, 104, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 105, 32, 12, 12, 0,
+			8, 110, 105, 109, 111, 100, 2, 107, 111, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 111, 109, 32, 12, 12, 0, 8, 110, 105,
+			109, 111, 100, 2, 107, 196, 133, 32, 12, 12, 0, 8, 110, 105, 109, 111, 100, 2, 107, 196, 153, 32, 12, 12, 0, 8, 110, 111, 114, 101,
+			119, 2, 99, 101, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 97, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 97,
+			99, 104, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 105, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 111, 32, 12,
+			12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 111, 109, 32, 12, 12, 0, 8, 110, 111, 114, 101, 119, 2, 107, 196, 133, 32, 12, 12, 0,
+			8, 110, 111, 114, 101, 119, 2, 107, 196, 153, 32, 12, 12, 0, 4, 105, 1, 107, 97, 114, 2, 32, 3, 37, 57, 37, 0, 105, 1, 109,
+			188, 197, 2, 32, 0, 1, 17, 67, 2, 17, 65, 3, 38, 0, 8, 108, 107, 2, 101, 3, 38, 37, 57, 0, 101, 1, 17, 67, 2, 32,
+			3, 38, 110, 0, 4, 1, 17, 65, 2, 17, 65, 3, 57, 0, 2, 17, 65, 32, 12, 0, 7, 6, 106, 0, 3, 57, 0, 8, 2, 105,
+			109, 3, 75, 0, 101, 97, 2, 110, 115, 3, 75, 37, 0, 4, 97, 99, 107, 8, 2, 32, 3, 75, 109, 49, 0, 97, 99, 107, 8, 2,
+			115, 0, 97, 99, 107, 8, 2, 121, 0, 97, 99, 107, 121, 8, 2, 32, 3, 75, 109, 49, 37, 0, 97, 109, 101, 115, 8, 3, 75, 109,
+			57, 65, 89, 0, 97, 109, 101, 115, 105, 8, 2, 101, 32, 3, 75, 109, 57, 65, 97, 0, 101, 102, 102, 8, 3, 75, 109, 83, 0, 97,
+			122, 122, 3, 75, 109, 88, 0, 97, 122, 122, 2, 32, 3, 75, 109, 89, 0, 111, 104, 110, 8, 3, 75, 111, 50, 0, 111, 110, 97, 116,
+			104, 8, 3, 75, 111, 50, 35, 47, 0, 111, 104, 110, 105, 8, 2, 101, 3, 75, 111, 67, 38, 0, 97, 99, 113, 117, 101, 115, 8, 3,
+			90, 35, 49, 0, 8, 2, 105, 109, 101, 110, 3, 107, 0, 7, 6, 107, 0, 3, 49, 0, 108, 111, 119, 8, 2, 110, 3, 49, 55, 35,
+			58, 0, 197, 130, 2, 32, 3, 49, 58, 0, 7, 6, 108, 0, 3, 55, 0, 2, 32, 3, 55, 10, 0, 105, 8, 111, 112, 2, 17, 65,
+			3, 55, 37, 0, 105, 2, 17, 65, 3, 55, 57, 0, 7, 6, 109, 0, 3, 65, 0, 2, 32, 3, 65, 10, 0, 106, 8, 2, 114, 17,
+			65, 3, 65, 35, 57, 111, 0, 105, 8, 101, 105, 122, 2, 17, 65, 3, 65, 38, 0, 105, 1, 17, 65, 2, 17, 65, 3, 65, 57, 0,
+			99, 8, 2, 14, 129, 132, 130, 3, 65, 109, 49, 0, 7, 6, 110, 0, 3, 50, 0, 2, 32, 3, 50, 10, 0, 116, 111, 110, 1, 17,
+			65, 21, 2, 32, 14, 129, 128, 132, 3, 50, 47, 111, 50, 0, 103, 1, 97, 2, 101, 108, 3, 50, 75, 0, 4, 111, 102, 102, 2, 32,
+			14, 129, 128, 132, 3, 50, 111, 84, 0, 111, 102, 102, 2, 97, 32, 0, 111, 102, 102, 2, 97, 99, 104, 32, 0, 111, 102, 102, 2, 97,
+			109, 105, 32, 0, 111, 102, 102, 2, 101, 109, 32, 0, 111, 102, 102, 2, 105, 101, 32, 0, 111, 102, 102, 2, 111, 109, 32, 0, 111, 102,
+			102, 2, 111, 119, 105, 32, 0, 111, 102, 102, 2, 117, 32, 0, 4, 2, 99, 105, 3, 67, 0, 2, 100, 122, 105, 0, 2, 100, 197, 186,
+			0, 2, 105, 0, 2, 196, 135, 0, 4, 105, 2, 17, 65, 3, 67, 38, 0, 121, 2, 39, 101, 103, 111, 32, 0, 121, 2, 39, 101, 109,
+			117, 32, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 103, 116, 111, 110, 1, 17, 65, 21, 2, 32, 14, 129, 128, 133, 3, 68, 81, 47,
+			111, 50, 0, 7, 6, 111, 0, 117, 116, 8, 103, 97, 114, 2, 32, 3, 6, 40, 0, 119, 8, 100, 2, 110, 3, 35, 58, 0, 117, 116,
+			115, 105, 100, 8, 3, 35, 58, 117, 35, 57, 72, 0, 105, 8, 112, 2, 114, 111, 116, 17, 65, 3, 40, 58, 35, 0, 101, 116, 104, 3,
+			109, 47, 0, 3, 111, 0, 2, 32, 17, 65, 3, 111, 12, 10, 0, 116, 101, 98, 111, 111, 8, 110, 2, 17, 67, 3, 111, 58, 47, 71,
+			40, 0, 7, 6, 112, 0, 3, 48, 0, 4, 197, 130, 8, 2, 99, 3, 48, 40, 58, 49, 111, 84, 50, 37, 0, 197, 130, 8, 2, 107,
+			0, 4, 105, 8, 111, 107, 2, 17, 65, 3, 48, 57, 0, 105, 8, 111, 107, 111, 116, 111, 102, 2, 17, 65, 0, 4, 112, 197, 130, 8,
+			2, 99, 3, 48, 111, 47, 48, 40, 58, 49, 111, 84, 50, 37, 0, 112, 197, 130, 8, 2, 107, 0, 7, 6, 113, 0, 3, 49, 0, 117,
+			2, 17, 65, 3, 49, 84, 0, 7, 6, 114, 0, 4, 3, 51, 0, 1, 17, 65, 2, 122, 197, 130, 0, 1, 25, 2, 17, 65, 0, 1,
+			32, 17, 65, 2, 17, 65, 0, 1, 97, 109, 2, 122, 108, 105, 110, 0, 1, 97, 109, 2, 122, 110, 0, 1, 97, 109, 100, 111, 2, 122,
+			97, 0, 2, 122, 105, 0, 8, 97, 109, 97, 122, 2, 122, 97, 0, 8, 97, 109, 122, 2, 122, 97, 0, 8, 111, 98, 2, 122, 111, 106,
+			0, 114, 1, 17, 65, 2, 17, 65, 0, 121, 39, 2, 101, 0, 105, 2, 17, 65, 3, 51, 57, 0, 4, 122, 8, 105, 109, 2, 97, 32,
+			12, 12, 12, 3, 51, 88, 0, 122, 8, 105, 109, 2, 97, 99, 104, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 97, 109, 105, 32, 12,
+			12, 12, 0, 122, 8, 105, 109, 2, 111, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 111, 119, 105, 101, 32, 12, 12, 12, 0, 122, 8,
+			105, 109, 2, 121, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 195, 179, 119, 32, 12, 12, 12, 0, 122, 8, 105, 109, 2, 196, 133, 32,
+			12, 12, 12, 0, 122, 8, 105, 109, 2, 196, 153, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97, 32, 12, 12, 12, 0, 122, 8, 117,
+			109, 2, 97, 99, 104, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97, 109, 105, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 97, 115,
+			105, 99, 104, 108, 0, 122, 8, 117, 109, 2, 111, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 111, 119, 105, 101, 32, 12, 12, 12, 0,
+			122, 8, 117, 109, 2, 121, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 195, 179, 119, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 196,
+			133, 32, 12, 12, 12, 0, 122, 8, 117, 109, 2, 196, 153, 32, 12, 12, 12, 0, 4, 122, 2, 97, 110, 100, 3, 51, 117, 0, 122, 2,
+			105, 110, 105, 32, 0, 122, 2, 105, 110, 105, 99, 104, 32, 0, 122, 2, 105, 110, 105, 101, 103, 111, 32, 0, 122, 2, 105, 110, 105, 101,
+			109, 117, 32, 0, 122, 2, 105, 110, 105, 109, 32, 0, 122, 2, 105, 110, 105, 109, 105, 32, 0, 122, 2, 111, 110, 105, 32, 0, 122, 2,
+			111, 110, 105, 99, 104, 32, 0, 122, 2, 111, 110, 105, 101, 103, 111, 32, 0, 122, 2, 111, 110, 105, 101, 109, 117, 32, 0, 122, 2, 111,
+			110, 105, 109, 32, 0, 122, 2, 111, 110, 105, 109, 105, 32, 0, 122, 3, 90, 0, 4, 122, 1, 99, 2, 17, 65, 3, 91, 0, 122, 1,
+			102, 2, 17, 65, 0, 122, 1, 104, 0, 122, 1, 107, 0, 122, 1, 112, 0, 122, 1, 115, 2, 17, 65, 0, 122, 1, 116, 0, 122, 1,
+			122, 99, 2, 17, 65, 0, 122, 1, 122, 115, 2, 17, 65, 0, 122, 1, 135, 196, 2, 17, 65, 0, 122, 1, 155, 197, 2, 17, 65, 0,
+			122, 2, 32, 0, 7, 6, 115, 0, 4, 105, 1, 115, 2, 109, 97, 32, 3, 8, 37, 0, 105, 1, 115, 2, 109, 101, 109, 32, 0, 105,
+			1, 115, 2, 109, 105, 101, 32, 0, 105, 1, 115, 2, 109, 111, 32, 0, 4, 111, 110, 8, 101, 99, 108, 97, 115, 2, 32, 12, 12, 3,
+			8, 89, 111, 50, 0, 111, 110, 8, 105, 116, 97, 112, 2, 32, 12, 12, 0, 8, 97, 117, 113, 2, 105, 3, 88, 0, 3, 89, 0, 4,
+			105, 1, 107, 101, 108, 112, 2, 32, 3, 89, 37, 0, 105, 2, 98, 0, 105, 2, 99, 0, 105, 2, 100, 0, 105, 2, 102, 0, 105, 2,
+			103, 0, 105, 2, 104, 0, 105, 2, 108, 105, 107, 111, 0, 105, 2, 108, 108, 0, 105, 2, 108, 111, 115, 0, 105, 2, 108, 118, 0, 105,
+			2, 109, 0, 105, 2, 110, 103, 0, 105, 2, 110, 117, 115, 0, 105, 2, 113, 0, 105, 2, 114, 0, 105, 2, 116, 0, 105, 2, 118, 0,
+			105, 2, 120, 0, 105, 8, 107, 97, 109, 2, 32, 0, 116, 101, 105, 110, 1, 121, 3, 89, 47, 109, 37, 50, 0, 99, 104, 101, 114, 122,
+			3, 89, 49, 109, 51, 117, 0, 4, 105, 8, 97, 116, 115, 97, 110, 97, 2, 97, 32, 3, 89, 57, 0, 105, 8, 97, 116, 115, 97, 110,
+			97, 2, 105, 32, 0, 105, 8, 97, 116, 115, 97, 110, 97, 2, 111, 32, 0, 105, 8, 97, 116, 115, 97, 110, 97, 2, 196, 133, 32, 0,
+			105, 8, 97, 116, 115, 97, 110, 97, 2, 196, 153, 32, 0, 4, 99, 104, 1, 97, 112, 2, 97, 3, 89, 101, 0, 99, 104, 1, 101, 2,
+			97, 116, 111, 0, 99, 104, 2, 97, 98, 17, 65, 32, 0, 99, 104, 2, 97, 98, 32, 0, 99, 104, 2, 97, 98, 97, 109, 105, 32, 0,
+			99, 104, 2, 97, 98, 101, 109, 32, 0, 99, 104, 2, 97, 98, 105, 101, 32, 0, 99, 104, 2, 97, 98, 111, 109, 0, 99, 104, 2, 97,
+			98, 111, 115, 122, 0, 99, 104, 2, 97, 98, 111, 119, 17, 65, 0, 99, 104, 2, 97, 98, 195, 179, 0, 99, 104, 2, 97, 100, 122, 17,
+			65, 0, 99, 104, 2, 97, 100, 122, 107, 0, 99, 104, 2, 97, 109, 32, 0, 99, 104, 2, 97, 109, 105, 0, 99, 104, 2, 97, 109, 105,
+			17, 65, 0, 99, 104, 2, 97, 114, 97, 107, 116, 0, 99, 104, 2, 101, 100, 17, 65, 0, 99, 104, 2, 101, 100, 32, 0, 99, 104, 2,
+			101, 109, 97, 116, 0, 99, 104, 2, 105, 122, 109, 17, 65, 0, 99, 104, 2, 105, 122, 109, 32, 0, 99, 104, 2, 105, 122, 111, 0, 99,
+			104, 2, 108, 97, 108, 105, 0, 99, 104, 2, 108, 97, 110, 17, 65, 0, 99, 104, 2, 108, 97, 196, 135, 0, 99, 104, 2, 108, 97, 197,
+			130, 0, 99, 104, 2, 108, 101, 108, 105, 0, 99, 104, 2, 108, 117, 100, 110, 17, 65, 0, 99, 104, 2, 110, 105, 101, 32, 0, 99, 104,
+			2, 110, 105, 196, 153, 0, 99, 104, 2, 110, 196, 133, 0, 99, 104, 2, 110, 196, 153, 0, 99, 104, 2, 111, 100, 97, 99, 104, 32, 0,
+			99, 104, 2, 111, 100, 97, 109, 105, 32, 0, 99, 104, 2, 111, 100, 101, 107, 32, 0, 99, 104, 2, 111, 100, 107, 97, 0, 99, 104, 2,
+			111, 100, 107, 105, 0, 99, 104, 2, 111, 100, 107, 105, 101, 109, 32, 0, 99, 104, 2, 111, 100, 107, 111, 119, 0, 99, 104, 2, 111, 100,
+			107, 111, 119, 105, 32, 0, 99, 104, 2, 111, 100, 107, 117, 32, 0, 99, 104, 2, 111, 100, 107, 195, 179, 0, 99, 104, 2, 111, 100, 111,
+			119, 0, 99, 104, 2, 111, 100, 121, 32, 0, 99, 104, 2, 111, 100, 122, 105, 0, 99, 104, 2, 111, 100, 122, 196, 133, 0, 99, 104, 2,
+			111, 100, 122, 196, 153, 0, 99, 104, 2, 111, 100, 195, 179, 0, 99, 104, 2, 111, 114, 111, 119, 97, 0, 99, 104, 2, 111, 114, 122, 101,
+			0, 99, 104, 2, 111, 119, 17, 65, 0, 99, 104, 2, 111, 119, 97, 0, 99, 104, 2, 114, 111, 110, 17, 65, 0, 99, 104, 2, 114, 111,
+			110, 32, 0, 99, 104, 2, 114, 117, 112, 32, 0, 99, 104, 2, 114, 117, 112, 97, 108, 105, 0, 99, 104, 2, 114, 117, 112, 97, 110, 17,
+			65, 0, 99, 104, 2, 114, 117, 112, 97, 196, 135, 32, 0, 99, 104, 2, 114, 117, 112, 97, 197, 130, 0, 99, 104, 2, 114, 117, 112, 105,
+			17, 65, 0, 99, 104, 2, 114, 121, 112, 17, 65, 0, 99, 104, 2, 114, 121, 112, 108, 0, 99, 104, 2, 114, 121, 112, 197, 130, 0, 99,
+			104, 2, 114, 122, 17, 65, 0, 99, 104, 2, 117, 100, 110, 0, 99, 104, 2, 119, 121, 99, 105, 0, 99, 104, 2, 119, 121, 116, 17, 65,
+			0, 99, 104, 2, 121, 108, 17, 65, 0, 99, 104, 2, 121, 197, 130, 0, 99, 104, 2, 195, 179, 0, 99, 104, 2, 196, 133, 0, 99, 104,
+			2, 196, 153, 0, 99, 104, 2, 197, 130, 0, 99, 104, 8, 2, 101, 116, 121, 0, 99, 104, 8, 2, 101, 116, 121, 110, 0, 99, 104, 8,
+			2, 108, 101, 98, 32, 0, 99, 104, 8, 2, 108, 101, 98, 105, 0, 99, 104, 8, 2, 121, 108, 32, 0, 99, 104, 8, 119, 2, 111, 100,
+			0, 101, 110, 1, 21, 2, 32, 14, 129, 128, 131, 3, 89, 109, 50, 0, 111, 110, 1, 21, 2, 32, 14, 129, 128, 131, 3, 89, 111, 50,
+			0, 4, 99, 104, 3, 91, 0, 107, 106, 2, 17, 65, 0, 122, 0, 4, 116, 101, 105, 110, 3, 91, 47, 35, 57, 50, 0, 116, 101, 105,
+			110, 2, 32, 14, 129, 128, 133, 0, 99, 104, 119, 97, 114, 122, 3, 91, 84, 35, 51, 117, 0, 99, 104, 111, 101, 3, 91, 109, 0, 4,
+			101, 97, 8, 2, 110, 32, 3, 91, 111, 0, 101, 97, 8, 2, 110, 97, 32, 0, 101, 97, 8, 2, 110, 101, 109, 32, 0, 101, 97, 8,
+			2, 110, 105, 101, 32, 0, 101, 97, 8, 2, 110, 111, 119, 105, 32, 0, 101, 97, 8, 2, 110, 117, 32, 0, 4, 2, 105, 3, 97, 0,
+			105, 2, 17, 65, 0, 4, 105, 1, 117, 100, 2, 103, 114, 3, 97, 37, 0, 105, 2, 98, 114, 122, 0, 105, 2, 99, 17, 65, 0, 105,
+			2, 99, 104, 0, 105, 2, 99, 122, 0, 105, 2, 100, 108, 17, 65, 0, 105, 2, 100, 108, 32, 0, 105, 2, 100, 197, 130, 0, 105, 8,
+			2, 116, 17, 65, 0, 105, 8, 2, 116, 32, 0, 105, 8, 2, 116, 107, 0, 7, 6, 116, 0, 4, 3, 47, 0, 2, 114, 122, 0, 2,
+			115, 0, 111, 119, 110, 2, 32, 14, 129, 128, 132, 3, 47, 35, 58, 50, 0, 105, 2, 17, 65, 3, 47, 57, 0, 116, 104, 101, 119, 3,
+			89, 57, 40, 0, 2, 105, 3, 115, 0, 7, 6, 117, 0, 4, 1, 21, 2, 197, 130, 98, 121, 32, 3, 8, 40, 0, 1, 21, 2, 197,
+			130, 98, 121, 109, 32, 0, 1, 21, 2, 197, 130, 98, 121, 197, 155, 32, 0, 110, 99, 104, 8, 108, 3, 35, 50, 76, 0, 4, 3, 40,
+			0, 1, 97, 110, 2, 99, 122, 0, 1, 97, 110, 2, 107, 0, 1, 97, 114, 97, 112, 0, 1, 97, 116, 101, 109, 0, 1, 101, 17, 67,
+			2, 109, 32, 0, 1, 101, 17, 67, 2, 115, 0, 8, 97, 122, 0, 8, 101, 105, 110, 0, 8, 101, 122, 114, 112, 0, 2, 32, 17, 65,
+			3, 40, 10, 0, 101, 116, 111, 111, 116, 104, 8, 108, 98, 3, 40, 47, 40, 83, 0, 115, 105, 99, 8, 109, 2, 97, 108, 32, 3, 57,
+			6, 40, 88, 37, 49, 0, 115, 105, 99, 8, 109, 2, 97, 108, 3, 57, 40, 88, 37, 49, 0, 4, 1, 97, 3, 58, 0, 1, 101, 0,
+			8, 97, 122, 2, 116, 111, 0, 105, 99, 107, 8, 98, 3, 58, 37, 49, 0, 7, 6, 118, 0, 105, 99, 101, 8, 2, 21, 14, 129, 132,
+			132, 3, 58, 37, 117, 109, 0, 4, 1, 102, 2, 17, 65, 3, 83, 0, 1, 104, 2, 17, 65, 0, 1, 107, 2, 17, 65, 0, 1, 112,
+			2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 1, 116, 2, 17, 65, 0, 2, 111, 108, 107, 115, 0, 3, 84, 0, 105, 108, 108, 101, 2,
+			32, 14, 129, 128, 133, 3, 84, 37, 55, 0, 7, 6, 119, 0, 2, 115, 107, 3, 10, 84, 0, 4, 114, 105, 103, 104, 3, 51, 35, 57,
+			0, 114, 105, 103, 104, 1, 17, 67, 0, 8, 2, 32, 3, 58, 0, 101, 101, 2, 107, 3, 58, 37, 0, 4, 8, 2, 32, 102, 3, 58,
+			109, 0, 8, 2, 32, 109, 110, 0, 97, 115, 104, 105, 8, 3, 58, 111, 91, 37, 0, 105, 110, 100, 111, 119, 8, 3, 58, 112, 50, 72,
+			111, 58, 0, 4, 1, 99, 2, 17, 65, 3, 83, 0, 1, 102, 2, 17, 65, 0, 1, 104, 2, 17, 65, 0, 1, 107, 2, 17, 65, 0,
+			1, 112, 2, 17, 65, 0, 1, 115, 2, 17, 65, 0, 1, 116, 2, 17, 65, 0, 1, 122, 99, 2, 17, 65, 0, 1, 122, 115, 2, 17,
+			65, 0, 1, 135, 196, 2, 17, 65, 0, 1, 155, 197, 2, 17, 65, 0, 2, 32, 0, 8, 2, 32, 99, 0, 8, 2, 32, 104, 0, 8,
+			2, 32, 107, 0, 8, 2, 32, 112, 0, 8, 2, 32, 115, 0, 8, 2, 32, 116, 0, 3, 84, 0, 105, 99, 101, 8, 2, 21, 14, 129,
+			132, 132, 3, 84, 37, 117, 109, 0, 115, 122, 1, 114, 101, 105, 2, 17, 65, 3, 91, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6,
+			121, 0, 4, 39, 1, 114, 2, 101, 103, 111, 32, 3, 0, 39, 1, 114, 2, 101, 109, 117, 32, 3, 0, 4, 1, 21, 2, 197, 130, 98,
+			121, 32, 3, 8, 112, 0, 1, 21, 2, 197, 130, 98, 121, 109, 32, 0, 1, 21, 2, 197, 130, 98, 121, 197, 155, 32, 0, 1, 98, 101,
+			2, 197, 155, 99, 105, 101, 32, 0, 1, 98, 101, 2, 197, 155, 109, 121, 32, 0, 1, 100, 108, 97, 21, 2, 18, 66, 32, 0, 1, 100,
+			111, 108, 21, 2, 18, 66, 32, 0, 1, 100, 111, 116, 21, 2, 18, 66, 32, 0, 1, 100, 114, 111, 21, 2, 18, 66, 32, 0, 1, 114,
+			101, 109, 21, 2, 18, 66, 32, 0, 1, 114, 101, 116, 21, 2, 18, 66, 32, 0, 1, 114, 111, 102, 21, 2, 18, 66, 32, 0, 1, 114,
+			111, 103, 21, 2, 18, 66, 32, 0, 1, 114, 111, 116, 21, 2, 18, 66, 32, 0, 1, 114, 116, 101, 21, 2, 18, 66, 32, 0, 1, 114,
+			116, 107, 21, 2, 18, 66, 32, 0, 1, 114, 116, 112, 21, 2, 18, 66, 32, 0, 1, 115, 97, 108, 21, 2, 18, 66, 32, 0, 1, 115,
+			107, 101, 21, 2, 18, 66, 32, 0, 1, 116, 97, 98, 21, 2, 18, 66, 32, 0, 1, 116, 97, 105, 21, 2, 18, 66, 32, 0, 1, 116,
+			97, 109, 21, 2, 18, 66, 32, 0, 1, 116, 97, 114, 21, 2, 18, 66, 32, 0, 1, 116, 97, 116, 21, 2, 18, 66, 32, 0, 1, 116,
+			101, 97, 21, 2, 18, 66, 32, 0, 1, 116, 101, 99, 21, 2, 18, 66, 32, 0, 1, 116, 101, 100, 21, 2, 18, 66, 32, 0, 1, 116,
+			101, 103, 21, 2, 18, 66, 32, 0, 1, 116, 101, 104, 21, 2, 18, 66, 32, 0, 1, 116, 101, 108, 21, 2, 18, 66, 32, 0, 1, 116,
+			101, 109, 21, 2, 18, 66, 32, 0, 1, 116, 101, 110, 21, 2, 18, 66, 32, 0, 1, 116, 101, 111, 21, 2, 18, 66, 32, 0, 1, 116,
+			101, 114, 21, 2, 18, 66, 32, 0, 1, 116, 101, 116, 21, 2, 18, 66, 32, 0, 1, 116, 105, 108, 21, 2, 18, 66, 32, 0, 1, 116,
+			107, 97, 21, 2, 18, 66, 32, 0, 1, 116, 107, 101, 21, 2, 18, 66, 32, 0, 1, 116, 107, 114, 21, 2, 18, 66, 32, 0, 1, 116,
+			108, 97, 21, 2, 18, 66, 32, 0, 1, 116, 110, 97, 21, 2, 18, 66, 32, 0, 1, 116, 110, 101, 21, 2, 18, 66, 32, 0, 1, 116,
+			111, 98, 21, 2, 18, 66, 32, 0, 1, 116, 111, 105, 21, 2, 18, 66, 32, 0, 1, 116, 111, 110, 21, 2, 18, 66, 32, 0, 1, 116,
+			111, 114, 21, 2, 18, 66, 32, 0, 1, 116, 111, 122, 21, 2, 18, 66, 32, 0, 1, 116, 112, 101, 21, 2, 18, 66, 32, 0, 1, 116,
+			112, 105, 21, 2, 18, 66, 32, 0, 1, 116, 112, 111, 2, 18, 66, 32, 0, 1, 116, 115, 97, 21, 2, 18, 66, 32, 0, 1, 116, 115,
+			101, 21, 2, 18, 66, 32, 0, 1, 116, 115, 105, 21, 2, 18, 66, 32, 0, 1, 116, 115, 111, 21, 2, 18, 66, 32, 0, 1, 116, 115,
+			117, 21, 2, 18, 66, 32, 0, 1, 116, 115, 121, 21, 2, 18, 66, 32, 0, 1, 116, 117, 97, 21, 2, 18, 66, 32, 0, 1, 116, 117,
+			101, 21, 2, 18, 66, 32, 0, 1, 116, 121, 114, 21, 2, 18, 66, 32, 0, 1, 122, 101, 110, 21, 2, 18, 66, 32, 0, 1, 122, 105,
+			102, 2, 18, 66, 32, 0, 1, 130, 197, 21, 2, 98, 121, 32, 0, 1, 130, 197, 21, 2, 98, 121, 197, 155, 99, 105, 101, 32, 0, 1,
+			130, 197, 21, 2, 98, 121, 197, 155, 109, 121, 32, 0, 8, 98, 97, 2, 197, 155, 99, 105, 101, 32, 0, 8, 98, 97, 2, 197, 155, 109,
+			121, 32, 0, 8, 115, 97, 108, 107, 2, 18, 66, 32, 0, 8, 116, 97, 116, 115, 2, 18, 66, 32, 0, 8, 116, 101, 2, 18, 66, 32,
+			0, 8, 116, 107, 97, 114, 112, 2, 18, 66, 32, 0, 8, 116, 115, 105, 109, 2, 18, 66, 0, 8, 116, 121, 114, 107, 2, 18, 66, 32,
+			0, 4, 39, 1, 17, 67, 2, 101, 103, 111, 32, 3, 38, 0, 39, 1, 17, 67, 2, 101, 109, 117, 32, 0, 4, 1, 17, 65, 2, 17,
+			65, 3, 57, 0, 1, 17, 65, 2, 32, 0, 8, 2, 17, 65, 0, 4, 3, 112, 0, 8, 114, 111, 116, 115, 105, 104, 2, 107, 97, 12,
+			12, 0, 8, 114, 111, 116, 115, 105, 104, 2, 107, 111, 109, 12, 12, 0, 8, 114, 116, 101, 116, 2, 107, 97, 12, 12, 0, 8, 114, 116,
+			101, 116, 2, 107, 111, 109, 12, 12, 0, 8, 116, 97, 112, 2, 12, 12, 0, 2, 32, 17, 65, 3, 112, 10, 0, 7, 6, 122, 0, 4,
+			3, 88, 0, 8, 2, 32, 0, 8, 111, 114, 2, 105, 17, 67, 0, 4, 105, 8, 2, 17, 67, 3, 88, 10, 37, 0, 105, 8, 101, 105,
+			110, 2, 17, 67, 0, 122, 8, 2, 97, 32, 3, 88, 10, 88, 0, 4, 105, 1, 111, 109, 2, 108, 108, 3, 88, 37, 0, 105, 2, 17,
+			67, 0, 8, 2, 32, 109, 110, 3, 88, 109, 0, 4, 2, 32, 3, 89, 0, 8, 2, 32, 99, 0, 8, 2, 32, 102, 0, 8, 2, 32,
+			104, 0, 8, 2, 32, 107, 0, 8, 2, 32, 112, 0, 8, 2, 32, 115, 0, 8, 2, 32, 116, 0, 4, 2, 105, 3, 96, 0, 105, 2,
+			17, 65, 0, 4, 105, 2, 109, 12, 3, 96, 37, 0, 105, 8, 2, 112, 0, 4, 2, 105, 110, 105, 32, 3, 117, 0, 2, 105, 110, 105,
+			99, 104, 32, 0, 2, 105, 110, 105, 101, 103, 111, 32, 0, 2, 105, 110, 105, 101, 109, 117, 32, 0, 2, 105, 110, 105, 109, 32, 0, 2,
+			105, 110, 105, 109, 105, 32, 0, 122, 2, 97, 32, 0, 122, 2, 97, 99, 104, 32, 0, 122, 2, 97, 109, 105, 32, 0, 122, 2, 97, 110,
+			105, 32, 0, 122, 2, 97, 110, 105, 99, 104, 32, 0, 122, 2, 97, 110, 105, 101, 103, 111, 32, 0, 122, 2, 97, 110, 105, 101, 109, 117,
+			32, 0, 122, 2, 97, 110, 105, 109, 32, 0, 122, 2, 97, 110, 105, 109, 105, 32, 0, 122, 2, 105, 110, 105, 32, 0, 122, 2, 105, 110,
+			105, 99, 104, 32, 0, 122, 2, 105, 110, 105, 101, 103, 111, 32, 0, 122, 2, 105, 110, 105, 101, 109, 117, 32, 0, 122, 2, 105, 110, 105,
+			109, 32, 0, 122, 2, 105, 110, 105, 109, 105, 32, 0, 122, 2, 111, 32, 0, 122, 2, 111, 110, 105, 32, 0, 122, 2, 111, 110, 105, 99,
+			104, 32, 0, 122, 2, 111, 110, 105, 101, 103, 111, 32, 0, 122, 2, 111, 110, 105, 101, 109, 117, 32, 0, 122, 2, 111, 110, 105, 109, 32,
+			0, 122, 2, 111, 110, 105, 109, 105, 32, 0, 122, 2, 121, 32, 0, 122, 2, 195, 179, 119, 32, 0, 122, 2, 196, 153, 32, 0, 122, 8,
+			17, 65, 109, 2, 17, 65, 0, 122, 8, 105, 112, 0, 117, 114, 105, 8, 2, 99, 104, 3, 117, 40, 51, 112, 0, 7, 6, 126, 0, 3,
+			0, 7, 6, 0, 39, 97, 2, 32, 14, 128, 128, 130, 3, 35, 0, 39, 117, 2, 32, 14, 128, 128, 130, 3, 40, 0, 36, 3, 72, 111,
+			55, 35, 51, 0, 39, 101, 109, 2, 32, 14, 128, 128, 131, 3, 109, 65, 0, 39, 101, 109, 117, 2, 32, 14, 128, 128, 132, 3, 109, 65,
+			40, 0, 39, 101, 103, 111, 2, 32, 14, 128, 128, 132, 3, 109, 81, 111, 0, 39, 111, 119, 105, 2, 32, 14, 128, 128, 132, 3, 111, 84,
+			37, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts53 = FileInMemory_createWithData (34924, reinterpret_cast<const char *> (&espeakdata_dicts53_data), 
+			U"espeak-1.48.04-source/espeak-data/pl_dict", 
+			U"pl");
+		my addItem_move (espeakdata_dicts53.move());
+
+		static unsigned char espeakdata_dicts54_data[24986] = {
+			0, 4, 0, 0, 101, 61, 0, 0, 10, 198, 16, 84, 208, 72, 86, 143, 16, 37, 10, 198, 12, 243, 148, 72, 243, 15, 16, 37, 0, 0,
+			8, 197, 4, 49, 82, 88, 240, 16, 0, 19, 70, 64, 241, 3, 5, 53, 0, 48, 110, 72, 112, 49, 6, 109, 89, 47, 0, 102, 17, 70,
+			64, 241, 3, 5, 53, 0, 48, 110, 72, 49, 109, 89, 47, 0, 101, 0, 0, 17, 70, 76, 240, 201, 21, 70, 64, 89, 39, 89, 6, 117,
+			47, 112, 0, 102, 6, 65, 4, 35, 0, 49, 8, 65, 4, 132, 0, 101, 76, 34, 5, 193, 4, 76, 34, 0, 12, 68, 5, 4, 12, 20,
+			6, 109, 48, 39, 58, 0, 6, 193, 108, 49, 50, 43, 7, 65, 108, 4, 35, 12, 0, 0, 7, 195, 40, 241, 207, 15, 36, 6, 195, 40,
+			241, 207, 16, 8, 197, 12, 243, 15, 72, 80, 15, 19, 67, 48, 241, 207, 55, 6, 110, 81, 40, 49, 135, 0, 102, 81, 113, 117, 101, 32,
+			0, 0, 9, 198, 81, 32, 81, 84, 82, 65, 15, 9, 198, 60, 66, 83, 76, 82, 65, 15, 0, 0, 10, 67, 53, 82, 64, 65, 6, 111,
+			124, 0, 8, 197, 80, 147, 136, 4, 208, 72, 6, 195, 21, 80, 64, 13, 16, 67, 21, 64, 192, 4, 36, 123, 6, 109, 47, 36, 16, 132,
+			0, 102, 16, 67, 21, 64, 192, 4, 36, 123, 6, 109, 47, 12, 16, 132, 0, 101, 0, 0, 9, 197, 64, 20, 15, 12, 240, 16, 37, 8,
+			197, 21, 131, 210, 80, 240, 15, 9, 197, 21, 52, 5, 80, 240, 16, 37, 9, 197, 4, 67, 210, 56, 240, 15, 36, 0, 11, 199, 36, 229,
+			5, 72, 84, 211, 20, 15, 36, 10, 199, 36, 229, 5, 72, 84, 211, 20, 16, 0, 8, 197, 72, 244, 197, 80, 16, 16, 8, 197, 64, 84,
+			197, 80, 16, 16, 8, 197, 8, 240, 197, 80, 16, 16, 6, 195, 69, 81, 64, 72, 0, 0, 8, 197, 12, 243, 79, 16, 240, 16, 9, 197,
+			5, 36, 143, 80, 240, 16, 37, 0, 7, 196, 12, 240, 200, 20, 16, 8, 132, 112, 114, 195, 178, 72, 34, 0, 17, 70, 56, 245, 5, 8,
+			243, 203, 50, 39, 58, 47, 71, 111, 49, 0, 102, 16, 70, 24, 16, 197, 8, 243, 203, 83, 118, 89, 112, 71, 40, 49, 0, 0, 16, 4,
+			95, 100, 112, 116, 10, 84, 6, 37, 34, 81, 40, 55, 132, 0, 0, 6, 65, 20, 109, 0, 49, 7, 65, 20, 37, 0, 102, 72, 7, 65,
+			20, 37, 0, 101, 72, 0, 0, 0, 0, 0, 10, 199, 12, 20, 129, 13, 65, 82, 20, 15, 0, 13, 68, 64, 245, 197, 72, 48, 6, 114,
+			109, 34, 0, 102, 13, 68, 64, 245, 197, 72, 48, 6, 114, 132, 44, 0, 101, 0, 0, 0, 0, 14, 68, 52, 18, 197, 72, 65, 6, 118,
+			49, 132, 44, 0, 101, 8, 197, 64, 21, 5, 80, 16, 15, 0, 11, 68, 48, 245, 73, 76, 21, 102, 114, 0, 47, 8, 196, 12, 84, 131,
+			60, 15, 36, 0, 8, 196, 88, 240, 227, 76, 78, 32, 0, 0, 0, 0, 0, 14, 68, 25, 32, 77, 20, 83, 51, 6, 118, 65, 37, 0,
+			102, 14, 68, 25, 32, 77, 20, 83, 34, 6, 118, 65, 112, 0, 101, 14, 1, 37, 48, 39, 34, 89, 6, 118, 68, 47, 111, 0, 27, 0,
+			8, 1, 38, 10, 6, 36, 10, 0, 0, 17, 70, 64, 241, 5, 72, 82, 64, 48, 2, 39, 72, 36, 16, 118, 0, 76, 0, 0, 24, 72,
+			80, 83, 5, 54, 117, 133, 37, 48, 47, 4, 109, 55, 4, 109, 65, 6, 110, 84, 118, 138, 0, 101, 14, 68, 88, 241, 3, 4, 84, 6,
+			110, 75, 37, 49, 132, 0, 0, 6, 195, 72, 240, 203, 15, 7, 195, 64, 244, 128, 72, 34, 15, 1, 42, 132, 89, 47, 36, 16, 6, 37,
+			89, 49, 111, 0, 27, 0, 10, 199, 21, 53, 15, 12, 243, 13, 60, 15, 9, 198, 80, 149, 133, 72, 19, 64, 72, 9, 198, 80, 149, 133,
+			72, 19, 64, 72, 9, 198, 21, 53, 1, 88, 19, 64, 72, 8, 1, 43, 65, 117, 138, 0, 27, 0, 15, 68, 21, 128, 197, 48, 4, 109,
+			49, 89, 6, 109, 55, 0, 101, 9, 197, 72, 83, 143, 88, 240, 15, 36, 9, 197, 64, 148, 15, 12, 240, 16, 37, 13, 69, 8, 18, 82,
+			72, 240, 71, 6, 117, 101, 111, 0, 8, 197, 69, 80, 78, 16, 240, 102, 0, 7, 196, 64, 243, 3, 4, 15, 10, 198, 21, 53, 15, 72,
+			227, 192, 15, 36, 0, 11, 1, 46, 48, 6, 39, 68, 47, 111, 0, 27, 0, 7, 196, 13, 33, 68, 60, 15, 0, 13, 4, 95, 100, 105,
+			97, 47, 51, 6, 36, 65, 132, 0, 0, 0, 13, 67, 40, 21, 211, 75, 6, 35, 40, 12, 88, 0, 101, 0, 6, 195, 24, 24, 15, 76,
+			0, 0, 18, 70, 4, 225, 5, 73, 51, 206, 6, 132, 50, 72, 36, 34, 89, 39, 68, 0, 0, 21, 71, 44, 193, 86, 21, 36, 207, 56,
+			49, 55, 6, 109, 84, 36, 34, 89, 132, 68, 0, 101, 0, 0, 16, 70, 88, 243, 20, 4, 148, 133, 84, 110, 55, 47, 6, 109, 34, 0,
+			18, 70, 76, 241, 148, 92, 20, 133, 89, 6, 110, 83, 47, 58, 36, 14, 0, 102, 20, 70, 76, 241, 148, 92, 20, 133, 89, 6, 110, 83,
+			47, 4, 58, 6, 109, 44, 0, 101, 18, 70, 32, 20, 132, 92, 20, 133, 107, 6, 35, 34, 72, 58, 36, 14, 0, 102, 19, 70, 32, 20,
+			132, 92, 20, 133, 6, 35, 34, 72, 4, 58, 6, 109, 44, 0, 101, 9, 198, 12, 81, 129, 48, 82, 65, 15, 0, 0, 0, 0, 8, 197,
+			24, 244, 141, 61, 48, 16, 8, 197, 4, 211, 210, 21, 48, 16, 6, 65, 60, 110, 0, 49, 5, 193, 60, 76, 34, 0, 9, 198, 64, 19,
+			8, 62, 0, 64, 15, 14, 1, 61, 10, 10, 37, 81, 58, 6, 132, 55, 10, 0, 27, 0, 0, 0, 9, 198, 81, 35, 205, 8, 85, 1,
+			16, 14, 69, 76, 18, 66, 72, 240, 89, 6, 117, 71, 51, 111, 0, 9, 198, 21, 52, 15, 48, 85, 1, 16, 14, 69, 12, 18, 66, 72,
+			240, 49, 6, 117, 71, 51, 111, 0, 9, 197, 4, 193, 213, 57, 48, 72, 37, 10, 1, 64, 35, 101, 6, 39, 71, 132, 0, 0, 17, 70,
+			4, 229, 15, 56, 147, 192, 129, 68, 47, 6, 39, 50, 124, 111, 0, 0, 0, 0, 9, 198, 48, 83, 66, 72, 85, 5, 16, 9, 198, 12,
+			20, 1, 12, 85, 5, 16, 0, 23, 71, 80, 83, 5, 54, 117, 133, 48, 47, 4, 109, 55, 4, 109, 65, 6, 110, 84, 109, 55, 0, 101,
+			0, 10, 67, 16, 240, 192, 72, 6, 110, 49, 0, 6, 195, 16, 244, 207, 15, 0, 4, 193, 116, 43, 0, 0, 7, 196, 12, 246, 133, 52,
+			15, 0, 21, 71, 12, 193, 86, 21, 36, 207, 56, 49, 55, 6, 109, 84, 36, 34, 89, 39, 68, 0, 102, 21, 71, 12, 193, 86, 21, 36,
+			207, 56, 49, 55, 6, 109, 84, 112, 34, 89, 132, 68, 0, 101, 9, 67, 48, 129, 64, 61, 112, 0, 102, 10, 198, 16, 84, 193, 64, 81,
+			207, 16, 37, 0, 20, 72, 92, 20, 200, 36, 225, 212, 60, 224, 58, 6, 110, 91, 37, 50, 47, 39, 50, 0, 7, 196, 56, 84, 150, 60,
+			16, 9, 198, 65, 81, 5, 72, 19, 64, 76, 13, 4, 95, 100, 111, 116, 48, 6, 39, 68, 47, 111, 0, 0, 0, 13, 68, 77, 0, 67,
+			20, 89, 48, 6, 118, 89, 0, 102, 14, 68, 77, 0, 67, 20, 89, 48, 6, 118, 89, 112, 0, 101, 10, 198, 77, 80, 143, 72, 227, 192,
+			15, 36, 9, 198, 72, 80, 207, 72, 67, 192, 15, 10, 198, 28, 245, 133, 72, 227, 192, 15, 36, 9, 198, 28, 245, 133, 72, 227, 192, 16,
+			9, 198, 12, 243, 148, 84, 67, 192, 102, 0, 12, 67, 88, 240, 227, 84, 39, 89, 36, 0, 78, 32, 0, 7, 196, 52, 147, 204, 60, 16,
+			0, 12, 68, 25, 33, 85, 16, 83, 51, 6, 136, 72, 0, 10, 197, 56, 244, 211, 5, 48, 102, 76, 34, 0, 10, 198, 76, 244, 211, 20,
+			115, 192, 16, 37, 9, 198, 61, 85, 15, 72, 115, 192, 15, 10, 198, 20, 212, 18, 20, 115, 192, 16, 37, 9, 198, 20, 212, 18, 20, 115,
+			192, 16, 10, 198, 12, 128, 77, 20, 115, 192, 16, 36, 0, 9, 67, 8, 17, 0, 71, 109, 72, 0, 0, 0, 0, 8, 66, 85, 0, 132,
+			48, 0, 101, 18, 7, 112, 111, 100, 101, 195, 163, 111, 48, 2, 39, 72, 36, 16, 130, 0, 76, 0, 7, 195, 76, 240, 207, 15, 36, 6,
+			195, 76, 240, 207, 16, 0, 12, 201, 60, 227, 205, 5, 67, 208, 20, 144, 64, 15, 23, 67, 33, 69, 16, 35, 81, 4, 35, 47, 36, 47,
+			36, 6, 48, 36, 10, 0, 81, 58, 47, 47, 32, 0, 6, 65, 88, 84, 36, 0, 0, 12, 201, 16, 244, 141, 36, 226, 15, 12, 244, 192,
+			15, 8, 66, 137, 48, 109, 89, 0, 72, 6, 194, 5, 48, 76, 34, 0, 0, 17, 4, 95, 49, 77, 52, 6, 128, 50, 47, 34, 37, 55,
+			57, 6, 130, 0, 0, 16, 69, 4, 48, 197, 77, 48, 6, 35, 49, 89, 4, 109, 89, 0, 101, 0, 12, 68, 24, 244, 129, 52, 83, 39,
+			16, 130, 0, 73, 0, 0, 14, 67, 84, 226, 88, 57, 6, 40, 50, 37, 49, 89, 0, 102, 15, 67, 84, 226, 88, 4, 40, 12, 50, 6,
+			37, 49, 89, 0, 101, 8, 196, 9, 35, 212, 60, 16, 37, 7, 196, 8, 244, 132, 60, 15, 0, 12, 4, 95, 49, 77, 49, 65, 6, 116,
+			10, 0, 102, 13, 4, 95, 49, 77, 49, 65, 6, 37, 55, 10, 0, 101, 7, 65, 96, 91, 37, 138, 0, 0, 15, 70, 76, 128, 77, 64,
+			243, 192, 91, 132, 65, 48, 40, 0, 102, 15, 4, 95, 49, 77, 50, 6, 128, 65, 37, 55, 57, 6, 130, 0, 0, 16, 4, 95, 49, 77,
+			51, 6, 128, 65, 71, 37, 55, 57, 6, 130, 0, 0, 0, 14, 68, 8, 194, 78, 16, 71, 55, 6, 35, 37, 50, 72, 0, 0, 12, 68,
+			64, 17, 88, 4, 48, 35, 36, 91, 35, 0, 0, 11, 67, 100, 84, 192, 57, 6, 109, 89, 0, 101, 9, 198, 82, 83, 136, 20, 148, 192,
+			72, 7, 195, 16, 244, 192, 72, 34, 6, 195, 48, 244, 192, 72, 0, 9, 198, 88, 19, 133, 77, 48, 64, 16, 0, 9, 198, 9, 35, 205,
+			20, 194, 1, 15, 0, 0, 11, 200, 32, 83, 79, 73, 35, 201, 16, 16, 15, 0, 9, 198, 65, 35, 214, 21, 64, 64, 16, 9, 198, 64,
+			84, 142, 21, 64, 64, 16, 9, 198, 52, 20, 137, 21, 64, 64, 16, 0, 6, 195, 64, 80, 129, 15, 0, 0, 13, 68, 8, 16, 207, 56,
+			71, 6, 118, 49, 39, 68, 0, 0, 0, 22, 69, 16, 84, 15, 37, 48, 72, 36, 48, 6, 120, 89, 49, 135, 0, 102, 81, 113, 117, 101,
+			32, 0, 13, 69, 28, 82, 83, 20, 192, 81, 6, 117, 88, 137, 0, 5, 194, 4, 80, 13, 0, 0, 15, 70, 33, 84, 211, 21, 35, 0,
+			101, 6, 40, 89, 109, 55, 0, 9, 198, 82, 83, 136, 4, 211, 211, 72, 9, 198, 76, 84, 165, 4, 211, 211, 72, 0, 0, 0, 15, 69,
+			84, 37, 78, 81, 80, 40, 71, 6, 40, 50, 47, 40, 0, 7, 195, 76, 83, 15, 15, 36, 6, 195, 76, 83, 15, 16, 6, 195, 24, 241,
+			15, 16, 16, 4, 95, 48, 67, 111, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 8, 197, 12, 244, 150, 61, 48, 15, 0, 0,
+			0, 0, 8, 197, 80, 244, 146, 21, 48, 16, 0, 0, 16, 4, 95, 51, 88, 111, 47, 51, 37, 90, 6, 109, 88, 37, 65, 0, 0, 11,
+			4, 95, 116, 108, 100, 47, 37, 55, 0, 101, 10, 4, 95, 116, 108, 100, 76, 6, 116, 0, 0, 0, 0, 9, 198, 16, 84, 195, 61, 35,
+			143, 15, 0, 0, 9, 198, 21, 53, 9, 48, 85, 5, 16, 7, 196, 137, 33, 73, 76, 72, 0, 7, 196, 52, 244, 132, 4, 16, 7, 196,
+			28, 244, 132, 4, 16, 7, 196, 76, 240, 146, 20, 16, 8, 196, 52, 147, 136, 4, 76, 34, 0, 6, 195, 64, 83, 15, 16, 7, 195, 64,
+			83, 15, 72, 34, 7, 195, 77, 32, 64, 102, 24, 18, 67, 77, 32, 64, 4, 109, 95, 6, 109, 34, 34, 57, 6, 35, 0, 101, 24, 0,
+			12, 68, 37, 48, 65, 12, 37, 88, 6, 132, 49, 0, 0, 7, 196, 24, 244, 160, 60, 15, 0, 22, 73, 76, 50, 18, 160, 66, 78, 28,
+			84, 128, 91, 34, 6, 36, 72, 37, 50, 81, 36, 34, 0, 7, 196, 8, 84, 212, 4, 16, 7, 196, 80, 147, 136, 4, 72, 7, 196, 20,
+			229, 18, 20, 102, 7, 196, 16, 84, 212, 4, 34, 0, 10, 198, 81, 35, 208, 22, 3, 192, 16, 37, 10, 198, 72, 81, 143, 74, 3, 192,
+			15, 36, 10, 198, 21, 49, 143, 74, 3, 192, 15, 36, 0, 19, 70, 72, 146, 142, 16, 17, 76, 101, 6, 35, 37, 50, 38, 72, 6, 35,
+			55, 0, 9, 198, 64, 19, 148, 21, 32, 64, 15, 9, 198, 64, 19, 8, 21, 64, 64, 16, 9, 198, 48, 17, 207, 77, 64, 64, 16, 9,
+			198, 28, 83, 133, 9, 32, 64, 15, 9, 198, 12, 133, 80, 21, 64, 64, 16, 9, 198, 12, 18, 88, 21, 64, 64, 16, 0, 0, 0, 0,
+			19, 70, 16, 245, 206, 48, 240, 68, 72, 35, 128, 68, 55, 6, 39, 58, 72, 0, 103, 18, 70, 16, 245, 206, 48, 240, 68, 72, 114, 68,
+			55, 6, 39, 58, 72, 0, 102, 21, 70, 16, 245, 206, 48, 240, 68, 72, 6, 35, 4, 58, 50, 55, 6, 39, 40, 72, 0, 101, 11, 4,
+			95, 49, 67, 48, 89, 6, 118, 68, 0, 0, 9, 198, 21, 34, 84, 72, 82, 65, 15, 0, 6, 194, 16, 16, 72, 34, 5, 194, 12, 48,
+			13, 0, 0, 0, 0, 0, 9, 198, 12, 16, 146, 21, 53, 15, 16, 0, 8, 196, 57, 83, 65, 76, 72, 34, 0, 15, 70, 61, 85, 4,
+			60, 244, 128, 114, 47, 72, 6, 110, 34, 0, 0, 17, 70, 8, 16, 203, 85, 4, 192, 71, 109, 49, 6, 132, 48, 89, 0, 102, 0, 7,
+			196, 64, 241, 5, 72, 76, 0, 0, 0, 19, 70, 21, 132, 18, 21, 52, 192, 4, 109, 49, 89, 48, 34, 6, 109, 89, 0, 101, 0, 0,
+			15, 69, 16, 84, 201, 28, 224, 72, 36, 88, 6, 117, 50, 0, 102, 17, 69, 16, 84, 201, 28, 224, 72, 4, 37, 88, 6, 35, 37, 50,
+			0, 101, 7, 196, 29, 35, 211, 60, 15, 0, 0, 16, 69, 76, 52, 143, 48, 192, 89, 49, 12, 34, 6, 39, 55, 0, 101, 5, 194, 12,
+			64, 13, 0, 20, 71, 52, 84, 211, 20, 225, 197, 72, 65, 6, 109, 89, 132, 50, 75, 132, 44, 0, 101, 0, 16, 69, 4, 194, 83, 60,
+			224, 132, 55, 6, 37, 89, 132, 68, 0, 101, 10, 199, 16, 84, 193, 52, 244, 133, 76, 16, 8, 196, 12, 131, 195, 60, 16, 37, 0, 7,
+			196, 80, 84, 156, 76, 72, 4, 193, 128, 43, 0, 0, 21, 71, 65, 80, 140, 37, 50, 5, 72, 48, 6, 132, 71, 55, 4, 37, 91, 132,
+			44, 0, 101, 0, 9, 198, 88, 84, 130, 21, 65, 64, 16, 9, 198, 40, 241, 213, 21, 65, 64, 16, 9, 198, 21, 132, 12, 61, 33, 64,
+			15, 0, 23, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 49, 51, 39, 58, 89, 6, 110, 83, 47, 0, 102, 24, 71, 52, 144, 210,
+			61, 51, 198, 80, 65, 4, 37, 49, 12, 34, 6, 39, 89, 4, 110, 83, 47, 0, 101, 0, 7, 196, 5, 65, 73, 4, 15, 12, 66, 17,
+			32, 72, 39, 58, 47, 39, 34, 0, 24, 0, 0, 0, 6, 195, 72, 81, 5, 16, 6, 195, 64, 241, 5, 76, 0, 0, 7, 195, 65, 35,
+			211, 72, 34, 0, 0, 7, 195, 60, 225, 5, 102, 72, 0, 14, 69, 16, 145, 83, 20, 192, 75, 6, 37, 88, 137, 0, 102, 0, 0, 8,
+			4, 95, 111, 114, 100, 39, 0, 0, 0, 14, 4, 95, 109, 99, 110, 65, 35, 49, 51, 6, 39, 68, 0, 0, 9, 198, 69, 80, 82, 80,
+			85, 15, 16, 10, 198, 12, 243, 131, 21, 37, 15, 16, 37, 16, 4, 95, 49, 67, 111, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0,
+			0, 16, 70, 81, 114, 84, 80, 84, 128, 47, 58, 6, 37, 47, 36, 34, 0, 14, 68, 77, 64, 82, 80, 89, 47, 6, 35, 34, 47, 0,
+			101, 13, 68, 64, 242, 78, 80, 48, 6, 39, 37, 50, 47, 0, 17, 70, 76, 48, 78, 56, 84, 128, 89, 49, 6, 109, 50, 132, 34, 0,
+			101, 12, 200, 81, 32, 78, 77, 67, 210, 56, 240, 15, 36, 12, 200, 16, 84, 205, 4, 229, 5, 48, 240, 16, 37, 0, 18, 70, 48, 20,
+			20, 61, 4, 192, 55, 109, 48, 47, 6, 110, 48, 89, 0, 102, 0, 0, 0, 0, 0, 13, 67, 53, 1, 71, 4, 109, 65, 48, 6, 109,
+			81, 0, 0, 8, 197, 72, 240, 147, 60, 224, 15, 0, 0, 6, 195, 80, 84, 156, 72, 12, 67, 76, 84, 156, 89, 36, 16, 35, 0, 102,
+			74, 0, 9, 198, 69, 82, 78, 80, 85, 15, 16, 0, 10, 199, 25, 33, 83, 12, 244, 133, 76, 16, 10, 199, 5, 36, 133, 16, 244, 133,
+			76, 15, 0, 0, 7, 196, 36, 65, 73, 4, 15, 7, 196, 16, 241, 205, 4, 15, 0, 14, 69, 112, 192, 207, 60, 192, 6, 114, 49, 39,
+			58, 0, 102, 0, 10, 199, 77, 81, 15, 72, 84, 197, 76, 15, 10, 199, 52, 18, 79, 56, 84, 197, 76, 15, 9, 198, 12, 20, 197, 9,
+			33, 64, 15, 9, 198, 8, 147, 8, 21, 65, 64, 16, 9, 198, 17, 84, 129, 57, 65, 64, 102, 0, 0, 13, 68, 52, 245, 83, 20, 65,
+			6, 114, 88, 37, 0, 102, 10, 67, 77, 83, 210, 89, 40, 110, 34, 0, 0, 0, 9, 197, 109, 21, 69, 48, 80, 16, 34, 0, 9, 67,
+			5, 136, 128, 35, 91, 109, 0, 7, 195, 5, 72, 128, 102, 72, 0, 10, 199, 69, 82, 84, 36, 225, 84, 20, 15, 0, 6, 195, 80, 83,
+			147, 72, 0, 0, 6, 195, 32, 242, 133, 16, 7, 195, 24, 241, 1, 16, 36, 6, 195, 8, 241, 133, 15, 0, 6, 194, 16, 80, 72, 34,
+			0, 9, 198, 16, 84, 208, 61, 37, 15, 16, 9, 198, 20, 228, 85, 4, 229, 15, 102, 0, 19, 71, 56, 245, 5, 8, 243, 203, 76, 50,
+			39, 58, 47, 71, 111, 49, 89, 0, 102, 0, 10, 67, 21, 32, 77, 109, 16, 130, 0, 73, 0, 0, 9, 198, 12, 20, 143, 128, 244, 192,
+			15, 0, 11, 68, 28, 21, 83, 76, 81, 6, 114, 89, 0, 17, 70, 32, 245, 13, 4, 147, 0, 107, 39, 47, 65, 6, 118, 55, 0, 102,
+			18, 70, 32, 245, 13, 4, 147, 0, 107, 6, 110, 47, 65, 6, 118, 55, 0, 101, 22, 71, 64, 241, 5, 72, 83, 79, 76, 48, 2, 39,
+			72, 36, 16, 6, 36, 65, 111, 89, 0, 76, 0, 0, 0, 0, 0, 0, 0, 15, 67, 41, 1, 71, 90, 4, 110, 47, 132, 48, 6, 109,
+			81, 0, 0, 0, 0, 0, 0, 7, 196, 17, 81, 84, 60, 16, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 0, 17, 70, 88, 243, 11,
+			52, 19, 142, 83, 6, 110, 55, 49, 65, 35, 50, 0, 7, 196, 28, 243, 16, 20, 15, 6, 195, 20, 68, 0, 13, 0, 15, 69, 12, 132,
+			143, 52, 80, 49, 51, 6, 39, 58, 65, 37, 0, 11, 67, 4, 197, 0, 6, 35, 55, 47, 0, 101, 8, 197, 64, 84, 133, 8, 16, 15,
+			8, 197, 53, 83, 5, 80, 16, 16, 8, 197, 52, 243, 133, 72, 16, 15, 8, 197, 40, 84, 133, 8, 16, 15, 8, 197, 24, 20, 143, 24,
+			16, 15, 8, 197, 21, 53, 9, 88, 80, 72, 8, 197, 20, 208, 143, 72, 16, 102, 7, 195, 84, 228, 192, 72, 34, 0, 9, 133, 112, 114,
+			195, 178, 115, 72, 34, 0, 0, 13, 68, 76, 182, 80, 20, 89, 49, 6, 117, 48, 0, 102, 14, 68, 76, 182, 80, 20, 89, 49, 6, 35,
+			37, 48, 0, 101, 0, 8, 197, 64, 84, 143, 8, 16, 15, 8, 197, 64, 20, 133, 16, 80, 16, 11, 200, 20, 224, 193, 77, 21, 69, 80,
+			16, 15, 0, 0, 0, 10, 199, 24, 19, 1, 56, 113, 84, 4, 16, 10, 199, 8, 20, 212, 60, 225, 84, 20, 16, 10, 199, 4, 229, 15,
+			56, 145, 84, 4, 16, 0, 6, 193, 136, 49, 50, 43, 6, 65, 136, 109, 0, 72, 0, 0, 12, 67, 16, 242, 1, 72, 6, 39, 101, 132,
+			0, 102, 0, 0, 10, 67, 76, 182, 64, 89, 49, 6, 117, 0, 9, 198, 64, 84, 193, 16, 83, 15, 16, 11, 136, 102, 195, 180, 109, 97,
+			109, 111, 115, 72, 0, 0, 15, 68, 76, 85, 21, 64, 89, 6, 109, 47, 6, 132, 48, 0, 101, 9, 197, 72, 83, 5, 88, 240, 15, 36,
+			8, 197, 72, 83, 5, 88, 240, 16, 8, 197, 8, 243, 5, 72, 240, 15, 9, 197, 5, 1, 82, 80, 240, 16, 37, 0, 17, 70, 4, 225,
+			18, 60, 145, 0, 132, 68, 72, 51, 6, 110, 37, 72, 0, 9, 198, 16, 80, 129, 37, 131, 192, 102, 0, 18, 4, 95, 50, 67, 111, 72,
+			40, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 7, 196, 56, 83, 1, 76, 76, 0, 0, 6, 194, 21, 80, 76, 32, 0, 14, 68,
+			20, 229, 5, 72, 6, 36, 68, 47, 36, 34, 0, 102, 0, 0, 0, 0, 0, 0, 15, 69, 21, 52, 5, 4, 176, 37, 89, 48, 6, 37,
+			12, 49, 0, 0, 0, 0, 8, 196, 80, 244, 142, 60, 15, 36, 7, 196, 64, 244, 211, 60, 76, 0, 14, 70, 72, 245, 83, 76, 80, 85,
+			101, 40, 89, 6, 39, 0, 0, 7, 195, 104, 83, 15, 16, 37, 8, 197, 72, 20, 15, 76, 16, 16, 8, 197, 80, 149, 133, 72, 16, 72,
+			16, 69, 21, 53, 5, 88, 80, 36, 89, 47, 36, 84, 112, 0, 102, 74, 0, 0, 11, 67, 80, 16, 128, 47, 6, 35, 71, 112, 0, 6,
+			195, 5, 96, 192, 13, 0, 7, 196, 104, 244, 146, 4, 16, 8, 196, 8, 244, 146, 4, 16, 37, 0, 14, 69, 8, 80, 84, 48, 80, 71,
+			6, 37, 47, 39, 58, 0, 9, 197, 5, 21, 69, 48, 80, 16, 34, 0, 0, 15, 69, 81, 84, 137, 56, 112, 47, 6, 40, 16, 37, 68,
+			81, 0, 9, 67, 61, 33, 192, 110, 34, 81, 0, 0, 10, 199, 8, 19, 1, 56, 49, 84, 20, 16, 0, 0, 7, 196, 65, 35, 211, 60,
+			15, 0, 0, 4, 193, 140, 43, 0, 17, 70, 48, 82, 66, 56, 150, 128, 55, 6, 117, 71, 50, 37, 12, 123, 0, 8, 197, 64, 241, 9,
+			4, 208, 76, 0, 6, 194, 4, 240, 72, 34, 0, 6, 195, 25, 82, 64, 72, 6, 195, 61, 50, 64, 13, 0, 6, 195, 80, 84, 212, 15,
+			0, 7, 195, 72, 243, 15, 16, 37, 7, 195, 28, 83, 15, 15, 36, 6, 195, 28, 83, 15, 16, 7, 195, 8, 243, 15, 15, 36, 6, 195,
+			8, 243, 15, 16, 0, 7, 196, 60, 194, 15, 76, 15, 0, 0, 18, 71, 76, 192, 67, 45, 112, 82, 20, 89, 55, 6, 35, 49, 58, 36,
+			14, 0, 0, 11, 68, 72, 145, 200, 80, 34, 6, 117, 47, 0, 0, 11, 199, 72, 81, 77, 8, 243, 19, 60, 15, 36, 10, 199, 72, 81,
+			77, 8, 243, 19, 60, 16, 0, 7, 195, 57, 83, 64, 72, 34, 0, 0, 0, 0, 21, 72, 32, 82, 83, 20, 224, 133, 72, 112, 107, 6,
+			117, 88, 109, 50, 71, 36, 34, 81, 0, 8, 197, 29, 35, 211, 76, 240, 16, 9, 197, 16, 80, 207, 72, 240, 16, 37, 9, 197, 4, 193,
+			71, 72, 240, 16, 37, 0, 0, 0, 13, 66, 16, 160, 72, 4, 37, 12, 75, 6, 118, 0, 101, 0, 8, 197, 21, 48, 207, 88, 240, 15,
+			9, 197, 4, 51, 210, 16, 240, 15, 36, 0, 0, 0, 9, 197, 109, 21, 69, 48, 16, 76, 34, 0, 11, 67, 48, 17, 25, 55, 6, 118,
+			72, 112, 0, 6, 195, 52, 244, 128, 15, 0, 0, 6, 195, 56, 242, 143, 16, 25, 3, 226, 132, 162, 65, 6, 35, 16, 14, 49, 132, 101,
+			36, 90, 37, 89, 47, 51, 6, 35, 72, 132, 0, 102, 24, 3, 226, 132, 162, 65, 6, 35, 16, 14, 49, 132, 101, 36, 90, 37, 91, 47,
+			6, 35, 72, 132, 0, 101, 0, 8, 66, 21, 128, 36, 89, 0, 102, 0, 7, 195, 57, 83, 65, 72, 34, 11, 67, 16, 83, 5, 72, 36,
+			55, 112, 0, 77, 0, 7, 196, 64, 241, 5, 52, 76, 0, 14, 68, 88, 241, 197, 48, 83, 6, 39, 12, 81, 13, 55, 0, 10, 67, 21,
+			145, 83, 6, 117, 89, 0, 102, 11, 67, 21, 145, 83, 6, 35, 37, 88, 0, 101, 0, 8, 196, 5, 161, 68, 60, 15, 36, 0, 7, 195,
+			72, 243, 1, 16, 37, 6, 195, 64, 83, 1, 16, 19, 70, 16, 148, 208, 56, 82, 65, 75, 124, 89, 48, 112, 50, 6, 119, 132, 0, 102,
+			19, 70, 16, 148, 208, 56, 82, 65, 72, 124, 91, 48, 112, 50, 6, 119, 132, 0, 101, 9, 198, 16, 144, 82, 72, 82, 65, 15, 9, 198,
+			4, 192, 193, 80, 82, 65, 15, 8, 195, 64, 83, 1, 102, 72, 34, 6, 195, 56, 83, 1, 76, 6, 195, 32, 149, 128, 13, 0, 10, 198,
+			16, 84, 208, 60, 163, 192, 16, 37, 0, 0, 7, 196, 81, 33, 86, 60, 16, 0, 0, 9, 198, 12, 19, 136, 61, 67, 192, 16, 0, 9,
+			67, 28, 85, 0, 81, 109, 47, 0, 9, 198, 16, 148, 195, 61, 33, 15, 15, 9, 198, 16, 84, 195, 61, 33, 15, 15, 7, 132, 115, 195,
+			163, 111, 72, 19, 4, 95, 51, 67, 111, 47, 51, 37, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 10, 199, 80, 149, 162, 72,
+			19, 79, 76, 72, 0, 10, 199, 65, 34, 77, 5, 97, 82, 4, 15, 0, 7, 195, 60, 194, 15, 16, 37, 0, 7, 196, 76, 80, 193, 76,
+			16, 0, 8, 197, 80, 84, 133, 37, 48, 72, 8, 197, 76, 84, 133, 37, 48, 72, 0, 7, 196, 5, 52, 201, 52, 102, 0, 0, 0, 0,
+			10, 135, 102, 195, 180, 114, 101, 105, 115, 72, 0, 0, 7, 196, 25, 33, 86, 60, 16, 0, 9, 198, 52, 20, 137, 64, 244, 193, 16, 0,
+			17, 70, 61, 85, 12, 60, 242, 192, 4, 114, 47, 55, 6, 40, 49, 0, 102, 18, 70, 61, 85, 12, 60, 242, 192, 6, 35, 40, 47, 55,
+			6, 40, 49, 0, 101, 10, 198, 72, 85, 15, 72, 227, 192, 15, 36, 0, 6, 195, 80, 244, 207, 15, 0, 0, 9, 198, 20, 229, 133, 48,
+			244, 5, 15, 0, 0, 4, 193, 148, 43, 0, 0, 7, 195, 17, 83, 65, 72, 34, 11, 67, 56, 83, 5, 50, 36, 55, 112, 0, 77, 10,
+			3, 226, 130, 172, 6, 115, 16, 111, 0, 0, 0, 0, 0, 12, 67, 48, 147, 133, 55, 6, 35, 37, 50, 0, 101, 6, 195, 16, 83, 1,
+			76, 0, 9, 198, 72, 83, 79, 73, 51, 192, 15, 9, 198, 20, 229, 18, 61, 51, 192, 15, 0, 0, 11, 67, 41, 80, 78, 101, 40, 129,
+			68, 0, 102, 0, 11, 67, 8, 16, 153, 71, 6, 118, 71, 112, 0, 0, 10, 198, 21, 128, 71, 21, 35, 192, 15, 36, 19, 6, 112, 114,
+			111, 102, 194, 186, 48, 51, 4, 39, 83, 36, 89, 6, 39, 34, 0, 0, 14, 68, 76, 51, 213, 80, 89, 49, 6, 35, 40, 47, 0, 101,
+			14, 4, 95, 111, 103, 111, 39, 81, 39, 50, 6, 36, 49, 0, 0, 10, 199, 21, 53, 9, 88, 83, 79, 76, 72, 0, 7, 196, 4, 32,
+			68, 88, 13, 0, 6, 195, 48, 81, 148, 15, 9, 198, 52, 19, 137, 128, 240, 129, 15, 6, 194, 109, 48, 72, 34, 0, 0, 12, 68, 52,
+			18, 76, 76, 65, 6, 118, 55, 89, 0, 12, 67, 65, 35, 198, 48, 51, 6, 110, 83, 0, 24, 0, 8, 197, 21, 53, 1, 37, 48, 72,
+			0, 0, 6, 195, 17, 3, 195, 13, 0, 0, 0, 9, 198, 20, 228, 207, 77, 51, 192, 16, 0, 0, 0, 7, 195, 4, 244, 192, 72, 34,
+			0, 9, 198, 32, 145, 18, 21, 67, 192, 16, 9, 198, 20, 229, 15, 73, 67, 192, 15, 10, 198, 20, 224, 207, 77, 67, 192, 15, 36, 9,
+			198, 12, 195, 210, 21, 67, 192, 16, 20, 6, 112, 114, 111, 102, 194, 170, 48, 51, 4, 39, 83, 36, 89, 6, 39, 16, 132, 0, 0, 18,
+			70, 20, 209, 82, 76, 243, 128, 6, 36, 65, 109, 16, 14, 89, 39, 68, 0, 17, 70, 77, 65, 80, 32, 83, 128, 89, 47, 6, 37, 12,
+			84, 13, 50, 0, 9, 198, 76, 84, 165, 20, 148, 192, 72, 0, 9, 198, 72, 84, 18, 21, 48, 64, 16, 0, 7, 195, 16, 20, 192, 72,
+			34, 6, 195, 48, 20, 192, 72, 0, 12, 68, 17, 34, 86, 20, 72, 51, 6, 117, 84, 0, 9, 196, 56, 84, 212, 4, 102, 76, 34, 0,
+			0, 15, 69, 85, 3, 15, 4, 64, 132, 48, 55, 6, 39, 40, 72, 0, 10, 198, 76, 83, 136, 61, 32, 64, 101, 16, 9, 198, 76, 20,
+			138, 21, 64, 64, 16, 9, 198, 69, 82, 77, 21, 32, 64, 15, 9, 198, 64, 244, 146, 21, 64, 64, 16, 9, 198, 61, 1, 82, 21, 64,
+			64, 16, 9, 198, 56, 147, 134, 21, 64, 64, 16, 9, 198, 53, 85, 18, 21, 64, 64, 16, 9, 198, 28, 244, 138, 21, 64, 64, 16, 9,
+			198, 12, 244, 150, 21, 64, 64, 16, 9, 198, 12, 244, 142, 21, 64, 64, 16, 9, 198, 12, 128, 86, 21, 64, 64, 16, 9, 198, 4, 225,
+			15, 73, 32, 64, 16, 9, 198, 4, 36, 207, 73, 64, 64, 16, 13, 4, 95, 98, 114, 118, 71, 51, 6, 109, 84, 37, 0, 0, 12, 67,
+			77, 84, 197, 88, 6, 40, 12, 123, 13, 0, 6, 195, 88, 84, 129, 15, 10, 198, 12, 243, 148, 72, 243, 5, 16, 37, 19, 67, 64, 20,
+			129, 48, 4, 35, 16, 132, 49, 135, 0, 102, 81, 113, 117, 101, 32, 6, 195, 64, 20, 129, 72, 13, 67, 21, 52, 197, 6, 36, 89, 37,
+			0, 102, 76, 34, 0, 0, 0, 13, 68, 100, 18, 15, 60, 37, 35, 107, 6, 40, 0, 102, 15, 68, 100, 18, 15, 60, 6, 37, 4, 35,
+			107, 6, 40, 0, 101, 8, 196, 5, 1, 71, 60, 16, 37, 19, 4, 95, 97, 99, 50, 35, 81, 6, 40, 72, 111, 72, 6, 40, 48, 55,
+			111, 0, 0, 6, 195, 76, 244, 1, 16, 0, 0, 6, 195, 4, 145, 19, 13, 0, 6, 194, 20, 208, 72, 37, 9, 66, 16, 240, 72, 111,
+			0, 72, 34, 0, 0, 16, 69, 56, 85, 212, 60, 224, 50, 6, 37, 38, 40, 47, 39, 68, 0, 0, 10, 67, 8, 19, 139, 71, 118, 68,
+			49, 0, 22, 4, 95, 52, 67, 111, 49, 58, 35, 72, 16, 37, 90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 0, 0, 14, 71,
+			24, 85, 69, 72, 32, 67, 32, 21, 100, 101, 0, 47, 0, 17, 7, 99, 195, 163, 105, 98, 114, 97, 49, 6, 129, 124, 71, 51, 132, 0,
+			16, 5, 95, 48, 77, 49, 111, 65, 37, 55, 6, 109, 88, 37, 65, 0, 0, 8, 197, 12, 244, 144, 61, 48, 15, 9, 197, 40, 19, 65,
+			37, 48, 76, 32, 0, 0, 19, 4, 95, 55, 88, 111, 89, 36, 48, 47, 58, 35, 90, 6, 109, 88, 37, 65, 0, 0, 0, 11, 200, 16,
+			244, 141, 36, 226, 15, 12, 240, 16, 0, 8, 197, 6, 3, 210, 21, 48, 16, 0, 14, 68, 28, 208, 73, 48, 90, 36, 65, 6, 118, 55,
+			0, 102, 15, 68, 28, 208, 73, 48, 81, 4, 36, 65, 6, 118, 55, 0, 101, 11, 67, 20, 225, 0, 6, 36, 50, 72, 0, 101, 9, 198,
+			12, 243, 131, 61, 33, 15, 15, 7, 196, 12, 131, 224, 4, 15, 0, 17, 69, 12, 19, 131, 20, 192, 49, 6, 132, 50, 89, 6, 109, 55,
+			0, 101, 8, 196, 64, 244, 148, 60, 15, 36, 7, 196, 12, 193, 82, 60, 15, 0, 7, 195, 65, 32, 64, 72, 34, 13, 3, 95, 51, 88,
+			47, 51, 6, 37, 68, 47, 132, 0, 0, 19, 70, 36, 229, 18, 4, 225, 84, 37, 68, 47, 51, 35, 50, 6, 109, 47, 0, 102, 9, 198,
+			76, 86, 20, 21, 67, 192, 16, 7, 196, 64, 84, 132, 4, 16, 14, 3, 95, 48, 67, 89, 6, 118, 68, 47, 111, 88, 0, 102, 14, 3,
+			95, 48, 67, 89, 6, 118, 68, 47, 40, 138, 0, 101, 0, 9, 198, 21, 52, 5, 13, 68, 143, 15, 6, 195, 12, 245, 15, 16, 0, 0,
+			15, 67, 17, 32, 64, 72, 39, 58, 47, 6, 39, 16, 132, 0, 24, 0, 0, 0, 9, 198, 13, 32, 84, 21, 32, 64, 15, 9, 198, 12,
+			133, 76, 21, 64, 64, 16, 0, 7, 195, 24, 244, 129, 16, 36, 6, 195, 24, 244, 129, 15, 6, 195, 24, 244, 129, 72, 0, 12, 3, 95,
+			49, 67, 89, 6, 118, 68, 47, 40, 0, 0, 0, 0, 12, 67, 21, 52, 193, 6, 109, 89, 132, 0, 76, 37, 0, 0, 0, 5, 194, 48,
+			16, 72, 8, 4, 95, 35, 194, 170, 132, 0, 16, 3, 95, 49, 57, 72, 36, 88, 36, 50, 6, 110, 84, 112, 0, 102, 16, 3, 95, 49,
+			57, 72, 112, 88, 132, 50, 6, 110, 84, 112, 0, 101, 0, 14, 3, 95, 49, 56, 72, 36, 88, 6, 120, 47, 40, 0, 102, 15, 3, 95,
+			49, 56, 72, 112, 88, 6, 110, 37, 47, 40, 0, 101, 0, 12, 67, 56, 86, 20, 50, 6, 109, 49, 89, 47, 0, 16, 3, 95, 50, 67,
+			72, 40, 88, 6, 118, 68, 47, 111, 88, 0, 102, 16, 3, 95, 50, 67, 72, 40, 88, 6, 118, 68, 47, 40, 138, 0, 101, 15, 3, 226,
+			151, 143, 89, 6, 37, 16, 14, 49, 40, 55, 111, 0, 0, 9, 198, 16, 84, 208, 60, 163, 211, 15, 9, 198, 12, 243, 15, 77, 51, 211,
+			16, 7, 195, 8, 245, 15, 16, 37, 0, 8, 196, 17, 83, 65, 76, 72, 34, 0, 10, 199, 21, 53, 28, 88, 19, 79, 76, 72, 0, 19,
+			70, 21, 132, 5, 73, 68, 192, 109, 49, 89, 48, 6, 109, 16, 14, 123, 0, 102, 17, 70, 8, 192, 90, 21, 36, 192, 71, 55, 6, 118,
+			88, 36, 34, 89, 0, 0, 16, 70, 45, 37, 69, 28, 84, 128, 49, 51, 6, 37, 90, 36, 34, 0, 9, 198, 21, 53, 9, 88, 84, 128,
+			72, 0, 12, 201, 21, 53, 18, 60, 115, 206, 60, 97, 64, 15, 11, 3, 95, 49, 49, 6, 39, 68, 88, 112, 0, 0, 9, 198, 69, 80,
+			84, 61, 38, 133, 16, 10, 3, 95, 49, 48, 72, 6, 109, 138, 0, 0, 17, 3, 95, 51, 67, 47, 51, 36, 88, 6, 118, 68, 47, 111,
+			88, 0, 102, 17, 3, 95, 51, 67, 47, 34, 112, 88, 6, 118, 68, 47, 40, 138, 0, 101, 13, 3, 95, 49, 51, 47, 51, 6, 36, 88,
+			37, 0, 102, 13, 3, 95, 49, 51, 47, 34, 6, 36, 88, 112, 0, 101, 0, 11, 3, 95, 49, 50, 72, 6, 39, 88, 112, 0, 0, 7,
+			196, 28, 195, 211, 60, 15, 12, 3, 95, 49, 53, 49, 6, 37, 68, 88, 112, 0, 16, 4, 95, 99, 121, 114, 89, 37, 16, 6, 37, 55,
+			37, 49, 111, 0, 0, 15, 3, 95, 49, 52, 49, 35, 47, 6, 39, 34, 88, 112, 0, 102, 15, 3, 95, 49, 52, 49, 132, 47, 6, 39,
+			34, 88, 112, 0, 101, 0, 17, 3, 95, 49, 55, 72, 4, 36, 88, 36, 89, 6, 109, 76, 112, 0, 102, 16, 3, 95, 49, 55, 72, 112,
+			88, 132, 89, 6, 109, 47, 112, 0, 101, 0, 16, 3, 95, 49, 54, 72, 4, 36, 88, 36, 89, 6, 118, 138, 0, 102, 16, 3, 95, 49,
+			54, 72, 112, 88, 132, 89, 6, 36, 37, 138, 0, 101, 0, 8, 4, 95, 35, 194, 186, 111, 0, 0, 11, 200, 12, 21, 5, 69, 81, 83,
+			21, 48, 15, 15, 3, 95, 55, 88, 89, 36, 47, 6, 118, 68, 47, 132, 0, 102, 15, 3, 95, 55, 88, 89, 112, 47, 6, 118, 68, 47,
+			132, 0, 101, 0, 15, 68, 52, 81, 9, 4, 65, 6, 109, 72, 4, 37, 132, 0, 101, 14, 68, 56, 84, 211, 20, 50, 6, 36, 89, 112,
+			0, 76, 34, 0, 14, 69, 54, 179, 12, 21, 32, 65, 6, 37, 55, 36, 34, 0, 0, 9, 198, 76, 244, 150, 21, 65, 64, 16, 9, 198,
+			64, 244, 146, 21, 65, 64, 16, 9, 198, 80, 149, 133, 77, 65, 64, 72, 0, 13, 67, 76, 20, 9, 89, 4, 35, 48, 6, 37, 0, 101,
+			0, 7, 196, 85, 33, 73, 4, 15, 7, 196, 64, 241, 9, 4, 76, 13, 3, 95, 49, 111, 48, 51, 37, 65, 6, 118, 16, 0, 0, 0,
+			0, 12, 67, 76, 149, 5, 89, 6, 117, 76, 112, 0, 102, 11, 67, 76, 149, 5, 89, 6, 117, 47, 0, 101, 0, 16, 3, 95, 53, 67,
+			49, 37, 67, 6, 118, 68, 47, 111, 88, 0, 102, 16, 3, 95, 53, 67, 49, 37, 67, 6, 118, 68, 47, 40, 138, 0, 101, 0, 0, 8,
+			196, 76, 244, 18, 60, 16, 37, 7, 196, 36, 227, 214, 60, 15, 0, 7, 195, 72, 245, 1, 15, 37, 6, 195, 72, 245, 1, 16, 11, 67,
+			80, 85, 133, 47, 36, 84, 112, 0, 73, 13, 4, 95, 97, 99, 117, 35, 81, 6, 40, 72, 111, 0, 0, 13, 3, 95, 50, 111, 89, 36,
+			81, 6, 128, 68, 72, 0, 0, 0, 0, 6, 195, 52, 19, 0, 102, 0, 0, 9, 198, 64, 244, 148, 4, 229, 15, 102, 19, 4, 95, 53,
+			67, 111, 49, 37, 68, 90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 0, 28, 3, 226, 150, 160, 71, 6, 35, 101, 132, 84, 36, 16,
+			14, 76, 37, 49, 6, 114, 49, 39, 16, 14, 47, 35, 72, 132, 0, 0, 17, 69, 92, 17, 206, 21, 32, 84, 6, 35, 81, 124, 50, 36,
+			34, 0, 103, 15, 69, 92, 17, 206, 21, 32, 84, 6, 35, 81, 50, 36, 34, 0, 16, 70, 80, 16, 140, 21, 68, 192, 47, 6, 35, 71,
+			55, 36, 123, 0, 14, 3, 95, 51, 111, 47, 36, 16, 14, 89, 6, 118, 16, 0, 0, 15, 70, 53, 81, 76, 48, 84, 128, 65, 6, 37,
+			55, 36, 34, 0, 0, 0, 15, 69, 48, 20, 20, 61, 0, 55, 109, 48, 47, 6, 110, 48, 0, 13, 3, 95, 50, 88, 84, 6, 37, 68,
+			76, 112, 0, 102, 13, 3, 95, 50, 88, 84, 6, 37, 68, 47, 112, 0, 101, 0, 15, 69, 32, 149, 12, 21, 32, 107, 6, 37, 47, 55,
+			36, 34, 0, 16, 69, 72, 80, 68, 21, 32, 34, 6, 37, 72, 4, 132, 44, 0, 101, 14, 69, 93, 34, 84, 21, 32, 34, 6, 117, 47,
+			36, 34, 0, 0, 0, 20, 71, 16, 245, 206, 48, 240, 68, 76, 72, 114, 68, 55, 6, 39, 58, 72, 89, 0, 102, 0, 0, 0, 6, 195,
+			13, 5, 67, 13, 0, 7, 196, 16, 147, 199, 60, 16, 0, 11, 200, 16, 148, 211, 4, 35, 210, 21, 48, 16, 0, 8, 196, 16, 84, 211,
+			20, 15, 36, 7, 196, 16, 84, 211, 20, 16, 8, 196, 16, 84, 211, 20, 76, 34, 0, 10, 198, 12, 243, 134, 61, 37, 15, 15, 36, 0,
+			0, 0, 11, 3, 95, 53, 111, 49, 6, 37, 68, 47, 0, 15, 3, 95, 63, 63, 89, 6, 37, 65, 71, 39, 55, 111, 10, 0, 0, 6,
+			195, 8, 242, 143, 16, 0, 13, 66, 53, 32, 65, 6, 37, 89, 47, 36, 34, 0, 24, 0, 16, 3, 95, 52, 88, 49, 58, 35, 16, 6,
+			118, 68, 47, 132, 0, 102, 16, 3, 95, 52, 88, 49, 58, 132, 16, 6, 36, 68, 47, 132, 0, 101, 0, 0, 0, 0, 11, 67, 48, 149,
+			133, 55, 6, 35, 37, 84, 0, 6, 195, 80, 85, 1, 16, 7, 195, 52, 85, 1, 15, 37, 6, 195, 28, 245, 1, 16, 6, 195, 80, 149,
+			133, 72, 0, 11, 3, 95, 54, 111, 89, 6, 36, 89, 47, 0, 0, 0, 6, 194, 56, 16, 72, 34, 18, 4, 95, 115, 117, 98, 15, 89,
+			40, 71, 89, 49, 51, 6, 37, 47, 111, 0, 0, 9, 67, 28, 243, 0, 81, 39, 58, 0, 16, 3, 95, 53, 88, 89, 37, 68, 49, 58,
+			6, 118, 68, 47, 132, 0, 0, 10, 199, 28, 243, 143, 73, 33, 73, 4, 15, 10, 199, 24, 83, 9, 77, 65, 73, 4, 15, 0, 6, 195,
+			61, 52, 207, 16, 9, 198, 16, 84, 212, 21, 36, 143, 16, 13, 4, 95, 114, 110, 103, 129, 50, 6, 109, 55, 0, 101, 11, 4, 95, 114,
+			110, 103, 129, 50, 6, 137, 0, 0, 14, 69, 48, 22, 79, 85, 64, 55, 6, 118, 4, 114, 47, 0, 0, 6, 195, 24, 242, 64, 72, 0,
+			12, 3, 95, 55, 111, 89, 6, 109, 76, 37, 65, 0, 0, 12, 67, 56, 84, 143, 50, 6, 109, 34, 40, 0, 101, 0, 0, 15, 3, 95,
+			54, 88, 89, 36, 89, 6, 118, 68, 47, 132, 0, 102, 15, 3, 95, 54, 88, 89, 112, 89, 6, 118, 68, 47, 132, 0, 101, 0, 14, 69,
+			88, 19, 20, 21, 32, 84, 6, 114, 47, 36, 34, 0, 9, 197, 12, 243, 8, 21, 32, 15, 37, 7, 196, 80, 84, 133, 36, 72, 7, 196,
+			76, 84, 133, 36, 72, 0, 0, 8, 197, 21, 53, 1, 73, 192, 72, 0, 6, 195, 76, 83, 64, 102, 0, 0, 13, 201, 16, 84, 193, 77,
+			51, 211, 76, 81, 207, 16, 37, 0, 0, 9, 198, 76, 147, 129, 28, 241, 193, 15, 0, 16, 68, 56, 84, 212, 20, 50, 6, 36, 89, 76,
+			37, 0, 102, 76, 34, 0, 8, 197, 28, 19, 5, 72, 16, 15, 0, 0, 10, 198, 65, 32, 81, 84, 83, 1, 76, 34, 0, 7, 196, 48,
+			84, 18, 4, 15, 10, 3, 95, 57, 111, 50, 6, 39, 50, 0, 0, 16, 69, 16, 83, 5, 80, 80, 72, 6, 37, 55, 6, 37, 47, 0,
+			101, 8, 197, 96, 20, 143, 64, 80, 15, 8, 197, 80, 20, 5, 80, 80, 16, 8, 197, 80, 20, 5, 72, 16, 15, 8, 197, 72, 243, 5,
+			80, 80, 16, 8, 197, 24, 147, 5, 80, 80, 16, 8, 197, 12, 243, 5, 80, 80, 16, 8, 197, 12, 16, 197, 80, 80, 16, 0, 18, 70,
+			36, 228, 212, 4, 195, 0, 4, 37, 50, 89, 47, 6, 35, 55, 0, 101, 20, 71, 16, 84, 201, 28, 225, 82, 76, 72, 36, 88, 6, 117,
+			50, 36, 34, 89, 0, 102, 9, 198, 76, 147, 143, 65, 49, 64, 15, 0, 13, 3, 95, 56, 88, 120, 47, 6, 118, 68, 47, 132, 0, 0,
+			10, 199, 8, 244, 130, 60, 193, 84, 4, 16, 0, 0, 7, 196, 16, 145, 71, 60, 16, 0, 6, 195, 16, 246, 133, 16, 6, 195, 88, 245,
+			64, 76, 7, 195, 76, 85, 64, 76, 34, 0, 0, 12, 67, 12, 20, 19, 49, 6, 35, 48, 89, 0, 101, 8, 197, 72, 83, 79, 20, 208,
+			15, 0, 9, 198, 12, 20, 146, 62, 0, 64, 15, 9, 198, 64, 241, 37, 4, 211, 211, 76, 6, 194, 52, 80, 72, 32, 0, 15, 3, 95,
+			57, 88, 50, 39, 84, 6, 118, 68, 47, 132, 0, 102, 15, 3, 95, 57, 88, 50, 40, 84, 6, 118, 68, 47, 132, 0, 101, 0, 9, 198,
+			77, 84, 15, 73, 67, 192, 15, 0, 18, 4, 95, 54, 67, 111, 89, 118, 89, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 7, 196, 56,
+			83, 5, 76, 77, 7, 196, 16, 83, 5, 76, 77, 0, 0, 10, 199, 16, 85, 5, 72, 147, 210, 20, 15, 8, 197, 12, 131, 198, 21, 32,
+			15, 6, 195, 4, 20, 16, 13, 0, 7, 195, 52, 241, 143, 15, 36, 0, 13, 3, 95, 63, 65, 55, 6, 36, 47, 51, 132, 10, 0, 0,
+			0, 8, 197, 52, 148, 212, 21, 32, 15, 0, 13, 4, 95, 49, 88, 111, 72, 6, 109, 89, 37, 65, 0, 0, 19, 70, 20, 147, 147, 80,
+			82, 78, 11, 6, 117, 50, 89, 47, 4, 117, 50, 0, 102, 18, 70, 20, 147, 147, 80, 82, 78, 11, 6, 117, 50, 91, 47, 4, 117, 50,
+			0, 16, 69, 64, 241, 5, 73, 192, 48, 2, 39, 72, 36, 16, 35, 0, 76, 0, 16, 6, 115, 117, 116, 105, 195, 163, 89, 40, 76, 37,
+			6, 129, 68, 0, 0, 13, 3, 95, 52, 111, 49, 58, 6, 35, 16, 14, 47, 0, 20, 4, 95, 115, 117, 112, 15, 89, 39, 71, 16, 36,
+			89, 49, 51, 6, 37, 47, 111, 0, 4, 193, 168, 43, 0, 12, 4, 95, 115, 116, 107, 71, 6, 35, 101, 132, 0, 0, 20, 70, 21, 132,
+			12, 61, 33, 82, 36, 49, 89, 48, 55, 6, 110, 16, 36, 34, 0, 102, 22, 70, 21, 132, 12, 61, 33, 82, 4, 36, 49, 89, 48, 55,
+			6, 110, 12, 16, 132, 44, 0, 101, 0, 8, 197, 32, 243, 69, 72, 240, 15, 9, 197, 4, 49, 82, 80, 240, 16, 37, 0, 11, 67, 92,
+			80, 128, 58, 6, 109, 71, 0, 102, 0, 0, 10, 199, 80, 244, 142, 61, 161, 76, 60, 16, 0, 14, 68, 76, 194, 68, 20, 88, 55, 6,
+			117, 75, 112, 0, 102, 8, 196, 48, 84, 212, 20, 16, 36, 8, 196, 16, 84, 212, 20, 15, 36, 7, 196, 16, 84, 212, 20, 16, 13, 68,
+			24, 244, 212, 20, 83, 39, 89, 76, 112, 0, 73, 0, 11, 69, 24, 81, 15, 72, 16, 21, 0, 101, 47, 15, 69, 28, 243, 199, 48, 80,
+			81, 6, 40, 81, 39, 55, 0, 102, 16, 69, 28, 243, 199, 48, 80, 81, 6, 40, 12, 81, 132, 55, 0, 101, 8, 197, 24, 21, 15, 72,
+			16, 15, 8, 197, 21, 52, 15, 76, 16, 16, 9, 197, 21, 48, 207, 88, 16, 15, 36, 8, 197, 21, 48, 207, 88, 16, 16, 7, 195, 77,
+			80, 64, 76, 34, 0, 0, 0, 7, 196, 88, 84, 132, 20, 16, 21, 68, 16, 84, 196, 20, 72, 6, 36, 89, 75, 37, 49, 135, 0, 102,
+			81, 113, 117, 101, 32, 8, 196, 16, 84, 196, 20, 102, 72, 0, 14, 69, 85, 1, 1, 80, 80, 132, 48, 72, 6, 118, 47, 0, 8, 197,
+			52, 81, 197, 72, 16, 15, 8, 197, 52, 16, 197, 80, 80, 16, 8, 197, 37, 51, 204, 16, 16, 16, 8, 197, 12, 17, 5, 80, 80, 16,
+			0, 0, 11, 67, 24, 150, 5, 83, 37, 91, 112, 0, 101, 6, 195, 8, 246, 5, 15, 0, 10, 199, 72, 19, 65, 48, 129, 84, 20, 16,
+			0, 7, 195, 65, 32, 83, 72, 34, 0, 10, 199, 21, 52, 85, 20, 193, 84, 60, 16, 0, 8, 197, 80, 146, 143, 48, 240, 16, 11, 67,
+			64, 246, 1, 48, 6, 39, 91, 132, 0, 8, 197, 21, 53, 15, 40, 240, 16, 0, 11, 3, 97, 46, 99, 6, 35, 89, 6, 36, 0, 0,
+			6, 195, 48, 241, 15, 16, 8, 197, 76, 84, 137, 4, 208, 72, 0, 0, 11, 200, 52, 243, 148, 20, 225, 71, 72, 240, 16, 0, 0, 0,
+			21, 68, 4, 229, 5, 76, 6, 129, 68, 76, 37, 89, 49, 135, 0, 102, 81, 113, 117, 101, 32, 9, 196, 21, 53, 5, 76, 102, 76, 34,
+			0, 0, 6, 194, 61, 48, 76, 34, 4, 193, 172, 43, 20, 4, 95, 99, 105, 114, 89, 37, 34, 49, 128, 68, 83, 55, 6, 109, 49, 89,
+			111, 0, 0, 12, 68, 44, 193, 73, 56, 49, 55, 6, 117, 50, 0, 20, 70, 77, 3, 210, 80, 147, 135, 89, 48, 6, 110, 34, 47, 4,
+			37, 50, 81, 0, 101, 11, 67, 65, 35, 192, 48, 51, 111, 0, 72, 34, 0, 11, 199, 5, 36, 133, 52, 84, 211, 60, 16, 37, 17, 4,
+			95, 48, 77, 52, 47, 34, 37, 55, 57, 6, 127, 57, 88, 0, 102, 17, 4, 95, 48, 77, 52, 47, 34, 37, 55, 57, 6, 127, 57, 138,
+			0, 101, 0, 8, 197, 56, 245, 133, 48, 240, 16, 8, 197, 12, 244, 133, 80, 240, 16, 21, 69, 21, 128, 197, 80, 240, 36, 89, 6, 109,
+			47, 40, 89, 135, 0, 102, 81, 115, 101, 32, 0, 11, 3, 95, 56, 111, 120, 47, 6, 35, 84, 0, 16, 4, 95, 48, 77, 50, 65, 37,
+			55, 57, 6, 127, 57, 88, 0, 102, 16, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 127, 57, 138, 0, 101, 0, 10, 67, 88, 243, 128,
+			83, 2, 110, 50, 0, 16, 4, 95, 48, 77, 51, 71, 37, 55, 57, 6, 127, 57, 88, 0, 102, 16, 4, 95, 48, 77, 51, 71, 37, 55,
+			57, 6, 127, 57, 138, 0, 101, 0, 8, 196, 81, 35, 195, 60, 16, 37, 10, 199, 77, 83, 6, 85, 33, 84, 60, 16, 0, 11, 67, 52,
+			83, 149, 65, 36, 50, 40, 0, 101, 9, 197, 77, 81, 143, 12, 240, 16, 37, 9, 197, 5, 3, 211, 80, 240, 15, 36, 9, 197, 4, 35,
+			210, 80, 240, 15, 36, 8, 197, 4, 35, 210, 16, 240, 15, 12, 4, 95, 48, 77, 49, 65, 6, 116, 10, 0, 102, 13, 4, 95, 48, 77,
+			49, 65, 6, 37, 55, 10, 0, 101, 0, 0, 6, 195, 36, 241, 15, 16, 0, 7, 195, 65, 38, 192, 72, 34, 0, 11, 200, 8, 148, 211,
+			84, 193, 133, 80, 240, 16, 0, 0, 6, 195, 76, 84, 128, 72, 0, 20, 72, 92, 83, 12, 36, 225, 212, 60, 224, 58, 6, 109, 55, 112,
+			50, 47, 39, 50, 0, 0, 9, 198, 24, 20, 143, 48, 85, 5, 16, 0, 15, 68, 56, 244, 211, 4, 50, 6, 110, 89, 132, 0, 102, 76,
+			34, 0, 16, 4, 95, 108, 105, 103, 55, 37, 81, 35, 72, 6, 40, 16, 132, 0, 0, 20, 68, 76, 19, 22, 60, 89, 6, 35, 55, 84,
+			40, 89, 135, 0, 102, 81, 115, 101, 32, 0, 15, 70, 56, 85, 77, 4, 227, 128, 50, 6, 136, 65, 35, 50, 0, 13, 68, 32, 81, 197,
+			48, 101, 6, 36, 81, 36, 55, 0, 9, 198, 21, 48, 207, 64, 85, 1, 16, 9, 198, 12, 19, 129, 48, 85, 1, 16, 0, 9, 198, 12,
+			243, 15, 77, 51, 192, 16, 0, 0, 7, 196, 52, 85, 18, 60, 15, 7, 196, 12, 85, 18, 60, 15, 0, 17, 70, 24, 86, 78, 52, 19,
+			128, 83, 6, 35, 37, 50, 65, 13, 50, 0, 0, 9, 198, 52, 147, 149, 21, 67, 192, 16, 0, 21, 4, 95, 55, 67, 111, 89, 36, 48,
+			76, 37, 90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0, 10, 199, 12, 243, 131, 21, 37, 15, 76, 16, 0, 0, 0, 7, 196, 21, 53,
+			5, 72, 15, 0, 7, 195, 65, 38, 211, 72, 34, 0, 9, 198, 24, 243, 3, 48, 244, 133, 15, 0, 6, 194, 61, 80, 102, 72, 0, 15,
+			4, 95, 50, 88, 111, 84, 37, 90, 6, 109, 88, 37, 65, 0, 0, 19, 71, 52, 20, 139, 21, 66, 78, 28, 65, 6, 35, 34, 49, 36,
+			76, 37, 68, 0, 0, 16, 70, 72, 145, 77, 4, 227, 128, 34, 6, 37, 12, 65, 35, 50, 0, 0, 0, 9, 198, 80, 19, 66, 61, 33,
+			83, 16, 0, 7, 196, 12, 81, 18, 60, 15, 0, 9, 197, 56, 19, 79, 72, 240, 16, 37, 0, 9, 198, 64, 82, 88, 61, 67, 192, 16,
+			10, 198, 5, 52, 207, 65, 35, 192, 16, 37, 0, 0, 0, 9, 134, 101, 115, 116, 195, 163, 111, 72, 0, 13, 68, 52, 245, 137, 20, 65,
+			6, 40, 84, 37, 0, 101, 7, 196, 24, 244, 131, 4, 16, 8, 196, 12, 84, 131, 4, 15, 36, 0, 9, 67, 52, 16, 192, 65, 109, 49,
+			0, 0, 0, 0, 0, 6, 195, 12, 225, 64, 13, 0, 13, 201, 16, 84, 195, 60, 229, 18, 60, 193, 64, 16, 37, 0, 0, 10, 199, 9,
+			32, 67, 20, 193, 84, 20, 16, 0, 0, 15, 4, 95, 99, 101, 100, 89, 112, 72, 6, 37, 61, 132, 0, 101, 15, 4, 95, 99, 101, 100,
+			89, 36, 75, 6, 37, 55, 57, 132, 0, 0, 17, 70, 32, 19, 9, 76, 243, 128, 132, 55, 6, 37, 89, 132, 68, 0, 101, 0, 10, 198,
+			80, 83, 80, 21, 35, 192, 16, 37, 10, 198, 20, 229, 5, 73, 35, 192, 16, 37, 9, 198, 8, 20, 146, 21, 67, 192, 16, 0, 11, 200,
+			5, 52, 197, 52, 35, 5, 36, 16, 15, 0, 0, 8, 197, 52, 147, 204, 61, 48, 15, 8, 197, 12, 244, 142, 61, 48, 15, 0, 10, 199,
+			76, 80, 143, 73, 33, 73, 4, 15, 10, 199, 12, 83, 148, 61, 1, 73, 4, 15, 0, 7, 195, 12, 244, 143, 15, 36, 6, 195, 12, 244,
+			143, 16, 0, 0, 9, 134, 115, 101, 114, 195, 163, 111, 72, 8, 197, 5, 1, 78, 5, 48, 102, 0, 0, 0, 10, 198, 72, 80, 207, 52,
+			88, 15, 15, 36, 10, 198, 20, 225, 5, 72, 88, 15, 15, 36, 8, 196, 12, 131, 210, 60, 16, 37, 16, 4, 95, 99, 97, 112, 65, 117,
+			6, 40, 89, 49, 40, 55, 111, 0, 0, 19, 70, 16, 146, 139, 77, 68, 129, 72, 6, 37, 57, 49, 89, 47, 34, 134, 12, 0, 9, 198,
+			28, 19, 135, 61, 36, 129, 16, 0, 0, 9, 198, 76, 83, 136, 61, 33, 83, 16, 9, 198, 72, 19, 131, 61, 33, 83, 16, 9, 198, 80,
+			149, 133, 77, 65, 83, 72, 0, 7, 196, 29, 81, 84, 60, 16, 0, 9, 198, 12, 131, 214, 21, 52, 197, 16, 0, 9, 198, 77, 83, 6,
+			21, 67, 192, 16, 9, 198, 56, 149, 18, 21, 67, 192, 16, 9, 198, 29, 32, 86, 21, 67, 192, 16, 10, 198, 21, 53, 15, 73, 99, 192,
+			15, 36, 6, 195, 69, 81, 82, 102, 0, 18, 70, 78, 83, 66, 60, 195, 192, 89, 6, 37, 68, 71, 39, 55, 111, 0, 104, 20, 3, 95,
+			194, 180, 35, 89, 6, 118, 68, 47, 40, 4, 35, 81, 6, 40, 72, 111, 0, 0, 0, 0, 14, 68, 4, 67, 194, 20, 132, 72, 6, 110,
+			71, 112, 0, 101, 7, 196, 52, 241, 68, 4, 15, 8, 196, 5, 161, 68, 4, 15, 36, 8, 133, 112, 195, 180, 100, 101, 76, 0, 10, 198,
+			72, 81, 146, 21, 48, 207, 15, 36, 6, 195, 24, 241, 207, 16, 7, 195, 52, 20, 192, 102, 72, 6, 195, 88, 244, 192, 72, 7, 195, 56,
+			244, 192, 72, 34, 6, 195, 60, 212, 192, 13, 0, 9, 198, 48, 16, 197, 72, 64, 64, 15, 9, 198, 12, 19, 69, 48, 128, 64, 15, 9,
+			198, 4, 224, 200, 61, 96, 64, 16, 0, 13, 3, 110, 194, 186, 50, 6, 128, 65, 36, 16, 111, 0, 0, 7, 196, 81, 33, 84, 4, 16,
+			0, 0, 0, 6, 195, 8, 240, 193, 16, 0, 10, 199, 21, 53, 9, 88, 84, 129, 52, 72, 6, 131, 95, 195, 179, 43, 0, 6, 195, 60,
+			229, 64, 65, 6, 195, 76, 242, 83, 72, 0, 0, 6, 195, 16, 240, 197, 16, 0, 8, 66, 48, 240, 55, 111, 0, 72, 12, 66, 76, 16,
+			4, 109, 89, 57, 6, 35, 0, 101, 0, 20, 4, 95, 56, 67, 111, 39, 49, 76, 37, 90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 0,
+			0, 19, 71, 28, 245, 20, 25, 34, 69, 16, 81, 6, 110, 47, 83, 51, 37, 12, 47, 0, 14, 68, 25, 35, 206, 80, 83, 34, 6, 39,
+			50, 47, 0, 101, 0, 16, 70, 8, 80, 84, 48, 84, 192, 71, 6, 37, 47, 39, 58, 89, 0, 9, 198, 16, 85, 133, 72, 20, 192, 15,
+			0, 7, 196, 52, 83, 143, 72, 15, 7, 196, 24, 22, 133, 72, 76, 0, 28, 3, 95, 194, 161, 4, 36, 89, 49, 55, 132, 65, 35, 89,
+			4, 130, 4, 37, 68, 84, 36, 34, 76, 6, 37, 72, 132, 0, 6, 131, 95, 195, 169, 43, 0, 10, 197, 56, 244, 211, 61, 48, 102, 76,
+			34, 0, 9, 197, 21, 48, 143, 128, 240, 15, 36, 9, 197, 4, 195, 79, 128, 240, 15, 36, 0, 0, 0, 0, 0, 14, 68, 20, 197, 15,
+			56, 6, 109, 55, 47, 132, 68, 0, 101, 9, 198, 80, 84, 146, 61, 33, 83, 16, 6, 131, 95, 195, 160, 43, 0, 6, 131, 95, 195, 161,
+			43, 0, 15, 69, 45, 42, 199, 21, 32, 49, 51, 6, 37, 90, 36, 34, 0, 11, 200, 12, 21, 1, 13, 33, 83, 21, 48, 15, 0, 9,
+			198, 72, 80, 207, 73, 67, 192, 15, 9, 198, 24, 243, 8, 21, 67, 192, 16, 10, 198, 20, 230, 5, 73, 67, 192, 16, 37, 9, 198, 4,
+			213, 76, 21, 67, 192, 16, 0, 9, 198, 12, 243, 15, 77, 68, 143, 16, 0, 9, 198, 36, 229, 5, 72, 225, 84, 15, 0, 6, 195, 72,
+			241, 77, 15, 0, 8, 196, 80, 244, 146, 20, 16, 37, 7, 196, 69, 81, 68, 4, 15, 7, 196, 12, 241, 146, 20, 15, 0, 6, 195, 80,
+			241, 207, 16, 10, 67, 21, 32, 64, 109, 16, 132, 0, 73, 0, 9, 198, 28, 19, 8, 60, 96, 64, 15, 0, 19, 71, 25, 34, 69, 17,
+			34, 67, 32, 83, 51, 6, 37, 12, 72, 51, 37, 91, 0, 0, 9, 197, 12, 243, 69, 128, 240, 15, 36, 7, 196, 12, 129, 70, 20, 15,
+			5, 194, 77, 32, 24, 0, 6, 195, 60, 97, 128, 15, 0, 15, 69, 16, 20, 151, 36, 224, 72, 6, 134, 34, 58, 37, 50, 0, 11, 68,
+			8, 192, 67, 44, 71, 55, 109, 49, 0, 9, 198, 64, 193, 66, 20, 144, 64, 15, 9, 198, 64, 19, 135, 20, 144, 64, 15, 9, 198, 24,
+			243, 147, 20, 48, 64, 16, 0, 7, 195, 76, 80, 193, 16, 37, 0, 0, 9, 198, 64, 20, 129, 16, 246, 15, 15, 6, 195, 64, 242, 83,
+			102, 0, 15, 69, 16, 80, 137, 4, 224, 72, 6, 109, 71, 57, 129, 68, 0, 0, 15, 69, 8, 16, 203, 85, 0, 71, 109, 49, 6, 132,
+			48, 0, 102, 0, 9, 66, 60, 176, 110, 49, 6, 118, 0, 0, 13, 68, 80, 20, 197, 72, 47, 6, 118, 88, 36, 34, 0, 13, 68, 48,
+			20, 197, 72, 55, 6, 118, 88, 36, 34, 0, 0, 7, 196, 88, 19, 79, 76, 76, 7, 196, 80, 83, 79, 76, 72, 0, 13, 68, 76, 130,
+			70, 80, 91, 6, 37, 83, 47, 0, 101, 0, 9, 198, 80, 146, 143, 48, 244, 192, 15, 9, 198, 77, 81, 143, 12, 244, 192, 16, 9, 198,
+			76, 16, 143, 72, 84, 192, 16, 11, 5, 101, 46, 117, 46, 97, 109, 40, 35, 0, 0, 0, 0, 0, 30, 3, 95, 194, 191, 4, 37, 68,
+			47, 36, 101, 4, 39, 81, 35, 89, 4, 130, 4, 37, 68, 84, 36, 34, 76, 6, 37, 72, 132, 0, 0, 0, 8, 67, 32, 145, 200, 107,
+			117, 0, 0, 0, 0, 0, 8, 196, 5, 3, 201, 60, 15, 36, 0, 0, 10, 199, 20, 230, 1, 69, 81, 67, 4, 16, 0, 6, 195, 61,
+			35, 143, 15, 8, 196, 24, 244, 160, 4, 15, 36, 7, 196, 24, 244, 160, 4, 16, 0, 23, 73, 52, 243, 148, 21, 52, 85, 36, 85, 64,
+			65, 4, 39, 68, 47, 36, 89, 49, 57, 6, 36, 0, 0, 0, 13, 4, 95, 103, 114, 118, 81, 51, 6, 35, 84, 37, 0, 0, 7, 195,
+			76, 80, 207, 15, 36, 6, 195, 76, 80, 207, 16, 0, 15, 70, 8, 16, 130, 4, 113, 64, 71, 6, 35, 71, 37, 75, 0, 9, 198, 12,
+			21, 15, 73, 161, 64, 16, 0, 12, 2, 195, 151, 84, 6, 36, 88, 112, 89, 0, 102, 12, 2, 195, 151, 84, 6, 36, 88, 112, 91, 0,
+			101, 0, 0, 0, 9, 198, 24, 241, 213, 21, 65, 64, 16, 0, 6, 195, 36, 241, 193, 15, 6, 195, 57, 97, 1, 13, 0, 11, 67, 4,
+			192, 78, 6, 35, 55, 13, 68, 0, 0, 7, 196, 5, 36, 143, 104, 16, 0, 14, 69, 65, 149, 8, 60, 224, 48, 6, 117, 87, 129, 68,
+			0, 9, 198, 72, 81, 143, 74, 3, 211, 15, 9, 198, 21, 49, 143, 74, 3, 211, 15, 0, 10, 2, 194, 167, 89, 36, 89, 6, 130, 0,
+			9, 2, 195, 159, 21, 100, 101, 0, 47, 0, 6, 194, 76, 80, 76, 32, 9, 66, 56, 240, 50, 111, 0, 72, 34, 5, 194, 76, 80, 72,
+			0, 11, 67, 8, 16, 203, 71, 6, 109, 49, 0, 101, 13, 68, 77, 84, 5, 72, 89, 6, 111, 48, 36, 34, 0, 9, 198, 16, 84, 193,
+			24, 244, 143, 16, 19, 4, 95, 57, 67, 111, 50, 39, 68, 90, 118, 68, 47, 6, 109, 88, 37, 65, 0, 10, 2, 194, 165, 57, 6, 36,
+			68, 112, 0, 0, 7, 196, 80, 84, 197, 76, 15, 7, 196, 48, 84, 197, 76, 15, 7, 196, 24, 241, 207, 76, 15, 14, 2, 194, 162, 89,
+			36, 68, 47, 6, 35, 84, 111, 138, 0, 0, 11, 2, 194, 163, 55, 6, 37, 71, 51, 132, 0, 0, 18, 70, 8, 18, 1, 52, 20, 192,
+			71, 35, 101, 6, 129, 65, 132, 89, 0, 102, 9, 198, 73, 80, 143, 72, 84, 192, 16, 9, 198, 72, 145, 207, 72, 84, 192, 16, 9, 198,
+			65, 81, 5, 52, 244, 192, 76, 9, 198, 64, 241, 5, 52, 244, 192, 76, 9, 198, 24, 22, 133, 52, 244, 192, 76, 9, 198, 80, 149, 133,
+			52, 244, 192, 72, 9, 198, 21, 53, 1, 52, 244, 192, 72, 0, 7, 195, 28, 246, 143, 16, 37, 12, 201, 16, 84, 195, 60, 225, 143, 73,
+			67, 211, 16, 6, 195, 8, 80, 207, 16, 6, 195, 60, 213, 0, 13, 0, 16, 2, 194, 174, 101, 36, 90, 37, 89, 47, 51, 6, 35, 72,
+			111, 0, 0, 14, 68, 64, 18, 78, 80, 48, 6, 35, 37, 50, 47, 0, 101, 0, 0, 19, 4, 95, 52, 88, 111, 49, 58, 35, 72, 16,
+			35, 90, 6, 109, 88, 37, 65, 0, 0, 23, 2, 194, 170, 39, 16, 14, 75, 37, 50, 6, 114, 83, 36, 65, 37, 50, 6, 126, 50, 111,
+			0, 102, 24, 2, 194, 170, 110, 16, 14, 72, 37, 50, 6, 35, 55, 83, 36, 65, 37, 50, 6, 126, 50, 111, 0, 101, 0, 5, 130, 195,
+			163, 43, 0, 0, 0, 16, 2, 194, 182, 48, 35, 16, 6, 35, 81, 51, 132, 83, 111, 0, 102, 16, 2, 194, 182, 48, 35, 16, 6, 35,
+			81, 34, 132, 83, 111, 0, 101, 0, 15, 68, 48, 147, 149, 96, 55, 6, 37, 50, 111, 49, 89, 0, 102, 16, 68, 48, 147, 149, 96, 55,
+			4, 37, 50, 6, 40, 49, 89, 0, 101, 0, 6, 195, 8, 88, 1, 15, 12, 67, 21, 53, 28, 36, 89, 47, 6, 35, 0, 72, 0, 6,
+			195, 4, 32, 192, 13, 12, 2, 194, 181, 65, 6, 37, 49, 51, 111, 0, 102, 12, 2, 194, 181, 65, 6, 37, 49, 34, 111, 0, 101, 0,
+			0, 0, 17, 70, 32, 21, 203, 36, 225, 192, 107, 6, 39, 12, 49, 37, 50, 81, 0, 17, 70, 72, 19, 139, 36, 225, 192, 101, 6, 132,
+			68, 49, 124, 68, 0, 102, 7, 196, 80, 84, 141, 4, 15, 9, 2, 194, 176, 81, 51, 6, 114, 0, 0, 0, 18, 2, 194, 190, 47, 51,
+			36, 138, 49, 58, 6, 35, 16, 14, 47, 111, 138, 0, 0, 19, 2, 195, 183, 75, 37, 84, 37, 75, 6, 37, 72, 111, 48, 6, 39, 34,
+			0, 102, 19, 2, 195, 183, 72, 37, 84, 37, 72, 6, 37, 72, 111, 48, 6, 39, 34, 0, 101, 0, 7, 196, 28, 244, 205, 4, 15, 15,
+			2, 194, 188, 128, 68, 49, 40, 6, 35, 16, 14, 47, 111, 0, 5, 130, 195, 180, 43, 0, 7, 195, 57, 83, 147, 72, 34, 9, 2, 194,
+			189, 65, 6, 118, 111, 0, 5, 130, 195, 181, 43, 0, 9, 198, 21, 53, 18, 60, 97, 64, 15, 10, 198, 12, 243, 147, 60, 193, 64, 16,
+			37, 24, 2, 194, 186, 39, 16, 14, 75, 37, 50, 6, 114, 65, 35, 89, 49, 40, 55, 6, 126, 50, 111, 0, 102, 25, 2, 194, 186, 110,
+			16, 14, 72, 37, 50, 6, 35, 55, 65, 35, 89, 49, 40, 55, 6, 126, 50, 111, 0, 101, 0, 6, 195, 88, 241, 193, 15, 6, 195, 65,
+			81, 5, 76, 6, 195, 36, 81, 69, 13, 0, 0, 0, 0, 10, 67, 64, 17, 197, 48, 6, 118, 75, 0, 0, 6, 194, 80, 80, 72, 32,
+			12, 3, 100, 46, 99, 72, 4, 36, 89, 6, 36, 0, 0, 7, 196, 5, 1, 68, 88, 13, 0, 15, 69, 8, 192, 90, 21, 32, 71, 55,
+			6, 118, 88, 36, 34, 0, 0, 0, 7, 196, 21, 53, 15, 84, 72, 0, 6, 195, 88, 18, 64, 76, 7, 196, 64, 244, 162, 52, 102, 0,
+			17, 69, 52, 20, 212, 21, 32, 65, 6, 35, 89, 47, 36, 16, 14, 0, 102, 16, 69, 12, 83, 148, 21, 32, 89, 6, 36, 68, 47, 36,
+			34, 0, 102, 0, 0, 19, 70, 65, 35, 196, 84, 53, 0, 48, 12, 34, 6, 132, 72, 132, 49, 47, 0, 101, 18, 69, 21, 132, 5, 73,
+			64, 109, 49, 89, 48, 6, 109, 16, 14, 47, 0, 102, 6, 194, 81, 80, 76, 32, 0, 10, 67, 12, 243, 64, 49, 39, 65, 0, 101, 9,
+			198, 81, 32, 86, 21, 52, 207, 16, 6, 195, 12, 243, 64, 72, 0, 8, 196, 24, 244, 146, 60, 15, 36, 0, 0, 0, 6, 195, 80, 83,
+			64, 72, 0, 0, 0, 24, 72, 21, 52, 5, 4, 177, 68, 37, 64, 37, 89, 48, 6, 37, 12, 49, 109, 72, 4, 37, 47, 0, 101, 6,
+			195, 64, 147, 210, 15, 0, 11, 67, 48, 240, 203, 55, 6, 110, 49, 0, 101, 0, 0, 0, 0, 8, 197, 80, 16, 133, 24, 80, 15, 8,
+			197, 28, 83, 5, 36, 16, 15, 8, 197, 12, 80, 143, 48, 16, 16, 8, 197, 8, 243, 5, 36, 16, 15, 0, 5, 194, 33, 192, 76, 0,
+			0, 7, 196, 64, 81, 18, 4, 15, 7, 196, 13, 33, 68, 20, 16, 0, 14, 69, 60, 227, 9, 56, 80, 39, 68, 55, 117, 68, 0, 102,
+			8, 197, 88, 20, 133, 80, 16, 16, 8, 197, 81, 35, 195, 32, 16, 16, 8, 197, 64, 244, 145, 84, 80, 16, 8, 197, 4, 99, 15, 72,
+			80, 15, 6, 195, 76, 245, 64, 72, 8, 197, 64, 244, 145, 84, 80, 102, 7, 195, 20, 192, 83, 76, 32, 0, 0, 8, 197, 28, 19, 5,
+			80, 240, 16, 10, 198, 65, 32, 81, 84, 83, 5, 16, 34, 0, 0, 7, 195, 80, 85, 64, 76, 34, 0, 0, 0, 9, 198, 64, 16, 200,
+			20, 51, 192, 16, 5, 194, 84, 80, 13, 0, 10, 67, 25, 83, 139, 83, 129, 68, 49, 0, 0, 10, 199, 28, 17, 129, 56, 131, 212, 60,
+			16, 14, 69, 20, 194, 88, 37, 32, 36, 55, 37, 91, 37, 34, 0, 10, 199, 21, 53, 1, 72, 83, 79, 76, 72, 7, 196, 16, 83, 1,
+			76, 76, 0, 0, 13, 68, 77, 64, 84, 84, 89, 47, 6, 35, 47, 111, 0, 0, 0, 14, 69, 53, 81, 76, 21, 32, 65, 6, 37, 55,
+			36, 34, 0, 0, 16, 69, 92, 147, 132, 61, 112, 58, 6, 37, 68, 72, 39, 58, 0, 102, 17, 69, 92, 147, 132, 61, 112, 58, 6, 37,
+			68, 72, 6, 39, 40, 0, 101, 0, 0, 19, 4, 95, 53, 88, 111, 49, 37, 68, 49, 58, 35, 90, 6, 109, 88, 37, 65, 0, 0, 8,
+			196, 28, 244, 212, 60, 15, 36, 0, 9, 197, 20, 228, 133, 16, 240, 15, 36, 0, 18, 70, 16, 84, 201, 28, 225, 82, 72, 36, 88, 6,
+			117, 50, 36, 34, 0, 102, 0, 0, 0, 9, 197, 5, 65, 82, 72, 240, 15, 36, 8, 197, 5, 65, 82, 72, 240, 16, 0, 7, 195, 12,
+			243, 79, 102, 72, 0, 0, 6, 195, 76, 240, 128, 102, 0, 0, 14, 69, 60, 97, 137, 12, 80, 6, 110, 83, 89, 112, 0, 102, 15, 69,
+			60, 97, 137, 12, 80, 6, 110, 83, 4, 37, 89, 0, 101, 8, 197, 4, 192, 207, 88, 16, 16, 8, 197, 21, 53, 1, 88, 16, 72, 0,
+			0, 7, 195, 81, 80, 64, 76, 34, 0, 7, 196, 76, 241, 210, 4, 15, 12, 68, 72, 85, 86, 4, 101, 6, 137, 84, 132, 0, 7, 196,
+			69, 81, 68, 20, 16, 7, 196, 64, 244, 146, 4, 16, 7, 196, 61, 53, 18, 4, 16, 0, 8, 197, 96, 84, 133, 80, 16, 16, 14, 69,
+			64, 17, 76, 48, 16, 48, 35, 6, 36, 61, 132, 0, 9, 197, 76, 83, 80, 72, 80, 76, 32, 23, 69, 76, 83, 80, 72, 80, 89, 6,
+			36, 68, 48, 34, 37, 49, 135, 0, 102, 81, 113, 117, 101, 32, 9, 197, 5, 21, 69, 48, 16, 76, 34, 0, 0, 9, 197, 52, 241, 5,
+			48, 240, 15, 36, 8, 197, 52, 241, 5, 48, 240, 16, 0, 0, 8, 197, 12, 129, 67, 4, 208, 15, 0, 0, 9, 197, 64, 147, 15, 80,
+			240, 16, 37, 0, 0, 0, 7, 196, 16, 244, 133, 76, 16, 11, 199, 16, 84, 197, 77, 1, 82, 60, 15, 36, 10, 199, 16, 84, 197, 77,
+			1, 82, 60, 16, 10, 199, 12, 20, 130, 85, 33, 84, 60, 16, 13, 4, 95, 226, 136, 146, 65, 6, 36, 50, 111, 89, 0, 0, 0, 0,
+			0, 7, 196, 24, 243, 79, 76, 72, 0, 15, 2, 95, 35, 49, 4, 35, 34, 75, 37, 50, 6, 114, 0, 102, 16, 2, 95, 35, 49, 4,
+			35, 34, 72, 37, 50, 6, 35, 55, 0, 101, 0, 24, 2, 95, 34, 6, 35, 71, 51, 37, 38, 6, 35, 89, 48, 132, 15, 72, 6, 40,
+			48, 55, 132, 138, 0, 11, 2, 95, 34, 6, 35, 89, 48, 132, 138, 0, 0, 14, 2, 95, 33, 91, 49, 55, 132, 65, 35, 89, 6, 130,
+			0, 0, 0, 11, 67, 61, 99, 192, 6, 39, 84, 40, 0, 101, 8, 197, 16, 81, 197, 48, 240, 16, 16, 2, 95, 39, 35, 48, 6, 110,
+			89, 47, 51, 39, 83, 111, 0, 102, 17, 2, 95, 39, 35, 48, 6, 110, 91, 47, 34, 4, 39, 83, 112, 0, 101, 0, 7, 2, 95, 38,
+			6, 36, 0, 0, 0, 9, 198, 80, 149, 162, 72, 82, 83, 72, 12, 2, 95, 36, 89, 4, 37, 83, 51, 6, 130, 0, 0, 8, 197, 72,
+			148, 207, 80, 240, 16, 8, 197, 4, 211, 210, 56, 240, 15, 7, 195, 17, 83, 64, 72, 34, 0, 15, 2, 95, 42, 132, 89, 47, 36, 16,
+			6, 37, 89, 49, 111, 0, 0, 9, 198, 16, 84, 198, 20, 50, 15, 16, 20, 2, 95, 41, 83, 4, 109, 91, 132, 48, 35, 16, 6, 118,
+			68, 47, 36, 88, 112, 0, 0, 10, 199, 4, 84, 143, 64, 244, 148, 60, 16, 20, 2, 95, 40, 4, 35, 71, 51, 37, 48, 35, 16, 6,
+			118, 68, 47, 36, 88, 112, 0, 0, 10, 2, 95, 47, 71, 6, 35, 100, 132, 0, 0, 0, 12, 4, 110, 195, 163, 111, 50, 4, 130, 0,
+			32, 9, 10, 2, 95, 45, 6, 37, 83, 118, 68, 0, 0, 13, 2, 95, 44, 84, 6, 37, 34, 81, 40, 55, 132, 0, 0, 9, 198, 76,
+			16, 143, 56, 85, 5, 16, 9, 198, 64, 19, 1, 12, 85, 5, 16, 9, 198, 12, 243, 3, 32, 85, 5, 16, 9, 198, 8, 19, 145, 84,
+			85, 5, 16, 6, 195, 80, 84, 128, 72, 14, 67, 53, 36, 192, 65, 6, 37, 34, 89, 112, 89, 0, 24, 10, 2, 95, 51, 47, 51, 6,
+			36, 138, 0, 0, 9, 2, 95, 50, 72, 6, 120, 138, 0, 0, 7, 195, 20, 193, 83, 76, 32, 9, 2, 95, 49, 6, 128, 68, 0, 102,
+			9, 2, 95, 49, 6, 40, 65, 0, 101, 0, 7, 196, 9, 33, 74, 60, 15, 11, 2, 95, 48, 88, 6, 109, 16, 111, 0, 102, 11, 2,
+			95, 48, 88, 6, 109, 16, 40, 0, 101, 0, 13, 67, 32, 243, 69, 107, 6, 39, 58, 65, 37, 0, 102, 11, 67, 32, 243, 69, 6, 39,
+			65, 112, 0, 101, 11, 67, 28, 19, 69, 81, 6, 118, 65, 112, 0, 9, 198, 48, 148, 194, 60, 85, 1, 16, 9, 198, 48, 19, 66, 72,
+			85, 1, 16, 9, 198, 12, 19, 73, 76, 85, 1, 16, 9, 197, 4, 51, 195, 32, 240, 16, 37, 11, 2, 95, 55, 89, 6, 109, 76, 112,
+			0, 102, 11, 2, 95, 55, 89, 6, 109, 47, 112, 0, 101, 0, 8, 197, 137, 32, 77, 61, 48, 72, 9, 2, 95, 54, 89, 6, 118, 138,
+			0, 0, 15, 69, 72, 243, 131, 32, 144, 34, 6, 110, 50, 99, 37, 12, 0, 11, 2, 95, 53, 89, 6, 37, 68, 49, 40, 0, 0, 9,
+			198, 65, 35, 199, 72, 19, 64, 15, 8, 196, 52, 243, 8, 60, 16, 37, 13, 2, 95, 52, 49, 58, 6, 35, 47, 51, 40, 0, 102, 13,
+			2, 95, 52, 49, 58, 6, 35, 47, 34, 40, 0, 101, 0, 21, 2, 95, 59, 48, 4, 39, 68, 47, 40, 10, 37, 84, 6, 37, 34, 81,
+			40, 55, 132, 0, 0, 9, 198, 20, 208, 143, 72, 51, 192, 15, 16, 2, 95, 58, 72, 4, 120, 89, 48, 6, 39, 68, 47, 40, 89, 0,
+			0, 11, 68, 24, 192, 83, 32, 83, 55, 109, 91, 0, 10, 2, 95, 57, 50, 6, 110, 84, 112, 0, 0, 9, 2, 95, 56, 6, 120, 47,
+			40, 0, 0, 18, 2, 95, 63, 4, 37, 68, 47, 36, 101, 4, 39, 81, 35, 89, 6, 130, 0, 0, 9, 198, 48, 144, 207, 72, 84, 192,
+			16, 10, 2, 95, 62, 65, 117, 6, 110, 34, 0, 0, 11, 2, 95, 61, 37, 81, 58, 6, 114, 0, 102, 12, 2, 95, 61, 37, 81, 58,
+			6, 35, 55, 0, 101, 0, 11, 2, 95, 60, 65, 36, 50, 6, 110, 34, 0, 0, 6, 195, 16, 86, 128, 15, 6, 195, 24, 22, 128, 76,
+			7, 196, 21, 53, 1, 72, 72, 0, 0, 18, 4, 95, 54, 88, 111, 89, 36, 49, 89, 35, 90, 6, 109, 88, 37, 65, 0, 0, 7, 196,
+			28, 84, 211, 60, 16, 0, 8, 197, 12, 21, 5, 80, 240, 16, 0, 0, 9, 198, 65, 34, 77, 61, 33, 83, 16, 9, 198, 25, 83, 7,
+			61, 33, 83, 16, 9, 198, 12, 192, 77, 61, 33, 83, 16, 0, 10, 198, 69, 80, 76, 69, 81, 82, 72, 34, 0, 9, 197, 21, 49, 207,
+			80, 240, 15, 36, 8, 197, 21, 49, 207, 80, 240, 16, 0, 0, 10, 67, 46, 178, 12, 49, 6, 37, 55, 0, 0, 0, 7, 195, 20, 192,
+			64, 76, 32, 6, 195, 36, 48, 192, 13, 0, 0, 0, 0, 6, 195, 85, 48, 128, 13, 6, 195, 56, 32, 64, 13, 0, 8, 196, 57, 83,
+			131, 4, 76, 32, 0, 11, 136, 101, 115, 116, 97, 114, 195, 163, 111, 72, 0, 0, 12, 67, 80, 147, 69, 47, 6, 117, 65, 112, 0, 101,
+			12, 67, 20, 193, 64, 6, 36, 55, 112, 0, 76, 32, 0, 16, 70, 72, 144, 200, 5, 33, 0, 101, 6, 37, 91, 132, 34, 72, 0, 10,
+			198, 5, 36, 143, 12, 131, 192, 16, 37, 0, 14, 68, 96, 84, 143, 96, 91, 6, 109, 16, 110, 49, 89, 0, 0, 0, 6, 195, 82, 51,
+			64, 72, 6, 195, 20, 49, 192, 13, 18, 2, 95, 91, 4, 35, 71, 51, 37, 49, 39, 58, 91, 6, 36, 76, 37, 0, 0, 0, 7, 195,
+			80, 244, 15, 16, 37, 0, 7, 66, 88, 144, 84, 37, 0, 0, 15, 69, 48, 20, 197, 73, 48, 55, 6, 118, 88, 36, 34, 89, 0, 16,
+			2, 95, 95, 89, 4, 40, 71, 55, 37, 67, 6, 35, 72, 40, 0, 0, 19, 2, 95, 94, 89, 4, 37, 34, 49, 128, 68, 83, 55, 6,
+			109, 49, 89, 40, 0, 0, 6, 195, 12, 240, 207, 16, 18, 2, 95, 93, 83, 4, 109, 91, 132, 49, 39, 58, 91, 6, 36, 76, 37, 0,
+			0, 16, 5, 95, 49, 77, 49, 111, 65, 37, 55, 6, 109, 88, 37, 65, 0, 21, 2, 95, 92, 71, 4, 35, 101, 132, 4, 37, 68, 84,
+			36, 34, 76, 6, 37, 72, 132, 0, 0, 8, 197, 80, 245, 5, 57, 48, 15, 8, 197, 64, 244, 131, 61, 48, 15, 9, 134, 116, 101, 114,
+			195, 163, 111, 72, 6, 195, 24, 34, 64, 13, 0, 0, 6, 2, 95, 97, 35, 0, 12, 3, 95, 97, 114, 6, 35, 16, 35, 71, 112, 0,
+			0, 11, 67, 40, 22, 154, 75, 124, 109, 89, 0, 102, 11, 2, 95, 96, 81, 51, 6, 35, 84, 37, 0, 0, 0, 9, 198, 20, 225, 207,
+			72, 67, 192, 15, 10, 199, 12, 243, 147, 81, 35, 197, 52, 15, 7, 196, 24, 22, 133, 52, 76, 0, 9, 198, 81, 33, 77, 61, 33, 83,
+			16, 10, 198, 64, 83, 136, 61, 33, 83, 16, 37, 9, 198, 32, 244, 146, 61, 33, 83, 16, 10, 198, 12, 243, 8, 21, 33, 83, 15, 37,
+			6, 2, 95, 101, 109, 0, 0, 12, 201, 72, 80, 207, 57, 53, 18, 60, 83, 64, 15, 0, 0, 10, 198, 20, 228, 143, 76, 51, 192, 16,
+			37, 9, 198, 20, 225, 143, 72, 51, 192, 15, 0, 0, 0, 6, 2, 95, 111, 110, 0, 16, 67, 76, 244, 192, 4, 109, 89, 57, 4, 110,
+			6, 109, 89, 0, 101, 0, 13, 68, 77, 65, 86, 20, 89, 47, 6, 37, 12, 84, 0, 0, 7, 132, 118, 195, 163, 111, 76, 0, 13, 3,
+			95, 104, 101, 36, 71, 16, 6, 117, 49, 111, 0, 0, 0, 0, 6, 195, 84, 229, 19, 13, 13, 4, 95, 104, 97, 99, 49, 35, 16, 6,
+			39, 68, 0, 0, 12, 68, 77, 1, 65, 44, 89, 48, 37, 12, 49, 0, 9, 198, 64, 243, 80, 20, 144, 64, 15, 9, 198, 64, 192, 84,
+			20, 144, 64, 15, 9, 198, 21, 3, 208, 20, 144, 64, 15, 9, 198, 12, 243, 13, 20, 144, 64, 15, 9, 198, 80, 241, 1, 88, 144, 64,
+			102, 0, 9, 198, 29, 35, 211, 20, 194, 1, 15, 0, 0, 9, 198, 12, 84, 133, 8, 83, 15, 16, 0, 0, 15, 2, 95, 123, 4, 35,
+			71, 51, 37, 91, 6, 35, 84, 37, 0, 0, 0, 0, 7, 196, 48, 244, 5, 76, 15, 6, 194, 84, 208, 72, 34, 0, 0, 9, 2, 95,
+			126, 76, 6, 116, 0, 102, 10, 2, 95, 126, 47, 6, 37, 55, 0, 101, 0, 15, 2, 95, 125, 83, 4, 109, 91, 132, 91, 6, 35, 84,
+			37, 0, 0, 20, 2, 95, 124, 71, 4, 35, 101, 132, 84, 4, 36, 34, 76, 37, 49, 6, 114, 0, 102, 21, 2, 95, 124, 71, 4, 35,
+			101, 132, 84, 4, 36, 34, 76, 37, 49, 6, 35, 55, 0, 101, 0, 18, 70, 24, 148, 133, 24, 246, 0, 83, 6, 35, 37, 13, 83, 110,
+			49, 89, 0, 8, 197, 80, 83, 132, 21, 48, 72, 0, 0, 9, 5, 95, 48, 97, 110, 100, 37, 0, 0, 7, 196, 52, 241, 206, 60, 15,
+			0, 0, 10, 198, 12, 243, 147, 60, 195, 192, 16, 37, 0, 9, 198, 21, 129, 71, 21, 49, 83, 15, 0, 11, 67, 16, 245, 206, 72, 6,
+			114, 68, 0, 102, 13, 67, 16, 245, 206, 72, 6, 35, 4, 58, 50, 0, 101, 0, 17, 71, 32, 82, 68, 20, 113, 197, 72, 107, 6, 117,
+			72, 36, 81, 36, 0, 0, 9, 198, 52, 244, 131, 20, 115, 192, 16, 0, 21, 72, 61, 1, 78, 60, 97, 137, 12, 80, 6, 39, 48, 118,
+			68, 6, 110, 83, 37, 89, 0, 0, 0, 11, 199, 69, 80, 73, 77, 21, 69, 72, 72, 34, 0, 7, 196, 81, 35, 208, 4, 15, 0, 0,
+			9, 198, 56, 20, 85, 20, 192, 64, 34, 9, 198, 52, 19, 143, 64, 192, 64, 15, 9, 198, 21, 53, 18, 20, 192, 64, 16, 9, 198, 8,
+			18, 84, 60, 192, 64, 16, 10, 198, 16, 20, 85, 20, 192, 64, 76, 34, 0, 12, 67, 21, 48, 192, 6, 109, 89, 49, 124, 0, 103, 11,
+			67, 21, 48, 192, 6, 109, 89, 49, 0, 102, 6, 195, 21, 64, 64, 16, 12, 200, 16, 84, 197, 53, 4, 133, 28, 240, 15, 36, 11, 200,
+			16, 84, 197, 53, 4, 133, 28, 240, 16, 0, 0, 0, 0, 17, 5, 101, 110, 103, 194, 170, 118, 50, 90, 36, 67, 6, 118, 16, 132, 0,
+			0, 0, 0, 16, 69, 44, 84, 142, 20, 192, 49, 6, 109, 34, 50, 13, 55, 0, 102, 17, 69, 44, 84, 142, 20, 192, 49, 6, 109, 34,
+			50, 4, 109, 55, 0, 101, 14, 4, 95, 35, 51, 50, 91, 48, 6, 35, 89, 111, 0, 101, 14, 4, 95, 35, 51, 50, 36, 89, 48, 6,
+			35, 89, 111, 0, 0, 6, 195, 72, 244, 197, 16, 0, 12, 68, 32, 20, 16, 100, 101, 6, 109, 48, 112, 0, 0, 0, 7, 196, 64, 84,
+			133, 76, 15, 8, 196, 12, 244, 133, 76, 15, 36, 7, 196, 12, 244, 133, 76, 16, 0, 9, 198, 28, 19, 9, 48, 82, 65, 15, 9, 198,
+			21, 84, 143, 64, 82, 65, 15, 0, 18, 70, 92, 147, 132, 61, 116, 192, 58, 6, 37, 68, 72, 39, 58, 89, 0, 102, 20, 70, 92, 147,
+			132, 61, 116, 192, 58, 6, 37, 68, 72, 6, 39, 40, 12, 88, 0, 101, 9, 198, 96, 84, 143, 96, 84, 192, 15, 9, 198, 80, 83, 79,
+			72, 84, 192, 16, 9, 198, 4, 49, 82, 80, 244, 192, 16, 0, 7, 195, 90, 116, 192, 76, 32, 7, 195, 58, 116, 192, 76, 32, 0, 7,
+			196, 24, 86, 133, 76, 15, 7, 196, 76, 243, 79, 76, 72, 0, 0, 0, 0, 0, 13, 68, 48, 241, 201, 56, 55, 39, 81, 37, 68, 0,
+			102, 17, 5, 101, 110, 103, 194, 186, 118, 50, 90, 36, 67, 6, 118, 16, 111, 0, 0, 13, 68, 54, 179, 5, 72, 65, 6, 37, 55, 36,
+			34, 0, 0, 0, 11, 199, 12, 243, 148, 72, 243, 5, 76, 15, 36, 10, 199, 12, 243, 148, 72, 243, 5, 76, 16, 0, 19, 71, 48, 21,
+			143, 37, 50, 69, 72, 55, 35, 84, 58, 35, 88, 57, 6, 36, 0, 0, 16, 69, 56, 83, 19, 60, 224, 50, 6, 109, 55, 89, 132, 68,
+			0, 101, 0, 24, 73, 61, 4, 5, 56, 129, 73, 52, 84, 128, 11, 6, 110, 48, 13, 50, 107, 4, 117, 65, 35, 34, 0, 7, 195, 21,
+			36, 143, 15, 36, 6, 195, 21, 36, 143, 16, 0, 0, 6, 195, 37, 52, 192, 13, 0, 0, 0, 0, 0, 0, 8, 197, 8, 244, 209, 84,
+			80, 15, 0, 8, 196, 5, 1, 76, 60, 16, 37, 0, 14, 67, 21, 53, 5, 6, 36, 89, 76, 112, 0, 102, 76, 34, 6, 195, 13, 5,
+			64, 13, 0, 0, 17, 70, 56, 85, 2, 60, 242, 211, 50, 109, 47, 71, 111, 49, 89, 0, 102, 0, 0, 0, 0, 0, 7, 196, 64, 84,
+			197, 76, 15, 0, 0, 9, 198, 80, 83, 143, 72, 84, 192, 16, 10, 198, 4, 193, 213, 52, 20, 192, 72, 37, 9, 198, 80, 84, 133, 52,
+			244, 192, 72, 9, 198, 76, 84, 133, 52, 244, 192, 72, 0, 14, 68, 76, 208, 82, 80, 89, 65, 6, 35, 34, 47, 0, 101, 11, 200, 88,
+			84, 130, 61, 36, 133, 36, 16, 15, 0, 7, 196, 40, 241, 207, 76, 15, 0, 9, 198, 16, 84, 212, 72, 241, 77, 15, 0, 15, 69, 64,
+			192, 89, 21, 32, 48, 55, 6, 118, 132, 44, 0, 101, 0, 17, 4, 95, 56, 88, 111, 39, 49, 47, 39, 90, 6, 109, 88, 37, 65, 0,
+			0, 0, 0, 10, 67, 52, 18, 76, 65, 6, 118, 55, 0, 17, 67, 13, 68, 140, 49, 6, 39, 68, 47, 12, 34, 4, 110, 55, 0, 101,
+			0, 0, 0, 7, 196, 20, 68, 207, 56, 15, 0, 0, 0, 0, 7, 195, 84, 208, 64, 72, 34, 0, 16, 70, 76, 131, 208, 36, 225, 192,
+			91, 6, 110, 48, 37, 68, 0, 102, 14, 68, 64, 21, 83, 20, 48, 6, 35, 40, 12, 88, 0, 101, 7, 196, 76, 84, 137, 4, 72, 0,
+			6, 195, 12, 20, 207, 102, 0, 0, 0, 11, 68, 76, 128, 75, 20, 91, 6, 118, 49, 0, 0, 17, 70, 61, 85, 4, 60, 244, 147, 114,
+			47, 72, 6, 110, 34, 89, 0, 102, 7, 195, 17, 83, 147, 72, 34, 12, 67, 8, 147, 211, 71, 6, 37, 4, 110, 91, 0, 0, 16, 70,
+			85, 1, 210, 4, 65, 64, 132, 48, 81, 51, 6, 118, 72, 0, 16, 70, 60, 97, 140, 36, 225, 64, 110, 83, 55, 6, 117, 68, 0, 102,
+			17, 70, 9, 32, 73, 48, 193, 64, 71, 51, 6, 35, 37, 55, 37, 0, 102, 18, 70, 9, 32, 73, 48, 193, 64, 71, 12, 34, 6, 35,
+			37, 55, 112, 0, 101, 7, 196, 80, 244, 146, 60, 15, 10, 198, 56, 20, 85, 20, 193, 64, 16, 34, 8, 196, 16, 240, 146, 60, 15, 36,
+			7, 196, 16, 240, 146, 60, 16, 10, 198, 16, 20, 85, 20, 193, 64, 16, 34, 0, 0, 0, 0, 7, 196, 80, 83, 136, 60, 72, 0, 10,
+			67, 8, 197, 69, 71, 55, 40, 0, 102, 7, 196, 64, 248, 15, 76, 15, 6, 195, 64, 244, 197, 16, 14, 67, 21, 53, 1, 6, 109, 89,
+			47, 132, 0, 102, 76, 34, 0, 0, 0, 12, 201, 65, 35, 211, 61, 3, 208, 20, 144, 64, 15, 0, 0, 0, 7, 195, 64, 84, 207, 15,
+			36, 0, 15, 69, 80, 16, 140, 21, 64, 47, 6, 35, 71, 55, 36, 47, 0, 0, 0, 0, 19, 70, 16, 84, 203, 80, 244, 19, 72, 36,
+			89, 49, 47, 6, 110, 48, 89, 0, 102, 0, 7, 196, 12, 244, 148, 60, 15, 0, 0, 0, 23, 73, 64, 192, 89, 77, 64, 84, 36, 243,
+			128, 48, 55, 118, 89, 47, 6, 118, 91, 129, 68, 0, 102, 15, 73, 64, 192, 89, 77, 64, 84, 36, 243, 128, 21, 0, 101, 47, 0, 0,
+			12, 200, 16, 84, 195, 60, 228, 207, 48, 240, 16, 37, 0, 0, 0, 0, 0, 7, 196, 4, 209, 66, 4, 15, 0, 17, 69, 72, 80, 68,
+			52, 80, 34, 6, 37, 12, 72, 65, 37, 12, 0, 101, 8, 197, 52, 244, 133, 36, 16, 15, 8, 197, 12, 244, 133, 36, 16, 15, 8, 197,
+			5, 3, 133, 36, 16, 15, 8, 197, 4, 212, 15, 48, 16, 16, 0, 0, 0, 10, 199, 12, 244, 212, 20, 193, 84, 4, 16, 10, 199, 12,
+			128, 80, 20, 193, 84, 4, 16, 10, 199, 12, 20, 146, 5, 1, 84, 4, 16, 10, 199, 12, 17, 5, 72, 225, 84, 4, 16, 10, 199, 4,
+			212, 21, 48, 129, 84, 4, 16, 0, 8, 197, 88, 147, 5, 80, 16, 16, 8, 197, 72, 243, 5, 80, 16, 16, 8, 197, 53, 84, 133, 80,
+			16, 16, 9, 197, 24, 193, 82, 80, 80, 16, 37, 8, 197, 21, 84, 143, 64, 16, 15, 8, 197, 9, 80, 197, 80, 16, 16, 0, 9, 196,
+			56, 244, 211, 60, 102, 76, 34, 0, 8, 197, 5, 97, 83, 76, 240, 16, 12, 3, 95, 122, 104, 91, 37, 50, 6, 36, 89, 0, 0, 0,
+			7, 195, 84, 208, 83, 72, 34, 0, 0, 7, 195, 52, 85, 64, 76, 34, 0, 0, 9, 198, 12, 245, 15, 88, 83, 15, 16, 0, 9, 198,
+			21, 53, 1, 72, 82, 64, 72, 0, 6, 195, 52, 241, 77, 15, 0, 8, 197, 52, 83, 8, 61, 32, 15, 0, 7, 195, 72, 81, 207, 16,
+			37, 0, 0, 0, 8, 197, 5, 1, 83, 5, 32, 102, 0, 17, 4, 95, 57, 88, 111, 50, 39, 50, 35, 90, 6, 109, 88, 37, 65, 0,
+			0, 0, 0, 17, 70, 8, 84, 142, 32, 20, 132, 71, 36, 34, 50, 6, 35, 34, 72, 0, 6, 195, 4, 68, 204, 13, 0, 6, 18, 66,
+			97, 109, 0, 97, 0, 7, 6, 18, 67, 101, 109, 0, 101, 0, 7, 6, 18, 68, 97, 109, 0, 97, 0, 111, 0, 7, 6, 18, 69, 117,
+			101, 109, 0, 97, 109, 0, 101, 109, 0, 117, 101, 0, 97, 0, 101, 0, 111, 0, 7, 6, 18, 70, 114, 97, 109, 0, 114, 101, 109, 0,
+			114, 100, 101, 0, 114, 109, 111, 0, 114, 97, 0, 114, 101, 0, 114, 0, 7, 6, 18, 71, 115, 115, 101, 109, 0, 114, 97, 109, 0, 115,
+			116, 101, 0, 115, 115, 101, 0, 114, 101, 109, 0, 114, 109, 111, 0, 114, 97, 0, 114, 101, 0, 114, 0, 7, 6, 18, 72, 115, 115, 101,
+			109, 0, 115, 115, 101, 0, 115, 116, 101, 0, 7, 6, 195, 160, 0, 4, 115, 5, 2, 8, 2, 32, 17, 70, 3, 4, 35, 12, 88, 0,
+			115, 8, 2, 32, 17, 65, 0, 115, 5, 2, 8, 2, 32, 3, 4, 35, 12, 89, 0, 115, 5, 1, 8, 2, 32, 17, 70, 3, 4, 35,
+			12, 90, 0, 115, 5, 1, 8, 2, 32, 3, 4, 35, 12, 91, 0, 3, 35, 0, 4, 2, 109, 3, 129, 0, 2, 110, 0, 109, 2, 25,
+			3, 129, 65, 0, 110, 104, 2, 17, 65, 3, 129, 67, 0, 110, 2, 25, 3, 129, 68, 0, 7, 6, 195, 161, 0, 4, 3, 7, 35, 0,
+			2, 105, 17, 67, 25, 0, 2, 117, 17, 67, 25, 0, 4, 108, 2, 17, 66, 3, 7, 114, 0, 117, 0, 117, 2, 115, 0, 4, 105, 3,
+			7, 117, 0, 105, 2, 115, 0, 121, 0, 108, 5, 1, 3, 7, 134, 55, 0, 7, 6, 195, 162, 0, 4, 2, 109, 3, 7, 129, 0, 2,
+			110, 0, 109, 2, 25, 3, 7, 129, 65, 0, 110, 104, 3, 7, 129, 67, 0, 110, 2, 25, 3, 7, 129, 68, 0, 3, 7, 132, 0, 7,
+			6, 195, 163, 0, 3, 129, 0, 111, 3, 130, 0, 7, 6, 195, 169, 0, 4, 3, 7, 109, 0, 2, 105, 17, 67, 25, 0, 2, 117, 17,
+			67, 25, 0, 121, 3, 7, 118, 0, 4, 109, 2, 32, 3, 7, 118, 68, 0, 109, 2, 115, 32, 0, 110, 2, 32, 0, 110, 2, 115, 32,
+			0, 4, 105, 3, 7, 119, 0, 105, 2, 115, 0, 4, 108, 2, 17, 66, 3, 7, 137, 0, 117, 0, 117, 2, 115, 0, 7, 6, 195, 170,
+			0, 3, 7, 36, 0, 110, 104, 3, 7, 36, 67, 0, 117, 3, 7, 115, 0, 109, 2, 17, 67, 3, 7, 118, 65, 0, 4, 109, 2, 32,
+			3, 7, 118, 68, 0, 110, 2, 25, 0, 7, 6, 195, 173, 0, 4, 3, 7, 37, 0, 2, 109, 0, 2, 110, 0, 109, 2, 17, 67, 3,
+			7, 37, 65, 0, 110, 104, 3, 7, 37, 67, 0, 4, 109, 2, 32, 3, 7, 37, 68, 0, 110, 2, 25, 0, 108, 2, 17, 66, 3, 7,
+			124, 111, 0, 7, 6, 195, 177, 0, 8, 2, 32, 3, 6, 36, 50, 57, 109, 0, 5, 1, 8, 2, 32, 3, 36, 50, 36, 47, 37, 55,
+			0, 3, 67, 0, 7, 6, 195, 179, 0, 4, 3, 7, 110, 0, 2, 105, 17, 67, 25, 0, 117, 3, 7, 110, 58, 0, 4, 105, 3, 7,
+			136, 0, 105, 2, 115, 0, 121, 0, 7, 6, 195, 180, 0, 3, 7, 39, 0, 109, 2, 17, 67, 3, 7, 39, 65, 0, 110, 104, 3, 7,
+			39, 67, 0, 4, 109, 2, 32, 3, 7, 39, 68, 0, 110, 2, 25, 0, 7, 6, 195, 181, 0, 3, 127, 0, 101, 3, 127, 57, 0, 7,
+			6, 195, 186, 0, 3, 7, 40, 0, 4, 109, 2, 17, 65, 3, 7, 128, 65, 0, 109, 2, 17, 67, 0, 110, 104, 3, 7, 128, 67, 0,
+			4, 109, 2, 32, 3, 7, 128, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 25, 0, 7, 6, 97, 0, 5, 1, 2, 108, 25, 3,
+			4, 134, 0, 8, 2, 32, 31, 3, 6, 35, 0, 99, 195, 167, 5, 1, 1, 17, 67, 3, 6, 35, 6, 89, 0, 116, 105, 111, 110, 2,
+			32, 3, 6, 118, 91, 129, 68, 0, 5, 1, 2, 108, 32, 3, 6, 134, 0, 5, 1, 1, 112, 2, 100, 32, 3, 8, 109, 0, 109, 2,
+			32, 3, 8, 129, 68, 0, 109, 2, 32, 3, 8, 130, 0, 4, 1, 10, 2, 32, 3, 8, 132, 0, 1, 10, 2, 115, 32, 0, 5, 1,
+			2, 32, 0, 5, 1, 2, 115, 32, 0, 4, 1, 10, 2, 32, 195, 160, 3, 8, 133, 0, 5, 1, 2, 32, 97, 0, 5, 1, 2, 32,
+			195, 160, 0, 4, 3, 35, 0, 2, 105, 17, 67, 25, 0, 2, 105, 117, 32, 0, 2, 108, 104, 12, 0, 2, 108, 108, 12, 0, 8, 2,
+			32, 0, 4, 108, 5, 2, 2, 25, 3, 114, 0, 111, 2, 32, 0, 117, 0, 117, 2, 17, 67, 25, 0, 117, 2, 115, 0, 4, 105, 3,
+			117, 0, 105, 2, 115, 0, 121, 0, 4, 2, 109, 3, 129, 0, 2, 110, 0, 2, 195, 177, 0, 109, 2, 17, 67, 3, 129, 65, 0, 110,
+			104, 2, 17, 65, 3, 129, 67, 0, 4, 109, 5, 4, 2, 17, 67, 3, 129, 68, 0, 110, 2, 25, 12, 0, 4, 1, 17, 66, 162, 195,
+			2, 17, 67, 21, 3, 132, 0, 1, 17, 66, 180, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 66, 162, 195, 2, 17, 67, 21, 0, 1,
+			17, 67, 17, 66, 180, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 161, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 169, 195,
+			2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 170, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 173, 195, 2, 17, 67, 21, 0, 1,
+			17, 67, 17, 67, 179, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 186, 195, 2, 17, 67, 21, 0, 1, 17, 67, 161, 195, 2, 17,
+			67, 21, 0, 1, 17, 67, 169, 195, 2, 17, 67, 21, 0, 1, 17, 67, 170, 195, 2, 17, 67, 21, 0, 1, 17, 67, 173, 195, 2, 17,
+			67, 21, 0, 1, 17, 67, 179, 195, 2, 17, 67, 21, 0, 1, 17, 67, 186, 195, 2, 17, 67, 21, 0, 1, 108, 32, 17, 65, 2, 32,
+			0, 1, 173, 195, 2, 17, 67, 17, 65, 32, 0, 2, 109, 17, 65, 21, 0, 2, 109, 17, 65, 114, 32, 0, 2, 110, 17, 65, 21, 0,
+			2, 110, 17, 65, 114, 32, 0, 8, 114, 102, 110, 105, 2, 115, 115, 111, 0, 8, 114, 102, 110, 105, 2, 118, 101, 114, 109, 101, 108, 104,
+			111, 0, 8, 114, 116, 108, 117, 2, 108, 101, 118, 101, 32, 0, 8, 114, 116, 108, 117, 2, 115, 115, 111, 0, 8, 114, 116, 108, 117, 2,
+			118, 105, 111, 108, 101, 116, 97, 32, 0, 7, 6, 98, 0, 2, 98, 3, 0, 4, 3, 71, 0, 5, 3, 2, 115, 0, 5, 3, 2, 32,
+			17, 67, 3, 71, 10, 0, 8, 2, 32, 3, 71, 36, 0, 5, 3, 2, 17, 66, 3, 71, 124, 0, 7, 6, 99, 0, 5, 1, 2, 99,
+			3, 0, 116, 5, 1, 1, 17, 65, 3, 47, 0, 4, 3, 49, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0, 107, 0, 5, 3, 2,
+			32, 17, 67, 3, 49, 10, 0, 116, 5, 1, 1, 97, 116, 110, 111, 99, 2, 17, 65, 3, 49, 47, 0, 104, 114, 3, 49, 51, 0, 5,
+			3, 2, 17, 66, 3, 49, 124, 0, 4, 2, 17, 71, 3, 89, 0, 195, 167, 5, 1, 1, 17, 65, 0, 8, 2, 32, 3, 89, 36, 0,
+			104, 3, 91, 0, 7, 6, 100, 0, 2, 100, 3, 0, 3, 72, 0, 5, 3, 2, 32, 17, 67, 3, 72, 10, 0, 8, 2, 32, 3, 72,
+			36, 0, 4, 5, 2, 2, 101, 32, 3, 75, 0, 5, 2, 2, 105, 0, 5, 2, 2, 195, 173, 0, 101, 5, 2, 1, 17, 65, 2, 111,
+			32, 3, 75, 57, 0, 5, 3, 2, 17, 66, 3, 75, 124, 0, 7, 6, 101, 0, 4, 5, 1, 1, 100, 2, 110, 17, 67, 17, 65, 17,
 			65, 3, 4, 36, 0, 5, 1, 1, 100, 2, 110, 17, 67, 17, 65, 17, 67, 17, 65, 0, 5, 1, 1, 100, 2, 110, 17, 67, 17, 65,
 			17, 67, 17, 67, 17, 65, 0, 4, 5, 1, 1, 17, 67, 2, 99, 17, 67, 3, 4, 109, 0, 5, 1, 1, 112, 105, 104, 2, 114, 0,
 			5, 1, 1, 112, 117, 115, 2, 114, 0, 5, 1, 1, 114, 2, 108, 118, 97, 0, 5, 1, 1, 118, 2, 108, 32, 0, 5, 1, 8, 109,
 			2, 103, 97, 0, 5, 1, 8, 116, 110, 105, 2, 114, 110, 0, 5, 1, 1, 17, 67, 2, 111, 3, 6, 37, 0, 4, 5, 1, 1, 108,
-			2, 116, 97, 3, 6, 109, 0, 5, 1, 1, 110, 2, 116, 0, 5, 1, 2, 108, 32, 0, 5, 1, 2, 108, 97, 32, 0, 99, 195, 167,
-			5, 1, 1, 17, 67, 3, 6, 109, 6, 89, 0, 4, 5, 2, 1, 108, 10, 2, 32, 17, 65, 24, 3, 8, 37, 0, 5, 2, 1, 114,
-			10, 2, 32, 17, 65, 24, 0, 4, 2, 32, 3, 8, 112, 0, 2, 115, 32, 0, 4, 109, 2, 32, 3, 8, 118, 68, 0, 109, 2, 115,
-			32, 0, 110, 2, 32, 0, 110, 2, 115, 32, 0, 4, 5, 1, 2, 32, 105, 24, 3, 8, 135, 0, 5, 2, 2, 32, 17, 65, 24, 0,
-			4, 3, 36, 0, 1, 100, 101, 2, 114, 17, 65, 109, 32, 0, 1, 100, 111, 112, 2, 114, 17, 65, 32, 0, 1, 104, 2, 103, 17, 65,
-			32, 0, 1, 104, 2, 103, 17, 65, 109, 32, 0, 1, 110, 17, 65, 2, 116, 17, 65, 32, 0, 1, 114, 2, 99, 104, 111, 32, 0, 1,
-			116, 2, 118, 101, 32, 0, 1, 122, 97, 103, 2, 116, 97, 32, 0, 2, 105, 17, 67, 25, 0, 2, 108, 104, 12, 0, 2, 108, 111, 32,
-			0, 2, 117, 17, 67, 25, 0, 2, 118, 105, 32, 0, 2, 118, 195, 170, 32, 0, 8, 100, 97, 112, 2, 195, 167, 18, 68, 32, 0, 8,
-			100, 101, 98, 111, 2, 195, 167, 18, 68, 32, 0, 8, 100, 105, 97, 118, 110, 101, 2, 195, 167, 18, 68, 32, 0, 8, 102, 2, 114, 118,
-			18, 68, 32, 0, 8, 104, 110, 111, 99, 101, 114, 2, 195, 167, 18, 68, 32, 0, 8, 108, 101, 98, 109, 101, 2, 122, 18, 66, 32, 0,
-			8, 109, 2, 116, 18, 68, 32, 0, 8, 109, 98, 117, 115, 2, 116, 18, 68, 32, 0, 8, 109, 101, 114, 2, 116, 18, 68, 32, 0, 8,
-			109, 111, 99, 2, 116, 18, 68, 32, 0, 8, 109, 111, 114, 112, 2, 116, 18, 68, 32, 0, 8, 109, 111, 114, 112, 109, 111, 99, 2, 116,
-			18, 68, 32, 0, 8, 111, 100, 97, 2, 195, 167, 18, 68, 32, 0, 8, 114, 97, 99, 2, 195, 167, 18, 68, 32, 0, 8, 114, 97, 108,
-			99, 115, 101, 2, 195, 167, 18, 68, 32, 0, 8, 114, 97, 112, 97, 101, 114, 2, 195, 167, 18, 68, 32, 0, 8, 114, 97, 112, 97, 115,
-			101, 100, 2, 195, 167, 18, 68, 32, 0, 8, 114, 97, 112, 109, 111, 99, 2, 195, 167, 18, 68, 32, 0, 8, 114, 99, 115, 101, 2, 118,
-			18, 68, 32, 0, 8, 114, 99, 115, 101, 100, 2, 118, 18, 68, 32, 0, 8, 114, 101, 102, 111, 2, 195, 167, 18, 68, 32, 0, 8, 114,
-			101, 109, 2, 195, 167, 18, 68, 32, 0, 8, 114, 101, 112, 2, 195, 167, 18, 68, 32, 0, 8, 114, 114, 101, 100, 2, 116, 18, 68, 32,
-			0, 8, 114, 114, 111, 98, 97, 2, 195, 167, 18, 68, 32, 0, 8, 114, 116, 97, 2, 118, 18, 68, 32, 0, 8, 116, 110, 111, 99, 97,
-			2, 195, 167, 18, 66, 32, 0, 8, 117, 113, 97, 2, 195, 167, 18, 68, 32, 0, 8, 117, 113, 97, 114, 102, 110, 101, 2, 195, 167, 18,
-			68, 32, 0, 8, 117, 113, 105, 114, 110, 101, 2, 195, 167, 18, 68, 32, 0, 8, 117, 113, 115, 101, 2, 195, 167, 18, 68, 32, 0, 8,
-			118, 110, 105, 2, 114, 116, 18, 68, 32, 0, 101, 120, 8, 114, 2, 17, 65, 3, 36, 36, 88, 0, 110, 104, 3, 36, 67, 0, 4, 5,
-			1, 1, 17, 67, 2, 97, 3, 37, 0, 5, 1, 1, 17, 67, 2, 195, 163, 0, 5, 1, 1, 17, 67, 2, 195, 186, 0, 5, 1, 2,
-			101, 0, 5, 1, 8, 2, 102, 0, 5, 1, 8, 110, 2, 110, 104, 117, 0, 5, 1, 1, 163, 195, 17, 67, 3, 57, 0, 115, 5, 1,
-			8, 2, 17, 67, 21, 21, 3, 91, 0, 4, 1, 98, 105, 2, 114, 17, 65, 32, 3, 109, 0, 1, 98, 105, 2, 114, 17, 65, 109, 32,
-			0, 1, 100, 2, 114, 17, 65, 32, 0, 1, 100, 2, 114, 17, 65, 109, 32, 0, 1, 105, 2, 114, 32, 0, 1, 106, 2, 116, 17, 65,
-			32, 0, 1, 106, 2, 116, 17, 65, 109, 32, 0, 1, 109, 2, 114, 17, 65, 32, 0, 1, 112, 115, 2, 114, 17, 65, 32, 0, 1, 112,
-			115, 2, 114, 17, 65, 109, 32, 0, 1, 115, 21, 2, 114, 17, 65, 32, 0, 1, 115, 21, 2, 114, 17, 65, 109, 32, 0, 1, 115, 21,
-			2, 114, 32, 0, 1, 117, 2, 114, 32, 0, 1, 117, 113, 2, 98, 114, 18, 69, 32, 0, 1, 118, 2, 108, 104, 17, 65, 32, 0, 1,
-			118, 105, 2, 114, 17, 65, 109, 32, 0, 2, 98, 101, 32, 0, 2, 98, 101, 109, 32, 0, 2, 99, 97, 32, 0, 2, 99, 101, 32, 0,
-			2, 99, 101, 109, 32, 0, 2, 99, 104, 17, 65, 32, 0, 2, 99, 104, 17, 65, 109, 32, 0, 2, 99, 108, 17, 65, 32, 0, 2, 99,
-			108, 17, 65, 109, 32, 0, 2, 99, 111, 32, 0, 2, 99, 116, 17, 65, 32, 0, 2, 99, 116, 17, 65, 109, 32, 0, 2, 100, 101, 32,
-			0, 2, 100, 101, 109, 32, 0, 2, 102, 97, 32, 0, 2, 103, 17, 65, 32, 0, 2, 103, 17, 65, 109, 32, 0, 2, 103, 114, 17, 65,
-			32, 0, 2, 103, 114, 17, 65, 109, 32, 0, 2, 103, 117, 101, 32, 0, 2, 103, 117, 101, 109, 32, 0, 2, 108, 17, 65, 32, 0, 2,
-			108, 17, 65, 109, 32, 0, 2, 114, 103, 17, 65, 32, 0, 2, 114, 103, 17, 65, 109, 32, 0, 2, 114, 110, 17, 65, 32, 0, 2, 114,
-			110, 17, 65, 109, 32, 0, 2, 114, 114, 17, 65, 32, 0, 2, 114, 114, 17, 65, 109, 32, 0, 2, 114, 114, 17, 65, 115, 32, 0, 2,
-			114, 115, 17, 65, 32, 0, 2, 114, 115, 17, 65, 109, 32, 0, 2, 114, 116, 17, 65, 32, 0, 2, 114, 116, 17, 65, 109, 32, 0, 2,
-			114, 118, 17, 65, 32, 0, 2, 114, 118, 17, 65, 109, 32, 0, 2, 115, 101, 32, 0, 2, 115, 101, 109, 32, 0, 2, 115, 115, 17, 65,
-			32, 0, 2, 115, 115, 17, 65, 109, 32, 0, 2, 115, 116, 17, 65, 32, 0, 2, 115, 116, 17, 65, 109, 32, 0, 2, 115, 116, 114, 17,
-			65, 32, 0, 2, 116, 17, 65, 32, 0, 2, 116, 17, 65, 109, 32, 0, 2, 118, 17, 65, 32, 0, 2, 118, 17, 65, 109, 32, 0, 2,
-			120, 17, 65, 32, 0, 2, 120, 17, 65, 109, 32, 0, 2, 120, 32, 0, 2, 195, 167, 17, 65, 32, 0, 2, 195, 167, 17, 65, 109, 32,
-			0, 5, 2, 8, 110, 2, 116, 0, 8, 2, 32, 0, 8, 98, 117, 111, 115, 2, 18, 70, 32, 0, 8, 99, 101, 100, 2, 112, 18, 69,
-			32, 0, 8, 103, 2, 114, 18, 69, 32, 0, 8, 103, 97, 120, 101, 2, 18, 70, 32, 0, 8, 108, 111, 115, 2, 116, 114, 18, 68, 32,
-			0, 8, 109, 2, 115, 99, 108, 18, 69, 32, 0, 8, 112, 2, 115, 99, 18, 68, 32, 0, 8, 112, 111, 2, 114, 18, 69, 32, 0, 8,
-			112, 115, 111, 104, 2, 100, 18, 68, 32, 0, 8, 114, 112, 2, 122, 18, 69, 32, 0, 8, 116, 108, 97, 2, 114, 18, 69, 32, 0, 8,
-			117, 113, 2, 114, 18, 69, 32, 0, 8, 118, 110, 105, 2, 106, 18, 69, 32, 0, 8, 118, 117, 111, 104, 2, 18, 70, 32, 0, 8, 122,
-			105, 102, 2, 18, 70, 32, 0, 4, 5, 1, 1, 99, 2, 114, 101, 97, 3, 112, 0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 65,
-			0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 67, 17, 65, 17, 65, 0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 67, 17, 65,
-			17, 67, 0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 67, 17, 67, 0, 5, 1, 1, 100, 2, 17, 67, 17, 67, 17, 65, 17, 65,
-			0, 5, 1, 1, 100, 2, 17, 67, 17, 67, 17, 65, 17, 67, 17, 65, 0, 5, 1, 1, 100, 2, 17, 67, 17, 67, 17, 65, 17, 67,
-			17, 67, 17, 65, 0, 5, 1, 1, 100, 2, 102, 105, 99, 105, 0, 5, 1, 1, 112, 2, 115, 115, 111, 97, 0, 5, 1, 1, 114, 2,
-			99, 111, 114, 0, 5, 1, 1, 114, 2, 108, 117, 122, 0, 5, 1, 1, 114, 2, 115, 109, 117, 110, 103, 0, 5, 1, 1, 114, 2, 115,
-			115, 0, 5, 1, 1, 114, 2, 118, 101, 108, 0, 5, 1, 1, 114, 2, 118, 111, 108, 118, 0, 5, 1, 1, 114, 112, 2, 99, 105, 115,
-			0, 5, 1, 1, 114, 112, 2, 102, 0, 5, 1, 8, 100, 2, 102, 105, 110, 105, 0, 5, 1, 8, 100, 2, 115, 108, 105, 103, 0, 5,
-			1, 8, 100, 2, 115, 108, 111, 99, 0, 5, 1, 8, 102, 2, 99, 104, 0, 5, 1, 8, 102, 2, 114, 114, 97, 109, 101, 110, 116, 97,
-			0, 5, 1, 8, 112, 2, 114, 99, 101, 110, 116, 97, 103, 0, 5, 1, 8, 112, 2, 115, 113, 117, 0, 5, 1, 8, 114, 2, 99, 105,
-			99, 108, 0, 5, 1, 8, 116, 2, 114, 109, 105, 110, 0, 5, 1, 8, 118, 2, 108, 111, 99, 105, 0, 4, 117, 3, 115, 0, 117, 2,
-			115, 0, 4, 105, 3, 118, 0, 105, 2, 115, 0, 121, 0, 109, 2, 17, 67, 3, 118, 65, 0, 110, 2, 25, 3, 118, 68, 0, 4, 105,
-			2, 28, 17, 3, 119, 0, 105, 8, 114, 116, 115, 101, 2, 18, 68, 32, 0, 108, 5, 2, 2, 25, 3, 137, 0, 7, 6, 102, 0, 2,
-			102, 3, 0, 8, 2, 32, 3, 6, 109, 83, 36, 0, 3, 83, 0, 5, 3, 2, 32, 17, 67, 3, 83, 10, 0, 5, 3, 2, 17, 66,
-			3, 83, 124, 0, 5, 1, 8, 2, 32, 3, 109, 83, 0, 5, 1, 8, 2, 32, 31, 3, 109, 83, 38, 0, 7, 6, 103, 0, 2, 103,
-			3, 0, 4, 3, 81, 0, 117, 2, 17, 71, 0, 117, 5, 1, 1, 110, 97, 109, 2, 101, 105, 0, 117, 5, 1, 2, 195, 169, 109, 32,
-			0, 5, 3, 2, 32, 17, 67, 3, 81, 10, 0, 5, 1, 8, 2, 32, 3, 81, 36, 0, 117, 5, 1, 1, 110, 2, 17, 65, 3, 81,
-			58, 0, 117, 101, 110, 5, 1, 2, 17, 67, 3, 81, 58, 6, 118, 68, 0, 5, 3, 2, 17, 66, 3, 81, 124, 0, 2, 17, 71, 3,
-			90, 0, 4, 5, 1, 8, 2, 32, 31, 3, 90, 36, 0, 8, 2, 32, 0, 7, 6, 104, 0, 3, 0, 8, 2, 32, 3, 35, 81, 6,
-			35, 0, 7, 6, 105, 0, 4, 2, 17, 65, 32, 3, 6, 37, 0, 2, 32, 0, 2, 97, 109, 32, 0, 5, 1, 8, 2, 110, 116, 101,
-			114, 110, 0, 4, 110, 103, 5, 1, 1, 21, 2, 32, 3, 21, 0, 110, 103, 115, 5, 1, 1, 21, 2, 32, 0, 4, 3, 37, 0, 1,
-			108, 17, 67, 0, 1, 114, 17, 67, 0, 2, 108, 104, 12, 0, 2, 111, 0, 2, 111, 17, 67, 25, 0, 2, 117, 17, 67, 25, 0, 8,
-			2, 32, 0, 109, 2, 17, 67, 3, 37, 65, 0, 110, 104, 3, 37, 67, 0, 4, 109, 2, 32, 3, 37, 68, 0, 109, 5, 4, 2, 17,
-			67, 0, 110, 2, 17, 67, 0, 110, 2, 103, 0, 110, 2, 107, 0, 4, 1, 17, 67, 17, 67, 161, 195, 2, 17, 65, 32, 3, 57, 0,
-			1, 17, 67, 17, 67, 162, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 169, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 170,
-			195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 173, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 179, 195, 2, 17, 65, 32, 0,
-			1, 17, 67, 17, 67, 180, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 186, 195, 2, 17, 65, 32, 0, 1, 17, 67, 161, 195, 2,
-			17, 65, 32, 0, 1, 17, 67, 162, 195, 2, 17, 65, 32, 0, 1, 17, 67, 169, 195, 2, 17, 65, 32, 0, 1, 17, 67, 170, 195, 2,
-			17, 65, 32, 0, 1, 17, 67, 173, 195, 2, 17, 65, 32, 0, 1, 17, 67, 179, 195, 2, 17, 65, 32, 0, 1, 17, 67, 180, 195, 2,
-			17, 65, 32, 0, 1, 17, 67, 186, 195, 2, 17, 65, 32, 0, 2, 17, 65, 0, 4, 108, 5, 2, 2, 25, 3, 116, 0, 111, 2, 32,
-			0, 111, 2, 115, 32, 0, 117, 2, 32, 0, 117, 2, 115, 32, 0, 7, 6, 106, 0, 3, 90, 0, 8, 2, 32, 3, 90, 6, 110, 47,
-			132, 0, 5, 3, 2, 32, 17, 67, 3, 90, 10, 0, 5, 3, 2, 17, 66, 3, 90, 124, 0, 7, 6, 107, 0, 2, 107, 3, 0, 4,
-			3, 49, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0, 5, 1, 8, 2, 32, 3, 49, 6, 35, 48, 132, 0, 5, 3, 2, 32, 17,
-			67, 3, 49, 10, 0, 5, 2, 8, 2, 32, 3, 49, 35, 0, 5, 3, 2, 17, 66, 3, 49, 124, 0, 7, 6, 108, 0, 1, 108, 3,
-			0, 8, 2, 32, 3, 6, 109, 55, 36, 0, 3, 55, 0, 104, 1, 17, 65, 3, 55, 57, 0, 4, 104, 3, 61, 0, 104, 5, 1, 1,
-			17, 65, 0, 104, 5, 4, 1, 17, 65, 0, 5, 1, 8, 2, 32, 3, 109, 55, 0, 5, 1, 8, 2, 32, 31, 3, 109, 55, 38, 0,
-			7, 6, 109, 0, 2, 109, 3, 0, 8, 2, 32, 3, 6, 36, 65, 36, 0, 3, 65, 0, 5, 3, 2, 32, 17, 67, 3, 65, 10, 0,
-			5, 3, 2, 17, 66, 3, 65, 124, 0, 5, 1, 8, 2, 32, 3, 109, 65, 0, 5, 1, 8, 2, 32, 31, 3, 109, 65, 38, 0, 7,
-			6, 110, 0, 2, 110, 3, 0, 8, 2, 32, 3, 6, 36, 50, 36, 0, 4, 3, 50, 0, 110, 5, 1, 1, 17, 65, 0, 5, 3, 2,
-			32, 17, 67, 3, 50, 10, 0, 5, 3, 2, 17, 66, 3, 50, 124, 0, 104, 3, 67, 0, 5, 1, 8, 2, 32, 3, 109, 50, 0, 5,
-			1, 8, 2, 32, 31, 3, 109, 50, 38, 0, 7, 6, 111, 0, 110, 1, 115, 21, 2, 32, 3, 2, 39, 68, 0, 5, 1, 2, 108, 32,
-			3, 6, 110, 0, 4, 1, 21, 2, 32, 3, 8, 111, 0, 2, 115, 32, 0, 4, 3, 39, 0, 1, 21, 21, 2, 114, 17, 65, 32, 0,
-			1, 98, 2, 114, 101, 32, 0, 1, 99, 2, 114, 101, 32, 0, 1, 99, 2, 114, 114, 18, 66, 32, 0, 1, 100, 2, 114, 101, 32, 0,
-			1, 108, 2, 114, 101, 32, 0, 1, 109, 2, 118, 97, 32, 0, 1, 109, 2, 118, 97, 109, 32, 0, 1, 116, 2, 100, 17, 65, 32, 0,
-			1, 116, 2, 114, 101, 32, 0, 1, 118, 2, 114, 101, 32, 0, 2, 105, 17, 67, 25, 0, 2, 108, 104, 0, 2, 109, 97, 32, 0, 2,
-			110, 97, 32, 0, 2, 114, 17, 67, 111, 32, 0, 2, 115, 111, 32, 24, 0, 2, 115, 116, 111, 32, 0, 8, 109, 2, 114, 114, 18, 66,
-			32, 0, 4, 111, 5, 1, 1, 17, 67, 2, 32, 3, 39, 58, 0, 117, 0, 109, 2, 17, 67, 3, 39, 65, 0, 110, 104, 3, 39, 67,
-			0, 4, 109, 2, 32, 3, 39, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 25, 0, 4, 5, 1, 1, 102, 2, 114, 109, 97, 116,
-			3, 40, 0, 5, 1, 1, 102, 2, 114, 109, 117, 108, 195, 161, 0, 5, 1, 1, 114, 112, 2, 102, 0, 5, 1, 1, 114, 114, 101, 116,
-			110, 105, 2, 103, 0, 5, 1, 8, 17, 67, 2, 17, 67, 17, 65, 17, 67, 17, 65, 17, 67, 0, 5, 1, 8, 112, 2, 114, 116, 117,
-			17, 67, 0, 5, 1, 8, 115, 2, 108, 117, 0, 4, 1, 98, 2, 114, 17, 65, 32, 3, 110, 0, 1, 112, 2, 100, 17, 65, 32, 0,
-			1, 112, 2, 100, 17, 65, 109, 32, 0, 2, 98, 114, 17, 65, 32, 0, 2, 98, 114, 17, 65, 109, 32, 0, 2, 99, 17, 65, 32, 0,
-			2, 99, 17, 65, 109, 32, 0, 2, 100, 17, 65, 32, 0, 2, 100, 17, 65, 109, 32, 0, 2, 103, 32, 0, 2, 103, 101, 32, 0, 2,
-			103, 101, 109, 32, 0, 2, 103, 115, 32, 0, 2, 106, 17, 65, 32, 0, 2, 106, 17, 65, 109, 32, 0, 2, 108, 17, 65, 32, 0, 2,
-			108, 17, 65, 109, 32, 0, 2, 108, 100, 17, 65, 32, 0, 2, 108, 100, 17, 65, 109, 32, 0, 2, 108, 116, 17, 65, 32, 0, 2, 108,
-			116, 17, 65, 109, 32, 0, 2, 112, 32, 0, 2, 113, 117, 101, 32, 0, 2, 113, 117, 101, 109, 32, 0, 2, 114, 17, 65, 32, 0, 2,
-			114, 17, 65, 109, 32, 0, 2, 114, 17, 67, 17, 65, 32, 0, 2, 114, 17, 67, 17, 65, 109, 32, 0, 2, 115, 17, 65, 32, 0, 2,
-			115, 17, 65, 109, 32, 0, 2, 115, 115, 17, 65, 32, 0, 2, 115, 115, 17, 65, 109, 32, 0, 2, 115, 116, 17, 65, 32, 0, 2, 115,
-			116, 17, 65, 109, 32, 0, 2, 115, 116, 114, 17, 65, 32, 0, 2, 115, 116, 114, 17, 65, 109, 32, 0, 2, 116, 17, 65, 32, 0, 2,
-			116, 17, 65, 109, 32, 0, 2, 118, 17, 65, 109, 32, 0, 2, 118, 97, 32, 0, 2, 118, 101, 17, 67, 115, 32, 0, 2, 118, 101, 32,
-			0, 2, 122, 101, 115, 32, 0, 5, 1, 1, 118, 2, 108, 116, 0, 5, 1, 8, 2, 17, 67, 0, 5, 2, 2, 120, 32, 0, 5, 2,
-			8, 2, 108, 104, 17, 65, 32, 0, 5, 2, 8, 2, 108, 104, 17, 65, 109, 32, 0, 8, 102, 101, 114, 2, 103, 18, 69, 32, 0, 8,
-			108, 103, 110, 101, 2, 98, 18, 66, 32, 0, 8, 109, 2, 108, 104, 18, 69, 32, 0, 8, 114, 2, 103, 18, 69, 32, 0, 8, 115, 98,
-			97, 2, 108, 118, 18, 67, 32, 0, 8, 118, 100, 97, 2, 103, 18, 69, 32, 0, 8, 118, 110, 101, 2, 108, 118, 18, 67, 32, 0, 108,
-			5, 2, 2, 32, 3, 110, 58, 0, 122, 5, 2, 2, 32, 3, 110, 88, 0, 115, 116, 111, 115, 1, 112, 2, 32, 3, 110, 89, 47, 8,
-			111, 138, 0, 122, 5, 1, 2, 32, 3, 110, 138, 0, 4, 105, 3, 120, 0, 105, 2, 115, 0, 4, 105, 2, 28, 17, 3, 136, 0, 105,
-			2, 97, 32, 0, 105, 2, 99, 17, 65, 32, 0, 105, 2, 100, 101, 32, 0, 105, 8, 112, 97, 2, 18, 66, 32, 0, 121, 0, 7, 6,
-			112, 0, 2, 112, 3, 0, 108, 101, 5, 1, 2, 32, 3, 21, 0, 4, 3, 48, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0, 5,
-			3, 2, 32, 17, 67, 3, 48, 10, 0, 8, 2, 32, 3, 48, 36, 0, 5, 3, 2, 17, 66, 3, 48, 124, 0, 104, 5, 1, 3, 83,
-			0, 7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 17, 71, 0, 117, 101, 105, 5, 1, 8, 2, 17, 67, 3, 49, 6, 118, 0, 4, 8,
-			2, 32, 3, 49, 36, 0, 117, 101, 5, 1, 1, 17, 65, 2, 110, 17, 65, 32, 0, 117, 101, 5, 1, 2, 108, 0, 117, 101, 5, 1,
-			8, 0, 117, 101, 5, 2, 8, 2, 32, 25, 0, 117, 195, 170, 5, 1, 1, 17, 67, 2, 32, 0, 4, 117, 101, 99, 5, 1, 3, 49,
-			36, 89, 0, 117, 101, 195, 167, 5, 1, 0, 117, 105, 5, 1, 3, 49, 37, 0, 117, 2, 25, 3, 49, 40, 0, 117, 105, 5, 1, 1,
-			110, 97, 114, 116, 3, 49, 40, 37, 0, 117, 105, 110, 100, 5, 1, 8, 3, 49, 40, 37, 50, 72, 0, 117, 111, 5, 1, 8, 3, 49,
-			40, 39, 0, 4, 117, 3, 49, 58, 0, 195, 188, 0, 4, 117, 101, 110, 5, 1, 1, 17, 65, 2, 17, 67, 3, 49, 58, 6, 118, 68,
-			0, 117, 101, 110, 5, 1, 1, 17, 67, 2, 17, 67, 0, 117, 97, 5, 1, 8, 3, 49, 58, 35, 0, 117, 101, 5, 1, 2, 114, 32,
-			3, 49, 109, 0, 117, 101, 8, 2, 32, 3, 49, 112, 0, 5, 3, 2, 17, 66, 3, 49, 124, 0, 7, 6, 114, 0, 5, 1, 8, 2,
-			32, 3, 6, 109, 34, 34, 0, 5, 1, 8, 2, 32, 31, 3, 6, 109, 34, 34, 38, 0, 8, 2, 32, 3, 6, 109, 101, 36, 0, 4,
-			3, 16, 0, 1, 17, 65, 2, 17, 65, 0, 1, 17, 65, 2, 32, 17, 65, 0, 1, 17, 67, 2, 17, 65, 0, 2, 17, 67, 3, 16,
-			14, 0, 2, 32, 3, 34, 0, 5, 1, 1, 17, 65, 2, 32, 3, 44, 0, 1, 17, 67, 29, 2, 17, 65, 3, 51, 0, 4, 1, 108,
-			3, 101, 0, 1, 110, 2, 12, 0, 1, 115, 0, 8, 0, 114, 0, 8, 2, 32, 36, 3, 101, 36, 6, 114, 0, 7, 6, 115, 0, 5,
-			2, 8, 2, 32, 3, 6, 109, 89, 36, 0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 0, 1, 17, 65, 2, 32, 17, 65, 14, 128, 128,
-			129, 0, 1, 21, 2, 32, 17, 65, 0, 5, 36, 1, 17, 65, 2, 32, 17, 70, 14, 128, 128, 129, 0, 5, 36, 1, 21, 2, 32, 17,
-			70, 0, 4, 3, 89, 0, 1, 17, 65, 2, 32, 14, 128, 128, 129, 0, 1, 101, 115, 101, 2, 32, 0, 99, 2, 17, 71, 0, 115, 0,
-			115, 5, 1, 1, 17, 65, 0, 195, 167, 0, 111, 98, 114, 101, 8, 2, 21, 14, 128, 132, 133, 3, 89, 39, 71, 16, 36, 0, 4, 5,
-			1, 1, 17, 65, 2, 17, 70, 12, 3, 90, 0, 5, 1, 1, 17, 65, 2, 32, 17, 70, 12, 14, 128, 128, 129, 0, 104, 3, 91, 0,
-			5, 1, 8, 2, 32, 3, 109, 89, 0, 5, 1, 8, 2, 32, 31, 3, 109, 89, 38, 0, 5, 4, 8, 2, 17, 67, 3, 124, 89, 0,
-			4, 5, 1, 1, 17, 65, 2, 17, 67, 3, 138, 0, 5, 1, 1, 17, 65, 2, 32, 25, 14, 128, 128, 129, 0, 5, 1, 1, 21, 2,
-			32, 0, 5, 2, 2, 32, 0, 7, 6, 116, 0, 2, 116, 3, 0, 4, 104, 5, 1, 3, 21, 0, 105, 111, 110, 5, 1, 2, 32, 0,
-			3, 47, 0, 5, 3, 2, 32, 17, 67, 3, 47, 10, 0, 8, 2, 32, 3, 47, 36, 0, 4, 5, 2, 2, 101, 32, 3, 76, 0, 5,
-			2, 2, 105, 0, 5, 2, 2, 195, 173, 0, 5, 3, 2, 17, 66, 3, 76, 124, 0, 7, 6, 117, 0, 1, 103, 2, 17, 71, 3, 0,
-			2, 17, 65, 32, 3, 6, 40, 0, 4, 3, 40, 0, 1, 114, 2, 17, 65, 0, 1, 114, 2, 32, 17, 65, 0, 2, 105, 17, 67, 25,
-			0, 8, 2, 32, 0, 4, 2, 17, 65, 3, 58, 0, 2, 32, 17, 65, 0, 2, 105, 117, 0, 4, 105, 3, 121, 0, 121, 0, 109, 2,
-			17, 67, 3, 128, 65, 0, 110, 104, 3, 128, 67, 0, 4, 109, 2, 32, 3, 128, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 25,
-			0, 7, 6, 118, 0, 2, 118, 3, 0, 3, 84, 0, 5, 3, 2, 32, 17, 67, 3, 84, 10, 0, 5, 3, 2, 17, 66, 3, 84, 124,
-			0, 7, 6, 119, 0, 5, 1, 2, 32, 3, 21, 0, 5, 4, 8, 3, 40, 0, 3, 58, 0, 5, 2, 8, 2, 32, 3, 72, 6, 35,
-			71, 55, 57, 40, 0, 5, 1, 8, 2, 32, 3, 72, 6, 132, 71, 55, 4, 37, 40, 0, 7, 6, 120, 0, 2, 115, 3, 0, 4, 1,
-			17, 65, 2, 17, 65, 3, 49, 89, 0, 1, 101, 2, 17, 65, 0, 2, 32, 0, 8, 111, 2, 105, 0, 8, 114, 97, 109, 0, 4, 2,
-			195, 179, 32, 3, 88, 0, 8, 101, 2, 17, 65, 0, 8, 101, 104, 2, 17, 65, 0, 8, 101, 110, 105, 2, 17, 65, 0, 8, 101, 111,
-			99, 2, 17, 65, 0, 8, 170, 195, 2, 17, 65, 0, 4, 1, 17, 65, 114, 112, 2, 105, 3, 89, 0, 1, 161, 195, 109, 2, 105, 109,
-			0, 2, 17, 67, 0, 8, 117, 97, 0, 8, 117, 111, 114, 116, 2, 101, 0, 99, 2, 17, 71, 0, 101, 8, 117, 111, 114, 116, 2, 21,
-			3, 89, 109, 0, 4, 1, 17, 65, 114, 98, 2, 17, 65, 3, 91, 0, 1, 17, 65, 120, 2, 17, 65, 0, 1, 17, 71, 98, 2, 17,
-			65, 0, 1, 97, 2, 97, 0, 1, 97, 2, 97, 114, 0, 1, 97, 2, 101, 105, 0, 1, 97, 2, 195, 161, 0, 1, 97, 108, 101, 114,
-			2, 17, 65, 0, 1, 97, 114, 103, 2, 17, 65, 0, 1, 101, 108, 97, 2, 97, 0, 1, 101, 109, 2, 17, 65, 0, 1, 105, 97, 2,
-			17, 65, 0, 1, 105, 101, 2, 17, 65, 0, 1, 105, 112, 2, 17, 65, 0, 1, 105, 114, 2, 17, 65, 0, 1, 105, 117, 113, 2, 17,
-			65, 0, 1, 111, 109, 2, 97, 0, 1, 117, 2, 105, 0, 1, 117, 97, 98, 2, 17, 65, 0, 1, 117, 111, 2, 12, 0, 1, 117, 112,
-			2, 17, 65, 0, 2, 17, 65, 0, 2, 17, 65, 120, 17, 65, 0, 2, 105, 113, 117, 0, 5, 1, 1, 101, 2, 17, 67, 17, 65, 0,
-			5, 1, 1, 105, 2, 97, 32, 0, 5, 1, 1, 105, 2, 97, 115, 32, 0, 8, 97, 99, 2, 17, 65, 0, 8, 97, 102, 2, 105, 0,
-			8, 97, 114, 112, 2, 17, 65, 0, 8, 101, 108, 102, 2, 97, 0, 8, 101, 118, 2, 17, 65, 0, 8, 105, 108, 2, 17, 65, 0, 8,
-			105, 120, 2, 17, 65, 0, 8, 111, 2, 17, 65, 0, 8, 111, 99, 2, 17, 65, 0, 8, 111, 114, 2, 17, 65, 0, 8, 111, 114, 112,
-			2, 17, 65, 0, 8, 117, 108, 2, 17, 65, 0, 8, 169, 195, 109, 2, 105, 0, 7, 6, 121, 0, 2, 32, 3, 2, 37, 0, 5, 1,
-			8, 2, 32, 3, 6, 37, 48, 89, 4, 37, 55, 110, 68, 0, 5, 2, 8, 2, 32, 3, 6, 37, 48, 89, 37, 55, 39, 68, 0, 3,
-			37, 0, 2, 17, 65, 3, 57, 0, 7, 6, 122, 0, 2, 122, 3, 0, 4, 3, 88, 0, 1, 21, 2, 32, 17, 65, 0, 1, 21, 2,
-			32, 17, 70, 0, 5, 3, 2, 32, 17, 67, 3, 88, 10, 0, 8, 2, 32, 3, 88, 36, 0, 5, 3, 2, 17, 66, 3, 88, 124, 0,
-			5, 2, 1, 21, 2, 32, 3, 89, 0, 4, 5, 1, 1, 17, 65, 2, 17, 70, 12, 3, 90, 0, 5, 1, 1, 17, 65, 2, 32, 17,
-			70, 12, 0, 4, 5, 1, 1, 17, 65, 2, 17, 67, 3, 91, 0, 5, 1, 1, 17, 65, 2, 32, 17, 67, 0, 5, 1, 1, 21, 2,
-			32, 0, 7, 6, 0, 36, 8, 32, 114, 3, 0, 194, 170, 1, 32, 15, 3, 2, 35, 0, 194, 186, 1, 32, 15, 3, 2, 39, 0, 4,
-			45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 188, 3, 40, 0, 45, 8, 32, 2, 32,
-			15, 3, 65, 6, 36, 50, 111, 89, 0, 44, 2, 15, 3, 84, 6, 37, 34, 81, 40, 55, 132, 0, 4, 195, 159, 3, 89, 0, 195, 167,
-			0, 36, 3, 89, 37, 83, 51, 6, 130, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts52 = FileInMemory_createWithData (18252, reinterpret_cast<const char *> (&espeakdata_dicts52_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/pt_dict", 
+			2, 116, 97, 3, 6, 109, 0, 5, 1, 1, 110, 2, 116, 0, 5, 1, 2, 108, 32, 0, 5, 1, 2, 108, 97, 32, 0, 99, 116, 105,
+			111, 110, 2, 32, 3, 6, 109, 49, 91, 129, 68, 0, 99, 195, 167, 5, 1, 1, 17, 67, 3, 6, 109, 89, 0, 117, 8, 110, 2, 116,
+			114, 18, 68, 32, 3, 6, 115, 0, 108, 5, 2, 2, 116, 111, 110, 32, 3, 6, 137, 0, 4, 5, 2, 1, 108, 10, 2, 32, 17, 65,
+			24, 3, 8, 37, 0, 5, 2, 1, 114, 10, 2, 32, 17, 65, 24, 0, 4, 2, 32, 3, 8, 112, 0, 2, 115, 32, 0, 4, 109, 2,
+			32, 3, 8, 118, 68, 0, 109, 2, 115, 32, 0, 110, 2, 32, 0, 110, 2, 115, 32, 0, 4, 5, 1, 2, 32, 105, 24, 3, 8, 135,
+			0, 5, 2, 2, 32, 17, 65, 24, 0, 4, 3, 36, 0, 1, 17, 67, 17, 67, 17, 67, 169, 195, 2, 17, 67, 21, 0, 1, 17, 67,
+			17, 67, 161, 195, 2, 17, 67, 17, 65, 32, 0, 1, 17, 67, 17, 67, 162, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 169, 195,
+			2, 17, 67, 17, 65, 32, 0, 1, 17, 67, 17, 67, 170, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 173, 195, 2, 17, 67, 21,
+			0, 1, 17, 67, 17, 67, 179, 195, 2, 17, 67, 17, 65, 32, 0, 1, 17, 67, 161, 195, 2, 17, 67, 21, 0, 1, 17, 67, 162, 195,
+			2, 17, 67, 21, 0, 1, 17, 67, 170, 195, 2, 17, 67, 21, 0, 1, 17, 67, 173, 195, 2, 17, 67, 21, 0, 1, 17, 67, 179, 195,
+			2, 17, 67, 21, 0, 1, 17, 67, 180, 195, 2, 17, 67, 21, 0, 1, 17, 67, 186, 195, 2, 17, 67, 21, 0, 1, 98, 101, 2, 18,
+			72, 32, 0, 1, 99, 21, 2, 18, 72, 32, 0, 1, 100, 101, 2, 114, 18, 69, 32, 0, 1, 100, 101, 99, 2, 18, 72, 32, 0, 1,
+			100, 110, 101, 2, 18, 71, 32, 0, 1, 100, 110, 111, 2, 18, 72, 32, 0, 1, 100, 110, 111, 112, 115, 101, 114, 2, 18, 71, 32, 0,
+			1, 100, 111, 112, 2, 114, 17, 65, 32, 0, 1, 100, 114, 2, 18, 70, 32, 0, 1, 102, 101, 2, 116, 117, 18, 67, 32, 0, 1, 103,
+			101, 2, 18, 72, 32, 0, 1, 103, 110, 97, 114, 116, 115, 110, 111, 99, 2, 18, 72, 32, 0, 1, 104, 2, 103, 18, 69, 32, 0, 1,
+			104, 99, 110, 101, 2, 18, 72, 32, 0, 1, 104, 108, 111, 99, 2, 18, 72, 32, 0, 1, 108, 111, 105, 118, 2, 116, 97, 32, 0, 1,
+			109, 2, 116, 18, 68, 32, 0, 1, 109, 2, 120, 18, 68, 32, 0, 1, 109, 21, 2, 18, 71, 32, 0, 1, 110, 17, 65, 2, 116, 17,
+			65, 32, 0, 1, 112, 109, 111, 114, 2, 18, 71, 32, 0, 1, 114, 2, 99, 104, 111, 32, 0, 1, 114, 99, 115, 2, 118, 18, 68, 32,
+			0, 1, 114, 114, 111, 2, 18, 72, 32, 0, 1, 116, 2, 118, 101, 32, 0, 1, 116, 97, 98, 2, 18, 72, 32, 0, 1, 116, 101, 109,
+			2, 18, 72, 32, 0, 1, 116, 114, 101, 118, 2, 18, 72, 32, 0, 1, 117, 2, 116, 97, 32, 0, 1, 118, 2, 114, 116, 18, 68, 32,
+			0, 1, 118, 97, 99, 101, 114, 112, 2, 18, 72, 32, 0, 1, 118, 101, 114, 99, 115, 2, 18, 72, 32, 0, 1, 118, 105, 118, 2, 18,
+			71, 32, 0, 1, 118, 108, 111, 2, 18, 72, 32, 0, 1, 118, 111, 109, 2, 18, 72, 32, 0, 1, 120, 101, 109, 2, 18, 72, 32, 0,
+			2, 105, 17, 67, 25, 0, 2, 108, 104, 12, 0, 2, 117, 17, 67, 25, 0, 5, 2, 1, 17, 67, 2, 101, 109, 32, 0, 8, 2, 114,
+			103, 18, 68, 32, 0, 8, 17, 67, 97, 17, 67, 2, 116, 97, 32, 0, 8, 17, 67, 97, 99, 2, 108, 111, 32, 0, 8, 99, 2, 115,
+			116, 18, 68, 32, 0, 8, 99, 114, 101, 116, 2, 116, 18, 68, 32, 0, 8, 100, 2, 118, 18, 68, 32, 0, 8, 100, 110, 111, 99, 115,
+			101, 2, 18, 71, 32, 0, 8, 100, 114, 97, 2, 18, 72, 32, 0, 8, 100, 114, 101, 112, 2, 18, 72, 32, 0, 8, 100, 114, 111, 109,
+			2, 18, 72, 32, 0, 8, 101, 114, 2, 114, 103, 18, 68, 32, 0, 8, 102, 2, 114, 118, 18, 68, 32, 0, 8, 103, 110, 97, 116, 2,
+			18, 72, 32, 0, 8, 104, 99, 111, 98, 2, 99, 104, 18, 69, 32, 0, 8, 108, 2, 115, 115, 18, 67, 32, 0, 8, 108, 97, 103, 2,
+			103, 18, 68, 32, 0, 8, 108, 97, 118, 2, 18, 72, 32, 0, 8, 108, 101, 112, 2, 103, 18, 68, 32, 0, 8, 108, 102, 110, 97, 112,
+			2, 116, 18, 69, 32, 0, 8, 108, 111, 98, 2, 116, 18, 69, 32, 0, 8, 108, 111, 115, 98, 111, 2, 116, 18, 68, 32, 0, 8, 109,
+			101, 114, 2, 116, 18, 68, 32, 0, 8, 110, 2, 103, 114, 18, 68, 32, 0, 8, 111, 21, 2, 18, 72, 32, 0, 8, 111, 109, 101, 114,
+			2, 18, 72, 32, 0, 8, 111, 114, 114, 111, 99, 2, 18, 72, 32, 0, 8, 111, 115, 2, 114, 103, 18, 68, 32, 0, 8, 112, 114, 111,
+			116, 110, 101, 2, 195, 167, 18, 68, 32, 0, 8, 112, 115, 101, 2, 115, 115, 18, 68, 32, 0, 8, 114, 99, 2, 18, 72, 32, 0, 8,
+			114, 102, 111, 115, 2, 18, 72, 32, 0, 8, 114, 103, 2, 103, 18, 68, 32, 0, 8, 114, 112, 2, 116, 18, 68, 32, 0, 8, 114, 114,
+			97, 17, 67, 2, 116, 97, 32, 0, 8, 114, 114, 101, 100, 2, 116, 18, 68, 32, 0, 8, 114, 116, 97, 2, 118, 18, 68, 32, 0, 8,
+			114, 118, 105, 108, 2, 116, 17, 65, 32, 0, 8, 115, 111, 99, 2, 18, 71, 32, 0, 8, 117, 103, 114, 101, 2, 18, 72, 32, 0, 8,
+			117, 113, 115, 101, 2, 114, 100, 18, 68, 32, 0, 8, 118, 101, 100, 2, 18, 72, 32, 0, 8, 118, 101, 114, 116, 97, 2, 18, 72, 32,
+			0, 8, 118, 114, 111, 115, 98, 97, 2, 18, 72, 32, 0, 8, 122, 101, 98, 2, 114, 114, 18, 68, 32, 0, 8, 122, 111, 99, 2, 18,
+			72, 32, 0, 101, 120, 8, 114, 2, 17, 65, 3, 36, 36, 88, 0, 117, 8, 114, 2, 110, 3, 36, 40, 0, 110, 104, 3, 36, 67, 0,
+			4, 5, 1, 1, 17, 67, 2, 97, 3, 37, 0, 5, 1, 1, 17, 67, 2, 195, 163, 0, 5, 1, 1, 17, 67, 2, 195, 186, 0, 5,
+			1, 2, 101, 0, 5, 1, 8, 2, 102, 0, 5, 1, 8, 110, 2, 110, 104, 117, 0, 101, 5, 2, 1, 17, 67, 2, 32, 0, 101, 5,
+			2, 2, 17, 67, 32, 0, 5, 1, 1, 163, 195, 17, 67, 3, 57, 0, 115, 5, 1, 8, 2, 17, 67, 21, 21, 3, 91, 0, 4, 1,
+			17, 67, 2, 112, 18, 69, 32, 3, 109, 0, 1, 98, 105, 2, 114, 18, 69, 32, 0, 1, 98, 117, 111, 2, 18, 70, 32, 0, 1, 99,
+			111, 105, 100, 2, 115, 101, 115, 32, 0, 1, 100, 2, 114, 18, 69, 32, 0, 1, 100, 97, 2, 113, 117, 18, 69, 32, 0, 1, 102, 2,
+			114, 18, 69, 32, 0, 1, 104, 108, 111, 99, 32, 115, 2, 114, 101, 115, 32, 0, 1, 105, 2, 114, 32, 0, 1, 108, 101, 99, 2, 98,
+			114, 18, 69, 32, 0, 1, 108, 101, 99, 97, 2, 114, 18, 69, 32, 0, 1, 109, 111, 99, 2, 195, 167, 18, 66, 32, 0, 1, 110, 101,
+			103, 2, 114, 18, 69, 32, 0, 1, 110, 111, 2, 116, 101, 32, 0, 1, 110, 111, 115, 101, 2, 114, 18, 69, 32, 0, 1, 112, 2, 114,
+			18, 69, 32, 0, 1, 112, 2, 195, 167, 18, 68, 32, 0, 1, 112, 115, 2, 114, 109, 97, 32, 0, 1, 114, 112, 2, 122, 18, 69, 32,
+			0, 1, 115, 21, 2, 18, 70, 32, 0, 1, 115, 115, 105, 100, 2, 18, 71, 32, 0, 1, 116, 2, 116, 114, 97, 0, 1, 117, 113, 2,
+			98, 114, 18, 69, 32, 0, 1, 117, 113, 2, 114, 18, 69, 32, 0, 1, 117, 113, 2, 114, 32, 0, 1, 118, 105, 2, 114, 18, 69, 32,
+			0, 1, 118, 105, 116, 2, 18, 70, 32, 0, 1, 122, 105, 102, 2, 18, 70, 32, 0, 2, 98, 18, 67, 32, 0, 2, 99, 18, 69, 32,
+			0, 2, 99, 104, 18, 69, 32, 0, 2, 99, 108, 18, 69, 32, 0, 2, 99, 116, 18, 69, 32, 0, 2, 100, 18, 67, 32, 0, 2, 102,
+			97, 32, 0, 2, 103, 18, 69, 32, 0, 2, 103, 114, 18, 69, 32, 0, 2, 108, 18, 69, 32, 0, 2, 108, 108, 12, 0, 2, 112, 116,
+			18, 69, 32, 0, 2, 113, 117, 18, 67, 32, 0, 2, 114, 98, 18, 69, 32, 0, 2, 114, 103, 18, 69, 32, 0, 2, 114, 109, 101, 32,
+			0, 2, 114, 110, 18, 69, 32, 0, 2, 114, 113, 117, 18, 67, 32, 0, 2, 114, 113, 117, 18, 67, 32, 0, 2, 114, 114, 17, 65, 115,
+			32, 0, 2, 114, 114, 18, 69, 32, 0, 2, 114, 115, 18, 69, 32, 0, 2, 114, 116, 18, 69, 32, 0, 2, 114, 118, 18, 69, 32, 0,
+			2, 115, 18, 67, 32, 0, 2, 115, 99, 18, 67, 32, 0, 2, 115, 115, 18, 69, 32, 0, 2, 115, 115, 32, 0, 2, 115, 116, 18, 69,
+			32, 0, 2, 115, 116, 114, 18, 69, 32, 0, 2, 116, 18, 69, 32, 0, 2, 118, 18, 69, 32, 0, 2, 120, 18, 69, 32, 0, 2, 120,
+			32, 0, 5, 2, 8, 110, 2, 116, 0, 8, 2, 32, 0, 8, 2, 100, 110, 18, 68, 32, 0, 8, 17, 67, 2, 98, 114, 101, 32, 0,
+			8, 17, 67, 2, 114, 100, 18, 69, 32, 0, 8, 98, 117, 120, 101, 2, 114, 18, 69, 32, 0, 8, 99, 2, 114, 99, 18, 67, 32, 0,
+			8, 99, 97, 2, 115, 115, 18, 67, 32, 0, 8, 99, 97, 108, 105, 100, 2, 114, 18, 69, 32, 0, 8, 99, 105, 108, 97, 2, 114, 99,
+			18, 67, 32, 0, 8, 99, 105, 108, 97, 2, 114, 195, 167, 18, 68, 32, 0, 8, 99, 110, 97, 109, 97, 2, 98, 18, 68, 32, 0, 8,
+			99, 110, 101, 2, 114, 18, 69, 32, 0, 8, 99, 110, 105, 115, 2, 114, 18, 68, 32, 0, 8, 99, 114, 97, 99, 110, 101, 2, 114, 18,
+			69, 32, 0, 8, 100, 2, 18, 70, 32, 0, 8, 100, 2, 115, 112, 18, 67, 32, 0, 8, 100, 111, 112, 97, 2, 114, 18, 69, 32, 0,
+			8, 100, 117, 112, 2, 18, 70, 32, 0, 8, 102, 110, 101, 2, 122, 18, 69, 32, 0, 8, 103, 2, 114, 18, 69, 32, 0, 8, 103, 97,
+			120, 101, 2, 18, 70, 32, 0, 8, 103, 105, 100, 2, 114, 18, 67, 32, 0, 8, 103, 105, 114, 102, 101, 114, 2, 114, 18, 69, 32, 0,
+			8, 103, 110, 105, 2, 114, 18, 67, 32, 0, 8, 103, 117, 115, 2, 114, 18, 69, 32, 0, 8, 104, 108, 97, 116, 2, 18, 70, 32, 0,
+			8, 104, 108, 117, 109, 2, 18, 70, 32, 0, 8, 105, 118, 2, 18, 70, 32, 0, 8, 108, 2, 115, 18, 68, 32, 0, 8, 108, 101, 98,
+			109, 101, 2, 122, 18, 69, 32, 0, 8, 108, 111, 115, 2, 116, 114, 18, 69, 32, 0, 8, 108, 111, 116, 2, 114, 18, 69, 32, 0, 8,
+			109, 2, 114, 18, 68, 32, 0, 8, 109, 2, 115, 99, 108, 18, 69, 0, 8, 109, 2, 195, 167, 18, 68, 32, 0, 8, 109, 111, 108, 103,
+			97, 2, 114, 18, 69, 32, 0, 8, 109, 115, 101, 2, 114, 18, 69, 32, 0, 8, 109, 115, 101, 2, 114, 18, 69, 32, 0, 8, 109, 117,
+			110, 101, 2, 114, 18, 69, 32, 0, 8, 110, 101, 112, 2, 116, 114, 18, 69, 32, 0, 8, 110, 101, 118, 2, 114, 18, 69, 32, 0, 8,
+			110, 105, 99, 110, 105, 2, 114, 18, 69, 32, 0, 8, 110, 105, 109, 2, 114, 18, 69, 32, 0, 8, 110, 111, 2, 114, 18, 69, 32, 0,
+			8, 112, 2, 115, 18, 66, 32, 0, 8, 112, 2, 115, 99, 18, 68, 32, 0, 8, 112, 2, 115, 113, 117, 18, 67, 32, 0, 8, 112, 115,
+			111, 104, 2, 100, 18, 68, 32, 0, 8, 114, 2, 106, 18, 68, 32, 0, 8, 114, 2, 122, 18, 69, 32, 0, 8, 114, 101, 100, 110, 101,
+			2, 195, 167, 18, 66, 32, 0, 8, 114, 101, 118, 110, 101, 2, 100, 18, 68, 32, 0, 8, 114, 102, 101, 114, 2, 115, 99, 18, 66, 32,
+			0, 8, 114, 102, 101, 114, 2, 115, 113, 117, 18, 67, 32, 0, 8, 114, 103, 2, 108, 104, 18, 69, 32, 0, 8, 114, 103, 101, 100, 2,
+			100, 18, 66, 32, 0, 8, 114, 110, 101, 2, 100, 18, 66, 32, 0, 8, 114, 112, 2, 100, 18, 68, 32, 0, 8, 114, 112, 101, 100, 2,
+			100, 18, 68, 32, 0, 8, 114, 112, 101, 114, 2, 115, 18, 68, 32, 0, 8, 114, 114, 97, 2, 100, 18, 68, 32, 0, 8, 115, 101, 100,
+			2, 114, 100, 18, 69, 32, 0, 8, 115, 110, 101, 2, 98, 18, 68, 32, 0, 8, 116, 105, 101, 114, 2, 114, 18, 68, 32, 0, 8, 116,
+			108, 97, 2, 114, 18, 69, 32, 0, 8, 116, 108, 117, 100, 97, 2, 114, 18, 69, 32, 0, 8, 116, 110, 101, 2, 115, 18, 69, 32, 0,
+			8, 118, 2, 100, 18, 68, 32, 0, 8, 118, 2, 108, 104, 18, 68, 32, 0, 8, 118, 101, 114, 2, 122, 18, 69, 32, 0, 8, 118, 101,
+			115, 2, 114, 18, 68, 32, 0, 8, 118, 101, 115, 114, 101, 112, 2, 114, 18, 69, 32, 0, 8, 118, 110, 105, 2, 106, 18, 69, 32, 0,
+			8, 118, 117, 111, 104, 2, 18, 71, 32, 0, 8, 120, 101, 2, 99, 114, 18, 69, 32, 0, 8, 120, 101, 2, 114, 99, 18, 67, 32, 0,
+			8, 120, 117, 111, 114, 116, 2, 18, 70, 32, 0, 8, 120, 117, 111, 114, 116, 2, 18, 72, 32, 0, 8, 122, 2, 114, 18, 69, 32, 0,
+			4, 5, 1, 1, 99, 2, 114, 101, 97, 3, 112, 0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 65, 0, 5, 1, 1, 100, 2, 17,
+			67, 17, 65, 17, 67, 17, 65, 17, 65, 0, 5, 1, 1, 100, 2, 17, 67, 17, 65, 17, 67, 17, 65, 17, 67, 0, 5, 1, 1, 100,
+			2, 17, 67, 17, 65, 17, 67, 17, 67, 0, 5, 1, 1, 100, 2, 17, 67, 17, 67, 17, 65, 17, 65, 0, 5, 1, 1, 100, 2, 17,
+			67, 17, 67, 17, 65, 17, 67, 17, 65, 0, 5, 1, 1, 100, 2, 17, 67, 17, 67, 17, 65, 17, 67, 17, 67, 17, 65, 0, 5, 1,
+			1, 100, 2, 102, 105, 99, 105, 0, 5, 1, 1, 112, 2, 115, 115, 111, 97, 0, 5, 1, 1, 114, 2, 99, 111, 114, 0, 5, 1, 1,
+			114, 2, 108, 117, 122, 0, 5, 1, 1, 114, 2, 115, 109, 117, 110, 103, 0, 5, 1, 1, 114, 2, 115, 115, 0, 5, 1, 1, 114, 2,
+			118, 101, 108, 0, 5, 1, 1, 114, 2, 118, 111, 108, 118, 0, 5, 1, 1, 114, 112, 2, 99, 105, 115, 0, 5, 1, 1, 114, 112, 2,
+			102, 0, 5, 1, 8, 100, 2, 102, 105, 110, 105, 0, 5, 1, 8, 100, 2, 115, 108, 105, 103, 0, 5, 1, 8, 100, 2, 115, 108, 111,
+			99, 0, 5, 1, 8, 102, 2, 99, 104, 0, 5, 1, 8, 102, 2, 114, 114, 97, 109, 101, 110, 116, 97, 0, 5, 1, 8, 112, 2, 114,
+			99, 101, 110, 116, 97, 103, 0, 5, 1, 8, 112, 2, 115, 113, 117, 0, 5, 1, 8, 114, 2, 99, 105, 99, 108, 0, 5, 1, 8, 116,
+			2, 114, 109, 105, 110, 0, 5, 1, 8, 118, 2, 108, 111, 99, 105, 0, 5, 2, 1, 163, 195, 2, 122, 0, 4, 108, 1, 17, 67, 161,
+			195, 2, 32, 3, 115, 0, 108, 1, 17, 67, 173, 195, 2, 32, 0, 108, 1, 17, 67, 186, 195, 2, 32, 0, 117, 0, 117, 2, 115, 0,
+			4, 105, 3, 118, 0, 105, 2, 115, 0, 121, 0, 109, 2, 17, 67, 3, 118, 65, 0, 110, 2, 25, 3, 118, 68, 0, 4, 105, 1, 114,
+			116, 115, 101, 2, 18, 69, 32, 3, 119, 0, 105, 2, 28, 17, 0, 108, 5, 2, 2, 25, 3, 137, 0, 7, 6, 102, 0, 2, 102, 3,
+			0, 8, 2, 32, 3, 6, 109, 83, 112, 0, 3, 83, 0, 5, 3, 2, 32, 17, 67, 3, 83, 10, 0, 5, 3, 2, 17, 66, 3, 83,
+			124, 0, 5, 1, 8, 2, 32, 3, 109, 83, 0, 5, 1, 8, 2, 32, 31, 3, 109, 83, 38, 0, 7, 6, 103, 0, 2, 103, 3, 0,
+			4, 3, 81, 0, 117, 2, 17, 71, 0, 117, 5, 1, 1, 110, 97, 109, 2, 101, 105, 0, 117, 5, 1, 2, 195, 169, 109, 32, 0, 5,
+			3, 2, 32, 17, 67, 3, 81, 10, 0, 5, 1, 8, 2, 32, 3, 81, 36, 0, 4, 117, 1, 97, 2, 101, 110, 116, 3, 81, 58, 0,
+			117, 1, 97, 120, 110, 101, 2, 101, 0, 117, 1, 105, 2, 105, 100, 97, 100, 101, 0, 117, 1, 105, 114, 101, 118, 97, 2, 101, 0, 117,
+			1, 110, 97, 115, 2, 105, 110, 0, 117, 1, 110, 97, 115, 2, 195, 173, 110, 0, 117, 1, 110, 105, 108, 2, 105, 0, 117, 1, 110, 105,
+			108, 105, 98, 2, 17, 65, 0, 117, 1, 110, 105, 116, 115, 2, 17, 65, 0, 117, 1, 110, 105, 116, 120, 2, 17, 65, 0, 117, 1, 161,
+			195, 120, 110, 101, 2, 18, 67, 32, 0, 117, 5, 1, 1, 110, 2, 17, 65, 0, 117, 8, 97, 115, 2, 105, 0, 117, 8, 105, 114, 105,
+			98, 2, 105, 32, 0, 117, 8, 105, 122, 97, 112, 97, 2, 101, 0, 117, 8, 110, 105, 108, 2, 17, 65, 0, 117, 8, 110, 105, 109, 2,
+			101, 0, 117, 8, 110, 105, 112, 2, 105, 109, 32, 0, 117, 8, 110, 105, 112, 2, 105, 110, 115, 32, 0, 117, 8, 114, 97, 2, 105, 0,
+			5, 3, 2, 17, 66, 3, 81, 124, 0, 2, 17, 71, 3, 90, 0, 4, 5, 1, 8, 2, 32, 31, 3, 90, 36, 0, 8, 2, 32, 0,
+			7, 6, 104, 0, 3, 0, 101, 108, 112, 5, 1, 8, 3, 21, 0, 8, 2, 32, 3, 35, 81, 6, 35, 0, 101, 108, 5, 2, 8, 2,
+			112, 3, 101, 6, 137, 0, 7, 6, 105, 0, 4, 2, 18, 69, 32, 3, 6, 37, 0, 2, 32, 0, 5, 1, 8, 2, 110, 116, 101, 114,
+			110, 0, 5, 2, 2, 114, 116, 111, 110, 32, 0, 5, 2, 8, 118, 2, 107, 105, 110, 103, 0, 108, 5, 2, 2, 116, 111, 110, 32, 3,
+			6, 116, 0, 1, 114, 100, 2, 118, 101, 114, 3, 6, 117, 0, 103, 104, 116, 5, 2, 2, 32, 3, 6, 117, 47, 0, 4, 103, 104, 116,
+			5, 1, 2, 32, 3, 21, 0, 103, 104, 116, 115, 5, 1, 2, 32, 0, 110, 103, 5, 1, 1, 21, 2, 32, 0, 110, 103, 115, 5, 1,
+			1, 21, 2, 32, 0, 4, 3, 37, 0, 1, 108, 17, 67, 0, 1, 114, 17, 67, 0, 2, 97, 0, 2, 101, 0, 2, 108, 104, 12, 0,
+			2, 108, 108, 12, 0, 2, 111, 0, 2, 111, 17, 67, 25, 0, 2, 117, 17, 67, 25, 0, 2, 195, 161, 0, 2, 195, 163, 0, 2, 195,
+			179, 0, 2, 195, 181, 0, 2, 195, 186, 0, 8, 2, 32, 0, 109, 2, 17, 67, 3, 37, 65, 0, 110, 104, 3, 37, 67, 0, 4, 109,
+			2, 32, 3, 37, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 17, 67, 0, 110, 2, 103, 0, 110, 2, 107, 0, 4, 1, 17, 67,
+			17, 67, 161, 195, 2, 17, 65, 32, 3, 57, 0, 1, 17, 67, 17, 67, 162, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 169, 195,
+			2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 170, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 173, 195, 2, 17, 65, 32, 0, 1,
+			17, 67, 17, 67, 179, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 180, 195, 2, 17, 65, 32, 0, 1, 17, 67, 17, 67, 186, 195,
+			2, 17, 65, 32, 0, 1, 17, 67, 161, 195, 2, 17, 65, 32, 0, 1, 17, 67, 162, 195, 2, 17, 65, 32, 0, 1, 17, 67, 169, 195,
+			2, 17, 65, 32, 0, 1, 17, 67, 170, 195, 2, 17, 65, 32, 0, 1, 17, 67, 173, 195, 2, 17, 65, 32, 0, 1, 17, 67, 179, 195,
+			2, 17, 65, 32, 0, 1, 17, 67, 180, 195, 2, 17, 65, 32, 0, 1, 17, 67, 186, 195, 2, 17, 65, 32, 0, 2, 17, 65, 0, 4,
+			108, 5, 2, 2, 25, 3, 116, 0, 111, 2, 32, 0, 111, 2, 115, 32, 0, 117, 2, 32, 0, 117, 2, 115, 32, 0, 7, 6, 106, 0,
+			3, 90, 0, 8, 2, 32, 3, 90, 6, 110, 47, 132, 0, 5, 3, 2, 32, 17, 67, 3, 90, 10, 0, 5, 3, 2, 17, 66, 3, 90,
+			124, 0, 7, 6, 107, 0, 2, 107, 3, 0, 4, 3, 49, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0, 5, 1, 8, 2, 32, 3,
+			49, 6, 35, 48, 132, 0, 5, 3, 2, 32, 17, 67, 3, 49, 10, 0, 5, 2, 8, 2, 32, 3, 49, 35, 0, 5, 3, 2, 17, 66,
+			3, 49, 124, 0, 7, 6, 108, 0, 1, 108, 3, 0, 8, 2, 32, 3, 6, 109, 55, 112, 0, 3, 55, 0, 104, 5, 2, 3, 55, 57,
+			0, 4, 104, 5, 1, 3, 61, 0, 104, 5, 4, 1, 17, 65, 0, 5, 1, 8, 2, 32, 3, 109, 55, 0, 5, 1, 8, 2, 32, 31,
+			3, 109, 55, 38, 0, 7, 6, 109, 0, 2, 109, 3, 0, 8, 2, 32, 3, 6, 36, 65, 36, 0, 3, 65, 0, 5, 3, 2, 32, 17,
+			67, 3, 65, 10, 0, 5, 3, 2, 17, 66, 3, 65, 124, 0, 5, 1, 8, 2, 32, 3, 109, 65, 0, 5, 1, 8, 2, 32, 31, 3,
+			109, 65, 38, 0, 7, 6, 110, 0, 2, 110, 3, 0, 8, 2, 32, 3, 6, 36, 50, 36, 0, 4, 3, 50, 0, 110, 5, 1, 1, 17,
+			65, 0, 5, 3, 2, 32, 17, 67, 3, 50, 10, 0, 5, 3, 2, 17, 66, 3, 50, 124, 0, 104, 3, 67, 0, 5, 1, 8, 2, 32,
+			3, 109, 50, 0, 5, 1, 8, 2, 32, 31, 3, 109, 50, 38, 0, 7, 6, 111, 0, 1, 120, 101, 108, 102, 2, 114, 17, 65, 32, 3,
+			0, 110, 1, 115, 21, 2, 32, 3, 2, 39, 68, 0, 2, 108, 32, 3, 6, 110, 0, 4, 1, 21, 2, 32, 3, 8, 111, 0, 2, 115,
+			32, 0, 4, 3, 39, 0, 1, 17, 67, 17, 66, 162, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 161, 195, 2, 17, 67, 21, 0,
+			1, 17, 67, 17, 67, 169, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 170, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 173,
+			195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 179, 195, 2, 17, 67, 21, 0, 1, 17, 67, 17, 67, 186, 195, 2, 17, 67, 21, 0,
+			1, 17, 67, 161, 195, 2, 17, 67, 21, 0, 1, 17, 67, 169, 195, 2, 17, 67, 21, 0, 1, 17, 67, 170, 195, 2, 17, 67, 21, 0,
+			1, 17, 67, 173, 195, 2, 17, 67, 21, 0, 1, 17, 67, 179, 195, 2, 17, 67, 21, 0, 1, 17, 67, 180, 195, 2, 17, 67, 21, 0,
+			1, 17, 67, 186, 195, 2, 17, 67, 21, 0, 1, 99, 2, 114, 114, 18, 66, 32, 0, 1, 99, 32, 97, 2, 114, 116, 101, 32, 0, 1,
+			100, 21, 2, 114, 97, 32, 0, 1, 100, 21, 2, 114, 101, 32, 0, 1, 103, 2, 103, 18, 68, 32, 0, 1, 103, 105, 122, 2, 116, 111,
+			32, 0, 1, 105, 114, 2, 114, 101, 32, 0, 1, 108, 2, 114, 101, 32, 0, 1, 109, 2, 114, 114, 18, 66, 32, 0, 1, 109, 2, 118,
+			18, 66, 32, 0, 1, 112, 2, 114, 18, 67, 32, 0, 1, 114, 116, 110, 97, 2, 112, 18, 68, 32, 0, 1, 115, 2, 114, 17, 65, 32,
+			0, 1, 116, 2, 100, 17, 65, 32, 0, 1, 116, 2, 114, 195, 167, 18, 68, 32, 0, 1, 116, 21, 2, 114, 97, 32, 0, 1, 116, 21,
+			2, 114, 101, 32, 0, 1, 118, 2, 114, 101, 32, 0, 2, 105, 17, 67, 25, 0, 2, 108, 117, 101, 109, 32, 0, 2, 109, 97, 32, 0,
+			2, 111, 115, 32, 0, 2, 114, 17, 67, 111, 32, 0, 2, 115, 111, 32, 24, 0, 2, 115, 115, 117, 101, 109, 32, 0, 2, 115, 116, 111,
+			32, 0, 8, 2, 99, 18, 68, 32, 0, 8, 17, 67, 115, 101, 2, 112, 17, 65, 32, 0, 8, 99, 2, 115, 18, 66, 32, 0, 8, 99,
+			115, 101, 100, 2, 115, 18, 66, 32, 0, 8, 102, 2, 18, 70, 32, 0, 8, 102, 2, 18, 72, 32, 0, 8, 102, 2, 100, 18, 66, 32,
+			115, 0, 8, 104, 99, 2, 99, 104, 17, 65, 32, 0, 8, 104, 99, 2, 118, 18, 66, 32, 0, 8, 104, 99, 97, 17, 67, 2, 114, 114,
+			97, 32, 0, 8, 108, 97, 115, 2, 98, 114, 18, 68, 32, 0, 8, 108, 99, 101, 2, 100, 18, 68, 32, 0, 8, 108, 112, 109, 105, 2,
+			100, 18, 68, 32, 0, 8, 108, 112, 120, 101, 2, 100, 18, 68, 32, 0, 8, 109, 2, 99, 104, 17, 65, 32, 0, 8, 109, 117, 21, 2,
+			114, 101, 32, 0, 8, 114, 97, 17, 70, 2, 116, 18, 68, 32, 0, 8, 114, 99, 115, 101, 2, 116, 18, 68, 32, 0, 8, 114, 114, 97,
+			98, 2, 99, 18, 68, 32, 0, 8, 115, 98, 97, 2, 114, 118, 18, 66, 32, 0, 8, 116, 2, 108, 18, 68, 32, 0, 8, 118, 110, 101,
+			2, 108, 116, 18, 68, 32, 0, 4, 108, 5, 2, 2, 17, 66, 3, 39, 58, 0, 111, 5, 1, 1, 17, 67, 2, 32, 0, 117, 0, 109,
+			2, 17, 67, 3, 39, 65, 0, 110, 104, 3, 39, 67, 0, 4, 109, 2, 32, 3, 39, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2,
+			25, 0, 4, 5, 1, 1, 102, 2, 114, 109, 97, 116, 3, 40, 0, 5, 1, 1, 102, 2, 114, 109, 117, 108, 195, 161, 0, 5, 1, 1,
+			114, 112, 2, 102, 0, 5, 1, 1, 114, 114, 101, 116, 110, 105, 2, 103, 0, 5, 1, 8, 17, 67, 2, 17, 67, 17, 65, 17, 67, 17,
+			65, 17, 67, 0, 5, 1, 8, 112, 2, 114, 116, 117, 17, 67, 0, 5, 1, 8, 115, 2, 108, 117, 0, 8, 2, 32, 17, 65, 0, 4,
+			115, 5, 2, 8, 118, 2, 32, 17, 65, 3, 40, 88, 0, 115, 5, 2, 8, 118, 2, 32, 17, 70, 0, 115, 5, 2, 8, 118, 2, 32,
+			3, 40, 89, 0, 4, 1, 17, 67, 2, 112, 18, 69, 32, 3, 110, 0, 1, 98, 2, 114, 18, 69, 32, 0, 1, 98, 109, 101, 2, 108,
+			115, 18, 69, 32, 0, 1, 102, 2, 114, 106, 111, 32, 0, 1, 102, 2, 114, 109, 18, 68, 32, 0, 1, 109, 2, 108, 104, 18, 69, 32,
+			0, 1, 112, 21, 2, 114, 116, 18, 68, 32, 0, 1, 114, 110, 101, 2, 115, 99, 18, 68, 32, 0, 1, 114, 110, 101, 2, 115, 113, 117,
+			18, 67, 32, 0, 1, 114, 112, 2, 118, 18, 68, 32, 0, 1, 114, 116, 2, 195, 167, 18, 68, 32, 0, 2, 98, 114, 18, 69, 32, 0,
+			2, 99, 18, 69, 32, 0, 2, 99, 104, 18, 69, 32, 0, 2, 100, 18, 69, 32, 0, 2, 103, 18, 69, 32, 0, 2, 103, 32, 0, 2,
+			103, 115, 32, 0, 2, 106, 18, 69, 32, 0, 2, 108, 18, 69, 32, 0, 2, 108, 100, 18, 69, 32, 0, 2, 108, 104, 18, 67, 32, 0,
+			2, 108, 116, 18, 69, 32, 0, 2, 108, 118, 18, 67, 32, 0, 2, 112, 32, 0, 2, 113, 117, 18, 67, 32, 0, 2, 114, 17, 67, 18,
+			69, 32, 0, 2, 114, 18, 69, 32, 0, 2, 114, 100, 101, 110, 115, 32, 0, 2, 115, 18, 69, 32, 0, 2, 115, 115, 18, 69, 32, 0,
+			2, 115, 116, 18, 69, 32, 0, 2, 115, 116, 114, 18, 69, 32, 0, 2, 116, 18, 69, 32, 0, 2, 118, 17, 65, 109, 32, 0, 2, 118,
+			97, 32, 0, 2, 118, 101, 17, 67, 115, 32, 0, 2, 118, 101, 32, 0, 2, 122, 101, 32, 0, 5, 1, 8, 2, 17, 67, 0, 5, 2,
+			2, 120, 32, 0, 5, 2, 2, 122, 32, 0, 8, 2, 108, 104, 18, 69, 32, 0, 8, 2, 112, 116, 18, 69, 32, 0, 8, 21, 97, 109,
+			2, 114, 32, 0, 8, 98, 115, 101, 2, 195, 167, 18, 66, 32, 0, 8, 99, 2, 115, 112, 18, 67, 32, 0, 8, 99, 2, 195, 167, 18,
+			68, 32, 0, 8, 100, 97, 2, 114, 18, 69, 32, 0, 8, 100, 97, 2, 195, 167, 18, 68, 32, 0, 8, 100, 101, 114, 2, 18, 70, 32,
+			0, 8, 100, 110, 101, 2, 195, 167, 18, 68, 32, 0, 8, 100, 111, 116, 114, 111, 2, 120, 18, 68, 32, 0, 8, 102, 2, 108, 103, 18,
+			69, 32, 0, 8, 102, 97, 2, 98, 18, 69, 32, 0, 8, 102, 97, 2, 102, 18, 69, 32, 0, 8, 103, 2, 122, 18, 69, 32, 0, 8,
+			108, 2, 103, 114, 18, 69, 32, 0, 8, 108, 97, 2, 112, 114, 18, 69, 32, 0, 8, 108, 102, 101, 100, 2, 114, 18, 67, 32, 0, 8,
+			108, 103, 110, 101, 2, 98, 18, 69, 32, 0, 8, 108, 112, 109, 105, 2, 114, 18, 67, 32, 0, 8, 109, 2, 102, 18, 66, 32, 0, 8,
+			109, 2, 102, 18, 67, 32, 0, 8, 109, 108, 97, 2, 195, 167, 18, 66, 32, 0, 8, 110, 101, 109, 114, 111, 112, 2, 18, 70, 32, 0,
+			8, 110, 115, 101, 2, 98, 18, 69, 32, 0, 8, 112, 109, 101, 2, 108, 103, 18, 69, 32, 0, 8, 112, 109, 101, 2, 195, 167, 18, 68,
+			32, 0, 8, 114, 2, 115, 110, 18, 69, 32, 0, 8, 114, 2, 195, 167, 18, 68, 32, 0, 8, 114, 110, 101, 2, 108, 104, 18, 68, 32,
+			0, 8, 114, 114, 97, 2, 108, 104, 18, 68, 32, 0, 8, 115, 2, 98, 18, 67, 32, 0, 8, 115, 2, 102, 114, 18, 67, 32, 0, 8,
+			115, 2, 112, 114, 18, 69, 32, 0, 8, 115, 115, 97, 2, 112, 114, 18, 69, 32, 0, 8, 118, 97, 112, 97, 2, 114, 18, 67, 32, 0,
+			8, 118, 101, 100, 2, 114, 18, 67, 32, 0, 114, 116, 111, 115, 2, 32, 3, 110, 16, 14, 47, 8, 111, 138, 0, 118, 111, 115, 2, 32,
+			3, 110, 84, 8, 111, 138, 0, 115, 115, 111, 115, 2, 32, 3, 110, 89, 8, 111, 138, 0, 115, 116, 111, 115, 1, 112, 2, 32, 3, 110,
+			89, 47, 8, 111, 138, 0, 122, 5, 1, 2, 32, 3, 110, 138, 0, 4, 1, 108, 32, 17, 65, 2, 32, 3, 111, 0, 1, 173, 195, 2,
+			17, 67, 17, 65, 0, 8, 2, 32, 17, 67, 0, 111, 2, 17, 67, 32, 0, 4, 115, 5, 2, 8, 2, 32, 17, 65, 3, 111, 88, 0,
+			115, 5, 2, 8, 2, 32, 17, 70, 0, 115, 5, 2, 8, 2, 32, 3, 111, 89, 0, 4, 105, 3, 120, 0, 105, 2, 28, 18, 12, 12,
+			0, 105, 2, 115, 0, 105, 8, 17, 67, 2, 99, 101, 32, 0, 4, 105, 2, 28, 17, 3, 136, 0, 105, 2, 97, 32, 0, 105, 2, 99,
+			17, 65, 32, 0, 105, 2, 100, 101, 32, 0, 105, 8, 98, 2, 18, 69, 32, 0, 105, 8, 112, 97, 2, 18, 66, 32, 0, 105, 8, 112,
+			97, 2, 18, 67, 32, 0, 121, 0, 7, 6, 112, 0, 2, 112, 3, 0, 4, 3, 48, 0, 5, 3, 2, 115, 0, 5, 3, 2, 116, 0,
+			5, 3, 2, 32, 17, 67, 3, 48, 10, 0, 8, 2, 32, 3, 48, 36, 0, 114, 195, 161, 120, 105, 115, 5, 2, 8, 2, 32, 3, 48,
+			51, 6, 35, 49, 89, 37, 89, 0, 108, 97, 121, 3, 48, 55, 6, 118, 0, 5, 3, 2, 17, 66, 3, 48, 124, 0, 104, 3, 83, 0,
+			7, 6, 113, 0, 4, 3, 49, 0, 117, 2, 17, 71, 0, 117, 101, 105, 5, 1, 8, 2, 17, 67, 3, 49, 6, 118, 0, 4, 8, 2,
+			32, 3, 49, 36, 0, 117, 101, 5, 1, 1, 17, 65, 2, 110, 17, 65, 32, 0, 117, 101, 5, 1, 2, 108, 0, 117, 101, 5, 1, 8,
+			0, 117, 101, 5, 2, 1, 32, 114, 111, 112, 2, 32, 0, 117, 195, 170, 5, 1, 1, 17, 67, 2, 32, 0, 117, 101, 195, 167, 5, 1,
+			3, 49, 36, 89, 0, 117, 105, 5, 1, 3, 49, 37, 0, 4, 117, 2, 25, 3, 49, 40, 0, 117, 8, 2, 105, 110, 100, 101, 0, 117,
+			111, 5, 1, 8, 3, 49, 40, 39, 0, 4, 117, 3, 49, 58, 0, 117, 1, 17, 65, 2, 105, 100, 97, 100, 101, 32, 0, 117, 1, 101,
+			2, 101, 115, 116, 114, 0, 117, 1, 101, 100, 97, 2, 101, 0, 117, 1, 101, 114, 102, 2, 101, 110, 116, 0, 117, 1, 101, 115, 2, 101,
+			110, 0, 117, 1, 101, 115, 101, 2, 195, 173, 118, 0, 117, 1, 110, 2, 101, 110, 0, 117, 1, 110, 97, 114, 116, 2, 105, 108, 0, 117,
+			1, 111, 108, 2, 101, 110, 0, 117, 5, 2, 1, 105, 108, 2, 105, 100, 0, 117, 5, 2, 1, 173, 195, 108, 2, 105, 100, 0, 117, 8,
+			2, 105, 110, 113, 117, 0, 117, 8, 97, 2, 195, 173, 102, 101, 114, 111, 32, 0, 117, 8, 101, 2, 105, 110, 0, 117, 8, 101, 115, 2,
+			101, 108, 0, 195, 188, 0, 117, 195, 170, 110, 1, 21, 3, 49, 58, 6, 118, 68, 0, 117, 97, 5, 1, 8, 3, 49, 58, 35, 0, 117,
+			101, 5, 1, 2, 114, 32, 3, 49, 109, 0, 4, 117, 101, 5, 2, 1, 32, 114, 111, 112, 2, 32, 195, 169, 3, 49, 112, 0, 117, 101,
+			8, 2, 32, 0, 5, 3, 2, 17, 66, 3, 49, 124, 0, 7, 6, 114, 0, 5, 1, 8, 2, 32, 3, 6, 109, 34, 34, 0, 5, 1,
+			8, 2, 32, 31, 3, 6, 109, 34, 34, 38, 0, 8, 2, 32, 3, 6, 109, 101, 36, 0, 4, 3, 16, 0, 1, 17, 65, 2, 17, 65,
+			0, 2, 32, 17, 65, 0, 2, 32, 104, 0, 2, 17, 67, 3, 16, 14, 0, 2, 32, 3, 34, 0, 5, 1, 1, 17, 65, 2, 32, 3,
+			44, 0, 1, 17, 67, 2, 17, 65, 3, 51, 0, 4, 1, 108, 2, 17, 65, 3, 101, 0, 1, 110, 2, 12, 0, 1, 115, 0, 8, 0,
+			114, 0, 8, 2, 32, 36, 3, 101, 36, 6, 114, 0, 7, 6, 115, 0, 5, 2, 8, 2, 32, 3, 6, 109, 89, 112, 0, 115, 105, 111,
+			110, 5, 1, 2, 32, 3, 21, 0, 4, 1, 17, 65, 2, 17, 65, 3, 88, 0, 1, 17, 65, 2, 32, 17, 65, 14, 128, 128, 129, 0,
+			1, 110, 97, 114, 116, 2, 17, 65, 0, 2, 17, 70, 0, 5, 36, 1, 17, 65, 2, 32, 17, 70, 14, 128, 128, 129, 0, 5, 36, 1,
+			21, 2, 32, 17, 70, 0, 8, 110, 162, 195, 114, 116, 2, 105, 116, 111, 32, 0, 114, 3, 88, 101, 0, 4, 3, 89, 0, 1, 17, 65,
+			2, 32, 14, 128, 128, 129, 0, 1, 101, 115, 101, 2, 32, 0, 2, 119, 12, 0, 99, 2, 17, 71, 0, 115, 0, 115, 5, 1, 1, 17,
+			65, 0, 195, 167, 0, 111, 98, 114, 101, 8, 2, 21, 14, 128, 132, 133, 3, 89, 39, 71, 16, 36, 0, 4, 5, 1, 1, 17, 65, 2,
+			17, 70, 12, 3, 90, 0, 5, 1, 1, 17, 65, 2, 32, 17, 70, 12, 14, 128, 128, 129, 0, 104, 3, 91, 0, 5, 1, 8, 2, 32,
+			3, 109, 89, 0, 5, 1, 8, 2, 32, 31, 3, 109, 89, 38, 0, 5, 4, 8, 2, 17, 67, 3, 124, 89, 0, 4, 5, 1, 1, 17,
+			65, 2, 17, 67, 3, 138, 0, 5, 1, 1, 17, 65, 2, 32, 25, 14, 128, 128, 129, 0, 5, 1, 1, 21, 2, 32, 0, 5, 2, 2,
+			32, 0, 7, 6, 116, 0, 2, 116, 3, 0, 4, 104, 5, 1, 3, 21, 0, 105, 111, 110, 5, 1, 2, 32, 0, 3, 47, 0, 5, 3,
+			2, 32, 17, 67, 3, 47, 10, 0, 8, 2, 32, 3, 47, 36, 0, 4, 5, 2, 2, 101, 32, 3, 76, 0, 5, 2, 2, 105, 0, 5,
+			2, 2, 195, 173, 0, 101, 5, 2, 1, 17, 65, 2, 111, 32, 3, 76, 57, 0, 5, 3, 2, 17, 66, 3, 76, 124, 0, 7, 6, 117,
+			0, 1, 103, 2, 17, 71, 3, 0, 2, 18, 69, 32, 3, 6, 40, 0, 105, 8, 109, 2, 116, 17, 65, 32, 3, 6, 58, 37, 68, 0,
+			105, 2, 32, 3, 6, 121, 0, 4, 3, 40, 0, 1, 114, 2, 17, 65, 0, 1, 114, 2, 32, 17, 65, 0, 2, 97, 0, 2, 101, 17,
+			67, 0, 2, 101, 105, 0, 2, 105, 17, 67, 25, 0, 2, 108, 104, 12, 0, 2, 108, 108, 12, 0, 2, 195, 169, 17, 67, 0, 2, 195,
+			173, 17, 67, 0, 8, 2, 32, 0, 108, 2, 25, 3, 40, 58, 0, 4, 1, 103, 2, 97, 12, 3, 58, 0, 1, 113, 2, 97, 12, 0,
+			2, 17, 65, 0, 2, 32, 17, 65, 0, 2, 105, 117, 0, 4, 105, 3, 121, 0, 121, 0, 109, 2, 17, 67, 3, 128, 65, 0, 110, 104,
+			3, 128, 67, 0, 4, 109, 2, 32, 3, 128, 68, 0, 109, 5, 4, 2, 17, 67, 0, 110, 2, 25, 0, 7, 6, 118, 0, 2, 118, 3,
+			0, 3, 84, 0, 5, 3, 2, 32, 17, 67, 3, 84, 10, 0, 5, 3, 2, 17, 66, 3, 84, 124, 0, 7, 6, 119, 0, 5, 1, 2,
+			32, 3, 21, 0, 5, 4, 8, 3, 40, 0, 3, 58, 0, 5, 2, 8, 2, 32, 3, 72, 6, 35, 71, 55, 57, 40, 0, 5, 1, 8,
+			2, 32, 3, 72, 6, 132, 71, 55, 4, 37, 40, 0, 7, 6, 120, 0, 2, 115, 3, 0, 4, 1, 17, 65, 2, 17, 65, 3, 49, 89,
+			0, 1, 101, 2, 17, 65, 0, 2, 32, 0, 5, 2, 8, 101, 104, 2, 17, 65, 0, 8, 101, 110, 105, 2, 111, 114, 17, 65, 17, 67,
+			0, 8, 111, 2, 105, 0, 8, 111, 2, 195, 173, 0, 8, 114, 97, 109, 0, 4, 2, 195, 179, 32, 3, 88, 0, 8, 101, 2, 17, 65,
+			0, 8, 101, 104, 2, 17, 65, 0, 8, 101, 110, 105, 2, 17, 65, 0, 8, 101, 111, 99, 2, 17, 65, 0, 8, 170, 195, 2, 17, 65,
+			0, 4, 1, 17, 65, 114, 112, 2, 105, 3, 89, 0, 1, 161, 195, 109, 2, 105, 109, 0, 2, 17, 67, 0, 8, 111, 114, 112, 2, 105,
+			109, 17, 65, 0, 8, 117, 97, 0, 8, 117, 111, 114, 116, 2, 101, 0, 8, 117, 111, 114, 116, 2, 195, 169, 114, 0, 99, 2, 17, 71,
+			0, 4, 1, 17, 65, 114, 98, 2, 17, 65, 3, 91, 0, 1, 17, 65, 120, 2, 17, 65, 0, 1, 17, 71, 98, 2, 17, 65, 0, 1,
+			97, 2, 97, 0, 1, 97, 2, 97, 114, 0, 1, 97, 2, 101, 105, 0, 1, 97, 2, 195, 161, 0, 1, 97, 108, 101, 114, 2, 17, 65,
+			0, 1, 97, 114, 103, 2, 17, 65, 0, 1, 101, 108, 97, 2, 97, 0, 1, 101, 109, 2, 17, 65, 0, 1, 105, 97, 2, 17, 65, 0,
+			1, 105, 101, 2, 17, 65, 0, 1, 105, 112, 2, 17, 65, 0, 1, 105, 114, 2, 17, 65, 0, 1, 105, 117, 113, 2, 17, 65, 0, 1,
+			111, 109, 2, 97, 0, 1, 117, 2, 105, 0, 1, 117, 97, 98, 2, 17, 65, 0, 1, 117, 111, 2, 12, 0, 1, 117, 112, 2, 17, 65,
+			0, 2, 17, 65, 0, 2, 17, 65, 120, 17, 65, 0, 2, 105, 113, 117, 0, 5, 1, 1, 101, 2, 17, 67, 17, 65, 0, 5, 1, 1,
+			105, 2, 97, 32, 0, 5, 1, 1, 105, 2, 97, 115, 32, 0, 8, 17, 65, 114, 100, 115, 101, 2, 117, 108, 0, 8, 97, 99, 2, 17,
+			65, 0, 8, 97, 99, 97, 98, 97, 2, 105, 0, 8, 97, 102, 2, 105, 0, 8, 97, 114, 112, 2, 17, 65, 0, 8, 97, 116, 2, 101,
+			0, 8, 101, 2, 117, 32, 0, 8, 101, 108, 102, 2, 97, 0, 8, 101, 116, 2, 117, 103, 111, 32, 0, 8, 101, 118, 2, 17, 65, 0,
+			8, 101, 118, 97, 2, 17, 65, 0, 8, 105, 108, 2, 17, 65, 0, 8, 105, 116, 114, 97, 103, 97, 108, 2, 17, 65, 0, 8, 105, 120,
+			2, 17, 65, 0, 8, 111, 2, 17, 65, 0, 8, 111, 99, 2, 17, 65, 0, 8, 111, 114, 2, 17, 65, 0, 8, 111, 114, 112, 2, 17,
+			65, 0, 8, 111, 114, 114, 97, 2, 101, 0, 8, 117, 98, 2, 111, 32, 0, 8, 117, 108, 2, 17, 65, 0, 8, 169, 195, 109, 2, 105,
+			0, 111, 8, 101, 112, 2, 116, 111, 32, 3, 91, 39, 0, 7, 6, 121, 0, 2, 32, 3, 2, 37, 0, 5, 1, 8, 2, 32, 3, 6,
+			37, 48, 89, 4, 37, 55, 110, 68, 0, 5, 2, 8, 2, 32, 3, 6, 37, 48, 89, 37, 55, 39, 68, 0, 3, 37, 0, 2, 17, 65,
+			3, 57, 0, 7, 6, 122, 0, 2, 122, 3, 0, 4, 3, 88, 0, 1, 21, 2, 32, 17, 65, 0, 1, 21, 2, 32, 17, 70, 0, 5,
+			3, 2, 32, 17, 67, 3, 88, 10, 0, 8, 2, 32, 3, 88, 36, 0, 5, 3, 2, 17, 66, 3, 88, 124, 0, 5, 2, 1, 21, 2,
+			32, 3, 89, 0, 4, 5, 1, 1, 17, 65, 2, 17, 70, 12, 3, 90, 0, 5, 1, 1, 17, 65, 2, 32, 17, 70, 12, 0, 4, 5,
+			1, 1, 17, 65, 2, 17, 67, 3, 91, 0, 5, 1, 1, 17, 65, 2, 32, 17, 67, 0, 5, 1, 1, 21, 2, 32, 0, 122, 8, 105,
+			112, 2, 97, 3, 123, 0, 7, 6, 0, 36, 8, 32, 114, 3, 0, 194, 170, 1, 32, 15, 3, 2, 35, 0, 194, 186, 1, 32, 15, 3,
+			2, 39, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 195, 188, 3, 40, 0, 4,
+			45, 1, 32, 15, 2, 32, 15, 3, 65, 6, 36, 50, 111, 89, 0, 45, 8, 32, 2, 32, 15, 0, 44, 2, 15, 3, 84, 6, 37, 34,
+			81, 40, 55, 132, 0, 4, 195, 159, 3, 89, 0, 195, 167, 0, 36, 3, 89, 37, 83, 51, 6, 130, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts54 = FileInMemory_createWithData (24985, reinterpret_cast<const char *> (&espeakdata_dicts54_data), 
+			U"espeak-1.48.04-source/espeak-data/pt_dict", 
 			U"pt");
-		Collection_addItem (me.peek(), espeakdata_dicts52.transfer());
+		my addItem_move (espeakdata_dicts54.move());
 
-		static unsigned char espeakdata_dicts53_data[26886] = {
-			0, 4, 0, 0, 207, 91, 0, 0, 13, 138, 195, 174, 14, 3, 8, 5, 9, 5, 20, 21, 68, 13, 138, 195, 174, 14, 3, 1, 18, 3,
-			5, 18, 1, 68, 0, 17, 7, 20, 195, 162, 18, 26, 9, 21, 47, 112, 34, 88, 6, 37, 40, 0, 9, 134, 18, 196, 131, 7, 5, 20,
-			65, 6, 195, 61, 4, 137, 66, 9, 4, 95, 48, 15, 6, 72, 36, 0, 0, 0, 9, 198, 16, 85, 5, 72, 210, 78, 66, 0, 0, 13,
+		static unsigned char espeakdata_dicts55_data[25206] = {
+			0, 4, 0, 0, 56, 85, 0, 0, 0, 0, 0, 0, 8, 197, 88, 147, 132, 20, 208, 65, 8, 197, 84, 212, 12, 20, 208, 65, 0, 13,
 			65, 4, 35, 123, 124, 0, 72, 81, 197, 163, 105, 32, 13, 65, 4, 35, 97, 124, 0, 72, 81, 197, 159, 105, 32, 6, 193, 4, 72, 28,
-			32, 0, 20, 71, 56, 144, 201, 16, 80, 213, 52, 50, 37, 76, 124, 72, 36, 49, 6, 40, 65, 0, 0, 0, 0, 21, 65, 8, 98, 117,
-			108, 101, 118, 97, 114, 100, 117, 108, 0, 44, 29, 81, 100, 117, 108, 32, 6, 65, 8, 71, 36, 0, 0, 12, 137, 195, 174, 14, 20, 9,
-			14, 4, 5, 13, 66, 0, 15, 67, 21, 64, 192, 101, 116, 99, 101, 116, 101, 114, 97, 0, 29, 0, 11, 67, 53, 82, 65, 65, 6, 40,
-			57, 35, 0, 7, 196, 77, 80, 197, 4, 66, 7, 196, 49, 80, 197, 4, 66, 7, 196, 17, 80, 197, 4, 66, 6, 195, 84, 225, 5, 28,
-			0, 8, 197, 88, 150, 129, 88, 144, 67, 8, 197, 36, 81, 148, 36, 224, 65, 8, 197, 16, 144, 86, 60, 192, 65, 8, 197, 12, 149, 137,
-			48, 80, 66, 12, 65, 12, 49, 35, 34, 0, 72, 81, 97, 114, 32, 10, 65, 12, 49, 39, 0, 72, 81, 111, 32, 6, 65, 12, 76, 36,
-			0, 0, 12, 201, 65, 33, 84, 85, 66, 78, 16, 83, 137, 67, 9, 198, 4, 115, 206, 37, 50, 64, 68, 0, 11, 136, 16, 196, 131, 19,
-			20, 18, 196, 131, 66, 11, 136, 9, 13, 1, 7, 9, 14, 196, 131, 67, 9, 198, 16, 84, 198, 84, 225, 1, 67, 9, 198, 16, 81, 197,
-			56, 84, 129, 68, 9, 198, 12, 243, 134, 84, 225, 1, 67, 11, 136, 22, 15, 1, 19, 20, 18, 196, 131, 76, 11, 136, 14, 15, 1, 19,
-			20, 18, 196, 131, 77, 11, 136, 22, 15, 1, 19, 20, 18, 196, 131, 77, 13, 4, 95, 8, 1, 3, 107, 6, 35, 76, 36, 49, 0, 0,
-			11, 200, 65, 35, 212, 60, 51, 193, 48, 80, 67, 11, 67, 53, 82, 69, 65, 6, 40, 57, 36, 0, 0, 18, 8, 195, 174, 14, 3, 8,
-			5, 9, 1, 112, 50, 49, 36, 6, 57, 35, 0, 6, 65, 16, 72, 36, 0, 0, 21, 9, 22, 5, 197, 159, 14, 9, 3, 9, 5, 84,
-			36, 91, 50, 37, 76, 6, 37, 36, 0, 10, 135, 16, 195, 162, 14, 20, 5, 3, 65, 20, 9, 195, 174, 14, 1, 9, 14, 20, 5, 1,
-			112, 50, 35, 6, 37, 50, 47, 135, 0, 21, 9, 8, 196, 131, 18, 14, 9, 3, 9, 5, 107, 13, 34, 50, 37, 76, 6, 37, 36, 0,
-			0, 23, 10, 6, 9, 5, 11, 196, 131, 18, 21, 9, 1, 83, 57, 36, 80, 6, 13, 34, 121, 35, 0, 76, 0, 9, 134, 26, 1, 8,
-			196, 131, 18, 65, 12, 137, 3, 12, 196, 131, 20, 9, 14, 196, 131, 67, 14, 139, 195, 174, 14, 7, 8, 9, 15, 14, 20, 5, 1, 67,
-			10, 135, 7, 195, 162, 14, 4, 5, 1, 66, 0, 8, 197, 12, 147, 133, 88, 16, 67, 6, 65, 20, 36, 0, 14, 7, 65, 20, 57, 36,
-			0, 72, 17, 142, 4, 21, 13, 14, 5, 1, 22, 15, 1, 19, 20, 18, 196, 131, 79, 0, 14, 5, 20, 18, 196, 131, 9, 47, 14, 16,
-			13, 6, 37, 0, 29, 13, 16, 18, 5, 197, 159, 5, 4, 9, 14, 197, 163, 9, 5, 48, 14, 16, 36, 91, 36, 72, 37, 50, 123, 6,
-			37, 36, 0, 0, 9, 198, 76, 84, 150, 36, 50, 73, 66, 10, 199, 5, 34, 9, 80, 80, 212, 84, 68, 9, 198, 4, 197, 3, 84, 149,
-			129, 67, 9, 198, 4, 115, 206, 37, 49, 65, 68, 9, 134, 1, 197, 159, 5, 26, 1, 67, 0, 14, 139, 1, 12, 1, 12, 20, 196, 131,
-			9, 5, 18, 9, 66, 10, 135, 19, 5, 13, 196, 131, 14, 1, 67, 0, 8, 197, 72, 85, 133, 56, 144, 67, 6, 65, 24, 83, 36, 0,
-			0, 0, 9, 134, 3, 5, 18, 197, 159, 9, 66, 0, 11, 200, 65, 35, 198, 21, 51, 210, 36, 144, 66, 7, 196, 5, 64, 67, 4, 67,
-			0, 8, 197, 89, 82, 69, 80, 80, 65, 8, 197, 76, 83, 69, 56, 80, 65, 8, 197, 16, 81, 137, 56, 144, 67, 16, 69, 61, 34, 67,
-			84, 208, 39, 16, 124, 49, 4, 40, 65, 0, 76, 8, 132, 1, 197, 159, 1, 66, 28, 6, 65, 28, 75, 36, 0, 0, 12, 137, 5, 24,
-			16, 12, 15, 18, 196, 131, 13, 67, 0, 13, 138, 3, 15, 12, 1, 2, 15, 18, 196, 131, 13, 68, 9, 198, 72, 81, 197, 56, 84, 129,
-			68, 0, 7, 196, 64, 19, 9, 16, 65, 11, 67, 4, 99, 1, 35, 83, 55, 6, 35, 0, 0, 7, 65, 32, 107, 35, 91, 0, 0, 12,
-			137, 195, 174, 14, 22, 195, 162, 18, 20, 9, 67, 0, 19, 70, 76, 84, 150, 36, 50, 85, 89, 36, 34, 84, 6, 37, 76, 6, 57, 40,
-			0, 0, 15, 67, 12, 20, 133, 49, 35, 34, 36, 55, 0, 72, 81, 108, 32, 7, 195, 12, 20, 133, 73, 28, 10, 1, 35, 72, 57, 6,
-			36, 88, 0, 27, 0, 11, 65, 36, 57, 117, 0, 72, 81, 97, 105, 32, 12, 65, 36, 57, 35, 65, 0, 72, 81, 97, 109, 32, 13, 65,
-			36, 37, 35, 91, 0, 72, 81, 97, 197, 159, 32, 12, 65, 36, 57, 35, 34, 0, 72, 81, 97, 114, 32, 0, 0, 10, 67, 4, 84, 128,
-			6, 117, 36, 34, 0, 6, 195, 48, 244, 128, 76, 13, 1, 38, 35, 65, 48, 36, 34, 89, 35, 50, 72, 0, 0, 10, 135, 15, 2, 197,
-			163, 9, 14, 21, 67, 10, 135, 7, 196, 131, 12, 2, 21, 9, 66, 10, 67, 4, 99, 9, 35, 83, 55, 37, 0, 0, 6, 65, 40, 90,
-			36, 0, 0, 17, 70, 52, 19, 129, 28, 84, 128, 65, 6, 36, 50, 36, 75, 13, 34, 0, 6, 131, 22, 196, 131, 72, 9, 198, 4, 49,
-			83, 80, 244, 128, 78, 0, 9, 198, 88, 240, 201, 24, 84, 129, 68, 15, 6, 4, 196, 131, 18, 21, 9, 72, 13, 16, 58, 6, 37, 0,
-			9, 198, 4, 49, 83, 80, 244, 129, 78, 13, 1, 42, 35, 89, 47, 36, 16, 37, 89, 49, 0, 27, 0, 14, 139, 4, 5, 19, 3, 8,
-			9, 4, 5, 197, 163, 9, 66, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 15, 140, 3, 21, 14, 15, 1, 197, 159, 20, 5, 197, 163,
-			9, 66, 6, 65, 44, 49, 35, 0, 0, 10, 135, 4, 15, 13, 9, 14, 196, 131, 65, 12, 137, 3, 15, 14, 3, 21, 18, 196, 131, 13,
-			67, 16, 70, 8, 195, 199, 28, 84, 128, 71, 55, 6, 39, 81, 13, 34, 0, 0, 11, 136, 5, 12, 9, 13, 9, 14, 196, 131, 66, 15,
-			6, 16, 196, 131, 12, 5, 1, 48, 35, 55, 36, 6, 35, 0, 9, 198, 48, 81, 201, 24, 84, 129, 68, 9, 198, 16, 83, 9, 8, 84,
-			129, 68, 10, 1, 46, 48, 40, 50, 49, 47, 0, 27, 0, 9, 134, 19, 21, 6, 196, 131, 18, 65, 8, 1, 47, 89, 55, 36, 91, 0,
-			0, 10, 135, 20, 195, 162, 14, 196, 131, 18, 65, 13, 65, 48, 55, 35, 91, 0, 72, 81, 97, 197, 159, 32, 12, 65, 48, 55, 35, 34,
-			0, 72, 81, 97, 114, 32, 12, 65, 48, 55, 39, 34, 0, 72, 81, 111, 114, 32, 11, 65, 48, 55, 117, 0, 72, 81, 97, 105, 32, 15,
-			65, 48, 55, 35, 141, 124, 0, 72, 81, 97, 197, 163, 105, 32, 12, 65, 48, 55, 35, 65, 0, 72, 81, 97, 109, 32, 11, 65, 48, 55,
-			114, 0, 72, 81, 97, 117, 32, 10, 65, 48, 55, 35, 0, 72, 81, 97, 32, 18, 8, 14, 15, 21, 196, 131, 12, 5, 1, 50, 6, 39,
-			40, 13, 55, 135, 0, 0, 10, 135, 4, 196, 131, 21, 14, 196, 131, 67, 10, 135, 3, 195, 162, 14, 20, 5, 3, 65, 12, 137, 18, 196,
-			131, 19, 3, 15, 12, 5, 1, 67, 0, 11, 136, 13, 9, 197, 159, 21, 14, 196, 131, 65, 10, 199, 24, 147, 15, 104, 241, 137, 36, 68,
-			13, 138, 195, 174, 14, 22, 195, 162, 18, 20, 5, 1, 67, 0, 9, 198, 16, 148, 133, 13, 67, 210, 66, 0, 8, 197, 48, 245, 137, 81,
-			80, 67, 12, 65, 52, 65, 35, 91, 0, 72, 81, 97, 83, 32, 12, 65, 52, 65, 35, 34, 0, 72, 81, 97, 114, 32, 12, 65, 52, 65,
-			39, 34, 0, 72, 81, 111, 114, 32, 8, 197, 72, 81, 201, 104, 16, 67, 0, 12, 137, 197, 159, 1, 16, 20, 5, 12, 5, 1, 65, 0,
-			13, 138, 195, 174, 14, 6, 12, 15, 18, 9, 20, 21, 68, 12, 137, 4, 5, 19, 3, 15, 16, 196, 131, 18, 66, 0, 10, 135, 6, 18,
-			195, 162, 14, 20, 21, 66, 0, 8, 197, 72, 84, 5, 104, 144, 65, 8, 197, 64, 19, 9, 104, 144, 65, 8, 197, 56, 85, 5, 16, 80,
-			65, 8, 197, 52, 241, 5, 48, 80, 66, 12, 65, 56, 50, 39, 34, 0, 72, 81, 111, 114, 32, 12, 65, 56, 50, 39, 34, 0, 72, 81,
-			111, 114, 32, 10, 65, 56, 50, 35, 0, 72, 81, 97, 32, 13, 65, 56, 50, 35, 91, 0, 72, 81, 97, 197, 159, 32, 10, 65, 56, 50,
-			39, 0, 72, 81, 111, 32, 8, 197, 16, 81, 197, 72, 16, 67, 8, 197, 13, 80, 197, 72, 144, 67, 11, 136, 195, 174, 14, 19, 21, 197,
-			159, 9, 77, 11, 5, 95, 48, 1, 14, 4, 10, 91, 37, 0, 0, 8, 133, 21, 18, 196, 131, 13, 66, 11, 136, 197, 163, 5, 1, 16,
-			196, 131, 14, 65, 0, 9, 198, 48, 240, 193, 48, 150, 129, 68, 0, 0, 8, 197, 53, 81, 197, 80, 80, 65, 11, 136, 2, 21, 3, 21,
-			18, 196, 131, 13, 67, 11, 136, 1, 4, 13, 9, 18, 196, 131, 13, 67, 18, 8, 14, 9, 13, 196, 131, 14, 21, 9, 50, 37, 65, 13,
-			50, 6, 121, 0, 4, 193, 60, 72, 4, 193, 60, 72, 0, 11, 136, 26, 4, 18, 1, 22, 196, 131, 14, 65, 12, 137, 195, 174, 14, 3,
-			21, 18, 1, 10, 1, 68, 10, 1, 61, 36, 81, 6, 35, 55, 0, 27, 0, 13, 138, 1, 12, 196, 131, 20, 21, 18, 196, 131, 13, 68,
-			0, 6, 195, 16, 244, 137, 66, 0, 11, 136, 14, 196, 131, 22, 196, 131, 12, 9, 67, 9, 134, 8, 15, 12, 2, 196, 131, 66, 10, 1,
-			64, 35, 16, 6, 39, 50, 72, 0, 6, 65, 64, 48, 36, 0, 0, 0, 9, 198, 5, 98, 67, 84, 197, 21, 68, 0, 7, 196, 21, 64,
-			76, 4, 67, 0, 7, 65, 68, 49, 57, 40, 0, 0, 8, 133, 19, 196, 131, 16, 1, 66, 9, 198, 12, 19, 3, 84, 192, 64, 67, 0,
-			9, 134, 3, 195, 162, 18, 13, 9, 66, 18, 70, 16, 83, 193, 72, 80, 197, 72, 36, 138, 34, 36, 76, 6, 36, 0, 8, 6, 195, 84,
-			224, 64, 77, 0, 7, 196, 61, 48, 193, 72, 65, 7, 196, 36, 193, 143, 88, 65, 6, 195, 84, 225, 73, 73, 0, 8, 197, 80, 84, 141,
-			36, 224, 65, 8, 197, 24, 245, 2, 4, 192, 65, 8, 197, 8, 20, 141, 4, 224, 65, 11, 136, 6, 18, 5, 13, 196, 131, 20, 1, 67,
-			6, 65, 72, 34, 36, 0, 0, 12, 137, 195, 174, 14, 7, 8, 9, 197, 163, 9, 67, 6, 194, 5, 32, 76, 32, 0, 0, 7, 196, 64,
-			241, 5, 4, 66, 7, 196, 77, 81, 197, 4, 66, 0, 8, 197, 72, 81, 213, 48, 144, 65, 11, 136, 4, 9, 19, 20, 18, 196, 131, 13,
-			66, 8, 197, 12, 195, 195, 61, 64, 65, 10, 65, 76, 89, 39, 0, 72, 81, 111, 32, 12, 65, 76, 89, 39, 34, 0, 72, 81, 111, 114,
-			32, 12, 65, 76, 89, 35, 34, 0, 72, 81, 97, 114, 32, 0, 18, 70, 77, 0, 78, 36, 243, 5, 89, 48, 35, 50, 37, 6, 39, 55,
-			36, 0, 12, 137, 16, 196, 131, 19, 20, 18, 196, 131, 13, 66, 9, 134, 3, 1, 16, 196, 131, 20, 65, 17, 70, 5, 4, 143, 64, 244,
-			192, 35, 48, 14, 16, 39, 48, 6, 39, 0, 0, 10, 199, 77, 80, 133, 77, 66, 77, 4, 68, 10, 199, 65, 33, 76, 84, 225, 197, 4,
-			67, 18, 70, 12, 243, 148, 36, 229, 65, 49, 39, 50, 47, 37, 50, 58, 6, 35, 0, 0, 7, 196, 12, 17, 133, 4, 66, 7, 196, 89,
-			35, 201, 4, 66, 0, 11, 136, 26, 1, 18, 26, 196, 131, 18, 9, 65, 8, 197, 76, 84, 150, 21, 32, 65, 11, 136, 16, 196, 131, 19,
-			196, 131, 18, 9, 65, 6, 65, 80, 47, 36, 0, 0, 9, 198, 25, 32, 71, 20, 65, 64, 65, 0, 0, 7, 196, 65, 34, 86, 36, 67,
-			0, 0, 12, 67, 85, 0, 192, 40, 48, 36, 76, 6, 36, 0, 0, 12, 137, 16, 196, 131, 19, 20, 18, 196, 131, 22, 65, 16, 141, 195,
-			174, 14, 3, 196, 131, 16, 5, 18, 9, 12, 15, 18, 67, 9, 134, 196, 131, 12, 15, 18, 1, 77, 0, 10, 135, 20, 1, 2, 196, 131,
-			18, 1, 65, 6, 195, 48, 245, 137, 66, 0, 19, 8, 19, 16, 21, 14, 5, 197, 163, 9, 89, 48, 6, 40, 50, 36, 123, 124, 0, 16,
-			69, 21, 131, 212, 36, 48, 36, 81, 88, 6, 39, 47, 37, 49, 0, 13, 65, 88, 84, 35, 91, 0, 72, 81, 97, 197, 159, 32, 12, 65,
-			88, 84, 35, 34, 0, 72, 81, 97, 114, 32, 7, 193, 88, 72, 81, 111, 32, 12, 65, 88, 84, 35, 65, 0, 72, 81, 97, 109, 32, 11,
-			65, 88, 84, 114, 0, 72, 81, 97, 117, 32, 15, 65, 88, 84, 35, 141, 124, 0, 72, 81, 97, 197, 163, 105, 32, 8, 197, 81, 33, 67,
-			20, 16, 66, 8, 197, 12, 243, 147, 80, 16, 66, 11, 136, 16, 196, 131, 18, 196, 131, 19, 9, 67, 11, 136, 195, 174, 14, 19, 21, 197,
-			163, 9, 77, 6, 65, 88, 84, 36, 0, 0, 8, 133, 16, 196, 131, 20, 21, 65, 9, 198, 16, 83, 211, 20, 34, 64, 67, 6, 194, 5,
-			48, 76, 32, 0, 9, 134, 20, 196, 131, 18, 9, 9, 65, 13, 138, 18, 5, 197, 163, 9, 14, 5, 197, 163, 9, 66, 10, 199, 17, 84,
-			133, 72, 147, 15, 72, 66, 0, 14, 139, 18, 196, 131, 13, 195, 162, 14, 5, 197, 163, 9, 66, 7, 196, 52, 243, 9, 52, 65, 10, 135,
-			12, 1, 7, 196, 131, 18, 5, 65, 14, 68, 29, 33, 79, 36, 81, 14, 16, 36, 6, 39, 57, 0, 7, 196, 17, 80, 197, 52, 65, 10,
-			135, 3, 196, 131, 18, 15, 18, 1, 73, 10, 135, 3, 196, 131, 18, 15, 18, 1, 73, 17, 4, 95, 49, 77, 52, 6, 40, 50, 71, 37,
-			55, 6, 57, 39, 50, 0, 0, 9, 198, 76, 147, 66, 60, 194, 67, 66, 8, 197, 13, 33, 83, 13, 80, 66, 18, 4, 95, 49, 77, 53,
-			6, 40, 50, 71, 37, 55, 6, 57, 35, 34, 72, 0, 12, 65, 92, 72, 40, 71, 55, 40, 6, 84, 36, 0, 0, 12, 137, 1, 12, 5,
-			18, 7, 196, 131, 20, 21, 68, 0, 0, 7, 196, 52, 147, 137, 52, 65, 14, 139, 195, 174, 14, 6, 21, 14, 4, 196, 131, 20, 21, 68,
-			14, 139, 195, 174, 14, 3, 21, 18, 3, 196, 131, 20, 21, 68, 0, 13, 4, 95, 49, 77, 49, 4, 39, 65, 6, 37, 36, 0, 7, 65,
-			96, 37, 49, 89, 0, 0, 11, 136, 197, 159, 13, 5, 3, 8, 5, 18, 65, 17, 4, 95, 49, 77, 50, 6, 40, 50, 65, 37, 55, 6,
-			57, 39, 50, 0, 0, 9, 198, 52, 146, 140, 60, 16, 197, 65, 6, 195, 84, 229, 76, 77, 18, 4, 95, 49, 77, 51, 6, 40, 50, 65,
-			37, 55, 6, 57, 35, 34, 72, 0, 0, 7, 196, 48, 144, 133, 72, 65, 7, 196, 65, 33, 68, 4, 66, 11, 67, 53, 84, 137, 65, 40,
-			34, 6, 37, 0, 0, 11, 136, 16, 195, 162, 14, 20, 5, 3, 5, 65, 10, 65, 100, 6, 37, 81, 34, 36, 49, 0, 0, 0, 6, 195,
-			5, 84, 128, 65, 9, 134, 8, 196, 131, 3, 21, 9, 67, 0, 7, 196, 80, 83, 137, 76, 65, 12, 68, 80, 19, 148, 36, 47, 35, 50,
-			47, 37, 0, 6, 195, 84, 229, 73, 73, 0, 11, 136, 1, 12, 5, 7, 5, 197, 163, 9, 66, 7, 65, 104, 88, 36, 47, 0, 0, 12,
-			137, 19, 195, 162, 13, 2, 196, 131, 20, 1, 65, 9, 198, 64, 243, 9, 80, 144, 192, 66, 8, 133, 2, 15, 197, 163, 9, 66, 8, 133,
-			196, 131, 19, 20, 1, 77, 0, 9, 198, 77, 68, 133, 13, 84, 129, 67, 0, 7, 196, 76, 17, 5, 4, 66, 7, 196, 88, 81, 5, 4,
-			66, 7, 196, 25, 81, 197, 4, 66, 0, 11, 136, 197, 159, 15, 1, 18, 5, 3, 9, 65, 8, 197, 25, 83, 7, 21, 32, 65, 0, 16,
-			141, 195, 174, 14, 197, 163, 5, 12, 5, 7, 5, 197, 163, 9, 67, 12, 137, 195, 174, 13, 2, 195, 162, 3, 19, 9, 67, 0, 0, 0,
-			8, 197, 53, 83, 20, 61, 32, 73, 0, 9, 198, 64, 20, 148, 20, 225, 64, 67, 14, 5, 5, 197, 159, 20, 9, 57, 36, 91, 47, 124,
-			0, 76, 5, 194, 12, 16, 72, 0, 15, 140, 195, 174, 14, 20, 195, 162, 13, 16, 9, 14, 196, 131, 66, 0, 7, 196, 76, 19, 22, 4,
-			66, 10, 135, 1, 3, 5, 197, 159, 20, 9, 72, 0, 8, 197, 48, 147, 135, 20, 16, 66, 8, 132, 1, 197, 163, 9, 76, 32, 0, 9,
-			198, 65, 35, 214, 20, 226, 64, 67, 12, 137, 1, 4, 196, 131, 16, 15, 19, 20, 9, 68, 0, 10, 199, 77, 84, 5, 73, 98, 90, 4,
-			68, 0, 7, 196, 53, 81, 213, 72, 65, 10, 135, 6, 1, 3, 5, 197, 163, 9, 65, 10, 135, 4, 21, 3, 5, 197, 163, 9, 65, 0,
-			11, 136, 20, 18, 1, 7, 5, 197, 163, 9, 65, 11, 136, 15, 1, 19, 16, 5, 197, 163, 9, 65, 11, 136, 8, 1, 9, 4, 5, 197,
-			163, 9, 65, 11, 136, 3, 18, 5, 4, 5, 197, 163, 9, 65, 11, 136, 1, 4, 21, 3, 5, 197, 163, 9, 66, 11, 136, 195, 174, 14,
-			3, 1, 18, 14, 1, 67, 11, 136, 195, 174, 14, 20, 5, 197, 163, 9, 67, 11, 136, 19, 21, 14, 20, 5, 197, 163, 9, 77, 0, 12,
-			137, 197, 163, 1, 14, 4, 196, 131, 18, 1, 65, 12, 137, 4, 5, 4, 21, 3, 5, 197, 163, 9, 66, 5, 194, 5, 80, 76, 0, 13,
-			138, 16, 18, 15, 1, 19, 16, 5, 197, 163, 9, 65, 13, 138, 16, 18, 5, 6, 1, 3, 5, 197, 163, 9, 66, 13, 138, 3, 18, 5,
-			197, 159, 20, 5, 197, 163, 9, 65, 0, 13, 68, 88, 243, 21, 52, 84, 39, 55, 6, 40, 65, 0, 0, 11, 136, 12, 21, 3, 18, 196,
-			131, 20, 21, 67, 0, 8, 133, 16, 196, 131, 19, 1, 66, 0, 13, 138, 22, 9, 14, 15, 22, 196, 131, 197, 163, 9, 20, 13, 138, 14,
-			21, 13, 196, 131, 18, 196, 131, 20, 21, 68, 0, 14, 139, 22, 196, 131, 20, 196, 131, 13, 196, 131, 20, 21, 68, 11, 200, 64, 244, 148,
-			60, 48, 76, 37, 80, 68, 9, 134, 16, 196, 131, 3, 21, 18, 65, 15, 139, 3, 21, 13, 16, 196, 131, 18, 196, 131, 20, 21, 67, 18,
-			0, 15, 140, 26, 4, 18, 21, 14, 3, 9, 14, 196, 131, 20, 21, 68, 11, 136, 197, 159, 15, 1, 18, 5, 3, 5, 65, 15, 140, 16,
-			9, 5, 16, 20, 196, 131, 14, 196, 131, 20, 21, 68, 11, 136, 195, 174, 14, 3, 8, 5, 7, 1, 67, 0, 0, 9, 134, 18, 195, 162,
-			14, 10, 9, 66, 0, 11, 67, 48, 147, 9, 55, 6, 37, 55, 37, 0, 7, 196, 80, 84, 212, 4, 66, 10, 135, 1, 7, 196, 131, 197,
-			163, 1, 67, 0, 8, 197, 25, 32, 71, 20, 64, 65, 0, 20, 145, 195, 174, 14, 20, 18, 5, 4, 5, 19, 3, 8, 9, 26, 196, 131,
-			20, 21, 70, 9, 198, 24, 197, 73, 21, 32, 64, 67, 9, 198, 20, 229, 77, 21, 32, 64, 68, 0, 0, 0, 0, 8, 133, 16, 196, 131,
-			18, 21, 66, 9, 198, 52, 244, 195, 61, 96, 64, 65, 9, 198, 65, 35, 205, 61, 96, 64, 67, 9, 198, 12, 243, 131, 85, 32, 64, 67,
-			0, 11, 136, 3, 18, 9, 22, 196, 131, 197, 163, 65, 0, 14, 139, 19, 21, 19, 197, 163, 9, 14, 5, 197, 163, 9, 66, 14, 139, 13,
-			5, 14, 197, 163, 9, 14, 5, 197, 163, 9, 66, 8, 133, 4, 21, 16, 196, 131, 28, 0, 8, 197, 76, 147, 135, 85, 32, 65, 8, 197,
-			12, 19, 131, 21, 32, 65, 0, 14, 139, 9, 14, 20, 5, 18, 19, 5, 3, 20, 196, 131, 67, 9, 198, 36, 81, 148, 36, 225, 64, 65,
-			9, 198, 24, 197, 73, 21, 33, 64, 65, 12, 137, 195, 174, 14, 19, 196, 131, 197, 159, 9, 77, 0, 13, 138, 20, 15, 22, 1, 18, 196,
-			131, 197, 159, 9, 66, 11, 136, 3, 195, 162, 14, 5, 16, 196, 131, 65, 9, 134, 3, 196, 131, 26, 14, 9, 66, 0, 12, 67, 13, 33,
-			65, 49, 14, 16, 36, 6, 35, 0, 6, 195, 5, 97, 65, 78, 10, 135, 196, 131, 19, 20, 5, 9, 1, 77, 0, 0, 9, 198, 76, 147,
-			135, 85, 33, 64, 65, 0, 13, 138, 197, 163, 196, 131, 14, 4, 196, 131, 18, 9, 65, 13, 138, 3, 196, 131, 19, 196, 131, 20, 15, 18,
-			9, 68, 7, 195, 61, 34, 64, 72, 8, 0, 7, 196, 92, 80, 133, 72, 65, 11, 200, 56, 244, 212, 36, 210, 76, 61, 32, 65, 6, 195,
-			5, 97, 77, 76, 0, 8, 197, 52, 84, 135, 20, 16, 66, 0, 9, 198, 16, 144, 86, 60, 194, 64, 65, 0, 6, 195, 37, 98, 64, 66,
-			17, 6, 3, 196, 131, 20, 18, 5, 49, 6, 13, 47, 14, 16, 36, 0, 28, 0, 12, 137, 20, 15, 22, 1, 18, 196, 131, 197, 159, 66,
-			11, 200, 64, 20, 148, 20, 225, 82, 20, 144, 67, 0, 8, 197, 76, 19, 20, 20, 16, 66, 16, 69, 61, 32, 78, 28, 80, 6, 39, 14,
-			16, 37, 50, 75, 124, 0, 8, 197, 53, 86, 137, 12, 16, 65, 8, 197, 77, 83, 148, 20, 208, 77, 0, 0, 10, 199, 16, 83, 79, 57,
-			53, 18, 4, 67, 0, 12, 137, 197, 163, 1, 14, 197, 163, 15, 197, 159, 65, 10, 135, 16, 9, 3, 196, 131, 20, 21, 67, 13, 68, 52,
-			81, 9, 84, 65, 6, 36, 72, 57, 40, 0, 10, 135, 12, 5, 7, 196, 131, 20, 21, 67, 6, 195, 80, 19, 5, 77, 0, 8, 197, 24,
-			145, 82, 81, 80, 66, 11, 136, 1, 16, 21, 3, 196, 131, 20, 21, 68, 8, 197, 37, 160, 149, 80, 144, 67, 12, 137, 3, 5, 12, 196,
-			131, 12, 1, 12, 20, 79, 0, 12, 137, 21, 18, 26, 9, 3, 196, 131, 20, 21, 68, 12, 137, 1, 18, 21, 14, 3, 196, 131, 20, 21,
-			68, 0, 13, 138, 8, 21, 18, 4, 21, 3, 196, 131, 20, 21, 68, 13, 138, 1, 12, 21, 14, 5, 3, 196, 131, 20, 21, 68, 9, 134,
-			16, 18, 196, 131, 10, 9, 66, 0, 10, 135, 14, 5, 3, 196, 131, 10, 9, 67, 14, 139, 195, 174, 14, 18, 5, 7, 9, 19, 20, 18,
-			1, 68, 0, 15, 140, 195, 174, 14, 3, 18, 5, 14, 7, 196, 131, 20, 21, 68, 15, 140, 195, 174, 14, 3, 196, 131, 18, 3, 196, 131,
-			20, 21, 68, 11, 136, 195, 174, 13, 16, 12, 9, 14, 9, 67, 0, 0, 0, 12, 68, 100, 18, 15, 60, 57, 35, 107, 6, 40, 0, 9,
-			134, 197, 159, 21, 9, 5, 18, 65, 9, 198, 64, 20, 148, 20, 225, 82, 67, 7, 196, 65, 84, 148, 4, 66, 7, 196, 5, 1, 76, 4,
-			67, 17, 7, 22, 15, 197, 159, 20, 18, 9, 84, 39, 91, 47, 16, 37, 0, 77, 17, 7, 14, 15, 197, 159, 20, 18, 9, 50, 39, 91,
-			47, 16, 37, 0, 77, 0, 19, 70, 36, 229, 5, 73, 5, 83, 37, 50, 47, 36, 14, 16, 48, 6, 40, 89, 0, 0, 9, 198, 60, 36,
-			197, 73, 96, 64, 67, 9, 198, 53, 84, 141, 85, 32, 64, 67, 0, 9, 198, 81, 34, 77, 37, 65, 77, 66, 9, 134, 7, 18, 5, 197,
-			159, 9, 66, 0, 0, 0, 9, 198, 21, 129, 67, 85, 64, 64, 68, 9, 198, 5, 50, 71, 85, 32, 64, 68, 0, 0, 12, 137, 6, 15,
-			14, 5, 20, 9, 3, 196, 131, 66, 16, 7, 1, 18, 196, 131, 197, 163, 9, 35, 34, 6, 13, 123, 124, 0, 6, 195, 48, 148, 9, 66,
-			14, 68, 61, 34, 67, 20, 39, 16, 124, 76, 4, 36, 0, 75, 0, 8, 197, 21, 128, 77, 20, 224, 66, 11, 136, 195, 174, 14, 6, 21,
-			14, 4, 1, 67, 0, 9, 198, 52, 20, 148, 61, 33, 64, 65, 9, 198, 16, 240, 212, 61, 33, 64, 65, 0, 6, 195, 5, 101, 64, 66,
-			0, 12, 137, 16, 18, 5, 15, 3, 21, 16, 196, 131, 68, 0, 8, 197, 13, 32, 84, 21, 32, 65, 0, 8, 133, 20, 196, 131, 9, 5,
-			66, 6, 194, 4, 144, 76, 32, 5, 194, 12, 80, 76, 6, 194, 4, 144, 72, 28, 8, 66, 20, 16, 57, 35, 0, 76, 0, 9, 198, 88,
-			144, 212, 61, 34, 73, 66, 10, 135, 197, 159, 21, 2, 18, 5, 4, 65, 13, 138, 3, 5, 20, 196, 131, 197, 163, 21, 9, 5, 67, 0,
-			7, 196, 53, 86, 137, 44, 65, 16, 7, 3, 5, 1, 21, 197, 159, 21, 76, 135, 6, 40, 91, 40, 0, 0, 8, 197, 84, 212, 12, 20,
-			16, 66, 11, 136, 4, 5, 197, 163, 9, 14, 5, 1, 67, 15, 140, 195, 174, 14, 22, 196, 131, 18, 20, 5, 10, 5, 1, 68, 6, 195,
-			12, 83, 0, 76, 0, 9, 198, 52, 20, 148, 61, 34, 64, 65, 0, 13, 138, 3, 196, 131, 12, 196, 131, 21, 26, 5, 1, 68, 10, 199,
-			56, 144, 201, 84, 225, 76, 20, 77, 0, 7, 196, 88, 81, 5, 72, 66, 7, 196, 72, 17, 1, 72, 65, 7, 196, 48, 145, 5, 72, 65,
-			11, 135, 20, 15, 20, 21, 197, 159, 9, 65, 28, 0, 8, 197, 36, 224, 77, 36, 48, 67, 8, 197, 32, 242, 15, 80, 80, 65, 11, 136,
-			3, 195, 162, 20, 21, 197, 159, 9, 65, 8, 197, 52, 241, 5, 72, 16, 67, 8, 197, 13, 85, 133, 56, 144, 67, 13, 69, 16, 242, 76,
-			20, 16, 72, 6, 120, 55, 135, 0, 0, 9, 198, 64, 144, 212, 61, 34, 64, 65, 9, 198, 24, 16, 212, 61, 34, 64, 65, 5, 194, 13,
-			80, 72, 0, 0, 0, 11, 136, 2, 15, 13, 2, 196, 131, 14, 5, 65, 0, 17, 70, 77, 84, 144, 49, 84, 192, 89, 40, 16, 48, 55,
-			6, 40, 89, 0, 12, 137, 13, 5, 14, 197, 163, 9, 14, 5, 13, 66, 0, 10, 199, 16, 84, 195, 32, 145, 5, 52, 66, 0, 12, 67,
-			80, 22, 9, 47, 6, 35, 49, 89, 37, 0, 13, 68, 64, 149, 73, 20, 48, 6, 37, 40, 37, 36, 0, 7, 196, 13, 81, 197, 80, 65,
-			14, 139, 3, 12, 196, 131, 14, 197, 163, 196, 131, 14, 5, 65, 0, 11, 136, 195, 174, 14, 7, 18, 9, 10, 9, 67, 0, 0, 9, 198,
-			64, 144, 212, 61, 34, 73, 65, 0, 7, 196, 72, 244, 212, 36, 66, 0, 0, 9, 198, 56, 147, 69, 72, 80, 64, 67, 9, 198, 16, 245,
-			133, 16, 80, 64, 67, 0, 0, 7, 196, 9, 80, 213, 72, 65, 7, 196, 60, 53, 80, 4, 67, 0, 8, 197, 80, 84, 141, 20, 224, 65,
-			0, 12, 137, 19, 20, 18, 195, 162, 14, 7, 5, 13, 65, 9, 198, 12, 19, 129, 64, 80, 64, 67, 0, 11, 67, 72, 80, 76, 34, 36,
-			6, 35, 55, 0, 10, 199, 36, 228, 208, 20, 53, 15, 72, 66, 13, 138, 195, 174, 14, 20, 195, 162, 13, 16, 12, 1, 67, 0, 7, 196,
-			81, 33, 67, 84, 66, 7, 196, 48, 147, 149, 96, 65, 0, 0, 9, 198, 60, 34, 67, 20, 149, 64, 67, 0, 0, 11, 200, 36, 224, 77,
-			36, 50, 76, 61, 32, 67, 10, 135, 18, 5, 21, 197, 159, 5, 1, 67, 7, 196, 28, 243, 133, 4, 66, 10, 135, 3, 5, 18, 197, 159,
-			5, 1, 66, 13, 68, 5, 32, 213, 36, 35, 34, 49, 40, 6, 37, 0, 0, 8, 197, 72, 240, 133, 73, 64, 65, 6, 195, 84, 227, 210,
-			73, 0, 11, 66, 16, 80, 72, 135, 0, 72, 81, 97, 32, 25, 66, 16, 80, 72, 2, 36, 15, 35, 47, 6, 40, 50, 76, 124, 0, 8,
-			81, 97, 116, 117, 110, 99, 105, 32, 14, 66, 16, 80, 72, 36, 55, 35, 0, 72, 81, 108, 97, 32, 5, 194, 16, 80, 72, 0, 7, 195,
-			88, 82, 64, 76, 32, 0, 7, 196, 72, 84, 212, 84, 65, 7, 196, 104, 37, 82, 4, 66, 0, 8, 197, 4, 210, 78, 80, 144, 67, 0,
-			9, 198, 20, 225, 82, 28, 146, 64, 20, 8, 133, 18, 196, 131, 3, 9, 66, 0, 10, 199, 65, 35, 193, 77, 1, 84, 20, 65, 19, 70,
-			24, 20, 141, 4, 50, 69, 83, 35, 14, 16, 65, 35, 76, 6, 37, 36, 0, 9, 134, 1, 13, 196, 131, 7, 9, 67, 0, 11, 67, 80,
-			21, 9, 47, 6, 35, 47, 37, 0, 16, 4, 95, 4, 16, 20, 10, 84, 6, 37, 34, 81, 40, 55, 13, 0, 0, 15, 69, 64, 20, 143,
-			16, 144, 48, 35, 16, 39, 72, 6, 37, 0, 0, 8, 133, 16, 196, 131, 4, 21, 66, 0, 0, 8, 196, 36, 228, 213, 48, 65, 18, 6,
-			195, 32, 147, 69, 66, 0, 15, 69, 77, 84, 208, 85, 48, 89, 40, 89, 48, 6, 40, 89, 0, 14, 69, 32, 147, 132, 85, 48, 37, 50,
-			72, 6, 40, 89, 0, 0, 0, 0, 22, 72, 76, 83, 73, 65, 35, 196, 85, 48, 89, 36, 65, 37, 48, 16, 39, 72, 6, 40, 89, 0,
-			6, 195, 73, 83, 1, 66, 7, 196, 21, 99, 195, 4, 67, 13, 68, 61, 53, 15, 36, 39, 89, 47, 39, 6, 37, 0, 0, 0, 9, 198,
-			64, 145, 82, 16, 83, 64, 65, 6, 194, 4, 192, 72, 28, 0, 0, 7, 196, 76, 148, 212, 4, 66, 10, 3, 95, 35, 57, 47, 6, 35,
-			71, 0, 13, 4, 95, 20, 12, 4, 47, 6, 37, 55, 72, 13, 0, 0, 0, 9, 198, 80, 82, 135, 32, 80, 64, 66, 9, 198, 65, 85,
-			5, 72, 80, 64, 66, 12, 201, 36, 225, 146, 5, 53, 18, 84, 53, 21, 68, 18, 70, 16, 148, 212, 73, 84, 192, 72, 37, 89, 47, 14,
-			16, 6, 40, 89, 0, 0, 14, 67, 72, 68, 192, 6, 36, 34, 72, 36, 6, 36, 89, 0, 10, 199, 12, 20, 129, 13, 65, 82, 20, 67,
-			0, 13, 5, 14, 15, 21, 196, 131, 50, 6, 39, 40, 13, 0, 13, 68, 12, 243, 15, 72, 49, 39, 55, 6, 39, 16, 0, 7, 196, 76,
-			53, 84, 36, 66, 0, 11, 136, 18, 195, 162, 14, 10, 5, 20, 5, 65, 12, 201, 77, 84, 18, 4, 84, 212, 36, 208, 64, 69, 0, 9,
-			198, 65, 35, 214, 60, 48, 64, 67, 18, 70, 5, 4, 143, 64, 144, 64, 35, 48, 14, 16, 39, 48, 37, 6, 35, 0, 0, 10, 199, 52,
-			85, 1, 24, 244, 137, 12, 67, 15, 6, 3, 196, 131, 21, 20, 1, 49, 13, 40, 47, 6, 35, 0, 0, 7, 196, 24, 83, 137, 96, 65,
-			0, 13, 6, 3, 1, 21, 20, 196, 131, 49, 114, 47, 13, 0, 0, 9, 198, 88, 144, 212, 36, 209, 64, 65, 9, 198, 77, 64, 84, 84,
-			145, 64, 66, 0, 11, 136, 6, 12, 1, 13, 21, 18, 196, 131, 65, 9, 134, 7, 18, 196, 131, 2, 9, 68, 0, 7, 196, 57, 83, 65,
-			36, 65, 7, 196, 24, 83, 9, 96, 65, 7, 196, 88, 83, 133, 4, 66, 7, 196, 57, 83, 69, 4, 66, 0, 0, 9, 198, 88, 149, 18,
-			20, 113, 64, 65, 9, 198, 12, 243, 150, 36, 225, 192, 66, 6, 194, 4, 208, 76, 32, 0, 0, 7, 196, 85, 66, 76, 20, 66, 9, 198,
-			4, 210, 67, 36, 195, 210, 66, 7, 196, 32, 243, 2, 4, 66, 0, 8, 197, 29, 85, 21, 36, 80, 66, 8, 197, 12, 240, 201, 56, 80,
-			65, 11, 136, 16, 12, 195, 162, 14, 7, 5, 1, 66, 8, 197, 60, 66, 72, 56, 144, 67, 7, 132, 195, 174, 13, 9, 72, 0, 9, 198,
-			4, 100, 137, 12, 146, 64, 65, 0, 0, 13, 68, 77, 84, 21, 76, 89, 40, 48, 6, 40, 89, 0, 7, 196, 25, 83, 69, 28, 65, 0,
-			8, 197, 64, 20, 134, 84, 208, 66, 16, 69, 13, 34, 83, 80, 144, 49, 14, 16, 6, 37, 89, 47, 37, 0, 11, 136, 19, 195, 162, 14,
-			7, 5, 18, 1, 67, 11, 136, 18, 196, 131, 20, 196, 131, 3, 9, 67, 11, 136, 18, 196, 131, 20, 196, 131, 3, 9, 67, 8, 197, 32,
-			242, 15, 80, 144, 67, 19, 8, 3, 195, 162, 197, 163, 9, 22, 1, 49, 112, 123, 124, 84, 6, 35, 0, 78, 0, 9, 198, 88, 149, 18,
-			20, 114, 64, 65, 9, 198, 48, 16, 210, 36, 210, 64, 65, 8, 66, 21, 80, 57, 115, 0, 76, 0, 0, 7, 196, 89, 82, 69, 80, 65,
-			10, 135, 197, 159, 21, 9, 5, 18, 1, 67, 0, 19, 8, 3, 195, 174, 197, 163, 9, 22, 1, 49, 112, 123, 124, 84, 6, 35, 0, 78,
-			0, 12, 137, 195, 174, 14, 4, 21, 18, 5, 18, 1, 68, 0, 0, 7, 196, 53, 81, 197, 80, 65, 16, 70, 20, 147, 147, 80, 82, 78,
-			6, 117, 50, 91, 47, 117, 50, 0, 7, 196, 77, 67, 195, 4, 66, 0, 8, 197, 25, 34, 80, 81, 80, 66, 0, 9, 134, 18, 195, 162,
-			19, 5, 20, 65, 0, 24, 73, 25, 32, 78, 44, 83, 147, 80, 82, 78, 83, 34, 6, 35, 50, 49, 36, 50, 91, 47, 117, 50, 0, 6,
-			195, 57, 83, 73, 66, 0, 0, 7, 196, 29, 32, 86, 84, 66, 0, 8, 197, 72, 243, 129, 48, 64, 65, 11, 4, 15, 18, 196, 131, 6,
-			39, 34, 13, 0, 9, 198, 52, 85, 1, 24, 244, 133, 66, 9, 198, 24, 147, 15, 104, 241, 137, 20, 9, 134, 19, 16, 196, 131, 12, 1,
-			66, 9, 198, 65, 35, 211, 64, 84, 129, 67, 0, 13, 138, 195, 174, 14, 4, 18, 196, 131, 26, 14, 9, 67, 0, 10, 199, 64, 20, 148,
-			20, 225, 82, 20, 67, 19, 8, 195, 174, 14, 1, 9, 14, 20, 5, 112, 50, 35, 6, 37, 50, 47, 36, 0, 15, 6, 6, 196, 131, 18,
-			196, 131, 83, 4, 13, 34, 13, 0, 8, 0, 7, 196, 80, 19, 135, 60, 66, 8, 133, 3, 196, 131, 26, 21, 66, 12, 201, 16, 84, 195,
-			60, 228, 201, 16, 84, 129, 69, 0, 9, 198, 76, 80, 213, 72, 144, 197, 67, 9, 198, 52, 84, 193, 28, 84, 129, 67, 9, 198, 36, 224,
-			201, 56, 84, 129, 68, 9, 198, 16, 84, 195, 85, 32, 193, 67, 0, 9, 198, 52, 85, 1, 24, 244, 128, 66, 10, 135, 12, 21, 3, 18,
-			196, 131, 13, 66, 0, 11, 136, 195, 174, 14, 1, 9, 14, 20, 1, 67, 9, 134, 16, 195, 162, 14, 196, 131, 8, 7, 132, 20, 196, 131,
-			21, 76, 0, 10, 135, 12, 1, 20, 21, 18, 196, 131, 65, 7, 196, 65, 34, 77, 36, 66, 0, 11, 136, 22, 196, 131, 4, 21, 22, 196,
-			131, 65, 11, 136, 20, 18, 5, 13, 21, 18, 196, 131, 65, 11, 136, 16, 196, 131, 20, 21, 18, 196, 131, 65, 11, 136, 13, 196, 131, 20,
-			21, 18, 196, 131, 65, 11, 136, 5, 12, 9, 2, 5, 18, 196, 131, 68, 13, 138, 3, 21, 13, 16, 196, 131, 18, 196, 131, 13, 67, 0,
-			10, 135, 3, 196, 131, 18, 21, 9, 1, 73, 0, 13, 138, 3, 21, 20, 18, 5, 13, 21, 18, 196, 131, 66, 0, 8, 133, 20, 196, 131,
-			3, 21, 66, 7, 196, 16, 244, 133, 4, 66, 7, 196, 12, 84, 133, 4, 66, 14, 68, 4, 116, 133, 4, 35, 81, 14, 16, 36, 6, 35,
-			0, 7, 196, 12, 84, 133, 4, 66, 12, 137, 197, 159, 196, 131, 19, 5, 12, 5, 1, 65, 0, 13, 138, 14, 5, 22, 196, 131, 19, 20,
-			21, 9, 5, 67, 9, 134, 18, 195, 162, 4, 5, 1, 66, 23, 10, 15, 18, 9, 3, 196, 131, 18, 21, 9, 1, 39, 16, 124, 49, 13,
-			34, 40, 37, 35, 0, 79, 0, 6, 195, 88, 83, 137, 66, 10, 135, 1, 197, 163, 9, 14, 20, 9, 67, 10, 135, 3, 196, 131, 18, 5,
-			9, 1, 73, 0, 10, 135, 4, 196, 131, 18, 196, 131, 20, 66, 26, 4, 197, 159, 46, 1, 91, 37, 11, 35, 91, 4, 35, 15, 65, 117,
-			15, 72, 36, 48, 6, 35, 34, 47, 36, 0, 0, 0, 8, 197, 48, 16, 207, 52, 144, 65, 8, 197, 36, 226, 77, 36, 144, 65, 13, 138,
-			3, 196, 131, 18, 196, 131, 18, 21, 9, 5, 68, 8, 197, 88, 83, 133, 72, 16, 67, 8, 197, 4, 193, 82, 28, 16, 67, 23, 10, 15,
-			18, 9, 3, 196, 131, 18, 5, 9, 1, 39, 16, 124, 49, 13, 34, 36, 37, 35, 0, 79, 0, 13, 138, 195, 174, 14, 4, 196, 131, 18,
-			196, 131, 20, 67, 14, 139, 6, 12, 196, 131, 3, 196, 131, 18, 21, 9, 5, 67, 0, 10, 199, 64, 20, 148, 20, 225, 82, 36, 67, 10,
-			199, 12, 19, 132, 36, 64, 84, 84, 68, 7, 132, 20, 196, 131, 9, 76, 0, 12, 137, 26, 7, 195, 162, 18, 9, 5, 20, 21, 68, 11,
-			200, 64, 20, 148, 20, 225, 82, 36, 144, 67, 7, 196, 13, 82, 86, 4, 66, 11, 200, 65, 33, 83, 85, 5, 78, 20, 16, 68, 0, 8,
-			197, 84, 225, 5, 88, 16, 67, 8, 197, 81, 33, 67, 20, 208, 65, 9, 134, 4, 5, 197, 163, 9, 9, 66, 9, 198, 5, 68, 137, 9,
-			82, 65, 68, 13, 138, 19, 196, 131, 22, 195, 162, 18, 197, 159, 9, 67, 8, 197, 16, 85, 133, 56, 144, 67, 0, 10, 135, 2, 196, 131,
-			20, 196, 131, 9, 66, 0, 7, 195, 16, 147, 128, 72, 28, 0, 7, 196, 5, 66, 78, 28, 66, 0, 9, 198, 12, 243, 210, 16, 243, 129,
-			68, 0, 14, 139, 195, 174, 14, 7, 8, 9, 197, 163, 9, 20, 21, 68, 0, 20, 71, 76, 84, 150, 36, 50, 85, 48, 89, 36, 34, 84,
-			6, 37, 76, 57, 40, 55, 0, 11, 136, 22, 5, 197, 159, 20, 5, 10, 9, 67, 0, 7, 196, 21, 3, 195, 36, 65, 0, 9, 134, 3,
-			196, 131, 12, 3, 1, 66, 14, 3, 3, 6, 46, 99, 111, 110, 102, 111, 114, 109, 0, 29, 0, 16, 7, 19, 16, 1, 197, 163, 9, 21,
-			89, 48, 35, 123, 57, 40, 0, 17, 70, 56, 144, 201, 13, 83, 64, 50, 37, 76, 124, 49, 6, 40, 65, 0, 0, 0, 7, 196, 5, 34,
-			80, 36, 65, 7, 196, 37, 34, 84, 4, 67, 7, 196, 21, 98, 84, 4, 67, 0, 13, 138, 195, 174, 14, 7, 8, 9, 15, 14, 20, 9,
-			67, 0, 9, 198, 72, 81, 201, 104, 244, 128, 66, 11, 136, 16, 12, 195, 162, 14, 7, 5, 18, 65, 11, 67, 13, 35, 201, 49, 34, 39,
-			6, 37, 0, 0, 9, 134, 20, 21, 18, 14, 196, 131, 66, 7, 195, 16, 20, 128, 72, 8, 0, 0, 11, 136, 18, 5, 16, 12, 9, 3,
-			196, 131, 65, 11, 136, 9, 13, 16, 12, 9, 3, 196, 131, 66, 9, 198, 4, 115, 15, 52, 84, 129, 68, 0, 10, 135, 26, 2, 21, 18,
-			196, 131, 13, 66, 12, 137, 20, 196, 131, 22, 9, 197, 163, 196, 131, 66, 0, 11, 136, 18, 5, 16, 1, 18, 196, 131, 13, 67, 7, 132,
-			196, 131, 9, 1, 77, 0, 12, 137, 3, 15, 13, 16, 1, 18, 196, 131, 13, 67, 10, 135, 1, 18, 20, 5, 18, 196, 131, 66, 0, 13,
-			138, 22, 195, 162, 14, 196, 131, 20, 196, 131, 9, 67, 13, 138, 19, 20, 18, 5, 3, 21, 18, 196, 131, 13, 67, 13, 138, 18, 5, 3,
-			21, 16, 5, 18, 196, 131, 13, 68, 11, 136, 16, 1, 14, 20, 5, 18, 196, 131, 66, 0, 14, 139, 22, 195, 162, 12, 22, 196, 131, 20,
-			196, 131, 9, 67, 10, 135, 1, 19, 20, 196, 131, 26, 9, 65, 10, 135, 22, 195, 162, 19, 12, 5, 1, 66, 0, 11, 4, 2, 196, 131,
-			21, 71, 13, 6, 40, 0, 0, 9, 134, 12, 1, 26, 196, 131, 18, 65, 16, 141, 195, 174, 14, 6, 196, 131, 197, 159, 21, 18, 196, 131,
-			13, 68, 7, 196, 24, 84, 133, 4, 66, 0, 13, 138, 195, 174, 14, 22, 196, 131, 18, 20, 5, 1, 67, 0, 8, 66, 20, 144, 57, 118,
-			0, 76, 16, 66, 12, 208, 99, 101, 110, 116, 105, 109, 101, 116, 114, 105, 0, 29, 0, 0, 13, 68, 16, 81, 21, 76, 72, 36, 72, 6,
-			40, 89, 0, 0, 8, 197, 72, 84, 5, 16, 80, 65, 8, 197, 64, 19, 9, 16, 80, 65, 8, 197, 52, 243, 137, 12, 16, 66, 8, 197,
-			12, 243, 132, 20, 144, 66, 9, 134, 3, 196, 131, 12, 4, 21, 66, 10, 135, 1, 3, 15, 16, 196, 131, 18, 66, 8, 197, 88, 244, 130,
-			20, 16, 66, 8, 197, 80, 243, 5, 72, 16, 67, 8, 197, 72, 83, 5, 88, 16, 67, 8, 197, 72, 81, 149, 104, 16, 67, 8, 197, 60,
-			35, 9, 28, 16, 67, 8, 197, 16, 84, 208, 72, 80, 28, 0, 14, 139, 1, 12, 2, 196, 131, 19, 20, 18, 21, 9, 5, 67, 0, 10,
-			135, 20, 195, 162, 18, 3, 15, 12, 66, 0, 0, 8, 197, 77, 5, 78, 20, 16, 66, 8, 197, 12, 243, 147, 84, 208, 66, 8, 197, 12,
-			20, 5, 80, 80, 65, 13, 138, 18, 5, 1, 3, 197, 163, 9, 15, 14, 1, 67, 8, 197, 16, 145, 197, 72, 16, 67, 8, 197, 52, 21,
-			1, 48, 80, 78, 0, 10, 135, 19, 16, 5, 18, 196, 131, 13, 66, 10, 135, 15, 16, 5, 18, 196, 131, 13, 67, 6, 195, 24, 84, 137,
-			66, 0, 11, 136, 19, 20, 18, 15, 16, 197, 159, 9, 66, 0, 0, 17, 70, 88, 241, 1, 24, 243, 133, 84, 6, 39, 72, 35, 83, 39,
-			50, 0, 9, 198, 64, 20, 193, 28, 84, 137, 67, 0, 14, 139, 18, 5, 3, 5, 16, 197, 163, 9, 15, 14, 5, 68, 14, 139, 5, 3,
-			8, 9, 12, 9, 2, 18, 196, 131, 13, 68, 0, 11, 136, 18, 196, 131, 19, 3, 15, 12, 9, 67, 0, 0, 0, 0, 0, 0, 0, 9,
-			134, 20, 1, 20, 196, 131, 12, 65, 9, 198, 16, 84, 201, 29, 84, 128, 66, 10, 67, 4, 128, 65, 35, 107, 6, 35, 0, 9, 198, 81,
-			34, 85, 52, 96, 64, 67, 9, 198, 21, 128, 77, 36, 224, 64, 68, 9, 198, 5, 48, 213, 49, 64, 64, 67, 10, 135, 18, 5, 7, 196,
-			131, 19, 9, 67, 12, 67, 16, 16, 193, 72, 35, 49, 13, 0, 72, 8, 0, 6, 195, 60, 51, 204, 66, 10, 67, 4, 128, 64, 35, 107,
-			6, 35, 0, 11, 136, 3, 196, 131, 16, 196, 131, 20, 1, 67, 10, 199, 72, 244, 212, 60, 115, 204, 36, 68, 0, 10, 135, 18, 9, 4,
-			9, 3, 196, 131, 66, 7, 196, 52, 19, 148, 4, 66, 0, 11, 136, 13, 195, 162, 14, 5, 3, 196, 131, 65, 11, 136, 9, 14, 20, 18,
-			9, 7, 196, 131, 65, 11, 136, 5, 24, 16, 12, 9, 3, 196, 131, 66, 9, 134, 14, 9, 197, 159, 20, 5, 73, 0, 10, 135, 9, 14,
-			20, 18, 196, 131, 13, 66, 0, 13, 138, 195, 174, 14, 22, 196, 131, 197, 163, 196, 131, 67, 10, 3, 226, 130, 172, 6, 115, 16, 39, 0,
-			0, 14, 139, 16, 196, 131, 18, 20, 9, 3, 9, 3, 196, 131, 67, 12, 137, 3, 15, 14, 6, 9, 197, 159, 20, 5, 66, 0, 14, 69,
-			8, 19, 142, 21, 32, 71, 6, 36, 50, 13, 34, 0, 9, 134, 16, 12, 196, 131, 20, 9, 66, 0, 6, 195, 72, 80, 201, 65, 0, 13,
-			138, 195, 174, 13, 2, 18, 196, 131, 3, 196, 131, 67, 0, 12, 137, 6, 12, 196, 131, 3, 196, 131, 18, 9, 65, 0, 13, 5, 1, 18,
-			196, 131, 20, 35, 34, 6, 13, 47, 0, 0, 9, 198, 80, 16, 129, 12, 129, 64, 67, 9, 198, 65, 35, 195, 20, 69, 64, 67, 0, 0,
-			7, 196, 81, 33, 90, 36, 66, 0, 8, 197, 60, 19, 69, 56, 144, 65, 8, 197, 52, 84, 135, 20, 208, 65, 8, 197, 28, 83, 69, 56,
-			144, 65, 8, 197, 16, 19, 66, 48, 16, 66, 8, 197, 12, 244, 212, 84, 208, 66, 8, 197, 16, 148, 197, 12, 16, 67, 0, 6, 195, 72,
-			85, 137, 66, 0, 0, 12, 137, 6, 12, 196, 131, 3, 196, 131, 18, 1, 65, 7, 196, 13, 83, 86, 4, 66, 7, 196, 88, 244, 130, 36,
-			66, 7, 196, 64, 244, 142, 36, 66, 0, 9, 134, 19, 20, 196, 131, 20, 21, 66, 8, 197, 37, 53, 15, 88, 144, 67, 11, 3, 95, 50,
-			6, 72, 6, 39, 40, 13, 0, 0, 10, 135, 16, 1, 19, 196, 131, 18, 5, 65, 9, 198, 36, 208, 71, 36, 226, 64, 66, 0, 11, 136,
-			21, 13, 6, 12, 196, 131, 20, 21, 67, 10, 199, 77, 64, 78, 16, 20, 132, 20, 65, 25, 11, 195, 174, 14, 196, 131, 21, 14, 20, 18,
-			21, 12, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 55, 0, 11, 136, 2, 196, 131, 20, 196, 131, 20, 21, 67, 0, 7, 196, 52, 84,
-			137, 80, 65, 12, 137, 3, 18, 196, 131, 16, 196, 131, 20, 21, 67, 12, 137, 1, 12, 9, 14, 20, 196, 131, 20, 21, 68, 11, 200, 36,
-			229, 5, 73, 162, 67, 20, 16, 68, 11, 200, 36, 229, 5, 73, 49, 67, 80, 16, 68, 7, 196, 5, 5, 67, 4, 67, 0, 0, 9, 198,
-			44, 83, 5, 52, 83, 128, 65, 14, 139, 195, 174, 14, 22, 196, 131, 20, 196, 131, 20, 21, 68, 31, 14, 4, 9, 14, 195, 174, 14, 196,
-			131, 21, 14, 20, 18, 21, 12, 72, 37, 50, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 55, 0, 0, 15, 140, 195, 174, 14, 3, 18,
-			21, 14, 20, 196, 131, 20, 21, 68, 11, 136, 16, 196, 131, 3, 196, 131, 12, 9, 67, 0, 7, 196, 84, 197, 9, 52, 65, 7, 196, 17,
-			82, 85, 52, 66, 12, 137, 19, 6, 195, 162, 18, 20, 5, 3, 1, 67, 0, 9, 198, 28, 80, 77, 4, 225, 21, 67, 0, 9, 66, 20,
-			192, 57, 36, 55, 0, 76, 0, 11, 136, 3, 195, 162, 14, 20, 5, 3, 5, 65, 15, 3, 95, 50, 48, 72, 39, 40, 13, 88, 6, 36,
-			76, 124, 0, 0, 11, 200, 52, 17, 201, 77, 68, 129, 81, 80, 68, 0, 9, 198, 17, 83, 73, 56, 144, 193, 66, 0, 9, 198, 25, 33,
-			68, 60, 224, 64, 67, 9, 133, 4, 1, 3, 196, 131, 72, 8, 0, 11, 136, 197, 159, 21, 2, 18, 5, 4, 5, 65, 9, 134, 16, 12,
-			5, 3, 196, 131, 66, 10, 134, 1, 4, 9, 3, 196, 131, 66, 28, 0, 10, 135, 16, 9, 19, 9, 3, 196, 131, 66, 10, 135, 1, 16,
-			12, 5, 3, 196, 131, 67, 7, 196, 12, 243, 148, 4, 66, 10, 135, 5, 24, 9, 19, 20, 196, 131, 72, 0, 11, 136, 6, 15, 18, 6,
-			15, 20, 196, 131, 65, 11, 136, 1, 3, 5, 1, 19, 20, 196, 131, 76, 0, 9, 198, 65, 35, 212, 60, 51, 204, 67, 9, 198, 80, 19,
-			80, 60, 224, 64, 67, 15, 4, 95, 13, 3, 14, 65, 35, 49, 14, 16, 6, 39, 50, 0, 0, 9, 134, 19, 20, 15, 3, 196, 131, 66,
-			15, 3, 95, 51, 48, 47, 14, 16, 118, 88, 6, 36, 76, 124, 0, 0, 12, 137, 19, 20, 18, 9, 7, 196, 131, 20, 5, 65, 7, 196,
-			52, 21, 5, 36, 66, 22, 11, 7, 196, 131, 7, 196, 131, 21, 197, 163, 196, 131, 81, 13, 81, 13, 6, 40, 123, 13, 0, 0, 11, 136,
-			3, 5, 18, 3, 5, 20, 196, 131, 67, 0, 9, 198, 5, 99, 195, 5, 69, 64, 68, 0, 11, 136, 16, 18, 5, 7, 196, 131, 20, 9,
-			67, 0, 8, 133, 13, 196, 131, 19, 21, 66, 0, 9, 198, 12, 147, 131, 36, 193, 65, 65, 0, 18, 70, 61, 34, 67, 36, 225, 64, 39,
-			16, 124, 76, 4, 37, 50, 36, 0, 79, 0, 0, 12, 137, 13, 21, 12, 197, 163, 21, 13, 5, 1, 67, 8, 133, 195, 174, 197, 163, 9,
-			72, 0, 8, 197, 88, 147, 132, 20, 208, 65, 8, 197, 84, 212, 12, 20, 208, 65, 0, 0, 10, 199, 65, 35, 198, 21, 51, 210, 36, 66,
-			10, 199, 12, 83, 5, 48, 19, 20, 20, 79, 0, 0, 14, 69, 37, 2, 15, 56, 80, 35, 37, 83, 6, 130, 50, 0, 0, 10, 135, 2,
-			15, 18, 196, 131, 20, 21, 67, 0, 11, 136, 3, 196, 131, 26, 196, 131, 20, 21, 67, 11, 136, 195, 174, 14, 20, 18, 5, 2, 1, 67,
-			0, 8, 133, 12, 196, 131, 19, 1, 66, 0, 13, 138, 195, 174, 14, 10, 21, 18, 196, 131, 20, 21, 68, 0, 0, 11, 136, 3, 196, 131,
-			19, 196, 131, 16, 9, 67, 0, 7, 196, 56, 85, 5, 16, 65, 9, 198, 12, 243, 147, 36, 65, 82, 66, 7, 196, 48, 19, 147, 4, 66,
-			7, 196, 16, 19, 147, 4, 66, 0, 17, 142, 195, 174, 14, 6, 196, 131, 197, 159, 21, 18, 196, 131, 20, 21, 69, 9, 134, 195, 174, 14,
-			5, 3, 1, 67, 0, 0, 9, 134, 13, 9, 197, 159, 20, 15, 66, 18, 70, 36, 229, 18, 60, 69, 83, 37, 50, 47, 34, 39, 72, 6,
-			40, 89, 0, 15, 3, 95, 51, 88, 47, 14, 16, 6, 118, 88, 36, 76, 124, 0, 13, 3, 95, 54, 48, 91, 117, 88, 6, 36, 76, 124,
-			0, 0, 7, 196, 76, 17, 9, 12, 65, 20, 9, 15, 1, 18, 5, 197, 159, 9, 3, 5, 39, 35, 16, 36, 91, 76, 36, 0, 68, 7,
-			196, 13, 33, 90, 84, 66, 11, 3, 95, 48, 67, 89, 6, 40, 47, 36, 0, 0, 0, 6, 195, 41, 80, 193, 66, 9, 198, 25, 84, 142,
-			37, 160, 64, 67, 0, 0, 0, 12, 4, 95, 48, 90, 51, 65, 6, 132, 65, 37, 0, 0, 9, 198, 72, 80, 76, 37, 160, 64, 68, 9,
-			198, 16, 148, 195, 85, 64, 64, 67, 9, 198, 12, 84, 131, 21, 64, 64, 67, 14, 4, 95, 48, 90, 50, 89, 6, 40, 47, 37, 65, 37,
-			0, 0, 11, 136, 18, 5, 197, 163, 9, 14, 5, 13, 66, 16, 3, 95, 55, 48, 91, 35, 48, 47, 36, 88, 6, 36, 76, 124, 0, 0,
-			10, 135, 22, 9, 26, 9, 20, 196, 131, 65, 10, 135, 3, 196, 131, 21, 20, 196, 131, 67, 13, 3, 95, 49, 67, 4, 39, 89, 6, 40,
-			47, 13, 0, 0, 9, 198, 16, 84, 15, 104, 149, 5, 66, 0, 9, 198, 36, 224, 213, 49, 69, 64, 67, 6, 195, 12, 81, 1, 66, 0,
-			11, 136, 26, 21, 7, 18, 196, 131, 22, 9, 67, 0, 7, 196, 32, 242, 15, 80, 65, 0, 8, 197, 76, 147, 131, 21, 32, 65, 9, 198,
-			72, 84, 208, 20, 53, 1, 67, 0, 9, 198, 9, 80, 149, 37, 69, 64, 68, 9, 198, 4, 101, 77, 5, 69, 64, 68, 6, 194, 48, 16,
-			72, 28, 9, 198, 88, 240, 83, 81, 33, 64, 76, 9, 198, 56, 240, 83, 81, 33, 64, 77, 9, 198, 4, 229, 77, 37, 65, 64, 75, 20,
-			3, 95, 49, 57, 50, 6, 131, 13, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 6, 195, 72, 84, 212, 65, 11, 136, 1, 13,
-			196, 131, 18, 21, 9, 5, 67, 19, 3, 95, 49, 56, 6, 39, 48, 123, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 13, 68, 20,
-			229, 5, 72, 36, 50, 47, 13, 34, 0, 65, 16, 3, 95, 50, 67, 72, 6, 39, 40, 13, 89, 6, 40, 47, 36, 0, 0, 13, 138, 16,
-			196, 131, 19, 196, 131, 18, 21, 9, 5, 67, 8, 197, 29, 83, 5, 72, 80, 65, 13, 138, 6, 18, 9, 7, 196, 131, 18, 21, 9, 5,
-			67, 13, 138, 3, 196, 131, 13, 196, 131, 18, 21, 9, 5, 67, 8, 197, 12, 240, 143, 72, 16, 67, 8, 197, 37, 161, 207, 56, 144, 67,
-			0, 0, 11, 136, 19, 6, 195, 162, 18, 197, 159, 9, 66, 0, 7, 196, 36, 225, 9, 12, 66, 7, 196, 16, 19, 148, 84, 66, 7, 196,
-			88, 144, 146, 4, 66, 0, 8, 197, 64, 20, 143, 48, 80, 66, 8, 197, 52, 19, 143, 48, 80, 66, 0, 10, 135, 21, 19, 3, 196, 131,
-			20, 21, 67, 6, 195, 12, 83, 5, 77, 19, 3, 95, 49, 49, 6, 40, 50, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 11,
-			136, 195, 174, 14, 19, 5, 13, 14, 1, 67, 11, 3, 95, 49, 48, 88, 6, 36, 76, 36, 0, 0, 12, 137, 22, 196, 131, 18, 19, 196,
-			131, 20, 21, 67, 12, 67, 81, 34, 79, 47, 14, 16, 6, 37, 39, 0, 12, 137, 20, 18, 196, 131, 19, 196, 131, 20, 21, 67, 12, 137,
-			16, 9, 197, 159, 3, 196, 131, 20, 21, 67, 12, 137, 3, 196, 131, 12, 3, 196, 131, 20, 21, 67, 21, 3, 95, 49, 51, 47, 14, 16,
-			6, 118, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 9, 198, 48, 149, 5, 72, 21, 21, 68, 13, 138, 195, 174, 13, 2, 21,
-			3, 196, 131, 20, 21, 68, 9, 134, 22, 18, 196, 131, 10, 9, 66, 9, 198, 76, 51, 9, 24, 244, 201, 67, 19, 3, 95, 49, 50, 72,
-			6, 120, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 14, 139, 195, 174, 14, 20, 15, 18, 19, 196, 131, 20, 21, 68, 14, 139,
-			1, 13, 5, 19, 20, 5, 3, 196, 131, 20, 21, 69, 20, 3, 95, 49, 53, 76, 6, 37, 50, 89, 48, 14, 16, 36, 88, 4, 36, 76,
-			36, 0, 0, 15, 140, 195, 174, 13, 16, 21, 197, 159, 3, 196, 131, 20, 21, 68, 19, 3, 95, 49, 52, 48, 6, 117, 89, 48, 14, 16,
-			36, 88, 4, 36, 76, 36, 0, 0, 22, 3, 95, 49, 55, 91, 6, 35, 48, 47, 36, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0,
-			0, 9, 198, 16, 81, 197, 72, 21, 21, 68, 7, 195, 65, 34, 78, 72, 28, 19, 3, 95, 49, 54, 91, 6, 117, 89, 48, 14, 16, 36,
-			88, 4, 36, 76, 36, 0, 0, 0, 19, 70, 77, 84, 18, 5, 5, 83, 89, 40, 48, 14, 16, 35, 48, 6, 40, 89, 0, 16, 3, 95,
-			55, 88, 91, 6, 35, 48, 47, 36, 88, 36, 76, 124, 0, 0, 7, 196, 25, 34, 90, 84, 66, 0, 0, 9, 198, 72, 84, 208, 37, 32,
-			64, 67, 9, 198, 65, 33, 80, 5, 32, 64, 67, 9, 198, 65, 33, 70, 21, 32, 64, 67, 0, 11, 136, 21, 3, 9, 4, 5, 197, 163,
-			9, 66, 0, 10, 135, 1, 18, 196, 131, 20, 196, 131, 67, 0, 18, 70, 28, 147, 78, 5, 162, 85, 75, 37, 65, 50, 6, 35, 88, 57,
-			40, 0, 0, 12, 137, 13, 15, 4, 9, 6, 9, 3, 196, 131, 66, 14, 139, 195, 174, 14, 3, 8, 9, 4, 5, 197, 163, 9, 66, 9,
-			198, 85, 66, 76, 37, 160, 64, 68, 6, 195, 84, 149, 1, 66, 9, 198, 80, 83, 80, 21, 32, 64, 67, 0, 0, 7, 196, 8, 149, 143,
-			48, 65, 0, 9, 198, 17, 83, 78, 20, 21, 1, 79, 0, 6, 195, 88, 245, 1, 66, 0, 10, 199, 36, 229, 5, 73, 162, 67, 20, 67,
-			10, 199, 12, 144, 193, 81, 34, 67, 20, 67, 10, 199, 8, 16, 212, 21, 34, 69, 36, 66, 10, 199, 4, 69, 133, 57, 66, 67, 20, 67,
-			0, 7, 196, 48, 21, 5, 96, 65, 12, 137, 19, 21, 19, 197, 163, 9, 14, 5, 1, 67, 13, 68, 16, 85, 137, 4, 72, 36, 84, 37,
-			6, 35, 0, 0, 8, 197, 89, 83, 20, 85, 32, 65, 9, 134, 197, 163, 9, 14, 5, 1, 66, 9, 198, 64, 84, 141, 37, 65, 65, 67,
-			9, 134, 16, 196, 131, 26, 5, 1, 66, 0, 11, 67, 17, 37, 77, 72, 34, 6, 40, 65, 0, 9, 198, 13, 32, 84, 21, 33, 64, 65,
-			0, 17, 3, 95, 52, 48, 48, 35, 47, 14, 16, 40, 88, 6, 36, 76, 124, 0, 0, 9, 198, 16, 84, 15, 104, 149, 0, 66, 12, 137,
-			3, 15, 14, 197, 163, 9, 14, 5, 1, 67, 0, 9, 198, 65, 35, 205, 37, 65, 77, 66, 9, 198, 64, 84, 141, 37, 65, 77, 66, 8,
-			197, 56, 147, 73, 12, 16, 66, 9, 197, 80, 245, 21, 76, 144, 65, 28, 0, 9, 198, 12, 20, 129, 12, 19, 0, 66, 0, 0, 7, 196,
-			12, 83, 148, 84, 66, 11, 200, 77, 84, 144, 72, 147, 132, 20, 16, 67, 11, 200, 77, 1, 67, 36, 19, 9, 104, 16, 68, 0, 15, 69,
-			44, 245, 133, 76, 144, 49, 6, 39, 84, 36, 91, 37, 0, 8, 197, 28, 150, 143, 72, 144, 65, 8, 197, 77, 81, 197, 72, 16, 67, 8,
-			197, 52, 148, 143, 76, 144, 67, 0, 9, 198, 89, 83, 20, 85, 34, 64, 65, 10, 135, 3, 195, 162, 14, 4, 22, 1, 66, 0, 10, 199,
-			20, 50, 9, 48, 144, 146, 4, 68, 15, 3, 95, 50, 88, 72, 6, 39, 40, 13, 88, 36, 76, 124, 0, 14, 3, 95, 53, 48, 76, 37,
-			50, 88, 6, 36, 76, 124, 0, 0, 12, 137, 19, 21, 19, 197, 163, 9, 14, 5, 13, 66, 11, 200, 24, 84, 133, 77, 68, 149, 36, 80,
-			67, 7, 196, 16, 21, 137, 16, 65, 7, 196, 8, 21, 5, 52, 65, 11, 67, 5, 5, 83, 35, 48, 6, 40, 89, 0, 17, 68, 16, 147,
-			148, 72, 72, 37, 50, 47, 14, 34, 39, 0, 81, 111, 32, 0, 8, 197, 12, 244, 205, 61, 48, 65, 0, 0, 10, 135, 18, 196, 131, 3,
-			14, 5, 20, 65, 0, 0, 9, 198, 12, 243, 148, 72, 243, 1, 67, 0, 13, 138, 19, 3, 18, 195, 162, 197, 159, 14, 5, 20, 65, 11,
-			67, 52, 147, 73, 65, 6, 37, 65, 37, 0, 10, 135, 195, 174, 14, 22, 5, 12, 9, 67, 0, 10, 67, 52, 144, 64, 65, 6, 37, 35,
-			0, 0, 0, 9, 198, 65, 33, 70, 4, 49, 77, 66, 13, 138, 16, 196, 131, 9, 1, 14, 10, 5, 14, 9, 66, 0, 13, 5, 4, 15,
-			21, 196, 131, 72, 6, 39, 40, 13, 0, 9, 198, 72, 84, 12, 36, 48, 64, 67, 9, 198, 21, 132, 12, 36, 48, 64, 67, 9, 198, 104,
-			80, 197, 48, 80, 64, 65, 9, 198, 61, 5, 21, 48, 80, 64, 65, 0, 11, 136, 18, 196, 131, 3, 14, 5, 20, 5, 65, 6, 195, 12,
-			80, 64, 76, 0, 15, 3, 95, 63, 63, 49, 35, 16, 35, 49, 47, 6, 36, 34, 0, 0, 0, 14, 139, 19, 3, 18, 195, 162, 197, 159,
-			14, 5, 20, 5, 65, 18, 70, 5, 4, 133, 12, 144, 64, 35, 48, 14, 16, 36, 76, 57, 6, 35, 0, 0, 10, 67, 52, 145, 64, 65,
-			6, 37, 36, 0, 17, 3, 95, 52, 88, 48, 6, 35, 47, 14, 16, 40, 88, 36, 76, 124, 0, 0, 8, 133, 16, 196, 131, 26, 9, 66,
-			0, 8, 197, 77, 2, 82, 37, 64, 65, 0, 9, 198, 21, 132, 12, 36, 49, 64, 66, 10, 67, 12, 80, 73, 76, 6, 135, 57, 0, 6,
-			195, 77, 81, 1, 66, 10, 135, 19, 20, 195, 162, 18, 14, 9, 67, 7, 195, 12, 81, 65, 72, 28, 0, 0, 0, 9, 198, 89, 83, 20,
-			85, 34, 73, 65, 9, 198, 65, 33, 90, 36, 49, 65, 67, 0, 10, 135, 16, 196, 131, 18, 5, 18, 9, 66, 17, 7, 8, 195, 162, 18,
-			20, 9, 5, 107, 112, 34, 47, 6, 37, 36, 0, 11, 66, 48, 80, 55, 135, 0, 72, 81, 97, 32, 13, 66, 48, 80, 55, 135, 34, 0,
-			72, 81, 97, 114, 32, 16, 66, 48, 80, 55, 135, 123, 124, 0, 72, 81, 97, 197, 163, 105, 32, 13, 66, 48, 80, 55, 135, 57, 0, 72,
-			81, 97, 105, 32, 13, 66, 48, 80, 55, 135, 65, 0, 72, 81, 97, 109, 32, 11, 66, 48, 80, 55, 135, 0, 72, 81, 97, 32, 5, 194,
-			48, 80, 72, 15, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 101, 0, 29, 0, 14, 3, 95, 53, 88, 76, 6, 37, 50, 88, 36,
-			76, 124, 0, 14, 3, 95, 56, 48, 39, 48, 47, 88, 6, 36, 76, 124, 0, 0, 9, 198, 81, 35, 211, 56, 85, 0, 65, 7, 196, 72,
-			145, 9, 12, 66, 7, 196, 77, 1, 82, 4, 66, 12, 137, 195, 174, 14, 22, 9, 14, 7, 5, 1, 67, 0, 9, 134, 197, 163, 9, 14,
-			5, 13, 65, 8, 197, 52, 83, 129, 40, 80, 67, 8, 197, 48, 21, 9, 12, 80, 66, 8, 197, 56, 147, 69, 56, 144, 77, 0, 10, 135,
-			22, 196, 131, 4, 21, 22, 5, 65, 10, 135, 16, 196, 131, 18, 5, 18, 5, 66, 11, 67, 52, 19, 73, 65, 6, 35, 65, 37, 0, 6,
-			195, 88, 242, 65, 66, 0, 7, 195, 88, 242, 64, 76, 32, 6, 195, 52, 18, 64, 72, 6, 195, 88, 242, 64, 76, 6, 195, 56, 242, 64,
-			76, 6, 195, 12, 82, 64, 76, 0, 12, 137, 195, 174, 14, 3, 9, 14, 7, 5, 13, 66, 8, 133, 4, 196, 131, 4, 21, 66, 12, 137,
-			1, 4, 195, 162, 14, 3, 9, 20, 21, 68, 11, 200, 12, 243, 131, 72, 85, 9, 104, 16, 68, 0, 8, 197, 56, 244, 212, 36, 208, 65,
-			8, 197, 13, 32, 84, 36, 208, 65, 8, 197, 8, 149, 143, 48, 144, 65, 13, 138, 195, 174, 14, 22, 15, 12, 2, 21, 18, 1, 68, 8,
-			197, 5, 69, 78, 12, 144, 8, 0, 10, 135, 197, 159, 5, 4, 5, 18, 5, 66, 9, 198, 17, 84, 133, 72, 146, 64, 66, 17, 70, 16,
-			148, 208, 48, 22, 64, 72, 37, 89, 48, 55, 6, 36, 57, 0, 0, 10, 199, 12, 243, 131, 20, 229, 18, 4, 67, 11, 136, 1, 12, 196,
-			131, 20, 21, 18, 1, 68, 13, 3, 95, 54, 88, 91, 6, 117, 88, 36, 76, 124, 0, 14, 3, 95, 57, 48, 50, 131, 13, 88, 6, 36,
-			76, 124, 0, 0, 0, 13, 138, 195, 174, 14, 3, 196, 131, 16, 5, 18, 5, 67, 9, 198, 12, 20, 137, 12, 21, 21, 68, 0, 9, 198,
-			76, 51, 193, 80, 83, 64, 65, 0, 7, 195, 88, 243, 64, 76, 32, 0, 0, 15, 69, 65, 35, 208, 85, 48, 48, 34, 39, 48, 6, 40,
-			89, 0, 8, 197, 36, 229, 133, 73, 48, 65, 15, 69, 36, 224, 204, 85, 48, 37, 50, 49, 55, 6, 40, 89, 0, 15, 69, 12, 243, 80,
-			85, 48, 49, 39, 65, 48, 6, 40, 89, 0, 9, 198, 8, 193, 83, 80, 83, 65, 67, 0, 0, 12, 136, 1, 12, 196, 131, 20, 21, 18,
-			9, 66, 28, 0, 6, 131, 13, 196, 131, 72, 0, 8, 197, 88, 148, 195, 60, 192, 65, 0, 9, 198, 16, 80, 201, 16, 80, 64, 67, 16,
-			70, 81, 33, 73, 48, 80, 64, 47, 14, 16, 6, 118, 55, 135, 0, 0, 0, 13, 68, 84, 208, 140, 36, 6, 40, 65, 71, 55, 37, 0,
-			7, 196, 12, 83, 154, 84, 66, 0, 0, 11, 136, 3, 18, 195, 162, 14, 3, 5, 14, 65, 0, 18, 7, 15, 18, 9, 3, 195, 162, 20,
-			39, 16, 124, 49, 4, 112, 47, 0, 76, 14, 3, 95, 56, 88, 6, 39, 48, 47, 88, 36, 76, 124, 0, 0, 0, 12, 201, 64, 20, 193,
-			28, 84, 137, 48, 244, 128, 67, 11, 136, 13, 21, 18, 13, 21, 18, 196, 131, 65, 0, 9, 198, 76, 19, 83, 84, 225, 192, 65, 6, 195,
-			28, 83, 85, 66, 0, 11, 136, 195, 174, 13, 16, 12, 5, 20, 9, 67, 0, 0, 8, 197, 77, 81, 140, 21, 64, 65, 13, 138, 18, 196,
-			131, 19, 16, 21, 20, 5, 18, 9, 67, 9, 198, 17, 32, 71, 61, 53, 5, 65, 8, 197, 13, 33, 73, 21, 32, 65, 9, 134, 9, 5,
-			197, 159, 5, 1, 66, 0, 10, 135, 197, 159, 15, 6, 5, 18, 9, 66, 10, 66, 48, 112, 36, 55, 75, 6, 37, 0, 9, 198, 36, 224,
-			77, 36, 49, 64, 67, 18, 70, 16, 21, 15, 72, 145, 64, 72, 35, 47, 39, 14, 16, 6, 37, 36, 0, 10, 135, 12, 196, 131, 18, 7,
-			5, 1, 66, 0, 10, 199, 64, 20, 193, 28, 84, 137, 36, 67, 11, 136, 4, 5, 19, 6, 196, 131, 3, 21, 67, 14, 3, 95, 57, 88,
-			50, 6, 131, 13, 88, 36, 76, 124, 0, 0, 13, 138, 197, 159, 15, 6, 5, 18, 9, 12, 15, 18, 66, 13, 138, 3, 196, 131, 4, 5,
-			18, 9, 12, 15, 18, 66, 0, 14, 139, 19, 3, 196, 131, 4, 5, 18, 9, 12, 15, 18, 66, 8, 197, 5, 53, 80, 72, 16, 28, 0,
-			10, 135, 8, 195, 162, 18, 20, 9, 9, 66, 10, 135, 3, 195, 162, 20, 5, 22, 1, 67, 10, 135, 1, 20, 195, 162, 18, 14, 1, 67,
-			0, 11, 136, 197, 159, 20, 5, 18, 7, 5, 13, 65, 10, 199, 64, 84, 147, 21, 97, 82, 4, 68, 10, 199, 16, 84, 195, 61, 1, 82,
-			36, 68, 0, 0, 8, 197, 88, 81, 5, 72, 80, 66, 8, 197, 77, 5, 78, 20, 208, 65, 13, 138, 195, 174, 14, 20, 15, 1, 18, 3,
-			5, 13, 66, 8, 197, 72, 86, 133, 52, 16, 67, 8, 197, 72, 148, 201, 64, 144, 67, 0, 10, 135, 3, 196, 131, 4, 5, 18, 5, 66,
-			9, 198, 76, 51, 212, 60, 50, 64, 67, 0, 11, 136, 19, 3, 196, 131, 4, 5, 18, 5, 66, 11, 136, 22, 195, 162, 14, 20, 21, 18,
-			1, 67, 0, 8, 133, 2, 196, 131, 7, 1, 66, 0, 9, 134, 13, 9, 197, 159, 3, 1, 66, 0, 0, 15, 140, 3, 8, 5, 12, 196,
-			131, 12, 196, 131, 9, 20, 21, 69, 0, 0, 0, 0, 6, 194, 36, 224, 72, 28, 0, 11, 67, 77, 82, 84, 89, 40, 6, 37, 47, 0,
-			12, 137, 195, 174, 13, 16, 21, 197, 159, 3, 1, 67, 0, 13, 68, 76, 81, 21, 76, 89, 36, 72, 6, 40, 89, 0, 0, 0, 9, 198,
-			64, 130, 76, 37, 4, 192, 65, 9, 198, 36, 229, 18, 36, 112, 64, 65, 0, 9, 198, 21, 128, 83, 64, 84, 129, 68, 9, 198, 4, 48,
-			197, 48, 84, 129, 68, 14, 4, 95, 15, 7, 15, 39, 81, 39, 50, 6, 36, 49, 0, 0, 12, 137, 195, 174, 14, 20, 18, 5, 2, 196,
-			131, 67, 13, 3, 197, 159, 9, 91, 124, 35, 0, 72, 81, 97, 32, 6, 131, 197, 159, 9, 72, 0, 9, 134, 15, 6, 5, 18, 196, 131,
-			66, 0, 18, 70, 21, 35, 201, 48, 244, 128, 36, 34, 34, 6, 39, 37, 55, 39, 34, 0, 9, 198, 12, 129, 76, 56, 84, 128, 65, 0,
-			11, 136, 19, 3, 21, 20, 21, 18, 196, 131, 65, 21, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 80, 14, 16, 39, 89, 39, 83,
-			47, 0, 9, 198, 72, 80, 213, 64, 84, 129, 68, 0, 12, 137, 22, 195, 162, 14, 20, 21, 18, 196, 131, 67, 0, 15, 140, 195, 174, 14,
-			3, 196, 131, 16, 5, 18, 9, 12, 5, 67, 8, 197, 24, 197, 73, 21, 32, 65, 0, 12, 137, 3, 196, 131, 4, 5, 18, 9, 12, 5,
-			66, 0, 8, 133, 21, 13, 196, 131, 18, 65, 13, 138, 19, 3, 196, 131, 4, 5, 18, 9, 12, 5, 66, 9, 198, 4, 197, 3, 84, 213,
-			129, 67, 0, 7, 196, 104, 144, 197, 4, 66, 7, 196, 37, 80, 133, 4, 66, 9, 198, 4, 229, 77, 37, 67, 210, 75, 0, 8, 197, 16,
-			240, 212, 61, 32, 65, 0, 14, 66, 56, 80, 50, 135, 89, 0, 72, 81, 97, 197, 159, 32, 13, 66, 56, 80, 50, 135, 34, 0, 72, 81,
-			97, 114, 32, 13, 66, 56, 80, 50, 135, 65, 0, 72, 81, 97, 109, 32, 12, 137, 14, 196, 131, 16, 21, 19, 20, 5, 1, 67, 5, 194,
-			56, 80, 72, 15, 66, 52, 112, 109, 105, 108, 105, 103, 114, 97, 109, 101, 0, 29, 0, 10, 199, 37, 3, 195, 72, 150, 137, 36, 68, 0,
-			11, 136, 20, 18, 5, 1, 3, 196, 131, 20, 65, 7, 196, 12, 20, 20, 84, 66, 7, 196, 76, 83, 78, 4, 66, 14, 139, 4, 9, 19,
-			16, 18, 5, 197, 163, 21, 9, 1, 68, 0, 8, 197, 81, 32, 71, 20, 208, 65, 8, 197, 52, 146, 140, 60, 48, 65, 10, 67, 13, 82,
-			66, 49, 6, 121, 71, 0, 8, 197, 81, 33, 90, 20, 16, 66, 8, 197, 65, 34, 86, 20, 16, 66, 0, 9, 198, 36, 229, 18, 36, 114,
-			64, 65, 0, 0, 26, 11, 19, 21, 16, 18, 5, 13, 1, 197, 163, 9, 5, 89, 40, 48, 14, 16, 36, 65, 35, 123, 6, 37, 36, 0,
-			7, 196, 84, 225, 76, 20, 73, 0, 8, 197, 60, 34, 67, 20, 144, 67, 8, 197, 56, 149, 133, 48, 80, 66, 8, 197, 36, 225, 9, 28,
-			240, 67, 11, 136, 3, 195, 162, 20, 15, 18, 22, 1, 67, 11, 136, 3, 196, 131, 197, 159, 21, 14, 1, 67, 8, 197, 16, 147, 148, 72,
-			80, 28, 7, 131, 195, 174, 14, 72, 28, 0, 12, 66, 57, 80, 50, 40, 37, 0, 72, 81, 105, 32, 9, 198, 4, 101, 82, 37, 50, 64,
-			68, 5, 194, 57, 80, 76, 0, 6, 131, 195, 174, 12, 72, 0, 6, 195, 52, 146, 137, 66, 15, 4, 95, 48, 77, 52, 71, 37, 55, 6,
-			57, 138, 50, 36, 0, 0, 11, 136, 195, 174, 14, 4, 15, 9, 20, 21, 68, 16, 140, 4, 5, 19, 16, 196, 131, 18, 197, 163, 9, 20,
-			21, 68, 18, 16, 4, 95, 48, 77, 53, 71, 37, 55, 6, 57, 35, 34, 72, 36, 0, 0, 6, 195, 21, 3, 195, 65, 15, 4, 95, 48,
-			77, 50, 65, 37, 55, 6, 57, 138, 50, 36, 0, 0, 6, 195, 13, 83, 64, 8, 16, 4, 95, 48, 77, 51, 65, 37, 55, 6, 57, 35,
-			34, 72, 36, 0, 0, 6, 131, 195, 174, 9, 72, 0, 8, 197, 4, 52, 137, 81, 80, 67, 10, 4, 95, 48, 77, 49, 65, 6, 132, 0,
-			0, 12, 137, 16, 18, 15, 14, 21, 14, 197, 163, 1, 67, 14, 4, 95, 2, 18, 22, 49, 13, 76, 6, 40, 55, 13, 0, 0, 6, 195,
-			36, 20, 128, 8, 0, 6, 195, 5, 3, 201, 66, 6, 195, 52, 148, 129, 66, 0, 0, 0, 9, 198, 16, 80, 197, 48, 84, 129, 68, 7,
-			195, 88, 244, 128, 76, 32, 0, 7, 196, 37, 4, 207, 76, 65, 0, 0, 9, 198, 77, 64, 78, 16, 20, 132, 65, 17, 70, 20, 97, 67,
-			81, 80, 64, 36, 83, 36, 49, 47, 58, 6, 35, 0, 0, 11, 136, 12, 9, 14, 7, 21, 18, 196, 131, 65, 0, 6, 195, 60, 101, 1,
-			66, 0, 13, 5, 15, 13, 196, 131, 20, 39, 65, 6, 13, 47, 0, 0, 0, 13, 138, 3, 21, 14, 15, 1, 197, 159, 20, 5, 13, 66,
-			0, 6, 195, 12, 85, 129, 66, 10, 135, 19, 20, 196, 131, 20, 5, 1, 66, 10, 135, 195, 174, 14, 4, 15, 9, 1, 67, 7, 196, 84,
-			225, 73, 4, 77, 0, 0, 9, 194, 52, 144, 72, 81, 97, 114, 32, 9, 194, 52, 144, 72, 81, 97, 105, 32, 9, 194, 52, 144, 72, 81,
-			97, 109, 32, 13, 66, 52, 144, 65, 37, 4, 36, 0, 72, 81, 101, 32, 5, 194, 52, 144, 72, 29, 66, 44, 208, 49, 37, 55, 39, 65,
-			6, 36, 47, 14, 16, 37, 11, 48, 36, 15, 6, 39, 34, 13, 0, 82, 47, 32, 104, 32, 15, 66, 44, 208, 107, 105, 108, 111, 109, 101,
-			116, 114, 105, 0, 29, 0, 9, 134, 4, 196, 131, 4, 5, 1, 66, 0, 7, 196, 56, 147, 73, 12, 66, 6, 195, 12, 84, 149, 66, 0,
-			8, 197, 85, 35, 5, 80, 80, 65, 8, 197, 81, 83, 133, 80, 80, 65, 8, 197, 77, 83, 133, 80, 80, 65, 8, 197, 88, 19, 15, 72,
-			16, 67, 15, 69, 77, 64, 71, 56, 16, 89, 47, 35, 81, 50, 6, 35, 0, 8, 197, 64, 244, 142, 20, 16, 66, 0, 9, 198, 72, 81,
-			197, 49, 82, 64, 65, 0, 17, 5, 195, 174, 14, 20, 18, 112, 50, 47, 14, 16, 39, 0, 81, 111, 32, 9, 134, 4, 196, 131, 21, 14,
-			1, 67, 0, 10, 135, 13, 9, 197, 159, 21, 14, 1, 67, 0, 8, 197, 88, 81, 5, 72, 144, 66, 8, 197, 88, 20, 201, 48, 80, 66,
-			8, 197, 65, 35, 208, 84, 144, 66, 24, 73, 65, 34, 69, 80, 83, 149, 49, 82, 64, 48, 14, 16, 57, 6, 36, 47, 36, 50, 40, 55,
-			121, 0, 8, 197, 64, 149, 9, 12, 144, 66, 11, 136, 13, 195, 162, 14, 5, 3, 9, 9, 66, 8, 197, 48, 145, 5, 72, 144, 65, 8,
-			197, 32, 18, 1, 48, 80, 67, 8, 197, 16, 81, 197, 80, 80, 65, 8, 197, 17, 82, 14, 20, 16, 66, 8, 197, 9, 80, 213, 72, 16,
-			67, 8, 197, 76, 100, 137, 40, 144, 66, 0, 6, 195, 52, 20, 143, 66, 8, 133, 20, 195, 162, 18, 1, 66, 21, 9, 6, 9, 5, 3,
-			196, 131, 18, 21, 9, 83, 57, 36, 49, 6, 13, 34, 121, 0, 72, 0, 0, 0, 15, 69, 76, 84, 135, 37, 80, 89, 6, 36, 34, 75,
-			57, 40, 0, 11, 136, 3, 12, 196, 131, 20, 9, 14, 1, 67, 0, 11, 5, 95, 15, 6, 77, 49, 65, 6, 132, 0, 0, 0, 7, 196,
-			20, 97, 77, 20, 67, 0, 8, 197, 29, 32, 84, 37, 48, 65, 8, 197, 13, 33, 65, 81, 80, 67, 0, 0, 0, 13, 68, 88, 242, 76,
-			4, 84, 40, 35, 55, 6, 35, 0, 0, 0, 9, 198, 28, 84, 141, 36, 224, 64, 67, 0, 9, 134, 19, 3, 196, 131, 16, 1, 66, 6,
-			195, 77, 80, 128, 28, 0, 7, 196, 61, 32, 129, 56, 65, 7, 196, 24, 150, 137, 12, 65, 7, 196, 60, 51, 204, 36, 67, 0, 0, 9,
-			198, 64, 243, 15, 56, 144, 192, 67, 9, 198, 8, 148, 197, 72, 144, 192, 66, 9, 198, 16, 84, 197, 52, 224, 64, 67, 0, 13, 138, 6,
-			12, 196, 131, 3, 196, 131, 18, 9, 9, 65, 13, 138, 195, 174, 13, 16, 196, 131, 18, 197, 163, 9, 67, 6, 195, 77, 83, 148, 76, 6,
-			195, 77, 83, 148, 76, 0, 7, 196, 64, 195, 213, 4, 66, 0, 0, 13, 5, 197, 159, 20, 9, 1, 91, 47, 6, 57, 35, 0, 0, 0,
-			11, 67, 4, 144, 201, 35, 6, 37, 76, 124, 0, 10, 135, 26, 7, 195, 162, 18, 9, 1, 67, 0, 0, 13, 5, 197, 159, 20, 9, 5,
-			91, 47, 6, 37, 36, 0, 9, 198, 48, 147, 80, 20, 65, 64, 65, 5, 194, 56, 144, 72, 12, 137, 195, 174, 14, 20, 195, 162, 12, 14,
-			9, 67, 6, 194, 64, 80, 72, 28, 0, 9, 198, 64, 21, 18, 84, 193, 65, 65, 0, 11, 67, 4, 34, 65, 35, 71, 57, 6, 35, 0,
-			0, 12, 201, 64, 20, 148, 20, 225, 82, 20, 193, 64, 67, 8, 197, 28, 83, 69, 80, 80, 65, 9, 198, 16, 84, 203, 80, 244, 0, 65,
-			0, 9, 198, 77, 3, 5, 56, 66, 68, 65, 12, 137, 13, 195, 162, 14, 7, 195, 162, 9, 1, 67, 9, 198, 72, 245, 21, 56, 162, 64,
-			67, 0, 10, 199, 28, 147, 78, 5, 53, 9, 12, 66, 0, 0, 8, 197, 36, 229, 9, 52, 80, 65, 8, 197, 60, 97, 82, 20, 16, 67,
-			8, 197, 4, 37, 82, 20, 16, 66, 8, 197, 77, 68, 137, 88, 144, 66, 0, 9, 198, 76, 20, 131, 36, 226, 64, 65, 9, 198, 52, 20,
-			135, 36, 226, 64, 65, 0, 10, 199, 88, 150, 149, 4, 194, 90, 4, 68, 13, 138, 4, 5, 19, 16, 196, 131, 18, 197, 163, 9, 67, 9,
-			134, 1, 22, 5, 197, 163, 9, 76, 0, 10, 135, 21, 9, 20, 196, 131, 20, 21, 67, 0, 0, 18, 70, 65, 34, 69, 80, 83, 128, 48,
-			14, 16, 57, 6, 36, 47, 36, 50, 0, 12, 137, 18, 196, 131, 19, 20, 21, 18, 14, 1, 67, 19, 4, 95, 3, 9, 18, 76, 37, 34,
-			49, 40, 65, 83, 55, 6, 36, 49, 89, 0, 0, 13, 138, 22, 196, 131, 9, 5, 20, 196, 131, 20, 21, 68, 6, 195, 4, 34, 76, 66,
-			0, 7, 196, 48, 147, 73, 80, 65, 14, 139, 195, 174, 14, 197, 163, 5, 16, 196, 131, 20, 21, 68, 7, 196, 24, 16, 197, 52, 65, 6,
-			195, 85, 35, 1, 66, 6, 195, 77, 83, 129, 66, 10, 135, 1, 14, 21, 14, 197, 163, 1, 67, 0, 15, 69, 61, 98, 68, 37, 80, 39,
-			84, 6, 37, 72, 57, 40, 0, 19, 8, 5, 24, 39, 15, 20, 9, 3, 5, 36, 81, 88, 39, 47, 37, 76, 36, 0, 0, 15, 66, 52,
-			192, 109, 105, 108, 105, 108, 105, 116, 114, 105, 0, 29, 0, 9, 198, 52, 20, 135, 36, 226, 73, 65, 9, 134, 18, 195, 162, 6, 14, 9,
-			66, 0, 0, 9, 134, 12, 196, 131, 19, 196, 131, 66, 11, 136, 14, 196, 131, 16, 21, 19, 20, 9, 67, 0, 9, 198, 80, 84, 141, 36,
-			224, 64, 67, 9, 198, 65, 35, 212, 20, 160, 64, 67, 12, 137, 195, 174, 14, 196, 131, 12, 197, 163, 1, 67, 9, 198, 20, 194, 77, 36,
-			224, 64, 68, 9, 198, 12, 192, 88, 60, 224, 64, 67, 8, 3, 95, 196, 131, 6, 13, 0, 0, 9, 198, 5, 37, 5, 24, 144, 197, 67,
-			9, 134, 1, 18, 196, 131, 20, 1, 67, 0, 12, 137, 4, 15, 13, 14, 9, 197, 163, 196, 131, 66, 15, 3, 197, 163, 9, 123, 57, 39,
-			57, 0, 72, 81, 111, 105, 32, 15, 3, 197, 163, 9, 123, 57, 35, 34, 0, 72, 81, 97, 114, 32, 15, 3, 197, 163, 9, 123, 57, 35,
-			65, 0, 72, 81, 97, 109, 32, 14, 3, 197, 163, 9, 123, 6, 57, 36, 0, 72, 81, 101, 32, 14, 3, 197, 163, 9, 123, 57, 117, 0,
-			72, 81, 97, 105, 32, 14, 3, 197, 163, 9, 123, 57, 114, 0, 72, 81, 97, 117, 32, 15, 3, 197, 163, 9, 123, 57, 35, 34, 0, 72,
-			81, 97, 114, 32, 15, 3, 197, 163, 9, 123, 57, 35, 65, 0, 72, 81, 97, 109, 32, 6, 131, 197, 163, 9, 72, 0, 9, 134, 2, 196,
-			131, 7, 196, 131, 66, 13, 138, 1, 13, 5, 14, 9, 14, 197, 163, 196, 131, 66, 0, 9, 198, 56, 144, 201, 84, 224, 64, 77, 0, 9,
-			198, 52, 241, 9, 24, 144, 193, 68, 12, 4, 95, 19, 20, 11, 89, 55, 6, 36, 91, 0, 0, 7, 196, 76, 80, 207, 48, 65, 0, 11,
-			136, 16, 196, 131, 18, 5, 18, 9, 9, 66, 8, 197, 8, 19, 9, 57, 64, 65, 8, 197, 4, 192, 133, 73, 64, 65, 15, 4, 95, 1,
-			3, 21, 35, 89, 49, 40, 123, 6, 37, 47, 0, 0, 9, 198, 80, 84, 141, 36, 225, 64, 65, 0, 10, 199, 12, 129, 82, 21, 53, 5,
-			4, 67, 9, 134, 13, 195, 162, 14, 10, 9, 66, 0, 7, 196, 5, 33, 5, 4, 66, 0, 8, 197, 104, 115, 205, 61, 64, 65, 13, 3,
-			95, 195, 174, 4, 112, 72, 37, 50, 6, 37, 0, 0, 5, 194, 76, 16, 76, 15, 66, 52, 208, 109, 105, 108, 105, 109, 101, 116, 114, 105,
-			0, 29, 0, 9, 198, 5, 49, 77, 20, 225, 65, 66, 9, 198, 4, 194, 77, 20, 229, 1, 68, 6, 195, 24, 244, 212, 76, 0, 6, 195,
-			76, 80, 213, 66, 9, 198, 72, 245, 15, 12, 243, 0, 67, 7, 196, 84, 227, 210, 4, 77, 0, 8, 197, 17, 84, 133, 72, 80, 66, 12,
-			201, 12, 20, 129, 13, 65, 82, 20, 193, 64, 67, 8, 197, 72, 83, 1, 96, 16, 67, 15, 140, 195, 174, 13, 16, 18, 196, 131, 197, 159,
-			20, 9, 1, 67, 0, 9, 198, 56, 144, 201, 84, 229, 76, 77, 9, 198, 56, 144, 201, 84, 229, 76, 77, 0, 9, 134, 1, 16, 196, 131,
-			18, 1, 67, 0, 10, 135, 19, 21, 16, 196, 131, 18, 1, 67, 0, 8, 197, 88, 244, 19, 20, 16, 66, 8, 197, 84, 50, 68, 20, 208,
-			66, 8, 197, 64, 21, 9, 52, 144, 65, 8, 197, 61, 33, 9, 56, 80, 65, 8, 197, 32, 18, 68, 20, 208, 65, 8, 197, 24, 84, 137,
-			12, 80, 65, 9, 198, 21, 2, 83, 12, 244, 0, 66, 11, 136, 3, 21, 13, 16, 196, 131, 18, 1, 67, 0, 9, 198, 80, 84, 141, 20,
-			226, 64, 65, 0, 9, 134, 21, 18, 196, 131, 20, 21, 67, 0, 16, 70, 84, 225, 200, 37, 83, 0, 6, 40, 50, 81, 57, 40, 55, 0,
-			14, 139, 195, 174, 14, 22, 18, 5, 4, 14, 9, 3, 9, 68, 0, 11, 136, 1, 4, 21, 14, 196, 131, 20, 21, 68, 13, 3, 95, 195,
-			162, 4, 112, 72, 37, 50, 6, 35, 0, 0, 12, 137, 21, 19, 20, 21, 18, 196, 131, 20, 21, 68, 0, 13, 138, 13, 196, 131, 20, 21,
-			18, 196, 131, 20, 21, 68, 9, 134, 1, 16, 196, 131, 19, 1, 67, 0, 14, 139, 4, 196, 131, 18, 195, 162, 13, 196, 131, 20, 21, 68,
-			7, 196, 64, 193, 67, 4, 66, 0, 11, 136, 18, 5, 14, 21, 14, 197, 163, 1, 67, 0, 12, 137, 1, 13, 5, 14, 9, 14, 197, 163,
-			1, 68, 0, 9, 198, 56, 144, 201, 84, 226, 73, 77, 0, 0, 0, 12, 137, 3, 195, 162, 197, 159, 20, 9, 7, 1, 67, 0, 11, 67,
-			21, 32, 64, 57, 36, 16, 35, 0, 78, 0, 0, 11, 136, 4, 5, 16, 196, 131, 197, 159, 9, 67, 0, 17, 70, 56, 84, 213, 65, 84,
-			192, 50, 36, 89, 40, 48, 6, 40, 89, 0, 9, 198, 64, 19, 148, 21, 32, 64, 66, 9, 198, 4, 197, 3, 21, 96, 64, 67, 9, 198,
-			76, 53, 84, 85, 32, 64, 67, 9, 198, 12, 243, 5, 13, 64, 64, 67, 0, 6, 195, 5, 33, 64, 76, 0, 12, 137, 3, 21, 22, 195,
-			162, 14, 20, 196, 131, 67, 12, 137, 3, 15, 14, 20, 18, 15, 12, 196, 131, 67, 12, 67, 21, 32, 77, 57, 36, 16, 35, 65, 0, 78,
-			9, 134, 3, 196, 131, 18, 15, 18, 73, 0, 9, 134, 13, 195, 162, 14, 5, 3, 65, 16, 69, 9, 35, 203, 21, 32, 71, 14, 16, 6,
-			39, 49, 13, 34, 0, 0, 9, 198, 80, 20, 212, 5, 69, 64, 67, 9, 198, 13, 33, 68, 37, 65, 64, 65, 9, 198, 12, 195, 195, 61,
-			65, 64, 65, 16, 70, 8, 19, 142, 21, 33, 64, 71, 6, 36, 50, 13, 16, 36, 0, 21, 4, 95, 1, 3, 50, 72, 6, 40, 71, 55,
-			40, 35, 89, 49, 40, 6, 123, 37, 47, 0, 0, 9, 198, 81, 35, 211, 56, 85, 5, 65, 9, 198, 12, 243, 147, 80, 21, 1, 67, 0,
-			7, 196, 20, 194, 67, 20, 66, 7, 196, 12, 129, 77, 4, 66, 6, 195, 77, 80, 201, 66, 11, 67, 21, 32, 73, 57, 36, 16, 117, 0,
-			78, 0, 8, 197, 76, 83, 154, 61, 32, 65, 8, 197, 64, 144, 212, 61, 32, 65, 8, 197, 24, 16, 212, 61, 32, 65, 14, 69, 8, 16,
-			203, 85, 0, 71, 6, 36, 49, 35, 48, 0, 0, 9, 198, 77, 2, 82, 37, 65, 64, 65, 9, 66, 60, 176, 39, 49, 6, 118, 0, 12,
-			137, 18, 196, 131, 13, 195, 162, 14, 5, 1, 67, 12, 137, 195, 174, 13, 2, 21, 12, 26, 5, 1, 67, 5, 194, 80, 16, 76, 0, 10,
-			199, 72, 80, 213, 56, 244, 195, 84, 67, 9, 198, 77, 84, 208, 20, 53, 1, 67, 13, 138, 19, 20, 196, 131, 16, 195, 162, 14, 5, 1,
-			67, 9, 134, 16, 195, 162, 14, 4, 9, 66, 0, 7, 196, 88, 146, 84, 84, 66, 7, 196, 84, 209, 68, 20, 65, 6, 195, 24, 147, 9,
-			66, 11, 67, 21, 32, 85, 57, 36, 16, 114, 0, 78, 0, 11, 136, 16, 196, 131, 18, 5, 18, 5, 1, 66, 8, 197, 28, 83, 133, 72,
-			16, 67, 8, 197, 13, 33, 68, 20, 16, 67, 0, 0, 19, 71, 80, 245, 4, 20, 21, 78, 4, 47, 39, 47, 72, 135, 6, 40, 50, 35,
-			0, 13, 138, 195, 174, 14, 3, 196, 131, 12, 26, 5, 1, 67, 13, 138, 18, 196, 131, 19, 16, 195, 162, 14, 4, 9, 67, 9, 134, 16,
-			196, 131, 197, 159, 9, 66, 0, 7, 196, 56, 144, 201, 60, 77, 0, 8, 197, 88, 149, 18, 20, 112, 65, 8, 197, 36, 225, 201, 56, 80,
-			67, 8, 197, 72, 244, 212, 20, 16, 66, 8, 197, 72, 145, 9, 12, 16, 67, 8, 197, 16, 81, 9, 12, 16, 67, 16, 69, 81, 33, 66,
-			84, 144, 47, 14, 16, 36, 71, 58, 6, 37, 0, 8, 197, 4, 197, 15, 72, 16, 77, 0, 17, 70, 72, 20, 133, 61, 34, 64, 34, 35,
-			16, 36, 6, 39, 145, 124, 0, 0, 18, 70, 24, 20, 134, 85, 34, 69, 83, 35, 34, 83, 40, 16, 6, 37, 36, 0, 9, 134, 1, 12,
-			5, 197, 159, 9, 66, 0, 7, 196, 52, 22, 9, 52, 65, 0, 0, 12, 201, 64, 20, 148, 20, 225, 82, 84, 197, 73, 67, 0, 13, 138,
-			1, 4, 195, 162, 14, 3, 196, 131, 20, 21, 68, 0, 0, 0, 12, 137, 195, 174, 14, 3, 196, 131, 18, 3, 1, 67, 12, 137, 3, 196,
-			131, 12, 196, 131, 21, 26, 9, 68, 0, 6, 195, 5, 34, 80, 65, 11, 136, 195, 174, 14, 3, 15, 20, 18, 15, 67, 0, 8, 133, 18,
-			21, 12, 196, 131, 66, 7, 196, 28, 150, 143, 72, 65, 0, 8, 197, 36, 208, 71, 36, 224, 66, 8, 2, 196, 131, 6, 13, 0, 14, 0,
-			9, 198, 20, 194, 66, 21, 32, 64, 68, 0, 0, 8, 133, 15, 6, 20, 196, 131, 66, 12, 137, 195, 174, 14, 3, 5, 18, 3, 196, 131,
-			67, 0, 8, 197, 65, 34, 67, 36, 224, 65, 0, 8, 133, 22, 196, 131, 26, 21, 66, 8, 133, 197, 163, 9, 14, 21, 66, 9, 198, 72,
-			240, 133, 73, 64, 64, 66, 9, 198, 16, 148, 208, 21, 32, 64, 67, 9, 198, 16, 84, 9, 77, 64, 64, 67, 9, 198, 16, 83, 5, 13,
-			64, 64, 67, 21, 9, 15, 18, 9, 3, 196, 131, 18, 5, 9, 39, 16, 124, 49, 13, 34, 36, 37, 0, 79, 9, 198, 4, 49, 65, 77,
-			64, 64, 76, 0, 11, 136, 22, 9, 18, 7, 21, 12, 196, 131, 65, 9, 198, 65, 34, 67, 21, 1, 77, 66, 9, 134, 18, 196, 131, 2,
-			4, 1, 66, 0, 12, 137, 16, 18, 5, 26, 5, 14, 20, 196, 131, 67, 7, 196, 4, 210, 67, 20, 66, 0, 12, 201, 20, 98, 67, 36,
-			83, 148, 37, 160, 64, 69, 12, 201, 72, 81, 67, 32, 147, 9, 9, 32, 64, 69, 0, 0, 23, 10, 195, 174, 14, 196, 131, 21, 14, 20,
-			18, 21, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 0, 24, 10, 4, 9, 14, 196, 131, 21, 14, 20, 18, 21, 72, 37, 50, 13, 6,
-			40, 50, 47, 14, 16, 40, 0, 9, 134, 19, 196, 131, 18, 5, 1, 66, 9, 134, 197, 159, 15, 16, 20, 9, 66, 0, 6, 195, 5, 35,
-			85, 66, 0, 15, 69, 24, 243, 4, 21, 32, 83, 6, 39, 55, 72, 13, 34, 0, 0, 5, 194, 76, 80, 72, 0, 9, 198, 4, 48, 197,
-			57, 69, 65, 67, 0, 7, 196, 64, 149, 9, 12, 66, 6, 195, 13, 84, 213, 66, 0, 8, 197, 72, 18, 15, 88, 16, 65, 8, 197, 64,
-			84, 132, 20, 16, 66, 8, 197, 17, 84, 133, 72, 144, 66, 11, 136, 19, 20, 195, 162, 18, 14, 5, 1, 66, 8, 197, 72, 84, 5, 72,
-			16, 67, 0, 0, 9, 198, 8, 16, 212, 21, 34, 69, 66, 0, 14, 139, 195, 174, 14, 3, 196, 131, 16, 5, 18, 5, 1, 67, 11, 200,
-			36, 65, 78, 80, 145, 137, 12, 16, 69, 7, 196, 76, 84, 150, 36, 66, 0, 8, 197, 5, 37, 5, 72, 16, 66, 8, 197, 12, 194, 78,
-			80, 144, 66, 0, 9, 198, 4, 36, 207, 49, 98, 64, 68, 0, 12, 137, 16, 196, 131, 9, 1, 14, 10, 5, 14, 66, 0, 7, 196, 64,
-			21, 9, 52, 65, 7, 196, 48, 148, 19, 36, 66, 7, 196, 16, 81, 197, 80, 65, 11, 200, 16, 84, 208, 72, 147, 132, 20, 16, 67, 13,
-			2, 195, 162, 4, 112, 72, 37, 50, 6, 35, 0, 14, 0, 16, 69, 81, 32, 68, 85, 48, 47, 14, 16, 35, 72, 6, 40, 89, 0, 15,
-			6, 18, 196, 131, 16, 21, 19, 34, 13, 48, 6, 40, 89, 0, 16, 69, 17, 32, 68, 85, 48, 47, 14, 16, 35, 72, 6, 40, 89, 0,
-			11, 136, 1, 3, 5, 9, 1, 197, 159, 9, 66, 0, 12, 137, 18, 196, 131, 13, 195, 162, 14, 5, 13, 66, 0, 9, 198, 12, 192, 86,
-			36, 21, 21, 67, 9, 134, 13, 195, 162, 14, 3, 1, 66, 13, 2, 194, 169, 49, 6, 35, 48, 37, 34, 117, 47, 0, 0, 7, 196, 36,
-			229, 9, 52, 65, 19, 70, 12, 243, 80, 85, 65, 82, 49, 39, 65, 48, 6, 57, 40, 47, 13, 34, 0, 7, 196, 5, 33, 5, 52, 65,
-			13, 2, 195, 174, 4, 112, 72, 37, 50, 6, 37, 0, 14, 0, 8, 197, 88, 244, 212, 73, 80, 76, 8, 197, 56, 244, 212, 73, 80, 77,
-			7, 2, 197, 159, 91, 36, 0, 0, 0, 9, 198, 64, 148, 212, 60, 19, 5, 66, 9, 198, 8, 16, 212, 21, 34, 73, 66, 0, 0, 0,
-			9, 198, 40, 20, 15, 56, 144, 64, 66, 11, 2, 194, 176, 81, 14, 16, 35, 72, 36, 0, 0, 0, 11, 200, 64, 20, 148, 20, 225, 82,
-			84, 192, 67, 6, 195, 85, 35, 137, 66, 5, 130, 195, 182, 43, 0, 8, 197, 56, 144, 201, 84, 224, 77, 0, 9, 198, 4, 209, 82, 36,
-			48, 64, 66, 9, 198, 72, 85, 133, 56, 80, 64, 67, 0, 10, 67, 88, 145, 64, 84, 6, 37, 36, 0, 10, 199, 16, 86, 143, 72, 66,
-			78, 20, 66, 10, 199, 12, 243, 132, 84, 53, 15, 72, 66, 9, 198, 65, 33, 79, 13, 84, 1, 67, 11, 67, 24, 145, 64, 83, 6, 37,
-			36, 0, 72, 0, 10, 135, 197, 163, 9, 16, 5, 20, 5, 65, 7, 196, 80, 83, 69, 4, 66, 6, 195, 4, 49, 65, 78, 14, 4, 95,
-			3, 5, 4, 89, 36, 72, 6, 37, 55, 13, 0, 0, 7, 2, 197, 163, 123, 36, 0, 0, 9, 198, 65, 35, 208, 36, 49, 64, 66, 0,
-			16, 4, 95, 12, 9, 7, 55, 37, 81, 35, 47, 6, 40, 34, 13, 0, 0, 14, 139, 195, 174, 14, 3, 196, 131, 16, 5, 18, 9, 9,
-			67, 0, 11, 136, 195, 174, 14, 6, 9, 7, 5, 1, 67, 0, 9, 198, 52, 21, 18, 36, 49, 64, 66, 9, 198, 12, 84, 130, 36, 49,
-			64, 66, 14, 66, 80, 80, 47, 135, 91, 0, 72, 81, 97, 197, 159, 32, 13, 66, 80, 80, 47, 135, 34, 0, 72, 81, 97, 114, 32, 13,
-			66, 80, 80, 47, 135, 57, 0, 72, 81, 97, 105, 32, 13, 66, 80, 80, 47, 135, 65, 0, 72, 81, 97, 109, 32, 6, 194, 88, 16, 76,
-			32, 5, 194, 80, 80, 72, 0, 10, 67, 4, 50, 64, 35, 76, 6, 37, 0, 13, 138, 19, 20, 18, 196, 131, 12, 21, 3, 5, 1, 67,
-			9, 198, 65, 35, 212, 21, 53, 1, 67, 9, 198, 65, 35, 196, 84, 49, 65, 67, 13, 138, 195, 174, 14, 3, 18, 5, 197, 163, 5, 1,
-			67, 9, 198, 12, 243, 132, 84, 49, 65, 67, 8, 67, 88, 146, 64, 84, 132, 0, 0, 7, 196, 4, 49, 76, 20, 78, 6, 195, 4, 49,
-			73, 76, 0, 8, 197, 76, 51, 212, 20, 16, 66, 8, 197, 52, 84, 137, 80, 16, 67, 0, 9, 198, 60, 227, 198, 72, 82, 64, 67, 9,
-			198, 60, 19, 69, 56, 146, 64, 65, 9, 198, 56, 21, 21, 72, 146, 64, 67, 0, 18, 70, 88, 19, 5, 56, 50, 65, 84, 35, 55, 6,
-			36, 50, 89, 57, 35, 0, 10, 199, 4, 116, 137, 13, 83, 20, 84, 68, 10, 199, 13, 85, 18, 20, 145, 82, 4, 68, 13, 138, 195, 174,
-			13, 16, 196, 131, 20, 21, 18, 9, 69, 6, 195, 4, 49, 76, 76, 0, 10, 135, 197, 163, 196, 131, 18, 9, 9, 65, 9, 198, 12, 20,
-			9, 80, 243, 0, 66, 7, 196, 4, 130, 76, 20, 66, 7, 196, 4, 65, 82, 4, 67, 14, 139, 18, 5, 195, 174, 14, 20, 195, 162, 12,
-			14, 9, 68, 0, 8, 197, 72, 145, 9, 12, 80, 66, 11, 136, 16, 18, 196, 131, 10, 9, 20, 21, 67, 8, 197, 16, 83, 154, 36, 48,
-			66, 8, 197, 52, 83, 79, 72, 16, 67, 8, 197, 16, 243, 73, 56, 16, 67, 8, 197, 16, 84, 149, 48, 16, 67, 8, 197, 60, 52, 143,
-			80, 144, 67, 11, 136, 13, 21, 12, 197, 163, 21, 13, 9, 67, 0, 9, 198, 80, 84, 129, 64, 146, 64, 67, 5, 194, 81, 80, 76, 0,
-			10, 199, 4, 197, 21, 56, 65, 86, 4, 68, 9, 198, 4, 49, 83, 80, 82, 65, 78, 0, 9, 198, 88, 82, 9, 13, 83, 0, 66, 7,
-			196, 4, 210, 67, 36, 66, 7, 196, 8, 195, 195, 4, 67, 11, 200, 8, 192, 71, 61, 51, 15, 88, 144, 68, 0, 15, 69, 65, 35, 196,
-			85, 48, 48, 16, 39, 72, 6, 40, 89, 0, 15, 69, 21, 128, 204, 85, 48, 36, 101, 49, 55, 6, 40, 89, 0, 15, 69, 12, 243, 132,
-			85, 48, 49, 39, 50, 72, 6, 40, 89, 0, 0, 0, 9, 198, 88, 82, 9, 13, 83, 5, 66, 9, 134, 3, 196, 131, 19, 3, 1, 66,
-			0, 12, 68, 56, 85, 143, 36, 50, 36, 84, 6, 120, 0, 13, 68, 48, 149, 137, 84, 55, 6, 37, 84, 57, 40, 0, 6, 195, 37, 160,
-			137, 66, 0, 15, 140, 19, 20, 18, 196, 131, 6, 21, 12, 7, 5, 18, 1, 68, 0, 0, 10, 135, 26, 195, 162, 13, 2, 5, 20, 65,
-			9, 198, 4, 209, 82, 36, 50, 73, 66, 0, 0, 9, 197, 4, 197, 6, 20, 192, 65, 28, 0, 9, 198, 77, 84, 21, 56, 80, 64, 67,
-			9, 198, 77, 5, 77, 20, 112, 64, 68, 9, 198, 72, 81, 133, 72, 80, 64, 67, 17, 70, 56, 81, 207, 12, 144, 64, 50, 36, 81, 39,
-			76, 37, 6, 35, 0, 12, 137, 195, 174, 13, 2, 18, 196, 131, 3, 1, 67, 12, 137, 195, 174, 14, 3, 196, 131, 12, 26, 9, 67, 0,
-			21, 71, 65, 33, 68, 37, 52, 21, 76, 48, 14, 16, 36, 72, 37, 89, 48, 6, 40, 89, 0, 11, 136, 7, 195, 162, 4, 9, 12, 196,
-			131, 65, 0, 7, 196, 36, 229, 18, 20, 28, 11, 67, 17, 84, 1, 72, 40, 48, 13, 0, 28, 0, 11, 136, 26, 195, 162, 13, 2, 5,
-			20, 5, 65, 13, 138, 195, 174, 14, 4, 18, 5, 16, 20, 196, 131, 67, 0, 9, 198, 24, 243, 15, 76, 80, 64, 67, 9, 198, 16, 85,
-			133, 56, 80, 64, 67, 9, 198, 4, 165, 78, 28, 80, 64, 67, 0, 0, 12, 67, 21, 53, 5, 57, 36, 89, 47, 36, 0, 76, 6, 195,
-			5, 53, 1, 76, 0, 0, 9, 198, 37, 53, 5, 72, 145, 64, 67, 0, 9, 134, 197, 159, 15, 19, 5, 1, 66, 12, 201, 64, 20, 148,
-			20, 225, 82, 36, 195, 210, 67, 9, 134, 7, 196, 131, 19, 5, 1, 66, 0, 11, 67, 104, 149, 65, 88, 6, 37, 122, 35, 0, 11, 200,
-			56, 244, 212, 36, 209, 76, 61, 32, 65, 14, 139, 195, 174, 14, 197, 163, 5, 12, 5, 7, 5, 13, 67, 7, 196, 36, 226, 77, 4, 65,
-			7, 196, 12, 130, 77, 36, 20, 10, 135, 19, 9, 13, 197, 163, 5, 1, 66, 0, 11, 136, 18, 196, 131, 19, 21, 3, 5, 1, 67, 0,
-			17, 70, 88, 84, 154, 84, 145, 64, 84, 36, 34, 88, 6, 40, 57, 36, 0, 18, 70, 65, 35, 211, 80, 145, 64, 48, 14, 16, 39, 89,
-			47, 6, 37, 36, 0, 9, 198, 56, 244, 212, 36, 209, 64, 65, 8, 133, 6, 196, 131, 3, 21, 66, 9, 198, 16, 83, 154, 36, 49, 64,
-			66, 9, 198, 13, 32, 84, 36, 209, 64, 65, 0, 12, 201, 64, 20, 148, 20, 225, 82, 20, 195, 210, 67, 9, 134, 26, 196, 131, 3, 5,
-			1, 66, 9, 134, 18, 196, 131, 3, 5, 1, 66, 9, 134, 6, 196, 131, 3, 5, 1, 66, 0, 10, 135, 195, 174, 14, 20, 195, 162, 9,
-			66, 7, 196, 33, 83, 143, 72, 65, 7, 196, 20, 112, 76, 20, 66, 14, 139, 195, 174, 14, 197, 163, 5, 12, 5, 7, 5, 1, 68, 14,
-			139, 195, 174, 13, 16, 196, 131, 18, 197, 163, 5, 1, 67, 7, 196, 17, 82, 14, 36, 66, 0, 14, 69, 52, 242, 83, 20, 144, 65, 39,
-			37, 89, 6, 118, 0, 8, 197, 5, 4, 137, 28, 80, 65, 8, 197, 72, 84, 5, 80, 16, 67, 0, 9, 198, 65, 85, 5, 72, 146, 64,
-			66, 12, 137, 16, 18, 5, 6, 196, 131, 3, 5, 1, 67, 0, 9, 198, 40, 20, 15, 56, 145, 73, 66, 20, 71, 16, 84, 195, 60, 212,
-			21, 76, 72, 36, 89, 49, 39, 65, 48, 6, 40, 89, 0, 9, 198, 12, 243, 132, 84, 49, 77, 66, 10, 199, 4, 209, 82, 36, 50, 76,
-			20, 66, 7, 195, 64, 245, 0, 76, 32, 0, 11, 200, 28, 20, 212, 72, 243, 143, 52, 144, 20, 7, 196, 24, 16, 212, 84, 66, 0, 8,
-			197, 12, 147, 133, 52, 16, 65, 8, 197, 5, 4, 143, 64, 240, 67, 11, 136, 195, 174, 14, 6, 9, 5, 18, 1, 67, 8, 197, 16, 244,
-			141, 20, 16, 66, 0, 9, 198, 64, 20, 143, 16, 146, 64, 67, 0, 6, 2, 95, 1, 35, 0, 0, 14, 139, 195, 174, 14, 6, 196, 131,
-			197, 159, 21, 18, 1, 68, 7, 196, 12, 195, 195, 36, 66, 0, 0, 10, 67, 88, 145, 87, 84, 6, 57, 40, 0, 0, 21, 10, 6, 196,
-			131, 7, 196, 131, 4, 21, 21, 9, 83, 13, 81, 13, 72, 40, 6, 37, 0, 6, 2, 95, 5, 36, 0, 0, 14, 139, 195, 174, 14, 7,
-			18, 196, 131, 4, 9, 20, 21, 68, 6, 195, 85, 38, 137, 66, 0, 15, 69, 16, 148, 208, 85, 48, 72, 37, 89, 48, 6, 40, 89, 0,
-			0, 9, 198, 16, 81, 21, 12, 83, 64, 66, 9, 198, 4, 165, 78, 28, 83, 64, 66, 6, 2, 95, 9, 37, 0, 0, 0, 6, 2, 95,
-			15, 39, 0, 0, 13, 68, 84, 212, 12, 36, 6, 40, 65, 48, 55, 37, 0, 7, 196, 4, 114, 84, 4, 67, 7, 2, 95, 14, 50, 36,
-			0, 0, 8, 197, 28, 84, 129, 48, 64, 65, 11, 136, 6, 21, 18, 14, 9, 26, 196, 131, 67, 9, 198, 77, 5, 76, 8, 84, 129, 67,
-			9, 134, 3, 195, 162, 14, 20, 1, 66, 7, 2, 95, 13, 65, 36, 0, 0, 15, 70, 88, 245, 67, 32, 84, 128, 84, 6, 114, 76, 13,
-			34, 0, 10, 135, 197, 159, 5, 14, 9, 12, 5, 66, 6, 195, 85, 32, 193, 66, 9, 198, 8, 19, 1, 57, 48, 64, 67, 7, 2, 95,
-			12, 55, 36, 0, 0, 11, 136, 195, 174, 14, 3, 5, 16, 5, 13, 66, 10, 199, 64, 20, 148, 36, 50, 80, 4, 68, 7, 2, 95, 19,
-			89, 36, 0, 0, 0, 11, 136, 197, 163, 5, 12, 9, 14, 196, 131, 65, 8, 197, 12, 192, 84, 36, 224, 65, 0, 16, 70, 76, 48, 78,
-			56, 84, 128, 89, 49, 6, 36, 50, 13, 34, 0, 9, 198, 32, 19, 83, 80, 84, 128, 65, 0, 11, 136, 3, 18, 5, 197, 159, 20, 5,
-			13, 65, 11, 136, 3, 21, 22, 195, 162, 14, 20, 1, 67, 11, 136, 195, 174, 14, 197, 159, 5, 12, 1, 67, 0, 9, 134, 12, 1, 7,
-			196, 131, 18, 65, 7, 196, 24, 83, 69, 36, 66, 0, 6, 2, 95, 21, 40, 0, 0, 0, 11, 136, 14, 196, 131, 197, 159, 20, 5, 1,
-			66, 11, 136, 3, 18, 5, 197, 159, 20, 5, 1, 66, 18, 8, 1, 20, 195, 162, 197, 163, 9, 1, 35, 47, 6, 112, 123, 57, 35, 0,
-			7, 132, 19, 196, 131, 21, 76, 0, 9, 134, 14, 21, 13, 196, 131, 18, 65, 7, 196, 48, 16, 207, 52, 65, 7, 196, 36, 226, 77, 36,
-			65, 7, 196, 17, 84, 133, 4, 66, 12, 137, 3, 21, 14, 15, 197, 159, 20, 5, 1, 67, 7, 196, 4, 49, 83, 80, 76, 0, 8, 197,
-			52, 20, 148, 61, 32, 65, 0, 0, 14, 203, 12, 20, 129, 13, 65, 82, 20, 193, 76, 61, 32, 67, 7, 132, 19, 196, 131, 9, 76, 0,
-			7, 196, 12, 240, 201, 56, 65, 0, 8, 197, 52, 243, 9, 52, 80, 65, 8, 197, 12, 20, 133, 88, 16, 67, 13, 138, 195, 174, 14, 4,
-			5, 16, 12, 9, 14, 9, 68, 0, 6, 195, 16, 82, 129, 66, 6, 195, 28, 243, 137, 66, 0, 11, 136, 3, 195, 162, 18, 16, 9, 20,
-			21, 67, 6, 195, 49, 82, 64, 76, 0, 12, 137, 3, 18, 195, 162, 14, 3, 5, 14, 5, 65, 15, 2, 95, 34, 81, 107, 37, 55, 37,
-			65, 6, 36, 55, 36, 0, 0, 8, 197, 88, 144, 212, 36, 208, 65, 8, 197, 65, 85, 5, 72, 80, 66, 9, 198, 64, 85, 18, 20, 49,
-			77, 66, 8, 197, 56, 245, 137, 12, 80, 66, 13, 138, 195, 174, 14, 20, 196, 131, 18, 9, 20, 21, 68, 8, 197, 24, 243, 15, 76, 144,
-			67, 8, 197, 16, 243, 73, 56, 80, 65, 8, 197, 36, 229, 137, 80, 16, 67, 8, 197, 16, 243, 79, 48, 144, 67, 8, 197, 80, 240, 205,
-			4, 144, 73, 9, 198, 4, 49, 83, 81, 82, 65, 78, 16, 2, 95, 33, 36, 49, 89, 49, 55, 35, 65, 6, 35, 16, 36, 0, 0, 0,
-			24, 7, 19, 46, 1, 46, 13, 46, 4, 91, 36, 35, 91, 35, 65, 117, 72, 36, 48, 35, 34, 47, 36, 0, 15, 2, 95, 39, 35, 48,
-			39, 89, 47, 14, 16, 6, 39, 83, 0, 0, 7, 196, 80, 83, 69, 52, 65, 12, 137, 195, 174, 14, 7, 18, 5, 21, 14, 1, 68, 0,
-			0, 6, 195, 65, 85, 21, 66, 0, 0, 17, 4, 95, 3, 1, 16, 65, 35, 90, 40, 89, 49, 6, 40, 55, 13, 0, 0, 9, 197, 64,
-			83, 148, 73, 80, 72, 28, 22, 2, 95, 41, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 9,
-			198, 77, 4, 137, 40, 147, 128, 65, 6, 195, 88, 148, 129, 66, 23, 2, 95, 40, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 72, 36,
-			89, 49, 6, 37, 89, 13, 0, 0, 9, 134, 9, 14, 9, 13, 196, 131, 65, 0, 0, 10, 135, 7, 5, 1, 13, 196, 131, 14, 65, 14,
-			2, 95, 45, 49, 14, 16, 6, 35, 47, 37, 65, 13, 0, 0, 9, 198, 12, 129, 83, 80, 244, 128, 65, 12, 67, 24, 20, 129, 83, 4,
-			13, 34, 13, 0, 8, 13, 2, 95, 44, 84, 6, 37, 34, 81, 40, 55, 13, 0, 0, 11, 136, 6, 5, 14, 9, 3, 197, 159, 9, 65,
-			10, 2, 95, 51, 47, 14, 16, 6, 118, 0, 0, 7, 196, 29, 83, 5, 72, 65, 10, 135, 1, 197, 159, 5, 26, 196, 131, 67, 7, 196,
-			12, 194, 80, 36, 66, 21, 9, 15, 18, 9, 3, 196, 131, 18, 21, 9, 39, 16, 124, 49, 13, 34, 40, 37, 0, 79, 8, 2, 95, 50,
-			72, 6, 120, 0, 0, 11, 136, 16, 18, 15, 20, 5, 10, 196, 131, 67, 9, 134, 18, 5, 21, 197, 159, 9, 67, 9, 2, 95, 49, 6,
-			40, 50, 40, 0, 0, 10, 2, 95, 48, 88, 6, 36, 16, 39, 0, 0, 15, 140, 2, 9, 14, 5, 3, 21, 22, 195, 162, 14, 20, 1,
-			69, 11, 136, 4, 5, 19, 12, 21, 197, 159, 9, 67, 11, 2, 95, 55, 91, 6, 35, 48, 47, 36, 0, 0, 12, 137, 195, 174, 14, 3,
-			8, 9, 4, 5, 13, 66, 10, 2, 95, 54, 91, 6, 35, 89, 36, 0, 0, 12, 137, 1, 4, 5, 22, 196, 131, 18, 21, 12, 67, 11,
-			2, 95, 53, 76, 6, 37, 50, 76, 124, 0, 0, 6, 195, 85, 36, 201, 66, 12, 2, 95, 52, 48, 6, 35, 47, 14, 16, 40, 0, 0,
-			10, 135, 7, 5, 1, 13, 196, 131, 20, 65, 12, 4, 197, 163, 9, 5, 123, 6, 57, 36, 0, 72, 12, 4, 197, 163, 9, 5, 123, 6,
-			37, 36, 0, 76, 22, 2, 95, 59, 48, 6, 40, 50, 49, 47, 15, 91, 37, 84, 6, 37, 34, 81, 40, 55, 13, 0, 0, 7, 196, 76,
-			244, 197, 4, 66, 12, 137, 16, 18, 5, 7, 196, 131, 20, 5, 1, 67, 7, 196, 84, 229, 73, 4, 77, 17, 2, 95, 58, 72, 39, 6,
-			40, 13, 48, 6, 40, 50, 49, 47, 36, 0, 0, 9, 198, 65, 33, 90, 20, 229, 1, 67, 9, 134, 3, 196, 131, 4, 5, 1, 66, 9,
-			2, 95, 57, 50, 6, 131, 13, 0, 0, 9, 2, 95, 56, 6, 39, 48, 47, 0, 0, 16, 2, 95, 63, 112, 50, 47, 14, 16, 36, 71,
-			6, 35, 16, 36, 0, 0, 11, 136, 19, 20, 18, 9, 7, 196, 131, 20, 65, 12, 137, 3, 18, 195, 162, 14, 3, 5, 14, 9, 65, 7,
-			196, 4, 35, 206, 4, 67, 13, 2, 95, 62, 65, 117, 15, 65, 6, 35, 16, 36, 0, 0, 8, 197, 84, 197, 9, 52, 80, 65, 8, 197,
-			81, 84, 133, 48, 80, 66, 12, 137, 16, 18, 15, 1, 19, 16, 196, 131, 20, 65, 8, 197, 8, 244, 132, 20, 144, 66, 8, 197, 5, 4,
-			137, 28, 144, 65, 8, 197, 77, 68, 137, 12, 16, 66, 9, 198, 64, 20, 129, 48, 150, 129, 68, 0, 6, 195, 5, 36, 213, 66, 12, 2,
-			95, 60, 65, 117, 15, 65, 6, 37, 49, 0, 0, 10, 199, 28, 130, 76, 36, 209, 76, 20, 67, 0, 7, 196, 12, 240, 207, 76, 65, 7,
-			196, 76, 197, 74, 36, 66, 30, 8, 197, 159, 46, 1, 46, 13, 46, 4, 91, 37, 11, 35, 91, 4, 35, 15, 65, 117, 15, 72, 36, 48,
-			6, 35, 34, 47, 36, 0, 0, 8, 197, 56, 85, 5, 104, 144, 65, 14, 139, 13, 5, 19, 1, 7, 5, 18, 196, 131, 36, 50, 66, 8,
-			197, 104, 34, 69, 72, 16, 66, 0, 0, 11, 136, 1, 3, 5, 5, 1, 197, 159, 9, 66, 0, 7, 196, 85, 35, 5, 80, 65, 7, 196,
-			81, 83, 133, 80, 65, 7, 196, 77, 83, 133, 80, 65, 12, 137, 3, 196, 131, 16, 20, 21, 197, 159, 9, 67, 0, 8, 197, 52, 20, 137,
-			85, 48, 65, 0, 0, 26, 12, 195, 174, 14, 20, 15, 20, 4, 5, 1, 21, 14, 1, 112, 50, 47, 39, 47, 72, 135, 6, 40, 50, 35,
-			0, 0, 7, 196, 65, 83, 133, 52, 65, 7, 196, 72, 148, 195, 4, 66, 0, 8, 197, 4, 192, 137, 81, 80, 67, 0, 6, 195, 84, 193,
-			73, 66, 6, 195, 24, 16, 197, 76, 0, 21, 71, 65, 34, 69, 80, 83, 137, 20, 48, 14, 16, 57, 36, 47, 36, 50, 6, 37, 36, 0,
-			0, 7, 196, 48, 20, 197, 72, 65, 9, 133, 16, 15, 197, 163, 9, 76, 32, 0, 9, 134, 13, 196, 131, 18, 9, 9, 65, 0, 9, 198,
-			4, 53, 77, 84, 192, 64, 68, 17, 7, 22, 9, 5, 197, 163, 21, 9, 84, 57, 36, 123, 40, 6, 37, 0, 0, 9, 134, 195, 174, 14,
-			19, 196, 131, 8, 0, 7, 196, 77, 84, 5, 72, 65, 0, 9, 198, 36, 229, 5, 72, 84, 193, 68, 16, 6, 5, 18, 1, 197, 163, 9,
-			57, 36, 16, 35, 141, 124, 0, 78, 11, 136, 6, 9, 9, 14, 4, 3, 196, 131, 8, 0, 10, 135, 16, 21, 14, 5, 197, 163, 9, 65,
-			9, 198, 4, 209, 83, 80, 80, 192, 66, 9, 198, 76, 50, 9, 52, 32, 64, 66, 6, 195, 56, 144, 201, 8, 0, 11, 136, 3, 196, 131,
-			4, 5, 18, 9, 9, 66, 11, 136, 12, 9, 14, 7, 21, 197, 159, 9, 67, 11, 67, 20, 193, 64, 57, 36, 55, 36, 0, 76, 0, 12,
-			137, 19, 3, 196, 131, 4, 5, 18, 9, 9, 66, 12, 137, 195, 174, 14, 3, 18, 5, 197, 163, 9, 67, 12, 4, 95, 4, 15, 20, 48,
-			40, 50, 49, 47, 0, 0, 8, 197, 13, 33, 68, 37, 64, 65, 15, 67, 84, 67, 82, 117, 100, 101, 109, 101, 114, 39, 101, 0, 29, 0,
-			6, 195, 16, 80, 201, 8, 0, 7, 195, 4, 193, 64, 72, 28, 24, 2, 95, 91, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 48, 13,
-			47, 14, 16, 6, 35, 47, 13, 0, 0, 0, 0, 11, 67, 36, 194, 69, 37, 55, 6, 37, 36, 0, 7, 66, 88, 144, 84, 37, 0, 0,
-			15, 2, 95, 95, 89, 40, 71, 55, 37, 50, 57, 6, 35, 47, 0, 0, 7, 196, 5, 4, 137, 28, 65, 8, 133, 7, 196, 131, 19, 9,
-			66, 0, 8, 197, 77, 69, 68, 36, 80, 66, 8, 197, 64, 244, 9, 12, 80, 66, 8, 197, 64, 148, 201, 12, 16, 66, 8, 197, 48, 147,
-			73, 80, 80, 65, 8, 197, 13, 33, 68, 20, 208, 65, 8, 197, 4, 193, 71, 20, 208, 66, 8, 197, 4, 69, 67, 20, 208, 66, 8, 197,
-			4, 98, 82, 52, 16, 67, 8, 197, 16, 245, 133, 16, 144, 67, 31, 2, 95, 93, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 48, 13,
-			47, 14, 16, 6, 35, 47, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 9, 198, 37, 53, 1, 52, 37, 76, 67, 10, 135, 18, 196, 131,
-			19, 21, 3, 9, 67, 14, 2, 95, 92, 71, 4, 36, 49, 89, 55, 6, 36, 91, 0, 0, 0, 7, 196, 16, 83, 79, 56, 65, 9, 133,
-			22, 5, 197, 163, 9, 76, 32, 0, 8, 197, 65, 85, 5, 72, 144, 66, 13, 138, 1, 16, 196, 131, 18, 196, 131, 18, 9, 9, 67, 8,
-			197, 5, 3, 5, 12, 16, 67, 9, 134, 1, 13, 5, 197, 163, 9, 67, 0, 9, 134, 22, 196, 131, 18, 21, 12, 65, 10, 135, 20, 5,
-			13, 5, 197, 163, 9, 65, 9, 198, 65, 33, 86, 20, 226, 64, 67, 10, 135, 196, 131, 19, 20, 15, 18, 1, 77, 0, 11, 136, 197, 163,
-			9, 14, 5, 197, 163, 9, 65, 0, 7, 196, 88, 84, 197, 48, 65, 20, 72, 8, 194, 84, 104, 180, 137, 20, 112, 71, 55, 6, 37, 123,
-			49, 34, 37, 81, 0, 11, 200, 72, 84, 18, 21, 161, 78, 80, 16, 68, 0, 8, 197, 37, 160, 137, 81, 80, 67, 9, 134, 26, 195, 162,
-			13, 2, 9, 66, 0, 6, 195, 24, 145, 213, 66, 0, 11, 136, 20, 196, 131, 22, 9, 197, 163, 5, 66, 0, 15, 3, 19, 196, 131, 89,
-			13, 126, 124, 0, 72, 81, 109, 105, 32, 16, 3, 19, 196, 131, 89, 13, 97, 124, 0, 72, 81, 197, 159, 105, 32, 12, 3, 19, 196, 131,
-			89, 129, 0, 72, 81, 105, 32, 13, 3, 19, 196, 131, 89, 13, 55, 0, 72, 81, 108, 32, 6, 131, 19, 196, 131, 72, 0, 0, 6, 195,
-			88, 148, 193, 66, 13, 4, 95, 7, 18, 22, 81, 14, 16, 6, 35, 84, 0, 0, 6, 195, 20, 66, 84, 65, 0, 24, 73, 16, 147, 148,
-			61, 65, 5, 5, 83, 129, 72, 37, 50, 47, 39, 47, 72, 135, 6, 40, 50, 35, 0, 10, 135, 12, 195, 162, 14, 7, 196, 131, 28, 6,
-			131, 3, 196, 131, 76, 0, 0, 16, 70, 92, 147, 132, 61, 116, 192, 6, 58, 37, 50, 72, 130, 89, 0, 9, 198, 49, 81, 15, 88, 144,
-			192, 65, 16, 70, 12, 80, 73, 56, 144, 192, 76, 6, 135, 57, 50, 37, 49, 0, 6, 195, 17, 84, 129, 66, 0, 6, 195, 4, 193, 88,
-			65, 0, 7, 196, 64, 148, 201, 12, 65, 14, 68, 24, 146, 78, 16, 83, 37, 6, 37, 50, 72, 0, 8, 0, 9, 198, 12, 243, 80, 48,
-			144, 197, 66, 9, 198, 12, 243, 85, 56, 144, 193, 68, 0, 10, 135, 3, 1, 16, 5, 197, 163, 9, 65, 10, 135, 2, 1, 20, 5, 197,
-			163, 9, 65, 10, 135, 1, 18, 4, 5, 197, 163, 9, 65, 9, 198, 36, 228, 212, 4, 192, 64, 67, 11, 135, 16, 21, 20, 5, 197, 163,
-			9, 76, 32, 0, 11, 136, 22, 9, 14, 4, 5, 197, 163, 9, 65, 11, 136, 21, 13, 16, 12, 5, 197, 163, 9, 65, 11, 136, 20, 196,
-			131, 3, 5, 18, 9, 9, 66, 10, 67, 4, 69, 64, 35, 72, 6, 40, 0, 0, 12, 137, 16, 9, 5, 18, 4, 5, 197, 163, 9, 65,
-			7, 196, 65, 85, 5, 4, 78, 0, 13, 138, 20, 18, 9, 13, 9, 20, 5, 197, 163, 9, 66, 13, 138, 16, 18, 15, 13, 9, 20, 5,
-			197, 163, 9, 66, 13, 138, 16, 18, 9, 3, 5, 16, 5, 197, 163, 9, 66, 13, 138, 195, 174, 14, 3, 5, 16, 5, 197, 163, 9, 66,
-			0, 14, 139, 195, 174, 14, 20, 9, 14, 4, 5, 197, 163, 9, 66, 9, 198, 24, 80, 146, 36, 193, 64, 66, 9, 198, 12, 20, 148, 20,
-			193, 64, 66, 0, 10, 199, 17, 32, 71, 61, 53, 5, 4, 65, 11, 136, 1, 3, 5, 197, 159, 20, 9, 1, 72, 23, 2, 95, 123, 48,
-			35, 16, 35, 50, 47, 4, 36, 88, 13, 35, 49, 39, 55, 6, 35, 72, 13, 0, 14, 4, 95, 4, 9, 1, 47, 14, 16, 6, 36, 65,
-			13, 0, 0, 12, 137, 3, 196, 131, 12, 3, 195, 162, 9, 5, 66, 0, 8, 197, 56, 148, 212, 61, 32, 65, 9, 198, 28, 19, 2, 20,
-			226, 73, 65, 9, 198, 5, 48, 213, 56, 65, 65, 67, 0, 9, 198, 28, 19, 2, 20, 225, 64, 65, 0, 0, 11, 68, 16, 242, 78, 4,
-			72, 120, 50, 35, 0, 12, 137, 19, 6, 196, 131, 18, 195, 162, 13, 1, 67, 11, 2, 95, 126, 47, 6, 37, 55, 72, 13, 0, 0, 8,
-			197, 64, 84, 5, 56, 80, 65, 8, 197, 21, 130, 83, 80, 16, 67, 8, 197, 16, 80, 207, 48, 16, 67, 9, 134, 16, 196, 131, 197, 163,
-			9, 66, 9, 133, 3, 195, 162, 14, 4, 72, 8, 8, 197, 4, 197, 5, 36, 16, 77, 30, 2, 95, 125, 48, 35, 16, 35, 50, 47, 4,
-			36, 88, 13, 35, 49, 39, 55, 6, 35, 72, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 20, 2, 95, 124, 71, 6, 35, 34, 13, 84,
-			36, 34, 47, 37, 49, 6, 35, 55, 13, 0, 0, 0, 11, 67, 4, 69, 83, 35, 72, 6, 40, 89, 0, 20, 8, 15, 18, 9, 3, 195,
-			162, 14, 4, 39, 16, 124, 49, 4, 112, 50, 72, 0, 76, 0, 8, 197, 64, 17, 213, 8, 80, 65, 8, 197, 4, 210, 67, 36, 144, 66,
-			9, 134, 1, 13, 21, 197, 163, 9, 67, 0, 9, 198, 28, 19, 2, 20, 226, 64, 65, 10, 135, 3, 21, 7, 5, 197, 163, 9, 65, 0,
-			27, 12, 19, 21, 16, 18, 1, 22, 9, 5, 197, 163, 21, 9, 89, 40, 48, 34, 35, 84, 57, 36, 123, 40, 6, 37, 0, 0, 12, 137,
-			19, 3, 15, 1, 20, 5, 197, 163, 9, 65, 11, 200, 12, 243, 148, 72, 22, 137, 12, 80, 67, 11, 200, 4, 67, 73, 56, 148, 212, 72,
-			16, 68, 0, 13, 138, 16, 5, 18, 13, 9, 20, 5, 197, 163, 9, 66, 9, 198, 24, 19, 129, 80, 144, 201, 66, 17, 142, 195, 174, 13,
-			2, 21, 14, 196, 131, 20, 196, 131, 197, 163, 9, 69, 0, 14, 139, 4, 9, 19, 20, 9, 14, 7, 5, 197, 163, 9, 66, 14, 139, 4,
-			5, 19, 3, 8, 9, 26, 196, 131, 20, 21, 68, 0, 11, 136, 195, 174, 14, 6, 12, 15, 18, 9, 67, 0, 12, 137, 16, 196, 131, 4,
-			21, 18, 9, 3, 5, 67, 7, 196, 61, 5, 9, 52, 65, 0, 8, 197, 5, 97, 78, 81, 80, 67, 0, 19, 9, 22, 9, 19, 45, 1,
-			45, 22, 9, 19, 84, 37, 88, 35, 84, 6, 37, 0, 5, 194, 84, 224, 72, 0, 11, 136, 7, 196, 131, 21, 18, 9, 3, 5, 66, 0,
-			10, 135, 4, 5, 3, 15, 12, 196, 131, 67, 0, 9, 134, 15, 2, 197, 163, 9, 9, 66, 13, 138, 7, 195, 162, 7, 195, 162, 12, 9,
-			3, 5, 67, 0, 9, 198, 72, 86, 137, 77, 64, 64, 67, 9, 198, 25, 83, 7, 21, 32, 64, 67, 9, 198, 21, 132, 12, 61, 32, 64,
-			67, 9, 198, 21, 128, 71, 21, 32, 64, 68, 9, 198, 12, 243, 69, 57, 64, 64, 67, 0, 12, 136, 9, 1, 18, 196, 131, 197, 159, 9,
-			65, 8, 0, 0, 0, 10, 135, 7, 195, 162, 4, 9, 12, 1, 67, 10, 135, 13, 15, 12, 5, 197, 159, 9, 67, 0, 11, 136, 20, 18,
-			5, 3, 5, 197, 163, 9, 65, 11, 136, 13, 5, 18, 7, 5, 197, 163, 9, 65, 10, 199, 16, 80, 207, 56, 80, 212, 4, 68, 0, 12,
-			137, 1, 10, 21, 14, 7, 5, 197, 163, 9, 66, 12, 137, 195, 174, 14, 4, 18, 5, 16, 20, 1, 67, 0, 13, 138, 197, 159, 20, 5,
-			18, 7, 5, 197, 163, 9, 65, 13, 138, 16, 5, 20, 18, 5, 3, 5, 197, 163, 9, 66, 15, 140, 195, 174, 14, 4, 5, 16, 196, 131,
-			18, 20, 196, 131, 68, 13, 138, 4, 5, 19, 6, 1, 3, 5, 197, 163, 9, 66, 13, 138, 3, 15, 14, 4, 21, 3, 5, 197, 163, 9,
-			66, 9, 198, 24, 16, 201, 48, 149, 1, 68, 0, 14, 139, 19, 20, 18, 195, 162, 14, 7, 5, 197, 163, 9, 65, 14, 139, 195, 174, 14,
-			3, 9, 14, 7, 5, 197, 163, 9, 66, 9, 198, 25, 83, 7, 21, 33, 64, 65, 13, 4, 95, 35, 51, 50, 89, 48, 6, 35, 123, 116,
-			0, 0, 15, 140, 195, 174, 14, 20, 15, 1, 18, 3, 5, 197, 163, 9, 66, 0, 7, 196, 5, 86, 133, 4, 66, 12, 137, 1, 197, 159,
-			20, 5, 18, 14, 5, 1, 67, 0, 8, 197, 88, 144, 212, 61, 32, 65, 15, 69, 52, 20, 139, 21, 32, 65, 6, 35, 34, 49, 13, 34,
-			0, 9, 134, 2, 18, 15, 197, 159, 21, 66, 8, 197, 5, 50, 71, 85, 32, 66, 9, 198, 64, 245, 18, 37, 97, 65, 67, 9, 134, 7,
-			195, 162, 14, 4, 9, 66, 0, 9, 198, 77, 68, 149, 13, 69, 64, 66, 9, 198, 60, 20, 208, 21, 65, 64, 65, 9, 198, 9, 81, 142,
-			37, 69, 64, 67, 0, 11, 136, 20, 196, 131, 3, 5, 18, 5, 1, 66, 11, 136, 195, 174, 14, 7, 18, 15, 26, 9, 67, 0, 11, 200,
-			36, 228, 212, 73, 80, 212, 61, 32, 66, 10, 135, 4, 18, 1, 7, 15, 197, 159, 65, 7, 196, 13, 83, 20, 84, 66, 0, 8, 197, 4,
-			100, 137, 12, 16, 65, 8, 197, 65, 33, 68, 20, 16, 66, 0, 9, 198, 76, 195, 194, 61, 162, 64, 67, 9, 198, 16, 84, 197, 73, 98,
-			64, 67, 0, 11, 136, 195, 174, 14, 18, 15, 197, 159, 9, 67, 11, 136, 195, 174, 14, 18, 15, 197, 159, 9, 67, 0, 7, 196, 36, 66,
-			76, 20, 66, 8, 133, 2, 21, 197, 159, 9, 66, 9, 133, 4, 5, 197, 159, 9, 66, 8, 0, 8, 197, 48, 16, 210, 36, 208, 65, 15,
-			69, 77, 1, 82, 36, 16, 89, 48, 36, 16, 6, 57, 35, 0, 0, 6, 195, 28, 19, 5, 66, 6, 195, 76, 244, 201, 66, 9, 198, 64,
-			245, 18, 37, 98, 64, 67, 10, 198, 64, 245, 133, 77, 66, 64, 67, 9, 6, 195, 52, 83, 5, 77, 0, 19, 8, 195, 174, 14, 12, 15,
-			3, 21, 9, 112, 50, 55, 39, 49, 40, 6, 37, 0, 0, 12, 67, 9, 34, 79, 71, 14, 16, 6, 37, 39, 0, 12, 137, 16, 18, 196,
-			131, 2, 21, 197, 159, 9, 67, 0, 0, 14, 139, 195, 174, 14, 16, 21, 14, 19, 196, 131, 20, 21, 68, 6, 195, 12, 19, 5, 65, 6,
-			195, 76, 19, 5, 77, 0, 10, 199, 16, 148, 212, 36, 225, 197, 52, 66, 0, 0, 8, 197, 4, 113, 78, 81, 80, 67, 0, 10, 135, 6,
-			21, 18, 9, 197, 159, 1, 67, 0, 10, 135, 18, 195, 162, 14, 10, 5, 20, 65, 11, 136, 195, 174, 14, 3, 21, 18, 3, 1, 67, 10,
-			199, 12, 192, 83, 36, 98, 67, 4, 68, 0, 10, 135, 1, 12, 5, 18, 7, 196, 131, 66, 0, 0, 12, 137, 14, 5, 18, 5, 7, 21,
-			12, 196, 131, 66, 9, 198, 12, 243, 133, 13, 64, 64, 67, 9, 198, 53, 83, 20, 61, 32, 64, 77, 10, 135, 195, 174, 14, 19, 21, 13,
-			9, 77, 0, 0, 13, 68, 12, 244, 212, 4, 49, 39, 89, 47, 6, 35, 0, 0, 0, 6, 195, 64, 245, 5, 66, 9, 198, 60, 34, 69,
-			13, 64, 64, 67, 9, 198, 4, 49, 76, 61, 32, 64, 78, 0, 11, 136, 1, 197, 159, 20, 5, 16, 20, 1, 67, 0, 9, 198, 65, 35,
-			198, 21, 51, 210, 66, 13, 68, 13, 85, 9, 4, 49, 40, 47, 6, 37, 35, 0, 0, 9, 134, 16, 196, 131, 18, 5, 1, 66, 12, 201,
-			21, 132, 5, 72, 147, 69, 57, 64, 64, 69, 0, 9, 198, 104, 115, 205, 61, 65, 64, 65, 9, 198, 12, 244, 133, 13, 69, 64, 67, 10,
-			135, 1, 16, 196, 131, 18, 5, 1, 67, 0, 0, 12, 137, 26, 21, 7, 18, 196, 131, 22, 5, 1, 67, 12, 137, 4, 9, 19, 16, 196,
-			131, 18, 5, 1, 67, 0, 0, 9, 198, 77, 81, 140, 21, 65, 64, 65, 9, 198, 64, 240, 206, 37, 69, 64, 67, 9, 198, 64, 16, 207,
-			77, 65, 64, 65, 10, 135, 195, 174, 14, 3, 21, 9, 5, 66, 9, 198, 28, 20, 142, 37, 69, 64, 67, 18, 70, 61, 34, 67, 5, 33,
-			64, 39, 16, 124, 49, 4, 35, 16, 36, 0, 76, 0, 11, 136, 4, 5, 21, 14, 196, 131, 26, 9, 68, 11, 136, 3, 196, 131, 4, 5,
-			18, 5, 1, 66, 0, 7, 196, 84, 209, 90, 36, 65, 12, 137, 19, 3, 196, 131, 4, 5, 18, 5, 1, 66, 7, 196, 64, 17, 201, 56,
-			65, 8, 196, 64, 240, 84, 20, 76, 32, 0, 8, 197, 76, 80, 207, 48, 80, 65, 8, 197, 64, 84, 5, 56, 144, 65, 8, 197, 24, 20,
-			207, 48, 80, 66, 8, 197, 72, 84, 1, 72, 16, 67, 8, 197, 4, 67, 210, 52, 144, 67, 0, 10, 135, 16, 196, 131, 19, 20, 18, 1,
-			66, 6, 195, 12, 149, 9, 66, 0, 0, 7, 196, 48, 241, 201, 12, 65, 7, 196, 4, 69, 78, 4, 67, 0, 14, 69, 28, 243, 199, 48,
-			80, 81, 6, 40, 81, 13, 55, 0, 8, 197, 12, 130, 77, 36, 48, 65, 8, 197, 4, 225, 18, 20, 144, 66, 8, 197, 64, 194, 77, 8,
-			16, 66, 8, 197, 61, 33, 15, 56, 16, 67, 15, 69, 21, 99, 204, 84, 16, 36, 84, 39, 55, 58, 6, 35, 0, 0, 14, 139, 22, 9,
-			14, 15, 22, 196, 131, 197, 163, 9, 9, 68, 0, 11, 136, 18, 196, 131, 7, 21, 197, 159, 9, 67, 0, 11, 67, 61, 5, 83, 39, 48,
-			6, 40, 89, 0, 13, 68, 13, 85, 9, 20, 49, 40, 47, 6, 37, 36, 0, 8, 196, 65, 85, 5, 52, 76, 32, 12, 137, 1, 3, 5,
-			12, 5, 1, 197, 159, 9, 66, 0, 9, 198, 52, 16, 213, 48, 21, 21, 68, 8, 197, 25, 32, 67, 81, 80, 66, 0, 14, 139, 195, 174,
-			14, 20, 195, 162, 13, 16, 9, 14, 1, 68, 0, 0, 12, 68, 5, 84, 137, 84, 35, 40, 16, 6, 116, 0, 7, 196, 80, 144, 211, 36,
-			66, 0, 0, 0, 10, 199, 4, 212, 212, 21, 33, 1, 52, 65, 11, 136, 195, 174, 14, 3, 5, 18, 3, 1, 67, 0, 10, 135, 18, 5,
-			26, 5, 13, 196, 131, 67, 7, 196, 61, 33, 9, 56, 65, 0, 8, 197, 76, 20, 131, 36, 224, 65, 8, 197, 28, 84, 129, 72, 64, 65,
-			9, 197, 5, 53, 6, 20, 192, 65, 8, 0, 10, 135, 18, 196, 131, 7, 5, 20, 5, 65, 9, 198, 21, 132, 5, 16, 144, 64, 67, 9,
-			198, 17, 84, 133, 72, 80, 64, 66, 0, 6, 195, 52, 80, 64, 76, 0, 7, 196, 81, 81, 15, 72, 65, 7, 196, 60, 97, 82, 20, 66,
-			7, 196, 28, 192, 90, 84, 66, 7, 196, 4, 165, 84, 4, 67, 0, 0, 12, 137, 3, 15, 14, 20, 9, 14, 21, 196, 131, 66, 9, 198,
-			56, 147, 73, 12, 80, 64, 67, 0, 23, 11, 20, 18, 9, 39, 21, 14, 7, 8, 9, 21, 12, 47, 16, 37, 40, 50, 81, 57, 40, 55,
-			0, 0, 7, 196, 13, 85, 9, 36, 66, 0, 9, 198, 77, 64, 82, 61, 53, 5, 65, 0, 17, 70, 12, 192, 85, 16, 149, 64, 49, 55,
-			35, 6, 40, 72, 57, 40, 0, 9, 198, 8, 17, 10, 60, 53, 64, 67, 10, 135, 1, 13, 21, 197, 163, 5, 1, 67, 0, 6, 195, 84,
-			209, 68, 65, 11, 136, 18, 15, 13, 195, 174, 14, 9, 1, 67, 0, 0, 8, 197, 48, 81, 148, 21, 32, 65, 13, 138, 195, 174, 13, 2,
-			195, 162, 3, 19, 5, 1, 67, 0, 10, 135, 18, 196, 131, 13, 195, 162, 9, 66, 9, 198, 52, 84, 212, 20, 49, 64, 65, 0, 9, 67,
-			36, 82, 64, 6, 57, 118, 0, 0, 21, 9, 13, 21, 18, 4, 196, 131, 18, 9, 5, 65, 40, 34, 72, 13, 16, 6, 37, 36, 0, 13,
-			68, 48, 21, 90, 36, 55, 6, 35, 40, 88, 124, 0, 6, 195, 4, 210, 67, 66, 10, 135, 1, 3, 5, 12, 1, 197, 159, 66, 0, 8,
-			197, 80, 84, 129, 64, 144, 20, 8, 197, 64, 148, 201, 12, 144, 66, 9, 198, 16, 84, 198, 4, 49, 77, 66, 8, 197, 36, 228, 197, 72,
-			16, 67, 8, 197, 4, 225, 193, 40, 16, 67, 0, 14, 139, 13, 196, 131, 18, 20, 21, 18, 9, 19, 5, 1, 68, 0, 6, 195, 52, 82,
-			64, 76, 0, 0, 9, 198, 56, 84, 133, 29, 83, 9, 66, 8, 197, 8, 83, 7, 36, 16, 65, 8, 197, 4, 38, 137, 12, 80, 66, 8,
-			197, 16, 80, 149, 80, 16, 67, 14, 69, 61, 34, 67, 84, 144, 39, 16, 124, 49, 121, 0, 79, 0, 6, 195, 80, 244, 9, 66, 10, 135,
-			195, 174, 14, 19, 5, 18, 1, 67, 0, 10, 199, 4, 197, 3, 36, 225, 86, 4, 68, 10, 199, 72, 85, 133, 72, 33, 82, 4, 68, 6,
-			195, 12, 19, 64, 72, 0, 0, 0, 9, 198, 52, 20, 137, 80, 147, 64, 66, 0, 0, 0, 9, 198, 104, 68, 133, 48, 149, 21, 67, 0,
-			9, 198, 16, 147, 131, 60, 195, 192, 65, 0, 10, 199, 65, 85, 5, 72, 226, 67, 36, 66, 10, 67, 32, 242, 84, 107, 6, 120, 47, 0,
-			10, 199, 12, 21, 1, 16, 144, 211, 36, 68, 0, 7, 196, 64, 17, 213, 8, 65, 0, 24, 10, 5, 24, 5, 18, 3, 9, 197, 163, 9,
-			21, 36, 81, 88, 36, 34, 76, 6, 37, 123, 57, 40, 0, 0, 10, 135, 18, 195, 162, 19, 5, 20, 5, 65, 17, 70, 12, 192, 85, 16,
-			144, 64, 49, 55, 35, 6, 40, 72, 57, 35, 0, 6, 195, 77, 4, 133, 28, 0, 0, 14, 68, 21, 132, 21, 76, 36, 49, 89, 48, 6,
-			40, 89, 0, 0, 8, 197, 28, 19, 2, 20, 224, 65, 0, 9, 198, 77, 81, 133, 72, 80, 64, 67, 17, 7, 18, 196, 131, 19, 6, 15,
-			9, 34, 13, 89, 83, 39, 6, 37, 0, 0, 10, 199, 77, 80, 143, 72, 66, 78, 20, 66, 7, 195, 76, 21, 64, 72, 8, 0, 0, 15,
-			6, 197, 159, 5, 6, 9, 1, 91, 36, 83, 6, 37, 35, 0, 0, 9, 198, 24, 16, 212, 36, 49, 64, 66, 0, 6, 195, 52, 85, 64,
-			76, 0, 7, 196, 53, 84, 133, 4, 66, 12, 137, 195, 174, 14, 20, 5, 197, 163, 5, 1, 67, 12, 137, 4, 5, 16, 196, 131, 197, 159,
-			5, 1, 67, 0, 22, 10, 3, 5, 1, 21, 197, 159, 5, 19, 3, 21, 76, 135, 40, 91, 6, 36, 89, 49, 40, 0, 8, 197, 4, 49,
-			76, 61, 32, 74, 0, 10, 135, 20, 196, 131, 3, 5, 18, 9, 66, 9, 198, 65, 33, 76, 36, 225, 192, 66, 10, 135, 20, 18, 196, 131,
-			7, 5, 1, 66, 10, 135, 16, 12, 196, 131, 3, 5, 1, 66, 0, 11, 136, 16, 12, 196, 131, 3, 5, 18, 9, 66, 11, 136, 195, 174,
-			14, 4, 5, 19, 5, 1, 67, 0, 12, 68, 104, 243, 66, 36, 88, 39, 65, 71, 37, 0, 7, 196, 76, 145, 213, 72, 65, 0, 8, 197,
-			52, 241, 5, 48, 16, 67, 0, 10, 135, 20, 196, 131, 3, 5, 18, 5, 66, 10, 135, 195, 174, 14, 3, 5, 16, 21, 67, 0, 11, 136,
-			16, 12, 196, 131, 3, 5, 18, 5, 66, 10, 199, 4, 53, 80, 84, 224, 212, 84, 68, 10, 199, 16, 85, 5, 72, 210, 78, 4, 68, 10,
-			199, 13, 85, 18, 20, 213, 82, 4, 68, 0, 7, 196, 36, 148, 213, 76, 66, 8, 133, 22, 195, 162, 14, 1, 66, 7, 196, 60, 97, 82,
-			36, 67, 0, 9, 134, 2, 196, 131, 21, 20, 21, 67, 13, 138, 195, 174, 14, 3, 196, 131, 9, 5, 18, 1, 68, 8, 197, 21, 53, 9,
-			52, 16, 67, 8, 197, 16, 148, 212, 72, 16, 66, 13, 138, 26, 196, 131, 4, 196, 131, 18, 14, 9, 9, 68, 0, 0, 10, 199, 81, 32,
-			78, 76, 97, 82, 4, 68, 10, 199, 36, 229, 5, 72, 97, 82, 4, 68, 0, 11, 136, 197, 159, 14, 9, 197, 163, 5, 12, 65, 7, 196,
-			72, 81, 213, 48, 65, 7, 196, 52, 144, 213, 48, 65, 0, 6, 20, 0, 0, 0, 25, 2, 0, 0, 95, 1, 0, 0, 27, 2, 0, 0,
-			99, 1, 0, 0, 24, 2, 0, 0, 95, 1, 0, 0, 26, 2, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 6, 195, 162, 0, 105, 101,
-			1, 21, 2, 32, 3, 8, 133, 36, 0, 3, 112, 0, 105, 3, 133, 0, 117, 3, 134, 0, 7, 6, 195, 174, 0, 1, 21, 2, 32, 3,
-			6, 112, 0, 3, 112, 0, 7, 6, 196, 131, 0, 117, 2, 32, 3, 6, 130, 0, 1, 21, 2, 17, 67, 196, 131, 32, 3, 8, 13, 0,
-			105, 101, 1, 21, 2, 32, 3, 8, 129, 36, 0, 4, 3, 13, 0, 1, 10, 2, 32, 14, 128, 192, 129, 0, 1, 17, 67, 131, 196, 21,
-			2, 32, 0, 1, 99, 101, 10, 2, 32, 0, 1, 114, 101, 21, 2, 32, 0, 1, 163, 197, 105, 21, 2, 32, 0, 4, 114, 105, 2, 17,
-			65, 17, 65, 32, 3, 13, 16, 6, 37, 0, 114, 105, 2, 17, 65, 32, 0, 114, 105, 105, 2, 32, 3, 13, 16, 6, 132, 0, 4, 117,
-			1, 99, 2, 116, 3, 13, 40, 0, 117, 8, 98, 2, 116, 0, 117, 8, 100, 2, 110, 0, 117, 8, 108, 2, 100, 0, 116, 196, 131, 1,
-			21, 2, 32, 14, 129, 128, 131, 3, 13, 47, 13, 0, 116, 101, 1, 21, 2, 32, 14, 129, 128, 131, 3, 13, 47, 36, 0, 116, 101, 108,
-			101, 1, 21, 2, 32, 14, 129, 128, 133, 3, 13, 47, 36, 55, 36, 0, 116, 101, 108, 111, 114, 1, 21, 2, 32, 14, 129, 128, 134, 3,
-			13, 47, 36, 55, 39, 34, 0, 116, 117, 108, 1, 21, 2, 32, 14, 129, 128, 132, 3, 13, 47, 40, 55, 0, 116, 117, 108, 117, 105, 1,
-			21, 2, 32, 14, 129, 128, 134, 3, 13, 47, 40, 55, 121, 0, 105, 2, 32, 3, 129, 0, 117, 3, 130, 0, 7, 6, 197, 159, 0, 3,
-			91, 0, 110, 105, 1, 21, 2, 32, 3, 91, 50, 6, 37, 0, 105, 1, 45, 2, 32, 3, 91, 124, 0, 1, 21, 2, 105, 32, 3, 97,
-			0, 7, 6, 197, 163, 0, 3, 123, 0, 1, 21, 2, 105, 32, 3, 141, 0, 105, 1, 45, 2, 32, 3, 141, 128, 0, 7, 6, 97, 0,
-			4, 1, 21, 26, 2, 24, 32, 3, 6, 35, 0, 1, 105, 131, 196, 2, 32, 0, 1, 110, 111, 105, 21, 2, 32, 0, 117, 8, 108, 2,
-			100, 3, 6, 35, 40, 0, 108, 101, 1, 21, 2, 32, 3, 6, 35, 55, 36, 0, 98, 105, 108, 1, 21, 2, 32, 3, 6, 35, 71, 37,
-			55, 0, 117, 2, 32, 3, 6, 114, 0, 105, 2, 32, 3, 6, 117, 0, 4, 3, 35, 0, 1, 10, 2, 32, 14, 128, 192, 129, 0, 1,
-			105, 103, 2, 32, 14, 128, 192, 129, 0, 2, 17, 65, 17, 65, 17, 65, 0, 105, 1, 110, 2, 118, 3, 35, 37, 0, 4, 117, 1, 99,
-			2, 116, 3, 35, 40, 0, 117, 2, 100, 0, 117, 2, 114, 0, 117, 2, 115, 116, 0, 117, 2, 122, 0, 110, 116, 105, 8, 2, 21, 14,
-			128, 132, 132, 3, 35, 50, 47, 37, 0, 105, 2, 97, 3, 35, 57, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 4, 1,
-			21, 2, 105, 108, 32, 3, 8, 71, 0, 1, 21, 2, 105, 108, 97, 32, 0, 1, 21, 2, 105, 108, 105, 32, 0, 1, 21, 2, 105, 108,
-			105, 105, 32, 0, 1, 21, 2, 105, 108, 105, 108, 101, 32, 0, 1, 21, 2, 105, 108, 105, 108, 111, 114, 32, 0, 1, 21, 2, 105, 108,
-			117, 108, 117, 105, 32, 0, 4, 3, 71, 0, 98, 0, 105, 108, 1, 111, 109, 2, 32, 3, 71, 6, 37, 55, 0, 1, 21, 2, 105, 32,
-			3, 143, 0, 7, 6, 99, 0, 111, 108, 1, 21, 21, 2, 32, 3, 8, 49, 39, 55, 0, 111, 108, 105, 1, 21, 21, 2, 32, 14, 129,
-			128, 129, 3, 8, 124, 0, 111, 108, 101, 1, 21, 21, 2, 32, 14, 129, 128, 129, 3, 36, 0, 4, 3, 49, 0, 104, 0, 110, 105, 1,
-			21, 2, 32, 3, 49, 50, 6, 37, 0, 110, 101, 97, 1, 21, 2, 32, 3, 49, 50, 36, 6, 35, 0, 4, 2, 101, 3, 76, 0, 2,
-			105, 0, 105, 2, 111, 0, 105, 105, 3, 76, 132, 0, 7, 6, 100, 0, 4, 3, 72, 0, 100, 0, 1, 21, 2, 105, 32, 3, 144, 0,
-			7, 6, 101, 0, 1, 17, 67, 10, 2, 114, 101, 32, 3, 2, 36, 0, 117, 1, 21, 2, 108, 32, 3, 6, 36, 40, 0, 117, 1, 21,
-			2, 32, 24, 3, 6, 115, 0, 105, 1, 114, 2, 101, 114, 32, 3, 6, 118, 0, 4, 1, 21, 2, 114, 97, 32, 3, 8, 36, 0, 1,
-			21, 2, 114, 101, 32, 0, 1, 21, 2, 114, 101, 97, 32, 0, 1, 21, 2, 114, 101, 105, 32, 0, 1, 21, 2, 114, 105, 32, 0, 1,
-			21, 2, 114, 105, 105, 32, 0, 1, 21, 2, 114, 196, 131, 32, 0, 197, 159, 1, 21, 2, 32, 3, 8, 36, 91, 0, 197, 159, 105, 108,
-			111, 114, 1, 21, 2, 32, 3, 8, 36, 91, 37, 55, 39, 34, 0, 197, 159, 117, 108, 1, 21, 2, 32, 3, 8, 36, 91, 40, 55, 0,
-			197, 159, 117, 108, 117, 105, 1, 21, 2, 32, 3, 8, 36, 91, 40, 55, 121, 0, 197, 159, 105, 1, 21, 2, 32, 3, 8, 36, 91, 124,
-			0, 4, 3, 36, 0, 1, 102, 21, 2, 114, 97, 32, 0, 1, 102, 21, 2, 114, 97, 32, 0, 1, 105, 2, 114, 97, 32, 0, 1, 105,
-			2, 114, 101, 32, 0, 1, 105, 2, 114, 101, 97, 32, 0, 1, 105, 2, 114, 105, 32, 0, 1, 105, 2, 114, 105, 105, 32, 0, 1, 105,
-			2, 114, 196, 131, 32, 0, 2, 17, 65, 17, 65, 17, 65, 0, 111, 1, 100, 2, 115, 101, 98, 3, 36, 39, 0, 117, 1, 21, 2, 32,
-			3, 36, 40, 0, 99, 1, 116, 17, 65, 21, 2, 105, 105, 32, 3, 36, 76, 0, 4, 101, 8, 99, 97, 2, 97, 3, 118, 0, 105, 2,
-			32, 0, 105, 8, 0, 4, 97, 3, 135, 0, 97, 1, 10, 2, 32, 14, 128, 192, 130, 0, 83, 105, 1, 10, 3, 135, 57, 0, 97, 117,
-			3, 135, 58, 0, 111, 3, 136, 0, 111, 97, 3, 136, 6, 35, 0, 7, 6, 102, 0, 4, 3, 83, 0, 102, 0, 1, 21, 2, 105, 32,
-			3, 142, 0, 7, 6, 103, 0, 4, 2, 101, 3, 75, 0, 2, 105, 0, 105, 105, 1, 10, 2, 32, 3, 75, 6, 132, 0, 105, 1, 10,
-			2, 17, 65, 32, 3, 75, 37, 0, 105, 105, 3, 75, 132, 0, 4, 3, 81, 0, 104, 0, 7, 6, 104, 0, 1, 21, 2, 105, 32, 3,
-			99, 0, 3, 107, 0, 7, 6, 105, 0, 1, 99, 2, 117, 17, 67, 3, 0, 110, 103, 1, 10, 2, 32, 3, 2, 37, 68, 81, 0, 4,
-			101, 105, 1, 108, 105, 102, 2, 32, 3, 6, 36, 37, 0, 101, 105, 1, 109, 111, 110, 2, 32, 0, 4, 1, 10, 26, 2, 24, 32, 3,
-			6, 37, 0, 1, 114, 99, 115, 2, 101, 0, 2, 116, 32, 0, 4, 97, 1, 17, 67, 131, 196, 2, 32, 3, 6, 37, 35, 0, 97, 1,
-			17, 67, 162, 195, 2, 32, 0, 97, 1, 102, 97, 114, 103, 2, 32, 0, 97, 1, 108, 105, 102, 2, 32, 0, 97, 1, 109, 111, 110, 2,
-			32, 0, 97, 1, 110, 111, 2, 32, 0, 97, 1, 112, 111, 99, 115, 2, 32, 0, 97, 1, 114, 101, 2, 32, 0, 97, 1, 159, 197, 117,
-			2, 32, 0, 4, 101, 1, 17, 67, 131, 196, 2, 32, 3, 6, 37, 36, 0, 101, 1, 17, 67, 162, 195, 2, 32, 0, 101, 1, 102, 97,
-			114, 103, 2, 32, 0, 101, 1, 108, 105, 102, 2, 32, 0, 101, 1, 109, 111, 110, 2, 32, 0, 101, 1, 110, 111, 2, 32, 0, 101, 1,
-			112, 111, 99, 115, 2, 32, 0, 101, 1, 159, 197, 117, 2, 32, 0, 4, 101, 105, 1, 102, 97, 114, 103, 2, 32, 3, 6, 37, 118, 0,
-			101, 105, 1, 110, 111, 2, 32, 0, 101, 105, 1, 114, 101, 2, 32, 0, 101, 105, 1, 159, 197, 117, 2, 32, 0, 101, 105, 2, 32, 0,
-			4, 105, 1, 102, 97, 114, 103, 2, 32, 3, 6, 132, 0, 105, 1, 112, 111, 99, 115, 2, 32, 0, 4, 1, 21, 2, 197, 163, 101, 32,
-			3, 8, 37, 0, 1, 21, 2, 197, 163, 101, 105, 32, 0, 1, 21, 2, 197, 163, 101, 108, 101, 32, 0, 1, 21, 2, 197, 163, 101, 108,
-			111, 114, 32, 0, 1, 21, 2, 197, 163, 196, 131, 32, 12, 12, 12, 12, 12, 12, 12, 12, 0, 1, 103, 2, 110, 101, 32, 0, 1, 103,
-			2, 110, 101, 97, 32, 0, 101, 1, 163, 197, 99, 2, 32, 3, 8, 37, 36, 0, 99, 1, 10, 2, 32, 3, 8, 37, 49, 0, 99, 97,
-			1, 10, 2, 32, 3, 8, 37, 49, 35, 0, 99, 101, 1, 10, 2, 32, 3, 8, 37, 76, 36, 0, 99, 105, 108, 101, 1, 10, 2, 32,
-			3, 8, 37, 76, 37, 55, 36, 0, 99, 105, 108, 111, 114, 1, 10, 2, 32, 3, 8, 37, 76, 37, 55, 39, 34, 0, 99, 101, 105, 1,
-			21, 2, 32, 3, 8, 37, 76, 118, 0, 99, 105, 105, 1, 21, 2, 32, 3, 8, 37, 76, 132, 0, 197, 159, 116, 101, 1, 21, 2, 32,
-			3, 8, 37, 91, 47, 36, 0, 197, 159, 116, 101, 97, 1, 21, 2, 32, 3, 8, 37, 91, 47, 135, 0, 101, 105, 1, 163, 197, 99, 2,
-			32, 3, 8, 37, 118, 0, 97, 1, 163, 197, 99, 2, 32, 3, 8, 57, 35, 0, 1, 45, 105, 163, 197, 2, 32, 3, 10, 0, 4, 3,
-			37, 0, 1, 10, 2, 32, 24, 14, 128, 192, 129, 0, 1, 10, 2, 45, 24, 14, 128, 192, 129, 0, 1, 39, 10, 2, 32, 0, 1, 114,
+			32, 6, 195, 152, 210, 64, 72, 0, 6, 195, 90, 198, 149, 66, 7, 196, 60, 97, 82, 36, 67, 0, 10, 199, 64, 20, 148, 20, 225, 82,
+			36, 67, 8, 197, 64, 17, 213, 8, 80, 65, 8, 197, 61, 33, 9, 56, 80, 65, 14, 69, 37, 2, 15, 56, 80, 35, 37, 83, 6, 130,
+			50, 0, 8, 197, 24, 84, 137, 12, 80, 65, 16, 69, 13, 34, 83, 80, 144, 49, 14, 16, 6, 37, 89, 47, 37, 0, 8, 197, 72, 148,
+			201, 64, 144, 67, 8, 197, 32, 242, 15, 80, 144, 67, 0, 9, 198, 88, 149, 18, 20, 114, 64, 65, 9, 198, 64, 20, 143, 16, 146, 64,
+			67, 9, 198, 48, 16, 210, 36, 210, 64, 65, 9, 198, 76, 51, 212, 60, 50, 64, 67, 0, 21, 65, 8, 98, 117, 108, 101, 118, 97, 114,
+			100, 117, 108, 0, 44, 29, 81, 100, 117, 108, 32, 6, 65, 8, 71, 36, 0, 0, 5, 194, 54, 192, 72, 0, 8, 197, 88, 244, 19, 20,
+			16, 66, 8, 197, 77, 5, 78, 20, 208, 65, 8, 197, 64, 20, 134, 84, 208, 66, 7, 196, 5, 43, 20, 4, 67, 15, 67, 21, 64, 192,
+			101, 116, 99, 101, 116, 101, 114, 97, 0, 29, 0, 9, 198, 53, 84, 141, 85, 43, 0, 65, 0, 19, 70, 24, 20, 141, 4, 50, 69, 83,
+			35, 14, 16, 65, 35, 76, 6, 37, 36, 0, 8, 197, 5, 4, 143, 64, 240, 67, 9, 198, 4, 209, 82, 36, 50, 73, 66, 12, 65, 12,
+			49, 35, 34, 0, 72, 81, 97, 114, 32, 10, 65, 12, 49, 39, 0, 72, 81, 111, 32, 14, 3, 99, 102, 46, 99, 111, 110, 102, 111, 114,
+			109, 0, 29, 6, 65, 12, 76, 36, 0, 0, 0, 8, 197, 84, 50, 68, 20, 208, 66, 11, 136, 109, 105, 197, 159, 117, 110, 196, 131, 65,
+			8, 197, 32, 18, 68, 20, 208, 65, 8, 197, 12, 147, 133, 52, 16, 65, 8, 197, 16, 244, 141, 20, 16, 66, 0, 7, 196, 36, 148, 213,
+			76, 66, 11, 135, 116, 111, 116, 117, 197, 159, 105, 65, 28, 0, 6, 65, 16, 72, 36, 0, 0, 10, 199, 77, 84, 5, 73, 98, 90, 4,
+			68, 0, 8, 197, 64, 21, 9, 52, 144, 65, 10, 199, 152, 229, 29, 53, 2, 78, 176, 66, 9, 198, 152, 224, 207, 81, 35, 192, 67, 0,
+			9, 198, 80, 84, 141, 20, 226, 64, 65, 7, 196, 25, 83, 69, 28, 65, 6, 195, 24, 244, 212, 76, 16, 4, 95, 100, 112, 116, 10, 84,
+			6, 37, 34, 81, 40, 55, 13, 0, 0, 6, 65, 20, 36, 0, 49, 7, 65, 20, 57, 36, 0, 72, 0, 0, 15, 68, 14, 197, 18, 20,
+			49, 6, 13, 47, 14, 16, 36, 0, 28, 0, 0, 6, 65, 24, 83, 36, 0, 0, 9, 198, 77, 84, 246, 36, 225, 77, 66, 10, 199, 12,
+			20, 129, 13, 65, 82, 20, 67, 0, 7, 196, 53, 81, 213, 72, 65, 0, 17, 70, 30, 193, 236, 87, 107, 0, 81, 13, 81, 13, 6, 40,
+			123, 13, 0, 9, 198, 12, 203, 14, 218, 195, 133, 65, 16, 7, 99, 101, 97, 117, 197, 159, 117, 76, 135, 6, 40, 91, 40, 0, 11, 200,
+			54, 196, 148, 85, 34, 83, 20, 16, 68, 0, 6, 195, 76, 80, 213, 66, 9, 198, 56, 144, 201, 84, 226, 73, 77, 6, 65, 28, 75, 36,
+			0, 0, 10, 199, 12, 21, 1, 16, 144, 211, 36, 68, 0, 7, 196, 33, 83, 143, 72, 65, 8, 197, 72, 86, 133, 52, 16, 67, 0, 13,
+			68, 77, 84, 21, 76, 89, 40, 48, 6, 40, 89, 0, 0, 7, 65, 32, 107, 35, 91, 0, 0, 0, 8, 197, 88, 81, 5, 72, 80, 66,
+			0, 10, 1, 35, 72, 57, 6, 36, 88, 0, 27, 0, 12, 201, 64, 20, 148, 20, 225, 82, 84, 197, 73, 67, 11, 65, 36, 57, 117, 0,
+			72, 81, 97, 105, 32, 12, 65, 36, 57, 35, 65, 0, 72, 81, 97, 109, 32, 13, 65, 36, 37, 35, 91, 0, 72, 81, 97, 197, 159, 32,
+			12, 65, 36, 57, 35, 34, 0, 72, 81, 97, 114, 32, 0, 12, 68, 104, 243, 66, 36, 88, 39, 65, 71, 37, 0, 10, 199, 12, 19, 132,
+			36, 64, 84, 84, 68, 10, 199, 5, 34, 9, 80, 80, 212, 84, 68, 7, 196, 12, 195, 195, 36, 66, 0, 10, 67, 4, 84, 128, 6, 117,
+			36, 34, 0, 6, 195, 48, 244, 128, 76, 13, 1, 38, 35, 65, 48, 36, 34, 89, 35, 50, 72, 0, 0, 0, 6, 65, 40, 90, 36, 0,
+			0, 0, 13, 1, 42, 35, 89, 47, 36, 16, 37, 89, 49, 0, 27, 0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 6, 195, 50, 196,
+			236, 66, 6, 65, 44, 49, 35, 0, 0, 13, 68, 88, 243, 21, 52, 84, 39, 55, 6, 40, 65, 0, 0, 7, 196, 76, 145, 213, 72, 65,
+			8, 197, 66, 197, 21, 74, 192, 65, 8, 197, 66, 196, 212, 74, 192, 66, 10, 1, 46, 48, 40, 50, 49, 47, 0, 27, 0, 8, 1, 47,
+			89, 55, 36, 91, 0, 0, 10, 199, 13, 85, 18, 20, 213, 82, 176, 66, 13, 65, 48, 55, 35, 91, 0, 72, 81, 97, 197, 159, 32, 12,
+			65, 48, 55, 35, 34, 0, 72, 81, 97, 114, 32, 12, 65, 48, 55, 39, 34, 0, 72, 81, 111, 114, 32, 11, 65, 48, 55, 117, 0, 72,
+			81, 97, 105, 32, 15, 65, 48, 55, 35, 141, 124, 0, 72, 81, 97, 197, 163, 105, 32, 12, 65, 48, 55, 35, 65, 0, 72, 81, 97, 109,
+			32, 11, 65, 48, 55, 114, 0, 72, 81, 97, 117, 32, 10, 65, 48, 55, 35, 0, 72, 81, 97, 32, 9, 198, 77, 84, 208, 20, 53, 1,
+			67, 9, 198, 65, 35, 212, 21, 53, 1, 67, 11, 136, 108, 105, 110, 103, 117, 197, 159, 105, 67, 14, 4, 95, 100, 105, 97, 47, 14, 16,
+			6, 36, 65, 13, 0, 0, 21, 71, 65, 34, 69, 80, 83, 137, 20, 48, 14, 16, 57, 36, 47, 36, 50, 6, 37, 36, 0, 10, 199, 64,
+			84, 147, 21, 97, 82, 4, 68, 0, 8, 197, 216, 83, 9, 58, 192, 65, 22, 10, 99, 101, 97, 117, 197, 159, 101, 115, 99, 117, 76, 135,
+			40, 91, 6, 36, 89, 49, 40, 0, 11, 67, 4, 69, 83, 35, 72, 6, 40, 89, 0, 0, 0, 12, 65, 52, 65, 35, 91, 0, 72, 81,
+			97, 83, 32, 12, 65, 52, 65, 35, 34, 0, 72, 81, 97, 114, 32, 12, 65, 52, 65, 39, 34, 0, 72, 81, 111, 114, 32, 0, 0, 8,
+			197, 81, 212, 131, 60, 192, 66, 10, 199, 77, 68, 172, 49, 80, 197, 4, 67, 0, 10, 135, 197, 159, 111, 102, 101, 114, 105, 66, 9, 198,
+			36, 229, 18, 36, 123, 0, 65, 17, 7, 110, 111, 197, 159, 116, 114, 105, 50, 39, 91, 47, 16, 37, 0, 77, 0, 9, 198, 104, 20, 154,
+			177, 34, 64, 65, 9, 198, 52, 85, 1, 24, 244, 133, 66, 12, 65, 56, 50, 39, 34, 0, 72, 81, 111, 114, 32, 12, 65, 56, 50, 39,
+			34, 0, 72, 81, 111, 114, 32, 10, 65, 56, 50, 35, 0, 72, 81, 97, 32, 13, 65, 56, 50, 35, 91, 0, 72, 81, 97, 197, 159, 32,
+			10, 65, 56, 50, 39, 0, 72, 81, 111, 32, 9, 198, 4, 48, 197, 57, 69, 65, 67, 0, 12, 137, 195, 174, 109, 112, 117, 197, 159, 99,
+			97, 67, 10, 199, 16, 84, 195, 61, 1, 82, 36, 68, 0, 0, 0, 9, 198, 8, 16, 212, 21, 34, 73, 66, 9, 198, 65, 35, 211, 64,
+			84, 129, 67, 4, 193, 60, 72, 4, 193, 60, 72, 0, 10, 1, 61, 36, 81, 6, 35, 55, 0, 27, 0, 8, 197, 21, 53, 9, 52, 16,
+			67, 8, 197, 16, 148, 212, 72, 16, 66, 0, 9, 198, 21, 132, 12, 36, 59, 0, 66, 0, 7, 196, 89, 82, 69, 80, 65, 12, 201, 77,
+			68, 172, 25, 83, 7, 21, 32, 64, 68, 10, 1, 64, 35, 16, 6, 39, 50, 72, 0, 6, 65, 64, 48, 36, 0, 0, 7, 196, 24, 16,
+			212, 84, 66, 0, 11, 200, 64, 20, 148, 20, 225, 82, 36, 144, 67, 8, 197, 4, 210, 67, 36, 144, 66, 0, 9, 198, 88, 148, 135, 84,
+			203, 0, 65, 9, 198, 28, 19, 2, 20, 226, 64, 65, 0, 7, 196, 56, 85, 5, 16, 65, 7, 65, 68, 49, 57, 40, 0, 0, 10, 199,
+			12, 83, 5, 48, 19, 20, 20, 79, 0, 6, 195, 84, 224, 64, 77, 0, 12, 65, 116, 4, 112, 72, 37, 50, 6, 35, 0, 49, 0, 9,
+			198, 72, 84, 1, 74, 195, 64, 67, 6, 65, 72, 34, 36, 0, 0, 6, 195, 78, 196, 1, 66, 7, 196, 64, 193, 67, 4, 66, 7, 196,
+			48, 19, 147, 4, 66, 7, 196, 16, 19, 147, 4, 66, 6, 194, 5, 32, 76, 32, 0, 10, 67, 88, 145, 87, 84, 6, 57, 40, 0, 23,
+			11, 116, 114, 105, 39, 117, 110, 103, 104, 105, 117, 108, 47, 16, 37, 40, 50, 81, 57, 40, 55, 0, 10, 199, 76, 59, 4, 21, 34, 76,
+			20, 66, 0, 11, 200, 36, 228, 212, 73, 80, 212, 61, 32, 66, 9, 198, 16, 81, 21, 12, 83, 64, 66, 9, 198, 4, 165, 78, 28, 83,
+			64, 66, 12, 4, 95, 100, 111, 116, 48, 40, 50, 49, 47, 0, 0, 10, 65, 76, 89, 39, 0, 72, 81, 111, 32, 12, 65, 76, 89, 39,
+			34, 0, 72, 81, 111, 114, 32, 12, 65, 76, 89, 35, 34, 0, 72, 81, 97, 114, 32, 0, 14, 69, 77, 0, 118, 37, 80, 89, 48, 35,
+			123, 57, 40, 0, 18, 70, 77, 0, 78, 36, 243, 5, 89, 48, 35, 50, 37, 6, 39, 55, 36, 0, 7, 196, 77, 67, 195, 4, 66, 0,
+			0, 0, 6, 195, 10, 193, 236, 66, 6, 65, 80, 47, 36, 0, 0, 0, 0, 10, 135, 99, 101, 114, 197, 159, 101, 97, 66, 0, 0, 12,
+			67, 85, 0, 192, 40, 48, 36, 76, 6, 36, 0, 9, 198, 77, 68, 137, 30, 197, 0, 65, 10, 135, 100, 114, 97, 103, 111, 197, 159, 65,
+			10, 199, 72, 244, 212, 60, 115, 204, 36, 68, 0, 0, 14, 139, 115, 99, 114, 195, 162, 197, 159, 110, 101, 116, 101, 65, 0, 9, 198, 104,
+			68, 133, 48, 149, 21, 67, 9, 198, 72, 93, 137, 56, 83, 64, 66, 11, 200, 12, 129, 76, 176, 203, 9, 81, 80, 69, 13, 65, 88, 84,
+			35, 91, 0, 72, 81, 97, 197, 159, 32, 12, 65, 88, 84, 35, 34, 0, 72, 81, 97, 114, 32, 7, 193, 88, 72, 81, 111, 32, 12, 65,
+			88, 84, 35, 65, 0, 72, 81, 97, 109, 32, 11, 65, 88, 84, 114, 0, 72, 81, 97, 117, 32, 15, 65, 88, 84, 35, 141, 124, 0, 72,
+			81, 97, 197, 163, 105, 32, 6, 65, 88, 84, 36, 0, 0, 6, 194, 5, 48, 76, 32, 0, 9, 198, 152, 225, 18, 177, 163, 137, 67, 0,
+			17, 4, 95, 49, 77, 52, 6, 40, 50, 71, 37, 55, 6, 57, 39, 50, 0, 0, 11, 200, 76, 59, 4, 21, 34, 76, 61, 32, 66, 18,
+			4, 95, 49, 77, 53, 6, 40, 50, 71, 37, 55, 6, 57, 35, 34, 72, 0, 12, 65, 92, 72, 40, 71, 55, 40, 6, 84, 36, 0, 0,
+			9, 198, 74, 196, 212, 85, 35, 129, 67, 0, 0, 9, 198, 152, 229, 18, 20, 43, 0, 67, 0, 7, 196, 53, 81, 197, 80, 65, 9, 198,
+			4, 197, 3, 84, 149, 129, 67, 9, 198, 65, 33, 90, 20, 229, 1, 67, 13, 4, 95, 49, 77, 49, 4, 39, 65, 6, 37, 36, 0, 7,
+			65, 96, 37, 49, 89, 0, 0, 17, 4, 95, 49, 77, 50, 6, 40, 50, 65, 37, 55, 6, 57, 39, 50, 0, 0, 8, 197, 25, 34, 80,
+			81, 80, 66, 18, 4, 95, 49, 77, 51, 6, 40, 50, 65, 37, 55, 6, 57, 35, 34, 72, 0, 0, 9, 198, 52, 241, 9, 24, 144, 236,
+			66, 0, 6, 195, 57, 83, 73, 66, 10, 65, 100, 6, 37, 81, 34, 36, 49, 0, 0, 8, 197, 25, 32, 71, 20, 64, 65, 7, 196, 4,
+			114, 84, 4, 67, 0, 6, 195, 5, 84, 128, 65, 0, 9, 198, 36, 229, 18, 36, 112, 64, 65, 9, 198, 8, 19, 1, 57, 48, 64, 67,
+			0, 7, 196, 72, 81, 213, 48, 65, 7, 196, 52, 144, 213, 48, 65, 7, 65, 104, 88, 36, 47, 0, 0, 8, 197, 72, 243, 129, 48, 64,
+			65, 6, 195, 54, 196, 213, 66, 8, 197, 28, 84, 129, 48, 64, 65, 7, 196, 80, 84, 212, 4, 66, 6, 195, 30, 196, 201, 66, 0, 10,
+			199, 77, 68, 133, 13, 84, 172, 52, 67, 10, 199, 12, 243, 1, 8, 244, 172, 52, 68, 0, 12, 137, 197, 163, 97, 110, 197, 163, 111, 197,
+			159, 65, 7, 196, 76, 17, 9, 12, 65, 9, 198, 72, 86, 137, 77, 64, 64, 67, 9, 198, 25, 83, 7, 21, 32, 64, 67, 9, 198, 25,
+			84, 142, 37, 160, 64, 67, 9, 198, 24, 197, 73, 21, 32, 64, 67, 9, 198, 21, 132, 12, 61, 32, 64, 67, 9, 198, 21, 128, 71, 21,
+			32, 64, 68, 9, 198, 20, 229, 77, 21, 32, 64, 68, 9, 198, 12, 243, 69, 57, 64, 64, 67, 0, 0, 9, 198, 104, 68, 129, 90, 195,
+			128, 65, 8, 197, 64, 148, 201, 14, 192, 66, 0, 0, 8, 197, 89, 212, 204, 20, 16, 66, 8, 197, 64, 203, 3, 20, 16, 66, 8, 197,
+			29, 211, 132, 20, 16, 66, 0, 7, 196, 53, 211, 133, 12, 65, 9, 198, 5, 68, 137, 9, 82, 65, 68, 9, 198, 4, 49, 83, 81, 82,
+			65, 78, 0, 5, 194, 12, 16, 72, 0, 8, 197, 53, 211, 133, 14, 192, 65, 9, 198, 14, 196, 172, 73, 82, 69, 68, 11, 200, 16, 84,
+			208, 72, 147, 132, 20, 16, 67, 0, 14, 139, 195, 174, 110, 102, 196, 131, 197, 159, 117, 114, 97, 68, 0, 9, 198, 64, 199, 78, 28, 80,
+			64, 66, 9, 198, 152, 225, 137, 28, 80, 64, 67, 9, 198, 16, 93, 137, 56, 80, 64, 67, 16, 70, 56, 245, 108, 48, 80, 64, 50, 6,
+			39, 40, 13, 55, 135, 0, 15, 69, 5, 71, 118, 36, 16, 35, 47, 6, 112, 123, 57, 35, 0, 0, 7, 196, 13, 33, 90, 84, 66, 9,
+			198, 74, 196, 195, 60, 193, 65, 67, 0, 8, 197, 5, 97, 78, 81, 80, 67, 9, 134, 97, 108, 101, 197, 159, 105, 66, 0, 12, 137, 116,
+			111, 118, 97, 114, 196, 131, 197, 159, 66, 8, 197, 152, 225, 15, 36, 16, 67, 0, 11, 67, 48, 147, 9, 55, 6, 37, 55, 37, 0, 9,
+			198, 14, 193, 5, 72, 146, 64, 66, 9, 198, 12, 83, 44, 48, 19, 20, 79, 0, 7, 196, 29, 32, 86, 84, 66, 12, 137, 112, 114, 196,
+			131, 98, 117, 197, 159, 105, 67, 5, 194, 5, 80, 76, 0, 10, 199, 72, 80, 213, 64, 84, 172, 52, 68, 10, 199, 152, 229, 15, 5, 32,
+			197, 52, 66, 0, 9, 198, 20, 194, 66, 21, 43, 0, 68, 0, 23, 73, 152, 229, 15, 80, 65, 65, 84, 224, 64, 112, 50, 47, 39, 47,
+			72, 135, 6, 40, 50, 35, 0, 15, 140, 195, 174, 109, 112, 114, 196, 131, 197, 159, 116, 105, 97, 67, 6, 195, 85, 38, 137, 66, 6, 195,
+			61, 4, 137, 66, 0, 7, 196, 61, 5, 9, 52, 65, 0, 7, 196, 16, 93, 137, 36, 66, 0, 7, 196, 218, 196, 137, 36, 65, 13, 4,
+			95, 116, 108, 100, 47, 6, 37, 55, 72, 13, 0, 0, 15, 69, 16, 148, 208, 85, 48, 72, 37, 89, 48, 6, 40, 89, 0, 9, 198, 4,
+			194, 77, 20, 229, 1, 68, 0, 0, 0, 0, 11, 136, 197, 159, 116, 101, 114, 103, 101, 109, 65, 0, 0, 0, 7, 195, 16, 16, 236, 72,
+			8, 0, 7, 196, 77, 67, 195, 176, 66, 11, 68, 12, 21, 84, 176, 49, 114, 47, 13, 0, 0, 9, 198, 16, 81, 21, 12, 93, 137, 66,
+			0, 7, 196, 74, 192, 132, 4, 66, 9, 134, 110, 105, 197, 159, 116, 101, 73, 0, 9, 198, 64, 19, 148, 21, 32, 64, 66, 9, 198, 52,
+			244, 195, 61, 96, 64, 65, 9, 198, 4, 197, 3, 21, 96, 64, 67, 9, 198, 76, 53, 84, 85, 32, 64, 67, 9, 198, 72, 80, 76, 37,
+			160, 64, 68, 9, 198, 65, 35, 205, 61, 96, 64, 67, 9, 198, 16, 148, 195, 85, 64, 64, 67, 9, 198, 12, 243, 131, 85, 32, 64, 67,
+			9, 198, 12, 243, 5, 13, 64, 64, 67, 9, 198, 12, 84, 131, 21, 64, 64, 67, 0, 7, 196, 36, 226, 77, 176, 65, 6, 195, 85, 32,
+			193, 66, 9, 198, 152, 225, 149, 56, 64, 64, 67, 0, 10, 199, 77, 64, 78, 16, 20, 132, 20, 65, 0, 0, 9, 198, 89, 211, 22, 177,
+			75, 9, 67, 8, 197, 81, 43, 7, 20, 16, 66, 8, 197, 4, 213, 118, 20, 16, 67, 0, 6, 195, 41, 80, 193, 66, 0, 0, 9, 198,
+			66, 196, 212, 74, 197, 128, 65, 11, 200, 36, 229, 5, 73, 162, 67, 20, 16, 68, 20, 71, 24, 145, 75, 177, 37, 73, 4, 83, 57, 36,
+			80, 6, 13, 34, 121, 35, 0, 76, 7, 195, 61, 34, 64, 72, 8, 0, 10, 199, 24, 203, 3, 177, 37, 73, 20, 67, 0, 9, 134, 109,
+			105, 197, 159, 116, 111, 66, 0, 0, 6, 195, 37, 98, 64, 66, 0, 11, 67, 77, 82, 84, 89, 40, 6, 37, 47, 0, 13, 68, 76, 81,
+			21, 76, 89, 36, 72, 6, 40, 89, 0, 8, 197, 74, 196, 213, 12, 144, 67, 0, 15, 70, 88, 245, 67, 32, 84, 128, 84, 6, 114, 76,
+			13, 34, 0, 9, 198, 52, 85, 1, 24, 244, 128, 66, 20, 72, 8, 194, 84, 104, 180, 137, 20, 112, 71, 55, 6, 37, 123, 49, 34, 37,
+			81, 0, 0, 9, 198, 64, 130, 76, 37, 4, 192, 65, 0, 17, 70, 26, 193, 236, 17, 85, 73, 83, 13, 81, 13, 72, 40, 6, 37, 0,
+			5, 194, 152, 192, 72, 0, 0, 0, 13, 68, 84, 212, 12, 36, 6, 40, 65, 48, 55, 37, 0, 0, 0, 0, 9, 198, 56, 84, 133, 29,
+			83, 9, 66, 18, 70, 28, 147, 78, 5, 162, 85, 75, 37, 65, 50, 6, 35, 88, 57, 40, 0, 0, 11, 136, 197, 159, 109, 101, 99, 104,
+			101, 114, 65, 9, 198, 152, 229, 157, 73, 66, 64, 67, 0, 7, 196, 65, 211, 132, 36, 66, 7, 196, 29, 211, 132, 36, 66, 0, 7, 196,
+			80, 19, 135, 60, 66, 0, 0, 9, 198, 64, 199, 78, 28, 84, 128, 65, 7, 196, 77, 80, 197, 4, 66, 7, 196, 49, 80, 197, 4, 66,
+			7, 196, 17, 80, 197, 4, 66, 0, 11, 200, 12, 243, 148, 72, 22, 137, 12, 80, 67, 0, 9, 198, 36, 81, 148, 36, 225, 64, 65, 9,
+			198, 25, 83, 7, 21, 33, 64, 65, 9, 198, 24, 197, 73, 21, 33, 64, 65, 9, 198, 13, 33, 68, 37, 65, 64, 65, 9, 198, 12, 195,
+			195, 61, 65, 64, 65, 16, 70, 8, 19, 142, 21, 33, 64, 71, 6, 36, 50, 13, 16, 36, 0, 6, 195, 17, 84, 44, 28, 0, 9, 198,
+			65, 34, 67, 21, 1, 77, 66, 7, 196, 64, 193, 67, 176, 66, 21, 71, 52, 144, 210, 61, 51, 198, 80, 65, 6, 117, 80, 14, 16, 39,
+			89, 39, 83, 47, 0, 8, 196, 4, 66, 67, 176, 66, 28, 0, 0, 11, 200, 65, 35, 198, 21, 51, 210, 36, 144, 66, 9, 198, 152, 224,
+			197, 64, 93, 137, 66, 8, 197, 12, 149, 137, 48, 80, 66, 0, 0, 11, 67, 53, 82, 65, 65, 6, 40, 57, 35, 0, 0, 0, 8, 197,
+			88, 150, 129, 88, 144, 67, 8, 197, 29, 209, 9, 50, 192, 65, 6, 195, 5, 101, 64, 66, 7, 196, 53, 211, 138, 36, 66, 0, 9, 198,
+			65, 33, 79, 13, 84, 44, 68, 8, 197, 152, 229, 133, 48, 144, 67, 9, 198, 4, 115, 206, 37, 50, 64, 68, 0, 6, 195, 84, 225, 5,
+			28, 0, 8, 197, 16, 144, 86, 60, 192, 65, 9, 198, 14, 195, 3, 116, 145, 64, 66, 6, 194, 4, 144, 76, 32, 5, 194, 12, 80, 76,
+			6, 194, 4, 144, 72, 28, 8, 66, 20, 16, 57, 35, 0, 76, 0, 0, 13, 138, 197, 159, 111, 102, 101, 114, 105, 108, 111, 114, 66, 8,
+			197, 36, 81, 148, 36, 224, 65, 0, 8, 197, 14, 196, 236, 64, 144, 67, 6, 195, 12, 83, 0, 76, 0, 9, 198, 76, 107, 18, 116, 208,
+			64, 67, 15, 4, 95, 109, 99, 110, 65, 35, 49, 14, 16, 6, 39, 50, 0, 0, 10, 199, 36, 228, 208, 20, 53, 15, 72, 66, 10, 199,
+			12, 243, 132, 84, 53, 15, 72, 66, 0, 9, 198, 36, 224, 213, 49, 69, 64, 67, 15, 69, 74, 196, 198, 60, 144, 34, 13, 89, 83, 39,
+			6, 37, 0, 8, 197, 66, 196, 212, 72, 16, 66, 9, 198, 88, 240, 83, 81, 43, 0, 76, 9, 198, 56, 240, 83, 81, 43, 0, 77, 8,
+			197, 152, 228, 213, 52, 144, 77, 9, 198, 88, 240, 83, 81, 43, 0, 77, 0, 11, 136, 197, 159, 111, 97, 114, 101, 99, 105, 65, 16, 70,
+			76, 48, 78, 56, 84, 128, 89, 49, 6, 36, 50, 13, 34, 0, 9, 198, 32, 19, 83, 80, 84, 128, 65, 18, 70, 21, 35, 201, 48, 244,
+			128, 36, 34, 34, 6, 39, 37, 55, 39, 34, 0, 9, 198, 12, 129, 76, 56, 84, 128, 65, 0, 9, 198, 76, 51, 193, 80, 93, 137, 65,
+			10, 199, 16, 86, 143, 72, 66, 78, 20, 66, 10, 199, 81, 32, 78, 76, 97, 82, 4, 68, 10, 199, 36, 229, 5, 72, 97, 82, 4, 68,
+			5, 194, 13, 80, 72, 0, 9, 198, 72, 93, 137, 56, 93, 137, 66, 10, 199, 65, 35, 205, 37, 65, 118, 36, 66, 10, 199, 64, 84, 141,
+			37, 65, 118, 36, 66, 8, 197, 13, 34, 86, 179, 96, 65, 0, 8, 197, 76, 147, 135, 85, 32, 65, 8, 197, 12, 19, 131, 21, 32, 65,
+			0, 0, 17, 70, 56, 84, 213, 65, 84, 192, 50, 36, 89, 40, 48, 6, 40, 89, 0, 7, 196, 65, 34, 77, 36, 66, 0, 10, 199, 65,
+			35, 193, 77, 1, 118, 36, 65, 0, 8, 197, 77, 71, 82, 56, 144, 67, 0, 9, 198, 76, 80, 213, 72, 144, 197, 67, 9, 198, 12, 243,
+			80, 48, 144, 197, 66, 0, 9, 198, 14, 195, 44, 85, 162, 64, 68, 0, 0, 8, 197, 12, 192, 84, 36, 224, 65, 0, 11, 136, 197, 159,
+			111, 97, 114, 101, 99, 101, 65, 9, 198, 52, 241, 9, 24, 144, 193, 68, 9, 198, 16, 84, 195, 85, 32, 193, 67, 9, 198, 12, 243, 85,
+			56, 144, 193, 68, 0, 9, 198, 24, 203, 3, 177, 34, 64, 65, 7, 196, 20, 194, 67, 20, 66, 7, 196, 104, 144, 197, 4, 66, 7, 196,
+			37, 80, 133, 4, 66, 7, 196, 17, 84, 133, 4, 66, 7, 196, 16, 244, 133, 4, 66, 7, 196, 12, 84, 133, 4, 66, 14, 68, 4, 116,
+			133, 4, 35, 81, 14, 16, 36, 6, 35, 0, 7, 196, 12, 84, 133, 4, 66, 0, 0, 9, 198, 77, 2, 82, 37, 65, 64, 65, 9, 198,
+			76, 147, 135, 85, 33, 64, 65, 9, 198, 76, 53, 84, 85, 43, 0, 65, 9, 198, 60, 20, 208, 21, 65, 64, 65, 9, 198, 88, 240, 83,
+			81, 33, 64, 76, 9, 198, 56, 240, 83, 81, 33, 64, 77, 9, 198, 4, 229, 77, 37, 65, 64, 75, 0, 9, 198, 66, 196, 133, 72, 146,
+			64, 66, 0, 12, 137, 99, 111, 110, 102, 105, 197, 159, 116, 101, 66, 7, 196, 12, 129, 77, 4, 66, 7, 196, 5, 86, 133, 4, 66, 0,
+			0, 8, 197, 49, 80, 210, 176, 208, 66, 0, 9, 198, 64, 85, 18, 20, 49, 77, 66, 8, 197, 14, 196, 44, 80, 16, 67, 0, 9, 198,
+			152, 208, 157, 13, 50, 64, 67, 0, 7, 196, 73, 209, 142, 36, 66, 7, 196, 14, 198, 142, 36, 66, 0, 8, 197, 104, 119, 82, 36, 16,
+			67, 8, 197, 14, 196, 149, 36, 16, 73, 0, 11, 67, 53, 82, 69, 65, 6, 40, 57, 36, 0, 12, 67, 13, 33, 65, 49, 14, 16, 36,
+			6, 35, 0, 6, 195, 12, 81, 1, 66, 6, 195, 5, 97, 65, 78, 0, 8, 197, 13, 211, 148, 20, 48, 65, 11, 66, 16, 80, 72, 135,
+			0, 72, 81, 97, 32, 25, 66, 16, 80, 72, 2, 36, 15, 35, 47, 6, 40, 50, 76, 124, 0, 8, 81, 97, 116, 117, 110, 99, 105, 32,
+			14, 66, 16, 80, 72, 36, 55, 35, 0, 72, 81, 108, 97, 32, 5, 194, 16, 80, 72, 0, 10, 199, 17, 84, 133, 72, 147, 15, 72, 66,
+			7, 195, 88, 82, 64, 76, 32, 0, 0, 9, 198, 72, 243, 102, 56, 144, 64, 67, 7, 196, 32, 242, 15, 80, 65, 12, 67, 21, 32, 77,
+			57, 36, 16, 35, 65, 0, 78, 0, 0, 0, 9, 198, 80, 20, 212, 5, 69, 64, 67, 10, 199, 52, 85, 1, 24, 244, 137, 12, 67, 8,
+			197, 24, 197, 73, 21, 32, 65, 9, 198, 9, 80, 149, 37, 69, 64, 68, 9, 198, 4, 101, 77, 5, 69, 64, 68, 0, 0, 0, 10, 199,
+			33, 84, 132, 84, 59, 20, 84, 68, 10, 199, 4, 197, 78, 20, 59, 20, 84, 68, 11, 200, 77, 1, 67, 36, 19, 9, 104, 16, 68, 11,
+			200, 12, 243, 131, 72, 85, 9, 104, 16, 68, 0, 8, 197, 76, 147, 131, 21, 32, 65, 9, 198, 18, 196, 157, 54, 197, 21, 68, 16, 69,
+			9, 35, 203, 21, 32, 71, 14, 16, 6, 39, 49, 13, 34, 0, 0, 0, 7, 196, 24, 83, 69, 36, 66, 0, 7, 196, 73, 211, 138, 36,
+			66, 0, 0, 0, 6, 194, 4, 192, 72, 28, 0, 0, 10, 135, 97, 99, 101, 197, 159, 116, 105, 72, 10, 3, 95, 35, 57, 47, 6, 35,
+			71, 0, 0, 6, 195, 88, 83, 137, 66, 0, 6, 195, 85, 43, 13, 66, 7, 196, 84, 209, 68, 20, 65, 7, 196, 76, 83, 78, 4, 66,
+			0, 14, 67, 72, 68, 192, 6, 36, 34, 72, 36, 6, 36, 89, 0, 8, 197, 29, 83, 5, 72, 80, 65, 8, 197, 12, 147, 133, 88, 16,
+			67, 8, 197, 12, 20, 133, 88, 16, 67, 8, 197, 88, 83, 133, 72, 16, 67, 8, 197, 81, 33, 90, 20, 16, 66, 8, 197, 65, 34, 86,
+			20, 16, 66, 8, 197, 4, 193, 82, 28, 16, 67, 9, 134, 114, 101, 117, 197, 159, 105, 67, 0, 8, 197, 30, 195, 2, 84, 144, 66, 0,
+			8, 197, 52, 146, 140, 60, 48, 65, 0, 0, 10, 199, 65, 33, 70, 4, 49, 118, 36, 66, 8, 197, 52, 243, 9, 52, 80, 65, 10, 199,
+			12, 243, 132, 84, 49, 118, 36, 66, 8, 197, 4, 100, 137, 12, 16, 65, 7, 196, 76, 59, 16, 4, 66, 8, 197, 65, 33, 68, 20, 16,
+			66, 8, 197, 52, 84, 135, 20, 16, 66, 8, 197, 28, 83, 133, 72, 16, 67, 8, 197, 13, 33, 68, 20, 16, 67, 8, 197, 12, 240, 143,
+			72, 16, 67, 13, 68, 14, 197, 84, 4, 49, 13, 40, 47, 6, 35, 0, 0, 0, 9, 198, 13, 85, 157, 57, 64, 64, 67, 12, 136, 105,
+			97, 114, 196, 131, 197, 159, 105, 65, 8, 0, 10, 199, 64, 20, 148, 36, 50, 80, 4, 68, 0, 10, 199, 81, 34, 77, 37, 65, 118, 36,
+			66, 10, 135, 197, 159, 117, 98, 114, 101, 100, 65, 10, 199, 16, 84, 198, 4, 49, 118, 36, 66, 0, 9, 198, 36, 229, 18, 36, 114, 64,
+			65, 9, 198, 12, 243, 148, 72, 243, 44, 67, 0, 0, 6, 195, 82, 192, 213, 66, 9, 198, 152, 208, 149, 49, 161, 65, 67, 9, 198, 12,
+			243, 182, 36, 225, 65, 67, 6, 194, 4, 208, 76, 32, 0, 8, 197, 81, 32, 71, 20, 208, 65, 0, 6, 195, 72, 84, 212, 65, 9, 198,
+			16, 144, 86, 60, 194, 64, 65, 0, 11, 200, 152, 229, 172, 73, 65, 74, 20, 16, 68, 6, 195, 5, 97, 77, 76, 0, 9, 198, 77, 84,
+			246, 36, 225, 65, 67, 0, 7, 196, 176, 195, 210, 4, 77, 0, 9, 198, 77, 68, 149, 13, 69, 64, 66, 8, 197, 52, 20, 148, 61, 32,
+			65, 8, 197, 16, 240, 212, 61, 32, 65, 8, 197, 13, 213, 5, 88, 16, 67, 9, 198, 9, 81, 142, 37, 69, 64, 67, 11, 200, 4, 192,
+			172, 77, 68, 149, 36, 80, 67, 8, 197, 77, 84, 44, 72, 16, 67, 8, 197, 152, 228, 197, 72, 16, 67, 0, 8, 197, 10, 197, 44, 81,
+			80, 67, 9, 198, 64, 20, 129, 48, 150, 129, 68, 6, 195, 77, 80, 201, 66, 11, 67, 21, 32, 73, 57, 36, 16, 117, 0, 78, 7, 196,
+			4, 49, 83, 80, 76, 0, 8, 66, 21, 80, 57, 115, 0, 76, 0, 7, 196, 92, 80, 133, 72, 65, 13, 68, 20, 229, 5, 72, 36, 50,
+			47, 13, 34, 0, 65, 0, 8, 197, 88, 144, 212, 61, 32, 65, 9, 198, 89, 211, 148, 85, 43, 0, 67, 8, 197, 76, 83, 154, 61, 32,
+			65, 8, 197, 64, 144, 212, 61, 32, 65, 8, 197, 66, 196, 133, 72, 80, 66, 15, 69, 52, 20, 139, 21, 32, 65, 6, 35, 34, 49, 13,
+			34, 0, 8, 197, 48, 17, 236, 72, 80, 65, 8, 197, 24, 16, 212, 61, 32, 65, 8, 197, 5, 50, 71, 85, 32, 66, 9, 198, 56, 144,
+			201, 84, 229, 76, 77, 9, 198, 56, 144, 201, 84, 229, 76, 77, 0, 11, 200, 152, 224, 210, 84, 229, 44, 81, 80, 68, 8, 132, 97, 197,
+			159, 97, 66, 28, 0, 9, 198, 52, 83, 182, 36, 225, 77, 66, 7, 196, 36, 226, 77, 36, 65, 0, 8, 197, 48, 16, 207, 52, 144, 65,
+			8, 197, 36, 226, 77, 36, 144, 65, 9, 134, 109, 105, 197, 159, 99, 97, 66, 0, 0, 9, 198, 105, 81, 210, 177, 98, 64, 67, 9, 198,
+			65, 33, 71, 177, 66, 64, 67, 0, 7, 196, 48, 16, 207, 52, 65, 0, 8, 197, 37, 161, 207, 56, 144, 67, 0, 6, 195, 28, 243, 137,
+			66, 0, 7, 196, 36, 66, 76, 20, 66, 7, 196, 13, 82, 86, 4, 66, 0, 8, 197, 84, 225, 5, 88, 16, 67, 13, 138, 115, 99, 114,
+			195, 162, 197, 159, 110, 101, 116, 65, 8, 197, 64, 20, 143, 48, 80, 66, 16, 69, 61, 32, 78, 28, 80, 6, 39, 14, 16, 37, 50, 75,
+			124, 0, 8, 197, 52, 19, 143, 48, 80, 66, 8, 197, 36, 225, 201, 56, 80, 67, 8, 197, 36, 229, 137, 80, 16, 67, 0, 9, 198, 24,
+			192, 77, 85, 43, 0, 65, 0, 8, 197, 88, 149, 18, 20, 112, 65, 0, 10, 135, 97, 197, 159, 101, 122, 196, 131, 67, 7, 196, 88, 144,
+			146, 4, 66, 5, 194, 90, 192, 72, 7, 196, 84, 225, 76, 20, 73, 0, 8, 197, 76, 19, 20, 20, 16, 66, 8, 197, 65, 85, 5, 72,
+			80, 66, 8, 197, 56, 245, 137, 12, 80, 66, 8, 197, 56, 149, 133, 48, 80, 66, 8, 197, 53, 86, 137, 12, 16, 65, 19, 70, 152, 235,
+			21, 57, 68, 149, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 0, 8, 197, 16, 243, 73, 56, 80, 65, 15, 69, 77, 1, 82, 36, 16,
+			89, 48, 36, 16, 6, 57, 35, 0, 8, 197, 72, 244, 212, 20, 16, 66, 8, 197, 72, 145, 9, 12, 16, 67, 11, 200, 36, 229, 5, 73,
+			49, 67, 80, 16, 68, 8, 197, 16, 81, 9, 12, 16, 67, 8, 197, 16, 147, 148, 72, 80, 28, 8, 197, 4, 197, 15, 72, 16, 77, 0,
+			8, 197, 216, 148, 5, 80, 80, 65, 8, 197, 73, 212, 197, 80, 80, 65, 7, 196, 36, 225, 9, 12, 66, 0, 11, 200, 152, 229, 15, 5,
+			32, 197, 216, 144, 66, 6, 195, 16, 82, 129, 66, 0, 9, 198, 37, 53, 1, 52, 37, 76, 67, 7, 196, 18, 197, 78, 176, 67, 0, 8,
+			197, 60, 34, 67, 20, 144, 67, 8, 197, 72, 85, 133, 56, 144, 67, 8, 197, 77, 83, 148, 20, 208, 77, 0, 9, 198, 4, 101, 82, 37,
+			50, 64, 68, 7, 196, 56, 144, 201, 60, 77, 0, 18, 70, 88, 19, 5, 56, 50, 65, 84, 35, 55, 6, 36, 50, 89, 57, 35, 0, 0,
+			0, 16, 69, 81, 33, 66, 84, 144, 47, 14, 16, 36, 71, 58, 6, 37, 0, 0, 17, 70, 72, 20, 133, 61, 34, 64, 34, 35, 16, 36,
+			6, 39, 145, 124, 0, 0, 8, 197, 36, 225, 9, 28, 240, 67, 9, 198, 8, 16, 212, 21, 34, 69, 66, 0, 7, 196, 88, 146, 84, 84,
+			66, 7, 196, 16, 19, 148, 84, 66, 7, 196, 13, 83, 20, 84, 66, 0, 9, 198, 14, 195, 44, 85, 161, 65, 68, 0, 8, 197, 80, 16,
+			172, 72, 16, 65, 10, 67, 13, 82, 66, 49, 6, 121, 71, 0, 8, 197, 177, 53, 15, 72, 16, 77, 0, 6, 195, 24, 147, 9, 66, 0,
+			7, 196, 12, 20, 20, 84, 66, 10, 199, 20, 50, 9, 48, 144, 146, 4, 68, 10, 199, 16, 83, 79, 57, 53, 18, 4, 67, 10, 199, 13,
+			85, 18, 20, 145, 82, 4, 68, 10, 199, 12, 243, 131, 20, 229, 18, 4, 67, 0, 0, 8, 197, 82, 192, 197, 72, 80, 66, 11, 200, 64,
+			20, 148, 20, 225, 82, 84, 192, 67, 8, 197, 14, 193, 5, 72, 80, 66, 10, 135, 109, 105, 197, 159, 117, 110, 97, 67, 0, 9, 198, 77,
+			211, 135, 21, 32, 64, 67, 9, 198, 13, 83, 80, 177, 32, 64, 67, 7, 195, 7, 98, 64, 76, 32, 11, 67, 21, 32, 85, 57, 36, 16,
+			114, 0, 78, 7, 195, 16, 147, 128, 72, 28, 0, 10, 199, 4, 116, 137, 13, 83, 20, 84, 68, 0, 8, 197, 16, 85, 133, 56, 144, 67,
+			0, 8, 197, 82, 192, 197, 72, 144, 66, 0, 9, 198, 64, 203, 3, 21, 34, 64, 66, 0, 9, 198, 152, 224, 236, 72, 48, 64, 67, 0,
+			8, 197, 81, 33, 67, 20, 208, 65, 21, 71, 21, 129, 82, 12, 157, 137, 84, 36, 81, 88, 36, 34, 76, 6, 37, 123, 57, 40, 0, 0,
+			9, 198, 76, 195, 194, 61, 162, 64, 67, 9, 198, 16, 84, 197, 73, 98, 64, 67, 0, 7, 196, 12, 240, 201, 56, 65, 11, 136, 118, 101,
+			197, 159, 116, 101, 106, 105, 67, 0, 7, 196, 66, 192, 213, 72, 65, 7, 196, 5, 64, 67, 4, 67, 18, 70, 61, 34, 67, 116, 225, 0,
+			39, 16, 124, 49, 4, 112, 50, 72, 0, 76, 0, 0, 21, 71, 65, 33, 68, 37, 52, 21, 76, 48, 14, 16, 36, 72, 37, 89, 48, 6,
+			40, 89, 0, 0, 6, 195, 76, 244, 201, 66, 7, 195, 16, 20, 128, 72, 8, 0, 6, 195, 66, 196, 149, 66, 0, 8, 197, 89, 82, 69,
+			80, 80, 65, 8, 197, 76, 83, 69, 56, 80, 65, 0, 7, 196, 5, 66, 78, 28, 66, 0, 6, 195, 28, 19, 5, 66, 6, 195, 80, 19,
+			5, 77, 6, 195, 52, 83, 5, 77, 6, 195, 12, 83, 5, 77, 0, 7, 196, 52, 22, 9, 52, 65, 0, 8, 197, 16, 81, 137, 56, 144,
+			67, 0, 8, 197, 66, 196, 133, 72, 144, 66, 8, 197, 5, 53, 44, 104, 144, 65, 0, 9, 198, 152, 225, 140, 61, 34, 64, 67, 0, 0,
+			9, 134, 105, 101, 197, 159, 101, 97, 66, 8, 197, 37, 160, 149, 80, 144, 67, 16, 69, 61, 34, 67, 84, 208, 39, 16, 124, 49, 4, 40,
+			65, 0, 76, 0, 8, 66, 20, 144, 57, 118, 0, 76, 16, 66, 12, 208, 99, 101, 110, 116, 105, 109, 101, 116, 114, 105, 0, 29, 0, 0,
+			13, 68, 52, 81, 9, 84, 65, 6, 36, 72, 57, 40, 0, 9, 198, 152, 229, 5, 216, 80, 64, 67, 0, 12, 67, 81, 34, 79, 47, 14,
+			16, 6, 37, 39, 0, 8, 197, 24, 145, 82, 81, 80, 66, 0, 9, 198, 25, 84, 142, 37, 171, 0, 67, 0, 16, 70, 56, 147, 108, 57,
+			82, 64, 50, 37, 65, 13, 50, 6, 121, 0, 0, 6, 195, 81, 212, 129, 66, 0, 12, 201, 64, 20, 193, 28, 84, 137, 48, 244, 128, 67,
+			9, 198, 152, 224, 236, 64, 84, 133, 67, 0, 24, 73, 65, 34, 69, 80, 83, 149, 49, 82, 64, 48, 14, 16, 57, 6, 36, 47, 36, 50,
+			40, 55, 121, 0, 0, 9, 198, 52, 84, 193, 28, 84, 129, 67, 9, 198, 88, 240, 201, 24, 84, 129, 68, 9, 198, 77, 68, 133, 13, 84,
+			129, 67, 9, 198, 77, 5, 76, 8, 84, 129, 67, 9, 198, 36, 224, 201, 56, 84, 129, 68, 9, 198, 21, 128, 83, 64, 84, 129, 68, 9,
+			198, 16, 80, 197, 48, 84, 129, 68, 9, 198, 4, 115, 15, 52, 84, 129, 68, 9, 198, 4, 48, 197, 48, 84, 129, 68, 9, 198, 4, 49,
+			83, 80, 244, 129, 78, 0, 0, 8, 197, 48, 16, 210, 36, 208, 65, 8, 197, 24, 243, 15, 76, 144, 67, 7, 196, 105, 211, 66, 36, 66,
+			8, 197, 16, 243, 79, 48, 144, 67, 8, 197, 80, 240, 205, 4, 144, 73, 0, 10, 199, 152, 225, 200, 39, 98, 84, 84, 68, 0, 12, 200,
+			16, 84, 208, 177, 45, 137, 81, 80, 68, 48, 0, 6, 195, 50, 196, 193, 66, 0, 8, 197, 88, 144, 212, 36, 208, 65, 0, 9, 198, 12,
+			203, 20, 36, 235, 0, 67, 9, 198, 64, 245, 18, 37, 98, 64, 67, 10, 198, 64, 245, 133, 77, 66, 64, 67, 46, 0, 0, 0, 7, 196,
+			4, 209, 118, 36, 67, 0, 8, 197, 33, 212, 148, 36, 144, 66, 8, 197, 29, 209, 9, 48, 16, 67, 0, 9, 198, 82, 192, 197, 72, 146,
+			64, 66, 10, 67, 4, 128, 64, 35, 107, 6, 35, 0, 0, 0, 7, 196, 64, 19, 9, 16, 65, 0, 8, 197, 82, 197, 137, 218, 192, 66,
+			0, 6, 195, 12, 19, 5, 65, 9, 198, 4, 209, 78, 36, 237, 172, 66, 11, 67, 4, 99, 1, 35, 83, 55, 6, 35, 0, 6, 195, 76,
+			19, 5, 77, 10, 3, 226, 130, 172, 6, 115, 16, 39, 0, 0, 10, 199, 28, 130, 76, 36, 209, 76, 20, 67, 0, 0, 8, 197, 177, 53,
+			5, 36, 16, 77, 0, 0, 0, 0, 9, 198, 65, 35, 212, 20, 171, 0, 67, 8, 197, 152, 224, 213, 36, 80, 66, 15, 69, 33, 212, 148,
+			36, 80, 107, 112, 34, 47, 6, 37, 36, 0, 0, 6, 195, 52, 146, 137, 66, 0, 9, 198, 53, 211, 135, 116, 144, 64, 67, 0, 10, 199,
+			74, 196, 208, 85, 65, 82, 36, 67, 11, 200, 24, 84, 133, 77, 68, 149, 36, 80, 67, 12, 67, 9, 34, 79, 71, 14, 16, 6, 37, 39,
+			0, 7, 196, 18, 197, 78, 4, 67, 14, 4, 95, 111, 103, 111, 39, 81, 39, 50, 6, 36, 49, 0, 0, 10, 135, 197, 159, 101, 100, 101,
+			114, 101, 66, 8, 197, 13, 211, 132, 88, 16, 66, 8, 197, 5, 71, 82, 56, 16, 67, 0, 0, 9, 198, 65, 35, 212, 60, 51, 204, 67,
+			0, 10, 199, 152, 224, 200, 20, 145, 84, 84, 68, 0, 0, 9, 198, 152, 228, 197, 52, 224, 64, 67, 0, 7, 196, 21, 3, 195, 36, 65,
+			0, 6, 195, 21, 3, 195, 65, 10, 199, 152, 224, 193, 72, 49, 82, 4, 68, 0, 8, 197, 56, 80, 236, 40, 144, 67, 0, 13, 68, 74,
+			196, 21, 76, 34, 13, 48, 6, 40, 89, 0, 21, 71, 152, 235, 21, 57, 68, 149, 48, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 55,
+			0, 0, 7, 196, 80, 83, 69, 52, 65, 0, 0, 17, 70, 56, 144, 201, 13, 83, 64, 50, 37, 76, 124, 49, 6, 40, 65, 0, 20, 71,
+			16, 84, 195, 60, 212, 21, 76, 72, 36, 89, 49, 39, 65, 48, 6, 40, 89, 0, 9, 66, 20, 192, 57, 36, 55, 0, 76, 0, 15, 3,
+			95, 50, 48, 72, 39, 40, 13, 88, 6, 36, 76, 124, 0, 0, 6, 195, 14, 198, 149, 66, 7, 196, 37, 34, 84, 4, 67, 9, 198, 152,
+			208, 146, 176, 48, 64, 67, 7, 196, 21, 98, 84, 4, 67, 6, 195, 155, 98, 64, 72, 0, 9, 134, 99, 101, 114, 197, 159, 105, 66, 0,
+			0, 9, 198, 77, 83, 148, 23, 98, 64, 77, 6, 195, 152, 228, 236, 8, 0, 7, 196, 65, 84, 148, 4, 66, 7, 196, 5, 1, 76, 4,
+			67, 0, 0, 9, 198, 72, 84, 208, 37, 32, 64, 67, 9, 198, 65, 33, 80, 5, 32, 64, 67, 9, 198, 65, 33, 70, 21, 32, 64, 67,
+			9, 198, 60, 36, 197, 73, 96, 64, 67, 9, 198, 53, 84, 141, 85, 32, 64, 67, 9, 198, 20, 194, 66, 21, 32, 64, 68, 9, 198, 12,
+			243, 133, 13, 64, 64, 67, 9, 198, 53, 83, 20, 61, 32, 64, 77, 14, 4, 95, 98, 114, 118, 49, 13, 76, 6, 40, 55, 13, 0, 0,
+			6, 195, 88, 148, 129, 66, 6, 195, 52, 148, 129, 66, 15, 3, 95, 51, 48, 47, 14, 16, 118, 88, 6, 36, 76, 124, 0, 0, 10, 199,
+			16, 148, 212, 36, 225, 197, 52, 66, 10, 199, 8, 16, 212, 21, 34, 69, 36, 66, 12, 65, 152, 4, 112, 72, 37, 50, 6, 37, 0, 49,
+			0, 0, 12, 68, 100, 18, 15, 60, 57, 35, 107, 6, 40, 0, 7, 195, 65, 34, 78, 72, 28, 21, 4, 95, 97, 99, 50, 72, 6, 40,
+			71, 55, 40, 35, 89, 49, 40, 6, 123, 37, 47, 0, 0, 7, 196, 18, 196, 172, 80, 66, 15, 67, 12, 20, 133, 49, 35, 34, 36, 55,
+			0, 72, 81, 108, 32, 7, 195, 12, 20, 133, 73, 28, 0, 8, 197, 36, 208, 71, 36, 224, 66, 9, 198, 65, 33, 71, 177, 65, 65, 67,
+			0, 9, 198, 76, 147, 66, 60, 194, 67, 66, 13, 68, 66, 195, 5, 4, 48, 35, 55, 36, 6, 35, 0, 0, 0, 11, 136, 99, 114, 101,
+			197, 159, 116, 101, 97, 66, 26, 4, 197, 159, 46, 97, 91, 37, 11, 35, 91, 4, 35, 15, 65, 117, 15, 72, 36, 48, 6, 35, 34, 47,
+			36, 0, 0, 7, 196, 25, 34, 90, 84, 66, 0, 8, 197, 4, 113, 78, 81, 80, 67, 0, 8, 197, 12, 20, 5, 216, 144, 65, 0, 9,
+			198, 88, 147, 132, 23, 98, 64, 65, 9, 198, 60, 20, 208, 23, 98, 64, 65, 11, 136, 99, 114, 101, 197, 159, 116, 101, 109, 65, 9, 198,
+			48, 240, 193, 48, 150, 129, 68, 0, 0, 9, 198, 72, 81, 201, 104, 244, 128, 66, 8, 197, 4, 52, 137, 81, 80, 67, 10, 199, 152, 229,
+			143, 48, 37, 82, 4, 68, 9, 197, 64, 83, 148, 73, 80, 72, 28, 0, 8, 197, 77, 1, 82, 176, 208, 66, 11, 200, 72, 80, 197, 67,
+			98, 79, 56, 80, 68, 0, 11, 136, 99, 196, 131, 197, 159, 117, 110, 97, 67, 0, 7, 196, 5, 34, 80, 36, 65, 11, 5, 95, 111, 102,
+			77, 49, 65, 6, 132, 0, 0, 0, 0, 6, 195, 65, 85, 21, 66, 0, 0, 0, 9, 198, 20, 194, 77, 36, 235, 0, 66, 0, 11, 67,
+			13, 35, 201, 49, 34, 39, 6, 37, 0, 15, 3, 95, 51, 88, 47, 14, 16, 6, 118, 88, 36, 76, 124, 0, 13, 3, 95, 54, 48, 91,
+			117, 88, 6, 36, 76, 124, 0, 0, 11, 3, 95, 48, 67, 89, 6, 40, 47, 36, 0, 0, 9, 198, 77, 4, 137, 40, 147, 128, 65, 14,
+			68, 21, 32, 118, 36, 57, 36, 16, 35, 141, 124, 0, 78, 0, 8, 197, 13, 81, 197, 216, 144, 65, 8, 197, 5, 33, 5, 216, 144, 65,
+			17, 70, 20, 97, 67, 81, 80, 64, 36, 83, 36, 49, 47, 58, 6, 35, 0, 0, 0, 13, 68, 12, 244, 212, 4, 49, 39, 89, 47, 6,
+			35, 0, 0, 8, 197, 28, 80, 77, 176, 224, 65, 12, 4, 95, 48, 90, 51, 65, 6, 132, 65, 37, 0, 0, 8, 197, 216, 80, 80, 176,
+			224, 65, 7, 196, 80, 21, 44, 48, 65, 9, 198, 72, 240, 133, 73, 64, 64, 66, 7, 196, 10, 197, 44, 36, 66, 9, 198, 85, 66, 76,
+			37, 160, 64, 68, 9, 198, 80, 83, 80, 21, 32, 64, 67, 9, 198, 60, 34, 69, 13, 64, 64, 67, 9, 198, 21, 129, 67, 85, 64, 64,
+			68, 9, 198, 16, 148, 208, 21, 32, 64, 67, 9, 198, 16, 84, 9, 77, 64, 64, 67, 9, 198, 16, 83, 5, 13, 64, 64, 67, 9, 198,
+			5, 50, 71, 85, 32, 64, 68, 9, 198, 4, 49, 76, 61, 32, 64, 78, 9, 198, 4, 49, 65, 77, 64, 64, 76, 14, 4, 95, 48, 90,
+			50, 89, 6, 40, 47, 37, 65, 37, 0, 0, 11, 200, 152, 224, 236, 64, 84, 137, 48, 80, 67, 12, 67, 24, 20, 129, 83, 4, 13, 34,
+			13, 0, 8, 16, 3, 95, 55, 48, 91, 35, 48, 47, 36, 88, 6, 36, 76, 124, 0, 0, 13, 3, 95, 49, 67, 4, 39, 89, 6, 40,
+			47, 13, 0, 0, 9, 198, 13, 83, 80, 177, 43, 13, 67, 9, 198, 4, 65, 86, 177, 37, 76, 67, 0, 9, 198, 13, 39, 78, 12, 83,
+			128, 65, 0, 9, 198, 16, 84, 198, 176, 53, 64, 67, 0, 8, 197, 65, 34, 67, 36, 224, 65, 0, 9, 198, 65, 35, 193, 77, 11, 20,
+			65, 7, 196, 73, 209, 5, 4, 66, 7, 196, 18, 193, 5, 4, 66, 7, 196, 14, 193, 5, 4, 66, 0, 7, 196, 12, 20, 44, 80, 65,
+			6, 194, 48, 16, 72, 28, 20, 3, 95, 49, 57, 50, 6, 131, 13, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 9, 198, 16,
+			84, 195, 61, 11, 18, 66, 6, 195, 5, 3, 201, 66, 10, 67, 4, 99, 9, 35, 83, 55, 37, 0, 11, 136, 110, 196, 131, 197, 159, 116,
+			101, 97, 66, 19, 3, 95, 49, 56, 6, 39, 48, 123, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 10, 199, 17, 32, 71, 61, 53,
+			5, 4, 65, 10, 199, 12, 129, 82, 21, 53, 5, 4, 67, 10, 199, 65, 33, 76, 84, 225, 197, 4, 67, 16, 3, 95, 50, 67, 72, 6,
+			39, 40, 13, 89, 6, 40, 47, 36, 0, 0, 0, 8, 197, 8, 21, 5, 216, 144, 65, 9, 197, 65, 85, 5, 216, 144, 76, 32, 0, 9,
+			198, 12, 243, 210, 16, 243, 129, 68, 11, 136, 115, 102, 195, 162, 114, 197, 159, 105, 66, 0, 9, 198, 66, 196, 212, 74, 195, 64, 66, 6,
+			195, 5, 34, 80, 65, 10, 199, 16, 85, 5, 72, 210, 78, 4, 68, 0, 17, 70, 52, 19, 129, 28, 84, 128, 65, 6, 36, 50, 36, 75,
+			13, 34, 0, 9, 198, 12, 129, 83, 80, 244, 128, 65, 9, 198, 4, 49, 83, 80, 244, 128, 78, 0, 10, 199, 152, 229, 29, 53, 2, 78,
+			4, 68, 19, 3, 95, 49, 49, 6, 40, 50, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 17, 70, 88, 241, 1, 24, 243, 133,
+			84, 6, 39, 72, 35, 83, 39, 50, 0, 7, 196, 28, 150, 143, 72, 65, 11, 3, 95, 49, 48, 88, 6, 36, 76, 36, 0, 0, 10, 199,
+			16, 84, 195, 32, 145, 5, 52, 66, 9, 198, 152, 224, 213, 72, 18, 129, 68, 21, 3, 95, 49, 51, 47, 14, 16, 6, 118, 89, 48, 14,
+			16, 36, 88, 4, 36, 76, 36, 0, 0, 9, 198, 89, 211, 172, 82, 194, 64, 67, 9, 198, 4, 203, 20, 85, 43, 13, 68, 10, 199, 72,
+			80, 67, 216, 147, 206, 4, 67, 7, 196, 14, 195, 3, 4, 66, 6, 194, 152, 224, 72, 28, 19, 3, 95, 49, 50, 72, 6, 120, 89, 48,
+			14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 8, 197, 4, 229, 78, 216, 16, 67, 20, 3, 95, 49, 53, 76, 6, 37, 50, 89, 48, 14,
+			16, 36, 88, 4, 36, 76, 36, 0, 0, 19, 3, 95, 49, 52, 48, 6, 117, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 10,
+			199, 36, 229, 5, 73, 162, 67, 20, 67, 10, 199, 12, 144, 193, 81, 34, 67, 20, 67, 10, 199, 4, 69, 133, 57, 66, 67, 20, 67, 22,
+			3, 95, 49, 55, 91, 6, 35, 48, 47, 36, 89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 19, 3, 95, 49, 54, 91, 6, 117,
+			89, 48, 14, 16, 36, 88, 4, 36, 76, 36, 0, 0, 7, 196, 74, 193, 197, 80, 65, 0, 16, 3, 95, 55, 88, 91, 6, 35, 48, 47,
+			36, 88, 36, 76, 124, 0, 0, 7, 196, 4, 210, 67, 20, 66, 14, 68, 61, 34, 67, 20, 39, 16, 124, 76, 4, 36, 0, 75, 0, 0,
+			9, 198, 104, 115, 205, 61, 65, 64, 65, 9, 198, 52, 20, 148, 61, 33, 64, 65, 9, 198, 24, 244, 134, 61, 75, 0, 65, 9, 198, 16,
+			240, 212, 61, 33, 64, 65, 9, 198, 12, 84, 131, 21, 75, 0, 67, 0, 0, 13, 68, 13, 85, 9, 4, 49, 40, 47, 6, 37, 35, 0,
+			0, 9, 198, 152, 229, 29, 53, 3, 1, 67, 0, 13, 68, 5, 43, 54, 36, 35, 34, 6, 13, 123, 124, 0, 0, 6, 195, 64, 245, 5,
+			66, 6, 195, 60, 101, 1, 66, 0, 13, 5, 197, 159, 116, 105, 101, 91, 47, 6, 37, 36, 0, 9, 198, 77, 211, 66, 177, 64, 64, 65,
+			0, 0, 11, 200, 16, 148, 212, 36, 225, 197, 216, 144, 66, 0, 6, 195, 84, 149, 1, 66, 15, 4, 95, 97, 99, 117, 35, 89, 49, 40,
+			123, 6, 37, 47, 0, 0, 8, 197, 21, 128, 77, 20, 224, 66, 13, 5, 197, 159, 116, 105, 97, 91, 47, 6, 57, 35, 0, 0, 0, 0,
+			17, 3, 95, 52, 48, 48, 35, 47, 14, 16, 40, 88, 6, 36, 76, 124, 0, 0, 9, 198, 16, 84, 15, 104, 149, 0, 66, 4, 193, 160,
+			43, 0, 7, 196, 81, 211, 172, 72, 65, 0, 7, 196, 37, 4, 207, 76, 65, 9, 198, 12, 20, 129, 12, 19, 0, 66, 0, 7, 196, 29,
+			83, 5, 72, 65, 6, 195, 48, 148, 9, 66, 0, 11, 200, 56, 244, 212, 36, 209, 76, 61, 32, 65, 11, 200, 36, 224, 77, 36, 50, 76,
+			61, 32, 67, 10, 199, 13, 85, 18, 20, 213, 82, 4, 68, 6, 195, 8, 253, 137, 66, 7, 195, 88, 93, 137, 76, 32, 0, 16, 70, 8,
+			195, 199, 28, 84, 128, 71, 55, 6, 39, 81, 13, 34, 0, 11, 3, 95, 50, 102, 72, 6, 39, 40, 13, 0, 0, 9, 198, 152, 229, 172,
+			82, 197, 21, 68, 9, 198, 152, 237, 133, 66, 197, 21, 68, 0, 11, 200, 64, 145, 80, 82, 195, 172, 81, 80, 68, 8, 197, 66, 196, 172,
+			76, 144, 67, 15, 3, 95, 50, 88, 72, 6, 39, 40, 13, 88, 36, 76, 124, 0, 14, 3, 95, 53, 48, 76, 37, 50, 88, 6, 36, 76,
+			124, 0, 0, 7, 196, 12, 194, 80, 36, 66, 0, 7, 196, 8, 149, 143, 48, 65, 0, 0, 8, 197, 82, 197, 137, 216, 80, 66, 8, 197,
+			74, 192, 206, 21, 64, 65, 0, 12, 137, 99, 195, 162, 197, 159, 116, 105, 103, 97, 67, 0, 0, 0, 10, 67, 52, 144, 64, 65, 6, 37,
+			35, 0, 6, 195, 85, 36, 201, 66, 0, 7, 196, 76, 244, 197, 4, 66, 7, 196, 24, 84, 133, 4, 66, 7, 196, 84, 225, 73, 4, 77,
+			7, 196, 84, 229, 73, 4, 77, 0, 0, 9, 198, 77, 81, 140, 21, 65, 64, 65, 9, 198, 64, 16, 207, 77, 65, 64, 65, 9, 198, 13,
+			32, 84, 21, 33, 64, 65, 18, 70, 61, 34, 67, 5, 33, 64, 39, 16, 124, 49, 4, 35, 16, 36, 0, 76, 0, 6, 195, 12, 80, 64,
+			76, 0, 13, 68, 16, 85, 137, 4, 72, 36, 84, 37, 6, 35, 0, 15, 3, 95, 63, 63, 49, 35, 16, 35, 49, 47, 6, 36, 34, 0,
+			0, 11, 200, 65, 35, 212, 60, 51, 193, 48, 80, 67, 0, 8, 197, 61, 1, 82, 176, 208, 67, 8, 197, 36, 229, 18, 176, 208, 66, 0,
+			10, 67, 52, 145, 64, 65, 6, 37, 36, 0, 6, 195, 12, 85, 129, 66, 9, 198, 16, 84, 198, 84, 225, 1, 67, 9, 198, 12, 243, 134,
+			84, 225, 1, 67, 17, 3, 95, 52, 88, 48, 6, 35, 47, 14, 16, 40, 88, 36, 76, 124, 0, 0, 0, 0, 0, 6, 195, 88, 245, 1,
+			66, 0, 17, 70, 152, 224, 73, 57, 65, 65, 112, 50, 35, 6, 37, 50, 47, 135, 0, 0, 0, 11, 66, 48, 80, 55, 135, 0, 72, 81,
+			97, 32, 13, 66, 48, 80, 55, 135, 34, 0, 72, 81, 97, 114, 32, 16, 66, 48, 80, 55, 135, 123, 124, 0, 72, 81, 97, 197, 163, 105,
+			32, 13, 66, 48, 80, 55, 135, 57, 0, 72, 81, 97, 105, 32, 13, 66, 48, 80, 55, 135, 65, 0, 72, 81, 97, 109, 32, 11, 66, 48,
+			80, 55, 135, 0, 72, 81, 97, 32, 5, 194, 48, 80, 72, 15, 66, 44, 112, 107, 105, 108, 111, 103, 114, 97, 109, 101, 0, 29, 0, 8,
+			197, 66, 196, 236, 72, 144, 65, 14, 3, 95, 53, 88, 76, 6, 37, 50, 88, 36, 76, 124, 0, 14, 3, 95, 56, 48, 39, 48, 47, 88,
+			6, 36, 76, 124, 0, 0, 9, 198, 81, 35, 211, 56, 85, 0, 65, 10, 199, 77, 80, 133, 77, 66, 77, 4, 68, 0, 0, 9, 198, 65,
+			35, 198, 21, 51, 210, 66, 9, 198, 12, 244, 133, 13, 69, 64, 67, 0, 9, 198, 8, 243, 66, 176, 225, 64, 65, 7, 195, 88, 242, 64,
+			76, 32, 6, 195, 52, 18, 64, 72, 6, 195, 88, 242, 64, 76, 6, 195, 56, 242, 64, 76, 6, 195, 12, 82, 64, 76, 0, 9, 198, 90,
+			196, 147, 177, 69, 64, 67, 9, 198, 81, 43, 19, 177, 69, 64, 67, 6, 195, 66, 193, 21, 66, 9, 198, 13, 43, 16, 177, 69, 64, 67,
+			9, 198, 14, 195, 3, 177, 69, 64, 67, 0, 9, 198, 90, 194, 69, 82, 197, 21, 68, 9, 198, 57, 83, 108, 74, 197, 21, 68, 9, 198,
+			54, 197, 21, 74, 197, 21, 68, 9, 198, 152, 226, 149, 74, 197, 21, 68, 9, 198, 152, 208, 149, 14, 197, 21, 68, 9, 198, 4, 71, 78,
+			14, 197, 21, 68, 9, 198, 16, 84, 208, 177, 45, 137, 67, 7, 196, 13, 212, 141, 36, 66, 0, 0, 12, 201, 104, 68, 149, 56, 50, 78,
+			177, 69, 64, 68, 15, 140, 195, 174, 109, 112, 117, 197, 159, 99, 196, 131, 116, 117, 68, 13, 3, 95, 54, 88, 91, 6, 117, 88, 36, 76,
+			124, 0, 14, 3, 95, 57, 48, 50, 131, 13, 88, 6, 36, 76, 124, 0, 0, 8, 197, 89, 83, 20, 85, 32, 65, 9, 198, 216, 19, 132,
+			177, 32, 64, 65, 9, 198, 24, 203, 3, 177, 32, 64, 65, 8, 197, 13, 32, 84, 21, 32, 65, 10, 199, 4, 53, 80, 84, 224, 212, 84,
+			68, 0, 17, 142, 195, 174, 110, 102, 196, 131, 197, 159, 117, 114, 196, 131, 116, 117, 69, 0, 11, 200, 152, 229, 146, 20, 67, 137, 12, 144,
+			68, 0, 19, 8, 101, 120, 39, 111, 116, 105, 99, 101, 36, 81, 88, 39, 47, 37, 76, 36, 0, 7, 195, 88, 243, 64, 76, 32, 0, 6,
+			195, 10, 193, 193, 66, 0, 0, 0, 11, 67, 17, 37, 77, 72, 34, 6, 40, 65, 0, 0, 7, 196, 4, 35, 206, 4, 67, 6, 195, 74,
+			192, 201, 66, 8, 196, 64, 240, 84, 20, 76, 32, 0, 8, 197, 76, 80, 207, 48, 80, 65, 11, 200, 64, 244, 148, 60, 48, 76, 37, 80,
+			68, 8, 197, 52, 243, 137, 12, 16, 66, 8, 197, 24, 20, 207, 48, 80, 66, 8, 197, 88, 244, 130, 20, 16, 66, 8, 197, 88, 19, 15,
+			72, 16, 67, 8, 197, 80, 243, 5, 72, 16, 67, 8, 197, 77, 68, 137, 12, 16, 66, 15, 69, 77, 64, 71, 56, 16, 89, 47, 35, 81,
+			50, 6, 35, 0, 8, 197, 72, 83, 5, 88, 16, 67, 8, 197, 72, 81, 201, 104, 16, 67, 8, 197, 72, 81, 149, 104, 16, 67, 8, 197,
+			64, 244, 142, 20, 16, 66, 8, 197, 60, 35, 9, 28, 16, 67, 7, 196, 4, 219, 7, 36, 67, 0, 7, 196, 56, 147, 73, 12, 66, 0,
+			9, 198, 24, 19, 129, 80, 144, 201, 66, 0, 12, 67, 81, 43, 9, 47, 14, 16, 13, 6, 37, 0, 0, 8, 197, 85, 35, 5, 80, 80,
+			65, 8, 197, 84, 197, 9, 52, 80, 65, 8, 197, 81, 84, 133, 48, 80, 66, 8, 197, 81, 83, 133, 80, 80, 65, 8, 197, 77, 83, 133,
+			80, 80, 65, 8, 197, 72, 84, 5, 16, 80, 65, 8, 197, 72, 18, 15, 88, 16, 65, 8, 197, 64, 84, 132, 20, 16, 66, 8, 197, 64,
+			19, 9, 16, 80, 65, 8, 197, 56, 147, 73, 12, 16, 66, 8, 197, 84, 212, 12, 20, 16, 66, 8, 197, 72, 84, 5, 72, 16, 67, 8,
+			197, 72, 84, 1, 72, 16, 67, 8, 197, 16, 84, 208, 72, 80, 28, 0, 7, 196, 64, 149, 9, 12, 66, 0, 9, 198, 152, 224, 73, 57,
+			64, 64, 67, 14, 3, 95, 56, 88, 6, 39, 48, 47, 88, 36, 76, 124, 0, 0, 10, 199, 16, 80, 207, 56, 80, 212, 4, 68, 0, 0,
+			9, 198, 72, 81, 197, 49, 82, 64, 65, 12, 201, 21, 132, 5, 72, 147, 69, 57, 64, 64, 69, 0, 9, 198, 16, 85, 78, 177, 162, 64,
+			68, 9, 198, 58, 196, 21, 77, 66, 64, 67, 9, 198, 152, 212, 12, 21, 66, 64, 67, 0, 9, 198, 105, 81, 210, 177, 97, 65, 67, 9,
+			198, 152, 229, 29, 48, 226, 64, 67, 0, 9, 198, 66, 196, 236, 73, 82, 69, 67, 7, 196, 48, 21, 5, 96, 65, 8, 197, 17, 84, 133,
+			72, 144, 66, 9, 198, 14, 195, 108, 73, 82, 69, 67, 11, 200, 8, 192, 71, 61, 51, 15, 88, 144, 68, 0, 7, 196, 53, 86, 137, 44,
+			65, 9, 198, 52, 20, 148, 61, 34, 64, 65, 10, 66, 48, 112, 36, 55, 75, 6, 37, 0, 0, 14, 3, 95, 57, 88, 50, 6, 131, 13,
+			88, 36, 76, 124, 0, 0, 29, 13, 112, 114, 101, 197, 159, 101, 100, 105, 110, 197, 163, 105, 101, 48, 14, 16, 36, 91, 36, 72, 37, 50,
+			123, 6, 37, 36, 0, 9, 198, 74, 195, 93, 56, 80, 64, 67, 0, 10, 199, 25, 34, 71, 177, 37, 73, 20, 67, 9, 198, 77, 75, 16,
+			116, 225, 65, 67, 0, 9, 198, 64, 240, 206, 37, 69, 64, 67, 9, 198, 28, 20, 142, 37, 69, 64, 67, 13, 68, 16, 81, 21, 76, 72,
+			36, 72, 6, 40, 89, 0, 8, 197, 72, 81, 236, 76, 144, 67, 0, 9, 198, 152, 225, 15, 37, 69, 64, 68, 0, 9, 198, 77, 64, 78,
+			16, 20, 132, 65, 12, 137, 112, 105, 197, 159, 99, 196, 131, 116, 117, 67, 10, 199, 4, 197, 21, 56, 65, 86, 4, 68, 10, 199, 4, 197,
+			3, 36, 225, 86, 4, 68, 0, 8, 197, 48, 245, 137, 81, 80, 67, 13, 138, 115, 196, 131, 118, 195, 162, 114, 197, 159, 105, 67, 0, 8,
+			197, 64, 20, 236, 72, 80, 65, 9, 198, 4, 49, 65, 77, 75, 0, 76, 0, 11, 200, 152, 224, 210, 20, 225, 236, 81, 80, 68, 6, 195,
+			5, 35, 85, 66, 0, 15, 69, 24, 243, 4, 21, 32, 83, 6, 39, 55, 72, 13, 34, 0, 0, 8, 197, 12, 243, 132, 20, 144, 66, 7,
+			196, 5, 11, 19, 4, 67, 0, 16, 70, 20, 147, 147, 80, 82, 78, 6, 117, 50, 91, 47, 117, 50, 0, 0, 9, 198, 66, 194, 65, 56,
+			161, 78, 66, 0, 9, 198, 152, 224, 236, 49, 162, 64, 67, 0, 9, 197, 80, 245, 21, 76, 144, 65, 28, 12, 4, 95, 115, 116, 107, 89,
+			55, 6, 36, 91, 0, 0, 9, 198, 12, 243, 147, 36, 65, 82, 66, 17, 7, 118, 111, 197, 159, 116, 114, 105, 84, 39, 91, 47, 16, 37,
+			0, 77, 0, 14, 66, 78, 192, 89, 13, 126, 124, 0, 72, 81, 109, 105, 32, 15, 66, 78, 192, 89, 13, 97, 124, 0, 72, 81, 197, 159,
+			105, 32, 11, 66, 78, 192, 89, 129, 0, 72, 81, 105, 32, 12, 66, 78, 192, 89, 13, 55, 0, 72, 81, 108, 32, 5, 194, 78, 192, 72,
+			5, 194, 14, 192, 76, 6, 194, 36, 224, 72, 28, 0, 0, 0, 7, 65, 176, 6, 13, 0, 49, 0, 0, 8, 197, 77, 5, 78, 20, 16,
+			66, 8, 197, 32, 242, 15, 80, 80, 65, 14, 69, 28, 243, 199, 48, 80, 81, 6, 40, 81, 13, 55, 0, 8, 197, 104, 34, 69, 72, 16,
+			66, 8, 197, 17, 82, 14, 20, 16, 66, 8, 197, 16, 145, 197, 72, 16, 67, 8, 197, 16, 81, 197, 72, 16, 67, 8, 197, 9, 80, 213,
+			72, 16, 67, 0, 7, 196, 48, 241, 201, 12, 65, 0, 8, 197, 36, 224, 77, 36, 48, 67, 8, 197, 12, 130, 77, 36, 48, 65, 6, 195,
+			12, 149, 9, 66, 6, 195, 65, 211, 172, 8, 0, 9, 198, 14, 193, 5, 72, 147, 5, 66, 7, 196, 4, 69, 78, 4, 67, 0, 8, 197,
+			88, 20, 201, 48, 80, 66, 8, 197, 56, 85, 5, 16, 80, 65, 8, 197, 52, 241, 5, 48, 80, 66, 8, 197, 32, 18, 1, 48, 80, 67,
+			8, 197, 16, 81, 197, 80, 80, 65, 8, 197, 12, 20, 5, 80, 80, 65, 8, 197, 5, 37, 5, 72, 16, 66, 8, 197, 77, 81, 197, 72,
+			16, 67, 11, 200, 72, 84, 18, 21, 161, 78, 80, 16, 68, 8, 197, 64, 194, 77, 8, 16, 66, 8, 197, 61, 33, 15, 56, 16, 67, 8,
+			197, 52, 241, 5, 72, 16, 67, 15, 69, 21, 99, 204, 84, 16, 36, 84, 39, 55, 58, 6, 35, 0, 7, 196, 13, 211, 148, 4, 66, 13,
+			69, 16, 242, 76, 20, 16, 72, 6, 120, 55, 135, 0, 8, 197, 52, 21, 1, 48, 80, 78, 0, 8, 197, 74, 193, 197, 80, 80, 65, 0,
+			20, 71, 76, 84, 150, 36, 50, 85, 48, 89, 36, 34, 84, 6, 37, 76, 57, 40, 55, 0, 0, 0, 8, 197, 88, 81, 5, 72, 144, 66,
+			8, 197, 72, 84, 5, 104, 144, 65, 8, 197, 65, 35, 208, 84, 144, 66, 8, 197, 64, 149, 9, 12, 144, 66, 8, 197, 64, 19, 9, 104,
+			144, 65, 8, 197, 48, 145, 5, 72, 144, 65, 21, 71, 16, 147, 172, 84, 229, 18, 84, 72, 37, 50, 13, 6, 40, 50, 47, 14, 16, 40,
+			0, 8, 197, 76, 100, 137, 40, 144, 66, 8, 197, 13, 80, 197, 72, 144, 67, 0, 0, 10, 67, 61, 43, 0, 6, 39, 34, 13, 0, 9,
+			198, 4, 49, 83, 80, 82, 65, 78, 0, 6, 195, 82, 194, 69, 66, 14, 66, 56, 80, 50, 135, 89, 0, 72, 81, 97, 197, 159, 32, 13,
+			66, 56, 80, 50, 135, 34, 0, 72, 81, 97, 114, 32, 13, 66, 56, 80, 50, 135, 65, 0, 72, 81, 97, 109, 32, 12, 137, 97, 197, 159,
+			116, 101, 114, 110, 101, 97, 67, 7, 196, 76, 84, 150, 36, 66, 5, 194, 56, 80, 72, 15, 66, 52, 112, 109, 105, 108, 105, 103, 114, 97,
+			109, 101, 0, 29, 0, 8, 197, 12, 194, 78, 80, 144, 66, 8, 197, 13, 85, 133, 56, 144, 67, 0, 9, 198, 64, 144, 212, 61, 34, 64,
+			65, 9, 198, 24, 16, 212, 61, 34, 64, 65, 9, 198, 4, 36, 207, 49, 98, 64, 68, 0, 18, 70, 24, 20, 134, 85, 34, 69, 83, 35,
+			34, 83, 40, 16, 6, 37, 36, 0, 0, 7, 196, 12, 83, 148, 84, 66, 0, 7, 196, 88, 81, 5, 72, 66, 7, 196, 72, 17, 1, 72,
+			65, 7, 196, 48, 145, 5, 72, 65, 0, 0, 0, 12, 66, 57, 80, 50, 40, 37, 0, 72, 81, 105, 32, 10, 199, 72, 85, 133, 72, 33,
+			82, 4, 68, 5, 194, 57, 80, 76, 19, 4, 95, 99, 105, 114, 76, 37, 34, 49, 40, 65, 83, 55, 6, 36, 49, 89, 0, 0, 7, 196,
+			64, 17, 201, 56, 65, 11, 200, 4, 67, 73, 56, 148, 212, 72, 16, 68, 0, 15, 4, 95, 48, 77, 52, 71, 37, 55, 6, 57, 138, 50,
+			36, 0, 0, 6, 195, 13, 84, 213, 66, 9, 198, 89, 211, 148, 85, 32, 64, 67, 9, 198, 152, 225, 137, 21, 32, 64, 67, 9, 198, 4,
+			203, 20, 85, 32, 64, 68, 16, 4, 95, 48, 77, 53, 71, 37, 55, 6, 57, 35, 34, 72, 36, 0, 0, 15, 4, 95, 48, 77, 50, 65,
+			37, 55, 6, 57, 138, 50, 36, 0, 0, 8, 197, 8, 244, 132, 20, 144, 66, 8, 197, 5, 4, 137, 28, 144, 65, 6, 195, 13, 83, 64,
+			8, 16, 4, 95, 48, 77, 51, 65, 37, 55, 6, 57, 35, 34, 72, 36, 0, 0, 12, 201, 72, 81, 67, 32, 147, 9, 9, 32, 64, 69,
+			0, 22, 72, 76, 83, 73, 65, 35, 196, 85, 48, 89, 36, 65, 37, 48, 16, 39, 72, 6, 40, 89, 0, 6, 195, 12, 84, 149, 66, 10,
+			198, 4, 203, 20, 85, 34, 64, 66, 28, 10, 4, 95, 48, 77, 49, 65, 6, 132, 0, 0, 7, 196, 84, 209, 90, 36, 65, 0, 8, 197,
+			64, 84, 5, 56, 144, 65, 15, 69, 44, 245, 133, 76, 144, 49, 6, 39, 84, 36, 91, 37, 0, 8, 197, 28, 150, 143, 72, 144, 65, 8,
+			197, 12, 243, 147, 84, 208, 66, 8, 197, 52, 148, 143, 76, 144, 67, 8, 197, 4, 67, 210, 52, 144, 67, 6, 195, 36, 20, 128, 8, 0,
+			9, 198, 89, 83, 20, 85, 34, 64, 65, 0, 7, 196, 16, 21, 137, 16, 65, 6, 195, 24, 84, 137, 66, 0, 13, 68, 13, 85, 9, 20,
+			49, 40, 47, 6, 37, 36, 0, 0, 10, 199, 66, 194, 65, 56, 161, 78, 36, 66, 6, 195, 52, 20, 143, 66, 7, 195, 88, 244, 128, 76,
+			32, 0, 0, 9, 198, 16, 84, 15, 104, 149, 5, 66, 9, 198, 53, 83, 54, 84, 210, 64, 67, 0, 9, 198, 152, 224, 201, 56, 113, 77,
+			66, 0, 8, 197, 53, 81, 197, 80, 80, 65, 16, 4, 95, 108, 105, 103, 55, 37, 81, 35, 47, 6, 40, 34, 13, 0, 0, 0, 9, 198,
+			17, 83, 78, 20, 21, 1, 79, 0, 7, 196, 64, 21, 9, 52, 65, 0, 0, 0, 0, 7, 196, 48, 148, 19, 36, 66, 9, 194, 52, 144,
+			72, 81, 97, 114, 32, 9, 194, 52, 144, 72, 81, 97, 105, 32, 9, 194, 52, 144, 72, 81, 97, 109, 32, 13, 66, 52, 144, 65, 37, 4,
+			36, 0, 72, 81, 101, 32, 5, 194, 52, 144, 72, 29, 66, 44, 208, 49, 37, 55, 39, 65, 6, 36, 47, 14, 16, 37, 11, 48, 36, 15,
+			6, 39, 34, 13, 0, 82, 47, 32, 104, 32, 15, 66, 44, 208, 107, 105, 108, 111, 109, 101, 116, 114, 105, 0, 29, 0, 15, 6, 197, 159,
+			101, 102, 105, 97, 91, 36, 83, 6, 37, 35, 0, 0, 7, 196, 12, 240, 207, 76, 65, 0, 0, 9, 198, 152, 229, 137, 56, 113, 65, 67,
+			0, 17, 68, 16, 147, 148, 72, 72, 37, 50, 47, 14, 34, 39, 0, 81, 111, 32, 0, 10, 199, 152, 237, 133, 48, 81, 197, 4, 68, 0,
+			8, 197, 12, 244, 205, 61, 48, 65, 9, 198, 72, 81, 197, 56, 84, 129, 68, 8, 197, 74, 197, 44, 12, 144, 67, 8, 197, 74, 197, 44,
+			12, 144, 67, 17, 70, 152, 227, 15, 13, 82, 64, 112, 50, 55, 39, 49, 40, 6, 37, 0, 0, 17, 70, 77, 84, 144, 49, 84, 192, 89,
+			40, 16, 48, 55, 6, 40, 89, 0, 10, 199, 77, 80, 143, 72, 66, 78, 20, 66, 9, 198, 74, 195, 93, 56, 83, 64, 66, 10, 199, 88,
+			150, 149, 4, 194, 90, 4, 68, 0, 0, 0, 9, 198, 48, 149, 5, 72, 21, 21, 68, 9, 198, 72, 80, 213, 64, 84, 129, 68, 9, 198,
+			48, 81, 201, 24, 84, 129, 68, 9, 198, 16, 83, 9, 8, 84, 129, 68, 9, 198, 16, 81, 197, 56, 84, 129, 68, 0, 7, 196, 8, 21,
+			5, 52, 65, 7, 196, 76, 197, 74, 36, 66, 0, 8, 197, 56, 85, 5, 104, 144, 65, 0, 10, 199, 88, 147, 143, 90, 205, 137, 36, 68,
+			0, 9, 198, 64, 20, 193, 28, 84, 137, 67, 6, 195, 5, 36, 213, 66, 9, 198, 152, 212, 12, 36, 226, 64, 67, 0, 6, 195, 66, 196,
+			193, 66, 0, 8, 197, 4, 225, 18, 20, 144, 66, 7, 196, 64, 203, 20, 36, 66, 9, 198, 152, 212, 44, 81, 84, 137, 69, 0, 7, 196,
+			74, 195, 93, 36, 66, 0, 9, 198, 36, 229, 5, 72, 84, 193, 68, 0, 13, 68, 64, 149, 73, 20, 48, 6, 37, 40, 37, 36, 0, 7,
+			196, 72, 148, 195, 4, 66, 0, 7, 196, 5, 97, 118, 36, 76, 6, 195, 77, 80, 128, 28, 0, 0, 8, 197, 152, 229, 172, 218, 192, 67,
+			0, 10, 199, 66, 196, 148, 36, 50, 67, 176, 67, 7, 196, 20, 97, 77, 20, 67, 0, 0, 8, 197, 104, 37, 82, 176, 208, 66, 0, 9,
+			198, 65, 33, 79, 13, 84, 1, 67, 0, 7, 196, 36, 229, 9, 52, 65, 7, 196, 5, 33, 5, 52, 65, 0, 11, 67, 61, 5, 83, 39,
+			48, 6, 40, 89, 0, 11, 67, 5, 5, 83, 35, 48, 6, 40, 89, 0, 9, 198, 5, 11, 18, 177, 34, 73, 67, 0, 14, 4, 95, 99,
+			101, 100, 89, 36, 72, 6, 37, 55, 13, 0, 0, 0, 5, 194, 56, 144, 72, 9, 198, 58, 196, 21, 77, 65, 65, 67, 6, 194, 64, 80,
+			72, 28, 0, 9, 134, 197, 159, 111, 115, 101, 97, 66, 0, 0, 8, 197, 52, 20, 137, 85, 48, 65, 6, 195, 16, 244, 137, 66, 9, 198,
+			16, 84, 203, 80, 244, 0, 65, 7, 196, 16, 81, 197, 80, 65, 7, 196, 13, 81, 197, 80, 65, 18, 70, 12, 243, 148, 36, 229, 65, 49,
+			39, 50, 47, 37, 50, 58, 6, 35, 0, 0, 0, 8, 197, 25, 32, 67, 81, 80, 66, 9, 198, 152, 224, 210, 23, 97, 65, 67, 0, 11,
+			200, 4, 192, 76, 82, 194, 69, 72, 144, 66, 0, 7, 196, 85, 35, 5, 80, 65, 7, 196, 81, 83, 133, 80, 65, 16, 69, 81, 32, 68,
+			85, 48, 47, 14, 16, 35, 72, 6, 40, 89, 0, 12, 67, 80, 22, 9, 47, 6, 35, 49, 89, 37, 0, 7, 196, 77, 83, 133, 80, 65,
+			16, 69, 17, 32, 68, 85, 48, 47, 14, 16, 35, 72, 6, 40, 89, 0, 9, 198, 76, 51, 9, 24, 244, 201, 67, 0, 9, 198, 104, 119,
+			82, 36, 85, 21, 68, 9, 198, 77, 68, 157, 56, 113, 77, 65, 0, 15, 69, 76, 84, 135, 37, 80, 89, 6, 36, 34, 75, 57, 40, 0,
+			0, 17, 4, 95, 99, 97, 112, 65, 35, 90, 40, 89, 49, 6, 40, 55, 13, 0, 0, 9, 198, 12, 20, 137, 12, 21, 21, 68, 0, 8,
+			196, 65, 85, 5, 52, 76, 32, 0, 9, 198, 152, 224, 236, 36, 84, 129, 68, 0, 12, 201, 20, 98, 67, 36, 83, 148, 37, 160, 64, 69,
+			0, 0, 15, 66, 52, 192, 109, 105, 108, 105, 108, 105, 116, 114, 105, 0, 29, 0, 0, 0, 6, 195, 84, 193, 73, 66, 0, 13, 68, 88,
+			242, 76, 4, 84, 40, 35, 55, 6, 35, 0, 8, 197, 28, 84, 129, 72, 64, 65, 7, 196, 21, 64, 76, 4, 67, 8, 3, 95, 196, 131,
+			6, 13, 0, 0, 0, 8, 197, 65, 83, 133, 216, 144, 65, 13, 3, 197, 159, 105, 91, 124, 35, 0, 72, 81, 97, 32, 9, 198, 81, 34,
+			85, 52, 96, 64, 67, 9, 198, 28, 84, 141, 36, 224, 64, 67, 9, 198, 21, 128, 77, 36, 224, 64, 68, 9, 198, 12, 19, 3, 84, 192,
+			64, 67, 9, 198, 5, 48, 213, 49, 64, 64, 67, 9, 198, 4, 53, 77, 84, 192, 64, 68, 6, 131, 197, 159, 105, 72, 0, 9, 198, 81,
+			33, 67, 23, 98, 64, 65, 17, 70, 77, 5, 78, 23, 98, 64, 89, 48, 6, 40, 50, 36, 123, 124, 0, 11, 67, 52, 147, 73, 65, 6,
+			37, 65, 37, 0, 9, 198, 12, 243, 148, 72, 243, 1, 67, 11, 136, 195, 174, 110, 197, 159, 101, 108, 97, 67, 0, 9, 198, 152, 229, 9,
+			56, 65, 77, 66, 0, 0, 7, 196, 48, 17, 236, 72, 65, 9, 198, 40, 20, 15, 56, 144, 64, 66, 9, 198, 152, 224, 197, 72, 59, 0,
+			67, 9, 198, 21, 132, 5, 16, 144, 64, 67, 9, 198, 17, 84, 133, 72, 80, 64, 66, 9, 198, 72, 84, 12, 36, 48, 64, 67, 9, 198,
+			56, 147, 69, 72, 80, 64, 67, 9, 198, 21, 132, 12, 36, 48, 64, 67, 9, 198, 16, 245, 133, 16, 80, 64, 67, 9, 198, 104, 80, 197,
+			48, 80, 64, 65, 9, 198, 61, 5, 21, 48, 80, 64, 65, 0, 9, 198, 152, 224, 197, 64, 83, 64, 66, 9, 198, 28, 19, 2, 20, 226,
+			73, 65, 0, 0, 0, 0, 9, 198, 152, 225, 210, 61, 162, 64, 67, 9, 198, 8, 193, 83, 80, 83, 65, 67, 6, 195, 24, 16, 197, 76,
+			13, 3, 95, 195, 174, 4, 112, 72, 37, 50, 6, 37, 0, 0, 7, 196, 72, 244, 212, 36, 66, 5, 194, 76, 16, 76, 15, 66, 52, 208,
+			109, 105, 108, 105, 109, 101, 116, 114, 105, 0, 29, 0, 7, 196, 216, 147, 133, 4, 66, 7, 196, 66, 198, 133, 4, 66, 0, 23, 72, 77,
+			84, 18, 20, 208, 118, 36, 80, 89, 40, 48, 14, 16, 36, 65, 35, 123, 6, 37, 36, 0, 9, 198, 72, 245, 15, 12, 243, 0, 67, 9,
+			198, 13, 85, 157, 57, 75, 0, 67, 0, 8, 197, 29, 32, 84, 37, 48, 65, 9, 198, 16, 84, 201, 29, 84, 128, 66, 0, 12, 68, 5,
+			84, 137, 84, 35, 40, 16, 6, 116, 0, 12, 137, 99, 117, 110, 111, 197, 159, 116, 101, 97, 67, 0, 10, 199, 152, 225, 200, 36, 243, 148,
+			36, 67, 8, 197, 88, 244, 212, 73, 80, 76, 8, 197, 56, 244, 212, 73, 80, 77, 0, 0, 9, 198, 81, 32, 71, 23, 98, 64, 65, 9,
+			198, 52, 84, 135, 23, 98, 64, 65, 9, 198, 21, 2, 83, 12, 244, 0, 66, 9, 198, 4, 193, 71, 23, 98, 64, 66, 9, 198, 4, 69,
+			67, 23, 98, 64, 66, 0, 9, 198, 152, 224, 200, 36, 65, 77, 66, 9, 198, 21, 132, 12, 61, 43, 13, 67, 0, 8, 197, 13, 33, 65,
+			81, 80, 67, 8, 197, 4, 192, 137, 81, 80, 67, 0, 16, 70, 84, 225, 200, 37, 83, 0, 6, 40, 50, 81, 57, 40, 55, 0, 10, 199,
+			152, 225, 210, 176, 66, 84, 84, 68, 0, 24, 73, 16, 147, 148, 61, 65, 5, 5, 83, 129, 72, 37, 50, 47, 39, 47, 72, 135, 6, 40,
+			50, 35, 0, 13, 3, 95, 195, 162, 4, 112, 72, 37, 50, 6, 35, 0, 0, 9, 198, 4, 71, 78, 12, 149, 21, 68, 0, 7, 196, 14,
+			196, 195, 4, 66, 0, 0, 9, 198, 74, 196, 195, 60, 194, 64, 67, 0, 7, 196, 73, 212, 197, 80, 65, 7, 196, 65, 83, 133, 52, 65,
+			7, 196, 80, 144, 211, 36, 66, 0, 0, 9, 198, 48, 147, 135, 85, 43, 0, 65, 7, 196, 24, 150, 137, 12, 65, 0, 0, 9, 198, 64,
+			243, 15, 56, 144, 192, 67, 7, 196, 60, 97, 82, 20, 66, 7, 196, 52, 19, 148, 4, 66, 8, 197, 48, 21, 21, 74, 192, 65, 7, 196,
+			14, 197, 84, 176, 67, 9, 198, 8, 148, 197, 72, 144, 192, 66, 9, 198, 4, 209, 83, 80, 80, 192, 66, 8, 197, 4, 193, 82, 30, 192,
+			66, 0, 11, 67, 21, 32, 64, 57, 36, 16, 35, 0, 78, 0, 6, 195, 73, 83, 44, 66, 9, 198, 76, 50, 9, 52, 32, 64, 66, 9,
+			198, 16, 84, 197, 52, 224, 64, 67, 0, 7, 196, 81, 84, 142, 176, 66, 0, 7, 196, 60, 53, 80, 4, 67, 7, 196, 4, 165, 84, 4,
+			67, 18, 70, 61, 34, 67, 177, 37, 73, 39, 16, 124, 49, 13, 34, 40, 37, 0, 79, 0, 13, 138, 99, 117, 110, 111, 97, 197, 159, 116,
+			101, 109, 66, 6, 195, 5, 33, 64, 76, 0, 8, 197, 80, 84, 141, 20, 224, 65, 9, 198, 12, 19, 129, 64, 80, 64, 67, 9, 198, 4,
+			209, 82, 36, 48, 64, 66, 9, 198, 72, 85, 133, 56, 80, 64, 67, 9, 198, 56, 147, 73, 12, 80, 64, 67, 18, 70, 5, 4, 133, 12,
+			144, 64, 35, 48, 14, 16, 36, 76, 57, 6, 35, 0, 8, 197, 56, 144, 201, 84, 224, 77, 0, 11, 67, 60, 219, 20, 39, 65, 6, 13,
+			47, 0, 10, 67, 4, 128, 65, 35, 107, 6, 35, 0, 12, 67, 16, 16, 193, 72, 35, 49, 13, 0, 72, 8, 0, 7, 196, 60, 51, 204,
+			36, 67, 12, 137, 99, 196, 131, 112, 116, 117, 197, 159, 105, 67, 0, 7, 196, 61, 32, 129, 56, 65, 0, 8, 197, 80, 84, 141, 36, 224,
+			65, 8, 197, 8, 20, 141, 4, 224, 65, 0, 14, 69, 8, 16, 203, 85, 0, 71, 6, 36, 49, 35, 48, 0, 8, 197, 4, 51, 208, 177,
+			32, 66, 12, 201, 8, 147, 133, 13, 85, 157, 57, 64, 64, 69, 0, 9, 66, 60, 176, 39, 49, 6, 118, 0, 8, 197, 24, 245, 2, 4,
+			192, 65, 5, 194, 80, 16, 76, 0, 7, 196, 61, 48, 193, 72, 65, 7, 196, 48, 20, 197, 72, 65, 9, 198, 12, 85, 44, 217, 82, 69,
+			67, 7, 196, 106, 192, 197, 4, 66, 7, 196, 78, 196, 133, 4, 66, 7, 196, 74, 192, 197, 4, 66, 7, 196, 66, 196, 133, 4, 66, 7,
+			196, 30, 196, 197, 4, 66, 7, 196, 26, 192, 197, 4, 66, 0, 0, 6, 195, 84, 225, 73, 73, 0, 6, 195, 89, 211, 129, 66, 0, 7,
+			196, 36, 193, 143, 88, 65, 7, 196, 9, 80, 213, 72, 65, 7, 196, 4, 213, 118, 36, 67, 0, 8, 197, 80, 83, 69, 216, 144, 65, 0,
+			0, 10, 199, 65, 85, 5, 72, 226, 67, 36, 66, 9, 198, 13, 39, 78, 12, 83, 133, 65, 9, 198, 152, 225, 210, 21, 83, 129, 68, 0,
+			7, 196, 61, 33, 9, 56, 65, 0, 8, 197, 76, 20, 131, 36, 224, 65, 0, 0, 9, 197, 5, 53, 6, 20, 192, 65, 8, 0, 7, 196,
+			152, 225, 67, 4, 67, 0, 6, 195, 60, 51, 204, 66, 0, 9, 198, 65, 211, 148, 20, 49, 64, 65, 9, 198, 30, 197, 82, 36, 49, 64,
+			66, 9, 198, 13, 211, 148, 20, 49, 64, 65, 0, 10, 199, 12, 192, 83, 36, 98, 67, 4, 68, 0, 0, 11, 67, 56, 245, 108, 50, 6,
+			39, 40, 13, 0, 0, 6, 195, 56, 144, 201, 8, 0, 6, 195, 216, 147, 149, 66, 7, 196, 64, 241, 5, 4, 66, 7, 196, 77, 81, 197,
+			4, 66, 7, 196, 64, 195, 213, 4, 66, 13, 4, 95, 103, 114, 118, 81, 14, 16, 6, 35, 84, 0, 0, 8, 197, 13, 211, 133, 66, 192,
+			65, 0, 9, 198, 65, 35, 208, 36, 49, 64, 66, 9, 198, 21, 132, 12, 36, 49, 64, 66, 11, 67, 16, 245, 108, 72, 6, 39, 40, 13,
+			0, 0, 0, 7, 196, 80, 83, 69, 4, 66, 0, 0, 11, 67, 72, 80, 76, 34, 36, 6, 35, 55, 0, 7, 196, 57, 83, 108, 72, 65,
+			7, 196, 48, 22, 172, 72, 65, 9, 198, 36, 208, 71, 36, 235, 0, 67, 0, 8, 197, 152, 229, 5, 216, 144, 67, 8, 197, 152, 228, 213,
+			216, 144, 77, 0, 10, 199, 24, 147, 15, 104, 241, 137, 36, 68, 0, 8, 197, 72, 81, 213, 48, 144, 65, 10, 199, 65, 34, 67, 21, 1,
+			118, 36, 66, 9, 198, 106, 193, 44, 72, 226, 73, 68, 0, 11, 200, 16, 84, 195, 32, 145, 5, 216, 144, 66, 0, 6, 195, 4, 49, 65,
+			78, 0, 10, 199, 72, 80, 213, 56, 244, 195, 84, 67, 5, 194, 76, 80, 72, 0, 7, 196, 77, 84, 5, 72, 65, 0, 14, 203, 12, 20,
+			129, 13, 65, 82, 20, 193, 76, 61, 32, 67, 14, 69, 8, 19, 142, 21, 32, 71, 6, 36, 50, 13, 34, 0, 0, 9, 198, 65, 35, 196,
+			84, 49, 65, 67, 9, 198, 65, 33, 90, 36, 49, 65, 67, 9, 198, 64, 245, 18, 37, 97, 65, 67, 9, 198, 64, 84, 141, 37, 65, 65,
+			67, 9, 198, 12, 243, 132, 84, 49, 65, 67, 0, 7, 196, 81, 33, 67, 84, 66, 8, 197, 77, 2, 82, 37, 64, 65, 7, 196, 28, 192,
+			90, 84, 66, 17, 70, 5, 4, 143, 64, 244, 192, 35, 48, 14, 16, 39, 48, 6, 39, 0, 0, 7, 196, 81, 81, 15, 72, 65, 0, 9,
+			198, 60, 34, 67, 20, 149, 64, 67, 0, 6, 195, 85, 35, 137, 66, 0, 6, 195, 18, 193, 21, 66, 8, 197, 12, 195, 195, 61, 64, 65,
+			0, 7, 196, 216, 147, 133, 52, 65, 9, 198, 152, 212, 44, 75, 98, 64, 67, 0, 0, 9, 198, 89, 83, 20, 85, 34, 73, 65, 8, 197,
+			216, 147, 133, 216, 144, 65, 0, 10, 199, 37, 3, 195, 72, 150, 137, 36, 68, 10, 199, 4, 212, 212, 21, 33, 1, 52, 65, 9, 198, 152,
+			225, 200, 39, 98, 64, 67, 9, 198, 152, 224, 210, 23, 98, 64, 67, 0, 8, 197, 105, 211, 66, 21, 64, 65, 8, 197, 73, 211, 138, 21,
+			64, 65, 10, 199, 64, 85, 18, 20, 49, 118, 36, 66, 7, 196, 53, 211, 131, 4, 66, 13, 2, 194, 169, 49, 6, 35, 48, 37, 34, 117,
+			47, 0, 0, 0, 7, 196, 48, 147, 149, 96, 65, 7, 2, 197, 159, 91, 36, 0, 0, 15, 67, 84, 67, 82, 117, 100, 101, 109, 101, 114,
+			39, 101, 0, 29, 0, 0, 6, 195, 84, 209, 68, 65, 7, 196, 4, 123, 54, 4, 67, 0, 6, 195, 72, 80, 201, 65, 9, 198, 52, 146,
+			140, 60, 16, 197, 65, 6, 195, 16, 80, 201, 8, 0, 7, 196, 12, 17, 133, 4, 66, 7, 196, 89, 35, 201, 4, 66, 11, 2, 194, 176,
+			81, 14, 16, 35, 72, 36, 0, 0, 9, 198, 29, 209, 221, 48, 144, 197, 67, 0, 9, 198, 52, 84, 212, 20, 49, 64, 65, 9, 198, 52,
+			21, 18, 36, 49, 64, 66, 9, 198, 12, 84, 130, 36, 49, 64, 66, 0, 10, 67, 12, 80, 73, 76, 6, 135, 57, 0, 0, 7, 196, 28,
+			243, 133, 4, 66, 0, 10, 67, 88, 145, 64, 84, 6, 37, 36, 0, 7, 196, 82, 196, 137, 36, 65, 7, 196, 60, 45, 137, 36, 66, 11,
+			67, 24, 145, 64, 83, 6, 37, 36, 0, 72, 0, 9, 198, 80, 16, 129, 12, 129, 64, 67, 12, 201, 64, 20, 148, 20, 225, 82, 20, 193,
+			64, 67, 9, 198, 48, 147, 80, 20, 65, 64, 65, 9, 198, 25, 32, 71, 20, 65, 64, 65, 12, 201, 12, 20, 129, 13, 65, 82, 20, 193,
+			64, 67, 0, 0, 0, 0, 0, 6, 195, 77, 81, 1, 66, 7, 195, 12, 81, 65, 72, 28, 0, 14, 66, 80, 80, 47, 135, 91, 0, 72,
+			81, 97, 197, 159, 32, 13, 66, 80, 80, 47, 135, 34, 0, 72, 81, 97, 114, 32, 13, 66, 80, 80, 47, 135, 57, 0, 72, 81, 97, 105,
+			32, 13, 66, 80, 80, 47, 135, 65, 0, 72, 81, 97, 109, 32, 13, 68, 5, 32, 213, 36, 35, 34, 49, 40, 6, 37, 0, 6, 194, 88,
+			16, 76, 32, 5, 194, 80, 80, 72, 0, 10, 67, 4, 50, 64, 35, 76, 6, 37, 0, 8, 67, 88, 146, 64, 84, 132, 0, 0, 8, 197,
+			76, 84, 150, 21, 32, 65, 11, 200, 56, 244, 212, 36, 210, 76, 61, 32, 65, 0, 9, 198, 5, 49, 77, 20, 225, 65, 66, 9, 198, 5,
+			48, 213, 56, 65, 65, 67, 9, 198, 12, 147, 131, 36, 193, 65, 65, 9, 198, 64, 21, 18, 84, 193, 65, 65, 0, 8, 197, 72, 240, 133,
+			73, 64, 65, 0, 0, 17, 70, 12, 192, 85, 16, 149, 64, 49, 55, 35, 6, 40, 72, 57, 40, 0, 9, 198, 12, 20, 9, 80, 243, 0,
+			66, 9, 198, 8, 17, 10, 60, 53, 64, 67, 6, 195, 77, 83, 148, 76, 6, 195, 77, 83, 148, 76, 0, 7, 195, 13, 211, 132, 72, 8,
+			0, 8, 197, 13, 33, 68, 37, 64, 65, 5, 194, 81, 80, 76, 0, 0, 9, 198, 88, 82, 9, 13, 83, 0, 66, 8, 197, 85, 48, 236,
+			81, 80, 67, 9, 198, 65, 35, 195, 20, 69, 64, 67, 0, 0, 20, 71, 56, 144, 201, 16, 80, 213, 52, 50, 37, 76, 124, 72, 36, 49,
+			6, 40, 65, 0, 0, 13, 138, 197, 159, 116, 101, 114, 103, 101, 197, 163, 105, 65, 0, 0, 0, 7, 196, 13, 85, 9, 36, 66, 9, 198,
+			4, 75, 16, 61, 53, 9, 68, 0, 9, 198, 14, 196, 236, 80, 244, 137, 68, 0, 0, 0, 9, 198, 76, 103, 82, 80, 80, 193, 67, 8,
+			197, 152, 235, 12, 216, 16, 67, 7, 196, 4, 49, 76, 20, 78, 6, 195, 84, 227, 210, 73, 0, 8, 197, 64, 148, 201, 12, 16, 66, 8,
+			197, 52, 83, 129, 40, 80, 67, 8, 197, 54, 197, 21, 74, 192, 65, 8, 197, 48, 21, 9, 12, 80, 66, 8, 197, 16, 19, 66, 48, 16,
+			66, 8, 197, 16, 148, 197, 12, 16, 67, 8, 197, 4, 98, 82, 52, 16, 67, 0, 9, 198, 81, 33, 77, 85, 43, 0, 65, 7, 196, 72,
+			145, 9, 12, 66, 9, 198, 16, 243, 78, 39, 107, 0, 66, 7, 196, 5, 4, 137, 28, 65, 0, 9, 198, 105, 211, 66, 21, 65, 64, 65,
+			9, 198, 73, 211, 138, 21, 65, 64, 65, 9, 198, 74, 192, 206, 21, 65, 64, 65, 11, 136, 195, 174, 110, 114, 111, 197, 159, 105, 67, 11,
+			136, 195, 174, 110, 114, 111, 197, 159, 105, 67, 0, 7, 196, 104, 37, 82, 4, 66, 7, 196, 77, 1, 82, 4, 66, 9, 198, 152, 225, 18,
+			21, 5, 1, 67, 0, 8, 197, 77, 69, 68, 36, 80, 66, 8, 197, 64, 244, 9, 12, 80, 66, 8, 197, 48, 147, 73, 80, 80, 65, 8,
+			197, 28, 83, 69, 80, 80, 65, 8, 197, 76, 51, 212, 20, 16, 66, 8, 197, 52, 84, 137, 80, 16, 67, 8, 197, 36, 228, 197, 72, 16,
+			67, 8, 197, 4, 225, 193, 40, 16, 67, 0, 0, 9, 198, 88, 82, 9, 13, 83, 5, 66, 11, 67, 4, 34, 65, 35, 71, 57, 6, 35,
+			0, 0, 7, 196, 65, 34, 86, 36, 67, 0, 0, 9, 198, 72, 245, 21, 56, 162, 64, 67, 0, 11, 67, 36, 194, 69, 37, 55, 6, 37,
+			36, 0, 6, 195, 82, 194, 64, 76, 0, 21, 9, 118, 101, 197, 159, 110, 105, 99, 105, 101, 84, 36, 91, 50, 37, 76, 6, 37, 36, 0,
+			9, 198, 76, 59, 4, 21, 33, 65, 66, 0, 9, 198, 152, 224, 236, 49, 161, 65, 67, 8, 197, 4, 210, 78, 80, 144, 67, 0, 9, 198,
+			60, 227, 198, 72, 82, 64, 67, 9, 198, 60, 19, 69, 56, 146, 64, 65, 9, 198, 56, 21, 21, 72, 146, 64, 67, 10, 199, 152, 224, 236,
+			64, 84, 133, 4, 67, 9, 198, 20, 225, 82, 28, 146, 64, 15, 0, 11, 67, 4, 144, 201, 35, 6, 37, 76, 124, 0, 0, 7, 196, 72,
+			84, 212, 84, 65, 9, 198, 13, 39, 78, 12, 83, 137, 65, 0, 10, 199, 152, 225, 5, 64, 194, 78, 36, 68, 7, 195, 64, 245, 0, 76,
+			32, 0, 8, 197, 48, 81, 148, 21, 32, 65, 0, 9, 198, 49, 80, 210, 177, 69, 64, 67, 8, 197, 14, 198, 172, 81, 80, 67, 9, 198,
+			13, 212, 144, 37, 69, 64, 67, 9, 198, 5, 5, 67, 177, 69, 64, 68, 9, 198, 4, 69, 78, 177, 69, 64, 68, 0, 9, 198, 85, 53,
+			21, 74, 197, 21, 68, 9, 198, 85, 38, 137, 14, 197, 21, 68, 9, 198, 5, 37, 78, 14, 197, 21, 68, 9, 198, 4, 194, 78, 82, 197,
+			21, 68, 9, 198, 4, 193, 82, 30, 197, 21, 68, 0, 0, 8, 197, 25, 39, 78, 81, 80, 66, 11, 200, 16, 84, 195, 32, 150, 172, 81,
+			80, 68, 0, 12, 201, 36, 225, 146, 5, 53, 18, 84, 53, 21, 68, 10, 199, 152, 224, 236, 72, 59, 20, 84, 68, 9, 198, 28, 80, 77,
+			4, 225, 21, 67, 0, 9, 198, 64, 20, 148, 20, 225, 82, 67, 7, 196, 81, 33, 90, 36, 66, 0, 8, 197, 60, 19, 69, 56, 144, 65,
+			8, 197, 28, 83, 69, 56, 144, 65, 0, 11, 200, 4, 209, 83, 80, 80, 236, 81, 80, 69, 11, 200, 152, 228, 133, 28, 148, 212, 72, 16,
+			68, 0, 6, 195, 78, 194, 64, 76, 0, 0, 8, 197, 52, 84, 135, 20, 208, 65, 8, 197, 12, 244, 212, 84, 208, 66, 8, 197, 56, 147,
+			69, 56, 144, 77, 0, 16, 69, 21, 131, 212, 36, 48, 36, 81, 88, 6, 39, 47, 37, 49, 0, 6, 195, 72, 85, 137, 66, 0, 19, 70,
+			76, 84, 150, 36, 50, 85, 89, 36, 34, 84, 6, 37, 76, 6, 57, 40, 0, 7, 196, 13, 83, 86, 4, 66, 7, 196, 4, 130, 76, 20,
+			66, 0, 8, 197, 72, 145, 9, 12, 80, 66, 8, 197, 4, 38, 137, 12, 80, 66, 8, 197, 81, 33, 67, 20, 16, 66, 8, 197, 60, 97,
+			82, 20, 16, 67, 8, 197, 12, 243, 147, 80, 16, 66, 8, 197, 5, 3, 5, 12, 16, 67, 8, 197, 4, 37, 82, 20, 16, 66, 0, 9,
+			198, 74, 196, 208, 116, 225, 9, 67, 0, 11, 67, 52, 19, 73, 65, 6, 35, 65, 37, 0, 8, 197, 16, 83, 154, 36, 48, 66, 0, 12,
+			201, 65, 33, 84, 85, 66, 78, 16, 83, 137, 67, 7, 196, 4, 65, 82, 4, 67, 18, 70, 61, 34, 67, 177, 33, 73, 39, 16, 124, 49,
+			13, 34, 36, 37, 0, 79, 0, 8, 197, 36, 229, 9, 52, 80, 65, 8, 197, 8, 83, 7, 36, 16, 65, 8, 197, 52, 83, 79, 72, 16,
+			67, 8, 197, 16, 243, 73, 56, 16, 67, 8, 197, 16, 84, 149, 48, 16, 67, 8, 197, 16, 80, 149, 80, 16, 67, 0, 0, 9, 198, 88,
+			144, 212, 61, 34, 73, 66, 11, 136, 115, 116, 114, 111, 112, 197, 159, 105, 66, 0, 6, 195, 4, 49, 76, 76, 0, 8, 197, 77, 68, 137,
+			88, 144, 66, 0, 9, 198, 76, 20, 131, 36, 226, 64, 65, 9, 198, 52, 20, 135, 36, 226, 64, 65, 9, 198, 16, 83, 211, 20, 34, 64,
+			67, 0, 6, 195, 84, 219, 18, 65, 6, 195, 88, 242, 65, 66, 0, 18, 70, 34, 196, 142, 36, 50, 69, 107, 13, 34, 50, 37, 76, 6,
+			37, 36, 0, 0, 15, 69, 64, 20, 143, 16, 144, 48, 35, 16, 39, 72, 6, 37, 0, 8, 197, 60, 52, 143, 80, 144, 67, 0, 9, 198,
+			80, 84, 129, 64, 146, 64, 67, 0, 6, 195, 48, 245, 137, 66, 0, 10, 135, 97, 99, 101, 108, 97, 197, 159, 66, 0, 0, 0, 11, 67,
+			80, 21, 9, 47, 6, 35, 47, 37, 0, 9, 198, 76, 59, 4, 21, 33, 64, 66, 9, 198, 64, 203, 3, 21, 33, 64, 66, 6, 195, 49,
+			82, 64, 76, 6, 195, 4, 49, 73, 76, 0, 15, 2, 95, 34, 81, 107, 37, 55, 37, 65, 6, 36, 55, 36, 0, 0, 14, 139, 109, 101,
+			115, 97, 103, 101, 114, 196, 131, 36, 50, 66, 13, 68, 18, 196, 149, 36, 72, 13, 16, 58, 6, 37, 0, 16, 2, 95, 33, 36, 49, 89,
+			49, 55, 35, 65, 6, 35, 16, 36, 0, 0, 7, 196, 90, 196, 149, 48, 65, 8, 197, 84, 149, 44, 81, 80, 67, 5, 194, 152, 144, 72,
+			0, 11, 136, 100, 101, 115, 108, 117, 197, 159, 105, 67, 15, 2, 95, 39, 35, 48, 39, 89, 47, 14, 16, 6, 39, 83, 0, 0, 7, 196,
+			88, 244, 130, 36, 66, 7, 196, 64, 244, 142, 36, 66, 0, 8, 197, 56, 244, 212, 36, 208, 65, 8, 197, 13, 32, 84, 36, 208, 65, 6,
+			195, 4, 210, 67, 66, 8, 197, 37, 53, 15, 88, 144, 67, 8, 197, 16, 245, 133, 16, 144, 67, 0, 9, 198, 36, 208, 71, 36, 226, 64,
+			66, 24, 73, 25, 32, 78, 44, 83, 147, 80, 82, 78, 83, 34, 6, 35, 50, 49, 36, 50, 91, 47, 117, 50, 0, 19, 70, 12, 243, 80,
+			85, 65, 82, 49, 39, 65, 48, 6, 57, 40, 47, 13, 34, 0, 0, 0, 13, 68, 48, 21, 90, 36, 55, 6, 35, 40, 88, 124, 0, 0,
+			8, 197, 80, 84, 129, 64, 144, 15, 8, 197, 64, 148, 201, 12, 144, 66, 8, 197, 13, 33, 68, 20, 208, 65, 8, 197, 8, 149, 143, 48,
+			144, 65, 8, 197, 4, 193, 71, 20, 208, 66, 8, 197, 4, 69, 67, 20, 208, 66, 8, 197, 5, 69, 78, 12, 144, 8, 22, 2, 95, 41,
+			48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 9, 198, 17, 84, 133, 72, 146, 64, 66, 23, 2,
+			95, 40, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 72, 36, 89, 49, 6, 37, 89, 13, 0, 0, 12, 67, 26, 196, 172, 83, 4, 13,
+			34, 13, 0, 8, 0, 7, 196, 5, 5, 67, 4, 67, 0, 14, 2, 95, 45, 49, 14, 16, 6, 35, 47, 37, 65, 13, 0, 0, 13, 2,
+			95, 44, 84, 6, 37, 34, 81, 40, 55, 13, 0, 0, 9, 198, 81, 35, 211, 56, 85, 5, 65, 9, 198, 77, 64, 82, 61, 53, 5, 65,
+			9, 198, 17, 32, 71, 61, 53, 5, 65, 6, 195, 80, 244, 9, 66, 10, 2, 95, 51, 47, 14, 16, 6, 118, 0, 0, 11, 136, 197, 159,
+			110, 105, 197, 163, 101, 108, 65, 9, 198, 76, 59, 4, 21, 34, 73, 66, 7, 196, 8, 195, 195, 4, 67, 6, 195, 177, 53, 1, 77, 8,
+			2, 95, 50, 72, 6, 120, 0, 0, 9, 2, 95, 49, 6, 40, 50, 40, 0, 0, 8, 197, 60, 45, 137, 57, 80, 67, 10, 2, 95, 48,
+			88, 6, 36, 16, 39, 0, 0, 6, 195, 32, 147, 69, 66, 9, 198, 72, 84, 208, 20, 53, 1, 67, 9, 198, 24, 16, 201, 48, 149, 1,
+			68, 9, 198, 12, 243, 147, 80, 21, 1, 67, 11, 136, 97, 99, 101, 105, 97, 197, 159, 105, 66, 11, 2, 95, 55, 91, 6, 35, 48, 47,
+			36, 0, 0, 14, 68, 29, 33, 79, 36, 81, 14, 16, 36, 6, 39, 57, 0, 12, 137, 97, 99, 101, 108, 101, 97, 197, 159, 105, 66, 10,
+			2, 95, 54, 91, 6, 35, 89, 36, 0, 0, 8, 196, 36, 228, 213, 48, 65, 48, 11, 2, 95, 53, 76, 6, 37, 50, 76, 124, 0, 0,
+			12, 2, 95, 52, 48, 6, 35, 47, 14, 16, 40, 0, 0, 22, 2, 95, 59, 48, 6, 40, 50, 49, 47, 15, 91, 37, 84, 6, 37, 34,
+			81, 40, 55, 13, 0, 0, 7, 196, 52, 243, 9, 52, 65, 7, 196, 17, 80, 197, 52, 65, 7, 196, 4, 210, 67, 36, 66, 17, 2, 95,
+			58, 72, 39, 6, 40, 13, 48, 6, 40, 50, 49, 47, 36, 0, 0, 18, 70, 65, 34, 69, 80, 83, 128, 48, 14, 16, 57, 6, 36, 47,
+			36, 50, 0, 9, 2, 95, 57, 50, 6, 131, 13, 0, 0, 12, 201, 64, 20, 148, 20, 225, 82, 36, 195, 210, 67, 12, 201, 64, 20, 148,
+			20, 225, 82, 20, 195, 210, 67, 17, 70, 16, 148, 208, 48, 22, 64, 72, 37, 89, 48, 55, 6, 36, 57, 0, 9, 198, 4, 210, 67, 36,
+			195, 210, 66, 9, 2, 95, 56, 6, 39, 48, 47, 0, 0, 16, 2, 95, 63, 112, 50, 47, 14, 16, 36, 71, 6, 35, 16, 36, 0, 0,
+			18, 70, 53, 84, 132, 177, 34, 69, 65, 40, 34, 72, 13, 16, 6, 37, 36, 0, 9, 198, 65, 33, 70, 176, 49, 65, 67, 13, 2, 95,
+			62, 65, 117, 15, 65, 6, 35, 16, 36, 0, 0, 9, 198, 152, 208, 157, 13, 49, 65, 67, 0, 9, 198, 152, 212, 44, 75, 97, 65, 67,
+			12, 2, 95, 60, 65, 117, 15, 65, 6, 37, 49, 0, 0, 15, 69, 77, 84, 208, 85, 48, 89, 40, 89, 48, 6, 40, 89, 0, 9, 198,
+			64, 144, 212, 61, 34, 73, 65, 14, 69, 32, 147, 132, 85, 48, 37, 50, 72, 6, 40, 89, 0, 0, 0, 7, 196, 52, 84, 137, 80, 65,
+			8, 197, 13, 33, 83, 13, 80, 66, 7, 196, 10, 197, 84, 84, 67, 0, 8, 197, 152, 224, 197, 65, 80, 67, 14, 66, 216, 144, 123, 57,
+			39, 57, 0, 72, 81, 111, 105, 32, 14, 66, 216, 144, 123, 57, 35, 34, 0, 72, 81, 97, 114, 32, 14, 66, 216, 144, 123, 57, 35, 65,
+			0, 72, 81, 97, 109, 32, 13, 66, 216, 144, 123, 6, 57, 36, 0, 72, 81, 101, 32, 13, 66, 216, 144, 123, 57, 117, 0, 72, 81, 97,
+			105, 32, 13, 66, 216, 144, 123, 57, 114, 0, 72, 81, 97, 117, 32, 14, 66, 216, 144, 123, 57, 35, 34, 0, 72, 81, 97, 114, 32, 14,
+			66, 216, 144, 123, 57, 35, 65, 0, 72, 81, 97, 109, 32, 5, 194, 216, 144, 72, 0, 9, 198, 16, 81, 197, 72, 21, 21, 68, 16, 69,
+			14, 109, 137, 88, 16, 49, 112, 123, 124, 84, 6, 35, 0, 78, 0, 0, 8, 197, 65, 85, 5, 72, 144, 66, 11, 200, 52, 17, 201, 77,
+			68, 129, 81, 80, 68, 0, 9, 198, 76, 51, 193, 80, 83, 64, 65, 9, 198, 65, 33, 86, 20, 226, 64, 67, 0, 7, 196, 16, 83, 79,
+			56, 65, 12, 201, 16, 84, 195, 60, 228, 201, 16, 84, 129, 69, 0, 0, 9, 198, 44, 83, 5, 52, 83, 128, 65, 9, 134, 197, 159, 111,
+			112, 116, 105, 66, 14, 69, 61, 34, 67, 84, 144, 39, 16, 124, 49, 121, 0, 79, 0, 0, 0, 0, 0, 0, 0, 7, 196, 21, 99, 195,
+			4, 67, 7, 196, 49, 211, 135, 176, 28, 0, 0, 10, 135, 197, 159, 101, 110, 105, 108, 101, 66, 9, 198, 72, 84, 12, 36, 59, 0, 65,
+			10, 199, 152, 237, 133, 48, 81, 197, 52, 67, 9, 198, 24, 243, 133, 80, 144, 236, 66, 0, 9, 198, 9, 80, 213, 74, 195, 64, 67, 6,
+			195, 85, 35, 1, 66, 6, 195, 77, 83, 129, 66, 11, 67, 20, 193, 64, 57, 36, 55, 36, 0, 76, 0, 10, 199, 64, 20, 193, 28, 84,
+			137, 36, 67, 0, 0, 9, 198, 64, 145, 82, 16, 83, 64, 65, 9, 198, 36, 212, 12, 36, 59, 0, 66, 0, 9, 198, 4, 219, 18, 84,
+			145, 64, 67, 6, 195, 73, 83, 1, 66, 7, 195, 4, 193, 64, 72, 28, 24, 2, 95, 91, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13,
+			48, 13, 47, 14, 16, 6, 35, 47, 13, 0, 0, 12, 68, 56, 85, 143, 36, 50, 36, 84, 6, 120, 0, 7, 196, 52, 147, 137, 52, 65,
+			7, 196, 24, 16, 197, 52, 65, 6, 195, 4, 34, 76, 66, 9, 198, 16, 148, 208, 177, 33, 65, 67, 13, 68, 61, 53, 15, 36, 39, 89,
+			47, 39, 6, 37, 0, 0, 0, 7, 196, 152, 229, 29, 36, 66, 10, 135, 114, 101, 117, 197, 159, 101, 97, 67, 10, 199, 72, 89, 142, 81,
+			211, 14, 36, 68, 7, 66, 88, 144, 84, 37, 0, 0, 11, 136, 97, 99, 101, 197, 159, 116, 105, 97, 72, 15, 2, 95, 95, 89, 40, 71,
+			55, 37, 50, 57, 6, 35, 47, 0, 0, 12, 137, 100, 101, 112, 196, 131, 197, 159, 101, 97, 67, 0, 31, 2, 95, 93, 48, 35, 16, 35,
+			50, 47, 4, 36, 88, 13, 48, 13, 47, 14, 16, 6, 35, 47, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 14, 2, 95, 92, 71, 4,
+			36, 49, 89, 55, 6, 36, 91, 0, 0, 15, 69, 65, 35, 208, 85, 48, 48, 34, 39, 48, 6, 40, 89, 0, 15, 69, 65, 35, 196, 85,
+			48, 48, 16, 39, 72, 6, 40, 89, 0, 8, 197, 36, 229, 133, 73, 48, 65, 15, 69, 36, 224, 204, 85, 48, 37, 50, 49, 55, 6, 40,
+			89, 0, 15, 69, 21, 128, 204, 85, 48, 36, 101, 49, 55, 6, 40, 89, 0, 15, 69, 12, 243, 132, 85, 48, 49, 39, 50, 72, 6, 40,
+			89, 0, 15, 69, 12, 243, 80, 85, 48, 49, 39, 65, 48, 6, 40, 89, 0, 16, 69, 13, 221, 137, 88, 16, 49, 112, 123, 124, 84, 6,
+			35, 0, 78, 0, 6, 195, 66, 197, 21, 65, 0, 7, 196, 54, 196, 137, 36, 65, 8, 197, 37, 160, 137, 81, 80, 67, 10, 199, 152, 225,
+			140, 61, 34, 84, 84, 68, 6, 2, 95, 97, 35, 0, 0, 8, 197, 64, 144, 236, 81, 80, 67, 9, 198, 152, 208, 146, 176, 59, 0, 67,
+			8, 197, 8, 244, 172, 81, 80, 67, 10, 135, 197, 159, 117, 105, 101, 114, 97, 67, 9, 4, 95, 48, 111, 102, 72, 36, 0, 0, 9, 198,
+			52, 16, 213, 48, 21, 21, 68, 9, 198, 12, 192, 86, 36, 21, 21, 67, 9, 198, 4, 197, 3, 84, 213, 129, 67, 0, 9, 198, 152, 225,
+			21, 72, 84, 129, 68, 0, 6, 2, 95, 101, 36, 0, 0, 9, 198, 52, 20, 137, 80, 147, 64, 66, 0, 0, 7, 196, 84, 197, 9, 52,
+			65, 7, 196, 17, 82, 85, 52, 66, 0, 7, 196, 88, 84, 197, 48, 65, 6, 2, 95, 105, 37, 0, 0, 0, 21, 67, 88, 148, 192, 84,
+			37, 88, 35, 84, 6, 37, 0, 44, 82, 97, 32, 118, 105, 115, 32, 6, 65, 216, 123, 36, 0, 6, 2, 95, 111, 39, 0, 0, 9, 198,
+			49, 81, 15, 88, 144, 192, 65, 16, 70, 12, 80, 73, 56, 144, 192, 76, 6, 135, 57, 50, 37, 49, 0, 8, 197, 5, 3, 5, 14, 192,
+			67, 7, 196, 65, 33, 68, 4, 66, 7, 2, 95, 110, 50, 36, 0, 0, 7, 2, 95, 109, 65, 36, 0, 0, 8, 197, 24, 16, 197, 216,
+			144, 65, 8, 197, 17, 80, 197, 216, 144, 65, 9, 198, 80, 84, 141, 36, 224, 64, 67, 9, 198, 65, 35, 212, 20, 160, 64, 67, 9, 198,
+			25, 33, 68, 60, 224, 64, 67, 9, 198, 20, 194, 77, 36, 224, 64, 68, 9, 198, 12, 192, 88, 60, 224, 64, 67, 7, 2, 95, 108, 55,
+			36, 0, 0, 7, 196, 64, 17, 213, 8, 65, 6, 195, 176, 144, 64, 77, 7, 2, 95, 115, 89, 36, 0, 0, 7, 196, 76, 148, 212, 4,
+			66, 18, 70, 24, 145, 67, 177, 37, 73, 83, 57, 36, 49, 6, 13, 34, 121, 0, 72, 0, 13, 4, 95, 104, 97, 99, 107, 6, 35, 76,
+			36, 49, 0, 0, 9, 198, 80, 82, 135, 32, 80, 64, 66, 9, 198, 65, 85, 5, 72, 80, 64, 66, 17, 70, 12, 192, 85, 16, 144, 64,
+			49, 55, 35, 6, 40, 72, 57, 35, 0, 9, 198, 77, 84, 21, 56, 80, 64, 67, 9, 198, 77, 5, 77, 20, 112, 64, 68, 9, 198, 72,
+			81, 133, 72, 80, 64, 67, 17, 70, 56, 81, 207, 12, 144, 64, 50, 36, 81, 39, 76, 37, 6, 35, 0, 9, 198, 16, 80, 201, 16, 80,
+			64, 67, 16, 70, 81, 33, 73, 48, 80, 64, 47, 14, 16, 6, 118, 55, 135, 0, 9, 198, 24, 146, 78, 16, 59, 0, 8, 0, 10, 67,
+			4, 69, 64, 35, 72, 6, 40, 0, 6, 195, 88, 148, 193, 66, 0, 0, 6, 2, 95, 117, 40, 0, 0, 9, 197, 4, 197, 6, 20, 192,
+			65, 28, 0, 9, 198, 82, 192, 197, 72, 80, 64, 66, 9, 198, 66, 196, 133, 72, 80, 64, 66, 9, 198, 14, 193, 5, 72, 80, 64, 66,
+			9, 198, 77, 71, 82, 56, 80, 64, 66, 9, 198, 74, 196, 213, 12, 80, 64, 67, 9, 198, 152, 225, 5, 76, 80, 64, 67, 23, 2, 95,
+			123, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 35, 49, 39, 55, 6, 35, 72, 13, 0, 0, 8, 197, 65, 211, 148, 20, 48, 65, 10,
+			199, 14, 193, 5, 72, 147, 15, 72, 66, 6, 195, 84, 229, 76, 77, 0, 10, 199, 56, 85, 172, 77, 69, 73, 20, 67, 0, 9, 198, 16,
+			148, 133, 13, 67, 210, 66, 8, 197, 77, 75, 20, 20, 16, 66, 9, 198, 4, 229, 77, 37, 67, 210, 75, 0, 7, 196, 48, 144, 133, 72,
+			65, 11, 67, 53, 84, 137, 65, 40, 34, 6, 37, 0, 0, 13, 68, 48, 149, 137, 84, 55, 6, 37, 84, 57, 40, 0, 12, 137, 197, 159,
+			97, 112, 116, 101, 108, 101, 97, 65, 11, 2, 95, 126, 47, 6, 37, 55, 72, 13, 0, 0, 11, 200, 77, 84, 144, 72, 147, 132, 20, 16,
+			67, 9, 134, 112, 196, 131, 197, 159, 105, 66, 30, 2, 95, 125, 48, 35, 16, 35, 50, 47, 4, 36, 88, 13, 35, 49, 39, 55, 6, 35,
+			72, 13, 112, 50, 49, 6, 37, 89, 13, 0, 0, 20, 2, 95, 124, 71, 6, 35, 34, 13, 84, 36, 34, 47, 37, 49, 6, 35, 55, 13,
+			0, 0, 9, 198, 84, 212, 12, 23, 98, 64, 65, 9, 198, 13, 33, 68, 23, 98, 64, 65, 9, 198, 152, 229, 18, 20, 32, 64, 67, 6,
+			195, 37, 160, 137, 66, 24, 7, 115, 46, 97, 46, 109, 46, 100, 91, 36, 35, 91, 35, 65, 117, 72, 36, 48, 35, 34, 47, 36, 0, 0,
+			18, 70, 16, 148, 212, 73, 84, 192, 72, 37, 89, 47, 14, 16, 6, 40, 89, 0, 8, 133, 98, 117, 197, 159, 105, 66, 9, 133, 100, 101,
+			197, 159, 105, 66, 8, 12, 137, 195, 174, 110, 115, 196, 131, 197, 159, 105, 77, 0, 15, 69, 61, 98, 68, 37, 80, 39, 84, 6, 37, 72,
+			57, 40, 0, 7, 196, 48, 147, 73, 80, 65, 9, 198, 152, 229, 44, 72, 149, 21, 68, 11, 5, 95, 48, 97, 110, 100, 10, 91, 37, 0,
+			0, 10, 199, 152, 224, 236, 64, 84, 137, 36, 67, 0, 9, 198, 84, 50, 68, 23, 98, 64, 66, 9, 198, 32, 18, 68, 23, 98, 64, 65,
+			9, 198, 5, 98, 67, 84, 197, 21, 68, 0, 9, 198, 16, 147, 131, 60, 195, 192, 65, 30, 8, 197, 159, 46, 97, 46, 109, 46, 100, 91,
+			37, 11, 35, 91, 4, 35, 15, 65, 117, 15, 72, 36, 48, 6, 35, 34, 47, 36, 0, 0, 11, 200, 64, 20, 148, 20, 225, 82, 20, 144,
+			67, 9, 198, 24, 203, 3, 177, 34, 73, 65, 0, 8, 197, 88, 148, 195, 60, 192, 65, 0, 6, 195, 24, 145, 213, 66, 9, 198, 72, 83,
+			149, 59, 96, 64, 67, 9, 198, 152, 224, 200, 20, 112, 64, 67, 0, 0, 0, 15, 69, 81, 212, 154, 37, 80, 47, 112, 34, 88, 6, 37,
+			40, 0, 7, 196, 64, 148, 201, 12, 65, 6, 195, 60, 101, 44, 66, 5, 194, 84, 224, 72, 0, 0, 8, 197, 88, 150, 137, 82, 192, 65,
+			8, 197, 72, 86, 133, 54, 192, 67, 9, 198, 64, 243, 9, 80, 144, 192, 66, 8, 197, 16, 243, 73, 58, 192, 65, 7, 196, 12, 243, 148,
+			4, 66, 7, 196, 36, 229, 18, 20, 28, 0, 0, 9, 198, 65, 33, 90, 20, 229, 44, 67, 9, 198, 80, 19, 80, 60, 224, 64, 67, 9,
+			198, 36, 228, 212, 4, 192, 64, 67, 9, 198, 56, 144, 201, 84, 224, 64, 77, 0, 7, 196, 32, 243, 2, 176, 66, 11, 136, 102, 101, 110,
+			105, 99, 197, 159, 105, 65, 0, 9, 198, 12, 243, 131, 85, 43, 13, 67, 0, 9, 134, 103, 114, 101, 197, 159, 105, 66, 14, 68, 24, 146,
+			78, 16, 83, 37, 6, 37, 50, 72, 0, 8, 0, 9, 198, 77, 81, 133, 72, 80, 64, 67, 9, 198, 65, 35, 214, 60, 48, 64, 67, 9,
+			198, 24, 243, 15, 76, 80, 64, 67, 9, 198, 16, 85, 133, 56, 80, 64, 67, 9, 198, 4, 165, 78, 28, 80, 64, 67, 18, 70, 5, 4,
+			143, 64, 144, 64, 35, 48, 14, 16, 39, 48, 37, 6, 35, 0, 0, 6, 195, 17, 84, 129, 66, 6, 195, 77, 4, 133, 28, 0, 12, 68,
+			80, 19, 148, 36, 47, 35, 50, 47, 37, 0, 0, 10, 199, 152, 225, 5, 66, 196, 148, 176, 68, 0, 26, 73, 16, 147, 166, 58, 197, 78,
+			81, 37, 76, 72, 37, 50, 112, 50, 13, 6, 40, 50, 47, 14, 16, 40, 55, 0, 13, 4, 95, 35, 51, 50, 89, 48, 6, 35, 123, 116,
+			0, 0, 8, 197, 28, 80, 77, 177, 64, 65, 11, 67, 17, 84, 1, 72, 40, 48, 13, 0, 28, 0, 7, 196, 77, 81, 172, 72, 65, 7,
+			196, 76, 53, 84, 36, 66, 0, 9, 198, 152, 229, 157, 73, 65, 65, 67, 9, 198, 152, 229, 172, 73, 65, 65, 67, 7, 196, 29, 43, 2,
+			36, 68, 20, 71, 61, 34, 67, 177, 33, 73, 4, 39, 16, 124, 49, 13, 34, 36, 37, 35, 0, 79, 0, 7, 196, 80, 83, 137, 76, 65,
+			8, 197, 76, 147, 118, 20, 16, 66, 8, 197, 50, 196, 135, 20, 16, 66, 8, 197, 5, 11, 18, 20, 16, 67, 0, 15, 67, 152, 229, 18,
+			112, 50, 47, 14, 16, 39, 0, 81, 111, 32, 6, 195, 84, 229, 73, 73, 0, 16, 70, 92, 147, 132, 61, 116, 192, 6, 58, 37, 50, 72,
+			130, 89, 0, 10, 67, 32, 242, 84, 107, 6, 120, 47, 0, 7, 196, 12, 83, 154, 84, 66, 12, 137, 197, 159, 196, 131, 115, 101, 108, 101,
+			97, 65, 0, 7, 196, 14, 195, 4, 84, 66, 11, 200, 65, 33, 83, 85, 5, 78, 20, 16, 68, 20, 71, 61, 34, 67, 177, 37, 73, 4,
+			39, 16, 124, 49, 13, 34, 40, 37, 35, 0, 79, 0, 11, 200, 152, 225, 200, 36, 243, 148, 20, 16, 67, 11, 200, 16, 148, 208, 72, 93,
+			149, 36, 16, 68, 0, 13, 68, 12, 243, 15, 72, 49, 39, 55, 6, 39, 16, 0, 0, 9, 198, 152, 225, 44, 74, 197, 0, 67, 6, 195,
+			20, 66, 84, 65, 9, 198, 12, 243, 80, 5, 43, 13, 67, 0, 0, 0, 9, 198, 16, 148, 212, 74, 195, 64, 66, 11, 136, 99, 195, 162,
+			116, 117, 197, 159, 105, 65, 9, 198, 4, 67, 73, 74, 195, 64, 67, 11, 136, 195, 174, 110, 115, 117, 197, 159, 105, 77, 0, 0, 0, 0,
+			8, 197, 58, 197, 172, 48, 144, 67, 8, 197, 66, 192, 236, 48, 144, 67, 9, 198, 152, 224, 213, 72, 48, 64, 67, 9, 198, 152, 224, 197,
+			72, 48, 64, 67, 0, 13, 68, 84, 208, 140, 36, 6, 40, 65, 71, 55, 37, 0, 0, 0, 10, 135, 102, 117, 114, 105, 197, 159, 97, 67,
+			0, 11, 67, 216, 145, 64, 123, 6, 57, 36, 0, 72, 11, 67, 216, 145, 64, 123, 6, 37, 36, 0, 76, 0, 9, 198, 76, 19, 83, 84,
+			225, 192, 65, 7, 196, 76, 17, 5, 4, 66, 8, 197, 72, 145, 9, 14, 192, 66, 8, 197, 16, 80, 207, 50, 192, 67, 8, 197, 5, 37,
+			5, 74, 192, 66, 7, 196, 5, 43, 20, 176, 67, 7, 196, 88, 81, 5, 4, 66, 7, 196, 25, 81, 197, 4, 66, 7, 196, 65, 85, 5,
+			4, 78, 8, 197, 21, 130, 83, 82, 192, 72, 0, 11, 200, 36, 65, 78, 80, 145, 137, 12, 16, 69, 0, 9, 198, 88, 144, 212, 36, 209,
+			64, 65, 9, 198, 77, 64, 84, 84, 145, 64, 66, 9, 198, 37, 53, 5, 72, 145, 64, 67, 9, 198, 24, 16, 212, 36, 49, 64, 66, 0,
+			11, 136, 197, 159, 117, 98, 114, 101, 100, 101, 65, 9, 198, 65, 35, 205, 37, 65, 77, 66, 9, 198, 64, 84, 141, 37, 65, 77, 66, 7,
+			196, 60, 97, 82, 176, 66, 9, 198, 152, 225, 18, 21, 5, 44, 67, 9, 198, 12, 243, 132, 84, 49, 77, 66, 16, 69, 61, 34, 67, 117,
+			64, 39, 16, 124, 49, 4, 112, 47, 0, 76, 0, 9, 198, 77, 68, 137, 30, 197, 5, 65, 11, 200, 36, 229, 5, 73, 49, 67, 82, 192,
+			67, 10, 199, 4, 209, 82, 36, 50, 76, 20, 66, 10, 199, 56, 144, 201, 84, 225, 76, 20, 77, 0, 0, 9, 198, 80, 84, 141, 36, 225,
+			64, 65, 9, 198, 56, 84, 133, 29, 83, 44, 66, 9, 198, 24, 80, 146, 36, 193, 64, 66, 9, 198, 12, 20, 148, 20, 193, 64, 66, 0,
+			9, 198, 81, 34, 77, 37, 65, 77, 66, 9, 198, 40, 20, 15, 56, 145, 73, 66, 11, 136, 114, 196, 131, 103, 117, 197, 159, 105, 67, 12,
+			67, 21, 53, 5, 57, 36, 89, 47, 36, 0, 76, 11, 136, 97, 99, 101, 101, 97, 197, 159, 105, 66, 0, 16, 141, 195, 174, 110, 102, 196,
+			131, 197, 159, 117, 114, 196, 131, 109, 68, 6, 195, 26, 192, 213, 66, 6, 195, 4, 193, 88, 65, 0, 11, 200, 28, 20, 212, 72, 243, 143,
+			52, 144, 15, 11, 67, 5, 43, 20, 35, 34, 6, 13, 47, 0, 0, 9, 198, 74, 195, 93, 56, 93, 137, 66, 11, 200, 20, 50, 9, 48,
+			144, 146, 176, 208, 68, 0, 6, 195, 5, 53, 1, 76, 0, 7, 196, 104, 18, 44, 72, 65, 9, 198, 77, 3, 5, 56, 66, 68, 65, 9,
+			198, 53, 83, 54, 84, 209, 65, 67, 0, 7, 196, 76, 80, 207, 48, 65, 9, 134, 98, 114, 111, 197, 159, 117, 66, 0, 10, 199, 28, 147,
+			78, 5, 53, 9, 12, 66, 12, 201, 77, 84, 18, 4, 84, 212, 36, 208, 64, 69, 8, 197, 14, 196, 133, 36, 16, 73, 0, 10, 67, 10,
+			197, 64, 71, 13, 6, 40, 0, 6, 195, 78, 197, 64, 76, 0, 8, 197, 25, 83, 7, 21, 32, 65, 0, 9, 134, 97, 197, 159, 101, 122,
+			97, 67, 0, 14, 68, 21, 132, 21, 76, 36, 49, 89, 48, 6, 40, 89, 0, 0, 0, 0, 9, 198, 88, 147, 143, 90, 205, 137, 15, 6,
+			195, 66, 205, 137, 66, 0, 9, 198, 5, 99, 195, 5, 69, 64, 68, 8, 197, 76, 83, 108, 56, 16, 67, 0, 0, 19, 71, 80, 245, 4,
+			20, 21, 78, 4, 47, 39, 47, 72, 135, 6, 40, 50, 35, 0, 9, 198, 64, 145, 82, 16, 93, 137, 65, 7, 196, 52, 21, 5, 36, 66,
+			8, 197, 28, 19, 2, 20, 224, 65, 9, 198, 4, 165, 78, 28, 93, 137, 66, 0, 19, 70, 77, 84, 18, 5, 5, 83, 89, 40, 48, 14,
+			16, 35, 48, 6, 40, 89, 0, 18, 70, 36, 229, 18, 60, 69, 83, 37, 50, 47, 34, 39, 72, 6, 40, 89, 0, 19, 70, 36, 229, 5,
+			73, 5, 83, 37, 50, 47, 36, 14, 16, 48, 6, 40, 89, 0, 0, 10, 199, 152, 229, 15, 73, 59, 20, 84, 68, 10, 199, 152, 228, 21,
+			57, 59, 20, 84, 68, 10, 199, 152, 225, 149, 56, 75, 20, 84, 68, 10, 199, 152, 224, 213, 72, 59, 20, 84, 68, 11, 199, 13, 83, 80,
+			177, 43, 20, 84, 67, 48, 0, 9, 198, 17, 83, 73, 56, 144, 193, 66, 0, 0, 7, 196, 24, 83, 137, 96, 65, 7, 196, 89, 43, 10,
+			36, 66, 0, 0, 9, 198, 5, 37, 5, 24, 144, 197, 67, 9, 198, 152, 225, 210, 36, 162, 64, 67, 18, 70, 16, 83, 193, 72, 80, 197,
+			72, 36, 138, 34, 36, 76, 6, 36, 0, 8, 0, 9, 198, 65, 33, 76, 36, 225, 192, 66, 20, 9, 111, 97, 114, 101, 197, 159, 105, 99,
+			101, 39, 35, 16, 36, 91, 76, 36, 0, 68, 9, 198, 12, 243, 150, 36, 225, 192, 66, 9, 198, 65, 35, 206, 84, 237, 129, 67, 9, 198,
+			4, 209, 78, 36, 237, 129, 68, 7, 196, 5, 33, 5, 4, 66, 0, 7, 196, 77, 11, 12, 4, 66, 0, 9, 198, 88, 149, 18, 20, 113,
+			64, 65, 17, 70, 88, 84, 154, 84, 145, 64, 84, 36, 34, 88, 6, 40, 57, 36, 0, 18, 70, 65, 35, 211, 80, 145, 64, 48, 14, 16,
+			39, 89, 47, 6, 37, 36, 0, 9, 198, 56, 244, 212, 36, 209, 64, 65, 9, 198, 36, 224, 77, 36, 49, 64, 67, 9, 198, 16, 83, 154,
+			36, 49, 64, 66, 18, 70, 16, 21, 15, 72, 145, 64, 72, 35, 47, 39, 14, 16, 6, 37, 36, 0, 9, 198, 13, 32, 84, 36, 209, 64,
+			65, 9, 198, 12, 243, 148, 36, 229, 108, 66, 0, 6, 195, 52, 80, 64, 76, 0, 7, 196, 36, 226, 77, 4, 65, 7, 196, 88, 83, 133,
+			4, 66, 7, 196, 57, 83, 69, 4, 66, 7, 196, 53, 84, 133, 4, 66, 0, 0, 9, 198, 64, 20, 148, 20, 225, 64, 67, 9, 198, 28,
+			19, 2, 20, 225, 64, 65, 18, 70, 61, 34, 67, 36, 225, 64, 39, 16, 124, 76, 4, 37, 50, 36, 0, 79, 0, 9, 198, 53, 211, 133,
+			12, 146, 64, 66, 0, 0, 13, 138, 99, 114, 101, 197, 159, 116, 101, 197, 163, 105, 65, 0, 10, 199, 52, 83, 182, 36, 225, 118, 36, 66,
+			10, 199, 152, 229, 9, 56, 65, 118, 36, 66, 10, 199, 152, 224, 201, 56, 113, 118, 36, 66, 0, 11, 67, 104, 149, 65, 88, 6, 37, 122,
+			35, 0, 16, 70, 152, 224, 200, 20, 144, 64, 112, 50, 49, 36, 6, 57, 35, 0, 0, 7, 196, 57, 83, 65, 36, 65, 7, 196, 12, 130,
+			77, 36, 15, 0, 7, 196, 65, 43, 10, 36, 66, 0, 9, 198, 64, 19, 148, 21, 43, 0, 66, 0, 9, 67, 36, 82, 64, 6, 57, 118,
+			0, 9, 198, 4, 115, 206, 37, 49, 65, 68, 6, 195, 82, 197, 64, 76, 0, 7, 195, 64, 253, 137, 76, 32, 8, 197, 53, 83, 20, 61,
+			32, 73, 0, 0, 8, 197, 77, 81, 140, 21, 64, 65, 0, 12, 201, 152, 224, 236, 64, 84, 137, 48, 244, 128, 67, 9, 198, 16, 84, 198,
+			4, 49, 77, 66, 9, 198, 152, 224, 193, 72, 224, 64, 67, 9, 198, 12, 203, 20, 36, 224, 64, 67, 6, 195, 52, 82, 64, 76, 0, 9,
+			198, 81, 33, 65, 14, 197, 0, 65, 8, 197, 13, 33, 73, 21, 32, 65, 0, 0, 8, 197, 48, 81, 236, 81, 80, 67, 8, 197, 8, 19,
+			9, 57, 64, 65, 8, 197, 4, 192, 133, 73, 64, 65, 0, 9, 198, 65, 33, 70, 4, 49, 77, 66, 6, 195, 28, 83, 85, 66, 6, 195,
+			12, 19, 64, 72, 0, 0, 11, 200, 152, 208, 149, 58, 197, 44, 216, 144, 69, 0, 9, 198, 90, 197, 44, 54, 197, 21, 68, 10, 199, 77,
+			84, 246, 36, 225, 118, 36, 66, 10, 199, 77, 68, 157, 56, 113, 118, 36, 65, 10, 199, 152, 224, 200, 36, 65, 118, 36, 66, 0, 9, 198,
+			24, 147, 15, 104, 241, 137, 15, 15, 140, 99, 117, 110, 111, 97, 197, 159, 116, 101, 197, 163, 105, 66, 0, 9, 134, 197, 159, 117, 105, 101,
+			114, 65, 14, 5, 101, 197, 159, 116, 105, 57, 36, 91, 47, 124, 0, 76, 0, 9, 198, 218, 195, 132, 177, 34, 64, 65, 7, 196, 24, 83,
+			9, 96, 65, 0, 0, 0, 7, 196, 85, 66, 76, 20, 66, 9, 198, 66, 193, 21, 72, 144, 197, 67, 15, 204, 152, 229, 18, 20, 65, 83,
+			12, 130, 90, 177, 69, 64, 70, 7, 196, 20, 112, 76, 20, 66, 11, 68, 16, 242, 78, 4, 72, 120, 50, 35, 0, 7, 196, 76, 19, 22,
+			4, 66, 7, 196, 84, 227, 210, 4, 77, 0, 8, 197, 90, 193, 21, 90, 192, 65, 8, 197, 29, 85, 21, 36, 80, 66, 8, 197, 21, 130,
+			83, 80, 16, 67, 8, 197, 12, 240, 201, 56, 80, 65, 8, 197, 5, 4, 137, 28, 80, 65, 8, 197, 72, 83, 1, 96, 16, 67, 8, 197,
+			48, 147, 135, 20, 16, 66, 8, 197, 16, 80, 207, 48, 16, 67, 8, 197, 4, 197, 5, 36, 16, 77, 0, 0, 9, 198, 52, 20, 135, 36,
+			226, 73, 65, 17, 70, 152, 224, 73, 57, 65, 64, 112, 50, 35, 6, 37, 50, 47, 36, 0, 9, 198, 25, 33, 77, 177, 64, 64, 67, 11,
+			136, 97, 197, 159, 116, 101, 112, 116, 97, 67, 11, 136, 100, 101, 112, 196, 131, 197, 159, 105, 67, 0, 10, 199, 65, 35, 193, 77, 1, 84,
+			20, 65, 7, 196, 32, 243, 2, 4, 66, 0, 13, 138, 116, 111, 118, 97, 114, 196, 131, 197, 159, 105, 66, 8, 197, 64, 84, 5, 56, 80,
+			65, 8, 197, 17, 84, 133, 72, 80, 66, 8, 197, 72, 84, 5, 80, 16, 67, 8, 197, 52, 241, 5, 48, 16, 67, 7, 196, 34, 192, 213,
+			36, 67, 8, 197, 5, 53, 80, 72, 16, 28, 0, 15, 69, 88, 145, 118, 84, 144, 84, 57, 36, 123, 40, 6, 37, 0, 0, 9, 198, 64,
+			148, 212, 60, 19, 5, 66, 7, 195, 76, 21, 64, 72, 8, 13, 202, 17, 83, 78, 20, 21, 143, 5, 53, 18, 176, 79, 0, 7, 196, 14,
+			196, 143, 72, 73, 0, 0, 9, 198, 65, 35, 214, 20, 226, 64, 67, 0, 6, 195, 52, 85, 64, 76, 0, 11, 200, 152, 237, 133, 48, 81,
+			197, 216, 144, 67, 7, 196, 17, 82, 14, 36, 66, 0, 14, 69, 52, 242, 83, 20, 144, 65, 39, 37, 89, 6, 118, 0, 8, 197, 60, 66,
+			72, 56, 144, 67, 0, 9, 198, 65, 85, 5, 72, 146, 64, 66, 9, 198, 4, 100, 137, 12, 146, 64, 65, 8, 197, 7, 98, 78, 80, 144,
+			67, 0, 0, 10, 199, 65, 35, 198, 21, 51, 210, 36, 66, 8, 197, 56, 148, 212, 61, 32, 65, 0, 7, 196, 85, 43, 20, 84, 67, 7,
+			196, 77, 75, 20, 84, 66, 0, 8, 197, 90, 193, 21, 88, 80, 65, 0, 9, 198, 84, 209, 140, 177, 69, 64, 67, 9, 198, 65, 43, 10,
+			37, 69, 64, 67, 9, 198, 13, 213, 15, 73, 96, 64, 67, 0, 8, 197, 4, 49, 76, 61, 32, 74, 0, 7, 196, 5, 11, 18, 4, 67,
+			0, 8, 197, 104, 115, 205, 61, 64, 65, 9, 198, 16, 85, 5, 72, 210, 78, 66, 10, 135, 109, 111, 108, 101, 197, 159, 105, 67, 8, 197,
+			14, 196, 143, 72, 16, 73, 8, 197, 14, 196, 143, 72, 16, 73, 0, 9, 198, 76, 84, 150, 36, 50, 73, 66, 24, 73, 77, 84, 18, 5,
+			98, 69, 217, 82, 64, 89, 40, 48, 34, 35, 84, 57, 36, 123, 40, 6, 37, 0, 0, 10, 199, 64, 20, 148, 20, 225, 82, 20, 67, 6,
+			195, 66, 198, 137, 66, 0, 6, 20, 0, 0, 25, 2, 0, 0, 95, 1, 0, 0, 27, 2, 0, 0, 99, 1, 0, 0, 24, 2, 0, 0,
+			95, 1, 0, 0, 26, 2, 0, 0, 99, 1, 0, 0, 0, 0, 0, 0, 6, 195, 162, 0, 105, 101, 1, 21, 2, 32, 3, 8, 133, 36,
+			0, 3, 112, 0, 105, 3, 133, 0, 117, 3, 134, 0, 7, 6, 195, 174, 0, 1, 21, 2, 32, 3, 6, 112, 0, 3, 112, 0, 7, 6,
+			196, 131, 0, 117, 2, 32, 3, 6, 130, 0, 1, 21, 2, 17, 67, 196, 131, 32, 3, 8, 13, 0, 105, 101, 1, 21, 2, 32, 3, 8,
+			129, 36, 0, 4, 3, 13, 0, 1, 10, 2, 32, 14, 128, 192, 129, 0, 1, 17, 67, 131, 196, 21, 2, 32, 0, 1, 99, 101, 10, 2,
+			32, 0, 1, 114, 101, 21, 2, 32, 0, 1, 163, 197, 105, 21, 2, 32, 0, 4, 114, 105, 2, 17, 65, 17, 65, 32, 3, 13, 16, 6,
+			37, 0, 114, 105, 2, 17, 65, 32, 0, 114, 105, 105, 2, 32, 3, 13, 16, 6, 132, 0, 4, 117, 1, 99, 2, 116, 3, 13, 40, 0,
+			117, 8, 98, 2, 116, 0, 117, 8, 100, 2, 110, 0, 117, 8, 108, 2, 100, 0, 116, 196, 131, 1, 21, 2, 32, 14, 129, 128, 131, 3,
+			13, 47, 13, 0, 116, 101, 1, 21, 2, 32, 14, 129, 128, 131, 3, 13, 47, 36, 0, 116, 101, 108, 101, 1, 21, 2, 32, 14, 129, 128,
+			133, 3, 13, 47, 36, 55, 36, 0, 116, 101, 108, 111, 114, 1, 21, 2, 32, 14, 129, 128, 134, 3, 13, 47, 36, 55, 39, 34, 0, 116,
+			117, 108, 1, 21, 2, 32, 14, 129, 128, 132, 3, 13, 47, 40, 55, 0, 116, 117, 108, 117, 105, 1, 21, 2, 32, 14, 129, 128, 134, 3,
+			13, 47, 40, 55, 121, 0, 105, 2, 32, 3, 129, 0, 117, 3, 130, 0, 7, 6, 197, 159, 0, 3, 91, 0, 110, 105, 1, 21, 2, 32,
+			3, 91, 50, 6, 37, 0, 105, 1, 45, 2, 32, 3, 91, 124, 0, 1, 21, 2, 105, 32, 3, 97, 0, 7, 6, 197, 163, 0, 3, 123,
+			0, 1, 21, 2, 105, 32, 3, 141, 0, 105, 1, 45, 2, 32, 3, 141, 128, 0, 7, 6, 97, 0, 4, 1, 21, 26, 2, 24, 32, 3,
+			6, 35, 0, 1, 105, 131, 196, 2, 32, 0, 1, 110, 111, 105, 21, 2, 32, 0, 117, 8, 108, 2, 100, 3, 6, 35, 40, 0, 108, 101,
+			1, 21, 2, 32, 3, 6, 35, 55, 36, 0, 98, 105, 108, 1, 21, 2, 32, 3, 6, 35, 71, 37, 55, 0, 117, 2, 32, 3, 6, 114,
+			0, 105, 2, 32, 3, 6, 117, 0, 4, 3, 35, 0, 1, 10, 2, 32, 14, 128, 192, 129, 0, 1, 105, 103, 2, 32, 14, 128, 192, 129,
+			0, 2, 17, 65, 17, 65, 17, 65, 0, 105, 1, 110, 2, 118, 3, 35, 37, 0, 4, 117, 1, 99, 2, 116, 3, 35, 40, 0, 117, 2,
+			100, 0, 117, 2, 114, 0, 117, 2, 115, 116, 0, 117, 2, 122, 0, 110, 116, 105, 8, 2, 21, 14, 128, 132, 132, 3, 35, 50, 47, 37,
+			0, 105, 2, 97, 3, 35, 57, 0, 117, 3, 114, 0, 105, 3, 117, 0, 7, 6, 98, 0, 4, 1, 21, 2, 105, 108, 32, 3, 8, 71,
+			0, 1, 21, 2, 105, 108, 97, 32, 0, 1, 21, 2, 105, 108, 105, 32, 0, 1, 21, 2, 105, 108, 105, 105, 32, 0, 1, 21, 2, 105,
+			108, 105, 108, 101, 32, 0, 1, 21, 2, 105, 108, 105, 108, 111, 114, 32, 0, 1, 21, 2, 105, 108, 117, 108, 117, 105, 32, 0, 4, 3,
+			71, 0, 98, 0, 105, 108, 1, 111, 109, 2, 32, 3, 71, 6, 37, 55, 0, 1, 21, 2, 105, 32, 3, 143, 0, 7, 6, 99, 0, 111,
+			108, 1, 21, 21, 2, 32, 3, 8, 49, 39, 55, 0, 111, 108, 105, 1, 21, 21, 2, 32, 14, 129, 128, 129, 3, 8, 124, 0, 111, 108,
+			101, 1, 21, 21, 2, 32, 14, 129, 128, 129, 3, 36, 0, 4, 3, 49, 0, 104, 0, 110, 105, 1, 21, 2, 32, 3, 49, 50, 6, 37,
+			0, 110, 101, 97, 1, 21, 2, 32, 3, 49, 50, 36, 6, 35, 0, 4, 2, 101, 3, 76, 0, 2, 105, 0, 105, 2, 111, 0, 105, 105,
+			3, 76, 132, 0, 7, 6, 100, 0, 4, 3, 72, 0, 100, 0, 1, 21, 2, 105, 32, 3, 144, 0, 7, 6, 101, 0, 1, 17, 67, 10,
+			2, 114, 101, 32, 3, 2, 36, 0, 117, 1, 21, 2, 108, 32, 3, 6, 36, 40, 0, 117, 1, 21, 2, 32, 24, 3, 6, 115, 0, 105,
+			1, 114, 2, 101, 114, 32, 3, 6, 118, 0, 4, 1, 21, 2, 114, 97, 32, 3, 8, 36, 0, 1, 21, 2, 114, 101, 32, 0, 1, 21,
+			2, 114, 101, 97, 32, 0, 1, 21, 2, 114, 101, 105, 32, 0, 1, 21, 2, 114, 105, 32, 0, 1, 21, 2, 114, 105, 105, 32, 0, 1,
+			21, 2, 114, 196, 131, 32, 0, 197, 159, 1, 21, 2, 32, 3, 8, 36, 91, 0, 197, 159, 105, 108, 111, 114, 1, 21, 2, 32, 3, 8,
+			36, 91, 37, 55, 39, 34, 0, 197, 159, 117, 108, 1, 21, 2, 32, 3, 8, 36, 91, 40, 55, 0, 197, 159, 117, 108, 117, 105, 1, 21,
+			2, 32, 3, 8, 36, 91, 40, 55, 121, 0, 197, 159, 105, 1, 21, 2, 32, 3, 8, 36, 91, 124, 0, 4, 3, 36, 0, 1, 102, 21,
+			2, 114, 97, 32, 0, 1, 102, 21, 2, 114, 97, 32, 0, 1, 105, 2, 114, 97, 32, 0, 1, 105, 2, 114, 101, 32, 0, 1, 105, 2,
+			114, 101, 97, 32, 0, 1, 105, 2, 114, 105, 32, 0, 1, 105, 2, 114, 105, 105, 32, 0, 1, 105, 2, 114, 196, 131, 32, 0, 2, 17,
+			65, 17, 65, 17, 65, 0, 111, 1, 100, 2, 115, 101, 98, 3, 36, 39, 0, 117, 1, 21, 2, 32, 3, 36, 40, 0, 99, 1, 116, 17,
+			65, 21, 2, 105, 105, 32, 3, 36, 76, 0, 4, 101, 8, 99, 97, 2, 97, 3, 118, 0, 105, 2, 32, 0, 105, 8, 0, 4, 97, 3,
+			135, 0, 97, 1, 10, 2, 32, 14, 128, 192, 130, 0, 83, 105, 1, 10, 3, 135, 57, 0, 97, 117, 3, 135, 58, 0, 111, 3, 136, 0,
+			111, 97, 3, 136, 6, 35, 0, 7, 6, 102, 0, 4, 3, 83, 0, 102, 0, 1, 21, 2, 105, 32, 3, 142, 0, 7, 6, 103, 0, 4,
+			2, 101, 3, 75, 0, 2, 105, 0, 105, 105, 1, 10, 2, 32, 3, 75, 6, 132, 0, 105, 1, 10, 2, 17, 65, 32, 3, 75, 37, 0,
+			105, 105, 3, 75, 132, 0, 4, 3, 81, 0, 104, 0, 7, 6, 104, 0, 1, 21, 2, 105, 32, 3, 99, 0, 3, 107, 0, 7, 6, 105,
+			0, 1, 99, 2, 117, 17, 67, 3, 0, 110, 103, 1, 10, 2, 32, 3, 2, 37, 68, 81, 0, 4, 101, 105, 1, 108, 105, 102, 2, 32,
+			3, 6, 36, 37, 0, 101, 105, 1, 109, 111, 110, 2, 32, 0, 4, 1, 10, 26, 2, 24, 32, 3, 6, 37, 0, 1, 114, 99, 115, 2,
+			101, 0, 2, 116, 32, 0, 4, 97, 1, 17, 67, 131, 196, 2, 32, 3, 6, 37, 35, 0, 97, 1, 17, 67, 162, 195, 2, 32, 0, 97,
+			1, 102, 97, 114, 103, 2, 32, 0, 97, 1, 108, 105, 102, 2, 32, 0, 97, 1, 109, 111, 110, 2, 32, 0, 97, 1, 110, 111, 2, 32,
+			0, 97, 1, 112, 111, 99, 115, 2, 32, 0, 97, 1, 114, 101, 2, 32, 0, 97, 1, 159, 197, 117, 2, 32, 0, 4, 101, 1, 17, 67,
+			131, 196, 2, 32, 3, 6, 37, 36, 0, 101, 1, 17, 67, 162, 195, 2, 32, 0, 101, 1, 102, 97, 114, 103, 2, 32, 0, 101, 1, 108,
+			105, 102, 2, 32, 0, 101, 1, 109, 111, 110, 2, 32, 0, 101, 1, 110, 111, 2, 32, 0, 101, 1, 112, 111, 99, 115, 2, 32, 0, 101,
+			1, 159, 197, 117, 2, 32, 0, 4, 101, 105, 1, 102, 97, 114, 103, 2, 32, 3, 6, 37, 118, 0, 101, 105, 1, 110, 111, 2, 32, 0,
+			101, 105, 1, 114, 101, 2, 32, 0, 101, 105, 1, 159, 197, 117, 2, 32, 0, 101, 105, 2, 32, 0, 4, 105, 1, 102, 97, 114, 103, 2,
+			32, 3, 6, 132, 0, 105, 1, 112, 111, 99, 115, 2, 32, 0, 4, 1, 21, 2, 197, 163, 101, 32, 3, 8, 37, 0, 1, 21, 2, 197,
+			163, 101, 105, 32, 0, 1, 21, 2, 197, 163, 101, 108, 101, 32, 0, 1, 21, 2, 197, 163, 101, 108, 111, 114, 32, 0, 1, 21, 2, 197,
+			163, 196, 131, 32, 12, 12, 12, 12, 12, 12, 12, 12, 0, 1, 103, 2, 110, 101, 32, 0, 1, 103, 2, 110, 101, 97, 32, 0, 101, 1,
+			163, 197, 99, 2, 32, 3, 8, 37, 36, 0, 99, 1, 10, 2, 32, 3, 8, 37, 49, 0, 99, 97, 1, 10, 2, 32, 3, 8, 37, 49,
+			35, 0, 99, 101, 1, 10, 2, 32, 3, 8, 37, 76, 36, 0, 99, 105, 108, 101, 1, 10, 2, 32, 3, 8, 37, 76, 37, 55, 36, 0,
+			99, 105, 108, 111, 114, 1, 10, 2, 32, 3, 8, 37, 76, 37, 55, 39, 34, 0, 99, 101, 105, 1, 21, 2, 32, 3, 8, 37, 76, 118,
+			0, 99, 105, 105, 1, 21, 2, 32, 3, 8, 37, 76, 132, 0, 197, 159, 116, 101, 1, 21, 2, 32, 3, 8, 37, 91, 47, 36, 0, 197,
+			159, 116, 101, 97, 1, 21, 2, 32, 3, 8, 37, 91, 47, 135, 0, 101, 105, 1, 163, 197, 99, 2, 32, 3, 8, 37, 118, 0, 97, 1,
+			163, 197, 99, 2, 32, 3, 8, 57, 35, 0, 1, 45, 105, 163, 197, 2, 32, 3, 10, 0, 4, 3, 37, 0, 1, 10, 2, 32, 24, 14,
+			128, 192, 129, 0, 1, 10, 2, 45, 24, 14, 128, 192, 129, 0, 1, 21, 2, 17, 65, 28, 33, 0, 1, 39, 10, 2, 32, 0, 1, 114,
 			17, 67, 2, 32, 12, 12, 12, 0, 1, 163, 197, 2, 45, 17, 67, 105, 0, 1, 163, 197, 2, 45, 17, 67, 196, 131, 0, 1, 163, 197,
 			2, 45, 108, 0, 1, 163, 197, 2, 45, 110, 101, 0, 105, 105, 3, 37, 57, 37, 0, 101, 105, 1, 112, 111, 99, 115, 2, 32, 3, 37,
 			118, 0, 4, 1, 21, 2, 101, 32, 3, 57, 0, 1, 45, 2, 32, 0, 2, 17, 65, 0, 117, 3, 57, 40, 0, 111, 97, 3, 57, 110,
@@ -29553,1697 +40835,1759 @@ FilesInMemory create_espeakdata_dicts () {
 			3, 48, 14, 16, 39, 76, 36, 50, 47, 0, 37, 1, 32, 15, 3, 55, 35, 10, 89, 40, 47, 13, 0, 45, 8, 32, 2, 32, 15, 3,
 			65, 6, 37, 50, 40, 89, 0, 36, 3, 72, 39, 55, 35, 34, 0, 44, 2, 15, 3, 84, 6, 37, 34, 81, 40, 55, 13, 0, 195, 182,
 			3, 113, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts53 = FileInMemory_createWithData (26885, reinterpret_cast<const char *> (&espeakdata_dicts53_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ro_dict", 
+		autoFileInMemory espeakdata_dicts55 = FileInMemory_createWithData (25205, reinterpret_cast<const char *> (&espeakdata_dicts55_data), 
+			U"espeak-1.48.04-source/espeak-data/ro_dict", 
 			U"ro");
-		Collection_addItem (me.peek(), espeakdata_dicts53.transfer());
+		my addItem_move (espeakdata_dicts55.move());
 
-		static unsigned char espeakdata_dicts54_data[6158] = {
-			0, 4, 0, 0, 140, 10, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 14, 5, 193, 4, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 65, 12, 84, 121, 0, 14, 6, 65, 12, 84, 0, 72, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 100, 112, 116, 9, 6, 37, 9,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 35, 34, 36, 91, 6, 121, 47, 49, 35, 0, 27,
-			0, 8, 197, 64, 240, 156, 77, 208, 74, 7, 65, 36, 37, 0, 72, 8, 11, 1, 36, 72, 6, 39, 55, 55, 35, 34, 0, 0, 13, 1,
-			37, 48, 34, 126, 110, 6, 121, 50, 47, 0, 27, 0, 14, 1, 38, 35, 65, 48, 36, 34, 89, 6, 35, 50, 72, 0, 0, 0, 0, 0,
-			12, 1, 42, 88, 84, 36, 88, 72, 6, 35, 0, 27, 0, 10, 1, 43, 48, 55, 6, 131, 89, 0, 27, 0, 0, 0, 0, 10, 1, 47,
-			89, 55, 6, 121, 91, 0, 27, 0, 6, 195, 25, 36, 198, 73, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 36, 221, 73, 0, 0, 0,
-			0, 0, 0, 9, 198, 64, 240, 148, 21, 68, 192, 74, 11, 1, 61, 34, 35, 84, 50, 6, 39, 0, 27, 0, 0, 0, 11, 1, 64, 89,
-			39, 71, 6, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65, 72, 121, 89, 0, 14, 6, 65, 72, 89, 0, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 6, 65, 80, 40, 0, 72, 0, 0, 0, 6, 195, 9, 195, 9, 73, 0, 0, 0, 0, 0, 0, 6, 195, 9,
-			195, 15, 73, 0, 0, 0, 8, 197, 72, 211, 199, 25, 48, 73, 13, 1, 92, 71, 121, 49, 89, 55, 6, 121, 91, 0, 27, 0, 0, 11,
-			1, 94, 49, 34, 6, 115, 91, 49, 35, 0, 0, 13, 1, 95, 48, 39, 72, 78, 6, 128, 34, 49, 0, 27, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 126, 47, 6,
-			37, 55, 72, 35, 0, 0, 0, 4, 193, 128, 72, 0, 0, 0, 7, 196, 9, 65, 70, 52, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 4, 193, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 9, 65, 84, 73, 0, 7, 196, 9, 65, 70,
-			76, 73, 0, 0, 0, 0, 0, 4, 193, 160, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 246, 29, 72, 0, 0,
-			0, 0, 0, 0, 6, 195, 52, 241, 35, 74, 0, 0, 0, 0, 0, 17, 5, 95, 100, 112, 116, 50, 10, 112, 117, 95, 6, 35, 47, 135,
-			101, 0, 0, 0, 0, 0, 6, 195, 52, 241, 20, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 72, 211, 199, 24, 208, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 9, 195, 0, 73, 0, 7, 196, 9, 65, 84, 76, 73, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 64, 240, 148, 20, 99, 64, 74, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 196, 97, 51, 194, 112, 8, 0, 8, 197, 9, 65, 70, 76, 96, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			8, 197, 72, 211, 196, 48, 144, 74, 12, 3, 226, 132, 150, 50, 6, 39, 65, 36, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 9, 196, 221, 73, 0, 0, 0, 9, 198, 64, 240, 148, 20,
-			102, 93, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 73, 68, 221, 73, 0, 0, 0, 0, 0, 6, 195, 72, 211, 196, 73, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 200, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 47, 34, 38, 6, 37, 47, 110, 126, 111, 0, 0, 10, 3, 95,
-			48, 67, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 49, 57, 112, 123, 84, 38,
-			117, 47, 50, 6, 134, 47, 110, 126, 111, 0, 0, 18, 3, 95, 49, 56, 84, 127, 95, 117, 65, 50, 6, 134, 47, 110, 126, 111, 0, 0,
-			14, 3, 95, 50, 67, 72, 84, 38, 6, 36, 95, 111, 117, 0, 0, 8, 197, 72, 211, 196, 48, 240, 74, 0, 0, 0, 0, 0, 17, 3,
-			95, 49, 49, 127, 112, 6, 37, 50, 50, 126, 47, 110, 126, 111, 0, 0, 12, 3, 95, 49, 48, 112, 6, 36, 95, 117, 111, 0, 0, 14,
-			3, 95, 51, 67, 47, 34, 38, 6, 37, 89, 47, 35, 0, 17, 3, 95, 49, 51, 47, 51, 38, 117, 50, 6, 134, 47, 110, 126, 111, 0,
-			0, 17, 3, 95, 49, 50, 72, 84, 38, 117, 50, 6, 134, 47, 110, 126, 111, 0, 0, 17, 3, 95, 49, 53, 48, 38, 117, 47, 50, 6,
-			134, 47, 110, 126, 111, 0, 0, 20, 3, 95, 49, 52, 110, 38, 117, 47, 6, 115, 14, 16, 50, 126, 47, 110, 126, 111, 0, 0, 16, 3,
-			95, 49, 55, 95, 117, 65, 50, 6, 134, 47, 110, 126, 111, 0, 0, 17, 3, 95, 49, 54, 91, 122, 89, 47, 50, 6, 134, 47, 110, 126,
-			111, 0, 0, 0, 15, 3, 95, 55, 88, 95, 6, 36, 65, 112, 123, 95, 126, 47, 0, 0, 7, 196, 52, 241, 12, 36, 74, 18, 3, 95,
-			52, 67, 110, 38, 117, 47, 6, 115, 34, 38, 123, 89, 47, 35, 0, 0, 0, 9, 198, 64, 240, 148, 20, 100, 192, 74, 0, 0, 0, 0,
-			0, 0, 9, 198, 64, 240, 148, 20, 100, 198, 74, 15, 3, 95, 53, 67, 48, 38, 4, 117, 111, 89, 6, 39, 47, 0, 0, 0, 0, 0,
-			0, 11, 3, 95, 49, 102, 39, 72, 50, 6, 35, 0, 0, 0, 0, 15, 3, 95, 54, 67, 91, 4, 122, 95, 111, 89, 6, 39, 47, 0,
-			0, 0, 0, 0, 0, 11, 3, 95, 50, 102, 72, 84, 38, 6, 36, 0, 0, 0, 14, 3, 95, 50, 88, 72, 84, 6, 134, 47, 110, 126,
-			111, 0, 0, 7, 196, 52, 241, 12, 60, 74, 16, 5, 95, 48, 77, 65, 49, 47, 6, 115, 95, 117, 110, 38, 37, 0, 14, 3, 95, 55,
-			67, 95, 4, 117, 65, 89, 6, 39, 47, 0, 0, 0, 19, 5, 95, 48, 77, 65, 51, 113, 4, 117, 55, 117, 38, 6, 35, 34, 72, 35,
-			0, 0, 18, 5, 95, 48, 77, 65, 50, 113, 4, 117, 55, 117, 38, 6, 39, 50, 35, 0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 67,
-			84, 127, 95, 117, 65, 89, 6, 39, 47, 0, 0, 0, 0, 0, 0, 8, 197, 52, 241, 198, 76, 96, 73, 0, 0, 13, 3, 95, 52, 88,
-			89, 6, 39, 14, 16, 127, 49, 0, 0, 15, 3, 95, 57, 67, 72, 36, 84, 38, 126, 110, 6, 39, 47, 0, 0, 0, 0, 0, 0, 0,
-			0, 16, 3, 95, 53, 88, 48, 38, 126, 112, 112, 117, 95, 6, 120, 47, 0, 0, 7, 196, 64, 240, 156, 48, 73, 0, 0, 0, 0, 0,
-			0, 0, 16, 3, 95, 54, 88, 91, 123, 94, 112, 112, 117, 95, 6, 120, 47, 0, 0, 0, 8, 197, 72, 211, 196, 81, 48, 73, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56, 88, 84, 6, 39, 95, 123, 65, 112, 123, 95, 126, 47, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 57, 88, 112, 123, 84, 38, 117, 50, 6, 39, 89, 47, 127, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 20, 76, 73, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 61, 48, 72, 0, 0, 0, 0, 18, 4, 95, 48, 77, 50, 113, 4, 117, 55,
-			117, 38, 6, 39, 50, 39, 83, 0, 0, 19, 4, 95, 48, 77, 51, 113, 4, 117, 55, 117, 38, 6, 35, 34, 72, 39, 83, 0, 0, 0,
-			14, 4, 95, 48, 77, 49, 47, 6, 115, 95, 126, 110, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 64, 240, 156, 140, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 211, 199, 25,
-			151, 64, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 197, 9, 65, 70, 101, 208, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 194, 171,
-			6, 39, 47, 49, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 72, 211, 216, 116, 73, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 88, 244, 224, 66, 8, 0, 7, 196, 52, 241, 198, 52, 73, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 195, 52, 241, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 97, 51, 192, 91, 47, 39, 0, 72, 8, 0,
-			0, 0, 11, 3, 95, 194, 187, 88, 6, 35, 49, 34, 0, 0, 0, 0, 8, 197, 52, 241, 198, 101, 208, 73, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 198, 76, 73, 0, 0, 6, 194, 56, 240, 72, 8, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 195, 36, 35, 192, 72, 8, 7, 195, 36, 35, 192, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 95, 3, 84, 121, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 95, 18, 121, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 13, 2, 95, 34, 49, 126, 84, 6, 115, 78, 49, 35, 0, 0, 8, 197, 64, 240, 156, 48, 144, 74, 12, 2, 95,
-			33, 84, 6, 39, 89, 49, 55, 38, 0, 0, 0, 14, 2, 95, 39, 35, 48, 6, 39, 89, 47, 34, 126, 83, 0, 0, 0, 0, 0, 0,
-			0, 14, 2, 95, 41, 88, 6, 35, 49, 34, 49, 34, 40, 81, 0, 0, 14, 2, 95, 40, 6, 39, 47, 49, 34, 49, 34, 40, 81, 0,
-			0, 0, 11, 2, 95, 46, 47, 6, 39, 78, 49, 35, 0, 0, 11, 2, 95, 45, 72, 36, 83, 6, 37, 89, 0, 0, 13, 2, 95, 44,
+		static unsigned char espeakdata_dicts56_data[6218] = {
+			0, 4, 0, 0, 137, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4,
+			95, 100, 112, 116, 9, 6, 37, 9, 0, 0, 0, 0, 6, 195, 9, 65, 84, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 13, 1, 35, 34, 36, 91, 6, 121, 47, 49, 35, 0, 27, 0, 11, 1, 36, 72, 6, 39, 55, 55, 35, 34, 0, 0, 13, 1, 37,
+			48, 34, 126, 110, 6, 121, 50, 47, 0, 27, 0, 14, 1, 38, 35, 65, 48, 36, 34, 89, 6, 35, 50, 72, 0, 0, 0, 0, 0, 12,
+			1, 42, 88, 84, 36, 88, 72, 6, 35, 0, 27, 0, 8, 197, 52, 241, 198, 101, 208, 73, 10, 1, 43, 48, 55, 6, 131, 89, 0, 27,
+			0, 0, 0, 0, 10, 1, 47, 89, 55, 6, 121, 91, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 9, 65,
+			70, 101, 208, 73, 0, 0, 11, 1, 61, 34, 35, 84, 50, 6, 39, 0, 27, 0, 0, 9, 198, 64, 240, 148, 20, 102, 93, 74, 0, 11,
+			1, 64, 89, 39, 71, 6, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 211, 199, 25, 151, 64, 73, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 92, 71, 121, 49, 89, 55, 6, 121, 91, 0, 27,
+			0, 0, 11, 1, 94, 49, 34, 6, 115, 91, 49, 35, 0, 0, 13, 1, 95, 48, 39, 72, 78, 6, 128, 34, 49, 0, 27, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 97, 51, 194, 112, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 194, 56, 240, 72, 8, 0, 10, 1, 126, 47, 6, 37, 55, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 25, 36, 221, 73, 0, 4, 193, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 34, 64, 74,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 17, 5, 95, 100, 112, 116, 50, 10, 112, 117, 95, 6, 35, 47, 135, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 4, 49, 5, 193, 4, 72, 8, 0, 0, 11, 67,
+			97, 51, 192, 91, 47, 39, 0, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 36, 198, 73, 0, 0, 0, 8, 197, 64,
+			240, 156, 77, 208, 74, 0, 8, 197, 9, 65, 70, 76, 96, 73, 0, 0, 0, 0, 9, 198, 64, 240, 148, 20, 100, 198, 74, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 52, 246, 29, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 20, 76, 73, 0, 0, 0, 6, 195,
+			52, 241, 20, 74, 0, 0, 7, 196, 72, 211, 196, 80, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 9, 195, 0, 73, 0, 0, 0, 0, 0, 6, 195, 9, 195, 9, 73, 0, 0, 0, 0, 7, 65, 12, 84, 121, 0, 49,
+			6, 65, 12, 84, 0, 72, 0, 0, 0, 0, 8, 197, 64, 240, 156, 48, 144, 74, 0, 8, 197, 64, 240, 148, 21, 64, 74, 0, 6, 195,
+			52, 241, 35, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 240, 156, 48, 73, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 226, 132, 150, 50, 6, 39, 65, 36, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 9, 65, 70,
+			76, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 20, 200, 0, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 198, 76, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3,
+			95, 51, 88, 47, 34, 38, 6, 37, 47, 110, 126, 111, 0, 0, 10, 3, 95, 48, 67, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 95, 49, 57, 112, 123, 84, 38, 117, 47, 50, 6, 134, 47, 110, 126, 111, 0, 0, 18, 3,
+			95, 49, 56, 84, 127, 95, 117, 65, 50, 6, 134, 47, 110, 126, 111, 0, 0, 14, 3, 95, 50, 67, 72, 84, 38, 6, 36, 95, 111, 117,
+			0, 0, 0, 0, 0, 4, 193, 144, 72, 0, 0, 8, 197, 72, 211, 199, 25, 48, 73, 17, 3, 95, 49, 49, 127, 112, 6, 37, 50, 50,
+			126, 47, 110, 126, 111, 0, 0, 12, 3, 95, 49, 48, 112, 6, 36, 95, 117, 111, 0, 0, 14, 3, 95, 51, 67, 47, 34, 38, 6, 37,
+			89, 47, 35, 0, 17, 3, 95, 49, 51, 47, 51, 38, 117, 50, 6, 134, 47, 110, 126, 111, 0, 0, 17, 3, 95, 49, 50, 72, 84, 38,
+			117, 50, 6, 134, 47, 110, 126, 111, 0, 0, 17, 3, 95, 49, 53, 48, 38, 117, 47, 50, 6, 134, 47, 110, 126, 111, 0, 0, 19, 3,
+			95, 49, 52, 78, 117, 47, 6, 115, 14, 16, 50, 126, 47, 110, 126, 111, 0, 0, 16, 3, 95, 49, 55, 95, 117, 65, 50, 6, 134, 47,
+			110, 126, 111, 0, 0, 17, 3, 95, 49, 54, 91, 122, 89, 47, 50, 6, 134, 47, 110, 126, 111, 0, 0, 0, 15, 3, 95, 55, 88, 95,
+			6, 36, 65, 112, 123, 95, 126, 47, 0, 0, 17, 3, 95, 52, 67, 78, 117, 47, 6, 115, 34, 38, 123, 89, 47, 35, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 195, 73, 68, 221, 73, 15, 3, 95, 53, 67, 48, 38, 4, 117, 111, 89, 6, 39, 47, 0, 0, 0, 0, 0,
+			7, 195, 36, 35, 192, 72, 8, 7, 195, 36, 35, 192, 72, 8, 0, 11, 3, 95, 49, 102, 39, 72, 50, 6, 35, 0, 0, 0, 4, 193,
+			160, 72, 0, 15, 3, 95, 54, 67, 91, 4, 122, 95, 111, 89, 6, 39, 47, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 102, 72, 84,
+			38, 6, 36, 0, 0, 0, 14, 3, 95, 50, 88, 72, 84, 6, 134, 47, 110, 126, 111, 0, 0, 15, 5, 95, 48, 77, 65, 49, 47, 6,
+			115, 95, 117, 78, 37, 0, 14, 3, 95, 55, 67, 95, 4, 117, 65, 89, 6, 39, 47, 0, 0, 0, 19, 5, 95, 48, 77, 65, 51, 113,
+			4, 117, 55, 117, 38, 6, 35, 34, 72, 35, 0, 0, 18, 5, 95, 48, 77, 65, 50, 113, 4, 117, 55, 117, 38, 6, 39, 50, 35, 0,
+			0, 0, 0, 0, 0, 8, 197, 72, 211, 199, 24, 208, 73, 15, 3, 95, 56, 67, 84, 127, 95, 117, 65, 89, 6, 39, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 13, 3, 95, 52, 88, 89, 6, 39, 14, 16, 127, 49, 0, 0, 15, 3, 95, 57, 67, 72, 36, 84, 38, 126, 110,
+			6, 39, 47, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 53, 88, 48, 38, 126, 112, 112, 117, 95, 6, 120, 47, 0, 0, 0, 0,
+			0, 0, 0, 0, 7, 65, 36, 37, 0, 72, 8, 0, 16, 3, 95, 54, 88, 91, 123, 94, 112, 112, 117, 95, 6, 120, 47, 0, 0, 6,
+			195, 9, 196, 221, 73, 0, 6, 195, 72, 211, 196, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56,
+			88, 84, 6, 39, 95, 123, 65, 112, 123, 95, 126, 47, 0, 0, 0, 0, 7, 196, 72, 211, 216, 116, 73, 0, 0, 0, 0, 0, 17, 3,
+			95, 57, 88, 112, 123, 84, 38, 117, 50, 6, 39, 89, 47, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 64, 240, 156, 140,
+			75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 9, 195, 15, 73, 5, 194, 61, 48,
+			72, 0, 0, 0, 0, 8, 197, 72, 211, 196, 81, 48, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 48, 77,
+			50, 113, 4, 117, 55, 117, 38, 6, 39, 50, 39, 83, 0, 0, 19, 4, 95, 48, 77, 51, 113, 4, 117, 55, 117, 38, 6, 35, 34, 72,
+			39, 83, 0, 0, 0, 13, 4, 95, 48, 77, 49, 47, 6, 115, 95, 126, 78, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 35, 92, 73,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68, 68, 17, 73, 60, 34, 6, 35, 112, 117, 39, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 194, 171, 6,
+			39, 47, 49, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 241, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+			3, 95, 194, 187, 88, 6, 35, 49, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 88, 244, 224, 66, 8,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 52, 241, 198, 76, 96, 73,
+			0, 0, 7, 65, 72, 121, 89, 0, 49, 6, 65, 72, 89, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3,
+			95, 209, 129, 121, 89, 0, 7, 196, 9, 65, 84, 76, 73, 0, 0, 0, 0, 9, 198, 64, 240, 148, 21, 68, 192, 74, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 211, 199, 25, 49, 128, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 80, 40, 0, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 12, 60, 74, 0, 0, 7, 196, 52, 241, 12, 36, 74, 8, 197,
+			64, 240, 156, 48, 240, 74, 0, 0, 0, 8, 3, 95, 208, 178, 84, 121, 0, 0, 0, 0, 13, 2, 95, 34, 49, 126, 84, 6, 115, 78,
+			49, 35, 0, 0, 12, 2, 95, 33, 84, 6, 39, 89, 49, 55, 38, 0, 0, 0, 14, 2, 95, 39, 35, 48, 6, 39, 89, 47, 34, 126,
+			83, 0, 0, 7, 196, 72, 211, 196, 140, 74, 0, 0, 0, 0, 0, 14, 2, 95, 41, 88, 6, 35, 49, 34, 49, 34, 40, 81, 0, 0,
+			14, 2, 95, 40, 6, 39, 47, 49, 34, 49, 34, 40, 81, 0, 0, 0, 8, 197, 72, 211, 196, 48, 144, 74, 11, 2, 95, 46, 47, 6,
+			39, 78, 49, 35, 0, 0, 11, 2, 95, 45, 72, 36, 83, 6, 37, 89, 0, 0, 8, 197, 72, 211, 196, 48, 240, 74, 13, 2, 95, 44,
 			88, 126, 48, 37, 47, 6, 35, 120, 0, 0, 10, 2, 95, 51, 47, 51, 38, 6, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 134, 0,
 			0, 11, 2, 95, 49, 39, 57, 112, 6, 37, 50, 0, 0, 10, 2, 95, 48, 50, 6, 39, 57, 61, 0, 0, 10, 2, 95, 55, 95, 6,
-			36, 57, 65, 0, 0, 10, 2, 95, 54, 91, 6, 121, 95, 111, 0, 0, 10, 2, 95, 53, 48, 38, 6, 120, 111, 0, 0, 13, 2, 95,
-			52, 78, 117, 47, 6, 115, 51, 38, 117, 0, 0, 13, 2, 95, 59, 47, 6, 39, 78, 49, 88, 35, 48, 0, 0, 15, 2, 95, 58, 72,
-			84, 126, 36, 47, 6, 39, 78, 37, 36, 0, 0, 11, 2, 95, 57, 112, 6, 36, 84, 119, 111, 0, 0, 11, 2, 95, 56, 84, 6, 39,
-			95, 123, 65, 0, 0, 12, 2, 95, 63, 84, 39, 48, 34, 6, 39, 89, 0, 0, 7, 196, 72, 211, 196, 80, 73, 12, 2, 95, 62, 71,
-			6, 39, 55, 38, 91, 121, 0, 0, 0, 12, 2, 95, 60, 65, 6, 36, 50, 38, 91, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 72, 211, 199, 25, 49, 128, 73, 0, 17, 2, 95, 91, 6,
-			39, 47, 49, 34, 49, 84, 35, 72, 34, 35, 47, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 93, 88, 6, 35, 49, 34, 49, 84, 35,
-			72, 34, 35, 47, 0, 0, 0, 0, 0, 0, 12, 2, 95, 96, 35, 49, 110, 6, 121, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 95, 123, 6, 39, 47, 49, 34, 83, 37, 81, 40, 34, 0, 0, 0,
-			0, 0, 0, 0, 15, 2, 95, 125, 88, 6, 35, 49, 34, 83, 37, 81, 40, 34, 0, 0, 10, 2, 95, 124, 84, 6, 36, 34, 47, 0,
-			0, 0, 0, 8, 197, 64, 240, 156, 48, 240, 74, 0, 0, 0, 0, 0, 0, 0, 7, 196, 72, 211, 196, 140, 74, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 34, 64, 74, 0, 0, 0, 18, 5, 95,
-			49, 77, 65, 51, 113, 4, 117, 55, 117, 38, 6, 35, 34, 47, 0, 0, 17, 5, 95, 49, 77, 65, 50, 113, 4, 117, 55, 117, 38, 6,
-			39, 50, 0, 0, 16, 5, 95, 49, 77, 65, 49, 47, 6, 115, 95, 117, 110, 38, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 35, 93, 73, 0, 6, 195, 25, 35, 92, 73, 0, 13, 68, 68, 17,
-			73, 60, 34, 6, 35, 112, 117, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 64, 240, 148, 21, 64, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 1, 17, 0, 4, 2, 32, 3, 35, 0, 8, 0, 8, 2, 32, 0, 4, 3, 126, 0, 1, 17, 66, 2, 32, 0, 7, 6, 1, 18,
-			0, 4, 2, 32, 3, 48, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140,
-			0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133,
-			208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 135, 0, 2, 209, 137, 0, 4, 2, 208, 191, 17, 71, 3, 48, 38, 0, 2,
-			208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132,
-			209, 140, 0, 2, 209, 140, 32, 0, 3, 71, 0, 4, 2, 17, 71, 3, 71, 38, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178,
+			36, 57, 65, 0, 0, 6, 195, 25, 35, 93, 73, 10, 2, 95, 54, 91, 6, 121, 95, 111, 0, 0, 10, 2, 95, 53, 48, 38, 6, 120,
+			111, 0, 0, 13, 2, 95, 52, 78, 117, 47, 6, 115, 51, 38, 117, 0, 0, 13, 2, 95, 59, 47, 6, 39, 78, 49, 88, 35, 48, 0,
+			0, 15, 2, 95, 58, 72, 84, 126, 36, 47, 6, 39, 78, 37, 36, 0, 0, 11, 2, 95, 57, 112, 6, 36, 84, 119, 111, 0, 0, 11,
+			2, 95, 56, 84, 6, 39, 95, 123, 65, 0, 0, 12, 2, 95, 63, 84, 39, 48, 34, 6, 39, 89, 0, 0, 12, 2, 95, 62, 71, 6,
+			39, 55, 38, 91, 121, 0, 0, 0, 12, 2, 95, 60, 65, 6, 36, 50, 38, 91, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 91, 6, 39, 47, 49, 34, 49, 84, 35, 72, 34, 35,
+			47, 0, 0, 0, 0, 0, 0, 9, 198, 64, 240, 148, 20, 100, 192, 74, 0, 17, 2, 95, 93, 88, 6, 35, 49, 34, 49, 84, 35, 72,
+			34, 35, 47, 0, 0, 0, 0, 0, 0, 12, 2, 95, 96, 35, 49, 110, 6, 121, 50, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 95, 123, 6, 39, 47, 49, 34, 83, 37, 81, 40, 34, 0, 0, 0, 0,
+			0, 0, 0, 15, 2, 95, 125, 88, 6, 35, 49, 34, 83, 37, 81, 40, 34, 0, 0, 10, 2, 95, 124, 84, 6, 36, 34, 47, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 9, 65, 70, 52, 73, 0, 0, 0, 0, 18, 5, 95, 49, 77, 65, 51, 113, 4, 117, 55, 117, 38, 6, 35, 34, 47, 0,
+			0, 17, 5, 95, 49, 77, 65, 50, 113, 4, 117, 55, 117, 38, 6, 39, 50, 0, 0, 15, 5, 95, 49, 77, 65, 49, 47, 6, 115, 95,
+			117, 78, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 64, 240, 148, 20, 99, 64, 74, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 241, 198, 52, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 17,
+			0, 4, 2, 32, 3, 35, 0, 8, 0, 8, 2, 32, 0, 4, 3, 126, 0, 1, 17, 66, 2, 32, 0, 7, 6, 1, 18, 0, 4, 2,
+			32, 3, 48, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209,
+			130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209,
+			140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 135, 0, 2, 209, 137, 0, 4, 2, 208, 191, 17, 71, 3, 48, 38, 0, 2, 208, 191, 209,
+			140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0,
+			2, 209, 140, 32, 0, 3, 71, 0, 4, 2, 17, 71, 3, 71, 38, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0,
+			2, 208, 177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0,
+			2, 208, 178, 17, 71, 0, 2, 208, 178, 209, 140, 0, 2, 208, 188, 17, 71, 0, 2, 208, 188, 209, 140, 0, 2, 209, 140, 0, 8, 2,
+			32, 3, 71, 121, 0, 7, 6, 1, 19, 0, 4, 2, 32, 3, 83, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 209,
+			129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209,
+			133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 135, 0, 2, 209, 137, 0, 4, 2,
+			208, 191, 39, 3, 83, 38, 0, 2, 209, 132, 39, 0, 2, 209, 140, 32, 0, 3, 84, 0, 4, 2, 17, 71, 3, 84, 38, 0, 2, 208,
+			177, 17, 71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 178, 17, 71, 0, 2, 208, 178, 208, 177, 17, 71, 0, 2, 208, 178, 208, 177, 209,
+			140, 0, 2, 208, 178, 208, 188, 17, 71, 0, 2, 208, 178, 208, 188, 209, 140, 0, 2, 208, 178, 209, 140, 0, 2, 208, 188, 17, 71, 0,
+			2, 208, 188, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 84, 121, 0, 7, 6, 1, 20, 0, 4, 2, 32, 3, 49, 0, 2, 208,
+			191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209,
+			130, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209,
+			140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0,
+			4, 3, 81, 0, 8, 190, 208, 189, 208, 188, 208, 2, 208, 190, 32, 0, 4, 2, 17, 71, 3, 81, 38, 0, 2, 209, 140, 0, 8, 2,
+			32, 3, 81, 121, 0, 4, 1, 181, 208, 2, 208, 190, 209, 129, 209, 143, 32, 3, 84, 0, 1, 181, 208, 17, 67, 2, 208, 190, 32, 0,
+			1, 190, 208, 17, 67, 2, 208, 190, 32, 0, 8, 181, 208, 2, 208, 190, 32, 0, 8, 181, 208, 129, 209, 2, 208, 190, 0, 8, 181, 208,
+			129, 209, 178, 208, 2, 208, 190, 32, 0, 8, 181, 208, 189, 208, 2, 208, 190, 32, 0, 8, 181, 208, 190, 208, 178, 208, 130, 209, 2, 208,
+			190, 32, 0, 8, 181, 208, 190, 208, 188, 208, 2, 208, 190, 32, 0, 2, 208, 186, 3, 101, 0, 7, 6, 1, 21, 0, 4, 2, 32, 3,
+			47, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17,
+			71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 133, 17, 71, 0,
+			2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 3, 72, 0, 8, 2, 32, 3, 72,
+			121, 0, 4, 2, 209, 129, 17, 71, 3, 111, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2,
+			209, 140, 32, 0, 4, 2, 17, 66, 3, 112, 0, 2, 17, 71, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183,
+			17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 189, 209, 140, 0, 2, 209, 140, 0, 7, 6, 1, 22, 0, 3, 36, 0, 4, 1, 17,
+			65, 3, 57, 36, 0, 1, 138, 209, 0, 1, 140, 209, 0, 8, 2, 32, 0, 4, 1, 17, 65, 2, 32, 3, 57, 119, 0, 1, 138, 209,
+			2, 32, 0, 1, 140, 209, 2, 32, 0, 8, 0, 4, 1, 130, 209, 2, 209, 129, 209, 130, 3, 125, 0, 1, 130, 209, 128, 209, 176, 208,
+			177, 208, 2, 209, 128, 0, 1, 130, 209, 142, 209, 140, 209, 191, 208, 188, 208, 190, 208, 186, 208, 2, 209, 128, 0, 1, 130, 209, 186, 208,
+			176, 208, 177, 208, 2, 209, 128, 0, 1, 130, 209, 189, 208, 184, 208, 2, 209, 128, 0, 7, 6, 1, 23, 0, 3, 90, 0, 8, 2, 32,
+			3, 90, 121, 0, 4, 2, 32, 3, 91, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208,
+			191, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209,
+			132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 133, 17,
+			71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 209, 135, 3, 97, 0, 7,
+			6, 1, 24, 0, 3, 88, 0, 8, 2, 32, 3, 88, 121, 0, 4, 2, 32, 3, 89, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209,
+			140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209,
+			132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208,
+			186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 137, 0, 2, 208, 182, 3, 90, 0, 2, 209, 136, 3, 91, 0, 4, 2, 17, 71,
+			3, 94, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 208, 180, 17, 71, 0, 2,
+			208, 183, 208, 180, 209, 140, 0, 2, 208, 183, 208, 189, 17, 66, 0, 2, 208, 183, 208, 189, 17, 71, 0, 2, 208, 183, 208, 189, 209, 140,
+			0, 2, 208, 183, 209, 140, 0, 2, 208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209, 140, 0, 4,
+			2, 208, 183, 17, 71, 32, 3, 95, 0, 2, 208, 183, 208, 180, 17, 71, 32, 0, 2, 208, 183, 208, 180, 209, 140, 32, 0, 2, 208, 183,
+			208, 189, 17, 66, 32, 0, 2, 208, 183, 208, 189, 17, 71, 32, 0, 2, 208, 183, 208, 189, 209, 140, 32, 0, 2, 208, 183, 209, 140, 32,
+			0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 4, 209, 135, 3, 97,
+			0, 209, 137, 0, 7, 6, 1, 25, 0, 4, 3, 37, 0, 8, 2, 32, 0, 4, 1, 17, 68, 3, 115, 0, 1, 136, 209, 0, 1, 182,
+			208, 0, 4, 2, 32, 3, 117, 0, 8, 0, 7, 6, 1, 26, 0, 8, 2, 32, 3, 4, 37, 6, 49, 14, 16, 6, 134, 47, 49, 127,
+			57, 117, 0, 3, 57, 0, 7, 6, 1, 27, 0, 3, 49, 0, 4, 2, 17, 71, 3, 49, 38, 0, 2, 209, 140, 0, 8, 2, 32, 3,
+			49, 134, 0, 4, 2, 208, 177, 3, 81, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17,
+			71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0,
+			2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 7, 6, 1, 28, 0, 3, 55, 0, 2, 17,
+			71, 3, 61, 0, 8, 2, 32, 3, 121, 61, 0, 7, 6, 1, 29, 0, 3, 65, 0, 4, 2, 17, 71, 3, 113, 0, 2, 208, 177, 17,
+			71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 178, 17, 71, 0, 2, 208, 178, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209,
+			140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0,
+			2, 209, 140, 0, 8, 2, 32, 3, 121, 65, 0, 7, 6, 1, 30, 0, 3, 50, 0, 208, 181, 1, 183, 208, 184, 208, 177, 208, 2, 209,
+			129, 3, 50, 125, 0, 2, 32, 3, 108, 0, 8, 2, 32, 3, 121, 108, 0, 7, 6, 1, 31, 0, 3, 39, 0, 7, 6, 1, 32, 0,
+			3, 48, 0, 4, 2, 17, 71, 3, 48, 38, 0, 2, 208, 188, 17, 71, 0, 2, 208, 188, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2,
+			208, 191, 208, 188, 17, 71, 0, 2, 208, 191, 208, 188, 209, 140, 0, 2, 208, 191, 209, 132, 17, 71, 0, 2, 208, 191, 209, 132, 209, 140,
+			0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2,
+			209, 132, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 48, 121, 0, 4, 2, 208, 177, 3, 71, 0, 2, 208, 179, 0, 2, 208, 179,
+			17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140,
+			0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 177, 39, 3, 71, 38, 0, 7,
+			6, 1, 33, 0, 3, 34, 0, 4, 2, 17, 66, 3, 34, 38, 0, 2, 17, 71, 0, 2, 209, 140, 3, 34, 114, 0, 8, 2, 32, 3,
+			121, 34, 0, 7, 6, 1, 34, 0, 4, 2, 208, 177, 3, 88, 0, 2, 208, 179, 0, 2, 208, 180, 0, 2, 208, 182, 0, 2, 208, 183,
+			0, 4, 3, 89, 0, 2, 209, 130, 209, 140, 0, 2, 208, 182, 3, 90, 0, 2, 209, 136, 3, 91, 0, 4, 2, 208, 180, 17, 66, 3,
+			94, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 4, 2, 17, 71,
+			3, 95, 0, 2, 208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129,
+			209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 140, 0, 2, 209, 137, 3, 95, 95, 0, 209, 135, 3, 97, 0, 8, 2, 32, 3, 121,
+			89, 0, 7, 6, 1, 35, 0, 3, 47, 0, 8, 2, 32, 3, 47, 121, 0, 4, 2, 208, 177, 3, 72, 0, 2, 208, 179, 0, 2, 208,
+			180, 0, 2, 208, 182, 0, 2, 208, 182, 0, 2, 208, 183, 0, 209, 129, 1, 17, 71, 3, 110, 0, 4, 2, 17, 71, 3, 111, 0, 2,
+			208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2,
+			209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 140, 0, 4, 2, 208, 180, 17, 66, 3, 112, 0, 2, 208, 180, 17, 71, 0,
+			2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 7, 6, 1, 36, 0, 4, 3, 40, 0, 8, 2, 32,
+			0, 1, 17, 66, 3, 129, 0, 7, 6, 1, 37, 0, 3, 83, 0, 4, 2, 17, 71, 3, 83, 38, 0, 2, 208, 188, 17, 71, 0, 2,
+			208, 188, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 208, 188, 17, 71, 0, 2, 208, 191, 208, 188, 209, 140, 0, 2, 208, 191,
+			209, 132, 17, 71, 0, 2, 208, 191, 209, 132, 209, 140, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 140,
+			0, 2, 209, 140, 0, 4, 2, 208, 177, 3, 84, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208,
+			180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208,
+			183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 177, 39, 3, 84, 38, 0, 8, 2, 32, 3, 121, 83, 0, 7, 6, 1, 38, 0,
+			4, 3, 101, 0, 2, 17, 71, 0, 2, 32, 208, 177, 209, 139, 0, 2, 208, 177, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178,
 			17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177,
-			209, 140, 0, 2, 208, 178, 17, 71, 0, 2, 208, 178, 209, 140, 0, 2, 208, 188, 17, 71, 0, 2, 208, 188, 209, 140, 0, 2, 209, 140,
-			0, 8, 2, 32, 3, 71, 121, 0, 7, 6, 1, 19, 0, 4, 2, 32, 3, 83, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140,
-			0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 133, 17, 71,
-			0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 135, 0, 2, 209, 137,
-			0, 4, 2, 208, 191, 39, 3, 83, 38, 0, 2, 209, 132, 39, 0, 2, 209, 140, 32, 0, 3, 84, 0, 4, 2, 17, 71, 3, 84, 38,
-			0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 178, 17, 71, 0, 2, 208, 178, 208, 177, 17, 71, 0, 2, 208, 178,
-			208, 177, 209, 140, 0, 2, 208, 178, 208, 188, 17, 71, 0, 2, 208, 178, 208, 188, 209, 140, 0, 2, 208, 178, 209, 140, 0, 2, 208, 188,
-			17, 71, 0, 2, 208, 188, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 84, 121, 0, 7, 6, 1, 20, 0, 4, 2, 32, 3, 49,
-			0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71,
-			0, 2, 209, 130, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2,
-			209, 132, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133,
-			209, 140, 0, 4, 3, 81, 0, 8, 190, 208, 189, 208, 188, 208, 2, 208, 190, 32, 0, 4, 2, 17, 71, 3, 81, 38, 0, 2, 209, 140,
-			0, 8, 2, 32, 3, 81, 121, 0, 4, 1, 181, 208, 2, 208, 190, 209, 129, 209, 143, 32, 3, 84, 0, 1, 181, 208, 17, 67, 2, 208,
-			190, 32, 0, 1, 190, 208, 17, 67, 2, 208, 190, 32, 0, 8, 181, 208, 2, 208, 190, 32, 0, 8, 181, 208, 129, 209, 2, 208, 190, 0,
-			8, 181, 208, 129, 209, 178, 208, 2, 208, 190, 32, 0, 8, 181, 208, 189, 208, 2, 208, 190, 32, 0, 8, 181, 208, 190, 208, 178, 208, 130,
-			209, 2, 208, 190, 32, 0, 8, 181, 208, 190, 208, 188, 208, 2, 208, 190, 32, 0, 2, 208, 186, 3, 101, 0, 7, 6, 1, 21, 0, 4,
-			2, 32, 3, 47, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2,
-			209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 133,
-			17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 3, 72, 0, 8, 2,
-			32, 3, 72, 121, 0, 4, 2, 209, 129, 17, 71, 3, 111, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209,
-			140, 0, 2, 209, 140, 32, 0, 4, 2, 17, 66, 3, 112, 0, 2, 17, 71, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0,
-			2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 189, 209, 140, 0, 2, 209, 140, 0, 7, 6, 1, 22, 0, 3, 36, 0,
-			4, 1, 17, 65, 3, 57, 36, 0, 1, 138, 209, 0, 1, 140, 209, 0, 8, 2, 32, 0, 4, 1, 17, 65, 2, 32, 3, 57, 119, 0,
-			1, 138, 209, 2, 32, 0, 1, 140, 209, 2, 32, 0, 8, 0, 4, 1, 130, 209, 2, 209, 129, 209, 130, 3, 125, 0, 1, 130, 209, 128,
-			209, 176, 208, 177, 208, 2, 209, 128, 0, 1, 130, 209, 142, 209, 140, 209, 191, 208, 188, 208, 190, 208, 186, 208, 2, 209, 128, 0, 1, 130,
-			209, 186, 208, 176, 208, 177, 208, 2, 209, 128, 0, 1, 130, 209, 189, 208, 184, 208, 2, 209, 128, 0, 7, 6, 1, 23, 0, 3, 90, 0,
-			8, 2, 32, 3, 90, 121, 0, 4, 2, 32, 3, 91, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 208, 191, 17, 71,
-			0, 2, 208, 191, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140,
-			0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2,
-			209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2, 209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 209, 135, 3,
-			97, 0, 7, 6, 1, 24, 0, 3, 88, 0, 8, 2, 32, 3, 88, 121, 0, 4, 2, 32, 3, 89, 0, 2, 208, 186, 17, 71, 0, 2,
-			208, 186, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71,
-			0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 133, 17, 71, 0, 2, 209, 133, 208, 186, 17, 71, 0, 2,
-			209, 133, 208, 186, 209, 140, 0, 2, 209, 133, 209, 140, 0, 2, 209, 137, 0, 2, 208, 182, 3, 90, 0, 2, 209, 136, 3, 91, 0, 4,
-			2, 17, 71, 3, 94, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 208, 180, 17,
-			71, 0, 2, 208, 183, 208, 180, 209, 140, 0, 2, 208, 183, 208, 189, 17, 66, 0, 2, 208, 183, 208, 189, 17, 71, 0, 2, 208, 183, 208,
-			189, 209, 140, 0, 2, 208, 183, 209, 140, 0, 2, 208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209,
-			140, 0, 4, 2, 208, 183, 17, 71, 32, 3, 95, 0, 2, 208, 183, 208, 180, 17, 71, 32, 0, 2, 208, 183, 208, 180, 209, 140, 32, 0,
-			2, 208, 183, 208, 189, 17, 66, 32, 0, 2, 208, 183, 208, 189, 17, 71, 32, 0, 2, 208, 183, 208, 189, 209, 140, 32, 0, 2, 208, 183,
-			209, 140, 32, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 4, 209,
-			135, 3, 97, 0, 209, 137, 0, 7, 6, 1, 25, 0, 4, 3, 37, 0, 8, 2, 32, 0, 4, 1, 17, 68, 3, 115, 0, 1, 136, 209,
-			0, 1, 182, 208, 0, 4, 2, 32, 3, 117, 0, 8, 0, 7, 6, 1, 26, 0, 8, 2, 32, 3, 4, 37, 6, 49, 14, 16, 6, 134,
-			47, 49, 127, 57, 117, 0, 3, 57, 0, 7, 6, 1, 27, 0, 3, 49, 0, 4, 2, 17, 71, 3, 49, 38, 0, 2, 209, 140, 0, 8,
-			2, 32, 3, 49, 134, 0, 4, 2, 208, 177, 3, 81, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2,
+			209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2,
+			208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140,
+			0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 101, 134, 0, 7, 6, 1, 39, 0, 4,
+			2, 208, 177, 3, 72, 88, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2,
+			208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71,
+			0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2,
+			208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 110, 0, 8, 2, 32, 3, 110, 121, 0, 7,
+			6, 1, 40, 0, 1, 131, 209, 187, 208, 2, 209, 136, 208, 181, 3, 47, 0, 4, 2, 208, 177, 3, 77, 0, 2, 208, 177, 17, 71, 0,
+			2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209,
+			140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208,
+			180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0,
+			2, 208, 183, 209, 140, 0, 3, 78, 0, 8, 2, 32, 3, 78, 36, 0, 4, 1, 131, 209, 186, 208, 129, 209, 2, 208, 189, 3, 91, 0,
+			1, 143, 209, 130, 209, 129, 209, 131, 209, 191, 208, 2, 208, 189, 0, 1, 181, 208, 128, 209, 190, 208, 178, 208, 186, 208, 129, 209, 2, 208,
+			189, 0, 1, 181, 208, 189, 208, 190, 208, 186, 208, 2, 208, 189, 208, 190, 0, 1, 184, 208, 143, 209, 2, 208, 189, 208, 184, 0, 1, 184,
+			208, 178, 208, 181, 208, 180, 208, 2, 208, 189, 0, 2, 208, 189, 208, 176, 32, 0, 2, 208, 189, 208, 181, 32, 0, 2, 208, 189, 208, 190,
+			208, 185, 32, 0, 2, 208, 189, 209, 131, 32, 0, 2, 208, 189, 209, 139, 32, 0, 8, 2, 209, 130, 208, 190, 0, 7, 6, 1, 41, 0,
+			4, 2, 208, 177, 3, 90, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2,
+			208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71,
+			0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2,
+			208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 91, 0, 8, 2, 32, 3, 91, 134, 0, 7,
+			6, 1, 42, 0, 4, 2, 208, 177, 3, 96, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178,
+			209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2,
 			208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180,
-			209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 7, 6, 1, 28, 0, 3, 55,
-			0, 2, 17, 71, 3, 61, 0, 8, 2, 32, 3, 121, 61, 0, 7, 6, 1, 29, 0, 3, 65, 0, 4, 2, 17, 71, 3, 113, 0, 2,
-			208, 177, 17, 71, 0, 2, 208, 177, 209, 140, 0, 2, 208, 178, 17, 71, 0, 2, 208, 178, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2,
-			208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209, 140, 0, 2, 209, 132,
-			209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 121, 65, 0, 7, 6, 1, 30, 0, 3, 50, 0, 208, 181, 1, 183, 208, 184, 208, 177,
-			208, 2, 209, 129, 3, 50, 125, 0, 2, 32, 3, 108, 0, 8, 2, 32, 3, 121, 108, 0, 7, 6, 1, 31, 0, 3, 39, 0, 7, 6,
-			1, 32, 0, 3, 48, 0, 4, 2, 17, 71, 3, 48, 38, 0, 2, 208, 188, 17, 71, 0, 2, 208, 188, 209, 140, 0, 2, 208, 191, 17,
-			71, 0, 2, 208, 191, 208, 188, 17, 71, 0, 2, 208, 191, 208, 188, 209, 140, 0, 2, 208, 191, 209, 132, 17, 71, 0, 2, 208, 191, 209,
-			132, 209, 140, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 17, 71, 0, 2, 209, 132, 209, 132, 209,
-			140, 0, 2, 209, 132, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 48, 121, 0, 4, 2, 208, 177, 3, 71, 0, 2, 208, 179, 0,
-			2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208,
-			180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 177, 39, 3, 71,
-			38, 0, 7, 6, 1, 33, 0, 3, 34, 0, 4, 2, 17, 66, 3, 34, 38, 0, 2, 17, 71, 0, 2, 209, 140, 3, 34, 114, 0, 8,
-			2, 32, 3, 121, 34, 0, 7, 6, 1, 34, 0, 4, 2, 208, 177, 3, 88, 0, 2, 208, 179, 0, 2, 208, 180, 0, 2, 208, 182, 0,
-			2, 208, 183, 0, 4, 3, 89, 0, 2, 209, 130, 209, 140, 0, 2, 208, 182, 3, 90, 0, 2, 209, 136, 3, 91, 0, 4, 2, 208, 180,
-			17, 66, 3, 94, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 4,
-			2, 17, 71, 3, 95, 0, 2, 208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209, 129, 17, 71, 0,
-			2, 209, 129, 209, 140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 140, 0, 2, 209, 137, 3, 95, 95, 0, 209, 135, 3, 97, 0, 8, 2,
-			32, 3, 121, 89, 0, 7, 6, 1, 35, 0, 3, 47, 0, 8, 2, 32, 3, 47, 121, 0, 4, 2, 208, 177, 3, 72, 0, 2, 208, 179,
-			0, 2, 208, 180, 0, 2, 208, 182, 0, 2, 208, 182, 0, 2, 208, 183, 0, 209, 129, 1, 17, 71, 3, 110, 0, 4, 2, 17, 71, 3,
-			111, 0, 2, 208, 189, 17, 66, 0, 2, 208, 189, 17, 71, 0, 2, 208, 189, 209, 140, 0, 2, 209, 129, 17, 71, 0, 2, 209, 129, 209,
-			140, 0, 2, 209, 130, 17, 71, 0, 2, 209, 130, 209, 140, 0, 2, 209, 140, 0, 4, 2, 208, 180, 17, 66, 3, 112, 0, 2, 208, 180,
-			17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 7, 6, 1, 36, 0, 4, 3, 40, 0,
-			8, 2, 32, 0, 1, 17, 66, 3, 129, 0, 7, 6, 1, 37, 0, 3, 83, 0, 4, 2, 17, 71, 3, 83, 38, 0, 2, 208, 188, 17,
-			71, 0, 2, 208, 188, 209, 140, 0, 2, 208, 191, 17, 71, 0, 2, 208, 191, 208, 188, 17, 71, 0, 2, 208, 191, 208, 188, 209, 140, 0,
-			2, 208, 191, 209, 132, 17, 71, 0, 2, 208, 191, 209, 132, 209, 140, 0, 2, 208, 191, 209, 140, 0, 2, 209, 132, 17, 71, 0, 2, 209,
-			132, 209, 140, 0, 2, 209, 140, 0, 4, 2, 208, 177, 3, 84, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140,
-			0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183,
-			0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 2, 208, 177, 39, 3, 84, 38, 0, 8, 2, 32, 3, 121, 83, 0, 7, 6,
-			1, 38, 0, 4, 3, 101, 0, 2, 17, 71, 0, 2, 32, 208, 177, 209, 139, 0, 2, 208, 177, 0, 2, 208, 177, 17, 71, 0, 2, 208,
-			177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0,
-			2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17,
-			66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208,
-			183, 209, 140, 0, 2, 208, 186, 17, 71, 0, 2, 208, 186, 209, 140, 0, 2, 209, 140, 0, 8, 2, 32, 3, 101, 134, 0, 7, 6, 1,
-			39, 0, 4, 2, 208, 177, 3, 72, 88, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209,
-			140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208,
-			179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209,
-			140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 110, 0, 8, 2, 32, 3, 110,
-			121, 0, 7, 6, 1, 40, 0, 1, 131, 209, 187, 208, 2, 209, 136, 208, 181, 3, 47, 0, 4, 2, 208, 177, 3, 77, 0, 2, 208, 177,
-			17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177,
-			208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180,
-			0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183,
-			17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 78, 0, 8, 2, 32, 3, 78, 36, 0, 4, 1, 131, 209, 186, 208, 129, 209, 2, 208, 189,
-			3, 91, 0, 1, 143, 209, 130, 209, 129, 209, 131, 209, 191, 208, 2, 208, 189, 0, 1, 181, 208, 128, 209, 190, 208, 178, 208, 186, 208, 129,
-			209, 2, 208, 189, 0, 1, 181, 208, 189, 208, 190, 208, 186, 208, 2, 208, 189, 208, 190, 0, 1, 184, 208, 143, 209, 2, 208, 189, 208, 184,
-			0, 1, 184, 208, 178, 208, 181, 208, 180, 208, 2, 208, 189, 0, 2, 208, 189, 208, 176, 32, 0, 2, 208, 189, 208, 181, 32, 0, 2, 208,
-			189, 208, 190, 208, 185, 32, 0, 2, 208, 189, 209, 131, 32, 0, 2, 208, 189, 209, 139, 32, 0, 8, 2, 209, 130, 208, 190, 0, 7, 6,
-			1, 41, 0, 4, 2, 208, 177, 3, 90, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208, 177, 208, 178, 209,
-			140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208, 179, 0, 2, 208,
-			179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0, 2, 208, 180, 209,
-			140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 91, 0, 8, 2, 32, 3, 91,
-			134, 0, 7, 6, 1, 42, 0, 4, 2, 208, 177, 3, 96, 0, 2, 208, 177, 17, 71, 0, 2, 208, 177, 208, 178, 17, 71, 0, 2, 208,
-			177, 208, 178, 209, 140, 0, 2, 208, 177, 208, 188, 17, 71, 0, 2, 208, 177, 208, 188, 209, 140, 0, 2, 208, 177, 209, 140, 0, 2, 208,
-			179, 0, 2, 208, 179, 17, 71, 0, 2, 208, 179, 209, 140, 0, 2, 208, 180, 0, 2, 208, 180, 17, 66, 0, 2, 208, 180, 17, 71, 0,
-			2, 208, 180, 209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 97, 0, 8,
-			2, 32, 3, 97, 120, 0, 7, 6, 1, 43, 0, 3, 0, 8, 2, 32, 3, 47, 84, 38, 6, 128, 14, 16, 72, 115, 57, 88, 50, 6,
-			134, 49, 0, 2, 17, 71, 3, 57, 0, 7, 6, 1, 44, 0, 4, 3, 115, 0, 8, 2, 32, 0, 7, 6, 1, 45, 0, 3, 0, 2,
-			17, 71, 3, 57, 0, 8, 2, 32, 3, 113, 6, 120, 49, 38, 116, 57, 88, 50, 6, 134, 49, 0, 7, 6, 1, 46, 0, 8, 2, 32,
-			3, 36, 0, 4, 2, 32, 3, 122, 0, 8, 0, 3, 123, 0, 7, 6, 1, 47, 0, 1, 131, 209, 180, 208, 181, 208, 187, 208, 129, 209,
-			2, 209, 137, 3, 0, 3, 130, 0, 4, 1, 17, 65, 3, 131, 0, 1, 138, 209, 0, 1, 140, 209, 0, 8, 0, 8, 2, 32, 0, 7,
-			6, 1, 48, 0, 4, 1, 17, 65, 3, 120, 0, 1, 17, 65, 2, 32, 0, 1, 138, 209, 0, 1, 138, 209, 2, 32, 0, 1, 140, 209,
-			0, 1, 140, 209, 2, 32, 0, 8, 0, 8, 2, 32, 0, 4, 3, 126, 0, 2, 32, 0, 7, 6, 1, 50, 0, 8, 3, 6, 57, 128,
-			0, 4, 1, 136, 209, 3, 6, 127, 0, 1, 182, 208, 0, 3, 6, 128, 0, 8, 2, 32, 3, 57, 128, 0, 7, 6, 0, 36, 3, 72,
-			39, 55, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts54 = FileInMemory_createWithData (6157, reinterpret_cast<const char *> (&espeakdata_dicts54_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ru_dict", 
+			209, 140, 0, 2, 208, 182, 0, 2, 208, 183, 0, 2, 208, 183, 17, 71, 0, 2, 208, 183, 209, 140, 0, 3, 97, 0, 8, 2, 32, 3,
+			97, 120, 0, 7, 6, 1, 43, 0, 3, 0, 8, 2, 32, 3, 47, 84, 38, 6, 128, 14, 16, 72, 115, 57, 88, 50, 6, 134, 49, 0,
+			2, 17, 71, 3, 57, 0, 7, 6, 1, 44, 0, 4, 3, 115, 0, 8, 2, 32, 0, 7, 6, 1, 45, 0, 3, 0, 2, 17, 71, 3,
+			57, 0, 8, 2, 32, 3, 113, 6, 120, 49, 38, 116, 57, 88, 50, 6, 134, 49, 0, 7, 6, 1, 46, 0, 8, 2, 32, 3, 36, 0,
+			4, 2, 32, 3, 122, 0, 8, 0, 3, 123, 0, 7, 6, 1, 47, 0, 1, 131, 209, 180, 208, 181, 208, 187, 208, 129, 209, 2, 209, 137,
+			3, 0, 3, 130, 0, 4, 1, 17, 65, 3, 131, 0, 1, 138, 209, 0, 1, 140, 209, 0, 8, 0, 8, 2, 32, 0, 7, 6, 1, 48,
+			0, 4, 1, 17, 65, 3, 120, 0, 1, 17, 65, 2, 32, 0, 1, 138, 209, 0, 1, 138, 209, 2, 32, 0, 1, 140, 209, 0, 1, 140,
+			209, 2, 32, 0, 8, 0, 8, 2, 32, 0, 4, 3, 126, 0, 2, 32, 0, 7, 6, 1, 50, 0, 8, 3, 6, 57, 128, 0, 4, 1,
+			136, 209, 3, 6, 127, 0, 1, 182, 208, 0, 3, 6, 128, 0, 8, 2, 32, 3, 57, 128, 0, 7, 6, 0, 209, 150, 3, 37, 0, 209,
+			156, 3, 49, 57, 0, 209, 153, 3, 55, 57, 0, 209, 152, 3, 57, 0, 209, 151, 3, 57, 37, 0, 209, 148, 3, 57, 121, 0, 209, 158,
+			3, 58, 0, 36, 3, 72, 39, 55, 35, 34, 0, 209, 159, 3, 75, 0, 4, 209, 146, 3, 77, 0, 209, 147, 0, 209, 155, 3, 78, 0,
+			210, 145, 3, 81, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts56 = FileInMemory_createWithData (6217, reinterpret_cast<const char *> (&espeakdata_dicts56_data), 
+			U"espeak-1.48.04-source/espeak-data/ru_dict", 
 			U"ru");
-		Collection_addItem (me.peek(), espeakdata_dicts54.transfer());
-
-		static unsigned char espeakdata_dicts55_data[2251] = {
-			0, 4, 0, 0, 171, 7, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 12, 0, 0, 0, 0, 0, 7, 65, 8, 71, 35, 12, 0,
-			0, 0, 0, 0, 7, 65, 12, 80, 35, 12, 0, 0, 0, 0, 0, 7, 65, 16, 72, 35, 12, 0, 0, 0, 0, 0, 6, 65, 20, 36,
-			12, 0, 0, 0, 0, 0, 7, 65, 24, 83, 35, 12, 0, 0, 0, 0, 0, 7, 65, 28, 81, 35, 12, 0, 0, 0, 0, 0, 7, 65,
-			32, 107, 35, 12, 0, 0, 0, 0, 0, 6, 65, 36, 37, 12, 0, 0, 0, 0, 0, 7, 65, 40, 75, 35, 12, 0, 0, 0, 0, 0,
-			7, 65, 44, 49, 35, 12, 0, 0, 0, 0, 0, 7, 65, 48, 55, 35, 12, 0, 0, 0, 0, 0, 7, 65, 52, 65, 35, 12, 0, 0,
-			0, 0, 0, 10, 5, 95, 48, 1, 14, 4, 50, 35, 0, 7, 65, 56, 50, 35, 12, 0, 0, 0, 0, 0, 6, 65, 60, 39, 12, 0,
-			0, 0, 0, 0, 7, 65, 64, 48, 35, 12, 0, 0, 0, 0, 0, 8, 65, 68, 49, 58, 35, 12, 0, 0, 0, 0, 0, 7, 65, 72,
-			16, 35, 12, 0, 0, 0, 0, 0, 7, 65, 76, 89, 35, 12, 0, 0, 0, 0, 0, 7, 65, 80, 47, 35, 12, 0, 0, 0, 0, 0,
-			6, 65, 84, 40, 12, 0, 0, 0, 0, 0, 7, 65, 88, 84, 35, 12, 0, 0, 0, 0, 0, 7, 65, 92, 58, 35, 12, 0, 0, 0,
-			0, 0, 16, 4, 95, 49, 77, 49, 37, 79, 37, 107, 6, 40, 65, 71, 37, 0, 7, 65, 96, 36, 49, 89, 0, 0, 20, 4, 95, 49,
-			77, 50, 65, 37, 55, 37, 57, 6, 39, 50, 6, 37, 65, 58, 36, 0, 0, 0, 0, 7, 65, 100, 57, 35, 12, 0, 0, 0, 0, 0,
-			7, 65, 104, 88, 35, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 23, 4, 95, 50, 77, 49, 37, 82, 37, 107, 6, 40, 65, 71, 37, 71, 37, 82, 6, 37, 16, 37, 0, 0, 22, 4, 95,
-			50, 77, 50, 65, 37, 55, 37, 57, 6, 39, 50, 36, 82, 57, 6, 37, 16, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 4, 16, 20, 10, 50, 37, 82, 6, 37, 76, 36, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 23, 4, 95, 51, 77, 49, 37, 82, 37, 107, 6, 40, 65, 71, 37, 71, 37, 47, 6, 35, 47, 40, 0,
-			0, 21, 4, 95, 51, 77, 50, 65, 37, 55, 37, 57, 6, 39, 50, 36, 91, 6, 35, 47, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4,
-			95, 53, 77, 49, 37, 82, 37, 107, 6, 40, 65, 71, 37, 71, 37, 47, 6, 35, 50, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95,
-			51, 88, 65, 37, 16, 4, 39, 68, 81, 58, 37, 47, 6, 35, 47, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49,
-			67, 37, 75, 6, 35, 50, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 50, 67, 65, 35, 81, 4, 35, 50, 35, 82, 6,
-			37, 16, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 51, 67, 65, 35, 81, 4, 35, 50, 35, 47, 6, 35, 47, 40, 0,
-			0, 0, 0, 26, 4, 95, 54, 77, 49, 37, 82, 37, 107, 6, 40, 65, 71, 37, 71, 37, 47, 35, 50, 72, 6, 35, 47, 40, 0, 0,
-			0, 0, 0, 22, 3, 95, 55, 88, 65, 37, 16, 4, 39, 68, 81, 58, 37, 16, 6, 37, 50, 72, 58, 37, 0, 0, 16, 3, 95, 52,
-			67, 65, 35, 81, 4, 35, 50, 6, 35, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 53, 67, 65, 35, 81, 4, 35,
-			50, 35, 47, 6, 35, 50, 40, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 88, 37, 76, 6, 40, 65, 37, 0, 0, 21, 3,
-			95, 54, 67, 65, 35, 81, 4, 35, 50, 35, 47, 35, 50, 72, 6, 35, 47, 40, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 50,
-			88, 65, 35, 49, 40, 65, 57, 35, 82, 6, 37, 16, 37, 0, 0, 20, 3, 95, 55, 67, 65, 35, 81, 4, 35, 50, 35, 16, 6, 37,
-			50, 72, 58, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 56, 67, 65, 35, 81, 4, 35, 50, 37, 50, 6, 35, 50, 37,
-			0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 52, 88, 65, 37, 16, 4, 39, 68, 81, 58, 6, 37, 50, 36, 0, 0, 20, 3, 95,
-			57, 67, 65, 35, 81, 4, 35, 50, 35, 49, 57, 6, 36, 50, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 53, 88, 65,
-			37, 16, 4, 39, 68, 81, 58, 37, 47, 6, 35, 50, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 3, 95, 54, 88, 65, 37, 16,
-			4, 39, 68, 81, 37, 47, 35, 50, 72, 6, 35, 47, 40, 0, 0, 0, 0, 0, 25, 4, 95, 55, 77, 49, 37, 82, 37, 107, 6, 40,
-			65, 71, 37, 71, 37, 16, 6, 37, 50, 72, 58, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 56, 88,
-			65, 37, 16, 4, 39, 68, 81, 58, 37, 50, 6, 35, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 57, 88, 65, 37,
-			16, 4, 39, 68, 81, 58, 36, 57, 6, 36, 50, 72, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4,
-			95, 48, 77, 50, 65, 37, 55, 37, 57, 6, 39, 50, 37, 0, 0, 0, 0, 16, 4, 95, 48, 77, 49, 37, 82, 37, 107, 6, 40, 65,
-			71, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 52, 77, 50, 65, 4, 37, 55, 37, 57, 6,
-			39, 50, 6, 36, 67, 36, 0, 0, 21, 4, 95, 52, 77, 49, 37, 82, 37, 107, 6, 40, 65, 71, 37, 71, 6, 37, 50, 36, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 12, 2, 95, 51, 81, 35, 47, 6, 35, 47, 40, 0, 0, 12, 2, 95, 50, 49, 35, 82, 6, 37, 16,
-			37, 0, 0, 11, 2, 95, 49, 51, 6, 37, 65, 58, 36, 0, 0, 10, 2, 95, 48, 88, 6, 36, 16, 40, 0, 0, 14, 2, 95, 55,
-			49, 35, 16, 6, 37, 50, 72, 58, 37, 0, 0, 15, 2, 95, 54, 81, 35, 47, 35, 50, 72, 6, 35, 47, 40, 0, 0, 12, 2, 95,
-			53, 81, 35, 47, 6, 35, 50, 40, 0, 0, 10, 2, 95, 52, 49, 6, 35, 50, 36, 0, 0, 0, 0, 13, 2, 95, 57, 37, 49, 57,
-			6, 36, 50, 72, 35, 0, 0, 13, 2, 95, 56, 40, 65, 40, 50, 6, 35, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 3, 35, 0, 7, 6, 98, 0, 4, 1, 109, 3, 71, 0, 8,
-			0, 3, 82, 0, 7, 6, 99, 0, 121, 3, 49, 57, 0, 3, 76, 0, 7, 6, 100, 0, 3, 72, 0, 7, 6, 101, 0, 3, 36, 0,
-			7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 101, 3, 79, 0, 2, 105, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0,
-			7, 6, 105, 0, 3, 37, 0, 7, 6, 106, 0, 3, 75, 0, 121, 3, 79, 57, 0, 7, 6, 107, 0, 3, 49, 0, 4, 2, 101, 3,
-			80, 0, 2, 105, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 112, 3, 65, 107, 0, 7, 6, 110, 0, 3, 50,
-			0, 116, 3, 50, 107, 0, 4, 2, 103, 101, 3, 67, 0, 2, 103, 105, 0, 121, 0, 2, 103, 3, 68, 0, 107, 3, 68, 101, 0, 7,
-			6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 104, 0, 7, 6, 114, 0, 3, 16, 0, 8, 3, 51,
-			0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 104, 121, 3, 97, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 3, 40,
-			0, 7, 6, 118, 0, 3, 80, 0, 7, 6, 119, 0, 3, 58, 0, 1, 98, 3, 81, 0, 7, 6, 120, 0, 3, 49, 89, 0, 8, 3,
-			88, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 39, 55, 35, 16, 35, 0, 7, 0,
-			0};
-		autoFileInMemory espeakdata_dicts55 = FileInMemory_createWithData (2250, reinterpret_cast<const char *> (&espeakdata_dicts55_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/rw_dict", 
-			U"rw");
-		Collection_addItem (me.peek(), espeakdata_dicts55.transfer());
+		my addItem_move (espeakdata_dicts56.move());
 
-		static unsigned char espeakdata_dicts56_data[2455] = {
-			0, 4, 0, 0, 253, 5, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
-			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 0, 0, 5, 65, 20, 112, 0, 0, 0,
-			0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 0,
-			0, 0, 6, 65, 36, 118, 57, 0, 0, 13, 1, 37, 89, 37, 57, 13, 57, 13, 140, 13, 0, 27, 0, 0, 0, 7, 65, 40, 75, 114,
-			57, 0, 0, 0, 16, 1, 42, 149, 89, 140, 13, 34, 37, 89, 49, 13, 57, 13, 0, 27, 0, 0, 7, 65, 44, 49, 114, 57, 0, 0,
-			0, 0, 0, 6, 65, 48, 116, 55, 0, 0, 0, 0, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 0, 6, 65, 56, 116, 50, 0, 0,
-			0, 0, 0, 5, 65, 60, 119, 0, 0, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 123, 0, 0,
-			0, 0, 0, 6, 65, 72, 118, 34, 0, 0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 0, 6, 65, 80, 138, 112, 0, 0,
-			0, 0, 0, 6, 65, 84, 57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 0, 11, 65, 92, 72, 35, 71, 35,
-			55, 57, 123, 0, 0, 0, 0, 0, 7, 65, 96, 116, 49, 89, 0, 0, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0,
-			7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 48, 67, 89, 37, 57, 13,
-			57, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 49, 57, 72, 35, 107, 13, 50, 35, 84, 13,
-			57, 13, 0, 0, 13, 3, 95, 49, 56, 72, 35, 107, 13, 35, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 49, 49, 36,
-			49, 39, 62, 13, 107, 13, 0, 0, 12, 3, 95, 49, 48, 72, 35, 107, 13, 57, 13, 0, 0, 14, 3, 95, 49, 51, 72, 35, 107, 13,
-			47, 40, 50, 13, 0, 0, 12, 3, 95, 49, 50, 72, 39, 62, 13, 107, 13, 0, 0, 14, 3, 95, 49, 53, 48, 35, 107, 13, 62, 39,
-			84, 13, 0, 0, 16, 3, 95, 49, 52, 72, 35, 107, 13, 107, 35, 47, 13, 34, 13, 0, 0, 14, 3, 95, 49, 55, 72, 35, 107, 13,
-			107, 35, 47, 13, 0, 0, 14, 3, 95, 49, 54, 72, 35, 107, 13, 89, 35, 57, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 88, 84, 37, 89, 89, 13, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 48, 77, 50, 65, 37, 55, 37, 57, 13, 50, 13, 57, 13, 0, 0, 17, 4, 95, 48, 77,
-			51, 71, 37, 55, 37, 57, 13, 50, 13, 57, 13, 0, 0, 0, 13, 4, 95, 48, 77, 49, 72, 35, 107, 13, 89, 13, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95, 51, 47, 123, 50, 13, 0, 0,
-			9, 2, 95, 50, 72, 36, 49, 13, 0, 0, 8, 2, 95, 49, 36, 49, 13, 0, 0, 0, 9, 2, 95, 55, 107, 35, 47, 13, 0, 0,
-			9, 2, 95, 54, 107, 35, 57, 13, 0, 0, 9, 2, 95, 53, 48, 35, 107, 13, 0, 0, 11, 2, 95, 52, 107, 35, 47, 13, 34, 13,
-			0, 0, 16, 2, 95, 59, 47, 6, 37, 47, 49, 4, 39, 65, 118, 84, 13, 0, 0, 0, 11, 2, 95, 57, 50, 35, 84, 13, 57, 13,
-			0, 0, 8, 2, 95, 56, 35, 140, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7, 6, 1, 8, 0, 3, 149, 0, 7, 6, 1, 9,
-			0, 3, 117, 0, 7, 6, 1, 10, 0, 3, 37, 0, 7, 6, 1, 11, 0, 3, 112, 0, 7, 6, 1, 12, 0, 3, 40, 0, 7, 6,
-			1, 13, 0, 3, 123, 0, 7, 6, 1, 14, 0, 3, 34, 40, 0, 7, 6, 1, 15, 0, 3, 34, 123, 0, 7, 6, 1, 16, 0, 3,
-			55, 37, 0, 7, 6, 1, 17, 0, 3, 55, 112, 0, 7, 6, 1, 18, 0, 3, 36, 0, 7, 6, 1, 19, 0, 3, 114, 0, 7, 6,
-			1, 20, 0, 3, 134, 0, 7, 6, 1, 21, 0, 3, 39, 0, 7, 6, 1, 22, 0, 3, 119, 0, 7, 6, 1, 23, 0, 3, 135, 0,
-			7, 6, 1, 27, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0,
-			7, 6, 1, 29, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0,
-			7, 6, 1, 31, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 154, 81, 0, 3, 154, 81,
-			35, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 76, 0, 3, 76, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 76, 0, 3, 76,
-			35, 0, 7, 6, 1, 35, 0, 2, 17, 66, 3, 75, 0, 3, 75, 35, 0, 7, 6, 1, 36, 0, 3, 75, 35, 0, 2, 17, 66, 3,
-			75, 107, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 81, 50, 0,
-			3, 81, 50, 35, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 153, 75, 0, 3, 153, 75, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66,
-			3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 41, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 42, 0, 2, 17, 66,
-			3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 44, 0, 2, 17, 66,
-			3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 152, 141, 0, 3, 152, 141, 35, 0, 7, 6, 1, 46, 0, 2,
-			17, 66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 48, 0, 2,
-			17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 50, 0, 2,
-			17, 66, 3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 151, 72, 0, 3, 151, 72, 35, 0, 7, 6, 1, 53,
-			0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 54, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 55,
-			0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 57,
-			0, 2, 17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 150, 71, 0, 3, 150, 71, 35, 0, 7, 6,
-			1, 59, 0, 2, 17, 66, 3, 57, 0, 3, 57, 35, 0, 7, 6, 1, 60, 0, 2, 17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6,
-			1, 62, 0, 2, 17, 66, 3, 55, 0, 3, 55, 35, 0, 7, 6, 1, 65, 0, 2, 17, 66, 3, 84, 0, 3, 84, 35, 0, 7, 6,
-			1, 66, 0, 2, 17, 66, 3, 91, 0, 3, 91, 35, 0, 7, 6, 1, 67, 0, 2, 17, 66, 3, 91, 0, 3, 91, 35, 0, 7, 6,
-			1, 68, 0, 2, 17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 69, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6,
-			1, 70, 0, 2, 17, 66, 3, 62, 0, 3, 62, 35, 0, 7, 6, 1, 71, 0, 2, 17, 66, 3, 83, 0, 3, 83, 35, 0, 7, 6,
-			224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104, 105, 0, 7, 6, 224, 174, 0, 3, 21, 116, 97, 0, 7, 6,
-			224, 175, 0, 3, 21, 116, 97, 0, 7, 6, 224, 182, 0, 131, 3, 50, 0, 130, 3, 65, 0, 7, 6, 224, 183, 0, 138, 3, 0, 152,
-			3, 34, 40, 0, 178, 3, 34, 123, 0, 153, 3, 36, 0, 146, 3, 37, 0, 156, 3, 39, 0, 148, 3, 40, 0, 159, 3, 55, 37, 0,
-			179, 3, 55, 112, 0, 147, 3, 112, 0, 154, 3, 114, 0, 145, 3, 117, 0, 143, 3, 118, 0, 157, 3, 119, 0, 150, 3, 123, 0, 155,
-			3, 134, 0, 158, 3, 135, 0, 144, 3, 149, 0, 7, 6, 0, 36, 3, 72, 119, 62, 35, 34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts56 = FileInMemory_createWithData (2454, reinterpret_cast<const char *> (&espeakdata_dicts56_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/si_dict", 
+		static unsigned char espeakdata_dicts57_data[4144] = {
+			0, 4, 0, 0, 59, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4,
+			95, 100, 112, 116, 72, 6, 35, 91, 13, 149, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 33, 84,
+			6, 37, 91, 149, 13, 57, 4, 118, 34, 47, 13, 57, 13, 0, 0, 0, 0, 10, 1, 36, 72, 119, 62, 35, 34, 0, 27, 0, 13, 1,
+			37, 89, 37, 57, 13, 57, 13, 139, 13, 0, 27, 0, 0, 0, 0, 0, 16, 1, 42, 148, 89, 139, 13, 34, 37, 89, 49, 13, 57, 13,
+			0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 18, 143, 112, 114, 39, 97, 58, 115, 110, 97, 58, 114, 116, 44, 64, 106, 64, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 224, 183, 180, 49, 6, 40, 66, 140, 35, 55, 112, 57, 13, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 5,
+			95, 48, 77, 50, 120, 55, 6, 35, 49, 91, 13, 57, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 17, 3, 95, 51, 57, 47, 6, 37, 89, 50, 13, 84, 4, 13, 57, 13, 0, 14, 3, 95, 50, 49, 84, 6, 37,
+			89, 37, 36, 49, 13, 0, 0, 13, 3, 95, 51, 56, 47, 6, 37, 89, 13, 139, 13, 0, 12, 3, 95, 50, 48, 84, 6, 37, 89, 89,
+			13, 0, 0, 16, 3, 95, 50, 51, 84, 6, 37, 89, 37, 47, 4, 40, 50, 13, 0, 0, 13, 5, 95, 48, 77, 49, 120, 6, 35, 107,
+			13, 89, 0, 16, 3, 95, 50, 50, 84, 6, 37, 89, 37, 72, 4, 36, 49, 13, 0, 0, 16, 3, 95, 50, 53, 84, 6, 37, 89, 37,
+			48, 4, 13, 107, 13, 0, 0, 18, 3, 95, 50, 52, 84, 6, 37, 89, 37, 107, 4, 13, 47, 13, 34, 13, 0, 0, 16, 3, 95, 50,
+			55, 84, 6, 37, 89, 37, 107, 4, 13, 47, 13, 0, 0, 16, 3, 95, 50, 54, 84, 6, 37, 89, 37, 107, 4, 13, 57, 13, 0, 0,
+			13, 3, 95, 51, 49, 47, 6, 37, 89, 36, 49, 13, 0, 0, 11, 3, 95, 51, 48, 47, 6, 37, 107, 13, 0, 0, 14, 3, 95, 51,
+			51, 47, 6, 37, 89, 47, 40, 50, 13, 0, 0, 14, 3, 95, 51, 50, 47, 6, 37, 89, 72, 36, 49, 13, 0, 0, 14, 3, 95, 51,
+			53, 47, 6, 37, 89, 48, 13, 107, 13, 0, 0, 17, 3, 95, 51, 52, 47, 6, 37, 89, 107, 13, 47, 4, 13, 34, 13, 0, 0, 14,
+			3, 95, 51, 55, 47, 6, 37, 89, 107, 13, 47, 13, 0, 0, 14, 3, 95, 51, 54, 47, 6, 37, 89, 107, 13, 57, 13, 0, 0, 0,
+			0, 0, 15, 5, 95, 48, 77, 51, 120, 49, 6, 119, 139, 37, 57, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 11, 3, 95, 54, 48, 107, 6, 148, 139, 13, 0, 0, 11, 3, 95, 48, 67, 89, 6, 37, 57, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 14, 3, 95, 55, 48, 107, 6, 148, 47, 47, 117, 84, 13, 0, 0, 13, 3, 95, 49, 67, 89, 6, 37, 57, 13, 57, 13, 0, 0,
+			0, 0, 0, 0, 0, 18, 3, 95, 49, 57, 72, 6, 35, 107, 13, 50, 4, 13, 84, 13, 57, 13, 0, 0, 15, 3, 95, 49, 56, 72,
+			6, 35, 107, 13, 4, 13, 139, 13, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 50, 57, 84, 6, 37, 89, 37, 50, 4, 13, 84,
+			13, 57, 13, 0, 15, 3, 95, 49, 49, 6, 36, 49, 39, 55, 4, 13, 107, 13, 0, 0, 15, 3, 95, 50, 56, 84, 6, 37, 89, 37,
+			4, 13, 139, 13, 0, 13, 3, 95, 49, 48, 72, 6, 35, 107, 13, 57, 13, 0, 0, 16, 3, 95, 49, 51, 72, 6, 35, 107, 13, 47,
+			4, 40, 50, 13, 0, 0, 13, 3, 95, 49, 50, 72, 6, 39, 55, 13, 107, 13, 0, 0, 16, 3, 95, 49, 53, 48, 6, 35, 107, 13,
+			62, 4, 39, 84, 13, 0, 0, 18, 3, 95, 49, 52, 72, 6, 35, 107, 13, 107, 4, 13, 47, 13, 34, 13, 0, 0, 16, 3, 95, 49,
+			55, 72, 6, 35, 107, 13, 107, 4, 13, 47, 13, 0, 0, 16, 3, 95, 49, 54, 72, 6, 35, 107, 13, 89, 4, 13, 57, 13, 0, 0,
+			0, 12, 3, 95, 55, 88, 107, 6, 148, 47, 47, 117, 0, 0, 0, 0, 0, 15, 3, 95, 48, 100, 71, 6, 37, 50, 72, 40, 84, 13,
+			37, 0, 0, 0, 0, 22, 3, 95, 52, 57, 107, 6, 35, 47, 13, 55, 4, 37, 89, 50, 13, 84, 4, 13, 57, 13, 0, 0, 18, 3,
+			95, 52, 56, 107, 6, 35, 47, 13, 55, 4, 37, 89, 13, 139, 13, 0, 0, 0, 0, 0, 12, 3, 95, 49, 100, 6, 36, 49, 35, 4,
+			37, 0, 0, 0, 0, 19, 3, 95, 52, 49, 107, 6, 35, 47, 13, 55, 4, 37, 89, 6, 36, 49, 13, 0, 0, 16, 3, 95, 52, 48,
+			107, 6, 35, 47, 13, 55, 4, 37, 107, 13, 0, 0, 19, 3, 95, 52, 51, 107, 6, 35, 47, 13, 55, 4, 37, 89, 47, 40, 50, 13,
+			0, 0, 19, 3, 95, 52, 50, 107, 6, 35, 47, 13, 55, 4, 37, 89, 72, 36, 49, 13, 0, 0, 19, 3, 95, 52, 53, 107, 6, 35,
+			47, 13, 55, 4, 37, 89, 48, 13, 107, 13, 0, 0, 22, 3, 95, 52, 52, 107, 6, 35, 47, 13, 55, 4, 37, 89, 107, 13, 47, 4,
+			13, 34, 13, 0, 13, 3, 95, 50, 100, 72, 6, 36, 49, 35, 4, 37, 0, 0, 19, 3, 95, 52, 55, 107, 6, 35, 47, 13, 55, 4,
+			37, 89, 107, 13, 47, 13, 0, 0, 19, 3, 95, 52, 54, 107, 6, 35, 47, 13, 55, 4, 37, 89, 107, 13, 57, 13, 0, 0, 0, 13,
+			3, 95, 53, 48, 48, 6, 35, 50, 13, 107, 13, 0, 0, 0, 0, 0, 12, 3, 95, 51, 100, 47, 6, 40, 50, 4, 37, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 14, 3, 95, 52, 100, 107, 6, 35, 47, 13, 34, 13, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3,
+			95, 53, 100, 48, 6, 35, 107, 13, 37, 0, 0, 0, 0, 0, 12, 3, 95, 56, 48, 6, 35, 89, 123, 84, 13, 0, 12, 3, 95, 53,
+			88, 48, 6, 35, 50, 13, 89, 0, 0, 0, 0, 0, 12, 3, 95, 54, 100, 107, 6, 35, 57, 13, 37, 0, 0, 0, 0, 0, 12, 3,
+			95, 57, 48, 6, 35, 50, 123, 84, 13, 0, 11, 3, 95, 54, 88, 107, 6, 148, 139, 13, 0, 0, 0, 0, 0, 12, 3, 95, 55, 100,
+			107, 6, 35, 47, 13, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 56, 100, 6, 35, 139, 13, 37, 0, 0, 0, 0, 0,
+			10, 3, 95, 56, 88, 6, 35, 89, 123, 0, 0, 0, 0, 0, 12, 3, 95, 57, 100, 50, 6, 35, 84, 13, 37, 0, 0, 0, 0, 0,
+			10, 3, 95, 57, 88, 6, 35, 50, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224, 183, 158,
+			147, 135, 0, 0, 9, 3, 224, 183, 159, 18, 55, 37, 0, 0, 8, 3, 224, 183, 156, 18, 39, 0, 0, 9, 3, 224, 183, 157, 147, 119,
+			12, 0, 0, 9, 3, 224, 183, 154, 147, 114, 12, 0, 0, 8, 3, 224, 183, 155, 147, 134, 0, 0, 9, 3, 224, 183, 152, 18, 34, 40,
+			0, 0, 8, 3, 224, 183, 153, 18, 36, 0, 0, 9, 3, 224, 183, 150, 147, 123, 12, 0, 0, 0, 8, 3, 224, 183, 148, 18, 40, 0,
+			0, 0, 8, 3, 224, 183, 146, 18, 37, 0, 0, 9, 3, 224, 183, 147, 147, 112, 12, 0, 0, 8, 3, 224, 183, 144, 18, 148, 0, 0,
+			9, 3, 224, 183, 145, 147, 117, 12, 0, 0, 0, 9, 3, 224, 183, 143, 147, 118, 12, 0, 0, 0, 0, 17, 3, 224, 182, 130, 6, 35,
+			50, 40, 89, 58, 118, 34, 13, 57, 13, 0, 0, 16, 3, 224, 182, 131, 6, 58, 37, 89, 35, 34, 81, 35, 57, 35, 0, 0, 0, 0,
+			8, 3, 224, 183, 134, 83, 13, 0, 0, 0, 8, 3, 224, 183, 132, 107, 13, 0, 0, 8, 3, 224, 183, 133, 62, 13, 0, 16, 4, 95,
+			48, 77, 52, 84, 6, 37, 55, 6, 37, 57, 13, 50, 0, 0, 8, 3, 224, 183, 130, 93, 13, 0, 0, 8, 3, 224, 183, 131, 89, 13,
+			0, 12, 4, 95, 48, 77, 50, 55, 6, 35, 49, 91, 0, 0, 8, 3, 224, 183, 128, 58, 13, 0, 12, 4, 95, 48, 77, 51, 49, 6,
+			119, 139, 37, 0, 0, 8, 3, 224, 183, 129, 91, 13, 0, 0, 8, 3, 224, 182, 182, 71, 13, 0, 13, 4, 95, 48, 77, 49, 72, 6,
+			35, 107, 13, 89, 0, 0, 8, 3, 224, 182, 183, 137, 13, 0, 0, 8, 3, 224, 182, 180, 48, 13, 0, 0, 8, 3, 224, 182, 181, 136,
+			13, 0, 0, 0, 9, 3, 224, 182, 179, 150, 72, 13, 0, 0, 8, 3, 224, 182, 176, 138, 13, 0, 0, 8, 3, 224, 182, 177, 50, 13,
+			0, 0, 8, 3, 224, 182, 174, 25, 13, 0, 0, 8, 3, 224, 182, 175, 72, 13, 0, 0, 9, 3, 224, 182, 172, 151, 140, 13, 0, 0,
+			8, 3, 224, 182, 173, 47, 13, 0, 0, 9, 3, 224, 183, 178, 147, 34, 123, 0, 8, 3, 224, 182, 170, 142, 13, 0, 0, 9, 3, 224,
+			183, 179, 147, 55, 112, 0, 8, 3, 224, 182, 171, 66, 13, 0, 0, 8, 3, 224, 182, 168, 141, 13, 0, 0, 8, 3, 224, 182, 169, 140,
+			13, 0, 0, 9, 3, 224, 182, 166, 152, 75, 13, 0, 0, 8, 3, 224, 182, 167, 139, 13, 0, 0, 8, 3, 224, 182, 164, 67, 13, 0,
+			0, 9, 3, 224, 182, 165, 81, 50, 13, 0, 0, 8, 3, 224, 182, 162, 75, 13, 0, 0, 8, 3, 224, 182, 163, 75, 28, 0, 0, 8,
+			3, 224, 182, 160, 76, 13, 0, 0, 8, 3, 224, 182, 161, 76, 28, 0, 0, 8, 3, 224, 182, 158, 68, 13, 0, 0, 9, 3, 224, 182,
+			159, 153, 81, 13, 0, 0, 8, 3, 224, 182, 156, 81, 13, 0, 0, 8, 3, 224, 182, 157, 146, 13, 0, 0, 8, 3, 224, 182, 154, 49,
+			13, 0, 0, 8, 3, 224, 182, 155, 145, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 224, 182, 189, 55, 13, 0, 0, 8, 3, 224, 182, 186, 57, 13, 0, 0, 8,
+			3, 224, 182, 187, 34, 13, 0, 0, 8, 3, 224, 182, 184, 65, 13, 0, 0, 9, 3, 224, 182, 185, 149, 71, 13, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 46, 47, 6, 37, 47, 13, 0, 0, 0, 12, 2, 95, 44, 49,
+			6, 39, 65, 118, 84, 13, 0, 0, 10, 2, 95, 51, 47, 6, 40, 50, 13, 0, 0, 10, 2, 95, 50, 72, 6, 36, 49, 13, 0, 0,
+			9, 2, 95, 49, 6, 36, 49, 13, 0, 0, 13, 2, 95, 48, 71, 6, 37, 50, 72, 40, 84, 13, 0, 0, 10, 2, 95, 55, 107, 6,
+			35, 47, 13, 0, 0, 10, 2, 95, 54, 107, 6, 35, 57, 13, 0, 0, 10, 2, 95, 53, 48, 6, 35, 107, 13, 0, 0, 12, 2, 95,
+			52, 107, 6, 35, 47, 13, 34, 13, 0, 0, 12, 2, 95, 59, 72, 6, 36, 47, 37, 47, 13, 0, 0, 16, 2, 95, 58, 47, 6, 37,
+			47, 49, 39, 65, 4, 118, 84, 13, 0, 0, 12, 2, 95, 57, 50, 6, 35, 84, 13, 57, 13, 0, 0, 9, 2, 95, 56, 6, 35, 139,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 31, 4, 95, 226, 128, 157, 6, 40, 138, 34, 40, 47, 4, 13, 48, 118, 141, 4, 13, 13, 58, 4, 13, 93, 118, 50, 4, 13, 57,
+			13, 0, 0, 29, 4, 95, 226, 128, 156, 6, 40, 72, 34, 40, 47, 4, 13, 48, 118, 139, 4, 13, 118, 34, 4, 13, 65, 71, 13, 57,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 224, 182,
+			154, 0, 224, 182, 155, 0, 224, 182, 156, 0, 224, 182, 157, 0, 224, 183, 132, 0, 7, 6, 18, 67, 224, 182, 160, 0, 224, 182, 161, 0,
+			224, 182, 162, 0, 224, 182, 163, 0, 224, 182, 166, 0, 7, 6, 18, 68, 224, 182, 167, 0, 224, 182, 168, 0, 224, 182, 169, 0, 224, 182,
+			170, 0, 7, 6, 1, 3, 0, 1, 138, 183, 224, 3, 6, 35, 50, 40, 93, 58, 4, 118, 34, 13, 57, 13, 0, 3, 65, 0, 2, 18,
+			68, 3, 66, 0, 2, 18, 67, 3, 67, 0, 2, 18, 66, 3, 68, 0, 7, 6, 1, 4, 0, 1, 138, 183, 224, 3, 58, 6, 37, 93,
+			13, 34, 81, 4, 13, 57, 13, 0, 4, 3, 107, 0, 0, 7, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7,
+			6, 1, 8, 0, 3, 148, 0, 7, 6, 1, 9, 0, 3, 117, 0, 7, 6, 1, 10, 0, 3, 37, 0, 7, 6, 1, 11, 0, 3, 112,
+			0, 7, 6, 1, 12, 0, 3, 40, 0, 7, 6, 1, 13, 0, 3, 123, 0, 7, 6, 1, 14, 0, 3, 34, 40, 0, 7, 6, 1, 15,
+			0, 3, 34, 123, 0, 7, 6, 1, 16, 0, 3, 55, 37, 0, 7, 6, 1, 17, 0, 3, 55, 112, 0, 7, 6, 1, 18, 0, 3, 36,
+			0, 7, 6, 1, 19, 0, 3, 114, 0, 7, 6, 1, 20, 0, 3, 134, 0, 7, 6, 1, 21, 0, 3, 39, 0, 7, 6, 1, 22, 0,
+			3, 119, 0, 7, 6, 1, 23, 0, 3, 135, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 28,
+			0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 29, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 30,
+			0, 2, 17, 66, 3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0, 7, 6, 1, 32,
+			0, 2, 17, 66, 3, 153, 81, 0, 3, 153, 81, 35, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 76, 0, 3, 76, 35, 0, 7, 6,
+			1, 34, 0, 2, 17, 66, 3, 76, 107, 0, 3, 76, 107, 35, 0, 7, 6, 1, 35, 0, 2, 17, 66, 3, 75, 0, 3, 75, 35, 0,
+			7, 6, 1, 36, 0, 2, 17, 66, 3, 75, 107, 0, 3, 75, 107, 35, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 67, 0, 3, 67,
+			35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 81, 50, 0, 3, 81, 50, 35, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 152, 75,
+			0, 3, 152, 75, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 41, 0, 2, 17, 66, 3,
+			141, 0, 3, 141, 35, 0, 7, 6, 1, 42, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3,
+			140, 0, 3, 140, 35, 0, 7, 6, 1, 44, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3,
+			151, 140, 0, 3, 151, 140, 35, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 47, 0, 2, 17,
+			66, 3, 25, 0, 3, 25, 35, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 49, 0, 2, 17,
+			66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 52, 0, 2, 17,
+			66, 3, 150, 72, 0, 3, 150, 72, 35, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 54, 0,
+			2, 17, 66, 3, 136, 0, 3, 136, 35, 0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 56, 0,
+			2, 17, 66, 3, 137, 0, 3, 137, 35, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 58, 0,
+			2, 17, 66, 3, 149, 71, 0, 3, 149, 71, 35, 0, 7, 6, 1, 59, 0, 2, 17, 66, 3, 57, 0, 3, 57, 35, 0, 7, 6, 1,
+			60, 0, 2, 17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 62, 0, 2, 17, 66, 3, 55, 0, 3, 55, 35, 0, 7, 6, 1,
+			65, 0, 4, 1, 21, 2, 32, 3, 58, 0, 2, 17, 66, 0, 4, 3, 58, 35, 0, 1, 138, 183, 224, 2, 32, 0, 7, 6, 1, 66,
+			0, 2, 17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 67, 0, 2, 17, 66, 3, 91, 0, 3, 91, 35, 0, 7, 6, 1, 68,
+			0, 2, 17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 69, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 70,
+			0, 2, 17, 66, 3, 62, 0, 3, 62, 35, 0, 7, 6, 1, 71, 0, 2, 17, 66, 3, 83, 0, 3, 83, 35, 0, 7, 6, 1, 75,
+			0, 1, 17, 67, 3, 0, 3, 107, 6, 35, 55, 49, 6, 37, 34, 37, 149, 13, 0, 7, 6, 1, 80, 0, 3, 6, 148, 55, 13, 48,
+			4, 37, 55, 55, 13, 0, 1, 17, 67, 3, 118, 0, 7, 6, 1, 81, 0, 3, 6, 148, 72, 13, 57, 13, 0, 1, 17, 67, 3, 148,
+			0, 7, 6, 1, 82, 0, 3, 72, 6, 112, 34, 81, 13, 4, 148, 72, 13, 57, 13, 0, 1, 17, 67, 3, 117, 0, 7, 6, 1, 83,
+			0, 3, 6, 37, 89, 48, 37, 55, 55, 13, 0, 1, 17, 67, 3, 37, 0, 7, 6, 1, 84, 0, 3, 72, 6, 112, 34, 81, 13, 4,
+			37, 89, 48, 37, 55, 55, 13, 0, 1, 17, 67, 3, 112, 0, 7, 6, 1, 85, 0, 1, 17, 67, 3, 40, 0, 3, 48, 6, 118, 48,
+			37, 55, 55, 13, 0, 7, 6, 1, 87, 0, 3, 72, 6, 112, 34, 81, 13, 48, 4, 118, 48, 37, 55, 55, 13, 0, 1, 17, 67, 3,
+			123, 0, 7, 6, 1, 89, 0, 1, 17, 67, 3, 34, 40, 0, 3, 81, 6, 148, 139, 13, 48, 4, 37, 55, 55, 13, 0, 7, 6, 1,
+			90, 0, 1, 17, 67, 3, 36, 0, 3, 49, 6, 39, 65, 71, 40, 84, 13, 0, 7, 6, 1, 92, 0, 3, 49, 6, 39, 65, 71, 40,
+			72, 4, 36, 49, 13, 0, 1, 17, 67, 3, 134, 0, 7, 6, 1, 95, 0, 3, 81, 6, 35, 57, 35, 50, 4, 40, 49, 37, 47, 47,
+			13, 0, 1, 17, 67, 3, 135, 0, 7, 6, 224, 183, 0, 178, 3, 34, 123, 0, 156, 3, 39, 0, 159, 3, 55, 37, 0, 179, 3, 55,
+			112, 0, 154, 3, 114, 0, 157, 3, 119, 0, 7, 6, 0, 122, 224, 183, 131, 2, 17, 66, 3, 88, 0, 122, 224, 183, 131, 3, 88, 35,
+			0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts57 = FileInMemory_createWithData (4143, reinterpret_cast<const char *> (&espeakdata_dicts57_data), 
+			U"espeak-1.48.04-source/espeak-data/si_dict", 
 			U"si");
-		Collection_addItem (me.peek(), espeakdata_dicts56.transfer());
+		my addItem_move (espeakdata_dicts57.move());
 
-		static unsigned char espeakdata_dicts57_data[8715] = {
-			0, 4, 0, 0, 105, 18, 0, 0, 0, 10, 135, 197, 190, 9, 1, 4, 14, 9, 20, 0, 0, 0, 0, 6, 65, 4, 124, 0, 14, 5,
-			193, 4, 72, 8, 0, 0, 0, 0, 11, 136, 26, 18, 21, 196, 141, 14, 195, 173, 20, 6, 65, 8, 71, 123, 0, 0, 0, 0, 14, 139,
-			22, 197, 161, 5, 20, 5, 196, 141, 14, 195, 173, 20, 0, 6, 65, 12, 117, 123, 0, 0, 0, 18, 4, 95, 8, 1, 3, 89, 10, 65,
-			6, 36, 49, 76, 36, 67, 39, 65, 0, 0, 0, 6, 65, 16, 72, 123, 0, 0, 0, 0, 0, 5, 65, 20, 123, 0, 0, 0, 0, 7,
-			196, 80, 145, 84, 60, 20, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 6, 65, 28, 81, 123, 0, 0, 0, 0, 0, 6, 65, 32,
-			107, 124, 0, 0, 0, 0, 11, 1, 35, 49, 51, 121, 90, 37, 49, 0, 27, 0, 5, 65, 36, 121, 0, 0, 0, 13, 1, 38, 35, 65,
-			48, 36, 51, 89, 35, 50, 72, 0, 0, 0, 6, 65, 40, 57, 123, 0, 0, 0, 12, 1, 42, 107, 84, 37, 36, 88, 72, 35, 0, 27,
-			0, 9, 1, 43, 48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 124, 0, 14, 6, 65, 44, 49, 0, 28, 0, 0, 0, 12, 137, 12,
-			15, 7, 9, 19, 20, 195, 173, 11, 20, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 7, 196, 32, 241, 14, 36, 20, 0, 7, 132, 9,
-			14, 195, 173, 20, 6, 65, 52, 36, 65, 0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 6, 65, 60, 125, 0, 14,
-			9, 65, 60, 39, 10, 0, 72, 28, 23, 0, 16, 141, 16, 18, 5, 19, 22, 5, 4, 196, 141, 5, 14, 195, 173, 20, 12, 1, 61, 51,
-			39, 84, 50, 124, 89, 35, 0, 27, 0, 0, 0, 11, 1, 64, 88, 35, 84, 37, 50, 124, 76, 0, 6, 65, 64, 48, 123, 0, 0, 0,
-			0, 0, 7, 65, 68, 49, 84, 123, 0, 0, 0, 6, 195, 36, 226, 84, 20, 0, 0, 6, 65, 72, 36, 51, 0, 0, 0, 0, 0, 15,
-			140, 21, 11, 18, 9, 197, 190, 15, 22, 1, 14, 195, 173, 20, 7, 65, 76, 36, 89, 0, 14, 7, 65, 76, 89, 10, 0, 8, 0, 7,
-			195, 36, 224, 75, 72, 8, 0, 0, 7, 196, 80, 82, 148, 60, 20, 0, 6, 65, 80, 47, 123, 0, 0, 0, 9, 134, 16, 5, 11, 14,
-			195, 173, 20, 0, 0, 5, 65, 84, 126, 0, 0, 12, 137, 22, 195, 161, 197, 190, 5, 14, 195, 173, 20, 0, 13, 138, 19, 195, 186, 196,
-			141, 1, 19, 14, 195, 173, 20, 0, 0, 7, 65, 88, 84, 123, 0, 14, 7, 65, 88, 84, 10, 0, 28, 0, 0, 0, 14, 4, 95, 49,
-			77, 52, 71, 6, 37, 55, 37, 125, 50, 0, 0, 15, 65, 92, 72, 84, 6, 39, 57, 37, 47, 123, 4, 84, 123, 0, 0, 0, 0, 16,
-			1, 95, 47, 84, 44, 72, 124, 65, 6, 36, 118, 36, 51, 35, 0, 0, 13, 4, 95, 49, 77, 49, 115, 6, 37, 89, 121, 117, 0, 7,
-			65, 96, 37, 49, 89, 0, 0, 14, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 125, 50, 0, 0, 16, 4, 95, 49, 77, 51, 65, 6,
-			37, 55, 57, 35, 51, 72, 35, 0, 0, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36,
-			47, 0, 14, 7, 65, 104, 88, 10, 0, 28, 0, 0, 0, 0, 0, 0, 9, 134, 13, 195, 161, 14, 9, 1, 20, 0, 0, 7, 132, 15,
-			14, 195, 173, 20, 0, 0, 9, 134, 13, 195, 161, 14, 9, 5, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 196, 40, 81, 5, 56, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 50, 77, 49, 72, 84, 6, 36, 115, 6, 37, 89, 121, 117, 0, 0, 0, 9, 134, 13,
-			195, 161, 14, 9, 21, 20, 20, 4, 95, 50, 77, 51, 72, 84, 6, 36, 65, 6, 37, 55, 57, 35, 51, 72, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 12, 137, 22, 195, 173, 14, 5, 196, 141, 11, 15, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 134, 13, 12, 1, 4, 195, 173, 20, 0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 160, 72, 8, 0, 0, 7, 196, 89, 65,
-			68, 100, 20, 0, 0, 0, 0, 0, 0, 0, 6, 195, 80, 145, 64, 20, 0, 0, 0, 0, 0, 10, 135, 13, 195, 161, 14, 9, 15, 21,
-			20, 0, 0, 0, 0, 0, 0, 0, 9, 67, 88, 194, 192, 84, 45, 49, 0, 0, 16, 4, 95, 4, 16, 20, 9, 76, 57, 4, 35, 34,
-			49, 35, 10, 0, 0, 11, 136, 16, 18, 9, 10, 1, 20, 195, 173, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95,
-			35, 57, 47, 6, 35, 71, 0, 17, 4, 95, 20, 12, 4, 89, 10, 84, 6, 45, 50, 39, 84, 49, 129, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 2, 25, 197, 165, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
-			135, 11, 1, 197, 190, 4, 5, 10, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 141, 9, 14, 20, 5,
-			12, 9, 7, 5, 14, 20, 14, 195, 173, 20, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 243, 0, 76, 0, 7, 196, 88, 147, 133, 56,
-			20, 0, 0, 0, 7, 195, 8, 86, 128, 8, 23, 0, 0, 0, 0, 11, 136, 19, 1, 13, 15, 20, 14, 195, 173, 20, 15, 140, 9, 14,
-			20, 18, 15, 22, 5, 18, 20, 14, 195, 173, 20, 0, 7, 195, 8, 86, 143, 8, 23, 0, 0, 0, 0, 7, 196, 60, 180, 133, 52, 8,
-			0, 0, 0, 0, 9, 67, 16, 194, 0, 72, 45, 107, 0, 0, 0, 0, 0, 0, 9, 134, 22, 9, 14, 14, 195, 173, 20, 0, 0, 10,
-			3, 226, 130, 172, 36, 40, 51, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 50, 6, 72, 84,
-			6, 36, 0, 0, 9, 198, 52, 21, 11, 36, 226, 64, 20, 0, 0, 16, 141, 9, 14, 4, 9, 22, 9, 4, 21, 195, 161, 12, 14, 5,
-			20, 9, 133, 19, 195, 173, 3, 5, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 4, 95, 13, 3, 14,
-			89, 10, 65, 6, 35, 49, 51, 39, 50, 39, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 131, 196, 141, 15, 72, 8, 0,
-			0, 0, 13, 3, 226, 128, 176, 48, 51, 39, 65, 37, 55, 36, 0, 0, 0, 13, 138, 20, 5, 12, 5, 22, 195, 173, 26, 14, 5, 20,
-			0, 0, 0, 8, 133, 10, 195, 186, 14, 9, 20, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 47, 14, 16, 6, 37, 72, 89,
-			35, 115, 0, 0, 7, 196, 80, 84, 129, 104, 20, 10, 3, 95, 48, 67, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 13, 138, 16, 18,
-			9, 5, 13, 5, 18, 14, 195, 173, 20, 0, 0, 0, 0, 0, 0, 6, 195, 77, 65, 64, 72, 0, 0, 0, 5, 194, 40, 80, 72, 16,
-			3, 95, 49, 57, 116, 6, 36, 84, 122, 47, 50, 124, 89, 115, 0, 0, 7, 195, 65, 34, 64, 8, 23, 15, 3, 95, 49, 56, 6, 39,
-			89, 36, 65, 50, 124, 89, 115, 0, 0, 7, 196, 20, 229, 5, 72, 20, 14, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 6, 39, 0,
-			0, 0, 0, 0, 0, 11, 3, 226, 136, 146, 65, 121, 50, 40, 89, 0, 0, 15, 3, 95, 49, 49, 57, 6, 36, 72, 36, 50, 124, 89,
-			115, 0, 0, 12, 3, 95, 49, 48, 116, 6, 36, 89, 35, 115, 0, 0, 15, 3, 95, 49, 51, 47, 14, 16, 6, 37, 50, 124, 89, 115,
-			0, 0, 14, 3, 95, 49, 50, 72, 84, 6, 35, 50, 124, 89, 115, 0, 0, 14, 3, 95, 49, 53, 48, 6, 122, 47, 50, 124, 89, 115,
-			0, 0, 14, 3, 95, 49, 52, 91, 47, 44, 50, 6, 124, 89, 115, 0, 0, 16, 3, 95, 49, 55, 89, 6, 36, 116, 36, 65, 50, 124,
-			89, 115, 0, 0, 15, 3, 95, 49, 54, 91, 6, 36, 89, 47, 50, 124, 89, 115, 0, 0, 0, 18, 3, 95, 55, 88, 89, 6, 36, 116,
-			36, 65, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 16, 12, 197, 165, 48, 45, 115,
-			0, 0, 0, 9, 134, 195, 173, 4, 5, 15, 21, 20, 0, 6, 195, 52, 145, 9, 20, 0, 0, 0, 0, 0, 0, 0, 0, 24, 11, 16,
-			15, 19, 20, 9, 8, 14, 21, 20, 195, 173, 48, 39, 89, 115, 37, 107, 50, 40, 47, 121, 0, 0, 14, 3, 95, 50, 88, 72, 84, 6,
-			35, 72, 89, 35, 115, 0, 0, 0, 0, 17, 5, 95, 48, 77, 65, 51, 65, 6, 37, 55, 57, 35, 51, 72, 37, 0, 0, 16, 5, 95,
-			48, 77, 65, 50, 65, 6, 37, 55, 37, 125, 50, 37, 0, 0, 0, 16, 5, 95, 48, 77, 65, 52, 71, 6, 37, 55, 37, 125, 50, 37,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 79, 8, 12, 3, 95, 63, 63, 89, 37, 65, 71, 39, 55, 0, 0, 0, 0, 6,
-			195, 76, 209, 64, 72, 16, 3, 95, 52, 88, 91, 47, 6, 37, 16, 37, 72, 89, 35, 115, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194,
-			56, 16, 72, 23, 0, 16, 3, 95, 53, 88, 48, 6, 122, 115, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 11, 136, 15, 11, 15,
-			12, 9, 20, 195, 173, 20, 0, 7, 196, 64, 85, 5, 72, 20, 0, 0, 0, 17, 3, 95, 54, 88, 91, 6, 36, 89, 115, 116, 36, 89,
-			57, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 6, 195, 169, 14, 9, 24, 20, 0, 17,
-			3, 95, 56, 88, 6, 39, 89, 36, 65, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 32, 240, 76, 0, 18,
-			3, 95, 57, 88, 72, 6, 36, 84, 122, 115, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 63, 65, 88,
-			50, 35, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 15, 7, 15, 89, 10, 6, 39, 81, 39,
-			67, 49, 39, 65, 0, 0, 0, 8, 197, 52, 20, 148, 36, 224, 20, 0, 0, 0, 0, 11, 136, 15, 19, 20, 1, 20, 14, 195, 173, 20,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 125, 50, 39, 40,
-			0, 0, 0, 16, 4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 125, 50, 39, 40, 0, 0, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55,
-			57, 35, 51, 47, 0, 0, 0, 13, 4, 95, 48, 77, 49, 115, 6, 37, 89, 121, 117, 0, 0, 13, 4, 95, 2, 18, 22, 71, 51, 6,
-			36, 84, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 195, 173, 4, 5, 1, 20, 0, 0, 0, 0, 8, 133,
-			195, 173, 4, 5, 5, 20, 0, 0, 0, 0, 8, 133, 195, 173, 4, 5, 9, 20, 0, 0, 0, 11, 136, 19, 3, 8, 15, 16, 14, 195,
-			173, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 195, 173, 4, 5, 21, 20, 0, 0, 0, 0, 8, 133, 195, 173, 4, 5, 25,
-			20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 15, 16, 1, 20, 18, 14, 195, 173,
-			20, 0, 0, 13, 138, 16, 18, 195, 173, 2, 21, 26, 14, 195, 173, 20, 0, 0, 0, 20, 4, 95, 3, 9, 18, 89, 6, 39, 89, 47,
-			51, 37, 38, 4, 36, 91, 49, 129, 0, 0, 0, 14, 139, 13, 9, 13, 15, 22, 12, 195, 161, 4, 14, 5, 20, 14, 139, 6, 12, 5,
-			24, 9, 2, 9, 12, 14, 195, 173, 20, 0, 0, 24, 3, 95, 194, 183, 71, 39, 72, 49, 35, 6, 84, 48, 51, 39, 89, 47, 51, 57,
-			36, 72, 49, 40, 0, 0, 11, 3, 95, 194, 180, 72, 135, 90, 36, 67, 0, 0, 0, 13, 3, 95, 194, 178, 50, 35, 72, 51, 40, 107,
-			126, 0, 0, 14, 3, 95, 194, 179, 50, 35, 47, 51, 36, 47, 57, 40, 0, 0, 0, 0, 0, 0, 24, 4, 95, 19, 20, 11, 89, 39,
-			10, 91, 6, 37, 49, 65, 121, 65, 72, 6, 135, 90, 67, 39, 65, 0, 0, 18, 3, 95, 194, 173, 65, 36, 49, 49, 124, 48, 39, 65,
-			45, 76, 49, 35, 0, 0, 19, 3, 95, 194, 170, 107, 39, 51, 50, 121, 37, 50, 72, 36, 49, 89, 6, 124, 0, 16, 4, 95, 1, 3,
-			21, 89, 10, 72, 6, 135, 90, 67, 39, 65, 0, 0, 28, 3, 95, 194, 171, 72, 84, 39, 57, 37, 47, 124, 55, 39, 65, 36, 50, 124,
-			15, 88, 124, 47, 84, 39, 51, 49, 35, 0, 0, 0, 0, 6, 195, 60, 225, 78, 20, 11, 136, 14, 1, 4, 195, 173, 19, 197, 165, 20,
-			21, 3, 95, 194, 166, 48, 51, 36, 51, 40, 91, 36, 50, 124, 6, 76, 37, 35, 51, 35, 0, 0, 12, 137, 16, 18, 5, 4, 195, 173,
-			19, 197, 165, 20, 5, 194, 76, 16, 76, 0, 0, 0, 0, 0, 17, 4, 95, 18, 14, 7, 89, 10, 49, 51, 6, 126, 91, 49, 39, 65,
-			0, 0, 24, 3, 95, 194, 161, 39, 71, 34, 124, 115, 36, 50, 121, 84, 6, 121, 49, 51, 37, 76, 67, 121, 49, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 80, 81, 1, 20, 10, 135, 15, 4,
-			195, 173, 19, 197, 165, 20, 0, 11, 136, 16, 15, 4, 195, 173, 19, 197, 165, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 3, 95,
-			194, 191, 39, 71, 51, 124, 115, 36, 50, 121, 6, 39, 47, 124, 88, 67, 37, 49, 0, 0, 0, 0, 0, 28, 3, 95, 194, 187, 72, 84,
-			39, 57, 37, 47, 124, 55, 39, 65, 36, 50, 124, 15, 88, 35, 47, 84, 39, 51, 37, 115, 0, 0, 12, 3, 95, 194, 184, 117, 36, 72,
-			37, 55, 35, 0, 0, 12, 3, 95, 194, 185, 50, 35, 48, 51, 84, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 195, 151,
-			49, 51, 124, 47, 0, 7, 2, 196, 143, 116, 123, 0, 0, 0, 7, 2, 196, 141, 76, 123, 0, 0, 0, 0, 0, 0, 0, 13, 2, 194,
-			167, 48, 35, 51, 35, 81, 51, 35, 83, 0, 0, 15, 2, 194, 164, 88, 50, 35, 76, 49, 35, 65, 36, 50, 37, 0, 0, 0, 11, 2,
-			194, 162, 117, 36, 50, 47, 39, 40, 0, 0, 11, 2, 194, 163, 55, 37, 71, 57, 36, 51, 0, 0, 7, 2, 197, 136, 36, 67, 0, 0,
-			0, 8, 2, 195, 166, 35, 6, 123, 0, 0, 0, 15, 2, 194, 172, 55, 39, 81, 37, 117, 49, 123, 50, 39, 47, 0, 19, 2, 195, 164,
-			6, 124, 48, 51, 36, 107, 55, 35, 89, 39, 84, 35, 50, 123, 0, 0, 0, 0, 5, 130, 196, 155, 43, 0, 0, 12, 2, 195, 161, 72,
-			4, 45, 107, 123, 6, 124, 0, 0, 8, 196, 4, 193, 66, 60, 72, 8, 0, 0, 0, 7, 2, 194, 181, 65, 126, 0, 12, 2, 195, 173,
-			72, 4, 45, 107, 123, 6, 121, 0, 0, 0, 0, 12, 2, 194, 176, 89, 47, 40, 48, 67, 39, 40, 0, 0, 15, 2, 194, 177, 48, 55,
-			40, 89, 6, 65, 121, 50, 40, 89, 0, 7, 2, 197, 153, 36, 133, 0, 12, 2, 195, 169, 72, 4, 45, 107, 123, 6, 123, 0, 0, 17,
-			2, 194, 190, 47, 34, 37, 10, 91, 47, 84, 44, 47, 37, 50, 37, 0, 0, 11, 2, 195, 183, 116, 36, 55, 36, 50, 39, 0, 0, 13,
-			2, 194, 188, 91, 47, 84, 44, 47, 37, 50, 35, 0, 16, 2, 195, 180, 6, 125, 89, 84, 4, 39, 49, 124, 67, 39, 65, 0, 0, 6,
-			195, 56, 145, 64, 72, 13, 2, 194, 189, 48, 39, 55, 39, 84, 37, 117, 35, 0, 7, 2, 197, 165, 115, 123, 0, 0, 17, 4, 95, 3,
-			5, 4, 89, 10, 117, 6, 36, 116, 37, 55, 55, 129, 0, 0, 12, 2, 195, 179, 72, 4, 45, 107, 123, 6, 125, 0, 0, 0, 9, 67,
-			64, 192, 200, 48, 45, 101, 0, 22, 4, 95, 12, 9, 7, 55, 6, 37, 81, 35, 47, 4, 126, 51, 39, 84, 4, 35, 50, 123, 0, 7,
-			2, 197, 161, 36, 91, 0, 0, 15, 2, 195, 190, 48, 39, 65, 45, 76, 49, 35, 50, 35, 72, 0, 0, 17, 2, 197, 175, 6, 126, 89,
-			10, 49, 51, 6, 126, 90, 49, 39, 65, 0, 0, 0, 18, 2, 195, 189, 72, 4, 45, 107, 123, 6, 37, 48, 89, 37, 55, 39, 50, 0,
-			0, 11, 2, 195, 186, 72, 45, 107, 123, 6, 126, 0, 0, 0, 0, 0, 7, 2, 196, 190, 36, 61, 0, 0, 0, 0, 9, 134, 18, 195,
-			180, 26, 14, 5, 20, 6, 195, 76, 243, 64, 72, 0, 8, 133, 20, 195, 173, 20, 15, 20, 13, 2, 196, 186, 72, 4, 45, 107, 123, 6,
-			36, 55, 0, 0, 0, 0, 0, 8, 2, 197, 190, 90, 36, 47, 0, 0, 0, 6, 195, 16, 83, 79, 20, 0, 0, 0, 0, 0, 0, 0,
-			12, 5, 19, 20, 196, 186, 16, 89, 47, 135, 48, 0, 0, 8, 133, 195, 186, 14, 9, 9, 20, 0, 0, 0, 0, 8, 133, 195, 186, 14,
-			9, 5, 20, 0, 0, 0, 0, 8, 133, 195, 186, 14, 9, 1, 20, 5, 194, 76, 144, 72, 6, 194, 64, 240, 8, 23, 5, 194, 76, 144,
-			76, 0, 7, 195, 64, 241, 0, 8, 23, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 14, 5, 7, 1, 20, 195, 173, 22, 14, 5, 20,
-			6, 2, 95, 1, 124, 0, 0, 0, 0, 8, 133, 195, 186, 14, 9, 21, 20, 0, 0, 7, 2, 95, 11, 49, 124, 0, 0, 0, 0, 0,
-			6, 2, 95, 15, 125, 0, 0, 0, 0, 0, 7, 2, 95, 19, 36, 89, 0, 0, 0, 0, 0, 0, 7, 2, 95, 22, 84, 123, 0, 0,
-			0, 0, 0, 8, 2, 95, 26, 88, 36, 47, 0, 0, 0, 7, 131, 197, 190, 5, 72, 8, 0, 11, 136, 1, 11, 20, 195, 173, 22, 14,
-			9, 20, 0, 0, 0, 14, 139, 4, 5, 16, 18, 5, 19, 195, 173, 22, 14, 9, 20, 0, 0, 13, 2, 95, 34, 126, 84, 39, 118, 39,
-			84, 49, 37, 0, 0, 14, 2, 95, 33, 84, 121, 49, 51, 37, 76, 67, 121, 49, 0, 0, 0, 10, 135, 16, 18, 5, 4, 5, 197, 136,
-			20, 13, 2, 95, 39, 35, 48, 39, 89, 47, 51, 39, 83, 0, 0, 0, 0, 10, 2, 95, 36, 72, 39, 55, 124, 51, 0, 0, 6, 195,
-			80, 83, 128, 20, 0, 12, 4, 95, 3, 1, 16, 84, 36, 61, 49, 123, 0, 0, 13, 2, 95, 41, 88, 35, 47, 84, 39, 51, 37, 115,
-			0, 0, 13, 2, 95, 40, 88, 124, 47, 84, 39, 51, 49, 35, 0, 0, 11, 2, 95, 47, 55, 39, 65, 36, 50, 39, 0, 0, 10, 2,
-			95, 46, 71, 39, 72, 49, 35, 0, 0, 12, 2, 95, 45, 48, 39, 65, 45, 76, 49, 35, 0, 0, 11, 2, 95, 44, 76, 37, 35, 51,
-			49, 35, 0, 0, 10, 2, 95, 51, 47, 6, 14, 16, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 11, 2, 95, 49, 57,
-			6, 36, 72, 36, 50, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 35, 0, 0, 11, 2, 95, 55, 89, 6, 36, 116, 36, 65, 0, 0,
-			10, 2, 95, 54, 91, 6, 36, 89, 115, 0, 0, 9, 2, 95, 53, 48, 6, 122, 115, 0, 0, 11, 2, 95, 52, 91, 47, 6, 37, 16,
-			37, 0, 0, 16, 2, 95, 59, 71, 39, 72, 49, 39, 76, 37, 35, 51, 49, 35, 0, 0, 14, 2, 95, 58, 72, 84, 39, 57, 71, 39,
-			72, 49, 35, 0, 0, 11, 2, 95, 57, 116, 6, 36, 84, 122, 115, 0, 0, 10, 2, 95, 56, 6, 39, 89, 36, 65, 0, 0, 12, 2,
-			95, 63, 39, 47, 124, 88, 67, 37, 49, 0, 0, 10, 2, 95, 62, 84, 36, 76, 91, 121, 0, 0, 0, 10, 2, 95, 60, 65, 36, 50,
-			91, 121, 0, 0, 0, 7, 196, 80, 83, 69, 72, 20, 0, 0, 0, 13, 138, 15, 11, 9, 5, 14, 5, 196, 141, 11, 15, 20, 0, 24,
-			11, 4, 9, 1, 7, 14, 15, 19, 20, 195, 173, 11, 72, 37, 35, 81, 50, 39, 89, 47, 121, 49, 0, 0, 0, 0, 0, 0, 29, 4,
-			95, 226, 128, 163, 47, 51, 39, 57, 40, 107, 39, 55, 50, 121, 49, 39, 84, 124, 6, 39, 72, 51, 124, 90, 49, 35, 0, 0, 14, 4,
-			95, 226, 128, 162, 39, 72, 51, 124, 90, 49, 35, 0, 0, 18, 4, 95, 226, 128, 161, 72, 84, 39, 57, 37, 47, 121, 49, 51, 121, 90,
-			0, 0, 0, 8, 197, 52, 192, 68, 20, 160, 20, 0, 0, 0, 0, 0, 0, 21, 4, 95, 226, 128, 153, 48, 34, 35, 84, 124, 6, 126,
-			84, 39, 118, 39, 84, 49, 35, 0, 0, 20, 4, 95, 226, 128, 152, 61, 35, 84, 124, 6, 126, 84, 39, 118, 39, 84, 49, 35, 0, 15,
-			4, 95, 4, 15, 20, 89, 10, 71, 6, 39, 47, 49, 129, 0, 0, 10, 4, 20, 196, 186, 11, 47, 135, 49, 0, 0, 14, 139, 16, 18,
-			9, 16, 18, 1, 22, 5, 14, 195, 173, 20, 0, 6, 195, 4, 193, 64, 8, 21, 4, 95, 226, 128, 157, 72, 39, 55, 50, 123, 6, 126,
-			84, 39, 118, 39, 84, 49, 37, 0, 21, 2, 95, 91, 107, 51, 35, 50, 35, 47, 124, 15, 88, 124, 47, 84, 39, 51, 49, 35, 0, 0,
-			21, 4, 95, 226, 128, 156, 107, 39, 34, 50, 123, 6, 126, 84, 39, 118, 39, 84, 49, 37, 0, 0, 19, 4, 95, 226, 128, 147, 72, 45,
-			107, 124, 6, 48, 39, 65, 45, 76, 49, 35, 0, 0, 6, 194, 76, 240, 8, 23, 0, 18, 2, 95, 95, 48, 39, 72, 76, 37, 35, 51,
-			49, 50, 40, 47, 37, 36, 0, 0, 13, 2, 95, 94, 89, 47, 51, 37, 36, 90, 49, 35, 0, 0, 21, 2, 95, 93, 107, 51, 35, 50,
-			35, 47, 124, 15, 88, 35, 47, 84, 39, 51, 37, 115, 0, 0, 18, 2, 95, 92, 39, 48, 35, 76, 50, 123, 15, 55, 39, 65, 36, 50,
-			39, 0, 0, 0, 0, 0, 11, 2, 95, 96, 35, 49, 117, 36, 50, 47, 0, 0, 11, 136, 13, 1, 20, 11, 9, 14, 195, 173, 20, 0,
-			12, 137, 16, 15, 22, 5, 18, 5, 14, 195, 173, 20, 16, 141, 12, 5, 7, 9, 19, 12, 1, 20, 195, 173, 22, 14, 5, 20, 0, 0,
-			0, 7, 195, 4, 179, 192, 72, 8, 0, 0, 0, 27, 4, 95, 7, 18, 22, 89, 10, 6, 39, 71, 51, 124, 115, 4, 36, 50, 121, 65,
-			72, 6, 135, 90, 67, 39, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 16, 15, 21, 196, 141, 5, 14, 195, 173, 20,
-			0, 0, 0, 21, 2, 95, 123, 88, 55, 39, 90, 36, 50, 124, 15, 88, 124, 47, 84, 39, 51, 49, 35, 0, 19, 4, 95, 4, 9, 1,
-			89, 10, 48, 51, 6, 36, 107, 55, 124, 89, 49, 129, 0, 0, 0, 0, 8, 133, 22, 197, 161, 1, 11, 8, 0, 0, 12, 2, 95, 126,
-			84, 45, 50, 39, 84, 49, 35, 0, 0, 21, 2, 95, 125, 88, 55, 39, 90, 36, 50, 124, 15, 88, 35, 47, 84, 39, 51, 37, 115, 0,
-			0, 17, 2, 95, 124, 88, 84, 37, 89, 55, 124, 15, 76, 37, 35, 51, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			131, 19, 195, 186, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 35, 51, 50, 6, 65, 36, 118, 36, 51,
-			35, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 64, 146, 129, 80, 146, 193, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 4, 196,
-			141, 12, 14, 76, 45, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 77, 97,
-			84, 21, 32, 20, 0, 0, 0, 0, 0, 6, 131, 20, 195, 173, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 133, 15, 4, 5, 197, 136, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 197, 161,
-			20, 1, 20, 21, 20, 195, 161, 18, 14, 9, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 9, 4, 5, 195, 173, 20, 0, 0, 0, 0, 12, 137, 16, 15, 197, 190, 9, 1,
-			18, 14, 5, 20, 0, 0, 9, 134, 16, 15, 4, 5, 197, 136, 20, 0, 15, 140, 4, 5, 6, 9, 14, 9, 20, 195, 173, 22, 14, 5,
-			20, 0, 0, 6, 116, 101, 0, 4, 1, 97, 105, 2, 32, 3, 47, 36, 0, 1, 97, 105, 118, 97, 122, 0, 1, 101, 100, 2, 107, 0,
-			1, 101, 100, 2, 114, 109, 0, 1, 101, 109, 2, 114, 32, 0, 1, 110, 105, 2, 114, 0, 1, 110, 105, 2, 114, 110, 101, 0, 1, 115,
-			2, 114, 0, 1, 115, 2, 114, 32, 0, 1, 115, 161, 195, 110, 2, 32, 0, 1, 118, 2, 100, 97, 106, 197, 161, 0, 1, 120, 101, 2,
-			114, 0, 2, 104, 111, 32, 0, 2, 106, 32, 0, 2, 109, 97, 116, 105, 0, 2, 114, 97, 106, 197, 161, 0, 2, 114, 97, 122, 0, 2,
-			114, 109, 0, 2, 115, 32, 0, 2, 115, 116, 0, 2, 120, 0, 8, 2, 99, 104, 0, 8, 2, 100, 97, 106, 197, 161, 0, 8, 2, 108,
-			101, 99, 0, 8, 2, 108, 101, 102, 0, 8, 2, 108, 101, 103, 0, 8, 2, 108, 101, 107, 0, 8, 2, 108, 101, 109, 0, 8, 2, 108,
-			101, 111, 0, 8, 2, 108, 101, 112, 0, 8, 2, 108, 101, 114, 0, 8, 2, 108, 101, 115, 101, 110, 0, 8, 2, 108, 101, 115, 107, 0,
-			8, 2, 108, 101, 116, 101, 114, 0, 8, 2, 108, 101, 116, 101, 120, 116, 0, 8, 2, 108, 101, 118, 0, 8, 2, 108, 101, 120, 0, 8,
-			2, 109, 112, 0, 8, 2, 110, 100, 0, 8, 2, 110, 105, 115, 0, 8, 2, 110, 116, 111, 0, 8, 2, 111, 0, 8, 2, 114, 97, 112,
-			0, 8, 2, 114, 97, 115, 0, 8, 2, 114, 101, 122, 0, 8, 2, 114, 195, 169, 110, 0, 8, 2, 114, 195, 169, 122, 0, 8, 2, 114,
-			196, 141, 0, 8, 2, 120, 0, 8, 2, 195, 179, 0, 8, 97, 107, 2, 99, 104, 0, 8, 97, 107, 2, 100, 0, 8, 97, 107, 2, 103,
-			0, 8, 97, 109, 2, 109, 97, 116, 105, 0, 8, 97, 109, 2, 114, 105, 97, 0, 8, 97, 109, 2, 114, 105, 195, 161, 0, 8, 97, 112,
-			2, 110, 116, 0, 8, 97, 114, 116, 115, 2, 103, 0, 8, 101, 100, 2, 107, 116, 195, 173, 0, 8, 101, 108, 101, 116, 2, 114, 0, 8,
-			101, 112, 109, 111, 107, 2, 110, 0, 8, 101, 161, 197, 118, 2, 196, 141, 0, 8, 105, 104, 99, 114, 97, 2, 107, 0, 8, 105, 108, 2,
-			114, 0, 8, 107, 97, 114, 97, 104, 99, 2, 114, 0, 8, 107, 97, 114, 97, 104, 99, 2, 114, 0, 8, 108, 97, 2, 114, 0, 8, 108,
-			97, 2, 114, 110, 0, 8, 108, 97, 2, 114, 110, 97, 116, 195, 173, 118, 0, 8, 108, 97, 119, 2, 114, 0, 8, 110, 105, 2, 108, 0,
-			8, 110, 105, 2, 110, 0, 8, 110, 105, 101, 100, 0, 8, 110, 121, 115, 0, 8, 110, 121, 115, 2, 116, 105, 0, 8, 111, 104, 2, 108,
-			0, 8, 111, 112, 2, 110, 0, 8, 112, 101, 115, 2, 109, 98, 0, 8, 115, 2, 112, 0, 8, 115, 97, 112, 0, 8, 115, 105, 115, 97,
-			2, 110, 0, 8, 115, 105, 120, 101, 2, 110, 0, 8, 115, 121, 115, 2, 109, 0, 8, 169, 195, 2, 114, 0, 7, 6, 195, 161, 0, 3,
-			124, 0, 7, 6, 195, 164, 0, 3, 36, 0, 7, 6, 195, 169, 0, 3, 123, 0, 7, 6, 195, 173, 0, 3, 121, 0, 7, 6, 195, 179,
-			0, 3, 125, 0, 7, 6, 195, 180, 0, 3, 40, 39, 0, 7, 6, 195, 186, 0, 3, 126, 0, 7, 6, 195, 189, 0, 3, 121, 0, 7,
-			6, 196, 141, 0, 3, 76, 0, 7, 6, 196, 143, 0, 2, 32, 3, 115, 0, 4, 3, 116, 0, 2, 32, 17, 70, 0, 7, 6, 196, 186,
-			0, 3, 135, 0, 7, 6, 196, 190, 0, 3, 61, 0, 7, 6, 197, 136, 0, 3, 67, 0, 7, 6, 197, 149, 0, 3, 132, 0, 7, 6,
-			197, 153, 0, 3, 133, 0, 4, 1, 102, 3, 134, 0, 1, 107, 0, 1, 112, 0, 1, 116, 0, 7, 6, 197, 161, 0, 3, 91, 0, 7,
-			6, 197, 165, 0, 3, 115, 0, 7, 6, 197, 190, 0, 4, 3, 90, 0, 2, 32, 17, 70, 0, 2, 32, 3, 91, 0, 7, 6, 97, 0,
-			3, 35, 0, 7, 6, 98, 0, 101, 122, 111, 8, 2, 45, 14, 128, 132, 133, 3, 6, 71, 36, 88, 39, 0, 101, 122, 8, 2, 45, 14,
-			128, 132, 132, 3, 6, 71, 36, 89, 0, 2, 32, 3, 48, 0, 4, 3, 71, 0, 2, 32, 17, 70, 0, 7, 6, 99, 0, 104, 3, 101,
-			0, 3, 117, 0, 7, 6, 100, 0, 2, 32, 3, 47, 0, 4, 3, 72, 0, 1, 97, 2, 101, 0, 1, 97, 114, 116, 2, 105, 0, 1,
-			101, 109, 2, 105, 0, 1, 101, 114, 107, 2, 105, 0, 1, 101, 114, 107, 115, 105, 100, 2, 105, 0, 1, 105, 2, 101, 110, 0, 1, 105,
-			2, 101, 111, 0, 1, 110, 97, 109, 2, 105, 116, 0, 1, 110, 105, 2, 105, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105, 107, 0,
-			1, 111, 108, 101, 109, 2, 105, 0, 1, 111, 109, 2, 101, 114, 0, 1, 114, 111, 2, 105, 0, 1, 169, 195, 109, 2, 105, 0, 1, 179,
-			195, 108, 101, 109, 2, 105, 0, 2, 32, 17, 70, 0, 2, 101, 28, 17, 0, 2, 101, 99, 105, 0, 2, 101, 102, 0, 2, 101, 116, 101,
-			107, 0, 2, 101, 116, 101, 114, 109, 0, 2, 105, 28, 17, 0, 2, 105, 99, 107, 0, 2, 105, 100, 97, 107, 116, 105, 0, 2, 105, 102,
-			0, 2, 105, 107, 32, 0, 2, 105, 107, 116, 0, 2, 105, 111, 0, 2, 105, 114, 0, 2, 105, 115, 107, 114, 101, 0, 2, 105, 115, 107,
-			117, 0, 2, 105, 115, 112, 0, 2, 105, 115, 116, 0, 2, 105, 115, 116, 105, 99, 0, 2, 105, 122, 109, 117, 115, 0, 2, 105, 195, 179,
-			0, 2, 195, 173, 28, 17, 0, 8, 2, 101, 99, 101, 0, 8, 2, 101, 102, 105, 110, 105, 116, 195, 173, 118, 0, 8, 2, 101, 105, 110,
-			116, 101, 0, 8, 2, 101, 107, 111, 114, 0, 8, 2, 101, 107, 114, 101, 109, 101, 110, 116, 0, 8, 2, 101, 107, 114, 195, 169, 116, 0,
-			8, 2, 101, 107, 195, 161, 100, 0, 8, 2, 101, 107, 195, 179, 114, 0, 8, 2, 101, 108, 101, 103, 0, 8, 2, 101, 108, 105, 109, 0,
-			8, 2, 101, 112, 114, 101, 115, 0, 8, 2, 101, 115, 105, 103, 0, 8, 2, 101, 115, 116, 105, 0, 8, 2, 101, 116, 97, 105, 108, 0,
-			8, 2, 101, 116, 101, 107, 116, 195, 173, 0, 8, 2, 101, 118, 105, 122, 0, 8, 2, 101, 118, 195, 173, 122, 0, 8, 2, 101, 122, 0,
-			8, 2, 105, 97, 0, 8, 2, 105, 101, 99, 0, 8, 2, 105, 101, 116, 0, 8, 2, 105, 102, 116, 195, 173, 110, 0, 8, 2, 105, 103,
-			0, 8, 2, 105, 109, 101, 110, 0, 8, 2, 105, 112, 0, 8, 2, 105, 115, 0, 8, 2, 105, 115, 107, 0, 8, 2, 105, 118, 195, 173,
-			122, 0, 8, 2, 105, 195, 161, 0, 8, 2, 105, 195, 169, 0, 8, 97, 107, 2, 101, 116, 0, 8, 97, 110, 2, 195, 173, 100, 0, 8,
-			97, 110, 2, 195, 173, 196, 143, 0, 8, 97, 114, 2, 105, 107, 195, 161, 108, 0, 8, 97, 114, 116, 2, 195, 173, 0, 8, 97, 116, 161,
-			197, 2, 105, 0, 8, 101, 2, 105, 116, 0, 8, 101, 102, 2, 101, 114, 0, 8, 101, 112, 120, 101, 2, 105, 0, 8, 101, 114, 112, 2,
-			105, 122, 98, 0, 8, 101, 114, 112, 2, 105, 197, 161, 0, 8, 101, 114, 112, 2, 195, 173, 100, 0, 8, 101, 114, 112, 2, 195, 173, 196,
-			143, 0, 8, 105, 2, 101, 97, 0, 8, 105, 2, 101, 110, 116, 105, 0, 8, 105, 2, 101, 195, 161, 0, 8, 105, 2, 105, 108, 0, 8,
-			105, 2, 105, 111, 0, 8, 105, 108, 97, 118, 110, 105, 2, 105, 116, 0, 8, 105, 108, 97, 118, 110, 105, 2, 105, 122, 0, 8, 105, 118,
-			2, 101, 97, 0, 8, 105, 118, 2, 101, 111, 0, 8, 105, 118, 2, 101, 117, 0, 8, 105, 118, 101, 2, 101, 110, 0, 8, 105, 122, 101,
-			114, 112, 2, 101, 110, 116, 0, 8, 110, 97, 104, 2, 105, 0, 8, 110, 97, 107, 115, 2, 105, 0, 8, 110, 101, 112, 105, 116, 161, 197,
-			2, 105, 0, 8, 110, 105, 2, 101, 120, 0, 8, 110, 111, 112, 161, 197, 101, 114, 111, 107, 2, 101, 110, 0, 8, 111, 2, 105, 110, 0,
-			8, 111, 2, 105, 115, 0, 8, 111, 2, 105, 197, 161, 0, 8, 111, 2, 195, 173, 196, 143, 0, 8, 111, 107, 2, 105, 102, 105, 0, 8,
-			111, 109, 2, 101, 108, 0, 8, 111, 109, 2, 101, 109, 0, 8, 111, 109, 2, 105, 0, 8, 111, 112, 2, 195, 173, 100, 0, 8, 111, 112,
-			2, 195, 173, 196, 143, 0, 8, 111, 116, 101, 109, 2, 105, 0, 8, 114, 97, 100, 110, 97, 116, 161, 197, 2, 105, 122, 0, 8, 117, 97,
-			2, 105, 0, 8, 117, 97, 2, 105, 0, 8, 117, 116, 161, 197, 2, 101, 110, 0, 8, 117, 116, 161, 197, 2, 105, 0, 8, 161, 195, 116,
-			161, 197, 2, 105, 0, 8, 186, 195, 116, 161, 197, 2, 105, 0, 4, 197, 190, 3, 75, 0, 197, 190, 2, 32, 17, 70, 0, 197, 190, 2,
-			32, 3, 76, 0, 4, 2, 101, 3, 116, 0, 2, 105, 0, 2, 195, 173, 0, 122, 2, 32, 3, 117, 0, 4, 122, 3, 118, 0, 122, 2,
-			32, 17, 70, 0, 7, 6, 101, 0, 3, 36, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 4, 3, 81,
-			0, 2, 32, 17, 70, 0, 7, 6, 104, 0, 2, 32, 3, 101, 0, 4, 3, 107, 0, 2, 32, 17, 70, 0, 7, 6, 105, 0, 97, 3,
-			2, 37, 35, 0, 101, 3, 2, 37, 36, 0, 117, 3, 2, 37, 40, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0,
-			3, 49, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3, 45, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 97, 8,
-			2, 45, 14, 128, 132, 131, 3, 6, 50, 35, 0, 4, 3, 50, 0, 1, 17, 67, 21, 2, 101, 106, 32, 0, 1, 97, 2, 105, 109, 0,
-			1, 97, 103, 114, 111, 2, 105, 122, 0, 1, 97, 109, 2, 105, 0, 1, 97, 118, 122, 2, 101, 106, 32, 0, 1, 100, 97, 105, 114, 2,
-			101, 0, 1, 101, 103, 2, 101, 0, 1, 101, 108, 111, 118, 2, 195, 173, 0, 1, 103, 97, 109, 2, 101, 0, 1, 104, 99, 2, 105, 99,
-			0, 1, 104, 99, 2, 105, 107, 0, 1, 105, 2, 105, 99, 105, 0, 1, 108, 161, 195, 2, 105, 0, 1, 108, 161, 195, 105, 99, 111, 115,
-			2, 101, 0, 1, 108, 161, 195, 109, 114, 111, 102, 2, 101, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105, 107, 0, 1, 111, 2, 105,
-			115, 0, 1, 111, 102, 2, 105, 99, 0, 1, 111, 103, 2, 105, 0, 1, 111, 103, 97, 116, 2, 105, 115, 0, 1, 111, 109, 114, 97, 104,
-			2, 105, 0, 1, 111, 114, 2, 105, 99, 0, 1, 111, 114, 2, 105, 107, 0, 1, 111, 114, 100, 110, 101, 2, 105, 0, 1, 111, 114, 116,
-			2, 105, 0, 1, 114, 101, 116, 110, 105, 2, 101, 0, 1, 116, 161, 195, 116, 161, 197, 2, 101, 32, 0, 1, 117, 109, 2, 105, 107, 0,
-			1, 117, 109, 2, 105, 115, 0, 1, 118, 161, 195, 114, 112, 115, 2, 101, 0, 1, 118, 173, 195, 116, 97, 110, 2, 101, 0, 1, 122, 180,
-			195, 114, 2, 101, 0, 1, 169, 195, 114, 116, 2, 105, 0, 1, 173, 195, 108, 2, 105, 0, 1, 179, 195, 102, 2, 105, 0, 1, 179, 195,
-			103, 2, 105, 0, 1, 179, 195, 109, 114, 97, 104, 2, 105, 0, 2, 101, 28, 17, 0, 2, 101, 104, 111, 32, 0, 2, 101, 110, 116, 0,
-			2, 105, 28, 17, 0, 2, 105, 115, 116, 0, 2, 105, 122, 109, 117, 115, 32, 0, 2, 195, 173, 28, 17, 0, 8, 2, 101, 103, 0, 8,
-			2, 101, 103, 97, 116, 195, 173, 118, 0, 8, 2, 101, 103, 195, 161, 99, 0, 8, 2, 101, 111, 107, 108, 97, 115, 0, 8, 2, 101, 111,
-			112, 114, 195, 169, 110, 0, 8, 2, 101, 111, 114, 101, 0, 8, 2, 101, 114, 118, 0, 8, 2, 101, 117, 116, 114, 195, 161, 108, 0, 8,
-			2, 101, 120, 116, 0, 8, 2, 101, 195, 179, 110, 0, 8, 2, 105, 107, 111, 116, 0, 8, 97, 104, 99, 101, 109, 2, 105, 0, 8, 97,
-			112, 2, 101, 108, 0, 8, 97, 116, 111, 98, 2, 105, 0, 8, 100, 97, 105, 190, 197, 2, 101, 0, 8, 100, 122, 161, 195, 114, 112, 2,
-			101, 0, 8, 101, 2, 101, 114, 103, 0, 8, 101, 98, 2, 101, 102, 0, 8, 101, 103, 2, 105, 0, 8, 101, 109, 2, 101, 197, 190, 0,
-			8, 101, 114, 2, 101, 115, 0, 8, 101, 116, 2, 105, 115, 0, 8, 103, 105, 115, 2, 105, 0, 8, 104, 99, 101, 116, 2, 105, 0, 8,
-			105, 102, 101, 100, 2, 105, 116, 195, 173, 118, 0, 8, 105, 102, 101, 100, 2, 195, 173, 99, 0, 8, 105, 107, 116, 97, 109, 2, 101, 0,
-			8, 105, 108, 2, 101, 0, 8, 105, 109, 2, 105, 0, 8, 105, 109, 100, 97, 2, 105, 115, 116, 0, 8, 108, 161, 195, 101, 114, 2, 101,
-			0, 8, 108, 161, 195, 105, 99, 101, 112, 161, 197, 2, 101, 0, 8, 108, 161, 195, 110, 111, 115, 114, 101, 112, 2, 101, 0, 8, 108, 161,
-			195, 117, 116, 107, 97, 2, 101, 0, 8, 110, 105, 118, 2, 101, 0, 8, 111, 102, 2, 101, 0, 8, 111, 108, 111, 107, 2, 105, 0, 8,
-			111, 109, 2, 105, 0, 8, 114, 186, 195, 116, 108, 117, 107, 2, 101, 0, 8, 116, 114, 97, 112, 2, 101, 114, 0, 8, 116, 115, 101, 105,
-			109, 2, 101, 0, 8, 116, 161, 195, 116, 161, 197, 2, 101, 0, 8, 116, 169, 195, 114, 107, 110, 111, 107, 2, 101, 0, 8, 117, 2, 105,
-			0, 8, 117, 109, 2, 105, 0, 8, 117, 109, 105, 2, 105, 0, 8, 117, 109, 111, 107, 2, 105, 0, 8, 117, 116, 2, 105, 115, 0, 8,
-			118, 173, 195, 116, 97, 114, 116, 115, 105, 110, 105, 109, 100, 97, 2, 101, 0, 8, 169, 195, 103, 2, 105, 0, 8, 169, 195, 114, 116, 2,
-			101, 114, 0, 8, 179, 195, 108, 111, 107, 2, 105, 0, 8, 190, 197, 161, 195, 118, 2, 101, 0, 4, 2, 101, 3, 67, 0, 2, 105, 0,
-			2, 195, 173, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 129, 0, 7, 6, 112, 0, 111, 8,
-			2, 45, 14, 128, 132, 131, 3, 6, 48, 39, 0, 111, 100, 8, 2, 45, 14, 128, 132, 132, 3, 6, 48, 39, 47, 0, 114, 105, 8, 2,
-			45, 14, 128, 132, 132, 3, 6, 48, 51, 37, 0, 3, 48, 0, 111, 118, 8, 2, 115, 116, 97, 17, 67, 3, 48, 39, 83, 0, 7, 6,
-			113, 0, 3, 49, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 1, 25, 2, 25, 3, 44, 0, 4, 3, 51, 0, 114, 0, 7, 6, 115,
-			0, 111, 8, 2, 45, 14, 128, 132, 131, 3, 6, 89, 39, 0, 3, 89, 0, 7, 6, 116, 0, 4, 3, 47, 0, 1, 97, 2, 105, 99,
-			107, 0, 1, 97, 2, 105, 107, 195, 161, 0, 1, 97, 2, 105, 110, 0, 1, 97, 2, 105, 122, 0, 1, 97, 104, 99, 2, 105, 99, 0,
-			1, 97, 104, 99, 2, 105, 107, 0, 1, 97, 109, 2, 105, 99, 107, 0, 1, 97, 109, 2, 105, 107, 0, 1, 97, 109, 97, 2, 105, 99,
-			0, 1, 97, 109, 97, 2, 105, 107, 0, 1, 97, 109, 101, 2, 105, 0, 1, 97, 109, 101, 116, 2, 105, 0, 1, 101, 2, 105, 99, 0,
-			1, 101, 2, 105, 107, 0, 1, 101, 108, 112, 109, 111, 107, 2, 105, 122, 0, 1, 105, 2, 105, 99, 0, 1, 105, 2, 105, 107, 0, 1,
-			105, 108, 2, 105, 99, 0, 1, 107, 97, 2, 105, 0, 1, 107, 97, 2, 105, 107, 0, 1, 107, 97, 100, 105, 100, 2, 105, 0, 1, 107,
-			101, 2, 105, 0, 1, 107, 101, 2, 195, 173, 0, 1, 107, 114, 2, 105, 0, 1, 110, 2, 105, 99, 0, 1, 110, 2, 105, 110, 0, 1,
-			110, 97, 2, 105, 0, 1, 110, 101, 2, 105, 110, 0, 1, 110, 101, 118, 2, 105, 108, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105,
-			107, 0, 1, 111, 109, 2, 105, 118, 0, 1, 111, 114, 2, 105, 99, 0, 1, 111, 114, 2, 105, 107, 0, 1, 112, 101, 2, 105, 99, 0,
-			1, 112, 101, 2, 105, 107, 0, 1, 112, 111, 2, 105, 0, 1, 114, 97, 112, 2, 105, 0, 1, 115, 2, 105, 99, 0, 1, 115, 97, 2,
-			105, 99, 0, 1, 115, 101, 114, 112, 2, 105, 197, 190, 0, 1, 115, 101, 118, 110, 105, 2, 105, 0, 1, 115, 111, 2, 105, 99, 0, 1,
-			189, 195, 2, 105, 99, 0, 2, 101, 28, 17, 0, 2, 105, 28, 17, 0, 2, 105, 99, 107, 0, 2, 105, 107, 32, 0, 2, 105, 110, 103,
-			0, 2, 105, 115, 116, 0, 2, 105, 122, 109, 117, 115, 32, 0, 2, 195, 173, 28, 17, 0, 8, 2, 101, 114, 101, 115, 116, 114, 105, 0,
-			8, 2, 105, 109, 111, 116, 101, 106, 0, 8, 2, 105, 114, 97, 110, 0, 8, 2, 105, 116, 97, 110, 0, 8, 2, 105, 116, 117, 108, 0,
-			8, 97, 109, 101, 116, 97, 109, 2, 105, 0, 8, 97, 109, 111, 116, 117, 97, 2, 105, 0, 8, 97, 112, 97, 2, 105, 0, 8, 97, 112,
-			105, 116, 110, 97, 2, 105, 0, 8, 97, 115, 2, 105, 114, 0, 8, 97, 115, 2, 105, 115, 0, 8, 97, 116, 161, 197, 2, 105, 0, 8,
-			101, 109, 114, 101, 104, 2, 105, 0, 8, 101, 109, 122, 111, 107, 2, 105, 0, 8, 101, 110, 103, 97, 109, 2, 105, 0, 8, 101, 110, 111,
-			102, 2, 105, 0, 8, 101, 114, 107, 110, 111, 107, 2, 105, 122, 0, 8, 101, 116, 110, 121, 115, 2, 105, 0, 8, 105, 114, 107, 2, 105,
-			99, 0, 8, 105, 114, 107, 2, 105, 107, 0, 8, 105, 114, 107, 2, 105, 122, 0, 8, 105, 115, 110, 101, 115, 2, 105, 0, 8, 107, 97,
-			2, 105, 118, 0, 8, 107, 117, 100, 111, 114, 112, 2, 105, 0, 8, 108, 117, 107, 2, 105, 0, 8, 108, 117, 109, 2, 105, 0, 8, 110,
-			97, 2, 105, 0, 8, 110, 97, 108, 116, 97, 2, 105, 0, 8, 110, 101, 99, 2, 105, 0, 8, 110, 101, 100, 105, 2, 105, 0, 8, 110,
-			101, 118, 101, 114, 112, 2, 195, 173, 118, 0, 8, 110, 111, 107, 2, 105, 0, 8, 111, 97, 104, 99, 2, 105, 99, 0, 8, 111, 97, 104,
-			99, 2, 105, 107, 0, 8, 111, 107, 105, 110, 2, 105, 0, 8, 111, 120, 101, 2, 105, 0, 8, 114, 101, 99, 2, 105, 0, 8, 114, 101,
-			118, 2, 105, 0, 8, 115, 2, 105, 109, 117, 108, 0, 8, 115, 98, 97, 2, 105, 0, 8, 115, 101, 100, 2, 105, 0, 8, 115, 105, 108,
-			97, 98, 2, 105, 0, 8, 115, 105, 114, 101, 116, 107, 97, 114, 97, 104, 99, 2, 105, 0, 8, 115, 105, 114, 101, 116, 107, 97, 114, 97,
-			104, 99, 2, 195, 173, 107, 0, 8, 115, 105, 116, 97, 116, 161, 197, 2, 105, 0, 8, 115, 110, 105, 2, 105, 0, 8, 115, 110, 111, 107,
-			2, 105, 0, 8, 115, 111, 110, 103, 97, 105, 100, 2, 105, 0, 8, 115, 117, 106, 2, 105, 0, 8, 117, 101, 99, 97, 109, 114, 97, 102,
-			2, 105, 0, 8, 117, 112, 2, 105, 107, 0, 8, 120, 101, 116, 2, 105, 108, 0, 8, 161, 197, 2, 105, 112, 101, 110, 100, 105, 0, 8,
-			161, 197, 101, 114, 2, 105, 0, 8, 161, 197, 110, 105, 2, 105, 0, 8, 161, 197, 110, 105, 101, 100, 2, 105, 0, 8, 161, 197, 110, 111,
-			107, 2, 105, 0, 4, 195, 173, 1, 97, 2, 118, 3, 47, 121, 0, 195, 173, 1, 105, 2, 118, 0, 195, 173, 1, 107, 101, 112, 115, 2,
-			118, 0, 195, 173, 1, 111, 109, 2, 118, 0, 195, 173, 1, 114, 111, 2, 109, 0, 195, 173, 1, 115, 101, 108, 97, 2, 116, 0, 195, 173,
-			1, 117, 110, 107, 105, 118, 0, 195, 173, 8, 2, 109, 111, 118, 0, 195, 173, 8, 97, 103, 101, 110, 2, 118, 0, 195, 173, 8, 97, 110,
-			114, 101, 116, 108, 97, 2, 118, 0, 195, 173, 8, 102, 105, 100, 2, 110, 0, 195, 173, 8, 105, 100, 117, 97, 2, 118, 0, 195, 173, 8,
-			105, 110, 105, 102, 101, 100, 2, 118, 0, 195, 173, 8, 105, 115, 110, 101, 115, 0, 195, 173, 8, 107, 97, 2, 118, 0, 195, 173, 8, 107,
-			101, 116, 101, 100, 0, 195, 173, 8, 107, 117, 100, 111, 114, 112, 2, 118, 0, 195, 173, 8, 107, 117, 114, 116, 161, 197, 110, 111, 107, 2,
-			118, 0, 195, 173, 8, 115, 101, 108, 97, 112, 0, 195, 173, 8, 115, 117, 106, 0, 4, 2, 101, 3, 115, 0, 2, 105, 0, 2, 195, 173,
-			0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 121, 8, 2, 21, 14, 128, 132, 130, 3, 6, 84, 37, 0, 1, 17, 65, 2, 25,
-			3, 58, 0, 4, 3, 84, 0, 1, 17, 65, 2, 108, 25, 0, 1, 17, 65, 2, 110, 0, 1, 17, 65, 2, 196, 186, 0, 1, 17, 65,
-			2, 197, 136, 0, 7, 6, 119, 0, 1, 17, 65, 2, 25, 3, 58, 0, 4, 3, 84, 0, 104, 2, 12, 0, 7, 6, 120, 0, 3, 49,
-			89, 0, 7, 6, 121, 0, 3, 37, 0, 7, 6, 122, 0, 4, 3, 88, 0, 2, 32, 17, 70, 0, 2, 32, 3, 89, 0, 7, 6, 0,
-			196, 155, 3, 36, 0, 37, 1, 32, 15, 3, 48, 36, 51, 117, 36, 50, 47, 0, 37, 3, 48, 36, 51, 117, 36, 50, 47, 39, 0, 36,
-			3, 72, 39, 55, 124, 51, 0, 197, 175, 3, 126, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts57 = FileInMemory_createWithData (8714, reinterpret_cast<const char *> (&espeakdata_dicts57_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/sk_dict", 
+		static unsigned char espeakdata_dicts58_data[9162] = {
+			0, 4, 0, 0, 40, 20, 0, 0, 0, 6, 195, 60, 225, 78, 15, 0, 0, 0, 6, 194, 228, 80, 72, 8, 0, 6, 65, 4, 124, 0,
+			49, 5, 193, 4, 72, 8, 0, 0, 0, 0, 6, 65, 8, 71, 123, 0, 0, 0, 0, 0, 6, 65, 12, 117, 123, 0, 0, 0, 0, 0,
+			6, 65, 16, 72, 123, 0, 0, 0, 0, 16, 4, 95, 100, 112, 116, 9, 76, 57, 4, 35, 34, 49, 35, 10, 0, 0, 5, 65, 20, 123,
+			0, 0, 0, 0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 11, 200, 16, 84, 18, 21, 57, 86, 56, 144, 15, 0, 6, 65, 28, 81,
+			123, 0, 0, 0, 0, 0, 6, 65, 32, 107, 124, 0, 0, 0, 0, 11, 1, 35, 49, 51, 121, 90, 37, 49, 0, 27, 0, 5, 65, 36,
+			121, 0, 0, 0, 13, 1, 38, 35, 65, 48, 36, 51, 89, 35, 50, 72, 0, 11, 65, 112, 72, 4, 45, 107, 123, 6, 124, 0, 0, 0,
+			6, 65, 40, 57, 123, 0, 0, 0, 7, 196, 148, 65, 79, 84, 15, 12, 1, 42, 107, 84, 37, 36, 88, 72, 35, 0, 27, 0, 9, 1,
+			43, 48, 55, 40, 89, 0, 27, 0, 7, 65, 44, 49, 124, 0, 49, 6, 65, 44, 49, 0, 28, 0, 0, 0, 0, 19, 4, 95, 100, 105,
+			97, 89, 10, 48, 51, 6, 36, 107, 55, 124, 89, 49, 129, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36, 65, 0,
+			0, 9, 198, 64, 245, 133, 72, 83, 165, 15, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 6, 65, 60, 125, 0, 49, 9,
+			65, 60, 39, 10, 0, 72, 28, 23, 0, 9, 198, 61, 0, 84, 72, 233, 64, 15, 13, 1, 61, 51, 39, 84, 50, 124, 15, 89, 35, 0,
+			27, 0, 0, 0, 11, 1, 64, 88, 35, 84, 37, 50, 124, 76, 0, 6, 65, 64, 48, 123, 0, 0, 0, 0, 20, 4, 95, 226, 158, 148,
+			91, 121, 48, 49, 35, 15, 6, 84, 48, 51, 35, 84, 39, 0, 0, 7, 65, 68, 49, 84, 123, 0, 0, 0, 0, 0, 6, 65, 72, 36,
+			51, 0, 0, 0, 0, 15, 4, 95, 100, 111, 116, 89, 10, 71, 6, 39, 47, 49, 129, 0, 0, 7, 65, 76, 36, 89, 0, 49, 7, 65,
+			76, 89, 10, 0, 8, 0, 0, 0, 0, 6, 65, 80, 47, 123, 0, 0, 0, 0, 0, 5, 65, 84, 126, 0, 0, 9, 198, 64, 254, 73,
+			5, 35, 133, 15, 0, 0, 0, 7, 65, 88, 84, 123, 0, 49, 7, 65, 88, 84, 10, 0, 28, 0, 0, 0, 14, 4, 95, 49, 77, 52,
+			71, 6, 37, 55, 37, 125, 50, 0, 0, 15, 65, 92, 72, 84, 6, 39, 57, 37, 47, 123, 4, 84, 123, 0, 0, 0, 0, 17, 1, 95,
+			47, 84, 44, 72, 124, 15, 65, 6, 36, 118, 36, 51, 35, 0, 0, 13, 4, 95, 49, 77, 49, 115, 6, 37, 89, 121, 117, 0, 7, 65,
+			96, 37, 49, 89, 0, 0, 14, 4, 95, 49, 77, 50, 65, 6, 37, 55, 37, 125, 50, 0, 0, 16, 4, 95, 49, 77, 51, 65, 6, 37,
+			55, 57, 35, 51, 72, 35, 0, 0, 0, 11, 65, 100, 37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 47,
+			0, 49, 7, 65, 104, 88, 10, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 95, 226, 156, 148, 47, 40, 76, 50,
+			123, 15, 88, 6, 35, 91, 49, 44, 47, 50, 40, 115, 37, 36, 0, 0, 0, 0, 0, 0, 0, 30, 4, 95, 226, 158, 162, 39, 72, 51,
+			124, 90, 49, 35, 15, 6, 84, 15, 47, 84, 35, 51, 36, 15, 91, 6, 121, 48, 49, 37, 0, 0, 18, 4, 95, 226, 156, 147, 88, 35,
+			91, 49, 44, 47, 50, 40, 115, 37, 36, 0, 0, 0, 0, 0, 0, 17, 4, 95, 116, 108, 100, 89, 10, 84, 6, 45, 50, 39, 84, 49,
+			129, 0, 0, 0, 0, 0, 15, 65, 124, 39, 47, 84, 39, 51, 36, 50, 123, 15, 6, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 196, 40, 81, 5, 56, 15, 0, 0, 0, 6, 195, 168, 226, 69, 15, 0, 7, 196, 80, 84, 129, 104, 15, 0, 8, 197, 52,
+			20, 148, 36, 224, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 168, 226, 85, 15, 0, 0, 0, 17, 4, 95, 50, 77, 49,
+			72, 84, 6, 36, 115, 6, 37, 89, 121, 117, 0, 0, 0, 20, 4, 95, 50, 77, 51, 72, 84, 6, 36, 65, 6, 37, 55, 57, 35, 51,
+			72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 148, 65, 73, 15, 18, 4,
+			95, 109, 99, 110, 89, 10, 65, 6, 35, 49, 51, 39, 50, 39, 65, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 44, 30, 68, 20, 160,
+			15, 0, 0, 0, 0, 12, 201, 16, 81, 137, 56, 149, 37, 88, 225, 64, 15, 0, 6, 194, 4, 160, 72, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 148, 65, 89, 15, 0, 6, 195, 80, 145, 64, 15, 0, 0, 9, 198, 76, 19, 79, 80, 233, 64, 15, 0, 0, 0, 0,
+			6, 195, 80, 81, 1, 15, 0, 0, 0, 0, 0, 0, 9, 67, 88, 194, 192, 84, 45, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 10, 3, 95, 35, 57, 47, 6, 35, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 233, 64, 15, 0,
+			0, 11, 65, 136, 72, 4, 45, 107, 123, 6, 123, 0, 0, 0, 7, 132, 98, 121, 197, 165, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 20, 229, 5, 72, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 233, 64,
+			15, 0, 0, 0, 0, 0, 0, 0, 7, 196, 80, 145, 84, 60, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 243, 0, 76, 0, 0, 0, 0, 7, 195,
+			8, 86, 128, 8, 23, 0, 0, 0, 0, 0, 0, 10, 199, 56, 81, 193, 82, 85, 142, 20, 15, 0, 0, 0, 0, 0, 0, 0, 9, 67,
+			16, 194, 0, 72, 45, 107, 0, 0, 0, 0, 0, 0, 11, 65, 148, 72, 4, 45, 107, 123, 6, 121, 0, 0, 0, 10, 3, 226, 130, 172,
+			36, 40, 51, 39, 0, 0, 9, 198, 64, 245, 111, 20, 233, 64, 15, 0, 5, 194, 78, 160, 72, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+			4, 95, 111, 103, 111, 89, 10, 6, 39, 81, 39, 67, 49, 39, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 65, 34, 69, 52,
+			84, 142, 148, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 98, 114, 118, 71, 51, 6, 36, 84, 36, 0,
+			0, 0, 0, 0, 8, 197, 228, 144, 68, 56, 144, 15, 0, 11, 136, 110, 97, 100, 195, 173, 115, 197, 165, 15, 0, 0, 0, 0, 0, 0,
+			0, 0, 13, 3, 226, 128, 176, 48, 51, 39, 65, 37, 55, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95,
+			51, 88, 47, 14, 16, 6, 37, 72, 89, 35, 115, 0, 0, 10, 3, 95, 48, 67, 89, 47, 6, 39, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 10, 4, 112, 108, 197, 165, 48, 45, 115, 0, 6, 195, 77, 65, 64, 72, 0, 0, 0, 5, 194, 40, 80, 72, 16, 3,
+			95, 49, 57, 116, 6, 36, 84, 122, 47, 50, 124, 89, 115, 0, 0, 7, 195, 65, 34, 64, 8, 23, 15, 3, 95, 49, 56, 6, 39, 89,
+			36, 65, 50, 124, 89, 115, 0, 0, 6, 195, 168, 226, 73, 15, 14, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 6, 39, 0, 0, 0,
+			0, 11, 65, 156, 72, 4, 45, 107, 123, 6, 125, 0, 0, 0, 11, 3, 226, 136, 146, 65, 121, 50, 40, 89, 0, 0, 15, 3, 95, 49,
+			49, 57, 6, 36, 72, 36, 50, 124, 89, 115, 0, 0, 12, 3, 95, 49, 48, 116, 6, 36, 89, 35, 115, 0, 0, 15, 3, 95, 49, 51,
+			47, 14, 16, 6, 37, 50, 124, 89, 115, 0, 0, 14, 3, 95, 49, 50, 72, 84, 6, 35, 50, 124, 89, 115, 0, 0, 14, 3, 95, 49,
+			53, 48, 6, 122, 47, 50, 124, 89, 115, 0, 0, 14, 3, 95, 49, 52, 91, 47, 44, 50, 6, 124, 89, 115, 0, 0, 16, 3, 95, 49,
+			55, 89, 6, 36, 116, 36, 65, 50, 124, 89, 115, 0, 0, 15, 3, 95, 49, 54, 91, 6, 36, 89, 47, 50, 124, 89, 115, 0, 0, 0,
+			18, 3, 95, 55, 88, 89, 6, 36, 116, 36, 65, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			16, 4, 95, 97, 99, 117, 89, 10, 72, 6, 135, 90, 67, 39, 65, 0, 0, 0, 7, 196, 53, 195, 137, 20, 15, 7, 196, 53, 195, 137,
+			4, 15, 0, 8, 197, 53, 195, 137, 61, 80, 15, 0, 0, 0, 9, 134, 114, 195, 180, 122, 110, 101, 15, 0, 0, 0, 0, 10, 3, 95,
+			50, 102, 72, 84, 6, 36, 0, 0, 0, 9, 198, 76, 50, 15, 64, 233, 64, 15, 9, 198, 52, 21, 11, 36, 233, 64, 15, 14, 3, 95,
+			50, 88, 72, 84, 6, 35, 72, 89, 35, 115, 0, 0, 0, 10, 199, 80, 83, 5, 90, 86, 142, 20, 15, 0, 17, 5, 95, 48, 77, 65,
+			51, 65, 6, 37, 55, 57, 35, 51, 72, 37, 0, 0, 16, 5, 95, 48, 77, 65, 50, 65, 6, 37, 55, 37, 125, 50, 37, 0, 0, 6,
+			195, 148, 65, 85, 15, 0, 16, 5, 95, 48, 77, 65, 52, 71, 6, 37, 55, 37, 125, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+			3, 95, 63, 63, 89, 37, 65, 71, 39, 55, 0, 0, 0, 0, 6, 195, 76, 209, 64, 72, 16, 3, 95, 52, 88, 91, 47, 6, 37, 16,
+			37, 72, 89, 35, 115, 0, 0, 6, 195, 148, 65, 69, 15, 0, 0, 0, 0, 0, 0, 6, 194, 56, 16, 72, 23, 22, 4, 95, 115, 117,
+			98, 72, 4, 39, 55, 50, 121, 15, 6, 37, 50, 72, 36, 49, 89, 15, 0, 0, 16, 3, 95, 53, 88, 48, 6, 122, 115, 116, 36, 89,
+			57, 35, 47, 0, 0, 0, 17, 4, 95, 114, 110, 103, 89, 10, 49, 51, 6, 126, 91, 49, 39, 65, 0, 0, 0, 0, 0, 0, 0, 9,
+			198, 60, 179, 204, 37, 73, 64, 15, 17, 3, 95, 54, 88, 91, 6, 36, 89, 115, 116, 36, 89, 57, 35, 47, 0, 0, 0, 0, 0, 0,
+			0, 7, 196, 53, 195, 137, 84, 15, 0, 0, 0, 0, 0, 0, 6, 195, 52, 145, 9, 15, 0, 0, 0, 9, 198, 90, 83, 133, 188, 179,
+			192, 15, 0, 17, 3, 95, 56, 88, 6, 39, 89, 36, 65, 116, 36, 89, 57, 35, 47, 0, 0, 7, 196, 32, 241, 14, 36, 15, 0, 0,
+			0, 0, 0, 0, 5, 194, 32, 240, 76, 0, 18, 3, 95, 57, 88, 72, 6, 36, 84, 122, 115, 116, 36, 89, 57, 35, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 10, 3, 95, 63, 65, 88, 50, 35, 49, 0, 0, 0, 8, 197, 77, 97, 84, 21, 32, 15, 0, 0, 0, 0, 22,
+			4, 95, 115, 117, 112, 107, 4, 39, 51, 50, 121, 15, 6, 37, 50, 72, 36, 49, 89, 15, 0, 10, 65, 168, 72, 45, 107, 123, 6, 126,
+			0, 0, 24, 4, 95, 115, 116, 107, 89, 39, 10, 91, 6, 37, 49, 65, 121, 65, 72, 6, 135, 90, 67, 39, 65, 0, 0, 0, 7, 196,
+			88, 147, 133, 56, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 65, 34, 74, 5, 73, 64, 15, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 99, 105, 114, 89, 6, 39, 89, 47, 51, 37, 38, 4, 36, 91, 49, 129, 0, 0, 0,
+			16, 4, 95, 48, 77, 52, 71, 6, 37, 55, 37, 125, 50, 39, 40, 0, 0, 0, 16, 4, 95, 48, 77, 50, 65, 6, 37, 55, 37, 125,
+			50, 39, 40, 0, 0, 15, 4, 95, 48, 77, 51, 65, 6, 37, 55, 57, 35, 51, 47, 0, 0, 0, 13, 4, 95, 48, 77, 49, 115, 6,
+			37, 89, 121, 117, 0, 0, 6, 195, 42, 163, 137, 15, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 65, 101, 15, 0, 22, 4, 95,
+			108, 105, 103, 55, 6, 37, 81, 35, 47, 4, 126, 51, 39, 84, 4, 35, 50, 123, 0, 0, 0, 0, 0, 10, 4, 116, 196, 186, 107, 47,
+			135, 49, 0, 0, 0, 0, 0, 7, 196, 80, 83, 69, 72, 15, 0, 0, 0, 0, 7, 195, 8, 86, 143, 8, 23, 0, 0, 0, 0, 0,
+			0, 0, 12, 201, 36, 229, 5, 48, 145, 197, 57, 67, 165, 15, 12, 201, 36, 225, 9, 88, 145, 21, 112, 195, 133, 15, 0, 0, 0, 0,
+			0, 0, 0, 11, 200, 213, 64, 84, 85, 71, 18, 56, 144, 15, 0, 0, 0, 0, 0, 0, 0, 8, 196, 4, 193, 66, 60, 72, 8, 0,
+			12, 201, 36, 229, 18, 61, 97, 82, 80, 233, 64, 15, 0, 0, 0, 10, 135, 111, 100, 195, 173, 115, 197, 165, 15, 17, 4, 95, 99, 101,
+			100, 89, 10, 117, 6, 36, 116, 37, 55, 55, 129, 0, 0, 11, 136, 112, 111, 100, 195, 173, 115, 197, 165, 15, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 196, 26, 35, 137, 96, 15, 9, 67, 188, 195, 128, 76, 45, 50, 0, 0, 0, 11, 200, 65, 34, 80, 72, 21, 133, 58,
+			80, 15, 12, 4, 95, 99, 97, 112, 84, 36, 61, 49, 123, 0, 0, 0, 0, 9, 198, 65, 41, 66, 85, 163, 165, 15, 0, 0, 0, 7,
+			196, 60, 180, 133, 52, 8, 26, 3, 95, 194, 183, 71, 39, 72, 49, 35, 15, 6, 84, 15, 48, 51, 39, 89, 47, 51, 57, 36, 72, 49,
+			40, 0, 0, 11, 3, 95, 194, 180, 72, 135, 90, 36, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 188, 76, 123, 0, 0, 17,
+			3, 95, 194, 173, 51, 39, 88, 116, 36, 61, 39, 84, 67, 121, 49, 0, 0, 8, 197, 105, 37, 111, 58, 80, 15, 0, 31, 3, 95, 194,
+			171, 72, 84, 39, 57, 37, 47, 124, 15, 55, 6, 39, 65, 36, 50, 124, 15, 88, 6, 124, 47, 84, 39, 51, 49, 35, 0, 0, 15, 3,
+			95, 194, 168, 48, 51, 36, 107, 55, 124, 89, 49, 35, 0, 0, 11, 200, 24, 193, 88, 36, 34, 76, 58, 80, 15, 0, 22, 3, 95, 194,
+			166, 48, 51, 36, 51, 40, 91, 36, 50, 124, 15, 76, 6, 37, 35, 51, 35, 0, 0, 12, 137, 112, 114, 101, 100, 195, 173, 115, 197, 165,
+			15, 5, 194, 76, 16, 76, 0, 0, 6, 195, 91, 80, 75, 8, 0, 0, 0, 0, 25, 3, 95, 194, 161, 39, 71, 34, 124, 115, 36, 50,
+			121, 15, 84, 6, 121, 49, 51, 37, 76, 67, 121, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 89, 65, 68, 100, 15,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 79, 8, 18, 4, 95, 226, 151, 139, 71,
+			37, 36, 55, 37, 15, 49, 51, 6, 40, 107, 0, 0, 0, 0, 0, 19, 4, 95, 226, 151, 143, 76, 37, 36, 51, 50, 37, 15, 49, 51,
+			6, 40, 107, 0, 0, 6, 195, 36, 226, 84, 15, 0, 0, 23, 3, 95, 194, 191, 39, 71, 51, 124, 115, 36, 50, 121, 15, 6, 39, 47,
+			124, 88, 67, 37, 49, 0, 0, 0, 8, 197, 52, 192, 68, 20, 160, 15, 0, 10, 199, 60, 178, 69, 56, 91, 203, 60, 15, 0, 22, 4,
+			95, 226, 151, 134, 76, 37, 36, 51, 50, 37, 15, 72, 6, 37, 35, 65, 35, 50, 47, 0, 31, 3, 95, 194, 187, 72, 84, 39, 57, 37,
+			47, 124, 15, 55, 6, 39, 65, 36, 50, 124, 15, 88, 6, 35, 47, 84, 39, 51, 37, 115, 0, 0, 12, 3, 95, 194, 184, 117, 36, 72,
+			37, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 27, 4, 95, 103, 114, 118, 89, 10, 6, 39, 71, 51, 124, 115, 4, 36, 50, 121, 65,
+			72, 6, 135, 90, 67, 39, 65, 0, 0, 0, 0, 9, 2, 195, 151, 49, 51, 124, 47, 0, 7, 2, 196, 143, 116, 123, 0, 0, 0, 0,
+			0, 9, 198, 61, 53, 1, 80, 233, 64, 15, 0, 0, 0, 0, 13, 2, 194, 167, 48, 35, 51, 35, 81, 51, 35, 83, 0, 0, 9, 2,
+			194, 164, 65, 36, 50, 35, 0, 0, 8, 2, 194, 165, 57, 36, 50, 0, 0, 22, 4, 95, 226, 150, 160, 76, 37, 36, 51, 50, 37, 15,
+			91, 6, 47, 84, 39, 51, 36, 117, 0, 9, 2, 194, 162, 117, 36, 50, 47, 0, 0, 21, 4, 95, 226, 150, 161, 71, 37, 36, 55, 37,
+			15, 91, 6, 47, 84, 39, 51, 36, 117, 0, 10, 2, 194, 163, 55, 37, 71, 51, 35, 0, 0, 7, 2, 197, 136, 36, 67, 0, 0, 0,
+			17, 2, 194, 174, 51, 36, 81, 37, 89, 47, 51, 39, 84, 35, 50, 123, 0, 0, 14, 2, 194, 175, 48, 51, 40, 107, 15, 50, 6, 35,
+			47, 0, 0, 19, 2, 194, 172, 55, 39, 81, 37, 117, 49, 121, 15, 88, 6, 124, 48, 39, 51, 0, 19, 2, 195, 164, 6, 124, 48, 51,
+			36, 107, 55, 35, 89, 39, 84, 35, 50, 123, 0, 0, 0, 0, 5, 130, 196, 155, 43, 0, 38, 4, 95, 226, 151, 166, 39, 72, 51, 124,
+			90, 49, 35, 15, 6, 84, 15, 47, 84, 35, 51, 36, 15, 71, 6, 37, 36, 55, 36, 57, 15, 71, 6, 39, 72, 49, 37, 0, 0, 13,
+			2, 194, 169, 49, 39, 48, 37, 51, 35, 57, 47, 0, 0, 23, 2, 194, 182, 6, 39, 88, 50, 35, 76, 36, 50, 37, 36, 15, 6, 39,
+			72, 89, 36, 49, 40, 0, 0, 0, 12, 201, 48, 81, 201, 76, 192, 84, 149, 99, 133, 15, 0, 7, 195, 36, 224, 75, 72, 8, 7, 2,
+			194, 181, 65, 121, 0, 0, 11, 2, 198, 146, 83, 55, 39, 51, 123, 50, 0, 0, 0, 12, 2, 194, 176, 89, 47, 40, 48, 67, 39, 40,
+			0, 0, 16, 2, 194, 177, 48, 55, 40, 89, 15, 65, 6, 121, 50, 40, 89, 0, 7, 2, 197, 153, 36, 133, 0, 0, 20, 2, 194, 190,
+			47, 6, 14, 16, 37, 15, 91, 6, 47, 84, 44, 115, 37, 50, 37, 0, 0, 11, 2, 195, 183, 116, 36, 55, 36, 50, 39, 0, 0, 13,
+			2, 194, 188, 91, 47, 84, 44, 115, 37, 50, 35, 0, 16, 2, 195, 180, 6, 125, 89, 84, 4, 39, 49, 124, 67, 39, 65, 0, 0, 10,
+			135, 112, 114, 101, 100, 101, 197, 136, 15, 6, 195, 56, 145, 64, 72, 13, 2, 194, 189, 48, 39, 55, 39, 84, 37, 117, 35, 0, 7, 2,
+			197, 165, 115, 123, 0, 0, 0, 0, 7, 2, 195, 176, 36, 72, 0, 0, 0, 7, 196, 80, 82, 148, 60, 15, 9, 67, 64, 192, 200, 48,
+			45, 101, 0, 9, 2, 195, 190, 89, 39, 51, 50, 0, 0, 17, 2, 197, 175, 6, 126, 89, 10, 49, 51, 6, 126, 90, 49, 39, 65, 0,
+			0, 6, 195, 148, 65, 65, 15, 0, 18, 2, 195, 189, 72, 4, 45, 107, 123, 6, 37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0,
+			0, 9, 198, 48, 241, 201, 77, 73, 75, 15, 7, 2, 196, 190, 36, 61, 0, 0, 0, 0, 6, 195, 76, 243, 64, 72, 0, 13, 2, 196,
+			186, 72, 4, 45, 107, 123, 6, 36, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 4, 95, 226, 137, 136, 48, 51, 37, 71, 55, 37,
+			90, 67, 36, 15, 89, 35, 15, 51, 6, 39, 84, 50, 124, 0, 0, 0, 0, 0, 0, 0, 9, 134, 112, 111, 100, 101, 197, 136, 15, 0,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 6, 194, 64, 240, 8, 23, 5, 194, 76, 144, 76, 0, 7, 195, 64, 241, 0, 8,
+			23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 188, 240, 72, 8, 0,
+			24, 4, 95, 226, 136, 155, 47, 51, 36, 115, 37, 35, 15, 6, 39, 72, 65, 39, 117, 67, 37, 50, 35, 0, 0, 23, 4, 95, 226, 136,
+			154, 72, 51, 40, 107, 124, 15, 6, 39, 72, 65, 39, 117, 67, 37, 50, 35, 0, 0, 0, 18, 4, 95, 226, 137, 160, 67, 36, 51, 39,
+			84, 50, 124, 15, 89, 6, 35, 0, 0, 0, 16, 4, 95, 226, 136, 158, 67, 36, 49, 39, 67, 36, 76, 50, 39, 0, 0, 29, 4, 95,
+			226, 137, 165, 84, 122, 76, 91, 121, 15, 6, 35, 55, 36, 71, 39, 15, 89, 35, 15, 51, 6, 39, 84, 50, 124, 0, 0, 29, 4, 95,
+			226, 137, 164, 65, 36, 50, 91, 121, 15, 6, 35, 55, 36, 71, 39, 15, 89, 35, 15, 51, 6, 39, 84, 50, 124, 0, 0, 0, 0, 0,
+			0, 0, 0, 7, 196, 64, 85, 5, 72, 15, 0, 13, 2, 95, 34, 126, 84, 39, 118, 39, 58, 49, 37, 0, 0, 8, 133, 111, 100, 101,
+			197, 136, 15, 14, 2, 95, 33, 84, 121, 49, 51, 37, 76, 67, 121, 49, 0, 0, 0, 13, 2, 95, 39, 35, 48, 39, 89, 47, 51, 39,
+			83, 0, 0, 0, 0, 9, 198, 52, 21, 11, 36, 226, 64, 15, 10, 2, 95, 36, 72, 39, 55, 124, 51, 0, 0, 6, 195, 80, 83, 128,
+			15, 0, 0, 13, 2, 95, 41, 88, 35, 47, 84, 39, 51, 37, 115, 0, 0, 13, 2, 95, 40, 88, 124, 47, 84, 39, 51, 49, 35, 0,
+			0, 10, 2, 95, 47, 55, 39, 65, 49, 35, 0, 0, 10, 2, 95, 46, 71, 39, 72, 49, 35, 0, 0, 14, 2, 95, 45, 89, 48, 39,
+			57, 39, 84, 67, 121, 49, 0, 0, 11, 2, 95, 44, 76, 37, 35, 51, 49, 35, 0, 0, 10, 2, 95, 51, 47, 6, 14, 16, 37, 0,
+			0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 11, 2, 95, 49, 57, 6, 36, 72, 36, 50, 0, 32, 4, 95, 226, 129, 131, 39, 72,
+			51, 124, 90, 49, 35, 15, 6, 84, 15, 47, 84, 35, 51, 36, 15, 48, 6, 39, 65, 45, 76, 49, 37, 0, 0, 10, 2, 95, 48, 50,
+			6, 40, 55, 35, 0, 0, 11, 2, 95, 55, 89, 6, 36, 116, 36, 65, 0, 0, 10, 2, 95, 54, 91, 6, 36, 89, 115, 0, 0, 9,
+			2, 95, 53, 48, 6, 122, 115, 0, 0, 11, 2, 95, 52, 91, 47, 6, 37, 16, 37, 0, 0, 16, 2, 95, 59, 71, 39, 72, 49, 39,
+			76, 37, 35, 51, 49, 35, 0, 0, 14, 2, 95, 58, 72, 84, 39, 57, 71, 39, 72, 49, 35, 0, 0, 11, 2, 95, 57, 116, 6, 36,
+			84, 122, 115, 0, 0, 10, 2, 95, 56, 6, 39, 89, 36, 65, 0, 0, 12, 2, 95, 63, 39, 47, 124, 88, 67, 37, 49, 0, 0, 10,
+			2, 95, 62, 84, 122, 76, 91, 121, 0, 0, 0, 10, 2, 95, 60, 65, 36, 50, 91, 121, 0, 0, 0, 0, 0, 0, 11, 200, 84, 180,
+			137, 228, 245, 129, 58, 80, 15, 0, 0, 0, 0, 0, 0, 27, 4, 95, 226, 128, 163, 39, 72, 51, 124, 90, 49, 35, 15, 47, 6, 51,
+			39, 57, 40, 107, 39, 55, 67, 121, 49, 0, 0, 14, 4, 95, 226, 128, 162, 39, 72, 51, 124, 90, 49, 35, 0, 0, 15, 4, 95, 226,
+			128, 161, 72, 84, 39, 57, 49, 51, 121, 90, 0, 0, 11, 4, 95, 226, 128, 160, 49, 51, 121, 90, 0, 0, 6, 65, 212, 36, 91, 0,
+			0, 0, 0, 0, 9, 198, 78, 171, 193, 76, 233, 64, 15, 0, 34, 4, 95, 226, 128, 154, 72, 39, 55, 50, 123, 15, 57, 6, 36, 72,
+			50, 39, 72, 40, 80, 107, 123, 15, 6, 126, 84, 39, 118, 39, 58, 49, 37, 0, 0, 15, 4, 95, 226, 128, 153, 39, 72, 89, 40, 84,
+			67, 121, 49, 0, 0, 34, 4, 95, 226, 128, 152, 107, 39, 51, 50, 123, 15, 57, 6, 36, 72, 50, 39, 72, 40, 80, 107, 123, 15, 6,
+			126, 84, 39, 118, 39, 58, 49, 37, 0, 0, 0, 9, 198, 91, 81, 84, 22, 243, 165, 15, 22, 4, 95, 226, 128, 158, 72, 39, 55, 50,
+			123, 15, 6, 126, 84, 39, 118, 39, 58, 49, 37, 0, 0, 6, 195, 4, 193, 64, 8, 39, 4, 95, 226, 128, 157, 72, 84, 39, 57, 37,
+			47, 124, 15, 107, 6, 39, 51, 50, 124, 15, 6, 39, 48, 35, 76, 50, 124, 15, 6, 126, 84, 39, 118, 39, 58, 49, 35, 0, 22, 2,
+			95, 91, 107, 51, 35, 50, 35, 47, 124, 15, 88, 6, 124, 47, 84, 39, 51, 49, 35, 0, 0, 22, 4, 95, 226, 128, 156, 107, 39, 51,
+			50, 123, 15, 6, 126, 84, 39, 118, 39, 58, 49, 37, 0, 0, 14, 4, 95, 226, 128, 147, 48, 39, 65, 45, 76, 49, 35, 0, 0, 6,
+			194, 76, 240, 8, 23, 0, 18, 2, 95, 95, 48, 39, 72, 76, 37, 35, 51, 49, 39, 84, 67, 121, 49, 0, 0, 10, 2, 95, 94, 84,
+			39, 49, 124, 67, 0, 0, 22, 2, 95, 93, 107, 51, 35, 50, 35, 47, 124, 15, 88, 6, 35, 47, 84, 39, 51, 37, 115, 0, 0, 18,
+			2, 95, 92, 39, 48, 35, 76, 50, 124, 15, 55, 6, 39, 65, 49, 35, 0, 0, 0, 0, 6, 2, 95, 97, 124, 0, 0, 11, 2, 95,
+			96, 35, 49, 117, 36, 50, 47, 0, 0, 0, 0, 0, 0, 7, 195, 4, 179, 192, 72, 8, 7, 2, 95, 107, 49, 124, 0, 0, 12, 201,
+			65, 33, 83, 88, 81, 47, 20, 233, 64, 15, 0, 6, 195, 16, 83, 79, 15, 0, 0, 6, 2, 95, 111, 125, 0, 0, 0, 0, 0, 7,
+			2, 95, 115, 36, 89, 0, 0, 8, 197, 89, 206, 69, 58, 80, 15, 0, 18, 4, 95, 104, 97, 99, 89, 10, 65, 6, 36, 49, 76, 36,
+			67, 39, 65, 0, 0, 0, 0, 7, 2, 95, 118, 84, 123, 0, 0, 0, 0, 22, 2, 95, 123, 88, 55, 39, 90, 36, 50, 124, 15, 88,
+			6, 124, 47, 84, 39, 51, 49, 35, 0, 0, 6, 195, 168, 226, 65, 15, 8, 2, 95, 122, 88, 36, 47, 0, 0, 0, 0, 0, 12, 2,
+			95, 126, 84, 45, 50, 39, 84, 49, 35, 0, 0, 22, 2, 95, 125, 88, 55, 39, 90, 36, 50, 124, 15, 88, 6, 35, 47, 84, 39, 51,
+			37, 115, 0, 0, 18, 2, 95, 124, 88, 84, 37, 89, 55, 124, 15, 76, 6, 37, 35, 51, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 35, 51, 50, 6, 65, 36, 118, 36, 51, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 64, 146, 129, 80, 146, 193, 15,
+			0, 0, 0, 0, 0, 0, 0, 5, 194, 82, 80, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 88, 147, 142, 148, 15,
+			7, 196, 64, 82, 206, 148, 15, 0, 0, 0, 0, 0, 0, 0, 21, 72, 16, 144, 71, 56, 244, 212, 148, 176, 72, 37, 35, 81, 50, 39,
+			89, 47, 121, 49, 0, 0, 0, 11, 200, 52, 147, 79, 88, 199, 4, 56, 80, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+			5, 115, 116, 196, 186, 112, 89, 47, 135, 48, 0, 0, 6, 195, 82, 85, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 4,
+			181, 37, 88, 226, 64, 15, 0, 0, 0, 0, 0, 7, 65, 228, 90, 36, 47, 0, 0, 7, 196, 52, 192, 68, 148, 15, 0, 0, 0, 0,
+			0, 21, 72, 64, 244, 212, 36, 131, 149, 82, 80, 48, 39, 89, 115, 37, 107, 50, 40, 47, 121, 0, 0, 0, 7, 195, 78, 80, 197, 72,
+			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 116, 101, 0, 4, 1, 97, 105, 2, 32, 3, 47, 36, 0, 1, 97, 105, 118, 97, 122, 0, 1, 101, 100, 2, 107, 0, 1, 101, 100,
+			2, 114, 109, 0, 1, 101, 109, 2, 114, 32, 0, 1, 110, 105, 2, 114, 0, 1, 110, 105, 2, 114, 110, 101, 0, 1, 115, 2, 114, 0,
+			1, 115, 2, 114, 32, 0, 1, 115, 161, 195, 110, 2, 32, 0, 1, 118, 2, 100, 97, 106, 197, 161, 0, 1, 120, 101, 2, 114, 0, 2,
+			104, 111, 32, 0, 2, 106, 32, 0, 2, 109, 97, 116, 105, 0, 2, 114, 97, 106, 197, 161, 0, 2, 114, 97, 122, 0, 2, 114, 109, 0,
+			2, 115, 32, 0, 2, 115, 116, 0, 2, 120, 0, 8, 2, 99, 104, 0, 8, 2, 100, 97, 106, 197, 161, 0, 8, 2, 108, 101, 99, 0,
+			8, 2, 108, 101, 102, 0, 8, 2, 108, 101, 103, 0, 8, 2, 108, 101, 107, 0, 8, 2, 108, 101, 109, 0, 8, 2, 108, 101, 111, 0,
+			8, 2, 108, 101, 112, 0, 8, 2, 108, 101, 114, 0, 8, 2, 108, 101, 115, 101, 110, 0, 8, 2, 108, 101, 115, 107, 0, 8, 2, 108,
+			101, 116, 101, 114, 0, 8, 2, 108, 101, 116, 101, 120, 116, 0, 8, 2, 108, 101, 118, 0, 8, 2, 108, 101, 120, 0, 8, 2, 109, 112,
+			0, 8, 2, 110, 100, 0, 8, 2, 110, 105, 115, 0, 8, 2, 110, 116, 111, 0, 8, 2, 111, 0, 8, 2, 114, 97, 112, 0, 8, 2,
+			114, 97, 115, 0, 8, 2, 114, 101, 122, 0, 8, 2, 114, 195, 169, 110, 0, 8, 2, 114, 195, 169, 122, 0, 8, 2, 114, 196, 141, 0,
+			8, 2, 120, 0, 8, 2, 195, 179, 0, 8, 97, 107, 2, 99, 104, 0, 8, 97, 107, 2, 100, 0, 8, 97, 107, 2, 103, 0, 8, 97,
+			109, 2, 109, 97, 116, 105, 0, 8, 97, 109, 2, 114, 105, 97, 0, 8, 97, 109, 2, 114, 105, 195, 161, 0, 8, 97, 112, 2, 110, 116,
+			0, 8, 97, 114, 116, 115, 2, 103, 0, 8, 101, 100, 2, 107, 116, 195, 173, 0, 8, 101, 108, 101, 116, 2, 114, 0, 8, 101, 112, 109,
+			111, 107, 2, 110, 0, 8, 101, 161, 197, 118, 2, 196, 141, 0, 8, 105, 104, 99, 114, 97, 2, 107, 0, 8, 105, 108, 2, 114, 0, 8,
+			107, 97, 114, 97, 104, 99, 2, 114, 0, 8, 107, 97, 114, 97, 104, 99, 2, 114, 0, 8, 108, 97, 2, 114, 0, 8, 108, 97, 2, 114,
+			110, 0, 8, 108, 97, 2, 114, 110, 97, 116, 195, 173, 118, 0, 8, 108, 97, 119, 2, 114, 0, 8, 110, 105, 2, 108, 0, 8, 110, 105,
+			2, 110, 0, 8, 110, 105, 101, 100, 0, 8, 110, 121, 115, 0, 8, 110, 121, 115, 2, 116, 105, 0, 8, 111, 104, 2, 108, 0, 8, 111,
+			112, 2, 110, 0, 8, 112, 101, 115, 2, 109, 98, 0, 8, 115, 2, 112, 0, 8, 115, 97, 112, 0, 8, 115, 105, 115, 97, 2, 110, 0,
+			8, 115, 105, 120, 101, 2, 110, 0, 8, 115, 121, 115, 2, 109, 0, 8, 169, 195, 2, 114, 0, 7, 6, 195, 161, 0, 3, 124, 0, 7,
+			6, 195, 164, 0, 3, 36, 0, 7, 6, 195, 169, 0, 3, 123, 0, 7, 6, 195, 173, 0, 3, 121, 0, 7, 6, 195, 179, 0, 3, 125,
+			0, 7, 6, 195, 180, 0, 3, 40, 39, 0, 7, 6, 195, 186, 0, 3, 126, 0, 7, 6, 195, 189, 0, 3, 121, 0, 7, 6, 196, 141,
+			0, 3, 76, 0, 7, 6, 196, 143, 0, 2, 32, 3, 115, 0, 4, 3, 116, 0, 2, 32, 17, 70, 0, 7, 6, 196, 186, 0, 3, 135,
+			0, 7, 6, 196, 190, 0, 3, 61, 0, 7, 6, 197, 136, 0, 3, 67, 0, 7, 6, 197, 149, 0, 3, 132, 0, 7, 6, 197, 153, 0,
+			3, 133, 0, 4, 1, 102, 3, 134, 0, 1, 107, 0, 1, 112, 0, 1, 116, 0, 7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 165,
+			0, 3, 115, 0, 7, 6, 197, 190, 0, 4, 3, 90, 0, 2, 32, 17, 70, 0, 2, 32, 3, 91, 0, 7, 6, 97, 0, 3, 35, 0,
+			7, 6, 98, 0, 101, 122, 111, 8, 2, 45, 14, 128, 132, 133, 3, 6, 71, 36, 88, 39, 0, 101, 122, 8, 2, 45, 14, 128, 132, 132,
+			3, 6, 71, 36, 89, 0, 2, 32, 3, 48, 0, 4, 3, 71, 0, 2, 32, 17, 70, 0, 7, 6, 99, 0, 104, 3, 101, 0, 3, 117,
+			0, 7, 6, 100, 0, 2, 32, 3, 47, 0, 4, 3, 72, 0, 1, 97, 2, 101, 0, 1, 97, 114, 116, 2, 105, 0, 1, 101, 109, 2,
+			105, 0, 1, 101, 114, 107, 2, 105, 0, 1, 101, 114, 107, 115, 105, 100, 2, 105, 0, 1, 105, 2, 101, 110, 0, 1, 105, 2, 101, 111,
+			0, 1, 110, 97, 109, 2, 105, 116, 0, 1, 110, 105, 2, 105, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105, 107, 0, 1, 111, 108,
+			101, 109, 2, 105, 0, 1, 111, 109, 2, 101, 114, 0, 1, 114, 111, 2, 105, 0, 1, 169, 195, 109, 2, 105, 0, 1, 179, 195, 108, 101,
+			109, 2, 105, 0, 2, 32, 17, 70, 0, 2, 101, 28, 17, 0, 2, 101, 99, 105, 0, 2, 101, 102, 0, 2, 101, 116, 101, 107, 0, 2,
+			101, 116, 101, 114, 109, 0, 2, 105, 28, 17, 0, 2, 105, 99, 107, 0, 2, 105, 100, 97, 107, 116, 105, 0, 2, 105, 102, 0, 2, 105,
+			107, 32, 0, 2, 105, 107, 116, 0, 2, 105, 111, 0, 2, 105, 114, 0, 2, 105, 115, 107, 114, 101, 0, 2, 105, 115, 107, 117, 0, 2,
+			105, 115, 112, 0, 2, 105, 115, 116, 0, 2, 105, 115, 116, 105, 99, 0, 2, 105, 122, 109, 117, 115, 0, 2, 105, 195, 179, 0, 2, 195,
+			173, 28, 17, 0, 8, 2, 101, 99, 101, 0, 8, 2, 101, 102, 105, 110, 105, 116, 195, 173, 118, 0, 8, 2, 101, 105, 110, 116, 101, 0,
+			8, 2, 101, 107, 111, 114, 0, 8, 2, 101, 107, 114, 101, 109, 101, 110, 116, 0, 8, 2, 101, 107, 114, 195, 169, 116, 0, 8, 2, 101,
+			107, 195, 161, 100, 0, 8, 2, 101, 107, 195, 179, 114, 0, 8, 2, 101, 108, 101, 103, 0, 8, 2, 101, 108, 105, 109, 0, 8, 2, 101,
+			112, 114, 101, 115, 0, 8, 2, 101, 115, 105, 103, 0, 8, 2, 101, 115, 116, 105, 0, 8, 2, 101, 116, 97, 105, 108, 0, 8, 2, 101,
+			116, 101, 107, 116, 195, 173, 0, 8, 2, 101, 118, 105, 122, 0, 8, 2, 101, 118, 195, 173, 122, 0, 8, 2, 101, 122, 0, 8, 2, 105,
+			97, 0, 8, 2, 105, 101, 99, 0, 8, 2, 105, 101, 116, 0, 8, 2, 105, 102, 116, 195, 173, 110, 0, 8, 2, 105, 103, 0, 8, 2,
+			105, 109, 101, 110, 0, 8, 2, 105, 112, 0, 8, 2, 105, 115, 0, 8, 2, 105, 115, 107, 0, 8, 2, 105, 118, 195, 173, 122, 0, 8,
+			2, 105, 195, 161, 0, 8, 2, 105, 195, 169, 0, 8, 97, 107, 2, 101, 116, 0, 8, 97, 110, 2, 195, 173, 100, 0, 8, 97, 110, 2,
+			195, 173, 196, 143, 0, 8, 97, 114, 2, 105, 107, 195, 161, 108, 0, 8, 97, 114, 116, 2, 195, 173, 0, 8, 97, 116, 161, 197, 2, 105,
+			0, 8, 101, 2, 105, 116, 0, 8, 101, 102, 2, 101, 114, 0, 8, 101, 112, 120, 101, 2, 105, 0, 8, 101, 114, 112, 2, 105, 122, 98,
+			0, 8, 101, 114, 112, 2, 105, 197, 161, 0, 8, 101, 114, 112, 2, 195, 173, 100, 0, 8, 101, 114, 112, 2, 195, 173, 196, 143, 0, 8,
+			105, 2, 101, 97, 0, 8, 105, 2, 101, 110, 116, 105, 0, 8, 105, 2, 101, 195, 161, 0, 8, 105, 2, 105, 108, 0, 8, 105, 2, 105,
+			111, 0, 8, 105, 108, 97, 118, 110, 105, 2, 105, 116, 0, 8, 105, 108, 97, 118, 110, 105, 2, 105, 122, 0, 8, 105, 118, 2, 101, 97,
+			0, 8, 105, 118, 2, 101, 111, 0, 8, 105, 118, 2, 101, 117, 0, 8, 105, 118, 101, 2, 101, 110, 0, 8, 105, 122, 101, 114, 112, 2,
+			101, 110, 116, 0, 8, 110, 97, 104, 2, 105, 0, 8, 110, 97, 107, 115, 2, 105, 0, 8, 110, 101, 112, 105, 116, 161, 197, 2, 105, 0,
+			8, 110, 105, 2, 101, 120, 0, 8, 110, 111, 112, 161, 197, 101, 114, 111, 107, 2, 101, 110, 0, 8, 111, 2, 105, 110, 0, 8, 111, 2,
+			105, 115, 0, 8, 111, 2, 105, 197, 161, 0, 8, 111, 2, 195, 173, 196, 143, 0, 8, 111, 107, 2, 105, 102, 105, 0, 8, 111, 109, 2,
+			101, 108, 0, 8, 111, 109, 2, 101, 109, 0, 8, 111, 109, 2, 105, 0, 8, 111, 112, 2, 195, 173, 100, 0, 8, 111, 112, 2, 195, 173,
+			196, 143, 0, 8, 111, 116, 101, 109, 2, 105, 0, 8, 114, 97, 100, 110, 97, 116, 161, 197, 2, 105, 122, 0, 8, 117, 97, 2, 105, 0,
+			8, 117, 97, 2, 105, 0, 8, 117, 116, 161, 197, 2, 101, 110, 0, 8, 117, 116, 161, 197, 2, 105, 0, 8, 161, 195, 116, 161, 197, 2,
+			105, 0, 8, 186, 195, 116, 161, 197, 2, 105, 0, 4, 197, 190, 3, 75, 0, 197, 190, 2, 32, 17, 70, 0, 197, 190, 2, 32, 3, 76,
+			0, 4, 2, 101, 3, 116, 0, 2, 105, 0, 2, 195, 173, 0, 122, 2, 32, 3, 117, 0, 4, 122, 3, 118, 0, 122, 2, 32, 17, 70,
+			0, 7, 6, 101, 0, 3, 36, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 2, 32, 3, 49, 0, 4, 3, 81, 0, 2, 32,
+			17, 70, 0, 7, 6, 104, 0, 2, 32, 3, 101, 0, 4, 3, 107, 0, 2, 32, 17, 70, 0, 7, 6, 105, 0, 97, 3, 2, 37, 35,
+			0, 101, 3, 2, 37, 36, 0, 117, 3, 2, 37, 40, 0, 3, 37, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0,
+			7, 6, 108, 0, 1, 25, 2, 25, 3, 45, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 97, 8, 2, 45, 14,
+			128, 132, 131, 3, 6, 50, 35, 0, 4, 3, 50, 0, 1, 17, 67, 21, 2, 101, 106, 32, 0, 1, 97, 2, 105, 109, 0, 1, 97, 103,
+			114, 111, 2, 105, 122, 0, 1, 97, 109, 2, 105, 0, 1, 97, 118, 122, 2, 101, 106, 32, 0, 1, 100, 97, 105, 114, 2, 101, 0, 1,
+			101, 103, 2, 101, 0, 1, 101, 108, 111, 118, 2, 195, 173, 0, 1, 103, 97, 109, 2, 101, 0, 1, 104, 99, 2, 105, 99, 0, 1, 104,
+			99, 2, 105, 107, 0, 1, 105, 2, 105, 99, 105, 0, 1, 108, 161, 195, 2, 105, 0, 1, 108, 161, 195, 105, 99, 111, 115, 2, 101, 0,
+			1, 108, 161, 195, 109, 114, 111, 102, 2, 101, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105, 107, 0, 1, 111, 2, 105, 115, 0, 1,
+			111, 102, 2, 105, 99, 0, 1, 111, 103, 2, 105, 0, 1, 111, 103, 97, 116, 2, 105, 115, 0, 1, 111, 109, 114, 97, 104, 2, 105, 0,
+			1, 111, 114, 2, 105, 99, 0, 1, 111, 114, 2, 105, 107, 0, 1, 111, 114, 100, 110, 101, 2, 105, 0, 1, 111, 114, 116, 2, 105, 0,
+			1, 114, 101, 116, 110, 105, 2, 101, 0, 1, 116, 161, 195, 116, 161, 197, 2, 101, 32, 0, 1, 117, 109, 2, 105, 107, 0, 1, 117, 109,
+			2, 105, 115, 0, 1, 118, 161, 195, 114, 112, 115, 2, 101, 0, 1, 118, 173, 195, 116, 97, 110, 2, 101, 0, 1, 122, 180, 195, 114, 2,
+			101, 0, 1, 169, 195, 114, 116, 2, 105, 0, 1, 173, 195, 108, 2, 105, 0, 1, 179, 195, 102, 2, 105, 0, 1, 179, 195, 103, 2, 105,
+			0, 1, 179, 195, 109, 114, 97, 104, 2, 105, 0, 2, 101, 28, 17, 0, 2, 101, 104, 111, 32, 0, 2, 101, 110, 116, 0, 2, 105, 28,
+			17, 0, 2, 105, 115, 116, 0, 2, 105, 122, 109, 117, 115, 32, 0, 2, 195, 173, 28, 17, 0, 8, 2, 101, 103, 0, 8, 2, 101, 103,
+			97, 116, 195, 173, 118, 0, 8, 2, 101, 103, 195, 161, 99, 0, 8, 2, 101, 111, 107, 108, 97, 115, 0, 8, 2, 101, 111, 112, 114, 195,
+			169, 110, 0, 8, 2, 101, 111, 114, 101, 0, 8, 2, 101, 114, 118, 0, 8, 2, 101, 117, 116, 114, 195, 161, 108, 0, 8, 2, 101, 120,
+			116, 0, 8, 2, 101, 195, 179, 110, 0, 8, 2, 105, 107, 111, 116, 0, 8, 97, 104, 99, 101, 109, 2, 105, 0, 8, 97, 112, 2, 101,
+			108, 0, 8, 97, 116, 111, 98, 2, 105, 0, 8, 100, 97, 105, 190, 197, 2, 101, 0, 8, 100, 122, 161, 195, 114, 112, 2, 101, 0, 8,
+			101, 2, 101, 114, 103, 0, 8, 101, 98, 2, 101, 102, 0, 8, 101, 103, 2, 105, 0, 8, 101, 109, 2, 101, 197, 190, 0, 8, 101, 114,
+			2, 101, 115, 0, 8, 101, 116, 2, 105, 115, 0, 8, 103, 105, 115, 2, 105, 0, 8, 104, 99, 101, 116, 2, 105, 0, 8, 105, 102, 101,
+			100, 2, 105, 116, 195, 173, 118, 0, 8, 105, 102, 101, 100, 2, 195, 173, 99, 0, 8, 105, 107, 116, 97, 109, 2, 101, 0, 8, 105, 108,
+			2, 101, 0, 8, 105, 109, 2, 105, 0, 8, 105, 109, 100, 97, 2, 105, 115, 116, 0, 8, 108, 161, 195, 101, 114, 2, 101, 0, 8, 108,
+			161, 195, 105, 99, 101, 112, 161, 197, 2, 101, 0, 8, 108, 161, 195, 110, 111, 115, 114, 101, 112, 2, 101, 0, 8, 108, 161, 195, 117, 116,
+			107, 97, 2, 101, 0, 8, 110, 105, 118, 2, 101, 0, 8, 111, 102, 2, 101, 0, 8, 111, 108, 111, 107, 2, 105, 0, 8, 111, 109, 2,
+			105, 0, 8, 114, 186, 195, 116, 108, 117, 107, 2, 101, 0, 8, 116, 114, 97, 112, 2, 101, 114, 0, 8, 116, 115, 101, 105, 109, 2, 101,
+			0, 8, 116, 161, 195, 116, 161, 197, 2, 101, 0, 8, 116, 169, 195, 114, 107, 110, 111, 107, 2, 101, 0, 8, 117, 2, 105, 0, 8, 117,
+			109, 2, 105, 0, 8, 117, 109, 105, 2, 105, 0, 8, 117, 109, 111, 107, 2, 105, 0, 8, 117, 116, 2, 105, 115, 0, 8, 118, 173, 195,
+			116, 97, 114, 116, 115, 105, 110, 105, 109, 100, 97, 2, 101, 0, 8, 169, 195, 103, 2, 105, 0, 8, 169, 195, 114, 116, 2, 101, 114, 0,
+			8, 179, 195, 108, 111, 107, 2, 105, 0, 8, 190, 197, 161, 195, 118, 2, 101, 0, 4, 2, 101, 3, 67, 0, 2, 105, 0, 2, 195, 173,
+			0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 117, 3, 129, 0, 7, 6, 112, 0, 111, 8, 2, 45, 14,
+			128, 132, 131, 3, 6, 48, 39, 0, 111, 100, 8, 2, 45, 14, 128, 132, 132, 3, 6, 48, 39, 47, 0, 114, 105, 8, 2, 45, 14, 128,
+			132, 132, 3, 6, 48, 51, 37, 0, 3, 48, 0, 111, 118, 8, 2, 115, 116, 97, 17, 67, 3, 48, 39, 83, 0, 7, 6, 113, 0, 3,
+			49, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 1, 25, 2, 25, 3, 44, 0, 4, 3, 51, 0, 114, 0, 7, 6, 115, 0, 111, 8,
+			2, 45, 14, 128, 132, 131, 3, 6, 89, 39, 0, 3, 89, 0, 7, 6, 116, 0, 4, 3, 47, 0, 1, 97, 2, 105, 99, 107, 0, 1,
+			97, 2, 105, 107, 195, 161, 0, 1, 97, 2, 105, 110, 0, 1, 97, 2, 105, 122, 0, 1, 97, 104, 99, 2, 105, 99, 0, 1, 97, 104,
+			99, 2, 105, 107, 0, 1, 97, 109, 2, 105, 99, 107, 0, 1, 97, 109, 2, 105, 107, 0, 1, 97, 109, 97, 2, 105, 99, 0, 1, 97,
+			109, 97, 2, 105, 107, 0, 1, 97, 109, 101, 2, 105, 0, 1, 97, 109, 101, 116, 2, 105, 0, 1, 101, 2, 105, 99, 0, 1, 101, 2,
+			105, 107, 0, 1, 101, 108, 112, 109, 111, 107, 2, 105, 122, 0, 1, 105, 2, 105, 99, 0, 1, 105, 2, 105, 107, 0, 1, 105, 108, 2,
+			105, 99, 0, 1, 107, 97, 2, 105, 0, 1, 107, 97, 2, 105, 107, 0, 1, 107, 97, 100, 105, 100, 2, 105, 0, 1, 107, 101, 2, 105,
+			0, 1, 107, 101, 2, 195, 173, 0, 1, 107, 114, 2, 105, 0, 1, 110, 2, 105, 99, 0, 1, 110, 2, 105, 110, 0, 1, 110, 97, 2,
+			105, 0, 1, 110, 101, 2, 105, 110, 0, 1, 110, 101, 118, 2, 105, 108, 0, 1, 111, 2, 105, 99, 0, 1, 111, 2, 105, 107, 0, 1,
+			111, 109, 2, 105, 118, 0, 1, 111, 114, 2, 105, 99, 0, 1, 111, 114, 2, 105, 107, 0, 1, 112, 101, 2, 105, 99, 0, 1, 112, 101,
+			2, 105, 107, 0, 1, 112, 111, 2, 105, 0, 1, 114, 97, 112, 2, 105, 0, 1, 115, 2, 105, 99, 0, 1, 115, 97, 2, 105, 99, 0,
+			1, 115, 101, 114, 112, 2, 105, 197, 190, 0, 1, 115, 101, 118, 110, 105, 2, 105, 0, 1, 115, 111, 2, 105, 99, 0, 1, 189, 195, 2,
+			105, 99, 0, 2, 101, 28, 17, 0, 2, 105, 28, 17, 0, 2, 105, 99, 107, 0, 2, 105, 107, 32, 0, 2, 105, 110, 103, 0, 2, 105,
+			115, 116, 0, 2, 105, 122, 109, 117, 115, 32, 0, 2, 195, 173, 28, 17, 0, 8, 2, 101, 114, 101, 115, 116, 114, 105, 0, 8, 2, 105,
+			109, 111, 116, 101, 106, 0, 8, 2, 105, 114, 97, 110, 0, 8, 2, 105, 116, 97, 110, 0, 8, 2, 105, 116, 117, 108, 0, 8, 97, 109,
+			101, 116, 97, 109, 2, 105, 0, 8, 97, 109, 111, 116, 117, 97, 2, 105, 0, 8, 97, 112, 97, 2, 105, 0, 8, 97, 112, 105, 116, 110,
+			97, 2, 105, 0, 8, 97, 115, 2, 105, 114, 0, 8, 97, 115, 2, 105, 115, 0, 8, 97, 116, 161, 197, 2, 105, 0, 8, 101, 109, 114,
+			101, 104, 2, 105, 0, 8, 101, 109, 122, 111, 107, 2, 105, 0, 8, 101, 110, 103, 97, 109, 2, 105, 0, 8, 101, 110, 111, 102, 2, 105,
+			0, 8, 101, 114, 107, 110, 111, 107, 2, 105, 122, 0, 8, 101, 116, 110, 121, 115, 2, 105, 0, 8, 105, 114, 107, 2, 105, 99, 0, 8,
+			105, 114, 107, 2, 105, 107, 0, 8, 105, 114, 107, 2, 105, 122, 0, 8, 105, 115, 110, 101, 115, 2, 105, 0, 8, 107, 97, 2, 105, 118,
+			0, 8, 107, 117, 100, 111, 114, 112, 2, 105, 0, 8, 108, 117, 107, 2, 105, 0, 8, 108, 117, 109, 2, 105, 0, 8, 110, 97, 2, 105,
+			0, 8, 110, 97, 108, 116, 97, 2, 105, 0, 8, 110, 101, 99, 2, 105, 0, 8, 110, 101, 100, 105, 2, 105, 0, 8, 110, 101, 118, 101,
+			114, 112, 2, 195, 173, 118, 0, 8, 110, 111, 107, 2, 105, 0, 8, 111, 97, 104, 99, 2, 105, 99, 0, 8, 111, 97, 104, 99, 2, 105,
+			107, 0, 8, 111, 107, 105, 110, 2, 105, 0, 8, 111, 120, 101, 2, 105, 0, 8, 114, 101, 99, 2, 105, 0, 8, 114, 101, 118, 2, 105,
+			0, 8, 115, 2, 105, 109, 117, 108, 0, 8, 115, 98, 97, 2, 105, 0, 8, 115, 101, 100, 2, 105, 0, 8, 115, 105, 108, 97, 98, 2,
+			105, 0, 8, 115, 105, 114, 101, 116, 107, 97, 114, 97, 104, 99, 2, 105, 0, 8, 115, 105, 114, 101, 116, 107, 97, 114, 97, 104, 99, 2,
+			195, 173, 107, 0, 8, 115, 105, 116, 97, 116, 161, 197, 2, 105, 0, 8, 115, 110, 105, 2, 105, 0, 8, 115, 110, 111, 107, 2, 105, 0,
+			8, 115, 111, 110, 103, 97, 105, 100, 2, 105, 0, 8, 115, 117, 106, 2, 105, 0, 8, 117, 101, 99, 97, 109, 114, 97, 102, 2, 105, 0,
+			8, 117, 112, 2, 105, 107, 0, 8, 120, 101, 116, 2, 105, 108, 0, 8, 161, 197, 2, 105, 112, 101, 110, 100, 105, 0, 8, 161, 197, 101,
+			114, 2, 105, 0, 8, 161, 197, 110, 105, 2, 105, 0, 8, 161, 197, 110, 105, 101, 100, 2, 105, 0, 8, 161, 197, 110, 111, 107, 2, 105,
+			0, 4, 195, 173, 1, 97, 2, 118, 3, 47, 121, 0, 195, 173, 1, 105, 2, 118, 0, 195, 173, 1, 107, 101, 112, 115, 2, 118, 0, 195,
+			173, 1, 111, 109, 2, 118, 0, 195, 173, 1, 114, 111, 2, 109, 0, 195, 173, 1, 115, 101, 108, 97, 2, 116, 0, 195, 173, 1, 117, 110,
+			107, 105, 118, 0, 195, 173, 8, 2, 109, 111, 118, 0, 195, 173, 8, 97, 103, 101, 110, 2, 118, 0, 195, 173, 8, 97, 110, 114, 101, 116,
+			108, 97, 2, 118, 0, 195, 173, 8, 102, 105, 100, 2, 110, 0, 195, 173, 8, 105, 100, 117, 97, 2, 118, 0, 195, 173, 8, 105, 110, 105,
+			102, 101, 100, 2, 118, 0, 195, 173, 8, 105, 115, 110, 101, 115, 0, 195, 173, 8, 107, 97, 2, 118, 0, 195, 173, 8, 107, 101, 116, 101,
+			100, 0, 195, 173, 8, 107, 117, 100, 111, 114, 112, 2, 118, 0, 195, 173, 8, 107, 117, 114, 116, 161, 197, 110, 111, 107, 2, 118, 0, 195,
+			173, 8, 115, 101, 108, 97, 112, 0, 195, 173, 8, 115, 117, 106, 0, 4, 2, 101, 3, 115, 0, 2, 105, 0, 2, 195, 173, 0, 7, 6,
+			117, 0, 3, 40, 0, 7, 6, 118, 0, 121, 8, 2, 21, 14, 128, 132, 130, 3, 6, 84, 37, 0, 1, 17, 65, 2, 25, 3, 58, 0,
+			4, 3, 84, 0, 1, 17, 65, 2, 108, 25, 0, 1, 17, 65, 2, 110, 0, 1, 17, 65, 2, 196, 186, 0, 1, 17, 65, 2, 197, 136,
+			0, 7, 6, 119, 0, 1, 17, 65, 2, 25, 3, 58, 0, 4, 3, 84, 0, 104, 2, 12, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7,
+			6, 121, 0, 3, 37, 0, 7, 6, 122, 0, 4, 3, 88, 0, 2, 32, 17, 70, 0, 2, 32, 3, 89, 0, 7, 6, 0, 196, 155, 3,
+			36, 0, 37, 1, 32, 15, 3, 48, 36, 51, 117, 36, 50, 47, 0, 37, 3, 48, 36, 51, 117, 36, 50, 47, 39, 0, 36, 3, 72, 39,
+			55, 124, 51, 0, 197, 175, 3, 126, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts58 = FileInMemory_createWithData (9161, reinterpret_cast<const char *> (&espeakdata_dicts58_data), 
+			U"espeak-1.48.04-source/espeak-data/sk_dict", 
 			U"sk");
-		Collection_addItem (me.peek(), espeakdata_dicts57.transfer());
+		my addItem_move (espeakdata_dicts58.move());
 
-		static unsigned char espeakdata_dicts58_data[2691] = {
-			0, 4, 0, 0, 110, 8, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 35, 0, 14, 4, 193, 4, 72, 0, 0, 0, 0, 6, 65, 8,
-			71, 13, 0, 0, 0, 0, 0, 6, 65, 12, 117, 13, 0, 0, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 0, 0, 5, 65, 20,
-			36, 0, 0, 0, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 0, 0, 6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 6, 65, 32, 107,
-			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 40, 57, 13, 0, 0, 0, 0, 0, 7, 65, 44, 49, 13, 0, 14, 5, 65, 44,
-			49, 0, 0, 0, 0, 0, 6, 65, 48, 55, 13, 0, 0, 0, 0, 0, 6, 65, 52, 65, 13, 0, 0, 0, 0, 0, 10, 5, 95, 48,
-			1, 14, 4, 37, 50, 0, 6, 65, 56, 50, 13, 0, 0, 0, 0, 0, 6, 65, 60, 39, 0, 14, 4, 193, 60, 72, 0, 0, 0, 0,
-			6, 65, 64, 48, 13, 0, 0, 0, 0, 0, 6, 65, 68, 49, 40, 0, 0, 0, 0, 0, 6, 65, 72, 51, 13, 0, 0, 0, 0, 0,
-			7, 65, 76, 89, 13, 0, 14, 5, 65, 76, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 65, 88, 84, 13, 0, 14, 6, 65, 88, 58, 0, 23, 0, 0, 0, 18, 4, 95, 49, 77, 52, 6, 36, 50, 71, 37, 55, 37, 57,
-			6, 39, 50, 0, 0, 14, 65, 92, 72, 84, 6, 39, 57, 50, 37, 84, 4, 13, 0, 0, 0, 0, 0, 13, 4, 95, 49, 77, 49, 47,
-			6, 37, 89, 39, 76, 0, 7, 65, 96, 37, 49, 89, 0, 0, 18, 4, 95, 49, 77, 50, 6, 36, 50, 65, 37, 55, 37, 57, 6, 39,
-			50, 0, 0, 21, 4, 95, 49, 77, 51, 6, 36, 50, 35, 65, 37, 55, 37, 57, 6, 35, 51, 72, 35, 0, 0, 0, 12, 65, 100, 6,
-			37, 48, 89, 37, 55, 39, 50, 0, 0, 0, 0, 0, 7, 65, 104, 88, 13, 0, 14, 6, 65, 104, 88, 0, 23, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 50, 77, 52, 72, 84, 6, 35, 71, 37, 55, 37,
-			57, 6, 39, 50, 35, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 50, 77, 50, 72, 84, 6, 35, 65, 37, 55, 37, 57, 6, 39, 50,
-			35, 0, 0, 21, 4, 95, 50, 77, 51, 72, 84, 6, 36, 65, 37, 55, 37, 57, 6, 35, 51, 72, 37, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 147, 0, 72, 0, 0, 0, 13, 4, 95, 4, 16, 20, 10,
-			117, 36, 55, 37, 107, 0, 0, 0, 0, 0, 22, 4, 95, 51, 77, 52, 47, 51, 6, 37, 57, 36, 71, 37, 55, 37, 57, 6, 39, 50,
-			37, 0, 0, 0, 0, 0, 0, 0, 22, 4, 95, 51, 77, 50, 47, 51, 6, 37, 57, 36, 65, 37, 55, 37, 57, 6, 39, 50, 37, 0,
-			0, 21, 4, 95, 51, 77, 51, 47, 51, 6, 37, 65, 37, 55, 37, 57, 6, 35, 51, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 15, 3, 95, 51, 88, 47, 51, 6, 37, 72, 36, 89, 36, 47, 0, 0, 9, 3, 95, 48, 67, 89, 47, 39, 0, 0, 0,
-			0, 6, 195, 77, 64, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 77, 65, 64, 72, 0, 0, 0, 5, 194, 40, 80, 72, 17,
-			3, 95, 49, 57, 72, 6, 36, 84, 36, 47, 50, 35, 57, 89, 47, 0, 0, 16, 3, 95, 49, 56, 6, 39, 89, 36, 65, 50, 35, 57,
-			89, 47, 0, 0, 13, 3, 95, 50, 67, 72, 84, 6, 36, 89, 47, 39, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 49, 6, 36,
-			6, 50, 35, 57, 89, 47, 0, 0, 12, 3, 95, 49, 48, 72, 6, 36, 89, 36, 47, 0, 0, 15, 3, 95, 49, 51, 47, 51, 6, 37,
-			50, 35, 57, 89, 47, 0, 0, 15, 3, 95, 49, 50, 72, 84, 6, 35, 50, 35, 57, 89, 47, 0, 0, 15, 3, 95, 49, 53, 48, 6,
-			36, 47, 50, 35, 57, 89, 47, 0, 0, 17, 3, 95, 49, 52, 91, 47, 6, 37, 51, 37, 50, 35, 57, 89, 47, 0, 0, 17, 3, 95,
-			49, 55, 89, 6, 36, 72, 36, 65, 50, 35, 57, 89, 47, 0, 0, 16, 3, 95, 49, 54, 91, 6, 36, 89, 47, 50, 35, 57, 89, 47,
-			0, 0, 0, 17, 3, 95, 55, 88, 89, 6, 36, 72, 36, 65, 72, 36, 89, 36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 50, 88, 72, 84, 6, 35, 57, 89, 36, 47, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 52, 88, 91, 47, 6, 37, 51, 37, 72, 36, 89, 36, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 53, 88, 48, 6, 36, 47, 72, 36, 89, 36, 47, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 16, 3, 95, 54, 88, 91, 6, 36, 89, 47, 72, 36, 89, 36, 47, 0, 0, 0, 0, 0, 6, 195, 76, 83, 64, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 56, 88, 6, 39, 89, 36, 65, 72, 36, 89, 36, 47, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 17, 3, 95, 57, 88, 72, 6, 36, 84, 36, 47, 72, 36, 89, 36, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 17, 4, 95, 48, 77, 52, 71, 37, 55, 37, 57, 6, 39, 50, 39, 58, 0, 0, 0, 17, 4, 95, 48, 77, 50, 65, 37,
-			55, 37, 57, 6, 39, 50, 39, 58, 0, 0, 16, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 6, 35, 51, 72, 0, 0, 0, 13, 4,
-			95, 48, 77, 49, 47, 6, 37, 89, 39, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 76, 211, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 77, 96, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 195, 8, 147, 1, 72, 0, 14, 2, 196, 135, 65, 6, 36, 107, 49, 37, 76, 4, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195,
-			8, 147, 9, 72, 0, 0, 0, 7, 2, 196, 141, 76, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 196, 145,
-			65, 6, 36, 107, 49, 37, 75, 4, 13, 0, 0, 0, 0, 5, 130, 195, 164, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
-			130, 195, 171, 43, 0, 0, 0, 5, 130, 195, 182, 43, 0, 0, 0, 0, 0, 0, 0, 7, 2, 197, 161, 91, 13, 0, 0, 0, 0, 5,
-			130, 195, 188, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 197, 190, 90, 13, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 2, 95, 11, 49, 13, 0, 0, 0, 0, 0, 6, 2, 95, 15, 39, 0, 0, 0, 0, 0, 7, 2, 95, 19, 89, 13, 0,
-			0, 0, 0, 0, 0, 7, 2, 95, 22, 84, 13, 0, 0, 0, 0, 0, 7, 2, 95, 26, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 24, 4, 95, 52, 77, 52, 91, 47, 6, 37, 51, 37, 57, 36, 71, 37, 55, 37, 57, 6, 39, 50, 37, 0, 0,
-			23, 4, 95, 52, 77, 51, 91, 47, 6, 37, 51, 37, 65, 37, 55, 37, 57, 6, 35, 51, 72, 36, 0, 0, 24, 4, 95, 52, 77, 50,
-			91, 47, 6, 37, 51, 37, 57, 36, 65, 37, 55, 37, 57, 6, 39, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95,
-			51, 47, 51, 6, 37, 0, 0, 9, 2, 95, 50, 72, 84, 6, 35, 0, 0, 9, 2, 95, 49, 6, 36, 50, 35, 0, 0, 9, 2, 95,
-			48, 50, 6, 37, 76, 0, 0, 11, 2, 95, 55, 89, 6, 36, 72, 36, 65, 0, 0, 10, 2, 95, 54, 91, 6, 36, 89, 47, 0, 0,
-			9, 2, 95, 53, 48, 6, 36, 47, 0, 0, 11, 2, 95, 52, 91, 47, 6, 37, 51, 37, 0, 0, 0, 0, 11, 2, 95, 57, 72, 6,
-			36, 84, 36, 47, 0, 0, 10, 2, 95, 56, 6, 39, 89, 36, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 240, 72, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 4, 9, 1, 6, 40,
-			65, 55, 35, 58, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18,
-			66, 197, 190, 0, 98, 0, 100, 0, 103, 0, 106, 0, 108, 0, 109, 0, 110, 0, 118, 0, 122, 0, 7, 6, 196, 141, 0, 3, 76, 0,
-			7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0,
-			7, 6, 99, 0, 3, 117, 0, 7, 6, 100, 0, 3, 72, 0, 197, 190, 3, 75, 0, 122, 3, 118, 0, 7, 6, 101, 0, 3, 36, 0,
-			2, 32, 3, 109, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 3, 101, 0, 4, 1, 105, 3,
-			107, 0, 2, 17, 69, 0, 7, 6, 105, 0, 3, 37, 0, 4, 2, 17, 65, 3, 57, 0, 2, 114, 0, 7, 6, 106, 0, 3, 57, 0,
-			7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3, 13, 55, 0, 3, 55, 0, 106, 2, 17, 65, 3, 55, 57, 0,
-			2, 25, 3, 58, 0, 4, 106, 3, 61, 0, 106, 2, 105, 0, 7, 6, 109, 0, 1, 25, 2, 25, 3, 2, 13, 65, 0, 3, 65, 0,
-			4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 110, 0, 1, 25, 2, 25, 3, 2, 13, 50, 0, 3, 50, 0, 106, 2, 17, 65, 3,
-			50, 57, 0, 4, 106, 3, 67, 0, 106, 2, 105, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6,
-			112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0, 1, 25, 2, 25, 3, 13, 51, 0, 4,
-			3, 51, 0, 114, 0, 7, 6, 115, 0, 3, 89, 0, 7, 6, 116, 0, 3, 47, 0, 7, 6, 117, 0, 4, 3, 40, 0, 2, 114, 0,
-			4, 1, 17, 65, 2, 25, 3, 58, 0, 2, 17, 65, 0, 7, 6, 118, 0, 1, 25, 2, 25, 3, 2, 40, 0, 4, 1, 17, 65, 2,
-			25, 3, 58, 0, 1, 18, 66, 2, 17, 65, 0, 4, 3, 84, 0, 2, 45, 17, 65, 12, 0, 7, 6, 119, 0, 1, 17, 65, 2, 25,
-			3, 58, 0, 3, 84, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6,
-			122, 0, 3, 88, 0, 7, 6, 0, 195, 170, 3, 6, 109, 12, 0, 195, 180, 3, 6, 111, 12, 0, 195, 173, 3, 6, 121, 0, 195, 169,
-			3, 6, 123, 0, 195, 161, 3, 6, 124, 0, 195, 179, 3, 6, 125, 0, 195, 186, 3, 6, 126, 0, 195, 182, 3, 13, 12, 0, 195, 159,
-			3, 21, 100, 101, 0, 36, 3, 72, 6, 39, 55, 35, 51, 0, 196, 145, 3, 75, 0, 196, 135, 3, 76, 0, 4, 195, 164, 3, 109, 0,
-			195, 168, 0, 195, 178, 3, 111, 0, 195, 188, 3, 112, 0, 197, 153, 3, 133, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts58 = FileInMemory_createWithData (2690, reinterpret_cast<const char *> (&espeakdata_dicts58_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/sl_dict", 
+		static unsigned char espeakdata_dicts59_data[3966] = {
+			0, 4, 0, 0, 115, 12, 0, 0, 0, 0, 0, 0, 0, 7, 65, 4, 35, 12, 0, 49, 4, 193, 4, 72, 0, 0, 0, 0, 6, 65,
+			8, 71, 13, 0, 0, 0, 0, 0, 6, 65, 12, 117, 13, 0, 0, 0, 0, 5, 194, 212, 80, 17, 0, 6, 65, 16, 72, 13, 0, 0,
+			0, 0, 16, 4, 95, 100, 112, 116, 10, 117, 4, 36, 12, 55, 37, 107, 10, 0, 0, 6, 65, 20, 36, 12, 0, 0, 0, 0, 0, 6,
+			65, 24, 83, 13, 0, 0, 0, 0, 0, 6, 65, 28, 81, 13, 0, 0, 0, 0, 0, 7, 65, 32, 101, 13, 0, 49, 0, 0, 0, 14,
+			1, 35, 55, 6, 36, 12, 89, 47, 84, 37, 117, 35, 0, 0, 11, 1, 36, 72, 6, 39, 12, 55, 35, 51, 0, 0, 14, 1, 37, 111,
+			117, 47, 6, 39, 12, 47, 49, 111, 58, 0, 0, 8, 1, 38, 6, 37, 12, 50, 0, 0, 0, 6, 65, 40, 57, 13, 0, 0, 0, 13,
+			1, 42, 88, 84, 6, 36, 12, 72, 37, 117, 35, 0, 0, 9, 1, 43, 48, 55, 40, 12, 89, 0, 0, 16, 69, 89, 49, 69, 56, 240,
+			40, 89, 6, 109, 12, 109, 50, 39, 0, 7, 65, 44, 49, 13, 0, 49, 5, 65, 44, 49, 0, 7, 65, 44, 49, 13, 0, 49, 0, 7,
+			196, 76, 81, 5, 52, 18, 0, 0, 15, 1, 47, 48, 111, 91, 6, 36, 12, 58, 50, 37, 117, 35, 0, 0, 18, 4, 95, 100, 105, 97,
+			89, 48, 51, 109, 81, 55, 6, 35, 89, 39, 65, 0, 6, 65, 48, 55, 13, 0, 0, 0, 0, 0, 6, 65, 52, 65, 13, 0, 0, 0,
+			0, 0, 6, 65, 56, 50, 13, 0, 0, 0, 0, 0, 7, 65, 60, 39, 12, 0, 49, 4, 193, 60, 72, 7, 65, 60, 39, 12, 0, 49,
+			0, 10, 1, 61, 109, 50, 6, 35, 49, 111, 0, 0, 0, 0, 10, 1, 64, 6, 35, 12, 83, 50, 35, 0, 6, 65, 64, 48, 13, 0,
+			0, 0, 6, 195, 60, 32, 64, 66, 0, 0, 6, 65, 68, 49, 40, 0, 0, 0, 6, 195, 20, 224, 64, 15, 0, 0, 6, 65, 72, 51,
+			13, 0, 0, 0, 0, 0, 7, 65, 76, 89, 13, 0, 49, 5, 65, 76, 89, 0, 7, 65, 76, 89, 13, 0, 49, 0, 0, 0, 0, 6,
+			65, 80, 47, 13, 0, 0, 0, 0, 0, 7, 196, 16, 84, 197, 80, 66, 0, 0, 0, 0, 7, 65, 88, 84, 13, 0, 49, 6, 65, 88,
+			58, 0, 23, 7, 65, 88, 84, 13, 0, 49, 0, 0, 0, 19, 4, 95, 49, 77, 52, 6, 109, 50, 71, 37, 55, 37, 57, 6, 39, 12,
+			50, 0, 0, 22, 1, 92, 55, 6, 36, 12, 84, 35, 15, 48, 111, 91, 6, 36, 12, 58, 50, 37, 117, 35, 0, 14, 65, 92, 72, 85,
+			6, 39, 57, 50, 37, 84, 4, 13, 0, 0, 0, 0, 0, 14, 4, 95, 49, 77, 49, 47, 6, 37, 12, 89, 111, 76, 0, 7, 65, 96,
+			37, 49, 89, 0, 0, 19, 4, 95, 49, 77, 50, 6, 109, 50, 65, 37, 55, 37, 57, 6, 39, 12, 50, 0, 0, 23, 4, 95, 49, 77,
+			51, 6, 109, 12, 50, 35, 65, 37, 55, 37, 57, 6, 35, 12, 51, 72, 35, 0, 0, 0, 12, 65, 100, 6, 37, 48, 89, 37, 55, 39,
+			50, 0, 0, 0, 0, 0, 7, 65, 104, 88, 13, 0, 49, 6, 65, 104, 88, 0, 23, 7, 65, 104, 88, 13, 0, 49, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 76, 195, 214, 20, 226, 74, 4, 66, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 4, 95,
+			50, 77, 52, 72, 85, 6, 35, 12, 71, 37, 55, 37, 57, 6, 39, 12, 50, 35, 0, 0, 0, 0, 0, 0, 0, 22, 4, 95, 50, 77,
+			50, 72, 85, 6, 35, 12, 65, 37, 55, 37, 57, 6, 39, 12, 50, 35, 0, 0, 22, 4, 95, 50, 77, 51, 72, 85, 6, 36, 65, 37,
+			55, 37, 57, 6, 35, 12, 51, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 8, 147, 0, 72, 0, 0, 0, 0, 0, 0, 6, 195, 16, 147, 64, 17, 0, 24, 4, 95, 51, 77, 52, 47, 51, 6, 37, 12,
+			57, 36, 71, 37, 55, 37, 57, 6, 39, 12, 50, 37, 0, 0, 0, 0, 0, 0, 0, 24, 4, 95, 51, 77, 50, 47, 51, 6, 37, 12,
+			57, 109, 65, 37, 55, 37, 57, 6, 39, 12, 50, 37, 0, 0, 23, 4, 95, 51, 77, 51, 47, 51, 6, 37, 12, 65, 37, 55, 37, 57,
+			6, 35, 12, 51, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 144, 43, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 8, 147, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,
+			95, 51, 88, 47, 51, 6, 37, 12, 72, 109, 89, 109, 47, 0, 0, 9, 3, 95, 48, 67, 89, 47, 111, 0, 0, 0, 0, 6, 195, 77,
+			64, 64, 72, 0, 0, 0, 0, 0, 11, 3, 95, 49, 67, 89, 47, 6, 39, 12, 0, 0, 0, 0, 6, 195, 77, 65, 64, 72, 0, 0,
+			0, 5, 194, 40, 80, 72, 19, 3, 95, 49, 57, 72, 6, 109, 84, 6, 36, 12, 47, 50, 35, 57, 89, 47, 0, 0, 17, 3, 95, 49,
+			56, 6, 39, 12, 89, 13, 65, 50, 35, 57, 89, 47, 0, 0, 14, 3, 95, 50, 67, 72, 84, 6, 36, 12, 89, 47, 111, 0, 0, 0,
+			0, 0, 0, 0, 14, 3, 95, 49, 49, 109, 50, 6, 35, 12, 57, 89, 47, 0, 0, 13, 3, 95, 49, 48, 72, 109, 89, 6, 36, 12,
+			47, 0, 0, 16, 3, 95, 49, 51, 47, 51, 6, 37, 12, 50, 35, 57, 89, 47, 0, 0, 16, 3, 95, 49, 50, 72, 85, 6, 35, 12,
+			50, 35, 57, 89, 47, 0, 0, 16, 3, 95, 49, 53, 48, 6, 36, 12, 47, 50, 35, 57, 89, 47, 0, 18, 4, 95, 99, 121, 114, 117,
+			37, 51, 6, 37, 12, 55, 37, 76, 50, 37, 0, 0, 18, 3, 95, 49, 52, 91, 47, 6, 37, 12, 51, 37, 50, 35, 57, 89, 47, 0,
+			0, 18, 3, 95, 49, 55, 89, 6, 36, 12, 72, 13, 65, 50, 35, 57, 89, 47, 0, 0, 17, 3, 95, 49, 54, 91, 6, 36, 12, 89,
+			47, 50, 35, 57, 89, 47, 0, 0, 0, 18, 3, 95, 55, 88, 89, 6, 36, 12, 72, 13, 65, 72, 109, 89, 109, 47, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 160, 43, 0, 0, 0, 6, 195, 8, 147, 9, 72, 0, 0, 0,
+			0, 15, 3, 95, 50, 88, 72, 85, 6, 35, 12, 57, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 18, 3, 95, 52, 88, 91, 47, 6, 37, 12, 51, 37, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 48,
+			80, 55, 109, 0, 0, 16, 3, 95, 53, 88, 48, 6, 36, 12, 47, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+			67, 8, 243, 64, 71, 122, 65, 0, 72, 17, 3, 95, 54, 88, 91, 6, 36, 12, 89, 47, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0,
+			10, 67, 76, 83, 64, 89, 13, 65, 0, 72, 0, 0, 0, 0, 6, 195, 44, 253, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3,
+			95, 56, 88, 6, 39, 12, 89, 13, 65, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 57, 88, 72, 109,
+			84, 6, 36, 12, 47, 72, 109, 89, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 8, 66, 188, 80, 76, 109, 0, 72, 0, 6, 195, 61, 49, 77, 18, 0, 0, 0, 0, 0, 13, 68, 76, 179, 218, 36, 89,
+			49, 122, 88, 37, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 193, 172, 43, 0, 0, 18, 4, 95, 48, 77, 52,
+			71, 37, 55, 37, 57, 6, 39, 12, 50, 39, 58, 0, 0, 0, 18, 4, 95, 48, 77, 50, 65, 37, 55, 37, 57, 6, 39, 12, 50, 39,
+			58, 0, 0, 17, 4, 95, 48, 77, 51, 65, 37, 55, 37, 57, 6, 35, 12, 51, 72, 0, 0, 0, 14, 4, 95, 48, 77, 49, 47, 6,
+			37, 12, 89, 111, 76, 0, 0, 0, 0, 0, 0, 0, 9, 67, 44, 84, 128, 49, 109, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 196, 16, 85, 133, 80, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 65, 184, 65, 6, 36,
+			107, 49, 37, 15, 76, 4, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 76, 211, 192, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 188, 76,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 195, 77, 96, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 192, 75, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 80, 148, 207, 188, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 37, 162, 15, 16, 17,
+			0, 0, 0, 0, 0, 0, 0, 0, 16, 2, 195, 159, 6, 39, 12, 89, 47, 34, 37, 15, 89, 6, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 5, 130, 195, 164, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 64, 253, 69, 88, 226, 67, 4, 66, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 76, 144, 72, 0, 0, 0, 9, 67, 212, 83, 0, 91, 13, 58,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 209, 135, 76, 13, 0, 0, 7, 2,
+			209, 134, 117, 13, 0, 0, 7, 2, 209, 133, 101, 13, 0, 0, 7, 2, 209, 132, 83, 13, 0, 0, 7, 2, 209, 131, 40, 12, 0, 0,
+			7, 2, 209, 130, 47, 13, 0, 0, 7, 2, 209, 129, 89, 13, 0, 0, 7, 2, 209, 128, 51, 13, 0, 0, 8, 2, 209, 143, 57, 35,
+			12, 0, 0, 8, 2, 209, 142, 57, 40, 12, 0, 0, 7, 2, 209, 141, 109, 12, 0, 0, 0, 0, 6, 195, 228, 83, 129, 15, 0, 8,
+			2, 209, 137, 91, 76, 13, 0, 0, 7, 2, 209, 136, 91, 13, 0, 0, 0, 16, 2, 95, 34, 50, 35, 51, 109, 49, 111, 84, 6, 35,
+			12, 57, 0, 0, 13, 2, 95, 33, 49, 55, 37, 80, 6, 35, 12, 57, 0, 0, 0, 25, 2, 95, 39, 109, 50, 6, 39, 12, 57, 50,
+			37, 15, 50, 35, 51, 109, 49, 111, 84, 6, 35, 12, 57, 0, 0, 26, 4, 95, 52, 77, 52, 91, 47, 6, 37, 12, 51, 37, 57, 36,
+			71, 37, 55, 37, 57, 6, 39, 12, 50, 37, 0, 8, 2, 209, 146, 72, 57, 13, 0, 0, 25, 4, 95, 52, 77, 51, 91, 47, 6, 37,
+			12, 51, 37, 65, 37, 55, 37, 57, 6, 35, 12, 51, 72, 36, 0, 8, 2, 209, 145, 57, 39, 12, 0, 0, 26, 4, 95, 52, 77, 50,
+			91, 47, 6, 37, 12, 51, 37, 57, 36, 65, 37, 55, 37, 57, 6, 39, 12, 50, 37, 0, 0, 0, 0, 15, 2, 95, 41, 88, 35, 49,
+			55, 109, 48, 6, 35, 12, 57, 0, 0, 14, 2, 95, 40, 111, 49, 55, 109, 48, 6, 35, 12, 57, 0, 8, 2, 209, 156, 49, 57, 13,
+			0, 0, 7, 2, 209, 155, 78, 13, 0, 0, 11, 2, 95, 46, 48, 6, 37, 12, 49, 35, 0, 0, 16, 2, 95, 45, 48, 111, 91, 6,
+			36, 12, 58, 50, 37, 117, 35, 0, 0, 13, 2, 95, 44, 84, 6, 36, 12, 57, 37, 117, 35, 0, 0, 10, 67, 80, 84, 128, 47, 109,
+			51, 0, 76, 10, 2, 95, 51, 47, 51, 6, 37, 12, 0, 0, 10, 2, 95, 50, 72, 85, 6, 35, 12, 0, 0, 10, 2, 95, 49, 6,
+			109, 12, 50, 35, 0, 0, 10, 2, 95, 48, 50, 6, 37, 12, 76, 0, 0, 12, 2, 95, 55, 89, 6, 36, 12, 72, 13, 65, 0, 0,
+			11, 2, 95, 54, 91, 6, 36, 12, 89, 47, 0, 0, 10, 2, 95, 53, 48, 6, 36, 12, 47, 0, 0, 12, 2, 95, 52, 91, 47, 6,
+			37, 12, 51, 37, 0, 0, 16, 2, 95, 59, 48, 6, 111, 72, 48, 6, 37, 12, 76, 57, 109, 0, 7, 2, 208, 183, 88, 13, 0, 0,
+			17, 2, 95, 58, 72, 85, 6, 39, 12, 48, 6, 37, 12, 76, 57, 109, 0, 7, 2, 208, 182, 90, 13, 0, 0, 12, 2, 95, 57, 72,
+			109, 84, 6, 36, 12, 47, 0, 7, 2, 208, 181, 36, 12, 0, 0, 11, 2, 95, 56, 6, 39, 12, 89, 13, 65, 0, 7, 2, 208, 180,
+			72, 13, 0, 0, 14, 2, 95, 63, 40, 48, 51, 35, 91, 6, 35, 12, 57, 0, 7, 2, 208, 179, 81, 13, 0, 0, 14, 2, 95, 62,
+			57, 109, 15, 84, 6, 36, 76, 57, 109, 0, 7, 2, 208, 178, 84, 13, 0, 0, 7, 2, 208, 177, 71, 13, 0, 0, 16, 2, 95, 60,
+			57, 109, 15, 65, 6, 35, 12, 50, 57, 91, 36, 0, 7, 2, 208, 176, 35, 12, 0, 0, 7, 2, 208, 191, 48, 13, 0, 0, 7, 2,
+			208, 190, 39, 12, 0, 0, 7, 2, 208, 189, 50, 13, 0, 0, 7, 2, 208, 188, 65, 13, 0, 0, 7, 2, 208, 187, 55, 13, 0, 0,
+			7, 2, 208, 186, 49, 13, 0, 0, 17, 2, 208, 185, 4, 37, 49, 14, 16, 6, 35, 47, 49, 111, 57, 37, 0, 0, 7, 2, 208, 184,
+			37, 12, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 212, 91, 13, 0, 0, 15, 4, 95, 226, 128, 166, 109, 55, 6, 37, 12, 48, 89,
+			35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 2, 95, 91, 111, 81, 38, 6, 35, 12, 47, 37, 15, 111, 49, 55, 109, 48, 6,
+			35, 12, 57, 0, 0, 0, 0, 5, 194, 76, 240, 72, 5, 194, 104, 16, 76, 0, 16, 2, 95, 95, 48, 111, 47, 76, 13, 51, 47, 6,
+			35, 12, 57, 0, 0, 0, 24, 2, 95, 93, 111, 81, 38, 6, 35, 12, 47, 37, 15, 88, 35, 49, 55, 109, 48, 6, 35, 12, 57, 0,
+			0, 0, 0, 0, 0, 15, 2, 95, 96, 111, 89, 47, 51, 6, 37, 12, 84, 109, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 2, 95, 123, 88, 35, 84, 6, 37, 12, 47, 37, 15, 111, 49, 55, 109, 48, 6,
+			35, 12, 57, 0, 0, 0, 0, 0, 0, 0, 24, 2, 95, 125, 88, 35, 84, 6, 37, 12, 47, 37, 15, 88, 35, 49, 55, 109, 48, 6,
+			35, 12, 57, 0, 0, 22, 2, 95, 124, 50, 35, 58, 48, 6, 37, 12, 76, 50, 35, 15, 76, 6, 13, 51, 47, 35, 0, 0, 0, 0,
+			10, 5, 95, 48, 97, 110, 100, 37, 50, 0, 0, 0, 9, 198, 21, 53, 15, 56, 146, 129, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 228, 90, 13, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 197, 190, 0, 98, 0, 100, 0, 103, 0, 106, 0, 108, 0, 109, 0, 110, 0, 118, 0, 122,
+			0, 7, 6, 18, 68, 97, 0, 101, 0, 7, 6, 18, 69, 108, 0, 118, 0, 7, 6, 196, 135, 0, 3, 78, 0, 7, 6, 196, 141, 0,
+			3, 76, 0, 7, 6, 197, 161, 0, 3, 91, 0, 7, 6, 197, 190, 0, 3, 90, 0, 7, 6, 97, 0, 2, 29, 28, 19, 12, 3, 6,
+			35, 0, 4, 2, 106, 32, 3, 6, 35, 12, 0, 2, 108, 32, 0, 2, 196, 141, 32, 0, 3, 35, 12, 0, 7, 6, 98, 0, 3, 71,
+			0, 7, 6, 99, 0, 3, 117, 0, 7, 6, 100, 0, 3, 72, 0, 197, 190, 3, 75, 0, 122, 3, 118, 0, 7, 6, 101, 0, 2, 29,
+			28, 19, 12, 3, 6, 109, 0, 2, 29, 28, 20, 3, 13, 0, 3, 36, 12, 0, 101, 3, 37, 12, 0, 8, 2, 114, 3, 109, 12, 0,
+			4, 101, 8, 110, 3, 109, 12, 109, 0, 101, 8, 114, 0, 101, 8, 114, 112, 0, 4, 1, 17, 67, 21, 2, 114, 32, 3, 110, 0, 1,
+			21, 2, 110, 32, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 7, 6, 104, 0, 3, 101, 0, 4, 1, 105, 3,
+			107, 0, 2, 17, 69, 0, 7, 6, 105, 0, 2, 29, 28, 19, 12, 3, 6, 37, 0, 2, 108, 32, 3, 6, 37, 12, 0, 3, 37, 12,
+			0, 2, 17, 65, 3, 57, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 1, 25, 2, 25, 3,
+			13, 55, 0, 1, 25, 2, 32, 3, 40, 0, 4, 3, 55, 0, 1, 25, 2, 114, 25, 0, 106, 2, 17, 65, 3, 55, 57, 0, 4, 1,
+			21, 2, 32, 3, 58, 0, 2, 25, 0, 4, 106, 3, 61, 0, 106, 2, 105, 0, 7, 6, 109, 0, 4, 3, 65, 0, 1, 25, 2, 114,
+			0, 1, 25, 2, 25, 3, 65, 14, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 7, 6, 110, 0, 4, 3, 50, 0, 1, 25, 2, 114,
+			0, 1, 25, 2, 25, 3, 50, 14, 0, 106, 2, 17, 65, 3, 50, 57, 0, 4, 106, 3, 67, 0, 106, 2, 105, 0, 4, 2, 103, 3,
+			68, 0, 2, 107, 0, 7, 6, 111, 0, 4, 2, 106, 32, 3, 6, 39, 12, 0, 2, 108, 32, 0, 2, 196, 141, 32, 0, 2, 29, 28,
+			19, 12, 3, 6, 111, 0, 4, 3, 39, 12, 0, 2, 18, 69, 12, 0, 2, 111, 196, 141, 0, 4, 2, 17, 67, 17, 67, 111, 3, 111,
+			12, 0, 2, 17, 67, 111, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 49, 84, 0, 7, 6, 114, 0,
+			1, 25, 2, 25, 3, 13, 51, 0, 4, 3, 51, 0, 114, 0, 7, 6, 115, 0, 3, 89, 0, 99, 104, 3, 91, 0, 7, 6, 116, 0,
+			1, 115, 114, 25, 2, 32, 3, 23, 47, 0, 3, 47, 0, 7, 6, 117, 0, 2, 29, 28, 19, 12, 3, 6, 40, 0, 1, 106, 2, 196,
+			141, 101, 110, 111, 3, 6, 40, 12, 0, 4, 3, 40, 12, 0, 101, 1, 17, 67, 2, 17, 67, 0, 4, 1, 17, 65, 2, 25, 3, 58,
+			0, 2, 17, 65, 0, 7, 6, 118, 0, 1, 25, 2, 25, 3, 2, 40, 0, 1, 17, 65, 2, 25, 3, 58, 0, 4, 3, 84, 0, 2,
+			45, 17, 65, 12, 0, 2, 114, 12, 0, 1, 18, 66, 2, 17, 65, 3, 85, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3,
+			49, 89, 0, 7, 6, 121, 0, 1, 25, 2, 25, 3, 37, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 195, 161, 3,
+			6, 35, 12, 0, 195, 169, 3, 6, 36, 12, 0, 195, 173, 3, 6, 37, 12, 0, 195, 179, 3, 6, 39, 12, 0, 195, 186, 3, 6, 40,
+			12, 0, 195, 168, 3, 6, 109, 0, 195, 170, 3, 6, 109, 12, 0, 195, 178, 3, 6, 111, 0, 195, 180, 3, 6, 111, 12, 0, 195, 182,
+			3, 13, 12, 0, 195, 159, 3, 21, 100, 101, 0, 196, 145, 3, 75, 0, 195, 164, 3, 109, 12, 0, 195, 188, 3, 112, 12, 0, 197, 153,
+			3, 123, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts59 = FileInMemory_createWithData (3965, reinterpret_cast<const char *> (&espeakdata_dicts59_data), 
+			U"espeak-1.48.04-source/espeak-data/sl_dict", 
 			U"sl");
-		Collection_addItem (me.peek(), espeakdata_dicts58.transfer());
+		my addItem_move (espeakdata_dicts59.move());
 
-		static unsigned char espeakdata_dicts59_data[3215] = {
-			0, 4, 0, 0, 114, 9, 0, 0, 0, 0, 0, 0, 0, 9, 67, 53, 80, 74, 65, 40, 118, 0, 0, 0, 0, 0, 6, 65, 8, 71,
-			13, 0, 0, 0, 0, 0, 6, 65, 12, 124, 13, 0, 0, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 0, 0, 6, 65, 20, 36,
-			0, 14, 5, 193, 20, 76, 28, 0, 0, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 0, 0, 6, 65, 28, 81, 13, 0, 0, 0, 0,
-			0, 6, 65, 32, 107, 13, 0, 0, 15, 1, 33, 48, 37, 49, 76, 40, 72, 6, 37, 124, 113, 0, 27, 0, 0, 7, 1, 35, 107, 35,
-			91, 0, 0, 17, 65, 36, 37, 10, 124, 6, 37, 64, 37, 0, 81, 99, 105, 108, 105, 32, 4, 193, 36, 76, 0, 13, 1, 37, 48, 13,
-			76, 37, 50, 72, 57, 35, 0, 27, 0, 7, 1, 38, 10, 86, 113, 0, 0, 0, 6, 65, 40, 57, 13, 0, 0, 0, 8, 1, 42, 116,
-			123, 37, 0, 27, 0, 9, 1, 43, 48, 123, 40, 89, 0, 27, 0, 6, 65, 44, 49, 13, 0, 0, 0, 8, 1, 46, 48, 37, 49, 0,
-			27, 0, 12, 1, 47, 48, 57, 6, 113, 89, 47, 37, 65, 0, 0, 6, 65, 48, 55, 13, 0, 0, 0, 0, 0, 6, 65, 52, 65, 13,
-			0, 0, 0, 0, 13, 68, 53, 80, 74, 36, 65, 6, 40, 118, 38, 37, 0, 0, 10, 5, 95, 48, 1, 14, 4, 2, 113, 0, 6, 65,
-			56, 50, 13, 0, 0, 0, 0, 0, 0, 13, 1, 61, 71, 35, 51, 35, 71, 6, 35, 51, 47, 0, 0, 0, 0, 9, 1, 64, 65, 35,
-			50, 49, 37, 0, 6, 65, 64, 48, 13, 0, 0, 0, 0, 0, 6, 65, 68, 80, 13, 0, 0, 0, 0, 0, 6, 65, 72, 51, 13, 0,
-			0, 0, 7, 195, 16, 129, 64, 76, 8, 0, 0, 6, 65, 76, 89, 13, 0, 0, 0, 0, 0, 6, 65, 80, 47, 13, 0, 0, 0, 0,
-			0, 4, 193, 84, 76, 0, 0, 0, 0, 6, 65, 88, 84, 13, 0, 0, 0, 0, 8, 133, 10, 1, 14, 195, 171, 76, 0, 6, 65, 92,
-			58, 13, 0, 0, 9, 133, 14, 195, 171, 19, 5, 76, 8, 0, 16, 1, 94, 89, 6, 37, 51, 49, 40, 65, 83, 123, 113, 49, 89, 0,
-			0, 0, 6, 65, 96, 125, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 104, 88, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 126, 47, 37, 55, 72, 111, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 4, 16, 20, 10, 48,
-			51, 6, 36, 89, 57, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			66, 16, 128, 86, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 61, 49, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 226, 130,
-			172, 113, 40, 51, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 44, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 7, 66, 28, 160, 77, 13, 0, 0, 16, 3, 95, 51, 88, 47, 51, 6, 37, 86, 57, 36, 47, 2, 108, 0,
-			0, 11, 3, 95, 48, 67, 80, 4, 37, 50, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 16, 195,
-			171, 18, 76, 20, 3, 95, 49, 57, 50, 6, 109, 50, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 19, 3, 95, 49, 56, 47,
-			6, 113, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 49, 49, 67, 6, 110, 65, 71,
-			108, 86, 57, 36, 47, 108, 0, 0, 12, 3, 95, 49, 48, 86, 57, 6, 113, 47, 108, 0, 0, 18, 3, 95, 49, 51, 47, 51, 6, 113,
-			65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 17, 3, 95, 49, 50, 72, 6, 116, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 19, 3,
-			95, 49, 53, 48, 6, 113, 89, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 20, 3, 95, 49, 52, 49, 6, 35, 47, 13, 34, 65,
-			71, 108, 86, 57, 36, 47, 108, 0, 0, 20, 3, 95, 49, 55, 91, 47, 6, 35, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0,
-			20, 3, 95, 49, 54, 77, 6, 35, 91, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 0, 18, 3, 95, 55, 88, 91, 47, 6,
-			35, 47, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 3, 95, 50, 88, 67, 6, 110, 88, 113, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 112, 64, 76,
-			0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 91, 49, 51, 6, 117, 67, 35, 0, 0, 0, 0, 12, 3, 95, 52, 88, 72, 6, 116, 88,
-			113, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 53, 88, 48, 6, 113, 89, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0,
-			0, 10, 135, 11, 195, 171, 19, 8, 20, 21, 66, 0, 0, 0, 0, 0, 18, 3, 95, 54, 88, 77, 6, 35, 91, 47, 108, 86, 57, 36,
-			47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56, 88, 47, 6, 113, 47, 108,
-			86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 52, 80, 76, 0, 18, 3, 95, 57, 88, 50, 6, 109, 50, 47,
-			108, 86, 57, 36, 47, 2, 108, 0, 0, 6, 131, 13, 195, 171, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4,
+		static unsigned char espeakdata_dicts60_data[3200] = {
+			0, 4, 0, 0, 99, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 13, 0, 0, 0, 0, 0, 6, 65, 12,
+			124, 13, 0, 0, 0, 0, 0, 6, 65, 16, 72, 13, 0, 0, 0, 0, 15, 4, 95, 100, 112, 116, 10, 48, 51, 6, 36, 89, 57, 35,
+			0, 0, 6, 65, 20, 36, 0, 49, 5, 193, 20, 76, 28, 0, 0, 0, 0, 6, 65, 24, 83, 13, 0, 0, 0, 0, 0, 6, 65, 28,
+			81, 13, 0, 0, 0, 0, 0, 6, 65, 32, 107, 13, 0, 0, 15, 1, 33, 48, 37, 49, 76, 40, 72, 6, 37, 124, 113, 0, 27, 0,
+			0, 7, 1, 35, 107, 35, 91, 0, 0, 17, 65, 36, 37, 10, 124, 6, 37, 64, 37, 0, 81, 99, 105, 108, 105, 32, 4, 193, 36, 76,
+			0, 5, 194, 54, 64, 76, 13, 1, 37, 48, 13, 76, 37, 50, 72, 57, 35, 0, 27, 0, 7, 1, 38, 10, 86, 113, 0, 0, 0, 6,
+			65, 40, 57, 13, 0, 0, 0, 8, 1, 42, 116, 123, 37, 0, 27, 0, 9, 1, 43, 48, 123, 40, 89, 0, 27, 0, 6, 65, 44, 49,
+			13, 0, 0, 0, 8, 1, 46, 48, 37, 49, 0, 27, 0, 12, 1, 47, 48, 57, 6, 113, 89, 47, 37, 65, 0, 0, 6, 65, 48, 55,
+			13, 0, 0, 5, 194, 70, 64, 76, 0, 0, 0, 6, 65, 52, 65, 13, 0, 0, 0, 0, 0, 6, 65, 56, 50, 13, 0, 0, 0, 0,
+			0, 0, 13, 1, 61, 71, 35, 51, 35, 71, 6, 35, 51, 47, 0, 0, 0, 0, 9, 1, 64, 65, 35, 50, 49, 37, 0, 6, 65, 64,
+			48, 13, 0, 0, 0, 0, 0, 6, 65, 68, 80, 13, 0, 0, 0, 0, 0, 6, 65, 72, 51, 13, 0, 0, 0, 7, 195, 16, 129, 64,
+			76, 8, 0, 0, 6, 65, 76, 89, 13, 0, 0, 0, 0, 0, 6, 65, 80, 47, 13, 0, 0, 0, 0, 0, 4, 193, 84, 76, 0, 0,
+			0, 0, 6, 65, 88, 84, 13, 0, 0, 0, 0, 0, 6, 65, 92, 58, 13, 0, 0, 0, 16, 1, 94, 89, 6, 37, 51, 49, 40, 65,
+			83, 123, 113, 49, 89, 0, 0, 0, 6, 65, 96, 125, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 104, 88, 13, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 53, 80, 74, 65, 40, 118, 0, 0, 9,
+			1, 126, 47, 37, 55, 72, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 128, 76, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 9, 67, 81, 80, 74, 47, 40, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 16, 128, 86, 13, 0, 0, 0, 0, 9, 197, 52, 148, 164, 64,
+			240, 76, 8, 0, 0, 0, 0, 0, 0, 7, 195, 61, 49, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 58, 64, 76, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 58, 68, 197, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 10, 3, 226, 130, 172, 113, 40, 51, 117, 0, 0, 0, 0, 0, 7, 195, 12, 147, 1, 76, 8, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194,
+			44, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 28, 160, 77, 13, 0, 0, 16, 3, 95,
+			51, 88, 47, 51, 6, 37, 86, 57, 36, 47, 2, 108, 0, 0, 11, 3, 95, 48, 67, 80, 4, 37, 50, 72, 0, 0, 0, 0, 7, 195,
+			12, 147, 9, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 49, 57, 50, 6, 109, 50, 47, 13, 65, 71, 108,
+			86, 57, 36, 47, 108, 0, 0, 19, 3, 95, 49, 56, 47, 6, 113, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 0, 0, 6,
+			195, 66, 68, 128, 76, 0, 0, 0, 0, 17, 3, 95, 49, 49, 67, 6, 110, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 12, 3, 95,
+			49, 48, 86, 57, 6, 113, 47, 108, 0, 0, 18, 3, 95, 49, 51, 47, 51, 6, 113, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 17,
+			3, 95, 49, 50, 72, 6, 116, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 19, 3, 95, 49, 53, 48, 6, 113, 89, 13, 65, 71, 108,
+			86, 57, 36, 47, 108, 0, 0, 20, 3, 95, 49, 52, 49, 6, 35, 47, 13, 34, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 20, 3,
+			95, 49, 55, 91, 47, 6, 35, 47, 13, 65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 20, 3, 95, 49, 54, 77, 6, 35, 91, 47, 13,
+			65, 71, 108, 86, 57, 36, 47, 108, 0, 0, 0, 18, 3, 95, 55, 88, 91, 47, 6, 35, 47, 108, 86, 57, 36, 47, 2, 108, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 40, 19, 164, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+			3, 95, 50, 88, 67, 6, 110, 88, 113, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 112, 64, 76, 0, 0, 0, 0, 0,
+			13, 3, 95, 63, 63, 91, 49, 51, 6, 117, 67, 35, 0, 0, 0, 0, 12, 3, 95, 52, 88, 72, 6, 116, 88, 113, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 17, 3, 95, 53, 88, 48, 6, 113, 89, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 18, 3, 95, 54, 88, 77, 6, 35, 91, 47, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 17, 3, 95, 56, 88, 47, 6, 113, 47, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+			194, 52, 80, 76, 0, 18, 3, 95, 57, 88, 50, 6, 109, 50, 47, 108, 86, 57, 36, 47, 2, 108, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68, 53, 80, 74, 36, 65, 6, 40,
+			118, 38, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 76, 146, 213, 72, 76, 8, 0, 0, 0, 0, 0, 0, 0, 14, 4,
 			95, 48, 77, 50, 65, 37, 64, 37, 6, 117, 50, 0, 0, 15, 4, 95, 48, 77, 51, 65, 37, 64, 37, 6, 35, 34, 72, 0, 0, 0,
-			12, 4, 95, 48, 77, 49, 65, 4, 37, 57, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			131, 14, 195, 171, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 48, 192, 123, 13, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 135, 13, 9, 18, 195, 171, 16, 15, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 56, 160, 67, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 73, 32,
-			51, 52, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 66, 76, 16, 89, 35, 65, 65, 0, 81, 109, 195, 171, 32, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			5, 194, 76, 80, 76, 0, 0, 8, 196, 76, 146, 213, 72, 76, 8, 0, 0, 0, 0, 0, 7, 2, 195, 167, 76, 13, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 76, 128, 91, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 131, 17, 195, 171, 76, 6, 194, 76, 144, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 1, 35, 0, 0, 0,
-			0, 0, 6, 2, 95, 5, 36, 0, 0, 0, 0, 6, 2, 95, 9, 37, 0, 0, 7, 66, 80, 128, 87, 13, 0, 0, 6, 2, 95, 15,
-			117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 81, 80, 74, 47, 40, 118, 0, 6, 2, 95, 21, 40, 0, 0, 0, 0,
-			0, 6, 2, 95, 25, 116, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 35, 48, 117, 89, 47, 51, 117, 83, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 14, 4, 95, 3, 1, 16, 10, 113, 65, 6, 35, 86, 113, 0, 0, 27, 2, 95, 41, 49, 123, 6, 35, 48, 35,
-			113, 15, 84, 6, 117, 81, 13, 55, 113, 15, 72, 57, 6, 35, 87, 47, 0, 0, 19, 2, 95, 40, 49, 123, 6, 35, 48, 35, 113, 15,
-			84, 6, 117, 81, 13, 55, 0, 0, 0, 0, 11, 2, 95, 45, 65, 6, 37, 50, 40, 89, 0, 0, 11, 2, 95, 44, 48, 51, 36, 89,
-			57, 111, 0, 0, 9, 2, 95, 51, 47, 51, 6, 113, 0, 0, 8, 2, 95, 50, 72, 6, 116, 0, 0, 8, 2, 95, 49, 67, 6, 110,
-			0, 0, 10, 2, 95, 48, 88, 6, 113, 69, 117, 0, 0, 11, 2, 95, 55, 91, 47, 6, 35, 47, 108, 0, 0, 11, 2, 95, 54, 77,
-			6, 35, 91, 47, 108, 0, 0, 10, 2, 95, 53, 48, 6, 113, 89, 108, 0, 0, 11, 2, 95, 52, 49, 6, 35, 47, 13, 51, 0, 0,
-			14, 2, 95, 59, 48, 37, 49, 48, 51, 36, 89, 57, 111, 0, 0, 12, 2, 95, 58, 72, 116, 15, 48, 37, 49, 111, 0, 0, 11, 2,
-			95, 57, 50, 6, 109, 50, 47, 108, 0, 0, 10, 2, 95, 56, 47, 6, 113, 47, 108, 0, 0, 13, 2, 95, 63, 48, 37, 49, 48, 116,
-			47, 57, 113, 0, 0, 14, 2, 95, 62, 65, 6, 13, 113, 65, 6, 35, 86, 113, 0, 0, 0, 16, 2, 95, 60, 65, 6, 13, 113, 15,
-			84, 4, 117, 81, 113, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 18, 2, 95, 91, 49, 123, 6, 35, 48, 35, 113, 15, 65, 6, 35, 86, 113, 0, 0, 0, 0, 0, 14, 2, 95, 95, 50, 4,
-			109, 50, 15, 84, 6, 37, 88, 0, 0, 0, 26, 2, 95, 93, 49, 123, 6, 35, 48, 35, 113, 15, 65, 6, 35, 86, 113, 113, 15, 72,
-			57, 6, 35, 87, 47, 0, 0, 17, 2, 95, 92, 84, 37, 88, 113, 65, 118, 47, 87, 6, 121, 89, 113, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 95, 123, 49, 123, 6, 35, 48, 35, 113,
-			15, 65, 6, 113, 89, 65, 113, 0, 0, 6, 131, 19, 195, 171, 76, 0, 0, 0, 0, 0, 27, 2, 95, 125, 49, 123, 6, 35, 48, 35,
-			113, 15, 65, 6, 113, 89, 65, 113, 113, 15, 72, 57, 6, 35, 87, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 66, 96, 128, 75, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 35, 51, 50, 89, 48, 119, 89, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 12, 147, 1, 76, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 195, 12, 147, 9, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 20, 195, 171, 76, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 104, 128, 90, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 67, 103, 106, 0, 120, 104, 0, 98, 0, 100,
-			0, 103, 0, 7, 6, 18, 68, 100, 104, 0, 103, 106, 0, 108, 108, 0, 110, 106, 0, 114, 114, 0, 115, 104, 0, 116, 104, 0, 120, 104,
-			0, 122, 104, 0, 7, 6, 195, 167, 0, 3, 76, 0, 7, 6, 195, 171, 0, 1, 21, 2, 29, 3, 2, 109, 0, 116, 97, 1, 21, 2,
-			32, 3, 8, 13, 47, 35, 0, 118, 105, 1, 21, 2, 32, 3, 8, 13, 84, 37, 0, 118, 101, 1, 21, 2, 32, 3, 8, 13, 84, 113,
-			0, 115, 105, 1, 21, 2, 32, 3, 8, 13, 89, 37, 0, 115, 101, 1, 21, 2, 32, 3, 8, 13, 89, 113, 0, 115, 105, 115, 104, 116,
-			1, 21, 2, 32, 3, 8, 89, 115, 91, 47, 0, 4, 1, 17, 67, 17, 65, 2, 32, 3, 108, 0, 1, 17, 67, 106, 17, 65, 2, 32,
-			0, 1, 17, 67, 114, 17, 65, 2, 32, 0, 1, 18, 68, 17, 65, 2, 32, 0, 1, 116, 104, 17, 65, 2, 32, 0, 1, 116, 115, 17,
-			65, 2, 32, 0, 3, 109, 0, 1, 94, 110, 3, 110, 0, 7, 6, 97, 0, 116, 1, 21, 2, 32, 3, 8, 35, 47, 0, 110, 105, 1,
-			21, 2, 113, 32, 3, 8, 35, 50, 37, 0, 114, 195, 171, 118, 101, 1, 21, 2, 32, 3, 8, 35, 51, 13, 84, 113, 0, 118, 101, 1,
-			21, 2, 32, 3, 8, 35, 84, 113, 0, 3, 35, 0, 4, 2, 32, 3, 112, 0, 2, 114, 25, 0, 106, 3, 118, 0, 7, 6, 98, 0,
-			3, 71, 0, 7, 6, 99, 0, 3, 124, 0, 7, 6, 100, 0, 3, 72, 0, 104, 3, 86, 0, 7, 6, 101, 0, 116, 1, 21, 2, 32,
-			3, 8, 113, 47, 0, 110, 1, 21, 2, 32, 3, 8, 113, 50, 0, 118, 105, 1, 21, 2, 113, 32, 3, 8, 113, 84, 37, 0, 118, 101,
-			1, 21, 2, 32, 3, 8, 113, 84, 113, 0, 115, 1, 21, 2, 32, 3, 8, 113, 89, 0, 4, 1, 94, 110, 3, 36, 0, 1, 104, 115,
-			0, 1, 106, 0, 1, 108, 0, 1, 113, 0, 2, 106, 0, 2, 115, 104, 0, 2, 115, 106, 0, 4, 3, 113, 0, 1, 108, 108, 0, 106,
-			2, 25, 3, 119, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 106, 3, 77, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0,
-			2, 25, 3, 107, 107, 0, 7, 6, 105, 0, 4, 1, 99, 105, 21, 2, 32, 3, 6, 37, 0, 1, 114, 171, 195, 21, 2, 32, 0, 2,
-			117, 110, 32, 0, 1, 21, 2, 113, 32, 3, 8, 37, 0, 109, 1, 21, 2, 32, 3, 8, 37, 65, 0, 1, 21, 2, 116, 32, 3, 8,
-			115, 0, 110, 1, 21, 2, 32, 3, 8, 115, 50, 0, 3, 37, 0, 106, 2, 25, 3, 37, 12, 0, 101, 3, 57, 36, 0, 7, 6, 106,
-			0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0, 3, 64, 0, 108, 3, 123, 0, 7, 6, 109, 0, 3, 65, 0, 7,
-			6, 110, 0, 3, 50, 0, 106, 3, 67, 0, 7, 6, 111, 0, 118, 105, 2, 113, 32, 3, 8, 117, 84, 37, 0, 3, 117, 0, 4, 105,
-			2, 108, 32, 3, 120, 0, 106, 2, 25, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 80, 0, 7, 6, 114, 0, 114, 8,
-			3, 13, 52, 0, 114, 101, 8, 2, 103, 117, 108, 108, 97, 3, 13, 52, 6, 36, 0, 4, 3, 51, 0, 2, 25, 0, 114, 3, 51, 52,
-			0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 7, 6, 116, 0, 3, 47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 4, 1, 116,
-			2, 97, 110, 32, 3, 6, 40, 0, 2, 97, 114, 32, 0, 2, 97, 114, 97, 32, 0, 2, 101, 115, 118, 101, 32, 0, 4, 1, 21, 2,
-			110, 32, 3, 8, 40, 0, 1, 21, 2, 114, 32, 0, 3, 40, 0, 2, 97, 106, 25, 3, 58, 0, 97, 3, 58, 112, 0, 7, 6, 118,
-			0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 2, 32, 3, 49, 89, 0, 104, 3, 75, 0, 3, 125, 0, 7, 6,
-			121, 0, 3, 116, 0, 101, 3, 121, 0, 7, 6, 122, 0, 3, 88, 0, 104, 3, 90, 0, 7, 6, 0, 36, 3, 72, 117, 123, 35, 34,
-			37, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts59 = FileInMemory_createWithData (3214, reinterpret_cast<const char *> (&espeakdata_dicts59_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/sq_dict", 
+			12, 4, 95, 48, 77, 49, 65, 4, 37, 57, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 78, 64, 76,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 48, 192, 123, 13, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 99, 97, 112, 10,
+			113, 65, 6, 35, 86, 113, 0, 0, 0, 0, 0, 0, 0, 7, 66, 56, 160, 67, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66,
+			73, 32, 51, 52, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 66, 76, 16, 89, 35, 65, 65, 0, 81, 109, 195, 171, 32, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 76, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 76, 128, 91,
+			13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 76, 144, 76, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 80, 128, 87, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, 95, 34, 35, 48, 117, 89, 47, 51, 117, 83, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 27, 2, 95, 41, 49, 123, 6, 35, 48, 35, 113, 15, 84, 6, 117, 81, 13, 55, 113, 15, 72, 57, 6, 35, 87, 47, 0, 0,
+			19, 2, 95, 40, 49, 123, 6, 35, 48, 35, 113, 15, 84, 6, 117, 81, 13, 55, 0, 0, 0, 0, 11, 2, 95, 45, 65, 6, 37, 50,
+			40, 89, 0, 0, 11, 2, 95, 44, 48, 51, 36, 89, 57, 111, 0, 0, 9, 2, 95, 51, 47, 51, 6, 113, 0, 0, 8, 2, 95, 50,
+			72, 6, 116, 0, 0, 8, 2, 95, 49, 67, 6, 110, 0, 0, 10, 2, 95, 48, 88, 6, 113, 69, 117, 0, 0, 11, 2, 95, 55, 91,
+			47, 6, 35, 47, 108, 0, 0, 5, 194, 82, 64, 76, 11, 2, 95, 54, 77, 6, 35, 91, 47, 108, 0, 0, 10, 2, 95, 53, 48, 6,
+			113, 89, 108, 0, 0, 11, 2, 95, 52, 49, 6, 35, 47, 13, 51, 0, 0, 14, 2, 95, 59, 48, 37, 49, 48, 51, 36, 89, 57, 111,
+			0, 0, 12, 2, 95, 58, 72, 116, 15, 48, 37, 49, 111, 0, 0, 11, 2, 95, 57, 50, 6, 109, 50, 47, 108, 0, 0, 10, 2, 95,
+			56, 47, 6, 113, 47, 108, 0, 0, 13, 2, 95, 63, 48, 37, 49, 48, 116, 47, 57, 113, 0, 0, 14, 2, 95, 62, 65, 6, 13, 113,
+			65, 6, 35, 86, 113, 0, 0, 0, 16, 2, 95, 60, 65, 6, 13, 113, 15, 84, 4, 117, 81, 113, 55, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 95, 91, 49, 123, 6, 35, 48, 35, 113,
+			15, 65, 6, 35, 86, 113, 0, 0, 0, 0, 0, 14, 2, 95, 95, 50, 4, 109, 50, 15, 84, 6, 37, 88, 0, 0, 0, 26, 2, 95,
+			93, 49, 123, 6, 35, 48, 35, 113, 15, 65, 6, 35, 86, 113, 113, 15, 72, 57, 6, 35, 87, 47, 0, 0, 17, 2, 95, 92, 84, 37,
+			88, 113, 65, 118, 47, 87, 6, 121, 89, 113, 0, 0, 0, 0, 6, 2, 95, 97, 35, 0, 0, 8, 197, 46, 68, 200, 81, 80, 66, 0,
+			0, 0, 6, 2, 95, 101, 36, 0, 0, 0, 0, 0, 6, 2, 95, 105, 37, 0, 0, 0, 6, 2, 95, 111, 117, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 2, 95, 117, 40, 0, 0, 0, 19, 2, 95, 123, 49, 123, 6, 35, 48, 35, 113, 15, 65, 6, 113, 89,
+			65, 113, 0, 0, 0, 6, 2, 95, 121, 116, 0, 0, 0, 0, 0, 27, 2, 95, 125, 49, 123, 6, 35, 48, 35, 113, 15, 65, 6, 113,
+			89, 65, 113, 113, 15, 72, 57, 6, 35, 87, 47, 0, 0, 0, 0, 0, 10, 5, 95, 48, 97, 110, 100, 2, 113, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 66, 96, 128, 75, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 35, 51, 50,
+			89, 48, 119, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 104,
+			128, 90, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 6, 18, 67, 103, 106, 0, 120, 104, 0, 98, 0, 100, 0, 103, 0, 7, 6, 18, 68, 100, 104, 0, 103, 106, 0, 108, 108,
+			0, 110, 106, 0, 114, 114, 0, 115, 104, 0, 116, 104, 0, 120, 104, 0, 122, 104, 0, 7, 6, 195, 167, 0, 3, 76, 0, 7, 6, 195,
+			171, 0, 1, 21, 2, 29, 3, 2, 109, 0, 116, 97, 1, 21, 2, 32, 3, 8, 13, 47, 35, 0, 118, 105, 1, 21, 2, 32, 3, 8,
+			13, 84, 37, 0, 118, 101, 1, 21, 2, 32, 3, 8, 13, 84, 113, 0, 115, 105, 1, 21, 2, 32, 3, 8, 13, 89, 37, 0, 115, 101,
+			1, 21, 2, 32, 3, 8, 13, 89, 113, 0, 115, 105, 115, 104, 116, 1, 21, 2, 32, 3, 8, 89, 115, 91, 47, 0, 4, 1, 17, 67,
+			17, 65, 2, 32, 3, 108, 0, 1, 17, 67, 106, 17, 65, 2, 32, 0, 1, 17, 67, 114, 17, 65, 2, 32, 0, 1, 18, 68, 17, 65,
+			2, 32, 0, 1, 116, 104, 17, 65, 2, 32, 0, 1, 116, 115, 17, 65, 2, 32, 0, 3, 109, 0, 1, 94, 110, 3, 110, 0, 7, 6,
+			97, 0, 116, 1, 21, 2, 32, 3, 8, 35, 47, 0, 110, 105, 1, 21, 2, 113, 32, 3, 8, 35, 50, 37, 0, 114, 195, 171, 118, 101,
+			1, 21, 2, 32, 3, 8, 35, 51, 13, 84, 113, 0, 118, 101, 1, 21, 2, 32, 3, 8, 35, 84, 113, 0, 3, 35, 0, 4, 2, 32,
+			3, 112, 0, 2, 114, 25, 0, 106, 3, 118, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 124, 0, 7, 6, 100, 0, 3,
+			72, 0, 104, 3, 86, 0, 7, 6, 101, 0, 116, 1, 21, 2, 32, 3, 8, 113, 47, 0, 110, 1, 21, 2, 32, 3, 8, 113, 50, 0,
+			118, 105, 1, 21, 2, 113, 32, 3, 8, 113, 84, 37, 0, 118, 101, 1, 21, 2, 32, 3, 8, 113, 84, 113, 0, 115, 1, 21, 2, 32,
+			3, 8, 113, 89, 0, 4, 1, 94, 110, 3, 36, 0, 1, 104, 115, 0, 1, 106, 0, 1, 108, 0, 1, 113, 0, 2, 106, 0, 2, 115,
+			104, 0, 2, 115, 106, 0, 4, 3, 113, 0, 1, 108, 108, 0, 106, 2, 25, 3, 119, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103,
+			0, 106, 3, 77, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 2, 25, 3, 107, 107, 0, 7, 6, 105, 0, 4, 1, 99, 105, 21,
+			2, 32, 3, 6, 37, 0, 1, 114, 171, 195, 21, 2, 32, 0, 2, 117, 110, 32, 0, 1, 21, 2, 113, 32, 3, 8, 37, 0, 109, 1,
+			21, 2, 32, 3, 8, 37, 65, 0, 1, 21, 2, 116, 32, 3, 8, 115, 0, 110, 1, 21, 2, 32, 3, 8, 115, 50, 0, 3, 37, 0,
+			106, 2, 25, 3, 37, 12, 0, 101, 3, 57, 36, 0, 7, 6, 106, 0, 3, 57, 0, 7, 6, 107, 0, 3, 49, 0, 7, 6, 108, 0,
+			3, 64, 0, 108, 3, 123, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 106, 3, 67, 0, 7, 6, 111, 0, 118,
+			105, 2, 113, 32, 3, 8, 117, 84, 37, 0, 3, 117, 0, 4, 105, 2, 108, 32, 3, 120, 0, 106, 2, 25, 0, 7, 6, 112, 0, 3,
+			48, 0, 7, 6, 113, 0, 3, 80, 0, 7, 6, 114, 0, 114, 8, 3, 13, 52, 0, 114, 101, 8, 2, 103, 117, 108, 108, 97, 3, 13,
+			52, 6, 36, 0, 4, 3, 51, 0, 2, 25, 0, 114, 3, 51, 52, 0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 7, 6, 116,
+			0, 3, 47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 4, 1, 116, 2, 97, 110, 32, 3, 6, 40, 0, 2, 97, 114, 32, 0, 2, 97,
+			114, 97, 32, 0, 2, 101, 115, 118, 101, 32, 0, 4, 1, 21, 2, 110, 32, 3, 8, 40, 0, 1, 21, 2, 114, 32, 0, 3, 40, 0,
+			2, 97, 106, 25, 3, 58, 0, 97, 3, 58, 112, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0,
+			2, 32, 3, 49, 89, 0, 104, 3, 75, 0, 3, 125, 0, 7, 6, 121, 0, 3, 116, 0, 101, 3, 121, 0, 7, 6, 122, 0, 3, 88,
+			0, 104, 3, 90, 0, 7, 6, 0, 36, 3, 72, 117, 123, 35, 34, 37, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts60 = FileInMemory_createWithData (3199, reinterpret_cast<const char *> (&espeakdata_dicts60_data), 
+			U"espeak-1.48.04-source/espeak-data/sq_dict", 
 			U"sq");
-		Collection_addItem (me.peek(), espeakdata_dicts59.transfer());
+		my addItem_move (espeakdata_dicts60.move());
 
-		static unsigned char espeakdata_dicts60_data[9702] = {
-			0, 4, 0, 0, 211, 17, 0, 0, 10, 69, 25, 32, 77, 21, 48, 21, 0, 10, 0, 0, 11, 70, 32, 80, 68, 36, 225, 211, 21, 0,
-			10, 0, 9, 67, 52, 83, 128, 65, 111, 50, 0, 10, 67, 32, 243, 128, 107, 125, 50, 0, 72, 0, 0, 5, 65, 4, 122, 0, 0, 0,
-			0, 0, 6, 65, 8, 71, 110, 0, 0, 11, 70, 9, 35, 215, 76, 84, 128, 21, 0, 10, 0, 18, 70, 28, 83, 69, 57, 48, 77, 57,
-			111, 65, 6, 110, 50, 89, 35, 65, 0, 12, 67, 21, 64, 192, 110, 47, 110, 89, 6, 110, 0, 0, 0, 6, 65, 12, 89, 110, 0, 0,
-			0, 12, 4, 95, 8, 1, 3, 107, 6, 122, 49, 112, 0, 0, 0, 6, 65, 16, 72, 110, 0, 0, 0, 10, 67, 76, 147, 128, 89, 109,
-			50, 0, 76, 0, 6, 195, 76, 147, 129, 76, 0, 5, 65, 20, 110, 0, 0, 0, 0, 0, 6, 65, 24, 111, 83, 0, 0, 0, 0, 0,
-			6, 65, 28, 81, 110, 0, 0, 0, 11, 67, 44, 19, 128, 49, 6, 35, 50, 0, 72, 0, 0, 6, 65, 32, 107, 124, 0, 0, 0, 0,
-			0, 7, 65, 36, 108, 0, 72, 28, 5, 65, 36, 108, 0, 0, 0, 0, 0, 6, 65, 40, 57, 108, 0, 0, 0, 0, 0, 6, 65, 44,
-			49, 124, 0, 0, 0, 0, 0, 6, 65, 48, 111, 55, 0, 0, 15, 1, 49, 83, 6, 119, 93, 47, 112, 0, 82, 58, 32, 101, 32, 15,
-			1, 49, 83, 6, 119, 93, 47, 35, 0, 82, 58, 32, 97, 32, 0, 14, 1, 50, 35, 50, 72, 51, 35, 0, 82, 58, 32, 97, 32, 0,
-			15, 1, 51, 47, 51, 110, 72, 57, 112, 0, 82, 58, 32, 101, 32, 0, 15, 1, 52, 83, 57, 113, 51, 72, 112, 0, 82, 58, 32, 101,
-			32, 6, 65, 52, 111, 65, 0, 0, 14, 1, 53, 83, 111, 65, 47, 112, 0, 82, 58, 32, 101, 32, 0, 14, 1, 54, 127, 111, 47, 12,
-			112, 0, 82, 58, 32, 101, 32, 0, 14, 1, 55, 127, 120, 50, 72, 112, 0, 82, 58, 32, 101, 32, 0, 15, 69, 81, 33, 68, 40, 80,
-			47, 51, 6, 110, 72, 57, 112, 0, 16, 1, 56, 123, 47, 12, 123, 50, 72, 112, 0, 82, 58, 32, 101, 32, 6, 65, 56, 111, 50, 0,
-			0, 15, 1, 57, 50, 108, 123, 50, 72, 112, 0, 82, 58, 32, 101, 32, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 110, 0, 0,
-			11, 70, 64, 20, 211, 92, 244, 132, 21, 0, 10, 0, 9, 67, 76, 145, 192, 89, 111, 57, 0, 0, 0, 6, 65, 68, 49, 117, 0, 0,
-			8, 67, 80, 130, 83, 21, 0, 10, 0, 0, 0, 6, 65, 72, 111, 51, 0, 0, 11, 70, 52, 246, 137, 48, 192, 64, 21, 0, 10, 0,
-			0, 0, 6, 65, 76, 111, 89, 0, 0, 0, 10, 67, 48, 241, 192, 55, 6, 126, 81, 0, 0, 0, 6, 65, 80, 47, 110, 0, 0, 0,
-			0, 0, 0, 0, 0, 9, 68, 80, 16, 140, 20, 21, 0, 10, 9, 68, 48, 147, 139, 76, 21, 0, 10, 0, 14, 69, 8, 20, 143, 12,
-			176, 71, 35, 51, 6, 123, 49, 0, 6, 65, 88, 84, 110, 0, 0, 0, 0, 0, 12, 65, 92, 72, 6, 120, 71, 13, 55, 84, 110, 0,
-			0, 0, 0, 0, 7, 65, 96, 111, 49, 89, 0, 0, 14, 4, 95, 49, 77, 50, 65, 109, 55, 57, 6, 126, 50, 0, 0, 14, 4, 95,
-			49, 77, 51, 71, 109, 55, 57, 6, 126, 50, 0, 0, 21, 72, 80, 244, 147, 16, 17, 197, 57, 48, 47, 6, 126, 91, 72, 122, 81, 111,
-			50, 89, 0, 0, 5, 65, 100, 115, 0, 0, 16, 70, 77, 84, 193, 56, 224, 64, 89, 120, 89, 6, 35, 50, 35, 0, 0, 0, 0, 9,
-			65, 104, 89, 6, 113, 47, 35, 0, 0, 0, 11, 67, 20, 211, 212, 111, 65, 6, 126, 47, 0, 0, 0, 0, 15, 70, 77, 84, 193, 56,
-			225, 64, 89, 120, 89, 6, 35, 50, 0, 9, 198, 9, 37, 75, 4, 65, 64, 72, 0, 7, 195, 5, 69, 0, 72, 8, 0, 0, 0, 16,
-			70, 80, 244, 147, 16, 17, 192, 47, 6, 126, 91, 72, 122, 81, 0, 11, 66, 12, 16, 89, 6, 109, 51, 49, 35, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 16, 6, 14, 195, 165, 7, 18, 1, 50, 6, 124, 81, 51, 35, 0, 72, 0, 9, 68, 25, 32, 77, 20, 21, 0,
-			10, 0, 14, 69, 8, 245, 20, 20, 224, 71, 6, 123, 47, 111, 50, 0, 0, 0, 20, 71, 28, 83, 69, 57, 48, 77, 80, 57, 111, 65,
-			6, 110, 50, 89, 35, 65, 47, 0, 0, 0, 0, 11, 67, 80, 241, 211, 47, 6, 126, 81, 89, 0, 0, 0, 0, 0, 0, 0, 12, 68,
-			17, 81, 197, 72, 72, 117, 81, 111, 51, 0, 0, 0, 8, 66, 5, 96, 122, 84, 0, 72, 5, 194, 5, 96, 72, 0, 0, 0, 0, 0,
-			0, 11, 67, 32, 17, 5, 107, 35, 72, 111, 0, 72, 0, 0, 0, 0, 7, 196, 84, 225, 5, 72, 28, 0, 0, 0, 9, 67, 8, 85,
-			0, 71, 110, 47, 0, 7, 195, 80, 147, 12, 72, 28, 0, 12, 68, 4, 225, 1, 76, 35, 50, 72, 35, 89, 0, 0, 0, 0, 10, 67,
-			29, 33, 80, 81, 51, 110, 48, 0, 0, 0, 10, 69, 9, 85, 20, 60, 224, 21, 0, 10, 0, 0, 0, 9, 67, 4, 227, 133, 35, 50,
-			50, 0, 0, 0, 0, 0, 12, 68, 77, 67, 210, 80, 89, 47, 126, 51, 47, 0, 12, 68, 76, 17, 5, 76, 89, 122, 72, 111, 89, 0,
-			0, 17, 70, 80, 244, 147, 16, 17, 211, 47, 6, 126, 91, 72, 35, 81, 89, 0, 0, 0, 0, 14, 5, 21, 19, 1, 58, 19, 117, 111,
-			89, 6, 122, 89, 0, 13, 68, 72, 17, 5, 56, 51, 122, 72, 2, 111, 50, 0, 0, 0, 0, 0, 0, 10, 69, 72, 80, 68, 21, 32,
-			21, 0, 10, 0, 0, 0, 12, 68, 32, 243, 143, 52, 107, 123, 50, 123, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 52, 81,
-			1, 56, 8, 0, 0, 0, 0, 0, 0, 0, 6, 195, 16, 149, 20, 76, 0, 0, 0, 0, 8, 67, 72, 80, 68, 21, 0, 10, 10, 67,
-			76, 176, 64, 89, 49, 122, 0, 72, 10, 67, 76, 176, 64, 89, 49, 122, 0, 72, 0, 0, 0, 0, 0, 10, 67, 36, 227, 205, 109, 50,
-			123, 65, 0, 0, 10, 67, 20, 113, 78, 110, 81, 111, 50, 0, 0, 5, 194, 21, 32, 76, 0, 0, 0, 0, 0, 10, 67, 21, 37, 0,
-			110, 51, 47, 0, 76, 0, 10, 67, 4, 225, 197, 35, 50, 57, 110, 0, 7, 196, 28, 83, 143, 52, 28, 0, 0, 5, 194, 16, 80, 72,
-			0, 0, 7, 196, 88, 147, 12, 20, 72, 0, 0, 0, 10, 67, 16, 85, 0, 72, 110, 47, 0, 72, 0, 13, 68, 72, 17, 5, 72, 51,
-			122, 72, 2, 111, 51, 0, 13, 4, 95, 4, 16, 20, 48, 6, 120, 68, 49, 47, 0, 0, 0, 5, 194, 17, 80, 72, 0, 9, 67, 88,
-			83, 64, 84, 111, 65, 0, 9, 67, 24, 83, 64, 83, 111, 65, 0, 0, 0, 0, 17, 70, 65, 35, 199, 72, 19, 64, 48, 51, 125, 81,
-			51, 6, 35, 65, 0, 0, 8, 133, 195, 182, 22, 5, 18, 28, 0, 0, 0, 0, 16, 7, 6, 18, 1, 13, 195, 165, 20, 83, 51, 35,
-			65, 123, 47, 0, 0, 13, 4, 95, 20, 12, 4, 47, 6, 109, 55, 72, 112, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 0, 0,
-			0, 10, 67, 4, 228, 197, 35, 50, 89, 110, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 21, 69, 0, 6, 111, 47, 0, 6, 195, 21,
-			69, 0, 72, 0, 0, 8, 197, 9, 37, 75, 5, 32, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 10, 67, 61, 32, 193, 123, 51, 49, 35, 0, 0, 0, 8, 67, 48, 147, 139, 21, 0, 10, 0, 0, 0, 0, 7, 196, 36, 227, 129,
-			56, 28, 0, 0, 0, 0, 12, 68, 29, 33, 80, 76, 81, 51, 110, 48, 89, 0, 0, 0, 0, 0, 0, 0, 7, 66, 32, 16, 107, 122,
-			0, 0, 0, 0, 0, 0, 0, 11, 70, 12, 129, 67, 44, 81, 0, 21, 0, 10, 0, 14, 69, 25, 32, 77, 52, 80, 83, 51, 6, 35,
-			65, 111, 0, 0, 10, 67, 20, 115, 129, 110, 81, 50, 35, 0, 6, 195, 16, 147, 129, 76, 0, 10, 67, 16, 147, 128, 72, 109, 50, 0,
-			76, 10, 67, 32, 19, 128, 107, 35, 50, 0, 72, 0, 0, 0, 0, 9, 67, 16, 19, 128, 72, 122, 50, 0, 0, 0, 0, 0, 9, 67,
-			64, 20, 128, 48, 122, 51, 0, 10, 67, 32, 20, 128, 107, 122, 51, 0, 72, 6, 195, 32, 20, 128, 72, 0, 8, 196, 20, 195, 5, 72,
-			72, 8, 0, 11, 70, 76, 241, 148, 92, 20, 133, 21, 0, 10, 10, 69, 12, 19, 131, 20, 192, 21, 0, 10, 0, 0, 9, 67, 80, 20,
-			128, 47, 122, 51, 0, 0, 0, 0, 0, 0, 6, 195, 32, 19, 147, 76, 0, 0, 0, 0, 0, 16, 69, 8, 85, 1, 49, 64, 71, 6,
-			111, 47, 6, 122, 55, 47, 0, 0, 0, 0, 12, 68, 76, 243, 133, 56, 89, 124, 50, 111, 50, 0, 13, 68, 5, 34, 201, 88, 6, 35,
-			51, 49, 108, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 2, 195, 164, 19, 20, 5,
-			71, 6, 111, 89, 47, 111, 0, 0, 0, 0, 0, 0, 13, 67, 57, 97, 1, 111, 50, 84, 110, 72, 110, 122, 0, 0, 9, 67, 16, 145,
-			192, 72, 111, 57, 0, 0, 0, 0, 8, 67, 64, 17, 197, 21, 0, 10, 0, 0, 0, 0, 7, 66, 40, 16, 57, 122, 0, 0, 0, 0,
-			0, 0, 0, 14, 68, 8, 244, 132, 20, 71, 6, 126, 51, 72, 111, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 16, 17, 211,
-			72, 35, 49, 89, 0, 0, 8, 197, 32, 83, 142, 21, 48, 76, 0, 0, 8, 67, 32, 20, 192, 21, 0, 10, 0, 0, 14, 69, 77, 64,
-			68, 20, 224, 89, 47, 122, 72, 111, 50, 0, 0, 0, 9, 67, 80, 20, 192, 47, 122, 89, 0, 0, 13, 68, 16, 84, 129, 76, 72, 110,
-			51, 35, 89, 0, 76, 0, 0, 13, 4, 95, 13, 3, 14, 89, 47, 51, 6, 111, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			10, 67, 44, 192, 83, 49, 55, 122, 89, 0, 0, 8, 67, 16, 245, 0, 21, 0, 10, 10, 67, 44, 192, 82, 49, 55, 122, 51, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66, 20, 224, 111, 50, 0, 72, 0, 10, 67, 77, 64, 68, 89, 47, 122, 72,
-			0, 12, 3, 95, 51, 88, 47, 51, 6, 111, 47, 109, 0, 0, 13, 3, 95, 48, 67, 107, 6, 120, 50, 72, 51, 35, 0, 0, 0, 0,
-			9, 67, 17, 32, 64, 72, 51, 122, 0, 0, 0, 0, 0, 0, 0, 10, 67, 77, 64, 78, 89, 47, 122, 50, 0, 0, 0, 0, 0, 0,
-			12, 3, 95, 49, 57, 50, 6, 109, 47, 123, 50, 0, 0, 12, 3, 95, 49, 56, 6, 122, 51, 47, 123, 50, 0, 0, 0, 0, 0, 0,
-			10, 67, 17, 32, 83, 72, 51, 122, 89, 0, 0, 10, 67, 17, 32, 82, 72, 51, 122, 51, 0, 0, 11, 3, 95, 49, 49, 6, 111, 55,
-			84, 35, 0, 0, 11, 3, 95, 49, 48, 47, 6, 108, 38, 126, 0, 0, 9, 68, 48, 85, 133, 48, 21, 0, 10, 13, 3, 95, 49, 51,
-			47, 51, 6, 111, 47, 123, 50, 0, 0, 11, 3, 95, 49, 50, 47, 6, 123, 55, 84, 0, 0, 13, 3, 95, 49, 53, 83, 6, 111, 65,
-			47, 123, 50, 0, 0, 14, 3, 95, 49, 52, 83, 57, 6, 126, 51, 47, 123, 50, 0, 0, 12, 3, 95, 49, 55, 127, 6, 120, 47, 123,
-			50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 111, 49, 89, 47, 123, 50, 0, 0, 0, 11, 3, 95, 55, 88, 127, 6, 120, 47, 109, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 20, 101, 5, 72, 28, 0, 9, 67, 52, 21, 0,
-			65, 122, 47, 0, 0, 0, 0, 0, 15, 2, 49, 49, 111, 55, 83, 47, 112, 0, 82, 58, 32, 101, 32, 0, 16, 2, 49, 48, 47, 108,
-			123, 50, 72, 112, 0, 82, 58, 32, 101, 32, 0, 11, 3, 95, 50, 88, 97, 6, 117, 81, 123, 0, 0, 16, 2, 49, 50, 47, 123, 55,
-			83, 47, 112, 0, 82, 58, 32, 101, 32, 0, 0, 8, 67, 81, 32, 89, 21, 0, 10, 0, 10, 67, 8, 245, 20, 71, 6, 125, 47, 0,
-			0, 0, 0, 0, 0, 0, 10, 69, 76, 52, 133, 20, 224, 21, 0, 10, 0, 0, 0, 15, 3, 95, 63, 63, 89, 6, 116, 65, 71, 126,
-			55, 112, 50, 0, 0, 0, 11, 70, 12, 243, 21, 52, 228, 192, 21, 0, 10, 0, 15, 5, 6, 18, 195, 165, 14, 83, 51, 6, 124, 50,
-			0, 72, 28, 12, 3, 95, 52, 88, 83, 6, 119, 51, 47, 109, 0, 0, 0, 9, 3, 195, 164, 14, 111, 50, 0, 72, 0, 0, 0, 0,
-			0, 0, 12, 3, 95, 53, 88, 83, 6, 111, 65, 47, 109, 0, 0, 0, 0, 0, 0, 0, 10, 69, 60, 97, 137, 12, 80, 21, 0, 10,
-			0, 0, 13, 3, 95, 54, 88, 89, 6, 111, 49, 89, 47, 109, 0, 0, 0, 0, 7, 132, 22, 195, 165, 18, 76, 0, 6, 195, 52, 149,
-			20, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 52, 18, 76, 21, 0, 10, 10, 3, 95, 56, 88, 6, 123, 47,
-			109, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 81, 0, 72, 28, 0, 0, 11, 3, 95, 57, 88, 50, 6, 109, 47, 109, 0, 0, 0,
-			14, 69, 29, 34, 80, 56, 16, 81, 51, 108, 48, 50, 35, 0, 0, 0, 0, 0, 10, 3, 195, 164, 18, 6, 113, 51, 0, 72, 0, 16,
-			3, 95, 63, 65, 71, 6, 126, 49, 89, 47, 35, 84, 112, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 36, 224, 109, 50,
-			0, 0, 8, 67, 92, 80, 128, 21, 0, 10, 0, 0, 0, 0, 13, 4, 95, 15, 7, 15, 89, 84, 6, 35, 50, 89, 0, 0, 0, 15,
-			69, 76, 179, 204, 4, 224, 89, 49, 6, 126, 55, 35, 50, 0, 17, 7, 13, 195, 165, 19, 20, 5, 14, 65, 6, 123, 89, 47, 13, 50,
-			0, 0, 0, 12, 71, 52, 144, 210, 61, 51, 198, 80, 21, 0, 10, 10, 67, 76, 83, 148, 89, 110, 50, 47, 0, 0, 9, 68, 36, 208,
-			71, 20, 21, 0, 10, 0, 10, 67, 77, 67, 210, 89, 47, 126, 51, 0, 0, 0, 0, 11, 67, 60, 50, 0, 6, 123, 49, 0, 72, 8,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 52, 147, 128, 65, 109, 50, 0, 76, 0, 6, 195, 52, 147, 129, 76, 0, 0,
-			16, 4, 95, 48, 77, 50, 65, 109, 55, 57, 6, 126, 50, 111, 51, 0, 0, 9, 67, 61, 53, 0, 125, 89, 47, 0, 10, 67, 52, 19,
-			128, 65, 35, 50, 0, 72, 16, 4, 95, 48, 77, 51, 71, 109, 55, 57, 6, 126, 50, 111, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49,
-			47, 6, 117, 89, 111, 50, 0, 0, 14, 4, 95, 2, 18, 22, 71, 51, 6, 110, 84, 108, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 8, 244, 148, 71, 123, 51, 47, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 66, 60, 96, 21, 0, 10, 7, 132, 2, 195, 182, 18, 72, 8, 132, 6, 195, 182, 18, 72, 28, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 9, 67, 52, 145, 192, 65, 111, 57, 0, 0, 0, 0, 0, 8, 67, 60, 225, 64, 21, 0, 10, 0, 0, 0, 11,
-			70, 77, 80, 141, 20, 229, 64, 21, 0, 10, 5, 194, 56, 144, 72, 0, 9, 67, 72, 17, 0, 51, 122, 72, 0, 0, 0, 11, 70, 16,
-			84, 203, 80, 244, 0, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 3, 9, 18, 89, 6, 109, 51, 49, 120, 65,
-			83, 55, 111, 49, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 8, 4, 195, 164, 18, 6, 195, 182, 18, 72, 6, 111, 51, 83, 118,
-			51, 0, 0, 0, 0, 0, 11, 70, 29, 32, 80, 32, 144, 192, 21, 0, 10, 0, 8, 67, 72, 245, 192, 21, 0, 10, 17, 4, 95, 19,
-			20, 11, 89, 50, 6, 110, 72, 89, 47, 51, 112, 49, 0, 0, 0, 12, 4, 95, 1, 3, 21, 6, 122, 49, 117, 47, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 18, 14, 7, 51, 6, 109, 68, 0, 0, 6, 131, 95, 195, 169, 43, 0, 11, 70, 29, 32,
-			80, 32, 144, 211, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 32, 64, 76, 0, 0, 17,
-			7, 20, 25, 22, 195, 164, 18, 18, 47, 2, 116, 84, 6, 113, 51, 0, 11, 67, 21, 32, 78, 113, 51, 35, 50, 0, 76, 0, 0, 10,
-			67, 88, 19, 20, 84, 122, 55, 47, 0, 0, 0, 0, 18, 4, 95, 1, 3, 50, 72, 6, 120, 71, 112, 55, 6, 122, 49, 117, 47, 0,
-			0, 0, 0, 9, 134, 12, 195, 164, 14, 7, 19, 28, 0, 7, 66, 80, 16, 47, 122, 0, 0, 11, 67, 21, 32, 84, 113, 51, 35, 47,
-			0, 76, 0, 0, 10, 67, 45, 96, 82, 49, 84, 122, 51, 0, 0, 0, 6, 195, 88, 147, 12, 72, 7, 195, 52, 245, 0, 72, 28, 0,
-			0, 0, 8, 67, 72, 245, 211, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 12, 243, 21,
-			52, 224, 21, 0, 10, 0, 0, 0, 10, 67, 32, 85, 1, 107, 110, 47, 35, 0, 0, 0, 0, 10, 67, 32, 83, 20, 107, 110, 55, 47,
-			0, 0, 0, 0, 7, 66, 56, 240, 21, 0, 10, 6, 194, 60, 208, 72, 8, 6, 194, 60, 208, 72, 28, 0, 0, 11, 67, 76, 86, 0,
-			89, 6, 111, 49, 89, 0, 12, 68, 4, 225, 197, 76, 35, 50, 57, 110, 89, 0, 0, 10, 67, 77, 96, 82, 89, 84, 122, 51, 0, 0,
-			0, 0, 12, 68, 4, 225, 197, 72, 35, 50, 57, 110, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 16, 195, 165, 72, 0, 0,
-			0, 0, 9, 68, 4, 67, 194, 20, 21, 0, 10, 0, 0, 0, 9, 67, 60, 229, 0, 125, 50, 47, 0, 0, 0, 0, 0, 0, 14, 4,
-			95, 3, 5, 4, 89, 6, 110, 72, 109, 55, 57, 0, 0, 0, 0, 16, 4, 95, 12, 9, 7, 55, 6, 108, 81, 35, 47, 4, 117, 51,
-			0, 0, 0, 0, 0, 10, 67, 88, 17, 0, 84, 122, 72, 0, 72, 0, 0, 0, 0, 0, 0, 0, 20, 8, 13, 15, 14, 5, 20, 195,
-			164, 18, 65, 4, 123, 50, 111, 47, 6, 113, 51, 0, 8, 133, 22, 195, 165, 18, 1, 76, 0, 7, 195, 76, 243, 64, 72, 8, 0, 8,
-			67, 56, 19, 69, 21, 0, 10, 0, 10, 69, 80, 16, 140, 21, 48, 21, 0, 10, 0, 0, 9, 67, 16, 83, 64, 72, 111, 65, 0, 0,
-			0, 14, 69, 4, 225, 18, 5, 48, 35, 50, 72, 51, 35, 89, 0, 0, 0, 0, 0, 8, 133, 22, 195, 165, 18, 20, 76, 0, 0, 0,
-			0, 0, 0, 0, 13, 72, 84, 228, 197, 48, 80, 212, 20, 64, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			196, 45, 83, 132, 20, 72, 0, 0, 0, 0, 0, 0, 8, 67, 88, 145, 87, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			11, 67, 85, 48, 64, 117, 111, 89, 6, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 32, 82, 128, 107, 111,
-			57, 0, 0, 0, 8, 197, 76, 181, 76, 48, 80, 72, 0, 0, 0, 0, 0, 0, 9, 67, 76, 243, 128, 89, 124, 50, 0, 9, 67, 40,
-			19, 128, 57, 122, 50, 0, 0, 0, 0, 0, 10, 67, 16, 83, 128, 72, 111, 50, 0, 72, 0, 9, 68, 20, 208, 73, 48, 21, 0, 10,
-			13, 4, 95, 3, 1, 16, 89, 47, 6, 126, 51, 47, 0, 0, 0, 11, 67, 88, 20, 133, 84, 122, 51, 111, 0, 72, 0, 8, 67, 92,
-			244, 132, 21, 0, 10, 9, 67, 64, 84, 128, 48, 113, 51, 0, 0, 11, 2, 95, 46, 48, 6, 120, 68, 49, 47, 0, 0, 0, 0, 10,
-			67, 88, 20, 128, 84, 122, 51, 0, 72, 9, 67, 24, 20, 128, 83, 122, 51, 0, 10, 67, 88, 20, 128, 84, 122, 51, 0, 72, 9, 2,
-			95, 51, 47, 51, 6, 110, 0, 0, 9, 2, 95, 50, 47, 84, 6, 124, 0, 0, 8, 2, 95, 49, 6, 111, 47, 0, 0, 9, 2, 95,
-			48, 50, 6, 123, 55, 0, 0, 8, 2, 95, 55, 127, 6, 117, 0, 0, 10, 2, 95, 54, 89, 6, 111, 49, 89, 0, 0, 9, 2, 95,
-			53, 83, 6, 111, 65, 0, 0, 10, 2, 95, 52, 83, 6, 115, 51, 35, 0, 0, 0, 0, 9, 2, 95, 57, 50, 6, 108, 126, 0, 0,
-			9, 2, 95, 56, 6, 123, 47, 35, 0, 0, 0, 12, 67, 85, 48, 83, 117, 111, 89, 6, 122, 89, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 67, 85, 49, 82, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 67, 36, 64, 71, 109, 72, 4, 122, 81, 0, 0, 15,
-			6, 13, 195, 165, 19, 20, 5, 65, 6, 123, 89, 47, 13, 0, 0, 0, 0, 0, 0, 0, 10, 67, 40, 17, 192, 57, 122, 81, 0, 72,
-			0, 13, 4, 95, 4, 15, 20, 48, 6, 120, 68, 49, 47, 0, 0, 0, 0, 0, 0, 7, 195, 88, 145, 0, 72, 28, 0, 5, 194, 88,
-			144, 72, 0, 0, 0, 10, 69, 60, 227, 9, 56, 80, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4,
-			95, 7, 18, 22, 81, 51, 6, 122, 84, 0, 0, 8, 67, 20, 66, 84, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 13, 4, 95, 4, 9, 1, 6, 123, 65, 57, 117, 72, 0, 0, 0, 0, 0, 0, 12, 68, 4, 228, 197, 76, 35, 50, 89, 110, 89,
-			0, 6, 195, 16, 84, 211, 76, 0, 0, 0, 11, 70, 24, 148, 133, 24, 246, 0, 21, 0, 10, 0, 8, 67, 40, 21, 211, 21, 0, 10,
-			12, 68, 4, 228, 197, 72, 35, 50, 89, 110, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 67, 9, 32, 64, 71, 51,
-			122, 0, 0, 0, 0, 0, 19, 71, 80, 244, 147, 16, 17, 197, 56, 47, 6, 126, 91, 72, 122, 81, 111, 50, 0, 0, 0, 0, 11, 67,
-			25, 32, 77, 83, 51, 6, 35, 65, 0, 0, 0, 0, 0, 10, 67, 76, 17, 5, 89, 122, 72, 111, 0, 13, 4, 95, 35, 51, 50, 71,
-			55, 6, 35, 68, 49, 0, 0, 0, 0, 0, 16, 6, 14, 195, 165, 7, 15, 20, 50, 4, 124, 81, 123, 47, 0, 72, 0, 0, 0, 0,
-			0, 0, 16, 6, 14, 195, 165, 7, 15, 14, 50, 4, 124, 81, 123, 50, 0, 72, 0, 0, 0, 0, 11, 70, 21, 132, 12, 61, 33, 82,
-			21, 0, 10, 0, 0, 0, 0, 0, 0, 11, 70, 36, 229, 5, 72, 225, 84, 21, 0, 10, 0, 8, 67, 92, 149, 8, 21, 0, 10, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 28, 243, 199, 48, 80, 21, 0,
-			10, 0, 7, 131, 4, 195, 165, 72, 28, 0, 0, 0, 0, 0, 12, 71, 84, 224, 200, 20, 50, 197, 16, 21, 0, 10, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 80, 243, 84, 47, 6, 125, 65, 47, 0, 0, 0, 0, 11, 70, 32, 80,
-			68, 36, 225, 192, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 28, 18, 77, 21, 0, 10, 0, 12, 71, 52, 84, 211, 20,
-			225, 197, 72, 21, 0, 10, 10, 67, 80, 243, 64, 47, 6, 125, 65, 0, 6, 195, 76, 149, 20, 76, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 16, 70, 77, 64, 68, 20, 228, 192, 89, 47, 122, 72, 111, 50, 89, 0, 0, 0, 0, 0, 0, 0, 0, 10, 135, 6, 1,
-			19, 20, 195, 164, 14, 8, 0, 11, 70, 48, 80, 86, 36, 225, 192, 21, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 195, 164, 0, 4, 1, 102, 102, 3, 6, 113, 0, 1, 110, 111, 105, 2, 114, 0, 1, 116, 2, 114, 0, 114, 108, 2,
-			100, 3, 6, 113, 51, 0, 4, 1, 110, 2, 116, 116, 3, 111, 0, 1, 118, 2, 120, 0, 2, 17, 67, 17, 67, 0, 4, 3, 113, 0,
-			1, 98, 2, 114, 0, 1, 102, 2, 114, 100, 0, 1, 107, 115, 2, 114, 103, 0, 1, 108, 2, 115, 110, 0, 1, 108, 2, 115, 116, 0,
-			1, 110, 2, 116, 0, 1, 114, 2, 107, 0, 1, 114, 116, 2, 100, 0, 1, 118, 2, 108, 107, 0, 1, 118, 2, 114, 100, 0, 2, 114,
-			0, 2, 114, 100, 0, 7, 6, 195, 165, 0, 1, 108, 2, 115, 115, 3, 6, 123, 0, 4, 1, 104, 2, 114, 3, 6, 124, 0, 1, 108,
-			2, 115, 0, 1, 114, 116, 2, 100, 0, 1, 118, 2, 114, 0, 4, 1, 104, 2, 108, 108, 3, 123, 0, 2, 17, 67, 11, 0, 2, 110,
-			103, 0, 4, 3, 124, 0, 1, 104, 2, 108, 0, 1, 107, 115, 2, 108, 0, 1, 109, 2, 108, 0, 1, 110, 2, 108, 0, 1, 114, 2,
-			107, 0, 2, 17, 67, 17, 67, 0, 7, 6, 195, 182, 0, 1, 102, 2, 114, 107, 3, 2, 119, 0, 4, 1, 102, 2, 114, 100, 3, 6,
-			118, 0, 1, 102, 102, 0, 1, 108, 2, 115, 110, 0, 1, 108, 2, 115, 116, 0, 2, 118, 114, 0, 4, 1, 114, 2, 109, 3, 6, 119,
-			0, 2, 17, 67, 17, 67, 0, 3, 118, 0, 7, 6, 97, 0, 4, 1, 107, 2, 116, 97, 3, 2, 35, 0, 1, 107, 105, 0, 1, 108,
-			112, 2, 110, 101, 114, 97, 0, 1, 110, 2, 116, 105, 0, 1, 112, 101, 2, 114, 0, 1, 115, 2, 116, 105, 0, 1, 116, 2, 116, 105,
-			0, 8, 2, 114, 116, 0, 110, 115, 1, 21, 2, 32, 3, 6, 35, 50, 89, 0, 4, 1, 102, 2, 114, 108, 3, 6, 122, 0, 1, 102,
-			2, 114, 116, 0, 1, 107, 105, 2, 110, 115, 0, 1, 110, 2, 108, 32, 0, 1, 116, 2, 108, 32, 0, 1, 116, 2, 108, 32, 0, 1,
-			116, 111, 116, 2, 108, 0, 4, 1, 10, 3, 35, 0, 1, 98, 0, 1, 98, 2, 107, 116, 101, 0, 1, 98, 2, 114, 11, 0, 1, 98,
-			98, 2, 114, 32, 0, 1, 100, 2, 100, 0, 1, 100, 2, 103, 11, 0, 1, 100, 2, 110, 0, 1, 100, 100, 2, 17, 67, 0, 1, 100,
-			110, 2, 114, 0, 1, 100, 112, 112, 2, 116, 0, 1, 103, 101, 2, 110, 0, 1, 103, 110, 2, 100, 0, 1, 103, 165, 195, 2, 110, 0,
-			1, 106, 2, 110, 0, 1, 107, 2, 110, 0, 1, 107, 2, 110, 105, 0, 1, 107, 2, 115, 32, 0, 1, 108, 2, 103, 103, 0, 1, 108,
-			101, 2, 100, 0, 1, 108, 103, 2, 100, 11, 0, 1, 108, 103, 2, 115, 11, 0, 1, 108, 107, 105, 2, 114, 32, 0, 1, 108, 108, 2,
-			100, 101, 0, 1, 108, 108, 101, 109, 2, 110, 0, 1, 109, 2, 106, 0, 1, 109, 2, 110, 0, 1, 109, 2, 116, 101, 114, 0, 1, 109,
-			114, 111, 102, 2, 116, 105, 0, 1, 110, 2, 100, 0, 1, 110, 110, 2, 110, 0, 1, 112, 2, 100, 32, 0, 1, 112, 2, 110, 101, 108,
-			0, 1, 114, 2, 98, 97, 0, 1, 114, 100, 2, 100, 0, 1, 114, 100, 2, 116, 0, 1, 114, 101, 2, 100, 0, 1, 114, 101, 2, 116,
-			0, 1, 114, 101, 2, 116, 0, 1, 114, 103, 2, 109, 0, 1, 114, 116, 115, 0, 1, 115, 2, 100, 0, 1, 115, 2, 109, 97, 17, 67,
-			0, 1, 115, 2, 115, 0, 1, 115, 107, 2, 109, 0, 1, 115, 115, 97, 0, 1, 115, 116, 2, 109, 0, 1, 116, 2, 103, 11, 0, 1,
-			116, 2, 108, 11, 0, 1, 116, 2, 110, 0, 1, 116, 97, 0, 1, 116, 115, 2, 116, 32, 0, 1, 118, 2, 114, 105, 97, 0, 1, 118,
-			115, 2, 114, 116, 0, 2, 17, 67, 11, 0, 2, 17, 67, 17, 67, 0, 2, 32, 0, 2, 98, 111, 0, 2, 100, 101, 0, 2, 114, 32,
-			0, 2, 114, 101, 0, 2, 114, 110, 97, 0, 2, 115, 32, 0, 2, 116, 32, 0, 2, 117, 116, 111, 0, 2, 118, 97, 0, 2, 120, 0,
-			8, 107, 2, 21, 0, 110, 97, 108, 121, 3, 35, 50, 35, 55, 115, 0, 114, 98, 101, 116, 3, 35, 51, 71, 110, 47, 0, 108, 107, 111,
-			104, 111, 108, 3, 35, 55, 49, 125, 107, 124, 55, 0, 108, 108, 118, 97, 114, 3, 35, 55, 55, 84, 122, 51, 0, 109, 101, 114, 105, 107,
-			3, 35, 65, 111, 51, 109, 49, 0, 103, 101, 114, 97, 3, 35, 81, 110, 51, 35, 0, 115, 116, 3, 35, 89, 47, 0, 4, 3, 122, 0,
-			1, 98, 2, 107, 0, 1, 98, 2, 114, 0, 1, 98, 2, 114, 32, 0, 1, 100, 2, 103, 0, 1, 102, 2, 114, 101, 110, 0, 1, 107,
-			2, 107, 0, 1, 107, 115, 2, 100, 97, 0, 1, 107, 115, 2, 100, 101, 0, 1, 107, 115, 2, 112, 0, 1, 108, 2, 103, 0, 1, 108,
-			2, 114, 115, 0, 1, 108, 98, 2, 100, 0, 1, 108, 103, 2, 100, 0, 1, 108, 107, 2, 114, 0, 1, 108, 112, 109, 101, 120, 2, 114,
-			0, 1, 109, 111, 2, 116, 0, 1, 109, 115, 2, 114, 116, 0, 1, 114, 2, 116, 0, 1, 114, 100, 101, 2, 103, 0, 1, 114, 100, 101,
-			2, 114, 0, 1, 114, 100, 105, 0, 1, 115, 2, 107, 101, 0, 1, 115, 2, 107, 110, 0, 1, 115, 2, 107, 115, 0, 1, 116, 2, 103,
-			0, 1, 116, 2, 108, 17, 67, 0, 1, 116, 2, 108, 115, 0, 1, 116, 101, 114, 2, 103, 0, 1, 116, 108, 2, 116, 0, 1, 116, 108,
-			101, 100, 0, 1, 116, 110, 101, 2, 114, 0, 1, 116, 115, 2, 114, 116, 0, 1, 116, 116, 2, 103, 97, 0, 1, 116, 116, 2, 103, 101,
-			116, 0, 1, 116, 116, 2, 103, 105, 116, 0, 1, 118, 2, 108, 100, 0, 1, 118, 2, 108, 102, 0, 1, 118, 2, 114, 100, 0, 1, 118,
-			115, 2, 114, 0, 1, 118, 115, 110, 97, 2, 114, 0, 2, 114, 110, 0, 2, 114, 116, 32, 0, 2, 118, 98, 0, 2, 118, 100, 0, 2,
-			118, 103, 0, 2, 118, 115, 0, 8, 98, 2, 107, 0, 8, 107, 115, 2, 100, 0, 8, 108, 103, 2, 115, 0, 8, 118, 2, 110, 108, 0,
-			118, 116, 97, 8, 3, 122, 84, 47, 122, 0, 118, 103, 101, 8, 3, 122, 84, 57, 6, 110, 0, 117, 8, 2, 17, 67, 3, 123, 0, 117,
-			1, 104, 99, 2, 17, 67, 17, 67, 3, 124, 0, 7, 6, 98, 0, 2, 98, 3, 0, 3, 71, 0, 101, 116, 97, 108, 3, 71, 2, 111,
-			47, 6, 122, 55, 0, 114, 101, 100, 98, 97, 110, 100, 3, 71, 51, 110, 72, 71, 35, 50, 72, 0, 101, 103, 114, 105, 112, 3, 71, 111,
-			81, 51, 6, 108, 48, 0, 101, 103, 114, 97, 118, 3, 71, 111, 81, 51, 122, 84, 0, 101, 118, 97, 107, 110, 3, 71, 111, 84, 122, 49,
-			50, 0, 101, 115, 108, 97, 103, 3, 71, 111, 89, 55, 6, 122, 81, 0, 101, 115, 108, 97, 103, 116, 97, 3, 71, 111, 89, 55, 6, 122,
-			81, 47, 122, 0, 7, 6, 99, 0, 4, 108, 105, 99, 107, 3, 21, 0, 111, 109, 112, 117, 116, 101, 114, 0, 4, 3, 49, 0, 107, 0,
-			107, 2, 17, 65, 3, 49, 12, 0, 4, 99, 3, 49, 89, 0, 99, 2, 17, 65, 0, 4, 2, 101, 3, 89, 0, 2, 105, 0, 2, 121,
-			0, 2, 195, 164, 0, 2, 195, 182, 0, 104, 3, 91, 0, 104, 2, 101, 102, 3, 127, 0, 7, 6, 100, 0, 2, 100, 3, 0, 4, 101,
-			115, 105, 103, 110, 3, 21, 0, 111, 119, 110, 108, 111, 97, 100, 0, 106, 117, 3, 57, 6, 117, 0, 106, 117, 110, 103, 3, 57, 6, 120,
-			68, 0, 3, 72, 0, 97, 116, 111, 114, 101, 114, 3, 72, 35, 47, 6, 126, 51, 111, 51, 0, 114, 111, 103, 101, 110, 3, 72, 51, 124,
-			81, 111, 50, 0, 114, 111, 103, 101, 114, 3, 72, 51, 124, 81, 111, 51, 0, 105, 115, 107, 101, 3, 72, 109, 89, 49, 111, 0, 117, 109,
-			3, 72, 120, 65, 0, 97, 116, 97, 3, 72, 122, 47, 35, 0, 97, 116, 97, 98, 97, 115, 3, 72, 122, 47, 35, 71, 122, 89, 0, 97,
-			116, 111, 114, 3, 72, 122, 47, 123, 51, 0, 97, 103, 108, 105, 103, 3, 72, 122, 81, 55, 109, 81, 0, 97, 103, 101, 110, 3, 72, 122,
-			81, 111, 50, 0, 7, 6, 101, 0, 4, 1, 10, 3, 2, 111, 0, 1, 10, 2, 32, 0, 1, 98, 2, 102, 0, 1, 98, 2, 103, 0,
-			1, 98, 2, 104, 0, 1, 98, 2, 107, 0, 1, 98, 2, 108, 0, 1, 98, 2, 114, 0, 1, 98, 2, 115, 0, 1, 98, 2, 116, 0,
-			1, 98, 2, 118, 0, 1, 100, 2, 108, 115, 101, 0, 1, 103, 2, 110, 0, 1, 112, 109, 2, 108, 0, 1, 112, 115, 2, 99, 0, 1,
-			114, 2, 103, 0, 1, 114, 2, 116, 117, 114, 0, 1, 114, 112, 2, 99, 0, 1, 114, 112, 2, 110, 0, 1, 115, 2, 107, 0, 1, 115,
-			2, 112, 0, 2, 120, 101, 109, 112, 0, 116, 1, 10, 2, 32, 14, 128, 128, 130, 3, 2, 111, 47, 0, 110, 1, 10, 2, 32, 3, 2,
-			111, 50, 0, 110, 115, 1, 10, 2, 32, 3, 2, 111, 50, 89, 0, 114, 1, 10, 2, 32, 3, 2, 111, 51, 0, 115, 1, 10, 2, 32,
-			3, 2, 111, 89, 0, 110, 115, 1, 114, 101, 3, 6, 35, 50, 89, 0, 1, 116, 115, 2, 109, 17, 67, 3, 6, 110, 0, 107, 111, 110,
-			111, 109, 3, 6, 111, 49, 126, 50, 4, 123, 12, 65, 0, 110, 115, 1, 114, 101, 118, 182, 195, 3, 6, 111, 50, 89, 0, 108, 101, 107,
-			3, 6, 111, 55, 111, 49, 0, 109, 98, 101, 114, 3, 6, 111, 65, 71, 111, 51, 0, 115, 112, 101, 97, 107, 3, 21, 0, 4, 3, 110,
-			0, 1, 99, 2, 114, 0, 1, 100, 2, 108, 110, 0, 1, 100, 2, 108, 115, 0, 1, 100, 2, 108, 116, 0, 1, 100, 2, 108, 118, 0,
-			1, 100, 2, 114, 97, 0, 1, 102, 2, 114, 97, 0, 1, 103, 2, 110, 111, 109, 0, 1, 103, 2, 114, 97, 0, 1, 104, 2, 116, 101,
-			110, 0, 1, 104, 103, 2, 116, 0, 1, 104, 121, 110, 2, 116, 0, 1, 108, 2, 100, 97, 0, 1, 108, 2, 100, 110, 0, 1, 108, 2,
-			114, 97, 0, 1, 108, 2, 116, 97, 0, 1, 109, 2, 100, 100, 101, 0, 1, 109, 2, 100, 101, 108, 0, 1, 109, 2, 114, 97, 0, 1,
-			110, 2, 100, 115, 0, 1, 110, 2, 114, 97, 0, 1, 114, 2, 100, 110, 0, 1, 114, 2, 114, 97, 0, 1, 114, 2, 116, 97, 0, 1,
-			114, 98, 2, 118, 0, 1, 114, 116, 120, 2, 109, 0, 1, 115, 2, 114, 97, 0, 1, 116, 2, 114, 97, 0, 1, 116, 105, 2, 116, 0,
-			1, 116, 105, 2, 116, 32, 0, 1, 116, 111, 105, 108, 2, 107, 0, 1, 116, 115, 2, 107, 0, 1, 116, 115, 121, 2, 109, 0, 1, 118,
-			2, 107, 0, 1, 118, 2, 116, 97, 0, 2, 110, 98, 97, 114, 0, 2, 110, 108, 105, 0, 2, 114, 105, 110, 0, 2, 114, 115, 97, 116,
-			116, 0, 2, 114, 115, 195, 164, 0, 8, 104, 2, 116, 97, 0, 116, 1, 104, 2, 32, 3, 110, 47, 0, 110, 104, 101, 116, 3, 110, 50,
-			107, 110, 47, 0, 4, 1, 97, 107, 2, 108, 3, 111, 0, 1, 98, 2, 108, 32, 0, 1, 100, 2, 98, 97, 116, 0, 1, 100, 2, 99,
-			0, 1, 100, 101, 109, 2, 108, 0, 1, 104, 2, 109, 0, 1, 109, 2, 110, 121, 0, 1, 109, 2, 116, 111, 100, 0, 1, 112, 2, 100,
-			97, 0, 1, 112, 2, 114, 105, 0, 1, 114, 2, 99, 101, 0, 1, 114, 2, 100, 97, 107, 0, 1, 114, 2, 115, 117, 108, 0, 1, 114,
-			2, 115, 117, 114, 0, 1, 116, 2, 108, 101, 102, 0, 1, 118, 115, 2, 114, 0, 2, 17, 67, 17, 67, 0, 2, 103, 101, 110, 116, 0,
-			2, 106, 0, 2, 116, 97, 0, 2, 118, 101, 0, 2, 120, 0, 8, 2, 116, 105, 107, 0, 115, 101, 110, 116, 3, 111, 89, 6, 111, 50,
-			47, 0, 1, 104, 99, 2, 102, 3, 113, 0, 7, 6, 102, 0, 2, 102, 3, 0, 97, 99, 101, 3, 21, 0, 3, 83, 0, 97, 109, 105,
-			108, 106, 3, 83, 35, 65, 6, 109, 55, 57, 0, 111, 114, 109, 97, 100, 3, 83, 123, 51, 65, 35, 72, 0, 7, 6, 103, 0, 114, 111,
-			117, 112, 3, 21, 0, 2, 116, 3, 49, 0, 4, 1, 114, 111, 2, 97, 114, 3, 57, 0, 1, 114, 111, 2, 101, 110, 0, 2, 101, 0,
-			2, 105, 0, 2, 121, 0, 2, 195, 164, 0, 2, 195, 182, 0, 106, 0, 106, 111, 114, 3, 57, 126, 51, 0, 2, 110, 3, 68, 0, 4,
-			3, 81, 0, 1, 97, 2, 101, 0, 1, 97, 2, 105, 0, 1, 97, 108, 115, 0, 1, 105, 2, 105, 0, 1, 111, 108, 2, 105, 0, 1,
-			121, 2, 97, 0, 1, 121, 2, 101, 0, 1, 121, 2, 111, 0, 1, 164, 195, 108, 2, 101, 0, 1, 164, 195, 118, 0, 103, 0, 97, 114,
-			97, 110, 116, 3, 81, 2, 35, 51, 6, 35, 50, 47, 0, 117, 105, 100, 2, 101, 3, 81, 6, 35, 57, 72, 0, 97, 110, 105, 3, 81,
-			35, 50, 6, 109, 0, 97, 114, 97, 103, 101, 3, 81, 35, 51, 6, 122, 91, 0, 108, 195, 182, 109, 3, 81, 55, 119, 65, 0, 97, 116,
-			97, 3, 81, 122, 47, 35, 0, 7, 6, 104, 0, 2, 104, 3, 0, 101, 97, 100, 105, 110, 103, 3, 21, 0, 106, 3, 57, 0, 106, 195,
-			164, 108, 112, 3, 57, 111, 55, 48, 0, 3, 107, 0, 195, 182, 103, 3, 107, 118, 81, 0, 111, 110, 8, 2, 14, 128, 132, 131, 3, 107,
-			124, 68, 0, 7, 6, 105, 0, 4, 1, 108, 17, 67, 2, 107, 97, 17, 67, 3, 2, 109, 0, 2, 110, 102, 0, 2, 110, 115, 116, 114,
-			0, 4, 2, 110, 32, 3, 6, 108, 0, 2, 110, 101, 110, 0, 2, 110, 101, 114, 0, 4, 109, 97, 103, 3, 21, 0, 116, 101, 109, 0,
-			4, 3, 108, 0, 1, 99, 2, 115, 32, 0, 1, 108, 2, 107, 110, 97, 0, 1, 114, 100, 2, 118, 0, 1, 114, 107, 2, 115, 0, 1,
-			114, 107, 2, 115, 116, 0, 1, 114, 107, 115, 2, 118, 0, 1, 116, 2, 100, 0, 1, 116, 105, 114, 107, 2, 107, 32, 0, 1, 118, 2,
-			115, 110, 0, 8, 108, 102, 2, 107, 0, 4, 1, 99, 3, 109, 0, 1, 100, 2, 114, 0, 1, 107, 2, 103, 0, 1, 108, 2, 99, 0,
-			1, 114, 107, 2, 116, 101, 0, 1, 114, 107, 2, 116, 105, 0, 1, 115, 2, 116, 0, 1, 116, 2, 115, 0, 2, 17, 67, 17, 67, 0,
-			2, 103, 32, 0, 116, 117, 116, 2, 32, 3, 109, 47, 117, 47, 0, 107, 111, 110, 3, 109, 49, 6, 124, 50, 0, 98, 105, 108, 105, 3,
-			109, 71, 109, 55, 109, 0, 7, 6, 106, 0, 3, 57, 0, 97, 118, 97, 3, 57, 122, 84, 35, 0, 2, 117, 115, 116, 101, 114, 3, 127,
-			0, 111, 117, 2, 114, 3, 127, 125, 0, 7, 6, 107, 0, 4, 3, 49, 0, 8, 2, 105, 17, 67, 11, 0, 97, 116, 101, 103, 111, 114,
-			105, 3, 49, 35, 47, 111, 81, 4, 126, 51, 108, 0, 97, 108, 101, 110, 100, 3, 49, 35, 55, 6, 111, 50, 72, 0, 97, 114, 116, 97,
-			3, 49, 122, 51, 47, 35, 0, 111, 110, 116, 111, 114, 3, 49, 123, 50, 47, 6, 126, 51, 0, 111, 109, 109, 117, 110, 3, 49, 123, 65,
-			6, 117, 50, 0, 111, 109, 109, 117, 110, 105, 107, 97, 3, 49, 123, 65, 120, 50, 109, 49, 35, 0, 4, 2, 195, 164, 110, 100, 3, 97,
-			0, 2, 195, 164, 110, 110, 0, 2, 195, 164, 110, 116, 0, 2, 195, 182, 112, 0, 8, 2, 101, 0, 8, 2, 105, 0, 8, 2, 121, 0,
-			8, 2, 195, 164, 0, 8, 2, 195, 182, 0, 106, 0, 195, 164, 110, 115, 108, 3, 97, 111, 50, 89, 55, 0, 7, 6, 108, 0, 2, 108,
-			3, 0, 3, 55, 0, 195, 165, 103, 3, 55, 6, 124, 81, 0, 103, 2, 32, 3, 55, 57, 0, 105, 103, 101, 110, 3, 55, 109, 81, 111,
-			50, 0, 97, 103, 101, 114, 3, 55, 122, 81, 111, 51, 0, 106, 8, 3, 57, 0, 106, 117, 3, 57, 6, 117, 0, 7, 6, 109, 0, 2,
-			109, 3, 0, 101, 110, 117, 3, 21, 0, 3, 65, 0, 97, 114, 105, 101, 3, 65, 2, 35, 51, 6, 108, 0, 97, 114, 105, 97, 3, 65,
-			2, 35, 51, 6, 108, 35, 0, 101, 100, 108, 3, 65, 6, 110, 72, 55, 0, 195, 164, 110, 110, 105, 115, 107, 3, 65, 6, 111, 50, 109,
-			127, 4, 0, 111, 116, 111, 114, 101, 114, 3, 65, 6, 123, 47, 126, 51, 111, 51, 0, 111, 116, 111, 114, 3, 65, 6, 126, 47, 123, 51,
-			0, 97, 120, 105, 109, 101, 114, 97, 3, 65, 35, 49, 89, 108, 65, 6, 110, 51, 35, 0, 97, 103, 97, 3, 65, 35, 81, 35, 0, 97,
-			115, 107, 101, 114, 97, 3, 65, 35, 89, 49, 110, 51, 35, 0, 97, 115, 107, 101, 110, 3, 65, 35, 89, 49, 111, 50, 0, 97, 115, 107,
-			101, 114, 3, 65, 35, 89, 49, 111, 51, 0, 106, 117, 107, 3, 65, 57, 117, 49, 0, 105, 110, 105, 109, 101, 114, 97, 3, 65, 109, 50,
-			108, 65, 6, 110, 51, 35, 0, 101, 100, 98, 111, 114, 103, 3, 65, 110, 72, 71, 123, 51, 57, 0, 101, 100, 118, 101, 116, 3, 65, 110,
-			72, 84, 6, 110, 47, 0, 101, 110, 121, 3, 65, 111, 50, 6, 115, 0, 117, 115, 105, 107, 3, 65, 117, 89, 6, 108, 49, 0, 111, 98,
-			105, 108, 3, 65, 123, 71, 108, 55, 0, 111, 100, 101, 108, 3, 65, 123, 72, 6, 111, 55, 0, 111, 100, 101, 109, 3, 65, 123, 72, 110,
-			65, 0, 7, 6, 110, 0, 2, 110, 3, 0, 101, 116, 119, 111, 114, 107, 3, 21, 0, 3, 50, 0, 97, 118, 105, 103, 3, 50, 2, 35,
-			84, 2, 109, 81, 0, 97, 116, 117, 114, 3, 50, 6, 35, 47, 6, 117, 51, 0, 97, 108, 105, 3, 50, 35, 55, 109, 0, 103, 1, 117,
-			102, 2, 101, 114, 3, 50, 81, 0, 111, 114, 109, 97, 108, 3, 50, 123, 51, 65, 122, 55, 0, 4, 2, 107, 3, 68, 0, 103, 0, 7,
-			6, 111, 0, 4, 1, 102, 110, 105, 2, 114, 109, 97, 116, 105, 3, 2, 123, 0, 1, 107, 2, 108, 117, 0, 1, 110, 2, 118, 101, 108,
-			108, 0, 1, 112, 2, 108, 105, 115, 0, 1, 114, 112, 2, 98, 0, 1, 114, 112, 2, 99, 101, 110, 116, 0, 1, 114, 112, 2, 100, 0,
-			4, 1, 108, 2, 107, 3, 2, 125, 0, 1, 114, 112, 2, 99, 0, 1, 115, 2, 99, 105, 0, 4, 1, 98, 2, 120, 3, 6, 123, 0,
-			1, 102, 2, 114, 109, 0, 1, 107, 2, 112, 105, 0, 1, 108, 2, 103, 103, 0, 1, 110, 2, 114, 109, 0, 1, 115, 2, 114, 0, 99,
-			104, 3, 6, 123, 49, 0, 4, 1, 102, 2, 110, 3, 6, 124, 0, 1, 108, 2, 103, 0, 1, 108, 2, 118, 0, 2, 110, 105, 0, 4,
-			1, 107, 2, 107, 3, 6, 126, 0, 1, 108, 98, 2, 100, 0, 1, 109, 2, 116, 0, 4, 1, 17, 67, 2, 114, 115, 3, 123, 0, 1,
-			98, 2, 114, 116, 0, 1, 100, 2, 107, 0, 1, 100, 2, 110, 0, 1, 103, 2, 110, 0, 1, 103, 110, 2, 110, 0, 1, 107, 2, 110,
-			115, 0, 1, 107, 2, 114, 116, 0, 1, 107, 2, 114, 118, 0, 1, 108, 2, 110, 0, 1, 108, 108, 2, 110, 0, 1, 110, 2, 114, 32,
-			0, 1, 110, 110, 2, 110, 115, 0, 1, 112, 2, 112, 117, 0, 1, 112, 112, 2, 114, 116, 0, 1, 112, 115, 2, 114, 116, 0, 1, 114,
-			116, 114, 2, 110, 0, 1, 115, 2, 114, 32, 0, 1, 115, 115, 2, 110, 0, 1, 116, 2, 114, 32, 0, 1, 116, 115, 2, 114, 109, 0,
-			2, 17, 67, 17, 67, 0, 2, 98, 98, 0, 2, 99, 107, 0, 2, 100, 100, 0, 2, 102, 102, 0, 2, 108, 108, 0, 2, 109, 32, 0,
-			2, 109, 109, 0, 2, 112, 112, 0, 2, 114, 103, 0, 2, 114, 107, 0, 2, 114, 114, 0, 2, 115, 115, 0, 2, 116, 116, 0, 8, 2,
-			106, 0, 112, 101, 114, 97, 116, 3, 123, 48, 111, 51, 35, 47, 0, 106, 1, 114, 112, 3, 123, 127, 6, 0, 4, 1, 107, 2, 100, 3,
-			124, 0, 1, 107, 108, 2, 114, 0, 1, 112, 112, 117, 2, 114, 116, 0, 2, 114, 100, 101, 0, 4, 1, 103, 2, 114, 3, 125, 0, 2,
-			17, 67, 11, 0, 2, 110, 115, 0, 4, 3, 126, 0, 1, 98, 2, 107, 0, 1, 98, 2, 115, 116, 0, 1, 102, 2, 116, 98, 0, 1,
-			103, 2, 100, 0, 1, 114, 107, 2, 103, 0, 1, 114, 107, 2, 107, 0, 1, 114, 107, 2, 110, 0, 1, 114, 112, 2, 118, 0, 1, 115,
-			114, 2, 114, 100, 0, 2, 114, 17, 67, 0, 115, 112, 97, 114, 97, 116, 3, 126, 89, 48, 122, 51, 35, 47, 0, 7, 6, 112, 0, 2,
-			112, 3, 0, 3, 48, 0, 97, 107, 101, 116, 3, 48, 35, 49, 6, 110, 47, 0, 97, 114, 101, 110, 116, 101, 115, 3, 48, 35, 51, 13,
-			50, 47, 4, 110, 89, 0, 114, 105, 118, 97, 116, 3, 48, 51, 109, 84, 122, 47, 0, 105, 111, 110, 3, 48, 109, 38, 6, 126, 50, 0,
-			111, 116, 97, 116, 105, 115, 3, 48, 123, 47, 6, 122, 47, 109, 89, 0, 195, 165, 115, 116, 195, 165, 3, 48, 124, 89, 47, 124, 0, 7,
-			6, 113, 0, 2, 113, 3, 0, 3, 49, 0, 117, 3, 49, 58, 0, 7, 6, 114, 0, 4, 1, 114, 3, 0, 2, 116, 3, 0, 3, 51,
-			0, 101, 100, 105, 103, 101, 114, 3, 51, 2, 111, 72, 109, 127, 6, 110, 51, 0, 101, 115, 111, 114, 3, 51, 6, 110, 89, 123, 51, 0,
-			97, 100, 101, 114, 97, 3, 51, 35, 72, 6, 110, 51, 35, 0, 97, 102, 105, 107, 3, 51, 35, 83, 6, 108, 49, 0, 103, 2, 32, 3,
-			51, 57, 0, 105, 115, 107, 3, 51, 109, 89, 49, 0, 101, 103, 101, 108, 3, 51, 110, 81, 111, 55, 0, 101, 107, 111, 114, 100, 3, 51,
-			111, 49, 6, 124, 51, 72, 0, 117, 98, 114, 105, 107, 3, 51, 120, 71, 51, 6, 108, 49, 0, 115, 107, 2, 105, 3, 51, 127, 0, 115,
-			105, 2, 111, 3, 51, 127, 6, 0, 4, 115, 3, 93, 0, 115, 115, 0, 115, 107, 3, 93, 49, 0, 7, 6, 115, 0, 4, 101, 108, 101,
-			99, 116, 3, 21, 0, 119, 101, 100, 101, 110, 0, 4, 3, 89, 0, 1, 105, 102, 2, 107, 0, 1, 117, 102, 2, 107, 0, 2, 107, 105,
-			103, 0, 115, 0, 195, 164, 107, 101, 114, 104, 101, 116, 3, 89, 6, 113, 49, 13, 51, 107, 4, 110, 47, 0, 116, 195, 165, 116, 116, 3,
-			89, 47, 123, 47, 0, 112, 101, 108, 3, 89, 48, 110, 55, 0, 112, 101, 103, 108, 97, 3, 89, 48, 110, 81, 55, 35, 0, 112, 101, 103,
-			101, 108, 3, 89, 48, 110, 81, 111, 55, 0, 112, 97, 114, 97, 3, 89, 48, 122, 51, 35, 0, 107, 121, 112, 101, 3, 89, 49, 6, 35,
-			57, 48, 0, 107, 111, 108, 111, 114, 3, 89, 49, 126, 55, 123, 51, 0, 110, 101, 103, 108, 97, 3, 89, 50, 110, 81, 55, 35, 0, 108,
-			111, 103, 3, 89, 55, 6, 126, 81, 0, 106, 97, 99, 107, 3, 89, 57, 35, 49, 0, 118, 101, 114, 105, 103, 101, 3, 89, 84, 111, 51,
-			57, 111, 0, 118, 97, 114, 97, 3, 89, 84, 122, 51, 35, 0, 105, 111, 110, 105, 115, 116, 8, 3, 89, 108, 124, 50, 6, 109, 89, 47,
-			0, 101, 103, 108, 97, 3, 89, 110, 81, 55, 35, 0, 101, 103, 101, 108, 3, 89, 110, 81, 111, 55, 0, 195, 164, 103, 3, 89, 111, 57,
-			0, 101, 109, 101, 115, 116, 3, 89, 111, 65, 6, 111, 89, 47, 0, 101, 114, 118, 105, 99, 101, 3, 89, 118, 51, 84, 108, 89, 0, 99,
-			104, 3, 91, 0, 107, 106, 3, 97, 0, 4, 104, 8, 3, 127, 0, 106, 0, 107, 2, 101, 0, 107, 2, 105, 0, 107, 2, 121, 0, 107,
-			2, 195, 164, 0, 107, 2, 195, 182, 0, 116, 106, 0, 107, 195, 164, 114, 109, 3, 127, 6, 111, 51, 65, 0, 4, 105, 111, 2, 110, 3,
-			127, 6, 126, 0, 115, 105, 111, 2, 110, 0, 7, 6, 116, 0, 97, 115, 107, 3, 21, 0, 4, 3, 47, 0, 116, 0, 97, 108, 115, 121,
-			110, 116, 101, 115, 3, 47, 6, 122, 55, 89, 116, 50, 47, 4, 110, 89, 0, 97, 103, 105, 116, 3, 47, 6, 122, 81, 109, 47, 0, 116,
-			2, 17, 65, 3, 47, 12, 0, 97, 110, 103, 101, 110, 116, 3, 47, 35, 50, 57, 111, 50, 47, 0, 97, 98, 101, 108, 108, 3, 47, 35,
-			71, 6, 111, 55, 0, 101, 1, 17, 67, 10, 2, 32, 14, 128, 128, 130, 3, 47, 111, 0, 101, 107, 110, 105, 107, 3, 47, 111, 49, 50,
-			6, 108, 49, 0, 106, 3, 97, 0, 105, 2, 111, 110, 3, 127, 6, 0, 7, 6, 117, 0, 4, 1, 110, 105, 108, 2, 120, 3, 2, 120,
-			0, 2, 107, 116, 105, 0, 2, 110, 107, 17, 67, 0, 116, 109, 195, 164, 114, 107, 3, 6, 117, 47, 65, 13, 51, 49, 0, 112, 108, 111,
-			97, 100, 3, 21, 0, 4, 3, 117, 0, 1, 106, 2, 108, 0, 1, 106, 2, 110, 105, 0, 1, 106, 115, 2, 107, 0, 2, 116, 98, 0,
-			2, 116, 102, 0, 2, 116, 103, 0, 2, 116, 108, 0, 2, 116, 110, 0, 2, 116, 114, 0, 2, 116, 114, 0, 2, 116, 115, 0, 2, 116,
-			118, 0, 4, 1, 98, 2, 116, 105, 107, 3, 120, 0, 1, 116, 97, 100, 2, 109, 0, 1, 118, 2, 120, 0, 2, 17, 67, 17, 67, 0,
-			2, 110, 0, 2, 110, 103, 0, 1, 114, 2, 109, 32, 3, 120, 12, 0, 112, 112, 103, 101, 3, 120, 48, 57, 110, 0, 7, 6, 118, 0,
-			2, 118, 3, 0, 3, 84, 0, 97, 114, 97, 110, 100, 114, 97, 3, 84, 35, 51, 35, 50, 72, 51, 35, 0, 97, 108, 105, 3, 84, 35,
-			55, 109, 0, 101, 114, 107, 3, 84, 111, 51, 49, 0, 101, 114, 107, 116, 121, 103, 3, 84, 111, 51, 49, 47, 115, 81, 0, 97, 114, 97,
-			110, 3, 84, 122, 51, 35, 50, 0, 97, 114, 110, 3, 84, 122, 51, 50, 0, 7, 6, 119, 0, 4, 105, 110, 100, 111, 119, 3, 21, 0,
-			105, 114, 101, 0, 105, 115, 101, 0, 3, 84, 0, 7, 6, 120, 0, 2, 120, 3, 0, 3, 49, 89, 0, 7, 6, 121, 0, 1, 115, 2,
-			115, 3, 2, 116, 0, 4, 1, 116, 2, 100, 3, 6, 115, 0, 1, 116, 2, 103, 0, 4, 3, 115, 0, 1, 115, 2, 110, 115, 107, 97,
-			0, 2, 17, 67, 17, 67, 3, 116, 0, 7, 6, 122, 0, 122, 3, 88, 0, 3, 89, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3,
-			0, 4, 42, 42, 3, 0, 4, 45, 1, 45, 45, 3, 0, 46, 1, 46, 3, 0, 195, 169, 3, 6, 110, 0, 226, 130, 172, 3, 6, 111,
-			84, 51, 126, 0, 46, 2, 46, 3, 9, 0, 38, 3, 9, 6, 123, 49, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45,
-			1, 32, 17, 67, 2, 32, 15, 0, 42, 1, 42, 42, 2, 32, 3, 24, 0, 46, 3, 48, 6, 120, 68, 47, 0, 37, 3, 48, 51, 123,
-			89, 6, 111, 50, 47, 0, 43, 3, 48, 55, 120, 89, 0, 45, 8, 32, 2, 32, 15, 3, 65, 6, 108, 50, 120, 89, 0, 36, 3, 72,
-			6, 123, 55, 35, 51, 0, 47, 3, 89, 50, 6, 110, 72, 89, 47, 51, 111, 49, 0, 64, 3, 89, 50, 6, 122, 71, 111, 55, 122, 0,
-			42, 3, 127, 6, 113, 51, 50, 35, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts60 = FileInMemory_createWithData (9701, reinterpret_cast<const char *> (&espeakdata_dicts60_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/sv_dict", 
+		static unsigned char espeakdata_dicts61_data[9677] = {
+			0, 4, 0, 0, 186, 17, 0, 0, 0, 0, 0, 9, 67, 52, 83, 128, 65, 111, 50, 0, 10, 67, 32, 243, 128, 107, 125, 50, 0, 72,
+			0, 0, 5, 65, 4, 122, 0, 0, 0, 0, 0, 6, 65, 8, 71, 110, 0, 0, 10, 67, 44, 192, 82, 49, 55, 122, 51, 0, 0, 12,
+			67, 21, 64, 192, 110, 47, 110, 89, 6, 110, 0, 0, 0, 6, 65, 12, 89, 110, 0, 0, 0, 0, 0, 6, 65, 16, 72, 110, 0, 0,
+			7, 196, 45, 83, 132, 20, 72, 0, 10, 67, 44, 192, 83, 49, 55, 122, 89, 0, 6, 195, 16, 84, 211, 76, 10, 67, 76, 147, 128, 89,
+			109, 50, 0, 76, 0, 13, 4, 95, 100, 112, 116, 48, 6, 120, 68, 49, 47, 0, 0, 5, 65, 20, 110, 0, 0, 0, 0, 0, 6, 65,
+			24, 111, 83, 0, 0, 0, 0, 12, 68, 4, 228, 197, 76, 35, 50, 89, 110, 89, 0, 0, 6, 65, 28, 81, 110, 0, 0, 0, 11, 67,
+			44, 19, 128, 49, 6, 35, 50, 0, 72, 0, 0, 6, 65, 32, 107, 124, 0, 0, 0, 0, 0, 7, 65, 36, 108, 0, 72, 28, 5, 65,
+			36, 108, 0, 0, 9, 68, 25, 32, 77, 20, 21, 0, 47, 0, 0, 0, 6, 65, 40, 57, 108, 0, 0, 0, 0, 0, 6, 65, 44, 49,
+			124, 0, 0, 0, 0, 14, 69, 8, 245, 20, 20, 224, 71, 6, 123, 47, 111, 50, 0, 0, 13, 4, 95, 100, 105, 97, 6, 123, 65, 57,
+			117, 72, 0, 6, 65, 48, 111, 55, 0, 0, 15, 1, 49, 83, 6, 119, 93, 47, 112, 0, 82, 58, 32, 101, 32, 15, 1, 49, 83, 6,
+			119, 93, 47, 35, 0, 82, 58, 32, 97, 32, 0, 8, 67, 40, 21, 211, 21, 0, 47, 14, 1, 50, 35, 50, 72, 51, 35, 0, 82, 58,
+			32, 97, 32, 0, 14, 68, 57, 225, 207, 56, 50, 4, 124, 81, 123, 50, 0, 72, 15, 1, 51, 47, 51, 110, 72, 57, 112, 0, 82, 58,
+			32, 101, 32, 0, 15, 1, 52, 83, 57, 113, 51, 72, 112, 0, 82, 58, 32, 101, 32, 6, 65, 52, 111, 65, 0, 0, 14, 1, 53, 83,
+			111, 65, 47, 112, 0, 82, 58, 32, 101, 32, 0, 14, 1, 54, 127, 111, 47, 12, 112, 0, 82, 58, 32, 101, 32, 0, 14, 1, 55, 127,
+			120, 50, 72, 112, 0, 82, 58, 32, 101, 32, 0, 11, 70, 76, 241, 148, 92, 20, 133, 21, 0, 47, 16, 1, 56, 123, 47, 12, 123, 50,
+			72, 112, 0, 82, 58, 32, 101, 32, 6, 65, 56, 111, 50, 0, 0, 15, 1, 57, 50, 108, 123, 50, 72, 112, 0, 82, 58, 32, 101, 32,
+			0, 12, 68, 4, 228, 197, 72, 35, 50, 89, 110, 51, 0, 0, 0, 0, 0, 0, 0, 6, 65, 64, 48, 110, 0, 0, 0, 9, 67, 76,
+			145, 192, 89, 111, 57, 0, 0, 0, 6, 65, 68, 49, 117, 0, 0, 0, 0, 0, 6, 65, 72, 111, 51, 0, 0, 0, 8, 67, 88, 145,
+			87, 21, 0, 47, 0, 13, 4, 95, 100, 111, 116, 48, 6, 120, 68, 49, 47, 0, 0, 6, 65, 76, 111, 89, 0, 0, 0, 10, 67, 48,
+			241, 192, 55, 6, 126, 81, 0, 0, 0, 6, 65, 80, 47, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 88, 84, 110, 0, 0,
+			0, 0, 0, 12, 65, 92, 72, 6, 120, 71, 13, 55, 84, 110, 0, 0, 0, 0, 0, 7, 65, 96, 111, 49, 89, 0, 0, 14, 4, 95,
+			49, 77, 50, 65, 109, 55, 57, 6, 126, 50, 0, 0, 14, 4, 95, 49, 77, 51, 71, 109, 55, 57, 6, 126, 50, 0, 0, 10, 67, 77,
+			64, 68, 89, 47, 122, 72, 0, 0, 5, 65, 100, 115, 0, 0, 0, 0, 0, 9, 65, 104, 89, 6, 113, 47, 35, 0, 0, 0, 0, 0,
+			10, 67, 61, 32, 193, 123, 51, 49, 35, 0, 0, 0, 7, 195, 5, 69, 0, 72, 8, 0, 0, 10, 69, 25, 32, 77, 21, 48, 21, 0,
+			47, 0, 13, 72, 84, 228, 197, 48, 80, 212, 20, 64, 21, 0, 47, 11, 66, 12, 16, 89, 6, 109, 51, 49, 35, 0, 0, 11, 67, 80,
+			241, 211, 47, 6, 126, 81, 89, 0, 0, 0, 0, 0, 8, 67, 48, 147, 139, 21, 0, 47, 0, 0, 15, 69, 53, 228, 212, 20, 224, 65,
+			6, 123, 89, 47, 13, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 116, 108, 100, 47, 6, 109, 55, 72, 112, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 8, 66, 5, 96, 122, 84, 0, 72, 5, 194, 5, 96, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			15, 69, 76, 179, 204, 4, 224, 89, 49, 6, 126, 55, 35, 50, 0, 0, 0, 0, 9, 67, 8, 85, 0, 71, 110, 47, 0, 0, 0, 11,
+			70, 9, 35, 215, 76, 84, 128, 21, 0, 47, 0, 0, 12, 68, 17, 81, 197, 72, 72, 117, 81, 111, 51, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 71, 52, 84, 211, 20, 225, 197, 72, 21, 0, 47, 7, 196, 36, 227, 129, 56, 28, 0, 0, 11, 67, 25, 32, 77, 83, 51,
+			6, 35, 65, 0, 0, 0, 0, 0, 12, 71, 52, 144, 210, 61, 51, 198, 80, 21, 0, 47, 0, 9, 68, 36, 208, 71, 20, 21, 0, 47,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 109, 99, 110, 89, 47, 51, 6, 111, 49, 0, 0, 14, 68, 57, 225,
+			210, 4, 50, 6, 124, 81, 51, 35, 0, 72, 0, 12, 68, 29, 33, 80, 76, 81, 51, 110, 48, 89, 0, 0, 18, 70, 28, 83, 69, 57,
+			48, 77, 57, 111, 65, 6, 110, 50, 89, 35, 65, 0, 0, 0, 0, 0, 0, 11, 67, 21, 32, 78, 113, 51, 35, 50, 0, 76, 0, 0,
+			0, 0, 0, 10, 67, 76, 176, 64, 89, 49, 122, 0, 72, 10, 67, 76, 176, 64, 89, 49, 122, 0, 72, 0, 0, 0, 10, 67, 77, 67,
+			210, 89, 47, 126, 51, 0, 0, 0, 0, 0, 5, 194, 21, 32, 76, 0, 0, 0, 10, 67, 76, 17, 5, 89, 122, 72, 111, 0, 11, 67,
+			32, 17, 5, 107, 35, 72, 111, 0, 72, 0, 10, 67, 77, 64, 78, 89, 47, 122, 50, 0, 0, 10, 67, 21, 37, 0, 110, 51, 47, 0,
+			76, 0, 0, 0, 5, 194, 16, 80, 72, 0, 0, 10, 67, 88, 19, 20, 84, 122, 55, 47, 0, 0, 0, 0, 10, 67, 16, 85, 0, 72,
+			110, 47, 0, 72, 0, 10, 67, 76, 83, 148, 89, 110, 50, 47, 0, 0, 0, 5, 194, 17, 80, 72, 0, 9, 67, 88, 83, 64, 84, 111,
+			65, 0, 9, 67, 24, 83, 64, 83, 111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 25, 32, 77, 121, 64, 83, 51, 35, 65,
+			123, 47, 0, 0, 9, 3, 95, 35, 57, 47, 35, 71, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 76, 181, 76, 48, 80, 72, 0, 0,
+			6, 195, 76, 147, 129, 76, 0, 0, 9, 67, 21, 69, 0, 6, 111, 47, 0, 6, 195, 21, 69, 0, 72, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 196, 84, 225, 5, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 69, 25,
+			32, 77, 52, 80, 83, 51, 6, 35, 65, 111, 0, 6, 195, 89, 228, 148, 76, 0, 10, 67, 45, 96, 82, 49, 84, 122, 51, 0, 0, 13,
+			67, 25, 39, 142, 83, 51, 6, 124, 50, 0, 72, 28, 0, 6, 195, 88, 147, 12, 72, 7, 195, 80, 147, 12, 72, 28, 0, 0, 0, 0,
+			0, 0, 7, 66, 32, 16, 107, 122, 0, 0, 0, 11, 67, 21, 32, 84, 113, 51, 35, 47, 0, 76, 0, 0, 0, 0, 11, 70, 12, 129,
+			67, 44, 81, 0, 21, 0, 47, 0, 0, 12, 68, 4, 225, 1, 76, 35, 50, 72, 35, 89, 0, 0, 10, 67, 16, 147, 128, 72, 109, 50,
+			0, 76, 10, 67, 32, 19, 128, 107, 35, 50, 0, 72, 0, 0, 0, 0, 9, 67, 16, 19, 128, 72, 122, 50, 0, 0, 0, 0, 0, 9,
+			67, 64, 20, 128, 48, 122, 51, 0, 10, 67, 32, 20, 128, 107, 122, 51, 0, 72, 6, 195, 32, 20, 128, 72, 0, 0, 0, 0, 9, 67,
+			80, 20, 128, 47, 122, 51, 0, 0, 0, 0, 10, 67, 17, 32, 82, 72, 51, 122, 51, 0, 0, 10, 67, 20, 115, 129, 110, 81, 50, 35,
+			0, 6, 195, 16, 147, 129, 76, 6, 195, 52, 147, 129, 76, 0, 0, 0, 0, 0, 10, 69, 9, 85, 20, 60, 224, 21, 0, 47, 0, 8,
+			67, 72, 245, 211, 21, 0, 47, 10, 67, 17, 32, 83, 72, 51, 122, 89, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 29, 33, 80, 81,
+			51, 110, 48, 0, 0, 0, 0, 0, 0, 9, 68, 48, 85, 133, 48, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 67, 16, 145, 192, 72, 111, 57, 0, 9, 67, 4, 227, 133, 35, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 7, 66, 40,
+			16, 57, 122, 0, 0, 0, 0, 13, 4, 95, 111, 103, 111, 89, 84, 6, 35, 50, 89, 0, 0, 0, 0, 6, 195, 89, 228, 129, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 32, 20, 192, 21, 0, 47, 0, 0, 0, 0, 9, 67, 80, 20, 192, 47, 122, 89,
+			0, 0, 8, 67, 92, 244, 132, 21, 0, 47, 0, 0, 14, 4, 95, 98, 114, 118, 71, 51, 6, 110, 84, 108, 89, 0, 0, 0, 0, 0,
+			18, 4, 95, 97, 99, 50, 72, 6, 120, 71, 112, 55, 6, 122, 49, 117, 47, 0, 0, 11, 67, 88, 20, 133, 84, 122, 51, 111, 0, 72,
+			0, 0, 11, 70, 29, 32, 80, 32, 144, 211, 21, 0, 47, 0, 0, 0, 0, 12, 71, 84, 224, 200, 20, 50, 197, 16, 21, 0, 47, 8,
+			67, 16, 245, 0, 21, 0, 47, 12, 68, 77, 67, 210, 80, 89, 47, 126, 51, 47, 0, 0, 0, 8, 196, 20, 195, 5, 72, 72, 8, 0,
+			0, 0, 12, 68, 76, 17, 5, 76, 89, 122, 72, 111, 89, 0, 0, 0, 0, 0, 0, 0, 0, 9, 68, 20, 208, 73, 48, 21, 0, 47,
+			0, 10, 69, 12, 19, 131, 20, 192, 21, 0, 47, 8, 66, 20, 224, 111, 50, 0, 72, 0, 12, 3, 95, 51, 88, 47, 51, 6, 111, 47,
+			109, 0, 0, 13, 3, 95, 48, 67, 107, 6, 120, 50, 72, 51, 35, 0, 0, 0, 0, 9, 67, 17, 32, 64, 72, 51, 122, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 13, 68, 72, 17, 5, 56, 51, 122, 72, 2, 111, 50, 0, 0, 10, 69, 12, 243, 21, 52, 224, 21, 0, 47,
+			0, 0, 12, 3, 95, 49, 57, 50, 6, 109, 47, 123, 50, 0, 0, 12, 3, 95, 49, 56, 6, 122, 51, 47, 123, 50, 0, 0, 0, 0,
+			7, 195, 26, 132, 128, 72, 28, 0, 0, 0, 0, 11, 3, 95, 49, 49, 6, 111, 55, 84, 35, 0, 0, 11, 3, 95, 49, 48, 47, 6,
+			108, 38, 126, 0, 0, 13, 3, 95, 49, 51, 47, 51, 6, 111, 47, 123, 50, 0, 0, 11, 3, 95, 49, 50, 47, 6, 123, 55, 84, 0,
+			0, 13, 3, 95, 49, 53, 83, 6, 111, 65, 47, 123, 50, 0, 0, 14, 3, 95, 49, 52, 83, 57, 6, 126, 51, 47, 123, 50, 0, 0,
+			8, 67, 92, 149, 8, 21, 0, 47, 12, 3, 95, 49, 55, 127, 6, 120, 47, 123, 50, 0, 0, 14, 3, 95, 49, 54, 89, 6, 111, 49,
+			89, 47, 123, 50, 0, 0, 0, 11, 3, 95, 55, 88, 127, 6, 120, 47, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 67, 32, 85, 1, 107, 110, 47, 35, 0, 12, 4, 95, 97, 99, 117, 6, 122, 49, 117, 47, 0, 0, 0, 0, 0, 0, 0, 9, 67,
+			52, 21, 0, 65, 122, 47, 0, 0, 6, 195, 10, 132, 128, 72, 0, 0, 0, 15, 2, 49, 49, 111, 55, 83, 47, 112, 0, 82, 58, 32,
+			101, 32, 0, 16, 2, 49, 48, 47, 108, 123, 50, 72, 112, 0, 82, 58, 32, 101, 32, 0, 11, 3, 95, 50, 88, 97, 6, 117, 81, 123,
+			0, 0, 10, 69, 72, 80, 68, 21, 32, 21, 0, 47, 16, 2, 49, 50, 47, 123, 55, 83, 47, 112, 0, 82, 58, 32, 101, 32, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 20, 71, 28, 83, 69, 57, 48, 77, 80, 57, 111, 65, 6, 110, 50, 89, 35, 65, 47, 0, 0, 0, 0,
+			15, 3, 95, 63, 63, 89, 6, 116, 65, 71, 126, 55, 112, 50, 0, 0, 0, 0, 12, 3, 95, 52, 88, 83, 6, 119, 51, 47, 109, 0,
+			0, 12, 68, 32, 243, 143, 52, 107, 123, 50, 123, 65, 0, 0, 6, 195, 32, 19, 147, 76, 0, 0, 0, 0, 0, 0, 12, 3, 95, 53,
+			88, 83, 6, 111, 65, 47, 109, 0, 0, 0, 11, 4, 95, 114, 110, 103, 51, 6, 109, 68, 0, 0, 0, 0, 0, 0, 16, 69, 8, 85,
+			1, 49, 64, 71, 6, 111, 47, 6, 122, 55, 47, 0, 0, 13, 3, 95, 54, 88, 89, 6, 111, 49, 89, 47, 109, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 68, 53, 228, 212, 20, 65, 6, 123, 89, 47, 13, 0, 0, 0, 10, 3, 95, 56, 88,
+			6, 123, 47, 109, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 81, 0, 72, 28, 0, 0, 11, 3, 95, 57, 88, 50, 6, 109, 47, 109,
+			0, 0, 10, 67, 32, 83, 20, 107, 110, 55, 47, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 63, 65, 71, 6, 126, 49, 89, 47, 35,
+			84, 112, 50, 0, 0, 13, 68, 5, 34, 201, 88, 6, 35, 51, 49, 108, 84, 0, 7, 196, 20, 101, 5, 72, 28, 0, 0, 0, 0, 0,
+			0, 17, 4, 95, 115, 116, 107, 89, 50, 6, 110, 72, 89, 47, 51, 112, 49, 0, 0, 11, 70, 21, 132, 12, 61, 33, 82, 21, 0, 47,
+			0, 12, 68, 76, 243, 133, 56, 89, 124, 50, 111, 50, 0, 7, 66, 36, 224, 109, 50, 0, 0, 8, 67, 92, 80, 128, 21, 0, 47, 0,
+			0, 0, 10, 67, 77, 96, 82, 89, 84, 122, 51, 0, 0, 10, 69, 28, 243, 199, 48, 80, 21, 0, 47, 0, 0, 0, 0, 12, 67, 85,
+			48, 83, 117, 111, 89, 6, 122, 89, 0, 15, 69, 81, 33, 68, 40, 80, 47, 51, 6, 110, 72, 57, 112, 0, 7, 196, 52, 81, 1, 56,
+			8, 0, 0, 9, 134, 108, 195, 164, 110, 103, 115, 28, 0, 0, 0, 11, 67, 60, 50, 0, 6, 123, 49, 0, 72, 8, 0, 0, 0, 0,
+			0, 0, 0, 0, 12, 68, 4, 225, 197, 76, 35, 50, 57, 110, 89, 0, 0, 0, 19, 4, 95, 99, 105, 114, 89, 6, 109, 51, 49, 120,
+			65, 83, 55, 111, 49, 89, 0, 0, 6, 195, 161, 97, 82, 28, 10, 67, 52, 147, 128, 65, 109, 50, 0, 76, 0, 0, 0, 16, 4, 95,
+			48, 77, 50, 65, 109, 55, 57, 6, 126, 50, 111, 51, 0, 0, 9, 67, 61, 53, 0, 125, 89, 47, 0, 10, 67, 52, 19, 128, 65, 35,
+			50, 0, 72, 16, 4, 95, 48, 77, 51, 71, 109, 55, 57, 6, 126, 50, 111, 51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 47, 6, 117,
+			89, 111, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 195, 164, 110, 111, 50, 0, 72, 0, 0, 16, 4, 95, 108, 105, 103, 55,
+			6, 108, 81, 35, 47, 4, 117, 51, 0, 0, 0, 0, 14, 68, 57, 225, 207, 80, 50, 4, 124, 81, 123, 47, 0, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 12, 68, 4, 225, 197, 72, 35, 50, 57, 110, 51, 0, 0, 10, 67, 8, 244, 148, 71, 123, 51, 47, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 85, 49, 82, 21, 0, 47, 7, 66, 60, 96, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 67, 52, 145, 192, 65, 111, 57, 0, 0, 0, 0, 0, 8, 67, 60, 225, 64, 21, 0, 47, 0, 14, 4, 95, 99, 101, 100,
+			89, 6, 110, 72, 109, 55, 57, 0, 0, 0, 5, 194, 56, 144, 72, 0, 9, 67, 72, 17, 0, 51, 122, 72, 0, 0, 10, 67, 8, 245,
+			20, 71, 6, 125, 47, 0, 6, 195, 16, 149, 20, 76, 0, 11, 70, 16, 84, 203, 80, 244, 0, 21, 0, 47, 10, 3, 195, 164, 114, 6,
+			113, 51, 0, 72, 0, 0, 0, 0, 8, 67, 81, 32, 89, 21, 0, 47, 0, 0, 0, 13, 4, 95, 99, 97, 112, 89, 47, 6, 126, 51,
+			47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 67, 72, 80, 68, 21, 0, 47, 0, 0, 9, 68, 4, 67, 194, 20, 21, 0, 47, 0,
+			0, 0, 0, 0, 8, 67, 72, 245, 192, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 95, 195, 169,
+			43, 0, 0, 20, 8, 109, 111, 110, 101, 116, 195, 164, 114, 65, 4, 123, 50, 111, 47, 6, 113, 51, 0, 0, 0, 10, 69, 76, 52, 133,
+			20, 224, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 36, 229, 5, 72, 225, 84, 21, 0, 47, 0, 0, 0, 6, 195, 21,
+			32, 64, 76, 0, 11, 70, 52, 246, 137, 48, 192, 64, 21, 0, 47, 0, 0, 0, 8, 67, 80, 130, 83, 21, 0, 47, 0, 0, 0, 0,
+			0, 0, 0, 7, 66, 80, 16, 47, 122, 0, 0, 0, 0, 10, 67, 36, 227, 205, 109, 50, 123, 65, 0, 0, 0, 7, 195, 52, 245, 0,
+			72, 28, 0, 0, 0, 11, 70, 12, 243, 21, 52, 228, 192, 21, 0, 47, 10, 67, 20, 113, 78, 110, 81, 111, 50, 0, 0, 0, 0, 0,
+			0, 11, 67, 36, 64, 71, 109, 72, 4, 122, 81, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 103, 114, 118, 81, 51, 6, 122, 84,
+			0, 0, 0, 0, 0, 0, 0, 0, 13, 67, 57, 97, 1, 111, 50, 84, 110, 72, 110, 122, 0, 0, 0, 0, 0, 0, 7, 66, 56, 240,
+			21, 0, 47, 6, 194, 60, 208, 72, 8, 6, 194, 60, 208, 72, 28, 0, 0, 11, 67, 76, 86, 0, 89, 6, 111, 49, 89, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 32, 80, 68, 36, 225, 192, 21, 0, 47, 18, 8, 100,
+			195, 164, 114, 102, 195, 182, 114, 72, 6, 111, 51, 83, 118, 51, 0, 0, 9, 67, 60, 229, 0, 125, 50, 47, 0, 0, 0, 21, 72, 80,
+			244, 147, 16, 17, 197, 57, 48, 47, 6, 126, 91, 72, 122, 81, 111, 50, 89, 0, 0, 0, 0, 0, 10, 67, 4, 225, 197, 35, 50, 57,
+			110, 0, 0, 7, 196, 28, 83, 143, 52, 28, 0, 0, 0, 8, 67, 64, 17, 197, 21, 0, 47, 0, 0, 10, 67, 88, 17, 0, 84, 122,
+			72, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 76, 243, 64, 72, 8, 0, 0, 0, 0, 9, 67, 16, 83, 64, 72, 111, 65,
+			0, 0, 0, 0, 0, 0, 0, 17, 7, 116, 121, 118, 195, 164, 114, 114, 47, 2, 116, 84, 6, 113, 51, 0, 0, 7, 196, 88, 147, 12,
+			20, 72, 0, 0, 0, 0, 0, 10, 69, 60, 227, 9, 56, 80, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 80, 243,
+			84, 47, 6, 125, 65, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 77, 80, 141, 20, 229, 64, 21, 0, 47, 11, 70, 64, 20,
+			211, 92, 244, 132, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 69, 60, 97, 137, 12, 80, 21, 0, 47, 0, 0, 11,
+			67, 85, 48, 64, 117, 111, 89, 6, 122, 0, 0, 9, 68, 80, 16, 140, 20, 21, 0, 47, 14, 68, 8, 244, 132, 20, 71, 6, 126, 51,
+			72, 111, 0, 72, 0, 0, 0, 14, 69, 8, 20, 143, 12, 176, 71, 35, 51, 6, 123, 49, 0, 0, 0, 0, 0, 0, 0, 0, 9, 68,
+			48, 147, 139, 76, 21, 0, 47, 0, 9, 67, 32, 82, 128, 107, 111, 57, 0, 0, 0, 0, 0, 13, 68, 72, 17, 5, 72, 51, 122, 72,
+			2, 111, 51, 0, 0, 0, 0, 0, 9, 67, 76, 243, 128, 89, 124, 50, 0, 9, 67, 40, 19, 128, 57, 122, 50, 0, 0, 0, 0, 0,
+			10, 67, 16, 83, 128, 72, 111, 50, 0, 72, 0, 0, 0, 0, 8, 67, 28, 18, 77, 21, 0, 47, 9, 67, 64, 84, 128, 48, 113, 51,
+			0, 0, 11, 2, 95, 46, 48, 6, 120, 68, 49, 47, 0, 0, 0, 0, 10, 67, 88, 20, 128, 84, 122, 51, 0, 72, 9, 67, 24, 20,
+			128, 83, 122, 51, 0, 10, 67, 88, 20, 128, 84, 122, 51, 0, 72, 9, 2, 95, 51, 47, 51, 6, 110, 0, 0, 9, 2, 95, 50, 47,
+			84, 6, 124, 0, 0, 8, 2, 95, 49, 6, 111, 47, 0, 0, 9, 2, 95, 48, 50, 6, 123, 55, 0, 0, 8, 67, 56, 19, 69, 21,
+			0, 47, 8, 2, 95, 55, 127, 6, 117, 0, 0, 10, 2, 95, 54, 89, 6, 111, 49, 89, 0, 0, 9, 2, 95, 53, 83, 6, 111, 65,
+			0, 0, 17, 70, 65, 35, 199, 72, 19, 64, 48, 51, 125, 81, 51, 6, 35, 65, 0, 10, 2, 95, 52, 83, 6, 115, 51, 35, 0, 0,
+			0, 0, 9, 2, 95, 57, 50, 6, 108, 126, 0, 0, 9, 2, 95, 56, 6, 123, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 67, 40, 17, 192, 57, 122, 81, 0, 72, 0, 0, 17, 70,
+			80, 244, 147, 16, 17, 211, 47, 6, 126, 91, 72, 35, 81, 89, 0, 0, 0, 0, 0, 7, 195, 88, 145, 0, 72, 28, 0, 5, 194, 88,
+			144, 72, 0, 8, 197, 32, 83, 142, 21, 48, 76, 0, 6, 195, 76, 149, 20, 76, 6, 195, 52, 149, 20, 76, 0, 0, 0, 10, 69, 80,
+			16, 140, 21, 48, 21, 0, 47, 0, 0, 0, 0, 0, 0, 10, 135, 102, 97, 115, 116, 195, 164, 110, 8, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 16, 70, 77, 84, 193, 56, 224, 64, 89, 120, 89, 6, 35, 50, 35, 0, 0, 0, 0, 10, 67, 16, 17, 211, 72, 35, 49, 89,
+			0, 12, 4, 95, 104, 97, 99, 107, 6, 122, 49, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 70, 24,
+			148, 133, 24, 246, 0, 21, 0, 47, 14, 69, 4, 225, 18, 5, 48, 35, 50, 72, 51, 35, 89, 0, 0, 0, 0, 0, 19, 71, 80, 244,
+			147, 16, 17, 197, 56, 47, 6, 126, 91, 72, 122, 81, 111, 50, 0, 0, 0, 0, 0, 0, 14, 69, 77, 64, 68, 20, 224, 89, 47, 122,
+			72, 111, 50, 0, 0, 0, 0, 9, 67, 9, 32, 64, 71, 51, 122, 0, 0, 11, 70, 29, 32, 80, 32, 144, 192, 21, 0, 47, 0, 0,
+			0, 0, 0, 0, 0, 10, 67, 4, 228, 197, 35, 50, 89, 110, 0, 0, 0, 0, 13, 4, 95, 35, 51, 50, 71, 55, 6, 35, 68, 49,
+			0, 0, 0, 0, 0, 13, 68, 16, 84, 129, 76, 72, 110, 51, 35, 89, 0, 76, 0, 0, 0, 0, 6, 195, 89, 228, 128, 76, 0, 0,
+			8, 67, 20, 66, 84, 21, 0, 47, 16, 70, 77, 64, 68, 20, 228, 192, 89, 47, 122, 72, 111, 50, 89, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 11, 70, 48, 80, 86, 36, 225, 192, 21, 0, 47, 0, 0, 0, 0, 0, 0, 15, 70, 77, 84, 193, 56, 225,
+			64, 89, 120, 89, 6, 35, 50, 0, 9, 198, 9, 37, 75, 4, 65, 64, 72, 0, 0, 0, 11, 70, 32, 80, 68, 36, 225, 211, 21, 0,
+			47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 67, 20, 211, 212, 111, 65, 6, 126, 47, 0, 0, 0, 0, 0, 8, 67, 52,
+			18, 76, 21, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 6, 98, 195, 164, 115, 116, 101, 71, 6, 111, 89, 47, 111, 0, 0,
+			0, 0, 16, 70, 80, 244, 147, 16, 17, 192, 47, 6, 126, 91, 72, 122, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 8, 197, 9, 37, 75, 5, 32, 72, 0, 0, 0, 10, 67, 80, 243, 64, 47, 6, 125, 65, 0, 0, 0, 0, 0, 0,
+			0, 0, 5, 194, 65, 224, 72, 0, 0, 0, 0, 14, 5, 117, 115, 97, 58, 115, 117, 111, 89, 6, 122, 89, 0, 6, 194, 17, 224, 72,
+			28, 0, 0, 0, 14, 69, 29, 34, 80, 56, 16, 81, 51, 108, 48, 50, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 164, 0, 4, 1, 102, 102, 3, 6, 113, 0, 1, 110, 111, 105, 2, 114, 0, 1, 116, 2,
+			114, 0, 114, 108, 2, 100, 3, 6, 113, 51, 0, 4, 1, 110, 2, 116, 116, 3, 111, 0, 1, 118, 2, 120, 0, 2, 17, 67, 17, 67,
+			0, 4, 3, 113, 0, 1, 98, 2, 114, 0, 1, 102, 2, 114, 100, 0, 1, 107, 115, 2, 114, 103, 0, 1, 108, 2, 115, 110, 0, 1,
+			108, 2, 115, 116, 0, 1, 110, 2, 116, 0, 1, 114, 2, 107, 0, 1, 114, 116, 2, 100, 0, 1, 118, 2, 108, 107, 0, 1, 118, 2,
+			114, 100, 0, 2, 114, 0, 2, 114, 100, 0, 7, 6, 195, 165, 0, 1, 108, 2, 115, 115, 3, 6, 123, 0, 4, 1, 104, 2, 114, 3,
+			6, 124, 0, 1, 108, 2, 115, 0, 1, 114, 116, 2, 100, 0, 1, 118, 2, 114, 0, 4, 1, 104, 2, 108, 108, 3, 123, 0, 2, 17,
+			67, 11, 0, 2, 110, 103, 0, 4, 3, 124, 0, 1, 104, 2, 108, 0, 1, 107, 115, 2, 108, 0, 1, 109, 2, 108, 0, 1, 110, 2,
+			108, 0, 1, 114, 2, 107, 0, 2, 17, 67, 17, 67, 0, 7, 6, 195, 182, 0, 1, 102, 2, 114, 107, 3, 2, 119, 0, 4, 1, 102,
+			2, 114, 100, 3, 6, 118, 0, 1, 102, 102, 0, 1, 108, 2, 115, 110, 0, 1, 108, 2, 115, 116, 0, 2, 118, 114, 0, 4, 1, 114,
+			2, 109, 3, 6, 119, 0, 2, 17, 67, 17, 67, 0, 3, 118, 0, 7, 6, 97, 0, 4, 1, 107, 2, 116, 97, 3, 2, 35, 0, 1,
+			107, 105, 0, 1, 108, 112, 2, 110, 101, 114, 97, 0, 1, 110, 2, 116, 105, 0, 1, 112, 101, 2, 114, 0, 1, 115, 2, 116, 105, 0,
+			1, 116, 2, 116, 105, 0, 8, 2, 114, 116, 0, 110, 115, 1, 21, 2, 32, 3, 6, 35, 50, 89, 0, 4, 1, 102, 2, 114, 108, 3,
+			6, 122, 0, 1, 102, 2, 114, 116, 0, 1, 107, 105, 2, 110, 115, 0, 1, 110, 2, 108, 32, 0, 1, 116, 2, 108, 32, 0, 1, 116,
+			2, 108, 32, 0, 1, 116, 111, 116, 2, 108, 0, 4, 1, 10, 3, 35, 0, 1, 98, 0, 1, 98, 2, 107, 116, 101, 0, 1, 98, 2,
+			114, 11, 0, 1, 98, 98, 2, 114, 32, 0, 1, 100, 2, 100, 0, 1, 100, 2, 103, 11, 0, 1, 100, 2, 110, 0, 1, 100, 100, 2,
+			17, 67, 0, 1, 100, 110, 2, 114, 0, 1, 100, 112, 112, 2, 116, 0, 1, 103, 101, 2, 110, 0, 1, 103, 110, 2, 100, 0, 1, 103,
+			165, 195, 2, 110, 0, 1, 106, 2, 110, 0, 1, 107, 2, 110, 0, 1, 107, 2, 110, 105, 0, 1, 107, 2, 115, 32, 0, 1, 108, 2,
+			103, 103, 0, 1, 108, 101, 2, 100, 0, 1, 108, 103, 2, 100, 11, 0, 1, 108, 103, 2, 115, 11, 0, 1, 108, 107, 105, 2, 114, 32,
+			0, 1, 108, 108, 2, 100, 101, 0, 1, 108, 108, 101, 109, 2, 110, 0, 1, 109, 2, 106, 0, 1, 109, 2, 110, 0, 1, 109, 2, 116,
+			101, 114, 0, 1, 109, 114, 111, 102, 2, 116, 105, 0, 1, 110, 2, 100, 0, 1, 110, 110, 2, 110, 0, 1, 112, 2, 100, 32, 0, 1,
+			112, 2, 110, 101, 108, 0, 1, 114, 2, 98, 97, 0, 1, 114, 100, 2, 100, 0, 1, 114, 100, 2, 116, 0, 1, 114, 101, 2, 100, 0,
+			1, 114, 101, 2, 116, 0, 1, 114, 101, 2, 116, 0, 1, 114, 103, 2, 109, 0, 1, 114, 116, 115, 0, 1, 115, 2, 100, 0, 1, 115,
+			2, 109, 97, 17, 67, 0, 1, 115, 2, 115, 0, 1, 115, 107, 2, 109, 0, 1, 115, 115, 97, 0, 1, 115, 116, 2, 109, 0, 1, 116,
+			2, 103, 11, 0, 1, 116, 2, 108, 11, 0, 1, 116, 2, 110, 0, 1, 116, 97, 0, 1, 116, 115, 2, 116, 32, 0, 1, 118, 2, 114,
+			105, 97, 0, 1, 118, 115, 2, 114, 116, 0, 2, 17, 67, 11, 0, 2, 17, 67, 17, 67, 0, 2, 32, 0, 2, 98, 111, 0, 2, 100,
+			101, 0, 2, 114, 32, 0, 2, 114, 101, 0, 2, 114, 110, 97, 0, 2, 115, 32, 0, 2, 116, 32, 0, 2, 117, 116, 111, 0, 2, 118,
+			97, 0, 2, 120, 0, 8, 107, 2, 21, 0, 110, 97, 108, 121, 3, 35, 50, 35, 55, 115, 0, 114, 98, 101, 116, 3, 35, 51, 71, 110,
+			47, 0, 108, 107, 111, 104, 111, 108, 3, 35, 55, 49, 125, 107, 124, 55, 0, 108, 108, 118, 97, 114, 3, 35, 55, 55, 84, 122, 51, 0,
+			109, 101, 114, 105, 107, 3, 35, 65, 111, 51, 109, 49, 0, 103, 101, 114, 97, 3, 35, 81, 110, 51, 35, 0, 115, 116, 3, 35, 89, 47,
+			0, 4, 3, 122, 0, 1, 98, 2, 107, 0, 1, 98, 2, 114, 0, 1, 98, 2, 114, 32, 0, 1, 100, 2, 103, 0, 1, 102, 2, 114,
+			101, 110, 0, 1, 107, 2, 107, 0, 1, 107, 115, 2, 100, 97, 0, 1, 107, 115, 2, 100, 101, 0, 1, 107, 115, 2, 112, 0, 1, 108,
+			2, 103, 0, 1, 108, 2, 114, 115, 0, 1, 108, 98, 2, 100, 0, 1, 108, 103, 2, 100, 0, 1, 108, 107, 2, 114, 0, 1, 108, 112,
+			109, 101, 120, 2, 114, 0, 1, 109, 111, 2, 116, 0, 1, 109, 115, 2, 114, 116, 0, 1, 114, 2, 116, 0, 1, 114, 100, 101, 2, 103,
+			0, 1, 114, 100, 101, 2, 114, 0, 1, 114, 100, 105, 0, 1, 115, 2, 107, 101, 0, 1, 115, 2, 107, 110, 0, 1, 115, 2, 107, 115,
+			0, 1, 116, 2, 103, 0, 1, 116, 2, 108, 17, 67, 0, 1, 116, 2, 108, 115, 0, 1, 116, 101, 114, 2, 103, 0, 1, 116, 108, 2,
+			116, 0, 1, 116, 108, 101, 100, 0, 1, 116, 110, 101, 2, 114, 0, 1, 116, 115, 2, 114, 116, 0, 1, 116, 116, 2, 103, 97, 0, 1,
+			116, 116, 2, 103, 101, 116, 0, 1, 116, 116, 2, 103, 105, 116, 0, 1, 118, 2, 108, 100, 0, 1, 118, 2, 108, 102, 0, 1, 118, 2,
+			114, 100, 0, 1, 118, 115, 2, 114, 0, 1, 118, 115, 110, 97, 2, 114, 0, 2, 114, 110, 0, 2, 114, 116, 32, 0, 2, 118, 98, 0,
+			2, 118, 100, 0, 2, 118, 103, 0, 2, 118, 115, 0, 8, 98, 2, 107, 0, 8, 107, 115, 2, 100, 0, 8, 108, 103, 2, 115, 0, 8,
+			118, 2, 110, 108, 0, 118, 116, 97, 8, 3, 122, 84, 47, 122, 0, 118, 103, 101, 8, 3, 122, 84, 57, 6, 110, 0, 117, 8, 2, 17,
+			67, 3, 123, 0, 117, 1, 104, 99, 2, 17, 67, 17, 67, 3, 124, 0, 7, 6, 98, 0, 2, 98, 3, 0, 3, 71, 0, 101, 116, 97,
+			108, 3, 71, 2, 111, 47, 6, 122, 55, 0, 114, 101, 100, 98, 97, 110, 100, 3, 71, 51, 110, 72, 71, 35, 50, 72, 0, 101, 103, 114,
+			105, 112, 3, 71, 111, 81, 51, 6, 108, 48, 0, 101, 103, 114, 97, 118, 3, 71, 111, 81, 51, 122, 84, 0, 101, 118, 97, 107, 110, 3,
+			71, 111, 84, 122, 49, 50, 0, 101, 115, 108, 97, 103, 3, 71, 111, 89, 55, 6, 122, 81, 0, 101, 115, 108, 97, 103, 116, 97, 3, 71,
+			111, 89, 55, 6, 122, 81, 47, 122, 0, 7, 6, 99, 0, 4, 108, 105, 99, 107, 3, 21, 0, 111, 109, 112, 117, 116, 101, 114, 0, 4,
+			3, 49, 0, 107, 0, 107, 2, 17, 65, 3, 49, 12, 0, 4, 99, 3, 49, 89, 0, 99, 2, 17, 65, 0, 4, 2, 101, 3, 89, 0,
+			2, 105, 0, 2, 121, 0, 2, 195, 164, 0, 2, 195, 182, 0, 104, 3, 91, 0, 104, 2, 101, 102, 3, 127, 0, 7, 6, 100, 0, 2,
+			100, 3, 0, 4, 101, 115, 105, 103, 110, 3, 21, 0, 111, 119, 110, 108, 111, 97, 100, 0, 106, 117, 3, 57, 6, 117, 0, 106, 117, 110,
+			103, 3, 57, 6, 120, 68, 0, 3, 72, 0, 97, 116, 111, 114, 101, 114, 3, 72, 35, 47, 6, 126, 51, 111, 51, 0, 114, 111, 103, 101,
+			110, 3, 72, 51, 124, 81, 111, 50, 0, 114, 111, 103, 101, 114, 3, 72, 51, 124, 81, 111, 51, 0, 105, 115, 107, 101, 3, 72, 109, 89,
+			49, 111, 0, 117, 109, 3, 72, 120, 65, 0, 97, 116, 97, 3, 72, 122, 47, 35, 0, 97, 116, 97, 98, 97, 115, 3, 72, 122, 47, 35,
+			71, 122, 89, 0, 97, 116, 111, 114, 3, 72, 122, 47, 123, 51, 0, 97, 103, 108, 105, 103, 3, 72, 122, 81, 55, 109, 81, 0, 97, 103,
+			101, 110, 3, 72, 122, 81, 111, 50, 0, 7, 6, 101, 0, 4, 1, 10, 3, 2, 111, 0, 1, 10, 2, 32, 0, 1, 98, 2, 102, 0,
+			1, 98, 2, 103, 0, 1, 98, 2, 104, 0, 1, 98, 2, 107, 0, 1, 98, 2, 108, 0, 1, 98, 2, 114, 0, 1, 98, 2, 115, 0,
+			1, 98, 2, 116, 0, 1, 98, 2, 118, 0, 1, 100, 2, 108, 115, 101, 0, 1, 103, 2, 110, 0, 1, 112, 109, 2, 108, 0, 1, 112,
+			115, 2, 99, 0, 1, 114, 2, 103, 0, 1, 114, 2, 116, 117, 114, 0, 1, 114, 112, 2, 99, 0, 1, 114, 112, 2, 110, 0, 1, 115,
+			2, 107, 0, 1, 115, 2, 112, 0, 2, 120, 101, 109, 112, 0, 116, 1, 10, 2, 32, 14, 128, 128, 130, 3, 2, 111, 47, 0, 110, 1,
+			10, 2, 32, 3, 2, 111, 50, 0, 110, 115, 1, 10, 2, 32, 3, 2, 111, 50, 89, 0, 114, 1, 10, 2, 32, 3, 2, 111, 51, 0,
+			115, 1, 10, 2, 32, 3, 2, 111, 89, 0, 110, 115, 1, 114, 101, 3, 6, 35, 50, 89, 0, 1, 116, 115, 2, 109, 17, 67, 3, 6,
+			110, 0, 107, 111, 110, 111, 109, 3, 6, 111, 49, 126, 50, 4, 123, 12, 65, 0, 110, 115, 1, 114, 101, 118, 182, 195, 3, 6, 111, 50,
+			89, 0, 108, 101, 107, 3, 6, 111, 55, 111, 49, 0, 109, 98, 101, 114, 3, 6, 111, 65, 71, 111, 51, 0, 115, 112, 101, 97, 107, 3,
+			21, 0, 4, 3, 110, 0, 1, 99, 2, 114, 0, 1, 100, 2, 108, 110, 0, 1, 100, 2, 108, 115, 0, 1, 100, 2, 108, 116, 0, 1,
+			100, 2, 108, 118, 0, 1, 100, 2, 114, 97, 0, 1, 102, 2, 114, 97, 0, 1, 103, 2, 110, 111, 109, 0, 1, 103, 2, 114, 97, 0,
+			1, 104, 2, 116, 101, 110, 0, 1, 104, 103, 2, 116, 0, 1, 104, 121, 110, 2, 116, 0, 1, 108, 2, 100, 97, 0, 1, 108, 2, 100,
+			110, 0, 1, 108, 2, 114, 97, 0, 1, 108, 2, 116, 97, 0, 1, 109, 2, 100, 100, 101, 0, 1, 109, 2, 100, 101, 108, 0, 1, 109,
+			2, 114, 97, 0, 1, 110, 2, 100, 115, 0, 1, 110, 2, 114, 97, 0, 1, 114, 2, 100, 110, 0, 1, 114, 2, 114, 97, 0, 1, 114,
+			2, 116, 97, 0, 1, 114, 98, 2, 118, 0, 1, 114, 116, 120, 2, 109, 0, 1, 115, 2, 114, 97, 0, 1, 116, 2, 114, 97, 0, 1,
+			116, 105, 2, 116, 0, 1, 116, 105, 2, 116, 32, 0, 1, 116, 111, 105, 108, 2, 107, 0, 1, 116, 115, 2, 107, 0, 1, 116, 115, 121,
+			2, 109, 0, 1, 118, 2, 107, 0, 1, 118, 2, 116, 97, 0, 2, 110, 98, 97, 114, 0, 2, 110, 108, 105, 0, 2, 114, 105, 110, 0,
+			2, 114, 115, 97, 116, 116, 0, 2, 114, 115, 195, 164, 0, 8, 104, 2, 116, 97, 0, 116, 1, 104, 2, 32, 3, 110, 47, 0, 110, 104,
+			101, 116, 3, 110, 50, 107, 110, 47, 0, 4, 1, 97, 107, 2, 108, 3, 111, 0, 1, 98, 2, 108, 32, 0, 1, 100, 2, 98, 97, 116,
+			0, 1, 100, 2, 99, 0, 1, 100, 101, 109, 2, 108, 0, 1, 104, 2, 109, 0, 1, 109, 2, 110, 121, 0, 1, 109, 2, 116, 111, 100,
+			0, 1, 112, 2, 100, 97, 0, 1, 112, 2, 114, 105, 0, 1, 114, 2, 99, 101, 0, 1, 114, 2, 100, 97, 107, 0, 1, 114, 2, 115,
+			117, 108, 0, 1, 114, 2, 115, 117, 114, 0, 1, 116, 2, 108, 101, 102, 0, 1, 118, 115, 2, 114, 0, 2, 17, 67, 17, 67, 0, 2,
+			103, 101, 110, 116, 0, 2, 106, 0, 2, 116, 97, 0, 2, 118, 101, 0, 2, 120, 0, 8, 2, 116, 105, 107, 0, 115, 101, 110, 116, 3,
+			111, 89, 6, 111, 50, 47, 0, 1, 104, 99, 2, 102, 3, 113, 0, 7, 6, 102, 0, 2, 102, 3, 0, 97, 99, 101, 3, 21, 0, 3,
+			83, 0, 97, 109, 105, 108, 106, 3, 83, 35, 65, 6, 109, 55, 57, 0, 111, 114, 109, 97, 100, 3, 83, 123, 51, 65, 35, 72, 0, 7,
+			6, 103, 0, 114, 111, 117, 112, 3, 21, 0, 2, 116, 3, 49, 0, 4, 1, 114, 111, 2, 97, 114, 3, 57, 0, 1, 114, 111, 2, 101,
+			110, 0, 2, 101, 0, 2, 105, 0, 2, 121, 0, 2, 195, 164, 0, 2, 195, 182, 0, 106, 0, 106, 111, 114, 3, 57, 126, 51, 0, 2,
+			110, 3, 68, 0, 4, 3, 81, 0, 1, 97, 2, 101, 0, 1, 97, 2, 105, 0, 1, 97, 108, 115, 0, 1, 105, 2, 105, 0, 1, 111,
+			108, 2, 105, 0, 1, 121, 2, 97, 0, 1, 121, 2, 101, 0, 1, 121, 2, 111, 0, 1, 164, 195, 108, 2, 101, 0, 1, 164, 195, 118,
+			0, 103, 0, 97, 114, 97, 110, 116, 3, 81, 2, 35, 51, 6, 35, 50, 47, 0, 117, 105, 100, 2, 101, 3, 81, 6, 35, 57, 72, 0,
+			97, 110, 105, 3, 81, 35, 50, 6, 109, 0, 97, 114, 97, 103, 101, 3, 81, 35, 51, 6, 122, 91, 0, 108, 195, 182, 109, 3, 81, 55,
+			119, 65, 0, 97, 116, 97, 3, 81, 122, 47, 35, 0, 7, 6, 104, 0, 2, 104, 3, 0, 101, 97, 100, 105, 110, 103, 3, 21, 0, 106,
+			3, 57, 0, 106, 195, 164, 108, 112, 3, 57, 111, 55, 48, 0, 3, 107, 0, 195, 182, 103, 3, 107, 118, 81, 0, 111, 110, 8, 2, 14,
+			128, 132, 131, 3, 107, 124, 68, 0, 7, 6, 105, 0, 4, 1, 108, 17, 67, 2, 107, 97, 17, 67, 3, 2, 109, 0, 2, 110, 102, 0,
+			2, 110, 115, 116, 114, 0, 4, 2, 110, 32, 3, 6, 108, 0, 2, 110, 101, 110, 0, 2, 110, 101, 114, 0, 4, 109, 97, 103, 3, 21,
+			0, 116, 101, 109, 0, 4, 3, 108, 0, 1, 99, 2, 115, 32, 0, 1, 108, 2, 107, 110, 97, 0, 1, 114, 100, 2, 118, 0, 1, 114,
+			107, 2, 115, 0, 1, 114, 107, 2, 115, 116, 0, 1, 114, 107, 115, 2, 118, 0, 1, 116, 2, 100, 0, 1, 116, 105, 114, 107, 2, 107,
+			32, 0, 1, 118, 2, 115, 110, 0, 8, 108, 102, 2, 107, 0, 4, 1, 99, 3, 109, 0, 1, 100, 2, 114, 0, 1, 107, 2, 103, 0,
+			1, 108, 2, 99, 0, 1, 114, 107, 2, 116, 101, 0, 1, 114, 107, 2, 116, 105, 0, 1, 115, 2, 116, 0, 1, 116, 2, 115, 0, 2,
+			17, 67, 17, 67, 0, 2, 103, 32, 0, 116, 117, 116, 2, 32, 3, 109, 47, 117, 47, 0, 107, 111, 110, 3, 109, 49, 6, 124, 50, 0,
+			98, 105, 108, 105, 3, 109, 71, 109, 55, 109, 0, 7, 6, 106, 0, 3, 57, 0, 97, 118, 97, 3, 57, 122, 84, 35, 0, 2, 117, 115,
+			116, 101, 114, 3, 127, 0, 111, 117, 2, 114, 3, 127, 125, 0, 7, 6, 107, 0, 4, 3, 49, 0, 8, 2, 105, 17, 67, 11, 0, 97,
+			116, 101, 103, 111, 114, 105, 3, 49, 35, 47, 111, 81, 4, 126, 51, 108, 0, 97, 108, 101, 110, 100, 3, 49, 35, 55, 6, 111, 50, 72,
+			0, 97, 114, 116, 97, 3, 49, 122, 51, 47, 35, 0, 111, 110, 116, 111, 114, 3, 49, 123, 50, 47, 6, 126, 51, 0, 111, 109, 109, 117,
+			110, 3, 49, 123, 65, 6, 117, 50, 0, 111, 109, 109, 117, 110, 105, 107, 97, 3, 49, 123, 65, 120, 50, 109, 49, 35, 0, 4, 2, 195,
+			164, 110, 100, 3, 97, 0, 2, 195, 164, 110, 110, 0, 2, 195, 164, 110, 116, 0, 2, 195, 182, 112, 0, 8, 2, 101, 0, 8, 2, 105,
+			0, 8, 2, 121, 0, 8, 2, 195, 164, 0, 8, 2, 195, 182, 0, 106, 0, 195, 164, 110, 115, 108, 3, 97, 111, 50, 89, 55, 0, 7,
+			6, 108, 0, 2, 108, 3, 0, 3, 55, 0, 195, 165, 103, 3, 55, 6, 124, 81, 0, 103, 2, 32, 3, 55, 57, 0, 105, 103, 101, 110,
+			3, 55, 109, 81, 111, 50, 0, 97, 103, 101, 114, 3, 55, 122, 81, 111, 51, 0, 106, 8, 3, 57, 0, 106, 117, 3, 57, 6, 117, 0,
+			7, 6, 109, 0, 2, 109, 3, 0, 101, 110, 117, 3, 21, 0, 3, 65, 0, 97, 114, 105, 101, 3, 65, 2, 35, 51, 6, 108, 0, 97,
+			114, 105, 97, 3, 65, 2, 35, 51, 6, 108, 35, 0, 101, 100, 108, 3, 65, 6, 110, 72, 55, 0, 195, 164, 110, 110, 105, 115, 107, 3,
+			65, 6, 111, 50, 109, 127, 4, 0, 111, 116, 111, 114, 101, 114, 3, 65, 6, 123, 47, 126, 51, 111, 51, 0, 111, 116, 111, 114, 3, 65,
+			6, 126, 47, 123, 51, 0, 97, 120, 105, 109, 101, 114, 97, 3, 65, 35, 49, 89, 108, 65, 6, 110, 51, 35, 0, 97, 103, 97, 3, 65,
+			35, 81, 35, 0, 97, 115, 107, 101, 114, 97, 3, 65, 35, 89, 49, 110, 51, 35, 0, 97, 115, 107, 101, 110, 3, 65, 35, 89, 49, 111,
+			50, 0, 97, 115, 107, 101, 114, 3, 65, 35, 89, 49, 111, 51, 0, 106, 117, 107, 3, 65, 57, 117, 49, 0, 105, 110, 105, 109, 101, 114,
+			97, 3, 65, 109, 50, 108, 65, 6, 110, 51, 35, 0, 101, 100, 98, 111, 114, 103, 3, 65, 110, 72, 71, 123, 51, 57, 0, 101, 100, 118,
+			101, 116, 3, 65, 110, 72, 84, 6, 110, 47, 0, 101, 110, 121, 3, 65, 111, 50, 6, 115, 0, 117, 115, 105, 107, 3, 65, 117, 89, 6,
+			108, 49, 0, 111, 98, 105, 108, 3, 65, 123, 71, 108, 55, 0, 111, 100, 101, 108, 3, 65, 123, 72, 6, 111, 55, 0, 111, 100, 101, 109,
+			3, 65, 123, 72, 110, 65, 0, 7, 6, 110, 0, 2, 110, 3, 0, 101, 116, 119, 111, 114, 107, 3, 21, 0, 3, 50, 0, 97, 118, 105,
+			103, 3, 50, 2, 35, 84, 2, 109, 81, 0, 97, 116, 117, 114, 3, 50, 6, 35, 47, 6, 117, 51, 0, 97, 108, 105, 3, 50, 35, 55,
+			109, 0, 103, 1, 117, 102, 2, 101, 114, 3, 50, 81, 0, 111, 114, 109, 97, 108, 3, 50, 123, 51, 65, 122, 55, 0, 4, 2, 107, 3,
+			68, 0, 103, 0, 7, 6, 111, 0, 4, 1, 102, 110, 105, 2, 114, 109, 97, 116, 105, 3, 2, 123, 0, 1, 107, 2, 108, 117, 0, 1,
+			110, 2, 118, 101, 108, 108, 0, 1, 112, 2, 108, 105, 115, 0, 1, 114, 112, 2, 98, 0, 1, 114, 112, 2, 99, 101, 110, 116, 0, 1,
+			114, 112, 2, 100, 0, 4, 1, 108, 2, 107, 3, 2, 125, 0, 1, 114, 112, 2, 99, 0, 1, 115, 2, 99, 105, 0, 4, 1, 98, 2,
+			120, 3, 6, 123, 0, 1, 102, 2, 114, 109, 0, 1, 107, 2, 112, 105, 0, 1, 108, 2, 103, 103, 0, 1, 110, 2, 114, 109, 0, 1,
+			115, 2, 114, 0, 99, 104, 3, 6, 123, 49, 0, 4, 1, 102, 2, 110, 3, 6, 124, 0, 1, 108, 2, 103, 0, 1, 108, 2, 118, 0,
+			2, 110, 105, 0, 4, 1, 107, 2, 107, 3, 6, 126, 0, 1, 108, 98, 2, 100, 0, 1, 109, 2, 116, 0, 4, 1, 17, 67, 2, 114,
+			115, 3, 123, 0, 1, 98, 2, 114, 116, 0, 1, 100, 2, 107, 0, 1, 100, 2, 110, 0, 1, 103, 2, 110, 0, 1, 103, 110, 2, 110,
+			0, 1, 107, 2, 110, 115, 0, 1, 107, 2, 114, 116, 0, 1, 107, 2, 114, 118, 0, 1, 108, 2, 110, 0, 1, 108, 108, 2, 110, 0,
+			1, 110, 2, 114, 32, 0, 1, 110, 110, 2, 110, 115, 0, 1, 112, 2, 112, 117, 0, 1, 112, 112, 2, 114, 116, 0, 1, 112, 115, 2,
+			114, 116, 0, 1, 114, 116, 114, 2, 110, 0, 1, 115, 2, 114, 32, 0, 1, 115, 115, 2, 110, 0, 1, 116, 2, 114, 32, 0, 1, 116,
+			115, 2, 114, 109, 0, 2, 17, 67, 17, 67, 0, 2, 98, 98, 0, 2, 99, 107, 0, 2, 100, 100, 0, 2, 102, 102, 0, 2, 108, 108,
+			0, 2, 109, 32, 0, 2, 109, 109, 0, 2, 112, 112, 0, 2, 114, 103, 0, 2, 114, 107, 0, 2, 114, 114, 0, 2, 115, 115, 0, 2,
+			116, 116, 0, 8, 2, 106, 0, 112, 101, 114, 97, 116, 3, 123, 48, 111, 51, 35, 47, 0, 106, 1, 114, 112, 3, 123, 127, 6, 0, 4,
+			1, 107, 2, 100, 3, 124, 0, 1, 107, 108, 2, 114, 0, 1, 112, 112, 117, 2, 114, 116, 0, 2, 114, 100, 101, 0, 4, 1, 103, 2,
+			114, 3, 125, 0, 2, 17, 67, 11, 0, 2, 110, 115, 0, 4, 3, 126, 0, 1, 98, 2, 107, 0, 1, 98, 2, 115, 116, 0, 1, 102,
+			2, 116, 98, 0, 1, 103, 2, 100, 0, 1, 114, 107, 2, 103, 0, 1, 114, 107, 2, 107, 0, 1, 114, 107, 2, 110, 0, 1, 114, 112,
+			2, 118, 0, 1, 115, 114, 2, 114, 100, 0, 2, 114, 17, 67, 0, 115, 112, 97, 114, 97, 116, 3, 126, 89, 48, 122, 51, 35, 47, 0,
+			7, 6, 112, 0, 2, 112, 3, 0, 3, 48, 0, 97, 107, 101, 116, 3, 48, 35, 49, 6, 110, 47, 0, 97, 114, 101, 110, 116, 101, 115,
+			3, 48, 35, 51, 13, 50, 47, 4, 110, 89, 0, 114, 105, 118, 97, 116, 3, 48, 51, 109, 84, 122, 47, 0, 105, 111, 110, 3, 48, 109,
+			38, 6, 126, 50, 0, 111, 116, 97, 116, 105, 115, 3, 48, 123, 47, 6, 122, 47, 109, 89, 0, 195, 165, 115, 116, 195, 165, 3, 48, 124,
+			89, 47, 124, 0, 7, 6, 113, 0, 2, 113, 3, 0, 3, 49, 0, 117, 3, 49, 58, 0, 7, 6, 114, 0, 4, 1, 114, 3, 0, 2,
+			116, 3, 0, 3, 51, 0, 101, 100, 105, 103, 101, 114, 3, 51, 2, 111, 72, 109, 127, 6, 110, 51, 0, 101, 115, 111, 114, 3, 51, 6,
+			110, 89, 123, 51, 0, 97, 100, 101, 114, 97, 3, 51, 35, 72, 6, 110, 51, 35, 0, 97, 102, 105, 107, 3, 51, 35, 83, 6, 108, 49,
+			0, 103, 2, 32, 3, 51, 57, 0, 105, 115, 107, 3, 51, 109, 89, 49, 0, 101, 103, 101, 108, 3, 51, 110, 81, 111, 55, 0, 101, 107,
+			111, 114, 100, 3, 51, 111, 49, 6, 124, 51, 72, 0, 117, 98, 114, 105, 107, 3, 51, 120, 71, 51, 6, 108, 49, 0, 115, 107, 2, 105,
+			3, 51, 127, 0, 115, 105, 2, 111, 3, 51, 127, 6, 0, 4, 115, 3, 93, 0, 115, 115, 0, 115, 107, 3, 93, 49, 0, 7, 6, 115,
+			0, 4, 101, 108, 101, 99, 116, 3, 21, 0, 119, 101, 100, 101, 110, 0, 4, 3, 89, 0, 1, 105, 102, 2, 107, 0, 1, 117, 102, 2,
+			107, 0, 2, 107, 105, 103, 0, 115, 0, 195, 164, 107, 101, 114, 104, 101, 116, 3, 89, 6, 113, 49, 13, 51, 107, 4, 110, 47, 0, 116,
+			195, 165, 116, 116, 3, 89, 47, 123, 47, 0, 112, 101, 108, 3, 89, 48, 110, 55, 0, 112, 101, 103, 108, 97, 3, 89, 48, 110, 81, 55,
+			35, 0, 112, 101, 103, 101, 108, 3, 89, 48, 110, 81, 111, 55, 0, 112, 97, 114, 97, 3, 89, 48, 122, 51, 35, 0, 107, 121, 112, 101,
+			3, 89, 49, 6, 35, 57, 48, 0, 107, 111, 108, 111, 114, 3, 89, 49, 126, 55, 123, 51, 0, 110, 101, 103, 108, 97, 3, 89, 50, 110,
+			81, 55, 35, 0, 108, 111, 103, 3, 89, 55, 6, 126, 81, 0, 106, 97, 99, 107, 3, 89, 57, 35, 49, 0, 118, 101, 114, 105, 103, 101,
+			3, 89, 84, 111, 51, 57, 111, 0, 118, 97, 114, 97, 3, 89, 84, 122, 51, 35, 0, 105, 111, 110, 105, 115, 116, 8, 3, 89, 108, 124,
+			50, 6, 109, 89, 47, 0, 101, 103, 108, 97, 3, 89, 110, 81, 55, 35, 0, 101, 103, 101, 108, 3, 89, 110, 81, 111, 55, 0, 195, 164,
+			103, 3, 89, 111, 57, 0, 101, 109, 101, 115, 116, 3, 89, 111, 65, 6, 111, 89, 47, 0, 101, 114, 118, 105, 99, 101, 3, 89, 118, 51,
+			84, 108, 89, 0, 99, 104, 3, 91, 0, 107, 106, 3, 97, 0, 4, 104, 8, 3, 127, 0, 106, 0, 107, 2, 101, 0, 107, 2, 105, 0,
+			107, 2, 121, 0, 107, 2, 195, 164, 0, 107, 2, 195, 182, 0, 116, 106, 0, 107, 195, 164, 114, 109, 3, 127, 6, 111, 51, 65, 0, 4,
+			105, 111, 2, 110, 3, 127, 6, 126, 0, 115, 105, 111, 2, 110, 0, 7, 6, 116, 0, 97, 115, 107, 3, 21, 0, 4, 3, 47, 0, 116,
+			0, 97, 108, 115, 121, 110, 116, 101, 115, 3, 47, 6, 122, 55, 89, 116, 50, 47, 4, 110, 89, 0, 97, 103, 105, 116, 3, 47, 6, 122,
+			81, 109, 47, 0, 116, 2, 17, 65, 3, 47, 12, 0, 97, 110, 103, 101, 110, 116, 3, 47, 35, 50, 57, 111, 50, 47, 0, 97, 98, 101,
+			108, 108, 3, 47, 35, 71, 6, 111, 55, 0, 101, 1, 17, 67, 10, 2, 32, 14, 128, 128, 130, 3, 47, 111, 0, 101, 107, 110, 105, 107,
+			3, 47, 111, 49, 50, 6, 108, 49, 0, 106, 3, 97, 0, 105, 2, 111, 110, 3, 127, 6, 0, 7, 6, 117, 0, 4, 1, 110, 105, 108,
+			2, 120, 3, 2, 120, 0, 2, 107, 116, 105, 0, 2, 110, 107, 17, 67, 0, 116, 109, 195, 164, 114, 107, 3, 6, 117, 47, 65, 13, 51,
+			49, 0, 112, 108, 111, 97, 100, 3, 21, 0, 4, 3, 117, 0, 1, 106, 2, 108, 0, 1, 106, 2, 110, 105, 0, 1, 106, 115, 2, 107,
+			0, 2, 116, 98, 0, 2, 116, 102, 0, 2, 116, 103, 0, 2, 116, 108, 0, 2, 116, 110, 0, 2, 116, 114, 0, 2, 116, 114, 0, 2,
+			116, 115, 0, 2, 116, 118, 0, 4, 1, 98, 2, 116, 105, 107, 3, 120, 0, 1, 116, 97, 100, 2, 109, 0, 1, 118, 2, 120, 0, 2,
+			17, 67, 17, 67, 0, 2, 110, 0, 2, 110, 103, 0, 1, 114, 2, 109, 32, 3, 120, 12, 0, 112, 112, 103, 101, 3, 120, 48, 57, 110,
+			0, 7, 6, 118, 0, 2, 118, 3, 0, 3, 84, 0, 97, 114, 97, 110, 100, 114, 97, 3, 84, 35, 51, 35, 50, 72, 51, 35, 0, 97,
+			108, 105, 3, 84, 35, 55, 109, 0, 101, 114, 107, 3, 84, 111, 51, 49, 0, 101, 114, 107, 116, 121, 103, 3, 84, 111, 51, 49, 47, 115,
+			81, 0, 97, 114, 97, 110, 3, 84, 122, 51, 35, 50, 0, 97, 114, 110, 3, 84, 122, 51, 50, 0, 7, 6, 119, 0, 4, 105, 110, 100,
+			111, 119, 3, 21, 0, 105, 114, 101, 0, 105, 115, 101, 0, 3, 84, 0, 7, 6, 120, 0, 2, 120, 3, 0, 3, 49, 89, 0, 7, 6,
+			121, 0, 1, 115, 2, 115, 3, 2, 116, 0, 4, 1, 116, 2, 100, 3, 6, 115, 0, 1, 116, 2, 103, 0, 4, 3, 115, 0, 1, 115,
+			2, 110, 115, 107, 97, 0, 2, 17, 67, 17, 67, 3, 116, 0, 7, 6, 122, 0, 122, 3, 88, 0, 3, 89, 0, 7, 6, 0, 4, 42,
+			1, 42, 2, 42, 3, 0, 4, 42, 42, 3, 0, 4, 45, 1, 45, 45, 3, 0, 46, 1, 46, 3, 0, 195, 169, 3, 6, 110, 0, 226,
+			130, 172, 3, 6, 111, 84, 51, 126, 0, 46, 2, 46, 3, 9, 0, 38, 3, 9, 6, 123, 49, 0, 4, 45, 1, 32, 17, 65, 2, 32,
+			15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 42, 1, 42, 42, 2, 32, 3, 24, 0, 46, 3, 48, 6, 120, 68, 47, 0,
+			37, 3, 48, 51, 123, 89, 6, 111, 50, 47, 0, 43, 3, 48, 55, 120, 89, 0, 45, 8, 32, 2, 32, 15, 3, 65, 6, 108, 50, 120,
+			89, 0, 36, 3, 72, 6, 123, 55, 35, 51, 0, 47, 3, 89, 50, 6, 110, 72, 89, 47, 51, 111, 49, 0, 64, 3, 89, 50, 6, 122,
+			71, 111, 55, 122, 0, 42, 3, 127, 6, 113, 51, 50, 35, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts61 = FileInMemory_createWithData (9676, reinterpret_cast<const char *> (&espeakdata_dicts61_data), 
+			U"espeak-1.48.04-source/espeak-data/sv_dict", 
 			U"sv");
-		Collection_addItem (me.peek(), espeakdata_dicts60.transfer());
+		my addItem_move (espeakdata_dicts61.move());
 
-		static unsigned char espeakdata_dicts61_data[3005] = {
-			0, 4, 0, 0, 32, 10, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 56, 77, 49, 4, 36, 55, 83, 40, 50, 6, 35, 50, 36, 0,
+		static unsigned char espeakdata_dicts62_data[3030] = {
+			0, 4, 0, 0, 67, 10, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 56, 77, 49, 4, 36, 55, 83, 40, 50, 6, 35, 50, 36, 0,
 			0, 17, 4, 95, 56, 77, 50, 55, 6, 35, 49, 37, 50, 6, 35, 50, 36, 0, 0, 0, 0, 6, 65, 8, 71, 37, 0, 0, 0, 0,
-			0, 6, 65, 12, 89, 37, 0, 0, 0, 0, 7, 196, 100, 16, 78, 36, 8, 0, 6, 65, 16, 72, 37, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 65, 24, 36, 83, 0, 0, 0, 0, 0, 9, 197, 12, 129, 78, 100, 80, 72, 28, 6, 65, 28, 79, 37, 0, 0, 0, 0,
-			0, 7, 65, 32, 36, 76, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 40, 79, 36, 0, 0, 0, 0, 0, 6, 65, 44, 49,
-			36, 0, 0, 0, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 7, 65, 52, 36, 65, 0, 14, 4, 193, 52, 76, 0, 0, 0,
-			0, 11, 5, 95, 48, 1, 14, 4, 23, 50, 35, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 104, 83, 153,
-			20, 72, 28, 8, 196, 100, 83, 153, 20, 72, 28, 8, 196, 92, 83, 153, 20, 72, 28, 0, 6, 65, 64, 48, 37, 0, 0, 0, 0, 0,
-			7, 65, 68, 49, 57, 40, 0, 0, 0, 0, 0, 6, 65, 72, 35, 51, 0, 0, 0, 0, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0,
-			0, 6, 65, 80, 47, 37, 0, 0, 0, 6, 195, 92, 19, 192, 76, 0, 0, 4, 193, 84, 76, 0, 0, 0, 7, 195, 80, 242, 193, 72,
-			28, 0, 6, 65, 88, 84, 37, 0, 0, 0, 0, 0, 11, 65, 92, 72, 35, 71, 35, 55, 57, 40, 0, 0, 0, 0, 6, 195, 92, 18,
-			197, 76, 0, 17, 4, 95, 49, 77, 49, 4, 36, 55, 83, 40, 65, 6, 39, 79, 35, 0, 7, 65, 96, 36, 49, 89, 0, 0, 17, 4,
-			95, 49, 77, 50, 55, 6, 35, 49, 37, 65, 6, 39, 79, 35, 0, 0, 0, 6, 195, 76, 148, 201, 76, 0, 7, 65, 100, 57, 35, 37,
-			0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 194, 5, 80, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 32, 17, 9, 72, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 32, 147, 15, 76, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 112, 86, 100,
-			240, 8, 0, 0, 0, 0, 19, 4, 95, 50, 77, 49, 4, 36, 55, 83, 40, 23, 65, 71, 6, 37, 55, 37, 0, 0, 19, 4, 95, 50,
-			77, 50, 55, 6, 35, 49, 37, 23, 65, 71, 6, 37, 55, 37, 0, 0, 0, 7, 196, 4, 145, 8, 4, 8, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 195, 32, 21, 1, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 8, 144, 72, 28, 0, 0, 0, 0, 0, 6, 195,
-			32, 146, 64, 72, 0, 13, 4, 95, 4, 16, 20, 10, 50, 40, 49, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95,
-			51, 77, 49, 4, 36, 55, 83, 40, 47, 6, 35, 47, 40, 0, 0, 17, 4, 95, 51, 77, 50, 55, 6, 35, 49, 37, 47, 6, 35, 47,
-			40, 0, 0, 0, 0, 0, 0, 0, 8, 196, 64, 147, 132, 36, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 37, 112, 80, 60,
-			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 197, 89, 145, 78, 100, 80, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 195, 53, 112, 64, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 45, 112, 76, 60, 8, 0, 0, 6,
-			194, 4, 240, 72, 8, 0, 0, 0, 9, 197, 53, 113, 78, 100, 80, 72, 28, 9, 197, 44, 21, 9, 44, 16, 72, 28, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 92, 19, 1, 44, 147, 137, 8, 0, 0, 0, 0, 0,
-			0, 17, 67, 41, 85, 64, 79, 4, 40, 12, 57, 108, 0, 8, 81, 121, 97, 32, 0, 8, 196, 80, 20, 129, 4, 76, 8, 10, 68, 80,
-			19, 135, 84, 91, 40, 0, 28, 0, 0, 0, 0, 0, 8, 197, 64, 19, 129, 64, 240, 8, 0, 0, 0, 0, 8, 197, 48, 18, 201, 56,
-			144, 8, 8, 197, 36, 225, 193, 92, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 9, 133, 49, 5, 14, 25, 5, 72, 28, 7, 196, 56, 19, 153, 36, 76, 0, 0, 6, 194, 24, 144, 72, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 53, 77, 49, 4, 36, 55, 83, 40, 47, 6, 35, 50, 39, 0, 0, 0, 0,
-			17, 4, 95, 53, 77, 50, 55, 6, 35, 49, 37, 47, 6, 35, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 87, 36, 55, 36, 87,
-			6, 37, 50, 37, 0, 0, 10, 3, 95, 48, 67, 65, 6, 37, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 67, 65,
-			4, 37, 35, 65, 6, 39, 79, 35, 0, 0, 0, 0, 0, 0, 0, 6, 194, 48, 16, 72, 28, 0, 0, 17, 3, 95, 50, 67, 65, 4,
-			37, 35, 23, 65, 71, 6, 37, 55, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 67, 65, 4, 37, 35, 47, 6, 35,
-			47, 40, 0, 0, 0, 0, 17, 4, 95, 54, 77, 49, 4, 36, 55, 83, 40, 89, 6, 37, 47, 35, 0, 0, 7, 196, 45, 112, 89, 20,
-			8, 0, 0, 17, 4, 95, 54, 77, 50, 55, 6, 35, 49, 37, 89, 6, 37, 47, 35, 0, 0, 13, 3, 95, 55, 88, 89, 35, 71, 6,
-			37, 50, 37, 0, 0, 14, 3, 95, 52, 67, 65, 4, 37, 35, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95,
-			53, 67, 65, 4, 37, 35, 47, 6, 35, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 49, 88, 49, 6, 40, 65, 37, 0,
-			0, 15, 3, 95, 54, 67, 65, 4, 37, 35, 89, 6, 37, 47, 35, 0, 0, 0, 0, 0, 0, 0, 5, 194, 45, 80, 76, 0, 14, 3,
-			95, 50, 88, 37, 91, 37, 51, 6, 37, 50, 37, 0, 0, 15, 3, 95, 55, 67, 65, 4, 37, 35, 89, 6, 35, 71, 35, 0, 0, 0,
-			0, 0, 0, 0, 6, 195, 52, 147, 73, 76, 0, 0, 15, 3, 95, 56, 67, 65, 4, 37, 35, 50, 6, 35, 50, 36, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 3, 95, 52, 88, 35, 51, 39, 71, 35, 6, 37, 50, 37, 0, 0, 15, 3, 95, 57, 67, 65, 4, 37, 35, 47,
-			6, 37, 89, 35, 0, 0, 0, 0, 0, 0, 0, 6, 194, 56, 16, 72, 8, 0, 14, 3, 95, 53, 88, 107, 35, 65, 89, 6, 37, 50,
-			37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 89, 37, 47, 6, 37, 50, 37, 0, 0, 0, 0, 0, 17, 4, 95,
-			55, 77, 49, 4, 36, 55, 83, 40, 89, 6, 35, 71, 35, 0, 0, 0, 0, 17, 4, 95, 55, 77, 50, 55, 6, 35, 49, 37, 89, 6,
-			35, 71, 35, 0, 0, 10, 199, 36, 160, 80, 60, 181, 87, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 88, 87, 36,
-			65, 35, 50, 6, 37, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 47, 37, 89, 6, 37, 50, 37, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 194, 64, 16, 72, 28, 6, 194, 64, 16, 72, 28, 5, 194, 48, 144, 72, 0, 0, 0, 0, 0, 0, 0, 9, 197, 45, 112, 77,
-			8, 16, 72, 8, 0, 0, 7, 195, 52, 147, 128, 72, 28, 0, 16, 4, 95, 48, 77, 52, 23, 71, 37, 55, 37, 6, 39, 50, 37, 0,
-			0, 0, 0, 16, 4, 95, 48, 77, 51, 23, 65, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 12, 4, 95, 48, 77, 49, 6, 36, 55,
-			83, 40, 0, 0, 0, 0, 8, 196, 8, 16, 68, 4, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			5, 194, 56, 144, 76, 0, 0, 0, 0, 0, 0, 6, 195, 100, 18, 197, 76, 0, 0, 0, 0, 0, 0, 17, 4, 95, 57, 77, 50, 55,
-			6, 35, 49, 37, 47, 6, 37, 89, 35, 0, 0, 0, 0, 17, 4, 95, 57, 77, 49, 4, 36, 55, 83, 40, 47, 6, 37, 89, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 92, 85, 197, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			8, 197, 45, 84, 213, 16, 144, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 4, 225, 193, 60, 8, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 147, 1, 72,
-			8, 0, 0, 0, 0, 7, 195, 8, 19, 9, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 45, 85, 193, 72,
-			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 40, 20, 15, 8, 0, 0, 0, 0, 0, 0, 0, 0, 9,
-			198, 45, 80, 78, 104, 144, 64, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 19,
-			73, 76, 0, 0, 5, 194, 81, 80, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 194, 92, 16, 72, 28, 5, 194, 76, 144, 72, 0, 0, 6, 195, 56, 22, 69, 76, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 196, 36, 160, 80, 60, 8, 0, 0, 0, 0, 7, 195, 89, 144, 64, 72, 28, 0, 0, 7, 2, 95, 13, 36, 65,
-			0, 0, 0, 22, 67, 45, 112, 64, 49, 58, 35, 15, 49, 4, 40, 58, 108, 0, 8, 81, 107, 117, 119, 97, 32, 7, 195, 45, 112, 64,
-			72, 28, 7, 195, 45, 112, 64, 72, 28, 0, 7, 196, 44, 148, 200, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 6, 195, 45, 112, 79, 8, 0, 0, 0, 0, 0, 0, 16, 4, 95, 52, 77, 50, 55, 6, 35, 49, 37, 6, 42, 50, 36,
-			0, 0, 16, 4, 95, 52, 77, 49, 4, 36, 55, 83, 40, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51,
-			47, 6, 35, 47, 40, 0, 0, 12, 2, 95, 50, 23, 65, 71, 6, 37, 55, 37, 0, 0, 10, 2, 95, 49, 65, 6, 39, 79, 35, 0,
-			0, 12, 2, 95, 48, 89, 37, 83, 6, 40, 51, 37, 0, 0, 10, 2, 95, 55, 89, 6, 35, 71, 35, 0, 0, 10, 2, 95, 54, 89,
-			6, 37, 47, 35, 0, 0, 10, 2, 95, 53, 47, 6, 35, 50, 39, 0, 0, 9, 2, 95, 52, 6, 42, 50, 36, 0, 0, 0, 0, 10,
-			2, 95, 57, 47, 6, 37, 89, 35, 0, 0, 6, 194, 100, 16, 72, 28, 10, 2, 95, 56, 50, 6, 35, 50, 36, 0, 0, 0, 0, 8,
-			197, 57, 146, 78, 100, 144, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 36, 192, 64,
-			8, 7, 195, 12, 128, 64, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 104, 16, 72, 28, 0, 0, 0, 8, 197,
-			64, 19, 79, 40, 16, 8, 0, 6, 195, 104, 18, 197, 76, 0, 7, 195, 36, 194, 64, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 56, 19, 192, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 20, 201, 76, 8, 6, 195, 56, 21, 197, 76, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 101, 80, 72, 0, 0, 0, 0, 6, 195, 56, 20, 201, 76,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 195, 92, 19, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 33, 82, 207, 72, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 45, 112, 67, 32, 240, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 195, 4, 208, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 104, 144, 72, 0, 0, 0,
-			0, 0, 10, 199, 36, 194, 75, 92, 19, 66, 4, 8, 0, 0, 9, 198, 8, 17, 1, 48, 22, 65, 8, 0, 7, 195, 44, 19, 65, 76,
-			8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 100, 86, 69, 76, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 3, 35, 0, 97, 3, 35, 12, 0, 7, 6, 98, 0, 3, 71, 0,
-			7, 6, 99, 0, 3, 49, 0, 104, 3, 76, 0, 7, 6, 100, 0, 3, 72, 0, 104, 3, 86, 0, 7, 6, 101, 0, 3, 36, 0, 101,
-			3, 36, 12, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 104, 3, 100, 0, 7, 6, 104, 0, 3, 107, 0, 7,
-			6, 105, 0, 3, 37, 0, 105, 3, 37, 12, 0, 7, 6, 106, 0, 3, 79, 0, 7, 6, 107, 0, 3, 49, 0, 104, 3, 101, 0, 7,
-			6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 4, 1, 25, 2, 21, 21, 3, 23, 65, 0, 1, 25, 2, 98, 21, 21, 0, 1, 25, 2,
-			118, 21, 21, 0, 1, 25, 2, 119, 21, 21, 0, 4, 1, 25, 2, 17, 67, 3, 41, 0, 8, 0, 4, 3, 65, 0, 2, 17, 65, 0,
-			7, 6, 110, 0, 8, 3, 42, 0, 4, 8, 2, 103, 3, 43, 0, 8, 2, 103, 21, 21, 0, 8, 2, 107, 0, 8, 2, 107, 21, 21,
-			0, 4, 3, 50, 0, 2, 17, 65, 0, 2, 21, 21, 0, 4, 2, 99, 104, 3, 67, 0, 2, 106, 0, 121, 0, 4, 2, 103, 3, 68,
-			0, 2, 107, 0, 103, 39, 0, 7, 6, 111, 0, 3, 39, 0, 111, 3, 39, 12, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0,
-			3, 49, 0, 7, 6, 114, 0, 1, 17, 67, 2, 17, 65, 3, 14, 16, 0, 4, 3, 51, 0, 1, 17, 65, 2, 17, 65, 0, 114, 3,
-			51, 51, 0, 7, 6, 115, 0, 3, 89, 0, 104, 3, 91, 0, 7, 6, 116, 0, 3, 47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 3,
-			40, 0, 117, 3, 40, 12, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7,
-			6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3, 0, 42, 42, 3, 0, 42, 1,
-			42, 42, 2, 32, 3, 24, 0, 37, 3, 35, 89, 37, 55, 37, 65, 37, 35, 0, 42, 3, 67, 39, 47, 35, 0, 36, 3, 72, 39, 55,
-			35, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts61 = FileInMemory_createWithData (3004, reinterpret_cast<const char *> (&espeakdata_dicts61_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/sw_dict", 
+			0, 6, 65, 12, 89, 37, 0, 0, 0, 0, 0, 6, 65, 16, 72, 37, 0, 0, 0, 8, 197, 45, 84, 213, 16, 144, 8, 9, 197, 89,
+			145, 78, 100, 80, 72, 28, 0, 13, 4, 95, 100, 112, 116, 10, 50, 40, 49, 47, 35, 0, 0, 0, 0, 0, 0, 6, 65, 24, 36, 83,
+			0, 0, 0, 0, 0, 6, 65, 28, 79, 37, 0, 0, 0, 0, 0, 7, 65, 32, 36, 76, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			6, 65, 40, 79, 36, 0, 0, 0, 0, 0, 6, 65, 44, 49, 36, 0, 0, 0, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0,
+			7, 65, 52, 36, 65, 0, 49, 4, 193, 52, 76, 0, 0, 0, 0, 6, 195, 100, 86, 69, 76, 6, 65, 56, 36, 50, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 65, 64, 48, 37, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 40, 0, 0, 0, 0, 0, 6, 195, 56, 20,
+			201, 76, 6, 65, 72, 35, 51, 0, 0, 0, 0, 7, 196, 36, 160, 80, 60, 8, 0, 6, 65, 76, 36, 89, 0, 0, 0, 0, 0, 6,
+			65, 80, 47, 37, 0, 0, 0, 6, 195, 92, 19, 192, 76, 0, 0, 4, 193, 84, 76, 0, 0, 0, 0, 6, 65, 88, 84, 37, 0, 0,
+			0, 0, 0, 11, 65, 92, 72, 35, 71, 35, 55, 57, 40, 0, 0, 0, 0, 0, 17, 4, 95, 49, 77, 49, 4, 36, 55, 83, 40, 65,
+			6, 39, 79, 35, 0, 7, 65, 96, 36, 49, 89, 0, 0, 17, 4, 95, 49, 77, 50, 55, 6, 35, 49, 37, 65, 6, 39, 79, 35, 0,
+			0, 0, 0, 7, 65, 100, 57, 35, 37, 0, 0, 0, 0, 0, 8, 65, 104, 88, 36, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+			196, 4, 225, 193, 60, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 32, 17, 9, 72, 8, 0, 6, 194, 5, 80, 72, 8, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 44, 148, 200, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 95, 50, 77, 49, 4, 36, 55, 83, 40, 23, 65, 71, 6,
+			37, 55, 37, 0, 0, 19, 4, 95, 50, 77, 50, 55, 6, 35, 49, 37, 23, 65, 71, 6, 37, 55, 37, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 92, 19, 1, 44, 147, 137, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 100, 16, 78, 36, 8, 0, 0, 0, 0, 6, 194,
+			8, 144, 72, 28, 0, 0, 0, 0, 0, 6, 195, 32, 146, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 51, 77,
+			49, 4, 36, 55, 83, 40, 47, 6, 35, 47, 40, 0, 0, 17, 4, 95, 51, 77, 50, 55, 6, 35, 49, 37, 47, 6, 35, 47, 40, 0,
+			0, 0, 7, 196, 45, 112, 76, 60, 8, 0, 0, 0, 9, 197, 44, 21, 9, 44, 16, 72, 28, 0, 0, 0, 0, 9, 197, 53, 113, 78,
+			100, 80, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+			195, 53, 112, 64, 72, 28, 0, 0, 9, 197, 45, 112, 77, 8, 16, 72, 8, 6, 195, 32, 147, 15, 76, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 194, 4, 240, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198,
+			104, 19, 154, 36, 32, 82, 67, 0, 0, 0, 0, 0, 0, 0, 9, 197, 12, 129, 78, 100, 80, 72, 28, 0, 0, 0, 0, 0, 0, 17,
+			67, 41, 85, 64, 79, 4, 40, 12, 57, 35, 0, 8, 81, 121, 97, 32, 8, 197, 45, 112, 86, 100, 240, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 45, 112, 79, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 45, 112, 89, 20, 8, 0, 0,
+			0, 0, 0, 0, 0, 0, 9, 133, 49, 101, 110, 121, 101, 72, 28, 0, 0, 0, 6, 195, 92, 19, 1, 8, 7, 195, 8, 147, 1, 72,
+			8, 0, 0, 0, 6, 194, 24, 144, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 53, 77, 49, 4,
+			36, 55, 83, 40, 47, 6, 35, 50, 39, 0, 0, 0, 0, 17, 4, 95, 53, 77, 50, 55, 6, 35, 49, 37, 47, 6, 35, 50, 39, 0,
+			0, 0, 8, 196, 8, 16, 68, 4, 72, 28, 0, 0, 0, 0, 7, 196, 4, 145, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 87, 36, 55, 36, 87, 6, 37,
+			50, 37, 0, 0, 10, 3, 95, 48, 67, 65, 6, 37, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 67, 65, 4, 37,
+			35, 65, 6, 39, 79, 35, 0, 0, 0, 0, 0, 0, 0, 6, 194, 48, 16, 72, 28, 0, 0, 17, 3, 95, 50, 67, 65, 4, 37, 35,
+			23, 65, 71, 6, 37, 55, 37, 0, 0, 0, 0, 7, 195, 8, 19, 9, 72, 8, 0, 0, 0, 0, 0, 15, 3, 95, 51, 67, 65, 4,
+			37, 35, 47, 6, 35, 47, 40, 0, 0, 0, 0, 17, 4, 95, 54, 77, 49, 4, 36, 55, 83, 40, 89, 6, 37, 47, 35, 0, 0, 0,
+			0, 17, 4, 95, 54, 77, 50, 55, 6, 35, 49, 37, 89, 6, 37, 47, 35, 0, 0, 13, 3, 95, 55, 88, 89, 35, 71, 6, 37, 50,
+			37, 0, 0, 14, 3, 95, 52, 67, 65, 4, 37, 35, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 53, 67,
+			65, 4, 37, 35, 47, 6, 35, 50, 39, 0, 0, 0, 0, 7, 195, 32, 21, 1, 72, 8, 0, 0, 0, 0, 11, 3, 95, 49, 88, 49,
+			6, 40, 65, 37, 0, 0, 15, 3, 95, 54, 67, 65, 4, 37, 35, 89, 6, 37, 47, 35, 0, 0, 0, 0, 0, 0, 0, 5, 194, 45,
+			80, 76, 0, 14, 3, 95, 50, 88, 37, 91, 37, 51, 6, 37, 50, 37, 0, 0, 15, 3, 95, 55, 67, 65, 4, 37, 35, 89, 6, 35,
+			71, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 80, 20, 129, 4, 76, 8, 15, 3, 95, 56, 67, 65, 4, 37, 35, 50, 6,
+			35, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 52, 88, 35, 51, 39, 71, 35, 6, 37, 50, 37, 0, 0, 15, 3, 95,
+			57, 67, 65, 4, 37, 35, 47, 6, 37, 89, 35, 0, 0, 0, 0, 7, 195, 45, 85, 193, 72, 8, 0, 0, 0, 6, 194, 56, 16, 72,
+			8, 0, 14, 3, 95, 53, 88, 107, 35, 65, 89, 6, 37, 50, 37, 0, 0, 0, 7, 195, 33, 82, 207, 72, 28, 0, 0, 0, 10, 68,
+			80, 19, 135, 84, 91, 40, 0, 28, 0, 0, 0, 13, 3, 95, 54, 88, 89, 37, 47, 6, 37, 50, 37, 0, 0, 0, 0, 0, 17, 4,
+			95, 55, 77, 49, 4, 36, 55, 83, 40, 89, 6, 35, 71, 35, 0, 0, 0, 0, 17, 4, 95, 55, 77, 50, 55, 6, 35, 49, 37, 89,
+			6, 35, 71, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 56, 88, 87, 36, 65, 35, 50, 6, 37, 50, 37, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88, 47, 37, 89, 6, 37, 50, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 8, 197, 64, 19, 129, 64, 240, 8, 0, 0, 0, 0, 0, 8, 197, 36, 225, 193, 92, 16, 8, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 9, 198, 8, 17, 1, 48, 22, 65, 8, 0, 6, 194, 64, 16, 72, 28, 6, 194, 64, 16, 72, 28, 5,
+			194, 48, 144, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 147, 128, 72, 28, 0, 16, 4, 95, 48, 77, 52, 23, 71, 37,
+			55, 37, 6, 39, 50, 37, 0, 0, 8, 197, 45, 112, 67, 32, 240, 8, 0, 0, 8, 197, 48, 18, 201, 56, 144, 8, 8, 197, 57, 146,
+			78, 100, 144, 76, 16, 4, 95, 48, 77, 51, 23, 65, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 12, 4, 95, 48, 77, 49, 6, 36,
+			55, 83, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 40, 20, 15, 8, 0, 0, 0, 0, 0, 0, 0, 8, 196, 104, 83, 153, 20, 72, 28, 8,
+			196, 100, 83, 153, 20, 72, 28, 8, 196, 92, 83, 153, 20, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 56, 144, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 57, 77, 50, 55, 6, 35, 49, 37, 47, 6, 37, 89, 35, 0, 0, 0, 0,
+			17, 4, 95, 57, 77, 49, 4, 36, 55, 83, 40, 47, 6, 37, 89, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 52, 147, 73,
+			76, 0, 0, 0, 9, 198, 45, 80, 78, 104, 144, 64, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 5, 194, 81, 80, 76, 0, 0, 0, 0, 7, 196, 56, 19, 153, 36, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197,
+			64, 19, 79, 40, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 92, 16, 72, 28, 5, 194, 76, 144, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36, 160, 80, 60, 181, 87, 4, 8, 0, 0, 7, 195, 89, 144,
+			64, 72, 28, 0, 0, 0, 0, 22, 67, 45, 112, 64, 49, 58, 35, 15, 49, 4, 40, 58, 35, 0, 8, 81, 107, 117, 119, 97, 32, 6,
+			195, 45, 112, 64, 72, 7, 195, 45, 112, 64, 72, 28, 0, 0, 0, 0, 7, 195, 80, 242, 193, 72, 28, 0, 0, 0, 0, 6, 195, 104,
+			18, 197, 76, 6, 195, 100, 18, 197, 76, 0, 0, 0, 19, 70, 52, 19, 148, 36, 178, 64, 65, 35, 23, 50, 47, 6, 37, 49, 37, 0,
+			77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 52, 77, 50, 55, 6, 35, 49, 37, 6, 42, 50, 36, 0, 0,
+			16, 4, 95, 52, 77, 49, 4, 36, 55, 83, 40, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 47, 6,
+			35, 47, 40, 0, 0, 12, 2, 95, 50, 23, 65, 71, 6, 37, 55, 37, 0, 0, 10, 2, 95, 49, 65, 6, 39, 79, 35, 0, 0, 12,
+			2, 95, 48, 89, 37, 83, 6, 40, 51, 37, 0, 0, 10, 2, 95, 55, 89, 6, 35, 71, 35, 0, 0, 10, 2, 95, 54, 89, 6, 37,
+			47, 35, 0, 0, 10, 2, 95, 53, 47, 6, 35, 50, 39, 0, 0, 9, 2, 95, 52, 6, 42, 50, 36, 0, 0, 7, 195, 44, 19, 65,
+			76, 8, 8, 197, 52, 19, 9, 64, 240, 11, 0, 0, 10, 2, 95, 57, 47, 6, 37, 89, 35, 0, 0, 6, 194, 100, 16, 72, 28, 10,
+			2, 95, 56, 50, 6, 35, 50, 36, 0, 0, 0, 0, 0, 0, 6, 195, 56, 19, 73, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 195, 36, 192, 64, 8, 7, 195, 12, 128, 64, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 92,
+			18, 197, 76, 0, 0, 0, 6, 194, 104, 16, 72, 28, 0, 0, 0, 0, 0, 7, 195, 36, 194, 64, 76, 8, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 195, 56, 19, 192, 76, 0, 0, 0, 0, 0, 0, 7, 2, 95, 109, 36, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 6, 195, 76, 148, 201, 76, 0, 0, 0, 0, 0, 0, 11, 5, 95, 48, 97, 110, 100, 23, 50, 35, 0, 0, 5,
+			194, 101, 80, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196, 64, 147,
+			132, 36, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 199, 36, 194, 75, 92, 19, 66, 4, 8, 0, 0, 0, 0,
+			0, 0, 0, 7, 195, 8, 20, 201, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 21, 197, 76, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 4, 208, 64, 72, 8, 0,
+			0, 0, 7, 196, 37, 112, 80, 60, 8, 0, 0, 0, 0, 0, 6, 195, 92, 85, 197, 76, 0, 0, 0, 5, 194, 104, 144, 72, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 56, 22, 69, 76, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 97, 0, 3, 35, 0, 7, 6, 98, 0, 3, 71, 0,
+			7, 6, 99, 0, 3, 49, 0, 104, 3, 76, 0, 7, 6, 100, 0, 3, 72, 0, 104, 3, 86, 0, 7, 6, 101, 0, 3, 36, 0, 7,
+			6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 104, 3, 100, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37,
+			0, 7, 6, 106, 0, 4, 3, 79, 0, 2, 119, 0, 7, 6, 107, 0, 1, 25, 2, 21, 21, 3, 23, 49, 0, 3, 49, 0, 104, 3,
+			101, 0, 7, 6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 4, 1, 25, 2, 21, 21, 3, 23, 65, 0, 1, 25, 2, 98, 21, 21, 0,
+			1, 25, 2, 118, 21, 0, 1, 25, 2, 119, 21, 21, 0, 4, 1, 25, 2, 17, 67, 3, 41, 0, 8, 0, 4, 3, 65, 0, 2, 17,
+			65, 0, 7, 6, 110, 0, 4, 2, 99, 104, 3, 42, 0, 8, 0, 4, 8, 2, 107, 3, 43, 0, 8, 2, 107, 21, 21, 0, 4, 3,
+			50, 0, 2, 17, 65, 0, 2, 21, 21, 0, 4, 2, 106, 3, 67, 0, 121, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 103, 2, 39,
+			0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0, 1, 17, 67, 2,
+			17, 65, 3, 14, 16, 0, 4, 3, 51, 0, 1, 17, 65, 2, 17, 65, 0, 114, 3, 51, 51, 0, 7, 6, 115, 0, 3, 89, 0, 104,
+			3, 91, 0, 7, 6, 116, 0, 3, 47, 0, 104, 3, 87, 0, 7, 6, 117, 0, 3, 40, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6,
+			119, 0, 4, 1, 106, 3, 2, 40, 0, 1, 121, 110, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 57,
+			0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42, 3, 0, 42, 42, 3, 0, 42, 1, 42, 42, 2, 32, 3,
+			24, 0, 37, 3, 35, 89, 37, 55, 37, 65, 37, 35, 0, 42, 3, 67, 39, 47, 35, 0, 36, 3, 72, 39, 55, 35, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts62 = FileInMemory_createWithData (3029, reinterpret_cast<const char *> (&espeakdata_dicts62_data), 
+			U"espeak-1.48.04-source/espeak-data/sw_dict", 
 			U"sw");
-		Collection_addItem (me.peek(), espeakdata_dicts61.transfer());
+		my addItem_move (espeakdata_dicts62.move());
 
-		static unsigned char espeakdata_dicts62_data[88228] = {
-			0, 4, 0, 0, 29, 37, 0, 0, 9, 134, 224, 174, 164, 224, 174, 169, 20, 0, 18, 143, 224, 174, 154, 224, 174, 176, 224, 175, 141, 224,
-			174, 154, 224, 175, 141, 20, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 20, 12, 95, 35, 45, 224, 174, 181, 224, 174, 164, 224, 175,
-			129, 118, 84, 109, 72, 122, 0, 0, 24, 149, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175,
-			141, 20, 9, 134, 224, 174, 164, 224, 174, 181, 20, 0, 21, 146, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 174, 224,
-			175, 141, 20, 0, 6, 65, 8, 71, 112, 0, 0, 0, 0, 0, 21, 6, 224, 174, 170, 224, 174, 191, 71, 37, 57, 114, 0, 24, 82, 46,
-			32, 224, 174, 143, 32, 6, 65, 12, 89, 112, 0, 0, 27, 152, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224,
-			174, 190, 224, 174, 175, 224, 175, 141, 20, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174,
-			164, 224, 174, 191, 20, 15, 140, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 174, 191, 20, 9, 134, 224, 174, 170, 224, 174, 181, 20, 11,
-			6, 224, 174, 178, 224, 175, 141, 37, 55, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 20,
-			5, 65, 20, 112, 0, 0, 12, 137, 224, 174, 149, 224, 174, 190, 224, 174, 169, 20, 0, 0, 13, 6, 224, 174, 170, 224, 174, 170, 48, 109,
-			48, 109, 0, 0, 15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 175, 141, 20, 6, 65, 24, 116, 83, 0, 0, 0, 0, 18, 143,
-			224, 174, 170, 224, 175, 139, 224, 174, 149, 224, 174, 174, 224, 175, 141, 20, 0, 6, 65, 28, 75, 112, 0, 0, 0, 13, 4, 95, 54, 48,
-			15, 35, 51, 122, 71, 109, 72, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 11, 1, 33, 84, 37, 57, 109, 48, 48, 122, 0, 0, 0,
-			8, 1, 35, 38, 36, 66, 0, 27, 0, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224,
-			174, 154, 224, 175, 141, 20, 6, 65, 36, 118, 57, 0, 0, 14, 1, 37, 84, 37, 92, 122, 49, 49, 118, 141, 122, 0, 27, 0, 10, 1,
-			38, 65, 109, 140, 51, 122, 65, 0, 0, 30, 155, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224,
-			174, 178, 224, 174, 190, 224, 174, 169, 20, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 13, 1, 42, 48, 36, 34, 122, 49, 49, 109, 55,
-			0, 27, 0, 11, 1, 43, 49, 123, 140, 140, 109, 55, 0, 27, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 0, 9, 1, 47, 89, 118,
-			57, 84, 122, 0, 0, 6, 65, 48, 116, 55, 0, 0, 15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 174, 190, 20, 0, 15, 140,
-			224, 174, 170, 224, 175, 139, 224, 174, 149, 224, 174, 191, 20, 0, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 33, 158, 224, 174, 170, 224,
-			174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 20, 0, 6, 65,
-			56, 116, 50, 0, 0, 0, 0, 0, 10, 1, 60, 49, 40, 51, 134, 84, 122, 0, 5, 65, 60, 119, 0, 0, 14, 1, 61, 89, 35, 65,
-			109, 50, 48, 118, 141, 122, 0, 27, 0, 10, 1, 62, 65, 37, 81, 122, 72, 37, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0,
-			0, 7, 65, 68, 49, 57, 123, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 139, 224, 174, 178, 224, 174, 191, 20, 0, 0, 6, 65, 72,
-			118, 51, 0, 0, 15, 9, 224, 174, 149, 224, 174, 170, 224, 175, 141, 49, 109, 48, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 190,
-			224, 174, 159, 224, 175, 141, 20, 15, 140, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 20, 18, 12, 224, 174, 170, 224, 175, 128,
-			224, 174, 170, 224, 175, 141, 71, 112, 48, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 0, 6, 65, 80, 138, 112, 0, 0, 0, 11, 6,
-			224, 174, 185, 224, 175, 141, 37, 99, 0, 0, 0, 6, 65, 84, 57, 123, 0, 0, 0, 10, 4, 95, 49, 67, 15, 50, 123, 51, 0, 0,
-			0, 6, 65, 88, 84, 112, 0, 0, 12, 137, 224, 174, 149, 224, 174, 174, 224, 175, 141, 20, 0, 0, 19, 11, 95, 35, 224, 174, 181, 224,
-			174, 164, 224, 175, 129, 118, 84, 109, 72, 122, 0, 0, 15, 1, 92, 48, 6, 37, 50, 15, 89, 4, 118, 57, 84, 122, 0, 11, 65, 92,
-			72, 109, 71, 109, 55, 57, 123, 0, 0, 0, 14, 4, 95, 55, 48, 15, 38, 36, 92, 122, 71, 109, 72, 0, 0, 18, 143, 224, 174, 170,
-			224, 175, 135, 224, 174, 149, 224, 174, 174, 224, 175, 141, 20, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 177, 224, 174, 174, 224, 175, 141,
-			20, 0, 7, 65, 96, 116, 49, 89, 0, 0, 18, 4, 95, 49, 77, 50, 39, 34, 122, 55, 109, 141, 76, 109, 47, 47, 122, 0, 0, 21,
-			146, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 20, 15, 4, 95, 49, 77, 51, 39, 34, 122, 49,
-			119, 141, 37, 114, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 159, 224,
-			175, 129, 20, 7, 65, 104, 88, 116, 72, 0, 0, 0, 11, 67, 21, 84, 128, 57, 123, 34, 119, 88, 0, 0, 0, 15, 140, 224, 174, 149,
-			224, 174, 191, 224, 174, 163, 224, 175, 141, 20, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 20, 15, 140, 224, 174, 170,
-			224, 175, 128, 224, 174, 154, 224, 175, 141, 20, 0, 0, 0, 0, 0, 0, 11, 6, 224, 174, 180, 224, 175, 141, 37, 92, 0, 0, 12, 137,
-			224, 174, 164, 224, 174, 191, 224, 174, 159, 20, 0, 0, 21, 146, 224, 174, 164, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224,
-			175, 136, 20, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 175, 141, 20, 15, 140, 224, 174, 170, 224, 174, 149, 224,
-			174, 164, 224, 175, 141, 20, 0, 0, 24, 67, 5, 81, 0, 39, 89, 47, 34, 6, 36, 113, 55, 113, 109, 50, 15, 72, 6, 39, 55, 109,
-			88, 0, 0, 0, 13, 1, 124, 89, 36, 68, 81, 122, 47, 47, 122, 0, 27, 0, 0, 0, 0, 0, 30, 21, 224, 174, 170, 224, 174, 191,
-			224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 175, 141, 48, 34, 109, 89, 118, 34, 0, 0, 0, 0, 0, 0, 16, 4, 95,
-			49, 57, 15, 48, 35, 47, 47, 39, 50, 71, 109, 72, 0, 0, 0, 0, 0, 0, 30, 155, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224,
-			174, 174, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 224, 175, 129, 20, 0, 21, 146, 224, 174, 170, 224, 174, 176, 224, 175, 141,
-			224, 174, 174, 224, 174, 191, 224, 174, 175, 20, 0, 0, 21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224,
-			175, 129, 20, 0, 12, 137, 224, 174, 149, 224, 174, 164, 224, 174, 191, 20, 11, 4, 95, 49, 67, 48, 50, 123, 51, 122, 0, 0, 0, 0,
-			0, 0, 18, 143, 224, 174, 164, 224, 175, 135, 224, 174, 181, 224, 174, 164, 224, 174, 190, 20, 0, 0, 13, 4, 95, 50, 67, 15, 37, 34,
-			122, 50, 123, 51, 0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 20, 0, 21,
-			146, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20,
-			67, 36, 228, 128, 6, 113, 50, 72, 113, 109, 50, 15, 34, 6, 123, 48, 112, 88, 0, 0, 0, 0, 15, 140, 224, 174, 154, 224, 174, 190,
-			224, 174, 175, 224, 174, 190, 20, 12, 137, 224, 174, 164, 224, 174, 191, 224, 174, 169, 20, 0, 15, 140, 224, 174, 149, 224, 175, 139, 224, 174,
-			170, 224, 174, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 190,
-			20, 15, 140, 224, 174, 170, 224, 174, 159, 224, 174, 181, 224, 174, 190, 20, 0, 0, 0, 0, 18, 143, 224, 174, 164, 224, 174, 176, 224, 174,
-			190, 224, 174, 181, 224, 174, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174,
-			191, 224, 174, 149, 224, 175, 129, 20, 0, 0, 15, 4, 95, 49, 49, 15, 48, 35, 47, 37, 50, 39, 50, 51, 0, 11, 6, 224, 174, 183,
-			224, 175, 141, 37, 93, 0, 0, 0, 9, 134, 224, 174, 149, 224, 175, 139, 20, 0, 0, 9, 134, 224, 174, 149, 224, 174, 149, 20, 11, 6,
-			224, 174, 181, 224, 175, 141, 37, 84, 0, 11, 6, 224, 174, 149, 224, 175, 141, 37, 49, 0, 0, 15, 9, 224, 174, 147, 224, 174, 149, 224,
-			175, 139, 119, 108, 119, 0, 0, 0, 0, 0, 14, 4, 95, 50, 67, 48, 37, 34, 122, 50, 123, 51, 122, 0, 0, 15, 140, 224, 174, 164,
-			224, 174, 181, 224, 174, 149, 224, 175, 141, 20, 15, 140, 224, 174, 164, 224, 174, 159, 224, 174, 149, 224, 175, 141, 20, 0, 0, 0, 0, 9,
-			134, 224, 174, 149, 224, 174, 159, 20, 0, 0, 33, 158, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134,
-			224, 174, 169, 224, 175, 141, 224, 174, 177, 224, 175, 129, 20, 21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 20, 13, 4, 95, 51, 67, 15, 65, 40, 50, 50, 123, 51, 0, 0, 13, 4, 95, 4, 16, 20, 10, 48, 40, 62, 62, 37,
-			0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 224, 174, 149, 224, 174, 169, 20, 11, 4, 95, 49, 48, 15, 48, 35, 47, 47, 0, 0, 0,
-			0, 0, 0, 9, 134, 224, 174, 149, 224, 174, 174, 20, 0, 0, 24, 149, 224, 174, 164, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174,
-			190, 224, 174, 175, 224, 175, 141, 20, 21, 146, 224, 174, 170, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 20, 0,
-			0, 18, 143, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 169, 224, 175, 129, 20, 0, 0, 0, 0, 0, 27, 152, 224, 174, 149, 224,
-			175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 224, 175, 141, 20, 27, 152, 224, 174, 164, 224, 174, 181, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 141, 20, 14, 5, 95, 48, 77, 50, 24, 55, 109, 141, 76, 109,
-			65, 0, 0, 24, 149, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 224, 175, 129, 20, 0, 16, 4,
-			95, 49, 50, 15, 48, 109, 50, 50, 37, 34, 109, 66, 141, 0, 0, 0, 23, 15, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141,
-			224, 174, 178, 83, 119, 50, 55, 109, 0, 0, 0, 0, 0, 30, 6, 224, 174, 149, 224, 174, 191, 49, 37, 55, 119, 65, 112, 140, 140, 109,
-			34, 0, 24, 82, 46, 32, 224, 174, 174, 224, 175, 128, 32, 0, 0, 33, 158, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224,
-			174, 174, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129, 20, 21, 146, 224, 174, 164, 224, 174, 159, 224, 174, 191, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 20, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224, 174, 174, 20, 24, 149, 224,
-			174, 170, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 20, 0, 27, 152, 224, 174, 164, 224, 175, 128,
-			224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174, 179, 224, 175, 141, 224, 174, 179, 20, 0, 12, 137, 224, 174, 149, 224, 175, 129, 224, 174,
-			163, 20, 0, 0, 0, 0, 24, 149, 224, 174, 164, 224, 175, 128, 224, 174, 170, 224, 174, 190, 224, 174, 181, 224, 174, 179, 224, 174, 191, 20,
-			0, 0, 0, 0, 0, 0, 14, 5, 95, 48, 77, 49, 24, 118, 57, 37, 34, 109, 65, 0, 0, 21, 146, 224, 174, 170, 224, 175, 139, 224,
-			174, 175, 224, 174, 191, 224, 174, 153, 224, 175, 141, 20, 20, 67, 28, 36, 0, 71, 34, 6, 37, 47, 37, 91, 15, 48, 6, 135, 50, 72,
-			88, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224, 175, 129, 20, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224,
-			174, 181, 224, 175, 135, 20, 0, 42, 167, 224, 174, 170, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 141, 20, 0, 27, 152, 224, 174, 170, 224, 174, 178, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 141, 20, 0, 0, 21, 146, 224, 174, 149, 224, 174, 190, 224, 174, 163,
-			224, 175, 141, 224, 174, 159, 224, 175, 129, 20, 0, 15, 140, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 20, 0, 27, 152, 224,
-			174, 149, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 20, 27, 152, 224, 174, 149, 224,
-			175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129, 20, 14, 4, 95, 51, 67, 48, 65, 40, 50,
-			50, 123, 51, 122, 0, 0, 0, 0, 0, 0, 12, 4, 95, 52, 67, 15, 50, 118, 50, 123, 51, 0, 12, 5, 95, 48, 77, 51, 24, 49,
-			119, 141, 37, 0, 0, 0, 24, 149, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 178, 20,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 19, 12, 224, 174, 137, 224, 174, 170, 224, 175, 141, 224, 174, 170, 40, 71, 71, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 183, 224, 174, 190, 20, 0, 20, 67, 73, 80, 128, 34, 6, 109,
-			91, 109, 50, 15, 34, 6, 123, 71, 109, 55, 88, 0, 0, 9, 3, 95, 49, 15, 39, 50, 51, 0, 0, 0, 0, 18, 12, 224, 174, 170,
-			224, 174, 191, 224, 174, 159, 224, 175, 141, 71, 37, 140, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 159, 224, 175, 141, 20, 0, 0,
-			0, 0, 0, 11, 3, 95, 50, 15, 37, 34, 109, 66, 141, 0, 13, 4, 95, 52, 67, 48, 50, 118, 50, 123, 51, 122, 0, 0, 0, 0,
-			0, 0, 27, 152, 224, 174, 164, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 191, 20, 11,
-			4, 95, 53, 67, 15, 134, 50, 123, 51, 0, 0, 0, 0, 10, 3, 95, 51, 15, 65, 123, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 129, 20, 13, 3, 95, 50, 48, 37, 34, 122, 71, 109, 72,
-			122, 0, 0, 0, 0, 0, 27, 152, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 175, 224,
-			175, 141, 20, 0, 9, 3, 95, 53, 15, 134, 50, 72, 0, 0, 0, 0, 18, 12, 224, 174, 154, 224, 175, 134, 224, 174, 159, 224, 175, 141,
-			89, 36, 140, 0, 27, 152, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 224, 175, 141,
-			20, 13, 3, 95, 51, 48, 65, 40, 48, 48, 109, 72, 122, 0, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 140, 224, 174, 169, 224,
-			175, 141, 20, 0, 8, 3, 95, 54, 15, 118, 51, 0, 0, 0, 18, 143, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
-			181, 20, 0, 0, 0, 0, 0, 0, 9, 3, 95, 55, 15, 38, 114, 92, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224,
-			175, 139, 224, 174, 164, 224, 174, 169, 224, 175, 136, 20, 0, 0, 0, 21, 146, 224, 174, 164, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
-			174, 169, 224, 175, 136, 20, 0, 14, 3, 95, 51, 88, 65, 40, 48, 48, 109, 47, 47, 122, 0, 13, 3, 95, 54, 48, 35, 51, 122, 71,
-			109, 72, 122, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 175, 128, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 136, 20, 0, 0,
-			11, 3, 95, 57, 15, 39, 50, 71, 109, 141, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 181, 224, 175, 135, 20, 0, 0, 14,
-			3, 95, 55, 48, 38, 36, 92, 122, 71, 109, 72, 122, 0, 0, 24, 149, 224, 174, 170, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 20, 12, 3, 95, 49, 67, 50, 123, 140, 140, 51, 37, 0, 0, 0, 0, 0, 12, 4, 95, 53, 67, 48,
-			134, 50, 123, 51, 122, 0, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 20, 0, 16, 3, 95, 49,
-			57, 48, 35, 47, 47, 39, 50, 71, 109, 72, 122, 0, 0, 0, 15, 3, 95, 50, 67, 37, 34, 122, 50, 123, 140, 140, 51, 37, 0, 0,
-			13, 4, 95, 54, 67, 15, 35, 51, 122, 50, 123, 51, 0, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224, 175, 139, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 20, 15, 140, 224, 174, 170, 224, 174, 181, 224, 174, 169, 224, 174, 191, 20, 0, 15, 3, 95,
-			49, 49, 48, 35, 47, 37, 50, 39, 50, 51, 122, 0, 0, 11, 3, 95, 49, 48, 48, 35, 47, 47, 122, 0, 0, 15, 3, 95, 51, 67,
-			65, 40, 50, 50, 123, 140, 140, 51, 37, 0, 0, 13, 4, 95, 52, 48, 15, 50, 118, 51, 48, 109, 72, 0, 16, 3, 95, 49, 50, 48,
-			109, 50, 50, 37, 34, 109, 66, 141, 122, 0, 0, 0, 0, 10, 3, 95, 52, 15, 50, 118, 50, 81, 0, 0, 0, 0, 15, 3, 95, 55,
-			88, 38, 36, 92, 122, 71, 109, 47, 47, 122, 0, 0, 14, 3, 95, 52, 67, 50, 118, 50, 123, 140, 140, 51, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 3, 95, 53, 67, 134, 50, 123, 140, 140, 51, 37, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 52, 48, 50,
-			118, 51, 48, 109, 72, 122, 0, 11, 3, 95, 49, 88, 48, 35, 72, 37, 50, 0, 0, 15, 3, 95, 54, 67, 35, 51, 122, 50, 123, 140,
-			140, 51, 37, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 50, 88, 37, 34, 122, 71, 109, 47, 47, 122, 0, 12, 3, 95, 53, 48,
-			134, 65, 71, 109, 72, 122, 0, 0, 16, 3, 95, 55, 67, 38, 36, 92, 122, 50, 123, 140, 140, 51, 37, 0, 0, 0, 0, 0, 10, 3,
-			95, 56, 15, 38, 36, 140, 140, 0, 0, 0, 0, 0, 19, 12, 224, 174, 154, 224, 175, 128, 224, 174, 154, 224, 175, 128, 76, 112, 76, 112,
-			0, 15, 3, 95, 56, 67, 38, 36, 66, 66, 123, 140, 140, 51, 37, 0, 0, 0, 0, 0, 16, 3, 95, 63, 63, 49, 40, 51, 37, 57,
-			4, 112, 141, 122, 10, 0, 0, 0, 18, 143, 224, 174, 164, 224, 174, 175, 224, 174, 190, 224, 174, 179, 224, 175, 129, 20, 0, 28, 18, 224,
-			174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 129, 224, 174, 159, 224, 174, 191, 141, 116, 48, 57, 122, 140, 37, 0, 14, 3, 95, 52, 88,
-			50, 118, 51, 48, 109, 47, 47, 122, 0, 0, 18, 3, 95, 57, 67, 47, 39, 62, 62, 118, 57, 37, 34, 109, 47, 47, 122, 0, 8, 3,
-			224, 174, 143, 57, 114, 0, 0, 0, 0, 18, 12, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 72, 37, 49, 0, 15, 140, 224,
-			174, 149, 224, 175, 135, 224, 174, 159, 224, 175, 141, 20, 15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 20, 15, 140, 224,
-			174, 170, 224, 174, 159, 224, 175, 129, 224, 174, 149, 20, 0, 14, 4, 95, 54, 67, 48, 35, 51, 122, 50, 123, 51, 122, 0, 0, 21, 146,
-			224, 174, 170, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 184, 224, 175, 141, 20, 0, 18, 143, 224, 174, 149, 224, 174, 179, 224, 174,
-			191, 224, 174, 178, 224, 175, 141, 20, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 141, 20, 10, 3, 224, 175,
-			141, 39, 140, 51, 122, 0, 0, 13, 3, 95, 53, 88, 134, 65, 71, 109, 47, 47, 122, 0, 13, 3, 95, 56, 48, 38, 36, 66, 71, 109,
-			72, 122, 0, 8, 3, 224, 175, 140, 148, 135, 0, 0, 0, 14, 4, 95, 55, 67, 15, 38, 36, 92, 122, 50, 123, 51, 0, 11, 6, 224,
-			174, 159, 224, 175, 141, 37, 140, 0, 0, 0, 8, 3, 224, 175, 136, 148, 134, 0, 0, 9, 3, 224, 175, 139, 148, 119, 12, 0, 9, 3,
-			224, 174, 131, 109, 81, 108, 0, 0, 8, 3, 224, 175, 138, 18, 39, 0, 14, 3, 224, 174, 130, 109, 50, 122, 89, 84, 109, 51, 109, 0,
-			12, 6, 224, 174, 153, 224, 175, 141, 37, 68, 81, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175, 141, 20, 33,
-			24, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 72, 37, 81, 72, 37,
-			81, 0, 14, 3, 95, 54, 88, 35, 51, 122, 71, 109, 47, 47, 122, 0, 13, 3, 95, 57, 48, 47, 39, 66, 66, 123, 51, 122, 0, 0,
-			9, 3, 224, 175, 135, 148, 114, 12, 0, 0, 12, 4, 95, 53, 48, 15, 134, 65, 71, 109, 72, 0, 8, 3, 224, 175, 134, 18, 36, 0,
-			0, 18, 143, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 174, 184, 224, 175, 141, 20, 8, 3, 224, 175, 129, 18, 40, 0, 0, 9, 3,
-			224, 175, 128, 148, 112, 12, 0, 0, 0, 9, 3, 224, 175, 130, 148, 123, 12, 0, 0, 0, 18, 143, 224, 174, 149, 224, 174, 190, 224, 174,
-			168, 224, 175, 141, 224, 174, 164, 20, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 20, 0, 0, 18, 12,
-			224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175, 135, 81, 34, 114, 0, 11, 6, 224, 174, 163, 224, 175, 141, 37, 66, 0, 0, 11, 3,
-			224, 175, 185, 34, 123, 71, 118, 57, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 169, 224,
-			175, 129, 20, 0, 0, 27, 152, 224, 174, 154, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 224, 175,
-			141, 20, 15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 159, 224, 175, 141, 20, 14, 3, 95, 56, 88, 38, 36, 66, 71, 109, 47, 47, 122,
-			0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 20, 0, 18, 12, 224, 174, 170, 224, 175,
-			136, 224, 174, 149, 224, 175, 141, 71, 134, 49, 0, 0, 0, 26, 18, 224, 174, 164, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 184,
-			224, 175, 141, 87, 118, 68, 49, 89, 0, 0, 18, 143, 224, 174, 149, 224, 174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 141, 20, 30, 155,
-			224, 174, 164, 224, 175, 128, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 159, 224, 175, 129, 20, 18, 143,
-			224, 174, 170, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 141, 20, 0, 27, 152, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175,
-			141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 224, 175, 129, 20, 15, 3, 95, 57, 88, 47, 39, 66, 66, 123, 140, 140, 51, 122, 0, 0,
-			0, 11, 6, 224, 174, 175, 224, 175, 141, 37, 57, 0, 0, 0, 15, 9, 224, 174, 134, 224, 174, 149, 224, 174, 190, 118, 108, 118, 0, 0,
-			0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 174, 191, 20, 19, 12, 224, 174, 159, 224, 174, 191, 224, 174, 181, 224, 174, 191,
-			140, 37, 84, 37, 0, 11, 6, 224, 174, 177, 224, 175, 141, 37, 51, 0, 11, 6, 224, 174, 169, 224, 175, 141, 37, 50, 0, 0, 15, 140,
-			224, 174, 164, 224, 175, 135, 224, 174, 181, 224, 174, 190, 20, 0, 36, 24, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 176, 224, 175,
-			129, 224, 174, 159, 224, 174, 169, 224, 175, 141, 83, 118, 72, 109, 34, 122, 141, 109, 50, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 174,
-			164, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 20, 0, 18, 143, 224, 174, 164, 224,
-			174, 178, 224, 174, 190, 224, 174, 175, 224, 175, 141, 20, 0, 0, 0, 21, 146, 224, 174, 164, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224,
-			174, 169, 224, 175, 141, 20, 0, 0, 15, 140, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 175, 129, 20, 0, 24, 149, 224, 174, 164, 224,
-			175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175, 141, 20, 11, 6, 224, 174, 179, 224, 175, 141, 37, 62, 0, 0,
-			0, 0, 33, 24, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 175, 141, 71, 134,
-			49, 49, 113, 55, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 20, 0, 0,
-			21, 146, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 135, 20, 0, 24, 149, 224, 174, 149, 224, 174, 179,
-			224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 20, 0, 15, 4, 95, 55, 67, 48, 38, 36, 92, 122, 50, 123, 51,
-			122, 0, 0, 24, 149, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 178, 224, 175, 135, 224, 174, 175, 224, 175, 135, 20, 0, 0, 13,
-			4, 95, 56, 67, 15, 38, 36, 66, 66, 123, 51, 0, 0, 18, 143, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149,
-			20, 0, 0, 24, 149, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 175, 141, 20, 0, 0, 33,
-			158, 224, 174, 149, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
-			129, 20, 33, 158, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 224, 175, 129, 20, 33, 158, 224, 174, 170, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 20, 0, 9, 3, 224, 174, 190, 148, 118, 12, 0, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 178,
-			224, 174, 191, 224, 174, 175, 20, 8, 3, 224, 174, 191, 18, 37, 0, 0, 0, 0, 11, 6, 224, 174, 159, 224, 174, 191, 140, 37, 0, 0,
-			15, 4, 95, 48, 77, 50, 55, 109, 141, 76, 109, 47, 47, 122, 0, 0, 27, 152, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 174, 191, 20, 12, 4, 95, 48, 77, 51, 49, 119, 141, 37, 114, 0, 0, 0, 21, 146, 224,
-			174, 170, 224, 175, 128, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 20, 15, 4, 95, 48, 77, 49, 118, 57, 37, 34, 109, 47,
-			47, 122, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 174, 191, 20, 0, 0, 18, 143, 224, 174, 164, 224, 174, 159,
-			224, 174, 191, 224, 174, 175, 224, 174, 190, 20, 0, 0, 0, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224, 174, 190, 224, 174, 175, 224, 174,
-			164, 224, 175, 141, 224, 174, 176, 224, 174, 191, 20, 0, 18, 143, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 178, 20,
-			0, 0, 12, 137, 224, 174, 170, 224, 174, 159, 224, 174, 190, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224,
-			174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
-			140, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174, 191, 20, 11, 6, 224, 174, 184, 224, 175, 141, 37, 89, 0, 0, 0, 18, 143, 224,
-			174, 170, 224, 174, 159, 224, 175, 129, 224, 174, 181, 224, 174, 190, 20, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 56, 67, 48, 38, 36,
-			66, 66, 123, 51, 122, 0, 0, 0, 0, 0, 23, 15, 224, 174, 154, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 89, 37, 34,
-			109, 65, 0, 0, 0, 0, 0, 0, 32, 20, 95, 35, 224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149,
-			118, 84, 109, 72, 122, 65, 118, 81, 109, 0, 0, 0, 0, 0, 0, 0, 0, 23, 68, 80, 19, 73, 48, 224, 174, 164, 224, 174, 174, 224,
-			174, 191, 224, 174, 180, 224, 175, 141, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 24, 224, 174, 170, 224, 174,
-			190, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 174, 174, 224, 175, 141, 83, 118, 72, 109, 34, 37, 141, 109, 65, 0, 27,
-			152, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175, 141, 224, 174, 154, 224, 174, 174, 224, 175, 141, 20, 27, 152, 224, 174,
-			170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 170, 224, 175, 141, 20, 0, 0, 0, 0, 27, 152, 224,
-			174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 224, 175, 129, 20, 0, 0, 18, 67, 12, 230,
-			64, 76, 6, 134, 50, 112, 88, 15, 57, 6, 40, 109, 50, 0, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224,
-			174, 174, 224, 174, 174, 224, 175, 141, 20, 21, 146, 224, 174, 170, 224, 174, 163, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 20,
-			21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 174, 174, 224, 175, 141, 20, 0, 0, 0, 0, 0, 19, 12, 224, 174,
-			170, 224, 175, 136, 224, 174, 178, 224, 175, 136, 83, 134, 55, 134, 0, 0, 18, 12, 224, 174, 170, 224, 175, 129, 224, 174, 159, 224, 175, 141,
-			83, 40, 141, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175, 141, 20, 0, 14, 9, 95, 35, 45, 224, 174, 178, 224, 175,
-			141, 37, 55, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 149, 224, 174, 181, 224, 174, 164, 224, 175, 141, 20, 0, 18, 12, 224, 174, 170,
-			224, 175, 136, 224, 174, 178, 224, 175, 141, 83, 134, 55, 0, 15, 140, 224, 174, 164, 224, 174, 169, 224, 174, 174, 224, 175, 141, 20, 15, 140,
-			224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 20, 0, 0, 0, 18, 143, 224, 174, 164, 224, 175, 134, 224, 174, 169, 224, 174, 174,
-			224, 175, 141, 20, 12, 137, 224, 174, 170, 224, 174, 178, 224, 175, 135, 20, 0, 0, 15, 140, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224,
-			174, 174, 20, 24, 149, 224, 174, 170, 224, 175, 141, 224, 174, 175, 224, 175, 130, 224, 174, 169, 224, 174, 184, 224, 175, 141, 20, 0, 25, 18,
-			224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 71, 34, 114, 49, 0, 27, 18, 95, 35, 45, 224, 174,
-			181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 118, 84, 109, 72, 122, 65, 0, 0, 0, 27, 152, 224, 174, 170, 224, 175, 141,
-			224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 20, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 175, 141, 20, 0, 0, 0, 0, 23, 15, 224, 174, 170, 224, 175, 135, 224, 174,
-			169, 224, 175, 141, 224, 174, 178, 83, 114, 50, 55, 109, 0, 0, 0, 0, 17, 4, 95, 57, 67, 48, 47, 39, 62, 62, 118, 57, 37, 34,
-			109, 65, 0, 0, 0, 0, 0, 12, 137, 224, 174, 170, 224, 174, 178, 224, 174, 191, 20, 0, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224,
-			175, 130, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 20, 12, 137, 224, 174, 170, 224, 174, 176, 224, 174, 164, 20, 21, 146, 224,
-			174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 20, 0, 24, 149, 224, 174, 170, 224, 174, 190, 224, 174, 164,
-			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 20, 0, 13, 4, 95, 56, 48, 15, 38, 36, 66, 71, 109, 72, 0, 0, 0, 0,
-			0, 12, 137, 224, 174, 149, 224, 174, 175, 224, 174, 190, 20, 0, 0, 0, 12, 137, 224, 174, 164, 224, 174, 190, 224, 174, 169, 20, 0, 0,
-			0, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 178, 20, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 176, 20, 0,
-			0, 0, 0, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 170, 20, 0, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174,
-			169, 20, 0, 19, 67, 41, 6, 64, 75, 6, 118, 48, 109, 50, 112, 88, 15, 57, 6, 36, 50, 0, 0, 0, 0, 24, 149, 224, 174, 164,
-			224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 174, 177, 224, 175, 141, 224, 174, 177, 20, 0, 0, 0, 27, 152, 224, 174, 164, 224, 174, 191,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 177, 224, 175, 141, 224, 174, 177, 20, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174,
-			178, 224, 175, 141, 224, 174, 175, 20, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 190,
-			20, 0, 15, 140, 224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 191, 20, 15, 140, 224, 174, 170, 224, 175, 139, 224, 174, 164, 224, 174,
-			191, 20, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 178, 224, 175, 129, 20, 0, 0, 0, 11, 2, 194, 190, 65, 40, 49, 49,
-			118, 55, 0, 0, 26, 18, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 34, 36, 141, 141, 37, 0,
-			18, 143, 224, 174, 170, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 190, 20, 13, 2, 195, 183, 84, 109, 81, 122, 47, 47, 109, 55,
-			0, 0, 8, 2, 194, 188, 49, 118, 55, 0, 0, 8, 2, 194, 189, 35, 34, 134, 0, 11, 6, 224, 174, 182, 224, 175, 141, 37, 91, 0,
-			0, 21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 181, 224, 175, 141, 224, 174, 178, 224, 174, 190, 20, 0, 13, 8, 95, 35, 224, 174, 174,
-			224, 175, 141, 118, 65, 0, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 178, 224, 175, 141, 20, 18, 12, 224, 174, 170,
-			224, 175, 128, 224, 174, 178, 224, 175, 141, 83, 112, 55, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 163, 224, 174, 174,
-			224, 175, 141, 20, 0, 0, 0, 0, 0, 0, 24, 149, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 174, 181, 224, 174, 164, 224, 174, 174,
-			224, 175, 141, 20, 33, 21, 95, 35, 45, 224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149, 118, 84, 109,
-			72, 122, 65, 118, 81, 109, 0, 0, 13, 4, 95, 57, 48, 15, 47, 39, 66, 66, 123, 51, 0, 18, 67, 85, 49, 0, 57, 6, 40, 36,
-			89, 15, 72, 6, 39, 55, 109, 88, 0, 0, 0, 0, 14, 9, 224, 174, 134, 224, 174, 170, 224, 175, 141, 118, 83, 0, 0, 0, 0, 15,
-			140, 224, 174, 149, 224, 174, 169, 224, 174, 174, 224, 175, 141, 20, 0, 0, 21, 146, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141,
-			224, 174, 184, 224, 175, 141, 20, 0, 0, 0, 26, 17, 95, 35, 224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 118,
-			84, 109, 72, 122, 65, 0, 0, 0, 12, 137, 224, 174, 164, 224, 175, 138, 224, 174, 179, 20, 0, 51, 36, 224, 174, 170, 224, 174, 190, 224,
-			174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 175, 141, 83,
-			118, 72, 109, 34, 37, 55, 55, 118, 65, 109, 55, 0, 0, 24, 149, 224, 174, 149, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164,
-			224, 174, 174, 224, 175, 141, 20, 0, 0, 0, 27, 152, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129,
-			224, 174, 174, 224, 175, 141, 20, 27, 152, 224, 174, 170, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 174,
-			224, 175, 141, 20, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 184, 224, 174, 191, 20, 0, 18, 143, 224, 174,
-			164, 224, 174, 190, 224, 174, 175, 224, 174, 174, 224, 175, 141, 20, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 178, 224, 174, 190,
-			20, 0, 25, 18, 224, 174, 159, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 154, 224, 175, 141, 140, 118, 34, 76, 0, 0, 0, 0,
-			0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 20, 21, 146, 224, 174, 170, 224,
-			174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 20, 13, 8, 95, 35, 224, 174, 178, 224, 175, 141, 37, 55, 0, 0, 0,
-			0, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 0, 0, 33, 158, 224, 174, 164, 224, 174, 190, 224, 174, 159,
-			224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 175, 224, 174, 174, 224, 175, 141, 20, 0, 18, 143, 224, 174, 170, 224, 174,
-			190, 224, 174, 149, 224, 174, 174, 224, 175, 141, 20, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 175, 129, 20, 0, 0, 26,
-			18, 224, 174, 170, 224, 175, 135, 224, 174, 169, 224, 174, 191, 224, 174, 178, 224, 175, 141, 83, 114, 50, 37, 55, 0, 26, 18, 224, 174, 170,
-			224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 178, 224, 175, 141, 83, 119, 50, 37, 55, 0, 0, 33, 158, 224, 174, 170, 224, 175, 139,
-			224, 174, 176, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 20, 0, 0, 24, 149, 224,
-			174, 154, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 175, 141, 20, 0, 0, 0, 27, 152, 224, 174, 149, 224,
-			175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 27, 152, 224, 174, 164, 224, 174, 181, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 27, 152, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224,
-			175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 0, 17, 5, 95, 49, 77, 50, 24, 39, 34, 122, 55, 109, 141, 76,
-			109, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5, 95, 49, 77, 51, 24, 39, 34, 122, 49, 119, 141, 37, 0, 0, 19, 12, 224,
-			174, 170, 224, 174, 190, 224, 174, 170, 224, 174, 190, 71, 118, 71, 118, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 174, 190,
-			20, 0, 0, 39, 164, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 175, 129, 224, 174, 174, 224, 175, 141, 20, 11, 2, 95, 34, 65, 114, 51, 81, 119, 62, 0, 0, 0, 0, 17, 2, 95, 39,
-			39, 140, 51, 134, 15, 65, 6, 114, 51, 81, 119, 62, 0, 0, 0, 13, 4, 95, 50, 48, 15, 37, 34, 122, 71, 109, 72, 0, 0, 0,
-			0, 14, 4, 95, 3, 1, 16, 49, 35, 48, 37, 140, 109, 55, 0, 0, 14, 2, 95, 41, 84, 109, 55, 109, 15, 48, 37, 51, 134, 0,
-			0, 13, 2, 95, 40, 37, 141, 109, 15, 48, 37, 51, 134, 0, 0, 0, 16, 2, 95, 46, 65, 40, 140, 51, 122, 15, 48, 40, 62, 62,
-			37, 0, 0, 12, 2, 95, 45, 37, 66, 134, 48, 48, 122, 81, 0, 0, 14, 2, 95, 44, 49, 118, 55, 15, 48, 40, 62, 62, 37, 0,
-			0, 10, 2, 95, 51, 65, 123, 50, 51, 122, 0, 0, 11, 2, 95, 50, 37, 34, 109, 66, 141, 122, 0, 0, 9, 2, 95, 49, 39, 50,
-			51, 122, 0, 0, 12, 2, 95, 48, 89, 40, 92, 37, 57, 109, 65, 0, 0, 9, 2, 95, 55, 38, 114, 92, 122, 0, 0, 8, 2, 95,
-			54, 118, 51, 122, 0, 0, 9, 2, 95, 53, 134, 50, 72, 122, 0, 0, 10, 2, 95, 52, 50, 118, 50, 81, 122, 0, 0, 15, 2, 95,
-			59, 118, 34, 134, 71, 15, 48, 40, 62, 62, 37, 0, 0, 17, 2, 95, 58, 65, 40, 49, 49, 118, 55, 15, 48, 40, 62, 62, 37, 0,
-			0, 11, 2, 95, 57, 39, 50, 71, 109, 141, 122, 0, 0, 18, 12, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 190, 71, 34, 118,
-			0, 10, 2, 95, 56, 38, 36, 140, 140, 122, 0, 0, 10, 2, 95, 63, 49, 114, 62, 84, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 174, 224, 174, 190, 20, 0, 0, 0, 0,
-			24, 149, 224, 174, 164, 224, 174, 175, 224, 174, 190, 224, 174, 168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 20, 0, 0, 0, 0, 0, 15,
-			140, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 141, 20, 16, 2, 95, 91, 37, 141, 109, 15, 89, 35, 72, 122, 34, 109, 65, 0,
-			0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 20, 0, 14, 2, 95, 95, 35, 141, 37, 81,
-			15, 49, 119, 141, 122, 0, 0, 0, 17, 2, 95, 93, 84, 109, 55, 109, 15, 89, 35, 72, 122, 34, 109, 65, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 13, 4, 95, 51, 48, 15, 65, 40, 48, 48, 109, 72, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224,
-			175, 141, 20, 0, 0, 15, 140, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 175, 135, 20, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224,
-			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 174, 224, 175, 141, 20, 21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 190, 224,
-			174, 174, 224, 175, 141, 20, 0, 0, 0, 24, 149, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169, 224, 174, 174, 224,
-			175, 141, 20, 0, 0, 21, 146, 224, 174, 154, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 128, 20, 0, 0, 0, 33,
+		static unsigned char espeakdata_dicts63_data[110758] = {
+			0, 4, 0, 0, 57, 40, 0, 0, 9, 134, 224, 174, 164, 224, 174, 169, 15, 0, 18, 143, 224, 174, 154, 224, 174, 176, 224, 175, 141, 224,
+			174, 154, 224, 175, 141, 15, 0, 0, 0, 0, 7, 65, 4, 114, 57, 0, 49, 0, 15, 140, 224, 174, 170, 224, 175, 129, 224, 174, 184, 224,
+			175, 129, 15, 20, 12, 95, 35, 45, 224, 174, 181, 224, 174, 164, 224, 175, 129, 118, 84, 109, 72, 122, 0, 0, 24, 149, 224, 174, 154, 224,
+			174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 141, 15, 9, 134, 224, 174, 164, 224, 174, 181, 15, 0, 21, 146,
+			224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 174, 224, 175, 141, 15, 0, 6, 65, 8, 71, 112, 0, 0, 0, 0, 0,
+			21, 6, 224, 174, 170, 224, 174, 191, 71, 37, 57, 114, 0, 24, 82, 46, 32, 224, 174, 143, 32, 6, 65, 12, 89, 112, 0, 0, 27, 152,
+			224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 174, 190, 224, 174, 175, 224, 175, 141, 15, 0, 0, 0, 6, 65,
+			16, 72, 112, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 15, 15, 140, 224, 174, 170, 224, 175, 139, 224,
+			174, 169, 224, 174, 191, 15, 9, 134, 224, 174, 170, 224, 174, 181, 15, 11, 6, 224, 174, 178, 224, 175, 141, 37, 55, 0, 0, 13, 4, 95,
+			100, 112, 116, 10, 48, 40, 62, 62, 37, 0, 0, 18, 143, 224, 174, 170, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 15, 5,
+			65, 20, 112, 0, 0, 12, 137, 224, 174, 149, 224, 174, 190, 224, 174, 169, 15, 0, 0, 13, 6, 224, 174, 170, 224, 174, 170, 48, 109, 48,
+			109, 0, 0, 15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 175, 141, 15, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65,
+			28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 11, 1, 33, 84, 37, 57, 109, 48, 48, 122, 0, 0, 0, 7, 1,
+			35, 38, 36, 66, 0, 0, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 154, 224,
+			175, 141, 15, 7, 65, 36, 118, 57, 0, 49, 0, 13, 1, 37, 84, 37, 92, 122, 49, 49, 118, 140, 122, 0, 0, 10, 1, 38, 65, 109,
+			139, 51, 122, 65, 0, 0, 30, 155, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 224,
+			174, 190, 224, 174, 169, 15, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 12, 1, 42, 48, 36, 34, 122, 49, 49, 109, 55, 0, 0, 10,
+			1, 43, 49, 123, 139, 139, 109, 55, 0, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 0, 9, 1, 47, 89, 118, 57, 84, 122, 0, 0,
+			6, 65, 48, 116, 55, 0, 0, 15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 174, 190, 15, 0, 15, 140, 224, 174, 170, 224, 175,
+			139, 224, 174, 149, 224, 174, 191, 15, 0, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 33, 158, 224, 174, 170, 224, 174, 190, 224, 174, 164,
+			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 15, 0, 6, 65, 56, 116, 50, 0, 0,
+			0, 0, 0, 10, 1, 60, 49, 40, 51, 134, 84, 122, 0, 5, 65, 60, 119, 0, 0, 9, 1, 61, 89, 109, 65, 109, 65, 0, 0, 10,
+			1, 62, 65, 37, 81, 122, 72, 37, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57, 123, 0, 0, 0,
+			15, 140, 224, 174, 149, 224, 175, 139, 224, 174, 178, 224, 174, 191, 15, 0, 0, 6, 65, 72, 118, 51, 0, 0, 15, 9, 224, 174, 149, 224,
+			174, 170, 224, 175, 141, 49, 109, 48, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 190, 224, 174, 159, 224, 175, 141, 15, 15, 140, 224,
+			174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 15, 18, 12, 224, 174, 170, 224, 175, 128, 224, 174, 170, 224, 175, 141, 71, 112, 48, 0,
+			6, 65, 76, 116, 89, 0, 0, 0, 0, 0, 6, 65, 80, 25, 112, 0, 0, 0, 11, 6, 224, 174, 185, 224, 175, 141, 37, 99, 0, 0,
+			0, 6, 65, 84, 57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 19, 11, 95, 35, 224, 174, 181, 224, 174, 164,
+			224, 175, 129, 118, 84, 109, 72, 122, 0, 0, 15, 1, 92, 48, 6, 37, 50, 15, 89, 4, 118, 57, 84, 122, 0, 11, 65, 92, 72, 109,
+			71, 109, 55, 57, 123, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 175, 135, 224, 174, 149, 224, 174, 174, 224, 175, 141, 15, 18, 143, 224,
+			174, 170, 224, 174, 190, 224, 174, 177, 224, 174, 174, 224, 175, 141, 15, 23, 15, 95, 35, 45, 224, 174, 134, 224, 174, 181, 224, 174, 164, 224,
+			175, 129, 118, 84, 109, 72, 122, 0, 0, 7, 65, 96, 116, 49, 89, 0, 0, 18, 4, 95, 49, 77, 50, 39, 34, 122, 55, 109, 140, 76,
+			109, 47, 47, 122, 0, 0, 21, 146, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 15, 15, 4, 95,
+			49, 77, 51, 39, 34, 122, 49, 119, 140, 37, 114, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0, 15, 140, 224, 174, 149,
+			224, 174, 191, 224, 174, 159, 224, 175, 129, 15, 7, 65, 104, 88, 116, 72, 0, 0, 0, 11, 67, 21, 84, 128, 57, 123, 34, 119, 88, 0,
+			0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 163, 224, 175, 141, 15, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175,
+			129, 15, 15, 140, 224, 174, 170, 224, 175, 128, 224, 174, 154, 224, 175, 141, 15, 0, 0, 0, 0, 0, 0, 11, 6, 224, 174, 180, 224, 175,
+			141, 37, 92, 0, 0, 12, 137, 224, 174, 164, 224, 174, 191, 224, 174, 159, 15, 0, 0, 21, 146, 224, 174, 164, 224, 174, 159, 224, 175, 141,
+			224, 174, 154, 224, 174, 163, 224, 175, 136, 15, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 175, 141, 15, 15, 140,
+			224, 174, 170, 224, 174, 149, 224, 174, 164, 224, 175, 141, 15, 0, 0, 24, 67, 5, 81, 0, 39, 89, 47, 34, 6, 36, 113, 55, 113, 109,
+			50, 15, 72, 6, 39, 55, 109, 88, 0, 0, 0, 12, 1, 124, 89, 36, 68, 81, 122, 47, 47, 122, 0, 0, 0, 13, 4, 95, 54, 48,
+			111, 35, 51, 122, 71, 109, 72, 0, 0, 0, 0, 30, 21, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174,
+			176, 224, 175, 141, 48, 34, 109, 89, 118, 34, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 175, 129, 224, 174, 154, 224,
+			175, 129, 15, 0, 0, 0, 30, 155, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 177, 224, 175, 129, 15, 0, 21, 146, 224, 174, 170, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 175, 15, 0, 0,
+			21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 15, 0, 12, 137, 224, 174, 149, 224, 174, 164,
+			224, 174, 191, 15, 11, 4, 95, 49, 67, 48, 50, 123, 51, 122, 0, 0, 0, 0, 0, 0, 18, 143, 224, 174, 164, 224, 175, 135, 224, 174,
+			181, 224, 174, 164, 224, 174, 190, 15, 0, 0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 15, 0, 21, 146, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 15, 0, 0, 24, 149, 224,
+			174, 170, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 169, 224, 174, 191, 15, 0, 0, 0, 0, 0, 0, 0, 20, 67,
+			36, 228, 128, 6, 113, 50, 72, 113, 109, 50, 15, 34, 6, 123, 48, 112, 88, 0, 0, 0, 0, 15, 140, 224, 174, 154, 224, 174, 190, 224,
+			174, 175, 224, 174, 190, 15, 12, 137, 224, 174, 164, 224, 174, 191, 224, 174, 169, 15, 0, 15, 140, 224, 174, 149, 224, 175, 139, 224, 174, 170,
+			224, 174, 191, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 190, 15,
+			15, 140, 224, 174, 170, 224, 174, 159, 224, 174, 181, 224, 174, 190, 15, 0, 0, 0, 0, 18, 143, 224, 174, 164, 224, 174, 176, 224, 174, 190,
+			224, 174, 181, 224, 174, 191, 15, 0, 10, 4, 95, 49, 67, 111, 50, 123, 51, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 129, 224, 174,
+			149, 224, 174, 190, 224, 174, 176, 224, 174, 191, 15, 0, 0, 0, 0, 0, 0, 14, 4, 95, 55, 48, 111, 38, 36, 92, 122, 71, 109, 72,
+			0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 129, 15, 0, 0, 11, 6, 224, 174, 183, 224,
+			175, 141, 37, 93, 0, 0, 0, 0, 0, 9, 134, 224, 174, 149, 224, 174, 149, 15, 11, 6, 224, 174, 181, 224, 175, 141, 37, 84, 0, 11,
+			6, 224, 174, 149, 224, 175, 141, 37, 49, 0, 0, 15, 9, 224, 174, 147, 224, 174, 149, 224, 175, 139, 119, 108, 119, 0, 0, 0, 0, 0,
+			14, 4, 95, 50, 67, 48, 37, 34, 122, 50, 123, 51, 122, 0, 0, 15, 140, 224, 174, 164, 224, 174, 181, 224, 174, 149, 224, 175, 141, 15,
+			15, 140, 224, 174, 164, 224, 174, 159, 224, 174, 149, 224, 175, 141, 15, 0, 0, 0, 0, 9, 134, 224, 174, 149, 224, 174, 159, 15, 0, 0,
+			33, 158, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 224,
+			175, 129, 15, 21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 15, 0, 0, 0, 0, 0, 0,
+			0, 0, 9, 134, 224, 174, 149, 224, 174, 169, 15, 0, 0, 0, 0, 0, 9, 134, 224, 174, 149, 224, 174, 174, 15, 0, 0, 24, 149, 224,
+			174, 164, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 175, 224, 175, 141, 15, 21, 146, 224, 174, 170, 224, 174, 181, 224,
+			175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 15, 0, 16, 4, 95, 49, 57, 111, 48, 35, 47, 47, 39, 50, 71, 109, 72, 0, 0,
+			18, 143, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 169, 224, 175, 129, 15, 0, 0, 0, 0, 0, 27, 152, 224, 174, 149, 224, 175,
+			135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 224, 175, 141, 15, 27, 152, 224, 174, 164, 224, 174, 181, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 141, 15, 0, 24, 149, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224,
+			174, 174, 224, 175, 129, 224, 174, 169, 224, 175, 129, 15, 0, 0, 0, 23, 15, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224,
+			174, 178, 83, 119, 50, 55, 109, 0, 0, 0, 0, 0, 30, 6, 224, 174, 149, 224, 174, 191, 49, 37, 55, 119, 65, 112, 139, 139, 109, 34,
+			0, 24, 82, 46, 32, 224, 174, 174, 224, 175, 128, 32, 0, 0, 33, 158, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174,
+			174, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129, 15, 21, 146, 224, 174, 164, 224, 174, 159, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 15, 13, 4, 95, 50, 67, 111, 37, 34, 122, 50, 123, 51, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224,
+			174, 176, 224, 175, 129, 224, 174, 174, 15, 24, 149, 224, 174, 170, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 15, 0, 27, 152, 224, 174, 164, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174, 179, 224, 175, 141, 224, 174, 179,
+			15, 0, 12, 137, 224, 174, 149, 224, 175, 129, 224, 174, 163, 15, 0, 0, 0, 0, 24, 149, 224, 174, 164, 224, 175, 128, 224, 174, 170, 224,
+			174, 190, 224, 174, 181, 224, 174, 179, 224, 174, 191, 15, 0, 18, 12, 224, 174, 156, 224, 175, 134, 224, 174, 169, 224, 175, 141, 88, 36, 50,
+			0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 139, 224, 174, 175, 224, 174, 191, 224, 174, 153, 224, 175, 141, 15, 20, 67,
+			28, 36, 0, 71, 34, 6, 37, 47, 37, 91, 15, 48, 6, 135, 50, 72, 88, 0, 0, 15, 3, 226, 134, 144, 6, 37, 140, 109, 72, 109,
+			65, 71, 122, 0, 0, 15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224, 175, 129, 15, 0, 16, 3, 226, 134, 146, 84, 6, 109, 55,
+			109, 72, 109, 65, 71, 122, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 181, 224, 175, 135, 15, 0, 42, 167, 224, 174, 170, 224,
+			174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224,
+			174, 169, 224, 175, 141, 15, 0, 27, 152, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169,
+			224, 175, 141, 15, 0, 0, 21, 146, 224, 174, 149, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 15, 0, 15, 140,
+			224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 15, 0, 27, 152, 224, 174, 149, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 15, 27, 152, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 169, 224, 175,
+			141, 224, 174, 169, 224, 175, 129, 15, 14, 4, 95, 51, 67, 48, 65, 40, 50, 50, 123, 51, 122, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+			149, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 178, 15, 0, 0, 18, 143, 224, 174, 170,
+			224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 190, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 49,
+			111, 48, 35, 47, 37, 50, 39, 50, 51, 0, 0, 0, 0, 0, 14, 3, 226, 132, 162, 84, 6, 109, 66, 37, 81, 109, 65, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 51, 67, 111, 65, 40, 50, 50, 123, 51, 0, 0, 19, 12, 224, 174, 137, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 40, 71, 71, 109, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 95, 49, 48, 111, 48, 35, 47, 47,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 183, 224, 174, 190, 15, 24, 3, 226, 128, 161,
+			6, 37, 16, 109, 139, 139, 134, 49, 15, 49, 6, 40, 47, 47, 122, 84, 118, 62, 0, 0, 20, 67, 73, 80, 128, 34, 6, 109, 91, 109,
+			50, 15, 34, 6, 123, 71, 109, 55, 88, 0, 14, 3, 226, 128, 160, 49, 40, 47, 47, 122, 84, 118, 62, 0, 0, 0, 12, 3, 226, 128,
+			162, 47, 6, 119, 139, 139, 118, 0, 0, 0, 18, 12, 224, 174, 170, 224, 174, 191, 224, 174, 159, 224, 175, 141, 71, 37, 139, 0, 15, 140,
+			224, 174, 170, 224, 174, 191, 224, 174, 159, 224, 175, 141, 15, 0, 0, 16, 4, 95, 49, 50, 111, 48, 109, 50, 50, 37, 34, 109, 66, 140,
+			0, 14, 5, 95, 48, 77, 50, 120, 55, 109, 140, 76, 109, 65, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224,
+			175, 129, 224, 174, 181, 224, 174, 190, 15, 13, 4, 95, 52, 67, 48, 50, 118, 50, 123, 51, 122, 0, 0, 0, 0, 0, 0, 27, 152, 224,
+			174, 164, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 191, 15, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 129, 15, 13, 3, 95, 50, 48, 37, 34,
+			122, 71, 109, 72, 122, 0, 0, 0, 14, 5, 95, 48, 77, 49, 120, 118, 57, 37, 34, 109, 65, 0, 0, 0, 27, 152, 224, 174, 170, 224,
+			175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 175, 224, 175, 141, 15, 0, 0, 0, 0, 18, 12, 224, 174, 154,
+			224, 175, 134, 224, 174, 159, 224, 175, 141, 89, 36, 139, 0, 27, 152, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159,
+			224, 174, 191, 224, 174, 169, 224, 175, 141, 15, 13, 3, 95, 51, 48, 65, 40, 48, 48, 109, 72, 122, 0, 0, 0, 0, 0, 15, 140, 224,
+			174, 149, 224, 175, 140, 224, 174, 169, 224, 175, 141, 15, 0, 0, 0, 18, 143, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224,
+			174, 181, 15, 0, 0, 0, 12, 4, 95, 52, 67, 111, 50, 118, 50, 123, 51, 0, 12, 5, 95, 48, 77, 51, 120, 49, 119, 140, 37, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 175, 139, 224, 174, 164, 224, 174, 169, 224, 175, 136, 15, 0, 0,
+			0, 21, 146, 224, 174, 164, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 169, 224, 175, 136, 15, 0, 14, 3, 95, 51, 88, 65, 40,
+			48, 48, 109, 47, 47, 122, 0, 13, 3, 95, 54, 48, 35, 51, 122, 71, 109, 72, 122, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 175,
+			128, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 136, 15, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 181, 224, 175,
+			135, 15, 0, 0, 14, 3, 95, 55, 48, 38, 36, 92, 122, 71, 109, 72, 122, 0, 0, 24, 149, 224, 174, 170, 224, 174, 178, 224, 174, 191,
+			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 15, 12, 3, 95, 49, 67, 50, 123, 139, 139, 51, 37, 0, 0, 0, 30, 155, 224,
+			174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 149, 224, 175, 141, 15, 0, 0, 12,
+			4, 95, 53, 67, 48, 134, 50, 123, 51, 122, 0, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 15,
+			0, 16, 3, 95, 49, 57, 48, 35, 47, 47, 39, 50, 71, 109, 72, 122, 0, 0, 0, 15, 3, 95, 50, 67, 37, 34, 122, 50, 123, 139,
+			139, 51, 37, 0, 13, 3, 226, 151, 143, 84, 6, 109, 139, 139, 109, 65, 0, 0, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224, 175, 139,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 15, 15, 140, 224, 174, 170, 224, 174, 181, 224, 174, 169, 224, 174, 191,
+			15, 0, 15, 3, 95, 49, 49, 48, 35, 47, 37, 50, 39, 50, 51, 122, 0, 0, 11, 3, 95, 49, 48, 48, 35, 47, 47, 122, 0, 0,
+			15, 3, 95, 51, 67, 65, 40, 50, 50, 123, 139, 139, 51, 37, 0, 0, 16, 3, 95, 49, 50, 48, 109, 50, 50, 37, 34, 109, 66, 140,
+			122, 0, 0, 15, 4, 95, 99, 121, 114, 89, 37, 34, 37, 55, 55, 37, 49, 0, 0, 0, 0, 0, 0, 15, 3, 95, 55, 88, 38, 36,
+			92, 122, 71, 109, 47, 47, 122, 0, 0, 14, 3, 95, 52, 67, 50, 118, 50, 123, 139, 139, 51, 37, 0, 0, 0, 0, 0, 9, 3, 95,
+			49, 111, 39, 50, 51, 0, 0, 0, 0, 0, 13, 3, 95, 53, 67, 134, 50, 123, 139, 139, 51, 37, 0, 0, 0, 0, 0, 11, 3, 95,
+			50, 111, 37, 34, 109, 66, 140, 0, 0, 0, 0, 13, 3, 95, 52, 48, 50, 118, 51, 48, 109, 72, 122, 0, 11, 3, 95, 49, 88, 48,
+			35, 72, 37, 50, 0, 0, 15, 3, 95, 54, 67, 35, 51, 122, 50, 123, 139, 139, 51, 37, 0, 0, 11, 4, 95, 53, 67, 111, 134, 50,
+			123, 51, 0, 0, 0, 19, 3, 226, 150, 160, 49, 6, 109, 34, 122, 67, 75, 109, 72, 122, 16, 109, 65, 0, 0, 10, 3, 95, 51, 111,
+			65, 123, 50, 51, 0, 0, 0, 0, 14, 3, 95, 50, 88, 37, 34, 122, 71, 109, 47, 47, 122, 0, 12, 3, 95, 53, 48, 134, 65, 71,
+			109, 72, 122, 0, 0, 16, 3, 95, 55, 67, 38, 36, 92, 122, 50, 123, 139, 139, 51, 37, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3,
+			226, 158, 148, 84, 6, 109, 55, 109, 72, 109, 65, 71, 122, 0, 0, 19, 12, 224, 174, 154, 224, 175, 128, 224, 174, 154, 224, 175, 128, 76,
+			112, 76, 112, 0, 15, 3, 95, 56, 67, 38, 36, 66, 66, 123, 139, 139, 51, 37, 0, 0, 0, 0, 0, 9, 3, 95, 53, 111, 134, 50,
+			72, 0, 16, 3, 95, 63, 63, 49, 40, 51, 37, 57, 4, 112, 140, 122, 10, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174,
+			181, 224, 174, 190, 15, 18, 143, 224, 174, 164, 224, 174, 175, 224, 174, 190, 224, 174, 179, 224, 175, 129, 15, 0, 28, 18, 224, 174, 159, 224,
+			174, 191, 224, 174, 170, 224, 175, 129, 224, 174, 159, 224, 174, 191, 140, 116, 48, 57, 122, 139, 37, 0, 14, 3, 95, 52, 88, 50, 118, 51,
+			48, 109, 47, 47, 122, 0, 0, 18, 3, 95, 57, 67, 47, 39, 62, 62, 118, 57, 37, 34, 109, 47, 47, 122, 0, 8, 3, 224, 174, 143,
+			57, 114, 0, 0, 0, 0, 18, 12, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 72, 37, 49, 0, 15, 140, 224, 174, 149, 224,
+			175, 135, 224, 174, 159, 224, 175, 141, 15, 15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 15, 15, 140, 224, 174, 170, 224,
+			174, 159, 224, 175, 129, 224, 174, 149, 15, 8, 3, 224, 175, 144, 119, 65, 0, 0, 8, 3, 95, 54, 111, 118, 51, 0, 14, 4, 95, 54,
+			67, 48, 35, 51, 122, 50, 123, 51, 122, 0, 0, 21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 184, 224, 175,
+			141, 15, 0, 18, 143, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 178, 224, 175, 141, 15, 18, 143, 224, 174, 170, 224, 174, 178, 224,
+			174, 191, 224, 174, 149, 224, 175, 141, 15, 10, 3, 224, 175, 141, 39, 139, 51, 122, 0, 0, 13, 3, 95, 53, 88, 134, 65, 71, 109, 47,
+			47, 122, 0, 13, 3, 95, 56, 48, 38, 36, 66, 71, 109, 72, 122, 0, 8, 3, 224, 175, 140, 147, 135, 0, 0, 0, 11, 6, 224, 174,
+			159, 224, 175, 141, 37, 139, 0, 0, 0, 8, 3, 224, 175, 136, 147, 134, 0, 0, 9, 3, 95, 55, 111, 38, 114, 92, 0, 9, 3, 224,
+			175, 139, 147, 119, 12, 0, 9, 3, 224, 174, 131, 109, 81, 108, 0, 0, 8, 3, 224, 175, 138, 18, 39, 0, 14, 3, 224, 174, 130, 109,
+			50, 122, 89, 84, 109, 51, 109, 0, 12, 6, 224, 174, 153, 224, 175, 141, 37, 68, 81, 0, 0, 35, 23, 95, 35, 224, 174, 134, 224, 174,
+			181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149, 118, 84, 109, 72, 122, 65, 118, 81, 109, 0, 0, 15, 140, 224,
+			174, 149, 224, 174, 191, 224, 174, 176, 224, 175, 141, 15, 33, 24, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 224, 174, 149, 224, 175, 141, 72, 37, 81, 72, 37, 81, 0, 14, 3, 95, 54, 88, 35, 51, 122, 71, 109, 47, 47, 122, 0, 13,
+			3, 95, 57, 48, 47, 39, 66, 66, 123, 51, 122, 0, 0, 9, 3, 224, 175, 135, 147, 114, 12, 0, 0, 8, 3, 224, 175, 134, 18, 36,
+			0, 0, 18, 143, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 174, 184, 224, 175, 141, 15, 8, 3, 224, 175, 129, 18, 40, 0, 0, 9,
+			3, 224, 175, 128, 147, 112, 12, 0, 0, 0, 9, 3, 224, 175, 130, 147, 123, 12, 0, 0, 0, 18, 143, 224, 174, 149, 224, 174, 190, 224,
+			174, 168, 224, 175, 141, 224, 174, 164, 15, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 15, 0, 0, 18,
+			12, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175, 135, 81, 34, 114, 0, 11, 6, 224, 174, 163, 224, 175, 141, 37, 66, 0, 0, 11,
+			3, 224, 175, 185, 34, 123, 71, 118, 57, 0, 0, 23, 3, 224, 175, 184, 65, 6, 114, 55, 37, 34, 122, 48, 48, 109, 72, 122, 15, 48,
+			6, 119, 55, 0, 0, 11, 3, 95, 57, 111, 39, 50, 71, 109, 72, 0, 0, 21, 146, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175,
+			141, 224, 174, 169, 224, 175, 129, 15, 13, 3, 224, 175, 186, 38, 36, 66, 66, 122, 34, 122, 0, 0, 10, 3, 224, 175, 181, 118, 66, 140,
+			122, 0, 0, 27, 152, 224, 174, 154, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 224, 175, 141, 15,
+			15, 140, 224, 174, 170, 224, 175, 130, 224, 174, 159, 224, 175, 141, 15, 14, 3, 95, 56, 88, 38, 36, 66, 71, 109, 47, 47, 122, 0, 11,
+			3, 224, 175, 180, 65, 118, 72, 109, 65, 0, 0, 12, 3, 224, 175, 183, 84, 109, 34, 109, 84, 122, 0, 0, 11, 3, 224, 175, 182, 48,
+			109, 139, 51, 122, 0, 0, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 15, 10, 3, 224, 175, 177, 50,
+			123, 51, 122, 0, 0, 18, 12, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 71, 134, 49, 0, 11, 3, 224, 175, 176, 48, 109,
+			47, 47, 122, 0, 0, 9, 3, 224, 175, 179, 50, 118, 62, 0, 0, 26, 18, 224, 174, 164, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224,
+			174, 184, 224, 175, 141, 87, 118, 68, 49, 89, 0, 12, 3, 224, 175, 178, 118, 57, 37, 34, 109, 65, 0, 0, 18, 143, 224, 174, 149, 224,
+			174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 141, 15, 30, 155, 224, 174, 164, 224, 175, 128, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 175, 139, 224, 174, 159, 224, 175, 129, 15, 18, 143, 224, 174, 170, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 141, 15,
+			0, 27, 152, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 224, 175, 129, 15, 15, 3,
+			95, 57, 88, 47, 39, 66, 66, 123, 139, 139, 51, 122, 0, 0, 0, 13, 4, 95, 54, 67, 111, 35, 51, 122, 50, 123, 51, 0, 11, 6,
+			224, 174, 175, 224, 175, 141, 37, 57, 0, 0, 0, 15, 9, 224, 174, 134, 224, 174, 149, 224, 174, 190, 118, 108, 118, 0, 0, 0, 15, 140,
+			224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 174, 191, 15, 19, 12, 224, 174, 159, 224, 174, 191, 224, 174, 181, 224, 174, 191, 139, 37, 84,
+			37, 0, 11, 6, 224, 174, 177, 224, 175, 141, 37, 51, 0, 11, 6, 224, 174, 169, 224, 175, 141, 37, 50, 0, 0, 15, 140, 224, 174, 164,
+			224, 175, 135, 224, 174, 181, 224, 174, 190, 15, 0, 36, 24, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224, 174,
+			159, 224, 174, 169, 224, 175, 141, 83, 118, 72, 109, 34, 122, 140, 109, 50, 0, 0, 0, 13, 4, 95, 52, 48, 111, 50, 118, 51, 48, 109,
+			72, 0, 0, 0, 0, 10, 3, 95, 52, 111, 50, 118, 50, 81, 0, 17, 4, 95, 115, 117, 112, 65, 6, 114, 55, 36, 92, 122, 47, 47,
+			122, 0, 0, 27, 152, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 15,
+			0, 18, 143, 224, 174, 164, 224, 174, 178, 224, 174, 190, 224, 174, 175, 224, 175, 141, 15, 0, 0, 0, 21, 146, 224, 174, 164, 224, 174, 159,
+			224, 174, 191, 224, 174, 175, 224, 174, 169, 224, 175, 141, 15, 0, 0, 15, 140, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 175, 129, 15,
+			0, 24, 149, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175, 141, 15, 11, 6, 224, 174, 179,
+			224, 175, 141, 37, 62, 0, 0, 0, 0, 33, 24, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224,
+			174, 178, 224, 175, 141, 71, 134, 49, 49, 113, 55, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 129, 15, 0, 0, 21, 146, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 135, 15, 0, 24,
+			149, 224, 174, 149, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 15, 0, 15, 4, 95, 55, 67, 48,
+			38, 36, 92, 122, 50, 123, 51, 122, 0, 0, 24, 149, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 178, 224, 175, 135, 224, 174, 175,
+			224, 175, 135, 15, 0, 0, 0, 18, 143, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 15, 0, 0, 24, 149, 224,
+			174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 175, 141, 15, 0, 0, 33, 158, 224, 174, 149, 224, 175,
+			135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 15, 33, 158, 224, 174,
+			149, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 15, 33,
+			158, 224, 174, 170, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
+			129, 15, 0, 12, 137, 224, 174, 170, 224, 175, 139, 224, 174, 164, 15, 9, 3, 224, 174, 190, 147, 118, 12, 0, 0, 18, 143, 224, 174, 170,
+			224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 175, 15, 8, 3, 224, 174, 191, 18, 37, 0, 0, 0, 0, 11, 6, 224, 174, 159, 224,
+			174, 191, 139, 37, 0, 0, 10, 3, 95, 56, 111, 38, 36, 139, 139, 0, 15, 4, 95, 48, 77, 50, 55, 109, 140, 76, 109, 47, 47, 122,
+			0, 0, 27, 152, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 174, 191, 15, 12,
+			4, 95, 48, 77, 51, 49, 119, 140, 37, 114, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 176, 224, 174, 190, 224, 174, 174,
+			224, 174, 163, 15, 15, 4, 95, 48, 77, 49, 118, 57, 37, 34, 109, 47, 47, 122, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 191, 224,
+			174, 176, 224, 174, 191, 15, 0, 0, 18, 143, 224, 174, 164, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 15, 0, 0, 0, 0,
+			0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 178, 15, 0, 0, 12, 137, 224, 174, 170, 224,
+			174, 159, 224, 174, 190, 15, 0, 0, 0, 0, 14, 4, 95, 55, 67, 111, 38, 36, 92, 122, 50, 123, 51, 0, 0, 0, 0, 0, 0, 0,
+			21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 15, 0, 0, 12, 4, 95, 53, 48, 111, 134,
+			65, 71, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174,
+			191, 15, 11, 6, 224, 174, 184, 224, 175, 141, 37, 89, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 159, 224, 175, 129, 224, 174, 181, 224,
+			174, 190, 15, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 56, 67, 48, 38, 36, 66, 66, 123, 51, 122, 0, 0, 0, 0, 0, 23, 15,
+			224, 174, 154, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 89, 37, 34, 109, 65, 0, 0, 0, 0, 0, 0, 32, 20, 95, 35,
+			224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149, 118, 84, 109, 72, 122, 65, 118, 81, 109, 0, 0, 0,
+			0, 14, 4, 95, 99, 97, 112, 49, 35, 48, 37, 139, 109, 55, 0, 0, 36, 24, 95, 35, 45, 224, 174, 134, 224, 174, 181, 224, 174, 164,
+			224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149, 118, 84, 109, 72, 122, 65, 118, 81, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 36, 24, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 174,
+			174, 224, 175, 141, 83, 118, 72, 109, 34, 37, 140, 109, 65, 0, 27, 152, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175,
+			141, 224, 174, 154, 224, 174, 174, 224, 175, 141, 15, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 224, 174, 170, 224, 175, 141, 15, 0, 0, 0, 0, 27, 152, 224, 174, 164, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
+			175, 129, 224, 174, 169, 224, 175, 129, 15, 0, 0, 21, 14, 95, 35, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 37, 55, 122,
+			65, 0, 13, 4, 95, 56, 67, 111, 38, 36, 66, 66, 123, 51, 0, 18, 67, 12, 230, 64, 76, 6, 134, 50, 112, 88, 15, 57, 6, 40,
+			109, 50, 0, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 174, 224, 175, 141, 15, 21, 146,
+			224, 174, 170, 224, 174, 163, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 176,
+			224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 0, 0, 0, 0, 0, 0, 18, 12, 224, 174, 170, 224, 175, 129, 224, 174, 159, 224, 175, 141,
+			83, 40, 140, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175, 141, 15, 0, 14, 9, 95, 35, 45, 224, 174, 178, 224, 175,
+			141, 37, 55, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 169, 224, 174, 174, 224, 175, 141, 15, 15, 140, 224, 174, 170, 224, 175, 129,
+			224, 174, 149, 224, 175, 141, 15, 0, 0, 0, 18, 143, 224, 174, 164, 224, 175, 134, 224, 174, 169, 224, 174, 174, 224, 175, 141, 15, 12, 137,
+			224, 174, 170, 224, 174, 178, 224, 175, 135, 15, 0, 0, 15, 140, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 174, 15, 24, 149, 224,
+			174, 170, 224, 175, 141, 224, 174, 175, 224, 175, 130, 224, 174, 169, 224, 174, 184, 224, 175, 141, 15, 0, 25, 18, 224, 174, 170, 224, 174, 191,
+			224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 71, 34, 114, 49, 0, 27, 18, 95, 35, 45, 224, 174, 181, 224, 174, 164, 224, 175,
+			129, 224, 174, 174, 224, 175, 141, 118, 84, 109, 72, 122, 65, 0, 0, 0, 27, 152, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 190,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 15, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			224, 174, 191, 224, 174, 164, 224, 175, 141, 15, 0, 0, 0, 0, 23, 15, 224, 174, 170, 224, 175, 135, 224, 174, 169, 224, 175, 141, 224, 174,
+			178, 83, 114, 50, 55, 109, 0, 0, 0, 0, 17, 4, 95, 57, 67, 48, 47, 39, 62, 62, 118, 57, 37, 34, 109, 65, 0, 0, 0, 0,
+			0, 12, 137, 224, 174, 170, 224, 174, 178, 224, 174, 191, 15, 0, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 175, 138, 224, 174, 174, 224,
+			175, 141, 224, 174, 174, 15, 21, 146, 224, 174, 170, 224, 175, 130, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 15, 12, 137, 224,
+			174, 170, 224, 174, 176, 224, 174, 164, 15, 21, 146, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 15,
+			0, 24, 149, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 15, 0, 0, 0, 0, 0,
+			12, 137, 224, 174, 149, 224, 174, 175, 224, 174, 190, 15, 0, 0, 0, 12, 137, 224, 174, 164, 224, 174, 190, 224, 174, 169, 15, 0, 0, 0,
+			0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 178, 15, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 176, 15, 12, 2,
+			195, 151, 72, 6, 109, 140, 109, 84, 134, 0, 0, 0, 0, 0, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 170, 15, 0, 0,
+			12, 2, 194, 167, 48, 6, 37, 34, 37, 84, 122, 0, 0, 12, 137, 224, 174, 170, 224, 174, 190, 224, 174, 169, 15, 0, 19, 67, 41, 6,
+			64, 75, 6, 118, 48, 109, 50, 112, 88, 15, 57, 6, 36, 50, 0, 0, 0, 0, 24, 149, 224, 174, 164, 224, 175, 128, 224, 174, 176, 224,
+			174, 174, 224, 174, 177, 224, 175, 141, 224, 174, 177, 15, 0, 22, 2, 194, 161, 47, 6, 109, 55, 134, 49, 112, 92, 15, 84, 6, 37, 57,
+			109, 48, 48, 122, 0, 0, 26, 18, 224, 174, 154, 224, 175, 139, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 190, 76, 119, 48, 34,
+			118, 0, 11, 2, 194, 174, 48, 109, 72, 37, 84, 122, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224,
+			174, 175, 15, 0, 0, 0, 0, 0, 17, 2, 194, 169, 48, 6, 109, 72, 37, 48, 48, 122, 34, 37, 65, 134, 0, 0, 0, 0, 15, 140,
+			224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 190, 15, 0, 15, 140, 224, 174, 170, 224, 175, 128, 224, 174, 159, 224, 174, 191, 15, 15,
+			140, 224, 174, 170, 224, 175, 139, 224, 174, 164, 224, 174, 191, 15, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 178, 224, 175, 129,
+			15, 0, 0, 22, 2, 194, 177, 49, 6, 123, 139, 139, 109, 55, 15, 49, 6, 109, 92, 37, 47, 47, 109, 55, 0, 0, 11, 2, 194, 190,
+			65, 40, 49, 49, 118, 55, 0, 0, 26, 18, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 34, 36,
+			140, 140, 37, 0, 18, 143, 224, 174, 170, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 190, 15, 20, 2, 194, 191, 47, 6, 109, 55,
+			134, 49, 112, 92, 15, 49, 6, 114, 62, 84, 37, 0, 13, 2, 195, 183, 84, 109, 81, 122, 47, 47, 109, 55, 0, 0, 8, 2, 194, 188,
+			49, 118, 55, 0, 0, 8, 2, 194, 189, 35, 34, 134, 0, 11, 6, 224, 174, 182, 224, 175, 141, 37, 91, 0, 0, 21, 146, 224, 174, 170,
+			224, 174, 190, 224, 174, 181, 224, 175, 141, 224, 174, 178, 224, 174, 190, 15, 0, 13, 8, 95, 35, 224, 174, 174, 224, 175, 141, 118, 65, 0,
+			0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 190, 224, 174, 178, 224, 175, 141, 15, 18, 12, 224, 174, 170, 224, 175, 128, 224, 174, 178,
+			224, 175, 141, 83, 112, 55, 0, 17, 12, 95, 35, 45, 224, 174, 134, 224, 174, 174, 224, 175, 141, 118, 65, 0, 0, 0, 0, 18, 143, 224,
+			174, 170, 224, 174, 190, 224, 174, 163, 224, 174, 174, 224, 175, 141, 15, 0, 0, 0, 0, 0, 0, 33, 21, 95, 35, 45, 224, 174, 181, 224,
+			174, 164, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 149, 118, 84, 109, 72, 122, 65, 118, 81, 109, 0, 0, 18, 67, 85, 49, 0,
+			57, 6, 40, 36, 89, 15, 72, 6, 39, 55, 109, 88, 0, 0, 0, 0, 14, 9, 224, 174, 134, 224, 174, 170, 224, 175, 141, 118, 83, 0,
+			0, 0, 16, 11, 95, 35, 224, 174, 134, 224, 174, 174, 224, 175, 141, 118, 65, 0, 0, 15, 140, 224, 174, 149, 224, 174, 169, 224, 174, 174,
+			224, 175, 141, 15, 0, 0, 21, 146, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 15, 0, 0, 0,
+			26, 17, 95, 35, 224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 118, 84, 109, 72, 122, 65, 0, 0, 0, 12, 137,
+			224, 174, 164, 224, 175, 138, 224, 174, 179, 15, 0, 51, 36, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174,
+			178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 175, 141, 83, 118, 72, 109, 34, 37, 55, 55, 118, 65, 109,
+			55, 0, 0, 24, 149, 224, 174, 149, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 30, 21, 95,
+			35, 45, 224, 174, 134, 224, 174, 181, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 118, 84, 109, 72, 122, 65, 0, 0, 0, 0,
+			27, 152, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 27, 152, 224,
+			174, 170, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 0, 0, 0, 0, 0, 0,
+			15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 184, 224, 174, 191, 15, 0, 18, 143, 224, 174, 164, 224, 174, 190, 224, 174, 175, 224, 174, 174,
+			224, 175, 141, 15, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 178, 224, 174, 190, 15, 0, 25, 18, 224, 174, 159, 224, 174, 190,
+			224, 174, 176, 224, 175, 141, 224, 174, 154, 224, 175, 141, 139, 118, 34, 76, 0, 0, 0, 0, 0, 13, 4, 95, 56, 48, 111, 38, 36, 66,
+			71, 109, 72, 0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 15, 21, 146, 224,
+			174, 170, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 15, 13, 8, 95, 35, 224, 174, 178, 224, 175, 141, 37, 55,
+			0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 174, 224, 175, 141, 15, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174,
+			178, 224, 175, 141, 15, 0, 0, 33, 158, 224, 174, 164, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141,
+			224, 174, 175, 224, 174, 174, 224, 175, 141, 15, 0, 18, 143, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 174, 174, 224, 175, 141, 15, 0,
+			30, 155, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 15,
+			15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 175, 129, 15, 0, 0, 26, 18, 224, 174, 170, 224, 175, 135, 224, 174, 169, 224, 174,
+			191, 224, 174, 178, 224, 175, 141, 83, 114, 50, 37, 55, 0, 26, 18, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 178,
+			224, 175, 141, 83, 119, 50, 37, 55, 0, 0, 33, 158, 224, 174, 170, 224, 175, 139, 224, 174, 176, 224, 174, 159, 224, 174, 191, 224, 174, 149,
+			224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 15, 0, 29, 20, 95, 35, 224, 174, 134, 224, 174, 181, 224, 174, 164, 224, 175, 129,
+			224, 174, 174, 224, 175, 141, 118, 84, 109, 72, 122, 65, 0, 0, 24, 149, 224, 174, 154, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174,
+			178, 224, 174, 174, 224, 175, 141, 15, 0, 0, 0, 27, 152, 224, 174, 149, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			191, 224, 174, 178, 224, 175, 141, 15, 27, 152, 224, 174, 164, 224, 174, 181, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174,
+			178, 224, 175, 141, 15, 27, 152, 224, 174, 170, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175,
+			141, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 12, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 174, 190, 71, 118, 71, 118,
+			0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 174, 190, 15, 0, 0, 39, 164, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 11, 2, 95,
+			34, 65, 114, 51, 81, 119, 62, 0, 0, 0, 0, 17, 2, 95, 39, 39, 139, 51, 134, 15, 65, 6, 114, 51, 81, 119, 62, 0, 0, 0,
+			0, 0, 0, 0, 14, 2, 95, 41, 84, 109, 55, 109, 15, 48, 37, 51, 134, 0, 0, 13, 2, 95, 40, 37, 140, 109, 15, 48, 37, 51,
+			134, 0, 0, 0, 16, 2, 95, 46, 65, 40, 139, 51, 122, 15, 48, 40, 62, 62, 37, 0, 0, 12, 2, 95, 45, 37, 66, 134, 48, 48,
+			122, 81, 0, 0, 14, 2, 95, 44, 49, 118, 55, 15, 48, 40, 62, 62, 37, 0, 0, 10, 2, 95, 51, 65, 123, 50, 51, 122, 0, 0,
+			11, 2, 95, 50, 37, 34, 109, 66, 140, 122, 0, 0, 9, 2, 95, 49, 39, 50, 51, 122, 0, 0, 12, 2, 95, 48, 89, 40, 92, 37,
+			57, 109, 65, 0, 0, 9, 2, 95, 55, 38, 114, 92, 122, 0, 0, 8, 2, 95, 54, 118, 51, 122, 0, 0, 9, 2, 95, 53, 134, 50,
+			72, 122, 0, 0, 10, 2, 95, 52, 50, 118, 50, 81, 122, 0, 0, 15, 2, 95, 59, 118, 34, 134, 71, 15, 48, 40, 62, 62, 37, 0,
+			0, 17, 2, 95, 58, 65, 40, 49, 49, 118, 55, 15, 48, 40, 62, 62, 37, 0, 0, 11, 2, 95, 57, 39, 50, 71, 109, 140, 122, 0,
+			0, 18, 12, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 190, 71, 34, 118, 0, 10, 2, 95, 56, 38, 36, 139, 139, 122, 0, 0,
+			10, 2, 95, 63, 49, 114, 62, 84, 37, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 57, 48, 111, 47, 39, 66, 66, 123, 51, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 190, 224, 174, 174, 224, 174, 190, 15, 16, 4, 95,
+			226, 128, 166, 84, 6, 37, 140, 122, 50, 37, 55, 134, 0, 0, 0, 0, 0, 24, 149, 224, 174, 164, 224, 174, 175, 224, 174, 190, 224, 174,
+			168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 15, 0, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 141,
+			15, 16, 2, 95, 91, 37, 140, 109, 48, 48, 109, 81, 109, 34, 109, 65, 0, 0, 0, 23, 68, 80, 19, 73, 48, 224, 174, 164, 224, 174,
+			174, 224, 174, 191, 224, 174, 180, 224, 175, 141, 0, 29, 0, 18, 143, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149,
+			15, 0, 14, 2, 95, 95, 35, 140, 37, 81, 15, 49, 119, 140, 122, 0, 0, 0, 17, 2, 95, 93, 84, 109, 55, 109, 48, 48, 109, 81,
+			109, 34, 109, 65, 0, 0, 0, 0, 0, 11, 3, 95, 97, 114, 35, 34, 109, 71, 122, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174,
+			170, 224, 174, 178, 224, 174, 174, 224, 175, 141, 15, 0, 0, 15, 140, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 175, 135, 15, 0, 0,
+			15, 140, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 129, 15, 0, 0, 15, 140, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224, 175,
+			135, 15, 21, 146, 224, 174, 170, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 174, 224, 175, 141, 15, 0, 15, 3, 95, 104, 101, 38,
+			36, 71, 37, 34, 114, 57, 109, 65, 0, 0, 0, 0, 22, 14, 95, 35, 224, 174, 134, 224, 174, 181, 224, 174, 164, 224, 175, 129, 118, 84,
+			109, 72, 122, 0, 0, 21, 146, 224, 174, 154, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 128, 15, 0, 0, 0, 33,
 			158, 224, 174, 170, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 179, 224, 174, 191, 224, 174, 174, 224, 174, 190, 224, 174, 184, 224, 175,
-			141, 20, 0, 0, 18, 12, 224, 174, 164, 224, 175, 128, 224, 174, 170, 224, 175, 141, 72, 112, 48, 0, 15, 140, 224, 174, 149, 224, 174, 159,
-			224, 174, 174, 224, 175, 141, 20, 14, 2, 95, 123, 37, 141, 109, 15, 81, 109, 66, 109, 65, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224,
-			174, 176, 224, 174, 164, 224, 174, 174, 224, 175, 141, 20, 0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
-			174, 174, 224, 175, 141, 20, 15, 2, 95, 125, 84, 109, 55, 109, 15, 81, 109, 66, 109, 65, 0, 0, 0, 0, 0, 0, 0, 35, 24, 224,
-			174, 170, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 71, 109, 47, 47, 37, 34, 109,
-			48, 0, 15, 140, 224, 174, 170, 224, 174, 176, 224, 174, 164, 224, 175, 141, 20, 0, 0, 0, 0, 15, 140, 224, 174, 164, 224, 174, 191, 224,
-			174, 178, 224, 175, 141, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 174, 170, 224, 175, 128, 224, 174, 154, 224,
-			175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 27, 152, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 20, 0, 24, 149, 224, 174, 149, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159,
-			224, 174, 190, 224, 174, 169, 20, 0, 0, 23, 15, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 176, 224, 175, 141, 83, 118, 72, 109,
-			34, 0, 0, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 20,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 175, 141, 224, 174, 170,
-			224, 174, 190, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 174, 191, 20, 0, 15,
-			140, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224, 174, 190, 20, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224, 174, 154,
-			224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 174, 154, 224, 175, 141, 37, 76, 0, 0, 0, 9, 134, 224, 174, 154, 224, 175, 139,
-			20, 0, 0, 11, 6, 224, 174, 156, 224, 175, 141, 37, 75, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174,
-			170, 224, 175, 141, 20, 15, 140, 224, 174, 170, 224, 175, 135, 224, 174, 183, 224, 175, 141, 20, 0, 0, 21, 146, 224, 174, 170, 224, 174, 190,
-			224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 20, 0, 0, 0, 0, 21, 146, 224, 174, 164, 224, 175, 136, 224, 174, 181, 224, 174,
-			164, 224, 174, 174, 224, 175, 141, 20, 11, 6, 224, 174, 158, 224, 175, 141, 37, 67, 0, 0, 0, 0, 14, 9, 95, 35, 45, 224, 174, 174,
-			224, 175, 141, 118, 65, 0, 0, 0, 0, 18, 12, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 140, 37, 49, 0, 18, 12, 224,
-			174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 76, 37, 49, 0, 9, 134, 224, 174, 154, 224, 175, 135, 20, 0, 0, 0, 18, 143, 224,
-			174, 170, 224, 175, 135, 224, 174, 164, 224, 174, 174, 224, 175, 141, 20, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141,
-			20, 0, 0, 33, 158, 224, 174, 164, 224, 174, 181, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224,
-			174, 178, 224, 175, 141, 20, 25, 18, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 71, 34, 114, 49,
-			0, 0, 9, 134, 224, 174, 154, 224, 175, 128, 20, 0, 9, 134, 224, 174, 164, 224, 175, 139, 20, 0, 0, 11, 6, 224, 174, 170, 224, 175,
-			141, 37, 48, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141,
-			20, 24, 149, 224, 174, 164, 224, 175, 134, 224, 174, 169, 224, 174, 174, 224, 175, 129, 224, 174, 174, 224, 175, 141, 20, 24, 149, 224, 174, 164,
-			224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174, 174, 224, 175, 141, 20, 0, 11, 6, 224, 174, 164, 224, 175, 141, 37, 47,
-			0, 0, 0, 18, 12, 224, 174, 170, 224, 175, 139, 224, 174, 169, 224, 175, 141, 83, 119, 50, 0, 21, 146, 224, 174, 154, 224, 175, 135, 224,
-			174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 135, 20, 27, 152, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 174, 224,
-			175, 129, 224, 174, 174, 224, 175, 141, 20, 27, 152, 224, 174, 170, 224, 175, 130, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224,
-			174, 174, 224, 175, 141, 20, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 141, 20, 0, 9, 134,
-			224, 174, 164, 224, 174, 159, 20, 15, 140, 224, 174, 170, 224, 175, 129, 224, 174, 184, 224, 175, 141, 20, 0, 0, 21, 146, 224, 174, 170, 224,
-			175, 128, 224, 174, 176, 224, 174, 191, 224, 174, 169, 224, 175, 141, 20, 18, 143, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224,
-			174, 178, 20, 0, 0, 0, 0, 11, 6, 224, 174, 174, 224, 175, 141, 37, 65, 0, 0, 0, 32, 24, 224, 174, 159, 224, 174, 191, 224, 174,
-			176, 224, 175, 135, 224, 174, 175, 224, 174, 191, 224, 174, 169, 224, 175, 141, 140, 34, 114, 57, 50, 0, 0, 0, 33, 158, 224, 174, 149, 224,
-			175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 224, 175, 129, 20, 12, 137, 224,
-			174, 170, 224, 175, 130, 224, 174, 164, 20, 11, 6, 224, 174, 176, 224, 175, 141, 37, 34, 0, 11, 6, 224, 174, 168, 224, 175, 141, 37, 50,
-			0, 0, 0, 0, 16, 6, 224, 174, 176, 224, 175, 130, 34, 123, 71, 118, 57, 0, 24, 9, 0, 6, 20, 0, 230, 11, 0, 0, 48, 0,
-			0, 0, 231, 11, 0, 0, 49, 0, 0, 0, 232, 11, 0, 0, 50, 0, 0, 0, 233, 11, 0, 0, 51, 0, 0, 0, 234, 11, 0, 0,
-			52, 0, 0, 0, 235, 11, 0, 0, 53, 0, 0, 0, 236, 11, 0, 0, 54, 0, 0, 0, 237, 11, 0, 0, 55, 0, 0, 0, 238, 11,
-			0, 0, 56, 0, 0, 0, 239, 11, 0, 0, 57, 0, 0, 0, 198, 11, 190, 11, 202, 11, 0, 0, 199, 11, 190, 11, 203, 11, 0, 0,
-			198, 11, 215, 11, 204, 11, 0, 0, 0, 0, 0, 0, 6, 18, 66, 224, 174, 183, 224, 175, 141, 0, 224, 174, 184, 224, 175, 141, 0, 224,
-			174, 159, 224, 175, 141, 0, 7, 6, 18, 67, 224, 174, 159, 224, 175, 141, 0, 224, 174, 177, 224, 175, 141, 0, 224, 174, 183, 224, 175, 141,
-			0, 224, 174, 184, 224, 175, 141, 0, 7, 6, 18, 68, 224, 174, 135, 0, 224, 174, 142, 0, 224, 174, 133, 0, 7, 6, 18, 69, 224, 174,
-			154, 0, 224, 174, 184, 0, 7, 6, 18, 70, 224, 174, 176, 0, 224, 174, 177, 0, 7, 6, 18, 71, 224, 174, 149, 0, 224, 174, 185, 0,
-			7, 6, 18, 72, 224, 175, 134, 224, 174, 179, 0, 224, 175, 140, 0, 7, 6, 18, 73, 224, 174, 191, 0, 224, 175, 128, 0, 7, 6, 18,
-			74, 224, 174, 168, 0, 224, 174, 169, 0, 7, 6, 18, 75, 224, 174, 178, 0, 224, 174, 179, 0, 7, 6, 18, 76, 224, 174, 170, 0, 224,
-			174, 164, 0, 224, 174, 149, 0, 7, 6, 18, 77, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224,
-			174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 224, 174, 170, 224, 175, 141, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141,
-			224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175,
-			141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 164, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 128, 224, 174, 176, 224, 175, 141, 0,
-			224, 174, 181, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 0, 224, 174, 149, 224, 174, 163, 224, 175,
-			141, 224, 174, 163, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 224, 174, 174, 224, 174, 176, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224,
-			174, 164, 224, 175, 129, 0, 224, 174, 138, 224, 174, 177, 224, 175, 129, 224, 174, 149, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 224, 174,
-			181, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224,
-			174, 184, 224, 175, 141, 0, 224, 174, 149, 224, 175, 141, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 0, 224, 174, 154, 224, 174,
-			190, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174, 164, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 174, 191, 0, 224, 174, 138,
-			224, 174, 177, 224, 175, 129, 224, 174, 149, 224, 174, 190, 0, 224, 174, 170, 224, 175, 128, 224, 174, 176, 224, 175, 141, 0, 224, 174, 149, 224,
-			174, 178, 224, 174, 176, 224, 175, 141, 0, 224, 174, 154, 224, 175, 139, 224, 174, 159, 224, 174, 190, 0, 224, 174, 174, 224, 174, 164, 224, 175,
-			129, 0, 7, 6, 18, 78, 224, 174, 181, 224, 174, 190, 224, 174, 180, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136,
-			0, 224, 174, 181, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 224, 174, 174, 224, 174, 169, 224,
-			174, 191, 224, 174, 164, 224, 174, 169, 0, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 174, 191, 0, 7, 6, 18, 79, 224, 174, 168, 224,
-			175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 170, 224, 175, 141, 0, 224, 174, 168,
-			224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 0, 224, 174, 164, 224, 175, 128, 224, 174,
-			170, 224, 175, 141, 0, 224, 174, 164, 224, 175, 128, 0, 7, 6, 18, 80, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
-			174, 178, 0, 224, 174, 174, 224, 175, 128, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174,
-			190, 224, 174, 184, 0, 224, 174, 159, 224, 174, 190, 224, 174, 184, 0, 7, 6, 18, 81, 224, 174, 174, 224, 175, 135, 224, 174, 177, 224, 175,
-			141, 0, 224, 174, 149, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0, 224, 174, 174, 224, 175, 135, 224, 174, 178, 0, 7, 6, 18, 82, 224,
-			174, 149, 224, 175, 129, 224, 174, 180, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 224, 174, 149, 224, 175, 129, 224, 174, 159,
-			224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 136, 0, 224,
-			174, 149, 224, 175, 129, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 224, 174, 149, 224, 174, 180, 224, 175, 129, 224, 174, 164,
-			224, 175, 136, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 191, 0, 7, 6, 18, 83, 224, 174, 170, 224, 174, 191, 224, 174, 179,
-			224, 175, 141, 224, 174, 179, 224, 175, 136, 0, 224, 174, 170, 224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 224, 174, 170, 224, 175, 136, 224,
-			174, 175, 224, 174, 169, 0, 7, 6, 18, 84, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 224, 174, 164, 224,
-			174, 153, 224, 175, 141, 224, 174, 149, 0, 7, 6, 18, 85, 224, 174, 170, 224, 174, 178, 224, 175, 141, 0, 224, 174, 170, 224, 174, 177, 224,
-			175, 141, 0, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 7, 6, 18, 86, 224, 174, 176,
-			224, 174, 190, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 224, 174,
-			174, 224, 175, 129, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 224, 174, 176, 224,
-			174, 190, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 224, 174, 154, 224, 174, 174,
+			141, 15, 17, 5, 95, 49, 77, 50, 120, 39, 34, 122, 55, 109, 140, 76, 109, 65, 0, 0, 0, 15, 140, 224, 174, 149, 224, 174, 159, 224,
+			174, 174, 224, 175, 141, 15, 14, 2, 95, 123, 37, 140, 109, 15, 81, 109, 66, 109, 65, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174,
+			176, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 0, 0, 0, 21, 146, 224, 174, 149, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
+			174, 224, 175, 141, 15, 15, 5, 95, 49, 77, 51, 120, 39, 34, 122, 49, 119, 140, 37, 0, 15, 2, 95, 125, 84, 109, 55, 109, 15, 81,
+			109, 66, 109, 65, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 176, 224, 174, 164, 224, 175, 141, 15, 0, 0, 13, 4,
+			95, 50, 48, 111, 37, 34, 122, 71, 109, 72, 0, 0, 16, 11, 95, 35, 224, 174, 135, 224, 174, 178, 224, 175, 141, 37, 55, 0, 0, 15,
+			140, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 15, 17, 12, 95, 35, 45, 224, 174, 135, 224, 174, 178, 224, 175, 141, 37, 55,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 152, 224, 174, 170, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154,
+			224, 174, 191, 224, 174, 178, 224, 175, 141, 15, 27, 152, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191,
+			224, 174, 178, 224, 175, 141, 15, 0, 24, 149, 224, 174, 149, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174,
+			169, 15, 0, 0, 0, 27, 152, 224, 174, 170, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175,
+			129, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 146, 224, 174, 170, 224, 175, 130, 224, 174, 174, 224, 175, 141, 224,
+			174, 170, 224, 174, 190, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 140, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 174, 191, 15,
+			0, 15, 140, 224, 174, 170, 224, 174, 178, 224, 174, 174, 224, 174, 190, 15, 0, 0, 0, 0, 0, 0, 0, 0, 24, 149, 224, 174, 149, 224,
+			174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 13, 4, 95, 51, 48, 111, 65, 40, 48, 48, 109, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 174, 154, 224,
+			175, 141, 37, 76, 0, 0, 0, 9, 134, 224, 174, 154, 224, 175, 139, 15, 0, 0, 11, 6, 224, 174, 156, 224, 175, 141, 37, 75, 0, 0,
+			0, 0, 0, 0, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 170, 224, 175, 141, 15, 15, 140, 224, 174, 170, 224, 175, 135, 224, 174,
+			183, 224, 175, 141, 15, 0, 0, 21, 146, 224, 174, 170, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 15, 0, 0,
+			0, 0, 21, 146, 224, 174, 164, 224, 175, 136, 224, 174, 181, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 11, 6, 224, 174, 158, 224, 175,
+			141, 37, 67, 0, 0, 0, 0, 14, 9, 95, 35, 45, 224, 174, 174, 224, 175, 141, 118, 65, 0, 0, 0, 0, 18, 12, 224, 174, 159, 224,
+			174, 191, 224, 174, 149, 224, 175, 141, 139, 37, 49, 0, 18, 12, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 76, 37, 49, 0,
+			13, 6, 224, 174, 154, 224, 175, 135, 89, 6, 114, 0, 25, 9, 134, 224, 174, 154, 224, 175, 135, 15, 0, 0, 0, 18, 143, 224, 174, 170,
+			224, 175, 135, 224, 174, 164, 224, 174, 174, 224, 175, 141, 15, 0, 15, 140, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 0,
+			0, 33, 158, 224, 174, 164, 224, 174, 181, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 178,
+			224, 175, 141, 15, 25, 18, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 71, 34, 114, 49, 0, 0,
+			9, 134, 224, 174, 154, 224, 175, 128, 15, 22, 15, 95, 35, 45, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 37, 55, 122, 65,
+			0, 0, 9, 134, 224, 174, 164, 224, 175, 139, 15, 0, 0, 11, 6, 224, 174, 170, 224, 175, 141, 37, 48, 0, 0, 0, 0, 24, 149, 224,
+			174, 149, 224, 174, 179, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 24, 149, 224, 174, 164, 224, 175, 134, 224,
+			174, 169, 224, 174, 174, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 24, 149, 224, 174, 164, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224,
+			175, 129, 224, 174, 174, 224, 175, 141, 15, 0, 11, 6, 224, 174, 164, 224, 175, 141, 37, 47, 0, 0, 0, 18, 12, 224, 174, 170, 224, 175,
+			139, 224, 174, 169, 224, 175, 141, 83, 119, 50, 0, 21, 146, 224, 174, 154, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175,
+			135, 15, 27, 152, 224, 174, 164, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 174, 224, 175, 129, 224, 174, 174, 224, 175, 141, 15, 27,
+			152, 224, 174, 170, 224, 175, 130, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 174, 224, 175, 141, 15, 11, 3, 95, 122,
+			104, 76, 6, 112, 50, 109, 0, 0, 0, 0, 18, 143, 224, 174, 170, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 141, 15, 0, 15,
+			140, 224, 174, 149, 224, 175, 135, 224, 174, 174, 224, 175, 141, 15, 9, 134, 224, 174, 164, 224, 174, 159, 15, 15, 140, 224, 174, 170, 224, 175,
+			129, 224, 174, 184, 224, 175, 141, 15, 0, 0, 21, 146, 224, 174, 170, 224, 175, 128, 224, 174, 176, 224, 174, 191, 224, 174, 169, 224, 175, 141,
+			15, 18, 143, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 178, 15, 0, 0, 0, 0, 11, 6, 224, 174, 174, 224, 175,
+			141, 37, 65, 0, 0, 0, 32, 24, 224, 174, 159, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 175, 224, 174, 191, 224, 174, 169, 224,
+			175, 141, 139, 34, 114, 57, 50, 0, 0, 0, 33, 158, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 134,
+			224, 174, 169, 224, 175, 141, 224, 174, 177, 224, 175, 129, 15, 12, 137, 224, 174, 170, 224, 175, 130, 224, 174, 164, 15, 11, 6, 224, 174, 176,
+			224, 175, 141, 37, 34, 0, 11, 6, 224, 174, 168, 224, 175, 141, 37, 50, 0, 0, 0, 0, 16, 6, 224, 174, 176, 224, 175, 130, 34, 123,
+			71, 118, 57, 0, 24, 46, 0, 6, 20, 0, 230, 11, 0, 0, 48, 0, 0, 0, 231, 11, 0, 0, 49, 0, 0, 0, 232, 11, 0, 0,
+			50, 0, 0, 0, 233, 11, 0, 0, 51, 0, 0, 0, 234, 11, 0, 0, 52, 0, 0, 0, 235, 11, 0, 0, 53, 0, 0, 0, 236, 11,
+			0, 0, 54, 0, 0, 0, 237, 11, 0, 0, 55, 0, 0, 0, 238, 11, 0, 0, 56, 0, 0, 0, 239, 11, 0, 0, 57, 0, 0, 0,
+			198, 11, 190, 11, 202, 11, 0, 0, 199, 11, 190, 11, 203, 11, 0, 0, 198, 11, 215, 11, 204, 11, 0, 0, 0, 0, 0, 0, 6, 18,
+			66, 224, 174, 183, 224, 175, 141, 0, 224, 174, 184, 224, 175, 141, 0, 224, 174, 159, 224, 175, 141, 0, 7, 6, 18, 67, 224, 174, 159, 224,
+			175, 141, 0, 224, 174, 177, 224, 175, 141, 0, 224, 174, 183, 224, 175, 141, 0, 224, 174, 184, 224, 175, 141, 0, 7, 6, 18, 68, 224, 174,
+			135, 0, 224, 174, 142, 0, 224, 174, 133, 0, 7, 6, 18, 69, 224, 174, 154, 0, 224, 174, 184, 0, 7, 6, 18, 70, 224, 174, 176, 0,
+			224, 174, 177, 0, 7, 6, 18, 71, 224, 174, 149, 0, 224, 174, 185, 0, 7, 6, 18, 72, 224, 175, 134, 224, 174, 179, 0, 224, 175, 140,
+			0, 7, 6, 18, 73, 224, 174, 191, 0, 224, 175, 128, 0, 7, 6, 18, 74, 224, 174, 168, 0, 224, 174, 169, 0, 224, 174, 163, 0, 7,
+			6, 18, 75, 224, 174, 178, 0, 224, 174, 179, 0, 7, 6, 18, 76, 224, 174, 170, 0, 224, 174, 164, 0, 224, 174, 149, 0, 7, 6, 18,
+			77, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 0, 224, 174, 170, 224, 175, 141, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224,
+			175, 141, 0, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174,
+			149, 224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174, 168, 224, 175, 128, 224, 174, 176, 224, 175, 141, 0, 224, 174, 164, 224, 174, 163, 224,
+			175, 141, 224, 174, 163, 224, 175, 128, 224, 174, 176, 224, 175, 141, 0, 224, 174, 181, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159,
+			224, 174, 176, 224, 175, 141, 0, 224, 174, 149, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 224,
+			174, 174, 224, 174, 176, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 224, 174, 138, 224, 174, 177, 224, 175, 129,
+			224, 174, 149, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 224, 174, 181, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 0, 224, 174, 149, 224, 175, 141, 224, 174, 179,
+			224, 174, 190, 224, 174, 184, 224, 175, 141, 0, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174, 164, 224,
+			174, 163, 224, 175, 141, 224, 174, 163, 224, 174, 191, 0, 224, 174, 138, 224, 174, 177, 224, 175, 129, 224, 174, 149, 224, 174, 190, 0, 224, 174,
+			170, 224, 175, 128, 224, 174, 176, 224, 175, 141, 0, 224, 174, 149, 224, 174, 178, 224, 174, 176, 224, 175, 141, 0, 224, 174, 154, 224, 175, 139,
+			224, 174, 159, 224, 174, 190, 0, 224, 174, 174, 224, 174, 164, 224, 175, 129, 0, 7, 6, 18, 78, 224, 174, 181, 224, 174, 190, 224, 174, 180,
+			224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 224, 174, 181, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174,
+			168, 224, 175, 141, 224, 174, 164, 0, 224, 174, 174, 224, 174, 169, 224, 174, 191, 224, 174, 164, 224, 174, 169, 0, 224, 174, 170, 224, 175, 130,
+			224, 174, 174, 224, 174, 191, 0, 7, 6, 18, 79, 224, 174, 168, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 175, 129, 224, 174, 170, 224, 175, 141, 0, 224, 174, 168, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 175, 129, 0, 224, 174, 164, 224, 175, 128, 224, 174, 170, 224, 175, 141, 0, 224, 174, 164, 224, 175, 128, 0, 7, 6, 18,
+			80, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 224, 174, 170, 224,
+			174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 224, 174, 174, 224, 175, 128, 224, 174, 178, 224, 175, 141,
+			224, 174, 184, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 184, 0, 224, 174, 159, 224, 174, 190, 224, 174, 184, 0,
+			7, 6, 18, 81, 224, 174, 174, 224, 175, 135, 224, 174, 177, 224, 175, 141, 0, 224, 174, 149, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0,
+			224, 174, 133, 224, 174, 164, 224, 174, 191, 224, 174, 149, 0, 224, 174, 174, 224, 175, 135, 224, 174, 178, 0, 7, 6, 18, 82, 224, 174, 149,
+			224, 175, 129, 224, 174, 180, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175,
+			141, 224, 174, 159, 224, 174, 191, 0, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 136, 0, 224, 174, 149,
+			224, 175, 129, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 224, 174, 149, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175,
+			136, 0, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 191, 0, 7, 6, 18, 83, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 175,
+			141, 224, 174, 179, 224, 175, 136, 0, 224, 174, 170, 224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 224, 174, 170, 224, 175, 136, 224, 174, 175,
+			224, 174, 169, 0, 7, 6, 18, 84, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 224, 174, 164, 224, 174, 153,
+			224, 175, 141, 224, 174, 149, 0, 7, 6, 18, 85, 224, 174, 170, 224, 174, 178, 224, 175, 141, 0, 224, 174, 170, 224, 174, 177, 224, 175, 141,
+			0, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 224, 174, 170, 224, 174, 154, 224, 174, 191,
+			0, 7, 6, 18, 86, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 174, 191, 224,
+			174, 169, 224, 175, 141, 0, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169,
+			224, 175, 141, 0, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 0, 224, 174, 133, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 175, 0, 224, 174, 154, 224, 174, 174,
 			224, 174, 168, 224, 174, 191, 224, 174, 178, 224, 175, 136, 0, 224, 174, 154, 224, 174, 149, 224, 175, 139, 224, 174, 164, 224, 174, 176, 0, 224,
 			174, 154, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 224, 174, 154, 224, 174, 191, 224, 174, 168, 224, 175, 135, 224, 174, 149,
 			0, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 175, 135, 224, 174, 149, 0, 224, 174, 154, 224, 174, 174, 224, 174, 174, 224, 174, 190, 224,
@@ -31262,275 +42606,337 @@ FilesInMemory create_espeakdata_dicts () {
 			142, 224, 174, 159, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 142, 224, 174, 159, 224, 175, 129, 224, 174, 170, 224,
 			175, 141, 224, 174, 170, 0, 7, 6, 18, 90, 224, 174, 168, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174,
 			175, 0, 224, 174, 159, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 174, 168, 224, 174, 159, 224, 174, 169, 0, 7, 6,
-			18, 91, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 184,
-			224, 175, 141, 224, 174, 159, 224, 174, 181, 224, 175, 141, 0, 224, 174, 149, 224, 174, 169, 224, 175, 134, 224, 174, 149, 224, 175, 141, 0, 7,
-			6, 1, 4, 0, 224, 174, 149, 2, 17, 66, 3, 81, 100, 0, 224, 174, 149, 3, 81, 100, 109, 0, 224, 174, 170, 2, 17, 66, 3, 83,
-			0, 224, 174, 170, 3, 83, 109, 0, 224, 174, 164, 2, 17, 66, 3, 100, 72, 0, 224, 174, 164, 3, 100, 72, 109, 0, 3, 107, 0, 7,
-			6, 1, 8, 0, 4, 2, 224, 174, 175, 224, 175, 135, 224, 174, 154, 3, 0, 4, 2, 224, 174, 176, 224, 174, 149, 224, 174, 154, 224, 174,
-			191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 176, 224, 174, 149, 224, 175, 129, 3, 0, 4, 2, 224, 174, 176, 224, 174, 149, 224, 175, 129,
-			224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224,
-			174, 169, 224, 175, 136, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174, 175, 224, 174, 169, 3, 0, 4, 2, 224, 174,
-			176, 224, 174, 154, 224, 174, 191, 224, 174, 149, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 0, 4, 2, 224, 174,
-			176, 224, 174, 163, 224, 174, 153, 224, 175, 141, 3, 0, 4, 2, 224, 174, 176, 224, 174, 163, 224, 174, 164, 224, 175, 141, 3, 0, 4, 2,
-			224, 174, 176, 224, 174, 163, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 32, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164,
-			224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			3, 0, 4, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 176, 224,
-			174, 175, 224, 174, 191, 224, 174, 178, 3, 0, 4, 2, 224, 174, 176, 224, 174, 181, 224, 175, 128, 224, 174, 168, 224, 175, 141, 224, 174, 164,
-			224, 174, 191, 224, 174, 176, 3, 0, 4, 2, 224, 174, 176, 224, 174, 181, 224, 175, 136, 224, 174, 149, 224, 174, 179, 3, 0, 4, 2, 224,
-			174, 176, 224, 174, 181, 224, 175, 136, 224, 174, 175, 224, 175, 136, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 3, 0, 4,
-			2, 224, 174, 176, 224, 174, 190, 224, 174, 154, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 3, 0, 4, 2, 224, 174, 176,
-			224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175,
-			141, 224, 174, 154, 224, 174, 183, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 3, 0, 4, 2, 224, 174, 176,
-			224, 174, 190, 224, 174, 163, 224, 175, 129, 224, 174, 181, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 190, 224, 174,
-			149, 224, 174, 191, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 190, 224, 174, 181, 3, 0, 4, 2, 224, 174, 176,
+			18, 91, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 133,
+			224, 174, 159, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 181, 224, 175,
+			141, 0, 224, 174, 149, 224, 174, 169, 224, 175, 134, 224, 174, 149, 224, 175, 141, 0, 7, 6, 18, 92, 32, 224, 174, 143, 224, 174, 177, 224,
+			175, 141, 224, 174, 170, 224, 174, 159, 0, 32, 224, 174, 137, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 32, 224, 174, 135, 224, 174, 178,
+			224, 175, 141, 224, 174, 178, 0, 224, 174, 175, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 224, 174, 175, 224, 175, 129, 224, 174, 159, 224,
+			174, 169, 0, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 224, 174, 175, 224, 174, 191, 0, 224, 174, 175, 224, 175, 136, 0, 7, 6, 18,
+			93, 224, 174, 146, 224, 174, 179, 0, 224, 174, 148, 0, 7, 6, 18, 94, 224, 174, 154, 224, 175, 134, 224, 174, 175, 224, 175, 141, 0, 224,
+			174, 170, 224, 174, 163, 224, 175, 141, 0, 7, 6, 18, 95, 224, 174, 174, 224, 175, 134, 224, 174, 159, 224, 174, 178, 0, 224, 174, 131, 224,
+			174, 170, 224, 174, 191, 224, 174, 183, 0, 224, 174, 170, 224, 174, 191, 224, 174, 183, 0, 7, 6, 18, 96, 224, 175, 129, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 0, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191, 224, 174, 178, 0,
+			224, 175, 129, 224, 174, 174, 0, 224, 175, 141, 32, 0, 224, 175, 136, 0, 7, 6, 18, 97, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 224, 174, 168, 224, 174, 191, 224, 174, 154, 224, 174, 191, 0, 224, 174,
+			181, 224, 175, 135, 224, 174, 179, 224, 175, 136, 0, 224, 174, 156, 224, 174, 190, 224, 174, 174, 0, 7, 6, 18, 98, 224, 174, 170, 224, 174,
+			191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 224, 174, 174, 224, 174, 190, 224, 174, 179, 224,
+			174, 191, 224, 174, 149, 224, 175, 136, 0, 224, 174, 149, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 159, 0, 224, 174,
+			133, 224, 174, 178, 224, 175, 129, 224, 174, 181, 224, 174, 178, 224, 174, 149, 0, 7, 6, 1, 4, 0, 224, 174, 149, 2, 17, 66, 3, 81,
+			100, 0, 224, 174, 149, 3, 81, 100, 109, 0, 4, 224, 174, 170, 2, 17, 66, 3, 83, 0, 224, 174, 170, 224, 174, 191, 8, 2, 224, 174,
+			176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 0, 224, 174, 170, 3, 83, 109, 0, 224, 174, 164, 2, 17, 66, 3, 100, 72, 0, 224, 174,
+			164, 3, 100, 72, 109, 0, 3, 107, 0, 7, 6, 1, 8, 0, 4, 2, 224, 174, 175, 224, 175, 135, 224, 174, 154, 3, 0, 4, 2, 224,
+			174, 176, 224, 174, 149, 224, 174, 154, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 176, 224, 174, 149, 224, 175, 129, 3, 0, 4,
+			2, 224, 174, 176, 224, 174, 149, 224, 175, 129, 224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 3,
+			0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 169, 224, 175, 136, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174,
+			175, 224, 174, 169, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 149, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154,
+			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 3, 0, 4, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 163, 224, 174, 153, 224, 175, 141, 3, 0, 4, 2, 224, 174, 176, 224, 174, 163,
+			224, 174, 164, 224, 175, 141, 3, 0, 4, 2, 224, 174, 176, 224, 174, 163, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 32,
+			3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 3, 0, 4, 2, 224, 174, 176, 224,
+			174, 164, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 164, 224, 174, 174, 3, 0, 4, 2, 224, 174,
+			176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 170, 224, 175, 128, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 174, 191, 224, 174, 176, 3, 0, 4, 2, 224, 174, 176, 224, 174, 174, 224, 174, 163, 3, 0, 4, 2, 224, 174, 176, 224, 174,
+			174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 176, 224, 174, 175, 224, 174, 191, 224, 174, 178, 3,
+			0, 4, 2, 224, 174, 176, 224, 174, 181, 224, 175, 128, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 3, 0, 4,
+			2, 224, 174, 176, 224, 174, 181, 224, 175, 136, 224, 174, 149, 224, 174, 179, 3, 0, 4, 2, 224, 174, 176, 224, 174, 181, 224, 175, 136, 224,
+			174, 175, 224, 175, 136, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174,
+			149, 224, 175, 141, 32, 224, 174, 149, 224, 174, 190, 224, 174, 178, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 154, 3, 0, 4,
+			2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224,
+			174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 183, 3, 0, 4, 2, 224, 174,
+			176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 12, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 163, 224, 174, 191, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 129, 224, 174, 181, 3, 0, 4, 2, 224,
+			174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 174, 191, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164,
+			224, 174, 190, 224, 174, 181, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 175, 141, 32, 3, 0, 4, 2, 224, 174, 176,
 			224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 32, 3,
-			0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154,
-			224, 175, 136, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 138, 224, 174, 180, 224, 175,
-			129, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 3, 0, 4,
-			2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 224, 174, 170, 224, 175, 129, 224, 174, 176, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 181, 224, 174, 163, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 176, 3, 0, 4, 2, 224,
-			174, 178, 224, 174, 149, 224, 175, 129, 3, 0, 4, 2, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 141, 224, 174, 174,
-			224, 174, 163, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 149, 224, 175, 141, 3, 0, 4, 2, 224,
-			174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 153, 224, 175, 141, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141,
-			224, 174, 154, 224, 174, 163, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 164, 224, 175, 141, 3, 0,
-			4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 174, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141,
-			224, 174, 154, 224, 174, 190, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 175, 3, 0,
-			4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 163, 3, 0, 4, 2, 224, 174, 178,
-			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 191, 3, 0, 4, 2, 224, 174, 178, 224, 174, 163, 224, 175,
-			141, 224, 174, 159, 224, 174, 169, 3, 0, 4, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 128, 224, 174, 169, 3,
-			0, 4, 2, 224, 174, 178, 224, 174, 174, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 178, 224, 174,
-			175, 224, 174, 191, 3, 0, 4, 2, 224, 174, 178, 224, 174, 181, 224, 174, 153, 224, 175, 141, 224, 174, 149, 3, 0, 4, 2, 224, 174, 178,
-			224, 174, 190, 224, 174, 149, 224, 174, 181, 3, 0, 4, 2, 224, 174, 178, 224, 174, 190, 224, 174, 170, 3, 0, 4, 2, 224, 174, 178, 224,
-			174, 190, 224, 174, 181, 224, 174, 163, 224, 175, 141, 224, 174, 175, 3, 0, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 3, 0, 224, 174,
-			176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 2, 224, 174, 176, 3, 34, 109, 71, 71, 109, 0, 224, 174, 176, 224, 174, 190, 224, 174, 158,
-			224, 175, 141, 224, 174, 154, 3, 34, 118, 67, 76, 149, 0, 4, 3, 37, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 178,
-			224, 175, 141, 32, 0, 224, 174, 178, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 2, 224, 174, 191, 224, 174, 175, 3, 55, 114,
-			81, 81, 0, 7, 6, 1, 10, 0, 2, 224, 174, 176, 224, 175, 139, 224, 174, 174, 3, 0, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224,
-			175, 141, 224, 174, 164, 2, 224, 174, 191, 224, 174, 176, 224, 174, 190, 3, 34, 122, 72, 72, 0, 3, 40, 0, 7, 6, 1, 19, 0, 3,
-			39, 0, 4, 224, 174, 179, 2, 224, 174, 159, 224, 174, 164, 3, 135, 0, 224, 174, 179, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224,
-			174, 149, 0, 224, 174, 179, 2, 224, 174, 181, 224, 175, 136, 0, 224, 174, 179, 2, 224, 174, 183, 224, 174, 164, 0, 7, 6, 1, 22, 0,
-			1, 141, 175, 224, 177, 174, 224, 2, 17, 66, 3, 10, 49, 0, 1, 141, 175, 224, 177, 174, 224, 3, 10, 49, 109, 0, 4, 1, 18, 66,
-			2, 17, 66, 3, 49, 0, 1, 128, 175, 224, 174, 174, 224, 141, 175, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0,
-			1, 129, 175, 224, 164, 174, 224, 18, 68, 2, 224, 175, 129, 224, 174, 177, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 1,
-			129, 175, 224, 180, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 178, 0, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174,
-			178, 224, 174, 191, 0, 1, 133, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 175, 135, 224, 174, 183, 0, 1, 133, 174, 224, 2, 224, 175,
-			141, 224, 174, 159, 224, 175, 139, 224, 174, 170, 224, 174, 176, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 183, 0, 1, 134, 174, 224,
-			2, 224, 175, 141, 224, 174, 176, 224, 175, 139, 224, 174, 183, 0, 1, 135, 175, 224, 178, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224,
-			141, 175, 224, 164, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 1, 135, 175, 224, 181, 174, 224, 191, 174, 224, 181, 174, 224,
-			2, 224, 174, 190, 224, 174, 169, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 1, 136, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175,
-			129, 224, 174, 177, 224, 175, 136, 0, 1, 136, 175, 224, 177, 174, 224, 133, 174, 224, 2, 224, 175, 130, 224, 174, 181, 0, 1, 141, 175, 224,
-			153, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 0, 1, 141, 175, 224, 153, 174, 224, 133, 174, 224, 2, 224, 174,
-			191, 224, 174, 179, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 175, 139, 224, 174, 170, 0, 1, 141, 175, 224,
-			169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 180, 0, 1, 141, 175, 224, 176, 174, 224, 128, 175, 224, 154, 174, 224,
-			2, 224, 175, 135, 224, 174, 159, 0, 1, 141, 175, 224, 178, 174, 224, 138, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 170, 224, 175,
-			141, 224, 174, 170, 224, 174, 191, 0, 1, 141, 175, 224, 178, 174, 224, 191, 174, 224, 175, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174,
-			190, 224, 174, 179, 224, 175, 136, 0, 1, 141, 175, 224, 179, 174, 224, 129, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175, 130, 224, 174,
-			176, 0, 1, 154, 174, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224,
-			2, 224, 175, 129, 224, 174, 178, 0, 1, 159, 174, 224, 141, 175, 224, 183, 174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 163, 224, 174,
-			178, 0, 1, 170, 174, 224, 133, 174, 224, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
-			191, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 1, 174, 174, 224,
-			190, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 1, 174, 174, 224, 191, 174, 224, 164, 174, 224,
-			141, 175, 224, 168, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 1, 175, 174, 224, 191, 174, 224, 176, 174, 224, 133, 174, 224,
-			2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 1, 178, 174, 224, 128, 175, 224, 168, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174,
-			191, 0, 1, 178, 174, 224, 130, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 163, 0, 1, 178, 174, 224, 159, 174, 224,
-			141, 175, 224, 163, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 1, 190, 174, 224, 178, 174, 224,
-			135, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 164, 174, 224, 134, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 1,
-			191, 174, 224, 169, 174, 224, 130, 175, 224, 175, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 1, 191, 174, 224, 174, 174, 224, 190, 174, 224,
-			169, 174, 224, 133, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 175, 135, 224, 174,
-			154, 224, 174, 191, 0, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 174, 174, 0, 1, 191, 174, 224, 183, 174, 224,
-			134, 174, 224, 2, 224, 174, 190, 0, 2, 224, 174, 190, 224, 174, 176, 224, 174, 169, 0, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0,
-			2, 224, 175, 129, 224, 174, 174, 224, 174, 176, 224, 174, 169, 0, 2, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 176, 0, 2, 224,
-			175, 130, 224, 174, 159, 0, 2, 224, 175, 138, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 2, 224, 175, 138, 224, 174, 179, 224, 175, 141,
-			0, 8, 2, 17, 66, 0, 8, 2, 224, 175, 128, 224, 174, 164, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 164, 224, 175, 141, 224,
-			174, 164, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
-			174, 174, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224,
-			175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
-			174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 32, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159,
-			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159,
-			224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 139,
-			224, 174, 176, 32, 224, 174, 174, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 224,
-			174, 174, 224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 224, 174, 181, 224, 175, 135,
-			224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 129, 175, 224, 163, 174, 224, 135, 175, 224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 129,
-			175, 224, 174, 174, 224, 2, 224, 175, 135, 224, 174, 183, 0, 8, 129, 175, 224, 176, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 129,
-			224, 174, 178, 0, 8, 129, 175, 224, 178, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 190, 0, 8, 129, 175, 224, 181, 174, 224, 136,
-			175, 224, 169, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 129, 175, 224, 181, 174, 224, 175, 174, 224, 164,
-			174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 130, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 130,
-			175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 130, 175, 224, 178, 174, 224, 190, 174, 224, 164, 174, 224, 2,
-			224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 129, 175, 224, 154, 174, 224, 2,
-			224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 129, 175, 224, 175, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 178, 174, 224, 176,
-			174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 136, 175, 224, 159, 174, 224, 149,
-			174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 136, 175, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176,
-			224, 174, 191, 0, 8, 136, 175, 224, 175, 174, 224, 164, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 136, 175, 224, 177, 174, 224, 129,
-			175, 224, 149, 174, 224, 2, 224, 175, 130, 224, 174, 177, 0, 8, 136, 175, 224, 178, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 170,
-			224, 175, 141, 0, 8, 136, 175, 224, 179, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 136,
-			175, 224, 181, 174, 224, 2, 224, 175, 139, 0, 8, 138, 175, 224, 178, 174, 224, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 0, 8, 139,
-			175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 141, 175, 224, 153, 174, 224, 178, 174, 224, 2, 224, 174, 190, 0, 8, 141,
-			175, 224, 153, 174, 224, 178, 174, 224, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 153,
-			174, 224, 190, 174, 224, 185, 174, 224, 2, 224, 174, 190, 224, 174, 153, 224, 175, 141, 0, 8, 141, 175, 224, 156, 174, 224, 190, 174, 224, 176,
-			174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 163, 0, 8, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 163,
-			224, 174, 190, 0, 8, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 154, 224, 174, 191, 0, 8, 141,
-			175, 224, 176, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 176, 174, 224, 135,
-			175, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174, 224, 149, 174, 224, 190, 174, 224, 168,
-			174, 224, 2, 224, 175, 139, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 191,
-			224, 174, 179, 0, 8, 141, 175, 224, 176, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 178,
-			0, 8, 141, 175, 224, 178, 174, 224, 135, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 141, 175, 224, 178, 174, 224, 149,
-			174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 170, 174, 224, 2, 224, 175, 129, 0, 8, 141, 175, 224, 178, 174, 224, 175,
-			174, 224, 136, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 175, 174, 224, 136,
-			175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 170,
-			174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 174, 190,
-			224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 159, 0, 8, 141,
-			175, 224, 180, 174, 224, 128, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 147, 174, 224, 2, 224, 175, 135, 0, 8, 159,
-			174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 180, 0, 8, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 178,
-			0, 8, 164, 174, 224, 141, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 164, 174, 224, 141,
-			175, 224, 164, 174, 224, 130, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 164, 174, 224, 191, 174, 224, 169,
-			174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 174, 174, 224, 141, 175, 224, 169, 174, 224, 138, 175, 224, 164, 174, 224, 2,
-			224, 174, 190, 224, 174, 178, 0, 8, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 174, 174, 224, 176, 174, 224, 170,
-			174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 164,
-			224, 175, 136, 0, 8, 181, 174, 224, 128, 175, 224, 156, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 181, 174, 224, 135,
-			175, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 181, 174, 224, 141, 175, 224, 176, 174, 224, 130,
-			175, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 184,
-			224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 190, 174, 224, 175, 174, 224, 191, 174, 224, 163, 174, 224, 141, 175, 224, 163,
-			174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 176, 174, 224, 2, 224, 175, 135,
-			224, 174, 183, 0, 8, 190, 174, 224, 176, 174, 224, 141, 175, 224, 159, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 190, 0, 8, 190,
-			174, 224, 176, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 190, 0, 8, 191, 174, 224, 18, 69, 141, 175,
-			224, 169, 174, 224, 185, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 159, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 175, 138, 224,
-			174, 159, 224, 174, 191, 0, 8, 191, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224,
-			174, 176, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 149, 174, 224, 2, 224,
-			174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176, 174, 224, 128, 175, 224, 149, 174, 224, 2, 224,
-			174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224,
-			174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 168, 174, 224, 2, 224,
-			175, 139, 0, 8, 191, 174, 224, 169, 174, 224, 139, 175, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 169, 174, 224, 140, 175,
-			224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174, 224, 141, 175, 224, 164, 174, 224, 129, 175, 224, 174, 174, 224, 190, 174,
-			224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174,
-			224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 191, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175,
-			224, 168, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 178, 174, 224, 134, 175, 224, 185, 174, 224, 2, 224, 174, 190, 224,
-			174, 170, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 191, 174, 224, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 190, 0,
-			8, 191, 174, 224, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 191, 174,
-			224, 181, 174, 224, 179, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 183, 174, 224, 2, 224, 175, 139, 0,
-			8, 191, 174, 224, 183, 174, 224, 135, 175, 224, 149, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224, 141, 175,
-			224, 149, 174, 224, 142, 174, 224, 2, 224, 174, 175, 224, 175, 130, 224, 174, 184, 0, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224, 144, 174,
-			224, 2, 224, 174, 176, 224, 175, 128, 224, 174, 174, 0, 224, 174, 191, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8,
-			2, 224, 174, 175, 224, 175, 130, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 149, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174,
-			174, 224, 174, 191, 224, 174, 169, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			175, 128, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			175, 135, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 177, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191,
-			8, 2, 224, 174, 177, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 177, 224,
-			174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 170, 224, 175, 141, 32, 0, 224, 174,
-			191, 8, 2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 175,
-			129, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190,
-			224, 174, 184, 224, 175, 141, 32, 224, 174, 174, 224, 175, 135, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174,
-			169, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174,
-			170, 224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175,
-			136, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175,
-			128, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175,
-			136, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 140, 0, 224,
-			175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 164, 0, 224, 175, 141, 1, 140, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224, 174,
-			175, 0, 224, 175, 141, 2, 32, 224, 174, 149, 0, 224, 175, 141, 2, 224, 174, 149, 0, 224, 175, 141, 2, 224, 174, 184, 0, 224, 175, 141,
-			8, 128, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 8, 128, 175, 224, 170, 174, 224, 141, 175, 224, 184, 174,
-			224, 136, 174, 224, 2, 32, 0, 224, 175, 141, 8, 129, 175, 224, 176, 174, 224, 2, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 224, 175,
-			141, 8, 134, 175, 224, 168, 174, 224, 2, 224, 174, 178, 224, 174, 184, 0, 224, 175, 141, 8, 135, 175, 224, 181, 174, 224, 191, 174, 224, 181,
-			174, 224, 2, 32, 0, 224, 175, 141, 8, 136, 175, 224, 170, 174, 224, 2, 224, 174, 178, 32, 0, 224, 175, 141, 8, 136, 175, 224, 174, 174,
-			224, 0, 224, 175, 141, 8, 139, 175, 224, 156, 174, 224, 2, 32, 0, 224, 175, 141, 8, 140, 175, 224, 154, 174, 224, 2, 224, 174, 175, 0,
-			224, 175, 141, 8, 159, 174, 224, 0, 224, 175, 141, 8, 178, 174, 224, 2, 224, 174, 169, 224, 175, 139, 0, 224, 175, 141, 8, 190, 174, 224,
-			154, 174, 224, 2, 224, 174, 176, 224, 174, 159, 224, 175, 128, 224, 174, 184, 0, 224, 175, 141, 8, 190, 174, 224, 183, 174, 224, 2, 32, 0,
-			4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 2, 224, 174, 183, 224, 175, 141, 3, 49, 34, 37, 0, 224, 174, 191, 224, 174, 176, 224, 175,
-			129, 8, 2, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224,
-			174, 159, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 176, 3, 49, 34, 37, 89, 140, 119, 83, 109, 0, 224, 175, 141, 224, 174, 176, 224,
-			174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224,
-			174, 170, 8, 154, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 3, 49, 34, 109, 48, 0, 224, 174, 191, 224, 174, 176, 224, 174,
-			190, 224, 174, 170, 224, 175, 141, 8, 3, 49, 34, 118, 48, 0, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 159, 224, 175, 141, 8,
-			134, 175, 224, 176, 174, 224, 3, 49, 34, 152, 140, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 141, 175, 224, 176, 174, 224, 190, 174,
-			224, 174, 174, 224, 3, 49, 36, 140, 0, 4, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 174, 191, 3, 49, 37, 0, 224, 174,
-			191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 170, 8, 139, 175, 224, 178, 174, 224, 2, 224, 174,
-			190, 224, 174, 178, 3, 49, 48, 0, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 141, 175, 224, 176, 174, 224,
-			190, 174, 224, 174, 174, 224, 3, 49, 49, 36, 140, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174,
-			224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 135, 224, 174, 175, 3, 49, 49, 109, 0, 224, 174, 191, 224, 174, 179, 224, 174,
-			191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 3, 49, 55, 37, 50, 140, 109, 0, 224, 174, 191, 224, 174, 179, 224,
-			174, 191, 224, 174, 175, 224, 175, 139, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 3, 49,
-			55, 37, 57, 119, 48, 118, 47, 0, 224, 174, 191, 224, 174, 179, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 8, 3, 49, 55,
-			109, 34, 49, 0, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 129, 224, 174, 149, 224, 174, 179,
-			3, 49, 55, 109, 71, 71, 0, 224, 175, 141, 224, 174, 178, 224, 175, 139, 224, 174, 170, 1, 136, 175, 224, 154, 174, 224, 141, 175, 224, 169,
-			174, 224, 142, 174, 224, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3, 49, 55, 119, 48, 0, 224, 174, 191,
-			224, 174, 179, 224, 175, 136, 224, 174, 175, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 49, 55, 134, 57, 109, 66, 140, 149, 0, 224,
-			175, 141, 224, 174, 175, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 159, 8, 134, 175, 224, 154, 174, 224, 2, 224, 174, 191, 3, 49,
-			57, 152, 34, 37, 140, 0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 174, 191,
-			224, 174, 149, 224, 175, 135, 224, 174, 183, 224, 174, 169, 3, 49, 58, 0, 224, 175, 141, 224, 174, 181, 8, 2, 17, 65, 0, 224, 175, 129,
-			224, 174, 181, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 159, 8, 2, 224, 174, 191, 3, 49, 58, 118, 55, 37, 140, 0, 4, 224,
-			174, 191, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 32, 3, 49, 62, 37, 48, 0, 224, 174, 191, 224, 174, 179, 224,
-			174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 178, 0, 224, 174, 191, 224, 174, 179, 224, 174, 191, 224, 174, 159, 8, 3, 49, 62,
-			37, 140, 149, 0, 4, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 178, 3, 49,
-			62, 109, 71, 71, 0, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175,
-			141, 0, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 154, 1,
-			134, 174, 224, 2, 224, 175, 129, 224, 174, 181, 224, 174, 178, 3, 49, 76, 0, 4, 224, 175, 141, 224, 174, 154, 8, 134, 175, 224, 178, 174,
-			224, 2, 224, 174, 176, 3, 49, 76, 109, 0, 224, 175, 141, 224, 174, 154, 8, 191, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175,
-			141, 224, 174, 154, 8, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 8, 136, 175, 224, 149, 174, 224, 2,
-			224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 174, 190, 224, 174, 176, 3, 49, 81, 109, 0, 4, 224, 175, 141, 224, 174, 154, 224, 174, 191,
-			224, 174, 149, 8, 134, 175, 224, 174, 174, 224, 2, 224, 175, 139, 3, 49, 89, 37, 49, 0, 224, 175, 141, 224, 174, 184, 224, 174, 191, 224,
-			174, 149, 8, 134, 175, 224, 174, 174, 224, 2, 224, 175, 139, 0, 224, 175, 141, 224, 174, 183, 2, 17, 66, 3, 49, 93, 0, 4, 224, 175,
-			141, 224, 174, 154, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 169, 224, 174, 176, 224, 174, 191, 3, 49, 93, 109, 0, 224, 175, 141, 224,
-			174, 183, 0, 4, 1, 18, 66, 3, 49, 109, 0, 1, 129, 175, 224, 164, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 1, 129, 175, 224,
-			176, 174, 224, 146, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174,
-			159, 224, 175, 141, 224, 174, 159, 0, 1, 136, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 159, 224, 174, 178, 0, 1, 140, 175, 224,
-			154, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 1, 141, 175, 224, 153, 174, 224, 183, 174, 224, 2, 224, 174,
-			176, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 164, 224, 175, 136, 0, 1, 141, 175, 224, 163, 174, 224,
-			128, 175, 224, 181, 174, 224, 2, 224, 174, 181, 224, 174, 178, 224, 175, 136, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224,
-			2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 1, 141, 175, 224, 178, 174, 224, 138, 175, 224, 149, 174, 224, 2, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 224, 174, 190, 0, 1, 141, 175, 224, 178, 174, 224, 175, 174, 224, 136, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174,
-			159, 224, 175, 141, 0, 1, 141, 175, 224, 179, 174, 224, 137, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 154, 174, 224,
-			141, 175, 224, 154, 174, 224, 137, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 154, 174, 224, 141, 175, 224, 158, 174, 224,
-			170, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 175, 224, 174, 190, 224, 174, 163, 0, 1, 154, 174, 224, 141, 175, 224, 158, 174, 224,
-			170, 174, 224, 2, 224, 174, 181, 224, 175, 141, 224, 174, 175, 0, 1, 159, 174, 224, 149, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174,
-			181, 224, 174, 191, 0, 1, 164, 174, 224, 141, 175, 224, 168, 174, 224, 136, 175, 224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 175,
-			136, 0, 1, 169, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 176, 0, 1, 170, 174, 224, 141, 175, 224, 174, 174, 224, 176, 174, 224,
-			134, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 178, 174, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174,
-			190, 0, 1, 181, 174, 224, 141, 175, 224, 184, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174,
-			190, 0, 1, 190, 174, 224, 149, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 191, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224,
-			154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174,
-			176, 224, 174, 191, 224, 174, 169, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 175, 141, 32, 0,
-			1, 190, 174, 224, 170, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 1, 190, 174, 224, 181, 174, 224, 191, 174,
-			224, 164, 174, 224, 2, 224, 174, 176, 0, 1, 190, 174, 224, 185, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 191, 0, 2, 224, 174,
-			181, 224, 174, 191, 224, 174, 158, 0, 2, 224, 174, 181, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 8, 0, 8, 2, 224,
-			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
-			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 139, 175, 224, 178, 174, 224, 2, 224, 174, 178, 0,
-			8, 140, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 153, 174, 224, 191, 174, 224, 178, 174,
-			224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 169, 224, 174, 181, 0, 8, 141, 175,
-			224, 163, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 177, 224, 175, 141, 0, 8, 141, 175, 224, 163, 174, 224, 191, 174, 224, 181, 174,
-			224, 2, 224, 174, 179, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0,
-			8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174,
-			224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175,
-			224, 181, 174, 224, 2, 224, 174, 174, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0,
-			8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 8, 163, 174, 224, 176, 174,
-			224, 2, 224, 174, 179, 0, 8, 174, 174, 224, 141, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 164, 0,
-			8, 175, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 175, 174, 224, 191, 174, 224, 164, 174,
-			224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 175, 174, 224, 191, 174, 224, 176, 174, 224, 130, 175,
-			224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 191, 174,
-			224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 154, 174,
-			224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 178, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0,
-			8, 181, 174, 224, 128, 175, 224, 156, 174, 224, 2, 224, 174, 178, 224, 175, 136, 0, 8, 191, 174, 224, 154, 174, 224, 154, 174, 224, 2, 224,
-			174, 178, 224, 174, 190, 0, 8, 191, 174, 224, 159, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 174, 178, 0, 8, 191, 174, 224, 159, 174,
-			224, 141, 175, 224, 149, 174, 224, 190, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 178, 0, 224, 174, 178, 224, 175, 141,
-			224, 174, 170, 8, 175, 174, 224, 190, 174, 224, 149, 174, 224, 3, 49, 109, 55, 48, 149, 0, 224, 174, 159, 8, 141, 175, 224, 153, 174, 224,
-			134, 175, 224, 181, 174, 224, 3, 49, 109, 140, 149, 0, 224, 175, 135, 224, 174, 159, 8, 138, 175, 224, 178, 174, 224, 3, 49, 114, 140, 149,
-			0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 8, 156, 174, 224, 3, 49, 118, 34, 140, 149, 0, 224, 174, 190, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 3, 49, 118, 50, 47, 149, 0, 224, 175, 139, 224,
+			0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 149, 224, 174, 178, 3, 0, 4, 2, 224, 174,
+			176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 136, 3, 0,
+			4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 138, 224, 174, 180, 224, 175, 129, 3, 0, 4, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 3, 0, 4, 2, 224, 174, 176, 224,
+			174, 190, 224, 174, 175, 224, 174, 170, 224, 175, 129, 224, 174, 176, 3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 163,
+			3, 0, 4, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 0, 4, 2, 224,
+			174, 176, 224, 174, 190, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 176, 3, 0, 4, 2, 224, 174, 178, 224, 174, 149,
+			224, 175, 129, 3, 0, 4, 2, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 141, 224, 174, 174, 224, 174, 163, 3, 0,
+			4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 149, 224, 175, 141, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159,
+			224, 175, 141, 224, 174, 154, 224, 174, 153, 224, 175, 141, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174,
+			163, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 164, 224, 175, 141, 3, 0, 4, 2, 224, 174, 178,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 174, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174,
+			190, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 178,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 163, 3, 0, 4, 2, 224, 174, 178, 224, 174, 159, 224, 175,
+			141, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 191, 3, 0, 4, 2, 224, 174, 178, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
+			174, 169, 3, 0, 4, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 128, 224, 174, 169, 3, 0, 4, 2, 224, 174,
+			178, 224, 174, 174, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 175, 3, 0, 4, 2, 224, 174, 178, 224, 174, 175, 224, 174, 191, 3,
+			0, 4, 2, 224, 174, 178, 224, 174, 181, 224, 174, 153, 224, 175, 141, 224, 174, 149, 3, 0, 4, 2, 224, 174, 178, 224, 174, 190, 224, 174,
+			149, 224, 174, 181, 3, 0, 4, 2, 224, 174, 178, 224, 174, 190, 224, 174, 170, 3, 0, 4, 2, 224, 174, 178, 224, 174, 190, 224, 174, 181,
+			224, 174, 163, 224, 175, 141, 224, 174, 175, 3, 0, 4, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 3, 0, 2, 224, 174, 178, 224, 175,
+			136, 224, 174, 175, 224, 175, 139, 224, 174, 178, 224, 174, 190, 3, 0, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 2, 224, 174,
+			176, 3, 34, 109, 71, 71, 109, 0, 224, 174, 176, 224, 174, 190, 224, 174, 158, 224, 175, 141, 224, 174, 154, 3, 34, 118, 67, 76, 148, 0,
+			4, 3, 37, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 32, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 159, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 224, 174, 169, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 2, 224,
+			174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 175, 136, 0, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 175, 141, 32, 0, 2, 224, 174, 178,
+			224, 174, 181, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 175, 0, 224, 174, 178, 224, 175, 135, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 2, 224, 174, 191, 224, 174, 175, 3, 55, 114, 81, 81, 0, 224, 174, 178, 224, 174, 190, 224, 174, 149, 2, 224, 175, 130,
+			224, 174, 176, 3, 55, 118, 108, 0, 7, 6, 1, 10, 0, 2, 224, 174, 176, 224, 175, 139, 224, 174, 174, 3, 0, 224, 174, 176, 224, 175,
+			129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 2, 224, 174, 191, 224, 174, 176, 224, 174, 190, 3, 34, 122, 72, 72, 0, 3, 40, 0, 7,
+			6, 1, 19, 0, 3, 39, 0, 4, 224, 174, 179, 2, 224, 174, 159, 224, 174, 164, 3, 135, 0, 224, 174, 179, 2, 224, 174, 176, 224, 174,
+			153, 224, 175, 141, 224, 174, 149, 0, 224, 174, 179, 2, 224, 174, 181, 224, 175, 136, 0, 224, 174, 179, 2, 224, 174, 183, 224, 174, 164, 0,
+			7, 6, 1, 22, 0, 1, 141, 175, 224, 177, 174, 224, 2, 17, 66, 3, 10, 49, 0, 1, 141, 175, 224, 177, 174, 224, 3, 10, 49, 109,
+			0, 4, 1, 18, 66, 2, 17, 66, 3, 49, 0, 1, 128, 175, 224, 174, 174, 224, 141, 175, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224,
+			2, 224, 174, 191, 0, 1, 129, 175, 224, 164, 174, 224, 18, 68, 2, 224, 175, 129, 224, 174, 177, 224, 174, 191, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 0, 1, 129, 175, 224, 180, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 178, 0, 1, 133, 174, 224, 2,
+			224, 174, 190, 224, 174, 159, 224, 174, 174, 224, 174, 191, 0, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 1, 133,
+			174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 175, 135, 224, 174, 183, 0, 1, 133, 174, 224, 2, 224, 175, 141, 224, 174, 159, 224, 175, 139,
+			224, 174, 170, 224, 174, 176, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 183, 0, 1, 134, 174, 224, 2, 224, 175, 141, 224, 174, 176,
+			224, 175, 139, 224, 174, 183, 0, 1, 135, 175, 224, 178, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 191,
+			174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 1, 135, 175, 224, 181, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 169,
+			224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 1, 136, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 177, 224, 175, 136,
+			0, 1, 136, 175, 224, 177, 174, 224, 133, 174, 224, 2, 224, 175, 130, 224, 174, 181, 0, 1, 141, 175, 224, 153, 174, 224, 133, 174, 224, 2,
+			224, 174, 190, 224, 174, 176, 224, 174, 190, 0, 1, 141, 175, 224, 153, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 179, 0, 1, 141,
+			175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 175, 139, 224, 174, 170, 0, 1, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164,
+			174, 224, 2, 224, 174, 191, 224, 174, 180, 0, 1, 141, 175, 224, 176, 174, 224, 128, 175, 224, 154, 174, 224, 2, 224, 175, 135, 224, 174, 159,
+			0, 1, 141, 175, 224, 178, 174, 224, 138, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191,
+			0, 1, 141, 175, 224, 178, 174, 224, 191, 174, 224, 175, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136,
+			0, 1, 141, 175, 224, 179, 174, 224, 129, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 1, 154, 174, 224, 176,
+			174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 129, 224, 174, 178,
+			0, 1, 159, 174, 224, 141, 175, 224, 183, 174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 163, 224, 174, 178, 0, 1, 170, 174, 224, 133,
+			174, 224, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 1, 174, 174, 224, 190,
+			174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 135,
+			174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 1, 174, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 133,
+			174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 1, 175, 174, 224, 191, 174, 224, 176, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 159,
+			224, 174, 191, 0, 1, 178, 174, 224, 128, 175, 224, 168, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 1, 178, 174, 224, 130,
+			175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 163, 0, 1, 178, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 129,
+			175, 224, 149, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 1, 190, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141,
+			175, 224, 164, 174, 224, 137, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 1, 190, 174, 224, 178, 174, 224, 135,
+			174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 164, 174, 224, 134, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 1, 191,
+			174, 224, 169, 174, 224, 130, 175, 224, 175, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 1, 191, 174, 224, 174, 174, 224, 190, 174, 224, 169,
+			174, 224, 133, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 175, 135, 224, 174, 154,
+			224, 174, 191, 0, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 174, 174, 0, 1, 191, 174, 224, 183, 174, 224, 134,
+			174, 224, 2, 224, 174, 190, 0, 2, 224, 174, 190, 224, 174, 176, 224, 174, 169, 0, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 2,
+			224, 175, 128, 224, 174, 180, 224, 175, 135, 32, 0, 2, 224, 175, 128, 224, 174, 180, 224, 175, 141, 32, 0, 2, 224, 175, 129, 224, 174, 174,
+			224, 174, 176, 224, 174, 169, 0, 2, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 176, 0, 2, 224, 175, 130, 224, 174, 159, 0, 2,
+			224, 175, 138, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 2, 224, 175, 138, 224, 174, 179, 224, 175, 141, 0, 8, 2, 17, 66, 0, 8,
+			2, 224, 175, 128, 224, 174, 164, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175,
+			129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 174, 0, 8, 2, 224, 175,
+			129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
+			190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
+			190, 224, 174, 169, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174,
+			169, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 169, 224, 175, 141, 0, 8,
+			2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174,
+			163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 149, 224, 175,
+			129, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 32, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 224, 174, 169, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
+			174, 176, 224, 175, 129, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224,
+			175, 139, 224, 174, 170, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 224, 174, 174, 224, 174, 190, 224, 174, 159,
+			224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174,
+			175, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 224, 174, 181, 224, 175, 135, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
+			175, 139, 224, 174, 176, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 159, 0, 8, 129, 175, 224, 163, 174, 224, 135, 175,
+			224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 129, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0,
+			8, 129, 175, 224, 174, 174, 224, 2, 224, 175, 135, 224, 174, 183, 0, 8, 129, 175, 224, 176, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224,
+			175, 129, 224, 174, 178, 0, 8, 129, 175, 224, 178, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 190, 0, 8, 129, 175, 224, 181, 174,
+			224, 136, 175, 224, 169, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 129, 175, 224, 181, 174, 224, 175, 174,
+			224, 164, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 130, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0,
+			8, 130, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 130, 175, 224, 178, 174, 224, 190, 174, 224, 164, 174,
+			224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 129, 175, 224, 154, 174,
+			224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 176, 174, 224, 129, 175, 224, 175, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 178, 174,
+			224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 136, 175, 224, 149, 174,
+			224, 2, 224, 175, 129, 224, 174, 178, 224, 175, 129, 0, 8, 136, 175, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224,
+			174, 176, 0, 8, 136, 175, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 136, 175, 224, 175, 174,
+			224, 164, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 136, 175, 224, 177, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 130, 224,
+			174, 177, 0, 8, 136, 175, 224, 178, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 0, 8, 136, 175, 224, 179, 174,
+			224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 136, 175, 224, 181, 174, 224, 2, 224, 175, 139, 0,
+			8, 138, 175, 224, 178, 174, 224, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 0, 8, 139, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224,
+			174, 178, 0, 8, 140, 175, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 8, 141, 175, 224, 153, 174, 224, 134, 175,
+			224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 190, 0, 8, 141, 175, 224, 153, 174, 224, 178, 174, 224, 2, 224, 174, 190, 0,
+			8, 141, 175, 224, 153, 174, 224, 178, 174, 224, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175,
+			224, 153, 174, 224, 190, 174, 224, 185, 174, 224, 2, 224, 174, 190, 224, 174, 153, 224, 175, 141, 0, 8, 141, 175, 224, 156, 174, 224, 190, 174,
+			224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 163, 0, 8, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224,
+			174, 163, 224, 174, 190, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 170, 0, 8, 141, 175,
+			224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 154, 224, 174, 191, 0, 8, 141, 175, 224, 176, 174, 224, 134, 175,
+			224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 176, 174, 224, 135, 175, 224, 168, 174, 224, 2, 224,
+			174, 190, 224, 174, 163, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174, 224, 149, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224, 175, 139, 224,
+			174, 175, 224, 174, 191, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174, 224, 149, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224, 175, 139, 224,
+			174, 181, 224, 174, 191, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 179, 0, 8, 141, 175,
+			224, 176, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 141, 175, 224, 176, 174,
+			224, 190, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 174, 174, 224, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 190, 174,
+			224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 8, 141, 175, 224, 178, 174, 224, 135, 175, 224, 174, 174,
+			224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174,
+			224, 175, 174, 224, 136, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 175, 174,
+			224, 136, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174,
+			224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224,
+			174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 159, 0,
+			8, 141, 175, 224, 179, 174, 224, 128, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 141, 175, 224, 180, 174,
+			224, 128, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 141, 175, 224, 180, 174, 224, 191, 174, 224, 174, 174, 224, 164, 174,
+			224, 2, 224, 175, 130, 224, 174, 177, 0, 8, 147, 174, 224, 2, 224, 175, 135, 0, 8, 159, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224,
+			174, 180, 0, 8, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 164, 174, 224, 141, 175, 224, 149, 174,
+			224, 170, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 164, 174, 224, 141, 175, 224, 164, 174, 224, 130, 175, 224, 174, 174,
+			224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 164, 174, 224, 191, 174, 224, 169, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224,
+			174, 178, 0, 8, 169, 174, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 174, 174, 224, 141, 175, 224, 169, 174,
+			224, 138, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0,
+			8, 174, 174, 224, 176, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 174, 174, 224, 190, 174, 224, 176, 174,
+			224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 8, 181, 174, 224, 128, 175, 224, 156, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224,
+			174, 191, 0, 8, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 181, 174,
+			224, 141, 175, 224, 176, 174, 224, 130, 175, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 0, 8, 190, 174, 224, 170, 174,
+			224, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 190, 174, 224, 175, 174, 224, 141, 175,
+			224, 169, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 175, 174, 224, 191, 174,
+			224, 163, 174, 224, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174,
+			224, 175, 174, 224, 191, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 174, 176, 224,
+			174, 191, 0, 8, 190, 174, 224, 176, 174, 224, 2, 224, 175, 135, 224, 174, 183, 0, 8, 190, 174, 224, 176, 174, 224, 141, 175, 224, 159, 174,
+			224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 190, 0, 8, 190, 174, 224, 176, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 175, 129, 224,
+			174, 178, 224, 174, 190, 0, 8, 191, 174, 224, 18, 69, 141, 175, 224, 169, 174, 224, 185, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224,
+			154, 174, 224, 168, 174, 224, 2, 224, 175, 135, 224, 174, 164, 0, 8, 191, 174, 224, 159, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 175,
+			138, 224, 174, 159, 224, 174, 191, 0, 8, 191, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174,
+			176, 224, 174, 176, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 149, 174, 224,
+			2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176, 174, 224, 128, 175, 224, 149, 174, 224,
+			2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174, 224,
+			2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 168, 174, 224,
+			2, 224, 175, 139, 0, 8, 191, 174, 224, 169, 174, 224, 139, 175, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 169, 174, 224,
+			140, 175, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174, 224, 141, 175, 224, 164, 174, 224, 129, 175, 224, 174, 174, 224,
+			190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 128, 175, 224, 176, 174, 224, 141, 175, 224,
+			184, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 191, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224,
+			141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 178, 174, 224, 134, 175, 224, 185, 174, 224, 2, 224, 174,
+			190, 224, 174, 170, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 191, 174, 224, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174,
+			190, 0, 8, 191, 174, 224, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8,
+			191, 174, 224, 181, 174, 224, 179, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 183, 174, 224, 2, 224, 175,
+			139, 0, 8, 191, 174, 224, 183, 174, 224, 135, 175, 224, 149, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224,
+			141, 175, 224, 149, 174, 224, 142, 174, 224, 2, 224, 174, 175, 224, 175, 130, 224, 174, 184, 0, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224,
+			144, 174, 224, 2, 224, 174, 176, 224, 175, 128, 224, 174, 174, 0, 224, 174, 191, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 0, 224, 174,
+			191, 8, 2, 224, 174, 175, 224, 175, 130, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 18, 69, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224,
+			174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 174, 178, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 184,
+			224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 175, 128, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 177, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2,
+			224, 174, 177, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 177, 224, 174, 191,
+			224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 170, 224, 175, 141, 32, 0, 224, 174, 191, 8,
+			2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 175, 129, 0,
+			224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 18, 69, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174,
+			184, 224, 175, 141, 32, 224, 174, 174, 224, 175, 135, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 169, 224,
+			174, 191, 224, 174, 149, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
+			174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0,
+			224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 128, 224,
+			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 136, 224,
+			174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 140, 0, 224, 175, 129,
+			8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 164, 0, 224, 175, 141, 1, 137, 174, 224, 2, 224, 174, 176, 224, 175, 136, 224, 174, 169, 0,
+			224, 175, 141, 1, 140, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224, 174, 175, 0, 224, 175, 141, 2, 32, 224, 174, 149, 0, 224, 175, 141,
+			2, 224, 174, 149, 0, 224, 175, 141, 2, 224, 174, 184, 0, 224, 175, 141, 8, 128, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174,
+			0, 224, 175, 141, 8, 128, 175, 224, 170, 174, 224, 141, 175, 224, 184, 174, 224, 136, 174, 224, 2, 32, 0, 224, 175, 141, 8, 129, 175, 224,
+			154, 174, 224, 2, 224, 174, 179, 0, 224, 175, 141, 8, 129, 175, 224, 175, 174, 224, 2, 224, 174, 176, 224, 175, 136, 224, 174, 169, 0, 224,
+			175, 141, 8, 129, 175, 224, 176, 174, 224, 2, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 224, 175, 141, 8, 129, 175, 224, 183, 174, 224,
+			2, 224, 174, 179, 0, 224, 175, 141, 8, 134, 175, 224, 168, 174, 224, 2, 224, 174, 178, 224, 174, 184, 0, 224, 175, 141, 8, 135, 175, 224,
+			181, 174, 224, 191, 174, 224, 181, 174, 224, 2, 32, 0, 224, 175, 141, 8, 136, 175, 224, 170, 174, 224, 2, 224, 174, 178, 32, 0, 224, 175,
+			141, 8, 136, 175, 224, 174, 174, 224, 0, 224, 175, 141, 8, 139, 175, 224, 156, 174, 224, 2, 32, 0, 224, 175, 141, 8, 140, 175, 224, 154,
+			174, 224, 2, 224, 174, 175, 0, 224, 175, 141, 8, 159, 174, 224, 0, 224, 175, 141, 8, 178, 174, 224, 2, 224, 174, 169, 224, 175, 139, 0,
+			224, 175, 141, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 159, 224, 175, 128, 224, 174, 184, 0, 224, 175, 141, 8, 190, 174,
+			224, 183, 174, 224, 2, 32, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 2, 224, 174, 183, 224, 175, 141, 3, 49, 34, 37, 0, 224,
+			174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191,
+			224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 176, 3, 49, 34, 37, 89, 139, 119, 83, 109, 0,
+			224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 176, 0,
+			224, 175, 141, 224, 174, 176, 224, 174, 170, 8, 154, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 3, 49, 34, 109, 48, 0, 224,
+			174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 3, 49, 34, 118, 48, 0, 224, 175, 141, 224, 174, 176, 224, 175, 130,
+			224, 174, 159, 224, 175, 141, 8, 134, 175, 224, 176, 174, 224, 3, 49, 34, 151, 139, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 141,
+			175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 3, 49, 36, 139, 0, 4, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 174,
+			191, 3, 49, 37, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 170, 8, 139, 175,
+			224, 178, 174, 224, 2, 224, 174, 190, 224, 174, 178, 3, 49, 48, 0, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 175, 141,
+			8, 190, 174, 224, 156, 174, 224, 3, 49, 48, 118, 139, 0, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 141,
+			175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 3, 49, 49, 36, 139, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224,
+			190, 174, 224, 174, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 135, 224, 174, 175, 3, 49, 49, 109, 0, 224, 174, 191,
+			224, 174, 179, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 3, 49, 55, 37, 50, 139, 109, 0, 224, 174,
+			191, 224, 174, 179, 224, 174, 191, 224, 174, 175, 224, 175, 139, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 175, 141, 8, 2, 224, 174, 176,
+			224, 174, 190, 3, 49, 55, 37, 57, 119, 48, 118, 47, 0, 224, 174, 191, 224, 174, 179, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175,
+			141, 8, 3, 49, 55, 109, 34, 49, 0, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 129, 224,
+			174, 149, 224, 174, 179, 3, 49, 55, 109, 71, 71, 0, 224, 175, 141, 224, 174, 178, 224, 175, 139, 224, 174, 170, 1, 136, 175, 224, 154, 174,
+			224, 141, 175, 224, 169, 174, 224, 142, 174, 224, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3, 49, 55, 119,
+			48, 0, 224, 174, 191, 224, 174, 179, 224, 175, 136, 224, 174, 175, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 49, 55, 134, 57, 109,
+			66, 139, 148, 0, 224, 175, 141, 224, 174, 175, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 159, 8, 134, 175, 224, 154, 174, 224, 2,
+			224, 174, 191, 3, 49, 57, 151, 34, 37, 139, 0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224,
+			174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 135, 224, 174, 183, 224, 174, 169, 3, 49, 58, 0, 224, 175, 141, 224, 174, 181, 8, 2, 17,
+			65, 0, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 159, 8, 2, 224, 174, 191, 3, 49, 58, 118, 55,
+			37, 139, 0, 4, 224, 174, 191, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 32, 3, 49, 62, 37, 48, 0, 224, 174,
+			191, 224, 174, 179, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 178, 0, 224, 174, 191, 224, 174, 179, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 8, 2, 32, 18, 94, 3, 49, 62, 37, 49, 0, 224, 174, 191, 224, 174, 179, 224, 174, 191, 224, 174, 159, 8, 3, 49,
+			62, 37, 139, 148, 0, 224, 175, 141, 224, 174, 179, 224, 174, 149, 224, 175, 141, 8, 129, 175, 224, 164, 174, 224, 3, 49, 62, 109, 49, 0,
+			4, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 178, 3, 49, 62, 109, 71, 71,
+			0, 224, 174, 191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 224, 174,
+			191, 224, 174, 179, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 136, 0, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174,
+			176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 8, 3, 49, 62, 118, 34, 49, 0, 224, 175, 141, 224, 174, 154, 1, 134, 174, 224, 2, 224,
+			175, 129, 224, 174, 181, 224, 174, 178, 3, 49, 76, 0, 4, 224, 175, 141, 224, 174, 154, 8, 134, 175, 224, 178, 174, 224, 2, 224, 174, 176,
+			3, 49, 76, 109, 0, 224, 175, 141, 224, 174, 154, 8, 191, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 154, 8,
+			191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 8, 136, 175, 224, 149, 174, 224, 2, 224, 174, 159, 224, 174,
+			191, 224, 174, 149, 224, 174, 190, 224, 174, 176, 3, 49, 81, 109, 0, 4, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 149, 8, 134,
+			175, 224, 174, 174, 224, 2, 224, 175, 139, 3, 49, 89, 37, 49, 0, 224, 175, 141, 224, 174, 184, 224, 174, 191, 224, 174, 149, 8, 134, 175,
+			224, 174, 174, 224, 2, 224, 175, 139, 0, 224, 175, 141, 224, 174, 183, 2, 17, 66, 3, 49, 93, 0, 4, 224, 175, 141, 224, 174, 154, 8,
+			191, 174, 224, 181, 174, 224, 2, 224, 174, 169, 224, 174, 176, 224, 174, 191, 3, 49, 93, 109, 0, 224, 175, 141, 224, 174, 183, 0, 4, 1,
+			18, 66, 3, 49, 109, 0, 1, 129, 175, 224, 164, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 1, 129, 175, 224, 176, 174, 224, 146, 174,
+			224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224,
+			174, 159, 0, 1, 136, 175, 224, 176, 174, 224, 137, 174, 224, 2, 224, 174, 177, 224, 175, 141, 0, 1, 136, 175, 224, 176, 174, 224, 137, 174,
+			224, 2, 224, 174, 178, 224, 175, 141, 0, 1, 136, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 159, 224, 174, 178, 0, 1, 140, 175,
+			224, 154, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 1, 141, 175, 224, 153, 174, 224, 183, 174, 224, 2, 224,
+			174, 176, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 164, 224, 175, 136, 0, 1, 141, 175, 224, 163, 174,
+			224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 181, 224, 174, 178, 224, 175, 136, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174,
+			224, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 1, 141, 175, 224, 178, 174, 224, 138, 175, 224, 149, 174, 224, 2, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 0, 1, 141, 175, 224, 178, 174, 224, 175, 174, 224, 136, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224,
+			174, 159, 224, 175, 141, 0, 1, 141, 175, 224, 179, 174, 224, 137, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 154, 174,
+			224, 141, 175, 224, 154, 174, 224, 137, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 154, 174, 224, 141, 175, 224, 158, 174,
+			224, 170, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 175, 224, 174, 190, 224, 174, 163, 0, 1, 154, 174, 224, 141, 175, 224, 158, 174,
+			224, 170, 174, 224, 2, 224, 174, 181, 224, 175, 141, 224, 174, 175, 0, 1, 159, 174, 224, 149, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224,
+			174, 181, 224, 174, 191, 0, 1, 164, 174, 224, 141, 175, 224, 168, 174, 224, 136, 175, 224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224,
+			175, 136, 0, 1, 169, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 176, 0, 1, 170, 174, 224, 141, 175, 224, 174, 174, 224, 176, 174,
+			224, 134, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 178, 174, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224,
+			174, 190, 0, 1, 181, 174, 224, 141, 175, 224, 184, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224,
+			174, 190, 0, 1, 190, 174, 224, 149, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 191, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175,
+			224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224,
+			174, 176, 224, 174, 191, 224, 174, 169, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 175, 141, 32,
+			0, 1, 190, 174, 224, 170, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 1, 190, 174, 224, 181, 174, 224, 191,
+			174, 224, 164, 174, 224, 2, 224, 174, 176, 0, 1, 190, 174, 224, 185, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 191, 0, 2, 224,
+			174, 181, 224, 174, 191, 224, 174, 158, 0, 2, 224, 174, 181, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 8, 0, 8, 2,
+			224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			224, 174, 190, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 149, 224, 174, 191, 224, 174, 176,
+			224, 174, 191, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 224, 174, 159,
+			224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 174, 224, 175, 141, 32, 224, 174, 135, 224, 174, 169, 224, 175, 141, 0, 8, 128, 175, 224,
+			176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 130, 175, 224, 175, 174, 224, 2, 224, 174, 178, 224, 174,
+			191, 224, 174, 170, 224, 175, 141, 224, 174, 159, 224, 174, 184, 0, 8, 139, 175, 224, 178, 174, 224, 2, 224, 174, 178, 0, 8, 140, 175, 224,
+			154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 153, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174,
+			175, 224, 175, 141, 224, 174, 175, 224, 174, 190, 0, 8, 141, 175, 224, 153, 174, 224, 191, 174, 224, 178, 174, 224, 2, 224, 174, 169, 0, 8,
+			141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 169, 224, 174, 181, 0, 8, 141, 175, 224, 163, 174, 224, 191, 174, 224,
+			181, 174, 224, 2, 224, 174, 177, 224, 175, 141, 0, 8, 141, 175, 224, 163, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 179, 0, 8,
+			141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224,
+			191, 174, 224, 170, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 149, 174, 224,
+			2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174,
+			174, 0, 8, 141, 175, 224, 178, 174, 224, 136, 175, 224, 174, 174, 224, 2, 224, 174, 177, 224, 175, 141, 0, 8, 141, 175, 224, 178, 174, 224,
+			136, 175, 224, 174, 174, 224, 2, 224, 174, 178, 224, 175, 141, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 163, 224, 175,
+			141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 8,
+			163, 174, 224, 176, 174, 224, 2, 224, 174, 179, 0, 8, 174, 174, 224, 141, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 175,
+			141, 224, 174, 164, 0, 8, 175, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 175, 174, 224,
+			191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 175, 174, 224, 191, 174, 224,
+			176, 174, 224, 130, 175, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224,
+			164, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224,
+			168, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 178, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 159, 224, 175,
+			141, 224, 174, 159, 0, 8, 181, 174, 224, 128, 175, 224, 156, 174, 224, 2, 224, 174, 178, 224, 175, 136, 0, 8, 191, 174, 224, 154, 174, 224,
+			154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 191, 174, 224, 159, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 174, 178, 0, 8,
+			191, 174, 224, 159, 174, 224, 141, 175, 224, 149, 174, 224, 190, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 178, 0, 224,
+			174, 178, 224, 175, 141, 224, 174, 170, 8, 175, 174, 224, 190, 174, 224, 149, 174, 224, 3, 49, 109, 55, 48, 148, 0, 224, 174, 156, 8, 2,
+			224, 174, 149, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 3, 49, 109, 88, 109, 0, 224, 174, 159,
+			8, 141, 175, 224, 153, 174, 224, 134, 175, 224, 181, 174, 224, 3, 49, 109, 139, 148, 0, 224, 175, 135, 224, 174, 159, 8, 138, 175, 224, 178,
+			174, 224, 3, 49, 114, 139, 148, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 8, 156, 174, 224, 3, 49, 118, 34, 139, 148,
+			0, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 3, 49, 118, 50,
+			47, 148, 0, 224, 174, 190, 224, 174, 164, 1, 133, 174, 224, 2, 224, 174, 174, 224, 174, 191, 3, 49, 118, 140, 109, 0, 224, 175, 139, 224,
 			174, 170, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 3, 49, 119, 71, 0, 224, 175, 129, 224, 174, 174,
-			224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 190, 174, 224, 159, 174, 224, 3, 49, 122, 65, 36, 66, 47, 149, 0, 224, 175,
-			140, 224, 174, 154, 224, 174, 191, 224, 174, 149, 8, 3, 49, 135, 89, 37, 49, 149, 0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 3, 49,
-			140, 0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 8, 134, 175, 224, 178, 174, 224, 142, 174, 224,
-			2, 224, 174, 178, 3, 49, 140, 34, 37, 49, 109, 0, 224, 175, 141, 224, 174, 159, 3, 49, 140, 149, 0, 4, 1, 141, 175, 224, 149, 174,
-			224, 3, 49, 149, 0, 8, 141, 175, 224, 175, 174, 224, 190, 174, 224, 174, 174, 224, 156, 174, 224, 0, 8, 190, 174, 224, 159, 174, 224, 141,
+			224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 190, 174, 224, 159, 174, 224, 3, 49, 122, 65, 36, 66, 47, 148, 0, 224, 175,
+			140, 224, 174, 154, 224, 174, 191, 224, 174, 149, 8, 3, 49, 135, 89, 37, 49, 148, 0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 3, 49,
+			139, 0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 8, 134, 175, 224, 178, 174, 224, 142, 174, 224,
+			2, 224, 174, 178, 3, 49, 139, 34, 37, 49, 109, 0, 224, 175, 141, 224, 174, 159, 3, 49, 139, 148, 0, 4, 1, 141, 175, 224, 149, 174,
+			224, 3, 49, 148, 0, 8, 141, 175, 224, 175, 174, 224, 190, 174, 224, 174, 174, 224, 156, 174, 224, 0, 8, 190, 174, 224, 159, 174, 224, 141,
 			175, 224, 184, 174, 224, 0, 8, 191, 174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 0, 4, 224, 175, 129, 1, 141, 175, 224, 163, 174,
-			224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 159, 224, 174, 191, 3, 49, 151, 0, 224, 175, 129, 1, 141, 175, 224, 169, 174, 224, 174, 174,
+			224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 159, 224, 174, 191, 3, 49, 150, 0, 224, 175, 129, 1, 141, 175, 224, 169, 174, 224, 174, 174,
 			224, 141, 175, 224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 224, 175, 129, 1, 141, 175, 224, 176, 174, 224, 190, 174,
 			224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 174, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 224, 175, 129, 1, 141, 175, 224, 176, 174,
 			224, 190, 174, 224, 175, 174, 224, 136, 175, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 224, 175, 129, 1, 175, 174,
@@ -31538,24 +42944,33 @@ FilesInMemory create_espeakdata_dicts () {
 			224, 2, 224, 174, 159, 224, 174, 191, 0, 4, 1, 141, 175, 224, 149, 174, 224, 136, 175, 224, 178, 174, 224, 174, 174, 224, 2, 224, 175, 129,
 			224, 174, 149, 224, 175, 136, 3, 81, 0, 1, 141, 175, 224, 149, 174, 224, 191, 174, 224, 177, 174, 224, 143, 174, 224, 2, 224, 175, 129, 224,
 			174, 164, 224, 174, 191, 0, 1, 141, 175, 224, 153, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 1, 141, 175, 224, 153, 174,
-			224, 133, 174, 224, 2, 224, 175, 138, 0, 1, 141, 175, 224, 153, 174, 224, 135, 174, 224, 2, 224, 175, 138, 0, 1, 141, 175, 224, 177, 174,
-			224, 168, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 2, 17, 66, 0, 2, 224, 175, 128, 224, 174, 164, 0, 8, 2, 17, 66, 28, 17,
-			12, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 176, 224, 175,
-			129, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 170, 0, 8, 2, 224, 174,
-			190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174,
-			164, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 8,
-			2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175,
-			141, 224, 174, 164, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174,
-			176, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174,
-			153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174,
-			169, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 181, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175,
-			136, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 8,
-			2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174,
-			131, 224, 174, 170, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 191, 224, 174,
-			159, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174,
-			177, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175,
-			141, 224, 174, 169, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 8,
+			224, 133, 174, 224, 2, 224, 175, 138, 0, 1, 141, 175, 224, 153, 174, 224, 135, 174, 224, 2, 224, 175, 138, 0, 1, 141, 175, 224, 159, 174,
+			224, 129, 175, 224, 176, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 0, 1, 141, 175, 224, 177, 174, 224, 168, 174, 224, 2, 224,
+			175, 129, 224, 174, 163, 0, 2, 17, 66, 0, 2, 224, 175, 128, 224, 174, 164, 0, 8, 2, 17, 66, 28, 17, 12, 0, 8, 2, 224, 174,
+			190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149, 0, 8,
+			2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 170, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 153, 224, 175,
+			141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174,
+			168, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174,
+			174, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 8,
+			2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 128, 224, 174, 175, 0, 8,
+			2, 224, 174, 190, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 181, 224, 174, 191, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174,
+			170, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174,
+			176, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 135, 224, 174, 156, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175,
+			141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174,
+			169, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174,
+			131, 224, 174, 170, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174,
+			159, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174,
+			159, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 176, 224, 175,
+			136, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175,
+			129, 224, 174, 149, 224, 174, 191, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175,
+			134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 184, 0, 8,
+			2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174,
+			191, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 8,
 			2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174,
 			176, 224, 174, 191, 224, 174, 156, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 176, 0, 8,
 			2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174,
@@ -31565,566 +42980,753 @@ FilesInMemory create_espeakdata_dicts () {
 			191, 224, 174, 176, 224, 175, 128, 224, 174, 183, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 174, 184, 224, 175,
 			141, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175,
 			129, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 185, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 176, 0, 8,
-			2, 224, 174, 191, 224, 174, 176, 224, 175, 141, 224, 174, 176, 224, 175, 134, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174,
-			174, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 174, 168, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224, 175, 129, 224, 174,
-			149, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 175, 129, 224, 174,
+			2, 224, 174, 191, 224, 174, 176, 224, 175, 141, 224, 174, 176, 224, 175, 134, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174,
+			169, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
+			149, 224, 174, 168, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174,
+			149, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
 			149, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 156, 224, 174, 176, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224, 175, 129, 224, 174,
 			156, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 164, 224, 175,
 			141, 224, 174, 164, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175, 129, 0, 8,
-			2, 224, 175, 129, 224, 174, 163, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 154, 224, 175, 128, 224, 174,
-			178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 154, 224, 175, 135, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174,
-			163, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174,
-			163, 224, 174, 168, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174,
-			163, 224, 174, 170, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 175, 130, 224, 174, 183, 0, 8,
-			2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174,
-			174, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 181, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174,
-			181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175,
-			141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174,
-			164, 224, 174, 191, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8,
-			2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 128, 224, 174,
-			176, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 175,
-			129, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175,
-			129, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174,
-			177, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175,
-			129, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175,
-			141, 224, 174, 170, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 169, 224, 174, 190, 224, 174,
-			158, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 181, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175,
-			141, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174,
-			159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 163, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174,
-			174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175,
-			129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174,
-			174, 224, 175, 134, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175,
-			129, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175,
-			129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
-			154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 156, 224, 174, 191, 0, 8,
-			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175,
+			2, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 149, 224, 175,
+			141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 154, 224, 174,
+			190, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 154, 224, 175, 128, 224, 174, 178, 0, 8, 2, 224, 175,
+			129, 224, 174, 163, 224, 174, 154, 224, 175, 135, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 154, 224, 175,
+			141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 168, 224, 174,
+			178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 174,
+			190, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 170, 224, 175, 130, 224, 174, 183, 0, 8, 2, 224, 175, 129, 224, 174,
+			163, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 174, 0, 8, 2, 224, 175,
+			129, 224, 174, 163, 224, 174, 176, 224, 175, 128, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 181, 224, 174,
+			164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174,
+			163, 224, 174, 181, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
+			163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 0, 8,
+			2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174,
+			154, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174,
+			164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175,
+			129, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174,
+			170, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 170, 224, 175,
+			129, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175,
+			135, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 175,
+			129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174,
+			170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 184, 224, 175,
+			141, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175,
+			129, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175,
+			141, 224, 174, 174, 224, 174, 169, 224, 174, 190, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 181, 224, 174, 159, 224, 174,
+			191, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 175, 129, 224, 174,
+			174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174,
+			163, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 0, 8,
+			2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
+			149, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			179, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 178, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 174, 190, 224, 174,
+			184, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175,
 			129, 224, 174, 168, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 174, 149, 224, 174, 181, 224, 174,
-			190, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 130, 224, 174, 156, 224, 175, 136, 0, 8,
-			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 175, 224, 174, 176, 0, 8,
-			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175,
-			129, 224, 174, 174, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175,
-			129, 224, 174, 176, 224, 175, 129, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174,
-			159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
-			176, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174,
-			191, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175,
-			129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 129, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175,
-			129, 224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 175,
-			129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 139, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175,
-			139, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 174, 190, 224, 174, 170, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 174,
-			190, 224, 174, 174, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 135, 224, 174, 170, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
-			178, 224, 175, 141, 224, 174, 174, 224, 175, 139, 18, 71, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 181, 224, 174, 185, 224, 174, 190,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 191,
-			0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 174, 191, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 175, 129, 224, 174, 179,
-			0, 8, 2, 224, 175, 130, 224, 174, 159, 224, 174, 178, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 156, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159,
-			224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159,
-			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 8, 2,
-			224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 179,
-			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176,
-			224, 175, 129, 224, 174, 149, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 175, 129, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136,
-			224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 224, 174, 164, 224, 175, 141,
-			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 135,
-			224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 184, 224, 175, 141, 32, 18, 91, 0, 8, 2, 224, 175, 136, 224, 174, 159,
-			0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 149, 0, 8, 2, 224, 175, 138, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 8, 2,
-			224, 175, 138, 224, 174, 163, 224, 174, 174, 0, 8, 2, 224, 175, 138, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 139,
-			224, 174, 149, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 154, 224, 174, 190, 224, 174, 178, 224, 175, 136, 0, 8, 2,
-			224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 32, 224, 174, 181, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 175,
-			139, 224, 174, 164, 224, 174, 190, 224, 174, 181, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 224, 174,
-			174, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175,
-			141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 0, 8,
-			2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174,
-			164, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 135, 224, 174,
-			156, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174,
-			191, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 175, 134, 224, 174, 159, 224, 175,
-			141, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 134, 224, 174, 159, 224, 175,
-			141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 168, 224, 174, 190, 0, 8, 2, 224, 175,
-			139, 224, 174, 170, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 175,
-			139, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 174, 164, 224, 175, 135, 224, 174, 184, 224, 175,
-			141, 224, 174, 181, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 174, 190, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175,
-			139, 224, 174, 174, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 175, 129, 224, 174, 149, 0, 8, 2, 224, 175,
-			139, 224, 174, 174, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174,
-			175, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 149, 0, 8, 2, 224,
-			175, 139, 224, 174, 176, 224, 174, 164, 224, 175, 141, 32, 224, 174, 164, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2,
-			224, 175, 139, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 176,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 32, 18, 85,
-			0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 177, 224, 175, 141, 0, 8, 2, 224, 175, 139,
-			224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170,
-			224, 175, 141, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 174, 0, 8, 2, 224, 175, 139,
-			224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141,
-			224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191,
-			224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 175, 138, 224, 174, 163, 224, 175, 141, 224, 174, 159,
-			224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 139,
-			224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 181, 224, 174, 191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2,
-			224, 175, 139, 224, 174, 183, 0, 8, 2, 224, 175, 140, 224, 174, 159, 0, 8, 2, 224, 175, 140, 224, 174, 169, 224, 175, 136, 0, 8, 2,
-			224, 175, 140, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 140, 224, 174, 176, 224, 174, 181, 0, 8, 2,
-			224, 175, 140, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 179,
-			224, 175, 136, 0, 8, 129, 175, 224, 176, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 159, 224, 175, 141, 224, 174, 159,
-			0, 8, 141, 175, 224, 149, 174, 224, 164, 174, 224, 174, 174, 224, 141, 175, 224, 169, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 149,
-			224, 175, 136, 0, 8, 141, 175, 224, 153, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 191, 0, 8, 141, 175, 224, 177,
-			174, 224, 154, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 224, 174, 191, 1, 141, 175, 224, 153, 174, 224, 135, 174, 224, 2, 224, 174, 178,
-			224, 175, 128, 224, 174, 183, 224, 175, 141, 0, 224, 174, 191, 1, 141, 175, 224, 177, 174, 224, 138, 175, 224, 170, 174, 224, 2, 224, 174, 176,
-			224, 174, 163, 0, 224, 174, 191, 2, 224, 174, 176, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224,
-			174, 176, 224, 174, 185, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224,
-			175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 169, 224,
-			175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224,
-			174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224,
-			174, 176, 224, 175, 136, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 32, 0, 224, 175,
-			129, 8, 2, 224, 174, 178, 224, 175, 139, 224, 174, 170, 224, 174, 178, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 175, 139, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178, 224, 174, 191,
-			224, 174, 175, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159,
-			0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 175,
-			141, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 130, 224, 174, 170, 0, 224, 175,
-			141, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 190,
-			224, 174, 184, 224, 175, 141, 32, 0, 224, 175, 141, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224, 174,
-			176, 0, 224, 175, 141, 8, 142, 174, 224, 2, 224, 174, 184, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224,
-			174, 163, 224, 175, 136, 224, 174, 159, 8, 3, 81, 34, 118, 50, 134, 140, 149, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174,
-			131, 224, 174, 170, 224, 175, 136, 224, 174, 159, 8, 3, 81, 34, 118, 83, 134, 140, 149, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224,
-			174, 170, 224, 175, 136, 224, 174, 159, 8, 0, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 159, 3, 81, 37, 83, 0, 224,
-			174, 191, 224, 174, 159, 8, 2, 224, 174, 190, 224, 174, 176, 3, 81, 37, 140, 0, 4, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
-			170, 8, 2, 224, 174, 190, 224, 174, 164, 3, 81, 40, 34, 40, 48, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8, 2,
-			224, 175, 128, 224, 174, 159, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8, 2, 224, 175, 130, 0, 224, 175, 129, 224, 174,
-			176, 224, 175, 129, 224, 174, 170, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 191, 3, 81, 40,
-			34, 40, 48, 109, 0, 224, 175, 129, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 164, 3, 81, 40, 48, 0, 224, 175, 129, 224, 174, 178,
-			224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 3, 81, 40, 55, 49, 109, 0, 224, 175, 129, 224, 174, 163,
-			224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 3, 81, 40, 66, 109, 76, 0,
-			4, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 178, 3, 81, 40,
-			66, 140, 149, 0, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 130, 224, 174, 176, 0, 224, 175, 129, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 159, 224, 174, 191, 3, 81, 40,
-			66, 141, 118, 50, 47, 109, 0, 4, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 3, 81, 81,
-			0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175, 129, 224, 174, 163, 0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175,
-			139, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175, 139, 224, 174, 183, 0, 224, 175,
-			141, 224, 174, 149, 1, 129, 175, 224, 163, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175,
-			141, 224, 174, 149, 1, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 1, 134, 174, 224, 2,
-			224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1, 139, 175, 224, 175, 174, 224, 133, 174, 224, 2, 224, 174, 191,
-			224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 1, 139, 175, 224, 176, 174, 224, 134, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175,
-			141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 175, 139, 224, 174, 154,
-			224, 174, 168, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1, 169, 174, 224, 156, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141,
-			224, 174, 170, 224, 174, 178, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191,
-			224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 191,
-			224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224, 176, 174, 224, 136, 175, 224, 181, 174, 224, 2, 224, 174, 191,
-			224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224, 181, 174, 224, 141, 175, 224, 175, 174, 224, 134, 175, 224, 164, 174, 224, 2,
-			224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 8, 129, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 163,
-			0, 224, 175, 141, 224, 174, 149, 8, 135, 175, 224, 178, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 8, 139,
-			175, 224, 175, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 139, 175, 224, 170,
-			174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2,
-			224, 175, 129, 224, 174, 163, 0, 224, 175, 141, 224, 174, 149, 8, 178, 174, 224, 2, 224, 174, 191, 224, 174, 169, 0, 224, 175, 141, 224, 174,
-			149, 8, 178, 174, 224, 2, 224, 175, 135, 224, 174, 156, 0, 224, 175, 141, 224, 174, 149, 8, 190, 174, 224, 164, 174, 224, 135, 175, 224, 181,
-			174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 8, 190, 174, 224, 164, 174, 224, 191, 174, 224, 181,
-			174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 8, 190, 174, 224, 181, 174, 224, 135,
-			175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 149, 174, 224, 141,
-			175, 224, 149, 174, 224, 190, 174, 224, 170, 174, 224, 141, 175, 224, 170, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 163,
-			224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 159, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 129,
-			224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 178, 174, 224, 139, 175, 224, 149, 174, 224, 2,
-			224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191,
-			224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169,
-			224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 174, 224, 175, 141,
-			32, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 0, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 1, 18, 68, 2, 224, 174, 176, 224, 174, 149, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 18, 68, 2, 224,
-			174, 176, 224, 174, 185, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 129, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 129, 175, 224, 168, 174, 224, 133, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141,
-			224, 174, 149, 224, 174, 191, 1, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191,
-			1, 133, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 135, 174, 224, 2, 224,
-			174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 190, 174, 224, 175, 174, 224, 191, 174, 224, 164, 174,
-			224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 149, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 170, 174,
-			224, 141, 175, 224, 170, 174, 224, 141, 175, 224, 176, 174, 224, 149, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191,
-			8, 179, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191,
-			8, 181, 174, 224, 168, 174, 224, 2, 224, 174, 176, 18, 71, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 191, 174, 224, 178, 174, 224,
-			190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 4, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 3, 81, 81, 109, 0, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174,
-			224, 2, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 8, 129, 175, 224, 180, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224,
-			174, 181, 224, 174, 169, 0, 224, 175, 141, 224, 174, 149, 8, 136, 175, 224, 163, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 163, 224,
-			175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224, 2, 32, 224, 174, 154,
-			224, 175, 129, 224, 174, 174, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 8, 141,
-			175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 149, 8, 141,
-			175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 224, 175, 141, 224, 174, 149, 8, 191,
-			174, 224, 169, 174, 224, 164, 174, 224, 2, 224, 174, 181, 224, 174, 169, 0, 4, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224,
-			129, 175, 224, 164, 174, 224, 3, 81, 81, 149, 0, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 130, 175, 224, 174, 174, 224,
-			0, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175,
-			224, 176, 174, 224, 138, 175, 224, 154, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 181, 174, 224, 0, 224, 175,
-			141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 181, 174, 224, 141, 175, 224, 184, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 156, 174,
-			224, 0, 4, 3, 81, 109, 0, 2, 224, 174, 156, 0, 8, 2, 28, 17, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174,
-			170, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174,
-			153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 178, 224, 174,
-			191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 190, 0, 8, 2, 224, 174, 159, 224, 174,
-			149, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174,
-			159, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 159, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 159, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174,
-			176, 224, 175, 136, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 175,
-			139, 224, 174, 164, 224, 175, 141, 224, 174, 149, 224, 174, 156, 0, 8, 2, 224, 174, 163, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8,
-			2, 224, 174, 163, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 163, 224, 175, 135, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174,
-			159, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8,
-			2, 224, 174, 164, 224, 174, 190, 224, 174, 175, 224, 175, 129, 224, 174, 164, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 174,
-			178, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 174,
-			191, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174,
-			154, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 191, 224, 174,
-			178, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174,
-			164, 224, 174, 149, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 174,
-			169, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 169, 224, 174,
-			170, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224, 174,
-			149, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174,
-			170, 224, 175, 134, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 176, 0, 8,
-			2, 224, 174, 174, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 174, 174, 224, 174, 181, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174,
-			177, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174,
-			174, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 174,
-			175, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 169, 224, 174, 190, 0, 8,
-			2, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
-			156, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 156, 0, 8, 2, 224, 174,
-			176, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 174, 178, 224, 174, 190, 224, 174,
-			159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 178, 18, 73, 224, 174, 175, 224, 175, 139,
-			0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 154, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 176,
-			0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 178, 0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 183, 224, 174, 191, 224, 174, 175,
-			0, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 181, 224, 174, 163, 0, 8, 2, 224, 174, 181,
-			224, 174, 169, 0, 8, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 174, 176,
-			224, 175, 141, 224, 174, 169, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 181,
-			224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 136,
-			0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 181, 224, 175, 129,
-			224, 174, 176, 0, 8, 141, 175, 224, 149, 174, 224, 136, 175, 224, 178, 174, 224, 164, 174, 224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 177,
-			174, 224, 168, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 224, 174, 170, 224, 175, 141, 8, 2, 18, 69, 224, 174, 190, 3, 81, 109, 48,
-			0, 224, 174, 170, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 3, 81, 109, 48, 76, 0, 224, 174, 169,
-			224, 174, 149, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 164, 3, 81, 109, 50, 109, 49, 109, 0, 224, 174,
-			181, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 109, 84, 109, 34, 65,
-			36, 66, 140, 149, 0, 224, 175, 135, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 114, 34, 109, 66, 140, 149, 0,
-			224, 174, 190, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 118, 34, 109, 66, 140, 149, 0, 224, 174, 190, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 224, 175, 135, 224, 174, 149, 8, 2, 224, 174, 176, 3, 81, 118, 66, 141, 114, 49, 109, 0, 224, 174, 190,
-			224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 170, 224, 174, 190, 224, 174, 164, 3, 81, 118, 88, 0, 4, 224,
-			175, 139, 224, 174, 170, 2, 224, 174, 190, 224, 174, 178, 3, 81, 119, 48, 0, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174,
-			149, 224, 174, 190, 12, 0, 224, 175, 139, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 178, 3, 81, 119, 49, 0, 224, 175, 139, 224, 174,
-			149, 8, 2, 224, 174, 176, 3, 81, 119, 49, 109, 0, 224, 175, 139, 224, 174, 174, 224, 174, 164, 224, 175, 135, 224, 174, 154, 224, 175, 129,
-			8, 2, 224, 174, 181, 224, 174, 176, 3, 81, 119, 65, 109, 72, 114, 89, 0, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 154, 8,
-			2, 224, 175, 135, 3, 81, 119, 141, 89, 0, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 81, 123,
-			34, 49, 0, 4, 224, 175, 134, 224, 174, 179, 8, 2, 224, 174, 164, 224, 174, 174, 3, 81, 135, 0, 224, 175, 134, 224, 174, 179, 8, 2,
-			224, 174, 176, 224, 174, 181, 0, 224, 175, 134, 224, 174, 179, 8, 2, 224, 174, 176, 224, 174, 191, 0, 224, 175, 140, 224, 174, 164, 8, 3,
-			81, 135, 47, 149, 0, 4, 224, 175, 141, 224, 174, 159, 1, 142, 174, 224, 2, 224, 175, 135, 3, 81, 141, 0, 224, 175, 141, 224, 174, 159,
-			8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 32, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 224, 174, 175,
-			0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 224, 174, 181, 0, 4, 1, 139, 175, 224, 174, 174, 224,
-			2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 3, 108, 0, 1, 174, 174, 224, 2, 224, 174, 190, 0, 1, 174, 174, 224, 2, 224, 175, 135,
-			224, 174, 154, 224, 175, 129, 224, 174, 181, 224, 174, 176, 0, 1, 174, 174, 224, 2, 224, 175, 135, 224, 174, 168, 224, 175, 141, 224, 174, 164,
-			224, 174, 191, 224, 174, 176, 0, 1, 174, 174, 224, 2, 224, 175, 135, 224, 174, 183, 224, 175, 141, 224, 174, 181, 0, 1, 174, 174, 224, 2,
-			224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 176, 0, 8, 174, 174, 224, 2, 224, 174, 191, 224, 174, 168, 224, 175, 141,
-			224, 174, 164, 0, 8, 174, 174, 224, 2, 224, 174, 191, 224, 174, 174, 224, 175, 136, 0, 1, 139, 175, 224, 174, 174, 224, 2, 224, 174, 169,
-			3, 108, 109, 0, 224, 174, 190, 224, 174, 170, 1, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 3, 108, 118,
-			71, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 109, 0, 7, 6, 1, 27, 0, 1, 141, 175, 224, 158, 174, 224, 2,
-			17, 66, 3, 75, 0, 1, 141, 175, 224, 158, 174, 224, 3, 75, 109, 0, 4, 1, 32, 141, 175, 224, 154, 174, 224, 2, 17, 66, 3, 76,
-			0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 32, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 175,
-			141, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 0, 1, 141, 175, 224, 159, 174, 224, 2, 17, 66, 0, 1, 141,
-			175, 224, 177, 174, 224, 2, 17, 66, 0, 1, 170, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 170, 174, 224, 137, 174,
-			224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 170, 174, 224, 139, 175, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224,
-			174, 176, 0, 1, 170, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 190, 174, 224, 174, 174, 224, 154, 174,
-			224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 190, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 191, 174,
-			224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 2, 224, 175, 134, 224, 174,
-			184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 17, 66, 28, 17, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224,
-			174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0,
-			8, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 129, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224,
-			174, 175, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224,
-			174, 176, 224, 175, 141, 224, 174, 156, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 175, 136, 0, 8, 2, 224,
-			174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224,
-			174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 0,
-			8, 2, 224, 174, 190, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224,
-			174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 141, 224,
-			174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 149, 224, 175, 139, 0,
-			8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224,
-			175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 174, 191, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224,
-			174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 224,
-			174, 170, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224,
-			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 181, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224,
-			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224,
-			174, 176, 224, 174, 181, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0,
-			8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 0,
-			8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
-			174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
-			174, 177, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 177, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224,
-			174, 179, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 175, 128, 224, 174, 169, 32, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 128,
-			224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 184,
-			224, 175, 129, 0, 8, 2, 224, 175, 128, 224, 174, 184, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 184, 224, 175, 141, 32, 0, 8,
-			2, 224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175,
-			141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 175, 224, 174, 191, 224, 174, 153, 224, 175,
-			141, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 163, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 18, 69, 0, 8, 2,
-			224, 175, 134, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141,
-			224, 174, 159, 224, 174, 191, 224, 174, 168, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159,
-			224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 8, 2, 224, 175, 134,
-			224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 169,
-			224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 136, 0, 8, 2,
-			224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 169, 0, 8, 2,
-			224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 134,
-			224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 32, 18, 82, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141,
-			224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 178,
-			224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191,
-			0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 180,
-			224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141,
-			32, 18, 84, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141,
-			32, 18, 83, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 169,
-			0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 0, 8, 2,
-			224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 175, 141,
-			224, 174, 179, 224, 175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170,
-			224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141,
-			224, 174, 170, 224, 175, 136, 224, 174, 175, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174,
-			224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141,
-			224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 175, 135, 32, 0, 8, 2, 224, 175,
-			134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 184, 224, 175,
-			141, 0, 8, 2, 224, 175, 135, 224, 174, 158, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174,
-			159, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 174,
-			191, 0, 8, 2, 224, 175, 135, 224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175,
-			135, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175,
-			135, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 158, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224, 175,
-			141, 224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 136, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8,
-			2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175,
-			136, 224, 174, 169, 224, 175, 128, 224, 174, 184, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8,
-			2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 181, 224, 175, 129, 0, 8, 2, 224, 175,
-			139, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 175, 140, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 174,
-			190, 224, 174, 176, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 174,
-			191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 185, 224, 174, 190, 224, 174, 169, 0, 8, 18, 71, 176, 174, 224, 191,
-			174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 128, 175, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141,
-			224, 174, 156, 0, 8, 129, 175, 224, 154, 174, 224, 2, 224, 175, 128, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176,
-			0, 8, 141, 175, 224, 184, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 156, 0, 8, 154,
-			174, 224, 2, 224, 174, 191, 224, 174, 169, 0, 8, 175, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 190, 174, 224, 163, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176,
-			0, 8, 191, 174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191,
-			0, 224, 175, 141, 2, 32, 24, 0, 224, 175, 141, 224, 174, 154, 2, 17, 66, 3, 76, 12, 0, 224, 175, 141, 224, 174, 154, 3, 76, 12,
-			109, 0, 224, 175, 134, 224, 174, 149, 224, 175, 141, 8, 2, 32, 3, 76, 36, 49, 0, 224, 175, 134, 224, 174, 154, 224, 175, 141, 8, 2,
-			224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3, 76, 36, 76, 0, 4, 224, 175, 134, 224, 174, 154, 8, 2, 224, 174, 169, 224,
-			174, 191, 224, 174, 175, 224, 174, 190, 3, 76, 36, 76, 109, 0, 224, 175, 134, 224, 174, 154, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174,
-			175, 224, 174, 190, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174,
-			179, 224, 175, 136, 224, 174, 175, 3, 76, 36, 140, 140, 37, 48, 0, 224, 174, 191, 224, 174, 164, 1, 129, 175, 224, 154, 174, 224, 2, 224,
-			175, 141, 224, 174, 176, 224, 174, 190, 3, 76, 37, 47, 0, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 149, 224, 174, 179,
-			3, 76, 37, 48, 0, 4, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 139, 3, 76, 37, 49, 0, 224, 174,
-			191, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 174, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 175, 130, 224, 174, 176,
-			0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 224, 175, 141, 224, 174,
-			174, 224, 175, 130, 224, 174, 154, 8, 190, 174, 224, 149, 174, 224, 3, 76, 65, 123, 76, 149, 0, 4, 1, 32, 141, 175, 224, 154, 174, 224,
-			3, 76, 109, 0, 1, 141, 175, 224, 159, 174, 224, 0, 1, 141, 175, 224, 177, 174, 224, 0, 1, 190, 174, 224, 159, 174, 224, 149, 174, 224,
-			141, 175, 224, 153, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 159, 174, 224, 149, 174, 224, 141, 175, 224,
-			153, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 163, 174, 224, 129, 175, 224, 176, 174, 224, 133, 174, 224,
-			2, 224, 174, 178, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 176, 174, 224, 174, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224,
-			164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 0, 2, 224,
-			174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 28, 17, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 224, 174, 176, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 18, 73,
-			224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169,
-			224, 174, 191, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159,
-			224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 32, 0, 8, 2, 224, 174, 164, 224, 175,
-			129, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 175, 128, 224, 174, 184, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175,
-			129, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8,
-			2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174,
-			176, 224, 175, 129, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 18, 76, 224, 175, 141, 0, 8, 2, 224, 174, 170, 224, 175, 141,
-			224, 174, 170, 224, 174, 190, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 174, 170, 224, 175, 141,
-			224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 0, 8, 2, 224, 174, 176, 224, 175, 141,
-			224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 154, 224, 175, 141,
-			224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 175, 139, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 139,
-			175, 224, 174, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 174, 174, 224, 191, 174, 224, 181, 174, 224, 170,
-			174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 174, 174, 224, 191, 174, 224, 181, 174, 224, 181, 174, 224, 190,
-			174, 224, 170, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 178, 174, 224, 2, 224, 174, 169, 224, 174, 190, 0, 8, 139, 175, 224, 178,
-			174, 224, 169, 174, 224, 128, 175, 224, 174, 174, 224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 139, 175, 224, 178, 174, 224, 178, 174, 224, 128,
-			175, 224, 168, 174, 224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 153, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 8, 141,
-			175, 224, 169, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 176,
-			0, 8, 190, 174, 224, 149, 174, 224, 191, 174, 224, 163, 174, 224, 164, 174, 224, 2, 224, 174, 178, 0, 8, 190, 174, 224, 183, 174, 224, 135,
-			175, 224, 154, 174, 224, 2, 224, 174, 178, 0, 224, 174, 176, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 191, 3, 76, 109, 34, 76, 0,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 8, 2, 224, 174, 164, 224, 174, 191, 3, 76, 109, 47,
-			47, 37, 34, 109, 48, 109, 0, 224, 174, 149, 224, 175, 141, 8, 170, 174, 224, 3, 76, 109, 49, 0, 4, 224, 174, 190, 8, 2, 224, 174,
-			159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 174, 191, 3, 76, 114, 0, 224, 174, 190, 8, 2, 224, 174,
-			169, 224, 174, 178, 0, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 178, 224, 174, 164, 8, 2, 224, 174, 190, 3, 76, 118, 34, 122,
-			55, 109, 47, 0, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 191, 224, 174, 169, 3, 76, 118, 48, 0, 224,
-			174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 128, 18, 69, 3, 76, 118, 49, 48, 0, 224, 174, 190, 224, 174, 149,
-			224, 175, 141, 224, 174, 178, 224, 175, 135, 224, 174, 159, 224, 175, 141, 8, 3, 76, 118, 49, 55, 114, 140, 0, 4, 224, 174, 190, 224, 174,
-			168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 3, 76, 118, 50, 72, 0, 224, 174, 190, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174,
-			164, 8, 2, 224, 174, 191, 224, 174, 178, 0, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 175,
-			224, 174, 169, 3, 76, 118, 65, 48, 0, 8, 141, 175, 224, 158, 174, 224, 190, 174, 224, 176, 174, 224, 3, 76, 149, 0, 4, 1, 133, 174,
-			224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 3, 88, 0, 1, 134, 174, 224, 2, 224, 174,
-			190, 224, 174, 164, 224, 175, 141, 0, 1, 135, 175, 224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 1, 147, 174, 224,
-			2, 224, 175, 139, 224, 174, 169, 0, 8, 130, 175, 224, 175, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174,
-			190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 138, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174,
-			170, 224, 174, 191, 0, 8, 141, 175, 224, 174, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 168, 174, 224, 2, 224, 175,
-			128, 224, 174, 174, 0, 8, 168, 174, 224, 2, 224, 175, 128, 224, 174, 176, 0, 8, 185, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175,
-			135, 0, 8, 185, 174, 224, 2, 224, 175, 128, 224, 174, 174, 0, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 8,
-			190, 174, 224, 170, 174, 224, 131, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 4, 1, 133, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224,
-			174, 170, 224, 175, 136, 3, 88, 109, 0, 1, 141, 175, 224, 170, 174, 224, 131, 174, 224, 133, 174, 224, 2, 224, 174, 178, 0, 8, 2, 224,
-			174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 224, 174, 191, 32, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 164,
-			224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 135, 175, 224, 176, 174, 224, 2, 224, 174, 176, 0, 8, 190, 174, 224, 168,
-			174, 224, 2, 224, 174, 176, 0, 4, 2, 17, 66, 3, 89, 0, 8, 2, 17, 66, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141,
-			224, 174, 164, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 191,
-			224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 174,
-			224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 174, 191,
-			224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 174, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 191,
-			224, 174, 169, 224, 175, 141, 224, 174, 185, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 191, 224, 174, 181, 224, 174, 190,
-			0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 32, 224, 174, 168, 224, 175, 135, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 8,
-			135, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 224, 174, 191, 2,
-			224, 174, 176, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 168, 224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 169, 224, 175, 135,
-			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174,
-			191, 8, 2, 224, 174, 178, 224, 174, 190, 224, 174, 149, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 178, 224, 175, 135, 224, 174, 159,
-			0, 224, 175, 129, 1, 128, 175, 224, 176, 174, 224, 190, 174, 224, 169, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176,
-			174, 224, 133, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 1, 135, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 224, 175, 129, 1, 135,
-			175, 224, 149, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 1, 135, 175, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 181,
-			224, 174, 176, 0, 224, 175, 129, 1, 135, 175, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 190, 174, 224, 178, 174, 224, 191, 174, 224, 149,
-			174, 224, 133, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1, 135, 175, 224, 163, 174, 224, 181, 174, 224, 190, 174, 224, 176,
-			174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1, 135, 175, 224, 163, 174, 224, 181, 174, 224, 190, 174, 224, 176, 174, 224, 135,
-			174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1, 135, 175, 224, 174, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 1, 191,
-			174, 224, 181, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 2, 224, 174, 181, 224, 174, 190, 224, 174, 164, 224, 175, 128, 224, 174, 169, 0,
-			224, 175, 129, 2, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 224, 175, 129, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176,
-			224, 174, 184, 224, 175, 141, 224, 174, 175, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 174, 191, 0, 224, 175,
-			129, 8, 2, 224, 174, 178, 224, 175, 139, 224, 174, 149, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 163,
-			0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 191, 224, 174, 159,
-			224, 175, 141, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 191, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174, 181,
-			224, 175, 128, 224, 174, 159, 0, 224, 175, 129, 8, 128, 175, 224, 169, 174, 224, 154, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175,
-			129, 8, 128, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 149, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 8, 135, 175, 224, 159,
-			174, 224, 141, 175, 224, 163, 174, 224, 149, 174, 224, 178, 174, 224, 156, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 8, 135, 175, 224, 179,
-			174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 8, 136, 174, 224, 0,
-			4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 3, 89, 34,
-			37, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 224, 174, 191, 224,
-			174, 176, 224, 174, 191, 224, 174, 178, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 89, 34, 37, 55, 109, 68, 49,
-			0, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 8, 32, 191, 174, 224, 164, 174, 224, 141, 175, 224, 149, 174, 224, 170, 174, 224,
-			2, 224, 174, 164, 224, 175, 136, 3, 89, 34, 109, 72, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8,
-			2, 224, 175, 136, 224, 174, 175, 224, 175, 129, 224, 174, 159, 224, 174, 169, 3, 89, 34, 109, 72, 72, 0, 224, 174, 191, 224, 174, 176, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 175, 136, 224, 174, 175, 224, 175, 136, 0, 224, 175, 128, 2, 224, 174, 169, 224, 174, 191,
-			224, 174, 181, 224, 174, 190, 224, 174, 154, 3, 89, 34, 112, 0, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224,
-			174, 159, 8, 3, 89, 36, 57, 37, 50, 140, 0, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 169, 224, 175, 141, 224, 174, 159, 8,
-			3, 89, 36, 57, 50, 140, 0, 224, 175, 129, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2,
-			224, 175, 139, 224, 174, 180, 224, 174, 191, 3, 89, 40, 84, 109, 34, 49, 49, 0, 224, 175, 129, 224, 174, 170, 1, 134, 174, 224, 2, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 3, 89, 48, 109, 0, 224, 175, 129, 224, 174, 181, 224, 174,
-			176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 3, 89, 84, 109, 34, 81, 81, 149, 0, 4, 224, 175, 129, 224, 174, 181,
-			224, 174, 190, 224, 174, 176, 224, 174, 154, 224, 174, 191, 1, 133, 174, 224, 2, 224, 174, 175, 3, 89, 84, 118, 34, 109, 89, 0, 224, 175,
-			129, 224, 174, 181, 224, 174, 190, 224, 174, 176, 224, 174, 154, 224, 174, 191, 8, 2, 224, 174, 175, 0, 4, 3, 89, 109, 0, 1, 133, 174,
-			224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 170, 0, 8, 0, 8, 2, 224, 174, 168, 224, 175,
-			141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 170, 0, 8, 141, 175, 224, 159, 174, 224, 185, 174, 224, 2, 224, 174, 169, 0, 8,
-			141, 175, 224, 159, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224,
-			135, 175, 224, 159, 174, 224, 2, 224, 174, 169, 0, 224, 174, 176, 224, 174, 154, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 164, 224, 174,
-			191, 3, 89, 109, 34, 109, 89, 0, 4, 1, 135, 175, 224, 169, 174, 224, 139, 175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 135, 174,
-			224, 2, 224, 174, 191, 224, 174, 175, 3, 93, 0, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 2, 224,
-			175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 170, 224, 174, 149, 0, 8, 135, 175, 224, 178, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224,
-			174, 175, 0, 4, 2, 224, 174, 163, 224, 175, 141, 224, 174, 170, 224, 174, 149, 3, 93, 109, 0, 2, 224, 174, 163, 224, 175, 141, 224, 174,
-			174, 224, 175, 129, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 179, 224, 174, 190, 0, 224, 174, 153, 224,
-			175, 141, 224, 174, 149, 2, 224, 174, 176, 3, 93, 109, 68, 49, 109, 0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 75, 0, 224, 175,
-			129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 3, 75, 109, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 159, 174, 224,
-			2, 224, 174, 176, 3, 76, 109, 0, 4, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 128, 224,
-			174, 169, 3, 88, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174,
-			191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 191, 0, 8,
-			2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 141, 175, 224, 174, 174, 224, 176, 174, 224, 2, 224, 174,
-			190, 224, 174, 169, 0, 8, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 190, 174, 224, 168, 174, 224, 2, 224, 174, 191, 0, 4,
-			8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 224, 174, 191, 3, 88, 109, 0, 8, 149, 174, 224, 2, 224,
-			174, 178, 224, 174, 190, 0, 8, 149, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 8, 149, 174, 224, 2, 224, 174, 178, 224, 175, 136, 0,
-			8, 149, 174, 224, 2, 224, 174, 178, 224, 175, 141, 0, 224, 174, 190, 224, 174, 149, 8, 2, 224, 175, 128, 224, 174, 176, 3, 88, 118, 49,
-			0, 7, 6, 1, 31, 0, 4, 224, 175, 141, 224, 174, 154, 224, 175, 141, 1, 135, 174, 224, 3, 50, 76, 0, 224, 175, 141, 224, 174, 154,
-			224, 175, 141, 8, 191, 174, 224, 181, 174, 224, 0, 4, 224, 175, 141, 224, 174, 154, 8, 170, 174, 224, 2, 224, 174, 176, 3, 50, 76, 109,
-			0, 224, 175, 141, 224, 174, 154, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 169, 0, 2, 17, 66, 3, 67, 0, 3, 67, 109, 0, 7,
-			6, 1, 32, 0, 4, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224, 178, 174, 224, 138, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174,
-			190, 224, 174, 178, 3, 23, 140, 0, 224, 175, 141, 1, 141, 175, 224, 184, 174, 224, 2, 224, 174, 176, 0, 4, 224, 175, 141, 224, 174, 154,
-			224, 175, 129, 1, 178, 174, 224, 2, 224, 174, 174, 224, 174, 163, 3, 49, 93, 0, 224, 175, 141, 224, 174, 154, 224, 175, 129, 1, 178, 174,
-			224, 2, 224, 174, 174, 224, 174, 191, 0, 4, 1, 32, 141, 175, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174,
-			184, 3, 140, 0, 1, 129, 175, 224, 179, 174, 224, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 1, 141, 175, 224, 163,
-			174, 224, 135, 174, 224, 2, 224, 175, 134, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190, 0, 1, 141, 175, 224, 178,
-			174, 224, 137, 174, 224, 2, 224, 174, 190, 0, 1, 141, 175, 224, 183, 174, 224, 2, 17, 66, 0, 1, 141, 175, 224, 184, 174, 224, 2, 17,
-			66, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174,
-			154, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 156, 224, 174,
-			190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174,
-			176, 224, 175, 141, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 174,
-			191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 0, 8,
-			2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174,
-			131, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175,
-			141, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174,
-			181, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174,
-			181, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 183, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 175, 128, 0, 8,
-			2, 224, 175, 129, 224, 174, 169, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
-			169, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 129, 224, 174, 169, 224, 175, 128, 18, 69, 0, 8, 2, 224, 175, 129, 224, 174, 169,
-			224, 175, 128, 224, 174, 183, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 130, 32, 224, 174, 181, 224, 175, 128, 224, 174, 178, 0, 8,
-			2, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 184, 224, 174, 190, 224, 174, 184, 0, 8,
-			2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 184, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 154, 224, 175, 139, 0, 8,
-			2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174,
-			159, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174,
-			169, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175,
-			134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174,
-			178, 224, 174, 191, 224, 174, 131, 224, 174, 170, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174,
-			181, 224, 174, 191, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 32, 224, 174, 133, 224, 174, 181, 224,
-			175, 128, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 170, 0, 8, 2, 224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0,
-			8, 2, 224, 175, 136, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169,
-			0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 224, 175, 139, 0, 8, 2, 224, 175, 139,
-			224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224, 175, 141, 224, 174, 176,
-			224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 32,
-			141, 175, 224, 169, 174, 224, 190, 174, 224, 178, 174, 224, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174,
-			184, 0, 8, 32, 141, 175, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 135, 175, 224, 159, 174, 224, 2, 224, 175, 134, 224, 174, 169, 224,
-			175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 184, 0, 8, 130, 175, 224, 175, 174, 224, 141, 175, 224, 159, 174, 224, 2, 224, 174, 191, 0,
-			8, 130, 175, 224, 175, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 191, 0, 8, 140, 175, 224, 149, 174, 224, 2, 224, 174, 191, 224,
-			174, 178, 224, 175, 141, 224, 174, 175, 0, 8, 141, 175, 224, 163, 174, 224, 135, 175, 224, 149, 174, 224, 2, 224, 175, 128, 224, 174, 169, 0,
-			8, 141, 175, 224, 163, 174, 224, 135, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174,
-			224, 2, 224, 175, 128, 224, 174, 169, 0, 8, 141, 175, 224, 170, 174, 224, 131, 174, 224, 135, 175, 224, 154, 174, 224, 2, 224, 174, 191, 0,
-			8, 141, 175, 224, 176, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 139, 0, 8, 141, 175, 224, 176, 174,
-			224, 190, 174, 224, 149, 174, 224, 2, 224, 175, 130, 224, 174, 169, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224,
-			174, 191, 224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 175, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175,
-			224, 178, 174, 224, 181, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 174, 174,
-			224, 2, 224, 174, 190, 0, 8, 149, 174, 224, 134, 175, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 181, 0, 8, 191, 174, 224, 156, 174,
-			224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 135, 0, 8, 191, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 175, 139, 224,
-			174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 191, 174, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 141, 175, 224, 149, 174, 224, 2, 224,
-			174, 191, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224,
-			174, 159, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 178, 0, 224, 174, 191,
-			8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 154, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 169, 0,
-			224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 183, 224,
-			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 153, 224,
-			175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 170, 224, 174, 191, 224, 174, 179, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224,
-			174, 154, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 178, 224, 175, 135, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 175, 135, 224,
-			174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224,
-			174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 141, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 181, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 134, 224, 174, 178, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224,
-			175, 141, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 163, 224,
-			175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224,
-			174, 176, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 32, 224, 174, 154, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 0, 224, 174,
-			191, 8, 2, 224, 174, 176, 224, 175, 136, 32, 224, 174, 154, 224, 175, 134, 224, 174, 175, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 175, 136, 32, 224, 174, 170, 224, 174, 163, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 175, 224,
-			174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 141, 175, 224, 163, 174,
-			224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 175, 141,
-			1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 190, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 177, 224, 174, 190, 0, 224, 175, 141,
-			1, 134, 175, 224, 168, 174, 224, 141, 175, 224, 176, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 174, 224, 0, 224, 175, 141, 1,
-			135, 174, 224, 2, 224, 174, 178, 224, 174, 176, 0, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 21, 0, 224,
-			175, 141, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224,
-			175, 141, 1, 141, 175, 224, 163, 174, 224, 142, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224,
-			149, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 154, 224, 174,
-			169, 0, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174,
-			170, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 170, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 8,
-			2, 224, 174, 176, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 224,
-			175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174,
-			176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 0, 224,
-			175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174,
-			184, 224, 175, 141, 224, 174, 174, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174,
-			176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 178, 224, 175, 135, 0, 224, 175, 141, 8, 2, 224, 174,
-			176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 175, 135, 224, 174, 178, 0, 224, 175, 141, 8,
-			2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
-			174, 224, 175, 136, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174,
-			176, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 178, 0, 224,
-			175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 134, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 170, 224, 175, 130, 224, 174, 156, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
+			170, 224, 175, 139, 224, 174, 164, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175,
+			134, 224, 174, 175, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 175, 224, 175,
+			139, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 174, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
+			181, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175, 141, 224, 174,
+			154, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 190, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 176, 224, 175, 129, 224, 174, 179, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174,
+			175, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174,
+			191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 129, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 129, 224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 129, 224, 174, 181, 224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175,
+			136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 175, 139, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175,
+			129, 224, 174, 181, 224, 175, 139, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 174, 190, 224, 174, 170, 0, 8, 2, 224, 175,
+			129, 224, 174, 178, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 135, 224, 174, 170, 224, 174, 190, 0, 8,
+			2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 174, 224, 175, 139, 18, 71, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 181,
+			224, 174, 185, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 184, 224, 175, 141,
+			224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 185, 0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 174, 191, 224, 174, 179,
+			0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 175, 129, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 159, 224, 174, 178, 224, 175, 130,
+			224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2,
+			224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 156,
+			0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 164, 224, 175, 141,
+			0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175, 134,
+			224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 163, 224, 175, 141,
+			224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 177, 224, 175, 141,
+			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 159,
+			224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 168, 224, 175, 141, 224, 174, 164,
+			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 135,
+			224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 175, 129, 224, 174, 149,
+			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129,
+			224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 224, 174, 149, 224, 175, 141,
+			0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 135,
+			224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 170, 224, 175, 141,
+			224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 175, 135,
+			224, 174, 174, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 184, 224, 174, 191,
+			0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 191, 0, 8, 2,
+			224, 175, 135, 224, 174, 184, 224, 175, 141, 32, 18, 91, 0, 8, 2, 224, 175, 136, 224, 174, 159, 0, 8, 2, 224, 175, 136, 224, 174, 169,
+			224, 174, 149, 0, 8, 2, 224, 175, 138, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174, 163, 224, 174, 174,
+			0, 8, 2, 224, 175, 138, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 175, 129, 224, 174, 178,
+			0, 8, 2, 224, 175, 139, 224, 174, 154, 224, 174, 190, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 154, 224, 175, 129,
+			224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129,
+			32, 224, 174, 181, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174,
+			163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 190, 224, 174, 181, 224, 174, 176, 224, 174, 191, 0, 8,
+			2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
+			191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174,
+			176, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174,
+			164, 224, 175, 141, 224, 174, 176, 224, 175, 135, 224, 174, 156, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 168, 224, 175, 141, 224, 174,
+			164, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174,
+			191, 224, 174, 154, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 175,
+			141, 224, 174, 154, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174,
+			191, 224, 174, 168, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174,
+			170, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174,
+			174, 224, 174, 164, 224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 174,
+			190, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174,
+			174, 224, 175, 129, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 174, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
+			191, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 175, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 176, 32, 0, 8, 2, 224,
+			175, 139, 224, 174, 176, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 154, 224, 175, 141, 32, 224, 174, 154, 224, 174, 191,
+			224, 174, 176, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 154, 224, 175, 141,
+			32, 224, 174, 154, 224, 175, 134, 224, 174, 175, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 164, 224, 175, 141, 32, 224,
+			174, 164, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 181, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
+			175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 32, 18, 85, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 174, 177, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 178, 224,
+			175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 139, 224, 174, 176, 0, 8, 2, 224,
+			175, 139, 224, 174, 176, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
+			174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191, 224,
+			174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 224,
+			174, 149, 224, 175, 138, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 224,
+			174, 159, 224, 175, 141, 32, 18, 95, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 178, 0,
+			8, 2, 224, 175, 139, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 181, 224, 174, 191, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 183, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224,
+			174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 159, 0, 8, 2, 224, 175, 140, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224,
+			175, 140, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 140, 224, 174, 176, 224, 174, 181, 0, 8, 2, 224,
+			175, 140, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 179, 224,
+			175, 136, 0, 8, 129, 175, 224, 154, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 176, 0, 8, 129, 175, 224, 176, 174,
+			224, 134, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 136, 175, 224, 178, 174, 224, 164, 174,
+			224, 2, 224, 175, 128, 224, 174, 180, 224, 175, 141, 0, 8, 141, 175, 224, 149, 174, 224, 164, 174, 224, 174, 174, 224, 141, 175, 224, 169, 174,
+			224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 0, 8, 141, 175, 224, 153, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224,
+			174, 178, 224, 174, 191, 0, 8, 141, 175, 224, 153, 174, 224, 190, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 175, 174, 224, 170, 174,
+			224, 2, 224, 175, 138, 224, 174, 179, 224, 175, 141, 0, 8, 141, 175, 224, 177, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224,
+			175, 136, 0, 8, 141, 175, 224, 177, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
+			174, 178, 0, 8, 141, 175, 224, 177, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 0,
+			8, 141, 175, 224, 177, 174, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 8, 141, 175,
+			224, 177, 174, 224, 154, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 8, 141, 175, 224, 177, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224,
+			175, 129, 224, 174, 163, 0, 8, 170, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 8, 174, 174, 224, 141, 175, 224, 176, 174,
+			224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 1, 141, 175, 224, 153, 174, 224, 135, 174,
+			224, 2, 224, 174, 178, 224, 175, 128, 224, 174, 183, 224, 175, 141, 0, 224, 174, 191, 1, 141, 175, 224, 177, 174, 224, 138, 175, 224, 170, 174,
+			224, 2, 224, 174, 176, 224, 174, 163, 0, 224, 174, 191, 2, 224, 174, 176, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224,
+			174, 191, 8, 2, 224, 174, 176, 224, 174, 185, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8,
+			2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 139, 224, 174,
+			176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 0, 224, 174, 191, 8,
+			2, 224, 174, 176, 224, 175, 128, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 169, 224, 175, 141, 224, 174,
+			178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 184, 0, 224,
+			174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175,
+			136, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 163, 224, 175,
+			141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224,
+			174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 174, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174,
+			184, 224, 175, 141, 32, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 130, 224, 174, 170, 224, 175, 141, 0, 224, 175, 129, 8, 2, 224,
+			174, 178, 224, 175, 139, 224, 174, 170, 224, 174, 178, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 224, 175, 139, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224,
+			174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141,
+			8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 8, 2, 224,
+			174, 176, 224, 175, 128, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 130, 224, 174, 170, 0, 224, 175, 141, 8, 2, 224,
+			174, 176, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 8, 2, 224, 174, 178, 224, 175, 135, 224, 174, 154, 224,
+			174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 174, 224, 174, 176, 0, 224, 175, 141,
+			8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 32, 0, 224, 175, 141, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178,
+			224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 175, 141, 8, 142, 174, 224, 2, 224, 174, 184, 224, 174, 190, 224, 174, 174, 0, 224, 174,
+			191, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 136, 224, 174, 159, 8, 3, 81, 34, 118, 50, 134, 139, 148, 0, 4, 224, 174, 191,
+			224, 174, 176, 224, 174, 190, 224, 174, 131, 224, 174, 170, 224, 175, 136, 224, 174, 159, 8, 3, 81, 34, 118, 83, 134, 139, 148, 0, 224, 174,
+			191, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 136, 224, 174, 159, 8, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 174, 149, 224, 175, 141, 224, 174, 183, 8, 2, 224, 174, 163,
+			3, 81, 37, 34, 37, 48, 48, 34, 109, 72, 109, 49, 93, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 174, 159, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 163, 0, 224, 174, 191,
+			224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 159, 3, 81, 37, 83, 0, 4, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8,
+			2, 224, 174, 190, 224, 174, 164, 3, 81, 40, 34, 40, 48, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8, 2, 224, 175,
+			128, 224, 174, 159, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8, 2, 224, 175, 130, 0, 224, 175, 129, 224, 174, 176, 224,
+			175, 129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174, 164, 3, 81,
+			40, 34, 40, 48, 48, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 170, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 224, 174, 169, 224, 174, 191, 3, 81, 40, 34, 40, 48, 109, 0, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 175,
+			129, 224, 174, 149, 8, 2, 224, 174, 191, 3, 81, 40, 34, 40, 65, 40, 49, 0, 224, 175, 129, 224, 174, 170, 224, 175, 141, 8, 2, 224,
+			174, 164, 3, 81, 40, 48, 0, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164,
+			3, 81, 40, 55, 49, 109, 0, 224, 175, 129, 224, 174, 163, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			224, 174, 191, 224, 174, 176, 3, 81, 40, 66, 109, 76, 0, 4, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 174, 178, 3, 81, 40, 66, 139, 148, 0, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8,
+			2, 224, 175, 130, 224, 174, 176, 0, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 8, 2, 224, 174, 159, 224, 174, 191, 3, 81, 40, 66, 140, 118, 50, 47, 109, 0, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224,
+			174, 184, 224, 175, 141, 224, 174, 149, 8, 2, 224, 175, 139, 3, 81, 62, 118, 89, 81, 0, 4, 224, 175, 141, 224, 174, 149, 1, 18, 68,
+			2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 3, 81, 81, 0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175, 129, 224, 174, 163,
+			0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 175, 139, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149,
+			1, 18, 68, 2, 224, 175, 139, 224, 174, 183, 0, 224, 175, 141, 224, 174, 149, 1, 129, 175, 224, 163, 174, 224, 133, 174, 224, 2, 224, 175,
+			129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 1, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174,
+			191, 0, 224, 175, 141, 224, 174, 149, 1, 134, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1,
+			139, 175, 224, 175, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 1, 139, 175, 224, 176, 174, 224,
+			134, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224,
+			2, 224, 174, 190, 224, 174, 178, 224, 175, 139, 224, 174, 154, 224, 174, 168, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1, 169, 174, 224,
+			156, 174, 224, 2, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 178, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224,
+			156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224,
+			170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224,
+			176, 174, 224, 136, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 1, 190, 174, 224, 181, 174, 224,
+			141, 175, 224, 175, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 8,
+			129, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 224, 175, 141, 224, 174, 149, 8, 135, 175, 224, 178, 174, 224, 2, 224, 174,
+			191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 8, 136, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 0, 224, 175, 141, 224, 174, 149, 8, 139, 175, 224, 175, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 149, 8,
+			141, 175, 224, 176, 174, 224, 128, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 175, 139, 224, 174, 154, 224, 174, 169, 224, 175,
+			136, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 224,
+			175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 175, 129, 224, 174, 163, 0, 224, 175, 141, 224,
+			174, 149, 8, 169, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 0, 224, 175, 141, 224, 174, 149, 8, 178, 174, 224,
+			2, 224, 174, 191, 224, 174, 169, 0, 224, 175, 141, 224, 174, 149, 8, 178, 174, 224, 2, 224, 175, 135, 224, 174, 156, 0, 224, 175, 141, 224,
+			174, 149, 8, 190, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224,
+			174, 149, 8, 190, 174, 224, 164, 174, 224, 191, 174, 224, 181, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224,
+			175, 141, 224, 174, 149, 8, 190, 174, 224, 181, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224,
+			175, 141, 224, 174, 149, 8, 191, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 190, 174, 224, 170, 174, 224, 141, 175, 224, 170, 174, 224,
+			129, 175, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224,
+			159, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8,
+			191, 174, 224, 178, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224,
+			174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224, 174, 149, 8,
+			191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224,
+			2, 224, 174, 191, 224, 174, 169, 224, 174, 174, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 181, 174, 224, 2, 224,
+			174, 191, 224, 174, 176, 224, 174, 149, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 18, 68, 2, 224, 174, 176, 224, 174, 149, 0, 224,
+			175, 141, 224, 174, 149, 224, 174, 191, 1, 18, 68, 2, 224, 174, 176, 224, 174, 185, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 129,
+			175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 129, 175, 224, 168,
+			174, 224, 133, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2,
+			224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 1, 133, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175,
+			141, 224, 174, 149, 224, 174, 191, 1, 135, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 1, 190, 174, 224, 175, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 149,
+			0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 170, 174, 224, 141, 175, 224, 170, 174, 224, 141, 175, 224, 176, 174, 224, 149, 174, 224, 2,
+			224, 174, 176, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 178, 174, 224, 130, 175, 224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175,
+			141, 224, 174, 149, 224, 174, 191, 8, 179, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 224, 175,
+			141, 224, 174, 149, 224, 174, 191, 8, 181, 174, 224, 168, 174, 224, 2, 224, 174, 176, 18, 71, 0, 224, 175, 141, 224, 174, 149, 224, 174, 191,
+			8, 190, 174, 224, 175, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 185, 0,
+			224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 191, 174, 224, 178, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224,
+			174, 174, 0, 4, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 153, 224, 175, 141, 3,
+			81, 81, 109, 0, 224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164, 224, 175, 141, 0,
+			224, 175, 141, 224, 174, 149, 1, 18, 68, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 174, 0, 224, 175, 141, 224, 174, 149, 1,
+			141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 224, 174, 149, 8, 129, 175, 224,
+			180, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 169, 0, 224, 175, 141, 224, 174, 149, 8, 136, 175, 224, 163, 174, 224,
+			129, 175, 224, 164, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224,
+			128, 175, 224, 164, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224,
+			128, 175, 224, 164, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 224, 175, 141, 224, 174, 149, 8, 191, 174, 224, 169, 174, 224,
+			164, 174, 224, 2, 224, 174, 181, 224, 174, 169, 0, 4, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 129, 175, 224, 164, 174,
+			224, 3, 81, 81, 148, 0, 224, 175, 141, 224, 174, 149, 1, 141, 175, 224, 176, 174, 224, 130, 175, 224, 174, 174, 224, 0, 224, 175, 141, 224,
+			174, 149, 1, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 138,
+			175, 224, 154, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 141, 175, 224, 176, 174, 224, 181, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8,
+			141, 175, 224, 176, 174, 224, 181, 174, 224, 141, 175, 224, 184, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 156, 174, 224, 0, 4, 3, 81,
+			109, 0, 2, 224, 174, 156, 0, 8, 2, 28, 17, 0, 8, 2, 224, 174, 131, 224, 174, 170, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224,
+			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224,
+			174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224,
+			174, 149, 224, 175, 129, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 178, 224,
+			174, 191, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224,
+			175, 139, 224, 174, 164, 0, 8, 2, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 190, 0, 8, 2, 224, 174, 159, 224, 174, 149, 224,
+			174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 159, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 159, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 159, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 176, 224,
+			175, 136, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 175, 139, 224,
+			174, 164, 224, 175, 141, 224, 174, 149, 224, 174, 156, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 224,
+			174, 191, 0, 8, 2, 224, 174, 163, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 128, 224, 174, 176, 0,
+			8, 2, 224, 174, 163, 224, 175, 135, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224,
+			174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 164, 224, 174, 190, 224, 174, 175, 224,
+			175, 129, 224, 174, 164, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 174, 178, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224,
+			174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224,
+			174, 164, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224,
+			174, 154, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 191, 224,
+			174, 178, 224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 174, 149, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224,
+			174, 169, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 169, 224, 174, 156, 224, 175, 139, 224, 174, 176, 0, 8, 2, 224,
+			174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 169, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224,
+			174, 169, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224,
+			174, 149, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 175, 134, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 176, 0,
+			8, 2, 224, 174, 174, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 174, 174, 224, 174, 181, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 177, 0, 8, 2, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 128, 224, 174, 176,
+			0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174,
+			224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 175,
+			224, 174, 190, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 175, 224, 175, 136,
+			0, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 176,
+			224, 175, 141, 224, 174, 156, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 181,
+			0, 8, 2, 224, 174, 178, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191,
+			224, 174, 178, 18, 73, 224, 174, 175, 224, 175, 139, 0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 154, 224, 174, 191, 224, 174, 175, 0,
+			8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 178, 0, 8, 2, 224, 174, 178, 224,
+			175, 128, 224, 174, 183, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 131, 224, 174, 170, 0, 8, 2, 224,
+			174, 178, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224,
+			174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224,
+			174, 181, 224, 174, 163, 0, 8, 2, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224,
+			174, 176, 0, 8, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224,
+			175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224,
+			174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224,
+			174, 179, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 176, 0, 8, 141, 175, 224, 149, 174, 224, 136, 175, 224, 178, 174, 224, 164, 174,
+			224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 159, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224,
+			174, 190, 224, 174, 176, 0, 8, 141, 175, 224, 177, 174, 224, 168, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 224, 174, 170, 224, 175, 141,
+			8, 2, 18, 69, 224, 174, 190, 3, 81, 109, 48, 0, 224, 174, 170, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 3, 81, 109, 48, 76, 0, 224, 174, 169, 224, 174, 149, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174,
+			164, 3, 81, 109, 50, 109, 49, 109, 0, 224, 174, 178, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 190, 3, 81, 109, 55, 47, 0, 224,
+			174, 170, 8, 2, 224, 174, 190, 224, 174, 176, 3, 81, 109, 83, 0, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 134,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 109, 84, 109, 34, 65, 36, 66, 139, 148, 0, 224, 175, 135, 224, 174, 176, 224, 174,
+			163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 114, 34, 109, 66, 139, 148, 0, 224, 175, 135, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174,
+			181, 224, 174, 190, 224, 174, 159, 3, 81, 114, 49, 0, 224, 175, 135, 224, 174, 178, 224, 174, 149, 8, 2, 224, 175, 141, 224, 174, 154, 224,
+			174, 191, 3, 81, 114, 55, 109, 49, 0, 224, 175, 135, 224, 174, 159, 224, 175, 141, 8, 2, 224, 174, 178, 3, 81, 114, 139, 0, 224, 174,
+			190, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 81, 118, 34, 109, 66, 139, 148, 0, 224, 174, 190, 224, 174, 178, 224,
+			175, 141, 224, 174, 170, 224, 175, 141, 8, 3, 81, 118, 55, 83, 0, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 135,
+			224, 174, 149, 8, 2, 224, 174, 176, 3, 81, 118, 66, 140, 114, 49, 109, 0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 159, 224,
+			174, 190, 224, 174, 149, 224, 175, 141, 8, 3, 81, 118, 68, 139, 118, 49, 0, 4, 224, 174, 190, 224, 174, 154, 8, 2, 224, 174, 190, 224,
+			174, 181, 3, 81, 118, 88, 0, 224, 174, 190, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 170, 224, 174, 190,
+			224, 174, 164, 0, 224, 174, 190, 224, 174, 156, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 170, 224, 174, 190, 224, 174, 164,
+			0, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141,
+			224, 174, 164, 3, 81, 119, 34, 49, 0, 4, 224, 175, 139, 224, 174, 170, 2, 224, 174, 190, 224, 174, 178, 3, 81, 119, 48, 0, 224, 175,
+			139, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 190, 12, 0, 224, 175, 139, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174,
+			178, 3, 81, 119, 49, 0, 224, 175, 139, 224, 174, 149, 8, 2, 224, 174, 176, 3, 81, 119, 49, 109, 0, 224, 175, 139, 224, 174, 174, 224,
+			174, 164, 224, 175, 135, 224, 174, 154, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 176, 3, 81, 119, 65, 109, 72, 114, 89, 0, 224, 175,
+			139, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 3, 81, 119, 84, 109, 34, 72, 72, 148, 0,
+			224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 154, 8, 2, 224, 175, 135, 3, 81, 119, 140, 89, 0, 224, 175, 130, 224, 174, 176, 224,
+			175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 81, 123, 34, 49, 0, 4, 224, 175, 134, 224, 174, 179, 8, 2, 224, 174, 164, 224, 174,
+			174, 3, 81, 135, 0, 224, 175, 134, 224, 174, 179, 8, 2, 224, 174, 176, 224, 174, 181, 0, 224, 175, 134, 224, 174, 179, 8, 2, 224, 174,
+			176, 224, 174, 191, 0, 224, 175, 140, 224, 174, 164, 8, 3, 81, 135, 47, 148, 0, 4, 224, 175, 141, 224, 174, 159, 1, 142, 174, 224, 2,
+			224, 175, 135, 3, 81, 140, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 32, 0, 224, 175, 141, 224,
+			174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 159, 8,
+			134, 175, 224, 185, 174, 224, 2, 224, 175, 135, 224, 174, 175, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 185, 174, 224, 2, 224, 175,
+			135, 224, 174, 181, 0, 4, 1, 139, 175, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 3, 108, 0, 1, 174, 174, 224,
+			2, 224, 174, 190, 0, 1, 174, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 175, 129, 224, 174, 181, 224, 174, 176, 0, 1, 174, 174, 224,
+			2, 224, 175, 135, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 174, 174, 224, 2, 224, 175, 135, 224, 174,
+			183, 224, 175, 141, 224, 174, 181, 0, 1, 174, 174, 224, 2, 224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 176, 0, 1,
+			190, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174,
+			154, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 8, 129, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174,
+			164, 0, 8, 174, 174, 224, 2, 224, 174, 191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 174, 174, 224, 2, 224, 174, 191, 224, 174,
+			174, 224, 175, 136, 0, 8, 190, 174, 224, 176, 174, 224, 2, 224, 175, 129, 224, 174, 178, 0, 8, 190, 174, 224, 178, 174, 224, 2, 224, 175,
+			130, 224, 174, 176, 0, 1, 139, 175, 224, 174, 174, 224, 2, 224, 174, 169, 3, 108, 109, 0, 224, 174, 190, 224, 174, 170, 1, 178, 174, 224,
+			133, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 3, 108, 118, 71, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3,
+			68, 109, 0, 7, 6, 1, 27, 0, 1, 32, 141, 175, 224, 154, 174, 224, 2, 12, 12, 3, 12, 148, 0, 1, 141, 175, 224, 158, 174, 224,
+			2, 17, 66, 3, 75, 0, 1, 141, 175, 224, 158, 174, 224, 3, 75, 109, 0, 4, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 32,
+			3, 76, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 1, 134, 174,
+			224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 175, 141, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 159, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 0, 1, 134, 174, 224, 2, 224,
+			174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175, 32, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175,
+			224, 174, 176, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 176, 0, 1, 134,
+			174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 175, 0, 1, 141, 175, 224, 159, 174, 224, 2, 17, 66, 0, 1, 141, 175,
+			224, 177, 174, 224, 2, 17, 66, 0, 1, 170, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 170, 174, 224, 137, 174, 224,
+			2, 224, 174, 190, 224, 174, 176, 0, 1, 170, 174, 224, 139, 175, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174,
+			176, 0, 1, 170, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 178, 174, 224, 190, 174, 224, 170, 174, 224,
+			139, 175, 224, 149, 174, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 1, 190, 174, 224,
+			156, 174, 224, 129, 175, 224, 169, 174, 224, 190, 174, 224, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174,
+			191, 0, 1, 190, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174,
+			191, 0, 1, 190, 174, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 190, 174, 224, 174, 174, 224, 169, 174, 224,
+			141, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 1, 190, 174, 224, 176, 174, 224, 149, 174, 224,
+			141, 175, 224, 153, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 1,
+			190, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 190, 174, 224, 181, 174, 224, 149, 174, 224, 190, 174, 224,
+			176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 1, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 2, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2,
+			17, 66, 28, 17, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			191, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174,
+			190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175,
+			136, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174,
+			159, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174,
+			190, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174,
+			190, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174,
+			181, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 156, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174,
+			156, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174,
+			176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175,
+			141, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174,
+			159, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 179, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
+			175, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174,
+			149, 224, 175, 139, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 169, 224, 175, 129, 0, 8,
+			2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174,
+			191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 149, 224, 174, 190, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174,
+			170, 224, 174, 190, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 0, 8,
+			2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174,
+			170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174,
+			169, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 0, 8,
+			2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 181, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 181, 224, 174,
+			164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174,
+			169, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174,
+			191, 224, 174, 174, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 176, 224, 175, 141, 224, 174,
+			184, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174,
+			177, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 177, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174,
+			179, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 175, 128, 224, 174, 169, 32, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224,
+			174, 169, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 184, 224,
+			175, 129, 0, 8, 2, 224, 175, 128, 224, 174, 184, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 184, 224, 175, 141, 32, 0, 8, 2,
+			224, 175, 129, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 141,
+			224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 190,
+			224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 175, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 176,
+			224, 174, 163, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2,
+			224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 18, 69, 0, 8, 2, 224, 175, 134, 224, 174, 153, 224, 175, 141, 224,
+			174, 149, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 168, 224,
+			174, 190, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224,
+			174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0,
+			8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224,
+			175, 141, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 175, 139, 224, 174, 170, 224, 174, 191, 224,
+			174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224,
+			175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 32, 18, 82, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224,
+			174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224,
+			175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 180, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141, 32, 18, 84, 0,
+			8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 0,
+			8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 32, 18, 83, 0,
+			8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224,
+			175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224,
+			174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224,
+			175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224,
+			174, 163, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
+			175, 136, 224, 174, 175, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 174, 190, 0,
+			8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 0,
+			8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 174, 224, 175, 135, 32, 0, 8, 2, 224, 175, 134, 224, 174, 178,
+			224, 175, 141, 224, 174, 178, 224, 175, 136, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 184, 224, 175, 141, 0, 8, 2,
+			224, 175, 135, 224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154,
+			224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 158, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141,
+			224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 224, 174, 156,
+			224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 175, 141, 224, 174, 170,
+			224, 174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 175, 141, 224, 174, 149,
+			224, 174, 179, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 176,
+			224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 158, 224, 175, 141, 0, 8, 2,
+			224, 175, 135, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 184, 224, 175, 141, 32, 0, 8,
+			2, 224, 175, 136, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174,
+			190, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 175, 128, 224, 174,
+			184, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175,
+			141, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 181, 224, 175, 129, 0, 8, 2, 224, 175, 139, 224, 174, 181, 224, 175, 134, 0, 8,
+			2, 224, 175, 140, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175,
+			140, 224, 174, 164, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8,
+			2, 224, 175, 140, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175, 140, 224, 174,
+			170, 224, 175, 135, 0, 8, 2, 224, 175, 140, 224, 174, 185, 224, 174, 190, 224, 174, 169, 0, 8, 18, 71, 176, 174, 224, 191, 174, 224, 149,
+			174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 128, 175, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 156,
+			0, 8, 129, 175, 224, 154, 174, 224, 2, 224, 175, 128, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 141,
+			175, 224, 184, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 156, 0, 8, 154, 174, 224, 2,
+			224, 174, 191, 224, 174, 169, 0, 8, 170, 174, 224, 129, 175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191,
+			174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 170, 174, 224, 129, 175, 224, 181, 174, 224, 191, 174, 224, 176, 174, 224, 191,
+			174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 174, 174, 224, 141, 175, 224, 174, 174, 224, 176, 174, 224, 191, 174, 224, 170,
+			174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 175, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2,
+			224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 178, 174, 224, 164, 174, 224, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191,
+			0, 8, 178, 174, 224, 190, 174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190,
+			174, 224, 149, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 149, 174, 224, 141,
+			175, 224, 153, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 149, 174, 224, 191, 174, 224, 154,
+			174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 159, 174, 224, 141, 175, 224, 159,
+			174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 163, 174, 224, 129, 175, 224, 149, 174, 224, 2,
+			224, 174, 190, 224, 174, 176, 0, 8, 190, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191,
+			0, 8, 190, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 191, 174, 224, 181, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 190,
+			224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 164, 174, 224, 176, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191,
+			0, 8, 190, 174, 224, 174, 174, 224, 163, 174, 224, 141, 175, 224, 183, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 149, 174, 224, 2,
+			224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 174, 174, 224, 176, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176,
+			224, 174, 191, 0, 8, 190, 174, 224, 176, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176,
+			224, 174, 191, 0, 8, 190, 174, 224, 176, 174, 224, 149, 174, 224, 141, 175, 224, 184, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 174, 190,
+			224, 174, 176, 224, 174, 191, 0, 8, 190, 174, 224, 181, 174, 224, 141, 175, 224, 164, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 176,
+			224, 174, 191, 0, 8, 190, 174, 224, 181, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 191,
+			174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 191,
+			174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 191, 174, 224, 181,
+			174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190,
+			224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 2, 32, 24, 0, 224, 175, 141, 2, 32, 224, 174, 154, 0, 224, 175, 141, 8, 168, 174, 224,
+			2, 224, 174, 169, 224, 175, 129, 0, 224, 175, 141, 8, 191, 174, 224, 176, 174, 224, 2, 224, 174, 174, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 0, 224, 175, 141, 224, 174, 154, 2, 17, 66, 3, 76, 12, 0, 224, 175, 141, 224, 174, 154, 3, 76, 12, 109, 0, 224, 175, 134, 224,
+			174, 149, 224, 175, 141, 8, 2, 32, 3, 76, 36, 49, 0, 224, 175, 134, 224, 174, 154, 224, 175, 141, 8, 2, 224, 174, 169, 224, 174, 191,
+			224, 174, 175, 224, 174, 190, 3, 76, 36, 76, 0, 4, 224, 175, 134, 224, 174, 154, 8, 2, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224,
+			174, 190, 3, 76, 36, 76, 109, 0, 224, 175, 134, 224, 174, 154, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 175, 0, 224, 175, 134, 224,
+			174, 154, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 175, 224, 174, 190, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224,
+			174, 191, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 3, 76, 36, 139, 139, 37, 48, 0, 224, 174, 191,
+			224, 174, 164, 1, 129, 175, 224, 154, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 174, 190, 3, 76, 37, 47, 0, 224, 174, 191, 224, 174,
+			170, 224, 175, 141, 8, 2, 224, 174, 149, 224, 174, 179, 3, 76, 37, 48, 0, 4, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 190, 224,
+			174, 149, 224, 175, 139, 3, 76, 37, 49, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 174, 224, 174, 153, 224, 175, 141,
+			224, 174, 149, 224, 174, 179, 224, 175, 130, 224, 174, 176, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 178, 224, 175, 134,
+			224, 174, 159, 224, 175, 141, 0, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 169, 224, 175, 141, 224, 174, 154, 8, 2,
+			224, 174, 191, 3, 76, 37, 65, 48, 109, 50, 88, 0, 224, 175, 141, 224, 174, 174, 224, 175, 130, 224, 174, 154, 8, 190, 174, 224, 149, 174,
+			224, 3, 76, 65, 123, 76, 148, 0, 4, 1, 141, 175, 224, 159, 174, 224, 3, 76, 109, 0, 1, 141, 175, 224, 177, 174, 224, 0, 1, 164,
+			174, 224, 190, 174, 224, 156, 174, 224, 133, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129,
+			0, 1, 190, 174, 224, 159, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 1, 190,
+			174, 224, 159, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 163,
+			174, 224, 129, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 176, 174, 224, 174,
+			174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 178, 0, 1, 190, 174, 224, 174,
+			174, 224, 135, 174, 224, 2, 224, 174, 178, 0, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 0, 2, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 28, 17, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176,
+			224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 149, 224, 175, 141,
+			224, 174, 149, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 18, 73, 224, 174, 184, 224,
+			175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0,
+			8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224,
+			174, 179, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 32, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159,
+			224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174, 164,
+			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 128, 224, 174, 184,
+			224, 175, 141, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 164,
+			224, 175, 141, 224, 174, 176, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 129,
+			0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 18, 76, 224, 175, 141, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 0, 8, 2, 224,
+			174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224,
+			175, 141, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 154, 224,
+			175, 141, 224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 175, 139, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0,
+			8, 139, 175, 224, 174, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 174, 174, 224, 191, 174, 224, 181, 174,
+			224, 170, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 174, 174, 224, 191, 174, 224, 181, 174, 224, 181, 174,
+			224, 190, 174, 224, 170, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 178, 174, 224, 2, 224, 174, 169, 224, 174, 190, 0, 8, 139, 175,
+			224, 178, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 169, 0, 8, 139, 175, 224, 178, 174, 224, 169, 174, 224, 128, 175, 224, 174, 174,
+			224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 139, 175, 224, 178, 174, 224, 178, 174, 224, 128, 175, 224, 168, 174, 224, 2, 224, 174, 169, 224,
+			174, 191, 0, 8, 141, 175, 224, 153, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 8, 141, 175, 224, 169, 174, 224, 170, 174, 224, 2, 224,
+			174, 176, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 176, 0, 8, 190, 174, 224, 149, 174, 224, 191, 174,
+			224, 163, 174, 224, 164, 174, 224, 2, 224, 174, 178, 0, 8, 190, 174, 224, 174, 174, 224, 191, 174, 224, 185, 174, 224, 2, 224, 174, 178, 0,
+			8, 190, 174, 224, 183, 174, 224, 135, 175, 224, 154, 174, 224, 2, 224, 174, 178, 0, 224, 174, 176, 224, 175, 141, 224, 174, 154, 8, 2, 224,
+			174, 191, 3, 76, 109, 34, 76, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 8, 2, 224, 174,
+			164, 224, 174, 191, 3, 76, 109, 47, 47, 37, 34, 109, 48, 109, 0, 4, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 181,
+			224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 3, 76, 109, 49, 0, 224, 174, 149, 224, 175, 141, 8,
+			170, 174, 224, 0, 224, 174, 174, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 169, 3, 76, 109, 65, 48, 0,
+			4, 224, 174, 190, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 174, 191, 3, 76, 114,
+			0, 224, 174, 190, 8, 2, 224, 174, 169, 224, 174, 178, 0, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 149, 8, 2, 224, 175, 135,
+			224, 174, 154, 224, 174, 191, 3, 76, 118, 34, 122, 49, 0, 224, 174, 190, 224, 174, 176, 224, 175, 129, 224, 174, 178, 224, 174, 164, 8, 2,
+			224, 174, 190, 3, 76, 118, 34, 122, 55, 109, 47, 0, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 191, 224,
+			174, 169, 3, 76, 118, 48, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 128, 18, 69, 3, 76, 118, 49,
+			48, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 3, 76, 118, 49, 55, 36,
+			139, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 178, 224, 175, 135, 224, 174, 159, 224, 175, 141, 8, 3, 76, 118, 49, 55, 114,
+			139, 0, 4, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 136, 3, 76, 118, 50,
+			72, 0, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 224, 174, 190,
+			224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 178, 0, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170,
+			8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 169, 3, 76, 118, 65, 48, 0, 224, 175, 139, 224, 174, 170, 224, 175, 141, 8, 2, 224, 174,
+			176, 224, 174, 190, 224, 174, 181, 3, 76, 119, 48, 0, 224, 175, 136, 224, 174, 164, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 175, 3,
+			76, 134, 47, 109, 0, 224, 175, 140, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 3, 76,
+			135, 48, 0, 8, 141, 175, 224, 158, 174, 224, 190, 174, 224, 176, 174, 224, 3, 76, 148, 0, 4, 1, 133, 174, 224, 2, 224, 174, 190, 224,
+			174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 3, 88, 0, 1, 134, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175,
+			141, 0, 1, 135, 175, 224, 174, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 1, 147, 174, 224, 2, 224, 175, 139, 224, 174,
+			169, 0, 1, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 18, 93, 2, 224, 175, 128, 224, 174, 170, 0, 1, 191, 174, 224, 176,
+			174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 175, 141,
+			0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 8, 130, 175, 224, 175, 174, 224, 191,
+			174, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 138, 175, 224, 174,
+			174, 224, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 138, 175, 224, 174, 174, 224, 2, 224, 174, 190,
+			224, 174, 176, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 169,
+			224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 174, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 168, 174, 224, 2,
+			224, 175, 128, 224, 174, 174, 0, 8, 168, 174, 224, 2, 224, 175, 128, 224, 174, 176, 0, 8, 185, 174, 224, 2, 224, 174, 190, 224, 174, 176,
+			224, 175, 135, 0, 8, 185, 174, 224, 2, 224, 175, 128, 224, 174, 174, 0, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 178,
+			0, 8, 190, 174, 224, 170, 174, 224, 131, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 8, 190, 174, 224, 179, 174, 224, 141, 175, 224, 170,
+			174, 224, 2, 224, 174, 190, 0, 8, 190, 174, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 190, 174, 224, 181,
+			174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 190,
+			174, 224, 181, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164,
+			0, 8, 191, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 174, 0, 8, 191, 174, 224, 169, 174, 224, 134, 175, 224, 181, 174, 224, 2,
+			224, 175, 129, 224, 174, 181, 224, 175, 135, 224, 174, 178, 0, 8, 191, 174, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 176, 224, 174, 174,
+			0, 8, 191, 174, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 4, 1, 133, 174, 224, 2, 224, 174,
+			176, 224, 175, 141, 224, 174, 170, 224, 175, 136, 3, 88, 109, 0, 1, 141, 175, 224, 170, 174, 224, 131, 174, 224, 133, 174, 224, 2, 224, 174,
+			178, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 224, 174, 191, 32, 0, 8, 2, 224, 174, 176, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 135, 175, 224, 176, 174, 224, 2, 224, 174, 176, 0,
+			8, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224,
+			174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 141, 175, 224, 18, 69,
+			2, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 149, 174, 224, 2, 224, 174,
+			149, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 168, 174, 224, 2, 224, 174, 176, 224, 175,
+			129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 0, 8, 190, 174, 224, 168, 174, 224, 2, 224, 174, 176, 0, 224, 174, 176, 224, 174, 164, 224,
+			175, 141, 8, 168, 174, 224, 3, 88, 109, 34, 109, 47, 0, 1, 135, 175, 224, 18, 74, 191, 174, 224, 170, 174, 224, 142, 174, 224, 3, 88,
+			148, 0, 4, 2, 17, 66, 3, 89, 0, 8, 2, 17, 66, 0, 8, 2, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 174, 224, 174, 190, 0, 8,
+			2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 224, 174, 169, 224, 174, 174, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 224, 174, 185, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 191, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 175,
+			136, 224, 174, 169, 224, 174, 190, 32, 224, 174, 168, 224, 175, 135, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 8, 135, 175, 224, 164, 174,
+			224, 2, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 224, 174, 191, 2, 224, 174, 176, 224, 174,
+			174, 0, 224, 174, 191, 8, 2, 224, 174, 168, 224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 169, 224, 175, 135, 0, 224, 174, 191, 8,
+			2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174,
+			178, 224, 174, 190, 224, 174, 149, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 178, 224, 175, 135, 224, 174, 159, 0, 224, 175, 129, 1,
+			128, 175, 224, 176, 174, 224, 190, 174, 224, 169, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 141, 175, 224, 176, 174, 224, 133, 174, 224,
+			2, 224, 174, 181, 0, 224, 175, 129, 1, 133, 174, 224, 2, 224, 174, 181, 224, 174, 174, 224, 175, 135, 224, 174, 164, 0, 224, 175, 129, 1,
+			135, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 224, 175, 129, 1, 135, 175, 224, 149, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 1,
+			135, 175, 224, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1, 135, 175, 224, 159, 174, 224,
+			141, 175, 224, 163, 174, 224, 190, 174, 224, 178, 174, 224, 191, 174, 224, 149, 174, 224, 133, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224,
+			175, 129, 1, 135, 175, 224, 163, 174, 224, 181, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1,
+			135, 175, 224, 163, 174, 224, 181, 174, 224, 190, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 1,
+			135, 175, 224, 174, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 1, 144, 174, 224, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174,
+			175, 0, 224, 175, 129, 1, 191, 174, 224, 181, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 2, 224, 174, 181, 224, 174, 190, 224, 174, 164,
+			224, 175, 128, 224, 174, 169, 0, 224, 175, 129, 2, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 224, 175, 129, 2, 224, 174,
+			181, 224, 174, 190, 224, 174, 176, 224, 174, 184, 224, 175, 141, 224, 174, 175, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174,
+			164, 224, 174, 191, 0, 224, 175, 129, 8, 2, 224, 174, 178, 224, 175, 139, 224, 174, 149, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174,
+			174, 224, 175, 135, 224, 174, 164, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 163, 0, 224, 175, 129, 8,
+			2, 224, 174, 181, 224, 174, 190, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 164, 224, 174, 191, 0, 224,
+			175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 175, 128, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 191, 224, 174,
+			159, 224, 175, 141, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 191, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174,
+			181, 224, 175, 128, 224, 174, 159, 0, 224, 175, 129, 8, 128, 175, 224, 169, 174, 224, 154, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224,
+			175, 129, 8, 128, 175, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 149, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 8, 135, 175, 224,
+			159, 174, 224, 141, 175, 224, 163, 174, 224, 149, 174, 224, 178, 174, 224, 156, 174, 224, 2, 224, 174, 181, 0, 224, 175, 129, 8, 135, 175, 224,
+			178, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 176, 0, 224, 175, 129, 8, 135, 175, 224,
+			178, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 174, 174, 224, 190, 174, 224, 18, 71, 174, 174, 224, 2, 224, 174, 181, 224, 174, 176,
+			0, 224, 175, 129, 8, 135, 175, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 176,
+			0, 224, 175, 129, 8, 136, 174, 224, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			224, 174, 190, 224, 174, 176, 3, 89, 34, 37, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 183, 224, 175, 141, 224, 174,
+			159, 224, 174, 191, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174,
+			190, 3, 89, 34, 37, 55, 109, 68, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 8, 32, 191, 174, 224, 164, 174, 224,
+			141, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 174, 164, 224, 175, 136, 3, 89, 34, 109, 72, 0, 4, 224, 174, 191, 224, 174, 176, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 175, 136, 18, 92, 3, 89, 34, 109, 72, 72, 0, 224, 174, 191, 224, 174, 176, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 175, 136, 224, 174, 175, 224, 175, 139, 224, 174, 159, 0, 224, 175, 128, 2, 224, 174, 169, 224,
+			174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 154, 3, 89, 34, 112, 0, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 224, 174, 159, 8, 3, 89, 36, 57, 37, 50, 139, 0, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 169, 224, 175, 141, 224, 174,
+			159, 8, 3, 89, 36, 57, 50, 139, 0, 224, 175, 129, 224, 174, 181, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			8, 2, 224, 175, 139, 224, 174, 180, 224, 174, 191, 3, 89, 40, 84, 109, 34, 49, 49, 0, 224, 175, 129, 224, 174, 181, 224, 174, 176, 224,
+			175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 174, 190, 224, 174, 176, 3, 89,
+			40, 84, 109, 34, 81, 81, 109, 0, 224, 175, 129, 224, 174, 170, 1, 134, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
+			191, 224, 174, 176, 224, 174, 191, 3, 89, 48, 109, 0, 224, 175, 129, 224, 174, 174, 224, 174, 191, 224, 174, 164, 8, 2, 224, 174, 190, 3,
+			89, 65, 37, 47, 0, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 156, 8, 2, 224, 174, 176, 224, 175,
+			141, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 3, 89, 84, 37, 140, 88, 109, 0, 224, 175, 129, 224, 174, 181,
+			224, 174, 176, 224, 174, 191, 1, 144, 174, 224, 2, 224, 174, 175, 3, 89, 84, 109, 34, 0, 224, 175, 129, 224, 174, 181, 224, 174, 176, 224,
+			175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 3, 89, 84, 109, 34, 81, 81, 148, 0, 4, 224, 175, 129, 224, 174, 181, 224, 174,
+			190, 224, 174, 176, 224, 174, 154, 224, 174, 191, 1, 133, 174, 224, 2, 224, 174, 175, 3, 89, 84, 118, 34, 109, 89, 0, 224, 175, 129, 224,
+			174, 181, 224, 174, 190, 224, 174, 176, 224, 174, 154, 224, 174, 191, 8, 2, 224, 174, 175, 0, 4, 3, 89, 109, 0, 1, 133, 174, 224, 2,
+			224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 170, 0, 8, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 170, 0, 8, 141, 175, 224, 159, 174, 224, 185, 174, 224, 2, 224, 174, 169, 0, 8, 141, 175,
+			224, 159, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 135, 175,
+			224, 159, 174, 224, 2, 224, 174, 169, 0, 8, 181, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 176, 0, 224, 174, 176,
+			224, 174, 154, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 164, 224, 174, 191, 3, 89, 109, 34, 109, 89, 0, 224, 174, 153, 224, 175, 141,
+			224, 174, 149, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 159, 3, 89, 109, 68, 49, 109, 0, 4, 1, 135, 175, 224, 169, 174, 224, 139,
+			175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 135, 174, 224, 2, 224, 174, 191, 224, 174, 175, 3, 93, 0, 2, 224, 174, 190, 224, 174,
+			168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 170, 224, 174, 149, 0, 8, 2,
+			224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 178, 224, 174, 190, 32, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174,
+			178, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 139, 224, 174, 170, 224, 174, 169, 224, 174, 190, 0, 8, 129, 175, 224, 176, 174, 224,
+			129, 175, 224, 149, 174, 224, 2, 224, 175, 135, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 135, 175, 224,
+			178, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 174, 0, 4,
+			2, 224, 174, 163, 224, 175, 141, 224, 174, 170, 224, 174, 149, 3, 93, 109, 0, 2, 224, 174, 163, 224, 175, 141, 224, 174, 174, 224, 175, 129,
+			0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 179, 224, 174, 190, 0, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 2, 224, 174, 176, 3, 93, 109, 68, 49, 109, 0, 224, 175, 139, 224, 174, 149, 1, 133, 174, 224, 2, 224, 175, 141, 3, 93, 119, 49,
+			0, 7, 6, 1, 29, 0, 4, 2, 17, 66, 3, 75, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190,
+			0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 3, 75, 109, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224,
+			159, 174, 224, 2, 224, 174, 176, 3, 76, 109, 0, 4, 1, 130, 175, 224, 175, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 191, 224,
+			174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 3, 88, 0, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175,
+			129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 128, 224, 174,
+			176, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 170, 224, 175,
+			141, 224, 174, 181, 224, 175, 135, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224,
+			174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224, 174, 170, 224,
+			175, 141, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 139, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224,
+			175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0,
+			8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 178, 224, 175, 129, 0,
+			8, 2, 224, 175, 134, 224, 174, 169, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 169, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 178, 0,
+			8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 174, 190, 224,
+			174, 149, 224, 175, 141, 224, 174, 184, 0, 8, 141, 175, 224, 174, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 170, 174,
+			224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 190, 174, 224, 168, 174, 224, 2, 224, 174, 191, 0, 8, 191, 174, 224, 168, 174, 224, 2, 224,
+			174, 190, 224, 174, 174, 0, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 2, 32, 3, 88, 37, 48, 0, 224, 174, 191, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164, 3, 88, 37, 50, 72, 118, 71, 0, 4, 1, 133,
+			174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 175, 136, 224, 174, 156, 224, 174, 190, 224, 174, 169, 3, 88, 109, 0, 8, 2,
+			224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 134, 175, 224, 149, 174, 224, 2, 224, 174, 159,
+			224, 175, 141, 0, 8, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 176, 224, 175, 141,
+			224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 149, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0, 8, 149,
+			174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 8, 149, 174, 224, 2, 224, 174, 178, 224, 175, 136, 0, 8, 149, 174, 224, 2, 224, 174, 178,
+			224, 175, 141, 0, 8, 159, 174, 224, 2, 224, 174, 169, 0, 224, 174, 190, 224, 174, 149, 8, 2, 224, 175, 128, 224, 174, 176, 3, 88, 118,
+			49, 0, 7, 6, 1, 31, 0, 4, 224, 175, 141, 224, 174, 154, 8, 174, 174, 224, 2, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174,
+			175, 3, 50, 76, 0, 224, 175, 141, 224, 174, 154, 8, 178, 174, 224, 2, 17, 66, 0, 224, 175, 141, 224, 174, 154, 224, 175, 141, 1, 135,
+			174, 224, 0, 224, 175, 141, 224, 174, 154, 224, 175, 141, 8, 191, 174, 224, 181, 174, 224, 0, 4, 224, 175, 141, 224, 174, 154, 1, 137, 174,
+			224, 2, 224, 174, 181, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 3, 50, 76, 109,
+			0, 224, 175, 141, 224, 174, 154, 8, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 154, 8, 190, 174, 224, 149, 174, 224, 2,
+			224, 174, 169, 0, 2, 17, 66, 3, 67, 0, 3, 67, 109, 0, 7, 6, 1, 32, 0, 4, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224,
+			178, 174, 224, 138, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 178, 3, 23, 139, 0, 224, 175, 141, 1, 141, 175, 224,
+			184, 174, 224, 2, 224, 174, 176, 0, 4, 224, 175, 141, 224, 174, 154, 224, 175, 129, 1, 178, 174, 224, 2, 224, 174, 174, 224, 174, 163, 3,
+			49, 93, 0, 224, 175, 141, 224, 174, 154, 224, 175, 129, 1, 178, 174, 224, 2, 224, 174, 174, 224, 174, 191, 0, 4, 1, 32, 141, 175, 224,
+			178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 184, 3, 139, 0, 1, 129, 175, 224, 179, 174, 224, 2, 224, 175, 139,
+			224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 175, 134, 0, 1, 141, 175, 224, 178,
+			174, 224, 133, 174, 224, 2, 224, 174, 190, 0, 1, 141, 175, 224, 178, 174, 224, 137, 174, 224, 2, 224, 174, 190, 0, 1, 141, 175, 224, 183,
+			174, 224, 2, 17, 66, 0, 1, 141, 175, 224, 184, 174, 224, 2, 17, 66, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175,
+			141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8,
+			2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 156, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174,
+			190, 224, 174, 174, 224, 174, 191, 32, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224,
+			174, 176, 224, 175, 141, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224,
+			174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 0,
+			8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224,
+			174, 131, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224,
+			174, 181, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224,
+			174, 181, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 183, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 175, 128, 0,
+			8, 2, 224, 175, 129, 224, 174, 169, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224,
+			174, 169, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 129, 224, 174, 169, 224, 175, 128, 18, 69, 0, 8, 2, 224, 175, 129, 224, 174,
+			169, 224, 175, 128, 224, 174, 183, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 130, 32, 224, 174, 181, 224, 175, 128, 224, 174, 178, 0,
+			8, 2, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224,
+			174, 184, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 184, 224, 175, 141, 0, 8, 2, 224,
+			175, 134, 224, 174, 154, 224, 175, 139, 0, 8, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224,
+			175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224,
+			175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 184, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224,
+			174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 131, 224, 174, 170, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224,
+			175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224,
+			175, 141, 32, 224, 174, 133, 224, 174, 181, 224, 175, 128, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 170, 0, 8, 2, 224, 175, 135,
+			224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 136, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 175, 136, 224, 174,
+			178, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 175,
+			139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 224, 174, 175, 224, 175, 139, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 8, 2, 224, 175,
+			139, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191, 224, 174, 181, 224, 175, 129, 224, 174, 159, 224, 175, 141, 0, 8,
+			2, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174,
+			159, 224, 174, 176, 0, 8, 32, 141, 175, 224, 169, 174, 224, 190, 174, 224, 178, 174, 224, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 169, 224, 174, 191, 224, 174, 184, 0, 8, 32, 141, 175, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 135, 175, 224, 159, 174, 224, 2,
+			224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 184, 0, 8, 130, 175, 224, 175, 174, 224, 141, 175, 224, 159,
+			174, 224, 2, 224, 174, 191, 0, 8, 130, 175, 224, 175, 174, 224, 191, 174, 224, 159, 174, 224, 2, 224, 174, 191, 0, 8, 140, 175, 224, 149,
+			174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 175, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 156, 174, 224, 2,
+			224, 174, 191, 224, 174, 178, 0, 8, 141, 175, 224, 163, 174, 224, 135, 175, 224, 149, 174, 224, 2, 224, 175, 128, 224, 174, 169, 0, 8, 141,
+			175, 224, 163, 174, 224, 135, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174, 224, 2,
+			224, 175, 128, 224, 174, 169, 0, 8, 141, 175, 224, 170, 174, 224, 131, 174, 224, 135, 175, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 141,
+			175, 224, 176, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 139, 0, 8, 141, 175, 224, 176, 174, 224, 190,
+			174, 224, 149, 174, 224, 2, 224, 175, 130, 224, 174, 169, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 191,
+			224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 159, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 178, 174, 224, 175,
+			174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 181, 174, 224, 190, 174, 224, 168, 174, 224, 2,
+			224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 149, 174, 224, 134, 175, 224, 168,
+			174, 224, 2, 224, 174, 191, 224, 174, 181, 0, 8, 191, 174, 224, 156, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 135, 0, 8, 191,
+			174, 224, 176, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 176, 0, 8, 191, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2,
+			224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 191, 174, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 141, 175, 224, 149,
+			174, 224, 2, 224, 174, 191, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184,
+			224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 178,
+			0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 154, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130,
+			224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130,
+			224, 174, 183, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 170, 224, 174, 191, 224, 174, 179,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169,
+			224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 176, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 159,
+			224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 178,
+			224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 181,
+			224, 175, 135, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 178, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174,
+			224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 224, 174, 181, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 134, 224, 174, 178,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 153, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			191, 224, 174, 169, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174,
+			174, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 224, 174,
+			175, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174,
+			176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 175,
+			141, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175,
+			136, 32, 224, 174, 154, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 32,
+			224, 174, 154, 224, 175, 134, 224, 174, 175, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 32, 224, 174, 170, 224, 174,
+			163, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 175, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174,
+			176, 224, 175, 136, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174,
+			176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 141, 175, 224, 184, 174, 224, 2, 224, 174,
+			176, 224, 175, 136, 224, 174, 149, 224, 175, 141, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 190, 0, 224, 175, 141, 1,
+			134, 174, 224, 2, 224, 174, 177, 224, 174, 190, 0, 224, 175, 141, 1, 134, 175, 224, 168, 174, 224, 141, 175, 224, 176, 174, 224, 159, 174, 224,
+			141, 175, 224, 163, 174, 224, 135, 174, 224, 0, 224, 175, 141, 1, 135, 174, 224, 2, 224, 174, 178, 224, 174, 176, 0, 224, 175, 141, 1, 141,
+			175, 224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 21, 0, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176,
+			224, 175, 135, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224, 142, 174, 224, 2, 224, 174, 176,
+			224, 174, 191, 0, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 178, 0, 224, 175,
+			141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 154, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 169,
+			0, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 170, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141,
+			0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 8, 2, 224, 174, 176,
+			224, 174, 170, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 175,
+			141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141,
+			224, 174, 184, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169,
+			224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141,
+			224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 175, 128, 224, 174, 159, 224, 175, 141,
+			224, 174, 159, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141,
+			224, 174, 178, 224, 175, 135, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141,
+			224, 174, 181, 224, 175, 135, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 178,
+			0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 136, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 174, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 134,
+			224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 153, 224, 175, 141, 32, 0, 224, 175, 141, 8, 2, 224, 174,
+			176, 224, 174, 191, 224, 174, 169, 224, 174, 191, 224, 174, 159, 224, 174, 190, 224, 174, 159, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174,
 			191, 224, 174, 174, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174,
 			191, 224, 174, 175, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 224, 175, 141, 8,
 			2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175,
@@ -32149,210 +43751,265 @@ FilesInMemory create_espeakdata_dicts () {
 			178, 0, 224, 175, 141, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 8, 190, 174, 224, 149, 174, 224, 129, 175, 224,
 			159, 174, 224, 168, 174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 8, 190, 174, 224, 168, 174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 8,
 			190, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 175, 129, 0, 224,
-			175, 141, 8, 191, 174, 224, 185, 174, 224, 2, 224, 174, 178, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 134, 224, 174, 175,
-			224, 174, 191, 8, 2, 224, 174, 178, 224, 174, 176, 3, 140, 34, 36, 57, 0, 224, 175, 141, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224,
-			174, 191, 8, 2, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 3, 140, 34,
-			37, 48, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 140, 34, 37, 49, 0, 224, 175, 141, 224,
-			174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174,
-			176, 3, 140, 34, 37, 81, 81, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224,
+			175, 141, 8, 191, 174, 224, 185, 174, 224, 0, 224, 175, 141, 8, 191, 174, 224, 185, 174, 224, 2, 224, 174, 178, 224, 174, 176, 0, 4, 224,
+			174, 191, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 8, 2, 224, 174, 178, 224, 174, 176, 3, 139, 34, 36, 57, 0, 224, 175,
+			141, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 8, 2, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 224, 174, 176, 224, 174,
+			191, 224, 174, 170, 224, 175, 141, 8, 3, 139, 34, 37, 48, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141,
+			8, 3, 139, 34, 37, 49, 0, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 176,
+			224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 190, 174, 224, 185, 174, 224, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 169,
+			224, 174, 191, 224, 174, 159, 8, 2, 224, 174, 191, 3, 139, 34, 37, 50, 37, 139, 0, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174,
+			169, 224, 174, 191, 224, 174, 159, 8, 2, 224, 174, 191, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174,
+			176, 3, 139, 34, 37, 81, 81, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224,
 			174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 174, 191,
 			224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 0, 224, 174, 191, 224, 174, 176, 8, 2, 224, 174, 184, 224, 175, 141, 224,
-			174, 159, 3, 140, 34, 109, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 159, 224,
-			175, 141, 8, 3, 140, 34, 109, 65, 48, 36, 140, 0, 224, 175, 141, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 134,
-			224, 174, 159, 224, 175, 141, 8, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 3, 140, 34, 112, 140,
-			0, 224, 175, 141, 224, 174, 176, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 0, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 175,
-			224, 174, 191, 224, 174, 169, 8, 2, 224, 175, 136, 3, 140, 34, 114, 57, 50, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 170,
-			224, 175, 141, 8, 3, 140, 34, 118, 48, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 8, 3, 140, 34,
-			118, 49, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 1, 133, 174, 224, 0, 224, 175, 141, 224, 174, 176, 224,
-			174, 190, 224, 174, 149, 224, 175, 141, 8, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 8, 2, 224, 174, 184,
-			224, 175, 141, 224, 174, 170, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 12, 12, 12, 3, 140, 34, 118, 50, 0, 224, 175, 141,
-			224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 163,
-			224, 175, 141, 224, 174, 159, 8, 3, 140, 34, 118, 50, 89, 48, 37, 34, 109, 66, 140, 149, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190,
-			224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 3,
-			140, 34, 118, 50, 89, 48, 109, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141,
-			224, 174, 170, 8, 2, 224, 174, 176, 3, 140, 34, 118, 50, 89, 83, 109, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224,
-			175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 131,
-			224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 140, 34, 118, 83, 37, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190,
-			224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 131, 224, 174, 170, 224,
-			174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 8, 0, 4, 224, 175, 134, 224, 174, 149, 8, 2, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 184, 3, 140, 36, 49, 0, 224,
-			175, 134, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 169, 224, 174, 190, 224, 174, 178, 224, 174, 156, 224, 174, 191, 0, 224, 175, 134, 224,
-			174, 149, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 149, 8, 3, 140, 36, 49, 50, 37, 49, 149, 0, 224, 175, 134, 224, 174, 169,
-			224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 169, 3, 140, 36, 50, 93, 109, 0, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 159,
-			224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 140, 36, 50, 140, 122, 55, 49, 109, 0, 224, 175, 134,
-			224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224,
-			174, 176, 3, 140, 36, 55, 37, 48, 34, 37, 50, 140, 109, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 174, 164, 8,
-			2, 224, 174, 191, 3, 140, 36, 55, 37, 48, 109, 47, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 128, 8, 2,
-			224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 140, 36, 55, 37, 81, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 170, 2, 224,
-			175, 139, 224, 174, 169, 3, 140, 36, 55, 37, 83, 0, 224, 175, 134, 224, 174, 178, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 139,
-			224, 174, 170, 224, 175, 141, 8, 3, 140, 36, 55, 109, 89, 49, 119, 48, 0, 224, 175, 134, 224, 174, 174, 224, 175, 141, 224, 174, 170, 8,
-			2, 224, 175, 139, 3, 140, 36, 65, 48, 0, 224, 175, 134, 224, 174, 174, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 3, 140, 36,
-			65, 48, 109, 0, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 8, 3, 140, 36, 89, 140, 149, 0, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 1, 141, 175, 224, 176, 174, 224, 134, 174, 224, 3, 140, 37, 49, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149,
-			224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 3, 140, 37, 49, 49, 36, 140, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149,
-			224, 174, 159, 224, 175, 141, 8, 3, 140, 37, 49, 49, 109, 140, 0, 224, 174, 191, 224, 174, 169, 224, 175, 134, 224, 174, 169, 224, 175, 141,
-			224, 174, 159, 1, 141, 175, 224, 169, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 178, 3, 140, 37, 50, 36, 50, 140, 109, 0, 224,
-			174, 191, 224, 174, 169, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174, 224,
-			2, 224, 174, 178, 3, 140, 37, 50, 36, 66, 140, 109, 0, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176,
-			224, 174, 191, 224, 174, 153, 224, 175, 141, 3, 140, 37, 50, 49, 109, 0, 224, 174, 191, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175,
-			141, 224, 174, 159, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 154, 174, 224, 3, 140, 37, 65, 36, 66, 140, 149, 0, 224, 174, 191, 224,
-			174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 135, 224, 174, 159, 8, 141, 175, 224, 176, 174, 224, 154, 174, 224, 3, 140, 37, 83, 37, 81,
-			114, 140, 149, 0, 224, 174, 191, 224, 174, 170, 8, 2, 224, 174, 169, 3, 140, 37, 83, 109, 0, 224, 174, 191, 224, 174, 159, 8, 2, 224,
-			175, 139, 3, 140, 37, 140, 0, 224, 175, 138, 224, 174, 149, 224, 175, 141, 8, 3, 140, 39, 49, 0, 224, 175, 129, 224, 174, 159, 8, 2,
-			224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178, 3, 140, 40, 140, 0, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 1, 133, 174, 224, 3, 140, 55, 118, 66, 140, 149, 0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224,
-			174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 3, 140, 58, 0, 224, 175, 141, 224, 174, 181, 8, 2, 224, 174, 191, 224,
-			174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174,
-			149, 8, 2, 224, 174, 191, 224, 174, 179, 3, 140, 58, 37, 68, 49, 0, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174,
-			149, 8, 2, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 141,
-			175, 224, 163, 174, 224, 191, 174, 224, 175, 174, 224, 190, 174, 224, 170, 174, 224, 141, 175, 224, 170, 174, 224, 133, 174, 224, 3, 140, 65, 36,
-			66, 140, 149, 0, 4, 1, 135, 175, 224, 159, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 184, 3, 140, 109, 0, 1, 141, 175, 224,
-			153, 174, 224, 2, 224, 174, 169, 0, 1, 141, 175, 224, 163, 174, 224, 129, 175, 224, 181, 174, 224, 149, 174, 224, 141, 175, 224, 169, 174, 224,
-			142, 174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 141, 0, 1, 141, 175, 224,
-			163, 174, 224, 140, 175, 224, 149, 174, 224, 141, 175, 224, 169, 174, 224, 142, 174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 178, 174, 224,
-			191, 174, 224, 170, 174, 224, 131, 174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 183, 174, 224, 0, 1, 141, 175, 224, 184, 174, 224, 0,
-			1, 191, 174, 224, 169, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 131, 224, 174, 170, 224,
-			175, 141, 0, 8, 2, 224, 174, 149, 224, 175, 141, 32, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 0, 8, 2,
-			224, 174, 149, 224, 175, 141, 224, 174, 169, 0, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141,
-			0, 8, 2, 224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 170, 224, 175, 141, 32, 0, 8,
-			2, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174,
-			178, 224, 174, 176, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174, 179, 224, 174, 176, 0, 8, 2, 224, 174,
-			174, 224, 175, 141, 224, 174, 179, 224, 174, 176, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174,
-			175, 224, 174, 174, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175,
-			129, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175, 139, 0, 8, 2, 224, 174,
-			175, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174, 181, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 174, 178, 0, 8, 2, 224, 174,
-			181, 224, 175, 129, 224, 174, 169, 0, 8, 130, 175, 224, 149, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 176, 0, 8, 130, 175, 224,
-			175, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 169, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 174,
-			176, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 174, 178, 0, 8, 141, 175, 224, 163, 174, 224, 191, 174, 224,
-			176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 183, 174, 224, 2, 224, 174,
-			176, 0, 8, 141, 175, 224, 178, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 169, 0, 8, 178, 174, 224, 191, 174, 224, 174, 174, 224,
-			2, 224, 174, 176, 224, 174, 191, 0, 8, 191, 174, 224, 178, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 224,
-			174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 142, 174, 224, 2, 224, 174, 176, 224, 175, 136, 18, 69,
-			3, 140, 109, 34, 48, 0, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 136, 224,
-			174, 169, 3, 140, 109, 34, 48, 109, 66, 140, 0, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 178, 3, 140,
-			109, 71, 71, 0, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 170, 224, 175, 141, 8, 3, 140, 109, 76, 12, 109, 48, 0, 224, 175,
-			135, 224, 174, 149, 224, 175, 141, 8, 3, 140, 114, 49, 0, 224, 175, 135, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176,
-			3, 140, 114, 68, 49, 109, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 1, 141, 175, 224, 163,
-			174, 224, 133, 174, 224, 3, 140, 118, 34, 140, 37, 49, 149, 0, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 3, 140, 118, 48, 0, 224,
-			174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 140, 118, 48, 37, 49, 0, 4, 224, 174, 190, 224, 174, 149, 8,
-			2, 224, 175, 141, 224, 174, 184, 224, 174, 191, 3, 140, 118, 49, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 8, 2, 32, 0, 224, 174,
-			190, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 140, 118, 50, 37, 49, 0, 224, 174, 190, 224, 174, 175, 224, 175, 141,
-			224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 3, 140, 118, 57, 55, 36, 140, 0, 224, 174, 190, 224, 174, 175, 224, 175, 141,
-			224, 174, 178, 224, 174, 159, 224, 175, 141, 8, 3, 140, 118, 57, 55, 109, 140, 0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149,
-			8, 2, 224, 174, 191, 3, 140, 118, 68, 49, 0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 140,
-			118, 68, 49, 109, 0, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 1, 141, 175, 224,
-			163, 174, 224, 134, 175, 224, 170, 174, 224, 3, 140, 118, 89, 140, 37, 49, 0, 224, 174, 190, 224, 174, 159, 8, 2, 224, 174, 190, 3, 140,
-			118, 140, 0, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159,
-			8, 3, 140, 119, 34, 50, 109, 65, 36, 66, 140, 149, 0, 224, 175, 139, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2,
-			224, 175, 139, 3, 140, 119, 34, 109, 66, 140, 0, 4, 224, 175, 130, 8, 32, 141, 175, 224, 184, 174, 224, 179, 174, 224, 141, 175, 224, 170,
-			174, 224, 3, 140, 123, 0, 224, 175, 130, 8, 32, 141, 175, 224, 184, 174, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 0, 224, 175, 130,
-			224, 174, 164, 224, 175, 141, 8, 3, 140, 123, 47, 0, 224, 175, 136, 224, 174, 170, 224, 175, 141, 8, 3, 140, 134, 48, 0, 224, 175, 136,
-			224, 174, 159, 8, 2, 224, 174, 191, 224, 174, 178, 3, 140, 134, 140, 0, 224, 175, 141, 224, 174, 159, 2, 17, 66, 3, 140, 140, 0, 224,
-			175, 141, 224, 174, 159, 3, 140, 140, 109, 0, 4, 1, 135, 175, 224, 175, 174, 224, 191, 174, 224, 159, 174, 224, 128, 175, 224, 174, 174, 224,
-			141, 175, 224, 176, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 174, 224, 3, 140, 149, 0, 1, 141, 175, 224, 163, 174, 224, 134,
-			175, 224, 156, 174, 224, 141, 175, 224, 176, 174, 224, 133, 174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 128, 175,
-			224, 176, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 156, 174, 224, 141, 175, 224, 176, 174, 224,
-			133, 174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 176, 174, 224, 134, 175, 224, 170, 174, 224, 141, 175, 224, 184, 174, 224, 141, 175, 224, 169,
-			174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 176, 174, 224, 170, 174, 224, 141, 175, 224, 184, 174, 224, 141, 175, 224, 169, 174, 224, 0, 1,
-			141, 175, 224, 178, 174, 224, 190, 174, 224, 18, 69, 133, 174, 224, 0, 8, 135, 175, 224, 159, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224,
-			134, 175, 224, 174, 174, 224, 149, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224, 135, 175, 224, 170, 174, 224, 0, 8, 141, 175, 224, 163, 174,
-			224, 175, 174, 224, 136, 175, 224, 179, 174, 224, 141, 175, 224, 149, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224, 183, 174, 224, 135, 175, 224,
-			170, 174, 224, 0, 8, 141, 175, 224, 170, 174, 224, 131, 174, 224, 191, 174, 224, 183, 174, 224, 0, 8, 141, 175, 224, 176, 174, 224, 139, 175,
-			224, 170, 174, 224, 141, 175, 224, 170, 174, 224, 191, 174, 224, 176, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 139, 175, 224, 181, 174, 224,
-			0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 0, 4, 2, 17, 66, 3, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169,
-			224, 175, 141, 224, 174, 169, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 178,
-			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 129, 224, 174, 178, 224, 174, 190, 0, 224, 174, 191, 8, 2,
-			224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 224, 174, 191,
-			224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 141,
-			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 32, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 181, 0, 224, 174, 191, 224, 174, 176, 8, 2, 224, 174, 184, 3, 141, 34, 36, 0,
-			224, 174, 191, 224, 174, 175, 224, 175, 130, 224, 174, 159, 8, 2, 224, 174, 191, 3, 141, 57, 152, 140, 0, 4, 3, 141, 109, 0, 8, 2,
-			224, 174, 181, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 178, 224, 175, 139, 224, 174, 159, 0, 224, 175, 128, 224, 174, 154, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 8, 3, 141, 112, 89, 109, 66, 140, 149, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			175, 129, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 141, 118, 49, 49, 122, 65, 36, 66, 140, 149, 0,
-			224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 176, 3, 141, 118, 49, 140, 109, 0, 4, 224, 175, 141, 224, 174,
-			159, 1, 135, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 191, 3, 141, 141, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 176,
-			174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 159, 8, 178, 174, 224, 3, 141, 141, 149, 0, 7, 6, 1, 36, 0,
-			2, 17, 66, 3, 66, 0, 3, 66, 109, 0, 7, 6, 1, 37, 0, 4, 1, 141, 175, 224, 149, 174, 224, 2, 17, 66, 3, 47, 0, 1,
+			174, 159, 3, 139, 34, 109, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224, 175, 141, 8, 3, 139, 34, 109, 49, 0, 224, 175, 141,
+			224, 174, 176, 224, 174, 149, 224, 175, 141, 8, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 134,
+			224, 174, 159, 224, 175, 141, 8, 3, 139, 34, 109, 65, 48, 36, 139, 0, 224, 175, 141, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174,
+			170, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 3,
+			139, 34, 112, 139, 0, 224, 175, 141, 224, 174, 176, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 0, 224, 174, 191, 224, 174, 176, 224, 175,
+			135, 224, 174, 175, 224, 174, 191, 224, 174, 169, 8, 2, 224, 175, 136, 3, 139, 34, 114, 57, 50, 0, 224, 174, 191, 224, 174, 176, 224, 174,
+			190, 224, 174, 170, 224, 175, 141, 8, 3, 139, 34, 118, 48, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141,
+			8, 3, 139, 34, 118, 49, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 1, 133, 174, 224, 0, 224, 175, 141,
+			224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 8, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 8,
+			2, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 12, 12, 12, 3, 139, 34, 118, 50,
+			0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174,
+			176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 139, 34, 118, 50, 89, 48, 37, 34, 109, 66, 139, 148, 0, 224, 175, 141, 224, 174,
+			176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 141,
+			224, 174, 159, 3, 139, 34, 118, 50, 89, 48, 109, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174,
+			184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 3, 139, 34, 118, 50, 89, 83, 109, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190,
+			224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174,
+			190, 224, 174, 170, 8, 2, 224, 174, 191, 32, 3, 139, 34, 118, 83, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 170, 8, 2,
+			224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 175,
+			0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 191, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224,
+			174, 131, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 139, 34, 118, 83, 37, 49, 0, 224, 174, 191, 224, 174, 176, 224,
+			174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 131, 224, 174,
+			170, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 149,
+			224, 175, 141, 8, 0, 4, 224, 175, 134, 224, 174, 149, 8, 2, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 184, 3, 139, 36, 49,
+			0, 224, 175, 134, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 169, 224, 174, 190, 224, 174, 178, 224, 174, 156, 224, 174, 191, 0, 224, 175,
+			134, 224, 174, 149, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 149, 8, 3, 139, 36, 49, 50, 37, 49, 148, 0, 224, 175, 134, 224,
+			174, 169, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 169, 3, 139, 36, 50, 93, 109, 0, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224,
+			174, 159, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 139, 36, 50, 139, 122, 55, 49, 109, 0, 224,
+			175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8,
+			2, 224, 174, 176, 3, 139, 36, 55, 37, 48, 34, 37, 50, 139, 109, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 174,
+			164, 8, 2, 224, 174, 191, 3, 139, 36, 55, 37, 48, 109, 47, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 128,
+			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 3, 139, 36, 55, 37, 81, 0, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174, 170,
+			2, 224, 175, 139, 224, 174, 169, 3, 139, 36, 55, 37, 83, 0, 224, 175, 134, 224, 174, 178, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224,
+			175, 139, 224, 174, 170, 224, 175, 141, 8, 3, 139, 36, 55, 109, 89, 49, 119, 48, 0, 224, 175, 134, 224, 174, 174, 224, 175, 141, 224, 174,
+			170, 8, 2, 224, 175, 139, 3, 139, 36, 65, 48, 0, 224, 175, 134, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174, 178,
+			224, 175, 135, 224, 174, 159, 224, 175, 141, 8, 3, 139, 36, 65, 48, 55, 114, 139, 0, 224, 175, 134, 224, 174, 174, 224, 175, 141, 224, 174,
+			170, 8, 2, 224, 174, 176, 3, 139, 36, 65, 48, 109, 0, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 8, 3,
+			139, 36, 66, 139, 0, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 8, 3, 139, 36, 89, 139, 148, 0, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 1, 141, 175, 224, 176, 174, 224, 134, 174, 224, 3, 139, 37, 49, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 3, 139, 37, 49, 49, 36, 139, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 159, 224, 175, 141, 8, 3, 139, 37, 49, 49, 109, 139, 0, 224, 174, 191, 224, 174, 169, 224, 175, 134, 224, 174, 169, 224, 175,
+			141, 224, 174, 159, 1, 141, 175, 224, 169, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 178, 3, 139, 37, 50, 36, 50, 139, 109, 0,
+			224, 174, 191, 224, 174, 169, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174,
+			224, 2, 224, 174, 178, 3, 139, 37, 50, 36, 66, 139, 109, 0, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174,
+			176, 224, 174, 191, 224, 174, 153, 224, 175, 141, 3, 139, 37, 50, 49, 109, 0, 224, 174, 191, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224,
+			175, 141, 224, 174, 159, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 154, 174, 224, 3, 139, 37, 65, 36, 66, 139, 148, 0, 224, 174, 191,
+			224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175, 135, 224, 174, 159, 8, 141, 175, 224, 176, 174, 224, 154, 174, 224, 3, 139, 37, 83, 37,
+			81, 114, 139, 148, 0, 224, 174, 191, 224, 174, 170, 8, 2, 224, 174, 169, 3, 139, 37, 83, 109, 0, 224, 174, 191, 224, 174, 159, 8, 2,
+			224, 175, 139, 3, 139, 37, 139, 0, 224, 175, 138, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 139, 3, 139,
+			39, 34, 109, 66, 139, 0, 224, 175, 138, 224, 174, 149, 224, 175, 141, 8, 3, 139, 39, 49, 0, 224, 175, 129, 224, 174, 159, 8, 2, 224,
+			175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178, 3, 139, 40, 139, 0, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174,
+			163, 224, 175, 141, 224, 174, 159, 1, 133, 174, 224, 3, 139, 55, 118, 66, 139, 148, 0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224, 174,
+			191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 3, 139, 58, 0, 224, 175, 141, 224, 174, 181, 8, 2, 224, 174, 191, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			8, 2, 224, 174, 191, 224, 174, 179, 3, 139, 58, 37, 68, 49, 0, 224, 175, 129, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175, 141,
+			224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			8, 2, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 141, 175,
+			224, 163, 174, 224, 191, 174, 224, 175, 174, 224, 190, 174, 224, 170, 174, 224, 141, 175, 224, 170, 174, 224, 133, 174, 224, 3, 139, 65, 36, 66,
+			139, 148, 0, 4, 1, 135, 175, 224, 159, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 184, 3, 139, 109, 0, 1, 141, 175, 224, 153,
+			174, 224, 2, 224, 174, 169, 0, 1, 141, 175, 224, 163, 174, 224, 129, 175, 224, 181, 174, 224, 149, 174, 224, 141, 175, 224, 169, 174, 224, 142,
+			174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 141, 0, 1, 141, 175, 224, 163,
+			174, 224, 140, 175, 224, 149, 174, 224, 141, 175, 224, 169, 174, 224, 142, 174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 178, 174, 224, 191,
+			174, 224, 170, 174, 224, 131, 174, 224, 2, 224, 174, 176, 0, 1, 141, 175, 224, 183, 174, 224, 0, 1, 141, 175, 224, 184, 174, 224, 0, 1,
+			191, 174, 224, 169, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 131, 224, 174, 170, 224, 175,
+			141, 0, 8, 2, 224, 174, 149, 224, 175, 141, 32, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 0, 8, 2, 224,
+			174, 149, 224, 175, 141, 224, 174, 169, 0, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0,
+			8, 2, 224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 170, 224, 175, 141, 32, 0, 8, 2,
+			224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174, 178,
+			224, 174, 176, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174, 179, 224, 174, 176, 0, 8, 2, 224, 174, 174,
+			224, 175, 141, 224, 174, 179, 224, 174, 176, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 175,
+			224, 174, 174, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175, 129,
+			0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224, 175, 139, 0, 8, 2, 224, 174, 175,
+			224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 175, 136, 224, 174, 169, 0, 8, 2, 224, 174, 181,
+			224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 169, 0, 8, 130, 175, 224, 149,
+			174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 176, 0, 8, 130, 175, 224, 175, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 169,
+			0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 174, 176, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 174,
+			174, 224, 2, 224, 174, 178, 0, 8, 141, 175, 224, 163, 174, 224, 191, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 176,
+			0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 183, 174, 224, 2, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 191, 174, 224, 174,
+			174, 224, 2, 224, 174, 169, 0, 8, 178, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 8, 191, 174, 224, 178,
+			174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 141,
+			175, 224, 163, 174, 224, 142, 174, 224, 2, 224, 174, 176, 224, 175, 136, 18, 69, 3, 139, 109, 34, 48, 0, 224, 174, 176, 224, 175, 141, 224,
+			174, 170, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 136, 224, 174, 169, 3, 139, 109, 34, 48, 109, 66, 139, 0, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 178, 3, 139, 109, 71, 71, 0, 224, 174, 154, 224, 175, 141, 224, 174, 154,
+			224, 174, 170, 224, 175, 141, 8, 3, 139, 109, 76, 12, 109, 48, 0, 224, 175, 135, 224, 174, 149, 224, 175, 141, 8, 3, 139, 114, 49, 0,
+			224, 175, 135, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 139, 114, 68, 49, 109, 0, 224, 174, 190, 224, 174, 176,
+			224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 1, 141, 175, 224, 163, 174, 224, 133, 174, 224, 3, 139, 118, 34, 139, 37, 49, 148,
+			0, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 3, 139, 118, 48, 0, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 8, 3, 139, 118, 48, 37, 49, 0, 4, 224, 174, 190, 224, 174, 149, 8, 2, 224, 175, 141, 224, 174, 184, 224, 174, 191, 3, 139, 118,
+			49, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 8, 2, 32, 0, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 175, 141,
+			8, 3, 139, 118, 50, 37, 49, 0, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 8,
+			3, 139, 118, 57, 55, 36, 139, 0, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 159, 224, 175, 141, 8, 3, 139, 118,
+			57, 55, 109, 139, 0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 191, 3, 139, 118, 68, 49, 0, 224, 174,
+			190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 139, 118, 68, 49, 109, 0, 224, 174, 190, 224, 174, 184, 224, 175,
+			141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 1, 141, 175, 224, 163, 174, 224, 134, 175, 224, 170, 174, 224, 3, 139, 118, 89,
+			139, 37, 49, 0, 224, 174, 190, 224, 174, 159, 8, 2, 224, 174, 190, 3, 139, 118, 139, 0, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224,
+			174, 169, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 139, 119, 34, 50, 109, 65, 36, 66, 139, 148, 0,
+			224, 175, 139, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 139, 3, 139, 119, 34, 109, 66, 139, 0, 4, 224,
+			175, 130, 8, 32, 141, 175, 224, 184, 174, 224, 179, 174, 224, 141, 175, 224, 170, 174, 224, 3, 139, 123, 0, 224, 175, 130, 8, 32, 141, 175,
+			224, 184, 174, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 0, 224, 175, 130, 224, 174, 164, 224, 175, 141, 8, 3, 139, 123, 47, 0, 224,
+			175, 136, 224, 174, 170, 224, 175, 141, 8, 3, 139, 134, 48, 0, 224, 175, 136, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 175, 224, 175,
+			141, 224, 174, 159, 3, 139, 134, 83, 0, 224, 175, 136, 224, 174, 159, 8, 2, 224, 174, 191, 224, 174, 178, 3, 139, 134, 139, 0, 224, 175,
+			141, 224, 174, 159, 2, 17, 66, 3, 139, 139, 0, 224, 175, 141, 224, 174, 159, 3, 139, 139, 109, 0, 4, 1, 135, 175, 224, 175, 174, 224,
+			191, 174, 224, 159, 174, 224, 128, 175, 224, 174, 174, 224, 141, 175, 224, 176, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 174, 224,
+			3, 139, 148, 0, 1, 141, 175, 224, 163, 174, 224, 134, 175, 224, 156, 174, 224, 141, 175, 224, 176, 174, 224, 133, 174, 224, 0, 1, 141, 175,
+			224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 128, 175, 224, 176, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 0, 1, 141, 175, 224,
+			163, 174, 224, 156, 174, 224, 141, 175, 224, 176, 174, 224, 133, 174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 176, 174, 224, 134, 175, 224, 170,
+			174, 224, 141, 175, 224, 184, 174, 224, 141, 175, 224, 169, 174, 224, 0, 1, 141, 175, 224, 163, 174, 224, 176, 174, 224, 170, 174, 224, 141, 175,
+			224, 184, 174, 224, 141, 175, 224, 169, 174, 224, 0, 1, 141, 175, 224, 178, 174, 224, 190, 174, 224, 18, 69, 133, 174, 224, 0, 8, 135, 175,
+			224, 159, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 174, 174, 224, 149, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224, 135,
+			175, 224, 170, 174, 224, 0, 8, 141, 175, 224, 163, 174, 224, 175, 174, 224, 136, 175, 224, 179, 174, 224, 141, 175, 224, 149, 174, 224, 0, 8,
+			141, 175, 224, 163, 174, 224, 183, 174, 224, 135, 175, 224, 170, 174, 224, 0, 8, 141, 175, 224, 170, 174, 224, 131, 174, 224, 191, 174, 224, 183,
+			174, 224, 0, 8, 141, 175, 224, 176, 174, 224, 139, 175, 224, 170, 174, 224, 141, 175, 224, 170, 174, 224, 191, 174, 224, 176, 174, 224, 0, 8,
+			141, 175, 224, 178, 174, 224, 139, 175, 224, 181, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 174, 174, 224, 0, 8, 141, 175,
+			224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 0, 4, 2, 17, 66, 3, 140, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224,
+			174, 169, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 178, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 224, 174, 149, 224, 175, 129, 224, 174, 178, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174,
+			224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 175, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 32, 0, 224, 174, 191, 8,
+			2, 224, 174, 176, 224, 175, 136, 224, 174, 181, 0, 224, 174, 191, 224, 174, 176, 8, 2, 224, 174, 184, 3, 140, 34, 36, 0, 224, 174, 191,
+			224, 174, 175, 224, 175, 130, 224, 174, 159, 8, 2, 224, 174, 191, 3, 140, 57, 151, 139, 0, 4, 3, 140, 109, 0, 8, 2, 224, 174, 181,
+			224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 178, 224, 175, 139, 224, 174, 159, 0, 224, 175, 128, 224, 174, 154, 224, 174, 163, 224, 175,
+			141, 224, 174, 159, 8, 3, 140, 112, 89, 109, 66, 139, 148, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224,
+			174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 140, 118, 49, 49, 122, 65, 36, 66, 139, 148, 0, 224, 174, 190,
+			224, 174, 149, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 176, 3, 140, 118, 49, 139, 109, 0, 4, 224, 175, 141, 224, 174, 159, 1, 135,
+			174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 191, 3, 140, 140, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 176, 174, 224, 2,
+			224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 175,
+			0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 183, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 224, 174, 159, 8, 134,
+			175, 224, 183, 174, 224, 2, 224, 175, 129, 0, 224, 175, 141, 224, 174, 159, 8, 134, 175, 224, 183, 174, 224, 2, 224, 175, 136, 0, 224, 175,
+			141, 224, 174, 159, 8, 191, 174, 224, 156, 174, 224, 2, 224, 175, 129, 0, 4, 224, 175, 141, 224, 174, 159, 8, 129, 175, 224, 181, 174, 224,
+			191, 174, 224, 178, 174, 224, 139, 175, 224, 149, 174, 224, 3, 140, 140, 148, 0, 224, 175, 141, 224, 174, 159, 8, 129, 175, 224, 181, 174, 224,
+			191, 174, 224, 178, 174, 224, 139, 175, 224, 159, 174, 224, 0, 224, 175, 141, 224, 174, 159, 8, 129, 175, 224, 181, 174, 224, 191, 174, 224, 178,
+			174, 224, 190, 174, 224, 170, 174, 224, 0, 224, 175, 141, 224, 174, 159, 8, 129, 175, 224, 181, 174, 224, 191, 174, 224, 178, 174, 224, 190, 174,
+			224, 174, 174, 224, 0, 224, 175, 141, 224, 174, 159, 8, 129, 175, 224, 181, 174, 224, 191, 174, 224, 178, 174, 224, 190, 174, 224, 185, 174, 224,
+			0, 224, 175, 141, 224, 174, 159, 8, 178, 174, 224, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 109, 0, 7, 6, 1,
+			37, 0, 4, 1, 129, 175, 224, 164, 174, 224, 18, 68, 2, 224, 175, 138, 224, 174, 159, 3, 47, 0, 1, 135, 175, 224, 174, 174, 224, 133,
+			174, 224, 2, 224, 174, 191, 0, 1, 141, 175, 224, 149, 174, 224, 2, 17, 66, 0, 1, 141, 175, 224, 159, 174, 224, 2, 17, 66, 0, 1,
 			141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 175, 135, 224, 174, 181, 224, 175, 136, 0, 1, 141, 175, 224, 163, 174, 224,
 			128, 175, 224, 181, 174, 224, 2, 224, 175, 138, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 0, 1, 141, 175, 224, 168, 174, 224,
 			154, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 1, 141, 175, 224, 168, 174, 224, 175, 174, 224, 134, 175, 224, 156, 174, 224,
-			2, 224, 174, 191, 0, 1, 141, 175, 224, 170, 174, 224, 2, 17, 66, 0, 1, 141, 175, 224, 180, 174, 224, 134, 174, 224, 2, 224, 175, 129,
-			224, 174, 179, 224, 175, 136, 0, 1, 141, 175, 224, 184, 174, 224, 2, 17, 66, 0, 1, 142, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224,
-			175, 139, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 175, 0, 1, 154, 174, 224, 2, 224, 175, 141, 224, 174, 175, 0,
-			1, 154, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 129, 0, 1, 159, 174, 224, 141, 175, 224, 159, 174, 224, 154, 174, 224, 2, 224,
-			174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 164, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 170, 0,
-			1, 178, 174, 224, 174, 174, 224, 135, 175, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 0, 1, 181, 174, 224, 190, 174,
-			224, 170, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191, 0, 1, 190, 174, 224, 156, 174, 224, 129, 175, 224, 154, 174,
-			224, 2, 224, 174, 190, 0, 1, 190, 174, 224, 170, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0, 1, 191, 174,
-			224, 154, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0, 1, 191, 174, 224, 164, 174, 224, 133, 174, 224, 2, 224, 174, 191, 0,
-			1, 191, 174, 224, 168, 174, 224, 2, 224, 175, 141, 224, 174, 175, 0, 1, 191, 174, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 190, 0,
-			1, 191, 174, 224, 178, 174, 224, 178, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 181, 174, 224, 170, 174, 224, 2, 224, 175, 141, 224,
-			174, 176, 224, 174, 190, 0, 2, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0, 2, 224, 175, 130, 224, 174, 149, 224, 175, 141, 224, 174, 149,
-			0, 8, 2, 17, 66, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224,
-			174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224,
-			174, 154, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224,
-			174, 191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 175, 129, 32, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 175, 129, 32, 224, 174, 181, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174,
-			191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 32, 224, 174, 174, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224,
-			175, 129, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224,
-			175, 128, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 0,
-			8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141, 32, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141,
-			224, 174, 164, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 138,
-			224, 174, 159, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 178, 0, 8, 2,
-			224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 32, 0, 8,
-			2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 168, 224, 175,
-			141, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 159, 224, 174,
-			191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175,
-			135, 224, 174, 181, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 175,
-			135, 224, 174, 181, 224, 174, 176, 224, 175, 141, 32, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 178, 32, 0, 8, 2, 224, 175, 135,
-			224, 174, 181, 224, 174, 178, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 178, 224, 175, 135, 0, 8, 2,
-			224, 175, 135, 224, 174, 181, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 191,
-			224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190,
-			0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 175, 136, 0, 8, 128, 175, 224, 149, 174, 224, 2, 224, 174, 190, 0, 8, 128, 175, 224, 154,
-			174, 224, 2, 224, 174, 190, 0, 8, 128, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 168, 174, 224, 2,
-			224, 174, 190, 224, 174, 156, 224, 174, 191, 0, 8, 141, 175, 224, 168, 174, 224, 149, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191,
-			0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 168, 174, 224, 156, 174, 224, 174,
-			174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 168, 174, 224, 175, 174, 224, 141, 175, 224, 183, 174, 224, 129, 175, 224, 164, 174, 224, 2,
-			224, 174, 191, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 190,
-			174, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 129, 175, 224, 174,
-			174, 224, 2, 224, 174, 190, 224, 174, 156, 0, 8, 141, 175, 224, 174, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 178,
-			174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 174, 174, 224, 2,
-			224, 174, 190, 224, 174, 169, 0, 8, 149, 174, 224, 2, 18, 73, 224, 174, 156, 224, 174, 190, 0, 8, 154, 174, 224, 2, 224, 175, 128, 224,
-			174, 183, 0, 8, 174, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 174, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224,
-			174, 191, 0, 8, 176, 174, 224, 190, 174, 224, 170, 174, 224, 32, 141, 175, 224, 176, 174, 224, 190, 174, 224, 154, 174, 224, 176, 174, 224, 191,
-			174, 224, 170, 174, 224, 2, 224, 174, 191, 0, 8, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 175, 128, 0, 8, 178, 174, 224, 2,
-			224, 174, 190, 0, 8, 178, 174, 224, 170, 174, 224, 141, 175, 224, 183, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 181,
-			174, 224, 135, 175, 224, 176, 174, 224, 2, 224, 174, 191, 0, 8, 181, 174, 224, 141, 175, 224, 176, 174, 224, 190, 174, 224, 170, 174, 224, 2,
-			224, 174, 191, 0, 8, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 191, 174, 224, 164, 174, 224, 135, 175, 224, 181,
-			174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 191, 174, 224, 168,
-			174, 224, 2, 224, 175, 136, 0, 8, 191, 174, 224, 168, 174, 224, 2, 224, 175, 128, 224, 174, 183, 0, 8, 191, 174, 224, 168, 174, 224, 2,
-			224, 175, 135, 224, 174, 183, 0, 8, 191, 174, 224, 169, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 169,
-			174, 224, 181, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 169, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 0, 8, 191,
-			174, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174, 190, 0, 224, 174,
-			191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 135, 224, 174, 159, 224, 175, 141,
-			224, 174, 159, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 224, 174, 191, 8, 2,
-			224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 139, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178,
-			224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 181, 224, 175, 135, 224, 174, 164, 224, 174, 191, 0, 224, 174,
-			191, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139,
-			224, 174, 163, 0, 224, 175, 141, 1, 135, 174, 224, 2, 224, 174, 175, 224, 174, 190, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 1, 191,
-			174, 224, 164, 174, 224, 134, 174, 224, 2, 224, 174, 175, 0, 224, 175, 141, 2, 32, 224, 174, 164, 0, 224, 175, 141, 8, 130, 175, 224, 154,
-			174, 224, 174, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 130, 175, 224, 174, 174, 224, 2, 224, 174, 176,
-			0, 224, 175, 141, 8, 134, 175, 224, 156, 174, 224, 2, 224, 174, 174, 224, 174, 178, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 224, 175,
-			141, 8, 136, 175, 224, 174, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 175, 0, 224, 175, 141, 8, 170, 174, 224, 2, 224, 174, 176,
-			224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 8, 170, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141,
-			224, 174, 164, 0, 224, 175, 141, 8, 170, 174, 224, 2, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 8, 175, 174, 224, 191, 174, 224, 181,
-			174, 224, 139, 175, 224, 154, 174, 224, 0, 224, 175, 141, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 190, 174,
-			224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 190, 174, 224, 181, 174, 224, 2, 224, 174, 154, 224, 174, 178, 224, 175, 141, 224,
-			174, 175, 0, 224, 175, 141, 8, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174,
+			2, 224, 174, 191, 0, 1, 141, 175, 224, 168, 174, 224, 181, 174, 224, 133, 174, 224, 2, 224, 174, 191, 0, 1, 141, 175, 224, 170, 174, 224,
+			2, 17, 66, 0, 1, 141, 175, 224, 180, 174, 224, 134, 174, 224, 2, 224, 175, 129, 224, 174, 179, 224, 175, 136, 0, 1, 141, 175, 224, 184,
+			174, 224, 2, 17, 66, 0, 1, 142, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 175, 139, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
+			174, 191, 224, 174, 175, 0, 1, 143, 174, 224, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 0, 1, 154, 174, 224, 2, 224, 175, 141, 224,
+			174, 175, 0, 1, 154, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 129, 0, 1, 159, 174, 224, 141, 175, 224, 159, 174, 224, 154, 174,
+			224, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 1, 164, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224,
+			174, 170, 0, 1, 178, 174, 224, 174, 174, 224, 135, 175, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 0, 1, 181, 174,
+			224, 190, 174, 224, 170, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191, 0, 1, 190, 174, 224, 156, 174, 224, 129, 175,
+			224, 154, 174, 224, 2, 224, 174, 190, 0, 1, 190, 174, 224, 170, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0,
+			1, 191, 174, 224, 154, 174, 224, 2, 224, 175, 141, 224, 174, 176, 224, 174, 190, 0, 1, 191, 174, 224, 164, 174, 224, 133, 174, 224, 2, 224,
+			174, 191, 0, 1, 191, 174, 224, 168, 174, 224, 2, 224, 175, 141, 224, 174, 175, 0, 1, 191, 174, 224, 169, 174, 224, 133, 174, 224, 2, 224,
+			174, 190, 0, 1, 191, 174, 224, 178, 174, 224, 178, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 181, 174, 224, 170, 174, 224, 2, 224,
+			175, 141, 224, 174, 176, 224, 174, 190, 0, 2, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0, 2, 224, 175, 130, 224, 174, 149, 224, 175, 141,
+			224, 174, 149, 0, 8, 2, 17, 66, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 164, 0,
+			8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224,
+			174, 190, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224,
+			174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224,
+			174, 191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224,
+			174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
+			175, 129, 32, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141,
+			224, 174, 149, 224, 175, 129, 32, 224, 174, 181, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 129, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174,
+			178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 32, 224, 174, 174, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 0,
+			8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224,
+			174, 170, 224, 175, 141, 32, 224, 174, 170, 0, 8, 2, 224, 175, 128, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 128,
+			224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 129,
+			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141,
+			224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141, 32, 0, 8, 2, 224, 175, 130, 224, 174,
+			176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 175, 138, 224, 174, 159, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174,
+			176, 224, 174, 178, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 130, 224, 174,
+			176, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 32, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 168, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224,
+			174, 176, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 135, 224,
+			174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0,
+			8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224,
+			175, 129, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 224,
+			175, 141, 32, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 178, 32, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 178, 224, 174,
+			190, 224, 174, 174, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 178, 224, 175, 135, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174,
+			178, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8,
+			2, 224, 175, 135, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224, 174,
+			181, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8,
+			128, 175, 224, 149, 174, 224, 2, 224, 174, 190, 0, 8, 128, 175, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 128, 175, 224, 170, 174, 224,
+			154, 174, 224, 2, 224, 174, 190, 0, 8, 135, 175, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 156, 224, 174, 191, 0, 8, 136, 175, 224,
+			174, 174, 224, 2, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174,
+			190, 224, 174, 174, 224, 174, 176, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 175,
+			136, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 179, 224, 174, 191, 0, 8, 141, 175, 224,
+			168, 174, 224, 149, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175,
+			139, 224, 174, 183, 224, 174, 191, 224, 174, 159, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175, 139, 224, 174, 183, 224, 174,
+			191, 224, 174, 169, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175, 139, 224, 174, 183, 224, 175, 129, 0, 8, 141, 175, 224,
+			168, 174, 224, 154, 174, 224, 2, 224, 175, 139, 224, 174, 183, 224, 175, 136, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175,
+			139, 224, 174, 183, 224, 175, 141, 32, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175,
+			224, 168, 174, 224, 156, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 168, 174, 224, 174, 174, 224, 154, 174, 224, 2, 224,
+			174, 190, 0, 8, 141, 175, 224, 168, 174, 224, 175, 174, 224, 141, 175, 224, 183, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 191, 0,
+			8, 141, 175, 224, 168, 174, 224, 184, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174,
+			224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 175, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224,
+			174, 190, 0, 8, 141, 175, 224, 169, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0,
+			8, 141, 175, 224, 174, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 156, 0, 8, 141, 175, 224, 174, 174, 224, 174, 174,
+			224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 141, 175,
+			224, 178, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 8, 149, 174, 224, 2, 18, 73, 224, 174, 156, 224, 174,
+			190, 0, 8, 154, 174, 224, 2, 224, 175, 128, 224, 174, 183, 0, 8, 169, 174, 224, 156, 174, 224, 2, 224, 174, 190, 0, 8, 174, 174, 224,
+			129, 175, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 174, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 176, 174, 224,
+			190, 174, 224, 170, 174, 224, 32, 141, 175, 224, 176, 174, 224, 190, 174, 224, 154, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224,
+			174, 191, 0, 8, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 175, 128, 0, 8, 178, 174, 224, 2, 224, 174, 190, 0, 8, 178, 174,
+			224, 163, 174, 224, 141, 175, 224, 176, 174, 224, 181, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 178, 174, 224, 163, 174,
+			224, 141, 175, 224, 176, 174, 224, 181, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 190, 0, 8, 178, 174, 224, 170, 174, 224, 141, 175,
+			224, 183, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 178, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 191, 0,
+			8, 181, 174, 224, 135, 175, 224, 176, 174, 224, 2, 224, 174, 191, 0, 8, 181, 174, 224, 141, 175, 224, 176, 174, 224, 190, 174, 224, 170, 174,
+			224, 2, 224, 174, 191, 0, 8, 181, 174, 224, 170, 174, 224, 141, 175, 224, 183, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0,
+			8, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 191, 174, 224, 154, 174, 224, 141, 175, 224, 158, 174, 224, 176, 174,
+			224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 156, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 156, 174,
+			224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 191, 174, 224, 168, 174,
+			224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 175, 136, 0,
+			8, 191, 174, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 169, 0, 8, 191, 174, 224, 168, 174, 224, 2, 224, 175, 128, 224, 174, 183, 0,
+			8, 191, 174, 224, 168, 174, 224, 2, 224, 175, 135, 224, 174, 183, 0, 8, 191, 174, 224, 169, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224,
+			174, 190, 0, 8, 191, 174, 224, 169, 174, 224, 181, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 169, 174, 224, 191, 174, 224, 181, 174,
+			224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 174, 174, 224, 141, 175,
+			224, 184, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 174, 174, 224, 168, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 176, 174,
+			224, 154, 174, 224, 2, 224, 174, 190, 32, 0, 8, 191, 174, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 8, 191,
+			174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174, 190, 0, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 8, 191,
+			174, 224, 181, 174, 224, 149, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178,
+			224, 175, 139, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 191, 224, 174, 181, 224, 175, 135, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140,
+			224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 141, 175, 224, 184, 174, 224, 134, 174, 224, 2, 224, 174, 176, 0, 224, 175,
+			129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 163, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 175,
+			0, 224, 175, 141, 1, 135, 174, 224, 2, 224, 174, 175, 224, 174, 190, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 1, 191, 174, 224, 164,
+			174, 224, 134, 174, 224, 2, 224, 174, 175, 0, 224, 175, 141, 2, 32, 224, 174, 164, 0, 224, 175, 141, 8, 130, 175, 224, 154, 174, 224, 2,
+			224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 176,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 0, 224, 175,
+			141, 8, 130, 175, 224, 154, 174, 224, 174, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 130, 175, 224, 174,
+			174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 134, 175, 224, 156, 174, 224, 2, 224, 174, 174, 224, 174, 178, 224, 174, 190, 224, 174, 169,
+			224, 174, 191, 0, 224, 175, 141, 8, 135, 175, 224, 168, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 136, 175, 224, 174, 174, 224, 2,
+			224, 174, 176, 224, 175, 135, 224, 174, 175, 0, 224, 175, 141, 8, 170, 174, 224, 2, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			224, 174, 179, 0, 224, 175, 141, 8, 170, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 8, 170,
+			174, 224, 2, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 8, 175, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 191,
+			0, 224, 175, 141, 8, 175, 174, 224, 191, 174, 224, 181, 174, 224, 139, 175, 224, 154, 174, 224, 0, 224, 175, 141, 8, 190, 174, 224, 170, 174,
+			224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 190, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 190, 174, 224, 175, 174,
+			224, 2, 224, 174, 176, 224, 175, 128, 224, 174, 149, 0, 224, 175, 141, 8, 190, 174, 224, 181, 174, 224, 2, 224, 174, 154, 224, 174, 178, 224,
+			175, 141, 224, 174, 175, 0, 224, 175, 141, 8, 191, 174, 224, 156, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 0,
+			224, 175, 141, 8, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 191, 174, 224, 174, 174, 224, 129, 175, 224, 154, 174,
+			224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 191, 174, 224, 181, 174, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 8, 191, 174,
+			224, 181, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174,
 			170, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 3, 47, 34, 37, 48, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 170,
 			8, 2, 224, 175, 139, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 224, 174, 176, 224, 174, 170, 224, 174, 164, 224, 174, 191, 1, 154, 174,
 			224, 3, 47, 34, 109, 48, 109, 47, 37, 0, 224, 175, 141, 224, 174, 176, 224, 174, 178, 224, 175, 135, 224, 174, 149, 8, 191, 174, 224, 154,
@@ -32361,188 +44018,244 @@ FilesInMemory create_espeakdata_dicts () {
 			224, 174, 191, 224, 174, 175, 224, 175, 139, 224, 174, 170, 1, 142, 174, 224, 2, 224, 174, 191, 224, 174, 175, 3, 47, 37, 57, 119, 48, 0,
 			4, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 12, 3, 47, 47, 0, 224, 175, 141, 224, 174,
 			164, 1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 2, 17, 66, 0, 224, 175, 141, 224,
-			174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 224, 175, 141, 8,
-			191, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 3, 47, 47, 37, 0, 224, 175, 141, 224, 174, 164, 3, 47, 47, 109, 0, 224,
-			175, 141, 224, 174, 149, 1, 135, 175, 224, 170, 174, 224, 141, 175, 224, 174, 174, 224, 133, 174, 224, 3, 47, 49, 149, 0, 224, 175, 141, 224,
-			174, 164, 224, 175, 129, 8, 154, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 174, 191, 3, 47,
-			72, 0, 4, 1, 136, 175, 224, 179, 174, 224, 141, 175, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 169, 3, 47, 109, 0,
-			1, 141, 175, 224, 149, 174, 224, 0, 1, 141, 175, 224, 170, 174, 224, 0, 1, 141, 175, 224, 179, 174, 224, 190, 174, 224, 159, 174, 224, 141,
-			175, 224, 159, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 169, 0, 1, 141, 175, 224, 184, 174, 224, 0, 8, 0, 8, 2, 224, 174,
-			176, 224, 175, 129, 224, 174, 174, 224, 174, 191, 224, 174, 159, 0, 8, 129, 175, 224, 159, 174, 224, 168, 174, 224, 2, 224, 174, 159, 224, 175,
-			141, 224, 174, 159, 0, 8, 140, 175, 224, 149, 174, 224, 2, 224, 174, 174, 0, 8, 140, 175, 224, 149, 174, 224, 2, 224, 174, 174, 224, 174,
-			191, 0, 8, 141, 175, 224, 163, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 175, 136, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224,
-			154, 174, 224, 2, 32, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 176, 224, 175, 136, 0, 8, 141, 175,
-			224, 178, 174, 224, 135, 175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174, 224, 170, 174,
-			224, 2, 224, 174, 159, 0, 8, 141, 175, 224, 180, 174, 224, 128, 175, 224, 149, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0,
-			8, 170, 174, 224, 2, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 178, 224, 174, 191, 0, 4, 1, 141, 175, 224, 168, 174, 224, 169,
-			174, 224, 133, 174, 224, 3, 47, 149, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 181, 174, 224, 0, 8, 141, 175, 224, 168, 174, 224,
-			190, 174, 224, 154, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224,
-			2, 224, 174, 174, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 191, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 169, 224, 175, 129, 0, 4,
-			2, 17, 66, 3, 72, 0, 8, 2, 17, 66, 28, 17, 12, 0, 8, 2, 18, 73, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 154, 0, 8, 2, 224, 174, 190, 224, 174, 159,
-			224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 175, 0, 8, 2,
-			224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 190,
-			0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 164, 224, 175, 141,
-			0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 174, 0, 8, 2,
-			224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 129, 224, 174, 181, 0, 8, 2,
-			224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 139, 224, 174, 164, 224, 174, 176,
-			0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 32, 224, 174, 164, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174,
-			175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 174, 224, 174, 190, 0, 8,
-			2, 224, 174, 190, 224, 174, 175, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 190, 224, 174, 164, 224, 174,
-			191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 32, 224,
-			174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 32,
-			224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 32, 224, 174, 183, 224, 174,
-			191, 224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8,
-			2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174,
-			190, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174,
-			181, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 175,
-			135, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174,
-			170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175,
-			129, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
-			178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 135, 0, 8,
-			2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
-			181, 224, 174, 191, 224, 174, 156, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174,
-			159, 224, 174, 149, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174,
-			159, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 170, 0, 8,
-			2, 224, 174, 191, 224, 174, 159, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 128, 0, 8, 2, 224, 174, 191, 224, 174,
-			159, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174,
-			191, 224, 174, 159, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175,
-			129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 174, 0, 8,
-			2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174,
-			159, 224, 174, 191, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174,
-			169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 154, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174,
-			191, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 168, 224, 175, 141, 0, 8, 2, 224, 174,
-			191, 224, 174, 169, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174,
-			174, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 129, 224, 174, 154, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 135, 224, 174,
-			183, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174,
-			191, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 181, 0, 8, 2, 224, 174, 191, 224, 174,
-			176, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174,
-			191, 224, 174, 176, 224, 175, 140, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174,
-			178, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174,
-			191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 32, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 154, 0, 8, 2, 224,
-			174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0,
-			8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 175, 141, 224, 174, 175, 0,
-			8, 2, 224, 174, 191, 224, 174, 181, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 149, 224,
-			175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224,
-			174, 163, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 164, 0,
-			8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224,
-			175, 128, 224, 174, 170, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 180, 224,
-			174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 164, 224,
-			175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 175, 128, 224,
-			174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224,
-			175, 129, 224, 174, 159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 149, 0,
-			8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224,
-			175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 181, 224, 174, 190, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224,
-			175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 174, 0,
-			8, 2, 224, 175, 129, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 164, 224, 174, 169, 224, 174, 169, 0, 8, 2, 224,
-			175, 129, 224, 174, 156, 224, 174, 184, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
-			175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 174, 190, 224,
-			174, 175, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 174, 190, 224, 174, 183, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 174, 224, 174, 179, 224,
-			174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224,
-			174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 141, 224, 174, 183, 224, 175, 141, 224,
-			174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
-			175, 129, 224, 174, 176, 224, 174, 190, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224,
-			175, 139, 224, 174, 164, 224, 174, 169, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 175, 139, 224,
-			174, 164, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 153, 224, 175, 141, 0,
-			8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224,
-			175, 129, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 170, 224, 175, 141, 0,
-			8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224,
-			174, 183, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 154, 0, 8, 2, 224, 175, 130, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224,
-			175, 130, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224,
-			174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 179, 224,
-			175, 141, 32, 224, 174, 149, 224, 174, 191, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 179, 224, 175, 141, 32, 224, 174, 170, 224, 174,
-			177, 0, 8, 2, 224, 175, 130, 224, 174, 183, 0, 8, 2, 224, 175, 130, 224, 174, 183, 224, 174, 163, 224, 175, 136, 0, 8, 2, 224, 175,
-			130, 224, 174, 183, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174,
-			159, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 149, 0, 8, 2, 224, 175,
-			135, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 175, 135, 224, 174, 168, 224, 175,
-			141, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 138, 224, 174, 169, 224, 174, 191, 0, 8,
-			2, 224, 175, 138, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 174, 164, 224, 175,
-			138, 224, 174, 170, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174,
-			170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175,
-			134, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174, 179, 224, 174, 164, 224, 175, 138, 224, 174,
-			179, 0, 8, 2, 224, 175, 138, 224, 174, 179, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 175, 139, 224, 174, 154, 224, 175, 136, 0, 8,
-			2, 224, 175, 139, 224, 174, 183, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175,
-			139, 224, 174, 185, 224, 174, 190, 0, 8, 2, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175,
-			136, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
-			159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174,
-			159, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174,
-			163, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174, 164, 32, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224,
-			174, 174, 224, 175, 141, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 175, 135, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224,
-			174, 181, 224, 175, 135, 224, 174, 183, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 1, 133, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224,
-			174, 169, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 1, 191, 174, 224, 181, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0,
-			224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0,
-			4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 190, 3, 72, 34, 37, 0, 224,
-			174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 224, 174, 191, 224, 174, 178, 224,
-			174, 191, 224, 174, 170, 224, 175, 141, 8, 3, 72, 37, 55, 37, 48, 0, 224, 174, 191, 224, 174, 178, 224, 175, 128, 224, 174, 170, 224, 175,
-			141, 8, 3, 72, 37, 55, 112, 48, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 174, 224, 175, 136, 3, 72, 37, 81, 71, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174,
-			149, 224, 175, 141, 224, 174, 175, 224, 175, 134, 3, 72, 37, 81, 72, 0, 224, 174, 191, 224, 174, 159, 224, 174, 154, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 224, 174, 178, 224, 175, 141, 224, 174, 170, 8, 3, 72, 37, 141, 109, 89, 109, 68, 81, 109, 55, 48, 149, 0, 4, 224,
-			175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 174, 191, 224, 174, 154, 224, 175, 136, 3, 72, 72, 0, 224, 175, 141, 224, 174, 164, 1, 18,
-			68, 2, 224, 174, 191, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 129, 224, 174, 176, 224, 175, 141, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 130, 224, 174, 154, 0, 224, 175, 141, 224, 174,
-			164, 1, 18, 68, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175,
-			130, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181,
-			0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 154, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175,
-			135, 224, 174, 181, 224, 174, 164, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 181, 224, 174, 169, 0, 224, 175,
-			141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 159, 174,
-			224, 141, 175, 224, 159, 174, 224, 142, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164,
-			1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224,
-			174, 175, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0,
-			224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 181, 174, 224, 141, 175, 224, 181, 174, 224, 18, 68, 2, 224, 174, 191, 224, 174, 175, 224, 175,
-			139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 154, 224, 174, 191, 0, 224, 175, 141, 224,
-			174, 164, 1, 133, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181, 0, 224, 175, 141, 224, 174, 164, 1, 136, 175, 224,
-			181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 137, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 175,
-			139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 137, 174, 224, 2, 224, 175, 135, 224, 174, 154, 0, 224, 175, 141, 224, 174, 164, 1,
-			139, 175, 224, 175, 174, 224, 133, 174, 224, 2, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 141, 175, 224, 176, 174, 224, 181, 174, 224,
-			2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 174, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224,
-			175, 141, 224, 174, 164, 1, 176, 174, 224, 191, 174, 224, 154, 174, 224, 133, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 1,
-			178, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181, 0, 224, 175, 141, 224, 174, 164, 1,
-			178, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 1, 178, 174, 224,
-			191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224,
-			154, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224, 170, 174, 224, 137, 174, 224,
-			2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224,
-			175, 141, 224, 174, 164, 1, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 1,
-			191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224,
-			181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174,
-			224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 2, 224,
-			175, 136, 224, 174, 175, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0,
-			224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174, 224, 169, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224,
-			174, 163, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 224, 175, 141,
-			224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 0,
-			224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164,
-			8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 176, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175,
-			224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 176, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 8, 135, 175, 224, 181, 174,
-			224, 136, 175, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 8, 136, 175, 224, 181, 174, 224, 2, 224,
-			174, 191, 32, 0, 224, 175, 141, 224, 174, 164, 8, 136, 175, 224, 181, 174, 224, 2, 224, 175, 128, 224, 174, 184, 224, 175, 141, 224, 174, 181,
-			0, 224, 175, 141, 224, 174, 164, 8, 140, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8, 141,
-			175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141,
-			224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 8, 170, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175,
-			141, 224, 174, 164, 8, 170, 174, 224, 137, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8, 174, 174, 224, 2,
-			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2,
-			224, 174, 191, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 177, 0, 224, 175, 141, 224, 174, 164, 8, 190,
-			174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 224, 174,
-			164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 224, 174,
-			164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 168, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 8, 190,
-			174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 224, 175, 141, 224, 174,
-			164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 174, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181,
-			174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181,
-			174, 224, 2, 224, 175, 136, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224, 2,
-			224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224, 32,
-			141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224,
-			141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 224, 174, 191, 1, 191, 174, 224,
-			164, 174, 224, 134, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 0, 224, 175, 141, 224, 174, 164, 224,
-			175, 129, 1, 18, 68, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 1, 156, 174, 224, 190,
-			174, 224, 176, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 149, 174, 224, 129,
-			175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 4, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174, 224,
-			2, 224, 174, 169, 3, 72, 72, 109, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141,
+			174, 164, 8, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224,
+			181, 174, 224, 176, 174, 224, 141, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224,
+			174, 164, 8, 141, 175, 224, 176, 174, 224, 181, 174, 224, 176, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174,
+			191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224, 181, 174, 224, 176, 174, 224, 191, 174, 224,
+			149, 174, 224, 141, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8,
+			190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 224, 175, 141, 8, 191, 174, 224,
+			154, 174, 224, 2, 224, 174, 176, 224, 174, 190, 3, 47, 47, 37, 0, 4, 224, 175, 141, 224, 174, 164, 3, 47, 47, 109, 0, 224, 175, 141,
+			224, 174, 164, 8, 129, 175, 224, 170, 174, 224, 141, 175, 224, 174, 174, 224, 129, 175, 224, 177, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224,
+			174, 169, 0, 224, 175, 141, 224, 174, 170, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 3, 47, 48, 109,
+			0, 224, 175, 141, 224, 174, 149, 1, 135, 175, 224, 170, 174, 224, 141, 175, 224, 174, 174, 224, 133, 174, 224, 3, 47, 49, 148, 0, 224, 175,
+			141, 224, 174, 164, 224, 175, 129, 8, 154, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 174, 191,
+			3, 47, 72, 0, 4, 1, 133, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 181, 224, 174, 163, 3, 47, 109, 0, 1, 136, 175, 224,
+			179, 174, 224, 141, 175, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 169, 0, 1, 141, 175, 224, 149, 174, 224, 0, 1, 141,
+			175, 224, 159, 174, 224, 0, 1, 141, 175, 224, 170, 174, 224, 0, 1, 141, 175, 224, 176, 174, 224, 149, 174, 224, 133, 174, 224, 2, 224, 174,
+			178, 224, 174, 190, 0, 1, 141, 175, 224, 179, 174, 224, 190, 174, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 129, 175, 224, 174, 174, 224,
+			2, 224, 174, 169, 0, 1, 141, 175, 224, 184, 174, 224, 0, 8, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 191, 224,
+			174, 159, 0, 8, 129, 175, 224, 159, 174, 224, 168, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 139, 175, 224, 169, 174,
+			224, 174, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 0, 8, 140, 175, 224, 149, 174, 224, 2, 224,
+			174, 174, 0, 8, 140, 175, 224, 149, 174, 224, 2, 224, 174, 174, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 174, 174, 224, 2, 224,
+			174, 176, 224, 175, 136, 0, 8, 141, 175, 224, 168, 174, 224, 129, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 190, 0,
+			8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 32, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2,
+			224, 174, 159, 224, 175, 136, 0, 8, 141, 175, 224, 176, 174, 224, 130, 175, 224, 170, 174, 224, 149, 174, 224, 2, 224, 174, 178, 224, 174, 190,
+			0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 176, 224, 175, 136, 0, 8, 141, 175, 224, 178, 174, 224, 135,
+			175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174, 224, 170, 174, 224, 2, 224, 174, 159,
+			0, 8, 141, 175, 224, 180, 174, 224, 128, 175, 224, 149, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 170, 174, 224, 2,
+			224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 178, 224, 174, 191, 0, 224, 174, 154, 1, 190, 174, 224, 156, 174, 224, 133, 174, 224, 2,
+			224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 129, 3, 47, 109, 76, 109, 0, 4, 1, 141, 175, 224, 168, 174, 224, 169, 174, 224, 133,
+			174, 224, 3, 47, 148, 0, 8, 141, 175, 224, 168, 174, 224, 154, 174, 224, 181, 174, 224, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224,
+			154, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174,
+			174, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 0, 8, 141, 175, 224, 168, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 169, 224, 175, 129, 0, 8, 141, 175, 224,
+			168, 174, 224, 190, 174, 224, 164, 174, 224, 135, 175, 224, 181, 174, 224, 0, 4, 2, 17, 66, 3, 72, 0, 8, 2, 17, 66, 28, 17, 12,
+			0, 8, 2, 18, 73, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0,
+			8, 2, 224, 174, 190, 224, 174, 154, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224,
+			175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224,
+			174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32,
+			224, 174, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191,
+			224, 174, 175, 224, 174, 190, 32, 224, 174, 168, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 176, 0, 8,
+			2, 224, 174, 190, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174,
+			190, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174,
+			190, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174,
+			169, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174,
+			174, 224, 175, 139, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 32, 224, 174, 164, 224, 175, 130, 224,
+			174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224,
+			174, 175, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224,
+			174, 175, 224, 174, 190, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224,
+			174, 190, 224, 174, 176, 224, 174, 190, 32, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 139, 0, 8, 2,
+			224, 174, 190, 224, 174, 176, 224, 174, 190, 32, 224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174,
+			176, 224, 174, 190, 32, 224, 174, 183, 224, 174, 191, 224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224,
+			174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0,
+			8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224,
+			174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 190, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224,
+			174, 181, 224, 175, 128, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 175, 130, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224,
+			174, 181, 224, 175, 135, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 174, 224,
+			175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0,
+			8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224,
+			174, 191, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 177, 224, 175, 141, 224,
+			174, 177, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0,
+			8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 0,
+			8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 135, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 156, 224, 174, 175, 0,
+			8, 2, 224, 174, 191, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 149, 224, 174, 190, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224,
+			174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 168, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 170, 0, 8, 2, 224, 174, 191, 224,
+			174, 159, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 128, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 128, 224,
+			174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224,
+			175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224,
+			174, 159, 224, 175, 129, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
+			174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224,
+			175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 154, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224,
+			174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224,
+			174, 168, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224,
+			174, 191, 224, 174, 169, 224, 175, 129, 224, 174, 154, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 135, 224, 174, 183, 0, 8, 2, 224,
+			174, 191, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224,
+			175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 129, 224, 174, 181, 224,
+			175, 134, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 175, 139, 224,
+			174, 170, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 181, 0, 8, 2, 224, 174, 191, 224,
+			174, 176, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224,
+			174, 191, 224, 174, 176, 224, 175, 140, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
+			174, 178, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224,
+			174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 32, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 154, 0, 8, 2,
+			224, 174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 169,
+			0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 175, 141, 224, 174, 175,
+			0, 8, 2, 224, 174, 191, 224, 174, 181, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 149,
+			224, 175, 141, 224, 174, 183, 224, 174, 163, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 149, 224, 175, 141, 224, 174, 183,
+			224, 174, 191, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141,
+			224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 164, 0, 8, 2, 224, 175, 128,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 175, 128, 224, 174, 170,
+			0, 8, 2, 224, 175, 128, 224, 174, 170, 224, 175, 141, 32, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 191, 224, 174, 180, 224, 174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 175,
+			128, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174,
+			169, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174,
+			174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174,
+			159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 175,
+			128, 224, 174, 176, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 176, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174,
+			176, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			174, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174,
+			178, 224, 175, 139, 224, 174, 154, 224, 174, 169, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 181, 224, 174, 190, 224, 174, 179, 224, 174,
+			191, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 154, 224, 175, 141, 224, 174,
+			154, 224, 174, 174, 0, 8, 2, 224, 175, 129, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 164, 224, 174, 169, 224, 174,
+			169, 0, 8, 2, 224, 175, 129, 224, 174, 156, 224, 174, 184, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174,
+			159, 0, 8, 2, 224, 175, 129, 224, 174, 169, 224, 175, 141, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174,
+			169, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175,
+			129, 224, 174, 170, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 175, 129, 224, 174, 170, 224, 174, 190, 224, 174, 183, 0, 8, 2, 224, 175,
+			129, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174,
+			174, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174,
+			183, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 141, 224, 174,
+			183, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 183, 224, 175, 141, 224, 174,
+			159, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 190, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174,
+			190, 224, 174, 164, 224, 175, 141, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 175, 139, 224, 174, 164, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 175,
+			129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174,
+			181, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 175,
+			129, 224, 174, 176, 224, 175, 129, 224, 174, 181, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 136, 0, 8,
+			2, 224, 175, 129, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 183, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174,
+			154, 0, 8, 2, 224, 175, 130, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224, 174,
+			174, 0, 8, 2, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 175,
+			141, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 179, 224, 175, 141, 32, 224, 174, 149, 224, 174, 191, 224, 174, 179, 0,
+			8, 2, 224, 175, 130, 224, 174, 179, 224, 175, 141, 32, 224, 174, 170, 224, 174, 177, 0, 8, 2, 224, 175, 130, 224, 174, 183, 0, 8, 2,
+			224, 175, 130, 224, 174, 183, 224, 174, 163, 224, 175, 136, 0, 8, 2, 224, 175, 130, 224, 174, 183, 224, 174, 191, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141,
+			224, 174, 181, 0, 8, 2, 224, 175, 134, 224, 174, 181, 224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 149, 0, 8, 2, 224, 175, 135,
+			224, 174, 154, 0, 8, 2, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 175, 135, 224, 174, 181, 224, 175, 135, 224, 174, 168, 224, 175, 141,
+			0, 8, 2, 224, 175, 135, 224, 174, 185, 224, 174, 191, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2,
+			224, 175, 138, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 175, 138, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 136, 0, 8, 2,
+			224, 175, 138, 224, 174, 170, 224, 174, 164, 224, 175, 138, 224, 174, 170, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 175, 129, 224, 174, 149,
+			224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 175, 138,
+			224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 175, 138,
+			224, 174, 179, 224, 174, 164, 224, 175, 138, 224, 174, 179, 0, 8, 2, 224, 175, 138, 224, 174, 179, 224, 174, 181, 224, 175, 134, 0, 8, 2,
+			224, 175, 139, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 183, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 175, 141,
+			224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 185, 224, 174, 190, 0, 8, 2, 224, 175, 141, 224, 174, 176, 224, 174, 190,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 8, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 134, 175, 224, 170,
+			174, 224, 2, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174, 190, 224, 174, 184,
+			224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174,
+			191, 224, 174, 159, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175,
+			139, 224, 174, 163, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 156, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175,
+			141, 224, 174, 170, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174, 164, 32, 0, 224, 175, 129, 8, 2, 224,
+			174, 181, 224, 174, 174, 224, 175, 141, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 181, 224, 175, 135, 224, 174, 154, 0, 224, 175, 129,
+			8, 2, 224, 174, 181, 224, 175, 135, 224, 174, 183, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 1, 133, 174, 224, 2, 224, 174, 181, 224,
+			174, 190, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 1, 191, 174, 224, 181, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224,
+			174, 169, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224,
+			174, 176, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 190, 3, 72, 34,
+			37, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 224, 175, 129, 224,
+			174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 176, 3, 72, 34, 118, 81, 81, 0, 224,
+			174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 3, 72, 37, 55, 37, 48, 0, 224, 174, 191, 224, 174, 178, 224, 175,
+			128, 224, 174, 170, 224, 175, 141, 8, 3, 72, 37, 55, 112, 48, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 170, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 136, 3, 72, 37, 81, 71, 0, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 164, 8,
+			2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 175, 224, 175, 134, 3, 72, 37, 81, 72, 0, 224, 174, 191, 224, 174, 159, 224, 174,
+			154, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 178, 224, 175, 141, 224, 174, 170, 8, 3, 72, 37, 140, 109, 89, 109, 68, 81, 109,
+			55, 48, 148, 0, 4, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 174, 191, 224, 174, 154, 224, 175, 136, 3, 72, 72, 0, 224, 175,
+			141, 224, 174, 164, 1, 18, 68, 2, 224, 174, 191, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 129, 224, 174,
+			176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 130, 224, 174, 154,
+			0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 130, 224, 174, 176, 224, 174, 164, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164,
+			1, 18, 68, 2, 224, 175, 130, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 134, 224, 174, 175,
+			224, 175, 141, 224, 174, 181, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 154, 0, 224, 175, 141, 224, 174, 164,
+			1, 18, 68, 2, 224, 175, 135, 224, 174, 181, 224, 174, 164, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 181,
+			224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 1, 18, 68, 2, 224, 175, 135, 224, 174, 181, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164,
+			1, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 142, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0,
+			224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174,
+			224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224,
+			174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 181, 174, 224, 141, 175, 224, 181, 174, 224, 18, 68, 2, 224, 174,
+			191, 224, 174, 175, 224, 175, 139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 154, 224, 174,
+			191, 0, 224, 175, 141, 224, 174, 164, 1, 133, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181, 0, 224, 175, 141, 224,
+			174, 164, 1, 136, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 137, 174, 224, 2, 224, 174,
+			191, 224, 174, 175, 224, 175, 139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 137, 174, 224, 2, 224, 175, 135, 224, 174, 154, 0, 224,
+			175, 141, 224, 174, 164, 1, 139, 175, 224, 175, 174, 224, 133, 174, 224, 2, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 141, 175, 224,
+			176, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 174, 174, 224, 2, 224, 174,
+			191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 176, 174, 224, 191, 174, 224, 154, 174, 224, 133, 174, 224, 2, 224, 175, 136, 0, 224,
+			175, 141, 224, 174, 164, 1, 178, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 181, 0, 224,
+			175, 141, 224, 174, 164, 1, 178, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224,
+			174, 164, 1, 178, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 224,
+			174, 164, 1, 190, 174, 224, 154, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224,
+			163, 174, 224, 141, 175, 224, 163, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 1,
+			190, 174, 224, 170, 174, 224, 137, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224, 170, 174, 224,
+			141, 175, 224, 170, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 1, 190, 174, 224,
+			181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174,
+			175, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174,
+			190, 224, 174, 178, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224,
+			174, 191, 0, 224, 175, 141, 224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 175, 136, 0, 224, 175, 141,
+			224, 174, 164, 1, 191, 174, 224, 181, 174, 224, 133, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174,
+			224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174, 224, 169, 174, 224, 129, 175, 224, 170, 174,
+			224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 163, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 176, 174, 224, 191, 174, 224, 181, 174,
+			224, 2, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 154, 224,
+			175, 141, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224,
+			174, 154, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224,
+			175, 141, 32, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 169, 0, 224, 175,
+			141, 224, 174, 164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 0, 224, 175, 141, 224, 174,
+			164, 8, 130, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 176, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 130,
+			175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 176, 224, 175, 135, 0, 224, 175, 141, 224, 174, 164, 8, 130, 175, 224, 154,
+			174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 176, 224, 175, 141, 0, 224, 175, 141, 224, 174, 164, 8, 135, 175, 224, 181, 174, 224, 136,
+			175, 224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 8, 136, 175, 224, 181, 174, 224, 2, 224, 174, 191,
+			32, 0, 224, 175, 141, 224, 174, 164, 8, 136, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224,
+			175, 141, 224, 174, 164, 8, 136, 175, 224, 181, 174, 224, 2, 224, 175, 128, 224, 174, 184, 224, 175, 141, 224, 174, 181, 0, 224, 175, 141, 224,
+			174, 164, 8, 140, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224,
+			174, 174, 224, 176, 174, 224, 129, 175, 224, 154, 174, 224, 190, 174, 224, 183, 174, 224, 191, 174, 224, 18, 71, 174, 174, 224, 2, 224, 174, 191,
+			224, 174, 169, 224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 190,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 8, 169, 174, 224, 174,
+			174, 224, 2, 224, 174, 191, 224, 174, 159, 0, 224, 175, 141, 224, 174, 164, 8, 170, 174, 224, 129, 175, 224, 154, 174, 224, 2, 224, 174, 191,
+			224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8, 170, 174, 224, 137, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175, 141, 224, 174,
+			164, 8, 170, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 176, 0, 224, 175,
+			141, 224, 174, 164, 8, 174, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 224, 174,
+			164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 177,
+			0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149,
+			224, 174, 179, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 168, 224, 175, 141,
+			0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170,
+			224, 174, 159, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 174, 190, 224, 174, 159, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175,
+			224, 174, 174, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 170, 174, 224, 141, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 191,
+			224, 174, 175, 0, 224, 175, 141, 224, 174, 164, 8, 190, 174, 224, 183, 174, 224, 135, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176,
+			224, 174, 191, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 224, 175,
+			141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 176, 224, 175, 141, 0, 224, 175,
+			141, 224, 174, 164, 8, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 224, 174, 164, 8, 191,
+			174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 181,
+			174, 224, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 8, 191,
+			174, 224, 181, 174, 224, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 175, 141, 224, 174, 164, 8, 191,
+			174, 224, 181, 174, 224, 32, 141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 8,
+			191, 174, 224, 181, 174, 224, 141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 1, 191, 174, 224, 164, 174, 224, 134, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 0, 224,
+			175, 141, 224, 174, 164, 224, 175, 129, 1, 18, 68, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 224, 175,
+			129, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 0, 224, 175, 141, 224, 174, 164, 224, 175,
+			129, 1, 169, 174, 224, 135, 174, 224, 2, 224, 174, 181, 224, 175, 135, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 129, 175, 224, 159,
+			174, 224, 168, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 129, 175, 224, 180,
+			174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 149,
+			174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 164,
+			174, 224, 174, 174, 224, 2, 224, 174, 181, 224, 175, 135, 0, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 191, 174, 224, 180, 174, 224, 138,
+			175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 175, 135, 0, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174,
+			149, 8, 129, 175, 224, 174, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 3, 72, 72, 37, 34, 37, 49, 0, 4, 224, 175, 141,
+			224, 174, 164, 1, 18, 68, 2, 224, 174, 159, 224, 174, 181, 224, 175, 136, 3, 72, 72, 109, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175,
+			224, 170, 174, 224, 2, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 170, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141,
 			224, 174, 164, 1, 141, 175, 224, 176, 174, 224, 133, 174, 224, 2, 18, 74, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 164, 8,
 			129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 176, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 159, 224, 174, 191, 224, 174,
 			175, 224, 174, 169, 0, 224, 175, 141, 224, 174, 164, 8, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 176, 174, 224, 129, 175, 224,
@@ -32555,114 +44268,142 @@ FilesInMemory create_espeakdata_dicts () {
 			141, 175, 224, 176, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 3, 72, 72, 109, 34, 118, 72, 72, 0, 224, 175,
 			141, 224, 174, 164, 224, 175, 128, 224, 174, 154, 224, 175, 129, 8, 136, 175, 224, 181, 174, 224, 2, 224, 174, 181, 3, 72, 72, 112, 89, 0,
 			224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 191, 174, 224, 154, 174, 224, 3, 72, 72, 118, 50,
-			47, 149, 0, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 154, 8, 129, 175, 224, 176, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224,
-			174, 178, 3, 72, 72, 118, 76, 109, 0, 4, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 175, 174, 224, 3, 72, 72, 149, 0, 224, 175,
-			141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 0, 224, 175, 141, 224, 174, 164,
-			8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 154, 174, 224, 0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224,
-			174, 190, 224, 174, 164, 224, 174, 154, 224, 174, 191, 3, 72, 84, 0, 224, 175, 129, 224, 174, 181, 8, 2, 224, 174, 190, 224, 174, 176, 0,
-			224, 175, 129, 224, 174, 181, 8, 2, 224, 175, 136, 224, 174, 164, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 175, 129, 224, 174, 181,
-			224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 72, 84, 118, 48, 109, 0, 4, 224, 175, 129, 224, 174, 181, 224, 175, 136, 224, 174,
-			164, 8, 2, 32, 3, 72, 84, 134, 47, 109, 0, 224, 175, 129, 224, 174, 181, 224, 175, 136, 224, 174, 164, 8, 2, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 224, 175, 129, 224, 174, 181, 224, 175, 136, 224, 174, 164, 8, 2, 224, 174, 174, 0, 4,
-			3, 72, 109, 0, 8, 2, 18, 69, 224, 174, 190, 0, 8, 2, 28, 17, 0, 8, 2, 224, 174, 149, 224, 174, 164, 224, 174, 149, 0, 8,
-			2, 224, 174, 149, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
-			141, 224, 174, 183, 224, 174, 191, 224, 174, 163, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 163, 0, 8,
-			2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 163, 224, 174, 190, 0, 8, 2, 224, 174, 154, 224, 174, 149, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 154, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 154, 224, 174, 176, 224, 174,
-			164, 0, 8, 2, 224, 174, 154, 224, 174, 176, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 154, 224, 174, 176, 224, 174, 190, 0, 8,
-			2, 224, 174, 154, 224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 174,
-			159, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 159, 224, 174, 164, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174,
-			170, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 174, 159, 224, 174, 181, 224, 175,
-			136, 0, 8, 2, 224, 174, 159, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 170, 224, 174, 175,
-			224, 174, 178, 0, 8, 2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
-			174, 149, 0, 8, 2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 174, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174,
-			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8,
-			2, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 174, 224, 174, 169, 0, 8,
-			2, 224, 174, 159, 224, 174, 191, 224, 174, 174, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174,
-			169, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174,
-			190, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 154, 224, 175, 128, 224, 174, 178, 0, 8, 2, 224, 174,
-			159, 224, 175, 141, 224, 174, 154, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 163, 0, 8,
-			2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
-			154, 224, 175, 141, 224, 174, 154, 224, 175, 139, 224, 174, 177, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164, 224, 175,
-			141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
-			170, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 174, 0, 8, 2, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 224, 175, 129, 224, 174, 164, 224, 174, 170, 224, 174, 190, 224, 174, 163, 224, 174,
-			191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
-			191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175,
-			141, 224, 174, 170, 224, 174, 190, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 175, 129, 224, 174,
-			153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 184, 224, 175,
-			141, 224, 174, 181, 224, 174, 176, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 176, 224, 174, 190, 0, 8,
-			2, 224, 174, 169, 224, 174, 149, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 174, 154, 224, 175, 135, 224, 174,
-			149, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 174, 169, 224, 174, 169, 224, 175, 141, 224, 174, 156, 224, 175, 134, 224, 174, 175, 224, 174,
-			169, 0, 8, 2, 224, 174, 169, 224, 174, 170, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224, 174, 190, 224, 174,
-			154, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 174, 169, 224, 174, 178, 224, 174, 149, 224, 175,
-			141, 224, 174, 183, 224, 175, 141, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174,
-			154, 224, 175, 129, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8,
-			2, 224, 174, 169, 224, 175, 129, 224, 174, 154, 0, 8, 2, 224, 174, 169, 224, 175, 129, 224, 174, 183, 0, 8, 2, 224, 174, 169, 224, 175,
-			141, 224, 174, 174, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 175,
-			141, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174,
-			164, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 174, 175, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8,
-			2, 224, 174, 174, 224, 175, 141, 32, 18, 89, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 174, 191, 0, 8,
-			2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174,
-			191, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 159, 224, 174, 191, 18, 76, 224, 175, 141,
-			0, 8, 2, 224, 174, 175, 224, 174, 181, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 163, 224, 174, 168, 224, 175, 141, 224, 174, 164,
-			0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 175,
-			224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 174, 163, 224, 174, 191, 0, 8, 2,
-			224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169,
-			224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169, 224, 174, 164, 224, 175, 141, 0, 8, 2,
-			224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			224, 174, 191, 224, 174, 176, 224, 174, 174, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 153, 224, 175, 141, 0, 8, 2,
-			224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 154, 224, 175, 135, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174,
-			224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 176,
-			224, 175, 129, 224, 174, 174, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 224, 175, 129, 224, 174, 176,
-			0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174,
-			224, 174, 174, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174,
-			224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170,
-			224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 154, 0, 8, 2, 224, 174, 176,
-			224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136,
-			0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2,
-			224, 174, 181, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 175, 139, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 181,
-			224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 181, 224, 174, 174, 0, 8, 32, 191, 174, 224, 178, 174, 224, 190, 174, 224, 149, 174, 224,
-			133, 174, 224, 2, 224, 174, 179, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174,
-			179, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 141, 175, 224, 170, 174, 224,
-			154, 174, 224, 2, 224, 174, 174, 0, 4, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224,
-			174, 176, 32, 3, 72, 109, 34, 37, 72, 72, 0, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174,
-			191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8,
-			2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 0, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 8, 2, 224, 174,
-			190, 224, 174, 178, 3, 72, 109, 34, 40, 65, 109, 71, 0, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 8, 2, 224, 175, 129,
-			224, 174, 176, 224, 174, 191, 3, 72, 109, 34, 122, 65, 109, 48, 0, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 154,
-			224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 176, 3, 72, 109, 66, 141, 112, 89, 0, 224, 174, 170, 224, 174, 164, 224, 174, 170, 8, 3,
-			72, 109, 71, 109, 72, 109, 71, 149, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3,
-			72, 109, 72, 72, 0, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 72, 109, 81, 81,
-			0, 224, 174, 181, 224, 175, 129, 224, 174, 178, 224, 174, 164, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164, 3, 72, 109,
-			84, 122, 55, 109, 72, 118, 71, 0, 4, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224,
-			174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 154, 3, 72, 112, 34, 81, 81, 109, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 174, 224, 174, 191, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 8, 2, 224, 174, 174, 224, 175, 141, 32, 0, 4, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159, 224, 174, 169, 3, 72, 112, 34, 81, 81, 149,
-			0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 174, 224, 175, 129, 224, 174, 179,
-			224, 175, 141, 224, 174, 179, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190,
-			224, 174, 175, 224, 175, 129, 0, 224, 175, 140, 224, 174, 178, 224, 174, 164, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164,
-			3, 72, 135, 55, 109, 141, 118, 71, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 191, 174, 224, 168, 174, 224, 3, 72, 149, 0, 7,
-			6, 1, 41, 0, 4, 2, 17, 66, 3, 50, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 175, 0, 224, 174, 191, 8,
-			2, 224, 174, 175, 224, 175, 130, 0, 3, 50, 109, 0, 7, 6, 1, 42, 0, 2, 17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1,
-			43, 0, 1, 141, 175, 224, 174, 174, 224, 146, 174, 224, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 3, 10, 0, 8, 141, 175, 224, 170,
-			174, 224, 141, 175, 224, 180, 174, 224, 191, 174, 224, 174, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 183, 3, 10, 71, 0, 4, 1,
-			21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 3, 48, 0, 1, 21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 168,
-			224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 1, 21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224,
-			174, 169, 224, 174, 176, 224, 175, 141, 32, 0, 1, 21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174,
-			178, 224, 175, 141, 32, 0, 1, 128, 175, 224, 169, 174, 224, 2, 224, 174, 190, 0, 1, 128, 175, 224, 176, 174, 224, 2, 224, 174, 190, 0,
-			1, 129, 175, 224, 159, 174, 224, 136, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 129, 175, 224, 159, 174, 224, 141, 175, 224, 163, 174,
-			224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 1, 129, 175, 224, 164, 174, 224, 129, 175, 224, 180, 174, 224, 138, 175,
-			224, 170, 174, 224, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 0, 1, 129, 175, 224, 175, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224,
-			175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 129, 175, 224, 176, 174, 224, 135, 174, 224, 2, 224,
-			174, 190, 224, 174, 178, 0, 1, 129, 175, 224, 176, 174, 224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 129, 175, 224, 176, 174,
-			224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 1, 129, 175, 224, 176, 174, 224, 146, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224,
-			175, 141, 224, 174, 154, 0, 1, 129, 175, 224, 177, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224,
-			174, 179, 224, 175, 136, 0, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 169, 0, 1, 136, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224,
+			47, 148, 0, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 154, 8, 129, 175, 224, 176, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224,
+			174, 178, 3, 72, 72, 118, 76, 109, 0, 4, 224, 175, 141, 224, 174, 164, 1, 129, 175, 224, 175, 174, 224, 3, 72, 72, 148, 0, 224, 175,
+			141, 224, 174, 164, 8, 139, 175, 224, 169, 174, 224, 191, 174, 224, 181, 174, 224, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174,
+			224, 133, 174, 224, 2, 32, 18, 97, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 176, 174, 224, 141, 175,
+			224, 184, 174, 224, 0, 224, 175, 141, 224, 174, 164, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 154, 174, 224,
+			0, 4, 224, 175, 129, 224, 174, 181, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 154, 224, 174, 191, 3, 72, 84, 0, 224, 175, 129, 224,
+			174, 181, 8, 2, 224, 174, 190, 224, 174, 176, 0, 224, 175, 129, 224, 174, 181, 8, 2, 224, 175, 136, 224, 174, 164, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 0, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 72, 84, 118, 48, 109, 0, 4,
+			224, 175, 129, 224, 174, 181, 224, 175, 136, 224, 174, 164, 8, 2, 32, 3, 72, 84, 134, 47, 109, 0, 224, 175, 129, 224, 174, 181, 224, 175,
+			136, 224, 174, 164, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 224, 175, 129, 224, 174, 181, 224, 175,
+			136, 224, 174, 164, 8, 2, 224, 174, 174, 0, 4, 3, 72, 109, 0, 8, 2, 18, 69, 224, 174, 190, 0, 8, 2, 28, 17, 0, 8, 2,
+			224, 174, 149, 224, 174, 164, 224, 174, 149, 0, 8, 2, 224, 174, 149, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 191, 0, 8, 2,
+			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 163, 0, 8, 2, 224, 174, 149, 224, 175, 141,
+			224, 174, 183, 224, 174, 149, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 154, 224, 175, 128, 224, 174, 178, 0, 8, 2,
+			224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 163,
+			0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 224, 174, 163, 224, 174, 190, 0, 8, 2, 224, 174, 154, 224, 174, 149,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 154, 224, 174, 168, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 154,
+			224, 174, 174, 0, 8, 2, 224, 174, 154, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 154, 224, 174, 176, 224, 174, 164, 0, 8, 2,
+			224, 174, 154, 224, 174, 176, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 154, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 174, 154,
+			224, 174, 190, 224, 174, 170, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 174, 159, 224, 174, 149,
+			224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 159, 224, 174, 164, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 170, 224, 175, 129,
+			224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 181, 224, 175, 134, 0, 8, 2, 224, 174, 159, 224, 174, 181, 224, 175, 136, 0, 8, 2,
+			224, 174, 159, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 170, 224, 174, 175, 224, 174, 178, 0,
+			8, 2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 149, 0, 8,
+			2, 224, 174, 159, 224, 174, 191, 23, 32, 224, 174, 174, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149,
+			224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 177,
+			0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 159,
+			224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 174, 224, 174, 169,
+			0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 174, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175,
+			224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 8, 2, 224, 174, 159, 224, 174, 191, 224, 174, 175,
+			224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 154, 224, 175, 128, 224, 174, 178, 0, 8, 2,
+			224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 163,
+			0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159,
+			224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 134, 224, 174, 178, 224, 174, 181, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159,
+			224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 139, 224, 174, 177, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 164,
+			224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159,
+			224, 174, 170, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 174, 0, 8, 2,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 175, 224, 175, 129, 224, 174, 164, 224, 174, 170, 224, 174, 190, 224, 174, 163,
+			224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 174, 163, 224, 175, 141,
+			224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170,
+			224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170,
+			224, 174, 190, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 175, 129, 224, 174, 153, 224, 175, 141,
+			224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 184, 224, 175, 141, 224, 174, 181,
+			224, 174, 176, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 176, 224, 174, 190, 0, 8, 2, 224, 174, 164,
+			224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 175,
+			0, 8, 2, 224, 174, 169, 224, 174, 149, 224, 175, 139, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 174, 154, 224, 175, 135,
+			224, 174, 149, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 169,
+			224, 174, 169, 224, 175, 141, 224, 174, 156, 224, 175, 134, 224, 174, 175, 224, 174, 169, 0, 8, 2, 224, 174, 169, 224, 174, 170, 224, 174, 190,
+			224, 174, 178, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224, 174, 190, 224, 174, 154, 0, 8, 2, 224, 174, 169, 224, 174, 176, 224, 174, 190,
+			224, 174, 156, 0, 8, 2, 224, 174, 169, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 141, 224, 174, 174, 224, 174, 191,
+			0, 8, 2, 224, 174, 169, 224, 174, 178, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 191, 0, 8, 2,
+			224, 174, 169, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 169, 224, 174, 190, 224, 174, 164, 224, 174, 191,
+			224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 169, 224, 175, 129, 224, 174, 154, 0, 8, 2, 224, 174, 169, 224, 175, 129,
+			224, 174, 176, 0, 8, 2, 224, 174, 169, 224, 175, 129, 224, 174, 183, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 174, 224, 174, 168,
+			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 175, 0, 8, 2,
+			224, 174, 169, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174, 168,
+			224, 175, 141, 224, 174, 164, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174, 168, 224, 175, 141,
+			224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 174, 175, 224, 174, 168, 224, 175, 141, 224, 174, 164,
+			224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141, 32, 18, 89, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 159,
+			224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141,
+			224, 174, 170, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 159, 224, 174, 191,
+			18, 76, 224, 175, 141, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 174, 224,
+			175, 141, 224, 174, 174, 224, 174, 174, 0, 8, 2, 224, 174, 175, 224, 174, 181, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 163, 224,
+			174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224,
+			174, 178, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224,
+			174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 176, 224,
+			174, 191, 224, 174, 154, 224, 174, 169, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169, 224,
+			174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 176, 224,
+			174, 191, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
+			174, 176, 224, 174, 174, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224,
+			175, 129, 224, 174, 174, 224, 174, 154, 224, 175, 135, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 154, 224,
+			175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224,
+			174, 174, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224,
+			174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 174, 0,
+			8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 191, 0,
+			8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 163, 224, 174, 190, 0,
+			8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224,
+			175, 130, 224, 174, 154, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224,
+			174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 179, 224, 174, 181, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 181, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
+			175, 139, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 174, 154, 224, 175, 128, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 181, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 181, 224, 174, 174, 0, 8, 2, 224,
+			174, 181, 224, 175, 135, 0, 8, 32, 190, 174, 224, 164, 174, 224, 169, 174, 224, 156, 174, 224, 2, 224, 174, 179, 0, 8, 32, 191, 174, 224,
+			178, 174, 224, 190, 174, 224, 149, 174, 224, 133, 174, 224, 2, 224, 174, 179, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174,
+			153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174, 224, 2, 224, 174, 174, 0, 4, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 32, 3, 72, 109, 34, 37, 72, 72, 0, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224, 174, 176, 224,
+			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224,
+			174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 169, 0, 224, 174, 176, 224,
+			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 0, 224, 174, 176, 224,
+			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 176, 224,
+			175, 129, 224, 174, 174, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 178, 3, 72, 109, 34, 40, 65, 109, 71, 0, 224, 174, 176, 224, 175,
+			141, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 3, 72, 109, 34, 71, 71, 109, 0, 4,
+			224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
+			174, 176, 3, 72, 109, 34, 122, 65, 109, 48, 0, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 170, 8, 2, 224, 175, 129, 224, 174,
+			176, 224, 174, 191, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175,
+			135, 224, 174, 175, 3, 72, 109, 47, 47, 118, 47, 0, 224, 174, 178, 224, 175, 128, 224, 174, 164, 224, 175, 141, 8, 3, 72, 109, 55, 112,
+			47, 0, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 128, 224, 174, 154, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 176, 3, 72,
+			109, 66, 140, 112, 89, 0, 224, 174, 170, 224, 174, 164, 224, 174, 170, 8, 3, 72, 109, 71, 109, 72, 109, 71, 148, 0, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3, 72, 109, 72, 72, 0, 224, 174, 176, 224, 175, 141, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 72, 109, 81, 81, 0, 224, 174, 181, 224, 175, 129, 224, 174, 178, 224, 174, 164,
+			224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164, 3, 72, 109, 84, 122, 55, 109, 72, 118, 71, 0, 4, 224, 175, 128, 224,
+			174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 32, 224, 174, 154, 224, 175, 129, 224, 174, 174, 224, 174, 153, 224,
+			175, 141, 224, 174, 149, 224, 174, 178, 224, 174, 191, 3, 72, 112, 34, 81, 81, 109, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 8, 2, 32, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 169, 0, 224, 175, 128, 224,
+			174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 154, 0, 224,
+			175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 174, 224, 174, 191, 0, 224, 175, 128, 224,
+			174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 174, 224, 175, 141, 32, 0, 4, 224, 175, 128, 224, 174,
+			176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159,
+			224, 174, 169, 3, 72, 112, 34, 81, 81, 148, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 8,
+			2, 224, 174, 174, 224, 175, 129, 224, 174, 179, 224, 175, 141, 224, 174, 179, 0, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 175, 224, 175, 129, 0, 224, 175, 128, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224,
+			174, 163, 224, 174, 191, 8, 2, 224, 174, 175, 3, 72, 112, 49, 93, 109, 50, 0, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154,
+			224, 174, 163, 224, 174, 191, 8, 2, 224, 174, 175, 3, 72, 112, 140, 76, 109, 66, 0, 224, 175, 140, 224, 174, 178, 224, 174, 164, 224, 174,
+			190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 164, 3, 72, 135, 55, 109, 140, 118, 71, 0, 8, 141, 175, 224, 170, 174, 224, 154, 174,
+			224, 191, 174, 224, 168, 174, 224, 3, 72, 148, 0, 7, 6, 1, 41, 0, 4, 2, 17, 66, 3, 50, 0, 224, 174, 191, 8, 2, 224, 174,
+			175, 224, 174, 190, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 0, 3, 50, 109, 0, 7, 6, 1, 42, 0, 2,
+			17, 66, 3, 50, 0, 3, 50, 109, 0, 7, 6, 1, 43, 0, 1, 141, 175, 224, 174, 174, 224, 146, 174, 224, 2, 224, 175, 139, 224, 174,
+			164, 224, 175, 129, 3, 10, 0, 8, 141, 175, 224, 170, 174, 224, 141, 175, 224, 180, 174, 224, 191, 174, 224, 174, 174, 224, 164, 174, 224, 2,
+			224, 174, 190, 224, 174, 183, 3, 10, 71, 0, 4, 1, 21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 3, 48, 0, 1, 21, 2,
+			224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 168, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 1,
+			21, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 176, 224, 175, 141, 32, 0, 1, 21, 2, 224, 174, 191, 224, 174,
+			169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 1, 129, 175, 224, 159, 174, 224, 136, 174, 224, 2, 224,
+			174, 190, 224, 174, 159, 0, 1, 129, 175, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224,
+			174, 191, 0, 1, 129, 175, 224, 164, 174, 224, 129, 175, 224, 180, 174, 224, 138, 175, 224, 170, 174, 224, 2, 224, 175, 139, 224, 174, 149, 224,
+			175, 141, 0, 1, 129, 175, 224, 175, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 224, 174, 176, 0, 1, 129, 175, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 1, 129, 175, 224, 176, 174,
+			224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 129, 175, 224, 176, 174, 224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0,
+			1, 129, 175, 224, 176, 174, 224, 146, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 1, 129, 175, 224, 177, 174,
+			224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224, 175, 136, 0, 1, 133, 174, 224, 2, 224,
+			174, 190, 224, 174, 169, 0, 1, 133, 174, 224, 2, 224, 175, 135, 224, 174, 164, 0, 1, 136, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224,
 			175, 139, 224, 174, 159, 0, 1, 136, 175, 224, 154, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 136, 175, 224, 159, 174,
 			224, 142, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 1, 136, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 175, 0,
 			1, 136, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 1, 136, 175, 224, 178, 174, 224, 138, 175,
@@ -32673,2062 +44414,2678 @@ FilesInMemory create_espeakdata_dicts () {
 			174, 190, 224, 174, 178, 0, 1, 141, 175, 224, 163, 174, 224, 134, 174, 224, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224,
 			175, 136, 0, 1, 141, 175, 224, 163, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224,
 			175, 136, 0, 1, 141, 175, 224, 163, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 181, 224, 175, 136, 0,
-			1, 141, 175, 224, 163, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 180, 224, 175, 129, 0, 1, 141, 175, 224, 169, 174, 224, 159, 174,
-			224, 137, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 191, 224,
-			174, 177, 0, 1, 141, 175, 224, 169, 174, 224, 164, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 178, 0, 1, 141, 175, 224, 169, 174, 224,
-			174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 176, 174, 224, 129, 175, 224, 174, 174, 224,
-			2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 170, 174, 224, 2, 17, 66, 0, 1, 141, 175, 224, 174, 174, 224, 133, 174, 224, 2,
-			224, 175, 136, 224, 174, 175, 224, 174, 176, 0, 1, 141, 175, 224, 174, 174, 224, 135, 174, 224, 2, 224, 175, 128, 224, 174, 176, 224, 174, 191,
-			224, 174, 175, 224, 174, 178, 0, 1, 141, 175, 224, 174, 174, 224, 135, 174, 224, 2, 224, 175, 139, 224, 174, 154, 224, 174, 191, 224, 174, 183,
-			224, 174, 169, 0, 1, 141, 175, 224, 174, 174, 224, 142, 174, 224, 2, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178,
-			0, 1, 141, 175, 224, 174, 174, 224, 143, 174, 224, 2, 224, 174, 190, 32, 0, 1, 141, 175, 224, 174, 174, 224, 159, 174, 224, 135, 174, 224,
-			2, 224, 175, 134, 224, 174, 175, 224, 174, 176, 0, 1, 141, 175, 224, 174, 174, 224, 179, 174, 224, 135, 174, 224, 2, 224, 175, 134, 224, 174,
-			163, 224, 175, 141, 0, 1, 141, 175, 224, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 1, 141, 175, 224,
-			175, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 177, 224, 175, 136, 0, 1, 141, 175, 224, 176, 174, 224, 179, 174, 224,
-			181, 174, 224, 2, 224, 174, 191, 224, 174, 177, 224, 175, 136, 0, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 142, 174, 224,
-			2, 224, 174, 190, 224, 174, 176, 0, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174,
-			191, 224, 174, 159, 224, 174, 191, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 175, 224, 175, 129, 0, 1,
-			141, 175, 224, 178, 174, 224, 181, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174,
-			191, 0, 1, 141, 175, 224, 179, 174, 224, 134, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 1, 141, 175, 224, 184, 174, 224,
-			141, 175, 224, 169, 174, 224, 135, 174, 224, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 1, 146, 174, 224,
-			2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 1, 149, 174, 224, 2, 224, 174, 190, 0, 1, 154, 174, 224,
-			141, 175, 224, 158, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 1, 156, 174, 224, 190, 174, 224,
-			176, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 174, 169, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 129, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 159, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1,
-			159, 174, 224, 141, 175, 224, 163, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 1, 164, 174, 224, 2, 224, 174,
-			190, 0, 1, 170, 174, 224, 137, 174, 224, 2, 224, 175, 128, 224, 174, 159, 0, 1, 174, 174, 224, 2, 224, 174, 190, 0, 1, 174, 174, 224,
-			2, 224, 174, 190, 0, 1, 190, 174, 224, 149, 174, 224, 2, 224, 174, 190, 0, 1, 190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 1,
-			190, 174, 224, 164, 174, 224, 2, 224, 174, 190, 0, 1, 190, 174, 224, 164, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 1,
-			190, 174, 224, 174, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 18, 75, 146, 174, 224, 2, 224, 175, 134, 0, 1, 191, 174, 224, 149,
-			174, 224, 141, 175, 224, 149, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190,
-			0, 1, 191, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 0, 1, 191, 174, 224, 159, 174, 224, 134,
-			175, 224, 181, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 1, 191, 174, 224, 159, 174, 224, 135, 174, 224, 2, 224, 174, 190,
-			224, 174, 159, 0, 1, 191, 174, 224, 164, 174, 224, 129, 175, 224, 177, 174, 224, 137, 174, 224, 2, 224, 175, 130, 224, 174, 163, 224, 175, 141,
-			224, 174, 159, 0, 1, 191, 174, 224, 169, 174, 224, 2, 224, 174, 190, 0, 1, 191, 174, 224, 169, 174, 224, 141, 175, 224, 149, 174, 224, 133,
-			174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 191, 174, 224, 169, 174, 224, 191,
-			174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191,
-			224, 174, 176, 0, 1, 191, 174, 224, 176, 174, 224, 142, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 1, 191, 174, 224, 178,
-			174, 224, 141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 130,
-			224, 174, 176, 0, 1, 191, 174, 224, 178, 174, 224, 159, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141,
-			224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 191, 174, 224, 180, 174, 224, 138, 175, 224, 174, 174, 224, 2, 224, 175, 134, 224, 174, 175,
-			224, 174, 176, 224, 175, 141, 0, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 0,
-			2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175,
-			0, 2, 224, 174, 191, 224, 174, 177, 224, 174, 149, 224, 175, 129, 12, 0, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224,
-			175, 136, 0, 2, 224, 175, 129, 224, 174, 176, 0, 2, 224, 175, 129, 224, 174, 177, 25, 0, 2, 224, 175, 130, 224, 174, 154, 224, 175, 141,
-			224, 174, 154, 224, 174, 191, 0, 2, 224, 175, 130, 224, 174, 176, 0, 2, 224, 175, 134, 224, 174, 177, 0, 2, 224, 175, 135, 224, 174, 159,
-			224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 32, 0, 2, 224,
-			175, 135, 224, 174, 176, 224, 175, 141, 32, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224,
-			174, 190, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174,
-			224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 32, 12,
-			0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224,
-			174, 174, 224, 174, 178, 224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 129, 32, 12, 0,
-			2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 135, 32, 12, 0, 2, 224, 175, 138, 224,
-			174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129,
-			224, 174, 164, 224, 175, 135, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 139, 32, 12, 0, 2, 224,
-			175, 139, 224, 174, 149, 32, 0, 2, 224, 175, 139, 224, 174, 149, 224, 174, 181, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224,
-			175, 136, 32, 0, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 2, 224, 175, 139, 224, 174,
-			149, 224, 174, 191, 224, 174, 177, 0, 2, 224, 175, 139, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 2, 224, 175, 139,
-			224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 135, 32, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 174,
-			191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 12, 0, 2, 224, 175,
-			139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175,
-			141, 32, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224,
-			175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 135, 32, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 139, 32, 12, 0,
-			2, 224, 175, 139, 224, 174, 169, 32, 0, 2, 224, 175, 139, 224, 174, 169, 224, 174, 164, 224, 175, 129, 32, 0, 2, 224, 175, 139, 224, 174,
-			169, 224, 174, 190, 0, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 177, 12, 0, 2, 224, 175, 139, 224, 174, 175, 224, 174, 191,
-			224, 174, 176, 224, 175, 129, 0, 2, 224, 175, 139, 224, 174, 175, 224, 175, 141, 0, 2, 224, 175, 139, 224, 174, 178, 32, 0, 2, 224, 175,
-			139, 224, 174, 178, 224, 174, 149, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 154, 224, 175, 141, 32, 0, 2, 224, 175,
-			139, 224, 174, 178, 224, 174, 164, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
-			190, 224, 174, 169, 224, 175, 141, 32, 12, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 170, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224,
-			174, 178, 224, 174, 181, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 181, 224, 175, 135, 32,
-			0, 2, 224, 175, 139, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 32,
-			12, 0, 2, 224, 175, 139, 224, 174, 181, 224, 174, 164, 0, 8, 2, 17, 66, 0, 8, 2, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224,
-			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224,
-			174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 163, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
-			174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 32, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 18, 81, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 149, 224, 175, 129, 224, 174, 177, 224, 175, 136, 0, 8,
-			2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224,
-			174, 174, 224, 175, 135, 224, 174, 177, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 174, 224, 175, 135, 224, 174, 177, 224, 175, 141, 224, 174, 170, 224, 174, 159,
-			224, 175, 141, 224, 174, 159, 32, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
-			129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 174, 224, 175, 135, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 135, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224,
-			174, 170, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224,
-			174, 190, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224,
-			174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 183, 224, 175, 135, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224,
-			174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 159, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224,
-			174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 136, 0, 8, 2,
-			224, 174, 190, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 2,
-			224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 191,
-			224, 174, 159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 32, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 174, 174, 224, 174,
-			164, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 32, 224, 174, 174, 224, 175, 129, 224, 174, 185, 224, 174, 174, 224, 174, 164, 0,
-			8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224,
-			174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174, 159, 0, 8, 2, 224, 175, 135, 224,
-			174, 176, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
-			175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 169, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0,
-			8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224,
-			174, 184, 224, 175, 141, 32, 18, 87, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 8, 32, 129, 175, 224, 159,
-			174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 135, 0, 8, 32, 129, 175, 224, 159, 174, 224,
-			190, 174, 224, 175, 174, 224, 136, 175, 224, 179, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174,
-			170, 224, 175, 135, 0, 8, 128, 175, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 8, 128, 175, 224, 164, 174, 224,
-			2, 224, 174, 190, 0, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174,
-			174, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 129, 175, 224, 159, 174, 224, 141, 175, 224,
-			159, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 129, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174,
-			164, 0, 8, 129, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 164, 174, 224, 2, 224, 175, 138, 224, 174, 159, 224, 174, 191, 0, 8,
-			129, 175, 224, 177, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224,
-			2, 224, 174, 190, 224, 174, 164, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 177, 0, 8, 129, 175, 224,
-			177, 174, 224, 174, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 129, 175, 224, 177, 174, 224, 191, 174, 224,
-			154, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 8, 130, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 174,
-			174, 224, 175, 141, 32, 0, 8, 135, 175, 224, 159, 174, 224, 2, 224, 175, 141, 0, 8, 135, 175, 224, 168, 174, 224, 2, 224, 174, 190, 224,
-			174, 179, 0, 8, 136, 175, 224, 149, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 8, 136, 175, 224, 149, 174, 224, 2, 224,
-			175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 154, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 136, 175, 224, 159, 174,
-			224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 136, 175, 224, 159, 174, 224, 164, 174, 224, 2, 224, 175, 139, 224,
-			174, 159, 0, 8, 136, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 177, 174, 224, 129, 175, 224, 149, 174,
-			224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 136, 175, 224, 177, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224,
-			174, 191, 0, 8, 141, 175, 224, 149, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 12,
-			0, 8, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141,
-			175, 224, 163, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174,
-			174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 175,
-			134, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 136, 0, 8, 141, 175, 224, 169, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 175,
-			138, 224, 174, 176, 224, 175, 129, 0, 8, 141, 175, 224, 169, 174, 224, 181, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 8,
-			141, 175, 224, 174, 174, 224, 129, 175, 224, 164, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224,
-			135, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 174, 190, 32, 0, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 176, 174, 224, 181, 174,
-			224, 2, 224, 174, 190, 32, 0, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 177, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190,
-			32, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224,
-			149, 174, 224, 2, 224, 175, 134, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174,
-			154, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 184, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224,
-			2, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 174, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224,
-			154, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 141, 175, 224, 174, 174, 224, 178, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8,
-			141, 175, 224, 174, 174, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 174, 176, 0, 8, 141, 175, 224,
-			174, 174, 224, 178, 174, 224, 190, 174, 224, 178, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 141, 175, 224,
-			174, 174, 224, 180, 174, 224, 170, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224,
-			190, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 154, 224, 174, 191, 224, 174, 183, 224, 174, 169, 0, 8, 141, 175, 224, 174, 174, 224,
-			190, 174, 224, 149, 174, 224, 2, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224,
-			159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224,
-			178, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174,
-			191, 224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 175, 129, 0, 8, 141, 175, 224, 175, 174, 224,
-			134, 175, 224, 174, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 175, 174, 224, 138, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 8,
-			141, 175, 224, 178, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224,
-			138, 175, 224, 164, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 224, 174, 179, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224,
-			2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 178, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174,
-			190, 0, 8, 141, 175, 224, 178, 174, 224, 191, 174, 224, 183, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 180, 174, 224, 190, 174, 224,
-			164, 174, 224, 2, 224, 174, 190, 224, 174, 179, 0, 8, 141, 175, 224, 180, 174, 224, 190, 174, 224, 175, 174, 224, 2, 224, 174, 190, 224, 174,
-			163, 0, 8, 154, 174, 224, 141, 175, 224, 158, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
-			191, 224, 174, 176, 0, 8, 159, 174, 224, 141, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 159, 174, 224,
-			141, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 159, 174, 224, 141, 175, 224,
-			159, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 8, 159, 174, 224, 181, 174, 224,
-			2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 136, 0, 8, 164, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 175,
-			129, 224, 174, 176, 224, 174, 190, 224, 174, 163, 0, 8, 174, 174, 224, 141, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174,
-			176, 224, 174, 191, 0, 8, 175, 174, 224, 191, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174,
-			174, 224, 174, 190, 224, 174, 179, 0, 8, 176, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174,
-			174, 224, 174, 190, 224, 174, 179, 0, 8, 176, 174, 224, 190, 174, 224, 174, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174,
-			179, 224, 175, 136, 224, 174, 175, 0, 8, 176, 174, 224, 191, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174,
-			190, 224, 174, 163, 224, 174, 191, 0, 8, 178, 174, 224, 170, 174, 224, 2, 224, 175, 135, 224, 174, 176, 0, 8, 178, 174, 224, 191, 174, 224,
-			154, 174, 224, 2, 224, 175, 135, 224, 174, 176, 0, 8, 181, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 183, 0, 8, 190, 174, 224,
-			169, 174, 224, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 0, 8,
-			190, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 176, 0, 8, 191, 174, 224, 154, 174, 224, 141, 175, 224, 169, 174, 224,
-			191, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 191, 174, 224, 176, 174, 224, 154, 174, 224,
-			2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 0, 8, 191, 174, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8,
-			191, 174, 224, 177, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 191, 174, 224, 180, 174, 224,
-			181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 191, 174, 224, 183, 174, 224, 191, 174, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 1, 139, 175, 224, 176, 174, 224, 143, 174, 224, 2, 224, 174, 179, 224, 175, 135, 224, 174,
-			169, 0, 224, 174, 191, 1, 141, 175, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 224,
-			174, 191, 1, 141, 175, 224, 170, 174, 224, 129, 175, 224, 154, 174, 224, 176, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 174,
-			191, 224, 174, 168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 156, 174, 224, 190, 174, 224,
-			176, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1,
-			141, 175, 224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 18, 68, 2, 224, 174, 176, 224, 174, 179, 224, 174, 175, 0, 224, 174,
-			191, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 18, 68, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0,
-			224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 169, 174, 224, 156, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224,
-			174, 175, 224, 174, 176, 0, 224, 174, 191, 1, 141, 175, 224, 183, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 175, 224,
-			175, 139, 224, 174, 149, 0, 224, 174, 191, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			149, 224, 174, 159, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 178, 224, 174, 190, 224, 174, 164, 224, 174,
-			169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			149, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 175, 141, 224, 174, 158, 224, 175, 136, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174,
-			169, 224, 175, 141, 224, 174, 168, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 169, 224, 175, 141, 224, 174, 169, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174,
-			164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			154, 224, 175, 129, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 169, 224, 175,
-			136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 156, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			163, 224, 174, 190, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174,
-			163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 164, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174,
-			191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 128, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175,
-			135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 224, 174, 183, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 164, 224, 175, 139, 224, 174, 183, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
-			191, 224, 174, 175, 224, 175, 135, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 169, 224, 174, 190, 224, 174, 170, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 190, 224, 174, 163, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174,
-			190, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 174, 176, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 174, 224, 175, 139, 224, 174, 183, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 175, 224, 175, 139, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 175, 139, 224, 174,
-			154, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 175, 139, 224, 174, 156, 224, 174, 169, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 178, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 179, 224, 174, 175, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 128, 224, 174,
-			163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 128, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			181, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224, 174,
-			190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 185, 224, 174, 178, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
-			149, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175,
-			129, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 190, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 169, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224,
-			175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224,
-			174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
-			174, 175, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224,
-			174, 191, 224, 174, 175, 224, 174, 174, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141,
-			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176,
-			224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139,
-			224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 174, 191, 224, 174, 175,
-			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176,
-			224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 170, 224, 175, 141,
-			224, 174, 170, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 174, 0, 224, 174, 191, 8, 2,
-			224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190,
-			32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 174, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174,
-			184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 184, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 0,
-			224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191,
-			8, 2, 224, 174, 179, 224, 175, 128, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 135, 0, 224, 174, 191, 8, 128, 175,
-			224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8, 141, 175,
-			224, 170, 174, 224, 169, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174,
-			224, 174, 174, 224, 141, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174,
-			224, 176, 174, 224, 181, 174, 224, 2, 224, 174, 176, 18, 69, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174, 224,
-			190, 174, 224, 18, 71, 174, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149,
-			224, 174, 191, 224, 174, 164, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190,
-			224, 174, 169, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 159, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 175,
-			0, 224, 175, 141, 1, 139, 175, 224, 176, 174, 224, 143, 174, 224, 2, 224, 174, 179, 224, 175, 135, 224, 174, 169, 0, 224, 175, 141, 1, 141,
-			175, 224, 174, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184, 0, 224, 175, 141, 2, 32, 224, 174, 170, 0, 224, 175,
-			141, 2, 224, 174, 170, 0, 224, 175, 141, 2, 224, 174, 184, 0, 224, 175, 141, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224,
-			2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 224, 175, 141, 8, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 175,
-			128, 224, 174, 174, 0, 224, 175, 141, 8, 135, 175, 224, 149, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 224,
-			175, 141, 8, 139, 175, 224, 170, 174, 224, 0, 224, 175, 141, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 134,
-			224, 174, 184, 0, 224, 175, 141, 8, 149, 174, 224, 190, 174, 224, 178, 174, 224, 0, 224, 175, 141, 8, 190, 174, 224, 159, 174, 224, 141, 175,
-			224, 149, 174, 224, 141, 175, 224, 184, 174, 224, 134, 175, 224, 159, 174, 224, 0, 224, 175, 141, 8, 190, 174, 224, 174, 174, 224, 2, 224, 174,
-			179, 0, 224, 174, 191, 224, 174, 176, 1, 141, 175, 224, 184, 174, 224, 141, 175, 224, 149, 174, 224, 142, 174, 224, 2, 224, 174, 184, 3, 48,
-			34, 36, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 170, 8, 2, 224,
-			174, 190, 224, 174, 178, 3, 48, 34, 37, 50, 89, 37, 48, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 153, 224,
-			175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3, 48, 34, 37, 57, 109, 68, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174,
-			163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 176, 3, 48, 34, 37, 66, 140, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 48, 34, 37, 66, 140, 149, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 159, 8,
-			2, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 3, 48, 34, 37, 140, 0, 4, 224, 175, 129, 224, 174, 176, 224, 174, 131, 224,
-			174, 170, 8, 2, 18, 69, 224, 174, 176, 3, 48, 34, 39, 83, 109, 0, 224, 175, 129, 224, 174, 176, 224, 174, 170, 8, 2, 18, 69, 224,
-			174, 176, 0, 224, 175, 129, 224, 174, 176, 224, 174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 129, 224, 174, 176,
-			224, 175, 138, 224, 174, 170, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 129, 224, 174, 176, 224, 175, 138, 224, 174, 170, 224, 175, 138,
-			8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0,
-			224, 175, 141, 224, 174, 176, 224, 175, 138, 224, 174, 170, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 175, 138,
-			224, 174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 8, 2, 224,
-			174, 175, 224, 175, 135, 224, 174, 149, 3, 48, 34, 109, 47, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 149, 2, 224, 174, 190, 224, 174,
-			183, 3, 48, 34, 109, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 149, 8, 141, 175, 224, 170, 174, 224, 169, 174, 224, 190, 174, 224, 158,
-			174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 224, 174, 176, 224, 174, 149, 8, 169, 174, 224, 190, 174, 224, 158, 174, 224, 2, 224, 174, 190,
-			0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 154, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174,
-			176, 3, 48, 34, 109, 76, 0, 224, 174, 191, 224, 174, 176, 224, 174, 154, 8, 2, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 224, 174,
-			176, 224, 174, 154, 224, 175, 141, 8, 2, 224, 174, 169, 224, 175, 136, 3, 48, 34, 109, 76, 12, 37, 0, 224, 174, 191, 224, 174, 176, 224,
-			174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 178, 3, 48, 34, 118, 49, 140, 37, 49,
-			109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8,
-			3, 48, 34, 118, 84, 37, 141, 109, 66, 140, 149, 0, 224, 175, 141, 224, 174, 176, 224, 175, 139, 224, 174, 159, 8, 2, 224, 174, 190, 224,
-			174, 169, 3, 48, 34, 119, 47, 0, 224, 175, 129, 224, 174, 176, 224, 175, 139, 224, 174, 159, 8, 2, 224, 174, 190, 224, 174, 169, 3, 48,
-			34, 119, 140, 0, 224, 175, 129, 224, 174, 176, 224, 175, 130, 224, 174, 170, 8, 3, 48, 34, 123, 83, 149, 0, 224, 174, 191, 224, 174, 176,
-			224, 175, 136, 224, 174, 181, 224, 175, 135, 224, 174, 159, 8, 3, 48, 34, 134, 84, 114, 140, 149, 0, 224, 175, 134, 224, 174, 163, 224, 175,
-			141, 224, 174, 159, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 3, 48, 36, 66, 140, 109, 0, 4, 224,
-			175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 190, 32, 3, 48, 36, 67, 75, 0, 224, 175, 134, 224, 174, 158, 224,
-			175, 141, 224, 174, 154, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 0, 224, 174, 191, 224, 174, 149, 8, 128, 175, 224,
-			164, 174, 224, 2, 224, 174, 190, 3, 48, 37, 49, 0, 224, 174, 191, 224, 174, 159, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 178, 3,
-			48, 37, 140, 109, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 164, 23, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164,
-			12, 3, 48, 40, 47, 0, 4, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 149, 3, 48, 40, 47, 47, 109,
-			0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 174, 224, 175, 141, 32, 224, 174, 170, 224, 175, 129, 224, 174,
-			164, 224, 174, 191, 224, 174, 175, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 174, 224, 175, 141, 32, 224,
-			174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 129, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 176, 224,
-			174, 191, 224, 174, 154, 224, 174, 191, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 170,
-			8, 2, 224, 175, 129, 224, 174, 164, 3, 48, 40, 47, 47, 109, 65, 48, 0, 4, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18, 68,
-			2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 3, 48, 48, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18, 68, 2,
-			224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 149, 174, 224, 133, 174, 224, 2,
-			224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 149, 174, 224, 191, 174, 224, 164,
-			174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 154, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174,
-			191, 1, 154, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174,
-			170, 224, 174, 191, 1, 164, 174, 224, 141, 175, 224, 164, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190,
-			224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 164, 174, 224, 141, 175, 224, 164, 174, 224, 176, 174, 224, 2, 224, 174, 176,
-			224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 169, 174, 224, 174, 174, 224, 2, 224, 174, 176,
-			224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 178, 174, 224, 156, 174, 224, 2, 224, 174, 176,
-			224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 178, 174, 224, 191, 174, 224, 168, 174, 224, 2,
-			224, 174, 176, 224, 174, 170, 224, 175, 129, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 181, 174, 224, 164, 174, 224, 190, 174, 224, 175,
-			174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 154, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 181, 174, 224, 191,
-			174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174, 224, 18,
-			75, 146, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174,
-			224, 163, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174,
-			224, 164, 174, 224, 168, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191,
-			8, 191, 174, 224, 179, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141,
-			224, 174, 149, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 169, 3, 48, 49, 0, 224, 175, 141,
-			224, 174, 175, 224, 175, 130, 224, 174, 159, 1, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 176, 3, 48, 57, 152, 140, 109, 0,
-			224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 176, 174, 224, 170, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 3,
-			48, 71, 0, 224, 175, 141, 224, 174, 154, 8, 176, 174, 224, 2, 224, 174, 176, 3, 48, 76, 109, 0, 4, 1, 21, 2, 224, 174, 159, 224,
-			175, 141, 224, 174, 154, 12, 3, 48, 109, 0, 1, 128, 175, 224, 169, 174, 224, 2, 25, 0, 1, 128, 175, 224, 176, 174, 224, 2, 25, 0,
-			1, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 174, 224, 174, 190, 0, 1, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224,
-			174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 181, 224, 174, 191, 0, 1, 129, 175, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 149, 0,
-			1, 129, 175, 224, 176, 174, 224, 146, 174, 224, 2, 224, 174, 149, 0, 1, 129, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224,
-			174, 174, 224, 174, 190, 0, 1, 134, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 154, 224, 174, 169, 0, 1, 134, 174, 224, 2, 224,
-			174, 176, 224, 175, 135, 224, 174, 183, 224, 174, 169, 0, 1, 136, 175, 224, 164, 174, 224, 170, 174, 224, 2, 224, 174, 164, 224, 175, 136, 0,
-			1, 137, 174, 224, 2, 224, 174, 168, 224, 174, 191, 224, 174, 183, 0, 1, 137, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 168, 224,
-			174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 154, 0, 1, 139, 175, 224, 159, 174, 224, 141, 175, 224, 149, 174, 224, 134, 174, 224, 2, 224,
-			174, 184, 0, 1, 139, 175, 224, 175, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 139, 175, 224, 178, 174,
-			224, 133, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 140, 175, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 164, 224,
-			174, 191, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 180, 224, 174, 191, 0, 1, 141, 175, 224, 169, 174,
-			224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 149, 224, 174, 178, 0, 1, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224,
-			174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 0, 1, 141, 175, 224, 169, 174, 224, 168, 174, 224, 2, 224, 174, 149, 224, 174, 178, 0,
-			1, 141, 175, 224, 169, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 149, 224, 174, 178, 0, 1, 141, 175, 224, 169, 174, 224, 191, 174,
-			224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 12, 0, 1, 141, 175, 224, 170, 174, 224, 0,
-			1, 141, 175, 224, 174, 174, 224, 176, 174, 224, 149, 174, 224, 2, 224, 174, 159, 0, 1, 141, 175, 224, 174, 174, 224, 176, 174, 224, 149, 174,
-			224, 2, 224, 174, 177, 224, 175, 141, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 164, 224, 175, 141, 0, 1, 141, 175,
-			224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 174, 0, 1, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 169, 224, 174, 190, 0,
-			1, 147, 174, 224, 2, 224, 174, 169, 0, 1, 149, 174, 224, 2, 25, 0, 1, 159, 174, 224, 181, 174, 224, 2, 224, 174, 149, 224, 175, 129,
-			224, 174, 164, 224, 174, 191, 0, 1, 159, 174, 224, 181, 174, 224, 2, 224, 174, 180, 0, 1, 164, 174, 224, 0, 1, 174, 174, 224, 0, 1,
-			174, 174, 224, 2, 25, 0, 1, 176, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
-			174, 169, 224, 174, 191, 0, 1, 176, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 224, 174, 176, 224, 174, 174, 0, 1, 176, 174, 224, 191, 174, 224, 159, 174, 224, 141, 175, 224, 183, 174, 224, 190, 174,
-			224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 190, 174, 224, 149, 174, 224, 2, 25, 0, 1, 190, 174, 224, 164,
-			174, 224, 2, 25, 0, 1, 190, 174, 224, 174, 174, 224, 2, 25, 0, 1, 190, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175,
-			224, 164, 174, 224, 137, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 191, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224, 174, 163, 224,
-			174, 191, 0, 1, 191, 174, 224, 169, 174, 224, 2, 25, 0, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 25, 0, 2, 224, 174, 159, 0,
-			2, 224, 174, 159, 224, 174, 191, 0, 2, 224, 174, 177, 224, 175, 141, 224, 174, 177, 224, 174, 191, 32, 0, 8, 0, 8, 2, 224, 174, 159,
-			224, 175, 141, 224, 174, 159, 224, 174, 169, 32, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 32, 0, 8, 2, 224,
-			174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 158, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224,
-			174, 164, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 0, 8, 2,
-			224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170,
-			224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 174, 176,
-			224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 183, 0, 8, 32, 18, 79, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 153,
-			224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 32, 18, 79, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224, 175, 141,
-			0, 8, 32, 18, 79, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 174, 0, 8, 128, 175, 224, 164, 174, 224, 2, 224, 174, 177,
-			224, 175, 141, 224, 174, 177, 0, 8, 129, 175, 224, 149, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 129,
-			175, 224, 149, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 129, 175, 224, 159,
-			174, 224, 130, 175, 224, 174, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 141, 0, 8, 129, 175, 224, 159,
-			174, 224, 138, 174, 224, 2, 224, 174, 175, 224, 174, 191, 224, 174, 176, 0, 8, 129, 175, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 129,
-			175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 179, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 149, 224, 175, 129,
-			224, 174, 164, 224, 174, 191, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 175, 128,
-			224, 174, 178, 224, 174, 169, 224, 175, 136, 0, 8, 136, 175, 224, 159, 174, 224, 168, 174, 224, 2, 224, 174, 175, 224, 174, 191, 224, 174, 177,
-			224, 175, 141, 224, 174, 154, 224, 174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191,
-			224, 174, 181, 0, 8, 141, 175, 224, 169, 174, 224, 178, 174, 224, 168, 174, 224, 2, 224, 174, 175, 0, 8, 141, 175, 224, 169, 174, 224, 191,
-			174, 224, 164, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2,
-			224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 169, 224, 174, 191, 32, 0, 8,
-			141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224,
-			149, 174, 224, 2, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224,
-			2, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 178, 224, 175, 141, 0, 8,
-			141, 175, 224, 174, 174, 224, 170, 174, 224, 2, 224, 174, 176, 224, 175, 141, 32, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174,
-			224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 183, 224, 174, 169, 0, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 179, 174, 224, 129, 175,
-			224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 176, 224,
-			175, 129, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174,
-			224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 149, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224,
-			174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 0, 8, 154, 174, 224, 190, 174, 224, 178, 174, 224, 136, 175, 224, 149, 174,
-			224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 176, 174, 224, 191, 174, 224, 159, 174, 224, 141, 175, 224, 183, 174, 224, 190, 174, 224, 176, 174,
-			224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 181, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 164, 0, 8, 190, 174, 224, 181, 174,
-			224, 2, 224, 174, 184, 0, 8, 191, 174, 224, 154, 174, 224, 191, 174, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 178, 0,
-			8, 191, 174, 224, 163, 174, 224, 174, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 181, 0, 8, 191, 174, 224, 178, 174,
-			224, 146, 174, 224, 2, 224, 174, 176, 224, 174, 170, 224, 175, 141, 0, 8, 191, 174, 224, 179, 174, 224, 146, 174, 224, 2, 224, 174, 176, 224,
-			174, 170, 224, 175, 141, 0, 8, 191, 174, 224, 183, 174, 224, 191, 174, 224, 176, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
-			174, 191, 224, 174, 169, 224, 174, 191, 0, 4, 224, 174, 164, 1, 129, 175, 224, 154, 174, 224, 170, 174, 224, 2, 224, 174, 191, 3, 48, 109,
-			47, 0, 224, 174, 164, 1, 190, 174, 224, 156, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191, 0, 224, 174, 164, 224,
-			175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 4, 224, 174, 164, 224, 174, 191, 1, 129, 175,
-			224, 149, 174, 224, 176, 174, 224, 3, 48, 109, 47, 37, 0, 224, 174, 164, 224, 174, 191, 1, 129, 175, 224, 164, 174, 224, 135, 175, 224, 154,
-			174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224, 149, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 0, 224,
-			174, 164, 224, 174, 191, 1, 156, 174, 224, 149, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 159, 174, 224, 129, 175, 224, 149, 174, 224, 174,
-			174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 159, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 135, 175, 224, 181, 174, 224, 0, 224,
-			174, 164, 224, 174, 191, 1, 163, 174, 224, 149, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 190, 174, 224, 149, 174, 224, 191, 174, 224, 170,
-			174, 224, 141, 175, 224, 174, 174, 224, 133, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 190, 174, 224, 164, 174, 224, 128, 175, 224, 154, 174,
-			224, 0, 224, 174, 164, 224, 174, 191, 1, 190, 174, 224, 175, 174, 224, 136, 175, 224, 179, 174, 224, 181, 174, 224, 0, 224, 174, 164, 224, 174,
-			191, 1, 190, 174, 224, 175, 174, 224, 141, 175, 224, 164, 174, 224, 191, 174, 224, 181, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 191, 174,
-			224, 163, 174, 224, 176, 174, 224, 164, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 191, 174, 224, 174, 174, 224, 141, 175, 224, 183, 174, 224,
-			141, 175, 224, 149, 174, 224, 178, 174, 224, 0, 224, 174, 164, 8, 141, 175, 224, 156, 174, 224, 178, 174, 224, 3, 48, 109, 47, 149, 0, 4,
-			224, 174, 170, 2, 224, 174, 190, 3, 48, 109, 48, 0, 224, 174, 170, 224, 175, 141, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 0, 224,
-			174, 170, 2, 25, 3, 48, 109, 48, 109, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175,
-			141, 224, 174, 159, 1, 133, 174, 224, 3, 48, 118, 34, 65, 36, 50, 140, 149, 0, 224, 174, 190, 224, 174, 170, 2, 224, 174, 190, 3, 48,
-			118, 48, 0, 224, 174, 190, 224, 174, 170, 2, 25, 3, 48, 118, 48, 109, 0, 224, 174, 190, 224, 174, 175, 224, 174, 191, 224, 174, 163, 224,
-			175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 133, 174, 224, 3, 48, 118,
-			57, 37, 66, 140, 65, 36, 50, 140, 149, 0, 4, 224, 174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224, 174, 191, 8, 2, 224, 174,
-			176, 3, 48, 118, 66, 37, 81, 0, 224, 174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8,
-			2, 224, 174, 176, 0, 4, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 153, 224, 175, 141, 3, 48, 118, 71, 109, 0, 224, 174, 190, 224,
-			174, 170, 8, 2, 224, 174, 164, 224, 175, 141, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 168, 224, 174, 190, 224, 174, 154, 0, 224,
-			174, 190, 224, 174, 170, 8, 2, 224, 174, 174, 0, 224, 174, 190, 224, 174, 170, 224, 174, 181, 224, 174, 191, 224, 174, 174, 224, 175, 139, 224,
-			174, 154, 224, 174, 169, 8, 3, 48, 118, 71, 109, 84, 37, 65, 119, 76, 109, 0, 224, 174, 190, 224, 174, 154, 224, 174, 191, 224, 174, 159,
-			8, 134, 175, 224, 159, 174, 224, 3, 48, 118, 89, 37, 140, 149, 0, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 170, 8, 2, 224,
-			174, 164, 3, 48, 118, 89, 122, 48, 109, 0, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 159, 1, 141, 175, 224, 176, 174, 224, 143,
-			174, 224, 3, 48, 119, 34, 140, 149, 0, 224, 175, 141, 224, 174, 159, 1, 21, 3, 48, 140, 149, 0, 4, 1, 18, 67, 3, 48, 149, 0,
-			1, 136, 175, 224, 159, 174, 224, 168, 174, 224, 0, 1, 141, 175, 224, 174, 174, 224, 191, 174, 224, 178, 174, 224, 146, 174, 224, 0, 1, 141,
-			175, 224, 176, 174, 224, 159, 174, 224, 135, 174, 224, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 32, 0, 1, 141, 175, 224, 178,
-			174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 154, 174, 224, 0, 8, 128, 175, 224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174,
-			224, 0, 8, 136, 175, 224, 178, 174, 224, 191, 174, 224, 168, 174, 224, 0, 8, 141, 175, 224, 169, 174, 224, 175, 174, 224, 170, 174, 224, 0,
-			8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 149, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 138, 175, 224, 154, 174, 224, 0, 8, 141,
-			175, 224, 178, 174, 224, 149, 174, 224, 191, 174, 224, 181, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 175, 174, 224, 134, 175, 224, 154, 174,
-			224, 0, 4, 1, 32, 46, 32, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191, 32, 46, 32, 224, 174, 154, 224, 174, 191, 3, 71, 0, 1,
-			32, 129, 175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 164, 174,
-			224, 141, 175, 224, 164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 129, 175, 224, 164,
-			174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174, 224, 141,
-			175, 224, 153, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 141, 175, 224, 169, 174, 224,
-			191, 174, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174,
-			181, 0, 1, 32, 164, 174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 164, 174,
-			224, 141, 175, 224, 164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 164, 174, 224, 141,
-			175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 153,
-			174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 175, 174, 224, 136, 175, 224, 159, 174, 224,
-			129, 175, 224, 169, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174,
-			190, 224, 174, 181, 0, 1, 32, 175, 174, 224, 136, 175, 224, 159, 174, 224, 129, 175, 224, 169, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174,
-			224, 141, 175, 224, 153, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 128, 175, 224, 154, 174,
-			224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 129, 175, 224, 181, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224,
-			175, 141, 0, 1, 128, 175, 224, 154, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 148, 174, 224, 2, 224, 174, 191, 224,
-			174, 169, 224, 175, 141, 0, 1, 133, 174, 224, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 1, 141, 175, 224, 169, 174,
-			224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 1, 141, 175, 224, 169, 174, 224, 135, 174, 224, 2, 224, 175, 129, 224,
-			174, 177, 0, 1, 141, 175, 224, 170, 174, 224, 191, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 137, 174, 224, 2, 224, 174, 190, 224,
-			174, 149, 0, 1, 141, 175, 224, 174, 174, 224, 2, 17, 66, 224, 174, 159, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 174, 190, 0, 1,
-			141, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 174,
-			191, 224, 174, 169, 224, 175, 141, 32, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 190, 0, 1, 141, 175,
-			224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 154, 224,
-			175, 141, 224, 174, 154, 224, 174, 191, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 1, 141, 175, 224, 174, 174,
-			224, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 1, 141, 175, 224, 174, 174, 224, 146, 174, 224, 2, 224,
-			175, 139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 0, 1, 141, 175, 224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175,
-			224, 164, 174, 224, 133, 174, 224, 2, 224, 175, 135, 224, 174, 176, 224, 175, 141, 0, 1, 141, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224,
-			174, 169, 224, 175, 141, 32, 0, 1, 141, 175, 224, 177, 174, 224, 164, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 149,
-			0, 1, 141, 175, 224, 177, 174, 224, 175, 174, 224, 135, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 178, 0, 1, 141, 175, 224, 183,
-			174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 129, 0, 1, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181,
-			0, 1, 149, 174, 224, 141, 175, 224, 149, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 1, 156, 174, 224, 190, 174,
-			224, 176, 174, 224, 2, 224, 175, 139, 224, 174, 149, 0, 1, 164, 174, 224, 2, 17, 66, 0, 1, 174, 174, 224, 2, 17, 66, 0, 1, 174,
-			174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 163, 0, 1, 190, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176,
-			174, 224, 148, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 179,
-			174, 224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 149, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 176,
-			224, 174, 164, 0, 1, 190, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 191, 174, 224, 156, 174, 224, 2, 224, 174, 190, 224, 174, 164,
-			224, 175, 141, 0, 1, 190, 174, 224, 164, 174, 224, 174, 174, 224, 18, 71, 133, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174,
-			224, 164, 174, 224, 174, 174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 174, 174, 224, 190, 174, 224, 178, 174,
-			224, 141, 175, 224, 184, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 181, 174, 224, 168, 174, 224, 2, 224,
-			174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 2, 17, 66, 0, 8, 2, 17, 66, 28, 17, 12, 0, 8, 2, 18, 72, 224, 174, 178, 224,
-			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224,
-			174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 174, 0,
-			8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 181, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 128, 224,
-			174, 176, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 149, 224,
-			175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224,
+			1, 141, 175, 224, 163, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 180, 224, 175, 129, 0, 1, 141, 175, 224, 169, 174, 224, 137, 174,
+			224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 142, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175,
+			224, 169, 174, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 159, 174, 224, 137, 174,
+			224, 2, 224, 174, 191, 224, 174, 177, 0, 1, 141, 175, 224, 169, 174, 224, 164, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 178, 0, 1,
+			141, 175, 224, 169, 174, 224, 164, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 164, 174, 224,
+			135, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 169, 174, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174,
+			159, 0, 1, 141, 175, 224, 169, 174, 224, 176, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224,
+			169, 174, 224, 181, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 170, 174, 224, 2, 17, 66, 0, 1, 141, 175,
+			224, 174, 174, 224, 133, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 176, 0, 1, 141, 175, 224, 174, 174, 224, 135, 174, 224, 2, 224,
+			175, 128, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 178, 0, 1, 141, 175, 224, 174, 174, 224, 135, 174, 224, 2, 224, 175, 139, 224,
+			174, 154, 224, 174, 191, 224, 174, 183, 224, 174, 169, 0, 1, 141, 175, 224, 174, 174, 224, 142, 174, 224, 2, 224, 175, 139, 224, 174, 176, 224,
+			174, 191, 224, 174, 175, 224, 174, 178, 0, 1, 141, 175, 224, 174, 174, 224, 143, 174, 224, 2, 224, 174, 190, 32, 0, 1, 141, 175, 224, 174,
+			174, 224, 159, 174, 224, 135, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 174, 176, 0, 1, 141, 175, 224, 174, 174, 224, 179, 174, 224, 135,
+			174, 224, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 0, 1, 141, 175, 224, 174, 174, 224, 190, 174, 224, 164, 174, 224, 18, 68, 2, 224,
+			174, 190, 0, 1, 141, 175, 224, 174, 174, 224, 190, 174, 224, 164, 174, 224, 129, 175, 224, 164, 174, 224, 18, 68, 2, 224, 174, 190, 0, 1,
+			141, 175, 224, 174, 174, 224, 190, 174, 224, 164, 174, 224, 129, 175, 224, 181, 174, 224, 179, 174, 224, 181, 174, 224, 141, 175, 224, 181, 174, 224,
+			18, 68, 2, 224, 174, 190, 0, 1, 141, 175, 224, 174, 174, 224, 190, 174, 224, 174, 174, 224, 134, 174, 224, 2, 224, 174, 190, 0, 1, 141,
+			175, 224, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 1, 141, 175, 224, 175, 174, 224, 135, 175, 224, 164,
+			174, 224, 2, 224, 174, 191, 224, 174, 177, 224, 175, 136, 0, 1, 141, 175, 224, 176, 174, 224, 179, 174, 224, 181, 174, 224, 2, 224, 174, 191,
+			224, 174, 177, 224, 175, 136, 0, 1, 141, 175, 224, 176, 174, 224, 181, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175,
+			224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 142, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 1, 141, 175, 224, 176, 174, 224, 191, 174,
+			224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174,
+			224, 2, 224, 174, 190, 224, 174, 175, 224, 175, 129, 0, 1, 141, 175, 224, 178, 174, 224, 181, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224,
+			174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 1, 141, 175, 224, 179, 174, 224, 134, 174, 224, 2, 224, 174, 191, 224,
+			174, 159, 224, 174, 191, 0, 1, 141, 175, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 176, 174, 224, 181, 174, 224, 18, 68, 2, 224, 174,
+			190, 224, 174, 159, 0, 1, 141, 175, 224, 179, 174, 224, 181, 174, 224, 18, 68, 2, 224, 174, 190, 224, 174, 159, 0, 1, 141, 175, 224, 184,
+			174, 224, 141, 175, 224, 169, 174, 224, 135, 174, 224, 2, 224, 175, 134, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 1, 146,
+			174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 1, 154, 174, 224, 141, 175, 224, 158, 174, 224, 170,
+			174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 129,
+			224, 174, 164, 224, 174, 169, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			224, 174, 191, 224, 174, 176, 0, 1, 159, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 159, 174, 224, 141, 175, 224, 163,
+			174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 1, 164, 174, 224, 2, 224, 174, 190, 0, 1, 170, 174, 224, 137,
+			174, 224, 2, 224, 175, 128, 224, 174, 159, 0, 1, 174, 174, 224, 2, 224, 174, 190, 0, 1, 174, 174, 224, 164, 174, 224, 141, 175, 224, 164,
+			174, 224, 137, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 190, 174, 224, 164,
+			174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 191, 0, 1, 191, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 191, 174, 224, 181,
+			174, 224, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 1, 191, 174, 224, 159, 174, 224, 133, 174, 224, 2,
+			224, 174, 190, 224, 174, 181, 224, 174, 191, 0, 1, 191, 174, 224, 159, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 138, 224, 174, 176,
+			224, 175, 129, 0, 1, 191, 174, 224, 159, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 1, 191, 174, 224, 164, 174, 224, 129,
+			175, 224, 177, 174, 224, 137, 174, 224, 2, 224, 175, 130, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 1, 191, 174, 224, 169, 174, 224, 141,
+			175, 224, 149, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 191,
+			174, 224, 169, 174, 224, 191, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 191, 174, 224, 176, 174, 224, 142, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129,
+			0, 1, 191, 174, 224, 178, 174, 224, 141, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 1, 191, 174, 224, 178, 174, 224, 159, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 175, 129,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 1, 191, 174, 224, 180, 174, 224, 138, 175, 224, 174, 174, 224, 2,
+			224, 175, 134, 224, 174, 175, 224, 174, 176, 224, 175, 141, 0, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
+			174, 178, 224, 175, 136, 0, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 2, 224, 174, 190, 224, 174, 178,
+			224, 175, 141, 32, 0, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 2, 224, 174, 191, 224, 174, 177, 224, 174, 149, 224,
+			175, 129, 12, 0, 2, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 179, 224, 175, 136, 0, 2, 224, 175, 129, 224, 174, 176, 0, 2,
+			224, 175, 129, 224, 174, 177, 25, 0, 2, 224, 175, 130, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 0, 2, 224, 175, 130, 224,
+			174, 176, 0, 2, 224, 175, 134, 224, 174, 177, 0, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 2, 224,
+			175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 32, 0, 2, 224, 175, 135, 224, 174, 176, 224, 175, 141, 32, 0, 2, 224,
+			175, 138, 224, 174, 176, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 129, 32, 0, 2, 224, 175, 138, 224, 174, 180, 224,
+			175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 174, 190, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164,
+			224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174,
+			164, 224, 174, 191, 224, 174, 178, 224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224,
+			174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 175, 141, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180,
+			224, 175, 129, 224, 174, 164, 224, 175, 129, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 129, 224, 174,
+			174, 224, 175, 135, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32,
+			12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175, 129, 224, 174, 164, 224, 175, 135, 32, 12, 0, 2, 224, 175, 138, 224, 174, 180, 224, 175,
+			129, 224, 174, 164, 224, 175, 139, 32, 12, 0, 2, 224, 175, 139, 224, 174, 149, 32, 0, 2, 224, 175, 139, 224, 174, 149, 224, 174, 181, 224,
+			174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 32, 0, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224,
+			175, 141, 224, 174, 177, 0, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 177, 0, 2, 224, 175, 139, 224, 174, 149, 224, 175, 129,
+			224, 174, 174, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 135,
+			32, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 12, 0, 2, 224, 175,
+			139, 224, 174, 164, 224, 175, 129, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 12, 0, 2, 224, 175,
+			139, 224, 174, 164, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 12, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 134, 224, 174, 178, 224,
+			175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 164, 224, 175, 135, 32, 12, 0, 2,
+			224, 175, 139, 224, 174, 164, 224, 175, 139, 32, 12, 0, 2, 224, 175, 139, 224, 174, 169, 32, 0, 2, 224, 175, 139, 224, 174, 169, 224, 174,
+			164, 224, 175, 129, 32, 0, 2, 224, 175, 139, 224, 174, 169, 224, 174, 190, 0, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 177,
+			12, 0, 2, 224, 175, 139, 224, 174, 175, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 2, 224, 175, 139, 224, 174, 175, 224, 175, 141, 0,
+			2, 224, 175, 139, 224, 174, 178, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 149, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174,
+			178, 224, 174, 154, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 164, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174,
+			178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 141, 32, 12, 0, 2, 224, 175, 139, 224, 174, 178, 224,
+			174, 170, 224, 175, 141, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 174, 181, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 2, 224,
+			175, 139, 224, 174, 178, 224, 174, 181, 224, 175, 135, 32, 0, 2, 224, 175, 139, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32,
+			0, 2, 224, 175, 139, 224, 174, 178, 224, 175, 141, 32, 12, 0, 2, 224, 175, 139, 224, 174, 181, 224, 174, 164, 0, 8, 2, 17, 66, 0,
+			8, 2, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224,
+			175, 141, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 163, 224,
+			175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0,
+			8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 32, 0, 8, 2, 224, 174, 190,
+			224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 18, 81, 0, 8, 2,
+			224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 135, 224, 174, 176, 0, 8, 2, 224, 174, 190,
+			224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 176,
+			224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 190, 0, 8, 2,
+			224, 174, 190, 224, 174, 178, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 183, 224, 175, 135,
+			224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 181, 224, 174, 191, 32, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 159, 224, 174, 169, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224,
+			174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224,
+			174, 159, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224,
+			174, 190, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175, 128, 224,
+			174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 159, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 32, 224, 174, 174, 224, 175, 129,
+			224, 174, 149, 224, 174, 174, 224, 174, 164, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 32, 224, 174, 174, 224, 175, 129, 224, 174,
+			185, 224, 174, 174, 224, 174, 164, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174,
+			159, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 224, 175,
+			141, 224, 174, 159, 0, 8, 2, 224, 175, 136, 224, 174, 178, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175,
+			141, 224, 174, 174, 224, 174, 169, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174,
+			149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 224, 174, 190, 224, 174, 169, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 175,
+			141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 139, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 174, 191, 224, 174, 178, 0, 8,
+			2, 224, 175, 139, 224, 174, 184, 224, 175, 141, 32, 18, 87, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 8,
+			32, 129, 175, 224, 159, 174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 135, 0, 8, 32, 129,
+			175, 224, 159, 174, 224, 190, 174, 224, 175, 174, 224, 136, 175, 224, 179, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 174,
+			224, 175, 141, 224, 174, 170, 224, 175, 135, 0, 8, 128, 175, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 8, 128,
+			175, 224, 164, 174, 224, 2, 224, 174, 190, 0, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 175, 134, 224, 174, 176,
+			224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 129, 175, 224, 154,
+			174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 129, 175, 224, 159, 174, 224, 130, 175, 224, 154, 174, 224, 2,
+			224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 129, 175, 224, 159, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 175, 138, 224, 174, 177,
+			224, 174, 191, 0, 8, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 129,
+			175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 8, 129, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190,
+			224, 174, 181, 0, 8, 129, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 164, 174, 224, 2, 224, 175, 138, 224, 174, 159, 224, 174, 191,
+			0, 8, 129, 175, 224, 176, 174, 224, 2, 224, 175, 136, 224, 174, 175, 224, 174, 190, 0, 8, 129, 175, 224, 176, 174, 224, 191, 174, 224, 181,
+			174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 191, 0, 8, 129, 175, 224, 177, 174, 224, 135, 175, 224, 181,
+			174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 8, 129,
+			175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 177, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 175, 134,
+			224, 174, 175, 224, 174, 176, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154,
+			0, 8, 129, 175, 224, 177, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 8, 130, 175, 224, 170,
+			174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 174, 174, 224, 175, 141, 32, 0, 8, 135, 175, 224, 159, 174, 224, 2, 224, 175, 141, 0, 8,
+			135, 175, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 179, 0, 8, 136, 175, 224, 149, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174,
+			191, 0, 8, 136, 175, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 154, 174, 224, 181, 174, 224, 2, 224, 174,
+			190, 224, 174, 159, 0, 8, 136, 175, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 136, 175, 224,
+			159, 174, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8,
+			136, 175, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 8, 136, 175, 224, 176, 174, 224,
+			191, 174, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 177, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174,
+			190, 224, 174, 159, 0, 8, 136, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 8, 136, 175, 224,
+			177, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 0, 8, 136, 175, 224, 178, 174, 224, 181, 174, 224,
+			2, 224, 175, 139, 224, 174, 159, 0, 8, 136, 175, 224, 178, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 175, 139, 0, 8, 141, 175, 224,
+			149, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 12, 0, 8, 141, 175, 224, 156, 174,
+			224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 175, 0, 8, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224,
+			175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 163, 174, 224, 129, 175, 224, 168, 174, 224, 2, 224, 175, 129, 224,
+			174, 178, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 141, 175, 224, 163, 174,
+			224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 175, 136, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174,
+			224, 2, 224, 175, 138, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 163, 174, 224, 176, 174, 224, 129, 175, 224, 174, 174,
+			224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 128, 175, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 159, 224,
+			174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8, 141,
+			175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 136, 0, 8, 141,
+			175, 224, 169, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 8, 141, 175, 224, 169, 174, 224, 164,
+			174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 181, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129,
+			0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 149,
+			0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 177, 224, 174, 191, 0, 8, 141, 175, 224, 174,
+			174, 224, 129, 175, 224, 164, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 176,
+			174, 224, 164, 174, 224, 2, 224, 174, 190, 32, 0, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 176, 174, 224, 181, 174, 224, 2, 224, 174,
+			190, 32, 0, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 177, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190, 32, 0, 8, 141,
+			175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2,
+			224, 175, 130, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2,
+			224, 175, 134, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 154, 0, 8, 141,
+			175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 184, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 175, 140,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 174, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2,
+			224, 175, 139, 224, 174, 159, 0, 8, 141, 175, 224, 174, 174, 224, 178, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 141, 175, 224, 174,
+			174, 224, 178, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 175, 134, 224, 174, 175, 224, 174, 176, 0, 8, 141, 175, 224, 174, 174, 224, 178,
+			174, 224, 190, 174, 224, 178, 174, 224, 139, 175, 224, 149, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 8, 141, 175, 224, 174, 174, 224, 180,
+			174, 224, 170, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224, 185, 174, 224, 2,
+			224, 174, 191, 0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 154, 224, 174, 191, 224, 174, 183,
+			224, 174, 169, 0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159,
+			0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 190,
+			0, 8, 141, 175, 224, 174, 174, 224, 190, 174, 224, 178, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 174,
+			174, 224, 190, 174, 224, 183, 174, 224, 2, 224, 175, 130, 0, 8, 141, 175, 224, 174, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191,
+			224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 175, 129, 0, 8, 141, 175, 224, 175, 174, 224, 134,
+			175, 224, 174, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 175, 174, 224, 138, 175, 224, 170, 174, 224, 2, 224, 174, 191, 0, 8, 141,
+			175, 224, 176, 174, 224, 135, 175, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 175, 136, 0, 8, 141, 175, 224, 176, 174, 224, 149,
+			174, 224, 129, 175, 224, 168, 174, 224, 2, 224, 175, 138, 224, 174, 176, 224, 175, 129, 0, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 179,
+			174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 138, 224, 174, 180, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 154,
+			174, 224, 2, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 138, 175, 224, 164, 174, 224, 2, 224, 175, 138,
+			224, 174, 176, 224, 175, 129, 224, 174, 179, 0, 8, 141, 175, 224, 178, 174, 224, 139, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 181,
+			224, 175, 136, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141,
+			175, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 177, 224, 175, 136, 0, 8, 141, 175, 224, 178, 174, 224, 191,
+			174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 178, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 191, 0, 8, 141,
+			175, 224, 178, 174, 224, 191, 174, 224, 183, 174, 224, 2, 224, 174, 190, 0, 8, 141, 175, 224, 179, 174, 224, 128, 175, 224, 174, 174, 224, 2,
+			224, 174, 190, 224, 174, 176, 0, 8, 141, 175, 224, 180, 174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 179, 0, 8, 141,
+			175, 224, 180, 174, 224, 190, 174, 224, 175, 174, 224, 2, 224, 174, 190, 224, 174, 163, 0, 8, 149, 174, 224, 2, 224, 174, 191, 224, 174, 178,
+			224, 174, 181, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 8, 154, 174, 224, 141, 175, 224, 158, 174, 224, 170, 174, 224, 2, 224, 174, 190,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 159, 174, 224, 141, 175, 224, 159, 174, 224, 170, 174, 224, 2,
+			224, 174, 190, 224, 174, 159, 0, 8, 159, 174, 224, 141, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141,
+			224, 174, 159, 0, 8, 159, 174, 224, 141, 175, 224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 174, 190,
+			224, 174, 149, 0, 8, 159, 174, 224, 181, 174, 224, 2, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 163, 224, 175, 136, 0, 8, 164,
+			174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 190, 224, 174, 163, 0, 8, 174, 174, 224, 141, 175, 224, 176,
+			174, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 174, 174, 224, 141,
+			175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 0, 8, 175, 174, 224, 191, 174, 224, 178, 174, 224, 149,
+			174, 224, 2, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 176, 174, 224, 128, 175, 224, 181,
+			174, 224, 2, 224, 175, 134, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 176, 174, 224, 190, 174, 224, 174,
+			174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 8, 176, 174, 224, 191, 174, 224, 149,
+			174, 224, 141, 175, 224, 149, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 176, 174, 224, 191, 174, 224, 170,
+			174, 224, 2, 224, 175, 139, 18, 69, 0, 8, 178, 174, 224, 170, 174, 224, 2, 224, 175, 135, 224, 174, 176, 0, 8, 178, 174, 224, 191, 174,
+			224, 154, 174, 224, 2, 224, 175, 135, 224, 174, 176, 0, 8, 181, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 183, 0, 8, 190, 174,
+			224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 0,
+			8, 190, 174, 224, 170, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 174, 176, 0, 8, 191, 174, 224, 18, 69, 141, 175, 224, 169, 174, 224,
+			191, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 8, 191, 174, 224, 154, 174, 224, 141, 175, 224, 169, 174, 224,
+			191, 174, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 191, 174, 224, 164, 174, 224, 129, 175, 224,
+			164, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 191, 174, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 164, 224, 174,
+			191, 0, 8, 191, 174, 224, 176, 174, 224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 191, 174, 224, 177, 174, 224, 129, 175, 224,
+			149, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 191, 174, 224, 177, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 191, 224, 174,
+			159, 224, 174, 191, 0, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 191, 32, 0, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 191, 224,
+			174, 175, 224, 174, 191, 0, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 175, 129, 0, 8, 191, 174, 224, 178, 174,
+			224, 2, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 191, 174, 224, 180, 174, 224, 170, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0,
+			8, 191, 174, 224, 180, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 191, 174, 224, 180, 174, 224, 181, 174, 224, 2, 224,
+			174, 190, 224, 174, 176, 0, 8, 191, 174, 224, 180, 174, 224, 181, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0, 8, 191, 174, 224, 181, 174,
+			224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 159, 0, 8, 191, 174, 224, 183, 174, 224, 191, 174, 224, 176, 174, 224, 2, 224, 174, 191, 224,
+			174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 1, 139, 175, 224, 176, 174, 224, 143, 174, 224, 2, 224, 174, 179, 224, 175, 135, 224,
+			174, 169, 0, 224, 174, 191, 1, 141, 175, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0,
+			224, 174, 191, 1, 141, 175, 224, 159, 174, 224, 137, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191,
+			1, 141, 175, 224, 170, 174, 224, 129, 175, 224, 154, 174, 224, 176, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224,
+			174, 168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 156, 174, 224, 190, 174, 224, 176, 174,
+			224, 2, 224, 174, 176, 224, 174, 164, 224, 174, 191, 224, 174, 168, 224, 174, 191, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1, 141, 175,
+			224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 18, 68, 2, 224, 174, 176, 224, 174, 179, 224, 174, 175, 0, 224, 174, 191, 1,
+			141, 175, 224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 18, 68, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174,
+			191, 1, 141, 175, 224, 170, 174, 224, 169, 174, 224, 156, 174, 224, 139, 175, 224, 170, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175,
+			224, 174, 176, 0, 224, 174, 191, 1, 141, 175, 224, 183, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 175, 224, 175, 139,
+			224, 174, 149, 0, 224, 174, 191, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224,
+			174, 159, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 178, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224,
+			174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 175, 141, 224, 174, 158, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 154, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224,
+			174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 169, 224, 175, 141, 224, 174, 168, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 154, 224, 174, 169, 224, 175, 141, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 181, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224,
+			174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 169, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224,
+			175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224,
+			174, 191, 224, 174, 169, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 156, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 163, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 163, 224, 174, 190, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 164, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224,
+			174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 174, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190, 224,
+			174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224,
+			175, 128, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 164, 224, 175, 135, 224, 174, 183, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 139, 224, 174, 183, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 183, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 159, 224, 175, 141, 224,
+			174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 135, 224,
+			174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 169, 224, 174, 190, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 190, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 174, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 129, 224, 174, 149, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224,
+			175, 139, 224, 174, 183, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
+			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
+			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224,
+			175, 139, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 175, 224, 175, 139, 224, 174, 154, 224, 174, 169, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 175, 224, 175, 139, 224, 174, 156, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 178, 224,
+			174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 179, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224,
+			174, 149, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 179, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 185, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 128, 224, 174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224,
+			175, 128, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 135, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 181, 224, 175, 135, 224, 174, 154, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 183, 224, 174, 176, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 185, 224, 174, 178, 224, 174, 190, 224, 174, 164, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 190, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
+			174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
+			174, 163, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168,
+			224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164,
+			224, 174, 191, 224, 174, 175, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174,
+			191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174,
+			164, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 174, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
+			174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 174, 178, 224, 175, 141, 224, 174, 175, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 170, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224,
+			174, 174, 224, 174, 191, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224,
+			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 169, 224, 175, 141, 18, 69, 224, 174, 191, 224, 174, 170, 224, 174, 178, 0, 224, 174, 191, 8,
+			2, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174,
+			175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174,
+			164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 224,
+			174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174,
+			175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174,
+			174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			191, 224, 174, 175, 224, 174, 190, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 174, 224,
+			174, 163, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224,
+			174, 159, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224,
+			174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 175, 129, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			175, 134, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 139, 224,
+			174, 149, 224, 174, 191, 224, 174, 164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224,
+			174, 179, 224, 174, 184, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 179,
+			224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 128,
+			224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 135, 0, 224, 174, 191, 8, 128, 175, 224, 176, 174, 224, 141, 175, 224, 184,
+			174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8, 129, 175, 224, 163, 174, 224, 141, 175, 224, 183,
+			174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174, 224, 169,
+			174, 224, 190, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174, 224, 174, 174, 224, 141,
+			175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174, 224, 176, 174, 224, 181,
+			174, 224, 2, 224, 174, 176, 18, 69, 224, 174, 190, 224, 174, 164, 0, 224, 174, 191, 8, 141, 175, 224, 170, 174, 224, 190, 174, 224, 18, 71,
+			174, 174, 224, 2, 224, 174, 176, 224, 174, 170, 0, 224, 174, 191, 8, 141, 175, 224, 177, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174,
+			176, 224, 174, 175, 224, 175, 139, 224, 174, 149, 0, 224, 174, 191, 8, 141, 175, 224, 177, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174,
+			176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 174, 191, 8, 141, 175, 224, 177, 174, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174,
+			176, 0, 224, 174, 191, 8, 149, 174, 224, 129, 175, 224, 174, 174, 224, 141, 175, 224, 163, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174,
+			191, 224, 174, 175, 0, 224, 174, 191, 8, 149, 174, 224, 129, 175, 224, 174, 174, 224, 141, 175, 224, 163, 174, 224, 183, 174, 224, 2, 224, 174,
+			176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 181, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174,
+			175, 0, 224, 174, 191, 8, 191, 174, 224, 174, 174, 224, 129, 175, 224, 154, 174, 224, 141, 175, 224, 159, 174, 224, 178, 174, 224, 2, 224, 174,
+			176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 191, 174, 224, 174, 174, 224, 141, 175, 224, 183, 174, 224, 141, 175, 224, 149, 174, 224,
+			178, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 191, 174, 224, 176, 174, 224, 185, 174, 224, 2, 224, 174,
+			176, 224, 174, 154, 224, 174, 190, 224, 174, 164, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174,
+			164, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 169, 0, 224,
+			175, 129, 8, 2, 224, 174, 179, 224, 175, 129, 224, 174, 159, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 224, 175, 129, 8,
+			2, 224, 174, 179, 224, 175, 130, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 0, 224, 175, 141, 2, 32, 224, 174, 170, 0, 224,
+			175, 141, 2, 224, 174, 170, 0, 224, 175, 141, 8, 135, 175, 224, 149, 174, 224, 2, 224, 174, 174, 224, 174, 190, 224, 174, 176, 224, 174, 191,
+			0, 224, 175, 141, 8, 139, 175, 224, 170, 174, 224, 0, 224, 175, 141, 8, 149, 174, 224, 190, 174, 224, 178, 174, 224, 0, 224, 175, 141, 8,
+			154, 174, 224, 2, 224, 174, 164, 32, 0, 224, 175, 141, 8, 154, 174, 224, 2, 224, 174, 164, 224, 174, 176, 224, 174, 191, 224, 174, 183, 224,
+			174, 191, 0, 224, 175, 141, 8, 154, 174, 224, 2, 224, 174, 164, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 176, 0, 224, 175, 141,
+			8, 190, 174, 224, 159, 174, 224, 141, 175, 224, 149, 174, 224, 141, 175, 224, 184, 174, 224, 134, 175, 224, 159, 174, 224, 0, 224, 174, 191, 224,
+			174, 176, 1, 141, 175, 224, 184, 174, 224, 141, 175, 224, 149, 174, 224, 142, 174, 224, 2, 224, 174, 184, 3, 48, 34, 36, 0, 224, 174, 191,
+			224, 174, 176, 224, 174, 191, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 181, 3, 48, 34, 37, 47, 0, 224, 174, 191, 224, 174, 176, 224,
+			174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 178, 3, 48, 34, 37, 50,
+			89, 37, 48, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190,
+			3, 48, 34, 37, 57, 109, 68, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224,
+			174, 176, 3, 48, 34, 37, 66, 139, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3,
+			48, 34, 37, 66, 139, 148, 0, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 159, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 191,
+			224, 174, 175, 3, 48, 34, 37, 139, 0, 4, 224, 175, 129, 224, 174, 176, 224, 174, 131, 224, 174, 170, 8, 2, 18, 69, 224, 174, 176, 3,
+			48, 34, 39, 83, 109, 0, 224, 175, 129, 224, 174, 176, 224, 174, 170, 8, 2, 18, 69, 224, 174, 176, 0, 224, 175, 129, 224, 174, 176, 224,
+			174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 129, 224, 174, 176, 224, 175, 138, 224, 174, 170, 8, 2, 224, 174,
+			154, 224, 174, 176, 0, 224, 175, 129, 224, 174, 176, 224, 175, 138, 224, 174, 170, 8, 2, 224, 174, 184, 224, 174, 176, 0, 224, 175, 129, 224,
+			174, 176, 224, 175, 138, 224, 174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 174, 170, 224,
+			175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 224, 175, 141, 224, 174, 176, 224, 175, 138, 224, 174, 170, 8, 2, 224, 174, 154, 224, 174,
+			176, 0, 224, 175, 141, 224, 174, 176, 224, 175, 138, 224, 174, 170, 224, 175, 138, 8, 2, 224, 174, 154, 224, 174, 176, 0, 4, 224, 174, 191,
+			224, 174, 176, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 183, 3, 48, 34, 109, 47, 0, 224,
+			174, 191, 224, 174, 176, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 175, 224, 174, 159, 224, 175, 141, 224, 174, 154, 0, 224, 174, 191, 224,
+			174, 176, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 175, 224, 175, 135, 224, 174, 149, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 149,
+			2, 224, 174, 190, 224, 174, 183, 3, 48, 34, 109, 49, 0, 224, 174, 191, 224, 174, 176, 224, 174, 149, 8, 141, 175, 224, 170, 174, 224, 169,
+			174, 224, 190, 174, 224, 158, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 224, 174, 176, 224, 174, 149, 8, 169, 174, 224, 190, 174, 224, 158,
+			174, 224, 2, 224, 174, 190, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 154, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 174, 174, 224,
+			2, 224, 174, 190, 224, 174, 176, 3, 48, 34, 109, 76, 0, 224, 174, 191, 224, 174, 176, 224, 174, 154, 8, 2, 224, 174, 190, 224, 174, 176,
+			0, 224, 174, 191, 224, 174, 176, 224, 174, 154, 224, 175, 141, 2, 224, 174, 169, 224, 175, 136, 3, 48, 34, 109, 76, 12, 37, 0, 224, 174,
+			191, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 178, 3, 48, 34,
+			118, 49, 139, 37, 49, 109, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 159, 224, 174, 163, 224, 175,
+			141, 224, 174, 159, 8, 3, 48, 34, 118, 84, 37, 140, 109, 66, 139, 148, 0, 224, 175, 141, 224, 174, 176, 224, 175, 139, 224, 174, 159, 8,
+			2, 224, 174, 190, 224, 174, 169, 3, 48, 34, 119, 47, 0, 224, 175, 129, 224, 174, 176, 224, 175, 139, 224, 174, 159, 8, 2, 224, 174, 190,
+			224, 174, 169, 3, 48, 34, 119, 139, 0, 224, 175, 129, 224, 174, 176, 224, 175, 130, 224, 174, 170, 8, 3, 48, 34, 123, 83, 148, 0, 224,
+			174, 191, 224, 174, 176, 224, 175, 136, 224, 174, 181, 224, 175, 135, 224, 174, 159, 8, 3, 48, 34, 134, 84, 114, 139, 148, 0, 224, 175, 134,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 3, 48, 36, 66,
+			139, 109, 0, 4, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 190, 32, 3, 48, 36, 67, 75, 0, 224, 175,
+			134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 0, 4, 224, 174, 191, 1,
+			32, 141, 175, 224, 170, 174, 224, 136, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32,
+			3, 48, 37, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 32, 224, 174, 181, 224, 174, 191, 224, 174,
+			159, 224, 175, 136, 0, 224, 174, 191, 224, 174, 149, 8, 128, 175, 224, 164, 174, 224, 2, 224, 174, 190, 3, 48, 37, 49, 0, 224, 174, 191,
+			224, 174, 159, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 178, 3, 48, 37, 139, 109, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 8,
+			2, 224, 174, 164, 23, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164, 12, 3, 48, 40, 47, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 149, 224, 175, 141, 224, 174, 149, 3, 48, 40, 47, 47, 0, 4, 224, 175, 129,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 149, 3, 48, 40, 47, 47, 109, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 8, 2, 224, 174, 174, 224, 175, 141, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 224, 175,
+			129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 174, 224, 175, 141, 32, 224, 174, 170, 224, 175, 129, 224, 174, 164, 224, 175,
+			129, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 174, 191, 0, 224,
+			175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 179, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8,
+			2, 224, 174, 180, 224, 174, 149, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 224, 174, 170, 8,
+			2, 224, 175, 129, 224, 174, 164, 3, 48, 40, 47, 47, 109, 65, 48, 0, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2,
+			224, 174, 190, 224, 174, 169, 3, 48, 40, 55, 81, 0, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 191, 224,
+			174, 153, 224, 175, 141, 3, 48, 40, 140, 140, 0, 4, 224, 175, 141, 224, 174, 164, 8, 154, 174, 224, 2, 224, 174, 174, 224, 174, 191, 32,
+			3, 48, 47, 109, 0, 224, 175, 141, 224, 174, 164, 8, 154, 174, 224, 2, 224, 174, 174, 224, 174, 191, 224, 174, 175, 0, 4, 224, 175, 141,
+			224, 174, 170, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 184, 224, 174, 190, 224, 174, 174, 224, 174, 191, 3, 48, 48, 0, 224, 175, 141,
+			224, 174, 170, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0,
+			224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18, 68, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 1, 18, 68, 2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18,
+			68, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18, 68, 2, 224, 174,
+			176, 224, 175, 135, 224, 174, 164, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 136, 175, 224, 154, 174, 224, 135, 174, 224, 2, 224, 174,
+			176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 136, 175, 224, 154, 174, 224, 135, 174, 224,
+			2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 136, 175, 224, 176, 174, 224, 137, 174, 224,
+			2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 149, 174, 224, 133, 174, 224,
+			2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 149, 174, 224, 191, 174, 224,
+			164, 174, 224, 133, 174, 224, 2, 224, 174, 176, 224, 174, 154, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224,
+			174, 191, 1, 154, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 1, 164, 174, 224, 141, 175, 224, 164, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174,
+			190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 130, 175, 224,
+			149, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 169, 224, 175,
+			136, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 129, 175, 224, 159, 174, 224, 141, 175, 224, 159, 174, 224, 190, 174, 224, 149, 174, 224,
+			2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 224, 174, 154, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 129, 175, 224, 159, 174, 224,
+			141, 175, 224, 163, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 8, 136, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 8, 136, 175, 224, 159, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 8, 136, 175, 224, 178, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 224, 174, 154, 0, 224,
+			175, 141, 224, 174, 170, 224, 174, 191, 8, 141, 175, 224, 176, 174, 224, 128, 175, 224, 168, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174,
+			190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 159, 174, 224, 141, 175, 224, 163, 174, 224, 154, 174, 224, 2, 224, 174,
+			176, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 164, 174, 224, 141, 175, 224,
+			164, 174, 224, 176, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8,
+			169, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8,
+			169, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 175, 135, 224, 174, 154, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8,
+			169, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 224, 174, 170, 224,
+			174, 191, 8, 175, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 174,
+			190, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 178, 174, 224, 156, 174, 224, 2, 224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174,
+			149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 178, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 176, 224, 174, 170, 224, 175,
+			129, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 181, 174, 224, 164, 174, 224, 190, 174, 224, 175, 174, 224, 2, 224, 174, 176, 224, 174,
+			149, 224, 174, 190, 224, 174, 154, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 181, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174,
+			176, 224, 174, 149, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174, 224, 18, 75, 146, 174, 224, 2, 224, 174, 176,
+			224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174, 224, 163, 174, 224, 174, 174, 224, 2,
+			224, 174, 176, 224, 174, 181, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174, 224, 164, 174, 224, 168, 174, 224, 2,
+			224, 174, 176, 224, 174, 181, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191, 174, 224, 164, 174, 224, 190,
+			174, 224, 156, 174, 224, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 191,
+			174, 224, 179, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174,
+			170, 224, 174, 191, 224, 174, 176, 224, 174, 154, 1, 18, 68, 2, 224, 174, 190, 224, 174, 176, 3, 48, 48, 34, 109, 76, 0, 224, 175, 141,
+			224, 174, 170, 8, 191, 174, 224, 176, 174, 224, 2, 224, 174, 169, 224, 175, 141, 32, 18, 98, 3, 48, 48, 109, 0, 4, 224, 175, 141, 224,
+			174, 170, 8, 141, 175, 224, 176, 174, 224, 149, 174, 224, 164, 174, 224, 3, 48, 48, 148, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224,
+			176, 174, 224, 149, 174, 224, 168, 174, 224, 0, 224, 175, 141, 224, 174, 149, 8, 190, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176,
+			224, 175, 141, 224, 174, 169, 3, 48, 49, 0, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 159, 8, 191, 174, 224, 185, 174, 224, 2,
+			224, 174, 191, 224, 174, 154, 3, 48, 50, 118, 139, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 176, 174, 224, 170, 174, 224, 2, 224,
+			174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 3, 48, 71, 0, 224, 175, 141, 224, 174, 154, 8, 176, 174, 224, 2, 224, 174, 176, 3,
+			48, 76, 109, 0, 4, 1, 21, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 12, 3, 48, 109, 0, 1, 129, 175, 224, 169, 174, 224, 133,
+			174, 224, 2, 224, 174, 174, 224, 174, 190, 0, 1, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 178,
+			224, 174, 181, 224, 174, 191, 0, 1, 129, 175, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 149, 0, 1, 129, 175, 224, 176, 174, 224, 146,
+			174, 224, 2, 224, 174, 149, 0, 1, 129, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 174, 224, 174, 190, 0, 1, 133,
+			174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 163, 224, 174, 190, 0, 1, 134, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 154,
+			224, 174, 169, 0, 1, 134, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174, 183, 224, 174, 169, 0, 1, 136, 175, 224, 164, 174, 224, 170,
+			174, 224, 2, 224, 174, 164, 224, 175, 136, 0, 1, 137, 174, 224, 2, 224, 174, 168, 224, 174, 191, 224, 174, 183, 0, 1, 137, 174, 224, 2,
+			224, 174, 168, 224, 175, 141, 224, 174, 168, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 154, 0, 1, 139, 175, 224, 159, 174, 224, 141,
+			175, 224, 149, 174, 224, 134, 174, 224, 2, 224, 174, 184, 0, 1, 139, 175, 224, 175, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 164,
+			224, 174, 191, 0, 1, 139, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 140, 175, 224, 176, 174, 224, 191,
+			174, 224, 164, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224, 174, 180,
+			224, 174, 191, 0, 1, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 149, 224, 174, 178, 0, 1, 141, 175, 224, 169,
+			174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 0, 1, 141, 175, 224, 169, 174, 224, 191,
+			174, 224, 170, 174, 224, 2, 224, 174, 149, 224, 174, 178, 0, 1, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 164,
+			224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 12, 0, 1, 141, 175, 224, 170, 174, 224, 0, 1, 141, 175, 224, 174, 174, 224, 176,
+			174, 224, 149, 174, 224, 2, 224, 174, 159, 0, 1, 141, 175, 224, 174, 174, 224, 176, 174, 224, 149, 174, 224, 2, 224, 174, 177, 224, 175, 141,
+			0, 1, 141, 175, 224, 176, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224, 174, 169, 224, 174, 191, 0, 1, 141, 175, 224, 176, 174, 224, 175,
+			174, 224, 137, 174, 224, 2, 224, 174, 164, 224, 174, 181, 224, 174, 191, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 164,
+			224, 175, 141, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 174, 0, 1, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2,
+			224, 174, 169, 224, 174, 190, 0, 1, 141, 175, 224, 179, 174, 224, 134, 174, 224, 2, 224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 1, 147,
+			174, 224, 2, 224, 174, 169, 0, 1, 159, 174, 224, 181, 174, 224, 2, 224, 174, 149, 224, 175, 129, 224, 174, 164, 224, 174, 191, 0, 1, 159,
+			174, 224, 181, 174, 224, 2, 224, 174, 180, 0, 1, 164, 174, 224, 0, 1, 174, 174, 224, 0, 1, 176, 174, 224, 128, 175, 224, 181, 174, 224,
+			2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 1, 176, 174, 224, 128, 175, 224, 181, 174, 224,
+			2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 176, 224, 174, 174, 0, 1, 176, 174, 224,
+			191, 174, 224, 159, 174, 224, 141, 175, 224, 183, 174, 224, 190, 174, 224, 176, 174, 224, 135, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1,
+			190, 174, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 137, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 1,
+			191, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224, 174, 163, 224, 174, 191, 0, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 25, 0, 2,
+			224, 174, 159, 224, 174, 191, 0, 2, 224, 174, 177, 224, 175, 141, 224, 174, 177, 224, 174, 191, 32, 0, 8, 0, 8, 2, 224, 174, 159, 224,
+			175, 141, 224, 174, 159, 224, 174, 169, 32, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 169, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			32, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 158, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
+			174, 164, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 169, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 159, 0,
+			8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 183, 0, 8, 2, 224, 174, 178, 224, 174, 181, 224, 174, 190, 224,
+			174, 169, 224, 174, 181, 0, 8, 2, 224, 174, 181, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224,
+			174, 176, 0, 8, 32, 18, 79, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0,
+			8, 32, 18, 79, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 8, 32, 18, 79, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 174, 0, 8, 128, 175, 224, 164, 174, 224, 2, 224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 8, 129, 175,
+			224, 149, 174, 224, 129, 175, 224, 170, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 129, 175, 224, 149, 174, 224, 129, 175, 224, 170, 174,
+			224, 2, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 136, 0, 8, 129, 175, 224, 159, 174, 224, 130, 175, 224, 174, 174, 224, 2, 224,
+			174, 169, 224, 174, 191, 0, 8, 129, 175, 224, 159, 174, 224, 130, 175, 224, 174, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224,
+			174, 149, 224, 175, 141, 0, 8, 129, 175, 224, 159, 174, 224, 138, 174, 224, 2, 224, 174, 175, 224, 174, 191, 224, 174, 176, 0, 8, 129, 175,
+			224, 159, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 129, 175, 224, 164, 174, 224, 141, 175, 224, 164, 174,
+			224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 181, 224, 174, 179, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 149, 224,
+			175, 129, 224, 174, 164, 224, 174, 191, 0, 8, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 129, 175,
+			224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 154, 224, 175, 128, 224, 174, 178, 224, 174, 169, 224, 175, 136, 0,
+			8, 136, 175, 224, 159, 174, 224, 168, 174, 224, 2, 224, 174, 175, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 154, 224, 174, 191, 0,
+			8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 158, 224, 175, 141, 224, 174, 154, 0, 8, 141, 175, 224, 163, 174,
+			224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224,
+			174, 179, 224, 174, 191, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 163, 174, 224, 168, 174, 224, 2, 224, 174, 149, 224,
+			174, 178, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 163, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175,
+			224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191, 224, 174, 181, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224,
+			174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 178, 174, 224, 168, 174, 224, 2, 224, 174, 175, 0, 8, 141, 175, 224, 169, 174,
+			224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 170, 174,
+			224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 169, 174, 224, 191, 174, 224, 174, 174, 224, 2, 224, 174, 177, 224, 175, 141, 224,
+			174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 169, 224, 174, 191, 32, 0, 8, 141, 175, 224, 174, 174, 224, 149,
+			174, 224, 2, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 169,
+			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 169, 224, 174, 191,
+			224, 174, 175, 0, 8, 141, 175, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 178, 224, 175, 141, 0, 8, 141, 175, 224, 174, 174, 224, 170,
+			174, 224, 2, 224, 174, 176, 224, 175, 141, 32, 0, 8, 141, 175, 224, 176, 174, 224, 159, 174, 224, 138, 175, 224, 164, 174, 224, 2, 224, 174,
+			153, 224, 175, 141, 224, 174, 149, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 135, 224, 174,
+			183, 224, 174, 169, 0, 8, 141, 175, 224, 176, 174, 224, 191, 174, 224, 179, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174,
+			169, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 176, 224, 175, 129, 0, 8, 141, 175, 224, 178, 174, 224,
+			190, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174,
+			168, 224, 175, 141, 224, 174, 164, 0, 8, 141, 175, 224, 179, 174, 224, 128, 175, 224, 174, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8,
+			149, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 169, 0, 8, 154, 174, 224,
+			190, 174, 224, 178, 174, 224, 136, 175, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 176, 174, 224, 191, 174, 224, 159, 174, 224,
+			141, 175, 224, 183, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 181, 174, 224, 191, 174, 224, 154, 174, 224,
+			2, 224, 174, 164, 0, 8, 190, 174, 224, 178, 174, 224, 174, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 174, 191, 0, 8, 190, 174, 224,
+			181, 174, 224, 2, 224, 174, 184, 0, 8, 191, 174, 224, 154, 174, 224, 191, 174, 224, 169, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174,
+			178, 0, 8, 191, 174, 224, 163, 174, 224, 174, 174, 224, 2, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 181, 0, 8, 191, 174, 224,
+			180, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 177, 224, 174, 191, 0, 8, 191, 174, 224, 183, 174, 224, 191, 174, 224, 176, 174, 224,
+			2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 4, 224, 174, 164, 1, 129, 175, 224, 154, 174,
+			224, 170, 174, 224, 2, 224, 174, 191, 3, 48, 109, 47, 0, 224, 174, 164, 1, 190, 174, 224, 156, 174, 224, 176, 174, 224, 191, 174, 224, 170,
+			174, 224, 2, 224, 174, 191, 0, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149,
+			0, 4, 224, 174, 164, 224, 174, 191, 1, 129, 175, 224, 149, 174, 224, 176, 174, 224, 3, 48, 109, 47, 37, 0, 224, 174, 164, 224, 174, 191,
+			1, 129, 175, 224, 164, 174, 224, 135, 175, 224, 154, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 141, 175, 224, 184, 174, 224, 149, 174, 224,
+			176, 174, 224, 191, 174, 224, 170, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 156, 174, 224, 149, 174, 224, 0, 224, 174, 164, 224, 174, 191,
+			1, 159, 174, 224, 129, 175, 224, 149, 174, 224, 174, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 159, 174, 224, 149, 174, 224, 141, 175, 224,
+			153, 174, 224, 135, 175, 224, 181, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 163, 174, 224, 149, 174, 224, 0, 224, 174, 164, 224, 174, 191,
+			1, 190, 174, 224, 149, 174, 224, 191, 174, 224, 170, 174, 224, 141, 175, 224, 174, 174, 224, 133, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1,
+			190, 174, 224, 164, 174, 224, 128, 175, 224, 154, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 190, 174, 224, 175, 174, 224, 136, 175, 224, 179,
+			174, 224, 181, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 190, 174, 224, 175, 174, 224, 141, 175, 224, 164, 174, 224, 191, 174, 224, 181, 174,
+			224, 0, 224, 174, 164, 224, 174, 191, 1, 191, 174, 224, 163, 174, 224, 176, 174, 224, 164, 174, 224, 0, 224, 174, 164, 224, 174, 191, 1, 191,
+			174, 224, 174, 174, 224, 141, 175, 224, 183, 174, 224, 141, 175, 224, 149, 174, 224, 178, 174, 224, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 8, 2, 32, 224, 174, 170, 224, 174, 164, 224, 174, 191, 3, 48, 109, 47, 47, 37,
+			34, 109, 48, 0, 224, 174, 164, 8, 141, 175, 224, 156, 174, 224, 178, 174, 224, 3, 48, 109, 47, 148, 0, 224, 174, 170, 224, 175, 141, 1,
+			141, 175, 224, 178, 174, 224, 133, 174, 224, 3, 48, 109, 48, 0, 224, 174, 149, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 175,
+			139, 224, 174, 159, 224, 174, 191, 3, 48, 109, 49, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163,
+			224, 175, 141, 224, 174, 159, 1, 133, 174, 224, 3, 48, 118, 34, 65, 36, 50, 139, 148, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224,
+			174, 159, 224, 175, 141, 224, 174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 191, 174, 224, 159, 174, 224, 3, 48, 118,
+			34, 139, 65, 36, 66, 139, 148, 0, 224, 174, 190, 224, 174, 175, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 224,
+			174, 174, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 1, 133, 174, 224, 3, 48, 118, 57, 37, 66, 139, 65, 36, 50, 139, 148,
+			0, 4, 224, 174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224, 174, 191, 8, 2, 224, 174, 176, 3, 48, 118, 66, 37, 81, 0, 224,
+			174, 190, 224, 174, 163, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 8, 2, 224, 174, 176, 0, 224, 174, 190, 224,
+			174, 170, 8, 2, 224, 174, 168, 224, 174, 190, 224, 174, 154, 3, 48, 118, 71, 109, 0, 224, 174, 190, 224, 174, 170, 224, 174, 181, 224, 174,
+			191, 224, 174, 174, 224, 175, 139, 224, 174, 154, 224, 174, 169, 8, 3, 48, 118, 71, 109, 84, 37, 65, 119, 76, 109, 0, 224, 174, 190, 224,
+			174, 154, 224, 174, 191, 224, 174, 159, 8, 134, 175, 224, 159, 174, 224, 3, 48, 118, 89, 37, 139, 148, 0, 224, 174, 190, 224, 174, 154, 224,
+			175, 129, 224, 174, 170, 8, 2, 224, 174, 164, 3, 48, 118, 89, 122, 48, 109, 0, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 159,
+			1, 141, 175, 224, 176, 174, 224, 143, 174, 224, 3, 48, 119, 34, 139, 148, 0, 4, 1, 18, 67, 3, 48, 148, 0, 1, 136, 175, 224, 159,
+			174, 224, 168, 174, 224, 0, 1, 141, 175, 224, 174, 174, 224, 191, 174, 224, 178, 174, 224, 146, 174, 224, 0, 1, 141, 175, 224, 176, 174, 224,
+			159, 174, 224, 135, 174, 224, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 32, 0, 1, 141, 175, 224, 178, 174, 224, 149, 174, 224,
+			141, 175, 224, 153, 174, 224, 154, 174, 224, 0, 8, 128, 175, 224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 0, 8, 136, 175,
+			224, 178, 174, 224, 191, 174, 224, 168, 174, 224, 0, 8, 141, 175, 224, 169, 174, 224, 175, 174, 224, 170, 174, 224, 0, 8, 141, 175, 224, 174,
+			174, 224, 135, 175, 224, 149, 174, 224, 0, 8, 141, 175, 224, 174, 174, 224, 159, 174, 224, 141, 175, 224, 184, 174, 224, 0, 8, 141, 175, 224,
+			174, 174, 224, 190, 174, 224, 159, 174, 224, 141, 175, 224, 184, 174, 224, 0, 8, 141, 175, 224, 176, 174, 224, 128, 175, 224, 168, 174, 224, 0,
+			8, 141, 175, 224, 178, 174, 224, 138, 175, 224, 154, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 191, 174, 224, 181, 174, 224,
+			0, 8, 141, 175, 224, 178, 174, 224, 175, 174, 224, 134, 175, 224, 154, 174, 224, 0, 8, 191, 174, 224, 18, 75, 146, 174, 224, 0, 4, 1,
+			32, 46, 32, 191, 174, 224, 170, 174, 224, 2, 224, 174, 191, 32, 46, 32, 224, 174, 154, 224, 174, 191, 3, 71, 0, 1, 32, 129, 175, 224,
+			164, 174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224,
+			164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 129, 175, 224, 164, 174, 224, 141, 175,
+			224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174,
+			224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 141, 175, 224, 169, 174, 224, 191, 174, 224, 179,
+			174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32,
+			164, 174, 224, 141, 175, 224, 168, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224,
+			164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 164, 174, 224, 141, 175, 224, 168, 174,
+			224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 178, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 149, 174,
+			224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 32, 175, 174, 224, 136, 175, 224, 159, 174, 224, 129, 175, 224, 169,
+			174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181,
+			0, 1, 32, 175, 174, 224, 136, 175, 224, 159, 174, 224, 129, 175, 224, 169, 174, 224, 191, 174, 224, 179, 174, 224, 149, 174, 224, 141, 175, 224,
+			153, 174, 224, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 128, 175, 224, 154, 174, 224, 149, 174, 224,
+			141, 175, 224, 153, 174, 224, 176, 174, 224, 129, 175, 224, 181, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 1,
+			128, 175, 224, 154, 174, 224, 149, 174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 148, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 0, 1, 133, 174, 224, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 181, 0, 1, 141, 175, 224, 169, 174, 224, 133, 174, 224,
+			2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 1, 141, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224,
+			175, 141, 0, 1, 141, 175, 224, 169, 174, 224, 135, 174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 1, 141, 175, 224, 170, 174, 224, 191, 174,
+			224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 137, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224,
+			174, 190, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 179, 224, 175, 136, 224, 174, 175, 0, 1, 141, 175, 224, 174, 174,
+			224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 190,
+			0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 130,
+			224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 175, 130, 224, 174, 176, 0, 1, 141,
+			175, 224, 174, 174, 224, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 136, 0, 1, 141, 175, 224, 174, 174, 224, 138,
+			174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 1, 141, 175, 224, 174, 174, 224, 146, 174, 224, 2, 224, 175, 139, 224, 174, 164, 224, 175, 129,
+			224, 174, 174, 224, 175, 141, 0, 1, 141, 175, 224, 174, 174, 224, 191, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 133, 174, 224, 2,
+			224, 175, 135, 224, 174, 176, 224, 175, 141, 0, 1, 141, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 1,
+			141, 175, 224, 177, 174, 224, 164, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 1, 141, 175, 224, 177, 174, 224,
+			175, 174, 224, 135, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 178, 0, 1, 141, 175, 224, 178, 174, 224, 175, 174, 224, 135, 174, 224,
+			2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 1, 141, 175, 224, 183, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 175, 129, 0,
+			1, 149, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 181, 0, 1, 154, 174, 224, 176, 174, 224, 133, 174, 224, 2, 224,
+			175, 139, 224, 174, 149, 0, 1, 156, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 175, 139, 224, 174, 149, 0, 1, 164, 174, 224, 2, 17,
+			66, 0, 1, 164, 174, 224, 129, 175, 224, 175, 174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 1, 164, 174, 224,
+			129, 175, 224, 175, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 1,
+			174, 174, 224, 2, 17, 66, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 190, 224, 174, 163, 0, 1, 190, 174, 224, 149,
+			174, 224, 141, 175, 224, 153, 174, 224, 176, 174, 224, 148, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 149, 174, 224, 141,
+			175, 224, 153, 174, 224, 176, 174, 224, 179, 174, 224, 146, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 149, 174, 224, 190,
+			174, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 164, 174, 224, 128, 175, 224, 176, 174, 224, 170,
+			174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 191, 174, 224, 156, 174, 224, 2,
+			224, 174, 190, 224, 174, 164, 224, 175, 141, 0, 1, 190, 174, 224, 164, 174, 224, 174, 174, 224, 18, 71, 133, 174, 224, 2, 224, 174, 190, 224,
+			174, 164, 0, 1, 190, 174, 224, 164, 174, 224, 174, 174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 174, 174,
+			224, 190, 174, 224, 178, 174, 224, 141, 175, 224, 184, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 164, 0, 1, 190, 174, 224, 181, 174,
+			224, 168, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 2, 17, 66, 0, 8, 2, 17, 66, 28, 17, 12, 0, 8, 2,
+			18, 72, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224,
+			174, 190, 224, 174, 149, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224,
+			174, 149, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 181, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224,
+			175, 128, 224, 174, 176, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224,
+			174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224,
 			174, 149, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224,
-			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224,
-			175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 32, 224, 174, 170,
-			224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 32, 224, 174,
-			170, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174,
-			159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 224, 174,
-			175, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224, 174,
-			169, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174,
-			190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174,
-			190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174,
-			190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175,
-			141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174,
-			153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174,
-			176, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174,
-			163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 135, 224, 174, 156, 0, 8, 2, 224, 174,
-			190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174,
-			159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 175, 141, 224, 174,
-			170, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 175,
-			141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			178, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			181, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 181, 224, 174,
-			191, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			190, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
-			169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
-			191, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174,
-			174, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
-			129, 224, 174, 174, 224, 174, 190, 224, 174, 177, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
-			174, 159, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224,
-			175, 136, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224,
-			174, 159, 224, 175, 136, 224, 174, 175, 224, 175, 129, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 136, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224,
+			174, 159, 224, 174, 191, 32, 224, 174, 170, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 174, 190,
+			224, 174, 159, 224, 174, 191, 32, 224, 174, 170, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175,
+			141, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174,
+			190, 224, 174, 159, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 178, 224, 174, 191, 224, 174,
+			175, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8,
+			2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8,
+			2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 159, 224, 174, 169, 0, 8,
+			2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174,
+			163, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174,
+			190, 224, 174, 163, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174,
+			163, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174,
+			190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 135, 224, 174, 156, 0, 8,
+			2, 224, 174, 190, 224, 174, 164, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 130, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174,
+			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174,
+			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174,
+			164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 178, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174,
+			164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 190, 224, 174, 174, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 174, 191, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 177, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174,
+			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174,
+			164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174,
+			164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 0, 8, 2, 224, 174, 190, 224,
+			174, 164, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224,
+			175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 136, 224,
+			174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224,
+			175, 136, 224, 174, 175, 224, 175, 129, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 136, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 174, 164, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
 			174, 170, 224, 174, 190, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
 			174, 170, 224, 174, 190, 224, 174, 149, 224, 174, 191, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
 			175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
 			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
-			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
-			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
-			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
+			175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224,
+			175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 177, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224,
+			174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224,
+			174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
 			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 179, 224, 175, 141, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224,
-			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 175, 129, 224, 174, 183, 224,
-			174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 175, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224,
-			174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 153, 224, 175, 141, 224,
-			174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224,
-			174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224,
-			174, 176, 224, 175, 141, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224,
-			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 134, 224, 174, 159, 224,
-			175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 178, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224,
-			174, 170, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224,
-			174, 174, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 135, 0,
-			8, 2, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 153, 224,
-			175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224,
-			174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224,
-			174, 176, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224,
-			174, 190, 224, 174, 174, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224,
-			174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 18, 69, 224, 174,
-			178, 224, 175, 139, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 181, 0, 8,
-			2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174,
-			170, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174,
-			190, 224, 174, 178, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 154, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174,
-			164, 224, 174, 163, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174,
-			170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174,
-			176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174,
-			190, 224, 174, 178, 224, 174, 175, 224, 175, 141, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 183, 224, 174,
-			153, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 154, 224, 175, 130, 224, 174,
-			176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174,
-			190, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174,
-			170, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174,
-			191, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174,
-			191, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 181, 224, 175,
-			129, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174,
-			177, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174,
-			190, 224, 174, 178, 224, 175, 129, 224, 174, 154, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174,
-			190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 174, 149, 224, 175, 135, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174,
-			176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 135, 32, 18,
-			90, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			174, 176, 224, 175, 135, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224,
-			175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224,
-			174, 169, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 181, 224, 174, 191, 224,
-			174, 178, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			175, 129, 224, 174, 174, 224, 174, 190, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 175, 129, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 139, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224,
-			174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
-			174, 170, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224,
-			174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0,
-			8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224,
-			174, 190, 224, 174, 181, 224, 175, 135, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 175, 141, 224, 174, 168, 224, 174, 149, 224,
-			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224,
-			174, 190, 224, 174, 183, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224,
-			174, 190, 224, 174, 183, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224,
-			174, 184, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224,
-			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224,
-			175, 141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 164, 224, 174, 191, 0,
-			8, 2, 224, 174, 191, 32, 46, 32, 224, 174, 170, 224, 174, 191, 32, 46, 32, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224,
-			174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224,
-			174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224,
-			175, 130, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224,
-			174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 156, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224,
-			174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 159, 224,
-			174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224,
-			175, 141, 32, 224, 174, 178, 224, 175, 135, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 174, 191, 224, 174, 154,
-			224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 176,
-			0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224, 174, 164, 224, 175, 128, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149,
-			224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141,
-			224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 191,
-			224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 191,
-			224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129,
-			224, 174, 149, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149,
-			224, 174, 168, 224, 174, 179, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 8, 2,
-			224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 191,
-			224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 170,
-			224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 176, 32, 224, 174, 170, 224, 174, 190, 224, 174,
-			159, 224, 174, 191, 32, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0,
-			8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
-			174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224,
-			174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 174, 191, 224, 174, 169, 224, 174, 184, 0,
-			8, 2, 224, 174, 191, 224, 174, 184, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224,
-			174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0,
-			8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 139, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224,
-			174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224,
-			174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224,
-			174, 184, 224, 175, 141, 224, 174, 178, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224,
-			174, 190, 224, 174, 184, 0, 8, 2, 224, 175, 128, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224,
-			175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 178, 0,
-			8, 2, 224, 175, 128, 224, 174, 156, 0, 8, 2, 224, 175, 128, 224, 174, 156, 224, 174, 191, 224, 174, 153, 0, 8, 2, 224, 175, 128, 224,
-			174, 159, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 190, 224, 174, 181, 0,
-			8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224,
-			175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0,
-			8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224,
-			175, 128, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224,
-			175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 128, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 138, 224, 174, 178, 224, 174, 191, 0,
-			8, 2, 224, 175, 128, 224, 174, 174, 0, 8, 2, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 153, 224,
-			175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 176, 0,
-			8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 139, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224,
-			174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 183, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 175, 128, 224, 174, 185, 224, 174, 190, 224,
-			174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 224,
-			175, 141, 224, 174, 177, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224,
-			174, 149, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224,
-			175, 129, 224, 174, 156, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224,
-			174, 164, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0,
-			8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 154, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0,
-			8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224,
-			175, 129, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 154, 224, 174, 176, 0, 8, 2, 224,
+			174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224,
+			174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 175, 139, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 164, 0, 8, 2, 224,
+			174, 190, 224, 174, 164, 224, 175, 129, 224, 174, 183, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 175, 224,
+			174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224,
+			174, 190, 224, 174, 169, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 174, 224,
+			175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224,
+			174, 169, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 169, 224, 175, 129, 0, 8, 2, 224,
+			174, 190, 224, 174, 169, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 170, 224, 174, 191, 224, 174, 178, 224,
+			175, 139, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 170, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224,
+			174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224,
+			174, 174, 224, 174, 191, 224, 174, 176, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
+			174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 149, 224,
+			174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 175, 135, 0, 8, 2, 224, 174, 190, 224, 174, 175, 224,
+			175, 141, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224,
+			174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 0, 8, 2, 224,
+			174, 190, 224, 174, 176, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0,
+			8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 174, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224,
+			174, 176, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 129, 224, 174, 178, 224,
+			175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224,
+			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 18, 69, 224, 174, 178, 224, 175, 139, 224, 174, 169, 224, 174, 190, 0, 8,
+			2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174,
+			154, 224, 174, 191, 224, 174, 178, 224, 175, 139, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 174,
+			176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175,
+			141, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 174, 154, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 164, 224, 174, 163, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 159, 0, 8,
+			2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 0, 8,
+			2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 174, 224, 175,
+			141, 224, 174, 174, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 175, 224, 175, 139, 224, 174, 149, 0, 8,
+			2, 224, 174, 190, 224, 174, 178, 224, 174, 175, 224, 175, 141, 224, 174, 175, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174,
+			183, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 154, 224, 175,
+			130, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 175,
+			141, 224, 174, 170, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174,
+			170, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174,
+			178, 224, 174, 191, 224, 174, 164, 224, 175, 141, 32, 224, 174, 164, 224, 175, 128, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224,
+			174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 181, 224,
+			175, 129, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224,
+			174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 154, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224,
+			174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 154, 224, 175, 129, 224, 174, 181, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224,
+			174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 174, 149, 224, 175, 135, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
+			174, 176, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 135, 32,
+			18, 90, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 136, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 190, 224,
+			174, 178, 224, 175, 141, 32, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 175, 135, 0, 8, 2,
+			224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 8, 2,
+			224, 174, 190, 224, 174, 181, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 169, 224, 175, 136, 0, 8, 2,
+			224, 174, 190, 224, 174, 181, 224, 174, 174, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 168, 224, 174, 190, 224, 174, 169, 224, 175,
+			135, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 164, 224, 175, 141, 0, 8,
+			2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174,
+			159, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 178, 0, 8, 2, 224, 174,
+			190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 181, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174,
+			178, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 169, 224, 175,
+			141, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
+			177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 224, 174,
+			190, 224, 174, 177, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174,
+			174, 224, 175, 134, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174,
+			174, 224, 175, 141, 224, 174, 170, 224, 175, 139, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 0, 8,
+			2, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 174,
+			190, 224, 174, 181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174,
+			181, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 175,
+			135, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 181, 224, 175, 141, 224, 174, 168, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174,
+			190, 224, 174, 183, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 174,
+			190, 224, 174, 170, 224, 174, 191, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 174, 190, 224, 174,
+			181, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 183, 224, 175, 136, 0, 8,
+			2, 224, 174, 190, 224, 174, 183, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 174, 168, 224, 175, 141, 224, 174,
+			164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 190, 224, 174,
+			184, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174,
+			159, 224, 175, 141, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174,
+			184, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174,
+			174, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 185, 224, 175, 129, 224, 174, 178, 224, 175, 135, 224, 174, 175, 224, 174,
+			169, 0, 8, 2, 224, 174, 191, 32, 46, 32, 224, 174, 170, 224, 174, 191, 32, 46, 32, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174,
+			191, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174,
+			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 183, 0, 8,
+			2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			183, 224, 175, 130, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 174, 154, 0, 8, 2, 224, 174, 191, 224, 174,
+			154, 224, 174, 191, 224, 174, 169, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 175, 134, 224, 174,
+			154, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 169, 224, 175, 134, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174,
+			154, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 156, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174,
+			191, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			159, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 154, 224, 174, 190, 224, 174,
+			176, 0, 8, 2, 224, 174, 191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 190, 0, 8, 2, 224, 174,
+			191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 168, 224, 175,
+			141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 190, 224, 174, 174, 224, 174,
+			191, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 224, 174, 178, 224, 175, 135, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224,
+			174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 191, 224,
+			174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224,
+			174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224,
+			174, 169, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224,
+			174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 174, 191, 224, 174, 154, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 174, 224,
+			175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224,
+			174, 164, 224, 175, 128, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224,
+			174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224,
+			174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224,
+			174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
+			174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 174, 168, 224, 174, 179, 0, 8, 2, 224, 174, 191, 224,
+			174, 176, 224, 175, 129, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224,
+			174, 183, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 191, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224,
+			174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224,
+			174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224,
+			174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224,
+			174, 159, 224, 174, 176, 32, 224, 174, 170, 224, 174, 190, 224, 174, 159, 224, 174, 191, 32, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175,
+			141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174,
+			190, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175,
+			141, 224, 174, 178, 224, 175, 129, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 136, 0, 8, 2, 224, 174,
+			191, 224, 174, 184, 224, 174, 191, 224, 174, 169, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 174, 191, 224, 174, 175, 0, 8,
+			2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175,
+			141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175,
+			139, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 190, 224, 174, 176, 224, 175,
+			141, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175,
+			141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 178, 224, 174, 176, 224, 174, 191, 0, 8,
+			2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 185, 224, 174,
+			190, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 175,
+			141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 178, 0, 8,
+			2, 224, 175, 128, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 175, 128, 224, 174, 156, 0, 8, 2, 224, 175,
+			128, 224, 174, 156, 224, 174, 191, 224, 174, 153, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174,
+			149, 224, 174, 179, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 175,
+			136, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 175, 129, 224, 174, 149, 224, 175,
+			136, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174,
+			159, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 128, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175,
+			139, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 128, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 224, 175, 138, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 175, 128, 224, 174, 174, 0, 8, 2, 224, 175,
+			128, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 175,
+			128, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 176, 0, 8, 2, 224, 175, 128, 224, 174, 176, 224, 175, 139, 0, 8,
+			2, 224, 175, 128, 224, 174, 176, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 128, 224, 174, 183, 224, 175,
+			141, 224, 174, 174, 0, 8, 2, 224, 175, 128, 224, 174, 185, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 129, 18, 69, 224, 175, 129,
+			224, 174, 170, 224, 175, 129, 18, 69, 224, 175, 129, 0, 8, 2, 224, 175, 129, 18, 69, 224, 175, 129, 224, 174, 181, 224, 175, 134, 0, 8,
+			2, 224, 175, 129, 224, 174, 149, 224, 174, 190, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
+			153, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175,
+			129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 175, 129, 224, 174,
+			149, 224, 175, 141, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 8,
+			2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 175, 129, 224, 174, 156, 0, 8, 2, 224, 175, 129, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 0, 8,
+			2, 224, 175, 129, 224, 174, 164, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 154, 224, 174, 190, 224, 174,
+			178, 224, 174, 191, 0, 8, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175,
+			129, 224, 174, 176, 224, 175, 129, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 129, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 175,
+			141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 32, 224, 174, 183, 224, 174, 191, 224, 174, 159, 224,
+			175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 154, 224, 174, 176, 0, 8, 2, 224,
 			175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224,
 			174, 178, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 129, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224,
-			175, 129, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 129, 224, 174, 184, 224, 175, 141, 224,
-			174, 184, 224, 175, 134, 0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224,
-			174, 149, 224, 175, 139, 224, 174, 178, 0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 175, 139, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224,
-			174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224,
-			174, 159, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 149, 224, 174, 163, 0, 8, 2, 224, 175, 130, 224,
-			174, 164, 224, 174, 149, 224, 174, 163, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 149, 224,
-			175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 164, 224,
-			175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 170, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224,
-			174, 175, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 174, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 181, 224, 175, 129, 224,
-			174, 159, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 174, 176, 0,
-			8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224,
-			174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 135, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224,
-			175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224,
-			175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224,
-			175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224,
-			174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 130, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224,
-			174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224,
-			175, 130, 224, 174, 170, 224, 174, 169, 224, 175, 135, 0, 8, 2, 224, 175, 130, 224, 174, 170, 224, 174, 190, 224, 174, 179, 0, 8, 2, 224,
-			175, 130, 224, 174, 174, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224,
-			174, 190, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 190, 224, 174, 164, 224, 175, 135, 224, 174, 181, 224,
-			174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 191, 0,
-			8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 183, 0, 8, 2, 224, 175, 130, 224, 174, 178, 224, 175, 139, 224, 174, 149, 0,
-			8, 2, 224, 175, 130, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224,
-			175, 130, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224,
-			175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 174, 174, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224,
-			175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224, 175, 134, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 178, 0,
-			8, 2, 224, 175, 134, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 149, 224, 175, 139, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0,
-			8, 2, 224, 175, 134, 224, 174, 169, 224, 174, 154, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224,
-			174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224,
-			174, 183, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224,
-			174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224,
-			175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 224, 174, 153, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224,
-			174, 178, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 179, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224,
-			175, 135, 224, 174, 149, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 175, 135, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224,
-			175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224,
-			174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224,
-			174, 154, 224, 175, 129, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 156, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224,
-			175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0,
-			8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 174, 224, 174, 191, 0,
-			8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 174, 224, 175, 129, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 178, 224, 174, 191, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 169, 224,
-			174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 174, 190, 224, 174, 169, 224,
-			174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224,
-			175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224,
-			175, 135, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224, 174, 190, 0, 8, 2, 224, 175, 136, 32, 224, 174, 170,
-			224, 175, 136, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2,
-			224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149,
-			224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174,
-			0, 8, 2, 224, 175, 136, 224, 174, 154, 224, 174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2,
-			224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174, 174, 224, 174, 191,
-			0, 8, 2, 224, 175, 136, 224, 174, 170, 224, 174, 191, 224, 174, 179, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 169, 0, 8, 2,
-			224, 175, 136, 224, 174, 176, 224, 174, 181, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 191, 0, 8, 2,
-			224, 175, 138, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 135, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174,
-			224, 174, 169, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 178, 0, 8, 2, 224, 175, 138, 224, 174, 174,
-			224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 131, 224, 174, 170, 224, 175, 139, 224, 174, 176, 224, 175, 141,
-			0, 8, 2, 224, 175, 139, 224, 174, 149, 32, 18, 78, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149,
-			0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 178, 224, 175, 141,
-			224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191,
-			224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 139,
-			224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2,
-			224, 175, 139, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 175, 139, 224, 174, 156, 0, 8, 2, 224, 175, 139,
-			224, 174, 159, 224, 175, 139, 0, 8, 2, 224, 175, 139, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 139,
-			224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 149, 224, 174, 169, 0, 8, 2,
-			224, 175, 139, 224, 174, 164, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 169, 0, 8, 2, 224, 175, 139,
-			224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 154,
-			224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 154, 224, 174, 164, 224, 175, 141, 224, 174, 181,
-			0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 175, 139,
-			224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141,
-			224, 174, 170, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 164,
-			224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 169,
-			224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 175, 136,
-			0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 178, 224, 175, 135, 0, 8, 2, 224, 175, 139,
-			224, 174, 176, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 159, 224, 174, 191,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 159, 224, 174, 191,
-			224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 129, 224, 174, 174,
-			224, 175, 141, 32, 224, 174, 133, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 32, 224, 174, 133, 224,
-			174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 141, 32,
-			224, 174, 133, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 181, 224, 175, 134, 224, 174, 178,
-			224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 183, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 184, 0, 8, 2, 224, 175, 139,
-			224, 174, 184, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 175, 140,
-			224, 174, 164, 224, 175, 128, 224, 174, 149, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 140,
-			224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 178, 224, 174, 191, 224, 174, 153, 224, 175, 141,
-			0, 8, 2, 224, 175, 140, 224, 174, 179, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 140, 224, 174, 183, 0, 8, 32,
-			18, 77, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 32, 18, 86, 2, 224, 174, 190,
-			224, 174, 181, 0, 8, 32, 136, 175, 224, 170, 174, 224, 2, 224, 175, 136, 0, 8, 32, 141, 175, 224, 159, 174, 224, 134, 175, 224, 159, 174,
-			224, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 32, 141, 175, 224, 174, 174, 224, 130, 175, 224, 176, 174, 224, 2, 224, 174, 190,
-			224, 174, 175, 0, 8, 32, 141, 175, 224, 176, 174, 224, 128, 175, 224, 154, 174, 224, 169, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 175,
-			129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 0, 8, 32, 191, 174, 224, 159, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224,
-			174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32,
-			0, 8, 141, 175, 224, 163, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 141, 175, 224, 169, 174, 224, 129,
-			175, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 169, 174, 224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 159,
-			0, 8, 141, 175, 224, 169, 174, 224, 176, 174, 224, 135, 175, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 141,
-			175, 224, 170, 174, 224, 191, 174, 224, 179, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 8, 141, 175, 224, 176,
-			174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 159, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 2,
-			224, 175, 139, 224, 174, 159, 0, 8, 141, 175, 224, 184, 174, 224, 134, 175, 224, 178, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 169,
-			0, 8, 141, 175, 224, 184, 174, 224, 142, 174, 224, 129, 175, 224, 175, 174, 224, 2, 224, 174, 191, 0, 8, 149, 174, 224, 2, 224, 174, 190,
-			224, 174, 159, 224, 174, 170, 224, 175, 129, 224, 174, 176, 12, 0, 8, 149, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 149, 174, 224,
-			143, 174, 224, 2, 224, 175, 139, 224, 174, 149, 0, 8, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 174, 174, 224, 154, 174, 224,
-			2, 224, 174, 190, 224, 174, 149, 0, 8, 176, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 176, 174, 224,
-			174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 175, 136, 0, 8, 181, 174, 224, 191, 174, 224, 154, 174, 224,
-			2, 224, 174, 190, 224, 174, 178, 224, 174, 169, 0, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 8,
-			190, 174, 224, 154, 174, 224, 141, 175, 224, 158, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 190, 174, 224,
-			176, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8, 190, 174, 224, 178, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224,
-			174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 190, 174, 224, 181, 174, 224, 156, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0,
-			224, 174, 191, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 1, 134, 174, 224, 2, 224,
-			174, 176, 224, 174, 185, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181, 174, 224, 2, 224,
-			174, 176, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 164, 174, 224, 191, 174,
-			224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 169, 174, 224, 174, 174,
-			224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174,
-			224, 175, 174, 224, 170, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191,
-			2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 169, 224, 174, 184, 224, 175,
-			141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 164, 224, 175, 128, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 149, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 154, 224,
-			174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 224, 175, 141, 32, 0, 224, 174,
-			191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174,
-			190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			174, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174,
-			174, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 183, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 185, 224, 174, 164, 224, 175, 128, 224, 174, 154, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174,
-			176, 224, 174, 185, 224, 174, 164, 224, 175, 128, 224, 174, 184, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 185, 224, 174,
-			184, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174,
-			178, 224, 174, 190, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 181, 224, 175,
-			135, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 32, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 0, 224,
-			174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
-			190, 224, 174, 174, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 190, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 177, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 129, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 136, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 135, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			174, 191, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224,
-			174, 169, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224,
-			174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0,
-			224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
-			175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224,
-			174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 181, 224,
-			175, 129, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 140, 224, 174, 184, 0, 224, 174, 191, 8, 141, 175, 224, 174, 174,
-			224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190, 224, 174, 175, 0, 224, 175, 128, 8, 2, 224, 174, 176, 224, 174, 190, 224,
-			174, 174, 224, 174, 163, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224,
-			174, 176, 224, 175, 129, 224, 174, 169, 224, 174, 190, 224, 174, 175, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224,
-			175, 141, 224, 174, 149, 224, 174, 176, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224,
-			174, 179, 224, 175, 130, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 154, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0,
-			224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 181, 224,
-			175, 129, 224, 174, 154, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224,
-			174, 184, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224,
-			174, 164, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224,
-			175, 129, 224, 174, 169, 224, 174, 190, 224, 174, 175, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0,
-			224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224,
-			175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224,
-			174, 176, 224, 175, 136, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
-			174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 154, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 140, 224,
-			174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 181, 224, 175, 129, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224,
-			175, 130, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 175, 140, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191,
-			1, 129, 175, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175,
-			129, 8, 2, 224, 174, 149, 224, 174, 169, 224, 175, 141, 224, 174, 168, 224, 174, 179, 224, 175, 136, 3, 71, 34, 37, 0, 224, 174, 191, 224,
-			174, 176, 224, 175, 129, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191,
-			224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 135, 224, 174, 169, 3, 71, 34, 37, 89, 71, 0, 224, 175, 141, 224, 174, 176,
-			224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 135, 224, 174, 169, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129,
-			8, 2, 224, 174, 174, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 3, 71, 34, 109, 65, 0, 224, 174, 191, 224, 174, 176, 224,
-			174, 174, 8, 2, 224, 174, 169, 3, 71, 34, 109, 65, 65, 109, 0, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 154, 8, 2, 224,
-			174, 191, 224, 174, 178, 3, 71, 34, 114, 88, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8,
-			3, 71, 34, 118, 67, 76, 0, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 163,
-			224, 175, 141, 224, 174, 159, 3, 71, 36, 34, 140, 0, 224, 175, 134, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 178, 3, 71, 36, 47,
-			0, 224, 175, 134, 224, 174, 169, 224, 174, 190, 224, 174, 154, 8, 2, 224, 175, 128, 224, 174, 176, 3, 71, 36, 50, 118, 88, 0, 224, 175,
-			134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 2, 224, 174, 174, 224, 174, 191, 224, 174, 169, 3, 71, 36, 67, 75, 109, 0, 224, 175,
-			134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 3, 71, 36, 67, 76, 149, 0, 224, 175, 134, 224, 174, 170, 224, 175, 141, 224, 174, 170,
-			8, 2, 224, 175, 135, 3, 71, 36, 71, 71, 0, 224, 175, 134, 224, 174, 154, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 71, 36,
-			89, 109, 66, 140, 149, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 183, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 3, 71,
-			36, 141, 93, 112, 140, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 175, 129, 3, 71, 36, 141, 141, 0, 224, 174, 191, 224, 174, 170, 8, 2, 224, 174, 191, 3, 71, 37, 48, 0, 224, 174, 191,
-			224, 174, 183, 224, 174, 170, 224, 175, 141, 8, 3, 71, 37, 93, 109, 48, 0, 224, 175, 129, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174,
-			176, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 3, 71, 40, 49, 0, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178,
-			224, 175, 134, 224, 174, 159, 224, 175, 141, 8, 3, 71, 40, 55, 55, 36, 140, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164,
-			8, 2, 25, 3, 71, 40, 72, 72, 109, 0, 224, 175, 129, 224, 174, 159, 224, 174, 190, 224, 174, 170, 8, 2, 224, 175, 134, 224, 174, 184,
-			224, 175, 141, 224, 174, 159, 3, 71, 40, 141, 118, 48, 0, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 149, 224, 175, 141, 8, 3,
-			71, 55, 118, 49, 0, 4, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 164, 224, 175, 141, 3, 71,
-			71, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 174, 0, 224, 175, 141, 224, 174, 170, 1, 129,
-			175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 174, 163, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174,
-			170, 1, 133, 174, 224, 2, 224, 174, 190, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 1, 133, 174, 224, 2, 224, 174, 191, 224, 174, 175,
-			224, 174, 190, 224, 174, 154, 0, 224, 175, 141, 224, 174, 170, 1, 135, 174, 224, 2, 224, 175, 130, 224, 174, 174, 224, 174, 191, 0, 224, 175,
-			141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 191, 32, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 191, 224, 174,
-			169, 32, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 224, 175, 141, 224, 174, 170,
-			1, 137, 174, 224, 2, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 175, 129, 224, 174, 154, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 175, 129, 224, 174, 154, 224, 174, 174, 0,
-			224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 224, 174, 191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224,
-			175, 139, 224, 174, 164, 224, 174, 169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 134, 174, 224, 2, 224,
-			174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 1, 191, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224,
-			174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 1, 191, 174, 224, 164, 174, 224, 129, 175, 224, 177, 174, 224, 135, 174, 224, 2, 224,
-			174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 176, 174, 224, 164, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141,
-			224, 174, 170, 8, 149, 174, 224, 135, 175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224,
-			175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 156, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141,
-			224, 174, 170, 8, 156, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0,
-			224, 175, 141, 224, 174, 170, 8, 159, 174, 224, 2, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 8, 159, 174, 224, 2, 224, 174, 191, 224,
-			174, 153, 224, 175, 141, 0, 224, 175, 141, 224, 174, 170, 8, 178, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 8, 179, 174,
-			224, 141, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 224, 175, 141, 224, 174, 170, 8, 185, 174, 224, 2, 224,
-			174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 169, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224,
-			175, 136, 0, 4, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 174, 190, 3,
-			71, 71, 109, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 224, 174, 170,
-			1, 18, 68, 2, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 1, 133, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
-			174, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 178, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224,
-			174, 170, 1, 137, 174, 224, 2, 224, 174, 178, 224, 174, 190, 224, 174, 169, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224,
-			191, 174, 224, 168, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224,
-			191, 174, 224, 168, 174, 224, 2, 224, 174, 175, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 175, 174, 224,
-			137, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 137, 174, 224, 2, 224, 174, 178, 224, 175, 141, 32, 0,
-			224, 175, 141, 224, 174, 170, 8, 176, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 170, 8, 179, 174, 224, 149, 174, 224, 2, 224,
-			174, 178, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 191, 174, 224, 176, 174, 224, 2, 224, 174, 169, 0, 4, 224, 175, 141, 224, 174,
-			170, 1, 141, 175, 224, 176, 174, 224, 149, 174, 224, 3, 71, 71, 149, 0, 224, 175, 141, 224, 174, 170, 8, 129, 175, 224, 154, 174, 224, 0,
-			224, 175, 141, 224, 174, 170, 8, 129, 175, 224, 154, 174, 224, 174, 174, 224, 190, 174, 224, 176, 174, 224, 0, 224, 175, 141, 224, 174, 170, 8,
-			190, 174, 224, 181, 174, 224, 168, 174, 224, 0, 4, 3, 71, 109, 0, 1, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 159, 224,
-			174, 191, 0, 1, 141, 175, 224, 170, 174, 224, 136, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 1, 141, 175, 224, 170, 174,
-			224, 136, 175, 224, 178, 174, 224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 179, 224, 175, 129, 0, 1, 141, 175, 224, 170, 174, 224, 164, 174,
-			224, 129, 175, 224, 175, 174, 224, 134, 174, 224, 2, 224, 174, 178, 0, 1, 141, 175, 224, 174, 174, 224, 2, 224, 174, 159, 0, 1, 141, 175,
-			224, 174, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 1, 141, 175,
-			224, 184, 174, 224, 133, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 1, 149, 174, 224, 2, 224, 174, 159, 0, 1, 164, 174,
-			224, 2, 224, 174, 184, 0, 1, 174, 174, 224, 141, 175, 224, 164, 174, 224, 134, 174, 224, 2, 224, 174, 178, 0, 1, 174, 174, 224, 141, 175,
-			224, 169, 174, 224, 134, 174, 224, 2, 224, 174, 178, 0, 1, 174, 174, 224, 176, 174, 224, 170, 174, 224, 2, 224, 174, 149, 224, 175, 141, 224,
-			174, 164, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 149, 224, 175, 141, 224, 174, 164, 0, 1, 175, 174, 224, 191, 174,
+			175, 129, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 163, 0, 8, 2, 224, 175, 129, 224, 174, 184, 224, 175, 141, 224,
+			174, 184, 224, 175, 134, 0, 8, 2, 224, 175, 129, 224, 174, 185, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224,
+			174, 149, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224, 174, 149, 224, 175, 139, 224, 174, 178, 0, 8, 2, 224,
+			175, 130, 224, 174, 149, 224, 175, 139, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 154, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
+			174, 164, 0, 8, 2, 224, 175, 130, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224,
+			174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 159, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 149, 224,
+			174, 163, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 149, 224, 174, 163, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224,
+			175, 130, 224, 174, 164, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224,
+			175, 130, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 170, 224, 174, 190, 224, 174, 163, 224,
+			175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 174, 0, 8, 2, 224, 175, 130, 224,
+			174, 164, 224, 174, 181, 224, 175, 129, 224, 174, 159, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224,
+			174, 190, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0,
+			8, 2, 224, 175, 130, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 135, 224, 174, 181, 224,
+			174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 130, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
+			175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 170, 224,
+			175, 141, 0, 8, 2, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 175, 130, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224,
+			174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 130, 224, 174, 170, 224, 174, 169, 224, 175, 135, 0, 8, 2, 224, 175, 130, 224, 174, 170, 224,
+			174, 190, 224, 174, 179, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 0,
+			8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 190, 224, 174, 164, 224, 174, 190, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 190, 224,
+			174, 164, 224, 175, 135, 224, 174, 181, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 174, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224,
+			175, 130, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 130, 224, 174, 176, 224, 175, 141, 224, 174, 183, 0, 8, 2, 224, 175, 130, 224,
+			174, 178, 224, 175, 139, 224, 174, 149, 0, 8, 2, 224, 175, 130, 224, 174, 183, 224, 174, 163, 0, 8, 2, 224, 175, 130, 224, 174, 183, 224,
+			174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224,
+			175, 134, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224,
+			174, 154, 224, 174, 174, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0,
+			8, 2, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 174, 0, 8, 2, 224, 175, 134, 224, 174, 164, 224,
+			175, 141, 224, 174, 164, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 149, 224, 175, 139, 224,
+			174, 184, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 174, 154, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224,
+			175, 134, 224, 174, 169, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224,
+			174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224,
+			174, 178, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224,
+			174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 183, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224,
+			174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224,
+			175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224,
+			174, 191, 224, 174, 153, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224,
+			175, 134, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 134, 224, 174, 179, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224,
+			175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 175, 135, 18, 69, 224, 174, 176, 224, 174, 191, 0, 8,
+			2, 224, 175, 135, 224, 174, 149, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 175,
+			135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 191, 224, 174, 153, 224, 175, 141, 32, 224, 174, 154, 224, 175, 139, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 135, 224,
+			174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 178, 224,
+			174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224,
+			175, 135, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 175, 129, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 156, 224,
+			174, 190, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 156, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224,
+			175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0,
+			8, 2, 224, 175, 135, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224,
+			174, 159, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174, 169, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224,
+			174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224,
+			174, 174, 224, 175, 129, 0, 8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 178, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0,
+			8, 2, 224, 175, 135, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 169, 224, 174, 176, 0, 8, 2, 224, 175, 135, 224,
+			174, 170, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224,
+			174, 176, 224, 174, 178, 0, 8, 2, 224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0,
+			8, 2, 224, 175, 135, 224, 174, 178, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 175, 130, 224,
+			174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224, 174, 190, 0, 8, 2, 224,
+			175, 135, 224, 174, 184, 224, 175, 141, 32, 224, 174, 170, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 175, 136, 32, 224, 174, 170, 224, 175,
+			136, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 175,
+			136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174,
+			191, 224, 174, 178, 0, 8, 2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 8,
+			2, 224, 175, 136, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175, 136, 224, 174, 154, 224, 174,
+			169, 0, 8, 2, 224, 175, 136, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174,
+			149, 0, 8, 2, 224, 175, 136, 224, 174, 169, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 8, 2, 224, 175, 136, 224, 174, 170, 224, 174,
+			191, 224, 174, 179, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 176, 224, 174, 181, 0, 8,
+			2, 224, 175, 136, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 174, 191, 0, 8, 2, 224, 175, 138, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 135, 0, 8, 2, 224, 175, 138, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 169, 0, 8, 2, 224, 175, 138, 224, 174,
+			174, 224, 175, 141, 224, 174, 174, 224, 174, 178, 0, 8, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 8,
+			2, 224, 175, 138, 224, 174, 178, 224, 174, 191, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 131, 224, 174,
+			170, 224, 174, 176, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 139, 224, 174, 131, 224, 174, 170, 224, 175, 139, 224, 174, 176, 224, 175,
+			141, 0, 8, 2, 224, 175, 139, 224, 174, 149, 32, 18, 78, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174,
+			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 178, 224, 175,
+			141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174,
+			176, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174,
+			191, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174,
+			153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 8,
+			2, 224, 175, 139, 224, 174, 156, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 139, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175,
+			141, 224, 174, 184, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 163, 224, 174, 191, 0, 8,
+			2, 224, 175, 139, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 175, 139, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 149, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174,
+			149, 224, 174, 176, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175,
+			139, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174,
+			164, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175,
+			139, 224, 174, 164, 224, 174, 191, 224, 174, 154, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174,
+			154, 224, 174, 164, 224, 175, 141, 224, 174, 181, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 174, 176, 224, 175,
+			141, 224, 174, 174, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174,
+			164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 174,
+			191, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 164, 224, 175,
+			136, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174,
+			169, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 184, 224, 175, 141, 224, 174,
+			178, 224, 175, 135, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 174,
+			159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 174, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 175,
+			139, 224, 174, 176, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 164, 0, 8, 2, 224, 175,
+			139, 224, 174, 176, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 175,
+			139, 224, 174, 176, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 133, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224,
+			174, 176, 224, 175, 141, 32, 224, 174, 133, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 159,
+			18, 96, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 175, 141, 32, 224, 174, 133, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 175, 139,
+			224, 174, 176, 224, 175, 141, 224, 174, 181, 224, 175, 134, 224, 174, 178, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 183, 224, 174, 191,
+			0, 8, 2, 224, 175, 139, 224, 174, 184, 0, 8, 2, 224, 175, 139, 224, 174, 184, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 175, 140,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 174, 191, 224, 174, 149,
+			0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 175, 128, 224, 174, 149, 0, 8, 2, 224, 175, 140, 224, 174, 164, 224, 175, 141, 224, 174, 164,
+			0, 8, 2, 224, 175, 140, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 175, 140, 224, 174, 178, 224, 174, 191,
+			224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 140, 224, 174, 179, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 175, 140,
+			224, 174, 183, 0, 8, 32, 18, 77, 2, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 32,
+			18, 86, 2, 224, 174, 190, 224, 174, 181, 0, 8, 32, 136, 175, 224, 170, 174, 224, 2, 224, 175, 136, 0, 8, 32, 141, 175, 224, 159, 174,
+			224, 134, 175, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 174, 191, 0, 8, 32, 141, 175, 224, 174, 174, 224, 130, 175, 224, 176,
+			174, 224, 2, 224, 174, 190, 224, 174, 175, 0, 8, 32, 141, 175, 224, 174, 174, 224, 136, 175, 224, 159, 174, 224, 2, 224, 174, 190, 224, 174,
+			174, 0, 8, 32, 141, 175, 224, 176, 174, 224, 128, 175, 224, 154, 174, 224, 169, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 175, 129, 224,
+			174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 0, 8, 32, 191, 174, 224, 159, 174, 224, 190, 174, 224, 170, 174, 224, 2, 224, 174, 191,
+			224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 128, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 153,
+			224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 133, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8,
+			141, 175, 224, 163, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 8, 141, 175, 224, 163, 174, 224, 170, 174,
+			224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 141, 175, 224, 163, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224,
+			174, 177, 0, 8, 141, 175, 224, 169, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 169, 174,
+			224, 133, 174, 224, 2, 224, 175, 129, 224, 174, 159, 0, 8, 141, 175, 224, 169, 174, 224, 176, 174, 224, 135, 175, 224, 170, 174, 224, 2, 224,
+			174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 141, 175, 224, 170, 174, 224, 191, 174, 224, 179, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224,
+			174, 190, 224, 174, 149, 0, 8, 141, 175, 224, 174, 174, 224, 129, 175, 224, 176, 174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 175, 129, 224,
+			174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 168, 174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 179, 174,
+			224, 134, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 179, 174, 224, 191, 174, 224, 149, 174,
+			224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 174, 174, 224, 185, 174, 224, 2, 224, 174, 191, 224, 174, 179, 0, 8, 141, 175,
+			224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 159, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174,
+			224, 2, 224, 175, 129, 224, 174, 177, 0, 8, 141, 175, 224, 176, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 159, 0,
+			8, 141, 175, 224, 177, 174, 224, 135, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 8, 141, 175, 224, 177, 174, 224, 168, 174,
+			224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 175, 0, 8, 141, 175, 224, 177, 174, 224, 168, 174,
+			224, 2, 224, 175, 130, 224, 174, 174, 224, 174, 191, 0, 8, 141, 175, 224, 184, 174, 224, 134, 175, 224, 178, 174, 224, 2, 224, 174, 191, 224,
+			174, 175, 224, 174, 169, 0, 8, 141, 175, 224, 184, 174, 224, 142, 174, 224, 129, 175, 224, 175, 174, 224, 2, 224, 174, 191, 0, 8, 149, 174,
+			224, 2, 224, 174, 190, 224, 174, 159, 224, 174, 170, 224, 175, 129, 224, 174, 176, 12, 0, 8, 149, 174, 224, 129, 175, 224, 154, 174, 224, 2,
+			224, 175, 139, 224, 174, 149, 32, 0, 8, 149, 174, 224, 129, 175, 224, 175, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 174, 164, 224, 174,
+			191, 0, 8, 149, 174, 224, 141, 175, 224, 153, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 8, 149, 174, 224, 143, 174, 224,
+			2, 224, 175, 139, 224, 174, 149, 0, 8, 169, 174, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 175, 141, 32, 0, 8, 174, 174,
+			224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 8, 176, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0,
+			8, 176, 174, 224, 174, 174, 224, 2, 224, 175, 129, 224, 174, 176, 224, 174, 191, 224, 174, 174, 224, 175, 136, 0, 8, 181, 174, 224, 191, 174,
+			224, 154, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224, 174, 169, 0, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 178, 224,
+			174, 191, 0, 8, 190, 174, 224, 154, 174, 224, 141, 175, 224, 158, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0,
+			8, 190, 174, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8, 190, 174, 224, 178, 174, 224, 129, 175, 224, 149,
+			174, 224, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 0, 8, 190, 174, 224, 181, 174, 224, 156, 174, 224, 2, 224, 174, 191, 224, 174, 169,
+			224, 175, 141, 0, 224, 174, 191, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 1, 134,
+			174, 224, 2, 224, 174, 176, 224, 174, 185, 224, 174, 190, 224, 174, 174, 0, 224, 174, 191, 1, 141, 175, 224, 163, 174, 224, 128, 175, 224, 181,
+			174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 141, 175, 224, 164,
+			174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 1, 141, 175, 224, 170, 174, 224, 169,
+			174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 1, 141,
+			175, 224, 170, 174, 224, 175, 174, 224, 170, 174, 224, 2, 224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191,
+			0, 224, 174, 191, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 224, 174, 169, 224,
+			174, 184, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 149, 224, 174, 164, 224, 175, 128, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 149, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 154, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 224, 175, 141,
+			32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 174, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224,
+			174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 164, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 174, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224,
+			175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 139, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 174, 224, 175, 141, 224, 174, 174, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 169, 0,
+			224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 181, 224, 175, 129, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 169, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 184, 224, 174, 178, 224, 175, 141, 224,
+			174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 185, 224, 174, 164, 224, 175, 128, 224, 174, 154, 224, 175, 129, 0, 224, 174, 191,
+			8, 2, 224, 174, 176, 224, 174, 185, 224, 174, 164, 224, 175, 128, 224, 174, 184, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224,
+			174, 185, 224, 174, 184, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
+			174, 179, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 184, 224,
+			175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224,
+			174, 181, 224, 175, 135, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 32,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 178, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 169, 224, 175, 141, 224, 174, 164, 224, 174, 191, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224,
+			174, 163, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224,
+			174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 174, 163, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 175, 224, 175, 141, 224, 174, 178, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 181, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 169, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 174, 191, 224, 174, 177, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 181, 224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 129, 224, 174, 149,
+			224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 224, 175, 136, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 135, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191,
+			224, 174, 156, 224, 175, 135, 224, 174, 183, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 224, 174, 191, 8, 2,
+			224, 174, 176, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 184,
+			224, 175, 141, 224, 174, 159, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 149, 224, 175, 129, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175,
+			224, 174, 191, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135,
+			224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 175, 224, 174, 191, 224, 174, 178,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 136, 224, 174, 178, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 154,
+			0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 169, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 159, 224, 175, 141,
+			0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 181, 224, 175, 129, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 175, 140,
+			224, 174, 184, 0, 224, 174, 191, 8, 141, 175, 224, 174, 174, 224, 135, 175, 224, 149, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159,
+			224, 175, 141, 224, 174, 156, 0, 224, 174, 191, 8, 141, 175, 224, 174, 174, 224, 154, 174, 224, 2, 224, 174, 176, 224, 174, 164, 224, 174, 190,
+			224, 174, 175, 0, 224, 175, 128, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 0, 224, 175, 129, 8, 2, 224, 174, 176,
+			224, 174, 181, 224, 175, 129, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 129, 224, 174, 169, 224, 174, 190, 224, 174, 175,
+			0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 224, 175, 129, 8, 2,
+			224, 174, 176, 224, 175, 140, 224, 174, 154, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 130, 224, 174, 184, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 174, 154, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 174, 224, 175, 141,
+			224, 174, 174, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 181, 224, 175, 129, 224, 174, 154, 0, 224, 175, 141, 8, 2, 224, 174, 176,
+			224, 174, 181, 224, 175, 129, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 183, 224, 175, 141, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 174, 184, 224, 174, 178, 224, 175, 141, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 164,
+			224, 175, 141, 224, 174, 164, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 181, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 175, 129, 224, 174, 169, 224, 174, 190, 224, 174, 175, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 159,
+			224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 8, 2,
+			224, 174, 176, 224, 175, 134, 224, 174, 175, 224, 175, 141, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 184,
+			224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175,
+			141, 8, 2, 224, 174, 176, 224, 175, 135, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 136,
+			224, 174, 178, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 224, 175,
+			141, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 154, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 140, 224, 174, 169, 0, 224, 175,
+			141, 8, 2, 224, 174, 179, 224, 174, 181, 224, 175, 129, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 175, 130, 224, 174, 184,
+			0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 175, 140, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 129, 175, 224, 154,
+			174, 224, 2, 224, 174, 176, 224, 174, 174, 224, 174, 163, 224, 174, 191, 0, 4, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174,
+			149, 224, 174, 169, 224, 175, 141, 224, 174, 168, 224, 174, 179, 224, 175, 136, 3, 71, 34, 37, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129,
+			8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 0, 4, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 184, 224, 175,
+			141, 224, 174, 170, 8, 2, 224, 175, 135, 224, 174, 169, 3, 71, 34, 37, 89, 71, 0, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174,
+			184, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 135, 224, 174, 169, 0, 224, 174, 191, 224, 174, 176, 224, 175, 129, 8, 2, 224, 174, 174,
+			224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 3, 71, 34, 109, 65, 0, 224, 174, 191, 224, 174, 176, 224, 174, 174, 8, 2, 224,
+			174, 169, 3, 71, 34, 109, 65, 65, 109, 0, 224, 174, 191, 224, 174, 176, 224, 175, 135, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 178,
+			3, 71, 34, 114, 88, 0, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 3, 71, 34, 118, 67,
+			76, 0, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224, 174, 159, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 3, 71, 36, 34, 139, 0, 224, 175, 134, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 178, 3, 71, 36, 47, 0, 224, 175, 134, 224,
+			174, 169, 224, 174, 190, 224, 174, 154, 8, 2, 224, 175, 128, 224, 174, 176, 3, 71, 36, 50, 118, 88, 0, 224, 175, 134, 224, 174, 158, 224,
+			175, 141, 224, 174, 154, 8, 2, 224, 174, 174, 224, 174, 191, 224, 174, 169, 3, 71, 36, 67, 75, 109, 0, 224, 175, 134, 224, 174, 158, 224,
+			175, 141, 224, 174, 154, 8, 3, 71, 36, 67, 76, 148, 0, 224, 175, 134, 224, 174, 170, 224, 175, 141, 224, 174, 170, 8, 2, 224, 175, 135,
+			3, 71, 36, 71, 71, 0, 4, 224, 175, 134, 224, 174, 154, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 159, 224, 174, 190, 3, 71, 36,
+			88, 109, 0, 224, 175, 134, 224, 174, 156, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 159, 224, 174, 190, 0, 224, 175, 134, 224, 174, 154,
+			224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 3, 71, 36, 89, 109, 66, 139, 148, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174,
+			183, 224, 175, 128, 224, 174, 159, 224, 175, 141, 8, 3, 71, 36, 140, 93, 112, 139, 0, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174,
+			159, 8, 2, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 3, 71, 36, 140, 140, 0, 224, 174, 191, 224, 174, 170,
+			8, 2, 224, 174, 191, 3, 71, 37, 48, 0, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 169, 3, 71, 37, 49, 0, 224,
+			174, 191, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 169, 224, 175, 141, 224, 174, 181, 224, 174,
+			190, 224, 174, 178, 224, 175, 135, 3, 71, 37, 50, 72, 0, 224, 174, 191, 224, 174, 183, 224, 174, 170, 224, 175, 141, 8, 3, 71, 37, 93,
+			109, 48, 0, 224, 174, 191, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 176, 3, 71, 37, 108, 0, 224, 175, 138, 224, 174, 149, 8, 2,
+			224, 174, 190, 224, 174, 176, 224, 175, 139, 3, 71, 39, 49, 0, 224, 175, 129, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175,
+			134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 3, 71, 40, 49, 0, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 175, 134,
+			224, 174, 159, 224, 175, 141, 8, 3, 71, 40, 55, 55, 36, 139, 0, 4, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2,
+			25, 3, 71, 40, 72, 72, 109, 0, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 149, 224, 174, 175, 0, 224,
+			175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 149, 224, 175, 141, 0, 224, 175, 129, 224, 174, 159, 224, 174, 190, 224,
+			174, 170, 8, 2, 224, 175, 134, 224, 174, 184, 224, 175, 141, 224, 174, 159, 3, 71, 40, 140, 118, 48, 0, 224, 174, 191, 224, 174, 179, 224,
+			174, 190, 224, 174, 149, 224, 175, 141, 8, 3, 71, 55, 118, 49, 0, 4, 224, 175, 129, 224, 174, 179, 224, 175, 130, 224, 174, 159, 224, 175,
+			130, 224, 174, 164, 224, 175, 141, 8, 3, 71, 62, 123, 139, 123, 87, 0, 224, 175, 141, 224, 174, 179, 224, 175, 130, 224, 174, 159, 224, 175,
+			130, 224, 174, 164, 224, 175, 141, 8, 0, 4, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 149, 224,
+			174, 163, 3, 71, 71, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 224, 174, 179, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 164, 224, 175, 141, 0, 224, 175,
+			141, 224, 174, 170, 1, 18, 68, 2, 224, 175, 130, 224, 174, 164, 224, 174, 174, 0, 224, 175, 141, 224, 174, 170, 1, 133, 174, 224, 2, 224,
+			174, 190, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 1, 133, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 154, 0,
+			224, 175, 141, 224, 174, 170, 1, 135, 174, 224, 2, 224, 175, 130, 224, 174, 174, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174,
+			224, 2, 224, 174, 191, 32, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 191, 224, 174, 169, 32, 0, 224, 175, 141, 224,
+			174, 170, 1, 137, 174, 224, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174,
+			191, 224, 174, 175, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 175, 129, 224, 174, 154, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 175, 129, 224, 174, 154, 224, 174, 174, 0, 224, 175, 141, 224, 174, 170, 1,
+			141, 175, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174,
+			175, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 175, 139, 224, 174, 164, 224, 174,
+			169, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 134, 174, 224, 2, 224, 174, 190, 224, 174, 159, 224, 175,
+			141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 181, 174, 224, 133, 174, 224, 2, 224, 174,
+			190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 1, 159, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224,
+			174, 170, 1, 191, 174, 224, 159, 174, 224, 133, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 1, 191, 174, 224,
+			164, 174, 224, 129, 175, 224, 177, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 8, 136, 175, 224,
+			178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 176, 174, 224,
+			129, 175, 224, 164, 174, 224, 2, 224, 174, 190, 224, 174, 183, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 176, 174, 224, 129, 175, 224,
+			164, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224,
+			176, 174, 224, 164, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 180, 174, 224, 128, 175, 224, 149, 174, 224,
+			2, 224, 174, 190, 224, 174, 149, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 180, 174, 224,
+			128, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 174, 164, 224, 175, 141, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224,
+			180, 174, 224, 128, 175, 224, 149, 174, 224, 2, 224, 174, 190, 224, 174, 149, 224, 174, 174, 0, 224, 175, 141, 224, 174, 170, 8, 149, 174, 224,
+			135, 175, 224, 164, 174, 224, 141, 175, 224, 168, 174, 224, 154, 174, 224, 2, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174,
+			191, 0, 224, 175, 141, 224, 174, 170, 8, 156, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 224, 175, 141, 224, 174, 170, 8, 156, 174, 224,
+			149, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 8,
+			159, 174, 224, 2, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 8, 159, 174, 224, 2, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 224,
+			175, 141, 224, 174, 170, 8, 169, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 224, 175, 141, 224,
+			174, 170, 8, 175, 174, 224, 190, 174, 224, 174, 174, 224, 2, 224, 174, 191, 224, 174, 174, 224, 175, 141, 224, 174, 170, 0, 224, 175, 141, 224,
+			174, 170, 8, 176, 174, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 174, 224, 175, 141, 224, 174, 174, 224, 175, 136, 0, 224, 175, 141, 224,
+			174, 170, 8, 178, 174, 224, 2, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 8, 178, 174, 224, 181, 174, 224, 2, 224, 174, 190, 224, 174,
+			149, 0, 224, 175, 141, 224, 174, 170, 8, 179, 174, 224, 141, 175, 224, 149, 174, 224, 2, 224, 175, 129, 224, 174, 149, 224, 174, 179, 0, 224,
+			175, 141, 224, 174, 170, 8, 185, 174, 224, 2, 224, 174, 191, 224, 174, 179, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 18, 68, 2,
+			224, 174, 176, 224, 174, 190, 224, 174, 174, 224, 174, 163, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 169, 174, 224, 174, 174, 224, 2,
+			224, 174, 176, 224, 174, 174, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 149, 174, 224, 129, 175, 224, 154, 174, 224, 2,
+			224, 174, 176, 224, 174, 174, 224, 175, 141, 224, 174, 174, 0, 4, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 174, 153, 224, 175, 141,
+			224, 174, 149, 224, 174, 179, 224, 174, 190, 3, 71, 71, 109, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 174, 164, 224, 174, 191,
+			224, 174, 178, 0, 224, 175, 141, 224, 174, 170, 1, 18, 68, 2, 224, 174, 184, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224,
+			174, 178, 224, 174, 190, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 178, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141,
+			224, 174, 170, 1, 137, 174, 224, 2, 224, 174, 178, 224, 174, 190, 224, 174, 169, 0, 224, 175, 141, 224, 174, 170, 1, 137, 174, 224, 2, 224,
+			174, 178, 224, 175, 136, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 0, 224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 175, 0,
+			224, 175, 141, 224, 174, 170, 1, 141, 175, 224, 176, 174, 224, 191, 174, 224, 175, 174, 224, 137, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0,
+			224, 175, 141, 224, 174, 170, 8, 129, 175, 224, 180, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 224, 174, 170,
+			8, 137, 174, 224, 2, 224, 174, 178, 224, 175, 141, 32, 0, 224, 175, 141, 224, 174, 170, 8, 141, 175, 224, 176, 174, 224, 129, 175, 224, 164,
+			174, 224, 2, 224, 174, 178, 0, 224, 175, 141, 224, 174, 170, 8, 176, 174, 224, 2, 224, 174, 176, 0, 224, 175, 141, 224, 174, 170, 8, 179,
+			174, 224, 149, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 224, 175, 141, 224, 174, 170, 8, 185, 174, 224, 2, 224, 174, 176, 224, 175, 141,
+			224, 174, 159, 0, 224, 175, 141, 224, 174, 170, 8, 191, 174, 224, 176, 174, 224, 2, 224, 174, 169, 0, 4, 224, 175, 141, 224, 174, 170, 1,
+			141, 175, 224, 176, 174, 224, 149, 174, 224, 3, 71, 71, 148, 0, 224, 175, 141, 224, 174, 170, 8, 129, 175, 224, 154, 174, 224, 174, 174, 224,
+			190, 174, 224, 176, 174, 224, 0, 224, 175, 141, 224, 174, 170, 8, 190, 174, 224, 181, 174, 224, 168, 174, 224, 0, 224, 175, 141, 224, 174, 170,
+			8, 191, 174, 224, 149, 174, 224, 190, 174, 224, 154, 174, 224, 0, 224, 175, 141, 224, 174, 170, 8, 191, 174, 224, 185, 174, 224, 190, 174, 224,
+			154, 174, 224, 0, 4, 3, 71, 109, 0, 1, 129, 175, 224, 177, 174, 224, 174, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 1, 141, 175,
+			224, 170, 174, 224, 136, 175, 224, 159, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 1, 141, 175, 224, 170, 174, 224, 136, 175, 224, 178, 174,
+			224, 135, 175, 224, 181, 174, 224, 2, 224, 174, 179, 224, 175, 129, 0, 1, 141, 175, 224, 170, 174, 224, 164, 174, 224, 129, 175, 224, 175, 174,
+			224, 134, 174, 224, 2, 224, 174, 178, 0, 1, 141, 175, 224, 174, 174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 133, 174, 224, 2, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 0, 1, 141, 175, 224, 184, 174, 224, 133, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0,
+			1, 149, 174, 224, 2, 224, 174, 159, 0, 1, 164, 174, 224, 2, 224, 174, 184, 0, 1, 174, 174, 224, 141, 175, 224, 164, 174, 224, 134, 174,
+			224, 2, 224, 174, 178, 0, 1, 174, 174, 224, 141, 175, 224, 169, 174, 224, 134, 174, 224, 2, 224, 174, 178, 0, 1, 174, 174, 224, 176, 174,
+			224, 170, 174, 224, 2, 224, 174, 149, 224, 175, 141, 224, 174, 164, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 149, 224,
+			175, 141, 224, 174, 164, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 2, 224, 174, 164, 224, 175, 141, 0, 1, 175, 174, 224, 191, 174,
 			224, 176, 174, 224, 134, 174, 224, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 1, 190, 174, 224, 149, 174, 224, 2, 224,
 			174, 176, 0, 1, 190, 174, 224, 149, 174, 224, 190, 174, 224, 168, 174, 224, 2, 224, 174, 176, 224, 174, 163, 0, 1, 190, 174, 224, 164, 174,
-			224, 2, 224, 174, 174, 224, 175, 141, 0, 1, 190, 174, 224, 164, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 163, 0, 1, 190, 174,
-			224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 1, 190, 174,
-			224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 174, 0, 1, 191, 174, 224, 169, 174, 224, 2, 224, 174, 149, 224,
-			174, 181, 224, 174, 190, 224, 174, 169, 224, 175, 141, 0, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 18, 71,
-			224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 163, 224, 174, 190, 0, 8, 2, 18, 71, 224, 175, 129, 224, 174, 156, 0, 8, 2, 28,
-			17, 12, 0, 8, 2, 224, 174, 131, 224, 174, 170, 224, 175, 130, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 164, 224, 175, 130, 224,
-			174, 176, 0, 8, 2, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224,
-			174, 149, 224, 174, 181, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224, 174, 164, 224, 175, 141, 224, 174, 168, 224,
-			174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224, 174, 190, 224,
-			174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 149, 224, 174, 190, 224,
-			174, 154, 224, 175, 130, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 149, 224,
-			174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 149, 224, 174, 191, 224, 174, 183, 224, 175, 141, 224,
-			174, 149, 0, 8, 2, 224, 174, 149, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 149, 224, 175, 129, 224, 174, 179, 0, 8, 2, 224,
-			174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 153, 224, 175, 141, 18, 71, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174,
-			149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
-			134, 224, 174, 169, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 163, 0, 8, 2, 224, 174,
-			153, 224, 175, 141, 224, 174, 149, 224, 174, 174, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 174, 190, 0, 8,
-			2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175,
-			141, 0, 8, 2, 224, 174, 154, 224, 174, 181, 224, 174, 149, 224, 174, 178, 224, 175, 141, 224, 174, 175, 224, 174, 190, 224, 174, 163, 0, 8,
-			2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 169, 0, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174,
-			169, 0, 8, 2, 224, 174, 156, 0, 8, 2, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 224, 174, 179, 0, 8, 2, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 159, 224, 175,
-			141, 224, 174, 154, 224, 174, 163, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
-			149, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174,
-			159, 224, 175, 141, 224, 174, 156, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 156, 224, 175, 134, 224, 174, 159, 224, 175,
-			141, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 174, 159, 224, 175,
-			141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 191, 0, 8,
-			2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 32, 224, 174, 170, 224, 174, 190, 224, 174, 154, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
-			174, 164, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224,
-			175, 141, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
-			174, 164, 224, 174, 174, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 168, 224,
-			175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
-			174, 164, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 170, 224, 174, 184, 224,
-			175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 169, 224, 174, 190, 224, 174, 176, 224, 174, 154, 0, 8, 2, 224, 174, 169, 224, 174, 190, 224,
-			174, 176, 224, 174, 184, 0, 8, 2, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 169, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224,
-			174, 169, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129, 224, 174, 174, 224,
-			175, 141, 32, 224, 174, 159, 224, 175, 128, 224, 174, 175, 224, 175, 129, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 174, 169, 224, 175, 141,
-			224, 174, 176, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 0, 8, 2, 224, 174, 170, 224, 174, 191, 224, 174, 179,
-			224, 175, 141, 224, 174, 149, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 174, 170, 224, 175, 130, 224, 174, 169, 0, 8, 2, 224, 174, 170,
-			224, 175, 141, 224, 174, 179, 224, 174, 191, 224, 174, 174, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170,
-			224, 174, 176, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 175, 224, 174, 153,
-			224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 175, 224, 174, 164,
-			224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 168, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 174, 149, 224, 175, 141,
-			224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 174, 0, 8, 2,
-			224, 174, 175, 224, 174, 190, 224, 174, 178, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224, 174, 175, 224, 174, 191, 224, 174, 178, 224, 175, 141,
-			224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 174, 163, 224, 175, 128, 224, 174, 164, 224, 174, 176, 0, 8, 2,
-			224, 174, 176, 224, 174, 164, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 168, 224, 174, 190, 224, 174, 159,
-			224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 169, 0, 8, 2, 224, 174, 176,
-			224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 159, 0, 8, 2,
-			224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224, 174, 174, 0, 8, 2, 224, 174, 176, 224, 174, 164,
-			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129,
-			0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 159, 0, 8, 2, 224, 174, 176, 224, 174, 164,
-			224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 181, 224, 174, 190,
-			224, 174, 156, 0, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 32, 224, 174, 146, 224, 174, 170, 224, 174, 190, 224, 174,
-			174, 224, 174, 190, 0, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 159, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 131, 224, 174,
-			170, 224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174,
-			164, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174,
-			176, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 149, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174,
-			153, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 154, 224, 174, 190, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174,
-			164, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8,
-			2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174,
-			164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175,
-			129, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159, 0, 8,
-			2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 224, 175, 139, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 153, 224, 175,
-			141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174,
-			178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174,
-			170, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 174, 0, 8,
-			2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 176, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175,
-			136, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 163, 224, 175, 136, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174,
-			178, 224, 174, 174, 224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 17, 67,
-			224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 174, 181, 0, 8, 2, 224, 174, 178, 224, 174, 174,
-			224, 174, 190, 224, 174, 149, 224, 174, 181, 224, 175, 135, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 174, 191,
-			0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 178, 224, 174, 174,
-			224, 174, 190, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 169, 0, 8, 2,
-			224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 178,
-			224, 175, 141, 224, 174, 178, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 180, 0, 8, 2, 224, 174, 178, 224, 174, 174,
-			224, 175, 129, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 175, 136, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 175, 136, 224, 174, 175, 0, 8, 2,
-			224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 177, 224, 175, 129,
-			0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 178, 224, 174, 174,
-			224, 175, 129, 224, 174, 179, 224, 175, 141, 224, 174, 179, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 130, 224, 174, 159, 224, 175, 141,
-			224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 176, 224, 174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 181, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 181,
-			224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 185, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 191,
-			224, 174, 149, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 138, 0, 8, 2, 224, 174, 178,
-			224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149,
-			224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 224, 175, 138, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 156, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191,
-			224, 174, 170, 224, 175, 128, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224, 175, 128,
-			224, 174, 156, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 175, 130, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 149,
-			224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 129, 0, 8, 2,
-			224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 179, 224, 175, 129, 0, 8, 2, 224, 174, 181, 224, 174, 168,
-			224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 163, 224, 174, 191,
-			0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 169, 224, 174, 191, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141,
-			224, 174, 164, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 178,
-			224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 178, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 181,
-			224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 181, 224, 175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 183,
-			224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 184, 0, 8, 2, 224, 174, 185, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 2,
-			224, 174, 185, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 185, 224, 174, 190, 224, 174, 175, 0, 8, 2,
-			224, 174, 185, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 185, 224, 174, 191, 224, 174, 176,
-			224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 185, 224, 175, 141, 224, 174, 176, 224, 175, 134, 224, 174, 175, 0, 8, 32,
-			141, 175, 224, 174, 174, 224, 129, 175, 224, 175, 174, 224, 128, 175, 224, 159, 174, 224, 2, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175,
-			129, 224, 174, 174, 224, 175, 141, 32, 0, 8, 32, 164, 174, 224, 141, 175, 224, 168, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174, 168,
-			224, 175, 141, 224, 174, 164, 0, 8, 129, 175, 224, 149, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 8, 141,
-			175, 224, 163, 174, 224, 175, 174, 224, 170, 174, 224, 2, 224, 174, 159, 0, 8, 141, 175, 224, 170, 174, 224, 149, 174, 224, 141, 175, 224, 149,
-			174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 8, 141, 175, 224, 178, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174, 181, 0, 8, 141,
-			175, 224, 184, 174, 224, 185, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 184, 174, 224, 191, 174, 224, 178,
-			174, 224, 2, 224, 174, 169, 0, 8, 149, 174, 224, 2, 224, 174, 164, 224, 175, 141, 0, 8, 149, 174, 224, 2, 224, 174, 174, 224, 175, 141,
-			32, 0, 8, 149, 174, 224, 2, 224, 174, 179, 224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8, 149, 174, 224, 135, 175, 224, 164, 174, 224,
-			2, 224, 174, 178, 0, 8, 149, 174, 224, 141, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 8, 159, 174, 224, 170, 174, 224,
-			2, 224, 174, 159, 0, 8, 164, 174, 224, 2, 224, 174, 154, 0, 8, 164, 174, 224, 141, 175, 224, 168, 174, 224, 138, 175, 224, 154, 174, 224,
-			2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175,
-			129, 0, 8, 190, 174, 224, 149, 174, 224, 174, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 8, 190, 174, 224, 164, 174, 224, 2, 32, 0,
-			8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224,
-			174, 169, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 174, 0, 224, 175, 129, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 159, 224,
-			175, 141, 224, 174, 159, 224, 174, 190, 0, 224, 174, 176, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 3, 71, 109, 34, 83, 0, 224,
-			174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 156, 3, 71, 109, 34, 109,
-			47, 0, 4, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 164, 3, 71, 109, 49, 0, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 176,
-			224, 175, 128, 224, 174, 164, 0, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 129, 3, 71, 109,
-			50, 47, 0, 224, 174, 178, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 176, 3, 71, 109, 55,
-			118, 72, 49, 0, 224, 174, 178, 224, 175, 129, 224, 174, 154, 8, 2, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190,
-			224, 174, 169, 3, 71, 109, 55, 122, 76, 0, 224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 191, 3, 71, 109, 55, 140, 0,
-			224, 174, 175, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 139, 224, 174, 170, 224, 175, 141, 8, 3, 71, 109, 57, 118,
-			89, 49, 119, 48, 0, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176, 3, 71, 109, 68, 49, 109, 0, 224, 174, 164, 1,
-			141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 178, 3, 71, 109, 72, 0, 4, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174, 179, 224, 174, 191, 3, 71, 109, 72, 72, 0,
-			224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 32, 0, 224, 174, 164, 224, 175, 141, 224, 174,
-			164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 0, 224, 174, 164, 224, 175,
-			141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 176,
-			224, 174, 163, 224, 175, 141, 224, 174, 159, 3, 71, 109, 81, 0, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 174,
-			184, 3, 71, 109, 108, 0, 224, 174, 159, 8, 2, 224, 174, 190, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224, 174, 169, 3, 71, 109, 140,
-			0, 224, 175, 128, 224, 174, 164, 8, 2, 224, 175, 139, 224, 174, 181, 224, 174, 169, 3, 71, 112, 47, 0, 224, 175, 128, 224, 174, 154, 224,
-			175, 141, 8, 2, 224, 174, 178, 3, 71, 112, 76, 0, 224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 159,
-			224, 175, 141, 8, 3, 71, 112, 140, 34, 123, 140, 0, 4, 224, 174, 190, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176,
-			224, 174, 191, 3, 71, 114, 0, 224, 174, 190, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141,
-			0, 224, 175, 135, 224, 174, 169, 224, 174, 159, 224, 175, 141, 8, 3, 71, 114, 50, 109, 140, 0, 224, 175, 139, 8, 2, 224, 174, 184, 224,
-			175, 141, 224, 174, 159, 224, 174, 169, 3, 71, 118, 0, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 159, 224,
-			174, 190, 3, 71, 118, 34, 71, 109, 0, 224, 174, 190, 224, 174, 170, 224, 174, 164, 224, 174, 191, 1, 154, 174, 224, 3, 71, 118, 48, 109,
-			47, 37, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 128, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224,
-			174, 190, 3, 71, 118, 49, 140, 0, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 169, 224, 174, 191, 3, 71,
-			118, 55, 49, 109, 0, 224, 174, 190, 224, 174, 178, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 159, 3, 71, 118, 55, 109, 48, 0, 224,
-			174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175, 139, 224, 174, 176, 3, 71, 118, 55, 140,
-			0, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 71, 118, 55, 140, 37, 49,
-			0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 3, 71, 118, 68, 49, 0,
-			4, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 190, 224, 174, 149, 224, 175, 135, 224, 174, 170, 224, 175, 141,
-			3, 71, 118, 71, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 190, 224, 174, 185, 224, 175, 135, 224, 174,
-			170, 224, 175, 141, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 181, 0, 224, 174, 190, 224, 174, 170, 8, 141, 175, 224,
-			175, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174, 190, 0, 224, 174, 190, 224, 174, 170, 8, 191, 174, 224, 175, 174, 224, 190, 174, 224,
-			154, 174, 224, 2, 224, 174, 190, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 71, 118, 71, 109, 0, 4, 224, 174, 190, 224,
-			174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 136, 3, 71, 118, 72, 72, 0, 224, 174,
-			190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 174, 224, 175, 141, 32, 0, 224, 174, 190, 224,
-			174, 149, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 190, 224, 174, 164, 3, 71, 118, 81, 72, 0, 224, 175, 139, 224, 174, 170, 8, 2,
-			224, 174, 190, 224, 174, 178, 3, 71, 119, 48, 0, 224, 175, 139, 224, 174, 170, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 3, 71,
-			119, 83, 0, 224, 175, 130, 224, 174, 164, 224, 175, 141, 8, 2, 32, 3, 71, 123, 47, 0, 224, 175, 130, 224, 174, 170, 8, 2, 224, 174,
-			164, 224, 174, 191, 3, 71, 123, 48, 109, 0, 224, 175, 130, 224, 174, 159, 8, 2, 224, 174, 190, 224, 174, 169, 3, 71, 123, 140, 0, 224,
-			175, 136, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 184, 3, 71, 134, 48, 0, 4, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 168,
-			174, 224, 133, 174, 224, 2, 12, 3, 71, 149, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 12, 0,
-			1, 190, 174, 224, 164, 174, 224, 141, 175, 224, 184, 174, 224, 169, 174, 224, 174, 174, 224, 2, 12, 0, 1, 190, 174, 224, 164, 174, 224, 141,
-			175, 224, 184, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 12, 0, 1, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224,
-			141, 175, 224, 159, 174, 224, 170, 174, 224, 2, 25, 0, 1, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224, 141, 175, 224, 159, 174,
-			224, 170, 174, 224, 175, 174, 224, 129, 175, 224, 154, 174, 224, 2, 25, 0, 1, 190, 174, 224, 164, 174, 224, 191, 174, 224, 176, 174, 224, 170,
-			174, 224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 141, 175, 224, 184, 174, 224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 149, 174,
-			224, 176, 174, 224, 191, 174, 224, 181, 174, 224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224, 141, 175, 224, 154,
-			174, 224, 170, 174, 224, 2, 12, 0, 4, 1, 134, 174, 224, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 3, 83, 0, 1, 139, 175, 224, 176, 174, 224, 141, 175, 224, 149, 174, 224, 136, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174,
-			169, 0, 1, 141, 175, 224, 169, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 1, 141, 175, 224,
-			174, 174, 224, 135, 174, 224, 2, 224, 174, 190, 224, 174, 178, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174,
-			169, 224, 175, 141, 224, 174, 184, 0, 1, 141, 175, 224, 178, 174, 224, 134, 174, 224, 2, 224, 174, 190, 0, 1, 144, 174, 224, 2, 224, 175,
-			139, 224, 174, 169, 0, 1, 174, 174, 224, 190, 174, 224, 176, 174, 224, 191, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 1,
-			190, 174, 224, 154, 174, 224, 141, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224, 175, 128, 0, 1, 191, 174, 224, 178, 174, 224, 149, 174, 224,
-			2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174,
-			191, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174,
-			190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174,
-			159, 224, 175, 135, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 18, 69, 224, 174, 191, 0, 8, 2, 224, 174, 190,
-			224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 185, 224, 174, 191, 224, 174, 175,
-			224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 153, 224, 175, 141,
-			224, 174, 149, 224, 174, 176, 224, 175, 141, 32, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
-			184, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 174, 191, 224, 174,
-			183, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8,
-			2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 181, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174,
-			178, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 183, 224, 175, 141, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175,
-			141, 32, 18, 80, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 32, 0, 8, 2, 224, 175, 134, 224,
-			174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0,
-			8, 2, 224, 175, 134, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 181, 224,
-			174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224,
-			175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175, 141, 224,
-			174, 169, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224,
-			174, 176, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 175, 135, 224, 174, 183, 224,
-			174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 175, 136, 224, 174, 178, 224, 174, 191, 224, 174, 178, 0,
-			8, 2, 224, 175, 136, 224, 174, 178, 224, 175, 129, 0, 8, 2, 224, 175, 136, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0,
-			8, 2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 184, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224,
-			174, 159, 224, 175, 139, 32, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 149, 224, 175, 141,
-			224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 164, 224, 174, 190, 224, 174, 169,
-			0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 181, 0, 8, 2, 224, 175, 139, 224, 174, 169,
-			224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175,
-			139, 224, 174, 169, 224, 174, 191, 224, 174, 178, 224, 175, 129, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175,
-			129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 129, 224, 174, 159, 224, 175, 136, 224, 174,
-			175, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 136, 0, 8,
-			2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174,
-			156, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174, 169, 0, 8,
-			128, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 0, 8, 134, 174, 224, 2, 224, 174, 191, 224, 174, 154, 0, 8, 134, 174, 224,
-			2, 224, 174, 191, 224, 174, 184, 0, 8, 134, 174, 224, 2, 224, 175, 128, 224, 174, 154, 0, 8, 134, 174, 224, 2, 224, 175, 128, 224, 174,
-			184, 0, 8, 136, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 179, 0, 8, 139, 175, 224, 154, 174, 224, 2, 224, 174, 190, 0, 8,
-			141, 175, 224, 159, 174, 224, 190, 174, 224, 179, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 141, 175, 224,
-			169, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 149, 174, 224,
-			2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 156, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224,
-			134, 175, 224, 154, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174,
-			190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 135, 224, 174,
-			176, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 159, 174, 224, 2, 224, 174, 191, 224, 174, 169, 0, 8, 149, 174, 224, 2, 224, 175,
-			135, 0, 8, 164, 174, 224, 141, 175, 224, 184, 174, 224, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 0, 8, 190, 174, 224, 149, 174, 224,
-			2, 224, 174, 191, 0, 8, 190, 174, 224, 149, 174, 224, 134, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 8, 190, 174, 224,
-			159, 174, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 191, 174, 224, 154, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175,
-			141, 0, 8, 191, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
-			153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 224, 174, 191, 8,
-			2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224,
-			175, 141, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191,
-			8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 163, 224,
-			175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 183, 224, 175, 141, 0,
-			224, 174, 191, 8, 2, 224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224,
-			174, 179, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 139, 224,
-			174, 176, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224,
-			174, 159, 224, 174, 190, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 149, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0,
-			224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 149, 224, 174, 190, 224, 174, 169, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 164, 224,
-			174, 190, 224, 174, 169, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224,
-			174, 176, 224, 174, 190, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224,
-			175, 141, 32, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 184,
-			224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 175,
-			141, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 175, 224, 174, 190, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 158,
-			224, 175, 141, 224, 174, 154, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 183, 224, 175, 141, 0, 224, 175,
-			141, 8, 2, 224, 174, 178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 224, 175, 141, 8, 2, 224, 174, 179,
-			224, 175, 139, 224, 174, 176, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176,
-			224, 174, 191, 224, 174, 159, 224, 174, 190, 0, 224, 175, 141, 8, 190, 174, 224, 154, 174, 224, 139, 175, 224, 176, 174, 224, 141, 175, 224, 149,
-			174, 224, 136, 175, 224, 174, 174, 224, 2, 224, 174, 159, 0, 224, 175, 141, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 159, 0, 224, 175,
-			141, 224, 174, 170, 224, 174, 191, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174,
-			191, 224, 174, 176, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 184, 3, 83, 34, 36, 0, 224, 174, 191, 224,
-			174, 176, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 3, 83, 34, 36, 67, 76, 149, 0, 4, 224, 174, 191, 224, 174, 176,
-			224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 83, 34, 36, 141, 34, 37, 49,
-			0, 224, 175, 141, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 0,
-			224, 175, 141, 224, 174, 176, 224, 174, 159, 8, 130, 175, 224, 175, 174, 224, 2, 224, 175, 128, 224, 174, 184, 3, 83, 34, 109, 140, 0, 224,
-			174, 191, 224, 174, 149, 1, 191, 174, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 3, 83,
-			37, 49, 0, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 170, 8, 3, 83, 37, 55, 37, 48, 149, 0, 224, 174, 191, 224, 174, 178,
-			224, 174, 191, 224, 174, 159, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 175, 3, 83, 37, 55,
-			37, 72, 36, 55, 83, 0, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 174, 8, 3, 83, 37, 55, 65, 149, 0, 4, 224, 174, 191,
-			224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 176, 224, 175, 141, 32, 18, 88, 3, 83, 37, 55, 140, 109, 0, 224, 174, 191,
-			224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 32, 18, 88, 2, 224, 174, 176, 0, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 170,
-			8, 2, 224, 174, 190, 224, 174, 178, 3, 83, 40, 140, 71, 0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 8, 190, 174, 224, 154, 174, 224,
-			2, 224, 174, 181, 224, 175, 135, 224, 174, 176, 3, 83, 47, 0, 224, 174, 191, 224, 174, 179, 8, 2, 224, 175, 136, 224, 174, 159, 224, 175,
-			141, 3, 83, 62, 0, 4, 224, 174, 191, 224, 174, 179, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 3, 83, 62, 118, 48, 0, 224, 175,
-			141, 224, 174, 179, 224, 174, 190, 224, 174, 170, 224, 175, 141, 8, 0, 224, 175, 141, 224, 174, 154, 1, 133, 174, 224, 2, 224, 174, 178, 3,
-			83, 88, 109, 0, 4, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 3, 83,
-			109, 0, 8, 2, 224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 190, 32, 0, 8, 2, 224,
-			174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224,
-			174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 153, 224,
-			175, 141, 0, 8, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 224, 175, 141, 224, 174, 170,
-			1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 1, 190, 174,
-			224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
-			174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 190, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174,
-			224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191,
-			224, 174, 154, 8, 2, 224, 174, 176, 3, 83, 109, 34, 50, 37, 76, 109, 0, 224, 174, 176, 224, 175, 130, 224, 174, 149, 224, 175, 141, 8,
-			3, 83, 109, 34, 152, 49, 0, 224, 174, 190, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 174, 224, 174, 190, 3, 83, 118, 47, 0, 224,
-			174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 191, 174, 224, 159, 174, 224, 3, 83, 118, 55, 140, 149, 0, 224, 175, 139, 224, 174,
-			149, 8, 2, 224, 174, 184, 3, 83, 119, 49, 109, 0, 4, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174,
-			149, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 83, 119, 140, 140, 119, 81, 34, 118, 83, 109, 0,
-			224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 170,
-			8, 2, 224, 174, 176, 0, 4, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 3, 83, 135,
-			66, 140, 109, 0, 224, 175, 140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 0, 4, 1, 141, 175, 224, 178, 174, 224,
-			190, 174, 224, 159, 174, 224, 133, 174, 224, 3, 83, 149, 0, 8, 128, 175, 224, 176, 174, 224, 134, 175, 224, 183, 174, 224, 2, 12, 0, 8,
-			128, 175, 224, 176, 174, 224, 183, 174, 224, 2, 12, 0, 8, 130, 175, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 0, 8, 141, 175, 224,
-			178, 174, 224, 190, 174, 224, 159, 174, 224, 129, 175, 224, 176, 174, 224, 0, 7, 6, 1, 47, 0, 4, 2, 17, 66, 3, 65, 0, 224, 174,
-			191, 8, 2, 224, 174, 175, 224, 175, 130, 0, 224, 174, 191, 8, 18, 72, 154, 174, 224, 2, 224, 174, 175, 0, 3, 65, 109, 0, 7, 6,
-			1, 48, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 7, 6, 1, 49, 0, 4, 2, 17, 66, 3, 34, 0, 224, 174, 191, 8, 164,
-			174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 154, 224, 174, 169, 0, 224, 174, 191, 8, 174, 174, 224, 191, 174, 224, 181, 174, 224, 2,
-			224, 174, 154, 0, 224, 175, 129, 1, 191, 174, 224, 164, 174, 224, 133, 174, 224, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 224, 175,
-			129, 8, 191, 174, 224, 164, 174, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 3, 34,
-			109, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 51, 0, 3, 51, 109, 0, 224, 175, 141, 224, 174, 154, 3, 76, 12, 149, 0, 224, 175,
-			141, 2, 224, 174, 177, 3, 140, 0, 7, 6, 1, 51, 0, 4, 2, 17, 66, 3, 55, 0, 224, 174, 191, 8, 149, 174, 224, 2, 224, 174,
-			175, 224, 174, 190, 224, 174, 163, 0, 3, 55, 109, 0, 224, 175, 141, 8, 181, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 164, 224,
-			175, 129, 224, 174, 177, 224, 175, 136, 3, 140, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 3, 62, 109, 0, 224, 175, 141, 1,
-			137, 174, 224, 2, 224, 174, 164, 224, 175, 129, 224, 174, 177, 224, 175, 136, 3, 140, 0, 224, 175, 141, 224, 174, 164, 8, 149, 174, 224, 141,
-			175, 224, 149, 174, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 149, 224, 175, 136, 3, 140, 47, 0, 7, 6, 1, 53, 0, 2, 17, 66,
-			3, 92, 0, 3, 92, 109, 0, 7, 6, 1, 54, 0, 4, 2, 17, 66, 3, 84, 0, 224, 174, 191, 2, 224, 174, 175, 224, 175, 130, 224,
+			224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 163, 0, 1, 190, 174, 224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224,
+			174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 1, 190, 174, 224, 164, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 224,
+			174, 174, 0, 1, 191, 174, 224, 169, 174, 224, 2, 224, 174, 149, 224, 174, 181, 224, 174, 190, 224, 174, 169, 224, 175, 141, 0, 2, 224, 174,
+			159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 18, 71, 224, 175, 129, 224, 174, 149, 224, 175, 129, 224, 174, 163, 224, 174, 190,
+			0, 8, 2, 18, 71, 224, 175, 129, 224, 174, 156, 0, 8, 2, 28, 17, 12, 0, 8, 2, 224, 174, 131, 224, 174, 170, 224, 175, 130, 224,
+			174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 149, 224, 174, 164, 224, 175, 141, 224,
+			174, 154, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224, 174, 164, 0, 8, 2, 224, 174, 149, 224,
+			174, 181, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 181, 224,
+			174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 190, 224, 174, 154, 224, 175, 129, 224, 174, 176, 0, 8, 2, 224, 174, 149, 224,
+			174, 190, 224, 174, 154, 224, 175, 130, 224, 174, 176, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224,
+			174, 149, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 149, 224, 174, 191, 224, 174, 183, 224,
+			175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 149, 224, 175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 149, 224, 175, 129, 224, 174, 179, 0,
+			8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 191, 224, 174, 153, 224, 175, 141, 18, 71, 224, 174, 190, 224, 174, 174, 0, 8,
+			2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 169, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175,
+			134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 134, 224, 174, 169, 224, 175, 141, 224, 174,
+			177, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 174, 163, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174,
+			174, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 224, 174, 190, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174,
+			149, 224, 174, 179, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 190, 224, 174, 176, 0, 8,
+			2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 154, 224, 174, 181, 224, 174, 149, 224, 174, 178, 224, 175,
+			141, 224, 174, 175, 224, 174, 190, 224, 174, 163, 0, 8, 2, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 169, 0, 8, 2, 224, 174,
+			154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 156, 0, 8, 2, 224, 174, 159, 224, 175, 129, 224, 174,
+			149, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 159, 224, 175, 129, 224, 174, 149, 224, 174,
+			190, 224, 174, 181, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 163, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174,
+			154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174,
+			170, 224, 175, 141, 224, 174, 170, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 156, 224, 174, 159, 0, 8, 2, 224, 174, 159, 224, 175,
+			141, 224, 174, 156, 224, 175, 134, 224, 174, 159, 224, 175, 141, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 149, 224, 175,
+			141, 224, 174, 184, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 169, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174,
+			159, 224, 174, 190, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174,
+			190, 224, 174, 154, 224, 175, 141, 224, 174, 154, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174,
+			159, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 170, 224, 175,
+			141, 224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174,
+			170, 224, 174, 190, 224, 174, 149, 224, 175, 129, 0, 8, 2, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 174,
+			168, 224, 175, 141, 224, 174, 164, 32, 224, 174, 170, 224, 174, 190, 224, 174, 154, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224,
+			174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 169, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 174, 0, 8, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224,
+			174, 164, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224,
+			174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149, 224, 175, 141, 224,
+			174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 181, 0, 8, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 170, 224, 174, 184, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 169, 224, 174, 190, 224,
+			174, 176, 224, 174, 154, 0, 8, 2, 224, 174, 169, 224, 174, 190, 224, 174, 176, 224, 174, 184, 0, 8, 2, 224, 174, 169, 224, 174, 191, 224,
+			174, 175, 224, 174, 169, 0, 8, 2, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224,
+			174, 179, 0, 8, 2, 224, 174, 169, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224,
+			174, 154, 224, 174, 178, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224,
+			174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129, 224, 174, 174, 224, 175, 141, 32, 224, 174, 159, 224, 175, 128, 224, 174, 175, 224, 175, 129,
+			224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 174, 169, 224, 175, 141, 224, 174, 176, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 159,
+			224, 174, 191, 0, 8, 2, 224, 174, 170, 224, 174, 191, 224, 174, 179, 224, 175, 141, 224, 174, 149, 224, 174, 174, 224, 175, 141, 0, 8, 2,
+			224, 174, 170, 224, 175, 130, 224, 174, 169, 0, 8, 2, 224, 174, 170, 224, 175, 141, 224, 174, 179, 224, 174, 191, 224, 174, 174, 224, 174, 190,
+			224, 174, 184, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 174, 174, 224, 175, 141, 224, 174, 170,
+			224, 174, 190, 224, 174, 175, 0, 8, 2, 224, 174, 175, 32, 224, 174, 137, 224, 174, 163, 224, 174, 176, 224, 175, 141, 0, 8, 2, 224, 174,
+			175, 32, 224, 174, 176, 224, 175, 135, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 175, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224,
+			174, 175, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 175, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224,
+			174, 175, 224, 174, 168, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 170, 224, 174, 149, 224, 175, 141, 224, 174, 164, 224, 174, 191, 0,
+			8, 2, 224, 174, 175, 224, 174, 170, 224, 175, 141, 0, 8, 2, 224, 174, 175, 224, 174, 174, 0, 8, 2, 224, 174, 175, 224, 174, 176, 224,
+			175, 135, 224, 174, 149, 224, 175, 136, 0, 8, 2, 224, 174, 175, 224, 174, 190, 224, 174, 178, 224, 174, 156, 224, 174, 191, 0, 8, 2, 224,
+			174, 175, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 174, 163, 224,
+			175, 128, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 149, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224,
+			174, 164, 224, 174, 168, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 176, 224,
+			174, 164, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 224, 174, 191, 224, 174, 159, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 159, 224,
+			174, 174, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 0, 8, 2, 224, 174, 176, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224,
+			174, 159, 0, 8, 2, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224,
+			174, 164, 224, 175, 141, 224, 174, 181, 224, 174, 190, 224, 174, 156, 0, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 149, 224, 175, 141, 32,
+			224, 174, 146, 224, 174, 170, 224, 174, 190, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 176, 224, 175, 139, 224, 174, 159, 0, 8, 2,
+			224, 174, 176, 224, 175, 141, 224, 174, 131, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 149, 224, 174, 176,
+			0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 164, 224, 175, 141, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 190,
+			224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 149, 224, 175, 128,
+			224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 154, 224, 174, 190, 224, 174, 178,
+			224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 135, 224, 174, 181, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 224, 174, 190, 224, 174, 178, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169,
+			0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 174, 190, 0, 8, 2, 224, 174, 178,
+			224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 169, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 164,
+			224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 177, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 149,
+			224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 154, 224, 175, 141, 0, 8, 2,
+			224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141,
+			224, 174, 164, 224, 175, 136, 0, 8, 2, 224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 159, 0, 8, 2,
+			224, 174, 178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 139, 224, 174, 159, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 174, 170,
+			224, 175, 141, 224, 174, 170, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141,
+			224, 174, 170, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 159, 224, 175, 129, 0, 8, 2,
+			224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 170,
+			224, 175, 141, 224, 174, 170, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 176, 224, 175, 128,
+			224, 174, 149, 224, 175, 141, 224, 174, 183, 224, 175, 136, 0, 8, 2, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 176,
+			224, 175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 175, 136, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 159, 224, 175, 136,
+			224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 159, 224, 175, 136, 224, 174, 175, 0, 8, 2,
+			224, 174, 178, 224, 174, 174, 224, 174, 163, 224, 175, 136, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 174,
+			224, 174, 169, 224, 175, 136, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 177, 224, 175, 141,
+			224, 174, 177, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 179, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190,
+			224, 174, 149, 17, 67, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 174, 181, 0, 8, 2, 224,
+			174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 174, 181, 224, 175, 135, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224,
+			174, 149, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224,
+			174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 154, 224, 175, 141, 224, 174, 154, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224,
+			174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 175, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224,
+			174, 190, 224, 174, 175, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 190, 224, 174, 175, 224, 175, 141, 0, 8, 2, 224,
+			174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 149, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 176, 224, 175, 129, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 178, 0,
+			8, 2, 224, 174, 178, 224, 174, 174, 224, 174, 191, 224, 174, 180, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224,
+			174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 175, 136, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0,
+			8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 159, 224, 175, 136, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224,
+			175, 129, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 177, 224, 175, 129, 0, 8, 2, 224, 174, 178, 224,
+			174, 174, 224, 175, 129, 224, 174, 177, 224, 175, 141, 224, 174, 177, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 129, 224, 174, 179, 224,
+			175, 141, 224, 174, 179, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 130, 224, 174, 159, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224,
+			174, 178, 224, 174, 174, 224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224,
+			175, 135, 224, 174, 175, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 174, 174, 224, 175, 139, 0, 8, 2, 224, 174, 178, 224, 174, 176, 224,
+			174, 190, 224, 174, 174, 0, 8, 2, 224, 174, 178, 224, 174, 181, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 178, 224,
+			174, 181, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 181, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224,
+			174, 185, 224, 175, 128, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224,
+			174, 178, 224, 174, 191, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 138, 0, 8, 2, 224,
+			174, 178, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 159, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 129, 224, 174, 154, 224, 175, 141, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 149, 224,
+			175, 141, 224, 174, 149, 224, 175, 138, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 156, 224, 174, 190, 0, 8, 2, 224, 174, 178, 224,
+			174, 191, 224, 174, 170, 224, 175, 128, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 178, 224,
+			174, 191, 224, 174, 183, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 178, 224, 175, 128, 224, 174, 156, 224, 174, 190, 0, 8, 2, 224,
+			174, 178, 224, 175, 130, 224, 174, 169, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 149, 224, 175, 135, 224, 174, 176, 224, 174, 191, 224,
+			174, 175, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 174, 191, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224,
+			175, 129, 0, 8, 2, 224, 174, 178, 224, 175, 141, 224, 174, 170, 224, 175, 136, 0, 8, 2, 224, 174, 179, 224, 175, 129, 0, 8, 2, 224,
+			174, 181, 224, 174, 164, 224, 174, 191, 0, 8, 2, 224, 174, 181, 224, 174, 168, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224,
+			174, 169, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 163, 224, 174, 191, 0, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 169, 224,
+			174, 191, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224,
+			174, 181, 224, 175, 129, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 178, 0,
+			8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 178, 224, 174, 176, 0, 8, 2, 224, 174, 181, 224, 175, 129, 224, 174, 178, 224, 174, 191, 224,
+			174, 153, 224, 175, 141, 0, 8, 2, 224, 174, 181, 224, 175, 135, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 181, 224,
+			175, 141, 224, 174, 175, 0, 8, 2, 224, 174, 181, 224, 175, 141, 224, 174, 181, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 183, 224,
+			175, 128, 224, 174, 176, 0, 8, 2, 224, 174, 184, 0, 8, 2, 224, 174, 185, 224, 174, 164, 224, 175, 130, 224, 174, 176, 0, 8, 2, 224,
+			174, 185, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 174, 184, 0, 8, 2, 224, 174, 185, 224, 174, 190, 224, 174, 175, 0, 8, 2, 224,
+			174, 185, 224, 174, 191, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 174, 185, 224, 174, 191, 224, 174, 176, 224,
+			174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 174, 185, 224, 175, 141, 224, 174, 176, 224, 175, 134, 224, 174, 175, 0, 8, 32, 141,
+			175, 224, 174, 174, 224, 129, 175, 224, 175, 174, 224, 128, 175, 224, 159, 174, 224, 2, 224, 174, 169, 224, 175, 141, 224, 174, 169, 224, 175, 129,
+			224, 174, 174, 224, 175, 141, 32, 0, 8, 32, 141, 175, 224, 178, 174, 224, 149, 174, 224, 129, 175, 224, 156, 174, 224, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 191, 0, 8, 32, 164, 174, 224, 141, 175, 224, 168, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174, 168,
+			224, 175, 141, 224, 174, 164, 0, 8, 129, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 174, 164, 0, 8, 129, 175, 224, 149, 174, 224, 190,
+			174, 224, 154, 174, 224, 2, 224, 174, 159, 224, 174, 191, 0, 8, 129, 175, 224, 179, 174, 224, 141, 175, 224, 179, 174, 224, 164, 174, 224, 2,
+			224, 174, 159, 224, 174, 191, 0, 8, 141, 175, 224, 163, 174, 224, 175, 174, 224, 170, 174, 224, 2, 224, 174, 159, 0, 8, 141, 175, 224, 170,
+			174, 224, 149, 174, 224, 141, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 8, 141, 175, 224, 178, 174, 224, 138, 175, 224, 154,
+			174, 224, 2, 224, 174, 181, 0, 8, 141, 175, 224, 184, 174, 224, 185, 174, 224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 141,
+			175, 224, 184, 174, 224, 191, 174, 224, 178, 174, 224, 2, 224, 174, 169, 0, 8, 149, 174, 224, 2, 224, 174, 164, 224, 175, 141, 0, 8, 149,
+			174, 224, 2, 224, 174, 174, 224, 175, 141, 32, 0, 8, 149, 174, 224, 2, 224, 174, 179, 224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8,
+			149, 174, 224, 2, 224, 174, 179, 224, 175, 128, 224, 174, 149, 224, 174, 176, 0, 8, 149, 174, 224, 135, 175, 224, 164, 174, 224, 2, 224, 174,
+			178, 0, 8, 149, 174, 224, 141, 175, 224, 149, 174, 224, 170, 174, 224, 2, 224, 174, 178, 0, 8, 164, 174, 224, 2, 224, 174, 154, 0, 8,
+			164, 174, 224, 141, 175, 224, 168, 174, 224, 138, 175, 224, 154, 174, 224, 2, 224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 174, 174, 224,
+			154, 174, 224, 2, 224, 174, 178, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 174, 174, 224, 154, 174, 224, 2, 224, 174,
+			178, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 174, 174, 224, 154, 174, 224, 2, 224, 174, 178, 224, 174, 174, 0, 8, 190, 174, 224,
+			149, 174, 224, 174, 174, 224, 2, 224, 174, 178, 224, 174, 191, 0, 8, 190, 174, 224, 164, 174, 224, 2, 32, 0, 8, 190, 174, 224, 164, 174,
+			224, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 163, 224, 174, 178, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 153, 224,
+			175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 175, 138, 0,
+			8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 164, 224, 175, 141, 224, 174, 164, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 168, 224,
+			175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 190, 174, 224, 164, 174, 224, 2, 224, 174, 174, 0, 224, 175, 129, 8, 2, 224,
+			174, 176, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 190, 0, 224, 175, 134, 8, 141, 175, 224, 184, 174, 224, 185, 174,
+			224, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 224, 174, 176, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 3, 71, 109, 34,
+			83, 0, 224, 174, 176, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 175, 129, 8, 2, 224, 174, 181, 224, 174, 190, 224, 174, 156, 3, 71,
+			109, 34, 109, 47, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 170, 224, 175, 141, 8, 2, 32, 3,
+			71, 109, 47, 47, 37, 34, 109, 48, 0, 4, 224, 174, 149, 224, 175, 141, 8, 2, 224, 174, 164, 3, 71, 109, 49, 0, 224, 174, 149, 224,
+			175, 141, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 164, 0, 224, 174, 168, 224, 175, 141, 224, 174, 164, 8, 2, 224, 175, 129, 224, 174,
+			178, 224, 175, 129, 3, 71, 109, 50, 47, 0, 224, 174, 178, 224, 174, 170, 224, 175, 141, 224, 174, 170, 224, 174, 191, 8, 2, 224, 174, 176,
+			224, 174, 175, 224, 175, 139, 3, 71, 109, 55, 109, 48, 48, 0, 224, 174, 178, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174, 149, 8,
+			2, 224, 174, 190, 224, 174, 176, 3, 71, 109, 55, 118, 72, 49, 0, 224, 174, 178, 224, 175, 129, 224, 174, 154, 8, 2, 224, 174, 191, 224,
+			174, 184, 224, 175, 141, 224, 174, 164, 224, 174, 190, 224, 174, 169, 3, 71, 109, 55, 122, 76, 0, 224, 174, 178, 224, 175, 141, 224, 174, 159,
+			8, 2, 224, 174, 191, 3, 71, 109, 55, 139, 0, 224, 174, 175, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 149, 224, 175, 139, 224,
+			174, 170, 224, 175, 141, 8, 3, 71, 109, 57, 118, 89, 49, 119, 48, 0, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 176,
+			3, 71, 109, 68, 49, 109, 0, 224, 174, 164, 1, 141, 175, 224, 163, 174, 224, 190, 174, 224, 149, 174, 224, 2, 224, 174, 191, 224, 174, 178,
+			3, 71, 109, 72, 0, 224, 174, 164, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 154, 8, 2, 224, 174, 178, 3, 71, 109, 72, 34,
+			118, 76, 109, 0, 4, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 149, 224, 174, 190, 224, 174,
+			179, 224, 174, 191, 3, 71, 109, 72, 72, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 170,
+			224, 174, 190, 224, 174, 149, 224, 175, 129, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191,
+			32, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174,
+			149, 224, 175, 129, 0, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0, 224,
+			174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 176, 224, 174, 190, 224, 174, 154, 8, 2, 224, 174, 178, 3, 71, 109, 72, 72,
+			37, 34, 118, 76, 109, 0, 224, 174, 149, 8, 2, 224, 174, 191, 224, 174, 176, 224, 174, 163, 224, 175, 141, 224, 174, 159, 3, 71, 109, 81,
+			0, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 174, 184, 3, 71, 109, 108, 0, 224, 174, 159, 8, 2, 224, 174,
+			190, 224, 174, 178, 224, 174, 191, 224, 174, 175, 224, 174, 169, 3, 71, 109, 139, 0, 224, 175, 128, 224, 174, 164, 8, 2, 224, 175, 139, 224,
+			174, 181, 224, 174, 169, 3, 71, 112, 47, 0, 224, 175, 128, 224, 174, 154, 224, 175, 141, 8, 2, 224, 174, 178, 3, 71, 112, 76, 0, 224,
+			175, 128, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 175, 130, 224, 174, 159, 224, 175, 141, 8, 3, 71, 112, 139, 34, 123, 139, 0, 4,
+			224, 174, 190, 8, 2, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 3, 71, 114, 0, 224, 174, 190, 8, 2, 224,
+			174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 224, 175, 135, 224, 174, 169, 224, 174, 159, 224, 175, 141,
+			8, 3, 71, 114, 50, 109, 139, 0, 224, 175, 139, 8, 2, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 169, 3, 71, 118, 0, 224,
+			174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 159, 224, 174, 190, 3, 71, 118, 34, 71, 109, 0, 224, 174, 190, 224,
+			174, 170, 8, 2, 224, 175, 129, 224, 174, 156, 224, 174, 191, 3, 71, 118, 48, 0, 224, 174, 190, 224, 174, 170, 224, 174, 164, 224, 174, 191,
+			1, 154, 174, 224, 3, 71, 118, 48, 109, 47, 37, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 8, 2, 224, 175, 128, 224,
+			174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 190, 3, 71, 118, 49, 139, 0, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8,
+			2, 224, 174, 169, 224, 174, 191, 3, 71, 118, 55, 49, 109, 0, 224, 174, 190, 224, 174, 178, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174,
+			159, 3, 71, 118, 55, 109, 48, 0, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 191, 224, 174, 174, 224, 175,
+			139, 224, 174, 176, 3, 71, 118, 55, 139, 0, 224, 174, 190, 224, 174, 178, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 8, 3, 71, 118, 55, 139, 37, 49, 0, 224, 174, 190, 224, 174, 153, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 224, 174, 149,
+			224, 175, 141, 3, 71, 118, 68, 49, 0, 4, 224, 174, 190, 224, 174, 170, 1, 191, 174, 224, 178, 174, 224, 133, 174, 224, 2, 224, 174, 190,
+			3, 71, 118, 71, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 224,
+			174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 190, 224, 174, 149, 224, 175, 135, 224, 174, 170, 224, 175, 141, 0, 224,
+			174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 190, 224, 174, 185, 224, 175, 135, 224, 174, 170, 224, 175, 141, 0, 224,
+			174, 190, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 181, 0, 224, 174, 190, 224, 174, 170, 8, 141, 175, 224, 175, 174, 224, 190, 174, 224,
+			154, 174, 224, 2, 224, 174, 190, 0, 224, 174, 190, 224, 174, 170, 8, 191, 174, 224, 175, 174, 224, 190, 174, 224, 154, 174, 224, 2, 224, 174,
+			190, 0, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 71, 118, 71, 109, 0, 4, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224,
+			174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 164, 224, 175, 136, 3, 71, 118, 72, 72, 0, 224, 174, 190, 224, 174, 164, 224, 175,
+			141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 170, 224, 175, 141, 0, 224, 174, 190, 224, 174, 164, 224, 175, 141, 224, 174,
+			164, 8, 2, 224, 174, 191, 224, 174, 175, 224, 174, 174, 224, 175, 141, 32, 0, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 164, 8,
+			2, 224, 174, 190, 224, 174, 164, 3, 71, 118, 81, 72, 0, 224, 174, 190, 224, 174, 149, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 135,
+			224, 174, 175, 224, 174, 169, 3, 71, 118, 108, 0, 224, 174, 190, 224, 174, 159, 8, 2, 224, 174, 169, 224, 174, 191, 3, 71, 118, 139, 109,
+			0, 224, 174, 190, 224, 174, 159, 224, 175, 141, 224, 174, 174, 224, 174, 191, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169,
+			3, 71, 118, 140, 65, 37, 66, 139, 109, 0, 224, 175, 139, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 178, 3, 71, 119, 48, 0, 224,
+			175, 139, 224, 174, 170, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 3, 71, 119, 83, 0, 224, 175, 139, 224, 174, 170, 8, 2, 224,
+			174, 176, 224, 175, 141, 224, 174, 184, 3, 71, 119, 83, 109, 0, 224, 175, 130, 224, 174, 164, 224, 175, 141, 8, 2, 32, 3, 71, 123, 47,
+			0, 224, 175, 130, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 178, 3, 71, 123, 48, 0, 224, 175, 130, 224, 174, 170, 8, 2, 224, 174,
+			164, 224, 174, 191, 3, 71, 123, 48, 109, 0, 224, 175, 130, 224, 174, 164, 224, 175, 141, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 177,
+			224, 175, 141, 3, 71, 123, 72, 72, 0, 224, 175, 130, 224, 174, 159, 8, 2, 224, 174, 190, 224, 174, 169, 3, 71, 123, 139, 0, 224, 175,
+			136, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 184, 3, 71, 134, 48, 0, 4, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 168, 174,
+			224, 133, 174, 224, 2, 12, 3, 71, 148, 0, 1, 190, 174, 224, 164, 174, 224, 129, 175, 224, 169, 174, 224, 133, 174, 224, 2, 12, 0, 1,
+			190, 174, 224, 164, 174, 224, 141, 175, 224, 184, 174, 224, 169, 174, 224, 174, 174, 224, 2, 12, 0, 1, 190, 174, 224, 164, 174, 224, 141, 175,
+			224, 184, 174, 224, 176, 174, 224, 191, 174, 224, 170, 174, 224, 2, 12, 0, 1, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224, 141,
+			175, 224, 159, 174, 224, 170, 174, 224, 2, 25, 0, 1, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224, 141, 175, 224, 159, 174, 224,
+			170, 174, 224, 175, 174, 224, 129, 175, 224, 154, 174, 224, 2, 25, 0, 1, 190, 174, 224, 164, 174, 224, 191, 174, 224, 176, 174, 224, 170, 174,
+			224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 141, 175, 224, 184, 174, 224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 149, 174, 224,
+			176, 174, 224, 191, 174, 224, 181, 174, 224, 2, 12, 0, 8, 190, 174, 224, 164, 174, 224, 170, 174, 224, 139, 175, 224, 149, 174, 224, 2, 12,
+			0, 8, 190, 174, 224, 164, 174, 224, 190, 174, 224, 154, 174, 224, 141, 175, 224, 154, 174, 224, 170, 174, 224, 2, 12, 0, 4, 1, 133, 174,
+			224, 2, 224, 174, 191, 224, 174, 159, 224, 174, 181, 224, 174, 191, 224, 174, 159, 3, 83, 0, 1, 134, 174, 224, 2, 224, 174, 191, 224, 174,
+			176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 1, 136, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 1, 139, 175, 224,
+			176, 174, 224, 141, 175, 224, 149, 174, 224, 136, 175, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 1, 141, 175, 224, 169, 174, 224,
+			135, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 1, 141, 175, 224, 174, 174, 224, 135, 174, 224, 2, 224, 174,
+			190, 224, 174, 178, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 154, 224, 174,
+			190, 0, 1, 141, 175, 224, 178, 174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 1, 141, 175, 224,
+			178, 174, 224, 134, 174, 224, 2, 224, 174, 190, 0, 1, 141, 175, 224, 184, 174, 224, 141, 175, 224, 149, 174, 224, 134, 174, 224, 2, 224, 175,
+			139, 224, 174, 176, 224, 175, 141, 224, 174, 159, 0, 1, 144, 174, 224, 2, 224, 175, 139, 224, 174, 169, 0, 1, 190, 174, 224, 154, 174, 224,
+			141, 175, 224, 154, 174, 224, 133, 174, 224, 2, 224, 175, 128, 0, 1, 191, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 175, 139, 224, 174,
+			176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 169, 224, 174, 191, 224, 174,
+			175, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174, 169, 224, 175, 128, 224, 174, 175, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 174,
+			191, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174,
+			191, 32, 0, 8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 174, 191, 0,
+			8, 2, 224, 174, 190, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 224, 174, 191, 224, 174, 175, 224, 175, 136, 0, 8, 2, 224,
+			174, 190, 224, 174, 154, 224, 174, 191, 18, 69, 0, 8, 2, 224, 174, 190, 224, 174, 154, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174,
+			190, 224, 174, 164, 224, 175, 141, 224, 174, 164, 224, 174, 191, 224, 174, 174, 224, 174, 190, 0, 8, 2, 224, 174, 190, 224, 174, 174, 224, 174,
+			191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 174, 159, 224, 175, 135, 0, 8, 2, 224, 174, 190, 224, 174,
+			176, 224, 175, 141, 224, 174, 174, 18, 69, 224, 174, 191, 0, 8, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 129,
+			224, 174, 178, 0, 8, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 170, 224, 175, 135, 224, 174, 159, 224, 175, 141, 0, 8, 2,
+			224, 174, 190, 224, 174, 185, 224, 174, 191, 224, 174, 175, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 174, 191, 18, 69, 224, 174, 191, 224,
+			174, 149, 224, 175, 141, 18, 69, 0, 8, 2, 224, 174, 191, 224, 174, 149, 224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 153, 224, 175,
+			141, 224, 174, 149, 224, 174, 176, 224, 175, 141, 32, 0, 8, 2, 224, 174, 191, 224, 174, 154, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224,
+			174, 184, 0, 8, 2, 224, 174, 191, 224, 174, 156, 224, 174, 191, 32, 0, 8, 2, 224, 174, 191, 224, 174, 156, 224, 174, 191, 224, 174, 175,
+			0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159,
+			224, 174, 176, 0, 8, 2, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 153, 224, 175, 141, 0, 8, 2,
+			224, 174, 191, 224, 174, 169, 224, 174, 191, 224, 174, 183, 0, 8, 2, 224, 174, 191, 224, 174, 169, 224, 175, 141, 224, 174, 178, 224, 174, 190,
+			224, 174, 168, 224, 175, 141, 224, 174, 164, 0, 8, 2, 224, 174, 191, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174, 181, 224, 174, 176,
+			224, 174, 191, 0, 8, 2, 224, 174, 191, 224, 174, 178, 224, 175, 141, 224, 174, 174, 0, 8, 2, 224, 174, 191, 224, 174, 183, 224, 175, 141,
+			0, 8, 2, 224, 175, 128, 224, 174, 169, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 129, 224, 174, 178,
+			224, 175, 141, 32, 18, 80, 0, 8, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 32, 0, 8, 2, 224, 175,
+			134, 224, 174, 159, 224, 174, 176, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174, 159, 224, 174, 176, 224, 175, 135, 0, 8, 2, 224, 175,
+			134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159, 224, 174, 191, 224, 174, 149, 224, 175,
+			141, 0, 8, 2, 224, 175, 134, 224, 174, 164, 224, 174, 176, 0, 8, 2, 224, 175, 134, 224, 174, 170, 224, 175, 141, 224, 174, 176, 224, 174,
+			181, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 134, 224, 174, 175, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 134, 224, 174,
+			176, 224, 175, 141, 224, 174, 169, 224, 174, 190, 224, 174, 163, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 176, 224, 175,
+			141, 224, 174, 169, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 159, 0, 8, 2, 224, 175, 134, 224, 174, 178, 224, 174, 191, 224, 174,
+			149, 224, 175, 141, 224, 174, 184, 0, 8, 2, 224, 175, 135, 224, 174, 149, 224, 175, 141, 224, 174, 159, 224, 174, 176, 0, 8, 2, 224, 175,
+			135, 224, 174, 174, 224, 174, 184, 0, 8, 2, 224, 175, 135, 224, 174, 174, 224, 174, 191, 224, 174, 178, 224, 174, 191, 0, 8, 2, 224, 175,
+			135, 224, 174, 183, 224, 174, 169, 0, 8, 2, 224, 175, 136, 224, 174, 170, 224, 174, 176, 0, 8, 2, 224, 175, 136, 224, 174, 178, 0, 8,
+			2, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 174, 184, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174,
+			159, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175,
+			139, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 169, 224, 175, 141, 32, 0,
+			8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 174, 191, 224, 174, 178, 224,
+			175, 129, 224, 174, 174, 224, 175, 141, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 129, 32, 0, 8, 2, 224, 175, 139, 224, 174, 169,
+			224, 175, 129, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 129, 224, 174, 159, 224, 175, 136,
+			224, 174, 175, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 129, 224, 174, 178, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 136,
+			0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 149, 224, 174, 179, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141,
+			224, 174, 149, 224, 175, 130, 224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 169, 224, 175, 141, 224, 174, 178, 224, 174, 149, 224, 175, 130,
+			224, 174, 159, 0, 8, 2, 224, 175, 139, 224, 174, 176, 224, 175, 141, 224, 174, 156, 224, 174, 176, 224, 174, 191, 0, 8, 2, 224, 175, 139,
+			224, 174, 176, 224, 175, 141, 224, 174, 174, 224, 175, 135, 224, 174, 169, 0, 8, 128, 175, 224, 169, 174, 224, 185, 174, 224, 2, 224, 174, 190,
+			0, 8, 128, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 8, 128, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190,
+			0, 8, 136, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 178, 0, 8, 136, 175, 224, 176, 174, 224, 2, 224, 174, 191, 224, 174, 179,
+			0, 8, 139, 175, 224, 154, 174, 224, 2, 224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 141, 175, 224, 159, 174, 224, 190, 174, 224, 179,
+			174, 224, 191, 174, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 176, 0, 8, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 191,
+			224, 174, 149, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 129, 175, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178,
+			174, 224, 129, 175, 224, 156, 174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 154, 174, 224, 2, 224, 175, 139,
+			224, 174, 169, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174, 190, 224, 174, 184, 224, 175, 141, 224, 174, 159,
+			0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 181, 174, 224, 2, 224, 175, 135, 224, 174, 176, 0, 8, 141, 175, 224, 178, 174, 224, 149,
+			174, 224, 2, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 2, 224, 175, 136, 0, 8, 141, 175, 224, 178, 174, 224, 190,
+			174, 224, 159, 174, 224, 2, 224, 174, 191, 224, 174, 169, 0, 8, 149, 174, 224, 2, 224, 175, 135, 0, 8, 154, 174, 224, 139, 175, 224, 175,
+			174, 224, 191, 174, 224, 164, 174, 224, 2, 224, 174, 191, 0, 8, 164, 174, 224, 141, 175, 224, 184, 174, 224, 129, 175, 224, 174, 174, 224, 2,
+			224, 174, 190, 0, 8, 190, 174, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 190, 174, 224, 149, 174, 224, 134, 175, 224, 174, 174, 224, 2,
+			224, 175, 139, 224, 174, 169, 0, 8, 190, 174, 224, 159, 174, 224, 149, 174, 224, 2, 224, 174, 191, 0, 8, 190, 174, 224, 174, 174, 224, 2,
+			224, 174, 191, 224, 174, 175, 224, 174, 190, 0, 8, 190, 174, 224, 178, 174, 224, 190, 174, 224, 170, 174, 224, 164, 174, 224, 2, 224, 175, 128,
+			0, 8, 191, 174, 224, 154, 174, 224, 170, 174, 224, 2, 224, 174, 191, 224, 174, 149, 224, 175, 141, 0, 8, 191, 174, 224, 169, 174, 224, 130,
+			175, 224, 175, 174, 224, 2, 224, 174, 190, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 191, 174, 224, 169, 174, 224, 185, 174, 224, 2,
+			224, 174, 190, 0, 8, 191, 174, 224, 178, 174, 224, 149, 174, 224, 2, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 153, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 224, 174,
+			191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 32, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
+			169, 224, 175, 141, 224, 174, 154, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224,
+			174, 191, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174, 156, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175,
+			128, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175,
+			141, 224, 174, 184, 0, 224, 174, 191, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 183, 224, 175, 141, 0, 224, 174, 191, 8, 2, 224, 174,
+			178, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 154, 224, 174, 176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 181, 224, 174,
+			176, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 183, 0, 224, 174, 191, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174,
+			184, 224, 175, 141, 224, 174, 149, 0, 224, 174, 191, 8, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 175, 224, 175, 129, 224, 174,
+			154, 0, 224, 174, 191, 8, 141, 175, 224, 176, 174, 224, 134, 175, 224, 170, 174, 224, 2, 224, 174, 175, 224, 175, 130, 224, 174, 174, 0, 224,
+			175, 129, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176, 224, 174,
+			169, 224, 175, 141, 224, 174, 184, 0, 224, 175, 129, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 174,
+			190, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 149, 224, 174, 169, 0, 224, 175, 141, 1, 134, 174, 224, 2, 224, 174, 149, 224, 174,
+			190, 224, 174, 169, 0, 224, 175, 141, 1, 191, 174, 224, 154, 174, 224, 134, 174, 224, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190,
+			224, 174, 153, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 174, 190, 224, 174, 149, 0, 224, 175,
+			141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174, 159, 224, 175, 141, 32, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 190, 224, 174,
+			169, 224, 175, 141, 224, 174, 154, 224, 174, 191, 224, 174, 184, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174,
+			190, 224, 174, 169, 224, 175, 141, 224, 174, 184, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 175, 141, 224, 174,
+			156, 0, 224, 175, 141, 8, 2, 224, 174, 176, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 224, 175, 141, 0, 224, 175, 141, 8,
+			2, 224, 174, 176, 224, 175, 134, 224, 174, 183, 224, 175, 141, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 181, 224, 174, 176, 0, 224,
+			175, 141, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 183, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 174, 190, 224, 174, 184, 224, 175,
+			141, 224, 174, 149, 0, 224, 175, 141, 8, 2, 224, 174, 179, 224, 175, 139, 224, 174, 176, 224, 174, 191, 224, 174, 159, 224, 174, 190, 0, 224,
+			175, 141, 8, 129, 175, 224, 178, 174, 224, 2, 224, 174, 164, 224, 174, 190, 224, 174, 169, 0, 224, 175, 141, 8, 136, 175, 224, 178, 174, 224,
+			2, 32, 0, 224, 175, 141, 8, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 175, 224, 175, 130, 224, 174, 154, 0, 224, 175, 141,
+			8, 141, 175, 224, 178, 174, 224, 149, 174, 224, 0, 224, 175, 141, 8, 190, 174, 224, 154, 174, 224, 139, 175, 224, 176, 174, 224, 141, 175, 224,
+			149, 174, 224, 136, 175, 224, 174, 174, 224, 2, 224, 174, 159, 0, 224, 175, 141, 8, 191, 174, 224, 178, 174, 224, 2, 224, 174, 159, 0, 224,
+			175, 141, 224, 174, 170, 224, 174, 191, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224,
+			174, 191, 224, 174, 176, 8, 2, 224, 174, 163, 224, 175, 141, 224, 174, 159, 224, 175, 141, 224, 174, 184, 3, 83, 34, 36, 0, 224, 174, 191,
+			224, 174, 176, 224, 175, 134, 224, 174, 158, 224, 175, 141, 224, 174, 154, 8, 3, 83, 34, 36, 67, 76, 148, 0, 4, 224, 174, 191, 224, 174,
+			176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8, 3, 83, 34, 36, 140, 34, 37,
+			49, 0, 224, 175, 141, 224, 174, 176, 224, 175, 134, 224, 174, 159, 224, 175, 141, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 8,
+			0, 224, 175, 134, 224, 174, 176, 224, 175, 139, 224, 174, 184, 8, 3, 83, 36, 34, 119, 88, 148, 0, 224, 175, 134, 224, 174, 178, 224, 175,
+			139, 224, 174, 183, 224, 174, 191, 224, 174, 170, 224, 175, 141, 8, 3, 83, 36, 55, 119, 93, 37, 48, 0, 224, 174, 191, 224, 174, 149, 1,
+			191, 174, 224, 178, 174, 224, 190, 174, 224, 181, 174, 224, 2, 224, 175, 135, 224, 174, 183, 224, 174, 169, 3, 83, 37, 49, 0, 224, 174, 191,
+			224, 174, 178, 224, 174, 191, 224, 174, 170, 8, 3, 83, 37, 55, 37, 48, 148, 0, 224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 159,
+			224, 175, 134, 224, 174, 178, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 191, 224, 174, 175, 3, 83, 37, 55, 37, 72, 36, 55, 83, 0,
+			224, 174, 191, 224, 174, 178, 224, 174, 191, 224, 174, 174, 8, 3, 83, 37, 55, 65, 148, 0, 4, 224, 174, 191, 224, 174, 178, 224, 175, 141,
+			224, 174, 159, 8, 2, 224, 174, 176, 224, 175, 141, 32, 18, 88, 3, 83, 37, 55, 139, 109, 0, 224, 174, 191, 224, 174, 178, 224, 175, 141,
+			224, 174, 159, 8, 32, 18, 88, 2, 224, 174, 176, 0, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 149, 8, 2, 224, 174, 190, 3,
+			83, 40, 55, 49, 0, 224, 175, 129, 224, 174, 159, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 190, 224, 174, 178, 3, 83, 40, 139, 71,
+			0, 224, 175, 141, 224, 174, 159, 224, 175, 141, 8, 190, 174, 224, 154, 174, 224, 2, 224, 174, 181, 224, 175, 135, 224, 174, 176, 3, 83, 47,
+			0, 224, 174, 191, 224, 174, 179, 8, 2, 224, 175, 136, 224, 174, 159, 224, 175, 141, 3, 83, 62, 0, 4, 224, 174, 191, 224, 174, 179, 224,
+			174, 190, 224, 174, 170, 224, 175, 141, 8, 3, 83, 62, 118, 48, 0, 224, 175, 141, 224, 174, 179, 224, 174, 190, 224, 174, 170, 224, 175, 141,
+			8, 0, 224, 175, 141, 224, 174, 154, 1, 133, 174, 224, 2, 224, 174, 178, 3, 83, 88, 109, 0, 4, 1, 141, 175, 224, 169, 174, 224, 135,
+			174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 3, 83, 109, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 149, 224, 175, 128,
+			224, 174, 176, 0, 8, 2, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 175, 129, 224, 174, 164, 224, 175, 128, 224, 174, 169, 0, 8, 2,
+			224, 174, 169, 224, 174, 178, 0, 8, 2, 224, 174, 176, 224, 174, 191, 224, 174, 164, 224, 174, 190, 32, 0, 8, 2, 224, 174, 176, 224, 174,
+			191, 224, 174, 164, 224, 174, 190, 224, 174, 181, 0, 8, 2, 224, 174, 176, 224, 175, 128, 224, 174, 164, 0, 8, 2, 224, 174, 176, 224, 175,
+			141, 224, 174, 169, 224, 174, 184, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 154, 224, 175, 141, 224, 174,
+			154, 224, 174, 176, 0, 8, 2, 224, 174, 176, 224, 175, 141, 224, 174, 178, 224, 174, 190, 224, 174, 153, 224, 175, 141, 0, 8, 128, 175, 224,
+			159, 174, 224, 141, 175, 224, 184, 174, 224, 2, 224, 174, 169, 0, 8, 138, 175, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 2, 224, 174,
+			184, 224, 174, 176, 0, 8, 141, 175, 224, 169, 174, 224, 149, 174, 224, 2, 224, 174, 176, 224, 175, 141, 224, 174, 174, 0, 8, 141, 175, 224,
+			174, 174, 224, 191, 174, 224, 154, 174, 224, 2, 224, 174, 169, 224, 174, 191, 0, 8, 141, 175, 224, 178, 174, 224, 154, 174, 224, 2, 224, 174,
+			176, 0, 8, 190, 174, 224, 156, 174, 224, 2, 224, 174, 176, 0, 8, 191, 174, 224, 169, 174, 224, 134, 175, 224, 156, 174, 224, 2, 224, 174,
+			176, 0, 224, 175, 141, 224, 174, 170, 1, 134, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224,
+			175, 141, 224, 174, 170, 1, 190, 174, 224, 169, 174, 224, 141, 175, 224, 169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174,
+			191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 175, 141, 224, 174, 170, 224, 174, 191, 1, 190, 174, 224, 169, 174, 224, 141, 175, 224,
+			169, 174, 224, 134, 175, 224, 164, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 149, 224, 175, 141, 224, 174, 149, 0, 224, 174, 176, 224,
+			175, 141, 224, 174, 169, 224, 174, 191, 224, 174, 154, 8, 2, 224, 174, 176, 3, 83, 109, 34, 50, 37, 76, 109, 0, 224, 174, 176, 224, 175,
+			130, 224, 174, 149, 224, 175, 141, 8, 3, 83, 109, 34, 151, 49, 0, 4, 224, 174, 164, 224, 175, 141, 1, 190, 174, 224, 176, 174, 224, 133,
+			174, 224, 3, 83, 109, 47, 0, 224, 174, 164, 224, 175, 141, 8, 2, 224, 174, 181, 224, 174, 190, 0, 224, 174, 164, 224, 175, 141, 8, 190,
+			174, 224, 178, 174, 224, 191, 174, 224, 149, 174, 224, 0, 224, 174, 175, 224, 174, 176, 224, 175, 141, 224, 174, 170, 8, 2, 224, 174, 190, 224,
+			174, 149, 224, 175, 141, 224, 174, 184, 3, 83, 109, 57, 109, 34, 83, 0, 224, 175, 128, 224, 174, 149, 224, 175, 141, 8, 176, 174, 224, 3,
+			83, 112, 49, 0, 224, 174, 190, 224, 174, 164, 8, 2, 224, 174, 191, 224, 174, 174, 224, 174, 190, 3, 83, 118, 47, 0, 224, 174, 190, 224,
+			174, 149, 224, 175, 141, 8, 2, 224, 174, 178, 224, 174, 190, 224, 174, 168, 224, 175, 141, 224, 174, 164, 3, 83, 118, 49, 0, 224, 174, 190,
+			224, 174, 178, 224, 175, 141, 224, 174, 159, 8, 191, 174, 224, 159, 174, 224, 3, 83, 118, 55, 139, 148, 0, 224, 174, 190, 224, 174, 163, 224,
+			175, 141, 224, 174, 159, 8, 2, 18, 69, 224, 174, 191, 3, 83, 118, 66, 139, 109, 0, 224, 175, 139, 224, 174, 149, 8, 2, 224, 174, 184,
+			3, 83, 119, 49, 109, 0, 4, 224, 175, 139, 224, 174, 159, 224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 149, 224, 174, 191, 224, 174,
+			176, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 3, 83, 119, 139, 139, 119, 81, 34, 118, 83, 109, 0, 224, 175, 139, 224, 174, 159,
+			224, 175, 141, 224, 174, 159, 224, 175, 139, 224, 174, 149, 224, 175, 141, 224, 174, 176, 224, 174, 190, 224, 174, 170, 8, 2, 224, 174, 176, 0,
+			4, 224, 174, 181, 224, 175, 129, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 3, 83, 135, 66, 139, 109, 0, 224, 175,
+			140, 224, 174, 163, 224, 175, 141, 224, 174, 159, 8, 2, 224, 174, 169, 0, 4, 1, 141, 175, 224, 178, 174, 224, 190, 174, 224, 159, 174, 224,
+			133, 174, 224, 3, 83, 148, 0, 1, 176, 174, 224, 141, 175, 224, 183, 174, 224, 133, 174, 224, 0, 1, 190, 174, 224, 176, 174, 224, 141, 175,
+			224, 183, 174, 224, 133, 174, 224, 0, 8, 128, 175, 224, 176, 174, 224, 134, 175, 224, 183, 174, 224, 2, 12, 0, 8, 128, 175, 224, 176, 174,
+			224, 183, 174, 224, 2, 12, 0, 8, 130, 175, 224, 176, 174, 224, 141, 175, 224, 170, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175,
+			224, 154, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 134, 175, 224, 183, 174, 224, 0, 8, 141, 175, 224, 178, 174, 224, 190, 174, 224, 159,
+			174, 224, 129, 175, 224, 176, 174, 224, 0, 8, 176, 174, 224, 190, 174, 224, 183, 174, 224, 129, 175, 224, 174, 174, 224, 0, 7, 6, 1, 47,
+			0, 4, 2, 17, 66, 3, 65, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 175, 130, 0, 224, 174, 191, 8, 18, 72, 154, 174, 224, 2,
+			224, 174, 175, 0, 3, 65, 109, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0, 3, 57, 109, 0, 7, 6, 1, 49, 0, 4, 2,
+			17, 66, 3, 34, 0, 224, 174, 191, 8, 164, 174, 224, 191, 174, 224, 168, 174, 224, 2, 224, 174, 154, 224, 174, 169, 0, 224, 174, 191, 8,
+			174, 174, 224, 191, 174, 224, 181, 174, 224, 2, 224, 174, 154, 0, 224, 175, 129, 1, 191, 174, 224, 164, 174, 224, 133, 174, 224, 2, 224, 174,
+			183, 224, 175, 141, 224, 174, 159, 0, 224, 175, 129, 8, 191, 174, 224, 164, 174, 224, 176, 174, 224, 129, 175, 224, 164, 174, 224, 2, 224, 174,
+			183, 224, 175, 141, 224, 174, 159, 0, 3, 34, 109, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 51, 0, 3, 51, 109, 0, 224, 175, 141,
+			224, 174, 154, 3, 76, 12, 148, 0, 224, 175, 141, 2, 224, 174, 177, 3, 139, 0, 7, 6, 1, 51, 0, 4, 2, 17, 66, 3, 55, 0,
+			224, 174, 191, 8, 149, 174, 224, 2, 224, 174, 175, 224, 174, 190, 224, 174, 163, 0, 3, 55, 109, 0, 224, 175, 141, 8, 181, 174, 224, 190,
+			174, 224, 149, 174, 224, 2, 224, 174, 164, 224, 175, 129, 224, 174, 177, 224, 175, 136, 3, 139, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3,
+			62, 0, 3, 62, 109, 0, 224, 175, 141, 1, 137, 174, 224, 2, 224, 174, 164, 224, 175, 129, 224, 174, 177, 224, 175, 136, 3, 139, 0, 224,
+			175, 141, 224, 174, 164, 8, 149, 174, 224, 141, 175, 224, 149, 174, 224, 174, 174, 224, 2, 224, 175, 138, 224, 174, 149, 224, 175, 136, 3, 139,
+			47, 0, 7, 6, 1, 53, 0, 2, 17, 66, 3, 92, 0, 3, 92, 109, 0, 7, 6, 1, 54, 0, 4, 2, 17, 66, 3, 84, 0, 224,
+			174, 191, 1, 141, 175, 224, 176, 174, 224, 159, 174, 224, 141, 175, 224, 163, 174, 224, 135, 174, 224, 2, 224, 174, 175, 224, 175, 130, 0, 224,
+			174, 191, 1, 141, 175, 224, 181, 174, 224, 18, 68, 2, 224, 174, 175, 224, 174, 190, 0, 224, 174, 191, 2, 224, 174, 175, 224, 175, 130, 224,
 			174, 149, 0, 224, 174, 191, 8, 2, 224, 174, 175, 224, 174, 190, 0, 3, 84, 109, 0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 91, 0,
-			3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 109, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0,
-			3, 89, 109, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 108, 0, 3, 108, 109, 0, 7, 6, 1, 78, 0, 4, 3, 150, 0, 2, 32,
-			0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104, 105, 0, 7, 6, 224, 174, 0, 130, 3, 0, 133,
-			3, 35, 0, 142, 3, 36, 0, 191, 3, 37, 0, 142, 8, 3, 38, 36, 0, 143, 8, 3, 38, 114, 0, 142, 224, 174, 170, 2, 224, 175,
-			141, 224, 174, 176, 224, 174, 178, 3, 38, 114, 48, 0, 148, 224, 174, 191, 3, 39, 62, 37, 0, 136, 3, 112, 0, 143, 3, 114, 0, 4,
-			134, 3, 118, 0, 190, 0, 147, 3, 119, 0, 138, 3, 123, 0, 144, 3, 134, 0, 148, 3, 135, 0, 7, 6, 224, 175, 0, 151, 3, 12,
-			0, 134, 3, 36, 0, 4, 140, 224, 174, 191, 1, 181, 174, 224, 3, 36, 62, 37, 0, 140, 224, 174, 191, 8, 164, 174, 224, 0, 138, 3,
-			39, 0, 129, 3, 40, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 4, 134, 224, 174,
-			179, 8, 154, 174, 224, 3, 135, 0, 134, 224, 174, 179, 8, 170, 174, 224, 0, 134, 224, 174, 179, 8, 174, 174, 224, 2, 224, 174, 169, 0,
+			3, 91, 109, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 109, 0, 7, 6, 1, 57, 0, 4, 1, 191, 174, 224, 176,
+			174, 224, 133, 174, 224, 2, 224, 175, 139, 224, 174, 169, 3, 88, 0, 8, 129, 175, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 131, 224,
+			174, 170, 224, 174, 176, 0, 8, 191, 174, 224, 174, 174, 224, 2, 224, 174, 190, 224, 174, 131, 224, 174, 170, 224, 174, 176, 224, 175, 141, 224,
+			174, 170, 224, 175, 130, 224, 174, 176, 0, 8, 191, 174, 224, 174, 174, 224, 2, 224, 175, 139, 224, 174, 176, 224, 174, 174, 0, 224, 175, 141,
+			224, 174, 170, 8, 191, 174, 224, 185, 174, 224, 2, 224, 175, 129, 224, 174, 178, 224, 175, 141, 224, 174, 178, 224, 174, 190, 3, 88, 71, 0,
+			224, 175, 141, 224, 174, 170, 224, 175, 134, 224, 174, 149, 224, 175, 141, 8, 137, 174, 224, 3, 88, 71, 36, 49, 0, 224, 175, 141, 224, 174,
+			164, 8, 174, 174, 224, 2, 224, 175, 130, 224, 174, 176, 3, 88, 72, 0, 4, 224, 174, 190, 224, 174, 170, 8, 129, 175, 224, 174, 174, 224,
+			2, 224, 174, 176, 3, 88, 118, 83, 109, 0, 224, 174, 190, 224, 174, 170, 8, 191, 174, 224, 174, 174, 224, 2, 224, 174, 176, 224, 175, 141,
+			224, 174, 170, 224, 175, 130, 224, 174, 176, 0, 4, 1, 159, 174, 224, 141, 175, 224, 163, 174, 224, 190, 174, 224, 169, 174, 224, 141, 175, 224,
+			176, 174, 224, 134, 175, 224, 170, 174, 224, 3, 88, 148, 0, 8, 175, 174, 224, 130, 175, 224, 154, 174, 224, 0, 8, 190, 174, 224, 181, 174,
+			224, 168, 174, 224, 0, 2, 17, 66, 3, 89, 0, 3, 89, 109, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 108, 0, 3, 108, 109, 0,
+			7, 6, 1, 78, 0, 4, 3, 149, 0, 2, 32, 0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104,
+			105, 0, 7, 6, 224, 174, 0, 130, 3, 0, 133, 3, 35, 0, 142, 3, 36, 0, 191, 3, 37, 0, 142, 8, 3, 38, 36, 0, 143, 8,
+			3, 38, 114, 0, 142, 224, 174, 170, 2, 224, 175, 141, 224, 174, 176, 224, 174, 178, 3, 38, 114, 48, 0, 148, 224, 174, 191, 3, 39, 62,
+			37, 0, 136, 3, 112, 0, 143, 3, 114, 0, 4, 134, 3, 118, 0, 190, 0, 147, 3, 119, 0, 138, 3, 123, 0, 144, 3, 134, 0, 148,
+			3, 135, 0, 133, 224, 174, 181, 224, 175, 129, 224, 174, 176, 224, 174, 153, 224, 175, 141, 224, 174, 149, 224, 174, 154, 2, 224, 175, 128, 224,
+			174, 170, 3, 135, 34, 109, 68, 81, 109, 88, 0, 7, 6, 224, 175, 0, 151, 3, 12, 0, 134, 3, 36, 0, 4, 140, 224, 174, 191, 1,
+			181, 174, 224, 3, 36, 62, 37, 0, 140, 224, 174, 191, 8, 164, 174, 224, 0, 138, 3, 39, 0, 129, 3, 40, 0, 128, 3, 112, 0, 135,
+			3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 4, 134, 224, 174, 179, 8, 149, 174, 224, 2, 224, 174, 154, 224, 174,
+			178, 224, 175, 141, 224, 174, 175, 3, 135, 0, 134, 224, 174, 179, 8, 154, 174, 224, 0, 134, 224, 174, 179, 8, 170, 174, 224, 0, 134, 224,
+			174, 179, 8, 174, 174, 224, 2, 224, 174, 169, 0, 134, 224, 174, 179, 8, 174, 174, 224, 2, 224, 174, 176, 224, 174, 191, 224, 174, 175, 0,
 			134, 224, 174, 179, 8, 174, 174, 224, 2, 224, 174, 184, 0, 134, 224, 174, 179, 8, 181, 174, 224, 2, 224, 174, 181, 224, 174, 190, 224, 174,
 			178, 0, 140, 0, 7, 6, 0, 224, 175, 141, 3, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2,
 			32, 15, 0, 46, 1, 15, 2, 15, 12, 3, 10, 48, 40, 62, 62, 37, 0, 114, 115, 1, 19, 2, 32, 46, 15, 3, 34, 123, 48, 112,
 			88, 0, 45, 8, 32, 2, 32, 15, 3, 49, 109, 92, 37, 47, 47, 109, 55, 0, 36, 3, 72, 39, 55, 109, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts62 = FileInMemory_createWithData (88227, reinterpret_cast<const char *> (&espeakdata_dicts62_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ta_dict", 
+		autoFileInMemory espeakdata_dicts63 = FileInMemory_createWithData (110757, reinterpret_cast<const char *> (&espeakdata_dicts63_data), 
+			U"espeak-1.48.04-source/espeak-data/ta_dict", 
 			U"ta");
-		Collection_addItem (me.peek(), espeakdata_dicts62.transfer());
+		my addItem_move (espeakdata_dicts63.move());
 
-		static unsigned char espeakdata_dicts63_data[3365] = {
-			0, 4, 0, 0, 164, 9, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
-			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 0, 0, 5, 65, 20, 112, 0, 0, 0,
-			0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6, 65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 0,
-			0, 0, 6, 65, 36, 118, 57, 0, 0, 9, 1, 37, 97, 118, 47, 35, 65, 0, 0, 0, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0,
-			12, 1, 42, 50, 35, 49, 93, 35, 47, 34, 35, 0, 0, 10, 1, 43, 49, 123, 141, 37, 49, 35, 0, 0, 7, 65, 44, 49, 114, 57,
-			0, 0, 0, 0, 8, 1, 47, 89, 55, 118, 93, 0, 0, 6, 65, 48, 116, 55, 0, 0, 0, 0, 0, 6, 65, 52, 116, 65, 0, 0,
-			0, 0, 0, 6, 65, 56, 116, 50, 0, 0, 0, 0, 0, 5, 65, 60, 119, 0, 0, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0,
-			0, 0, 7, 65, 68, 49, 57, 123, 0, 0, 0, 0, 0, 6, 65, 72, 118, 34, 0, 0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0,
-			0, 0, 14, 4, 95, 48, 67, 48, 84, 35, 50, 72, 35, 55, 40, 0, 0, 6, 65, 80, 138, 112, 0, 0, 0, 0, 0, 6, 65, 84,
-			57, 123, 0, 0, 0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 0, 13, 1, 92, 71, 57, 118, 49, 35, 89, 55, 118, 93, 0,
-			11, 65, 92, 72, 109, 71, 109, 55, 57, 123, 0, 0, 0, 0, 0, 15, 4, 95, 49, 77, 49, 39, 49, 35, 84, 36, 57, 57, 37, 0,
-			7, 65, 96, 116, 49, 89, 0, 0, 12, 4, 95, 49, 77, 50, 55, 35, 49, 93, 35, 0, 0, 11, 4, 95, 49, 77, 51, 49, 39, 47,
-			37, 0, 0, 0, 7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0, 7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 4, 16, 20, 10, 72, 4, 35, 97, 118, 65, 49, 35, 65, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5, 95, 48, 77, 50, 24, 55, 35,
-			49, 93, 35, 55, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 11, 6, 224, 176, 163, 224, 177, 141, 37, 66, 0, 11, 6, 224, 176, 155, 224, 177, 141, 37, 144, 0, 12, 5, 95, 48, 77, 49, 24,
-			84, 36, 55, 40, 0, 0, 0, 0, 0, 11, 6, 224, 176, 185, 224, 177, 141, 37, 107, 0, 11, 6, 224, 176, 161, 224, 177, 141, 37, 141,
-			0, 11, 6, 224, 176, 153, 224, 177, 141, 37, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 5, 95, 48, 77, 51,
-			24, 49, 39, 47, 55, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 179, 224, 177,
-			141, 37, 62, 0, 11, 6, 224, 176, 171, 224, 177, 141, 37, 136, 0, 0, 0, 0, 0, 12, 6, 224, 177, 153, 224, 177, 141, 37, 72, 88,
-			0, 11, 6, 224, 176, 177, 224, 177, 141, 37, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 183, 224,
-			177, 141, 37, 93, 0, 11, 6, 224, 176, 159, 224, 177, 141, 37, 140, 0, 11, 6, 224, 176, 151, 224, 177, 141, 37, 81, 0, 0, 0, 0,
-			0, 11, 6, 224, 176, 181, 224, 177, 141, 37, 84, 0, 11, 6, 224, 176, 157, 224, 177, 141, 37, 145, 0, 11, 6, 224, 176, 149, 224, 177,
-			141, 37, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 49, 1, 39, 49, 35, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 175, 224, 177, 141, 37, 57, 0, 11, 6, 224, 176, 167, 224, 177, 141,
-			37, 139, 0, 0, 0, 0, 0, 11, 6, 224, 176, 173, 224, 177, 141, 37, 137, 0, 11, 6, 224, 176, 165, 224, 177, 141, 37, 138, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 65, 40, 48, 48, 134, 0, 0, 13, 3, 95, 48, 67, 84, 35,
-			50, 72, 35, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 67, 39, 49, 35, 84, 35, 50, 72, 35, 0, 0, 0,
-			0, 0, 0, 0, 16, 3, 95, 49, 57, 48, 35, 65, 72, 39, 65, 65, 35, 72, 37, 0, 0, 17, 3, 95, 49, 56, 48, 35, 72, 139,
-			36, 50, 37, 65, 37, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 49, 48, 35, 72, 35, 49, 39, 50, 141, 40, 0,
-			0, 0, 14, 3, 95, 49, 51, 48, 35, 72, 35, 65, 123, 141, 123, 0, 0, 14, 3, 95, 49, 50, 48, 35, 50, 50, 36, 65, 141, 40,
-			0, 0, 14, 3, 95, 49, 53, 48, 35, 72, 37, 107, 114, 50, 40, 0, 0, 15, 3, 95, 49, 52, 48, 35, 139, 50, 118, 55, 40, 81,
-			40, 0, 0, 14, 3, 95, 49, 55, 48, 35, 72, 37, 107, 114, 141, 40, 0, 0, 14, 3, 95, 49, 54, 48, 35, 72, 35, 107, 118, 34,
-			40, 0, 0, 0, 11, 3, 95, 55, 88, 141, 36, 137, 71, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 10, 3, 95, 49, 88, 48, 35, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 50, 88, 37, 34, 35, 84, 134, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 35, 49, 93, 35, 34, 35, 65, 0, 0, 0, 0, 12,
-			3, 95, 52, 88, 50, 35, 55, 40, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 53, 88, 57, 118, 137, 134, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 54, 88, 35, 34, 35, 84, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 3, 95, 56, 88, 57, 36, 50, 35, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 57, 88, 47,
-			39, 65, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 55, 35, 49, 93, 35,
-			55, 35, 0, 0, 12, 4, 95, 48, 77, 51, 49, 39, 47, 55, 35, 0, 0, 0, 6, 131, 224, 176, 134, 76, 11, 4, 95, 48, 77, 49,
-			84, 36, 55, 35, 0, 0, 0, 8, 3, 224, 177, 140, 148, 135, 0, 0, 11, 3, 224, 177, 141, 84, 39, 47, 47, 40, 0, 6, 131, 224,
-			176, 133, 76, 0, 8, 3, 224, 177, 138, 18, 39, 0, 8, 3, 224, 176, 130, 35, 50, 0, 0, 9, 3, 224, 177, 139, 148, 119, 12, 0,
-			8, 3, 224, 176, 131, 35, 107, 0, 0, 8, 3, 224, 177, 136, 148, 134, 0, 0, 8, 3, 224, 176, 129, 35, 65, 0, 0, 8, 3, 224,
-			177, 134, 18, 36, 0, 0, 9, 3, 224, 177, 135, 148, 114, 12, 0, 0, 9, 3, 224, 177, 132, 148, 34, 123, 0, 0, 0, 9, 3, 224,
-			177, 130, 148, 123, 12, 0, 0, 9, 3, 224, 177, 131, 18, 34, 40, 0, 0, 9, 3, 224, 177, 128, 148, 112, 12, 0, 0, 8, 3, 224,
-			177, 129, 18, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 224, 176, 166, 72, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 176, 190, 148, 118, 12, 0, 0, 8, 3, 224, 176, 191, 18, 37, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 169, 49, 118, 48, 112, 34,
-			134, 140, 0, 0, 9, 2, 194, 182, 84, 114, 34, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 156, 224, 177,
-			141, 37, 79, 0, 0, 0, 0, 0, 11, 6, 224, 176, 162, 224, 177, 141, 37, 143, 0, 11, 6, 224, 176, 154, 224, 177, 141, 37, 80, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 160, 224, 177, 141, 37, 142, 0, 0, 0, 0, 0, 17, 2, 95,
-			33, 118, 97, 80, 35, 34, 57, 118, 34, 138, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176,
-			172, 224, 177, 141, 37, 71, 0, 11, 6, 224, 176, 164, 224, 177, 141, 37, 47, 0, 10, 2, 95, 45, 107, 134, 83, 35, 50, 0, 0, 9,
-			2, 95, 44, 49, 118, 65, 118, 0, 0, 9, 2, 95, 51, 65, 123, 141, 40, 0, 0, 10, 2, 95, 50, 34, 36, 50, 141, 40, 0, 0,
-			11, 6, 224, 176, 178, 224, 177, 141, 37, 55, 0, 11, 6, 224, 176, 170, 224, 177, 141, 37, 48, 0, 10, 2, 95, 49, 39, 49, 35, 140,
-			37, 0, 0, 10, 2, 95, 48, 89, 40, 50, 50, 35, 0, 0, 8, 2, 95, 55, 114, 141, 40, 0, 0, 8, 2, 95, 54, 118, 34, 40,
-			0, 0, 8, 2, 95, 53, 134, 72, 40, 0, 0, 10, 2, 95, 52, 50, 118, 55, 81, 40, 0, 0, 14, 2, 95, 59, 89, 36, 65, 112,
-			49, 119, 55, 35, 50, 0, 0, 10, 2, 95, 58, 49, 119, 55, 35, 50, 0, 0, 12, 2, 95, 57, 47, 39, 65, 65, 37, 72, 37, 0,
-			0, 13, 2, 95, 56, 38, 36, 50, 37, 65, 37, 72, 37, 0, 0, 16, 2, 95, 63, 48, 34, 35, 97, 50, 118, 34, 138, 35, 49, 35,
-			0, 0, 0, 12, 6, 224, 177, 152, 224, 177, 141, 37, 47, 89, 0, 11, 6, 224, 176, 184, 224, 177, 141, 37, 89, 0, 11, 6, 224, 176,
-			176, 224, 177, 141, 37, 34, 0, 11, 6, 224, 176, 152, 224, 177, 141, 37, 147, 0, 0, 0, 0, 0, 11, 6, 224, 176, 182, 224, 177, 141,
-			37, 97, 0, 11, 6, 224, 176, 158, 224, 177, 141, 37, 67, 0, 11, 6, 224, 176, 150, 224, 177, 141, 37, 146, 0, 9, 134, 224, 176, 146,
-			224, 176, 149, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			15, 2, 95, 95, 35, 65, 141, 35, 34, 15, 89, 49, 119, 34, 0, 0, 0, 11, 6, 224, 176, 168, 224, 177, 141, 37, 50, 0, 0, 0,
-			0, 0, 11, 6, 224, 176, 174, 224, 177, 141, 37, 65, 0, 11, 6, 224, 176, 166, 224, 177, 141, 37, 72, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 102, 12, 0, 0, 48, 0, 0, 0, 103, 12, 0, 0, 49, 0, 0, 0, 104, 12,
-			0, 0, 50, 0, 0, 0, 105, 12, 0, 0, 51, 0, 0, 0, 106, 12, 0, 0, 52, 0, 0, 0, 107, 12, 0, 0, 53, 0, 0, 0,
-			108, 12, 0, 0, 54, 0, 0, 0, 109, 12, 0, 0, 55, 0, 0, 0, 110, 12, 0, 0, 56, 0, 0, 0, 111, 12, 0, 0, 57, 0,
-			0, 0, 0, 0, 0, 0, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0, 3, 118, 0, 7, 6, 1, 8, 0, 3, 37, 0, 7,
-			6, 1, 9, 0, 3, 112, 0, 7, 6, 1, 10, 0, 3, 40, 0, 7, 6, 1, 11, 0, 3, 123, 0, 7, 6, 1, 12, 0, 3, 34,
-			40, 0, 7, 6, 1, 13, 0, 3, 45, 0, 7, 6, 1, 15, 0, 3, 36, 0, 8, 3, 38, 36, 0, 7, 6, 1, 16, 0, 3, 114,
-			0, 7, 6, 1, 17, 0, 3, 134, 0, 7, 6, 1, 19, 0, 3, 39, 0, 7, 6, 1, 20, 0, 3, 119, 0, 7, 6, 1, 21, 0,
-			3, 135, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0, 7, 6, 1, 23, 0, 2, 17, 66, 3, 146, 0, 3,
-			146, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0, 7, 6, 1, 25, 0, 2, 17, 66, 3, 147, 0, 3,
-			147, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0, 7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0, 3,
-			80, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 144, 0, 3, 144, 35, 0, 7, 6, 1, 29, 0, 2, 17, 66, 3, 79, 0, 3,
-			79, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 31, 0, 2, 17, 66, 3, 67, 0, 3,
-			67, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 33, 0, 2, 17, 66, 3, 142, 0, 3,
-			142, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 35, 0, 2, 17, 66, 3, 143, 0, 3,
-			143, 35, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 2, 17, 66, 3, 47, 0, 3,
-			47, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 39, 0, 2, 17, 66, 3, 72, 0, 3,
-			72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 41, 0, 2, 17, 66, 3, 50, 0, 3,
-			50, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 44, 0, 2, 17, 66, 3, 136, 0, 3,
-			136, 35, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 46, 0, 2, 17, 66, 3, 137, 0, 3,
-			137, 35, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 48, 0, 2, 17, 66, 3, 57, 0, 3,
-			57, 35, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 50, 0, 2, 17, 66, 3, 34, 0, 3,
-			34, 35, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 35, 0, 7, 6, 1, 52, 0, 2, 17, 66, 3, 62, 0, 3,
-			62, 35, 0, 7, 6, 1, 54, 0, 2, 17, 66, 3, 84, 0, 3, 84, 35, 0, 7, 6, 1, 55, 0, 2, 17, 66, 3, 97, 0, 3,
-			97, 35, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 35, 0, 7, 6, 1, 57, 0, 2, 17, 66, 3, 89, 0, 3,
-			89, 35, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 89, 0, 2, 17, 66, 3, 47, 89, 0,
-			3, 47, 89, 35, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 72, 88, 0, 3, 72, 88, 35, 0, 7, 6, 1, 97, 0, 3, 34, 40,
-			0, 7, 6, 1, 98, 0, 3, 45, 0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104, 105, 0, 7,
-			6, 224, 176, 0, 191, 3, 37, 0, 130, 3, 65, 0, 131, 3, 107, 0, 190, 3, 118, 0, 7, 6, 224, 177, 0, 141, 3, 0, 4, 149,
-			3, 12, 0, 150, 0, 131, 3, 34, 40, 0, 134, 3, 36, 0, 138, 3, 39, 0, 129, 3, 40, 0, 132, 3, 44, 12, 0, 128, 3, 112,
-			0, 135, 3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136, 3, 134, 0, 140, 3, 135, 0, 7, 6, 0, 36, 3, 141, 118, 55, 35,
-			34, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts63 = FileInMemory_createWithData (3364, reinterpret_cast<const char *> (&espeakdata_dicts63_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/te_dict", 
+		static unsigned char espeakdata_dicts64_data[3381] = {
+			0, 4, 0, 0, 177, 9, 0, 0, 0, 0, 0, 0, 0, 6, 65, 4, 114, 57, 0, 0, 0, 0, 0, 6, 65, 8, 71, 112, 0, 0,
+			0, 0, 0, 6, 65, 12, 89, 112, 0, 0, 0, 0, 0, 6, 65, 16, 72, 112, 0, 0, 0, 0, 17, 4, 95, 100, 112, 116, 10, 72,
+			4, 35, 97, 118, 65, 49, 35, 65, 0, 0, 5, 65, 20, 112, 0, 0, 0, 0, 0, 6, 65, 24, 116, 83, 0, 0, 0, 0, 0, 6,
+			65, 28, 75, 112, 0, 0, 0, 0, 0, 6, 65, 32, 114, 76, 0, 0, 0, 0, 0, 6, 65, 36, 118, 57, 0, 0, 9, 1, 37, 97,
+			118, 47, 35, 65, 0, 0, 0, 0, 7, 65, 40, 75, 114, 57, 0, 0, 0, 12, 1, 42, 50, 35, 49, 93, 35, 47, 34, 35, 0, 0,
+			10, 1, 43, 49, 123, 140, 37, 49, 35, 0, 0, 7, 65, 44, 49, 114, 57, 0, 0, 0, 0, 16, 1, 47, 49, 40, 72, 37, 84, 118,
+			55, 40, 81, 112, 47, 35, 0, 0, 6, 65, 48, 116, 55, 0, 0, 0, 0, 0, 6, 65, 52, 116, 65, 0, 0, 0, 0, 0, 6, 65,
+			56, 116, 50, 0, 0, 0, 0, 0, 5, 65, 60, 119, 0, 0, 0, 0, 0, 6, 65, 64, 48, 112, 0, 0, 0, 0, 0, 7, 65, 68,
+			49, 57, 123, 0, 0, 0, 0, 0, 7, 65, 72, 118, 34, 48, 0, 0, 0, 0, 0, 6, 65, 76, 116, 89, 0, 0, 0, 0, 14, 4,
+			95, 48, 67, 48, 85, 35, 50, 72, 35, 55, 40, 0, 0, 6, 65, 80, 25, 112, 0, 0, 0, 0, 0, 6, 65, 84, 57, 123, 0, 0,
+			0, 0, 0, 6, 65, 88, 84, 112, 0, 0, 0, 0, 0, 13, 1, 92, 71, 57, 118, 49, 35, 89, 55, 118, 93, 0, 11, 65, 92, 72,
+			35, 71, 35, 55, 57, 123, 0, 0, 0, 0, 0, 15, 4, 95, 49, 77, 49, 39, 49, 35, 85, 36, 57, 57, 37, 0, 7, 65, 96, 116,
+			49, 89, 0, 0, 12, 4, 95, 49, 77, 50, 55, 35, 49, 93, 35, 0, 0, 11, 4, 95, 49, 77, 51, 49, 39, 47, 37, 0, 0, 0,
+			7, 65, 100, 58, 118, 57, 0, 0, 0, 0, 0, 7, 65, 104, 88, 116, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 163,
+			224, 177, 141, 37, 66, 0, 11, 6, 224, 176, 155, 224, 177, 141, 37, 143, 0, 0, 0, 0, 0, 11, 6, 224, 176, 185, 224, 177, 141, 37,
+			107, 0, 11, 6, 224, 176, 161, 224, 177, 141, 37, 140, 0, 11, 6, 224, 176, 153, 224, 177, 141, 37, 68, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 179, 224, 177, 141,
+			37, 62, 0, 11, 6, 224, 176, 171, 224, 177, 141, 37, 136, 0, 0, 0, 0, 0, 12, 6, 224, 177, 153, 224, 177, 141, 37, 72, 88, 0,
+			11, 6, 224, 176, 177, 224, 177, 141, 37, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 183, 224, 177,
+			141, 37, 93, 0, 11, 6, 224, 176, 159, 224, 177, 141, 37, 139, 0, 11, 6, 224, 176, 151, 224, 177, 141, 37, 81, 0, 0, 0, 0, 0,
+			11, 6, 224, 176, 181, 224, 177, 141, 37, 85, 0, 11, 6, 224, 176, 157, 224, 177, 141, 37, 144, 0, 11, 6, 224, 176, 149, 224, 177, 141,
+			37, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 5, 95, 48, 77, 50, 120,
+			55, 35, 49, 93, 35, 55, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 175, 224, 177, 141, 37, 57, 0, 11, 6, 224,
+			176, 167, 224, 177, 141, 37, 138, 0, 0, 0, 0, 0, 11, 6, 224, 176, 173, 224, 177, 141, 37, 137, 0, 11, 6, 224, 176, 165, 224, 177,
+			141, 37, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 5, 95, 48, 77, 49, 120, 85, 36, 55, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 5, 95, 48, 77, 51, 120, 49, 39, 47, 55, 40, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 65, 40, 48, 48, 134, 0, 0, 13, 3, 95, 48, 67, 85, 35,
+			50, 72, 35, 55, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 67, 39, 49, 35, 85, 35, 50, 72, 35, 0, 0, 0,
+			0, 0, 0, 0, 16, 3, 95, 49, 57, 48, 35, 50, 72, 39, 65, 65, 37, 72, 37, 0, 0, 17, 3, 95, 49, 56, 48, 35, 72, 138,
+			36, 50, 37, 65, 37, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 49, 49, 48, 35, 72, 35, 49, 39, 50, 140, 40, 0,
+			0, 0, 15, 3, 95, 49, 51, 48, 35, 72, 35, 65, 65, 123, 140, 123, 0, 0, 14, 3, 95, 49, 50, 48, 35, 50, 50, 36, 50, 140,
+			40, 0, 0, 14, 3, 95, 49, 53, 48, 35, 72, 37, 107, 114, 50, 40, 0, 0, 15, 3, 95, 49, 52, 48, 35, 138, 50, 118, 55, 40,
+			81, 40, 0, 0, 14, 3, 95, 49, 55, 48, 35, 72, 37, 107, 114, 140, 40, 0, 0, 14, 3, 95, 49, 54, 48, 35, 72, 35, 107, 118,
+			34, 40, 0, 0, 0, 11, 3, 95, 55, 88, 142, 36, 137, 71, 134, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 95, 49, 97, 39, 49,
+			35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 95, 49, 88, 48, 35, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,
+			3, 95, 50, 88, 37, 34, 35, 85, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 63, 63, 35, 49,
+			93, 35, 34, 35, 65, 0, 0, 0, 0, 12, 3, 95, 52, 88, 50, 35, 55, 40, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+			3, 95, 53, 88, 57, 118, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 54, 88, 35, 34, 35, 85, 134, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 56, 88, 57, 36, 50, 35, 137, 134, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 11, 3, 95, 57, 88, 47, 39, 65, 137, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
+			4, 95, 48, 77, 50, 55, 35, 49, 93, 35, 55, 35, 0, 0, 12, 4, 95, 48, 77, 51, 49, 39, 47, 55, 35, 0, 0, 0, 6, 131,
+			224, 176, 134, 76, 11, 4, 95, 48, 77, 49, 85, 36, 55, 35, 0, 0, 0, 8, 3, 224, 177, 140, 147, 135, 0, 0, 11, 3, 224, 177,
+			141, 85, 39, 47, 47, 40, 0, 6, 131, 224, 176, 133, 76, 0, 8, 3, 224, 177, 138, 18, 39, 0, 8, 3, 224, 176, 130, 35, 50, 0,
+			0, 9, 3, 224, 177, 139, 147, 119, 12, 0, 8, 3, 224, 176, 131, 35, 107, 0, 0, 8, 3, 224, 177, 136, 147, 134, 0, 0, 8, 3,
+			224, 176, 129, 35, 65, 0, 0, 8, 3, 224, 177, 134, 18, 36, 0, 0, 9, 3, 224, 177, 135, 147, 114, 12, 0, 0, 9, 3, 224, 177,
+			132, 147, 34, 123, 0, 0, 0, 9, 3, 224, 177, 130, 147, 123, 12, 0, 0, 9, 3, 224, 177, 131, 18, 34, 40, 0, 0, 9, 3, 224,
+			177, 128, 147, 112, 12, 0, 0, 8, 3, 224, 177, 129, 18, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 131, 224, 176, 166, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 3, 224, 176, 190, 147, 118, 12, 0, 0, 8, 3,
+			224, 176, 191, 18, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 12, 2, 194, 169, 49, 118, 48, 112, 34, 134, 139, 0, 0, 9, 2, 194, 182, 85, 114, 34, 118, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 11, 6, 224, 176, 156, 224, 177, 141, 37, 79, 0, 0, 0, 0, 0, 11, 6, 224, 176, 162, 224, 177, 141, 37, 142, 0, 11,
+			6, 224, 176, 154, 224, 177, 141, 37, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 160, 224, 177, 141,
+			37, 141, 0, 0, 0, 0, 0, 17, 2, 95, 33, 118, 97, 80, 35, 34, 57, 118, 34, 25, 35, 49, 35, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 11, 6, 224, 176, 172, 224, 177, 141, 37, 71, 0, 11, 6, 224, 176, 164, 224, 177, 141, 37, 47, 0, 10, 2,
+			95, 45, 107, 134, 83, 35, 50, 0, 0, 9, 2, 95, 44, 49, 118, 65, 118, 0, 0, 9, 2, 95, 51, 65, 123, 140, 40, 0, 0, 10,
+			2, 95, 50, 34, 36, 50, 140, 40, 0, 0, 11, 6, 224, 176, 178, 224, 177, 141, 37, 55, 0, 11, 6, 224, 176, 170, 224, 177, 141, 37,
+			48, 0, 10, 2, 95, 49, 39, 49, 35, 139, 37, 0, 0, 10, 2, 95, 48, 89, 40, 50, 50, 35, 0, 0, 9, 2, 95, 55, 38, 114,
+			140, 40, 0, 0, 8, 2, 95, 54, 118, 34, 40, 0, 0, 8, 2, 95, 53, 134, 72, 40, 0, 0, 11, 2, 95, 52, 50, 118, 55, 40,
+			81, 40, 0, 0, 14, 2, 95, 59, 89, 36, 65, 112, 49, 119, 55, 35, 50, 0, 0, 10, 2, 95, 58, 49, 119, 55, 35, 50, 0, 0,
+			12, 2, 95, 57, 47, 39, 65, 65, 37, 72, 37, 0, 0, 13, 2, 95, 56, 38, 36, 50, 37, 65, 37, 72, 37, 0, 0, 16, 2, 95,
+			63, 48, 34, 35, 97, 50, 118, 34, 25, 35, 49, 35, 0, 0, 0, 12, 6, 224, 177, 152, 224, 177, 141, 37, 47, 89, 0, 11, 6, 224,
+			176, 184, 224, 177, 141, 37, 89, 0, 11, 6, 224, 176, 176, 224, 177, 141, 37, 34, 0, 11, 6, 224, 176, 152, 224, 177, 141, 37, 146, 0,
+			0, 0, 0, 0, 11, 6, 224, 176, 182, 224, 177, 141, 37, 97, 0, 11, 6, 224, 176, 158, 224, 177, 141, 37, 67, 0, 11, 6, 224, 176,
+			150, 224, 177, 141, 37, 145, 0, 9, 134, 224, 176, 146, 224, 176, 149, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 95, 95, 35, 65, 140, 35, 34, 15, 89, 49, 119, 34, 0, 0, 0, 11,
+			6, 224, 176, 168, 224, 177, 141, 37, 50, 0, 0, 0, 0, 0, 12, 6, 224, 176, 174, 224, 177, 141, 37, 65, 123, 0, 11, 6, 224, 176,
+			166, 224, 177, 141, 37, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 102, 12, 0, 0, 48, 0,
+			0, 0, 103, 12, 0, 0, 49, 0, 0, 0, 104, 12, 0, 0, 50, 0, 0, 0, 105, 12, 0, 0, 51, 0, 0, 0, 106, 12, 0, 0,
+			52, 0, 0, 0, 107, 12, 0, 0, 53, 0, 0, 0, 108, 12, 0, 0, 54, 0, 0, 0, 109, 12, 0, 0, 55, 0, 0, 0, 110, 12,
+			0, 0, 56, 0, 0, 0, 111, 12, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 1, 6, 0, 3, 35, 0, 7, 6, 1, 7, 0,
+			3, 118, 0, 7, 6, 1, 8, 0, 3, 37, 0, 7, 6, 1, 9, 0, 3, 112, 0, 7, 6, 1, 10, 0, 3, 40, 0, 7, 6, 1,
+			11, 0, 3, 123, 0, 7, 6, 1, 12, 0, 3, 34, 40, 0, 7, 6, 1, 13, 0, 3, 45, 0, 7, 6, 1, 15, 0, 3, 36, 0,
+			8, 3, 38, 36, 0, 7, 6, 1, 16, 0, 3, 114, 0, 7, 6, 1, 17, 0, 3, 134, 0, 7, 6, 1, 19, 0, 3, 39, 0, 7,
+			6, 1, 20, 0, 3, 119, 0, 7, 6, 1, 21, 0, 3, 135, 0, 7, 6, 1, 22, 0, 2, 17, 66, 3, 49, 0, 3, 49, 35, 0,
+			7, 6, 1, 23, 0, 2, 17, 66, 3, 145, 0, 3, 145, 35, 0, 7, 6, 1, 24, 0, 2, 17, 66, 3, 81, 0, 3, 81, 35, 0,
+			7, 6, 1, 25, 0, 2, 17, 66, 3, 146, 0, 3, 146, 35, 0, 7, 6, 1, 26, 0, 2, 17, 66, 3, 68, 0, 3, 68, 35, 0,
+			7, 6, 1, 27, 0, 2, 17, 66, 3, 80, 0, 3, 80, 35, 0, 7, 6, 1, 28, 0, 2, 17, 66, 3, 143, 0, 3, 143, 35, 0,
+			7, 6, 1, 29, 0, 2, 17, 66, 3, 79, 0, 3, 79, 35, 0, 224, 177, 141, 224, 176, 158, 2, 17, 66, 3, 81, 50, 0, 224, 177,
+			141, 224, 176, 158, 3, 81, 50, 35, 0, 7, 6, 1, 30, 0, 2, 17, 66, 3, 144, 0, 3, 144, 35, 0, 7, 6, 1, 31, 0, 2,
+			17, 66, 3, 67, 0, 3, 67, 35, 0, 7, 6, 1, 32, 0, 2, 17, 66, 3, 139, 0, 3, 139, 35, 0, 7, 6, 1, 33, 0, 2,
+			17, 66, 3, 141, 0, 3, 141, 35, 0, 7, 6, 1, 34, 0, 2, 17, 66, 3, 140, 0, 3, 140, 35, 0, 7, 6, 1, 35, 0, 2,
+			17, 66, 3, 142, 0, 3, 142, 35, 0, 7, 6, 1, 36, 0, 2, 17, 66, 3, 66, 0, 3, 66, 35, 0, 7, 6, 1, 37, 0, 2,
+			17, 66, 3, 47, 0, 3, 47, 35, 0, 7, 6, 1, 38, 0, 2, 17, 66, 3, 25, 0, 3, 25, 35, 0, 7, 6, 1, 39, 0, 2,
+			17, 66, 3, 72, 0, 3, 72, 35, 0, 7, 6, 1, 40, 0, 2, 17, 66, 3, 138, 0, 3, 138, 35, 0, 7, 6, 1, 41, 0, 2,
+			17, 66, 3, 50, 0, 3, 50, 35, 0, 7, 6, 1, 43, 0, 2, 17, 66, 3, 48, 0, 3, 48, 35, 0, 7, 6, 1, 44, 0, 2,
+			17, 66, 3, 136, 0, 3, 136, 35, 0, 7, 6, 1, 45, 0, 2, 17, 66, 3, 71, 0, 3, 71, 35, 0, 7, 6, 1, 46, 0, 2,
+			17, 66, 3, 137, 0, 3, 137, 35, 0, 7, 6, 1, 47, 0, 2, 17, 66, 3, 65, 0, 3, 65, 35, 0, 7, 6, 1, 48, 0, 2,
+			17, 66, 3, 57, 0, 3, 57, 35, 0, 7, 6, 1, 49, 0, 2, 17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 50, 0, 2,
+			17, 66, 3, 34, 0, 3, 34, 35, 0, 7, 6, 1, 51, 0, 2, 17, 66, 3, 55, 0, 3, 55, 35, 0, 7, 6, 1, 52, 0, 2,
+			17, 66, 3, 62, 0, 3, 62, 35, 0, 7, 6, 1, 54, 0, 2, 17, 66, 3, 85, 0, 3, 85, 35, 0, 7, 6, 1, 55, 0, 2,
+			17, 66, 3, 97, 0, 3, 97, 35, 0, 7, 6, 1, 56, 0, 2, 17, 66, 3, 93, 0, 3, 93, 35, 0, 7, 6, 1, 57, 0, 2,
+			17, 66, 3, 89, 0, 3, 89, 35, 0, 7, 6, 1, 58, 0, 2, 17, 66, 3, 107, 0, 3, 107, 35, 0, 7, 6, 1, 89, 0, 2,
+			17, 66, 3, 47, 89, 0, 3, 47, 89, 35, 0, 7, 6, 1, 90, 0, 2, 17, 66, 3, 72, 88, 0, 3, 72, 88, 35, 0, 7, 6,
+			1, 97, 0, 3, 34, 40, 0, 7, 6, 1, 98, 0, 3, 45, 0, 7, 6, 224, 176, 0, 191, 3, 37, 0, 130, 3, 50, 0, 131, 3,
+			107, 0, 190, 3, 118, 0, 7, 6, 224, 177, 0, 141, 3, 0, 4, 149, 3, 12, 0, 150, 0, 131, 3, 34, 40, 0, 134, 3, 36, 0,
+			138, 3, 39, 0, 129, 3, 40, 0, 132, 3, 44, 12, 0, 128, 3, 112, 0, 135, 3, 114, 0, 139, 3, 119, 0, 130, 3, 123, 0, 136,
+			3, 134, 0, 140, 3, 135, 0, 7, 6, 0, 36, 3, 140, 118, 55, 35, 34, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts64 = FileInMemory_createWithData (3380, reinterpret_cast<const char *> (&espeakdata_dicts64_data), 
+			U"espeak-1.48.04-source/espeak-data/te_dict", 
 			U"te");
-		Collection_addItem (me.peek(), espeakdata_dicts63.transfer());
+		my addItem_move (espeakdata_dicts64.move());
 
-		static unsigned char espeakdata_dicts64_data[3073] = {
-			0, 4, 0, 0, 24, 10, 0, 0, 0, 0, 0, 0, 0, 32, 4, 95, 56, 77, 49, 72, 37, 49, 6, 36, 47, 36, 6, 115, 36, 6,
-			71, 39, 6, 34, 39, 71, 35, 6, 71, 39, 71, 36, 72, 37, 0, 5, 65, 4, 35, 0, 0, 41, 4, 95, 56, 77, 50, 72, 37, 49,
-			6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 6, 71, 39, 6, 34, 39, 71, 35, 6, 71, 39, 71, 36, 72, 37,
-			12, 0, 0, 0, 0, 9, 65, 8, 71, 37, 12, 37, 12, 0, 0, 0, 0, 0, 9, 65, 12, 89, 37, 12, 37, 12, 0, 0, 0, 0,
-			0, 9, 65, 16, 72, 37, 12, 37, 12, 0, 0, 0, 0, 0, 8, 65, 20, 37, 12, 37, 12, 0, 0, 0, 0, 0, 8, 65, 24, 36,
-			12, 83, 39, 0, 0, 0, 0, 0, 8, 65, 28, 81, 37, 12, 37, 0, 0, 0, 0, 7, 195, 44, 19, 129, 72, 8, 6, 195, 48, 243,
-			129, 76, 0, 8, 65, 32, 36, 37, 76, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 65, 40, 75, 6, 36, 37, 0, 0, 0, 0,
-			0, 7, 65, 44, 49, 36, 37, 0, 0, 0, 0, 0, 8, 65, 48, 36, 12, 55, 37, 0, 0, 0, 0, 0, 8, 65, 52, 6, 36, 65,
-			40, 0, 0, 0, 0, 0, 11, 5, 95, 48, 1, 14, 4, 23, 50, 35, 0, 8, 65, 56, 6, 36, 50, 37, 0, 0, 0, 0, 0, 8,
-			65, 60, 39, 12, 39, 12, 0, 0, 0, 0, 0, 10, 65, 64, 48, 6, 37, 12, 37, 12, 0, 0, 0, 0, 0, 7, 65, 68, 49, 57,
-			40, 0, 0, 0, 0, 0, 7, 65, 72, 35, 53, 36, 0, 0, 0, 0, 0, 9, 65, 76, 6, 36, 12, 89, 37, 0, 0, 0, 7, 195,
-			20, 225, 64, 76, 28, 0, 0, 10, 65, 80, 47, 6, 37, 12, 37, 12, 0, 0, 0, 0, 0, 8, 65, 84, 40, 12, 40, 12, 0, 0,
-			0, 0, 0, 10, 65, 88, 84, 6, 37, 12, 37, 12, 0, 0, 0, 0, 6, 195, 28, 18, 193, 76, 6, 195, 92, 18, 193, 76, 0, 11,
-			65, 92, 72, 35, 71, 39, 55, 57, 40, 0, 0, 0, 0, 0, 17, 4, 95, 49, 77, 49, 23, 6, 89, 20, 6, 37, 49, 36, 47, 36,
-			0, 10, 65, 96, 36, 49, 6, 36, 89, 36, 0, 0, 25, 4, 95, 49, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 55, 36, 49,
-			106, 6, 39, 12, 55, 39, 0, 0, 0, 0, 8, 65, 100, 58, 6, 35, 37, 0, 0, 0, 0, 0, 10, 65, 104, 88, 6, 36, 12, 47,
-			37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 49, 67, 48, 55, 36, 49, 106, 6, 39, 55, 39, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 196, 44, 243, 148, 20, 72, 8, 7, 196, 48, 83, 142, 4, 76, 0, 0, 6, 195, 16, 147, 15, 76, 0, 0, 6,
-			195, 52, 243, 5, 76, 0, 0, 0, 0, 0, 19, 4, 95, 50, 77, 49, 72, 37, 49, 6, 36, 47, 36, 48, 6, 36, 72, 37, 0, 0,
-			30, 4, 95, 50, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 48, 6, 36, 72, 37, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 45, 112, 76, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 24, 16, 72,
-			28, 6, 194, 24, 16, 72, 28, 0, 0, 0, 0, 0, 0, 19, 4, 95, 4, 16, 20, 83, 36, 12, 106, 36, 55, 40, 6, 35, 12, 50,
-			35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 95, 51, 77, 49, 72, 37, 49, 6, 36, 47, 36, 47, 6, 35, 12, 53, 39,
-			0, 0, 31, 4, 95, 51, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 47, 6, 35, 12,
-			53, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 4, 240, 72, 8, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 100, 243, 129, 76, 28, 7, 195, 100, 243, 129, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 7, 195, 56, 224, 64, 76, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 20, 4, 95, 53, 77, 49, 72, 37, 49, 6, 36, 47, 36, 105, 6, 35, 12, 50, 39, 0, 0, 0, 0, 30,
-			4, 95, 53, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 105, 6, 35, 50, 39, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 21, 3, 95, 51, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 65, 35, 12, 53, 39, 0, 0, 14, 3, 95, 48, 67, 55,
-			36, 49, 106, 6, 39, 55, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 48, 16, 72, 28, 0, 0,
-			19, 3, 95, 50, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 48, 36, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95,
-			51, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 47, 6, 35, 12, 53, 39, 0, 0, 0, 0, 26, 4, 95, 54, 77, 49, 72, 37, 49,
-			6, 36, 47, 36, 115, 6, 36, 6, 47, 107, 6, 35, 47, 35, 34, 39, 0, 0, 0, 0, 35, 4, 95, 54, 77, 50, 72, 37, 49, 6,
-			36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 6, 47, 107, 6, 35, 6, 47, 35, 34, 39, 0, 0, 23, 3, 95, 55,
-			88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 6, 91, 6, 40, 12, 48, 35, 0, 0, 19, 3, 95, 52, 67, 23, 65, 35, 49, 106,
-			6, 39, 55, 39, 6, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95, 53, 67, 23, 65, 35, 49, 106, 6, 39, 55,
-			39, 105, 6, 35, 12, 50, 39, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 49, 88, 55, 36, 89, 6, 39, 12, 65, 36, 0, 0,
-			24, 3, 95, 54, 67, 23, 65, 35, 49, 106, 6, 39, 55, 39, 6, 47, 107, 6, 35, 47, 35, 34, 39, 0, 0, 0, 0, 0, 0, 0,
-			0, 18, 3, 95, 50, 88, 65, 35, 89, 6, 39, 12, 65, 36, 48, 36, 72, 37, 0, 0, 20, 3, 95, 55, 67, 65, 35, 49, 106, 6,
-			39, 55, 39, 91, 6, 40, 12, 48, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 3, 95, 56, 67, 65, 35, 49, 106, 6, 39, 55,
-			39, 6, 35, 6, 65, 35, 6, 34, 39, 71, 35, 6, 71, 39, 71, 36, 72, 37, 12, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 95,
-			52, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 65, 35, 12, 50, 36, 0, 0, 34, 3, 95, 57, 67, 65, 35, 49, 106, 6, 39,
-			55, 39, 6, 35, 6, 65, 35, 6, 34, 39, 71, 35, 6, 71, 39, 6, 50, 6, 50, 81, 58, 36, 0, 0, 0, 0, 0, 0, 0, 6,
-			194, 48, 80, 72, 8, 0, 24, 3, 95, 53, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 65, 35, 105, 6, 35, 12, 50, 39, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95, 54, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 47, 107, 6, 35, 47, 35, 34,
-			39, 0, 0, 0, 0, 0, 19, 4, 95, 55, 77, 49, 72, 37, 49, 6, 36, 47, 36, 91, 40, 12, 48, 35, 0, 0, 0, 0, 30, 4,
-			95, 55, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 91, 40, 12, 48, 35, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 29, 3, 95, 56, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 71, 39, 6, 34, 39, 71, 35, 6,
-			71, 36, 72, 37, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 3, 95, 57, 88, 65, 35, 89, 6, 39, 12, 65, 36, 6, 35, 6,
-			34, 39, 71, 35, 6, 71, 39, 6, 50, 81, 58, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 72, 243, 129,
-			76, 7, 195, 92, 83, 129, 76, 28, 7, 195, 8, 243, 129, 72, 28, 16, 4, 95, 48, 77, 52, 23, 71, 37, 55, 37, 6, 39, 50, 37,
-			0, 0, 0, 0, 16, 4, 95, 48, 77, 51, 23, 65, 37, 55, 37, 6, 39, 50, 37, 0, 0, 0, 16, 4, 95, 48, 77, 49, 6, 89,
-			20, 6, 37, 49, 36, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 197, 81, 50, 1, 44, 16, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 3, 9, 18, 49, 6, 36, 83, 35, 0, 41,
-			4, 95, 57, 77, 50, 72, 37, 49, 6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 6, 71, 39, 6, 34, 39, 71,
-			35, 6, 71, 39, 6, 50, 81, 58, 36, 0, 0, 0, 0, 33, 4, 95, 57, 77, 49, 72, 37, 49, 6, 36, 47, 36, 6, 115, 36, 6,
-			71, 39, 6, 34, 39, 71, 35, 6, 71, 39, 6, 50, 81, 58, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 6, 194, 52, 240, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 45, 85, 193, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 196, 57, 68, 215, 4, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 196,
-			44, 115, 204, 60, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 92, 16, 72, 28, 0, 0, 0, 0, 0, 0, 6, 195, 56, 22, 65, 76, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 45, 112, 64, 72, 28, 7, 195, 45, 112, 64, 72, 28, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 4, 95, 52, 77, 50, 72, 37, 49,
-			6, 36, 47, 36, 76, 36, 65, 35, 49, 106, 6, 39, 12, 55, 39, 42, 50, 36, 0, 0, 17, 4, 95, 52, 77, 49, 72, 37, 49, 6,
-			36, 47, 36, 42, 50, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 95, 51, 47, 6, 35, 12, 53, 39, 0, 0, 10, 2, 95,
-			50, 48, 6, 36, 72, 37, 0, 0, 12, 2, 95, 49, 50, 6, 50, 81, 58, 36, 12, 0, 0, 13, 2, 95, 48, 55, 36, 83, 6, 36,
-			12, 55, 35, 0, 0, 11, 2, 95, 55, 89, 6, 40, 12, 48, 35, 0, 0, 13, 2, 95, 54, 47, 107, 6, 35, 47, 35, 34, 39, 0,
-			0, 11, 2, 95, 53, 105, 6, 35, 12, 50, 39, 0, 0, 9, 2, 95, 52, 6, 42, 50, 36, 0, 0, 0, 0, 16, 2, 95, 57, 34,
-			39, 71, 35, 6, 50, 6, 50, 81, 58, 36, 0, 0, 6, 194, 100, 16, 72, 28, 16, 2, 95, 56, 34, 39, 71, 35, 6, 71, 39, 71,
-			36, 72, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 7, 195, 52, 209, 64, 72, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 6, 97, 0, 4, 3, 35, 0, 2, 32, 0, 8, 2, 17, 67, 0, 8, 17, 67, 0, 4, 2, 115, 3, 35, 12, 0,
-			97, 0, 7, 6, 98, 0, 3, 71, 0, 3, 82, 0, 7, 6, 99, 0, 3, 49, 0, 104, 3, 76, 0, 7, 6, 100, 0, 3, 72, 0,
-			104, 3, 86, 0, 7, 6, 101, 0, 3, 36, 0, 101, 3, 36, 12, 0, 1, 115, 3, 37, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6,
-			103, 0, 4, 3, 81, 0, 8, 107, 0, 104, 3, 100, 0, 7, 6, 104, 0, 108, 3, 105, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37,
-			0, 105, 3, 37, 12, 0, 7, 6, 106, 0, 3, 79, 0, 7, 6, 107, 0, 3, 49, 0, 104, 3, 101, 0, 7, 6, 108, 0, 3, 55,
-			0, 7, 6, 109, 0, 4, 1, 25, 2, 21, 21, 3, 23, 65, 0, 1, 25, 2, 98, 21, 21, 0, 1, 25, 2, 118, 21, 21, 0, 1,
-			25, 2, 119, 21, 21, 0, 4, 1, 25, 2, 17, 67, 3, 41, 0, 8, 0, 4, 3, 65, 0, 2, 17, 65, 0, 7, 6, 110, 0, 8,
-			3, 42, 0, 4, 8, 2, 103, 3, 43, 0, 8, 2, 103, 21, 21, 0, 8, 2, 107, 0, 8, 2, 107, 21, 21, 0, 4, 3, 50, 0,
-			2, 17, 65, 0, 2, 21, 21, 0, 4, 2, 99, 104, 3, 67, 0, 2, 106, 0, 121, 0, 4, 2, 103, 3, 68, 0, 2, 107, 0, 103,
-			39, 0, 7, 6, 111, 0, 3, 39, 0, 111, 3, 39, 12, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 7, 6,
-			114, 0, 1, 17, 67, 2, 17, 65, 3, 14, 16, 0, 3, 34, 0, 4, 3, 51, 0, 1, 17, 65, 2, 17, 65, 0, 114, 3, 51, 51,
-			0, 3, 53, 0, 7, 6, 115, 0, 3, 89, 0, 2, 101, 3, 89, 20, 0, 101, 8, 116, 3, 89, 37, 12, 0, 104, 3, 91, 0, 7,
-			6, 116, 0, 3, 47, 0, 104, 3, 87, 0, 108, 3, 105, 0, 115, 101, 110, 3, 115, 6, 36, 12, 50, 0, 108, 104, 3, 118, 0, 7,
-			6, 117, 0, 3, 40, 0, 4, 8, 100, 3, 40, 12, 0, 117, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7,
-			6, 120, 0, 3, 49, 89, 0, 7, 6, 121, 0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 4, 42, 1, 42, 2, 42,
-			3, 0, 42, 42, 3, 0, 42, 1, 42, 42, 2, 32, 3, 24, 0, 37, 3, 35, 89, 37, 55, 37, 65, 37, 35, 0, 42, 3, 67, 39,
-			47, 35, 0, 36, 3, 72, 39, 55, 35, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts64 = FileInMemory_createWithData (3072, reinterpret_cast<const char *> (&espeakdata_dicts64_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/tn_dict", 
-			U"tn");
-		Collection_addItem (me.peek(), espeakdata_dicts64.transfer());
-
-		static unsigned char espeakdata_dicts65_data[5978] = {
-			0, 4, 0, 0, 77, 13, 0, 0, 0, 0, 0, 10, 135, 9, 19, 19, 22, 5, 195, 167, 65, 0, 0, 5, 65, 4, 35, 0, 0, 6,
-			194, 5, 0, 17, 9, 0, 10, 199, 44, 20, 212, 4, 211, 206, 84, 65, 0, 0, 6, 65, 8, 71, 36, 0, 0, 9, 198, 52, 19, 1,
-			81, 144, 64, 66, 0, 0, 0, 6, 65, 12, 75, 109, 0, 0, 0, 18, 4, 95, 8, 1, 3, 47, 6, 109, 51, 89, 91, 35, 48, 49,
-			6, 35, 0, 0, 0, 6, 65, 16, 72, 109, 0, 0, 0, 6, 195, 36, 209, 128, 17, 0, 0, 5, 65, 20, 109, 0, 0, 0, 0, 7,
-			196, 4, 102, 79, 56, 65, 0, 6, 65, 24, 83, 109, 0, 0, 0, 0, 8, 196, 100, 242, 211, 4, 72, 28, 0, 6, 65, 28, 79, 109,
-			0, 0, 0, 0, 0, 6, 65, 32, 107, 109, 0, 0, 0, 0, 0, 5, 65, 36, 37, 0, 0, 10, 1, 37, 57, 113, 88, 72, 109, 0,
-			27, 0, 8, 1, 38, 11, 84, 6, 109, 0, 0, 0, 6, 65, 40, 90, 109, 0, 0, 0, 12, 1, 42, 57, 6, 13, 55, 72, 13, 88,
-			0, 27, 0, 9, 1, 43, 35, 51, 47, 13, 0, 27, 0, 6, 65, 44, 49, 35, 0, 0, 0, 0, 0, 6, 65, 48, 55, 109, 0, 0,
-			0, 0, 0, 6, 65, 52, 65, 109, 0, 0, 0, 0, 0, 8, 197, 20, 66, 82, 56, 80, 66, 6, 65, 56, 50, 109, 0, 0, 0, 7,
-			195, 76, 150, 128, 76, 9, 0, 0, 5, 193, 60, 76, 9, 0, 9, 1, 61, 109, 91, 124, 47, 0, 27, 0, 0, 0, 6, 65, 64, 48,
-			109, 0, 0, 9, 198, 76, 147, 83, 37, 144, 72, 65, 6, 194, 4, 32, 17, 9, 0, 7, 195, 4, 33, 0, 17, 9, 0, 0, 7, 65,
-			68, 49, 84, 109, 0, 0, 0, 0, 0, 6, 65, 72, 51, 109, 0, 0, 0, 0, 0, 7, 132, 197, 159, 20, 9, 17, 6, 195, 36, 210,
-			194, 17, 6, 195, 36, 210, 194, 17, 6, 65, 76, 89, 109, 0, 0, 0, 0, 0, 6, 65, 80, 47, 109, 0, 0, 6, 195, 81, 0, 79,
-			17, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0, 6, 65, 88, 84, 109, 0, 0, 7, 132, 1, 195, 182, 6, 17, 0, 0, 0,
-			12, 65, 92, 72, 40, 71, 109, 55, 84, 6, 109, 0, 0, 0, 0, 0, 7, 65, 96, 109, 49, 89, 0, 0, 0, 0, 0, 6, 65, 100,
-			57, 109, 0, 0, 0, 0, 0, 6, 65, 104, 88, 109, 0, 0, 0, 0, 0, 0, 0, 10, 135, 2, 9, 14, 7, 195, 182, 12, 65, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 61, 33, 21, 65, 0, 0, 0, 0, 6, 195, 25, 64,
-			65, 17, 0, 0, 6, 195, 4, 100, 0, 17, 0, 0, 0, 6, 195, 80, 146, 22, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194,
-			16, 16, 72, 9, 0, 0, 0, 0, 9, 198, 32, 18, 203, 5, 34, 64, 65, 0, 0, 0, 0, 9, 198, 44, 22, 83, 21, 34, 64, 65,
-			6, 194, 9, 80, 76, 9, 0, 0, 0, 0, 0, 6, 195, 5, 99, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 8, 197, 32, 149, 12, 21, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 147, 143, 64,
-			65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 52, 84, 147, 36, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 6, 194, 16, 80, 72, 9, 0, 0, 0, 0, 6, 195, 4, 180, 0, 17, 0, 0, 16, 4, 95, 4, 16, 20, 10, 84, 37, 51, 81,
-			4, 113, 55, 23, 0, 0, 0, 0, 0, 11, 200, 36, 227, 135, 36, 197, 5, 72, 80, 67, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196,
-			44, 147, 9, 76, 65, 7, 196, 64, 244, 212, 4, 65, 13, 4, 95, 20, 12, 4, 47, 124, 55, 72, 6, 109, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 88, 86, 65, 72, 28, 0, 8, 197, 4, 208, 83, 100, 16, 66, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 83, 128, 76, 9, 0, 7, 196, 8, 19, 139, 4, 65, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 8, 197, 76, 19, 83, 84, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 8, 197, 8, 149, 12, 37, 48, 65, 0, 0, 6, 195, 61, 48, 128, 17, 0, 7, 196, 72, 17, 25, 60, 65,
-			0, 0, 0, 0, 0, 0, 0, 10, 3, 226, 130, 172, 35, 84, 51, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 196, 76, 149, 129, 76, 65, 6, 195, 21, 1, 11, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 5, 37,
-			22, 36, 224, 65, 0, 0, 0, 0, 0, 17, 4, 95, 13, 3, 14, 40, 88, 6, 35, 47, 65, 35, 37, 65, 124, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 39, 47, 6, 40,
-			88, 0, 0, 10, 3, 95, 48, 67, 6, 57, 112, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 44, 243, 153,
-			4, 65, 0, 0, 0, 0, 13, 3, 95, 50, 67, 6, 37, 80, 37, 57, 112, 88, 0, 0, 0, 9, 198, 81, 83, 131, 20, 194, 64, 65,
-			14, 139, 11, 196, 177, 18, 11, 12, 1, 18, 5, 12, 9, 65, 0, 0, 0, 0, 6, 195, 4, 146, 13, 17, 12, 3, 95, 49, 49, 6,
-			39, 50, 71, 37, 51, 0, 0, 9, 3, 95, 49, 48, 6, 39, 50, 0, 0, 0, 12, 3, 95, 49, 50, 6, 39, 50, 37, 80, 37, 0,
-			0, 0, 0, 0, 6, 195, 36, 129, 0, 17, 0, 0, 13, 3, 95, 55, 88, 57, 36, 47, 65, 6, 37, 91, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 7, 196, 32, 21, 1, 100, 65, 14, 139, 11, 196, 177, 19, 11, 196, 177, 22, 18, 1, 11, 65, 0, 0, 6, 195, 8,
-			243, 21, 65, 0, 0, 0, 0, 0, 9, 3, 95, 49, 88, 6, 39, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 88,
-			57, 37, 51, 65, 6, 37, 0, 0, 0, 0, 0, 0, 12, 137, 16, 195, 188, 20, 195, 188, 18, 7, 5, 66, 0, 0, 0, 8, 133, 196,
-			177, 13, 11, 2, 17, 0, 0, 10, 135, 9, 196, 159, 4, 196, 177, 18, 65, 0, 9, 198, 76, 18, 193, 73, 144, 64, 66, 0, 0, 13,
-			3, 95, 63, 63, 89, 109, 65, 71, 6, 110, 55, 0, 0, 0, 0, 11, 3, 95, 52, 88, 49, 6, 13, 51, 49, 0, 0, 0, 0, 0,
-			11, 136, 11, 195, 188, 20, 1, 8, 25, 1, 66, 0, 0, 0, 0, 11, 3, 95, 53, 88, 36, 55, 55, 6, 37, 0, 0, 0, 8, 197,
-			8, 241, 18, 84, 208, 65, 0, 0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 35, 55, 47, 65, 6, 13, 91, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 10, 199, 37, 52, 212, 4, 224, 149, 48, 66, 0, 0, 0, 0, 0, 0, 0, 8, 133, 21, 197, 159, 1, 11, 65, 0, 13,
-			3, 95, 56, 88, 89, 36, 49, 89, 6, 109, 50, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 44, 144, 72, 28, 0, 13, 3, 95, 57,
-			88, 72, 39, 49, 89, 6, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 53, 80, 72, 9, 10, 3, 95, 63, 65, 107, 35, 51,
-			83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 52, 20, 132, 36, 224, 65, 0, 9, 198, 4, 195, 65, 57, 144,
-			64, 66, 0, 7, 131, 13, 195, 188, 72, 9, 14, 4, 95, 15, 7, 15, 39, 81, 39, 50, 6, 109, 49, 0, 0, 0, 0, 0, 0, 7,
-			131, 197, 159, 21, 76, 9, 0, 0, 0, 6, 195, 81, 49, 64, 17, 0, 0, 0, 0, 0, 7, 131, 13, 196, 177, 72, 9, 0, 0, 0,
-			6, 195, 81, 50, 64, 17, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 39, 50, 0, 0, 7, 195,
-			76, 83, 128, 76, 9, 14, 4, 95, 48, 77, 51, 65, 37, 55, 57, 6, 35, 34, 0, 0, 9, 198, 8, 83, 66, 21, 144, 90, 65, 0,
-			11, 4, 95, 48, 77, 49, 71, 6, 37, 50, 0, 0, 19, 4, 95, 2, 18, 22, 49, 13, 89, 6, 35, 55, 47, 65, 35, 37, 65, 124,
-			0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 8, 21, 13, 4, 224, 65, 0, 0, 13, 138, 195, 167, 1, 14, 1, 11, 11, 1, 12, 5,
-			66, 7, 132, 195, 182, 19, 19, 17, 0, 0, 0, 9, 198, 8, 22, 66, 85, 37, 0, 65, 0, 0, 0, 8, 197, 100, 246, 135, 5, 64,
-			65, 0, 6, 194, 52, 144, 72, 9, 0, 6, 195, 81, 54, 68, 17, 0, 0, 0, 7, 132, 195, 182, 20, 22, 17, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 11, 136, 4, 195, 188, 13, 4, 195, 188, 26, 65, 0, 0, 0, 0, 9, 198, 52, 84, 136, 4, 32, 64,
-			65, 0, 6, 195, 60, 80, 196, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 1, 196, 159, 18,
-			196, 177, 65, 0, 0, 0, 0, 0, 0, 11, 136, 19, 1, 16, 19, 1, 18, 196, 177, 65, 0, 13, 4, 95, 3, 9, 18, 91, 35, 48,
-			49, 6, 35, 0, 0, 13, 138, 195, 167, 1, 14, 11, 196, 177, 18, 196, 177, 65, 0, 0, 0, 0, 0, 0, 0, 9, 198, 84, 180, 129,
-			100, 224, 64, 66, 0, 0, 7, 196, 76, 146, 82, 80, 65, 0, 0, 0, 0, 7, 196, 29, 54, 73, 32, 17, 0, 16, 4, 95, 1, 3,
-			21, 84, 111, 51, 81, 6, 111, 37, 65, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 18, 14, 7, 107, 35, 55,
-			49, 6, 35, 0, 0, 0, 0, 9, 198, 16, 83, 137, 104, 194, 64, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 1, 25,
-			4, 196, 177, 14, 65, 0, 0, 0, 0, 0, 0, 0, 9, 134, 13, 21, 196, 159, 12, 1, 65, 8, 133, 195, 182, 196, 177, 2, 17, 0,
-			0, 0, 21, 4, 95, 1, 3, 50, 76, 6, 124, 83, 47, 84, 111, 51, 81, 6, 111, 37, 65, 124, 0, 0, 0, 0, 0, 6, 194, 80,
-			16, 72, 9, 0, 7, 132, 195, 182, 25, 11, 17, 0, 0, 0, 0, 0, 0, 8, 197, 5, 100, 149, 64, 16, 65, 0, 0, 7, 132, 195,
-			182, 6, 11, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 80, 211, 79, 8, 17, 0, 0, 0, 11, 136, 197,
-			159, 196, 177, 18, 14, 1, 11, 65, 0, 0, 0, 0, 0, 0, 12, 2, 194, 167, 76, 109, 50, 79, 6, 109, 55, 0, 0, 0, 0, 7,
-			132, 195, 182, 4, 16, 17, 0, 0, 0, 0, 0, 17, 2, 196, 159, 57, 40, 65, 40, 91, 6, 35, 49, 15, 79, 6, 109, 0, 7, 2,
-			195, 167, 76, 109, 0, 0, 9, 198, 52, 20, 205, 5, 98, 64, 65, 8, 133, 195, 182, 19, 25, 13, 17, 0, 0, 0, 0, 0, 0, 14,
-			2, 194, 182, 48, 35, 16, 35, 81, 51, 6, 35, 83, 0, 0, 7, 2, 197, 159, 91, 109, 0, 0, 0, 0, 0, 0, 6, 195, 84, 36,
-			0, 17, 12, 2, 194, 176, 72, 36, 16, 36, 75, 6, 109, 0, 0, 9, 134, 14, 9, 196, 159, 4, 5, 65, 0, 6, 2, 195, 182, 125,
-			0, 0, 0, 0, 0, 12, 4, 95, 3, 5, 4, 107, 6, 35, 51, 83, 0, 0, 8, 197, 9, 84, 132, 85, 32, 65, 0, 0, 0, 6,
-			195, 85, 33, 129, 65, 0, 0, 6, 194, 80, 80, 72, 9, 6, 2, 195, 188, 112, 0, 0, 0, 0, 10, 135, 2, 1, 18, 20, 196, 177,
-			14, 65, 0, 0, 6, 2, 196, 177, 13, 0, 0, 0, 8, 197, 4, 226, 193, 72, 16, 65, 0, 6, 195, 4, 33, 211, 17, 0, 6, 195,
-			85, 49, 0, 17, 0, 0, 0, 0, 6, 195, 100, 179, 64, 17, 6, 195, 4, 179, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 132, 195, 182, 9, 2, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 80, 242,
-			193, 80, 65, 12, 137, 11, 21, 18, 20, 21, 12, 21, 197, 159, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 95, 15, 110, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 88, 80, 72, 28, 0, 0, 0, 0, 0, 11, 2, 95, 35, 72,
-			37, 57, 6, 109, 88, 0, 0, 20, 2, 95, 34, 47, 13, 51, 50, 6, 35, 49, 37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 19, 2,
-			95, 33, 113, 50, 55, 6, 109, 65, 37, 91, 35, 16, 36, 47, 4, 124, 0, 0, 0, 14, 2, 95, 39, 35, 48, 110, 89, 47, 51, 6,
-			110, 83, 0, 0, 16, 2, 95, 38, 84, 6, 109, 37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 0, 7, 132, 195, 182, 9, 22, 17, 0,
-			0, 13, 4, 95, 3, 1, 16, 71, 112, 57, 6, 113, 49, 0, 0, 18, 2, 95, 41, 49, 35, 48, 35, 48, 35, 16, 35, 50, 47, 6,
-			109, 88, 0, 0, 16, 2, 95, 40, 35, 76, 48, 35, 16, 35, 50, 47, 6, 109, 88, 0, 0, 16, 2, 95, 47, 36, 57, 6, 124, 49,
-			76, 124, 88, 81, 6, 124, 0, 0, 11, 2, 95, 46, 50, 110, 49, 47, 6, 35, 0, 0, 16, 2, 95, 45, 49, 6, 13, 89, 35, 76,
-			124, 88, 81, 6, 124, 0, 0, 9, 198, 53, 81, 1, 57, 144, 64, 66, 9, 198, 4, 229, 1, 49, 144, 64, 66, 12, 2, 95, 44, 84,
-			124, 51, 79, 6, 113, 55, 0, 0, 7, 195, 8, 148, 128, 76, 9, 8, 2, 95, 51, 6, 112, 76, 0, 0, 9, 2, 95, 50, 37, 80,
-			6, 37, 0, 0, 9, 134, 195, 167, 15, 18, 21, 13, 65, 9, 198, 64, 84, 208, 20, 208, 133, 65, 9, 2, 95, 49, 71, 6, 37, 51,
-			0, 0, 11, 2, 95, 48, 89, 13, 83, 6, 13, 51, 0, 0, 10, 2, 95, 55, 57, 36, 72, 6, 37, 0, 0, 10, 2, 95, 54, 35,
-			55, 47, 6, 13, 0, 0, 9, 2, 95, 53, 71, 6, 109, 91, 0, 0, 10, 2, 95, 52, 72, 6, 125, 51, 47, 0, 0, 20, 2, 95,
-			59, 50, 110, 49, 47, 35, 55, 6, 13, 84, 124, 51, 79, 6, 113, 55, 0, 0, 15, 2, 95, 58, 37, 49, 6, 124, 50, 110, 49, 47,
-			6, 35, 0, 0, 11, 2, 95, 57, 72, 6, 39, 49, 40, 88, 0, 0, 6, 195, 72, 150, 133, 65, 11, 2, 95, 56, 89, 36, 80, 6,
-			124, 88, 0, 0, 18, 2, 95, 63, 89, 39, 51, 6, 111, 37, 91, 35, 16, 36, 47, 4, 124, 0, 0, 0, 0, 0, 7, 195, 8, 150,
-			128, 76, 9, 0, 0, 0, 16, 2, 95, 64, 49, 111, 57, 51, 111, 49, 55, 6, 111, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 16, 4, 95, 226, 128, 166, 6, 113, 76, 50, 110, 49, 47, 6, 35, 0, 0, 0, 0, 0, 0, 6, 195, 20, 177, 192,
-			17, 17, 4, 95, 226, 128, 153, 47, 109, 49, 47, 13, 51, 50, 6, 35, 49, 0, 0, 12, 137, 4, 15, 19, 4, 15, 196, 159, 18, 21,
-			65, 17, 4, 95, 226, 128, 152, 47, 109, 49, 47, 13, 51, 50, 6, 35, 49, 0, 16, 4, 95, 4, 15, 20, 113, 89, 47, 50, 110, 49,
-			47, 6, 35, 0, 0, 0, 0, 7, 195, 36, 193, 64, 72, 9, 0, 0, 18, 4, 95, 226, 128, 147, 6, 40, 88, 111, 50, 76, 124, 88,
-			81, 6, 124, 0, 0, 0, 15, 2, 95, 95, 4, 35, 55, 47, 76, 124, 88, 81, 6, 124, 0, 0, 22, 2, 95, 94, 124, 50, 75, 6,
-			109, 55, 47, 65, 109, 37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 0, 22, 2, 95, 92, 47, 6, 109, 51, 89, 15, 36, 57, 4, 124,
-			49, 76, 124, 88, 81, 6, 124, 0, 0, 0, 0, 0, 0, 6, 195, 80, 211, 192, 17, 0, 0, 17, 142, 11, 196, 177, 16, 11, 196, 177,
-			18, 13, 196, 177, 26, 196, 177, 65, 0, 0, 0, 0, 0, 16, 4, 95, 7, 18, 22, 6, 35, 49, 89, 35, 50, 37, 65, 124, 0, 0,
-			6, 195, 60, 116, 192, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 4, 95, 4, 9, 1, 111, 65, 55, 35, 6, 111,
-			47, 0, 0, 0, 0, 0, 0, 14, 2, 95, 126, 57, 35, 49, 55, 35, 91, 6, 13, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 201, 37, 52, 203, 20, 225, 5, 73, 83, 128, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 37, 52, 1,
-			73, 64, 64, 66, 0, 0, 0, 8, 197, 37, 166, 141, 37, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
-			195, 5, 67, 64, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 9, 84, 147, 4, 65, 0, 9, 134, 4, 195, 188, 26, 3, 5, 65, 0,
-			0, 0, 0, 0, 0, 7, 195, 4, 208, 64, 28, 65, 0, 0, 0, 0, 0, 0, 8, 197, 52, 244, 205, 61, 32, 65, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 20, 5, 11, 9, 18, 4, 1, 196, 159, 66, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 138, 19, 196, 177, 13, 19, 196, 177, 3, 1, 11, 65, 0, 0, 0, 0, 6, 195, 5, 69, 128, 17, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 66, 195, 167, 0, 197, 159, 0, 102, 0, 104, 0, 107, 0,
-			112, 0, 113, 0, 115, 0, 116, 0, 7, 6, 20, 0, 96, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 6, 195, 167, 0, 3, 76,
-			0, 7, 6, 195, 182, 0, 3, 125, 0, 7, 6, 195, 188, 0, 110, 195, 188, 122, 1, 21, 2, 32, 14, 128, 128, 132, 3, 2, 112, 50,
-			112, 88, 0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 112, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 112, 88,
-			0, 4, 3, 112, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 112, 50, 0, 121, 111, 114,
-			1, 21, 2, 32, 14, 128, 128, 132, 3, 112, 57, 2, 39, 51, 0, 7, 6, 196, 159, 0, 1, 17, 65, 3, 12, 15, 0, 4, 1, 101,
-			3, 57, 0, 1, 105, 0, 3, 100, 0, 5, 1, 1, 17, 65, 3, 126, 0, 7, 6, 196, 177, 0, 110, 196, 177, 122, 1, 21, 2, 32,
-			14, 128, 128, 132, 3, 2, 13, 50, 13, 88, 0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 13, 65, 0, 122, 1, 21, 2, 32,
-			14, 128, 128, 130, 3, 2, 13, 88, 0, 4, 3, 13, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128,
-			130, 3, 13, 50, 0, 121, 111, 114, 1, 21, 2, 32, 14, 128, 128, 132, 3, 13, 57, 2, 39, 51, 0, 7, 6, 197, 159, 0, 3, 91,
-			0, 7, 6, 97, 0, 4, 3, 35, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 108, 196, 177, 109, 1, 21, 2, 32, 14, 128, 128, 132,
-			3, 35, 55, 13, 65, 0, 121, 196, 177, 109, 1, 21, 2, 32, 14, 128, 128, 132, 3, 35, 57, 13, 65, 0, 99, 97, 107, 1, 21, 2,
-			32, 14, 128, 128, 132, 3, 35, 75, 35, 49, 0, 99, 97, 107, 109, 196, 177, 197, 159, 1, 21, 2, 32, 14, 128, 128, 135, 3, 35, 75,
-			35, 49, 65, 2, 13, 91, 0, 118, 114, 117, 1, 21, 2, 112, 97, 3, 35, 84, 34, 6, 40, 0, 115, 196, 177, 110, 1, 21, 2, 32,
-			14, 128, 128, 132, 3, 35, 89, 13, 50, 0, 7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 75, 0, 7, 6, 100, 0, 196, 177,
-			114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 13, 51, 0, 105, 114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 37, 51, 0, 117, 114, 2,
-			32, 14, 128, 128, 131, 3, 2, 72, 40, 51, 0, 195, 188, 114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 112, 51, 0, 8, 2, 101, 196,
-			159, 105, 108, 3, 6, 72, 0, 3, 72, 0, 196, 177, 2, 32, 14, 128, 128, 130, 3, 72, 13, 0, 196, 177, 107, 2, 32, 14, 128, 128,
-			131, 3, 72, 13, 49, 0, 196, 177, 110, 2, 32, 14, 128, 128, 131, 3, 72, 13, 50, 0, 196, 177, 110, 196, 177, 122, 2, 32, 14, 128,
-			128, 133, 3, 72, 13, 50, 13, 88, 0, 196, 177, 108, 97, 114, 2, 32, 14, 128, 128, 133, 3, 72, 13, 55, 35, 51, 0, 196, 177, 109,
-			2, 32, 14, 128, 128, 131, 3, 72, 13, 65, 0, 97, 2, 32, 14, 128, 128, 130, 3, 72, 35, 0, 97, 110, 2, 32, 14, 128, 128, 131,
-			3, 72, 35, 50, 0, 101, 2, 32, 14, 128, 128, 130, 3, 72, 36, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 72, 36, 50, 0, 105,
-			2, 32, 14, 128, 128, 130, 3, 72, 37, 0, 105, 107, 2, 32, 14, 128, 128, 131, 3, 72, 37, 49, 0, 105, 110, 2, 32, 14, 128, 128,
-			131, 3, 72, 37, 50, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 72, 37, 50, 37, 88, 0, 105, 108, 101, 114, 2, 32, 14,
-			128, 128, 133, 3, 72, 37, 55, 36, 51, 0, 105, 109, 2, 32, 14, 128, 128, 131, 3, 72, 37, 65, 0, 117, 2, 32, 14, 128, 128, 130,
-			3, 72, 40, 0, 117, 107, 2, 32, 14, 128, 128, 131, 3, 72, 40, 49, 0, 117, 110, 2, 32, 14, 128, 128, 131, 3, 72, 40, 50, 0,
-			117, 110, 117, 122, 2, 32, 14, 128, 128, 133, 3, 72, 40, 50, 40, 88, 0, 117, 108, 97, 114, 2, 32, 14, 128, 128, 133, 3, 72, 40,
-			55, 35, 34, 0, 117, 109, 2, 32, 14, 128, 128, 131, 3, 72, 40, 65, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 72, 112, 0, 195,
-			188, 107, 2, 32, 14, 128, 128, 131, 3, 72, 112, 49, 0, 195, 188, 110, 2, 32, 14, 128, 128, 131, 3, 72, 112, 50, 0, 195, 188, 110,
-			195, 188, 122, 2, 32, 14, 128, 128, 133, 3, 72, 112, 50, 112, 88, 0, 195, 188, 108, 101, 114, 2, 32, 14, 128, 128, 133, 3, 72, 112,
-			55, 36, 34, 0, 195, 188, 109, 2, 32, 14, 128, 128, 131, 3, 72, 112, 65, 0, 7, 6, 101, 0, 4, 3, 36, 0, 1, 21, 2, 32,
-			14, 128, 128, 129, 0, 108, 105, 109, 1, 21, 2, 32, 14, 128, 128, 132, 3, 36, 55, 37, 65, 0, 121, 105, 109, 1, 21, 2, 32, 14,
-			128, 128, 132, 3, 36, 57, 37, 65, 0, 99, 101, 107, 1, 21, 2, 32, 14, 128, 128, 132, 3, 36, 75, 36, 49, 0, 99, 101, 107, 109,
-			105, 197, 159, 1, 21, 2, 32, 14, 128, 128, 135, 3, 36, 75, 36, 49, 65, 2, 37, 91, 0, 115, 105, 110, 1, 21, 2, 32, 14, 128,
-			128, 132, 3, 36, 89, 37, 50, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 101, 3, 79, 0, 2, 105, 0, 2, 195,
-			182, 0, 2, 195, 188, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 110, 105, 122, 1, 21, 2, 32, 14, 128, 128,
-			132, 3, 2, 37, 50, 37, 88, 0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 37, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128,
-			130, 3, 2, 37, 88, 0, 4, 3, 37, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 37,
-			50, 0, 121, 111, 114, 1, 21, 2, 32, 14, 128, 128, 132, 3, 37, 57, 2, 39, 51, 0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107,
-			0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 2, 80, 36, 50, 0, 3, 49, 0, 4, 2, 101, 3, 80, 0, 2, 105, 0, 2, 195, 182,
-			0, 2, 195, 188, 0, 7, 6, 108, 0, 97, 2, 32, 14, 128, 128, 130, 3, 2, 55, 35, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2,
-			55, 36, 0, 3, 55, 0, 196, 177, 2, 32, 14, 128, 128, 130, 3, 55, 13, 0, 196, 177, 107, 2, 32, 14, 128, 128, 131, 3, 55, 13,
-			49, 0, 97, 114, 2, 32, 14, 128, 128, 131, 3, 55, 35, 51, 0, 101, 114, 2, 32, 14, 128, 128, 131, 3, 55, 36, 51, 0, 105, 2,
-			32, 14, 128, 128, 130, 3, 55, 37, 0, 105, 107, 2, 32, 14, 128, 128, 131, 3, 55, 37, 49, 0, 117, 2, 32, 14, 128, 128, 130, 3,
-			55, 40, 0, 117, 107, 2, 32, 14, 128, 128, 131, 3, 55, 40, 49, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 55, 112, 0, 195, 188,
-			107, 2, 32, 14, 128, 128, 131, 3, 55, 112, 49, 0, 7, 6, 109, 0, 97, 2, 32, 14, 128, 128, 130, 3, 2, 65, 35, 0, 101, 2,
-			32, 14, 128, 128, 130, 3, 2, 65, 36, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 196, 177, 110, 2, 32, 14, 128, 128, 131, 3,
-			50, 13, 50, 0, 105, 110, 2, 32, 14, 128, 128, 131, 3, 50, 37, 50, 0, 117, 110, 2, 32, 14, 128, 128, 131, 3, 50, 40, 50, 0,
-			100, 97, 8, 2, 32, 3, 50, 72, 35, 0, 100, 97, 110, 8, 2, 32, 3, 50, 72, 35, 50, 0, 100, 101, 8, 2, 32, 3, 50, 72,
-			36, 0, 100, 101, 110, 8, 2, 32, 3, 50, 72, 36, 50, 0, 195, 188, 110, 2, 32, 14, 128, 128, 131, 3, 50, 112, 50, 0, 7, 6,
-			111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0, 97, 2, 32, 14, 128, 128, 130,
-			3, 2, 51, 35, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2, 51, 36, 0, 1, 17, 65, 2, 17, 65, 3, 16, 0, 3, 51, 0, 97,
-			2, 32, 24, 3, 51, 35, 0, 101, 2, 32, 24, 3, 51, 36, 0, 7, 6, 115, 0, 196, 177, 110, 196, 177, 122, 2, 32, 14, 128, 128,
-			133, 3, 2, 89, 13, 50, 13, 88, 0, 97, 2, 32, 14, 128, 128, 130, 3, 2, 89, 35, 0, 97, 107, 2, 32, 14, 128, 128, 131, 3,
-			2, 89, 35, 49, 0, 97, 110, 2, 32, 14, 128, 128, 131, 3, 2, 89, 35, 50, 0, 97, 110, 196, 177, 122, 2, 32, 14, 128, 128, 133,
-			3, 2, 89, 35, 50, 13, 88, 0, 97, 109, 2, 32, 14, 128, 128, 131, 3, 2, 89, 35, 65, 0, 101, 2, 32, 14, 128, 128, 130, 3,
-			2, 89, 36, 0, 101, 107, 2, 32, 14, 128, 128, 131, 3, 2, 89, 36, 49, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 2, 89, 36,
-			50, 0, 101, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 36, 50, 37, 88, 0, 101, 109, 2, 32, 14, 128, 128, 131, 3, 2,
-			89, 36, 65, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 37, 50, 37, 88, 0, 117, 110, 117, 122, 2, 32, 14, 128,
-			128, 133, 3, 2, 89, 40, 50, 40, 88, 0, 195, 188, 110, 195, 188, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 112, 50, 112, 88, 0,
-			3, 89, 0, 7, 6, 116, 0, 196, 177, 114, 1, 18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 13, 51, 0, 105, 114, 1, 18, 66,
-			2, 32, 14, 128, 128, 131, 3, 2, 47, 37, 51, 0, 117, 114, 1, 18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 40, 51, 0, 195,
-			188, 114, 1, 18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 112, 51, 0, 3, 47, 0, 97, 2, 32, 14, 128, 128, 130, 3, 47, 35,
-			0, 97, 110, 2, 32, 14, 128, 128, 131, 3, 47, 35, 50, 0, 101, 2, 32, 14, 128, 128, 130, 3, 47, 36, 0, 101, 110, 2, 32, 14,
-			128, 128, 131, 3, 47, 36, 50, 0, 7, 6, 117, 0, 110, 117, 122, 1, 21, 2, 32, 14, 128, 128, 132, 3, 2, 40, 50, 40, 88, 0,
-			109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 40, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 40, 88, 0, 4, 3,
-			40, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 40, 50, 0, 121, 111, 114, 1, 21, 2,
-			32, 14, 128, 128, 132, 3, 40, 57, 2, 39, 51, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0,
-			3, 49, 89, 0, 1, 25, 3, 88, 0, 7, 6, 121, 0, 196, 177, 110, 196, 177, 122, 2, 32, 14, 128, 128, 133, 3, 2, 57, 13, 50,
-			13, 88, 0, 196, 177, 109, 2, 32, 14, 128, 128, 131, 3, 2, 57, 13, 65, 0, 196, 177, 122, 2, 32, 14, 128, 128, 131, 3, 2, 57,
-			13, 88, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 2, 57, 37, 50, 37, 88, 0, 105, 109, 2, 32, 14, 128, 128, 131, 3,
-			2, 57, 37, 65, 0, 105, 122, 2, 32, 14, 128, 128, 131, 3, 2, 57, 37, 88, 0, 117, 110, 117, 122, 2, 32, 14, 128, 128, 133, 3,
-			2, 57, 40, 50, 40, 88, 0, 117, 109, 2, 32, 14, 128, 128, 131, 3, 2, 57, 40, 65, 0, 117, 122, 2, 32, 14, 128, 128, 131, 3,
-			2, 57, 40, 88, 0, 108, 97, 2, 32, 14, 128, 128, 131, 3, 2, 57, 55, 35, 0, 108, 101, 2, 32, 14, 128, 128, 131, 3, 2, 57,
-			55, 36, 0, 195, 188, 110, 195, 188, 122, 2, 32, 14, 128, 128, 133, 3, 2, 57, 112, 50, 112, 88, 0, 195, 188, 109, 2, 32, 14, 128,
-			128, 131, 3, 2, 57, 112, 65, 0, 195, 188, 122, 2, 32, 14, 128, 128, 131, 3, 2, 57, 112, 88, 0, 3, 57, 0, 196, 177, 2, 32,
-			14, 128, 128, 130, 3, 57, 13, 0, 97, 2, 32, 14, 128, 128, 130, 3, 57, 35, 0, 97, 108, 196, 177, 109, 2, 32, 14, 128, 128, 133,
-			3, 57, 35, 55, 13, 65, 0, 97, 121, 196, 177, 109, 2, 32, 14, 128, 128, 133, 3, 57, 35, 57, 13, 65, 0, 97, 99, 97, 107, 2,
-			32, 14, 128, 128, 133, 3, 57, 35, 75, 35, 49, 0, 97, 99, 97, 107, 109, 196, 177, 197, 159, 2, 32, 14, 128, 128, 136, 3, 57, 35,
-			75, 35, 49, 65, 2, 13, 91, 0, 97, 115, 196, 177, 110, 2, 32, 14, 128, 128, 133, 3, 57, 35, 89, 13, 50, 0, 101, 2, 32, 14,
-			128, 128, 130, 3, 57, 36, 0, 101, 108, 105, 109, 2, 32, 14, 128, 128, 133, 3, 57, 36, 55, 37, 65, 0, 101, 121, 105, 109, 2, 32,
-			14, 128, 128, 133, 3, 57, 36, 57, 37, 65, 0, 101, 99, 101, 107, 2, 32, 14, 128, 128, 133, 3, 57, 36, 75, 36, 49, 0, 101, 99,
-			101, 107, 109, 105, 197, 159, 2, 32, 14, 128, 128, 136, 3, 57, 36, 75, 36, 49, 65, 2, 37, 91, 0, 101, 115, 105, 110, 2, 32, 14,
-			128, 128, 133, 3, 57, 36, 89, 37, 50, 0, 105, 2, 32, 14, 128, 128, 130, 3, 57, 37, 0, 117, 2, 32, 14, 128, 128, 130, 3, 57,
-			40, 0, 107, 101, 110, 2, 32, 14, 128, 128, 132, 3, 57, 80, 2, 36, 50, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 57, 112, 0,
-			7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 39, 2, 14, 130, 132, 128, 3, 0, 36, 3, 72, 39, 55, 35, 34, 0, 4, 195, 164, 3,
-			109, 0, 201, 153, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts65 = FileInMemory_createWithData (5977, reinterpret_cast<const char *> (&espeakdata_dicts65_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/tr_dict", 
+		static unsigned char espeakdata_dicts65_data[6053] = {
+			0, 4, 0, 0, 41, 13, 0, 0, 0, 0, 0, 0, 0, 5, 65, 4, 35, 0, 0, 6, 194, 5, 0, 13, 46, 0, 0, 0, 6, 65,
+			8, 71, 36, 0, 0, 0, 0, 14, 139, 107, 196, 177, 114, 107, 108, 97, 114, 101, 108, 105, 65, 0, 6, 65, 12, 75, 109, 0, 0, 0,
+			0, 0, 6, 65, 16, 72, 109, 0, 0, 0, 6, 195, 36, 209, 128, 13, 0, 9, 198, 16, 83, 137, 104, 194, 64, 66, 16, 4, 95, 100,
+			112, 116, 10, 84, 37, 51, 81, 4, 113, 55, 23, 0, 0, 5, 65, 20, 109, 0, 0, 0, 0, 0, 6, 65, 24, 83, 109, 0, 0, 0,
+			0, 0, 6, 65, 28, 79, 109, 0, 0, 0, 0, 0, 6, 65, 32, 107, 109, 0, 0, 0, 0, 0, 5, 65, 36, 37, 0, 0, 10, 1,
+			37, 57, 113, 88, 72, 109, 0, 27, 0, 6, 195, 160, 98, 192, 13, 8, 1, 38, 11, 84, 6, 109, 0, 0, 0, 6, 65, 40, 90, 109,
+			0, 0, 0, 12, 1, 42, 57, 6, 13, 64, 72, 13, 88, 0, 27, 0, 9, 1, 43, 35, 51, 47, 13, 0, 27, 0, 6, 65, 44, 49,
+			35, 0, 0, 0, 0, 0, 14, 4, 95, 100, 105, 97, 111, 65, 64, 35, 6, 111, 47, 0, 6, 65, 48, 55, 109, 0, 0, 0, 0, 0,
+			6, 65, 52, 65, 109, 0, 0, 0, 0, 0, 6, 65, 56, 50, 109, 0, 0, 0, 7, 195, 76, 150, 128, 76, 46, 0, 0, 5, 193, 60,
+			76, 46, 0, 9, 1, 61, 109, 91, 124, 47, 0, 27, 0, 0, 0, 6, 65, 64, 48, 109, 0, 0, 6, 194, 4, 32, 13, 46, 0, 7,
+			195, 4, 33, 0, 13, 46, 0, 0, 10, 135, 98, 97, 114, 116, 196, 177, 110, 65, 7, 65, 68, 49, 84, 109, 0, 0, 0, 0, 0, 6,
+			65, 72, 51, 109, 0, 0, 0, 0, 16, 4, 95, 100, 111, 116, 113, 89, 47, 50, 110, 49, 47, 6, 35, 0, 0, 6, 65, 76, 89, 109,
+			0, 0, 0, 0, 0, 6, 65, 80, 47, 109, 0, 0, 6, 195, 81, 0, 79, 13, 0, 0, 0, 5, 65, 84, 40, 0, 0, 0, 0, 0,
+			6, 65, 88, 84, 109, 0, 0, 0, 0, 0, 6, 195, 61, 33, 21, 65, 12, 65, 92, 72, 40, 71, 109, 55, 84, 6, 109, 0, 0, 0,
+			0, 0, 7, 196, 80, 242, 193, 80, 65, 7, 65, 96, 109, 49, 89, 0, 0, 0, 0, 0, 6, 65, 100, 57, 109, 0, 0, 0, 0, 9,
+			198, 4, 195, 65, 57, 144, 64, 66, 0, 6, 65, 104, 88, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 25, 64, 65, 13, 0,
+			0, 0, 8, 197, 52, 20, 132, 36, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 116, 108, 100, 47, 124,
+			55, 72, 6, 109, 0, 0, 0, 0, 0, 0, 0, 6, 195, 4, 100, 0, 13, 0, 0, 9, 198, 52, 19, 1, 81, 144, 64, 66, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 16, 16, 72, 46, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 9, 80, 76, 46, 0, 6,
+			195, 161, 52, 192, 13, 0, 0, 0, 0, 6, 195, 5, 99, 64, 13, 0, 0, 0, 0, 0, 0, 6, 65, 128, 76, 109, 0, 0, 6, 195,
+			80, 146, 22, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 109, 99, 110, 40, 88, 6, 35,
+			47, 65, 35, 37, 65, 124, 0, 0, 0, 0, 9, 198, 64, 84, 208, 20, 208, 133, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 196, 44, 243, 153, 4, 65, 6, 195, 6, 129, 128, 13, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 16,
+			80, 72, 46, 0, 0, 0, 0, 6, 195, 4, 180, 0, 13, 0, 0, 0, 0, 6, 195, 160, 149, 128, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 32, 18, 203, 5, 34, 64, 65, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 81, 83, 131, 20, 194, 64, 65, 0, 0, 9, 198, 66, 181, 43,
+			72, 113, 64, 66, 0, 0, 0, 0, 8, 197, 5, 100, 149, 64, 16, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 44, 22, 83,
+			21, 34, 64, 65, 0, 7, 196, 4, 102, 79, 56, 65, 0, 0, 0, 0, 7, 196, 37, 163, 73, 72, 65, 0, 10, 199, 36, 225, 201, 49,
+			65, 82, 20, 67, 0, 0, 0, 0, 0, 0, 0, 7, 195, 8, 83, 128, 76, 46, 0, 0, 0, 0, 6, 195, 4, 146, 13, 13, 0, 8,
+			196, 100, 242, 211, 4, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 6, 195, 160, 68, 0, 13, 0, 6, 195, 61, 48, 128, 13, 0, 7, 196, 8, 19, 139, 4, 65, 0, 0,
+			0, 0, 0, 0, 8, 133, 117, 197, 159, 97, 107, 65, 0, 10, 3, 226, 130, 172, 35, 84, 51, 110, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 9, 134, 97, 196, 159, 114, 196, 177, 65, 14, 4, 95, 111, 103, 111, 39, 81, 39, 50, 6, 109, 49, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 53, 81, 1, 57, 144, 64, 66, 10, 135, 196, 177, 112, 97, 114, 116,
+			97, 66, 9, 198, 4, 229, 1, 49, 144, 64, 66, 0, 0, 0, 0, 19, 4, 95, 98, 114, 118, 49, 13, 89, 6, 35, 64, 47, 65, 35,
+			37, 65, 124, 0, 0, 0, 0, 0, 21, 4, 95, 97, 99, 50, 76, 6, 124, 83, 47, 84, 111, 51, 81, 6, 111, 37, 65, 124, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 39, 47, 6, 40, 88,
+			0, 0, 10, 3, 95, 48, 67, 6, 57, 112, 88, 0, 0, 0, 6, 195, 160, 144, 128, 13, 0, 0, 0, 0, 0, 7, 196, 80, 211, 79,
+			8, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 8, 21, 13, 4, 224, 65, 13, 3, 95, 50, 67, 6, 37, 80, 37, 57, 112,
+			88, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 49, 6, 39, 50, 71, 37, 51, 0, 0, 9, 3, 95, 49, 48, 6, 39, 50, 0,
+			0, 0, 7, 196, 18, 182, 131, 20, 65, 12, 3, 95, 49, 50, 6, 39, 50, 37, 80, 37, 0, 0, 0, 0, 0, 6, 195, 36, 129, 0,
+			13, 0, 0, 13, 3, 95, 55, 88, 57, 36, 47, 65, 6, 37, 91, 0, 0, 8, 197, 76, 19, 83, 84, 224, 65, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 16, 4, 95, 97, 99, 117, 84, 111, 51, 81, 6, 111, 37, 65, 124, 0, 0, 0, 0, 0, 9, 198, 46, 181,
+			1, 33, 144, 64, 66, 9, 3, 95, 49, 88, 6, 39, 50, 0, 0, 5, 65, 160, 126, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95,
+			50, 88, 57, 37, 51, 65, 6, 37, 0, 0, 8, 197, 32, 149, 12, 21, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			13, 3, 95, 63, 63, 89, 109, 65, 71, 6, 110, 55, 0, 0, 0, 0, 11, 3, 95, 52, 88, 49, 6, 13, 51, 49, 0, 0, 0, 0,
+			0, 0, 7, 196, 32, 21, 1, 100, 65, 0, 0, 0, 11, 3, 95, 53, 88, 36, 55, 55, 6, 37, 0, 0, 0, 13, 4, 95, 114, 110,
+			103, 107, 35, 64, 49, 6, 35, 0, 0, 0, 0, 0, 0, 0, 6, 195, 8, 243, 21, 65, 13, 3, 95, 54, 88, 35, 64, 47, 65, 6,
+			13, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 81, 54, 68, 13, 0, 9, 134, 109, 117, 196, 159, 108,
+			97, 65, 0, 0, 13, 3, 95, 56, 88, 89, 36, 49, 89, 6, 109, 50, 0, 0, 0, 0, 0, 6, 195, 72, 150, 133, 65, 0, 0, 0,
+			7, 131, 109, 196, 177, 72, 46, 6, 194, 44, 144, 72, 28, 0, 13, 3, 95, 57, 88, 72, 39, 49, 89, 6, 35, 50, 0, 0, 0, 0,
+			0, 0, 9, 134, 97, 121, 100, 196, 177, 110, 65, 0, 0, 8, 197, 100, 246, 135, 5, 64, 65, 6, 194, 53, 80, 72, 46, 10, 3, 95,
+			63, 65, 107, 35, 51, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 20, 66, 82,
+			56, 80, 66, 10, 199, 128, 19, 129, 44, 176, 76, 20, 66, 0, 9, 198, 37, 53, 1, 56, 37, 76, 66, 0, 0, 0, 6, 195, 81, 49,
+			64, 13, 0, 0, 0, 0, 0, 9, 198, 52, 20, 205, 5, 98, 64, 65, 0, 0, 0, 6, 195, 81, 50, 64, 13, 0, 0, 0, 13, 4,
+			95, 99, 105, 114, 91, 35, 48, 49, 6, 35, 0, 5, 65, 172, 112, 0, 0, 0, 0, 0, 14, 139, 107, 196, 177, 115, 107, 196, 177, 118,
+			114, 97, 107, 65, 14, 4, 95, 48, 77, 50, 65, 37, 55, 57, 6, 39, 50, 0, 0, 7, 195, 76, 83, 128, 76, 46, 6, 195, 161, 146,
+			192, 13, 14, 4, 95, 48, 77, 51, 65, 37, 55, 57, 6, 35, 34, 0, 0, 0, 11, 4, 95, 48, 77, 49, 71, 6, 37, 50, 0, 0,
+			0, 0, 0, 0, 0, 9, 134, 110, 105, 196, 159, 100, 101, 65, 0, 0, 0, 0, 0, 0, 0, 9, 198, 8, 22, 66, 85, 37, 0, 65,
+			0, 0, 0, 0, 6, 194, 52, 144, 72, 46, 0, 0, 0, 0, 0, 0, 0, 7, 196, 76, 147, 143, 64, 65, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 196, 9, 84, 147, 4, 65, 0, 0, 0, 0, 0, 0, 12, 4, 95, 99, 101, 100,
+			107, 6, 35, 51, 83, 0, 0, 0, 0, 0, 0, 8, 197, 8, 149, 12, 37, 48, 65, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 99,
+			97, 112, 71, 112, 57, 6, 113, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 198, 52, 84, 136, 4, 32, 64, 65,
+			0, 0, 0, 0, 9, 198, 76, 18, 193, 73, 144, 64, 66, 7, 131, 197, 159, 117, 76, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 138, 195, 167, 97, 110, 107, 196, 177, 114, 196, 177, 65, 0, 7, 196, 72, 17, 25, 60, 65,
+			0, 7, 196, 37, 53, 133, 128, 65, 0, 0, 0, 0, 0, 0, 0, 6, 195, 60, 80, 196, 13, 0, 0, 0, 0, 8, 197, 52, 84, 147,
+			36, 224, 65, 0, 0, 0, 0, 0, 0, 6, 194, 80, 16, 72, 46, 0, 0, 0, 0, 0, 0, 9, 198, 76, 147, 83, 37, 144, 72, 65,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95, 103, 114, 118, 6, 35, 49, 89, 35, 50, 37, 65, 124, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 2, 194, 167, 76, 109, 50, 79, 6, 109, 55, 0, 0, 8, 197, 18, 179, 68, 173,
+			160, 65, 6, 195, 36, 210, 194, 13, 6, 195, 36, 210, 194, 13, 0, 0, 0, 0, 0, 0, 0, 17, 2, 196, 159, 57, 40, 65, 40, 91,
+			6, 35, 49, 15, 79, 6, 109, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 194, 182, 48, 35, 16, 35, 81, 51, 6, 35, 83, 0, 0,
+			7, 2, 197, 159, 91, 109, 0, 0, 0, 0, 0, 0, 6, 195, 84, 36, 0, 13, 12, 2, 194, 176, 72, 36, 16, 36, 75, 6, 109, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 85, 33, 129, 65, 0, 6, 194, 80, 80, 72, 46, 6, 195, 161, 69, 128, 13,
+			0, 0, 0, 0, 0, 6, 2, 196, 177, 13, 0, 0, 8, 197, 9, 84, 132, 85, 32, 65, 8, 197, 52, 244, 205, 61, 32, 65, 0, 0,
+			0, 6, 195, 85, 49, 0, 13, 0, 0, 0, 0, 6, 195, 100, 179, 64, 13, 6, 195, 4, 179, 64, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 11, 136, 197, 159, 196, 177, 114, 110, 97, 107, 65, 8, 133, 195, 182, 196, 177, 98, 13, 0, 0, 0, 0, 0, 12,
+			137, 116, 101, 107, 105, 114, 100, 97, 196, 159, 66, 0, 0, 0, 0, 0, 0, 9, 198, 8, 83, 66, 21, 144, 90, 65, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 8, 197, 8, 241, 18, 84, 208, 65, 8, 197, 8, 147, 135, 160, 192, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 7, 196, 128, 244, 149, 52, 65, 8, 197, 4, 226, 193, 72, 16, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 21, 1, 11,
+			13, 0, 7, 196, 76, 149, 129, 76, 65, 6, 194, 88, 80, 72, 28, 0, 0, 0, 0, 0, 11, 2, 95, 35, 72, 37, 57, 6, 109, 88,
+			0, 0, 20, 2, 95, 34, 47, 13, 51, 50, 6, 35, 49, 37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 19, 2, 95, 33, 113, 50, 55,
+			6, 109, 65, 37, 91, 35, 16, 36, 47, 4, 124, 0, 0, 0, 14, 2, 95, 39, 35, 48, 110, 89, 47, 51, 6, 110, 83, 0, 0, 16,
+			2, 95, 38, 84, 6, 109, 37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 0, 0, 0, 0, 18, 2, 95, 41, 49, 35, 48, 35, 48, 35,
+			16, 35, 50, 47, 6, 109, 88, 0, 0, 11, 136, 196, 177, 196, 159, 100, 196, 177, 114, 65, 16, 2, 95, 40, 35, 76, 48, 35, 16, 35,
+			50, 47, 6, 109, 88, 0, 0, 16, 2, 95, 47, 36, 57, 6, 124, 49, 76, 124, 88, 81, 6, 124, 0, 0, 11, 2, 95, 46, 50, 110,
+			49, 47, 6, 35, 0, 0, 16, 2, 95, 45, 49, 6, 13, 89, 35, 76, 124, 88, 81, 6, 124, 0, 0, 12, 2, 95, 44, 84, 124, 51,
+			79, 6, 113, 55, 0, 0, 7, 195, 8, 148, 128, 76, 46, 8, 2, 95, 51, 6, 112, 76, 0, 0, 9, 2, 95, 50, 37, 80, 6, 37,
+			0, 0, 9, 2, 95, 49, 71, 6, 37, 51, 0, 0, 11, 2, 95, 48, 89, 13, 83, 6, 13, 51, 0, 0, 10, 2, 95, 55, 57, 36,
+			72, 6, 37, 0, 0, 10, 2, 95, 54, 35, 64, 47, 6, 13, 0, 0, 6, 195, 4, 33, 211, 13, 9, 2, 95, 53, 71, 6, 109, 91,
+			0, 0, 10, 2, 95, 52, 72, 6, 126, 51, 47, 0, 0, 20, 2, 95, 59, 50, 110, 49, 47, 35, 64, 6, 13, 84, 124, 51, 79, 6,
+			113, 55, 0, 0, 15, 2, 95, 58, 37, 49, 6, 124, 50, 110, 49, 47, 6, 35, 0, 0, 11, 2, 95, 57, 72, 6, 39, 49, 40, 88,
+			0, 0, 11, 2, 95, 56, 89, 36, 80, 6, 124, 88, 0, 0, 18, 2, 95, 63, 89, 39, 51, 6, 111, 37, 91, 35, 16, 36, 47, 4,
+			124, 0, 0, 0, 0, 0, 7, 195, 8, 150, 128, 76, 46, 0, 0, 0, 16, 2, 95, 64, 49, 111, 57, 51, 111, 49, 64, 6, 111, 6,
+			35, 0, 0, 13, 138, 115, 196, 177, 109, 115, 196, 177, 99, 97, 107, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 95,
+			226, 128, 166, 6, 113, 76, 50, 110, 49, 47, 6, 35, 0, 0, 0, 0, 0, 0, 6, 195, 20, 177, 192, 13, 17, 4, 95, 226, 128, 153,
+			47, 109, 49, 47, 13, 51, 50, 6, 35, 49, 0, 0, 17, 4, 95, 226, 128, 152, 47, 109, 49, 47, 13, 51, 50, 6, 35, 49, 0, 0,
+			0, 0, 7, 195, 36, 193, 64, 72, 46, 0, 0, 18, 4, 95, 226, 128, 147, 6, 40, 88, 111, 50, 76, 124, 88, 81, 6, 124, 0, 0,
+			0, 15, 2, 95, 95, 4, 35, 64, 47, 76, 124, 88, 81, 6, 124, 0, 0, 22, 2, 95, 94, 124, 50, 75, 6, 109, 55, 47, 65, 109,
+			37, 91, 35, 16, 36, 47, 6, 124, 0, 0, 0, 22, 2, 95, 92, 47, 6, 109, 51, 89, 15, 36, 57, 4, 124, 49, 76, 124, 88, 81,
+			6, 124, 0, 0, 0, 0, 0, 0, 6, 195, 80, 211, 192, 13, 0, 0, 0, 0, 0, 0, 17, 142, 107, 196, 177, 112, 107, 196, 177, 114,
+			109, 196, 177, 122, 196, 177, 65, 0, 0, 6, 195, 60, 116, 192, 13, 6, 2, 95, 111, 110, 0, 0, 6, 195, 161, 54, 77, 13, 0, 0,
+			9, 198, 84, 180, 129, 100, 224, 64, 66, 0, 0, 7, 196, 64, 244, 212, 4, 65, 0, 18, 4, 95, 104, 97, 99, 47, 6, 109, 51, 89,
+			91, 35, 48, 49, 6, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 2, 95, 126, 57, 35, 49, 64, 35, 91, 6, 13,
+			49, 0, 0, 0, 7, 196, 44, 147, 9, 76, 65, 0, 0, 0, 0, 0, 11, 136, 115, 97, 112, 115, 97, 114, 196, 177, 65, 0, 0, 0,
+			0, 8, 133, 196, 177, 109, 107, 98, 13, 0, 8, 197, 5, 37, 22, 36, 224, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 5, 67, 64, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 7, 132, 197, 159, 116, 105, 13, 0, 0, 7, 196, 29, 54, 73, 32, 13, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 7, 196, 76, 146, 82, 80, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 195, 4, 208,
+			64, 28, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 194, 54,
+			176, 72, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 197, 4, 208, 83, 100, 16, 66, 0, 0, 6, 195, 5, 69, 128, 13, 0,
+			10, 199, 44, 20, 212, 4, 211, 206, 84, 65, 11, 200, 37, 50, 197, 56, 65, 82, 84, 224, 66, 12, 137, 100, 111, 115, 100, 111, 196, 159,
+			114, 117, 65, 0, 0, 0, 7, 195, 88, 86, 65, 72, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 137, 107, 117, 114, 116,
+			117, 108, 117, 197, 159, 65, 0, 0, 0, 6, 18, 66, 195, 167, 0, 197, 159, 0, 102, 0, 104, 0, 107, 0, 112, 0, 113, 0, 115, 0,
+			116, 0, 7, 6, 18, 67, 196, 177, 0, 97, 0, 111, 0, 117, 0, 7, 6, 18, 68, 195, 182, 0, 195, 188, 0, 195, 174, 0, 195, 162,
+			0, 195, 180, 0, 195, 187, 0, 105, 0, 101, 0, 7, 6, 20, 0, 0, 96, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 6, 195,
+			167, 0, 3, 76, 0, 101, 2, 32, 14, 128, 128, 130, 3, 76, 2, 109, 0, 7, 6, 195, 174, 0, 3, 13, 0, 7, 6, 195, 182, 0,
+			3, 126, 0, 7, 6, 195, 188, 0, 110, 195, 188, 122, 1, 21, 2, 32, 14, 128, 128, 132, 3, 2, 112, 50, 112, 88, 0, 109, 1, 21,
+			2, 32, 14, 128, 128, 130, 3, 2, 112, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 112, 88, 0, 4, 3, 112, 0, 1,
+			21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 112, 50, 0, 121, 111, 114, 1, 21, 2, 32, 14, 128,
+			128, 132, 3, 112, 57, 2, 39, 51, 0, 7, 6, 196, 159, 0, 4, 1, 17, 65, 3, 12, 0, 97, 1, 97, 0, 111, 1, 111, 0, 117,
+			1, 117, 0, 195, 182, 1, 182, 195, 0, 195, 188, 1, 188, 195, 0, 4, 1, 101, 3, 57, 0, 1, 105, 0, 3, 100, 0, 5, 1, 1,
+			17, 65, 2, 12, 3, 127, 0, 7, 6, 196, 177, 0, 110, 196, 177, 122, 1, 21, 2, 32, 14, 128, 128, 132, 3, 2, 13, 50, 13, 88,
+			0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 13, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 13, 88, 0, 4,
+			3, 13, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 13, 50, 0, 121, 111, 114, 1, 21,
+			2, 32, 14, 128, 128, 132, 3, 13, 57, 2, 39, 51, 0, 7, 6, 197, 159, 0, 3, 91, 0, 7, 6, 97, 0, 4, 3, 35, 0, 1,
+			21, 2, 32, 14, 128, 128, 129, 0, 121, 196, 177, 109, 1, 21, 2, 32, 14, 128, 128, 132, 3, 35, 57, 13, 65, 0, 108, 196, 177, 109,
+			1, 21, 2, 32, 14, 128, 128, 132, 3, 35, 64, 13, 65, 0, 99, 97, 107, 1, 21, 2, 32, 14, 128, 128, 132, 3, 35, 75, 35, 49,
+			0, 99, 97, 107, 109, 196, 177, 197, 159, 1, 21, 2, 32, 14, 128, 128, 135, 3, 35, 75, 35, 49, 65, 2, 13, 91, 0, 118, 114, 117,
+			1, 21, 2, 112, 97, 3, 35, 84, 34, 6, 40, 0, 115, 196, 177, 110, 1, 21, 2, 32, 14, 128, 128, 132, 3, 35, 89, 13, 50, 0,
+			7, 6, 98, 0, 3, 71, 0, 7, 6, 99, 0, 3, 75, 0, 101, 2, 32, 14, 128, 128, 130, 3, 75, 2, 109, 0, 7, 6, 100, 0,
+			196, 177, 114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 13, 51, 0, 105, 114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 37, 51, 0, 117,
+			114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 40, 51, 0, 195, 188, 114, 2, 32, 14, 128, 128, 131, 3, 2, 72, 112, 51, 0, 8, 2,
+			101, 196, 159, 105, 108, 3, 6, 72, 0, 3, 72, 0, 196, 177, 2, 32, 14, 128, 128, 130, 3, 72, 13, 0, 196, 177, 107, 2, 32, 14,
+			128, 128, 131, 3, 72, 13, 49, 0, 196, 177, 110, 2, 32, 14, 128, 128, 131, 3, 72, 13, 50, 0, 196, 177, 110, 196, 177, 122, 2, 32,
+			14, 128, 128, 133, 3, 72, 13, 50, 13, 88, 0, 196, 177, 108, 97, 114, 2, 32, 14, 128, 128, 133, 3, 72, 13, 64, 35, 51, 0, 196,
+			177, 109, 2, 32, 14, 128, 128, 131, 3, 72, 13, 65, 0, 97, 2, 32, 14, 128, 128, 130, 3, 72, 35, 0, 97, 110, 2, 32, 14, 128,
+			128, 131, 3, 72, 35, 50, 0, 101, 2, 32, 14, 128, 128, 130, 3, 72, 36, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 72, 36, 50,
+			0, 105, 2, 32, 14, 128, 128, 130, 3, 72, 37, 0, 105, 107, 2, 32, 14, 128, 128, 131, 3, 72, 37, 49, 0, 105, 110, 2, 32, 14,
+			128, 128, 131, 3, 72, 37, 50, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 72, 37, 50, 37, 88, 0, 105, 108, 101, 114, 2,
+			32, 14, 128, 128, 133, 3, 72, 37, 55, 36, 51, 0, 105, 109, 2, 32, 14, 128, 128, 131, 3, 72, 37, 65, 0, 117, 2, 32, 14, 128,
+			128, 130, 3, 72, 40, 0, 117, 107, 2, 32, 14, 128, 128, 131, 3, 72, 40, 49, 0, 117, 110, 2, 32, 14, 128, 128, 131, 3, 72, 40,
+			50, 0, 117, 110, 117, 122, 2, 32, 14, 128, 128, 133, 3, 72, 40, 50, 40, 88, 0, 117, 108, 97, 114, 2, 32, 14, 128, 128, 133, 3,
+			72, 40, 64, 35, 34, 0, 117, 109, 2, 32, 14, 128, 128, 131, 3, 72, 40, 65, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 72, 112,
+			0, 195, 188, 107, 2, 32, 14, 128, 128, 131, 3, 72, 112, 49, 0, 195, 188, 110, 2, 32, 14, 128, 128, 131, 3, 72, 112, 50, 0, 195,
+			188, 110, 195, 188, 122, 2, 32, 14, 128, 128, 133, 3, 72, 112, 50, 112, 88, 0, 195, 188, 108, 101, 114, 2, 32, 14, 128, 128, 133, 3,
+			72, 112, 55, 36, 34, 0, 195, 188, 109, 2, 32, 14, 128, 128, 131, 3, 72, 112, 65, 0, 7, 6, 101, 0, 4, 3, 36, 0, 1, 21,
+			2, 32, 14, 128, 128, 129, 0, 108, 105, 109, 1, 21, 2, 32, 14, 128, 128, 132, 3, 36, 55, 37, 65, 0, 121, 105, 109, 1, 21, 2,
+			32, 14, 128, 128, 132, 3, 36, 57, 37, 65, 0, 99, 101, 107, 1, 21, 2, 32, 14, 128, 128, 132, 3, 36, 75, 36, 49, 0, 99, 101,
+			107, 109, 105, 197, 159, 1, 21, 2, 32, 14, 128, 128, 135, 3, 36, 75, 36, 49, 65, 2, 37, 91, 0, 115, 105, 110, 1, 21, 2, 32,
+			14, 128, 128, 132, 3, 36, 89, 37, 50, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 1, 18, 68, 2, 25, 3, 79, 0,
+			2, 18, 68, 0, 3, 81, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 110, 105, 122, 1, 21, 2, 32, 14, 128, 128, 132, 3,
+			2, 37, 50, 37, 88, 0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 37, 65, 0, 122, 1, 21, 2, 32, 14, 128, 128, 130, 3,
+			2, 37, 88, 0, 4, 3, 37, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2, 32, 14, 128, 128, 130, 3, 37, 50, 0,
+			121, 111, 114, 1, 21, 2, 32, 14, 128, 128, 132, 3, 37, 57, 2, 39, 51, 0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0, 101,
+			110, 2, 32, 14, 128, 128, 131, 3, 2, 80, 36, 50, 0, 3, 49, 0, 4, 1, 18, 68, 2, 25, 3, 80, 0, 2, 18, 68, 0, 7,
+			6, 108, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2, 55, 36, 0, 97, 2, 32, 14, 128, 128, 130, 3, 2, 64, 35, 0, 3, 55, 0,
+			101, 114, 2, 32, 14, 128, 128, 131, 3, 55, 36, 51, 0, 105, 2, 32, 14, 128, 128, 130, 3, 55, 37, 0, 105, 107, 2, 32, 14, 128,
+			128, 131, 3, 55, 37, 49, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 55, 112, 0, 195, 188, 107, 2, 32, 14, 128, 128, 131, 3, 55,
+			112, 49, 0, 4, 1, 18, 67, 2, 25, 3, 64, 0, 2, 18, 67, 0, 196, 177, 2, 32, 14, 128, 128, 130, 3, 64, 13, 0, 196, 177,
+			107, 2, 32, 14, 128, 128, 131, 3, 64, 13, 49, 0, 97, 114, 2, 32, 14, 128, 128, 131, 3, 64, 35, 51, 0, 117, 2, 32, 14, 128,
+			128, 130, 3, 64, 40, 0, 117, 107, 2, 32, 14, 128, 128, 131, 3, 64, 40, 49, 0, 7, 6, 109, 0, 97, 2, 32, 14, 128, 128, 130,
+			3, 2, 65, 35, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2, 65, 36, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 196, 177, 110,
+			2, 32, 14, 128, 128, 131, 3, 50, 13, 50, 0, 105, 110, 2, 32, 14, 128, 128, 131, 3, 50, 37, 50, 0, 117, 110, 2, 32, 14, 128,
+			128, 131, 3, 50, 40, 50, 0, 100, 97, 8, 2, 32, 3, 50, 72, 35, 0, 100, 97, 110, 8, 2, 32, 3, 50, 72, 35, 50, 0, 100,
+			101, 8, 2, 32, 3, 50, 72, 36, 0, 100, 101, 110, 8, 2, 32, 3, 50, 72, 36, 50, 0, 195, 188, 110, 2, 32, 14, 128, 128, 131,
+			3, 50, 112, 50, 0, 7, 6, 111, 0, 3, 39, 0, 7, 6, 112, 0, 3, 48, 0, 7, 6, 113, 0, 3, 49, 0, 7, 6, 114, 0,
+			97, 2, 32, 14, 128, 128, 130, 3, 2, 51, 35, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2, 51, 36, 0, 4, 1, 17, 65, 2, 17,
+			65, 3, 16, 0, 1, 159, 196, 2, 17, 65, 0, 3, 51, 0, 97, 2, 32, 24, 3, 51, 35, 0, 101, 2, 32, 24, 3, 51, 36, 0,
+			7, 6, 115, 0, 196, 177, 110, 196, 177, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 13, 50, 13, 88, 0, 97, 2, 32, 14, 128, 128,
+			130, 3, 2, 89, 35, 0, 97, 107, 2, 32, 14, 128, 128, 131, 3, 2, 89, 35, 49, 0, 97, 110, 2, 32, 14, 128, 128, 131, 3, 2,
+			89, 35, 50, 0, 97, 110, 196, 177, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 35, 50, 13, 88, 0, 97, 109, 2, 32, 14, 128, 128,
+			131, 3, 2, 89, 35, 65, 0, 101, 2, 32, 14, 128, 128, 130, 3, 2, 89, 36, 0, 101, 107, 2, 32, 14, 128, 128, 131, 3, 2, 89,
+			36, 49, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 2, 89, 36, 50, 0, 101, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89,
+			36, 50, 37, 88, 0, 101, 109, 2, 32, 14, 128, 128, 131, 3, 2, 89, 36, 65, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3,
+			2, 89, 37, 50, 37, 88, 0, 117, 110, 117, 122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 40, 50, 40, 88, 0, 195, 188, 110, 195, 188,
+			122, 2, 32, 14, 128, 128, 133, 3, 2, 89, 112, 50, 112, 88, 0, 3, 89, 0, 7, 6, 116, 0, 196, 177, 114, 1, 18, 66, 2, 32,
+			14, 128, 128, 131, 3, 2, 47, 13, 51, 0, 105, 114, 1, 18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 37, 51, 0, 117, 114, 1,
+			18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 40, 51, 0, 195, 188, 114, 1, 18, 66, 2, 32, 14, 128, 128, 131, 3, 2, 47, 112,
+			51, 0, 3, 47, 0, 97, 2, 32, 14, 128, 128, 130, 3, 47, 35, 0, 97, 110, 2, 32, 14, 128, 128, 131, 3, 47, 35, 50, 0, 101,
+			2, 32, 14, 128, 128, 130, 3, 47, 36, 0, 101, 110, 2, 32, 14, 128, 128, 131, 3, 47, 36, 50, 0, 7, 6, 117, 0, 110, 117, 122,
+			1, 21, 2, 32, 14, 128, 128, 132, 3, 2, 40, 50, 40, 88, 0, 109, 1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 40, 65, 0, 122,
+			1, 21, 2, 32, 14, 128, 128, 130, 3, 2, 40, 88, 0, 4, 3, 40, 0, 1, 21, 2, 32, 14, 128, 128, 129, 0, 110, 1, 21, 2,
+			32, 14, 128, 128, 130, 3, 40, 50, 0, 121, 111, 114, 1, 21, 2, 32, 14, 128, 128, 132, 3, 40, 57, 2, 39, 51, 0, 7, 6, 118,
+			0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 49, 89, 0, 1, 25, 3, 88, 0, 7, 6, 121, 0, 196, 177,
+			110, 196, 177, 122, 2, 32, 14, 128, 128, 133, 3, 2, 57, 13, 50, 13, 88, 0, 196, 177, 109, 2, 32, 14, 128, 128, 131, 3, 2, 57,
+			13, 65, 0, 196, 177, 122, 2, 32, 14, 128, 128, 131, 3, 2, 57, 13, 88, 0, 105, 110, 105, 122, 2, 32, 14, 128, 128, 133, 3, 2,
+			57, 37, 50, 37, 88, 0, 105, 109, 2, 32, 14, 128, 128, 131, 3, 2, 57, 37, 65, 0, 105, 122, 2, 32, 14, 128, 128, 131, 3, 2,
+			57, 37, 88, 0, 117, 110, 117, 122, 2, 32, 14, 128, 128, 133, 3, 2, 57, 40, 50, 40, 88, 0, 117, 109, 2, 32, 14, 128, 128, 131,
+			3, 2, 57, 40, 65, 0, 117, 122, 2, 32, 14, 128, 128, 131, 3, 2, 57, 40, 88, 0, 108, 101, 2, 32, 14, 128, 128, 131, 3, 2,
+			57, 55, 36, 0, 108, 97, 2, 32, 14, 128, 128, 131, 3, 2, 57, 64, 35, 0, 195, 188, 110, 195, 188, 122, 2, 32, 14, 128, 128, 133,
+			3, 2, 57, 112, 50, 112, 88, 0, 195, 188, 109, 2, 32, 14, 128, 128, 131, 3, 2, 57, 112, 65, 0, 195, 188, 122, 2, 32, 14, 128,
+			128, 131, 3, 2, 57, 112, 88, 0, 3, 57, 0, 196, 177, 2, 32, 14, 128, 128, 130, 3, 57, 13, 0, 97, 2, 32, 14, 128, 128, 130,
+			3, 57, 35, 0, 97, 121, 196, 177, 109, 2, 32, 14, 128, 128, 133, 3, 57, 35, 57, 13, 65, 0, 97, 108, 196, 177, 109, 2, 32, 14,
+			128, 128, 133, 3, 57, 35, 64, 13, 65, 0, 97, 99, 97, 107, 2, 32, 14, 128, 128, 133, 3, 57, 35, 75, 35, 49, 0, 97, 99, 97,
+			107, 109, 196, 177, 197, 159, 2, 32, 14, 128, 128, 136, 3, 57, 35, 75, 35, 49, 65, 2, 13, 91, 0, 97, 115, 196, 177, 110, 2, 32,
+			14, 128, 128, 133, 3, 57, 35, 89, 13, 50, 0, 101, 2, 32, 14, 128, 128, 130, 3, 57, 36, 0, 101, 108, 105, 109, 2, 32, 14, 128,
+			128, 133, 3, 57, 36, 55, 37, 65, 0, 101, 121, 105, 109, 2, 32, 14, 128, 128, 133, 3, 57, 36, 57, 37, 65, 0, 101, 99, 101, 107,
+			2, 32, 14, 128, 128, 133, 3, 57, 36, 75, 36, 49, 0, 101, 99, 101, 107, 109, 105, 197, 159, 2, 32, 14, 128, 128, 136, 3, 57, 36,
+			75, 36, 49, 65, 2, 37, 91, 0, 101, 115, 105, 110, 2, 32, 14, 128, 128, 133, 3, 57, 36, 89, 37, 50, 0, 105, 2, 32, 14, 128,
+			128, 130, 3, 57, 37, 0, 117, 2, 32, 14, 128, 128, 130, 3, 57, 40, 0, 107, 101, 110, 2, 32, 14, 128, 128, 132, 3, 57, 80, 2,
+			36, 50, 0, 195, 188, 2, 32, 14, 128, 128, 130, 3, 57, 112, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 39, 2, 14, 130, 132,
+			128, 3, 0, 36, 3, 72, 39, 55, 35, 34, 0, 4, 195, 164, 3, 109, 0, 201, 153, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts65 = FileInMemory_createWithData (6052, reinterpret_cast<const char *> (&espeakdata_dicts65_data), 
+			U"espeak-1.48.04-source/espeak-data/tr_dict", 
 			U"tr");
-		Collection_addItem (me.peek(), espeakdata_dicts65.transfer());
+		my addItem_move (espeakdata_dicts65.move());
 
-		static unsigned char espeakdata_dicts66_data[2122] = {
-			0, 4, 0, 0, 204, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
-			58, 36, 0, 0, 0, 0, 0, 6, 65, 16, 81, 36, 0, 0, 0, 0, 14, 4, 95, 100, 112, 116, 10, 71, 109, 47, 4, 36, 50, 0,
-			0, 6, 65, 20, 72, 36, 0, 0, 0, 0, 0, 6, 65, 24, 57, 36, 0, 0, 0, 0, 0, 6, 65, 28, 90, 36, 0, 0, 0, 0,
-			0, 6, 65, 32, 88, 36, 0, 0, 0, 0, 0, 5, 65, 36, 37, 0, 0, 0, 0, 0, 12, 65, 40, 49, 110, 89, 49, 4, 112, 6,
-			37, 0, 0, 0, 0, 0, 6, 65, 44, 49, 112, 0, 0, 0, 0, 0, 6, 65, 48, 36, 55, 0, 0, 0, 0, 0, 6, 65, 52, 36,
-			65, 0, 0, 0, 0, 0, 6, 65, 56, 36, 50, 0, 0, 0, 0, 0, 6, 65, 60, 39, 12, 0, 0, 0, 0, 0, 6, 65, 64, 48,
-			36, 0, 0, 0, 0, 0, 6, 65, 68, 36, 34, 0, 0, 0, 0, 0, 6, 65, 72, 36, 89, 0, 0, 0, 0, 0, 6, 65, 76, 47,
-			36, 0, 0, 0, 0, 0, 5, 65, 80, 40, 0, 0, 0, 0, 0, 6, 65, 84, 36, 83, 0, 0, 0, 0, 0, 6, 65, 88, 101, 112,
-			0, 0, 0, 0, 15, 4, 95, 49, 77, 52, 71, 37, 55, 55, 37, 6, 39, 50, 0, 0, 7, 65, 92, 47, 89, 36, 0, 0, 0, 0,
-			0, 6, 65, 96, 97, 36, 0, 0, 15, 4, 95, 49, 77, 50, 65, 37, 55, 55, 37, 6, 39, 50, 0, 0, 16, 4, 95, 49, 77, 51,
-			65, 37, 55, 55, 37, 6, 112, 34, 72, 0, 0, 0, 6, 65, 100, 91, 112, 0, 0, 0, 0, 0, 7, 65, 104, 91, 97, 112, 0, 0,
-			0, 0, 0, 21, 65, 108, 49, 112, 55, 110, 50, 55, 4, 110, 104, 71, 37, 55, 81, 36, 89, 6, 36, 0, 0, 0, 0, 0, 6, 65,
-			112, 110, 12, 0, 0, 0, 0, 0, 21, 65, 116, 50, 36, 97, 49, 111, 55, 4, 36, 49, 71, 37, 55, 81, 36, 89, 6, 36, 0, 0,
-			0, 0, 0, 6, 65, 120, 36, 12, 0, 0, 0, 0, 0, 6, 65, 124, 57, 40, 0, 0, 0, 0, 0, 6, 65, 128, 57, 112, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 6, 65, 136, 57, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 51, 88, 40,
-			47, 6, 110, 88, 0, 0, 10, 3, 95, 48, 67, 57, 6, 109, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			14, 3, 95, 49, 57, 40, 50, 47, 40, 81, 6, 110, 88, 0, 0, 14, 3, 95, 49, 56, 40, 50, 89, 37, 81, 6, 36, 88, 0, 0,
-			0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 49, 40, 50, 71, 6, 36, 34, 0, 0, 9, 3, 95, 49, 48, 6, 40, 50, 0, 0, 11,
-			3, 95, 49, 51, 40, 50, 6, 109, 97, 0, 0, 12, 3, 95, 49, 50, 40, 50, 37, 49, 6, 36, 0, 0, 12, 3, 95, 49, 53, 40,
-			50, 71, 6, 37, 91, 0, 0, 13, 3, 95, 49, 52, 40, 50, 72, 6, 108, 34, 47, 0, 0, 13, 3, 95, 49, 55, 40, 50, 96, 37,
-			72, 6, 36, 0, 0, 13, 3, 95, 49, 54, 40, 50, 112, 55, 47, 6, 110, 0, 0, 0, 13, 3, 95, 55, 88, 96, 37, 47, 65, 6,
-			36, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95,
-			50, 88, 36, 81, 36, 34, 65, 6, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52,
-			88, 49, 110, 34, 6, 110, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 3, 95, 53, 88, 37, 55, 55, 6, 36, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 13, 3, 95, 54, 88, 112, 55, 47, 65, 6, 110, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 3, 95, 56, 88, 89, 37, 49, 89, 6, 111, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 57, 88,
-			47, 40, 49, 89, 6, 112, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 4, 95, 48, 77, 52, 71, 37, 55, 55,
-			37, 6, 39, 50, 0, 0, 0, 15, 4, 95, 48, 77, 50, 65, 37, 55, 55, 37, 6, 39, 50, 0, 0, 16, 4, 95, 48, 77, 51, 65,
-			37, 55, 55, 37, 6, 112, 34, 72, 0, 0, 0, 11, 4, 95, 48, 77, 49, 65, 6, 36, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 7, 2, 210, 151, 96, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2, 95, 51, 6, 109, 97, 0,
-			0, 9, 2, 95, 50, 37, 49, 6, 36, 0, 0, 9, 2, 95, 49, 71, 6, 36, 34, 0, 0, 10, 2, 95, 48, 50, 6, 40, 55, 19,
-			0, 0, 10, 2, 95, 55, 96, 37, 72, 6, 36, 0, 0, 10, 2, 95, 54, 112, 55, 47, 6, 110, 0, 0, 9, 2, 95, 53, 71, 6,
-			37, 91, 0, 0, 10, 2, 95, 52, 72, 6, 108, 34, 47, 0, 0, 0, 0, 11, 2, 95, 57, 47, 40, 81, 6, 110, 88, 0, 0, 11,
-			2, 95, 56, 89, 37, 81, 6, 36, 88, 0, 0, 7, 2, 210, 163, 36, 68, 0, 0, 0, 0, 0, 6, 2, 210, 175, 108, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 211, 169, 109, 12, 0, 0, 0, 0, 0, 0, 0, 7, 2, 210, 187, 107,
-			36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			6, 1, 17, 0, 3, 112, 0, 7, 6, 1, 18, 0, 3, 71, 0, 7, 6, 1, 19, 0, 3, 58, 0, 7, 6, 1, 20, 0, 3, 81,
-			0, 7, 6, 1, 21, 0, 3, 72, 0, 7, 6, 1, 22, 0, 3, 36, 0, 8, 3, 57, 117, 0, 7, 6, 1, 23, 0, 3, 90, 0,
-			7, 6, 1, 24, 0, 3, 88, 0, 7, 6, 1, 25, 0, 3, 37, 0, 1, 17, 65, 3, 57, 0, 7, 6, 1, 26, 0, 3, 57, 0,
-			1, 25, 2, 25, 3, 115, 0, 7, 6, 1, 27, 0, 3, 49, 0, 7, 6, 1, 28, 0, 3, 55, 0, 7, 6, 1, 29, 0, 3, 65,
-			0, 7, 6, 1, 30, 0, 3, 50, 0, 4, 2, 208, 179, 3, 68, 0, 2, 209, 133, 0, 7, 6, 1, 31, 0, 3, 39, 0, 7, 6,
-			1, 32, 0, 3, 48, 0, 7, 6, 1, 33, 0, 3, 34, 0, 7, 6, 1, 34, 0, 3, 89, 0, 7, 6, 1, 35, 0, 3, 47, 0,
-			7, 6, 1, 36, 0, 3, 40, 0, 1, 17, 65, 3, 58, 0, 7, 6, 1, 37, 0, 3, 83, 0, 7, 6, 1, 38, 0, 3, 101, 0,
-			7, 6, 1, 39, 0, 3, 47, 89, 0, 7, 6, 1, 40, 0, 3, 97, 0, 7, 6, 1, 41, 0, 3, 91, 0, 7, 6, 1, 42, 0,
-			3, 91, 97, 0, 7, 6, 1, 43, 0, 3, 19, 0, 7, 6, 1, 44, 0, 3, 110, 0, 208, 185, 3, 110, 57, 0, 7, 6, 1, 45,
-			0, 3, 19, 0, 7, 6, 1, 46, 0, 3, 36, 0, 7, 6, 1, 47, 0, 3, 57, 116, 0, 7, 6, 1, 48, 0, 3, 57, 35, 0,
-			7, 6, 1, 50, 0, 3, 57, 39, 0, 7, 6, 1, 120, 0, 3, 96, 0, 7, 6, 210, 163, 0, 3, 68, 0, 7, 6, 210, 175, 0,
-			1, 17, 65, 3, 58, 0, 3, 108, 0, 7, 6, 210, 187, 0, 3, 107, 0, 7, 6, 211, 153, 0, 3, 111, 0, 208, 181, 3, 114, 0,
-			7, 6, 211, 169, 0, 3, 109, 0, 7, 6, 0, 36, 3, 72, 39, 55, 112, 51, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts66 = FileInMemory_createWithData (2121, reinterpret_cast<const char *> (&espeakdata_dicts66_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/tt_dict", 
-			U"tt");
-		Collection_addItem (me.peek(), espeakdata_dicts66.transfer());
-
-		static unsigned char espeakdata_dicts67_data[3431] = {
-			0, 4, 0, 0, 202, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 4, 16, 20, 10, 113, 91, 35, 51, 113, 6, 113, 35, 10,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 51, 57, 122, 50, 47, 118, 55,
-			6, 112, 89, 0, 12, 3, 95, 50, 49, 113, 49, 49, 6, 112, 89, 0, 0, 12, 3, 95, 51, 56, 35, 51, 47, 6, 112, 89, 0, 10,
-			3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11, 3, 95, 50, 51, 47, 114, 6, 112, 89, 0, 0, 11, 3, 95, 50, 50, 71, 118, 6,
-			112, 89, 0, 0, 13, 3, 95, 50, 53, 48, 35, 80, 80, 6, 112, 89, 0, 0, 12, 3, 95, 50, 52, 80, 135, 71, 6, 112, 89, 0,
-			0, 14, 3, 95, 50, 55, 89, 35, 47, 12, 118, 6, 112, 89, 0, 0, 13, 3, 95, 50, 54, 144, 35, 71, 71, 6, 112, 89, 0, 0,
-			12, 3, 95, 51, 49, 37, 49, 47, 6, 112, 89, 0, 0, 10, 3, 95, 51, 48, 47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 51, 47,
-			134, 68, 47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 50, 71, 35, 47, 12, 6, 112, 89, 0, 0, 13, 3, 95, 51, 53, 48, 134, 68,
-			47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 52, 80, 135, 68, 47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 55, 89, 134, 68, 47, 6,
-			112, 89, 0, 0, 13, 3, 95, 51, 54, 144, 35, 47, 12, 6, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 13, 3, 95, 55, 57, 122, 50, 50, 118, 89, 6, 112, 0, 12, 3, 95, 54, 49, 6, 113, 49, 89, 35, 138, 0, 0,
-			15, 3, 95, 55, 56, 35, 138, 108, 35, 47, 12, 6, 35, 51, 0, 10, 3, 95, 54, 48, 89, 6, 118, 138, 0, 0, 9, 3, 95, 48,
-			67, 89, 6, 135, 0, 13, 3, 95, 54, 51, 47, 6, 113, 51, 89, 35, 138, 0, 0, 12, 3, 95, 54, 50, 71, 6, 118, 89, 35, 138,
-			0, 0, 13, 3, 95, 54, 53, 48, 6, 134, 68, 89, 35, 138, 0, 0, 12, 3, 95, 54, 52, 80, 6, 135, 89, 35, 138, 0, 0, 13,
-			3, 95, 54, 55, 89, 6, 35, 51, 89, 35, 138, 0, 0, 14, 3, 95, 54, 54, 144, 113, 57, 6, 118, 89, 35, 138, 0, 0, 15, 3,
-			95, 55, 49, 113, 49, 108, 35, 47, 12, 6, 35, 51, 0, 0, 13, 3, 95, 55, 48, 89, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3,
-			95, 55, 51, 47, 113, 108, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 50, 71, 35, 108, 35, 47, 12, 6, 35, 51, 0, 0,
-			15, 3, 95, 55, 53, 48, 35, 144, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 52, 80, 135, 108, 35, 47, 12, 6, 35, 51,
-			0, 0, 15, 3, 95, 55, 55, 89, 35, 138, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 54, 144, 113, 108, 35, 47, 12, 6,
-			35, 51, 0, 0, 12, 3, 95, 49, 57, 6, 122, 50, 50, 112, 89, 0, 0, 13, 3, 95, 49, 56, 35, 138, 6, 118, 51, 35, 108, 0,
-			0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 50, 57, 122, 50, 47, 6, 112, 89, 0, 13, 3, 95, 49, 49, 81, 57, 6, 118, 51, 35,
-			108, 0, 0, 12, 3, 95, 50, 56, 89, 138, 118, 6, 112, 89, 0, 10, 3, 95, 49, 48, 72, 6, 35, 89, 0, 0, 12, 3, 95, 49,
-			51, 47, 6, 114, 51, 35, 108, 0, 0, 12, 3, 95, 49, 50, 71, 6, 118, 51, 35, 108, 0, 0, 14, 3, 95, 49, 53, 48, 6, 35,
-			50, 72, 51, 35, 108, 0, 0, 12, 3, 95, 49, 52, 80, 6, 135, 72, 35, 108, 0, 0, 13, 3, 95, 49, 55, 89, 6, 35, 47, 51,
-			35, 108, 0, 0, 12, 3, 95, 49, 54, 89, 6, 119, 55, 35, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 52, 57,
-			122, 50, 80, 6, 118, 89, 0, 0, 14, 3, 95, 52, 56, 35, 51, 47, 118, 55, 6, 112, 89, 0, 0, 0, 0, 0, 0, 0, 0, 12,
-			3, 95, 53, 57, 122, 50, 89, 6, 35, 138, 0, 14, 3, 95, 52, 49, 113, 49, 47, 118, 55, 6, 112, 89, 0, 0, 13, 3, 95, 53,
-			56, 35, 138, 6, 118, 84, 35, 50, 0, 12, 3, 95, 52, 48, 80, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 51, 47, 114, 68,
-			47, 118, 55, 6, 112, 89, 0, 0, 14, 3, 95, 52, 50, 71, 35, 57, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 53, 48, 134,
-			68, 47, 118, 55, 6, 112, 89, 0, 0, 14, 3, 95, 52, 52, 80, 35, 84, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 55, 89,
-			134, 68, 47, 118, 55, 6, 112, 89, 0, 0, 14, 3, 95, 52, 54, 144, 113, 57, 118, 55, 6, 112, 89, 0, 0, 16, 3, 95, 54, 57,
-			122, 50, 108, 4, 35, 47, 12, 6, 35, 51, 0, 13, 3, 95, 53, 49, 113, 49, 6, 118, 84, 35, 50, 0, 0, 12, 3, 95, 54, 56,
-			6, 35, 51, 89, 35, 138, 0, 12, 3, 95, 53, 48, 48, 35, 80, 6, 118, 89, 0, 0, 13, 3, 95, 53, 51, 47, 6, 113, 51, 48,
-			35, 50, 0, 0, 12, 3, 95, 53, 50, 71, 6, 118, 84, 35, 50, 0, 0, 13, 3, 95, 53, 53, 48, 6, 35, 80, 48, 35, 50, 0,
-			0, 12, 3, 95, 53, 52, 80, 6, 135, 84, 35, 50, 0, 0, 15, 3, 95, 53, 55, 89, 35, 47, 12, 6, 118, 84, 35, 50, 0, 0,
-			13, 3, 95, 53, 54, 144, 6, 35, 48, 48, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 56, 57, 50, 35, 84,
-			118, 89, 6, 112, 0, 0, 12, 3, 95, 56, 56, 35, 138, 118, 89, 6, 112, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 57, 57,
-			50, 113, 50, 57, 6, 118, 50, 84, 114, 0, 12, 3, 95, 56, 49, 113, 49, 118, 89, 6, 112, 0, 0, 14, 3, 95, 57, 56, 35, 138,
-			12, 6, 118, 50, 84, 114, 0, 11, 3, 95, 56, 48, 35, 89, 89, 6, 112, 0, 0, 13, 3, 95, 56, 51, 47, 113, 51, 118, 89, 6,
-			112, 0, 0, 13, 3, 95, 56, 50, 71, 35, 57, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 53, 48, 35, 80, 118, 89, 6, 112, 0,
-			0, 13, 3, 95, 56, 52, 80, 135, 51, 118, 89, 6, 112, 0, 0, 14, 3, 95, 56, 55, 89, 35, 47, 12, 118, 89, 6, 112, 0, 0,
-			13, 3, 95, 56, 54, 144, 113, 57, 118, 89, 6, 112, 0, 0, 14, 3, 95, 57, 49, 113, 49, 57, 6, 118, 50, 84, 114, 0, 0, 12,
-			3, 95, 57, 48, 50, 35, 84, 84, 6, 114, 0, 0, 14, 3, 95, 57, 51, 47, 113, 87, 6, 118, 50, 84, 114, 0, 0, 12, 3, 95,
-			57, 50, 71, 6, 118, 50, 84, 114, 0, 0, 14, 3, 95, 57, 53, 48, 35, 80, 6, 118, 50, 84, 114, 0, 0, 14, 3, 95, 57, 52,
-			80, 135, 51, 6, 118, 50, 84, 114, 0, 0, 15, 3, 95, 57, 55, 89, 35, 47, 12, 6, 118, 50, 84, 114, 0, 0, 14, 3, 95, 57,
-			54, 144, 113, 57, 6, 118, 50, 84, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 239, 174, 168, 144, 119, 47, 112, 15, 108, 114, 0, 0, 12, 4, 95, 48, 77, 52, 6,
-			35, 51, 35, 71, 0, 0, 0, 11, 4, 95, 48, 77, 50, 55, 6, 118, 146, 0, 0, 13, 4, 95, 48, 77, 51, 49, 35, 51, 6, 119,
-			51, 0, 0, 0, 13, 4, 95, 48, 77, 49, 108, 35, 88, 6, 118, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 17, 70, 40, 243, 129, 80, 128, 78, 75, 6, 121, 50, 35, 138, 35, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 2, 95,
-			51, 47, 6, 112, 50, 0, 0, 8, 2, 95, 50, 6, 72, 119, 0, 0, 8, 2, 95, 49, 6, 114, 49, 0, 0, 11, 2, 95, 48, 89,
-			6, 113, 83, 35, 51, 0, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 8, 2, 95, 54, 144, 6, 134, 0, 0, 10, 2, 95, 53,
-			48, 6, 118, 68, 80, 0, 0, 9, 2, 95, 52, 80, 6, 118, 51, 0, 0, 0, 0, 8, 2, 95, 57, 50, 6, 135, 0, 0, 8, 2,
-			95, 56, 6, 118, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 2,
-			217, 134, 50, 123, 50, 0, 0, 8, 2, 217, 133, 65, 112, 65, 0, 0, 8, 2, 217, 132, 55, 118, 65, 0, 0, 0, 8, 2, 217, 130,
-			104, 118, 83, 0, 0, 7, 2, 217, 129, 83, 114, 0, 0, 0, 8, 2, 217, 143, 48, 114, 91, 0, 0, 10, 2, 217, 142, 88, 13, 71,
-			13, 51, 0, 7, 2, 218, 134, 80, 114, 0, 0, 0, 0, 0, 0, 0, 8, 2, 217, 136, 84, 118, 121, 0, 0, 0, 0, 0, 0, 0,
-			0, 7, 2, 219, 129, 108, 114, 0, 0, 8, 2, 217, 144, 88, 114, 51, 0, 8, 2, 218, 136, 141, 118, 55, 0, 0, 9, 2, 216, 167,
-			35, 55, 113, 83, 0, 0, 11, 2, 216, 166, 107, 6, 35, 65, 88, 35, 0, 0, 0, 12, 2, 219, 140, 144, 119, 140, 112, 15, 57, 114,
-			0, 0, 0, 0, 11, 2, 216, 161, 108, 35, 65, 88, 35, 108, 0, 7, 2, 218, 145, 70, 114, 0, 0, 0, 8, 2, 216, 175, 72, 118,
-			55, 0, 0, 7, 2, 216, 174, 101, 114, 0, 0, 12, 2, 216, 173, 71, 35, 70, 112, 15, 108, 114, 0, 0, 8, 2, 216, 172, 79, 112,
-			65, 0, 0, 7, 2, 216, 171, 89, 114, 0, 0, 12, 2, 219, 146, 71, 35, 70, 112, 15, 57, 114, 0, 7, 2, 216, 170, 47, 114, 0,
-			0, 0, 7, 2, 218, 152, 90, 114, 0, 7, 2, 216, 168, 71, 114, 0, 0, 8, 2, 216, 183, 47, 121, 114, 0, 0, 9, 2, 216, 182,
-			88, 122, 118, 72, 0, 0, 9, 2, 216, 181, 89, 122, 118, 72, 0, 0, 8, 2, 216, 180, 91, 112, 50, 0, 0, 8, 2, 216, 179, 89,
-			112, 50, 0, 0, 7, 2, 216, 178, 88, 114, 0, 0, 7, 2, 216, 177, 51, 114, 0, 0, 8, 2, 216, 176, 88, 118, 55, 0, 0, 8,
-			2, 218, 175, 81, 118, 83, 0, 0, 0, 0, 0, 0, 8, 2, 216, 186, 100, 134, 50, 0, 0, 8, 2, 218, 169, 49, 118, 83, 0, 7,
-			2, 216, 185, 134, 50, 0, 0, 8, 2, 216, 184, 88, 121, 114, 0, 0, 0, 7, 2, 217, 190, 48, 114, 0, 0, 0, 0, 0, 0, 7,
-			2, 217, 185, 140, 114, 0, 0, 0, 0, 16, 2, 218, 190, 72, 121, 15, 80, 35, 91, 65, 112, 15, 108, 114, 0, 0, 0, 0, 0, 10,
-			2, 218, 186, 147, 122, 50, 50, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 6, 20, 96, 6, 0, 0, 48, 0, 0, 0, 97, 6, 0, 0, 49, 0, 0, 0, 98, 6, 0, 0, 50, 0, 0, 0, 99, 6,
-			0, 0, 51, 0, 0, 0, 100, 6, 0, 0, 52, 0, 0, 0, 101, 6, 0, 0, 53, 0, 0, 0, 102, 6, 0, 0, 54, 0, 0, 0,
-			103, 6, 0, 0, 55, 0, 0, 0, 104, 6, 0, 0, 56, 0, 0, 0, 105, 6, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 6, 18,
-			66, 217, 142, 0, 217, 144, 0, 217, 143, 0, 217, 136, 0, 219, 140, 0, 216, 185, 0, 216, 167, 0, 7, 6, 1, 34, 0, 3, 0, 7,
-			6, 1, 35, 0, 3, 118, 0, 7, 6, 1, 36, 0, 3, 0, 7, 6, 1, 37, 0, 3, 135, 0, 7, 6, 1, 39, 0, 3, 0, 7,
-			6, 1, 40, 0, 8, 2, 18, 66, 3, 0, 8, 3, 35, 0, 219, 140, 8, 3, 112, 0, 3, 118, 0, 217, 136, 8, 3, 123, 0, 7,
-			6, 1, 41, 0, 3, 71, 0, 218, 190, 3, 137, 0, 7, 6, 1, 43, 0, 3, 47, 0, 218, 190, 3, 138, 0, 7, 6, 1, 44, 0,
-			3, 89, 0, 7, 6, 1, 45, 0, 3, 79, 0, 218, 190, 3, 145, 0, 7, 6, 1, 46, 0, 3, 108, 0, 7, 6, 1, 47, 0, 3,
-			101, 0, 7, 6, 1, 48, 0, 3, 72, 0, 218, 190, 3, 139, 0, 7, 6, 1, 49, 0, 3, 86, 0, 7, 6, 1, 50, 0, 3, 51,
-			0, 7, 6, 1, 51, 0, 3, 88, 0, 7, 6, 1, 52, 0, 3, 89, 0, 7, 6, 1, 53, 0, 3, 91, 0, 7, 6, 1, 54, 0,
-			3, 93, 0, 7, 6, 1, 55, 0, 3, 88, 0, 7, 6, 1, 56, 0, 3, 47, 0, 218, 190, 3, 138, 0, 7, 6, 1, 57, 0, 3,
-			92, 0, 7, 6, 1, 58, 0, 8, 3, 35, 0, 4, 3, 118, 0, 216, 167, 0, 7, 6, 1, 59, 0, 3, 100, 0, 7, 6, 1, 66,
-			0, 3, 83, 0, 7, 6, 1, 67, 0, 3, 104, 0, 7, 6, 1, 69, 0, 3, 55, 0, 7, 6, 1, 70, 0, 3, 65, 0, 7, 6,
-			1, 71, 0, 3, 50, 0, 7, 6, 1, 73, 0, 4, 2, 18, 66, 3, 84, 0, 8, 0, 3, 119, 0, 4, 217, 143, 3, 123, 0, 217,
-			151, 0, 7, 6, 1, 79, 0, 3, 35, 0, 4, 219, 140, 3, 116, 0, 219, 146, 0, 216, 185, 3, 118, 0, 217, 136, 3, 121, 0, 7,
-			6, 1, 80, 0, 216, 185, 3, 121, 0, 3, 122, 0, 217, 136, 3, 123, 0, 7, 6, 1, 81, 0, 4, 216, 185, 3, 112, 0, 219, 140,
-			0, 3, 113, 0, 7, 6, 1, 122, 0, 3, 140, 0, 218, 190, 3, 142, 0, 7, 6, 1, 127, 0, 3, 48, 0, 218, 190, 3, 136, 0,
-			7, 6, 218, 134, 0, 3, 80, 0, 218, 190, 3, 144, 0, 7, 6, 218, 136, 0, 3, 141, 0, 218, 190, 3, 143, 0, 7, 6, 218, 145,
-			0, 3, 70, 0, 7, 6, 218, 152, 0, 3, 90, 0, 7, 6, 218, 169, 0, 3, 49, 0, 218, 190, 3, 146, 0, 7, 6, 218, 175, 0,
-			3, 81, 0, 218, 190, 3, 147, 0, 7, 6, 218, 186, 0, 3, 50, 0, 7, 6, 218, 190, 0, 3, 108, 0, 7, 6, 219, 129, 0, 2,
-			32, 3, 35, 0, 3, 108, 0, 7, 6, 219, 140, 0, 4, 2, 18, 66, 3, 57, 0, 8, 0, 2, 32, 3, 112, 0, 3, 114, 0, 7,
-			6, 219, 146, 0, 3, 114, 0, 7, 6, 224, 164, 0, 3, 21, 104, 105, 0, 7, 6, 224, 165, 0, 3, 21, 104, 105, 0, 7, 6, 0,
-			36, 3, 72, 119, 55, 13, 51, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts67 = FileInMemory_createWithData (3430, reinterpret_cast<const char *> (&espeakdata_dicts67_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/ur_dict", 
+		static unsigned char espeakdata_dicts66_data[18016] = {
+			0, 4, 0, 0, 200, 47, 0, 0, 0, 0, 25, 12, 216, 168, 216, 177, 217, 130, 216, 177, 216, 167, 216, 177, 71, 4, 35, 51, 104, 35,
+			51, 6, 118, 51, 0, 32, 16, 218, 136, 216, 167, 216, 166, 216, 177, 219, 140, 218, 169, 217, 185, 216, 177, 140, 4, 118, 57, 113, 51, 4,
+			114, 49, 139, 6, 35, 51, 0, 0, 22, 10, 216, 173, 216, 177, 216, 167, 216, 179, 216, 170, 108, 4, 113, 51, 118, 89, 6, 35, 47, 0,
+			0, 0, 21, 10, 216, 170, 217, 134, 216, 167, 216, 179, 216, 168, 47, 35, 50, 6, 118, 89, 122, 71, 0, 0, 0, 0, 0, 0, 0, 0,
+			21, 10, 216, 167, 217, 134, 219, 129, 219, 140, 218, 186, 4, 122, 50, 108, 6, 114, 50, 0, 72, 0, 0, 19, 8, 216, 175, 216, 177, 216,
+			172, 217, 134, 72, 4, 35, 51, 79, 6, 35, 50, 0, 0, 21, 12, 216, 167, 217, 185, 218, 190, 216, 167, 219, 140, 216, 167, 122, 141, 6,
+			118, 57, 118, 0, 0, 17, 8, 216, 170, 216, 185, 216, 183, 217, 132, 47, 6, 118, 47, 122, 55, 0, 17, 8, 216, 173, 216, 167, 216, 181,
+			217, 132, 108, 6, 118, 93, 113, 55, 0, 0, 19, 10, 216, 172, 216, 167, 217, 136, 219, 140, 216, 175, 79, 118, 84, 6, 114, 72, 0, 0,
+			0, 0, 17, 4, 95, 100, 112, 116, 10, 113, 91, 35, 51, 113, 6, 113, 35, 10, 0, 0, 16, 8, 217, 136, 216, 167, 217, 130, 216, 185,
+			84, 6, 118, 104, 114, 0, 0, 15, 6, 218, 169, 216, 180, 216, 180, 49, 6, 35, 91, 113, 91, 0, 0, 0, 0, 27, 8, 217, 133, 217,
+			136, 217, 130, 216, 185, 65, 6, 121, 104, 114, 15, 48, 6, 35, 51, 0, 81, 217, 190, 216, 177, 32, 15, 8, 217, 185, 218, 190, 219, 140,
+			218, 169, 141, 6, 112, 49, 0, 0, 0, 14, 6, 216, 162, 217, 136, 216, 177, 118, 84, 6, 35, 51, 0, 0, 0, 0, 0, 0, 21, 10,
+			217, 134, 218, 175, 216, 177, 216, 167, 217, 134, 50, 4, 113, 81, 51, 6, 118, 50, 0, 0, 18, 8, 216, 168, 216, 183, 217, 136, 216, 177,
+			71, 6, 35, 47, 119, 51, 0, 66, 0, 0, 0, 9, 134, 219, 129, 219, 140, 218, 186, 72, 0, 17, 8, 216, 174, 216, 183, 216, 177, 219,
+			129, 101, 6, 35, 47, 51, 35, 0, 0, 17, 8, 216, 175, 217, 134, 217, 136, 218, 186, 72, 113, 50, 6, 119, 50, 0, 0, 0, 16, 8,
+			216, 175, 217, 136, 216, 177, 219, 140, 72, 6, 123, 51, 37, 0, 17, 8, 216, 173, 216, 179, 216, 167, 216, 168, 108, 113, 89, 6, 118, 71,
+			0, 0, 0, 0, 0, 22, 10, 217, 136, 216, 177, 216, 167, 216, 171, 216, 170, 84, 4, 113, 51, 118, 89, 6, 35, 47, 0, 0, 0, 0,
+			0, 21, 10, 217, 133, 217, 132, 216, 170, 216, 167, 217, 134, 65, 4, 122, 55, 47, 6, 118, 50, 0, 20, 8, 217, 133, 217, 129, 216, 181,
+			217, 132, 65, 4, 122, 83, 35, 93, 6, 35, 55, 0, 0, 0, 23, 10, 217, 133, 217, 134, 217, 129, 216, 181, 217, 132, 65, 4, 122, 50,
+			83, 6, 35, 93, 113, 55, 0, 0, 23, 10, 217, 133, 217, 134, 217, 130, 216, 179, 217, 133, 65, 4, 122, 50, 104, 6, 35, 89, 113, 65,
+			0, 0, 14, 6, 216, 179, 216, 177, 219, 146, 89, 6, 113, 51, 114, 0, 15, 6, 216, 172, 216, 179, 219, 146, 79, 6, 113, 89, 114, 0,
+			72, 0, 20, 8, 217, 133, 216, 180, 216, 177, 217, 129, 65, 4, 122, 91, 35, 51, 6, 35, 83, 0, 0, 20, 10, 216, 167, 216, 179, 217,
+			132, 217, 136, 216, 168, 4, 122, 89, 55, 6, 123, 71, 0, 0, 0, 18, 8, 217, 129, 216, 183, 216, 177, 219, 140, 83, 6, 113, 47, 51,
+			4, 112, 0, 0, 0, 0, 14, 6, 217, 132, 216, 179, 217, 185, 55, 6, 113, 89, 139, 0, 23, 10, 217, 133, 216, 170, 217, 136, 217, 130,
+			216, 185, 65, 4, 122, 47, 35, 84, 6, 35, 104, 114, 0, 0, 0, 24, 12, 216, 167, 217, 134, 216, 173, 216, 177, 216, 167, 217, 129, 4,
+			113, 50, 108, 113, 51, 6, 118, 83, 0, 16, 8, 218, 169, 217, 136, 216, 177, 217, 185, 49, 6, 119, 51, 139, 0, 0, 20, 10, 216, 167,
+			217, 130, 216, 168, 216, 167, 217, 132, 4, 113, 104, 71, 6, 118, 55, 0, 0, 23, 10, 217, 133, 217, 134, 216, 170, 216, 180, 216, 177, 65,
+			4, 122, 50, 47, 6, 35, 91, 113, 51, 0, 0, 16, 8, 216, 168, 218, 190, 217, 185, 217, 136, 137, 6, 122, 139, 119, 0, 0, 16, 8,
+			216, 167, 216, 170, 216, 167, 216, 177, 122, 47, 6, 118, 51, 0, 0, 0, 0, 0, 23, 12, 216, 168, 218, 190, 216, 177, 217, 190, 217, 136,
+			216, 177, 137, 4, 35, 51, 48, 6, 123, 51, 0, 0, 22, 10, 216, 168, 216, 177, 216, 179, 216, 177, 217, 144, 71, 4, 35, 51, 89, 6,
+			35, 51, 114, 0, 17, 8, 217, 134, 219, 129, 219, 140, 218, 186, 50, 35, 108, 6, 112, 50, 0, 0, 24, 10, 217, 133, 216, 170, 216, 173,
+			216, 177, 218, 169, 65, 4, 122, 47, 35, 108, 6, 35, 51, 113, 49, 0, 0, 0, 0, 24, 12, 216, 168, 216, 167, 216, 178, 218, 175, 216,
+			180, 216, 170, 71, 4, 118, 88, 81, 6, 35, 91, 47, 0, 0, 0, 0, 0, 24, 12, 216, 172, 217, 133, 216, 185, 216, 177, 216, 167, 216,
+			170, 79, 4, 122, 65, 114, 51, 6, 118, 47, 0, 0, 0, 0, 17, 8, 216, 180, 218, 169, 216, 167, 216, 177, 91, 113, 49, 6, 118, 51,
+			0, 14, 6, 216, 168, 216, 177, 218, 175, 71, 6, 35, 51, 81, 0, 0, 24, 12, 217, 136, 216, 167, 217, 132, 216, 175, 219, 140, 217, 134,
+			84, 4, 118, 55, 113, 72, 6, 114, 50, 0, 17, 8, 216, 170, 216, 185, 219, 140, 217, 134, 47, 6, 118, 57, 122, 50, 0, 0, 21, 10,
+			218, 136, 216, 167, 218, 169, 217, 185, 216, 177, 140, 4, 118, 49, 139, 6, 35, 51, 0, 0, 0, 16, 8, 217, 185, 216, 167, 216, 179, 218,
+			169, 139, 6, 118, 89, 49, 0, 0, 24, 12, 216, 167, 217, 132, 219, 140, 218, 169, 216, 180, 217, 134, 4, 113, 55, 114, 49, 91, 6, 35,
+			50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 8, 218, 175, 216, 176, 216, 167, 216, 177, 81, 122, 86, 6, 118, 51, 0,
+			0, 24, 12, 217, 130, 217, 136, 216, 167, 217, 134, 219, 140, 217, 134, 104, 4, 35, 84, 118, 50, 6, 112, 50, 0, 0, 21, 10, 217, 133,
+			216, 170, 216, 167, 216, 171, 216, 177, 65, 122, 47, 6, 118, 89, 113, 51, 0, 26, 14, 216, 168, 216, 167, 217, 132, 216, 185, 217, 133, 217,
+			136, 217, 133, 71, 4, 113, 55, 122, 65, 6, 123, 65, 0, 20, 10, 216, 167, 216, 184, 219, 129, 216, 167, 216, 177, 4, 113, 92, 108, 6,
+			118, 51, 0, 0, 0, 0, 0, 28, 14, 217, 190, 216, 177, 216, 167, 216, 179, 216, 177, 216, 167, 216, 177, 48, 4, 122, 51, 4, 35, 89,
+			51, 6, 118, 51, 0, 0, 13, 6, 218, 134, 217, 136, 218, 186, 80, 6, 123, 50, 0, 0, 0, 17, 8, 216, 168, 216, 170, 217, 136, 218,
+			186, 71, 122, 47, 6, 119, 50, 0, 0, 0, 17, 8, 216, 173, 216, 181, 217, 136, 217, 132, 108, 122, 93, 6, 123, 55, 0, 0, 0, 21,
+			12, 216, 167, 217, 185, 218, 190, 216, 167, 216, 166, 219, 146, 122, 141, 6, 118, 57, 114, 0, 0, 0, 14, 6, 218, 169, 218, 134, 218, 190,
+			49, 6, 122, 143, 0, 72, 0, 0, 0, 18, 8, 216, 179, 216, 177, 217, 136, 216, 179, 89, 6, 35, 51, 84, 113, 89, 0, 0, 21, 10,
+			217, 190, 216, 177, 219, 129, 219, 140, 216, 178, 48, 4, 35, 51, 108, 6, 114, 88, 0, 0, 0, 16, 8, 216, 170, 216, 185, 219, 140, 218,
+			186, 47, 118, 6, 112, 50, 0, 18, 8, 216, 175, 216, 177, 216, 179, 216, 170, 72, 6, 122, 51, 122, 89, 47, 0, 0, 0, 21, 12, 216,
+			168, 219, 140, 217, 134, 216, 167, 216, 166, 219, 140, 71, 37, 50, 6, 118, 37, 0, 21, 12, 216, 167, 217, 185, 218, 190, 216, 167, 216, 166,
+			219, 140, 122, 141, 6, 118, 57, 112, 0, 21, 12, 216, 175, 218, 169, 218, 190, 216, 167, 216, 166, 219, 140, 72, 113, 145, 6, 118, 37, 0,
+			0, 0, 0, 0, 25, 12, 217, 133, 216, 170, 217, 132, 216, 167, 216, 180, 219, 140, 65, 4, 122, 47, 35, 55, 6, 118, 91, 112, 0, 0,
+			0, 0, 0, 0, 0, 25, 12, 217, 190, 216, 177, 216, 179, 218, 169, 217, 136, 217, 134, 48, 4, 122, 51, 89, 122, 49, 6, 123, 50, 0,
+			0, 0, 0, 0, 19, 8, 217, 129, 216, 183, 216, 177, 216, 170, 83, 4, 113, 47, 51, 6, 35, 47, 0, 0, 0, 0, 0, 0, 0, 21,
+			10, 216, 179, 218, 169, 216, 170, 219, 140, 218, 186, 89, 4, 35, 49, 47, 6, 112, 50, 0, 21, 10, 217, 133, 217, 132, 218, 169, 217, 136,
+			218, 186, 65, 4, 122, 55, 49, 6, 119, 50, 0, 0, 0, 0, 0, 0, 0, 17, 8, 216, 185, 219, 129, 216, 175, 219, 146, 6, 119, 108,
+			72, 4, 114, 0, 0, 23, 10, 217, 133, 216, 173, 216, 170, 216, 177, 217, 133, 65, 4, 122, 108, 47, 35, 51, 6, 35, 65, 0, 14, 6,
+			216, 181, 216, 177, 217, 129, 93, 6, 113, 51, 83, 0, 0, 14, 6, 216, 173, 216, 181, 219, 146, 108, 6, 113, 93, 114, 0, 17, 8, 216,
+			180, 216, 167, 217, 133, 217, 132, 91, 6, 118, 65, 113, 55, 0, 0, 14, 6, 216, 175, 219, 140, 216, 167, 72, 6, 112, 38, 118, 0, 0,
+			0, 12, 6, 217, 134, 217, 136, 216, 185, 50, 6, 119, 0, 23, 10, 216, 168, 216, 177, 216, 183, 216, 177, 217, 129, 71, 4, 35, 51, 47,
+			35, 51, 6, 35, 83, 0, 0, 0, 16, 8, 216, 180, 216, 177, 217, 136, 216, 185, 91, 6, 122, 51, 123, 0, 0, 0, 0, 0, 17, 8,
+			216, 168, 216, 186, 219, 140, 216, 177, 71, 35, 100, 6, 114, 51, 0, 0, 12, 4, 218, 134, 218, 190, 143, 6, 36, 107, 11, 0, 0, 0,
+			0, 16, 8, 216, 185, 219, 129, 216, 175, 219, 129, 6, 119, 108, 72, 35, 0, 0, 0, 15, 6, 216, 173, 216, 181, 219, 129, 108, 6, 113,
+			93, 4, 35, 0, 21, 10, 218, 175, 216, 178, 216, 180, 216, 170, 219, 129, 81, 122, 88, 6, 35, 91, 47, 35, 0, 0, 0, 0, 0, 0,
+			16, 8, 216, 180, 216, 185, 216, 177, 219, 140, 91, 6, 114, 51, 112, 0, 0, 0, 17, 8, 216, 173, 216, 181, 217, 136, 218, 186, 108, 113,
+			93, 6, 119, 50, 0, 0, 0, 15, 8, 219, 129, 217, 136, 216, 166, 219, 140, 108, 6, 123, 112, 0, 18, 10, 219, 129, 217, 136, 216, 166,
+			219, 140, 218, 186, 108, 123, 6, 112, 50, 0, 0, 11, 4, 218, 175, 217, 133, 81, 6, 122, 65, 0, 0, 0, 0, 19, 8, 217, 133, 216,
+			185, 216, 183, 217, 132, 65, 4, 121, 35, 47, 6, 35, 55, 0, 15, 6, 217, 132, 216, 166, 219, 146, 55, 6, 112, 38, 114, 0, 72, 11,
+			4, 216, 175, 217, 132, 72, 6, 113, 55, 0, 0, 0, 15, 8, 219, 129, 217, 136, 216, 166, 219, 146, 108, 6, 123, 114, 0, 11, 4, 216,
+			175, 217, 134, 72, 6, 113, 50, 0, 0, 0, 20, 10, 216, 167, 216, 183, 217, 132, 216, 167, 217, 130, 4, 113, 47, 55, 6, 118, 104, 0,
+			0, 0, 0, 0, 14, 6, 218, 134, 216, 177, 218, 134, 80, 6, 35, 51, 80, 0, 18, 8, 217, 133, 216, 181, 216, 177, 219, 140, 65, 6,
+			113, 93, 51, 4, 112, 0, 0, 0, 21, 10, 217, 133, 216, 173, 217, 129, 217, 136, 216, 184, 65, 4, 114, 108, 83, 6, 123, 92, 0, 0,
+			21, 10, 217, 133, 217, 136, 216, 166, 216, 171, 216, 177, 65, 4, 119, 35, 89, 6, 35, 51, 0, 27, 14, 216, 167, 216, 179, 216, 170, 216,
+			173, 218, 169, 216, 167, 217, 133, 4, 113, 89, 47, 116, 108, 49, 6, 118, 65, 0, 0, 0, 0, 0, 22, 10, 216, 179, 217, 134, 219, 140,
+			218, 134, 216, 177, 89, 4, 35, 50, 112, 80, 6, 35, 51, 0, 27, 14, 216, 168, 216, 167, 217, 132, 216, 174, 216, 181, 217, 136, 216, 181,
+			71, 4, 113, 55, 101, 122, 93, 6, 123, 93, 0, 0, 0, 29, 16, 216, 176, 217, 136, 216, 167, 217, 132, 217, 129, 217, 130, 216, 167, 216,
+			177, 86, 4, 122, 55, 83, 113, 104, 6, 118, 51, 0, 18, 8, 216, 170, 217, 136, 217, 130, 216, 185, 47, 35, 84, 6, 35, 104, 119, 0,
+			0, 0, 0, 0, 0, 14, 6, 216, 177, 217, 136, 219, 140, 51, 6, 35, 84, 112, 0, 18, 8, 216, 185, 216, 180, 216, 177, 216, 170, 4,
+			113, 91, 51, 6, 35, 47, 0, 0, 0, 19, 10, 216, 170, 219, 140, 217, 134, 217, 136, 218, 186, 47, 112, 50, 6, 119, 50, 0, 0, 0,
+			0, 0, 0, 0, 25, 14, 216, 162, 216, 177, 218, 169, 216, 167, 216, 166, 219, 140, 217, 136, 4, 118, 51, 49, 6, 118, 57, 84, 0, 0,
+			34, 8, 218, 169, 217, 136, 218, 145, 216, 167, 49, 6, 123, 70, 15, 49, 4, 35, 51, 49, 6, 35, 139, 0, 81, 218, 169, 216, 177, 218,
+			169, 217, 185, 32, 0, 0, 0, 17, 8, 216, 173, 217, 132, 219, 140, 219, 146, 108, 6, 122, 55, 57, 114, 0, 0, 0, 0, 0, 0, 0,
+			28, 14, 217, 133, 216, 185, 216, 170, 217, 130, 216, 175, 219, 140, 217, 134, 65, 4, 121, 47, 35, 104, 113, 72, 6, 112, 50, 0, 0, 0,
+			0, 19, 10, 216, 167, 216, 170, 217, 136, 216, 167, 216, 177, 113, 47, 84, 6, 118, 51, 0, 14, 6, 217, 133, 216, 181, 216, 177, 65, 6,
+			113, 93, 51, 0, 0, 24, 12, 217, 134, 218, 175, 216, 177, 216, 167, 217, 134, 219, 140, 50, 4, 113, 81, 51, 6, 118, 50, 112, 0, 0,
+			0, 0, 19, 8, 216, 172, 216, 179, 217, 185, 216, 179, 79, 6, 35, 89, 139, 4, 113, 89, 0, 0, 0, 17, 8, 217, 129, 216, 170, 217,
+			134, 219, 129, 83, 6, 113, 47, 50, 35, 0, 10, 4, 217, 136, 219, 129, 58, 119, 0, 72, 0, 0, 0, 0, 16, 8, 216, 172, 217, 133,
+			216, 185, 219, 129, 79, 6, 122, 65, 118, 0, 0, 0, 24, 12, 216, 167, 216, 177, 216, 175, 218, 175, 216, 177, 216, 175, 4, 113, 51, 72,
+			81, 6, 113, 51, 72, 0, 0, 0, 0, 0, 0, 0, 24, 6, 219, 129, 217, 136, 216, 167, 108, 6, 123, 35, 15, 25, 118, 0, 81, 216,
+			170, 218, 190, 216, 167, 32, 0, 0, 0, 0, 20, 8, 217, 133, 216, 177, 219, 140, 217, 133, 65, 4, 35, 51, 112, 38, 6, 35, 65, 0,
+			0, 19, 8, 218, 175, 217, 132, 216, 180, 217, 134, 81, 4, 122, 55, 91, 6, 35, 50, 0, 17, 8, 217, 130, 216, 181, 217, 136, 218, 186,
+			104, 113, 93, 6, 119, 50, 0, 17, 8, 216, 179, 217, 133, 219, 140, 216, 170, 89, 35, 65, 6, 114, 47, 0, 0, 14, 6, 216, 174, 216,
+			170, 217, 133, 101, 6, 35, 47, 65, 0, 0, 13, 6, 216, 170, 219, 140, 217, 134, 47, 6, 112, 50, 0, 0, 0, 16, 8, 216, 179, 217,
+			190, 219, 140, 217, 134, 89, 48, 6, 114, 50, 0, 16, 8, 216, 172, 217, 133, 216, 185, 219, 146, 79, 6, 122, 65, 114, 0, 18, 8, 216,
+			180, 219, 129, 216, 177, 216, 170, 91, 122, 108, 51, 6, 35, 47, 0, 0, 0, 25, 12, 216, 175, 217, 132, 217, 129, 216, 177, 219, 140, 216,
+			168, 72, 4, 113, 55, 83, 35, 51, 6, 114, 71, 0, 0, 0, 0, 21, 10, 217, 133, 216, 179, 217, 133, 216, 167, 216, 177, 65, 4, 113,
+			89, 65, 6, 118, 51, 0, 15, 6, 216, 180, 219, 129, 216, 177, 91, 6, 116, 108, 116, 51, 0, 0, 18, 8, 216, 180, 218, 169, 217, 134,
+			219, 140, 91, 6, 113, 49, 50, 4, 112, 0, 0, 24, 6, 217, 129, 219, 140, 216, 179, 83, 6, 114, 89, 15, 71, 6, 122, 49, 0, 81,
+			216, 168, 218, 169, 32, 0, 0, 0, 0, 17, 8, 217, 136, 216, 172, 217, 136, 219, 129, 84, 6, 122, 79, 123, 108, 0, 18, 8, 216, 174,
+			217, 129, 219, 140, 219, 129, 101, 122, 83, 6, 112, 38, 35, 0, 0, 0, 22, 10, 217, 133, 216, 170, 217, 129, 217, 130, 219, 129, 65, 122,
+			47, 6, 35, 83, 113, 104, 35, 0, 0, 23, 10, 216, 167, 217, 136, 217, 132, 219, 140, 216, 170, 4, 35, 84, 35, 55, 112, 38, 6, 35,
+			47, 0, 0, 0, 26, 12, 216, 172, 216, 167, 216, 177, 216, 173, 219, 140, 216, 170, 79, 4, 118, 51, 113, 108, 112, 38, 6, 35, 47, 0,
+			0, 0, 0, 0, 26, 12, 216, 179, 216, 177, 218, 175, 216, 178, 216, 180, 216, 170, 89, 4, 35, 51, 81, 122, 88, 6, 35, 91, 47, 0,
+			0, 0, 21, 10, 216, 167, 217, 134, 218, 136, 219, 140, 216, 167, 4, 113, 50, 140, 6, 112, 38, 118, 0, 0, 0, 0, 0, 13, 6, 216,
+			178, 217, 136, 216, 175, 88, 6, 123, 72, 0, 0, 0, 14, 6, 217, 132, 216, 183, 217, 129, 55, 6, 122, 47, 83, 0, 0, 0, 25, 12,
+			216, 168, 216, 177, 216, 174, 217, 132, 216, 167, 217, 129, 71, 4, 35, 51, 101, 113, 55, 6, 118, 83, 0, 25, 12, 217, 190, 216, 177, 216,
+			173, 216, 172, 217, 136, 217, 133, 48, 4, 122, 51, 108, 122, 79, 6, 123, 65, 0, 0, 17, 8, 217, 130, 216, 168, 217, 136, 217, 132, 104,
+			122, 71, 6, 123, 55, 0, 20, 8, 217, 133, 219, 129, 216, 176, 216, 168, 65, 4, 122, 108, 35, 86, 6, 35, 71, 0, 0, 0, 24, 10,
+			217, 133, 216, 170, 216, 173, 217, 133, 217, 132, 65, 4, 122, 47, 35, 108, 6, 35, 65, 113, 55, 0, 0, 0, 19, 8, 217, 136, 216, 177,
+			216, 178, 216, 180, 84, 6, 35, 51, 88, 4, 113, 91, 0, 26, 12, 217, 133, 216, 170, 216, 168, 216, 167, 216, 175, 217, 132, 65, 4, 122,
+			47, 35, 71, 6, 118, 72, 113, 55, 0, 20, 10, 216, 179, 217, 134, 216, 166, 219, 140, 219, 146, 89, 122, 50, 6, 112, 38, 114, 0, 0,
+			0, 26, 14, 216, 167, 216, 179, 216, 170, 216, 185, 217, 133, 216, 167, 217, 132, 4, 113, 89, 47, 114, 65, 6, 118, 55, 0, 0, 17, 8,
+			217, 134, 216, 167, 216, 180, 216, 177, 50, 6, 118, 91, 113, 51, 0, 21, 10, 217, 133, 216, 173, 216, 179, 217, 136, 216, 179, 65, 4, 116,
+			108, 89, 6, 123, 89, 0, 0, 0, 17, 8, 216, 174, 216, 183, 217, 136, 216, 183, 101, 122, 47, 6, 123, 47, 0, 31, 8, 216, 162, 216,
+			166, 219, 140, 216, 179, 118, 6, 112, 89, 15, 49, 51, 6, 112, 65, 0, 81, 218, 169, 216, 177, 219, 140, 217, 133, 32, 0, 0, 0, 13,
+			6, 216, 168, 219, 140, 218, 186, 71, 6, 112, 50, 0, 0, 0, 0, 24, 12, 218, 169, 219, 140, 217, 136, 217, 134, 218, 169, 219, 129, 49,
+			57, 4, 123, 50, 49, 6, 116, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 8, 216, 175, 217, 134, 219, 140, 216, 167, 72,
+			122, 50, 6, 112, 38, 118, 0, 0, 0, 0, 0, 0, 16, 8, 216, 170, 218, 190, 219, 140, 218, 186, 25, 6, 112, 50, 0, 72, 0, 0,
+			14, 6, 216, 167, 216, 179, 219, 146, 6, 113, 89, 114, 0, 72, 0, 0, 13, 6, 216, 167, 216, 179, 219, 140, 6, 113, 89, 112, 0, 0,
+			18, 8, 217, 190, 216, 177, 217, 136, 216, 177, 48, 6, 35, 51, 84, 35, 51, 0, 0, 20, 10, 216, 179, 217, 134, 216, 179, 216, 167, 217,
+			134, 89, 122, 50, 89, 6, 118, 50, 0, 22, 10, 216, 173, 217, 129, 216, 167, 216, 184, 216, 170, 108, 4, 113, 83, 118, 92, 6, 35, 47,
+			0, 0, 14, 6, 216, 167, 216, 174, 216, 177, 6, 118, 101, 113, 51, 0, 0, 23, 10, 217, 190, 216, 177, 218, 169, 216, 180, 216, 180, 48,
+			4, 122, 51, 49, 6, 35, 91, 113, 91, 0, 0, 0, 0, 0, 0, 11, 4, 216, 177, 219, 129, 51, 6, 116, 108, 0, 0, 0, 28, 14,
+			216, 167, 217, 134, 217, 185, 216, 177, 217, 134, 219, 140, 217, 185, 4, 113, 50, 139, 4, 35, 51, 50, 6, 114, 139, 0, 15, 6, 217, 130,
+			216, 181, 219, 129, 104, 6, 113, 93, 4, 35, 0, 0, 0, 23, 10, 217, 133, 216, 179, 216, 170, 216, 177, 216, 175, 65, 4, 122, 89, 47,
+			35, 51, 6, 35, 72, 0, 0, 0, 0, 24, 12, 219, 129, 217, 136, 216, 167, 216, 166, 219, 140, 218, 186, 108, 4, 35, 84, 118, 57, 6,
+			114, 50, 0, 0, 0, 21, 10, 216, 167, 217, 134, 219, 129, 217, 136, 218, 186, 4, 122, 50, 108, 6, 119, 50, 0, 72, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 14, 6, 217, 130, 216, 181, 219, 146, 104, 6, 113, 93, 114, 0, 0, 0, 17, 8, 216, 179, 218, 169,
+			217, 136, 217, 134, 89, 122, 49, 6, 123, 50, 0, 18, 8, 216, 180, 218, 169, 216, 179, 216, 170, 91, 113, 49, 6, 35, 89, 47, 0, 0,
+			24, 12, 216, 167, 219, 129, 216, 170, 217, 133, 216, 167, 217, 133, 6, 116, 108, 47, 113, 65, 4, 118, 65, 0, 14, 6, 216, 162, 217, 129,
+			216, 179, 6, 118, 83, 113, 89, 0, 0, 26, 12, 217, 133, 216, 170, 216, 173, 216, 167, 216, 177, 216, 168, 65, 4, 122, 47, 35, 108, 6,
+			118, 51, 113, 71, 0, 22, 10, 216, 172, 217, 134, 218, 190, 219, 140, 218, 186, 79, 4, 113, 50, 108, 6, 114, 50, 0, 72, 0, 23, 12,
+			216, 167, 217, 134, 216, 185, 217, 130, 216, 167, 216, 175, 4, 113, 50, 113, 104, 6, 118, 72, 0, 0, 0, 0, 0, 21, 10, 216, 167, 216,
+			172, 216, 167, 218, 175, 216, 177, 4, 122, 79, 118, 81, 6, 35, 51, 0, 0, 0, 18, 8, 216, 170, 217, 136, 216, 172, 219, 129, 47, 35,
+			84, 6, 35, 79, 119, 0, 0, 0, 0, 14, 3, 95, 51, 57, 122, 50, 47, 118, 55, 6, 112, 89, 0, 12, 3, 95, 50, 49, 113, 49,
+			49, 6, 112, 89, 0, 0, 12, 3, 95, 51, 56, 35, 51, 47, 6, 112, 89, 0, 10, 3, 95, 50, 48, 71, 6, 112, 89, 0, 0, 11,
+			3, 95, 50, 51, 47, 114, 6, 112, 89, 0, 0, 11, 3, 95, 50, 50, 71, 118, 6, 112, 89, 0, 0, 13, 3, 95, 50, 53, 48, 35,
+			80, 80, 6, 112, 89, 0, 0, 14, 6, 217, 134, 219, 140, 216, 167, 50, 6, 35, 57, 118, 0, 12, 3, 95, 50, 52, 80, 135, 71, 6,
+			112, 89, 0, 0, 24, 12, 216, 167, 216, 173, 216, 170, 216, 172, 216, 167, 216, 172, 6, 114, 108, 47, 113, 79, 4, 118, 79, 0, 14, 3,
+			95, 50, 55, 89, 35, 47, 12, 118, 6, 112, 89, 0, 0, 13, 3, 95, 50, 54, 143, 35, 71, 71, 6, 112, 89, 0, 0, 13, 3, 95,
+			51, 49, 37, 49, 109, 47, 6, 112, 89, 0, 0, 10, 3, 95, 51, 48, 47, 6, 112, 89, 0, 0, 17, 8, 216, 167, 217, 185, 217, 132,
+			219, 140, 6, 113, 139, 55, 4, 112, 0, 14, 3, 95, 51, 51, 47, 6, 134, 68, 47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 50, 71,
+			35, 47, 12, 6, 112, 89, 0, 0, 22, 10, 217, 133, 216, 185, 216, 183, 217, 132, 219, 140, 65, 4, 121, 35, 47, 6, 35, 55, 112, 0,
+			14, 6, 217, 132, 217, 129, 216, 184, 55, 6, 35, 83, 92, 0, 13, 3, 95, 51, 53, 48, 134, 68, 47, 6, 112, 89, 0, 0, 13, 3,
+			95, 51, 52, 80, 135, 68, 47, 6, 112, 89, 0, 0, 13, 3, 95, 51, 55, 89, 134, 68, 47, 6, 112, 89, 0, 0, 22, 10, 217, 133,
+			217, 134, 216, 179, 217, 132, 218, 169, 65, 122, 50, 89, 6, 35, 55, 113, 49, 0, 13, 3, 95, 51, 54, 143, 35, 47, 12, 6, 112, 89,
+			0, 0, 15, 6, 216, 167, 217, 136, 217, 132, 6, 35, 84, 84, 35, 55, 0, 0, 0, 0, 0, 0, 21, 10, 217, 133, 216, 173, 216, 175,
+			217, 136, 216, 175, 65, 4, 116, 108, 72, 6, 123, 72, 0, 24, 12, 216, 179, 217, 185, 219, 140, 218, 136, 219, 140, 217, 133, 89, 139, 114,
+			140, 112, 38, 6, 35, 65, 0, 0, 20, 10, 216, 177, 219, 140, 216, 167, 216, 179, 216, 170, 51, 57, 118, 89, 6, 35, 47, 0, 0, 13,
+			6, 217, 133, 219, 140, 216, 177, 65, 6, 112, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 3, 95, 55, 57, 122, 50, 50, 118,
+			89, 6, 112, 0, 12, 3, 95, 54, 49, 6, 113, 49, 89, 35, 25, 0, 0, 20, 8, 217, 133, 216, 179, 217, 132, 216, 173, 65, 4, 122,
+			89, 35, 55, 6, 35, 108, 0, 15, 3, 95, 55, 56, 35, 25, 108, 35, 47, 12, 6, 35, 51, 0, 10, 3, 95, 54, 48, 89, 6, 118,
+			25, 0, 0, 9, 3, 95, 48, 67, 89, 6, 135, 0, 13, 3, 95, 54, 51, 47, 6, 113, 51, 89, 35, 25, 0, 0, 22, 10, 217, 133,
+			217, 134, 217, 130, 216, 183, 216, 185, 65, 4, 122, 50, 104, 6, 35, 47, 118, 0, 22, 10, 216, 167, 218, 175, 216, 177, 218, 134, 219, 129,
+			4, 35, 81, 35, 51, 80, 6, 114, 108, 0, 12, 3, 95, 54, 50, 71, 6, 118, 89, 35, 25, 0, 0, 13, 3, 95, 54, 53, 48, 6,
+			134, 68, 89, 35, 25, 0, 0, 12, 3, 95, 54, 52, 80, 6, 135, 89, 35, 25, 0, 0, 13, 3, 95, 54, 55, 89, 6, 35, 51, 89,
+			35, 25, 0, 0, 14, 3, 95, 54, 54, 143, 113, 57, 6, 118, 89, 35, 25, 0, 0, 22, 10, 217, 133, 217, 132, 216, 170, 217, 136, 219,
+			140, 65, 4, 122, 55, 47, 6, 35, 84, 112, 0, 15, 3, 95, 55, 49, 113, 49, 108, 35, 47, 12, 6, 35, 51, 0, 0, 13, 3, 95,
+			55, 48, 89, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 51, 47, 113, 108, 35, 47, 12, 6, 35, 51, 0, 0, 15, 6, 217,
+			133, 219, 129, 217, 133, 65, 6, 122, 108, 113, 65, 0, 14, 6, 216, 173, 218, 169, 217, 133, 108, 6, 122, 49, 65, 0, 15, 3, 95, 55,
+			50, 71, 35, 108, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 53, 48, 35, 143, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3,
+			95, 55, 52, 80, 135, 108, 35, 47, 12, 6, 35, 51, 0, 0, 15, 3, 95, 55, 55, 89, 35, 25, 35, 47, 12, 6, 35, 51, 0, 0,
+			15, 3, 95, 55, 54, 143, 113, 108, 35, 47, 12, 6, 35, 51, 0, 0, 12, 3, 95, 49, 57, 6, 122, 50, 50, 112, 89, 0, 0, 13,
+			3, 95, 49, 56, 35, 25, 6, 118, 51, 35, 108, 0, 0, 0, 13, 6, 216, 167, 217, 136, 216, 177, 121, 51, 0, 72, 28, 0, 21, 10,
+			216, 168, 216, 167, 217, 132, 218, 169, 217, 132, 71, 6, 113, 55, 49, 4, 122, 55, 0, 21, 10, 217, 133, 217, 133, 216, 167, 216, 171, 217,
+			132, 65, 122, 65, 6, 118, 89, 113, 55, 0, 0, 0, 0, 0, 26, 12, 216, 174, 216, 181, 217, 136, 216, 181, 219, 140, 216, 170, 101, 4,
+			122, 93, 123, 93, 112, 38, 6, 35, 47, 0, 12, 3, 95, 50, 57, 122, 50, 47, 6, 112, 89, 0, 13, 3, 95, 49, 49, 81, 57, 6,
+			118, 51, 35, 108, 0, 0, 14, 3, 95, 50, 56, 4, 35, 141, 118, 57, 6, 112, 89, 0, 10, 3, 95, 49, 48, 72, 6, 35, 89, 0,
+			0, 12, 3, 95, 49, 51, 47, 6, 114, 51, 35, 108, 0, 0, 22, 10, 217, 190, 216, 180, 216, 167, 217, 136, 216, 177, 48, 4, 113, 91,
+			118, 84, 6, 35, 51, 0, 12, 3, 95, 49, 50, 71, 6, 118, 51, 35, 108, 0, 0, 14, 3, 95, 49, 53, 48, 6, 35, 50, 72, 51,
+			35, 108, 0, 0, 12, 3, 95, 49, 52, 80, 6, 135, 72, 35, 108, 0, 0, 13, 3, 95, 49, 55, 89, 6, 35, 47, 51, 35, 108, 0,
+			0, 32, 10, 216, 162, 216, 166, 219, 140, 217, 134, 219, 129, 118, 6, 112, 50, 4, 35, 15, 71, 6, 112, 50, 0, 81, 216, 168, 219, 140,
+			217, 134, 32, 12, 3, 95, 49, 54, 89, 6, 119, 55, 35, 108, 0, 0, 0, 0, 31, 16, 218, 175, 219, 129, 217, 133, 216, 167, 218, 175,
+			219, 129, 217, 133, 219, 140, 81, 4, 116, 108, 65, 118, 81, 6, 116, 108, 65, 37, 0, 0, 0, 26, 14, 216, 167, 217, 134, 218, 175, 217,
+			132, 219, 140, 217, 134, 218, 136, 4, 113, 50, 81, 55, 6, 114, 50, 140, 0, 0, 0, 15, 8, 216, 167, 217, 185, 218, 190, 219, 140, 6,
+			122, 141, 112, 0, 0, 15, 8, 216, 167, 217, 185, 218, 190, 216, 167, 6, 122, 141, 118, 0, 0, 7, 132, 216, 162, 217, 190, 72, 12, 3,
+			95, 52, 57, 122, 50, 80, 6, 118, 89, 0, 0, 14, 3, 95, 52, 56, 35, 51, 47, 118, 55, 6, 112, 89, 0, 0, 0, 0, 0, 0,
+			0, 23, 10, 217, 133, 217, 134, 219, 129, 216, 175, 217, 133, 65, 4, 122, 50, 108, 6, 35, 72, 113, 65, 0, 0, 12, 3, 95, 53, 57,
+			122, 50, 89, 6, 35, 25, 0, 15, 3, 95, 52, 49, 113, 49, 109, 47, 118, 55, 6, 112, 89, 0, 0, 13, 3, 95, 53, 56, 35, 25,
+			6, 118, 84, 35, 50, 0, 12, 3, 95, 52, 48, 80, 118, 55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 51, 47, 114, 68, 47, 118, 55,
+			6, 112, 89, 0, 0, 14, 3, 95, 52, 50, 71, 35, 57, 118, 55, 6, 112, 89, 0, 0, 15, 8, 216, 167, 217, 185, 218, 190, 219, 146,
+			6, 122, 141, 114, 0, 15, 3, 95, 52, 53, 48, 134, 68, 47, 118, 55, 6, 112, 89, 0, 0, 14, 3, 95, 52, 52, 80, 35, 84, 118,
+			55, 6, 112, 89, 0, 0, 15, 3, 95, 52, 55, 89, 134, 68, 47, 118, 55, 6, 112, 89, 0, 0, 14, 3, 95, 52, 54, 143, 113, 57,
+			118, 55, 6, 112, 89, 0, 0, 24, 12, 217, 134, 216, 167, 217, 133, 217, 133, 218, 169, 217, 134, 50, 6, 118, 65, 122, 65, 49, 113, 50,
+			0, 16, 3, 95, 54, 57, 122, 50, 108, 4, 35, 47, 12, 6, 35, 51, 0, 13, 3, 95, 53, 49, 113, 49, 6, 118, 84, 35, 50, 0,
+			0, 12, 3, 95, 54, 56, 6, 35, 51, 89, 35, 25, 0, 12, 3, 95, 53, 48, 48, 35, 80, 6, 118, 89, 0, 0, 13, 3, 95, 53,
+			51, 47, 6, 113, 51, 48, 35, 50, 0, 0, 12, 3, 95, 53, 50, 71, 6, 118, 84, 35, 50, 0, 0, 13, 3, 95, 53, 53, 48, 6,
+			35, 80, 48, 35, 50, 0, 0, 19, 8, 216, 172, 216, 168, 218, 169, 219, 129, 79, 4, 35, 71, 49, 6, 114, 108, 0, 12, 3, 95, 53,
+			52, 80, 6, 135, 84, 35, 50, 0, 0, 14, 6, 217, 133, 217, 129, 216, 170, 65, 6, 122, 83, 47, 0, 15, 3, 95, 53, 55, 89, 35,
+			47, 12, 6, 118, 84, 35, 50, 0, 0, 20, 10, 216, 162, 216, 166, 217, 134, 216, 175, 219, 129, 118, 6, 113, 50, 72, 4, 35, 0, 19,
+			8, 216, 170, 216, 180, 216, 175, 216, 175, 47, 35, 91, 6, 35, 72, 122, 72, 0, 13, 3, 95, 53, 54, 143, 6, 35, 48, 48, 35, 50,
+			0, 0, 28, 14, 217, 134, 216, 167, 217, 133, 216, 178, 216, 175, 218, 175, 219, 140, 50, 4, 118, 65, 88, 6, 35, 72, 81, 4, 112, 0,
+			0, 25, 12, 217, 133, 216, 173, 216, 170, 216, 177, 217, 133, 219, 129, 65, 4, 122, 108, 47, 6, 35, 51, 65, 35, 0, 0, 0, 0, 0,
+			0, 0, 0, 33, 16, 216, 167, 217, 134, 217, 129, 216, 177, 216, 167, 216, 175, 219, 140, 216, 170, 4, 113, 50, 83, 4, 113, 51, 118, 72,
+			112, 38, 6, 35, 47, 0, 13, 3, 95, 56, 57, 50, 35, 84, 118, 89, 6, 112, 0, 0, 12, 3, 95, 56, 56, 35, 25, 118, 89, 6,
+			112, 0, 0, 0, 0, 22, 10, 216, 178, 217, 134, 216, 175, 218, 175, 219, 140, 88, 4, 113, 50, 72, 6, 35, 81, 112, 0, 0, 0, 0,
+			0, 27, 14, 216, 167, 217, 134, 216, 175, 216, 179, 217, 185, 216, 177, 219, 140, 4, 113, 50, 140, 6, 35, 89, 139, 51, 112, 0, 15, 3,
+			95, 57, 57, 50, 113, 50, 57, 6, 118, 50, 84, 114, 0, 12, 3, 95, 56, 49, 113, 49, 118, 89, 6, 112, 0, 0, 14, 3, 95, 57,
+			56, 35, 25, 12, 6, 118, 50, 84, 114, 0, 11, 3, 95, 56, 48, 35, 89, 89, 6, 112, 0, 0, 13, 3, 95, 56, 51, 47, 113, 51,
+			118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 50, 71, 35, 57, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 53, 48, 35, 80, 118, 89,
+			6, 112, 0, 0, 20, 8, 217, 133, 216, 184, 217, 129, 216, 177, 65, 4, 122, 92, 35, 83, 6, 35, 51, 0, 13, 3, 95, 56, 52, 80,
+			135, 51, 118, 89, 6, 112, 0, 0, 14, 3, 95, 56, 55, 89, 35, 47, 12, 118, 89, 6, 112, 0, 0, 13, 3, 95, 56, 54, 143, 113,
+			57, 118, 89, 6, 112, 0, 0, 14, 3, 95, 57, 49, 113, 49, 57, 6, 118, 50, 84, 114, 0, 0, 12, 3, 95, 57, 48, 50, 35, 84,
+			84, 6, 114, 0, 0, 14, 3, 95, 57, 51, 47, 113, 87, 6, 118, 50, 84, 114, 0, 0, 13, 6, 217, 133, 217, 134, 219, 129, 65, 6,
+			123, 50, 0, 15, 6, 216, 176, 217, 133, 219, 129, 86, 6, 113, 65, 4, 35, 0, 12, 3, 95, 57, 50, 71, 6, 118, 50, 84, 114, 0,
+			0, 14, 3, 95, 57, 53, 48, 35, 80, 6, 118, 50, 84, 114, 0, 0, 17, 8, 217, 136, 216, 177, 217, 134, 219, 129, 84, 6, 35, 51,
+			50, 35, 0, 14, 3, 95, 57, 52, 80, 135, 51, 6, 118, 50, 84, 114, 0, 0, 15, 6, 216, 181, 216, 173, 216, 170, 93, 114, 108, 6,
+			35, 47, 0, 15, 3, 95, 57, 55, 89, 35, 47, 12, 6, 118, 50, 84, 114, 0, 0, 17, 8, 217, 136, 216, 167, 216, 177, 216, 171, 84,
+			6, 118, 51, 113, 89, 0, 25, 10, 217, 133, 216, 168, 219, 140, 217, 134, 219, 129, 65, 4, 122, 71, 35, 112, 38, 6, 35, 50, 4, 35,
+			0, 14, 3, 95, 57, 54, 143, 113, 57, 6, 118, 50, 84, 114, 0, 0, 0, 0, 13, 6, 216, 168, 216, 175, 218, 190, 71, 6, 122, 138,
+			0, 0, 20, 8, 217, 133, 216, 173, 217, 133, 216, 175, 65, 4, 122, 108, 35, 65, 6, 35, 72, 0, 0, 0, 0, 0, 0, 0, 14, 6,
+			219, 129, 217, 132, 216, 167, 108, 6, 113, 55, 118, 0, 0, 0, 0, 0, 19, 8, 217, 133, 216, 181, 217, 134, 217, 129, 65, 122, 93, 6,
+			35, 50, 113, 83, 0, 0, 0, 23, 10, 217, 133, 216, 174, 216, 170, 217, 132, 217, 129, 65, 4, 122, 101, 47, 6, 35, 55, 113, 83, 0,
+			0, 12, 4, 216, 172, 217, 134, 79, 6, 113, 50, 0, 72, 0, 0, 15, 6, 216, 168, 219, 129, 216, 170, 71, 6, 35, 108, 122, 47, 0,
+			0, 15, 6, 217, 133, 217, 134, 217, 185, 65, 6, 113, 50, 113, 139, 0, 0, 26, 12, 217, 133, 216, 175, 216, 167, 217, 129, 216, 185, 216,
+			170, 65, 4, 122, 72, 118, 83, 113, 38, 6, 35, 47, 0, 23, 10, 217, 133, 216, 179, 216, 170, 217, 130, 217, 132, 65, 4, 122, 89, 47,
+			6, 35, 104, 113, 55, 0, 0, 17, 8, 217, 129, 216, 177, 217, 134, 217, 185, 83, 51, 6, 35, 50, 139, 0, 0, 0, 15, 6, 216, 168,
+			219, 129, 216, 177, 71, 35, 108, 6, 35, 51, 0, 0, 0, 21, 10, 216, 168, 216, 177, 216, 185, 218, 169, 216, 179, 71, 4, 35, 51, 6,
+			35, 49, 89, 0, 0, 0, 13, 6, 218, 169, 217, 132, 218, 169, 49, 55, 113, 49, 0, 16, 8, 217, 129, 217, 136, 216, 177, 216, 179, 83,
+			6, 119, 51, 89, 0, 0, 0, 0, 0, 0, 17, 8, 217, 130, 219, 140, 217, 133, 216, 170, 104, 37, 65, 6, 35, 47, 0, 16, 8, 216,
+			179, 217, 134, 218, 175, 218, 190, 89, 6, 113, 50, 146, 0, 0, 0, 0, 0, 0, 21, 10, 217, 133, 219, 140, 217, 185, 217, 134, 218, 175,
+			65, 6, 112, 139, 6, 113, 50, 81, 0, 0, 0, 18, 8, 216, 179, 216, 177, 216, 174, 219, 140, 89, 6, 122, 51, 101, 4, 112, 0, 0,
+			14, 6, 218, 175, 217, 134, 216, 167, 81, 6, 122, 50, 118, 0, 0, 0, 0, 0, 0, 0, 0, 11, 4, 217, 133, 217, 132, 65, 6, 113,
+			55, 0, 0, 0, 17, 8, 217, 132, 219, 140, 218, 169, 217, 134, 55, 6, 114, 49, 113, 50, 0, 13, 6, 217, 129, 216, 185, 217, 132, 83,
+			6, 114, 55, 0, 0, 12, 4, 216, 172, 216, 179, 79, 6, 113, 89, 0, 72, 0, 16, 8, 218, 175, 217, 136, 217, 134, 216, 172, 81, 6,
+			123, 50, 79, 0, 0, 22, 10, 217, 129, 218, 169, 216, 179, 217, 134, 218, 175, 83, 4, 113, 49, 89, 6, 113, 50, 81, 0, 21, 10, 217,
+			133, 216, 185, 216, 170, 217, 130, 216, 175, 65, 121, 47, 6, 35, 104, 113, 72, 0, 0, 0, 0, 0, 0, 22, 10, 216, 172, 216, 179, 216,
+			170, 216, 172, 217, 136, 79, 6, 122, 89, 47, 4, 122, 79, 123, 0, 0, 13, 3, 239, 174, 168, 143, 119, 47, 112, 15, 108, 114, 0, 0,
+			12, 4, 95, 48, 77, 52, 6, 35, 51, 35, 71, 0, 0, 13, 4, 95, 48, 77, 53, 6, 145, 35, 51, 35, 71, 0, 0, 11, 4, 95,
+			48, 77, 50, 55, 6, 118, 145, 0, 0, 15, 6, 216, 180, 216, 175, 219, 129, 91, 6, 122, 72, 4, 35, 0, 13, 4, 95, 48, 77, 51,
+			49, 35, 51, 6, 119, 51, 0, 0, 0, 19, 8, 217, 190, 216, 168, 217, 132, 218, 169, 48, 6, 35, 71, 55, 4, 113, 49, 0, 13, 4,
+			95, 48, 77, 49, 108, 35, 88, 6, 118, 51, 0, 0, 0, 0, 0, 19, 8, 216, 168, 217, 132, 218, 169, 219, 129, 71, 4, 35, 55, 49,
+			6, 114, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 8, 217, 133, 219, 129, 217, 132, 218, 169, 65, 6, 122, 108,
+			55, 113, 49, 0, 0, 0, 0, 21, 10, 217, 190, 216, 177, 216, 167, 217, 133, 217, 134, 48, 4, 122, 51, 6, 35, 65, 50, 0, 20, 8,
+			217, 133, 218, 169, 217, 133, 217, 132, 65, 4, 122, 49, 35, 65, 6, 35, 55, 0, 0, 0, 23, 10, 217, 133, 216, 180, 216, 170, 217, 133,
+			217, 132, 65, 4, 122, 91, 47, 6, 35, 65, 113, 55, 0, 0, 23, 12, 216, 162, 216, 166, 219, 140, 216, 179, 217, 134, 218, 175, 4, 118,
+			37, 89, 6, 113, 50, 81, 0, 0, 0, 0, 0, 14, 6, 216, 176, 218, 169, 216, 177, 86, 6, 113, 49, 51, 0, 0, 17, 8, 216, 185,
+			217, 132, 217, 133, 219, 140, 6, 113, 55, 65, 4, 112, 0, 18, 8, 217, 133, 217, 132, 218, 169, 219, 140, 65, 6, 122, 55, 49, 4, 112,
+			0, 15, 6, 219, 129, 217, 133, 216, 170, 108, 113, 65, 6, 35, 47, 0, 15, 6, 216, 180, 216, 175, 216, 170, 91, 113, 72, 6, 35, 47,
+			0, 0, 0, 0, 0, 0, 0, 26, 12, 217, 133, 217, 134, 216, 167, 216, 179, 216, 168, 216, 170, 65, 4, 122, 50, 118, 89, 113, 71, 6,
+			35, 47, 0, 0, 0, 0, 24, 12, 217, 133, 216, 180, 216, 170, 216, 177, 218, 169, 219, 129, 65, 122, 91, 47, 6, 35, 51, 49, 35, 0,
+			0, 0, 27, 12, 217, 190, 216, 177, 216, 170, 216, 180, 216, 175, 216, 175, 48, 4, 122, 51, 47, 35, 91, 6, 35, 72, 122, 72, 0, 0,
+			0, 18, 8, 218, 169, 216, 177, 218, 169, 217, 185, 49, 51, 113, 49, 4, 113, 139, 0, 0, 7, 132, 217, 134, 219, 146, 72, 0, 0, 0,
+			0, 17, 8, 216, 170, 216, 185, 217, 132, 217, 130, 47, 6, 118, 55, 122, 104, 0, 0, 0, 20, 8, 217, 133, 216, 177, 218, 169, 216, 168,
+			65, 4, 122, 51, 35, 49, 6, 35, 71, 0, 0, 0, 0, 0, 27, 12, 217, 133, 216, 179, 216, 170, 217, 130, 216, 168, 217, 132, 65, 4,
+			122, 89, 47, 6, 35, 104, 71, 4, 113, 55, 0, 0, 0, 0, 18, 8, 217, 132, 217, 134, 218, 169, 216, 179, 55, 6, 113, 50, 49, 4,
+			89, 0, 0, 23, 10, 216, 179, 216, 177, 217, 136, 216, 179, 216, 178, 89, 6, 35, 51, 84, 113, 89, 4, 113, 88, 0, 0, 19, 8, 217,
+			133, 216, 185, 217, 133, 216, 177, 65, 4, 121, 35, 65, 6, 35, 51, 0, 0, 0, 15, 6, 216, 178, 219, 129, 216, 177, 88, 114, 108, 6,
+			114, 51, 0, 0, 17, 8, 216, 167, 216, 177, 216, 175, 217, 136, 6, 122, 51, 72, 4, 123, 0, 0, 10, 4, 217, 134, 219, 129, 50, 6,
+			35, 0, 0, 0, 0, 19, 8, 216, 170, 216, 173, 217, 129, 216, 184, 47, 35, 108, 6, 35, 83, 122, 92, 0, 0, 27, 14, 218, 169, 217,
+			133, 217, 190, 217, 132, 219, 140, 218, 169, 216, 179, 49, 4, 35, 65, 48, 55, 6, 114, 49, 89, 0, 0, 0, 0, 22, 10, 216, 183, 216,
+			168, 219, 140, 216, 185, 216, 170, 47, 4, 35, 71, 112, 38, 6, 35, 47, 0, 0, 17, 8, 219, 129, 217, 129, 216, 170, 219, 129, 108, 6,
+			35, 83, 47, 35, 0, 24, 12, 217, 133, 216, 170, 216, 185, 217, 132, 217, 130, 219, 129, 65, 122, 47, 6, 118, 55, 113, 104, 35, 0, 0,
+			0, 0, 0, 0, 0, 0, 22, 12, 218, 175, 218, 190, 216, 177, 219, 140, 217, 132, 217, 136, 146, 35, 51, 6, 114, 55, 123, 0, 0, 0,
+			0, 0, 21, 12, 216, 167, 217, 185, 218, 190, 216, 167, 217, 134, 219, 140, 122, 141, 6, 118, 50, 112, 0, 22, 10, 216, 180, 218, 169, 216,
+			167, 219, 140, 216, 170, 91, 4, 113, 49, 118, 57, 6, 35, 47, 0, 0, 0, 21, 12, 216, 167, 217, 185, 218, 190, 216, 167, 217, 134, 219,
+			146, 122, 141, 6, 118, 50, 114, 0, 0, 0, 0, 0, 19, 8, 217, 133, 216, 177, 218, 169, 216, 178, 65, 4, 35, 51, 49, 6, 35, 88,
+			0, 0, 15, 6, 216, 179, 217, 129, 216, 177, 89, 35, 83, 6, 35, 51, 0, 0, 0, 0, 14, 6, 216, 183, 216, 168, 219, 140, 47, 6,
+			113, 71, 112, 0, 0, 0, 0, 22, 10, 216, 175, 216, 179, 216, 170, 216, 174, 216, 183, 72, 4, 35, 89, 47, 101, 6, 35, 47, 0, 0,
+			21, 10, 217, 190, 219, 140, 216, 180, 218, 169, 216, 180, 48, 4, 114, 91, 49, 6, 35, 91, 0, 15, 8, 216, 162, 217, 134, 218, 169, 218,
+			190, 6, 118, 50, 145, 0, 0, 20, 8, 217, 133, 216, 171, 217, 132, 216, 171, 65, 4, 122, 89, 35, 55, 6, 35, 89, 0, 0, 22, 10,
+			216, 177, 217, 136, 216, 167, 219, 140, 216, 170, 51, 4, 113, 84, 118, 57, 6, 35, 47, 0, 0, 16, 8, 216, 179, 216, 167, 217, 133, 216,
+			185, 89, 6, 118, 65, 114, 0, 0, 0, 21, 10, 218, 175, 216, 176, 216, 180, 216, 170, 219, 129, 81, 122, 86, 6, 35, 91, 47, 35, 0,
+			0, 0, 0, 0, 0, 0, 0, 22, 10, 218, 175, 217, 129, 216, 170, 218, 175, 217, 136, 81, 6, 122, 83, 47, 4, 122, 81, 123, 0, 10,
+			4, 216, 167, 217, 134, 113, 50, 0, 72, 0, 0, 25, 12, 216, 167, 217, 132, 217, 133, 216, 175, 216, 170, 219, 140, 4, 122, 55, 65, 122,
+			72, 6, 35, 47, 112, 0, 0, 0, 0, 21, 12, 216, 167, 217, 185, 218, 190, 216, 167, 217, 134, 216, 167, 122, 141, 6, 118, 50, 118, 0,
+			0, 21, 10, 217, 129, 217, 130, 216, 175, 216, 167, 217, 134, 83, 4, 122, 104, 72, 6, 118, 50, 0, 0, 0, 23, 10, 217, 133, 217, 134,
+			216, 170, 216, 174, 216, 168, 65, 4, 122, 50, 47, 6, 35, 101, 13, 71, 0, 17, 8, 217, 133, 216, 172, 218, 190, 219, 146, 65, 6, 122,
+			144, 114, 0, 72, 0, 0, 14, 6, 216, 177, 217, 134, 216, 178, 51, 6, 35, 50, 88, 0, 0, 0, 5, 131, 239, 187, 191, 0, 0, 0,
+			0, 0, 23, 10, 218, 169, 217, 133, 216, 180, 217, 134, 216, 177, 49, 4, 35, 65, 113, 91, 50, 6, 35, 51, 0, 0, 0, 0, 0, 25,
+			12, 217, 129, 216, 183, 216, 177, 216, 170, 216, 167, 217, 139, 83, 4, 113, 47, 51, 35, 47, 6, 35, 50, 0, 0, 18, 10, 216, 168, 218,
+			190, 216, 167, 217, 134, 216, 170, 137, 6, 118, 50, 47, 0, 0, 0, 19, 8, 217, 134, 216, 179, 216, 168, 216, 170, 50, 4, 113, 89, 71,
+			6, 35, 47, 0, 0, 0, 18, 8, 216, 181, 216, 173, 216, 170, 217, 144, 93, 114, 108, 6, 35, 47, 114, 0, 0, 21, 10, 217, 133, 217,
+			134, 216, 185, 217, 130, 216, 175, 65, 122, 50, 6, 118, 104, 113, 72, 0, 0, 0, 0, 0, 16, 8, 217, 190, 216, 177, 217, 134, 217, 185,
+			48, 51, 113, 50, 139, 0, 0, 0, 0, 15, 6, 216, 172, 217, 134, 216, 170, 79, 35, 50, 6, 35, 47, 0, 0, 0, 19, 8, 217, 133,
+			216, 170, 217, 129, 217, 130, 65, 122, 47, 6, 35, 83, 113, 104, 0, 0, 0, 0, 0, 17, 8, 216, 168, 216, 167, 216, 183, 217, 134, 71,
+			6, 118, 47, 113, 50, 0, 18, 8, 216, 167, 217, 132, 216, 173, 217, 130, 4, 122, 55, 108, 6, 35, 104, 0, 24, 12, 217, 190, 219, 140,
+			216, 180, 216, 177, 217, 129, 216, 170, 48, 4, 114, 91, 51, 6, 35, 83, 47, 0, 0, 0, 0, 0, 23, 10, 216, 170, 216, 179, 217, 132,
+			216, 179, 217, 132, 47, 35, 89, 6, 35, 55, 89, 4, 122, 55, 0, 0, 0, 0, 19, 8, 216, 175, 217, 129, 216, 170, 216, 177, 72, 4,
+			35, 83, 47, 6, 35, 51, 0, 0, 0, 13, 6, 216, 180, 216, 185, 216, 177, 91, 6, 114, 51, 0, 0, 0, 0, 20, 10, 216, 174, 216,
+			181, 217, 136, 216, 181, 219, 140, 101, 122, 93, 6, 123, 93, 112, 0, 0, 0, 26, 12, 216, 168, 216, 177, 216, 183, 216, 177, 217, 129, 219,
+			140, 71, 4, 35, 51, 47, 6, 35, 51, 83, 4, 112, 0, 0, 18, 8, 216, 181, 217, 129, 216, 173, 219, 129, 93, 6, 35, 83, 108, 4,
+			118, 0, 0, 0, 0, 0, 20, 10, 217, 190, 217, 136, 217, 132, 217, 134, 218, 175, 48, 119, 55, 6, 113, 50, 81, 0, 0, 0, 0, 0,
+			0, 0, 0, 14, 6, 218, 134, 218, 169, 219, 146, 80, 6, 122, 49, 114, 0, 11, 4, 216, 183, 216, 168, 47, 6, 113, 71, 0, 0, 0,
+			19, 8, 217, 130, 216, 179, 217, 133, 216, 170, 104, 4, 113, 89, 65, 6, 35, 47, 0, 16, 8, 216, 175, 217, 136, 216, 179, 216, 170, 72,
+			6, 119, 89, 47, 0, 0, 0, 0, 0, 27, 14, 216, 167, 217, 134, 217, 129, 216, 177, 216, 167, 216, 175, 219, 140, 4, 113, 50, 83, 113,
+			51, 6, 118, 72, 112, 0, 0, 0, 15, 6, 217, 133, 216, 173, 216, 182, 65, 6, 116, 108, 116, 88, 0, 0, 0, 0, 10, 4, 216, 167,
+			216, 179, 113, 89, 0, 72, 0, 0, 0, 0, 0, 0, 17, 8, 216, 184, 216, 167, 219, 129, 216, 177, 92, 6, 118, 108, 113, 51, 0, 0,
+			27, 14, 216, 167, 216, 173, 216, 170, 216, 172, 216, 167, 216, 172, 219, 140, 6, 114, 108, 47, 114, 79, 4, 118, 79, 112, 0, 0, 0, 0,
+			17, 8, 217, 129, 216, 177, 217, 130, 219, 129, 83, 6, 113, 51, 104, 35, 0, 0, 23, 10, 217, 133, 216, 177, 216, 170, 218, 169, 216, 168,
+			65, 4, 122, 51, 47, 6, 35, 49, 113, 71, 0, 0, 22, 10, 217, 133, 217, 130, 216, 177, 216, 177, 219, 129, 65, 122, 104, 6, 35, 51,
+			113, 51, 35, 0, 0, 0, 17, 8, 216, 177, 216, 180, 216, 170, 219, 129, 51, 6, 113, 91, 47, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 17, 8, 216, 179, 216, 167, 216, 168, 217, 130, 89, 6, 118, 71, 113, 104, 0, 0, 0, 17, 8, 217, 130, 216, 167, 216, 168, 217,
+			132, 104, 6, 118, 71, 113, 55, 0, 0, 0, 0, 0, 15, 6, 216, 168, 216, 172, 216, 178, 71, 6, 35, 79, 122, 88, 0, 21, 10, 217,
+			133, 216, 183, 216, 167, 216, 168, 217, 130, 65, 122, 47, 6, 118, 71, 113, 104, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 217, 185, 219,
+			140, 218, 169, 216, 179, 139, 6, 114, 49, 89, 0, 15, 6, 218, 175, 219, 129, 216, 177, 81, 119, 108, 6, 35, 51, 0, 23, 10, 217, 133,
+			217, 134, 216, 173, 216, 181, 216, 177, 65, 4, 122, 50, 108, 6, 35, 93, 113, 51, 0, 23, 10, 217, 133, 216, 174, 216, 170, 216, 181, 216,
+			177, 65, 4, 122, 101, 47, 35, 93, 6, 35, 51, 0, 0, 14, 6, 216, 179, 216, 179, 216, 170, 89, 6, 122, 89, 47, 0, 0, 10, 4,
+			216, 168, 219, 129, 71, 6, 35, 0, 0, 19, 8, 216, 180, 216, 177, 218, 169, 216, 170, 91, 4, 113, 51, 49, 6, 35, 47, 0, 0, 0,
+			0, 0, 0, 21, 10, 217, 133, 217, 133, 216, 167, 217, 132, 218, 169, 65, 122, 65, 6, 118, 55, 113, 49, 0, 0, 0, 0, 0, 22, 10,
+			217, 133, 216, 180, 216, 170, 216, 168, 219, 129, 65, 122, 91, 47, 6, 35, 71, 4, 35, 0, 0, 9, 3, 95, 217, 136, 84, 118, 121, 0,
+			0, 0, 0, 11, 4, 216, 168, 216, 170, 71, 6, 122, 47, 0, 0, 11, 4, 219, 129, 217, 133, 108, 35, 65, 0, 72, 0, 0, 0, 17,
+			8, 216, 173, 217, 130, 217, 136, 217, 130, 108, 122, 104, 6, 123, 104, 0, 11, 4, 219, 129, 219, 146, 108, 6, 116, 0, 72, 0, 16, 8,
+			216, 168, 219, 140, 217, 134, 218, 169, 71, 6, 114, 50, 49, 0, 0, 0, 0, 0, 0, 19, 8, 216, 170, 216, 173, 217, 133, 217, 132, 47,
+			35, 108, 6, 35, 65, 122, 55, 0, 0, 0, 0, 0, 27, 4, 217, 129, 219, 140, 83, 4, 113, 55, 108, 6, 118, 55, 0, 81, 216, 167,
+			217, 132, 216, 173, 216, 167, 217, 132, 32, 0, 0, 16, 8, 217, 133, 216, 167, 216, 177, 218, 134, 65, 6, 118, 51, 80, 0, 0, 17, 8,
+			216, 174, 216, 167, 217, 132, 216, 181, 101, 6, 118, 55, 113, 93, 0, 0, 15, 6, 217, 130, 217, 132, 216, 170, 104, 113, 55, 6, 35, 47,
+			0, 0, 0, 14, 6, 216, 173, 216, 178, 216, 168, 108, 6, 113, 88, 71, 0, 0, 16, 8, 216, 185, 216, 177, 216, 181, 219, 129, 6, 35,
+			51, 93, 35, 0, 16, 8, 216, 185, 217, 133, 216, 175, 219, 129, 6, 122, 65, 72, 35, 0, 0, 0, 0, 26, 12, 217, 133, 217, 133, 216,
+			167, 216, 171, 217, 132, 216, 170, 65, 4, 122, 65, 118, 89, 113, 55, 6, 35, 47, 0, 0, 21, 10, 217, 134, 216, 167, 217, 133, 216, 178,
+			216, 175, 50, 4, 118, 65, 88, 6, 35, 72, 0, 15, 3, 95, 216, 164, 84, 118, 121, 107, 6, 35, 65, 88, 35, 0, 0, 0, 19, 10,
+			216, 176, 216, 177, 216, 167, 216, 166, 216, 185, 86, 35, 51, 6, 118, 114, 0, 0, 0, 9, 2, 95, 51, 47, 6, 112, 50, 0, 0, 8,
+			2, 95, 50, 6, 72, 119, 0, 0, 8, 2, 95, 49, 6, 114, 49, 0, 0, 11, 2, 95, 48, 89, 6, 113, 83, 35, 51, 0, 0, 14,
+			6, 216, 185, 219, 129, 216, 175, 6, 116, 108, 116, 72, 0, 9, 2, 95, 55, 89, 6, 118, 47, 0, 0, 9, 2, 95, 54, 143, 6, 36,
+			107, 0, 0, 10, 2, 95, 53, 48, 6, 118, 68, 80, 0, 0, 9, 2, 95, 52, 80, 6, 118, 51, 0, 0, 21, 10, 217, 133, 216, 170,
+			216, 185, 216, 175, 216, 175, 65, 122, 47, 6, 118, 72, 113, 72, 0, 17, 8, 216, 170, 216, 167, 219, 129, 217, 133, 47, 118, 108, 6, 35,
+			65, 0, 14, 6, 216, 172, 217, 132, 216, 175, 79, 6, 35, 55, 72, 0, 0, 0, 8, 2, 95, 57, 50, 6, 135, 0, 0, 8, 2, 95,
+			56, 6, 118, 25, 0, 0, 0, 0, 29, 14, 216, 174, 219, 140, 216, 177, 217, 133, 217, 130, 216, 175, 217, 133, 101, 4, 114, 51, 65, 4,
+			35, 104, 72, 6, 35, 65, 0, 0, 0, 0, 0, 0, 0, 17, 8, 218, 169, 216, 175, 218, 190, 216, 177, 49, 113, 138, 6, 35, 51, 0,
+			24, 12, 216, 183, 216, 167, 217, 130, 216, 170, 217, 136, 216, 177, 47, 118, 104, 6, 35, 47, 84, 35, 51, 0, 14, 6, 216, 168, 216, 173,
+			216, 171, 71, 116, 108, 116, 89, 0, 0, 14, 6, 217, 136, 217, 130, 216, 170, 84, 6, 35, 104, 47, 0, 0, 21, 10, 216, 170, 217, 134,
+			216, 167, 216, 184, 216, 177, 47, 35, 50, 6, 118, 92, 122, 51, 0, 23, 10, 217, 133, 217, 134, 216, 170, 216, 184, 216, 177, 65, 4, 122,
+			50, 47, 6, 35, 92, 113, 51, 0, 0, 0, 12, 4, 218, 169, 219, 129, 49, 6, 114, 108, 0, 72, 0, 0, 7, 132, 218, 169, 216, 167,
+			72, 0, 0, 0, 7, 132, 218, 169, 219, 140, 72, 0, 29, 14, 216, 168, 216, 180, 216, 177, 216, 183, 219, 140, 218, 169, 219, 129, 71, 4,
+			35, 91, 35, 51, 47, 114, 49, 6, 114, 108, 0, 0, 0, 0, 8, 2, 217, 134, 50, 123, 50, 0, 0, 8, 2, 217, 133, 65, 112, 65,
+			0, 0, 8, 2, 217, 132, 55, 118, 65, 0, 0, 0, 8, 2, 217, 130, 104, 118, 83, 0, 0, 13, 6, 218, 134, 219, 140, 217, 129, 80,
+			6, 112, 83, 0, 7, 2, 217, 129, 83, 114, 0, 0, 7, 132, 218, 169, 219, 146, 72, 0, 8, 2, 217, 143, 48, 114, 91, 0, 0, 17,
+			8, 216, 183, 217, 136, 219, 140, 217, 132, 47, 35, 84, 6, 112, 55, 0, 21, 10, 217, 133, 216, 170, 216, 185, 217, 132, 217, 130, 65, 122,
+			47, 6, 118, 55, 113, 104, 0, 10, 2, 217, 142, 88, 13, 71, 13, 51, 0, 7, 2, 218, 134, 80, 114, 0, 0, 17, 8, 216, 168, 216,
+			167, 216, 185, 216, 171, 71, 6, 118, 57, 113, 89, 0, 17, 8, 217, 133, 217, 136, 216, 167, 216, 175, 65, 35, 84, 6, 118, 72, 0, 0,
+			19, 10, 216, 167, 217, 190, 216, 177, 219, 140, 217, 132, 35, 48, 51, 6, 114, 55, 0, 17, 8, 216, 170, 216, 172, 218, 190, 219, 146, 47,
+			6, 122, 144, 114, 0, 72, 0, 23, 10, 217, 133, 217, 134, 217, 129, 216, 177, 216, 175, 65, 4, 122, 50, 83, 6, 35, 51, 113, 72, 0,
+			14, 2, 217, 139, 72, 6, 119, 88, 35, 71, 6, 35, 51, 0, 0, 0, 12, 4, 218, 169, 216, 179, 49, 6, 113, 89, 0, 72, 0, 6,
+			2, 217, 136, 119, 0, 26, 12, 217, 133, 216, 168, 216, 181, 216, 177, 219, 140, 217, 134, 65, 4, 122, 71, 35, 93, 113, 51, 6, 112, 50,
+			0, 0, 0, 0, 0, 14, 6, 217, 133, 217, 132, 219, 140, 65, 6, 113, 55, 112, 0, 0, 0, 16, 8, 218, 134, 219, 140, 217, 134, 219,
+			140, 80, 6, 112, 50, 112, 0, 18, 8, 216, 162, 216, 166, 216, 177, 216, 180, 6, 118, 113, 51, 4, 113, 91, 0, 11, 2, 217, 146, 89,
+			122, 49, 6, 123, 50, 0, 13, 2, 219, 130, 108, 114, 107, 6, 35, 65, 88, 35, 0, 0, 13, 2, 217, 145, 47, 4, 35, 91, 72, 6,
+			112, 72, 0, 7, 2, 219, 129, 108, 114, 0, 0, 21, 10, 216, 179, 217, 129, 216, 167, 216, 177, 216, 180, 89, 113, 83, 6, 118, 51, 113,
+			91, 0, 8, 2, 217, 144, 88, 114, 51, 0, 8, 2, 218, 136, 140, 118, 55, 0, 0, 21, 10, 216, 180, 217, 136, 216, 167, 219, 129, 216,
+			175, 91, 35, 84, 6, 118, 108, 113, 72, 0, 9, 2, 216, 167, 35, 55, 113, 83, 0, 0, 15, 6, 217, 133, 216, 175, 216, 170, 65, 122,
+			72, 6, 35, 47, 0, 11, 2, 216, 166, 107, 6, 35, 65, 88, 35, 0, 0, 23, 10, 216, 180, 218, 169, 216, 179, 216, 170, 219, 129, 91,
+			113, 49, 6, 35, 89, 47, 13, 4, 35, 0, 0, 12, 2, 219, 140, 143, 119, 139, 112, 15, 57, 114, 0, 0, 0, 0, 11, 2, 216, 161,
+			108, 35, 65, 88, 35, 108, 0, 7, 2, 218, 145, 70, 114, 0, 0, 0, 14, 6, 217, 133, 217, 132, 216, 167, 65, 6, 113, 55, 118, 0,
+			8, 2, 216, 175, 72, 118, 55, 0, 0, 7, 2, 216, 174, 101, 114, 0, 0, 12, 2, 216, 173, 71, 35, 70, 112, 15, 108, 114, 0, 0,
+			9, 134, 216, 170, 218, 190, 219, 140, 72, 8, 2, 216, 172, 79, 112, 65, 0, 0, 7, 2, 216, 171, 89, 114, 0, 0, 13, 6, 216, 167,
+			216, 168, 217, 134, 6, 113, 71, 50, 0, 14, 6, 217, 133, 217, 132, 219, 146, 65, 6, 113, 55, 114, 0, 9, 134, 216, 170, 218, 190, 219,
+			146, 72, 12, 2, 219, 146, 71, 35, 70, 112, 15, 57, 114, 0, 7, 2, 216, 170, 47, 114, 0, 0, 0, 7, 2, 218, 152, 90, 114, 0,
+			7, 2, 216, 168, 71, 114, 0, 0, 11, 4, 216, 170, 217, 133, 47, 122, 65, 0, 72, 8, 2, 216, 183, 47, 121, 114, 0, 0, 17, 8,
+			216, 175, 216, 167, 216, 174, 217, 132, 72, 6, 118, 101, 113, 55, 0, 15, 6, 216, 179, 216, 174, 217, 134, 89, 122, 101, 6, 35, 50, 0,
+			9, 2, 216, 182, 88, 122, 118, 72, 0, 0, 9, 2, 216, 181, 89, 122, 118, 72, 0, 0, 8, 2, 216, 180, 91, 112, 50, 0, 0, 8,
+			2, 216, 179, 89, 112, 50, 0, 0, 20, 4, 216, 170, 217, 136, 47, 6, 40, 15, 50, 6, 114, 0, 81, 217, 134, 219, 146, 32, 7, 2,
+			216, 178, 88, 114, 0, 0, 7, 2, 216, 177, 51, 114, 0, 0, 14, 6, 217, 134, 216, 172, 219, 140, 50, 6, 113, 79, 112, 0, 23, 10,
+			217, 133, 217, 134, 216, 170, 217, 130, 217, 132, 65, 4, 122, 50, 47, 6, 35, 104, 113, 55, 0, 8, 2, 216, 176, 88, 118, 55, 0, 0,
+			20, 8, 217, 133, 218, 169, 216, 177, 216, 177, 65, 4, 122, 49, 35, 51, 6, 35, 51, 0, 8, 2, 218, 175, 81, 118, 83, 0, 0, 0,
+			16, 8, 216, 168, 216, 167, 218, 169, 216, 179, 71, 6, 118, 49, 89, 0, 20, 8, 217, 133, 217, 130, 216, 175, 216, 179, 65, 4, 122, 104,
+			35, 72, 6, 35, 89, 0, 0, 0, 0, 18, 8, 216, 168, 216, 172, 217, 132, 219, 140, 71, 6, 113, 79, 55, 4, 112, 0, 20, 10, 216,
+			167, 217, 134, 217, 134, 218, 175, 216, 178, 113, 50, 6, 113, 50, 81, 88, 0, 8, 2, 216, 186, 100, 134, 50, 0, 0, 21, 10, 216, 168,
+			216, 184, 216, 167, 219, 129, 216, 177, 71, 35, 92, 6, 118, 108, 113, 51, 0, 8, 2, 218, 169, 49, 118, 83, 0, 7, 2, 216, 185, 134,
+			50, 0, 0, 19, 2, 217, 176, 4, 35, 55, 113, 83, 65, 35, 104, 89, 6, 123, 51, 4, 35, 0, 8, 2, 216, 184, 88, 121, 114, 0,
+			0, 17, 8, 216, 173, 217, 133, 217, 132, 219, 129, 108, 6, 35, 65, 55, 35, 0, 0, 7, 2, 217, 190, 48, 114, 0, 0, 0, 0, 15,
+			6, 218, 175, 219, 140, 216, 167, 81, 6, 35, 57, 118, 0, 72, 0, 0, 23, 10, 217, 133, 216, 177, 216, 170, 216, 168, 219, 129, 65, 4,
+			35, 51, 47, 6, 35, 71, 4, 35, 0, 7, 2, 217, 185, 139, 114, 0, 0, 26, 12, 216, 180, 217, 133, 217, 136, 217, 132, 219, 140, 216,
+			170, 91, 4, 122, 65, 123, 55, 112, 38, 6, 35, 47, 0, 0, 9, 134, 216, 170, 218, 190, 216, 167, 72, 0, 16, 2, 218, 190, 72, 121,
+			15, 80, 35, 91, 65, 112, 15, 108, 114, 0, 0, 0, 0, 0, 15, 6, 218, 169, 216, 179, 219, 146, 49, 6, 113, 89, 114, 0, 72, 10,
+			2, 218, 186, 146, 122, 50, 50, 35, 0, 0, 14, 6, 217, 133, 217, 132, 218, 169, 65, 6, 122, 55, 49, 0, 0, 0, 17, 8, 217, 129,
+			216, 167, 216, 170, 216, 173, 83, 6, 118, 47, 116, 108, 0, 0, 20, 10, 216, 185, 219, 129, 216, 175, 217, 136, 218, 186, 4, 119, 108, 72,
+			6, 119, 50, 0, 21, 10, 216, 180, 216, 175, 218, 175, 216, 167, 217, 134, 91, 4, 122, 72, 81, 6, 118, 50, 0, 0, 21, 10, 216, 170,
+			216, 173, 216, 177, 219, 140, 218, 169, 47, 4, 114, 108, 51, 6, 112, 49, 0, 14, 6, 216, 172, 216, 177, 217, 133, 79, 6, 122, 51, 65,
+			0, 19, 8, 218, 169, 217, 132, 217, 134, 218, 175, 49, 6, 113, 55, 113, 50, 4, 81, 0, 0, 23, 10, 217, 133, 217, 134, 217, 130, 217,
+			132, 216, 168, 65, 4, 122, 50, 104, 6, 35, 55, 113, 71, 0, 0, 20, 10, 216, 168, 219, 140, 217, 185, 217, 134, 218, 175, 71, 114, 139,
+			6, 113, 50, 81, 0, 0, 0, 0, 21, 10, 217, 134, 219, 140, 216, 180, 217, 134, 217, 132, 50, 4, 116, 91, 50, 6, 35, 55, 0, 25,
+			12, 216, 175, 216, 177, 216, 172, 217, 134, 217, 136, 218, 186, 72, 4, 35, 51, 79, 35, 50, 6, 119, 50, 0, 0, 0, 0, 31, 14, 216,
+			162, 216, 166, 218, 136, 219, 140, 217, 132, 216, 178, 217, 133, 6, 118, 113, 140, 4, 112, 38, 35, 55, 4, 113, 88, 35, 65, 0, 0, 14,
+			6, 218, 169, 216, 179, 219, 140, 49, 6, 113, 89, 112, 0, 0, 18, 8, 216, 167, 216, 174, 216, 170, 216, 177, 4, 35, 101, 47, 6, 35,
+			51, 0, 0, 14, 6, 217, 133, 216, 172, 218, 190, 65, 6, 122, 144, 0, 72, 0, 0, 21, 10, 216, 167, 217, 134, 218, 175, 217, 132, 216,
+			180, 6, 113, 50, 81, 55, 4, 113, 91, 0, 15, 6, 218, 169, 216, 170, 216, 168, 49, 6, 122, 47, 122, 71, 0, 0, 0, 23, 12, 217,
+			133, 216, 181, 217, 134, 217, 136, 216, 185, 219, 140, 65, 4, 35, 93, 50, 6, 123, 37, 0, 23, 12, 217, 133, 216, 181, 217, 134, 217, 136,
+			216, 185, 219, 140, 65, 4, 35, 93, 50, 6, 123, 37, 0, 0, 0, 19, 8, 217, 133, 216, 171, 216, 168, 216, 170, 65, 4, 122, 89, 71,
+			6, 35, 47, 0, 0, 21, 10, 217, 133, 216, 167, 217, 134, 217, 134, 216, 175, 65, 118, 50, 6, 113, 50, 72, 0, 65, 20, 10, 217, 136,
+			217, 136, 217, 185, 217, 134, 218, 175, 84, 119, 139, 6, 113, 50, 81, 0, 0, 0, 25, 12, 217, 129, 216, 167, 216, 166, 216, 177, 217, 134,
+			218, 175, 83, 6, 118, 57, 113, 51, 4, 113, 50, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 10, 217, 134, 217, 130,
+			216, 179, 216, 167, 217, 134, 50, 4, 122, 104, 89, 6, 118, 50, 0, 20, 10, 216, 185, 217, 133, 216, 177, 216, 167, 217, 134, 4, 113, 65,
+			51, 6, 118, 50, 0, 0, 0, 21, 10, 216, 167, 216, 170, 216, 181, 216, 167, 217, 132, 4, 113, 47, 113, 93, 6, 118, 55, 0, 0, 17,
+			8, 216, 174, 217, 132, 216, 167, 217, 129, 101, 113, 55, 6, 118, 83, 0, 0, 0, 13, 6, 216, 175, 217, 136, 216, 177, 72, 6, 123, 51,
+			0, 0, 17, 8, 218, 175, 216, 177, 219, 140, 216, 178, 81, 122, 51, 6, 114, 88, 0, 23, 10, 217, 133, 216, 179, 217, 132, 216, 179, 217,
+			132, 65, 4, 122, 89, 35, 55, 89, 6, 35, 55, 0, 0, 0, 0, 0, 0, 17, 8, 216, 167, 217, 134, 217, 136, 216, 177, 6, 35, 50,
+			84, 35, 51, 0, 11, 4, 216, 179, 219, 129, 89, 6, 116, 108, 0, 0, 14, 6, 218, 175, 216, 180, 216, 170, 81, 6, 35, 91, 47, 0,
+			0, 0, 0, 0, 0, 0, 20, 8, 217, 133, 216, 173, 216, 168, 216, 170, 65, 4, 122, 108, 35, 71, 6, 35, 47, 0, 0, 23, 12, 217,
+			133, 216, 172, 217, 133, 217, 136, 216, 185, 219, 129, 65, 4, 35, 79, 65, 6, 123, 35, 0, 0, 17, 8, 216, 177, 216, 167, 216, 186, 216,
+			168, 51, 6, 118, 100, 113, 71, 0, 0, 0, 0, 0, 0, 0, 7, 132, 216, 179, 219, 146, 72, 0, 0, 13, 6, 216, 185, 216, 180, 217,
+			130, 6, 113, 91, 104, 0, 0, 0, 0, 18, 10, 216, 167, 219, 140, 216, 172, 216, 167, 216, 175, 37, 79, 6, 118, 72, 0, 17, 8, 216,
+			173, 216, 172, 217, 136, 217, 133, 108, 122, 79, 6, 123, 65, 0, 0, 0, 24, 12, 216, 167, 217, 134, 216, 179, 216, 175, 216, 167, 216, 175,
+			4, 113, 50, 89, 113, 72, 6, 118, 72, 0, 0, 23, 12, 217, 133, 216, 172, 217, 133, 217, 136, 216, 185, 219, 146, 65, 4, 35, 79, 65,
+			6, 123, 114, 0, 21, 10, 217, 133, 217, 134, 216, 167, 216, 179, 216, 168, 65, 122, 50, 6, 118, 89, 113, 71, 0, 0, 18, 8, 216, 179,
+			216, 179, 217, 185, 217, 133, 89, 113, 89, 139, 6, 35, 65, 0, 0, 0, 0, 25, 12, 216, 170, 217, 136, 217, 130, 216, 185, 216, 167, 216,
+			170, 47, 4, 35, 84, 35, 104, 119, 6, 118, 47, 0, 0, 0, 0, 0, 0, 0, 0, 22, 10, 218, 169, 216, 177, 218, 169, 217, 185, 216,
+			177, 49, 51, 113, 49, 113, 139, 6, 35, 51, 0, 30, 14, 216, 162, 216, 166, 216, 175, 219, 140, 217, 132, 216, 179, 217, 185, 6, 118, 113,
+			140, 4, 112, 38, 35, 55, 4, 113, 89, 139, 0, 0, 19, 8, 217, 129, 216, 177, 216, 181, 216, 170, 83, 4, 122, 51, 93, 6, 35, 47,
+			0, 0, 21, 10, 216, 167, 216, 170, 216, 173, 216, 167, 216, 175, 4, 113, 47, 35, 108, 6, 118, 72, 0, 12, 4, 219, 140, 219, 129, 57,
+			6, 114, 108, 0, 72, 0, 20, 10, 216, 167, 216, 180, 216, 167, 216, 185, 216, 170, 4, 113, 91, 118, 6, 118, 47, 0, 0, 0, 0, 30,
+			6, 218, 169, 219, 140, 216, 167, 49, 6, 112, 38, 118, 15, 79, 6, 118, 114, 0, 72, 81, 216, 172, 216, 167, 216, 166, 219, 146, 32, 26,
+			6, 218, 169, 219, 140, 216, 167, 49, 57, 6, 118, 15, 108, 6, 123, 118, 0, 81, 219, 129, 217, 136, 216, 167, 32, 28, 6, 218, 169, 219,
+			140, 216, 167, 49, 6, 112, 38, 118, 15, 81, 6, 35, 57, 118, 0, 81, 218, 175, 219, 140, 216, 167, 32, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 17, 8, 216, 168, 216, 174, 217, 136, 216, 175, 71, 6, 35, 101, 122, 72, 0, 0, 17, 8, 219, 140, 219, 129, 219, 140, 218,
+			186, 57, 35, 108, 6, 112, 50, 0, 19, 8, 217, 136, 216, 173, 216, 180, 216, 170, 84, 4, 114, 108, 91, 6, 35, 47, 0, 0, 0, 14,
+			6, 218, 169, 219, 140, 218, 186, 49, 6, 112, 50, 0, 72, 15, 6, 217, 130, 217, 136, 216, 170, 104, 123, 84, 6, 35, 47, 0, 0, 0,
+			0, 0, 21, 10, 216, 167, 217, 134, 218, 190, 219, 140, 218, 186, 4, 122, 50, 108, 6, 114, 50, 0, 72, 0, 0, 0, 20, 8, 217, 133,
+			217, 130, 216, 177, 216, 177, 65, 4, 122, 104, 35, 51, 6, 35, 51, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 96, 6, 0, 0,
+			48, 0, 0, 0, 97, 6, 0, 0, 49, 0, 0, 0, 98, 6, 0, 0, 50, 0, 0, 0, 99, 6, 0, 0, 51, 0, 0, 0, 100, 6,
+			0, 0, 52, 0, 0, 0, 101, 6, 0, 0, 53, 0, 0, 0, 102, 6, 0, 0, 54, 0, 0, 0, 103, 6, 0, 0, 55, 0, 0, 0,
+			104, 6, 0, 0, 56, 0, 0, 0, 105, 6, 0, 0, 57, 0, 0, 0, 74, 6, 0, 0, 204, 6, 0, 0, 204, 6, 112, 6, 39, 6,
+			0, 0, 0, 0, 0, 0, 6, 18, 66, 217, 142, 0, 217, 144, 0, 217, 143, 0, 217, 136, 0, 219, 140, 0, 216, 185, 0, 216, 167, 0,
+			219, 146, 0, 7, 6, 18, 67, 216, 168, 0, 217, 190, 0, 216, 170, 0, 217, 185, 0, 216, 171, 0, 216, 172, 0, 218, 134, 0, 216, 173,
+			0, 216, 174, 0, 216, 175, 0, 218, 136, 0, 216, 176, 0, 216, 177, 0, 218, 145, 0, 216, 178, 0, 218, 152, 0, 216, 179, 0, 216, 180,
+			0, 216, 181, 0, 216, 182, 0, 216, 183, 0, 216, 184, 0, 216, 186, 0, 217, 129, 0, 217, 130, 0, 218, 169, 0, 218, 175, 0, 217, 132,
+			0, 217, 133, 0, 217, 134, 0, 219, 129, 0, 216, 166, 0, 7, 6, 1, 34, 0, 3, 0, 7, 6, 1, 35, 0, 216, 170, 216, 180, 3,
+			6, 118, 47, 113, 91, 0, 216, 166, 2, 18, 67, 3, 6, 118, 113, 0, 3, 118, 0, 219, 129, 216, 179, 216, 170, 3, 118, 108, 6, 113,
+			89, 47, 0, 7, 6, 1, 36, 0, 3, 0, 7, 6, 1, 37, 0, 3, 135, 0, 7, 6, 1, 39, 0, 3, 0, 7, 6, 1, 39, 0,
+			3, 0, 1, 18, 66, 2, 18, 67, 3, 6, 113, 0, 7, 6, 1, 40, 0, 8, 2, 18, 66, 3, 0, 218, 169, 216, 171, 216, 177, 3,
+			4, 35, 49, 89, 6, 35, 51, 0, 217, 129, 216, 179, 216, 177, 8, 3, 4, 35, 83, 89, 6, 35, 51, 0, 217, 130, 217, 132, 219, 140,
+			216, 170, 3, 4, 35, 104, 35, 55, 112, 38, 6, 35, 47, 0, 217, 129, 216, 170, 216, 170, 216, 167, 216, 173, 3, 4, 113, 47, 113, 47,
+			6, 118, 108, 0, 216, 170, 217, 129, 216, 167, 217, 130, 8, 3, 4, 113, 47, 113, 83, 6, 118, 104, 0, 217, 134, 217, 130, 217, 132, 216,
+			167, 216, 168, 3, 4, 113, 50, 104, 113, 55, 6, 118, 71, 0, 216, 177, 216, 170, 8, 2, 18, 67, 3, 4, 113, 51, 47, 113, 0, 217,
+			132, 216, 178, 216, 167, 217, 133, 3, 4, 113, 55, 88, 6, 118, 65, 0, 217, 133, 216, 170, 216, 173, 216, 167, 217, 134, 3, 4, 113, 65,
+			47, 113, 108, 6, 118, 50, 0, 217, 133, 218, 169, 216, 167, 217, 134, 8, 3, 4, 113, 65, 49, 6, 118, 50, 0, 217, 133, 216, 175, 216,
+			167, 216, 175, 3, 4, 113, 65, 72, 6, 118, 72, 0, 216, 172, 216, 170, 217, 133, 216, 167, 216, 185, 3, 4, 113, 79, 47, 113, 65, 6,
+			118, 0, 216, 179, 216, 170, 216, 173, 216, 181, 216, 167, 217, 132, 3, 4, 113, 89, 47, 4, 114, 108, 93, 6, 118, 55, 0, 216, 179, 216,
+			170, 216, 171, 217, 134, 3, 4, 113, 89, 47, 6, 35, 89, 50, 0, 216, 179, 216, 170, 8, 2, 18, 67, 3, 4, 113, 89, 47, 113, 0,
+			216, 179, 217, 132, 216, 167, 217, 133, 3, 4, 113, 89, 55, 6, 118, 65, 0, 216, 180, 216, 170, 219, 129, 216, 167, 216, 177, 3, 4, 113,
+			91, 47, 113, 108, 6, 118, 51, 0, 216, 181, 217, 132, 216, 167, 216, 173, 3, 4, 113, 93, 55, 6, 118, 108, 0, 216, 174, 216, 170, 8,
+			2, 18, 67, 3, 4, 113, 101, 47, 113, 0, 217, 130, 216, 170, 8, 2, 18, 67, 3, 4, 113, 104, 47, 113, 0, 217, 134, 216, 170, 219,
+			140, 216, 179, 3, 4, 122, 50, 47, 6, 112, 89, 0, 217, 134, 216, 170, 216, 167, 217, 132, 219, 140, 216, 179, 3, 4, 122, 50, 47, 118,
+			55, 6, 112, 89, 0, 217, 139, 2, 32, 14, 128, 128, 130, 3, 6, 35, 50, 0, 217, 134, 216, 175, 218, 190, 219, 140, 216, 177, 3, 6,
+			35, 50, 138, 114, 51, 0, 216, 170, 217, 134, 8, 3, 6, 113, 47, 50, 0, 217, 134, 216, 170, 8, 2, 18, 67, 3, 6, 113, 50, 47,
+			4, 35, 0, 217, 134, 216, 170, 216, 184, 8, 3, 6, 113, 50, 47, 4, 113, 92, 0, 216, 168, 216, 170, 216, 175, 216, 167, 8, 3, 6,
+			113, 71, 47, 4, 113, 72, 118, 0, 216, 185, 216, 170, 8, 3, 6, 114, 47, 113, 0, 216, 173, 8, 2, 18, 67, 3, 6, 116, 108, 0,
+			216, 170, 1, 21, 2, 32, 14, 128, 128, 130, 3, 6, 118, 47, 0, 217, 185, 218, 190, 216, 170, 8, 3, 6, 122, 141, 47, 0, 217, 185,
+			218, 190, 217, 134, 8, 3, 6, 122, 141, 50, 0, 8, 3, 35, 0, 216, 179, 217, 133, 216, 168, 217, 132, 219, 140, 8, 3, 35, 89, 6,
+			35, 65, 71, 55, 112, 0, 219, 140, 216, 177, 216, 167, 217, 134, 3, 112, 51, 6, 118, 50, 0, 219, 140, 217, 133, 216, 167, 217, 134, 8,
+			3, 112, 65, 6, 118, 50, 0, 217, 134, 216, 185, 216, 167, 217, 133, 3, 113, 50, 6, 118, 65, 0, 217, 134, 216, 179, 216, 167, 217, 134,
+			8, 3, 113, 50, 89, 6, 118, 50, 0, 216, 182, 216, 167, 217, 129, 8, 3, 113, 88, 6, 118, 83, 0, 216, 179, 216, 170, 216, 185, 217,
+			129, 3, 113, 89, 47, 6, 112, 83, 0, 219, 140, 8, 3, 114, 0, 216, 185, 217, 132, 216, 167, 217, 134, 3, 114, 55, 6, 118, 50, 0,
+			216, 185, 216, 178, 216, 167, 216, 178, 3, 114, 88, 6, 118, 88, 0, 3, 118, 0, 219, 129, 2, 32, 3, 118, 108, 0, 216, 166, 2, 18,
+			67, 3, 118, 113, 0, 216, 170, 216, 177, 8, 3, 122, 47, 6, 35, 51, 0, 216, 170, 216, 177, 8, 2, 18, 66, 3, 122, 47, 51, 0,
+			217, 132, 216, 172, 218, 190, 8, 3, 122, 55, 6, 35, 79, 107, 0, 217, 132, 217, 185, 8, 3, 122, 55, 6, 35, 139, 0, 217, 132, 216,
+			172, 218, 190, 8, 2, 18, 66, 3, 122, 55, 79, 107, 0, 217, 132, 217, 185, 8, 2, 18, 66, 3, 122, 55, 139, 0, 217, 133, 217, 134,
+			218, 175, 8, 3, 122, 65, 6, 35, 50, 81, 0, 217, 133, 219, 140, 216, 175, 8, 3, 122, 65, 6, 112, 72, 0, 216, 168, 218, 190, 216,
+			177, 8, 3, 122, 71, 107, 6, 35, 51, 0, 216, 168, 218, 190, 216, 177, 8, 2, 18, 66, 3, 122, 71, 107, 51, 0, 216, 172, 218, 145,
+			8, 3, 122, 79, 6, 35, 70, 0, 216, 172, 218, 145, 8, 2, 18, 66, 3, 122, 79, 70, 0, 218, 134, 218, 190, 217, 132, 8, 3, 122,
+			80, 107, 6, 35, 55, 0, 218, 134, 218, 190, 217, 132, 8, 2, 18, 66, 3, 122, 80, 107, 55, 0, 216, 181, 217, 136, 217, 132, 3, 122,
+			93, 6, 123, 55, 0, 217, 185, 218, 190, 216, 167, 216, 170, 8, 3, 122, 141, 6, 118, 47, 0, 217, 136, 8, 3, 123, 0, 7, 6, 1,
+			41, 0, 2, 18, 66, 3, 71, 0, 216, 177, 216, 179, 216, 177, 3, 71, 4, 35, 51, 89, 6, 35, 51, 0, 216, 186, 216, 167, 217, 136,
+			216, 170, 3, 71, 4, 35, 100, 118, 84, 6, 35, 47, 0, 216, 173, 216, 177, 216, 167, 217, 134, 3, 71, 4, 121, 108, 51, 6, 118, 50,
+			0, 216, 166, 219, 140, 3, 71, 6, 35, 112, 0, 219, 140, 217, 136, 219, 140, 3, 71, 6, 112, 84, 112, 0, 218, 169, 218, 190, 216, 177,
+			8, 2, 18, 66, 3, 71, 6, 113, 49, 107, 51, 0, 218, 175, 218, 145, 8, 2, 18, 66, 3, 71, 6, 113, 81, 70, 0, 217, 185, 218,
+			190, 216, 167, 8, 3, 71, 6, 113, 141, 118, 0, 219, 146, 8, 2, 14, 128, 132, 130, 3, 71, 6, 114, 0, 219, 140, 217, 136, 216, 167,
+			8, 3, 71, 6, 114, 84, 118, 0, 219, 129, 8, 2, 18, 67, 3, 71, 6, 116, 108, 0, 216, 172, 218, 190, 8, 3, 71, 6, 122, 79,
+			107, 0, 216, 178, 216, 177, 218, 175, 3, 71, 6, 122, 88, 122, 51, 4, 81, 0, 217, 136, 218, 145, 218, 190, 3, 71, 6, 123, 70, 107,
+			0, 219, 140, 216, 167, 217, 134, 8, 3, 71, 35, 57, 6, 118, 50, 0, 216, 175, 217, 132, 8, 2, 18, 67, 3, 71, 35, 72, 6, 35,
+			55, 0, 217, 145, 2, 18, 66, 3, 71, 71, 0, 217, 145, 3, 71, 71, 109, 0, 218, 190, 219, 140, 218, 169, 3, 71, 107, 6, 112, 49,
+			0, 218, 190, 219, 140, 218, 175, 3, 71, 107, 6, 112, 81, 0, 218, 190, 217, 136, 218, 169, 3, 71, 107, 6, 123, 49, 0, 218, 190, 217,
+			136, 217, 132, 3, 71, 107, 6, 123, 55, 0, 3, 71, 109, 0, 218, 169, 218, 190, 216, 177, 8, 3, 71, 113, 49, 107, 6, 35, 51, 0,
+			218, 134, 218, 190, 218, 145, 8, 3, 71, 113, 80, 107, 6, 35, 70, 0, 218, 134, 218, 190, 218, 145, 8, 2, 18, 66, 3, 71, 113, 80,
+			107, 70, 0, 218, 175, 218, 145, 8, 3, 71, 113, 81, 6, 35, 70, 0, 218, 175, 216, 167, 218, 145, 3, 71, 113, 81, 6, 118, 70, 0,
+			218, 190, 2, 18, 66, 3, 137, 0, 218, 190, 3, 137, 109, 0, 7, 6, 1, 43, 0, 218, 190, 2, 18, 66, 3, 25, 0, 218, 190, 3,
+			25, 109, 0, 2, 18, 66, 3, 47, 0, 219, 140, 216, 167, 216, 177, 8, 3, 47, 4, 35, 112, 38, 6, 118, 51, 0, 216, 173, 217, 130,
+			219, 140, 217, 130, 3, 47, 4, 116, 108, 104, 6, 112, 104, 0, 216, 177, 216, 172, 217, 133, 8, 3, 47, 6, 35, 51, 79, 4, 122, 65,
+			0, 216, 172, 216, 178, 8, 3, 47, 6, 35, 79, 88, 0, 217, 136, 216, 167, 8, 3, 47, 6, 35, 84, 118, 0, 219, 140, 1, 21, 2,
+			32, 14, 128, 128, 130, 3, 47, 6, 112, 0, 219, 140, 216, 179, 216, 177, 8, 3, 47, 6, 112, 89, 51, 0, 219, 146, 1, 21, 2, 32,
+			14, 128, 128, 130, 3, 47, 6, 114, 0, 219, 129, 8, 2, 18, 67, 3, 47, 6, 116, 108, 0, 216, 167, 1, 21, 2, 32, 14, 128, 128,
+			130, 3, 47, 6, 118, 0, 217, 133, 219, 129, 8, 3, 47, 6, 122, 65, 108, 0, 216, 172, 216, 177, 216, 168, 3, 47, 35, 79, 6, 35,
+			51, 71, 0, 217, 130, 216, 177, 216, 177, 3, 47, 35, 104, 6, 35, 51, 122, 51, 0, 217, 145, 2, 18, 66, 3, 47, 47, 0, 217, 145,
+			3, 47, 47, 109, 0, 3, 47, 109, 0, 7, 6, 1, 44, 0, 2, 18, 66, 3, 89, 0, 217, 145, 2, 18, 66, 3, 89, 89, 0, 217,
+			145, 3, 89, 89, 109, 0, 3, 89, 109, 0, 7, 6, 1, 45, 0, 2, 18, 66, 3, 79, 0, 217, 136, 216, 167, 8, 3, 79, 6, 35,
+			84, 118, 0, 219, 140, 216, 170, 8, 3, 79, 6, 112, 47, 0, 217, 134, 216, 179, 8, 3, 79, 6, 113, 50, 89, 0, 219, 129, 8, 2,
+			18, 67, 3, 79, 6, 116, 108, 0, 216, 167, 217, 134, 216, 168, 3, 79, 6, 118, 50, 113, 71, 0, 217, 133, 217, 132, 8, 3, 79, 6,
+			122, 65, 55, 0, 216, 175, 216, 167, 8, 3, 79, 6, 122, 72, 118, 0, 217, 145, 2, 18, 66, 3, 79, 79, 0, 217, 145, 3, 79, 79,
+			109, 0, 3, 79, 109, 0, 218, 190, 2, 18, 66, 3, 144, 0, 218, 190, 217, 136, 217, 185, 3, 144, 6, 123, 139, 0, 218, 190, 3, 144,
+			109, 0, 7, 6, 1, 46, 0, 2, 32, 3, 6, 35, 108, 0, 4, 1, 18, 66, 2, 32, 3, 108, 0, 2, 18, 66, 0, 218, 169, 217,
+			133, 216, 177, 216, 167, 217, 134, 3, 108, 4, 122, 49, 65, 35, 51, 6, 118, 50, 0, 218, 169, 217, 136, 217, 133, 216, 170, 3, 108, 4,
+			122, 49, 123, 65, 6, 35, 47, 0, 217, 136, 216, 167, 217, 132, 8, 3, 108, 35, 84, 6, 118, 55, 0, 217, 145, 2, 18, 66, 3, 108,
+			108, 0, 217, 145, 3, 108, 108, 109, 0, 3, 108, 109, 0, 7, 6, 1, 47, 0, 4, 1, 21, 2, 216, 170, 3, 101, 0, 2, 18, 66,
+			0, 219, 140, 216, 167, 8, 3, 101, 6, 35, 57, 118, 0, 217, 136, 216, 175, 8, 3, 101, 6, 122, 72, 0, 217, 136, 216, 180, 8, 3,
+			101, 6, 122, 91, 0, 217, 136, 216, 167, 219, 129, 216, 180, 8, 3, 101, 84, 6, 118, 108, 113, 91, 0, 217, 145, 2, 18, 66, 3, 101,
+			101, 0, 217, 145, 3, 101, 101, 109, 0, 3, 101, 109, 0, 7, 6, 1, 48, 0, 2, 18, 66, 3, 72, 0, 216, 177, 216, 174, 217, 136,
+			216, 167, 216, 179, 216, 170, 3, 72, 4, 35, 51, 101, 84, 6, 118, 89, 47, 0, 217, 132, 218, 134, 216, 179, 217, 190, 3, 72, 4, 113,
+			55, 80, 6, 35, 89, 48, 0, 216, 177, 216, 172, 3, 72, 6, 35, 51, 79, 0, 219, 140, 216, 167, 2, 32, 3, 72, 6, 112, 38, 118,
+			0, 219, 140, 217, 136, 216, 167, 3, 72, 6, 112, 84, 118, 0, 217, 129, 216, 167, 216, 185, 3, 72, 6, 113, 83, 118, 0, 219, 129, 8,
+			2, 18, 67, 3, 72, 6, 116, 108, 0, 219, 129, 216, 180, 216, 170, 3, 72, 6, 116, 108, 91, 6, 35, 47, 0, 217, 136, 216, 179, 216,
+			177, 8, 3, 72, 6, 123, 89, 51, 0, 217, 145, 2, 18, 66, 3, 72, 72, 0, 217, 145, 3, 72, 72, 109, 0, 3, 72, 109, 0, 217,
+			134, 219, 140, 216, 167, 3, 72, 122, 50, 6, 112, 38, 118, 0, 218, 190, 2, 18, 66, 3, 138, 0, 218, 190, 219, 140, 217, 133, 3, 138,
+			6, 112, 65, 0, 218, 190, 3, 138, 109, 0, 7, 6, 1, 49, 0, 2, 18, 66, 3, 86, 0, 219, 129, 8, 2, 18, 67, 3, 86, 6,
+			116, 108, 0, 217, 145, 2, 18, 66, 3, 86, 86, 0, 217, 145, 3, 86, 86, 109, 0, 3, 86, 109, 0, 7, 6, 1, 50, 0, 4, 1,
+			21, 2, 216, 175, 3, 51, 0, 1, 21, 2, 217, 185, 0, 1, 21, 2, 218, 134, 0, 1, 21, 2, 218, 136, 0, 2, 18, 66, 0, 217,
+			129, 216, 170, 8, 3, 51, 6, 35, 83, 13, 47, 0, 219, 129, 8, 2, 18, 67, 3, 51, 6, 116, 108, 0, 218, 169, 217, 134, 8, 3,
+			51, 6, 122, 49, 50, 0, 216, 174, 8, 3, 51, 6, 122, 101, 0, 217, 145, 2, 108, 48, 49, 3, 51, 51, 0, 217, 145, 3, 51, 51,
+			109, 0, 216, 175, 219, 129, 1, 21, 2, 32, 3, 51, 72, 4, 35, 0, 3, 51, 109, 0, 7, 6, 1, 51, 0, 2, 18, 66, 3, 88,
+			0, 217, 132, 216, 178, 217, 132, 8, 3, 88, 4, 35, 55, 88, 6, 35, 55, 0, 217, 134, 216, 175, 8, 3, 88, 6, 113, 50, 72, 0,
+			219, 129, 8, 2, 18, 67, 3, 88, 6, 116, 108, 0, 217, 145, 2, 18, 66, 3, 88, 88, 0, 217, 145, 3, 88, 88, 109, 0, 3, 88,
+			109, 0, 7, 6, 1, 52, 0, 4, 1, 21, 2, 216, 170, 3, 89, 0, 1, 21, 2, 217, 185, 0, 2, 18, 66, 0, 216, 177, 218, 175,
+			216, 177, 217, 133, 3, 89, 4, 35, 51, 81, 6, 35, 51, 65, 0, 219, 140, 216, 175, 218, 190, 3, 89, 6, 112, 138, 0, 219, 140, 218,
+			169, 218, 190, 3, 89, 6, 112, 145, 0, 217, 134, 216, 175, 218, 190, 3, 89, 6, 113, 50, 138, 0, 217, 132, 216, 179, 217, 132, 8, 3,
+			89, 6, 113, 55, 89, 4, 113, 55, 0, 219, 129, 8, 2, 18, 67, 3, 89, 6, 116, 108, 0, 217, 134, 8, 2, 18, 66, 3, 89, 6,
+			122, 50, 0, 216, 177, 216, 174, 8, 3, 89, 6, 122, 51, 101, 0, 219, 140, 216, 167, 216, 179, 216, 170, 3, 89, 57, 118, 89, 6, 35,
+			47, 0, 217, 145, 2, 18, 66, 3, 89, 89, 0, 217, 145, 3, 89, 89, 109, 0, 3, 89, 109, 0, 216, 170, 216, 167, 216, 177, 8, 3,
+			89, 113, 47, 6, 118, 51, 0, 217, 190, 216, 177, 216, 175, 8, 3, 89, 122, 48, 6, 122, 51, 72, 0, 217, 132, 216, 172, 218, 190, 8,
+			3, 89, 122, 55, 6, 35, 79, 107, 0, 217, 132, 216, 172, 218, 190, 8, 2, 18, 66, 3, 89, 122, 55, 79, 107, 0, 216, 175, 218, 190,
+			216, 177, 8, 3, 89, 122, 72, 107, 6, 35, 51, 0, 216, 175, 218, 190, 216, 177, 8, 2, 18, 66, 3, 89, 122, 72, 107, 51, 0, 216,
+			170, 216, 167, 217, 134, 1, 21, 2, 32, 3, 113, 89, 47, 6, 118, 50, 0, 216, 170, 216, 167, 217, 134, 219, 140, 1, 21, 2, 32, 3,
+			113, 89, 47, 6, 118, 50, 37, 0, 7, 6, 1, 53, 0, 4, 1, 21, 2, 216, 170, 3, 91, 0, 2, 18, 66, 0, 216, 177, 217, 133,
+			217, 134, 216, 175, 3, 91, 4, 35, 51, 65, 6, 113, 50, 72, 0, 216, 174, 216, 181, 8, 3, 91, 6, 35, 101, 93, 0, 219, 129, 8,
+			2, 18, 67, 3, 91, 6, 116, 108, 0, 216, 185, 216, 177, 216, 167, 8, 3, 91, 6, 121, 51, 118, 0, 216, 185, 217, 132, 8, 3, 91,
+			6, 121, 55, 0, 216, 185, 216, 168, 8, 3, 91, 6, 121, 71, 0, 217, 145, 2, 18, 66, 3, 91, 91, 0, 217, 145, 3, 91, 91, 109,
+			0, 3, 91, 109, 0, 216, 167, 216, 185, 216, 177, 3, 91, 118, 6, 118, 113, 51, 0, 7, 6, 1, 54, 0, 217, 145, 2, 18, 66, 3,
+			89, 89, 0, 217, 145, 3, 89, 89, 109, 0, 2, 18, 66, 3, 93, 0, 217, 136, 216, 168, 3, 93, 6, 123, 71, 0, 3, 93, 109, 0,
+			7, 6, 1, 55, 0, 2, 18, 66, 3, 88, 0, 217, 145, 2, 18, 66, 3, 88, 88, 0, 217, 145, 3, 88, 88, 84, 0, 3, 88, 109,
+			0, 7, 6, 1, 56, 0, 218, 190, 2, 18, 66, 3, 25, 0, 218, 190, 3, 25, 109, 0, 2, 18, 66, 3, 47, 0, 217, 145, 2, 18,
+			66, 3, 47, 47, 0, 217, 145, 3, 47, 47, 109, 0, 3, 47, 109, 0, 7, 6, 1, 57, 0, 2, 18, 66, 3, 92, 0, 217, 145, 2,
+			18, 66, 3, 92, 92, 0, 217, 145, 3, 92, 92, 109, 0, 3, 92, 109, 0, 7, 6, 1, 58, 0, 217, 132, 219, 140, 216, 173, 216, 175,
+			3, 6, 35, 55, 116, 108, 72, 0, 219, 140, 1, 18, 67, 2, 32, 3, 6, 35, 112, 0, 219, 140, 216, 175, 8, 3, 6, 112, 72, 0,
+			219, 140, 216, 179, 8, 3, 6, 112, 89, 0, 217, 133, 216, 177, 8, 3, 6, 122, 65, 51, 0, 8, 3, 35, 0, 4, 3, 118, 0, 216,
+			167, 0, 217, 134, 217, 136, 216, 167, 217, 134, 3, 122, 50, 84, 6, 118, 50, 0, 7, 6, 1, 59, 0, 2, 18, 66, 3, 100, 0, 217,
+			145, 2, 18, 66, 3, 100, 100, 0, 217, 145, 3, 100, 100, 109, 0, 3, 100, 109, 0, 7, 6, 1, 66, 0, 2, 18, 66, 3, 83, 0,
+			218, 169, 216, 177, 8, 3, 83, 6, 113, 49, 51, 0, 217, 132, 217, 133, 3, 83, 6, 113, 55, 65, 0, 219, 129, 8, 2, 18, 67, 3,
+			83, 6, 116, 108, 0, 217, 145, 2, 18, 66, 3, 83, 83, 0, 217, 145, 3, 83, 83, 109, 0, 3, 83, 109, 0, 7, 6, 1, 67, 0,
+			2, 18, 66, 3, 104, 0, 219, 140, 216, 167, 8, 3, 104, 6, 35, 57, 118, 0, 216, 179, 216, 183, 8, 3, 104, 6, 113, 89, 47, 0,
+			216, 167, 216, 185, 216, 175, 3, 104, 6, 118, 57, 72, 0, 217, 145, 2, 18, 66, 3, 104, 104, 0, 217, 145, 3, 104, 104, 109, 0, 3,
+			104, 109, 0, 7, 6, 1, 69, 0, 2, 18, 66, 3, 55, 0, 218, 169, 218, 190, 3, 55, 6, 113, 145, 0, 219, 129, 8, 2, 18, 67,
+			3, 55, 6, 116, 108, 0, 217, 145, 2, 18, 66, 3, 55, 55, 0, 217, 145, 3, 55, 55, 109, 0, 3, 55, 109, 0, 7, 6, 1, 70,
+			0, 4, 1, 21, 2, 216, 168, 3, 65, 0, 1, 21, 2, 217, 190, 0, 2, 18, 66, 0, 217, 134, 216, 184, 216, 177, 3, 65, 4, 35,
+			50, 92, 6, 35, 51, 0, 217, 134, 216, 184, 217, 136, 216, 177, 3, 65, 4, 35, 50, 92, 6, 123, 51, 0, 216, 176, 219, 129, 216, 168,
+			3, 65, 4, 35, 86, 108, 6, 35, 71, 0, 216, 179, 218, 169, 216, 177, 216, 167, 219, 129, 217, 185, 3, 65, 4, 122, 89, 49, 4, 122,
+			51, 118, 108, 6, 35, 139, 0, 216, 174, 216, 167, 217, 132, 217, 129, 216, 170, 3, 65, 4, 122, 101, 118, 55, 113, 83, 6, 35, 47, 0,
+			217, 134, 216, 178, 217, 132, 3, 65, 6, 35, 50, 88, 4, 113, 55, 0, 216, 179, 216, 172, 216, 175, 3, 65, 6, 35, 89, 79, 4, 113,
+			72, 0, 216, 180, 216, 177, 217, 130, 3, 65, 6, 35, 91, 51, 4, 113, 104, 0, 216, 186, 216, 177, 216, 168, 3, 65, 6, 35, 100, 51,
+			4, 113, 71, 0, 217, 132, 217, 134, 8, 2, 18, 66, 3, 65, 6, 113, 55, 50, 0, 219, 129, 8, 2, 18, 67, 3, 65, 6, 116, 108,
+			0, 216, 173, 217, 129, 217, 132, 3, 65, 6, 116, 108, 83, 4, 113, 55, 0, 216, 173, 216, 179, 217, 134, 3, 65, 6, 119, 108, 89, 4,
+			113, 50, 0, 217, 132, 216, 178, 217, 133, 3, 65, 6, 122, 55, 88, 4, 113, 65, 0, 217, 132, 216, 173, 217, 130, 3, 65, 6, 122, 55,
+			108, 4, 113, 104, 0, 217, 133, 218, 169, 217, 134, 3, 65, 6, 122, 65, 49, 4, 113, 50, 0, 216, 172, 216, 177, 217, 133, 3, 65, 6,
+			122, 79, 51, 4, 113, 65, 0, 216, 179, 218, 169, 216, 177, 216, 167, 3, 65, 6, 122, 89, 49, 4, 122, 51, 118, 0, 216, 179, 217, 132,
+			217, 133, 3, 65, 6, 122, 89, 55, 4, 113, 65, 0, 216, 180, 218, 169, 217, 132, 8, 3, 65, 6, 122, 91, 49, 4, 113, 55, 0, 216,
+			174, 216, 168, 216, 177, 3, 65, 6, 122, 101, 71, 4, 113, 51, 0, 217, 145, 2, 18, 66, 3, 65, 65, 0, 217, 145, 3, 65, 65, 109,
+			0, 3, 65, 109, 0, 216, 173, 218, 169, 217, 133, 3, 65, 114, 108, 114, 49, 65, 0, 217, 136, 216, 172, 217, 136, 216, 175, 3, 65, 119,
+			79, 6, 123, 72, 0, 216, 170, 216, 181, 217, 132, 3, 65, 122, 47, 6, 35, 93, 113, 55, 0, 216, 170, 216, 173, 216, 175, 3, 65, 122,
+			47, 6, 35, 108, 113, 72, 0, 216, 183, 216, 167, 217, 132, 216, 168, 3, 65, 122, 47, 6, 118, 55, 113, 71, 0, 216, 179, 217, 132, 217,
+			133, 216, 167, 3, 65, 122, 89, 6, 35, 55, 65, 4, 118, 0, 216, 184, 216, 167, 219, 129, 216, 177, 3, 65, 122, 92, 6, 118, 108, 113,
+			51, 0, 216, 174, 216, 167, 217, 132, 217, 129, 3, 65, 122, 101, 6, 118, 55, 113, 83, 0, 217, 130, 216, 175, 217, 133, 3, 65, 122, 104,
+			6, 35, 72, 65, 0, 216, 173, 217, 130, 217, 130, 3, 65, 122, 108, 6, 35, 104, 113, 104, 0, 7, 6, 1, 71, 0, 4, 1, 21, 2,
+			216, 168, 3, 50, 0, 1, 21, 2, 216, 175, 0, 1, 21, 2, 216, 179, 0, 1, 21, 2, 217, 190, 0, 1, 21, 2, 218, 134, 0, 1,
+			21, 2, 218, 136, 0, 1, 21, 2, 218, 175, 0, 2, 18, 66, 0, 217, 136, 216, 167, 8, 3, 50, 6, 35, 84, 118, 0, 219, 129, 8,
+			2, 18, 67, 3, 50, 6, 108, 0, 219, 140, 1, 21, 2, 32, 14, 128, 128, 130, 3, 50, 6, 112, 0, 218, 134, 217, 132, 1, 21, 3,
+			50, 6, 113, 80, 55, 0, 219, 146, 1, 21, 2, 32, 14, 128, 128, 130, 3, 50, 6, 114, 0, 216, 167, 1, 21, 2, 32, 14, 128, 128,
+			130, 3, 50, 6, 118, 0, 218, 169, 216, 170, 8, 3, 50, 6, 122, 49, 47, 0, 217, 133, 216, 167, 8, 3, 50, 6, 122, 65, 118, 0,
+			217, 185, 1, 18, 66, 3, 50, 6, 139, 0, 217, 133, 216, 167, 216, 178, 8, 3, 50, 35, 65, 6, 118, 88, 0, 216, 184, 216, 177, 8,
+			3, 50, 35, 92, 6, 35, 51, 0, 217, 145, 2, 18, 66, 3, 50, 50, 0, 217, 145, 3, 50, 50, 109, 0, 218, 190, 3, 50, 108, 0,
+			3, 50, 109, 0, 218, 169, 217, 132, 8, 3, 50, 113, 49, 6, 35, 55, 0, 218, 169, 216, 167, 217, 132, 8, 3, 50, 113, 49, 6, 118,
+			55, 0, 218, 169, 217, 132, 8, 2, 18, 66, 3, 50, 113, 49, 55, 0, 217, 133, 217, 185, 8, 3, 50, 113, 65, 6, 35, 139, 0, 217,
+			133, 217, 185, 8, 2, 18, 66, 3, 50, 113, 65, 139, 0, 218, 175, 216, 167, 219, 129, 8, 3, 50, 113, 81, 6, 118, 108, 0, 216, 180,
+			216, 167, 217, 134, 3, 50, 113, 91, 6, 118, 50, 0, 216, 184, 216, 167, 217, 133, 8, 3, 50, 113, 92, 6, 118, 65, 0, 7, 6, 1,
+			73, 0, 2, 18, 66, 3, 84, 0, 217, 145, 3, 84, 84, 0, 8, 3, 84, 109, 0, 217, 143, 3, 84, 122, 0, 3, 119, 0, 4, 1,
+			18, 67, 18, 67, 18, 67, 2, 18, 67, 3, 123, 0, 216, 185, 2, 32, 0, 217, 151, 0, 217, 134, 218, 169, 219, 129, 1, 18, 67, 2,
+			32, 3, 123, 50, 49, 6, 114, 108, 0, 7, 6, 1, 76, 0, 3, 0, 7, 6, 1, 79, 0, 3, 35, 0, 4, 219, 140, 3, 116, 0,
+			219, 146, 0, 216, 185, 3, 118, 0, 217, 136, 3, 121, 0, 7, 6, 1, 80, 0, 216, 185, 3, 121, 0, 3, 122, 0, 217, 136, 3, 123,
+			0, 7, 6, 1, 81, 0, 1, 21, 2, 32, 14, 128, 128, 129, 3, 6, 114, 0, 4, 216, 185, 3, 112, 0, 219, 140, 0, 3, 113, 0,
+			7, 6, 1, 82, 0, 3, 0, 7, 6, 1, 113, 0, 3, 118, 0, 7, 6, 1, 122, 0, 2, 18, 66, 3, 139, 0, 219, 129, 8, 2,
+			18, 67, 3, 139, 6, 116, 108, 0, 218, 169, 218, 145, 8, 3, 139, 6, 122, 49, 70, 0, 216, 177, 219, 140, 217, 134, 8, 3, 139, 51,
+			6, 114, 50, 0, 216, 177, 219, 140, 217, 129, 218, 169, 3, 139, 51, 6, 114, 83, 113, 49, 0, 3, 139, 109, 0, 217, 145, 2, 18, 66,
+			3, 139, 139, 0, 217, 145, 3, 139, 139, 109, 0, 218, 190, 2, 18, 66, 3, 141, 0, 218, 190, 3, 141, 109, 0, 7, 6, 1, 127, 0,
+			2, 18, 66, 3, 48, 0, 219, 140, 218, 134, 218, 190, 3, 48, 6, 112, 143, 0, 219, 129, 8, 2, 18, 67, 3, 48, 6, 116, 108, 0,
+			217, 136, 216, 177, 8, 2, 18, 66, 3, 48, 6, 123, 51, 0, 217, 136, 218, 134, 218, 190, 3, 48, 6, 123, 143, 0, 219, 129, 217, 134,
+			218, 134, 3, 48, 35, 108, 6, 122, 50, 80, 0, 217, 145, 2, 18, 66, 3, 48, 48, 0, 217, 145, 3, 48, 48, 109, 0, 218, 190, 216,
+			177, 8, 3, 48, 107, 6, 113, 51, 0, 218, 190, 217, 136, 217, 132, 3, 48, 107, 6, 123, 55, 0, 3, 48, 109, 0, 218, 190, 2, 18,
+			66, 3, 136, 0, 218, 190, 217, 136, 217, 134, 218, 169, 3, 136, 6, 123, 50, 49, 0, 218, 190, 3, 136, 109, 0, 7, 6, 218, 134, 0,
+			2, 18, 66, 3, 80, 0, 219, 140, 216, 178, 8, 3, 80, 6, 112, 88, 0, 219, 129, 8, 2, 18, 67, 3, 80, 6, 116, 108, 0, 218,
+			169, 216, 167, 8, 3, 80, 6, 122, 49, 118, 0, 217, 136, 217, 133, 8, 3, 80, 6, 123, 65, 0, 217, 145, 2, 18, 66, 3, 80, 80,
+			0, 217, 145, 3, 80, 80, 109, 0, 3, 80, 109, 0, 218, 190, 2, 18, 66, 3, 143, 0, 218, 190, 3, 143, 109, 0, 7, 6, 218, 136,
+			0, 2, 18, 66, 3, 140, 0, 216, 177, 216, 167, 216, 166, 219, 140, 217, 136, 216, 177, 3, 140, 51, 6, 118, 57, 84, 35, 51, 0, 216,
+			178, 1, 21, 2, 32, 3, 140, 88, 0, 3, 140, 109, 0, 217, 145, 2, 18, 66, 3, 140, 140, 0, 217, 145, 3, 140, 140, 109, 0, 218,
+			190, 2, 18, 66, 3, 142, 0, 218, 190, 217, 136, 217, 134, 218, 136, 3, 142, 6, 123, 50, 140, 0, 218, 190, 3, 142, 109, 0, 7, 6,
+			218, 145, 0, 2, 18, 66, 3, 70, 0, 217, 145, 2, 18, 66, 3, 70, 70, 0, 217, 145, 3, 70, 70, 109, 0, 218, 190, 2, 18, 66,
+			3, 70, 107, 0, 218, 190, 3, 70, 107, 109, 0, 3, 70, 109, 0, 7, 6, 218, 152, 0, 2, 18, 66, 3, 90, 0, 3, 90, 109, 0,
+			7, 6, 218, 169, 0, 2, 18, 66, 3, 49, 0, 216, 170, 217, 134, 8, 3, 49, 6, 113, 47, 50, 0, 219, 129, 8, 2, 18, 67, 3,
+			49, 6, 116, 108, 0, 216, 167, 216, 177, 218, 169, 217, 134, 3, 49, 6, 118, 51, 49, 4, 122, 122, 50, 0, 217, 136, 216, 180, 216, 180,
+			3, 49, 6, 119, 91, 113, 91, 0, 217, 145, 2, 18, 66, 3, 49, 49, 0, 217, 145, 3, 49, 49, 109, 0, 3, 49, 109, 0, 216, 170,
+			216, 167, 216, 168, 3, 49, 113, 47, 6, 118, 71, 0, 218, 190, 2, 18, 66, 3, 145, 0, 218, 190, 3, 145, 109, 0, 7, 6, 218, 175,
+			0, 2, 18, 66, 3, 81, 0, 216, 166, 219, 140, 3, 81, 6, 35, 112, 0, 216, 166, 219, 146, 3, 81, 6, 35, 114, 0, 219, 140, 216,
+			170, 8, 3, 81, 6, 112, 47, 0, 216, 177, 217, 129, 216, 170, 8, 3, 81, 6, 113, 51, 113, 83, 47, 0, 219, 129, 8, 2, 18, 67,
+			3, 81, 6, 116, 108, 0, 217, 133, 216, 180, 216, 175, 3, 81, 6, 122, 65, 91, 4, 122, 72, 0, 217, 145, 2, 18, 66, 3, 81, 81,
+			0, 217, 145, 3, 81, 81, 109, 0, 3, 81, 109, 0, 216, 178, 216, 177, 8, 3, 81, 122, 88, 6, 35, 51, 0, 216, 178, 216, 167, 216,
+			177, 216, 180, 3, 81, 122, 88, 6, 118, 51, 113, 91, 0, 216, 178, 216, 177, 8, 2, 18, 66, 3, 81, 122, 88, 51, 0, 218, 190, 2,
+			18, 66, 3, 146, 0, 218, 190, 217, 133, 216, 167, 8, 3, 146, 6, 122, 65, 118, 0, 218, 190, 3, 146, 109, 0, 7, 6, 218, 186, 0,
+			3, 50, 0, 7, 6, 218, 190, 0, 2, 108, 48, 49, 3, 108, 0, 2, 32, 3, 108, 12, 0, 3, 108, 109, 0, 7, 6, 219, 129, 0,
+			2, 32, 3, 35, 0, 4, 3, 108, 0, 1, 21, 2, 18, 67, 18, 66, 0, 8, 2, 18, 66, 0, 217, 133, 8, 2, 18, 67, 18, 67,
+			18, 67, 14, 128, 132, 130, 3, 108, 6, 35, 65, 0, 217, 132, 217, 134, 8, 3, 108, 6, 113, 55, 50, 0, 217, 145, 2, 18, 66, 3,
+			108, 108, 0, 217, 145, 3, 108, 108, 109, 0, 2, 18, 67, 3, 108, 109, 0, 8, 2, 217, 134, 216, 175, 3, 108, 113, 0, 7, 6, 219,
+			130, 0, 3, 6, 35, 114, 0, 7, 6, 219, 140, 0, 2, 18, 66, 3, 57, 0, 217, 145, 3, 57, 57, 0, 8, 3, 57, 109, 0, 4,
+			1, 21, 3, 112, 0, 2, 32, 0, 216, 185, 2, 32, 0, 216, 170, 1, 21, 2, 32, 14, 128, 128, 130, 3, 112, 38, 6, 35, 47, 0,
+			3, 114, 0, 218, 186, 1, 21, 2, 32, 3, 114, 50, 0, 7, 6, 219, 146, 0, 3, 114, 0, 7, 6, 224, 164, 0, 3, 21, 110, 101,
+			0, 7, 6, 224, 165, 0, 3, 21, 110, 101, 0, 7, 6, 0, 58, 3, 34, 6, 118, 71, 6, 47, 35, 107, 0, 59, 3, 58, 6, 35,
+			49, 6, 47, 6, 35, 0, 36, 3, 72, 119, 55, 13, 51, 0, 33, 3, 83, 6, 37, 79, 118, 57, 35, 0, 37, 3, 83, 6, 112, 89,
+			109, 72, 0, 44, 3, 89, 109, 49, 35, 139, 109, 107, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts66 = FileInMemory_createWithData (18015, reinterpret_cast<const char *> (&espeakdata_dicts66_data), 
+			U"espeak-1.48.04-source/espeak-data/ur_dict", 
 			U"ur");
-		Collection_addItem (me.peek(), espeakdata_dicts67.transfer());
+		my addItem_move (espeakdata_dicts66.move());
 
-		static unsigned char espeakdata_dicts68_data[5837] = {
-			0, 4, 0, 0, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
-			89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 65, 24, 115, 109, 48, 0, 0, 0,
-			0, 0, 8, 65, 28, 86, 6, 36, 113, 0, 0, 0, 0, 0, 8, 65, 32, 107, 35, 109, 47, 0, 0, 0, 7, 132, 196, 145, 195, 163,
-			72, 0, 14, 1, 35, 79, 6, 134, 109, 47, 6, 35, 113, 68, 0, 27, 0, 17, 1, 36, 79, 6, 134, 109, 10, 72, 6, 39, 17, 55,
-			6, 114, 113, 0, 0, 15, 1, 37, 83, 6, 13, 108, 50, 80, 34, 6, 35, 113, 65, 0, 0, 12, 1, 38, 79, 6, 134, 109, 84, 4,
-			114, 108, 0, 0, 0, 6, 65, 40, 81, 37, 0, 0, 0, 13, 1, 42, 79, 6, 134, 109, 93, 6, 130, 113, 0, 27, 0, 14, 1, 43,
-			79, 6, 134, 109, 49, 6, 39, 112, 68, 0, 27, 0, 6, 65, 44, 49, 114, 0, 0, 0, 0, 0, 8, 65, 48, 115, 55, 118, 108, 0,
-			0, 0, 6, 131, 22, 195, 172, 72, 0, 0, 8, 65, 52, 115, 65, 118, 108, 0, 0, 0, 0, 0, 12, 5, 95, 48, 1, 14, 4, 55,
-			4, 37, 67, 0, 8, 65, 56, 115, 50, 118, 108, 0, 0, 0, 0, 0, 0, 15, 1, 61, 79, 6, 134, 109, 10, 71, 6, 35, 108, 68,
-			0, 27, 0, 6, 131, 22, 195, 160, 72, 0, 0, 11, 1, 64, 114, 17, 49, 6, 116, 108, 68, 0, 6, 65, 64, 48, 36, 0, 0, 0,
-			0, 0, 7, 65, 68, 49, 58, 37, 0, 0, 8, 133, 13, 225, 187, 151, 9, 72, 0, 0, 0, 8, 65, 72, 115, 92, 118, 108, 0, 0,
-			0, 0, 0, 7, 65, 76, 115, 109, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65,
-			88, 84, 36, 0, 0, 0, 0, 0, 12, 65, 92, 84, 6, 36, 49, 4, 115, 109, 48, 0, 0, 0, 12, 1, 94, 79, 6, 134, 109, 65,
-			6, 40, 111, 0, 0, 0, 14, 1, 96, 79, 6, 134, 109, 107, 58, 6, 136, 108, 50, 0, 7, 65, 96, 37, 109, 80, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 8, 65, 104, 88, 115, 109, 47, 0, 0, 0, 0, 0, 7, 132, 19, 225, 186, 189, 72, 0, 7, 132, 3, 195, 178,
-			14, 72, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 13, 225, 187, 141, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 126,
-			79, 6, 134, 109, 68, 6, 114, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 10, 135, 14, 8, 225, 187, 175, 14, 7, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 7, 132, 20, 8, 195, 172, 72, 7, 132, 14, 8, 198, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 13, 4, 95, 4, 16, 20, 10, 83, 4, 121, 110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 8,
-			15, 225, 186, 183, 3, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 10, 135, 3, 8, 225, 186, 179, 14, 7, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 14, 8, 198, 176, 14, 7, 72, 0, 0, 0, 0, 0,
-			0, 0, 21, 3, 95, 50, 49, 107, 6, 120, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 21, 3, 95,
-			50, 53, 107, 6, 120, 15, 65, 6, 137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 22, 3, 95, 51, 49, 10, 71, 6,
-			114, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 22, 3, 95, 51, 53, 10, 71, 6, 114, 15, 65, 6,
-			137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			22, 3, 95, 54, 49, 93, 6, 129, 109, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 16, 3, 95, 51, 88, 10, 71,
-			6, 114, 15, 65, 6, 137, 113, 57, 0, 0, 11, 3, 95, 48, 67, 80, 34, 6, 35, 65, 0, 0, 0, 22, 3, 95, 54, 53, 93, 6,
-			129, 109, 15, 65, 6, 137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 23, 3, 95, 55, 49, 10, 71, 6, 119, 110, 15,
-			65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 23, 3, 95, 55, 53, 10, 71, 6, 119, 110, 15, 65, 6, 137,
-			113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-			132, 14, 195, 170, 14, 72, 0, 17, 3, 95, 55, 88, 10, 71, 6, 119, 110, 15, 65, 6, 137, 113, 57, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95, 52, 49, 10, 71, 6, 39, 109, 50, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39,
-			109, 74, 0, 0, 11, 3, 95, 49, 88, 65, 6, 137, 108, 57, 0, 0, 0, 9, 134, 16, 8, 225, 186, 163, 9, 72, 0, 24, 3, 95,
-			52, 53, 10, 71, 6, 39, 109, 50, 15, 65, 6, 137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 22, 3, 95, 53, 49,
-			50, 6, 35, 65, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 6, 131, 12, 195, 160, 72, 15, 3, 95, 50, 88, 107,
-			6, 120, 15, 65, 6, 137, 113, 57, 0, 0, 0, 0, 8, 133, 196, 145, 225, 187, 131, 72, 22, 3, 95, 53, 53, 50, 6, 35, 65, 15,
-			65, 6, 137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95, 52, 88,
-			10, 71, 6, 39, 109, 50, 15, 65, 6, 137, 113, 57, 0, 0, 0, 0, 0, 0, 0, 0, 23, 3, 95, 56, 49, 74, 6, 114, 109, 65,
-			15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 16, 3, 95, 53, 88, 50, 6, 35, 65, 15, 65, 6, 137, 113, 57, 0,
-			0, 0, 0, 23, 3, 95, 56, 53, 74, 6, 114, 109, 65, 15, 65, 6, 137, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0,
-			23, 3, 95, 57, 49, 80, 6, 37, 109, 50, 15, 65, 6, 137, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 16, 3, 95, 54, 88, 93,
-			6, 129, 109, 15, 65, 6, 137, 113, 57, 0, 0, 0, 0, 23, 3, 95, 57, 53, 80, 6, 37, 109, 50, 15, 65, 6, 137, 113, 57, 15,
-			55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 56, 88, 74, 6, 114, 109, 65, 15,
-			65, 6, 137, 113, 57, 0, 0, 0, 0, 0, 0, 8, 133, 4, 225, 186, 171, 21, 72, 0, 0, 0, 17, 3, 95, 57, 88, 80, 6, 37,
-			109, 50, 15, 65, 6, 137, 113, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131, 13, 195, 160, 72, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 8, 133, 22, 225, 187, 155, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			7, 132, 12, 195, 186, 3, 72, 0, 0, 0, 0, 0, 0, 0, 13, 4, 95, 48, 77, 50, 80, 34, 6, 136, 112, 58, 0, 0, 11, 4,
-			95, 48, 77, 51, 74, 6, 37, 110, 0, 0, 0, 12, 4, 95, 48, 77, 49, 68, 6, 114, 108, 50, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 136, 11, 8, 15, 225, 186, 163, 14, 7, 72, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			9, 134, 11, 8, 195, 180, 14, 7, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 20, 225, 187, 171, 72,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 8, 133, 20, 225, 187, 155, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2,
-			196, 145, 72, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 2, 225, 187, 139, 72, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 14, 225, 186, 191, 21, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 196, 145,
-			1, 14, 7, 72, 0, 0, 0, 19, 2, 95, 33, 79, 6, 134, 109, 80, 6, 13, 109, 65, 47, 6, 114, 113, 50, 0, 0, 0, 6, 195,
-			12, 243, 128, 72, 17, 2, 95, 39, 68, 58, 6, 35, 112, 139, 10, 72, 6, 118, 113, 50, 0, 0, 0, 11, 136, 196, 145, 198, 176, 225,
-			187, 163, 3, 72, 0, 0, 0, 0, 17, 2, 95, 41, 10, 72, 6, 116, 109, 68, 68, 58, 6, 35, 112, 139, 0, 0, 15, 2, 95, 40,
-			65, 6, 118, 110, 68, 58, 6, 35, 112, 139, 0, 0, 14, 2, 95, 47, 89, 6, 39, 110, 80, 34, 6, 120, 109, 0, 0, 10, 2, 95,
-			46, 80, 6, 13, 109, 65, 0, 0, 15, 2, 95, 45, 100, 6, 114, 112, 80, 68, 6, 114, 113, 68, 0, 0, 9, 2, 95, 44, 83, 6,
-			121, 110, 0, 0, 9, 2, 95, 51, 10, 71, 6, 114, 0, 0, 8, 133, 3, 8, 198, 176, 1, 72, 8, 2, 95, 50, 107, 6, 120, 0,
-			0, 10, 2, 95, 49, 65, 6, 39, 112, 74, 0, 0, 10, 2, 95, 48, 101, 4, 39, 17, 68, 0, 0, 10, 2, 95, 55, 10, 71, 6,
-			119, 110, 0, 0, 9, 2, 95, 54, 93, 6, 129, 109, 0, 0, 9, 2, 95, 53, 50, 6, 35, 65, 0, 0, 11, 2, 95, 52, 10, 71,
-			6, 39, 109, 50, 0, 0, 14, 2, 95, 59, 80, 6, 13, 109, 65, 83, 6, 121, 110, 0, 0, 14, 2, 95, 58, 107, 6, 120, 17, 80,
-			6, 13, 109, 65, 0, 0, 10, 2, 95, 57, 80, 6, 37, 109, 50, 0, 0, 10, 2, 95, 56, 74, 6, 114, 109, 65, 0, 0, 14, 2,
-			95, 63, 107, 6, 125, 110, 80, 6, 13, 109, 65, 0, 0, 15, 2, 95, 62, 55, 6, 118, 109, 50, 107, 6, 118, 113, 50, 0, 0, 0,
-			14, 2, 95, 60, 67, 6, 116, 110, 107, 6, 118, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 8, 133, 22, 225, 186, 171, 14, 72, 0, 0, 0, 0, 0, 0, 0, 0, 20, 2, 95, 91, 65, 6, 118, 110, 68, 58, 6, 35, 112,
-			139, 84, 6, 138, 113, 68, 0, 0, 18, 4, 95, 226, 128, 156, 68, 58, 6, 35, 112, 139, 49, 6, 115, 109, 48, 0, 0, 0, 0, 15,
-			2, 95, 95, 100, 6, 114, 112, 80, 79, 6, 137, 109, 57, 0, 0, 0, 22, 2, 95, 93, 10, 72, 6, 116, 109, 68, 68, 58, 6, 35,
-			112, 139, 84, 6, 138, 113, 68, 0, 0, 13, 2, 95, 92, 89, 6, 39, 110, 83, 4, 120, 110, 0, 0, 6, 195, 44, 130, 64, 72, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 2, 95, 123, 65, 6, 118,
-			110, 68, 58, 6, 35, 112, 139, 67, 6, 116, 112, 50, 0, 0, 0, 0, 0, 0, 0, 22, 2, 95, 125, 10, 72, 6, 116, 109, 68, 68,
-			58, 6, 35, 112, 139, 67, 6, 116, 112, 50, 0, 0, 14, 2, 95, 124, 89, 6, 39, 110, 47, 6, 35, 110, 68, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 70, 36, 229, 5, 72, 225, 84, 37, 50, 47, 118, 50, 6, 115, 109, 47, 0, 0, 0,
-			0, 0, 0, 0, 8, 133, 2, 225, 187, 159, 9, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131,
-			4, 195, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 131, 192, 72, 0, 8, 133, 3, 225, 187, 167, 1, 72, 0, 0,
-			0, 7, 132, 3, 195, 161, 9, 72, 0, 0, 0, 0, 0, 0, 7, 132, 3, 195, 161, 3, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 9, 134, 196, 145, 225, 186, 191, 14, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 20, 0, 0, 97, 0, 0, 3, 224, 0,
-			0, 0, 97, 0, 1, 3, 225, 0, 0, 0, 97, 0, 9, 3, 163, 30, 0, 0, 97, 0, 3, 3, 227, 0, 0, 0, 97, 0, 35, 3,
-			161, 30, 0, 0, 3, 1, 0, 3, 177, 30, 0, 0, 3, 1, 1, 3, 175, 30, 0, 0, 3, 1, 9, 3, 179, 30, 0, 0, 3, 1,
-			3, 3, 181, 30, 0, 0, 3, 1, 35, 3, 183, 30, 0, 0, 226, 0, 0, 3, 167, 30, 0, 0, 226, 0, 1, 3, 165, 30, 0, 0,
-			226, 0, 9, 3, 169, 30, 0, 0, 226, 0, 3, 3, 171, 30, 0, 0, 226, 0, 35, 3, 173, 30, 0, 0, 101, 0, 0, 3, 232, 0,
-			0, 0, 101, 0, 1, 3, 233, 0, 0, 0, 101, 0, 9, 3, 187, 30, 0, 0, 101, 0, 3, 3, 189, 30, 0, 0, 101, 0, 35, 3,
-			185, 30, 0, 0, 234, 0, 0, 3, 193, 30, 0, 0, 234, 0, 1, 3, 191, 30, 0, 0, 234, 0, 9, 3, 195, 30, 0, 0, 234, 0,
-			3, 3, 197, 30, 0, 0, 234, 0, 35, 3, 199, 30, 0, 0, 105, 0, 0, 3, 236, 0, 0, 0, 105, 0, 1, 3, 237, 0, 0, 0,
-			105, 0, 9, 3, 201, 30, 0, 0, 105, 0, 3, 3, 41, 1, 0, 0, 105, 0, 35, 3, 203, 30, 0, 0, 111, 0, 0, 3, 242, 0,
-			0, 0, 111, 0, 1, 3, 243, 0, 0, 0, 111, 0, 9, 3, 207, 30, 0, 0, 111, 0, 3, 3, 245, 0, 0, 0, 111, 0, 35, 3,
-			205, 30, 0, 0, 244, 0, 0, 3, 211, 30, 0, 0, 244, 0, 1, 3, 209, 30, 0, 0, 244, 0, 9, 3, 213, 30, 0, 0, 244, 0,
-			3, 3, 215, 30, 0, 0, 244, 0, 35, 3, 217, 30, 0, 0, 161, 1, 0, 3, 221, 30, 0, 0, 161, 1, 1, 3, 219, 30, 0, 0,
-			161, 1, 9, 3, 223, 30, 0, 0, 161, 1, 3, 3, 225, 30, 0, 0, 161, 1, 35, 3, 227, 30, 0, 0, 117, 0, 0, 3, 249, 0,
-			0, 0, 117, 0, 1, 3, 250, 0, 0, 0, 117, 0, 9, 3, 231, 30, 0, 0, 117, 0, 3, 3, 105, 1, 0, 0, 117, 0, 35, 3,
-			229, 30, 0, 0, 176, 1, 0, 3, 235, 30, 0, 0, 176, 1, 1, 3, 233, 30, 0, 0, 176, 1, 9, 3, 237, 30, 0, 0, 176, 1,
-			3, 3, 239, 30, 0, 0, 176, 1, 35, 3, 241, 30, 0, 0, 121, 0, 0, 3, 243, 30, 0, 0, 121, 0, 1, 3, 253, 0, 0, 0,
-			121, 0, 9, 3, 247, 30, 0, 0, 121, 0, 3, 3, 249, 30, 0, 0, 121, 0, 35, 3, 245, 30, 0, 0, 0, 0, 0, 0, 6, 195,
-			160, 0, 3, 114, 108, 0, 121, 3, 119, 108, 0, 105, 3, 120, 108, 0, 117, 3, 129, 108, 0, 111, 3, 130, 108, 0, 7, 6, 195, 161,
-			0, 3, 114, 109, 0, 121, 3, 119, 109, 0, 105, 3, 120, 109, 0, 117, 3, 129, 109, 0, 111, 3, 130, 109, 0, 7, 6, 195, 162, 0,
-			3, 13, 0, 121, 3, 121, 0, 117, 3, 134, 0, 7, 6, 195, 163, 0, 3, 114, 111, 0, 121, 3, 119, 111, 0, 105, 3, 120, 111, 0,
-			117, 3, 129, 111, 0, 111, 3, 130, 111, 0, 7, 6, 195, 168, 0, 3, 115, 108, 0, 111, 3, 132, 108, 0, 7, 6, 195, 169, 0, 3,
-			115, 109, 0, 111, 3, 132, 109, 0, 7, 6, 195, 170, 0, 3, 36, 0, 117, 3, 131, 0, 7, 6, 195, 172, 0, 3, 37, 108, 0, 2,
-			17, 65, 3, 57, 108, 0, 117, 3, 133, 108, 0, 97, 3, 136, 108, 0, 7, 6, 195, 173, 0, 3, 37, 109, 0, 2, 17, 65, 3, 57,
-			109, 0, 117, 3, 133, 109, 0, 97, 3, 136, 109, 0, 7, 6, 195, 177, 0, 3, 67, 0, 7, 6, 195, 178, 0, 2, 17, 65, 3, 58,
-			108, 0, 3, 116, 108, 0, 105, 3, 125, 108, 0, 7, 6, 195, 179, 0, 2, 17, 65, 3, 58, 109, 0, 3, 116, 109, 0, 105, 3, 125,
-			109, 0, 7, 6, 195, 180, 0, 3, 39, 0, 105, 3, 126, 0, 7, 6, 195, 181, 0, 2, 17, 65, 3, 58, 111, 0, 3, 116, 111, 0,
-			105, 3, 125, 111, 0, 7, 6, 195, 185, 0, 3, 40, 108, 0, 2, 17, 65, 3, 58, 108, 0, 105, 3, 127, 108, 0, 97, 3, 138, 108,
-			0, 7, 6, 195, 186, 0, 3, 40, 109, 0, 2, 17, 65, 3, 58, 109, 0, 105, 3, 127, 109, 0, 97, 3, 138, 109, 0, 7, 6, 195,
-			189, 0, 3, 37, 109, 0, 2, 17, 65, 3, 57, 109, 0, 97, 3, 136, 109, 0, 7, 6, 196, 131, 0, 3, 35, 0, 7, 6, 196, 145,
-			0, 8, 3, 10, 72, 0, 3, 72, 0, 7, 6, 196, 169, 0, 3, 37, 111, 0, 2, 17, 65, 3, 57, 111, 0, 117, 3, 133, 111, 0,
-			97, 3, 136, 111, 0, 7, 6, 197, 169, 0, 3, 40, 111, 0, 2, 17, 65, 3, 58, 111, 0, 105, 3, 127, 111, 0, 97, 3, 138, 111,
-			0, 7, 6, 198, 161, 0, 3, 118, 0, 105, 3, 122, 0, 117, 3, 135, 0, 7, 6, 198, 176, 0, 3, 117, 0, 117, 3, 117, 58, 0,
-			105, 3, 128, 0, 4, 97, 3, 137, 0, 198, 161, 0, 198, 161, 105, 3, 137, 57, 0, 225, 187, 157, 105, 3, 137, 57, 108, 0, 225, 187,
-			155, 105, 3, 137, 57, 109, 0, 225, 187, 159, 105, 3, 137, 57, 110, 0, 225, 187, 161, 105, 3, 137, 57, 111, 0, 225, 187, 163, 105, 3,
-			137, 57, 112, 0, 198, 161, 117, 3, 137, 58, 0, 225, 187, 157, 117, 3, 137, 58, 108, 0, 225, 187, 155, 117, 3, 137, 58, 109, 0, 225,
-			187, 159, 117, 3, 137, 58, 110, 0, 225, 187, 161, 117, 3, 137, 58, 111, 0, 225, 187, 163, 117, 3, 137, 58, 112, 0, 225, 187, 157, 3,
-			137, 108, 0, 225, 187, 155, 3, 137, 109, 0, 225, 187, 159, 3, 137, 110, 0, 225, 187, 161, 3, 137, 111, 0, 225, 187, 163, 3, 137, 112,
-			0, 7, 6, 225, 186, 0, 163, 3, 114, 110, 0, 163, 121, 3, 119, 110, 0, 163, 105, 3, 120, 110, 0, 163, 117, 3, 129, 110, 0, 163,
-			111, 3, 130, 110, 0, 161, 3, 114, 112, 0, 161, 121, 3, 119, 112, 0, 161, 105, 3, 120, 112, 0, 161, 117, 3, 129, 112, 0, 161, 111,
-			3, 130, 112, 0, 177, 3, 35, 108, 0, 175, 3, 35, 109, 0, 179, 3, 35, 110, 0, 181, 3, 35, 111, 0, 183, 3, 35, 112, 0, 167,
-			3, 13, 108, 0, 167, 121, 3, 121, 108, 0, 167, 117, 3, 134, 108, 0, 165, 3, 13, 109, 0, 165, 121, 3, 121, 109, 0, 165, 117, 3,
-			134, 109, 0, 169, 3, 13, 110, 0, 169, 121, 3, 121, 110, 0, 169, 117, 3, 134, 110, 0, 171, 3, 13, 111, 0, 171, 121, 3, 121, 111,
-			0, 171, 117, 3, 134, 111, 0, 173, 3, 13, 112, 0, 173, 121, 3, 121, 112, 0, 173, 117, 3, 134, 112, 0, 187, 3, 115, 110, 0, 187,
-			111, 3, 132, 110, 0, 189, 3, 115, 111, 0, 189, 111, 3, 132, 111, 0, 185, 3, 115, 112, 0, 185, 111, 3, 132, 112, 0, 191, 3, 36,
-			109, 0, 191, 117, 3, 131, 109, 0, 7, 6, 225, 187, 0, 129, 3, 36, 108, 0, 129, 117, 3, 131, 108, 0, 131, 3, 36, 110, 0, 131,
-			117, 3, 131, 110, 0, 133, 3, 36, 111, 0, 133, 117, 3, 131, 111, 0, 135, 3, 36, 112, 0, 135, 117, 3, 131, 112, 0, 137, 3, 37,
-			110, 0, 137, 2, 17, 65, 3, 57, 110, 0, 137, 117, 3, 133, 110, 0, 137, 97, 3, 136, 110, 0, 139, 3, 37, 112, 0, 139, 2, 17,
-			65, 3, 57, 112, 0, 139, 117, 3, 133, 112, 0, 139, 97, 3, 136, 112, 0, 143, 2, 17, 65, 3, 58, 110, 0, 143, 3, 116, 110, 0,
-			143, 105, 3, 125, 110, 0, 141, 2, 17, 65, 3, 58, 112, 0, 141, 3, 116, 112, 0, 141, 105, 3, 125, 112, 0, 147, 3, 39, 108, 0,
-			147, 105, 3, 126, 108, 0, 145, 3, 39, 109, 0, 145, 105, 3, 126, 109, 0, 149, 3, 39, 110, 0, 149, 105, 3, 126, 110, 0, 151, 3,
-			39, 111, 0, 151, 105, 3, 126, 111, 0, 153, 3, 39, 112, 0, 153, 105, 3, 126, 112, 0, 157, 3, 118, 108, 0, 157, 105, 3, 122, 108,
-			0, 157, 117, 3, 135, 108, 0, 155, 3, 118, 109, 0, 155, 105, 3, 122, 109, 0, 155, 117, 3, 135, 109, 0, 159, 3, 118, 110, 0, 159,
-			105, 3, 122, 110, 0, 159, 117, 3, 135, 110, 0, 161, 3, 118, 111, 0, 161, 105, 3, 122, 111, 0, 161, 117, 3, 135, 111, 0, 163, 3,
-			118, 112, 0, 163, 105, 3, 122, 112, 0, 163, 117, 3, 135, 112, 0, 167, 3, 40, 110, 0, 167, 2, 17, 65, 3, 58, 110, 0, 167, 105,
-			3, 127, 110, 0, 167, 97, 3, 138, 110, 0, 165, 3, 40, 112, 0, 165, 2, 17, 65, 3, 58, 112, 0, 165, 105, 3, 127, 112, 0, 165,
-			97, 3, 138, 112, 0, 171, 117, 3, 117, 58, 108, 0, 171, 3, 117, 108, 0, 171, 105, 3, 128, 108, 0, 171, 97, 3, 137, 108, 0, 169,
-			117, 3, 117, 58, 109, 0, 169, 3, 117, 109, 0, 169, 105, 3, 128, 109, 0, 169, 97, 3, 137, 109, 0, 173, 117, 3, 117, 58, 110, 0,
-			173, 3, 117, 110, 0, 173, 105, 3, 128, 110, 0, 173, 97, 3, 137, 110, 0, 175, 117, 3, 117, 58, 111, 0, 175, 3, 117, 111, 0, 175,
-			105, 3, 128, 111, 0, 175, 97, 3, 137, 111, 0, 177, 117, 3, 117, 58, 112, 0, 177, 3, 117, 112, 0, 177, 105, 3, 128, 112, 0, 177,
-			97, 3, 137, 112, 0, 179, 3, 37, 108, 0, 179, 2, 17, 65, 3, 57, 108, 0, 179, 97, 3, 136, 108, 0, 183, 3, 37, 110, 0, 183,
-			2, 17, 65, 3, 57, 110, 0, 183, 97, 3, 136, 110, 0, 185, 3, 37, 111, 0, 185, 2, 17, 65, 3, 57, 111, 0, 185, 97, 3, 136,
-			111, 0, 181, 3, 37, 112, 0, 181, 2, 17, 65, 3, 57, 112, 0, 181, 97, 3, 136, 112, 0, 7, 6, 97, 0, 3, 114, 0, 121, 3,
-			119, 0, 225, 187, 179, 3, 119, 108, 0, 195, 189, 3, 119, 109, 0, 225, 187, 183, 3, 119, 110, 0, 225, 187, 185, 3, 119, 111, 0, 225,
-			187, 181, 3, 119, 112, 0, 105, 3, 120, 0, 195, 172, 3, 120, 108, 0, 195, 173, 3, 120, 109, 0, 225, 187, 137, 3, 120, 110, 0, 196,
-			169, 3, 120, 111, 0, 225, 187, 139, 3, 120, 112, 0, 117, 3, 129, 0, 195, 185, 3, 129, 108, 0, 195, 186, 3, 129, 109, 0, 225, 187,
-			167, 3, 129, 110, 0, 197, 169, 3, 129, 111, 0, 225, 187, 165, 3, 129, 112, 0, 111, 3, 130, 0, 195, 178, 3, 130, 108, 0, 195, 179,
-			3, 130, 109, 0, 225, 187, 143, 3, 130, 110, 0, 195, 181, 3, 130, 111, 0, 225, 187, 141, 3, 130, 112, 0, 7, 6, 98, 0, 8, 3,
-			10, 71, 0, 3, 71, 0, 7, 6, 99, 0, 3, 49, 0, 104, 3, 80, 0, 2, 32, 3, 139, 0, 7, 6, 100, 0, 3, 79, 0, 7,
-			6, 101, 0, 3, 115, 0, 111, 3, 132, 0, 195, 178, 3, 132, 108, 0, 195, 179, 3, 132, 109, 0, 225, 187, 143, 3, 132, 110, 0, 225,
-			187, 151, 3, 132, 111, 0, 225, 187, 141, 3, 132, 112, 0, 7, 6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 4, 2, 105, 3, 86, 0,
-			2, 195, 172, 0, 2, 195, 173, 0, 2, 196, 169, 0, 2, 225, 187, 137, 0, 2, 225, 187, 139, 0, 105, 0, 4, 3, 100, 0, 104, 0,
-			7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3, 37, 0, 2, 17, 65, 3, 57, 0, 117, 3, 133, 0, 195, 185, 3, 133, 108, 0,
-			195, 186, 3, 133, 109, 0, 225, 187, 167, 3, 133, 110, 0, 197, 169, 3, 133, 111, 0, 225, 187, 165, 3, 133, 112, 0, 4, 97, 3, 136,
-			0, 195, 170, 0, 4, 195, 160, 3, 136, 108, 0, 225, 187, 129, 0, 4, 195, 161, 3, 136, 109, 0, 225, 186, 191, 0, 4, 225, 186, 163,
-			3, 136, 110, 0, 225, 187, 131, 0, 4, 195, 163, 3, 136, 111, 0, 225, 187, 133, 0, 4, 225, 186, 161, 3, 136, 112, 0, 225, 187, 135,
-			0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0, 3, 49, 0, 104, 3, 101, 0, 2, 32, 3, 139, 0, 7, 6, 108, 0, 3, 55,
-			0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 3, 50, 0, 104, 3, 67, 0, 4, 103, 3, 68, 0, 103, 104, 0, 7, 6, 111,
-			0, 2, 17, 65, 3, 58, 0, 3, 116, 0, 105, 3, 125, 0, 195, 172, 3, 125, 108, 0, 195, 173, 3, 125, 109, 0, 225, 187, 137, 3,
-			125, 110, 0, 196, 169, 3, 125, 111, 0, 225, 187, 139, 3, 125, 112, 0, 7, 6, 112, 0, 3, 48, 0, 104, 3, 83, 0, 7, 6, 113,
-			0, 3, 49, 0, 117, 3, 49, 58, 0, 2, 32, 3, 139, 0, 7, 6, 114, 0, 3, 92, 0, 7, 6, 115, 0, 3, 93, 0, 7, 6,
-			116, 0, 104, 3, 47, 0, 3, 74, 0, 114, 3, 80, 34, 0, 7, 6, 117, 0, 3, 40, 0, 4, 1, 17, 65, 3, 58, 0, 2, 17,
-			65, 0, 105, 3, 127, 0, 195, 172, 3, 127, 108, 0, 195, 173, 3, 127, 109, 0, 225, 187, 137, 3, 127, 110, 0, 196, 169, 3, 127, 111,
-			0, 225, 187, 139, 3, 127, 112, 0, 4, 97, 3, 138, 0, 195, 180, 0, 195, 180, 105, 3, 138, 57, 0, 225, 187, 147, 105, 3, 138, 57,
-			108, 0, 225, 187, 145, 105, 3, 138, 57, 109, 0, 225, 187, 149, 105, 3, 138, 57, 110, 0, 225, 187, 151, 105, 3, 138, 57, 111, 0, 225,
-			187, 153, 105, 3, 138, 57, 112, 0, 4, 195, 160, 3, 138, 108, 0, 225, 187, 147, 0, 4, 195, 161, 3, 138, 109, 0, 225, 187, 145, 0,
-			4, 225, 186, 163, 3, 138, 110, 0, 225, 187, 149, 0, 4, 195, 163, 3, 138, 111, 0, 225, 187, 151, 0, 4, 225, 186, 161, 3, 138, 112,
-			0, 225, 187, 153, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 89, 0, 7, 6, 121, 0,
-			3, 37, 0, 2, 17, 65, 3, 57, 0, 4, 97, 3, 136, 0, 195, 170, 0, 4, 195, 160, 3, 136, 108, 0, 225, 187, 129, 0, 4, 195,
-			161, 3, 136, 109, 0, 225, 186, 191, 0, 4, 225, 186, 163, 3, 136, 110, 0, 225, 187, 131, 0, 4, 195, 163, 3, 136, 111, 0, 225, 187,
-			133, 0, 4, 225, 186, 161, 3, 136, 112, 0, 225, 187, 135, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 206, 0, 4, 174, 3, 36, 17,
-			23, 74, 6, 114, 17, 0, 183, 0, 4, 175, 3, 37, 17, 23, 6, 39, 17, 23, 74, 6, 114, 17, 0, 185, 0, 191, 3, 39, 17, 23,
-			65, 6, 37, 17, 23, 49, 92, 6, 116, 113, 50, 0, 184, 3, 47, 6, 36, 17, 23, 74, 6, 114, 17, 0, 186, 3, 49, 6, 114, 17,
-			48, 23, 48, 6, 114, 17, 0, 189, 3, 50, 58, 6, 37, 17, 0, 187, 3, 55, 6, 35, 17, 65, 23, 10, 72, 6, 114, 17, 0, 188,
-			3, 65, 58, 6, 37, 17, 0, 178, 3, 71, 6, 36, 17, 23, 74, 6, 114, 17, 0, 180, 3, 79, 6, 115, 17, 50, 23, 74, 6, 114,
-			17, 0, 182, 3, 86, 6, 36, 17, 23, 74, 6, 114, 17, 0, 190, 3, 89, 6, 37, 113, 0, 179, 3, 100, 6, 114, 17, 23, 65, 6,
-			114, 17, 0, 4, 172, 3, 114, 17, 50, 23, 83, 6, 114, 17, 0, 177, 0, 4, 173, 3, 115, 17, 48, 23, 89, 6, 37, 17, 23, 55,
-			6, 116, 17, 50, 0, 181, 0, 7, 6, 207, 0, 4, 137, 3, 39, 17, 23, 65, 6, 36, 17, 23, 100, 6, 114, 113, 0, 142, 0, 140,
-			3, 39, 17, 23, 65, 6, 37, 17, 23, 49, 92, 6, 116, 113, 50, 0, 4, 133, 3, 40, 17, 48, 23, 89, 6, 37, 17, 23, 55, 6,
-			116, 17, 50, 0, 141, 0, 128, 3, 48, 6, 37, 17, 0, 136, 3, 48, 89, 6, 37, 17, 0, 132, 3, 74, 6, 39, 17, 0, 135, 3,
-			80, 6, 37, 17, 0, 134, 3, 83, 6, 37, 17, 0, 4, 130, 3, 89, 6, 37, 109, 80, 23, 65, 6, 114, 17, 0, 131, 0, 129, 3,
-			92, 6, 39, 17, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 46, 1, 46, 3, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 80, 6,
-			13, 109, 65, 23, 47, 6, 114, 113, 50, 9, 0, 4, 45, 1, 32, 17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32,
-			15, 0, 62, 61, 3, 55, 6, 118, 109, 50, 23, 107, 6, 118, 17, 50, 23, 107, 58, 4, 35, 112, 139, 10, 71, 6, 35, 108, 68, 0,
-			60, 61, 3, 67, 6, 116, 110, 23, 107, 6, 118, 17, 50, 23, 107, 58, 4, 35, 112, 139, 10, 71, 6, 35, 108, 68, 0, 36, 3, 72,
-			6, 39, 15, 55, 6, 35, 0, 46, 3, 80, 6, 13, 109, 65, 10, 0, 45, 8, 32, 2, 32, 15, 3, 80, 34, 6, 117, 108, 0, 37,
-			3, 83, 6, 13, 108, 50, 15, 78, 6, 35, 65, 0, 104, 1, 32, 15, 2, 32, 15, 15, 32, 3, 86, 6, 118, 108, 0, 33, 61, 3,
-			101, 4, 39, 17, 68, 23, 10, 71, 6, 35, 108, 68, 10, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts68 = FileInMemory_createWithData (5836, reinterpret_cast<const char *> (&espeakdata_dicts68_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/vi_dict", 
+		static unsigned char espeakdata_dicts67_data[7439] = {
+			0, 4, 0, 0, 86, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 65, 8, 71, 36, 0, 0, 0, 0, 0, 6, 65, 12,
+			89, 36, 0, 0, 0, 0, 0, 6, 65, 16, 72, 36, 0, 0, 0, 0, 13, 4, 95, 100, 112, 116, 10, 83, 4, 122, 110, 10, 0, 0,
+			0, 0, 0, 0, 7, 65, 24, 115, 109, 48, 0, 0, 0, 0, 0, 8, 65, 28, 86, 6, 36, 113, 0, 0, 0, 0, 0, 8, 65, 32,
+			107, 35, 109, 47, 0, 0, 0, 7, 132, 196, 145, 195, 163, 72, 0, 14, 1, 35, 79, 6, 135, 109, 47, 6, 35, 113, 68, 0, 27, 0,
+			17, 1, 36, 79, 6, 135, 109, 10, 72, 6, 39, 17, 55, 6, 114, 113, 0, 0, 8, 133, 99, 225, 187, 167, 97, 72, 14, 1, 37, 83,
+			6, 13, 108, 50, 148, 6, 35, 113, 65, 0, 0, 12, 1, 38, 79, 6, 135, 109, 84, 4, 114, 108, 0, 0, 0, 6, 65, 40, 81, 37,
+			0, 0, 0, 13, 1, 42, 79, 6, 135, 109, 93, 6, 131, 113, 0, 27, 0, 14, 1, 43, 79, 6, 135, 109, 49, 6, 39, 112, 68, 0,
+			27, 0, 6, 65, 44, 49, 114, 0, 0, 8, 133, 98, 225, 187, 159, 105, 72, 0, 0, 0, 8, 65, 48, 115, 55, 119, 108, 0, 0, 0,
+			0, 0, 8, 65, 52, 115, 65, 119, 108, 0, 0, 0, 0, 0, 8, 65, 56, 115, 50, 119, 108, 0, 0, 0, 0, 0, 0, 15, 1, 61,
+			79, 6, 135, 109, 10, 71, 6, 35, 108, 68, 0, 27, 0, 0, 0, 11, 1, 64, 114, 17, 49, 6, 116, 108, 68, 0, 6, 65, 64, 48,
+			36, 0, 0, 0, 0, 0, 7, 65, 68, 49, 58, 37, 0, 0, 0, 0, 0, 8, 65, 72, 115, 92, 119, 108, 0, 0, 0, 0, 0, 7,
+			65, 76, 115, 109, 89, 0, 0, 0, 0, 0, 6, 65, 80, 47, 36, 0, 0, 0, 0, 9, 134, 196, 145, 225, 186, 191, 110, 72, 0, 0,
+			0, 0, 0, 6, 65, 88, 84, 36, 0, 0, 0, 0, 0, 12, 65, 92, 84, 6, 36, 49, 4, 115, 109, 48, 0, 0, 0, 12, 1, 94,
+			79, 6, 135, 109, 65, 6, 40, 111, 0, 0, 0, 14, 1, 96, 79, 6, 135, 109, 107, 58, 6, 137, 108, 50, 0, 7, 65, 96, 37, 109,
+			80, 0, 0, 0, 6, 131, 118, 195, 172, 72, 0, 0, 0, 0, 5, 194, 89, 176, 72, 6, 195, 13, 192, 192, 72, 0, 0, 8, 65, 104,
+			88, 115, 109, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 126,
+			79, 6, 135, 109, 68, 6, 114, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 110, 104, 198, 176, 72, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 110, 104, 198, 176, 110, 103, 72, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 109, 225,
+			187, 151, 105, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 10, 135, 99, 104, 225, 186, 179, 110, 103, 72, 0, 0, 0, 0, 0, 0, 0, 6, 195, 13, 194, 64, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 8, 133, 109, 225, 187, 141, 105, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 11, 136, 107, 104, 111, 225, 186, 163, 110, 103, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 6, 195, 58, 51, 128, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 21, 3, 95, 50, 49, 107, 6, 121, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 21, 3, 95,
+			50, 53, 107, 6, 121, 15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 22, 3, 95, 51, 49, 10, 71, 6,
+			114, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 22, 3, 95, 51, 53, 10, 71, 6, 114, 15, 65, 6,
+			138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			22, 3, 95, 54, 49, 93, 6, 130, 109, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 9, 134, 104, 111, 225, 186, 183,
+			99, 72, 16, 3, 95, 51, 88, 10, 71, 6, 114, 15, 65, 6, 138, 113, 57, 0, 0, 10, 3, 95, 48, 67, 148, 6, 35, 65, 0, 0,
+			0, 22, 3, 95, 54, 53, 93, 6, 130, 109, 15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 23, 3, 95,
+			55, 49, 10, 71, 6, 120, 110, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 0, 0, 0, 23, 3, 95, 55, 53, 10,
+			71, 6, 120, 110, 15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 55, 88, 10, 71, 6, 120, 110, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 3, 95, 52, 49, 10, 71, 6, 39, 109, 50, 15, 65, 6, 138, 113, 57, 15, 65, 6,
+			39, 109, 74, 0, 0, 11, 3, 95, 49, 88, 65, 6, 138, 108, 57, 0, 0, 0, 0, 24, 3, 95, 52, 53, 10, 71, 6, 39, 109, 50,
+			15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 9, 134, 107, 104, 195, 180, 110, 103, 72, 0, 7, 132, 116, 104, 195, 172,
+			72, 0, 0, 22, 3, 95, 53, 49, 50, 6, 35, 65, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 15, 3, 95, 50,
+			88, 107, 6, 121, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 8, 133, 196, 145, 225, 187, 131, 72, 22, 3, 95, 53, 53, 50, 6, 35,
+			65, 15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 95,
+			52, 88, 10, 71, 6, 39, 109, 50, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 0, 0, 0, 0, 23, 3, 95, 56, 49, 74, 6, 114,
+			109, 65, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 16, 3, 95, 53, 88, 50, 6, 35, 65, 15, 65, 6, 138, 113,
+			57, 0, 0, 0, 0, 23, 3, 95, 56, 53, 74, 6, 114, 109, 65, 15, 65, 6, 138, 113, 57, 15, 55, 6, 35, 113, 65, 0, 0, 0,
+			0, 0, 23, 3, 95, 57, 49, 80, 6, 37, 109, 50, 15, 65, 6, 138, 113, 57, 15, 65, 6, 39, 109, 74, 0, 0, 16, 3, 95, 54,
+			88, 93, 6, 130, 109, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 23, 3, 95, 57, 53, 80, 6, 37, 109, 50, 15, 65, 6, 138, 113,
+			57, 15, 55, 6, 35, 113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 115, 225, 186, 189, 72, 17, 3,
+			95, 56, 88, 74, 6, 114, 109, 65, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 95, 57, 88, 80, 6,
+			37, 109, 50, 15, 65, 6, 138, 113, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 4, 95, 48, 77, 50,
+			148, 6, 137, 112, 58, 0, 0, 11, 4, 95, 48, 77, 51, 74, 6, 37, 110, 0, 0, 0, 12, 4, 95, 48, 77, 49, 68, 6, 114, 108,
+			50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 134, 112, 104, 225, 186, 163, 105, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 100, 225,
+			186, 171, 117, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 50, 160, 192,
+			72, 5, 194, 49, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+			133, 118, 225, 187, 155, 105, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 70, 36, 229, 5, 72, 225, 84, 37, 50, 47, 119, 50,
+			6, 115, 109, 47, 0, 0, 0, 0, 0, 0, 0, 8, 133, 99, 104, 198, 176, 97, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 6, 65, 192, 72, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 192, 19, 135, 72, 0, 0, 8, 133, 116, 225, 187, 155,
+			105, 72, 0, 19, 2, 95, 33, 79, 6, 135, 109, 80, 6, 13, 109, 65, 47, 6, 114, 113, 50, 0, 0, 0, 6, 195, 12, 243, 128, 72,
+			17, 2, 95, 39, 68, 58, 6, 35, 112, 117, 10, 72, 6, 119, 113, 50, 0, 0, 0, 0, 0, 0, 0, 17, 2, 95, 41, 10, 72, 6,
+			116, 109, 68, 68, 58, 6, 35, 112, 117, 0, 0, 15, 2, 95, 40, 65, 6, 119, 110, 68, 58, 6, 35, 112, 117, 0, 0, 13, 2, 95,
+			47, 89, 6, 39, 110, 148, 6, 121, 109, 0, 0, 10, 2, 95, 46, 80, 6, 13, 109, 65, 0, 0, 15, 2, 95, 45, 100, 6, 114, 112,
+			80, 68, 6, 114, 113, 68, 0, 0, 9, 2, 95, 44, 83, 6, 122, 110, 0, 0, 9, 2, 95, 51, 10, 71, 6, 114, 0, 0, 8, 2,
+			95, 50, 107, 6, 121, 0, 0, 10, 2, 95, 49, 65, 6, 39, 112, 74, 0, 0, 10, 2, 95, 48, 101, 4, 39, 17, 68, 0, 0, 10,
+			2, 95, 55, 10, 71, 6, 120, 110, 0, 0, 9, 2, 95, 54, 93, 6, 130, 109, 0, 0, 9, 2, 95, 53, 50, 6, 35, 65, 0, 0,
+			11, 2, 95, 52, 10, 71, 6, 39, 109, 50, 0, 0, 14, 2, 95, 59, 80, 6, 13, 109, 65, 83, 6, 122, 110, 0, 0, 14, 2, 95,
+			58, 107, 6, 121, 17, 80, 6, 13, 109, 65, 0, 0, 10, 2, 95, 57, 80, 6, 37, 109, 50, 0, 0, 10, 2, 95, 56, 74, 6, 114,
+			109, 65, 0, 0, 14, 2, 95, 63, 107, 6, 126, 110, 80, 6, 13, 109, 65, 0, 0, 15, 2, 95, 62, 55, 6, 119, 109, 50, 107, 6,
+			119, 113, 50, 0, 0, 0, 14, 2, 95, 60, 67, 6, 116, 110, 107, 6, 119, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 110, 225, 186, 191, 117, 72, 0, 0, 0, 20, 2, 95, 91, 65, 6, 119,
+			110, 68, 58, 6, 35, 112, 117, 84, 6, 139, 113, 68, 0, 0, 18, 4, 95, 226, 128, 156, 68, 58, 6, 35, 112, 117, 49, 6, 115, 109,
+			48, 0, 0, 0, 0, 15, 2, 95, 95, 100, 6, 114, 112, 80, 79, 6, 138, 109, 57, 0, 0, 0, 22, 2, 95, 93, 10, 72, 6, 116,
+			109, 68, 68, 58, 6, 35, 112, 117, 84, 6, 139, 113, 68, 0, 0, 13, 2, 95, 92, 89, 6, 39, 110, 83, 4, 121, 110, 0, 0, 6,
+			195, 44, 130, 64, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 194, 53, 176, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 20, 2, 95, 123, 65, 6, 119, 110, 68, 58, 6, 35, 112, 117, 67, 6, 116, 112, 50, 0, 0, 0, 0, 0, 0, 0,
+			22, 2, 95, 125, 10, 72, 6, 116, 109, 68, 68, 58, 6, 35, 112, 117, 67, 6, 116, 112, 50, 0, 0, 14, 2, 95, 124, 89, 6, 39,
+			110, 47, 6, 35, 110, 68, 0, 0, 0, 0, 12, 5, 95, 48, 97, 110, 100, 55, 4, 37, 67, 0, 0, 0, 0, 0, 11, 136, 196, 145,
+			198, 176, 225, 187, 163, 99, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 135, 110, 104, 225, 187, 175, 110, 103, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 131,
+			100, 195, 185, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 133, 118, 225, 186, 171, 110, 72, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 132, 99, 195, 178, 110, 72, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 12, 131, 192, 72, 0, 0, 7, 132, 98, 225, 187, 139,
+			72, 0, 0, 0, 0, 7, 132, 116, 225, 187, 171, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 6, 20, 97, 0, 0, 3, 224, 0, 0, 0, 97, 0, 1, 3, 225, 0, 0, 0, 97, 0, 9, 3, 163, 30,
+			0, 0, 97, 0, 3, 3, 227, 0, 0, 0, 97, 0, 35, 3, 161, 30, 0, 0, 3, 1, 0, 3, 177, 30, 0, 0, 3, 1, 1, 3,
+			175, 30, 0, 0, 3, 1, 9, 3, 179, 30, 0, 0, 3, 1, 3, 3, 181, 30, 0, 0, 3, 1, 35, 3, 183, 30, 0, 0, 226, 0,
+			0, 3, 167, 30, 0, 0, 226, 0, 1, 3, 165, 30, 0, 0, 226, 0, 9, 3, 169, 30, 0, 0, 226, 0, 3, 3, 171, 30, 0, 0,
+			226, 0, 35, 3, 173, 30, 0, 0, 101, 0, 0, 3, 232, 0, 0, 0, 101, 0, 1, 3, 233, 0, 0, 0, 101, 0, 9, 3, 187, 30,
+			0, 0, 101, 0, 3, 3, 189, 30, 0, 0, 101, 0, 35, 3, 185, 30, 0, 0, 234, 0, 0, 3, 193, 30, 0, 0, 234, 0, 1, 3,
+			191, 30, 0, 0, 234, 0, 9, 3, 195, 30, 0, 0, 234, 0, 3, 3, 197, 30, 0, 0, 234, 0, 35, 3, 199, 30, 0, 0, 105, 0,
+			0, 3, 236, 0, 0, 0, 105, 0, 1, 3, 237, 0, 0, 0, 105, 0, 9, 3, 201, 30, 0, 0, 105, 0, 3, 3, 41, 1, 0, 0,
+			105, 0, 35, 3, 203, 30, 0, 0, 111, 0, 0, 3, 242, 0, 0, 0, 111, 0, 1, 3, 243, 0, 0, 0, 111, 0, 9, 3, 207, 30,
+			0, 0, 111, 0, 3, 3, 245, 0, 0, 0, 111, 0, 35, 3, 205, 30, 0, 0, 244, 0, 0, 3, 211, 30, 0, 0, 244, 0, 1, 3,
+			209, 30, 0, 0, 244, 0, 9, 3, 213, 30, 0, 0, 244, 0, 3, 3, 215, 30, 0, 0, 244, 0, 35, 3, 217, 30, 0, 0, 161, 1,
+			0, 3, 221, 30, 0, 0, 161, 1, 1, 3, 219, 30, 0, 0, 161, 1, 9, 3, 223, 30, 0, 0, 161, 1, 3, 3, 225, 30, 0, 0,
+			161, 1, 35, 3, 227, 30, 0, 0, 117, 0, 0, 3, 249, 0, 0, 0, 117, 0, 1, 3, 250, 0, 0, 0, 117, 0, 9, 3, 231, 30,
+			0, 0, 117, 0, 3, 3, 105, 1, 0, 0, 117, 0, 35, 3, 229, 30, 0, 0, 176, 1, 0, 3, 235, 30, 0, 0, 176, 1, 1, 3,
+			233, 30, 0, 0, 176, 1, 9, 3, 237, 30, 0, 0, 176, 1, 3, 3, 239, 30, 0, 0, 176, 1, 35, 3, 241, 30, 0, 0, 121, 0,
+			0, 3, 243, 30, 0, 0, 121, 0, 1, 3, 253, 0, 0, 0, 121, 0, 9, 3, 247, 30, 0, 0, 121, 0, 3, 3, 249, 30, 0, 0,
+			121, 0, 35, 3, 245, 30, 0, 0, 240, 0, 0, 0, 17, 1, 0, 0, 86, 2, 0, 0, 17, 1, 0, 0, 0, 0, 0, 0, 6, 18,
+			66, 110, 99, 104, 0, 110, 101, 0, 110, 100, 0, 110, 116, 0, 99, 104, 0, 116, 104, 0, 109, 101, 0, 116, 101, 0, 108, 101, 0, 99,
+			101, 0, 110, 121, 0, 114, 121, 0, 114, 101, 0, 100, 101, 0, 112, 101, 0, 112, 104, 0, 115, 104, 0, 118, 101, 0, 103, 101, 0, 116,
+			0, 99, 0, 107, 0, 120, 0, 115, 0, 101, 0, 111, 0, 117, 0, 112, 0, 118, 0, 114, 0, 7, 6, 18, 67, 110, 0, 97, 0, 7,
+			6, 18, 68, 99, 104, 0, 110, 104, 0, 116, 0, 7, 6, 18, 69, 225, 186, 163, 0, 225, 186, 161, 0, 225, 187, 167, 0, 225, 187, 165,
+			0, 225, 186, 175, 0, 225, 186, 177, 0, 225, 186, 179, 0, 225, 186, 181, 0, 225, 186, 183, 0, 225, 186, 165, 0, 225, 186, 167, 0, 225,
+			186, 169, 0, 225, 186, 171, 0, 225, 186, 173, 0, 225, 187, 143, 0, 225, 187, 141, 0, 225, 187, 145, 0, 225, 187, 147, 0, 225, 187, 149,
+			0, 225, 187, 151, 0, 225, 187, 153, 0, 225, 187, 169, 0, 225, 187, 171, 0, 225, 187, 173, 0, 225, 187, 175, 0, 225, 187, 177, 0, 225,
+			187, 155, 0, 225, 187, 157, 0, 225, 187, 159, 0, 225, 187, 161, 0, 225, 187, 163, 0, 196, 131, 0, 195, 162, 0, 195, 180, 0, 195, 161,
+			0, 195, 160, 0, 195, 163, 0, 195, 185, 0, 195, 186, 0, 197, 169, 0, 195, 179, 0, 195, 178, 0, 195, 181, 0, 198, 176, 0, 198, 161,
+			0, 97, 0, 117, 0, 111, 0, 7, 6, 195, 160, 0, 3, 114, 108, 0, 121, 3, 120, 108, 0, 4, 105, 3, 121, 108, 0, 121, 5, 2,
+			0, 117, 3, 130, 108, 0, 4, 111, 3, 131, 108, 0, 117, 5, 2, 0, 7, 6, 195, 161, 0, 3, 114, 109, 0, 121, 3, 120, 109, 0,
+			4, 105, 3, 121, 109, 0, 121, 5, 2, 0, 117, 3, 130, 109, 0, 4, 111, 3, 131, 109, 0, 117, 5, 2, 0, 7, 6, 195, 162, 0,
+			3, 13, 0, 4, 5, 1, 2, 18, 68, 3, 35, 0, 5, 2, 2, 18, 68, 0, 121, 3, 122, 0, 117, 3, 135, 17, 0, 7, 6, 195,
+			163, 0, 3, 114, 111, 0, 121, 3, 120, 111, 0, 4, 105, 3, 121, 111, 0, 121, 5, 2, 0, 117, 3, 130, 111, 0, 4, 111, 3, 131,
+			111, 0, 117, 5, 2, 0, 7, 6, 195, 168, 0, 3, 115, 108, 0, 111, 3, 133, 108, 0, 7, 6, 195, 169, 0, 3, 115, 109, 0, 111,
+			3, 133, 109, 0, 7, 6, 195, 170, 0, 3, 36, 0, 4, 5, 2, 2, 18, 67, 3, 119, 0, 5, 2, 2, 18, 68, 0, 117, 3, 132,
+			17, 0, 7, 6, 195, 172, 0, 4, 5, 1, 2, 18, 68, 3, 13, 108, 0, 5, 2, 2, 18, 67, 0, 5, 2, 2, 18, 68, 0, 3,
+			37, 108, 0, 2, 17, 65, 3, 57, 108, 0, 117, 3, 134, 108, 0, 97, 3, 137, 108, 0, 7, 6, 195, 173, 0, 4, 5, 1, 2, 18,
+			68, 3, 13, 109, 0, 5, 2, 2, 18, 67, 0, 5, 2, 2, 18, 68, 0, 3, 37, 109, 0, 2, 17, 65, 3, 57, 109, 0, 117, 3,
+			134, 109, 0, 97, 3, 137, 109, 0, 7, 6, 195, 177, 0, 3, 67, 0, 7, 6, 195, 178, 0, 3, 116, 108, 0, 105, 3, 126, 108, 0,
+			110, 103, 3, 141, 108, 0, 97, 3, 142, 108, 0, 101, 3, 143, 108, 0, 7, 6, 195, 179, 0, 3, 116, 109, 0, 105, 3, 126, 109, 0,
+			110, 103, 3, 141, 109, 0, 97, 3, 142, 109, 0, 101, 3, 143, 109, 0, 7, 6, 195, 180, 0, 3, 39, 0, 105, 3, 127, 0, 110, 103,
+			3, 140, 0, 105, 5, 2, 3, 146, 0, 7, 6, 195, 181, 0, 3, 116, 111, 0, 105, 3, 126, 111, 0, 110, 103, 3, 141, 111, 0, 97,
+			3, 142, 111, 0, 101, 3, 143, 111, 0, 7, 6, 195, 185, 0, 3, 40, 108, 0, 2, 17, 65, 3, 58, 108, 0, 105, 3, 128, 108, 0,
+			97, 3, 139, 108, 0, 5, 2, 3, 147, 108, 0, 7, 6, 195, 186, 0, 3, 40, 109, 0, 2, 17, 65, 3, 58, 109, 0, 105, 3, 128,
+			109, 0, 97, 3, 139, 109, 0, 5, 2, 3, 147, 109, 0, 7, 6, 195, 189, 0, 3, 37, 109, 0, 2, 17, 65, 3, 57, 109, 0, 97,
+			3, 137, 109, 0, 7, 6, 196, 131, 0, 3, 35, 0, 7, 6, 196, 145, 0, 8, 3, 149, 0, 7, 6, 196, 169, 0, 4, 5, 1, 2,
+			18, 68, 3, 13, 111, 0, 5, 2, 2, 18, 67, 0, 5, 2, 2, 18, 68, 0, 3, 37, 111, 0, 2, 17, 65, 3, 57, 111, 0, 117,
+			3, 134, 111, 0, 97, 3, 137, 111, 0, 7, 6, 197, 169, 0, 3, 40, 111, 0, 2, 17, 65, 3, 58, 111, 0, 105, 3, 128, 111, 0,
+			97, 3, 139, 111, 0, 5, 2, 3, 147, 111, 0, 7, 6, 198, 161, 0, 105, 5, 2, 3, 14, 0, 3, 119, 0, 105, 3, 123, 0, 117,
+			3, 136, 0, 7, 6, 198, 176, 0, 3, 118, 0, 117, 3, 118, 58, 0, 105, 3, 129, 0, 4, 97, 3, 138, 0, 198, 161, 0, 198, 161,
+			105, 3, 138, 57, 0, 225, 187, 157, 105, 3, 138, 57, 108, 0, 225, 187, 155, 105, 3, 138, 57, 109, 0, 225, 187, 159, 105, 3, 138, 57,
+			110, 0, 225, 187, 161, 105, 3, 138, 57, 111, 0, 225, 187, 163, 105, 3, 138, 57, 112, 0, 198, 161, 117, 3, 138, 58, 0, 225, 187, 157,
+			117, 3, 138, 58, 108, 0, 225, 187, 155, 117, 3, 138, 58, 109, 0, 225, 187, 159, 117, 3, 138, 58, 110, 0, 225, 187, 161, 117, 3, 138,
+			58, 111, 0, 225, 187, 163, 117, 3, 138, 58, 112, 0, 225, 187, 157, 3, 138, 108, 0, 225, 187, 155, 3, 138, 109, 0, 225, 187, 159, 3,
+			138, 110, 0, 225, 187, 161, 3, 138, 111, 0, 225, 187, 163, 3, 138, 112, 0, 7, 6, 225, 186, 0, 163, 3, 114, 110, 0, 163, 121, 3,
+			120, 110, 0, 4, 163, 105, 3, 121, 110, 0, 163, 121, 5, 2, 0, 163, 117, 3, 130, 110, 0, 4, 163, 111, 3, 131, 110, 0, 163, 117,
+			5, 2, 0, 161, 3, 114, 112, 0, 161, 121, 3, 120, 112, 0, 4, 161, 105, 3, 121, 112, 0, 161, 121, 5, 2, 0, 161, 117, 3, 130,
+			112, 0, 4, 161, 111, 3, 131, 112, 0, 161, 117, 5, 2, 0, 177, 3, 35, 108, 0, 175, 3, 35, 109, 0, 179, 3, 35, 110, 0, 181,
+			3, 35, 111, 0, 183, 3, 35, 112, 0, 167, 3, 13, 108, 0, 4, 167, 5, 1, 2, 18, 68, 3, 35, 108, 0, 167, 5, 2, 2, 18,
+			68, 0, 167, 121, 3, 122, 108, 0, 167, 117, 3, 135, 108, 0, 165, 3, 13, 109, 0, 4, 165, 5, 1, 2, 18, 68, 3, 35, 109, 0,
+			165, 5, 2, 2, 18, 68, 0, 165, 121, 3, 122, 109, 0, 165, 117, 3, 135, 109, 0, 169, 3, 13, 110, 0, 169, 121, 3, 122, 110, 0,
+			169, 117, 3, 135, 110, 0, 171, 3, 13, 111, 0, 171, 121, 3, 122, 111, 0, 171, 117, 3, 135, 111, 0, 173, 3, 13, 112, 0, 4, 173,
+			5, 1, 2, 18, 68, 3, 35, 112, 0, 173, 5, 2, 2, 18, 68, 0, 173, 121, 3, 122, 112, 0, 173, 117, 3, 135, 112, 0, 187, 3,
+			115, 110, 0, 187, 111, 3, 133, 110, 0, 189, 3, 115, 111, 0, 189, 111, 3, 133, 111, 0, 185, 3, 115, 112, 0, 185, 111, 3, 133, 112,
+			0, 191, 3, 36, 109, 0, 4, 191, 5, 2, 2, 18, 67, 3, 119, 109, 0, 191, 5, 2, 2, 18, 68, 0, 191, 117, 3, 132, 109, 0,
+			7, 6, 225, 187, 0, 129, 3, 36, 108, 0, 4, 129, 5, 2, 2, 18, 67, 3, 119, 108, 0, 129, 5, 2, 2, 18, 68, 0, 129, 117,
+			3, 132, 108, 0, 131, 3, 36, 110, 0, 4, 131, 5, 2, 2, 18, 67, 3, 119, 110, 0, 131, 5, 2, 2, 18, 68, 0, 131, 117, 3,
+			132, 110, 0, 133, 3, 36, 111, 0, 4, 133, 5, 2, 2, 18, 67, 3, 119, 111, 0, 133, 5, 2, 2, 18, 68, 0, 133, 117, 3, 132,
+			111, 0, 135, 3, 36, 112, 0, 4, 135, 5, 2, 2, 18, 67, 3, 119, 112, 0, 135, 5, 2, 2, 18, 68, 0, 135, 117, 3, 132, 112,
+			0, 4, 137, 5, 1, 2, 18, 68, 3, 13, 110, 0, 137, 5, 2, 2, 18, 67, 0, 137, 5, 2, 2, 18, 68, 0, 137, 3, 37, 110,
+			0, 137, 2, 17, 65, 3, 57, 110, 0, 137, 117, 3, 134, 110, 0, 137, 97, 3, 137, 110, 0, 4, 139, 5, 1, 2, 18, 68, 3, 13,
+			112, 0, 139, 5, 2, 2, 18, 67, 0, 139, 5, 2, 2, 18, 68, 0, 139, 3, 37, 112, 0, 139, 2, 17, 65, 3, 57, 112, 0, 139,
+			117, 3, 134, 112, 0, 139, 97, 3, 137, 112, 0, 143, 3, 116, 110, 0, 143, 105, 3, 126, 110, 0, 143, 110, 103, 3, 141, 110, 0, 143,
+			97, 3, 142, 110, 0, 143, 101, 3, 143, 110, 0, 141, 3, 116, 112, 0, 141, 105, 3, 126, 112, 0, 141, 110, 103, 3, 141, 112, 0, 141,
+			97, 3, 142, 112, 0, 141, 101, 3, 143, 112, 0, 147, 3, 39, 108, 0, 147, 105, 3, 127, 108, 0, 147, 110, 103, 3, 140, 108, 0, 147,
+			105, 5, 2, 3, 146, 108, 0, 145, 3, 39, 109, 0, 145, 105, 3, 127, 109, 0, 145, 110, 103, 3, 140, 109, 0, 145, 105, 5, 2, 3,
+			146, 109, 0, 149, 3, 39, 110, 0, 149, 105, 3, 127, 110, 0, 149, 110, 103, 3, 140, 110, 0, 149, 105, 5, 2, 3, 146, 110, 0, 151,
+			3, 39, 111, 0, 151, 105, 3, 127, 111, 0, 151, 110, 103, 3, 140, 111, 0, 151, 105, 5, 2, 3, 146, 111, 0, 153, 3, 39, 112, 0,
+			153, 105, 3, 127, 112, 0, 153, 105, 5, 2, 3, 146, 112, 0, 157, 105, 5, 2, 3, 14, 108, 0, 157, 3, 119, 108, 0, 157, 105, 3,
+			123, 108, 0, 157, 117, 3, 136, 108, 0, 155, 105, 5, 2, 3, 14, 109, 0, 155, 3, 119, 109, 0, 155, 105, 3, 123, 109, 0, 155, 117,
+			3, 136, 109, 0, 159, 105, 5, 2, 3, 14, 110, 0, 159, 3, 119, 110, 0, 159, 105, 3, 123, 110, 0, 159, 117, 3, 136, 110, 0, 161,
+			105, 5, 2, 3, 14, 111, 0, 161, 3, 119, 111, 0, 161, 105, 3, 123, 111, 0, 161, 117, 3, 136, 111, 0, 163, 105, 5, 2, 3, 14,
+			112, 0, 163, 3, 119, 112, 0, 163, 105, 3, 123, 112, 0, 163, 117, 3, 136, 112, 0, 167, 3, 40, 110, 0, 167, 2, 17, 65, 3, 58,
+			110, 0, 167, 105, 3, 128, 110, 0, 167, 97, 3, 139, 110, 0, 167, 5, 2, 3, 147, 110, 0, 165, 3, 40, 112, 0, 165, 2, 17, 65,
+			3, 58, 112, 0, 165, 105, 3, 128, 112, 0, 165, 97, 3, 139, 112, 0, 165, 5, 2, 3, 147, 112, 0, 171, 3, 118, 108, 0, 171, 117,
+			3, 118, 108, 58, 108, 0, 171, 105, 3, 129, 108, 0, 171, 97, 3, 138, 108, 0, 169, 3, 118, 109, 0, 169, 117, 3, 118, 109, 58, 109,
+			0, 169, 105, 3, 129, 109, 0, 169, 97, 3, 138, 109, 0, 173, 3, 118, 110, 0, 173, 117, 3, 118, 110, 58, 110, 0, 173, 105, 3, 129,
+			110, 0, 173, 97, 3, 138, 110, 0, 175, 3, 118, 111, 0, 175, 117, 3, 118, 111, 58, 111, 0, 175, 105, 3, 129, 111, 0, 175, 97, 3,
+			138, 111, 0, 177, 3, 118, 112, 0, 177, 117, 3, 118, 112, 58, 112, 0, 177, 105, 3, 129, 112, 0, 177, 97, 3, 138, 112, 0, 179, 3,
+			37, 108, 0, 179, 2, 17, 65, 3, 57, 108, 0, 179, 97, 3, 137, 108, 0, 183, 3, 37, 110, 0, 183, 2, 17, 65, 3, 57, 110, 0,
+			183, 97, 3, 137, 110, 0, 185, 3, 37, 111, 0, 185, 2, 17, 65, 3, 57, 111, 0, 185, 97, 3, 137, 111, 0, 181, 3, 37, 112, 0,
+			181, 2, 17, 65, 3, 57, 112, 0, 181, 97, 3, 137, 112, 0, 7, 6, 97, 0, 4, 2, 18, 66, 3, 21, 0, 2, 21, 0, 105, 2,
+			18, 67, 0, 3, 114, 0, 121, 3, 120, 0, 195, 189, 3, 120, 109, 0, 225, 187, 183, 3, 120, 110, 0, 225, 187, 185, 3, 120, 111, 0,
+			225, 187, 181, 3, 120, 112, 0, 4, 105, 3, 121, 0, 121, 5, 2, 0, 195, 172, 3, 121, 108, 0, 195, 173, 3, 121, 109, 0, 225, 187,
+			137, 3, 121, 110, 0, 196, 169, 3, 121, 111, 0, 225, 187, 139, 3, 121, 112, 0, 117, 3, 130, 0, 195, 185, 3, 130, 108, 0, 195, 186,
+			3, 130, 109, 0, 225, 187, 167, 3, 130, 110, 0, 197, 169, 3, 130, 111, 0, 225, 187, 165, 3, 130, 112, 0, 4, 111, 3, 131, 0, 117,
+			5, 2, 0, 195, 178, 3, 131, 108, 0, 195, 179, 3, 131, 109, 0, 225, 187, 143, 3, 131, 110, 0, 195, 181, 3, 131, 111, 0, 225, 187,
+			141, 3, 131, 112, 0, 7, 6, 98, 0, 8, 3, 10, 71, 0, 3, 71, 0, 7, 6, 99, 0, 4, 2, 17, 67, 3, 21, 0, 101, 2,
+			32, 0, 108, 8, 0, 104, 8, 3, 78, 0, 4, 104, 2, 32, 3, 80, 0, 104, 5, 1, 8, 0, 104, 5, 2, 8, 0, 3, 81, 0,
+			2, 32, 3, 117, 0, 7, 6, 100, 0, 2, 32, 3, 21, 0, 3, 88, 0, 4, 5, 1, 3, 98, 0, 5, 2, 0, 7, 6, 101, 0,
+			4, 2, 18, 66, 3, 21, 0, 2, 21, 0, 121, 2, 32, 0, 3, 115, 0, 111, 3, 133, 0, 195, 178, 3, 133, 108, 0, 195, 179, 3,
+			133, 109, 0, 225, 187, 143, 3, 133, 110, 0, 225, 187, 151, 3, 133, 111, 0, 225, 187, 141, 3, 133, 112, 0, 7, 6, 102, 0, 4, 2,
+			32, 3, 21, 0, 8, 0, 7, 6, 103, 0, 4, 8, 3, 21, 0, 97, 116, 8, 0, 104, 116, 2, 32, 0, 111, 108, 8, 0, 4, 2,
+			195, 172, 3, 88, 0, 2, 195, 173, 0, 2, 196, 169, 0, 2, 225, 187, 137, 0, 2, 225, 187, 139, 0, 105, 0, 105, 195, 170, 110, 103,
+			3, 88, 6, 144, 17, 68, 0, 105, 225, 187, 129, 110, 103, 3, 88, 6, 144, 108, 68, 0, 105, 225, 186, 191, 110, 103, 3, 88, 6, 144,
+			109, 68, 0, 105, 225, 186, 191, 116, 3, 88, 6, 144, 109, 74, 0, 105, 225, 186, 191, 99, 3, 88, 6, 144, 109, 117, 0, 105, 225, 187,
+			131, 110, 103, 3, 88, 6, 144, 110, 68, 0, 105, 225, 187, 133, 110, 103, 3, 88, 6, 144, 111, 68, 0, 105, 225, 187, 135, 110, 103, 3,
+			88, 6, 144, 112, 68, 0, 105, 225, 187, 135, 116, 3, 88, 6, 144, 112, 74, 0, 105, 225, 187, 135, 99, 3, 88, 6, 144, 112, 117, 0,
+			4, 5, 1, 2, 195, 172, 3, 98, 0, 5, 1, 2, 195, 173, 0, 5, 1, 2, 196, 169, 0, 5, 1, 2, 225, 187, 137, 0, 5, 1,
+			2, 225, 187, 139, 0, 5, 2, 2, 195, 172, 0, 5, 2, 2, 195, 173, 0, 5, 2, 2, 196, 169, 0, 5, 2, 2, 225, 187, 137, 0,
+			5, 2, 2, 225, 187, 139, 0, 105, 5, 1, 0, 105, 5, 2, 0, 4, 105, 195, 170, 110, 103, 5, 1, 3, 98, 6, 144, 17, 68, 0,
+			105, 195, 170, 110, 103, 5, 2, 0, 4, 105, 225, 187, 129, 110, 103, 5, 1, 3, 98, 6, 144, 108, 68, 0, 105, 225, 187, 129, 110, 103,
+			5, 2, 0, 4, 105, 225, 186, 191, 110, 103, 5, 1, 3, 98, 6, 144, 109, 68, 0, 105, 225, 186, 191, 110, 103, 5, 2, 0, 4, 105,
+			225, 186, 191, 116, 5, 1, 3, 98, 6, 144, 109, 81, 0, 105, 225, 186, 191, 116, 5, 2, 0, 105, 225, 187, 135, 116, 5, 1, 3, 98,
+			6, 144, 112, 81, 0, 4, 2, 18, 69, 3, 100, 0, 104, 0, 7, 6, 104, 0, 117, 5, 2, 3, 58, 0, 3, 107, 0, 7, 6, 105,
+			0, 4, 5, 1, 2, 18, 68, 3, 13, 0, 5, 2, 2, 18, 67, 0, 5, 2, 2, 18, 68, 0, 4, 2, 18, 66, 3, 21, 0, 2,
+			21, 0, 3, 37, 0, 4, 117, 3, 134, 0, 195, 170, 117, 0, 4, 195, 185, 3, 134, 108, 0, 225, 187, 129, 117, 0, 4, 195, 186, 3,
+			134, 109, 0, 225, 186, 191, 117, 0, 4, 225, 187, 131, 117, 3, 134, 110, 0, 225, 187, 167, 0, 4, 197, 169, 3, 134, 111, 0, 225, 187,
+			133, 117, 0, 4, 225, 187, 135, 117, 3, 134, 112, 0, 225, 187, 165, 0, 97, 3, 137, 0, 195, 160, 3, 137, 108, 0, 195, 161, 3, 137,
+			109, 0, 225, 186, 163, 3, 137, 110, 0, 195, 163, 3, 137, 111, 0, 225, 186, 161, 3, 137, 112, 0, 195, 170, 3, 144, 0, 225, 187, 129,
+			3, 144, 108, 0, 225, 186, 191, 3, 144, 109, 0, 225, 187, 131, 3, 144, 110, 0, 225, 187, 133, 3, 144, 111, 0, 225, 187, 135, 3, 144,
+			112, 0, 7, 6, 106, 0, 3, 90, 0, 7, 6, 107, 0, 2, 32, 3, 21, 0, 8, 3, 49, 0, 104, 8, 3, 101, 0, 7, 6, 108,
+			0, 4, 2, 32, 3, 21, 0, 101, 1, 17, 67, 0, 3, 55, 0, 7, 6, 109, 0, 3, 65, 0, 7, 6, 110, 0, 100, 2, 32, 3,
+			21, 0, 4, 3, 50, 0, 104, 5, 2, 1, 18, 67, 0, 104, 3, 67, 0, 4, 5, 1, 2, 32, 3, 68, 0, 5, 2, 2, 32, 0,
+			103, 0, 103, 104, 0, 7, 6, 111, 0, 2, 21, 3, 21, 0, 3, 116, 0, 105, 3, 126, 0, 195, 172, 3, 126, 108, 0, 195, 173, 3,
+			126, 109, 0, 225, 187, 137, 3, 126, 110, 0, 196, 169, 3, 126, 111, 0, 225, 187, 139, 3, 126, 112, 0, 110, 103, 3, 141, 0, 4, 97,
+			3, 142, 0, 111, 0, 196, 131, 3, 142, 17, 0, 4, 195, 160, 3, 142, 108, 0, 225, 186, 177, 0, 4, 195, 161, 3, 142, 109, 0, 225,
+			186, 175, 0, 4, 225, 186, 163, 3, 142, 110, 0, 225, 186, 179, 0, 4, 195, 163, 3, 142, 111, 0, 225, 186, 181, 0, 4, 225, 186, 161,
+			3, 142, 112, 0, 225, 186, 183, 0, 101, 3, 143, 0, 97, 105, 3, 145, 0, 195, 160, 105, 3, 145, 108, 0, 195, 161, 105, 3, 145, 109,
+			0, 225, 186, 163, 105, 3, 145, 110, 0, 195, 163, 105, 3, 145, 111, 0, 225, 186, 161, 105, 3, 145, 112, 0, 7, 6, 112, 0, 2, 17,
+			67, 3, 21, 0, 3, 48, 0, 104, 3, 83, 0, 7, 6, 113, 0, 3, 49, 0, 117, 3, 58, 0, 2, 32, 3, 117, 0, 7, 6, 114,
+			0, 4, 2, 32, 3, 21, 0, 109, 2, 32, 0, 3, 88, 0, 5, 1, 3, 92, 0, 5, 2, 3, 100, 0, 7, 6, 115, 0, 4, 2,
+			32, 3, 21, 0, 104, 8, 0, 116, 2, 32, 0, 3, 93, 0, 7, 6, 116, 0, 4, 104, 2, 32, 3, 21, 0, 115, 2, 32, 0, 116,
+			2, 32, 0, 104, 3, 47, 0, 3, 74, 0, 114, 3, 76, 0, 114, 5, 2, 3, 80, 0, 4, 5, 1, 2, 32, 3, 117, 0, 5, 2,
+			2, 32, 0, 114, 5, 1, 3, 148, 0, 7, 6, 117, 0, 4, 2, 18, 66, 3, 21, 0, 2, 21, 0, 3, 40, 0, 4, 1, 17, 65,
+			3, 58, 0, 2, 17, 65, 0, 105, 3, 128, 0, 195, 172, 3, 128, 108, 0, 195, 173, 3, 128, 109, 0, 225, 187, 137, 3, 128, 110, 0,
+			196, 169, 3, 128, 111, 0, 225, 187, 139, 3, 128, 112, 0, 4, 97, 3, 139, 0, 195, 180, 0, 195, 180, 105, 3, 139, 57, 0, 225, 187,
+			147, 105, 3, 139, 57, 108, 0, 225, 187, 145, 105, 3, 139, 57, 109, 0, 225, 187, 149, 105, 3, 139, 57, 110, 0, 225, 187, 151, 105, 3,
+			139, 57, 111, 0, 225, 187, 153, 105, 3, 139, 57, 112, 0, 4, 195, 160, 3, 139, 108, 0, 225, 187, 147, 0, 4, 195, 161, 3, 139, 109,
+			0, 225, 187, 145, 0, 4, 225, 186, 163, 3, 139, 110, 0, 225, 187, 149, 0, 4, 195, 163, 3, 139, 111, 0, 225, 187, 151, 0, 4, 225,
+			186, 161, 3, 139, 112, 0, 225, 187, 153, 0, 5, 2, 3, 147, 0, 7, 6, 118, 0, 101, 2, 17, 65, 3, 21, 0, 3, 84, 0, 5,
+			2, 3, 98, 0, 7, 6, 119, 0, 4, 2, 32, 3, 21, 0, 8, 0, 3, 58, 0, 7, 6, 120, 0, 2, 32, 3, 21, 0, 3, 89,
+			0, 7, 6, 121, 0, 4, 1, 117, 98, 3, 21, 0, 2, 18, 66, 0, 3, 37, 0, 4, 97, 3, 137, 0, 195, 170, 0, 4, 195, 160,
+			3, 137, 108, 0, 225, 187, 129, 0, 4, 195, 161, 3, 137, 109, 0, 225, 186, 191, 0, 4, 225, 186, 163, 3, 137, 110, 0, 225, 187, 131,
+			0, 4, 195, 163, 3, 137, 111, 0, 225, 187, 133, 0, 4, 225, 186, 161, 3, 137, 112, 0, 225, 187, 135, 0, 7, 6, 122, 0, 2, 32,
+			3, 21, 0, 3, 88, 0, 7, 6, 206, 0, 4, 174, 3, 36, 17, 23, 74, 6, 114, 17, 0, 183, 0, 4, 175, 3, 37, 17, 23, 6,
+			39, 17, 23, 74, 6, 114, 17, 0, 185, 0, 191, 3, 39, 17, 23, 65, 6, 37, 17, 23, 49, 92, 6, 116, 113, 50, 0, 184, 3, 47,
+			6, 36, 17, 23, 74, 6, 114, 17, 0, 186, 3, 49, 6, 114, 17, 48, 23, 48, 6, 114, 17, 0, 189, 3, 50, 58, 6, 37, 17, 0,
+			187, 3, 55, 6, 35, 17, 65, 23, 10, 72, 6, 114, 17, 0, 188, 3, 65, 58, 6, 37, 17, 0, 178, 3, 71, 6, 36, 17, 23, 74,
+			6, 114, 17, 0, 180, 3, 79, 6, 115, 17, 50, 23, 74, 6, 114, 17, 0, 182, 3, 86, 6, 36, 17, 23, 74, 6, 114, 17, 0, 190,
+			3, 89, 6, 37, 113, 0, 179, 3, 100, 6, 114, 17, 23, 65, 6, 114, 17, 0, 4, 172, 3, 114, 17, 50, 23, 83, 6, 114, 17, 0,
+			177, 0, 4, 173, 3, 115, 17, 48, 23, 89, 6, 37, 17, 23, 55, 6, 116, 17, 50, 0, 181, 0, 7, 6, 207, 0, 4, 137, 3, 39,
+			17, 23, 65, 6, 36, 17, 23, 100, 6, 114, 113, 0, 142, 0, 140, 3, 39, 17, 23, 65, 6, 37, 17, 23, 49, 92, 6, 116, 113, 50,
+			0, 4, 133, 3, 40, 17, 48, 23, 89, 6, 37, 17, 23, 55, 6, 116, 17, 50, 0, 141, 0, 128, 3, 48, 6, 37, 17, 0, 136, 3,
+			48, 89, 6, 37, 17, 0, 132, 3, 74, 6, 39, 17, 0, 135, 3, 80, 6, 37, 17, 0, 134, 3, 83, 6, 37, 17, 0, 4, 130, 3,
+			89, 6, 37, 109, 80, 23, 65, 6, 114, 17, 0, 131, 0, 129, 3, 92, 6, 39, 17, 0, 7, 6, 0, 4, 33, 2, 33, 3, 0, 46,
+			1, 46, 3, 0, 46, 2, 46, 3, 9, 0, 33, 3, 9, 80, 6, 13, 109, 65, 23, 47, 6, 114, 113, 50, 9, 0, 4, 45, 1, 32,
+			17, 65, 2, 32, 15, 3, 10, 0, 45, 1, 32, 17, 67, 2, 32, 15, 0, 62, 61, 3, 55, 6, 119, 109, 50, 23, 107, 6, 119, 17,
+			50, 23, 107, 58, 4, 35, 112, 117, 10, 71, 6, 35, 108, 68, 0, 60, 61, 3, 67, 6, 116, 110, 23, 107, 6, 119, 17, 50, 23, 107,
+			58, 4, 35, 112, 117, 10, 71, 6, 35, 108, 68, 0, 36, 3, 72, 6, 39, 15, 55, 6, 35, 0, 46, 3, 80, 6, 13, 109, 65, 10,
+			0, 37, 3, 83, 6, 13, 108, 50, 15, 148, 6, 35, 65, 0, 104, 1, 32, 15, 2, 32, 15, 15, 32, 3, 86, 6, 119, 108, 0, 33,
+			61, 3, 101, 6, 140, 23, 10, 71, 6, 35, 108, 68, 10, 0, 45, 8, 32, 2, 32, 15, 3, 148, 6, 118, 108, 0, 7, 0, 0};
+		autoFileInMemory espeakdata_dicts67 = FileInMemory_createWithData (7438, reinterpret_cast<const char *> (&espeakdata_dicts67_data), 
+			U"espeak-1.48.04-source/espeak-data/vi_dict", 
 			U"vi");
-		Collection_addItem (me.peek(), espeakdata_dicts68.transfer());
-
-		static unsigned char espeakdata_dicts69_data[1735] = {
-			0, 4, 0, 0, 85, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 11, 5, 95, 48, 1, 14, 4, 2, 35, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 51, 88, 67, 6, 111, 47, 12, 83, 40, 49,
-			12, 0, 0, 12, 3, 95, 48, 67, 47, 6, 110, 65, 110, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 95, 49, 67, 47, 6,
-			110, 65, 110, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3,
-			95, 55, 88, 79, 6, 40, 52, 116, 65, 67, 113, 52, 83, 40, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 11, 3, 95, 49, 88, 83, 6, 40, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 3, 95, 50, 88, 67, 6, 113,
-			52, 83, 40, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 95, 52, 88, 67, 6, 112,
-			50, 47, 83, 40, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 95, 53, 88, 79, 6, 40, 52, 116, 65, 83, 40, 49, 12,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 54, 88, 79, 6, 40, 52, 116, 65, 71, 111, 50, 12, 83, 40, 49, 12, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 56, 88, 79, 6, 40, 52, 116, 65, 67, 111, 47, 12,
-			83, 40, 49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 95, 57, 88, 79, 6, 40, 52, 116, 65, 67, 112, 50, 47, 83, 40,
-			49, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 4, 95, 48, 77, 50, 47, 6, 35, 65, 50, 72, 35,
-			52, 112, 47, 0, 0, 0, 0, 13, 4, 95, 48, 77, 49, 79, 6, 40, 50, 12, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 2, 95, 51, 67, 6, 111, 47, 12, 0, 0, 9, 2, 95, 50, 67, 6,
-			113, 52, 0, 0, 10, 2, 95, 49, 71, 6, 111, 50, 12, 0, 0, 9, 2, 95, 48, 47, 6, 40, 89, 0, 0, 14, 2, 95, 55, 79,
-			6, 40, 52, 116, 65, 67, 113, 52, 0, 0, 15, 2, 95, 54, 79, 6, 40, 52, 116, 65, 71, 111, 50, 12, 0, 0, 11, 2, 95, 53,
-			79, 6, 40, 52, 116, 65, 0, 0, 10, 2, 95, 52, 67, 6, 112, 50, 47, 0, 0, 0, 0, 15, 2, 95, 57, 79, 6, 40, 52, 116,
-			65, 67, 112, 50, 47, 0, 0, 15, 2, 95, 56, 79, 6, 40, 52, 116, 65, 67, 111, 47, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 195, 169, 0, 3, 36, 0, 4, 101, 3, 110, 0, 195, 169, 0,
-			7, 6, 195, 171, 0, 3, 13, 0, 4, 101, 3, 108, 0, 195, 171, 0, 7, 6, 195, 177, 0, 3, 67, 0, 7, 6, 195, 179, 0, 3,
-			39, 0, 4, 111, 3, 116, 0, 195, 179, 0, 7, 6, 197, 139, 0, 1, 25, 2, 25, 3, 43, 0, 3, 68, 0, 197, 139, 3, 68, 12,
-			0, 7, 6, 97, 0, 3, 35, 0, 97, 3, 113, 0, 7, 6, 98, 0, 3, 71, 0, 98, 3, 71, 12, 0, 7, 6, 99, 0, 3, 80,
-			0, 99, 3, 80, 12, 0, 7, 6, 100, 0, 3, 72, 0, 100, 3, 72, 12, 0, 7, 6, 101, 0, 3, 111, 0, 101, 3, 112, 0, 7,
-			6, 102, 0, 3, 83, 0, 7, 6, 103, 0, 3, 81, 0, 103, 3, 81, 12, 0, 7, 6, 104, 0, 3, 107, 0, 7, 6, 105, 0, 3,
-			37, 0, 105, 3, 109, 0, 7, 6, 106, 0, 3, 79, 0, 3, 79, 12, 0, 7, 6, 107, 0, 3, 49, 0, 107, 3, 49, 12, 0, 7,
-			6, 108, 0, 3, 55, 0, 7, 6, 109, 0, 1, 25, 2, 25, 3, 41, 0, 3, 65, 0, 109, 3, 65, 12, 0, 7, 6, 110, 0, 1,
-			25, 2, 25, 3, 42, 0, 3, 50, 0, 110, 3, 50, 12, 0, 7, 6, 111, 0, 3, 114, 0, 111, 3, 115, 0, 7, 6, 112, 0, 3,
-			48, 0, 112, 3, 48, 12, 0, 7, 6, 113, 0, 3, 104, 0, 113, 3, 104, 12, 0, 7, 6, 114, 0, 2, 114, 3, 51, 0, 3, 52,
-			0, 7, 6, 115, 0, 3, 89, 0, 115, 3, 89, 118, 0, 7, 6, 116, 0, 3, 47, 0, 116, 3, 47, 12, 0, 7, 6, 117, 0, 3,
-			40, 0, 117, 3, 117, 0, 7, 6, 118, 0, 3, 84, 0, 7, 6, 119, 0, 3, 58, 0, 7, 6, 120, 0, 3, 101, 0, 7, 6, 121,
-			0, 3, 57, 0, 7, 6, 122, 0, 3, 88, 0, 7, 6, 0, 36, 3, 72, 114, 55, 35, 52, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts69 = FileInMemory_createWithData (1734, reinterpret_cast<const char *> (&espeakdata_dicts69_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/wo_dict", 
-			U"wo");
-		Collection_addItem (me.peek(), espeakdata_dicts69.transfer());
+		my addItem_move (espeakdata_dicts67.move());
 
-		static unsigned char espeakdata_dicts70_data[41828] = {
+		static unsigned char espeakdata_dicts68_data[41828] = {
 			0, 4, 0, 0, 94, 157, 0, 0, 10, 3, 229, 185, 178, 103, 97, 110, 49, 0, 12, 3, 232, 172, 138, 104, 117, 97, 110, 103, 51, 0,
 			10, 3, 233, 165, 146, 114, 97, 111, 50, 0, 10, 3, 232, 175, 162, 120, 117, 110, 50, 0, 11, 3, 233, 164, 138, 121, 97, 110, 103, 51,
 			0, 0, 10, 3, 230, 178, 185, 121, 111, 117, 50, 0, 10, 3, 232, 175, 161, 103, 117, 105, 51, 0, 9, 3, 230, 189, 145, 112, 111, 53,
@@ -35348,7 +47705,7 @@ FilesInMemory create_espeakdata_dicts () {
 			102, 117, 51, 0, 11, 3, 230, 148, 187, 103, 111, 110, 103, 49, 0, 9, 3, 232, 131, 179, 103, 101, 49, 0, 11, 3, 229, 167, 147, 120,
 			105, 110, 103, 52, 0, 11, 3, 230, 157, 131, 113, 117, 97, 110, 50, 0, 9, 3, 233, 134, 139, 99, 117, 52, 0, 0, 10, 3, 230, 159,
 			144, 109, 111, 117, 51, 0, 9, 3, 229, 166, 136, 109, 97, 49, 0, 11, 3, 230, 147, 176, 110, 105, 110, 103, 50, 0, 10, 3, 229, 167,
-			144, 106, 105, 101, 53, 0, 11, 3, 229, 154, 168, 108, 111, 110, 103, 50, 0, 10, 3, 230, 157, 128, 115, 104, 97, 49, 0, 9, 3, 229,
+			144, 106, 105, 101, 51, 0, 11, 3, 229, 154, 168, 108, 111, 110, 103, 50, 0, 10, 3, 230, 157, 128, 115, 104, 97, 49, 0, 9, 3, 229,
 			152, 152, 120, 117, 49, 0, 11, 3, 232, 132, 184, 108, 105, 97, 110, 51, 0, 10, 3, 229, 155, 176, 107, 117, 110, 52, 0, 0, 9, 3,
 			231, 139, 177, 121, 117, 52, 0, 11, 3, 229, 155, 177, 99, 111, 110, 103, 49, 0, 11, 3, 232, 130, 169, 106, 105, 97, 110, 49, 0, 10,
 			3, 230, 148, 185, 103, 97, 105, 51, 0, 9, 3, 229, 167, 145, 103, 117, 49, 0, 11, 3, 230, 146, 169, 108, 105, 97, 111, 49, 0, 12,
@@ -35964,7 +48321,7 @@ FilesInMemory create_espeakdata_dicts () {
 			49, 0, 11, 3, 232, 161, 161, 104, 101, 110, 103, 50, 0, 10, 3, 229, 188, 185, 100, 97, 110, 52, 0, 9, 3, 231, 170, 169, 119, 111,
 			49, 0, 9, 3, 232, 175, 145, 121, 105, 52, 0, 10, 3, 233, 153, 161, 100, 111, 117, 51, 0, 0, 9, 3, 233, 156, 184, 98, 97, 52,
 			0, 10, 3, 230, 177, 160, 99, 104, 105, 50, 0, 11, 3, 229, 184, 152, 108, 105, 97, 110, 50, 0, 10, 3, 233, 154, 168, 115, 117, 105,
-			50, 0, 10, 3, 233, 167, 144, 122, 104, 117, 52, 0, 0, 9, 3, 232, 165, 191, 120, 105, 53, 0, 10, 3, 229, 186, 167, 122, 117, 111,
+			50, 0, 10, 3, 233, 167, 144, 122, 104, 117, 52, 0, 0, 9, 3, 232, 165, 191, 120, 105, 49, 0, 10, 3, 229, 186, 167, 122, 117, 111,
 			52, 0, 10, 3, 233, 154, 167, 115, 117, 105, 52, 0, 11, 3, 231, 171, 175, 100, 117, 97, 110, 49, 0, 12, 3, 230, 177, 159, 106, 105,
 			97, 110, 103, 49, 0, 12, 3, 229, 188, 183, 113, 105, 97, 110, 103, 50, 0, 10, 3, 229, 185, 159, 122, 104, 105, 52, 0, 0, 11, 3,
 			233, 166, 134, 103, 117, 97, 110, 51, 0, 12, 3, 230, 180, 182, 120, 105, 111, 110, 103, 49, 0, 9, 3, 229, 186, 166, 100, 117, 52, 0,
@@ -36124,12 +48481,12 @@ FilesInMemory create_espeakdata_dicts () {
 			38, 0, 2, 117, 25, 0, 3, 57, 0, 111, 2, 15, 110, 103, 25, 3, 149, 0, 7, 6, 122, 0, 1, 21, 2, 25, 3, 21, 0, 3,
 			122, 0, 104, 2, 12, 3, 124, 0, 7, 6, 0, 124, 3, 23, 0, 53, 3, 108, 0, 51, 3, 110, 0, 50, 3, 113, 0, 52, 3, 115,
 			0, 49, 3, 117, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts70 = FileInMemory_createWithData (41827, reinterpret_cast<const char *> (&espeakdata_dicts70_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/zh_dict", 
+		autoFileInMemory espeakdata_dicts68 = FileInMemory_createWithData (41827, reinterpret_cast<const char *> (&espeakdata_dicts68_data), 
+			U"espeak-1.48.04-source/espeak-data/zh_dict", 
 			U"zh");
-		Collection_addItem (me.peek(), espeakdata_dicts70.transfer());
+		my addItem_move (espeakdata_dicts68.move());
 
-		static unsigned char espeakdata_dicts71_data[1557] = {
+		static unsigned char espeakdata_dicts69_data[1557] = {
 			0, 4, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -36182,14 +48539,14 @@ FilesInMemory create_espeakdata_dicts () {
 			2, 3, 58, 0, 7, 6, 120, 0, 5, 1, 3, 21, 0, 5, 2, 3, 49, 89, 0, 7, 6, 121, 0, 5, 1, 3, 21, 0, 5, 2,
 			3, 57, 0, 117, 5, 2, 3, 136, 0, 7, 6, 122, 0, 5, 1, 3, 21, 0, 5, 2, 3, 88, 0, 7, 6, 0, 49, 3, 17, 0,
 			50, 3, 108, 0, 51, 3, 109, 0, 52, 3, 110, 0, 53, 3, 111, 0, 54, 3, 112, 0, 55, 3, 113, 0, 7, 0, 0};
-		autoFileInMemory espeakdata_dicts71 = FileInMemory_createWithData (1556, reinterpret_cast<const char *> (&espeakdata_dicts71_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/zhy_dict", 
+		autoFileInMemory espeakdata_dicts69 = FileInMemory_createWithData (1556, reinterpret_cast<const char *> (&espeakdata_dicts69_data), 
+			U"espeak-1.48.04-source/espeak-data/zhy_dict", 
 			U"zhy");
-		Collection_addItem (me.peek(), espeakdata_dicts71.transfer());
+		my addItem_move (espeakdata_dicts69.move());
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created.");
+		Melder_throw (U"FileInMemorySet not created.");
 	}
 }
 
diff --git a/external/espeak/espeakdata_phons.cpp b/external/espeak/espeakdata_phons.cpp
index c999074..9a6742e 100644
--- a/external/espeak/espeakdata_phons.cpp
+++ b/external/espeak/espeakdata_phons.cpp
@@ -1,4 +1,4 @@
-/* File espeakdata_phons.cpp was generated on Sun Nov  4 17:43:38 2012 from the following files in espeak-data/: 
+/* File espeakdata_phons.cpp (version 1.48.04) was automatically generated on Thu Dec  3 15:21:15 2015 from the following files in espeak-data/: 
  * phondata, phonindex, phontab, intonations  */
 
 #include "espeakdata_FileInMemory.h"
@@ -6,45 +6,58 @@
 #include "FileInMemory.h"
 #include "melder.h"
 
-FilesInMemory create_espeakdata_phons () {
+autoFileInMemorySet create_espeakdata_phons () {
 	try {
-		autoFilesInMemory me = FilesInMemory_create ();
-		static unsigned char espeakdata_phons1_data[817] = {
+		autoFileInMemorySet me = FileInMemorySet_create ();
+		static unsigned char espeakdata_phons1_data[1225] = {
 			115, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0,
 			255, 80, 50, 255, 4, 5, 248, 248, 248, 251, 251, 251, 0, 64, 8, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 99, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0,
 			0, 0, 46, 57, 0, 16, 0, 0, 255, 80, 46, 255, 4, 5, 248, 248, 248, 251, 251, 251, 4, 80, 18, 6, 78, 22, 34, 52, 6, 78,
 			22, 34, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 16, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 0, 0, 0, 4, 88,
-			22, 6, 82, 22, 34, 66, 6, 82, 22, 34, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 49, 0, 0, 0, 0,
+			0, 0, 12, 38, 22, 7, 0, 0, 0, 0, 45, 56, 0, 16, 0, 0, 255, 75, 43, 255, 3, 5, 249, 249, 249, 0, 0, 0, 4, 89,
+			21, 6, 86, 21, 34, 68, 6, 86, 21, 34, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 49, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 52, 32, 20, 10, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 90, 50, 255, 3, 5,
 			247, 247, 247, 0, 0, 0, 0, 92, 8, 0, 92, 80, 76, 8, 0, 92, 80, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 115, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16,
-			0, 0, 75, 65, 60, 255, 4, 5, 251, 248, 248, 251, 251, 251, 0, 44, 28, 0, 50, 42, 34, 28, 0, 50, 42, 34, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8,
-			0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 65, 50, 255, 4, 5, 249, 248, 248, 249, 251, 251, 2, 60, 42, 2, 55, 42, 34, 52,
-			2, 55, 42, 34, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 16, 40, 24, 8, 0, 0, 0, 0, 40, 75, 0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 249, 0, 0,
-			2, 70, 50, 2, 35, 45, 60, 70, 2, 35, 45, 60, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 50, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 52, 32, 20, 10, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 90, 50, 255,
-			3, 5, 249, 247, 247, 249, 0, 0, 0, 92, 8, 0, 92, 80, 76, 8, 0, 92, 80, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 115, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57,
-			0, 16, 0, 0, 255, 80, 50, 255, 4, 5, 249, 248, 248, 249, 251, 251, 0, 64, 8, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
-			24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 70, 30, 255, 4, 5, 249, 248, 248, 249, 251, 251, 4, 75, 50, 0, 70, 18,
-			24, 12, 0, 70, 18, 24, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 51, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 16, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 249,
-			0, 0, 4, 88, 22, 6, 82, 22, 34, 66, 6, 82, 22, 34, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 51,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 52, 32, 20, 10, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 90,
-			50, 255, 3, 5, 249, 247, 247, 249, 0, 0, 0, 92, 8, 0, 92, 80, 76, 8, 0, 92, 80, 76, 8, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0};
-		autoFileInMemory espeakdata_phons1 = FileInMemory_createWithData (816, reinterpret_cast<const char *> (&espeakdata_phons1_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/intonations", 
+			0, 0, 115, 95, 109, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16,
+			0, 0, 255, 40, 60, 255, 3, 5, 15, 15, 15, 30, 30, 30, 0, 64, 8, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 49, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 24, 8,
+			0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 0, 0, 0, 4, 88, 22, 6, 82, 22, 34, 66,
+			6, 82, 22, 34, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 33, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 75, 65, 60, 255, 4, 5, 251, 248, 248, 251, 251, 251,
+			0, 44, 28, 0, 50, 42, 34, 28, 0, 50, 42, 34, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 50, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 65, 50, 255,
+			4, 5, 249, 248, 248, 249, 251, 251, 2, 60, 42, 2, 55, 42, 34, 52, 2, 55, 42, 34, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 24, 8, 0, 0, 0, 0, 40, 75,
+			0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 249, 0, 0, 2, 70, 50, 2, 35, 45, 60, 70, 2, 35, 45, 60, 70, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 52,
+			32, 20, 10, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 90, 50, 255, 3, 5, 249, 247, 247, 249, 0, 0, 0, 92, 8, 0, 92, 80,
+			76, 8, 0, 92, 80, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 51, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 80, 50, 255, 4, 5, 249, 248, 248, 249,
+			251, 251, 0, 64, 8, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 51,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 70,
+			30, 255, 4, 5, 249, 248, 248, 249, 251, 251, 4, 75, 50, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 113, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 24, 8, 0, 0, 0, 0,
+			46, 57, 0, 16, 0, 0, 255, 75, 43, 255, 4, 5, 249, 249, 249, 249, 0, 0, 4, 88, 22, 6, 82, 22, 34, 66, 6, 82, 22, 34,
+			66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			10, 52, 32, 20, 10, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 90, 50, 255, 3, 5, 249, 247, 247, 249, 0, 0, 0, 92, 8, 0,
+			92, 80, 76, 8, 0, 92, 80, 76, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 52, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 80, 50, 255, 4, 5, 249, 248,
+			248, 249, 251, 251, 0, 64, 8, 0, 70, 18, 24, 12, 0, 70, 18, 24, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			99, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 24, 8, 0, 0, 0, 0, 46, 57, 0, 16, 0, 0,
+			255, 76, 42, 255, 4, 5, 249, 248, 248, 249, 251, 251, 4, 77, 25, 6, 78, 25, 24, 52, 6, 78, 25, 24, 52, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 113, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 35, 28, 38, 0,
+			0, 0, 47, 58, 0, 16, 0, 0, 60, 75, 53, 60, 5, 5, 48, 249, 44, 62, 1, 40, 4, 95, 29, 6, 92, 21, 34, 79, 6, 92,
+			21, 34, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 25, 51, 48, 44, 42, 0, 0, 0, 46, 57, 0, 16, 0, 0, 255, 77, 53, 80, 5, 5, 249, 249, 72, 249, 0, 60, 0, 92,
+			8, 0, 88, 77, 75, 10, 0, 88, 77, 75, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+		autoFileInMemory espeakdata_phons1 = FileInMemory_createWithData (1224, reinterpret_cast<const char *> (&espeakdata_phons1_data), 
+			U"/home/david/projects/praat/espeak-work/espeak-1.48.04-source/espeak-data/intonations", 
 			U"intonations");
-		Collection_addItem (me.peek(), espeakdata_phons1.transfer());
+		my addItem_move (espeakdata_phons1.move());
 
-		static unsigned char espeakdata_phons2_data[385581] = {
-			36, 70, 1, 0, 74, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_phons2_data[406337] = {
+			1, 72, 1, 0, 34, 86, 0, 0, 74, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -55,464 +68,464 @@ FilesInMemory create_espeakdata_phons () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 3, 0, 1, 0, 112, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27,
-			50, 60, 34, 66, 80, 45, 47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12,
-			116, 14, 96, 27, 90, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5,
-			36, 9, 188, 12, 116, 14, 96, 27, 0, 46, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 140, 0, 3, 0,
-			1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 20, 19, 38, 46, 26, 27, 20, 10, 4, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 90, 29, 23, 45, 55, 31, 32, 24, 13, 4,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 3, 0, 1, 0, 112, 0, 13, 2, 161, 5, 36, 9, 188, 12,
+			116, 14, 96, 27, 50, 60, 34, 66, 80, 45, 47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5,
+			36, 9, 188, 12, 116, 14, 96, 27, 90, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0,
+			13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 46, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			140, 0, 3, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 20, 19, 38, 46, 26, 27, 20, 10, 4,
 			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 15, 16, 33, 40, 22,
-			23, 18, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 151, 0, 4, 0, 1, 0, 16, 1, 136, 3, 40, 5, 140, 10, 112, 13, 35, 15,
-			32, 28, 46, 50, 33, 65, 59, 37, 25, 22, 8, 7, 217, 150, 105, 120, 120, 120, 255, 180, 150, 44, 65, 70, 130, 53, 0, 0, 0, 0,
-			50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 32, 1, 136, 3, 40, 5, 140, 10,
-			112, 13, 191, 14, 32, 28, 40, 96, 43, 94, 78, 57, 42, 26, 13, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54,
-			0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 32, 1, 136, 3,
-			40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 81, 39, 86, 71, 52, 38, 24, 11, 5, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44,
-			65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			16, 1, 128, 3, 60, 5, 100, 10, 112, 13, 191, 14, 160, 28, 0, 51, 35, 68, 61, 35, 32, 24, 7, 8, 217, 135, 105, 120, 120, 120,
-			255, 165, 165, 44, 65, 70, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 200, 0, 4, 0, 1, 0, 200, 0, 200, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 50, 41, 26, 55, 55, 55, 47, 35,
-			11, 5, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 200, 0, 200, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 80, 78, 36, 76,
-			76, 76, 65, 49, 15, 7, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 192, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28,
-			70, 67, 33, 69, 69, 69, 59, 45, 13, 6, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 184, 1, 188, 7, 236, 9, 32, 13,
-			136, 14, 128, 28, 0, 30, 22, 47, 47, 47, 40, 30, 9, 4, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 33, 0, 152, 0,
-			32, 1, 224, 8, 24, 11, 72, 13, 0, 15, 160, 26, 52, 44, 9, 65, 57, 58, 53, 28, 13, 6, 175, 105, 120, 120, 120, 120, 175, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			3, 0, 152, 0, 24, 1, 232, 8, 24, 11, 72, 13, 0, 15, 160, 26, 75, 67, 11, 81, 66, 66, 66, 35, 17, 8, 167, 105, 120, 120,
-			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 24, 11, 72, 13, 0, 15, 160, 26, 69, 54, 10, 73, 59, 59, 59, 31, 15, 7,
+			0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 90, 29, 23, 45, 55, 31,
+			32, 24, 13, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 15,
+			16, 33, 40, 22, 23, 18, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 151, 0, 4, 0, 1, 0, 16, 1, 136, 3, 40, 5, 140, 10,
+			112, 13, 35, 15, 32, 28, 46, 51, 33, 67, 55, 37, 25, 22, 8, 7, 217, 150, 105, 120, 120, 120, 255, 180, 150, 44, 65, 70, 130, 53,
+			0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 32, 1, 136, 3,
+			40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 40, 90, 42, 92, 73, 54, 41, 26, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44,
+			65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			32, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 79, 39, 86, 68, 50, 38, 24, 11, 5, 217, 155, 105, 120, 120, 120,
+			247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 16, 1, 128, 3, 60, 5, 100, 10, 112, 13, 191, 14, 160, 28, 0, 49, 35, 68, 55, 35, 32, 24, 7, 8, 217, 135,
+			105, 120, 120, 120, 255, 165, 165, 44, 65, 70, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 200, 0, 4, 0, 1, 0, 200, 0, 200, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 50, 41, 26, 55,
+			55, 55, 47, 35, 11, 5, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 200, 0, 200, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28,
+			80, 78, 36, 76, 76, 76, 65, 49, 15, 7, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 192, 1, 188, 7, 236, 9, 32, 13,
+			136, 14, 128, 28, 70, 67, 33, 69, 69, 69, 59, 45, 13, 6, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 184, 1, 188, 7,
+			236, 9, 32, 13, 136, 14, 128, 28, 0, 30, 22, 47, 47, 47, 40, 30, 9, 4, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0,
+			33, 0, 152, 0, 32, 1, 224, 8, 24, 11, 72, 13, 0, 15, 160, 26, 52, 44, 9, 65, 57, 58, 53, 28, 13, 6, 175, 105, 120, 120,
+			120, 120, 175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 3, 0, 152, 0, 24, 1, 232, 8, 24, 11, 72, 13, 0, 15, 160, 26, 75, 67, 11, 81, 66, 66, 66, 35, 17, 8,
 			167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 118, 0, 240, 0, 35, 9, 24, 11, 72, 13, 30, 15, 112, 26, 0, 27, 7, 48, 43, 42,
-			42, 23, 10, 6, 171, 105, 112, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 4, 0, 1, 0, 192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14,
-			159, 27, 50, 57, 23, 57, 62, 34, 32, 19, 12, 4, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 192, 0, 40, 2, 92, 3, 100, 10,
-			164, 11, 96, 14, 159, 27, 60, 121, 34, 82, 90, 49, 47, 27, 18, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 192, 0, 40, 2,
-			112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 50, 73, 29, 70, 64, 42, 40, 23, 15, 6, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 24, 11, 72, 13, 0, 15, 160, 26, 69, 54, 10, 73, 59, 59,
+			59, 31, 15, 7, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 118, 0, 240, 0, 35, 9, 24, 11, 72, 13, 30, 15, 112, 26, 0, 27,
+			7, 48, 43, 42, 42, 23, 10, 6, 171, 105, 112, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 4, 0, 1, 0, 192, 0, 40, 2, 92, 3, 100, 10,
+			164, 11, 96, 14, 159, 27, 50, 57, 23, 57, 62, 34, 32, 19, 12, 4, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 192, 0, 40, 2,
+			92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 60, 121, 34, 82, 90, 49, 47, 27, 18, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 0, 41, 22, 52, 48, 32, 30, 17, 11, 4, 172, 142, 135, 120, 120, 120,
+			192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 50, 73, 29, 70, 64, 42, 40, 23, 15, 6, 172, 142, 135, 120, 120, 120,
 			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 120, 0, 4, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 39, 6, 64, 43, 21, 21, 30,
-			12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 55, 7, 77,
-			51, 25, 25, 36, 14, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 64, 1, 92, 3, 156, 9, 12, 13, 60, 15, 144, 26,
-			50, 40, 6, 65, 43, 21, 21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 1, 0, 192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 0, 41, 22, 52, 48, 32, 30, 17, 11, 4, 172, 142,
+			135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 120, 0, 4, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 39, 6, 64,
+			43, 21, 21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26,
+			70, 55, 7, 77, 51, 25, 25, 36, 14, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 64, 1, 92, 3, 156, 9, 12, 13,
-			60, 15, 144, 26, 0, 26, 5, 52, 35, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 120, 0, 6, 0, 1, 0, 116, 0,
-			0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 20, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			3, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120,
+			60, 15, 144, 26, 50, 40, 6, 65, 43, 21, 21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 64, 1, 92, 3,
+			156, 9, 12, 13, 60, 15, 144, 26, 0, 26, 5, 52, 35, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 120, 0, 6, 0,
+			1, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 20, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120,
 			120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 18, 18, 35, 44, 24, 25, 19, 9, 5,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 60, 18, 54, 38, 23, 14,
-			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 40, 17,
+			0, 250, 0, 0, 3, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 22, 20, 39, 48, 27, 28, 21, 10, 4,
+			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 18, 18, 35, 44, 24,
+			25, 19, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 60, 18,
 			54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15,
-			0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0,
-			60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 120, 0, 6, 0, 1, 0, 116, 0, 0, 2,
-			20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 20, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0,
-			116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120, 120, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15,
+			0, 27, 40, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0,
+			60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 216, 1, 76, 4, 82, 8,
+			172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53,
+			225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 120, 0, 6, 0, 1, 0,
+			116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 20, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150, 135, 120, 120, 120,
 			197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 18, 18, 35, 44, 24, 25, 19, 9, 5, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 96, 4, 16, 9, 88, 12, 91, 14, 32, 27, 60, 17, 38, 33, 28, 24, 33, 28,
-			7, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 96, 4, 16, 9, 88, 12, 91, 14, 32, 27, 40, 17, 38, 33,
+			0, 0, 3, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 22, 20, 39, 48, 27, 28, 21, 10, 4, 167, 150,
+			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 0, 2, 20, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 18, 18, 35, 44, 24, 25, 19,
+			9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 96, 4, 16, 9, 88, 12, 91, 14, 32, 27, 60, 17, 38, 33,
 			28, 24, 33, 28, 7, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 114, 1, 16, 4, 252, 8, 200, 10, 91, 14, 32, 27,
-			0, 14, 40, 28, 20, 12, 8, 8, 6, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 5, 0, 1, 0, 140, 0, 240, 1, 232, 5,
-			76, 9, 236, 12, 176, 14, 77, 27, 20, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 140, 0,
-			240, 1, 232, 5, 76, 9, 236, 12, 176, 14, 77, 27, 40, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 96, 4, 16, 9, 88, 12, 91, 14, 32, 27,
+			40, 17, 38, 33, 28, 24, 33, 28, 7, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 114, 1, 16, 4, 252, 8, 200, 10,
+			91, 14, 32, 27, 0, 14, 40, 28, 20, 12, 8, 8, 6, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 5, 0, 1, 0, 140, 0,
+			240, 1, 232, 5, 76, 9, 236, 12, 176, 14, 77, 27, 20, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120,
 			120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 60, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120,
-			120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 40, 17, 54, 38, 23, 14, 12, 14, 8, 0,
+			3, 0, 140, 0, 240, 1, 232, 5, 76, 9, 236, 12, 176, 14, 77, 27, 40, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 60, 17, 54, 38, 23, 14, 12, 14, 8, 0,
 			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 0, 14, 48, 34, 20, 12,
-			10, 12, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 5, 0, 1, 0, 140, 0, 240, 1, 232, 5, 76, 9, 236, 12, 176, 14,
-			77, 27, 20, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 140, 0, 240, 1, 232, 5, 76, 9,
-			236, 12, 176, 14, 77, 27, 40, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1,
-			8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			236, 0, 124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 40, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 40, 17, 54, 38, 23, 14,
+			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 0, 14,
+			48, 34, 20, 12, 10, 12, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 5, 0, 1, 0, 140, 0, 240, 1, 232, 5, 76, 9,
+			236, 12, 176, 14, 77, 27, 20, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 140, 0, 240, 1,
+			232, 5, 76, 9, 236, 12, 176, 14, 77, 27, 40, 18, 22, 36, 40, 24, 24, 18, 9, 3, 160, 132, 126, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
+			236, 0, 124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120,
 			42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 236, 0, 124, 1, 244, 6, 236, 9, 172, 13, 160, 15, 0, 27, 0, 14, 42, 32, 20, 16, 12, 9, 6, 0, 132, 60,
+			0, 0, 5, 0, 236, 0, 124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 40, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60,
 			90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 120, 0, 5, 0, 1, 0, 184, 0, 248, 1, 32, 7, 244, 9, 85, 13, 104, 15, 70, 26, 20, 17, 26, 32,
-			37, 22, 22, 17, 8, 2, 148, 119, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 184, 0, 248, 1, 32, 7, 244, 9, 85, 13, 104, 15, 70, 26,
-			0, 17, 26, 32, 37, 22, 22, 17, 8, 2, 148, 119, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13,
-			160, 15, 0, 27, 60, 25, 57, 49, 29, 20, 20, 18, 10, 0, 120, 60, 90, 120, 120, 120, 50, 135, 105, 44, 20, 200, 200, 55, 230, 0,
-			0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 234, 1, 52, 8,
-			236, 9, 172, 13, 160, 15, 0, 27, 40, 25, 57, 49, 29, 20, 20, 18, 10, 0, 120, 60, 90, 120, 120, 120, 50, 135, 105, 44, 20, 200,
-			200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0,
-			234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 0, 15, 44, 38, 23, 16, 16, 14, 8, 0, 120, 60, 90, 120, 120, 120, 50, 135,
+			0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 124, 1, 244, 6, 236, 9, 172, 13, 160, 15, 0, 27, 0, 14, 42, 32, 20, 16, 12, 9,
+			6, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 120, 0, 5, 0, 1, 0, 184, 0, 248, 1, 32, 7, 244, 9, 85, 13, 104, 15, 70, 26,
+			20, 17, 26, 32, 37, 22, 22, 17, 8, 2, 148, 119, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 184, 0, 248, 1, 32, 7, 244, 9, 85, 13,
+			104, 15, 70, 26, 0, 17, 26, 32, 37, 22, 22, 17, 8, 2, 148, 119, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 234, 1, 52, 8,
+			236, 9, 172, 13, 160, 15, 0, 27, 60, 25, 57, 49, 29, 20, 20, 18, 10, 0, 120, 60, 90, 120, 120, 120, 50, 135, 105, 44, 20, 200,
+			200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0,
+			234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 40, 25, 57, 49, 29, 20, 20, 18, 10, 0, 120, 60, 90, 120, 120, 120, 50, 135,
 			105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			8, 2, 70, 0, 0, 0, 0, 0, 0, 0, 4, 14, 28, 40, 46, 48, 46, 38, 23, 252, 211, 174, 161, 177, 209, 238, 0, 14, 26, 30,
-			17, 237, 190, 160, 167, 201, 232, 251, 15, 51, 91, 109, 92, 52, 11, 239, 216, 190, 166, 161, 190, 247, 51, 89, 101, 103, 104, 93, 52, 246,
-			185, 151, 149, 164, 184, 210, 252, 50, 101, 126, 115, 78, 34, 251, 212, 169, 136, 134, 171, 231, 31, 70, 95, 111, 115, 96, 50, 245, 190, 158,
-			151, 161, 180, 212, 2, 57, 102, 118, 104, 73, 37, 254, 209, 164, 137, 141, 175, 223, 12, 49, 76, 94, 96, 75, 32, 238, 196, 173, 166, 169,
-			182, 212, 0, 48, 80, 89, 78, 57, 27, 247, 205, 168, 149, 157, 188, 229, 14, 49, 78, 98, 100, 80, 40, 254, 219, 197, 185, 183, 195, 222,
-			3, 39, 62, 69, 63, 47, 25, 253, 220, 192, 179, 185, 205, 231, 0, 25, 47, 61, 59, 41, 14, 244, 222, 208, 200, 202, 213, 235, 4, 28,
-			42, 46, 42, 32, 17, 253, 230, 213, 208, 214, 228, 245, 6, 24, 39, 45, 41, 26, 6, 244, 229, 220, 216, 219, 230, 248, 12, 29, 37, 39,
-			35, 26, 12, 251, 235, 224, 221, 227, 238, 252, 10, 25, 36, 40, 35, 22, 6, 248, 235, 227, 223, 227, 237, 252, 10, 22, 29, 31, 27, 19,
-			7, 249, 236, 229, 227, 232, 241, 253, 9, 20, 28, 31, 26, 17, 5, 250, 240, 233, 231, 234, 242, 253, 7, 16, 22, 23, 21, 14, 5, 252,
-			243, 238, 237, 239, 245, 252, 4, 13, 18, 20, 17, 12, 5, 254, 248, 243, 241, 243, 248, 255, 5, 10, 14, 15, 13, 9, 3, 254, 249, 246,
-			245, 247, 251, 0, 3, 7, 10, 11, 9, 6, 2, 255, 251, 249, 249, 250, 252, 0, 2, 5, 7, 7, 6, 4, 1, 255, 253, 252, 252, 253,
-			254, 0, 1, 3, 3, 3, 3, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			1, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 0, 15, 44, 38, 23, 16, 16, 14, 8, 0, 120, 60, 90, 120,
+			120, 120, 50, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 8, 2, 70, 0, 0, 0, 0, 0, 0, 0, 4, 14, 28, 40, 46, 48, 46, 38, 23, 252, 211, 174, 161, 177, 209, 238,
+			0, 14, 26, 30, 17, 237, 190, 160, 167, 201, 232, 251, 15, 51, 91, 109, 92, 52, 11, 239, 216, 190, 166, 161, 190, 247, 51, 89, 101, 103,
+			104, 93, 52, 246, 185, 151, 149, 164, 184, 210, 252, 50, 101, 126, 115, 78, 34, 251, 212, 169, 136, 134, 171, 231, 31, 70, 95, 111, 115, 96,
+			50, 245, 190, 158, 151, 161, 180, 212, 2, 57, 102, 118, 104, 73, 37, 254, 209, 164, 137, 141, 175, 223, 12, 49, 76, 94, 96, 75, 32, 238,
+			196, 173, 166, 169, 182, 212, 0, 48, 80, 89, 78, 57, 27, 247, 205, 168, 149, 157, 188, 229, 14, 49, 78, 98, 100, 80, 40, 254, 219, 197,
+			185, 183, 195, 222, 3, 39, 62, 69, 63, 47, 25, 253, 220, 192, 179, 185, 205, 231, 0, 25, 47, 61, 59, 41, 14, 244, 222, 208, 200, 202,
+			213, 235, 4, 28, 42, 46, 42, 32, 17, 253, 230, 213, 208, 214, 228, 245, 6, 24, 39, 45, 41, 26, 6, 244, 229, 220, 216, 219, 230, 248,
+			12, 29, 37, 39, 35, 26, 12, 251, 235, 224, 221, 227, 238, 252, 10, 25, 36, 40, 35, 22, 6, 248, 235, 227, 223, 227, 237, 252, 10, 22,
+			29, 31, 27, 19, 7, 249, 236, 229, 227, 232, 241, 253, 9, 20, 28, 31, 26, 17, 5, 250, 240, 233, 231, 234, 242, 253, 7, 16, 22, 23,
+			21, 14, 5, 252, 243, 238, 237, 239, 245, 252, 4, 13, 18, 20, 17, 12, 5, 254, 248, 243, 241, 243, 248, 255, 5, 10, 14, 15, 13, 9,
+			3, 254, 249, 246, 245, 247, 251, 0, 3, 7, 10, 11, 9, 6, 2, 255, 251, 249, 249, 250, 252, 0, 2, 5, 7, 7, 6, 4, 1, 255,
+			253, 252, 252, 253, 254, 0, 1, 3, 3, 3, 3, 1, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 5, 0, 1, 0, 204, 0, 128, 2, 176, 4, 252, 8, 240, 10,
-			52, 18, 0, 28, 45, 42, 34, 58, 42, 39, 34, 8, 14, 5, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 57, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 216, 0, 136, 2, 176, 4,
-			252, 8, 227, 12, 20, 15, 214, 27, 55, 56, 32, 63, 62, 39, 39, 30, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70,
-			130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 216, 0,
-			136, 2, 176, 4, 252, 8, 227, 12, 20, 15, 214, 27, 80, 42, 28, 55, 54, 34, 34, 26, 13, 5, 189, 159, 136, 120, 120, 120, 237, 165,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 5, 0, 1, 0, 204, 0, 128, 2, 176, 4,
+			252, 8, 240, 10, 52, 18, 0, 28, 45, 42, 34, 58, 42, 39, 34, 8, 14, 5, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70,
+			130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 216, 0,
+			136, 2, 176, 4, 252, 8, 227, 12, 20, 15, 214, 27, 55, 56, 32, 63, 62, 39, 39, 30, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165,
 			165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 204, 0, 128, 2, 176, 4, 212, 8, 44, 11, 20, 15, 0, 28, 35, 26, 26, 47, 33, 27, 29, 9, 11, 4, 170, 165, 137, 120,
-			120, 120, 170, 180, 137, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 204, 0, 128, 2, 176, 4, 212, 8, 44, 11, 20, 15, 0, 28, 0, 26, 26, 47, 33, 27, 29, 9, 11, 4,
+			65, 0, 216, 0, 136, 2, 176, 4, 252, 8, 227, 12, 20, 15, 214, 27, 80, 42, 28, 55, 54, 34, 34, 26, 13, 5, 189, 159, 136, 120,
+			120, 120, 237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 204, 0, 128, 2, 176, 4, 212, 8, 44, 11, 20, 15, 0, 28, 35, 26, 26, 47, 33, 27, 29, 9, 11, 4,
 			170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 165, 0, 4, 0, 1, 0, 104, 0, 96, 1, 0, 5, 204, 11, 192, 13, 180, 15, 32, 29, 45, 37,
-			18, 64, 39, 21, 43, 25, 8, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 45, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 104, 0, 96, 1, 216, 4, 204, 11, 192, 13, 180, 15,
-			32, 29, 60, 45, 20, 72, 44, 24, 48, 28, 9, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 104, 0, 96, 1, 176, 4, 204, 11,
-			192, 13, 180, 15, 32, 29, 60, 45, 20, 72, 44, 24, 48, 28, 9, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44, 45, 70, 130, 58,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 128, 2, 176, 4, 212, 8, 44, 11, 20, 15, 0, 28, 0, 26, 26, 47, 33, 27,
+			29, 9, 11, 4, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 165, 0, 4, 0, 1, 0, 104, 0, 96, 1, 0, 5, 204, 11, 192, 13, 180, 15,
+			32, 29, 45, 37, 18, 64, 39, 21, 43, 25, 8, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 0, 104, 0, 96, 1, 216, 4, 204, 11,
+			192, 13, 180, 15, 32, 29, 60, 45, 20, 72, 44, 24, 48, 28, 9, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44, 45, 70, 130, 59,
 			0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 104, 0, 96, 1,
-			176, 4, 204, 11, 192, 13, 180, 15, 32, 29, 0, 37, 18, 64, 39, 21, 43, 25, 8, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0,
-			3, 0, 1, 0, 244, 0, 129, 1, 96, 4, 24, 6, 88, 12, 41, 14, 192, 27, 40, 40, 48, 51, 44, 16, 0, 0, 10, 0, 147, 80,
-			120, 120, 120, 120, 87, 95, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 149, 1, 98, 4, 224, 6, 88, 12, 41, 14, 192, 28, 35, 65, 39, 84, 62, 33, 22, 17,
-			16, 0, 150, 90, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 13, 2, 172, 5, 208, 7, 88, 12, 41, 14, 192, 28, 0, 85, 40, 77,
-			109, 49, 46, 29, 16, 0, 120, 165, 120, 120, 120, 120, 60, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 3, 0, 21, 0, 0, 1, 184, 1, 176, 4, 64, 6, 124, 11,
-			96, 14, 224, 27, 40, 26, 45, 40, 47, 25, 0, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 45, 70, 130, 54, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 184, 0, 164, 1, 96, 4,
-			168, 7, 28, 12, 66, 14, 96, 27, 35, 61, 40, 80, 60, 33, 19, 14, 13, 0, 157, 105, 120, 120, 120, 120, 112, 90, 60, 44, 45, 70,
-			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0,
-			128, 2, 65, 4, 232, 8, 28, 12, 166, 14, 96, 27, 0, 99, 45, 78, 119, 51, 50, 35, 17, 0, 120, 105, 120, 120, 120, 120, 75, 90,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			75, 0, 3, 0, 5, 0, 216, 0, 64, 1, 236, 4, 24, 6, 184, 11, 166, 14, 224, 26, 40, 42, 43, 56, 31, 15, 0, 0, 15, 0,
-			147, 60, 150, 120, 120, 120, 87, 90, 90, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 160, 1, 236, 4, 144, 6, 184, 11, 236, 14, 64, 27, 35, 59, 36, 76, 64, 33,
-			32, 13, 15, 0, 150, 120, 105, 120, 120, 120, 105, 90, 78, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 178, 2, 249, 5, 232, 8, 188, 12, 91, 14, 0, 28, 0, 82,
-			40, 57, 115, 64, 66, 42, 14, 0, 120, 165, 120, 120, 120, 120, 120, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 80, 0, 3, 0, 37, 0, 216, 0, 64, 1, 236, 4, 24, 6,
-			184, 11, 166, 14, 224, 26, 40, 46, 46, 59, 33, 16, 0, 0, 10, 0, 147, 60, 150, 120, 120, 120, 87, 90, 90, 44, 45, 70, 130, 54,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 120, 0, 124, 1,
-			117, 5, 52, 8, 224, 11, 166, 14, 224, 26, 40, 49, 19, 73, 56, 36, 39, 19, 12, 0, 150, 165, 150, 120, 120, 120, 90, 90, 90, 44,
-			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			120, 0, 84, 1, 97, 8, 116, 9, 12, 13, 110, 15, 96, 27, 0, 79, 16, 75, 80, 86, 84, 54, 17, 0, 120, 135, 150, 120, 120, 120,
-			60, 120, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 75, 0, 3, 0, 1, 0, 0, 1, 184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 40, 26, 45, 40, 47, 25, 0, 16,
-			5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 49, 1, 21, 4, 88, 7, 48, 12, 41, 14, 32, 26, 35, 47, 35, 76,
-			55, 29, 14, 14, 22, 0, 150, 75, 105, 120, 120, 120, 60, 105, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 189, 1, 123, 3, 132, 8, 48, 12, 41, 14, 64, 27,
-			0, 119, 49, 103, 110, 61, 48, 33, 18, 0, 120, 150, 105, 120, 120, 120, 30, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 3, 0, 1, 0, 0, 1, 184, 1, 176, 4,
+			176, 4, 204, 11, 192, 13, 180, 15, 32, 29, 60, 45, 20, 72, 44, 24, 48, 28, 9, 0, 155, 120, 97, 120, 120, 120, 95, 120, 97, 44,
+			45, 70, 130, 58, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			104, 0, 96, 1, 176, 4, 204, 11, 192, 13, 180, 15, 32, 29, 0, 37, 18, 64, 39, 21, 43, 25, 8, 0, 155, 120, 97, 120, 120, 120,
+			95, 120, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 75, 0, 3, 0, 1, 0, 244, 0, 129, 1, 96, 4, 24, 6, 88, 12, 41, 14, 192, 27, 40, 40, 48, 51, 44, 16, 0, 0,
+			10, 0, 147, 80, 120, 120, 120, 120, 87, 95, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 149, 1, 98, 4, 224, 6, 88, 12, 41, 14, 192, 28, 35, 65, 39, 84,
+			62, 33, 22, 17, 16, 0, 150, 90, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 13, 2, 172, 5, 208, 7, 88, 12, 41, 14, 192, 28,
+			0, 85, 40, 77, 109, 49, 46, 29, 16, 0, 120, 165, 120, 120, 120, 120, 60, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 3, 0, 21, 0, 0, 1, 184, 1, 176, 4,
 			64, 6, 124, 11, 96, 14, 224, 27, 40, 26, 45, 40, 47, 25, 0, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 45, 70,
-			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 40, 0,
-			54, 1, 109, 4, 104, 6, 128, 12, 247, 13, 192, 28, 35, 35, 16, 59, 46, 31, 31, 18, 13, 0, 150, 120, 120, 120, 120, 120, 150, 120,
-			120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 40, 0, 134, 1, 205, 5, 72, 8, 128, 12, 247, 13, 192, 28, 0, 74, 16, 95, 70, 33, 36, 18, 13, 0, 120, 120, 120, 120,
-			120, 120, 120, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 244, 0, 174, 1, 136, 4, 4, 6, 124, 11, 79, 16, 64, 27, 50, 21, 51, 34, 39, 16,
-			18, 7, 7, 0, 120, 45, 135, 120, 120, 120, 60, 90, 93, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 174, 1, 136, 4, 4, 6, 124, 11, 79, 16, 64, 27, 0, 21,
+			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 184, 0,
+			164, 1, 96, 4, 168, 7, 28, 12, 66, 14, 96, 27, 35, 61, 40, 80, 60, 33, 19, 14, 13, 0, 157, 105, 120, 120, 120, 120, 112, 90,
+			60, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 184, 0, 128, 2, 65, 4, 232, 8, 28, 12, 166, 14, 96, 27, 0, 99, 45, 78, 119, 51, 50, 35, 17, 0, 120, 105, 120, 120,
+			120, 120, 75, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 75, 0, 3, 0, 5, 0, 216, 0, 64, 1, 236, 4, 24, 6, 184, 11, 166, 14, 224, 26, 40, 42, 43, 56, 31, 15,
+			0, 0, 15, 0, 147, 60, 150, 120, 120, 120, 87, 90, 90, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 160, 1, 236, 4, 144, 6, 184, 11, 236, 14, 64, 27, 35, 59,
+			36, 76, 64, 33, 32, 13, 15, 0, 150, 120, 105, 120, 120, 120, 105, 90, 78, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 178, 2, 249, 5, 232, 8, 188, 12, 91, 14,
+			0, 28, 0, 82, 40, 57, 115, 64, 66, 42, 14, 0, 120, 165, 120, 120, 120, 120, 120, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 80, 0, 3, 0, 37, 0, 216, 0, 64, 1,
+			236, 4, 24, 6, 184, 11, 166, 14, 224, 26, 40, 46, 46, 59, 33, 16, 0, 0, 10, 0, 147, 60, 150, 120, 120, 120, 87, 90, 90, 44,
+			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0,
+			120, 0, 124, 1, 117, 5, 52, 8, 224, 11, 166, 14, 224, 26, 40, 49, 19, 73, 56, 36, 39, 19, 12, 0, 150, 165, 150, 120, 120, 120,
+			90, 90, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 120, 0, 84, 1, 97, 8, 116, 9, 12, 13, 110, 15, 96, 27, 0, 79, 16, 75, 80, 86, 84, 54, 17, 0, 120, 135,
+			150, 120, 120, 120, 60, 120, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 75, 0, 3, 0, 1, 0, 0, 1, 184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 40, 26, 45, 40,
+			47, 25, 0, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 49, 1, 21, 4, 88, 7, 48, 12, 41, 14, 32, 26,
+			35, 47, 35, 76, 55, 29, 14, 14, 22, 0, 150, 75, 105, 120, 120, 120, 60, 105, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 189, 1, 123, 3, 132, 8, 48, 12,
+			41, 14, 64, 27, 0, 119, 49, 103, 110, 61, 48, 33, 18, 0, 120, 150, 105, 120, 120, 120, 30, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 3, 0, 1, 0, 0, 1,
+			184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 40, 26, 45, 40, 47, 25, 0, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90,
+			75, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 40, 0, 54, 1, 109, 4, 104, 6, 128, 12, 247, 13, 192, 28, 35, 35, 16, 59, 46, 31, 31, 18, 13, 0, 150, 120, 120, 120,
+			120, 120, 150, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 40, 0, 134, 1, 205, 5, 72, 8, 128, 12, 247, 13, 192, 28, 0, 74, 16, 95, 70, 33, 36, 18, 13, 0,
+			120, 120, 120, 120, 120, 120, 120, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 244, 0, 174, 1, 136, 4, 4, 6, 124, 11, 79, 16, 64, 27, 50, 21,
 			51, 34, 39, 16, 18, 7, 7, 0, 120, 45, 135, 120, 120, 120, 60, 90, 93, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 3, 0, 1, 0, 8, 1, 184, 1, 232, 3, 160, 5,
-			108, 12, 210, 15, 224, 27, 40, 16, 34, 40, 26, 12, 0, 4, 3, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 35, 50, 60, 52,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1, 184, 1,
-			232, 3, 200, 5, 48, 12, 140, 15, 224, 27, 25, 24, 42, 44, 45, 20, 8, 16, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 174, 1, 136, 4, 4, 6, 124, 11, 79, 16,
+			64, 27, 0, 21, 51, 34, 39, 16, 18, 7, 7, 0, 120, 45, 135, 120, 120, 120, 60, 90, 93, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 3, 0, 1, 0, 8, 1, 184, 1,
+			232, 3, 160, 5, 108, 12, 210, 15, 224, 27, 40, 16, 34, 40, 26, 12, 0, 4, 3, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44,
 			35, 50, 60, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			8, 1, 184, 1, 32, 3, 200, 5, 48, 12, 140, 15, 224, 27, 0, 26, 42, 44, 45, 20, 8, 16, 7, 0, 120, 60, 120, 120, 120, 120,
-			75, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 20, 0, 2, 0, 1, 0, 24, 1, 184, 1, 233, 3, 200, 5, 108, 12, 210, 15, 224, 27, 20, 10, 34, 21, 26, 13, 5, 5,
-			3, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 35, 50, 60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 24, 1, 184, 1, 233, 3, 200, 5, 108, 12, 210, 15, 224, 27, 0, 34, 61, 39,
-			47, 24, 12, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 12, 0, 3, 0, 1, 0, 0, 1, 184, 1, 176, 4, 64, 6, 124, 11,
-			96, 14, 224, 27, 12, 27, 45, 44, 40, 20, 12, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 35, 50, 60, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 0, 1, 184, 1, 176, 4,
-			64, 6, 124, 11, 96, 14, 224, 27, 0, 26, 45, 40, 47, 25, 12, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 35, 50,
+			8, 1, 184, 1, 232, 3, 200, 5, 48, 12, 140, 15, 224, 27, 25, 24, 42, 44, 45, 20, 8, 16, 7, 0, 120, 60, 120, 120, 120, 120,
+			75, 90, 75, 44, 35, 50, 60, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 8, 1, 184, 1, 32, 3, 200, 5, 48, 12, 140, 15, 224, 27, 0, 26, 42, 44, 45, 20, 8, 16, 7, 0, 120, 60,
+			120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 1, 0, 24, 1, 184, 1, 233, 3, 200, 5, 108, 12, 210, 15, 224, 27, 20, 10, 34, 21,
+			26, 13, 5, 5, 3, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 35, 50, 60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 24, 1, 184, 1, 233, 3, 200, 5, 108, 12, 210, 15, 224, 27,
+			0, 34, 61, 39, 47, 24, 12, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 12, 0, 3, 0, 1, 0, 0, 1, 184, 1, 176, 4,
+			64, 6, 124, 11, 96, 14, 224, 27, 12, 27, 45, 44, 40, 20, 12, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90, 75, 44, 35, 50,
 			60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 0, 1,
-			184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 0, 26, 45, 40, 47, 25, 20, 11, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90,
+			184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 0, 26, 45, 40, 47, 25, 12, 16, 5, 0, 150, 60, 120, 120, 120, 120, 105, 90,
 			75, 44, 35, 50, 60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			40, 0, 2, 0, 37, 0, 184, 0, 24, 2, 112, 5, 72, 8, 0, 10, 188, 12, 136, 19, 40, 17, 43, 9, 14, 19, 28, 9, 9, 9,
-			157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 24, 2, 112, 5, 248, 7, 236, 9, 188, 12, 131, 24, 0, 17, 42, 14, 14, 32,
-			23, 9, 4, 4, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 81, 19, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			1, 0, 0, 1, 184, 1, 176, 4, 64, 6, 124, 11, 96, 14, 224, 27, 0, 26, 45, 40, 47, 25, 20, 11, 5, 0, 150, 60, 120, 120,
+			120, 120, 105, 90, 75, 44, 35, 50, 60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 40, 0, 2, 0, 37, 0, 184, 0, 24, 2, 112, 5, 72, 8, 0, 10, 188, 12, 136, 19, 40, 17, 43, 9, 14, 19,
+			28, 9, 9, 9, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 24, 2, 112, 5, 248, 7, 236, 9, 188, 12, 131, 24, 0, 17,
+			42, 14, 14, 32, 23, 9, 4, 4, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 81, 19, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 3, 6, 9, 10,
-			9, 4, 7, 1, 249, 249, 241, 233, 233, 234, 251, 8, 3, 8, 14, 34, 32, 37, 29, 26, 28, 27, 13, 12, 8, 253, 3, 20, 27, 20,
-			10, 22, 17, 16, 9, 3, 249, 244, 234, 237, 244, 242, 242, 249, 4, 25, 30, 28, 27, 25, 38, 32, 15, 6, 3, 0, 246, 247, 246, 255,
-			249, 5, 23, 31, 14, 7, 14, 9, 2, 1, 247, 241, 238, 227, 239, 248, 244, 246, 254, 8, 26, 28, 21, 19, 22, 25, 26, 5, 3, 14,
-			11, 7, 7, 10, 24, 23, 20, 31, 33, 23, 20, 19, 9, 3, 244, 247, 237, 235, 235, 237, 237, 237, 236, 246, 246, 242, 245, 247, 247, 243,
-			248, 248, 231, 236, 241, 244, 241, 243, 5, 23, 26, 28, 37, 41, 35, 29, 25, 23, 21, 12, 5, 10, 12, 16, 24, 21, 24, 29, 38, 32,
-			15, 6, 3, 1, 252, 246, 246, 248, 250, 2, 253, 8, 12, 7, 14, 18, 7, 3, 247, 247, 0, 0, 250, 247, 1, 3, 254, 5, 15, 19,
-			22, 16, 22, 27, 21, 19, 16, 18, 29, 28, 16, 21, 34, 39, 38, 31, 32, 37, 36, 23, 22, 17, 10, 251, 250, 11, 9, 3, 9, 10,
-			12, 7, 0, 5, 14, 5, 249, 241, 245, 248, 253, 253, 252, 7, 251, 254, 5, 9, 10, 8, 250, 9, 6, 8, 17, 26, 41, 43, 35, 33,
-			51, 54, 44, 34, 34, 31, 25, 21, 24, 42, 34, 15, 22, 29, 34, 31, 12, 1, 255, 227, 218, 220, 223, 227, 222, 223, 249, 12, 11, 15,
-			30, 36, 22, 0, 251, 11, 249, 232, 247, 245, 0, 12, 16, 49, 78, 78, 83, 91, 82, 70, 45, 30, 23, 244, 229, 243, 247, 245, 253, 255,
-			22, 28, 13, 18, 22, 254, 247, 228, 220, 229, 219, 209, 227, 247, 253, 10, 16, 24, 19, 18, 255, 241, 236, 240, 236, 236, 4, 31, 30, 45,
-			78, 76, 86, 85, 75, 72, 57, 16, 0, 239, 242, 247, 250, 2, 13, 18, 33, 42, 33, 32, 14, 1, 250, 230, 209, 202, 201, 204, 222, 237,
-			254, 0, 15, 36, 34, 36, 16, 245, 253, 250, 240, 242, 249, 7, 34, 37, 58, 89, 82, 68, 82, 68, 47, 40, 19, 3, 251, 247, 250, 254,
-			246, 254, 14, 27, 28, 15, 12, 13, 253, 226, 219, 223, 211, 198, 204, 222, 230, 232, 234, 253, 0, 243, 244, 253, 251, 238, 241, 4, 14, 13,
-			20, 36, 52, 51, 43, 33, 30, 34, 25, 20, 21, 21, 22, 21, 36, 60, 59, 45, 31, 20, 9, 254, 237, 239, 228, 205, 201, 211, 226, 226,
-			221, 246, 4, 248, 252, 243, 253, 238, 228, 214, 216, 235, 235, 241, 250, 14, 25, 35, 47, 63, 60, 47, 39, 42, 50, 34, 14, 4, 2, 248,
-			250, 2, 21, 32, 18, 10, 29, 29, 15, 3, 0, 255, 241, 227, 211, 226, 240, 232, 221, 229, 249, 8, 18, 18, 26, 23, 15, 16, 25, 17,
-			7, 255, 7, 2, 255, 9, 20, 7, 13, 20, 34, 39, 38, 24, 28, 37, 20, 8, 12, 11, 17, 17, 2, 4, 8, 17, 27, 20, 26, 29,
-			14, 7, 14, 12, 243, 240, 247, 255, 9, 12, 18, 32, 31, 22, 38, 26, 13, 255, 242, 248, 252, 231, 240, 252, 8, 18, 17, 21, 41, 45,
-			38, 42, 30, 23, 28, 9, 251, 17, 22, 1, 5, 26, 29, 26, 32, 34, 45, 15, 253, 17, 11, 251, 242, 237, 253, 236, 215, 6, 17, 25,
-			56, 57, 32, 53, 42, 14, 44, 54, 15, 14, 10, 8, 1, 243, 15, 33, 30, 17, 16, 14, 2, 240, 234, 242, 225, 195, 192, 206, 225, 2,
-			244, 239, 253, 239, 246, 247, 244, 2, 1, 250, 255, 26, 37, 37, 28, 49, 52, 24, 21, 16, 10, 252, 237, 250, 3, 3, 14, 10, 6, 20,
-			252, 236, 238, 222, 202, 182, 168, 168, 183, 186, 189, 213, 253, 8, 41, 43, 51, 75, 51, 45, 54, 23, 16, 15, 229, 240, 14, 5, 18, 46,
-			51, 65, 76, 61, 61, 49, 34, 27, 247, 227, 233, 215, 223, 238, 236, 2, 22, 21, 60, 63, 23, 20, 15, 237, 236, 237, 203, 207, 215, 229,
-			0, 6, 17, 51, 61, 55, 52, 35, 24, 11, 253, 4, 253, 234, 242, 0, 1, 24, 48, 66, 96, 101, 104, 94, 78, 68, 55, 41, 27, 9,
-			236, 235, 244, 253, 1, 253, 253, 10, 19, 23, 5, 1, 6, 249, 223, 215, 228, 223, 220, 240, 244, 244, 255, 0, 20, 50, 38, 44, 51, 37,
-			44, 56, 44, 49, 51, 38, 57, 57, 61, 87, 76, 83, 82, 59, 48, 30, 3, 4, 247, 231, 225, 214, 227, 236, 226, 245, 250, 243, 243, 247,
-			243, 253, 247, 251, 255, 250, 239, 249, 13, 25, 29, 19, 30, 40, 33, 46, 63, 53, 38, 45, 48, 34, 23, 34, 43, 39, 45, 25, 13, 26,
-			4, 250, 249, 0, 5, 227, 231, 245, 242, 233, 226, 219, 250, 16, 251, 252, 21, 14, 8, 0, 1, 10, 246, 242, 11, 255, 233, 245, 236, 242,
-			2, 18, 35, 45, 41, 29, 37, 48, 46, 33, 12, 19, 21, 252, 236, 244, 10, 15, 22, 18, 43, 62, 23, 18, 36, 10, 232, 242, 217, 224,
-			232, 211, 250, 23, 254, 8, 23, 37, 41, 254, 253, 7, 236, 213, 213, 223, 244, 235, 237, 7, 26, 20, 25, 43, 45, 33, 16, 6, 1, 236,
-			224, 238, 4, 13, 21, 17, 56, 70, 37, 59, 60, 29, 36, 0, 213, 217, 199, 176, 205, 225, 237, 14, 21, 28, 43, 40, 14, 4, 8, 0,
-			228, 209, 221, 227, 220, 220, 248, 20, 49, 66, 53, 68, 66, 29, 8, 8, 235, 215, 224, 239, 249, 253, 31, 71, 51, 51, 77, 61, 24, 16,
-			238, 206, 181, 166, 173, 170, 177, 245, 24, 26, 55, 81, 93, 88, 51, 36, 34, 251, 200, 196, 211, 199, 212, 5, 20, 34, 58, 60, 64, 85,
-			67, 51, 14, 241, 246, 195, 198, 251, 220, 240, 0, 254, 48, 31, 250, 66, 80, 27, 16, 17, 10, 237, 201, 235, 13, 2, 221, 227, 42, 54,
-			35, 56, 68, 86, 36, 253, 34, 34, 247, 234, 244, 249, 250, 235, 2, 51, 50, 58, 63, 52, 49, 45, 35, 39, 250, 210, 228, 243, 247, 251,
-			243, 239, 246, 250, 250, 0, 255, 254, 233, 192, 190, 206, 198, 189, 197, 219, 249, 4, 240, 0, 4, 250, 1, 253, 250, 14, 32, 51, 52, 27,
-			27, 54, 71, 56, 43, 48, 50, 50, 1, 247, 25, 12, 243, 238, 236, 234, 249, 225, 231, 248, 220, 227, 238, 215, 213, 227, 228, 249, 253, 228,
-			0, 241, 206, 224, 253, 18, 48, 41, 56, 84, 68, 71, 89, 89, 95, 98, 82, 89, 59, 21, 33, 18, 240, 251, 238, 244, 25, 255, 246, 9,
-			253, 254, 248, 233, 255, 234, 201, 216, 237, 229, 237, 246, 11, 36, 49, 62, 73, 63, 53, 73, 63, 36, 27, 15, 24, 9, 16, 52, 56, 33,
-			26, 22, 19, 0, 226, 235, 240, 225, 219, 224, 250, 13, 12, 31, 82, 59, 36, 44, 50, 41, 8, 225, 236, 239, 220, 255, 18, 27, 49, 42,
-			57, 91, 74, 40, 42, 29, 5, 254, 238, 240, 246, 227, 245, 13, 30, 31, 39, 47, 67, 33, 9, 12, 3, 4, 5, 244, 10, 18, 255, 29,
-			49, 32, 28, 10, 9, 254, 233, 236, 3, 246, 236, 243, 252, 2, 15, 25, 41, 64, 48, 19, 9, 7, 1, 249, 253, 10, 9, 251, 245, 21,
-			29, 20, 24, 28, 25, 21, 250, 246, 13, 29, 24, 28, 36, 32, 47, 12, 6, 47, 41, 8, 15, 12, 15, 23, 248, 7, 45, 6, 239, 27,
-			24, 3, 28, 21, 38, 43, 255, 16, 45, 1, 3, 44, 25, 18, 22, 238, 16, 23, 236, 241, 222, 186, 213, 187, 172, 227, 233, 236, 248, 2,
-			49, 44, 9, 47, 42, 0, 10, 233, 223, 240, 216, 233, 7, 248, 242, 18, 25, 37, 32, 29, 67, 66, 31, 15, 18, 24, 12, 240, 229, 247,
-			234, 215, 208, 220, 228, 208, 188, 234, 238, 201, 219, 235, 238, 246, 217, 242, 25, 244, 212, 229, 252, 14, 246, 250, 62, 34, 239, 255, 32, 51,
-			36, 255, 29, 51, 250, 239, 13, 18, 254, 255, 9, 28, 21, 237, 251, 20, 3, 235, 243, 251, 251, 233, 236, 21, 6, 249, 6, 20, 25, 4,
-			254, 9, 7, 252, 239, 251, 4, 243, 251, 23, 25, 17, 1, 21, 33, 36, 17, 240, 0, 11, 229, 253, 38, 24, 38, 16, 2, 53, 53, 42,
-			59, 23, 4, 12, 252, 6, 9, 235, 0, 3, 223, 234, 6, 20, 17, 243, 245, 13, 12, 21, 35, 13, 34, 23, 240, 14, 19, 2, 0, 251,
-			237, 237, 222, 238, 21, 8, 16, 29, 1, 25, 17, 228, 23, 47, 10, 22, 7, 16, 33, 253, 8, 75, 59, 33, 47, 28, 27, 25, 12, 33,
-			21, 245, 236, 244, 2, 252, 239, 0, 5, 229, 225, 14, 26, 15, 6, 3, 22, 29, 242, 252, 17, 227, 229, 243, 240, 0, 1, 17, 65, 79,
-			53, 80, 79, 81, 76, 64, 53, 28, 242, 249, 246, 253, 3, 26, 88, 97, 79, 94, 73, 41, 44, 42, 45, 35, 242, 233, 228, 218, 243, 0,
-			31, 49, 9, 51, 97, 40, 10, 0, 241, 12, 219, 199, 224, 239, 255, 252, 37, 68, 59, 63, 89, 99, 95, 50, 2, 12, 11, 254, 227, 229,
-			214, 185, 221, 0, 21, 30, 7, 238, 6, 28, 9, 244, 231, 236, 232, 209, 219, 249, 224, 193, 240, 5, 250, 229, 227, 16, 35, 242, 214, 5,
-			254, 212, 231, 15, 23, 13, 0, 7, 52, 50, 18, 18, 8, 235, 235, 0, 241, 211, 224, 9, 36, 32, 23, 50, 45, 26, 22, 26, 21, 241,
-			209, 214, 238, 240, 254, 0, 5, 30, 21, 31, 36, 251, 249, 234, 229, 229, 189, 183, 248, 5, 11, 59, 60, 68, 94, 95, 83, 96, 69, 36,
-			50, 28, 246, 244, 0, 255, 0, 19, 32, 39, 21, 11, 30, 22, 248, 249, 237, 231, 243, 216, 216, 247, 251, 9, 47, 33, 46, 74, 62, 72,
-			53, 254, 3, 19, 253, 243, 237, 238, 8, 10, 22, 60, 62, 42, 41, 71, 86, 67, 37, 21, 33, 17, 14, 15, 12, 3, 242, 36, 66, 43,
-			14, 29, 28, 31, 3, 224, 232, 245, 238, 251, 245, 9, 20, 15, 30, 70, 53, 29, 12, 0, 246, 228, 212, 220, 237, 1, 37, 53, 58, 57,
-			58, 67, 56, 14, 4, 4, 241, 245, 238, 215, 213, 215, 246, 21, 19, 252, 6, 10, 250, 3, 251, 242, 246, 235, 246, 255, 242, 243, 233, 0,
-			24, 6, 255, 12, 16, 13, 17, 10, 249, 242, 249, 239, 240, 242, 233, 235, 8, 29, 255, 240, 9, 7, 10, 21, 254, 239, 224, 193, 210, 245,
-			243, 240, 230, 247, 19, 11, 252, 25, 31, 33, 15, 239, 230, 250, 8, 0, 6, 252, 236, 0, 17, 14, 10, 9, 7, 237, 227, 5, 22, 1,
-			249, 235, 246, 11, 5, 235, 6, 8, 254, 3, 231, 239, 35, 11, 238, 3, 7, 253, 5, 4, 7, 20, 244, 7, 55, 38, 38, 44, 34, 42,
-			20, 244, 20, 44, 246, 228, 245, 252, 254, 254, 7, 37, 21, 4, 18, 13, 252, 8, 21, 250, 213, 212, 250, 15, 234, 226, 31, 57, 45, 35,
-			56, 83, 70, 25, 48, 56, 14, 2, 248, 236, 220, 215, 255, 24, 8, 38, 74, 58, 44, 48, 41, 41, 36, 10, 225, 225, 247, 241, 232, 253,
-			15, 20, 17, 26, 46, 30, 11, 0, 242, 246, 238, 228, 228, 239, 218, 242, 31, 48, 23, 11, 36, 38, 15, 249, 252, 0, 0, 237, 254, 11,
-			5, 3, 21, 69, 95, 55, 45, 85, 70, 13, 8, 11, 247, 229, 210, 7, 49, 237, 225, 15, 32, 32, 19, 10, 20, 254, 222, 249, 249, 224,
-			216, 222, 11, 18, 5, 43, 75, 62, 55, 47, 43, 40, 0, 252, 52, 30, 233, 2, 21, 37, 77, 73, 74, 92, 66, 50, 77, 50, 2, 249,
-			224, 223, 210, 196, 228, 243, 221, 242, 10, 12, 12, 255, 3, 27, 8, 231, 221, 222, 225, 219, 209, 226, 228, 205, 248, 29, 33, 70, 67, 57,
-			86, 84, 93, 100, 82, 72, 43, 7, 16, 31, 13, 15, 29, 19, 20, 26, 19, 55, 30, 247, 5, 251, 193, 171, 180, 233, 240, 226, 14, 28,
-			17, 30, 67, 92, 55, 247, 242, 240, 243, 234, 204, 234, 9, 14, 65, 104, 98, 84, 75, 106, 112, 53, 32, 29, 226, 206, 238, 0, 11, 230,
-			219, 35, 59, 0, 246, 227, 254, 0, 191, 187, 203, 159, 168, 231, 255, 235, 231, 213, 18, 33, 254, 247, 239, 243, 13, 6, 26, 62, 30, 9,
-			73, 99, 109, 50, 5, 40, 27, 2, 0, 0, 9, 9, 4, 23, 36, 15, 255, 11, 46, 6, 192, 209, 229, 228, 206, 178, 224, 5, 248, 12,
-			57, 37, 29, 239, 237, 56, 40, 231, 237, 241, 229, 229, 225, 26, 19, 242, 18, 62, 44, 239, 230, 31, 34, 211, 199, 248, 233, 227, 217, 245,
-			245, 210, 214, 242, 24, 28, 235, 246, 8, 253, 9, 17, 9, 5, 223, 0, 50, 6, 206, 236, 240, 233, 250, 225, 16, 18, 220, 0, 67, 45,
-			24, 11, 33, 47, 247, 224, 14, 236, 201, 224, 227, 229, 228, 206, 36, 79, 37, 53, 54, 42, 81, 47, 45, 43, 227, 221, 25, 14, 20, 247,
-			215, 24, 46, 38, 68, 67, 36, 14, 235, 238, 247, 198, 173, 199, 241, 10, 5, 15, 34, 31, 43, 71, 55, 31, 246, 245, 245, 211, 190, 217,
-			249, 9, 36, 36, 59, 79, 73, 98, 103, 89, 60, 31, 14, 249, 240, 247, 8, 249, 254, 28, 54, 58, 52, 34, 51, 38, 250, 3, 9, 246,
-			237, 236, 230, 226, 223, 1, 22, 245, 247, 12, 6, 31, 47, 56, 52, 42, 45, 48, 47, 66, 79, 41, 29, 53, 64, 54, 68, 57, 51, 49,
-			20, 7, 23, 40, 26, 4, 9, 247, 254, 47, 47, 7, 2, 9, 239, 207, 212, 229, 237, 219, 241, 3, 242, 15, 41, 25, 63, 87, 55, 54,
-			63, 59, 59, 25, 253, 11, 9, 45, 63, 34, 55, 57, 11, 80, 58, 249, 220, 191, 230, 253, 199, 230, 244, 188, 181, 211, 9, 249, 203, 223,
-			254, 252, 187, 165, 228, 0, 7, 23, 38, 26, 4, 245, 6, 28, 6, 216, 235, 13, 10, 6, 22, 44, 59, 47, 46, 79, 69, 11, 251, 14,
-			247, 195, 155, 163, 192, 189, 194, 234, 244, 252, 1, 5, 31, 12, 233, 233, 255, 8, 233, 246, 17, 16, 255, 16, 24, 57, 36, 0, 7, 8,
-			223, 212, 219, 252, 253, 232, 255, 36, 37, 26, 45, 60, 44, 38, 46, 58, 32, 239, 245, 27, 46, 47, 68, 80, 52, 32, 38, 26, 13, 245,
-			229, 243, 234, 228, 247, 4, 23, 41, 41, 51, 63, 33, 15, 14, 8, 255, 219, 217, 10, 25, 8, 254, 5, 21, 27, 35, 71, 56, 11, 255,
-			10, 38, 29, 248, 0, 25, 238, 240, 21, 29, 25, 255, 244, 50, 63, 16, 22, 59, 69, 45, 10, 58, 61, 8, 22, 38, 9, 235, 206, 242,
-			38, 18, 250, 11, 247, 250, 9, 0, 27, 3, 206, 233, 248, 228, 237, 250, 241, 29, 34, 53, 50, 43, 68, 70, 43, 46, 47, 13, 9, 23,
-			14, 19, 251, 255, 39, 58, 68, 45, 21, 23, 27, 21, 24, 24, 235, 212, 197, 189, 206, 209, 191, 209, 216, 244, 1, 249, 9, 27, 13, 19,
-			30, 24, 8, 242, 243, 248, 235, 232, 15, 54, 88, 88, 98, 117, 122, 112, 107, 87, 50, 7, 218, 240, 217, 174, 192, 207, 193, 239, 255, 235,
-			246, 242, 233, 240, 206, 178, 188, 191, 230, 244, 225, 18, 22, 15, 72, 70, 46, 56, 17, 0, 20, 252, 237, 224, 202, 1, 33, 15, 28, 26,
-			10, 39, 40, 7, 17, 241, 228, 25, 247, 229, 34, 6, 247, 27, 9, 24, 19, 229, 16, 30, 217, 203, 216, 168, 172, 184, 185, 190, 160, 163,
-			229, 235, 220, 255, 238, 0, 23, 237, 34, 59, 8, 255, 3, 246, 255, 243, 14, 56, 36, 21, 61, 72, 77, 77, 61, 46, 35, 8, 248, 1,
-			251, 206, 188, 201, 228, 249, 4, 7, 28, 13, 224, 218, 229, 199, 212, 232, 208, 208, 212, 220, 4, 35, 29, 50, 58, 58, 58, 41, 50, 48,
-			11, 16, 17, 31, 75, 53, 40, 50, 76, 87, 95, 82, 85, 65, 31, 18, 11, 35, 37, 8, 0, 15, 12, 1, 19, 23, 249, 227, 221, 208,
-			194, 189, 209, 227, 227, 245, 254, 20, 39, 41, 38, 63, 75, 45, 28, 42, 44, 31, 6, 14, 44, 37, 39, 68, 87, 83, 58, 47, 60, 63,
-			36, 252, 0, 250, 212, 196, 231, 235, 236, 9, 30, 31, 48, 24, 31, 41, 248, 219, 206, 182, 182, 159, 179, 1, 236, 237, 70, 40, 55, 113,
-			62, 60, 68, 16, 36, 32, 234, 32, 61, 31, 65, 69, 87, 112, 76, 52, 79, 48, 32, 26, 252, 21, 47, 242, 239, 246, 220, 218, 208, 201,
-			254, 237, 229, 246, 242, 245, 230, 245, 27, 224, 199, 7, 247, 207, 224, 235, 37, 26, 248, 38, 54, 24, 19, 2, 16, 4, 203, 224, 38, 12,
-			246, 18, 34, 32, 24, 22, 50, 29, 252, 1, 253, 215, 193, 186, 212, 233, 229, 238, 242, 1, 22, 18, 11, 21, 242, 226, 228, 215, 235, 241,
-			235, 6, 41, 43, 54, 44, 51, 74, 48, 43, 42, 242, 232, 240, 231, 255, 244, 237, 12, 4, 253, 15, 23, 34, 48, 13, 10, 239, 177, 208,
-			249, 228, 225, 223, 213, 237, 2, 3, 44, 54, 34, 33, 46, 56, 43, 11, 14, 41, 35, 33, 49, 39, 50, 65, 39, 53, 36, 249, 16, 24,
-			20, 2, 231, 238, 14, 13, 13, 24, 11, 20, 33, 21, 12, 252, 230, 224, 249, 6, 7, 13, 16, 12, 32, 68, 75, 52, 62, 39, 41, 55,
-			38, 19, 13, 17, 11, 12, 19, 3, 12, 245, 11, 251, 240, 253, 245, 246, 3, 246, 239, 255, 7, 17, 28, 246, 12, 252, 249, 15, 12, 22,
-			17, 241, 13, 44, 23, 52, 67, 44, 61, 64, 45, 54, 10, 243, 254, 243, 228, 238, 237, 242, 8, 254, 253, 13, 24, 32, 20, 6, 2, 249,
-			3, 5, 241, 238, 245, 243, 7, 23, 29, 30, 0, 232, 235, 227, 229, 6, 2, 5, 32, 20, 38, 61, 40, 56, 55, 28, 33, 12, 238, 219,
-			214, 225, 210, 219, 25, 54, 43, 12, 15, 29, 11, 252, 12, 18, 245, 233, 246, 9, 8, 17, 48, 80, 68, 48, 68, 68, 43, 44, 28, 29,
-			18, 248, 231, 249, 4, 3, 241, 250, 14, 8, 3, 4, 242, 242, 226, 216, 209, 216, 206, 218, 203, 222, 251, 233, 2, 36, 18, 40, 52, 39,
-			43, 27, 7, 27, 3, 3, 8, 236, 237, 253, 2, 12, 18, 24, 24, 21, 37, 55, 28, 1, 244, 239, 233, 212, 202, 204, 197, 187, 209, 227,
-			222, 236, 12, 255, 25, 18, 244, 229, 229, 239, 249, 233, 236, 7, 25, 35, 46, 43, 63, 45, 20, 45, 36, 14, 6, 250, 7, 16, 14, 5,
-			13, 35, 47, 54, 55, 43, 26, 15, 5, 8, 247, 218, 225, 241, 234, 232, 236, 247, 252, 5, 254, 19, 6, 249, 237, 254, 252, 237, 238, 252,
-			24, 37, 46, 64, 53, 58, 65, 63, 80, 45, 0, 255, 255, 240, 237, 0, 24, 30, 26, 51, 61, 40, 51, 75, 60, 40, 39, 22, 254, 237,
-			232, 252, 16, 14, 22, 46, 51, 29, 17, 6, 10, 5, 231, 222, 223, 222, 225, 233, 236, 239, 3, 254, 10, 33, 36, 33, 34, 19, 17, 11,
-			10, 26, 28, 27, 37, 31, 20, 41, 51, 33, 38, 36, 21, 13, 25, 23, 25, 15, 1, 16, 29, 8, 2, 21, 28, 12, 1, 2, 255, 248,
-			221, 200, 204, 225, 216, 211, 229, 1, 10, 5, 29, 44, 45, 30, 18, 28, 28, 9, 251, 250, 243, 223, 244, 26, 57, 52, 53, 72, 71, 52,
-			41, 49, 57, 40, 23, 18, 16, 11, 0, 3, 15, 19, 24, 34, 33, 17, 2, 253, 9, 6, 245, 7, 37, 39, 31, 14, 26, 59, 36, 22,
-			37, 30, 23, 15, 23, 37, 26, 249, 240, 244, 250, 243, 227, 229, 239, 232, 242, 18, 30, 248, 209, 244, 11, 255, 241, 242, 1, 10, 0, 7,
-			36, 52, 29, 42, 69, 48, 8, 253, 244, 242, 230, 225, 215, 203, 204, 226, 8, 18, 241, 230, 253, 5, 235, 250, 250, 238, 236, 216, 208, 244,
-			230, 232, 15, 34, 33, 21, 7, 15, 18, 4, 12, 9, 12, 20, 12, 7, 34, 8, 1, 12, 31, 30, 10, 249, 250, 243, 227, 228, 234, 251,
-			2, 234, 234, 252, 244, 249, 252, 252, 252, 221, 216, 254, 251, 236, 243, 241, 1, 20, 27, 38, 37, 31, 32, 22, 6, 14, 28, 5, 251, 11,
-			17, 13, 16, 17, 48, 55, 32, 30, 15, 237, 229, 227, 230, 222, 186, 198, 254, 247, 238, 23, 31, 37, 48, 28, 40, 42, 5, 7, 255, 248,
-			26, 12, 249, 27, 34, 22, 38, 26, 19, 27, 3, 0, 5, 236, 236, 243, 242, 3, 240, 231, 13, 27, 20, 24, 32, 39, 28, 251, 241, 15,
-			255, 238, 255, 2, 3, 252, 244, 253, 24, 19, 13, 38, 41, 24, 30, 34, 30, 14, 7, 15, 26, 6, 14, 12, 11, 18, 0, 250, 252, 8,
-			251, 245, 232, 227, 239, 219, 219, 2, 21, 5, 0, 27, 35, 40, 35, 30, 35, 24, 9, 0, 252, 248, 248, 2, 25, 28, 10, 48, 66, 54,
-			52, 51, 52, 54, 44, 21, 19, 20, 7, 250, 251, 11, 35, 32, 7, 5, 6, 12, 23, 250, 243, 252, 245, 232, 235, 239, 253, 0, 255, 4,
-			19, 27, 22, 16, 12, 5, 246, 2, 15, 248, 7, 12, 17, 28, 31, 34, 61, 49, 30, 37, 28, 16, 25, 15, 12, 9, 6, 10, 34, 35,
-			33, 37, 28, 20, 8, 233, 245, 254, 244, 226, 211, 226, 241, 242, 253, 12, 24, 33, 35, 39, 55, 32, 249, 231, 241, 250, 237, 249, 18, 32,
-			27, 46, 58, 53, 46, 46, 48, 52, 34, 10, 7, 0, 13, 17, 14, 32, 17, 5, 31, 23, 18, 16, 241, 240, 244, 220, 203, 211, 210, 216,
-			230, 240, 7, 9, 5, 35, 36, 8, 13, 7, 6, 16, 14, 9, 16, 255, 10, 30, 28, 43, 46, 17, 26, 23, 249, 3, 14, 1, 6, 16,
-			14, 21, 15, 17, 26, 21, 17, 27, 17, 8, 21, 9, 244, 251, 246, 4, 25, 22, 29, 45, 37, 30, 24, 18, 31, 33, 15, 7, 1, 243,
-			247, 247, 244, 16, 17, 9, 30, 26, 10, 16, 2, 247, 250, 242, 248, 251, 242, 251, 12, 12, 29, 45, 43, 40, 32, 12, 1, 239, 235, 235,
-			243, 243, 253, 15, 33, 35, 38, 43, 45, 39, 31, 22, 5, 247, 241, 234, 222, 228, 236, 3, 19, 12, 14, 34, 24, 23, 30, 32, 45, 20,
-			238, 238, 246, 247, 252, 248, 0, 8, 23, 21, 22, 18, 17, 23, 27, 16, 20, 11, 17, 4, 9, 31, 35, 27, 32, 25, 17, 26, 14, 7,
-			3, 0, 6, 14, 246, 240, 240, 240, 247, 254, 247, 252, 1, 249, 0, 0, 242, 242, 1, 254, 255, 8, 250, 244, 243, 243, 3, 24, 20, 14,
-			10, 10, 22, 26, 10, 22, 25, 24, 30, 25, 29, 34, 25, 13, 17, 8, 6, 254, 252, 7, 255, 243, 254, 253, 254, 9, 8, 12, 21, 7,
-			5, 12, 11, 249, 236, 240, 253, 0, 252, 0, 10, 5, 10, 10, 7, 252, 3, 7, 5, 7, 10, 0, 6, 4, 4, 23, 25, 13, 14, 14,
-			254, 1, 3, 8, 21, 17, 21, 31, 12, 8, 5, 1, 255, 238, 228, 238, 226, 228, 230, 241, 247, 244, 252, 24, 33, 22, 16, 15, 12, 13,
-			4, 252, 15, 14, 254, 1, 7, 8, 7, 13, 21, 38, 23, 19, 31, 25, 9, 2, 7, 9, 8, 251, 5, 25, 12, 251, 7, 17, 25, 19,
-			12, 14, 16, 9, 8, 9, 5, 1, 251, 3, 2, 8, 4, 4, 7, 17, 17, 18, 22, 27, 23, 7, 5, 5, 253, 244, 253, 11, 12, 5,
-			4, 12, 27, 37, 28, 29, 35, 34, 18, 12, 17, 19, 16, 12, 15, 24, 23, 24, 18, 25, 22, 9, 255, 10, 6, 11, 1, 6, 14, 0,
-			7, 31, 31, 39, 20, 13, 18, 11, 249, 250, 1, 9, 13, 13, 13, 19, 20, 15, 27, 30, 17, 4, 3, 6, 8, 255, 253, 8, 19, 20,
-			30, 52, 52, 20, 13, 17, 20, 3, 235, 239, 250, 253, 251, 248, 3, 15, 18, 11, 21, 13, 3, 252, 255, 253, 246, 234, 243, 251, 253, 11,
-			26, 38, 39, 29, 27, 37, 30, 8, 1, 13, 24, 10, 253, 0, 9, 4, 9, 30, 32, 20, 17, 22, 22, 6, 254, 12, 13, 0, 250, 1,
-			8, 11, 0, 2, 10, 8, 247, 251, 254, 7, 12, 255, 2, 12, 9, 12, 11, 2, 8, 2, 245, 2, 254, 250, 0, 3, 17, 16, 18, 25,
-			39, 36, 37, 31, 14, 13, 6, 251, 6, 11, 0, 5, 3, 0, 20, 22, 11, 14, 17, 13, 15, 1, 253, 0, 2, 0, 5, 10, 12, 16,
-			15, 17, 22, 20, 16, 8, 11, 12, 11, 1, 251, 253, 9, 13, 14, 26, 21, 15, 25, 38, 28, 24, 17, 11, 12, 5, 246, 5, 5, 254,
-			3, 4, 1, 2, 0, 0, 3, 250, 251, 7, 3, 1, 7, 254, 245, 249, 254, 7, 3, 7, 19, 17, 10, 20, 24, 24, 22, 26, 30, 33,
-			21, 21, 16, 4, 12, 15, 2, 4, 252, 1, 0, 0, 247, 252, 14, 17, 17, 18, 20, 12, 11, 4, 5, 0, 249, 244, 246, 252, 253, 253,
-			242, 238, 254, 2, 5, 12, 6, 0, 5, 4, 0, 4, 4, 5, 8, 13, 15, 12, 18, 19, 28, 19, 9, 14, 9, 5, 5, 10, 9, 8,
-			11, 16, 24, 30, 30, 19, 26, 26, 16, 16, 250, 235, 241, 242, 240, 249, 243, 245, 250, 0, 11, 23, 20, 17, 23, 13, 11, 17, 6, 255,
-			4, 12, 7, 14, 14, 18, 25, 25, 17, 12, 7, 5, 254, 6, 6, 0, 252, 253, 11, 11, 18, 17, 23, 23, 19, 11, 1, 246, 243, 239,
-			244, 245, 246, 252, 254, 2, 11, 8, 7, 6, 6, 10, 9, 1, 248, 245, 254, 10, 15, 10, 15, 20, 14, 15, 9, 3, 3, 255, 255, 1,
-			1, 0, 2, 10, 13, 21, 9, 3, 13, 6, 1, 6, 253, 255, 250, 254, 9, 24, 19, 15, 12, 10, 14, 14, 10, 8, 4, 2, 9, 6,
-			6, 8, 14, 23, 24, 20, 24, 25, 21, 23, 13, 10, 12, 7, 7, 3, 251, 251, 255, 2, 7, 12, 17, 11, 18, 15, 23, 28, 23, 16,
-			15, 17, 19, 19, 16, 18, 19, 19, 16, 20, 17, 15, 18, 18, 16, 10, 8, 10, 16, 29, 19, 18, 23, 14, 21, 16, 18, 11, 6, 2,
-			4, 8, 2, 1, 3, 4, 9, 17, 21, 27, 23, 17, 18, 15, 13, 15, 14, 13, 11, 9, 2, 4, 8, 14, 22, 21, 20, 22, 23, 27,
-			27, 24, 18, 23, 19, 24, 29, 20, 22, 23, 21, 27, 28, 21, 23, 17, 11, 6, 0, 0, 5, 3, 7, 15, 12, 12, 14, 18, 24, 25,
-			18, 13, 7, 12, 10, 4, 0, 0, 255, 8, 15, 14, 19, 17, 15, 14, 15, 14, 14, 3, 6, 4, 3, 3, 255, 253, 7, 19, 25, 27,
-			33, 36, 35, 35, 28, 21, 16, 13, 11, 9, 10, 11, 12, 17, 17, 19, 17, 19, 19, 16, 15, 13, 8, 8, 4, 2, 8, 12, 17, 12,
-			10, 10, 20, 20, 17, 12, 7, 14, 13, 7, 6, 8, 8, 11, 9, 15, 21, 20, 23, 25, 22, 25, 18, 19, 25, 23, 10, 9, 11, 9,
-			8, 8, 14, 13, 5, 2, 0, 5, 1, 250, 254, 0, 0, 0, 76, 0, 3, 0, 5, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12,
-			210, 15, 224, 27, 38, 29, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 8, 1, 144, 1, 233, 3,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
+			3, 6, 9, 10, 9, 4, 7, 1, 249, 249, 241, 233, 233, 234, 251, 8, 3, 8, 14, 34, 32, 37, 29, 26, 28, 27, 13, 12, 8, 253,
+			3, 20, 27, 20, 10, 22, 17, 16, 9, 3, 249, 244, 234, 237, 244, 242, 242, 249, 4, 25, 30, 28, 27, 25, 38, 32, 15, 6, 3, 0,
+			246, 247, 246, 255, 249, 5, 23, 31, 14, 7, 14, 9, 2, 1, 247, 241, 238, 227, 239, 248, 244, 246, 254, 8, 26, 28, 21, 19, 22, 25,
+			26, 5, 3, 14, 11, 7, 7, 10, 24, 23, 20, 31, 33, 23, 20, 19, 9, 3, 244, 247, 237, 235, 235, 237, 237, 237, 236, 246, 246, 242,
+			245, 247, 247, 243, 248, 248, 231, 236, 241, 244, 241, 243, 5, 23, 26, 28, 37, 41, 35, 29, 25, 23, 21, 12, 5, 10, 12, 16, 24, 21,
+			24, 29, 38, 32, 15, 6, 3, 1, 252, 246, 246, 248, 250, 2, 253, 8, 12, 7, 14, 18, 7, 3, 247, 247, 0, 0, 250, 247, 1, 3,
+			254, 5, 15, 19, 22, 16, 22, 27, 21, 19, 16, 18, 29, 28, 16, 21, 34, 39, 38, 31, 32, 37, 36, 23, 22, 17, 10, 251, 250, 11,
+			9, 3, 9, 10, 12, 7, 0, 5, 14, 5, 249, 241, 245, 248, 253, 253, 252, 7, 251, 254, 5, 9, 10, 8, 250, 9, 6, 8, 17, 26,
+			41, 43, 35, 33, 51, 54, 44, 34, 34, 31, 25, 21, 24, 42, 34, 15, 22, 29, 34, 31, 12, 1, 255, 227, 218, 220, 223, 227, 222, 223,
+			249, 12, 11, 15, 30, 36, 22, 0, 251, 11, 249, 232, 247, 245, 0, 12, 16, 49, 78, 78, 83, 91, 82, 70, 45, 30, 23, 244, 229, 243,
+			247, 245, 253, 255, 22, 28, 13, 18, 22, 254, 247, 228, 220, 229, 219, 209, 227, 247, 253, 10, 16, 24, 19, 18, 255, 241, 236, 240, 236, 236,
+			4, 31, 30, 45, 78, 76, 86, 85, 75, 72, 57, 16, 0, 239, 242, 247, 250, 2, 13, 18, 33, 42, 33, 32, 14, 1, 250, 230, 209, 202,
+			201, 204, 222, 237, 254, 0, 15, 36, 34, 36, 16, 245, 253, 250, 240, 242, 249, 7, 34, 37, 58, 89, 82, 68, 82, 68, 47, 40, 19, 3,
+			251, 247, 250, 254, 246, 254, 14, 27, 28, 15, 12, 13, 253, 226, 219, 223, 211, 198, 204, 222, 230, 232, 234, 253, 0, 243, 244, 253, 251, 238,
+			241, 4, 14, 13, 20, 36, 52, 51, 43, 33, 30, 34, 25, 20, 21, 21, 22, 21, 36, 60, 59, 45, 31, 20, 9, 254, 237, 239, 228, 205,
+			201, 211, 226, 226, 221, 246, 4, 248, 252, 243, 253, 238, 228, 214, 216, 235, 235, 241, 250, 14, 25, 35, 47, 63, 60, 47, 39, 42, 50, 34,
+			14, 4, 2, 248, 250, 2, 21, 32, 18, 10, 29, 29, 15, 3, 0, 255, 241, 227, 211, 226, 240, 232, 221, 229, 249, 8, 18, 18, 26, 23,
+			15, 16, 25, 17, 7, 255, 7, 2, 255, 9, 20, 7, 13, 20, 34, 39, 38, 24, 28, 37, 20, 8, 12, 11, 17, 17, 2, 4, 8, 17,
+			27, 20, 26, 29, 14, 7, 14, 12, 243, 240, 247, 255, 9, 12, 18, 32, 31, 22, 38, 26, 13, 255, 242, 248, 252, 231, 240, 252, 8, 18,
+			17, 21, 41, 45, 38, 42, 30, 23, 28, 9, 251, 17, 22, 1, 5, 26, 29, 26, 32, 34, 45, 15, 253, 17, 11, 251, 242, 237, 253, 236,
+			215, 6, 17, 25, 56, 57, 32, 53, 42, 14, 44, 54, 15, 14, 10, 8, 1, 243, 15, 33, 30, 17, 16, 14, 2, 240, 234, 242, 225, 195,
+			192, 206, 225, 2, 244, 239, 253, 239, 246, 247, 244, 2, 1, 250, 255, 26, 37, 37, 28, 49, 52, 24, 21, 16, 10, 252, 237, 250, 3, 3,
+			14, 10, 6, 20, 252, 236, 238, 222, 202, 182, 168, 168, 183, 186, 189, 213, 253, 8, 41, 43, 51, 75, 51, 45, 54, 23, 16, 15, 229, 240,
+			14, 5, 18, 46, 51, 65, 76, 61, 61, 49, 34, 27, 247, 227, 233, 215, 223, 238, 236, 2, 22, 21, 60, 63, 23, 20, 15, 237, 236, 237,
+			203, 207, 215, 229, 0, 6, 17, 51, 61, 55, 52, 35, 24, 11, 253, 4, 253, 234, 242, 0, 1, 24, 48, 66, 96, 101, 104, 94, 78, 68,
+			55, 41, 27, 9, 236, 235, 244, 253, 1, 253, 253, 10, 19, 23, 5, 1, 6, 249, 223, 215, 228, 223, 220, 240, 244, 244, 255, 0, 20, 50,
+			38, 44, 51, 37, 44, 56, 44, 49, 51, 38, 57, 57, 61, 87, 76, 83, 82, 59, 48, 30, 3, 4, 247, 231, 225, 214, 227, 236, 226, 245,
+			250, 243, 243, 247, 243, 253, 247, 251, 255, 250, 239, 249, 13, 25, 29, 19, 30, 40, 33, 46, 63, 53, 38, 45, 48, 34, 23, 34, 43, 39,
+			45, 25, 13, 26, 4, 250, 249, 0, 5, 227, 231, 245, 242, 233, 226, 219, 250, 16, 251, 252, 21, 14, 8, 0, 1, 10, 246, 242, 11, 255,
+			233, 245, 236, 242, 2, 18, 35, 45, 41, 29, 37, 48, 46, 33, 12, 19, 21, 252, 236, 244, 10, 15, 22, 18, 43, 62, 23, 18, 36, 10,
+			232, 242, 217, 224, 232, 211, 250, 23, 254, 8, 23, 37, 41, 254, 253, 7, 236, 213, 213, 223, 244, 235, 237, 7, 26, 20, 25, 43, 45, 33,
+			16, 6, 1, 236, 224, 238, 4, 13, 21, 17, 56, 70, 37, 59, 60, 29, 36, 0, 213, 217, 199, 176, 205, 225, 237, 14, 21, 28, 43, 40,
+			14, 4, 8, 0, 228, 209, 221, 227, 220, 220, 248, 20, 49, 66, 53, 68, 66, 29, 8, 8, 235, 215, 224, 239, 249, 253, 31, 71, 51, 51,
+			77, 61, 24, 16, 238, 206, 181, 166, 173, 170, 177, 245, 24, 26, 55, 81, 93, 88, 51, 36, 34, 251, 200, 196, 211, 199, 212, 5, 20, 34,
+			58, 60, 64, 85, 67, 51, 14, 241, 246, 195, 198, 251, 220, 240, 0, 254, 48, 31, 250, 66, 80, 27, 16, 17, 10, 237, 201, 235, 13, 2,
+			221, 227, 42, 54, 35, 56, 68, 86, 36, 253, 34, 34, 247, 234, 244, 249, 250, 235, 2, 51, 50, 58, 63, 52, 49, 45, 35, 39, 250, 210,
+			228, 243, 247, 251, 243, 239, 246, 250, 250, 0, 255, 254, 233, 192, 190, 206, 198, 189, 197, 219, 249, 4, 240, 0, 4, 250, 1, 253, 250, 14,
+			32, 51, 52, 27, 27, 54, 71, 56, 43, 48, 50, 50, 1, 247, 25, 12, 243, 238, 236, 234, 249, 225, 231, 248, 220, 227, 238, 215, 213, 227,
+			228, 249, 253, 228, 0, 241, 206, 224, 253, 18, 48, 41, 56, 84, 68, 71, 89, 89, 95, 98, 82, 89, 59, 21, 33, 18, 240, 251, 238, 244,
+			25, 255, 246, 9, 253, 254, 248, 233, 255, 234, 201, 216, 237, 229, 237, 246, 11, 36, 49, 62, 73, 63, 53, 73, 63, 36, 27, 15, 24, 9,
+			16, 52, 56, 33, 26, 22, 19, 0, 226, 235, 240, 225, 219, 224, 250, 13, 12, 31, 82, 59, 36, 44, 50, 41, 8, 225, 236, 239, 220, 255,
+			18, 27, 49, 42, 57, 91, 74, 40, 42, 29, 5, 254, 238, 240, 246, 227, 245, 13, 30, 31, 39, 47, 67, 33, 9, 12, 3, 4, 5, 244,
+			10, 18, 255, 29, 49, 32, 28, 10, 9, 254, 233, 236, 3, 246, 236, 243, 252, 2, 15, 25, 41, 64, 48, 19, 9, 7, 1, 249, 253, 10,
+			9, 251, 245, 21, 29, 20, 24, 28, 25, 21, 250, 246, 13, 29, 24, 28, 36, 32, 47, 12, 6, 47, 41, 8, 15, 12, 15, 23, 248, 7,
+			45, 6, 239, 27, 24, 3, 28, 21, 38, 43, 255, 16, 45, 1, 3, 44, 25, 18, 22, 238, 16, 23, 236, 241, 222, 186, 213, 187, 172, 227,
+			233, 236, 248, 2, 49, 44, 9, 47, 42, 0, 10, 233, 223, 240, 216, 233, 7, 248, 242, 18, 25, 37, 32, 29, 67, 66, 31, 15, 18, 24,
+			12, 240, 229, 247, 234, 215, 208, 220, 228, 208, 188, 234, 238, 201, 219, 235, 238, 246, 217, 242, 25, 244, 212, 229, 252, 14, 246, 250, 62, 34,
+			239, 255, 32, 51, 36, 255, 29, 51, 250, 239, 13, 18, 254, 255, 9, 28, 21, 237, 251, 20, 3, 235, 243, 251, 251, 233, 236, 21, 6, 249,
+			6, 20, 25, 4, 254, 9, 7, 252, 239, 251, 4, 243, 251, 23, 25, 17, 1, 21, 33, 36, 17, 240, 0, 11, 229, 253, 38, 24, 38, 16,
+			2, 53, 53, 42, 59, 23, 4, 12, 252, 6, 9, 235, 0, 3, 223, 234, 6, 20, 17, 243, 245, 13, 12, 21, 35, 13, 34, 23, 240, 14,
+			19, 2, 0, 251, 237, 237, 222, 238, 21, 8, 16, 29, 1, 25, 17, 228, 23, 47, 10, 22, 7, 16, 33, 253, 8, 75, 59, 33, 47, 28,
+			27, 25, 12, 33, 21, 245, 236, 244, 2, 252, 239, 0, 5, 229, 225, 14, 26, 15, 6, 3, 22, 29, 242, 252, 17, 227, 229, 243, 240, 0,
+			1, 17, 65, 79, 53, 80, 79, 81, 76, 64, 53, 28, 242, 249, 246, 253, 3, 26, 88, 97, 79, 94, 73, 41, 44, 42, 45, 35, 242, 233,
+			228, 218, 243, 0, 31, 49, 9, 51, 97, 40, 10, 0, 241, 12, 219, 199, 224, 239, 255, 252, 37, 68, 59, 63, 89, 99, 95, 50, 2, 12,
+			11, 254, 227, 229, 214, 185, 221, 0, 21, 30, 7, 238, 6, 28, 9, 244, 231, 236, 232, 209, 219, 249, 224, 193, 240, 5, 250, 229, 227, 16,
+			35, 242, 214, 5, 254, 212, 231, 15, 23, 13, 0, 7, 52, 50, 18, 18, 8, 235, 235, 0, 241, 211, 224, 9, 36, 32, 23, 50, 45, 26,
+			22, 26, 21, 241, 209, 214, 238, 240, 254, 0, 5, 30, 21, 31, 36, 251, 249, 234, 229, 229, 189, 183, 248, 5, 11, 59, 60, 68, 94, 95,
+			83, 96, 69, 36, 50, 28, 246, 244, 0, 255, 0, 19, 32, 39, 21, 11, 30, 22, 248, 249, 237, 231, 243, 216, 216, 247, 251, 9, 47, 33,
+			46, 74, 62, 72, 53, 254, 3, 19, 253, 243, 237, 238, 8, 10, 22, 60, 62, 42, 41, 71, 86, 67, 37, 21, 33, 17, 14, 15, 12, 3,
+			242, 36, 66, 43, 14, 29, 28, 31, 3, 224, 232, 245, 238, 251, 245, 9, 20, 15, 30, 70, 53, 29, 12, 0, 246, 228, 212, 220, 237, 1,
+			37, 53, 58, 57, 58, 67, 56, 14, 4, 4, 241, 245, 238, 215, 213, 215, 246, 21, 19, 252, 6, 10, 250, 3, 251, 242, 246, 235, 246, 255,
+			242, 243, 233, 0, 24, 6, 255, 12, 16, 13, 17, 10, 249, 242, 249, 239, 240, 242, 233, 235, 8, 29, 255, 240, 9, 7, 10, 21, 254, 239,
+			224, 193, 210, 245, 243, 240, 230, 247, 19, 11, 252, 25, 31, 33, 15, 239, 230, 250, 8, 0, 6, 252, 236, 0, 17, 14, 10, 9, 7, 237,
+			227, 5, 22, 1, 249, 235, 246, 11, 5, 235, 6, 8, 254, 3, 231, 239, 35, 11, 238, 3, 7, 253, 5, 4, 7, 20, 244, 7, 55, 38,
+			38, 44, 34, 42, 20, 244, 20, 44, 246, 228, 245, 252, 254, 254, 7, 37, 21, 4, 18, 13, 252, 8, 21, 250, 213, 212, 250, 15, 234, 226,
+			31, 57, 45, 35, 56, 83, 70, 25, 48, 56, 14, 2, 248, 236, 220, 215, 255, 24, 8, 38, 74, 58, 44, 48, 41, 41, 36, 10, 225, 225,
+			247, 241, 232, 253, 15, 20, 17, 26, 46, 30, 11, 0, 242, 246, 238, 228, 228, 239, 218, 242, 31, 48, 23, 11, 36, 38, 15, 249, 252, 0,
+			0, 237, 254, 11, 5, 3, 21, 69, 95, 55, 45, 85, 70, 13, 8, 11, 247, 229, 210, 7, 49, 237, 225, 15, 32, 32, 19, 10, 20, 254,
+			222, 249, 249, 224, 216, 222, 11, 18, 5, 43, 75, 62, 55, 47, 43, 40, 0, 252, 52, 30, 233, 2, 21, 37, 77, 73, 74, 92, 66, 50,
+			77, 50, 2, 249, 224, 223, 210, 196, 228, 243, 221, 242, 10, 12, 12, 255, 3, 27, 8, 231, 221, 222, 225, 219, 209, 226, 228, 205, 248, 29,
+			33, 70, 67, 57, 86, 84, 93, 100, 82, 72, 43, 7, 16, 31, 13, 15, 29, 19, 20, 26, 19, 55, 30, 247, 5, 251, 193, 171, 180, 233,
+			240, 226, 14, 28, 17, 30, 67, 92, 55, 247, 242, 240, 243, 234, 204, 234, 9, 14, 65, 104, 98, 84, 75, 106, 112, 53, 32, 29, 226, 206,
+			238, 0, 11, 230, 219, 35, 59, 0, 246, 227, 254, 0, 191, 187, 203, 159, 168, 231, 255, 235, 231, 213, 18, 33, 254, 247, 239, 243, 13, 6,
+			26, 62, 30, 9, 73, 99, 109, 50, 5, 40, 27, 2, 0, 0, 9, 9, 4, 23, 36, 15, 255, 11, 46, 6, 192, 209, 229, 228, 206, 178,
+			224, 5, 248, 12, 57, 37, 29, 239, 237, 56, 40, 231, 237, 241, 229, 229, 225, 26, 19, 242, 18, 62, 44, 239, 230, 31, 34, 211, 199, 248,
+			233, 227, 217, 245, 245, 210, 214, 242, 24, 28, 235, 246, 8, 253, 9, 17, 9, 5, 223, 0, 50, 6, 206, 236, 240, 233, 250, 225, 16, 18,
+			220, 0, 67, 45, 24, 11, 33, 47, 247, 224, 14, 236, 201, 224, 227, 229, 228, 206, 36, 79, 37, 53, 54, 42, 81, 47, 45, 43, 227, 221,
+			25, 14, 20, 247, 215, 24, 46, 38, 68, 67, 36, 14, 235, 238, 247, 198, 173, 199, 241, 10, 5, 15, 34, 31, 43, 71, 55, 31, 246, 245,
+			245, 211, 190, 217, 249, 9, 36, 36, 59, 79, 73, 98, 103, 89, 60, 31, 14, 249, 240, 247, 8, 249, 254, 28, 54, 58, 52, 34, 51, 38,
+			250, 3, 9, 246, 237, 236, 230, 226, 223, 1, 22, 245, 247, 12, 6, 31, 47, 56, 52, 42, 45, 48, 47, 66, 79, 41, 29, 53, 64, 54,
+			68, 57, 51, 49, 20, 7, 23, 40, 26, 4, 9, 247, 254, 47, 47, 7, 2, 9, 239, 207, 212, 229, 237, 219, 241, 3, 242, 15, 41, 25,
+			63, 87, 55, 54, 63, 59, 59, 25, 253, 11, 9, 45, 63, 34, 55, 57, 11, 80, 58, 249, 220, 191, 230, 253, 199, 230, 244, 188, 181, 211,
+			9, 249, 203, 223, 254, 252, 187, 165, 228, 0, 7, 23, 38, 26, 4, 245, 6, 28, 6, 216, 235, 13, 10, 6, 22, 44, 59, 47, 46, 79,
+			69, 11, 251, 14, 247, 195, 155, 163, 192, 189, 194, 234, 244, 252, 1, 5, 31, 12, 233, 233, 255, 8, 233, 246, 17, 16, 255, 16, 24, 57,
+			36, 0, 7, 8, 223, 212, 219, 252, 253, 232, 255, 36, 37, 26, 45, 60, 44, 38, 46, 58, 32, 239, 245, 27, 46, 47, 68, 80, 52, 32,
+			38, 26, 13, 245, 229, 243, 234, 228, 247, 4, 23, 41, 41, 51, 63, 33, 15, 14, 8, 255, 219, 217, 10, 25, 8, 254, 5, 21, 27, 35,
+			71, 56, 11, 255, 10, 38, 29, 248, 0, 25, 238, 240, 21, 29, 25, 255, 244, 50, 63, 16, 22, 59, 69, 45, 10, 58, 61, 8, 22, 38,
+			9, 235, 206, 242, 38, 18, 250, 11, 247, 250, 9, 0, 27, 3, 206, 233, 248, 228, 237, 250, 241, 29, 34, 53, 50, 43, 68, 70, 43, 46,
+			47, 13, 9, 23, 14, 19, 251, 255, 39, 58, 68, 45, 21, 23, 27, 21, 24, 24, 235, 212, 197, 189, 206, 209, 191, 209, 216, 244, 1, 249,
+			9, 27, 13, 19, 30, 24, 8, 242, 243, 248, 235, 232, 15, 54, 88, 88, 98, 117, 122, 112, 107, 87, 50, 7, 218, 240, 217, 174, 192, 207,
+			193, 239, 255, 235, 246, 242, 233, 240, 206, 178, 188, 191, 230, 244, 225, 18, 22, 15, 72, 70, 46, 56, 17, 0, 20, 252, 237, 224, 202, 1,
+			33, 15, 28, 26, 10, 39, 40, 7, 17, 241, 228, 25, 247, 229, 34, 6, 247, 27, 9, 24, 19, 229, 16, 30, 217, 203, 216, 168, 172, 184,
+			185, 190, 160, 163, 229, 235, 220, 255, 238, 0, 23, 237, 34, 59, 8, 255, 3, 246, 255, 243, 14, 56, 36, 21, 61, 72, 77, 77, 61, 46,
+			35, 8, 248, 1, 251, 206, 188, 201, 228, 249, 4, 7, 28, 13, 224, 218, 229, 199, 212, 232, 208, 208, 212, 220, 4, 35, 29, 50, 58, 58,
+			58, 41, 50, 48, 11, 16, 17, 31, 75, 53, 40, 50, 76, 87, 95, 82, 85, 65, 31, 18, 11, 35, 37, 8, 0, 15, 12, 1, 19, 23,
+			249, 227, 221, 208, 194, 189, 209, 227, 227, 245, 254, 20, 39, 41, 38, 63, 75, 45, 28, 42, 44, 31, 6, 14, 44, 37, 39, 68, 87, 83,
+			58, 47, 60, 63, 36, 252, 0, 250, 212, 196, 231, 235, 236, 9, 30, 31, 48, 24, 31, 41, 248, 219, 206, 182, 182, 159, 179, 1, 236, 237,
+			70, 40, 55, 113, 62, 60, 68, 16, 36, 32, 234, 32, 61, 31, 65, 69, 87, 112, 76, 52, 79, 48, 32, 26, 252, 21, 47, 242, 239, 246,
+			220, 218, 208, 201, 254, 237, 229, 246, 242, 245, 230, 245, 27, 224, 199, 7, 247, 207, 224, 235, 37, 26, 248, 38, 54, 24, 19, 2, 16, 4,
+			203, 224, 38, 12, 246, 18, 34, 32, 24, 22, 50, 29, 252, 1, 253, 215, 193, 186, 212, 233, 229, 238, 242, 1, 22, 18, 11, 21, 242, 226,
+			228, 215, 235, 241, 235, 6, 41, 43, 54, 44, 51, 74, 48, 43, 42, 242, 232, 240, 231, 255, 244, 237, 12, 4, 253, 15, 23, 34, 48, 13,
+			10, 239, 177, 208, 249, 228, 225, 223, 213, 237, 2, 3, 44, 54, 34, 33, 46, 56, 43, 11, 14, 41, 35, 33, 49, 39, 50, 65, 39, 53,
+			36, 249, 16, 24, 20, 2, 231, 238, 14, 13, 13, 24, 11, 20, 33, 21, 12, 252, 230, 224, 249, 6, 7, 13, 16, 12, 32, 68, 75, 52,
+			62, 39, 41, 55, 38, 19, 13, 17, 11, 12, 19, 3, 12, 245, 11, 251, 240, 253, 245, 246, 3, 246, 239, 255, 7, 17, 28, 246, 12, 252,
+			249, 15, 12, 22, 17, 241, 13, 44, 23, 52, 67, 44, 61, 64, 45, 54, 10, 243, 254, 243, 228, 238, 237, 242, 8, 254, 253, 13, 24, 32,
+			20, 6, 2, 249, 3, 5, 241, 238, 245, 243, 7, 23, 29, 30, 0, 232, 235, 227, 229, 6, 2, 5, 32, 20, 38, 61, 40, 56, 55, 28,
+			33, 12, 238, 219, 214, 225, 210, 219, 25, 54, 43, 12, 15, 29, 11, 252, 12, 18, 245, 233, 246, 9, 8, 17, 48, 80, 68, 48, 68, 68,
+			43, 44, 28, 29, 18, 248, 231, 249, 4, 3, 241, 250, 14, 8, 3, 4, 242, 242, 226, 216, 209, 216, 206, 218, 203, 222, 251, 233, 2, 36,
+			18, 40, 52, 39, 43, 27, 7, 27, 3, 3, 8, 236, 237, 253, 2, 12, 18, 24, 24, 21, 37, 55, 28, 1, 244, 239, 233, 212, 202, 204,
+			197, 187, 209, 227, 222, 236, 12, 255, 25, 18, 244, 229, 229, 239, 249, 233, 236, 7, 25, 35, 46, 43, 63, 45, 20, 45, 36, 14, 6, 250,
+			7, 16, 14, 5, 13, 35, 47, 54, 55, 43, 26, 15, 5, 8, 247, 218, 225, 241, 234, 232, 236, 247, 252, 5, 254, 19, 6, 249, 237, 254,
+			252, 237, 238, 252, 24, 37, 46, 64, 53, 58, 65, 63, 80, 45, 0, 255, 255, 240, 237, 0, 24, 30, 26, 51, 61, 40, 51, 75, 60, 40,
+			39, 22, 254, 237, 232, 252, 16, 14, 22, 46, 51, 29, 17, 6, 10, 5, 231, 222, 223, 222, 225, 233, 236, 239, 3, 254, 10, 33, 36, 33,
+			34, 19, 17, 11, 10, 26, 28, 27, 37, 31, 20, 41, 51, 33, 38, 36, 21, 13, 25, 23, 25, 15, 1, 16, 29, 8, 2, 21, 28, 12,
+			1, 2, 255, 248, 221, 200, 204, 225, 216, 211, 229, 1, 10, 5, 29, 44, 45, 30, 18, 28, 28, 9, 251, 250, 243, 223, 244, 26, 57, 52,
+			53, 72, 71, 52, 41, 49, 57, 40, 23, 18, 16, 11, 0, 3, 15, 19, 24, 34, 33, 17, 2, 253, 9, 6, 245, 7, 37, 39, 31, 14,
+			26, 59, 36, 22, 37, 30, 23, 15, 23, 37, 26, 249, 240, 244, 250, 243, 227, 229, 239, 232, 242, 18, 30, 248, 209, 244, 11, 255, 241, 242,
+			1, 10, 0, 7, 36, 52, 29, 42, 69, 48, 8, 253, 244, 242, 230, 225, 215, 203, 204, 226, 8, 18, 241, 230, 253, 5, 235, 250, 250, 238,
+			236, 216, 208, 244, 230, 232, 15, 34, 33, 21, 7, 15, 18, 4, 12, 9, 12, 20, 12, 7, 34, 8, 1, 12, 31, 30, 10, 249, 250, 243,
+			227, 228, 234, 251, 2, 234, 234, 252, 244, 249, 252, 252, 252, 221, 216, 254, 251, 236, 243, 241, 1, 20, 27, 38, 37, 31, 32, 22, 6, 14,
+			28, 5, 251, 11, 17, 13, 16, 17, 48, 55, 32, 30, 15, 237, 229, 227, 230, 222, 186, 198, 254, 247, 238, 23, 31, 37, 48, 28, 40, 42,
+			5, 7, 255, 248, 26, 12, 249, 27, 34, 22, 38, 26, 19, 27, 3, 0, 5, 236, 236, 243, 242, 3, 240, 231, 13, 27, 20, 24, 32, 39,
+			28, 251, 241, 15, 255, 238, 255, 2, 3, 252, 244, 253, 24, 19, 13, 38, 41, 24, 30, 34, 30, 14, 7, 15, 26, 6, 14, 12, 11, 18,
+			0, 250, 252, 8, 251, 245, 232, 227, 239, 219, 219, 2, 21, 5, 0, 27, 35, 40, 35, 30, 35, 24, 9, 0, 252, 248, 248, 2, 25, 28,
+			10, 48, 66, 54, 52, 51, 52, 54, 44, 21, 19, 20, 7, 250, 251, 11, 35, 32, 7, 5, 6, 12, 23, 250, 243, 252, 245, 232, 235, 239,
+			253, 0, 255, 4, 19, 27, 22, 16, 12, 5, 246, 2, 15, 248, 7, 12, 17, 28, 31, 34, 61, 49, 30, 37, 28, 16, 25, 15, 12, 9,
+			6, 10, 34, 35, 33, 37, 28, 20, 8, 233, 245, 254, 244, 226, 211, 226, 241, 242, 253, 12, 24, 33, 35, 39, 55, 32, 249, 231, 241, 250,
+			237, 249, 18, 32, 27, 46, 58, 53, 46, 46, 48, 52, 34, 10, 7, 0, 13, 17, 14, 32, 17, 5, 31, 23, 18, 16, 241, 240, 244, 220,
+			203, 211, 210, 216, 230, 240, 7, 9, 5, 35, 36, 8, 13, 7, 6, 16, 14, 9, 16, 255, 10, 30, 28, 43, 46, 17, 26, 23, 249, 3,
+			14, 1, 6, 16, 14, 21, 15, 17, 26, 21, 17, 27, 17, 8, 21, 9, 244, 251, 246, 4, 25, 22, 29, 45, 37, 30, 24, 18, 31, 33,
+			15, 7, 1, 243, 247, 247, 244, 16, 17, 9, 30, 26, 10, 16, 2, 247, 250, 242, 248, 251, 242, 251, 12, 12, 29, 45, 43, 40, 32, 12,
+			1, 239, 235, 235, 243, 243, 253, 15, 33, 35, 38, 43, 45, 39, 31, 22, 5, 247, 241, 234, 222, 228, 236, 3, 19, 12, 14, 34, 24, 23,
+			30, 32, 45, 20, 238, 238, 246, 247, 252, 248, 0, 8, 23, 21, 22, 18, 17, 23, 27, 16, 20, 11, 17, 4, 9, 31, 35, 27, 32, 25,
+			17, 26, 14, 7, 3, 0, 6, 14, 246, 240, 240, 240, 247, 254, 247, 252, 1, 249, 0, 0, 242, 242, 1, 254, 255, 8, 250, 244, 243, 243,
+			3, 24, 20, 14, 10, 10, 22, 26, 10, 22, 25, 24, 30, 25, 29, 34, 25, 13, 17, 8, 6, 254, 252, 7, 255, 243, 254, 253, 254, 9,
+			8, 12, 21, 7, 5, 12, 11, 249, 236, 240, 253, 0, 252, 0, 10, 5, 10, 10, 7, 252, 3, 7, 5, 7, 10, 0, 6, 4, 4, 23,
+			25, 13, 14, 14, 254, 1, 3, 8, 21, 17, 21, 31, 12, 8, 5, 1, 255, 238, 228, 238, 226, 228, 230, 241, 247, 244, 252, 24, 33, 22,
+			16, 15, 12, 13, 4, 252, 15, 14, 254, 1, 7, 8, 7, 13, 21, 38, 23, 19, 31, 25, 9, 2, 7, 9, 8, 251, 5, 25, 12, 251,
+			7, 17, 25, 19, 12, 14, 16, 9, 8, 9, 5, 1, 251, 3, 2, 8, 4, 4, 7, 17, 17, 18, 22, 27, 23, 7, 5, 5, 253, 244,
+			253, 11, 12, 5, 4, 12, 27, 37, 28, 29, 35, 34, 18, 12, 17, 19, 16, 12, 15, 24, 23, 24, 18, 25, 22, 9, 255, 10, 6, 11,
+			1, 6, 14, 0, 7, 31, 31, 39, 20, 13, 18, 11, 249, 250, 1, 9, 13, 13, 13, 19, 20, 15, 27, 30, 17, 4, 3, 6, 8, 255,
+			253, 8, 19, 20, 30, 52, 52, 20, 13, 17, 20, 3, 235, 239, 250, 253, 251, 248, 3, 15, 18, 11, 21, 13, 3, 252, 255, 253, 246, 234,
+			243, 251, 253, 11, 26, 38, 39, 29, 27, 37, 30, 8, 1, 13, 24, 10, 253, 0, 9, 4, 9, 30, 32, 20, 17, 22, 22, 6, 254, 12,
+			13, 0, 250, 1, 8, 11, 0, 2, 10, 8, 247, 251, 254, 7, 12, 255, 2, 12, 9, 12, 11, 2, 8, 2, 245, 2, 254, 250, 0, 3,
+			17, 16, 18, 25, 39, 36, 37, 31, 14, 13, 6, 251, 6, 11, 0, 5, 3, 0, 20, 22, 11, 14, 17, 13, 15, 1, 253, 0, 2, 0,
+			5, 10, 12, 16, 15, 17, 22, 20, 16, 8, 11, 12, 11, 1, 251, 253, 9, 13, 14, 26, 21, 15, 25, 38, 28, 24, 17, 11, 12, 5,
+			246, 5, 5, 254, 3, 4, 1, 2, 0, 0, 3, 250, 251, 7, 3, 1, 7, 254, 245, 249, 254, 7, 3, 7, 19, 17, 10, 20, 24, 24,
+			22, 26, 30, 33, 21, 21, 16, 4, 12, 15, 2, 4, 252, 1, 0, 0, 247, 252, 14, 17, 17, 18, 20, 12, 11, 4, 5, 0, 249, 244,
+			246, 252, 253, 253, 242, 238, 254, 2, 5, 12, 6, 0, 5, 4, 0, 4, 4, 5, 8, 13, 15, 12, 18, 19, 28, 19, 9, 14, 9, 5,
+			5, 10, 9, 8, 11, 16, 24, 30, 30, 19, 26, 26, 16, 16, 250, 235, 241, 242, 240, 249, 243, 245, 250, 0, 11, 23, 20, 17, 23, 13,
+			11, 17, 6, 255, 4, 12, 7, 14, 14, 18, 25, 25, 17, 12, 7, 5, 254, 6, 6, 0, 252, 253, 11, 11, 18, 17, 23, 23, 19, 11,
+			1, 246, 243, 239, 244, 245, 246, 252, 254, 2, 11, 8, 7, 6, 6, 10, 9, 1, 248, 245, 254, 10, 15, 10, 15, 20, 14, 15, 9, 3,
+			3, 255, 255, 1, 1, 0, 2, 10, 13, 21, 9, 3, 13, 6, 1, 6, 253, 255, 250, 254, 9, 24, 19, 15, 12, 10, 14, 14, 10, 8,
+			4, 2, 9, 6, 6, 8, 14, 23, 24, 20, 24, 25, 21, 23, 13, 10, 12, 7, 7, 3, 251, 251, 255, 2, 7, 12, 17, 11, 18, 15,
+			23, 28, 23, 16, 15, 17, 19, 19, 16, 18, 19, 19, 16, 20, 17, 15, 18, 18, 16, 10, 8, 10, 16, 29, 19, 18, 23, 14, 21, 16,
+			18, 11, 6, 2, 4, 8, 2, 1, 3, 4, 9, 17, 21, 27, 23, 17, 18, 15, 13, 15, 14, 13, 11, 9, 2, 4, 8, 14, 22, 21,
+			20, 22, 23, 27, 27, 24, 18, 23, 19, 24, 29, 20, 22, 23, 21, 27, 28, 21, 23, 17, 11, 6, 0, 0, 5, 3, 7, 15, 12, 12,
+			14, 18, 24, 25, 18, 13, 7, 12, 10, 4, 0, 0, 255, 8, 15, 14, 19, 17, 15, 14, 15, 14, 14, 3, 6, 4, 3, 3, 255, 253,
+			7, 19, 25, 27, 33, 36, 35, 35, 28, 21, 16, 13, 11, 9, 10, 11, 12, 17, 17, 19, 17, 19, 19, 16, 15, 13, 8, 8, 4, 2,
+			8, 12, 17, 12, 10, 10, 20, 20, 17, 12, 7, 14, 13, 7, 6, 8, 8, 11, 9, 15, 21, 20, 23, 25, 22, 25, 18, 19, 25, 23,
+			10, 9, 11, 9, 8, 8, 14, 13, 5, 2, 0, 5, 1, 250, 254, 0, 0, 0, 76, 0, 3, 0, 5, 0, 8, 1, 144, 1, 233, 3,
 			184, 6, 108, 12, 210, 15, 224, 27, 38, 29, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1,
-			144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 0, 29, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90,
+			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 8, 1,
+			144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 38, 29, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90,
 			75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			60, 0, 3, 0, 5, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 30, 29, 45, 46, 47, 25, 13, 11, 7, 0,
-			120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 30, 29, 45, 46, 47, 25,
+			1, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 0, 29, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120,
+			120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 60, 0, 3, 0, 5, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 30, 29, 45, 46, 47, 25,
 			13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 0, 30,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15, 224, 27, 30, 29,
 			45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 60, 0, 2, 0, 37, 0, 184, 0, 24, 2, 112, 5, 72, 8,
-			0, 10, 188, 12, 136, 19, 60, 17, 24, 40, 12, 16, 20, 8, 8, 8, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 52,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 24, 2,
-			112, 5, 248, 7, 236, 9, 188, 12, 131, 24, 0, 4, 18, 6, 9, 21, 15, 6, 3, 3, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44,
-			45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 90, 0,
-			3, 0, 5, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21, 40, 5, 8, 23, 10, 6, 6, 6, 4, 4, 150, 125,
-			137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21, 50, 6, 9, 26, 12, 7, 7, 7,
-			5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 9, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21, 0, 6, 9, 25,
-			11, 6, 6, 6, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 8, 7, 36, 0, 248, 248, 251, 0, 6, 7, 6, 3, 0, 252, 246, 241,
-			237, 237, 237, 239, 252, 2, 9, 19, 29, 34, 34, 31, 22, 15, 7, 4, 9, 17, 19, 24, 30, 36, 43, 61, 69, 68, 66, 52, 37, 33,
-			25, 13, 4, 249, 232, 236, 250, 1, 15, 18, 3, 250, 242, 230, 223, 217, 202, 187, 185, 185, 193, 210, 218, 220, 224, 232, 239, 250, 3, 0,
-			249, 242, 236, 233, 237, 244, 250, 3, 9, 15, 25, 27, 27, 26, 21, 16, 10, 3, 254, 246, 242, 240, 241, 242, 243, 243, 245, 249, 255, 0,
-			1, 255, 250, 243, 238, 236, 235, 237, 239, 238, 241, 246, 252, 1, 3, 1, 254, 251, 249, 249, 247, 244, 240, 235, 232, 232, 232, 232, 235, 255,
-			25, 54, 78, 82, 78, 74, 67, 56, 44, 27, 15, 11, 16, 31, 40, 50, 52, 49, 44, 34, 27, 18, 2, 237, 218, 203, 202, 209, 218, 223,
-			227, 226, 225, 218, 216, 218, 218, 219, 220, 218, 215, 210, 209, 214, 222, 239, 0, 19, 30, 34, 30, 26, 17, 11, 10, 10, 10, 11, 12, 18,
-			18, 24, 27, 26, 23, 19, 10, 3, 250, 242, 239, 236, 234, 237, 237, 236, 238, 243, 246, 247, 249, 248, 246, 244, 239, 237, 238, 243, 254, 12,
-			21, 28, 29, 25, 18, 13, 9, 5, 3, 3, 6, 9, 14, 18, 17, 21, 18, 10, 5, 0, 251, 249, 248, 248, 250, 251, 252, 253, 255, 6,
-			9, 8, 4, 7, 19, 24, 23, 21, 8, 253, 246, 244, 252, 255, 10, 21, 22, 22, 11, 5, 5, 254, 247, 245, 239, 235, 232, 230, 235, 223,
-			232, 248, 0, 5, 13, 23, 44, 39, 32, 31, 14, 255, 1, 14, 31, 46, 51, 68, 76, 94, 114, 112, 107, 91, 63, 48, 42, 34, 23, 10,
-			248, 231, 244, 3, 16, 33, 21, 252, 234, 215, 201, 194, 186, 163, 149, 147, 150, 167, 185, 196, 200, 207, 218, 229, 249, 4, 0, 252, 242, 229,
-			229, 232, 237, 245, 4, 17, 34, 48, 52, 52, 47, 37, 26, 17, 6, 253, 246, 245, 245, 246, 247, 246, 245, 246, 250, 255, 1, 0, 249, 237,
-			231, 226, 228, 230, 233, 233, 236, 240, 248, 0, 4, 4, 2, 0, 254, 253, 255, 254, 253, 252, 251, 250, 251, 252, 254, 255, 254, 255, 254, 254,
-			254, 253, 252, 252, 252, 255, 0, 0, 1, 2, 3, 1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 4, 4, 3, 1, 1, 255, 254, 252, 252,
-			251, 251, 250, 249, 250, 250, 249, 249, 249, 251, 249, 252, 252, 251, 250, 253, 255, 0, 2, 4, 6, 6, 6, 5, 4, 4, 2, 0, 0, 0,
-			1, 2, 4, 4, 3, 1, 0, 255, 253, 252, 251, 251, 252, 252, 253, 255, 0, 2, 3, 5, 5, 7, 7, 8, 8, 8, 9, 10, 10, 10,
-			10, 10, 9, 8, 7, 8, 10, 9, 9, 6, 8, 9, 10, 10, 8, 5, 4, 3, 3, 5, 2, 255, 251, 251, 0, 8, 17, 23, 24, 25,
-			28, 31, 32, 29, 18, 9, 1, 255, 2, 9, 14, 15, 13, 11, 12, 14, 14, 11, 4, 250, 238, 227, 217, 207, 199, 199, 202, 214, 232, 244,
-			2, 14, 23, 27, 30, 20, 7, 2, 253, 3, 26, 38, 50, 60, 64, 74, 92, 117, 124, 121, 109, 82, 65, 60, 50, 32, 13, 244, 220, 234,
-			254, 11, 34, 25, 252, 235, 215, 200, 194, 184, 158, 139, 134, 135, 154, 178, 191, 196, 202, 215, 227, 247, 6, 1, 253, 242, 228, 227, 232, 238,
-			249, 8, 21, 37, 52, 58, 58, 55, 45, 33, 22, 10, 255, 247, 244, 244, 245, 246, 246, 244, 243, 247, 254, 2, 0, 249, 238, 229, 226, 225,
-			230, 230, 233, 234, 239, 248, 0, 6, 7, 6, 2, 0, 254, 255, 0, 255, 251, 249, 248, 250, 251, 250, 249, 249, 252, 252, 253, 253, 252, 251,
-			251, 251, 251, 250, 251, 251, 251, 254, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 5, 3, 1, 0, 254, 250, 248, 249, 255, 27, 48, 36,
-			32, 9, 248, 246, 226, 196, 203, 231, 5, 26, 28, 18, 4, 252, 241, 226, 218, 217, 238, 6, 20, 25, 22, 17, 13, 2, 241, 229, 223, 228,
-			242, 0, 8, 16, 26, 25, 22, 7, 242, 234, 241, 252, 2, 10, 14, 22, 24, 16, 251, 242, 249, 253, 2, 3, 8, 9, 253, 232, 0, 26,
-			23, 21, 3, 1, 7, 3, 1, 20, 22, 21, 10, 4, 249, 241, 252, 0, 254, 3, 251, 242, 244, 247, 246, 232, 233, 252, 8, 4, 0, 255,
-			2, 6, 10, 5, 7, 12, 15, 10, 5, 0, 248, 245, 253, 0, 8, 19, 33, 31, 24, 11, 249, 240, 234, 243, 249, 249, 252, 253, 253, 246,
-			243, 244, 250, 255, 3, 13, 22, 23, 7, 247, 233, 233, 236, 0, 22, 39, 50, 52, 43, 25, 9, 12, 15, 22, 29, 30, 23, 18, 7, 253,
-			250, 248, 248, 3, 7, 4, 5, 2, 254, 246, 237, 226, 218, 217, 220, 228, 235, 238, 239, 240, 243, 246, 252, 1, 0, 0, 254, 252, 252, 255,
-			0, 0, 3, 7, 9, 14, 16, 19, 20, 19, 17, 12, 7, 3, 253, 249, 249, 250, 253, 255, 253, 0, 0, 0, 1, 0, 254, 253, 252, 250,
-			250, 251, 249, 247, 244, 246, 252, 0, 3, 4, 3, 1, 255, 253, 251, 254, 0, 254, 253, 253, 248, 248, 249, 251, 255, 3, 8, 8, 2, 251,
-			244, 240, 241, 247, 253, 5, 13, 16, 14, 6, 0, 247, 241, 241, 249, 2, 11, 10, 10, 9, 9, 4, 255, 250, 246, 247, 250, 252, 0, 6,
-			8, 3, 252, 246, 245, 248, 251, 0, 10, 12, 8, 0, 247, 246, 248, 250, 254, 2, 7, 8, 7, 5, 8, 13, 10, 7, 0, 251, 249, 249,
-			252, 0, 5, 9, 8, 7, 3, 2, 1, 252, 254, 255, 254, 251, 249, 245, 247, 250, 254, 0, 3, 1, 0, 253, 250, 247, 254, 3, 7, 12,
-			15, 13, 10, 7, 4, 6, 7, 8, 11, 16, 18, 16, 14, 12, 12, 12, 13, 16, 16, 15, 12, 9, 8, 6, 4, 0, 247, 240, 237, 242,
-			0, 14, 30, 38, 42, 48, 52, 56, 55, 43, 32, 21, 15, 18, 22, 25, 26, 24, 21, 22, 26, 27, 23, 12, 254, 238, 223, 208, 195, 187,
-			185, 189, 200, 215, 229, 242, 253, 2, 6, 5, 0, 241, 234, 231, 236, 4, 26, 42, 51, 55, 63, 77, 96, 105, 103, 95, 72, 55, 53, 48,
-			34, 22, 1, 233, 239, 255, 8, 24, 18, 247, 229, 212, 203, 200, 197, 177, 157, 149, 148, 161, 184, 199, 204, 210, 219, 230, 246, 2, 254, 251,
-			247, 242, 242, 246, 250, 253, 5, 12, 24, 41, 51, 57, 58, 49, 37, 24, 11, 0, 249, 246, 243, 247, 246, 244, 244, 244, 250, 0, 3, 252,
-			242, 229, 219, 215, 219, 221, 230, 240, 243, 248, 253, 251, 248, 242, 241, 250, 11, 24, 24, 14, 255, 242, 233, 231, 236, 252, 10, 12, 10, 7,
-			0, 250, 246, 242, 242, 244, 246, 247, 246, 243, 240, 236, 232, 230, 233, 247, 18, 47, 74, 80, 81, 78, 75, 63, 40, 14, 4, 5, 21, 38,
-			53, 55, 51, 48, 38, 31, 20, 10, 4, 0, 247, 237, 225, 222, 223, 226, 230, 233, 239, 239, 232, 227, 225, 223, 225, 229, 231, 228, 220, 216,
-			216, 223, 236, 249, 7, 14, 16, 9, 0, 246, 240, 238, 239, 245, 254, 3, 10, 15, 16, 12, 3, 252, 249, 249, 253, 255, 1, 2, 2, 1,
-			0, 255, 253, 251, 252, 1, 6, 10, 12, 14, 10, 3, 249, 244, 244, 239, 243, 252, 9, 20, 28, 26, 17, 1, 251, 246, 254, 2, 5, 11,
-			5, 8, 3, 11, 15, 15, 15, 11, 13, 20, 26, 33, 27, 18, 11, 1, 0, 250, 0, 4, 3, 2, 6, 18, 28, 23, 12, 254, 246, 237,
-			226, 216, 214, 217, 223, 234, 247, 3, 10, 15, 17, 15, 13, 10, 2, 0, 0, 7, 22, 33, 38, 41, 40, 44, 55, 71, 79, 79, 72, 56,
-			44, 40, 35, 25, 14, 0, 240, 244, 255, 7, 19, 15, 255, 242, 231, 221, 216, 210, 193, 180, 177, 179, 191, 206, 215, 219, 223, 230, 237, 248,
-			1, 254, 249, 244, 237, 238, 243, 249, 255, 7, 16, 23, 33, 36, 36, 33, 27, 20, 14, 8, 2, 254, 251, 251, 252, 252, 251, 248, 249, 250,
-			254, 0, 0, 252, 245, 239, 237, 237, 240, 242, 243, 245, 249, 254, 0, 4, 4, 1, 255, 254, 0, 0, 1, 0, 0, 255, 254, 255, 0, 0,
-			0, 0, 255, 255, 255, 0, 0, 0, 254, 0, 1, 1, 2, 0, 2, 3, 1, 2, 3, 3, 3, 2, 2, 4, 4, 5, 5, 5, 3, 3,
-			0, 0, 255, 255, 252, 254, 252, 252, 253, 253, 254, 253, 252, 252, 251, 250, 248, 249, 249, 250, 250, 250, 251, 252, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1, 144, 1, 233, 3, 184, 6, 108, 12, 210, 15,
+			224, 27, 0, 30, 45, 46, 47, 25, 13, 11, 7, 0, 120, 60, 120, 120, 120, 120, 75, 90, 75, 44, 45, 70, 130, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 60, 0, 2, 0, 37, 0, 184, 0, 24, 2,
+			112, 5, 72, 8, 0, 10, 188, 12, 136, 19, 60, 17, 24, 40, 12, 16, 20, 8, 8, 8, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44,
+			45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			184, 0, 24, 2, 112, 5, 248, 7, 236, 9, 188, 12, 131, 24, 0, 4, 18, 6, 9, 21, 15, 6, 3, 3, 157, 125, 137, 137, 150, 175,
+			157, 125, 137, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 90, 0, 3, 0, 5, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21, 40, 5, 8, 23, 10, 6, 6, 6,
+			4, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21, 50, 6, 9, 26,
+			12, 7, 7, 7, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 9, 0, 4, 0, 16, 1, 220, 5, 156, 9, 58, 14, 216, 19, 224, 21,
+			0, 6, 9, 25, 11, 6, 6, 6, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 8, 7, 36, 0, 248, 248, 251, 0, 6, 7, 6, 3,
+			0, 252, 246, 241, 237, 237, 237, 239, 252, 2, 9, 19, 29, 34, 34, 31, 22, 15, 7, 4, 9, 17, 19, 24, 30, 36, 43, 61, 69, 68,
+			66, 52, 37, 33, 25, 13, 4, 249, 232, 236, 250, 1, 15, 18, 3, 250, 242, 230, 223, 217, 202, 187, 185, 185, 193, 210, 218, 220, 224, 232,
+			239, 250, 3, 0, 249, 242, 236, 233, 237, 244, 250, 3, 9, 15, 25, 27, 27, 26, 21, 16, 10, 3, 254, 246, 242, 240, 241, 242, 243, 243,
+			245, 249, 255, 0, 1, 255, 250, 243, 238, 236, 235, 237, 239, 238, 241, 246, 252, 1, 3, 1, 254, 251, 249, 249, 247, 244, 240, 235, 232, 232,
+			232, 232, 235, 255, 25, 54, 78, 82, 78, 74, 67, 56, 44, 27, 15, 11, 16, 31, 40, 50, 52, 49, 44, 34, 27, 18, 2, 237, 218, 203,
+			202, 209, 218, 223, 227, 226, 225, 218, 216, 218, 218, 219, 220, 218, 215, 210, 209, 214, 222, 239, 0, 19, 30, 34, 30, 26, 17, 11, 10, 10,
+			10, 11, 12, 18, 18, 24, 27, 26, 23, 19, 10, 3, 250, 242, 239, 236, 234, 237, 237, 236, 238, 243, 246, 247, 249, 248, 246, 244, 239, 237,
+			238, 243, 254, 12, 21, 28, 29, 25, 18, 13, 9, 5, 3, 3, 6, 9, 14, 18, 17, 21, 18, 10, 5, 0, 251, 249, 248, 248, 250, 251,
+			252, 253, 255, 6, 9, 8, 4, 7, 19, 24, 23, 21, 8, 253, 246, 244, 252, 255, 10, 21, 22, 22, 11, 5, 5, 254, 247, 245, 239, 235,
+			232, 230, 235, 223, 232, 248, 0, 5, 13, 23, 44, 39, 32, 31, 14, 255, 1, 14, 31, 46, 51, 68, 76, 94, 114, 112, 107, 91, 63, 48,
+			42, 34, 23, 10, 248, 231, 244, 3, 16, 33, 21, 252, 234, 215, 201, 194, 186, 163, 149, 147, 150, 167, 185, 196, 200, 207, 218, 229, 249, 4,
+			0, 252, 242, 229, 229, 232, 237, 245, 4, 17, 34, 48, 52, 52, 47, 37, 26, 17, 6, 253, 246, 245, 245, 246, 247, 246, 245, 246, 250, 255,
+			1, 0, 249, 237, 231, 226, 228, 230, 233, 233, 236, 240, 248, 0, 4, 4, 2, 0, 254, 253, 255, 254, 253, 252, 251, 250, 251, 252, 254, 255,
+			254, 255, 254, 254, 254, 253, 252, 252, 252, 255, 0, 0, 1, 2, 3, 1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 4, 4, 3, 1, 1,
+			255, 254, 252, 252, 251, 251, 250, 249, 250, 250, 249, 249, 249, 251, 249, 252, 252, 251, 250, 253, 255, 0, 2, 4, 6, 6, 6, 5, 4, 4,
+			2, 0, 0, 0, 1, 2, 4, 4, 3, 1, 0, 255, 253, 252, 251, 251, 252, 252, 253, 255, 0, 2, 3, 5, 5, 7, 7, 8, 8, 8,
+			9, 10, 10, 10, 10, 10, 9, 8, 7, 8, 10, 9, 9, 6, 8, 9, 10, 10, 8, 5, 4, 3, 3, 5, 2, 255, 251, 251, 0, 8,
+			17, 23, 24, 25, 28, 31, 32, 29, 18, 9, 1, 255, 2, 9, 14, 15, 13, 11, 12, 14, 14, 11, 4, 250, 238, 227, 217, 207, 199, 199,
+			202, 214, 232, 244, 2, 14, 23, 27, 30, 20, 7, 2, 253, 3, 26, 38, 50, 60, 64, 74, 92, 117, 124, 121, 109, 82, 65, 60, 50, 32,
+			13, 244, 220, 234, 254, 11, 34, 25, 252, 235, 215, 200, 194, 184, 158, 139, 134, 135, 154, 178, 191, 196, 202, 215, 227, 247, 6, 1, 253, 242,
+			228, 227, 232, 238, 249, 8, 21, 37, 52, 58, 58, 55, 45, 33, 22, 10, 255, 247, 244, 244, 245, 246, 246, 244, 243, 247, 254, 2, 0, 249,
+			238, 229, 226, 225, 230, 230, 233, 234, 239, 248, 0, 6, 7, 6, 2, 0, 254, 255, 0, 255, 251, 249, 248, 250, 251, 250, 249, 249, 252, 252,
+			253, 253, 252, 251, 251, 251, 251, 250, 251, 251, 251, 254, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 5, 3, 1, 0, 254, 250, 248, 249,
+			255, 27, 48, 36, 32, 9, 248, 246, 226, 196, 203, 231, 5, 26, 28, 18, 4, 252, 241, 226, 218, 217, 238, 6, 20, 25, 22, 17, 13, 2,
+			241, 229, 223, 228, 242, 0, 8, 16, 26, 25, 22, 7, 242, 234, 241, 252, 2, 10, 14, 22, 24, 16, 251, 242, 249, 253, 2, 3, 8, 9,
+			253, 232, 0, 26, 23, 21, 3, 1, 7, 3, 1, 20, 22, 21, 10, 4, 249, 241, 252, 0, 254, 3, 251, 242, 244, 247, 246, 232, 233, 252,
+			8, 4, 0, 255, 2, 6, 10, 5, 7, 12, 15, 10, 5, 0, 248, 245, 253, 0, 8, 19, 33, 31, 24, 11, 249, 240, 234, 243, 249, 249,
+			252, 253, 253, 246, 243, 244, 250, 255, 3, 13, 22, 23, 7, 247, 233, 233, 236, 0, 22, 39, 50, 52, 43, 25, 9, 12, 15, 22, 29, 30,
+			23, 18, 7, 253, 250, 248, 248, 3, 7, 4, 5, 2, 254, 246, 237, 226, 218, 217, 220, 228, 235, 238, 239, 240, 243, 246, 252, 1, 0, 0,
+			254, 252, 252, 255, 0, 0, 3, 7, 9, 14, 16, 19, 20, 19, 17, 12, 7, 3, 253, 249, 249, 250, 253, 255, 253, 0, 0, 0, 1, 0,
+			254, 253, 252, 250, 250, 251, 249, 247, 244, 246, 252, 0, 3, 4, 3, 1, 255, 253, 251, 254, 0, 254, 253, 253, 248, 248, 249, 251, 255, 3,
+			8, 8, 2, 251, 244, 240, 241, 247, 253, 5, 13, 16, 14, 6, 0, 247, 241, 241, 249, 2, 11, 10, 10, 9, 9, 4, 255, 250, 246, 247,
+			250, 252, 0, 6, 8, 3, 252, 246, 245, 248, 251, 0, 10, 12, 8, 0, 247, 246, 248, 250, 254, 2, 7, 8, 7, 5, 8, 13, 10, 7,
+			0, 251, 249, 249, 252, 0, 5, 9, 8, 7, 3, 2, 1, 252, 254, 255, 254, 251, 249, 245, 247, 250, 254, 0, 3, 1, 0, 253, 250, 247,
+			254, 3, 7, 12, 15, 13, 10, 7, 4, 6, 7, 8, 11, 16, 18, 16, 14, 12, 12, 12, 13, 16, 16, 15, 12, 9, 8, 6, 4, 0,
+			247, 240, 237, 242, 0, 14, 30, 38, 42, 48, 52, 56, 55, 43, 32, 21, 15, 18, 22, 25, 26, 24, 21, 22, 26, 27, 23, 12, 254, 238,
+			223, 208, 195, 187, 185, 189, 200, 215, 229, 242, 253, 2, 6, 5, 0, 241, 234, 231, 236, 4, 26, 42, 51, 55, 63, 77, 96, 105, 103, 95,
+			72, 55, 53, 48, 34, 22, 1, 233, 239, 255, 8, 24, 18, 247, 229, 212, 203, 200, 197, 177, 157, 149, 148, 161, 184, 199, 204, 210, 219, 230,
+			246, 2, 254, 251, 247, 242, 242, 246, 250, 253, 5, 12, 24, 41, 51, 57, 58, 49, 37, 24, 11, 0, 249, 246, 243, 247, 246, 244, 244, 244,
+			250, 0, 3, 252, 242, 229, 219, 215, 219, 221, 230, 240, 243, 248, 253, 251, 248, 242, 241, 250, 11, 24, 24, 14, 255, 242, 233, 231, 236, 252,
+			10, 12, 10, 7, 0, 250, 246, 242, 242, 244, 246, 247, 246, 243, 240, 236, 232, 230, 233, 247, 18, 47, 74, 80, 81, 78, 75, 63, 40, 14,
+			4, 5, 21, 38, 53, 55, 51, 48, 38, 31, 20, 10, 4, 0, 247, 237, 225, 222, 223, 226, 230, 233, 239, 239, 232, 227, 225, 223, 225, 229,
+			231, 228, 220, 216, 216, 223, 236, 249, 7, 14, 16, 9, 0, 246, 240, 238, 239, 245, 254, 3, 10, 15, 16, 12, 3, 252, 249, 249, 253, 255,
+			1, 2, 2, 1, 0, 255, 253, 251, 252, 1, 6, 10, 12, 14, 10, 3, 249, 244, 244, 239, 243, 252, 9, 20, 28, 26, 17, 1, 251, 246,
+			254, 2, 5, 11, 5, 8, 3, 11, 15, 15, 15, 11, 13, 20, 26, 33, 27, 18, 11, 1, 0, 250, 0, 4, 3, 2, 6, 18, 28, 23,
+			12, 254, 246, 237, 226, 216, 214, 217, 223, 234, 247, 3, 10, 15, 17, 15, 13, 10, 2, 0, 0, 7, 22, 33, 38, 41, 40, 44, 55, 71,
+			79, 79, 72, 56, 44, 40, 35, 25, 14, 0, 240, 244, 255, 7, 19, 15, 255, 242, 231, 221, 216, 210, 193, 180, 177, 179, 191, 206, 215, 219,
+			223, 230, 237, 248, 1, 254, 249, 244, 237, 238, 243, 249, 255, 7, 16, 23, 33, 36, 36, 33, 27, 20, 14, 8, 2, 254, 251, 251, 252, 252,
+			251, 248, 249, 250, 254, 0, 0, 252, 245, 239, 237, 237, 240, 242, 243, 245, 249, 254, 0, 4, 4, 1, 255, 254, 0, 0, 1, 0, 0, 255,
+			254, 255, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 254, 0, 1, 1, 2, 0, 2, 3, 1, 2, 3, 3, 3, 2, 2, 4, 4, 5,
+			5, 5, 3, 3, 0, 0, 255, 255, 252, 254, 252, 252, 253, 253, 254, 253, 252, 252, 251, 250, 248, 249, 249, 250, 250, 250, 251, 252, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -521,1151 +534,1227 @@ FilesInMemory create_espeakdata_phons () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 4, 0, 5, 0, 116, 0, 13, 2, 161, 5,
-			152, 8, 128, 12, 212, 13, 96, 27, 30, 8, 14, 26, 25, 12, 12, 12, 7, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 116, 0,
-			13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 35, 15, 19, 35, 33, 16, 16, 16, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 4, 0, 5, 0, 116, 0,
+			13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 30, 8, 14, 26, 25, 12, 12, 12, 7, 4, 167, 150, 135, 120, 120, 120, 197, 120,
 			120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 30, 15, 19, 35, 33, 16, 16, 16, 9, 5, 167, 150, 135, 120,
+			5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 35, 15, 19, 35, 33, 16, 16, 16, 9, 5, 167, 150, 135, 120,
 			120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 0, 10, 15, 29, 26, 13, 13, 13, 8, 4,
+			0, 250, 0, 0, 5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 30, 15, 19, 35, 33, 16, 16, 16, 9, 5,
 			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 101, 10, 56, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2,
-			2, 3, 2, 1, 255, 253, 250, 247, 246, 246, 247, 248, 250, 251, 252, 252, 252, 253, 253, 253, 253, 252, 250, 249, 250, 251, 253, 0, 5, 12,
-			19, 22, 20, 15, 9, 4, 255, 250, 250, 247, 245, 245, 248, 251, 0, 254, 253, 252, 249, 244, 240, 236, 234, 231, 233, 238, 245, 253, 0, 4,
-			7, 13, 16, 16, 17, 20, 21, 21, 18, 22, 21, 19, 20, 27, 31, 27, 25, 25, 21, 13, 10, 1, 252, 246, 244, 245, 247, 245, 249, 250,
-			251, 251, 251, 250, 249, 246, 245, 246, 246, 245, 247, 250, 252, 255, 1, 4, 6, 9, 8, 6, 4, 3, 3, 5, 5, 5, 7, 4, 3, 3,
-			3, 3, 3, 0, 252, 247, 244, 247, 247, 248, 252, 255, 255, 250, 246, 244, 240, 239, 242, 242, 245, 247, 247, 249, 247, 246, 244, 245, 245, 247,
-			249, 252, 255, 1, 0, 2, 3, 5, 5, 3, 0, 252, 254, 254, 251, 250, 250, 250, 253, 254, 253, 251, 249, 248, 246, 243, 239, 234, 229, 227,
-			226, 224, 223, 227, 0, 41, 84, 119, 125, 120, 115, 104, 88, 70, 45, 26, 20, 26, 46, 59, 73, 76, 71, 64, 49, 37, 23, 255, 222, 195,
-			174, 173, 184, 199, 207, 214, 214, 214, 206, 203, 206, 206, 206, 207, 205, 201, 194, 193, 200, 210, 235, 4, 33, 48, 52, 44, 35, 21, 11, 9,
-			9, 9, 10, 11, 19, 20, 29, 33, 32, 27, 20, 8, 254, 241, 231, 228, 224, 223, 228, 229, 228, 232, 240, 245, 245, 247, 245, 240, 237, 230,
-			227, 228, 234, 249, 13, 26, 35, 36, 30, 20, 13, 7, 2, 255, 0, 4, 9, 17, 21, 19, 22, 18, 8, 3, 253, 245, 241, 238, 240, 248,
-			253, 0, 253, 247, 248, 244, 239, 231, 234, 248, 253, 255, 5, 254, 248, 242, 236, 240, 238, 253, 14, 18, 18, 1, 247, 250, 247, 250, 5, 9,
-			16, 24, 30, 38, 18, 16, 19, 15, 5, 2, 9, 32, 21, 23, 37, 20, 5, 0, 247, 0, 6, 1, 21, 21, 22, 23, 13, 8, 254, 247,
-			244, 244, 248, 253, 0, 3, 5, 6, 6, 6, 5, 4, 1, 254, 250, 247, 245, 247, 248, 250, 251, 252, 252, 249, 250, 250, 251, 252, 252, 253,
-			254, 254, 255, 255, 252, 252, 249, 249, 246, 250, 251, 0, 0, 0, 0, 0, 254, 251, 253, 251, 251, 252, 255, 0, 0, 0, 0, 1, 1, 1,
-			1, 255, 255, 255, 252, 255, 253, 0, 0, 1, 255, 0, 254, 254, 254, 254, 254, 255, 2, 2, 0, 1, 255, 255, 1, 1, 1, 1, 0, 1,
-			3, 1, 3, 3, 3, 3, 3, 2, 2, 2, 6, 6, 6, 6, 6, 5, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
-			1, 255, 255, 255, 1, 0, 1, 255, 254, 254, 254, 254, 253, 253, 0, 253, 0, 0, 255, 252, 255, 255, 254, 254, 255, 1, 1, 1, 254, 253,
-			252, 249, 248, 248, 248, 249, 250, 252, 253, 253, 252, 252, 251, 250, 250, 250, 251, 253, 255, 0, 2, 4, 5, 6, 8, 8, 10, 9, 9, 8,
-			7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 5, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 1, 0, 1, 1, 1, 1, 1, 2,
-			2, 2, 2, 255, 255, 255, 255, 255, 255, 252, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 254, 0, 254, 254, 254, 1, 2, 2, 2, 1, 255, 255, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-			1, 0, 254, 254, 254, 254, 255, 255, 1, 0, 2, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 2, 2, 0, 255, 254, 254, 255, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0,
-			0, 0, 0, 3, 1, 3, 0, 3, 0, 0, 0, 0, 0, 0, 4, 4, 4, 1, 1, 1, 1, 254, 254, 254, 255, 254, 251, 250, 251, 255,
-			0, 2, 2, 2, 2, 2, 2, 1, 254, 254, 253, 253, 255, 0, 2, 3, 4, 4, 3, 2, 1, 1, 0, 0, 254, 252, 252, 250, 247, 247,
-			251, 5, 49, 81, 63, 56, 19, 247, 243, 214, 173, 187, 230, 19, 49, 50, 36, 15, 1, 238, 212, 197, 195, 225, 6, 27, 34, 29, 21, 15,
-			0, 231, 215, 206, 212, 232, 253, 8, 20, 35, 34, 30, 9, 234, 224, 235, 251, 5, 17, 23, 34, 37, 24, 248, 234, 244, 250, 2, 3, 11,
-			11, 248, 218, 252, 35, 31, 28, 2, 255, 8, 3, 255, 27, 30, 29, 13, 4, 241, 229, 245, 254, 251, 4, 247, 232, 235, 241, 242, 223, 224,
-			249, 9, 254, 245, 241, 247, 251, 0, 248, 253, 9, 18, 15, 8, 253, 239, 232, 244, 250, 6, 22, 41, 39, 30, 14, 247, 240, 236, 254, 11,
-			15, 20, 19, 13, 252, 241, 236, 239, 243, 247, 5, 24, 31, 10, 244, 220, 209, 208, 232, 5, 28, 40, 34, 10, 236, 215, 224, 241, 2, 15,
-			21, 20, 20, 16, 10, 0, 244, 237, 244, 0, 9, 18, 22, 21, 13, 4, 255, 252, 253, 1, 4, 4, 2, 1, 0, 255, 254, 253, 254, 255,
-			0, 2, 5, 7, 8, 8, 4, 0, 0, 253, 252, 253, 1, 5, 9, 10, 7, 6, 5, 255, 251, 251, 252, 0, 3, 1, 5, 5, 1, 1,
-			255, 255, 2, 6, 5, 5, 5, 1, 254, 247, 248, 252, 0, 1, 2, 2, 2, 255, 252, 249, 252, 0, 254, 254, 253, 246, 245, 245, 249, 255,
-			6, 14, 14, 6, 250, 240, 235, 236, 244, 253, 9, 21, 25, 21, 9, 255, 242, 234, 234, 244, 3, 15, 13, 13, 12, 11, 4, 252, 244, 239,
-			242, 247, 252, 4, 12, 15, 7, 251, 242, 240, 243, 248, 1, 16, 19, 14, 2, 246, 244, 246, 248, 253, 4, 11, 10, 6, 0, 1, 5, 2,
-			255, 246, 241, 240, 241, 246, 254, 5, 9, 5, 0, 249, 247, 246, 240, 246, 250, 251, 250, 248, 244, 247, 251, 1, 5, 8, 3, 254, 248, 243,
-			239, 249, 3, 9, 16, 19, 14, 9, 3, 253, 255, 1, 3, 10, 18, 22, 19, 17, 15, 15, 14, 13, 14, 14, 14, 13, 11, 9, 5, 0,
-			250, 243, 239, 237, 240, 250, 3, 15, 22, 26, 33, 34, 37, 37, 30, 29, 27, 25, 26, 24, 20, 18, 17, 16, 17, 21, 21, 17, 9, 1,
-			249, 241, 233, 228, 228, 228, 231, 234, 234, 236, 237, 235, 233, 233, 226, 225, 222, 221, 224, 229, 237, 248, 0, 2, 2, 4, 3, 255, 254, 253,
-			253, 252, 253, 0, 4, 5, 9, 9, 6, 6, 3, 0, 252, 249, 245, 245, 242, 246, 250, 255, 255, 254, 249, 247, 244, 247, 253, 253, 255, 255,
-			0, 255, 252, 247, 250, 0, 10, 13, 12, 10, 3, 254, 248, 247, 253, 4, 12, 19, 17, 12, 6, 1, 253, 255, 255, 252, 0, 253, 252, 255,
-			255, 2, 5, 3, 248, 242, 236, 234, 233, 239, 239, 249, 6, 9, 9, 5, 248, 235, 225, 228, 246, 20, 40, 37, 22, 0, 240, 229, 226, 232,
-			254, 17, 20, 18, 13, 4, 251, 245, 241, 242, 245, 248, 249, 246, 241, 235, 228, 221, 218, 222, 244, 28, 71, 109, 116, 116, 110, 105, 87, 53,
-			16, 1, 4, 29, 56, 80, 86, 83, 79, 65, 53, 35, 18, 8, 0, 243, 229, 212, 209, 212, 219, 226, 232, 239, 236, 224, 214, 210, 205, 207,
-			209, 209, 204, 192, 187, 189, 201, 221, 242, 8, 19, 21, 10, 249, 233, 222, 220, 221, 232, 247, 3, 15, 24, 27, 22, 9, 254, 248, 249, 253,
-			255, 2, 2, 2, 0, 253, 252, 248, 245, 245, 253, 4, 9, 11, 13, 8, 255, 240, 233, 233, 227, 233, 246, 11, 25, 36, 31, 18, 254, 246,
-			239, 251, 0, 5, 17, 12, 19, 11, 16, 12, 3, 254, 246, 246, 254, 5, 16, 14, 10, 11, 2, 253, 240, 242, 247, 246, 247, 253, 14, 28,
-			22, 12, 0, 0, 254, 248, 244, 249, 0, 7, 13, 17, 22, 19, 14, 9, 0, 249, 251, 252, 0, 5, 12, 13, 13, 9, 5, 0, 254, 254,
-			254, 255, 1, 2, 2, 2, 2, 2, 2, 3, 6, 4, 3, 0, 0, 0, 1, 2, 2, 2, 0, 255, 254, 252, 251, 251, 252, 253, 254, 255,
-			255, 0, 0, 255, 253, 251, 249, 248, 248, 249, 251, 252, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 2, 2, 2, 2, 2,
-			2, 2, 0, 2, 0, 0, 0, 0, 1, 0, 254, 254, 254, 1, 2, 3, 3, 3, 3, 0, 0, 0, 253, 253, 254, 0, 1, 1, 1, 1,
-			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 5, 2, 5, 6, 6, 6, 3, 6, 6, 3, 3, 4, 4, 4, 1, 1, 2, 2,
-			3, 4, 4, 1, 1, 255, 255, 255, 0, 253, 0, 254, 254, 255, 255, 255, 252, 252, 253, 253, 253, 250, 250, 250, 250, 250, 250, 250, 250, 250,
-			250, 250, 250, 252, 249, 249, 252, 252, 251, 251, 254, 254, 0, 0, 0, 255, 255, 1, 1, 0, 0, 255, 255, 2, 5, 5, 4, 4, 3, 2,
-			2, 2, 2, 5, 5, 5, 4, 4, 3, 3, 2, 2, 2, 5, 5, 6, 9, 9, 9, 9, 5, 1, 0, 1, 1, 1, 1, 1, 1, 2,
-			2, 2, 2, 2, 2, 255, 255, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
-			255, 255, 1, 255, 255, 1, 255, 1, 2, 5, 2, 1, 1, 1, 255, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 253, 253,
-			253, 253, 254, 0, 1, 1, 1, 1, 0, 254, 254, 0, 1, 1, 255, 0, 0, 254, 254, 0, 0, 255, 0, 0, 0, 254, 0, 0, 0, 0,
-			3, 0, 3, 0, 254, 252, 249, 253, 0, 255, 1, 7, 27, 58, 60, 55, 18, 245, 221, 212, 188, 188, 210, 251, 40, 62, 54, 29, 5, 243,
-			222, 205, 201, 222, 1, 27, 44, 43, 31, 17, 0, 236, 219, 210, 218, 236, 0, 16, 19, 24, 16, 2, 240, 230, 221, 246, 16, 20, 36, 22,
-			15, 251, 237, 243, 237, 0, 4, 8, 9, 57, 46, 9, 220, 224, 247, 241, 246, 254, 54, 31, 11, 245, 226, 245, 242, 246, 254, 249, 252, 4,
-			10, 17, 36, 255, 225, 222, 243, 245, 249, 27, 21, 23, 13, 244, 238, 232, 236, 3, 12, 3, 19, 11, 9, 2, 239, 242, 243, 254, 5, 3,
-			15, 22, 16, 10, 3, 5, 11, 17, 22, 25, 25, 13, 255, 240, 236, 238, 254, 5, 12, 12, 33, 29, 71, 24, 253, 231, 240, 227, 212, 220,
-			244, 22, 24, 0, 223, 234, 232, 0, 240, 232, 234, 237, 219, 222, 239, 250, 20, 15, 5, 252, 0, 240, 245, 255, 0, 11, 20, 17, 9, 10,
-			9, 6, 6, 8, 0, 12, 14, 13, 16, 11, 1, 250, 250, 251, 253, 0, 252, 2, 3, 249, 244, 240, 241, 246, 250, 253, 246, 248, 248, 252,
-			255, 254, 252, 248, 246, 246, 251, 251, 255, 9, 17, 21, 19, 11, 5, 0, 253, 252, 248, 252, 4, 16, 22, 22, 20, 9, 4, 0, 250, 249,
-			250, 5, 11, 13, 16, 11, 0, 248, 248, 254, 253, 4, 13, 21, 21, 13, 8, 4, 0, 253, 0, 255, 9, 19, 25, 29, 19, 13, 2, 252,
-			252, 254, 0, 5, 11, 13, 10, 3, 253, 250, 247, 245, 243, 247, 249, 254, 252, 253, 252, 247, 246, 246, 243, 244, 248, 249, 249, 248, 245, 244,
-			244, 247, 251, 253, 3, 3, 4, 250, 242, 244, 250, 244, 247, 254, 9, 15, 19, 17, 8, 255, 243, 238, 237, 240, 246, 2, 17, 25, 18, 8,
-			252, 245, 239, 233, 240, 252, 6, 14, 11, 9, 7, 255, 245, 236, 236, 250, 3, 12, 19, 18, 10, 3, 243, 227, 224, 228, 237, 254, 10, 20,
-			18, 4, 241, 230, 226, 229, 235, 241, 247, 250, 252, 251, 248, 245, 244, 246, 254, 9, 19, 19, 16, 9, 0, 250, 248, 251, 6, 18, 29, 32,
-			24, 18, 11, 6, 3, 6, 11, 22, 23, 21, 24, 20, 16, 9, 8, 8, 9, 12, 8, 0, 250, 245, 248, 2, 16, 39, 54, 65, 66, 62,
-			51, 35, 19, 4, 255, 0, 10, 22, 28, 28, 27, 20, 15, 4, 253, 249, 242, 234, 230, 222, 217, 213, 212, 215, 218, 220, 226, 228, 233, 233,
-			230, 225, 220, 215, 214, 214, 220, 227, 238, 249, 0, 7, 12, 7, 1, 252, 250, 249, 249, 255, 2, 8, 8, 8, 7, 10, 10, 14, 18, 22,
-			23, 23, 18, 11, 6, 0, 0, 254, 1, 3, 12, 17, 19, 19, 8, 2, 248, 240, 236, 240, 244, 249, 253, 0, 3, 2, 1, 253, 252, 251,
-			253, 252, 255, 1, 4, 7, 5, 1, 0, 2, 6, 7, 14, 13, 9, 0, 248, 243, 239, 235, 237, 241, 247, 1, 9, 8, 0, 246, 238, 229,
-			227, 231, 241, 252, 2, 6, 7, 6, 3, 254, 248, 242, 244, 247, 253, 0, 3, 8, 3, 251, 245, 243, 249, 255, 7, 17, 16, 7, 251, 246,
-			252, 253, 1, 3, 6, 6, 5, 2, 255, 250, 246, 242, 239, 238, 238, 239, 237, 234, 229, 217, 205, 205, 241, 32, 85, 113, 111, 109, 102, 98,
-			82, 46, 23, 18, 25, 46, 64, 73, 80, 73, 65, 54, 41, 39, 34, 26, 16, 253, 234, 217, 208, 210, 210, 214, 226, 225, 225, 221, 216, 211,
-			207, 198, 195, 194, 186, 185, 187, 195, 213, 233, 249, 5, 7, 3, 249, 245, 243, 245, 251, 255, 5, 11, 7, 5, 4, 8, 13, 22, 27, 28,
-			25, 21, 10, 0, 248, 246, 247, 250, 255, 253, 254, 255, 0, 254, 255, 255, 251, 247, 243, 238, 237, 237, 244, 248, 251, 254, 253, 255, 1, 4,
-			6, 8, 7, 5, 4, 5, 1, 4, 4, 9, 10, 9, 10, 15, 9, 7, 2, 0, 2, 6, 7, 7, 3, 255, 253, 247, 251, 2, 6, 2,
-			250, 244, 240, 247, 251, 255, 1, 0, 0, 254, 0, 252, 255, 1, 6, 3, 2, 8, 7, 8, 1, 1, 7, 14, 11, 11, 10, 9, 4, 254,
-			250, 0, 4, 9, 7, 8, 3, 254, 253, 0, 253, 255, 252, 254, 9, 9, 12, 13, 11, 4, 0, 249, 248, 248, 246, 253, 1, 6, 10, 6,
-			7, 3, 251, 243, 243, 244, 253, 1, 1, 1, 254, 2, 255, 251, 251, 0, 0, 0, 253, 254, 254, 253, 252, 252, 251, 251, 252, 254, 255, 0,
-			0, 253, 249, 245, 244, 244, 247, 0, 10, 22, 34, 41, 37, 32, 19, 10, 6, 7, 12, 17, 23, 24, 21, 19, 16, 14, 16, 15, 17, 20,
-			14, 8, 2, 249, 243, 241, 244, 246, 249, 251, 253, 255, 252, 250, 251, 249, 246, 243, 239, 232, 228, 233, 238, 243, 248, 248, 248, 248, 243, 239,
-			238, 242, 242, 250, 249, 248, 248, 247, 246, 245, 248, 252, 2, 2, 9, 4, 3, 3, 2, 2, 2, 1, 254, 0, 0, 4, 4, 9, 8, 4,
-			4, 4, 0, 0, 0, 0, 64, 4, 31, 0, 0, 2, 7, 12, 13, 8, 3, 255, 251, 245, 242, 243, 251, 3, 7, 5, 255, 249, 248, 253,
-			1, 6, 8, 5, 0, 249, 246, 252, 5, 13, 12, 4, 252, 248, 249, 251, 255, 4, 8, 8, 2, 252, 251, 0, 6, 7, 4, 255, 252, 252,
-			252, 252, 253, 253, 254, 255, 2, 9, 15, 16, 11, 3, 251, 244, 240, 240, 248, 3, 13, 15, 9, 0, 248, 243, 242, 246, 0, 8, 15, 15,
-			9, 0, 248, 245, 248, 254, 1, 5, 8, 8, 4, 253, 246, 246, 251, 2, 9, 14, 14, 8, 253, 239, 232, 236, 248, 4, 15, 22, 20, 9,
-			247, 230, 226, 238, 3, 27, 40, 39, 26, 8, 247, 234, 232, 245, 9, 31, 51, 65, 66, 45, 4, 216, 186, 181, 201, 235, 10, 30, 28, 7,
-			234, 210, 202, 214, 236, 2, 19, 27, 24, 12, 253, 237, 226, 222, 227, 243, 8, 30, 38, 29, 8, 245, 234, 237, 250, 11, 26, 32, 26, 11,
-			253, 242, 242, 249, 2, 10, 15, 15, 11, 5, 0, 253, 250, 249, 251, 0, 8, 14, 16, 9, 255, 244, 241, 245, 251, 0, 5, 7, 6, 2,
-			255, 252, 250, 250, 252, 0, 6, 9, 7, 2, 255, 254, 254, 0, 0, 1, 2, 3, 4, 4, 3, 1, 0, 0, 1, 2, 3, 5, 5, 3,
-			0, 254, 253, 254, 255, 0, 1, 0, 253, 250, 251, 254, 0, 0, 0, 1, 1, 0, 253, 251, 252, 254, 255, 255, 254, 255, 0, 255, 255, 255,
-			255, 254, 254, 0, 0, 1, 0, 0, 0, 2, 2, 1, 0, 255, 0, 0, 1, 3, 4, 3, 2, 1, 0, 0, 0, 2, 4, 6, 6, 5,
-			3, 3, 4, 3, 0, 254, 253, 254, 0, 2, 2, 0, 0, 1, 2, 1, 0, 255, 255, 0, 1, 2, 0, 0, 255, 0, 255, 252, 251, 251,
-			254, 0, 1, 1, 0, 0, 254, 252, 252, 254, 0, 1, 3, 2, 0, 254, 253, 254, 255, 0, 1, 2, 1, 0, 0, 0, 2, 3, 3, 3,
-			2, 2, 1, 1, 1, 2, 2, 3, 2, 0, 255, 255, 1, 4, 4, 2, 0, 0, 0, 0, 3, 15, 29, 28, 0, 214, 196, 219, 4, 32,
-			32, 16, 0, 249, 241, 233, 234, 252, 19, 32, 23, 1, 240, 233, 238, 247, 0, 9, 15, 16, 6, 246, 235, 238, 253, 13, 23, 18, 4, 250,
-			254, 18, 45, 54, 24, 223, 180, 186, 233, 29, 56, 55, 43, 30, 14, 252, 241, 244, 244, 216, 165, 130, 153, 228, 51, 87, 80, 59, 43, 20,
-			234, 188, 173, 199, 242, 14, 23, 26, 34, 39, 31, 16, 9, 14, 22, 19, 4, 239, 223, 223, 238, 254, 2, 251, 240, 239, 250, 7, 14, 14,
-			11, 4, 247, 229, 219, 226, 244, 3, 12, 19, 29, 40, 45, 44, 39, 29, 11, 246, 226, 217, 220, 229, 236, 241, 247, 255, 2, 3, 2, 5,
-			14, 25, 28, 23, 15, 10, 10, 8, 0, 244, 238, 240, 247, 253, 2, 10, 18, 23, 27, 28, 24, 11, 248, 230, 221, 224, 233, 243, 251, 0,
-			3, 0, 252, 248, 247, 245, 244, 246, 253, 12, 31, 44, 41, 26, 7, 250, 244, 242, 244, 251, 4, 9, 4, 249, 238, 234, 236, 241, 247, 3,
-			18, 29, 27, 14, 1, 254, 255, 252, 243, 235, 234, 242, 253, 4, 10, 14, 15, 10, 0, 243, 234, 235, 244, 0, 9, 14, 13, 10, 5, 255,
-			250, 248, 249, 250, 248, 246, 247, 251, 2, 10, 16, 17, 11, 0, 246, 240, 242, 251, 4, 11, 10, 4, 253, 248, 251, 2, 9, 13, 12, 8,
-			3, 254, 250, 247, 248, 251, 254, 1, 6, 11, 16, 16, 10, 1, 248, 243, 244, 248, 253, 1, 4, 6, 6, 4, 1, 255, 255, 0, 3, 2,
-			0, 253, 253, 255, 4, 8, 9, 5, 255, 247, 243, 244, 248, 254, 1, 6, 12, 16, 14, 7, 0, 253, 250, 248, 249, 253, 2, 6, 5, 1,
-			255, 0, 2, 2, 0, 254, 253, 255, 0, 0, 0, 0, 0, 254, 253, 253, 1, 6, 11, 11, 7, 0, 245, 238, 239, 247, 0, 6, 9, 9,
-			9, 8, 5, 2, 0, 251, 247, 248, 253, 3, 10, 14, 11, 3, 252, 246, 244, 246, 251, 0, 6, 9, 9, 7, 2, 253, 248, 246, 247, 251,
-			0, 6, 11, 11, 5, 255, 250, 248, 248, 252, 1, 7, 10, 8, 2, 254, 249, 247, 247, 250, 255, 2, 5, 6, 4, 0, 249, 240, 235, 236,
-			245, 5, 26, 43, 48, 39, 18, 248, 227, 221, 233, 4, 38, 66, 75, 60, 26, 244, 212, 196, 199, 218, 248, 16, 27, 19, 0, 232, 216, 210,
-			214, 229, 252, 17, 32, 32, 19, 254, 231, 216, 215, 228, 252, 19, 32, 30, 16, 254, 238, 234, 241, 0, 16, 29, 30, 21, 8, 254, 248, 247,
-			249, 254, 5, 14, 19, 16, 9, 0, 250, 246, 246, 253, 5, 11, 11, 7, 1, 252, 247, 244, 246, 252, 4, 9, 8, 3, 254, 251, 250, 253,
-			0, 1, 3, 4, 4, 3, 3, 1, 0, 254, 254, 0, 4, 5, 5, 3, 2, 1, 0, 0, 0, 3, 5, 6, 5, 2, 0, 252, 251, 252,
-			255, 1, 3, 3, 2, 0, 254, 253, 254, 255, 255, 255, 255, 0, 0, 255, 253, 251, 250, 252, 255, 0, 1, 0, 255, 253, 253, 252, 252, 253,
-			0, 1, 1, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 1, 3, 5, 5, 4, 3, 3, 3, 3, 1, 0, 0, 1, 2, 3, 3, 2,
-			2, 1, 0, 0, 0, 1, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 253, 253, 254, 255, 0, 1, 2, 0, 253, 249,
-			247, 249, 253, 0, 4, 4, 4, 4, 4, 3, 1, 254, 251, 249, 250, 254, 1, 3, 3, 3, 2, 0, 0, 0, 0, 2, 3, 2, 0, 0,
-			1, 3, 3, 1, 0, 1, 2, 3, 4, 3, 1, 0, 255, 252, 252, 253, 0, 2, 4, 3, 1, 0, 0, 1, 2, 1, 0, 0, 0, 254,
-			253, 255, 1, 2, 0, 251, 250, 255, 3, 4, 0, 254, 255, 1, 2, 0, 254, 252, 252, 253, 253, 252, 255, 7, 15, 18, 19, 25, 21, 0,
-			232, 235, 6, 26, 5, 216, 200, 241, 41, 58, 27, 252, 5, 44, 55, 13, 207, 179, 145, 0, 4, 0, 69, 0, 208, 0, 128, 2, 160, 5,
-			56, 9, 128, 12, 148, 17, 244, 26, 60, 5, 21, 12, 9, 15, 6, 6, 0, 0, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 44, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 69, 0, 208, 0,
-			128, 2, 160, 5, 56, 9, 128, 12, 148, 17, 244, 26, 45, 5, 22, 12, 9, 16, 6, 6, 0, 0, 187, 125, 137, 137, 150, 175, 187, 125,
-			137, 44, 45, 70, 130, 43, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			69, 0, 192, 0, 24, 2, 80, 5, 136, 9, 128, 12, 148, 17, 244, 26, 40, 9, 19, 25, 25, 19, 6, 6, 0, 0, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 45, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 192, 0, 24, 2, 80, 5, 136, 9, 128, 12, 148, 17, 244, 26, 0, 9, 19, 25, 25, 19, 6, 6, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 0, 10, 15, 29, 26, 13,
+			13, 13, 8, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 101, 10, 56, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
+			0, 1, 2, 2, 2, 3, 2, 1, 255, 253, 250, 247, 246, 246, 247, 248, 250, 251, 252, 252, 252, 253, 253, 253, 253, 252, 250, 249, 250, 251,
+			253, 0, 5, 12, 19, 22, 20, 15, 9, 4, 255, 250, 250, 247, 245, 245, 248, 251, 0, 254, 253, 252, 249, 244, 240, 236, 234, 231, 233, 238,
+			245, 253, 0, 4, 7, 13, 16, 16, 17, 20, 21, 21, 18, 22, 21, 19, 20, 27, 31, 27, 25, 25, 21, 13, 10, 1, 252, 246, 244, 245,
+			247, 245, 249, 250, 251, 251, 251, 250, 249, 246, 245, 246, 246, 245, 247, 250, 252, 255, 1, 4, 6, 9, 8, 6, 4, 3, 3, 5, 5, 5,
+			7, 4, 3, 3, 3, 3, 3, 0, 252, 247, 244, 247, 247, 248, 252, 255, 255, 250, 246, 244, 240, 239, 242, 242, 245, 247, 247, 249, 247, 246,
+			244, 245, 245, 247, 249, 252, 255, 1, 0, 2, 3, 5, 5, 3, 0, 252, 254, 254, 251, 250, 250, 250, 253, 254, 253, 251, 249, 248, 246, 243,
+			239, 234, 229, 227, 226, 224, 223, 227, 0, 41, 84, 119, 125, 120, 115, 104, 88, 70, 45, 26, 20, 26, 46, 59, 73, 76, 71, 64, 49, 37,
+			23, 255, 222, 195, 174, 173, 184, 199, 207, 214, 214, 214, 206, 203, 206, 206, 206, 207, 205, 201, 194, 193, 200, 210, 235, 4, 33, 48, 52, 44,
+			35, 21, 11, 9, 9, 9, 10, 11, 19, 20, 29, 33, 32, 27, 20, 8, 254, 241, 231, 228, 224, 223, 228, 229, 228, 232, 240, 245, 245, 247,
+			245, 240, 237, 230, 227, 228, 234, 249, 13, 26, 35, 36, 30, 20, 13, 7, 2, 255, 0, 4, 9, 17, 21, 19, 22, 18, 8, 3, 253, 245,
+			241, 238, 240, 248, 253, 0, 253, 247, 248, 244, 239, 231, 234, 248, 253, 255, 5, 254, 248, 242, 236, 240, 238, 253, 14, 18, 18, 1, 247, 250,
+			247, 250, 5, 9, 16, 24, 30, 38, 18, 16, 19, 15, 5, 2, 9, 32, 21, 23, 37, 20, 5, 0, 247, 0, 6, 1, 21, 21, 22, 23,
+			13, 8, 254, 247, 244, 244, 248, 253, 0, 3, 5, 6, 6, 6, 5, 4, 1, 254, 250, 247, 245, 247, 248, 250, 251, 252, 252, 249, 250, 250,
+			251, 252, 252, 253, 254, 254, 255, 255, 252, 252, 249, 249, 246, 250, 251, 0, 0, 0, 0, 0, 254, 251, 253, 251, 251, 252, 255, 0, 0, 0,
+			0, 1, 1, 1, 1, 255, 255, 255, 252, 255, 253, 0, 0, 1, 255, 0, 254, 254, 254, 254, 254, 255, 2, 2, 0, 1, 255, 255, 1, 1,
+			1, 1, 0, 1, 3, 1, 3, 3, 3, 3, 3, 2, 2, 2, 6, 6, 6, 6, 6, 5, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+			2, 2, 2, 0, 1, 255, 255, 255, 1, 0, 1, 255, 254, 254, 254, 254, 253, 253, 0, 253, 0, 0, 255, 252, 255, 255, 254, 254, 255, 1,
+			1, 1, 254, 253, 252, 249, 248, 248, 248, 249, 250, 252, 253, 253, 252, 252, 251, 250, 250, 250, 251, 253, 255, 0, 2, 4, 5, 6, 8, 8,
+			10, 9, 9, 8, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 5, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 1, 0, 1, 1,
+			1, 1, 1, 2, 2, 2, 2, 255, 255, 255, 255, 255, 255, 252, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 254, 254, 254, 1, 2, 2, 2, 1, 255, 255, 2, 2, 2, 0, 0, 0, 0, 0,
+			0, 0, 0, 1, 1, 0, 254, 254, 254, 254, 255, 255, 1, 0, 2, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 2, 2, 0, 255, 254, 254, 255, 1, 2, 1, 1, 1, 1, 1,
+			1, 1, 0, 0, 0, 0, 0, 3, 1, 3, 0, 3, 0, 0, 0, 0, 0, 0, 4, 4, 4, 1, 1, 1, 1, 254, 254, 254, 255, 254,
+			251, 250, 251, 255, 0, 2, 2, 2, 2, 2, 2, 1, 254, 254, 253, 253, 255, 0, 2, 3, 4, 4, 3, 2, 1, 1, 0, 0, 254, 252,
+			252, 250, 247, 247, 251, 5, 49, 81, 63, 56, 19, 247, 243, 214, 173, 187, 230, 19, 49, 50, 36, 15, 1, 238, 212, 197, 195, 225, 6, 27,
+			34, 29, 21, 15, 0, 231, 215, 206, 212, 232, 253, 8, 20, 35, 34, 30, 9, 234, 224, 235, 251, 5, 17, 23, 34, 37, 24, 248, 234, 244,
+			250, 2, 3, 11, 11, 248, 218, 252, 35, 31, 28, 2, 255, 8, 3, 255, 27, 30, 29, 13, 4, 241, 229, 245, 254, 251, 4, 247, 232, 235,
+			241, 242, 223, 224, 249, 9, 254, 245, 241, 247, 251, 0, 248, 253, 9, 18, 15, 8, 253, 239, 232, 244, 250, 6, 22, 41, 39, 30, 14, 247,
+			240, 236, 254, 11, 15, 20, 19, 13, 252, 241, 236, 239, 243, 247, 5, 24, 31, 10, 244, 220, 209, 208, 232, 5, 28, 40, 34, 10, 236, 215,
+			224, 241, 2, 15, 21, 20, 20, 16, 10, 0, 244, 237, 244, 0, 9, 18, 22, 21, 13, 4, 255, 252, 253, 1, 4, 4, 2, 1, 0, 255,
+			254, 253, 254, 255, 0, 2, 5, 7, 8, 8, 4, 0, 0, 253, 252, 253, 1, 5, 9, 10, 7, 6, 5, 255, 251, 251, 252, 0, 3, 1,
+			5, 5, 1, 1, 255, 255, 2, 6, 5, 5, 5, 1, 254, 247, 248, 252, 0, 1, 2, 2, 2, 255, 252, 249, 252, 0, 254, 254, 253, 246,
+			245, 245, 249, 255, 6, 14, 14, 6, 250, 240, 235, 236, 244, 253, 9, 21, 25, 21, 9, 255, 242, 234, 234, 244, 3, 15, 13, 13, 12, 11,
+			4, 252, 244, 239, 242, 247, 252, 4, 12, 15, 7, 251, 242, 240, 243, 248, 1, 16, 19, 14, 2, 246, 244, 246, 248, 253, 4, 11, 10, 6,
+			0, 1, 5, 2, 255, 246, 241, 240, 241, 246, 254, 5, 9, 5, 0, 249, 247, 246, 240, 246, 250, 251, 250, 248, 244, 247, 251, 1, 5, 8,
+			3, 254, 248, 243, 239, 249, 3, 9, 16, 19, 14, 9, 3, 253, 255, 1, 3, 10, 18, 22, 19, 17, 15, 15, 14, 13, 14, 14, 14, 13,
+			11, 9, 5, 0, 250, 243, 239, 237, 240, 250, 3, 15, 22, 26, 33, 34, 37, 37, 30, 29, 27, 25, 26, 24, 20, 18, 17, 16, 17, 21,
+			21, 17, 9, 1, 249, 241, 233, 228, 228, 228, 231, 234, 234, 236, 237, 235, 233, 233, 226, 225, 222, 221, 224, 229, 237, 248, 0, 2, 2, 4,
+			3, 255, 254, 253, 253, 252, 253, 0, 4, 5, 9, 9, 6, 6, 3, 0, 252, 249, 245, 245, 242, 246, 250, 255, 255, 254, 249, 247, 244, 247,
+			253, 253, 255, 255, 0, 255, 252, 247, 250, 0, 10, 13, 12, 10, 3, 254, 248, 247, 253, 4, 12, 19, 17, 12, 6, 1, 253, 255, 255, 252,
+			0, 253, 252, 255, 255, 2, 5, 3, 248, 242, 236, 234, 233, 239, 239, 249, 6, 9, 9, 5, 248, 235, 225, 228, 246, 20, 40, 37, 22, 0,
+			240, 229, 226, 232, 254, 17, 20, 18, 13, 4, 251, 245, 241, 242, 245, 248, 249, 246, 241, 235, 228, 221, 218, 222, 244, 28, 71, 109, 116, 116,
+			110, 105, 87, 53, 16, 1, 4, 29, 56, 80, 86, 83, 79, 65, 53, 35, 18, 8, 0, 243, 229, 212, 209, 212, 219, 226, 232, 239, 236, 224,
+			214, 210, 205, 207, 209, 209, 204, 192, 187, 189, 201, 221, 242, 8, 19, 21, 10, 249, 233, 222, 220, 221, 232, 247, 3, 15, 24, 27, 22, 9,
+			254, 248, 249, 253, 255, 2, 2, 2, 0, 253, 252, 248, 245, 245, 253, 4, 9, 11, 13, 8, 255, 240, 233, 233, 227, 233, 246, 11, 25, 36,
+			31, 18, 254, 246, 239, 251, 0, 5, 17, 12, 19, 11, 16, 12, 3, 254, 246, 246, 254, 5, 16, 14, 10, 11, 2, 253, 240, 242, 247, 246,
+			247, 253, 14, 28, 22, 12, 0, 0, 254, 248, 244, 249, 0, 7, 13, 17, 22, 19, 14, 9, 0, 249, 251, 252, 0, 5, 12, 13, 13, 9,
+			5, 0, 254, 254, 254, 255, 1, 2, 2, 2, 2, 2, 2, 3, 6, 4, 3, 0, 0, 0, 1, 2, 2, 2, 0, 255, 254, 252, 251, 251,
+			252, 253, 254, 255, 255, 0, 0, 255, 253, 251, 249, 248, 248, 249, 251, 252, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 1, 2,
+			2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 1, 0, 254, 254, 254, 1, 2, 3, 3, 3, 3, 0, 0, 0, 253, 253, 254, 0,
+			1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 5, 2, 5, 6, 6, 6, 3, 6, 6, 3, 3, 4, 4, 4,
+			1, 1, 2, 2, 3, 4, 4, 1, 1, 255, 255, 255, 0, 253, 0, 254, 254, 255, 255, 255, 252, 252, 253, 253, 253, 250, 250, 250, 250, 250,
+			250, 250, 250, 250, 250, 250, 250, 252, 249, 249, 252, 252, 251, 251, 254, 254, 0, 0, 0, 255, 255, 1, 1, 0, 0, 255, 255, 2, 5, 5,
+			4, 4, 3, 2, 2, 2, 2, 5, 5, 5, 4, 4, 3, 3, 2, 2, 2, 5, 5, 6, 9, 9, 9, 9, 5, 1, 0, 1, 1, 1,
+			1, 1, 1, 2, 2, 2, 2, 2, 2, 255, 255, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 255, 255, 255, 255, 255, 1, 255, 255, 1, 255, 1, 2, 5, 2, 1, 1, 1, 255, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0,
+			0, 0, 253, 253, 253, 253, 254, 0, 1, 1, 1, 1, 0, 254, 254, 0, 1, 1, 255, 0, 0, 254, 254, 0, 0, 255, 0, 0, 0, 254,
+			0, 0, 0, 0, 3, 0, 3, 0, 254, 252, 249, 253, 0, 255, 1, 7, 27, 58, 60, 55, 18, 245, 221, 212, 188, 188, 210, 251, 40, 62,
+			54, 29, 5, 243, 222, 205, 201, 222, 1, 27, 44, 43, 31, 17, 0, 236, 219, 210, 218, 236, 0, 16, 19, 24, 16, 2, 240, 230, 221, 246,
+			16, 20, 36, 22, 15, 251, 237, 243, 237, 0, 4, 8, 9, 57, 46, 9, 220, 224, 247, 241, 246, 254, 54, 31, 11, 245, 226, 245, 242, 246,
+			254, 249, 252, 4, 10, 17, 36, 255, 225, 222, 243, 245, 249, 27, 21, 23, 13, 244, 238, 232, 236, 3, 12, 3, 19, 11, 9, 2, 239, 242,
+			243, 254, 5, 3, 15, 22, 16, 10, 3, 5, 11, 17, 22, 25, 25, 13, 255, 240, 236, 238, 254, 5, 12, 12, 33, 29, 71, 24, 253, 231,
+			240, 227, 212, 220, 244, 22, 24, 0, 223, 234, 232, 0, 240, 232, 234, 237, 219, 222, 239, 250, 20, 15, 5, 252, 0, 240, 245, 255, 0, 11,
+			20, 17, 9, 10, 9, 6, 6, 8, 0, 12, 14, 13, 16, 11, 1, 250, 250, 251, 253, 0, 252, 2, 3, 249, 244, 240, 241, 246, 250, 253,
+			246, 248, 248, 252, 255, 254, 252, 248, 246, 246, 251, 251, 255, 9, 17, 21, 19, 11, 5, 0, 253, 252, 248, 252, 4, 16, 22, 22, 20, 9,
+			4, 0, 250, 249, 250, 5, 11, 13, 16, 11, 0, 248, 248, 254, 253, 4, 13, 21, 21, 13, 8, 4, 0, 253, 0, 255, 9, 19, 25, 29,
+			19, 13, 2, 252, 252, 254, 0, 5, 11, 13, 10, 3, 253, 250, 247, 245, 243, 247, 249, 254, 252, 253, 252, 247, 246, 246, 243, 244, 248, 249,
+			249, 248, 245, 244, 244, 247, 251, 253, 3, 3, 4, 250, 242, 244, 250, 244, 247, 254, 9, 15, 19, 17, 8, 255, 243, 238, 237, 240, 246, 2,
+			17, 25, 18, 8, 252, 245, 239, 233, 240, 252, 6, 14, 11, 9, 7, 255, 245, 236, 236, 250, 3, 12, 19, 18, 10, 3, 243, 227, 224, 228,
+			237, 254, 10, 20, 18, 4, 241, 230, 226, 229, 235, 241, 247, 250, 252, 251, 248, 245, 244, 246, 254, 9, 19, 19, 16, 9, 0, 250, 248, 251,
+			6, 18, 29, 32, 24, 18, 11, 6, 3, 6, 11, 22, 23, 21, 24, 20, 16, 9, 8, 8, 9, 12, 8, 0, 250, 245, 248, 2, 16, 39,
+			54, 65, 66, 62, 51, 35, 19, 4, 255, 0, 10, 22, 28, 28, 27, 20, 15, 4, 253, 249, 242, 234, 230, 222, 217, 213, 212, 215, 218, 220,
+			226, 228, 233, 233, 230, 225, 220, 215, 214, 214, 220, 227, 238, 249, 0, 7, 12, 7, 1, 252, 250, 249, 249, 255, 2, 8, 8, 8, 7, 10,
+			10, 14, 18, 22, 23, 23, 18, 11, 6, 0, 0, 254, 1, 3, 12, 17, 19, 19, 8, 2, 248, 240, 236, 240, 244, 249, 253, 0, 3, 2,
+			1, 253, 252, 251, 253, 252, 255, 1, 4, 7, 5, 1, 0, 2, 6, 7, 14, 13, 9, 0, 248, 243, 239, 235, 237, 241, 247, 1, 9, 8,
+			0, 246, 238, 229, 227, 231, 241, 252, 2, 6, 7, 6, 3, 254, 248, 242, 244, 247, 253, 0, 3, 8, 3, 251, 245, 243, 249, 255, 7, 17,
+			16, 7, 251, 246, 252, 253, 1, 3, 6, 6, 5, 2, 255, 250, 246, 242, 239, 238, 238, 239, 237, 234, 229, 217, 205, 205, 241, 32, 85, 113,
+			111, 109, 102, 98, 82, 46, 23, 18, 25, 46, 64, 73, 80, 73, 65, 54, 41, 39, 34, 26, 16, 253, 234, 217, 208, 210, 210, 214, 226, 225,
+			225, 221, 216, 211, 207, 198, 195, 194, 186, 185, 187, 195, 213, 233, 249, 5, 7, 3, 249, 245, 243, 245, 251, 255, 5, 11, 7, 5, 4, 8,
+			13, 22, 27, 28, 25, 21, 10, 0, 248, 246, 247, 250, 255, 253, 254, 255, 0, 254, 255, 255, 251, 247, 243, 238, 237, 237, 244, 248, 251, 254,
+			253, 255, 1, 4, 6, 8, 7, 5, 4, 5, 1, 4, 4, 9, 10, 9, 10, 15, 9, 7, 2, 0, 2, 6, 7, 7, 3, 255, 253, 247,
+			251, 2, 6, 2, 250, 244, 240, 247, 251, 255, 1, 0, 0, 254, 0, 252, 255, 1, 6, 3, 2, 8, 7, 8, 1, 1, 7, 14, 11, 11,
+			10, 9, 4, 254, 250, 0, 4, 9, 7, 8, 3, 254, 253, 0, 253, 255, 252, 254, 9, 9, 12, 13, 11, 4, 0, 249, 248, 248, 246, 253,
+			1, 6, 10, 6, 7, 3, 251, 243, 243, 244, 253, 1, 1, 1, 254, 2, 255, 251, 251, 0, 0, 0, 253, 254, 254, 253, 252, 252, 251, 251,
+			252, 254, 255, 0, 0, 253, 249, 245, 244, 244, 247, 0, 10, 22, 34, 41, 37, 32, 19, 10, 6, 7, 12, 17, 23, 24, 21, 19, 16, 14,
+			16, 15, 17, 20, 14, 8, 2, 249, 243, 241, 244, 246, 249, 251, 253, 255, 252, 250, 251, 249, 246, 243, 239, 232, 228, 233, 238, 243, 248, 248,
+			248, 248, 243, 239, 238, 242, 242, 250, 249, 248, 248, 247, 246, 245, 248, 252, 2, 2, 9, 4, 3, 3, 2, 2, 2, 1, 254, 0, 0, 4,
+			4, 9, 8, 4, 4, 4, 0, 0, 0, 0, 64, 4, 31, 0, 0, 2, 7, 12, 13, 8, 3, 255, 251, 245, 242, 243, 251, 3, 7, 5,
+			255, 249, 248, 253, 1, 6, 8, 5, 0, 249, 246, 252, 5, 13, 12, 4, 252, 248, 249, 251, 255, 4, 8, 8, 2, 252, 251, 0, 6, 7,
+			4, 255, 252, 252, 252, 252, 253, 253, 254, 255, 2, 9, 15, 16, 11, 3, 251, 244, 240, 240, 248, 3, 13, 15, 9, 0, 248, 243, 242, 246,
+			0, 8, 15, 15, 9, 0, 248, 245, 248, 254, 1, 5, 8, 8, 4, 253, 246, 246, 251, 2, 9, 14, 14, 8, 253, 239, 232, 236, 248, 4,
+			15, 22, 20, 9, 247, 230, 226, 238, 3, 27, 40, 39, 26, 8, 247, 234, 232, 245, 9, 31, 51, 65, 66, 45, 4, 216, 186, 181, 201, 235,
+			10, 30, 28, 7, 234, 210, 202, 214, 236, 2, 19, 27, 24, 12, 253, 237, 226, 222, 227, 243, 8, 30, 38, 29, 8, 245, 234, 237, 250, 11,
+			26, 32, 26, 11, 253, 242, 242, 249, 2, 10, 15, 15, 11, 5, 0, 253, 250, 249, 251, 0, 8, 14, 16, 9, 255, 244, 241, 245, 251, 0,
+			5, 7, 6, 2, 255, 252, 250, 250, 252, 0, 6, 9, 7, 2, 255, 254, 254, 0, 0, 1, 2, 3, 4, 4, 3, 1, 0, 0, 1, 2,
+			3, 5, 5, 3, 0, 254, 253, 254, 255, 0, 1, 0, 253, 250, 251, 254, 0, 0, 0, 1, 1, 0, 253, 251, 252, 254, 255, 255, 254, 255,
+			0, 255, 255, 255, 255, 254, 254, 0, 0, 1, 0, 0, 0, 2, 2, 1, 0, 255, 0, 0, 1, 3, 4, 3, 2, 1, 0, 0, 0, 2,
+			4, 6, 6, 5, 3, 3, 4, 3, 0, 254, 253, 254, 0, 2, 2, 0, 0, 1, 2, 1, 0, 255, 255, 0, 1, 2, 0, 0, 255, 0,
+			255, 252, 251, 251, 254, 0, 1, 1, 0, 0, 254, 252, 252, 254, 0, 1, 3, 2, 0, 254, 253, 254, 255, 0, 1, 2, 1, 0, 0, 0,
+			2, 3, 3, 3, 2, 2, 1, 1, 1, 2, 2, 3, 2, 0, 255, 255, 1, 4, 4, 2, 0, 0, 0, 0, 3, 15, 29, 28, 0, 214,
+			196, 219, 4, 32, 32, 16, 0, 249, 241, 233, 234, 252, 19, 32, 23, 1, 240, 233, 238, 247, 0, 9, 15, 16, 6, 246, 235, 238, 253, 13,
+			23, 18, 4, 250, 254, 18, 45, 54, 24, 223, 180, 186, 233, 29, 56, 55, 43, 30, 14, 252, 241, 244, 244, 216, 165, 130, 153, 228, 51, 87,
+			80, 59, 43, 20, 234, 188, 173, 199, 242, 14, 23, 26, 34, 39, 31, 16, 9, 14, 22, 19, 4, 239, 223, 223, 238, 254, 2, 251, 240, 239,
+			250, 7, 14, 14, 11, 4, 247, 229, 219, 226, 244, 3, 12, 19, 29, 40, 45, 44, 39, 29, 11, 246, 226, 217, 220, 229, 236, 241, 247, 255,
+			2, 3, 2, 5, 14, 25, 28, 23, 15, 10, 10, 8, 0, 244, 238, 240, 247, 253, 2, 10, 18, 23, 27, 28, 24, 11, 248, 230, 221, 224,
+			233, 243, 251, 0, 3, 0, 252, 248, 247, 245, 244, 246, 253, 12, 31, 44, 41, 26, 7, 250, 244, 242, 244, 251, 4, 9, 4, 249, 238, 234,
+			236, 241, 247, 3, 18, 29, 27, 14, 1, 254, 255, 252, 243, 235, 234, 242, 253, 4, 10, 14, 15, 10, 0, 243, 234, 235, 244, 0, 9, 14,
+			13, 10, 5, 255, 250, 248, 249, 250, 248, 246, 247, 251, 2, 10, 16, 17, 11, 0, 246, 240, 242, 251, 4, 11, 10, 4, 253, 248, 251, 2,
+			9, 13, 12, 8, 3, 254, 250, 247, 248, 251, 254, 1, 6, 11, 16, 16, 10, 1, 248, 243, 244, 248, 253, 1, 4, 6, 6, 4, 1, 255,
+			255, 0, 3, 2, 0, 253, 253, 255, 4, 8, 9, 5, 255, 247, 243, 244, 248, 254, 1, 6, 12, 16, 14, 7, 0, 253, 250, 248, 249, 253,
+			2, 6, 5, 1, 255, 0, 2, 2, 0, 254, 253, 255, 0, 0, 0, 0, 0, 254, 253, 253, 1, 6, 11, 11, 7, 0, 245, 238, 239, 247,
+			0, 6, 9, 9, 9, 8, 5, 2, 0, 251, 247, 248, 253, 3, 10, 14, 11, 3, 252, 246, 244, 246, 251, 0, 6, 9, 9, 7, 2, 253,
+			248, 246, 247, 251, 0, 6, 11, 11, 5, 255, 250, 248, 248, 252, 1, 7, 10, 8, 2, 254, 249, 247, 247, 250, 255, 2, 5, 6, 4, 0,
+			249, 240, 235, 236, 245, 5, 26, 43, 48, 39, 18, 248, 227, 221, 233, 4, 38, 66, 75, 60, 26, 244, 212, 196, 199, 218, 248, 16, 27, 19,
+			0, 232, 216, 210, 214, 229, 252, 17, 32, 32, 19, 254, 231, 216, 215, 228, 252, 19, 32, 30, 16, 254, 238, 234, 241, 0, 16, 29, 30, 21,
+			8, 254, 248, 247, 249, 254, 5, 14, 19, 16, 9, 0, 250, 246, 246, 253, 5, 11, 11, 7, 1, 252, 247, 244, 246, 252, 4, 9, 8, 3,
+			254, 251, 250, 253, 0, 1, 3, 4, 4, 3, 3, 1, 0, 254, 254, 0, 4, 5, 5, 3, 2, 1, 0, 0, 0, 3, 5, 6, 5, 2,
+			0, 252, 251, 252, 255, 1, 3, 3, 2, 0, 254, 253, 254, 255, 255, 255, 255, 0, 0, 255, 253, 251, 250, 252, 255, 0, 1, 0, 255, 253,
+			253, 252, 252, 253, 0, 1, 1, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 1, 3, 5, 5, 4, 3, 3, 3, 3, 1, 0, 0, 1,
+			2, 3, 3, 2, 2, 1, 0, 0, 0, 1, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 253, 253, 254, 255, 0, 1,
+			2, 0, 253, 249, 247, 249, 253, 0, 4, 4, 4, 4, 4, 3, 1, 254, 251, 249, 250, 254, 1, 3, 3, 3, 2, 0, 0, 0, 0, 2,
+			3, 2, 0, 0, 1, 3, 3, 1, 0, 1, 2, 3, 4, 3, 1, 0, 255, 252, 252, 253, 0, 2, 4, 3, 1, 0, 0, 1, 2, 1,
+			0, 0, 0, 254, 253, 255, 1, 2, 0, 251, 250, 255, 3, 4, 0, 254, 255, 1, 2, 0, 254, 252, 252, 253, 253, 252, 255, 7, 15, 18,
+			19, 25, 21, 0, 232, 235, 6, 26, 5, 216, 200, 241, 41, 58, 27, 252, 5, 44, 55, 13, 207, 179, 145, 0, 4, 0, 69, 0, 208, 0,
+			128, 2, 160, 5, 56, 9, 128, 12, 148, 17, 244, 26, 60, 5, 21, 12, 9, 15, 6, 6, 0, 0, 187, 125, 137, 137, 150, 175, 187, 125,
+			137, 44, 45, 70, 130, 44, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			69, 0, 208, 0, 128, 2, 160, 5, 56, 9, 128, 12, 148, 17, 244, 26, 45, 5, 22, 12, 9, 16, 6, 6, 0, 0, 187, 125, 137, 137,
+			150, 175, 187, 125, 137, 44, 45, 70, 130, 43, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 69, 0, 192, 0, 24, 2, 80, 5, 136, 9, 128, 12, 148, 17, 244, 26, 40, 9, 19, 25, 25, 19, 6, 6, 0, 0,
 			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 45, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 3, 15, 38, 0, 253, 255, 1, 1, 0, 253, 252, 253, 253, 255, 252, 253, 0, 0, 1, 254, 252, 253,
-			2, 10, 19, 28, 37, 42, 43, 32, 0, 224, 200, 200, 223, 243, 253, 252, 247, 246, 242, 244, 1, 17, 31, 30, 13, 0, 245, 241, 248, 255,
-			6, 9, 9, 12, 13, 15, 16, 11, 6, 0, 251, 248, 245, 245, 244, 242, 242, 242, 247, 255, 7, 14, 14, 8, 255, 248, 246, 248, 254, 1,
-			2, 3, 4, 5, 8, 12, 17, 19, 19, 16, 12, 6, 253, 242, 235, 234, 236, 240, 243, 247, 251, 253, 253, 0, 4, 10, 13, 14, 12, 5,
-			0, 255, 255, 2, 7, 10, 12, 10, 4, 0, 254, 253, 254, 254, 252, 249, 245, 242, 242, 245, 250, 255, 4, 9, 10, 9, 8, 6, 5, 5,
-			4, 3, 2, 0, 253, 252, 252, 251, 253, 255, 1, 5, 7, 8, 5, 1, 251, 247, 248, 251, 1, 3, 1, 0, 255, 0, 2, 6, 11, 15,
-			14, 9, 255, 244, 237, 238, 244, 249, 253, 255, 0, 1, 254, 253, 255, 3, 6, 4, 5, 9, 9, 4, 2, 6, 21, 33, 33, 23, 2, 237,
-			224, 221, 232, 246, 0, 3, 252, 241, 236, 240, 252, 7, 15, 18, 14, 4, 252, 248, 252, 1, 5, 6, 8, 10, 12, 12, 12, 9, 5, 255,
-			250, 249, 251, 252, 253, 250, 247, 245, 247, 253, 4, 8, 8, 4, 254, 249, 247, 250, 255, 1, 3, 3, 1, 1, 0, 3, 6, 9, 10, 10,
-			8, 4, 2, 0, 0, 0, 0, 255, 252, 251, 250, 252, 254, 253, 254, 254, 0, 255, 253, 252, 252, 254, 255, 0, 4, 10, 12, 12, 9, 5,
-			3, 1, 1, 1, 1, 0, 253, 249, 247, 249, 251, 0, 3, 4, 0, 253, 251, 252, 255, 1, 2, 4, 6, 4, 4, 3, 3, 4, 2, 0,
-			255, 0, 2, 0, 254, 250, 247, 247, 250, 0, 7, 9, 7, 5, 2, 0, 0, 0, 3, 6, 4, 0, 254, 252, 252, 252, 254, 1, 6, 9,
-			6, 3, 2, 254, 247, 246, 248, 252, 254, 252, 249, 250, 252, 254, 0, 6, 11, 9, 5, 2, 0, 6, 10, 17, 29, 33, 22, 5, 240, 231,
-			231, 236, 246, 252, 253, 253, 244, 241, 244, 250, 4, 11, 10, 8, 0, 253, 252, 251, 0, 4, 7, 11, 11, 12, 14, 11, 9, 5, 0, 255,
-			251, 250, 251, 250, 250, 250, 250, 253, 0, 3, 6, 5, 2, 254, 247, 245, 246, 250, 255, 1, 3, 4, 5, 6, 7, 9, 11, 9, 6, 2,
-			0, 253, 255, 3, 3, 2, 3, 255, 246, 246, 249, 254, 2, 255, 253, 253, 255, 252, 249, 0, 5, 7, 6, 4, 6, 8, 6, 4, 3, 2,
-			2, 2, 1, 0, 0, 254, 250, 247, 246, 249, 254, 2, 2, 0, 0, 255, 254, 0, 3, 7, 9, 9, 5, 2, 0, 0, 0, 0, 0, 0,
-			255, 254, 253, 252, 252, 253, 255, 1, 4, 5, 4, 5, 3, 1, 1, 255, 254, 255, 253, 254, 0, 2, 5, 7, 4, 1, 1, 1, 1, 0,
-			255, 253, 253, 253, 251, 251, 255, 4, 6, 7, 2, 255, 250, 246, 245, 247, 253, 0, 0, 0, 1, 2, 6, 9, 14, 21, 26, 28, 22, 8,
-			250, 237, 231, 232, 238, 248, 0, 1, 0, 253, 252, 254, 0, 2, 3, 1, 254, 249, 246, 248, 251, 0, 7, 13, 18, 20, 19, 15, 9, 2,
-			253, 247, 244, 245, 247, 251, 254, 0, 0, 0, 1, 4, 6, 7, 6, 1, 251, 245, 242, 242, 247, 254, 4, 10, 13, 13, 9, 6, 3, 2,
-			2, 1, 1, 0, 254, 254, 255, 0, 3, 1, 253, 250, 252, 255, 0, 0, 1, 0, 253, 247, 246, 253, 3, 8, 11, 13, 11, 6, 1, 254,
-			255, 0, 0, 0, 0, 255, 253, 252, 253, 254, 0, 0, 1, 0, 1, 0, 253, 250, 250, 254, 1, 6, 8, 8, 7, 5, 0, 255, 0, 1,
-			2, 2, 2, 0, 254, 250, 250, 252, 0, 2, 1, 0, 0, 0, 0, 0, 2, 5, 5, 1, 255, 254, 253, 254, 0, 1, 3, 3, 3, 3,
-			4, 5, 3, 3, 0, 252, 250, 252, 255, 1, 2, 0, 254, 253, 253, 251, 255, 2, 4, 5, 0, 250, 249, 251, 254, 0, 4, 6, 6, 6,
-			7, 10, 16, 21, 18, 9, 0, 244, 237, 236, 238, 246, 255, 1, 4, 5, 4, 3, 0, 0, 254, 252, 252, 250, 250, 253, 252, 254, 3, 7,
-			13, 16, 14, 12, 7, 2, 253, 248, 247, 249, 251, 253, 255, 0, 3, 4, 5, 6, 5, 3, 255, 251, 248, 248, 249, 251, 253, 0, 1, 3,
-			6, 8, 8, 8, 7, 5, 1, 255, 254, 253, 253, 254, 255, 1, 4, 4, 2, 254, 252, 252, 251, 248, 248, 254, 2, 3, 2, 2, 4, 6,
-			7, 7, 9, 7, 0, 250, 247, 251, 0, 2, 2, 1, 0, 254, 0, 2, 4, 3, 0, 248, 245, 247, 252, 0, 4, 6, 6, 5, 5, 6,
-			11, 13, 6, 251, 242, 245, 254, 1, 3, 0, 0, 253, 246, 253, 0, 5, 8, 4, 254, 251, 253, 252, 6, 11, 12, 11, 255, 246, 251, 255,
-			255, 255, 0, 3, 1, 254, 3, 5, 4, 5, 2, 0, 3, 252, 245, 247, 250, 251, 5, 10, 7, 7, 6, 2, 0, 254, 253, 251, 248, 244,
-			243, 249, 0, 1, 8, 15, 12, 11, 12, 11, 13, 14, 5, 252, 247, 240, 240, 246, 251, 2, 8, 8, 4, 0, 0, 0, 253, 252, 248, 245,
-			247, 247, 251, 2, 7, 7, 11, 9, 10, 11, 9, 5, 1, 254, 250, 249, 249, 251, 255, 2, 4, 6, 6, 5, 1, 254, 250, 248, 251, 253,
-			253, 0, 0, 0, 3, 2, 1, 5, 6, 4, 4, 3, 2, 2, 1, 0, 255, 254, 255, 1, 4, 5, 4, 1, 251, 245, 242, 243, 251, 3,
-			6, 8, 5, 254, 251, 255, 4, 8, 10, 8, 2, 0, 254, 250, 1, 4, 1, 254, 254, 1, 4, 4, 0, 255, 249, 240, 243, 251, 5, 16,
-			14, 9, 4, 1, 252, 244, 251, 5, 9, 14, 7, 0, 254, 241, 236, 255, 3, 3, 10, 3, 252, 1, 2, 249, 245, 252, 16, 23, 13, 253,
-			244, 233, 240, 1, 3, 17, 28, 0, 254, 12, 4, 254, 3, 250, 244, 3, 251, 233, 239, 5, 9, 3, 16, 22, 7, 6, 241, 228, 255, 16,
-			5, 254, 253, 244, 248, 248, 6, 20, 11, 3, 244, 232, 251, 5, 10, 13, 6, 246, 245, 0, 15, 30, 38, 30, 4, 239, 230, 224, 228, 249,
-			6, 8, 10, 5, 252, 255, 2, 1, 254, 251, 246, 249, 251, 254, 6, 5, 2, 5, 3, 4, 12, 15, 10, 6, 1, 246, 239, 243, 250, 251,
-			255, 2, 2, 7, 9, 7, 9, 4, 255, 252, 249, 250, 0, 1, 253, 1, 2, 254, 0, 10, 13, 11, 13, 6, 251, 242, 251, 254, 248, 0,
-			6, 252, 246, 254, 254, 254, 10, 9, 252, 250, 253, 242, 239, 0, 17, 10, 6, 27, 23, 0, 3, 7, 251, 238, 243, 250, 247, 10, 8, 245,
-			247, 4, 0, 251, 20, 32, 10, 252, 248, 236, 236, 238, 233, 243, 32, 15, 2, 29, 3, 248, 5, 15, 0, 1, 27, 242, 239, 213, 196, 253,
-			20, 37, 79, 92, 5, 232, 236, 200, 180, 193, 4, 26, 12, 21, 25, 12, 19, 28, 235, 255, 36, 3, 237, 236, 235, 227, 223, 228, 248, 28,
-			64, 58, 39, 28, 255, 221, 205, 201, 210, 246, 255, 254, 18, 32, 23, 12, 21, 30, 30, 13, 249, 245, 246, 240, 223, 236, 255, 2, 14, 21,
-			21, 20, 22, 255, 235, 232, 231, 230, 239, 248, 3, 8, 7, 6, 8, 10, 9, 6, 2, 3, 0, 248, 242, 244, 251, 0, 7, 14, 19, 20,
-			14, 6, 250, 245, 241, 240, 240, 247, 3, 9, 9, 10, 8, 8, 6, 3, 2, 1, 251, 249, 249, 248, 248, 250, 1, 10, 17, 23, 16, 9,
-			4, 247, 235, 230, 232, 238, 251, 2, 7, 8, 9, 5, 6, 3, 3, 5, 6, 7, 2, 254, 251, 1, 253, 252, 7, 19, 11, 5, 0, 251,
-			254, 239, 232, 242, 4, 1, 253, 10, 16, 13, 253, 251, 9, 6, 1, 0, 254, 254, 242, 241, 18, 27, 249, 243, 12, 7, 251, 255, 255, 4,
-			255, 232, 231, 255, 14, 23, 15, 3, 11, 18, 246, 232, 247, 251, 0, 0, 0, 12, 17, 1, 243, 248, 2, 0, 2, 4, 4, 255, 247, 240,
-			250, 8, 16, 16, 8, 3, 255, 249, 245, 247, 247, 247, 245, 252, 5, 12, 11, 13, 19, 16, 8, 0, 253, 0, 2, 254, 248, 248, 247, 247,
-			248, 0, 10, 16, 15, 9, 1, 249, 244, 237, 239, 250, 0, 4, 7, 4, 5, 6, 2, 2, 0, 2, 1, 0, 0, 255, 0, 1, 255, 0,
-			2, 2, 2, 5, 5, 1, 255, 253, 253, 251, 253, 1, 1, 1, 2, 1, 4, 2, 254, 253, 0, 1, 3, 2, 1, 2, 3, 3, 0, 1,
-			5, 6, 3, 254, 248, 244, 242, 243, 248, 253, 4, 10, 13, 10, 5, 6, 2, 0, 7, 4, 0, 0, 248, 243, 248, 0, 8, 12, 9, 2,
-			2, 254, 250, 255, 0, 254, 250, 246, 246, 255, 3, 2, 12, 12, 5, 1, 0, 252, 3, 9, 3, 1, 0, 252, 247, 251, 4, 7, 15, 10,
-			255, 255, 250, 241, 241, 247, 248, 255, 3, 254, 0, 9, 14, 13, 12, 11, 7, 3, 252, 245, 251, 0, 253, 254, 253, 251, 252, 254, 255, 2,
-			6, 7, 7, 3, 253, 247, 250, 254, 5, 10, 13, 7, 1, 249, 251, 253, 254, 2, 3, 0, 252, 251, 251, 0, 2, 4, 3, 3, 0, 254,
-			255, 253, 1, 0, 0, 4, 2, 2, 4, 3, 2, 11, 13, 5, 255, 248, 247, 248, 248, 250, 255, 3, 5, 6, 4, 3, 3, 254, 249, 249,
-			251, 0, 2, 1, 0, 2, 255, 255, 3, 5, 4, 10, 9, 2, 254, 251, 245, 250, 255, 4, 4, 4, 5, 0, 252, 255, 4, 3, 255, 0,
-			252, 255, 1, 1, 3, 4, 8, 5, 254, 254, 0, 254, 253, 4, 2, 0, 0, 246, 247, 0, 5, 4, 9, 3, 3, 249, 240, 244, 0, 0,
-			8, 21, 11, 1, 255, 253, 251, 3, 9, 9, 255, 249, 238, 233, 237, 251, 2, 17, 24, 24, 7, 254, 254, 3, 11, 15, 6, 252, 2, 23,
-			46, 235, 133, 179, 224, 23, 75, 51, 25, 25, 234, 202, 2, 36, 20, 15, 251, 219, 230, 243, 237, 2, 33, 20, 6, 5, 2, 2, 14, 0,
-			242, 243, 238, 231, 249, 11, 31, 41, 32, 1, 244, 237, 237, 240, 248, 252, 251, 250, 250, 3, 18, 29, 26, 13, 246, 241, 246, 247, 244, 252,
-			0, 253, 0, 255, 5, 13, 6, 1, 7, 2, 0, 245, 246, 255, 3, 255, 247, 250, 4, 15, 20, 29, 31, 12, 246, 230, 226, 232, 243, 3,
-			14, 17, 13, 7, 0, 1, 2, 250, 244, 238, 237, 245, 1, 8, 14, 18, 7, 253, 251, 0, 6, 9, 8, 0, 246, 240, 242, 246, 3, 12,
-			13, 13, 10, 4, 4, 4, 0, 252, 246, 242, 245, 252, 3, 10, 12, 7, 3, 2, 4, 7, 9, 5, 255, 252, 253, 255, 253, 252, 248, 248,
-			250, 249, 255, 254, 255, 254, 255, 0, 1, 5, 5, 7, 8, 3, 1, 253, 251, 254, 13, 15, 10, 10, 255, 244, 247, 253, 2, 4, 4, 249,
-			244, 247, 250, 255, 9, 8, 0, 0, 4, 0, 0, 1, 254, 2, 7, 3, 0, 6, 7, 252, 251, 249, 253, 251, 3, 4, 10, 10, 246, 232,
-			248, 9, 11, 14, 27, 14, 246, 227, 222, 249, 12, 11, 18, 22, 6, 247, 244, 254, 1, 251, 240, 233, 246, 254, 254, 2, 0, 7, 3, 0,
-			2, 20, 33, 38, 32, 21, 4, 240, 226, 222, 237, 2, 6, 8, 10, 7, 6, 6, 1, 255, 247, 236, 222, 223, 239, 252, 8, 20, 20, 12,
-			3, 255, 0, 7, 11, 4, 249, 243, 242, 243, 252, 10, 20, 21, 12, 4, 5, 6, 4, 0, 250, 249, 250, 252, 0, 4, 8, 9, 2, 0,
-			0, 1, 255, 253, 249, 246, 248, 248, 252, 1, 8, 15, 15, 12, 6, 255, 249, 241, 240, 242, 242, 252, 0, 3, 13, 11, 10, 4, 254, 0,
-			2, 5, 6, 2, 253, 244, 244, 0, 5, 10, 17, 13, 7, 9, 254, 243, 240, 242, 242, 245, 2, 17, 24, 11, 250, 231, 240, 10, 7, 4,
-			3, 2, 9, 16, 15, 20, 28, 246, 208, 197, 230, 6, 16, 28, 31, 9, 254, 244, 226, 244, 17, 19, 6, 11, 7, 246, 232, 228, 245, 10,
-			27, 20, 12, 13, 5, 254, 254, 249, 250, 249, 241, 237, 248, 0, 5, 14, 16, 18, 12, 254, 244, 246, 246, 242, 242, 245, 254, 8, 15, 14,
-			14, 14, 4, 253, 252, 6, 14, 16, 11, 0, 247, 237, 231, 239, 255, 11, 19, 21, 16, 11, 1, 247, 236, 232, 232, 233, 241, 0, 12, 22,
-			24, 18, 7, 251, 244, 247, 252, 5, 12, 11, 253, 245, 247, 249, 2, 10, 16, 13, 4, 253, 251, 1, 0, 255, 255, 249, 244, 248, 0, 4,
-			19, 14, 255, 253, 253, 245, 251, 1, 4, 10, 7, 0, 253, 3, 0, 9, 6, 255, 252, 244, 238, 244, 250, 5, 3, 254, 0, 0, 4, 24,
-			23, 23, 13, 255, 246, 244, 242, 246, 236, 239, 0, 5, 245, 4, 14, 17, 20, 6, 249, 0, 12, 253, 247, 255, 251, 253, 248, 0, 4, 12,
-			13, 4, 1, 4, 249, 250, 243, 249, 2, 253, 251, 252, 9, 15, 18, 9, 7, 2, 247, 240, 237, 243, 254, 2, 9, 12, 13, 9, 8, 9,
-			9, 0, 243, 233, 237, 245, 255, 7, 10, 1, 4, 10, 10, 12, 14, 3, 241, 239, 240, 249, 8, 16, 8, 251, 248, 245, 253, 17, 25, 12,
-			1, 239, 226, 225, 245, 4, 14, 18, 16, 6, 255, 255, 253, 255, 6, 6, 1, 1, 10, 14, 15, 10, 0, 249, 244, 241, 245, 0, 9, 8,
-			5, 1, 255, 251, 250, 248, 246, 248, 248, 249, 0, 8, 13, 11, 7, 0, 250, 247, 253, 3, 7, 10, 4, 252, 253, 0, 0, 4, 8, 4,
-			1, 0, 254, 2, 4, 255, 249, 245, 248, 253, 8, 19, 25, 19, 4, 245, 238, 238, 247, 5, 12, 13, 6, 253, 251, 253, 255, 255, 254, 0,
-			252, 245, 246, 250, 0, 0, 3, 6, 6, 7, 4, 2, 1, 1, 254, 249, 249, 247, 250, 0, 4, 8, 16, 15, 17, 21, 33, 35, 23, 255,
-			228, 203, 181, 175, 214, 16, 67, 82, 56, 8, 227, 212, 208, 241, 31, 60, 45, 12, 236, 207, 213, 226, 235, 11, 43, 39, 34, 34, 23, 250,
-			225, 212, 205, 225, 249, 5, 24, 36, 36, 20, 7, 249, 236, 241, 239, 248, 5, 12, 6, 253, 245, 241, 233, 239, 244, 2, 21, 28, 26, 14,
-			253, 248, 253, 10, 22, 39, 40, 26, 2, 239, 231, 234, 244, 249, 249, 254, 254, 255, 0, 0, 254, 246, 239, 233, 238, 249, 3, 11, 11, 7,
-			254, 245, 245, 254, 10, 21, 20, 10, 255, 248, 246, 250, 1, 8, 15, 15, 8, 3, 1, 6, 8, 11, 6, 0, 251, 246, 248, 250, 253, 254,
-			0, 0, 2, 5, 11, 10, 9, 2, 248, 237, 230, 232, 237, 247, 253, 1, 4, 8, 13, 14, 13, 16, 10, 2, 248, 246, 249, 255, 1, 8,
-			11, 9, 6, 2, 255, 0, 5, 5, 1, 252, 242, 244, 245, 244, 255, 8, 13, 13, 9, 7, 3, 253, 250, 249, 242, 246, 253, 5, 4, 10,
-			8, 0, 253, 8, 10, 0, 2, 249, 237, 240, 252, 9, 5, 0, 8, 12, 9, 21, 38, 19, 250, 226, 203, 211, 231, 250, 24, 34, 27, 7,
-			245, 231, 237, 255, 250, 255, 11, 10, 7, 8, 18, 37, 45, 30, 7, 252, 234, 222, 230, 245, 11, 15, 4, 247, 242, 251, 0, 3, 8, 1,
-			249, 235, 224, 233, 244, 250, 0, 3, 9, 11, 14, 18, 20, 18, 11, 251, 240, 236, 242, 0, 10, 17, 21, 17, 12, 7, 6, 6, 2, 0,
-			252, 247, 248, 245, 241, 244, 252, 0, 6, 9, 10, 10, 8, 255, 251, 247, 245, 245, 247, 251, 5, 10, 6, 5, 254, 251, 253, 1, 2, 3,
-			1, 255, 252, 252, 254, 4, 7, 2, 253, 255, 7, 17, 19, 12, 12, 6, 243, 222, 231, 246, 0, 11, 18, 19, 10, 249, 234, 237, 1, 19,
-			18, 4, 242, 233, 237, 248, 13, 23, 24, 18, 5, 250, 247, 246, 250, 3, 254, 247, 255, 0, 255, 3, 1, 255, 6, 6, 11, 20, 10, 255,
-			247, 239, 242, 0, 252, 252, 6, 10, 0, 3, 0, 1, 11, 7, 251, 247, 252, 244, 250, 1, 10, 10, 0, 247, 244, 253, 4, 1, 255, 1,
-			2, 0, 0, 255, 6, 16, 13, 15, 18, 23, 13, 254, 245, 239, 241, 245, 245, 254, 6, 5, 2, 2, 0, 0, 253, 245, 241, 243, 246, 247,
-			253, 1, 8, 7, 5, 5, 4, 7, 7, 11, 7, 4, 254, 247, 247, 252, 3, 11, 11, 3, 1, 0, 0, 3, 7, 6, 0, 253, 251, 0,
-			0, 251, 249, 255, 253, 1, 13, 13, 12, 8, 248, 240, 241, 238, 242, 252, 255, 2, 5, 0, 255, 10, 15, 7, 6, 10, 2, 251, 251, 0,
-			5, 249, 252, 248, 253, 0, 33, 20, 8, 3, 240, 235, 244, 253, 2, 7, 249, 8, 19, 2, 1, 252, 240, 237, 232, 254, 24, 34, 26, 11,
-			248, 238, 245, 240, 11, 23, 21, 7, 1, 245, 225, 213, 239, 15, 22, 26, 16, 249, 250, 241, 243, 255, 5, 13, 7, 16, 5, 246, 235, 253,
-			255, 9, 26, 19, 16, 2, 240, 230, 237, 253, 253, 237, 226, 0, 11, 24, 24, 21, 1, 251, 249, 241, 252, 12, 4, 4, 9, 6, 8, 29,
-			31, 13, 250, 235, 231, 240, 6, 10, 4, 3, 252, 234, 232, 251, 2, 7, 8, 7, 250, 248, 243, 239, 248, 0, 0, 2, 11, 11, 11, 13,
-			6, 2, 253, 249, 247, 250, 3, 6, 9, 6, 8, 3, 3, 5, 9, 11, 6, 0, 248, 245, 243, 247, 3, 10, 10, 8, 10, 6, 1, 1,
-			0, 1, 251, 244, 231, 226, 230, 239, 250, 3, 13, 20, 20, 10, 8, 6, 6, 2, 254, 250, 252, 255, 1, 11, 16, 15, 11, 2, 1, 1,
-			0, 247, 240, 236, 235, 240, 247, 1, 13, 17, 17, 10, 5, 6, 6, 3, 6, 4, 255, 245, 241, 247, 252, 5, 7, 6, 1, 253, 252, 245,
-			240, 253, 11, 12, 12, 6, 2, 1, 0, 5, 7, 10, 2, 247, 243, 237, 235, 248, 252, 254, 0, 255, 250, 249, 250, 255, 248, 252, 0, 10,
-			17, 24, 32, 45, 55, 58, 47, 17, 236, 205, 203, 226, 2, 18, 14, 248, 222, 213, 218, 238, 0, 13, 11, 0, 247, 238, 234, 236, 241, 247,
-			251, 4, 17, 34, 45, 42, 20, 253, 236, 234, 237, 253, 10, 16, 15, 11, 7, 11, 21, 27, 26, 14, 3, 249, 238, 233, 231, 231, 239, 245,
-			0, 10, 20, 26, 18, 3, 233, 212, 211, 218, 231, 247, 9, 24, 26, 27, 24, 24, 22, 21, 16, 3, 248, 239, 235, 236, 238, 249, 4, 11,
-			18, 18, 16, 12, 7, 252, 238, 232, 225, 228, 241, 4, 24, 36, 34, 22, 12, 255, 245, 246, 245, 245, 244, 242, 245, 249, 0, 10, 11, 7,
-			2, 2, 13, 11, 0, 246, 244, 240, 243, 8, 26, 24, 20, 9, 2, 5, 250, 234, 227, 226, 218, 224, 236, 237, 11, 27, 26, 18, 14, 13,
-			14, 18, 33, 49, 60, 44, 8, 232, 202, 198, 216, 248, 23, 43, 38, 14, 247, 234, 231, 231, 225, 220, 223, 227, 237, 250, 4, 16, 17, 11,
-			3, 0, 8, 17, 24, 22, 10, 0, 237, 230, 232, 247, 13, 29, 38, 37, 33, 22, 6, 253, 243, 238, 237, 238, 246, 6, 17, 14, 10, 3,
-			254, 253, 250, 251, 255, 253, 246, 228, 220, 219, 225, 238, 255, 15, 27, 36, 37, 25, 13, 5, 0, 251, 249, 0, 2, 2, 5, 4, 3, 0,
-			250, 248, 250, 255, 250, 247, 3, 248, 237, 251, 3, 14, 33, 34, 19, 7, 1, 255, 247, 252, 255, 240, 235, 250, 244, 246, 3, 250, 244, 12,
-			21, 15, 4, 253, 3, 6, 242, 233, 254, 19, 30, 17, 3, 4, 9, 249, 234, 236, 246, 0, 0, 255, 0, 5, 6, 2, 4, 9, 1, 251,
-			248, 241, 235, 240, 239, 251, 11, 9, 4, 13, 21, 21, 26, 29, 27, 22, 10, 247, 230, 230, 238, 241, 252, 7, 12, 12, 11, 7, 3, 255,
-			244, 232, 226, 226, 231, 240, 250, 2, 8, 10, 11, 12, 13, 15, 16, 13, 8, 1, 252, 249, 247, 247, 250, 253, 0, 10, 19, 25, 21, 14,
-			3, 249, 239, 240, 244, 248, 255, 6, 10, 13, 16, 13, 7, 0, 248, 247, 240, 238, 240, 241, 241, 245, 248, 252, 2, 9, 15, 19, 13, 6,
-			1, 253, 248, 249, 0, 6, 3, 9, 14, 10, 14, 18, 1, 252, 252, 244, 243, 251, 239, 250, 5, 0, 4, 25, 7, 6, 255, 228, 245, 5,
-			13, 4, 247, 246, 2, 251, 17, 18, 5, 8, 253, 229, 233, 5, 9, 8, 6, 234, 235, 0, 8, 27, 37, 19, 8, 255, 242, 236, 0, 254,
-			247, 250, 250, 247, 6, 0, 2, 16, 7, 245, 7, 250, 241, 2, 0, 247, 1, 0, 254, 4, 7, 253, 255, 7, 15, 15, 21, 25, 17, 6,
-			248, 235, 237, 244, 247, 2, 8, 8, 6, 4, 2, 254, 247, 240, 234, 235, 243, 253, 4, 4, 7, 8, 3, 3, 6, 6, 6, 6, 4, 2,
-			255, 250, 247, 249, 250, 255, 7, 11, 13, 16, 15, 8, 1, 251, 250, 250, 250, 247, 248, 250, 0, 8, 13, 13, 12, 5, 255, 253, 0, 2,
-			4, 6, 5, 253, 240, 234, 236, 239, 240, 245, 255, 7, 11, 13, 16, 11, 5, 0, 251, 251, 1, 5, 6, 12, 16, 11, 0, 249, 243, 249,
-			2, 9, 7, 6, 3, 244, 240, 246, 248, 1, 16, 3, 0, 9, 6, 245, 253, 254, 246, 251, 11, 17, 16, 12, 4, 246, 245, 255, 252, 238,
-			0, 12, 0, 5, 6, 253, 3, 13, 245, 243, 7, 8, 249, 1, 254, 0, 49, 0, 3, 0, 5, 0, 76, 0, 44, 1, 20, 5, 84, 11,
-			112, 13, 135, 15, 160, 28, 10, 33, 11, 58, 50, 34, 55, 26, 13, 0, 150, 120, 120, 120, 120, 120, 90, 120, 75, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 124, 0, 184, 1,
-			20, 5, 84, 11, 52, 13, 110, 15, 160, 28, 39, 44, 29, 70, 56, 46, 61, 29, 14, 0, 120, 120, 120, 120, 120, 120, 60, 60, 120, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			208, 0, 13, 2, 106, 5, 84, 11, 168, 12, 141, 14, 160, 28, 0, 90, 41, 72, 106, 78, 67, 41, 24, 0, 120, 135, 150, 120, 120, 120,
-			120, 165, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 45, 0, 2, 0, 5, 0, 148, 0, 120, 1, 100, 5, 84, 11, 32, 13, 135, 15, 224, 28, 45, 35, 32, 58, 36, 40, 51, 27,
-			10, 0, 102, 105, 127, 120, 120, 120, 102, 90, 127, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 1, 7, 3, 153, 4, 84, 11, 208, 12, 241, 14, 224, 28, 0, 101, 47, 95,
-			101, 61, 67, 43, 20, 0, 195, 135, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 45, 0, 2, 0, 5, 0, 208, 0, 249, 1, 160, 5, 84, 11, 52, 13,
-			135, 15, 192, 28, 45, 35, 33, 58, 48, 44, 49, 28, 11, 0, 150, 120, 120, 120, 120, 120, 90, 120, 120, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 53, 2, 172, 5,
-			84, 11, 12, 13, 35, 15, 192, 28, 0, 98, 43, 86, 110, 84, 80, 43, 13, 0, 120, 120, 120, 120, 120, 120, 90, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 3, 0,
-			1, 0, 104, 0, 44, 1, 200, 5, 84, 11, 12, 13, 135, 15, 32, 28, 0, 31, 17, 53, 34, 32, 55, 26, 8, 0, 150, 120, 150, 120,
-			120, 120, 120, 105, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 136, 0, 184, 1, 84, 6, 84, 11, 92, 13, 210, 15, 32, 28, 65, 34, 21, 63, 48, 43, 41, 21, 7, 0,
-			150, 105, 150, 120, 120, 120, 120, 45, 150, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 104, 1, 152, 8, 84, 11, 32, 13, 210, 15, 32, 28, 0, 76, 20, 78, 80, 78,
-			76, 34, 10, 0, 150, 150, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 4, 0, 5, 0, 92, 0, 69, 1, 76, 4, 84, 11, 72, 13, 241, 14,
-			160, 28, 20, 32, 20, 64, 39, 19, 26, 31, 13, 0, 150, 105, 105, 120, 120, 120, 90, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 92, 0, 69, 1, 232, 3, 84, 11,
-			168, 12, 141, 14, 32, 27, 9, 40, 22, 69, 49, 42, 33, 29, 14, 0, 150, 105, 105, 120, 120, 120, 90, 90, 75, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 189, 1,
-			200, 3, 84, 11, 148, 12, 191, 14, 32, 27, 36, 51, 31, 74, 65, 42, 39, 24, 19, 0, 150, 120, 105, 120, 120, 120, 90, 90, 75, 44,
-			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			124, 0, 209, 1, 112, 3, 84, 11, 68, 12, 191, 14, 160, 26, 0, 145, 39, 116, 103, 71, 71, 45, 26, 0, 120, 120, 120, 120, 120, 120,
-			75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 51, 0, 3, 0, 5, 0, 92, 0, 19, 1, 120, 5, 84, 11, 52, 13, 216, 14, 128, 27, 12, 33, 10, 60, 36, 40, 59, 33,
-			11, 0, 150, 105, 135, 120, 120, 120, 75, 75, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 172, 0, 144, 1, 80, 5, 84, 11, 32, 13, 191, 14, 224, 26, 39, 45, 35, 70,
-			52, 50, 58, 33, 15, 0, 150, 105, 150, 120, 120, 120, 75, 60, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 144, 1, 70, 6, 84, 11, 228, 12, 141, 14, 224, 26,
-			0, 116, 48, 135, 71, 71, 67, 43, 17, 0, 120, 90, 150, 120, 120, 120, 45, 60, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 188, 0, 8, 2, 40, 5,
-			140, 10, 128, 12, 91, 14, 0, 27, 34, 69, 36, 83, 77, 49, 57, 38, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90, 120, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0,
-			8, 2, 176, 4, 84, 11, 208, 12, 191, 14, 0, 27, 44, 52, 38, 68, 65, 49, 50, 31, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 192, 0, 24, 2, 80, 5, 136, 9, 128, 12, 148, 17, 244, 26, 0, 9, 19, 25, 25, 19,
+			6, 6, 0, 0, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 45, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 3, 15, 38, 0, 253, 255, 1, 1, 0, 253, 252, 253, 253, 255, 252, 253, 0, 0,
+			1, 254, 252, 253, 2, 10, 19, 28, 37, 42, 43, 32, 0, 224, 200, 200, 223, 243, 253, 252, 247, 246, 242, 244, 1, 17, 31, 30, 13, 0,
+			245, 241, 248, 255, 6, 9, 9, 12, 13, 15, 16, 11, 6, 0, 251, 248, 245, 245, 244, 242, 242, 242, 247, 255, 7, 14, 14, 8, 255, 248,
+			246, 248, 254, 1, 2, 3, 4, 5, 8, 12, 17, 19, 19, 16, 12, 6, 253, 242, 235, 234, 236, 240, 243, 247, 251, 253, 253, 0, 4, 10,
+			13, 14, 12, 5, 0, 255, 255, 2, 7, 10, 12, 10, 4, 0, 254, 253, 254, 254, 252, 249, 245, 242, 242, 245, 250, 255, 4, 9, 10, 9,
+			8, 6, 5, 5, 4, 3, 2, 0, 253, 252, 252, 251, 253, 255, 1, 5, 7, 8, 5, 1, 251, 247, 248, 251, 1, 3, 1, 0, 255, 0,
+			2, 6, 11, 15, 14, 9, 255, 244, 237, 238, 244, 249, 253, 255, 0, 1, 254, 253, 255, 3, 6, 4, 5, 9, 9, 4, 2, 6, 21, 33,
+			33, 23, 2, 237, 224, 221, 232, 246, 0, 3, 252, 241, 236, 240, 252, 7, 15, 18, 14, 4, 252, 248, 252, 1, 5, 6, 8, 10, 12, 12,
+			12, 9, 5, 255, 250, 249, 251, 252, 253, 250, 247, 245, 247, 253, 4, 8, 8, 4, 254, 249, 247, 250, 255, 1, 3, 3, 1, 1, 0, 3,
+			6, 9, 10, 10, 8, 4, 2, 0, 0, 0, 0, 255, 252, 251, 250, 252, 254, 253, 254, 254, 0, 255, 253, 252, 252, 254, 255, 0, 4, 10,
+			12, 12, 9, 5, 3, 1, 1, 1, 1, 0, 253, 249, 247, 249, 251, 0, 3, 4, 0, 253, 251, 252, 255, 1, 2, 4, 6, 4, 4, 3,
+			3, 4, 2, 0, 255, 0, 2, 0, 254, 250, 247, 247, 250, 0, 7, 9, 7, 5, 2, 0, 0, 0, 3, 6, 4, 0, 254, 252, 252, 252,
+			254, 1, 6, 9, 6, 3, 2, 254, 247, 246, 248, 252, 254, 252, 249, 250, 252, 254, 0, 6, 11, 9, 5, 2, 0, 6, 10, 17, 29, 33,
+			22, 5, 240, 231, 231, 236, 246, 252, 253, 253, 244, 241, 244, 250, 4, 11, 10, 8, 0, 253, 252, 251, 0, 4, 7, 11, 11, 12, 14, 11,
+			9, 5, 0, 255, 251, 250, 251, 250, 250, 250, 250, 253, 0, 3, 6, 5, 2, 254, 247, 245, 246, 250, 255, 1, 3, 4, 5, 6, 7, 9,
+			11, 9, 6, 2, 0, 253, 255, 3, 3, 2, 3, 255, 246, 246, 249, 254, 2, 255, 253, 253, 255, 252, 249, 0, 5, 7, 6, 4, 6, 8,
+			6, 4, 3, 2, 2, 2, 1, 0, 0, 254, 250, 247, 246, 249, 254, 2, 2, 0, 0, 255, 254, 0, 3, 7, 9, 9, 5, 2, 0, 0,
+			0, 0, 0, 0, 255, 254, 253, 252, 252, 253, 255, 1, 4, 5, 4, 5, 3, 1, 1, 255, 254, 255, 253, 254, 0, 2, 5, 7, 4, 1,
+			1, 1, 1, 0, 255, 253, 253, 253, 251, 251, 255, 4, 6, 7, 2, 255, 250, 246, 245, 247, 253, 0, 0, 0, 1, 2, 6, 9, 14, 21,
+			26, 28, 22, 8, 250, 237, 231, 232, 238, 248, 0, 1, 0, 253, 252, 254, 0, 2, 3, 1, 254, 249, 246, 248, 251, 0, 7, 13, 18, 20,
+			19, 15, 9, 2, 253, 247, 244, 245, 247, 251, 254, 0, 0, 0, 1, 4, 6, 7, 6, 1, 251, 245, 242, 242, 247, 254, 4, 10, 13, 13,
+			9, 6, 3, 2, 2, 1, 1, 0, 254, 254, 255, 0, 3, 1, 253, 250, 252, 255, 0, 0, 1, 0, 253, 247, 246, 253, 3, 8, 11, 13,
+			11, 6, 1, 254, 255, 0, 0, 0, 0, 255, 253, 252, 253, 254, 0, 0, 1, 0, 1, 0, 253, 250, 250, 254, 1, 6, 8, 8, 7, 5,
+			0, 255, 0, 1, 2, 2, 2, 0, 254, 250, 250, 252, 0, 2, 1, 0, 0, 0, 0, 0, 2, 5, 5, 1, 255, 254, 253, 254, 0, 1,
+			3, 3, 3, 3, 4, 5, 3, 3, 0, 252, 250, 252, 255, 1, 2, 0, 254, 253, 253, 251, 255, 2, 4, 5, 0, 250, 249, 251, 254, 0,
+			4, 6, 6, 6, 7, 10, 16, 21, 18, 9, 0, 244, 237, 236, 238, 246, 255, 1, 4, 5, 4, 3, 0, 0, 254, 252, 252, 250, 250, 253,
+			252, 254, 3, 7, 13, 16, 14, 12, 7, 2, 253, 248, 247, 249, 251, 253, 255, 0, 3, 4, 5, 6, 5, 3, 255, 251, 248, 248, 249, 251,
+			253, 0, 1, 3, 6, 8, 8, 8, 7, 5, 1, 255, 254, 253, 253, 254, 255, 1, 4, 4, 2, 254, 252, 252, 251, 248, 248, 254, 2, 3,
+			2, 2, 4, 6, 7, 7, 9, 7, 0, 250, 247, 251, 0, 2, 2, 1, 0, 254, 0, 2, 4, 3, 0, 248, 245, 247, 252, 0, 4, 6,
+			6, 5, 5, 6, 11, 13, 6, 251, 242, 245, 254, 1, 3, 0, 0, 253, 246, 253, 0, 5, 8, 4, 254, 251, 253, 252, 6, 11, 12, 11,
+			255, 246, 251, 255, 255, 255, 0, 3, 1, 254, 3, 5, 4, 5, 2, 0, 3, 252, 245, 247, 250, 251, 5, 10, 7, 7, 6, 2, 0, 254,
+			253, 251, 248, 244, 243, 249, 0, 1, 8, 15, 12, 11, 12, 11, 13, 14, 5, 252, 247, 240, 240, 246, 251, 2, 8, 8, 4, 0, 0, 0,
+			253, 252, 248, 245, 247, 247, 251, 2, 7, 7, 11, 9, 10, 11, 9, 5, 1, 254, 250, 249, 249, 251, 255, 2, 4, 6, 6, 5, 1, 254,
+			250, 248, 251, 253, 253, 0, 0, 0, 3, 2, 1, 5, 6, 4, 4, 3, 2, 2, 1, 0, 255, 254, 255, 1, 4, 5, 4, 1, 251, 245,
+			242, 243, 251, 3, 6, 8, 5, 254, 251, 255, 4, 8, 10, 8, 2, 0, 254, 250, 1, 4, 1, 254, 254, 1, 4, 4, 0, 255, 249, 240,
+			243, 251, 5, 16, 14, 9, 4, 1, 252, 244, 251, 5, 9, 14, 7, 0, 254, 241, 236, 255, 3, 3, 10, 3, 252, 1, 2, 249, 245, 252,
+			16, 23, 13, 253, 244, 233, 240, 1, 3, 17, 28, 0, 254, 12, 4, 254, 3, 250, 244, 3, 251, 233, 239, 5, 9, 3, 16, 22, 7, 6,
+			241, 228, 255, 16, 5, 254, 253, 244, 248, 248, 6, 20, 11, 3, 244, 232, 251, 5, 10, 13, 6, 246, 245, 0, 15, 30, 38, 30, 4, 239,
+			230, 224, 228, 249, 6, 8, 10, 5, 252, 255, 2, 1, 254, 251, 246, 249, 251, 254, 6, 5, 2, 5, 3, 4, 12, 15, 10, 6, 1, 246,
+			239, 243, 250, 251, 255, 2, 2, 7, 9, 7, 9, 4, 255, 252, 249, 250, 0, 1, 253, 1, 2, 254, 0, 10, 13, 11, 13, 6, 251, 242,
+			251, 254, 248, 0, 6, 252, 246, 254, 254, 254, 10, 9, 252, 250, 253, 242, 239, 0, 17, 10, 6, 27, 23, 0, 3, 7, 251, 238, 243, 250,
+			247, 10, 8, 245, 247, 4, 0, 251, 20, 32, 10, 252, 248, 236, 236, 238, 233, 243, 32, 15, 2, 29, 3, 248, 5, 15, 0, 1, 27, 242,
+			239, 213, 196, 253, 20, 37, 79, 92, 5, 232, 236, 200, 180, 193, 4, 26, 12, 21, 25, 12, 19, 28, 235, 255, 36, 3, 237, 236, 235, 227,
+			223, 228, 248, 28, 64, 58, 39, 28, 255, 221, 205, 201, 210, 246, 255, 254, 18, 32, 23, 12, 21, 30, 30, 13, 249, 245, 246, 240, 223, 236,
+			255, 2, 14, 21, 21, 20, 22, 255, 235, 232, 231, 230, 239, 248, 3, 8, 7, 6, 8, 10, 9, 6, 2, 3, 0, 248, 242, 244, 251, 0,
+			7, 14, 19, 20, 14, 6, 250, 245, 241, 240, 240, 247, 3, 9, 9, 10, 8, 8, 6, 3, 2, 1, 251, 249, 249, 248, 248, 250, 1, 10,
+			17, 23, 16, 9, 4, 247, 235, 230, 232, 238, 251, 2, 7, 8, 9, 5, 6, 3, 3, 5, 6, 7, 2, 254, 251, 1, 253, 252, 7, 19,
+			11, 5, 0, 251, 254, 239, 232, 242, 4, 1, 253, 10, 16, 13, 253, 251, 9, 6, 1, 0, 254, 254, 242, 241, 18, 27, 249, 243, 12, 7,
+			251, 255, 255, 4, 255, 232, 231, 255, 14, 23, 15, 3, 11, 18, 246, 232, 247, 251, 0, 0, 0, 12, 17, 1, 243, 248, 2, 0, 2, 4,
+			4, 255, 247, 240, 250, 8, 16, 16, 8, 3, 255, 249, 245, 247, 247, 247, 245, 252, 5, 12, 11, 13, 19, 16, 8, 0, 253, 0, 2, 254,
+			248, 248, 247, 247, 248, 0, 10, 16, 15, 9, 1, 249, 244, 237, 239, 250, 0, 4, 7, 4, 5, 6, 2, 2, 0, 2, 1, 0, 0, 255,
+			0, 1, 255, 0, 2, 2, 2, 5, 5, 1, 255, 253, 253, 251, 253, 1, 1, 1, 2, 1, 4, 2, 254, 253, 0, 1, 3, 2, 1, 2,
+			3, 3, 0, 1, 5, 6, 3, 254, 248, 244, 242, 243, 248, 253, 4, 10, 13, 10, 5, 6, 2, 0, 7, 4, 0, 0, 248, 243, 248, 0,
+			8, 12, 9, 2, 2, 254, 250, 255, 0, 254, 250, 246, 246, 255, 3, 2, 12, 12, 5, 1, 0, 252, 3, 9, 3, 1, 0, 252, 247, 251,
+			4, 7, 15, 10, 255, 255, 250, 241, 241, 247, 248, 255, 3, 254, 0, 9, 14, 13, 12, 11, 7, 3, 252, 245, 251, 0, 253, 254, 253, 251,
+			252, 254, 255, 2, 6, 7, 7, 3, 253, 247, 250, 254, 5, 10, 13, 7, 1, 249, 251, 253, 254, 2, 3, 0, 252, 251, 251, 0, 2, 4,
+			3, 3, 0, 254, 255, 253, 1, 0, 0, 4, 2, 2, 4, 3, 2, 11, 13, 5, 255, 248, 247, 248, 248, 250, 255, 3, 5, 6, 4, 3,
+			3, 254, 249, 249, 251, 0, 2, 1, 0, 2, 255, 255, 3, 5, 4, 10, 9, 2, 254, 251, 245, 250, 255, 4, 4, 4, 5, 0, 252, 255,
+			4, 3, 255, 0, 252, 255, 1, 1, 3, 4, 8, 5, 254, 254, 0, 254, 253, 4, 2, 0, 0, 246, 247, 0, 5, 4, 9, 3, 3, 249,
+			240, 244, 0, 0, 8, 21, 11, 1, 255, 253, 251, 3, 9, 9, 255, 249, 238, 233, 237, 251, 2, 17, 24, 24, 7, 254, 254, 3, 11, 15,
+			6, 252, 2, 23, 46, 235, 133, 179, 224, 23, 75, 51, 25, 25, 234, 202, 2, 36, 20, 15, 251, 219, 230, 243, 237, 2, 33, 20, 6, 5,
+			2, 2, 14, 0, 242, 243, 238, 231, 249, 11, 31, 41, 32, 1, 244, 237, 237, 240, 248, 252, 251, 250, 250, 3, 18, 29, 26, 13, 246, 241,
+			246, 247, 244, 252, 0, 253, 0, 255, 5, 13, 6, 1, 7, 2, 0, 245, 246, 255, 3, 255, 247, 250, 4, 15, 20, 29, 31, 12, 246, 230,
+			226, 232, 243, 3, 14, 17, 13, 7, 0, 1, 2, 250, 244, 238, 237, 245, 1, 8, 14, 18, 7, 253, 251, 0, 6, 9, 8, 0, 246, 240,
+			242, 246, 3, 12, 13, 13, 10, 4, 4, 4, 0, 252, 246, 242, 245, 252, 3, 10, 12, 7, 3, 2, 4, 7, 9, 5, 255, 252, 253, 255,
+			253, 252, 248, 248, 250, 249, 255, 254, 255, 254, 255, 0, 1, 5, 5, 7, 8, 3, 1, 253, 251, 254, 13, 15, 10, 10, 255, 244, 247, 253,
+			2, 4, 4, 249, 244, 247, 250, 255, 9, 8, 0, 0, 4, 0, 0, 1, 254, 2, 7, 3, 0, 6, 7, 252, 251, 249, 253, 251, 3, 4,
+			10, 10, 246, 232, 248, 9, 11, 14, 27, 14, 246, 227, 222, 249, 12, 11, 18, 22, 6, 247, 244, 254, 1, 251, 240, 233, 246, 254, 254, 2,
+			0, 7, 3, 0, 2, 20, 33, 38, 32, 21, 4, 240, 226, 222, 237, 2, 6, 8, 10, 7, 6, 6, 1, 255, 247, 236, 222, 223, 239, 252,
+			8, 20, 20, 12, 3, 255, 0, 7, 11, 4, 249, 243, 242, 243, 252, 10, 20, 21, 12, 4, 5, 6, 4, 0, 250, 249, 250, 252, 0, 4,
+			8, 9, 2, 0, 0, 1, 255, 253, 249, 246, 248, 248, 252, 1, 8, 15, 15, 12, 6, 255, 249, 241, 240, 242, 242, 252, 0, 3, 13, 11,
+			10, 4, 254, 0, 2, 5, 6, 2, 253, 244, 244, 0, 5, 10, 17, 13, 7, 9, 254, 243, 240, 242, 242, 245, 2, 17, 24, 11, 250, 231,
+			240, 10, 7, 4, 3, 2, 9, 16, 15, 20, 28, 246, 208, 197, 230, 6, 16, 28, 31, 9, 254, 244, 226, 244, 17, 19, 6, 11, 7, 246,
+			232, 228, 245, 10, 27, 20, 12, 13, 5, 254, 254, 249, 250, 249, 241, 237, 248, 0, 5, 14, 16, 18, 12, 254, 244, 246, 246, 242, 242, 245,
+			254, 8, 15, 14, 14, 14, 4, 253, 252, 6, 14, 16, 11, 0, 247, 237, 231, 239, 255, 11, 19, 21, 16, 11, 1, 247, 236, 232, 232, 233,
+			241, 0, 12, 22, 24, 18, 7, 251, 244, 247, 252, 5, 12, 11, 253, 245, 247, 249, 2, 10, 16, 13, 4, 253, 251, 1, 0, 255, 255, 249,
+			244, 248, 0, 4, 19, 14, 255, 253, 253, 245, 251, 1, 4, 10, 7, 0, 253, 3, 0, 9, 6, 255, 252, 244, 238, 244, 250, 5, 3, 254,
+			0, 0, 4, 24, 23, 23, 13, 255, 246, 244, 242, 246, 236, 239, 0, 5, 245, 4, 14, 17, 20, 6, 249, 0, 12, 253, 247, 255, 251, 253,
+			248, 0, 4, 12, 13, 4, 1, 4, 249, 250, 243, 249, 2, 253, 251, 252, 9, 15, 18, 9, 7, 2, 247, 240, 237, 243, 254, 2, 9, 12,
+			13, 9, 8, 9, 9, 0, 243, 233, 237, 245, 255, 7, 10, 1, 4, 10, 10, 12, 14, 3, 241, 239, 240, 249, 8, 16, 8, 251, 248, 245,
+			253, 17, 25, 12, 1, 239, 226, 225, 245, 4, 14, 18, 16, 6, 255, 255, 253, 255, 6, 6, 1, 1, 10, 14, 15, 10, 0, 249, 244, 241,
+			245, 0, 9, 8, 5, 1, 255, 251, 250, 248, 246, 248, 248, 249, 0, 8, 13, 11, 7, 0, 250, 247, 253, 3, 7, 10, 4, 252, 253, 0,
+			0, 4, 8, 4, 1, 0, 254, 2, 4, 255, 249, 245, 248, 253, 8, 19, 25, 19, 4, 245, 238, 238, 247, 5, 12, 13, 6, 253, 251, 253,
+			255, 255, 254, 0, 252, 245, 246, 250, 0, 0, 3, 6, 6, 7, 4, 2, 1, 1, 254, 249, 249, 247, 250, 0, 4, 8, 16, 15, 17, 21,
+			33, 35, 23, 255, 228, 203, 181, 175, 214, 16, 67, 82, 56, 8, 227, 212, 208, 241, 31, 60, 45, 12, 236, 207, 213, 226, 235, 11, 43, 39,
+			34, 34, 23, 250, 225, 212, 205, 225, 249, 5, 24, 36, 36, 20, 7, 249, 236, 241, 239, 248, 5, 12, 6, 253, 245, 241, 233, 239, 244, 2,
+			21, 28, 26, 14, 253, 248, 253, 10, 22, 39, 40, 26, 2, 239, 231, 234, 244, 249, 249, 254, 254, 255, 0, 0, 254, 246, 239, 233, 238, 249,
+			3, 11, 11, 7, 254, 245, 245, 254, 10, 21, 20, 10, 255, 248, 246, 250, 1, 8, 15, 15, 8, 3, 1, 6, 8, 11, 6, 0, 251, 246,
+			248, 250, 253, 254, 0, 0, 2, 5, 11, 10, 9, 2, 248, 237, 230, 232, 237, 247, 253, 1, 4, 8, 13, 14, 13, 16, 10, 2, 248, 246,
+			249, 255, 1, 8, 11, 9, 6, 2, 255, 0, 5, 5, 1, 252, 242, 244, 245, 244, 255, 8, 13, 13, 9, 7, 3, 253, 250, 249, 242, 246,
+			253, 5, 4, 10, 8, 0, 253, 8, 10, 0, 2, 249, 237, 240, 252, 9, 5, 0, 8, 12, 9, 21, 38, 19, 250, 226, 203, 211, 231, 250,
+			24, 34, 27, 7, 245, 231, 237, 255, 250, 255, 11, 10, 7, 8, 18, 37, 45, 30, 7, 252, 234, 222, 230, 245, 11, 15, 4, 247, 242, 251,
+			0, 3, 8, 1, 249, 235, 224, 233, 244, 250, 0, 3, 9, 11, 14, 18, 20, 18, 11, 251, 240, 236, 242, 0, 10, 17, 21, 17, 12, 7,
+			6, 6, 2, 0, 252, 247, 248, 245, 241, 244, 252, 0, 6, 9, 10, 10, 8, 255, 251, 247, 245, 245, 247, 251, 5, 10, 6, 5, 254, 251,
+			253, 1, 2, 3, 1, 255, 252, 252, 254, 4, 7, 2, 253, 255, 7, 17, 19, 12, 12, 6, 243, 222, 231, 246, 0, 11, 18, 19, 10, 249,
+			234, 237, 1, 19, 18, 4, 242, 233, 237, 248, 13, 23, 24, 18, 5, 250, 247, 246, 250, 3, 254, 247, 255, 0, 255, 3, 1, 255, 6, 6,
+			11, 20, 10, 255, 247, 239, 242, 0, 252, 252, 6, 10, 0, 3, 0, 1, 11, 7, 251, 247, 252, 244, 250, 1, 10, 10, 0, 247, 244, 253,
+			4, 1, 255, 1, 2, 0, 0, 255, 6, 16, 13, 15, 18, 23, 13, 254, 245, 239, 241, 245, 245, 254, 6, 5, 2, 2, 0, 0, 253, 245,
+			241, 243, 246, 247, 253, 1, 8, 7, 5, 5, 4, 7, 7, 11, 7, 4, 254, 247, 247, 252, 3, 11, 11, 3, 1, 0, 0, 3, 7, 6,
+			0, 253, 251, 0, 0, 251, 249, 255, 253, 1, 13, 13, 12, 8, 248, 240, 241, 238, 242, 252, 255, 2, 5, 0, 255, 10, 15, 7, 6, 10,
+			2, 251, 251, 0, 5, 249, 252, 248, 253, 0, 33, 20, 8, 3, 240, 235, 244, 253, 2, 7, 249, 8, 19, 2, 1, 252, 240, 237, 232, 254,
+			24, 34, 26, 11, 248, 238, 245, 240, 11, 23, 21, 7, 1, 245, 225, 213, 239, 15, 22, 26, 16, 249, 250, 241, 243, 255, 5, 13, 7, 16,
+			5, 246, 235, 253, 255, 9, 26, 19, 16, 2, 240, 230, 237, 253, 253, 237, 226, 0, 11, 24, 24, 21, 1, 251, 249, 241, 252, 12, 4, 4,
+			9, 6, 8, 29, 31, 13, 250, 235, 231, 240, 6, 10, 4, 3, 252, 234, 232, 251, 2, 7, 8, 7, 250, 248, 243, 239, 248, 0, 0, 2,
+			11, 11, 11, 13, 6, 2, 253, 249, 247, 250, 3, 6, 9, 6, 8, 3, 3, 5, 9, 11, 6, 0, 248, 245, 243, 247, 3, 10, 10, 8,
+			10, 6, 1, 1, 0, 1, 251, 244, 231, 226, 230, 239, 250, 3, 13, 20, 20, 10, 8, 6, 6, 2, 254, 250, 252, 255, 1, 11, 16, 15,
+			11, 2, 1, 1, 0, 247, 240, 236, 235, 240, 247, 1, 13, 17, 17, 10, 5, 6, 6, 3, 6, 4, 255, 245, 241, 247, 252, 5, 7, 6,
+			1, 253, 252, 245, 240, 253, 11, 12, 12, 6, 2, 1, 0, 5, 7, 10, 2, 247, 243, 237, 235, 248, 252, 254, 0, 255, 250, 249, 250, 255,
+			248, 252, 0, 10, 17, 24, 32, 45, 55, 58, 47, 17, 236, 205, 203, 226, 2, 18, 14, 248, 222, 213, 218, 238, 0, 13, 11, 0, 247, 238,
+			234, 236, 241, 247, 251, 4, 17, 34, 45, 42, 20, 253, 236, 234, 237, 253, 10, 16, 15, 11, 7, 11, 21, 27, 26, 14, 3, 249, 238, 233,
+			231, 231, 239, 245, 0, 10, 20, 26, 18, 3, 233, 212, 211, 218, 231, 247, 9, 24, 26, 27, 24, 24, 22, 21, 16, 3, 248, 239, 235, 236,
+			238, 249, 4, 11, 18, 18, 16, 12, 7, 252, 238, 232, 225, 228, 241, 4, 24, 36, 34, 22, 12, 255, 245, 246, 245, 245, 244, 242, 245, 249,
+			0, 10, 11, 7, 2, 2, 13, 11, 0, 246, 244, 240, 243, 8, 26, 24, 20, 9, 2, 5, 250, 234, 227, 226, 218, 224, 236, 237, 11, 27,
+			26, 18, 14, 13, 14, 18, 33, 49, 60, 44, 8, 232, 202, 198, 216, 248, 23, 43, 38, 14, 247, 234, 231, 231, 225, 220, 223, 227, 237, 250,
+			4, 16, 17, 11, 3, 0, 8, 17, 24, 22, 10, 0, 237, 230, 232, 247, 13, 29, 38, 37, 33, 22, 6, 253, 243, 238, 237, 238, 246, 6,
+			17, 14, 10, 3, 254, 253, 250, 251, 255, 253, 246, 228, 220, 219, 225, 238, 255, 15, 27, 36, 37, 25, 13, 5, 0, 251, 249, 0, 2, 2,
+			5, 4, 3, 0, 250, 248, 250, 255, 250, 247, 3, 248, 237, 251, 3, 14, 33, 34, 19, 7, 1, 255, 247, 252, 255, 240, 235, 250, 244, 246,
+			3, 250, 244, 12, 21, 15, 4, 253, 3, 6, 242, 233, 254, 19, 30, 17, 3, 4, 9, 249, 234, 236, 246, 0, 0, 255, 0, 5, 6, 2,
+			4, 9, 1, 251, 248, 241, 235, 240, 239, 251, 11, 9, 4, 13, 21, 21, 26, 29, 27, 22, 10, 247, 230, 230, 238, 241, 252, 7, 12, 12,
+			11, 7, 3, 255, 244, 232, 226, 226, 231, 240, 250, 2, 8, 10, 11, 12, 13, 15, 16, 13, 8, 1, 252, 249, 247, 247, 250, 253, 0, 10,
+			19, 25, 21, 14, 3, 249, 239, 240, 244, 248, 255, 6, 10, 13, 16, 13, 7, 0, 248, 247, 240, 238, 240, 241, 241, 245, 248, 252, 2, 9,
+			15, 19, 13, 6, 1, 253, 248, 249, 0, 6, 3, 9, 14, 10, 14, 18, 1, 252, 252, 244, 243, 251, 239, 250, 5, 0, 4, 25, 7, 6,
+			255, 228, 245, 5, 13, 4, 247, 246, 2, 251, 17, 18, 5, 8, 253, 229, 233, 5, 9, 8, 6, 234, 235, 0, 8, 27, 37, 19, 8, 255,
+			242, 236, 0, 254, 247, 250, 250, 247, 6, 0, 2, 16, 7, 245, 7, 250, 241, 2, 0, 247, 1, 0, 254, 4, 7, 253, 255, 7, 15, 15,
+			21, 25, 17, 6, 248, 235, 237, 244, 247, 2, 8, 8, 6, 4, 2, 254, 247, 240, 234, 235, 243, 253, 4, 4, 7, 8, 3, 3, 6, 6,
+			6, 6, 4, 2, 255, 250, 247, 249, 250, 255, 7, 11, 13, 16, 15, 8, 1, 251, 250, 250, 250, 247, 248, 250, 0, 8, 13, 13, 12, 5,
+			255, 253, 0, 2, 4, 6, 5, 253, 240, 234, 236, 239, 240, 245, 255, 7, 11, 13, 16, 11, 5, 0, 251, 251, 1, 5, 6, 12, 16, 11,
+			0, 249, 243, 249, 2, 9, 7, 6, 3, 244, 240, 246, 248, 1, 16, 3, 0, 9, 6, 245, 253, 254, 246, 251, 11, 17, 16, 12, 4, 246,
+			245, 255, 252, 238, 0, 12, 0, 5, 6, 253, 3, 13, 245, 243, 7, 8, 249, 1, 254, 0, 49, 0, 3, 0, 5, 0, 76, 0, 44, 1,
+			20, 5, 84, 11, 112, 13, 135, 15, 160, 28, 10, 33, 11, 58, 50, 34, 55, 26, 13, 0, 150, 120, 120, 120, 120, 120, 90, 120, 75, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
+			124, 0, 184, 1, 20, 5, 84, 11, 52, 13, 110, 15, 160, 28, 39, 44, 29, 70, 56, 46, 61, 29, 14, 0, 120, 120, 120, 120, 120, 120,
+			60, 60, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 208, 0, 13, 2, 106, 5, 84, 11, 168, 12, 141, 14, 160, 28, 0, 90, 41, 72, 106, 78, 67, 41, 24, 0, 120, 135,
+			150, 120, 120, 120, 120, 165, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 45, 0, 2, 0, 5, 0, 148, 0, 120, 1, 100, 5, 84, 11, 32, 13, 135, 15, 224, 28, 45, 35, 32, 58,
+			36, 40, 51, 27, 10, 0, 102, 105, 127, 120, 120, 120, 102, 90, 127, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 1, 7, 3, 153, 4, 84, 11, 208, 12, 241, 14, 224, 28,
+			0, 101, 47, 95, 101, 61, 67, 43, 20, 0, 195, 135, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 45, 0, 2, 0, 5, 0, 208, 0, 249, 1, 160, 5,
+			84, 11, 52, 13, 135, 15, 192, 28, 45, 35, 33, 58, 48, 44, 49, 28, 11, 0, 150, 120, 120, 120, 120, 120, 90, 120, 120, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0,
+			53, 2, 172, 5, 84, 11, 12, 13, 35, 15, 192, 28, 0, 98, 43, 86, 110, 84, 80, 43, 13, 0, 120, 120, 120, 120, 120, 120, 90, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			65, 0, 3, 0, 1, 0, 104, 0, 44, 1, 200, 5, 84, 11, 12, 13, 135, 15, 32, 28, 0, 31, 17, 53, 34, 32, 55, 26, 8, 0,
+			150, 120, 150, 120, 120, 120, 120, 105, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 184, 1, 84, 6, 84, 11, 92, 13, 210, 15, 32, 28, 65, 34, 21, 63, 48, 43,
+			41, 21, 7, 0, 150, 105, 150, 120, 120, 120, 120, 45, 150, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 104, 1, 152, 8, 84, 11, 32, 13, 210, 15, 32, 28, 0, 76,
+			20, 78, 80, 78, 76, 34, 10, 0, 150, 150, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0, 4, 0, 5, 0, 92, 0, 69, 1, 76, 4, 84, 11,
+			72, 13, 241, 14, 160, 28, 20, 32, 20, 64, 39, 19, 26, 31, 13, 0, 150, 105, 105, 120, 120, 120, 90, 90, 75, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 92, 0, 69, 1,
+			232, 3, 84, 11, 168, 12, 141, 14, 32, 27, 9, 40, 22, 69, 49, 42, 33, 29, 14, 0, 150, 105, 105, 120, 120, 120, 90, 90, 75, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			156, 0, 189, 1, 200, 3, 84, 11, 148, 12, 191, 14, 32, 27, 36, 51, 31, 74, 65, 42, 39, 24, 19, 0, 150, 120, 105, 120, 120, 120,
+			90, 90, 75, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 124, 0, 209, 1, 112, 3, 84, 11, 68, 12, 191, 14, 160, 26, 0, 145, 39, 116, 103, 71, 71, 45, 26, 0, 120, 120,
+			120, 120, 120, 120, 75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 51, 0, 3, 0, 5, 0, 92, 0, 19, 1, 120, 5, 84, 11, 52, 13, 216, 14, 128, 27, 12, 33, 10, 60,
+			36, 40, 59, 33, 11, 0, 150, 105, 135, 120, 120, 120, 75, 75, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 172, 0, 144, 1, 80, 5, 84, 11, 32, 13, 191, 14, 224, 26,
+			39, 45, 35, 70, 52, 50, 58, 33, 15, 0, 150, 105, 150, 120, 120, 120, 75, 60, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 144, 1, 70, 6, 84, 11, 228, 12,
+			141, 14, 224, 26, 0, 116, 48, 135, 71, 71, 67, 43, 17, 0, 120, 90, 150, 120, 120, 120, 45, 60, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 188, 0,
+			8, 2, 40, 5, 140, 10, 128, 12, 91, 14, 0, 27, 34, 69, 36, 83, 77, 49, 57, 38, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90,
 			120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 140, 0, 244, 1, 176, 4, 84, 11, 152, 13, 104, 16, 128, 27, 42, 23, 21, 57, 27, 25, 19, 16, 11, 0, 150, 120, 120, 120,
-			120, 120, 135, 60, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 17, 0, 140, 0, 224, 1, 20, 5, 84, 11, 152, 13, 104, 16, 0, 27, 0, 20, 19, 49, 26, 17, 13, 15, 8, 0,
-			150, 150, 120, 120, 120, 120, 135, 60, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 25, 0, 4, 0, 1, 0, 184, 0, 93, 2, 200, 3, 40, 10, 68, 12, 141, 14, 160, 28, 30, 70,
-			39, 71, 86, 54, 58, 35, 17, 0, 150, 105, 120, 120, 120, 120, 150, 90, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 249, 1, 176, 4, 84, 11, 168, 12, 85, 15,
-			64, 29, 25, 37, 27, 62, 51, 35, 37, 27, 13, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 189, 1, 176, 4, 84, 11,
-			228, 12, 60, 15, 64, 29, 60, 32, 27, 57, 34, 25, 30, 20, 10, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 72, 0, 149, 1,
-			20, 5, 84, 11, 52, 13, 235, 15, 64, 29, 0, 18, 24, 48, 20, 10, 10, 13, 9, 0, 150, 105, 120, 120, 120, 120, 105, 120, 135, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			3, 0, 1, 0, 216, 0, 68, 2, 186, 4, 100, 10, 32, 13, 191, 14, 64, 29, 33, 39, 26, 55, 68, 37, 42, 32, 19, 0, 150, 144,
-			120, 120, 120, 120, 150, 93, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 192, 0, 249, 1, 176, 4, 84, 11, 228, 12, 91, 14, 128, 28, 75, 26, 27, 44, 44, 33, 26, 19,
-			7, 0, 150, 150, 120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 19, 16, 48,
-			32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 192, 0, 239, 1, 70, 6, 196, 9, 12, 13,
-			241, 14, 224, 27, 40, 66, 32, 77, 77, 68, 57, 41, 20, 0, 150, 120, 120, 120, 120, 120, 120, 120, 150, 44, 45, 70, 130, 54, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 33, 0, 192, 0, 239, 1, 20, 5,
-			84, 11, 92, 13, 241, 14, 224, 27, 45, 29, 24, 58, 37, 35, 28, 22, 8, 0, 150, 120, 120, 120, 120, 120, 120, 90, 150, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0,
-			219, 1, 216, 4, 104, 11, 92, 13, 85, 15, 224, 27, 45, 25, 27, 53, 28, 16, 19, 10, 5, 0, 150, 120, 120, 120, 120, 120, 120, 90,
+			1, 0, 204, 0, 8, 2, 176, 4, 84, 11, 208, 12, 191, 14, 0, 27, 44, 52, 38, 68, 65, 49, 50, 31, 23, 0, 150, 120, 120, 120,
+			120, 120, 135, 90, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 140, 0, 244, 1, 176, 4, 84, 11, 152, 13, 104, 16, 128, 27, 42, 23, 21, 57, 27, 25, 19, 16, 11, 0,
+			150, 120, 120, 120, 120, 120, 135, 60, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 140, 0, 224, 1, 20, 5, 84, 11, 152, 13, 104, 16, 0, 27, 0, 20, 19, 49, 26, 17,
+			13, 15, 8, 0, 150, 150, 120, 120, 120, 120, 135, 60, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 25, 0, 4, 0, 1, 0, 184, 0, 93, 2, 200, 3, 40, 10, 68, 12, 141, 14,
+			160, 28, 30, 70, 39, 71, 86, 54, 58, 35, 17, 0, 150, 105, 120, 120, 120, 120, 150, 90, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 249, 1, 176, 4, 84, 11,
+			168, 12, 85, 15, 64, 29, 25, 37, 27, 62, 51, 35, 37, 27, 13, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 189, 1,
+			176, 4, 84, 11, 228, 12, 60, 15, 64, 29, 60, 32, 27, 57, 34, 25, 30, 20, 10, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0,
+			72, 0, 149, 1, 20, 5, 84, 11, 52, 13, 235, 15, 64, 29, 0, 18, 24, 48, 20, 10, 10, 13, 9, 0, 150, 105, 120, 120, 120, 120,
+			105, 120, 135, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 0, 0, 3, 0, 1, 0, 216, 0, 68, 2, 186, 4, 100, 10, 32, 13, 191, 14, 64, 29, 33, 39, 26, 55, 68, 37, 42, 32,
+			19, 0, 150, 144, 120, 120, 120, 120, 150, 93, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 192, 0, 249, 1, 176, 4, 84, 11, 228, 12, 91, 14, 128, 28, 75, 26, 27, 44,
+			44, 33, 26, 19, 7, 0, 150, 150, 120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27,
+			0, 19, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 192, 0, 239, 1, 70, 6,
+			196, 9, 12, 13, 241, 14, 224, 27, 40, 66, 32, 77, 77, 68, 57, 41, 20, 0, 150, 120, 120, 120, 120, 120, 120, 120, 150, 44, 45, 70,
+			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 33, 0, 192, 0,
+			239, 1, 20, 5, 84, 11, 92, 13, 241, 14, 224, 27, 45, 29, 24, 58, 37, 35, 28, 22, 8, 0, 150, 120, 120, 120, 120, 120, 120, 90,
 			150, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			17, 0, 128, 0, 219, 1, 40, 5, 104, 11, 72, 13, 85, 15, 224, 27, 0, 20, 22, 49, 36, 11, 14, 13, 7, 0, 150, 120, 120, 120,
-			120, 120, 120, 90, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 16, 0, 5, 0, 1, 0, 228, 0, 38, 2, 134, 3, 140, 10, 88, 12, 166, 14, 128, 28, 33, 52, 32, 61, 59, 47,
-			39, 22, 17, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 239, 1, 116, 4, 84, 11, 168, 12, 10, 15, 96, 28, 16, 59,
-			36, 73, 48, 43, 42, 25, 16, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0, 239, 1, 176, 4, 84, 11, 208, 12, 166, 14,
-			96, 28, 28, 32, 27, 61, 38, 29, 27, 20, 11, 0, 150, 120, 120, 120, 120, 120, 105, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 239, 1, 176, 4, 84, 11,
-			208, 12, 166, 14, 96, 28, 45, 21, 17, 59, 33, 24, 22, 13, 6, 0, 150, 120, 75, 120, 120, 120, 105, 30, 120, 44, 45, 70, 130, 54,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 180, 0, 179, 1,
-			20, 5, 84, 11, 32, 13, 166, 14, 96, 28, 0, 19, 23, 46, 28, 23, 16, 13, 8, 0, 120, 150, 105, 120, 120, 120, 75, 60, 120, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 35, 0,
-			4, 0, 1, 0, 200, 0, 159, 1, 68, 3, 160, 10, 28, 12, 141, 14, 32, 26, 44, 53, 36, 69, 41, 26, 30, 24, 11, 0, 150, 120,
-			120, 120, 120, 120, 105, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 99, 1, 176, 4, 84, 11, 108, 12, 60, 15, 32, 26, 55, 49, 32, 69, 34, 31, 35, 24,
-			11, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 139, 1, 176, 4, 84, 11, 112, 13, 60, 15, 32, 26, 35, 28, 34, 51,
-			41, 20, 24, 22, 7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 172, 0, 139, 1, 20, 5, 84, 11, 112, 13, 60, 15, 32, 26,
-			0, 23, 31, 47, 38, 19, 22, 20, 7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 76, 0, 104, 1, 84, 6,
-			84, 11, 132, 13, 135, 15, 32, 29, 50, 17, 9, 45, 22, 18, 33, 19, 8, 0, 155, 135, 97, 120, 120, 120, 95, 105, 97, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 76, 0,
-			104, 1, 84, 6, 84, 11, 132, 13, 135, 15, 32, 29, 0, 12, 7, 38, 23, 15, 28, 16, 7, 0, 150, 135, 97, 120, 120, 120, 90, 105,
-			97, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			50, 0, 2, 0, 5, 0, 108, 0, 124, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 50, 25, 12, 55, 30, 20, 36, 21, 9, 0,
-			150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 94, 1, 175, 4, 180, 10, 212, 13, 185, 15, 160, 28, 0, 18, 27, 41, 23, 19,
-			23, 19, 12, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 204, 0, 94, 1, 120, 5, 84, 11, 212, 13, 185, 15,
-			160, 28, 30, 13, 22, 33, 18, 15, 18, 15, 10, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 76, 0, 104, 1, 120, 5, 84, 11,
-			132, 13, 135, 15, 32, 29, 40, 20, 10, 49, 28, 20, 36, 21, 9, 0, 155, 135, 120, 120, 120, 120, 95, 105, 75, 44, 45, 70, 130, 52,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 76, 0, 104, 1,
-			120, 5, 84, 11, 132, 13, 135, 15, 32, 29, 0, 20, 10, 49, 30, 20, 36, 21, 9, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 40, 0,
-			2, 0, 5, 0, 76, 0, 104, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 40, 8, 6, 32, 19, 13, 23, 14, 5, 0, 150, 135,
-			120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 76, 0, 104, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 0, 21, 10, 49, 30, 20, 36, 21,
-			9, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 85, 0, 2, 0, 5, 0, 76, 0, 104, 1, 156, 4, 120, 10, 132, 13, 135, 15, 32, 29,
-			85, 14, 9, 40, 27, 13, 20, 10, 8, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 76, 0, 104, 1, 196, 4, 120, 10, 132, 13,
-			135, 15, 32, 29, 0, 23, 10, 51, 32, 21, 38, 23, 10, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 48, 0, 2, 0, 5, 0, 76, 0,
-			104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 48, 13, 8, 40, 25, 13, 20, 10, 8, 0, 150, 135, 97, 120, 120, 120, 90, 105,
+			1, 0, 176, 0, 219, 1, 216, 4, 104, 11, 92, 13, 85, 15, 224, 27, 45, 25, 27, 53, 28, 16, 19, 10, 5, 0, 150, 120, 120, 120,
+			120, 120, 120, 90, 150, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 17, 0, 128, 0, 219, 1, 40, 5, 104, 11, 72, 13, 85, 15, 224, 27, 0, 20, 22, 49, 36, 11, 14, 13, 7, 0,
+			150, 120, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 16, 0, 5, 0, 1, 0, 228, 0, 38, 2, 134, 3, 140, 10, 88, 12, 166, 14, 128, 28, 33, 52,
+			32, 61, 59, 47, 39, 22, 17, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 239, 1, 116, 4, 84, 11, 168, 12, 10, 15,
+			96, 28, 16, 59, 36, 73, 48, 43, 42, 25, 16, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0, 239, 1, 176, 4, 84, 11,
+			208, 12, 166, 14, 96, 28, 28, 32, 27, 61, 38, 29, 27, 20, 11, 0, 150, 120, 120, 120, 120, 120, 105, 120, 120, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 239, 1,
+			176, 4, 84, 11, 208, 12, 166, 14, 96, 28, 45, 21, 17, 59, 33, 24, 22, 13, 6, 0, 150, 120, 75, 120, 120, 120, 105, 30, 120, 44,
+			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0,
+			180, 0, 179, 1, 20, 5, 84, 11, 32, 13, 166, 14, 96, 28, 0, 19, 23, 46, 28, 23, 16, 13, 8, 0, 120, 150, 105, 120, 120, 120,
+			75, 60, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 35, 0, 4, 0, 1, 0, 200, 0, 159, 1, 68, 3, 160, 10, 28, 12, 141, 14, 32, 26, 44, 53, 36, 69, 41, 26, 30, 24,
+			11, 0, 150, 120, 120, 120, 120, 120, 105, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 99, 1, 176, 4, 84, 11, 108, 12, 60, 15, 32, 26, 55, 49, 32, 69,
+			34, 31, 35, 24, 11, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 139, 1, 176, 4, 84, 11, 112, 13, 60, 15, 32, 26,
+			35, 28, 34, 51, 41, 20, 24, 22, 7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 172, 0, 139, 1, 20, 5, 84, 11, 112, 13,
+			60, 15, 32, 26, 0, 23, 31, 47, 38, 19, 22, 20, 7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 53, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 76, 0,
+			104, 1, 84, 6, 84, 11, 132, 13, 135, 15, 32, 29, 50, 17, 9, 45, 22, 18, 33, 19, 8, 0, 155, 135, 97, 120, 120, 120, 95, 105,
 			97, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 0, 22, 10, 51, 30, 21, 38, 23, 10, 0, 150, 135, 97, 120,
-			120, 120, 90, 105, 97, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 0, 0, 3, 0, 1, 0, 216, 0, 68, 2, 186, 4, 100, 10, 32, 13, 191, 14, 64, 29, 33, 39, 26, 55, 68, 37,
-			42, 32, 19, 0, 150, 144, 120, 120, 120, 120, 150, 93, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 192, 0, 249, 1, 189, 3, 120, 10, 228, 12, 91, 14, 128, 28, 100, 27,
-			27, 44, 44, 33, 26, 19, 7, 0, 150, 150, 120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 112, 3, 200, 10, 52, 13, 235, 15,
-			128, 27, 0, 19, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 35, 0, 4, 0, 1, 0, 200, 0, 159, 1,
-			68, 3, 160, 10, 28, 12, 141, 14, 32, 26, 44, 43, 32, 62, 36, 23, 27, 21, 9, 0, 150, 120, 120, 120, 120, 120, 105, 120, 105, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			200, 0, 88, 1, 188, 2, 64, 11, 108, 12, 60, 15, 32, 26, 60, 39, 27, 58, 27, 26, 29, 20, 9, 0, 150, 105, 120, 120, 120, 120,
-			75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 172, 0, 139, 1, 200, 3, 64, 11, 112, 13, 60, 15, 32, 26, 35, 28, 34, 51, 41, 20, 24, 22, 7, 0, 150, 105,
-			120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 17, 0, 172, 0, 139, 1, 200, 3, 64, 11, 112, 13, 60, 15, 32, 26, 0, 23, 31, 47, 38, 19, 22, 20,
-			7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 188, 0, 8, 2, 40, 5, 140, 10, 128, 12, 91, 14, 0, 27,
-			34, 69, 36, 83, 77, 49, 57, 38, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 8, 2, 164, 4, 140, 10, 208, 12,
-			191, 14, 0, 27, 49, 52, 38, 68, 65, 49, 50, 31, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90, 120, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 140, 0, 244, 1, 90, 3,
-			84, 11, 152, 13, 104, 16, 128, 27, 50, 25, 21, 57, 27, 25, 19, 16, 11, 0, 150, 120, 120, 120, 120, 120, 135, 60, 120, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 140, 0,
-			224, 1, 46, 3, 84, 11, 152, 13, 104, 16, 0, 27, 0, 22, 19, 49, 26, 17, 13, 15, 8, 0, 150, 150, 120, 120, 120, 120, 135, 60,
-			120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			25, 0, 4, 0, 1, 0, 184, 0, 93, 2, 200, 3, 40, 10, 68, 12, 141, 14, 160, 28, 40, 70, 39, 71, 86, 54, 58, 35, 17, 0,
-			150, 105, 120, 120, 120, 120, 150, 90, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 168, 0, 249, 1, 156, 3, 160, 10, 168, 12, 85, 15, 64, 29, 25, 40, 27, 62, 51, 35,
-			37, 27, 13, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 168, 0, 189, 1, 24, 3, 160, 10, 228, 12, 60, 15, 64, 29, 75, 36,
-			27, 57, 34, 25, 30, 20, 10, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 72, 0, 149, 1, 68, 3, 160, 10, 52, 13, 235, 15,
-			64, 29, 0, 19, 24, 48, 20, 10, 10, 13, 9, 0, 150, 105, 120, 120, 120, 120, 105, 120, 135, 44, 45, 70, 130, 52, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 192, 0, 239, 1,
-			70, 6, 196, 9, 12, 13, 241, 14, 224, 27, 40, 66, 32, 77, 77, 68, 57, 41, 20, 0, 150, 120, 120, 120, 120, 120, 120, 120, 150, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0,
-			192, 0, 239, 1, 21, 4, 4, 11, 92, 13, 241, 14, 224, 27, 50, 29, 24, 58, 37, 35, 28, 22, 8, 0, 150, 120, 120, 120, 120, 120,
-			120, 90, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 176, 0, 219, 1, 101, 3, 4, 11, 92, 13, 85, 15, 224, 27, 50, 26, 27, 53, 27, 16, 19, 10, 5, 0, 150, 120,
+			5, 0, 76, 0, 104, 1, 84, 6, 84, 11, 132, 13, 135, 15, 32, 29, 0, 12, 7, 38, 23, 15, 28, 16, 7, 0, 150, 135, 97, 120,
+			120, 120, 90, 105, 97, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 108, 0, 124, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 50, 25, 12, 55, 30, 20,
+			36, 21, 9, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 94, 1, 175, 4, 180, 10, 212, 13, 185, 15, 160, 28, 0, 18,
+			27, 41, 23, 19, 23, 19, 12, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 204, 0, 94, 1, 120, 5, 84, 11,
+			212, 13, 185, 15, 160, 28, 30, 13, 22, 33, 18, 15, 18, 15, 10, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70, 130, 52,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 76, 0, 104, 1,
+			120, 5, 84, 11, 132, 13, 135, 15, 32, 29, 40, 20, 10, 49, 28, 20, 36, 21, 9, 0, 155, 135, 120, 120, 120, 120, 95, 105, 75, 44,
+			45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			76, 0, 104, 1, 120, 5, 84, 11, 132, 13, 135, 15, 32, 29, 0, 20, 10, 49, 30, 20, 36, 21, 9, 0, 150, 135, 120, 120, 120, 120,
+			90, 105, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 40, 0, 2, 0, 5, 0, 76, 0, 104, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 40, 8, 6, 32, 19, 13, 23, 14,
+			5, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 76, 0, 104, 1, 230, 4, 120, 10, 132, 13, 135, 15, 32, 29, 0, 21, 10, 49,
+			30, 20, 36, 21, 9, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 85, 0, 2, 0, 5, 0, 76, 0, 104, 1, 156, 4, 120, 10, 132, 13,
+			135, 15, 32, 29, 85, 14, 9, 40, 27, 13, 20, 10, 8, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 76, 0, 104, 1, 196, 4,
+			120, 10, 132, 13, 135, 15, 32, 29, 0, 23, 10, 51, 32, 21, 38, 23, 10, 0, 150, 135, 120, 120, 120, 120, 90, 105, 75, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 48, 0, 2, 0,
+			5, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 48, 13, 8, 40, 25, 13, 20, 10, 8, 0, 150, 135, 97, 120,
+			120, 120, 90, 105, 97, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 0, 22, 10, 51, 30, 21, 38, 23, 10, 0,
+			150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 1, 0, 216, 0, 68, 2, 186, 4, 100, 10, 32, 13, 191, 14, 64, 29, 33, 39,
+			26, 55, 68, 37, 42, 32, 19, 0, 150, 144, 120, 120, 120, 120, 150, 93, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 192, 0, 249, 1, 189, 3, 120, 10, 228, 12, 91, 14,
+			128, 28, 100, 27, 27, 44, 44, 33, 26, 19, 7, 0, 150, 150, 120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 112, 3, 200, 10,
+			52, 13, 235, 15, 128, 27, 0, 19, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 52,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 35, 0, 4, 0, 1, 0,
+			200, 0, 159, 1, 68, 3, 160, 10, 28, 12, 141, 14, 32, 26, 44, 43, 32, 62, 36, 23, 27, 21, 9, 0, 150, 120, 120, 120, 120, 120,
+			105, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 5, 0, 200, 0, 88, 1, 188, 2, 64, 11, 108, 12, 60, 15, 32, 26, 60, 39, 27, 58, 27, 26, 29, 20, 9, 0, 150, 105,
+			120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 172, 0, 139, 1, 200, 3, 64, 11, 112, 13, 60, 15, 32, 26, 35, 28, 34, 51, 41, 20, 24, 22,
+			7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 172, 0, 139, 1, 200, 3, 64, 11, 112, 13, 60, 15, 32, 26, 0, 23, 31, 47,
+			38, 19, 22, 20, 7, 0, 150, 105, 120, 120, 120, 120, 75, 120, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 188, 0, 8, 2, 40, 5, 140, 10, 128, 12,
+			91, 14, 0, 27, 34, 69, 36, 83, 77, 49, 57, 38, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90, 120, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 8, 2, 164, 4,
+			140, 10, 208, 12, 191, 14, 0, 27, 49, 52, 38, 68, 65, 49, 50, 31, 23, 0, 150, 120, 120, 120, 120, 120, 135, 90, 120, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 140, 0,
+			244, 1, 90, 3, 84, 11, 152, 13, 104, 16, 128, 27, 50, 25, 21, 57, 27, 25, 19, 16, 11, 0, 150, 120, 120, 120, 120, 120, 135, 60,
+			120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			17, 0, 140, 0, 224, 1, 46, 3, 84, 11, 152, 13, 104, 16, 0, 27, 0, 22, 19, 49, 26, 17, 13, 15, 8, 0, 150, 150, 120, 120,
+			120, 120, 135, 60, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 25, 0, 4, 0, 1, 0, 184, 0, 93, 2, 200, 3, 40, 10, 68, 12, 141, 14, 160, 28, 40, 70, 39, 71, 86, 54,
+			58, 35, 17, 0, 150, 105, 120, 120, 120, 120, 150, 90, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 168, 0, 249, 1, 156, 3, 160, 10, 168, 12, 85, 15, 64, 29, 25, 40,
+			27, 62, 51, 35, 37, 27, 13, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 168, 0, 189, 1, 24, 3, 160, 10, 228, 12, 60, 15,
+			64, 29, 75, 36, 27, 57, 34, 25, 30, 20, 10, 0, 150, 105, 120, 120, 120, 120, 150, 120, 135, 44, 45, 70, 130, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 72, 0, 149, 1, 68, 3, 160, 10,
+			52, 13, 235, 15, 64, 29, 0, 19, 24, 48, 20, 10, 10, 13, 9, 0, 150, 105, 120, 120, 120, 120, 105, 120, 135, 44, 45, 70, 130, 52,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0,
+			192, 0, 239, 1, 70, 6, 196, 9, 12, 13, 241, 14, 224, 27, 40, 66, 32, 77, 77, 68, 57, 41, 20, 0, 150, 120, 120, 120, 120, 120,
+			120, 120, 150, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 37, 0, 192, 0, 239, 1, 21, 4, 4, 11, 92, 13, 241, 14, 224, 27, 50, 29, 24, 58, 37, 35, 28, 22, 8, 0, 150, 120,
 			120, 120, 120, 120, 120, 90, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 17, 0, 128, 0, 219, 1, 57, 3, 24, 11, 72, 13, 85, 15, 224, 27, 0, 22, 22, 49, 32, 11, 14, 13,
-			7, 0, 150, 120, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 5, 0, 1, 0, 228, 0, 38, 2, 134, 3, 140, 10, 88, 12, 166, 14, 128, 28,
-			33, 56, 36, 60, 66, 44, 44, 25, 19, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 239, 1, 145, 3, 220, 10, 168, 12,
-			10, 15, 96, 28, 20, 51, 36, 64, 48, 43, 42, 25, 16, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 239, 1, 35, 3,
-			44, 11, 208, 12, 166, 14, 96, 28, 28, 39, 27, 61, 38, 29, 27, 20, 11, 0, 150, 120, 120, 120, 120, 120, 105, 120, 120, 44, 45, 70,
+			0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 219, 1, 101, 3, 4, 11, 92, 13, 85, 15, 224, 27, 50, 26, 27, 53, 27, 16, 19, 10,
+			5, 0, 150, 120, 120, 120, 120, 120, 120, 90, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 128, 0, 219, 1, 57, 3, 24, 11, 72, 13, 85, 15, 224, 27, 0, 22, 22, 49,
+			32, 11, 14, 13, 7, 0, 150, 120, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 5, 0, 1, 0, 228, 0, 38, 2, 134, 3, 140, 10, 88, 12,
+			166, 14, 128, 28, 33, 56, 36, 60, 66, 44, 44, 25, 19, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 239, 1, 145, 3,
+			220, 10, 168, 12, 10, 15, 96, 28, 20, 51, 36, 64, 48, 43, 42, 25, 16, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70,
 			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0,
-			239, 1, 115, 2, 44, 11, 208, 12, 166, 14, 96, 28, 51, 25, 17, 59, 33, 24, 22, 13, 6, 0, 150, 120, 75, 120, 120, 120, 105, 30,
-			120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			17, 0, 72, 0, 149, 1, 68, 3, 160, 10, 52, 13, 235, 15, 64, 29, 0, 19, 24, 48, 20, 10, 10, 13, 9, 0, 150, 105, 120, 120,
-			120, 120, 105, 120, 135, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 85, 0, 221, 1, 77, 5, 116, 10, 4, 13, 85, 15, 115, 27, 75, 28, 21, 51, 46, 25,
-			22, 17, 9, 3, 157, 141, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 18,
-			16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 168, 0, 139, 2, 30, 5, 240, 10,
-			82, 13, 135, 15, 208, 27, 75, 24, 21, 49, 38, 22, 14, 13, 6, 4, 168, 130, 128, 120, 120, 120, 217, 150, 105, 44, 45, 70, 130, 59,
+			239, 1, 35, 3, 44, 11, 208, 12, 166, 14, 96, 28, 28, 39, 27, 61, 38, 29, 27, 20, 11, 0, 150, 120, 120, 120, 120, 120, 105, 120,
+			120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 180, 0, 239, 1, 115, 2, 44, 11, 208, 12, 166, 14, 96, 28, 51, 25, 17, 59, 33, 24, 22, 13, 6, 0, 150, 120, 75, 120,
+			120, 120, 105, 30, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 17, 0, 72, 0, 149, 1, 68, 3, 160, 10, 52, 13, 235, 15, 64, 29, 0, 19, 24, 48, 20, 10, 10, 13, 9, 0,
+			150, 105, 120, 120, 120, 120, 105, 120, 135, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 85, 0, 221, 1, 77, 5, 116, 10, 4, 13, 85, 15, 115, 27, 75, 28,
+			21, 51, 46, 25, 22, 17, 9, 3, 157, 141, 126, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15,
+			128, 27, 0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 168, 0, 139, 2,
+			30, 5, 240, 10, 82, 13, 135, 15, 208, 27, 75, 24, 21, 49, 38, 22, 14, 13, 6, 4, 168, 130, 128, 120, 120, 120, 217, 150, 105, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0,
+			64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120,
+			120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 0, 0, 2, 0, 5, 0, 192, 0, 249, 1, 176, 4, 84, 11, 228, 12, 91, 14, 128, 28, 75, 26, 27, 44, 44, 33, 26, 20,
+			7, 0, 150, 150, 120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 19, 16, 48,
+			32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 37, 0, 149, 0, 24, 1, 207, 8, 214, 11, 112, 13,
+			134, 16, 42, 27, 45, 43, 8, 62, 52, 48, 52, 24, 16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 94, 1, 120, 5,
+			84, 11, 212, 13, 185, 15, 160, 28, 45, 23, 30, 44, 24, 21, 24, 20, 14, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 204, 0,
+			94, 1, 120, 5, 84, 11, 212, 13, 185, 15, 160, 28, 0, 23, 30, 44, 24, 21, 24, 20, 14, 0, 165, 105, 135, 120, 120, 120, 60, 120,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			0, 0, 3, 0, 37, 0, 168, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 90, 54, 32, 56, 64, 39, 36, 18, 14, 6,
+			187, 125, 137, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 45, 19, 10, 48, 30, 16,
+			24, 12, 10, 0, 150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 0, 19,
+			10, 48, 30, 16, 24, 12, 10, 0, 150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 120, 0, 118, 1, 6, 4, 70, 10,
+			32, 13, 147, 15, 8, 27, 75, 25, 11, 50, 35, 19, 16, 21, 9, 5, 168, 130, 128, 120, 120, 120, 177, 125, 102, 44, 45, 70, 130, 59,
 			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1,
 			20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			2, 0, 5, 0, 192, 0, 249, 1, 176, 4, 84, 11, 228, 12, 91, 14, 128, 28, 75, 26, 27, 44, 44, 33, 26, 20, 7, 0, 150, 150,
-			120, 120, 120, 120, 150, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 19, 16, 48, 32, 17, 11, 10,
-			7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 37, 0, 149, 0, 24, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27,
-			45, 43, 8, 62, 52, 48, 52, 24, 16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 94, 1, 120, 5, 84, 11, 212, 13,
-			185, 15, 160, 28, 45, 23, 30, 44, 24, 21, 24, 20, 14, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 204, 0, 94, 1, 120, 5,
-			84, 11, 212, 13, 185, 15, 160, 28, 0, 23, 30, 44, 24, 21, 24, 20, 14, 0, 165, 105, 135, 120, 120, 120, 60, 120, 105, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0,
-			37, 0, 168, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 90, 54, 32, 56, 64, 39, 36, 18, 14, 6, 187, 125, 137, 120,
-			120, 120, 165, 135, 135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 45, 19, 10, 48, 30, 16, 24, 12, 10, 0,
-			150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 76, 0, 104, 1, 100, 5, 120, 10, 132, 13, 135, 15, 32, 29, 0, 19, 10, 48, 30, 16,
-			24, 12, 10, 0, 150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 120, 0, 118, 1, 6, 4, 70, 10, 32, 13, 147, 15,
-			8, 27, 75, 25, 11, 50, 35, 19, 16, 21, 9, 5, 168, 130, 128, 120, 120, 120, 177, 125, 102, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11,
-			52, 13, 235, 15, 128, 27, 0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0,
-			148, 0, 24, 1, 209, 8, 68, 12, 112, 13, 140, 15, 112, 23, 20, 21, 12, 40, 14, 12, 16, 9, 3, 6, 110, 180, 177, 225, 247, 175,
-			110, 180, 177, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 232, 0, 128, 1, 132, 8, 240, 10, 112, 13, 80, 15, 137, 23, 40, 63, 15, 78, 24, 18, 27, 12, 6, 6, 110, 155,
-			177, 225, 247, 175, 110, 155, 177, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 8, 2, 228, 7, 60, 10, 72, 13, 40, 15, 137, 23, 0, 88, 21, 93, 36, 45, 48, 24,
-			6, 6, 110, 180, 202, 225, 252, 175, 110, 180, 202, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 192, 0, 160, 1, 48, 7, 40, 10, 32, 13, 20, 15, 137, 23,
-			25, 12, 8, 30, 19, 20, 22, 17, 2, 2, 150, 185, 192, 222, 242, 195, 150, 185, 192, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 40, 2, 44, 6, 236, 9, 188, 12,
-			156, 14, 137, 23, 42, 36, 39, 48, 30, 33, 29, 21, 6, 6, 150, 155, 192, 247, 242, 195, 150, 155, 192, 44, 45, 70, 130, 55, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0, 168, 2, 216, 4,
-			236, 9, 48, 12, 116, 14, 143, 22, 0, 65, 48, 66, 54, 33, 36, 24, 6, 3, 202, 155, 192, 180, 242, 225, 202, 155, 192, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0,
-			5, 0, 176, 0, 80, 1, 56, 9, 84, 11, 112, 13, 100, 15, 88, 27, 20, 19, 15, 32, 12, 20, 18, 11, 2, 5, 177, 192, 197, 235,
-			220, 175, 177, 192, 197, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 237, 0, 219, 1, 0, 8, 136, 10, 108, 13, 54, 15, 47, 28, 40, 35, 24, 47, 36, 36, 28, 19, 7, 6,
-			214, 159, 176, 171, 165, 144, 177, 192, 197, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 44, 31, 56, 60, 55,
-			42, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 116, 0, 0, 1, 16, 9, 144, 11, 212, 13, 180, 15,
-			243, 22, 25, 10, 3, 30, 27, 15, 15, 9, 0, 3, 150, 142, 140, 165, 210, 175, 150, 142, 140, 44, 45, 70, 130, 54, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 125, 0, 25, 1, 152, 8, 44, 11,
-			16, 14, 160, 15, 243, 22, 40, 20, 4, 46, 28, 20, 23, 12, 0, 4, 150, 142, 138, 143, 162, 175, 150, 142, 140, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 128, 0, 40, 1,
-			132, 8, 124, 11, 32, 13, 40, 15, 44, 26, 0, 152, 12, 116, 28, 44, 69, 28, 12, 8, 150, 190, 200, 235, 185, 157, 150, 190, 200, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			4, 0, 37, 0, 0, 1, 112, 1, 153, 8, 154, 11, 228, 12, 216, 14, 88, 27, 20, 25, 9, 45, 14, 12, 16, 12, 2, 4, 120, 187,
-			137, 187, 150, 237, 120, 187, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 37, 0, 232, 0, 248, 1, 240, 5, 176, 9, 128, 12, 216, 14, 88, 27, 20, 35, 31, 55, 26, 16, 16, 12,
-			2, 4, 127, 140, 182, 187, 222, 237, 127, 140, 182, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 216, 0, 8, 2, 136, 4, 176, 9, 8, 12, 216, 14, 88, 27, 35, 54, 30, 69,
-			39, 21, 21, 15, 3, 6, 182, 140, 182, 187, 222, 237, 182, 140, 182, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 232, 0, 64, 2, 252, 3, 120, 10, 68, 12, 216, 14, 88, 27,
-			0, 88, 27, 87, 55, 27, 33, 21, 6, 6, 182, 155, 145, 187, 222, 237, 182, 155, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 15, 0, 4, 0, 5, 0, 140, 0, 0, 1, 96, 9,
-			64, 11, 208, 12, 100, 15, 88, 27, 20, 30, 10, 54, 25, 10, 18, 7, 3, 7, 77, 147, 150, 150, 150, 150, 77, 147, 150, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 140, 0,
-			248, 0, 96, 9, 64, 11, 208, 12, 100, 15, 88, 27, 15, 19, 8, 42, 11, 11, 14, 5, 2, 5, 77, 147, 150, 150, 150, 150, 77, 147,
-			150, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 140, 0, 0, 1, 96, 9, 64, 11, 208, 12, 100, 15, 88, 27, 30, 26, 10, 50, 25, 14, 18, 7, 3, 7, 77, 147, 150, 150,
+			3, 0, 5, 0, 148, 0, 24, 1, 209, 8, 68, 12, 112, 13, 140, 15, 112, 23, 20, 21, 12, 40, 14, 12, 16, 9, 3, 6, 110, 180,
+			177, 225, 247, 175, 110, 180, 177, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 232, 0, 128, 1, 132, 8, 240, 10, 112, 13, 80, 15, 137, 23, 40, 63, 15, 78, 24, 18, 27, 12,
+			6, 6, 110, 155, 177, 225, 247, 175, 110, 155, 177, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 8, 2, 228, 7, 60, 10, 72, 13, 40, 15, 137, 23, 0, 88, 21, 93,
+			36, 45, 48, 24, 6, 6, 110, 180, 202, 225, 252, 175, 110, 180, 202, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 192, 0, 160, 1, 48, 7, 40, 10, 32, 13,
+			20, 15, 137, 23, 25, 12, 8, 30, 19, 20, 22, 17, 2, 2, 150, 185, 192, 222, 242, 195, 150, 185, 192, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 40, 2, 44, 6,
+			236, 9, 188, 12, 156, 14, 137, 23, 42, 36, 39, 48, 30, 33, 29, 21, 6, 6, 150, 155, 192, 247, 242, 195, 150, 155, 192, 44, 45, 70,
+			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0,
+			168, 2, 216, 4, 236, 9, 48, 12, 116, 14, 143, 22, 0, 65, 48, 66, 54, 33, 36, 24, 6, 3, 202, 155, 192, 180, 242, 225, 202, 155,
+			192, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			0, 0, 3, 0, 5, 0, 176, 0, 80, 1, 56, 9, 84, 11, 112, 13, 100, 15, 88, 27, 20, 19, 15, 32, 12, 20, 18, 11, 2, 5,
+			177, 192, 197, 235, 220, 175, 177, 192, 197, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 237, 0, 219, 1, 0, 8, 136, 10, 108, 13, 54, 15, 47, 28, 40, 35, 24, 47, 36, 36,
+			28, 19, 7, 6, 214, 159, 176, 171, 165, 144, 177, 192, 197, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 44,
+			31, 56, 60, 55, 42, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 116, 0, 0, 1, 16, 9, 144, 11,
+			212, 13, 180, 15, 243, 22, 25, 10, 3, 30, 27, 15, 15, 9, 0, 3, 150, 142, 140, 165, 210, 175, 150, 142, 140, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 125, 0, 25, 1,
+			152, 8, 44, 11, 16, 14, 160, 15, 243, 22, 40, 20, 4, 46, 28, 20, 23, 12, 0, 4, 150, 142, 138, 143, 162, 175, 150, 142, 140, 44,
+			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			128, 0, 40, 1, 132, 8, 124, 11, 32, 13, 40, 15, 44, 26, 0, 152, 12, 116, 28, 44, 69, 28, 12, 8, 150, 190, 200, 235, 185, 157,
+			150, 190, 200, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 0, 0, 4, 0, 37, 0, 0, 1, 112, 1, 153, 8, 154, 11, 228, 12, 216, 14, 88, 27, 20, 25, 9, 45, 14, 12, 16, 12,
+			2, 4, 120, 187, 137, 187, 150, 237, 120, 187, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 232, 0, 248, 1, 240, 5, 176, 9, 128, 12, 216, 14, 88, 27, 20, 35, 31, 55,
+			26, 16, 16, 12, 2, 4, 127, 140, 182, 187, 222, 237, 127, 140, 182, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 216, 0, 8, 2, 136, 4, 176, 9, 8, 12, 216, 14, 88, 27,
+			35, 54, 30, 69, 39, 21, 21, 15, 3, 6, 182, 140, 182, 187, 222, 237, 182, 140, 182, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 232, 0, 64, 2, 252, 3, 120, 10, 68, 12,
+			216, 14, 88, 27, 0, 88, 27, 87, 55, 27, 33, 21, 6, 6, 182, 155, 145, 187, 222, 237, 182, 155, 145, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 15, 0, 4, 0, 5, 0, 140, 0,
+			0, 1, 96, 9, 64, 11, 208, 12, 100, 15, 88, 27, 20, 30, 10, 54, 25, 10, 18, 7, 3, 7, 77, 147, 150, 150, 150, 150, 77, 147,
+			150, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 140, 0, 248, 0, 96, 9, 64, 11, 208, 12, 100, 15, 88, 27, 15, 19, 8, 42, 11, 11, 14, 5, 2, 5, 77, 147, 150, 150,
 			150, 150, 77, 147, 150, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 164, 0, 32, 1, 52, 8, 236, 9, 168, 12, 172, 14, 175, 25, 0, 117, 0, 112, 24, 24, 44, 36, 8, 12,
-			150, 180, 137, 137, 150, 175, 150, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 132, 0, 232, 0, 232, 8, 220, 10, 192, 13, 180, 15, 200, 25, 35, 6,
-			6, 24, 6, 21, 24, 6, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 185, 8, 224, 11, 72, 13, 80, 15,
-			150, 25, 50, 17, 3, 45, 7, 26, 30, 3, 7, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 232, 0, 185, 8, 224, 11,
-			72, 13, 80, 15, 150, 25, 25, 23, 3, 53, 3, 26, 30, 3, 0, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 54,
+			0, 250, 0, 0, 1, 0, 140, 0, 0, 1, 96, 9, 64, 11, 208, 12, 100, 15, 88, 27, 30, 26, 10, 50, 25, 14, 18, 7, 3, 7,
+			77, 147, 150, 150, 150, 150, 77, 147, 150, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 164, 0, 32, 1, 52, 8, 236, 9, 168, 12, 172, 14, 175, 25, 0, 117, 0, 112, 24, 24,
+			44, 36, 8, 12, 150, 180, 137, 137, 150, 175, 150, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 132, 0, 232, 0, 232, 8, 220, 10, 192, 13, 180, 15,
+			200, 25, 35, 6, 6, 24, 6, 21, 24, 6, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 185, 8, 224, 11,
+			72, 13, 80, 15, 150, 25, 50, 17, 3, 45, 7, 26, 30, 3, 7, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 53,
 			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 232, 0,
-			185, 8, 224, 11, 72, 13, 80, 15, 0, 29, 0, 15, 3, 43, 3, 18, 24, 3, 0, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 145, 0,
-			4, 0, 37, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25, 60, 20, 8, 48, 17, 30, 17, 17, 8, 0, 120, 105,
-			120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25, 60, 20, 8, 48, 17, 30, 17, 17,
+			185, 8, 224, 11, 72, 13, 80, 15, 150, 25, 25, 23, 3, 53, 3, 26, 30, 3, 0, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44,
+			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
+			132, 0, 232, 0, 185, 8, 224, 11, 72, 13, 80, 15, 0, 29, 0, 15, 3, 43, 3, 18, 24, 3, 0, 0, 120, 105, 150, 120, 120, 120,
+			45, 135, 90, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 145, 0, 4, 0, 37, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25, 60, 20, 8, 48, 17, 30, 17, 17,
 			8, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25, 25, 9, 6, 33,
-			12, 21, 12, 12, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25, 60, 20, 8, 48,
+			17, 30, 17, 17, 8, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13, 140, 15, 225, 25,
-			0, 10, 6, 35, 12, 22, 12, 12, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 104, 0, 64, 1, 64, 6,
-			108, 7, 192, 13, 180, 15, 32, 29, 55, 17, 6, 44, 34, 13, 17, 13, 8, 0, 150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 9, 0, 104, 0,
-			64, 1, 64, 6, 108, 7, 192, 13, 180, 15, 32, 29, 40, 23, 8, 52, 40, 16, 20, 16, 10, 0, 150, 135, 97, 120, 120, 120, 90, 105,
+			25, 9, 6, 33, 12, 21, 12, 12, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 240, 0, 76, 9, 28, 12, 212, 13,
+			140, 15, 225, 25, 0, 10, 6, 35, 12, 22, 12, 12, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 104, 0,
+			64, 1, 64, 6, 108, 7, 192, 13, 180, 15, 32, 29, 55, 17, 6, 44, 34, 13, 17, 13, 8, 0, 150, 135, 97, 120, 120, 120, 90, 105,
 			97, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 104, 0, 64, 1, 64, 6, 108, 7, 192, 13, 180, 15, 32, 29, 0, 23, 8, 52, 40, 16, 20, 16, 10, 0, 150, 135, 97, 120,
+			9, 0, 104, 0, 64, 1, 64, 6, 108, 7, 192, 13, 180, 15, 32, 29, 40, 23, 8, 52, 40, 16, 20, 16, 10, 0, 150, 135, 97, 120,
 			120, 120, 90, 105, 97, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 100, 0, 3, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 50, 38, 18, 54, 39, 30,
-			27, 24, 12, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 50, 38,
+			0, 250, 0, 0, 1, 0, 104, 0, 64, 1, 64, 6, 108, 7, 192, 13, 180, 15, 32, 29, 0, 23, 8, 52, 40, 16, 20, 16, 10, 0,
+			150, 135, 97, 120, 120, 120, 90, 105, 97, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 3, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 50, 38,
 			18, 54, 39, 30, 27, 24, 12, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15,
-			144, 26, 0, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 90, 0, 4, 0, 5, 0, 176, 0, 184, 1,
-			32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 30, 24, 14, 43, 31, 24, 21, 19, 9, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 40, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15,
+			144, 26, 50, 38, 18, 54, 39, 30, 27, 24, 12, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 184, 1, 32, 3, 64, 11,
+			32, 13, 120, 15, 144, 26, 0, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 90, 0, 4, 0, 5, 0,
+			176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 30, 24, 14, 43, 31, 24, 21, 19, 9, 6, 162, 127, 150, 120, 120, 120,
 			162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 21, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 20, 30, 16, 50, 28, 28, 25, 22, 11, 7, 162, 127,
+			0, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 40, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127,
 			150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 0, 33, 16, 50, 36, 28, 25, 22,
+			0, 0, 0, 250, 0, 0, 21, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 20, 30, 16, 50, 28, 28, 25, 22,
 			11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 3, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26,
-			30, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 21, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13,
-			120, 15, 144, 26, 20, 30, 16, 50, 28, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 184, 1, 32, 3,
-			64, 11, 32, 13, 120, 15, 144, 26, 0, 29, 15, 46, 33, 26, 23, 20, 10, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 77, 0, 3, 0,
-			5, 0, 96, 0, 99, 1, 214, 2, 156, 9, 8, 12, 135, 15, 192, 27, 30, 25, 8, 57, 20, 14, 14, 10, 8, 0, 120, 135, 90, 120,
-			120, 120, 60, 105, 180, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 192, 0, 179, 1, 134, 3, 212, 8, 204, 11, 166, 14, 192, 27, 47, 45, 18, 78, 33, 14, 16, 10, 4, 0,
-			120, 111, 150, 120, 120, 120, 60, 81, 123, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 43, 2, 18, 5, 132, 8, 28, 12, 166, 14, 192, 27, 0, 76, 39, 84, 98, 46,
-			59, 40, 11, 0, 120, 150, 120, 120, 120, 120, 60, 120, 75, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 71, 0, 3, 0, 5, 0, 192, 0, 179, 1, 92, 3, 252, 8, 184, 11, 60, 15,
-			32, 28, 26, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82, 90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 208, 0, 199, 1, 132, 3, 16, 9,
-			184, 11, 60, 15, 32, 28, 45, 62, 31, 81, 61, 30, 24, 15, 8, 0, 120, 120, 150, 120, 120, 120, 75, 90, 105, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 16, 1, 223, 2,
-			255, 3, 20, 10, 184, 11, 35, 15, 224, 27, 0, 122, 45, 69, 106, 78, 82, 48, 10, 0, 120, 195, 120, 120, 120, 120, 195, 120, 120, 44,
-			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0,
-			3, 0, 5, 0, 100, 0, 154, 1, 12, 3, 96, 9, 224, 11, 166, 14, 128, 27, 35, 41, 8, 77, 28, 15, 16, 12, 7, 0, 120, 120,
-			105, 120, 120, 120, 120, 75, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 38, 2, 20, 5, 192, 8, 48, 12, 166, 14, 128, 27, 35, 65, 35, 77, 80, 45, 38, 29,
-			8, 0, 120, 120, 180, 120, 120, 120, 120, 120, 105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 78, 2, 249, 5, 252, 8, 128, 12, 66, 14, 128, 27, 0, 91, 44, 83,
-			109, 55, 49, 34, 10, 0, 120, 120, 180, 120, 120, 120, 120, 120, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 76, 0, 3, 0, 37, 0, 40, 0, 112, 1, 68, 3, 36, 9, 28, 12,
-			216, 14, 32, 28, 40, 45, 19, 77, 28, 16, 16, 12, 8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 120, 0, 112, 1, 153, 4,
-			76, 9, 148, 12, 166, 14, 192, 27, 36, 43, 20, 76, 24, 24, 26, 17, 13, 0, 120, 90, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70,
-			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 40, 0,
-			79, 1, 221, 7, 96, 9, 208, 12, 116, 14, 192, 27, 0, 89, 9, 86, 74, 89, 97, 58, 13, 0, 120, 120, 120, 120, 120, 120, 120, 120,
-			120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			73, 0, 3, 0, 5, 0, 112, 0, 84, 1, 49, 2, 236, 9, 64, 11, 91, 14, 160, 27, 33, 29, 13, 60, 24, 12, 12, 6, 5, 0,
-			120, 135, 60, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 136, 1, 180, 2, 0, 10, 64, 11, 91, 14, 160, 27, 40, 35, 24, 64, 44, 25,
-			23, 8, 11, 0, 120, 105, 75, 120, 120, 120, 75, 105, 105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 144, 0, 184, 1, 181, 2, 20, 10, 64, 11, 91, 14, 32, 28, 0, 93,
-			35, 114, 65, 46, 46, 17, 21, 0, 120, 75, 60, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 128, 0, 84, 1, 108, 2, 66, 9,
-			164, 11, 116, 14, 144, 27, 33, 39, 19, 69, 26, 12, 12, 9, 4, 0, 120, 120, 90, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 144, 0, 120, 1,
-			192, 3, 252, 8, 28, 12, 141, 14, 128, 27, 37, 43, 20, 77, 42, 21, 23, 17, 10, 0, 120, 96, 129, 120, 120, 120, 75, 84, 126, 44,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 0, 33, 16, 50,
+			36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 3, 0, 5, 0, 176, 0, 184, 1, 32, 3, 64, 11, 32, 13,
+			120, 15, 144, 26, 30, 33, 16, 50, 36, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 21, 0, 176, 0, 184, 1, 32, 3,
+			64, 11, 32, 13, 120, 15, 144, 26, 20, 30, 16, 50, 28, 28, 25, 22, 11, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0,
+			184, 1, 32, 3, 64, 11, 32, 13, 120, 15, 144, 26, 0, 29, 15, 46, 33, 26, 23, 20, 10, 6, 162, 127, 150, 120, 120, 120, 162, 127,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			77, 0, 3, 0, 5, 0, 96, 0, 99, 1, 214, 2, 156, 9, 8, 12, 135, 15, 192, 27, 30, 25, 8, 57, 20, 14, 14, 10, 8, 0,
+			120, 135, 90, 120, 120, 120, 60, 105, 180, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 192, 0, 179, 1, 134, 3, 212, 8, 204, 11, 166, 14, 192, 27, 47, 45, 18, 78, 33, 14,
+			16, 10, 4, 0, 120, 111, 150, 120, 120, 120, 60, 81, 123, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 43, 2, 18, 5, 132, 8, 28, 12, 166, 14, 192, 27, 0, 76,
+			39, 84, 98, 46, 59, 40, 11, 0, 120, 150, 120, 120, 120, 120, 60, 120, 75, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 71, 0, 3, 0, 5, 0, 192, 0, 179, 1, 92, 3, 252, 8,
+			184, 11, 60, 15, 32, 28, 26, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82, 90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 208, 0, 199, 1,
+			132, 3, 16, 9, 184, 11, 60, 15, 32, 28, 45, 62, 31, 81, 61, 30, 24, 15, 8, 0, 120, 120, 150, 120, 120, 120, 75, 90, 105, 44,
 			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			144, 0, 164, 1, 128, 5, 152, 8, 88, 12, 141, 14, 128, 27, 0, 119, 37, 140, 62, 45, 54, 39, 20, 0, 120, 90, 120, 120, 120, 120,
-			75, 60, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 30, 0, 2, 0, 1, 0, 84, 0, 34, 1, 217, 1, 0, 10, 224, 11, 10, 15, 128, 27, 30, 20, 4, 50, 40, 10, 9, 8,
-			6, 0, 120, 120, 60, 120, 120, 120, 120, 45, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 0, 34, 1, 217, 1, 0, 10, 224, 11, 10, 15, 128, 27, 0, 20, 4, 50,
+			16, 1, 223, 2, 255, 3, 20, 10, 184, 11, 35, 15, 224, 27, 0, 122, 45, 69, 106, 78, 82, 48, 10, 0, 120, 195, 120, 120, 120, 120,
+			195, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 70, 0, 3, 0, 5, 0, 100, 0, 154, 1, 12, 3, 96, 9, 224, 11, 166, 14, 128, 27, 35, 41, 8, 77, 28, 15, 16, 12,
+			7, 0, 120, 120, 105, 120, 120, 120, 120, 75, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 228, 0, 38, 2, 20, 5, 192, 8, 48, 12, 166, 14, 128, 27, 35, 65, 35, 77,
+			80, 45, 38, 29, 8, 0, 120, 120, 180, 120, 120, 120, 120, 120, 105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 78, 2, 249, 5, 252, 8, 128, 12, 66, 14, 128, 27,
+			0, 91, 44, 83, 109, 55, 49, 34, 10, 0, 120, 120, 180, 120, 120, 120, 120, 120, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 76, 0, 3, 0, 37, 0, 40, 0, 112, 1, 68, 3,
+			36, 9, 28, 12, 216, 14, 32, 28, 40, 45, 19, 77, 28, 16, 16, 12, 8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 120, 0,
+			112, 1, 153, 4, 76, 9, 148, 12, 166, 14, 192, 27, 36, 43, 20, 76, 24, 24, 26, 17, 13, 0, 120, 90, 120, 120, 120, 120, 120, 90,
+			105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 40, 0, 79, 1, 221, 7, 96, 9, 208, 12, 116, 14, 192, 27, 0, 89, 9, 86, 74, 89, 97, 58, 13, 0, 120, 120, 120, 120,
+			120, 120, 120, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 73, 0, 3, 0, 5, 0, 112, 0, 84, 1, 49, 2, 236, 9, 64, 11, 91, 14, 160, 27, 33, 29, 13, 60, 24, 12,
+			12, 6, 5, 0, 120, 135, 60, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 136, 1, 180, 2, 0, 10, 64, 11, 91, 14, 160, 27, 40, 35,
+			24, 64, 44, 25, 23, 8, 11, 0, 120, 105, 75, 120, 120, 120, 75, 105, 105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 144, 0, 184, 1, 181, 2, 20, 10, 64, 11, 91, 14,
+			32, 28, 0, 93, 35, 114, 65, 46, 46, 17, 21, 0, 120, 75, 60, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 128, 0, 84, 1,
+			108, 2, 66, 9, 164, 11, 116, 14, 144, 27, 33, 39, 19, 69, 26, 12, 12, 9, 4, 0, 120, 120, 90, 120, 120, 120, 75, 90, 90, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
+			144, 0, 120, 1, 192, 3, 252, 8, 28, 12, 141, 14, 128, 27, 37, 43, 20, 77, 42, 21, 23, 17, 10, 0, 120, 96, 129, 120, 120, 120,
+			75, 84, 126, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 144, 0, 164, 1, 128, 5, 152, 8, 88, 12, 141, 14, 128, 27, 0, 119, 37, 140, 62, 45, 54, 39, 20, 0, 120, 90,
+			120, 120, 120, 120, 75, 60, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 30, 0, 2, 0, 1, 0, 84, 0, 34, 1, 217, 1, 0, 10, 224, 11, 10, 15, 128, 27, 30, 20, 4, 50,
 			40, 10, 9, 8, 6, 0, 120, 120, 60, 120, 120, 120, 120, 45, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 55, 0, 3, 0, 5, 0, 64, 0, 19, 1, 204, 1, 56, 9, 28, 12,
-			220, 15, 192, 27, 25, 10, 2, 33, 19, 11, 7, 3, 2, 0, 120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70, 130, 50, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 64, 0, 19, 1, 204, 1,
-			56, 9, 28, 12, 220, 15, 192, 27, 30, 17, 2, 45, 22, 15, 9, 4, 3, 0, 120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70,
-			130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 64, 0,
-			19, 1, 224, 1, 56, 9, 28, 12, 220, 15, 192, 27, 0, 20, 3, 48, 28, 16, 10, 5, 4, 0, 120, 135, 90, 120, 120, 120, 60, 60,
-			120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			125, 0, 4, 0, 37, 0, 214, 0, 176, 1, 161, 3, 232, 8, 88, 12, 178, 14, 96, 27, 45, 21, 22, 44, 26, 13, 19, 12, 9, 5,
-			202, 90, 150, 120, 120, 120, 145, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 172, 0, 112, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 40, 18, 17, 37, 28, 11,
-			8, 8, 7, 5, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 112, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 40, 18,
-			17, 37, 28, 11, 8, 8, 7, 5, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 96, 1, 92, 3, 192, 8, 168, 12, 60, 15,
-			96, 27, 0, 13, 15, 30, 23, 10, 7, 7, 6, 5, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 90, 0, 3, 0, 37, 0, 214, 0, 176, 1,
-			161, 3, 232, 8, 88, 12, 178, 14, 96, 27, 40, 33, 26, 52, 43, 15, 22, 14, 11, 7, 202, 90, 150, 120, 120, 120, 145, 120, 135, 44,
-			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 21, 0,
-			172, 0, 112, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 50, 25, 17, 45, 35, 14, 10, 10, 8, 7, 200, 90, 120, 120, 120, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 0, 34, 1, 217, 1, 0, 10, 224, 11, 10, 15, 128, 27,
+			0, 20, 4, 50, 40, 10, 9, 8, 6, 0, 120, 120, 60, 120, 120, 120, 120, 45, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 30, 0, 2, 0, 5, 0, 64, 0, 19, 1, 206, 1,
+			56, 9, 28, 12, 220, 15, 192, 27, 30, 17, 2, 43, 27, 13, 8, 4, 3, 0, 120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70,
+			130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 0,
+			34, 1, 217, 1, 56, 9, 68, 12, 100, 15, 128, 27, 0, 19, 4, 50, 36, 16, 9, 8, 6, 0, 120, 120, 60, 120, 120, 120, 120, 45,
+			75, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			55, 0, 3, 0, 5, 0, 64, 0, 19, 1, 204, 1, 56, 9, 28, 12, 220, 15, 192, 27, 25, 11, 2, 36, 21, 12, 7, 3, 3, 0,
+			120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 64, 0, 19, 1, 204, 1, 56, 9, 28, 12, 220, 15, 192, 27, 30, 17, 2, 45, 22, 15,
+			9, 4, 3, 0, 120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 64, 0, 19, 1, 224, 1, 56, 9, 28, 12, 220, 15, 192, 27, 0, 20,
+			3, 48, 28, 16, 10, 5, 4, 0, 120, 135, 90, 120, 120, 120, 60, 60, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 125, 0, 4, 0, 37, 0, 214, 0, 176, 1, 161, 3, 232, 8,
+			88, 12, 178, 14, 96, 27, 45, 21, 22, 44, 26, 13, 19, 12, 9, 5, 202, 90, 150, 120, 120, 120, 145, 120, 135, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 172, 0, 112, 1,
+			132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 40, 18, 17, 37, 28, 11, 8, 8, 7, 5, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44,
+			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			172, 0, 112, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 40, 18, 17, 37, 28, 11, 8, 8, 7, 5, 200, 90, 120, 120, 120, 120,
 			200, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 172, 0, 96, 1, 92, 3, 192, 8, 168, 12, 60, 15, 96, 27, 0, 17, 15, 36, 27, 12, 9, 9, 7, 6, 200, 90,
+			0, 0, 1, 0, 172, 0, 96, 1, 92, 3, 192, 8, 168, 12, 60, 15, 96, 27, 0, 13, 15, 30, 23, 10, 7, 7, 6, 5, 200, 90,
 			120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 121, 0, 4, 0, 5, 0, 76, 0, 255, 0, 141, 8, 180, 10, 32, 13, 85, 15, 160, 28, 21, 21, 10, 48,
-			36, 37, 48, 23, 13, 0, 120, 90, 105, 120, 120, 120, 60, 105, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 76, 0, 255, 0, 141, 8, 140, 10, 248, 12, 185, 15, 160, 28,
-			40, 25, 13, 52, 38, 42, 54, 31, 11, 0, 120, 90, 105, 120, 120, 120, 60, 75, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 220, 0, 144, 1, 89, 7, 76, 9, 188, 12,
-			141, 14, 160, 28, 60, 50, 36, 78, 45, 57, 48, 32, 8, 0, 120, 75, 120, 120, 120, 120, 60, 120, 135, 44, 45, 70, 130, 55, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 220, 0, 8, 2, 249, 5,
-			172, 8, 48, 12, 41, 14, 160, 28, 0, 76, 43, 73, 97, 69, 65, 41, 13, 0, 120, 120, 120, 120, 120, 120, 75, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 103, 0, 4, 0,
-			5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 31, 20, 3, 46, 21, 33, 43, 24, 6, 0, 120, 105, 150, 120,
-			120, 120, 45, 135, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 180, 0, 149, 1, 177, 7, 216, 9, 128, 12, 116, 14, 0, 28, 31, 28, 26, 55, 37, 47, 46, 28, 6, 0,
-			120, 120, 120, 120, 120, 120, 45, 105, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 229, 1, 136, 6, 36, 9, 28, 12, 116, 14, 0, 28, 41, 40, 33, 55, 70, 54,
-			51, 31, 7, 0, 120, 120, 150, 120, 120, 120, 75, 105, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 37, 3, 252, 4, 232, 8, 184, 11, 16, 14, 224, 27, 0, 82,
-			42, 73, 109, 66, 59, 44, 10, 0, 120, 150, 120, 120, 120, 120, 120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 135, 0, 4, 0, 5, 0, 116, 0, 225, 0, 229, 8, 64, 11,
-			32, 13, 160, 15, 192, 28, 45, 20, 3, 43, 33, 38, 46, 30, 7, 0, 120, 105, 135, 120, 120, 120, 45, 150, 105, 44, 45, 70, 130, 52,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 9, 1,
-			207, 8, 160, 10, 208, 12, 4, 16, 192, 28, 40, 24, 5, 45, 42, 48, 51, 23, 5, 0, 120, 105, 135, 120, 120, 120, 45, 150, 120, 44,
-			45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			164, 0, 179, 1, 166, 7, 176, 9, 248, 12, 160, 15, 192, 28, 50, 49, 33, 77, 47, 57, 47, 23, 4, 0, 120, 117, 159, 120, 120, 120,
-			63, 90, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 212, 0, 53, 2, 224, 6, 96, 9, 168, 12, 66, 14, 192, 28, 0, 84, 46, 69, 100, 83, 74, 46, 8, 0, 120, 135,
-			195, 120, 120, 120, 90, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 84, 0, 255, 0, 39, 9, 164, 11, 92, 13, 135, 15, 224, 28, 30, 18, 6, 43,
-			28, 36, 41, 26, 9, 0, 120, 90, 120, 120, 120, 120, 75, 120, 120, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 84, 0, 250, 0, 39, 9, 164, 11, 92, 13, 135, 15, 64, 28,
-			65, 20, 5, 44, 34, 41, 46, 23, 9, 0, 120, 90, 120, 120, 120, 120, 75, 105, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 84, 0, 59, 1, 174, 8, 160, 10, 208, 12,
-			235, 15, 64, 28, 0, 65, 15, 83, 68, 74, 78, 41, 12, 0, 120, 90, 120, 120, 120, 120, 75, 105, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 125, 0, 5, 0, 5, 0, 136, 0,
-			240, 0, 172, 8, 224, 11, 52, 13, 191, 14, 32, 28, 30, 22, 9, 46, 23, 27, 40, 28, 13, 0, 120, 120, 135, 120, 120, 120, 60, 90,
-			90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 136, 0, 4, 1, 112, 8, 80, 10, 52, 13, 166, 14, 32, 28, 25, 31, 9, 57, 31, 27, 42, 39, 12, 0, 120, 120, 135, 120,
-			120, 120, 60, 90, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 136, 0, 44, 1, 133, 7, 96, 9, 148, 12, 41, 14, 32, 28, 30, 45, 16, 72, 57, 48, 37, 29, 15, 0,
-			120, 120, 105, 120, 120, 120, 60, 90, 90, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 164, 1, 150, 5, 96, 9, 48, 12, 41, 14, 32, 28, 40, 49, 26, 80, 58, 44,
-			38, 28, 18, 0, 120, 120, 90, 120, 120, 120, 60, 75, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 184, 1, 178, 3, 116, 9, 184, 11, 41, 14, 96, 27, 0, 127,
-			48, 110, 106, 80, 62, 41, 26, 0, 120, 120, 120, 120, 120, 120, 75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 60, 0, 3, 0, 5, 0, 88, 0, 24, 1, 6, 9, 140, 10,
-			32, 13, 191, 14, 224, 28, 30, 18, 9, 41, 37, 34, 45, 21, 6, 0, 135, 120, 135, 120, 120, 120, 30, 105, 75, 44, 45, 70, 130, 51,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 88, 0, 84, 1,
-			188, 7, 36, 9, 168, 12, 191, 14, 224, 28, 60, 20, 5, 45, 20, 48, 40, 25, 5, 0, 135, 135, 135, 120, 120, 120, 30, 90, 75, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			168, 0, 144, 1, 56, 7, 212, 8, 168, 12, 191, 14, 224, 28, 0, 85, 34, 108, 57, 76, 60, 37, 9, 0, 120, 105, 120, 120, 120, 120,
-			30, 75, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 30, 0, 2, 0, 1, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 30, 19, 3, 45, 21, 33, 42, 24,
-			6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 0, 19, 3, 45,
-			21, 33, 42, 24, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 25, 0, 2, 0, 5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13,
-			116, 14, 0, 29, 25, 14, 3, 39, 18, 28, 36, 20, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 51, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0, 29, 1, 185, 8,
-			200, 10, 32, 13, 116, 14, 0, 29, 0, 25, 4, 52, 24, 38, 48, 27, 8, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70,
-			130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0,
-			5, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 35, 21, 25, 39, 40, 37, 30, 20, 7, 6, 167, 90, 135, 120,
-			120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 156, 0, 72, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 35, 17, 22, 34, 35, 32, 26, 17, 6, 5,
-			167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 72, 1, 192, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 17, 21, 37, 23, 20,
-			20, 14, 6, 5, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 148, 0, 24, 1, 209, 8, 184, 11, 112, 13, 140, 15,
-			112, 23, 20, 21, 12, 40, 14, 12, 16, 9, 3, 6, 110, 180, 177, 225, 247, 175, 110, 180, 177, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 232, 0, 128, 1, 132, 8, 240, 10,
-			112, 13, 80, 15, 137, 23, 40, 63, 15, 78, 24, 18, 27, 12, 6, 6, 110, 155, 177, 225, 247, 175, 110, 155, 177, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 8, 2,
-			228, 7, 60, 10, 72, 13, 40, 15, 137, 23, 0, 88, 21, 93, 36, 45, 48, 24, 6, 6, 110, 180, 202, 225, 252, 175, 110, 180, 202, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			3, 0, 5, 0, 192, 0, 160, 1, 48, 7, 40, 10, 32, 13, 20, 15, 137, 23, 25, 12, 8, 30, 19, 20, 22, 17, 2, 2, 150, 185,
-			192, 222, 242, 195, 150, 185, 192, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 40, 2, 44, 6, 236, 9, 188, 12, 156, 14, 137, 23, 42, 36, 39, 48, 30, 33, 29, 21,
-			6, 6, 150, 155, 192, 247, 242, 195, 150, 155, 192, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0, 168, 2, 216, 4, 236, 9, 48, 12, 116, 14, 143, 22, 0, 65, 48, 66,
-			54, 33, 36, 24, 6, 3, 202, 155, 192, 180, 242, 225, 202, 155, 192, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 176, 0, 80, 1, 212, 8, 84, 11, 112, 13,
-			100, 15, 88, 27, 20, 19, 15, 32, 12, 20, 18, 11, 2, 5, 177, 192, 197, 235, 220, 175, 177, 192, 197, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 237, 0, 219, 1, 0, 8,
-			136, 10, 108, 13, 54, 15, 47, 28, 40, 35, 24, 47, 36, 36, 28, 19, 7, 6, 214, 159, 176, 171, 165, 144, 177, 192, 197, 44, 45, 70,
-			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 31, 1,
-			77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 44, 31, 56, 60, 55, 42, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			0, 0, 3, 0, 5, 0, 116, 0, 24, 1, 152, 8, 44, 11, 112, 13, 120, 15, 243, 22, 20, 8, 3, 30, 15, 15, 15, 9, 0, 3,
-			150, 142, 140, 165, 210, 175, 150, 142, 140, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 128, 0, 32, 1, 52, 8, 4, 11, 28, 14, 160, 15, 243, 22, 40, 21, 4, 48, 16, 20,
-			24, 12, 0, 4, 150, 142, 137, 137, 150, 175, 150, 142, 137, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 128, 0, 40, 1, 132, 8, 124, 11, 32, 13, 40, 15, 44, 26, 0, 152,
-			12, 116, 28, 44, 69, 28, 12, 8, 150, 190, 200, 235, 185, 157, 150, 190, 200, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 37, 0, 0, 1, 112, 1, 153, 8, 154, 11,
-			228, 12, 216, 14, 88, 27, 20, 25, 9, 45, 14, 12, 16, 12, 2, 4, 120, 187, 137, 187, 150, 237, 120, 187, 137, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 232, 0, 248, 1,
-			240, 5, 176, 9, 128, 12, 216, 14, 88, 27, 20, 35, 31, 55, 26, 16, 16, 12, 2, 4, 127, 140, 182, 187, 222, 237, 127, 140, 182, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0,
-			216, 0, 8, 2, 136, 4, 176, 9, 8, 12, 216, 14, 88, 27, 35, 54, 30, 69, 39, 21, 21, 15, 3, 6, 182, 140, 182, 187, 222, 237,
-			182, 140, 182, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 232, 0, 64, 2, 252, 3, 120, 10, 68, 12, 216, 14, 88, 27, 0, 88, 27, 87, 55, 27, 33, 21, 6, 6, 182, 155,
-			145, 187, 222, 237, 182, 155, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 156, 0, 8, 1, 132, 8, 120, 10, 12, 13, 100, 15, 62, 23, 20, 30, 3, 54,
-			17, 17, 25, 9, 3, 6, 150, 180, 195, 170, 237, 175, 150, 180, 195, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 184, 0, 104, 1, 156, 9, 64, 11, 208, 12, 100, 15, 62, 23,
-			40, 61, 52, 56, 24, 20, 28, 16, 4, 12, 77, 180, 195, 170, 237, 175, 77, 180, 195, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 164, 0, 32, 1, 52, 8, 236, 9, 168, 12,
-			172, 14, 175, 25, 0, 117, 0, 112, 24, 24, 44, 36, 8, 12, 150, 180, 137, 137, 150, 175, 150, 180, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 1, 0, 184, 0,
-			104, 1, 243, 7, 80, 10, 32, 13, 216, 14, 32, 27, 20, 26, 17, 56, 27, 36, 40, 23, 8, 0, 120, 105, 135, 120, 120, 120, 66, 96,
-			105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 184, 0, 104, 1, 243, 7, 80, 10, 32, 13, 216, 14, 32, 27, 0, 26, 17, 56, 27, 36, 40, 23, 8, 0, 120, 105, 135, 120,
-			120, 120, 66, 96, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 148, 0, 8, 1, 232, 8, 68, 12, 112, 13, 140, 15, 186, 19, 15, 18, 12, 36, 14, 12,
-			16, 9, 3, 3, 110, 180, 177, 225, 247, 175, 110, 180, 177, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 148, 0, 24, 1, 209, 8, 68, 12, 112, 13, 140, 15, 186, 19, 0, 21,
-			12, 40, 14, 12, 16, 9, 3, 3, 110, 180, 177, 225, 247, 175, 110, 180, 177, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 4, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8,
-			172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 52,
-			225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1,
-			76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 50, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
-			20, 100, 100, 52, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0,
-			236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120,
-			30, 135, 105, 44, 20, 100, 100, 47, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60,
-			90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 48, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 80, 0, 4, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38,
-			23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27,
-			35, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13,
-			160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0,
-			0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 216, 1, 76, 4,
-			82, 8, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100,
-			100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0,
-			5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120,
-			120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 18, 46, 20, 38, 12, 16, 16, 6, 0,
-			125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 18, 2, 208, 4, 76, 9, 168, 12, 91, 14, 32, 27, 40, 50, 46, 58, 81, 45,
-			46, 28, 8, 0, 120, 75, 135, 120, 120, 120, 90, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 98, 2, 172, 5, 116, 9, 188, 12, 141, 14, 32, 27, 0, 82,
-			48, 65, 110, 71, 69, 39, 13, 0, 120, 135, 135, 120, 120, 120, 120, 75, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8,
-			88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1,
-			84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44,
+			0, 0, 0, 250, 0, 0, 90, 0, 3, 0, 37, 0, 214, 0, 176, 1, 161, 3, 232, 8, 88, 12, 178, 14, 96, 27, 40, 33, 26, 52,
+			43, 15, 22, 14, 11, 7, 202, 90, 150, 120, 120, 120, 145, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 21, 0, 172, 0, 112, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27,
+			50, 25, 17, 45, 35, 14, 10, 10, 8, 7, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 96, 1, 92, 3, 192, 8, 168, 12,
+			60, 15, 96, 27, 0, 17, 15, 36, 27, 12, 9, 9, 7, 6, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 55, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 121, 0, 4, 0, 5, 0, 76, 0,
+			255, 0, 141, 8, 180, 10, 32, 13, 85, 15, 160, 28, 21, 21, 10, 48, 36, 37, 48, 23, 13, 0, 120, 90, 105, 120, 120, 120, 60, 105,
+			120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 76, 0, 255, 0, 141, 8, 140, 10, 248, 12, 185, 15, 160, 28, 40, 25, 13, 52, 38, 42, 54, 31, 11, 0, 120, 90, 105, 120,
+			120, 120, 60, 75, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 5, 0, 220, 0, 144, 1, 89, 7, 76, 9, 188, 12, 141, 14, 160, 28, 60, 50, 36, 78, 45, 57, 48, 32, 8, 0,
+			120, 75, 120, 120, 120, 120, 60, 120, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 220, 0, 8, 2, 249, 5, 172, 8, 48, 12, 41, 14, 160, 28, 0, 76, 43, 73, 97, 69,
+			65, 41, 13, 0, 120, 120, 120, 120, 120, 120, 75, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 103, 0, 4, 0, 5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14,
+			0, 29, 31, 20, 3, 46, 21, 33, 43, 24, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 149, 1, 177, 7, 216, 9,
+			128, 12, 116, 14, 0, 28, 31, 28, 26, 55, 37, 47, 46, 28, 6, 0, 120, 120, 120, 120, 120, 120, 45, 105, 120, 44, 45, 70, 130, 52,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 229, 1,
+			136, 6, 36, 9, 28, 12, 116, 14, 0, 28, 41, 40, 33, 55, 70, 54, 51, 31, 7, 0, 120, 120, 150, 120, 120, 120, 75, 105, 120, 44,
+			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			228, 0, 37, 3, 252, 4, 232, 8, 184, 11, 16, 14, 224, 27, 0, 82, 42, 73, 109, 66, 59, 44, 10, 0, 120, 150, 120, 120, 120, 120,
+			120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 115, 0, 4, 0, 5, 0, 116, 0, 225, 0, 229, 8, 64, 11, 32, 13, 160, 15, 192, 28, 45, 20, 3, 43, 33, 38, 46, 30,
+			7, 0, 120, 105, 135, 120, 120, 120, 45, 150, 105, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 132, 0, 9, 1, 207, 8, 160, 10, 208, 12, 4, 16, 192, 28, 40, 24, 5, 45,
+			42, 48, 51, 23, 5, 0, 120, 105, 135, 120, 120, 120, 45, 150, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 164, 0, 179, 1, 166, 7, 176, 9, 248, 12, 160, 15, 192, 28,
+			30, 49, 33, 77, 47, 57, 47, 23, 4, 0, 120, 117, 159, 120, 120, 120, 63, 90, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0, 53, 2, 224, 6, 96, 9, 168, 12,
+			66, 14, 192, 28, 0, 82, 46, 69, 100, 83, 74, 46, 8, 0, 120, 135, 195, 120, 120, 120, 90, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 84, 0,
+			255, 0, 39, 9, 164, 11, 92, 13, 135, 15, 224, 28, 30, 18, 6, 43, 28, 36, 41, 26, 9, 0, 120, 90, 120, 120, 120, 120, 75, 120,
+			120, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 84, 0, 250, 0, 39, 9, 164, 11, 92, 13, 135, 15, 64, 28, 65, 20, 5, 44, 34, 41, 46, 23, 9, 0, 120, 90, 120, 120,
+			120, 120, 75, 105, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 84, 0, 59, 1, 174, 8, 160, 10, 208, 12, 235, 15, 64, 28, 0, 65, 15, 83, 68, 74, 78, 41, 12, 0,
+			120, 90, 120, 120, 120, 120, 75, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 125, 0, 5, 0, 5, 0, 136, 0, 240, 0, 172, 8, 224, 11, 52, 13, 191, 14, 32, 28, 30, 22,
+			9, 46, 23, 27, 40, 28, 13, 0, 120, 120, 135, 120, 120, 120, 60, 90, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 4, 1, 112, 8, 80, 10, 52, 13, 166, 14,
+			32, 28, 25, 31, 9, 57, 31, 27, 42, 39, 12, 0, 120, 120, 135, 120, 120, 120, 60, 90, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 44, 1, 133, 7, 96, 9,
+			148, 12, 41, 14, 32, 28, 30, 45, 16, 72, 57, 48, 37, 29, 15, 0, 120, 120, 105, 120, 120, 120, 60, 90, 90, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 164, 1,
+			150, 5, 96, 9, 48, 12, 41, 14, 32, 28, 40, 49, 26, 80, 58, 44, 38, 28, 18, 0, 120, 120, 90, 120, 120, 120, 60, 75, 135, 44,
+			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			152, 0, 184, 1, 178, 3, 116, 9, 184, 11, 41, 14, 96, 27, 0, 127, 48, 110, 106, 80, 62, 41, 26, 0, 120, 120, 120, 120, 120, 120,
+			75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 60, 0, 3, 0, 5, 0, 88, 0, 24, 1, 6, 9, 140, 10, 32, 13, 191, 14, 224, 28, 30, 18, 9, 41, 37, 34, 45, 21,
+			6, 0, 135, 120, 135, 120, 120, 120, 30, 105, 75, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 88, 0, 84, 1, 188, 7, 36, 9, 168, 12, 191, 14, 224, 28, 60, 20, 5, 45,
+			20, 48, 40, 25, 5, 0, 135, 135, 135, 120, 120, 120, 30, 90, 75, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 144, 1, 56, 7, 212, 8, 168, 12, 191, 14, 224, 28,
+			0, 85, 34, 108, 57, 76, 60, 37, 9, 0, 120, 105, 120, 120, 120, 120, 30, 75, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 30, 0, 2, 0, 1, 0, 180, 0, 29, 1, 185, 8,
+			200, 10, 32, 13, 116, 14, 0, 29, 30, 19, 3, 45, 21, 33, 42, 24, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70,
+			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0,
+			29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 0, 19, 3, 45, 21, 33, 42, 24, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135,
+			90, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			25, 0, 2, 0, 5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 25, 14, 3, 39, 18, 28, 36, 20, 6, 0,
+			120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 0, 25, 4, 52, 24, 38,
+			48, 27, 8, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15,
+			32, 28, 35, 21, 25, 39, 40, 37, 30, 20, 7, 6, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 156, 0, 72, 1, 174, 8, 160, 10,
+			92, 13, 10, 15, 32, 28, 35, 17, 22, 34, 35, 32, 26, 17, 6, 5, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 72, 1,
+			192, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 17, 21, 37, 23, 20, 20, 14, 6, 5, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44,
+			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
+			3, 0, 5, 0, 148, 0, 24, 1, 209, 8, 184, 11, 112, 13, 140, 15, 112, 23, 20, 21, 12, 40, 14, 12, 16, 9, 3, 6, 110, 180,
+			177, 225, 247, 175, 110, 180, 177, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 232, 0, 128, 1, 132, 8, 240, 10, 112, 13, 80, 15, 137, 23, 40, 63, 15, 78, 24, 18, 27, 12,
+			6, 6, 110, 155, 177, 225, 247, 175, 110, 155, 177, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 8, 2, 228, 7, 60, 10, 72, 13, 40, 15, 137, 23, 0, 88, 21, 93,
+			36, 45, 48, 24, 6, 6, 110, 180, 202, 225, 252, 175, 110, 180, 202, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 192, 0, 160, 1, 48, 7, 40, 10, 32, 13,
+			20, 15, 137, 23, 25, 12, 8, 30, 19, 20, 22, 17, 2, 2, 150, 185, 192, 222, 242, 195, 150, 185, 192, 44, 45, 70, 130, 53, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 40, 2, 44, 6,
+			236, 9, 188, 12, 156, 14, 137, 23, 42, 36, 39, 48, 30, 33, 29, 21, 6, 6, 150, 155, 192, 247, 242, 195, 150, 155, 192, 44, 45, 70,
+			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0,
+			168, 2, 216, 4, 236, 9, 48, 12, 116, 14, 143, 22, 0, 65, 48, 66, 54, 33, 36, 24, 6, 3, 202, 155, 192, 180, 242, 225, 202, 155,
+			192, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			0, 0, 3, 0, 5, 0, 176, 0, 80, 1, 212, 8, 84, 11, 112, 13, 100, 15, 88, 27, 20, 19, 15, 32, 12, 20, 18, 11, 2, 5,
+			177, 192, 197, 235, 220, 175, 177, 192, 197, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 237, 0, 219, 1, 0, 8, 136, 10, 108, 13, 54, 15, 47, 28, 40, 35, 24, 47, 36, 36,
+			28, 19, 7, 6, 214, 159, 176, 171, 165, 144, 177, 192, 197, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 44,
+			31, 56, 60, 55, 42, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 116, 0, 24, 1, 152, 8, 44, 11,
+			112, 13, 120, 15, 243, 22, 20, 8, 3, 30, 15, 15, 15, 9, 0, 3, 150, 142, 140, 165, 210, 175, 150, 142, 140, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 128, 0, 32, 1,
+			52, 8, 4, 11, 28, 14, 160, 15, 243, 22, 40, 21, 4, 48, 16, 20, 24, 12, 0, 4, 150, 142, 137, 137, 150, 175, 150, 142, 137, 44,
+			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			128, 0, 40, 1, 132, 8, 124, 11, 32, 13, 40, 15, 44, 26, 0, 152, 12, 116, 28, 44, 69, 28, 12, 8, 150, 190, 200, 235, 185, 157,
+			150, 190, 200, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 0, 0, 4, 0, 37, 0, 0, 1, 112, 1, 153, 8, 154, 11, 228, 12, 216, 14, 88, 27, 20, 25, 9, 45, 14, 12, 16, 12,
+			2, 4, 120, 187, 137, 187, 150, 237, 120, 187, 137, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 232, 0, 248, 1, 240, 5, 176, 9, 128, 12, 216, 14, 88, 27, 20, 35, 31, 55,
+			26, 16, 16, 12, 2, 4, 127, 140, 182, 187, 222, 237, 127, 140, 182, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 216, 0, 8, 2, 136, 4, 176, 9, 8, 12, 216, 14, 88, 27,
+			35, 54, 30, 69, 39, 21, 21, 15, 3, 6, 182, 140, 182, 187, 222, 237, 182, 140, 182, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 232, 0, 64, 2, 252, 3, 120, 10, 68, 12,
+			216, 14, 88, 27, 0, 88, 27, 87, 55, 27, 33, 21, 6, 6, 182, 155, 145, 187, 222, 237, 182, 155, 145, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 3, 0, 5, 0, 156, 0,
+			8, 1, 132, 8, 120, 10, 12, 13, 100, 15, 62, 23, 20, 30, 3, 54, 17, 17, 25, 9, 3, 6, 150, 180, 195, 170, 237, 175, 150, 180,
+			195, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 184, 0, 104, 1, 156, 9, 64, 11, 208, 12, 100, 15, 62, 23, 40, 61, 52, 56, 24, 20, 28, 16, 4, 12, 77, 180, 195, 170,
+			237, 175, 77, 180, 195, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 164, 0, 32, 1, 52, 8, 236, 9, 168, 12, 172, 14, 175, 25, 0, 117, 0, 112, 24, 24, 44, 36, 8, 12,
+			150, 180, 137, 137, 150, 175, 150, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 1, 0, 184, 0, 104, 1, 243, 7, 80, 10, 32, 13, 216, 14, 32, 27, 20, 26,
+			17, 56, 27, 36, 40, 23, 8, 0, 120, 105, 135, 120, 120, 120, 66, 96, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 104, 1, 243, 7, 80, 10, 32, 13, 216, 14,
+			32, 27, 0, 26, 17, 56, 27, 36, 40, 23, 8, 0, 120, 105, 135, 120, 120, 120, 66, 96, 105, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 2, 0, 5, 0, 148, 0, 8, 1,
+			232, 8, 68, 12, 112, 13, 140, 15, 186, 19, 15, 18, 12, 36, 14, 12, 16, 9, 3, 3, 110, 180, 177, 225, 247, 175, 110, 180, 177, 44,
+			45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			148, 0, 24, 1, 209, 8, 68, 12, 112, 13, 140, 15, 186, 19, 0, 21, 12, 40, 14, 12, 16, 9, 3, 3, 110, 180, 177, 225, 247, 175,
+			110, 180, 177, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 95, 0, 4, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14,
+			8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 52, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 50, 17, 54, 38,
+			23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 52, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27,
+			0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 47, 225, 0, 0, 0, 65, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13,
+			160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 48, 225, 0,
+			0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 80, 0, 4, 0, 5, 0, 236, 0,
+			216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135,
+			105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 35, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120,
+			120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 17, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 216, 1, 76, 4, 82, 8, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14,
+			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 100, 100, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14,
+			32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8,
+			88, 12, 91, 14, 32, 27, 0, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 18, 2,
+			208, 4, 76, 9, 168, 12, 91, 14, 32, 27, 40, 50, 46, 58, 81, 45, 46, 28, 8, 0, 120, 75, 135, 120, 120, 120, 90, 105, 120, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			252, 0, 27, 3, 21, 4, 120, 10, 68, 12, 116, 14, 192, 28, 40, 56, 51, 56, 84, 43, 41, 23, 13, 0, 120, 120, 105, 120, 120, 120,
-			165, 60, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 12, 1, 27, 3, 21, 4, 24, 11, 148, 12, 216, 14, 64, 29, 0, 96, 55, 76, 108, 65, 68, 37, 17, 0, 120, 120,
-			105, 120, 120, 120, 150, 60, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20,
+			244, 0, 98, 2, 172, 5, 116, 9, 188, 12, 141, 14, 32, 27, 0, 82, 48, 65, 110, 71, 69, 39, 13, 0, 120, 135, 135, 120, 120, 120,
+			120, 75, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 110, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16,
+			6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20,
 			38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 252, 0, 27, 3, 21, 4, 120, 10, 68, 12, 116, 14, 192, 28,
+			40, 56, 51, 56, 84, 43, 41, 23, 13, 0, 120, 120, 105, 120, 120, 120, 165, 60, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 27, 3, 21, 4, 24, 11, 148, 12,
+			216, 14, 64, 29, 0, 96, 55, 76, 108, 65, 68, 37, 17, 0, 120, 120, 105, 120, 120, 120, 150, 60, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0, 196, 0,
+			114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120,
+			120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 20, 1, 18, 2, 205, 5, 136, 9, 248, 12, 191, 14, 0, 28, 40, 51, 49, 64, 81, 61, 52, 35, 12, 0,
+			135, 60, 120, 120, 120, 120, 75, 90, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 4, 1, 98, 2, 180, 6, 236, 9, 72, 13, 85, 15, 128, 27, 0, 86, 50, 69, 101, 95,
+			76, 39, 20, 0, 120, 120, 150, 120, 120, 120, 120, 120, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 108, 0, 5, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14,
+			32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8,
+			88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 216, 0, 184, 1,
+			169, 6, 96, 9, 128, 12, 66, 14, 192, 27, 9, 30, 38, 54, 49, 44, 42, 26, 10, 0, 120, 105, 120, 120, 120, 120, 30, 105, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			212, 0, 179, 1, 155, 7, 96, 9, 228, 12, 216, 14, 160, 27, 29, 42, 42, 61, 58, 67, 51, 31, 11, 0, 120, 105, 180, 120, 120, 120,
+			24, 96, 99, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 200, 0, 164, 1, 141, 8, 0, 10, 32, 13, 110, 15, 64, 27, 0, 95, 63, 93, 97, 97, 76, 45, 16, 0, 120, 105,
+			120, 120, 120, 120, 15, 75, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 105, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20,
+			39, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27,
 			0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 20, 1, 18, 2, 205, 5, 136, 9, 248, 12,
-			191, 14, 0, 28, 40, 51, 49, 64, 81, 61, 52, 35, 12, 0, 135, 60, 120, 120, 120, 120, 75, 90, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 4, 1, 98, 2, 180, 6,
-			236, 9, 72, 13, 85, 15, 128, 27, 0, 86, 50, 69, 101, 95, 76, 39, 20, 0, 120, 120, 150, 120, 120, 120, 120, 120, 105, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 108, 0, 5, 0,
-			5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 105, 0, 205, 0, 208, 2, 252, 8, 88, 12,
+			76, 14, 32, 27, 35, 34, 36, 32, 40, 20, 20, 16, 9, 0, 117, 117, 153, 135, 135, 120, 117, 117, 153, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 209, 1, 68, 3,
+			100, 10, 104, 11, 141, 14, 32, 27, 0, 160, 47, 105, 110, 63, 58, 28, 23, 0, 120, 120, 135, 120, 120, 120, 120, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 105, 0, 4, 0,
+			5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 39, 12, 16, 16, 6, 0, 125, 60, 135, 120,
 			120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0,
 			125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 216, 0, 184, 1, 169, 6, 96, 9, 128, 12, 66, 14, 192, 27, 9, 30, 38, 54, 49, 44,
-			42, 26, 10, 0, 120, 105, 120, 120, 120, 120, 30, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0, 179, 1, 155, 7, 96, 9, 228, 12, 216, 14, 160, 27, 29, 42,
-			42, 61, 58, 67, 51, 31, 11, 0, 120, 105, 180, 120, 120, 120, 24, 96, 99, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 164, 1, 141, 8, 0, 10, 32, 13, 110, 15,
-			64, 27, 0, 95, 63, 93, 97, 97, 76, 45, 16, 0, 120, 105, 120, 120, 120, 120, 15, 75, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 105, 0, 4, 0, 5, 0, 196, 0, 114, 1,
-			84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 39, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120,
-			80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 105, 0, 205, 0, 208, 2, 252, 8, 88, 12, 76, 14, 32, 27, 35, 34, 36, 32, 40, 20, 20, 16, 9, 0, 117, 117,
-			153, 135, 135, 120, 117, 117, 153, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 209, 1, 68, 3, 100, 10, 104, 11, 141, 14, 32, 27, 0, 160, 47, 105, 110, 63, 58, 28,
-			23, 0, 120, 120, 135, 120, 120, 120, 120, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 105, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27,
-			70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12,
-			91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 252, 0, 164, 1, 95, 5,
-			252, 8, 168, 12, 141, 14, 96, 27, 35, 55, 57, 70, 73, 45, 48, 30, 15, 0, 135, 75, 120, 120, 120, 120, 45, 105, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 188, 0,
-			184, 1, 205, 5, 16, 9, 148, 12, 41, 14, 96, 27, 0, 150, 82, 110, 123, 99, 82, 58, 20, 0, 120, 90, 120, 120, 120, 120, 90, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			70, 0, 3, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 70, 22, 51, 28, 30, 12, 16, 16, 6, 0,
-			125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 22, 51, 28, 30, 12,
-			16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 164, 1, 153, 4, 132, 8, 128, 12, 254, 16, 64, 27, 0, 6,
-			28, 12, 16, 8, 6, 4, 3, 0, 120, 105, 120, 120, 120, 120, 75, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8,
-			88, 12, 91, 14, 32, 27, 20, 12, 38, 22, 25, 9, 12, 12, 5, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 114, 1,
-			84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 48, 28, 32, 12, 16, 16, 6, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 115, 0,
-			3, 0, 5, 0, 196, 0, 114, 1, 56, 4, 252, 8, 88, 12, 91, 14, 32, 27, 65, 18, 46, 20, 36, 12, 16, 16, 6, 0, 125, 60,
-			135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 56, 4, 252, 8, 88, 12, 91, 14, 32, 27, 50, 18, 48, 20, 28, 12, 16, 16,
-			6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 114, 1, 36, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 12, 40, 17,
-			17, 6, 13, 13, 5, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 80, 0, 4, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13,
-			160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0,
-			0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 220, 5,
-			236, 9, 172, 13, 160, 15, 0, 27, 35, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150,
-			150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0,
-			224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135,
-			105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120,
-			120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 94, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 50, 16, 48, 38, 23, 14,
-			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 144, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17,
-			52, 36, 25, 18, 16, 18, 11, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 32, 1, 18, 2, 4, 6, 196, 9, 92, 13, 135, 15,
-			160, 27, 45, 25, 37, 46, 47, 47, 48, 28, 7, 0, 120, 75, 135, 120, 120, 120, 60, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 73, 2, 15, 6, 176, 9,
-			208, 12, 16, 14, 160, 27, 0, 99, 58, 71, 121, 73, 58, 41, 11, 0, 120, 120, 150, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 115, 0, 4, 0, 5, 0,
-			236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 45, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120,
-			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 236, 0, 124, 1, 224, 6, 236, 9, 172, 13, 160, 15, 0, 27, 20, 18, 52, 38, 23, 18, 16, 18, 10, 0, 120, 60,
-			90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 4, 1, 57, 3, 216, 5, 20, 10, 172, 13, 241, 14, 64, 25, 50, 26, 33, 43, 58, 43, 44, 27,
-			5, 0, 120, 90, 135, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 137, 3, 252, 4, 236, 9, 188, 12, 41, 14, 64, 27, 0, 92, 46, 74,
-			100, 77, 70, 57, 12, 0, 120, 165, 135, 120, 120, 120, 120, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 115, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13,
-			160, 15, 0, 27, 50, 16, 48, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 154, 1, 78, 7,
-			20, 10, 192, 13, 185, 15, 224, 27, 20, 18, 48, 35, 19, 17, 13, 13, 7, 0, 120, 30, 120, 120, 120, 120, 60, 120, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 32, 1,
-			78, 2, 169, 6, 20, 10, 192, 13, 185, 15, 224, 27, 45, 26, 43, 42, 55, 45, 42, 29, 5, 0, 120, 75, 120, 120, 120, 120, 90, 75,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 240, 0, 58, 2, 125, 6, 20, 10, 92, 13, 48, 17, 224, 27, 0, 73, 48, 61, 95, 89, 78, 33, 7, 0, 120, 120, 120, 120,
-			120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 108, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 53, 33, 23, 14,
-			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 144, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 15, 15,
-			52, 31, 25, 18, 16, 18, 11, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 164, 1, 122, 7, 80, 10, 172, 13, 235, 15,
-			128, 27, 49, 23, 43, 38, 48, 50, 43, 29, 9, 0, 120, 75, 90, 120, 120, 120, 30, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 144, 1, 97, 8, 20, 10,
-			92, 13, 135, 15, 128, 27, 0, 81, 57, 73, 72, 90, 90, 58, 13, 0, 120, 105, 150, 120, 120, 120, 45, 105, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 107, 0, 4, 0, 5, 0,
-			220, 0, 164, 1, 133, 7, 20, 10, 52, 13, 29, 16, 0, 25, 45, 19, 54, 26, 9, 10, 9, 7, 8, 0, 120, 45, 120, 120, 120, 120,
-			75, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 220, 0, 164, 1, 249, 5, 196, 9, 108, 12, 141, 14, 128, 24, 20, 18, 52, 28, 18, 19, 10, 10, 8, 0, 120, 45,
-			120, 120, 120, 120, 75, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 252, 0, 224, 1, 18, 5, 196, 9, 228, 12, 41, 14, 128, 25, 43, 39, 54, 58, 54, 38, 37, 25,
-			12, 0, 120, 60, 120, 120, 120, 120, 90, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 224, 1, 178, 3, 236, 9, 8, 12, 222, 13, 128, 25, 0, 117, 65, 90,
-			99, 67, 78, 52, 17, 0, 120, 75, 150, 120, 120, 120, 90, 120, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 106, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13,
-			160, 15, 0, 27, 45, 18, 53, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 164, 1, 12, 7,
-			236, 9, 172, 13, 160, 15, 0, 27, 21, 17, 52, 39, 23, 16, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 150, 105, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1,
-			224, 1, 169, 6, 156, 9, 152, 13, 166, 14, 32, 27, 41, 27, 39, 45, 42, 41, 51, 30, 8, 0, 120, 75, 120, 120, 120, 120, 60, 90,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 105, 0, 205, 0, 208, 2, 252, 8, 88, 12, 76, 14, 32, 27, 35, 34, 36, 32, 40, 20,
+			20, 16, 9, 0, 117, 117, 153, 135, 135, 120, 117, 117, 153, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 209, 1, 68, 3, 100, 10, 104, 11, 141, 14, 32, 27, 0, 158,
+			47, 105, 110, 63, 58, 28, 23, 0, 120, 120, 135, 120, 120, 120, 120, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8,
+			88, 12, 91, 14, 32, 27, 70, 22, 51, 28, 30, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1,
+			84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 22, 51, 28, 30, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			184, 0, 164, 1, 153, 4, 132, 8, 128, 12, 254, 16, 64, 27, 0, 6, 28, 12, 16, 8, 6, 4, 3, 0, 120, 105, 120, 120, 120, 120,
+			75, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 20, 0, 2, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 20, 12, 38, 22, 25, 9, 12, 12,
+			5, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 48, 28,
+			32, 12, 16, 16, 6, 0, 120, 60, 135, 120, 120, 120, 75, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 115, 0, 3, 0, 5, 0, 196, 0, 114, 1, 56, 4, 252, 8, 88, 12,
+			91, 14, 32, 27, 65, 18, 46, 20, 36, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 196, 0, 114, 1, 56, 4,
+			252, 8, 88, 12, 91, 14, 32, 27, 50, 18, 48, 20, 28, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0,
+			114, 1, 36, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 12, 40, 17, 17, 6, 13, 13, 5, 0, 125, 60, 135, 120, 120, 120, 80, 75,
 			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 228, 0, 224, 1, 125, 6, 76, 9, 148, 12, 66, 14, 32, 27, 0, 102, 68, 83, 83, 94, 100, 68, 14, 0, 120, 90, 120, 120,
-			120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 60, 0, 3, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 16, 49, 35, 21, 13,
-			11, 13, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 22,
-			58, 41, 25, 16, 13, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15,
-			0, 27, 0, 22, 58, 41, 25, 16, 13, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 5, 0, 236, 0, 124, 1,
-			12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 20, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
+			80, 0, 4, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 35, 17, 54, 38, 23, 14,
+			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17,
+			54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0, 60, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 220, 5, 236, 9, 172, 13, 160, 15,
+			0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 53, 225, 0, 0, 0,
+			60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 94, 0, 4, 0, 5, 0, 236, 0, 124, 1,
+			114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 50, 16, 48, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120,
+			236, 0, 144, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 52, 36, 25, 18, 16, 18, 11, 0, 120, 60, 90, 120, 120, 120,
 			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 100, 0, 3, 0, 5, 0, 236, 0, 124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41, 24, 20, 16, 13,
-			8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 40, 23, 53, 41,
-			24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 124, 1, 244, 6, 236, 9, 172, 13, 160, 15, 0, 27,
-			0, 14, 42, 32, 20, 16, 12, 9, 6, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 4, 0, 5, 0, 236, 0, 224, 1, 44, 6,
-			252, 8, 144, 11, 180, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150,
-			150, 55, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0,
-			224, 1, 44, 6, 252, 8, 144, 11, 180, 15, 0, 27, 30, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135,
-			105, 44, 20, 150, 150, 55, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 236, 0, 224, 1, 44, 6, 252, 8, 144, 11, 180, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120,
-			120, 120, 30, 135, 105, 44, 20, 150, 150, 55, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 44, 6, 252, 8, 144, 11, 180, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0,
-			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 55, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 5, 0, 236, 0, 224, 1, 120, 5, 252, 8, 28, 12, 172, 13, 0, 27, 20, 18,
-			59, 30, 17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 120, 5, 252, 8, 28, 12, 172, 13,
-			0, 27, 0, 18, 59, 30, 17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 236, 0, 152, 1,
-			120, 5, 252, 8, 28, 12, 172, 13, 0, 27, 55, 19, 59, 30, 17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
+			0, 0, 1, 0, 32, 1, 18, 2, 4, 6, 196, 9, 92, 13, 135, 15, 160, 27, 45, 25, 37, 46, 47, 47, 48, 28, 7, 0, 120, 75,
+			135, 120, 120, 120, 60, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 73, 2, 15, 6, 176, 9, 208, 12, 16, 14, 160, 27, 0, 99, 58, 71, 121, 73, 58, 41,
+			11, 0, 120, 120, 150, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 115, 0, 4, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27,
+			45, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13,
+			160, 15, 0, 27, 20, 18, 52, 38, 23, 18, 16, 18, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 4, 1, 57, 3, 216, 5,
+			20, 10, 172, 13, 241, 14, 64, 25, 50, 26, 33, 43, 58, 43, 44, 27, 5, 0, 120, 90, 135, 120, 120, 120, 75, 90, 90, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0,
+			137, 3, 252, 4, 236, 9, 188, 12, 41, 14, 64, 27, 0, 92, 46, 74, 100, 77, 70, 57, 12, 0, 120, 165, 135, 120, 120, 120, 120, 90,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			115, 0, 4, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 50, 16, 48, 38, 23, 14, 12, 14, 8, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 154, 1, 164, 6, 20, 10, 192, 13, 185, 15, 224, 27, 20, 18, 48, 35, 19, 17,
+			13, 13, 7, 0, 120, 30, 120, 120, 120, 120, 60, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 32, 1, 78, 2, 169, 6, 20, 10, 192, 13, 185, 15, 224, 27, 45, 26,
+			43, 42, 55, 45, 42, 29, 5, 0, 120, 75, 120, 120, 120, 120, 90, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 58, 2, 125, 6, 20, 10, 92, 13, 48, 17,
+			224, 27, 0, 73, 48, 61, 95, 89, 78, 33, 7, 0, 120, 120, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 109, 0, 4, 0, 5, 0, 236, 0, 124, 1,
+			114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 53, 33, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0,
-			236, 0, 152, 1, 120, 5, 252, 8, 28, 12, 172, 13, 0, 27, 40, 19, 59, 30, 17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120,
+			236, 0, 144, 1, 214, 6, 236, 9, 172, 13, 160, 15, 0, 27, 15, 15, 52, 31, 25, 18, 16, 18, 11, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 236, 0, 164, 1, 122, 7, 80, 10, 172, 13, 235, 15, 128, 27, 49, 23, 43, 38, 48, 50, 43, 29, 9, 0, 120, 75,
+			90, 120, 120, 120, 30, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 144, 1, 97, 8, 20, 10, 92, 13, 135, 15, 128, 27, 0, 81, 57, 73, 72, 90, 90, 58,
+			13, 0, 120, 105, 150, 120, 120, 120, 45, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 108, 0, 4, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27,
+			45, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 220, 0, 164, 1, 249, 5, 196, 9, 108, 12,
+			141, 14, 128, 24, 20, 18, 52, 28, 18, 19, 10, 10, 8, 0, 120, 45, 120, 120, 120, 120, 75, 105, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 252, 0, 224, 1, 18, 5,
+			196, 9, 228, 12, 41, 14, 128, 25, 43, 38, 54, 58, 54, 38, 37, 25, 12, 0, 120, 60, 120, 120, 120, 120, 90, 105, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1,
+			224, 1, 178, 3, 236, 9, 8, 12, 222, 13, 128, 25, 0, 117, 65, 90, 99, 67, 78, 52, 17, 0, 120, 75, 150, 120, 120, 120, 90, 120,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			107, 0, 4, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 45, 19, 54, 38, 23, 14, 12, 14, 8, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 164, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 21, 17, 52, 39, 23, 16,
+			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 150, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 8, 1, 224, 1, 169, 6, 156, 9, 152, 13, 166, 14, 32, 27, 41, 26,
+			39, 45, 42, 41, 51, 30, 8, 0, 120, 75, 120, 120, 120, 120, 60, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 224, 1, 125, 6, 76, 9, 148, 12, 66, 14,
+			32, 27, 0, 102, 68, 83, 83, 94, 100, 68, 14, 0, 120, 90, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 60, 0, 3, 0, 5, 0, 236, 0, 124, 1,
+			12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 16, 49, 35, 21, 13, 11, 13, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 22, 58, 41, 25, 16, 13, 16, 8, 0, 120, 60, 90, 120, 120, 120,
 			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 236, 0, 152, 1, 120, 5, 252, 8, 28, 12, 172, 13, 0, 27, 0, 12, 48, 24, 14, 7, 7, 3, 7, 0, 120, 60,
+			0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 22, 58, 41, 25, 16, 13, 16, 8, 0, 120, 60,
 			90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 160, 15, 0, 27, 50, 29, 60, 48,
-			20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 51, 220, 10, 0, 0, 60, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 160, 15, 0, 27,
-			0, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 51, 220, 10, 0, 0, 60, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 4, 0, 5, 0, 204, 0, 214, 1, 92, 8,
-			24, 11, 172, 13, 160, 15, 0, 27, 45, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150,
-			150, 51, 220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0,
-			214, 1, 92, 8, 24, 11, 172, 13, 160, 15, 0, 27, 50, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135,
-			105, 44, 20, 150, 150, 50, 220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 4, 16, 0, 27, 0, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120,
-			120, 120, 45, 135, 105, 44, 20, 150, 150, 50, 220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 4, 16, 0, 27, 0, 29, 60, 48, 20, 24, 16, 16, 10, 0,
-			135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 50, 220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 145, 0, 6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 35, 22,
-			44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15,
-			0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11,
-			172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 16, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 200, 0, 112, 1,
-			252, 8, 104, 11, 172, 13, 160, 15, 112, 23, 20, 28, 36, 32, 24, 24, 16, 16, 4, 8, 110, 180, 160, 200, 200, 175, 110, 180, 160, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0,
-			204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 60, 30, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120,
+			0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 5, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27, 20, 19, 54, 38,
+			23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 124, 1, 114, 6, 236, 9, 172, 13, 160, 15, 0, 27,
+			0, 19, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 3, 0, 5, 0, 236, 0, 124, 1, 8, 7,
+			236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0,
+			124, 1, 8, 7, 236, 9, 172, 13, 160, 15, 0, 27, 40, 23, 53, 41, 24, 20, 16, 13, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 236, 0, 124, 1, 244, 6, 236, 9, 172, 13, 160, 15, 0, 27, 0, 14, 42, 32, 20, 16, 12, 9, 6, 0, 132, 60, 90, 120,
+			120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 75, 0, 4, 0, 5, 0, 236, 0, 224, 1, 104, 6, 136, 9, 144, 11, 180, 15, 0, 27, 45, 17, 54, 38, 23, 14,
+			12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 55, 225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 224, 1, 104, 6, 136, 9, 144, 11, 180, 15, 0, 27, 30, 17,
+			54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 55, 225, 0, 0, 0, 65, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 104, 6, 136, 9, 144, 11, 180, 15,
+			0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 55, 225, 0, 0, 0,
+			65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 224, 1, 104, 6, 136, 9,
+			144, 11, 180, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 150, 150, 55,
+			225, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 110, 0, 4, 0, 5, 0,
+			236, 0, 124, 1, 214, 6, 112, 8, 168, 12, 160, 15, 0, 27, 65, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 236, 0, 120, 1, 214, 6, 152, 8, 168, 12, 160, 15, 0, 27, 0, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60,
+			90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 196, 1, 24, 6, 36, 9, 168, 12, 10, 15, 48, 27, 45, 28, 40, 51, 51, 29, 29, 25,
+			13, 3, 143, 105, 112, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 86, 41, 79,
+			96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 130, 0, 4, 0, 5, 0, 236, 0, 124, 1, 214, 6, 112, 8, 228, 12,
+			160, 15, 0, 27, 60, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 214, 6,
+			176, 9, 228, 12, 160, 15, 0, 27, 20, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 6, 1,
+			130, 2, 255, 5, 30, 10, 72, 13, 48, 15, 144, 27, 50, 28, 38, 56, 43, 30, 23, 17, 8, 2, 168, 107, 97, 120, 120, 120, 30, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 32, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 88, 41, 90, 74, 54, 40, 25, 12, 6, 217, 155, 105, 120,
+			120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 115, 0, 4, 0, 5, 0, 236, 0, 124, 1, 214, 6, 112, 8, 228, 12, 160, 15, 0, 27, 50, 19, 54, 40, 23, 14,
+			12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 214, 6, 36, 9, 228, 12, 160, 15, 0, 27, 20, 19,
+			54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 22, 1, 226, 1, 249, 6, 0, 10, 228, 12, 88, 15,
+			240, 27, 45, 28, 41, 50, 45, 38, 30, 25, 9, 3, 182, 96, 124, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10,
+			104, 13, 15, 15, 224, 28, 0, 94, 44, 81, 86, 79, 61, 45, 15, 9, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 109, 0, 4, 0, 5, 0,
+			236, 0, 124, 1, 214, 6, 112, 8, 228, 12, 160, 15, 0, 27, 45, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 5, 0, 236, 0, 124, 1, 214, 6, 36, 9, 228, 12, 160, 15, 0, 27, 15, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60,
+			90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 192, 0, 126, 1, 148, 7, 0, 10, 228, 12, 105, 15, 48, 26, 49, 28, 36, 57, 39, 33, 30, 23,
+			10, 3, 140, 76, 105, 131, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 0, 112, 42, 110,
+			80, 73, 69, 44, 18, 8, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 113, 0, 4, 0, 5, 0, 236, 0, 124, 1, 214, 6, 112, 8, 128, 12,
+			160, 15, 0, 27, 50, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 214, 6,
+			36, 9, 128, 12, 160, 15, 0, 27, 20, 19, 54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 214, 0,
+			210, 1, 25, 5, 216, 9, 118, 12, 0, 15, 79, 27, 43, 28, 38, 54, 50, 28, 26, 19, 11, 3, 146, 101, 112, 120, 120, 120, 30, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 0, 150, 38, 92, 100, 55, 53, 31, 20, 8, 172, 142, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 107, 0, 4, 0, 5, 0, 236, 0, 124, 1, 214, 6, 112, 8, 228, 12, 160, 15, 0, 27, 45, 19, 54, 40, 23, 14,
+			12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 124, 1, 214, 6, 112, 8, 228, 12, 160, 15, 0, 27, 21, 19,
+			54, 40, 23, 14, 12, 16, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 206, 0, 94, 1, 25, 5, 212, 8, 228, 12, 110, 15,
+			200, 26, 41, 28, 28, 57, 36, 19, 18, 26, 11, 4, 148, 92, 96, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9,
+			12, 13, 60, 15, 144, 26, 0, 66, 8, 84, 56, 28, 28, 40, 16, 10, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 2, 0, 5, 0,
+			236, 0, 124, 1, 214, 6, 112, 8, 72, 13, 160, 15, 0, 27, 20, 23, 59, 44, 25, 15, 13, 17, 8, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 236, 0, 124, 1, 214, 6, 112, 8, 228, 12, 160, 15, 0, 27, 0, 23, 59, 44, 25, 15, 13, 17, 8, 0, 120, 60,
+			90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 95, 0, 3, 0, 5, 0, 236, 0, 152, 1, 120, 5, 252, 8, 28, 12, 172, 13, 0, 27, 55, 19, 59, 30,
+			17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 152, 1, 120, 5, 252, 8, 28, 12, 172, 13, 0, 27,
+			40, 19, 59, 30, 17, 8, 8, 4, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 152, 1, 120, 5, 252, 8, 28, 12,
+			172, 13, 0, 27, 0, 12, 48, 24, 14, 7, 7, 3, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 50, 0, 2, 0, 5, 0, 204, 0,
+			214, 1, 252, 8, 184, 11, 16, 14, 160, 15, 0, 27, 50, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135,
+			105, 44, 20, 150, 150, 51, 220, 10, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 160, 15, 0, 27, 0, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120,
+			120, 120, 45, 135, 105, 44, 20, 150, 150, 51, 220, 10, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 95, 0, 4, 0, 5, 0, 204, 0, 214, 1, 92, 8, 24, 11, 172, 13, 160, 15, 0, 27, 45, 29, 60, 48, 20, 24,
+			16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 51, 220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 214, 1, 92, 8, 24, 11, 172, 13, 160, 15, 0, 27, 50, 29,
+			60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 50, 220, 14, 0, 0, 60, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 214, 1, 252, 8, 184, 11, 16, 14, 4, 16,
+			0, 27, 0, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 50, 220, 14, 0, 0,
+			60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 214, 1, 252, 8, 184, 11,
+			16, 14, 4, 16, 0, 27, 0, 29, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 20, 150, 150, 50,
+			220, 14, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 145, 0, 6, 0, 5, 0,
+			204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 35, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120,
 			45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 87, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 100, 0, 5, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48,
-			20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27,
-			50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13,
-			160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 16, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 29, 1, 192, 8,
-			104, 11, 172, 13, 160, 15, 0, 29, 80, 16, 6, 42, 19, 30, 34, 22, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 72, 1,
-			157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 111, 52, 100, 84, 56, 48, 28, 12, 8, 207, 150, 105, 120, 120, 120, 237, 165,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			100, 0, 6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0,
-			135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21,
-			16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21,
-			46, 46, 25, 21, 17, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 184, 0, 88, 1, 56, 9, 112, 11, 132, 13, 80, 15,
-			162, 23, 25, 31, 20, 40, 20, 28, 24, 18, 4, 8, 177, 192, 197, 235, 220, 175, 177, 192, 197, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 0, 2, 36, 8, 88, 10,
-			112, 13, 160, 15, 162, 23, 35, 47, 30, 60, 33, 40, 39, 18, 6, 6, 177, 162, 152, 235, 235, 207, 177, 162, 152, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 88, 2,
-			128, 7, 20, 10, 72, 13, 100, 15, 162, 23, 0, 113, 44, 103, 54, 60, 68, 28, 8, 8, 120, 162, 235, 235, 235, 255, 120, 162, 235, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0,
-			6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60,
+			0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60,
 			90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16,
-			10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46,
-			25, 21, 17, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 36, 9, 204, 11, 172, 13, 160, 15, 0, 27,
-			20, 26, 49, 45, 22, 19, 19, 15, 9, 0, 128, 60, 90, 120, 120, 120, 67, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 184, 0, 83, 1, 232, 8, 139, 11, 126, 13,
-			98, 15, 219, 26, 25, 30, 33, 58, 34, 39, 39, 22, 12, 3, 138, 77, 101, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8,
-			4, 11, 52, 13, 0, 15, 160, 26, 0, 72, 10, 83, 73, 74, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 7, 0,
-			5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120,
+			0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 16, 16,
+			10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 200, 0, 112, 1, 252, 8, 104, 11, 172, 13, 160, 15, 112, 23, 20, 28, 36, 32,
+			24, 24, 16, 16, 4, 8, 110, 180, 160, 200, 200, 175, 110, 180, 160, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27,
+			60, 30, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12,
+			116, 14, 96, 27, 0, 87, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 5, 0, 5, 0, 204, 0,
+			120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120,
 			120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0,
-			135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21,
-			17, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 160, 0, 184, 1, 212, 8, 104, 11, 172, 13, 160, 15, 37, 23, 25, 29,
-			40, 32, 32, 20, 16, 16, 4, 8, 150, 187, 137, 187, 150, 237, 150, 187, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 216, 0, 248, 1, 64, 6, 176, 9, 68, 12, 176, 14,
-			37, 23, 25, 35, 39, 48, 30, 24, 21, 15, 3, 6, 150, 140, 182, 187, 222, 237, 150, 140, 182, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 216, 0, 60, 2, 136, 4, 176, 9,
-			8, 12, 216, 14, 218, 22, 30, 70, 52, 68, 52, 28, 28, 20, 4, 8, 182, 140, 182, 187, 222, 237, 182, 140, 182, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 232, 0, 64, 2,
-			252, 3, 120, 10, 68, 12, 216, 14, 193, 22, 0, 121, 36, 100, 64, 36, 44, 28, 8, 8, 182, 155, 145, 187, 222, 237, 182, 155, 145, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0,
-			6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60,
-			90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16,
-			10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 23, 48, 48,
-			26, 22, 18, 17, 11, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 176, 0, 120, 1, 152, 8, 104, 11, 172, 13, 160, 15, 62, 23,
-			25, 28, 40, 28, 23, 24, 16, 16, 4, 8, 150, 150, 170, 170, 237, 175, 150, 150, 170, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 167, 0, 116, 1, 48, 7, 186, 10, 34, 13,
-			76, 15, 61, 24, 35, 40, 44, 36, 28, 30, 23, 19, 8, 8, 153, 164, 164, 155, 202, 158, 150, 180, 170, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 144, 1, 172, 3,
-			36, 9, 224, 11, 136, 14, 144, 26, 0, 94, 36, 84, 72, 44, 40, 28, 20, 10, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 15, 0, 2, 0,
-			5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 15, 17, 45, 36, 15, 18, 12, 12, 7, 0, 135, 60, 90, 120,
-			120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 0, 30, 60, 48, 20, 24, 16, 16, 10, 0,
-			135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 150, 0, 5, 0, 5, 0, 204, 0, 112, 1, 92, 8, 184, 11, 172, 13, 160, 15, 0, 27, 30, 22,
-			44, 48, 24, 8, 8, 8, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 112, 1, 172, 8, 184, 11, 172, 13, 160, 15,
-			0, 27, 60, 24, 48, 48, 26, 8, 8, 8, 13, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 112, 1, 172, 8, 184, 11,
-			172, 13, 160, 15, 0, 27, 30, 24, 48, 48, 26, 8, 8, 8, 13, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59,
+			0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 16, 16, 10, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 180, 0, 29, 1, 192, 8, 104, 11, 172, 13, 160, 15, 0, 29, 80, 16, 6, 42, 19, 30,
+			34, 22, 6, 0, 120, 105, 120, 120, 120, 120, 45, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 111,
+			52, 100, 84, 56, 48, 28, 12, 8, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11,
+			172, 13, 160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1,
+			192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			204, 0, 120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 17, 16, 10, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 37, 0, 184, 0, 88, 1, 56, 9, 112, 11, 132, 13, 80, 15, 162, 23, 25, 31, 20, 40, 20, 28, 24, 18, 4, 8, 177, 192,
+			197, 235, 220, 175, 177, 192, 197, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 176, 0, 0, 2, 36, 8, 88, 10, 112, 13, 160, 15, 162, 23, 35, 47, 30, 60, 33, 40, 39, 18,
+			6, 6, 177, 162, 152, 235, 235, 207, 177, 162, 152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 88, 2, 128, 7, 20, 10, 72, 13, 100, 15, 162, 23, 0, 113, 44, 103,
+			54, 60, 68, 28, 8, 8, 120, 162, 235, 235, 235, 255, 120, 162, 235, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13,
+			160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8,
+			28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0,
+			120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 17, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			5, 0, 204, 0, 120, 1, 36, 9, 204, 11, 172, 13, 160, 15, 0, 27, 20, 26, 49, 45, 22, 19, 19, 15, 9, 0, 128, 60, 90, 120,
+			120, 120, 67, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 5, 0, 184, 0, 83, 1, 232, 8, 139, 11, 126, 13, 98, 15, 219, 26, 25, 30, 33, 58, 34, 39, 39, 22, 12, 3,
+			138, 77, 101, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 0, 72, 10, 83, 73, 74,
+			75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 7, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15,
+			0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12,
+			172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59,
 			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1,
-			172, 8, 184, 11, 172, 13, 160, 15, 0, 27, 30, 19, 38, 45, 38, 30, 15, 15, 9, 0, 120, 60, 95, 120, 120, 120, 30, 135, 110, 44,
+			252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 21, 46, 46, 25, 21, 17, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
 			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0,
-			200, 0, 144, 1, 172, 8, 184, 11, 172, 13, 160, 15, 112, 23, 0, 10, 20, 20, 28, 18, 10, 10, 2, 5, 110, 180, 160, 200, 200, 175,
-			110, 180, 160, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 90, 0, 4, 0, 5, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14,
-			8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38,
-			23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27,
-			0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13,
-			160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0,
-			0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0,
-			13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120,
-			120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 240, 0, 73, 2, 15, 6, 176, 9, 208, 12, 16, 14, 160, 27, 0, 99, 58, 71, 121, 73, 58, 41, 11, 0,
-			120, 120, 150, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13,
-			43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17,
-			224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 137, 3, 252, 4, 236, 9,
-			188, 12, 41, 14, 64, 27, 0, 92, 46, 74, 100, 77, 70, 57, 12, 0, 120, 165, 135, 120, 120, 120, 120, 90, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0,
-			240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120,
-			90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90,
+			160, 0, 184, 1, 212, 8, 104, 11, 172, 13, 160, 15, 37, 23, 25, 29, 40, 32, 32, 20, 16, 16, 4, 8, 150, 187, 137, 187, 150, 237,
+			150, 187, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 37, 0, 216, 0, 248, 1, 64, 6, 176, 9, 68, 12, 176, 14, 37, 23, 25, 35, 39, 48, 30, 24, 21, 15, 3, 6, 150, 140,
+			182, 187, 222, 237, 150, 140, 182, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 216, 0, 60, 2, 136, 4, 176, 9, 8, 12, 216, 14, 218, 22, 30, 70, 52, 68, 52, 28, 28, 20,
+			4, 8, 182, 140, 182, 187, 222, 237, 182, 140, 182, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 232, 0, 64, 2, 252, 3, 120, 10, 68, 12, 216, 14, 193, 22, 0, 121, 36, 100,
+			64, 36, 44, 28, 8, 8, 182, 155, 145, 187, 222, 237, 182, 155, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 6, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13,
+			160, 15, 0, 27, 50, 22, 44, 48, 20, 20, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8,
+			28, 12, 172, 13, 160, 15, 0, 27, 50, 22, 46, 46, 21, 21, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0,
+			120, 1, 252, 8, 104, 11, 172, 13, 160, 15, 0, 27, 0, 23, 48, 48, 26, 22, 18, 17, 11, 0, 120, 60, 90, 120, 120, 120, 30, 135,
+			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			37, 0, 176, 0, 120, 1, 152, 8, 104, 11, 172, 13, 160, 15, 62, 23, 25, 28, 40, 28, 23, 24, 16, 16, 4, 8, 150, 150, 170, 170,
+			237, 175, 150, 150, 170, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 37, 0, 167, 0, 116, 1, 48, 7, 186, 10, 34, 13, 76, 15, 61, 24, 35, 40, 44, 36, 28, 30, 23, 19, 8, 8,
+			153, 164, 164, 155, 202, 158, 150, 180, 170, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 144, 1, 172, 3, 36, 9, 224, 11, 136, 14, 144, 26, 0, 94, 36, 84, 72, 44,
+			40, 28, 20, 10, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 15, 0, 2, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13, 160, 15,
+			0, 27, 15, 17, 45, 36, 15, 18, 12, 12, 7, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 92, 8, 124, 11,
+			172, 13, 160, 15, 0, 27, 0, 30, 60, 48, 20, 24, 16, 16, 10, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 150, 0, 5, 0, 5, 0,
+			204, 0, 112, 1, 92, 8, 184, 11, 172, 13, 160, 15, 0, 27, 30, 22, 44, 48, 24, 8, 8, 8, 10, 0, 135, 60, 90, 120, 120, 120,
+			45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 5, 0, 204, 0, 112, 1, 172, 8, 184, 11, 172, 13, 160, 15, 0, 27, 60, 24, 48, 48, 26, 8, 8, 8, 13, 0, 135, 60,
+			90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 112, 1, 172, 8, 184, 11, 172, 13, 160, 15, 0, 27, 30, 24, 48, 48, 26, 8, 8, 8,
+			13, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 120, 1, 172, 8, 184, 11, 172, 13, 160, 15, 0, 27, 30, 19, 38, 45,
+			38, 30, 15, 15, 9, 0, 120, 60, 95, 120, 120, 120, 30, 135, 110, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 37, 0, 200, 0, 144, 1, 172, 8, 184, 11, 172, 13, 160, 15, 112, 23,
+			0, 10, 20, 20, 28, 18, 10, 10, 2, 5, 110, 180, 160, 200, 200, 175, 110, 180, 160, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 90, 0, 4, 0, 5, 0, 236, 0, 234, 1, 52, 8,
+			236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200,
+			200, 54, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0,
+			234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135,
+			105, 44, 20, 200, 200, 54, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120,
+			120, 120, 30, 135, 105, 44, 20, 200, 200, 50, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 1, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0,
+			120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 50, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 90, 0, 4, 0, 5, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 45, 17,
+			54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 236, 0, 234, 1, 52, 8, 236, 9, 172, 13, 160, 15,
+			0, 27, 45, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55, 230, 0, 0, 0,
+			60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 234, 1, 52, 8, 236, 9,
+			172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 20, 200, 200, 55,
+			230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 236, 0, 234, 1,
+			52, 8, 236, 9, 172, 13, 160, 15, 0, 27, 0, 17, 54, 38, 23, 14, 12, 14, 8, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
+			20, 200, 200, 55, 230, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0,
+			3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90,
 			165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 58, 2, 125, 6, 20, 10, 92, 13, 48, 17, 224, 27, 0, 73, 48, 61, 95, 89, 78, 33,
-			7, 0, 120, 120, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23,
-			50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14,
-			23, 17, 224, 23, 80, 13, 43, 11, 11, 10, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 144, 1, 97, 8,
-			20, 10, 92, 13, 135, 15, 128, 27, 0, 81, 57, 73, 72, 90, 90, 58, 13, 0, 120, 105, 150, 120, 120, 120, 45, 105, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0,
-			5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120,
-			120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0,
-			120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 224, 1, 178, 3, 236, 9, 8, 12, 222, 13, 128, 25, 0, 117, 65, 90, 99, 67,
-			78, 52, 17, 0, 120, 75, 150, 120, 120, 120, 90, 120, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17,
-			224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11,
-			76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0, 224, 1,
-			125, 6, 76, 9, 148, 12, 66, 14, 32, 27, 0, 102, 68, 83, 83, 94, 100, 68, 14, 0, 120, 90, 120, 120, 120, 120, 90, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 49, 0,
-			3, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16, 64, 27, 50, 39, 52, 19, 25, 54, 27, 19, 8, 0, 150, 120,
-			120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16, 64, 27, 0, 39, 52, 19, 25, 54, 27, 19,
-			8, 0, 150, 120, 120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16, 64, 27, 0, 39, 52, 19,
-			25, 54, 27, 19, 8, 0, 150, 120, 120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 2, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14,
-			23, 17, 224, 23, 70, 16, 48, 16, 16, 8, 8, 12, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 13, 2, 248, 9,
-			124, 11, 76, 14, 23, 17, 224, 23, 0, 16, 48, 16, 16, 8, 8, 12, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 30, 0, 2, 0,
-			5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 30, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120,
-			120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 0, 13, 43, 11, 11, 5, 7, 10, 3, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10,
+			3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 73, 2, 15, 6, 176, 9, 208, 12, 16, 14, 160, 27, 0, 99, 58, 71,
+			121, 73, 58, 41, 11, 0, 120, 120, 150, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14,
+			23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9,
+			124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 228, 0,
+			137, 3, 252, 4, 236, 9, 188, 12, 41, 14, 64, 27, 0, 92, 46, 74, 100, 77, 70, 57, 12, 0, 120, 165, 135, 120, 120, 120, 120, 90,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0,
 			120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 109, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 212, 13, 200, 15, 224, 23, 60, 24,
-			52, 20, 19, 10, 12, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 212, 13, 200, 15,
-			224, 23, 50, 24, 52, 20, 19, 10, 12, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 13, 2, 248, 9, 124, 11,
-			212, 13, 160, 15, 224, 23, 0, 14, 40, 14, 10, 5, 7, 9, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 41, 0, 5, 0, 1, 0,
-			116, 0, 13, 2, 64, 6, 196, 9, 84, 11, 72, 13, 96, 27, 16, 16, 18, 36, 37, 24, 19, 17, 9, 4, 167, 150, 135, 120, 120, 120,
+			0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5,
+			7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 58, 2, 125, 6, 20, 10, 92, 13, 48, 17, 224, 27, 0, 73,
+			48, 61, 95, 89, 78, 33, 7, 0, 120, 120, 120, 120, 120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11,
+			76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2,
+			248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 10, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			204, 0, 144, 1, 97, 8, 20, 10, 92, 13, 135, 15, 128, 27, 0, 81, 57, 73, 72, 90, 90, 58, 13, 0, 120, 105, 150, 120, 120, 120,
+			45, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10,
+			3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11,
+			11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 224, 1, 178, 3, 236, 9, 8, 12, 222, 13, 128, 25,
+			0, 117, 65, 90, 99, 67, 78, 52, 17, 0, 120, 75, 150, 120, 120, 120, 90, 120, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 129, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9,
+			124, 11, 76, 14, 23, 17, 224, 23, 50, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0,
+			13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 80, 13, 43, 11, 11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 228, 0, 224, 1, 125, 6, 76, 9, 148, 12, 66, 14, 32, 27, 0, 102, 68, 83, 83, 94, 100, 68, 14, 0, 120, 90, 120, 120,
+			120, 120, 90, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 49, 0, 3, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16, 64, 27, 50, 39, 52, 19, 25, 54,
+			27, 19, 8, 0, 150, 120, 120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16, 64, 27, 0, 39,
+			52, 19, 25, 54, 27, 19, 8, 0, 150, 120, 120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 12, 1, 249, 1, 61, 9, 96, 9, 152, 13, 29, 16,
+			64, 27, 0, 39, 52, 19, 25, 54, 27, 19, 8, 0, 150, 120, 120, 120, 120, 120, 135, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 2, 0, 5, 0, 240, 0, 13, 2,
+			248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 70, 16, 48, 16, 16, 8, 8, 12, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
+			240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 0, 16, 48, 16, 16, 8, 8, 12, 3, 0, 120, 90, 165, 120, 120, 120,
+			90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 30, 0, 2, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 30, 13, 43, 11, 11, 5, 7, 10,
+			3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 0, 13, 43, 11,
+			11, 5, 7, 10, 3, 0, 120, 90, 165, 120, 120, 120, 90, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 109, 0, 3, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 212, 13,
+			200, 15, 224, 23, 60, 24, 52, 20, 19, 10, 12, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9,
+			124, 11, 212, 13, 200, 15, 224, 23, 50, 24, 52, 20, 19, 10, 12, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 240, 0,
+			13, 2, 248, 9, 124, 11, 212, 13, 160, 15, 224, 23, 0, 14, 40, 14, 10, 5, 7, 9, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			41, 0, 5, 0, 1, 0, 116, 0, 13, 2, 64, 6, 196, 9, 84, 11, 72, 13, 96, 27, 16, 16, 18, 36, 37, 24, 19, 17, 9, 4,
+			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 116, 0, 13, 2, 64, 6, 196, 9, 84, 11, 72, 13, 96, 27, 0, 22, 22, 43, 39, 24,
+			22, 19, 12, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 216, 1, 64, 6, 196, 9, 228, 12, 60, 15, 124, 21, 25, 20,
+			12, 40, 24, 8, 0, 0, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9, 228, 12, 60, 15,
+			124, 21, 0, 17, 12, 36, 24, 8, 0, 0, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0,
+			45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9,
+			228, 12, 60, 15, 124, 21, 0, 17, 12, 36, 24, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51,
+			0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 53, 0, 5, 0, 1, 0,
+			116, 0, 13, 2, 176, 4, 196, 9, 84, 11, 72, 13, 96, 27, 18, 16, 18, 36, 37, 24, 19, 17, 9, 4, 167, 150, 135, 120, 120, 120,
 			197, 120, 120, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 17, 0, 116, 0, 13, 2, 64, 6, 196, 9, 84, 11, 72, 13, 96, 27, 0, 22, 22, 43, 39, 24, 22, 19, 12, 4, 167, 150,
+			0, 0, 17, 0, 116, 0, 13, 2, 20, 5, 196, 9, 84, 11, 72, 13, 96, 27, 0, 22, 22, 43, 39, 24, 22, 19, 12, 4, 167, 150,
 			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 216, 1, 64, 6, 196, 9, 228, 12, 60, 15, 124, 21, 25, 20, 12, 40, 24, 8, 0, 0,
+			0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21, 35, 20, 12, 40, 24, 8, 0, 0,
 			0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9, 228, 12, 60, 15, 124, 21, 0, 17, 12, 36,
+			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21, 0, 16, 12, 36,
 			24, 8, 0, 0, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9, 228, 12, 60, 15, 124, 21,
-			0, 17, 12, 36, 24, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 53, 0, 5, 0, 1, 0, 116, 0, 13, 2, 176, 4,
-			196, 9, 84, 11, 72, 13, 96, 27, 18, 16, 18, 36, 37, 24, 19, 17, 9, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 116, 0,
-			13, 2, 20, 5, 196, 9, 84, 11, 72, 13, 96, 27, 0, 22, 22, 43, 39, 24, 22, 19, 12, 4, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			5, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21, 35, 20, 12, 40, 24, 8, 0, 0, 0, 0, 200, 212, 187, 187,
-			205, 175, 200, 212, 187, 44, 45, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21, 0, 16, 12, 36, 24, 8, 0, 0, 0, 0,
-			200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21, 0, 16, 12, 36, 24, 8,
-			4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 27, 0, 3, 0, 5, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15,
-			124, 21, 28, 14, 7, 36, 21, 14, 14, 14, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 50, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 32, 8,
-			184, 11, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 47,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 216, 1,
-			64, 6, 32, 8, 184, 11, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44,
-			45, 70, 130, 47, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 34, 0,
-			4, 0, 5, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21, 12, 19, 8, 40, 32, 16, 16, 16, 0, 0, 200, 212,
-			187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21, 22, 4, 4, 20, 16, 8, 4, 8,
-			0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21, 0, 4, 4, 20,
-			16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21,
-			0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 35, 0, 2, 0, 5, 0, 136, 0, 216, 0, 220, 5,
-			46, 9, 228, 12, 24, 16, 124, 21, 35, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50,
-			85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0,
-			216, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
-			187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 224, 1, 24, 6, 196, 9, 228, 12, 60, 15, 124, 21,
+			0, 16, 12, 36, 24, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 45, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 27, 0, 3, 0, 5, 0, 136, 0, 8, 2, 64, 6,
+			252, 8, 184, 11, 100, 15, 124, 21, 28, 14, 7, 36, 21, 14, 14, 14, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70,
+			130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0,
+			216, 1, 64, 6, 32, 8, 184, 11, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212,
+			187, 44, 45, 70, 130, 47, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+			1, 0, 136, 0, 216, 1, 64, 6, 32, 8, 184, 11, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187,
+			205, 175, 200, 212, 187, 44, 45, 70, 130, 47, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 250, 0, 0, 34, 0, 4, 0, 5, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21, 12, 19, 8, 40, 32, 16,
+			16, 16, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 51, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15, 124, 21, 22, 4,
+			4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 8, 2, 64, 6, 252, 8, 184, 11, 100, 15,
+			124, 21, 0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 136, 0, 8, 2, 64, 6, 252, 8,
+			184, 11, 100, 15, 124, 21, 0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 45,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 35, 0, 2, 0, 5, 0,
+			136, 0, 216, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 35, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175,
+			200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
+			0, 0, 1, 0, 136, 0, 216, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212,
+			187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 250, 0, 0, 105, 0, 5, 0, 1, 0, 116, 0, 13, 2, 60, 5, 208, 7, 84, 11, 16, 14, 96, 27, 30, 13, 18, 33,
+			30, 22, 19, 17, 9, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 116, 0, 13, 2, 60, 5, 128, 7, 40, 10, 60, 15, 96, 27,
+			0, 19, 22, 39, 33, 26, 24, 8, 12, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 72, 2, 100, 5, 108, 7, 40, 10,
+			244, 11, 124, 21, 35, 14, 16, 32, 20, 20, 8, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 5, 0, 136, 0, 72, 2, 100, 5,
+			108, 7, 40, 10, 244, 11, 124, 21, 40, 14, 16, 32, 20, 20, 8, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0,
+			13, 2, 60, 5, 208, 7, 84, 11, 16, 14, 96, 27, 0, 19, 22, 39, 36, 26, 23, 20, 11, 5, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
 			64, 0, 5, 0, 1, 0, 116, 0, 13, 2, 60, 5, 208, 7, 84, 11, 16, 14, 96, 27, 30, 13, 18, 33, 30, 22, 19, 17, 9, 4,
 			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 250, 0, 0, 17, 0, 116, 0, 13, 2, 60, 5, 128, 7, 40, 10, 60, 15, 96, 27, 0, 19, 22, 39, 33, 26,
@@ -1813,11 +1902,11 @@ FilesInMemory create_espeakdata_phons () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 4, 1, 200, 3, 108, 7, 248, 12, 41, 14, 32, 27, 0, 24,
 			25, 34, 24, 15, 19, 19, 7, 0, 120, 135, 180, 120, 120, 120, 120, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 58, 0, 3, 0, 5, 0, 116, 0, 208, 0, 104, 6, 40, 10,
-			232, 13, 24, 16, 124, 21, 58, 7, 12, 16, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 50,
+			232, 13, 24, 16, 124, 21, 58, 7, 12, 16, 8, 4, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 50,
 			0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 208, 0,
-			104, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 7, 12, 16, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
+			104, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 7, 12, 16, 8, 4, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
 			30, 50, 85, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			116, 0, 208, 0, 104, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 7, 12, 16, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175,
+			116, 0, 208, 0, 104, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 7, 12, 16, 8, 4, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175,
 			200, 212, 187, 44, 30, 50, 85, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250,
 			0, 0, 70, 0, 3, 0, 1, 0, 116, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 70, 3, 9, 9, 4, 2, 2, 2,
 			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 50, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3763,506 +3852,501 @@ FilesInMemory create_espeakdata_phons () {
 			0, 11, 21, 253, 254, 4, 13, 15, 5, 7, 13, 17, 5, 2, 8, 13, 3, 27, 255, 249, 20, 22, 11, 17, 13, 0, 240, 244, 14, 252,
 			245, 249, 1, 4, 3, 251, 254, 240, 246, 2, 5, 253, 248, 2, 7, 22, 16, 9, 3, 0, 250, 3, 10, 3, 1, 0, 247, 6, 12, 254,
 			252, 1, 2, 4, 0, 253, 9, 11, 13, 10, 6, 5, 255, 249, 242, 247, 251, 244, 0, 4, 2, 255, 0, 4, 250, 253, 7, 20, 19, 15,
-			7, 0, 149, 3, 54, 0, 2, 2, 2, 1, 1, 0, 1, 0, 5, 4, 0, 254, 252, 255, 0, 3, 4, 2, 255, 255, 0, 1, 2, 2,
-			2, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 255, 0,
-			0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
-			255, 255, 255, 0, 255, 255, 254, 254, 254, 253, 254, 252, 253, 254, 253, 253, 253, 255, 255, 254, 254, 253, 253, 254, 255, 255, 253, 255, 255, 254,
-			255, 255, 254, 255, 0, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 2, 2, 2, 1, 3, 2, 2, 1, 3, 255, 0, 3, 5, 5, 3,
-			1, 0, 255, 0, 2, 3, 2, 0, 255, 254, 254, 0, 0, 0, 0, 0, 1, 0, 1, 0, 255, 255, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
-			255, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 254, 254, 253, 254, 253, 253, 254, 253, 253, 253, 254, 254, 254, 255, 254,
-			255, 255, 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 254, 254, 253, 254, 254, 254, 253, 253, 255, 254, 254, 255, 0, 0, 253, 254, 254,
-			255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 2, 0, 2, 1, 0, 1,
-			1, 1, 2, 3, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 1, 1, 1, 1, 2,
-			1, 2, 1, 2, 2, 2, 2, 2, 3, 4, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 4, 3, 4, 4, 3, 4, 4, 5, 4, 4,
-			4, 4, 4, 8, 9, 3, 2, 0, 1, 4, 6, 8, 6, 2, 2, 1, 4, 5, 6, 5, 6, 4, 5, 5, 5, 4, 5, 4, 5, 5,
-			6, 4, 6, 7, 6, 9, 11, 13, 16, 18, 19, 16, 11, 7, 4, 4, 16, 13, 5, 4, 6, 9, 8, 5, 9, 6, 4, 6, 3, 2,
-			4, 1, 3, 1, 0, 3, 4, 0, 7, 4, 6, 5, 6, 7, 5, 7, 10, 9, 10, 13, 15, 18, 21, 25, 37, 44, 54, 62, 97, 127,
-			100, 111, 114, 59, 79, 86, 68, 72, 61, 54, 67, 54, 33, 50, 33, 25, 1, 244, 237, 220, 227, 242, 231, 235, 231, 227, 247, 234, 235, 236,
-			238, 246, 230, 239, 253, 249, 9, 18, 23, 23, 23, 18, 21, 43, 32, 27, 35, 19, 18, 21, 7, 5, 20, 7, 7, 5, 245, 251, 249, 249,
-			250, 247, 234, 229, 228, 219, 228, 229, 223, 235, 237, 233, 233, 238, 237, 249, 246, 242, 247, 235, 237, 246, 252, 253, 0, 6, 6, 12, 12, 8,
-			20, 21, 19, 23, 19, 6, 16, 14, 13, 18, 12, 9, 14, 12, 7, 14, 11, 11, 16, 12, 8, 12, 8, 12, 19, 15, 16, 18, 17, 18,
-			26, 25, 28, 31, 30, 30, 31, 25, 26, 27, 25, 25, 22, 11, 13, 18, 19, 16, 15, 7, 4, 253, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			7, 0, 198, 2, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 1, 2, 0, 3, 1, 2, 1, 3, 253, 0, 3,
+			5, 5, 3, 0, 255, 254, 0, 2, 3, 2, 0, 254, 252, 253, 0, 0, 255, 0, 0, 1, 0, 0, 255, 253, 254, 0, 1, 0, 0, 0,
+			0, 0, 255, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1,
+			0, 1, 0, 0, 1, 0, 0, 2, 1, 2, 1, 3, 2, 1, 2, 1, 2, 0, 0, 0, 255, 0, 255, 255, 0, 0, 0, 255, 0, 0,
+			0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 1, 1,
+			255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 2, 0, 2,
+			1, 0, 0, 1, 0, 1, 2, 2, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 255, 255,
+			255, 255, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 0, 2, 2,
+			3, 2, 2, 2, 3, 1, 7, 8, 1, 0, 254, 0, 1, 5, 6, 4, 0, 0, 255, 1, 3, 3, 3, 3, 1, 2, 2, 2, 0, 1,
+			0, 1, 1, 1, 0, 1, 1, 0, 3, 5, 7, 11, 13, 13, 9, 3, 254, 249, 249, 6, 2, 247, 245, 249, 250, 250, 245, 249, 245, 241,
+			244, 238, 237, 239, 235, 236, 233, 230, 234, 235, 229, 238, 233, 235, 234, 234, 235, 232, 234, 237, 236, 236, 239, 242, 245, 250, 254, 12, 20, 33,
+			43, 87, 125, 92, 105, 109, 41, 66, 75, 52, 59, 45, 37, 53, 37, 12, 33, 13, 4, 230, 214, 206, 185, 195, 215, 201, 208, 204, 199, 225,
+			211, 212, 215, 218, 229, 210, 222, 241, 237, 2, 14, 22, 23, 23, 18, 22, 51, 38, 32, 43, 24, 23, 27, 11, 9, 28, 12, 13, 11, 247,
+			254, 253, 253, 254, 250, 235, 228, 227, 216, 227, 228, 221, 236, 238, 233, 233, 238, 237, 251, 247, 241, 247, 232, 234, 245, 252, 253, 0, 8, 6,
+			14, 13, 8, 22, 23, 20, 24, 18, 2, 12, 10, 7, 14, 5, 2, 7, 3, 253, 5, 1, 0, 6, 2, 253, 0, 252, 0, 7, 3, 3,
+			6, 4, 6, 16, 15, 18, 21, 20, 20, 22, 15, 15, 17, 14, 15, 11, 254, 0, 7, 8, 5, 4, 251, 247, 238, 243, 244, 244, 244, 245,
+			245, 246, 246, 247, 247, 247, 248, 248, 249, 249, 250, 250, 251, 251, 251, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, 255, 0, 0, 0, 0,
+			0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+			2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 9,
+			28, 0, 246, 0, 11, 13, 16, 12, 252, 240, 252, 15, 15, 16, 10, 244, 239, 3, 22, 20, 15, 12, 3, 249, 3, 27, 35, 29, 13, 0,
+			3, 22, 23, 31, 32, 8, 9, 5, 3, 14, 23, 19, 16, 0, 247, 6, 27, 17, 250, 248, 253, 0, 15, 22, 255, 250, 0, 249, 7, 8,
+			7, 14, 7, 255, 253, 12, 12, 254, 16, 28, 8, 3, 8, 14, 13, 16, 8, 6, 13, 12, 9, 8, 12, 1, 242, 1, 25, 28, 15, 239,
+			230, 237, 14, 31, 22, 11, 234, 215, 245, 22, 37, 25, 13, 242, 218, 234, 15, 31, 31, 28, 11, 243, 237, 248, 17, 38, 26, 246, 233, 18,
+			40, 25, 3, 240, 241, 7, 31, 33, 28, 14, 249, 245, 0, 14, 27, 27, 12, 21, 10, 247, 251, 19, 25, 20, 19, 17, 2, 255, 20, 23,
+			1, 4, 10, 17, 11, 0, 8, 18, 255, 6, 250, 4, 30, 11, 1, 254, 8, 11, 251, 251, 22, 29, 15, 6, 243, 1, 34, 31, 9, 0,
+			6, 21, 7, 21, 23, 19, 25, 15, 247, 44, 47, 242, 235, 19, 32, 22, 29, 16, 246, 252, 4, 9, 25, 25, 11, 234, 232, 0, 20, 31,
+			15, 253, 230, 226, 246, 29, 27, 242, 246, 252, 1, 254, 246, 255, 2, 5, 3, 251, 248, 11, 0, 250, 20, 5, 244, 242, 14, 14, 12, 23,
+			247, 221, 255, 23, 23, 34, 16, 208, 211, 24, 52, 18, 232, 240, 13, 2, 0, 13, 16, 2, 232, 239, 9, 18, 39, 23, 229, 216, 245, 30,
+			43, 34, 16, 244, 234, 248, 26, 43, 34, 22, 6, 3, 5, 13, 27, 21, 31, 25, 15, 9, 10, 17, 14, 8, 30, 30, 14, 251, 236, 18,
+			48, 34, 246, 232, 3, 13, 17, 16, 11, 5, 242, 247, 249, 6, 21, 20, 20, 245, 219, 242, 18, 22, 20, 17, 254, 237, 243, 20, 38, 20,
+			8, 4, 240, 249, 27, 37, 28, 7, 254, 238, 247, 25, 45, 34, 1, 243, 244, 2, 32, 42, 17, 243, 245, 12, 20, 22, 23, 254, 254, 14,
+			18, 18, 23, 26, 20, 250, 248, 16, 27, 29, 24, 18, 3, 244, 1, 36, 35, 7, 254, 7, 14, 14, 13, 17, 250, 245, 10, 15, 18, 16,
+			240, 233, 11, 17, 4, 253, 11, 20, 251, 238, 251, 8, 12, 9, 240, 246, 14, 19, 5, 244, 252, 253, 247, 251, 9, 15, 5, 249, 243, 252,
+			8, 11, 251, 252, 248, 240, 1, 14, 25, 13, 221, 213, 9, 45, 25, 251, 250, 7, 251, 255, 6, 254, 13, 33, 20, 241, 248, 7, 32, 28,
+			248, 251, 18, 7, 17, 41, 21, 219, 238, 16, 34, 42, 20, 254, 3, 0, 244, 26, 50, 27, 245, 252, 16, 9, 5, 28, 44, 40, 255, 232,
+			255, 43, 55, 23, 254, 11, 30, 17, 22, 27, 13, 252, 0, 53, 52, 14, 0, 233, 4, 25, 15, 15, 29, 13, 247, 2, 246, 227, 11, 41,
+			14, 252, 252, 248, 241, 226, 252, 42, 11, 242, 241, 245, 11, 5, 233, 231, 13, 43, 27, 236, 227, 251, 3, 13, 23, 9, 14, 26, 2, 234,
+			2, 29, 10, 14, 2, 252, 2, 31, 25, 235, 214, 252, 20, 49, 24, 227, 241, 4, 253, 242, 15, 42, 5, 243, 255, 239, 239, 3, 31, 58,
+			15, 248, 249, 252, 26, 60, 244, 230, 49, 25, 252, 32, 59, 33, 252, 249, 235, 250, 52, 54, 22, 17, 251, 216, 242, 36, 35, 218, 225, 61,
+			27, 215, 2, 20, 195, 215, 49, 34, 1, 13, 254, 5, 10, 242, 228, 235, 53, 89, 1, 239, 28, 7, 241, 42, 63, 240, 249, 32, 9, 12,
+			18, 41, 34, 249, 0, 17, 244, 3, 40, 24, 241, 3, 28, 219, 232, 33, 19, 242, 253, 21, 8, 12, 1, 239, 248, 9, 8, 17, 35, 3,
+			11, 40, 0, 255, 41, 26, 250, 36, 27, 7, 26, 59, 7, 206, 20, 52, 252, 10, 38, 252, 245, 238, 7, 35, 33, 12, 244, 202, 219, 33,
+			35, 221, 226, 39, 26, 239, 232, 0, 9, 29, 26, 223, 228, 18, 47, 16, 3, 35, 253, 0, 35, 35, 6, 237, 28, 38, 3, 15, 34, 8,
+			12, 42, 8, 167, 235, 92, 89, 245, 191, 238, 0, 6, 37, 37, 227, 239, 7, 250, 249, 25, 28, 251, 224, 7, 19, 252, 21, 33, 2, 249,
+			19, 10, 16, 28, 11, 251, 245, 20, 32, 18, 38, 5, 221, 238, 69, 47, 232, 246, 1, 243, 13, 37, 26, 3, 255, 220, 249, 39, 251, 244,
+			23, 15, 21, 14, 250, 246, 12, 49, 252, 232, 22, 32, 16, 28, 10, 218, 11, 32, 20, 36, 20, 8, 240, 232, 14, 48, 39, 0, 2, 49,
+			34, 253, 247, 10, 26, 40, 38, 254, 251, 14, 32, 52, 9, 201, 249, 75, 29, 4, 33, 0, 218, 6, 5, 0, 17, 41, 20, 235, 248, 38,
+			8, 195, 217, 15, 56, 28, 12, 247, 238, 237, 240, 19, 21, 18, 24, 19, 6, 248, 203, 235, 55, 51, 14, 17, 25, 8, 5, 216, 224, 55,
+			83, 14, 227, 10, 59, 28, 209, 208, 13, 43, 22, 10, 254, 4, 13, 235, 202, 252, 24, 8, 38, 11, 232, 230, 9, 254, 224, 235, 54, 44,
+			254, 248, 246, 255, 251, 214, 245, 67, 69, 15, 238, 231, 241, 4, 18, 46, 52, 22, 3, 7, 17, 240, 239, 250, 30, 75, 46, 254, 3, 15,
+			246, 213, 245, 72, 68, 4, 0, 253, 249, 4, 244, 5, 67, 75, 21, 211, 229, 10, 241, 252, 63, 80, 51, 5, 197, 199, 1, 26, 240, 30,
+			63, 16, 246, 227, 0, 250, 222, 223, 252, 69, 85, 3, 208, 250, 7, 0, 55, 27, 235, 17, 14, 254, 0, 56, 64, 247, 248, 35, 22, 5,
+			5, 8, 45, 34, 248, 12, 35, 35, 1, 253, 230, 245, 38, 55, 43, 236, 201, 255, 9, 252, 37, 39, 232, 221, 12, 4, 224, 3, 49, 26,
+			243, 255, 5, 229, 254, 29, 26, 12, 248, 0, 12, 12, 58, 59, 245, 205, 225, 14, 46, 18, 0, 25, 34, 254, 230, 236, 3, 15, 234, 220,
+			43, 76, 16, 221, 227, 250, 227, 210, 10, 62, 30, 236, 226, 241, 11, 0, 241, 3, 240, 7, 28, 32, 2, 247, 247, 246, 251, 42, 96, 34,
+			250, 245, 239, 225, 241, 60, 123, 59, 237, 230, 252, 240, 12, 32, 32, 33, 10, 1, 12, 10, 245, 243, 14, 25, 9, 248, 13, 29, 13, 237,
+			228, 22, 51, 40, 14, 248, 0, 236, 252, 26, 37, 40, 11, 2, 8, 5, 248, 212, 1, 66, 25, 243, 27, 31, 246, 215, 234, 13, 21, 42,
+			42, 255, 220, 229, 21, 44, 251, 251, 16, 17, 16, 0, 229, 242, 20, 48, 23, 6, 249, 243, 16, 2, 231, 17, 53, 28, 11, 20, 15, 20,
+			249, 228, 254, 25, 39, 37, 2, 8, 14, 1, 230, 230, 11, 46, 37, 19, 248, 228, 248, 16, 15, 14, 14, 18, 20, 225, 233, 23, 253, 246,
+			31, 26, 14, 251, 253, 20, 37, 7, 212, 216, 42, 53, 16, 28, 9, 228, 243, 35, 62, 13, 211, 234, 1, 32, 46, 12, 248, 21, 30, 243,
+			208, 245, 36, 29, 4, 0, 252, 250, 255, 8, 18, 16, 240, 10, 31, 246, 244, 13, 28, 8, 10, 22, 18, 5, 241, 13, 16, 5, 36, 65,
+			27, 229, 234, 20, 4, 6, 36, 50, 42, 242, 218, 1, 20, 0, 2, 237, 14, 49, 25, 0, 0, 227, 192, 238, 63, 54, 26, 26, 254, 218,
+			240, 0, 245, 40, 52, 24, 29, 31, 250, 223, 230, 34, 54, 2, 12, 46, 14, 230, 4, 42, 34, 0, 255, 239, 245, 25, 32, 21, 244, 237,
+			11, 2, 242, 12, 33, 2, 242, 248, 1, 29, 55, 46, 227, 210, 2, 20, 252, 10, 39, 45, 255, 218, 0, 27, 2, 2, 25, 0, 250, 8,
+			24, 39, 29, 251, 252, 4, 4, 11, 5, 250, 252, 26, 29, 1, 242, 0, 44, 15, 218, 238, 4, 0, 55, 51, 228, 233, 23, 26, 1, 11,
+			31, 12, 13, 9, 236, 240, 27, 64, 40, 241, 239, 24, 0, 236, 249, 33, 50, 6, 225, 2, 6, 2, 5, 245, 253, 25, 33, 249, 234, 10,
+			6, 234, 246, 45, 61, 22, 245, 228, 222, 250, 22, 53, 38, 6, 5, 17, 15, 11, 253, 239, 254, 41, 31, 13, 26, 30, 22, 250, 254, 7,
+			251, 4, 28, 39, 30, 16, 5, 245, 253, 6, 247, 237, 33, 69, 7, 2, 16, 255, 236, 237, 245, 22, 71, 64, 0, 245, 242, 231, 252, 17,
+			36, 19, 33, 35, 0, 224, 249, 34, 3, 225, 4, 43, 41, 28, 12, 211, 205, 22, 39, 6, 15, 22, 246, 251, 17, 11, 253, 251, 2, 11,
+			248, 251, 48, 67, 1, 207, 232, 5, 37, 37, 250, 240, 22, 51, 0, 223, 13, 39, 9, 239, 10, 42, 6, 232, 11, 27, 233, 249, 40, 19,
+			17, 13, 217, 209, 16, 44, 19, 5, 32, 17, 214, 241, 38, 13, 248, 36, 58, 6, 219, 244, 31, 28, 18, 7, 0, 23, 29, 4, 238, 240,
+			254, 29, 39, 254, 230, 22, 51, 3, 210, 240, 25, 30, 8, 246, 0, 4, 0, 12, 27, 19, 241, 235, 8, 27, 27, 14, 11, 11, 6, 250,
+			6, 25, 33, 31, 25, 253, 226, 245, 25, 34, 17, 22, 27, 43, 29, 205, 203, 19, 53, 28, 7, 22, 36, 28, 0, 225, 227, 4, 44, 58,
+			55, 22, 231, 219, 230, 25, 48, 16, 24, 48, 0, 209, 238, 1, 22, 43, 12, 3, 20, 15, 253, 240, 234, 6, 34, 31, 27, 11, 248, 247,
+			6, 12, 253, 0, 26, 32, 16, 0, 248, 5, 30, 17, 254, 20, 26, 252, 4, 20, 22, 16, 1, 243, 253, 18, 5, 6, 29, 23, 248, 237,
+			5, 245, 234, 20, 40, 4, 236, 2, 17, 6, 12, 247, 222, 2, 22, 23, 36, 37, 13, 230, 238, 238, 241, 14, 46, 58, 27, 254, 253, 17,
+			13, 229, 223, 24, 68, 56, 5, 254, 15, 19, 7, 223, 240, 50, 61, 16, 245, 252, 12, 253, 248, 4, 16, 10, 15, 254, 248, 18, 6, 250,
+			243, 8, 29, 13, 254, 6, 11, 251, 3, 18, 32, 12, 241, 7, 30, 25, 15, 10, 7, 2, 11, 15, 16, 18, 14, 17, 9, 3, 252, 6,
+			31, 12, 249, 7, 18, 7, 10, 5, 247, 250, 18, 24, 5, 0, 15, 3, 245, 253, 16, 34, 30, 8, 234, 231, 10, 32, 18, 23, 35, 13,
+			241, 254, 16, 19, 19, 13, 16, 34, 30, 18, 2, 0, 3, 0, 12, 24, 23, 16, 11, 7, 251, 5, 25, 8, 252, 10, 36, 25, 240, 242,
+			6, 6, 7, 14, 22, 42, 24, 239, 231, 244, 255, 9, 9, 28, 53, 30, 240, 227, 249, 7, 5, 0, 12, 32, 32, 255, 250, 6, 254, 252,
+			14, 21, 16, 11, 13, 8, 248, 250, 9, 18, 26, 24, 1, 243, 2, 16, 10, 241, 252, 27, 29, 12, 16, 0, 247, 0, 0, 7, 22, 20,
+			7, 18, 9, 254, 14, 26, 15, 253, 249, 4, 28, 25, 2, 233, 0, 47, 37, 2, 1, 248, 233, 8, 30, 18, 11, 22, 12, 254, 4, 24,
+			26, 4, 254, 12, 12, 251, 12, 27, 23, 20, 11, 255, 254, 13, 13, 248, 254, 3, 6, 11, 20, 19, 1, 0, 252, 251, 7, 6, 250, 18,
+			20, 0, 19, 30, 10, 245, 240, 244, 0, 29, 53, 37, 3, 249, 241, 238, 8, 33, 33, 17, 12, 7, 246, 0, 21, 6, 250, 8, 32, 34,
+			0, 241, 0, 8, 1, 252, 1, 16, 23, 8, 248, 249, 4, 10, 253, 0, 14, 9, 2, 20, 29, 15, 1, 250, 252, 9, 33, 35, 21, 21,
+			16, 250, 251, 5, 11, 14, 11, 9, 7, 14, 24, 0, 239, 248, 254, 2, 15, 18, 8, 12, 13, 248, 233, 236, 5, 25, 14, 12, 18, 2,
+			249, 251, 3, 9, 17, 16, 22, 29, 10, 0, 6, 6, 10, 6, 6, 22, 27, 23, 22, 8, 250, 251, 9, 4, 1, 20, 29, 23, 15, 9,
+			8, 7, 7, 255, 252, 5, 15, 30, 35, 22, 253, 241, 254, 251, 248, 19, 28, 15, 3, 6, 10, 2, 0, 4, 10, 13, 19, 17, 254, 0,
+			21, 21, 0, 0, 24, 30, 14, 12, 9, 246, 251, 16, 12, 7, 22, 29, 8, 248, 8, 21, 9, 10, 10, 0, 0, 16, 24, 19, 6, 3,
+			1, 5, 15, 23, 10, 249, 245, 5, 15, 18, 15, 13, 5, 250, 234, 253, 26, 36, 31, 255, 237, 6, 23, 4, 8, 21, 18, 10, 9, 13,
+			16, 13, 6, 10, 13, 18, 18, 16, 8, 2, 250, 246, 8, 33, 28, 14, 15, 12, 254, 249, 2, 14, 5, 0, 3, 15, 30, 6, 246, 11,
+			6, 234, 240, 8, 26, 22, 2, 240, 247, 8, 15, 12, 0, 0, 0, 0, 21, 41, 20, 236, 243, 22, 23, 10, 10, 18, 15, 0, 252, 1,
+			6, 14, 23, 24, 17, 3, 0, 2, 250, 246, 2, 26, 38, 34, 6, 240, 244, 252, 7, 13, 2, 19, 37, 12, 247, 250, 4, 5, 5, 15,
+			15, 11, 16, 12, 255, 3, 9, 3, 11, 29, 30, 15, 5, 15, 10, 250, 252, 4, 18, 24, 21, 10, 15, 18, 2, 247, 248, 253, 10, 20,
+			23, 15, 5, 5, 0, 245, 0, 9, 8, 14, 17, 15, 9, 5, 252, 246, 0, 13, 18, 13, 12, 12, 3, 253, 255, 6, 6, 6, 9, 1,
+			3, 15, 12, 4, 2, 254, 0, 11, 16, 0, 249, 7, 14, 6, 1, 253, 254, 7, 20, 8, 255, 9, 11, 255, 2, 18, 12, 3, 8, 17,
+			12, 4, 15, 19, 8, 3, 8, 17, 21, 16, 14, 4, 2, 12, 11, 1, 8, 18, 20, 14, 4, 253, 249, 0, 0, 0, 58, 6, 43, 0,
+			255, 15, 12, 13, 10, 254, 255, 18, 15, 8, 0, 0, 6, 19, 19, 0, 4, 10, 0, 22, 11, 0, 2, 10, 17, 9, 15, 251, 249, 21,
+			15, 16, 17, 253, 235, 14, 31, 13, 14, 250, 254, 6, 13, 20, 26, 249, 241, 2, 35, 47, 254, 213, 0, 34, 21, 2, 13, 7, 251, 252,
+			10, 13, 9, 11, 13, 13, 248, 228, 254, 35, 40, 250, 249, 0, 238, 17, 30, 27, 6, 254, 1, 3, 14, 0, 10, 29, 18, 3, 3, 254,
+			243, 6, 46, 32, 246, 237, 17, 21, 253, 18, 2, 250, 12, 26, 9, 254, 2, 3, 10, 10, 7, 9, 0, 249, 236, 23, 34, 255, 0, 246,
+			12, 22, 220, 1, 31, 12, 245, 247, 8, 10, 3, 247, 245, 40, 24, 214, 242, 29, 5, 0, 23, 246, 0, 10, 246, 21, 21, 227, 239, 41,
+			36, 239, 229, 253, 24, 33, 253, 242, 3, 2, 9, 14, 253, 253, 17, 21, 235, 240, 40, 23, 230, 10, 18, 3, 246, 1, 23, 9, 252, 17,
+			13, 236, 13, 29, 221, 250, 64, 246, 236, 22, 251, 8, 5, 254, 20, 15, 14, 243, 237, 7, 17, 12, 27, 44, 213, 196, 12, 46, 31, 11,
+			228, 209, 255, 42, 24, 232, 243, 8, 0, 3, 1, 253, 3, 4, 12, 6, 252, 219, 250, 49, 22, 246, 8, 7, 254, 235, 48, 71, 222, 197,
+			16, 58, 12, 233, 26, 86, 244, 132, 36, 89, 6, 250, 13, 21, 238, 225, 19, 27, 43, 20, 236, 216, 244, 39, 33, 234, 249, 236, 234, 255,
+			48, 41, 171, 171, 46, 60, 244, 0, 22, 240, 209, 7, 47, 24, 5, 249, 9, 247, 10, 23, 254, 29, 22, 12, 31, 15, 22, 250, 12, 55,
+			2, 0, 40, 3, 8, 28, 247, 23, 44, 17, 245, 215, 7, 54, 19, 237, 7, 254, 3, 16, 247, 225, 249, 74, 46, 193, 178, 17, 90, 4,
+			206, 5, 19, 36, 247, 207, 246, 53, 15, 251, 28, 0, 225, 10, 55, 16, 216, 6, 60, 3, 1, 26, 9, 9, 25, 17, 227, 12, 19, 251,
+			36, 17, 244, 244, 31, 34, 228, 239, 4, 49, 12, 245, 38, 6, 212, 214, 22, 47, 33, 4, 226, 249, 12, 249, 248, 39, 251, 217, 0, 54,
+			17, 236, 252, 255, 253, 240, 10, 45, 10, 19, 2, 199, 251, 33, 48, 3, 232, 26, 2, 240, 41, 7, 210, 11, 42, 25, 5, 209, 214, 56,
+			52, 254, 0, 231, 248, 39, 7, 230, 19, 29, 245, 246, 10, 44, 239, 197, 20, 52, 18, 228, 229, 27, 6, 247, 2, 18, 10, 35, 20, 225,
+			219, 13, 56, 38, 219, 252, 249, 240, 40, 35, 40, 227, 223, 11, 3, 43, 7, 226, 25, 32, 252, 235, 18, 14, 7, 40, 6, 202, 239, 45,
+			36, 9, 19, 224, 192, 23, 118, 5, 165, 233, 34, 66, 18, 251, 238, 245, 21, 10, 233, 32, 48, 3, 215, 247, 56, 11, 230, 24, 35, 213,
+			227, 51, 30, 214, 2, 47, 0, 242, 25, 3, 220, 232, 39, 25, 8, 45, 227, 185, 36, 69, 251, 208, 61, 64, 154, 2, 83, 248, 21, 8,
+			251, 0, 232, 0, 46, 38, 42, 1, 187, 254, 33, 237, 36, 50, 0, 225, 251, 36, 216, 247, 55, 44, 196, 240, 72, 199, 7, 32, 222, 30,
+			42, 225, 249, 55, 250, 213, 14, 27, 46, 252, 239, 46, 251, 196, 3, 47, 48, 249, 180, 36, 67, 215, 8, 52, 232, 234, 21, 246, 34, 46,
+			0, 226, 235, 27, 65, 252, 210, 230, 25, 81, 240, 214, 39, 37, 244, 1, 202, 242, 70, 15, 247, 250, 238, 72, 27, 156, 0, 71, 255, 250,
+			21, 250, 251, 42, 0, 229, 21, 24, 15, 233, 243, 51, 222, 254, 102, 239, 189, 1, 30, 26, 1, 10, 249, 232, 45, 10, 254, 44, 14, 174,
+			226, 78, 43, 0, 216, 245, 57, 6, 227, 221, 254, 73, 30, 11, 205, 193, 19, 39, 24, 30, 252, 9, 26, 214, 206, 253, 60, 54, 30, 244,
+			176, 195, 48, 94, 247, 211, 33, 36, 249, 213, 2, 30, 232, 42, 47, 204, 43, 64, 158, 227, 94, 250, 196, 79, 87, 167, 177, 16, 41, 23,
+			32, 36, 220, 237, 240, 10, 40, 235, 8, 22, 29, 15, 212, 230, 244, 50, 35, 246, 28, 229, 248, 15, 9, 216, 255, 36, 72, 53, 205, 233,
+			229, 229, 48, 2, 26, 38, 12, 23, 240, 186, 12, 45, 222, 23, 22, 241, 70, 3, 189, 236, 52, 34, 226, 252, 82, 7, 211, 241, 10, 251,
+			20, 63, 241, 4, 255, 235, 69, 234, 255, 16, 234, 36, 24, 190, 255, 63, 52, 37, 217, 153, 26, 54, 17, 43, 28, 232, 240, 250, 11, 239,
+			6, 16, 54, 41, 203, 245, 14, 222, 14, 30, 18, 15, 238, 4, 20, 25, 51, 196, 149, 68, 73, 28, 13, 24, 19, 208, 205, 247, 11, 14,
+			79, 20, 234, 23, 219, 211, 237, 32, 57, 26, 237, 20, 12, 186, 247, 41, 52, 20, 12, 29, 0, 161, 193, 97, 100, 22, 205, 249, 13, 12,
+			12, 224, 7, 29, 222, 6, 81, 37, 226, 201, 233, 33, 25, 21, 10, 27, 21, 215, 206, 250, 41, 38, 248, 10, 248, 253, 26, 5, 190, 230,
+			99, 80, 238, 189, 215, 11, 47, 30, 47, 53, 189, 226, 0, 209, 30, 59, 16, 17, 30, 250, 194, 239, 20, 24, 13, 13, 9, 17, 240, 253,
+			20, 0, 235, 229, 255, 56, 51, 228, 224, 23, 253, 10, 248, 235, 21, 35, 31, 250, 18, 254, 215, 17, 36, 41, 235, 228, 8, 238, 21, 33,
+			27, 14, 239, 232, 222, 23, 27, 247, 9, 61, 18, 193, 217, 32, 51, 228, 253, 44, 46, 253, 188, 209, 33, 80, 5, 241, 239, 3, 2, 1,
+			3, 240, 16, 22, 245, 244, 15, 25, 234, 3, 41, 218, 214, 20, 36, 31, 1, 239, 4, 33, 249, 210, 13, 32, 20, 254, 0, 26, 0, 35,
+			44, 236, 214, 6, 27, 31, 15, 242, 15, 13, 45, 14, 191, 225, 69, 30, 35, 24, 178, 223, 31, 28, 253, 240, 41, 50, 238, 238, 217, 228,
+			250, 37, 50, 29, 247, 245, 25, 245, 236, 253, 41, 58, 241, 249, 21, 26, 252, 205, 2, 18, 54, 29, 2, 0, 255, 244, 0, 40, 251, 219,
+			24, 30, 35, 25, 233, 5, 14, 244, 246, 250, 29, 8, 234, 28, 16, 241, 243, 250, 14, 220, 232, 53, 45, 15, 246, 247, 236, 229, 4, 40,
+			73, 40, 237, 201, 10, 0, 245, 45, 5, 23, 40, 12, 228, 225, 253, 20, 23, 38, 24, 227, 10, 42, 251, 217, 248, 12, 36, 37, 0, 12,
+			233, 234, 28, 9, 224, 4, 3, 22, 10, 6, 247, 8, 242, 235, 18, 32, 26, 236, 211, 24, 74, 10, 224, 248, 39, 7, 236, 6, 36, 38,
+			28, 245, 224, 2, 252, 243, 6, 57, 70, 13, 198, 201, 240, 9, 42, 54, 14, 245, 15, 245, 239, 8, 249, 6, 51, 34, 13, 0, 232, 247,
+			237, 27, 45, 12, 232, 13, 46, 32, 2, 242, 245, 255, 11, 248, 246, 18, 55, 41, 254, 224, 243, 237, 243, 255, 254, 0, 57, 68, 248, 212,
+			225, 233, 21, 21, 5, 26, 16, 237, 234, 3, 30, 255, 242, 14, 4, 18, 32, 21, 254, 247, 242, 244, 1, 75, 50, 3, 16, 231, 214, 247,
+			40, 35, 12, 8, 33, 0, 204, 252, 12, 1, 23, 58, 8, 228, 0, 9, 232, 4, 35, 2, 14, 27, 234, 227, 250, 28, 38, 2, 2, 245,
+			227, 243, 18, 27, 10, 254, 6, 20, 5, 248, 218, 15, 44, 14, 8, 18, 27, 253, 228, 249, 253, 32, 54, 15, 247, 255, 241, 223, 11, 62,
+			39, 249, 251, 29, 254, 216, 254, 17, 47, 49, 17, 243, 241, 6, 245, 244, 28, 42, 19, 11, 246, 239, 246, 10, 27, 7, 249, 13, 11, 255,
+			19, 255, 243, 8, 0, 1, 13, 16, 12, 253, 15, 4, 233, 252, 25, 7, 255, 21, 22, 0, 253, 12, 252, 247, 252, 10, 25, 38, 14, 242,
+			255, 10, 5, 9, 16, 15, 244, 249, 23, 25, 1, 3, 7, 250, 1, 2, 14, 23, 15, 240, 245, 15, 12, 0, 6, 17, 10, 1, 243, 249,
+			13, 23, 0, 8, 16, 1, 7, 6, 1, 1, 10, 6, 12, 9, 7, 11, 5, 0, 3, 4, 8, 18, 2, 251, 10, 29, 25, 246, 237, 244,
+			16, 31, 23, 8, 0, 252, 251, 5, 7, 12, 18, 9, 4, 250, 251, 10, 5, 1, 9, 17, 255, 254, 11, 10, 7, 0, 2, 8, 2, 12,
+			14, 1, 8, 3, 243, 6, 20, 8, 250, 0, 16, 11, 2, 7, 4, 249, 4, 12, 10, 8, 4, 13, 14, 1, 0, 1, 6, 8, 5, 0,
+			2, 10, 7, 6, 250, 247, 4, 8, 12, 15, 4, 248, 244, 1, 10, 5, 2, 6, 13, 8, 251, 251, 12, 8, 246, 250, 4, 12, 12, 11,
+			9, 1, 250, 248, 4, 4, 5, 19, 19, 7, 255, 255, 6, 17, 11, 1, 10, 24, 7, 2, 10, 10, 254, 2, 22, 13, 254, 0, 9, 14,
+			7, 3, 2, 4, 8, 12, 11, 11, 10, 10, 13, 17, 2, 2, 14, 20, 11, 8, 27, 13, 254, 14, 13, 7, 8, 10, 13, 14, 13, 6,
+			6, 3, 3, 4, 0, 0, 254, 6, 29, 0, 249, 255, 10, 5, 11, 0, 255, 254, 2, 4, 4, 9, 252, 250, 6, 2, 10, 255, 239, 0,
+			12, 11, 0, 249, 246, 4, 12, 253, 253, 254, 18, 254, 236, 235, 13, 24, 254, 244, 246, 0, 5, 7, 3, 248, 0, 1, 241, 250, 12, 11,
+			3, 4, 2, 0, 247, 251, 2, 5, 14, 3, 254, 2, 234, 8, 31, 5, 238, 248, 252, 255, 20, 4, 243, 9, 5, 253, 246, 0, 253, 13,
+			2, 8, 242, 233, 18, 30, 5, 237, 235, 253, 11, 10, 10, 253, 235, 6, 9, 5, 255, 245, 254, 7, 5, 2, 244, 239, 255, 21, 16, 242,
+			0, 20, 239, 237, 18, 2, 251, 4, 254, 6, 247, 3, 31, 3, 0, 255, 226, 243, 29, 21, 244, 242, 9, 22, 255, 231, 243, 19, 12, 241,
+			248, 18, 4, 225, 254, 23, 6, 246, 240, 13, 6, 249, 18, 255, 243, 251, 11, 5, 248, 2, 246, 2, 15, 19, 7, 230, 233, 16, 12, 13,
+			5, 226, 232, 18, 41, 13, 232, 229, 6, 12, 10, 0, 237, 252, 7, 11, 10, 247, 244, 254, 0, 9, 0, 238, 10, 30, 4, 240, 241, 243,
+			17, 8, 2, 1, 245, 4, 12, 255, 255, 0, 6, 12, 251, 247, 8, 242, 238, 4, 24, 25, 253, 232, 227, 255, 42, 255, 247, 249, 252, 13,
+			10, 8, 255, 228, 245, 17, 10, 11, 236, 226, 21, 42, 252, 248, 228, 229, 16, 39, 14, 238, 3, 249, 240, 22, 254, 11, 236, 228, 26, 48,
+			3, 201, 0, 5, 40, 13, 211, 230, 14, 23, 253, 11, 247, 247, 248, 246, 29, 25, 247, 224, 224, 253, 41, 48, 228, 236, 247, 239, 51, 32,
+			208, 228, 17, 38, 14, 1, 250, 239, 230, 1, 38, 19, 230, 237, 28, 22, 243, 235, 5, 2, 244, 250, 8, 7, 0, 239, 238, 34, 9, 218,
+			3, 34, 233, 213, 22, 42, 23, 222, 219, 246, 47, 19, 226, 249, 1, 19, 18, 244, 255, 248, 233, 247, 20, 38, 253, 235, 44, 17, 195, 251,
+			49, 252, 231, 239, 0, 30, 20, 247, 247, 6, 242, 2, 4, 254, 248, 1, 39, 2, 214, 236, 26, 27, 250, 236, 237, 11, 22, 249, 0, 252,
+			249, 254, 249, 9, 0, 248, 17, 27, 235, 225, 252, 37, 40, 240, 194, 0, 31, 3, 240, 251, 28, 18, 14, 234, 226, 2, 23, 4, 2, 10,
+			1, 12, 236, 232, 3, 18, 247, 19, 25, 233, 225, 16, 13, 239, 245, 13, 254, 237, 43, 63, 225, 153, 231, 53, 35, 7, 2, 243, 211, 255,
+			33, 15, 224, 214, 36, 62, 9, 9, 249, 183, 240, 40, 33, 29, 233, 252, 239, 243, 55, 4, 198, 220, 33, 74, 29, 211, 211, 241, 8, 36,
+			16, 0, 227, 211, 22, 245, 9, 16, 20, 10, 214, 231, 5, 30, 230, 242, 38, 28, 25, 228, 220, 248, 249, 35, 47, 2, 215, 227, 21, 4,
+			255, 19, 6, 242, 209, 19, 54, 2, 233, 240, 0, 255, 28, 248, 228, 17, 12, 7, 8, 0, 249, 227, 24, 18, 4, 242, 232, 16, 8, 10,
+			240, 4, 15, 224, 223, 246, 36, 21, 48, 10, 195, 212, 253, 44, 22, 2, 249, 233, 6, 235, 2, 13, 38, 13, 194, 235, 0, 14, 247, 6,
+			77, 8, 171, 234, 49, 223, 9, 61, 249, 35, 11, 183, 241, 27, 24, 29, 253, 181, 215, 72, 81, 240, 222, 18, 11, 233, 211, 223, 81, 32,
+			184, 215, 65, 36, 215, 203, 247, 88, 18, 171, 223, 45, 29, 248, 229, 2, 31, 240, 190, 255, 66, 39, 4, 216, 255, 253, 236, 7, 27, 19,
+			233, 246, 42, 6, 230, 2, 22, 0, 249, 239, 8, 31, 246, 244, 235, 11, 18, 239, 237, 7, 25, 12, 254, 245, 243, 253, 37, 8, 221, 242,
+			43, 19, 196, 204, 33, 63, 7, 242, 191, 221, 45, 79, 26, 210, 185, 4, 55, 1, 223, 7, 35, 228, 217, 1, 78, 51, 177, 165, 41, 81,
+			4, 244, 223, 223, 83, 37, 213, 253, 17, 234, 235, 5, 32, 16, 236, 199, 229, 22, 86, 37, 174, 179, 20, 52, 29, 250, 222, 207, 10, 85,
+			36, 222, 182, 196, 48, 69, 20, 240, 235, 23, 7, 228, 251, 220, 246, 87, 66, 198, 140, 43, 80, 14, 4, 16, 203, 157, 7, 60, 59, 20,
+			225, 223, 26, 24, 235, 216, 175, 7, 46, 31, 20, 73, 23, 131, 204, 73, 27, 204, 249, 25, 10, 14, 36, 21, 204, 213, 11, 57, 18, 197,
+			198, 251, 68, 58, 235, 14, 235, 157, 215, 27, 125, 87, 175, 148, 13, 44, 26, 36, 228, 196, 8, 13, 39, 52, 234, 148, 252, 96, 60, 18,
+			170, 155, 64, 84, 234, 187, 225, 8, 19, 240, 9, 17, 14, 247, 192, 42, 73, 250, 236, 224, 238, 76, 33, 176, 218, 49, 47, 252, 223, 252,
+			248, 244, 63, 32, 164, 21, 52, 195, 211, 23, 44, 9, 225, 248, 57, 210, 246, 102, 208, 191, 37, 2, 227, 29, 53, 220, 242, 15, 15, 205,
+			238, 40, 27, 30, 216, 218, 12, 21, 220, 202, 23, 105, 37, 140, 208, 60, 7, 219, 35, 42, 232, 244, 255, 47, 46, 189, 167, 246, 55, 90,
+			12, 207, 162, 222, 64, 81, 47, 236, 173, 222, 81, 42, 243, 182, 203, 46, 46, 30, 202, 207, 24, 63, 20, 36, 23, 164, 163, 255, 77, 100,
+			250, 187, 223, 0, 245, 35, 71, 220, 196, 232, 18, 31, 21, 251, 239, 71, 224, 160, 15, 4, 10, 93, 12, 190, 241, 234, 187, 48, 59, 24,
+			21, 193, 215, 5, 25, 2, 232, 254, 12, 33, 248, 0, 240, 1, 41, 18, 5, 252, 232, 247, 42, 31, 201, 12, 74, 223, 229, 16, 20, 12,
+			242, 226, 235, 1, 14, 44, 0, 179, 245, 19, 187, 8, 107, 253, 186, 234, 44, 3, 216, 3, 24, 224, 3, 34, 1, 232, 7, 238, 201, 48,
+			67, 242, 2, 252, 10, 33, 225, 224, 8, 1, 14, 84, 243, 166, 34, 67, 222, 188, 51, 114, 230, 187, 180, 6, 114, 37, 200, 190, 254, 10,
+			20, 28, 21, 38, 187, 198, 9, 60, 3, 166, 245, 106, 43, 156, 233, 0, 33, 43, 177, 220, 32, 22, 0, 252, 226, 10, 77, 235, 165, 244,
+			62, 6, 247, 29, 251, 47, 252, 176, 221, 110, 44, 229, 12, 236, 222, 61, 26, 209, 237, 29, 36, 17, 211, 211, 8, 56, 11, 211, 6, 233,
+			217, 7, 61, 3, 221, 226, 251, 33, 246, 223, 42, 242, 214, 21, 50, 243, 240, 253, 226, 19, 47, 56, 220, 192, 245, 29, 33, 19, 220, 230,
+			44, 38, 238, 5, 221, 174, 98, 43, 206, 245, 250, 57, 250, 214, 27, 254, 197, 23, 55, 254, 172, 1, 72, 14, 201, 233, 54, 15, 203, 0,
+			69, 232, 240, 227, 223, 47, 77, 0, 182, 238, 51, 50, 243, 166, 19, 39, 234, 254, 47, 4, 215, 11, 10, 223, 253, 40, 55, 210, 235, 10,
+			7, 16, 176, 223, 96, 77, 210, 164, 212, 16, 90, 54, 162, 218, 10, 13, 65, 13, 185, 210, 36, 41, 37, 17, 214, 245, 238, 0, 54, 35,
+			217, 223, 20, 16, 227, 212, 60, 33, 221, 230, 12, 16, 22, 242, 229, 43, 240, 194, 14, 15, 223, 39, 70, 244, 186, 236, 46, 53, 233, 174,
+			9, 64, 12, 251, 220, 4, 31, 3, 218, 244, 30, 240, 14, 30, 18, 238, 40, 243, 163, 224, 74, 45, 198, 249, 255, 33, 3, 227, 10, 253,
+			254, 250, 31, 44, 254, 10, 215, 205, 29, 26, 212, 234, 23, 5, 10, 18, 241, 230, 45, 1, 218, 4, 37, 31, 192, 220, 50, 56, 234, 248,
+			14, 216, 11, 240, 11, 67, 210, 233, 21, 248, 214, 0, 39, 35, 0, 215, 35, 10, 210, 255, 16, 228, 210, 92, 61, 222, 189, 247, 21, 247,
+			10, 9, 24, 224, 220, 27, 68, 6, 193, 233, 48, 28, 204, 250, 49, 29, 221, 211, 23, 7, 248, 6, 10, 21, 255, 251, 214, 221, 29, 23,
+			0, 237, 8, 252, 241, 23, 23, 246, 216, 0, 22, 246, 29, 32, 230, 197, 26, 63, 6, 224, 247, 37, 43, 0, 210, 254, 236, 228, 77, 21,
+			174, 206, 15, 49, 14, 234, 227, 252, 251, 0, 9, 19, 5, 246, 1, 4, 17, 239, 208, 252, 30, 66, 46, 3, 199, 192, 6, 67, 66, 246,
+			199, 215, 66, 72, 220, 202, 255, 14, 27, 253, 216, 235, 242, 0, 57, 42, 191, 155, 229, 72, 49, 222, 0, 253, 188, 233, 21, 27, 16, 31,
+			9, 193, 213, 78, 55, 0, 237, 227, 36, 54, 22, 212, 221, 12, 74, 68, 206, 186, 27, 74, 27, 195, 216, 12, 0, 252, 5, 23, 1, 212,
+			208, 234, 50, 53, 240, 225, 199, 232, 15, 18, 10, 202, 207, 4, 19, 43, 23, 247, 4, 254, 238, 253, 22, 32, 238, 232, 66, 75, 222, 207,
+			225, 10, 61, 55, 242, 200, 239, 32, 14, 0, 240, 255, 21, 6, 239, 34, 20, 204, 246, 9, 235, 234, 255, 9, 0, 29, 0, 208, 220, 0,
+			58, 54, 217, 180, 253, 19, 37, 64, 251, 194, 219, 254, 28, 254, 253, 254, 29, 50, 0, 173, 212, 57, 74, 16, 223, 245, 2, 242, 8, 42,
+			0, 243, 4, 253, 9, 27, 241, 217, 1, 34, 36, 1, 223, 217, 250, 28, 30, 236, 224, 239, 242, 14, 20, 253, 232, 212, 232, 78, 65, 192,
+			166, 235, 42, 66, 14, 225, 228, 230, 12, 67, 48, 221, 208, 249, 29, 42, 44, 10, 201, 208, 52, 69, 230, 218, 24, 30, 20, 239, 208, 235,
+			23, 40, 29, 10, 249, 227, 205, 219, 4, 39, 27, 232, 224, 254, 28, 35, 231, 193, 228, 37, 9, 244, 255, 7, 33, 246, 225, 234, 246, 250,
+			16, 48, 37, 243, 204, 242, 35, 64, 19, 210, 219, 231, 243, 14, 43, 51, 32, 237, 206, 2, 19, 3, 2, 236, 252, 29, 9, 234, 8, 46,
+			9, 223, 234, 12, 24, 252, 229, 247, 249, 9, 16, 1, 233, 6, 14, 245, 250, 255, 251, 242, 252, 5, 6, 10, 233, 223, 5, 22, 12, 249,
+			4, 247, 240, 245, 27, 29, 231, 235, 26, 34, 15, 248, 223, 247, 14, 3, 0, 3, 22, 13, 230, 239, 43, 54, 236, 219, 233, 253, 19, 18,
+			9, 0, 5, 7, 0, 240, 236, 1, 18, 251, 16, 12, 239, 234, 5, 11, 242, 247, 12, 33, 250, 241, 0, 234, 240, 0, 10, 235, 219, 248,
+			0, 0, 72, 4, 48, 0, 20, 243, 243, 32, 248, 1, 249, 9, 17, 225, 246, 27, 7, 231, 12, 8, 254, 5, 245, 255, 15, 0, 210, 26,
+			28, 197, 8, 36, 238, 7, 245, 247, 30, 237, 0, 26, 235, 38, 16, 183, 40, 43, 183, 12, 55, 228, 255, 252, 3, 23, 227, 10, 24, 231,
+			32, 245, 220, 36, 4, 231, 28, 21, 247, 248, 8, 10, 208, 244, 18, 3, 226, 205, 40, 40, 222, 255, 22, 236, 18, 0, 0, 24, 243, 19,
+			14, 230, 2, 246, 237, 4, 242, 4, 37, 244, 5, 20, 2, 235, 220, 29, 82, 188, 216, 75, 243, 253, 253, 249, 27, 238, 242, 8, 1, 245,
+			16, 236, 228, 42, 48, 202, 236, 53, 231, 231, 36, 0, 249, 21, 204, 52, 228, 214, 65, 198, 214, 110, 251, 205, 32, 48, 10, 222, 0, 19,
+			228, 251, 10, 201, 8, 74, 235, 229, 251, 251, 253, 31, 233, 206, 66, 30, 205, 3, 6, 23, 248, 211, 15, 23, 249, 237, 6, 10, 33, 240,
+			201, 49, 22, 215, 247, 24, 24, 9, 240, 6, 47, 249, 228, 42, 5, 211, 1, 12, 37, 16, 216, 2, 29, 218, 208, 17, 249, 33, 1, 200,
+			46, 7, 228, 239, 255, 17, 232, 235, 35, 27, 222, 232, 17, 7, 240, 237, 17, 23, 216, 234, 44, 21, 240, 7, 44, 1, 224, 248, 48, 13,
+			217, 5, 20, 26, 0, 3, 17, 1, 214, 243, 42, 246, 232, 32, 31, 235, 243, 6, 243, 240, 7, 15, 4, 8, 244, 241, 254, 8, 4, 3,
+			0, 236, 237, 243, 23, 227, 0, 51, 196, 200, 76, 45, 201, 231, 15, 27, 249, 253, 9, 249, 37, 18, 194, 16, 69, 213, 211, 9, 19, 26,
+			244, 8, 23, 20, 238, 210, 9, 59, 221, 205, 82, 52, 181, 231, 26, 7, 230, 238, 37, 17, 4, 226, 239, 40, 32, 234, 203, 5, 38, 235,
+			228, 40, 220, 0, 65, 208, 210, 41, 26, 213, 238, 35, 43, 213, 228, 63, 217, 234, 22, 255, 8, 253, 233, 0, 47, 244, 5, 12, 2, 10,
+			240, 42, 240, 230, 46, 237, 234, 28, 24, 250, 3, 254, 237, 253, 10, 26, 213, 246, 87, 224, 155, 58, 64, 172, 167, 58, 52, 206, 0, 26,
+			252, 239, 238, 239, 233, 37, 16, 236, 245, 27, 20, 237, 30, 14, 225, 2, 17, 2, 254, 30, 10, 241, 18, 32, 10, 241, 251, 255, 13, 254,
+			234, 39, 4, 245, 17, 220, 0, 37, 243, 193, 36, 47, 195, 193, 76, 60, 177, 244, 40, 245, 210, 236, 255, 2, 252, 26, 3, 254, 45, 201,
+			196, 60, 238, 231, 53, 18, 244, 24, 245, 222, 20, 14, 2, 15, 242, 249, 246, 38, 28, 219, 235, 48, 49, 201, 228, 44, 16, 218, 17, 0,
+			10, 26, 1, 233, 226, 35, 19, 223, 208, 40, 25, 217, 1, 217, 24, 34, 242, 229, 238, 55, 48, 159, 183, 75, 51, 251, 229, 244, 41, 253,
+			179, 249, 66, 42, 229, 212, 47, 29, 212, 0, 25, 3, 2, 30, 19, 234, 0, 221, 20, 39, 235, 249, 5, 11, 5, 192, 232, 67, 0, 223,
+			20, 234, 12, 30, 212, 234, 4, 12, 7, 217, 15, 46, 217, 244, 6, 240, 23, 39, 236, 226, 30, 17, 242, 248, 1, 18, 251, 255, 255, 0,
+			11, 11, 0, 251, 16, 23, 241, 0, 11, 16, 248, 239, 245, 16, 12, 216, 0, 3, 10, 43, 246, 227, 13, 254, 205, 1, 47, 31, 234, 194,
+			35, 66, 234, 210, 228, 6, 62, 226, 202, 43, 19, 193, 227, 54, 33, 17, 228, 240, 254, 14, 14, 186, 30, 126, 219, 166, 31, 42, 248, 214,
+			231, 52, 2, 1, 39, 191, 228, 68, 227, 212, 63, 37, 3, 227, 215, 35, 31, 226, 0, 8, 250, 17, 240, 219, 18, 23, 253, 214, 0, 51,
+			0, 209, 21, 51, 242, 202, 252, 43, 8, 250, 16, 7, 18, 242, 218, 36, 13, 194, 246, 35, 12, 255, 219, 251, 71, 10, 189, 233, 15, 13,
+			0, 227, 41, 64, 236, 191, 212, 17, 36, 1, 215, 52, 43, 216, 186, 4, 65, 11, 236, 3, 16, 245, 253, 24, 5, 222, 15, 19, 2, 21,
+			243, 227, 32, 11, 200, 5, 58, 22, 220, 225, 21, 10, 14, 224, 185, 57, 66, 197, 248, 25, 230, 254, 249, 242, 26, 24, 238, 240, 253, 33,
+			14, 244, 26, 240, 206, 244, 8, 22, 20, 4, 4, 7, 16, 221, 225, 18, 33, 231, 235, 35, 24, 22, 238, 240, 253, 4, 8, 234, 236, 2,
+			21, 6, 30, 250, 221, 18, 6, 233, 244, 17, 22, 254, 244, 4, 21, 17, 241, 213, 16, 23, 223, 253, 18, 255, 5, 3, 225, 24, 4, 245,
+			239, 217, 27, 44, 247, 2, 7, 6, 0, 210, 244, 50, 9, 247, 9, 0, 20, 216, 232, 53, 11, 230, 2, 248, 8, 30, 250, 237, 241, 35,
+			50, 252, 210, 225, 6, 11, 8, 7, 22, 254, 231, 253, 255, 3, 15, 252, 241, 14, 11, 236, 230, 227, 250, 22, 22, 2, 7, 21, 0, 230,
+			253, 31, 9, 235, 245, 16, 13, 229, 239, 2, 5, 20, 250, 234, 27, 29, 225, 213, 4, 39, 48, 5, 231, 0, 3, 0, 14, 229, 227, 13,
+			17, 24, 15, 231, 229, 3, 246, 22, 6, 255, 17, 244, 239, 20, 3, 247, 16, 247, 234, 245, 21, 1, 217, 246, 43, 35, 2, 231, 241, 13,
+			247, 248, 20, 13, 18, 4, 229, 242, 7, 9, 250, 249, 17, 255, 245, 19, 0, 0, 19, 255, 6, 242, 237, 254, 254, 247, 10, 10, 247, 2,
+			251, 239, 242, 6, 36, 13, 242, 232, 13, 24, 255, 236, 246, 5, 9, 16, 29, 7, 219, 250, 18, 252, 247, 2, 25, 0, 222, 249, 25, 30,
+			0, 237, 216, 2, 31, 254, 244, 251, 1, 0, 252, 255, 24, 247, 224, 254, 18, 30, 8, 253, 251, 3, 0, 13, 251, 235, 16, 22, 5, 246,
+			246, 9, 16, 242, 253, 11, 9, 250, 208, 237, 22, 18, 255, 253, 6, 8, 237, 227, 249, 254, 250, 7, 10, 20, 12, 250, 248, 249, 0, 0,
+			0, 9, 19, 12, 17, 12, 253, 235, 242, 7, 19, 10, 244, 253, 9, 9, 8, 2, 255, 2, 244, 243, 254, 248, 246, 1, 22, 4, 0, 244,
+			251, 253, 243, 255, 17, 20, 244, 237, 253, 2, 7, 6, 250, 247, 249, 250, 4, 0, 1, 0, 6, 9, 169, 2, 15, 0, 248, 210, 174, 42,
+			30, 188, 13, 55, 245, 4, 253, 171, 232, 59, 16, 228, 244, 243, 221, 35, 28, 227, 237, 8, 48, 27, 3, 252, 218, 9, 14, 243, 249, 250,
+			4, 20, 3, 244, 243, 7, 37, 11, 227, 247, 251, 31, 58, 231, 237, 2, 5, 254, 227, 253, 15, 243, 248, 244, 19, 4, 249, 30, 11, 5,
+			27, 35, 35, 187, 131, 49, 46, 252, 236, 220, 241, 36, 60, 208, 211, 62, 254, 255, 25, 227, 2, 30, 27, 240, 198, 244, 37, 241, 213, 19,
+			241, 1, 34, 241, 17, 5, 230, 9, 12, 4, 254, 14, 5, 12, 244, 238, 23, 6, 21, 27, 231, 255, 16, 245, 232, 250, 4, 15, 7, 238,
+			225, 7, 255, 23, 15, 5, 229, 239, 26, 249, 234, 27, 254, 185, 229, 31, 239, 221, 18, 215, 172, 221, 43, 6, 238, 251, 234, 11, 34, 254,
+			254, 5, 11, 50, 34, 225, 243, 53, 49, 8, 233, 250, 41, 42, 42, 240, 252, 53, 31, 244, 246, 20, 25, 18, 235, 249, 42, 1, 238, 15,
+			1, 2, 29, 0, 2, 40, 254, 18, 11, 226, 15, 44, 231, 168, 243, 37, 48, 238, 190, 244, 17, 47, 245, 224, 4, 246, 23, 29, 247, 230,
+			244, 42, 37, 225, 204, 234, 37, 67, 210, 168, 236, 55, 67, 221, 192, 9, 67, 253, 218, 227, 3, 52, 22, 227, 203, 235, 86, 48, 210, 176,
+			21, 69, 30, 253, 230, 29, 38, 245, 248, 49, 28, 254, 26, 8, 237, 33, 57, 22, 245, 242, 32, 57, 0, 226, 15, 42, 20, 0, 233, 183,
+			238, 55, 45, 213, 172, 203, 29, 71, 254, 185, 170, 235, 49, 25, 190, 195, 21, 42, 250, 195, 230, 13, 27, 19, 239, 244, 226, 245, 0, 249,
+			4, 224, 204, 231, 50, 50, 208, 187, 204, 189, 231, 52, 18, 205, 191, 239, 26, 250, 241, 220, 228, 18, 23, 226, 210, 25, 71, 30, 195, 191,
+			9, 79, 62, 250, 2, 250, 3, 43, 44, 4, 250, 26, 10, 254, 30, 36, 5, 245, 17, 33, 10, 245, 4, 55, 3, 6, 50, 4, 254, 17,
+			249, 28, 26, 245, 0, 6, 240, 237, 16, 253, 204, 215, 248, 232, 30, 23, 190, 208, 26, 32, 225, 208, 243, 22, 3, 215, 241, 13, 46, 38,
+			253, 224, 229, 28, 37, 17, 5, 3, 244, 244, 0, 0, 225, 254, 17, 215, 198, 237, 35, 26, 233, 219, 213, 232, 30, 8, 244, 6, 242, 8,
+			36, 14, 196, 230, 50, 48, 249, 212, 245, 21, 27, 235, 236, 246, 2, 38, 2, 197, 209, 29, 28, 0, 9, 242, 248, 31, 32, 228, 226, 41,
+			68, 29, 221, 244, 45, 88, 62, 248, 238, 250, 49, 42, 50, 10, 195, 206, 76, 84, 197, 204, 29, 17, 183, 19, 59, 244, 201, 234, 252, 238,
+			29, 231, 221, 11, 16, 209, 245, 22, 236, 228, 13, 11, 225, 196, 229, 41, 32, 224, 232, 248, 255, 246, 226, 22, 28, 216, 174, 33, 78, 24,
+			216, 235, 32, 36, 11, 252, 250, 247, 31, 79, 26, 212, 247, 78, 69, 28, 236, 244, 65, 75, 30, 238, 24, 29, 248, 27, 78, 37, 255, 215,
+			230, 69, 64, 10, 12, 4, 0, 253, 24, 43, 16, 206, 235, 18, 42, 37, 2, 174, 176, 254, 43, 2, 221, 200, 219, 254, 241, 237, 229, 210,
+			237, 252, 221, 217, 242, 237, 215, 244, 17, 220, 172, 202, 26, 22, 242, 222, 250, 238, 216, 228, 233, 241, 244, 229, 220, 247, 233, 219, 215, 239,
+			251, 239, 216, 208, 226, 18, 44, 27, 0, 254, 242, 7, 29, 33, 20, 9, 15, 61, 59, 8, 224, 226, 29, 92, 85, 11, 211, 206, 250, 21,
+			235, 206, 240, 252, 204, 174, 217, 251, 237, 187, 186, 202, 216, 207, 173, 159, 178, 233, 241, 198, 169, 166, 181, 214, 9, 4, 209, 179, 193, 239,
+			8, 6, 249, 239, 235, 246, 7, 14, 0, 252, 12, 18, 21, 245, 228, 8, 31, 0, 0, 0, 183, 4, 23, 0, 11, 14, 14, 14, 12, 9,
+			7, 8, 15, 14, 14, 15, 11, 4, 2, 254, 251, 247, 248, 249, 254, 4, 8, 7, 6, 10, 9, 7, 11, 9, 3, 1, 7, 9, 6, 14,
+			13, 14, 10, 12, 12, 12, 15, 16, 14, 18, 14, 10, 11, 11, 9, 10, 12, 12, 18, 16, 6, 3, 0, 0, 0, 255, 0, 1, 9, 8,
+			14, 23, 21, 17, 22, 2, 250, 1, 255, 199, 133, 166, 246, 26, 34, 27, 1, 8, 21, 3, 233, 240, 3, 32, 53, 54, 43, 44, 39, 16,
+			1, 5, 22, 29, 30, 30, 34, 35, 30, 32, 18, 7, 8, 20, 33, 48, 45, 42, 32, 19, 10, 9, 9, 9, 4, 8, 14, 24, 16, 6,
+			1, 0, 246, 246, 6, 15, 14, 9, 7, 4, 10, 14, 244, 186, 206, 248, 29, 13, 18, 4, 7, 26, 4, 237, 224, 0, 25, 38, 33, 18,
+			23, 26, 17, 254, 4, 9, 18, 27, 31, 27, 24, 22, 11, 6, 253, 0, 6, 22, 20, 9, 5, 12, 14, 8, 1, 250, 248, 1, 3, 2,
+			255, 0, 4, 7, 255, 251, 255, 10, 17, 11, 9, 10, 12, 11, 8, 14, 17, 21, 28, 23, 25, 19, 17, 25, 26, 14, 9, 15, 29, 29,
+			17, 19, 17, 13, 16, 15, 15, 20, 17, 10, 254, 254, 0, 8, 8, 7, 9, 8, 4, 3, 0, 0, 255, 252, 255, 2, 15, 7, 11, 13,
+			15, 15, 13, 8, 16, 25, 17, 24, 28, 23, 23, 20, 28, 36, 33, 22, 15, 16, 26, 24, 14, 11, 12, 9, 15, 24, 15, 8, 7, 0,
+			251, 254, 0, 5, 10, 11, 16, 3, 5, 2, 0, 248, 246, 1, 9, 16, 7, 3, 4, 5, 8, 5, 0, 247, 4, 19, 10, 0, 254, 9,
+			14, 12, 1, 253, 14, 17, 14, 1, 1, 18, 19, 25, 17, 3, 9, 22, 19, 9, 2, 255, 0, 9, 8, 4, 10, 15, 13, 255, 248, 252,
+			6, 14, 13, 7, 6, 13, 8, 254, 254, 11, 13, 15, 11, 5, 12, 19, 16, 11, 3, 252, 7, 18, 20, 14, 11, 13, 18, 10, 12, 10,
+			4, 17, 13, 6, 1, 7, 12, 17, 9, 254, 0, 6, 13, 11, 10, 7, 10, 11, 7, 15, 9, 12, 18, 16, 19, 14, 9, 8, 17, 18,
+			21, 20, 17, 19, 18, 11, 0, 5, 16, 26, 17, 1, 5, 19, 24, 3, 249, 1, 7, 19, 10, 3, 10, 15, 13, 8, 0, 0, 14, 22,
+			7, 4, 22, 28, 22, 14, 4, 15, 23, 16, 16, 24, 34, 33, 19, 4, 0, 7, 21, 33, 27, 21, 14, 4, 0, 0, 6, 6, 11, 14,
+			11, 15, 10, 9, 3, 255, 6, 11, 22, 27, 21, 4, 9, 23, 20, 6, 8, 12, 18, 22, 12, 8, 14, 14, 10, 2, 0, 255, 6, 17,
+			18, 8, 5, 4, 252, 3, 0, 0, 6, 9, 10, 8, 4, 3, 13, 11, 3, 1, 0, 11, 23, 23, 16, 17, 14, 11, 13, 17, 12, 10,
+			8, 3, 6, 11, 15, 16, 11, 4, 11, 7, 248, 246, 5, 7, 3, 9, 12, 12, 11, 0, 252, 16, 22, 13, 13, 19, 32, 35, 26, 17,
+			15, 30, 34, 21, 4, 15, 34, 37, 23, 15, 18, 27, 37, 19, 7, 14, 23, 22, 17, 4, 0, 22, 24, 16, 7, 9, 19, 19, 14, 5,
+			6, 12, 12, 4, 5, 21, 19, 13, 8, 255, 250, 255, 10, 15, 9, 8, 14, 11, 3, 254, 1, 14, 18, 23, 24, 20, 24, 14, 4, 3,
+			8, 15, 28, 34, 20, 16, 12, 3, 2, 4, 1, 4, 11, 13, 16, 11, 0, 248, 255, 5, 3, 9, 4, 0, 7, 14, 1, 248, 0, 6,
+			13, 9, 0, 4, 15, 9, 10, 11, 9, 18, 23, 25, 15, 11, 14, 19, 23, 16, 13, 21, 27, 21, 8, 6, 12, 16, 7, 7, 8, 9,
+			14, 14, 4, 249, 0, 1, 0, 0, 254, 1, 1, 250, 242, 245, 0, 10, 2, 252, 248, 248, 252, 2, 0, 0, 7, 10, 18, 24, 17, 5,
+			5, 7, 4, 3, 7, 20, 22, 21, 20, 14, 5, 255, 7, 17, 14, 10, 11, 17, 15, 2, 0, 4, 4, 12, 17, 12, 10, 4, 0, 9,
+			14, 7, 4, 3, 6, 8, 10, 16, 17, 11, 11, 14, 14, 8, 9, 12, 13, 14, 7, 5, 16, 21, 18, 17, 14, 12, 17, 17, 15, 3,
+			255, 10, 29, 30, 21, 12, 1, 2, 0, 254, 5, 17, 18, 13, 3, 0, 7, 9, 2, 253, 249, 0, 6, 9, 1, 1, 8, 8, 2, 5,
+			7, 0, 254, 255, 1, 13, 20, 19, 17, 16, 15, 6, 5, 15, 16, 15, 18, 17, 17, 18, 14, 4, 253, 252, 255, 5, 13, 10, 1, 4,
+			7, 4, 253, 249, 253, 255, 0, 3, 10, 12, 11, 10, 6, 15, 20, 17, 15, 19, 23, 21, 20, 23, 16, 12, 24, 29, 22, 15, 9, 14,
+			16, 1, 246, 255, 11, 15, 17, 7, 255, 253, 251, 254, 255, 3, 5, 14, 20, 14, 8, 12, 18, 9, 5, 6, 13, 21, 21, 17, 17, 20,
+			23, 15, 9, 11, 17, 14, 15, 12, 11, 15, 21, 21, 13, 5, 8, 5, 8, 5, 2, 4, 11, 5, 7, 10, 4, 5, 10, 12, 9, 12,
+			10, 10, 12, 13, 10, 10, 15, 11, 14, 16, 16, 13, 9, 2, 6, 19, 18, 13, 11, 15, 15, 12, 5, 8, 14, 17, 20, 21, 18, 9,
+			7, 16, 14, 7, 11, 19, 18, 19, 17, 18, 14, 11, 7, 4, 6, 12, 14, 13, 7, 9, 15, 14, 3, 254, 0, 4, 6, 6, 6, 10,
+			13, 9, 255, 0, 10, 13, 9, 8, 3, 4, 14, 14, 8, 7, 9, 7, 5, 3, 6, 2, 5, 8, 8, 3, 4, 6, 4, 7, 6, 4,
+			3, 7, 6, 0, 3, 12, 20, 18, 8, 6, 12, 16, 12, 7, 6, 8, 13, 11, 12, 14, 19, 20, 15, 9, 7, 8, 5, 9, 7, 0,
+			2, 9, 8, 5, 8, 6, 5, 8, 6, 2, 7, 17, 18, 17, 15, 11, 13, 12, 10, 9, 11, 20, 26, 23, 17, 12, 13, 17, 14, 8,
+			9, 13, 17, 15, 13, 8, 12, 17, 15, 13, 9, 5, 7, 12, 12, 13, 14, 13, 7, 2, 7, 13, 17, 17, 11, 9, 9, 11, 10, 8,
+			7, 4, 5, 7, 16, 18, 11, 9, 11, 17, 19, 12, 5, 7, 11, 16, 17, 12, 13, 18, 17, 13, 5, 5, 12, 16, 14, 10, 9, 11,
+			12, 8, 4, 4, 11, 13, 9, 3, 5, 8, 3, 1, 3, 5, 8, 9, 7, 6, 5, 6, 11, 11, 6, 7, 11, 13, 15, 13, 10, 10,
+			10, 10, 8, 10, 13, 17, 18, 17, 15, 13, 11, 12, 8, 4, 8, 11, 9, 8, 9, 12, 10, 4, 6, 6, 7, 10, 12, 12, 10, 11,
+			9, 12, 11, 11, 8, 7, 13, 16, 15, 9, 10, 16, 14, 10, 7, 5, 7, 13, 9, 6, 8, 7, 8, 12, 12, 10, 3, 4, 4, 4,
+			5, 0, 58, 6, 27, 0, 8, 9, 9, 8, 10, 8, 9, 8, 10, 8, 8, 4, 5, 1, 250, 159, 133, 206, 248, 27, 55, 18, 7, 42,
+			51, 45, 26, 231, 224, 252, 15, 41, 48, 32, 37, 54, 57, 46, 31, 251, 246, 2, 9, 22, 19, 12, 24, 40, 44, 43, 28, 0, 251, 251,
+			253, 253, 246, 246, 3, 15, 28, 25, 13, 255, 246, 247, 250, 247, 242, 247, 255, 15, 25, 28, 22, 15, 3, 5, 0, 0, 255, 2, 4, 11,
+			23, 25, 25, 21, 18, 13, 7, 5, 1, 0, 2, 11, 14, 22, 23, 19, 17, 17, 13, 7, 3, 0, 255, 1, 3, 7, 12, 15, 15, 18,
+			11, 7, 6, 2, 4, 4, 1, 4, 6, 9, 15, 18, 10, 10, 8, 4, 11, 12, 9, 5, 9, 11, 22, 25, 19, 15, 10, 13, 15, 13,
+			5, 3, 6, 9, 14, 13, 14, 11, 9, 12, 19, 14, 6, 5, 7, 8, 15, 19, 12, 12, 14, 13, 15, 20, 253, 212, 0, 29, 31, 49,
+			43, 5, 5, 21, 15, 11, 1, 241, 251, 0, 24, 45, 39, 15, 16, 12, 17, 24, 21, 254, 0, 14, 31, 32, 27, 12, 12, 16, 21, 16,
+			16, 3, 27, 17, 29, 40, 22, 7, 14, 6, 253, 9, 254, 243, 244, 255, 4, 9, 12, 254, 247, 3, 2, 1, 1, 255, 246, 254, 254, 18,
+			17, 23, 15, 14, 8, 9, 1, 248, 248, 246, 240, 236, 191, 157, 211, 17, 55, 60, 62, 13, 37, 48, 58, 36, 24, 17, 13, 228, 21, 21,
+			236, 248, 18, 243, 14, 25, 7, 10, 250, 190, 211, 9, 37, 43, 43, 246, 192, 213, 229, 243, 231, 210, 185, 225, 0, 16, 26, 12, 2, 14,
+			37, 15, 7, 244, 242, 21, 35, 39, 38, 44, 48, 70, 72, 46, 23, 19, 19, 31, 39, 29, 13, 30, 46, 49, 54, 35, 13, 13, 10, 14,
+			4, 253, 241, 4, 22, 28, 23, 13, 3, 255, 13, 7, 243, 240, 238, 253, 7, 14, 1, 21, 12, 30, 34, 33, 20, 22, 22, 12, 29, 17,
+			12, 25, 29, 32, 34, 9, 20, 51, 46, 38, 44, 18, 3, 30, 32, 14, 12, 5, 254, 19, 21, 13, 8, 252, 236, 252, 2, 255, 3, 251,
+			252, 8, 5, 249, 243, 243, 253, 19, 6, 249, 252, 250, 251, 6, 4, 246, 249, 0, 10, 26, 21, 5, 5, 14, 10, 6, 21, 3, 4, 41,
+			35, 23, 32, 15, 5, 20, 32, 4, 2, 252, 236, 254, 8, 11, 241, 248, 247, 252, 10, 255, 240, 240, 2, 3, 2, 0, 241, 245, 5, 10,
+			14, 10, 252, 2, 6, 5, 8, 1, 237, 250, 10, 10, 13, 19, 13, 24, 36, 19, 3, 255, 0, 23, 38, 33, 11, 8, 16, 25, 24, 5,
+			239, 245, 247, 3, 10, 8, 8, 21, 36, 28, 12, 249, 242, 0, 21, 14, 252, 254, 247, 10, 37, 30, 2, 2, 27, 19, 12, 254, 233, 228,
+			244, 3, 8, 17, 11, 16, 35, 43, 44, 31, 17, 252, 243, 240, 246, 241, 1, 36, 38, 29, 29, 17, 5, 9, 9, 250, 239, 0, 13, 31,
+			33, 6, 251, 7, 18, 12, 23, 0, 244, 10, 5, 249, 246, 235, 233, 252, 9, 8, 0, 252, 3, 255, 248, 2, 8, 6, 8, 19, 26, 28,
+			28, 34, 26, 16, 12, 253, 253, 255, 242, 11, 42, 29, 28, 52, 22, 22, 52, 26, 245, 254, 233, 209, 248, 0, 234, 255, 8, 250, 19, 23,
+			253, 251, 1, 252, 5, 8, 237, 239, 249, 236, 244, 24, 247, 222, 255, 32, 48, 43, 40, 5, 253, 25, 14, 244, 237, 1, 30, 26, 28, 20,
+			254, 9, 15, 15, 12, 0, 5, 24, 12, 5, 4, 10, 4, 18, 25, 12, 25, 37, 15, 4, 10, 255, 236, 244, 253, 11, 20, 22, 18, 5,
+			10, 22, 16, 0, 229, 244, 12, 7, 4, 9, 249, 2, 26, 25, 11, 254, 254, 3, 5, 255, 241, 254, 2, 2, 29, 34, 24, 61, 55, 19,
+			10, 30, 33, 33, 37, 14, 4, 253, 6, 11, 2, 7, 250, 7, 3, 1, 20, 18, 15, 3, 7, 6, 9, 1, 250, 8, 245, 239, 202, 204,
+			235, 0, 8, 21, 254, 231, 7, 5, 252, 247, 244, 245, 5, 32, 36, 18, 4, 244, 18, 36, 26, 31, 53, 33, 37, 55, 24, 247, 5, 0,
+			247, 13, 0, 244, 9, 18, 22, 12, 252, 2, 11, 8, 244, 246, 240, 224, 242, 243, 234, 240, 253, 0, 248, 237, 248, 4, 11, 25, 35, 34,
+			24, 7, 12, 25, 5, 11, 11, 12, 48, 42, 41, 48, 45, 25, 24, 28, 12, 11, 22, 33, 11, 255, 242, 245, 2, 9, 16, 23, 24, 16,
+			8, 1, 244, 226, 211, 220, 229, 233, 235, 241, 0, 11, 34, 34, 27, 19, 25, 25, 10, 3, 248, 0, 12, 12, 8, 30, 41, 54, 53, 47,
+			47, 38, 27, 16, 5, 0, 0, 252, 9, 17, 10, 24, 35, 31, 47, 21, 245, 239, 241, 225, 213, 220, 223, 231, 253, 10, 10, 21, 4, 245,
+			5, 13, 246, 239, 233, 241, 15, 27, 28, 18, 22, 43, 36, 23, 16, 11, 5, 17, 34, 23, 13, 31, 24, 12, 15, 9, 26, 30, 19, 14,
+			2, 248, 246, 241, 234, 235, 232, 233, 226, 235, 13, 14, 3, 246, 250, 249, 241, 237, 234, 241, 0, 242, 253, 22, 24, 33, 44, 47, 37, 12,
+			4, 7, 7, 255, 5, 5, 241, 2, 26, 38, 26, 37, 56, 51, 31, 1, 230, 215, 220, 235, 241, 252, 10, 26, 29, 23, 22, 11, 5, 0,
+			250, 237, 228, 220, 236, 254, 6, 20, 21, 35, 35, 46, 34, 17, 20, 4, 255, 19, 10, 0, 10, 34, 45, 26, 33, 31, 26, 35, 27, 5,
+			0, 14, 15, 17, 20, 25, 22, 15, 18, 3, 250, 6, 19, 4, 247, 242, 0, 16, 12, 12, 11, 5, 6, 7, 244, 234, 253, 248, 2, 19,
+			15, 10, 19, 31, 17, 9, 23, 31, 21, 15, 2, 6, 255, 0, 17, 16, 15, 10, 17, 22, 31, 30, 17, 0, 241, 254, 5, 226, 220, 252,
+			20, 14, 25, 34, 37, 42, 28, 4, 255, 238, 231, 232, 226, 242, 5, 20, 38, 46, 33, 19, 20, 16, 253, 2, 19, 9, 1, 0, 4, 6,
+			11, 20, 23, 12, 0, 3, 1, 244, 235, 1, 6, 4, 1, 1, 10, 10, 2, 7, 11, 250, 0, 6, 255, 9, 9, 22, 22, 7, 13, 9,
+			5, 8, 16, 13, 0, 255, 9, 16, 8, 7, 30, 33, 12, 11, 17, 17, 27, 19, 4, 2, 0, 248, 0, 23, 18, 11, 12, 7, 10, 17,
+			24, 21, 0, 254, 8, 4, 254, 2, 1, 3, 21, 29, 26, 9, 14, 27, 20, 11, 4, 252, 244, 246, 250, 249, 245, 11, 34, 38, 32, 29,
+			38, 33, 13, 254, 254, 241, 246, 4, 7, 5, 20, 20, 21, 41, 41, 20, 27, 25, 250, 4, 5, 247, 249, 255, 253, 11, 22, 30, 37, 24,
+			6, 14, 10, 6, 4, 252, 253, 3, 247, 241, 251, 243, 235, 245, 250, 8, 23, 34, 44, 41, 37, 34, 11, 4, 13, 3, 9, 21, 21, 33,
+			38, 43, 46, 40, 45, 43, 30, 21, 25, 27, 30, 25, 13, 15, 0, 232, 240, 249, 241, 250, 10, 9, 252, 2, 0, 0, 2, 6, 247, 235,
+			234, 221, 223, 226, 239, 249, 243, 248, 5, 21, 30, 30, 34, 27, 5, 0, 4, 4, 3, 13, 25, 41, 48, 45, 53, 52, 49, 45, 37, 30,
+			24, 17, 11, 11, 8, 254, 247, 253, 3, 10, 255, 6, 21, 16, 8, 11, 3, 243, 246, 246, 235, 232, 241, 245, 8, 23, 24, 19, 15, 17,
+			18, 14, 13, 10, 5, 5, 3, 6, 15, 14, 20, 33, 37, 47, 50, 39, 27, 26, 22, 16, 6, 10, 9, 0, 9, 14, 4, 1, 2, 246,
+			249, 241, 229, 243, 3, 253, 252, 250, 239, 247, 255, 251, 248, 252, 1, 1, 8, 12, 8, 7, 18, 19, 15, 22, 22, 26, 31, 32, 32, 22,
+			14, 6, 3, 6, 3, 8, 15, 22, 30, 26, 19, 10, 6, 5, 253, 0, 0, 253, 253, 255, 254, 253, 2, 255, 0, 1, 2, 0, 254, 255,
+			251, 245, 243, 253, 4, 4, 9, 18, 19, 23, 24, 17, 4, 246, 250, 0, 1, 255, 3, 12, 12, 20, 26, 15, 11, 18, 18, 7, 253, 255,
+			2, 3, 7, 9, 2, 4, 10, 12, 14, 14, 12, 15, 16, 15, 18, 21, 20, 22, 23, 18, 17, 18, 21, 28, 34, 33, 35, 39, 35, 24,
+			25, 24, 6, 5, 255, 243, 237, 244, 249, 252, 255, 1, 9, 9, 8, 9, 2, 0, 249, 246, 252, 1, 4, 0, 255, 248, 250, 6, 5, 6,
+			7, 4, 6, 7, 2, 255, 251, 244, 249, 254, 255, 0, 4, 9, 9, 11, 9, 6, 7, 8, 5, 2, 0, 247, 234, 233, 226, 222, 226, 235,
+			241, 252, 2, 9, 14, 12, 11, 7, 10, 8, 7, 11, 14, 22, 25, 29, 26, 33, 44, 43, 48, 47, 48, 43, 37, 32, 24, 22, 23, 27,
+			23, 21, 24, 29, 38, 44, 47, 43, 39, 36, 31, 28, 24, 16, 12, 9, 9, 7, 10, 13, 20, 20, 12, 7, 8, 11, 15, 19, 16, 15,
+			13, 16, 17, 10, 9, 8, 12, 8, 11, 8, 0, 0, 195, 5, 51, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 0, 255, 0,
+			4, 5, 4, 2, 0, 0, 1, 2, 2, 3, 2, 3, 1, 248, 197, 214, 0, 44, 49, 16, 239, 219, 243, 0, 17, 24, 22, 18, 0, 247,
+			239, 0, 13, 24, 19, 12, 2, 0, 254, 2, 12, 13, 18, 11, 1, 1, 2, 8, 9, 8, 6, 5, 1, 2, 0, 0, 3, 6, 5, 3,
+			0, 0, 2, 1, 6, 2, 3, 0, 1, 3, 2, 3, 3, 3, 3, 3, 1, 5, 6, 3, 6, 4, 5, 2, 4, 3, 6, 4, 6, 4,
+			3, 2, 5, 6, 6, 4, 1, 3, 5, 6, 7, 4, 2, 3, 3, 4, 2, 2, 4, 5, 4, 3, 3, 1, 1, 2, 3, 5, 3, 1,
+			2, 2, 4, 6, 1, 254, 3, 0, 4, 5, 1, 1, 1, 255, 1, 2, 0, 0, 0, 5, 3, 3, 255, 253, 255, 4, 4, 1, 5, 0,
+			2, 2, 1, 0, 1, 2, 1, 7, 0, 0, 253, 253, 3, 9, 1, 255, 252, 251, 3, 6, 4, 2, 0, 251, 255, 4, 5, 5, 4, 1,
+			252, 254, 3, 4, 5, 3, 254, 0, 4, 254, 3, 3, 2, 4, 3, 0, 255, 2, 232, 237, 10, 18, 24, 11, 247, 239, 243, 254, 9, 17,
+			17, 5, 247, 247, 248, 255, 5, 6, 8, 4, 0, 251, 247, 1, 2, 6, 7, 1, 252, 1, 0, 0, 3, 4, 5, 4, 0, 251, 254, 7,
+			4, 13, 6, 254, 251, 1, 236, 255, 22, 18, 13, 1, 246, 249, 0, 2, 10, 9, 3, 1, 249, 255, 5, 11, 2, 0, 0, 255, 7, 254,
+			3, 0, 3, 5, 2, 9, 7, 9, 7, 6, 2, 3, 6, 3, 6, 0, 255, 1, 9, 3, 4, 4, 0, 5, 7, 2, 6, 3, 253, 3,
+			2, 9, 13, 4, 3, 2, 239, 195, 232, 27, 54, 38, 252, 217, 222, 251, 1, 9, 10, 14, 5, 243, 237, 242, 8, 27, 25, 12, 0, 250,
+			3, 6, 7, 15, 13, 12, 3, 0, 8, 17, 26, 26, 21, 20, 20, 17, 15, 14, 11, 43, 51, 24, 3, 219, 217, 237, 247, 255, 233, 182,
+			196, 224, 251, 26, 250, 222, 223, 221, 238, 255, 250, 254, 2, 245, 248, 244, 254, 18, 25, 24, 29, 24, 24, 35, 57, 62, 90, 38, 159, 185,
+			224, 57, 126, 67, 0, 201, 181, 221, 252, 13, 52, 50, 12, 220, 194, 209, 237, 19, 37, 31, 250, 220, 211, 222, 1, 20, 27, 11, 238, 226,
+			247, 12, 17, 18, 9, 16, 7, 252, 4, 9, 7, 24, 28, 18, 7, 244, 5, 17, 14, 22, 22, 10, 255, 3, 11, 22, 11, 6, 4, 3,
+			6, 15, 12, 0, 248, 250, 14, 6, 0, 255, 252, 7, 4, 1, 252, 246, 254, 4, 4, 1, 254, 1, 0, 4, 11, 10, 255, 255, 1, 5,
+			0, 254, 255, 4, 8, 9, 2, 1, 248, 247, 12, 12, 7, 254, 251, 6, 1, 254, 3, 0, 3, 6, 254, 250, 6, 255, 251, 249, 247, 255,
+			12, 10, 247, 243, 248, 0, 255, 254, 1, 247, 249, 253, 0, 8, 9, 252, 247, 5, 2, 252, 255, 1, 6, 0, 253, 252, 1, 14, 5, 248,
+			248, 0, 11, 10, 1, 5, 9, 253, 242, 248, 2, 16, 20, 5, 246, 243, 252, 0, 14, 11, 13, 17, 2, 240, 241, 5, 21, 27, 8, 248,
+			243, 251, 12, 5, 1, 2, 13, 3, 239, 243, 0, 9, 12, 15, 12, 250, 247, 4, 16, 15, 10, 2, 10, 17, 2, 252, 247, 12, 30, 18,
+			254, 249, 0, 5, 17, 16, 4, 0, 7, 7, 4, 3, 1, 253, 254, 7, 7, 250, 255, 248, 247, 12, 11, 3, 253, 242, 1, 12, 16, 9,
+			2, 246, 245, 0, 0, 5, 13, 2, 0, 254, 251, 3, 16, 2, 253, 13, 6, 0, 0, 255, 13, 11, 242, 244, 2, 19, 20, 7, 248, 248,
+			0, 9, 9, 4, 252, 250, 255, 1, 4, 0, 255, 4, 253, 252, 0, 253, 4, 13, 4, 2, 250, 249, 4, 0, 1, 12, 6, 3, 250, 249,
+			252, 11, 14, 2, 2, 2, 0, 253, 255, 255, 19, 22, 249, 243, 0, 0, 17, 20, 255, 241, 246, 8, 13, 250, 0, 7, 0, 251, 250, 254,
+			4, 6, 9, 0, 249, 238, 251, 14, 20, 11, 0, 245, 245, 1, 16, 8, 9, 9, 255, 247, 4, 10, 10, 20, 6, 250, 3, 4, 13, 18,
+			7, 252, 248, 13, 22, 12, 254, 250, 250, 0, 12, 15, 11, 2, 254, 0, 5, 9, 6, 1, 4, 254, 255, 251, 247, 5, 15, 11, 10, 1,
+			245, 255, 14, 14, 4, 12, 18, 254, 254, 7, 9, 17, 10, 252, 240, 0, 17, 13, 2, 243, 246, 21, 21, 1, 0, 250, 255, 7, 9, 4,
+			6, 7, 255, 254, 253, 9, 8, 252, 255, 4, 14, 11, 252, 244, 0, 15, 13, 5, 3, 247, 245, 255, 21, 13, 254, 251, 245, 255, 0, 249,
+			254, 12, 7, 248, 255, 251, 0, 15, 22, 5, 235, 247, 6, 14, 22, 7, 0, 251, 249, 5, 8, 2, 4, 4, 8, 4, 247, 255, 5, 4,
+			7, 8, 3, 0, 247, 238, 1, 19, 14, 3, 251, 253, 251, 249, 2, 16, 26, 10, 251, 242, 247, 15, 20, 11, 0, 2, 1, 245, 0, 6,
+			20, 14, 249, 236, 243, 5, 24, 25, 4, 249, 244, 254, 0, 0, 10, 16, 5, 2, 0, 254, 4, 13, 253, 3, 10, 5, 5, 12, 7, 3,
+			3, 0, 2, 252, 2, 15, 8, 253, 5, 0, 0, 3, 255, 9, 11, 252, 0, 4, 8, 6, 253, 248, 246, 2, 11, 6, 253, 241, 228, 226,
+			2, 22, 34, 25, 239, 204, 220, 7, 15, 251, 232, 239, 248, 4, 249, 232, 238, 15, 24, 9, 10, 249, 242, 4, 7, 16, 18, 18, 255, 237,
+			4, 25, 13, 11, 5, 251, 5, 2, 1, 11, 11, 8, 9, 4, 0, 247, 249, 9, 12, 5, 0, 1, 0, 245, 252, 14, 12, 253, 252, 248,
+			253, 6, 0, 249, 250, 255, 6, 13, 0, 255, 1, 255, 3, 6, 11, 8, 2, 8, 3, 8, 7, 252, 255, 5, 12, 16, 14, 2, 255, 253,
+			4, 0, 1, 8, 3, 10, 10, 2, 250, 246, 0, 9, 12, 10, 1, 253, 16, 7, 245, 251, 7, 19, 15, 2, 254, 2, 5, 8, 0, 0,
+			10, 12, 254, 249, 6, 18, 15, 7, 252, 246, 1, 9, 6, 12, 5, 249, 1, 6, 253, 5, 14, 7, 248, 242, 0, 15, 17, 6, 245, 246,
+			0, 2, 6, 4, 254, 253, 1, 5, 252, 241, 251, 12, 7, 3, 0, 242, 0, 0, 246, 255, 8, 9, 0, 244, 244, 2, 6, 14, 9, 252,
+			249, 4, 7, 5, 0, 255, 4, 6, 10, 4, 254, 0, 0, 5, 3, 0, 254, 253, 8, 13, 8, 253, 243, 246, 6, 8, 255, 0, 4, 3,
+			250, 246, 251, 6, 14, 1, 250, 252, 251, 0, 0, 251, 255, 9, 7, 2, 245, 241, 0, 11, 13, 10, 0, 251, 249, 247, 11, 20, 7, 252,
+			2, 9, 1, 5, 255, 1, 19, 13, 255, 255, 253, 3, 18, 4, 252, 4, 7, 12, 6, 5, 7, 9, 12, 3, 253, 0, 3, 4, 15, 15,
+			7, 248, 244, 0, 15, 20, 14, 4, 1, 0, 5, 3, 3, 17, 18, 6, 0, 2, 6, 16, 8, 1, 1, 4, 7, 3, 1, 7, 14, 8,
+			251, 244, 249, 4, 13, 6, 1, 2, 253, 248, 2, 12, 8, 2, 252, 0, 252, 252, 5, 10, 2, 0, 254, 253, 253, 3, 13, 9, 4, 254,
+			2, 7, 3, 255, 252, 1, 15, 17, 6, 252, 243, 253, 9, 9, 8, 1, 253, 252, 3, 3, 255, 254, 249, 254, 254, 252, 254, 0, 247, 252,
+			0, 253, 253, 250, 246, 248, 1, 6, 6, 253, 242, 240, 252, 6, 4, 1, 252, 252, 254, 250, 250, 0, 1, 255, 0, 2, 0, 247, 251, 5,
+			1, 255, 2, 4, 0, 252, 255, 4, 7, 14, 7, 254, 2, 9, 10, 9, 3, 3, 13, 16, 10, 5, 5, 7, 11, 14, 11, 10, 14, 13,
+			8, 3, 7, 17, 26, 20, 12, 10, 13, 14, 16, 18, 22, 28, 27, 19, 16, 8, 7, 20, 32, 33, 29, 26, 12, 2, 8, 21, 29, 32,
+			26, 20, 13, 9, 13, 13, 20, 31, 24, 15, 11, 10, 21, 19, 14, 12, 14, 16, 12, 3, 8, 16, 17, 15, 14, 2, 7, 8, 0, 10,
+			14, 20, 16, 6, 3, 5, 7, 10, 14, 14, 11, 13, 5, 0, 252, 253, 7, 7, 249, 230, 237, 0, 43, 6, 37, 0, 6, 8, 5, 6,
+			3, 1, 5, 8, 10, 13, 15, 19, 11, 6, 4, 1, 0, 5, 2, 6, 11, 13, 9, 8, 9, 9, 8, 7, 8, 12, 6, 4, 5, 3,
+			6, 12, 11, 11, 7, 0, 255, 2, 5, 5, 4, 11, 10, 11, 10, 5, 6, 0, 253, 254, 0, 251, 240, 0, 8, 15, 19, 24, 34, 54,
+			47, 60, 40, 205, 217, 208, 178, 228, 243, 228, 1, 11, 17, 23, 23, 15, 22, 10, 254, 235, 229, 232, 245, 255, 9, 16, 32, 37, 34, 24,
+			14, 254, 244, 241, 249, 248, 1, 10, 19, 29, 35, 28, 27, 17, 9, 2, 254, 247, 248, 252, 247, 255, 13, 16, 23, 20, 11, 1, 243, 239,
+			236, 238, 249, 244, 254, 250, 251, 0, 5, 9, 15, 15, 9, 254, 248, 248, 243, 2, 21, 13, 22, 33, 21, 23, 26, 1, 11, 25, 29, 37,
+			15, 12, 11, 24, 19, 19, 12, 3, 13, 19, 19, 12, 8, 241, 224, 12, 33, 1, 5, 244, 245, 32, 12, 253, 253, 250, 0, 17, 16, 252,
+			255, 4, 20, 22, 18, 22, 27, 28, 24, 16, 0, 4, 21, 17, 10, 8, 9, 252, 1, 16, 10, 9, 6, 12, 6, 254, 1, 22, 9, 6,
+			0, 250, 4, 3, 240, 233, 238, 252, 17, 250, 253, 16, 38, 23, 18, 7, 6, 248, 234, 224, 214, 231, 222, 241, 240, 219, 239, 243, 15, 28,
+			6, 3, 0, 5, 12, 7, 10, 23, 25, 32, 28, 25, 21, 30, 23, 21, 23, 8, 12, 23, 24, 23, 22, 22, 16, 16, 16, 7, 4, 4,
+			253, 255, 0, 254, 249, 251, 248, 0, 1, 3, 245, 244, 247, 0, 5, 8, 9, 8, 12, 7, 2, 10, 17, 16, 12, 12, 17, 22, 24, 19,
+			22, 26, 14, 12, 13, 12, 7, 6, 8, 11, 11, 16, 15, 20, 24, 5, 5, 0, 4, 7, 5, 9, 7, 6, 8, 9, 253, 255, 0, 0,
+			246, 251, 249, 3, 11, 18, 13, 11, 10, 0, 252, 5, 252, 244, 247, 0, 11, 14, 17, 27, 29, 29, 22, 9, 8, 6, 11, 254, 3, 252,
+			4, 23, 14, 8, 9, 5, 0, 253, 249, 241, 248, 5, 4, 9, 9, 15, 19, 20, 12, 3, 251, 250, 250, 253, 246, 247, 0, 6, 7, 14,
+			19, 15, 14, 9, 0, 7, 19, 4, 251, 2, 8, 10, 8, 13, 11, 4, 18, 19, 9, 12, 14, 4, 8, 14, 5, 2, 12, 14, 9, 12,
+			4, 4, 0, 4, 0, 251, 5, 254, 251, 1, 2, 5, 3, 4, 18, 19, 9, 6, 9, 0, 0, 0, 252, 246, 4, 11, 1, 6, 22, 16,
+			17, 10, 254, 1, 8, 7, 254, 1, 29, 19, 10, 11, 18, 11, 2, 250, 232, 245, 11, 0, 241, 247, 15, 18, 18, 22, 12, 16, 25, 16,
+			247, 4, 9, 248, 245, 254, 12, 18, 13, 255, 4, 13, 28, 8, 251, 0, 6, 2, 0, 5, 14, 18, 13, 251, 255, 4, 251, 244, 234, 245,
+			10, 7, 6, 7, 10, 28, 26, 9, 253, 0, 11, 12, 254, 240, 3, 15, 14, 26, 18, 13, 20, 13, 255, 6, 17, 1, 242, 247, 0, 13,
+			14, 15, 3, 8, 25, 7, 4, 6, 0, 255, 1, 8, 10, 14, 9, 9, 15, 8, 8, 0, 250, 0, 3, 250, 5, 17, 19, 19, 16, 17,
+			15, 21, 15, 7, 7, 9, 12, 0, 254, 0, 4, 11, 7, 0, 253, 0, 7, 6, 11, 10, 16, 13, 7, 11, 6, 6, 3, 1, 3, 9,
+			5, 2, 14, 15, 0, 1, 17, 28, 25, 11, 253, 3, 11, 7, 254, 251, 247, 8, 15, 6, 10, 28, 29, 25, 21, 10, 254, 0, 1, 246,
+			238, 255, 13, 15, 22, 27, 27, 28, 24, 10, 7, 6, 253, 251, 251, 244, 250, 6, 15, 13, 18, 23, 18, 11, 253, 252, 254, 251, 4, 18,
+			13, 14, 26, 24, 22, 19, 10, 7, 2, 6, 4, 238, 241, 12, 21, 7, 9, 17, 25, 25, 25, 14, 255, 17, 18, 6, 9, 1, 248, 252,
+			11, 2, 12, 11, 249, 11, 37, 30, 14, 5, 7, 3, 253, 22, 11, 9, 21, 2, 3, 25, 27, 7, 2, 11, 13, 18, 252, 0, 3, 5,
+			14, 235, 225, 242, 248, 255, 237, 236, 16, 31, 29, 7, 13, 10, 245, 234, 252, 245, 234, 228, 231, 249, 11, 4, 250, 1, 8, 253, 232, 240,
+			248, 235, 232, 249, 254, 245, 238, 235, 246, 249, 250, 252, 250, 255, 6, 252, 245, 244, 235, 235, 232, 238, 245, 235, 241, 0, 2, 253, 249, 0,
+			6, 252, 254, 0, 0, 253, 7, 14, 18, 24, 28, 25, 20, 11, 20, 33, 36, 44, 44, 49, 54, 38, 39, 38, 15, 9, 253, 228, 228, 198,
+			147, 154, 225, 50, 68, 40, 8, 10, 1, 220, 187, 212, 9, 38, 42, 10, 245, 8, 0, 189, 159, 210, 14, 49, 54, 55, 66, 49, 7, 243,
+			249, 25, 53, 66, 54, 40, 43, 30, 8, 255, 11, 31, 35, 44, 40, 24, 23, 16, 255, 255, 2, 255, 2, 15, 21, 30, 39, 19, 249, 244,
+			253, 21, 37, 42, 42, 20, 13, 14, 19, 30, 29, 21, 253, 192, 133, 158, 218, 19, 51, 72, 59, 20, 254, 227, 218, 236, 252, 19, 29, 15,
+			249, 233, 235, 249, 254, 15, 33, 27, 13, 243, 251, 4, 255, 250, 247, 255, 11, 2, 251, 3, 15, 22, 15, 11, 13, 12, 11, 14, 12, 8,
+			250, 1, 14, 9, 251, 242, 242, 246, 2, 255, 1, 10, 10, 4, 248, 251, 3, 255, 242, 246, 252, 243, 239, 243, 9, 6, 243, 224, 222, 0,
+			27, 37, 48, 58, 49, 32, 16, 16, 36, 59, 88, 92, 255, 196, 227, 248, 247, 5, 45, 64, 43, 255, 226, 226, 243, 230, 238, 6, 33, 32,
+			12, 0, 231, 237, 253, 1, 19, 31, 30, 25, 12, 6, 8, 245, 240, 25, 54, 55, 36, 32, 32, 21, 13, 28, 47, 34, 19, 29, 31, 23,
+			25, 23, 251, 236, 9, 43, 12, 233, 254, 25, 9, 237, 236, 0, 14, 0, 251, 255, 246, 243, 0, 242, 250, 13, 17, 6, 233, 241, 28, 15,
+			240, 242, 9, 30, 18, 255, 12, 33, 16, 243, 242, 7, 40, 40, 253, 240, 19, 27, 237, 227, 23, 48, 25, 251, 246, 0, 0, 0, 12, 12,
+			6, 248, 245, 243, 237, 8, 31, 15, 244, 246, 12, 12, 242, 0, 31, 2, 0, 4, 245, 254, 5, 13, 9, 4, 7, 13, 2, 251, 3, 20,
+			21, 5, 245, 0, 17, 15, 10, 0, 253, 254, 6, 10, 246, 245, 23, 21, 253, 247, 18, 23, 250, 249, 7, 6, 11, 12, 5, 4, 14, 21,
+			9, 246, 0, 31, 20, 255, 0, 13, 13, 7, 9, 13, 17, 22, 4, 244, 2, 14, 18, 6, 252, 21, 24, 0, 248, 247, 17, 33, 14, 4,
+			12, 3, 253, 252, 14, 30, 13, 252, 11, 15, 247, 5, 23, 17, 9, 4, 245, 239, 246, 10, 19, 0, 251, 15, 4, 237, 2, 22, 236, 217,
+			253, 12, 5, 5, 22, 23, 253, 239, 247, 250, 253, 11, 34, 32, 0, 250, 7, 7, 7, 11, 28, 30, 3, 243, 249, 16, 19, 16, 11, 6,
+			4, 2, 251, 255, 16, 10, 250, 252, 7, 6, 255, 2, 9, 2, 245, 243, 11, 16, 255, 250, 17, 13, 254, 1, 1, 255, 10, 12, 7, 6,
+			15, 11, 252, 249, 14, 19, 10, 9, 7, 7, 8, 0, 5, 16, 15, 4, 3, 13, 13, 254, 250, 14, 13, 11, 24, 8, 0, 12, 16, 15,
+			6, 0, 11, 20, 9, 13, 13, 3, 12, 17, 7, 14, 26, 13, 248, 248, 12, 21, 11, 0, 2, 18, 21, 16, 17, 16, 11, 7, 17, 27,
+			11, 0, 6, 12, 21, 24, 14, 11, 12, 10, 13, 17, 13, 14, 0, 246, 5, 15, 16, 2, 249, 13, 23, 9, 255, 10, 16, 8, 4, 7,
+			5, 251, 0, 11, 8, 1, 2, 255, 0, 9, 9, 1, 254, 5, 11, 8, 4, 8, 16, 15, 17, 9, 2, 9, 15, 12, 8, 12, 12, 3,
+			0, 12, 18, 10, 1, 10, 9, 0, 250, 251, 9, 20, 7, 0, 251, 255, 8, 13, 12, 254, 245, 251, 4, 4, 3, 5, 1, 251, 252, 0,
+			255, 4, 12, 13, 12, 2, 254, 11, 17, 9, 13, 10, 0, 1, 0, 7, 12, 6, 11, 24, 11, 255, 0, 12, 7, 253, 252, 7, 14, 7,
+			254, 254, 4, 13, 10, 7, 17, 17, 8, 8, 10, 16, 17, 8, 11, 11, 6, 13, 8, 9, 22, 24, 15, 6, 1, 8, 9, 4, 12, 14,
+			9, 6, 4, 8, 12, 14, 9, 1, 1, 9, 10, 3, 0, 10, 13, 10, 3, 251, 247, 3, 14, 10, 251, 246, 1, 12, 8, 2, 254, 244,
+			244, 3, 12, 7, 253, 248, 255, 6, 6, 7, 8, 4, 4, 15, 13, 2, 246, 251, 15, 24, 7, 243, 246, 2, 11, 7, 0, 2, 0, 251,
+			244, 247, 255, 5, 255, 246, 246, 255, 253, 245, 251, 0, 252, 240, 238, 252, 7, 0, 242, 240, 245, 249, 251, 247, 251, 255, 248, 250, 5, 1,
+			248, 249, 255, 2, 253, 241, 239, 254, 13, 8, 249, 244, 251, 6, 6, 0, 208, 4, 44, 0, 3, 1, 2, 1, 2, 1, 3, 2, 4, 236,
+			191, 217, 11, 26, 24, 27, 26, 24, 11, 246, 236, 247, 6, 12, 15, 16, 19, 15, 5, 252, 250, 252, 5, 17, 24, 23, 17, 16, 16, 1,
+			249, 251, 12, 14, 15, 0, 202, 203, 239, 22, 13, 13, 15, 21, 16, 248, 226, 229, 3, 15, 11, 9, 15, 11, 2, 254, 249, 249, 253, 15,
+			16, 26, 20, 15, 2, 254, 2, 4, 5, 10, 34, 36, 37, 14, 8, 211, 132, 222, 36, 36, 38, 37, 30, 19, 239, 208, 198, 241, 19, 26,
+			39, 40, 26, 254, 243, 230, 226, 242, 8, 39, 45, 33, 16, 6, 214, 182, 225, 0, 12, 27, 28, 33, 25, 1, 230, 220, 239, 3, 13, 25,
+			31, 29, 11, 254, 242, 234, 236, 248, 18, 33, 25, 21, 2, 247, 249, 242, 246, 6, 22, 32, 27, 10, 251, 241, 241, 244, 248, 17, 23, 24,
+			24, 9, 245, 241, 247, 244, 6, 12, 17, 24, 12, 6, 251, 242, 245, 248, 5, 16, 17, 16, 12, 2, 251, 252, 2, 1, 6, 2, 15, 19,
+			4, 252, 254, 245, 5, 15, 19, 15, 9, 8, 7, 254, 252, 9, 7, 16, 10, 6, 10, 15, 10, 0, 7, 217, 176, 205, 199, 227, 27, 48,
+			38, 36, 244, 223, 206, 214, 234, 9, 39, 54, 49, 12, 0, 244, 245, 0, 18, 31, 35, 56, 54, 29, 248, 2, 21, 248, 235, 11, 249, 217,
+			8, 32, 4, 232, 232, 242, 243, 10, 16, 16, 21, 46, 246, 180, 209, 244, 2, 11, 24, 5, 253, 232, 240, 251, 10, 33, 34, 28, 8, 247,
+			230, 231, 230, 233, 252, 7, 30, 18, 7, 241, 238, 250, 251, 254, 15, 32, 33, 17, 6, 7, 251, 0, 16, 12, 241, 242, 251, 10, 17, 20,
+			23, 13, 3, 12, 9, 243, 255, 19, 22, 18, 15, 255, 2, 10, 2, 16, 15, 15, 17, 19, 11, 11, 20, 15, 8, 17, 24, 12, 0, 4,
+			248, 254, 252, 251, 0, 0, 2, 1, 253, 4, 254, 245, 253, 14, 12, 6, 10, 6, 3, 0, 251, 253, 2, 21, 30, 9, 8, 0, 0, 2,
+			9, 4, 0, 8, 7, 19, 11, 8, 10, 10, 6, 251, 6, 20, 21, 18, 19, 3, 3, 255, 245, 248, 1, 7, 6, 0, 5, 12, 3, 8,
+			8, 246, 248, 14, 21, 16, 5, 4, 3, 0, 255, 1, 0, 12, 18, 8, 254, 250, 237, 245, 15, 13, 254, 246, 254, 15, 1, 230, 229, 246,
+			6, 0, 246, 250, 253, 238, 225, 234, 10, 11, 8, 15, 17, 12, 0, 231, 237, 10, 32, 45, 25, 242, 235, 11, 32, 28, 4, 7, 19, 29,
+			25, 255, 237, 9, 22, 6, 250, 6, 21, 3, 241, 245, 2, 252, 244, 247, 243, 0, 5, 1, 2, 254, 243, 248, 254, 254, 16, 11, 2, 8,
+			14, 10, 250, 229, 255, 20, 12, 7, 9, 21, 18, 249, 250, 10, 13, 14, 6, 255, 4, 15, 3, 243, 251, 4, 0, 252, 225, 226, 244, 4,
+			17, 11, 6, 9, 4, 243, 217, 229, 8, 28, 32, 26, 15, 1, 248, 239, 246, 255, 8, 19, 19, 14, 254, 250, 247, 253, 21, 38, 29, 254,
+			254, 249, 234, 236, 255, 12, 14, 6, 250, 246, 242, 236, 248, 14, 15, 2, 7, 249, 235, 243, 8, 5, 4, 2, 254, 7, 28, 14, 5, 26,
+			33, 18, 251, 246, 240, 249, 11, 24, 21, 14, 8, 249, 235, 242, 248, 1, 8, 4, 16, 17, 255, 239, 221, 240, 1, 1, 8, 24, 18, 255,
+			234, 228, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 9, 28, 0,
-			246, 0, 11, 13, 16, 12, 252, 240, 252, 15, 15, 16, 10, 244, 239, 3, 22, 20, 15, 12, 3, 249, 3, 27, 35, 29, 13, 0, 3, 22,
-			23, 31, 32, 8, 9, 5, 3, 14, 23, 19, 16, 0, 247, 6, 27, 17, 250, 248, 253, 0, 15, 22, 255, 250, 0, 249, 7, 8, 7, 14,
-			7, 255, 253, 12, 12, 254, 16, 28, 8, 3, 8, 14, 13, 16, 8, 6, 13, 12, 9, 8, 12, 1, 242, 1, 25, 28, 15, 239, 230, 237,
-			14, 31, 22, 11, 234, 215, 245, 22, 37, 25, 13, 242, 218, 234, 15, 31, 31, 28, 11, 243, 237, 248, 17, 38, 26, 246, 233, 18, 40, 25,
-			3, 240, 241, 7, 31, 33, 28, 14, 249, 245, 0, 14, 27, 27, 12, 21, 10, 247, 251, 19, 25, 20, 19, 17, 2, 255, 20, 23, 1, 4,
-			10, 17, 11, 0, 8, 18, 255, 6, 250, 4, 30, 11, 1, 254, 8, 11, 251, 251, 22, 29, 15, 6, 243, 1, 34, 31, 9, 0, 6, 21,
-			7, 21, 23, 19, 25, 15, 247, 44, 47, 242, 235, 19, 32, 22, 29, 16, 246, 252, 4, 9, 25, 25, 11, 234, 232, 0, 20, 31, 15, 253,
-			230, 226, 246, 29, 27, 242, 246, 252, 1, 254, 246, 255, 2, 5, 3, 251, 248, 11, 0, 250, 20, 5, 244, 242, 14, 14, 12, 23, 247, 221,
-			255, 23, 23, 34, 16, 208, 211, 24, 52, 18, 232, 240, 13, 2, 0, 13, 16, 2, 232, 239, 9, 18, 39, 23, 229, 216, 245, 30, 43, 34,
-			16, 244, 234, 248, 26, 43, 34, 22, 6, 3, 5, 13, 27, 21, 31, 25, 15, 9, 10, 17, 14, 8, 30, 30, 14, 251, 236, 18, 48, 34,
-			246, 232, 3, 13, 17, 16, 11, 5, 242, 247, 249, 6, 21, 20, 20, 245, 219, 242, 18, 22, 20, 17, 254, 237, 243, 20, 38, 20, 8, 4,
-			240, 249, 27, 37, 28, 7, 254, 238, 247, 25, 45, 34, 1, 243, 244, 2, 32, 42, 17, 243, 245, 12, 20, 22, 23, 254, 254, 14, 18, 18,
-			23, 26, 20, 250, 248, 16, 27, 29, 24, 18, 3, 244, 1, 36, 35, 7, 254, 7, 14, 14, 13, 17, 250, 245, 10, 15, 18, 16, 240, 233,
-			11, 17, 4, 253, 11, 20, 251, 238, 251, 8, 12, 9, 240, 246, 14, 19, 5, 244, 252, 253, 247, 251, 9, 15, 5, 249, 243, 252, 8, 11,
-			251, 252, 248, 240, 1, 14, 25, 13, 221, 213, 9, 45, 25, 251, 250, 7, 251, 255, 6, 254, 13, 33, 20, 241, 248, 7, 32, 28, 248, 251,
-			18, 7, 17, 41, 21, 219, 238, 16, 34, 42, 20, 254, 3, 0, 244, 26, 50, 27, 245, 252, 16, 9, 5, 28, 44, 40, 255, 232, 255, 43,
-			55, 23, 254, 11, 30, 17, 22, 27, 13, 252, 0, 53, 52, 14, 0, 233, 4, 25, 15, 15, 29, 13, 247, 2, 246, 227, 11, 41, 14, 252,
-			252, 248, 241, 226, 252, 42, 11, 242, 241, 245, 11, 5, 233, 231, 13, 43, 27, 236, 227, 251, 3, 13, 23, 9, 14, 26, 2, 234, 2, 29,
-			10, 14, 2, 252, 2, 31, 25, 235, 214, 252, 20, 49, 24, 227, 241, 4, 253, 242, 15, 42, 5, 243, 255, 239, 239, 3, 31, 58, 15, 248,
-			249, 252, 26, 60, 244, 230, 49, 25, 252, 32, 59, 33, 252, 249, 235, 250, 52, 54, 22, 17, 251, 216, 242, 36, 35, 218, 225, 61, 27, 215,
-			2, 20, 195, 215, 49, 34, 1, 13, 254, 5, 10, 242, 228, 235, 53, 89, 1, 239, 28, 7, 241, 42, 63, 240, 249, 32, 9, 12, 18, 41,
-			34, 249, 0, 17, 244, 3, 40, 24, 241, 3, 28, 219, 232, 33, 19, 242, 253, 21, 8, 12, 1, 239, 248, 9, 8, 17, 35, 3, 11, 40,
-			0, 255, 41, 26, 250, 36, 27, 7, 26, 59, 7, 206, 20, 52, 252, 10, 38, 252, 245, 238, 7, 35, 33, 12, 244, 202, 219, 33, 35, 221,
-			226, 39, 26, 239, 232, 0, 9, 29, 26, 223, 228, 18, 47, 16, 3, 35, 253, 0, 35, 35, 6, 237, 28, 38, 3, 15, 34, 8, 12, 42,
-			8, 167, 235, 92, 89, 245, 191, 238, 0, 6, 37, 37, 227, 239, 7, 250, 249, 25, 28, 251, 224, 7, 19, 252, 21, 33, 2, 249, 19, 10,
-			16, 28, 11, 251, 245, 20, 32, 18, 38, 5, 221, 238, 69, 47, 232, 246, 1, 243, 13, 37, 26, 3, 255, 220, 249, 39, 251, 244, 23, 15,
-			21, 14, 250, 246, 12, 49, 252, 232, 22, 32, 16, 28, 10, 218, 11, 32, 20, 36, 20, 8, 240, 232, 14, 48, 39, 0, 2, 49, 34, 253,
-			247, 10, 26, 40, 38, 254, 251, 14, 32, 52, 9, 201, 249, 75, 29, 4, 33, 0, 218, 6, 5, 0, 17, 41, 20, 235, 248, 38, 8, 195,
-			217, 15, 56, 28, 12, 247, 238, 237, 240, 19, 21, 18, 24, 19, 6, 248, 203, 235, 55, 51, 14, 17, 25, 8, 5, 216, 224, 55, 83, 14,
-			227, 10, 59, 28, 209, 208, 13, 43, 22, 10, 254, 4, 13, 235, 202, 252, 24, 8, 38, 11, 232, 230, 9, 254, 224, 235, 54, 44, 254, 248,
-			246, 255, 251, 214, 245, 67, 69, 15, 238, 231, 241, 4, 18, 46, 52, 22, 3, 7, 17, 240, 239, 250, 30, 75, 46, 254, 3, 15, 246, 213,
-			245, 72, 68, 4, 0, 253, 249, 4, 244, 5, 67, 75, 21, 211, 229, 10, 241, 252, 63, 80, 51, 5, 197, 199, 1, 26, 240, 30, 63, 16,
-			246, 227, 0, 250, 222, 223, 252, 69, 85, 3, 208, 250, 7, 0, 55, 27, 235, 17, 14, 254, 0, 56, 64, 247, 248, 35, 22, 5, 5, 8,
-			45, 34, 248, 12, 35, 35, 1, 253, 230, 245, 38, 55, 43, 236, 201, 255, 9, 252, 37, 39, 232, 221, 12, 4, 224, 3, 49, 26, 243, 255,
-			5, 229, 254, 29, 26, 12, 248, 0, 12, 12, 58, 59, 245, 205, 225, 14, 46, 18, 0, 25, 34, 254, 230, 236, 3, 15, 234, 220, 43, 76,
-			16, 221, 227, 250, 227, 210, 10, 62, 30, 236, 226, 241, 11, 0, 241, 3, 240, 7, 28, 32, 2, 247, 247, 246, 251, 42, 96, 34, 250, 245,
-			239, 225, 241, 60, 123, 59, 237, 230, 252, 240, 12, 32, 32, 33, 10, 1, 12, 10, 245, 243, 14, 25, 9, 248, 13, 29, 13, 237, 228, 22,
-			51, 40, 14, 248, 0, 236, 252, 26, 37, 40, 11, 2, 8, 5, 248, 212, 1, 66, 25, 243, 27, 31, 246, 215, 234, 13, 21, 42, 42, 255,
-			220, 229, 21, 44, 251, 251, 16, 17, 16, 0, 229, 242, 20, 48, 23, 6, 249, 243, 16, 2, 231, 17, 53, 28, 11, 20, 15, 20, 249, 228,
-			254, 25, 39, 37, 2, 8, 14, 1, 230, 230, 11, 46, 37, 19, 248, 228, 248, 16, 15, 14, 14, 18, 20, 225, 233, 23, 253, 246, 31, 26,
-			14, 251, 253, 20, 37, 7, 212, 216, 42, 53, 16, 28, 9, 228, 243, 35, 62, 13, 211, 234, 1, 32, 46, 12, 248, 21, 30, 243, 208, 245,
-			36, 29, 4, 0, 252, 250, 255, 8, 18, 16, 240, 10, 31, 246, 244, 13, 28, 8, 10, 22, 18, 5, 241, 13, 16, 5, 36, 65, 27, 229,
-			234, 20, 4, 6, 36, 50, 42, 242, 218, 1, 20, 0, 2, 237, 14, 49, 25, 0, 0, 227, 192, 238, 63, 54, 26, 26, 254, 218, 240, 0,
-			245, 40, 52, 24, 29, 31, 250, 223, 230, 34, 54, 2, 12, 46, 14, 230, 4, 42, 34, 0, 255, 239, 245, 25, 32, 21, 244, 237, 11, 2,
-			242, 12, 33, 2, 242, 248, 1, 29, 55, 46, 227, 210, 2, 20, 252, 10, 39, 45, 255, 218, 0, 27, 2, 2, 25, 0, 250, 8, 24, 39,
-			29, 251, 252, 4, 4, 11, 5, 250, 252, 26, 29, 1, 242, 0, 44, 15, 218, 238, 4, 0, 55, 51, 228, 233, 23, 26, 1, 11, 31, 12,
-			13, 9, 236, 240, 27, 64, 40, 241, 239, 24, 0, 236, 249, 33, 50, 6, 225, 2, 6, 2, 5, 245, 253, 25, 33, 249, 234, 10, 6, 234,
-			246, 45, 61, 22, 245, 228, 222, 250, 22, 53, 38, 6, 5, 17, 15, 11, 253, 239, 254, 41, 31, 13, 26, 30, 22, 250, 254, 7, 251, 4,
-			28, 39, 30, 16, 5, 245, 253, 6, 247, 237, 33, 69, 7, 2, 16, 255, 236, 237, 245, 22, 71, 64, 0, 245, 242, 231, 252, 17, 36, 19,
-			33, 35, 0, 224, 249, 34, 3, 225, 4, 43, 41, 28, 12, 211, 205, 22, 39, 6, 15, 22, 246, 251, 17, 11, 253, 251, 2, 11, 248, 251,
-			48, 67, 1, 207, 232, 5, 37, 37, 250, 240, 22, 51, 0, 223, 13, 39, 9, 239, 10, 42, 6, 232, 11, 27, 233, 249, 40, 19, 17, 13,
-			217, 209, 16, 44, 19, 5, 32, 17, 214, 241, 38, 13, 248, 36, 58, 6, 219, 244, 31, 28, 18, 7, 0, 23, 29, 4, 238, 240, 254, 29,
-			39, 254, 230, 22, 51, 3, 210, 240, 25, 30, 8, 246, 0, 4, 0, 12, 27, 19, 241, 235, 8, 27, 27, 14, 11, 11, 6, 250, 6, 25,
-			33, 31, 25, 253, 226, 245, 25, 34, 17, 22, 27, 43, 29, 205, 203, 19, 53, 28, 7, 22, 36, 28, 0, 225, 227, 4, 44, 58, 55, 22,
-			231, 219, 230, 25, 48, 16, 24, 48, 0, 209, 238, 1, 22, 43, 12, 3, 20, 15, 253, 240, 234, 6, 34, 31, 27, 11, 248, 247, 6, 12,
-			253, 0, 26, 32, 16, 0, 248, 5, 30, 17, 254, 20, 26, 252, 4, 20, 22, 16, 1, 243, 253, 18, 5, 6, 29, 23, 248, 237, 5, 245,
-			234, 20, 40, 4, 236, 2, 17, 6, 12, 247, 222, 2, 22, 23, 36, 37, 13, 230, 238, 238, 241, 14, 46, 58, 27, 254, 253, 17, 13, 229,
-			223, 24, 68, 56, 5, 254, 15, 19, 7, 223, 240, 50, 61, 16, 245, 252, 12, 253, 248, 4, 16, 10, 15, 254, 248, 18, 6, 250, 243, 8,
-			29, 13, 254, 6, 11, 251, 3, 18, 32, 12, 241, 7, 30, 25, 15, 10, 7, 2, 11, 15, 16, 18, 14, 17, 9, 3, 252, 6, 31, 12,
-			249, 7, 18, 7, 10, 5, 247, 250, 18, 24, 5, 0, 15, 3, 245, 253, 16, 34, 30, 8, 234, 231, 10, 32, 18, 23, 35, 13, 241, 254,
-			16, 19, 19, 13, 16, 34, 30, 18, 2, 0, 3, 0, 12, 24, 23, 16, 11, 7, 251, 5, 25, 8, 252, 10, 36, 25, 240, 242, 6, 6,
-			7, 14, 22, 42, 24, 239, 231, 244, 255, 9, 9, 28, 53, 30, 240, 227, 249, 7, 5, 0, 12, 32, 32, 255, 250, 6, 254, 252, 14, 21,
-			16, 11, 13, 8, 248, 250, 9, 18, 26, 24, 1, 243, 2, 16, 10, 241, 252, 27, 29, 12, 16, 0, 247, 0, 0, 7, 22, 20, 7, 18,
-			9, 254, 14, 26, 15, 253, 249, 4, 28, 25, 2, 233, 0, 47, 37, 2, 1, 248, 233, 8, 30, 18, 11, 22, 12, 254, 4, 24, 26, 4,
-			254, 12, 12, 251, 12, 27, 23, 20, 11, 255, 254, 13, 13, 248, 254, 3, 6, 11, 20, 19, 1, 0, 252, 251, 7, 6, 250, 18, 20, 0,
-			19, 30, 10, 245, 240, 244, 0, 29, 53, 37, 3, 249, 241, 238, 8, 33, 33, 17, 12, 7, 246, 0, 21, 6, 250, 8, 32, 34, 0, 241,
-			0, 8, 1, 252, 1, 16, 23, 8, 248, 249, 4, 10, 253, 0, 14, 9, 2, 20, 29, 15, 1, 250, 252, 9, 33, 35, 21, 21, 16, 250,
-			251, 5, 11, 14, 11, 9, 7, 14, 24, 0, 239, 248, 254, 2, 15, 18, 8, 12, 13, 248, 233, 236, 5, 25, 14, 12, 18, 2, 249, 251,
-			3, 9, 17, 16, 22, 29, 10, 0, 6, 6, 10, 6, 6, 22, 27, 23, 22, 8, 250, 251, 9, 4, 1, 20, 29, 23, 15, 9, 8, 7,
-			7, 255, 252, 5, 15, 30, 35, 22, 253, 241, 254, 251, 248, 19, 28, 15, 3, 6, 10, 2, 0, 4, 10, 13, 19, 17, 254, 0, 21, 21,
-			0, 0, 24, 30, 14, 12, 9, 246, 251, 16, 12, 7, 22, 29, 8, 248, 8, 21, 9, 10, 10, 0, 0, 16, 24, 19, 6, 3, 1, 5,
-			15, 23, 10, 249, 245, 5, 15, 18, 15, 13, 5, 250, 234, 253, 26, 36, 31, 255, 237, 6, 23, 4, 8, 21, 18, 10, 9, 13, 16, 13,
-			6, 10, 13, 18, 18, 16, 8, 2, 250, 246, 8, 33, 28, 14, 15, 12, 254, 249, 2, 14, 5, 0, 3, 15, 30, 6, 246, 11, 6, 234,
-			240, 8, 26, 22, 2, 240, 247, 8, 15, 12, 0, 0, 0, 0, 21, 41, 20, 236, 243, 22, 23, 10, 10, 18, 15, 0, 252, 1, 6, 14,
-			23, 24, 17, 3, 0, 2, 250, 246, 2, 26, 38, 34, 6, 240, 244, 252, 7, 13, 2, 19, 37, 12, 247, 250, 4, 5, 5, 15, 15, 11,
-			16, 12, 255, 3, 9, 3, 11, 29, 30, 15, 5, 15, 10, 250, 252, 4, 18, 24, 21, 10, 15, 18, 2, 247, 248, 253, 10, 20, 23, 15,
-			5, 5, 0, 245, 0, 9, 8, 14, 17, 15, 9, 5, 252, 246, 0, 13, 18, 13, 12, 12, 3, 253, 255, 6, 6, 6, 9, 1, 3, 15,
-			12, 4, 2, 254, 0, 11, 16, 0, 249, 7, 14, 6, 1, 253, 254, 7, 20, 8, 255, 9, 11, 255, 2, 18, 12, 3, 8, 17, 12, 4,
-			15, 19, 8, 3, 8, 17, 21, 16, 14, 4, 2, 12, 11, 1, 8, 18, 20, 14, 4, 253, 249, 0, 0, 0, 58, 6, 43, 0, 255, 15,
-			12, 13, 10, 254, 255, 18, 15, 8, 0, 0, 6, 19, 19, 0, 4, 10, 0, 22, 11, 0, 2, 10, 17, 9, 15, 251, 249, 21, 15, 16,
-			17, 253, 235, 14, 31, 13, 14, 250, 254, 6, 13, 20, 26, 249, 241, 2, 35, 47, 254, 213, 0, 34, 21, 2, 13, 7, 251, 252, 10, 13,
-			9, 11, 13, 13, 248, 228, 254, 35, 40, 250, 249, 0, 238, 17, 30, 27, 6, 254, 1, 3, 14, 0, 10, 29, 18, 3, 3, 254, 243, 6,
-			46, 32, 246, 237, 17, 21, 253, 18, 2, 250, 12, 26, 9, 254, 2, 3, 10, 10, 7, 9, 0, 249, 236, 23, 34, 255, 0, 246, 12, 22,
-			220, 1, 31, 12, 245, 247, 8, 10, 3, 247, 245, 40, 24, 214, 242, 29, 5, 0, 23, 246, 0, 10, 246, 21, 21, 227, 239, 41, 36, 239,
-			229, 253, 24, 33, 253, 242, 3, 2, 9, 14, 253, 253, 17, 21, 235, 240, 40, 23, 230, 10, 18, 3, 246, 1, 23, 9, 252, 17, 13, 236,
-			13, 29, 221, 250, 64, 246, 236, 22, 251, 8, 5, 254, 20, 15, 14, 243, 237, 7, 17, 12, 27, 44, 213, 196, 12, 46, 31, 11, 228, 209,
-			255, 42, 24, 232, 243, 8, 0, 3, 1, 253, 3, 4, 12, 6, 252, 219, 250, 49, 22, 246, 8, 7, 254, 235, 48, 71, 222, 197, 16, 58,
-			12, 233, 26, 86, 244, 132, 36, 89, 6, 250, 13, 21, 238, 225, 19, 27, 43, 20, 236, 216, 244, 39, 33, 234, 249, 236, 234, 255, 48, 41,
-			171, 171, 46, 60, 244, 0, 22, 240, 209, 7, 47, 24, 5, 249, 9, 247, 10, 23, 254, 29, 22, 12, 31, 15, 22, 250, 12, 55, 2, 0,
-			40, 3, 8, 28, 247, 23, 44, 17, 245, 215, 7, 54, 19, 237, 7, 254, 3, 16, 247, 225, 249, 74, 46, 193, 178, 17, 90, 4, 206, 5,
-			19, 36, 247, 207, 246, 53, 15, 251, 28, 0, 225, 10, 55, 16, 216, 6, 60, 3, 1, 26, 9, 9, 25, 17, 227, 12, 19, 251, 36, 17,
-			244, 244, 31, 34, 228, 239, 4, 49, 12, 245, 38, 6, 212, 214, 22, 47, 33, 4, 226, 249, 12, 249, 248, 39, 251, 217, 0, 54, 17, 236,
-			252, 255, 253, 240, 10, 45, 10, 19, 2, 199, 251, 33, 48, 3, 232, 26, 2, 240, 41, 7, 210, 11, 42, 25, 5, 209, 214, 56, 52, 254,
-			0, 231, 248, 39, 7, 230, 19, 29, 245, 246, 10, 44, 239, 197, 20, 52, 18, 228, 229, 27, 6, 247, 2, 18, 10, 35, 20, 225, 219, 13,
-			56, 38, 219, 252, 249, 240, 40, 35, 40, 227, 223, 11, 3, 43, 7, 226, 25, 32, 252, 235, 18, 14, 7, 40, 6, 202, 239, 45, 36, 9,
-			19, 224, 192, 23, 118, 5, 165, 233, 34, 66, 18, 251, 238, 245, 21, 10, 233, 32, 48, 3, 215, 247, 56, 11, 230, 24, 35, 213, 227, 51,
-			30, 214, 2, 47, 0, 242, 25, 3, 220, 232, 39, 25, 8, 45, 227, 185, 36, 69, 251, 208, 61, 64, 154, 2, 83, 248, 21, 8, 251, 0,
-			232, 0, 46, 38, 42, 1, 187, 254, 33, 237, 36, 50, 0, 225, 251, 36, 216, 247, 55, 44, 196, 240, 72, 199, 7, 32, 222, 30, 42, 225,
-			249, 55, 250, 213, 14, 27, 46, 252, 239, 46, 251, 196, 3, 47, 48, 249, 180, 36, 67, 215, 8, 52, 232, 234, 21, 246, 34, 46, 0, 226,
-			235, 27, 65, 252, 210, 230, 25, 81, 240, 214, 39, 37, 244, 1, 202, 242, 70, 15, 247, 250, 238, 72, 27, 156, 0, 71, 255, 250, 21, 250,
-			251, 42, 0, 229, 21, 24, 15, 233, 243, 51, 222, 254, 102, 239, 189, 1, 30, 26, 1, 10, 249, 232, 45, 10, 254, 44, 14, 174, 226, 78,
-			43, 0, 216, 245, 57, 6, 227, 221, 254, 73, 30, 11, 205, 193, 19, 39, 24, 30, 252, 9, 26, 214, 206, 253, 60, 54, 30, 244, 176, 195,
-			48, 94, 247, 211, 33, 36, 249, 213, 2, 30, 232, 42, 47, 204, 43, 64, 158, 227, 94, 250, 196, 79, 87, 167, 177, 16, 41, 23, 32, 36,
-			220, 237, 240, 10, 40, 235, 8, 22, 29, 15, 212, 230, 244, 50, 35, 246, 28, 229, 248, 15, 9, 216, 255, 36, 72, 53, 205, 233, 229, 229,
-			48, 2, 26, 38, 12, 23, 240, 186, 12, 45, 222, 23, 22, 241, 70, 3, 189, 236, 52, 34, 226, 252, 82, 7, 211, 241, 10, 251, 20, 63,
-			241, 4, 255, 235, 69, 234, 255, 16, 234, 36, 24, 190, 255, 63, 52, 37, 217, 153, 26, 54, 17, 43, 28, 232, 240, 250, 11, 239, 6, 16,
-			54, 41, 203, 245, 14, 222, 14, 30, 18, 15, 238, 4, 20, 25, 51, 196, 149, 68, 73, 28, 13, 24, 19, 208, 205, 247, 11, 14, 79, 20,
-			234, 23, 219, 211, 237, 32, 57, 26, 237, 20, 12, 186, 247, 41, 52, 20, 12, 29, 0, 161, 193, 97, 100, 22, 205, 249, 13, 12, 12, 224,
-			7, 29, 222, 6, 81, 37, 226, 201, 233, 33, 25, 21, 10, 27, 21, 215, 206, 250, 41, 38, 248, 10, 248, 253, 26, 5, 190, 230, 99, 80,
-			238, 189, 215, 11, 47, 30, 47, 53, 189, 226, 0, 209, 30, 59, 16, 17, 30, 250, 194, 239, 20, 24, 13, 13, 9, 17, 240, 253, 20, 0,
-			235, 229, 255, 56, 51, 228, 224, 23, 253, 10, 248, 235, 21, 35, 31, 250, 18, 254, 215, 17, 36, 41, 235, 228, 8, 238, 21, 33, 27, 14,
-			239, 232, 222, 23, 27, 247, 9, 61, 18, 193, 217, 32, 51, 228, 253, 44, 46, 253, 188, 209, 33, 80, 5, 241, 239, 3, 2, 1, 3, 240,
-			16, 22, 245, 244, 15, 25, 234, 3, 41, 218, 214, 20, 36, 31, 1, 239, 4, 33, 249, 210, 13, 32, 20, 254, 0, 26, 0, 35, 44, 236,
-			214, 6, 27, 31, 15, 242, 15, 13, 45, 14, 191, 225, 69, 30, 35, 24, 178, 223, 31, 28, 253, 240, 41, 50, 238, 238, 217, 228, 250, 37,
-			50, 29, 247, 245, 25, 245, 236, 253, 41, 58, 241, 249, 21, 26, 252, 205, 2, 18, 54, 29, 2, 0, 255, 244, 0, 40, 251, 219, 24, 30,
-			35, 25, 233, 5, 14, 244, 246, 250, 29, 8, 234, 28, 16, 241, 243, 250, 14, 220, 232, 53, 45, 15, 246, 247, 236, 229, 4, 40, 73, 40,
-			237, 201, 10, 0, 245, 45, 5, 23, 40, 12, 228, 225, 253, 20, 23, 38, 24, 227, 10, 42, 251, 217, 248, 12, 36, 37, 0, 12, 233, 234,
-			28, 9, 224, 4, 3, 22, 10, 6, 247, 8, 242, 235, 18, 32, 26, 236, 211, 24, 74, 10, 224, 248, 39, 7, 236, 6, 36, 38, 28, 245,
-			224, 2, 252, 243, 6, 57, 70, 13, 198, 201, 240, 9, 42, 54, 14, 245, 15, 245, 239, 8, 249, 6, 51, 34, 13, 0, 232, 247, 237, 27,
-			45, 12, 232, 13, 46, 32, 2, 242, 245, 255, 11, 248, 246, 18, 55, 41, 254, 224, 243, 237, 243, 255, 254, 0, 57, 68, 248, 212, 225, 233,
-			21, 21, 5, 26, 16, 237, 234, 3, 30, 255, 242, 14, 4, 18, 32, 21, 254, 247, 242, 244, 1, 75, 50, 3, 16, 231, 214, 247, 40, 35,
-			12, 8, 33, 0, 204, 252, 12, 1, 23, 58, 8, 228, 0, 9, 232, 4, 35, 2, 14, 27, 234, 227, 250, 28, 38, 2, 2, 245, 227, 243,
-			18, 27, 10, 254, 6, 20, 5, 248, 218, 15, 44, 14, 8, 18, 27, 253, 228, 249, 253, 32, 54, 15, 247, 255, 241, 223, 11, 62, 39, 249,
-			251, 29, 254, 216, 254, 17, 47, 49, 17, 243, 241, 6, 245, 244, 28, 42, 19, 11, 246, 239, 246, 10, 27, 7, 249, 13, 11, 255, 19, 255,
-			243, 8, 0, 1, 13, 16, 12, 253, 15, 4, 233, 252, 25, 7, 255, 21, 22, 0, 253, 12, 252, 247, 252, 10, 25, 38, 14, 242, 255, 10,
-			5, 9, 16, 15, 244, 249, 23, 25, 1, 3, 7, 250, 1, 2, 14, 23, 15, 240, 245, 15, 12, 0, 6, 17, 10, 1, 243, 249, 13, 23,
-			0, 8, 16, 1, 7, 6, 1, 1, 10, 6, 12, 9, 7, 11, 5, 0, 3, 4, 8, 18, 2, 251, 10, 29, 25, 246, 237, 244, 16, 31,
-			23, 8, 0, 252, 251, 5, 7, 12, 18, 9, 4, 250, 251, 10, 5, 1, 9, 17, 255, 254, 11, 10, 7, 0, 2, 8, 2, 12, 14, 1,
-			8, 3, 243, 6, 20, 8, 250, 0, 16, 11, 2, 7, 4, 249, 4, 12, 10, 8, 4, 13, 14, 1, 0, 1, 6, 8, 5, 0, 2, 10,
-			7, 6, 250, 247, 4, 8, 12, 15, 4, 248, 244, 1, 10, 5, 2, 6, 13, 8, 251, 251, 12, 8, 246, 250, 4, 12, 12, 11, 9, 1,
-			250, 248, 4, 4, 5, 19, 19, 7, 255, 255, 6, 17, 11, 1, 10, 24, 7, 2, 10, 10, 254, 2, 22, 13, 254, 0, 9, 14, 7, 3,
-			2, 4, 8, 12, 11, 11, 10, 10, 13, 17, 2, 2, 14, 20, 11, 8, 27, 13, 254, 14, 13, 7, 8, 10, 13, 14, 13, 6, 6, 3,
-			3, 4, 0, 0, 254, 6, 29, 0, 249, 255, 10, 5, 11, 0, 255, 254, 2, 4, 4, 9, 252, 250, 6, 2, 10, 255, 239, 0, 12, 11,
-			0, 249, 246, 4, 12, 253, 253, 254, 18, 254, 236, 235, 13, 24, 254, 244, 246, 0, 5, 7, 3, 248, 0, 1, 241, 250, 12, 11, 3, 4,
-			2, 0, 247, 251, 2, 5, 14, 3, 254, 2, 234, 8, 31, 5, 238, 248, 252, 255, 20, 4, 243, 9, 5, 253, 246, 0, 253, 13, 2, 8,
-			242, 233, 18, 30, 5, 237, 235, 253, 11, 10, 10, 253, 235, 6, 9, 5, 255, 245, 254, 7, 5, 2, 244, 239, 255, 21, 16, 242, 0, 20,
-			239, 237, 18, 2, 251, 4, 254, 6, 247, 3, 31, 3, 0, 255, 226, 243, 29, 21, 244, 242, 9, 22, 255, 231, 243, 19, 12, 241, 248, 18,
-			4, 225, 254, 23, 6, 246, 240, 13, 6, 249, 18, 255, 243, 251, 11, 5, 248, 2, 246, 2, 15, 19, 7, 230, 233, 16, 12, 13, 5, 226,
-			232, 18, 41, 13, 232, 229, 6, 12, 10, 0, 237, 252, 7, 11, 10, 247, 244, 254, 0, 9, 0, 238, 10, 30, 4, 240, 241, 243, 17, 8,
-			2, 1, 245, 4, 12, 255, 255, 0, 6, 12, 251, 247, 8, 242, 238, 4, 24, 25, 253, 232, 227, 255, 42, 255, 247, 249, 252, 13, 10, 8,
-			255, 228, 245, 17, 10, 11, 236, 226, 21, 42, 252, 248, 228, 229, 16, 39, 14, 238, 3, 249, 240, 22, 254, 11, 236, 228, 26, 48, 3, 201,
-			0, 5, 40, 13, 211, 230, 14, 23, 253, 11, 247, 247, 248, 246, 29, 25, 247, 224, 224, 253, 41, 48, 228, 236, 247, 239, 51, 32, 208, 228,
-			17, 38, 14, 1, 250, 239, 230, 1, 38, 19, 230, 237, 28, 22, 243, 235, 5, 2, 244, 250, 8, 7, 0, 239, 238, 34, 9, 218, 3, 34,
-			233, 213, 22, 42, 23, 222, 219, 246, 47, 19, 226, 249, 1, 19, 18, 244, 255, 248, 233, 247, 20, 38, 253, 235, 44, 17, 195, 251, 49, 252,
-			231, 239, 0, 30, 20, 247, 247, 6, 242, 2, 4, 254, 248, 1, 39, 2, 214, 236, 26, 27, 250, 236, 237, 11, 22, 249, 0, 252, 249, 254,
-			249, 9, 0, 248, 17, 27, 235, 225, 252, 37, 40, 240, 194, 0, 31, 3, 240, 251, 28, 18, 14, 234, 226, 2, 23, 4, 2, 10, 1, 12,
-			236, 232, 3, 18, 247, 19, 25, 233, 225, 16, 13, 239, 245, 13, 254, 237, 43, 63, 225, 153, 231, 53, 35, 7, 2, 243, 211, 255, 33, 15,
-			224, 214, 36, 62, 9, 9, 249, 183, 240, 40, 33, 29, 233, 252, 239, 243, 55, 4, 198, 220, 33, 74, 29, 211, 211, 241, 8, 36, 16, 0,
-			227, 211, 22, 245, 9, 16, 20, 10, 214, 231, 5, 30, 230, 242, 38, 28, 25, 228, 220, 248, 249, 35, 47, 2, 215, 227, 21, 4, 255, 19,
-			6, 242, 209, 19, 54, 2, 233, 240, 0, 255, 28, 248, 228, 17, 12, 7, 8, 0, 249, 227, 24, 18, 4, 242, 232, 16, 8, 10, 240, 4,
-			15, 224, 223, 246, 36, 21, 48, 10, 195, 212, 253, 44, 22, 2, 249, 233, 6, 235, 2, 13, 38, 13, 194, 235, 0, 14, 247, 6, 77, 8,
-			171, 234, 49, 223, 9, 61, 249, 35, 11, 183, 241, 27, 24, 29, 253, 181, 215, 72, 81, 240, 222, 18, 11, 233, 211, 223, 81, 32, 184, 215,
-			65, 36, 215, 203, 247, 88, 18, 171, 223, 45, 29, 248, 229, 2, 31, 240, 190, 255, 66, 39, 4, 216, 255, 253, 236, 7, 27, 19, 233, 246,
-			42, 6, 230, 2, 22, 0, 249, 239, 8, 31, 246, 244, 235, 11, 18, 239, 237, 7, 25, 12, 254, 245, 243, 253, 37, 8, 221, 242, 43, 19,
-			196, 204, 33, 63, 7, 242, 191, 221, 45, 79, 26, 210, 185, 4, 55, 1, 223, 7, 35, 228, 217, 1, 78, 51, 177, 165, 41, 81, 4, 244,
-			223, 223, 83, 37, 213, 253, 17, 234, 235, 5, 32, 16, 236, 199, 229, 22, 86, 37, 174, 179, 20, 52, 29, 250, 222, 207, 10, 85, 36, 222,
-			182, 196, 48, 69, 20, 240, 235, 23, 7, 228, 251, 220, 246, 87, 66, 198, 140, 43, 80, 14, 4, 16, 203, 157, 7, 60, 59, 20, 225, 223,
-			26, 24, 235, 216, 175, 7, 46, 31, 20, 73, 23, 131, 204, 73, 27, 204, 249, 25, 10, 14, 36, 21, 204, 213, 11, 57, 18, 197, 198, 251,
-			68, 58, 235, 14, 235, 157, 215, 27, 125, 87, 175, 148, 13, 44, 26, 36, 228, 196, 8, 13, 39, 52, 234, 148, 252, 96, 60, 18, 170, 155,
-			64, 84, 234, 187, 225, 8, 19, 240, 9, 17, 14, 247, 192, 42, 73, 250, 236, 224, 238, 76, 33, 176, 218, 49, 47, 252, 223, 252, 248, 244,
-			63, 32, 164, 21, 52, 195, 211, 23, 44, 9, 225, 248, 57, 210, 246, 102, 208, 191, 37, 2, 227, 29, 53, 220, 242, 15, 15, 205, 238, 40,
-			27, 30, 216, 218, 12, 21, 220, 202, 23, 105, 37, 140, 208, 60, 7, 219, 35, 42, 232, 244, 255, 47, 46, 189, 167, 246, 55, 90, 12, 207,
-			162, 222, 64, 81, 47, 236, 173, 222, 81, 42, 243, 182, 203, 46, 46, 30, 202, 207, 24, 63, 20, 36, 23, 164, 163, 255, 77, 100, 250, 187,
-			223, 0, 245, 35, 71, 220, 196, 232, 18, 31, 21, 251, 239, 71, 224, 160, 15, 4, 10, 93, 12, 190, 241, 234, 187, 48, 59, 24, 21, 193,
-			215, 5, 25, 2, 232, 254, 12, 33, 248, 0, 240, 1, 41, 18, 5, 252, 232, 247, 42, 31, 201, 12, 74, 223, 229, 16, 20, 12, 242, 226,
-			235, 1, 14, 44, 0, 179, 245, 19, 187, 8, 107, 253, 186, 234, 44, 3, 216, 3, 24, 224, 3, 34, 1, 232, 7, 238, 201, 48, 67, 242,
-			2, 252, 10, 33, 225, 224, 8, 1, 14, 84, 243, 166, 34, 67, 222, 188, 51, 114, 230, 187, 180, 6, 114, 37, 200, 190, 254, 10, 20, 28,
-			21, 38, 187, 198, 9, 60, 3, 166, 245, 106, 43, 156, 233, 0, 33, 43, 177, 220, 32, 22, 0, 252, 226, 10, 77, 235, 165, 244, 62, 6,
-			247, 29, 251, 47, 252, 176, 221, 110, 44, 229, 12, 236, 222, 61, 26, 209, 237, 29, 36, 17, 211, 211, 8, 56, 11, 211, 6, 233, 217, 7,
-			61, 3, 221, 226, 251, 33, 246, 223, 42, 242, 214, 21, 50, 243, 240, 253, 226, 19, 47, 56, 220, 192, 245, 29, 33, 19, 220, 230, 44, 38,
-			238, 5, 221, 174, 98, 43, 206, 245, 250, 57, 250, 214, 27, 254, 197, 23, 55, 254, 172, 1, 72, 14, 201, 233, 54, 15, 203, 0, 69, 232,
-			240, 227, 223, 47, 77, 0, 182, 238, 51, 50, 243, 166, 19, 39, 234, 254, 47, 4, 215, 11, 10, 223, 253, 40, 55, 210, 235, 10, 7, 16,
-			176, 223, 96, 77, 210, 164, 212, 16, 90, 54, 162, 218, 10, 13, 65, 13, 185, 210, 36, 41, 37, 17, 214, 245, 238, 0, 54, 35, 217, 223,
-			20, 16, 227, 212, 60, 33, 221, 230, 12, 16, 22, 242, 229, 43, 240, 194, 14, 15, 223, 39, 70, 244, 186, 236, 46, 53, 233, 174, 9, 64,
-			12, 251, 220, 4, 31, 3, 218, 244, 30, 240, 14, 30, 18, 238, 40, 243, 163, 224, 74, 45, 198, 249, 255, 33, 3, 227, 10, 253, 254, 250,
-			31, 44, 254, 10, 215, 205, 29, 26, 212, 234, 23, 5, 10, 18, 241, 230, 45, 1, 218, 4, 37, 31, 192, 220, 50, 56, 234, 248, 14, 216,
-			11, 240, 11, 67, 210, 233, 21, 248, 214, 0, 39, 35, 0, 215, 35, 10, 210, 255, 16, 228, 210, 92, 61, 222, 189, 247, 21, 247, 10, 9,
-			24, 224, 220, 27, 68, 6, 193, 233, 48, 28, 204, 250, 49, 29, 221, 211, 23, 7, 248, 6, 10, 21, 255, 251, 214, 221, 29, 23, 0, 237,
-			8, 252, 241, 23, 23, 246, 216, 0, 22, 246, 29, 32, 230, 197, 26, 63, 6, 224, 247, 37, 43, 0, 210, 254, 236, 228, 77, 21, 174, 206,
-			15, 49, 14, 234, 227, 252, 251, 0, 9, 19, 5, 246, 1, 4, 17, 239, 208, 252, 30, 66, 46, 3, 199, 192, 6, 67, 66, 246, 199, 215,
-			66, 72, 220, 202, 255, 14, 27, 253, 216, 235, 242, 0, 57, 42, 191, 155, 229, 72, 49, 222, 0, 253, 188, 233, 21, 27, 16, 31, 9, 193,
-			213, 78, 55, 0, 237, 227, 36, 54, 22, 212, 221, 12, 74, 68, 206, 186, 27, 74, 27, 195, 216, 12, 0, 252, 5, 23, 1, 212, 208, 234,
-			50, 53, 240, 225, 199, 232, 15, 18, 10, 202, 207, 4, 19, 43, 23, 247, 4, 254, 238, 253, 22, 32, 238, 232, 66, 75, 222, 207, 225, 10,
-			61, 55, 242, 200, 239, 32, 14, 0, 240, 255, 21, 6, 239, 34, 20, 204, 246, 9, 235, 234, 255, 9, 0, 29, 0, 208, 220, 0, 58, 54,
-			217, 180, 253, 19, 37, 64, 251, 194, 219, 254, 28, 254, 253, 254, 29, 50, 0, 173, 212, 57, 74, 16, 223, 245, 2, 242, 8, 42, 0, 243,
-			4, 253, 9, 27, 241, 217, 1, 34, 36, 1, 223, 217, 250, 28, 30, 236, 224, 239, 242, 14, 20, 253, 232, 212, 232, 78, 65, 192, 166, 235,
-			42, 66, 14, 225, 228, 230, 12, 67, 48, 221, 208, 249, 29, 42, 44, 10, 201, 208, 52, 69, 230, 218, 24, 30, 20, 239, 208, 235, 23, 40,
-			29, 10, 249, 227, 205, 219, 4, 39, 27, 232, 224, 254, 28, 35, 231, 193, 228, 37, 9, 244, 255, 7, 33, 246, 225, 234, 246, 250, 16, 48,
-			37, 243, 204, 242, 35, 64, 19, 210, 219, 231, 243, 14, 43, 51, 32, 237, 206, 2, 19, 3, 2, 236, 252, 29, 9, 234, 8, 46, 9, 223,
-			234, 12, 24, 252, 229, 247, 249, 9, 16, 1, 233, 6, 14, 245, 250, 255, 251, 242, 252, 5, 6, 10, 233, 223, 5, 22, 12, 249, 4, 247,
-			240, 245, 27, 29, 231, 235, 26, 34, 15, 248, 223, 247, 14, 3, 0, 3, 22, 13, 230, 239, 43, 54, 236, 219, 233, 253, 19, 18, 9, 0,
-			5, 7, 0, 240, 236, 1, 18, 251, 16, 12, 239, 234, 5, 11, 242, 247, 12, 33, 250, 241, 0, 234, 240, 0, 10, 235, 219, 248, 0, 0,
-			72, 4, 48, 0, 20, 243, 243, 32, 248, 1, 249, 9, 17, 225, 246, 27, 7, 231, 12, 8, 254, 5, 245, 255, 15, 0, 210, 26, 28, 197,
-			8, 36, 238, 7, 245, 247, 30, 237, 0, 26, 235, 38, 16, 183, 40, 43, 183, 12, 55, 228, 255, 252, 3, 23, 227, 10, 24, 231, 32, 245,
-			220, 36, 4, 231, 28, 21, 247, 248, 8, 10, 208, 244, 18, 3, 226, 205, 40, 40, 222, 255, 22, 236, 18, 0, 0, 24, 243, 19, 14, 230,
-			2, 246, 237, 4, 242, 4, 37, 244, 5, 20, 2, 235, 220, 29, 82, 188, 216, 75, 243, 253, 253, 249, 27, 238, 242, 8, 1, 245, 16, 236,
-			228, 42, 48, 202, 236, 53, 231, 231, 36, 0, 249, 21, 204, 52, 228, 214, 65, 198, 214, 110, 251, 205, 32, 48, 10, 222, 0, 19, 228, 251,
-			10, 201, 8, 74, 235, 229, 251, 251, 253, 31, 233, 206, 66, 30, 205, 3, 6, 23, 248, 211, 15, 23, 249, 237, 6, 10, 33, 240, 201, 49,
-			22, 215, 247, 24, 24, 9, 240, 6, 47, 249, 228, 42, 5, 211, 1, 12, 37, 16, 216, 2, 29, 218, 208, 17, 249, 33, 1, 200, 46, 7,
-			228, 239, 255, 17, 232, 235, 35, 27, 222, 232, 17, 7, 240, 237, 17, 23, 216, 234, 44, 21, 240, 7, 44, 1, 224, 248, 48, 13, 217, 5,
-			20, 26, 0, 3, 17, 1, 214, 243, 42, 246, 232, 32, 31, 235, 243, 6, 243, 240, 7, 15, 4, 8, 244, 241, 254, 8, 4, 3, 0, 236,
-			237, 243, 23, 227, 0, 51, 196, 200, 76, 45, 201, 231, 15, 27, 249, 253, 9, 249, 37, 18, 194, 16, 69, 213, 211, 9, 19, 26, 244, 8,
-			23, 20, 238, 210, 9, 59, 221, 205, 82, 52, 181, 231, 26, 7, 230, 238, 37, 17, 4, 226, 239, 40, 32, 234, 203, 5, 38, 235, 228, 40,
-			220, 0, 65, 208, 210, 41, 26, 213, 238, 35, 43, 213, 228, 63, 217, 234, 22, 255, 8, 253, 233, 0, 47, 244, 5, 12, 2, 10, 240, 42,
-			240, 230, 46, 237, 234, 28, 24, 250, 3, 254, 237, 253, 10, 26, 213, 246, 87, 224, 155, 58, 64, 172, 167, 58, 52, 206, 0, 26, 252, 239,
-			238, 239, 233, 37, 16, 236, 245, 27, 20, 237, 30, 14, 225, 2, 17, 2, 254, 30, 10, 241, 18, 32, 10, 241, 251, 255, 13, 254, 234, 39,
-			4, 245, 17, 220, 0, 37, 243, 193, 36, 47, 195, 193, 76, 60, 177, 244, 40, 245, 210, 236, 255, 2, 252, 26, 3, 254, 45, 201, 196, 60,
-			238, 231, 53, 18, 244, 24, 245, 222, 20, 14, 2, 15, 242, 249, 246, 38, 28, 219, 235, 48, 49, 201, 228, 44, 16, 218, 17, 0, 10, 26,
-			1, 233, 226, 35, 19, 223, 208, 40, 25, 217, 1, 217, 24, 34, 242, 229, 238, 55, 48, 159, 183, 75, 51, 251, 229, 244, 41, 253, 179, 249,
-			66, 42, 229, 212, 47, 29, 212, 0, 25, 3, 2, 30, 19, 234, 0, 221, 20, 39, 235, 249, 5, 11, 5, 192, 232, 67, 0, 223, 20, 234,
-			12, 30, 212, 234, 4, 12, 7, 217, 15, 46, 217, 244, 6, 240, 23, 39, 236, 226, 30, 17, 242, 248, 1, 18, 251, 255, 255, 0, 11, 11,
-			0, 251, 16, 23, 241, 0, 11, 16, 248, 239, 245, 16, 12, 216, 0, 3, 10, 43, 246, 227, 13, 254, 205, 1, 47, 31, 234, 194, 35, 66,
-			234, 210, 228, 6, 62, 226, 202, 43, 19, 193, 227, 54, 33, 17, 228, 240, 254, 14, 14, 186, 30, 126, 219, 166, 31, 42, 248, 214, 231, 52,
-			2, 1, 39, 191, 228, 68, 227, 212, 63, 37, 3, 227, 215, 35, 31, 226, 0, 8, 250, 17, 240, 219, 18, 23, 253, 214, 0, 51, 0, 209,
-			21, 51, 242, 202, 252, 43, 8, 250, 16, 7, 18, 242, 218, 36, 13, 194, 246, 35, 12, 255, 219, 251, 71, 10, 189, 233, 15, 13, 0, 227,
-			41, 64, 236, 191, 212, 17, 36, 1, 215, 52, 43, 216, 186, 4, 65, 11, 236, 3, 16, 245, 253, 24, 5, 222, 15, 19, 2, 21, 243, 227,
-			32, 11, 200, 5, 58, 22, 220, 225, 21, 10, 14, 224, 185, 57, 66, 197, 248, 25, 230, 254, 249, 242, 26, 24, 238, 240, 253, 33, 14, 244,
-			26, 240, 206, 244, 8, 22, 20, 4, 4, 7, 16, 221, 225, 18, 33, 231, 235, 35, 24, 22, 238, 240, 253, 4, 8, 234, 236, 2, 21, 6,
-			30, 250, 221, 18, 6, 233, 244, 17, 22, 254, 244, 4, 21, 17, 241, 213, 16, 23, 223, 253, 18, 255, 5, 3, 225, 24, 4, 245, 239, 217,
-			27, 44, 247, 2, 7, 6, 0, 210, 244, 50, 9, 247, 9, 0, 20, 216, 232, 53, 11, 230, 2, 248, 8, 30, 250, 237, 241, 35, 50, 252,
-			210, 225, 6, 11, 8, 7, 22, 254, 231, 253, 255, 3, 15, 252, 241, 14, 11, 236, 230, 227, 250, 22, 22, 2, 7, 21, 0, 230, 253, 31,
-			9, 235, 245, 16, 13, 229, 239, 2, 5, 20, 250, 234, 27, 29, 225, 213, 4, 39, 48, 5, 231, 0, 3, 0, 14, 229, 227, 13, 17, 24,
-			15, 231, 229, 3, 246, 22, 6, 255, 17, 244, 239, 20, 3, 247, 16, 247, 234, 245, 21, 1, 217, 246, 43, 35, 2, 231, 241, 13, 247, 248,
-			20, 13, 18, 4, 229, 242, 7, 9, 250, 249, 17, 255, 245, 19, 0, 0, 19, 255, 6, 242, 237, 254, 254, 247, 10, 10, 247, 2, 251, 239,
-			242, 6, 36, 13, 242, 232, 13, 24, 255, 236, 246, 5, 9, 16, 29, 7, 219, 250, 18, 252, 247, 2, 25, 0, 222, 249, 25, 30, 0, 237,
-			216, 2, 31, 254, 244, 251, 1, 0, 252, 255, 24, 247, 224, 254, 18, 30, 8, 253, 251, 3, 0, 13, 251, 235, 16, 22, 5, 246, 246, 9,
-			16, 242, 253, 11, 9, 250, 208, 237, 22, 18, 255, 253, 6, 8, 237, 227, 249, 254, 250, 7, 10, 20, 12, 250, 248, 249, 0, 0, 0, 9,
-			19, 12, 17, 12, 253, 235, 242, 7, 19, 10, 244, 253, 9, 9, 8, 2, 255, 2, 244, 243, 254, 248, 246, 1, 22, 4, 0, 244, 251, 253,
-			243, 255, 17, 20, 244, 237, 253, 2, 7, 6, 250, 247, 249, 250, 4, 0, 1, 0, 6, 9, 169, 2, 15, 0, 248, 210, 174, 42, 30, 188,
-			13, 55, 245, 4, 253, 171, 232, 59, 16, 228, 244, 243, 221, 35, 28, 227, 237, 8, 48, 27, 3, 252, 218, 9, 14, 243, 249, 250, 4, 20,
-			3, 244, 243, 7, 37, 11, 227, 247, 251, 31, 58, 231, 237, 2, 5, 254, 227, 253, 15, 243, 248, 244, 19, 4, 249, 30, 11, 5, 27, 35,
-			35, 187, 131, 49, 46, 252, 236, 220, 241, 36, 60, 208, 211, 62, 254, 255, 25, 227, 2, 30, 27, 240, 198, 244, 37, 241, 213, 19, 241, 1,
-			34, 241, 17, 5, 230, 9, 12, 4, 254, 14, 5, 12, 244, 238, 23, 6, 21, 27, 231, 255, 16, 245, 232, 250, 4, 15, 7, 238, 225, 7,
-			255, 23, 15, 5, 229, 239, 26, 249, 234, 27, 254, 185, 229, 31, 239, 221, 18, 215, 172, 221, 43, 6, 238, 251, 234, 11, 34, 254, 254, 5,
-			11, 50, 34, 225, 243, 53, 49, 8, 233, 250, 41, 42, 42, 240, 252, 53, 31, 244, 246, 20, 25, 18, 235, 249, 42, 1, 238, 15, 1, 2,
-			29, 0, 2, 40, 254, 18, 11, 226, 15, 44, 231, 168, 243, 37, 48, 238, 190, 244, 17, 47, 245, 224, 4, 246, 23, 29, 247, 230, 244, 42,
-			37, 225, 204, 234, 37, 67, 210, 168, 236, 55, 67, 221, 192, 9, 67, 253, 218, 227, 3, 52, 22, 227, 203, 235, 86, 48, 210, 176, 21, 69,
-			30, 253, 230, 29, 38, 245, 248, 49, 28, 254, 26, 8, 237, 33, 57, 22, 245, 242, 32, 57, 0, 226, 15, 42, 20, 0, 233, 183, 238, 55,
-			45, 213, 172, 203, 29, 71, 254, 185, 170, 235, 49, 25, 190, 195, 21, 42, 250, 195, 230, 13, 27, 19, 239, 244, 226, 245, 0, 249, 4, 224,
-			204, 231, 50, 50, 208, 187, 204, 189, 231, 52, 18, 205, 191, 239, 26, 250, 241, 220, 228, 18, 23, 226, 210, 25, 71, 30, 195, 191, 9, 79,
-			62, 250, 2, 250, 3, 43, 44, 4, 250, 26, 10, 254, 30, 36, 5, 245, 17, 33, 10, 245, 4, 55, 3, 6, 50, 4, 254, 17, 249, 28,
-			26, 245, 0, 6, 240, 237, 16, 253, 204, 215, 248, 232, 30, 23, 190, 208, 26, 32, 225, 208, 243, 22, 3, 215, 241, 13, 46, 38, 253, 224,
-			229, 28, 37, 17, 5, 3, 244, 244, 0, 0, 225, 254, 17, 215, 198, 237, 35, 26, 233, 219, 213, 232, 30, 8, 244, 6, 242, 8, 36, 14,
-			196, 230, 50, 48, 249, 212, 245, 21, 27, 235, 236, 246, 2, 38, 2, 197, 209, 29, 28, 0, 9, 242, 248, 31, 32, 228, 226, 41, 68, 29,
-			221, 244, 45, 88, 62, 248, 238, 250, 49, 42, 50, 10, 195, 206, 76, 84, 197, 204, 29, 17, 183, 19, 59, 244, 201, 234, 252, 238, 29, 231,
-			221, 11, 16, 209, 245, 22, 236, 228, 13, 11, 225, 196, 229, 41, 32, 224, 232, 248, 255, 246, 226, 22, 28, 216, 174, 33, 78, 24, 216, 235,
-			32, 36, 11, 252, 250, 247, 31, 79, 26, 212, 247, 78, 69, 28, 236, 244, 65, 75, 30, 238, 24, 29, 248, 27, 78, 37, 255, 215, 230, 69,
-			64, 10, 12, 4, 0, 253, 24, 43, 16, 206, 235, 18, 42, 37, 2, 174, 176, 254, 43, 2, 221, 200, 219, 254, 241, 237, 229, 210, 237, 252,
-			221, 217, 242, 237, 215, 244, 17, 220, 172, 202, 26, 22, 242, 222, 250, 238, 216, 228, 233, 241, 244, 229, 220, 247, 233, 219, 215, 239, 251, 239,
-			216, 208, 226, 18, 44, 27, 0, 254, 242, 7, 29, 33, 20, 9, 15, 61, 59, 8, 224, 226, 29, 92, 85, 11, 211, 206, 250, 21, 235, 206,
-			240, 252, 204, 174, 217, 251, 237, 187, 186, 202, 216, 207, 173, 159, 178, 233, 241, 198, 169, 166, 181, 214, 9, 4, 209, 179, 193, 239, 8, 6,
-			249, 239, 235, 246, 7, 14, 0, 252, 12, 18, 21, 245, 228, 8, 31, 0, 0, 0, 183, 4, 23, 0, 11, 14, 14, 14, 12, 9, 7, 8,
-			15, 14, 14, 15, 11, 4, 2, 254, 251, 247, 248, 249, 254, 4, 8, 7, 6, 10, 9, 7, 11, 9, 3, 1, 7, 9, 6, 14, 13, 14,
-			10, 12, 12, 12, 15, 16, 14, 18, 14, 10, 11, 11, 9, 10, 12, 12, 18, 16, 6, 3, 0, 0, 0, 255, 0, 1, 9, 8, 14, 23,
-			21, 17, 22, 2, 250, 1, 255, 199, 133, 166, 246, 26, 34, 27, 1, 8, 21, 3, 233, 240, 3, 32, 53, 54, 43, 44, 39, 16, 1, 5,
-			22, 29, 30, 30, 34, 35, 30, 32, 18, 7, 8, 20, 33, 48, 45, 42, 32, 19, 10, 9, 9, 9, 4, 8, 14, 24, 16, 6, 1, 0,
-			246, 246, 6, 15, 14, 9, 7, 4, 10, 14, 244, 186, 206, 248, 29, 13, 18, 4, 7, 26, 4, 237, 224, 0, 25, 38, 33, 18, 23, 26,
-			17, 254, 4, 9, 18, 27, 31, 27, 24, 22, 11, 6, 253, 0, 6, 22, 20, 9, 5, 12, 14, 8, 1, 250, 248, 1, 3, 2, 255, 0,
-			4, 7, 255, 251, 255, 10, 17, 11, 9, 10, 12, 11, 8, 14, 17, 21, 28, 23, 25, 19, 17, 25, 26, 14, 9, 15, 29, 29, 17, 19,
-			17, 13, 16, 15, 15, 20, 17, 10, 254, 254, 0, 8, 8, 7, 9, 8, 4, 3, 0, 0, 255, 252, 255, 2, 15, 7, 11, 13, 15, 15,
-			13, 8, 16, 25, 17, 24, 28, 23, 23, 20, 28, 36, 33, 22, 15, 16, 26, 24, 14, 11, 12, 9, 15, 24, 15, 8, 7, 0, 251, 254,
-			0, 5, 10, 11, 16, 3, 5, 2, 0, 248, 246, 1, 9, 16, 7, 3, 4, 5, 8, 5, 0, 247, 4, 19, 10, 0, 254, 9, 14, 12,
-			1, 253, 14, 17, 14, 1, 1, 18, 19, 25, 17, 3, 9, 22, 19, 9, 2, 255, 0, 9, 8, 4, 10, 15, 13, 255, 248, 252, 6, 14,
-			13, 7, 6, 13, 8, 254, 254, 11, 13, 15, 11, 5, 12, 19, 16, 11, 3, 252, 7, 18, 20, 14, 11, 13, 18, 10, 12, 10, 4, 17,
-			13, 6, 1, 7, 12, 17, 9, 254, 0, 6, 13, 11, 10, 7, 10, 11, 7, 15, 9, 12, 18, 16, 19, 14, 9, 8, 17, 18, 21, 20,
-			17, 19, 18, 11, 0, 5, 16, 26, 17, 1, 5, 19, 24, 3, 249, 1, 7, 19, 10, 3, 10, 15, 13, 8, 0, 0, 14, 22, 7, 4,
-			22, 28, 22, 14, 4, 15, 23, 16, 16, 24, 34, 33, 19, 4, 0, 7, 21, 33, 27, 21, 14, 4, 0, 0, 6, 6, 11, 14, 11, 15,
-			10, 9, 3, 255, 6, 11, 22, 27, 21, 4, 9, 23, 20, 6, 8, 12, 18, 22, 12, 8, 14, 14, 10, 2, 0, 255, 6, 17, 18, 8,
-			5, 4, 252, 3, 0, 0, 6, 9, 10, 8, 4, 3, 13, 11, 3, 1, 0, 11, 23, 23, 16, 17, 14, 11, 13, 17, 12, 10, 8, 3,
-			6, 11, 15, 16, 11, 4, 11, 7, 248, 246, 5, 7, 3, 9, 12, 12, 11, 0, 252, 16, 22, 13, 13, 19, 32, 35, 26, 17, 15, 30,
-			34, 21, 4, 15, 34, 37, 23, 15, 18, 27, 37, 19, 7, 14, 23, 22, 17, 4, 0, 22, 24, 16, 7, 9, 19, 19, 14, 5, 6, 12,
-			12, 4, 5, 21, 19, 13, 8, 255, 250, 255, 10, 15, 9, 8, 14, 11, 3, 254, 1, 14, 18, 23, 24, 20, 24, 14, 4, 3, 8, 15,
-			28, 34, 20, 16, 12, 3, 2, 4, 1, 4, 11, 13, 16, 11, 0, 248, 255, 5, 3, 9, 4, 0, 7, 14, 1, 248, 0, 6, 13, 9,
-			0, 4, 15, 9, 10, 11, 9, 18, 23, 25, 15, 11, 14, 19, 23, 16, 13, 21, 27, 21, 8, 6, 12, 16, 7, 7, 8, 9, 14, 14,
-			4, 249, 0, 1, 0, 0, 254, 1, 1, 250, 242, 245, 0, 10, 2, 252, 248, 248, 252, 2, 0, 0, 7, 10, 18, 24, 17, 5, 5, 7,
-			4, 3, 7, 20, 22, 21, 20, 14, 5, 255, 7, 17, 14, 10, 11, 17, 15, 2, 0, 4, 4, 12, 17, 12, 10, 4, 0, 9, 14, 7,
-			4, 3, 6, 8, 10, 16, 17, 11, 11, 14, 14, 8, 9, 12, 13, 14, 7, 5, 16, 21, 18, 17, 14, 12, 17, 17, 15, 3, 255, 10,
-			29, 30, 21, 12, 1, 2, 0, 254, 5, 17, 18, 13, 3, 0, 7, 9, 2, 253, 249, 0, 6, 9, 1, 1, 8, 8, 2, 5, 7, 0,
-			254, 255, 1, 13, 20, 19, 17, 16, 15, 6, 5, 15, 16, 15, 18, 17, 17, 18, 14, 4, 253, 252, 255, 5, 13, 10, 1, 4, 7, 4,
-			253, 249, 253, 255, 0, 3, 10, 12, 11, 10, 6, 15, 20, 17, 15, 19, 23, 21, 20, 23, 16, 12, 24, 29, 22, 15, 9, 14, 16, 1,
-			246, 255, 11, 15, 17, 7, 255, 253, 251, 254, 255, 3, 5, 14, 20, 14, 8, 12, 18, 9, 5, 6, 13, 21, 21, 17, 17, 20, 23, 15,
-			9, 11, 17, 14, 15, 12, 11, 15, 21, 21, 13, 5, 8, 5, 8, 5, 2, 4, 11, 5, 7, 10, 4, 5, 10, 12, 9, 12, 10, 10,
-			12, 13, 10, 10, 15, 11, 14, 16, 16, 13, 9, 2, 6, 19, 18, 13, 11, 15, 15, 12, 5, 8, 14, 17, 20, 21, 18, 9, 7, 16,
-			14, 7, 11, 19, 18, 19, 17, 18, 14, 11, 7, 4, 6, 12, 14, 13, 7, 9, 15, 14, 3, 254, 0, 4, 6, 6, 6, 10, 13, 9,
-			255, 0, 10, 13, 9, 8, 3, 4, 14, 14, 8, 7, 9, 7, 5, 3, 6, 2, 5, 8, 8, 3, 4, 6, 4, 7, 6, 4, 3, 7,
-			6, 0, 3, 12, 20, 18, 8, 6, 12, 16, 12, 7, 6, 8, 13, 11, 12, 14, 19, 20, 15, 9, 7, 8, 5, 9, 7, 0, 2, 9,
-			8, 5, 8, 6, 5, 8, 6, 2, 7, 17, 18, 17, 15, 11, 13, 12, 10, 9, 11, 20, 26, 23, 17, 12, 13, 17, 14, 8, 9, 13,
-			17, 15, 13, 8, 12, 17, 15, 13, 9, 5, 7, 12, 12, 13, 14, 13, 7, 2, 7, 13, 17, 17, 11, 9, 9, 11, 10, 8, 7, 4,
-			5, 7, 16, 18, 11, 9, 11, 17, 19, 12, 5, 7, 11, 16, 17, 12, 13, 18, 17, 13, 5, 5, 12, 16, 14, 10, 9, 11, 12, 8,
-			4, 4, 11, 13, 9, 3, 5, 8, 3, 1, 3, 5, 8, 9, 7, 6, 5, 6, 11, 11, 6, 7, 11, 13, 15, 13, 10, 10, 10, 10,
-			8, 10, 13, 17, 18, 17, 15, 13, 11, 12, 8, 4, 8, 11, 9, 8, 9, 12, 10, 4, 6, 6, 7, 10, 12, 12, 10, 11, 9, 12,
-			11, 11, 8, 7, 13, 16, 15, 9, 10, 16, 14, 10, 7, 5, 7, 13, 9, 6, 8, 7, 8, 12, 12, 10, 3, 4, 4, 4, 5, 0,
-			58, 6, 27, 0, 8, 9, 9, 8, 10, 8, 9, 8, 10, 8, 8, 4, 5, 1, 250, 159, 133, 206, 248, 27, 55, 18, 7, 42, 51, 45,
-			26, 231, 224, 252, 15, 41, 48, 32, 37, 54, 57, 46, 31, 251, 246, 2, 9, 22, 19, 12, 24, 40, 44, 43, 28, 0, 251, 251, 253, 253,
-			246, 246, 3, 15, 28, 25, 13, 255, 246, 247, 250, 247, 242, 247, 255, 15, 25, 28, 22, 15, 3, 5, 0, 0, 255, 2, 4, 11, 23, 25,
-			25, 21, 18, 13, 7, 5, 1, 0, 2, 11, 14, 22, 23, 19, 17, 17, 13, 7, 3, 0, 255, 1, 3, 7, 12, 15, 15, 18, 11, 7,
-			6, 2, 4, 4, 1, 4, 6, 9, 15, 18, 10, 10, 8, 4, 11, 12, 9, 5, 9, 11, 22, 25, 19, 15, 10, 13, 15, 13, 5, 3,
-			6, 9, 14, 13, 14, 11, 9, 12, 19, 14, 6, 5, 7, 8, 15, 19, 12, 12, 14, 13, 15, 20, 253, 212, 0, 29, 31, 49, 43, 5,
-			5, 21, 15, 11, 1, 241, 251, 0, 24, 45, 39, 15, 16, 12, 17, 24, 21, 254, 0, 14, 31, 32, 27, 12, 12, 16, 21, 16, 16, 3,
-			27, 17, 29, 40, 22, 7, 14, 6, 253, 9, 254, 243, 244, 255, 4, 9, 12, 254, 247, 3, 2, 1, 1, 255, 246, 254, 254, 18, 17, 23,
-			15, 14, 8, 9, 1, 248, 248, 246, 240, 236, 191, 157, 211, 17, 55, 60, 62, 13, 37, 48, 58, 36, 24, 17, 13, 228, 21, 21, 236, 248,
-			18, 243, 14, 25, 7, 10, 250, 190, 211, 9, 37, 43, 43, 246, 192, 213, 229, 243, 231, 210, 185, 225, 0, 16, 26, 12, 2, 14, 37, 15,
-			7, 244, 242, 21, 35, 39, 38, 44, 48, 70, 72, 46, 23, 19, 19, 31, 39, 29, 13, 30, 46, 49, 54, 35, 13, 13, 10, 14, 4, 253,
-			241, 4, 22, 28, 23, 13, 3, 255, 13, 7, 243, 240, 238, 253, 7, 14, 1, 21, 12, 30, 34, 33, 20, 22, 22, 12, 29, 17, 12, 25,
-			29, 32, 34, 9, 20, 51, 46, 38, 44, 18, 3, 30, 32, 14, 12, 5, 254, 19, 21, 13, 8, 252, 236, 252, 2, 255, 3, 251, 252, 8,
-			5, 249, 243, 243, 253, 19, 6, 249, 252, 250, 251, 6, 4, 246, 249, 0, 10, 26, 21, 5, 5, 14, 10, 6, 21, 3, 4, 41, 35, 23,
-			32, 15, 5, 20, 32, 4, 2, 252, 236, 254, 8, 11, 241, 248, 247, 252, 10, 255, 240, 240, 2, 3, 2, 0, 241, 245, 5, 10, 14, 10,
-			252, 2, 6, 5, 8, 1, 237, 250, 10, 10, 13, 19, 13, 24, 36, 19, 3, 255, 0, 23, 38, 33, 11, 8, 16, 25, 24, 5, 239, 245,
-			247, 3, 10, 8, 8, 21, 36, 28, 12, 249, 242, 0, 21, 14, 252, 254, 247, 10, 37, 30, 2, 2, 27, 19, 12, 254, 233, 228, 244, 3,
-			8, 17, 11, 16, 35, 43, 44, 31, 17, 252, 243, 240, 246, 241, 1, 36, 38, 29, 29, 17, 5, 9, 9, 250, 239, 0, 13, 31, 33, 6,
-			251, 7, 18, 12, 23, 0, 244, 10, 5, 249, 246, 235, 233, 252, 9, 8, 0, 252, 3, 255, 248, 2, 8, 6, 8, 19, 26, 28, 28, 34,
-			26, 16, 12, 253, 253, 255, 242, 11, 42, 29, 28, 52, 22, 22, 52, 26, 245, 254, 233, 209, 248, 0, 234, 255, 8, 250, 19, 23, 253, 251,
-			1, 252, 5, 8, 237, 239, 249, 236, 244, 24, 247, 222, 255, 32, 48, 43, 40, 5, 253, 25, 14, 244, 237, 1, 30, 26, 28, 20, 254, 9,
-			15, 15, 12, 0, 5, 24, 12, 5, 4, 10, 4, 18, 25, 12, 25, 37, 15, 4, 10, 255, 236, 244, 253, 11, 20, 22, 18, 5, 10, 22,
-			16, 0, 229, 244, 12, 7, 4, 9, 249, 2, 26, 25, 11, 254, 254, 3, 5, 255, 241, 254, 2, 2, 29, 34, 24, 61, 55, 19, 10, 30,
-			33, 33, 37, 14, 4, 253, 6, 11, 2, 7, 250, 7, 3, 1, 20, 18, 15, 3, 7, 6, 9, 1, 250, 8, 245, 239, 202, 204, 235, 0,
-			8, 21, 254, 231, 7, 5, 252, 247, 244, 245, 5, 32, 36, 18, 4, 244, 18, 36, 26, 31, 53, 33, 37, 55, 24, 247, 5, 0, 247, 13,
-			0, 244, 9, 18, 22, 12, 252, 2, 11, 8, 244, 246, 240, 224, 242, 243, 234, 240, 253, 0, 248, 237, 248, 4, 11, 25, 35, 34, 24, 7,
-			12, 25, 5, 11, 11, 12, 48, 42, 41, 48, 45, 25, 24, 28, 12, 11, 22, 33, 11, 255, 242, 245, 2, 9, 16, 23, 24, 16, 8, 1,
-			244, 226, 211, 220, 229, 233, 235, 241, 0, 11, 34, 34, 27, 19, 25, 25, 10, 3, 248, 0, 12, 12, 8, 30, 41, 54, 53, 47, 47, 38,
-			27, 16, 5, 0, 0, 252, 9, 17, 10, 24, 35, 31, 47, 21, 245, 239, 241, 225, 213, 220, 223, 231, 253, 10, 10, 21, 4, 245, 5, 13,
-			246, 239, 233, 241, 15, 27, 28, 18, 22, 43, 36, 23, 16, 11, 5, 17, 34, 23, 13, 31, 24, 12, 15, 9, 26, 30, 19, 14, 2, 248,
-			246, 241, 234, 235, 232, 233, 226, 235, 13, 14, 3, 246, 250, 249, 241, 237, 234, 241, 0, 242, 253, 22, 24, 33, 44, 47, 37, 12, 4, 7,
-			7, 255, 5, 5, 241, 2, 26, 38, 26, 37, 56, 51, 31, 1, 230, 215, 220, 235, 241, 252, 10, 26, 29, 23, 22, 11, 5, 0, 250, 237,
-			228, 220, 236, 254, 6, 20, 21, 35, 35, 46, 34, 17, 20, 4, 255, 19, 10, 0, 10, 34, 45, 26, 33, 31, 26, 35, 27, 5, 0, 14,
-			15, 17, 20, 25, 22, 15, 18, 3, 250, 6, 19, 4, 247, 242, 0, 16, 12, 12, 11, 5, 6, 7, 244, 234, 253, 248, 2, 19, 15, 10,
-			19, 31, 17, 9, 23, 31, 21, 15, 2, 6, 255, 0, 17, 16, 15, 10, 17, 22, 31, 30, 17, 0, 241, 254, 5, 226, 220, 252, 20, 14,
-			25, 34, 37, 42, 28, 4, 255, 238, 231, 232, 226, 242, 5, 20, 38, 46, 33, 19, 20, 16, 253, 2, 19, 9, 1, 0, 4, 6, 11, 20,
-			23, 12, 0, 3, 1, 244, 235, 1, 6, 4, 1, 1, 10, 10, 2, 7, 11, 250, 0, 6, 255, 9, 9, 22, 22, 7, 13, 9, 5, 8,
-			16, 13, 0, 255, 9, 16, 8, 7, 30, 33, 12, 11, 17, 17, 27, 19, 4, 2, 0, 248, 0, 23, 18, 11, 12, 7, 10, 17, 24, 21,
-			0, 254, 8, 4, 254, 2, 1, 3, 21, 29, 26, 9, 14, 27, 20, 11, 4, 252, 244, 246, 250, 249, 245, 11, 34, 38, 32, 29, 38, 33,
-			13, 254, 254, 241, 246, 4, 7, 5, 20, 20, 21, 41, 41, 20, 27, 25, 250, 4, 5, 247, 249, 255, 253, 11, 22, 30, 37, 24, 6, 14,
-			10, 6, 4, 252, 253, 3, 247, 241, 251, 243, 235, 245, 250, 8, 23, 34, 44, 41, 37, 34, 11, 4, 13, 3, 9, 21, 21, 33, 38, 43,
-			46, 40, 45, 43, 30, 21, 25, 27, 30, 25, 13, 15, 0, 232, 240, 249, 241, 250, 10, 9, 252, 2, 0, 0, 2, 6, 247, 235, 234, 221,
-			223, 226, 239, 249, 243, 248, 5, 21, 30, 30, 34, 27, 5, 0, 4, 4, 3, 13, 25, 41, 48, 45, 53, 52, 49, 45, 37, 30, 24, 17,
-			11, 11, 8, 254, 247, 253, 3, 10, 255, 6, 21, 16, 8, 11, 3, 243, 246, 246, 235, 232, 241, 245, 8, 23, 24, 19, 15, 17, 18, 14,
-			13, 10, 5, 5, 3, 6, 15, 14, 20, 33, 37, 47, 50, 39, 27, 26, 22, 16, 6, 10, 9, 0, 9, 14, 4, 1, 2, 246, 249, 241,
-			229, 243, 3, 253, 252, 250, 239, 247, 255, 251, 248, 252, 1, 1, 8, 12, 8, 7, 18, 19, 15, 22, 22, 26, 31, 32, 32, 22, 14, 6,
-			3, 6, 3, 8, 15, 22, 30, 26, 19, 10, 6, 5, 253, 0, 0, 253, 253, 255, 254, 253, 2, 255, 0, 1, 2, 0, 254, 255, 251, 245,
-			243, 253, 4, 4, 9, 18, 19, 23, 24, 17, 4, 246, 250, 0, 1, 255, 3, 12, 12, 20, 26, 15, 11, 18, 18, 7, 253, 255, 2, 3,
-			7, 9, 2, 4, 10, 12, 14, 14, 12, 15, 16, 15, 18, 21, 20, 22, 23, 18, 17, 18, 21, 28, 34, 33, 35, 39, 35, 24, 25, 24,
-			6, 5, 255, 243, 237, 244, 249, 252, 255, 1, 9, 9, 8, 9, 2, 0, 249, 246, 252, 1, 4, 0, 255, 248, 250, 6, 5, 6, 7, 4,
-			6, 7, 2, 255, 251, 244, 249, 254, 255, 0, 4, 9, 9, 11, 9, 6, 7, 8, 5, 2, 0, 247, 234, 233, 226, 222, 226, 235, 241, 252,
-			2, 9, 14, 12, 11, 7, 10, 8, 7, 11, 14, 22, 25, 29, 26, 33, 44, 43, 48, 47, 48, 43, 37, 32, 24, 22, 23, 27, 23, 21,
-			24, 29, 38, 44, 47, 43, 39, 36, 31, 28, 24, 16, 12, 9, 9, 7, 10, 13, 20, 20, 12, 7, 8, 11, 15, 19, 16, 15, 13, 16,
-			17, 10, 9, 8, 12, 8, 11, 8, 0, 0, 195, 5, 51, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 0, 255, 0, 4, 5,
-			4, 2, 0, 0, 1, 2, 2, 3, 2, 3, 1, 248, 197, 214, 0, 44, 49, 16, 239, 219, 243, 0, 17, 24, 22, 18, 0, 247, 239, 0,
-			13, 24, 19, 12, 2, 0, 254, 2, 12, 13, 18, 11, 1, 1, 2, 8, 9, 8, 6, 5, 1, 2, 0, 0, 3, 6, 5, 3, 0, 0,
-			2, 1, 6, 2, 3, 0, 1, 3, 2, 3, 3, 3, 3, 3, 1, 5, 6, 3, 6, 4, 5, 2, 4, 3, 6, 4, 6, 4, 3, 2,
-			5, 6, 6, 4, 1, 3, 5, 6, 7, 4, 2, 3, 3, 4, 2, 2, 4, 5, 4, 3, 3, 1, 1, 2, 3, 5, 3, 1, 2, 2,
-			4, 6, 1, 254, 3, 0, 4, 5, 1, 1, 1, 255, 1, 2, 0, 0, 0, 5, 3, 3, 255, 253, 255, 4, 4, 1, 5, 0, 2, 2,
-			1, 0, 1, 2, 1, 7, 0, 0, 253, 253, 3, 9, 1, 255, 252, 251, 3, 6, 4, 2, 0, 251, 255, 4, 5, 5, 4, 1, 252, 254,
-			3, 4, 5, 3, 254, 0, 4, 254, 3, 3, 2, 4, 3, 0, 255, 2, 232, 237, 10, 18, 24, 11, 247, 239, 243, 254, 9, 17, 17, 5,
-			247, 247, 248, 255, 5, 6, 8, 4, 0, 251, 247, 1, 2, 6, 7, 1, 252, 1, 0, 0, 3, 4, 5, 4, 0, 251, 254, 7, 4, 13,
-			6, 254, 251, 1, 236, 255, 22, 18, 13, 1, 246, 249, 0, 2, 10, 9, 3, 1, 249, 255, 5, 11, 2, 0, 0, 255, 7, 254, 3, 0,
-			3, 5, 2, 9, 7, 9, 7, 6, 2, 3, 6, 3, 6, 0, 255, 1, 9, 3, 4, 4, 0, 5, 7, 2, 6, 3, 253, 3, 2, 9,
-			13, 4, 3, 2, 239, 195, 232, 27, 54, 38, 252, 217, 222, 251, 1, 9, 10, 14, 5, 243, 237, 242, 8, 27, 25, 12, 0, 250, 3, 6,
-			7, 15, 13, 12, 3, 0, 8, 17, 26, 26, 21, 20, 20, 17, 15, 14, 11, 43, 51, 24, 3, 219, 217, 237, 247, 255, 233, 182, 196, 224,
-			251, 26, 250, 222, 223, 221, 238, 255, 250, 254, 2, 245, 248, 244, 254, 18, 25, 24, 29, 24, 24, 35, 57, 62, 90, 38, 159, 185, 224, 57,
-			126, 67, 0, 201, 181, 221, 252, 13, 52, 50, 12, 220, 194, 209, 237, 19, 37, 31, 250, 220, 211, 222, 1, 20, 27, 11, 238, 226, 247, 12,
-			17, 18, 9, 16, 7, 252, 4, 9, 7, 24, 28, 18, 7, 244, 5, 17, 14, 22, 22, 10, 255, 3, 11, 22, 11, 6, 4, 3, 6, 15,
-			12, 0, 248, 250, 14, 6, 0, 255, 252, 7, 4, 1, 252, 246, 254, 4, 4, 1, 254, 1, 0, 4, 11, 10, 255, 255, 1, 5, 0, 254,
-			255, 4, 8, 9, 2, 1, 248, 247, 12, 12, 7, 254, 251, 6, 1, 254, 3, 0, 3, 6, 254, 250, 6, 255, 251, 249, 247, 255, 12, 10,
-			247, 243, 248, 0, 255, 254, 1, 247, 249, 253, 0, 8, 9, 252, 247, 5, 2, 252, 255, 1, 6, 0, 253, 252, 1, 14, 5, 248, 248, 0,
-			11, 10, 1, 5, 9, 253, 242, 248, 2, 16, 20, 5, 246, 243, 252, 0, 14, 11, 13, 17, 2, 240, 241, 5, 21, 27, 8, 248, 243, 251,
-			12, 5, 1, 2, 13, 3, 239, 243, 0, 9, 12, 15, 12, 250, 247, 4, 16, 15, 10, 2, 10, 17, 2, 252, 247, 12, 30, 18, 254, 249,
-			0, 5, 17, 16, 4, 0, 7, 7, 4, 3, 1, 253, 254, 7, 7, 250, 255, 248, 247, 12, 11, 3, 253, 242, 1, 12, 16, 9, 2, 246,
-			245, 0, 0, 5, 13, 2, 0, 254, 251, 3, 16, 2, 253, 13, 6, 0, 0, 255, 13, 11, 242, 244, 2, 19, 20, 7, 248, 248, 0, 9,
-			9, 4, 252, 250, 255, 1, 4, 0, 255, 4, 253, 252, 0, 253, 4, 13, 4, 2, 250, 249, 4, 0, 1, 12, 6, 3, 250, 249, 252, 11,
-			14, 2, 2, 2, 0, 253, 255, 255, 19, 22, 249, 243, 0, 0, 17, 20, 255, 241, 246, 8, 13, 250, 0, 7, 0, 251, 250, 254, 4, 6,
-			9, 0, 249, 238, 251, 14, 20, 11, 0, 245, 245, 1, 16, 8, 9, 9, 255, 247, 4, 10, 10, 20, 6, 250, 3, 4, 13, 18, 7, 252,
-			248, 13, 22, 12, 254, 250, 250, 0, 12, 15, 11, 2, 254, 0, 5, 9, 6, 1, 4, 254, 255, 251, 247, 5, 15, 11, 10, 1, 245, 255,
-			14, 14, 4, 12, 18, 254, 254, 7, 9, 17, 10, 252, 240, 0, 17, 13, 2, 243, 246, 21, 21, 1, 0, 250, 255, 7, 9, 4, 6, 7,
-			255, 254, 253, 9, 8, 252, 255, 4, 14, 11, 252, 244, 0, 15, 13, 5, 3, 247, 245, 255, 21, 13, 254, 251, 245, 255, 0, 249, 254, 12,
-			7, 248, 255, 251, 0, 15, 22, 5, 235, 247, 6, 14, 22, 7, 0, 251, 249, 5, 8, 2, 4, 4, 8, 4, 247, 255, 5, 4, 7, 8,
-			3, 0, 247, 238, 1, 19, 14, 3, 251, 253, 251, 249, 2, 16, 26, 10, 251, 242, 247, 15, 20, 11, 0, 2, 1, 245, 0, 6, 20, 14,
-			249, 236, 243, 5, 24, 25, 4, 249, 244, 254, 0, 0, 10, 16, 5, 2, 0, 254, 4, 13, 253, 3, 10, 5, 5, 12, 7, 3, 3, 0,
-			2, 252, 2, 15, 8, 253, 5, 0, 0, 3, 255, 9, 11, 252, 0, 4, 8, 6, 253, 248, 246, 2, 11, 6, 253, 241, 228, 226, 2, 22,
-			34, 25, 239, 204, 220, 7, 15, 251, 232, 239, 248, 4, 249, 232, 238, 15, 24, 9, 10, 249, 242, 4, 7, 16, 18, 18, 255, 237, 4, 25,
-			13, 11, 5, 251, 5, 2, 1, 11, 11, 8, 9, 4, 0, 247, 249, 9, 12, 5, 0, 1, 0, 245, 252, 14, 12, 253, 252, 248, 253, 6,
-			0, 249, 250, 255, 6, 13, 0, 255, 1, 255, 3, 6, 11, 8, 2, 8, 3, 8, 7, 252, 255, 5, 12, 16, 14, 2, 255, 253, 4, 0,
-			1, 8, 3, 10, 10, 2, 250, 246, 0, 9, 12, 10, 1, 253, 16, 7, 245, 251, 7, 19, 15, 2, 254, 2, 5, 8, 0, 0, 10, 12,
-			254, 249, 6, 18, 15, 7, 252, 246, 1, 9, 6, 12, 5, 249, 1, 6, 253, 5, 14, 7, 248, 242, 0, 15, 17, 6, 245, 246, 0, 2,
-			6, 4, 254, 253, 1, 5, 252, 241, 251, 12, 7, 3, 0, 242, 0, 0, 246, 255, 8, 9, 0, 244, 244, 2, 6, 14, 9, 252, 249, 4,
-			7, 5, 0, 255, 4, 6, 10, 4, 254, 0, 0, 5, 3, 0, 254, 253, 8, 13, 8, 253, 243, 246, 6, 8, 255, 0, 4, 3, 250, 246,
-			251, 6, 14, 1, 250, 252, 251, 0, 0, 251, 255, 9, 7, 2, 245, 241, 0, 11, 13, 10, 0, 251, 249, 247, 11, 20, 7, 252, 2, 9,
-			1, 5, 255, 1, 19, 13, 255, 255, 253, 3, 18, 4, 252, 4, 7, 12, 6, 5, 7, 9, 12, 3, 253, 0, 3, 4, 15, 15, 7, 248,
-			244, 0, 15, 20, 14, 4, 1, 0, 5, 3, 3, 17, 18, 6, 0, 2, 6, 16, 8, 1, 1, 4, 7, 3, 1, 7, 14, 8, 251, 244,
-			249, 4, 13, 6, 1, 2, 253, 248, 2, 12, 8, 2, 252, 0, 252, 252, 5, 10, 2, 0, 254, 253, 253, 3, 13, 9, 4, 254, 2, 7,
-			3, 255, 252, 1, 15, 17, 6, 252, 243, 253, 9, 9, 8, 1, 253, 252, 3, 3, 255, 254, 249, 254, 254, 252, 254, 0, 247, 252, 0, 253,
-			253, 250, 246, 248, 1, 6, 6, 253, 242, 240, 252, 6, 4, 1, 252, 252, 254, 250, 250, 0, 1, 255, 0, 2, 0, 247, 251, 5, 1, 255,
-			2, 4, 0, 252, 255, 4, 7, 14, 7, 254, 2, 9, 10, 9, 3, 3, 13, 16, 10, 5, 5, 7, 11, 14, 11, 10, 14, 13, 8, 3,
-			7, 17, 26, 20, 12, 10, 13, 14, 16, 18, 22, 28, 27, 19, 16, 8, 7, 20, 32, 33, 29, 26, 12, 2, 8, 21, 29, 32, 26, 20,
-			13, 9, 13, 13, 20, 31, 24, 15, 11, 10, 21, 19, 14, 12, 14, 16, 12, 3, 8, 16, 17, 15, 14, 2, 7, 8, 0, 10, 14, 20,
-			16, 6, 3, 5, 7, 10, 14, 14, 11, 13, 5, 0, 252, 253, 7, 7, 249, 230, 237, 0, 43, 6, 37, 0, 6, 8, 5, 6, 3, 1,
-			5, 8, 10, 13, 15, 19, 11, 6, 4, 1, 0, 5, 2, 6, 11, 13, 9, 8, 9, 9, 8, 7, 8, 12, 6, 4, 5, 3, 6, 12,
-			11, 11, 7, 0, 255, 2, 5, 5, 4, 11, 10, 11, 10, 5, 6, 0, 253, 254, 0, 251, 240, 0, 8, 15, 19, 24, 34, 54, 47, 60,
-			40, 205, 217, 208, 178, 228, 243, 228, 1, 11, 17, 23, 23, 15, 22, 10, 254, 235, 229, 232, 245, 255, 9, 16, 32, 37, 34, 24, 14, 254,
-			244, 241, 249, 248, 1, 10, 19, 29, 35, 28, 27, 17, 9, 2, 254, 247, 248, 252, 247, 255, 13, 16, 23, 20, 11, 1, 243, 239, 236, 238,
-			249, 244, 254, 250, 251, 0, 5, 9, 15, 15, 9, 254, 248, 248, 243, 2, 21, 13, 22, 33, 21, 23, 26, 1, 11, 25, 29, 37, 15, 12,
-			11, 24, 19, 19, 12, 3, 13, 19, 19, 12, 8, 241, 224, 12, 33, 1, 5, 244, 245, 32, 12, 253, 253, 250, 0, 17, 16, 252, 255, 4,
-			20, 22, 18, 22, 27, 28, 24, 16, 0, 4, 21, 17, 10, 8, 9, 252, 1, 16, 10, 9, 6, 12, 6, 254, 1, 22, 9, 6, 0, 250,
-			4, 3, 240, 233, 238, 252, 17, 250, 253, 16, 38, 23, 18, 7, 6, 248, 234, 224, 214, 231, 222, 241, 240, 219, 239, 243, 15, 28, 6, 3,
-			0, 5, 12, 7, 10, 23, 25, 32, 28, 25, 21, 30, 23, 21, 23, 8, 12, 23, 24, 23, 22, 22, 16, 16, 16, 7, 4, 4, 253, 255,
-			0, 254, 249, 251, 248, 0, 1, 3, 245, 244, 247, 0, 5, 8, 9, 8, 12, 7, 2, 10, 17, 16, 12, 12, 17, 22, 24, 19, 22, 26,
-			14, 12, 13, 12, 7, 6, 8, 11, 11, 16, 15, 20, 24, 5, 5, 0, 4, 7, 5, 9, 7, 6, 8, 9, 253, 255, 0, 0, 246, 251,
-			249, 3, 11, 18, 13, 11, 10, 0, 252, 5, 252, 244, 247, 0, 11, 14, 17, 27, 29, 29, 22, 9, 8, 6, 11, 254, 3, 252, 4, 23,
-			14, 8, 9, 5, 0, 253, 249, 241, 248, 5, 4, 9, 9, 15, 19, 20, 12, 3, 251, 250, 250, 253, 246, 247, 0, 6, 7, 14, 19, 15,
-			14, 9, 0, 7, 19, 4, 251, 2, 8, 10, 8, 13, 11, 4, 18, 19, 9, 12, 14, 4, 8, 14, 5, 2, 12, 14, 9, 12, 4, 4,
-			0, 4, 0, 251, 5, 254, 251, 1, 2, 5, 3, 4, 18, 19, 9, 6, 9, 0, 0, 0, 252, 246, 4, 11, 1, 6, 22, 16, 17, 10,
-			254, 1, 8, 7, 254, 1, 29, 19, 10, 11, 18, 11, 2, 250, 232, 245, 11, 0, 241, 247, 15, 18, 18, 22, 12, 16, 25, 16, 247, 4,
-			9, 248, 245, 254, 12, 18, 13, 255, 4, 13, 28, 8, 251, 0, 6, 2, 0, 5, 14, 18, 13, 251, 255, 4, 251, 244, 234, 245, 10, 7,
-			6, 7, 10, 28, 26, 9, 253, 0, 11, 12, 254, 240, 3, 15, 14, 26, 18, 13, 20, 13, 255, 6, 17, 1, 242, 247, 0, 13, 14, 15,
-			3, 8, 25, 7, 4, 6, 0, 255, 1, 8, 10, 14, 9, 9, 15, 8, 8, 0, 250, 0, 3, 250, 5, 17, 19, 19, 16, 17, 15, 21,
-			15, 7, 7, 9, 12, 0, 254, 0, 4, 11, 7, 0, 253, 0, 7, 6, 11, 10, 16, 13, 7, 11, 6, 6, 3, 1, 3, 9, 5, 2,
-			14, 15, 0, 1, 17, 28, 25, 11, 253, 3, 11, 7, 254, 251, 247, 8, 15, 6, 10, 28, 29, 25, 21, 10, 254, 0, 1, 246, 238, 255,
-			13, 15, 22, 27, 27, 28, 24, 10, 7, 6, 253, 251, 251, 244, 250, 6, 15, 13, 18, 23, 18, 11, 253, 252, 254, 251, 4, 18, 13, 14,
-			26, 24, 22, 19, 10, 7, 2, 6, 4, 238, 241, 12, 21, 7, 9, 17, 25, 25, 25, 14, 255, 17, 18, 6, 9, 1, 248, 252, 11, 2,
-			12, 11, 249, 11, 37, 30, 14, 5, 7, 3, 253, 22, 11, 9, 21, 2, 3, 25, 27, 7, 2, 11, 13, 18, 252, 0, 3, 5, 14, 235,
-			225, 242, 248, 255, 237, 236, 16, 31, 29, 7, 13, 10, 245, 234, 252, 245, 234, 228, 231, 249, 11, 4, 250, 1, 8, 253, 232, 240, 248, 235,
-			232, 249, 254, 245, 238, 235, 246, 249, 250, 252, 250, 255, 6, 252, 245, 244, 235, 235, 232, 238, 245, 235, 241, 0, 2, 253, 249, 0, 6, 252,
-			254, 0, 0, 253, 7, 14, 18, 24, 28, 25, 20, 11, 20, 33, 36, 44, 44, 49, 54, 38, 39, 38, 15, 9, 253, 228, 228, 198, 147, 154,
-			225, 50, 68, 40, 8, 10, 1, 220, 187, 212, 9, 38, 42, 10, 245, 8, 0, 189, 159, 210, 14, 49, 54, 55, 66, 49, 7, 243, 249, 25,
-			53, 66, 54, 40, 43, 30, 8, 255, 11, 31, 35, 44, 40, 24, 23, 16, 255, 255, 2, 255, 2, 15, 21, 30, 39, 19, 249, 244, 253, 21,
-			37, 42, 42, 20, 13, 14, 19, 30, 29, 21, 253, 192, 133, 158, 218, 19, 51, 72, 59, 20, 254, 227, 218, 236, 252, 19, 29, 15, 249, 233,
-			235, 249, 254, 15, 33, 27, 13, 243, 251, 4, 255, 250, 247, 255, 11, 2, 251, 3, 15, 22, 15, 11, 13, 12, 11, 14, 12, 8, 250, 1,
-			14, 9, 251, 242, 242, 246, 2, 255, 1, 10, 10, 4, 248, 251, 3, 255, 242, 246, 252, 243, 239, 243, 9, 6, 243, 224, 222, 0, 27, 37,
-			48, 58, 49, 32, 16, 16, 36, 59, 88, 92, 255, 196, 227, 248, 247, 5, 45, 64, 43, 255, 226, 226, 243, 230, 238, 6, 33, 32, 12, 0,
-			231, 237, 253, 1, 19, 31, 30, 25, 12, 6, 8, 245, 240, 25, 54, 55, 36, 32, 32, 21, 13, 28, 47, 34, 19, 29, 31, 23, 25, 23,
-			251, 236, 9, 43, 12, 233, 254, 25, 9, 237, 236, 0, 14, 0, 251, 255, 246, 243, 0, 242, 250, 13, 17, 6, 233, 241, 28, 15, 240, 242,
-			9, 30, 18, 255, 12, 33, 16, 243, 242, 7, 40, 40, 253, 240, 19, 27, 237, 227, 23, 48, 25, 251, 246, 0, 0, 0, 12, 12, 6, 248,
-			245, 243, 237, 8, 31, 15, 244, 246, 12, 12, 242, 0, 31, 2, 0, 4, 245, 254, 5, 13, 9, 4, 7, 13, 2, 251, 3, 20, 21, 5,
-			245, 0, 17, 15, 10, 0, 253, 254, 6, 10, 246, 245, 23, 21, 253, 247, 18, 23, 250, 249, 7, 6, 11, 12, 5, 4, 14, 21, 9, 246,
-			0, 31, 20, 255, 0, 13, 13, 7, 9, 13, 17, 22, 4, 244, 2, 14, 18, 6, 252, 21, 24, 0, 248, 247, 17, 33, 14, 4, 12, 3,
-			253, 252, 14, 30, 13, 252, 11, 15, 247, 5, 23, 17, 9, 4, 245, 239, 246, 10, 19, 0, 251, 15, 4, 237, 2, 22, 236, 217, 253, 12,
-			5, 5, 22, 23, 253, 239, 247, 250, 253, 11, 34, 32, 0, 250, 7, 7, 7, 11, 28, 30, 3, 243, 249, 16, 19, 16, 11, 6, 4, 2,
-			251, 255, 16, 10, 250, 252, 7, 6, 255, 2, 9, 2, 245, 243, 11, 16, 255, 250, 17, 13, 254, 1, 1, 255, 10, 12, 7, 6, 15, 11,
-			252, 249, 14, 19, 10, 9, 7, 7, 8, 0, 5, 16, 15, 4, 3, 13, 13, 254, 250, 14, 13, 11, 24, 8, 0, 12, 16, 15, 6, 0,
-			11, 20, 9, 13, 13, 3, 12, 17, 7, 14, 26, 13, 248, 248, 12, 21, 11, 0, 2, 18, 21, 16, 17, 16, 11, 7, 17, 27, 11, 0,
-			6, 12, 21, 24, 14, 11, 12, 10, 13, 17, 13, 14, 0, 246, 5, 15, 16, 2, 249, 13, 23, 9, 255, 10, 16, 8, 4, 7, 5, 251,
-			0, 11, 8, 1, 2, 255, 0, 9, 9, 1, 254, 5, 11, 8, 4, 8, 16, 15, 17, 9, 2, 9, 15, 12, 8, 12, 12, 3, 0, 12,
-			18, 10, 1, 10, 9, 0, 250, 251, 9, 20, 7, 0, 251, 255, 8, 13, 12, 254, 245, 251, 4, 4, 3, 5, 1, 251, 252, 0, 255, 4,
-			12, 13, 12, 2, 254, 11, 17, 9, 13, 10, 0, 1, 0, 7, 12, 6, 11, 24, 11, 255, 0, 12, 7, 253, 252, 7, 14, 7, 254, 254,
-			4, 13, 10, 7, 17, 17, 8, 8, 10, 16, 17, 8, 11, 11, 6, 13, 8, 9, 22, 24, 15, 6, 1, 8, 9, 4, 12, 14, 9, 6,
-			4, 8, 12, 14, 9, 1, 1, 9, 10, 3, 0, 10, 13, 10, 3, 251, 247, 3, 14, 10, 251, 246, 1, 12, 8, 2, 254, 244, 244, 3,
-			12, 7, 253, 248, 255, 6, 6, 7, 8, 4, 4, 15, 13, 2, 246, 251, 15, 24, 7, 243, 246, 2, 11, 7, 0, 2, 0, 251, 244, 247,
-			255, 5, 255, 246, 246, 255, 253, 245, 251, 0, 252, 240, 238, 252, 7, 0, 242, 240, 245, 249, 251, 247, 251, 255, 248, 250, 5, 1, 248, 249,
-			255, 2, 253, 241, 239, 254, 13, 8, 249, 244, 251, 6, 6, 0, 208, 4, 44, 0, 3, 1, 2, 1, 2, 1, 3, 2, 4, 236, 191, 217,
-			11, 26, 24, 27, 26, 24, 11, 246, 236, 247, 6, 12, 15, 16, 19, 15, 5, 252, 250, 252, 5, 17, 24, 23, 17, 16, 16, 1, 249, 251,
-			12, 14, 15, 0, 202, 203, 239, 22, 13, 13, 15, 21, 16, 248, 226, 229, 3, 15, 11, 9, 15, 11, 2, 254, 249, 249, 253, 15, 16, 26,
-			20, 15, 2, 254, 2, 4, 5, 10, 34, 36, 37, 14, 8, 211, 132, 222, 36, 36, 38, 37, 30, 19, 239, 208, 198, 241, 19, 26, 39, 40,
-			26, 254, 243, 230, 226, 242, 8, 39, 45, 33, 16, 6, 214, 182, 225, 0, 12, 27, 28, 33, 25, 1, 230, 220, 239, 3, 13, 25, 31, 29,
-			11, 254, 242, 234, 236, 248, 18, 33, 25, 21, 2, 247, 249, 242, 246, 6, 22, 32, 27, 10, 251, 241, 241, 244, 248, 17, 23, 24, 24, 9,
-			245, 241, 247, 244, 6, 12, 17, 24, 12, 6, 251, 242, 245, 248, 5, 16, 17, 16, 12, 2, 251, 252, 2, 1, 6, 2, 15, 19, 4, 252,
-			254, 245, 5, 15, 19, 15, 9, 8, 7, 254, 252, 9, 7, 16, 10, 6, 10, 15, 10, 0, 7, 217, 176, 205, 199, 227, 27, 48, 38, 36,
-			244, 223, 206, 214, 234, 9, 39, 54, 49, 12, 0, 244, 245, 0, 18, 31, 35, 56, 54, 29, 248, 2, 21, 248, 235, 11, 249, 217, 8, 32,
-			4, 232, 232, 242, 243, 10, 16, 16, 21, 46, 246, 180, 209, 244, 2, 11, 24, 5, 253, 232, 240, 251, 10, 33, 34, 28, 8, 247, 230, 231,
-			230, 233, 252, 7, 30, 18, 7, 241, 238, 250, 251, 254, 15, 32, 33, 17, 6, 7, 251, 0, 16, 12, 241, 242, 251, 10, 17, 20, 23, 13,
-			3, 12, 9, 243, 255, 19, 22, 18, 15, 255, 2, 10, 2, 16, 15, 15, 17, 19, 11, 11, 20, 15, 8, 17, 24, 12, 0, 4, 248, 254,
-			252, 251, 0, 0, 2, 1, 253, 4, 254, 245, 253, 14, 12, 6, 10, 6, 3, 0, 251, 253, 2, 21, 30, 9, 8, 0, 0, 2, 9, 4,
-			0, 8, 7, 19, 11, 8, 10, 10, 6, 251, 6, 20, 21, 18, 19, 3, 3, 255, 245, 248, 1, 7, 6, 0, 5, 12, 3, 8, 8, 246,
-			248, 14, 21, 16, 5, 4, 3, 0, 255, 1, 0, 12, 18, 8, 254, 250, 237, 245, 15, 13, 254, 246, 254, 15, 1, 230, 229, 246, 6, 0,
-			246, 250, 253, 238, 225, 234, 10, 11, 8, 15, 17, 12, 0, 231, 237, 10, 32, 45, 25, 242, 235, 11, 32, 28, 4, 7, 19, 29, 25, 255,
-			237, 9, 22, 6, 250, 6, 21, 3, 241, 245, 2, 252, 244, 247, 243, 0, 5, 1, 2, 254, 243, 248, 254, 254, 16, 11, 2, 8, 14, 10,
-			250, 229, 255, 20, 12, 7, 9, 21, 18, 249, 250, 10, 13, 14, 6, 255, 4, 15, 3, 243, 251, 4, 0, 252, 225, 226, 244, 4, 17, 11,
-			6, 9, 4, 243, 217, 229, 8, 28, 32, 26, 15, 1, 248, 239, 246, 255, 8, 19, 19, 14, 254, 250, 247, 253, 21, 38, 29, 254, 254, 249,
-			234, 236, 255, 12, 14, 6, 250, 246, 242, 236, 248, 14, 15, 2, 7, 249, 235, 243, 8, 5, 4, 2, 254, 7, 28, 14, 5, 26, 33, 18,
-			251, 246, 240, 249, 11, 24, 21, 14, 8, 249, 235, 242, 248, 1, 8, 4, 16, 17, 255, 239, 221, 240, 1, 1, 8, 24, 18, 255, 234, 228,
-			241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4280,8444 +4364,5479 @@ FilesInMemory create_espeakdata_phons () {
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 4, 44, 0, 3, 1, 2, 1,
+			2, 1, 3, 2, 4, 236, 191, 217, 11, 26, 24, 27, 26, 24, 11, 246, 236, 247, 6, 12, 15, 16, 19, 15, 5, 252, 250, 252, 5, 17,
+			24, 23, 17, 16, 16, 1, 249, 251, 12, 14, 15, 0, 202, 203, 239, 22, 13, 13, 15, 21, 16, 248, 226, 229, 3, 15, 11, 9, 15, 11,
+			2, 254, 249, 249, 253, 15, 16, 26, 20, 15, 2, 254, 2, 4, 5, 10, 34, 36, 37, 14, 8, 211, 132, 222, 36, 36, 38, 37, 30, 19,
+			239, 208, 198, 241, 19, 26, 39, 40, 26, 254, 243, 230, 226, 242, 8, 39, 45, 33, 16, 6, 214, 182, 225, 0, 12, 27, 28, 33, 25, 1,
+			230, 220, 239, 3, 13, 25, 31, 29, 11, 254, 242, 234, 236, 248, 18, 33, 25, 21, 2, 247, 249, 242, 246, 6, 22, 32, 27, 10, 251, 241,
+			241, 244, 248, 17, 23, 24, 24, 9, 245, 241, 247, 244, 6, 12, 17, 24, 12, 6, 251, 242, 245, 248, 5, 16, 17, 16, 12, 2, 251, 252,
+			2, 1, 6, 2, 15, 19, 4, 252, 254, 245, 5, 15, 19, 15, 9, 8, 7, 254, 252, 9, 7, 16, 10, 6, 10, 15, 10, 0, 7, 217,
+			176, 205, 199, 227, 27, 48, 38, 36, 244, 223, 206, 214, 234, 9, 39, 54, 49, 12, 0, 244, 245, 0, 18, 31, 35, 56, 54, 29, 248, 2,
+			21, 248, 235, 11, 249, 217, 8, 32, 4, 232, 232, 242, 243, 10, 16, 16, 21, 46, 246, 180, 209, 244, 2, 11, 24, 5, 253, 232, 240, 251,
+			10, 33, 34, 28, 8, 247, 230, 231, 230, 233, 252, 7, 30, 18, 7, 241, 238, 250, 251, 254, 15, 32, 33, 17, 6, 7, 251, 0, 16, 12,
+			241, 242, 251, 10, 17, 20, 23, 13, 3, 12, 9, 243, 255, 19, 22, 18, 15, 255, 2, 10, 2, 16, 15, 15, 17, 19, 11, 11, 20, 15,
+			8, 17, 24, 12, 0, 4, 248, 254, 252, 251, 0, 0, 2, 1, 253, 4, 254, 245, 253, 14, 12, 6, 10, 6, 3, 0, 251, 253, 2, 21,
+			30, 9, 8, 0, 0, 2, 9, 4, 0, 8, 7, 19, 11, 8, 10, 10, 6, 251, 6, 20, 21, 18, 19, 3, 3, 255, 245, 248, 1, 7,
+			6, 0, 5, 12, 3, 8, 8, 246, 248, 14, 21, 16, 5, 4, 3, 0, 255, 1, 0, 12, 18, 8, 254, 250, 237, 245, 15, 13, 254, 246,
+			254, 15, 1, 230, 229, 246, 6, 0, 246, 250, 253, 238, 225, 234, 10, 11, 8, 15, 17, 12, 0, 231, 237, 10, 32, 45, 25, 242, 235, 11,
+			32, 28, 4, 7, 19, 29, 25, 255, 237, 9, 22, 6, 250, 6, 21, 3, 241, 245, 2, 252, 244, 247, 243, 0, 5, 1, 2, 254, 243, 248,
+			254, 254, 16, 11, 2, 8, 14, 10, 250, 229, 255, 20, 12, 7, 9, 21, 18, 249, 250, 10, 13, 14, 6, 255, 4, 15, 3, 243, 251, 4,
+			0, 252, 225, 226, 244, 4, 17, 11, 6, 9, 4, 243, 217, 229, 8, 28, 32, 26, 15, 1, 248, 239, 246, 255, 8, 19, 19, 14, 254, 250,
+			247, 253, 21, 38, 29, 254, 254, 249, 234, 236, 255, 12, 14, 6, 250, 246, 242, 236, 248, 14, 15, 2, 7, 249, 235, 243, 8, 5, 4, 2,
+			254, 7, 28, 14, 5, 26, 33, 18, 251, 246, 240, 249, 11, 24, 21, 14, 8, 249, 235, 242, 248, 1, 8, 4, 16, 17, 255, 239, 221, 240,
+			1, 1, 8, 24, 18, 255, 234, 228, 241, 7, 30, 33, 18, 1, 239, 240, 4, 30, 18, 244, 245, 4, 4, 15, 11, 252, 15, 34, 20, 244,
+			253, 12, 27, 32, 27, 245, 246, 19, 20, 8, 247, 239, 238, 1, 20, 21, 10, 251, 251, 255, 3, 0, 249, 254, 254, 7, 9, 18, 4, 251,
+			247, 245, 4, 19, 5, 239, 2, 31, 39, 14, 240, 238, 254, 250, 0, 31, 34, 25, 7, 255, 254, 238, 237, 252, 31, 54, 42, 26, 247, 251,
+			246, 239, 245, 32, 60, 51, 12, 241, 232, 233, 239, 244, 23, 32, 19, 3, 246, 238, 229, 233, 245, 2, 16, 13, 245, 244, 7, 0, 239, 244,
+			254, 13, 13, 253, 0, 18, 13, 1, 249, 6, 28, 6, 0, 18, 31, 19, 7, 9, 7, 243, 244, 11, 32, 53, 24, 0, 3, 4, 244, 243,
+			9, 22, 2, 246, 10, 4, 243, 246, 245, 234, 238, 238, 255, 255, 2, 255, 9, 12, 6, 241, 235, 255, 27, 34, 21, 9, 23, 38, 13, 1,
+			6, 9, 14, 19, 22, 6, 255, 10, 7, 3, 3, 1, 2, 250, 1, 17, 9, 254, 248, 250, 251, 248, 252, 2, 1, 240, 244, 242, 255, 1,
+			6, 4, 254, 255, 244, 239, 239, 0, 26, 27, 252, 255, 23, 25, 8, 0, 1, 11, 27, 31, 21, 2, 7, 21, 1, 2, 6, 252, 7, 19,
+			7, 240, 243, 0, 250, 240, 243, 0, 1, 242, 234, 249, 5, 255, 247, 254, 254, 7, 15, 250, 221, 237, 13, 18, 1, 253, 4, 10, 15, 15,
+			17, 11, 9, 249, 1, 16, 34, 32, 26, 12, 250, 244, 1, 8, 17, 14, 0, 253, 2, 252, 246, 255, 1, 246, 241, 237, 232, 247, 7, 14,
+			4, 245, 241, 243, 243, 244, 251, 2, 10, 5, 251, 242, 252, 14, 7, 4, 0, 10, 25, 5, 251, 4, 12, 27, 24, 3, 255, 0, 248, 252,
+			7, 14, 253, 250, 255, 249, 251, 254, 249, 253, 255, 242, 250, 8, 16, 2, 238, 243, 0, 14, 19, 3, 251, 5, 15, 10, 253, 252, 6, 16,
+			27, 23, 3, 252, 15, 27, 6, 249, 5, 24, 24, 24, 19, 11, 7, 10, 10, 4, 4, 5, 4, 7, 12, 15, 13, 0, 0, 9, 12, 8,
+			4, 253, 250, 12, 11, 4, 2, 252, 4, 15, 16, 0, 245, 0, 5, 2, 255, 11, 10, 2, 13, 4, 244, 1, 17, 23, 15, 17, 12, 239,
+			240, 14, 25, 16, 15, 6, 245, 241, 4, 14, 254, 3, 26, 19, 2, 247, 247, 0, 247, 250, 6, 8, 249, 235, 253, 7, 1, 0, 248, 240,
+			248, 8, 14, 5, 3, 7, 2, 247, 249, 0, 10, 19, 19, 24, 18, 254, 245, 248, 255, 17, 30, 23, 10, 13, 7, 245, 254, 8, 3, 0,
+			14, 22, 15, 9, 255, 248, 255, 7, 0, 248, 253, 252, 7, 13, 254, 241, 245, 249, 248, 241, 12, 28, 15, 253, 0, 253, 238, 241, 1, 14,
+			6, 5, 14, 17, 10, 3, 0, 0, 246, 250, 250, 249, 10, 33, 38, 16, 246, 228, 228, 235, 255, 11, 26, 35, 252, 210, 233, 9, 5, 4,
+			6, 250, 232, 249, 11, 19, 20, 14, 249, 240, 237, 248, 254, 1, 13, 28, 50, 51, 18, 233, 229, 252, 11, 21, 36, 45, 33, 23, 30, 21,
+			3, 255, 8, 15, 38, 40, 22, 8, 10, 10, 2, 248, 0, 23, 50, 43, 6, 245, 0, 11, 6, 11, 36, 41, 21, 22, 9, 240, 0, 13,
+			17, 35, 44, 27, 245, 227, 248, 5, 19, 40, 32, 8, 252, 241, 229, 230, 249, 19, 23, 9, 251, 239, 240, 234, 234, 241, 232, 233, 102, 1,
+			41, 0, 0, 2, 5, 5, 3, 1, 6, 6, 3, 1, 6, 10, 4, 246, 229, 206, 184, 183, 209, 247, 22, 31, 26, 21, 37, 59, 61, 48,
+			21, 248, 216, 176, 160, 168, 181, 192, 222, 6, 44, 63, 76, 80, 81, 84, 79, 65, 40, 250, 140, 132, 192, 248, 218, 166, 183, 1, 35, 21,
+			53, 61, 25, 2, 11, 7, 210, 168, 169, 202, 210, 208, 208, 206, 244, 22, 54, 62, 50, 37, 38, 47, 33, 4, 241, 227, 226, 234, 233, 232,
+			229, 233, 253, 14, 25, 19, 19, 23, 13, 0, 3, 236, 237, 230, 239, 239, 238, 233, 242, 14, 16, 28, 24, 31, 34, 36, 27, 16, 2, 252,
+			247, 248, 254, 254, 1, 13, 23, 28, 30, 34, 27, 33, 35, 29, 9, 250, 249, 253, 248, 238, 235, 249, 8, 9, 21, 11, 255, 254, 8, 17,
+			8, 6, 5, 1, 249, 241, 236, 241, 248, 1, 5, 8, 253, 252, 0, 10, 12, 14, 8, 2, 0, 250, 0, 4, 251, 233, 244, 255, 9, 7,
+			255, 248, 247, 250, 255, 1, 251, 241, 246, 254, 1, 251, 243, 246, 254, 7, 13, 10, 0, 251, 251, 0, 255, 246, 234, 236, 243, 246, 248, 247,
+			1, 0, 8, 21, 24, 253, 250, 0, 10, 252, 245, 245, 244, 238, 237, 0, 253, 252, 244, 248, 245, 0, 4, 8, 251, 4, 12, 11, 7, 17,
+			31, 29, 23, 12, 17, 18, 15, 9, 10, 254, 1, 5, 12, 17, 27, 21, 17, 31, 48, 48, 33, 29, 27, 31, 20, 19, 17, 17, 11, 14,
+			17, 15, 14, 7, 255, 246, 250, 243, 240, 233, 232, 232, 231, 232, 229, 231, 233, 227, 233, 240, 249, 249, 248, 246, 251, 251, 251, 252, 1, 0,
+			253, 254, 254, 253, 251, 255, 250, 246, 243, 245, 248, 244, 235, 229, 224, 223, 221, 225, 227, 228, 235, 244, 251, 250, 248, 248, 251, 252, 255, 249,
+			245, 238, 236, 238, 230, 223, 222, 224, 233, 247, 244, 245, 251, 2, 1, 245, 246, 248, 252, 255, 13, 26, 19, 5, 243, 245, 2, 11, 11, 10,
+			0, 0, 27, 1, 19, 0, 4, 4, 5, 5, 6, 7, 8, 10, 13, 17, 23, 53, 94, 45, 40, 70, 104, 120, 65, 36, 65, 76, 65, 27,
+			255, 253, 7, 233, 207, 216, 190, 192, 190, 173, 190, 190, 185, 189, 197, 220, 240, 219, 219, 7, 13, 14, 7, 7, 36, 44, 15, 7, 35, 21,
+			13, 247, 0, 11, 242, 217, 236, 233, 219, 215, 212, 222, 229, 198, 216, 240, 228, 234, 233, 226, 0, 16, 248, 245, 0, 24, 24, 244, 9, 21,
+			0, 250, 10, 250, 251, 247, 227, 241, 238, 244, 225, 200, 249, 20, 226, 195, 246, 14, 253, 240, 246, 11, 33, 59, 23, 6, 48, 69, 60, 17,
+			45, 86, 46, 12, 47, 103, 79, 49, 8, 70, 100, 68, 22, 11, 42, 49, 3, 237, 1, 254, 206, 219, 227, 228, 206, 185, 205, 213, 227, 216,
+			218, 188, 255, 3, 237, 225, 12, 33, 0, 241, 23, 60, 14, 231, 16, 41, 28, 247, 244, 244, 20, 248, 225, 229, 245, 243, 214, 220, 252, 3,
+			205, 209, 7, 28, 14, 250, 247, 33, 45, 37, 5, 9, 28, 38, 17, 35, 38, 0, 0, 34, 47, 1, 239, 239, 12, 0, 238, 219, 224, 238,
+			230, 217, 221, 239, 235, 216, 228, 253, 253, 229, 238, 252, 255, 245, 246, 255, 253, 247, 238, 255, 6, 4, 241, 245, 10, 20, 14, 3, 7, 18,
+			25, 29, 22, 20, 21, 21, 24, 30, 23, 13, 5, 14, 29, 24, 0, 5, 14, 21, 13, 12, 3, 12, 9, 13, 7, 7, 6, 3, 4, 7,
+			11, 1, 3, 254, 13, 15, 9, 0, 12, 14, 17, 6, 10, 11, 17, 10, 1, 7, 12, 0, 202, 10, 6, 0, 5, 13, 51, 44, 21, 20,
+			8, 251, 242, 255, 3, 249, 230, 210, 223, 245, 245, 11, 19, 17, 49, 48, 16, 11, 7, 248, 236, 206, 183, 229, 246, 7, 22, 23, 33, 37,
+			41, 22, 250, 244, 254, 233, 214, 213, 250, 5, 21, 22, 11, 15, 255, 0, 255, 251, 6, 19, 12, 231, 229, 245, 239, 246, 0, 33, 9, 12,
+			14, 248, 0, 12, 2, 11, 27, 6, 243, 231, 226, 249, 199, 245, 20, 48, 54, 4, 235, 252, 254, 233, 236, 15, 6, 1, 0, 11, 18, 10,
+			10, 255, 240, 246, 7, 6, 243, 247, 238, 220, 13, 25, 19, 13, 23, 35, 250, 197, 226, 249, 10, 22, 0, 0, 255, 14, 21, 13, 237, 238,
+			216, 244, 16, 21, 52, 24, 4, 229, 242, 244, 2, 252, 250, 249, 6, 248, 242, 240, 6, 245, 8, 18, 13, 54, 0, 27, 29, 231, 192, 199,
+			21, 21, 9, 7, 16, 244, 235, 2, 30, 0, 250, 5, 253, 244, 234, 250, 238, 248, 13, 15, 24, 4, 25, 40, 3, 2, 251, 229, 217, 230,
+			7, 7, 23, 247, 249, 243, 30, 36, 9, 26, 229, 198, 217, 220, 250, 13, 29, 24, 32, 13, 7, 40, 36, 255, 15, 1, 219, 222, 219, 207,
+			221, 251, 37, 26, 14, 4, 27, 219, 230, 19, 10, 36, 5, 26, 9, 229, 234, 14, 14, 6, 8, 0, 10, 239, 204, 239, 227, 237, 29, 22,
+			13, 29, 41, 22, 228, 236, 244, 0, 244, 255, 240, 246, 254, 11, 240, 19, 43, 28, 20, 235, 14, 246, 252, 227, 220, 11, 252, 232, 15, 10,
+			23, 19, 243, 235, 0, 242, 8, 0, 250, 33, 248, 15, 15, 255, 226, 7, 15, 2, 11, 44, 32, 11, 222, 198, 229, 229, 193, 225, 25, 33,
+			35, 13, 30, 27, 234, 3, 30, 24, 14, 238, 218, 236, 12, 246, 11, 22, 15, 3, 251, 235, 255, 226, 214, 227, 11, 255, 6, 0, 18, 59,
+			49, 252, 233, 0, 31, 27, 247, 239, 234, 239, 219, 246, 15, 18, 254, 233, 250, 39, 28, 240, 235, 222, 4, 252, 12, 1, 7, 43, 250, 15,
+			6, 1, 11, 231, 0, 246, 247, 13, 16, 38, 251, 244, 214, 211, 228, 198, 34, 39, 27, 16, 5, 226, 31, 59, 28, 43, 22, 251, 192, 215,
+			211, 191, 230, 3, 8, 7, 59, 25, 52, 27, 240, 4, 236, 14, 0, 240, 235, 237, 234, 226, 188, 4, 82, 55, 26, 24, 12, 236, 241, 14,
+			2, 250, 208, 209, 235, 13, 38, 44, 7, 249, 247, 221, 225, 241, 72, 44, 17, 13, 238, 197, 213, 250, 26, 32, 5, 19, 228, 12, 46, 231,
+			241, 244, 16, 255, 235, 240, 251, 239, 221, 17, 42, 33, 45, 26, 15, 210, 230, 5, 244, 194, 11, 11, 22, 2, 254, 246, 3, 6, 9, 33,
+			24, 3, 237, 212, 236, 254, 18, 222, 25, 60, 1, 212, 224, 253, 2, 58, 14, 42, 254, 218, 6, 250, 32, 231, 190, 230, 3, 248, 6, 16,
+			242, 23, 42, 5, 35, 39, 3, 3, 235, 230, 203, 231, 220, 11, 54, 43, 241, 241, 2, 221, 239, 10, 18, 2, 22, 7, 251, 24, 27, 11,
+			240, 0, 31, 28, 16, 166, 168, 201, 242, 231, 250, 90, 73, 2, 9, 29, 15, 250, 249, 9, 52, 35, 251, 218, 174, 186, 19, 35, 0, 232,
+			220, 223, 197, 10, 44, 80, 39, 29, 50, 254, 8, 54, 253, 204, 241, 239, 201, 249, 220, 0, 240, 19, 29, 252, 254, 248, 12, 253, 219, 242,
+			34, 19, 18, 9, 6, 61, 63, 3, 222, 223, 249, 252, 231, 232, 4, 252, 205, 249, 255, 253, 45, 14, 207, 214, 15, 14, 20, 29, 28, 80,
+			37, 253, 243, 220, 3, 3, 220, 4, 217, 9, 248, 193, 242, 30, 44, 20, 207, 173, 9, 87, 249, 254, 45, 9, 4, 29, 39, 14, 36, 228,
+			175, 234, 232, 241, 230, 203, 31, 90, 56, 249, 213, 11, 13, 7, 238, 7, 10, 186, 174, 235, 37, 9, 28, 38, 54, 30, 26, 29, 2, 250,
+			252, 240, 216, 0, 240, 226, 164, 210, 240, 68, 41, 23, 68, 3, 214, 238, 22, 26, 246, 2, 232, 14, 223, 14, 32, 8, 18, 228, 24, 250,
+			37, 20, 242, 232, 222, 204, 225, 246, 219, 15, 29, 5, 11, 21, 22, 33, 29, 252, 14, 1, 31, 14, 232, 195, 14, 233, 20, 220, 214, 47,
+			24, 239, 241, 17, 243, 16, 238, 230, 7, 36, 232, 201, 251, 34, 68, 45, 33, 233, 2, 55, 247, 235, 195, 198, 211, 46, 42, 232, 24, 237,
+			241, 243, 13, 26, 32, 235, 211, 237, 1, 5, 248, 45, 5, 41, 16, 20, 18, 229, 29, 40, 235, 216, 227, 214, 214, 9, 15, 2, 241, 199,
+			19, 35, 11, 248, 1, 22, 238, 32, 32, 0, 26, 18, 34, 245, 23, 34, 235, 182, 205, 8, 235, 242, 242, 210, 222, 21, 8, 252, 22, 38,
+			60, 20, 254, 23, 33, 5, 219, 9, 15, 62, 241, 181, 245, 230, 228, 0, 214, 218, 16, 237, 255, 50, 67, 7, 249, 254, 7, 6, 242, 48,
+			31, 228, 225, 48, 223, 230, 10, 16, 19, 253, 230, 207, 235, 39, 36, 225, 218, 246, 254, 254, 226, 248, 63, 33, 33, 61, 35, 0, 28, 224,
+			192, 227, 4, 41, 230, 221, 212, 235, 226, 250, 247, 250, 59, 19, 13, 4, 16, 80, 70, 10, 17, 27, 209, 151, 148, 195, 1, 51, 21, 15,
+			24, 66, 10, 229, 236, 23, 31, 189, 219, 224, 11, 28, 8, 50, 35, 22, 1, 12, 15, 228, 249, 233, 189, 248, 249, 227, 220, 16, 42, 0,
+			243, 31, 79, 15, 24, 242, 14, 33, 251, 203, 242, 222, 246, 25, 208, 2, 225, 242, 7, 236, 45, 47, 236, 24, 60, 3, 2, 4, 230, 12,
+			246, 178, 6, 36, 2, 206, 231, 77, 19, 250, 10, 7, 254, 214, 233, 0, 5, 8, 15, 223, 245, 12, 65, 249, 234, 26, 53, 16, 226, 6,
+			228, 223, 9, 25, 207, 237, 227, 245, 14, 251, 25, 12, 29, 14, 238, 209, 40, 87, 5, 24, 254, 7, 220, 216, 177, 230, 26, 35, 26, 192,
+			249, 47, 11, 226, 12, 41, 0, 42, 242, 246, 255, 10, 11, 230, 222, 204, 246, 28, 12, 3, 53, 62, 7, 242, 240, 1, 238, 233, 211, 213,
+			13, 247, 4, 13, 23, 68, 16, 217, 252, 7, 245, 2, 236, 253, 42, 15, 47, 14, 26, 249, 204, 192, 193, 220, 230, 2, 22, 255, 28, 65,
+			60, 29, 254, 27, 25, 0, 218, 237, 199, 136, 228, 33, 69, 58, 60, 54, 224, 224, 229, 250, 233, 185, 220, 248, 47, 249, 49, 35, 30, 6,
+			19, 17, 225, 209, 240, 0, 4, 1, 250, 12, 31, 84, 4, 231, 223, 242, 195, 186, 250, 50, 22, 231, 0, 20, 8, 229, 2, 29, 51, 53,
+			250, 7, 1, 41, 3, 224, 241, 205, 193, 38, 232, 234, 18, 219, 189, 4, 57, 32, 73, 40, 26, 237, 228, 192, 252, 254, 2, 32, 28, 49,
+			35, 236, 251, 234, 207, 0, 255, 252, 220, 11, 222, 201, 250, 243, 236, 55, 70, 57, 13, 26, 4, 213, 72, 49, 14, 23, 173, 169, 212, 237,
+			240, 172, 253, 55, 74, 54, 60, 219, 179, 177, 220, 41, 123, 76, 250, 243, 30, 234, 0, 0, 3, 202, 218, 0, 8, 242, 219, 232, 246, 52,
+			26, 11, 16, 252, 230, 16, 6, 6, 18, 242, 1, 29, 65, 30, 210, 209, 214, 13, 207, 201, 27, 7, 255, 51, 33, 252, 244, 25, 20, 239,
+			249, 220, 193, 56, 65, 238, 242, 2, 4, 2, 44, 5, 245, 224, 219, 248, 29, 5, 184, 241, 72, 57, 238, 233, 230, 219, 28, 25, 255, 13,
+			7, 20, 4, 18, 3, 247, 20, 230, 21, 43, 209, 205, 238, 206, 177, 233, 82, 9, 53, 47, 8, 16, 5, 9, 234, 20, 37, 11, 228, 242,
+			229, 229, 224, 214, 17, 14, 10, 35, 21, 237, 253, 233, 8, 253, 28, 21, 204, 231, 31, 46, 56, 240, 3, 246, 233, 248, 230, 4, 251, 249,
+			14, 6, 3, 216, 23, 10, 216, 22, 246, 206, 66, 2, 216, 79, 76, 241, 226, 53, 6, 160, 175, 253, 20, 49, 10, 226, 253, 30, 247, 12,
+			240, 253, 1, 5, 245, 216, 2, 83, 34, 29, 27, 238, 216, 185, 237, 8, 54, 16, 203, 177, 14, 27, 13, 45, 246, 241, 13, 22, 6, 42,
+			14, 216, 249, 18, 35, 222, 1, 226, 4, 197, 231, 14, 240, 20, 240, 222, 95, 73, 230, 226, 1, 3, 15, 20, 253, 221, 69, 47, 238, 188,
+			239, 216, 201, 247, 243, 45, 17, 28, 31, 14, 242, 13, 223, 41, 31, 225, 255, 226, 211, 215, 47, 50, 26, 50, 255, 232, 246, 27, 166, 227,
+			14, 251, 245, 249, 10, 37, 21, 248, 2, 20, 21, 38, 191, 191, 29, 57, 214, 255, 16, 8, 18, 5, 0, 242, 1, 249, 243, 255, 247, 20,
+			253, 221, 219, 44, 11, 213, 244, 3, 50, 85, 23, 218, 221, 255, 27, 19, 27, 221, 221, 18, 230, 252, 249, 10, 250, 205, 7, 227, 239, 19,
+			58, 22, 18, 33, 247, 199, 248, 46, 65, 28, 8, 224, 236, 230, 187, 250, 237, 19, 29, 226, 220, 5, 25, 241, 13, 13, 38, 42, 31, 240,
+			248, 30, 5, 223, 12, 247, 162, 237, 24, 30, 39, 240, 7, 0, 203, 225, 246, 8, 28, 50, 38, 236, 254, 28, 247, 247, 250, 9, 11, 250,
+			204, 218, 62, 232, 238, 32, 6, 25, 235, 225, 37, 40, 49, 160, 194, 12, 40, 14, 11, 245, 6, 240, 237, 35, 241, 39, 9, 230, 15, 41,
+			247, 223, 223, 208, 11, 43, 6, 21, 236, 0, 8, 1, 255, 242, 6, 25, 6, 216, 241, 237, 252, 39, 7, 33, 0, 28, 39, 16, 231, 205,
+			235, 176, 218, 24, 47, 39, 222, 5, 20, 21, 47, 232, 189, 14, 28, 7, 34, 25, 225, 13, 228, 232, 16, 7, 214, 249, 43, 240, 206, 240,
+			0, 246, 10, 26, 47, 34, 55, 15, 249, 3, 245, 244, 208, 214, 237, 15, 2, 210, 202, 6, 35, 80, 68, 3, 252, 202, 19, 19, 193, 28,
+			36, 234, 235, 228, 244, 6, 242, 18, 67, 39, 246, 222, 5, 229, 9, 253, 231, 249, 225, 244, 2, 43, 6, 22, 28, 244, 48, 249, 223, 0,
+			239, 12, 233, 253, 23, 13, 248, 191, 239, 68, 19, 28, 219, 205, 2, 33, 35, 8, 251, 3, 242, 239, 244, 23, 245, 222, 217, 19, 16, 10,
+			51, 49, 32, 7, 225, 182, 209, 58, 21, 240, 210, 9, 19, 217, 2, 253, 4, 20, 58, 211, 253, 33, 28, 2, 182, 33, 80, 236, 236, 185,
+			236, 254, 6, 10, 73, 40, 248, 194, 251, 1, 26, 20, 193, 220, 202, 10, 66, 253, 30, 70, 6, 240, 228, 239, 26, 53, 205, 3, 22, 222,
+			228, 242, 247, 22, 237, 10, 234, 236, 3, 21, 41, 40, 249, 12, 235, 233, 20, 22, 29, 243, 224, 233, 16, 212, 228, 49, 234, 56, 11, 6,
+			230, 221, 4, 251, 199, 57, 45, 228, 58, 18, 234, 230, 239, 14, 5, 237, 38, 24, 237, 225, 243, 198, 29, 35, 30, 244, 225, 249, 237, 66,
+			218, 23, 14, 237, 247, 19, 62, 33, 244, 207, 0, 228, 234, 2, 234, 236, 22, 2, 242, 3, 236, 25, 38, 53, 43, 247, 210, 255, 23, 206,
+			226, 8, 27, 35, 236, 7, 16, 213, 240, 253, 194, 31, 20, 0, 240, 227, 37, 9, 29, 53, 76, 4, 204, 22, 228, 187, 14, 226, 0, 247,
+			247, 8, 242, 233, 251, 0, 238, 48, 50, 46, 45, 13, 221, 202, 236, 2, 21, 61, 10, 224, 233, 150, 205, 25, 1, 12, 45, 82, 9, 8,
+			252, 239, 255, 253, 5, 190, 254, 252, 18, 39, 0, 27, 4, 204, 1, 16, 8, 26, 237, 210, 236, 23, 9, 21, 225, 236, 243, 255, 70, 32,
+			0, 247, 29, 24, 210, 248, 44, 213, 232, 213, 181, 33, 48, 11, 15, 19, 14, 251, 5, 5, 224, 19, 3, 221, 9, 59, 240, 254, 11, 209,
+			5, 1, 239, 244, 22, 13, 247, 27, 255, 0, 24, 229, 42, 236, 215, 213, 18, 13, 240, 7, 6, 48, 231, 36, 45, 19, 208, 223, 241, 212,
+			4, 4, 35, 31, 29, 2, 249, 247, 225, 251, 240, 213, 248, 7, 4, 246, 50, 65, 252, 243, 19, 8, 18, 12, 215, 239, 241, 34, 247, 214,
+			228, 238, 2, 40, 20, 228, 0, 247, 31, 7, 226, 2, 4, 35, 51, 35, 0, 8, 208, 191, 9, 16, 17, 248, 233, 249, 237, 230, 229, 243,
+			46, 50, 25, 244, 253, 24, 235, 49, 9, 255, 232, 30, 243, 201, 5, 243, 14, 211, 250, 41, 242, 29, 236, 6, 240, 23, 255, 225, 19, 33,
+			24, 29, 12, 5, 215, 199, 223, 20, 11, 12, 0, 238, 5, 25, 31, 245, 255, 16, 6, 236, 248, 195, 226, 247, 254, 76, 53, 249, 10, 16,
+			43, 252, 248, 240, 153, 197, 19, 235, 40, 80, 42, 16, 224, 236, 198, 3, 249, 232, 42, 1, 30, 245, 1, 25, 253, 29, 41, 244, 214, 10,
+			226, 219, 3, 199, 235, 32, 45, 52, 34, 248, 240, 207, 242, 56, 24, 238, 247, 236, 3, 3, 193, 2, 8, 15, 38, 50, 15, 226, 229, 3,
+			32, 22, 249, 212, 225, 231, 254, 26, 252, 251, 254, 21, 4, 22, 241, 254, 0, 248, 39, 28, 14, 247, 249, 3, 235, 7, 244, 224, 20, 247,
+			227, 242, 241, 29, 247, 249, 36, 38, 23, 207, 233, 14, 255, 68, 69, 218, 238, 238, 226, 4, 246, 18, 249, 216, 209, 198, 0, 99, 39, 23,
+			53, 239, 13, 243, 186, 251, 20, 248, 239, 240, 241, 29, 28, 45, 21, 252, 226, 209, 252, 8, 22, 6, 11, 237, 245, 3, 201, 253, 254, 251,
+			55, 32, 10, 60, 2, 243, 250, 227, 17, 223, 211, 246, 210, 249, 56, 4, 4, 33, 37, 20, 245, 5, 246, 218, 204, 14, 17, 10, 28, 4,
+			0, 0, 250, 253, 239, 233, 28, 7, 0, 254, 247, 2, 0, 253, 19, 43, 243, 235, 1, 254, 225, 246, 232, 15, 59, 0, 1, 15, 246, 21,
+			212, 238, 253, 2, 9, 7, 18, 22, 13, 230, 25, 245, 225, 223, 241, 248, 247, 52, 11, 31, 7, 234, 240, 19, 28, 3, 18, 253, 228, 236,
+			223, 253, 2, 233, 3, 21, 32, 255, 11, 35, 247, 1, 249, 237, 221, 243, 2, 11, 249, 1, 35, 20, 8, 1, 13, 39, 242, 246, 254, 187,
+			233, 0, 251, 19, 247, 0, 19, 239, 239, 32, 12, 28, 41, 6, 21, 210, 255, 224, 208, 39, 25, 24, 9, 209, 218, 250, 233, 15, 32, 30,
+			15, 2, 254, 226, 233, 239, 250, 46, 32, 1, 22, 225, 248, 24, 3, 252, 248, 5, 22, 215, 220, 254, 236, 13, 13, 10, 21, 11, 3, 17,
+			249, 251, 9, 240, 230, 16, 10, 35, 214, 245, 255, 225, 4, 16, 49, 6, 6, 244, 37, 22, 203, 221, 247, 6, 247, 1, 235, 16, 36, 0,
+			0, 239, 233, 234, 27, 12, 44, 37, 5, 251, 217, 233, 14, 42, 232, 239, 8, 249, 226, 228, 9, 6, 25, 254, 24, 248, 234, 227, 252, 24,
+			8, 31, 16, 42, 11, 239, 240, 0, 251, 245, 242, 8, 252, 240, 231, 238, 3, 14, 10, 250, 7, 11, 7, 246, 11, 2, 7, 0, 24, 39,
+			254, 2, 250, 244, 235, 246, 241, 220, 13, 20, 10, 243, 232, 248, 8, 7, 0, 250, 34, 25, 0, 4, 251, 28, 253, 10, 1, 2, 251, 221,
+			228, 218, 2, 38, 6, 255, 16, 3, 244, 248, 234, 34, 18, 1, 2, 0, 247, 7, 251, 255, 17, 245, 248, 244, 5, 17, 0, 244, 6, 2,
+			243, 0, 242, 27, 20, 4, 255, 5, 5, 255, 224, 219, 241, 1, 16, 12, 7, 28, 251, 15, 39, 7, 230, 243, 0, 8, 253, 244, 0, 230,
+			239, 252, 236, 23, 47, 12, 246, 238, 249, 12, 231, 21, 38, 10, 12, 10, 233, 216, 233, 4, 6, 13, 7, 0, 1, 254, 0, 0, 233, 7,
+			15, 0, 2, 5, 24, 14, 23, 15, 18, 18, 22, 19, 26, 21, 27, 28, 17, 24, 30, 26, 17, 23, 26, 30, 31, 17, 28, 21, 16, 12,
+			29, 40, 4, 36, 18, 26, 31, 11, 21, 16, 29, 4, 19, 16, 20, 24, 7, 26, 14, 27, 8, 9, 11, 17, 23, 254, 22, 16, 24, 16,
+			18, 12, 253, 30, 1, 21, 18, 17, 28, 21, 14, 27, 23, 23, 14, 35, 33, 31, 27, 27, 25, 23, 13, 16, 33, 27, 3, 20, 12, 9,
+			36, 34, 20, 28, 13, 18, 12, 252, 20, 17, 8, 4, 13, 9, 2, 53, 18, 11, 14, 0, 0, 251, 20, 21, 16, 7, 0, 11, 22, 17,
+			27, 18, 14, 6, 8, 24, 23, 4, 32, 17, 26, 16, 24, 16, 28, 34, 15, 21, 33, 33, 26, 28, 3, 26, 21, 7, 34, 50, 18, 25,
+			4, 19, 37, 20, 19, 4, 20, 29, 9, 25, 21, 35, 23, 22, 9, 4, 23, 248, 30, 21, 18, 9, 8, 3, 29, 20, 10, 14, 13, 4,
+			9, 12, 27, 22, 0, 8, 10, 4, 4, 12, 20, 18, 20, 1, 20, 22, 12, 30, 9, 20, 27, 0, 11, 16, 34, 23, 37, 1, 33, 19,
+			11, 22, 11, 33, 14, 10, 25, 20, 21, 24, 1, 8, 29, 11, 14, 26, 19, 5, 13, 15, 17, 4, 14, 5, 4, 10, 11, 17, 4, 11,
+			17, 245, 11, 25, 8, 15, 3, 8, 10, 0, 18, 11, 14, 28, 31, 21, 7, 30, 11, 18, 34, 17, 42, 7, 9, 5, 9, 19, 11, 37,
+			13, 26, 31, 7, 20, 4, 30, 19, 28, 8, 16, 11, 30, 20, 5, 19, 17, 17, 5, 0, 2, 20, 10, 11, 25, 7, 26, 7, 10, 6,
+			15, 25, 7, 6, 7, 253, 21, 9, 16, 22, 27, 2, 18, 28, 5, 15, 12, 2, 23, 14, 37, 15, 10, 26, 14, 8, 21, 28, 12, 26,
+			9, 37, 21, 10, 30, 20, 13, 28, 30, 6, 17, 8, 4, 21, 6, 26, 27, 10, 23, 14, 14, 23, 11, 0, 12, 7, 10, 19, 14, 248,
+			18, 10, 1, 1, 2, 28, 14, 254, 4, 12, 9, 7, 17, 16, 27, 15, 3, 10, 31, 0, 11, 35, 11, 4, 19, 38, 23, 8, 13, 31,
+			18, 24, 18, 26, 32, 12, 26, 14, 24, 29, 11, 29, 13, 8, 21, 9, 4, 13, 19, 20, 8, 17, 17, 0, 10, 11, 11, 5, 1, 9,
+			0, 255, 10, 8, 8, 22, 4, 8, 20, 6, 252, 14, 25, 8, 24, 11, 19, 39, 30, 11, 34, 13, 11, 25, 3, 23, 38, 28, 40, 12,
+			27, 36, 11, 13, 24, 33, 20, 12, 26, 251, 35, 250, 8, 20, 18, 9, 0, 20, 4, 15, 13, 5, 250, 21, 0, 7, 2, 3, 9, 5,
+			0, 9, 20, 29, 0, 248, 15, 253, 10, 28, 33, 15, 14, 6, 13, 25, 29, 18, 3, 32, 44, 19, 22, 38, 5, 15, 24, 35, 7, 22,
+			24, 25, 26, 13, 8, 19, 31, 251, 10, 7, 237, 11, 247, 28, 1, 0, 13, 3, 2, 26, 2, 252, 13, 2, 17, 13, 5, 244, 1, 1,
+			9, 18, 15, 9, 12, 0, 41, 26, 22, 17, 0, 251, 13, 37, 22, 9, 1, 14, 58, 3, 20, 21, 13, 29, 16, 2, 41, 31, 0, 29,
+			18, 16, 18, 2, 24, 15, 10, 31, 253, 0, 27, 4, 37, 9, 1, 20, 3, 12, 9, 0, 11, 28, 251, 253, 14, 20, 28, 34, 249, 7,
+			12, 19, 16, 3, 2, 31, 7, 4, 6, 7, 32, 27, 0, 12, 7, 20, 14, 1, 253, 1, 35, 16, 249, 5, 24, 16, 15, 33, 252, 13,
+			7, 13, 23, 251, 43, 47, 252, 33, 38, 13, 33, 34, 248, 24, 32, 13, 37, 32, 22, 31, 16, 6, 16, 24, 34, 12, 0, 25, 26, 22,
+			25, 13, 24, 24, 240, 14, 27, 244, 15, 25, 239, 254, 8, 235, 37, 15, 6, 13, 254, 2, 12, 33, 250, 9, 236, 243, 9, 233, 26, 22,
+			20, 6, 24, 252, 24, 23, 15, 39, 8, 14, 30, 251, 34, 39, 0, 17, 43, 29, 26, 45, 23, 254, 43, 9, 45, 37, 14, 24, 34, 251,
+			51, 38, 11, 21, 16, 14, 28, 41, 15, 21, 250, 31, 4, 14, 24, 0, 5, 17, 27, 27, 15, 7, 0, 28, 26, 13, 15, 7, 17, 4,
+			246, 34, 23, 10, 18, 14, 7, 1, 14, 7, 20, 3, 13, 252, 240, 16, 23, 0, 21, 6, 3, 250, 255, 27, 15, 249, 5, 14, 4, 252,
+			29, 254, 247, 44, 20, 1, 30, 29, 243, 57, 27, 20, 28, 250, 36, 18, 11, 54, 35, 34, 36, 26, 43, 61, 22, 44, 20, 13, 34, 46,
+			44, 27, 41, 39, 6, 27, 0, 55, 32, 22, 9, 8, 16, 240, 25, 255, 15, 18, 6, 250, 247, 29, 10, 238, 18, 8, 230, 235, 250, 246,
+			11, 14, 236, 23, 250, 5, 6, 21, 250, 22, 42, 252, 11, 31, 31, 21, 23, 253, 22, 3, 30, 3, 32, 32, 249, 28, 14, 8, 24, 24,
+			254, 247, 2, 242, 244, 10, 15, 37, 254, 9, 11, 255, 17, 6, 38, 30, 23, 21, 15, 15, 20, 53, 18, 45, 22, 248, 24, 21, 28, 11,
+			72, 39, 31, 42, 4, 49, 19, 37, 27, 25, 32, 8, 21, 20, 40, 41, 4, 25, 6, 253, 23, 10, 11, 246, 5, 4, 253, 37, 15, 232,
+			0, 17, 254, 240, 28, 32, 7, 25, 233, 228, 11, 252, 0, 33, 28, 248, 12, 0, 15, 20, 19, 19, 48, 6, 12, 9, 2, 32, 11, 27,
+			33, 47, 19, 250, 41, 25, 23, 42, 36, 15, 35, 35, 254, 11, 6, 18, 65, 16, 255, 11, 22, 50, 255, 220, 0, 37, 232, 0, 3, 225,
+			22, 236, 185, 58, 82, 55, 30, 245, 245, 31, 17, 36, 238, 6, 55, 16, 19, 16, 47, 54, 45, 29, 31, 18, 65, 14, 29, 23, 55, 66,
+			19, 28, 39, 16, 27, 19, 227, 21, 27, 10, 19, 1, 235, 57, 20, 231, 3, 242, 9, 20, 251, 4, 229, 255, 28, 14, 248, 2, 15, 0,
+			3, 242, 8, 14, 17, 17, 234, 249, 47, 55, 13, 249, 58, 30, 31, 48, 1, 253, 26, 31, 24, 17, 245, 251, 33, 253, 241, 17, 83, 28,
+			4, 50, 29, 34, 42, 8, 222, 33, 60, 6, 15, 255, 249, 25, 72, 250, 235, 35, 37, 29, 224, 241, 252, 0, 242, 4, 32, 38, 13, 240,
+			221, 227, 16, 32, 229, 19, 14, 242, 21, 252, 9, 17, 12, 57, 72, 0, 0, 37, 250, 32, 21, 11, 60, 49, 1, 26, 255, 25, 68, 27,
+			250, 53, 30, 17, 24, 13, 29, 46, 6, 11, 27, 225, 251, 30, 17, 0, 4, 26, 24, 251, 239, 30, 21, 238, 10, 246, 236, 45, 47, 25,
+			6, 5, 18, 59, 252, 245, 39, 31, 26, 0, 249, 25, 40, 39, 19, 236, 232, 54, 5, 236, 14, 22, 48, 5, 250, 16, 230, 10, 46, 11,
+			242, 5, 0, 19, 250, 210, 23, 39, 246, 248, 254, 255, 8, 20, 241, 12, 31, 6, 41, 214, 238, 19, 36, 18, 40, 47, 54, 17, 43, 26,
+			238, 32, 25, 23, 32, 21, 15, 51, 11, 33, 57, 40, 47, 28, 8, 10, 23, 51, 40, 6, 9, 25, 12, 25, 25, 251, 22, 33, 1, 254,
+			252, 237, 11, 254, 22, 3, 14, 35, 245, 241, 2, 28, 22, 5, 10, 253, 254, 6, 23, 15, 9, 24, 36, 14, 255, 236, 6, 24, 30, 12,
+			34, 25, 14, 10, 23, 8, 13, 13, 22, 22, 6, 55, 44, 245, 251, 17, 5, 25, 34, 33, 22, 36, 50, 18, 17, 15, 30, 71, 71, 28,
+			29, 28, 20, 13, 244, 31, 29, 31, 46, 3, 11, 45, 248, 22, 33, 246, 27, 14, 229, 225, 232, 250, 220, 242, 234, 159, 137, 200, 232, 245,
+			239, 240, 24, 15, 5, 47, 34, 18, 33, 62, 0, 13, 51, 53, 30, 32, 121, 76, 19, 50, 47, 49, 85, 253, 17, 91, 53, 71, 85, 68,
+			42, 50, 21, 25, 47, 39, 14, 239, 16, 37, 246, 249, 251, 31, 31, 0, 14, 35, 236, 249, 254, 20, 23, 17, 22, 5, 245, 253, 37, 15,
+			9, 17, 10, 23, 255, 232, 9, 6, 10, 26, 16, 20, 16, 24, 9, 10, 8, 36, 23, 254, 233, 45, 30, 249, 6, 253, 9, 35, 18, 255,
+			7, 37, 34, 14, 12, 14, 31, 254, 252, 18, 7, 26, 30, 15, 27, 42, 21, 25, 22, 0, 8, 21, 23, 2, 250, 246, 36, 239, 8, 61,
+			245, 4, 13, 246, 16, 34, 247, 251, 6, 250, 250, 2, 21, 21, 16, 251, 253, 13, 250, 5, 254, 14, 26, 7, 3, 242, 233, 244, 13, 46,
+			28, 12, 16, 16, 4, 21, 45, 44, 27, 7, 6, 7, 15, 28, 40, 10, 22, 63, 42, 19, 15, 252, 28, 33, 17, 21, 18, 26, 19, 10,
+			8, 23, 18, 14, 1, 251, 35, 12, 25, 7, 255, 37, 10, 20, 9, 20, 25, 0, 242, 0, 36, 21, 16, 7, 251, 254, 13, 29, 243, 0,
+			2, 4, 14, 19, 1, 232, 11, 15, 42, 29, 11, 18, 8, 11, 9, 255, 253, 28, 11, 23, 20, 14, 19, 21, 14, 4, 15, 54, 23, 16,
+			17, 13, 14, 42, 9, 14, 50, 24, 14, 30, 10, 23, 250, 21, 22, 249, 70, 0, 0, 36, 245, 42, 41, 17, 38, 33, 254, 7, 21, 11,
+			42, 4, 21, 21, 4, 41, 36, 7, 28, 23, 40, 55, 47, 23, 17, 19, 22, 32, 4, 25, 57, 43, 42, 9, 253, 16, 17, 7, 24, 19,
+			20, 8, 242, 10, 27, 24, 19, 19, 43, 34, 10, 9, 3, 3, 22, 31, 21, 17, 10, 17, 37, 17, 26, 42, 28, 32, 26, 15, 33, 24,
+			5, 15, 7, 17, 38, 16, 13, 3, 14, 27, 24, 3, 254, 252, 5, 18, 16, 250, 255, 9, 252, 246, 4, 25, 7, 14, 7, 5, 5, 10,
+			254, 238, 4, 1, 5, 0, 255, 27, 45, 32, 29, 20, 12, 24, 42, 12, 46, 16, 40, 52, 14, 5, 6, 57, 26, 32, 60, 9, 20, 54,
+			3, 15, 33, 24, 20, 0, 2, 37, 27, 0, 1, 2, 32, 57, 18, 5, 24, 255, 253, 4, 7, 24, 47, 32, 15, 14, 12, 25, 23, 20,
+			24, 36, 47, 36, 21, 0, 9, 27, 18, 20, 12, 12, 11, 6, 254, 0, 16, 16, 16, 1, 10, 25, 15, 252, 239, 251, 25, 21, 18, 24,
+			28, 14, 3, 251, 247, 15, 32, 27, 15, 14, 19, 21, 16, 26, 44, 46, 32, 27, 252, 247, 255, 251, 20, 47, 44, 43, 38, 19, 25, 30,
+			3, 12, 11, 1, 21, 17, 10, 17, 17, 24, 41, 33, 27, 31, 22, 11, 4, 4, 8, 21, 22, 10, 15, 14, 1, 7, 253, 250, 24, 20,
+			1, 11, 1, 245, 4, 6, 9, 19, 15, 12, 3, 3, 11, 15, 5, 5, 13, 13, 17, 23, 9, 11, 25, 21, 14, 21, 26, 26, 19, 11,
+			11, 21, 18, 8, 11, 23, 12, 9, 28, 16, 16, 34, 49, 34, 14, 16, 35, 70, 19, 7, 36, 67, 21, 12, 35, 43, 52, 24, 11, 33,
+			44, 31, 20, 245, 30, 28, 7, 5, 0, 13, 36, 24, 3, 1, 18, 14, 252, 2, 12, 6, 18, 19, 0, 5, 21, 20, 15, 7, 6, 32,
+			31, 20, 24, 19, 22, 29, 34, 25, 24, 34, 35, 16, 13, 21, 25, 29, 21, 25, 17, 30, 18, 4, 23, 1, 15, 28, 6, 2, 0, 8,
+			253, 248, 241, 251, 10, 7, 4, 249, 8, 255, 1, 12, 6, 10, 18, 8, 0, 4, 7, 10, 23, 12, 13, 39, 38, 8, 15, 10, 6, 25,
+			31, 21, 10, 7, 9, 10, 13, 10, 22, 25, 25, 18, 255, 0, 255, 254, 2, 0, 0, 0, 122, 8, 8, 0, 10, 213, 185, 201, 218, 246,
+			30, 33, 19, 56, 71, 24, 0, 214, 189, 183, 232, 14, 26, 28, 12, 15, 57, 29, 252, 4, 244, 232, 213, 223, 2, 10, 16, 13, 5, 238,
+			255, 243, 245, 26, 10, 218, 238, 31, 37, 0, 0, 0, 1, 21, 21, 237, 233, 8, 244, 252, 45, 28, 219, 215, 249, 4, 251, 2, 229, 242,
+			250, 255, 14, 37, 36, 26, 0, 12, 6, 215, 225, 255, 12, 16, 2, 11, 17, 4, 248, 236, 0, 228, 217, 228, 3, 33, 7, 27, 18, 251,
+			28, 246, 235, 22, 246, 250, 248, 1, 59, 5, 229, 252, 251, 20, 2, 226, 11, 12, 229, 227, 253, 6, 247, 237, 253, 3, 20, 21, 251, 4,
+			21, 40, 20, 7, 238, 4, 35, 6, 224, 208, 223, 231, 252, 13, 2, 5, 4, 17, 13, 227, 252, 13, 250, 48, 14, 234, 220, 243, 18, 67,
+			52, 14, 253, 215, 213, 209, 236, 253, 247, 21, 31, 42, 5, 209, 241, 246, 38, 243, 215, 14, 41, 22, 35, 21, 210, 0, 245, 199, 13, 21,
+			10, 15, 252, 20, 22, 233, 233, 0, 12, 9, 205, 209, 244, 2, 9, 28, 42, 18, 23, 26, 20, 245, 229, 226, 13, 7, 230, 230, 242, 18,
+			33, 20, 253, 227, 214, 237, 1, 13, 2, 17, 37, 18, 25, 22, 209, 223, 29, 4, 27, 2, 210, 216, 249, 57, 255, 227, 0, 232, 4, 66,
+			0, 204, 0, 12, 253, 41, 46, 231, 231, 236, 247, 2, 246, 253, 3, 57, 68, 224, 211, 220, 218, 21, 9, 21, 2, 234, 11, 238, 12, 15,
+			16, 39, 213, 240, 32, 3, 251, 1, 4, 18, 7, 222, 230, 2, 239, 248, 244, 9, 33, 28, 252, 1, 241, 1, 246, 237, 16, 30, 28, 5,
+			0, 13, 16, 210, 197, 254, 20, 250, 12, 23, 225, 229, 254, 8, 39, 16, 222, 248, 20, 29, 15, 255, 42, 0, 203, 243, 1, 248, 240, 9,
+			6, 254, 0, 250, 244, 252, 23, 49, 237, 223, 238, 222, 252, 54, 42, 252, 23, 43, 0, 220, 239, 207, 11, 30, 216, 220, 40, 20, 241, 254,
+			40, 8, 216, 248, 27, 9, 234, 24, 217, 234, 20, 231, 0, 55, 31, 245, 34, 10, 214, 235, 24, 38, 25, 207, 174, 232, 9, 249, 23, 20,
+			27, 7, 255, 238, 238, 22, 231, 232, 61, 58, 235, 250, 19, 6, 10, 230, 217, 238, 32, 254, 212, 24, 6, 219, 13, 13, 249, 252, 248, 0,
+			254, 57, 32, 234, 249, 55, 240, 221, 1, 42, 244, 217, 212, 239, 32, 11, 6, 245, 36, 16, 183, 250, 14, 39, 44, 226, 223, 37, 1, 210,
+			23, 39, 255, 206, 225, 26, 43, 231, 238, 12, 44, 14, 216, 251, 41, 254, 210, 225, 38, 20, 235, 218, 33, 43, 13, 217, 172, 4, 66, 9,
+			16, 34, 5, 226, 228, 239, 49, 255, 237, 5, 252, 255, 231, 11, 28, 34, 18, 246, 216, 8, 233, 183, 216, 45, 34, 12, 20, 245, 17, 63,
+			28, 215, 254, 34, 211, 205, 236, 244, 44, 10, 28, 28, 237, 252, 241, 237, 233, 214, 226, 41, 63, 232, 0, 55, 24, 233, 240, 19, 234, 11,
+			19, 250, 12, 1, 213, 233, 80, 20, 157, 200, 25, 223, 5, 60, 7, 237, 44, 57, 2, 211, 20, 208, 3, 91, 231, 161, 12, 33, 0, 14,
+			44, 236, 177, 244, 21, 246, 8, 8, 237, 32, 3, 8, 27, 31, 212, 233, 62, 44, 212, 181, 4, 62, 217, 176, 8, 48, 22, 246, 4, 44,
+			15, 214, 250, 21, 212, 1, 55, 23, 3, 216, 211, 29, 29, 210, 242, 23, 4, 236, 231, 33, 34, 20, 234, 247, 19, 0, 228, 246, 28, 49,
+			42, 204, 172, 21, 91, 219, 190, 227, 14, 25, 25, 239, 252, 19, 237, 21, 11, 14, 18, 222, 26, 17, 0, 216, 243, 4, 9, 248, 232, 44,
+			10, 0, 248, 201, 21, 25, 214, 255, 14, 229, 246, 55, 46, 18, 235, 0, 18, 255, 244, 220, 247, 22, 243, 23, 236, 246, 33, 213, 250, 17,
+			213, 241, 48, 44, 234, 223, 61, 14, 224, 18, 7, 226, 230, 46, 55, 230, 224, 2, 250, 226, 8, 21, 237, 0, 247, 255, 240, 7, 251, 218,
+			60, 82, 226, 219, 78, 34, 191, 226, 7, 246, 8, 3, 222, 233, 31, 15, 233, 4, 41, 5, 207, 8, 18, 196, 11, 72, 245, 254, 31, 237,
+			229, 6, 233, 246, 56, 37, 222, 198, 38, 55, 187, 245, 55, 10, 199, 235, 232, 14, 33, 22, 4, 237, 53, 13, 231, 199, 33, 35, 172, 248,
+			51, 242, 7, 33, 15, 23, 220, 254, 251, 4, 217, 226, 48, 60, 212, 173, 6, 85, 33, 199, 227, 13, 48, 6, 242, 237, 21, 26, 22, 193,
+			184, 44, 60, 13, 40, 206, 168, 247, 39, 11, 20, 251, 12, 24, 1, 233, 203, 9, 58, 26, 252, 220, 223, 14, 244, 2, 50, 11, 227, 237,
+			244, 6, 31, 236, 252, 6, 36, 29, 0, 193, 36, 246, 215, 13, 3, 27, 248, 240, 193, 6, 68, 61, 246, 216, 10, 221, 245, 243, 250, 43,
+			13, 40, 231, 246, 17, 37, 238, 243, 199, 253, 20, 39, 3, 217, 0, 250, 16, 190, 202, 33, 58, 52, 9, 6, 248, 25, 30, 240, 243, 3,
+			223, 209, 13, 33, 217, 234, 38, 9, 236, 6, 246, 248, 254, 32, 9, 186, 61, 41, 240, 241, 8, 33, 230, 24, 31, 198, 20, 30, 174, 242,
+			19, 234, 53, 218, 215, 9, 18, 57, 11, 187, 4, 86, 18, 203, 209, 47, 53, 255, 230, 211, 245, 42, 12, 214, 240, 240, 8, 16, 229, 17,
+			71, 7, 196, 250, 23, 69, 253, 214, 253, 9, 246, 176, 243, 72, 15, 244, 32, 203, 190, 86, 59, 230, 234, 9, 19, 25, 234, 179, 229, 122,
+			81, 139, 229, 244, 253, 225, 246, 63, 47, 40, 214, 210, 7, 39, 177, 2, 98, 230, 242, 220, 39, 31, 15, 239, 224, 0, 5, 198, 3, 19,
+			17, 45, 206, 9, 73, 230, 193, 236, 70, 235, 224, 35, 59, 9, 165, 237, 10, 42, 16, 211, 239, 99, 249, 144, 63, 65, 242, 209, 251, 6,
+			226, 3, 5, 244, 19, 21, 208, 18, 66, 12, 247, 242, 39, 236, 195, 206, 2, 71, 27, 192, 12, 43, 13, 234, 218, 9, 50, 244, 210, 12,
+			47, 10, 207, 0, 4, 15, 189, 33, 56, 229, 230, 253, 34, 19, 252, 247, 2, 17, 6, 201, 235, 48, 13, 35, 221, 221, 221, 247, 26, 45,
+			1, 240, 22, 220, 28, 36, 215, 248, 81, 249, 212, 6, 243, 4, 222, 33, 195, 205, 120, 247, 188, 27, 39, 45, 17, 181, 236, 36, 26, 206,
+			21, 62, 22, 188, 253, 240, 28, 250, 172, 14, 80, 248, 206, 14, 3, 10, 215, 73, 36, 241, 7, 214, 186, 69, 36, 196, 13, 70, 19, 185,
+			223, 21, 33, 195, 248, 243, 248, 96, 0, 21, 17, 0, 175, 203, 78, 51, 180, 206, 34, 47, 245, 22, 12, 30, 224, 232, 4, 203, 7, 61,
+			248, 2, 247, 205, 34, 64, 31, 225, 215, 241, 224, 13, 1, 230, 5, 96, 220, 250, 16, 244, 11, 0, 5, 12, 246, 205, 31, 3, 13, 255,
+			245, 253, 0, 253, 27, 237, 207, 43, 14, 251, 18, 233, 9, 41, 238, 228, 241, 0, 250, 227, 69, 66, 162, 29, 70, 202, 157, 62, 51, 209,
+			9, 10, 10, 244, 18, 225, 20, 5, 254, 221, 216, 80, 195, 231, 59, 38, 247, 3, 244, 4, 37, 24, 229, 174, 29, 37, 237, 241, 6, 17,
+			9, 244, 227, 250, 4, 9, 251, 8, 4, 243, 245, 74, 7, 240, 51, 204, 208, 5, 209, 70, 43, 244, 23, 173, 250, 100, 174, 234, 35, 233,
+			39, 227, 246, 40, 13, 44, 241, 191, 226, 29, 5, 16, 246, 23, 246, 243, 14, 243, 32, 9, 245, 249, 73, 2, 150, 229, 28, 252, 231, 23,
+			30, 255, 252, 30, 235, 227, 72, 231, 222, 32, 20, 241, 235, 42, 249, 221, 2, 255, 235, 47, 254, 200, 28, 49, 191, 215, 104, 84, 194, 174,
+			22, 11, 202, 229, 54, 28, 28, 255, 216, 13, 56, 255, 189, 2, 52, 217, 233, 35, 241, 210, 42, 31, 246, 12, 7, 226, 249, 31, 214, 193,
+			6, 78, 40, 202, 30, 45, 241, 8, 233, 180, 7, 65, 243, 219, 64, 23, 183, 235, 71, 24, 210, 231, 194, 42, 79, 210, 203, 31, 52, 25,
+			221, 233, 43, 232, 251, 54, 16, 209, 242, 255, 254, 16, 230, 205, 21, 67, 250, 214, 254, 45, 2, 191, 52, 237, 7, 33, 247, 3, 10, 54,
+			193, 207, 60, 249, 189, 37, 34, 246, 1, 30, 221, 217, 29, 220, 219, 77, 27, 220, 1, 28, 21, 10, 254, 241, 246, 205, 247, 46, 244, 30,
+			55, 195, 206, 49, 8, 191, 25, 25, 240, 240, 18, 12, 232, 28, 5, 24, 14, 2, 232, 189, 253, 62, 10, 5, 15, 242, 237, 225, 255, 28,
+			245, 2, 7, 229, 17, 2, 214, 24, 76, 6, 0, 238, 239, 250, 222, 46, 251, 210, 44, 254, 232, 39, 235, 244, 14, 10, 18, 215, 211, 7,
+			32, 36, 10, 242, 23, 245, 222, 35, 0, 253, 0, 236, 255, 29, 247, 228, 249, 254, 37, 222, 20, 22, 252, 229, 27, 246, 246, 34, 3, 0,
+			4, 232, 229, 15, 14, 0, 2, 243, 8, 22, 8, 194, 23, 47, 229, 205, 15, 35, 251, 21, 237, 225, 20, 39, 209, 8, 75, 249, 174, 243,
+			15, 30, 30, 231, 248, 4, 7, 252, 225, 15, 39, 228, 2, 11, 233, 218, 23, 42, 14, 248, 5, 8, 221, 245, 9, 244, 19, 3, 245, 13,
+			13, 237, 29, 251, 1, 229, 227, 36, 249, 13, 14, 240, 236, 4, 16, 44, 244, 207, 251, 8, 0, 1, 0, 40, 24, 219, 237, 31, 235, 0,
+			22, 246, 17, 241, 236, 21, 0, 232, 255, 242, 1, 34, 225, 10, 35, 249, 253, 254, 28, 24, 248, 233, 251, 248, 3, 236, 253, 5, 11, 5,
+			247, 235, 24, 251, 245, 18, 12, 16, 244, 247, 12, 3, 254, 16, 238, 246, 252, 253, 21, 249, 12, 4, 252, 245, 239, 246, 1, 9, 23, 10,
+			247, 253, 9, 15, 246, 250, 1, 254, 5, 242, 247, 252, 13, 7, 251, 17, 21, 248, 238, 1, 4, 1, 235, 1, 242, 12, 32, 238, 235, 20,
+			12, 252, 5, 249, 26, 249, 246, 253, 247, 16, 253, 243, 2, 11, 246, 246, 19, 252, 11, 0, 244, 4, 3, 242, 248, 16, 11, 12, 0, 8,
+			246, 4, 238, 239, 16, 21, 255, 213, 22, 6, 243, 254, 26, 0, 244, 3, 242, 15, 15, 8, 233, 250, 31, 245, 244, 249, 5, 247, 11, 2,
+			242, 10, 26, 250, 227, 14, 12, 244, 231, 15, 27, 27, 254, 198, 248, 35, 7, 250, 245, 247, 253, 15, 0, 18, 6, 243, 245, 31, 6, 243,
+			248, 245, 14, 254, 242, 253, 12, 250, 17, 254, 232, 36, 246, 237, 0, 27, 0, 1, 253, 24, 255, 243, 11, 227, 241, 6, 25, 244, 242, 18,
+			11, 239, 13, 11, 251, 6, 242, 250, 5, 0, 22, 248, 250, 1, 3, 251, 0, 3, 253, 6, 242, 254, 25, 11, 231, 248, 24, 3, 255, 239,
+			8, 10, 232, 7, 12, 249, 242, 1, 19, 6, 11, 11, 242, 241, 1, 0, 241, 5, 9, 246, 3, 12, 5, 245, 18, 255, 240, 19, 7, 241,
+			239, 21, 4, 228, 3, 20, 252, 3, 11, 234, 243, 21, 13, 247, 236, 33, 255, 236, 23, 253, 251, 4, 5, 249, 239, 4, 20, 249, 16, 248,
+			225, 31, 254, 247, 2, 0, 12, 248, 239, 5, 3, 14, 13, 245, 1, 16, 237, 243, 14, 11, 8, 225, 253, 27, 241, 3, 11, 249, 16, 249,
+			232, 247, 23, 12, 221, 0, 33, 3, 253, 6, 247, 253, 0, 15, 1, 249, 7, 232, 10, 25, 3, 231, 237, 15, 255, 247, 5, 1, 235, 17,
+			24, 250, 10, 254, 13, 255, 248, 13, 246, 0, 0, 244, 2, 248, 239, 9, 14, 255, 251, 0, 9, 3, 238, 14, 5, 7, 4, 252, 10, 21,
+			1, 215, 249, 23, 249, 236, 9, 253, 240, 18, 14, 251, 7, 3, 238, 2, 18, 10, 234, 253, 17, 6, 246, 1, 3, 3, 9, 236, 251, 9,
+			2, 244, 244, 10, 9, 0, 241, 17, 12, 8, 0, 252, 243, 255, 0, 6, 254, 249, 9, 249, 3, 26, 16, 225, 1, 24, 238, 250, 236, 4,
+			10, 253, 7, 247, 252, 6, 6, 10, 1, 253, 10, 12, 227, 8, 18, 249, 246, 251, 255, 22, 253, 237, 1, 3, 1, 242, 2, 17, 250, 4,
+			7, 13, 5, 241, 0, 0, 147, 8, 9, 0, 250, 5, 240, 232, 11, 255, 245, 7, 234, 218, 30, 27, 215, 3, 33, 0, 232, 17, 7, 255,
+			23, 45, 13, 253, 246, 25, 33, 255, 227, 27, 13, 238, 4, 0, 241, 10, 245, 4, 29, 219, 235, 253, 240, 13, 234, 244, 1, 244, 0, 251,
+			5, 237, 34, 23, 226, 228, 38, 12, 204, 2, 42, 10, 239, 44, 14, 238, 15, 9, 27, 15, 5, 217, 244, 46, 254, 203, 18, 49, 248, 230,
+			247, 227, 239, 255, 9, 18, 242, 252, 231, 253, 238, 254, 251, 249, 3, 20, 246, 209, 25, 44, 3, 4, 25, 240, 248, 19, 12, 25, 241, 7,
+			31, 241, 9, 24, 244, 248, 26, 244, 236, 11, 7, 42, 240, 190, 28, 19, 252, 233, 254, 21, 228, 241, 227, 19, 10, 18, 235, 203, 40, 6,
+			167, 3, 63, 244, 228, 21, 2, 28, 240, 13, 6, 4, 58, 211, 253, 55, 254, 219, 37, 52, 215, 228, 21, 61, 243, 188, 248, 14, 35, 222,
+			219, 33, 5, 214, 17, 31, 229, 246, 30, 255, 211, 20, 12, 227, 16, 26, 248, 227, 14, 15, 219, 30, 26, 221, 0, 19, 233, 229, 69, 253,
+			206, 251, 29, 29, 238, 255, 17, 25, 235, 254, 24, 249, 242, 246, 0, 226, 247, 38, 0, 13, 0, 242, 243, 28, 42, 240, 205, 0, 15, 219,
+			21, 20, 228, 244, 41, 3, 235, 31, 249, 226, 21, 24, 235, 255, 11, 2, 5, 0, 59, 248, 210, 27, 32, 239, 252, 18, 230, 250, 18, 239,
+			242, 235, 24, 247, 6, 0, 233, 14, 226, 228, 251, 25, 244, 240, 5, 231, 18, 31, 243, 242, 24, 12, 5, 213, 33, 28, 215, 17, 4, 29,
+			55, 228, 239, 20, 2, 246, 243, 23, 26, 216, 238, 29, 255, 247, 249, 27, 4, 219, 248, 0, 30, 12, 215, 20, 41, 6, 193, 252, 60, 0,
+			185, 2, 29, 253, 0, 243, 9, 23, 0, 225, 240, 31, 35, 234, 223, 61, 2, 221, 20, 246, 10, 251, 243, 24, 7, 223, 231, 242, 2, 15,
+			248, 23, 249, 245, 254, 233, 25, 17, 1, 245, 31, 243, 238, 18, 247, 11, 252, 245, 253, 3, 243, 39, 238, 250, 60, 254, 252, 245, 8, 24,
+			253, 0, 9, 40, 252, 6, 2, 232, 244, 230, 4, 6, 230, 14, 0, 1, 241, 230, 0, 21, 250, 8, 250, 218, 28, 37, 231, 247, 5, 229,
+			9, 5, 252, 9, 239, 226, 18, 8, 232, 10, 3, 244, 29, 31, 8, 246, 250, 52, 10, 6, 8, 237, 18, 250, 209, 254, 38, 5, 238, 0,
+			34, 0, 202, 11, 49, 5, 212, 249, 38, 210, 232, 252, 41, 38, 224, 222, 6, 247, 7, 5, 204, 38, 32, 216, 1, 30, 12, 226, 244, 60,
+			4, 206, 7, 26, 234, 7, 19, 234, 33, 14, 234, 237, 22, 1, 235, 243, 0, 51, 234, 218, 34, 238, 9, 254, 233, 251, 25, 5, 254, 9,
+			244, 17, 4, 11, 250, 233, 18, 241, 22, 252, 246, 28, 241, 223, 251, 75, 244, 209, 20, 41, 2, 231, 21, 1, 24, 224, 217, 20, 38, 246,
+			198, 46, 26, 206, 243, 26, 20, 227, 255, 243, 220, 0, 252, 8, 3, 1, 44, 226, 229, 8, 19, 255, 33, 10, 233, 0, 243, 10, 28, 30,
+			24, 242, 16, 242, 9, 1, 226, 241, 26, 1, 199, 247, 37, 0, 213, 24, 35, 243, 243, 237, 1, 44, 250, 208, 240, 65, 248, 198, 13, 71,
+			246, 190, 6, 17, 237, 20, 9, 213, 16, 51, 214, 251, 38, 45, 254, 191, 67, 251, 255, 7, 225, 19, 53, 254, 183, 23, 45, 244, 215, 239,
+			41, 246, 238, 33, 226, 251, 254, 253, 244, 32, 237, 241, 41, 238, 249, 232, 240, 47, 232, 221, 247, 18, 20, 236, 17, 30, 31, 216, 7, 254,
+			242, 34, 252, 243, 14, 3, 247, 9, 28, 243, 234, 23, 37, 12, 207, 0, 0, 241, 30, 20, 201, 11, 38, 255, 239, 229, 34, 41, 224, 223,
+			240, 2, 38, 226, 9, 15, 14, 221, 226, 6, 28, 253, 227, 30, 2, 200, 4, 49, 241, 242, 21, 12, 23, 253, 213, 53, 37, 3, 213, 232,
+			60, 248, 214, 250, 52, 254, 255, 251, 244, 17, 7, 246, 6, 245, 246, 0, 240, 249, 229, 247, 23, 1, 217, 8, 11, 19, 30, 214, 238, 66,
+			33, 147, 222, 70, 252, 242, 250, 53, 246, 250, 53, 17, 241, 243, 22, 253, 37, 249, 227, 18, 250, 5, 253, 232, 27, 241, 225, 21, 50, 193,
+			3, 28, 19, 235, 219, 13, 28, 230, 240, 31, 10, 220, 232, 0, 37, 7, 191, 244, 16, 10, 250, 224, 52, 1, 214, 8, 47, 223, 249, 43,
+			237, 251, 22, 228, 1, 83, 212, 196, 20, 70, 21, 192, 254, 75, 243, 193, 38, 29, 253, 243, 251, 41, 238, 244, 13, 27, 247, 3, 252, 238,
+			18, 236, 228, 25, 27, 232, 210, 248, 38, 204, 221, 67, 22, 232, 236, 248, 35, 254, 212, 13, 36, 237, 233, 2, 20, 13, 20, 230, 3, 29,
+			246, 228, 245, 38, 23, 222, 11, 20, 20, 221, 247, 12, 27, 232, 253, 13, 247, 16, 243, 248, 29, 18, 234, 9, 243, 10, 245, 253, 255, 32,
+			231, 252, 0, 10, 8, 250, 255, 2, 234, 4, 40, 224, 207, 30, 58, 189, 220, 38, 50, 213, 248, 16, 21, 21, 228, 240, 16, 7, 253, 246,
+			14, 0, 224, 248, 13, 29, 234, 218, 24, 30, 214, 236, 34, 30, 233, 236, 61, 14, 206, 17, 53, 234, 241, 26, 45, 233, 197, 32, 0, 6,
+			248, 211, 26, 31, 204, 242, 58, 33, 222, 216, 20, 48, 230, 207, 17, 61, 186, 195, 67, 33, 173, 237, 23, 34, 44, 227, 239, 0, 45, 8,
+			203, 15, 40, 234, 234, 32, 12, 239, 255, 41, 5, 191, 34, 3, 206, 52, 43, 221, 229, 7, 13, 9, 227, 4, 0, 27, 20, 194, 220, 89,
+			27, 183, 242, 27, 24, 225, 246, 41, 250, 218, 2, 22, 3, 19, 222, 242, 17, 11, 2, 218, 25, 32, 239, 197, 26, 70, 246, 233, 17, 23,
+			244, 221, 22, 32, 251, 213, 2, 45, 5, 211, 227, 250, 45, 3, 210, 26, 33, 214, 248, 41, 15, 210, 243, 44, 234, 0, 23, 241, 253, 255,
+			17, 236, 254, 44, 250, 210, 42, 37, 223, 217, 252, 32, 253, 5, 248, 234, 22, 31, 254, 238, 21, 4, 240, 0, 12, 4, 209, 14, 22, 16,
+			249, 216, 251, 2, 29, 236, 7, 21, 230, 24, 9, 254, 219, 7, 4, 6, 23, 211, 1, 30, 255, 243, 244, 25, 3, 210, 20, 49, 7, 190,
+			252, 76, 248, 200, 21, 73, 204, 235, 240, 6, 78, 242, 232, 254, 37, 202, 229, 55, 37, 214, 242, 25, 6, 223, 216, 49, 44, 235, 193, 24,
+			21, 3, 203, 255, 46, 246, 239, 2, 0, 36, 221, 0, 10, 248, 243, 5, 241, 19, 19, 200, 16, 33, 21, 30, 242, 1, 15, 6, 234, 244,
+			9, 11, 14, 231, 245, 14, 19, 236, 240, 37, 1, 247, 213, 0, 14, 246, 9, 36, 19, 208, 6, 1, 17, 25, 227, 236, 41, 12, 213, 230,
+			20, 29, 237, 255, 4, 15, 229, 249, 28, 227, 6, 238, 49, 0, 219, 255, 11, 251, 225, 10, 251, 45, 14, 219, 246, 33, 13, 213, 46, 44,
+			181, 225, 55, 37, 239, 213, 16, 54, 9, 212, 227, 19, 34, 25, 188, 233, 86, 249, 185, 36, 54, 224, 242, 24, 238, 254, 234, 254, 251, 11,
+			3, 216, 61, 239, 221, 6, 255, 39, 243, 15, 11, 211, 251, 33, 13, 5, 0, 244, 10, 24, 242, 238, 17, 238, 250, 8, 10, 21, 212, 0,
+			8, 22, 251, 252, 247, 29, 243, 216, 33, 246, 230, 25, 243, 33, 12, 226, 0, 19, 235, 11, 254, 244, 28, 238, 4, 21, 213, 12, 25, 14,
+			239, 8, 7, 233, 4, 242, 13, 5, 2, 240, 4, 22, 243, 241, 46, 0, 224, 3, 49, 1, 236, 227, 242, 37, 245, 253, 19, 233, 15, 250,
+			249, 255, 0, 12, 1, 247, 239, 235, 255, 45, 13, 228, 253, 26, 0, 207, 253, 57, 25, 203, 247, 63, 218, 251, 10, 250, 41, 245, 198, 53,
+			24, 245, 204, 15, 83, 231, 198, 28, 28, 223, 229, 20, 233, 17, 255, 225, 35, 6, 236, 240, 48, 18, 207, 248, 63, 246, 167, 48, 26, 247,
+			28, 217, 58, 241, 214, 48, 14, 210, 222, 57, 32, 211, 246, 1, 19, 243, 4, 197, 23, 72, 215, 221, 48, 31, 2, 240, 241, 227, 22, 240,
+			21, 254, 231, 32, 229, 228, 12, 16, 8, 241, 14, 7, 6, 7, 1, 22, 5, 4, 218, 8, 18, 234, 246, 245, 49, 31, 204, 0, 39, 248,
+			230, 36, 13, 217, 0, 238, 16, 21, 235, 230, 24, 25, 214, 232, 25, 15, 227, 241, 22, 24, 245, 248, 38, 10, 234, 16, 222, 19, 249, 229,
+			24, 237, 11, 230, 1, 39, 3, 224, 253, 56, 226, 240, 6, 12, 20, 231, 0, 11, 250, 15, 247, 241, 40, 237, 230, 19, 252, 16, 17, 1,
+			0, 8, 253, 239, 7, 43, 0, 243, 250, 18, 4, 199, 46, 5, 248, 213, 246, 12, 247, 249, 235, 31, 14, 241, 254, 28, 15, 232, 217, 40,
+			49, 204, 221, 43, 27, 241, 226, 222, 30, 27, 234, 219, 30, 0, 246, 46, 255, 13, 7, 7, 237, 0, 0, 238, 6, 12, 255, 233, 32, 5,
+			211, 254, 16, 251, 249, 21, 10, 240, 234, 14, 84, 250, 205, 11, 28, 0, 218, 217, 39, 20, 251, 225, 240, 45, 23, 227, 226, 62, 237, 236,
+			254, 6, 10, 231, 0, 10, 240, 6, 33, 250, 221, 7, 9, 14, 230, 243, 30, 20, 249, 251, 0, 10, 255, 2, 34, 251, 236, 255, 9, 9,
+			255, 229, 31, 24, 196, 245, 236, 58, 253, 224, 6, 30, 8, 221, 217, 65, 9, 179, 229, 39, 2, 0, 243, 24, 70, 7, 209, 10, 29, 3,
+			209, 237, 67, 250, 196, 11, 74, 253, 6, 202, 17, 69, 194, 214, 52, 51, 233, 196, 245, 54, 10, 220, 34, 207, 248, 243, 233, 50, 28, 233,
+			203, 251, 40, 36, 239, 246, 32, 244, 200, 15, 216, 0, 59, 245, 228, 251, 1, 14, 24, 0, 8, 248, 244, 35, 240, 33, 10, 232, 20, 25,
+			1, 252, 33, 7, 12, 206, 227, 77, 246, 209, 6, 18, 25, 11, 235, 223, 23, 218, 236, 5, 11, 216, 231, 0, 48, 237, 249, 252, 17, 37,
+			226, 181, 23, 68, 219, 10, 16, 241, 6, 1, 17, 19, 248, 249, 247, 1, 19, 232, 205, 39, 48, 235, 247, 255, 253, 22, 220, 236, 44, 38,
+			249, 236, 236, 19, 2, 243, 0, 19, 255, 29, 254, 248, 17, 45, 239, 247, 60, 21, 216, 231, 60, 12, 222, 40, 37, 215, 236, 237, 9, 34,
+			245, 220, 4, 205, 227, 0, 226, 209, 184, 204, 193, 137, 190, 251, 22, 29, 18, 28, 36, 86, 82, 53, 51, 56, 60, 18, 38, 16, 0, 86,
+			69, 246, 207, 20, 57, 233, 202, 1, 36, 253, 208, 196, 245, 12, 232, 193, 0, 28, 214, 187, 0, 252, 196, 211, 249, 252, 243, 240, 230, 43,
+			77, 2, 213, 244, 68, 8, 227, 243, 6, 48, 233, 211, 253, 65, 27, 212, 249, 58, 32, 224, 236, 41, 47, 29, 10, 253, 16, 20, 238, 248,
+			0, 19, 5, 239, 6, 243, 242, 20, 221, 232, 14, 28, 12, 206, 247, 252, 210, 247, 241, 0, 26, 252, 233, 24, 9, 14, 15, 8, 7, 4,
+			41, 7, 193, 12, 77, 30, 21, 228, 241, 13, 237, 217, 254, 5, 227, 224, 210, 9, 20, 226, 214, 224, 30, 11, 227, 234, 6, 18, 255, 8,
+			15, 21, 243, 19, 43, 23, 26, 240, 46, 27, 0, 30, 0, 7, 14, 253, 234, 5, 27, 242, 242, 6, 8, 246, 228, 252, 2, 15, 1, 245,
+			239, 13, 254, 240, 252, 0, 2, 236, 235, 249, 243, 0, 231, 227, 14, 25, 230, 238, 11, 244, 253, 15, 19, 16, 18, 5, 8, 240, 249, 14,
+			225, 7, 41, 250, 231, 9, 25, 7, 7, 12, 6, 20, 0, 232, 0, 3, 255, 3, 19, 21, 0, 244, 255, 27, 238, 231, 8, 0, 250, 248,
+			240, 4, 18, 3, 5, 14, 24, 248, 247, 7, 238, 234, 10, 8, 1, 12, 243, 247, 247, 233, 8, 8, 1, 255, 249, 248, 241, 252, 16, 245,
+			245, 7, 20, 240, 245, 18, 10, 254, 7, 6, 0, 0, 249, 236, 13, 21, 239, 248, 9, 15, 6, 0, 10, 4, 10, 12, 0, 246, 13, 248,
+			239, 253, 4, 2, 246, 16, 253, 238, 2, 11, 252, 251, 17, 16, 253, 11, 7, 245, 0, 2, 6, 254, 251, 236, 0, 6, 239, 249, 0, 249,
+			1, 8, 242, 246, 7, 254, 1, 7, 252, 8, 13, 252, 1, 7, 21, 0, 171, 8, 22, 0, 3, 245, 0, 3, 242, 235, 252, 14, 28, 16,
+			241, 248, 2, 4, 237, 225, 245, 4, 0, 242, 9, 34, 7, 247, 5, 28, 5, 2, 239, 24, 30, 4, 241, 238, 7, 241, 230, 247, 242, 223,
+			12, 10, 2, 14, 249, 252, 36, 35, 244, 241, 18, 16, 8, 230, 248, 17, 22, 2, 221, 238, 10, 240, 218, 234, 36, 56, 244, 217, 249, 33,
+			28, 232, 253, 35, 29, 3, 240, 223, 254, 8, 9, 253, 229, 251, 6, 9, 5, 4, 9, 5, 18, 242, 223, 2, 230, 241, 14, 10, 34, 35,
+			245, 0, 9, 14, 0, 224, 229, 6, 4, 6, 248, 243, 14, 15, 245, 204, 23, 38, 4, 255, 3, 18, 24, 235, 255, 14, 239, 3, 208, 210,
+			4, 37, 31, 10, 241, 8, 12, 11, 18, 244, 253, 240, 254, 251, 237, 9, 30, 11, 228, 245, 9, 16, 230, 225, 244, 5, 12, 32, 51, 0,
+			227, 15, 30, 4, 247, 247, 242, 230, 249, 19, 3, 248, 252, 220, 222, 54, 8, 218, 248, 28, 45, 31, 244, 247, 37, 220, 2, 15, 244, 244,
+			17, 13, 243, 232, 8, 39, 177, 206, 76, 250, 211, 249, 16, 39, 18, 251, 0, 0, 42, 34, 220, 244, 6, 232, 238, 1, 23, 54, 237, 190,
+			13, 20, 226, 242, 2, 13, 227, 246, 42, 16, 9, 0, 253, 23, 24, 232, 249, 246, 235, 14, 20, 247, 239, 47, 2, 218, 251, 17, 13, 244,
+			233, 229, 6, 34, 250, 236, 255, 18, 245, 7, 6, 0, 10, 32, 5, 237, 6, 1, 5, 18, 16, 246, 221, 239, 4, 244, 241, 249, 13, 235,
+			218, 18, 33, 3, 42, 20, 11, 13, 232, 239, 5, 30, 255, 229, 1, 25, 21, 200, 237, 25, 225, 208, 245, 7, 9, 40, 23, 3, 27, 44,
+			231, 236, 25, 245, 231, 236, 246, 244, 35, 16, 217, 13, 18, 255, 6, 25, 200, 237, 44, 21, 220, 250, 37, 234, 16, 23, 231, 229, 238, 6,
+			233, 44, 32, 244, 254, 247, 40, 38, 244, 209, 247, 3, 243, 226, 254, 41, 26, 222, 254, 21, 34, 0, 185, 232, 32, 40, 12, 206, 215, 72,
+			33, 222, 6, 19, 239, 254, 1, 242, 1, 5, 29, 14, 220, 248, 35, 233, 252, 210, 239, 21, 234, 28, 37, 230, 34, 23, 242, 38, 0, 5,
+			248, 194, 234, 24, 48, 253, 192, 1, 25, 255, 240, 227, 13, 60, 244, 198, 38, 47, 38, 241, 202, 19, 44, 227, 207, 232, 42, 15, 207, 2,
+			20, 17, 252, 247, 242, 21, 47, 7, 247, 241, 232, 12, 64, 238, 156, 8, 35, 206, 53, 14, 167, 61, 65, 188, 240, 38, 67, 233, 208, 28,
+			2, 19, 13, 207, 1, 253, 208, 12, 243, 220, 81, 37, 227, 10, 232, 17, 25, 12, 2, 175, 19, 66, 200, 207, 74, 23, 222, 27, 210, 226,
+			40, 226, 243, 87, 26, 203, 243, 21, 41, 10, 202, 244, 0, 3, 236, 247, 251, 253, 34, 16, 254, 7, 8, 229, 236, 30, 74, 7, 177, 231,
+			49, 233, 224, 36, 255, 228, 22, 251, 6, 54, 178, 16, 45, 213, 6, 38, 212, 230, 71, 26, 3, 215, 232, 11, 209, 219, 86, 50, 193, 219,
+			65, 77, 218, 168, 10, 44, 15, 235, 0, 239, 232, 68, 242, 197, 35, 30, 189, 4, 49, 34, 214, 205, 33, 71, 10, 181, 223, 47, 28, 249,
+			23, 10, 180, 2, 28, 235, 44, 11, 223, 222, 250, 32, 20, 212, 213, 47, 59, 254, 248, 249, 15, 221, 6, 46, 244, 236, 34, 236, 215, 36,
+			239, 215, 20, 57, 211, 231, 43, 226, 17, 55, 3, 213, 254, 20, 203, 32, 38, 182, 216, 103, 54, 197, 18, 18, 201, 243, 60, 208, 240, 1,
+			206, 27, 61, 47, 224, 196, 229, 40, 81, 242, 190, 238, 15, 51, 25, 229, 248, 216, 40, 56, 175, 240, 0, 4, 250, 231, 81, 60, 166, 182,
+			75, 68, 248, 176, 4, 52, 237, 251, 245, 34, 29, 206, 220, 4, 77, 205, 220, 1, 58, 23, 200, 238, 56, 70, 198, 208, 48, 35, 187, 197,
+			47, 50, 225, 183, 43, 92, 223, 232, 17, 24, 232, 220, 235, 24, 40, 226, 5, 255, 49, 241, 210, 24, 21, 237, 1, 251, 215, 46, 32, 217,
+			244, 25, 18, 236, 20, 221, 231, 17, 38, 0, 203, 29, 29, 250, 229, 18, 26, 254, 33, 203, 249, 12, 254, 238, 251, 39, 243, 232, 246, 19,
+			7, 255, 28, 214, 62, 27, 169, 2, 19, 24, 37, 193, 224, 87, 246, 247, 204, 210, 94, 254, 200, 246, 17, 58, 248, 239, 8, 27, 23, 178,
+			254, 71, 255, 207, 220, 36, 58, 239, 146, 252, 123, 3, 192, 252, 252, 53, 8, 196, 38, 27, 240, 16, 231, 213, 72, 34, 195, 234, 236, 11,
+			43, 224, 1, 10, 228, 50, 20, 174, 251, 63, 255, 253, 1, 51, 1, 229, 209, 251, 55, 15, 195, 228, 45, 37, 224, 176, 27, 78, 224, 232,
+			11, 37, 12, 1, 225, 237, 255, 46, 35, 216, 246, 24, 1, 211, 249, 241, 20, 46, 233, 238, 19, 26, 245, 227, 248, 8, 24, 227, 5, 55,
+			202, 15, 17, 219, 23, 20, 12, 211, 222, 38, 70, 11, 207, 205, 41, 40, 219, 238, 232, 255, 31, 244, 196, 46, 93, 220, 205, 236, 75, 56,
+			173, 217, 56, 48, 236, 189, 244, 60, 18, 249, 0, 209, 1, 40, 229, 240, 14, 234, 233, 33, 14, 1, 2, 16, 255, 1, 31, 245, 7, 228,
+			245, 41, 24, 242, 224, 233, 228, 16, 41, 247, 181, 21, 26, 10, 7, 230, 72, 41, 204, 237, 50, 248, 249, 176, 189, 117, 70, 167, 180, 59,
+			110, 240, 200, 235, 19, 28, 233, 207, 247, 70, 40, 195, 197, 76, 79, 188, 203, 250, 46, 9, 194, 4, 37, 64, 249, 211, 34, 0, 245, 251,
+			212, 18, 15, 213, 13, 9, 228, 17, 75, 246, 186, 21, 66, 238, 216, 203, 30, 94, 220, 210, 33, 6, 14, 18, 173, 27, 65, 141, 249, 74,
+			13, 22, 219, 240, 28, 1, 21, 244, 195, 29, 7, 211, 38, 255, 240, 62, 240, 243, 79, 232, 205, 251, 247, 23, 241, 31, 15, 205, 245, 255,
+			34, 5, 209, 254, 12, 14, 11, 236, 19, 20, 9, 20, 231, 7, 55, 216, 215, 3, 34, 232, 195, 28, 246, 250, 54, 226, 249, 52, 226, 255,
+			255, 236, 30, 2, 41, 40, 172, 27, 63, 214, 161, 14, 99, 234, 203, 187, 48, 91, 206, 176, 27, 89, 23, 211, 209, 28, 25, 215, 232, 67,
+			59, 250, 170, 8, 94, 216, 172, 239, 47, 50, 239, 230, 227, 14, 37, 194, 1, 61, 42, 238, 188, 10, 36, 249, 3, 225, 45, 53, 202, 196,
+			18, 101, 247, 156, 231, 46, 50, 232, 204, 15, 27, 42, 232, 176, 32, 70, 240, 193, 5, 50, 70, 236, 184, 240, 27, 23, 2, 225, 7, 15,
+			13, 28, 226, 216, 0, 35, 227, 245, 5, 20, 233, 236, 32, 9, 18, 32, 229, 250, 81, 247, 162, 2, 58, 254, 210, 230, 22, 255, 244, 249,
+			243, 49, 27, 204, 3, 59, 22, 193, 211, 67, 254, 17, 1, 202, 16, 61, 215, 227, 51, 0, 223, 203, 40, 52, 169, 49, 29, 192, 55, 16,
+			198, 252, 53, 30, 207, 196, 34, 26, 28, 19, 211, 6, 43, 226, 220, 251, 24, 2, 238, 247, 22, 249, 7, 25, 209, 46, 20, 196, 27, 26,
+			185, 8, 30, 235, 3, 42, 25, 217, 2, 4, 5, 3, 252, 226, 5, 55, 222, 193, 50, 41, 4, 211, 208, 24, 74, 247, 135, 16, 112, 255,
+			175, 9, 75, 43, 192, 198, 101, 31, 158, 227, 39, 43, 225, 237, 249, 26, 37, 225, 166, 23, 66, 216, 220, 30, 32, 0, 2, 48, 248, 13,
+			40, 199, 202, 71, 246, 198, 24, 19, 235, 227, 10, 34, 25, 219, 210, 208, 63, 35, 228, 21, 245, 16, 48, 26, 207, 7, 34, 212, 0, 20,
+			236, 2, 10, 218, 233, 27, 3, 223, 242, 34, 19, 14, 240, 230, 20, 24, 4, 4, 14, 245, 250, 15, 2, 233, 2, 25, 208, 253, 62, 224,
+			232, 11, 221, 35, 51, 197, 234, 51, 214, 0, 245, 43, 65, 154, 21, 68, 221, 23, 251, 237, 26, 237, 240, 39, 209, 221, 13, 242, 67, 29,
+			201, 225, 30, 37, 233, 223, 250, 79, 242, 192, 33, 8, 24, 7, 215, 255, 57, 242, 213, 20, 241, 25, 247, 219, 42, 0, 254, 233, 214, 30,
+			43, 248, 218, 42, 19, 218, 249, 33, 22, 0, 210, 27, 16, 213, 30, 5, 208, 11, 250, 14, 67, 223, 194, 42, 255, 220, 29, 226, 1, 76,
+			255, 178, 32, 74, 245, 207, 219, 17, 83, 238, 176, 246, 47, 42, 230, 194, 5, 58, 29, 213, 190, 39, 107, 231, 131, 39, 113, 240, 141, 2,
+			84, 15, 223, 193, 32, 59, 245, 218, 250, 41, 33, 232, 181, 48, 24, 217, 228, 237, 74, 48, 174, 245, 52, 0, 247, 233, 249, 73, 246, 203,
+			38, 7, 249, 21, 249, 211, 1, 44, 230, 227, 10, 254, 4, 254, 26, 245, 228, 9, 43, 4, 217, 3, 64, 251, 234, 22, 254, 4, 236, 237,
+			20, 249, 212, 19, 0, 226, 55, 236, 196, 53, 44, 209, 248, 29, 9, 24, 252, 9, 19, 0, 236, 231, 244, 33, 1, 221, 25, 240, 233, 17,
+			246, 236, 3, 25, 15, 4, 237, 2, 38, 254, 249, 12, 255, 6, 231, 250, 37, 242, 253, 12, 209, 237, 42, 49, 204, 224, 30, 3, 246, 255,
+			30, 233, 239, 17, 17, 17, 0, 245, 9, 12, 3, 230, 2, 251, 3, 8, 221, 4, 55, 202, 0, 23, 230, 59, 201, 206, 97, 33, 198, 227,
+			18, 45, 1, 213, 17, 38, 228, 202, 21, 42, 232, 241, 8, 5, 28, 20, 213, 229, 40, 17, 228, 251, 12, 231, 19, 11, 236, 6, 35, 10,
+			198, 251, 47, 247, 232, 23, 4, 238, 27, 2, 225, 10, 20, 223, 250, 60, 239, 209, 12, 3, 230, 61, 30, 157, 18, 58, 251, 244, 218, 32,
+			28, 211, 16, 31, 235, 20, 6, 209, 7, 239, 0, 34, 221, 238, 51, 4, 225, 23, 7, 248, 7, 3, 244, 15, 13, 248, 12, 0, 22, 238,
+			215, 231, 21, 14, 232, 227, 33, 53, 197, 248, 59, 241, 241, 40, 10, 247, 0, 26, 13, 186, 13, 30, 189, 21, 9, 197, 55, 31, 237, 237,
+			225, 49, 16, 213, 31, 18, 240, 19, 236, 253, 59, 252, 181, 243, 71, 14, 187, 237, 40, 28, 248, 236, 2, 6, 248, 12, 6, 230, 16, 10,
+			228, 4, 18, 251, 7, 32, 248, 202, 21, 41, 1, 234, 244, 22, 235, 249, 21, 246, 10, 3, 239, 239, 23, 32, 193, 212, 70, 42, 222, 253,
+			17, 23, 237, 225, 18, 24, 24, 204, 227, 62, 20, 197, 234, 25, 24, 12, 224, 250, 18, 249, 8, 231, 255, 52, 240, 225, 9, 21, 24, 235,
+			220, 31, 44, 212, 227, 37, 24, 243, 0, 2, 226, 245, 4, 238, 25, 38, 233, 227, 17, 254, 16, 13, 226, 12, 29, 243, 221, 36, 47, 208,
+			233, 17, 18, 0, 234, 250, 1, 18, 3, 221, 0, 25, 2, 230, 252, 19, 24, 10, 234, 2, 46, 236, 218, 9, 232, 54, 23, 179, 4, 48,
+			245, 253, 232, 0, 44, 245, 224, 7, 253, 15, 5, 207, 28, 73, 226, 239, 245, 6, 55, 224, 205, 33, 9, 10, 226, 232, 36, 234, 20, 32,
+			221, 245, 22, 236, 250, 41, 248, 230, 32, 20, 227, 231, 16, 46, 238, 215, 21, 10, 10, 0, 228, 230, 50, 10, 218, 5, 0, 254, 11, 0,
+			242, 21, 26, 215, 222, 84, 47, 185, 232, 28, 15, 246, 243, 252, 217, 14, 25, 244, 236, 29, 39, 192, 8, 59, 247, 243, 246, 20, 6, 228,
+			250, 39, 227, 250, 26, 246, 21, 226, 224, 22, 24, 3, 226, 231, 50, 21, 217, 252, 32, 16, 243, 228, 23, 56, 201, 201, 36, 14, 23, 248,
+			213, 31, 14, 243, 3, 218, 12, 41, 238, 224, 22, 12, 10, 243, 233, 36, 13, 244, 252, 237, 26, 27, 219, 240, 25, 9, 248, 235, 247, 17,
+			12, 238, 246, 27, 10, 242, 246, 6, 22, 239, 6, 28, 236, 234, 1, 36, 11, 219, 248, 26, 245, 2, 4, 225, 19, 6, 252, 243, 0, 9,
+			33, 233, 217, 76, 11, 201, 255, 39, 240, 245, 245, 22, 10, 228, 16, 251, 253, 27, 231, 219, 54, 0, 229, 7, 18, 11, 233, 249, 14, 20,
+			247, 230, 18, 6, 10, 245, 220, 43, 0, 229, 5, 16, 18, 244, 240, 240, 21, 27, 222, 254, 14, 244, 10, 17, 242, 253, 17, 3, 0, 239,
+			1, 9, 246, 236, 16, 15, 253, 0, 233, 30, 19, 235, 246, 248, 28, 3, 220, 7, 6, 26, 0, 211, 21, 32, 249, 236, 247, 22, 14, 241,
+			244, 251, 22, 250, 244, 14, 252, 247, 5, 1, 14, 1, 238, 24, 4, 236, 5, 10, 243, 0, 153, 7, 51, 0, 12, 9, 4, 3, 255, 18,
+			20, 238, 7, 32, 4, 241, 4, 14, 2, 0, 26, 2, 233, 1, 17, 25, 12, 237, 252, 34, 14, 245, 252, 5, 24, 12, 3, 237, 251, 36,
+			2, 233, 0, 24, 13, 237, 246, 21, 9, 7, 3, 249, 17, 13, 251, 9, 9, 10, 11, 241, 12, 33, 235, 234, 33, 26, 234, 253, 23, 6,
+			254, 2, 11, 6, 6, 16, 13, 249, 12, 22, 0, 8, 9, 249, 1, 11, 4, 255, 12, 11, 2, 255, 5, 32, 11, 244, 16, 29, 4, 244,
+			11, 23, 244, 0, 36, 3, 247, 1, 251, 3, 40, 16, 228, 0, 28, 16, 251, 251, 13, 22, 9, 0, 238, 5, 35, 2, 253, 4, 2, 11,
+			8, 236, 245, 23, 27, 251, 246, 254, 10, 13, 7, 234, 10, 55, 243, 220, 4, 13, 21, 20, 232, 233, 24, 22, 252, 242, 12, 24, 250, 245,
+			255, 8, 12, 8, 248, 6, 25, 13, 233, 251, 35, 27, 239, 245, 15, 26, 0, 247, 13, 12, 3, 3, 250, 253, 7, 15, 3, 254, 13, 250,
+			235, 14, 14, 0, 25, 230, 252, 45, 243, 0, 29, 3, 0, 255, 12, 5, 252, 251, 28, 22, 235, 4, 21, 250, 10, 6, 253, 20, 19, 254,
+			253, 24, 22, 251, 0, 11, 7, 1, 0, 6, 250, 0, 33, 3, 236, 253, 16, 16, 252, 249, 3, 7, 21, 8, 242, 14, 25, 239, 14, 13,
+			232, 5, 17, 20, 8, 241, 245, 28, 8, 246, 17, 5, 3, 5, 246, 252, 14, 20, 10, 221, 16, 57, 238, 239, 3, 12, 26, 240, 253, 1,
+			248, 31, 4, 229, 25, 17, 249, 252, 21, 22, 241, 253, 18, 3, 255, 0, 251, 27, 6, 217, 19, 7, 244, 22, 245, 247, 12, 8, 254, 19,
+			6, 246, 10, 11, 8, 0, 234, 4, 27, 2, 254, 244, 13, 48, 1, 233, 3, 25, 5, 249, 1, 35, 6, 1, 7, 237, 24, 39, 249, 231,
+			22, 27, 242, 247, 17, 7, 11, 31, 234, 251, 22, 9, 20, 244, 250, 32, 247, 5, 21, 0, 21, 247, 246, 25, 5, 2, 25, 11, 243, 20,
+			13, 246, 23, 253, 6, 29, 253, 4, 17, 1, 10, 253, 250, 19, 5, 255, 0, 250, 21, 35, 233, 243, 32, 37, 254, 235, 13, 19, 0, 0,
+			255, 19, 255, 247, 22, 4, 250, 13, 249, 245, 31, 2, 250, 2, 254, 0, 38, 29, 231, 248, 32, 13, 241, 6, 6, 238, 20, 229, 227, 58,
+			16, 212, 253, 27, 12, 230, 253, 34, 20, 1, 240, 246, 7, 26, 9, 244, 252, 253, 249, 6, 4, 10, 0, 13, 15, 5, 254, 248, 30, 48,
+			225, 220, 42, 13, 252, 237, 215, 31, 68, 245, 218, 13, 55, 23, 197, 244, 52, 41, 253, 232, 2, 28, 17, 242, 0, 17, 255, 0, 245, 10,
+			43, 245, 220, 21, 59, 237, 223, 31, 38, 4, 244, 232, 19, 33, 2, 248, 243, 28, 20, 253, 252, 242, 37, 19, 214, 13, 24, 0, 12, 7,
+			239, 14, 27, 229, 250, 24, 7, 1, 241, 255, 33, 5, 233, 247, 40, 36, 245, 236, 2, 36, 17, 240, 251, 251, 14, 30, 240, 228, 21, 15,
+			8, 8, 228, 5, 43, 248, 253, 22, 19, 249, 238, 7, 28, 18, 222, 252, 21, 15, 4, 241, 238, 22, 19, 244, 248, 11, 3, 238, 43, 29,
+			236, 0, 17, 43, 7, 227, 18, 16, 6, 21, 227, 231, 31, 25, 244, 245, 244, 24, 21, 235, 0, 29, 2, 3, 18, 236, 252, 40, 0, 241,
+			9, 255, 31, 11, 214, 6, 27, 4, 248, 243, 246, 39, 9, 229, 8, 21, 9, 14, 244, 232, 30, 32, 248, 239, 3, 13, 239, 11, 16, 233,
+			11, 35, 250, 244, 24, 18, 235, 8, 30, 10, 241, 250, 32, 1, 255, 20, 244, 249, 28, 19, 247, 0, 10, 3, 18, 22, 218, 7, 42, 249,
+			5, 13, 244, 0, 247, 5, 31, 255, 251, 3, 5, 4, 10, 0, 3, 31, 242, 241, 13, 28, 6, 236, 21, 45, 250, 235, 12, 21, 15, 246,
+			6, 24, 251, 244, 254, 23, 13, 226, 254, 41, 239, 0, 26, 235, 7, 29, 255, 233, 229, 49, 22, 218, 10, 10, 2, 25, 254, 228, 14, 25,
+			243, 250, 6, 1, 9, 251, 250, 32, 255, 247, 31, 245, 242, 20, 10, 246, 30, 27, 222, 236, 46, 24, 209, 4, 30, 249, 0, 15, 236, 244,
+			36, 29, 240, 254, 35, 3, 241, 10, 9, 0, 222, 8, 41, 251, 211, 7, 43, 249, 252, 240, 245, 46, 6, 247, 5, 250, 43, 250, 213, 41,
+			28, 233, 6, 12, 38, 4, 211, 22, 51, 245, 233, 248, 29, 41, 249, 228, 0, 59, 36, 217, 239, 31, 20, 27, 222, 215, 62, 2, 211, 250,
+			37, 21, 243, 238, 2, 26, 5, 3, 0, 254, 3, 255, 5, 251, 15, 243, 254, 34, 13, 246, 255, 19, 24, 249, 230, 3, 35, 14, 244, 254,
+			8, 34, 13, 9, 251, 218, 18, 64, 222, 195, 14, 26, 24, 232, 235, 14, 11, 8, 236, 234, 56, 20, 204, 21, 36, 249, 8, 249, 249, 25,
+			237, 255, 18, 240, 14, 12, 230, 31, 41, 252, 227, 13, 29, 250, 229, 12, 37, 1, 235, 18, 245, 235, 67, 9, 227, 5, 11, 243, 9, 15,
+			246, 9, 21, 10, 248, 252, 251, 41, 37, 241, 248, 254, 11, 37, 18, 239, 5, 15, 20, 10, 250, 10, 6, 250, 27, 2, 237, 22, 0, 0,
+			26, 243, 1, 33, 231, 9, 46, 235, 245, 9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232, 20, 58, 246, 195, 11, 40, 18,
+			2, 200, 0, 60, 42, 225, 219, 32, 32, 4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230, 5, 26, 236, 255, 19, 8, 10,
+			21, 242, 238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250,
+			17, 31, 237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41,
+			222, 179, 29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60,
+			21, 231, 223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20,
+			17, 255, 249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13,
+			250, 243, 235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0,
+			48, 2, 226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37,
+			1, 239, 244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236,
+			32, 21, 237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243,
+			6, 2, 255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237,
+			51, 19, 232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1,
+			221, 31, 13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182,
+			1, 59, 19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3,
+			6, 30, 240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11,
+			20, 4, 254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234,
+			51, 249, 218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221,
+			212, 253, 34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173,
+			65, 92, 206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227,
+			0, 70, 241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247,
+			42, 228, 208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57,
+			5, 221, 250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228,
+			58, 252, 236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32,
+			252, 232, 42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233,
+			233, 48, 3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223,
+			11, 33, 246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247,
+			237, 7, 17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12,
+			1, 17, 6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38,
+			239, 12, 56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21, 222, 219, 35, 42, 215, 255, 7, 6, 40, 0, 188, 15, 76, 245,
+			193, 29, 25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13, 11, 247, 16, 19, 2, 239, 204, 71, 69, 188, 229, 30, 35, 0,
+			2, 14, 236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23, 237, 4, 46, 204, 233, 66, 250, 217, 22, 41, 2, 225, 27, 47,
+			234, 252, 10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18, 53, 242, 10, 6, 234, 30, 19, 235, 9, 42, 242, 224, 32, 0,
+			243, 16, 251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23, 249, 239, 13, 0, 0, 0, 172, 10, 36, 0, 2, 26, 14, 253,
+			249, 242, 249, 12, 10, 245, 245, 5, 17, 11, 247, 248, 3, 4, 242, 243, 251, 13, 38, 2, 239, 229, 238, 18, 32, 29, 251, 215, 251, 10,
+			254, 22, 5, 236, 0, 253, 249, 4, 245, 17, 37, 235, 225, 25, 14, 241, 235, 238, 21, 50, 5, 223, 245, 255, 4, 21, 251, 250, 15, 8,
+			224, 230, 4, 10, 6, 25, 39, 242, 232, 242, 238, 21, 16, 0, 249, 237, 8, 23, 246, 248, 2, 6, 15, 248, 241, 248, 246, 251, 24, 41,
+			19, 244, 218, 239, 0, 2, 23, 20, 229, 0, 16, 249, 252, 251, 243, 248, 2, 1, 17, 32, 19, 246, 233, 244, 16, 231, 228, 23, 35, 20,
+			0, 20, 236, 198, 228, 14, 29, 248, 3, 25, 26, 11, 227, 236, 252, 246, 5, 19, 20, 252, 238, 24, 15, 247, 249, 243, 236, 249, 14, 252,
+			0, 23, 15, 248, 228, 10, 11, 242, 244, 9, 42, 21, 247, 244, 220, 240, 21, 0, 254, 15, 14, 15, 234, 224, 255, 249, 249, 16, 32, 43,
+			13, 223, 209, 247, 27, 0, 248, 17, 23, 230, 215, 19, 42, 7, 253, 240, 228, 6, 255, 239, 29, 31, 27, 36, 223, 163, 202, 26, 61, 27,
+			12, 10, 4, 252, 222, 193, 239, 45, 44, 31, 40, 247, 167, 198, 37, 52, 11, 217, 226, 43, 54, 247, 244, 233, 231, 235, 228, 25, 94, 53,
+			235, 211, 190, 221, 25, 43, 37, 12, 245, 18, 16, 205, 169, 212, 34, 75, 50, 27, 0, 213, 227, 2, 255, 248, 0, 5, 6, 11, 48, 25,
+			221, 218, 225, 242, 7, 8, 9, 36, 25, 249, 230, 224, 4, 5, 4, 8, 42, 9, 216, 243, 25, 29, 239, 241, 17, 237, 208, 240, 19, 48,
+			30, 242, 252, 7, 251, 245, 217, 201, 23, 75, 51, 20, 238, 222, 229, 249, 240, 242, 24, 28, 3, 2, 250, 251, 16, 248, 236, 237, 1, 46,
+			22, 246, 205, 235, 25, 24, 30, 254, 16, 14, 209, 230, 12, 235, 226, 28, 40, 7, 0, 19, 4, 225, 223, 5, 16, 251, 10, 9, 4, 4,
+			252, 18, 252, 235, 226, 238, 14, 53, 51, 249, 205, 211, 250, 13, 5, 15, 42, 31, 245, 215, 219, 239, 14, 42, 9, 253, 23, 17, 224, 212,
+			246, 3, 244, 20, 46, 4, 227, 22, 41, 230, 216, 253, 241, 255, 35, 11, 1, 248, 241, 9, 244, 248, 58, 15, 206, 221, 11, 58, 253, 218,
+			0, 0, 238, 250, 69, 21, 189, 239, 53, 31, 242, 242, 236, 199, 219, 40, 71, 35, 20, 8, 189, 203, 19, 255, 243, 1, 21, 51, 43, 30,
+			180, 141, 25, 52, 245, 4, 33, 29, 0, 233, 234, 239, 238, 36, 57, 222, 223, 44, 14, 218, 222, 252, 5, 30, 34, 14, 10, 240, 224, 222,
+			229, 12, 36, 20, 11, 16, 247, 222, 252, 26, 6, 216, 214, 49, 76, 18, 228, 183, 215, 33, 38, 237, 29, 77, 232, 131, 206, 37, 69, 55,
+			38, 242, 198, 227, 251, 28, 15, 217, 222, 26, 27, 12, 47, 253, 196, 240, 29, 254, 224, 1, 37, 1, 245, 55, 7, 193, 204, 250, 40, 76,
+			26, 179, 232, 32, 240, 244, 36, 37, 239, 225, 242, 7, 39, 252, 200, 221, 37, 51, 7, 247, 253, 7, 16, 1, 230, 214, 234, 254, 56, 71,
+			17, 223, 200, 215, 246, 54, 47, 232, 218, 27, 39, 244, 197, 231, 43, 49, 0, 232, 2, 1, 243, 251, 17, 29, 2, 219, 208, 1, 55, 38,
+			223, 170, 254, 106, 48, 226, 246, 252, 213, 218, 6, 43, 49, 0, 198, 246, 25, 8, 10, 252, 234, 249, 24, 33, 11, 192, 196, 54, 52, 10,
+			241, 196, 237, 9, 26, 55, 14, 2, 10, 212, 209, 24, 18, 238, 247, 0, 29, 16, 241, 255, 0, 239, 241, 251, 0, 248, 40, 71, 4, 241,
+			8, 214, 166, 242, 68, 43, 255, 242, 0, 8, 249, 230, 231, 3, 41, 66, 10, 218, 210, 230, 244, 253, 60, 68, 237, 208, 249, 2, 243, 251,
+			255, 28, 37, 254, 226, 5, 17, 220, 218, 14, 29, 13, 15, 12, 241, 246, 12, 243, 227, 6, 14, 248, 36, 15, 217, 248, 250, 254, 34, 39,
+			245, 223, 224, 216, 8, 87, 68, 234, 233, 227, 222, 227, 244, 239, 9, 94, 46, 27, 18, 171, 146, 239, 30, 26, 60, 80, 5, 182, 198, 244,
+			42, 24, 219, 249, 45, 42, 224, 218, 18, 253, 227, 251, 17, 21, 244, 238, 36, 25, 241, 10, 28, 237, 211, 206, 237, 61, 79, 255, 230, 20,
+			235, 201, 232, 25, 49, 253, 222, 17, 0, 218, 20, 39, 12, 251, 227, 18, 23, 216, 219, 12, 11, 67, 18, 211, 4, 234, 234, 11, 9, 248,
+			241, 0, 19, 15, 0, 10, 8, 243, 240, 249, 29, 5, 242, 8, 252, 240, 23, 7, 219, 254, 34, 254, 242, 31, 14, 221, 233, 230, 235, 25,
+			61, 37, 250, 12, 245, 196, 221, 0, 35, 38, 3, 243, 220, 254, 56, 30, 217, 225, 2, 5, 230, 238, 66, 41, 220, 7, 236, 202, 28, 43,
+			239, 16, 23, 224, 227, 38, 26, 202, 217, 22, 34, 23, 254, 250, 255, 229, 241, 31, 20, 250, 12, 251, 228, 241, 235, 16, 52, 252, 254, 2,
+			8, 11, 218, 199, 25, 79, 0, 192, 251, 34, 13, 0, 3, 13, 241, 221, 215, 12, 39, 31, 63, 246, 171, 222, 31, 21, 19, 236, 241, 33,
+			0, 217, 37, 5, 209, 247, 18, 75, 29, 200, 189, 18, 23, 204, 8, 76, 54, 227, 203, 14, 7, 189, 244, 58, 0, 3, 67, 32, 196, 190,
+			202, 223, 37, 114, 93, 19, 173, 159, 193, 3, 78, 75, 10, 223, 254, 237, 231, 237, 6, 35, 251, 2, 43, 251, 214, 234, 20, 27, 11, 252,
+			221, 246, 252, 250, 42, 64, 0, 205, 239, 248, 237, 33, 27, 216, 235, 18, 10, 0, 32, 10, 228, 7, 16, 250, 226, 244, 8, 236, 0, 44,
+			13, 1, 54, 21, 170, 178, 226, 19, 73, 73, 28, 211, 209, 253, 11, 227, 189, 25, 95, 39, 248, 245, 218, 223, 244, 252, 10, 42, 38, 14,
+			246, 190, 215, 6, 12, 53, 73, 8, 207, 212, 229, 223, 230, 63, 89, 22, 231, 229, 211, 197, 254, 42, 63, 34, 8, 0, 223, 212, 228, 245,
+			21, 49, 51, 240, 196, 239, 15, 20, 247, 2, 7, 245, 240, 18, 32, 0, 245, 5, 5, 224, 237, 26, 7, 245, 16, 25, 0, 222, 233, 13,
+			33, 244, 244, 1, 6, 248, 239, 23, 24, 239, 14, 24, 227, 225, 10, 250, 251, 32, 50, 244, 217, 247, 239, 238, 2, 43, 50, 20, 227, 207,
+			193, 252, 26, 36, 37, 38, 24, 243, 197, 208, 246, 232, 21, 94, 64, 211, 187, 0, 20, 245, 209, 24, 69, 248, 238, 242, 238, 10, 241, 255,
+			37, 55, 251, 181, 244, 11, 32, 39, 243, 226, 233, 20, 9, 223, 254, 29, 5, 253, 12, 20, 11, 223, 197, 244, 22, 64, 66, 210, 187, 1,
+			27, 21, 0, 254, 252, 248, 248, 19, 250, 185, 5, 106, 55, 207, 205, 237, 229, 2, 32, 9, 5, 35, 32, 232, 218, 23, 230, 182, 0, 67,
+			73, 19, 233, 212, 202, 20, 27, 225, 249, 38, 24, 232, 252, 54, 23, 216, 208, 234, 255, 10, 38, 6, 239, 38, 21, 222, 223, 2, 6, 244,
+			16, 61, 3, 198, 242, 23, 255, 221, 4, 52, 10, 218, 218, 31, 60, 255, 231, 226, 235, 16, 255, 237, 38, 65, 0, 204, 233, 255, 6, 19,
+			19, 253, 252, 9, 211, 211, 1, 27, 54, 50, 1, 199, 215, 14, 13, 252, 7, 24, 27, 229, 214, 27, 21, 232, 239, 13, 11, 245, 250, 14,
+			23, 5, 5, 249, 220, 224, 255, 42, 44, 0, 242, 245, 232, 251, 25, 23, 243, 209, 237, 31, 59, 42, 254, 222, 205, 219, 254, 25, 44, 10,
+			230, 13, 30, 214, 214, 26, 35, 15, 241, 236, 250, 25, 13, 224, 249, 31, 13, 6, 225, 223, 27, 31, 225, 249, 42, 234, 255, 1, 233, 0,
+			20, 23, 11, 248, 227, 236, 4, 26, 23, 240, 253, 20, 251, 248, 234, 236, 41, 60, 242, 220, 232, 235, 249, 31, 30, 247, 252, 20, 235, 211,
+			17, 48, 8, 231, 31, 16, 225, 238, 250, 3, 229, 12, 75, 6, 199, 227, 7, 11, 25, 17, 231, 212, 247, 70, 22, 226, 18, 6, 201, 228,
+			42, 55, 243, 210, 10, 41, 242, 235, 16, 0, 220, 215, 16, 69, 24, 251, 246, 235, 220, 252, 27, 15, 243, 2, 29, 25, 254, 219, 221, 247,
+			11, 6, 5, 53, 45, 229, 180, 232, 56, 10, 218, 1, 30, 8, 242, 248, 35, 12, 204, 203, 15, 61, 52, 4, 216, 240, 12, 246, 201, 3,
+			62, 5, 232, 18, 38, 241, 187, 228, 21, 21, 46, 33, 217, 227, 38, 2, 215, 255, 11, 236, 0, 45, 44, 240, 226, 234, 241, 243, 253, 56,
+			27, 223, 4, 255, 249, 3, 255, 255, 2, 235, 9, 48, 245, 222, 235, 247, 41, 57, 17, 228, 198, 231, 255, 245, 10, 46, 62, 1, 242, 238,
+			211, 224, 0, 16, 24, 21, 39, 31, 218, 187, 223, 26, 50, 255, 239, 5, 248, 249, 23, 17, 245, 246, 31, 10, 213, 234, 23, 4, 229, 255,
+			43, 36, 228, 211, 15, 33, 228, 226, 30, 25, 243, 11, 0, 236, 14, 7, 240, 241, 2, 16, 249, 9, 35, 9, 214, 227, 10, 18, 253, 232,
+			12, 56, 34, 228, 202, 241, 250, 249, 30, 22, 25, 11, 205, 233, 36, 3, 228, 32, 35, 230, 210, 252, 28, 30, 5, 207, 236, 46, 31, 236,
+			221, 24, 29, 220, 231, 40, 15, 212, 4, 37, 3, 228, 0, 0, 241, 8, 31, 0, 237, 8, 16, 248, 248, 8, 2, 245, 208, 0, 70, 13,
+			234, 7, 7, 219, 223, 11, 20, 10, 19, 5, 5, 18, 5, 207, 218, 14, 1, 5, 21, 37, 34, 223, 209, 237, 233, 11, 28, 23, 34, 26,
+			223, 218, 241, 239, 3, 32, 37, 16, 241, 235, 246, 232, 243, 5, 22, 32, 23, 254, 228, 228, 234, 21, 29, 22, 254, 236, 242, 7, 7, 0,
+			251, 253, 236, 243, 39, 48, 248, 222, 252, 4, 247, 245, 254, 8, 23, 20, 5, 229, 242, 23, 20, 231, 204, 222, 44, 87, 26, 217, 210, 250,
+			12, 249, 253, 17, 23, 249, 236, 2, 16, 11, 239, 221, 3, 35, 24, 16, 219, 207, 19, 32, 23, 245, 206, 20, 47, 194, 209, 52, 71, 21,
+			212, 235, 5, 241, 231, 3, 2, 7, 42, 32, 13, 244, 182, 197, 255, 42, 70, 54, 253, 210, 212, 219, 0, 24, 29, 43, 0, 250, 7, 199,
+			217, 19, 14, 13, 30, 44, 5, 200, 198, 229, 15, 60, 71, 23, 206, 194, 223, 247, 31, 54, 26, 238, 244, 11, 3, 202, 235, 41, 26, 255,
+			23, 0, 206, 216, 255, 37, 33, 12, 0, 252, 255, 231, 224, 10, 40, 27, 5, 231, 232, 254, 243, 248, 1, 26, 46, 16, 236, 223, 200, 7,
+			66, 14, 228, 234, 2, 34, 17, 239, 244, 248, 0, 1, 246, 15, 30, 3, 232, 3, 0, 241, 250, 255, 12, 255, 253, 7, 250, 11, 43, 2,
+			224, 245, 236, 244, 21, 12, 255, 10, 10, 2, 1, 243, 236, 230, 0, 43, 44, 2, 214, 231, 11, 28, 254, 235, 5, 3, 252, 3, 7, 0,
+			4, 6, 233, 245, 29, 14, 233, 239, 7, 26, 31, 0, 235, 238, 235, 238, 232, 15, 99, 59, 218, 209, 236, 244, 231, 208, 20, 95, 80, 226,
+			174, 233, 18, 15, 3, 249, 9, 37, 2, 234, 226, 230, 7, 38, 46, 254, 200, 224, 36, 24, 207, 4, 62, 20, 233, 197, 243, 57, 31, 224,
+			217, 6, 42, 13, 202, 244, 70, 22, 206, 233, 11, 251, 6, 38, 13, 216, 235, 12, 14, 252, 233, 6, 38, 17, 228, 240, 10, 8, 5, 238,
+			252, 11, 251, 8, 25, 247, 224, 3, 17, 10, 251, 235, 255, 39, 5, 212, 0, 30, 5, 231, 232, 18, 43, 254, 231, 243, 1, 38, 14, 237,
+			226, 246, 14, 10, 3, 8, 7, 248, 252, 253, 250, 251, 15, 11, 243, 7, 13, 247, 1, 240, 239, 31, 29, 243, 238, 250, 244, 4, 12, 13,
+			13, 1, 247, 253, 248, 254, 242, 229, 30, 60, 15, 230, 231, 246, 245, 251, 5, 16, 253, 246, 16, 25, 3, 5, 240, 225, 252, 19, 8, 251,
+			6, 17, 246, 229, 21, 28, 237, 224, 3, 24, 249, 226, 14, 33, 6, 254, 30, 245, 206, 242, 17, 4, 245, 6, 27, 11, 246, 10, 251, 238,
+			254, 5, 252, 2, 16, 0, 251, 248, 6, 4, 244, 9, 8, 240, 252, 12, 12, 255, 251, 5, 4, 1, 241, 234, 255, 15, 29, 12, 249, 1,
+			248, 236, 249, 245, 16, 29, 12, 3, 249, 224, 219, 7, 51, 33, 240, 241, 255, 228, 254, 33, 0, 248, 13, 13, 0, 238, 244, 242, 241, 12,
+			37, 29, 253, 248, 243, 224, 244, 5, 9, 33, 25, 252, 245, 239, 228, 255, 13, 1, 21, 21, 247, 3, 11, 225, 227, 2, 22, 26, 253, 240,
+			9, 23, 242, 218, 244, 22, 33, 15, 246, 232, 235, 252, 30, 25, 0, 1, 3, 249, 241, 221, 234, 24, 42, 26, 252, 230, 247, 14, 247, 226,
+			3, 36, 15, 243, 250, 8, 253, 241, 0, 5, 20, 7, 238, 249, 250, 249, 9, 25, 10, 244, 4, 7, 238, 234, 6, 6, 248, 10, 10, 4,
+			30, 1, 225, 249, 3, 246, 252, 0, 4, 25, 9, 241, 14, 11, 235, 233, 244, 0, 15, 24, 16, 0, 251, 248, 242, 250, 253, 9, 255, 251,
+			31, 28, 238, 232, 18, 254, 211, 218, 34, 58, 8, 1, 5, 248, 232, 225, 238, 6, 32, 32, 37, 8, 215, 222, 249, 239, 254, 34, 31, 16,
+			2, 242, 215, 231, 14, 17, 10, 26, 14, 227, 235, 1, 2, 252, 14, 10, 249, 16, 21, 241, 216, 252, 4, 1, 25, 37, 9, 220, 223, 244,
+			6, 24, 25, 6, 217, 226, 29, 42, 7, 235, 231, 247, 20, 27, 6, 241, 221, 240, 17, 36, 39, 5, 208, 211, 15, 12, 255, 22, 22, 0,
+			230, 242, 8, 3, 255, 255, 11, 7, 254, 0, 3, 6, 247, 227, 6, 42, 0, 236, 246, 2, 3, 5, 12, 4, 250, 240, 250, 247, 0, 23,
+			16, 254, 4, 10, 237, 246, 8, 251, 252, 3, 7, 9, 11, 5, 236, 226, 1, 22, 9, 8, 3, 239, 251, 14, 249, 247, 13, 250, 247, 25,
+			8, 242, 11, 13, 245, 240, 2, 236, 255, 29, 20, 237, 228, 19, 26, 0, 245, 231, 240, 24, 25, 3, 7, 240, 226, 249, 4, 24, 44, 11,
+			227, 218, 234, 16, 9, 6, 21, 1, 248, 6, 5, 255, 234, 228, 253, 30, 38, 9, 247, 238, 244, 246, 252, 16, 24, 250, 234, 0, 3, 252,
+			21, 19, 1, 243, 229, 249, 21, 19, 244, 236, 5, 16, 4, 0, 13, 6, 235, 229, 251, 17, 27, 4, 237, 242, 11, 24, 14, 249, 219, 216,
+			5, 59, 40, 242, 222, 240, 255, 10, 16, 12, 0, 235, 231, 249, 21, 34, 9, 247, 236, 255, 16, 9, 252, 231, 237, 251, 25, 35, 16, 239,
+			224, 2, 2, 239, 11, 30, 6, 242, 255, 13, 6, 227, 230, 16, 20, 20, 5, 232, 1, 4, 233, 248, 13, 13, 24, 12, 234, 241, 6, 242,
+			226, 22, 48, 11, 242, 254, 248, 238, 236, 0, 22, 39, 10, 231, 235, 0, 249, 245, 13, 24, 19, 246, 253, 253, 243, 252, 244, 241, 21, 55,
+			19, 229, 225, 232, 255, 12, 18, 13, 8, 5, 243, 232, 1, 17, 3, 239, 0, 18, 7, 250, 255, 6, 245, 240, 3, 33, 25, 239, 222, 242,
+			9, 18, 10, 5, 4, 245, 235, 249, 9, 19, 11, 255, 252, 247, 2, 7, 243, 228, 0, 39, 29, 250, 242, 0, 247, 236, 254, 23, 169, 9,
+			63, 0, 14, 9, 244, 250, 10, 1, 244, 254, 255, 8, 16, 250, 252, 7, 7, 255, 245, 249, 252, 1, 5, 17, 18, 248, 234, 253, 2, 255,
+			8, 14, 0, 247, 0, 5, 10, 252, 239, 252, 11, 17, 255, 240, 246, 8, 15, 250, 3, 6, 252, 241, 251, 11, 9, 12, 10, 249, 243, 251,
+			255, 255, 254, 12, 16, 249, 241, 242, 5, 16, 4, 255, 2, 1, 246, 252, 1, 249, 0, 9, 10, 4, 251, 253, 247, 243, 9, 17, 1, 255,
+			6, 4, 247, 255, 3, 255, 16, 5, 0, 255, 240, 6, 12, 248, 241, 4, 21, 8, 255, 245, 243, 254, 1, 1, 253, 3, 13, 6, 252, 247,
+			233, 7, 8, 246, 1, 13, 9, 2, 255, 234, 243, 15, 21, 9, 3, 4, 239, 231, 254, 24, 17, 4, 254, 9, 2, 233, 244, 5, 12, 3,
+			9, 11, 251, 244, 250, 249, 4, 10, 254, 252, 8, 11, 246, 241, 247, 7, 20, 8, 249, 238, 244, 18, 31, 250, 232, 254, 12, 5, 253, 249,
+			0, 8, 1, 4, 1, 241, 250, 13, 0, 245, 7, 26, 5, 241, 245, 242, 249, 12, 26, 15, 253, 251, 3, 248, 230, 251, 18, 17, 6, 1,
+			254, 244, 254, 250, 234, 16, 35, 255, 241, 250, 18, 4, 231, 252, 27, 12, 251, 1, 2, 243, 243, 7, 10, 7, 7, 247, 227, 247, 15, 20,
+			15, 240, 228, 251, 15, 12, 13, 243, 243, 12, 245, 241, 6, 12, 9, 0, 10, 1, 234, 251, 14, 2, 1, 24, 14, 251, 231, 237, 16, 25,
+			10, 255, 250, 245, 254, 1, 255, 4, 12, 7, 243, 244, 255, 4, 254, 247, 0, 16, 4, 234, 226, 8, 35, 18, 244, 231, 249, 7, 243, 251,
+			34, 41, 248, 212, 245, 16, 14, 250, 3, 31, 16, 222, 227, 12, 39, 17, 241, 247, 0, 250, 255, 7, 12, 5, 0, 245, 244, 249, 0, 249,
+			3, 36, 18, 228, 231, 248, 246, 10, 19, 0, 8, 254, 230, 250, 5, 12, 14, 254, 0, 255, 0, 3, 250, 0, 254, 0, 5, 7, 10, 10,
+			246, 247, 1, 9, 9, 246, 244, 1, 14, 19, 14, 233, 236, 8, 4, 254, 252, 252, 12, 19, 4, 251, 248, 245, 253, 249, 234, 4, 34, 27,
+			5, 222, 237, 251, 240, 17, 21, 9, 253, 233, 238, 4, 22, 8, 0, 0, 14, 3, 226, 238, 25, 27, 5, 8, 14, 246, 216, 247, 28, 22,
+			250, 0, 3, 245, 244, 239, 2, 21, 9, 253, 5, 249, 239, 248, 254, 13, 6, 3, 250, 2, 17, 7, 241, 238, 0, 0, 23, 17, 245, 233,
+			11, 39, 247, 216, 242, 12, 23, 251, 252, 11, 28, 13, 230, 219, 229, 16, 42, 18, 5, 248, 243, 244, 248, 242, 245, 30, 36, 6, 238, 227,
+			241, 12, 19, 249, 253, 22, 15, 248, 247, 239, 246, 15, 19, 2, 254, 13, 1, 232, 238, 7, 15, 13, 8, 4, 254, 234, 233, 0, 14, 22,
+			8, 235, 247, 5, 5, 8, 248, 246, 8, 12, 255, 249, 253, 240, 2, 24, 12, 3, 8, 5, 227, 220, 0, 25, 25, 250, 7, 22, 245, 245,
+			240, 228, 6, 16, 9, 34, 18, 233, 242, 239, 242, 16, 24, 247, 255, 8, 1, 247, 238, 255, 254, 6, 27, 4, 247, 239, 3, 11, 247, 3,
+			8, 3, 0, 247, 247, 9, 22, 251, 248, 1, 2, 8, 249, 226, 7, 41, 255, 2, 18, 249, 236, 230, 250, 15, 16, 7, 11, 5, 244, 243,
+			239, 233, 6, 49, 15, 234, 252, 4, 237, 230, 9, 32, 25, 8, 239, 242, 241, 243, 0, 21, 23, 18, 0, 240, 245, 4, 242, 241, 16, 23,
+			14, 255, 10, 240, 221, 3, 24, 19, 253, 233, 252, 18, 7, 247, 237, 13, 20, 242, 231, 1, 12, 253, 13, 17, 255, 239, 0, 18, 246, 225,
+			3, 24, 7, 12, 10, 228, 236, 250, 24, 22, 242, 251, 254, 246, 25, 12, 232, 8, 10, 251, 250, 251, 8, 13, 240, 252, 17, 249, 0, 27,
+			16, 230, 201, 250, 44, 22, 228, 0, 38, 4, 222, 240, 14, 9, 255, 255, 34, 12, 209, 215, 30, 35, 237, 3, 27, 7, 248, 241, 229, 244,
+			17, 19, 1, 252, 11, 1, 221, 241, 24, 21, 247, 246, 15, 253, 232, 7, 31, 243, 220, 9, 57, 32, 226, 204, 254, 15, 241, 31, 40, 245,
+			241, 248, 5, 11, 233, 228, 27, 52, 254, 229, 2, 14, 233, 225, 251, 29, 47, 254, 223, 240, 250, 250, 249, 14, 16, 1, 0, 248, 249, 13,
+			247, 249, 243, 245, 28, 64, 6, 193, 252, 36, 246, 232, 5, 25, 5, 254, 11, 14, 245, 241, 239, 254, 19, 7, 18, 1, 224, 7, 7, 249,
+			255, 248, 0, 16, 7, 247, 250, 246, 242, 6, 17, 15, 255, 233, 232, 24, 32, 242, 3, 8, 246, 248, 7, 4, 252, 15, 0, 232, 252, 10,
+			2, 244, 24, 52, 0, 217, 231, 3, 7, 240, 254, 18, 35, 9, 246, 233, 223, 0, 2, 5, 25, 16, 20, 249, 211, 230, 13, 15, 11, 12,
+			13, 254, 243, 245, 234, 5, 29, 3, 243, 12, 34, 240, 196, 216, 15, 67, 51, 8, 226, 236, 247, 221, 236, 24, 47, 37, 251, 235, 238, 2,
+			246, 217, 248, 41, 43, 2, 250, 23, 250, 203, 208, 255, 50, 47, 20, 2, 225, 226, 225, 249, 25, 18, 15, 15, 2, 235, 233, 12, 21, 1,
+			237, 9, 14, 3, 241, 233, 252, 236, 27, 95, 248, 183, 241, 10, 238, 241, 35, 36, 2, 249, 245, 225, 255, 28, 255, 240, 7, 33, 0, 226,
+			241, 19, 17, 8, 248, 254, 247, 242, 20, 11, 245, 249, 11, 33, 248, 219, 228, 7, 39, 23, 245, 2, 19, 255, 224, 207, 8, 42, 24, 255,
+			17, 20, 213, 192, 221, 10, 47, 61, 49, 1, 211, 184, 217, 12, 35, 30, 27, 30, 253, 203, 198, 251, 42, 30, 4, 254, 251, 250, 238, 244,
+			11, 21, 24, 13, 237, 241, 254, 4, 5, 252, 21, 11, 0, 252, 241, 9, 5, 243, 5, 20, 228, 235, 31, 21, 236, 3, 13, 211, 225, 9,
+			36, 35, 9, 243, 207, 223, 14, 29, 11, 3, 9, 243, 247, 244, 246, 16, 5, 2, 13, 254, 9, 11, 235, 236, 25, 23, 255, 242, 253, 25,
+			20, 231, 244, 26, 252, 239, 254, 24, 48, 247, 197, 223, 27, 17, 253, 9, 248, 243, 28, 13, 222, 213, 249, 22, 18, 24, 4, 229, 209, 0,
+			48, 249, 226, 9, 39, 17, 248, 249, 246, 3, 11, 252, 234, 11, 36, 5, 242, 229, 14, 13, 13, 6, 245, 247, 8, 4, 5, 8, 251, 0,
+			246, 245, 12, 9, 0, 10, 251, 240, 2, 0, 224, 221, 21, 42, 21, 12, 242, 191, 221, 21, 26, 16, 3, 29, 10, 223, 234, 1, 14, 12,
+			5, 20, 0, 230, 5, 5, 243, 6, 32, 7, 240, 249, 244, 253, 21, 31, 4, 230, 249, 6, 226, 0, 18, 16, 247, 224, 1, 14, 241, 239,
+			5, 28, 21, 1, 240, 222, 251, 39, 26, 243, 226, 1, 9, 21, 241, 238, 17, 16, 13, 8, 6, 236, 213, 17, 39, 255, 253, 7, 3, 0,
+			238, 232, 246, 20, 40, 18, 2, 227, 198, 241, 26, 10, 13, 13, 6, 252, 253, 243, 247, 244, 14, 15, 247, 21, 36, 219, 204, 1, 41, 38,
+			231, 252, 41, 246, 179, 215, 46, 71, 24, 1, 230, 232, 249, 242, 246, 19, 40, 23, 244, 234, 253, 251, 230, 233, 15, 53, 31, 238, 233, 222,
+			236, 14, 33, 33, 0, 228, 228, 2, 14, 22, 0, 238, 3, 21, 12, 228, 235, 3, 0, 3, 33, 36, 227, 210, 244, 5, 16, 40, 21, 235,
+			246, 3, 239, 233, 255, 14, 0, 14, 26, 18, 239, 236, 240, 235, 2, 37, 12, 249, 250, 25, 253, 211, 239, 12, 55, 51, 249, 202, 175, 5,
+			70, 26, 239, 17, 33, 223, 190, 248, 46, 31, 244, 246, 245, 247, 19, 4, 0, 0, 241, 4, 4, 253, 10, 248, 221, 15, 53, 12, 239, 238,
+			227, 244, 252, 18, 32, 28, 14, 237, 205, 225, 21, 37, 5, 245, 33, 16, 205, 230, 24, 25, 16, 252, 4, 21, 238, 194, 18, 77, 20, 238,
+			222, 212, 215, 239, 26, 74, 58, 9, 238, 175, 172, 232, 49, 91, 42, 222, 214, 3, 10, 212, 195, 33, 125, 42, 184, 213, 255, 248, 19, 4,
+			254, 22, 47, 38, 190, 183, 34, 35, 236, 242, 46, 36, 241, 227, 237, 3, 6, 10, 4, 250, 5, 10, 242, 238, 255, 8, 3, 246, 244, 1,
+			255, 12, 39, 252, 201, 243, 21, 22, 7, 241, 244, 0, 19, 9, 234, 237, 27, 38, 6, 221, 222, 13, 7, 22, 14, 235, 16, 46, 12, 228,
+			209, 237, 4, 20, 50, 246, 234, 28, 0, 198, 225, 33, 47, 12, 238, 248, 252, 242, 241, 242, 253, 44, 21, 245, 7, 245, 224, 203, 0, 71,
+			52, 3, 237, 228, 3, 3, 245, 239, 20, 35, 3, 3, 219, 215, 38, 48, 255, 0, 248, 229, 234, 249, 4, 46, 48, 2, 215, 211, 221, 246,
+			30, 37, 32, 20, 253, 206, 208, 3, 28, 10, 249, 15, 38, 234, 236, 0, 245, 254, 249, 13, 22, 32, 25, 224, 214, 8, 13, 237, 250, 25,
+			32, 5, 236, 237, 247, 15, 9, 14, 0, 221, 251, 16, 1, 0, 10, 11, 248, 238, 240, 22, 5, 234, 251, 14, 41, 0, 217, 6, 8, 244,
+			233, 7, 20, 13, 7, 231, 0, 26, 9, 239, 254, 8, 252, 249, 248, 6, 25, 36, 253, 215, 228, 0, 16, 3, 25, 7, 9, 5, 223, 232,
+			247, 2, 13, 28, 11, 237, 246, 22, 0, 210, 225, 20, 51, 36, 0, 231, 253, 248, 216, 222, 16, 46, 51, 23, 241, 224, 241, 240, 234, 5,
+			26, 40, 10, 252, 244, 233, 240, 233, 246, 26, 61, 50, 237, 190, 208, 2, 27, 28, 39, 3, 230, 255, 242, 252, 40, 24, 223, 191, 3, 50,
+			27, 222, 248, 47, 15, 227, 211, 236, 255, 0, 38, 45, 9, 2, 209, 192, 250, 30, 34, 43, 50, 234, 184, 192, 253, 56, 22, 16, 42, 27,
+			233, 182, 208, 20, 28, 9, 15, 59, 12, 203, 194, 226, 4, 49, 61, 7, 234, 242, 245, 220, 231, 15, 25, 66, 28, 214, 242, 254, 211, 225,
+			49, 55, 27, 250, 243, 225, 191, 0, 42, 15, 57, 46, 207, 182, 230, 250, 14, 47, 42, 4, 229, 228, 229, 230, 10, 26, 27, 15, 255, 249,
+			241, 211, 238, 46, 50, 4, 7, 4, 220, 220, 3, 46, 18, 255, 26, 244, 195, 3, 31, 10, 36, 16, 197, 193, 20, 58, 28, 233, 240, 248,
+			11, 251, 191, 7, 77, 31, 206, 235, 13, 0, 243, 240, 21, 31, 3, 241, 250, 227, 237, 28, 36, 20, 238, 216, 240, 36, 11, 255, 37, 249,
+			221, 218, 2, 40, 39, 16, 248, 223, 234, 11, 19, 255, 3, 251, 246, 12, 1, 226, 25, 21, 220, 12, 26, 1, 244, 244, 250, 11, 14, 0,
+			250, 249, 1, 13, 227, 242, 17, 8, 5, 243, 0, 11, 255, 0, 2, 228, 255, 49, 4, 224, 255, 254, 0, 14, 7, 18, 0, 239, 238, 253,
+			3, 19, 19, 16, 13, 235, 215, 244, 28, 16, 242, 13, 29, 255, 213, 227, 0, 27, 24, 17, 3, 249, 236, 242, 13, 235, 253, 50, 12, 206,
+			243, 2, 5, 36, 37, 0, 225, 215, 0, 8, 242, 15, 34, 29, 247, 230, 0, 240, 231, 3, 6, 17, 45, 250, 222, 230, 7, 33, 254, 238,
+			3, 10, 9, 225, 241, 33, 29, 251, 219, 223, 34, 56, 242, 229, 12, 7, 252, 248, 255, 18, 22, 255, 248, 228, 245, 23, 23, 13, 0, 232,
+			235, 3, 13, 255, 254, 9, 248, 248, 232, 254, 28, 255, 252, 241, 254, 16, 250, 245, 247, 21, 17, 253, 9, 242, 234, 255, 14, 13, 25, 31,
+			239, 226, 246, 4, 5, 7, 29, 16, 253, 0, 235, 227, 251, 31, 15, 0, 7, 5, 239, 231, 229, 2, 29, 20, 253, 225, 248, 23, 239, 239,
+			11, 18, 18, 245, 226, 2, 3, 16, 20, 3, 249, 250, 239, 249, 13, 30, 17, 245, 252, 0, 250, 7, 2, 244, 250, 11, 10, 17, 14, 0,
+			240, 228, 248, 251, 4, 32, 28, 236, 219, 12, 21, 232, 233, 4, 25, 25, 253, 232, 244, 251, 255, 7, 6, 0, 9, 11, 247, 235, 8, 29,
+			11, 255, 251, 241, 252, 243, 6, 25, 6, 252, 0, 12, 254, 231, 250, 250, 5, 29, 24, 249, 235, 245, 227, 254, 36, 24, 4, 253, 2, 241,
+			221, 233, 24, 41, 2, 253, 17, 254, 232, 242, 254, 6, 11, 10, 5, 251, 6, 10, 239, 229, 248, 23, 19, 250, 240, 3, 14, 251, 3, 249,
+			240, 8, 11, 7, 9, 1, 228, 247, 9, 5, 10, 15, 15, 0, 240, 225, 251, 5, 13, 29, 31, 18, 235, 202, 228, 4, 21, 30, 24, 17,
+			243, 225, 239, 242, 236, 5, 31, 16, 24, 1, 222, 229, 241, 7, 36, 25, 238, 233, 2, 11, 0, 249, 249, 11, 14, 0, 253, 4, 5, 252,
+			246, 252, 16, 19, 1, 249, 241, 4, 1, 250, 12, 0, 255, 11, 11, 248, 241, 251, 250, 8, 21, 0, 249, 3, 254, 237, 243, 15, 13, 0,
+			249, 251, 10, 0, 250, 4, 250, 0, 14, 4, 247, 253, 2, 255, 6, 21, 2, 236, 254, 11, 255, 238, 244, 2, 11, 12, 19, 23, 241, 215,
+			224, 6, 36, 22, 0, 254, 8, 7, 248, 232, 247, 10, 13, 10, 8, 17, 9, 228, 226, 253, 8, 18, 14, 249, 243, 11, 2, 237, 0, 5,
+			250, 0, 3, 255, 255, 3, 251, 243, 255, 5, 4, 7, 6, 248, 254, 9, 245, 247, 18, 15, 2, 0, 249, 4, 10, 254, 6, 14, 250, 247,
+			5, 12, 0, 0, 3, 252, 0, 249, 239, 255, 7, 6, 7, 8, 250, 239, 241, 249, 6, 11, 3, 8, 1, 237, 249, 1, 9, 6, 0, 1,
+			6, 0, 249, 249, 1, 19, 18, 255, 248, 251, 246, 0, 14, 15, 3, 5, 5, 246, 239, 248, 2, 7, 5, 10, 15, 253, 241, 247, 247, 253,
+			3, 4, 10, 13, 251, 238, 245, 251, 5, 12, 254, 4, 12, 253, 250, 255, 254, 253, 0, 7, 7, 4, 254, 250, 1, 10, 3, 252, 0, 9,
+			3, 252, 252, 255, 5, 2, 4, 13, 5, 247, 241, 244, 0, 11, 12, 0, 0, 0, 152, 9, 27, 0, 229, 254, 18, 15, 23, 19, 255, 251,
+			251, 2, 4, 248, 244, 7, 12, 0, 11, 18, 11, 247, 229, 228, 236, 245, 5, 20, 17, 12, 8, 243, 231, 231, 219, 223, 230, 239, 2, 20,
+			24, 16, 12, 8, 245, 211, 201, 215, 222, 241, 2, 11, 27, 44, 35, 11, 239, 211, 203, 213, 234, 12, 51, 49, 28, 22, 15, 240, 234, 244,
+			242, 234, 232, 251, 17, 26, 8, 13, 14, 234, 233, 237, 229, 252, 5, 7, 11, 254, 0, 250, 235, 248, 1, 232, 216, 249, 21, 21, 6, 248,
+			253, 0, 10, 14, 3, 244, 240, 249, 242, 255, 7, 14, 7, 7, 16, 17, 9, 224, 211, 244, 13, 4, 18, 57, 20, 253, 0, 248, 219, 235,
+			255, 0, 7, 14, 9, 255, 248, 11, 28, 17, 16, 15, 241, 221, 213, 225, 254, 8, 16, 19, 27, 19, 254, 241, 232, 240, 248, 245, 21, 31,
+			10, 2, 0, 255, 236, 219, 233, 10, 36, 7, 254, 3, 16, 18, 250, 223, 234, 14, 19, 249, 242, 3, 20, 7, 233, 218, 231, 237, 253, 20,
+			17, 22, 29, 239, 215, 229, 236, 249, 253, 1, 250, 14, 38, 10, 253, 7, 6, 248, 227, 224, 237, 252, 16, 33, 16, 8, 30, 23, 5, 246,
+			232, 242, 245, 238, 236, 9, 34, 29, 0, 243, 246, 6, 255, 236, 238, 2, 4, 252, 250, 10, 22, 8, 7, 13, 249, 241, 1, 247, 245, 1,
+			252, 15, 28, 19, 24, 34, 16, 226, 218, 239, 236, 243, 24, 41, 18, 13, 18, 240, 211, 0, 21, 234, 240, 29, 19, 252, 12, 8, 242, 227,
+			240, 16, 23, 16, 10, 248, 244, 242, 224, 235, 10, 21, 7, 22, 55, 42, 241, 220, 223, 212, 225, 236, 249, 46, 61, 32, 6, 0, 216, 205,
+			229, 23, 56, 32, 253, 4, 237, 220, 243, 240, 234, 7, 35, 39, 12, 255, 248, 243, 252, 243, 236, 246, 4, 253, 246, 0, 248, 250, 255, 1,
+			16, 27, 248, 211, 223, 254, 13, 13, 18, 14, 6, 251, 248, 252, 7, 245, 231, 246, 16, 11, 251, 2, 22, 24, 11, 246, 224, 241, 0, 253,
+			254, 1, 252, 244, 6, 254, 233, 252, 1, 231, 248, 249, 13, 45, 38, 13, 5, 233, 198, 218, 235, 239, 21, 67, 39, 14, 24, 19, 241, 211,
+			206, 226, 246, 15, 36, 48, 31, 21, 255, 241, 243, 248, 227, 230, 2, 6, 251, 14, 27, 7, 225, 219, 226, 221, 238, 31, 33, 17, 15, 16,
+			1, 212, 203, 215, 206, 233, 28, 47, 49, 46, 35, 244, 228, 228, 225, 221, 213, 244, 18, 30, 41, 19, 8, 255, 254, 245, 244, 250, 242, 224,
+			241, 2, 16, 31, 44, 17, 238, 226, 223, 249, 17, 252, 235, 0, 5, 16, 35, 15, 7, 225, 222, 248, 0, 243, 229, 3, 23, 32, 33, 9,
+			226, 218, 239, 247, 243, 12, 9, 12, 30, 36, 28, 245, 226, 242, 231, 227, 246, 0, 11, 34, 27, 15, 8, 9, 237, 201, 200, 249, 5, 5,
+			33, 2, 8, 61, 15, 219, 217, 252, 248, 228, 217, 237, 15, 249, 5, 34, 29, 44, 20, 243, 243, 179, 133, 207, 22, 38, 70, 100, 72, 16,
+			251, 197, 172, 210, 225, 236, 37, 90, 41, 252, 254, 238, 234, 222, 241, 5, 3, 9, 9, 18, 24, 235, 172, 196, 238, 29, 72, 49, 0, 214,
+			206, 233, 234, 218, 250, 32, 64, 11, 238, 13, 7, 217, 203, 219, 234, 6, 28, 61, 56, 19, 12, 245, 195, 183, 209, 243, 16, 34, 40, 25,
+			10, 0, 238, 218, 1, 9, 229, 240, 37, 34, 27, 0, 0, 0, 242, 227, 229, 246, 1, 29, 33, 24, 247, 219, 231, 254, 250, 0, 2, 254,
+			13, 19, 235, 236, 0, 0, 231, 236, 34, 23, 23, 40, 6, 237, 239, 239, 222, 225, 26, 60, 11, 246, 251, 249, 250, 249, 251, 23, 34, 22,
+			6, 9, 242, 200, 200, 226, 0, 17, 14, 45, 61, 75, 19, 189, 182, 194, 202, 231, 26, 26, 60, 77, 8, 239, 241, 222, 204, 212, 2, 53,
+			37, 6, 5, 1, 242, 240, 246, 224, 240, 22, 39, 27, 0, 35, 23, 247, 60, 18, 198, 215, 238, 237, 255, 49, 57, 10, 1, 5, 239, 219,
+			216, 208, 19, 93, 53, 30, 14, 226, 162, 155, 209, 0, 24, 77, 79, 44, 22, 255, 217, 170, 173, 228, 29, 63, 60, 68, 67, 25, 222, 190,
+			191, 197, 229, 21, 54, 40, 26, 58, 43, 229, 199, 248, 13, 206, 219, 9, 41, 82, 59, 20, 14, 13, 249, 188, 203, 251, 245, 246, 23, 30,
+			241, 0, 19, 16, 13, 6, 0, 228, 203, 220, 250, 2, 26, 19, 16, 17, 1, 239, 232, 240, 199, 198, 34, 83, 51, 31, 11, 200, 215, 4,
+			225, 206, 231, 4, 30, 39, 57, 55, 248, 241, 13, 236, 207, 211, 229, 5, 35, 64, 61, 50, 26, 219, 180, 190, 248, 253, 232, 29, 37, 12,
+			2, 249, 182, 197, 242, 241, 26, 58, 54, 30, 242, 207, 199, 204, 225, 18, 33, 31, 46, 38, 21, 241, 189, 170, 190, 213, 13, 66, 59, 25,
+			241, 220, 223, 214, 206, 215, 248, 6, 18, 4, 255, 10, 238, 232, 7, 236, 194, 225, 13, 21, 41, 22, 250, 216, 220, 247, 217, 192, 19, 88,
+			241, 251, 24, 233, 214, 232, 246, 229, 238, 48, 64, 253, 42, 57, 238, 194, 221, 215, 220, 220, 240, 68, 54, 1, 244, 208, 230, 245, 211, 233,
+			16, 7, 236, 233, 4, 14, 1, 230, 205, 212, 30, 47, 220, 215, 38, 11, 218, 216, 254, 20, 238, 3, 38, 48, 81, 53, 231, 171, 178, 250,
+			23, 35, 69, 50, 254, 243, 5, 214, 206, 253, 30, 36, 33, 12, 227, 228, 230, 232, 212, 204, 248, 247, 12, 16, 16, 26, 29, 220, 192, 3,
+			255, 242, 6, 2, 213, 242, 45, 32, 255, 253, 0, 2, 251, 249, 17, 33, 36, 17, 7, 252, 6, 73, 57, 22, 233, 225, 227, 231, 251, 235,
+			230, 1, 37, 64, 55, 250, 173, 177, 193, 237, 9, 56, 45, 247, 249, 13, 217, 206, 233, 225, 237, 42, 79, 50, 27, 226, 197, 240, 4, 23,
+			14, 244, 20, 33, 246, 231, 223, 204, 1, 105, 100, 38, 246, 220, 227, 211, 212, 225, 243, 43, 71, 65, 80, 42, 221, 190, 222, 217, 196, 223,
+			48, 80, 54, 45, 23, 15, 217, 147, 153, 253, 92, 81, 254, 16, 57, 5, 203, 183, 202, 225, 227, 7, 10, 49, 118, 75, 236, 220, 229, 220,
+			220, 224, 7, 90, 79, 26, 35, 247, 193, 199, 221, 11, 32, 61, 56, 6, 250, 243, 245, 234, 213, 216, 230, 25, 52, 66, 61, 10, 227, 192,
+			185, 194, 225, 241, 240, 57, 96, 54, 26, 254, 219, 182, 199, 222, 253, 16, 255, 2, 37, 32, 253, 249, 249, 221, 226, 253, 14, 29, 50, 48,
+			12, 194, 205, 27, 23, 238, 0, 38, 231, 199, 30, 5, 223, 16, 49, 60, 37, 224, 190, 208, 206, 227, 249, 5, 57, 57, 16, 0, 227, 223,
+			234, 216, 241, 16, 27, 31, 52, 17, 223, 236, 240, 201, 248, 29, 247, 27, 79, 11, 241, 16, 25, 9, 25, 16, 183, 196, 9, 47, 25, 252,
+			5, 29, 13, 247, 243, 243, 219, 207, 221, 9, 38, 46, 18, 248, 0, 253, 249, 220, 241, 29, 15, 17, 9, 22, 27, 12, 11, 233, 239, 19,
+			20, 254, 240, 9, 49, 16, 22, 26, 247, 232, 2, 254, 216, 16, 28, 239, 249, 18, 23, 231, 197, 230, 233, 1, 34, 10, 12, 25, 7, 242,
+			212, 221, 251, 20, 32, 32, 0, 31, 11, 247, 237, 225, 251, 33, 15, 240, 252, 22, 33, 22, 239, 255, 22, 34, 243, 18, 24, 237, 18, 219,
+			231, 6, 224, 3, 16, 24, 26, 246, 242, 207, 210, 0, 56, 55, 241, 228, 217, 209, 245, 235, 240, 250, 33, 21, 23, 57, 24, 227, 187, 200,
+			24, 37, 3, 21, 16, 254, 30, 15, 216, 211, 217, 218, 252, 50, 103, 34, 189, 225, 246, 235, 20, 8, 214, 222, 17, 51, 18, 5, 230, 188,
+			205, 27, 68, 26, 224, 230, 3, 24, 31, 13, 243, 224, 211, 226, 3, 42, 70, 55, 242, 190, 185, 226, 229, 225, 35, 55, 43, 16, 233, 15,
+			24, 231, 156, 200, 8, 245, 0, 19, 23, 13, 10, 253, 11, 4, 219, 233, 238, 220, 228, 8, 55, 45, 41, 50, 22, 246, 193, 162, 194, 250,
+			0, 7, 44, 76, 34, 238, 40, 39, 222, 175, 160, 227, 0, 11, 50, 58, 35, 9, 231, 191, 188, 209, 234, 14, 35, 58, 48, 43, 2, 211,
+			191, 198, 206, 12, 25, 27, 25, 240, 244, 0, 249, 253, 250, 245, 37, 34, 5, 252, 251, 245, 236, 225, 240, 17, 57, 66, 251, 235, 14, 233,
+			193, 221, 38, 51, 36, 33, 56, 44, 223, 185, 181, 188, 211, 235, 23, 44, 87, 94, 8, 217, 6, 238, 183, 214, 3, 10, 12, 44, 36, 16,
+			15, 253, 189, 192, 9, 252, 225, 248, 48, 52, 239, 252, 7, 5, 28, 30, 213, 208, 7, 220, 206, 0, 52, 42, 14, 249, 194, 219, 29, 68,
+			24, 241, 247, 237, 0, 7, 4, 195, 212, 3, 5, 59, 89, 26, 229, 217, 214, 212, 237, 28, 89, 50, 255, 245, 215, 212, 233, 234, 251, 6,
+			13, 15, 239, 204, 190, 216, 253, 26, 57, 75, 47, 214, 212, 227, 217, 245, 10, 43, 18, 240, 252, 8, 29, 26, 25, 247, 253, 11, 204, 190,
+			5, 14, 46, 59, 77, 72, 251, 164, 165, 178, 220, 24, 19, 23, 97, 90, 25, 245, 206, 160, 156, 189, 227, 41, 69, 92, 114, 28, 191, 133,
+			163, 211, 6, 33, 29, 59, 49, 15, 1, 242, 187, 201, 242, 253, 11, 31, 38, 248, 20, 46, 255, 233, 217, 220, 231, 8, 9, 242, 249, 28,
+			54, 251, 217, 253, 3, 0, 13, 239, 255, 38, 15, 3, 248, 0, 27, 24, 0, 4, 11, 234, 212, 226, 237, 10, 43, 22, 1, 254, 16, 6,
+			213, 181, 200, 208, 3, 72, 107, 54, 248, 194, 188, 203, 218, 235, 3, 51, 79, 55, 37, 240, 237, 203, 175, 233, 26, 51, 49, 5, 234, 235,
+			238, 226, 6, 13, 213, 242, 38, 17, 9, 0, 242, 30, 75, 21, 218, 197, 196, 235, 243, 44, 90, 39, 50, 32, 250, 5, 246, 189, 187, 240,
+			234, 231, 37, 70, 56, 234, 201, 219, 226, 11, 40, 24, 254, 251, 221, 216, 245, 13, 20, 18, 25, 234, 228, 18, 248, 253, 12, 21, 17, 2,
+			246, 214, 223, 37, 32, 255, 18, 35, 2, 220, 0, 9, 229, 32, 28, 237, 225, 236, 250, 11, 16, 241, 235, 7, 3, 251, 247, 6, 237, 196,
+			215, 250, 7, 4, 248, 52, 90, 13, 187, 221, 45, 246, 194, 228, 19, 30, 32, 48, 17, 21, 12, 218, 224, 6, 5, 234, 242, 248, 14, 43,
+			34, 17, 246, 194, 236, 248, 251, 7, 51, 14, 214, 20, 31, 249, 235, 212, 223, 253, 21, 46, 19, 227, 226, 248, 15, 39, 21, 1, 5, 227,
+			218, 255, 245, 7, 10, 16, 1, 2, 19, 250, 242, 233, 3, 255, 248, 18, 252, 225, 227, 0, 10, 20, 45, 255, 224, 243, 248, 241, 224, 253,
+			42, 27, 17, 28, 24, 227, 203, 223, 0, 254, 9, 16, 30, 45, 8, 16, 0, 212, 228, 254, 14, 16, 28, 9, 252, 227, 224, 231, 249, 25,
+			55, 18, 241, 227, 226, 252, 249, 249, 0, 4, 28, 27, 255, 253, 4, 249, 184, 168, 238, 37, 39, 50, 75, 33, 204, 197, 180, 202, 0, 247,
+			249, 56, 78, 25, 233, 215, 200, 187, 236, 5, 247, 28, 96, 107, 29, 234, 216, 150, 131, 193, 21, 57, 71, 70, 41, 8, 225, 186, 176, 239,
+			34, 45, 26, 10, 14, 243, 246, 213, 192, 21, 97, 87, 34, 250, 204, 204, 207, 224, 6, 26, 21, 30, 41, 6, 220, 208, 222, 242, 225, 2,
+			59, 41, 21, 5, 204, 196, 198, 212, 246, 5, 14, 20, 15, 41, 25, 243, 209, 204, 236, 227, 6, 72, 75, 60, 254, 200, 231, 18, 251, 207,
+			252, 55, 48, 7, 225, 1, 28, 236, 227, 12, 44, 38, 254, 239, 12, 11, 238, 215, 237, 12, 33, 0, 250, 21, 7, 13, 247, 199, 208, 228,
+			0, 26, 12, 39, 53, 9, 226, 221, 232, 245, 242, 243, 28, 42, 29, 22, 236, 224, 6, 1, 222, 227, 6, 10, 250, 248, 3, 17, 5, 234,
+			234, 249, 247, 237, 252, 6, 254, 248, 225, 5, 47, 25, 6, 254, 221, 226, 19, 9, 238, 255, 32, 33, 37, 30, 238, 236, 0, 228, 220, 18,
+			5, 246, 14, 40, 22, 244, 239, 239, 221, 213, 218, 225, 6, 45, 8, 1, 46, 30, 220, 200, 225, 241, 252, 252, 6, 28, 24, 17, 7, 9,
+			12, 252, 222, 230, 18, 1, 249, 26, 0, 14, 32, 26, 33, 12, 229, 216, 210, 228, 34, 36, 31, 37, 6, 244, 253, 241, 240, 236, 229, 8,
+			29, 35, 39, 19, 226, 233, 17, 13, 252, 241, 247, 253, 250, 8, 15, 2, 245, 2, 9, 244, 228, 234, 247, 4, 10, 25, 45, 22, 4, 250,
+			227, 201, 197, 234, 0, 13, 50, 41, 12, 0, 231, 207, 238, 252, 249, 4, 32, 45, 23, 19, 44, 1, 220, 251, 6, 4, 16, 8, 7, 35,
+			39, 25, 11, 255, 234, 237, 5, 8, 0, 242, 224, 245, 11, 18, 22, 254, 232, 227, 222, 229, 255, 0, 1, 254, 236, 5, 44, 32, 249, 219,
+			217, 237, 247, 254, 11, 25, 37, 34, 0, 231, 252, 12, 234, 221, 1, 26, 47, 29, 253, 251, 250, 254, 244, 252, 15, 28, 9, 8, 3, 240,
+			246, 251, 246, 248, 255, 0, 255, 251, 246, 243, 240, 236, 241, 244, 1, 13, 6, 248, 239, 225, 224, 243, 250, 244, 1, 14, 34, 41, 17, 248,
+			247, 3, 0, 242, 246, 7, 19, 19, 10, 9, 21, 25, 9, 251, 254, 5, 0, 3, 9, 251, 242, 254, 255, 1, 248, 242, 9, 15, 0, 250,
+			242, 227, 219, 237, 252, 7, 0, 20, 29, 248, 215, 226, 235, 238, 246, 3, 18, 14, 4, 248, 248, 250, 246, 248, 248, 0, 19, 18, 2, 0,
+			12, 11, 253, 236, 250, 17, 9, 251, 244, 5, 20, 20, 5, 5, 7, 1, 251, 248, 63, 10, 39, 0, 13, 248, 245, 253, 241, 11, 3, 240,
+			16, 34, 30, 0, 248, 250, 240, 9, 254, 13, 21, 14, 253, 236, 234, 1, 24, 0, 229, 248, 4, 9, 250, 0, 255, 246, 251, 231, 247, 0,
+			3, 243, 245, 244, 248, 2, 248, 244, 3, 12, 240, 4, 0, 244, 4, 34, 255, 235, 252, 12, 1, 9, 11, 29, 26, 228, 229, 241, 254, 17,
+			23, 0, 250, 3, 249, 217, 237, 3, 15, 10, 0, 255, 10, 225, 210, 25, 39, 6, 2, 255, 250, 8, 4, 2, 7, 39, 44, 3, 223, 214,
+			2, 48, 25, 223, 234, 14, 19, 246, 206, 228, 45, 36, 16, 245, 236, 229, 228, 248, 43, 57, 13, 239, 243, 243, 245, 7, 29, 29, 24, 245,
+			228, 238, 247, 14, 49, 43, 227, 216, 0, 34, 0, 237, 12, 51, 24, 212, 212, 14, 10, 226, 252, 28, 253, 235, 235, 245, 254, 250, 228, 0,
+			19, 241, 232, 254, 1, 231, 240, 249, 5, 21, 18, 253, 252, 236, 237, 6, 23, 17, 24, 3, 236, 7, 9, 2, 17, 14, 254, 248, 2, 6,
+			15, 7, 249, 9, 26, 251, 234, 10, 41, 16, 230, 227, 12, 31, 252, 247, 30, 48, 6, 219, 241, 6, 251, 1, 15, 20, 11, 230, 223, 252,
+			10, 0, 241, 249, 255, 243, 236, 246, 7, 1, 16, 11, 241, 222, 238, 14, 22, 11, 5, 9, 13, 2, 241, 222, 6, 41, 26, 249, 253, 9,
+			247, 230, 245, 12, 28, 254, 238, 248, 0, 227, 246, 15, 8, 249, 222, 226, 244, 28, 16, 254, 6, 0, 250, 233, 2, 8, 251, 0, 17, 4,
+			226, 230, 7, 15, 0, 229, 254, 45, 15, 233, 1, 42, 21, 233, 247, 30, 48, 19, 233, 220, 24, 54, 19, 6, 250, 223, 226, 251, 7, 30,
+			22, 16, 251, 227, 203, 236, 20, 27, 14, 244, 242, 239, 250, 12, 12, 0, 4, 2, 255, 16, 12, 247, 243, 255, 13, 24, 242, 220, 5, 28,
+			248, 210, 242, 24, 14, 8, 244, 242, 17, 7, 231, 244, 16, 27, 22, 9, 238, 6, 249, 226, 254, 43, 30, 242, 219, 233, 1, 6, 7, 4,
+			5, 245, 245, 254, 13, 249, 248, 35, 247, 240, 248, 0, 11, 25, 36, 3, 5, 6, 213, 237, 33, 26, 2, 241, 242, 224, 246, 4, 35, 4,
+			241, 28, 246, 206, 241, 20, 31, 18, 17, 244, 218, 217, 248, 57, 42, 226, 217, 2, 19, 230, 229, 24, 60, 15, 225, 222, 252, 245, 231, 18,
+			42, 18, 253, 3, 250, 229, 236, 10, 27, 11, 243, 248, 1, 239, 223, 7, 37, 10, 228, 235, 12, 3, 237, 0, 27, 24, 239, 243, 249, 251,
+			5, 9, 48, 50, 245, 220, 0, 47, 25, 12, 22, 26, 12, 237, 231, 249, 28, 1, 244, 253, 11, 247, 234, 243, 246, 12, 25, 3, 242, 233,
+			2, 16, 22, 254, 231, 12, 27, 0, 253, 30, 15, 243, 237, 235, 21, 44, 226, 196, 241, 252, 230, 239, 239, 247, 7, 243, 246, 8, 2, 243,
+			243, 254, 22, 10, 240, 246, 27, 0, 236, 7, 23, 11, 7, 235, 229, 34, 53, 239, 209, 255, 33, 29, 8, 226, 250, 36, 16, 205, 216, 1,
+			21, 2, 2, 18, 13, 242, 219, 227, 14, 25, 10, 251, 254, 14, 250, 253, 255, 15, 30, 248, 237, 6, 5, 233, 210, 0, 59, 33, 234, 245,
+			3, 5, 2, 15, 41, 54, 254, 222, 227, 236, 40, 57, 26, 250, 245, 249, 251, 16, 17, 254, 238, 247, 10, 16, 246, 241, 36, 16, 180, 189,
+			31, 27, 2, 13, 245, 198, 196, 15, 50, 43, 248, 222, 250, 239, 231, 8, 45, 32, 9, 4, 221, 206, 221, 8, 48, 30, 0, 234, 249, 225,
+			230, 27, 67, 32, 233, 232, 239, 242, 17, 6, 3, 37, 18, 233, 204, 235, 21, 6, 248, 2, 30, 15, 216, 205, 254, 42, 25, 255, 236, 246,
+			253, 250, 252, 26, 13, 7, 18, 16, 253, 227, 235, 25, 25, 243, 229, 31, 52, 252, 229, 250, 246, 243, 28, 50, 254, 224, 238, 25, 38, 254,
+			236, 255, 26, 20, 216, 218, 24, 38, 249, 252, 248, 226, 245, 242, 18, 58, 36, 239, 233, 241, 235, 249, 252, 6, 22, 35, 254, 217, 197, 12,
+			57, 55, 24, 238, 235, 231, 9, 25, 11, 244, 214, 251, 18, 236, 178, 226, 20, 255, 237, 0, 8, 243, 211, 219, 14, 54, 43, 1, 7, 246,
+			227, 233, 34, 87, 62, 242, 204, 225, 14, 27, 18, 39, 45, 20, 210, 195, 215, 9, 53, 22, 248, 18, 14, 206, 189, 0, 52, 56, 11, 233,
+			244, 246, 229, 231, 238, 28, 8, 204, 10, 54, 248, 230, 240, 231, 8, 30, 17, 237, 210, 247, 60, 70, 0, 212, 21, 38, 242, 226, 26, 70,
+			35, 244, 231, 234, 251, 5, 27, 34, 26, 0, 222, 225, 226, 5, 76, 59, 217, 168, 233, 23, 1, 248, 29, 53, 11, 240, 213, 231, 11, 21,
+			6, 5, 4, 240, 231, 224, 228, 5, 2, 238, 232, 229, 244, 247, 241, 242, 3, 13, 9, 238, 224, 255, 3, 8, 24, 250, 247, 20, 20, 247,
+			244, 255, 29, 7, 214, 247, 52, 32, 218, 246, 15, 0, 245, 246, 11, 14, 0, 252, 18, 241, 215, 17, 58, 35, 0, 6, 7, 245, 228, 222,
+			6, 65, 60, 231, 200, 235, 25, 252, 242, 18, 31, 6, 250, 0, 9, 5, 216, 1, 62, 22, 1, 250, 9, 27, 28, 33, 32, 0, 229, 243,
+			248, 16, 14, 15, 6, 7, 249, 219, 227, 249, 11, 20, 4, 229, 241, 7, 0, 242, 254, 225, 185, 253, 58, 16, 216, 223, 232, 244, 246, 235,
+			13, 40, 8, 220, 201, 211, 8, 55, 18, 239, 241, 250, 254, 2, 18, 30, 22, 44, 22, 217, 193, 7, 70, 52, 28, 248, 218, 234, 238, 19,
+			37, 13, 254, 16, 1, 215, 222, 14, 28, 28, 14, 248, 240, 11, 0, 250, 18, 18, 255, 222, 241, 20, 29, 252, 233, 254, 7, 235, 231, 21,
+			38, 238, 226, 238, 236, 3, 25, 23, 11, 231, 234, 2, 1, 26, 43, 22, 223, 220, 241, 238, 254, 19, 33, 1, 234, 186, 207, 34, 47, 16,
+			245, 3, 10, 232, 204, 245, 60, 48, 235, 248, 16, 2, 0, 16, 11, 25, 37, 12, 254, 250, 251, 48, 53, 251, 236, 9, 25, 14, 247, 2,
+			250, 223, 172, 236, 25, 38, 47, 0, 174, 182, 237, 5, 5, 26, 47, 0, 204, 190, 199, 254, 72, 54, 251, 221, 236, 252, 18, 12, 12, 25,
+			23, 8, 234, 231, 19, 19, 239, 233, 25, 30, 0, 0, 21, 9, 241, 212, 222, 22, 45, 22, 217, 228, 18, 13, 237, 220, 233, 18, 33, 246,
+			201, 221, 1, 14, 2, 8, 11, 228, 228, 8, 20, 14, 18, 24, 252, 15, 21, 21, 29, 15, 0, 48, 74, 247, 223, 35, 57, 6, 18, 45,
+			27, 241, 237, 216, 247, 7, 249, 239, 252, 4, 5, 241, 245, 233, 226, 249, 255, 252, 227, 248, 25, 0, 186, 237, 43, 241, 226, 13, 31, 238,
+			178, 185, 17, 51, 3, 254, 25, 0, 205, 212, 255, 22, 39, 25, 254, 244, 246, 226, 254, 48, 40, 19, 235, 202, 225, 19, 19, 23, 46, 32,
+			236, 169, 168, 234, 51, 74, 66, 25, 212, 146, 199, 26, 83, 74, 35, 241, 196, 176, 224, 32, 92, 79, 12, 242, 207, 205, 0, 66, 111, 79,
+			242, 192, 199, 4, 63, 82, 48, 242, 227, 195, 210, 12, 71, 49, 251, 221, 185, 208, 242, 3, 34, 48, 6, 205, 202, 235, 15, 38, 22, 4,
+			228, 236, 250, 226, 229, 19, 34, 1, 251, 15, 11, 250, 212, 211, 10, 48, 26, 253, 0, 245, 235, 1, 11, 25, 11, 13, 20, 249, 216, 221,
+			13, 58, 30, 239, 201, 230, 244, 0, 0, 6, 251, 13, 11, 228, 225, 243, 29, 47, 13, 252, 251, 228, 223, 24, 57, 15, 0, 0, 2, 247,
+			236, 6, 22, 7, 0, 251, 243, 236, 238, 250, 9, 37, 35, 234, 207, 248, 17, 5, 255, 11, 1, 223, 205, 235, 48, 38, 8, 238, 221, 236,
+			5, 49, 45, 1, 233, 253, 8, 4, 17, 41, 35, 8, 246, 240, 5, 35, 33, 4, 23, 10, 232, 230, 243, 11, 28, 36, 4, 250, 247, 199,
+			220, 4, 28, 45, 15, 187, 187, 11, 17, 226, 240, 20, 11, 235, 202, 219, 238, 249, 241, 41, 54, 219, 207, 235, 248, 15, 18, 5, 34, 35,
+			247, 206, 247, 48, 54, 4, 219, 250, 18, 1, 1, 12, 253, 255, 18, 228, 226, 39, 31, 222, 244, 238, 236, 5, 9, 21, 42, 6, 206, 208,
+			234, 8, 73, 103, 1, 185, 201, 217, 2, 51, 64, 78, 42, 192, 152, 226, 31, 47, 65, 78, 42, 179, 132, 228, 36, 40, 60, 44, 22, 249,
+			218, 185, 236, 44, 32, 39, 53, 16, 218, 183, 226, 29, 48, 38, 235, 230, 10, 0, 226, 247, 27, 25, 253, 217, 239, 3, 250, 234, 239, 20,
+			233, 226, 2, 24, 38, 6, 192, 236, 31, 236, 230, 9, 26, 50, 10, 193, 186, 238, 26, 29, 19, 21, 1, 226, 205, 223, 250, 38, 45, 27,
+			251, 214, 190, 235, 33, 50, 37, 253, 216, 212, 238, 5, 23, 8, 21, 18, 242, 217, 207, 7, 39, 38, 6, 227, 246, 33, 37, 252, 9, 35,
+			1, 211, 243, 23, 42, 20, 246, 8, 19, 222, 199, 10, 70, 34, 230, 205, 224, 25, 14, 226, 12, 51, 245, 198, 1, 37, 254, 233, 254, 19,
+			43, 10, 208, 218, 9, 31, 40, 8, 223, 233, 8, 240, 226, 2, 57, 34, 241, 3, 255, 244, 9, 38, 42, 18, 251, 0, 255, 235, 8, 30,
+			4, 6, 16, 254, 240, 249, 11, 41, 247, 227, 252, 2, 2, 5, 254, 14, 26, 10, 228, 227, 243, 11, 19, 253, 243, 0, 4, 238, 240, 3,
+			18, 255, 229, 246, 246, 14, 245, 214, 240, 12, 8, 246, 246, 253, 8, 253, 250, 253, 9, 28, 0, 248, 255, 254, 248, 16, 10, 228, 247, 255,
+			248, 5, 255, 248, 0, 249, 247, 241, 238, 239, 242, 2, 28, 24, 7, 237, 211, 226, 19, 36, 33, 29, 4, 251, 221, 221, 17, 42, 30, 0,
+			252, 239, 220, 5, 17, 20, 13, 13, 241, 226, 241, 0, 7, 21, 32, 35, 16, 253, 254, 23, 2, 253, 29, 39, 16, 242, 242, 24, 14, 0,
+			12, 19, 0, 221, 225, 10, 35, 15, 249, 8, 7, 221, 222, 3, 17, 26, 8, 242, 255, 251, 237, 219, 1, 35, 40, 243, 189, 202, 235, 12,
+			16, 25, 33, 255, 195, 183, 222, 252, 51, 38, 5, 0, 233, 180, 184, 11, 90, 100, 41, 219, 208, 1, 239, 230, 34, 68, 46, 255, 227, 201,
+			220, 5, 19, 47, 38, 251, 201, 181, 243, 23, 25, 21, 21, 6, 235, 202, 196, 10, 58, 33, 253, 240, 236, 246, 18, 2, 244, 9, 36, 16,
+			238, 243, 4, 14, 24, 1, 223, 4, 43, 255, 221, 9, 31, 4, 233, 253, 33, 17, 7, 52, 50, 2, 230, 231, 248, 1, 3, 52, 62, 14,
+			219, 197, 250, 47, 14, 234, 16, 38, 245, 197, 205, 240, 17, 47, 44, 12, 194, 183, 241, 25, 44, 15, 254, 255, 227, 199, 229, 23, 40, 46,
+			6, 207, 186, 213, 249, 16, 41, 42, 43, 235, 160, 194, 27, 89, 51, 243, 238, 237, 213, 213, 14, 72, 62, 11, 240, 225, 221, 3, 46, 44,
+			28, 0, 228, 189, 213, 20, 26, 32, 31, 1, 229, 199, 215, 11, 36, 9, 248, 10, 2, 238, 0, 14, 20, 6, 12, 8, 244, 242, 9, 32,
+			2, 235, 2, 12, 1, 254, 12, 18, 0, 240, 252, 241, 243, 39, 33, 239, 213, 246, 14, 0, 247, 252, 38, 22, 199, 190, 241, 31, 28, 244,
+			237, 2, 246, 214, 254, 55, 27, 239, 239, 13, 14, 248, 8, 0, 0, 11, 243, 242, 245, 5, 33, 249, 225, 250, 20, 248, 222, 22, 56, 6,
+			201, 218, 14, 30, 7, 251, 23, 34, 246, 204, 233, 24, 54, 34, 6, 2, 246, 234, 228, 245, 39, 38, 6, 242, 233, 240, 3, 15, 23, 31,
+			9, 233, 243, 254, 0, 2, 23, 40, 26, 252, 232, 244, 245, 0, 37, 28, 250, 236, 223, 227, 251, 5, 21, 49, 26, 235, 202, 215, 11, 39,
+			19, 253, 235, 249, 249, 224, 227, 16, 43, 14, 245, 232, 239, 255, 254, 11, 19, 6, 238, 241, 5, 12, 0, 242, 245, 251, 2, 15, 252, 235,
+			254, 14, 253, 244, 27, 27, 237, 235, 1, 28, 12, 243, 249, 6, 5, 0, 0, 6, 1, 11, 1, 244, 1, 248, 238, 2, 21, 14, 5, 0,
+			0, 11, 252, 216, 220, 26, 61, 16, 244, 0, 4, 232, 225, 245, 32, 63, 29, 240, 228, 214, 228, 18, 38, 32, 5, 224, 223, 242, 252, 247,
+			28, 56, 11, 219, 206, 213, 251, 24, 36, 36, 32, 1, 219, 214, 232, 10, 51, 50, 21, 229, 212, 239, 250, 5, 38, 52, 25, 232, 194, 223,
+			7, 20, 28, 39, 18, 237, 214, 236, 249, 0, 30, 35, 14, 230, 219, 241, 251, 255, 12, 21, 243, 215, 234, 0, 7, 254, 1, 254, 248, 248,
+			252, 255, 251, 245, 235, 255, 46, 53, 3, 233, 243, 249, 241, 240, 0, 40, 65, 29, 214, 220, 255, 1, 255, 39, 52, 10, 231, 212, 230, 15,
+			43, 28, 252, 245, 243, 250, 8, 251, 0, 26, 37, 10, 233, 219, 236, 14, 39, 36, 5, 235, 243, 252, 239, 0, 34, 20, 247, 240, 8, 14,
+			237, 241, 13, 19, 1, 254, 5, 253, 237, 233, 0, 23, 18, 252, 237, 245, 4, 8, 250, 255, 6, 1, 232, 222, 3, 40, 39, 0, 229, 242,
+			247, 237, 248, 15, 32, 24, 235, 221, 238, 254, 2, 244, 0, 30, 14, 232, 217, 232, 0, 11, 18, 8, 9, 1, 222, 235, 11, 7, 16, 23,
+			249, 242, 250, 246, 8, 40, 9, 224, 245, 19, 22, 5, 0, 1, 255, 253, 0, 14, 12, 254, 254, 17, 12, 229, 232, 0, 11, 10, 7, 251,
+			242, 246, 231, 230, 8, 26, 23, 5, 226, 222, 252, 23, 23, 7, 254, 250, 4, 21, 21, 23, 31, 26, 0, 239, 249, 13, 20, 16, 18, 30,
+			17, 250, 0, 17, 11, 247, 245, 236, 0, 25, 13, 235, 237, 253, 249, 245, 240, 238, 246, 247, 250, 253, 0, 0, 244, 244, 239, 242, 5, 13,
+			254, 240, 236, 253, 5, 252, 251, 9, 6, 235, 217, 241, 11, 12, 10, 15, 18, 254, 234, 247, 20, 10, 245, 2, 22, 17, 250, 242, 4, 1,
+			245, 231, 249, 26, 26, 4, 6, 9, 243, 228, 245, 16, 33, 19, 240, 235, 4, 18, 247, 235, 8, 33, 11, 242, 237, 251, 12, 11, 8, 15,
+			10, 1, 254, 253, 245, 255, 20, 31, 18, 252, 244, 253, 7, 23, 29, 23, 0, 239, 235, 247, 17, 26, 17, 3, 249, 242, 229, 235, 0, 17,
+			13, 255, 245, 246, 245, 239, 242, 11, 27, 12, 245, 231, 241, 246, 248, 10, 34, 26, 246, 233, 241, 254, 255, 247, 22, 50, 21, 234, 231, 4,
+			17, 12, 7, 0, 248, 246, 254, 10, 0, 237, 252, 17, 9, 247, 225, 237, 13, 11, 0, 1, 247, 227, 222, 235, 4, 25, 15, 0, 238, 222,
+			215, 234, 3, 26, 22, 0, 35, 9, 17, 0, 236, 5, 4, 238, 4, 25, 5, 241, 231, 8, 35, 1, 223, 21, 16, 5, 243, 242, 12, 32,
+			16, 240, 211, 207, 18, 20, 252, 2, 247, 8, 0, 17, 23, 40, 29, 243, 207, 190, 244, 45, 62, 5, 244, 212, 237, 251, 232, 235, 35, 66,
+			40, 247, 203, 203, 3, 55, 45, 26, 229, 225, 254, 240, 212, 243, 45, 54, 35, 235, 168, 203, 40, 70, 46, 233, 199, 3, 20, 6, 0, 13,
+			7, 16, 214, 200, 8, 46, 51, 12, 187, 184, 21, 72, 22, 235, 231, 17, 47, 16, 226, 200, 1, 46, 5, 214, 221, 16, 43, 10, 230, 249,
+			27, 3, 225, 5, 35, 16, 8, 209, 200, 9, 5, 64, 80, 217, 195, 243, 254, 53, 18, 218, 226, 5, 255, 252, 240, 243, 38, 54, 240, 226,
+			28, 3, 246, 7, 9, 6, 242, 194, 236, 39, 51, 22, 226, 238, 9, 15, 234, 245, 24, 29, 2, 218, 194, 245, 36, 49, 24, 241, 225, 8,
+			31, 10, 6, 244, 233, 234, 247, 245, 25, 35, 16, 255, 234, 213, 10, 17, 0, 255, 12, 7, 3, 250, 0, 254, 12, 22, 235, 229, 222, 251,
+			47, 56, 5, 247, 204, 226, 1, 5, 20, 17, 52, 47, 208, 169, 228, 13, 37, 33, 43, 246, 206, 208, 255, 46, 13, 2, 13, 5, 2, 233,
+			230, 5, 37, 20, 243, 219, 219, 8, 45, 17, 8, 254, 236, 215, 245, 29, 56, 42, 242, 215, 211, 243, 252, 29, 61, 48, 224, 161, 201, 11,
+			59, 58, 32, 232, 221, 220, 244, 19, 46, 12, 0, 241, 223, 13, 36, 253, 240, 13, 245, 241, 248, 242, 249, 23, 1, 8, 20, 1, 255, 255,
+			0, 250, 254, 253, 28, 11, 244, 249, 227, 230, 35, 34, 1, 230, 216, 1, 49, 32, 241, 219, 213, 10, 58, 28, 9, 255, 230, 244, 2, 237,
+			251, 18, 0, 14, 16, 250, 237, 225, 230, 16, 32, 7, 3, 12, 2, 241, 231, 23, 57, 12, 230, 236, 247, 249, 4, 239, 229, 14, 8, 0,
+			9, 3, 21, 15, 222, 243, 25, 19, 17, 248, 250, 255, 224, 232, 22, 37, 10, 245, 240, 230, 4, 20, 231, 239, 40, 41, 252, 231, 254, 13,
+			4, 243, 254, 26, 2, 235, 217, 235, 5, 18, 26, 9, 2, 15, 15, 238, 235, 8, 33, 254, 237, 250, 12, 255, 217, 232, 14, 12, 10, 253,
+			252, 15, 24, 252, 238, 246, 9, 9, 14, 44, 11, 223, 202, 229, 15, 35, 39, 245, 236, 231, 234, 254, 43, 52, 1, 175, 170, 20, 70, 63,
+			13, 201, 11, 35, 248, 242, 14, 5, 35, 8, 187, 181, 240, 24, 40, 18, 229, 23, 18, 238, 242, 42, 48, 31, 232, 132, 203, 68, 61, 5,
+			236, 230, 14, 31, 242, 5, 12, 6, 210, 206, 13, 70, 39, 254, 241, 235, 249, 241, 232, 245, 23, 51, 19, 199, 200, 239, 46, 34, 20, 26,
+			20, 246, 226, 241, 0, 240, 20, 45, 248, 230, 241, 237, 16, 24, 230, 222, 2, 250, 17, 26, 8, 8, 252, 199, 231, 41, 64, 60, 5, 234,
+			249, 9, 218, 239, 28, 246, 202, 206, 228, 20, 33, 3, 10, 32, 7, 242, 4, 242, 39, 74, 16, 6, 220, 191, 227, 16, 39, 31, 235, 179,
+			189, 244, 15, 64, 101, 32, 195, 180, 210, 26, 78, 51, 41, 253, 196, 212, 228, 0, 53, 41, 251, 232, 218, 217, 254, 23, 9, 26, 29, 246,
+			226, 248, 17, 15, 2, 245, 2, 19, 241, 238, 13, 9, 25, 252, 241, 249, 251, 12, 252, 1, 251, 232, 248, 9, 253, 11, 8, 4, 6, 240,
+			5, 22, 21, 8, 3, 244, 252, 253, 248, 248, 213, 228, 17, 39, 18, 25, 0, 242, 241, 224, 235, 29, 28, 30, 6, 239, 3, 220, 222, 9,
+			37, 62, 26, 215, 211, 247, 17, 13, 227, 246, 0, 252, 251, 245, 2, 54, 67, 242, 197, 233, 17, 10, 43, 1, 199, 233, 26, 19, 0, 241,
+			7, 23, 2, 234, 225, 0, 0, 251, 255, 18, 43, 1, 219, 238, 28, 51, 34, 221, 210, 238, 248, 5, 19, 6, 254, 1, 254, 242, 9, 7,
+			6, 241, 238, 252, 251, 11, 33, 51, 22, 255, 225, 201, 229, 13, 27, 24, 8, 238, 236, 243, 240, 253, 0, 18, 20, 255, 1, 19, 35, 13,
+			230, 233, 249, 255, 27, 9, 251, 248, 238, 220, 220, 13, 63, 45, 250, 230, 187, 217, 45, 54, 39, 254, 231, 247, 17, 6, 7, 34, 45, 247,
+			185, 174, 211, 252, 21, 40, 50, 24, 236, 217, 227, 18, 52, 57, 26, 237, 221, 233, 248, 9, 235, 252, 28, 4, 248, 221, 236, 1, 11, 21,
+			18, 9, 1, 247, 11, 34, 241, 217, 235, 26, 41, 3, 236, 5, 4, 248, 212, 194, 13, 90, 59, 10, 202, 206, 1, 249, 0, 18, 37, 28,
+			249, 210, 212, 5, 33, 24, 37, 26, 227, 220, 233, 243, 14, 26, 14, 251, 254, 240, 214, 239, 30, 41, 41, 253, 222, 221, 227, 15, 56, 49,
+			10, 245, 222, 241, 245, 6, 255, 218, 243, 26, 19, 0, 247, 238, 32, 34, 243, 234, 236, 22, 39, 25, 4, 238, 230, 243, 232, 242, 9, 9,
+			34, 3, 236, 238, 255, 254, 20, 14, 10, 14, 16, 6, 204, 221, 11, 24, 31, 255, 241, 249, 248, 255, 246, 0, 24, 24, 3, 228, 236, 0,
+			250, 4, 15, 14, 16, 247, 232, 250, 28, 21, 247, 239, 2, 15, 8, 236, 215, 13, 31, 254, 221, 240, 40, 42, 244, 216, 255, 40, 16, 233,
+			222, 10, 55, 34, 220, 209, 232, 253, 247, 251, 53, 45, 1, 229, 219, 246, 32, 37, 243, 240, 3, 19, 255, 225, 219, 13, 22, 14, 5, 254,
+			3, 10, 238, 210, 243, 30, 40, 27, 16, 242, 246, 227, 229, 8, 18, 21, 14, 237, 238, 255, 241, 0, 253, 9, 36, 24, 230, 224, 0, 31,
+			35, 3, 238, 249, 3, 232, 222, 239, 11, 34, 15, 5, 249, 21, 10, 241, 239, 4, 30, 9, 225, 232, 13, 12, 246, 215, 242, 28, 29, 34,
+			15, 255, 246, 240, 230, 235, 30, 35, 254, 233, 235, 250, 8, 7, 249, 33, 39, 0, 228, 231, 240, 0, 245, 7, 22, 23, 15, 248, 218, 238,
+			12, 42, 28, 243, 239, 231, 221, 13, 32, 12, 0, 8, 249, 240, 231, 1, 37, 23, 14, 255, 224, 234, 237, 0, 24, 35, 251, 227, 251, 17,
+			2, 250, 253, 14, 27, 253, 226, 239, 13, 9, 255, 254, 24, 25, 242, 230, 231, 238, 10, 15, 22, 254, 253, 242, 10, 21, 237, 0, 19, 10,
+			11, 5, 227, 227, 13, 27, 255, 228, 245, 13, 18, 13, 234, 230, 13, 22, 254, 241, 4, 28, 20, 251, 235, 241, 5, 2, 248, 252, 252, 19,
+			12, 252, 251, 19, 3, 236, 5, 1, 252, 254, 243, 242, 13, 13, 249, 249, 2, 17, 28, 7, 246, 253, 249, 235, 6, 254, 5, 6, 254, 252,
+			6, 17, 242, 248, 244, 254, 39, 30, 224, 215, 255, 24, 27, 3, 228, 255, 18, 253, 229, 241, 17, 14, 31, 248, 234, 254, 15, 252, 11, 4,
+			0, 10, 9, 235, 213, 248, 34, 31, 242, 235, 242, 23, 7, 238, 252, 17, 3, 255, 2, 14, 37, 245, 220, 229, 9, 34, 15, 248, 244, 241,
+			238, 9, 36, 22, 241, 228, 230, 230, 18, 33, 23, 3, 234, 234, 22, 15, 237, 250, 16, 39, 21, 250, 226, 229, 251, 1, 15, 7, 6, 0,
+			238, 249, 254, 227, 241, 9, 33, 54, 30, 216, 198, 232, 11, 58, 59, 26, 255, 207, 199, 235, 0, 26, 44, 14, 234, 221, 242, 247, 245, 5,
+			26, 40, 9, 235, 224, 1, 23, 19, 5, 1, 0, 1, 252, 251, 255, 5, 25, 255, 217, 224, 249, 23, 16, 2, 241, 233, 255, 25, 10, 9,
+			11, 243, 3, 27, 14, 254, 252, 7, 225, 204, 8, 46, 20, 248, 214, 234, 15, 3, 253, 20, 21, 11, 246, 227, 0, 25, 28, 11, 227, 206,
+			247, 37, 42, 4, 247, 20, 240, 196, 207, 24, 51, 42, 8, 225, 239, 244, 250, 10, 24, 27, 7, 229, 209, 235, 15, 56, 40, 8, 229, 226,
+			232, 244, 6, 36, 12, 242, 227, 242, 11, 44, 29, 1, 0, 237, 230, 242, 6, 10, 28, 10, 207, 218, 11, 21, 31, 28, 235, 243, 254, 251,
+			251, 6, 32, 12, 252, 226, 0, 35, 249, 223, 230, 253, 29, 25, 243, 219, 2, 22, 7, 10, 245, 14, 27, 246, 235, 1, 0, 9, 12, 242,
+			239, 5, 4, 254, 247, 0, 10, 4, 250, 250, 30, 5, 220, 241, 9, 26, 26, 248, 242, 16, 20, 231, 212, 243, 15, 56, 18, 232, 247, 250,
+			238, 250, 246, 30, 32, 255, 239, 232, 232, 16, 26, 11, 26, 11, 254, 236, 226, 241, 5, 1, 250, 22, 18, 244, 225, 0, 24, 23, 19, 247,
+			242, 4, 0, 244, 253, 2, 22, 254, 223, 236, 14, 14, 250, 0, 24, 27, 250, 214, 222, 34, 58, 26, 221, 203, 253, 25, 19, 0, 240, 0,
+			11, 223, 243, 249, 11, 34, 252, 248, 14, 4, 25, 5, 223, 3, 14, 20, 0, 207, 227, 9, 21, 28, 9, 240, 243, 250, 0, 248, 2, 33,
+			22, 231, 210, 242, 37, 40, 15, 0, 238, 242, 6, 1, 228, 251, 19, 25, 255, 244, 242, 245, 239, 254, 15, 13, 18, 6, 253, 16, 7, 251,
+			251, 246, 254, 1, 3, 251, 231, 241, 1, 11, 36, 31, 243, 230, 13, 245, 247, 10, 254, 5, 26, 247, 215, 242, 11, 31, 28, 0, 246, 0,
+			239, 234, 242, 7, 16, 25, 0, 241, 253, 12, 0, 255, 250, 8, 29, 253, 221, 239, 16, 29, 15, 228, 216, 253, 25, 28, 255, 247, 255, 0,
+			22, 249, 237, 253, 8, 254, 252, 14, 19, 250, 251, 241, 252, 0, 13, 21, 5, 245, 233, 5, 9, 13, 12, 239, 214, 233, 18, 33, 29, 246,
+			232, 255, 31, 2, 255, 3, 250, 0, 252, 249, 8, 11, 240, 247, 0, 247, 7, 4, 246, 9, 28, 18, 246, 218, 238, 25, 29, 6, 249, 244,
+			238, 246, 255, 10, 38, 24, 241, 234, 240, 249, 16, 11, 20, 0, 240, 223, 232, 254, 33, 38, 14, 248, 220, 242, 12, 16, 17, 255, 243, 253,
+			0, 15, 12, 247, 1, 236, 218, 255, 25, 33, 27, 250, 234, 239, 0, 4, 242, 254, 39, 44, 0, 219, 206, 246, 20, 7, 243, 250, 30, 35,
+			237, 224, 255, 22, 30, 8, 5, 254, 5, 247, 229, 215, 252, 20, 28, 0, 234, 250, 3, 245, 245, 13, 28, 52, 18, 225, 224, 3, 23, 1,
+			254, 13, 2, 229, 206, 231, 13, 39, 19, 10, 0, 231, 236, 3, 17, 31, 28, 9, 247, 225, 217, 237, 5, 36, 37, 16, 237, 222, 227, 3,
+			15, 31, 10, 243, 246, 236, 18, 31, 247, 237, 6, 23, 2, 237, 240, 239, 5, 26, 2, 255, 2, 1, 13, 242, 242, 253, 0, 28, 29, 249,
+			226, 243, 2, 9, 255, 11, 18, 8, 242, 226, 232, 11, 22, 20, 13, 253, 244, 233, 228, 248, 15, 47, 42, 243, 228, 244, 252, 20, 21, 0,
+			10, 231, 207, 254, 26, 14, 254, 244, 248, 24, 13, 245, 224, 252, 29, 24, 0, 235, 2, 19, 26, 249, 231, 247, 17, 255, 236, 253, 7, 0,
+			248, 0, 2, 251, 0, 255, 14, 29, 12, 239, 238, 253, 8, 27, 9, 245, 237, 240, 1, 8, 3, 13, 5, 243, 236, 1, 2, 252, 4, 25,
+			6, 4, 255, 249, 255, 239, 10, 27, 254, 244, 246, 241, 0, 19, 4, 3, 9, 247, 1, 16, 240, 244, 248, 250, 6, 4, 13, 13, 249, 239,
+			255, 14, 23, 9, 251, 237, 246, 2, 28, 11, 245, 222, 243, 6, 18, 4, 1, 237, 1, 11, 7, 251, 246, 8, 29, 8, 2, 253, 236, 229,
+			5, 25, 13, 16, 245, 225, 232, 1, 15, 20, 7, 246, 4, 245, 0, 13, 1, 249, 8, 14, 18, 246, 211, 246, 25, 31, 0, 253, 249, 231,
+			0, 2, 7, 31, 16, 249, 228, 211, 241, 31, 35, 16, 2, 241, 241, 237, 255, 27, 21, 6, 243, 242, 252, 3, 14, 8, 1, 2, 248, 234,
+			2, 3, 13, 7, 230, 227, 14, 11, 13, 19, 2, 254, 2, 236, 244, 21, 19, 0, 255, 0, 250, 241, 233, 252, 18, 19, 19, 7, 241, 245,
+			239, 233, 9, 29, 28, 8, 253, 241, 238, 231, 242, 11, 43, 27, 5, 237, 223, 243, 15, 14, 11, 16, 0, 241, 247, 0, 245, 245, 245, 20,
+			38, 16, 243, 226, 236, 10, 21, 1, 247, 255, 0, 22, 3, 237, 0, 0, 10, 15, 1, 5, 248, 240, 1, 4, 249, 248, 255, 255, 2, 3,
+			2, 17, 8, 251, 235, 253, 24, 25, 7, 236, 239, 5, 254, 248, 6, 0, 8, 0, 246, 250, 4, 9, 17, 11, 245, 244, 246, 247, 14, 11,
+			242, 238, 6, 29, 30, 4, 232, 245, 253, 248, 0, 251, 0, 24, 23, 243, 220, 235, 7, 37, 32, 254, 238, 242, 255, 1, 7, 6, 8, 253,
+			235, 238, 7, 6, 7, 12, 2, 13, 248, 223, 11, 40, 14, 243, 240, 229, 228, 5, 23, 40, 44, 246, 206, 221, 240, 12, 28, 15, 8, 3,
+			0, 238, 230, 0, 37, 30, 251, 239, 254, 2, 246, 243, 246, 6, 22, 12, 1, 253, 246, 240, 251, 7, 15, 10, 4, 9, 248, 246, 242, 249,
+			255, 6, 15, 13, 7, 247, 244, 253, 0, 2, 16, 23, 251, 231, 244, 6, 9, 13, 252, 239, 251, 252, 252, 10, 13, 8, 254, 252, 243, 5,
+			13, 9, 2, 3, 247, 245, 6, 9, 0, 0, 85, 11, 17, 0, 226, 222, 223, 227, 234, 254, 34, 46, 27, 14, 35, 68, 75, 54, 29, 12,
+			1, 255, 246, 244, 242, 250, 3, 3, 253, 225, 207, 195, 187, 199, 222, 243, 11, 20, 11, 0, 2, 16, 29, 30, 20, 1, 247, 242, 240, 236,
+			0, 43, 78, 70, 35, 11, 3, 8, 4, 247, 229, 222, 226, 225, 229, 233, 244, 248, 10, 23, 17, 252, 241, 252, 2, 1, 8, 33, 47, 48,
+			29, 252, 243, 241, 232, 211, 195, 188, 208, 212, 224, 252, 42, 70, 84, 78, 67, 44, 22, 14, 242, 212, 187, 179, 186, 190, 180, 189, 210, 228,
+			242, 8, 17, 21, 39, 46, 37, 46, 62, 84, 83, 65, 51, 38, 7, 228, 203, 193, 188, 195, 192, 196, 220, 231, 0, 36, 61, 42, 16, 252,
+			4, 6, 11, 1, 243, 237, 254, 31, 52, 40, 9, 245, 252, 8, 13, 9, 13, 24, 36, 42, 42, 39, 40, 51, 53, 22, 226, 196, 200, 216,
+			218, 212, 229, 239, 227, 222, 231, 255, 0, 253, 243, 243, 250, 0, 1, 242, 230, 242, 17, 45, 31, 5, 3, 30, 12, 231, 208, 204, 232, 251,
+			239, 229, 241, 19, 65, 58, 35, 34, 45, 44, 17, 255, 245, 229, 212, 164, 132, 145, 179, 225, 27, 43, 23, 23, 42, 65, 51, 36, 22, 24,
+			25, 22, 6, 0, 253, 3, 26, 20, 20, 26, 16, 244, 230, 225, 0, 31, 27, 10, 11, 7, 245, 246, 245, 244, 254, 11, 9, 237, 228, 222,
+			245, 14, 19, 12, 10, 5, 15, 6, 243, 239, 239, 250, 0, 239, 207, 200, 215, 240, 0, 254, 1, 34, 57, 41, 6, 227, 208, 236, 13, 29,
+			250, 218, 215, 248, 4, 236, 229, 240, 26, 45, 24, 9, 0, 6, 33, 42, 27, 12, 17, 29, 28, 27, 22, 17, 18, 22, 6, 228, 199, 208,
+			231, 250, 242, 242, 241, 15, 39, 40, 11, 237, 242, 11, 16, 251, 208, 196, 240, 40, 30, 247, 251, 50, 82, 61, 253, 219, 223, 241, 254, 0,
+			0, 10, 30, 43, 26, 250, 229, 228, 227, 216, 184, 192, 206, 210, 220, 245, 2, 34, 58, 76, 80, 57, 16, 248, 226, 213, 202, 214, 225, 231,
+			238, 242, 237, 247, 18, 48, 40, 15, 252, 231, 235, 249, 2, 14, 20, 20, 25, 9, 227, 211, 250, 46, 56, 39, 23, 30, 54, 43, 32, 31,
+			28, 21, 253, 213, 202, 223, 3, 15, 242, 217, 239, 32, 24, 241, 216, 235, 16, 21, 240, 228, 3, 47, 44, 1, 230, 239, 0, 12, 254, 238,
+			223, 210, 231, 3, 15, 0, 9, 25, 9, 222, 202, 212, 226, 232, 223, 226, 227, 234, 245, 6, 10, 8, 12, 20, 9, 250, 231, 236, 8, 25,
+			21, 10, 9, 3, 6, 13, 26, 32, 38, 33, 33, 36, 23, 6, 255, 0, 9, 22, 28, 18, 253, 232, 231, 249, 2, 5, 253, 11, 52, 58,
+			45, 14, 17, 23, 42, 30, 7, 6, 25, 19, 254, 225, 227, 5, 8, 234, 217, 235, 15, 27, 1, 218, 200, 213, 241, 233, 216, 219, 207, 219,
+			246, 10, 251, 218, 207, 223, 217, 188, 182, 199, 240, 245, 220, 226, 19, 54, 67, 56, 33, 43, 31, 255, 244, 250, 242, 234, 239, 3, 4, 233,
+			239, 27, 59, 39, 243, 227, 248, 33, 46, 3, 220, 232, 19, 67, 76, 44, 24, 13, 16, 4, 247, 243, 11, 35, 28, 6, 250, 11, 57, 101,
+			101, 74, 38, 10, 16, 24, 13, 249, 222, 214, 226, 233, 206, 199, 243, 20, 8, 216, 205, 245, 250, 223, 229, 236, 230, 231, 248, 6, 8, 0,
+			0, 243, 226, 233, 243, 236, 241, 213, 176, 180, 244, 36, 38, 30, 24, 41, 28, 15, 244, 238, 4, 11, 238, 200, 188, 207, 228, 245, 1, 3,
+			250, 233, 236, 3, 6, 14, 24, 63, 91, 77, 60, 37, 23, 7, 254, 7, 1, 223, 196, 219, 10, 8, 2, 9, 54, 86, 65, 7, 2, 29,
+			33, 13, 240, 232, 0, 253, 2, 241, 225, 246, 16, 0, 255, 229, 211, 246, 244, 243, 0, 245, 253, 25, 26, 1, 250, 4, 24, 38, 255, 210,
+			225, 0, 248, 204, 202, 233, 1, 19, 44, 31, 1, 0, 8, 21, 0, 229, 243, 255, 21, 9, 250, 244, 234, 247, 10, 249, 210, 167, 174, 202,
+			221, 236, 247, 11, 45, 75, 61, 49, 44, 64, 79, 46, 2, 229, 227, 246, 10, 0, 253, 8, 12, 17, 249, 219, 231, 249, 9, 11, 247, 244,
+			251, 8, 27, 20, 11, 30, 39, 35, 4, 244, 235, 244, 7, 29, 26, 11, 5, 22, 18, 20, 28, 36, 38, 23, 14, 14, 7, 254, 244, 251,
+			14, 8, 237, 225, 227, 223, 225, 205, 199, 220, 246, 249, 200, 181, 221, 8, 16, 237, 235, 5, 28, 16, 233, 221, 237, 222, 235, 1, 214, 193,
+			222, 255, 244, 241, 239, 245, 237, 235, 232, 234, 225, 0, 28, 35, 26, 12, 12, 19, 24, 30, 9, 231, 239, 7, 3, 255, 12, 34, 63, 70,
+			36, 27, 34, 39, 5, 235, 4, 42, 46, 15, 1, 11, 28, 24, 20, 16, 2, 0, 5, 11, 242, 219, 233, 25, 46, 21, 246, 226, 244, 32,
+			31, 242, 225, 8, 66, 45, 225, 212, 250, 36, 44, 6, 232, 230, 17, 29, 255, 234, 255, 60, 85, 29, 217, 207, 5, 49, 33, 236, 236, 18,
+			33, 19, 253, 223, 224, 4, 7, 204, 173, 210, 252, 9, 247, 223, 235, 250, 251, 6, 248, 231, 234, 236, 247, 235, 226, 226, 233, 246, 248, 238,
+			254, 255, 242, 226, 213, 237, 0, 249, 226, 216, 220, 223, 226, 238, 249, 226, 216, 236, 240, 224, 232, 255, 32, 22, 250, 244, 4, 38, 54, 41,
+			34, 39, 48, 32, 255, 233, 243, 8, 33, 16, 248, 255, 25, 26, 27, 29, 48, 55, 43, 18, 11, 21, 17, 0, 253, 21, 48, 37, 23, 20,
+			36, 27, 13, 10, 17, 31, 8, 30, 48, 20, 11, 22, 48, 45, 2, 4, 9, 245, 232, 249, 241, 204, 190, 232, 31, 10, 235, 243, 27, 16,
+			239, 239, 244, 222, 221, 236, 235, 219, 216, 251, 10, 230, 207, 216, 248, 0, 226, 208, 229, 253, 242, 236, 221, 250, 38, 32, 3, 236, 224, 242,
+			11, 21, 11, 228, 235, 248, 239, 230, 220, 221, 241, 5, 246, 231, 248, 13, 20, 18, 18, 9, 18, 22, 0, 252, 1, 253, 36, 55, 38, 15,
+			239, 9, 45, 27, 9, 243, 253, 32, 18, 4, 249, 246, 34, 43, 254, 242, 235, 6, 7, 206, 183, 210, 237, 10, 250, 242, 253, 11, 42, 51,
+			33, 24, 26, 34, 27, 237, 221, 243, 237, 248, 3, 14, 13, 1, 9, 30, 6, 2, 19, 4, 3, 250, 250, 16, 44, 30, 8, 244, 249, 248,
+			233, 210, 208, 237, 6, 238, 227, 254, 38, 43, 24, 12, 249, 252, 253, 22, 3, 216, 225, 9, 27, 30, 248, 237, 0, 6, 255, 213, 217, 247,
+			11, 20, 39, 32, 21, 42, 63, 68, 31, 239, 242, 12, 2, 240, 250, 0, 247, 223, 213, 229, 213, 210, 246, 246, 211, 194, 218, 254, 11, 8,
+			14, 17, 1, 12, 10, 237, 211, 214, 237, 245, 233, 231, 7, 1, 10, 18, 27, 41, 39, 43, 5, 225, 223, 234, 17, 18, 243, 255, 12, 28,
+			22, 1, 254, 9, 9, 247, 214, 210, 250, 13, 24, 22, 22, 38, 38, 19, 253, 254, 5, 2, 6, 0, 12, 29, 13, 10, 18, 12, 1, 7,
+			0, 228, 229, 226, 220, 238, 0, 252, 18, 42, 55, 25, 31, 17, 234, 246, 246, 240, 230, 208, 210, 11, 58, 50, 8, 3, 30, 36, 255, 219,
+			234, 247, 244, 244, 233, 223, 226, 14, 46, 36, 224, 211, 0, 29, 245, 198, 219, 11, 29, 28, 251, 241, 246, 0, 13, 9, 241, 236, 252, 35,
+			32, 248, 244, 21, 46, 14, 231, 208, 215, 239, 241, 218, 224, 27, 55, 29, 19, 27, 26, 17, 2, 247, 237, 232, 230, 241, 4, 0, 15, 30,
+			12, 0, 251, 10, 23, 251, 207, 198, 242, 32, 34, 4, 0, 13, 25, 19, 7, 245, 244, 11, 18, 4, 1, 0, 6, 4, 0, 6, 7, 15,
+			3, 239, 246, 1, 249, 8, 16, 9, 246, 242, 248, 235, 232, 226, 242, 8, 33, 18, 8, 10, 254, 243, 243, 249, 241, 239, 231, 0, 8, 0,
+			3, 19, 1, 254, 8, 4, 250, 254, 248, 13, 24, 19, 26, 16, 16, 254, 244, 5, 0, 247, 248, 234, 235, 255, 9, 23, 10, 255, 251, 241,
+			248, 9, 0, 4, 12, 10, 15, 22, 14, 5, 2, 250, 246, 239, 243, 243, 241, 231, 230, 220, 254, 11, 250, 2, 19, 11, 252, 240, 246, 2,
+			11, 8, 240, 241, 237, 248, 3, 255, 224, 228, 247, 0, 250, 237, 243, 21, 40, 33, 24, 25, 41, 58, 41, 25, 19, 255, 250, 0, 11, 248,
+			238, 4, 0, 244, 250, 245, 2, 27, 16, 243, 236, 250, 17, 19, 13, 12, 10, 2, 11, 17, 248, 222, 221, 4, 26, 24, 238, 226, 252, 4,
+			0, 10, 2, 3, 37, 33, 31, 11, 244, 253, 247, 244, 239, 228, 230, 236, 0, 21, 8, 241, 255, 10, 4, 253, 244, 252, 252, 6, 26, 18,
+			252, 255, 13, 32, 13, 250, 230, 249, 0, 226, 199, 216, 246, 254, 238, 226, 227, 247, 0, 246, 238, 245, 13, 14, 11, 0, 237, 254, 12, 0,
+			229, 209, 223, 246, 249, 247, 241, 249, 255, 8, 4, 6, 248, 253, 10, 239, 225, 248, 24, 43, 15, 247, 252, 6, 20, 38, 2, 233, 3, 41,
+			38, 31, 11, 0, 29, 51, 50, 32, 21, 19, 15, 24, 20, 3, 8, 24, 46, 50, 30, 11, 0, 237, 2, 2, 235, 226, 252, 29, 33, 2,
+			246, 246, 251, 254, 243, 251, 10, 5, 244, 243, 232, 249, 18, 6, 221, 229, 238, 233, 239, 252, 245, 249, 3, 1, 8, 16, 252, 12, 44, 20,
+			237, 233, 244, 233, 252, 4, 7, 239, 218, 214, 222, 236, 233, 219, 224, 235, 249, 5, 17, 20, 13, 244, 254, 8, 233, 210, 214, 230, 236, 241,
+			0, 18, 32, 30, 33, 16, 11, 11, 253, 246, 229, 247, 25, 31, 15, 16, 40, 70, 50, 0, 233, 226, 232, 252, 7, 252, 251, 15, 45, 43,
+			16, 2, 2, 0, 0, 241, 235, 242, 248, 20, 13, 254, 1, 0, 0, 250, 226, 221, 220, 212, 224, 8, 25, 13, 249, 255, 10, 2, 245, 230,
+			219, 236, 22, 35, 8, 249, 3, 20, 15, 244, 219, 212, 213, 217, 237, 14, 47, 60, 34, 46, 52, 28, 1, 1, 0, 243, 251, 27, 35, 28,
+			32, 36, 35, 36, 14, 8, 10, 15, 16, 22, 34, 41, 54, 49, 39, 35, 22, 9, 244, 236, 246, 0, 248, 249, 246, 242, 6, 17, 233, 208,
+			234, 240, 229, 223, 229, 235, 246, 249, 252, 239, 226, 233, 239, 218, 188, 186, 211, 210, 199, 206, 230, 226, 213, 205, 210, 225, 239, 8, 22, 250,
+			224, 237, 2, 7, 0, 5, 24, 19, 15, 2, 0, 248, 3, 252, 0, 4, 18, 36, 33, 8, 14, 21, 20, 23, 12, 246, 236, 11, 48, 62,
+			32, 8, 24, 50, 52, 30, 17, 19, 13, 20, 28, 19, 16, 25, 40, 36, 22, 7, 4, 248, 227, 234, 252, 252, 250, 9, 6, 255, 249, 240,
+			237, 246, 5, 4, 238, 238, 21, 38, 28, 23, 15, 247, 201, 203, 230, 239, 244, 10, 14, 17, 13, 4, 250, 6, 250, 235, 237, 220, 213, 227,
+			14, 42, 31, 18, 4, 1, 7, 244, 233, 225, 217, 208, 214, 249, 23, 28, 35, 21, 0, 233, 218, 216, 240, 16, 17, 245, 250, 20, 25, 51,
+			55, 19, 243, 232, 243, 236, 225, 216, 241, 4, 250, 245, 2, 17, 2, 236, 220, 236, 245, 232, 222, 238, 9, 13, 7, 63, 87, 38, 239, 219,
+			243, 6, 235, 241, 11, 21, 32, 34, 45, 72, 46, 1, 5, 9, 0, 240, 235, 235, 233, 248, 35, 63, 48, 13, 253, 3, 253, 223, 205, 222,
+			233, 254, 20, 11, 13, 39, 64, 34, 236, 214, 245, 255, 249, 238, 234, 247, 8, 19, 4, 222, 210, 215, 218, 211, 201, 235, 0, 5, 0, 5,
+			15, 17, 11, 0, 238, 207, 203, 238, 25, 31, 21, 4, 5, 43, 47, 1, 214, 201, 215, 235, 9, 29, 29, 47, 65, 31, 237, 242, 10, 8,
+			4, 253, 252, 9, 10, 13, 36, 43, 34, 17, 6, 252, 246, 242, 15, 37, 46, 46, 41, 37, 14, 0, 6, 6, 249, 237, 236, 247, 246, 247,
+			252, 255, 7, 3, 239, 215, 203, 212, 231, 226, 205, 223, 13, 57, 45, 7, 3, 16, 250, 199, 192, 231, 16, 255, 219, 223, 254, 19, 29, 26,
+			5, 248, 250, 0, 249, 235, 248, 14, 20, 33, 24, 7, 255, 5, 14, 0, 231, 241, 20, 6, 228, 220, 3, 17, 248, 222, 237, 0, 0, 0,
+			13, 20, 4, 8, 31, 23, 248, 251, 17, 25, 6, 252, 1, 0, 250, 248, 3, 5, 248, 254, 18, 24, 4, 240, 240, 248, 238, 238, 4, 22,
+			8, 240, 242, 0, 255, 247, 245, 0, 8, 18, 32, 26, 5, 250, 0, 1, 245, 241, 24, 47, 11, 225, 244, 14, 24, 7, 5, 11, 252, 236,
+			251, 8, 4, 254, 255, 9, 0, 247, 8, 30, 20, 2, 229, 223, 239, 233, 224, 238, 252, 16, 23, 20, 251, 235, 244, 239, 236, 249, 252, 239,
+			227, 238, 7, 28, 19, 251, 254, 15, 8, 244, 240, 243, 1, 11, 17, 29, 37, 34, 24, 23, 31, 21, 253, 249, 5, 15, 12, 3, 5, 22,
+			29, 6, 240, 233, 250, 248, 239, 232, 234, 240, 0, 0, 0, 10, 16, 1, 249, 252, 2, 246, 225, 223, 243, 2, 16, 13, 3, 2, 3, 254,
+			247, 243, 253, 7, 12, 12, 4, 241, 247, 5, 7, 4, 248, 239, 244, 246, 250, 247, 249, 8, 9, 252, 244, 254, 14, 19, 1, 0, 1, 254,
+			2, 18, 19, 6, 3, 254, 249, 238, 244, 1, 23, 10, 251, 250, 4, 14, 14, 10, 5, 11, 11, 0, 244, 241, 254, 21, 27, 9, 244, 242,
+			247, 239, 248, 251, 6, 15, 4, 248, 239, 235, 234, 238, 249, 0, 253, 5, 9, 2, 0, 5, 9, 7, 0, 4, 255, 251, 239, 230, 233, 246,
+			14, 21, 13, 249, 3, 17, 253, 238, 253, 13, 251, 235, 242, 16, 18, 4, 12, 34, 24, 5, 0, 4, 250, 233, 254, 26, 18, 9, 11, 34,
+			32, 250, 243, 4, 4, 254, 239, 4, 19, 244, 224, 243, 255, 254, 251, 255, 7, 13, 7, 7, 7, 13, 14, 19, 13, 5, 3, 24, 22, 250,
+			239, 16, 30, 251, 219, 221, 249, 247, 225, 238, 6, 4, 249, 250, 8, 8, 242, 242, 249, 243, 245, 2, 245, 227, 231, 252, 5, 251, 246, 18,
+			23, 250, 248, 10, 30, 19, 2, 2, 17, 14, 4, 7, 8, 4, 1, 4, 255, 0, 254, 254, 249, 4, 0, 245, 250, 246, 232, 218, 234, 250,
+			11, 18, 27, 29, 12, 242, 235, 246, 0, 0, 252, 7, 18, 13, 15, 14, 244, 239, 249, 2, 253, 236, 237, 255, 8, 4, 9, 18, 8, 253,
+			253, 9, 5, 248, 241, 245, 255, 2, 252, 241, 240, 240, 242, 254, 253, 240, 242, 244, 239, 237, 245, 3, 2, 21, 21, 8, 253, 253, 252, 251,
+			252, 11, 22, 19, 4, 1, 253, 8, 5, 5, 21, 19, 12, 21, 32, 27, 30, 34, 34, 27, 26, 21, 11, 247, 241, 255, 14, 15, 12, 8,
+			9, 11, 9, 12, 1, 237, 233, 244, 253, 254, 252, 9, 17, 8, 255, 252, 1, 0, 246, 235, 240, 237, 251, 3, 9, 254, 249, 254, 250, 250,
+			238, 236, 239, 237, 240, 245, 246, 249, 0, 7, 9, 0, 239, 228, 223, 220, 237, 245, 238, 234, 252, 21, 12, 251, 241, 239, 238, 244, 247, 255,
+			254, 20, 37, 43, 28, 8, 2, 5, 245, 224, 237, 10, 10, 250, 237, 250, 2, 13, 29, 24, 255, 222, 233, 255, 12, 7, 0, 17, 29, 36,
+			29, 24, 11, 252, 4, 8, 245, 239, 252, 14, 18, 13, 11, 9, 8, 4, 5, 10, 7, 6, 22, 22, 4, 0, 6, 5, 1, 250, 243, 231,
+			229, 233, 239, 243, 243, 3, 27, 31, 18, 14, 18, 18, 6, 238, 235, 247, 0, 255, 9, 23, 26, 9, 240, 236, 229, 226, 226, 226, 241, 251,
+			3, 10, 7, 3, 255, 250, 241, 233, 231, 230, 240, 243, 251, 7, 18, 20, 23, 17, 15, 14, 0, 238, 247, 6, 12, 6, 6, 12, 18, 16,
+			16, 10, 8, 255, 252, 8, 18, 2, 235, 232, 0, 8, 251, 232, 242, 9, 17, 1, 1, 13, 21, 17, 247, 251, 3, 14, 8, 251, 237, 245,
+			2, 4, 250, 240, 245, 250, 249, 247, 255, 11, 8, 19, 16, 7, 246, 236, 251, 5, 0, 242, 243, 4, 23, 18, 3, 10, 15, 16, 250, 238,
+			248, 0, 250, 251, 253, 0, 0, 0, 15, 9, 76, 0, 239, 0, 5, 252, 8, 8, 8, 14, 14, 250, 7, 251, 253, 8, 245, 249, 0, 6,
+			18, 26, 22, 21, 15, 12, 0, 245, 240, 240, 247, 5, 17, 20, 27, 18, 18, 5, 248, 255, 248, 237, 246, 0, 1, 17, 25, 16, 4, 6,
+			2, 5, 5, 5, 245, 0, 9, 2, 255, 4, 248, 254, 14, 12, 14, 8, 0, 2, 5, 4, 253, 233, 249, 4, 11, 13, 8, 11, 17, 17,
+			252, 238, 233, 248, 247, 0, 2, 3, 22, 41, 18, 253, 253, 230, 236, 238, 228, 236, 14, 27, 32, 26, 9, 11, 6, 247, 233, 221, 226, 246,
+			255, 5, 17, 34, 28, 21, 5, 227, 226, 239, 245, 236, 238, 246, 7, 27, 26, 10, 7, 12, 12, 5, 254, 236, 239, 242, 244, 6, 7, 7,
+			16, 29, 19, 7, 10, 247, 235, 237, 232, 235, 245, 1, 6, 255, 15, 7, 15, 10, 253, 249, 248, 235, 238, 238, 237, 251, 255, 253, 12, 21,
+			13, 17, 251, 242, 243, 248, 248, 245, 247, 1, 6, 3, 11, 2, 3, 251, 249, 253, 243, 3, 11, 240, 244, 11, 251, 10, 22, 10, 18, 16,
+			10, 1, 238, 239, 241, 240, 251, 3, 8, 9, 1, 2, 8, 10, 0, 249, 241, 242, 251, 239, 236, 251, 9, 9, 20, 11, 15, 18, 1, 238,
+			224, 225, 241, 246, 250, 6, 24, 30, 35, 17, 10, 255, 254, 246, 238, 248, 254, 14, 14, 15, 8, 18, 11, 19, 2, 254, 3, 0, 0, 0,
+			251, 14, 15, 255, 9, 247, 4, 5, 247, 244, 241, 254, 25, 23, 16, 255, 255, 20, 12, 12, 252, 236, 0, 30, 9, 0, 255, 2, 15, 34,
+			16, 255, 255, 18, 28, 13, 251, 245, 14, 17, 18, 20, 0, 0, 18, 5, 254, 250, 250, 245, 252, 3, 242, 0, 13, 254, 10, 8, 252, 18,
+			30, 7, 0, 8, 10, 1, 8, 246, 224, 3, 29, 19, 20, 20, 2, 4, 252, 230, 227, 250, 4, 11, 10, 8, 11, 15, 10, 5, 245, 234,
+			9, 11, 3, 12, 26, 13, 25, 11, 255, 9, 14, 255, 243, 255, 12, 11, 29, 26, 29, 29, 5, 0, 249, 252, 239, 238, 242, 14, 32, 38,
+			28, 31, 18, 9, 237, 227, 225, 245, 252, 7, 29, 3, 32, 31, 8, 16, 247, 246, 5, 250, 253, 20, 17, 20, 19, 254, 22, 26, 18, 0,
+			251, 246, 247, 11, 5, 250, 5, 11, 5, 31, 13, 13, 15, 8, 1, 250, 0, 5, 14, 14, 24, 0, 13, 27, 8, 0, 250, 248, 3, 6,
+			3, 19, 8, 11, 21, 0, 245, 237, 233, 225, 236, 4, 10, 28, 36, 42, 41, 35, 8, 239, 220, 229, 222, 218, 241, 247, 27, 52, 35, 25,
+			27, 249, 246, 231, 211, 217, 247, 253, 15, 14, 4, 9, 21, 16, 5, 240, 222, 238, 242, 251, 239, 242, 9, 14, 19, 9, 243, 247, 0, 2,
+			243, 226, 234, 7, 12, 7, 246, 0, 9, 20, 16, 250, 237, 253, 7, 238, 0, 248, 2, 26, 18, 254, 11, 25, 13, 6, 3, 0, 10, 26,
+			0, 243, 2, 15, 12, 254, 239, 250, 8, 5, 231, 231, 236, 13, 26, 17, 10, 6, 6, 253, 223, 212, 219, 223, 249, 23, 30, 35, 34, 26,
+			251, 229, 219, 206, 225, 253, 2, 0, 22, 28, 35, 24, 31, 11, 243, 11, 249, 243, 240, 249, 251, 22, 21, 9, 28, 19, 0, 3, 245, 225,
+			0, 251, 253, 13, 7, 9, 27, 11, 1, 245, 240, 11, 250, 5, 253, 240, 6, 20, 9, 19, 11, 12, 5, 255, 6, 250, 245, 235, 250, 17,
+			41, 35, 40, 9, 254, 253, 246, 227, 231, 244, 245, 30, 27, 12, 26, 29, 249, 244, 233, 219, 251, 4, 232, 253, 20, 15, 45, 20, 243, 0,
+			8, 0, 253, 229, 247, 19, 3, 35, 27, 12, 17, 254, 241, 234, 229, 226, 241, 243, 20, 22, 17, 22, 9, 250, 251, 239, 238, 235, 233, 224,
+			252, 21, 6, 21, 14, 255, 16, 20, 234, 247, 244, 0, 10, 21, 26, 23, 40, 37, 2, 236, 221, 213, 236, 11, 0, 8, 22, 67, 56, 31,
+			5, 237, 246, 247, 214, 212, 250, 5, 22, 22, 22, 12, 34, 34, 0, 239, 249, 226, 246, 255, 232, 245, 1, 24, 37, 37, 31, 14, 8, 0,
+			241, 222, 214, 219, 234, 234, 12, 37, 44, 58, 41, 12, 254, 246, 243, 208, 201, 224, 3, 40, 54, 35, 20, 32, 43, 12, 233, 228, 228, 220,
+			240, 236, 235, 25, 51, 49, 32, 13, 0, 2, 247, 217, 191, 220, 232, 6, 41, 252, 7, 45, 12, 253, 238, 200, 253, 10, 252, 248, 232, 249,
+			26, 7, 18, 250, 6, 29, 0, 15, 5, 249, 244, 236, 235, 10, 20, 11, 247, 238, 4, 24, 15, 11, 0, 239, 233, 239, 228, 219, 230, 7,
+			0, 21, 21, 16, 24, 9, 221, 215, 217, 219, 5, 252, 16, 13, 19, 34, 40, 27, 252, 234, 237, 224, 224, 242, 223, 3, 30, 19, 34, 35,
+			18, 3, 220, 211, 191, 185, 221, 225, 252, 36, 50, 65, 54, 32, 4, 224, 211, 208, 192, 205, 239, 2, 6, 44, 55, 28, 40, 10, 240, 218,
+			216, 206, 206, 233, 249, 13, 35, 41, 45, 28, 14, 9, 241, 216, 204, 214, 240, 249, 9, 5, 3, 33, 18, 245, 228, 213, 239, 252, 254, 13,
+			21, 9, 31, 0, 228, 225, 230, 242, 9, 8, 0, 10, 12, 30, 13, 4, 238, 223, 243, 11, 236, 215, 205, 223, 4, 31, 23, 253, 9, 10,
+			0, 239, 209, 198, 233, 241, 246, 15, 0, 8, 30, 25, 35, 14, 234, 231, 220, 219, 220, 225, 244, 27, 42, 18, 36, 28, 255, 226, 212, 214,
+			242, 244, 0, 255, 4, 35, 40, 18, 246, 236, 241, 250, 236, 226, 216, 240, 4, 34, 20, 6, 7, 0, 5, 3, 251, 229, 3, 4, 13, 3,
+			11, 23, 22, 255, 5, 251, 1, 30, 15, 255, 230, 2, 6, 18, 5, 4, 9, 19, 23, 0, 239, 225, 234, 236, 21, 14, 12, 12, 15, 254,
+			250, 231, 206, 226, 231, 251, 19, 35, 9, 3, 4, 16, 2, 249, 252, 236, 230, 247, 233, 240, 1, 253, 17, 31, 43, 39, 13, 0, 247, 242,
+			255, 225, 232, 15, 28, 50, 34, 21, 36, 5, 238, 231, 203, 216, 227, 219, 245, 6, 20, 14, 30, 39, 248, 228, 234, 201, 204, 210, 198, 240,
+			12, 44, 58, 36, 37, 45, 19, 5, 246, 216, 212, 234, 250, 10, 47, 55, 59, 53, 10, 14, 26, 250, 220, 216, 228, 7, 32, 8, 0, 7,
+			242, 248, 240, 206, 219, 214, 209, 234, 250, 6, 15, 240, 254, 245, 236, 246, 245, 240, 11, 250, 2, 12, 252, 16, 13, 245, 248, 254, 14, 23,
+			14, 8, 255, 3, 29, 33, 252, 20, 11, 248, 252, 243, 236, 12, 6, 4, 1, 254, 237, 231, 23, 25, 30, 16, 22, 253, 254, 203, 189, 218,
+			211, 255, 15, 14, 53, 69, 27, 0, 223, 221, 229, 223, 229, 14, 27, 39, 69, 53, 23, 250, 222, 223, 240, 218, 220, 255, 27, 75, 73, 30,
+			27, 17, 242, 230, 223, 202, 223, 253, 248, 14, 47, 30, 8, 7, 11, 251, 238, 225, 211, 225, 11, 16, 16, 19, 254, 25, 29, 0, 240, 222,
+			245, 30, 28, 25, 15, 20, 29, 20, 7, 0, 249, 244, 15, 250, 251, 4, 0, 254, 21, 18, 3, 5, 253, 2, 0, 19, 11, 242, 20, 21,
+			4, 22, 238, 222, 239, 240, 1, 11, 34, 36, 27, 13, 36, 247, 230, 212, 186, 233, 3, 253, 17, 25, 20, 71, 48, 15, 244, 205, 200, 221,
+			222, 250, 38, 37, 57, 51, 36, 19, 252, 217, 197, 188, 229, 6, 250, 5, 11, 26, 39, 31, 3, 0, 248, 255, 249, 246, 1, 2, 32, 12,
+			9, 25, 58, 40, 29, 25, 2, 255, 233, 238, 217, 228, 239, 245, 17, 15, 238, 10, 3, 234, 249, 226, 203, 227, 18, 26, 252, 7, 6, 21,
+			33, 0, 236, 249, 235, 249, 249, 8, 37, 40, 47, 27, 17, 255, 5, 10, 13, 238, 254, 31, 5, 22, 35, 255, 31, 25, 225, 237, 234, 249,
+			255, 249, 227, 0, 9, 3, 244, 223, 245, 228, 244, 32, 20, 241, 224, 243, 4, 254, 11, 11, 238, 19, 34, 252, 3, 255, 227, 11, 7, 14,
+			18, 252, 2, 243, 250, 241, 238, 0, 12, 253, 3, 0, 7, 7, 14, 248, 237, 247, 231, 252, 7, 245, 244, 6, 247, 6, 20, 252, 254, 16,
+			250, 230, 236, 221, 215, 233, 4, 11, 19, 49, 57, 27, 252, 224, 218, 233, 240, 254, 252, 17, 50, 46, 48, 5, 237, 254, 240, 243, 26, 241,
+			216, 248, 232, 9, 23, 243, 254, 22, 243, 5, 242, 234, 246, 230, 241, 239, 1, 251, 20, 15, 19, 21, 31, 5, 0, 0, 247, 230, 255, 14,
+			6, 8, 245, 253, 231, 227, 212, 222, 248, 0, 237, 233, 220, 237, 250, 218, 245, 250, 5, 41, 41, 235, 4, 10, 255, 0, 0, 252, 238, 244,
+			12, 23, 50, 45, 17, 25, 35, 21, 240, 222, 219, 251, 254, 251, 229, 241, 14, 31, 47, 247, 248, 6, 252, 253, 231, 211, 218, 252, 6, 5,
+			34, 38, 20, 45, 23, 243, 230, 220, 183, 207, 233, 227, 26, 36, 67, 74, 67, 253, 252, 241, 210, 194, 199, 200, 236, 52, 15, 32, 42, 56,
+			59, 35, 220, 179, 213, 185, 195, 218, 236, 44, 114, 107, 84, 73, 10, 224, 170, 149, 151, 207, 250, 39, 89, 82, 98, 76, 42, 244, 202, 200,
+			150, 152, 202, 229, 244, 60, 79, 98, 97, 68, 3, 202, 179, 139, 132, 190, 252, 50, 92, 73, 89, 50, 255, 233, 187, 163, 200, 211, 213, 17,
+			14, 22, 64, 27, 19, 39, 0, 236, 2, 234, 236, 17, 10, 238, 15, 42, 27, 17, 7, 254, 23, 2, 252, 224, 227, 237, 227, 5, 16, 252,
+			28, 24, 246, 236, 200, 237, 249, 240, 237, 241, 239, 8, 7, 235, 0, 8, 30, 46, 36, 7, 9, 24, 27, 255, 253, 11, 253, 23, 253, 242,
+			248, 246, 249, 241, 241, 250, 5, 17, 8, 10, 8, 2, 10, 248, 244, 253, 249, 6, 255, 5, 1, 223, 231, 11, 255, 12, 16, 228, 228, 238,
+			209, 174, 200, 233, 20, 44, 46, 20, 7, 0, 0, 252, 225, 241, 14, 21, 11, 250, 18, 27, 246, 230, 212, 217, 217, 196, 227, 238, 238, 24,
+			30, 19, 0, 231, 221, 217, 207, 198, 192, 214, 253, 21, 34, 26, 36, 8, 229, 4, 234, 188, 213, 195, 191, 240, 29, 13, 68, 58, 49, 63,
+			11, 255, 247, 203, 219, 225, 232, 13, 18, 28, 61, 41, 28, 13, 207, 177, 192, 194, 215, 210, 234, 4, 37, 38, 29, 1, 24, 15, 3, 248,
+			217, 251, 21, 7, 246, 31, 44, 65, 62, 32, 247, 0, 255, 199, 202, 222, 255, 8, 27, 1, 240, 0, 12, 252, 230, 215, 243, 10, 4, 7,
+			239, 246, 252, 239, 5, 29, 6, 9, 22, 12, 23, 245, 245, 0, 21, 15, 14, 35, 29, 20, 23, 248, 231, 241, 254, 244, 247, 248, 5, 247,
+			228, 5, 8, 5, 9, 241, 200, 226, 238, 219, 235, 252, 24, 42, 58, 7, 247, 240, 234, 217, 236, 253, 37, 37, 254, 26, 246, 249, 0, 225,
+			230, 250, 20, 236, 244, 254, 248, 4, 246, 4, 31, 37, 36, 22, 12, 12, 23, 230, 176, 209, 242, 2, 43, 54, 89, 95, 81, 34, 221, 225,
+			217, 168, 178, 225, 14, 82, 100, 70, 38, 43, 34, 238, 209, 217, 201, 209, 246, 9, 9, 54, 62, 14, 17, 9, 250, 0, 236, 219, 237, 254,
+			31, 12, 14, 30, 24, 253, 254, 248, 238, 228, 244, 253, 7, 41, 15, 26, 7, 0, 1, 1, 235, 5, 8, 8, 34, 37, 19, 19, 24, 10,
+			25, 9, 14, 38, 18, 19, 15, 38, 23, 6, 238, 237, 246, 246, 15, 254, 28, 46, 34, 3, 223, 224, 255, 213, 222, 229, 232, 35, 34, 43,
+			33, 29, 254, 250, 237, 225, 231, 17, 39, 27, 60, 43, 30, 34, 23, 14, 238, 246, 251, 255, 14, 25, 45, 31, 18, 43, 28, 244, 230, 191,
+			168, 211, 215, 244, 26, 39, 48, 60, 37, 245, 242, 196, 189, 220, 216, 239, 18, 39, 60, 74, 48, 24, 230, 214, 228, 217, 234, 231, 238, 15,
+			53, 49, 56, 23, 1, 5, 230, 229, 207, 205, 223, 204, 218, 25, 42, 49, 23, 239, 241, 240, 240, 229, 200, 213, 248, 15, 29, 24, 32, 24,
+			14, 31, 31, 11, 8, 11, 15, 250, 253, 17, 253, 252, 249, 229, 245, 15, 250, 236, 232, 227, 230, 227, 226, 209, 224, 251, 246, 230, 242, 15,
+			21, 19, 244, 242, 3, 1, 206, 182, 186, 243, 37, 30, 6, 0, 56, 62, 16, 238, 216, 216, 215, 199, 222, 220, 7, 39, 32, 46, 38, 11,
+			242, 214, 188, 176, 182, 201, 230, 247, 16, 37, 27, 5, 253, 238, 225, 233, 219, 217, 237, 234, 242, 220, 246, 19, 26, 34, 41, 28, 23, 9,
+			231, 199, 199, 212, 226, 225, 234, 28, 35, 52, 38, 26, 2, 247, 237, 220, 209, 194, 214, 238, 6, 21, 22, 46, 64, 43, 17, 227, 215, 221,
+			215, 230, 234, 247, 26, 41, 48, 41, 255, 11, 16, 248, 236, 212, 209, 234, 239, 245, 18, 28, 51, 40, 1, 245, 235, 243, 244, 230, 242, 12,
+			26, 37, 0, 254, 252, 1, 10, 20, 9, 243, 255, 243, 228, 212, 209, 237, 0, 250, 11, 1, 243, 0, 79, 5, 27, 0, 0, 1, 0, 1,
+			4, 3, 253, 248, 251, 8, 10, 0, 2, 10, 10, 8, 5, 2, 0, 0, 2, 255, 248, 254, 5, 5, 251, 242, 247, 255, 254, 2, 7, 1,
+			248, 246, 242, 244, 245, 249, 4, 9, 6, 1, 254, 6, 10, 9, 11, 10, 9, 11, 5, 1, 0, 247, 247, 249, 248, 254, 2, 7, 11, 8,
+			2, 0, 254, 1, 5, 5, 2, 5, 2, 252, 251, 255, 0, 2, 4, 3, 1, 247, 240, 251, 249, 243, 246, 249, 254, 0, 3, 10, 9, 2,
+			5, 7, 255, 253, 3, 14, 22, 13, 2, 252, 255, 252, 251, 255, 2, 5, 3, 246, 241, 249, 255, 1, 0, 251, 254, 0, 250, 251, 0, 2,
+			5, 3, 252, 0, 7, 13, 11, 0, 247, 252, 253, 249, 2, 12, 14, 8, 255, 2, 3, 0, 254, 252, 0, 9, 10, 2, 1, 2, 2, 4,
+			2, 0, 1, 254, 251, 252, 249, 249, 249, 246, 239, 244, 1, 14, 16, 4, 253, 248, 245, 252, 0, 0, 0, 248, 244, 254, 4, 3, 3, 6,
+			12, 11, 2, 1, 6, 16, 18, 7, 9, 15, 13, 10, 12, 0, 254, 2, 247, 239, 236, 240, 0, 2, 248, 245, 247, 251, 0, 246, 245, 3,
+			2, 1, 253, 243, 3, 15, 15, 12, 5, 252, 2, 8, 0, 245, 245, 3, 3, 254, 0, 6, 8, 11, 7, 7, 6, 251, 254, 4, 0, 248,
+			253, 4, 1, 254, 1, 4, 8, 254, 244, 249, 253, 248, 248, 245, 254, 2, 4, 8, 0, 255, 10, 17, 9, 4, 7, 6, 0, 241, 234, 244,
+			1, 12, 14, 4, 6, 12, 12, 5, 250, 249, 2, 7, 5, 255, 251, 252, 1, 251, 246, 3, 1, 8, 14, 246, 240, 237, 235, 240, 241, 246,
+			4, 14, 15, 18, 16, 6, 0, 247, 250, 16, 10, 250, 255, 251, 251, 5, 8, 5, 251, 251, 8, 10, 5, 0, 254, 2, 255, 252, 2, 8,
+			8, 10, 6, 253, 251, 5, 13, 6, 253, 251, 250, 0, 4, 247, 239, 254, 249, 229, 235, 253, 6, 9, 3, 254, 4, 12, 5, 249, 250, 5,
+			14, 12, 0, 238, 249, 16, 17, 0, 247, 2, 18, 8, 252, 242, 245, 6, 10, 248, 250, 12, 18, 23, 17, 0, 1, 0, 251, 14, 8, 255,
+			1, 241, 230, 228, 221, 235, 252, 246, 249, 1, 0, 0, 254, 251, 254, 1, 19, 29, 14, 8, 16, 16, 18, 10, 2, 22, 25, 2, 246, 244,
+			250, 255, 250, 239, 231, 238, 5, 19, 255, 248, 8, 1, 2, 5, 250, 254, 0, 244, 235, 242, 244, 252, 10, 252, 247, 9, 5, 255, 1, 253,
+			5, 7, 15, 23, 7, 4, 15, 15, 9, 15, 26, 21, 5, 251, 255, 0, 239, 224, 239, 251, 5, 6, 248, 241, 232, 233, 248, 2, 244, 241,
+			251, 252, 6, 9, 5, 22, 15, 255, 2, 253, 8, 15, 3, 9, 1, 255, 3, 3, 12, 8, 12, 15, 0, 241, 242, 251, 8, 3, 255, 4,
+			3, 252, 252, 1, 5, 4, 245, 247, 1, 239, 237, 247, 249, 10, 19, 8, 6, 2, 11, 14, 246, 236, 231, 239, 249, 250, 10, 16, 2, 252,
+			249, 250, 254, 9, 23, 14, 17, 27, 23, 13, 249, 249, 3, 253, 4, 9, 0, 250, 229, 232, 0, 2, 254, 11, 14, 6, 0, 248, 249, 255,
+			252, 244, 233, 232, 3, 2, 253, 10, 252, 245, 12, 10, 11, 31, 9, 252, 7, 247, 252, 10, 4, 8, 6, 8, 13, 240, 219, 229, 240, 252,
+			14, 4, 247, 9, 13, 9, 16, 1, 4, 16, 254, 2, 253, 255, 19, 4, 2, 4, 242, 6, 18, 10, 1, 242, 234, 229, 229, 242, 253, 1,
+			255, 0, 5, 7, 5, 4, 7, 18, 21, 17, 12, 253, 1, 4, 255, 254, 243, 254, 15, 249, 249, 0, 240, 245, 244, 232, 255, 1, 5, 25,
+			253, 235, 246, 245, 1, 6, 252, 12, 14, 18, 36, 24, 251, 236, 248, 6, 19, 11, 251, 254, 0, 250, 255, 11, 0, 236, 241, 1, 248, 243,
+			4, 0, 242, 250, 13, 26, 20, 12, 18, 21, 8, 248, 234, 232, 241, 250, 5, 9, 244, 248, 20, 28, 20, 1, 248, 1, 255, 246, 225, 241,
+			1, 249, 250, 236, 231, 11, 27, 14, 14, 14, 17, 17, 242, 230, 252, 9, 6, 250, 232, 250, 14, 7, 13, 5, 242, 232, 230, 237, 7, 21,
+			17, 4, 236, 234, 255, 255, 11, 44, 28, 5, 19, 18, 14, 14, 21, 27, 15, 253, 255, 250, 240, 247, 228, 226, 2, 231, 213, 0, 15, 9,
+			248, 236, 253, 234, 228, 20, 41, 28, 21, 3, 7, 22, 2, 8, 22, 2, 251, 229, 207, 227, 248, 252, 23, 17, 249, 8, 9, 11, 253, 231,
+			247, 237, 228, 6, 2, 1, 22, 15, 8, 250, 239, 251, 6, 1, 4, 3, 253, 247, 247, 245, 10, 14, 13, 42, 27, 254, 5, 236, 245, 30,
+			18, 9, 240, 236, 18, 13, 4, 13, 255, 253, 9, 3, 251, 251, 253, 10, 22, 3, 224, 244, 251, 241, 245, 234, 235, 0, 244, 5, 12, 5,
+			35, 18, 242, 255, 248, 251, 253, 222, 221, 227, 244, 20, 18, 6, 22, 36, 29, 12, 6, 19, 0, 239, 212, 225, 14, 18, 11, 4, 243, 226,
+			249, 22, 238, 201, 238, 8, 23, 249, 226, 12, 24, 58, 71, 11, 6, 27, 14, 8, 243, 235, 19, 28, 242, 213, 230, 244, 254, 242, 226, 239,
+			250, 1, 7, 249, 4, 62, 65, 25, 249, 255, 39, 56, 13, 225, 225, 220, 247, 10, 235, 241, 2, 14, 24, 239, 215, 232, 234, 243, 1, 247,
+			244, 253, 3, 1, 240, 1, 15, 17, 252, 243, 3, 245, 222, 238, 236, 214, 238, 246, 248, 25, 33, 27, 27, 0, 233, 26, 44, 22, 249, 222,
+			254, 22, 252, 2, 9, 5, 10, 37, 45, 20, 5, 13, 17, 15, 0, 18, 30, 237, 242, 32, 44, 45, 18, 244, 41, 52, 28, 37, 251, 223,
+			224, 203, 229, 224, 195, 251, 16, 242, 228, 208, 186, 166, 144, 159, 190, 211, 193, 185, 190, 200, 230, 249, 16, 19, 3, 49, 107, 108, 124, 122,
+			106, 99, 81, 73, 67, 64, 55, 29, 12, 230, 218, 239, 231, 240, 240, 237, 14, 4, 231, 246, 233, 233, 254, 245, 239, 235, 227, 235, 233, 237,
+			4, 243, 237, 221, 190, 219, 242, 240, 235, 252, 23, 20, 251, 3, 27, 21, 7, 255, 222, 224, 250, 2, 2, 247, 250, 6, 25, 35, 29, 36,
+			7, 235, 228, 246, 6, 8, 13, 13, 24, 27, 48, 34, 254, 10, 22, 34, 41, 19, 10, 21, 8, 249, 248, 252, 248, 251, 249, 250, 9, 255,
+			224, 223, 227, 238, 14, 18, 241, 229, 235, 244, 238, 213, 231, 255, 245, 237, 241, 237, 232, 241, 234, 220, 231, 254, 21, 12, 249, 1, 13, 22,
+			12, 5, 22, 26, 21, 12, 6, 24, 20, 0, 4, 10, 29, 54, 34, 12, 14, 17, 21, 20, 242, 248, 2, 23, 28, 250, 235, 252, 23, 25,
+			3, 252, 14, 9, 234, 229, 242, 234, 217, 210, 221, 232, 253, 19, 25, 32, 4, 236, 0, 245, 220, 233, 25, 47, 13, 216, 234, 250, 227, 224,
+			221, 241, 230, 216, 252, 0, 236, 229, 239, 6, 0, 12, 27, 24, 11, 248, 253, 19, 19, 6, 16, 35, 48, 50, 42, 31, 8, 222, 235, 22,
+			26, 6, 15, 22, 15, 25, 61, 74, 51, 33, 37, 33, 30, 7, 220, 207, 214, 214, 206, 198, 213, 213, 214, 243, 237, 205, 193, 205, 233, 0,
+			253, 249, 236, 252, 23, 15, 17, 26, 10, 5, 9, 0, 235, 224, 255, 12, 243, 254, 26, 21, 11, 7, 24, 34, 18, 255, 245, 242, 8, 34,
+			33, 22, 2, 253, 13, 18, 0, 251, 251, 238, 227, 237, 250, 246, 229, 239, 252, 9, 13, 244, 242, 15, 18, 14, 15, 17, 36, 35, 31, 49,
+			38, 18, 25, 35, 5, 0, 120, 6, 13, 0, 0, 11, 15, 13, 14, 10, 20, 33, 25, 12, 252, 242, 235, 230, 232, 224, 228, 237, 248, 2,
+			246, 242, 0, 19, 30, 23, 18, 21, 13, 8, 1, 7, 8, 2, 3, 246, 235, 229, 230, 252, 0, 241, 251, 0, 254, 252, 7, 10, 11, 19,
+			20, 14, 5, 246, 3, 16, 8, 255, 240, 253, 6, 243, 230, 224, 246, 8, 19, 16, 246, 250, 20, 40, 33, 1, 3, 18, 8, 2, 239, 241,
+			255, 255, 250, 232, 228, 242, 253, 6, 0, 4, 9, 247, 248, 252, 8, 15, 1, 252, 243, 254, 7, 254, 253, 253, 4, 22, 14, 251, 248, 3,
+			12, 1, 1, 1, 255, 250, 240, 246, 1, 1, 254, 252, 7, 12, 13, 12, 9, 14, 14, 10, 4, 244, 254, 6, 245, 234, 220, 232, 0, 17,
+			10, 248, 250, 8, 22, 20, 11, 26, 39, 19, 251, 223, 229, 254, 10, 4, 225, 220, 226, 232, 239, 246, 246, 6, 17, 13, 10, 22, 34, 25,
+			16, 2, 19, 28, 13, 248, 234, 231, 245, 8, 254, 204, 193, 245, 39, 36, 2, 0, 10, 6, 7, 15, 14, 5, 252, 252, 239, 229, 241, 9,
+			4, 242, 247, 0, 9, 2, 7, 14, 14, 15, 15, 12, 20, 19, 21, 26, 8, 235, 230, 244, 239, 245, 247, 229, 222, 222, 247, 4, 255, 253,
+			1, 13, 6, 243, 1, 29, 40, 26, 4, 10, 22, 2, 251, 0, 7, 0, 248, 228, 221, 238, 255, 12, 19, 0, 0, 8, 8, 11, 5, 11,
+			0, 242, 255, 251, 245, 243, 254, 253, 236, 241, 6, 10, 6, 255, 0, 14, 19, 11, 1, 14, 13, 4, 253, 254, 250, 246, 1, 255, 230, 230,
+			249, 252, 250, 255, 3, 9, 5, 20, 20, 246, 245, 5, 19, 37, 33, 9, 0, 254, 240, 225, 245, 20, 20, 1, 246, 239, 228, 237, 11, 21,
+			10, 1, 240, 233, 244, 17, 25, 13, 16, 22, 8, 247, 249, 11, 1, 255, 241, 214, 211, 224, 255, 11, 15, 7, 247, 255, 3, 0, 22, 28,
+			24, 26, 15, 8, 245, 228, 249, 6, 249, 224, 228, 231, 238, 252, 2, 6, 16, 5, 10, 23, 33, 45, 31, 8, 6, 13, 9, 248, 235, 225,
+			238, 6, 252, 227, 210, 208, 245, 20, 36, 42, 31, 30, 27, 28, 25, 28, 34, 7, 235, 207, 199, 230, 230, 220, 217, 210, 206, 212, 246, 17,
+			45, 43, 19, 21, 16, 17, 47, 57, 50, 30, 5, 239, 232, 233, 223, 241, 247, 233, 222, 222, 225, 236, 254, 10, 17, 19, 31, 29, 30, 27,
+			30, 39, 29, 13, 0, 253, 239, 218, 211, 224, 226, 223, 233, 241, 236, 254, 15, 36, 58, 29, 2, 13, 21, 20, 20, 254, 247, 249, 230, 234,
+			245, 241, 255, 254, 228, 249, 16, 9, 0, 255, 3, 7, 253, 8, 16, 253, 0, 10, 9, 19, 12, 233, 230, 10, 39, 22, 231, 209, 217, 235,
+			10, 29, 12, 0, 0, 3, 18, 19, 19, 18, 0, 255, 247, 248, 7, 252, 230, 227, 240, 255, 4, 8, 6, 251, 12, 24, 2, 239, 253, 15,
+			11, 249, 242, 248, 253, 13, 14, 227, 204, 249, 16, 4, 6, 10, 16, 7, 16, 40, 41, 25, 16, 14, 0, 254, 10, 0, 233, 240, 229, 225,
+			236, 238, 254, 252, 237, 233, 238, 249, 16, 24, 245, 244, 4, 6, 18, 17, 14, 33, 44, 27, 254, 239, 245, 2, 242, 232, 249, 240, 220, 230,
+			248, 16, 30, 14, 239, 232, 8, 32, 8, 13, 47, 40, 7, 242, 230, 220, 237, 8, 12, 240, 218, 242, 255, 0, 29, 45, 42, 51, 53, 27,
+			237, 211, 226, 6, 7, 228, 208, 204, 221, 229, 235, 7, 27, 18, 255, 241, 244, 247, 252, 18, 23, 7, 4, 9, 5, 247, 28, 60, 31, 13,
+			20, 16, 255, 224, 226, 250, 10, 14, 242, 211, 214, 240, 0, 250, 247, 2, 29, 49, 30, 5, 0, 21, 29, 7, 249, 239, 225, 215, 211, 223,
+			0, 11, 5, 253, 0, 29, 47, 32, 21, 22, 13, 0, 254, 9, 13, 3, 237, 210, 222, 252, 240, 224, 218, 218, 226, 218, 216, 244, 0, 21,
+			57, 63, 66, 65, 48, 52, 69, 45, 29, 22, 239, 202, 204, 207, 205, 192, 201, 227, 222, 217, 238, 248, 24, 33, 0, 245, 22, 83, 79, 32,
+			247, 242, 17, 50, 47, 30, 232, 200, 225, 247, 252, 239, 214, 229, 244, 244, 245, 248, 244, 242, 4, 24, 30, 8, 0, 25, 26, 23, 40, 40,
+			11, 4, 5, 249, 238, 245, 3, 254, 215, 222, 236, 212, 188, 215, 244, 12, 13, 5, 251, 244, 12, 41, 49, 61, 53, 40, 17, 250, 20, 48,
+			26, 26, 0, 202, 199, 199, 194, 226, 248, 239, 234, 220, 197, 228, 21, 50, 66, 58, 39, 44, 42, 20, 7, 17, 14, 245, 215, 210, 250, 247,
+			218, 230, 238, 227, 241, 252, 17, 39, 25, 11, 0, 248, 11, 16, 237, 238, 8, 247, 243, 3, 244, 5, 18, 243, 11, 44, 3, 241, 250, 4,
+			54, 59, 3, 211, 212, 3, 60, 63, 2, 202, 191, 226, 20, 22, 1, 228, 207, 213, 234, 3, 2, 253, 0, 251, 246, 9, 16, 33, 38, 16,
+			44, 71, 23, 7, 30, 36, 57, 18, 194, 176, 175, 202, 250, 208, 165, 221, 2, 32, 40, 7, 240, 234, 20, 66, 51, 17, 2, 0, 9, 22,
+			39, 55, 45, 7, 240, 230, 234, 0, 245, 175, 185, 7, 248, 215, 227, 247, 10, 35, 42, 38, 251, 226, 32, 30, 246, 5, 32, 255, 228, 253,
+			27, 24, 21, 30, 11, 238, 237, 242, 231, 229, 5, 18, 239, 235, 233, 221, 228, 9, 48, 51, 15, 250, 2, 251, 251, 24, 252, 219, 230, 252,
+			246, 0, 246, 241, 20, 44, 38, 38, 34, 23, 26, 0, 245, 7, 203, 170, 218, 220, 195, 214, 240, 28, 14, 226, 15, 69, 63, 78, 84, 37,
+			255, 12, 36, 22, 240, 208, 242, 236, 198, 211, 0, 241, 218, 228, 214, 215, 7, 54, 61, 27, 0, 15, 26, 254, 9, 54, 46, 7, 246, 202,
+			163, 191, 249, 17, 242, 187, 219, 8, 3, 0, 16, 9, 22, 68, 75, 34, 23, 59, 76, 46, 0, 251, 15, 240, 208, 215, 206, 216, 198, 187,
+			221, 233, 245, 27, 15, 249, 24, 19, 31, 33, 12, 41, 50, 11, 251, 244, 252, 247, 198, 206, 218, 206, 241, 254, 225, 234, 4, 77, 97, 29,
+			24, 59, 49, 48, 51, 3, 224, 215, 216, 193, 156, 208, 27, 5, 226, 244, 248, 227, 243, 32, 39, 7, 25, 44, 249, 200, 15, 91, 61, 9,
+			2, 3, 255, 0, 23, 27, 239, 224, 225, 195, 210, 10, 20, 239, 196, 218, 17, 18, 25, 59, 38, 250, 255, 21, 18, 5, 1, 11, 236, 195,
+			212, 242, 209, 195, 5, 44, 10, 8, 12, 5, 22, 37, 55, 44, 249, 8, 77, 56, 5, 251, 249, 0, 248, 217, 211, 195, 195, 230, 214, 157,
+			186, 253, 15, 3, 250, 26, 77, 72, 57, 61, 42, 32, 42, 22, 249, 255, 249, 230, 213, 208, 226, 5, 6, 236, 244, 1, 6, 16, 12, 249,
+			6, 22, 10, 2, 14, 3, 236, 206, 226, 36, 32, 250, 0, 231, 193, 229, 43, 57, 9, 218, 209, 215, 217, 10, 45, 3, 254, 51, 34, 238,
+			237, 17, 38, 26, 32, 40, 12, 235, 8, 29, 15, 9, 25, 254, 199, 184, 237, 0, 239, 17, 1, 192, 183, 235, 42, 58, 15, 13, 6, 226,
+			240, 18, 8, 4, 22, 36, 32, 3, 239, 247, 0, 16, 37, 7, 220, 199, 197, 217, 242, 249, 0, 10, 233, 186, 222, 23, 43, 55, 35, 251,
+			4, 6, 35, 86, 73, 51, 56, 23, 3, 32, 15, 237, 226, 232, 250, 232, 196, 175, 156, 183, 250, 14, 254, 227, 197, 223, 3, 15, 68, 76,
+			35, 39, 42, 42, 50, 41, 45, 66, 26, 231, 230, 222, 205, 209, 218, 224, 217, 213, 211, 197, 188, 252, 60, 53, 253, 235, 253, 254, 13, 27,
+			14, 2, 4, 18, 248, 189, 222, 56, 60, 28, 14, 243, 243, 245, 2, 39, 39, 15, 25, 29, 229, 226, 18, 57, 67, 59, 45, 39, 15, 233,
+			226, 238, 200, 208, 229, 169, 137, 170, 186, 213, 5, 21, 57, 72, 39, 60, 82, 59, 62, 62, 0, 226, 239, 232, 221, 207, 209, 212, 208, 214,
+			238, 244, 224, 226, 0, 18, 20, 19, 16, 252, 14, 66, 91, 61, 15, 19, 32, 22, 8, 2, 231, 215, 210, 214, 213, 195, 190, 219, 238, 229,
+			246, 18, 27, 42, 64, 80, 78, 65, 44, 47, 54, 16, 242, 221, 182, 177, 202, 214, 212, 212, 215, 4, 29, 12, 22, 39, 35, 13, 237, 234,
+			244, 249, 246, 231, 215, 230, 21, 52, 39, 0, 23, 77, 70, 37, 33, 28, 15, 254, 230, 229, 225, 228, 255, 4, 247, 0, 11, 20, 18, 12,
+			23, 12, 222, 197, 202, 209, 206, 207, 202, 200, 201, 208, 234, 252, 2, 20, 47, 41, 18, 255, 250, 1, 30, 32, 17, 253, 229, 230, 253, 24,
+			39, 28, 17, 4, 14, 33, 47, 54, 48, 33, 19, 29, 22, 38, 39, 29, 23, 16, 8, 253, 246, 247, 2, 253, 14, 19, 8, 248, 215, 224,
+			3, 2, 244, 238, 194, 156, 170, 175, 210, 218, 190, 198, 209, 191, 208, 239, 250, 10, 28, 29, 18, 5, 15, 37, 50, 42, 35, 31, 2, 238,
+			231, 245, 252, 2, 2, 252, 233, 243, 24, 57, 73, 69, 67, 58, 41, 42, 43, 45, 22, 5, 6, 253, 236, 237, 253, 4, 16, 27, 25, 26,
+			21, 21, 38, 28, 8, 9, 253, 229, 224, 215, 214, 216, 215, 221, 225, 239, 142, 6, 24, 0, 1, 1, 3, 3, 253, 252, 0, 3, 8, 255,
+			231, 232, 255, 7, 15, 16, 9, 7, 0, 243, 249, 3, 9, 8, 0, 1, 6, 4, 7, 6, 253, 240, 244, 250, 0, 11, 8, 4, 11, 9,
+			4, 254, 244, 241, 253, 3, 6, 9, 1, 253, 254, 249, 248, 251, 249, 251, 2, 1, 0, 1, 0, 7, 12, 2, 251, 249, 249, 255, 7, 0,
+			245, 252, 0, 5, 11, 0, 248, 253, 255, 3, 4, 255, 0, 8, 11, 13, 16, 10, 5, 3, 253, 254, 2, 255, 0, 3, 251, 249, 252, 245,
+			249, 4, 1, 249, 251, 247, 0, 14, 8, 2, 5, 1, 0, 2, 250, 251, 2, 5, 10, 13, 7, 254, 254, 255, 243, 241, 247, 6, 20, 8,
+			253, 255, 250, 251, 252, 248, 253, 5, 7, 5, 0, 251, 249, 252, 2, 252, 251, 254, 251, 248, 251, 6, 18, 17, 5, 0, 253, 0, 9, 11,
+			4, 255, 252, 5, 13, 5, 248, 251, 1, 3, 3, 251, 247, 4, 9, 2, 0, 1, 3, 2, 251, 255, 16, 4, 249, 1, 6, 0, 247, 243,
+			250, 2, 6, 0, 240, 242, 246, 255, 4, 2, 3, 2, 255, 3, 252, 250, 5, 9, 13, 16, 7, 4, 6, 10, 7, 247, 237, 244, 255, 0,
+			0, 0, 6, 2, 254, 253, 1, 8, 2, 241, 240, 0, 2, 253, 251, 0, 18, 21, 9, 2, 250, 253, 2, 253, 0, 6, 5, 3, 255, 0,
+			252, 237, 239, 253, 1, 6, 2, 5, 6, 3, 8, 247, 236, 254, 19, 28, 25, 14, 12, 16, 11, 7, 254, 240, 240, 249, 0, 248, 236, 242,
+			253, 243, 237, 247, 0, 5, 16, 11, 253, 248, 246, 243, 3, 22, 11, 8, 20, 6, 245, 236, 242, 11, 13, 247, 244, 252, 253, 8, 4, 251,
+			2, 248, 241, 7, 27, 24, 21, 21, 1, 244, 253, 1, 4, 6, 246, 246, 5, 2, 250, 244, 243, 3, 9, 255, 250, 2, 9, 8, 1, 252,
+			248, 7, 22, 14, 7, 15, 11, 1, 250, 246, 254, 247, 231, 236, 245, 235, 238, 254, 7, 10, 254, 239, 246, 253, 2, 16, 12, 3, 6, 25,
+			19, 3, 5, 0, 248, 248, 230, 228, 5, 21, 25, 16, 247, 246, 0, 247, 249, 7, 15, 19, 13, 0, 253, 24, 36, 7, 246, 245, 238, 252,
+			15, 7, 254, 248, 241, 244, 245, 241, 250, 3, 5, 2, 255, 247, 242, 5, 21, 16, 2, 0, 6, 10, 1, 245, 243, 248, 253, 5, 2, 244,
+			245, 5, 12, 0, 229, 221, 248, 9, 9, 7, 253, 245, 11, 23, 13, 2, 252, 19, 37, 22, 8, 6, 4, 3, 3, 2, 242, 231, 243, 252,
+			6, 17, 1, 240, 237, 228, 244, 14, 15, 5, 254, 251, 3, 14, 22, 19, 3, 239, 236, 245, 254, 4, 10, 250, 239, 245, 251, 3, 17, 21,
+			0, 236, 235, 0, 32, 34, 11, 8, 6, 235, 226, 234, 246, 11, 17, 6, 242, 239, 250, 237, 237, 10, 11, 14, 10, 253, 9, 24, 25, 22,
+			253, 231, 4, 52, 65, 19, 222, 221, 220, 221, 250, 249, 249, 15, 28, 25, 231, 192, 218, 253, 26, 27, 255, 2, 10, 4, 34, 16, 235, 250,
+			254, 244, 4, 19, 16, 4, 3, 16, 253, 221, 220, 238, 13, 24, 12, 9, 0, 247, 7, 0, 236, 249, 254, 7, 30, 27, 3, 228, 204, 209,
+			1, 32, 14, 24, 44, 15, 251, 13, 244, 228, 6, 12, 7, 17, 249, 224, 237, 253, 11, 16, 4, 248, 248, 4, 252, 5, 29, 3, 221, 213,
+			223, 7, 61, 68, 32, 239, 209, 243, 17, 21, 20, 241, 212, 232, 7, 2, 237, 240, 0, 1, 13, 19, 1, 255, 255, 5, 19, 10, 0, 251,
+			238, 244, 0, 247, 242, 4, 25, 25, 10, 0, 251, 241, 243, 240, 242, 19, 27, 11, 19, 5, 252, 15, 16, 6, 2, 249, 0, 4, 248, 1,
+			2, 238, 240, 248, 241, 231, 249, 22, 5, 255, 20, 5, 245, 0, 252, 0, 251, 241, 4, 15, 23, 38, 18, 231, 225, 242, 248, 248, 238, 236,
+			6, 23, 18, 5, 255, 250, 242, 228, 241, 31, 59, 36, 254, 231, 241, 3, 9, 16, 18, 248, 235, 239, 244, 8, 31, 16, 248, 247, 2, 232,
+			212, 243, 20, 47, 49, 7, 234, 230, 246, 6, 5, 12, 27, 35, 17, 228, 199, 227, 5, 22, 25, 1, 221, 217, 241, 16, 48, 31, 221, 196,
+			211, 236, 19, 40, 36, 38, 48, 34, 18, 247, 224, 240, 244, 245, 239, 232, 3, 22, 8, 239, 227, 245, 2, 247, 235, 252, 16, 20, 21, 33,
+			21, 248, 1, 253, 226, 239, 252, 5, 45, 53, 28, 12, 2, 251, 250, 236, 234, 0, 15, 246, 232, 227, 205, 211, 0, 21, 13, 0, 239, 231,
+			1, 25, 28, 20, 14, 26, 43, 27, 5, 252, 236, 11, 46, 22, 226, 199, 195, 226, 20, 24, 4, 8, 0, 255, 23, 33, 8, 234, 240, 2,
+			2, 7, 13, 237, 237, 26, 252, 191, 195, 227, 254, 22, 21, 250, 236, 3, 53, 92, 61, 240, 200, 223, 28, 63, 44, 253, 239, 251, 4, 238,
+			211, 207, 207, 242, 12, 249, 237, 249, 7, 31, 51, 30, 236, 228, 0, 41, 68, 46, 0, 253, 25, 33, 3, 219, 190, 201, 251, 26, 19, 235,
+			180, 175, 217, 1, 46, 75, 47, 21, 0, 216, 228, 15, 44, 58, 30, 251, 252, 250, 246, 228, 219, 231, 246, 16, 31, 7, 245, 4, 11, 242,
+			232, 248, 251, 250, 254, 24, 32, 24, 5, 246, 248, 255, 251, 251, 244, 236, 254, 8, 0, 10, 27, 24, 10, 248, 222, 225, 3, 28, 31, 19,
+			6, 2, 0, 248, 228, 215, 241, 6, 249, 247, 16, 16, 237, 227, 3, 35, 21, 0, 3, 4, 23, 51, 27, 251, 238, 1, 16, 19, 245, 195,
+			202, 0, 18, 255, 243, 0, 251, 229, 230, 232, 231, 21, 60, 36, 21, 32, 28, 11, 5, 245, 232, 238, 251, 31, 49, 12, 229, 227, 220, 221,
+			240, 244, 255, 15, 0, 241, 233, 229, 239, 7, 28, 16, 14, 38, 37, 20, 1, 248, 3, 20, 23, 14, 253, 250, 240, 219, 254, 7, 232, 6,
+			49, 9, 235, 243, 235, 248, 14, 0, 240, 239, 234, 241, 28, 61, 26, 240, 204, 184, 222, 25, 60, 61, 22, 243, 233, 251, 1, 240, 228, 249,
+			7, 27, 49, 18, 211, 203, 250, 29, 35, 20, 7, 0, 250, 248, 248, 240, 5, 19, 11, 9, 19, 1, 251, 16, 12, 243, 244, 233, 225, 5,
+			45, 24, 237, 222, 228, 237, 18, 21, 228, 221, 36, 52, 4, 231, 214, 196, 243, 45, 64, 75, 47, 218, 175, 210, 248, 254, 4, 38, 33, 0,
+			6, 7, 209, 204, 245, 235, 234, 26, 45, 39, 19, 1, 11, 20, 24, 6, 229, 223, 28, 57, 40, 36, 20, 222, 218, 252, 246, 214, 215, 217,
+			219, 14, 35, 237, 242, 35, 26, 252, 233, 215, 213, 8, 76, 90, 35, 250, 0, 17, 29, 11, 214, 190, 214, 239, 3, 29, 12, 202, 192, 2,
+			8, 207, 232, 25, 33, 61, 87, 31, 216, 213, 252, 251, 236, 246, 237, 234, 255, 7, 26, 58, 36, 1, 255, 9, 23, 9, 1, 32, 32, 21,
+			74, 37, 190, 166, 210, 217, 215, 230, 242, 8, 49, 45, 239, 198, 203, 227, 245, 38, 68, 48, 21, 11, 10, 33, 33, 2, 233, 220, 207, 204,
+			250, 15, 5, 33, 61, 7, 199, 189, 206, 218, 5, 32, 16, 3, 16, 19, 14, 5, 12, 249, 243, 10, 14, 8, 42, 39, 29, 41, 18, 218,
+			194, 209, 238, 243, 238, 245, 248, 7, 16, 12, 233, 222, 247, 26, 45, 57, 27, 222, 198, 236, 45, 95, 72, 17, 215, 205, 228, 254, 15, 13,
+			11, 2, 230, 230, 244, 250, 246, 231, 227, 243, 242, 240, 16, 20, 3, 251, 11, 18, 22, 36, 37, 11, 244, 241, 4, 254, 3, 253, 251, 254,
+			241, 220, 207, 214, 248, 6, 21, 19, 251, 247, 3, 31, 62, 67, 33, 247, 219, 235, 247, 2, 18, 17, 1, 255, 222, 217, 253, 0, 222, 249,
+			21, 25, 24, 37, 15, 9, 28, 14, 226, 222, 254, 0, 249, 9, 14, 240, 233, 238, 216, 219, 253, 245, 243, 13, 30, 13, 8, 27, 14, 10,
+			25, 10, 246, 12, 33, 17, 7, 25, 4, 236, 242, 229, 195, 217, 9, 20, 18, 25, 247, 214, 235, 3, 237, 228, 250, 9, 8, 23, 32, 44,
+			49, 36, 255, 213, 219, 255, 253, 246, 12, 14, 242, 245, 8, 0, 248, 242, 230, 224, 240, 2, 18, 13, 254, 12, 30, 27, 21, 9, 252, 0,
+			254, 251, 7, 16, 18, 23, 38, 7, 219, 203, 199, 230, 22, 29, 26, 41, 33, 13, 1, 247, 220, 204, 225, 5, 17, 20, 17, 254, 240, 253,
+			26, 4, 222, 212, 213, 223, 255, 13, 9, 15, 23, 6, 249, 26, 36, 2, 223, 225, 236, 253, 17, 20, 254, 254, 30, 46, 253, 231, 251, 255,
+			254, 0, 252, 232, 231, 14, 47, 41, 21, 17, 247, 212, 252, 57, 53, 35, 29, 238, 198, 218, 31, 76, 51, 229, 154, 134, 202, 24, 70, 42,
+			10, 220, 184, 195, 235, 221, 219, 11, 68, 47, 23, 27, 18, 16, 22, 30, 25, 27, 9, 244, 241, 12, 21, 255, 213, 210, 213, 230, 2, 22,
+			13, 0, 247, 244, 249, 9, 1, 250, 3, 1, 245, 9, 25, 19, 5, 1, 5, 254, 251, 251, 235, 238, 1, 6, 253, 248, 5, 8, 253, 245,
+			251, 254, 11, 18, 12, 0, 251, 254, 244, 235, 252, 4, 254, 4, 16, 3, 235, 231, 254, 25, 40, 44, 27, 22, 28, 20, 14, 24, 33, 27,
+			3, 11, 25, 14, 6, 13, 10, 234, 219, 238, 246, 235, 243, 232, 209, 221, 11, 30, 0, 0, 147, 5, 17, 0, 252, 244, 246, 1, 12, 13,
+			9, 4, 253, 5, 9, 6, 251, 245, 249, 251, 10, 13, 16, 6, 239, 231, 245, 254, 7, 9, 8, 248, 231, 233, 243, 1, 4, 254, 246, 242,
+			0, 8, 6, 0, 247, 239, 244, 10, 28, 37, 26, 7, 249, 252, 0, 0, 5, 16, 25, 25, 15, 255, 240, 227, 229, 247, 12, 23, 16, 0,
+			243, 246, 247, 240, 241, 255, 11, 10, 0, 251, 253, 254, 250, 250, 240, 245, 2, 11, 12, 6, 5, 0, 0, 253, 250, 247, 0, 14, 20, 19,
+			18, 5, 240, 244, 0, 11, 20, 19, 10, 255, 247, 247, 253, 249, 248, 3, 5, 8, 1, 238, 229, 246, 5, 254, 251, 255, 6, 17, 12, 252,
+			242, 247, 255, 0, 13, 16, 11, 0, 244, 244, 248, 242, 245, 2, 8, 3, 7, 255, 240, 241, 253, 10, 14, 6, 253, 3, 18, 30, 33, 20,
+			9, 254, 249, 8, 10, 8, 3, 5, 5, 253, 249, 240, 235, 244, 4, 6, 253, 242, 237, 239, 248, 251, 0, 255, 248, 249, 243, 240, 242, 253,
+			12, 16, 5, 249, 239, 241, 1, 9, 15, 28, 25, 10, 252, 236, 244, 13, 24, 23, 23, 18, 10, 13, 8, 9, 8, 2, 254, 254, 3, 8,
+			14, 9, 252, 231, 223, 233, 241, 3, 12, 4, 239, 227, 232, 250, 0, 248, 255, 2, 248, 248, 250, 252, 4, 0, 0, 0, 251, 254, 20, 20,
+			1, 254, 0, 7, 14, 15, 15, 14, 14, 15, 14, 13, 14, 18, 14, 10, 2, 239, 225, 231, 255, 12, 13, 5, 245, 225, 221, 237, 2, 5,
+			0, 253, 250, 238, 228, 236, 4, 14, 8, 4, 1, 243, 234, 248, 16, 33, 35, 9, 240, 249, 5, 4, 0, 17, 38, 36, 22, 251, 242, 0,
+			20, 20, 249, 247, 2, 7, 2, 250, 234, 238, 247, 242, 239, 0, 12, 7, 247, 229, 225, 253, 11, 17, 15, 7, 247, 220, 233, 247, 253, 21,
+			41, 12, 236, 233, 241, 4, 22, 27, 15, 248, 250, 1, 0, 18, 15, 8, 7, 2, 8, 12, 5, 255, 3, 8, 6, 4, 247, 247, 254, 4,
+			0, 254, 244, 245, 252, 251, 246, 241, 244, 251, 9, 6, 254, 241, 239, 248, 4, 8, 2, 8, 13, 4, 246, 244, 6, 16, 22, 13, 254, 247,
+			236, 252, 24, 27, 4, 243, 247, 255, 9, 16, 18, 11, 10, 253, 254, 0, 253, 240, 246, 7, 22, 11, 252, 237, 225, 229, 235, 247, 254, 253,
+			6, 6, 255, 245, 244, 251, 255, 2, 13, 22, 14, 11, 14, 1, 244, 251, 12, 33, 40, 21, 244, 234, 250, 15, 22, 5, 233, 232, 7, 15,
+			248, 237, 0, 16, 14, 0, 232, 214, 222, 252, 20, 34, 25, 242, 237, 243, 250, 2, 2, 8, 240, 222, 229, 5, 28, 43, 18, 225, 228, 240,
+			254, 25, 57, 48, 4, 244, 241, 0, 16, 7, 3, 0, 6, 254, 14, 31, 25, 2, 232, 219, 213, 234, 15, 33, 25, 1, 249, 245, 241, 216,
+			196, 225, 24, 55, 19, 233, 228, 232, 244, 9, 10, 4, 25, 27, 15, 19, 250, 219, 233, 8, 19, 41, 50, 23, 247, 233, 226, 239, 16, 38,
+			20, 255, 242, 253, 252, 235, 244, 15, 34, 27, 242, 217, 233, 10, 14, 245, 214, 204, 231, 8, 29, 21, 255, 237, 226, 239, 15, 22, 6, 253,
+			20, 36, 37, 252, 214, 226, 20, 63, 65, 34, 1, 218, 221, 234, 251, 6, 252, 4, 16, 21, 17, 253, 234, 230, 243, 226, 242, 27, 64, 67,
+			17, 214, 174, 178, 244, 44, 48, 24, 0, 234, 217, 207, 207, 0, 33, 14, 3, 4, 4, 251, 230, 229, 1, 21, 12, 30, 53, 66, 42, 244,
+			212, 210, 245, 23, 52, 65, 48, 1, 231, 218, 215, 238, 16, 15, 16, 2, 242, 230, 210, 221, 246, 29, 37, 12, 231, 224, 6, 16, 253, 234,
+			224, 238, 19, 34, 6, 222, 214, 221, 243, 15, 24, 31, 37, 28, 0, 219, 210, 244, 45, 57, 52, 19, 246, 254, 20, 17, 252, 229, 234, 16,
+			47, 53, 28, 221, 192, 213, 240, 13, 38, 28, 11, 245, 230, 235, 227, 224, 228, 237, 8, 32, 31, 0, 249, 2, 255, 243, 210, 219, 10, 35,
+			53, 21, 238, 236, 255, 1, 242, 243, 6, 22, 22, 9, 1, 226, 3, 1, 248, 33, 23, 255, 243, 14, 19, 24, 42, 16, 238, 197, 217, 2,
+			23, 55, 38, 0, 224, 223, 235, 240, 15, 29, 13, 236, 227, 213, 218, 31, 32, 9, 244, 200, 203, 15, 49, 46, 29, 242, 219, 210, 232, 12,
+			25, 34, 34, 4, 243, 2, 0, 1, 3, 242, 1, 13, 27, 41, 33, 14, 246, 230, 232, 252, 239, 16, 46, 30, 5, 223, 233, 237, 247, 1,
+			232, 215, 255, 36, 6, 242, 245, 227, 233, 224, 243, 8, 17, 63, 44, 0, 219, 223, 231, 0, 53, 20, 36, 55, 25, 227, 181, 191, 236, 52,
+			81, 65, 8, 217, 221, 200, 203, 25, 69, 67, 33, 222, 208, 237, 17, 47, 10, 201, 205, 1, 33, 51, 250, 219, 242, 234, 234, 234, 209, 8,
+			67, 73, 36, 231, 180, 190, 231, 253, 48, 71, 67, 39, 204, 180, 206, 0, 38, 63, 19, 229, 212, 242, 61, 66, 12, 210, 177, 224, 37, 48,
+			43, 16, 0, 4, 245, 242, 216, 210, 16, 43, 20, 21, 9, 225, 217, 241, 255, 251, 247, 26, 61, 27, 231, 211, 213, 11, 50, 44, 245, 225,
+			215, 9, 51, 57, 11, 180, 162, 244, 41, 28, 11, 230, 205, 243, 12, 11, 239, 233, 239, 245, 40, 78, 29, 240, 220, 231, 244, 9, 39, 43,
+			36, 33, 20, 218, 219, 0, 248, 35, 55, 29, 236, 222, 6, 10, 14, 10, 15, 3, 230, 232, 238, 9, 44, 11, 229, 187, 179, 210, 249, 45,
+			2, 212, 211, 25, 35, 240, 239, 231, 0, 32, 27, 22, 6, 251, 11, 28, 38, 23, 0, 224, 222, 45, 47, 46, 10, 218, 238, 22, 18, 241,
+			4, 0, 8, 19, 252, 13, 0, 222, 242, 239, 235, 234, 20, 24, 235, 211, 204, 233, 231, 31, 46, 246, 230, 220, 210, 233, 26, 45, 29, 243,
+			236, 31, 41, 28, 32, 216, 254, 62, 41, 19, 29, 44, 1, 10, 225, 210, 216, 251, 87, 79, 2, 221, 174, 131, 223, 49, 37, 26, 15, 229,
+			216, 213, 230, 220, 214, 41, 56, 27, 231, 205, 217, 248, 64, 70, 250, 172, 227, 35, 41, 45, 23, 239, 248, 15, 31, 6, 7, 17, 39, 29,
+			233, 253, 13, 10, 23, 240, 234, 8, 15, 28, 38, 14, 201, 184, 184, 253, 94, 95, 3, 164, 131, 186, 20, 73, 41, 234, 195, 191, 11, 9,
+			239, 242, 244, 20, 40, 43, 239, 196, 228, 35, 94, 50, 236, 213, 200, 235, 32, 58, 49, 19, 226, 242, 15, 218, 227, 52, 74, 74, 15, 214,
+			0, 227, 250, 41, 38, 246, 8, 23, 231, 245, 237, 241, 230, 247, 32, 41, 5, 201, 210, 187, 216, 38, 50, 252, 237, 229, 232, 250, 0, 255,
+			237, 4, 10, 2, 240, 12, 12, 12, 9, 1, 5, 228, 12, 38, 15, 232, 247, 254, 241, 33, 47, 13, 210, 229, 20, 48, 18, 221, 237, 251,
+			26, 62, 8, 216, 246, 3, 2, 8, 30, 22, 18, 254, 249, 248, 241, 19, 23, 244, 253, 7, 248, 237, 6, 26, 3, 239, 242, 5, 7, 8,
+			12, 215, 217, 243, 255, 249, 251, 6, 236, 227, 245, 253, 253, 225, 231, 250, 234, 28, 25, 244, 210, 241, 6, 4, 28, 30, 47, 255, 227, 7,
+			247, 6, 50, 52, 11, 246, 9, 38, 0, 230, 252, 31, 20, 54, 61, 10, 216, 189, 233, 12, 39, 74, 30, 200, 147, 214, 50, 41, 16, 4,
+			243, 245, 204, 223, 218, 242, 242, 32, 53, 13, 6, 209, 196, 230, 28, 80, 61, 241, 186, 214, 26, 42, 65, 22, 234, 234, 238, 6, 17, 5,
+			245, 41, 42, 247, 237, 194, 208, 2, 19, 252, 18, 242, 238, 246, 224, 223, 216, 226, 13, 31, 30, 2, 228, 207, 218, 248, 14, 15, 255, 19,
+			18, 2, 14, 236, 241, 239, 7, 40, 44, 34, 9, 12, 251, 252, 22, 30, 38, 39, 31, 3, 20, 26, 9, 2, 8, 19, 38, 26, 28, 33,
+			13, 248, 1, 247, 239, 21, 56, 43, 12, 242, 239, 0, 183, 6, 8, 0, 1, 12, 253, 238, 243, 1, 5, 0, 5, 252, 253, 17, 26, 8,
+			255, 19, 43, 35, 14, 7, 17, 21, 19, 15, 8, 12, 12, 11, 252, 236, 255, 15, 10, 251, 235, 243, 238, 224, 225, 219, 217, 229, 228, 214,
+			198, 198, 224, 4, 245, 235, 14, 29, 26, 0, 3, 31, 47, 54, 54, 39, 16, 29, 56, 52, 33, 11, 18, 41, 23, 250, 246, 2, 1, 0,
+			253, 221, 220, 244, 237, 223, 209, 221, 249, 235, 204, 215, 245, 0, 245, 235, 247, 6, 17, 8, 245, 243, 0, 24, 16, 242, 243, 17, 30, 23,
+			0, 250, 16, 38, 29, 10, 9, 5, 21, 25, 4, 250, 21, 29, 16, 242, 240, 10, 18, 4, 245, 244, 244, 246, 241, 238, 230, 233, 237, 240,
+			229, 220, 243, 250, 251, 248, 4, 12, 21, 23, 14, 19, 29, 36, 40, 19, 9, 15, 16, 4, 3, 2, 251, 244, 237, 254, 0, 240, 244, 246,
+			233, 235, 249, 250, 236, 235, 246, 253, 243, 240, 2, 1, 247, 4, 9, 5, 8, 16, 24, 24, 2, 254, 13, 5, 252, 246, 254, 249, 0, 0,
+			254, 249, 248, 10, 13, 2, 15, 30, 32, 18, 5, 20, 20, 12, 0, 4, 3, 245, 253, 255, 249, 228, 236, 251, 251, 247, 249, 249, 0, 7,
+			10, 253, 240, 239, 255, 255, 229, 228, 254, 6, 247, 228, 238, 253, 0, 32, 48, 31, 7, 254, 255, 10, 2, 5, 30, 23, 248, 235, 253, 7,
+			248, 253, 31, 19, 240, 240, 253, 254, 255, 10, 18, 251, 227, 231, 253, 234, 237, 4, 6, 7, 245, 241, 248, 243, 253, 25, 17, 235, 250, 13,
+			254, 236, 252, 25, 34, 28, 11, 13, 20, 30, 46, 50, 32, 17, 30, 29, 252, 226, 247, 4, 242, 230, 233, 224, 189, 216, 2, 234, 208, 218,
+			249, 254, 217, 217, 242, 4, 2, 255, 8, 252, 245, 17, 38, 27, 3, 33, 64, 31, 12, 22, 26, 47, 40, 13, 14, 246, 6, 37, 3, 220,
+			219, 242, 252, 211, 173, 217, 246, 237, 229, 225, 220, 230, 3, 11, 244, 245, 13, 44, 25, 242, 247, 29, 47, 31, 24, 29, 43, 55, 43, 16,
+			7, 16, 47, 32, 243, 223, 0, 10, 249, 223, 213, 231, 249, 248, 235, 224, 211, 232, 1, 255, 230, 221, 244, 240, 238, 251, 1, 4, 1, 9,
+			10, 245, 250, 12, 35, 35, 10, 12, 2, 249, 1, 17, 38, 29, 13, 14, 4, 222, 245, 35, 35, 4, 241, 5, 15, 238, 224, 245, 5, 248,
+			252, 237, 218, 205, 225, 12, 6, 240, 252, 18, 4, 246, 254, 22, 38, 29, 30, 26, 4, 247, 19, 23, 4, 13, 21, 31, 13, 243, 251, 10,
+			14, 245, 246, 242, 248, 237, 209, 223, 233, 219, 223, 229, 226, 212, 228, 242, 0, 7, 13, 28, 14, 20, 49, 72, 60, 34, 42, 49, 38, 19,
+			4, 244, 254, 253, 244, 220, 205, 216, 247, 246, 209, 213, 243, 252, 0, 235, 236, 253, 254, 243, 13, 11, 249, 7, 23, 25, 248, 236, 27, 68,
+			30, 254, 20, 32, 10, 10, 2, 250, 235, 7, 36, 248, 202, 226, 10, 25, 248, 236, 6, 22, 26, 7, 247, 0, 31, 29, 2, 229, 224, 253,
+			8, 229, 203, 211, 240, 1, 239, 210, 223, 254, 3, 253, 239, 254, 12, 24, 2, 249, 0, 43, 58, 47, 16, 254, 33, 56, 50, 26, 18, 20,
+			16, 6, 255, 245, 244, 243, 6, 7, 225, 198, 222, 0, 249, 228, 242, 244, 234, 232, 248, 247, 226, 234, 9, 252, 230, 232, 0, 2, 251, 251,
+			5, 4, 251, 13, 21, 12, 9, 30, 32, 22, 10, 20, 49, 54, 37, 29, 27, 24, 45, 37, 246, 232, 245, 0, 238, 224, 219, 207, 194, 225,
+			226, 211, 199, 231, 2, 227, 206, 232, 12, 16, 14, 36, 34, 24, 19, 44, 46, 10, 20, 53, 62, 19, 240, 1, 22, 2, 6, 5, 252, 247,
+			223, 220, 234, 227, 248, 5, 241, 217, 218, 238, 230, 234, 6, 27, 22, 239, 240, 252, 2, 21, 30, 25, 11, 249, 253, 8, 10, 255, 19, 33,
+			5, 252, 243, 8, 27, 23, 13, 13, 16, 251, 248, 248, 250, 241, 0, 6, 254, 217, 222, 250, 241, 243, 8, 20, 6, 249, 247, 254, 6, 4,
+			18, 14, 227, 230, 12, 25, 248, 237, 244, 35, 4, 219, 6, 33, 19, 15, 24, 10, 250, 0, 33, 11, 209, 228, 255, 0, 229, 219, 237, 243,
+			228, 248, 26, 22, 14, 32, 41, 18, 254, 10, 46, 45, 27, 255, 241, 228, 251, 1, 240, 220, 224, 21, 10, 222, 243, 1, 12, 5, 241, 7,
+			13, 241, 231, 236, 241, 223, 252, 5, 240, 224, 220, 16, 14, 241, 255, 34, 20, 21, 43, 27, 36, 25, 35, 57, 23, 248, 3, 24, 4, 253,
+			246, 245, 0, 246, 250, 2, 242, 222, 4, 4, 226, 217, 228, 228, 205, 209, 244, 5, 225, 220, 254, 10, 255, 7, 55, 54, 41, 42, 40, 51,
+			43, 15, 10, 27, 19, 3, 233, 218, 224, 236, 236, 250, 239, 225, 0, 12, 242, 245, 2, 0, 6, 26, 4, 254, 4, 240, 242, 253, 245, 0,
+			7, 245, 0, 254, 250, 7, 248, 247, 13, 11, 243, 224, 240, 12, 1, 243, 246, 244, 249, 21, 10, 15, 13, 13, 33, 60, 44, 11, 11, 21,
+			37, 56, 11, 233, 247, 239, 0, 240, 207, 221, 243, 224, 223, 206, 187, 235, 7, 251, 246, 254, 13, 32, 20, 229, 0, 35, 46, 70, 33, 5,
+			29, 45, 27, 7, 253, 42, 69, 16, 216, 207, 221, 231, 231, 211, 190, 189, 200, 214, 223, 186, 196, 6, 41, 25, 239, 224, 6, 41, 38, 32,
+			26, 35, 63, 45, 35, 24, 16, 77, 112, 73, 10, 8, 28, 13, 244, 232, 240, 227, 186, 184, 170, 149, 158, 206, 219, 217, 238, 247, 3, 9,
+			7, 64, 100, 59, 39, 45, 49, 31, 22, 14, 31, 36, 0, 9, 247, 212, 3, 41, 34, 235, 202, 242, 246, 203, 177, 200, 221, 211, 204, 192,
+			207, 218, 11, 34, 13, 30, 44, 83, 69, 35, 44, 72, 92, 71, 11, 251, 228, 228, 0, 247, 200, 188, 216, 217, 194, 195, 240, 10, 251, 10,
+			26, 13, 8, 26, 59, 61, 42, 29, 5, 3, 4, 252, 0, 252, 1, 255, 233, 218, 219, 246, 255, 6, 250, 228, 244, 247, 244, 239, 245, 0,
+			19, 13, 237, 233, 230, 254, 34, 14, 24, 13, 21, 27, 8, 44, 45, 45, 58, 34, 1, 253, 4, 2, 254, 232, 207, 222, 207, 185, 195, 219,
+			241, 234, 235, 225, 229, 238, 240, 21, 33, 25, 47, 45, 33, 21, 19, 54, 65, 35, 18, 17, 254, 239, 241, 234, 226, 231, 5, 255, 229, 217,
+			205, 226, 0, 10, 14, 239, 241, 1, 5, 4, 9, 26, 25, 20, 38, 4, 238, 5, 35, 37, 16, 11, 2, 248, 245, 1, 252, 239, 239, 0,
+			245, 208, 209, 234, 227, 231, 9, 6, 8, 249, 251, 20, 28, 38, 58, 52, 19, 20, 26, 254, 245, 245, 1, 12, 232, 230, 232, 223, 231, 250,
+			15, 240, 236, 14, 249, 244, 241, 254, 2, 5, 27, 7, 234, 232, 17, 32, 0, 21, 26, 17, 249, 239, 253, 233, 3, 15, 254, 230, 207, 236,
+			237, 222, 243, 1, 15, 2, 4, 246, 7, 53, 53, 53, 53, 62, 52, 18, 27, 33, 41, 20, 253, 1, 212, 209, 227, 234, 218, 222, 229, 227,
+			227, 224, 236, 246, 237, 0, 246, 215, 220, 223, 235, 233, 0, 12, 0, 248, 247, 15, 30, 44, 73, 72, 44, 40, 35, 36, 36, 23, 20, 25,
+			248, 227, 227, 204, 211, 229, 245, 241, 223, 222, 238, 246, 254, 20, 38, 15, 10, 26, 2, 0, 14, 0, 249, 248, 251, 0, 228, 211, 242, 1,
+			15, 14, 11, 0, 251, 14, 6, 8, 24, 19, 17, 254, 233, 248, 248, 243, 19, 18, 234, 11, 11, 252, 254, 9, 44, 33, 254, 2, 6, 254,
+			231, 252, 12, 236, 229, 237, 224, 206, 220, 244, 255, 236, 228, 12, 7, 255, 16, 36, 41, 37, 38, 39, 15, 2, 11, 35, 23, 243, 18, 1,
+			229, 247, 237, 239, 2, 240, 246, 243, 229, 230, 255, 0, 244, 2, 249, 7, 6, 229, 240, 25, 43, 12, 255, 1, 247, 13, 14, 6, 11, 6,
+			3, 16, 235, 198, 0, 21, 7, 2, 220, 239, 18, 246, 248, 255, 9, 25, 33, 0, 244, 247, 6, 26, 25, 0, 248, 8, 1, 239, 238, 254,
+			7, 23, 5, 246, 248, 225, 239, 25, 4, 247, 3, 3, 9, 250, 244, 21, 36, 22, 11, 15, 10, 3, 23, 12, 1, 253, 2, 6, 244, 222,
+			218, 245, 250, 225, 226, 237, 238, 245, 244, 240, 237, 10, 10, 9, 249, 240, 31, 35, 18, 25, 251, 247, 21, 15, 244, 236, 247, 3, 14, 249,
+			238, 254, 252, 10, 24, 254, 252, 29, 24, 6, 12, 12, 30, 38, 21, 13, 11, 255, 9, 17, 8, 240, 242, 245, 224, 215, 223, 240, 242, 250,
+			233, 237, 238, 250, 15, 255, 247, 3, 19, 11, 1, 5, 0, 249, 19, 12, 9, 250, 2, 8, 7, 241, 26, 33, 253, 8, 247, 249, 252, 244,
+			6, 0, 220, 228, 241, 234, 235, 244, 244, 4, 253, 255, 8, 254, 9, 21, 29, 20, 16, 21, 29, 26, 7, 19, 26, 19, 23, 14, 12, 21,
+			253, 13, 4, 12, 2, 2, 250, 248, 247, 238, 237, 220, 230, 225, 222, 227, 211, 225, 229, 225, 245, 239, 241, 253, 3, 11, 8, 14, 17, 20,
+			17, 12, 12, 3, 6, 18, 5, 246, 246, 9, 14, 249, 247, 236, 245, 10, 10, 17, 0, 253, 19, 24, 16, 7, 37, 42, 28, 32, 14, 30,
+			16, 11, 29, 5, 251, 250, 8, 0, 229, 242, 234, 243, 244, 244, 249, 231, 239, 245, 5, 0, 237, 0, 250, 241, 252, 243, 10, 17, 254, 2,
+			2, 2, 2, 4, 2, 250, 244, 236, 249, 237, 219, 225, 239, 233, 214, 206, 222, 221, 225, 225, 227, 241, 227, 248, 0, 0, 30, 7, 15, 0,
+			0, 248, 249, 252, 250, 251, 254, 255, 255, 0, 249, 243, 242, 249, 1, 3, 0, 2, 3, 1, 253, 251, 247, 248, 252, 252, 255, 250, 253, 253,
+			255, 254, 0, 8, 16, 18, 18, 16, 12, 8, 6, 5, 7, 12, 17, 24, 24, 24, 21, 19, 20, 16, 13, 13, 7, 9, 8, 6, 7, 12,
+			14, 20, 21, 21, 19, 15, 7, 0, 249, 239, 242, 245, 243, 245, 247, 248, 251, 249, 251, 250, 243, 241, 237, 240, 241, 242, 244, 247, 248, 248,
+			249, 243, 241, 245, 247, 249, 248, 250, 0, 255, 254, 251, 251, 246, 239, 247, 241, 233, 230, 231, 236, 240, 245, 253, 0, 1, 3, 2, 0, 255,
+			0, 6, 8, 11, 16, 25, 27, 30, 36, 36, 26, 17, 5, 255, 253, 254, 0, 3, 9, 15, 19, 21, 21, 18, 12, 5, 5, 6, 5, 2,
+			2, 0, 253, 0, 12, 16, 12, 2, 246, 237, 235, 232, 227, 224, 226, 232, 238, 243, 247, 252, 255, 1, 3, 0, 251, 244, 242, 247, 251, 0,
+			4, 6, 1, 251, 248, 243, 247, 248, 249, 254, 4, 255, 255, 255, 253, 255, 4, 5, 5, 4, 0, 3, 2, 0, 254, 255, 3, 6, 12, 14,
+			10, 4, 0, 1, 3, 12, 20, 22, 26, 22, 20, 18, 15, 9, 4, 1, 0, 13, 15, 12, 11, 5, 254, 249, 241, 242, 238, 238, 243, 249,
+			247, 250, 253, 254, 255, 0, 1, 3, 6, 3, 0, 254, 254, 5, 7, 1, 0, 250, 248, 247, 240, 241, 241, 244, 248, 249, 250, 1, 4, 254,
+			0, 253, 253, 0, 0, 4, 10, 17, 21, 15, 4, 250, 242, 236, 230, 229, 234, 236, 239, 243, 0, 10, 19, 24, 22, 17, 18, 15, 17, 14,
+			11, 17, 31, 39, 44, 42, 34, 34, 30, 24, 14, 7, 255, 254, 0, 0, 1, 4, 11, 10, 7, 2, 2, 4, 1, 255, 250, 0, 5, 8,
+			8, 9, 6, 2, 1, 252, 243, 239, 237, 232, 230, 222, 221, 222, 229, 235, 235, 241, 240, 236, 237, 237, 242, 244, 244, 246, 245, 241, 245, 237,
+			231, 235, 235, 244, 248, 243, 240, 236, 234, 238, 236, 243, 252, 251, 254, 0, 252, 0, 0, 5, 9, 13, 18, 22, 21, 18, 22, 26, 36, 41,
+			38, 43, 40, 34, 26, 17, 11, 14, 8, 8, 8, 9, 18, 26, 24, 12, 254, 254, 254, 251, 254, 252, 253, 252, 253, 255, 1, 5, 6, 3,
+			254, 250, 250, 248, 241, 242, 245, 248, 254, 0, 3, 11, 11, 14, 9, 250, 236, 236, 235, 242, 246, 250, 251, 251, 0, 0, 252, 242, 234, 234,
+			230, 234, 238, 243, 246, 242, 250, 10, 16, 18, 15, 10, 3, 1, 254, 255, 251, 6, 20, 20, 25, 28, 20, 11, 1, 250, 250, 251, 252, 247,
+			246, 244, 254, 7, 0, 252, 255, 0, 3, 0, 1, 2, 12, 15, 22, 25, 21, 20, 11, 7, 10, 7, 8, 6, 2, 3, 9, 5, 255, 252,
+			239, 228, 230, 231, 233, 237, 237, 242, 248, 253, 8, 19, 16, 14, 9, 253, 253, 250, 244, 244, 243, 246, 253, 254, 252, 249, 238, 234, 237, 239,
+			243, 243, 252, 1, 0, 0, 11, 11, 12, 19, 23, 22, 20, 15, 16, 13, 9, 12, 20, 23, 28, 30, 26, 20, 12, 6, 6, 8, 10, 9,
+			7, 6, 9, 15, 24, 30, 29, 25, 12, 1, 250, 248, 245, 243, 237, 230, 224, 236, 244, 248, 242, 238, 241, 242, 249, 253, 246, 237, 233, 236,
+			248, 253, 3, 5, 5, 254, 252, 243, 242, 242, 241, 237, 231, 231, 232, 234, 244, 247, 255, 3, 0, 255, 255, 254, 2, 4, 254, 0, 3, 5,
+			7, 2, 2, 9, 14, 17, 14, 3, 254, 249, 244, 250, 246, 246, 252, 251, 0, 3, 8, 22, 29, 28, 33, 28, 25, 16, 6, 9, 5, 10,
+			18, 18, 17, 21, 23, 26, 15, 4, 3, 0, 253, 254, 249, 248, 246, 252, 2, 0, 255, 253, 254, 243, 239, 234, 224, 232, 242, 247, 3, 2,
+			2, 1, 243, 232, 239, 245, 253, 254, 255, 3, 10, 13, 12, 6, 255, 4, 7, 1, 250, 241, 240, 244, 246, 243, 247, 251, 2, 5, 0, 249,
+			233, 228, 229, 234, 250, 255, 253, 6, 27, 29, 28, 27, 21, 5, 255, 254, 255, 0, 253, 7, 11, 9, 17, 28, 29, 18, 3, 4, 4, 254,
+			251, 255, 1, 11, 16, 23, 29, 30, 31, 31, 23, 8, 250, 239, 238, 237, 244, 249, 251, 4, 5, 1, 2, 251, 242, 243, 241, 241, 233, 233,
+			245, 0, 14, 20, 16, 9, 0, 243, 239, 241, 235, 226, 224, 236, 249, 0, 4, 0, 251, 247, 240, 235, 236, 233, 237, 247, 1, 15, 27, 34,
+			35, 29, 21, 9, 3, 2, 253, 3, 8, 19, 25, 30, 26, 20, 15, 17, 14, 6, 248, 236, 245, 251, 252, 5, 9, 11, 16, 9, 4, 0,
+			244, 250, 254, 253, 5, 0, 0, 5, 252, 252, 0, 246, 247, 252, 243, 244, 241, 241, 250, 251, 251, 2, 10, 6, 3, 2, 250, 244, 235, 226,
+			232, 234, 234, 240, 239, 232, 227, 232, 240, 244, 246, 243, 241, 243, 244, 10, 24, 26, 29, 26, 20, 18, 21, 19, 14, 1, 3, 20, 16, 16,
+			23, 14, 6, 5, 5, 0, 253, 252, 253, 251, 253, 11, 22, 15, 17, 24, 29, 36, 40, 30, 17, 12, 255, 250, 242, 231, 234, 239, 229, 243,
+			253, 245, 253, 251, 248, 246, 230, 229, 242, 250, 6, 15, 21, 30, 23, 21, 17, 254, 254, 0, 255, 3, 255, 247, 248, 244, 254, 3, 251, 243,
+			231, 210, 215, 227, 230, 239, 250, 252, 0, 3, 10, 25, 36, 12, 253, 2, 241, 250, 3, 239, 242, 249, 3, 30, 40, 29, 15, 248, 229, 229,
+			243, 0, 4, 246, 243, 254, 11, 29, 34, 23, 20, 30, 33, 21, 8, 243, 233, 250, 15, 39, 52, 31, 18, 4, 236, 239, 236, 237, 244, 228,
+			228, 240, 255, 12, 20, 14, 255, 0, 13, 6, 17, 11, 229, 224, 237, 247, 14, 16, 10, 12, 254, 245, 236, 226, 220, 210, 216, 231, 233, 245,
+			247, 236, 246, 241, 247, 11, 15, 7, 255, 2, 0, 253, 12, 21, 29, 34, 17, 18, 25, 20, 23, 19, 24, 29, 32, 37, 33, 18, 10, 5,
+			0, 13, 10, 0, 251, 248, 246, 240, 243, 5, 25, 22, 23, 23, 20, 16, 252, 243, 245, 239, 248, 253, 248, 251, 245, 245, 253, 243, 235, 242,
+			235, 223, 216, 204, 190, 193, 205, 225, 249, 10, 8, 8, 250, 249, 4, 7, 13, 10, 2, 0, 252, 253, 245, 242, 246, 237, 243, 248, 237, 243,
+			237, 228, 251, 2, 19, 39, 22, 25, 24, 34, 51, 44, 41, 49, 48, 62, 56, 45, 38, 21, 23, 18, 254, 253, 230, 226, 241, 238, 255, 0,
+			252, 3, 243, 225, 241, 230, 244, 8, 254, 10, 9, 4, 21, 5, 10, 20, 255, 1, 242, 216, 229, 223, 209, 224, 217, 204, 226, 230, 223, 239,
+			246, 251, 18, 31, 39, 55, 52, 33, 16, 247, 243, 7, 4, 1, 1, 2, 12, 13, 255, 239, 216, 204, 212, 236, 246, 1, 8, 0, 255, 0,
+			8, 22, 18, 30, 42, 28, 21, 18, 6, 249, 230, 226, 239, 242, 241, 255, 1, 7, 23, 26, 31, 28, 23, 30, 31, 28, 24, 45, 57, 68,
+			70, 43, 30, 33, 39, 27, 5, 254, 232, 213, 207, 186, 189, 190, 183, 195, 213, 218, 224, 233, 219, 220, 224, 236, 243, 228, 235, 0, 5, 3,
+			14, 14, 249, 254, 1, 245, 241, 246, 253, 2, 3, 5, 8, 6, 251, 1, 1, 242, 245, 238, 236, 250, 3, 29, 48, 45, 43, 38, 23, 33,
+			29, 22, 19, 6, 1, 9, 6, 13, 18, 4, 4, 253, 2, 26, 29, 31, 19, 9, 8, 11, 18, 19, 26, 13, 9, 25, 12, 12, 2, 225,
+			227, 226, 214, 228, 229, 225, 239, 220, 191, 204, 208, 218, 237, 235, 244, 9, 22, 9, 235, 223, 226, 228, 253, 14, 4, 15, 13, 242, 246, 240,
+			245, 4, 0, 1, 10, 18, 17, 13, 25, 17, 9, 18, 26, 27, 28, 23, 23, 38, 43, 30, 35, 46, 24, 21, 15, 248, 253, 246, 216, 215,
+			214, 229, 0, 5, 9, 255, 236, 243, 234, 235, 231, 211, 224, 246, 240, 8, 10, 12, 30, 9, 255, 254, 0, 9, 6, 8, 2, 4, 19, 5,
+			14, 27, 17, 38, 44, 24, 19, 19, 4, 246, 238, 250, 2, 19, 24, 1, 1, 253, 246, 249, 239, 224, 219, 213, 213, 228, 252, 0, 252, 240,
+			242, 246, 255, 18, 29, 19, 17, 25, 22, 18, 18, 9, 12, 32, 26, 12, 9, 238, 227, 244, 229, 225, 3, 15, 21, 31, 29, 10, 10, 13,
+			249, 243, 236, 214, 211, 212, 209, 232, 251, 242, 231, 232, 225, 220, 227, 222, 214, 216, 231, 242, 249, 247, 254, 7, 14, 30, 41, 44, 34, 7,
+			1, 253, 244, 0, 0, 244, 5, 23, 30, 40, 14, 247, 249, 252, 255, 11, 24, 12, 0, 2, 2, 7, 27, 24, 14, 254, 245, 0, 241, 238,
+			244, 221, 234, 252, 250, 26, 36, 8, 15, 7, 249, 29, 48, 51, 73, 77, 79, 90, 81, 59, 47, 34, 28, 41, 36, 24, 30, 19, 6, 20,
+			18, 20, 34, 22, 4, 245, 229, 232, 222, 207, 212, 214, 237, 1, 255, 8, 0, 242, 240, 226, 217, 220, 215, 199, 193, 199, 222, 228, 245, 242,
+			211, 210, 207, 192, 197, 195, 183, 201, 215, 216, 231, 238, 221, 225, 242, 236, 240, 238, 215, 213, 221, 205, 212, 228, 220, 232, 254, 254, 8, 7,
+			251, 238, 234, 237, 242, 250, 0, 0, 5, 21, 39, 49, 77, 77, 62, 73, 65, 40, 26, 3, 3, 8, 21, 34, 43, 54, 40, 40, 36, 35,
+			43, 31, 36, 34, 26, 50, 53, 39, 47, 45, 45, 31, 34, 16, 243, 249, 227, 200, 220, 230, 232, 13, 15, 5, 31, 29, 33, 24, 7, 10,
+			11, 28, 30, 10, 36, 32, 39, 47, 22, 26, 32, 28, 19, 7, 4, 0, 9, 13, 4, 32, 52, 44, 54, 43, 7, 255, 235, 213, 210, 198,
+			192, 199, 191, 184, 171, 189, 198, 179, 186, 173, 157, 145, 133, 140, 143, 166, 200, 216, 227, 251, 233, 224, 219, 193, 197, 220, 224, 235, 255, 251,
+			251, 18, 30, 24, 36, 49, 50, 59, 50, 34, 31, 21, 15, 25, 39, 71, 65, 61, 53, 36, 32, 33, 20, 9, 5, 8, 21, 30, 22, 4,
+			13, 21, 23, 28, 24, 18, 14, 5, 253, 253, 254, 0, 3, 3, 4, 6, 7, 9, 6, 4, 3, 1, 0, 0, 168, 6, 10, 0, 0, 255,
+			0, 1, 254, 252, 1, 6, 8, 8, 10, 10, 9, 11, 11, 3, 250, 250, 253, 249, 246, 247, 248, 253, 0, 0, 4, 5, 253, 247, 245, 245,
+			242, 239, 244, 253, 3, 2, 3, 8, 5, 1, 0, 255, 3, 3, 0, 3, 7, 12, 13, 22, 27, 19, 10, 5, 9, 10, 7, 9, 9, 255,
+			247, 2, 9, 249, 237, 243, 250, 247, 244, 247, 239, 223, 235, 249, 251, 248, 239, 0, 14, 4, 253, 5, 9, 0, 1, 3, 6, 0, 254, 19,
+			17, 10, 17, 29, 31, 18, 13, 17, 21, 252, 238, 227, 204, 214, 246, 2, 4, 10, 21, 38, 37, 8, 227, 217, 225, 212, 196, 201, 217, 235,
+			19, 58, 48, 25, 30, 24, 253, 234, 231, 217, 226, 2, 0, 11, 38, 47, 61, 68, 48, 253, 233, 250, 242, 6, 14, 244, 249, 29, 69, 64,
+			50, 22, 0, 246, 232, 222, 185, 188, 230, 235, 242, 4, 6, 4, 14, 11, 217, 194, 213, 218, 218, 219, 235, 253, 17, 20, 0, 252, 6, 15,
+			23, 15, 251, 246, 0, 6, 249, 243, 24, 54, 49, 41, 44, 38, 6, 14, 26, 241, 191, 239, 38, 35, 28, 8, 17, 0, 234, 225, 220, 221,
+			199, 209, 241, 249, 0, 23, 13, 241, 236, 244, 6, 14, 12, 252, 236, 246, 250, 10, 31, 33, 29, 34, 76, 66, 3, 249, 13, 16, 5, 255,
+			216, 240, 43, 50, 38, 9, 2, 3, 238, 239, 233, 207, 236, 231, 216, 247, 225, 194, 217, 230, 196, 183, 227, 255, 244, 251, 31, 22, 3, 43,
+			44, 16, 9, 30, 28, 229, 231, 228, 230, 24, 55, 55, 51, 53, 35, 13, 240, 250, 254, 224, 237, 255, 243, 236, 250, 15, 37, 13, 229, 212,
+			214, 215, 212, 233, 248, 9, 16, 5, 30, 39, 38, 20, 238, 238, 237, 240, 244, 243, 13, 48, 79, 92, 62, 19, 2, 8, 252, 227, 232, 217,
+			231, 25, 46, 53, 35, 4, 1, 19, 253, 223, 215, 223, 244, 249, 5, 254, 7, 10, 5, 22, 248, 238, 226, 227, 239, 221, 220, 222, 0, 15,
+			30, 44, 20, 246, 201, 201, 241, 243, 251, 8, 14, 34, 35, 41, 31, 234, 168, 156, 183, 207, 245, 244, 242, 253, 255, 38, 78, 68, 28, 4,
+			232, 189, 169, 177, 207, 230, 9, 26, 23, 41, 79, 66, 52, 49, 234, 191, 225, 15, 42, 60, 52, 74, 101, 83, 92, 69, 32, 8, 235, 254,
+			253, 13, 36, 26, 34, 36, 12, 3, 11, 3, 226, 201, 188, 156, 171, 204, 222, 224, 2, 40, 21, 17, 10, 230, 199, 163, 143, 185, 247, 233,
+			219, 21, 38, 39, 39, 14, 250, 230, 203, 199, 230, 248, 241, 23, 88, 78, 61, 44, 252, 204, 199, 211, 190, 184, 210, 2, 23, 17, 46, 82,
+			112, 106, 46, 15, 235, 173, 150, 184, 239, 4, 43, 83, 99, 99, 52, 25, 35, 4, 237, 211, 198, 237, 237, 3, 40, 46, 43, 34, 36, 3,
+			224, 206, 203, 217, 234, 255, 244, 247, 21, 43, 36, 9, 242, 218, 215, 200, 218, 4, 250, 244, 32, 41, 21, 24, 14, 0, 228, 213, 227, 213,
+			219, 230, 203, 235, 37, 38, 50, 84, 63, 255, 215, 217, 202, 193, 218, 233, 243, 40, 86, 75, 68, 46, 2, 255, 14, 250, 197, 181, 222, 225,
+			0, 37, 12, 42, 69, 60, 32, 240, 226, 223, 217, 214, 222, 252, 13, 52, 79, 44, 46, 51, 24, 230, 220, 247, 230, 219, 207, 224, 1, 245,
+			228, 252, 40, 19, 220, 220, 214, 176, 188, 213, 229, 252, 255, 249, 249, 33, 25, 3, 26, 13, 250, 241, 38, 76, 61, 73, 62, 35, 31, 43,
+			46, 14, 235, 242, 35, 73, 59, 2, 228, 252, 247, 246, 14, 5, 224, 185, 208, 220, 187, 196, 206, 228, 249, 247, 11, 13, 236, 204, 218, 235,
+			235, 246, 253, 25, 39, 5, 251, 5, 27, 17, 0, 6, 14, 29, 37, 39, 30, 3, 242, 251, 250, 1, 12, 15, 0, 240, 29, 28, 8, 25,
+			4, 2, 247, 223, 239, 241, 251, 254, 229, 229, 0, 14, 12, 23, 13, 235, 241, 15, 243, 181, 225, 30, 31, 30, 245, 242, 0, 12, 27, 248,
+			236, 233, 253, 31, 40, 24, 250, 248, 16, 4, 227, 227, 231, 227, 249, 27, 48, 47, 41, 35, 29, 1, 229, 226, 225, 229, 225, 237, 17, 23,
+			249, 11, 44, 34, 19, 32, 23, 231, 222, 242, 244, 249, 12, 253, 249, 9, 22, 32, 27, 15, 242, 247, 14, 242, 195, 192, 212, 233, 243, 245,
+			245, 253, 20, 27, 12, 247, 255, 3, 228, 220, 215, 246, 16, 21, 49, 30, 20, 10, 245, 222, 216, 239, 242, 255, 0, 5, 37, 44, 34, 24,
+			23, 15, 241, 229, 246, 245, 229, 240, 0, 14, 35, 42, 39, 37, 29, 14, 241, 206, 204, 227, 216, 235, 7, 11, 45, 80, 83, 43, 21, 0,
+			226, 224, 206, 190, 202, 244, 40, 69, 69, 35, 15, 17, 234, 219, 217, 202, 221, 223, 228, 254, 17, 37, 61, 51, 27, 3, 196, 191, 232, 212,
+			190, 223, 12, 32, 26, 22, 12, 254, 230, 234, 232, 195, 198, 243, 12, 244, 252, 33, 73, 77, 43, 26, 8, 243, 221, 247, 18, 14, 14, 35,
+			93, 69, 23, 42, 39, 0, 236, 246, 252, 245, 245, 248, 245, 3, 16, 23, 33, 16, 230, 209, 198, 194, 194, 176, 185, 211, 199, 206, 228, 0,
+			2, 252, 43, 46, 4, 5, 10, 0, 246, 247, 26, 36, 30, 46, 58, 63, 93, 90, 54, 27, 13, 252, 234, 255, 2, 5, 0, 38, 43, 6,
+			17, 255, 217, 174, 149, 151, 159, 163, 175, 222, 15, 36, 12, 242, 0, 3, 225, 197, 205, 237, 237, 234, 24, 42, 46, 72, 57, 58, 47, 249,
+			0, 17, 16, 24, 27, 35, 24, 5, 24, 62, 50, 28, 22, 27, 21, 249, 221, 198, 211, 227, 249, 3, 11, 5, 232, 215, 212, 208, 186, 223,
+			7, 0, 239, 231, 255, 19, 38, 48, 58, 48, 32, 10, 231, 247, 242, 240, 12, 22, 18, 18, 65, 75, 45, 34, 16, 239, 207, 205, 201, 215,
+			224, 209, 234, 0, 245, 253, 16, 10, 248, 211, 208, 221, 217, 216, 219, 4, 44, 53, 38, 41, 28, 0, 1, 25, 26, 253, 253, 9, 31, 13,
+			251, 8, 23, 20, 0, 1, 248, 244, 241, 247, 9, 242, 225, 219, 233, 255, 233, 237, 239, 222, 205, 222, 235, 228, 5, 24, 31, 39, 39, 37,
+			43, 27, 236, 228, 5, 3, 240, 0, 35, 43, 32, 38, 26, 12, 20, 33, 46, 28, 249, 255, 39, 38, 12, 249, 254, 18, 8, 240, 205, 194,
+			219, 238, 244, 234, 234, 7, 20, 3, 234, 209, 194, 209, 238, 209, 209, 246, 0, 24, 24, 21, 19, 21, 18, 12, 12, 0, 247, 233, 7, 40,
+			17, 253, 254, 4, 26, 41, 19, 9, 37, 35, 23, 24, 16, 8, 243, 249, 243, 203, 207, 210, 201, 203, 230, 19, 29, 23, 9, 5, 5, 3,
+			253, 233, 231, 239, 254, 255, 250, 1, 12, 49, 73, 46, 16, 250, 251, 252, 245, 235, 208, 234, 9, 45, 82, 68, 49, 35, 33, 13, 236, 231,
+			217, 194, 201, 226, 243, 236, 236, 12, 25, 17, 10, 0, 12, 254, 220, 198, 187, 200, 223, 244, 250, 10, 10, 244, 8, 25, 15, 245, 225, 226,
+			233, 251, 4, 22, 27, 38, 66, 39, 29, 19, 6, 0, 241, 248, 249, 22, 33, 26, 31, 37, 45, 32, 11, 6, 253, 232, 236, 235, 232, 238,
+			242, 5, 23, 19, 2, 5, 253, 251, 231, 219, 238, 231, 234, 6, 19, 16, 23, 5, 4, 11, 5, 246, 241, 254, 237, 237, 251, 23, 43, 36,
+			30, 7, 246, 239, 239, 233, 227, 233, 245, 12, 14, 27, 39, 27, 33, 29, 248, 207, 200, 191, 176, 202, 232, 236, 246, 15, 23, 24, 3, 231,
+			238, 243, 238, 209, 225, 246, 243, 15, 36, 63, 72, 58, 35, 17, 4, 230, 218, 226, 249, 19, 31, 60, 65, 48, 64, 67, 35, 17, 239, 218,
+			218, 185, 177, 238, 50, 36, 30, 27, 9, 9, 10, 2, 219, 195, 192, 203, 222, 228, 252, 14, 34, 43, 33, 35, 21, 243, 209, 213, 235, 225,
+			227, 25, 63, 67, 68, 35, 239, 250, 233, 213, 248, 229, 210, 249, 21, 17, 24, 24, 26, 13, 227, 218, 215, 179, 156, 186, 241, 8, 255, 22,
+			65, 67, 48, 13, 247, 0, 233, 216, 238, 242, 244, 22, 77, 101, 71, 32, 22, 19, 254, 248, 0, 249, 232, 4, 46, 46, 37, 18, 246, 249,
+			252, 216, 181, 160, 160, 203, 11, 41, 25, 33, 58, 47, 20, 245, 200, 179, 205, 228, 233, 254, 21, 30, 37, 70, 67, 11, 7, 250, 207, 195,
+			213, 223, 235, 8, 18, 45, 66, 47, 19, 8, 4, 218, 200, 235, 2, 249, 242, 21, 36, 45, 29, 251, 234, 225, 207, 206, 252, 24, 26, 0,
+			19, 42, 16, 3, 0, 238, 206, 185, 202, 236, 0, 251, 31, 67, 40, 36, 44, 63, 25, 221, 218, 234, 249, 252, 3, 33, 52, 34, 31, 34,
+			9, 231, 195, 204, 230, 217, 221, 18, 43, 19, 17, 41, 17, 247, 240, 228, 235, 201, 175, 200, 247, 4, 248, 4, 15, 27, 24, 24, 25, 254,
+			236, 254, 33, 34, 10, 20, 43, 27, 4, 255, 16, 252, 235, 248, 250, 18, 15, 10, 8, 16, 6, 239, 247, 251, 243, 212, 204, 216, 231, 0,
+			254, 246, 252, 0, 1, 0, 245, 231, 229, 228, 252, 254, 2, 56, 54, 42, 35, 21, 21, 5, 254, 242, 253, 0, 243, 237, 248, 10, 13, 9,
+			10, 12, 15, 26, 12, 251, 240, 239, 251, 8, 16, 9, 0, 244, 249, 0, 4, 15, 5, 10, 12, 249, 236, 229, 0, 19, 20, 9, 2, 255,
+			244, 241, 252, 10, 255, 235, 241, 249, 234, 220, 226, 247, 6, 15, 12, 5, 13, 11, 1, 1, 0, 1, 89, 9, 40, 0, 2, 0, 0, 4,
+			1, 0, 2, 255, 254, 255, 250, 2, 254, 246, 254, 2, 255, 251, 251, 0, 253, 252, 253, 1, 0, 0, 2, 2, 1, 3, 4, 6, 2, 6,
+			7, 6, 4, 4, 6, 3, 3, 5, 5, 3, 255, 3, 1, 253, 2, 0, 252, 251, 255, 253, 250, 253, 0, 255, 251, 251, 253, 253, 0, 255,
+			250, 252, 1, 2, 255, 1, 0, 1, 2, 1, 1, 3, 2, 1, 1, 3, 8, 3, 3, 2, 6, 7, 6, 10, 254, 1, 11, 254, 255, 6,
+			0, 0, 0, 0, 6, 0, 251, 4, 0, 0, 2, 255, 0, 255, 1, 3, 248, 1, 3, 255, 3, 0, 2, 253, 251, 5, 0, 252, 255, 2,
+			1, 252, 249, 255, 240, 208, 216, 240, 247, 241, 244, 0, 255, 254, 254, 255, 15, 14, 5, 4, 7, 9, 14, 9, 14, 15, 10, 11, 1, 8,
+			19, 10, 11, 13, 9, 13, 8, 13, 5, 254, 253, 253, 0, 0, 247, 255, 251, 248, 0, 6, 247, 248, 5, 252, 250, 5, 4, 246, 4, 8,
+			3, 253, 5, 0, 8, 9, 254, 1, 2, 6, 5, 1, 2, 9, 4, 252, 227, 226, 225, 239, 242, 237, 246, 248, 249, 243, 246, 250, 0, 9,
+			5, 5, 5, 12, 22, 27, 24, 240, 8, 30, 235, 253, 23, 253, 246, 1, 15, 2, 251, 9, 6, 0, 6, 10, 6, 5, 21, 0, 243, 9,
+			15, 0, 234, 252, 3, 240, 235, 0, 254, 234, 244, 2, 2, 14, 15, 16, 2, 8, 11, 239, 3, 249, 247, 249, 1, 3, 240, 235, 2, 10,
+			240, 239, 251, 254, 249, 252, 12, 23, 6, 13, 12, 7, 10, 0, 0, 250, 4, 11, 0, 15, 5, 0, 31, 34, 0, 0, 11, 8, 8, 252,
+			8, 18, 252, 248, 241, 241, 249, 237, 239, 243, 241, 245, 2, 255, 252, 255, 0, 8, 13, 244, 206, 218, 240, 254, 0, 15, 252, 247, 10, 13,
+			1, 253, 10, 252, 11, 31, 4, 245, 14, 29, 10, 0, 9, 0, 4, 5, 254, 252, 255, 15, 5, 229, 16, 23, 230, 252, 19, 245, 243, 5,
+			251, 232, 10, 6, 241, 13, 10, 245, 240, 2, 21, 240, 230, 21, 13, 248, 242, 247, 25, 3, 252, 5, 239, 9, 25, 244, 246, 252, 16, 27,
+			245, 252, 21, 5, 251, 8, 12, 4, 250, 9, 19, 6, 237, 246, 26, 31, 225, 232, 40, 248, 250, 246, 239, 14, 1, 248, 4, 227, 9, 13,
+			211, 11, 27, 243, 230, 0, 9, 250, 249, 12, 13, 234, 235, 22, 11, 246, 245, 0, 1, 3, 11, 0, 2, 10, 254, 254, 0, 7, 5, 248,
+			254, 12, 13, 252, 237, 253, 13, 16, 250, 246, 28, 244, 224, 21, 32, 7, 197, 242, 62, 5, 227, 251, 17, 7, 238, 244, 19, 12, 241, 249,
+			0, 17, 18, 237, 7, 6, 250, 18, 246, 232, 17, 17, 238, 244, 247, 24, 7, 227, 0, 0, 9, 255, 242, 15, 1, 7, 253, 249, 16, 10,
+			6, 223, 16, 42, 241, 209, 17, 64, 237, 208, 4, 32, 15, 218, 249, 20, 253, 11, 245, 239, 27, 24, 222, 232, 30, 20, 239, 236, 17, 6,
+			231, 244, 17, 30, 222, 233, 20, 30, 249, 239, 246, 4, 28, 228, 228, 39, 7, 234, 5, 16, 17, 253, 216, 10, 23, 5, 239, 246, 46, 0,
+			232, 0, 251, 12, 8, 248, 238, 13, 20, 243, 238, 23, 2, 227, 12, 21, 244, 242, 22, 13, 249, 242, 254, 18, 9, 226, 248, 18, 27, 252,
+			198, 250, 57, 253, 215, 254, 40, 18, 203, 4, 46, 2, 1, 5, 240, 246, 58, 14, 208, 218, 42, 48, 208, 210, 49, 38, 214, 228, 0, 17,
+			15, 246, 234, 233, 43, 10, 196, 8, 34, 212, 0, 50, 235, 229, 12, 24, 6, 220, 240, 36, 20, 237, 233, 3, 56, 23, 199, 238, 53, 25,
+			214, 225, 42, 25, 228, 240, 24, 10, 18, 241, 206, 12, 52, 253, 193, 232, 55, 56, 223, 192, 23, 84, 215, 217, 48, 250, 234, 5, 49, 246,
+			204, 34, 42, 241, 217, 243, 57, 0, 210, 6, 243, 2, 12, 244, 7, 9, 2, 12, 249, 242, 240, 22, 35, 202, 0, 38, 248, 2, 244, 20,
+			3, 231, 10, 16, 4, 224, 1, 43, 235, 238, 44, 248, 241, 251, 254, 19, 248, 198, 40, 62, 196, 224, 62, 242, 232, 8, 4, 3, 246, 0,
+			27, 248, 204, 9, 51, 246, 234, 245, 15, 30, 220, 237, 26, 18, 253, 231, 15, 18, 0, 9, 245, 241, 30, 12, 19, 217, 236, 29, 20, 244,
+			249, 6, 241, 2, 10, 0, 237, 7, 249, 247, 18, 8, 243, 3, 21, 206, 5, 25, 13, 225, 219, 50, 247, 229, 4, 247, 7, 29, 241, 221,
+			47, 36, 211, 241, 34, 22, 240, 253, 21, 253, 0, 18, 245, 9, 8, 227, 23, 12, 229, 244, 11, 36, 236, 211, 30, 44, 252, 227, 250, 7,
+			249, 245, 21, 0, 235, 39, 221, 227, 55, 8, 254, 252, 218, 252, 39, 242, 217, 25, 29, 5, 202, 29, 73, 213, 197, 29, 30, 225, 12, 7,
+			253, 6, 220, 16, 21, 234, 248, 247, 17, 27, 249, 229, 255, 19, 37, 235, 236, 38, 231, 37, 247, 218, 52, 17, 217, 238, 251, 73, 13, 145,
+			31, 56, 223, 237, 0, 26, 0, 243, 1, 248, 3, 12, 252, 238, 12, 24, 238, 235, 22, 6, 220, 12, 16, 248, 3, 251, 2, 2, 24, 222,
+			247, 56, 238, 218, 13, 9, 252, 237, 255, 39, 236, 251, 26, 245, 246, 245, 2, 9, 8, 19, 208, 7, 74, 178, 238, 54, 243, 11, 230, 248,
+			27, 249, 12, 0, 235, 28, 56, 245, 191, 247, 104, 252, 180, 13, 36, 9, 232, 181, 56, 61, 207, 202, 252, 51, 17, 205, 237, 60, 225, 230,
+			64, 247, 249, 245, 222, 20, 55, 235, 233, 14, 1, 24, 249, 1, 27, 228, 251, 32, 213, 4, 98, 183, 173, 62, 61, 250, 178, 250, 68, 8,
+			209, 237, 24, 253, 249, 33, 206, 8, 30, 0, 235, 232, 64, 7, 215, 247, 15, 10, 254, 1, 0, 246, 226, 45, 30, 222, 230, 247, 17, 54,
+			14, 195, 20, 247, 19, 27, 215, 231, 48, 28, 199, 231, 43, 9, 236, 245, 225, 25, 74, 223, 187, 27, 34, 254, 248, 3, 248, 238, 57, 28,
+			161, 6, 101, 219, 245, 226, 23, 77, 166, 5, 16, 238, 37, 230, 222, 14, 4, 47, 220, 198, 57, 5, 214, 28, 228, 254, 55, 234, 227, 25,
+			252, 14, 250, 244, 47, 244, 0, 2, 225, 19, 25, 14, 194, 3, 53, 227, 247, 36, 241, 209, 17, 77, 224, 210, 51, 251, 0, 32, 12, 209,
+			237, 33, 8, 247, 251, 240, 28, 2, 229, 247, 34, 16, 240, 196, 16, 67, 235, 199, 255, 39, 6, 38, 199, 223, 126, 232, 183, 41, 246, 23,
+			210, 216, 79, 2, 182, 34, 60, 200, 228, 66, 251, 213, 18, 248, 9, 34, 228, 221, 255, 58, 47, 164, 244, 46, 237, 26, 244, 255, 20, 238,
+			219, 38, 34, 208, 9, 6, 6, 18, 202, 45, 18, 204, 13, 39, 243, 224, 32, 235, 226, 28, 44, 243, 200, 37, 33, 217, 244, 35, 249, 206,
+			7, 56, 26, 202, 228, 36, 1, 6, 221, 239, 64, 253, 200, 27, 58, 240, 221, 2, 14, 10, 254, 237, 244, 31, 21, 248, 249, 249, 22, 0,
+			224, 2, 36, 249, 206, 28, 18, 232, 241, 4, 32, 32, 209, 237, 47, 20, 240, 235, 7, 34, 249, 239, 235, 19, 24, 246, 187, 30, 62, 208,
+			16, 254, 236, 18, 212, 23, 66, 198, 231, 24, 253, 249, 18, 236, 0, 48, 220, 237, 27, 2, 20, 232, 240, 50, 18, 234, 235, 246, 66, 12,
+			159, 2, 68, 250, 220, 19, 249, 233, 40, 26, 184, 44, 26, 194, 255, 29, 252, 16, 255, 213, 31, 252, 245, 16, 1, 246, 13, 5, 233, 48,
+			220, 245, 34, 228, 52, 254, 203, 33, 16, 220, 253, 15, 249, 15, 231, 255, 51, 231, 250, 15, 250, 254, 30, 33, 205, 227, 39, 18, 255, 224,
+			247, 250, 233, 43, 255, 205, 248, 15, 18, 252, 214, 2, 64, 245, 191, 58, 52, 204, 22, 253, 240, 46, 254, 186, 39, 37, 236, 200, 17, 80,
+			232, 212, 250, 56, 3, 231, 243, 0, 44, 239, 210, 18, 30, 255, 230, 237, 5, 44, 233, 227, 31, 30, 254, 200, 12, 75, 233, 199, 3, 31,
+			22, 242, 0, 238, 7, 42, 224, 179, 86, 60, 174, 200, 64, 63, 206, 212, 30, 41, 13, 216, 243, 13, 12, 246, 14, 251, 208, 22, 29, 245,
+			244, 6, 10, 229, 254, 38, 204, 252, 58, 244, 193, 15, 61, 20, 207, 241, 29, 7, 1, 249, 8, 10, 253, 10, 247, 247, 21, 12, 216, 8,
+			11, 8, 6, 185, 1, 106, 207, 177, 42, 46, 11, 199, 208, 71, 11, 212, 229, 10, 26, 250, 234, 235, 37, 54, 249, 228, 0, 21, 40, 223,
+			205, 61, 47, 212, 220, 70, 46, 187, 225, 38, 51, 213, 222, 0, 22, 30, 218, 254, 17, 4, 251, 247, 253, 233, 248, 14, 4, 230, 234, 70,
+			18, 189, 16, 21, 5, 5, 242, 3, 3, 251, 18, 7, 237, 211, 64, 58, 166, 214, 65, 51, 194, 210, 56, 47, 231, 203, 232, 92, 55, 142,
+			230, 75, 34, 210, 200, 39, 255, 29, 19, 203, 252, 50, 253, 237, 5, 246, 37, 5, 215, 10, 1, 34, 251, 211, 34, 11, 218, 18, 24, 212,
+			25, 6, 210, 14, 23, 216, 243, 34, 27, 242, 214, 11, 23, 15, 244, 209, 255, 67, 243, 215, 12, 22, 36, 190, 250, 76, 244, 209, 5, 14,
+			39, 247, 211, 7, 30, 17, 252, 222, 0, 66, 240, 221, 254, 30, 17, 236, 226, 11, 22, 15, 241, 214, 10, 43, 246, 226, 247, 37, 20, 208,
+			248, 60, 242, 213, 3, 28, 22, 230, 254, 13, 250, 14, 32, 18, 200, 229, 61, 240, 249, 6, 222, 20, 21, 236, 240, 242, 24, 8, 235, 236,
+			13, 38, 234, 212, 4, 32, 35, 226, 228, 32, 253, 237, 252, 32, 243, 246, 24, 2, 246, 248, 254, 7, 16, 233, 254, 6, 253, 8, 244, 248,
+			18, 18, 0, 254, 243, 254, 3, 249, 4, 239, 18, 28, 219, 239, 28, 255, 250, 16, 249, 12, 6, 244, 17, 212, 30, 62, 193, 225, 73, 27,
+			188, 236, 67, 21, 214, 218, 34, 25, 242, 247, 240, 255, 38, 16, 227, 232, 252, 32, 34, 222, 233, 26, 31, 230, 227, 53, 27, 219, 218, 254,
+			18, 7, 8, 6, 6, 228, 4, 34, 223, 5, 29, 253, 241, 242, 9, 6, 252, 231, 8, 17, 0, 3, 214, 251, 31, 254, 10, 248, 253, 18,
+			245, 248, 249, 32, 39, 224, 244, 9, 4, 3, 249, 254, 8, 24, 220, 6, 26, 250, 228, 245, 35, 12, 252, 225, 0, 19, 13, 251, 230, 41,
+			240, 228, 23, 255, 241, 247, 5, 247, 235, 30, 15, 191, 17, 61, 228, 216, 28, 51, 226, 238, 27, 255, 21, 11, 220, 3, 45, 249, 242, 241,
+			231, 52, 250, 237, 8, 214, 37, 61, 192, 220, 38, 35, 23, 191, 240, 57, 245, 249, 3, 229, 17, 37, 227, 237, 12, 238, 12, 239, 231, 31,
+			21, 238, 239, 5, 36, 239, 217, 59, 17, 226, 254, 228, 16, 39, 1, 237, 253, 30, 7, 215, 239, 39, 14, 231, 236, 47, 236, 210, 56, 249,
+			235, 13, 0, 19, 255, 210, 30, 33, 202, 246, 41, 14, 240, 245, 0, 249, 248, 10, 15, 12, 227, 236, 23, 33, 251, 246, 14, 248, 9, 18,
+			249, 240, 228, 14, 51, 4, 195, 251, 70, 227, 242, 15, 2, 2, 232, 33, 8, 212, 26, 13, 217, 30, 10, 252, 13, 255, 249, 215, 35, 54,
+			212, 216, 19, 22, 248, 250, 214, 0, 77, 244, 191, 235, 77, 2, 202, 240, 37, 63, 221, 200, 14, 58, 13, 217, 249, 17, 9, 0, 244, 242,
+			11, 24, 240, 217, 41, 24, 197, 250, 18, 8, 243, 237, 23, 249, 10, 18, 232, 231, 45, 16, 216, 246, 6, 50, 218, 203, 56, 47, 226, 228,
+			6, 31, 15, 210, 248, 49, 17, 226, 223, 20, 55, 243, 214, 12, 36, 14, 240, 238, 19, 235, 255, 43, 247, 213, 5, 40, 250, 204, 0, 38,
+			4, 241, 250, 227, 26, 16, 232, 2, 0, 33, 231, 229, 34, 255, 244, 8, 255, 254, 15, 13, 231, 17, 23, 231, 5, 30, 246, 240, 251, 10,
+			37, 206, 230, 79, 232, 210, 17, 0, 12, 248, 242, 17, 226, 33, 28, 212, 252, 14, 3, 247, 9, 2, 228, 9, 9, 15, 251, 244, 12, 17,
+			0, 228, 4, 24, 251, 15, 17, 230, 247, 8, 34, 9, 215, 18, 25, 223, 14, 13, 234, 17, 3, 215, 15, 27, 217, 234, 16, 42, 215, 227,
+			34, 8, 3, 252, 225, 253, 49, 16, 233, 245, 23, 12, 235, 7, 8, 236, 35, 8, 204, 7, 44, 9, 218, 245, 50, 247, 195, 28, 35, 211,
+			0, 1, 17, 1, 248, 13, 235, 243, 7, 20, 252, 232, 0, 3, 255, 9, 241, 0, 7, 250, 6, 8, 241, 6, 5, 228, 31, 20, 247, 240,
+			252, 10, 253, 11, 16, 0, 2, 13, 252, 229, 21, 18, 253, 249, 209, 52, 55, 194, 224, 25, 26, 12, 216, 243, 35, 6, 221, 235, 33, 11,
+			243, 237, 245, 42, 8, 225, 255, 250, 1, 42, 250, 193, 24, 50, 240, 244, 242, 36, 34, 203, 239, 48, 6, 224, 251, 8, 251, 19, 7, 221,
+			247, 47, 6, 228, 242, 26, 0, 242, 38, 215, 239, 47, 12, 237, 235, 15, 16, 249, 225, 13, 18, 242, 253, 235, 9, 48, 224, 213, 34, 18,
+			234, 248, 18, 254, 231, 4, 36, 0, 237, 4, 10, 17, 3, 238, 13, 8, 253, 16, 242, 249, 33, 0, 228, 248, 41, 9, 216, 249, 18, 8,
+			247, 2, 17, 238, 237, 29, 19, 226, 244, 252, 19, 4, 252, 250, 5, 19, 244, 245, 1, 0, 0, 0, 86, 10, 51, 0, 1, 2, 2, 1,
+			1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 251,
+			236, 235, 251, 4, 3, 254, 252, 2, 6, 3, 254, 253, 255, 4, 3, 1, 1, 1, 5, 249, 231, 249, 9, 11, 6, 0, 4, 11, 15, 1,
+			254, 255, 2, 7, 3, 2, 0, 5, 4, 2, 1, 2, 4, 1, 1, 0, 0, 1, 0, 254, 0, 0, 0, 0, 255, 0, 0, 254, 255, 253,
+			0, 255, 253, 0, 254, 0, 255, 0, 0, 0, 0, 0, 2, 0, 1, 0, 250, 245, 244, 249, 248, 251, 249, 249, 1, 0, 3, 4, 2, 6,
+			1, 3, 3, 0, 3, 6, 5, 5, 7, 8, 9, 8, 6, 3, 6, 9, 255, 6, 1, 3, 0, 5, 0, 255, 255, 0, 2, 248, 0, 252,
+			255, 0, 249, 253, 254, 255, 255, 254, 250, 254, 2, 1, 250, 253, 255, 255, 5, 252, 253, 3, 249, 1, 9, 252, 253, 6, 255, 4, 3, 253,
+			7, 251, 3, 8, 251, 1, 255, 7, 251, 250, 10, 252, 255, 3, 0, 2, 1, 2, 0, 0, 3, 254, 1, 3, 248, 7, 3, 5, 9, 8,
+			9, 1, 255, 252, 254, 0, 5, 253, 252, 254, 254, 1, 254, 249, 253, 254, 252, 253, 249, 253, 253, 255, 3, 251, 5, 8, 4, 5, 0, 249,
+			0, 0, 0, 3, 7, 18, 16, 11, 13, 10, 252, 1, 255, 249, 2, 247, 0, 0, 250, 2, 244, 253, 250, 242, 254, 249, 244, 252, 249, 251,
+			4, 8, 15, 3, 255, 245, 242, 5, 5, 0, 255, 6, 16, 23, 25, 21, 13, 11, 246, 225, 232, 0, 4, 255, 0, 255, 12, 13, 252, 250,
+			0, 251, 250, 1, 248, 252, 5, 0, 1, 0, 0, 11, 0, 254, 254, 7, 10, 255, 255, 6, 2, 5, 11, 244, 250, 240, 243, 0, 0, 2,
+			255, 254, 247, 4, 5, 254, 248, 251, 0, 0, 7, 255, 2, 0, 14, 10, 255, 1, 2, 12, 9, 0, 4, 254, 1, 7, 251, 5, 7, 0,
+			2, 253, 2, 2, 243, 0, 6, 243, 245, 9, 0, 251, 249, 255, 16, 240, 0, 10, 245, 12, 254, 245, 6, 4, 250, 2, 2, 246, 8, 1,
+			251, 10, 250, 2, 12, 247, 252, 3, 12, 253, 0, 251, 11, 10, 238, 9, 1, 0, 21, 238, 254, 15, 251, 3, 8, 245, 1, 8, 248, 3,
+			4, 242, 2, 0, 248, 0, 253, 12, 247, 250, 10, 245, 9, 4, 241, 255, 17, 3, 245, 0, 4, 15, 250, 1, 9, 253, 6, 1, 0, 6,
+			247, 3, 7, 253, 0, 253, 10, 244, 5, 255, 243, 3, 252, 0, 254, 4, 1, 243, 4, 254, 12, 253, 245, 10, 5, 5, 3, 252, 7, 3,
+			2, 4, 0, 0, 4, 8, 251, 4, 2, 0, 249, 0, 8, 245, 0, 249, 254, 11, 241, 0, 251, 248, 16, 3, 244, 3, 1, 10, 1, 240,
+			14, 5, 1, 12, 240, 254, 13, 253, 1, 21, 241, 246, 15, 3, 1, 252, 249, 8, 3, 245, 254, 252, 252, 7, 250, 251, 253, 250, 0, 9,
+			7, 0, 3, 24, 250, 10, 13, 240, 27, 8, 240, 1, 6, 1, 7, 249, 242, 5, 254, 12, 247, 236, 7, 247, 255, 8, 231, 2, 252, 246,
+			2, 240, 12, 12, 234, 3, 9, 2, 11, 241, 0, 23, 6, 3, 12, 6, 248, 16, 14, 246, 4, 12, 254, 0, 0, 1, 9, 244, 247, 1,
+			2, 251, 251, 255, 2, 255, 237, 10, 14, 236, 18, 9, 233, 16, 4, 229, 1, 247, 255, 14, 224, 10, 11, 241, 13, 251, 3, 15, 6, 9,
+			3, 11, 24, 252, 251, 2, 254, 14, 6, 245, 253, 22, 238, 232, 34, 233, 255, 14, 223, 8, 5, 242, 245, 255, 10, 251, 249, 20, 19, 0,
+			14, 6, 14, 17, 243, 1, 3, 234, 6, 248, 247, 29, 255, 234, 246, 236, 10, 0, 248, 225, 252, 0, 11, 253, 235, 1, 1, 250, 8, 12,
+			247, 8, 4, 18, 10, 252, 21, 2, 17, 4, 10, 25, 244, 25, 4, 246, 17, 247, 11, 17, 13, 248, 253, 13, 254, 11, 234, 228, 253, 209,
+			231, 15, 236, 244, 1, 230, 18, 253, 253, 0, 248, 252, 245, 14, 13, 249, 8, 5, 253, 44, 251, 9, 19, 234, 24, 18, 246, 0, 0, 17,
+			5, 0, 1, 0, 17, 251, 239, 255, 12, 250, 249, 243, 10, 9, 229, 5, 0, 240, 4, 1, 249, 251, 2, 10, 251, 255, 0, 248, 14, 3,
+			243, 251, 12, 4, 235, 22, 9, 251, 0, 4, 12, 252, 242, 15, 1, 253, 19, 232, 4, 15, 2, 251, 245, 10, 11, 246, 249, 7, 1, 4,
+			1, 253, 2, 245, 12, 1, 252, 249, 247, 14, 8, 246, 1, 1, 11, 243, 252, 20, 240, 7, 7, 248, 2, 249, 19, 14, 226, 250, 20, 11,
+			248, 245, 0, 0, 11, 254, 244, 8, 249, 240, 17, 11, 239, 249, 0, 29, 236, 4, 5, 255, 20, 233, 1, 12, 3, 1, 252, 16, 254, 246,
+			17, 1, 11, 248, 254, 21, 238, 246, 15, 0, 2, 237, 250, 8, 0, 250, 255, 4, 235, 20, 2, 240, 5, 246, 7, 19, 246, 231, 25, 14,
+			254, 234, 249, 27, 4, 0, 18, 228, 249, 35, 2, 237, 8, 3, 247, 14, 9, 253, 228, 13, 16, 246, 5, 241, 3, 11, 235, 19, 0, 234,
+			29, 242, 1, 8, 245, 24, 244, 239, 25, 255, 255, 254, 251, 9, 250, 250, 12, 19, 218, 13, 9, 237, 33, 247, 226, 25, 248, 4, 4, 244,
+			11, 240, 19, 15, 230, 7, 0, 7, 253, 250, 3, 254, 23, 249, 222, 39, 9, 231, 30, 243, 252, 29, 222, 252, 14, 254, 9, 239, 2, 16,
+			244, 252, 15, 233, 247, 39, 241, 240, 19, 240, 12, 252, 2, 15, 237, 249, 0, 26, 255, 250, 255, 243, 28, 13, 244, 249, 239, 20, 24, 243,
+			238, 255, 1, 14, 30, 230, 246, 13, 0, 19, 238, 249, 12, 250, 248, 12, 251, 248, 20, 19, 254, 253, 24, 22, 251, 0, 11, 7, 1, 0,
+			6, 250, 0, 33, 3, 236, 253, 16, 16, 252, 249, 3, 7, 21, 8, 242, 14, 25, 239, 14, 13, 232, 5, 17, 20, 8, 241, 245, 28, 8,
+			246, 17, 5, 3, 5, 246, 252, 14, 20, 10, 221, 16, 57, 238, 239, 3, 12, 26, 240, 253, 1, 248, 31, 4, 229, 25, 17, 249, 252, 21,
+			22, 241, 253, 18, 3, 255, 0, 251, 27, 6, 217, 19, 7, 244, 22, 245, 247, 12, 8, 254, 19, 6, 246, 10, 11, 8, 0, 234, 4, 27,
+			2, 254, 244, 13, 48, 1, 233, 3, 25, 5, 249, 1, 35, 6, 1, 7, 237, 24, 39, 249, 231, 22, 27, 242, 247, 17, 7, 11, 31, 234,
+			251, 22, 9, 20, 244, 250, 32, 247, 5, 21, 0, 21, 247, 246, 25, 5, 2, 25, 11, 243, 20, 13, 246, 23, 253, 6, 29, 253, 4, 17,
+			1, 10, 253, 250, 19, 5, 255, 0, 250, 21, 35, 233, 243, 32, 37, 254, 235, 13, 19, 0, 0, 255, 19, 255, 247, 22, 4, 250, 13, 249,
+			245, 31, 2, 250, 2, 254, 0, 38, 29, 231, 248, 32, 13, 241, 6, 6, 238, 20, 229, 227, 58, 16, 212, 253, 27, 12, 230, 253, 34, 20,
+			1, 240, 246, 7, 26, 9, 244, 252, 253, 249, 6, 4, 10, 0, 13, 15, 5, 254, 248, 30, 48, 225, 220, 42, 13, 252, 237, 215, 31, 68,
+			245, 218, 13, 55, 23, 197, 244, 52, 41, 253, 232, 2, 28, 17, 242, 0, 17, 255, 0, 245, 10, 43, 245, 220, 21, 59, 237, 223, 31, 38,
+			4, 244, 232, 19, 33, 2, 248, 243, 28, 20, 253, 252, 242, 37, 19, 214, 13, 24, 0, 12, 7, 239, 14, 27, 229, 250, 24, 7, 1, 241,
+			255, 33, 5, 233, 247, 40, 36, 245, 236, 2, 36, 17, 240, 251, 251, 14, 30, 240, 228, 21, 15, 8, 8, 228, 5, 43, 248, 253, 22, 19,
+			249, 238, 7, 28, 18, 222, 252, 21, 15, 4, 241, 238, 22, 19, 244, 248, 11, 3, 238, 43, 29, 236, 0, 17, 43, 7, 227, 18, 16, 6,
+			21, 227, 231, 31, 25, 244, 245, 244, 24, 21, 235, 0, 29, 2, 3, 18, 236, 252, 40, 0, 241, 9, 255, 31, 11, 214, 6, 27, 4, 248,
+			243, 246, 39, 9, 229, 8, 21, 9, 14, 244, 232, 30, 32, 248, 239, 3, 13, 239, 11, 16, 233, 11, 35, 250, 244, 24, 18, 235, 8, 30,
+			10, 241, 250, 32, 1, 255, 20, 244, 249, 28, 19, 247, 0, 10, 3, 18, 22, 218, 7, 42, 249, 5, 13, 244, 0, 247, 5, 31, 255, 251,
+			3, 5, 4, 10, 0, 3, 31, 242, 241, 13, 28, 6, 236, 21, 45, 250, 235, 12, 21, 15, 246, 6, 24, 251, 244, 254, 23, 13, 226, 254,
+			41, 239, 0, 26, 235, 7, 29, 255, 233, 229, 49, 22, 218, 10, 10, 2, 25, 254, 228, 14, 25, 243, 250, 6, 1, 9, 251, 250, 32, 255,
+			247, 31, 245, 242, 20, 10, 246, 30, 27, 222, 236, 46, 24, 209, 4, 30, 249, 0, 15, 236, 244, 36, 29, 240, 254, 35, 3, 241, 10, 9,
+			0, 222, 8, 41, 251, 211, 7, 43, 249, 252, 240, 245, 46, 6, 247, 5, 250, 43, 250, 213, 41, 28, 233, 6, 12, 38, 4, 211, 22, 51,
+			245, 233, 248, 29, 41, 249, 228, 0, 59, 36, 217, 239, 31, 20, 27, 222, 215, 62, 2, 211, 250, 37, 21, 243, 238, 2, 26, 5, 3, 0,
+			254, 3, 255, 5, 251, 15, 243, 254, 34, 13, 246, 255, 19, 24, 249, 230, 3, 35, 14, 244, 254, 8, 34, 13, 9, 251, 218, 18, 64, 222,
+			195, 14, 26, 24, 232, 235, 14, 11, 8, 236, 234, 56, 20, 204, 21, 36, 249, 8, 249, 249, 25, 237, 255, 18, 240, 14, 12, 230, 31, 41,
+			252, 227, 13, 29, 250, 229, 12, 37, 1, 235, 18, 245, 235, 67, 9, 227, 5, 11, 243, 9, 15, 246, 9, 21, 10, 248, 252, 251, 41, 37,
+			241, 248, 254, 11, 37, 18, 239, 5, 15, 20, 10, 250, 10, 6, 250, 27, 2, 237, 22, 0, 0, 26, 243, 1, 33, 231, 9, 46, 235, 245,
+			9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232, 20, 58, 246, 195, 11, 40, 18, 2, 200, 0, 60, 42, 225, 219, 32, 32,
+			4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230, 5, 26, 236, 255, 19, 8, 10, 21, 242, 238, 36, 3, 9, 1, 243, 53,
+			29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250, 17, 31, 237, 219, 30, 38, 12, 249, 237,
+			0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41, 222, 179, 29, 40, 30, 238, 186, 37, 78,
+			238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60, 21, 231, 223, 21, 81, 219, 184, 42, 30,
+			0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20, 17, 255, 249, 243, 37, 42, 244, 226, 0,
+			25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13, 250, 243, 235, 40, 21, 193, 10, 46, 244,
+			242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0, 48, 2, 226, 27, 35, 233, 2, 24, 12,
+			1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37, 1, 239, 244, 44, 30, 236, 7, 247, 30,
+			34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236, 32, 21, 237, 35, 4, 209, 13, 62, 3,
+			229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243, 6, 2, 255, 35, 246, 10, 246, 242, 61,
+			235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237, 51, 19, 232, 18, 7, 238, 27, 17, 235,
+			8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1, 221, 31, 13, 251, 8, 248, 17, 255, 250,
+			32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182, 1, 59, 19, 246, 233, 25, 4, 6, 7,
+			214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3, 6, 30, 240, 245, 49, 243, 219, 16, 66,
+			11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11, 20, 4, 254, 243, 8, 35, 235, 220, 17,
+			22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234, 51, 249, 218, 23, 11, 7, 250, 223, 24,
+			33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221, 212, 253, 34, 62, 218, 221, 32, 13, 6,
+			7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173, 65, 92, 206, 232, 54, 17, 230, 36, 27,
+			194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227, 0, 70, 241, 226, 27, 21, 12, 225, 241,
+			27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247, 42, 228, 208, 44, 51, 239, 237, 245, 22,
+			56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57, 5, 221, 250, 0, 32, 22, 200, 35, 54,
+			217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228, 58, 252, 236, 29, 231, 16, 50, 212, 245,
+			17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32, 252, 232, 42, 11, 210, 39, 53, 250, 196,
+			8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233, 233, 48, 3, 234, 2, 13, 20, 14, 254,
+			10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223, 11, 33, 246, 255, 0, 243, 30, 32, 235,
+			219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247, 237, 7, 17, 16, 250, 222, 17, 69, 230,
+			224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12, 1, 17, 6, 240, 39, 225, 238, 76, 244,
+			216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38, 239, 12, 56, 221, 215, 33, 17, 252, 7,
+			2, 9, 0, 0, 90, 0, 3, 0, 5, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 55, 14, 13, 25, 10, 7,
+			3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 160, 0, 240, 0, 160, 5, 40, 10, 199, 14, 36, 19, 0, 25, 35, 13,
+			15, 25, 13, 9, 7, 3, 7, 7, 135, 142, 160, 160, 150, 175, 135, 142, 160, 44, 35, 30, 90, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 9, 0, 160, 0, 240, 0, 160, 5, 40, 10, 199, 14, 36, 19,
+			0, 25, 0, 13, 15, 25, 13, 9, 7, 3, 7, 7, 135, 142, 160, 160, 150, 175, 135, 142, 160, 44, 35, 30, 90, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 55, 1, 12, 0, 3, 4, 5, 1, 8, 248,
+			0, 178, 140, 255, 16, 1, 251, 245, 245, 245, 239, 226, 221, 249, 31, 37, 28, 33, 28, 31, 38, 43, 44, 49, 55, 52, 43, 43, 39, 41,
+			30, 29, 23, 25, 23, 21, 10, 6, 10, 3, 3, 0, 2, 3, 11, 11, 7, 240, 202, 209, 221, 230, 252, 13, 19, 14, 250, 9, 219, 164,
+			223, 255, 242, 234, 247, 246, 247, 250, 247, 255, 214, 197, 207, 206, 226, 238, 6, 14, 25, 40, 51, 58, 37, 11, 3, 7, 8, 2, 224, 231,
+			31, 56, 68, 76, 86, 82, 81, 65, 53, 57, 65, 34, 19, 51, 54, 62, 60, 41, 36, 22, 12, 248, 239, 235, 250, 250, 254, 11, 15, 28,
+			41, 48, 45, 37, 39, 24, 12, 253, 0, 29, 44, 54, 62, 65, 67, 59, 50, 40, 41, 41, 30, 35, 46, 55, 69, 78, 73, 68, 65, 56,
+			46, 42, 30, 22, 18, 18, 27, 254, 233, 4, 26, 27, 7, 0, 240, 233, 223, 213, 217, 235, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 4, 44, 0, 3, 1, 2, 1, 2, 1,
-			3, 2, 4, 236, 191, 217, 11, 26, 24, 27, 26, 24, 11, 246, 236, 247, 6, 12, 15, 16, 19, 15, 5, 252, 250, 252, 5, 17, 24, 23,
-			17, 16, 16, 1, 249, 251, 12, 14, 15, 0, 202, 203, 239, 22, 13, 13, 15, 21, 16, 248, 226, 229, 3, 15, 11, 9, 15, 11, 2, 254,
-			249, 249, 253, 15, 16, 26, 20, 15, 2, 254, 2, 4, 5, 10, 34, 36, 37, 14, 8, 211, 132, 222, 36, 36, 38, 37, 30, 19, 239, 208,
-			198, 241, 19, 26, 39, 40, 26, 254, 243, 230, 226, 242, 8, 39, 45, 33, 16, 6, 214, 182, 225, 0, 12, 27, 28, 33, 25, 1, 230, 220,
-			239, 3, 13, 25, 31, 29, 11, 254, 242, 234, 236, 248, 18, 33, 25, 21, 2, 247, 249, 242, 246, 6, 22, 32, 27, 10, 251, 241, 241, 244,
-			248, 17, 23, 24, 24, 9, 245, 241, 247, 244, 6, 12, 17, 24, 12, 6, 251, 242, 245, 248, 5, 16, 17, 16, 12, 2, 251, 252, 2, 1,
-			6, 2, 15, 19, 4, 252, 254, 245, 5, 15, 19, 15, 9, 8, 7, 254, 252, 9, 7, 16, 10, 6, 10, 15, 10, 0, 7, 217, 176, 205,
-			199, 227, 27, 48, 38, 36, 244, 223, 206, 214, 234, 9, 39, 54, 49, 12, 0, 244, 245, 0, 18, 31, 35, 56, 54, 29, 248, 2, 21, 248,
-			235, 11, 249, 217, 8, 32, 4, 232, 232, 242, 243, 10, 16, 16, 21, 46, 246, 180, 209, 244, 2, 11, 24, 5, 253, 232, 240, 251, 10, 33,
-			34, 28, 8, 247, 230, 231, 230, 233, 252, 7, 30, 18, 7, 241, 238, 250, 251, 254, 15, 32, 33, 17, 6, 7, 251, 0, 16, 12, 241, 242,
-			251, 10, 17, 20, 23, 13, 3, 12, 9, 243, 255, 19, 22, 18, 15, 255, 2, 10, 2, 16, 15, 15, 17, 19, 11, 11, 20, 15, 8, 17,
-			24, 12, 0, 4, 248, 254, 252, 251, 0, 0, 2, 1, 253, 4, 254, 245, 253, 14, 12, 6, 10, 6, 3, 0, 251, 253, 2, 21, 30, 9,
-			8, 0, 0, 2, 9, 4, 0, 8, 7, 19, 11, 8, 10, 10, 6, 251, 6, 20, 21, 18, 19, 3, 3, 255, 245, 248, 1, 7, 6, 0,
-			5, 12, 3, 8, 8, 246, 248, 14, 21, 16, 5, 4, 3, 0, 255, 1, 0, 12, 18, 8, 254, 250, 237, 245, 15, 13, 254, 246, 254, 15,
-			1, 230, 229, 246, 6, 0, 246, 250, 253, 238, 225, 234, 10, 11, 8, 15, 17, 12, 0, 231, 237, 10, 32, 45, 25, 242, 235, 11, 32, 28,
-			4, 7, 19, 29, 25, 255, 237, 9, 22, 6, 250, 6, 21, 3, 241, 245, 2, 252, 244, 247, 243, 0, 5, 1, 2, 254, 243, 248, 254, 254,
-			16, 11, 2, 8, 14, 10, 250, 229, 255, 20, 12, 7, 9, 21, 18, 249, 250, 10, 13, 14, 6, 255, 4, 15, 3, 243, 251, 4, 0, 252,
-			225, 226, 244, 4, 17, 11, 6, 9, 4, 243, 217, 229, 8, 28, 32, 26, 15, 1, 248, 239, 246, 255, 8, 19, 19, 14, 254, 250, 247, 253,
-			21, 38, 29, 254, 254, 249, 234, 236, 255, 12, 14, 6, 250, 246, 242, 236, 248, 14, 15, 2, 7, 249, 235, 243, 8, 5, 4, 2, 254, 7,
-			28, 14, 5, 26, 33, 18, 251, 246, 240, 249, 11, 24, 21, 14, 8, 249, 235, 242, 248, 1, 8, 4, 16, 17, 255, 239, 221, 240, 1, 1,
-			8, 24, 18, 255, 234, 228, 241, 7, 30, 33, 18, 1, 239, 240, 4, 30, 18, 244, 245, 4, 4, 15, 11, 252, 15, 34, 20, 244, 253, 12,
-			27, 32, 27, 245, 246, 19, 20, 8, 247, 239, 238, 1, 20, 21, 10, 251, 251, 255, 3, 0, 249, 254, 254, 7, 9, 18, 4, 251, 247, 245,
-			4, 19, 5, 239, 2, 31, 39, 14, 240, 238, 254, 250, 0, 31, 34, 25, 7, 255, 254, 238, 237, 252, 31, 54, 42, 26, 247, 251, 246, 239,
-			245, 32, 60, 51, 12, 241, 232, 233, 239, 244, 23, 32, 19, 3, 246, 238, 229, 233, 245, 2, 16, 13, 245, 244, 7, 0, 239, 244, 254, 13,
-			13, 253, 0, 18, 13, 1, 249, 6, 28, 6, 0, 18, 31, 19, 7, 9, 7, 243, 244, 11, 32, 53, 24, 0, 3, 4, 244, 243, 9, 22,
-			2, 246, 10, 4, 243, 246, 245, 234, 238, 238, 255, 255, 2, 255, 9, 12, 6, 241, 235, 255, 27, 34, 21, 9, 23, 38, 13, 1, 6, 9,
-			14, 19, 22, 6, 255, 10, 7, 3, 3, 1, 2, 250, 1, 17, 9, 254, 248, 250, 251, 248, 252, 2, 1, 240, 244, 242, 255, 1, 6, 4,
-			254, 255, 244, 239, 239, 0, 26, 27, 252, 255, 23, 25, 8, 0, 1, 11, 27, 31, 21, 2, 7, 21, 1, 2, 6, 252, 7, 19, 7, 240,
-			243, 0, 250, 240, 243, 0, 1, 242, 234, 249, 5, 255, 247, 254, 254, 7, 15, 250, 221, 237, 13, 18, 1, 253, 4, 10, 15, 15, 17, 11,
-			9, 249, 1, 16, 34, 32, 26, 12, 250, 244, 1, 8, 17, 14, 0, 253, 2, 252, 246, 255, 1, 246, 241, 237, 232, 247, 7, 14, 4, 245,
-			241, 243, 243, 244, 251, 2, 10, 5, 251, 242, 252, 14, 7, 4, 0, 10, 25, 5, 251, 4, 12, 27, 24, 3, 255, 0, 248, 252, 7, 14,
-			253, 250, 255, 249, 251, 254, 249, 253, 255, 242, 250, 8, 16, 2, 238, 243, 0, 14, 19, 3, 251, 5, 15, 10, 253, 252, 6, 16, 27, 23,
-			3, 252, 15, 27, 6, 249, 5, 24, 24, 24, 19, 11, 7, 10, 10, 4, 4, 5, 4, 7, 12, 15, 13, 0, 0, 9, 12, 8, 4, 253,
-			250, 12, 11, 4, 2, 252, 4, 15, 16, 0, 245, 0, 5, 2, 255, 11, 10, 2, 13, 4, 244, 1, 17, 23, 15, 17, 12, 239, 240, 14,
-			25, 16, 15, 6, 245, 241, 4, 14, 254, 3, 26, 19, 2, 247, 247, 0, 247, 250, 6, 8, 249, 235, 253, 7, 1, 0, 248, 240, 248, 8,
-			14, 5, 3, 7, 2, 247, 249, 0, 10, 19, 19, 24, 18, 254, 245, 248, 255, 17, 30, 23, 10, 13, 7, 245, 254, 8, 3, 0, 14, 22,
-			15, 9, 255, 248, 255, 7, 0, 248, 253, 252, 7, 13, 254, 241, 245, 249, 248, 241, 12, 28, 15, 253, 0, 253, 238, 241, 1, 14, 6, 5,
-			14, 17, 10, 3, 0, 0, 246, 250, 250, 249, 10, 33, 38, 16, 246, 228, 228, 235, 255, 11, 26, 35, 252, 210, 233, 9, 5, 4, 6, 250,
-			232, 249, 11, 19, 20, 14, 249, 240, 237, 248, 254, 1, 13, 28, 50, 51, 18, 233, 229, 252, 11, 21, 36, 45, 33, 23, 30, 21, 3, 255,
-			8, 15, 38, 40, 22, 8, 10, 10, 2, 248, 0, 23, 50, 43, 6, 245, 0, 11, 6, 11, 36, 41, 21, 22, 9, 240, 0, 13, 17, 35,
-			44, 27, 245, 227, 248, 5, 19, 40, 32, 8, 252, 241, 229, 230, 249, 19, 23, 9, 251, 239, 240, 234, 234, 241, 232, 233, 102, 1, 41, 0,
-			0, 2, 5, 5, 3, 1, 6, 6, 3, 1, 6, 10, 4, 246, 229, 206, 184, 183, 209, 247, 22, 31, 26, 21, 37, 59, 61, 48, 21, 248,
-			216, 176, 160, 168, 181, 192, 222, 6, 44, 63, 76, 80, 81, 84, 79, 65, 40, 250, 140, 132, 192, 248, 218, 166, 183, 1, 35, 21, 53, 61,
-			25, 2, 11, 7, 210, 168, 169, 202, 210, 208, 208, 206, 244, 22, 54, 62, 50, 37, 38, 47, 33, 4, 241, 227, 226, 234, 233, 232, 229, 233,
-			253, 14, 25, 19, 19, 23, 13, 0, 3, 236, 237, 230, 239, 239, 238, 233, 242, 14, 16, 28, 24, 31, 34, 36, 27, 16, 2, 252, 247, 248,
-			254, 254, 1, 13, 23, 28, 30, 34, 27, 33, 35, 29, 9, 250, 249, 253, 248, 238, 235, 249, 8, 9, 21, 11, 255, 254, 8, 17, 8, 6,
-			5, 1, 249, 241, 236, 241, 248, 1, 5, 8, 253, 252, 0, 10, 12, 14, 8, 2, 0, 250, 0, 4, 251, 233, 244, 255, 9, 7, 255, 248,
-			247, 250, 255, 1, 251, 241, 246, 254, 1, 251, 243, 246, 254, 7, 13, 10, 0, 251, 251, 0, 255, 246, 234, 236, 243, 246, 248, 247, 1, 0,
-			8, 21, 24, 253, 250, 0, 10, 252, 245, 245, 244, 238, 237, 0, 253, 252, 244, 248, 245, 0, 4, 8, 251, 4, 12, 11, 7, 17, 31, 29,
-			23, 12, 17, 18, 15, 9, 10, 254, 1, 5, 12, 17, 27, 21, 17, 31, 48, 48, 33, 29, 27, 31, 20, 19, 17, 17, 11, 14, 17, 15,
-			14, 7, 255, 246, 250, 243, 240, 233, 232, 232, 231, 232, 229, 231, 233, 227, 233, 240, 249, 249, 248, 246, 251, 251, 251, 252, 1, 0, 253, 254,
-			254, 253, 251, 255, 250, 246, 243, 245, 248, 244, 235, 229, 224, 223, 221, 225, 227, 228, 235, 244, 251, 250, 248, 248, 251, 252, 255, 249, 245, 238,
-			236, 238, 230, 223, 222, 224, 233, 247, 244, 245, 251, 2, 1, 245, 246, 248, 252, 255, 13, 26, 19, 5, 243, 245, 2, 11, 11, 10, 0, 0,
-			27, 1, 19, 0, 4, 4, 5, 5, 6, 7, 8, 10, 13, 17, 23, 53, 94, 45, 40, 70, 104, 120, 65, 36, 65, 76, 65, 27, 255, 253,
-			7, 233, 207, 216, 190, 192, 190, 173, 190, 190, 185, 189, 197, 220, 240, 219, 219, 7, 13, 14, 7, 7, 36, 44, 15, 7, 35, 21, 13, 247,
-			0, 11, 242, 217, 236, 233, 219, 215, 212, 222, 229, 198, 216, 240, 228, 234, 233, 226, 0, 16, 248, 245, 0, 24, 24, 244, 9, 21, 0, 250,
-			10, 250, 251, 247, 227, 241, 238, 244, 225, 200, 249, 20, 226, 195, 246, 14, 253, 240, 246, 11, 33, 59, 23, 6, 48, 69, 60, 17, 45, 86,
-			46, 12, 47, 103, 79, 49, 8, 70, 100, 68, 22, 11, 42, 49, 3, 237, 1, 254, 206, 219, 227, 228, 206, 185, 205, 213, 227, 216, 218, 188,
-			255, 3, 237, 225, 12, 33, 0, 241, 23, 60, 14, 231, 16, 41, 28, 247, 244, 244, 20, 248, 225, 229, 245, 243, 214, 220, 252, 3, 205, 209,
-			7, 28, 14, 250, 247, 33, 45, 37, 5, 9, 28, 38, 17, 35, 38, 0, 0, 34, 47, 1, 239, 239, 12, 0, 238, 219, 224, 238, 230, 217,
-			221, 239, 235, 216, 228, 253, 253, 229, 238, 252, 255, 245, 246, 255, 253, 247, 238, 255, 6, 4, 241, 245, 10, 20, 14, 3, 7, 18, 25, 29,
-			22, 20, 21, 21, 24, 30, 23, 13, 5, 14, 29, 24, 0, 5, 14, 21, 13, 12, 3, 12, 9, 13, 7, 7, 6, 3, 4, 7, 11, 1,
-			3, 254, 13, 15, 9, 0, 12, 14, 17, 6, 10, 11, 17, 10, 1, 7, 12, 0, 202, 10, 6, 0, 5, 13, 51, 44, 21, 20, 8, 251,
-			242, 255, 3, 249, 230, 210, 223, 245, 245, 11, 19, 17, 49, 48, 16, 11, 7, 248, 236, 206, 183, 229, 246, 7, 22, 23, 33, 37, 41, 22,
-			250, 244, 254, 233, 214, 213, 250, 5, 21, 22, 11, 15, 255, 0, 255, 251, 6, 19, 12, 231, 229, 245, 239, 246, 0, 33, 9, 12, 14, 248,
-			0, 12, 2, 11, 27, 6, 243, 231, 226, 249, 199, 245, 20, 48, 54, 4, 235, 252, 254, 233, 236, 15, 6, 1, 0, 11, 18, 10, 10, 255,
-			240, 246, 7, 6, 243, 247, 238, 220, 13, 25, 19, 13, 23, 35, 250, 197, 226, 249, 10, 22, 0, 0, 255, 14, 21, 13, 237, 238, 216, 244,
-			16, 21, 52, 24, 4, 229, 242, 244, 2, 252, 250, 249, 6, 248, 242, 240, 6, 245, 8, 18, 13, 54, 0, 27, 29, 231, 192, 199, 21, 21,
-			9, 7, 16, 244, 235, 2, 30, 0, 250, 5, 253, 244, 234, 250, 238, 248, 13, 15, 24, 4, 25, 40, 3, 2, 251, 229, 217, 230, 7, 7,
-			23, 247, 249, 243, 30, 36, 9, 26, 229, 198, 217, 220, 250, 13, 29, 24, 32, 13, 7, 40, 36, 255, 15, 1, 219, 222, 219, 207, 221, 251,
-			37, 26, 14, 4, 27, 219, 230, 19, 10, 36, 5, 26, 9, 229, 234, 14, 14, 6, 8, 0, 10, 239, 204, 239, 227, 237, 29, 22, 13, 29,
-			41, 22, 228, 236, 244, 0, 244, 255, 240, 246, 254, 11, 240, 19, 43, 28, 20, 235, 14, 246, 252, 227, 220, 11, 252, 232, 15, 10, 23, 19,
-			243, 235, 0, 242, 8, 0, 250, 33, 248, 15, 15, 255, 226, 7, 15, 2, 11, 44, 32, 11, 222, 198, 229, 229, 193, 225, 25, 33, 35, 13,
-			30, 27, 234, 3, 30, 24, 14, 238, 218, 236, 12, 246, 11, 22, 15, 3, 251, 235, 255, 226, 214, 227, 11, 255, 6, 0, 18, 59, 49, 252,
-			233, 0, 31, 27, 247, 239, 234, 239, 219, 246, 15, 18, 254, 233, 250, 39, 28, 240, 235, 222, 4, 252, 12, 1, 7, 43, 250, 15, 6, 1,
-			11, 231, 0, 246, 247, 13, 16, 38, 251, 244, 214, 211, 228, 198, 34, 39, 27, 16, 5, 226, 31, 59, 28, 43, 22, 251, 192, 215, 211, 191,
-			230, 3, 8, 7, 59, 25, 52, 27, 240, 4, 236, 14, 0, 240, 235, 237, 234, 226, 188, 4, 82, 55, 26, 24, 12, 236, 241, 14, 2, 250,
-			208, 209, 235, 13, 38, 44, 7, 249, 247, 221, 225, 241, 72, 44, 17, 13, 238, 197, 213, 250, 26, 32, 5, 19, 228, 12, 46, 231, 241, 244,
-			16, 255, 235, 240, 251, 239, 221, 17, 42, 33, 45, 26, 15, 210, 230, 5, 244, 194, 11, 11, 22, 2, 254, 246, 3, 6, 9, 33, 24, 3,
-			237, 212, 236, 254, 18, 222, 25, 60, 1, 212, 224, 253, 2, 58, 14, 42, 254, 218, 6, 250, 32, 231, 190, 230, 3, 248, 6, 16, 242, 23,
-			42, 5, 35, 39, 3, 3, 235, 230, 203, 231, 220, 11, 54, 43, 241, 241, 2, 221, 239, 10, 18, 2, 22, 7, 251, 24, 27, 11, 240, 0,
-			31, 28, 16, 166, 168, 201, 242, 231, 250, 90, 73, 2, 9, 29, 15, 250, 249, 9, 52, 35, 251, 218, 174, 186, 19, 35, 0, 232, 220, 223,
-			197, 10, 44, 80, 39, 29, 50, 254, 8, 54, 253, 204, 241, 239, 201, 249, 220, 0, 240, 19, 29, 252, 254, 248, 12, 253, 219, 242, 34, 19,
-			18, 9, 6, 61, 63, 3, 222, 223, 249, 252, 231, 232, 4, 252, 205, 249, 255, 253, 45, 14, 207, 214, 15, 14, 20, 29, 28, 80, 37, 253,
-			243, 220, 3, 3, 220, 4, 217, 9, 248, 193, 242, 30, 44, 20, 207, 173, 9, 87, 249, 254, 45, 9, 4, 29, 39, 14, 36, 228, 175, 234,
-			232, 241, 230, 203, 31, 90, 56, 249, 213, 11, 13, 7, 238, 7, 10, 186, 174, 235, 37, 9, 28, 38, 54, 30, 26, 29, 2, 250, 252, 240,
-			216, 0, 240, 226, 164, 210, 240, 68, 41, 23, 68, 3, 214, 238, 22, 26, 246, 2, 232, 14, 223, 14, 32, 8, 18, 228, 24, 250, 37, 20,
-			242, 232, 222, 204, 225, 246, 219, 15, 29, 5, 11, 21, 22, 33, 29, 252, 14, 1, 31, 14, 232, 195, 14, 233, 20, 220, 214, 47, 24, 239,
-			241, 17, 243, 16, 238, 230, 7, 36, 232, 201, 251, 34, 68, 45, 33, 233, 2, 55, 247, 235, 195, 198, 211, 46, 42, 232, 24, 237, 241, 243,
-			13, 26, 32, 235, 211, 237, 1, 5, 248, 45, 5, 41, 16, 20, 18, 229, 29, 40, 235, 216, 227, 214, 214, 9, 15, 2, 241, 199, 19, 35,
-			11, 248, 1, 22, 238, 32, 32, 0, 26, 18, 34, 245, 23, 34, 235, 182, 205, 8, 235, 242, 242, 210, 222, 21, 8, 252, 22, 38, 60, 20,
-			254, 23, 33, 5, 219, 9, 15, 62, 241, 181, 245, 230, 228, 0, 214, 218, 16, 237, 255, 50, 67, 7, 249, 254, 7, 6, 242, 48, 31, 228,
-			225, 48, 223, 230, 10, 16, 19, 253, 230, 207, 235, 39, 36, 225, 218, 246, 254, 254, 226, 248, 63, 33, 33, 61, 35, 0, 28, 224, 192, 227,
-			4, 41, 230, 221, 212, 235, 226, 250, 247, 250, 59, 19, 13, 4, 16, 80, 70, 10, 17, 27, 209, 151, 148, 195, 1, 51, 21, 15, 24, 66,
-			10, 229, 236, 23, 31, 189, 219, 224, 11, 28, 8, 50, 35, 22, 1, 12, 15, 228, 249, 233, 189, 248, 249, 227, 220, 16, 42, 0, 243, 31,
-			79, 15, 24, 242, 14, 33, 251, 203, 242, 222, 246, 25, 208, 2, 225, 242, 7, 236, 45, 47, 236, 24, 60, 3, 2, 4, 230, 12, 246, 178,
-			6, 36, 2, 206, 231, 77, 19, 250, 10, 7, 254, 214, 233, 0, 5, 8, 15, 223, 245, 12, 65, 249, 234, 26, 53, 16, 226, 6, 228, 223,
-			9, 25, 207, 237, 227, 245, 14, 251, 25, 12, 29, 14, 238, 209, 40, 87, 5, 24, 254, 7, 220, 216, 177, 230, 26, 35, 26, 192, 249, 47,
-			11, 226, 12, 41, 0, 42, 242, 246, 255, 10, 11, 230, 222, 204, 246, 28, 12, 3, 53, 62, 7, 242, 240, 1, 238, 233, 211, 213, 13, 247,
-			4, 13, 23, 68, 16, 217, 252, 7, 245, 2, 236, 253, 42, 15, 47, 14, 26, 249, 204, 192, 193, 220, 230, 2, 22, 255, 28, 65, 60, 29,
-			254, 27, 25, 0, 218, 237, 199, 136, 228, 33, 69, 58, 60, 54, 224, 224, 229, 250, 233, 185, 220, 248, 47, 249, 49, 35, 30, 6, 19, 17,
-			225, 209, 240, 0, 4, 1, 250, 12, 31, 84, 4, 231, 223, 242, 195, 186, 250, 50, 22, 231, 0, 20, 8, 229, 2, 29, 51, 53, 250, 7,
-			1, 41, 3, 224, 241, 205, 193, 38, 232, 234, 18, 219, 189, 4, 57, 32, 73, 40, 26, 237, 228, 192, 252, 254, 2, 32, 28, 49, 35, 236,
-			251, 234, 207, 0, 255, 252, 220, 11, 222, 201, 250, 243, 236, 55, 70, 57, 13, 26, 4, 213, 72, 49, 14, 23, 173, 169, 212, 237, 240, 172,
-			253, 55, 74, 54, 60, 219, 179, 177, 220, 41, 123, 76, 250, 243, 30, 234, 0, 0, 3, 202, 218, 0, 8, 242, 219, 232, 246, 52, 26, 11,
-			16, 252, 230, 16, 6, 6, 18, 242, 1, 29, 65, 30, 210, 209, 214, 13, 207, 201, 27, 7, 255, 51, 33, 252, 244, 25, 20, 239, 249, 220,
-			193, 56, 65, 238, 242, 2, 4, 2, 44, 5, 245, 224, 219, 248, 29, 5, 184, 241, 72, 57, 238, 233, 230, 219, 28, 25, 255, 13, 7, 20,
-			4, 18, 3, 247, 20, 230, 21, 43, 209, 205, 238, 206, 177, 233, 82, 9, 53, 47, 8, 16, 5, 9, 234, 20, 37, 11, 228, 242, 229, 229,
-			224, 214, 17, 14, 10, 35, 21, 237, 253, 233, 8, 253, 28, 21, 204, 231, 31, 46, 56, 240, 3, 246, 233, 248, 230, 4, 251, 249, 14, 6,
-			3, 216, 23, 10, 216, 22, 246, 206, 66, 2, 216, 79, 76, 241, 226, 53, 6, 160, 175, 253, 20, 49, 10, 226, 253, 30, 247, 12, 240, 253,
-			1, 5, 245, 216, 2, 83, 34, 29, 27, 238, 216, 185, 237, 8, 54, 16, 203, 177, 14, 27, 13, 45, 246, 241, 13, 22, 6, 42, 14, 216,
-			249, 18, 35, 222, 1, 226, 4, 197, 231, 14, 240, 20, 240, 222, 95, 73, 230, 226, 1, 3, 15, 20, 253, 221, 69, 47, 238, 188, 239, 216,
-			201, 247, 243, 45, 17, 28, 31, 14, 242, 13, 223, 41, 31, 225, 255, 226, 211, 215, 47, 50, 26, 50, 255, 232, 246, 27, 166, 227, 14, 251,
-			245, 249, 10, 37, 21, 248, 2, 20, 21, 38, 191, 191, 29, 57, 214, 255, 16, 8, 18, 5, 0, 242, 1, 249, 243, 255, 247, 20, 253, 221,
-			219, 44, 11, 213, 244, 3, 50, 85, 23, 218, 221, 255, 27, 19, 27, 221, 221, 18, 230, 252, 249, 10, 250, 205, 7, 227, 239, 19, 58, 22,
-			18, 33, 247, 199, 248, 46, 65, 28, 8, 224, 236, 230, 187, 250, 237, 19, 29, 226, 220, 5, 25, 241, 13, 13, 38, 42, 31, 240, 248, 30,
-			5, 223, 12, 247, 162, 237, 24, 30, 39, 240, 7, 0, 203, 225, 246, 8, 28, 50, 38, 236, 254, 28, 247, 247, 250, 9, 11, 250, 204, 218,
-			62, 232, 238, 32, 6, 25, 235, 225, 37, 40, 49, 160, 194, 12, 40, 14, 11, 245, 6, 240, 237, 35, 241, 39, 9, 230, 15, 41, 247, 223,
-			223, 208, 11, 43, 6, 21, 236, 0, 8, 1, 255, 242, 6, 25, 6, 216, 241, 237, 252, 39, 7, 33, 0, 28, 39, 16, 231, 205, 235, 176,
-			218, 24, 47, 39, 222, 5, 20, 21, 47, 232, 189, 14, 28, 7, 34, 25, 225, 13, 228, 232, 16, 7, 214, 249, 43, 240, 206, 240, 0, 246,
-			10, 26, 47, 34, 55, 15, 249, 3, 245, 244, 208, 214, 237, 15, 2, 210, 202, 6, 35, 80, 68, 3, 252, 202, 19, 19, 193, 28, 36, 234,
-			235, 228, 244, 6, 242, 18, 67, 39, 246, 222, 5, 229, 9, 253, 231, 249, 225, 244, 2, 43, 6, 22, 28, 244, 48, 249, 223, 0, 239, 12,
-			233, 253, 23, 13, 248, 191, 239, 68, 19, 28, 219, 205, 2, 33, 35, 8, 251, 3, 242, 239, 244, 23, 245, 222, 217, 19, 16, 10, 51, 49,
-			32, 7, 225, 182, 209, 58, 21, 240, 210, 9, 19, 217, 2, 253, 4, 20, 58, 211, 253, 33, 28, 2, 182, 33, 80, 236, 236, 185, 236, 254,
-			6, 10, 73, 40, 248, 194, 251, 1, 26, 20, 193, 220, 202, 10, 66, 253, 30, 70, 6, 240, 228, 239, 26, 53, 205, 3, 22, 222, 228, 242,
-			247, 22, 237, 10, 234, 236, 3, 21, 41, 40, 249, 12, 235, 233, 20, 22, 29, 243, 224, 233, 16, 212, 228, 49, 234, 56, 11, 6, 230, 221,
-			4, 251, 199, 57, 45, 228, 58, 18, 234, 230, 239, 14, 5, 237, 38, 24, 237, 225, 243, 198, 29, 35, 30, 244, 225, 249, 237, 66, 218, 23,
-			14, 237, 247, 19, 62, 33, 244, 207, 0, 228, 234, 2, 234, 236, 22, 2, 242, 3, 236, 25, 38, 53, 43, 247, 210, 255, 23, 206, 226, 8,
-			27, 35, 236, 7, 16, 213, 240, 253, 194, 31, 20, 0, 240, 227, 37, 9, 29, 53, 76, 4, 204, 22, 228, 187, 14, 226, 0, 247, 247, 8,
-			242, 233, 251, 0, 238, 48, 50, 46, 45, 13, 221, 202, 236, 2, 21, 61, 10, 224, 233, 150, 205, 25, 1, 12, 45, 82, 9, 8, 252, 239,
-			255, 253, 5, 190, 254, 252, 18, 39, 0, 27, 4, 204, 1, 16, 8, 26, 237, 210, 236, 23, 9, 21, 225, 236, 243, 255, 70, 32, 0, 247,
-			29, 24, 210, 248, 44, 213, 232, 213, 181, 33, 48, 11, 15, 19, 14, 251, 5, 5, 224, 19, 3, 221, 9, 59, 240, 254, 11, 209, 5, 1,
-			239, 244, 22, 13, 247, 27, 255, 0, 24, 229, 42, 236, 215, 213, 18, 13, 240, 7, 6, 48, 231, 36, 45, 19, 208, 223, 241, 212, 4, 4,
-			35, 31, 29, 2, 249, 247, 225, 251, 240, 213, 248, 7, 4, 246, 50, 65, 252, 243, 19, 8, 18, 12, 215, 239, 241, 34, 247, 214, 228, 238,
-			2, 40, 20, 228, 0, 247, 31, 7, 226, 2, 4, 35, 51, 35, 0, 8, 208, 191, 9, 16, 17, 248, 233, 249, 237, 230, 229, 243, 46, 50,
-			25, 244, 253, 24, 235, 49, 9, 255, 232, 30, 243, 201, 5, 243, 14, 211, 250, 41, 242, 29, 236, 6, 240, 23, 255, 225, 19, 33, 24, 29,
-			12, 5, 215, 199, 223, 20, 11, 12, 0, 238, 5, 25, 31, 245, 255, 16, 6, 236, 248, 195, 226, 247, 254, 76, 53, 249, 10, 16, 43, 252,
-			248, 240, 153, 197, 19, 235, 40, 80, 42, 16, 224, 236, 198, 3, 249, 232, 42, 1, 30, 245, 1, 25, 253, 29, 41, 244, 214, 10, 226, 219,
-			3, 199, 235, 32, 45, 52, 34, 248, 240, 207, 242, 56, 24, 238, 247, 236, 3, 3, 193, 2, 8, 15, 38, 50, 15, 226, 229, 3, 32, 22,
-			249, 212, 225, 231, 254, 26, 252, 251, 254, 21, 4, 22, 241, 254, 0, 248, 39, 28, 14, 247, 249, 3, 235, 7, 244, 224, 20, 247, 227, 242,
-			241, 29, 247, 249, 36, 38, 23, 207, 233, 14, 255, 68, 69, 218, 238, 238, 226, 4, 246, 18, 249, 216, 209, 198, 0, 99, 39, 23, 53, 239,
-			13, 243, 186, 251, 20, 248, 239, 240, 241, 29, 28, 45, 21, 252, 226, 209, 252, 8, 22, 6, 11, 237, 245, 3, 201, 253, 254, 251, 55, 32,
-			10, 60, 2, 243, 250, 227, 17, 223, 211, 246, 210, 249, 56, 4, 4, 33, 37, 20, 245, 5, 246, 218, 204, 14, 17, 10, 28, 4, 0, 0,
-			250, 253, 239, 233, 28, 7, 0, 254, 247, 2, 0, 253, 19, 43, 243, 235, 1, 254, 225, 246, 232, 15, 59, 0, 1, 15, 246, 21, 212, 238,
-			253, 2, 9, 7, 18, 22, 13, 230, 25, 245, 225, 223, 241, 248, 247, 52, 11, 31, 7, 234, 240, 19, 28, 3, 18, 253, 228, 236, 223, 253,
-			2, 233, 3, 21, 32, 255, 11, 35, 247, 1, 249, 237, 221, 243, 2, 11, 249, 1, 35, 20, 8, 1, 13, 39, 242, 246, 254, 187, 233, 0,
-			251, 19, 247, 0, 19, 239, 239, 32, 12, 28, 41, 6, 21, 210, 255, 224, 208, 39, 25, 24, 9, 209, 218, 250, 233, 15, 32, 30, 15, 2,
-			254, 226, 233, 239, 250, 46, 32, 1, 22, 225, 248, 24, 3, 252, 248, 5, 22, 215, 220, 254, 236, 13, 13, 10, 21, 11, 3, 17, 249, 251,
-			9, 240, 230, 16, 10, 35, 214, 245, 255, 225, 4, 16, 49, 6, 6, 244, 37, 22, 203, 221, 247, 6, 247, 1, 235, 16, 36, 0, 0, 239,
-			233, 234, 27, 12, 44, 37, 5, 251, 217, 233, 14, 42, 232, 239, 8, 249, 226, 228, 9, 6, 25, 254, 24, 248, 234, 227, 252, 24, 8, 31,
-			16, 42, 11, 239, 240, 0, 251, 245, 242, 8, 252, 240, 231, 238, 3, 14, 10, 250, 7, 11, 7, 246, 11, 2, 7, 0, 24, 39, 254, 2,
-			250, 244, 235, 246, 241, 220, 13, 20, 10, 243, 232, 248, 8, 7, 0, 250, 34, 25, 0, 4, 251, 28, 253, 10, 1, 2, 251, 221, 228, 218,
-			2, 38, 6, 255, 16, 3, 244, 248, 234, 34, 18, 1, 2, 0, 247, 7, 251, 255, 17, 245, 248, 244, 5, 17, 0, 244, 6, 2, 243, 0,
-			242, 27, 20, 4, 255, 5, 5, 255, 224, 219, 241, 1, 16, 12, 7, 28, 251, 15, 39, 7, 230, 243, 0, 8, 253, 244, 0, 230, 239, 252,
-			236, 23, 47, 12, 246, 238, 249, 12, 231, 21, 38, 10, 12, 10, 233, 216, 233, 4, 6, 13, 7, 0, 1, 254, 0, 0, 233, 7, 15, 0,
-			2, 5, 24, 14, 23, 15, 18, 18, 22, 19, 26, 21, 27, 28, 17, 24, 30, 26, 17, 23, 26, 30, 31, 17, 28, 21, 16, 12, 29, 40,
-			4, 36, 18, 26, 31, 11, 21, 16, 29, 4, 19, 16, 20, 24, 7, 26, 14, 27, 8, 9, 11, 17, 23, 254, 22, 16, 24, 16, 18, 12,
-			253, 30, 1, 21, 18, 17, 28, 21, 14, 27, 23, 23, 14, 35, 33, 31, 27, 27, 25, 23, 13, 16, 33, 27, 3, 20, 12, 9, 36, 34,
-			20, 28, 13, 18, 12, 252, 20, 17, 8, 4, 13, 9, 2, 53, 18, 11, 14, 0, 0, 251, 20, 21, 16, 7, 0, 11, 22, 17, 27, 18,
-			14, 6, 8, 24, 23, 4, 32, 17, 26, 16, 24, 16, 28, 34, 15, 21, 33, 33, 26, 28, 3, 26, 21, 7, 34, 50, 18, 25, 4, 19,
-			37, 20, 19, 4, 20, 29, 9, 25, 21, 35, 23, 22, 9, 4, 23, 248, 30, 21, 18, 9, 8, 3, 29, 20, 10, 14, 13, 4, 9, 12,
-			27, 22, 0, 8, 10, 4, 4, 12, 20, 18, 20, 1, 20, 22, 12, 30, 9, 20, 27, 0, 11, 16, 34, 23, 37, 1, 33, 19, 11, 22,
-			11, 33, 14, 10, 25, 20, 21, 24, 1, 8, 29, 11, 14, 26, 19, 5, 13, 15, 17, 4, 14, 5, 4, 10, 11, 17, 4, 11, 17, 245,
-			11, 25, 8, 15, 3, 8, 10, 0, 18, 11, 14, 28, 31, 21, 7, 30, 11, 18, 34, 17, 42, 7, 9, 5, 9, 19, 11, 37, 13, 26,
-			31, 7, 20, 4, 30, 19, 28, 8, 16, 11, 30, 20, 5, 19, 17, 17, 5, 0, 2, 20, 10, 11, 25, 7, 26, 7, 10, 6, 15, 25,
-			7, 6, 7, 253, 21, 9, 16, 22, 27, 2, 18, 28, 5, 15, 12, 2, 23, 14, 37, 15, 10, 26, 14, 8, 21, 28, 12, 26, 9, 37,
-			21, 10, 30, 20, 13, 28, 30, 6, 17, 8, 4, 21, 6, 26, 27, 10, 23, 14, 14, 23, 11, 0, 12, 7, 10, 19, 14, 248, 18, 10,
-			1, 1, 2, 28, 14, 254, 4, 12, 9, 7, 17, 16, 27, 15, 3, 10, 31, 0, 11, 35, 11, 4, 19, 38, 23, 8, 13, 31, 18, 24,
-			18, 26, 32, 12, 26, 14, 24, 29, 11, 29, 13, 8, 21, 9, 4, 13, 19, 20, 8, 17, 17, 0, 10, 11, 11, 5, 1, 9, 0, 255,
-			10, 8, 8, 22, 4, 8, 20, 6, 252, 14, 25, 8, 24, 11, 19, 39, 30, 11, 34, 13, 11, 25, 3, 23, 38, 28, 40, 12, 27, 36,
-			11, 13, 24, 33, 20, 12, 26, 251, 35, 250, 8, 20, 18, 9, 0, 20, 4, 15, 13, 5, 250, 21, 0, 7, 2, 3, 9, 5, 0, 9,
-			20, 29, 0, 248, 15, 253, 10, 28, 33, 15, 14, 6, 13, 25, 29, 18, 3, 32, 44, 19, 22, 38, 5, 15, 24, 35, 7, 22, 24, 25,
-			26, 13, 8, 19, 31, 251, 10, 7, 237, 11, 247, 28, 1, 0, 13, 3, 2, 26, 2, 252, 13, 2, 17, 13, 5, 244, 1, 1, 9, 18,
-			15, 9, 12, 0, 41, 26, 22, 17, 0, 251, 13, 37, 22, 9, 1, 14, 58, 3, 20, 21, 13, 29, 16, 2, 41, 31, 0, 29, 18, 16,
-			18, 2, 24, 15, 10, 31, 253, 0, 27, 4, 37, 9, 1, 20, 3, 12, 9, 0, 11, 28, 251, 253, 14, 20, 28, 34, 249, 7, 12, 19,
-			16, 3, 2, 31, 7, 4, 6, 7, 32, 27, 0, 12, 7, 20, 14, 1, 253, 1, 35, 16, 249, 5, 24, 16, 15, 33, 252, 13, 7, 13,
-			23, 251, 43, 47, 252, 33, 38, 13, 33, 34, 248, 24, 32, 13, 37, 32, 22, 31, 16, 6, 16, 24, 34, 12, 0, 25, 26, 22, 25, 13,
-			24, 24, 240, 14, 27, 244, 15, 25, 239, 254, 8, 235, 37, 15, 6, 13, 254, 2, 12, 33, 250, 9, 236, 243, 9, 233, 26, 22, 20, 6,
-			24, 252, 24, 23, 15, 39, 8, 14, 30, 251, 34, 39, 0, 17, 43, 29, 26, 45, 23, 254, 43, 9, 45, 37, 14, 24, 34, 251, 51, 38,
-			11, 21, 16, 14, 28, 41, 15, 21, 250, 31, 4, 14, 24, 0, 5, 17, 27, 27, 15, 7, 0, 28, 26, 13, 15, 7, 17, 4, 246, 34,
-			23, 10, 18, 14, 7, 1, 14, 7, 20, 3, 13, 252, 240, 16, 23, 0, 21, 6, 3, 250, 255, 27, 15, 249, 5, 14, 4, 252, 29, 254,
-			247, 44, 20, 1, 30, 29, 243, 57, 27, 20, 28, 250, 36, 18, 11, 54, 35, 34, 36, 26, 43, 61, 22, 44, 20, 13, 34, 46, 44, 27,
-			41, 39, 6, 27, 0, 55, 32, 22, 9, 8, 16, 240, 25, 255, 15, 18, 6, 250, 247, 29, 10, 238, 18, 8, 230, 235, 250, 246, 11, 14,
-			236, 23, 250, 5, 6, 21, 250, 22, 42, 252, 11, 31, 31, 21, 23, 253, 22, 3, 30, 3, 32, 32, 249, 28, 14, 8, 24, 24, 254, 247,
-			2, 242, 244, 10, 15, 37, 254, 9, 11, 255, 17, 6, 38, 30, 23, 21, 15, 15, 20, 53, 18, 45, 22, 248, 24, 21, 28, 11, 72, 39,
-			31, 42, 4, 49, 19, 37, 27, 25, 32, 8, 21, 20, 40, 41, 4, 25, 6, 253, 23, 10, 11, 246, 5, 4, 253, 37, 15, 232, 0, 17,
-			254, 240, 28, 32, 7, 25, 233, 228, 11, 252, 0, 33, 28, 248, 12, 0, 15, 20, 19, 19, 48, 6, 12, 9, 2, 32, 11, 27, 33, 47,
-			19, 250, 41, 25, 23, 42, 36, 15, 35, 35, 254, 11, 6, 18, 65, 16, 255, 11, 22, 50, 255, 220, 0, 37, 232, 0, 3, 225, 22, 236,
-			185, 58, 82, 55, 30, 245, 245, 31, 17, 36, 238, 6, 55, 16, 19, 16, 47, 54, 45, 29, 31, 18, 65, 14, 29, 23, 55, 66, 19, 28,
-			39, 16, 27, 19, 227, 21, 27, 10, 19, 1, 235, 57, 20, 231, 3, 242, 9, 20, 251, 4, 229, 255, 28, 14, 248, 2, 15, 0, 3, 242,
-			8, 14, 17, 17, 234, 249, 47, 55, 13, 249, 58, 30, 31, 48, 1, 253, 26, 31, 24, 17, 245, 251, 33, 253, 241, 17, 83, 28, 4, 50,
-			29, 34, 42, 8, 222, 33, 60, 6, 15, 255, 249, 25, 72, 250, 235, 35, 37, 29, 224, 241, 252, 0, 242, 4, 32, 38, 13, 240, 221, 227,
-			16, 32, 229, 19, 14, 242, 21, 252, 9, 17, 12, 57, 72, 0, 0, 37, 250, 32, 21, 11, 60, 49, 1, 26, 255, 25, 68, 27, 250, 53,
-			30, 17, 24, 13, 29, 46, 6, 11, 27, 225, 251, 30, 17, 0, 4, 26, 24, 251, 239, 30, 21, 238, 10, 246, 236, 45, 47, 25, 6, 5,
-			18, 59, 252, 245, 39, 31, 26, 0, 249, 25, 40, 39, 19, 236, 232, 54, 5, 236, 14, 22, 48, 5, 250, 16, 230, 10, 46, 11, 242, 5,
-			0, 19, 250, 210, 23, 39, 246, 248, 254, 255, 8, 20, 241, 12, 31, 6, 41, 214, 238, 19, 36, 18, 40, 47, 54, 17, 43, 26, 238, 32,
-			25, 23, 32, 21, 15, 51, 11, 33, 57, 40, 47, 28, 8, 10, 23, 51, 40, 6, 9, 25, 12, 25, 25, 251, 22, 33, 1, 254, 252, 237,
-			11, 254, 22, 3, 14, 35, 245, 241, 2, 28, 22, 5, 10, 253, 254, 6, 23, 15, 9, 24, 36, 14, 255, 236, 6, 24, 30, 12, 34, 25,
-			14, 10, 23, 8, 13, 13, 22, 22, 6, 55, 44, 245, 251, 17, 5, 25, 34, 33, 22, 36, 50, 18, 17, 15, 30, 71, 71, 28, 29, 28,
-			20, 13, 244, 31, 29, 31, 46, 3, 11, 45, 248, 22, 33, 246, 27, 14, 229, 225, 232, 250, 220, 242, 234, 159, 137, 200, 232, 245, 239, 240,
-			24, 15, 5, 47, 34, 18, 33, 62, 0, 13, 51, 53, 30, 32, 121, 76, 19, 50, 47, 49, 85, 253, 17, 91, 53, 71, 85, 68, 42, 50,
-			21, 25, 47, 39, 14, 239, 16, 37, 246, 249, 251, 31, 31, 0, 14, 35, 236, 249, 254, 20, 23, 17, 22, 5, 245, 253, 37, 15, 9, 17,
-			10, 23, 255, 232, 9, 6, 10, 26, 16, 20, 16, 24, 9, 10, 8, 36, 23, 254, 233, 45, 30, 249, 6, 253, 9, 35, 18, 255, 7, 37,
-			34, 14, 12, 14, 31, 254, 252, 18, 7, 26, 30, 15, 27, 42, 21, 25, 22, 0, 8, 21, 23, 2, 250, 246, 36, 239, 8, 61, 245, 4,
-			13, 246, 16, 34, 247, 251, 6, 250, 250, 2, 21, 21, 16, 251, 253, 13, 250, 5, 254, 14, 26, 7, 3, 242, 233, 244, 13, 46, 28, 12,
-			16, 16, 4, 21, 45, 44, 27, 7, 6, 7, 15, 28, 40, 10, 22, 63, 42, 19, 15, 252, 28, 33, 17, 21, 18, 26, 19, 10, 8, 23,
-			18, 14, 1, 251, 35, 12, 25, 7, 255, 37, 10, 20, 9, 20, 25, 0, 242, 0, 36, 21, 16, 7, 251, 254, 13, 29, 243, 0, 2, 4,
-			14, 19, 1, 232, 11, 15, 42, 29, 11, 18, 8, 11, 9, 255, 253, 28, 11, 23, 20, 14, 19, 21, 14, 4, 15, 54, 23, 16, 17, 13,
-			14, 42, 9, 14, 50, 24, 14, 30, 10, 23, 250, 21, 22, 249, 70, 0, 0, 36, 245, 42, 41, 17, 38, 33, 254, 7, 21, 11, 42, 4,
-			21, 21, 4, 41, 36, 7, 28, 23, 40, 55, 47, 23, 17, 19, 22, 32, 4, 25, 57, 43, 42, 9, 253, 16, 17, 7, 24, 19, 20, 8,
-			242, 10, 27, 24, 19, 19, 43, 34, 10, 9, 3, 3, 22, 31, 21, 17, 10, 17, 37, 17, 26, 42, 28, 32, 26, 15, 33, 24, 5, 15,
-			7, 17, 38, 16, 13, 3, 14, 27, 24, 3, 254, 252, 5, 18, 16, 250, 255, 9, 252, 246, 4, 25, 7, 14, 7, 5, 5, 10, 254, 238,
-			4, 1, 5, 0, 255, 27, 45, 32, 29, 20, 12, 24, 42, 12, 46, 16, 40, 52, 14, 5, 6, 57, 26, 32, 60, 9, 20, 54, 3, 15,
-			33, 24, 20, 0, 2, 37, 27, 0, 1, 2, 32, 57, 18, 5, 24, 255, 253, 4, 7, 24, 47, 32, 15, 14, 12, 25, 23, 20, 24, 36,
-			47, 36, 21, 0, 9, 27, 18, 20, 12, 12, 11, 6, 254, 0, 16, 16, 16, 1, 10, 25, 15, 252, 239, 251, 25, 21, 18, 24, 28, 14,
-			3, 251, 247, 15, 32, 27, 15, 14, 19, 21, 16, 26, 44, 46, 32, 27, 252, 247, 255, 251, 20, 47, 44, 43, 38, 19, 25, 30, 3, 12,
-			11, 1, 21, 17, 10, 17, 17, 24, 41, 33, 27, 31, 22, 11, 4, 4, 8, 21, 22, 10, 15, 14, 1, 7, 253, 250, 24, 20, 1, 11,
-			1, 245, 4, 6, 9, 19, 15, 12, 3, 3, 11, 15, 5, 5, 13, 13, 17, 23, 9, 11, 25, 21, 14, 21, 26, 26, 19, 11, 11, 21,
-			18, 8, 11, 23, 12, 9, 28, 16, 16, 34, 49, 34, 14, 16, 35, 70, 19, 7, 36, 67, 21, 12, 35, 43, 52, 24, 11, 33, 44, 31,
-			20, 245, 30, 28, 7, 5, 0, 13, 36, 24, 3, 1, 18, 14, 252, 2, 12, 6, 18, 19, 0, 5, 21, 20, 15, 7, 6, 32, 31, 20,
-			24, 19, 22, 29, 34, 25, 24, 34, 35, 16, 13, 21, 25, 29, 21, 25, 17, 30, 18, 4, 23, 1, 15, 28, 6, 2, 0, 8, 253, 248,
-			241, 251, 10, 7, 4, 249, 8, 255, 1, 12, 6, 10, 18, 8, 0, 4, 7, 10, 23, 12, 13, 39, 38, 8, 15, 10, 6, 25, 31, 21,
-			10, 7, 9, 10, 13, 10, 22, 25, 25, 18, 255, 0, 255, 254, 2, 0, 0, 0, 122, 8, 8, 0, 10, 213, 185, 201, 218, 246, 30, 33,
-			19, 56, 71, 24, 0, 214, 189, 183, 232, 14, 26, 28, 12, 15, 57, 29, 252, 4, 244, 232, 213, 223, 2, 10, 16, 13, 5, 238, 255, 243,
-			245, 26, 10, 218, 238, 31, 37, 0, 0, 0, 1, 21, 21, 237, 233, 8, 244, 252, 45, 28, 219, 215, 249, 4, 251, 2, 229, 242, 250, 255,
-			14, 37, 36, 26, 0, 12, 6, 215, 225, 255, 12, 16, 2, 11, 17, 4, 248, 236, 0, 228, 217, 228, 3, 33, 7, 27, 18, 251, 28, 246,
-			235, 22, 246, 250, 248, 1, 59, 5, 229, 252, 251, 20, 2, 226, 11, 12, 229, 227, 253, 6, 247, 237, 253, 3, 20, 21, 251, 4, 21, 40,
-			20, 7, 238, 4, 35, 6, 224, 208, 223, 231, 252, 13, 2, 5, 4, 17, 13, 227, 252, 13, 250, 48, 14, 234, 220, 243, 18, 67, 52, 14,
-			253, 215, 213, 209, 236, 253, 247, 21, 31, 42, 5, 209, 241, 246, 38, 243, 215, 14, 41, 22, 35, 21, 210, 0, 245, 199, 13, 21, 10, 15,
-			252, 20, 22, 233, 233, 0, 12, 9, 205, 209, 244, 2, 9, 28, 42, 18, 23, 26, 20, 245, 229, 226, 13, 7, 230, 230, 242, 18, 33, 20,
-			253, 227, 214, 237, 1, 13, 2, 17, 37, 18, 25, 22, 209, 223, 29, 4, 27, 2, 210, 216, 249, 57, 255, 227, 0, 232, 4, 66, 0, 204,
-			0, 12, 253, 41, 46, 231, 231, 236, 247, 2, 246, 253, 3, 57, 68, 224, 211, 220, 218, 21, 9, 21, 2, 234, 11, 238, 12, 15, 16, 39,
-			213, 240, 32, 3, 251, 1, 4, 18, 7, 222, 230, 2, 239, 248, 244, 9, 33, 28, 252, 1, 241, 1, 246, 237, 16, 30, 28, 5, 0, 13,
-			16, 210, 197, 254, 20, 250, 12, 23, 225, 229, 254, 8, 39, 16, 222, 248, 20, 29, 15, 255, 42, 0, 203, 243, 1, 248, 240, 9, 6, 254,
-			0, 250, 244, 252, 23, 49, 237, 223, 238, 222, 252, 54, 42, 252, 23, 43, 0, 220, 239, 207, 11, 30, 216, 220, 40, 20, 241, 254, 40, 8,
-			216, 248, 27, 9, 234, 24, 217, 234, 20, 231, 0, 55, 31, 245, 34, 10, 214, 235, 24, 38, 25, 207, 174, 232, 9, 249, 23, 20, 27, 7,
-			255, 238, 238, 22, 231, 232, 61, 58, 235, 250, 19, 6, 10, 230, 217, 238, 32, 254, 212, 24, 6, 219, 13, 13, 249, 252, 248, 0, 254, 57,
-			32, 234, 249, 55, 240, 221, 1, 42, 244, 217, 212, 239, 32, 11, 6, 245, 36, 16, 183, 250, 14, 39, 44, 226, 223, 37, 1, 210, 23, 39,
-			255, 206, 225, 26, 43, 231, 238, 12, 44, 14, 216, 251, 41, 254, 210, 225, 38, 20, 235, 218, 33, 43, 13, 217, 172, 4, 66, 9, 16, 34,
-			5, 226, 228, 239, 49, 255, 237, 5, 252, 255, 231, 11, 28, 34, 18, 246, 216, 8, 233, 183, 216, 45, 34, 12, 20, 245, 17, 63, 28, 215,
-			254, 34, 211, 205, 236, 244, 44, 10, 28, 28, 237, 252, 241, 237, 233, 214, 226, 41, 63, 232, 0, 55, 24, 233, 240, 19, 234, 11, 19, 250,
-			12, 1, 213, 233, 80, 20, 157, 200, 25, 223, 5, 60, 7, 237, 44, 57, 2, 211, 20, 208, 3, 91, 231, 161, 12, 33, 0, 14, 44, 236,
-			177, 244, 21, 246, 8, 8, 237, 32, 3, 8, 27, 31, 212, 233, 62, 44, 212, 181, 4, 62, 217, 176, 8, 48, 22, 246, 4, 44, 15, 214,
-			250, 21, 212, 1, 55, 23, 3, 216, 211, 29, 29, 210, 242, 23, 4, 236, 231, 33, 34, 20, 234, 247, 19, 0, 228, 246, 28, 49, 42, 204,
-			172, 21, 91, 219, 190, 227, 14, 25, 25, 239, 252, 19, 237, 21, 11, 14, 18, 222, 26, 17, 0, 216, 243, 4, 9, 248, 232, 44, 10, 0,
-			248, 201, 21, 25, 214, 255, 14, 229, 246, 55, 46, 18, 235, 0, 18, 255, 244, 220, 247, 22, 243, 23, 236, 246, 33, 213, 250, 17, 213, 241,
-			48, 44, 234, 223, 61, 14, 224, 18, 7, 226, 230, 46, 55, 230, 224, 2, 250, 226, 8, 21, 237, 0, 247, 255, 240, 7, 251, 218, 60, 82,
-			226, 219, 78, 34, 191, 226, 7, 246, 8, 3, 222, 233, 31, 15, 233, 4, 41, 5, 207, 8, 18, 196, 11, 72, 245, 254, 31, 237, 229, 6,
-			233, 246, 56, 37, 222, 198, 38, 55, 187, 245, 55, 10, 199, 235, 232, 14, 33, 22, 4, 237, 53, 13, 231, 199, 33, 35, 172, 248, 51, 242,
-			7, 33, 15, 23, 220, 254, 251, 4, 217, 226, 48, 60, 212, 173, 6, 85, 33, 199, 227, 13, 48, 6, 242, 237, 21, 26, 22, 193, 184, 44,
-			60, 13, 40, 206, 168, 247, 39, 11, 20, 251, 12, 24, 1, 233, 203, 9, 58, 26, 252, 220, 223, 14, 244, 2, 50, 11, 227, 237, 244, 6,
-			31, 236, 252, 6, 36, 29, 0, 193, 36, 246, 215, 13, 3, 27, 248, 240, 193, 6, 68, 61, 246, 216, 10, 221, 245, 243, 250, 43, 13, 40,
-			231, 246, 17, 37, 238, 243, 199, 253, 20, 39, 3, 217, 0, 250, 16, 190, 202, 33, 58, 52, 9, 6, 248, 25, 30, 240, 243, 3, 223, 209,
-			13, 33, 217, 234, 38, 9, 236, 6, 246, 248, 254, 32, 9, 186, 61, 41, 240, 241, 8, 33, 230, 24, 31, 198, 20, 30, 174, 242, 19, 234,
-			53, 218, 215, 9, 18, 57, 11, 187, 4, 86, 18, 203, 209, 47, 53, 255, 230, 211, 245, 42, 12, 214, 240, 240, 8, 16, 229, 17, 71, 7,
-			196, 250, 23, 69, 253, 214, 253, 9, 246, 176, 243, 72, 15, 244, 32, 203, 190, 86, 59, 230, 234, 9, 19, 25, 234, 179, 229, 122, 81, 139,
-			229, 244, 253, 225, 246, 63, 47, 40, 214, 210, 7, 39, 177, 2, 98, 230, 242, 220, 39, 31, 15, 239, 224, 0, 5, 198, 3, 19, 17, 45,
-			206, 9, 73, 230, 193, 236, 70, 235, 224, 35, 59, 9, 165, 237, 10, 42, 16, 211, 239, 99, 249, 144, 63, 65, 242, 209, 251, 6, 226, 3,
-			5, 244, 19, 21, 208, 18, 66, 12, 247, 242, 39, 236, 195, 206, 2, 71, 27, 192, 12, 43, 13, 234, 218, 9, 50, 244, 210, 12, 47, 10,
-			207, 0, 4, 15, 189, 33, 56, 229, 230, 253, 34, 19, 252, 247, 2, 17, 6, 201, 235, 48, 13, 35, 221, 221, 221, 247, 26, 45, 1, 240,
-			22, 220, 28, 36, 215, 248, 81, 249, 212, 6, 243, 4, 222, 33, 195, 205, 120, 247, 188, 27, 39, 45, 17, 181, 236, 36, 26, 206, 21, 62,
-			22, 188, 253, 240, 28, 250, 172, 14, 80, 248, 206, 14, 3, 10, 215, 73, 36, 241, 7, 214, 186, 69, 36, 196, 13, 70, 19, 185, 223, 21,
-			33, 195, 248, 243, 248, 96, 0, 21, 17, 0, 175, 203, 78, 51, 180, 206, 34, 47, 245, 22, 12, 30, 224, 232, 4, 203, 7, 61, 248, 2,
-			247, 205, 34, 64, 31, 225, 215, 241, 224, 13, 1, 230, 5, 96, 220, 250, 16, 244, 11, 0, 5, 12, 246, 205, 31, 3, 13, 255, 245, 253,
-			0, 253, 27, 237, 207, 43, 14, 251, 18, 233, 9, 41, 238, 228, 241, 0, 250, 227, 69, 66, 162, 29, 70, 202, 157, 62, 51, 209, 9, 10,
-			10, 244, 18, 225, 20, 5, 254, 221, 216, 80, 195, 231, 59, 38, 247, 3, 244, 4, 37, 24, 229, 174, 29, 37, 237, 241, 6, 17, 9, 244,
-			227, 250, 4, 9, 251, 8, 4, 243, 245, 74, 7, 240, 51, 204, 208, 5, 209, 70, 43, 244, 23, 173, 250, 100, 174, 234, 35, 233, 39, 227,
-			246, 40, 13, 44, 241, 191, 226, 29, 5, 16, 246, 23, 246, 243, 14, 243, 32, 9, 245, 249, 73, 2, 150, 229, 28, 252, 231, 23, 30, 255,
-			252, 30, 235, 227, 72, 231, 222, 32, 20, 241, 235, 42, 249, 221, 2, 255, 235, 47, 254, 200, 28, 49, 191, 215, 104, 84, 194, 174, 22, 11,
-			202, 229, 54, 28, 28, 255, 216, 13, 56, 255, 189, 2, 52, 217, 233, 35, 241, 210, 42, 31, 246, 12, 7, 226, 249, 31, 214, 193, 6, 78,
-			40, 202, 30, 45, 241, 8, 233, 180, 7, 65, 243, 219, 64, 23, 183, 235, 71, 24, 210, 231, 194, 42, 79, 210, 203, 31, 52, 25, 221, 233,
-			43, 232, 251, 54, 16, 209, 242, 255, 254, 16, 230, 205, 21, 67, 250, 214, 254, 45, 2, 191, 52, 237, 7, 33, 247, 3, 10, 54, 193, 207,
-			60, 249, 189, 37, 34, 246, 1, 30, 221, 217, 29, 220, 219, 77, 27, 220, 1, 28, 21, 10, 254, 241, 246, 205, 247, 46, 244, 30, 55, 195,
-			206, 49, 8, 191, 25, 25, 240, 240, 18, 12, 232, 28, 5, 24, 14, 2, 232, 189, 253, 62, 10, 5, 15, 242, 237, 225, 255, 28, 245, 2,
-			7, 229, 17, 2, 214, 24, 76, 6, 0, 238, 239, 250, 222, 46, 251, 210, 44, 254, 232, 39, 235, 244, 14, 10, 18, 215, 211, 7, 32, 36,
-			10, 242, 23, 245, 222, 35, 0, 253, 0, 236, 255, 29, 247, 228, 249, 254, 37, 222, 20, 22, 252, 229, 27, 246, 246, 34, 3, 0, 4, 232,
-			229, 15, 14, 0, 2, 243, 8, 22, 8, 194, 23, 47, 229, 205, 15, 35, 251, 21, 237, 225, 20, 39, 209, 8, 75, 249, 174, 243, 15, 30,
-			30, 231, 248, 4, 7, 252, 225, 15, 39, 228, 2, 11, 233, 218, 23, 42, 14, 248, 5, 8, 221, 245, 9, 244, 19, 3, 245, 13, 13, 237,
-			29, 251, 1, 229, 227, 36, 249, 13, 14, 240, 236, 4, 16, 44, 244, 207, 251, 8, 0, 1, 0, 40, 24, 219, 237, 31, 235, 0, 22, 246,
-			17, 241, 236, 21, 0, 232, 255, 242, 1, 34, 225, 10, 35, 249, 253, 254, 28, 24, 248, 233, 251, 248, 3, 236, 253, 5, 11, 5, 247, 235,
-			24, 251, 245, 18, 12, 16, 244, 247, 12, 3, 254, 16, 238, 246, 252, 253, 21, 249, 12, 4, 252, 245, 239, 246, 1, 9, 23, 10, 247, 253,
-			9, 15, 246, 250, 1, 254, 5, 242, 247, 252, 13, 7, 251, 17, 21, 248, 238, 1, 4, 1, 235, 1, 242, 12, 32, 238, 235, 20, 12, 252,
-			5, 249, 26, 249, 246, 253, 247, 16, 253, 243, 2, 11, 246, 246, 19, 252, 11, 0, 244, 4, 3, 242, 248, 16, 11, 12, 0, 8, 246, 4,
-			238, 239, 16, 21, 255, 213, 22, 6, 243, 254, 26, 0, 244, 3, 242, 15, 15, 8, 233, 250, 31, 245, 244, 249, 5, 247, 11, 2, 242, 10,
-			26, 250, 227, 14, 12, 244, 231, 15, 27, 27, 254, 198, 248, 35, 7, 250, 245, 247, 253, 15, 0, 18, 6, 243, 245, 31, 6, 243, 248, 245,
-			14, 254, 242, 253, 12, 250, 17, 254, 232, 36, 246, 237, 0, 27, 0, 1, 253, 24, 255, 243, 11, 227, 241, 6, 25, 244, 242, 18, 11, 239,
-			13, 11, 251, 6, 242, 250, 5, 0, 22, 248, 250, 1, 3, 251, 0, 3, 253, 6, 242, 254, 25, 11, 231, 248, 24, 3, 255, 239, 8, 10,
-			232, 7, 12, 249, 242, 1, 19, 6, 11, 11, 242, 241, 1, 0, 241, 5, 9, 246, 3, 12, 5, 245, 18, 255, 240, 19, 7, 241, 239, 21,
-			4, 228, 3, 20, 252, 3, 11, 234, 243, 21, 13, 247, 236, 33, 255, 236, 23, 253, 251, 4, 5, 249, 239, 4, 20, 249, 16, 248, 225, 31,
-			254, 247, 2, 0, 12, 248, 239, 5, 3, 14, 13, 245, 1, 16, 237, 243, 14, 11, 8, 225, 253, 27, 241, 3, 11, 249, 16, 249, 232, 247,
-			23, 12, 221, 0, 33, 3, 253, 6, 247, 253, 0, 15, 1, 249, 7, 232, 10, 25, 3, 231, 237, 15, 255, 247, 5, 1, 235, 17, 24, 250,
-			10, 254, 13, 255, 248, 13, 246, 0, 0, 244, 2, 248, 239, 9, 14, 255, 251, 0, 9, 3, 238, 14, 5, 7, 4, 252, 10, 21, 1, 215,
-			249, 23, 249, 236, 9, 253, 240, 18, 14, 251, 7, 3, 238, 2, 18, 10, 234, 253, 17, 6, 246, 1, 3, 3, 9, 236, 251, 9, 2, 244,
-			244, 10, 9, 0, 241, 17, 12, 8, 0, 252, 243, 255, 0, 6, 254, 249, 9, 249, 3, 26, 16, 225, 1, 24, 238, 250, 236, 4, 10, 253,
-			7, 247, 252, 6, 6, 10, 1, 253, 10, 12, 227, 8, 18, 249, 246, 251, 255, 22, 253, 237, 1, 3, 1, 242, 2, 17, 250, 4, 7, 13,
-			5, 241, 0, 0, 147, 8, 9, 0, 250, 5, 240, 232, 11, 255, 245, 7, 234, 218, 30, 27, 215, 3, 33, 0, 232, 17, 7, 255, 23, 45,
-			13, 253, 246, 25, 33, 255, 227, 27, 13, 238, 4, 0, 241, 10, 245, 4, 29, 219, 235, 253, 240, 13, 234, 244, 1, 244, 0, 251, 5, 237,
-			34, 23, 226, 228, 38, 12, 204, 2, 42, 10, 239, 44, 14, 238, 15, 9, 27, 15, 5, 217, 244, 46, 254, 203, 18, 49, 248, 230, 247, 227,
-			239, 255, 9, 18, 242, 252, 231, 253, 238, 254, 251, 249, 3, 20, 246, 209, 25, 44, 3, 4, 25, 240, 248, 19, 12, 25, 241, 7, 31, 241,
-			9, 24, 244, 248, 26, 244, 236, 11, 7, 42, 240, 190, 28, 19, 252, 233, 254, 21, 228, 241, 227, 19, 10, 18, 235, 203, 40, 6, 167, 3,
-			63, 244, 228, 21, 2, 28, 240, 13, 6, 4, 58, 211, 253, 55, 254, 219, 37, 52, 215, 228, 21, 61, 243, 188, 248, 14, 35, 222, 219, 33,
-			5, 214, 17, 31, 229, 246, 30, 255, 211, 20, 12, 227, 16, 26, 248, 227, 14, 15, 219, 30, 26, 221, 0, 19, 233, 229, 69, 253, 206, 251,
-			29, 29, 238, 255, 17, 25, 235, 254, 24, 249, 242, 246, 0, 226, 247, 38, 0, 13, 0, 242, 243, 28, 42, 240, 205, 0, 15, 219, 21, 20,
-			228, 244, 41, 3, 235, 31, 249, 226, 21, 24, 235, 255, 11, 2, 5, 0, 59, 248, 210, 27, 32, 239, 252, 18, 230, 250, 18, 239, 242, 235,
-			24, 247, 6, 0, 233, 14, 226, 228, 251, 25, 244, 240, 5, 231, 18, 31, 243, 242, 24, 12, 5, 213, 33, 28, 215, 17, 4, 29, 55, 228,
-			239, 20, 2, 246, 243, 23, 26, 216, 238, 29, 255, 247, 249, 27, 4, 219, 248, 0, 30, 12, 215, 20, 41, 6, 193, 252, 60, 0, 185, 2,
-			29, 253, 0, 243, 9, 23, 0, 225, 240, 31, 35, 234, 223, 61, 2, 221, 20, 246, 10, 251, 243, 24, 7, 223, 231, 242, 2, 15, 248, 23,
-			249, 245, 254, 233, 25, 17, 1, 245, 31, 243, 238, 18, 247, 11, 252, 245, 253, 3, 243, 39, 238, 250, 60, 254, 252, 245, 8, 24, 253, 0,
-			9, 40, 252, 6, 2, 232, 244, 230, 4, 6, 230, 14, 0, 1, 241, 230, 0, 21, 250, 8, 250, 218, 28, 37, 231, 247, 5, 229, 9, 5,
-			252, 9, 239, 226, 18, 8, 232, 10, 3, 244, 29, 31, 8, 246, 250, 52, 10, 6, 8, 237, 18, 250, 209, 254, 38, 5, 238, 0, 34, 0,
-			202, 11, 49, 5, 212, 249, 38, 210, 232, 252, 41, 38, 224, 222, 6, 247, 7, 5, 204, 38, 32, 216, 1, 30, 12, 226, 244, 60, 4, 206,
-			7, 26, 234, 7, 19, 234, 33, 14, 234, 237, 22, 1, 235, 243, 0, 51, 234, 218, 34, 238, 9, 254, 233, 251, 25, 5, 254, 9, 244, 17,
-			4, 11, 250, 233, 18, 241, 22, 252, 246, 28, 241, 223, 251, 75, 244, 209, 20, 41, 2, 231, 21, 1, 24, 224, 217, 20, 38, 246, 198, 46,
-			26, 206, 243, 26, 20, 227, 255, 243, 220, 0, 252, 8, 3, 1, 44, 226, 229, 8, 19, 255, 33, 10, 233, 0, 243, 10, 28, 30, 24, 242,
-			16, 242, 9, 1, 226, 241, 26, 1, 199, 247, 37, 0, 213, 24, 35, 243, 243, 237, 1, 44, 250, 208, 240, 65, 248, 198, 13, 71, 246, 190,
-			6, 17, 237, 20, 9, 213, 16, 51, 214, 251, 38, 45, 254, 191, 67, 251, 255, 7, 225, 19, 53, 254, 183, 23, 45, 244, 215, 239, 41, 246,
-			238, 33, 226, 251, 254, 253, 244, 32, 237, 241, 41, 238, 249, 232, 240, 47, 232, 221, 247, 18, 20, 236, 17, 30, 31, 216, 7, 254, 242, 34,
-			252, 243, 14, 3, 247, 9, 28, 243, 234, 23, 37, 12, 207, 0, 0, 241, 30, 20, 201, 11, 38, 255, 239, 229, 34, 41, 224, 223, 240, 2,
-			38, 226, 9, 15, 14, 221, 226, 6, 28, 253, 227, 30, 2, 200, 4, 49, 241, 242, 21, 12, 23, 253, 213, 53, 37, 3, 213, 232, 60, 248,
-			214, 250, 52, 254, 255, 251, 244, 17, 7, 246, 6, 245, 246, 0, 240, 249, 229, 247, 23, 1, 217, 8, 11, 19, 30, 214, 238, 66, 33, 147,
-			222, 70, 252, 242, 250, 53, 246, 250, 53, 17, 241, 243, 22, 253, 37, 249, 227, 18, 250, 5, 253, 232, 27, 241, 225, 21, 50, 193, 3, 28,
-			19, 235, 219, 13, 28, 230, 240, 31, 10, 220, 232, 0, 37, 7, 191, 244, 16, 10, 250, 224, 52, 1, 214, 8, 47, 223, 249, 43, 237, 251,
-			22, 228, 1, 83, 212, 196, 20, 70, 21, 192, 254, 75, 243, 193, 38, 29, 253, 243, 251, 41, 238, 244, 13, 27, 247, 3, 252, 238, 18, 236,
-			228, 25, 27, 232, 210, 248, 38, 204, 221, 67, 22, 232, 236, 248, 35, 254, 212, 13, 36, 237, 233, 2, 20, 13, 20, 230, 3, 29, 246, 228,
-			245, 38, 23, 222, 11, 20, 20, 221, 247, 12, 27, 232, 253, 13, 247, 16, 243, 248, 29, 18, 234, 9, 243, 10, 245, 253, 255, 32, 231, 252,
-			0, 10, 8, 250, 255, 2, 234, 4, 40, 224, 207, 30, 58, 189, 220, 38, 50, 213, 248, 16, 21, 21, 228, 240, 16, 7, 253, 246, 14, 0,
-			224, 248, 13, 29, 234, 218, 24, 30, 214, 236, 34, 30, 233, 236, 61, 14, 206, 17, 53, 234, 241, 26, 45, 233, 197, 32, 0, 6, 248, 211,
-			26, 31, 204, 242, 58, 33, 222, 216, 20, 48, 230, 207, 17, 61, 186, 195, 67, 33, 173, 237, 23, 34, 44, 227, 239, 0, 45, 8, 203, 15,
-			40, 234, 234, 32, 12, 239, 255, 41, 5, 191, 34, 3, 206, 52, 43, 221, 229, 7, 13, 9, 227, 4, 0, 27, 20, 194, 220, 89, 27, 183,
-			242, 27, 24, 225, 246, 41, 250, 218, 2, 22, 3, 19, 222, 242, 17, 11, 2, 218, 25, 32, 239, 197, 26, 70, 246, 233, 17, 23, 244, 221,
-			22, 32, 251, 213, 2, 45, 5, 211, 227, 250, 45, 3, 210, 26, 33, 214, 248, 41, 15, 210, 243, 44, 234, 0, 23, 241, 253, 255, 17, 236,
-			254, 44, 250, 210, 42, 37, 223, 217, 252, 32, 253, 5, 248, 234, 22, 31, 254, 238, 21, 4, 240, 0, 12, 4, 209, 14, 22, 16, 249, 216,
-			251, 2, 29, 236, 7, 21, 230, 24, 9, 254, 219, 7, 4, 6, 23, 211, 1, 30, 255, 243, 244, 25, 3, 210, 20, 49, 7, 190, 252, 76,
-			248, 200, 21, 73, 204, 235, 240, 6, 78, 242, 232, 254, 37, 202, 229, 55, 37, 214, 242, 25, 6, 223, 216, 49, 44, 235, 193, 24, 21, 3,
-			203, 255, 46, 246, 239, 2, 0, 36, 221, 0, 10, 248, 243, 5, 241, 19, 19, 200, 16, 33, 21, 30, 242, 1, 15, 6, 234, 244, 9, 11,
-			14, 231, 245, 14, 19, 236, 240, 37, 1, 247, 213, 0, 14, 246, 9, 36, 19, 208, 6, 1, 17, 25, 227, 236, 41, 12, 213, 230, 20, 29,
-			237, 255, 4, 15, 229, 249, 28, 227, 6, 238, 49, 0, 219, 255, 11, 251, 225, 10, 251, 45, 14, 219, 246, 33, 13, 213, 46, 44, 181, 225,
-			55, 37, 239, 213, 16, 54, 9, 212, 227, 19, 34, 25, 188, 233, 86, 249, 185, 36, 54, 224, 242, 24, 238, 254, 234, 254, 251, 11, 3, 216,
-			61, 239, 221, 6, 255, 39, 243, 15, 11, 211, 251, 33, 13, 5, 0, 244, 10, 24, 242, 238, 17, 238, 250, 8, 10, 21, 212, 0, 8, 22,
-			251, 252, 247, 29, 243, 216, 33, 246, 230, 25, 243, 33, 12, 226, 0, 19, 235, 11, 254, 244, 28, 238, 4, 21, 213, 12, 25, 14, 239, 8,
-			7, 233, 4, 242, 13, 5, 2, 240, 4, 22, 243, 241, 46, 0, 224, 3, 49, 1, 236, 227, 242, 37, 245, 253, 19, 233, 15, 250, 249, 255,
-			0, 12, 1, 247, 239, 235, 255, 45, 13, 228, 253, 26, 0, 207, 253, 57, 25, 203, 247, 63, 218, 251, 10, 250, 41, 245, 198, 53, 24, 245,
-			204, 15, 83, 231, 198, 28, 28, 223, 229, 20, 233, 17, 255, 225, 35, 6, 236, 240, 48, 18, 207, 248, 63, 246, 167, 48, 26, 247, 28, 217,
-			58, 241, 214, 48, 14, 210, 222, 57, 32, 211, 246, 1, 19, 243, 4, 197, 23, 72, 215, 221, 48, 31, 2, 240, 241, 227, 22, 240, 21, 254,
-			231, 32, 229, 228, 12, 16, 8, 241, 14, 7, 6, 7, 1, 22, 5, 4, 218, 8, 18, 234, 246, 245, 49, 31, 204, 0, 39, 248, 230, 36,
-			13, 217, 0, 238, 16, 21, 235, 230, 24, 25, 214, 232, 25, 15, 227, 241, 22, 24, 245, 248, 38, 10, 234, 16, 222, 19, 249, 229, 24, 237,
-			11, 230, 1, 39, 3, 224, 253, 56, 226, 240, 6, 12, 20, 231, 0, 11, 250, 15, 247, 241, 40, 237, 230, 19, 252, 16, 17, 1, 0, 8,
-			253, 239, 7, 43, 0, 243, 250, 18, 4, 199, 46, 5, 248, 213, 246, 12, 247, 249, 235, 31, 14, 241, 254, 28, 15, 232, 217, 40, 49, 204,
-			221, 43, 27, 241, 226, 222, 30, 27, 234, 219, 30, 0, 246, 46, 255, 13, 7, 7, 237, 0, 0, 238, 6, 12, 255, 233, 32, 5, 211, 254,
-			16, 251, 249, 21, 10, 240, 234, 14, 84, 250, 205, 11, 28, 0, 218, 217, 39, 20, 251, 225, 240, 45, 23, 227, 226, 62, 237, 236, 254, 6,
-			10, 231, 0, 10, 240, 6, 33, 250, 221, 7, 9, 14, 230, 243, 30, 20, 249, 251, 0, 10, 255, 2, 34, 251, 236, 255, 9, 9, 255, 229,
-			31, 24, 196, 245, 236, 58, 253, 224, 6, 30, 8, 221, 217, 65, 9, 179, 229, 39, 2, 0, 243, 24, 70, 7, 209, 10, 29, 3, 209, 237,
-			67, 250, 196, 11, 74, 253, 6, 202, 17, 69, 194, 214, 52, 51, 233, 196, 245, 54, 10, 220, 34, 207, 248, 243, 233, 50, 28, 233, 203, 251,
-			40, 36, 239, 246, 32, 244, 200, 15, 216, 0, 59, 245, 228, 251, 1, 14, 24, 0, 8, 248, 244, 35, 240, 33, 10, 232, 20, 25, 1, 252,
-			33, 7, 12, 206, 227, 77, 246, 209, 6, 18, 25, 11, 235, 223, 23, 218, 236, 5, 11, 216, 231, 0, 48, 237, 249, 252, 17, 37, 226, 181,
-			23, 68, 219, 10, 16, 241, 6, 1, 17, 19, 248, 249, 247, 1, 19, 232, 205, 39, 48, 235, 247, 255, 253, 22, 220, 236, 44, 38, 249, 236,
-			236, 19, 2, 243, 0, 19, 255, 29, 254, 248, 17, 45, 239, 247, 60, 21, 216, 231, 60, 12, 222, 40, 37, 215, 236, 237, 9, 34, 245, 220,
-			4, 205, 227, 0, 226, 209, 184, 204, 193, 137, 190, 251, 22, 29, 18, 28, 36, 86, 82, 53, 51, 56, 60, 18, 38, 16, 0, 86, 69, 246,
-			207, 20, 57, 233, 202, 1, 36, 253, 208, 196, 245, 12, 232, 193, 0, 28, 214, 187, 0, 252, 196, 211, 249, 252, 243, 240, 230, 43, 77, 2,
-			213, 244, 68, 8, 227, 243, 6, 48, 233, 211, 253, 65, 27, 212, 249, 58, 32, 224, 236, 41, 47, 29, 10, 253, 16, 20, 238, 248, 0, 19,
-			5, 239, 6, 243, 242, 20, 221, 232, 14, 28, 12, 206, 247, 252, 210, 247, 241, 0, 26, 252, 233, 24, 9, 14, 15, 8, 7, 4, 41, 7,
-			193, 12, 77, 30, 21, 228, 241, 13, 237, 217, 254, 5, 227, 224, 210, 9, 20, 226, 214, 224, 30, 11, 227, 234, 6, 18, 255, 8, 15, 21,
-			243, 19, 43, 23, 26, 240, 46, 27, 0, 30, 0, 7, 14, 253, 234, 5, 27, 242, 242, 6, 8, 246, 228, 252, 2, 15, 1, 245, 239, 13,
-			254, 240, 252, 0, 2, 236, 235, 249, 243, 0, 231, 227, 14, 25, 230, 238, 11, 244, 253, 15, 19, 16, 18, 5, 8, 240, 249, 14, 225, 7,
-			41, 250, 231, 9, 25, 7, 7, 12, 6, 20, 0, 232, 0, 3, 255, 3, 19, 21, 0, 244, 255, 27, 238, 231, 8, 0, 250, 248, 240, 4,
-			18, 3, 5, 14, 24, 248, 247, 7, 238, 234, 10, 8, 1, 12, 243, 247, 247, 233, 8, 8, 1, 255, 249, 248, 241, 252, 16, 245, 245, 7,
-			20, 240, 245, 18, 10, 254, 7, 6, 0, 0, 249, 236, 13, 21, 239, 248, 9, 15, 6, 0, 10, 4, 10, 12, 0, 246, 13, 248, 239, 253,
-			4, 2, 246, 16, 253, 238, 2, 11, 252, 251, 17, 16, 253, 11, 7, 245, 0, 2, 6, 254, 251, 236, 0, 6, 239, 249, 0, 249, 1, 8,
-			242, 246, 7, 254, 1, 7, 252, 8, 13, 252, 1, 7, 21, 0, 171, 8, 22, 0, 3, 245, 0, 3, 242, 235, 252, 14, 28, 16, 241, 248,
-			2, 4, 237, 225, 245, 4, 0, 242, 9, 34, 7, 247, 5, 28, 5, 2, 239, 24, 30, 4, 241, 238, 7, 241, 230, 247, 242, 223, 12, 10,
-			2, 14, 249, 252, 36, 35, 244, 241, 18, 16, 8, 230, 248, 17, 22, 2, 221, 238, 10, 240, 218, 234, 36, 56, 244, 217, 249, 33, 28, 232,
-			253, 35, 29, 3, 240, 223, 254, 8, 9, 253, 229, 251, 6, 9, 5, 4, 9, 5, 18, 242, 223, 2, 230, 241, 14, 10, 34, 35, 245, 0,
-			9, 14, 0, 224, 229, 6, 4, 6, 248, 243, 14, 15, 245, 204, 23, 38, 4, 255, 3, 18, 24, 235, 255, 14, 239, 3, 208, 210, 4, 37,
-			31, 10, 241, 8, 12, 11, 18, 244, 253, 240, 254, 251, 237, 9, 30, 11, 228, 245, 9, 16, 230, 225, 244, 5, 12, 32, 51, 0, 227, 15,
-			30, 4, 247, 247, 242, 230, 249, 19, 3, 248, 252, 220, 222, 54, 8, 218, 248, 28, 45, 31, 244, 247, 37, 220, 2, 15, 244, 244, 17, 13,
-			243, 232, 8, 39, 177, 206, 76, 250, 211, 249, 16, 39, 18, 251, 0, 0, 42, 34, 220, 244, 6, 232, 238, 1, 23, 54, 237, 190, 13, 20,
-			226, 242, 2, 13, 227, 246, 42, 16, 9, 0, 253, 23, 24, 232, 249, 246, 235, 14, 20, 247, 239, 47, 2, 218, 251, 17, 13, 244, 233, 229,
-			6, 34, 250, 236, 255, 18, 245, 7, 6, 0, 10, 32, 5, 237, 6, 1, 5, 18, 16, 246, 221, 239, 4, 244, 241, 249, 13, 235, 218, 18,
-			33, 3, 42, 20, 11, 13, 232, 239, 5, 30, 255, 229, 1, 25, 21, 200, 237, 25, 225, 208, 245, 7, 9, 40, 23, 3, 27, 44, 231, 236,
-			25, 245, 231, 236, 246, 244, 35, 16, 217, 13, 18, 255, 6, 25, 200, 237, 44, 21, 220, 250, 37, 234, 16, 23, 231, 229, 238, 6, 233, 44,
-			32, 244, 254, 247, 40, 38, 244, 209, 247, 3, 243, 226, 254, 41, 26, 222, 254, 21, 34, 0, 185, 232, 32, 40, 12, 206, 215, 72, 33, 222,
-			6, 19, 239, 254, 1, 242, 1, 5, 29, 14, 220, 248, 35, 233, 252, 210, 239, 21, 234, 28, 37, 230, 34, 23, 242, 38, 0, 5, 248, 194,
-			234, 24, 48, 253, 192, 1, 25, 255, 240, 227, 13, 60, 244, 198, 38, 47, 38, 241, 202, 19, 44, 227, 207, 232, 42, 15, 207, 2, 20, 17,
-			252, 247, 242, 21, 47, 7, 247, 241, 232, 12, 64, 238, 156, 8, 35, 206, 53, 14, 167, 61, 65, 188, 240, 38, 67, 233, 208, 28, 2, 19,
-			13, 207, 1, 253, 208, 12, 243, 220, 81, 37, 227, 10, 232, 17, 25, 12, 2, 175, 19, 66, 200, 207, 74, 23, 222, 27, 210, 226, 40, 226,
-			243, 87, 26, 203, 243, 21, 41, 10, 202, 244, 0, 3, 236, 247, 251, 253, 34, 16, 254, 7, 8, 229, 236, 30, 74, 7, 177, 231, 49, 233,
-			224, 36, 255, 228, 22, 251, 6, 54, 178, 16, 45, 213, 6, 38, 212, 230, 71, 26, 3, 215, 232, 11, 209, 219, 86, 50, 193, 219, 65, 77,
-			218, 168, 10, 44, 15, 235, 0, 239, 232, 68, 242, 197, 35, 30, 189, 4, 49, 34, 214, 205, 33, 71, 10, 181, 223, 47, 28, 249, 23, 10,
-			180, 2, 28, 235, 44, 11, 223, 222, 250, 32, 20, 212, 213, 47, 59, 254, 248, 249, 15, 221, 6, 46, 244, 236, 34, 236, 215, 36, 239, 215,
-			20, 57, 211, 231, 43, 226, 17, 55, 3, 213, 254, 20, 203, 32, 38, 182, 216, 103, 54, 197, 18, 18, 201, 243, 60, 208, 240, 1, 206, 27,
-			61, 47, 224, 196, 229, 40, 81, 242, 190, 238, 15, 51, 25, 229, 248, 216, 40, 56, 175, 240, 0, 4, 250, 231, 81, 60, 166, 182, 75, 68,
-			248, 176, 4, 52, 237, 251, 245, 34, 29, 206, 220, 4, 77, 205, 220, 1, 58, 23, 200, 238, 56, 70, 198, 208, 48, 35, 187, 197, 47, 50,
-			225, 183, 43, 92, 223, 232, 17, 24, 232, 220, 235, 24, 40, 226, 5, 255, 49, 241, 210, 24, 21, 237, 1, 251, 215, 46, 32, 217, 244, 25,
-			18, 236, 20, 221, 231, 17, 38, 0, 203, 29, 29, 250, 229, 18, 26, 254, 33, 203, 249, 12, 254, 238, 251, 39, 243, 232, 246, 19, 7, 255,
-			28, 214, 62, 27, 169, 2, 19, 24, 37, 193, 224, 87, 246, 247, 204, 210, 94, 254, 200, 246, 17, 58, 248, 239, 8, 27, 23, 178, 254, 71,
-			255, 207, 220, 36, 58, 239, 146, 252, 123, 3, 192, 252, 252, 53, 8, 196, 38, 27, 240, 16, 231, 213, 72, 34, 195, 234, 236, 11, 43, 224,
-			1, 10, 228, 50, 20, 174, 251, 63, 255, 253, 1, 51, 1, 229, 209, 251, 55, 15, 195, 228, 45, 37, 224, 176, 27, 78, 224, 232, 11, 37,
-			12, 1, 225, 237, 255, 46, 35, 216, 246, 24, 1, 211, 249, 241, 20, 46, 233, 238, 19, 26, 245, 227, 248, 8, 24, 227, 5, 55, 202, 15,
-			17, 219, 23, 20, 12, 211, 222, 38, 70, 11, 207, 205, 41, 40, 219, 238, 232, 255, 31, 244, 196, 46, 93, 220, 205, 236, 75, 56, 173, 217,
-			56, 48, 236, 189, 244, 60, 18, 249, 0, 209, 1, 40, 229, 240, 14, 234, 233, 33, 14, 1, 2, 16, 255, 1, 31, 245, 7, 228, 245, 41,
-			24, 242, 224, 233, 228, 16, 41, 247, 181, 21, 26, 10, 7, 230, 72, 41, 204, 237, 50, 248, 249, 176, 189, 117, 70, 167, 180, 59, 110, 240,
-			200, 235, 19, 28, 233, 207, 247, 70, 40, 195, 197, 76, 79, 188, 203, 250, 46, 9, 194, 4, 37, 64, 249, 211, 34, 0, 245, 251, 212, 18,
-			15, 213, 13, 9, 228, 17, 75, 246, 186, 21, 66, 238, 216, 203, 30, 94, 220, 210, 33, 6, 14, 18, 173, 27, 65, 141, 249, 74, 13, 22,
-			219, 240, 28, 1, 21, 244, 195, 29, 7, 211, 38, 255, 240, 62, 240, 243, 79, 232, 205, 251, 247, 23, 241, 31, 15, 205, 245, 255, 34, 5,
-			209, 254, 12, 14, 11, 236, 19, 20, 9, 20, 231, 7, 55, 216, 215, 3, 34, 232, 195, 28, 246, 250, 54, 226, 249, 52, 226, 255, 255, 236,
-			30, 2, 41, 40, 172, 27, 63, 214, 161, 14, 99, 234, 203, 187, 48, 91, 206, 176, 27, 89, 23, 211, 209, 28, 25, 215, 232, 67, 59, 250,
-			170, 8, 94, 216, 172, 239, 47, 50, 239, 230, 227, 14, 37, 194, 1, 61, 42, 238, 188, 10, 36, 249, 3, 225, 45, 53, 202, 196, 18, 101,
-			247, 156, 231, 46, 50, 232, 204, 15, 27, 42, 232, 176, 32, 70, 240, 193, 5, 50, 70, 236, 184, 240, 27, 23, 2, 225, 7, 15, 13, 28,
-			226, 216, 0, 35, 227, 245, 5, 20, 233, 236, 32, 9, 18, 32, 229, 250, 81, 247, 162, 2, 58, 254, 210, 230, 22, 255, 244, 249, 243, 49,
-			27, 204, 3, 59, 22, 193, 211, 67, 254, 17, 1, 202, 16, 61, 215, 227, 51, 0, 223, 203, 40, 52, 169, 49, 29, 192, 55, 16, 198, 252,
-			53, 30, 207, 196, 34, 26, 28, 19, 211, 6, 43, 226, 220, 251, 24, 2, 238, 247, 22, 249, 7, 25, 209, 46, 20, 196, 27, 26, 185, 8,
-			30, 235, 3, 42, 25, 217, 2, 4, 5, 3, 252, 226, 5, 55, 222, 193, 50, 41, 4, 211, 208, 24, 74, 247, 135, 16, 112, 255, 175, 9,
-			75, 43, 192, 198, 101, 31, 158, 227, 39, 43, 225, 237, 249, 26, 37, 225, 166, 23, 66, 216, 220, 30, 32, 0, 2, 48, 248, 13, 40, 199,
-			202, 71, 246, 198, 24, 19, 235, 227, 10, 34, 25, 219, 210, 208, 63, 35, 228, 21, 245, 16, 48, 26, 207, 7, 34, 212, 0, 20, 236, 2,
-			10, 218, 233, 27, 3, 223, 242, 34, 19, 14, 240, 230, 20, 24, 4, 4, 14, 245, 250, 15, 2, 233, 2, 25, 208, 253, 62, 224, 232, 11,
-			221, 35, 51, 197, 234, 51, 214, 0, 245, 43, 65, 154, 21, 68, 221, 23, 251, 237, 26, 237, 240, 39, 209, 221, 13, 242, 67, 29, 201, 225,
-			30, 37, 233, 223, 250, 79, 242, 192, 33, 8, 24, 7, 215, 255, 57, 242, 213, 20, 241, 25, 247, 219, 42, 0, 254, 233, 214, 30, 43, 248,
-			218, 42, 19, 218, 249, 33, 22, 0, 210, 27, 16, 213, 30, 5, 208, 11, 250, 14, 67, 223, 194, 42, 255, 220, 29, 226, 1, 76, 255, 178,
-			32, 74, 245, 207, 219, 17, 83, 238, 176, 246, 47, 42, 230, 194, 5, 58, 29, 213, 190, 39, 107, 231, 131, 39, 113, 240, 141, 2, 84, 15,
-			223, 193, 32, 59, 245, 218, 250, 41, 33, 232, 181, 48, 24, 217, 228, 237, 74, 48, 174, 245, 52, 0, 247, 233, 249, 73, 246, 203, 38, 7,
-			249, 21, 249, 211, 1, 44, 230, 227, 10, 254, 4, 254, 26, 245, 228, 9, 43, 4, 217, 3, 64, 251, 234, 22, 254, 4, 236, 237, 20, 249,
-			212, 19, 0, 226, 55, 236, 196, 53, 44, 209, 248, 29, 9, 24, 252, 9, 19, 0, 236, 231, 244, 33, 1, 221, 25, 240, 233, 17, 246, 236,
-			3, 25, 15, 4, 237, 2, 38, 254, 249, 12, 255, 6, 231, 250, 37, 242, 253, 12, 209, 237, 42, 49, 204, 224, 30, 3, 246, 255, 30, 233,
-			239, 17, 17, 17, 0, 245, 9, 12, 3, 230, 2, 251, 3, 8, 221, 4, 55, 202, 0, 23, 230, 59, 201, 206, 97, 33, 198, 227, 18, 45,
-			1, 213, 17, 38, 228, 202, 21, 42, 232, 241, 8, 5, 28, 20, 213, 229, 40, 17, 228, 251, 12, 231, 19, 11, 236, 6, 35, 10, 198, 251,
-			47, 247, 232, 23, 4, 238, 27, 2, 225, 10, 20, 223, 250, 60, 239, 209, 12, 3, 230, 61, 30, 157, 18, 58, 251, 244, 218, 32, 28, 211,
-			16, 31, 235, 20, 6, 209, 7, 239, 0, 34, 221, 238, 51, 4, 225, 23, 7, 248, 7, 3, 244, 15, 13, 248, 12, 0, 22, 238, 215, 231,
-			21, 14, 232, 227, 33, 53, 197, 248, 59, 241, 241, 40, 10, 247, 0, 26, 13, 186, 13, 30, 189, 21, 9, 197, 55, 31, 237, 237, 225, 49,
-			16, 213, 31, 18, 240, 19, 236, 253, 59, 252, 181, 243, 71, 14, 187, 237, 40, 28, 248, 236, 2, 6, 248, 12, 6, 230, 16, 10, 228, 4,
-			18, 251, 7, 32, 248, 202, 21, 41, 1, 234, 244, 22, 235, 249, 21, 246, 10, 3, 239, 239, 23, 32, 193, 212, 70, 42, 222, 253, 17, 23,
-			237, 225, 18, 24, 24, 204, 227, 62, 20, 197, 234, 25, 24, 12, 224, 250, 18, 249, 8, 231, 255, 52, 240, 225, 9, 21, 24, 235, 220, 31,
-			44, 212, 227, 37, 24, 243, 0, 2, 226, 245, 4, 238, 25, 38, 233, 227, 17, 254, 16, 13, 226, 12, 29, 243, 221, 36, 47, 208, 233, 17,
-			18, 0, 234, 250, 1, 18, 3, 221, 0, 25, 2, 230, 252, 19, 24, 10, 234, 2, 46, 236, 218, 9, 232, 54, 23, 179, 4, 48, 245, 253,
-			232, 0, 44, 245, 224, 7, 253, 15, 5, 207, 28, 73, 226, 239, 245, 6, 55, 224, 205, 33, 9, 10, 226, 232, 36, 234, 20, 32, 221, 245,
-			22, 236, 250, 41, 248, 230, 32, 20, 227, 231, 16, 46, 238, 215, 21, 10, 10, 0, 228, 230, 50, 10, 218, 5, 0, 254, 11, 0, 242, 21,
-			26, 215, 222, 84, 47, 185, 232, 28, 15, 246, 243, 252, 217, 14, 25, 244, 236, 29, 39, 192, 8, 59, 247, 243, 246, 20, 6, 228, 250, 39,
-			227, 250, 26, 246, 21, 226, 224, 22, 24, 3, 226, 231, 50, 21, 217, 252, 32, 16, 243, 228, 23, 56, 201, 201, 36, 14, 23, 248, 213, 31,
-			14, 243, 3, 218, 12, 41, 238, 224, 22, 12, 10, 243, 233, 36, 13, 244, 252, 237, 26, 27, 219, 240, 25, 9, 248, 235, 247, 17, 12, 238,
-			246, 27, 10, 242, 246, 6, 22, 239, 6, 28, 236, 234, 1, 36, 11, 219, 248, 26, 245, 2, 4, 225, 19, 6, 252, 243, 0, 9, 33, 233,
-			217, 76, 11, 201, 255, 39, 240, 245, 245, 22, 10, 228, 16, 251, 253, 27, 231, 219, 54, 0, 229, 7, 18, 11, 233, 249, 14, 20, 247, 230,
-			18, 6, 10, 245, 220, 43, 0, 229, 5, 16, 18, 244, 240, 240, 21, 27, 222, 254, 14, 244, 10, 17, 242, 253, 17, 3, 0, 239, 1, 9,
-			246, 236, 16, 15, 253, 0, 233, 30, 19, 235, 246, 248, 28, 3, 220, 7, 6, 26, 0, 211, 21, 32, 249, 236, 247, 22, 14, 241, 244, 251,
-			22, 250, 244, 14, 252, 247, 5, 1, 14, 1, 238, 24, 4, 236, 5, 10, 243, 0, 153, 7, 51, 0, 12, 9, 4, 3, 255, 18, 20, 238,
-			7, 32, 4, 241, 4, 14, 2, 0, 26, 2, 233, 1, 17, 25, 12, 237, 252, 34, 14, 245, 252, 5, 24, 12, 3, 237, 251, 36, 2, 233,
-			0, 24, 13, 237, 246, 21, 9, 7, 3, 249, 17, 13, 251, 9, 9, 10, 11, 241, 12, 33, 235, 234, 33, 26, 234, 253, 23, 6, 254, 2,
-			11, 6, 6, 16, 13, 249, 12, 22, 0, 8, 9, 249, 1, 11, 4, 255, 12, 11, 2, 255, 5, 32, 11, 244, 16, 29, 4, 244, 11, 23,
-			244, 0, 36, 3, 247, 1, 251, 3, 40, 16, 228, 0, 28, 16, 251, 251, 13, 22, 9, 0, 238, 5, 35, 2, 253, 4, 2, 11, 8, 236,
-			245, 23, 27, 251, 246, 254, 10, 13, 7, 234, 10, 55, 243, 220, 4, 13, 21, 20, 232, 233, 24, 22, 252, 242, 12, 24, 250, 245, 255, 8,
-			12, 8, 248, 6, 25, 13, 233, 251, 35, 27, 239, 245, 15, 26, 0, 247, 13, 12, 3, 3, 250, 253, 7, 15, 3, 254, 13, 250, 235, 14,
-			14, 0, 25, 230, 252, 45, 243, 0, 29, 3, 0, 255, 12, 5, 252, 251, 28, 22, 235, 4, 21, 250, 10, 6, 253, 20, 19, 254, 253, 24,
-			22, 251, 0, 11, 7, 1, 0, 6, 250, 0, 33, 3, 236, 253, 16, 16, 252, 249, 3, 7, 21, 8, 242, 14, 25, 239, 14, 13, 232, 5,
-			17, 20, 8, 241, 245, 28, 8, 246, 17, 5, 3, 5, 246, 252, 14, 20, 10, 221, 16, 57, 238, 239, 3, 12, 26, 240, 253, 1, 248, 31,
-			4, 229, 25, 17, 249, 252, 21, 22, 241, 253, 18, 3, 255, 0, 251, 27, 6, 217, 19, 7, 244, 22, 245, 247, 12, 8, 254, 19, 6, 246,
-			10, 11, 8, 0, 234, 4, 27, 2, 254, 244, 13, 48, 1, 233, 3, 25, 5, 249, 1, 35, 6, 1, 7, 237, 24, 39, 249, 231, 22, 27,
-			242, 247, 17, 7, 11, 31, 234, 251, 22, 9, 20, 244, 250, 32, 247, 5, 21, 0, 21, 247, 246, 25, 5, 2, 25, 11, 243, 20, 13, 246,
-			23, 253, 6, 29, 253, 4, 17, 1, 10, 253, 250, 19, 5, 255, 0, 250, 21, 35, 233, 243, 32, 37, 254, 235, 13, 19, 0, 0, 255, 19,
-			255, 247, 22, 4, 250, 13, 249, 245, 31, 2, 250, 2, 254, 0, 38, 29, 231, 248, 32, 13, 241, 6, 6, 238, 20, 229, 227, 58, 16, 212,
-			253, 27, 12, 230, 253, 34, 20, 1, 240, 246, 7, 26, 9, 244, 252, 253, 249, 6, 4, 10, 0, 13, 15, 5, 254, 248, 30, 48, 225, 220,
-			42, 13, 252, 237, 215, 31, 68, 245, 218, 13, 55, 23, 197, 244, 52, 41, 253, 232, 2, 28, 17, 242, 0, 17, 255, 0, 245, 10, 43, 245,
-			220, 21, 59, 237, 223, 31, 38, 4, 244, 232, 19, 33, 2, 248, 243, 28, 20, 253, 252, 242, 37, 19, 214, 13, 24, 0, 12, 7, 239, 14,
-			27, 229, 250, 24, 7, 1, 241, 255, 33, 5, 233, 247, 40, 36, 245, 236, 2, 36, 17, 240, 251, 251, 14, 30, 240, 228, 21, 15, 8, 8,
-			228, 5, 43, 248, 253, 22, 19, 249, 238, 7, 28, 18, 222, 252, 21, 15, 4, 241, 238, 22, 19, 244, 248, 11, 3, 238, 43, 29, 236, 0,
-			17, 43, 7, 227, 18, 16, 6, 21, 227, 231, 31, 25, 244, 245, 244, 24, 21, 235, 0, 29, 2, 3, 18, 236, 252, 40, 0, 241, 9, 255,
-			31, 11, 214, 6, 27, 4, 248, 243, 246, 39, 9, 229, 8, 21, 9, 14, 244, 232, 30, 32, 248, 239, 3, 13, 239, 11, 16, 233, 11, 35,
-			250, 244, 24, 18, 235, 8, 30, 10, 241, 250, 32, 1, 255, 20, 244, 249, 28, 19, 247, 0, 10, 3, 18, 22, 218, 7, 42, 249, 5, 13,
-			244, 0, 247, 5, 31, 255, 251, 3, 5, 4, 10, 0, 3, 31, 242, 241, 13, 28, 6, 236, 21, 45, 250, 235, 12, 21, 15, 246, 6, 24,
-			251, 244, 254, 23, 13, 226, 254, 41, 239, 0, 26, 235, 7, 29, 255, 233, 229, 49, 22, 218, 10, 10, 2, 25, 254, 228, 14, 25, 243, 250,
-			6, 1, 9, 251, 250, 32, 255, 247, 31, 245, 242, 20, 10, 246, 30, 27, 222, 236, 46, 24, 209, 4, 30, 249, 0, 15, 236, 244, 36, 29,
-			240, 254, 35, 3, 241, 10, 9, 0, 222, 8, 41, 251, 211, 7, 43, 249, 252, 240, 245, 46, 6, 247, 5, 250, 43, 250, 213, 41, 28, 233,
-			6, 12, 38, 4, 211, 22, 51, 245, 233, 248, 29, 41, 249, 228, 0, 59, 36, 217, 239, 31, 20, 27, 222, 215, 62, 2, 211, 250, 37, 21,
-			243, 238, 2, 26, 5, 3, 0, 254, 3, 255, 5, 251, 15, 243, 254, 34, 13, 246, 255, 19, 24, 249, 230, 3, 35, 14, 244, 254, 8, 34,
-			13, 9, 251, 218, 18, 64, 222, 195, 14, 26, 24, 232, 235, 14, 11, 8, 236, 234, 56, 20, 204, 21, 36, 249, 8, 249, 249, 25, 237, 255,
-			18, 240, 14, 12, 230, 31, 41, 252, 227, 13, 29, 250, 229, 12, 37, 1, 235, 18, 245, 235, 67, 9, 227, 5, 11, 243, 9, 15, 246, 9,
-			21, 10, 248, 252, 251, 41, 37, 241, 248, 254, 11, 37, 18, 239, 5, 15, 20, 10, 250, 10, 6, 250, 27, 2, 237, 22, 0, 0, 26, 243,
-			1, 33, 231, 9, 46, 235, 245, 9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232, 20, 58, 246, 195, 11, 40, 18, 2, 200,
-			0, 60, 42, 225, 219, 32, 32, 4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230, 5, 26, 236, 255, 19, 8, 10, 21, 242,
-			238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250, 17, 31,
-			237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41, 222, 179,
-			29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60, 21, 231,
-			223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20, 17, 255,
-			249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13, 250, 243,
-			235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0, 48, 2,
-			226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37, 1, 239,
-			244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236, 32, 21,
-			237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243, 6, 2,
-			255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237, 51, 19,
-			232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1, 221, 31,
-			13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182, 1, 59,
-			19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3, 6, 30,
-			240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11, 20, 4,
-			254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234, 51, 249,
-			218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221, 212, 253,
-			34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173, 65, 92,
-			206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227, 0, 70,
-			241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247, 42, 228,
-			208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57, 5, 221,
-			250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228, 58, 252,
-			236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32, 252, 232,
-			42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233, 233, 48,
-			3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223, 11, 33,
-			246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247, 237, 7,
-			17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12, 1, 17,
-			6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38, 239, 12,
-			56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21, 222, 219, 35, 42, 215, 255, 7, 6, 40, 0, 188, 15, 76, 245, 193, 29,
-			25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13, 11, 247, 16, 19, 2, 239, 204, 71, 69, 188, 229, 30, 35, 0, 2, 14,
-			236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23, 237, 4, 46, 204, 233, 66, 250, 217, 22, 41, 2, 225, 27, 47, 234, 252,
-			10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18, 53, 242, 10, 6, 234, 30, 19, 235, 9, 42, 242, 224, 32, 0, 243, 16,
-			251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23, 249, 239, 13, 0, 0, 0, 172, 10, 36, 0, 2, 26, 14, 253, 249, 242,
-			249, 12, 10, 245, 245, 5, 17, 11, 247, 248, 3, 4, 242, 243, 251, 13, 38, 2, 239, 229, 238, 18, 32, 29, 251, 215, 251, 10, 254, 22,
-			5, 236, 0, 253, 249, 4, 245, 17, 37, 235, 225, 25, 14, 241, 235, 238, 21, 50, 5, 223, 245, 255, 4, 21, 251, 250, 15, 8, 224, 230,
-			4, 10, 6, 25, 39, 242, 232, 242, 238, 21, 16, 0, 249, 237, 8, 23, 246, 248, 2, 6, 15, 248, 241, 248, 246, 251, 24, 41, 19, 244,
-			218, 239, 0, 2, 23, 20, 229, 0, 16, 249, 252, 251, 243, 248, 2, 1, 17, 32, 19, 246, 233, 244, 16, 231, 228, 23, 35, 20, 0, 20,
-			236, 198, 228, 14, 29, 248, 3, 25, 26, 11, 227, 236, 252, 246, 5, 19, 20, 252, 238, 24, 15, 247, 249, 243, 236, 249, 14, 252, 0, 23,
-			15, 248, 228, 10, 11, 242, 244, 9, 42, 21, 247, 244, 220, 240, 21, 0, 254, 15, 14, 15, 234, 224, 255, 249, 249, 16, 32, 43, 13, 223,
-			209, 247, 27, 0, 248, 17, 23, 230, 215, 19, 42, 7, 253, 240, 228, 6, 255, 239, 29, 31, 27, 36, 223, 163, 202, 26, 61, 27, 12, 10,
-			4, 252, 222, 193, 239, 45, 44, 31, 40, 247, 167, 198, 37, 52, 11, 217, 226, 43, 54, 247, 244, 233, 231, 235, 228, 25, 94, 53, 235, 211,
-			190, 221, 25, 43, 37, 12, 245, 18, 16, 205, 169, 212, 34, 75, 50, 27, 0, 213, 227, 2, 255, 248, 0, 5, 6, 11, 48, 25, 221, 218,
-			225, 242, 7, 8, 9, 36, 25, 249, 230, 224, 4, 5, 4, 8, 42, 9, 216, 243, 25, 29, 239, 241, 17, 237, 208, 240, 19, 48, 30, 242,
-			252, 7, 251, 245, 217, 201, 23, 75, 51, 20, 238, 222, 229, 249, 240, 242, 24, 28, 3, 2, 250, 251, 16, 248, 236, 237, 1, 46, 22, 246,
-			205, 235, 25, 24, 30, 254, 16, 14, 209, 230, 12, 235, 226, 28, 40, 7, 0, 19, 4, 225, 223, 5, 16, 251, 10, 9, 4, 4, 252, 18,
-			252, 235, 226, 238, 14, 53, 51, 249, 205, 211, 250, 13, 5, 15, 42, 31, 245, 215, 219, 239, 14, 42, 9, 253, 23, 17, 224, 212, 246, 3,
-			244, 20, 46, 4, 227, 22, 41, 230, 216, 253, 241, 255, 35, 11, 1, 248, 241, 9, 244, 248, 58, 15, 206, 221, 11, 58, 253, 218, 0, 0,
-			238, 250, 69, 21, 189, 239, 53, 31, 242, 242, 236, 199, 219, 40, 71, 35, 20, 8, 189, 203, 19, 255, 243, 1, 21, 51, 43, 30, 180, 141,
-			25, 52, 245, 4, 33, 29, 0, 233, 234, 239, 238, 36, 57, 222, 223, 44, 14, 218, 222, 252, 5, 30, 34, 14, 10, 240, 224, 222, 229, 12,
-			36, 20, 11, 16, 247, 222, 252, 26, 6, 216, 214, 49, 76, 18, 228, 183, 215, 33, 38, 237, 29, 77, 232, 131, 206, 37, 69, 55, 38, 242,
-			198, 227, 251, 28, 15, 217, 222, 26, 27, 12, 47, 253, 196, 240, 29, 254, 224, 1, 37, 1, 245, 55, 7, 193, 204, 250, 40, 76, 26, 179,
-			232, 32, 240, 244, 36, 37, 239, 225, 242, 7, 39, 252, 200, 221, 37, 51, 7, 247, 253, 7, 16, 1, 230, 214, 234, 254, 56, 71, 17, 223,
-			200, 215, 246, 54, 47, 232, 218, 27, 39, 244, 197, 231, 43, 49, 0, 232, 2, 1, 243, 251, 17, 29, 2, 219, 208, 1, 55, 38, 223, 170,
-			254, 106, 48, 226, 246, 252, 213, 218, 6, 43, 49, 0, 198, 246, 25, 8, 10, 252, 234, 249, 24, 33, 11, 192, 196, 54, 52, 10, 241, 196,
-			237, 9, 26, 55, 14, 2, 10, 212, 209, 24, 18, 238, 247, 0, 29, 16, 241, 255, 0, 239, 241, 251, 0, 248, 40, 71, 4, 241, 8, 214,
-			166, 242, 68, 43, 255, 242, 0, 8, 249, 230, 231, 3, 41, 66, 10, 218, 210, 230, 244, 253, 60, 68, 237, 208, 249, 2, 243, 251, 255, 28,
-			37, 254, 226, 5, 17, 220, 218, 14, 29, 13, 15, 12, 241, 246, 12, 243, 227, 6, 14, 248, 36, 15, 217, 248, 250, 254, 34, 39, 245, 223,
-			224, 216, 8, 87, 68, 234, 233, 227, 222, 227, 244, 239, 9, 94, 46, 27, 18, 171, 146, 239, 30, 26, 60, 80, 5, 182, 198, 244, 42, 24,
-			219, 249, 45, 42, 224, 218, 18, 253, 227, 251, 17, 21, 244, 238, 36, 25, 241, 10, 28, 237, 211, 206, 237, 61, 79, 255, 230, 20, 235, 201,
-			232, 25, 49, 253, 222, 17, 0, 218, 20, 39, 12, 251, 227, 18, 23, 216, 219, 12, 11, 67, 18, 211, 4, 234, 234, 11, 9, 248, 241, 0,
-			19, 15, 0, 10, 8, 243, 240, 249, 29, 5, 242, 8, 252, 240, 23, 7, 219, 254, 34, 254, 242, 31, 14, 221, 233, 230, 235, 25, 61, 37,
-			250, 12, 245, 196, 221, 0, 35, 38, 3, 243, 220, 254, 56, 30, 217, 225, 2, 5, 230, 238, 66, 41, 220, 7, 236, 202, 28, 43, 239, 16,
-			23, 224, 227, 38, 26, 202, 217, 22, 34, 23, 254, 250, 255, 229, 241, 31, 20, 250, 12, 251, 228, 241, 235, 16, 52, 252, 254, 2, 8, 11,
-			218, 199, 25, 79, 0, 192, 251, 34, 13, 0, 3, 13, 241, 221, 215, 12, 39, 31, 63, 246, 171, 222, 31, 21, 19, 236, 241, 33, 0, 217,
-			37, 5, 209, 247, 18, 75, 29, 200, 189, 18, 23, 204, 8, 76, 54, 227, 203, 14, 7, 189, 244, 58, 0, 3, 67, 32, 196, 190, 202, 223,
-			37, 114, 93, 19, 173, 159, 193, 3, 78, 75, 10, 223, 254, 237, 231, 237, 6, 35, 251, 2, 43, 251, 214, 234, 20, 27, 11, 252, 221, 246,
-			252, 250, 42, 64, 0, 205, 239, 248, 237, 33, 27, 216, 235, 18, 10, 0, 32, 10, 228, 7, 16, 250, 226, 244, 8, 236, 0, 44, 13, 1,
-			54, 21, 170, 178, 226, 19, 73, 73, 28, 211, 209, 253, 11, 227, 189, 25, 95, 39, 248, 245, 218, 223, 244, 252, 10, 42, 38, 14, 246, 190,
-			215, 6, 12, 53, 73, 8, 207, 212, 229, 223, 230, 63, 89, 22, 231, 229, 211, 197, 254, 42, 63, 34, 8, 0, 223, 212, 228, 245, 21, 49,
-			51, 240, 196, 239, 15, 20, 247, 2, 7, 245, 240, 18, 32, 0, 245, 5, 5, 224, 237, 26, 7, 245, 16, 25, 0, 222, 233, 13, 33, 244,
-			244, 1, 6, 248, 239, 23, 24, 239, 14, 24, 227, 225, 10, 250, 251, 32, 50, 244, 217, 247, 239, 238, 2, 43, 50, 20, 227, 207, 193, 252,
-			26, 36, 37, 38, 24, 243, 197, 208, 246, 232, 21, 94, 64, 211, 187, 0, 20, 245, 209, 24, 69, 248, 238, 242, 238, 10, 241, 255, 37, 55,
-			251, 181, 244, 11, 32, 39, 243, 226, 233, 20, 9, 223, 254, 29, 5, 253, 12, 20, 11, 223, 197, 244, 22, 64, 66, 210, 187, 1, 27, 21,
-			0, 254, 252, 248, 248, 19, 250, 185, 5, 106, 55, 207, 205, 237, 229, 2, 32, 9, 5, 35, 32, 232, 218, 23, 230, 182, 0, 67, 73, 19,
-			233, 212, 202, 20, 27, 225, 249, 38, 24, 232, 252, 54, 23, 216, 208, 234, 255, 10, 38, 6, 239, 38, 21, 222, 223, 2, 6, 244, 16, 61,
-			3, 198, 242, 23, 255, 221, 4, 52, 10, 218, 218, 31, 60, 255, 231, 226, 235, 16, 255, 237, 38, 65, 0, 204, 233, 255, 6, 19, 19, 253,
-			252, 9, 211, 211, 1, 27, 54, 50, 1, 199, 215, 14, 13, 252, 7, 24, 27, 229, 214, 27, 21, 232, 239, 13, 11, 245, 250, 14, 23, 5,
-			5, 249, 220, 224, 255, 42, 44, 0, 242, 245, 232, 251, 25, 23, 243, 209, 237, 31, 59, 42, 254, 222, 205, 219, 254, 25, 44, 10, 230, 13,
-			30, 214, 214, 26, 35, 15, 241, 236, 250, 25, 13, 224, 249, 31, 13, 6, 225, 223, 27, 31, 225, 249, 42, 234, 255, 1, 233, 0, 20, 23,
-			11, 248, 227, 236, 4, 26, 23, 240, 253, 20, 251, 248, 234, 236, 41, 60, 242, 220, 232, 235, 249, 31, 30, 247, 252, 20, 235, 211, 17, 48,
-			8, 231, 31, 16, 225, 238, 250, 3, 229, 12, 75, 6, 199, 227, 7, 11, 25, 17, 231, 212, 247, 70, 22, 226, 18, 6, 201, 228, 42, 55,
-			243, 210, 10, 41, 242, 235, 16, 0, 220, 215, 16, 69, 24, 251, 246, 235, 220, 252, 27, 15, 243, 2, 29, 25, 254, 219, 221, 247, 11, 6,
-			5, 53, 45, 229, 180, 232, 56, 10, 218, 1, 30, 8, 242, 248, 35, 12, 204, 203, 15, 61, 52, 4, 216, 240, 12, 246, 201, 3, 62, 5,
-			232, 18, 38, 241, 187, 228, 21, 21, 46, 33, 217, 227, 38, 2, 215, 255, 11, 236, 0, 45, 44, 240, 226, 234, 241, 243, 253, 56, 27, 223,
-			4, 255, 249, 3, 255, 255, 2, 235, 9, 48, 245, 222, 235, 247, 41, 57, 17, 228, 198, 231, 255, 245, 10, 46, 62, 1, 242, 238, 211, 224,
-			0, 16, 24, 21, 39, 31, 218, 187, 223, 26, 50, 255, 239, 5, 248, 249, 23, 17, 245, 246, 31, 10, 213, 234, 23, 4, 229, 255, 43, 36,
-			228, 211, 15, 33, 228, 226, 30, 25, 243, 11, 0, 236, 14, 7, 240, 241, 2, 16, 249, 9, 35, 9, 214, 227, 10, 18, 253, 232, 12, 56,
-			34, 228, 202, 241, 250, 249, 30, 22, 25, 11, 205, 233, 36, 3, 228, 32, 35, 230, 210, 252, 28, 30, 5, 207, 236, 46, 31, 236, 221, 24,
-			29, 220, 231, 40, 15, 212, 4, 37, 3, 228, 0, 0, 241, 8, 31, 0, 237, 8, 16, 248, 248, 8, 2, 245, 208, 0, 70, 13, 234, 7,
-			7, 219, 223, 11, 20, 10, 19, 5, 5, 18, 5, 207, 218, 14, 1, 5, 21, 37, 34, 223, 209, 237, 233, 11, 28, 23, 34, 26, 223, 218,
-			241, 239, 3, 32, 37, 16, 241, 235, 246, 232, 243, 5, 22, 32, 23, 254, 228, 228, 234, 21, 29, 22, 254, 236, 242, 7, 7, 0, 251, 253,
-			236, 243, 39, 48, 248, 222, 252, 4, 247, 245, 254, 8, 23, 20, 5, 229, 242, 23, 20, 231, 204, 222, 44, 87, 26, 217, 210, 250, 12, 249,
-			253, 17, 23, 249, 236, 2, 16, 11, 239, 221, 3, 35, 24, 16, 219, 207, 19, 32, 23, 245, 206, 20, 47, 194, 209, 52, 71, 21, 212, 235,
-			5, 241, 231, 3, 2, 7, 42, 32, 13, 244, 182, 197, 255, 42, 70, 54, 253, 210, 212, 219, 0, 24, 29, 43, 0, 250, 7, 199, 217, 19,
-			14, 13, 30, 44, 5, 200, 198, 229, 15, 60, 71, 23, 206, 194, 223, 247, 31, 54, 26, 238, 244, 11, 3, 202, 235, 41, 26, 255, 23, 0,
-			206, 216, 255, 37, 33, 12, 0, 252, 255, 231, 224, 10, 40, 27, 5, 231, 232, 254, 243, 248, 1, 26, 46, 16, 236, 223, 200, 7, 66, 14,
-			228, 234, 2, 34, 17, 239, 244, 248, 0, 1, 246, 15, 30, 3, 232, 3, 0, 241, 250, 255, 12, 255, 253, 7, 250, 11, 43, 2, 224, 245,
-			236, 244, 21, 12, 255, 10, 10, 2, 1, 243, 236, 230, 0, 43, 44, 2, 214, 231, 11, 28, 254, 235, 5, 3, 252, 3, 7, 0, 4, 6,
-			233, 245, 29, 14, 233, 239, 7, 26, 31, 0, 235, 238, 235, 238, 232, 15, 99, 59, 218, 209, 236, 244, 231, 208, 20, 95, 80, 226, 174, 233,
-			18, 15, 3, 249, 9, 37, 2, 234, 226, 230, 7, 38, 46, 254, 200, 224, 36, 24, 207, 4, 62, 20, 233, 197, 243, 57, 31, 224, 217, 6,
-			42, 13, 202, 244, 70, 22, 206, 233, 11, 251, 6, 38, 13, 216, 235, 12, 14, 252, 233, 6, 38, 17, 228, 240, 10, 8, 5, 238, 252, 11,
-			251, 8, 25, 247, 224, 3, 17, 10, 251, 235, 255, 39, 5, 212, 0, 30, 5, 231, 232, 18, 43, 254, 231, 243, 1, 38, 14, 237, 226, 246,
-			14, 10, 3, 8, 7, 248, 252, 253, 250, 251, 15, 11, 243, 7, 13, 247, 1, 240, 239, 31, 29, 243, 238, 250, 244, 4, 12, 13, 13, 1,
-			247, 253, 248, 254, 242, 229, 30, 60, 15, 230, 231, 246, 245, 251, 5, 16, 253, 246, 16, 25, 3, 5, 240, 225, 252, 19, 8, 251, 6, 17,
-			246, 229, 21, 28, 237, 224, 3, 24, 249, 226, 14, 33, 6, 254, 30, 245, 206, 242, 17, 4, 245, 6, 27, 11, 246, 10, 251, 238, 254, 5,
-			252, 2, 16, 0, 251, 248, 6, 4, 244, 9, 8, 240, 252, 12, 12, 255, 251, 5, 4, 1, 241, 234, 255, 15, 29, 12, 249, 1, 248, 236,
-			249, 245, 16, 29, 12, 3, 249, 224, 219, 7, 51, 33, 240, 241, 255, 228, 254, 33, 0, 248, 13, 13, 0, 238, 244, 242, 241, 12, 37, 29,
-			253, 248, 243, 224, 244, 5, 9, 33, 25, 252, 245, 239, 228, 255, 13, 1, 21, 21, 247, 3, 11, 225, 227, 2, 22, 26, 253, 240, 9, 23,
-			242, 218, 244, 22, 33, 15, 246, 232, 235, 252, 30, 25, 0, 1, 3, 249, 241, 221, 234, 24, 42, 26, 252, 230, 247, 14, 247, 226, 3, 36,
-			15, 243, 250, 8, 253, 241, 0, 5, 20, 7, 238, 249, 250, 249, 9, 25, 10, 244, 4, 7, 238, 234, 6, 6, 248, 10, 10, 4, 30, 1,
-			225, 249, 3, 246, 252, 0, 4, 25, 9, 241, 14, 11, 235, 233, 244, 0, 15, 24, 16, 0, 251, 248, 242, 250, 253, 9, 255, 251, 31, 28,
-			238, 232, 18, 254, 211, 218, 34, 58, 8, 1, 5, 248, 232, 225, 238, 6, 32, 32, 37, 8, 215, 222, 249, 239, 254, 34, 31, 16, 2, 242,
-			215, 231, 14, 17, 10, 26, 14, 227, 235, 1, 2, 252, 14, 10, 249, 16, 21, 241, 216, 252, 4, 1, 25, 37, 9, 220, 223, 244, 6, 24,
-			25, 6, 217, 226, 29, 42, 7, 235, 231, 247, 20, 27, 6, 241, 221, 240, 17, 36, 39, 5, 208, 211, 15, 12, 255, 22, 22, 0, 230, 242,
-			8, 3, 255, 255, 11, 7, 254, 0, 3, 6, 247, 227, 6, 42, 0, 236, 246, 2, 3, 5, 12, 4, 250, 240, 250, 247, 0, 23, 16, 254,
-			4, 10, 237, 246, 8, 251, 252, 3, 7, 9, 11, 5, 236, 226, 1, 22, 9, 8, 3, 239, 251, 14, 249, 247, 13, 250, 247, 25, 8, 242,
-			11, 13, 245, 240, 2, 236, 255, 29, 20, 237, 228, 19, 26, 0, 245, 231, 240, 24, 25, 3, 7, 240, 226, 249, 4, 24, 44, 11, 227, 218,
-			234, 16, 9, 6, 21, 1, 248, 6, 5, 255, 234, 228, 253, 30, 38, 9, 247, 238, 244, 246, 252, 16, 24, 250, 234, 0, 3, 252, 21, 19,
-			1, 243, 229, 249, 21, 19, 244, 236, 5, 16, 4, 0, 13, 6, 235, 229, 251, 17, 27, 4, 237, 242, 11, 24, 14, 249, 219, 216, 5, 59,
-			40, 242, 222, 240, 255, 10, 16, 12, 0, 235, 231, 249, 21, 34, 9, 247, 236, 255, 16, 9, 252, 231, 237, 251, 25, 35, 16, 239, 224, 2,
-			2, 239, 11, 30, 6, 242, 255, 13, 6, 227, 230, 16, 20, 20, 5, 232, 1, 4, 233, 248, 13, 13, 24, 12, 234, 241, 6, 242, 226, 22,
-			48, 11, 242, 254, 248, 238, 236, 0, 22, 39, 10, 231, 235, 0, 249, 245, 13, 24, 19, 246, 253, 253, 243, 252, 244, 241, 21, 55, 19, 229,
-			225, 232, 255, 12, 18, 13, 8, 5, 243, 232, 1, 17, 3, 239, 0, 18, 7, 250, 255, 6, 245, 240, 3, 33, 25, 239, 222, 242, 9, 18,
-			10, 5, 4, 245, 235, 249, 9, 19, 11, 255, 252, 247, 2, 7, 243, 228, 0, 39, 29, 250, 242, 0, 247, 236, 254, 23, 169, 9, 63, 0,
-			14, 9, 244, 250, 10, 1, 244, 254, 255, 8, 16, 250, 252, 7, 7, 255, 245, 249, 252, 1, 5, 17, 18, 248, 234, 253, 2, 255, 8, 14,
-			0, 247, 0, 5, 10, 252, 239, 252, 11, 17, 255, 240, 246, 8, 15, 250, 3, 6, 252, 241, 251, 11, 9, 12, 10, 249, 243, 251, 255, 255,
-			254, 12, 16, 249, 241, 242, 5, 16, 4, 255, 2, 1, 246, 252, 1, 249, 0, 9, 10, 4, 251, 253, 247, 243, 9, 17, 1, 255, 6, 4,
-			247, 255, 3, 255, 16, 5, 0, 255, 240, 6, 12, 248, 241, 4, 21, 8, 255, 245, 243, 254, 1, 1, 253, 3, 13, 6, 252, 247, 233, 7,
-			8, 246, 1, 13, 9, 2, 255, 234, 243, 15, 21, 9, 3, 4, 239, 231, 254, 24, 17, 4, 254, 9, 2, 233, 244, 5, 12, 3, 9, 11,
-			251, 244, 250, 249, 4, 10, 254, 252, 8, 11, 246, 241, 247, 7, 20, 8, 249, 238, 244, 18, 31, 250, 232, 254, 12, 5, 253, 249, 0, 8,
-			1, 4, 1, 241, 250, 13, 0, 245, 7, 26, 5, 241, 245, 242, 249, 12, 26, 15, 253, 251, 3, 248, 230, 251, 18, 17, 6, 1, 254, 244,
-			254, 250, 234, 16, 35, 255, 241, 250, 18, 4, 231, 252, 27, 12, 251, 1, 2, 243, 243, 7, 10, 7, 7, 247, 227, 247, 15, 20, 15, 240,
-			228, 251, 15, 12, 13, 243, 243, 12, 245, 241, 6, 12, 9, 0, 10, 1, 234, 251, 14, 2, 1, 24, 14, 251, 231, 237, 16, 25, 10, 255,
-			250, 245, 254, 1, 255, 4, 12, 7, 243, 244, 255, 4, 254, 247, 0, 16, 4, 234, 226, 8, 35, 18, 244, 231, 249, 7, 243, 251, 34, 41,
-			248, 212, 245, 16, 14, 250, 3, 31, 16, 222, 227, 12, 39, 17, 241, 247, 0, 250, 255, 7, 12, 5, 0, 245, 244, 249, 0, 249, 3, 36,
-			18, 228, 231, 248, 246, 10, 19, 0, 8, 254, 230, 250, 5, 12, 14, 254, 0, 255, 0, 3, 250, 0, 254, 0, 5, 7, 10, 10, 246, 247,
-			1, 9, 9, 246, 244, 1, 14, 19, 14, 233, 236, 8, 4, 254, 252, 252, 12, 19, 4, 251, 248, 245, 253, 249, 234, 4, 34, 27, 5, 222,
-			237, 251, 240, 17, 21, 9, 253, 233, 238, 4, 22, 8, 0, 0, 14, 3, 226, 238, 25, 27, 5, 8, 14, 246, 216, 247, 28, 22, 250, 0,
-			3, 245, 244, 239, 2, 21, 9, 253, 5, 249, 239, 248, 254, 13, 6, 3, 250, 2, 17, 7, 241, 238, 0, 0, 23, 17, 245, 233, 11, 39,
-			247, 216, 242, 12, 23, 251, 252, 11, 28, 13, 230, 219, 229, 16, 42, 18, 5, 248, 243, 244, 248, 242, 245, 30, 36, 6, 238, 227, 241, 12,
-			19, 249, 253, 22, 15, 248, 247, 239, 246, 15, 19, 2, 254, 13, 1, 232, 238, 7, 15, 13, 8, 4, 254, 234, 233, 0, 14, 22, 8, 235,
-			247, 5, 5, 8, 248, 246, 8, 12, 255, 249, 253, 240, 2, 24, 12, 3, 8, 5, 227, 220, 0, 25, 25, 250, 7, 22, 245, 245, 240, 228,
-			6, 16, 9, 34, 18, 233, 242, 239, 242, 16, 24, 247, 255, 8, 1, 247, 238, 255, 254, 6, 27, 4, 247, 239, 3, 11, 247, 3, 8, 3,
-			0, 247, 247, 9, 22, 251, 248, 1, 2, 8, 249, 226, 7, 41, 255, 2, 18, 249, 236, 230, 250, 15, 16, 7, 11, 5, 244, 243, 239, 233,
-			6, 49, 15, 234, 252, 4, 237, 230, 9, 32, 25, 8, 239, 242, 241, 243, 0, 21, 23, 18, 0, 240, 245, 4, 242, 241, 16, 23, 14, 255,
-			10, 240, 221, 3, 24, 19, 253, 233, 252, 18, 7, 247, 237, 13, 20, 242, 231, 1, 12, 253, 13, 17, 255, 239, 0, 18, 246, 225, 3, 24,
-			7, 12, 10, 228, 236, 250, 24, 22, 242, 251, 254, 246, 25, 12, 232, 8, 10, 251, 250, 251, 8, 13, 240, 252, 17, 249, 0, 27, 16, 230,
-			201, 250, 44, 22, 228, 0, 38, 4, 222, 240, 14, 9, 255, 255, 34, 12, 209, 215, 30, 35, 237, 3, 27, 7, 248, 241, 229, 244, 17, 19,
-			1, 252, 11, 1, 221, 241, 24, 21, 247, 246, 15, 253, 232, 7, 31, 243, 220, 9, 57, 32, 226, 204, 254, 15, 241, 31, 40, 245, 241, 248,
-			5, 11, 233, 228, 27, 52, 254, 229, 2, 14, 233, 225, 251, 29, 47, 254, 223, 240, 250, 250, 249, 14, 16, 1, 0, 248, 249, 13, 247, 249,
-			243, 245, 28, 64, 6, 193, 252, 36, 246, 232, 5, 25, 5, 254, 11, 14, 245, 241, 239, 254, 19, 7, 18, 1, 224, 7, 7, 249, 255, 248,
-			0, 16, 7, 247, 250, 246, 242, 6, 17, 15, 255, 233, 232, 24, 32, 242, 3, 8, 246, 248, 7, 4, 252, 15, 0, 232, 252, 10, 2, 244,
-			24, 52, 0, 217, 231, 3, 7, 240, 254, 18, 35, 9, 246, 233, 223, 0, 2, 5, 25, 16, 20, 249, 211, 230, 13, 15, 11, 12, 13, 254,
-			243, 245, 234, 5, 29, 3, 243, 12, 34, 240, 196, 216, 15, 67, 51, 8, 226, 236, 247, 221, 236, 24, 47, 37, 251, 235, 238, 2, 246, 217,
-			248, 41, 43, 2, 250, 23, 250, 203, 208, 255, 50, 47, 20, 2, 225, 226, 225, 249, 25, 18, 15, 15, 2, 235, 233, 12, 21, 1, 237, 9,
-			14, 3, 241, 233, 252, 236, 27, 95, 248, 183, 241, 10, 238, 241, 35, 36, 2, 249, 245, 225, 255, 28, 255, 240, 7, 33, 0, 226, 241, 19,
-			17, 8, 248, 254, 247, 242, 20, 11, 245, 249, 11, 33, 248, 219, 228, 7, 39, 23, 245, 2, 19, 255, 224, 207, 8, 42, 24, 255, 17, 20,
-			213, 192, 221, 10, 47, 61, 49, 1, 211, 184, 217, 12, 35, 30, 27, 30, 253, 203, 198, 251, 42, 30, 4, 254, 251, 250, 238, 244, 11, 21,
-			24, 13, 237, 241, 254, 4, 5, 252, 21, 11, 0, 252, 241, 9, 5, 243, 5, 20, 228, 235, 31, 21, 236, 3, 13, 211, 225, 9, 36, 35,
-			9, 243, 207, 223, 14, 29, 11, 3, 9, 243, 247, 244, 246, 16, 5, 2, 13, 254, 9, 11, 235, 236, 25, 23, 255, 242, 253, 25, 20, 231,
-			244, 26, 252, 239, 254, 24, 48, 247, 197, 223, 27, 17, 253, 9, 248, 243, 28, 13, 222, 213, 249, 22, 18, 24, 4, 229, 209, 0, 48, 249,
-			226, 9, 39, 17, 248, 249, 246, 3, 11, 252, 234, 11, 36, 5, 242, 229, 14, 13, 13, 6, 245, 247, 8, 4, 5, 8, 251, 0, 246, 245,
-			12, 9, 0, 10, 251, 240, 2, 0, 224, 221, 21, 42, 21, 12, 242, 191, 221, 21, 26, 16, 3, 29, 10, 223, 234, 1, 14, 12, 5, 20,
-			0, 230, 5, 5, 243, 6, 32, 7, 240, 249, 244, 253, 21, 31, 4, 230, 249, 6, 226, 0, 18, 16, 247, 224, 1, 14, 241, 239, 5, 28,
-			21, 1, 240, 222, 251, 39, 26, 243, 226, 1, 9, 21, 241, 238, 17, 16, 13, 8, 6, 236, 213, 17, 39, 255, 253, 7, 3, 0, 238, 232,
-			246, 20, 40, 18, 2, 227, 198, 241, 26, 10, 13, 13, 6, 252, 253, 243, 247, 244, 14, 15, 247, 21, 36, 219, 204, 1, 41, 38, 231, 252,
-			41, 246, 179, 215, 46, 71, 24, 1, 230, 232, 249, 242, 246, 19, 40, 23, 244, 234, 253, 251, 230, 233, 15, 53, 31, 238, 233, 222, 236, 14,
-			33, 33, 0, 228, 228, 2, 14, 22, 0, 238, 3, 21, 12, 228, 235, 3, 0, 3, 33, 36, 227, 210, 244, 5, 16, 40, 21, 235, 246, 3,
-			239, 233, 255, 14, 0, 14, 26, 18, 239, 236, 240, 235, 2, 37, 12, 249, 250, 25, 253, 211, 239, 12, 55, 51, 249, 202, 175, 5, 70, 26,
-			239, 17, 33, 223, 190, 248, 46, 31, 244, 246, 245, 247, 19, 4, 0, 0, 241, 4, 4, 253, 10, 248, 221, 15, 53, 12, 239, 238, 227, 244,
-			252, 18, 32, 28, 14, 237, 205, 225, 21, 37, 5, 245, 33, 16, 205, 230, 24, 25, 16, 252, 4, 21, 238, 194, 18, 77, 20, 238, 222, 212,
-			215, 239, 26, 74, 58, 9, 238, 175, 172, 232, 49, 91, 42, 222, 214, 3, 10, 212, 195, 33, 125, 42, 184, 213, 255, 248, 19, 4, 254, 22,
-			47, 38, 190, 183, 34, 35, 236, 242, 46, 36, 241, 227, 237, 3, 6, 10, 4, 250, 5, 10, 242, 238, 255, 8, 3, 246, 244, 1, 255, 12,
-			39, 252, 201, 243, 21, 22, 7, 241, 244, 0, 19, 9, 234, 237, 27, 38, 6, 221, 222, 13, 7, 22, 14, 235, 16, 46, 12, 228, 209, 237,
-			4, 20, 50, 246, 234, 28, 0, 198, 225, 33, 47, 12, 238, 248, 252, 242, 241, 242, 253, 44, 21, 245, 7, 245, 224, 203, 0, 71, 52, 3,
-			237, 228, 3, 3, 245, 239, 20, 35, 3, 3, 219, 215, 38, 48, 255, 0, 248, 229, 234, 249, 4, 46, 48, 2, 215, 211, 221, 246, 30, 37,
-			32, 20, 253, 206, 208, 3, 28, 10, 249, 15, 38, 234, 236, 0, 245, 254, 249, 13, 22, 32, 25, 224, 214, 8, 13, 237, 250, 25, 32, 5,
-			236, 237, 247, 15, 9, 14, 0, 221, 251, 16, 1, 0, 10, 11, 248, 238, 240, 22, 5, 234, 251, 14, 41, 0, 217, 6, 8, 244, 233, 7,
-			20, 13, 7, 231, 0, 26, 9, 239, 254, 8, 252, 249, 248, 6, 25, 36, 253, 215, 228, 0, 16, 3, 25, 7, 9, 5, 223, 232, 247, 2,
-			13, 28, 11, 237, 246, 22, 0, 210, 225, 20, 51, 36, 0, 231, 253, 248, 216, 222, 16, 46, 51, 23, 241, 224, 241, 240, 234, 5, 26, 40,
-			10, 252, 244, 233, 240, 233, 246, 26, 61, 50, 237, 190, 208, 2, 27, 28, 39, 3, 230, 255, 242, 252, 40, 24, 223, 191, 3, 50, 27, 222,
-			248, 47, 15, 227, 211, 236, 255, 0, 38, 45, 9, 2, 209, 192, 250, 30, 34, 43, 50, 234, 184, 192, 253, 56, 22, 16, 42, 27, 233, 182,
-			208, 20, 28, 9, 15, 59, 12, 203, 194, 226, 4, 49, 61, 7, 234, 242, 245, 220, 231, 15, 25, 66, 28, 214, 242, 254, 211, 225, 49, 55,
-			27, 250, 243, 225, 191, 0, 42, 15, 57, 46, 207, 182, 230, 250, 14, 47, 42, 4, 229, 228, 229, 230, 10, 26, 27, 15, 255, 249, 241, 211,
-			238, 46, 50, 4, 7, 4, 220, 220, 3, 46, 18, 255, 26, 244, 195, 3, 31, 10, 36, 16, 197, 193, 20, 58, 28, 233, 240, 248, 11, 251,
-			191, 7, 77, 31, 206, 235, 13, 0, 243, 240, 21, 31, 3, 241, 250, 227, 237, 28, 36, 20, 238, 216, 240, 36, 11, 255, 37, 249, 221, 218,
-			2, 40, 39, 16, 248, 223, 234, 11, 19, 255, 3, 251, 246, 12, 1, 226, 25, 21, 220, 12, 26, 1, 244, 244, 250, 11, 14, 0, 250, 249,
-			1, 13, 227, 242, 17, 8, 5, 243, 0, 11, 255, 0, 2, 228, 255, 49, 4, 224, 255, 254, 0, 14, 7, 18, 0, 239, 238, 253, 3, 19,
-			19, 16, 13, 235, 215, 244, 28, 16, 242, 13, 29, 255, 213, 227, 0, 27, 24, 17, 3, 249, 236, 242, 13, 235, 253, 50, 12, 206, 243, 2,
-			5, 36, 37, 0, 225, 215, 0, 8, 242, 15, 34, 29, 247, 230, 0, 240, 231, 3, 6, 17, 45, 250, 222, 230, 7, 33, 254, 238, 3, 10,
-			9, 225, 241, 33, 29, 251, 219, 223, 34, 56, 242, 229, 12, 7, 252, 248, 255, 18, 22, 255, 248, 228, 245, 23, 23, 13, 0, 232, 235, 3,
-			13, 255, 254, 9, 248, 248, 232, 254, 28, 255, 252, 241, 254, 16, 250, 245, 247, 21, 17, 253, 9, 242, 234, 255, 14, 13, 25, 31, 239, 226,
-			246, 4, 5, 7, 29, 16, 253, 0, 235, 227, 251, 31, 15, 0, 7, 5, 239, 231, 229, 2, 29, 20, 253, 225, 248, 23, 239, 239, 11, 18,
-			18, 245, 226, 2, 3, 16, 20, 3, 249, 250, 239, 249, 13, 30, 17, 245, 252, 0, 250, 7, 2, 244, 250, 11, 10, 17, 14, 0, 240, 228,
-			248, 251, 4, 32, 28, 236, 219, 12, 21, 232, 233, 4, 25, 25, 253, 232, 244, 251, 255, 7, 6, 0, 9, 11, 247, 235, 8, 29, 11, 255,
-			251, 241, 252, 243, 6, 25, 6, 252, 0, 12, 254, 231, 250, 250, 5, 29, 24, 249, 235, 245, 227, 254, 36, 24, 4, 253, 2, 241, 221, 233,
-			24, 41, 2, 253, 17, 254, 232, 242, 254, 6, 11, 10, 5, 251, 6, 10, 239, 229, 248, 23, 19, 250, 240, 3, 14, 251, 3, 249, 240, 8,
-			11, 7, 9, 1, 228, 247, 9, 5, 10, 15, 15, 0, 240, 225, 251, 5, 13, 29, 31, 18, 235, 202, 228, 4, 21, 30, 24, 17, 243, 225,
-			239, 242, 236, 5, 31, 16, 24, 1, 222, 229, 241, 7, 36, 25, 238, 233, 2, 11, 0, 249, 249, 11, 14, 0, 253, 4, 5, 252, 246, 252,
-			16, 19, 1, 249, 241, 4, 1, 250, 12, 0, 255, 11, 11, 248, 241, 251, 250, 8, 21, 0, 249, 3, 254, 237, 243, 15, 13, 0, 249, 251,
-			10, 0, 250, 4, 250, 0, 14, 4, 247, 253, 2, 255, 6, 21, 2, 236, 254, 11, 255, 238, 244, 2, 11, 12, 19, 23, 241, 215, 224, 6,
-			36, 22, 0, 254, 8, 7, 248, 232, 247, 10, 13, 10, 8, 17, 9, 228, 226, 253, 8, 18, 14, 249, 243, 11, 2, 237, 0, 5, 250, 0,
-			3, 255, 255, 3, 251, 243, 255, 5, 4, 7, 6, 248, 254, 9, 245, 247, 18, 15, 2, 0, 249, 4, 10, 254, 6, 14, 250, 247, 5, 12,
-			0, 0, 3, 252, 0, 249, 239, 255, 7, 6, 7, 8, 250, 239, 241, 249, 6, 11, 3, 8, 1, 237, 249, 1, 9, 6, 0, 1, 6, 0,
-			249, 249, 1, 19, 18, 255, 248, 251, 246, 0, 14, 15, 3, 5, 5, 246, 239, 248, 2, 7, 5, 10, 15, 253, 241, 247, 247, 253, 3, 4,
-			10, 13, 251, 238, 245, 251, 5, 12, 254, 4, 12, 253, 250, 255, 254, 253, 0, 7, 7, 4, 254, 250, 1, 10, 3, 252, 0, 9, 3, 252,
-			252, 255, 5, 2, 4, 13, 5, 247, 241, 244, 0, 11, 12, 0, 0, 0, 152, 9, 27, 0, 229, 254, 18, 15, 23, 19, 255, 251, 251, 2,
-			4, 248, 244, 7, 12, 0, 11, 18, 11, 247, 229, 228, 236, 245, 5, 20, 17, 12, 8, 243, 231, 231, 219, 223, 230, 239, 2, 20, 24, 16,
-			12, 8, 245, 211, 201, 215, 222, 241, 2, 11, 27, 44, 35, 11, 239, 211, 203, 213, 234, 12, 51, 49, 28, 22, 15, 240, 234, 244, 242, 234,
-			232, 251, 17, 26, 8, 13, 14, 234, 233, 237, 229, 252, 5, 7, 11, 254, 0, 250, 235, 248, 1, 232, 216, 249, 21, 21, 6, 248, 253, 0,
-			10, 14, 3, 244, 240, 249, 242, 255, 7, 14, 7, 7, 16, 17, 9, 224, 211, 244, 13, 4, 18, 57, 20, 253, 0, 248, 219, 235, 255, 0,
-			7, 14, 9, 255, 248, 11, 28, 17, 16, 15, 241, 221, 213, 225, 254, 8, 16, 19, 27, 19, 254, 241, 232, 240, 248, 245, 21, 31, 10, 2,
-			0, 255, 236, 219, 233, 10, 36, 7, 254, 3, 16, 18, 250, 223, 234, 14, 19, 249, 242, 3, 20, 7, 233, 218, 231, 237, 253, 20, 17, 22,
-			29, 239, 215, 229, 236, 249, 253, 1, 250, 14, 38, 10, 253, 7, 6, 248, 227, 224, 237, 252, 16, 33, 16, 8, 30, 23, 5, 246, 232, 242,
-			245, 238, 236, 9, 34, 29, 0, 243, 246, 6, 255, 236, 238, 2, 4, 252, 250, 10, 22, 8, 7, 13, 249, 241, 1, 247, 245, 1, 252, 15,
-			28, 19, 24, 34, 16, 226, 218, 239, 236, 243, 24, 41, 18, 13, 18, 240, 211, 0, 21, 234, 240, 29, 19, 252, 12, 8, 242, 227, 240, 16,
-			23, 16, 10, 248, 244, 242, 224, 235, 10, 21, 7, 22, 55, 42, 241, 220, 223, 212, 225, 236, 249, 46, 61, 32, 6, 0, 216, 205, 229, 23,
-			56, 32, 253, 4, 237, 220, 243, 240, 234, 7, 35, 39, 12, 255, 248, 243, 252, 243, 236, 246, 4, 253, 246, 0, 248, 250, 255, 1, 16, 27,
-			248, 211, 223, 254, 13, 13, 18, 14, 6, 251, 248, 252, 7, 245, 231, 246, 16, 11, 251, 2, 22, 24, 11, 246, 224, 241, 0, 253, 254, 1,
-			252, 244, 6, 254, 233, 252, 1, 231, 248, 249, 13, 45, 38, 13, 5, 233, 198, 218, 235, 239, 21, 67, 39, 14, 24, 19, 241, 211, 206, 226,
-			246, 15, 36, 48, 31, 21, 255, 241, 243, 248, 227, 230, 2, 6, 251, 14, 27, 7, 225, 219, 226, 221, 238, 31, 33, 17, 15, 16, 1, 212,
-			203, 215, 206, 233, 28, 47, 49, 46, 35, 244, 228, 228, 225, 221, 213, 244, 18, 30, 41, 19, 8, 255, 254, 245, 244, 250, 242, 224, 241, 2,
-			16, 31, 44, 17, 238, 226, 223, 249, 17, 252, 235, 0, 5, 16, 35, 15, 7, 225, 222, 248, 0, 243, 229, 3, 23, 32, 33, 9, 226, 218,
-			239, 247, 243, 12, 9, 12, 30, 36, 28, 245, 226, 242, 231, 227, 246, 0, 11, 34, 27, 15, 8, 9, 237, 201, 200, 249, 5, 5, 33, 2,
-			8, 61, 15, 219, 217, 252, 248, 228, 217, 237, 15, 249, 5, 34, 29, 44, 20, 243, 243, 179, 133, 207, 22, 38, 70, 100, 72, 16, 251, 197,
-			172, 210, 225, 236, 37, 90, 41, 252, 254, 238, 234, 222, 241, 5, 3, 9, 9, 18, 24, 235, 172, 196, 238, 29, 72, 49, 0, 214, 206, 233,
-			234, 218, 250, 32, 64, 11, 238, 13, 7, 217, 203, 219, 234, 6, 28, 61, 56, 19, 12, 245, 195, 183, 209, 243, 16, 34, 40, 25, 10, 0,
-			238, 218, 1, 9, 229, 240, 37, 34, 27, 0, 0, 0, 242, 227, 229, 246, 1, 29, 33, 24, 247, 219, 231, 254, 250, 0, 2, 254, 13, 19,
-			235, 236, 0, 0, 231, 236, 34, 23, 23, 40, 6, 237, 239, 239, 222, 225, 26, 60, 11, 246, 251, 249, 250, 249, 251, 23, 34, 22, 6, 9,
-			242, 200, 200, 226, 0, 17, 14, 45, 61, 75, 19, 189, 182, 194, 202, 231, 26, 26, 60, 77, 8, 239, 241, 222, 204, 212, 2, 53, 37, 6,
-			5, 1, 242, 240, 246, 224, 240, 22, 39, 27, 0, 35, 23, 247, 60, 18, 198, 215, 238, 237, 255, 49, 57, 10, 1, 5, 239, 219, 216, 208,
-			19, 93, 53, 30, 14, 226, 162, 155, 209, 0, 24, 77, 79, 44, 22, 255, 217, 170, 173, 228, 29, 63, 60, 68, 67, 25, 222, 190, 191, 197,
-			229, 21, 54, 40, 26, 58, 43, 229, 199, 248, 13, 206, 219, 9, 41, 82, 59, 20, 14, 13, 249, 188, 203, 251, 245, 246, 23, 30, 241, 0,
-			19, 16, 13, 6, 0, 228, 203, 220, 250, 2, 26, 19, 16, 17, 1, 239, 232, 240, 199, 198, 34, 83, 51, 31, 11, 200, 215, 4, 225, 206,
-			231, 4, 30, 39, 57, 55, 248, 241, 13, 236, 207, 211, 229, 5, 35, 64, 61, 50, 26, 219, 180, 190, 248, 253, 232, 29, 37, 12, 2, 249,
-			182, 197, 242, 241, 26, 58, 54, 30, 242, 207, 199, 204, 225, 18, 33, 31, 46, 38, 21, 241, 189, 170, 190, 213, 13, 66, 59, 25, 241, 220,
-			223, 214, 206, 215, 248, 6, 18, 4, 255, 10, 238, 232, 7, 236, 194, 225, 13, 21, 41, 22, 250, 216, 220, 247, 217, 192, 19, 88, 241, 251,
-			24, 233, 214, 232, 246, 229, 238, 48, 64, 253, 42, 57, 238, 194, 221, 215, 220, 220, 240, 68, 54, 1, 244, 208, 230, 245, 211, 233, 16, 7,
-			236, 233, 4, 14, 1, 230, 205, 212, 30, 47, 220, 215, 38, 11, 218, 216, 254, 20, 238, 3, 38, 48, 81, 53, 231, 171, 178, 250, 23, 35,
-			69, 50, 254, 243, 5, 214, 206, 253, 30, 36, 33, 12, 227, 228, 230, 232, 212, 204, 248, 247, 12, 16, 16, 26, 29, 220, 192, 3, 255, 242,
-			6, 2, 213, 242, 45, 32, 255, 253, 0, 2, 251, 249, 17, 33, 36, 17, 7, 252, 6, 73, 57, 22, 233, 225, 227, 231, 251, 235, 230, 1,
-			37, 64, 55, 250, 173, 177, 193, 237, 9, 56, 45, 247, 249, 13, 217, 206, 233, 225, 237, 42, 79, 50, 27, 226, 197, 240, 4, 23, 14, 244,
-			20, 33, 246, 231, 223, 204, 1, 105, 100, 38, 246, 220, 227, 211, 212, 225, 243, 43, 71, 65, 80, 42, 221, 190, 222, 217, 196, 223, 48, 80,
-			54, 45, 23, 15, 217, 147, 153, 253, 92, 81, 254, 16, 57, 5, 203, 183, 202, 225, 227, 7, 10, 49, 118, 75, 236, 220, 229, 220, 220, 224,
-			7, 90, 79, 26, 35, 247, 193, 199, 221, 11, 32, 61, 56, 6, 250, 243, 245, 234, 213, 216, 230, 25, 52, 66, 61, 10, 227, 192, 185, 194,
-			225, 241, 240, 57, 96, 54, 26, 254, 219, 182, 199, 222, 253, 16, 255, 2, 37, 32, 253, 249, 249, 221, 226, 253, 14, 29, 50, 48, 12, 194,
-			205, 27, 23, 238, 0, 38, 231, 199, 30, 5, 223, 16, 49, 60, 37, 224, 190, 208, 206, 227, 249, 5, 57, 57, 16, 0, 227, 223, 234, 216,
-			241, 16, 27, 31, 52, 17, 223, 236, 240, 201, 248, 29, 247, 27, 79, 11, 241, 16, 25, 9, 25, 16, 183, 196, 9, 47, 25, 252, 5, 29,
-			13, 247, 243, 243, 219, 207, 221, 9, 38, 46, 18, 248, 0, 253, 249, 220, 241, 29, 15, 17, 9, 22, 27, 12, 11, 233, 239, 19, 20, 254,
-			240, 9, 49, 16, 22, 26, 247, 232, 2, 254, 216, 16, 28, 239, 249, 18, 23, 231, 197, 230, 233, 1, 34, 10, 12, 25, 7, 242, 212, 221,
-			251, 20, 32, 32, 0, 31, 11, 247, 237, 225, 251, 33, 15, 240, 252, 22, 33, 22, 239, 255, 22, 34, 243, 18, 24, 237, 18, 219, 231, 6,
-			224, 3, 16, 24, 26, 246, 242, 207, 210, 0, 56, 55, 241, 228, 217, 209, 245, 235, 240, 250, 33, 21, 23, 57, 24, 227, 187, 200, 24, 37,
-			3, 21, 16, 254, 30, 15, 216, 211, 217, 218, 252, 50, 103, 34, 189, 225, 246, 235, 20, 8, 214, 222, 17, 51, 18, 5, 230, 188, 205, 27,
-			68, 26, 224, 230, 3, 24, 31, 13, 243, 224, 211, 226, 3, 42, 70, 55, 242, 190, 185, 226, 229, 225, 35, 55, 43, 16, 233, 15, 24, 231,
-			156, 200, 8, 245, 0, 19, 23, 13, 10, 253, 11, 4, 219, 233, 238, 220, 228, 8, 55, 45, 41, 50, 22, 246, 193, 162, 194, 250, 0, 7,
-			44, 76, 34, 238, 40, 39, 222, 175, 160, 227, 0, 11, 50, 58, 35, 9, 231, 191, 188, 209, 234, 14, 35, 58, 48, 43, 2, 211, 191, 198,
-			206, 12, 25, 27, 25, 240, 244, 0, 249, 253, 250, 245, 37, 34, 5, 252, 251, 245, 236, 225, 240, 17, 57, 66, 251, 235, 14, 233, 193, 221,
-			38, 51, 36, 33, 56, 44, 223, 185, 181, 188, 211, 235, 23, 44, 87, 94, 8, 217, 6, 238, 183, 214, 3, 10, 12, 44, 36, 16, 15, 253,
-			189, 192, 9, 252, 225, 248, 48, 52, 239, 252, 7, 5, 28, 30, 213, 208, 7, 220, 206, 0, 52, 42, 14, 249, 194, 219, 29, 68, 24, 241,
-			247, 237, 0, 7, 4, 195, 212, 3, 5, 59, 89, 26, 229, 217, 214, 212, 237, 28, 89, 50, 255, 245, 215, 212, 233, 234, 251, 6, 13, 15,
-			239, 204, 190, 216, 253, 26, 57, 75, 47, 214, 212, 227, 217, 245, 10, 43, 18, 240, 252, 8, 29, 26, 25, 247, 253, 11, 204, 190, 5, 14,
-			46, 59, 77, 72, 251, 164, 165, 178, 220, 24, 19, 23, 97, 90, 25, 245, 206, 160, 156, 189, 227, 41, 69, 92, 114, 28, 191, 133, 163, 211,
-			6, 33, 29, 59, 49, 15, 1, 242, 187, 201, 242, 253, 11, 31, 38, 248, 20, 46, 255, 233, 217, 220, 231, 8, 9, 242, 249, 28, 54, 251,
-			217, 253, 3, 0, 13, 239, 255, 38, 15, 3, 248, 0, 27, 24, 0, 4, 11, 234, 212, 226, 237, 10, 43, 22, 1, 254, 16, 6, 213, 181,
-			200, 208, 3, 72, 107, 54, 248, 194, 188, 203, 218, 235, 3, 51, 79, 55, 37, 240, 237, 203, 175, 233, 26, 51, 49, 5, 234, 235, 238, 226,
-			6, 13, 213, 242, 38, 17, 9, 0, 242, 30, 75, 21, 218, 197, 196, 235, 243, 44, 90, 39, 50, 32, 250, 5, 246, 189, 187, 240, 234, 231,
-			37, 70, 56, 234, 201, 219, 226, 11, 40, 24, 254, 251, 221, 216, 245, 13, 20, 18, 25, 234, 228, 18, 248, 253, 12, 21, 17, 2, 246, 214,
-			223, 37, 32, 255, 18, 35, 2, 220, 0, 9, 229, 32, 28, 237, 225, 236, 250, 11, 16, 241, 235, 7, 3, 251, 247, 6, 237, 196, 215, 250,
-			7, 4, 248, 52, 90, 13, 187, 221, 45, 246, 194, 228, 19, 30, 32, 48, 17, 21, 12, 218, 224, 6, 5, 234, 242, 248, 14, 43, 34, 17,
-			246, 194, 236, 248, 251, 7, 51, 14, 214, 20, 31, 249, 235, 212, 223, 253, 21, 46, 19, 227, 226, 248, 15, 39, 21, 1, 5, 227, 218, 255,
-			245, 7, 10, 16, 1, 2, 19, 250, 242, 233, 3, 255, 248, 18, 252, 225, 227, 0, 10, 20, 45, 255, 224, 243, 248, 241, 224, 253, 42, 27,
-			17, 28, 24, 227, 203, 223, 0, 254, 9, 16, 30, 45, 8, 16, 0, 212, 228, 254, 14, 16, 28, 9, 252, 227, 224, 231, 249, 25, 55, 18,
-			241, 227, 226, 252, 249, 249, 0, 4, 28, 27, 255, 253, 4, 249, 184, 168, 238, 37, 39, 50, 75, 33, 204, 197, 180, 202, 0, 247, 249, 56,
-			78, 25, 233, 215, 200, 187, 236, 5, 247, 28, 96, 107, 29, 234, 216, 150, 131, 193, 21, 57, 71, 70, 41, 8, 225, 186, 176, 239, 34, 45,
-			26, 10, 14, 243, 246, 213, 192, 21, 97, 87, 34, 250, 204, 204, 207, 224, 6, 26, 21, 30, 41, 6, 220, 208, 222, 242, 225, 2, 59, 41,
-			21, 5, 204, 196, 198, 212, 246, 5, 14, 20, 15, 41, 25, 243, 209, 204, 236, 227, 6, 72, 75, 60, 254, 200, 231, 18, 251, 207, 252, 55,
-			48, 7, 225, 1, 28, 236, 227, 12, 44, 38, 254, 239, 12, 11, 238, 215, 237, 12, 33, 0, 250, 21, 7, 13, 247, 199, 208, 228, 0, 26,
-			12, 39, 53, 9, 226, 221, 232, 245, 242, 243, 28, 42, 29, 22, 236, 224, 6, 1, 222, 227, 6, 10, 250, 248, 3, 17, 5, 234, 234, 249,
-			247, 237, 252, 6, 254, 248, 225, 5, 47, 25, 6, 254, 221, 226, 19, 9, 238, 255, 32, 33, 37, 30, 238, 236, 0, 228, 220, 18, 5, 246,
-			14, 40, 22, 244, 239, 239, 221, 213, 218, 225, 6, 45, 8, 1, 46, 30, 220, 200, 225, 241, 252, 252, 6, 28, 24, 17, 7, 9, 12, 252,
-			222, 230, 18, 1, 249, 26, 0, 14, 32, 26, 33, 12, 229, 216, 210, 228, 34, 36, 31, 37, 6, 244, 253, 241, 240, 236, 229, 8, 29, 35,
-			39, 19, 226, 233, 17, 13, 252, 241, 247, 253, 250, 8, 15, 2, 245, 2, 9, 244, 228, 234, 247, 4, 10, 25, 45, 22, 4, 250, 227, 201,
-			197, 234, 0, 13, 50, 41, 12, 0, 231, 207, 238, 252, 249, 4, 32, 45, 23, 19, 44, 1, 220, 251, 6, 4, 16, 8, 7, 35, 39, 25,
-			11, 255, 234, 237, 5, 8, 0, 242, 224, 245, 11, 18, 22, 254, 232, 227, 222, 229, 255, 0, 1, 254, 236, 5, 44, 32, 249, 219, 217, 237,
-			247, 254, 11, 25, 37, 34, 0, 231, 252, 12, 234, 221, 1, 26, 47, 29, 253, 251, 250, 254, 244, 252, 15, 28, 9, 8, 3, 240, 246, 251,
-			246, 248, 255, 0, 255, 251, 246, 243, 240, 236, 241, 244, 1, 13, 6, 248, 239, 225, 224, 243, 250, 244, 1, 14, 34, 41, 17, 248, 247, 3,
-			0, 242, 246, 7, 19, 19, 10, 9, 21, 25, 9, 251, 254, 5, 0, 3, 9, 251, 242, 254, 255, 1, 248, 242, 9, 15, 0, 250, 242, 227,
-			219, 237, 252, 7, 0, 20, 29, 248, 215, 226, 235, 238, 246, 3, 18, 14, 4, 248, 248, 250, 246, 248, 248, 0, 19, 18, 2, 0, 12, 11,
-			253, 236, 250, 17, 9, 251, 244, 5, 20, 20, 5, 5, 7, 1, 251, 248, 63, 10, 39, 0, 13, 248, 245, 253, 241, 11, 3, 240, 16, 34,
-			30, 0, 248, 250, 240, 9, 254, 13, 21, 14, 253, 236, 234, 1, 24, 0, 229, 248, 4, 9, 250, 0, 255, 246, 251, 231, 247, 0, 3, 243,
-			245, 244, 248, 2, 248, 244, 3, 12, 240, 4, 0, 244, 4, 34, 255, 235, 252, 12, 1, 9, 11, 29, 26, 228, 229, 241, 254, 17, 23, 0,
-			250, 3, 249, 217, 237, 3, 15, 10, 0, 255, 10, 225, 210, 25, 39, 6, 2, 255, 250, 8, 4, 2, 7, 39, 44, 3, 223, 214, 2, 48,
-			25, 223, 234, 14, 19, 246, 206, 228, 45, 36, 16, 245, 236, 229, 228, 248, 43, 57, 13, 239, 243, 243, 245, 7, 29, 29, 24, 245, 228, 238,
-			247, 14, 49, 43, 227, 216, 0, 34, 0, 237, 12, 51, 24, 212, 212, 14, 10, 226, 252, 28, 253, 235, 235, 245, 254, 250, 228, 0, 19, 241,
-			232, 254, 1, 231, 240, 249, 5, 21, 18, 253, 252, 236, 237, 6, 23, 17, 24, 3, 236, 7, 9, 2, 17, 14, 254, 248, 2, 6, 15, 7,
-			249, 9, 26, 251, 234, 10, 41, 16, 230, 227, 12, 31, 252, 247, 30, 48, 6, 219, 241, 6, 251, 1, 15, 20, 11, 230, 223, 252, 10, 0,
-			241, 249, 255, 243, 236, 246, 7, 1, 16, 11, 241, 222, 238, 14, 22, 11, 5, 9, 13, 2, 241, 222, 6, 41, 26, 249, 253, 9, 247, 230,
-			245, 12, 28, 254, 238, 248, 0, 227, 246, 15, 8, 249, 222, 226, 244, 28, 16, 254, 6, 0, 250, 233, 2, 8, 251, 0, 17, 4, 226, 230,
-			7, 15, 0, 229, 254, 45, 15, 233, 1, 42, 21, 233, 247, 30, 48, 19, 233, 220, 24, 54, 19, 6, 250, 223, 226, 251, 7, 30, 22, 16,
-			251, 227, 203, 236, 20, 27, 14, 244, 242, 239, 250, 12, 12, 0, 4, 2, 255, 16, 12, 247, 243, 255, 13, 24, 242, 220, 5, 28, 248, 210,
-			242, 24, 14, 8, 244, 242, 17, 7, 231, 244, 16, 27, 22, 9, 238, 6, 249, 226, 254, 43, 30, 242, 219, 233, 1, 6, 7, 4, 5, 245,
-			245, 254, 13, 249, 248, 35, 247, 240, 248, 0, 11, 25, 36, 3, 5, 6, 213, 237, 33, 26, 2, 241, 242, 224, 246, 4, 35, 4, 241, 28,
-			246, 206, 241, 20, 31, 18, 17, 244, 218, 217, 248, 57, 42, 226, 217, 2, 19, 230, 229, 24, 60, 15, 225, 222, 252, 245, 231, 18, 42, 18,
-			253, 3, 250, 229, 236, 10, 27, 11, 243, 248, 1, 239, 223, 7, 37, 10, 228, 235, 12, 3, 237, 0, 27, 24, 239, 243, 249, 251, 5, 9,
-			48, 50, 245, 220, 0, 47, 25, 12, 22, 26, 12, 237, 231, 249, 28, 1, 244, 253, 11, 247, 234, 243, 246, 12, 25, 3, 242, 233, 2, 16,
-			22, 254, 231, 12, 27, 0, 253, 30, 15, 243, 237, 235, 21, 44, 226, 196, 241, 252, 230, 239, 239, 247, 7, 243, 246, 8, 2, 243, 243, 254,
-			22, 10, 240, 246, 27, 0, 236, 7, 23, 11, 7, 235, 229, 34, 53, 239, 209, 255, 33, 29, 8, 226, 250, 36, 16, 205, 216, 1, 21, 2,
-			2, 18, 13, 242, 219, 227, 14, 25, 10, 251, 254, 14, 250, 253, 255, 15, 30, 248, 237, 6, 5, 233, 210, 0, 59, 33, 234, 245, 3, 5,
-			2, 15, 41, 54, 254, 222, 227, 236, 40, 57, 26, 250, 245, 249, 251, 16, 17, 254, 238, 247, 10, 16, 246, 241, 36, 16, 180, 189, 31, 27,
-			2, 13, 245, 198, 196, 15, 50, 43, 248, 222, 250, 239, 231, 8, 45, 32, 9, 4, 221, 206, 221, 8, 48, 30, 0, 234, 249, 225, 230, 27,
-			67, 32, 233, 232, 239, 242, 17, 6, 3, 37, 18, 233, 204, 235, 21, 6, 248, 2, 30, 15, 216, 205, 254, 42, 25, 255, 236, 246, 253, 250,
-			252, 26, 13, 7, 18, 16, 253, 227, 235, 25, 25, 243, 229, 31, 52, 252, 229, 250, 246, 243, 28, 50, 254, 224, 238, 25, 38, 254, 236, 255,
-			26, 20, 216, 218, 24, 38, 249, 252, 248, 226, 245, 242, 18, 58, 36, 239, 233, 241, 235, 249, 252, 6, 22, 35, 254, 217, 197, 12, 57, 55,
-			24, 238, 235, 231, 9, 25, 11, 244, 214, 251, 18, 236, 178, 226, 20, 255, 237, 0, 8, 243, 211, 219, 14, 54, 43, 1, 7, 246, 227, 233,
-			34, 87, 62, 242, 204, 225, 14, 27, 18, 39, 45, 20, 210, 195, 215, 9, 53, 22, 248, 18, 14, 206, 189, 0, 52, 56, 11, 233, 244, 246,
-			229, 231, 238, 28, 8, 204, 10, 54, 248, 230, 240, 231, 8, 30, 17, 237, 210, 247, 60, 70, 0, 212, 21, 38, 242, 226, 26, 70, 35, 244,
-			231, 234, 251, 5, 27, 34, 26, 0, 222, 225, 226, 5, 76, 59, 217, 168, 233, 23, 1, 248, 29, 53, 11, 240, 213, 231, 11, 21, 6, 5,
-			4, 240, 231, 224, 228, 5, 2, 238, 232, 229, 244, 247, 241, 242, 3, 13, 9, 238, 224, 255, 3, 8, 24, 250, 247, 20, 20, 247, 244, 255,
-			29, 7, 214, 247, 52, 32, 218, 246, 15, 0, 245, 246, 11, 14, 0, 252, 18, 241, 215, 17, 58, 35, 0, 6, 7, 245, 228, 222, 6, 65,
-			60, 231, 200, 235, 25, 252, 242, 18, 31, 6, 250, 0, 9, 5, 216, 1, 62, 22, 1, 250, 9, 27, 28, 33, 32, 0, 229, 243, 248, 16,
-			14, 15, 6, 7, 249, 219, 227, 249, 11, 20, 4, 229, 241, 7, 0, 242, 254, 225, 185, 253, 58, 16, 216, 223, 232, 244, 246, 235, 13, 40,
-			8, 220, 201, 211, 8, 55, 18, 239, 241, 250, 254, 2, 18, 30, 22, 44, 22, 217, 193, 7, 70, 52, 28, 248, 218, 234, 238, 19, 37, 13,
-			254, 16, 1, 215, 222, 14, 28, 28, 14, 248, 240, 11, 0, 250, 18, 18, 255, 222, 241, 20, 29, 252, 233, 254, 7, 235, 231, 21, 38, 238,
-			226, 238, 236, 3, 25, 23, 11, 231, 234, 2, 1, 26, 43, 22, 223, 220, 241, 238, 254, 19, 33, 1, 234, 186, 207, 34, 47, 16, 245, 3,
-			10, 232, 204, 245, 60, 48, 235, 248, 16, 2, 0, 16, 11, 25, 37, 12, 254, 250, 251, 48, 53, 251, 236, 9, 25, 14, 247, 2, 250, 223,
-			172, 236, 25, 38, 47, 0, 174, 182, 237, 5, 5, 26, 47, 0, 204, 190, 199, 254, 72, 54, 251, 221, 236, 252, 18, 12, 12, 25, 23, 8,
-			234, 231, 19, 19, 239, 233, 25, 30, 0, 0, 21, 9, 241, 212, 222, 22, 45, 22, 217, 228, 18, 13, 237, 220, 233, 18, 33, 246, 201, 221,
-			1, 14, 2, 8, 11, 228, 228, 8, 20, 14, 18, 24, 252, 15, 21, 21, 29, 15, 0, 48, 74, 247, 223, 35, 57, 6, 18, 45, 27, 241,
-			237, 216, 247, 7, 249, 239, 252, 4, 5, 241, 245, 233, 226, 249, 255, 252, 227, 248, 25, 0, 186, 237, 43, 241, 226, 13, 31, 238, 178, 185,
-			17, 51, 3, 254, 25, 0, 205, 212, 255, 22, 39, 25, 254, 244, 246, 226, 254, 48, 40, 19, 235, 202, 225, 19, 19, 23, 46, 32, 236, 169,
-			168, 234, 51, 74, 66, 25, 212, 146, 199, 26, 83, 74, 35, 241, 196, 176, 224, 32, 92, 79, 12, 242, 207, 205, 0, 66, 111, 79, 242, 192,
-			199, 4, 63, 82, 48, 242, 227, 195, 210, 12, 71, 49, 251, 221, 185, 208, 242, 3, 34, 48, 6, 205, 202, 235, 15, 38, 22, 4, 228, 236,
-			250, 226, 229, 19, 34, 1, 251, 15, 11, 250, 212, 211, 10, 48, 26, 253, 0, 245, 235, 1, 11, 25, 11, 13, 20, 249, 216, 221, 13, 58,
-			30, 239, 201, 230, 244, 0, 0, 6, 251, 13, 11, 228, 225, 243, 29, 47, 13, 252, 251, 228, 223, 24, 57, 15, 0, 0, 2, 247, 236, 6,
-			22, 7, 0, 251, 243, 236, 238, 250, 9, 37, 35, 234, 207, 248, 17, 5, 255, 11, 1, 223, 205, 235, 48, 38, 8, 238, 221, 236, 5, 49,
-			45, 1, 233, 253, 8, 4, 17, 41, 35, 8, 246, 240, 5, 35, 33, 4, 23, 10, 232, 230, 243, 11, 28, 36, 4, 250, 247, 199, 220, 4,
-			28, 45, 15, 187, 187, 11, 17, 226, 240, 20, 11, 235, 202, 219, 238, 249, 241, 41, 54, 219, 207, 235, 248, 15, 18, 5, 34, 35, 247, 206,
-			247, 48, 54, 4, 219, 250, 18, 1, 1, 12, 253, 255, 18, 228, 226, 39, 31, 222, 244, 238, 236, 5, 9, 21, 42, 6, 206, 208, 234, 8,
-			73, 103, 1, 185, 201, 217, 2, 51, 64, 78, 42, 192, 152, 226, 31, 47, 65, 78, 42, 179, 132, 228, 36, 40, 60, 44, 22, 249, 218, 185,
-			236, 44, 32, 39, 53, 16, 218, 183, 226, 29, 48, 38, 235, 230, 10, 0, 226, 247, 27, 25, 253, 217, 239, 3, 250, 234, 239, 20, 233, 226,
-			2, 24, 38, 6, 192, 236, 31, 236, 230, 9, 26, 50, 10, 193, 186, 238, 26, 29, 19, 21, 1, 226, 205, 223, 250, 38, 45, 27, 251, 214,
-			190, 235, 33, 50, 37, 253, 216, 212, 238, 5, 23, 8, 21, 18, 242, 217, 207, 7, 39, 38, 6, 227, 246, 33, 37, 252, 9, 35, 1, 211,
-			243, 23, 42, 20, 246, 8, 19, 222, 199, 10, 70, 34, 230, 205, 224, 25, 14, 226, 12, 51, 245, 198, 1, 37, 254, 233, 254, 19, 43, 10,
-			208, 218, 9, 31, 40, 8, 223, 233, 8, 240, 226, 2, 57, 34, 241, 3, 255, 244, 9, 38, 42, 18, 251, 0, 255, 235, 8, 30, 4, 6,
-			16, 254, 240, 249, 11, 41, 247, 227, 252, 2, 2, 5, 254, 14, 26, 10, 228, 227, 243, 11, 19, 253, 243, 0, 4, 238, 240, 3, 18, 255,
-			229, 246, 246, 14, 245, 214, 240, 12, 8, 246, 246, 253, 8, 253, 250, 253, 9, 28, 0, 248, 255, 254, 248, 16, 10, 228, 247, 255, 248, 5,
-			255, 248, 0, 249, 247, 241, 238, 239, 242, 2, 28, 24, 7, 237, 211, 226, 19, 36, 33, 29, 4, 251, 221, 221, 17, 42, 30, 0, 252, 239,
-			220, 5, 17, 20, 13, 13, 241, 226, 241, 0, 7, 21, 32, 35, 16, 253, 254, 23, 2, 253, 29, 39, 16, 242, 242, 24, 14, 0, 12, 19,
-			0, 221, 225, 10, 35, 15, 249, 8, 7, 221, 222, 3, 17, 26, 8, 242, 255, 251, 237, 219, 1, 35, 40, 243, 189, 202, 235, 12, 16, 25,
-			33, 255, 195, 183, 222, 252, 51, 38, 5, 0, 233, 180, 184, 11, 90, 100, 41, 219, 208, 1, 239, 230, 34, 68, 46, 255, 227, 201, 220, 5,
-			19, 47, 38, 251, 201, 181, 243, 23, 25, 21, 21, 6, 235, 202, 196, 10, 58, 33, 253, 240, 236, 246, 18, 2, 244, 9, 36, 16, 238, 243,
-			4, 14, 24, 1, 223, 4, 43, 255, 221, 9, 31, 4, 233, 253, 33, 17, 7, 52, 50, 2, 230, 231, 248, 1, 3, 52, 62, 14, 219, 197,
-			250, 47, 14, 234, 16, 38, 245, 197, 205, 240, 17, 47, 44, 12, 194, 183, 241, 25, 44, 15, 254, 255, 227, 199, 229, 23, 40, 46, 6, 207,
-			186, 213, 249, 16, 41, 42, 43, 235, 160, 194, 27, 89, 51, 243, 238, 237, 213, 213, 14, 72, 62, 11, 240, 225, 221, 3, 46, 44, 28, 0,
-			228, 189, 213, 20, 26, 32, 31, 1, 229, 199, 215, 11, 36, 9, 248, 10, 2, 238, 0, 14, 20, 6, 12, 8, 244, 242, 9, 32, 2, 235,
-			2, 12, 1, 254, 12, 18, 0, 240, 252, 241, 243, 39, 33, 239, 213, 246, 14, 0, 247, 252, 38, 22, 199, 190, 241, 31, 28, 244, 237, 2,
-			246, 214, 254, 55, 27, 239, 239, 13, 14, 248, 8, 0, 0, 11, 243, 242, 245, 5, 33, 249, 225, 250, 20, 248, 222, 22, 56, 6, 201, 218,
-			14, 30, 7, 251, 23, 34, 246, 204, 233, 24, 54, 34, 6, 2, 246, 234, 228, 245, 39, 38, 6, 242, 233, 240, 3, 15, 23, 31, 9, 233,
-			243, 254, 0, 2, 23, 40, 26, 252, 232, 244, 245, 0, 37, 28, 250, 236, 223, 227, 251, 5, 21, 49, 26, 235, 202, 215, 11, 39, 19, 253,
-			235, 249, 249, 224, 227, 16, 43, 14, 245, 232, 239, 255, 254, 11, 19, 6, 238, 241, 5, 12, 0, 242, 245, 251, 2, 15, 252, 235, 254, 14,
-			253, 244, 27, 27, 237, 235, 1, 28, 12, 243, 249, 6, 5, 0, 0, 6, 1, 11, 1, 244, 1, 248, 238, 2, 21, 14, 5, 0, 0, 11,
-			252, 216, 220, 26, 61, 16, 244, 0, 4, 232, 225, 245, 32, 63, 29, 240, 228, 214, 228, 18, 38, 32, 5, 224, 223, 242, 252, 247, 28, 56,
-			11, 219, 206, 213, 251, 24, 36, 36, 32, 1, 219, 214, 232, 10, 51, 50, 21, 229, 212, 239, 250, 5, 38, 52, 25, 232, 194, 223, 7, 20,
-			28, 39, 18, 237, 214, 236, 249, 0, 30, 35, 14, 230, 219, 241, 251, 255, 12, 21, 243, 215, 234, 0, 7, 254, 1, 254, 248, 248, 252, 255,
-			251, 245, 235, 255, 46, 53, 3, 233, 243, 249, 241, 240, 0, 40, 65, 29, 214, 220, 255, 1, 255, 39, 52, 10, 231, 212, 230, 15, 43, 28,
-			252, 245, 243, 250, 8, 251, 0, 26, 37, 10, 233, 219, 236, 14, 39, 36, 5, 235, 243, 252, 239, 0, 34, 20, 247, 240, 8, 14, 237, 241,
-			13, 19, 1, 254, 5, 253, 237, 233, 0, 23, 18, 252, 237, 245, 4, 8, 250, 255, 6, 1, 232, 222, 3, 40, 39, 0, 229, 242, 247, 237,
-			248, 15, 32, 24, 235, 221, 238, 254, 2, 244, 0, 30, 14, 232, 217, 232, 0, 11, 18, 8, 9, 1, 222, 235, 11, 7, 16, 23, 249, 242,
-			250, 246, 8, 40, 9, 224, 245, 19, 22, 5, 0, 1, 255, 253, 0, 14, 12, 254, 254, 17, 12, 229, 232, 0, 11, 10, 7, 251, 242, 246,
-			231, 230, 8, 26, 23, 5, 226, 222, 252, 23, 23, 7, 254, 250, 4, 21, 21, 23, 31, 26, 0, 239, 249, 13, 20, 16, 18, 30, 17, 250,
-			0, 17, 11, 247, 245, 236, 0, 25, 13, 235, 237, 253, 249, 245, 240, 238, 246, 247, 250, 253, 0, 0, 244, 244, 239, 242, 5, 13, 254, 240,
-			236, 253, 5, 252, 251, 9, 6, 235, 217, 241, 11, 12, 10, 15, 18, 254, 234, 247, 20, 10, 245, 2, 22, 17, 250, 242, 4, 1, 245, 231,
-			249, 26, 26, 4, 6, 9, 243, 228, 245, 16, 33, 19, 240, 235, 4, 18, 247, 235, 8, 33, 11, 242, 237, 251, 12, 11, 8, 15, 10, 1,
-			254, 253, 245, 255, 20, 31, 18, 252, 244, 253, 7, 23, 29, 23, 0, 239, 235, 247, 17, 26, 17, 3, 249, 242, 229, 235, 0, 17, 13, 255,
-			245, 246, 245, 239, 242, 11, 27, 12, 245, 231, 241, 246, 248, 10, 34, 26, 246, 233, 241, 254, 255, 247, 22, 50, 21, 234, 231, 4, 17, 12,
-			7, 0, 248, 246, 254, 10, 0, 237, 252, 17, 9, 247, 225, 237, 13, 11, 0, 1, 247, 227, 222, 235, 4, 25, 15, 0, 238, 222, 215, 234,
-			3, 26, 22, 0, 35, 9, 17, 0, 236, 5, 4, 238, 4, 25, 5, 241, 231, 8, 35, 1, 223, 21, 16, 5, 243, 242, 12, 32, 16, 240,
-			211, 207, 18, 20, 252, 2, 247, 8, 0, 17, 23, 40, 29, 243, 207, 190, 244, 45, 62, 5, 244, 212, 237, 251, 232, 235, 35, 66, 40, 247,
-			203, 203, 3, 55, 45, 26, 229, 225, 254, 240, 212, 243, 45, 54, 35, 235, 168, 203, 40, 70, 46, 233, 199, 3, 20, 6, 0, 13, 7, 16,
-			214, 200, 8, 46, 51, 12, 187, 184, 21, 72, 22, 235, 231, 17, 47, 16, 226, 200, 1, 46, 5, 214, 221, 16, 43, 10, 230, 249, 27, 3,
-			225, 5, 35, 16, 8, 209, 200, 9, 5, 64, 80, 217, 195, 243, 254, 53, 18, 218, 226, 5, 255, 252, 240, 243, 38, 54, 240, 226, 28, 3,
-			246, 7, 9, 6, 242, 194, 236, 39, 51, 22, 226, 238, 9, 15, 234, 245, 24, 29, 2, 218, 194, 245, 36, 49, 24, 241, 225, 8, 31, 10,
-			6, 244, 233, 234, 247, 245, 25, 35, 16, 255, 234, 213, 10, 17, 0, 255, 12, 7, 3, 250, 0, 254, 12, 22, 235, 229, 222, 251, 47, 56,
-			5, 247, 204, 226, 1, 5, 20, 17, 52, 47, 208, 169, 228, 13, 37, 33, 43, 246, 206, 208, 255, 46, 13, 2, 13, 5, 2, 233, 230, 5,
-			37, 20, 243, 219, 219, 8, 45, 17, 8, 254, 236, 215, 245, 29, 56, 42, 242, 215, 211, 243, 252, 29, 61, 48, 224, 161, 201, 11, 59, 58,
-			32, 232, 221, 220, 244, 19, 46, 12, 0, 241, 223, 13, 36, 253, 240, 13, 245, 241, 248, 242, 249, 23, 1, 8, 20, 1, 255, 255, 0, 250,
-			254, 253, 28, 11, 244, 249, 227, 230, 35, 34, 1, 230, 216, 1, 49, 32, 241, 219, 213, 10, 58, 28, 9, 255, 230, 244, 2, 237, 251, 18,
-			0, 14, 16, 250, 237, 225, 230, 16, 32, 7, 3, 12, 2, 241, 231, 23, 57, 12, 230, 236, 247, 249, 4, 239, 229, 14, 8, 0, 9, 3,
-			21, 15, 222, 243, 25, 19, 17, 248, 250, 255, 224, 232, 22, 37, 10, 245, 240, 230, 4, 20, 231, 239, 40, 41, 252, 231, 254, 13, 4, 243,
-			254, 26, 2, 235, 217, 235, 5, 18, 26, 9, 2, 15, 15, 238, 235, 8, 33, 254, 237, 250, 12, 255, 217, 232, 14, 12, 10, 253, 252, 15,
-			24, 252, 238, 246, 9, 9, 14, 44, 11, 223, 202, 229, 15, 35, 39, 245, 236, 231, 234, 254, 43, 52, 1, 175, 170, 20, 70, 63, 13, 201,
-			11, 35, 248, 242, 14, 5, 35, 8, 187, 181, 240, 24, 40, 18, 229, 23, 18, 238, 242, 42, 48, 31, 232, 132, 203, 68, 61, 5, 236, 230,
-			14, 31, 242, 5, 12, 6, 210, 206, 13, 70, 39, 254, 241, 235, 249, 241, 232, 245, 23, 51, 19, 199, 200, 239, 46, 34, 20, 26, 20, 246,
-			226, 241, 0, 240, 20, 45, 248, 230, 241, 237, 16, 24, 230, 222, 2, 250, 17, 26, 8, 8, 252, 199, 231, 41, 64, 60, 5, 234, 249, 9,
-			218, 239, 28, 246, 202, 206, 228, 20, 33, 3, 10, 32, 7, 242, 4, 242, 39, 74, 16, 6, 220, 191, 227, 16, 39, 31, 235, 179, 189, 244,
-			15, 64, 101, 32, 195, 180, 210, 26, 78, 51, 41, 253, 196, 212, 228, 0, 53, 41, 251, 232, 218, 217, 254, 23, 9, 26, 29, 246, 226, 248,
-			17, 15, 2, 245, 2, 19, 241, 238, 13, 9, 25, 252, 241, 249, 251, 12, 252, 1, 251, 232, 248, 9, 253, 11, 8, 4, 6, 240, 5, 22,
-			21, 8, 3, 244, 252, 253, 248, 248, 213, 228, 17, 39, 18, 25, 0, 242, 241, 224, 235, 29, 28, 30, 6, 239, 3, 220, 222, 9, 37, 62,
-			26, 215, 211, 247, 17, 13, 227, 246, 0, 252, 251, 245, 2, 54, 67, 242, 197, 233, 17, 10, 43, 1, 199, 233, 26, 19, 0, 241, 7, 23,
-			2, 234, 225, 0, 0, 251, 255, 18, 43, 1, 219, 238, 28, 51, 34, 221, 210, 238, 248, 5, 19, 6, 254, 1, 254, 242, 9, 7, 6, 241,
-			238, 252, 251, 11, 33, 51, 22, 255, 225, 201, 229, 13, 27, 24, 8, 238, 236, 243, 240, 253, 0, 18, 20, 255, 1, 19, 35, 13, 230, 233,
-			249, 255, 27, 9, 251, 248, 238, 220, 220, 13, 63, 45, 250, 230, 187, 217, 45, 54, 39, 254, 231, 247, 17, 6, 7, 34, 45, 247, 185, 174,
-			211, 252, 21, 40, 50, 24, 236, 217, 227, 18, 52, 57, 26, 237, 221, 233, 248, 9, 235, 252, 28, 4, 248, 221, 236, 1, 11, 21, 18, 9,
-			1, 247, 11, 34, 241, 217, 235, 26, 41, 3, 236, 5, 4, 248, 212, 194, 13, 90, 59, 10, 202, 206, 1, 249, 0, 18, 37, 28, 249, 210,
-			212, 5, 33, 24, 37, 26, 227, 220, 233, 243, 14, 26, 14, 251, 254, 240, 214, 239, 30, 41, 41, 253, 222, 221, 227, 15, 56, 49, 10, 245,
-			222, 241, 245, 6, 255, 218, 243, 26, 19, 0, 247, 238, 32, 34, 243, 234, 236, 22, 39, 25, 4, 238, 230, 243, 232, 242, 9, 9, 34, 3,
-			236, 238, 255, 254, 20, 14, 10, 14, 16, 6, 204, 221, 11, 24, 31, 255, 241, 249, 248, 255, 246, 0, 24, 24, 3, 228, 236, 0, 250, 4,
-			15, 14, 16, 247, 232, 250, 28, 21, 247, 239, 2, 15, 8, 236, 215, 13, 31, 254, 221, 240, 40, 42, 244, 216, 255, 40, 16, 233, 222, 10,
-			55, 34, 220, 209, 232, 253, 247, 251, 53, 45, 1, 229, 219, 246, 32, 37, 243, 240, 3, 19, 255, 225, 219, 13, 22, 14, 5, 254, 3, 10,
-			238, 210, 243, 30, 40, 27, 16, 242, 246, 227, 229, 8, 18, 21, 14, 237, 238, 255, 241, 0, 253, 9, 36, 24, 230, 224, 0, 31, 35, 3,
-			238, 249, 3, 232, 222, 239, 11, 34, 15, 5, 249, 21, 10, 241, 239, 4, 30, 9, 225, 232, 13, 12, 246, 215, 242, 28, 29, 34, 15, 255,
-			246, 240, 230, 235, 30, 35, 254, 233, 235, 250, 8, 7, 249, 33, 39, 0, 228, 231, 240, 0, 245, 7, 22, 23, 15, 248, 218, 238, 12, 42,
-			28, 243, 239, 231, 221, 13, 32, 12, 0, 8, 249, 240, 231, 1, 37, 23, 14, 255, 224, 234, 237, 0, 24, 35, 251, 227, 251, 17, 2, 250,
-			253, 14, 27, 253, 226, 239, 13, 9, 255, 254, 24, 25, 242, 230, 231, 238, 10, 15, 22, 254, 253, 242, 10, 21, 237, 0, 19, 10, 11, 5,
-			227, 227, 13, 27, 255, 228, 245, 13, 18, 13, 234, 230, 13, 22, 254, 241, 4, 28, 20, 251, 235, 241, 5, 2, 248, 252, 252, 19, 12, 252,
-			251, 19, 3, 236, 5, 1, 252, 254, 243, 242, 13, 13, 249, 249, 2, 17, 28, 7, 246, 253, 249, 235, 6, 254, 5, 6, 254, 252, 6, 17,
-			242, 248, 244, 254, 39, 30, 224, 215, 255, 24, 27, 3, 228, 255, 18, 253, 229, 241, 17, 14, 31, 248, 234, 254, 15, 252, 11, 4, 0, 10,
-			9, 235, 213, 248, 34, 31, 242, 235, 242, 23, 7, 238, 252, 17, 3, 255, 2, 14, 37, 245, 220, 229, 9, 34, 15, 248, 244, 241, 238, 9,
-			36, 22, 241, 228, 230, 230, 18, 33, 23, 3, 234, 234, 22, 15, 237, 250, 16, 39, 21, 250, 226, 229, 251, 1, 15, 7, 6, 0, 238, 249,
-			254, 227, 241, 9, 33, 54, 30, 216, 198, 232, 11, 58, 59, 26, 255, 207, 199, 235, 0, 26, 44, 14, 234, 221, 242, 247, 245, 5, 26, 40,
-			9, 235, 224, 1, 23, 19, 5, 1, 0, 1, 252, 251, 255, 5, 25, 255, 217, 224, 249, 23, 16, 2, 241, 233, 255, 25, 10, 9, 11, 243,
-			3, 27, 14, 254, 252, 7, 225, 204, 8, 46, 20, 248, 214, 234, 15, 3, 253, 20, 21, 11, 246, 227, 0, 25, 28, 11, 227, 206, 247, 37,
-			42, 4, 247, 20, 240, 196, 207, 24, 51, 42, 8, 225, 239, 244, 250, 10, 24, 27, 7, 229, 209, 235, 15, 56, 40, 8, 229, 226, 232, 244,
-			6, 36, 12, 242, 227, 242, 11, 44, 29, 1, 0, 237, 230, 242, 6, 10, 28, 10, 207, 218, 11, 21, 31, 28, 235, 243, 254, 251, 251, 6,
-			32, 12, 252, 226, 0, 35, 249, 223, 230, 253, 29, 25, 243, 219, 2, 22, 7, 10, 245, 14, 27, 246, 235, 1, 0, 9, 12, 242, 239, 5,
-			4, 254, 247, 0, 10, 4, 250, 250, 30, 5, 220, 241, 9, 26, 26, 248, 242, 16, 20, 231, 212, 243, 15, 56, 18, 232, 247, 250, 238, 250,
-			246, 30, 32, 255, 239, 232, 232, 16, 26, 11, 26, 11, 254, 236, 226, 241, 5, 1, 250, 22, 18, 244, 225, 0, 24, 23, 19, 247, 242, 4,
-			0, 244, 253, 2, 22, 254, 223, 236, 14, 14, 250, 0, 24, 27, 250, 214, 222, 34, 58, 26, 221, 203, 253, 25, 19, 0, 240, 0, 11, 223,
-			243, 249, 11, 34, 252, 248, 14, 4, 25, 5, 223, 3, 14, 20, 0, 207, 227, 9, 21, 28, 9, 240, 243, 250, 0, 248, 2, 33, 22, 231,
-			210, 242, 37, 40, 15, 0, 238, 242, 6, 1, 228, 251, 19, 25, 255, 244, 242, 245, 239, 254, 15, 13, 18, 6, 253, 16, 7, 251, 251, 246,
-			254, 1, 3, 251, 231, 241, 1, 11, 36, 31, 243, 230, 13, 245, 247, 10, 254, 5, 26, 247, 215, 242, 11, 31, 28, 0, 246, 0, 239, 234,
-			242, 7, 16, 25, 0, 241, 253, 12, 0, 255, 250, 8, 29, 253, 221, 239, 16, 29, 15, 228, 216, 253, 25, 28, 255, 247, 255, 0, 22, 249,
-			237, 253, 8, 254, 252, 14, 19, 250, 251, 241, 252, 0, 13, 21, 5, 245, 233, 5, 9, 13, 12, 239, 214, 233, 18, 33, 29, 246, 232, 255,
-			31, 2, 255, 3, 250, 0, 252, 249, 8, 11, 240, 247, 0, 247, 7, 4, 246, 9, 28, 18, 246, 218, 238, 25, 29, 6, 249, 244, 238, 246,
-			255, 10, 38, 24, 241, 234, 240, 249, 16, 11, 20, 0, 240, 223, 232, 254, 33, 38, 14, 248, 220, 242, 12, 16, 17, 255, 243, 253, 0, 15,
-			12, 247, 1, 236, 218, 255, 25, 33, 27, 250, 234, 239, 0, 4, 242, 254, 39, 44, 0, 219, 206, 246, 20, 7, 243, 250, 30, 35, 237, 224,
-			255, 22, 30, 8, 5, 254, 5, 247, 229, 215, 252, 20, 28, 0, 234, 250, 3, 245, 245, 13, 28, 52, 18, 225, 224, 3, 23, 1, 254, 13,
-			2, 229, 206, 231, 13, 39, 19, 10, 0, 231, 236, 3, 17, 31, 28, 9, 247, 225, 217, 237, 5, 36, 37, 16, 237, 222, 227, 3, 15, 31,
-			10, 243, 246, 236, 18, 31, 247, 237, 6, 23, 2, 237, 240, 239, 5, 26, 2, 255, 2, 1, 13, 242, 242, 253, 0, 28, 29, 249, 226, 243,
-			2, 9, 255, 11, 18, 8, 242, 226, 232, 11, 22, 20, 13, 253, 244, 233, 228, 248, 15, 47, 42, 243, 228, 244, 252, 20, 21, 0, 10, 231,
-			207, 254, 26, 14, 254, 244, 248, 24, 13, 245, 224, 252, 29, 24, 0, 235, 2, 19, 26, 249, 231, 247, 17, 255, 236, 253, 7, 0, 248, 0,
-			2, 251, 0, 255, 14, 29, 12, 239, 238, 253, 8, 27, 9, 245, 237, 240, 1, 8, 3, 13, 5, 243, 236, 1, 2, 252, 4, 25, 6, 4,
-			255, 249, 255, 239, 10, 27, 254, 244, 246, 241, 0, 19, 4, 3, 9, 247, 1, 16, 240, 244, 248, 250, 6, 4, 13, 13, 249, 239, 255, 14,
-			23, 9, 251, 237, 246, 2, 28, 11, 245, 222, 243, 6, 18, 4, 1, 237, 1, 11, 7, 251, 246, 8, 29, 8, 2, 253, 236, 229, 5, 25,
-			13, 16, 245, 225, 232, 1, 15, 20, 7, 246, 4, 245, 0, 13, 1, 249, 8, 14, 18, 246, 211, 246, 25, 31, 0, 253, 249, 231, 0, 2,
-			7, 31, 16, 249, 228, 211, 241, 31, 35, 16, 2, 241, 241, 237, 255, 27, 21, 6, 243, 242, 252, 3, 14, 8, 1, 2, 248, 234, 2, 3,
-			13, 7, 230, 227, 14, 11, 13, 19, 2, 254, 2, 236, 244, 21, 19, 0, 255, 0, 250, 241, 233, 252, 18, 19, 19, 7, 241, 245, 239, 233,
-			9, 29, 28, 8, 253, 241, 238, 231, 242, 11, 43, 27, 5, 237, 223, 243, 15, 14, 11, 16, 0, 241, 247, 0, 245, 245, 245, 20, 38, 16,
-			243, 226, 236, 10, 21, 1, 247, 255, 0, 22, 3, 237, 0, 0, 10, 15, 1, 5, 248, 240, 1, 4, 249, 248, 255, 255, 2, 3, 2, 17,
-			8, 251, 235, 253, 24, 25, 7, 236, 239, 5, 254, 248, 6, 0, 8, 0, 246, 250, 4, 9, 17, 11, 245, 244, 246, 247, 14, 11, 242, 238,
-			6, 29, 30, 4, 232, 245, 253, 248, 0, 251, 0, 24, 23, 243, 220, 235, 7, 37, 32, 254, 238, 242, 255, 1, 7, 6, 8, 253, 235, 238,
-			7, 6, 7, 12, 2, 13, 248, 223, 11, 40, 14, 243, 240, 229, 228, 5, 23, 40, 44, 246, 206, 221, 240, 12, 28, 15, 8, 3, 0, 238,
-			230, 0, 37, 30, 251, 239, 254, 2, 246, 243, 246, 6, 22, 12, 1, 253, 246, 240, 251, 7, 15, 10, 4, 9, 248, 246, 242, 249, 255, 6,
-			15, 13, 7, 247, 244, 253, 0, 2, 16, 23, 251, 231, 244, 6, 9, 13, 252, 239, 251, 252, 252, 10, 13, 8, 254, 252, 243, 5, 13, 9,
-			2, 3, 247, 245, 6, 9, 0, 0, 95, 9, 10, 0, 223, 218, 13, 232, 202, 44, 18, 246, 1, 244, 0, 22, 52, 32, 248, 255, 36, 26,
-			5, 21, 28, 252, 15, 227, 225, 204, 189, 5, 237, 242, 244, 207, 2, 240, 254, 62, 56, 11, 255, 52, 34, 28, 42, 53, 11, 173, 209, 255,
-			13, 243, 224, 183, 191, 210, 26, 43, 246, 24, 39, 22, 254, 249, 20, 84, 64, 3, 236, 201, 192, 225, 0, 12, 29, 26, 238, 204, 243, 250,
-			246, 62, 46, 45, 246, 226, 187, 209, 13, 63, 75, 9, 216, 233, 204, 203, 8, 41, 40, 7, 17, 217, 206, 25, 50, 43, 55, 40, 1, 207,
-			187, 212, 21, 10, 6, 226, 188, 207, 239, 0, 10, 60, 74, 57, 5, 229, 9, 65, 53, 46, 238, 206, 218, 245, 203, 148, 179, 4, 40, 1,
-			2, 212, 223, 56, 105, 101, 51, 2, 46, 16, 20, 23, 201, 177, 209, 225, 228, 207, 161, 205, 11, 240, 26, 59, 72, 73, 51, 47, 32, 17,
-			9, 49, 251, 229, 204, 201, 207, 167, 188, 16, 244, 248, 27, 252, 241, 20, 64, 91, 52, 23, 28, 6, 224, 239, 250, 242, 231, 238, 216, 183,
-			243, 45, 46, 239, 11, 0, 5, 11, 7, 29, 225, 248, 38, 0, 198, 220, 23, 25, 7, 23, 17, 225, 0, 44, 32, 8, 6, 21, 238, 204,
-			226, 223, 242, 236, 6, 247, 204, 211, 38, 96, 39, 249, 10, 20, 51, 50, 12, 0, 234, 227, 0, 251, 202, 184, 223, 5, 247, 218, 251, 15,
-			7, 60, 34, 10, 47, 30, 7, 243, 13, 42, 242, 241, 233, 209, 200, 240, 27, 8, 229, 253, 19, 217, 253, 58, 245, 235, 47, 49, 25, 229,
-			253, 14, 19, 10, 1, 230, 215, 231, 10, 238, 204, 249, 12, 254, 14, 52, 16, 230, 33, 45, 236, 29, 33, 31, 223, 164, 239, 30, 234, 218,
-			253, 242, 238, 239, 22, 19, 40, 18, 46, 46, 16, 248, 244, 250, 234, 247, 11, 239, 206, 177, 227, 32, 38, 11, 240, 14, 33, 37, 0, 240,
-			250, 35, 74, 30, 214, 169, 215, 39, 24, 23, 210, 196, 0, 236, 4, 33, 2, 35, 48, 28, 251, 184, 226, 59, 41, 243, 253, 223, 231, 239,
-			232, 250, 4, 76, 79, 2, 218, 204, 231, 17, 46, 32, 237, 230, 236, 250, 224, 214, 2, 19, 49, 34, 251, 182, 220, 49, 65, 53, 18, 13,
-			242, 229, 19, 2, 216, 221, 255, 26, 253, 207, 159, 202, 10, 60, 52, 19, 12, 22, 47, 24, 235, 3, 55, 65, 54, 188, 160, 178, 211, 250,
-			40, 19, 221, 231, 211, 205, 32, 70, 61, 50, 34, 16, 247, 240, 253, 31, 33, 4, 0, 171, 200, 235, 251, 219, 209, 60, 14, 233, 242, 17,
-			38, 45, 59, 63, 250, 207, 21, 28, 196, 225, 22, 7, 178, 186, 59, 238, 199, 244, 24, 37, 17, 26, 58, 250, 7, 66, 21, 242, 5, 19,
-			240, 199, 178, 235, 38, 35, 201, 141, 166, 40, 104, 47, 234, 5, 74, 53, 22, 1, 5, 64, 70, 3, 185, 146, 191, 0, 4, 192, 211, 223,
-			19, 6, 228, 2, 33, 66, 84, 84, 36, 229, 0, 21, 42, 19, 220, 244, 180, 179, 238, 227, 211, 158, 226, 61, 32, 31, 25, 18, 47, 72,
-			85, 27, 21, 18, 0, 210, 187, 230, 218, 189, 231, 232, 2, 238, 218, 6, 48, 65, 27, 19, 39, 37, 251, 12, 59, 26, 231, 199, 218, 214,
-			175, 220, 50, 12, 224, 211, 254, 14, 28, 62, 81, 45, 19, 21, 1, 201, 215, 54, 16, 241, 202, 154, 168, 3, 22, 7, 253, 15, 28, 21,
-			32, 37, 51, 26, 57, 36, 0, 234, 225, 218, 177, 220, 5, 250, 237, 188, 191, 253, 36, 48, 57, 39, 11, 23, 29, 20, 19, 37, 36, 0,
-			213, 245, 225, 244, 201, 195, 230, 237, 12, 9, 232, 187, 19, 45, 64, 66, 22, 19, 11, 32, 49, 27, 1, 224, 217, 211, 210, 221, 212, 218,
-			248, 31, 222, 255, 34, 26, 21, 32, 59, 17, 10, 45, 5, 246, 227, 231, 13, 237, 200, 213, 240, 210, 241, 47, 34, 25, 251, 1, 38, 26,
-			14, 20, 45, 6, 216, 231, 246, 220, 203, 254, 33, 244, 238, 252, 0, 229, 2, 60, 27, 38, 9, 5, 252, 255, 2, 27, 237, 220, 16, 44,
-			202, 178, 244, 254, 28, 33, 244, 177, 35, 47, 6, 255, 247, 55, 39, 251, 227, 253, 25, 22, 243, 233, 223, 20, 246, 219, 229, 3, 35, 254,
-			17, 217, 0, 5, 30, 64, 245, 194, 255, 38, 24, 241, 3, 10, 236, 224, 33, 17, 231, 213, 9, 52, 255, 0, 5, 211, 230, 35, 61, 21,
-			174, 231, 17, 254, 0, 24, 12, 228, 27, 2, 236, 229, 9, 61, 35, 12, 241, 207, 250, 253, 47, 22, 202, 226, 226, 4, 251, 251, 5, 18,
-			16, 11, 23, 0, 229, 236, 40, 60, 17, 216, 229, 224, 13, 31, 7, 229, 226, 254, 31, 4, 218, 234, 22, 46, 21, 17, 217, 207, 8, 38,
-			20, 234, 238, 19, 2, 232, 5, 19, 12, 249, 3, 9, 21, 234, 235, 18, 4, 10, 13, 245, 212, 227, 28, 11, 237, 0, 1, 252, 235, 22,
-			17, 15, 22, 19, 27, 250, 5, 1, 223, 242, 10, 20, 221, 219, 230, 225, 17, 24, 10, 231, 24, 64, 16, 242, 224, 16, 47, 36, 1, 224,
-			209, 247, 4, 251, 234, 243, 251, 253, 15, 6, 254, 236, 7, 55, 44, 254, 201, 246, 53, 20, 251, 231, 236, 23, 19, 5, 180, 217, 23, 22,
-			247, 237, 240, 22, 17, 9, 2, 248, 20, 30, 62, 14, 238, 2, 245, 245, 222, 240, 254, 223, 0, 233, 202, 12, 12, 29, 251, 34, 54, 250,
-			1, 10, 28, 7, 19, 27, 237, 208, 233, 8, 246, 232, 2, 245, 224, 9, 5, 243, 210, 33, 55, 249, 229, 254, 68, 4, 251, 35, 32, 27,
-			6, 10, 227, 164, 5, 59, 232, 168, 248, 247, 223, 247, 13, 10, 228, 50, 53, 16, 11, 18, 66, 0, 6, 23, 0, 252, 222, 236, 218, 188,
-			235, 243, 7, 227, 229, 18, 11, 19, 32, 50, 39, 17, 41, 14, 225, 242, 25, 28, 191, 214, 7, 249, 206, 229, 255, 4, 238, 59, 7, 209,
-			35, 57, 11, 211, 34, 54, 20, 224, 224, 242, 0, 0, 32, 210, 213, 10, 31, 9, 211, 4, 254, 43, 37, 235, 230, 251, 7, 46, 1, 220,
-			228, 48, 47, 213, 233, 233, 10, 48, 6, 232, 206, 249, 36, 13, 5, 235, 5, 13, 2, 2, 210, 0, 56, 51, 231, 208, 32, 5, 241, 247,
-			5, 233, 255, 34, 241, 205, 241, 32, 44, 41, 234, 200, 11, 29, 20, 18, 217, 237, 19, 7, 252, 236, 250, 3, 16, 32, 236, 223, 254, 255,
-			42, 12, 215, 237, 29, 38, 250, 244, 244, 246, 31, 17, 221, 234, 33, 28, 224, 210, 2, 32, 51, 2, 215, 228, 5, 40, 8, 232, 227, 13,
-			48, 254, 239, 230, 225, 58, 45, 1, 183, 220, 23, 42, 34, 170, 226, 70, 56, 237, 203, 255, 33, 50, 19, 221, 216, 230, 20, 14, 228, 3,
-			0, 255, 233, 245, 9, 5, 35, 254, 13, 5, 35, 18, 2, 237, 254, 15, 17, 232, 195, 235, 15, 253, 232, 237, 229, 28, 43, 25, 225, 235,
-			38, 50, 42, 232, 0, 4, 28, 13, 238, 208, 242, 10, 13, 214, 213, 238, 22, 246, 215, 255, 15, 52, 37, 246, 38, 32, 46, 3, 212, 6,
-			6, 30, 232, 196, 215, 241, 5, 196, 236, 35, 19, 34, 245, 246, 39, 30, 14, 7, 45, 34, 249, 228, 179, 216, 20, 48, 247, 203, 208, 249,
-			12, 7, 22, 35, 34, 26, 13, 14, 244, 249, 12, 0, 3, 242, 201, 208, 214, 237, 9, 48, 30, 10, 227, 231, 27, 59, 67, 36, 27, 247,
-			222, 233, 237, 234, 245, 237, 223, 252, 227, 214, 4, 220, 251, 55, 81, 57, 3, 239, 244, 33, 54, 36, 22, 3, 241, 199, 188, 195, 228, 8,
-			2, 240, 0, 222, 246, 235, 27, 80, 36, 32, 60, 36, 237, 206, 247, 48, 39, 11, 230, 173, 172, 246, 22, 250, 244, 243, 3, 255, 3, 239,
-			24, 45, 48, 24, 21, 12, 241, 252, 4, 253, 3, 247, 5, 227, 190, 227, 230, 38, 46, 238, 250, 15, 8, 21, 228, 249, 71, 8, 246, 247,
-			245, 226, 235, 35, 39, 211, 5, 21, 22, 239, 215, 24, 34, 17, 12, 217, 211, 0, 6, 231, 217, 255, 17, 29, 255, 255, 250, 40, 45, 20,
-			33, 22, 3, 4, 218, 235, 221, 236, 2, 225, 225, 216, 233, 2, 7, 23, 26, 48, 21, 13, 28, 14, 35, 34, 30, 4, 202, 236, 211, 224,
-			251, 215, 225, 224, 233, 1, 253, 15, 16, 36, 56, 53, 52, 16, 15, 3, 0, 1, 245, 238, 216, 223, 220, 225, 219, 224, 252, 5, 24, 11,
-			5, 22, 47, 40, 4, 24, 32, 51, 11, 230, 246, 248, 220, 219, 225, 222, 217, 254, 242, 209, 252, 30, 75, 32, 11, 2, 25, 63, 27, 253,
-			246, 251, 4, 249, 238, 213, 219, 230, 222, 0, 240, 229, 18, 16, 13, 0, 35, 45, 32, 14, 23, 33, 12, 233, 244, 10, 236, 212, 247, 211,
-			189, 235, 22, 252, 249, 10, 13, 32, 29, 14, 23, 27, 57, 51, 254, 210, 213, 5, 247, 239, 235, 229, 213, 251, 3, 200, 234, 37, 48, 52,
-			11, 252, 2, 8, 36, 35, 15, 248, 247, 20, 235, 212, 236, 243, 1, 1, 232, 237, 236, 239, 0, 17, 12, 252, 21, 51, 12, 1, 21, 19,
-			12, 23, 30, 7, 210, 228, 234, 230, 220, 226, 2, 0, 221, 238, 1, 2, 28, 40, 41, 38, 23, 8, 254, 11, 31, 22, 239, 235, 228, 232,
-			237, 214, 223, 238, 252, 9, 1, 241, 0, 17, 31, 34, 35, 23, 7, 35, 25, 254, 224, 253, 241, 249, 251, 236, 221, 226, 246, 247, 246, 247,
-			12, 22, 24, 21, 255, 255, 18, 34, 41, 9, 241, 230, 11, 20, 214, 212, 10, 6, 235, 236, 236, 0, 5, 15, 9, 241, 4, 48, 48, 247,
-			215, 11, 23, 20, 13, 249, 232, 226, 7, 250, 244, 233, 236, 11, 11, 245, 252, 11, 24, 5, 18, 32, 4, 254, 25, 6, 242, 229, 236, 248,
-			240, 243, 6, 249, 226, 250, 13, 20, 17, 20, 31, 8, 255, 32, 253, 217, 7, 15, 249, 252, 247, 227, 208, 235, 20, 13, 255, 242, 17, 37,
-			20, 13, 5, 246, 19, 39, 18, 219, 216, 249, 245, 255, 236, 230, 0, 28, 12, 213, 253, 38, 31, 36, 227, 241, 21, 40, 31, 233, 204, 231,
-			33, 38, 228, 201, 231, 18, 22, 252, 234, 229, 21, 37, 36, 5, 236, 7, 32, 1, 241, 4, 3, 253, 10, 17, 215, 225, 7, 248, 237, 246,
-			3, 243, 0, 23, 11, 250, 11, 36, 22, 9, 13, 15, 255, 247, 253, 246, 225, 2, 11, 218, 215, 245, 0, 15, 7, 8, 255, 5, 32, 2,
-			0, 15, 37, 37, 249, 223, 227, 15, 25, 243, 214, 243, 13, 235, 225, 250, 15, 22, 8, 6, 0, 246, 18, 41, 0, 0, 7, 3, 245, 245,
-			246, 253, 5, 236, 231, 5, 11, 21, 0, 255, 4, 252, 16, 1, 7, 3, 252, 8, 231, 243, 250, 16, 2, 246, 9, 250, 241, 1, 8, 242,
-			1, 36, 18, 2, 255, 0, 6, 15, 31, 12, 246, 223, 235, 240, 207, 230, 1, 11, 255, 238, 231, 254, 33, 62, 34, 28, 42, 27, 23, 16,
-			226, 221, 253, 0, 233, 206, 195, 198, 223, 250, 3, 13, 17, 22, 42, 40, 37, 41, 37, 34, 26, 10, 0, 236, 216, 204, 214, 223, 216, 221,
-			248, 5, 241, 249, 3, 23, 60, 55, 33, 21, 7, 23, 25, 254, 238, 235, 245, 236, 234, 222, 216, 249, 9, 252, 0, 19, 48, 13, 233, 254,
-			18, 42, 7, 239, 239, 228, 248, 0, 254, 250, 0, 17, 11, 0, 10, 31, 20, 2, 253, 11, 250, 239, 230, 211, 234, 6, 249, 239, 236, 0,
-			20, 11, 19, 27, 40, 39, 16, 16, 28, 248, 243, 250, 237, 229, 211, 228, 232, 221, 236, 241, 253, 252, 45, 66, 9, 13, 47, 38, 36, 5,
-			0, 246, 239, 15, 240, 196, 173, 206, 16, 12, 241, 239, 247, 19, 32, 29, 32, 31, 54, 46, 16, 242, 235, 243, 243, 235, 216, 205, 231, 246,
-			246, 240, 253, 16, 46, 39, 17, 20, 11, 14, 16, 9, 3, 255, 0, 254, 229, 200, 218, 255, 5, 17, 234, 239, 1, 11, 20, 11, 15, 37,
-			36, 19, 255, 233, 4, 10, 7, 0, 221, 226, 236, 228, 231, 240, 13, 6, 2, 16, 14, 17, 26, 19, 21, 29, 19, 2, 248, 225, 237, 254,
-			0, 241, 214, 238, 247, 251, 4, 1, 250, 23, 30, 10, 8, 12, 6, 8, 15, 7, 245, 253, 22, 252, 231, 229, 247, 11, 8, 247, 235, 250,
-			255, 247, 243, 19, 5, 7, 33, 16, 245, 238, 24, 34, 250, 254, 14, 255, 236, 249, 8, 226, 232, 12, 20, 248, 232, 245, 249, 0, 11, 17,
-			3, 251, 36, 26, 239, 245, 22, 21, 248, 254, 13, 242, 225, 247, 245, 232, 13, 22, 249, 245, 7, 3, 243, 20, 33, 251, 253, 7, 255, 244,
-			251, 248, 252, 24, 19, 248, 239, 245, 12, 255, 242, 13, 30, 6, 245, 233, 240, 0, 27, 14, 245, 245, 244, 1, 21, 239, 228, 5, 36, 28,
-			245, 233, 245, 21, 29, 14, 245, 252, 7, 7, 253, 229, 228, 253, 20, 253, 229, 232, 254, 12, 14, 11, 5, 7, 31, 41, 2, 247, 0, 26,
-			2, 235, 244, 229, 248, 236, 209, 237, 1, 0, 6, 19, 21, 21, 13, 15, 27, 18, 25, 18, 245, 221, 246, 20, 232, 195, 229, 7, 17, 244,
-			229, 239, 9, 39, 38, 7, 238, 23, 58, 22, 218, 240, 21, 23, 240, 221, 233, 235, 247, 254, 8, 246, 241, 29, 11, 238, 1, 18, 28, 22,
-			255, 1, 253, 4, 11, 242, 229, 254, 15, 249, 233, 0, 15, 9, 76, 0, 239, 0, 5, 252, 8, 8, 8, 14, 14, 250, 7, 251, 253, 8,
-			245, 249, 0, 6, 18, 26, 22, 21, 15, 12, 0, 245, 240, 240, 247, 5, 17, 20, 27, 18, 18, 5, 248, 255, 248, 237, 246, 0, 1, 17,
-			25, 16, 4, 6, 2, 5, 5, 5, 245, 0, 9, 2, 255, 4, 248, 254, 14, 12, 14, 8, 0, 2, 5, 4, 253, 233, 249, 4, 11, 13,
-			8, 11, 17, 17, 252, 238, 233, 248, 247, 0, 2, 3, 22, 41, 18, 253, 253, 230, 236, 238, 228, 236, 14, 27, 32, 26, 9, 11, 6, 247,
-			233, 221, 226, 246, 255, 5, 17, 34, 28, 21, 5, 227, 226, 239, 245, 236, 238, 246, 7, 27, 26, 10, 7, 12, 12, 5, 254, 236, 239, 242,
-			244, 6, 7, 7, 16, 29, 19, 7, 10, 247, 235, 237, 232, 235, 245, 1, 6, 255, 15, 7, 15, 10, 253, 249, 248, 235, 238, 238, 237, 251,
-			255, 253, 12, 21, 13, 17, 251, 242, 243, 248, 248, 245, 247, 1, 6, 3, 11, 2, 3, 251, 249, 253, 243, 3, 11, 240, 244, 11, 251, 10,
-			22, 10, 18, 16, 10, 1, 238, 239, 241, 240, 251, 3, 8, 9, 1, 2, 8, 10, 0, 249, 241, 242, 251, 239, 236, 251, 9, 9, 20, 11,
-			15, 18, 1, 238, 224, 225, 241, 246, 250, 6, 24, 30, 35, 17, 10, 255, 254, 246, 238, 248, 254, 14, 14, 15, 8, 18, 11, 19, 2, 254,
-			3, 0, 0, 0, 251, 14, 15, 255, 9, 247, 4, 5, 247, 244, 241, 254, 25, 23, 16, 255, 255, 20, 12, 12, 252, 236, 0, 30, 9, 0,
-			255, 2, 15, 34, 16, 255, 255, 18, 28, 13, 251, 245, 14, 17, 18, 20, 0, 0, 18, 5, 254, 250, 250, 245, 252, 3, 242, 0, 13, 254,
-			10, 8, 252, 18, 30, 7, 0, 8, 10, 1, 8, 246, 224, 3, 29, 19, 20, 20, 2, 4, 252, 230, 227, 250, 4, 11, 10, 8, 11, 15,
-			10, 5, 245, 234, 9, 11, 3, 12, 26, 13, 25, 11, 255, 9, 14, 255, 243, 255, 12, 11, 29, 26, 29, 29, 5, 0, 249, 252, 239, 238,
-			242, 14, 32, 38, 28, 31, 18, 9, 237, 227, 225, 245, 252, 7, 29, 3, 32, 31, 8, 16, 247, 246, 5, 250, 253, 20, 17, 20, 19, 254,
-			22, 26, 18, 0, 251, 246, 247, 11, 5, 250, 5, 11, 5, 31, 13, 13, 15, 8, 1, 250, 0, 5, 14, 14, 24, 0, 13, 27, 8, 0,
-			250, 248, 3, 6, 3, 19, 8, 11, 21, 0, 245, 237, 233, 225, 236, 4, 10, 28, 36, 42, 41, 35, 8, 239, 220, 229, 222, 218, 241, 247,
-			27, 52, 35, 25, 27, 249, 246, 231, 211, 217, 247, 253, 15, 14, 4, 9, 21, 16, 5, 240, 222, 238, 242, 251, 239, 242, 9, 14, 19, 9,
-			243, 247, 0, 2, 243, 226, 234, 7, 12, 7, 246, 0, 9, 20, 16, 250, 237, 253, 7, 238, 0, 248, 2, 26, 18, 254, 11, 25, 13, 6,
-			3, 0, 10, 26, 0, 243, 2, 15, 12, 254, 239, 250, 8, 5, 231, 231, 236, 13, 26, 17, 10, 6, 6, 253, 223, 212, 219, 223, 249, 23,
-			30, 35, 34, 26, 251, 229, 219, 206, 225, 253, 2, 0, 22, 28, 35, 24, 31, 11, 243, 11, 249, 243, 240, 249, 251, 22, 21, 9, 28, 19,
-			0, 3, 245, 225, 0, 251, 253, 13, 7, 9, 27, 11, 1, 245, 240, 11, 250, 5, 253, 240, 6, 20, 9, 19, 11, 12, 5, 255, 6, 250,
-			245, 235, 250, 17, 41, 35, 40, 9, 254, 253, 246, 227, 231, 244, 245, 30, 27, 12, 26, 29, 249, 244, 233, 219, 251, 4, 232, 253, 20, 15,
-			45, 20, 243, 0, 8, 0, 253, 229, 247, 19, 3, 35, 27, 12, 17, 254, 241, 234, 229, 226, 241, 243, 20, 22, 17, 22, 9, 250, 251, 239,
-			238, 235, 233, 224, 252, 21, 6, 21, 14, 255, 16, 20, 234, 247, 244, 0, 10, 21, 26, 23, 40, 37, 2, 236, 221, 213, 236, 11, 0, 8,
-			22, 67, 56, 31, 5, 237, 246, 247, 214, 212, 250, 5, 22, 22, 22, 12, 34, 34, 0, 239, 249, 226, 246, 255, 232, 245, 1, 24, 37, 37,
-			31, 14, 8, 0, 241, 222, 214, 219, 234, 234, 12, 37, 44, 58, 41, 12, 254, 246, 243, 208, 201, 224, 3, 40, 54, 35, 20, 32, 43, 12,
-			233, 228, 228, 220, 240, 236, 235, 25, 51, 49, 32, 13, 0, 2, 247, 217, 191, 220, 232, 6, 41, 252, 7, 45, 12, 253, 238, 200, 253, 10,
-			252, 248, 232, 249, 26, 7, 18, 250, 6, 29, 0, 15, 5, 249, 244, 236, 235, 10, 20, 11, 247, 238, 4, 24, 15, 11, 0, 239, 233, 239,
-			228, 219, 230, 7, 0, 21, 21, 16, 24, 9, 221, 215, 217, 219, 5, 252, 16, 13, 19, 34, 40, 27, 252, 234, 237, 224, 224, 242, 223, 3,
-			30, 19, 34, 35, 18, 3, 220, 211, 191, 185, 221, 225, 252, 36, 50, 65, 54, 32, 4, 224, 211, 208, 192, 205, 239, 2, 6, 44, 55, 28,
-			40, 10, 240, 218, 216, 206, 206, 233, 249, 13, 35, 41, 45, 28, 14, 9, 241, 216, 204, 214, 240, 249, 9, 5, 3, 33, 18, 245, 228, 213,
-			239, 252, 254, 13, 21, 9, 31, 0, 228, 225, 230, 242, 9, 8, 0, 10, 12, 30, 13, 4, 238, 223, 243, 11, 236, 215, 205, 223, 4, 31,
-			23, 253, 9, 10, 0, 239, 209, 198, 233, 241, 246, 15, 0, 8, 30, 25, 35, 14, 234, 231, 220, 219, 220, 225, 244, 27, 42, 18, 36, 28,
-			255, 226, 212, 214, 242, 244, 0, 255, 4, 35, 40, 18, 246, 236, 241, 250, 236, 226, 216, 240, 4, 34, 20, 6, 7, 0, 5, 3, 251, 229,
-			3, 4, 13, 3, 11, 23, 22, 255, 5, 251, 1, 30, 15, 255, 230, 2, 6, 18, 5, 4, 9, 19, 23, 0, 239, 225, 234, 236, 21, 14,
-			12, 12, 15, 254, 250, 231, 206, 226, 231, 251, 19, 35, 9, 3, 4, 16, 2, 249, 252, 236, 230, 247, 233, 240, 1, 253, 17, 31, 43, 39,
-			13, 0, 247, 242, 255, 225, 232, 15, 28, 50, 34, 21, 36, 5, 238, 231, 203, 216, 227, 219, 245, 6, 20, 14, 30, 39, 248, 228, 234, 201,
-			204, 210, 198, 240, 12, 44, 58, 36, 37, 45, 19, 5, 246, 216, 212, 234, 250, 10, 47, 55, 59, 53, 10, 14, 26, 250, 220, 216, 228, 7,
-			32, 8, 0, 7, 242, 248, 240, 206, 219, 214, 209, 234, 250, 6, 15, 240, 254, 245, 236, 246, 245, 240, 11, 250, 2, 12, 252, 16, 13, 245,
-			248, 254, 14, 23, 14, 8, 255, 3, 29, 33, 252, 20, 11, 248, 252, 243, 236, 12, 6, 4, 1, 254, 237, 231, 23, 25, 30, 16, 22, 253,
-			254, 203, 189, 218, 211, 255, 15, 14, 53, 69, 27, 0, 223, 221, 229, 223, 229, 14, 27, 39, 69, 53, 23, 250, 222, 223, 240, 218, 220, 255,
-			27, 75, 73, 30, 27, 17, 242, 230, 223, 202, 223, 253, 248, 14, 47, 30, 8, 7, 11, 251, 238, 225, 211, 225, 11, 16, 16, 19, 254, 25,
-			29, 0, 240, 222, 245, 30, 28, 25, 15, 20, 29, 20, 7, 0, 249, 244, 15, 250, 251, 4, 0, 254, 21, 18, 3, 5, 253, 2, 0, 19,
-			11, 242, 20, 21, 4, 22, 238, 222, 239, 240, 1, 11, 34, 36, 27, 13, 36, 247, 230, 212, 186, 233, 3, 253, 17, 25, 20, 71, 48, 15,
-			244, 205, 200, 221, 222, 250, 38, 37, 57, 51, 36, 19, 252, 217, 197, 188, 229, 6, 250, 5, 11, 26, 39, 31, 3, 0, 248, 255, 249, 246,
-			1, 2, 32, 12, 9, 25, 58, 40, 29, 25, 2, 255, 233, 238, 217, 228, 239, 245, 17, 15, 238, 10, 3, 234, 249, 226, 203, 227, 18, 26,
-			252, 7, 6, 21, 33, 0, 236, 249, 235, 249, 249, 8, 37, 40, 47, 27, 17, 255, 5, 10, 13, 238, 254, 31, 5, 22, 35, 255, 31, 25,
-			225, 237, 234, 249, 255, 249, 227, 0, 9, 3, 244, 223, 245, 228, 244, 32, 20, 241, 224, 243, 4, 254, 11, 11, 238, 19, 34, 252, 3, 255,
-			227, 11, 7, 14, 18, 252, 2, 243, 250, 241, 238, 0, 12, 253, 3, 0, 7, 7, 14, 248, 237, 247, 231, 252, 7, 245, 244, 6, 247, 6,
-			20, 252, 254, 16, 250, 230, 236, 221, 215, 233, 4, 11, 19, 49, 57, 27, 252, 224, 218, 233, 240, 254, 252, 17, 50, 46, 48, 5, 237, 254,
-			240, 243, 26, 241, 216, 248, 232, 9, 23, 243, 254, 22, 243, 5, 242, 234, 246, 230, 241, 239, 1, 251, 20, 15, 19, 21, 31, 5, 0, 0,
-			247, 230, 255, 14, 6, 8, 245, 253, 231, 227, 212, 222, 248, 0, 237, 233, 220, 237, 250, 218, 245, 250, 5, 41, 41, 235, 4, 10, 255, 0,
-			0, 252, 238, 244, 12, 23, 50, 45, 17, 25, 35, 21, 240, 222, 219, 251, 254, 251, 229, 241, 14, 31, 47, 247, 248, 6, 252, 253, 231, 211,
-			218, 252, 6, 5, 34, 38, 20, 45, 23, 243, 230, 220, 183, 207, 233, 227, 26, 36, 67, 74, 67, 253, 252, 241, 210, 194, 199, 200, 236, 52,
-			15, 32, 42, 56, 59, 35, 220, 179, 213, 185, 195, 218, 236, 44, 114, 107, 84, 73, 10, 224, 170, 149, 151, 207, 250, 39, 89, 82, 98, 76,
-			42, 244, 202, 200, 150, 152, 202, 229, 244, 60, 79, 98, 97, 68, 3, 202, 179, 139, 132, 190, 252, 50, 92, 73, 89, 50, 255, 233, 187, 163,
-			200, 211, 213, 17, 14, 22, 64, 27, 19, 39, 0, 236, 2, 234, 236, 17, 10, 238, 15, 42, 27, 17, 7, 254, 23, 2, 252, 224, 227, 237,
-			227, 5, 16, 252, 28, 24, 246, 236, 200, 237, 249, 240, 237, 241, 239, 8, 7, 235, 0, 8, 30, 46, 36, 7, 9, 24, 27, 255, 253, 11,
-			253, 23, 253, 242, 248, 246, 249, 241, 241, 250, 5, 17, 8, 10, 8, 2, 10, 248, 244, 253, 249, 6, 255, 5, 1, 223, 231, 11, 255, 12,
-			16, 228, 228, 238, 209, 174, 200, 233, 20, 44, 46, 20, 7, 0, 0, 252, 225, 241, 14, 21, 11, 250, 18, 27, 246, 230, 212, 217, 217, 196,
-			227, 238, 238, 24, 30, 19, 0, 231, 221, 217, 207, 198, 192, 214, 253, 21, 34, 26, 36, 8, 229, 4, 234, 188, 213, 195, 191, 240, 29, 13,
-			68, 58, 49, 63, 11, 255, 247, 203, 219, 225, 232, 13, 18, 28, 61, 41, 28, 13, 207, 177, 192, 194, 215, 210, 234, 4, 37, 38, 29, 1,
-			24, 15, 3, 248, 217, 251, 21, 7, 246, 31, 44, 65, 62, 32, 247, 0, 255, 199, 202, 222, 255, 8, 27, 1, 240, 0, 12, 252, 230, 215,
-			243, 10, 4, 7, 239, 246, 252, 239, 5, 29, 6, 9, 22, 12, 23, 245, 245, 0, 21, 15, 14, 35, 29, 20, 23, 248, 231, 241, 254, 244,
-			247, 248, 5, 247, 228, 5, 8, 5, 9, 241, 200, 226, 238, 219, 235, 252, 24, 42, 58, 7, 247, 240, 234, 217, 236, 253, 37, 37, 254, 26,
-			246, 249, 0, 225, 230, 250, 20, 236, 244, 254, 248, 4, 246, 4, 31, 37, 36, 22, 12, 12, 23, 230, 176, 209, 242, 2, 43, 54, 89, 95,
-			81, 34, 221, 225, 217, 168, 178, 225, 14, 82, 100, 70, 38, 43, 34, 238, 209, 217, 201, 209, 246, 9, 9, 54, 62, 14, 17, 9, 250, 0,
-			236, 219, 237, 254, 31, 12, 14, 30, 24, 253, 254, 248, 238, 228, 244, 253, 7, 41, 15, 26, 7, 0, 1, 1, 235, 5, 8, 8, 34, 37,
-			19, 19, 24, 10, 25, 9, 14, 38, 18, 19, 15, 38, 23, 6, 238, 237, 246, 246, 15, 254, 28, 46, 34, 3, 223, 224, 255, 213, 222, 229,
-			232, 35, 34, 43, 33, 29, 254, 250, 237, 225, 231, 17, 39, 27, 60, 43, 30, 34, 23, 14, 238, 246, 251, 255, 14, 25, 45, 31, 18, 43,
-			28, 244, 230, 191, 168, 211, 215, 244, 26, 39, 48, 60, 37, 245, 242, 196, 189, 220, 216, 239, 18, 39, 60, 74, 48, 24, 230, 214, 228, 217,
-			234, 231, 238, 15, 53, 49, 56, 23, 1, 5, 230, 229, 207, 205, 223, 204, 218, 25, 42, 49, 23, 239, 241, 240, 240, 229, 200, 213, 248, 15,
-			29, 24, 32, 24, 14, 31, 31, 11, 8, 11, 15, 250, 253, 17, 253, 252, 249, 229, 245, 15, 250, 236, 232, 227, 230, 227, 226, 209, 224, 251,
-			246, 230, 242, 15, 21, 19, 244, 242, 3, 1, 206, 182, 186, 243, 37, 30, 6, 0, 56, 62, 16, 238, 216, 216, 215, 199, 222, 220, 7, 39,
-			32, 46, 38, 11, 242, 214, 188, 176, 182, 201, 230, 247, 16, 37, 27, 5, 253, 238, 225, 233, 219, 217, 237, 234, 242, 220, 246, 19, 26, 34,
-			41, 28, 23, 9, 231, 199, 199, 212, 226, 225, 234, 28, 35, 52, 38, 26, 2, 247, 237, 220, 209, 194, 214, 238, 6, 21, 22, 46, 64, 43,
-			17, 227, 215, 221, 215, 230, 234, 247, 26, 41, 48, 41, 255, 11, 16, 248, 236, 212, 209, 234, 239, 245, 18, 28, 51, 40, 1, 245, 235, 243,
-			244, 230, 242, 12, 26, 37, 0, 254, 252, 1, 10, 20, 9, 243, 255, 243, 228, 212, 209, 237, 0, 250, 11, 1, 243, 0, 79, 5, 27, 0,
-			0, 1, 0, 1, 4, 3, 253, 248, 251, 8, 10, 0, 2, 10, 10, 8, 5, 2, 0, 0, 2, 255, 248, 254, 5, 5, 251, 242, 247, 255,
-			254, 2, 7, 1, 248, 246, 242, 244, 245, 249, 4, 9, 6, 1, 254, 6, 10, 9, 11, 10, 9, 11, 5, 1, 0, 247, 247, 249, 248, 254,
-			2, 7, 11, 8, 2, 0, 254, 1, 5, 5, 2, 5, 2, 252, 251, 255, 0, 2, 4, 3, 1, 247, 240, 251, 249, 243, 246, 249, 254, 0,
-			3, 10, 9, 2, 5, 7, 255, 253, 3, 14, 22, 13, 2, 252, 255, 252, 251, 255, 2, 5, 3, 246, 241, 249, 255, 1, 0, 251, 254, 0,
-			250, 251, 0, 2, 5, 3, 252, 0, 7, 13, 11, 0, 247, 252, 253, 249, 2, 12, 14, 8, 255, 2, 3, 0, 254, 252, 0, 9, 10, 2,
-			1, 2, 2, 4, 2, 0, 1, 254, 251, 252, 249, 249, 249, 246, 239, 244, 1, 14, 16, 4, 253, 248, 245, 252, 0, 0, 0, 248, 244, 254,
-			4, 3, 3, 6, 12, 11, 2, 1, 6, 16, 18, 7, 9, 15, 13, 10, 12, 0, 254, 2, 247, 239, 236, 240, 0, 2, 248, 245, 247, 251,
-			0, 246, 245, 3, 2, 1, 253, 243, 3, 15, 15, 12, 5, 252, 2, 8, 0, 245, 245, 3, 3, 254, 0, 6, 8, 11, 7, 7, 6, 251,
-			254, 4, 0, 248, 253, 4, 1, 254, 1, 4, 8, 254, 244, 249, 253, 248, 248, 245, 254, 2, 4, 8, 0, 255, 10, 17, 9, 4, 7, 6,
-			0, 241, 234, 244, 1, 12, 14, 4, 6, 12, 12, 5, 250, 249, 2, 7, 5, 255, 251, 252, 1, 251, 246, 3, 1, 8, 14, 246, 240, 237,
-			235, 240, 241, 246, 4, 14, 15, 18, 16, 6, 0, 247, 250, 16, 10, 250, 255, 251, 251, 5, 8, 5, 251, 251, 8, 10, 5, 0, 254, 2,
-			255, 252, 2, 8, 8, 10, 6, 253, 251, 5, 13, 6, 253, 251, 250, 0, 4, 247, 239, 254, 249, 229, 235, 253, 6, 9, 3, 254, 4, 12,
-			5, 249, 250, 5, 14, 12, 0, 238, 249, 16, 17, 0, 247, 2, 18, 8, 252, 242, 245, 6, 10, 248, 250, 12, 18, 23, 17, 0, 1, 0,
-			251, 14, 8, 255, 1, 241, 230, 228, 221, 235, 252, 246, 249, 1, 0, 0, 254, 251, 254, 1, 19, 29, 14, 8, 16, 16, 18, 10, 2, 22,
-			25, 2, 246, 244, 250, 255, 250, 239, 231, 238, 5, 19, 255, 248, 8, 1, 2, 5, 250, 254, 0, 244, 235, 242, 244, 252, 10, 252, 247, 9,
-			5, 255, 1, 253, 5, 7, 15, 23, 7, 4, 15, 15, 9, 15, 26, 21, 5, 251, 255, 0, 239, 224, 239, 251, 5, 6, 248, 241, 232, 233,
-			248, 2, 244, 241, 251, 252, 6, 9, 5, 22, 15, 255, 2, 253, 8, 15, 3, 9, 1, 255, 3, 3, 12, 8, 12, 15, 0, 241, 242, 251,
-			8, 3, 255, 4, 3, 252, 252, 1, 5, 4, 245, 247, 1, 239, 237, 247, 249, 10, 19, 8, 6, 2, 11, 14, 246, 236, 231, 239, 249, 250,
-			10, 16, 2, 252, 249, 250, 254, 9, 23, 14, 17, 27, 23, 13, 249, 249, 3, 253, 4, 9, 0, 250, 229, 232, 0, 2, 254, 11, 14, 6,
-			0, 248, 249, 255, 252, 244, 233, 232, 3, 2, 253, 10, 252, 245, 12, 10, 11, 31, 9, 252, 7, 247, 252, 10, 4, 8, 6, 8, 13, 240,
-			219, 229, 240, 252, 14, 4, 247, 9, 13, 9, 16, 1, 4, 16, 254, 2, 253, 255, 19, 4, 2, 4, 242, 6, 18, 10, 1, 242, 234, 229,
-			229, 242, 253, 1, 255, 0, 5, 7, 5, 4, 7, 18, 21, 17, 12, 253, 1, 4, 255, 254, 243, 254, 15, 249, 249, 0, 240, 245, 244, 232,
-			255, 1, 5, 25, 253, 235, 246, 245, 1, 6, 252, 12, 14, 18, 36, 24, 251, 236, 248, 6, 19, 11, 251, 254, 0, 250, 255, 11, 0, 236,
-			241, 1, 248, 243, 4, 0, 242, 250, 13, 26, 20, 12, 18, 21, 8, 248, 234, 232, 241, 250, 5, 9, 244, 248, 20, 28, 20, 1, 248, 1,
-			255, 246, 225, 241, 1, 249, 250, 236, 231, 11, 27, 14, 14, 14, 17, 17, 242, 230, 252, 9, 6, 250, 232, 250, 14, 7, 13, 5, 242, 232,
-			230, 237, 7, 21, 17, 4, 236, 234, 255, 255, 11, 44, 28, 5, 19, 18, 14, 14, 21, 27, 15, 253, 255, 250, 240, 247, 228, 226, 2, 231,
-			213, 0, 15, 9, 248, 236, 253, 234, 228, 20, 41, 28, 21, 3, 7, 22, 2, 8, 22, 2, 251, 229, 207, 227, 248, 252, 23, 17, 249, 8,
-			9, 11, 253, 231, 247, 237, 228, 6, 2, 1, 22, 15, 8, 250, 239, 251, 6, 1, 4, 3, 253, 247, 247, 245, 10, 14, 13, 42, 27, 254,
-			5, 236, 245, 30, 18, 9, 240, 236, 18, 13, 4, 13, 255, 253, 9, 3, 251, 251, 253, 10, 22, 3, 224, 244, 251, 241, 245, 234, 235, 0,
-			244, 5, 12, 5, 35, 18, 242, 255, 248, 251, 253, 222, 221, 227, 244, 20, 18, 6, 22, 36, 29, 12, 6, 19, 0, 239, 212, 225, 14, 18,
-			11, 4, 243, 226, 249, 22, 238, 201, 238, 8, 23, 249, 226, 12, 24, 58, 71, 11, 6, 27, 14, 8, 243, 235, 19, 28, 242, 213, 230, 244,
-			254, 242, 226, 239, 250, 1, 7, 249, 4, 62, 65, 25, 249, 255, 39, 56, 13, 225, 225, 220, 247, 10, 235, 241, 2, 14, 24, 239, 215, 232,
-			234, 243, 1, 247, 244, 253, 3, 1, 240, 1, 15, 17, 252, 243, 3, 245, 222, 238, 236, 214, 238, 246, 248, 25, 33, 27, 27, 0, 233, 26,
-			44, 22, 249, 222, 254, 22, 252, 2, 9, 5, 10, 37, 45, 20, 5, 13, 17, 15, 0, 18, 30, 237, 242, 32, 44, 45, 18, 244, 41, 52,
-			28, 37, 251, 223, 224, 203, 229, 224, 195, 251, 16, 242, 228, 208, 186, 166, 144, 159, 190, 211, 193, 185, 190, 200, 230, 249, 16, 19, 3, 49,
-			107, 108, 124, 122, 106, 99, 81, 73, 67, 64, 55, 29, 12, 230, 218, 239, 231, 240, 240, 237, 14, 4, 231, 246, 233, 233, 254, 245, 239, 235,
-			227, 235, 233, 237, 4, 243, 237, 221, 190, 219, 242, 240, 235, 252, 23, 20, 251, 3, 27, 21, 7, 255, 222, 224, 250, 2, 2, 247, 250, 6,
-			25, 35, 29, 36, 7, 235, 228, 246, 6, 8, 13, 13, 24, 27, 48, 34, 254, 10, 22, 34, 41, 19, 10, 21, 8, 249, 248, 252, 248, 251,
-			249, 250, 9, 255, 224, 223, 227, 238, 14, 18, 241, 229, 235, 244, 238, 213, 231, 255, 245, 237, 241, 237, 232, 241, 234, 220, 231, 254, 21, 12,
-			249, 1, 13, 22, 12, 5, 22, 26, 21, 12, 6, 24, 20, 0, 4, 10, 29, 54, 34, 12, 14, 17, 21, 20, 242, 248, 2, 23, 28, 250,
-			235, 252, 23, 25, 3, 252, 14, 9, 234, 229, 242, 234, 217, 210, 221, 232, 253, 19, 25, 32, 4, 236, 0, 245, 220, 233, 25, 47, 13, 216,
-			234, 250, 227, 224, 221, 241, 230, 216, 252, 0, 236, 229, 239, 6, 0, 12, 27, 24, 11, 248, 253, 19, 19, 6, 16, 35, 48, 50, 42, 31,
-			8, 222, 235, 22, 26, 6, 15, 22, 15, 25, 61, 74, 51, 33, 37, 33, 30, 7, 220, 207, 214, 214, 206, 198, 213, 213, 214, 243, 237, 205,
-			193, 205, 233, 0, 253, 249, 236, 252, 23, 15, 17, 26, 10, 5, 9, 0, 235, 224, 255, 12, 243, 254, 26, 21, 11, 7, 24, 34, 18, 255,
-			245, 242, 8, 34, 33, 22, 2, 253, 13, 18, 0, 251, 251, 238, 227, 237, 250, 246, 229, 239, 252, 9, 13, 244, 242, 15, 18, 14, 15, 17,
-			36, 35, 31, 49, 38, 18, 25, 35, 5, 0, 120, 6, 13, 0, 0, 11, 15, 13, 14, 10, 20, 33, 25, 12, 252, 242, 235, 230, 232, 224,
-			228, 237, 248, 2, 246, 242, 0, 19, 30, 23, 18, 21, 13, 8, 1, 7, 8, 2, 3, 246, 235, 229, 230, 252, 0, 241, 251, 0, 254, 252,
-			7, 10, 11, 19, 20, 14, 5, 246, 3, 16, 8, 255, 240, 253, 6, 243, 230, 224, 246, 8, 19, 16, 246, 250, 20, 40, 33, 1, 3, 18,
-			8, 2, 239, 241, 255, 255, 250, 232, 228, 242, 253, 6, 0, 4, 9, 247, 248, 252, 8, 15, 1, 252, 243, 254, 7, 254, 253, 253, 4, 22,
-			14, 251, 248, 3, 12, 1, 1, 1, 255, 250, 240, 246, 1, 1, 254, 252, 7, 12, 13, 12, 9, 14, 14, 10, 4, 244, 254, 6, 245, 234,
-			220, 232, 0, 17, 10, 248, 250, 8, 22, 20, 11, 26, 39, 19, 251, 223, 229, 254, 10, 4, 225, 220, 226, 232, 239, 246, 246, 6, 17, 13,
-			10, 22, 34, 25, 16, 2, 19, 28, 13, 248, 234, 231, 245, 8, 254, 204, 193, 245, 39, 36, 2, 0, 10, 6, 7, 15, 14, 5, 252, 252,
-			239, 229, 241, 9, 4, 242, 247, 0, 9, 2, 7, 14, 14, 15, 15, 12, 20, 19, 21, 26, 8, 235, 230, 244, 239, 245, 247, 229, 222, 222,
-			247, 4, 255, 253, 1, 13, 6, 243, 1, 29, 40, 26, 4, 10, 22, 2, 251, 0, 7, 0, 248, 228, 221, 238, 255, 12, 19, 0, 0, 8,
-			8, 11, 5, 11, 0, 242, 255, 251, 245, 243, 254, 253, 236, 241, 6, 10, 6, 255, 0, 14, 19, 11, 1, 14, 13, 4, 253, 254, 250, 246,
-			1, 255, 230, 230, 249, 252, 250, 255, 3, 9, 5, 20, 20, 246, 245, 5, 19, 37, 33, 9, 0, 254, 240, 225, 245, 20, 20, 1, 246, 239,
-			228, 237, 11, 21, 10, 1, 240, 233, 244, 17, 25, 13, 16, 22, 8, 247, 249, 11, 1, 255, 241, 214, 211, 224, 255, 11, 15, 7, 247, 255,
-			3, 0, 22, 28, 24, 26, 15, 8, 245, 228, 249, 6, 249, 224, 228, 231, 238, 252, 2, 6, 16, 5, 10, 23, 33, 45, 31, 8, 6, 13,
-			9, 248, 235, 225, 238, 6, 252, 227, 210, 208, 245, 20, 36, 42, 31, 30, 27, 28, 25, 28, 34, 7, 235, 207, 199, 230, 230, 220, 217, 210,
-			206, 212, 246, 17, 45, 43, 19, 21, 16, 17, 47, 57, 50, 30, 5, 239, 232, 233, 223, 241, 247, 233, 222, 222, 225, 236, 254, 10, 17, 19,
-			31, 29, 30, 27, 30, 39, 29, 13, 0, 253, 239, 218, 211, 224, 226, 223, 233, 241, 236, 254, 15, 36, 58, 29, 2, 13, 21, 20, 20, 254,
-			247, 249, 230, 234, 245, 241, 255, 254, 228, 249, 16, 9, 0, 255, 3, 7, 253, 8, 16, 253, 0, 10, 9, 19, 12, 233, 230, 10, 39, 22,
-			231, 209, 217, 235, 10, 29, 12, 0, 0, 3, 18, 19, 19, 18, 0, 255, 247, 248, 7, 252, 230, 227, 240, 255, 4, 8, 6, 251, 12, 24,
-			2, 239, 253, 15, 11, 249, 242, 248, 253, 13, 14, 227, 204, 249, 16, 4, 6, 10, 16, 7, 16, 40, 41, 25, 16, 14, 0, 254, 10, 0,
-			233, 240, 229, 225, 236, 238, 254, 252, 237, 233, 238, 249, 16, 24, 245, 244, 4, 6, 18, 17, 14, 33, 44, 27, 254, 239, 245, 2, 242, 232,
-			249, 240, 220, 230, 248, 16, 30, 14, 239, 232, 8, 32, 8, 13, 47, 40, 7, 242, 230, 220, 237, 8, 12, 240, 218, 242, 255, 0, 29, 45,
-			42, 51, 53, 27, 237, 211, 226, 6, 7, 228, 208, 204, 221, 229, 235, 7, 27, 18, 255, 241, 244, 247, 252, 18, 23, 7, 4, 9, 5, 247,
-			28, 60, 31, 13, 20, 16, 255, 224, 226, 250, 10, 14, 242, 211, 214, 240, 0, 250, 247, 2, 29, 49, 30, 5, 0, 21, 29, 7, 249, 239,
-			225, 215, 211, 223, 0, 11, 5, 253, 0, 29, 47, 32, 21, 22, 13, 0, 254, 9, 13, 3, 237, 210, 222, 252, 240, 224, 218, 218, 226, 218,
-			216, 244, 0, 21, 57, 63, 66, 65, 48, 52, 69, 45, 29, 22, 239, 202, 204, 207, 205, 192, 201, 227, 222, 217, 238, 248, 24, 33, 0, 245,
-			22, 83, 79, 32, 247, 242, 17, 50, 47, 30, 232, 200, 225, 247, 252, 239, 214, 229, 244, 244, 245, 248, 244, 242, 4, 24, 30, 8, 0, 25,
-			26, 23, 40, 40, 11, 4, 5, 249, 238, 245, 3, 254, 215, 222, 236, 212, 188, 215, 244, 12, 13, 5, 251, 244, 12, 41, 49, 61, 53, 40,
-			17, 250, 20, 48, 26, 26, 0, 202, 199, 199, 194, 226, 248, 239, 234, 220, 197, 228, 21, 50, 66, 58, 39, 44, 42, 20, 7, 17, 14, 245,
-			215, 210, 250, 247, 218, 230, 238, 227, 241, 252, 17, 39, 25, 11, 0, 248, 11, 16, 237, 238, 8, 247, 243, 3, 244, 5, 18, 243, 11, 44,
-			3, 241, 250, 4, 54, 59, 3, 211, 212, 3, 60, 63, 2, 202, 191, 226, 20, 22, 1, 228, 207, 213, 234, 3, 2, 253, 0, 251, 246, 9,
-			16, 33, 38, 16, 44, 71, 23, 7, 30, 36, 57, 18, 194, 176, 175, 202, 250, 208, 165, 221, 2, 32, 40, 7, 240, 234, 20, 66, 51, 17,
-			2, 0, 9, 22, 39, 55, 45, 7, 240, 230, 234, 0, 245, 175, 185, 7, 248, 215, 227, 247, 10, 35, 42, 38, 251, 226, 32, 30, 246, 5,
-			32, 255, 228, 253, 27, 24, 21, 30, 11, 238, 237, 242, 231, 229, 5, 18, 239, 235, 233, 221, 228, 9, 48, 51, 15, 250, 2, 251, 251, 24,
-			252, 219, 230, 252, 246, 0, 246, 241, 20, 44, 38, 38, 34, 23, 26, 0, 245, 7, 203, 170, 218, 220, 195, 214, 240, 28, 14, 226, 15, 69,
-			63, 78, 84, 37, 255, 12, 36, 22, 240, 208, 242, 236, 198, 211, 0, 241, 218, 228, 214, 215, 7, 54, 61, 27, 0, 15, 26, 254, 9, 54,
-			46, 7, 246, 202, 163, 191, 249, 17, 242, 187, 219, 8, 3, 0, 16, 9, 22, 68, 75, 34, 23, 59, 76, 46, 0, 251, 15, 240, 208, 215,
-			206, 216, 198, 187, 221, 233, 245, 27, 15, 249, 24, 19, 31, 33, 12, 41, 50, 11, 251, 244, 252, 247, 198, 206, 218, 206, 241, 254, 225, 234,
-			4, 77, 97, 29, 24, 59, 49, 48, 51, 3, 224, 215, 216, 193, 156, 208, 27, 5, 226, 244, 248, 227, 243, 32, 39, 7, 25, 44, 249, 200,
-			15, 91, 61, 9, 2, 3, 255, 0, 23, 27, 239, 224, 225, 195, 210, 10, 20, 239, 196, 218, 17, 18, 25, 59, 38, 250, 255, 21, 18, 5,
-			1, 11, 236, 195, 212, 242, 209, 195, 5, 44, 10, 8, 12, 5, 22, 37, 55, 44, 249, 8, 77, 56, 5, 251, 249, 0, 248, 217, 211, 195,
-			195, 230, 214, 157, 186, 253, 15, 3, 250, 26, 77, 72, 57, 61, 42, 32, 42, 22, 249, 255, 249, 230, 213, 208, 226, 5, 6, 236, 244, 1,
-			6, 16, 12, 249, 6, 22, 10, 2, 14, 3, 236, 206, 226, 36, 32, 250, 0, 231, 193, 229, 43, 57, 9, 218, 209, 215, 217, 10, 45, 3,
-			254, 51, 34, 238, 237, 17, 38, 26, 32, 40, 12, 235, 8, 29, 15, 9, 25, 254, 199, 184, 237, 0, 239, 17, 1, 192, 183, 235, 42, 58,
-			15, 13, 6, 226, 240, 18, 8, 4, 22, 36, 32, 3, 239, 247, 0, 16, 37, 7, 220, 199, 197, 217, 242, 249, 0, 10, 233, 186, 222, 23,
-			43, 55, 35, 251, 4, 6, 35, 86, 73, 51, 56, 23, 3, 32, 15, 237, 226, 232, 250, 232, 196, 175, 156, 183, 250, 14, 254, 227, 197, 223,
-			3, 15, 68, 76, 35, 39, 42, 42, 50, 41, 45, 66, 26, 231, 230, 222, 205, 209, 218, 224, 217, 213, 211, 197, 188, 252, 60, 53, 253, 235,
-			253, 254, 13, 27, 14, 2, 4, 18, 248, 189, 222, 56, 60, 28, 14, 243, 243, 245, 2, 39, 39, 15, 25, 29, 229, 226, 18, 57, 67, 59,
-			45, 39, 15, 233, 226, 238, 200, 208, 229, 169, 137, 170, 186, 213, 5, 21, 57, 72, 39, 60, 82, 59, 62, 62, 0, 226, 239, 232, 221, 207,
-			209, 212, 208, 214, 238, 244, 224, 226, 0, 18, 20, 19, 16, 252, 14, 66, 91, 61, 15, 19, 32, 22, 8, 2, 231, 215, 210, 214, 213, 195,
-			190, 219, 238, 229, 246, 18, 27, 42, 64, 80, 78, 65, 44, 47, 54, 16, 242, 221, 182, 177, 202, 214, 212, 212, 215, 4, 29, 12, 22, 39,
-			35, 13, 237, 234, 244, 249, 246, 231, 215, 230, 21, 52, 39, 0, 23, 77, 70, 37, 33, 28, 15, 254, 230, 229, 225, 228, 255, 4, 247, 0,
-			11, 20, 18, 12, 23, 12, 222, 197, 202, 209, 206, 207, 202, 200, 201, 208, 234, 252, 2, 20, 47, 41, 18, 255, 250, 1, 30, 32, 17, 253,
-			229, 230, 253, 24, 39, 28, 17, 4, 14, 33, 47, 54, 48, 33, 19, 29, 22, 38, 39, 29, 23, 16, 8, 253, 246, 247, 2, 253, 14, 19,
-			8, 248, 215, 224, 3, 2, 244, 238, 194, 156, 170, 175, 210, 218, 190, 198, 209, 191, 208, 239, 250, 10, 28, 29, 18, 5, 15, 37, 50, 42,
-			35, 31, 2, 238, 231, 245, 252, 2, 2, 252, 233, 243, 24, 57, 73, 69, 67, 58, 41, 42, 43, 45, 22, 5, 6, 253, 236, 237, 253, 4,
-			16, 27, 25, 26, 21, 21, 38, 28, 8, 9, 253, 229, 224, 215, 214, 216, 215, 221, 225, 239, 142, 6, 24, 0, 1, 1, 3, 3, 253, 252,
-			0, 3, 8, 255, 231, 232, 255, 7, 15, 16, 9, 7, 0, 243, 249, 3, 9, 8, 0, 1, 6, 4, 7, 6, 253, 240, 244, 250, 0, 11,
-			8, 4, 11, 9, 4, 254, 244, 241, 253, 3, 6, 9, 1, 253, 254, 249, 248, 251, 249, 251, 2, 1, 0, 1, 0, 7, 12, 2, 251, 249,
-			249, 255, 7, 0, 245, 252, 0, 5, 11, 0, 248, 253, 255, 3, 4, 255, 0, 8, 11, 13, 16, 10, 5, 3, 253, 254, 2, 255, 0, 3,
-			251, 249, 252, 245, 249, 4, 1, 249, 251, 247, 0, 14, 8, 2, 5, 1, 0, 2, 250, 251, 2, 5, 10, 13, 7, 254, 254, 255, 243, 241,
-			247, 6, 20, 8, 253, 255, 250, 251, 252, 248, 253, 5, 7, 5, 0, 251, 249, 252, 2, 252, 251, 254, 251, 248, 251, 6, 18, 17, 5, 0,
-			253, 0, 9, 11, 4, 255, 252, 5, 13, 5, 248, 251, 1, 3, 3, 251, 247, 4, 9, 2, 0, 1, 3, 2, 251, 255, 16, 4, 249, 1,
-			6, 0, 247, 243, 250, 2, 6, 0, 240, 242, 246, 255, 4, 2, 3, 2, 255, 3, 252, 250, 5, 9, 13, 16, 7, 4, 6, 10, 7, 247,
-			237, 244, 255, 0, 0, 0, 6, 2, 254, 253, 1, 8, 2, 241, 240, 0, 2, 253, 251, 0, 18, 21, 9, 2, 250, 253, 2, 253, 0, 6,
-			5, 3, 255, 0, 252, 237, 239, 253, 1, 6, 2, 5, 6, 3, 8, 247, 236, 254, 19, 28, 25, 14, 12, 16, 11, 7, 254, 240, 240, 249,
-			0, 248, 236, 242, 253, 243, 237, 247, 0, 5, 16, 11, 253, 248, 246, 243, 3, 22, 11, 8, 20, 6, 245, 236, 242, 11, 13, 247, 244, 252,
-			253, 8, 4, 251, 2, 248, 241, 7, 27, 24, 21, 21, 1, 244, 253, 1, 4, 6, 246, 246, 5, 2, 250, 244, 243, 3, 9, 255, 250, 2,
-			9, 8, 1, 252, 248, 7, 22, 14, 7, 15, 11, 1, 250, 246, 254, 247, 231, 236, 245, 235, 238, 254, 7, 10, 254, 239, 246, 253, 2, 16,
-			12, 3, 6, 25, 19, 3, 5, 0, 248, 248, 230, 228, 5, 21, 25, 16, 247, 246, 0, 247, 249, 7, 15, 19, 13, 0, 253, 24, 36, 7,
-			246, 245, 238, 252, 15, 7, 254, 248, 241, 244, 245, 241, 250, 3, 5, 2, 255, 247, 242, 5, 21, 16, 2, 0, 6, 10, 1, 245, 243, 248,
-			253, 5, 2, 244, 245, 5, 12, 0, 229, 221, 248, 9, 9, 7, 253, 245, 11, 23, 13, 2, 252, 19, 37, 22, 8, 6, 4, 3, 3, 2,
-			242, 231, 243, 252, 6, 17, 1, 240, 237, 228, 244, 14, 15, 5, 254, 251, 3, 14, 22, 19, 3, 239, 236, 245, 254, 4, 10, 250, 239, 245,
-			251, 3, 17, 21, 0, 236, 235, 0, 32, 34, 11, 8, 6, 235, 226, 234, 246, 11, 17, 6, 242, 239, 250, 237, 237, 10, 11, 14, 10, 253,
-			9, 24, 25, 22, 253, 231, 4, 52, 65, 19, 222, 221, 220, 221, 250, 249, 249, 15, 28, 25, 231, 192, 218, 253, 26, 27, 255, 2, 10, 4,
-			34, 16, 235, 250, 254, 244, 4, 19, 16, 4, 3, 16, 253, 221, 220, 238, 13, 24, 12, 9, 0, 247, 7, 0, 236, 249, 254, 7, 30, 27,
-			3, 228, 204, 209, 1, 32, 14, 24, 44, 15, 251, 13, 244, 228, 6, 12, 7, 17, 249, 224, 237, 253, 11, 16, 4, 248, 248, 4, 252, 5,
-			29, 3, 221, 213, 223, 7, 61, 68, 32, 239, 209, 243, 17, 21, 20, 241, 212, 232, 7, 2, 237, 240, 0, 1, 13, 19, 1, 255, 255, 5,
-			19, 10, 0, 251, 238, 244, 0, 247, 242, 4, 25, 25, 10, 0, 251, 241, 243, 240, 242, 19, 27, 11, 19, 5, 252, 15, 16, 6, 2, 249,
-			0, 4, 248, 1, 2, 238, 240, 248, 241, 231, 249, 22, 5, 255, 20, 5, 245, 0, 252, 0, 251, 241, 4, 15, 23, 38, 18, 231, 225, 242,
-			248, 248, 238, 236, 6, 23, 18, 5, 255, 250, 242, 228, 241, 31, 59, 36, 254, 231, 241, 3, 9, 16, 18, 248, 235, 239, 244, 8, 31, 16,
-			248, 247, 2, 232, 212, 243, 20, 47, 49, 7, 234, 230, 246, 6, 5, 12, 27, 35, 17, 228, 199, 227, 5, 22, 25, 1, 221, 217, 241, 16,
-			48, 31, 221, 196, 211, 236, 19, 40, 36, 38, 48, 34, 18, 247, 224, 240, 244, 245, 239, 232, 3, 22, 8, 239, 227, 245, 2, 247, 235, 252,
-			16, 20, 21, 33, 21, 248, 1, 253, 226, 239, 252, 5, 45, 53, 28, 12, 2, 251, 250, 236, 234, 0, 15, 246, 232, 227, 205, 211, 0, 21,
-			13, 0, 239, 231, 1, 25, 28, 20, 14, 26, 43, 27, 5, 252, 236, 11, 46, 22, 226, 199, 195, 226, 20, 24, 4, 8, 0, 255, 23, 33,
-			8, 234, 240, 2, 2, 7, 13, 237, 237, 26, 252, 191, 195, 227, 254, 22, 21, 250, 236, 3, 53, 92, 61, 240, 200, 223, 28, 63, 44, 253,
-			239, 251, 4, 238, 211, 207, 207, 242, 12, 249, 237, 249, 7, 31, 51, 30, 236, 228, 0, 41, 68, 46, 0, 253, 25, 33, 3, 219, 190, 201,
-			251, 26, 19, 235, 180, 175, 217, 1, 46, 75, 47, 21, 0, 216, 228, 15, 44, 58, 30, 251, 252, 250, 246, 228, 219, 231, 246, 16, 31, 7,
-			245, 4, 11, 242, 232, 248, 251, 250, 254, 24, 32, 24, 5, 246, 248, 255, 251, 251, 244, 236, 254, 8, 0, 10, 27, 24, 10, 248, 222, 225,
-			3, 28, 31, 19, 6, 2, 0, 248, 228, 215, 241, 6, 249, 247, 16, 16, 237, 227, 3, 35, 21, 0, 3, 4, 23, 51, 27, 251, 238, 1,
-			16, 19, 245, 195, 202, 0, 18, 255, 243, 0, 251, 229, 230, 232, 231, 21, 60, 36, 21, 32, 28, 11, 5, 245, 232, 238, 251, 31, 49, 12,
-			229, 227, 220, 221, 240, 244, 255, 15, 0, 241, 233, 229, 239, 7, 28, 16, 14, 38, 37, 20, 1, 248, 3, 20, 23, 14, 253, 250, 240, 219,
-			254, 7, 232, 6, 49, 9, 235, 243, 235, 248, 14, 0, 240, 239, 234, 241, 28, 61, 26, 240, 204, 184, 222, 25, 60, 61, 22, 243, 233, 251,
-			1, 240, 228, 249, 7, 27, 49, 18, 211, 203, 250, 29, 35, 20, 7, 0, 250, 248, 248, 240, 5, 19, 11, 9, 19, 1, 251, 16, 12, 243,
-			244, 233, 225, 5, 45, 24, 237, 222, 228, 237, 18, 21, 228, 221, 36, 52, 4, 231, 214, 196, 243, 45, 64, 75, 47, 218, 175, 210, 248, 254,
-			4, 38, 33, 0, 6, 7, 209, 204, 245, 235, 234, 26, 45, 39, 19, 1, 11, 20, 24, 6, 229, 223, 28, 57, 40, 36, 20, 222, 218, 252,
-			246, 214, 215, 217, 219, 14, 35, 237, 242, 35, 26, 252, 233, 215, 213, 8, 76, 90, 35, 250, 0, 17, 29, 11, 214, 190, 214, 239, 3, 29,
-			12, 202, 192, 2, 8, 207, 232, 25, 33, 61, 87, 31, 216, 213, 252, 251, 236, 246, 237, 234, 255, 7, 26, 58, 36, 1, 255, 9, 23, 9,
-			1, 32, 32, 21, 74, 37, 190, 166, 210, 217, 215, 230, 242, 8, 49, 45, 239, 198, 203, 227, 245, 38, 68, 48, 21, 11, 10, 33, 33, 2,
-			233, 220, 207, 204, 250, 15, 5, 33, 61, 7, 199, 189, 206, 218, 5, 32, 16, 3, 16, 19, 14, 5, 12, 249, 243, 10, 14, 8, 42, 39,
-			29, 41, 18, 218, 194, 209, 238, 243, 238, 245, 248, 7, 16, 12, 233, 222, 247, 26, 45, 57, 27, 222, 198, 236, 45, 95, 72, 17, 215, 205,
-			228, 254, 15, 13, 11, 2, 230, 230, 244, 250, 246, 231, 227, 243, 242, 240, 16, 20, 3, 251, 11, 18, 22, 36, 37, 11, 244, 241, 4, 254,
-			3, 253, 251, 254, 241, 220, 207, 214, 248, 6, 21, 19, 251, 247, 3, 31, 62, 67, 33, 247, 219, 235, 247, 2, 18, 17, 1, 255, 222, 217,
-			253, 0, 222, 249, 21, 25, 24, 37, 15, 9, 28, 14, 226, 222, 254, 0, 249, 9, 14, 240, 233, 238, 216, 219, 253, 245, 243, 13, 30, 13,
-			8, 27, 14, 10, 25, 10, 246, 12, 33, 17, 7, 25, 4, 236, 242, 229, 195, 217, 9, 20, 18, 25, 247, 214, 235, 3, 237, 228, 250, 9,
-			8, 23, 32, 44, 49, 36, 255, 213, 219, 255, 253, 246, 12, 14, 242, 245, 8, 0, 248, 242, 230, 224, 240, 2, 18, 13, 254, 12, 30, 27,
-			21, 9, 252, 0, 254, 251, 7, 16, 18, 23, 38, 7, 219, 203, 199, 230, 22, 29, 26, 41, 33, 13, 1, 247, 220, 204, 225, 5, 17, 20,
-			17, 254, 240, 253, 26, 4, 222, 212, 213, 223, 255, 13, 9, 15, 23, 6, 249, 26, 36, 2, 223, 225, 236, 253, 17, 20, 254, 254, 30, 46,
-			253, 231, 251, 255, 254, 0, 252, 232, 231, 14, 47, 41, 21, 17, 247, 212, 252, 57, 53, 35, 29, 238, 198, 218, 31, 76, 51, 229, 154, 134,
-			202, 24, 70, 42, 10, 220, 184, 195, 235, 221, 219, 11, 68, 47, 23, 27, 18, 16, 22, 30, 25, 27, 9, 244, 241, 12, 21, 255, 213, 210,
-			213, 230, 2, 22, 13, 0, 247, 244, 249, 9, 1, 250, 3, 1, 245, 9, 25, 19, 5, 1, 5, 254, 251, 251, 235, 238, 1, 6, 253, 248,
-			5, 8, 253, 245, 251, 254, 11, 18, 12, 0, 251, 254, 244, 235, 252, 4, 254, 4, 16, 3, 235, 231, 254, 25, 40, 44, 27, 22, 28, 20,
-			14, 24, 33, 27, 3, 11, 25, 14, 6, 13, 10, 234, 219, 238, 246, 235, 243, 232, 209, 221, 11, 30, 0, 0, 147, 5, 17, 0, 252, 244,
-			246, 1, 12, 13, 9, 4, 253, 5, 9, 6, 251, 245, 249, 251, 10, 13, 16, 6, 239, 231, 245, 254, 7, 9, 8, 248, 231, 233, 243, 1,
-			4, 254, 246, 242, 0, 8, 6, 0, 247, 239, 244, 10, 28, 37, 26, 7, 249, 252, 0, 0, 5, 16, 25, 25, 15, 255, 240, 227, 229, 247,
-			12, 23, 16, 0, 243, 246, 247, 240, 241, 255, 11, 10, 0, 251, 253, 254, 250, 250, 240, 245, 2, 11, 12, 6, 5, 0, 0, 253, 250, 247,
-			0, 14, 20, 19, 18, 5, 240, 244, 0, 11, 20, 19, 10, 255, 247, 247, 253, 249, 248, 3, 5, 8, 1, 238, 229, 246, 5, 254, 251, 255,
-			6, 17, 12, 252, 242, 247, 255, 0, 13, 16, 11, 0, 244, 244, 248, 242, 245, 2, 8, 3, 7, 255, 240, 241, 253, 10, 14, 6, 253, 3,
-			18, 30, 33, 20, 9, 254, 249, 8, 10, 8, 3, 5, 5, 253, 249, 240, 235, 244, 4, 6, 253, 242, 237, 239, 248, 251, 0, 255, 248, 249,
-			243, 240, 242, 253, 12, 16, 5, 249, 239, 241, 1, 9, 15, 28, 25, 10, 252, 236, 244, 13, 24, 23, 23, 18, 10, 13, 8, 9, 8, 2,
-			254, 254, 3, 8, 14, 9, 252, 231, 223, 233, 241, 3, 12, 4, 239, 227, 232, 250, 0, 248, 255, 2, 248, 248, 250, 252, 4, 0, 0, 0,
-			251, 254, 20, 20, 1, 254, 0, 7, 14, 15, 15, 14, 14, 15, 14, 13, 14, 18, 14, 10, 2, 239, 225, 231, 255, 12, 13, 5, 245, 225,
-			221, 237, 2, 5, 0, 253, 250, 238, 228, 236, 4, 14, 8, 4, 1, 243, 234, 248, 16, 33, 35, 9, 240, 249, 5, 4, 0, 17, 38, 36,
-			22, 251, 242, 0, 20, 20, 249, 247, 2, 7, 2, 250, 234, 238, 247, 242, 239, 0, 12, 7, 247, 229, 225, 253, 11, 17, 15, 7, 247, 220,
-			233, 247, 253, 21, 41, 12, 236, 233, 241, 4, 22, 27, 15, 248, 250, 1, 0, 18, 15, 8, 7, 2, 8, 12, 5, 255, 3, 8, 6, 4,
-			247, 247, 254, 4, 0, 254, 244, 245, 252, 251, 246, 241, 244, 251, 9, 6, 254, 241, 239, 248, 4, 8, 2, 8, 13, 4, 246, 244, 6, 16,
-			22, 13, 254, 247, 236, 252, 24, 27, 4, 243, 247, 255, 9, 16, 18, 11, 10, 253, 254, 0, 253, 240, 246, 7, 22, 11, 252, 237, 225, 229,
-			235, 247, 254, 253, 6, 6, 255, 245, 244, 251, 255, 2, 13, 22, 14, 11, 14, 1, 244, 251, 12, 33, 40, 21, 244, 234, 250, 15, 22, 5,
-			233, 232, 7, 15, 248, 237, 0, 16, 14, 0, 232, 214, 222, 252, 20, 34, 25, 242, 237, 243, 250, 2, 2, 8, 240, 222, 229, 5, 28, 43,
-			18, 225, 228, 240, 254, 25, 57, 48, 4, 244, 241, 0, 16, 7, 3, 0, 6, 254, 14, 31, 25, 2, 232, 219, 213, 234, 15, 33, 25, 1,
-			249, 245, 241, 216, 196, 225, 24, 55, 19, 233, 228, 232, 244, 9, 10, 4, 25, 27, 15, 19, 250, 219, 233, 8, 19, 41, 50, 23, 247, 233,
-			226, 239, 16, 38, 20, 255, 242, 253, 252, 235, 244, 15, 34, 27, 242, 217, 233, 10, 14, 245, 214, 204, 231, 8, 29, 21, 255, 237, 226, 239,
-			15, 22, 6, 253, 20, 36, 37, 252, 214, 226, 20, 63, 65, 34, 1, 218, 221, 234, 251, 6, 252, 4, 16, 21, 17, 253, 234, 230, 243, 226,
-			242, 27, 64, 67, 17, 214, 174, 178, 244, 44, 48, 24, 0, 234, 217, 207, 207, 0, 33, 14, 3, 4, 4, 251, 230, 229, 1, 21, 12, 30,
-			53, 66, 42, 244, 212, 210, 245, 23, 52, 65, 48, 1, 231, 218, 215, 238, 16, 15, 16, 2, 242, 230, 210, 221, 246, 29, 37, 12, 231, 224,
-			6, 16, 253, 234, 224, 238, 19, 34, 6, 222, 214, 221, 243, 15, 24, 31, 37, 28, 0, 219, 210, 244, 45, 57, 52, 19, 246, 254, 20, 17,
-			252, 229, 234, 16, 47, 53, 28, 221, 192, 213, 240, 13, 38, 28, 11, 245, 230, 235, 227, 224, 228, 237, 8, 32, 31, 0, 249, 2, 255, 243,
-			210, 219, 10, 35, 53, 21, 238, 236, 255, 1, 242, 243, 6, 22, 22, 9, 1, 226, 3, 1, 248, 33, 23, 255, 243, 14, 19, 24, 42, 16,
-			238, 197, 217, 2, 23, 55, 38, 0, 224, 223, 235, 240, 15, 29, 13, 236, 227, 213, 218, 31, 32, 9, 244, 200, 203, 15, 49, 46, 29, 242,
-			219, 210, 232, 12, 25, 34, 34, 4, 243, 2, 0, 1, 3, 242, 1, 13, 27, 41, 33, 14, 246, 230, 232, 252, 239, 16, 46, 30, 5, 223,
-			233, 237, 247, 1, 232, 215, 255, 36, 6, 242, 245, 227, 233, 224, 243, 8, 17, 63, 44, 0, 219, 223, 231, 0, 53, 20, 36, 55, 25, 227,
-			181, 191, 236, 52, 81, 65, 8, 217, 221, 200, 203, 25, 69, 67, 33, 222, 208, 237, 17, 47, 10, 201, 205, 1, 33, 51, 250, 219, 242, 234,
-			234, 234, 209, 8, 67, 73, 36, 231, 180, 190, 231, 253, 48, 71, 67, 39, 204, 180, 206, 0, 38, 63, 19, 229, 212, 242, 61, 66, 12, 210,
-			177, 224, 37, 48, 43, 16, 0, 4, 245, 242, 216, 210, 16, 43, 20, 21, 9, 225, 217, 241, 255, 251, 247, 26, 61, 27, 231, 211, 213, 11,
-			50, 44, 245, 225, 215, 9, 51, 57, 11, 180, 162, 244, 41, 28, 11, 230, 205, 243, 12, 11, 239, 233, 239, 245, 40, 78, 29, 240, 220, 231,
-			244, 9, 39, 43, 36, 33, 20, 218, 219, 0, 248, 35, 55, 29, 236, 222, 6, 10, 14, 10, 15, 3, 230, 232, 238, 9, 44, 11, 229, 187,
-			179, 210, 249, 45, 2, 212, 211, 25, 35, 240, 239, 231, 0, 32, 27, 22, 6, 251, 11, 28, 38, 23, 0, 224, 222, 45, 47, 46, 10, 218,
-			238, 22, 18, 241, 4, 0, 8, 19, 252, 13, 0, 222, 242, 239, 235, 234, 20, 24, 235, 211, 204, 233, 231, 31, 46, 246, 230, 220, 210, 233,
-			26, 45, 29, 243, 236, 31, 41, 28, 32, 216, 254, 62, 41, 19, 29, 44, 1, 10, 225, 210, 216, 251, 87, 79, 2, 221, 174, 131, 223, 49,
-			37, 26, 15, 229, 216, 213, 230, 220, 214, 41, 56, 27, 231, 205, 217, 248, 64, 70, 250, 172, 227, 35, 41, 45, 23, 239, 248, 15, 31, 6,
-			7, 17, 39, 29, 233, 253, 13, 10, 23, 240, 234, 8, 15, 28, 38, 14, 201, 184, 184, 253, 94, 95, 3, 164, 131, 186, 20, 73, 41, 234,
-			195, 191, 11, 9, 239, 242, 244, 20, 40, 43, 239, 196, 228, 35, 94, 50, 236, 213, 200, 235, 32, 58, 49, 19, 226, 242, 15, 218, 227, 52,
-			74, 74, 15, 214, 0, 227, 250, 41, 38, 246, 8, 23, 231, 245, 237, 241, 230, 247, 32, 41, 5, 201, 210, 187, 216, 38, 50, 252, 237, 229,
-			232, 250, 0, 255, 237, 4, 10, 2, 240, 12, 12, 12, 9, 1, 5, 228, 12, 38, 15, 232, 247, 254, 241, 33, 47, 13, 210, 229, 20, 48,
-			18, 221, 237, 251, 26, 62, 8, 216, 246, 3, 2, 8, 30, 22, 18, 254, 249, 248, 241, 19, 23, 244, 253, 7, 248, 237, 6, 26, 3, 239,
-			242, 5, 7, 8, 12, 215, 217, 243, 255, 249, 251, 6, 236, 227, 245, 253, 253, 225, 231, 250, 234, 28, 25, 244, 210, 241, 6, 4, 28, 30,
-			47, 255, 227, 7, 247, 6, 50, 52, 11, 246, 9, 38, 0, 230, 252, 31, 20, 54, 61, 10, 216, 189, 233, 12, 39, 74, 30, 200, 147, 214,
-			50, 41, 16, 4, 243, 245, 204, 223, 218, 242, 242, 32, 53, 13, 6, 209, 196, 230, 28, 80, 61, 241, 186, 214, 26, 42, 65, 22, 234, 234,
-			238, 6, 17, 5, 245, 41, 42, 247, 237, 194, 208, 2, 19, 252, 18, 242, 238, 246, 224, 223, 216, 226, 13, 31, 30, 2, 228, 207, 218, 248,
-			14, 15, 255, 19, 18, 2, 14, 236, 241, 239, 7, 40, 44, 34, 9, 12, 251, 252, 22, 30, 38, 39, 31, 3, 20, 26, 9, 2, 8, 19,
-			38, 26, 28, 33, 13, 248, 1, 247, 239, 21, 56, 43, 12, 242, 239, 0, 183, 6, 8, 0, 1, 12, 253, 238, 243, 1, 5, 0, 5, 252,
-			253, 17, 26, 8, 255, 19, 43, 35, 14, 7, 17, 21, 19, 15, 8, 12, 12, 11, 252, 236, 255, 15, 10, 251, 235, 243, 238, 224, 225, 219,
-			217, 229, 228, 214, 198, 198, 224, 4, 245, 235, 14, 29, 26, 0, 3, 31, 47, 54, 54, 39, 16, 29, 56, 52, 33, 11, 18, 41, 23, 250,
-			246, 2, 1, 0, 253, 221, 220, 244, 237, 223, 209, 221, 249, 235, 204, 215, 245, 0, 245, 235, 247, 6, 17, 8, 245, 243, 0, 24, 16, 242,
-			243, 17, 30, 23, 0, 250, 16, 38, 29, 10, 9, 5, 21, 25, 4, 250, 21, 29, 16, 242, 240, 10, 18, 4, 245, 244, 244, 246, 241, 238,
-			230, 233, 237, 240, 229, 220, 243, 250, 251, 248, 4, 12, 21, 23, 14, 19, 29, 36, 40, 19, 9, 15, 16, 4, 3, 2, 251, 244, 237, 254,
-			0, 240, 244, 246, 233, 235, 249, 250, 236, 235, 246, 253, 243, 240, 2, 1, 247, 4, 9, 5, 8, 16, 24, 24, 2, 254, 13, 5, 252, 246,
-			254, 249, 0, 0, 254, 249, 248, 10, 13, 2, 15, 30, 32, 18, 5, 20, 20, 12, 0, 4, 3, 245, 253, 255, 249, 228, 236, 251, 251, 247,
-			249, 249, 0, 7, 10, 253, 240, 239, 255, 255, 229, 228, 254, 6, 247, 228, 238, 253, 0, 32, 48, 31, 7, 254, 255, 10, 2, 5, 30, 23,
-			248, 235, 253, 7, 248, 253, 31, 19, 240, 240, 253, 254, 255, 10, 18, 251, 227, 231, 253, 234, 237, 4, 6, 7, 245, 241, 248, 243, 253, 25,
-			17, 235, 250, 13, 254, 236, 252, 25, 34, 28, 11, 13, 20, 30, 46, 50, 32, 17, 30, 29, 252, 226, 247, 4, 242, 230, 233, 224, 189, 216,
-			2, 234, 208, 218, 249, 254, 217, 217, 242, 4, 2, 255, 8, 252, 245, 17, 38, 27, 3, 33, 64, 31, 12, 22, 26, 47, 40, 13, 14, 246,
-			6, 37, 3, 220, 219, 242, 252, 211, 173, 217, 246, 237, 229, 225, 220, 230, 3, 11, 244, 245, 13, 44, 25, 242, 247, 29, 47, 31, 24, 29,
-			43, 55, 43, 16, 7, 16, 47, 32, 243, 223, 0, 10, 249, 223, 213, 231, 249, 248, 235, 224, 211, 232, 1, 255, 230, 221, 244, 240, 238, 251,
-			1, 4, 1, 9, 10, 245, 250, 12, 35, 35, 10, 12, 2, 249, 1, 17, 38, 29, 13, 14, 4, 222, 245, 35, 35, 4, 241, 5, 15, 238,
-			224, 245, 5, 248, 252, 237, 218, 205, 225, 12, 6, 240, 252, 18, 4, 246, 254, 22, 38, 29, 30, 26, 4, 247, 19, 23, 4, 13, 21, 31,
-			13, 243, 251, 10, 14, 245, 246, 242, 248, 237, 209, 223, 233, 219, 223, 229, 226, 212, 228, 242, 0, 7, 13, 28, 14, 20, 49, 72, 60, 34,
-			42, 49, 38, 19, 4, 244, 254, 253, 244, 220, 205, 216, 247, 246, 209, 213, 243, 252, 0, 235, 236, 253, 254, 243, 13, 11, 249, 7, 23, 25,
-			248, 236, 27, 68, 30, 254, 20, 32, 10, 10, 2, 250, 235, 7, 36, 248, 202, 226, 10, 25, 248, 236, 6, 22, 26, 7, 247, 0, 31, 29,
-			2, 229, 224, 253, 8, 229, 203, 211, 240, 1, 239, 210, 223, 254, 3, 253, 239, 254, 12, 24, 2, 249, 0, 43, 58, 47, 16, 254, 33, 56,
-			50, 26, 18, 20, 16, 6, 255, 245, 244, 243, 6, 7, 225, 198, 222, 0, 249, 228, 242, 244, 234, 232, 248, 247, 226, 234, 9, 252, 230, 232,
-			0, 2, 251, 251, 5, 4, 251, 13, 21, 12, 9, 30, 32, 22, 10, 20, 49, 54, 37, 29, 27, 24, 45, 37, 246, 232, 245, 0, 238, 224,
-			219, 207, 194, 225, 226, 211, 199, 231, 2, 227, 206, 232, 12, 16, 14, 36, 34, 24, 19, 44, 46, 10, 20, 53, 62, 19, 240, 1, 22, 2,
-			6, 5, 252, 247, 223, 220, 234, 227, 248, 5, 241, 217, 218, 238, 230, 234, 6, 27, 22, 239, 240, 252, 2, 21, 30, 25, 11, 249, 253, 8,
-			10, 255, 19, 33, 5, 252, 243, 8, 27, 23, 13, 13, 16, 251, 248, 248, 250, 241, 0, 6, 254, 217, 222, 250, 241, 243, 8, 20, 6, 249,
-			247, 254, 6, 4, 18, 14, 227, 230, 12, 25, 248, 237, 244, 35, 4, 219, 6, 33, 19, 15, 24, 10, 250, 0, 33, 11, 209, 228, 255, 0,
-			229, 219, 237, 243, 228, 248, 26, 22, 14, 32, 41, 18, 254, 10, 46, 45, 27, 255, 241, 228, 251, 1, 240, 220, 224, 21, 10, 222, 243, 1,
-			12, 5, 241, 7, 13, 241, 231, 236, 241, 223, 252, 5, 240, 224, 220, 16, 14, 241, 255, 34, 20, 21, 43, 27, 36, 25, 35, 57, 23, 248,
-			3, 24, 4, 253, 246, 245, 0, 246, 250, 2, 242, 222, 4, 4, 226, 217, 228, 228, 205, 209, 244, 5, 225, 220, 254, 10, 255, 7, 55, 54,
-			41, 42, 40, 51, 43, 15, 10, 27, 19, 3, 233, 218, 224, 236, 236, 250, 239, 225, 0, 12, 242, 245, 2, 0, 6, 26, 4, 254, 4, 240,
-			242, 253, 245, 0, 7, 245, 0, 254, 250, 7, 248, 247, 13, 11, 243, 224, 240, 12, 1, 243, 246, 244, 249, 21, 10, 15, 13, 13, 33, 60,
-			44, 11, 11, 21, 37, 56, 11, 233, 247, 239, 0, 240, 207, 221, 243, 224, 223, 206, 187, 235, 7, 251, 246, 254, 13, 32, 20, 229, 0, 35,
-			46, 70, 33, 5, 29, 45, 27, 7, 253, 42, 69, 16, 216, 207, 221, 231, 231, 211, 190, 189, 200, 214, 223, 186, 196, 6, 41, 25, 239, 224,
-			6, 41, 38, 32, 26, 35, 63, 45, 35, 24, 16, 77, 112, 73, 10, 8, 28, 13, 244, 232, 240, 227, 186, 184, 170, 149, 158, 206, 219, 217,
-			238, 247, 3, 9, 7, 64, 100, 59, 39, 45, 49, 31, 22, 14, 31, 36, 0, 9, 247, 212, 3, 41, 34, 235, 202, 242, 246, 203, 177, 200,
-			221, 211, 204, 192, 207, 218, 11, 34, 13, 30, 44, 83, 69, 35, 44, 72, 92, 71, 11, 251, 228, 228, 0, 247, 200, 188, 216, 217, 194, 195,
-			240, 10, 251, 10, 26, 13, 8, 26, 59, 61, 42, 29, 5, 3, 4, 252, 0, 252, 1, 255, 233, 218, 219, 246, 255, 6, 250, 228, 244, 247,
-			244, 239, 245, 0, 19, 13, 237, 233, 230, 254, 34, 14, 24, 13, 21, 27, 8, 44, 45, 45, 58, 34, 1, 253, 4, 2, 254, 232, 207, 222,
-			207, 185, 195, 219, 241, 234, 235, 225, 229, 238, 240, 21, 33, 25, 47, 45, 33, 21, 19, 54, 65, 35, 18, 17, 254, 239, 241, 234, 226, 231,
-			5, 255, 229, 217, 205, 226, 0, 10, 14, 239, 241, 1, 5, 4, 9, 26, 25, 20, 38, 4, 238, 5, 35, 37, 16, 11, 2, 248, 245, 1,
-			252, 239, 239, 0, 245, 208, 209, 234, 227, 231, 9, 6, 8, 249, 251, 20, 28, 38, 58, 52, 19, 20, 26, 254, 245, 245, 1, 12, 232, 230,
-			232, 223, 231, 250, 15, 240, 236, 14, 249, 244, 241, 254, 2, 5, 27, 7, 234, 232, 17, 32, 0, 21, 26, 17, 249, 239, 253, 233, 3, 15,
-			254, 230, 207, 236, 237, 222, 243, 1, 15, 2, 4, 246, 7, 53, 53, 53, 53, 62, 52, 18, 27, 33, 41, 20, 253, 1, 212, 209, 227, 234,
-			218, 222, 229, 227, 227, 224, 236, 246, 237, 0, 246, 215, 220, 223, 235, 233, 0, 12, 0, 248, 247, 15, 30, 44, 73, 72, 44, 40, 35, 36,
-			36, 23, 20, 25, 248, 227, 227, 204, 211, 229, 245, 241, 223, 222, 238, 246, 254, 20, 38, 15, 10, 26, 2, 0, 14, 0, 249, 248, 251, 0,
-			228, 211, 242, 1, 15, 14, 11, 0, 251, 14, 6, 8, 24, 19, 17, 254, 233, 248, 248, 243, 19, 18, 234, 11, 11, 252, 254, 9, 44, 33,
-			254, 2, 6, 254, 231, 252, 12, 236, 229, 237, 224, 206, 220, 244, 255, 236, 228, 12, 7, 255, 16, 36, 41, 37, 38, 39, 15, 2, 11, 35,
-			23, 243, 18, 1, 229, 247, 237, 239, 2, 240, 246, 243, 229, 230, 255, 0, 244, 2, 249, 7, 6, 229, 240, 25, 43, 12, 255, 1, 247, 13,
-			14, 6, 11, 6, 3, 16, 235, 198, 0, 21, 7, 2, 220, 239, 18, 246, 248, 255, 9, 25, 33, 0, 244, 247, 6, 26, 25, 0, 248, 8,
-			1, 239, 238, 254, 7, 23, 5, 246, 248, 225, 239, 25, 4, 247, 3, 3, 9, 250, 244, 21, 36, 22, 11, 15, 10, 3, 23, 12, 1, 253,
-			2, 6, 244, 222, 218, 245, 250, 225, 226, 237, 238, 245, 244, 240, 237, 10, 10, 9, 249, 240, 31, 35, 18, 25, 251, 247, 21, 15, 244, 236,
-			247, 3, 14, 249, 238, 254, 252, 10, 24, 254, 252, 29, 24, 6, 12, 12, 30, 38, 21, 13, 11, 255, 9, 17, 8, 240, 242, 245, 224, 215,
-			223, 240, 242, 250, 233, 237, 238, 250, 15, 255, 247, 3, 19, 11, 1, 5, 0, 249, 19, 12, 9, 250, 2, 8, 7, 241, 26, 33, 253, 8,
-			247, 249, 252, 244, 6, 0, 220, 228, 241, 234, 235, 244, 244, 4, 253, 255, 8, 254, 9, 21, 29, 20, 16, 21, 29, 26, 7, 19, 26, 19,
-			23, 14, 12, 21, 253, 13, 4, 12, 2, 2, 250, 248, 247, 238, 237, 220, 230, 225, 222, 227, 211, 225, 229, 225, 245, 239, 241, 253, 3, 11,
-			8, 14, 17, 20, 17, 12, 12, 3, 6, 18, 5, 246, 246, 9, 14, 249, 247, 236, 245, 10, 10, 17, 0, 253, 19, 24, 16, 7, 37, 42,
-			28, 32, 14, 30, 16, 11, 29, 5, 251, 250, 8, 0, 229, 242, 234, 243, 244, 244, 249, 231, 239, 245, 5, 0, 237, 0, 250, 241, 252, 243,
-			10, 17, 254, 2, 2, 2, 2, 4, 2, 250, 244, 236, 249, 237, 219, 225, 239, 233, 214, 206, 222, 221, 225, 225, 227, 241, 227, 248, 0, 0,
-			30, 7, 15, 0, 0, 248, 249, 252, 250, 251, 254, 255, 255, 0, 249, 243, 242, 249, 1, 3, 0, 2, 3, 1, 253, 251, 247, 248, 252, 252,
-			255, 250, 253, 253, 255, 254, 0, 8, 16, 18, 18, 16, 12, 8, 6, 5, 7, 12, 17, 24, 24, 24, 21, 19, 20, 16, 13, 13, 7, 9,
-			8, 6, 7, 12, 14, 20, 21, 21, 19, 15, 7, 0, 249, 239, 242, 245, 243, 245, 247, 248, 251, 249, 251, 250, 243, 241, 237, 240, 241, 242,
-			244, 247, 248, 248, 249, 243, 241, 245, 247, 249, 248, 250, 0, 255, 254, 251, 251, 246, 239, 247, 241, 233, 230, 231, 236, 240, 245, 253, 0, 1,
-			3, 2, 0, 255, 0, 6, 8, 11, 16, 25, 27, 30, 36, 36, 26, 17, 5, 255, 253, 254, 0, 3, 9, 15, 19, 21, 21, 18, 12, 5,
-			5, 6, 5, 2, 2, 0, 253, 0, 12, 16, 12, 2, 246, 237, 235, 232, 227, 224, 226, 232, 238, 243, 247, 252, 255, 1, 3, 0, 251, 244,
-			242, 247, 251, 0, 4, 6, 1, 251, 248, 243, 247, 248, 249, 254, 4, 255, 255, 255, 253, 255, 4, 5, 5, 4, 0, 3, 2, 0, 254, 255,
-			3, 6, 12, 14, 10, 4, 0, 1, 3, 12, 20, 22, 26, 22, 20, 18, 15, 9, 4, 1, 0, 13, 15, 12, 11, 5, 254, 249, 241, 242,
-			238, 238, 243, 249, 247, 250, 253, 254, 255, 0, 1, 3, 6, 3, 0, 254, 254, 5, 7, 1, 0, 250, 248, 247, 240, 241, 241, 244, 248, 249,
-			250, 1, 4, 254, 0, 253, 253, 0, 0, 4, 10, 17, 21, 15, 4, 250, 242, 236, 230, 229, 234, 236, 239, 243, 0, 10, 19, 24, 22, 17,
-			18, 15, 17, 14, 11, 17, 31, 39, 44, 42, 34, 34, 30, 24, 14, 7, 255, 254, 0, 0, 1, 4, 11, 10, 7, 2, 2, 4, 1, 255,
-			250, 0, 5, 8, 8, 9, 6, 2, 1, 252, 243, 239, 237, 232, 230, 222, 221, 222, 229, 235, 235, 241, 240, 236, 237, 237, 242, 244, 244, 246,
-			245, 241, 245, 237, 231, 235, 235, 244, 248, 243, 240, 236, 234, 238, 236, 243, 252, 251, 254, 0, 252, 0, 0, 5, 9, 13, 18, 22, 21, 18,
-			22, 26, 36, 41, 38, 43, 40, 34, 26, 17, 11, 14, 8, 8, 8, 9, 18, 26, 24, 12, 254, 254, 254, 251, 254, 252, 253, 252, 253, 255,
-			1, 5, 6, 3, 254, 250, 250, 248, 241, 242, 245, 248, 254, 0, 3, 11, 11, 14, 9, 250, 236, 236, 235, 242, 246, 250, 251, 251, 0, 0,
-			252, 242, 234, 234, 230, 234, 238, 243, 246, 242, 250, 10, 16, 18, 15, 10, 3, 1, 254, 255, 251, 6, 20, 20, 25, 28, 20, 11, 1, 250,
-			250, 251, 252, 247, 246, 244, 254, 7, 0, 252, 255, 0, 3, 0, 1, 2, 12, 15, 22, 25, 21, 20, 11, 7, 10, 7, 8, 6, 2, 3,
-			9, 5, 255, 252, 239, 228, 230, 231, 233, 237, 237, 242, 248, 253, 8, 19, 16, 14, 9, 253, 253, 250, 244, 244, 243, 246, 253, 254, 252, 249,
-			238, 234, 237, 239, 243, 243, 252, 1, 0, 0, 11, 11, 12, 19, 23, 22, 20, 15, 16, 13, 9, 12, 20, 23, 28, 30, 26, 20, 12, 6,
-			6, 8, 10, 9, 7, 6, 9, 15, 24, 30, 29, 25, 12, 1, 250, 248, 245, 243, 237, 230, 224, 236, 244, 248, 242, 238, 241, 242, 249, 253,
-			246, 237, 233, 236, 248, 253, 3, 5, 5, 254, 252, 243, 242, 242, 241, 237, 231, 231, 232, 234, 244, 247, 255, 3, 0, 255, 255, 254, 2, 4,
-			254, 0, 3, 5, 7, 2, 2, 9, 14, 17, 14, 3, 254, 249, 244, 250, 246, 246, 252, 251, 0, 3, 8, 22, 29, 28, 33, 28, 25, 16,
-			6, 9, 5, 10, 18, 18, 17, 21, 23, 26, 15, 4, 3, 0, 253, 254, 249, 248, 246, 252, 2, 0, 255, 253, 254, 243, 239, 234, 224, 232,
-			242, 247, 3, 2, 2, 1, 243, 232, 239, 245, 253, 254, 255, 3, 10, 13, 12, 6, 255, 4, 7, 1, 250, 241, 240, 244, 246, 243, 247, 251,
-			2, 5, 0, 249, 233, 228, 229, 234, 250, 255, 253, 6, 27, 29, 28, 27, 21, 5, 255, 254, 255, 0, 253, 7, 11, 9, 17, 28, 29, 18,
-			3, 4, 4, 254, 251, 255, 1, 11, 16, 23, 29, 30, 31, 31, 23, 8, 250, 239, 238, 237, 244, 249, 251, 4, 5, 1, 2, 251, 242, 243,
-			241, 241, 233, 233, 245, 0, 14, 20, 16, 9, 0, 243, 239, 241, 235, 226, 224, 236, 249, 0, 4, 0, 251, 247, 240, 235, 236, 233, 237, 247,
-			1, 15, 27, 34, 35, 29, 21, 9, 3, 2, 253, 3, 8, 19, 25, 30, 26, 20, 15, 17, 14, 6, 248, 236, 245, 251, 252, 5, 9, 11,
-			16, 9, 4, 0, 244, 250, 254, 253, 5, 0, 0, 5, 252, 252, 0, 246, 247, 252, 243, 244, 241, 241, 250, 251, 251, 2, 10, 6, 3, 2,
-			250, 244, 235, 226, 232, 234, 234, 240, 239, 232, 227, 232, 240, 244, 246, 243, 241, 243, 244, 10, 24, 26, 29, 26, 20, 18, 21, 19, 14, 1,
-			3, 20, 16, 16, 23, 14, 6, 5, 5, 0, 253, 252, 253, 251, 253, 11, 22, 15, 17, 24, 29, 36, 40, 30, 17, 12, 255, 250, 242, 231,
-			234, 239, 229, 243, 253, 245, 253, 251, 248, 246, 230, 229, 242, 250, 6, 15, 21, 30, 23, 21, 17, 254, 254, 0, 255, 3, 255, 247, 248, 244,
-			254, 3, 251, 243, 231, 210, 215, 227, 230, 239, 250, 252, 0, 3, 10, 25, 36, 12, 253, 2, 241, 250, 3, 239, 242, 249, 3, 30, 40, 29,
-			15, 248, 229, 229, 243, 0, 4, 246, 243, 254, 11, 29, 34, 23, 20, 30, 33, 21, 8, 243, 233, 250, 15, 39, 52, 31, 18, 4, 236, 239,
-			236, 237, 244, 228, 228, 240, 255, 12, 20, 14, 255, 0, 13, 6, 17, 11, 229, 224, 237, 247, 14, 16, 10, 12, 254, 245, 236, 226, 220, 210,
-			216, 231, 233, 245, 247, 236, 246, 241, 247, 11, 15, 7, 255, 2, 0, 253, 12, 21, 29, 34, 17, 18, 25, 20, 23, 19, 24, 29, 32, 37,
-			33, 18, 10, 5, 0, 13, 10, 0, 251, 248, 246, 240, 243, 5, 25, 22, 23, 23, 20, 16, 252, 243, 245, 239, 248, 253, 248, 251, 245, 245,
-			253, 243, 235, 242, 235, 223, 216, 204, 190, 193, 205, 225, 249, 10, 8, 8, 250, 249, 4, 7, 13, 10, 2, 0, 252, 253, 245, 242, 246, 237,
-			243, 248, 237, 243, 237, 228, 251, 2, 19, 39, 22, 25, 24, 34, 51, 44, 41, 49, 48, 62, 56, 45, 38, 21, 23, 18, 254, 253, 230, 226,
-			241, 238, 255, 0, 252, 3, 243, 225, 241, 230, 244, 8, 254, 10, 9, 4, 21, 5, 10, 20, 255, 1, 242, 216, 229, 223, 209, 224, 217, 204,
-			226, 230, 223, 239, 246, 251, 18, 31, 39, 55, 52, 33, 16, 247, 243, 7, 4, 1, 1, 2, 12, 13, 255, 239, 216, 204, 212, 236, 246, 1,
-			8, 0, 255, 0, 8, 22, 18, 30, 42, 28, 21, 18, 6, 249, 230, 226, 239, 242, 241, 255, 1, 7, 23, 26, 31, 28, 23, 30, 31, 28,
-			24, 45, 57, 68, 70, 43, 30, 33, 39, 27, 5, 254, 232, 213, 207, 186, 189, 190, 183, 195, 213, 218, 224, 233, 219, 220, 224, 236, 243, 228,
-			235, 0, 5, 3, 14, 14, 249, 254, 1, 245, 241, 246, 253, 2, 3, 5, 8, 6, 251, 1, 1, 242, 245, 238, 236, 250, 3, 29, 48, 45,
-			43, 38, 23, 33, 29, 22, 19, 6, 1, 9, 6, 13, 18, 4, 4, 253, 2, 26, 29, 31, 19, 9, 8, 11, 18, 19, 26, 13, 9, 25,
-			12, 12, 2, 225, 227, 226, 214, 228, 229, 225, 239, 220, 191, 204, 208, 218, 237, 235, 244, 9, 22, 9, 235, 223, 226, 228, 253, 14, 4, 15,
-			13, 242, 246, 240, 245, 4, 0, 1, 10, 18, 17, 13, 25, 17, 9, 18, 26, 27, 28, 23, 23, 38, 43, 30, 35, 46, 24, 21, 15, 248,
-			253, 246, 216, 215, 214, 229, 0, 5, 9, 255, 236, 243, 234, 235, 231, 211, 224, 246, 240, 8, 10, 12, 30, 9, 255, 254, 0, 9, 6, 8,
-			2, 4, 19, 5, 14, 27, 17, 38, 44, 24, 19, 19, 4, 246, 238, 250, 2, 19, 24, 1, 1, 253, 246, 249, 239, 224, 219, 213, 213, 228,
-			252, 0, 252, 240, 242, 246, 255, 18, 29, 19, 17, 25, 22, 18, 18, 9, 12, 32, 26, 12, 9, 238, 227, 244, 229, 225, 3, 15, 21, 31,
-			29, 10, 10, 13, 249, 243, 236, 214, 211, 212, 209, 232, 251, 242, 231, 232, 225, 220, 227, 222, 214, 216, 231, 242, 249, 247, 254, 7, 14, 30,
-			41, 44, 34, 7, 1, 253, 244, 0, 0, 244, 5, 23, 30, 40, 14, 247, 249, 252, 255, 11, 24, 12, 0, 2, 2, 7, 27, 24, 14, 254,
-			245, 0, 241, 238, 244, 221, 234, 252, 250, 26, 36, 8, 15, 7, 249, 29, 48, 51, 73, 77, 79, 90, 81, 59, 47, 34, 28, 41, 36, 24,
-			30, 19, 6, 20, 18, 20, 34, 22, 4, 245, 229, 232, 222, 207, 212, 214, 237, 1, 255, 8, 0, 242, 240, 226, 217, 220, 215, 199, 193, 199,
-			222, 228, 245, 242, 211, 210, 207, 192, 197, 195, 183, 201, 215, 216, 231, 238, 221, 225, 242, 236, 240, 238, 215, 213, 221, 205, 212, 228, 220, 232,
-			254, 254, 8, 7, 251, 238, 234, 237, 242, 250, 0, 0, 5, 21, 39, 49, 77, 77, 62, 73, 65, 40, 26, 3, 3, 8, 21, 34, 43, 54,
-			40, 40, 36, 35, 43, 31, 36, 34, 26, 50, 53, 39, 47, 45, 45, 31, 34, 16, 243, 249, 227, 200, 220, 230, 232, 13, 15, 5, 31, 29,
-			33, 24, 7, 10, 11, 28, 30, 10, 36, 32, 39, 47, 22, 26, 32, 28, 19, 7, 4, 0, 9, 13, 4, 32, 52, 44, 54, 43, 7, 255,
-			235, 213, 210, 198, 192, 199, 191, 184, 171, 189, 198, 179, 186, 173, 157, 145, 133, 140, 143, 166, 200, 216, 227, 251, 233, 224, 219, 193, 197, 220,
-			224, 235, 255, 251, 251, 18, 30, 24, 36, 49, 50, 59, 50, 34, 31, 21, 15, 25, 39, 71, 65, 61, 53, 36, 32, 33, 20, 9, 5, 8,
-			21, 30, 22, 4, 13, 21, 23, 28, 24, 18, 14, 5, 253, 253, 254, 0, 3, 3, 4, 6, 7, 9, 6, 4, 3, 1, 0, 0, 168, 6,
-			10, 0, 0, 255, 0, 1, 254, 252, 1, 6, 8, 8, 10, 10, 9, 11, 11, 3, 250, 250, 253, 249, 246, 247, 248, 253, 0, 0, 4, 5,
-			253, 247, 245, 245, 242, 239, 244, 253, 3, 2, 3, 8, 5, 1, 0, 255, 3, 3, 0, 3, 7, 12, 13, 22, 27, 19, 10, 5, 9, 10,
-			7, 9, 9, 255, 247, 2, 9, 249, 237, 243, 250, 247, 244, 247, 239, 223, 235, 249, 251, 248, 239, 0, 14, 4, 253, 5, 9, 0, 1, 3,
-			6, 0, 254, 19, 17, 10, 17, 29, 31, 18, 13, 17, 21, 252, 238, 227, 204, 214, 246, 2, 4, 10, 21, 38, 37, 8, 227, 217, 225, 212,
-			196, 201, 217, 235, 19, 58, 48, 25, 30, 24, 253, 234, 231, 217, 226, 2, 0, 11, 38, 47, 61, 68, 48, 253, 233, 250, 242, 6, 14, 244,
-			249, 29, 69, 64, 50, 22, 0, 246, 232, 222, 185, 188, 230, 235, 242, 4, 6, 4, 14, 11, 217, 194, 213, 218, 218, 219, 235, 253, 17, 20,
-			0, 252, 6, 15, 23, 15, 251, 246, 0, 6, 249, 243, 24, 54, 49, 41, 44, 38, 6, 14, 26, 241, 191, 239, 38, 35, 28, 8, 17, 0,
-			234, 225, 220, 221, 199, 209, 241, 249, 0, 23, 13, 241, 236, 244, 6, 14, 12, 252, 236, 246, 250, 10, 31, 33, 29, 34, 76, 66, 3, 249,
-			13, 16, 5, 255, 216, 240, 43, 50, 38, 9, 2, 3, 238, 239, 233, 207, 236, 231, 216, 247, 225, 194, 217, 230, 196, 183, 227, 255, 244, 251,
-			31, 22, 3, 43, 44, 16, 9, 30, 28, 229, 231, 228, 230, 24, 55, 55, 51, 53, 35, 13, 240, 250, 254, 224, 237, 255, 243, 236, 250, 15,
-			37, 13, 229, 212, 214, 215, 212, 233, 248, 9, 16, 5, 30, 39, 38, 20, 238, 238, 237, 240, 244, 243, 13, 48, 79, 92, 62, 19, 2, 8,
-			252, 227, 232, 217, 231, 25, 46, 53, 35, 4, 1, 19, 253, 223, 215, 223, 244, 249, 5, 254, 7, 10, 5, 22, 248, 238, 226, 227, 239, 221,
-			220, 222, 0, 15, 30, 44, 20, 246, 201, 201, 241, 243, 251, 8, 14, 34, 35, 41, 31, 234, 168, 156, 183, 207, 245, 244, 242, 253, 255, 38,
-			78, 68, 28, 4, 232, 189, 169, 177, 207, 230, 9, 26, 23, 41, 79, 66, 52, 49, 234, 191, 225, 15, 42, 60, 52, 74, 101, 83, 92, 69,
-			32, 8, 235, 254, 253, 13, 36, 26, 34, 36, 12, 3, 11, 3, 226, 201, 188, 156, 171, 204, 222, 224, 2, 40, 21, 17, 10, 230, 199, 163,
-			143, 185, 247, 233, 219, 21, 38, 39, 39, 14, 250, 230, 203, 199, 230, 248, 241, 23, 88, 78, 61, 44, 252, 204, 199, 211, 190, 184, 210, 2,
-			23, 17, 46, 82, 112, 106, 46, 15, 235, 173, 150, 184, 239, 4, 43, 83, 99, 99, 52, 25, 35, 4, 237, 211, 198, 237, 237, 3, 40, 46,
-			43, 34, 36, 3, 224, 206, 203, 217, 234, 255, 244, 247, 21, 43, 36, 9, 242, 218, 215, 200, 218, 4, 250, 244, 32, 41, 21, 24, 14, 0,
-			228, 213, 227, 213, 219, 230, 203, 235, 37, 38, 50, 84, 63, 255, 215, 217, 202, 193, 218, 233, 243, 40, 86, 75, 68, 46, 2, 255, 14, 250,
-			197, 181, 222, 225, 0, 37, 12, 42, 69, 60, 32, 240, 226, 223, 217, 214, 222, 252, 13, 52, 79, 44, 46, 51, 24, 230, 220, 247, 230, 219,
-			207, 224, 1, 245, 228, 252, 40, 19, 220, 220, 214, 176, 188, 213, 229, 252, 255, 249, 249, 33, 25, 3, 26, 13, 250, 241, 38, 76, 61, 73,
-			62, 35, 31, 43, 46, 14, 235, 242, 35, 73, 59, 2, 228, 252, 247, 246, 14, 5, 224, 185, 208, 220, 187, 196, 206, 228, 249, 247, 11, 13,
-			236, 204, 218, 235, 235, 246, 253, 25, 39, 5, 251, 5, 27, 17, 0, 6, 14, 29, 37, 39, 30, 3, 242, 251, 250, 1, 12, 15, 0, 240,
-			29, 28, 8, 25, 4, 2, 247, 223, 239, 241, 251, 254, 229, 229, 0, 14, 12, 23, 13, 235, 241, 15, 243, 181, 225, 30, 31, 30, 245, 242,
-			0, 12, 27, 248, 236, 233, 253, 31, 40, 24, 250, 248, 16, 4, 227, 227, 231, 227, 249, 27, 48, 47, 41, 35, 29, 1, 229, 226, 225, 229,
-			225, 237, 17, 23, 249, 11, 44, 34, 19, 32, 23, 231, 222, 242, 244, 249, 12, 253, 249, 9, 22, 32, 27, 15, 242, 247, 14, 242, 195, 192,
-			212, 233, 243, 245, 245, 253, 20, 27, 12, 247, 255, 3, 228, 220, 215, 246, 16, 21, 49, 30, 20, 10, 245, 222, 216, 239, 242, 255, 0, 5,
-			37, 44, 34, 24, 23, 15, 241, 229, 246, 245, 229, 240, 0, 14, 35, 42, 39, 37, 29, 14, 241, 206, 204, 227, 216, 235, 7, 11, 45, 80,
-			83, 43, 21, 0, 226, 224, 206, 190, 202, 244, 40, 69, 69, 35, 15, 17, 234, 219, 217, 202, 221, 223, 228, 254, 17, 37, 61, 51, 27, 3,
-			196, 191, 232, 212, 190, 223, 12, 32, 26, 22, 12, 254, 230, 234, 232, 195, 198, 243, 12, 244, 252, 33, 73, 77, 43, 26, 8, 243, 221, 247,
-			18, 14, 14, 35, 93, 69, 23, 42, 39, 0, 236, 246, 252, 245, 245, 248, 245, 3, 16, 23, 33, 16, 230, 209, 198, 194, 194, 176, 185, 211,
-			199, 206, 228, 0, 2, 252, 43, 46, 4, 5, 10, 0, 246, 247, 26, 36, 30, 46, 58, 63, 93, 90, 54, 27, 13, 252, 234, 255, 2, 5,
-			0, 38, 43, 6, 17, 255, 217, 174, 149, 151, 159, 163, 175, 222, 15, 36, 12, 242, 0, 3, 225, 197, 205, 237, 237, 234, 24, 42, 46, 72,
-			57, 58, 47, 249, 0, 17, 16, 24, 27, 35, 24, 5, 24, 62, 50, 28, 22, 27, 21, 249, 221, 198, 211, 227, 249, 3, 11, 5, 232, 215,
-			212, 208, 186, 223, 7, 0, 239, 231, 255, 19, 38, 48, 58, 48, 32, 10, 231, 247, 242, 240, 12, 22, 18, 18, 65, 75, 45, 34, 16, 239,
-			207, 205, 201, 215, 224, 209, 234, 0, 245, 253, 16, 10, 248, 211, 208, 221, 217, 216, 219, 4, 44, 53, 38, 41, 28, 0, 1, 25, 26, 253,
-			253, 9, 31, 13, 251, 8, 23, 20, 0, 1, 248, 244, 241, 247, 9, 242, 225, 219, 233, 255, 233, 237, 239, 222, 205, 222, 235, 228, 5, 24,
-			31, 39, 39, 37, 43, 27, 236, 228, 5, 3, 240, 0, 35, 43, 32, 38, 26, 12, 20, 33, 46, 28, 249, 255, 39, 38, 12, 249, 254, 18,
-			8, 240, 205, 194, 219, 238, 244, 234, 234, 7, 20, 3, 234, 209, 194, 209, 238, 209, 209, 246, 0, 24, 24, 21, 19, 21, 18, 12, 12, 0,
-			247, 233, 7, 40, 17, 253, 254, 4, 26, 41, 19, 9, 37, 35, 23, 24, 16, 8, 243, 249, 243, 203, 207, 210, 201, 203, 230, 19, 29, 23,
-			9, 5, 5, 3, 253, 233, 231, 239, 254, 255, 250, 1, 12, 49, 73, 46, 16, 250, 251, 252, 245, 235, 208, 234, 9, 45, 82, 68, 49, 35,
-			33, 13, 236, 231, 217, 194, 201, 226, 243, 236, 236, 12, 25, 17, 10, 0, 12, 254, 220, 198, 187, 200, 223, 244, 250, 10, 10, 244, 8, 25,
-			15, 245, 225, 226, 233, 251, 4, 22, 27, 38, 66, 39, 29, 19, 6, 0, 241, 248, 249, 22, 33, 26, 31, 37, 45, 32, 11, 6, 253, 232,
-			236, 235, 232, 238, 242, 5, 23, 19, 2, 5, 253, 251, 231, 219, 238, 231, 234, 6, 19, 16, 23, 5, 4, 11, 5, 246, 241, 254, 237, 237,
-			251, 23, 43, 36, 30, 7, 246, 239, 239, 233, 227, 233, 245, 12, 14, 27, 39, 27, 33, 29, 248, 207, 200, 191, 176, 202, 232, 236, 246, 15,
-			23, 24, 3, 231, 238, 243, 238, 209, 225, 246, 243, 15, 36, 63, 72, 58, 35, 17, 4, 230, 218, 226, 249, 19, 31, 60, 65, 48, 64, 67,
-			35, 17, 239, 218, 218, 185, 177, 238, 50, 36, 30, 27, 9, 9, 10, 2, 219, 195, 192, 203, 222, 228, 252, 14, 34, 43, 33, 35, 21, 243,
-			209, 213, 235, 225, 227, 25, 63, 67, 68, 35, 239, 250, 233, 213, 248, 229, 210, 249, 21, 17, 24, 24, 26, 13, 227, 218, 215, 179, 156, 186,
-			241, 8, 255, 22, 65, 67, 48, 13, 247, 0, 233, 216, 238, 242, 244, 22, 77, 101, 71, 32, 22, 19, 254, 248, 0, 249, 232, 4, 46, 46,
-			37, 18, 246, 249, 252, 216, 181, 160, 160, 203, 11, 41, 25, 33, 58, 47, 20, 245, 200, 179, 205, 228, 233, 254, 21, 30, 37, 70, 67, 11,
-			7, 250, 207, 195, 213, 223, 235, 8, 18, 45, 66, 47, 19, 8, 4, 218, 200, 235, 2, 249, 242, 21, 36, 45, 29, 251, 234, 225, 207, 206,
-			252, 24, 26, 0, 19, 42, 16, 3, 0, 238, 206, 185, 202, 236, 0, 251, 31, 67, 40, 36, 44, 63, 25, 221, 218, 234, 249, 252, 3, 33,
-			52, 34, 31, 34, 9, 231, 195, 204, 230, 217, 221, 18, 43, 19, 17, 41, 17, 247, 240, 228, 235, 201, 175, 200, 247, 4, 248, 4, 15, 27,
-			24, 24, 25, 254, 236, 254, 33, 34, 10, 20, 43, 27, 4, 255, 16, 252, 235, 248, 250, 18, 15, 10, 8, 16, 6, 239, 247, 251, 243, 212,
-			204, 216, 231, 0, 254, 246, 252, 0, 1, 0, 245, 231, 229, 228, 252, 254, 2, 56, 54, 42, 35, 21, 21, 5, 254, 242, 253, 0, 243, 237,
-			248, 10, 13, 9, 10, 12, 15, 26, 12, 251, 240, 239, 251, 8, 16, 9, 0, 244, 249, 0, 4, 15, 5, 10, 12, 249, 236, 229, 0, 19,
-			20, 9, 2, 255, 244, 241, 252, 10, 255, 235, 241, 249, 234, 220, 226, 247, 6, 15, 12, 5, 13, 11, 1, 1, 0, 1, 89, 9, 40, 0,
-			2, 0, 0, 4, 1, 0, 2, 255, 254, 255, 250, 2, 254, 246, 254, 2, 255, 251, 251, 0, 253, 252, 253, 1, 0, 0, 2, 2, 1, 3,
-			4, 6, 2, 6, 7, 6, 4, 4, 6, 3, 3, 5, 5, 3, 255, 3, 1, 253, 2, 0, 252, 251, 255, 253, 250, 253, 0, 255, 251, 251,
-			253, 253, 0, 255, 250, 252, 1, 2, 255, 1, 0, 1, 2, 1, 1, 3, 2, 1, 1, 3, 8, 3, 3, 2, 6, 7, 6, 10, 254, 1,
-			11, 254, 255, 6, 0, 0, 0, 0, 6, 0, 251, 4, 0, 0, 2, 255, 0, 255, 1, 3, 248, 1, 3, 255, 3, 0, 2, 253, 251, 5,
-			0, 252, 255, 2, 1, 252, 249, 255, 240, 208, 216, 240, 247, 241, 244, 0, 255, 254, 254, 255, 15, 14, 5, 4, 7, 9, 14, 9, 14, 15,
-			10, 11, 1, 8, 19, 10, 11, 13, 9, 13, 8, 13, 5, 254, 253, 253, 0, 0, 247, 255, 251, 248, 0, 6, 247, 248, 5, 252, 250, 5,
-			4, 246, 4, 8, 3, 253, 5, 0, 8, 9, 254, 1, 2, 6, 5, 1, 2, 9, 4, 252, 227, 226, 225, 239, 242, 237, 246, 248, 249, 243,
-			246, 250, 0, 9, 5, 5, 5, 12, 22, 27, 24, 240, 8, 30, 235, 253, 23, 253, 246, 1, 15, 2, 251, 9, 6, 0, 6, 10, 6, 5,
-			21, 0, 243, 9, 15, 0, 234, 252, 3, 240, 235, 0, 254, 234, 244, 2, 2, 14, 15, 16, 2, 8, 11, 239, 3, 249, 247, 249, 1, 3,
-			240, 235, 2, 10, 240, 239, 251, 254, 249, 252, 12, 23, 6, 13, 12, 7, 10, 0, 0, 250, 4, 11, 0, 15, 5, 0, 31, 34, 0, 0,
-			11, 8, 8, 252, 8, 18, 252, 248, 241, 241, 249, 237, 239, 243, 241, 245, 2, 255, 252, 255, 0, 8, 13, 244, 206, 218, 240, 254, 0, 15,
-			252, 247, 10, 13, 1, 253, 10, 252, 11, 31, 4, 245, 14, 29, 10, 0, 9, 0, 4, 5, 254, 252, 255, 15, 5, 229, 16, 23, 230, 252,
-			19, 245, 243, 5, 251, 232, 10, 6, 241, 13, 10, 245, 240, 2, 21, 240, 230, 21, 13, 248, 242, 247, 25, 3, 252, 5, 239, 9, 25, 244,
-			246, 252, 16, 27, 245, 252, 21, 5, 251, 8, 12, 4, 250, 9, 19, 6, 237, 246, 26, 31, 225, 232, 40, 248, 250, 246, 239, 14, 1, 248,
-			4, 227, 9, 13, 211, 11, 27, 243, 230, 0, 9, 250, 249, 12, 13, 234, 235, 22, 11, 246, 245, 0, 1, 3, 11, 0, 2, 10, 254, 254,
-			0, 7, 5, 248, 254, 12, 13, 252, 237, 253, 13, 16, 250, 246, 28, 244, 224, 21, 32, 7, 197, 242, 62, 5, 227, 251, 17, 7, 238, 244,
-			19, 12, 241, 249, 0, 17, 18, 237, 7, 6, 250, 18, 246, 232, 17, 17, 238, 244, 247, 24, 7, 227, 0, 0, 9, 255, 242, 15, 1, 7,
-			253, 249, 16, 10, 6, 223, 16, 42, 241, 209, 17, 64, 237, 208, 4, 32, 15, 218, 249, 20, 253, 11, 245, 239, 27, 24, 222, 232, 30, 20,
-			239, 236, 17, 6, 231, 244, 17, 30, 222, 233, 20, 30, 249, 239, 246, 4, 28, 228, 228, 39, 7, 234, 5, 16, 17, 253, 216, 10, 23, 5,
-			239, 246, 46, 0, 232, 0, 251, 12, 8, 248, 238, 13, 20, 243, 238, 23, 2, 227, 12, 21, 244, 242, 22, 13, 249, 242, 254, 18, 9, 226,
-			248, 18, 27, 252, 198, 250, 57, 253, 215, 254, 40, 18, 203, 4, 46, 2, 1, 5, 240, 246, 58, 14, 208, 218, 42, 48, 208, 210, 49, 38,
-			214, 228, 0, 17, 15, 246, 234, 233, 43, 10, 196, 8, 34, 212, 0, 50, 235, 229, 12, 24, 6, 220, 240, 36, 20, 237, 233, 3, 56, 23,
-			199, 238, 53, 25, 214, 225, 42, 25, 228, 240, 24, 10, 18, 241, 206, 12, 52, 253, 193, 232, 55, 56, 223, 192, 23, 84, 215, 217, 48, 250,
-			234, 5, 49, 246, 204, 34, 42, 241, 217, 243, 57, 0, 210, 6, 243, 2, 12, 244, 7, 9, 2, 12, 249, 242, 240, 22, 35, 202, 0, 38,
-			248, 2, 244, 20, 3, 231, 10, 16, 4, 224, 1, 43, 235, 238, 44, 248, 241, 251, 254, 19, 248, 198, 40, 62, 196, 224, 62, 242, 232, 8,
-			4, 3, 246, 0, 27, 248, 204, 9, 51, 246, 234, 245, 15, 30, 220, 237, 26, 18, 253, 231, 15, 18, 0, 9, 245, 241, 30, 12, 19, 217,
-			236, 29, 20, 244, 249, 6, 241, 2, 10, 0, 237, 7, 249, 247, 18, 8, 243, 3, 21, 206, 5, 25, 13, 225, 219, 50, 247, 229, 4, 247,
-			7, 29, 241, 221, 47, 36, 211, 241, 34, 22, 240, 253, 21, 253, 0, 18, 245, 9, 8, 227, 23, 12, 229, 244, 11, 36, 236, 211, 30, 44,
-			252, 227, 250, 7, 249, 245, 21, 0, 235, 39, 221, 227, 55, 8, 254, 252, 218, 252, 39, 242, 217, 25, 29, 5, 202, 29, 73, 213, 197, 29,
-			30, 225, 12, 7, 253, 6, 220, 16, 21, 234, 248, 247, 17, 27, 249, 229, 255, 19, 37, 235, 236, 38, 231, 37, 247, 218, 52, 17, 217, 238,
-			251, 73, 13, 145, 31, 56, 223, 237, 0, 26, 0, 243, 1, 248, 3, 12, 252, 238, 12, 24, 238, 235, 22, 6, 220, 12, 16, 248, 3, 251,
-			2, 2, 24, 222, 247, 56, 238, 218, 13, 9, 252, 237, 255, 39, 236, 251, 26, 245, 246, 245, 2, 9, 8, 19, 208, 7, 74, 178, 238, 54,
-			243, 11, 230, 248, 27, 249, 12, 0, 235, 28, 56, 245, 191, 247, 104, 252, 180, 13, 36, 9, 232, 181, 56, 61, 207, 202, 252, 51, 17, 205,
-			237, 60, 225, 230, 64, 247, 249, 245, 222, 20, 55, 235, 233, 14, 1, 24, 249, 1, 27, 228, 251, 32, 213, 4, 98, 183, 173, 62, 61, 250,
-			178, 250, 68, 8, 209, 237, 24, 253, 249, 33, 206, 8, 30, 0, 235, 232, 64, 7, 215, 247, 15, 10, 254, 1, 0, 246, 226, 45, 30, 222,
-			230, 247, 17, 54, 14, 195, 20, 247, 19, 27, 215, 231, 48, 28, 199, 231, 43, 9, 236, 245, 225, 25, 74, 223, 187, 27, 34, 254, 248, 3,
-			248, 238, 57, 28, 161, 6, 101, 219, 245, 226, 23, 77, 166, 5, 16, 238, 37, 230, 222, 14, 4, 47, 220, 198, 57, 5, 214, 28, 228, 254,
-			55, 234, 227, 25, 252, 14, 250, 244, 47, 244, 0, 2, 225, 19, 25, 14, 194, 3, 53, 227, 247, 36, 241, 209, 17, 77, 224, 210, 51, 251,
-			0, 32, 12, 209, 237, 33, 8, 247, 251, 240, 28, 2, 229, 247, 34, 16, 240, 196, 16, 67, 235, 199, 255, 39, 6, 38, 199, 223, 126, 232,
-			183, 41, 246, 23, 210, 216, 79, 2, 182, 34, 60, 200, 228, 66, 251, 213, 18, 248, 9, 34, 228, 221, 255, 58, 47, 164, 244, 46, 237, 26,
-			244, 255, 20, 238, 219, 38, 34, 208, 9, 6, 6, 18, 202, 45, 18, 204, 13, 39, 243, 224, 32, 235, 226, 28, 44, 243, 200, 37, 33, 217,
-			244, 35, 249, 206, 7, 56, 26, 202, 228, 36, 1, 6, 221, 239, 64, 253, 200, 27, 58, 240, 221, 2, 14, 10, 254, 237, 244, 31, 21, 248,
-			249, 249, 22, 0, 224, 2, 36, 249, 206, 28, 18, 232, 241, 4, 32, 32, 209, 237, 47, 20, 240, 235, 7, 34, 249, 239, 235, 19, 24, 246,
-			187, 30, 62, 208, 16, 254, 236, 18, 212, 23, 66, 198, 231, 24, 253, 249, 18, 236, 0, 48, 220, 237, 27, 2, 20, 232, 240, 50, 18, 234,
-			235, 246, 66, 12, 159, 2, 68, 250, 220, 19, 249, 233, 40, 26, 184, 44, 26, 194, 255, 29, 252, 16, 255, 213, 31, 252, 245, 16, 1, 246,
-			13, 5, 233, 48, 220, 245, 34, 228, 52, 254, 203, 33, 16, 220, 253, 15, 249, 15, 231, 255, 51, 231, 250, 15, 250, 254, 30, 33, 205, 227,
-			39, 18, 255, 224, 247, 250, 233, 43, 255, 205, 248, 15, 18, 252, 214, 2, 64, 245, 191, 58, 52, 204, 22, 253, 240, 46, 254, 186, 39, 37,
-			236, 200, 17, 80, 232, 212, 250, 56, 3, 231, 243, 0, 44, 239, 210, 18, 30, 255, 230, 237, 5, 44, 233, 227, 31, 30, 254, 200, 12, 75,
-			233, 199, 3, 31, 22, 242, 0, 238, 7, 42, 224, 179, 86, 60, 174, 200, 64, 63, 206, 212, 30, 41, 13, 216, 243, 13, 12, 246, 14, 251,
-			208, 22, 29, 245, 244, 6, 10, 229, 254, 38, 204, 252, 58, 244, 193, 15, 61, 20, 207, 241, 29, 7, 1, 249, 8, 10, 253, 10, 247, 247,
-			21, 12, 216, 8, 11, 8, 6, 185, 1, 106, 207, 177, 42, 46, 11, 199, 208, 71, 11, 212, 229, 10, 26, 250, 234, 235, 37, 54, 249, 228,
-			0, 21, 40, 223, 205, 61, 47, 212, 220, 70, 46, 187, 225, 38, 51, 213, 222, 0, 22, 30, 218, 254, 17, 4, 251, 247, 253, 233, 248, 14,
-			4, 230, 234, 70, 18, 189, 16, 21, 5, 5, 242, 3, 3, 251, 18, 7, 237, 211, 64, 58, 166, 214, 65, 51, 194, 210, 56, 47, 231, 203,
-			232, 92, 55, 142, 230, 75, 34, 210, 200, 39, 255, 29, 19, 203, 252, 50, 253, 237, 5, 246, 37, 5, 215, 10, 1, 34, 251, 211, 34, 11,
-			218, 18, 24, 212, 25, 6, 210, 14, 23, 216, 243, 34, 27, 242, 214, 11, 23, 15, 244, 209, 255, 67, 243, 215, 12, 22, 36, 190, 250, 76,
-			244, 209, 5, 14, 39, 247, 211, 7, 30, 17, 252, 222, 0, 66, 240, 221, 254, 30, 17, 236, 226, 11, 22, 15, 241, 214, 10, 43, 246, 226,
-			247, 37, 20, 208, 248, 60, 242, 213, 3, 28, 22, 230, 254, 13, 250, 14, 32, 18, 200, 229, 61, 240, 249, 6, 222, 20, 21, 236, 240, 242,
-			24, 8, 235, 236, 13, 38, 234, 212, 4, 32, 35, 226, 228, 32, 253, 237, 252, 32, 243, 246, 24, 2, 246, 248, 254, 7, 16, 233, 254, 6,
-			253, 8, 244, 248, 18, 18, 0, 254, 243, 254, 3, 249, 4, 239, 18, 28, 219, 239, 28, 255, 250, 16, 249, 12, 6, 244, 17, 212, 30, 62,
-			193, 225, 73, 27, 188, 236, 67, 21, 214, 218, 34, 25, 242, 247, 240, 255, 38, 16, 227, 232, 252, 32, 34, 222, 233, 26, 31, 230, 227, 53,
-			27, 219, 218, 254, 18, 7, 8, 6, 6, 228, 4, 34, 223, 5, 29, 253, 241, 242, 9, 6, 252, 231, 8, 17, 0, 3, 214, 251, 31, 254,
-			10, 248, 253, 18, 245, 248, 249, 32, 39, 224, 244, 9, 4, 3, 249, 254, 8, 24, 220, 6, 26, 250, 228, 245, 35, 12, 252, 225, 0, 19,
-			13, 251, 230, 41, 240, 228, 23, 255, 241, 247, 5, 247, 235, 30, 15, 191, 17, 61, 228, 216, 28, 51, 226, 238, 27, 255, 21, 11, 220, 3,
-			45, 249, 242, 241, 231, 52, 250, 237, 8, 214, 37, 61, 192, 220, 38, 35, 23, 191, 240, 57, 245, 249, 3, 229, 17, 37, 227, 237, 12, 238,
-			12, 239, 231, 31, 21, 238, 239, 5, 36, 239, 217, 59, 17, 226, 254, 228, 16, 39, 1, 237, 253, 30, 7, 215, 239, 39, 14, 231, 236, 47,
-			236, 210, 56, 249, 235, 13, 0, 19, 255, 210, 30, 33, 202, 246, 41, 14, 240, 245, 0, 249, 248, 10, 15, 12, 227, 236, 23, 33, 251, 246,
-			14, 248, 9, 18, 249, 240, 228, 14, 51, 4, 195, 251, 70, 227, 242, 15, 2, 2, 232, 33, 8, 212, 26, 13, 217, 30, 10, 252, 13, 255,
-			249, 215, 35, 54, 212, 216, 19, 22, 248, 250, 214, 0, 77, 244, 191, 235, 77, 2, 202, 240, 37, 63, 221, 200, 14, 58, 13, 217, 249, 17,
-			9, 0, 244, 242, 11, 24, 240, 217, 41, 24, 197, 250, 18, 8, 243, 237, 23, 249, 10, 18, 232, 231, 45, 16, 216, 246, 6, 50, 218, 203,
-			56, 47, 226, 228, 6, 31, 15, 210, 248, 49, 17, 226, 223, 20, 55, 243, 214, 12, 36, 14, 240, 238, 19, 235, 255, 43, 247, 213, 5, 40,
-			250, 204, 0, 38, 4, 241, 250, 227, 26, 16, 232, 2, 0, 33, 231, 229, 34, 255, 244, 8, 255, 254, 15, 13, 231, 17, 23, 231, 5, 30,
-			246, 240, 251, 10, 37, 206, 230, 79, 232, 210, 17, 0, 12, 248, 242, 17, 226, 33, 28, 212, 252, 14, 3, 247, 9, 2, 228, 9, 9, 15,
-			251, 244, 12, 17, 0, 228, 4, 24, 251, 15, 17, 230, 247, 8, 34, 9, 215, 18, 25, 223, 14, 13, 234, 17, 3, 215, 15, 27, 217, 234,
-			16, 42, 215, 227, 34, 8, 3, 252, 225, 253, 49, 16, 233, 245, 23, 12, 235, 7, 8, 236, 35, 8, 204, 7, 44, 9, 218, 245, 50, 247,
-			195, 28, 35, 211, 0, 1, 17, 1, 248, 13, 235, 243, 7, 20, 252, 232, 0, 3, 255, 9, 241, 0, 7, 250, 6, 8, 241, 6, 5, 228,
-			31, 20, 247, 240, 252, 10, 253, 11, 16, 0, 2, 13, 252, 229, 21, 18, 253, 249, 209, 52, 55, 194, 224, 25, 26, 12, 216, 243, 35, 6,
-			221, 235, 33, 11, 243, 237, 245, 42, 8, 225, 255, 250, 1, 42, 250, 193, 24, 50, 240, 244, 242, 36, 34, 203, 239, 48, 6, 224, 251, 8,
-			251, 19, 7, 221, 247, 47, 6, 228, 242, 26, 0, 242, 38, 215, 239, 47, 12, 237, 235, 15, 16, 249, 225, 13, 18, 242, 253, 235, 9, 48,
-			224, 213, 34, 18, 234, 248, 18, 254, 231, 4, 36, 0, 237, 4, 10, 17, 3, 238, 13, 8, 253, 16, 242, 249, 33, 0, 228, 248, 41, 9,
-			216, 249, 18, 8, 247, 2, 17, 238, 237, 29, 19, 226, 244, 252, 19, 4, 252, 250, 5, 19, 244, 245, 1, 0, 0, 0, 86, 10, 51, 0,
-			1, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1,
-			1, 0, 0, 251, 236, 235, 251, 4, 3, 254, 252, 2, 6, 3, 254, 253, 255, 4, 3, 1, 1, 1, 5, 249, 231, 249, 9, 11, 6, 0,
-			4, 11, 15, 1, 254, 255, 2, 7, 3, 2, 0, 5, 4, 2, 1, 2, 4, 1, 1, 0, 0, 1, 0, 254, 0, 0, 0, 0, 255, 0,
-			0, 254, 255, 253, 0, 255, 253, 0, 254, 0, 255, 0, 0, 0, 0, 0, 2, 0, 1, 0, 250, 245, 244, 249, 248, 251, 249, 249, 1, 0,
-			3, 4, 2, 6, 1, 3, 3, 0, 3, 6, 5, 5, 7, 8, 9, 8, 6, 3, 6, 9, 255, 6, 1, 3, 0, 5, 0, 255, 255, 0,
-			2, 248, 0, 252, 255, 0, 249, 253, 254, 255, 255, 254, 250, 254, 2, 1, 250, 253, 255, 255, 5, 252, 253, 3, 249, 1, 9, 252, 253, 6,
-			255, 4, 3, 253, 7, 251, 3, 8, 251, 1, 255, 7, 251, 250, 10, 252, 255, 3, 0, 2, 1, 2, 0, 0, 3, 254, 1, 3, 248, 7,
-			3, 5, 9, 8, 9, 1, 255, 252, 254, 0, 5, 253, 252, 254, 254, 1, 254, 249, 253, 254, 252, 253, 249, 253, 253, 255, 3, 251, 5, 8,
-			4, 5, 0, 249, 0, 0, 0, 3, 7, 18, 16, 11, 13, 10, 252, 1, 255, 249, 2, 247, 0, 0, 250, 2, 244, 253, 250, 242, 254, 249,
-			244, 252, 249, 251, 4, 8, 15, 3, 255, 245, 242, 5, 5, 0, 255, 6, 16, 23, 25, 21, 13, 11, 246, 225, 232, 0, 4, 255, 0, 255,
-			12, 13, 252, 250, 0, 251, 250, 1, 248, 252, 5, 0, 1, 0, 0, 11, 0, 254, 254, 7, 10, 255, 255, 6, 2, 5, 11, 244, 250, 240,
-			243, 0, 0, 2, 255, 254, 247, 4, 5, 254, 248, 251, 0, 0, 7, 255, 2, 0, 14, 10, 255, 1, 2, 12, 9, 0, 4, 254, 1, 7,
-			251, 5, 7, 0, 2, 253, 2, 2, 243, 0, 6, 243, 245, 9, 0, 251, 249, 255, 16, 240, 0, 10, 245, 12, 254, 245, 6, 4, 250, 2,
-			2, 246, 8, 1, 251, 10, 250, 2, 12, 247, 252, 3, 12, 253, 0, 251, 11, 10, 238, 9, 1, 0, 21, 238, 254, 15, 251, 3, 8, 245,
-			1, 8, 248, 3, 4, 242, 2, 0, 248, 0, 253, 12, 247, 250, 10, 245, 9, 4, 241, 255, 17, 3, 245, 0, 4, 15, 250, 1, 9, 253,
-			6, 1, 0, 6, 247, 3, 7, 253, 0, 253, 10, 244, 5, 255, 243, 3, 252, 0, 254, 4, 1, 243, 4, 254, 12, 253, 245, 10, 5, 5,
-			3, 252, 7, 3, 2, 4, 0, 0, 4, 8, 251, 4, 2, 0, 249, 0, 8, 245, 0, 249, 254, 11, 241, 0, 251, 248, 16, 3, 244, 3,
-			1, 10, 1, 240, 14, 5, 1, 12, 240, 254, 13, 253, 1, 21, 241, 246, 15, 3, 1, 252, 249, 8, 3, 245, 254, 252, 252, 7, 250, 251,
-			253, 250, 0, 9, 7, 0, 3, 24, 250, 10, 13, 240, 27, 8, 240, 1, 6, 1, 7, 249, 242, 5, 254, 12, 247, 236, 7, 247, 255, 8,
-			231, 2, 252, 246, 2, 240, 12, 12, 234, 3, 9, 2, 11, 241, 0, 23, 6, 3, 12, 6, 248, 16, 14, 246, 4, 12, 254, 0, 0, 1,
-			9, 244, 247, 1, 2, 251, 251, 255, 2, 255, 237, 10, 14, 236, 18, 9, 233, 16, 4, 229, 1, 247, 255, 14, 224, 10, 11, 241, 13, 251,
-			3, 15, 6, 9, 3, 11, 24, 252, 251, 2, 254, 14, 6, 245, 253, 22, 238, 232, 34, 233, 255, 14, 223, 8, 5, 242, 245, 255, 10, 251,
-			249, 20, 19, 0, 14, 6, 14, 17, 243, 1, 3, 234, 6, 248, 247, 29, 255, 234, 246, 236, 10, 0, 248, 225, 252, 0, 11, 253, 235, 1,
-			1, 250, 8, 12, 247, 8, 4, 18, 10, 252, 21, 2, 17, 4, 10, 25, 244, 25, 4, 246, 17, 247, 11, 17, 13, 248, 253, 13, 254, 11,
-			234, 228, 253, 209, 231, 15, 236, 244, 1, 230, 18, 253, 253, 0, 248, 252, 245, 14, 13, 249, 8, 5, 253, 44, 251, 9, 19, 234, 24, 18,
-			246, 0, 0, 17, 5, 0, 1, 0, 17, 251, 239, 255, 12, 250, 249, 243, 10, 9, 229, 5, 0, 240, 4, 1, 249, 251, 2, 10, 251, 255,
-			0, 248, 14, 3, 243, 251, 12, 4, 235, 22, 9, 251, 0, 4, 12, 252, 242, 15, 1, 253, 19, 232, 4, 15, 2, 251, 245, 10, 11, 246,
-			249, 7, 1, 4, 1, 253, 2, 245, 12, 1, 252, 249, 247, 14, 8, 246, 1, 1, 11, 243, 252, 20, 240, 7, 7, 248, 2, 249, 19, 14,
-			226, 250, 20, 11, 248, 245, 0, 0, 11, 254, 244, 8, 249, 240, 17, 11, 239, 249, 0, 29, 236, 4, 5, 255, 20, 233, 1, 12, 3, 1,
-			252, 16, 254, 246, 17, 1, 11, 248, 254, 21, 238, 246, 15, 0, 2, 237, 250, 8, 0, 250, 255, 4, 235, 20, 2, 240, 5, 246, 7, 19,
-			246, 231, 25, 14, 254, 234, 249, 27, 4, 0, 18, 228, 249, 35, 2, 237, 8, 3, 247, 14, 9, 253, 228, 13, 16, 246, 5, 241, 3, 11,
-			235, 19, 0, 234, 29, 242, 1, 8, 245, 24, 244, 239, 25, 255, 255, 254, 251, 9, 250, 250, 12, 19, 218, 13, 9, 237, 33, 247, 226, 25,
-			248, 4, 4, 244, 11, 240, 19, 15, 230, 7, 0, 7, 253, 250, 3, 254, 23, 249, 222, 39, 9, 231, 30, 243, 252, 29, 222, 252, 14, 254,
-			9, 239, 2, 16, 244, 252, 15, 233, 247, 39, 241, 240, 19, 240, 12, 252, 2, 15, 237, 249, 0, 26, 255, 250, 255, 243, 28, 13, 244, 249,
-			239, 20, 24, 243, 238, 255, 1, 14, 30, 230, 246, 13, 0, 19, 238, 249, 12, 250, 248, 12, 251, 248, 20, 19, 254, 253, 24, 22, 251, 0,
-			11, 7, 1, 0, 6, 250, 0, 33, 3, 236, 253, 16, 16, 252, 249, 3, 7, 21, 8, 242, 14, 25, 239, 14, 13, 232, 5, 17, 20, 8,
-			241, 245, 28, 8, 246, 17, 5, 3, 5, 246, 252, 14, 20, 10, 221, 16, 57, 238, 239, 3, 12, 26, 240, 253, 1, 248, 31, 4, 229, 25,
-			17, 249, 252, 21, 22, 241, 253, 18, 3, 255, 0, 251, 27, 6, 217, 19, 7, 244, 22, 245, 247, 12, 8, 254, 19, 6, 246, 10, 11, 8,
-			0, 234, 4, 27, 2, 254, 244, 13, 48, 1, 233, 3, 25, 5, 249, 1, 35, 6, 1, 7, 237, 24, 39, 249, 231, 22, 27, 242, 247, 17,
-			7, 11, 31, 234, 251, 22, 9, 20, 244, 250, 32, 247, 5, 21, 0, 21, 247, 246, 25, 5, 2, 25, 11, 243, 20, 13, 246, 23, 253, 6,
-			29, 253, 4, 17, 1, 10, 253, 250, 19, 5, 255, 0, 250, 21, 35, 233, 243, 32, 37, 254, 235, 13, 19, 0, 0, 255, 19, 255, 247, 22,
-			4, 250, 13, 249, 245, 31, 2, 250, 2, 254, 0, 38, 29, 231, 248, 32, 13, 241, 6, 6, 238, 20, 229, 227, 58, 16, 212, 253, 27, 12,
-			230, 253, 34, 20, 1, 240, 246, 7, 26, 9, 244, 252, 253, 249, 6, 4, 10, 0, 13, 15, 5, 254, 248, 30, 48, 225, 220, 42, 13, 252,
-			237, 215, 31, 68, 245, 218, 13, 55, 23, 197, 244, 52, 41, 253, 232, 2, 28, 17, 242, 0, 17, 255, 0, 245, 10, 43, 245, 220, 21, 59,
-			237, 223, 31, 38, 4, 244, 232, 19, 33, 2, 248, 243, 28, 20, 253, 252, 242, 37, 19, 214, 13, 24, 0, 12, 7, 239, 14, 27, 229, 250,
-			24, 7, 1, 241, 255, 33, 5, 233, 247, 40, 36, 245, 236, 2, 36, 17, 240, 251, 251, 14, 30, 240, 228, 21, 15, 8, 8, 228, 5, 43,
-			248, 253, 22, 19, 249, 238, 7, 28, 18, 222, 252, 21, 15, 4, 241, 238, 22, 19, 244, 248, 11, 3, 238, 43, 29, 236, 0, 17, 43, 7,
-			227, 18, 16, 6, 21, 227, 231, 31, 25, 244, 245, 244, 24, 21, 235, 0, 29, 2, 3, 18, 236, 252, 40, 0, 241, 9, 255, 31, 11, 214,
-			6, 27, 4, 248, 243, 246, 39, 9, 229, 8, 21, 9, 14, 244, 232, 30, 32, 248, 239, 3, 13, 239, 11, 16, 233, 11, 35, 250, 244, 24,
-			18, 235, 8, 30, 10, 241, 250, 32, 1, 255, 20, 244, 249, 28, 19, 247, 0, 10, 3, 18, 22, 218, 7, 42, 249, 5, 13, 244, 0, 247,
-			5, 31, 255, 251, 3, 5, 4, 10, 0, 3, 31, 242, 241, 13, 28, 6, 236, 21, 45, 250, 235, 12, 21, 15, 246, 6, 24, 251, 244, 254,
-			23, 13, 226, 254, 41, 239, 0, 26, 235, 7, 29, 255, 233, 229, 49, 22, 218, 10, 10, 2, 25, 254, 228, 14, 25, 243, 250, 6, 1, 9,
-			251, 250, 32, 255, 247, 31, 245, 242, 20, 10, 246, 30, 27, 222, 236, 46, 24, 209, 4, 30, 249, 0, 15, 236, 244, 36, 29, 240, 254, 35,
-			3, 241, 10, 9, 0, 222, 8, 41, 251, 211, 7, 43, 249, 252, 240, 245, 46, 6, 247, 5, 250, 43, 250, 213, 41, 28, 233, 6, 12, 38,
-			4, 211, 22, 51, 245, 233, 248, 29, 41, 249, 228, 0, 59, 36, 217, 239, 31, 20, 27, 222, 215, 62, 2, 211, 250, 37, 21, 243, 238, 2,
-			26, 5, 3, 0, 254, 3, 255, 5, 251, 15, 243, 254, 34, 13, 246, 255, 19, 24, 249, 230, 3, 35, 14, 244, 254, 8, 34, 13, 9, 251,
-			218, 18, 64, 222, 195, 14, 26, 24, 232, 235, 14, 11, 8, 236, 234, 56, 20, 204, 21, 36, 249, 8, 249, 249, 25, 237, 255, 18, 240, 14,
-			12, 230, 31, 41, 252, 227, 13, 29, 250, 229, 12, 37, 1, 235, 18, 245, 235, 67, 9, 227, 5, 11, 243, 9, 15, 246, 9, 21, 10, 248,
-			252, 251, 41, 37, 241, 248, 254, 11, 37, 18, 239, 5, 15, 20, 10, 250, 10, 6, 250, 27, 2, 237, 22, 0, 0, 26, 243, 1, 33, 231,
-			9, 46, 235, 245, 9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232, 20, 58, 246, 195, 11, 40, 18, 2, 200, 0, 60, 42,
-			225, 219, 32, 32, 4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230, 5, 26, 236, 255, 19, 8, 10, 21, 242, 238, 36, 3,
-			9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250, 17, 31, 237, 219, 30,
-			38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41, 222, 179, 29, 40, 30,
-			238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60, 21, 231, 223, 21, 81,
-			219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20, 17, 255, 249, 243, 37,
-			42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13, 250, 243, 235, 40, 21,
-			193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0, 48, 2, 226, 27, 35,
-			233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37, 1, 239, 244, 44, 30,
-			236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236, 32, 21, 237, 35, 4,
-			209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243, 6, 2, 255, 35, 246,
-			10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237, 51, 19, 232, 18, 7,
-			238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1, 221, 31, 13, 251, 8,
-			248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182, 1, 59, 19, 246, 233,
-			25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3, 6, 30, 240, 245, 49,
-			243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11, 20, 4, 254, 243, 8,
-			35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234, 51, 249, 218, 23, 11,
-			7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221, 212, 253, 34, 62, 218,
-			221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173, 65, 92, 206, 232, 54,
-			17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227, 0, 70, 241, 226, 27,
-			21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247, 42, 228, 208, 44, 51,
-			239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57, 5, 221, 250, 0, 32,
-			22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228, 58, 252, 236, 29, 231,
-			16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32, 252, 232, 42, 11, 210,
-			39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233, 233, 48, 3, 234, 2,
-			13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223, 11, 33, 246, 255, 0,
-			243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247, 237, 7, 17, 16, 250,
-			222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12, 1, 17, 6, 240, 39,
-			225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38, 239, 12, 56, 221, 215,
-			33, 17, 252, 7, 2, 9, 0, 0, 90, 0, 3, 0, 5, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 55, 14,
-			13, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 55, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 160, 0, 240, 0, 160, 5, 40, 10, 199, 14, 36, 19,
-			0, 25, 35, 13, 15, 25, 13, 9, 7, 3, 7, 7, 135, 142, 160, 160, 150, 175, 135, 142, 160, 44, 35, 30, 90, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 9, 0, 160, 0, 240, 0, 160, 5, 40, 10,
-			199, 14, 36, 19, 0, 25, 0, 13, 15, 25, 13, 9, 7, 3, 7, 7, 135, 142, 160, 160, 150, 175, 135, 142, 160, 44, 35, 30, 90, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 55, 1, 12, 0, 3, 4,
-			5, 1, 8, 248, 0, 178, 140, 255, 16, 1, 251, 245, 245, 245, 239, 226, 221, 249, 31, 37, 28, 33, 28, 31, 38, 43, 44, 49, 55, 52,
-			43, 43, 39, 41, 30, 29, 23, 25, 23, 21, 10, 6, 10, 3, 3, 0, 2, 3, 11, 11, 7, 240, 202, 209, 221, 230, 252, 13, 19, 14,
-			250, 9, 219, 164, 223, 255, 242, 234, 247, 246, 247, 250, 247, 255, 214, 197, 207, 206, 226, 238, 6, 14, 25, 40, 51, 58, 37, 11, 3, 7,
-			8, 2, 224, 231, 31, 56, 68, 76, 86, 82, 81, 65, 53, 57, 65, 34, 19, 51, 54, 62, 60, 41, 36, 22, 12, 248, 239, 235, 250, 250,
-			254, 11, 15, 28, 41, 48, 45, 37, 39, 24, 12, 253, 0, 29, 44, 54, 62, 65, 67, 59, 50, 40, 41, 41, 30, 35, 46, 55, 69, 78,
-			73, 68, 65, 56, 46, 42, 30, 22, 18, 18, 27, 254, 233, 4, 26, 27, 7, 0, 240, 233, 223, 213, 217, 235, 249, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 4, 19, 0, 13, 13, 5, 6, 19, 14, 14, 11, 10, 6, 249, 248, 0, 254, 11, 6,
-			6, 4, 3, 211, 167, 140, 139, 164, 184, 212, 239, 17, 19, 2, 249, 9, 15, 12, 13, 20, 26, 27, 27, 23, 9, 1, 246, 243, 2, 22,
-			44, 52, 55, 53, 50, 50, 51, 58, 57, 53, 50, 45, 24, 10, 0, 246, 1, 4, 7, 255, 213, 209, 197, 175, 173, 188, 217, 225, 220, 239,
-			239, 223, 222, 229, 234, 245, 247, 251, 0, 0, 3, 3, 4, 5, 1, 0, 0, 1, 7, 9, 7, 11, 16, 18, 17, 22, 26, 26, 29, 24,
-			21, 21, 20, 23, 12, 15, 14, 11, 10, 4, 253, 248, 232, 227, 239, 239, 239, 249, 0, 8, 1, 1, 6, 2, 249, 251, 223, 235, 1, 254,
-			241, 235, 245, 255, 249, 241, 247, 0, 2, 0, 250, 3, 13, 9, 13, 19, 24, 25, 23, 17, 21, 22, 16, 10, 7, 7, 12, 5, 3, 2,
-			4, 8, 4, 1, 0, 255, 255, 254, 248, 244, 245, 250, 245, 244, 244, 232, 227, 232, 237, 236, 237, 238, 242, 246, 250, 253, 253, 0, 9, 13,
-			17, 17, 13, 16, 18, 21, 20, 14, 9, 11, 12, 10, 13, 12, 11, 9, 4, 254, 0, 253, 252, 249, 233, 231, 235, 229, 240, 2, 2, 254,
-			247, 245, 244, 241, 242, 247, 0, 7, 11, 13, 19, 22, 19, 14, 11, 11, 7, 2, 1, 5, 10, 18, 19, 16, 20, 12, 0, 247, 246, 247,
-			247, 249, 249, 251, 251, 244, 248, 250, 247, 245, 236, 231, 232, 232, 235, 245, 254, 2, 4, 5, 9, 5, 254, 0, 4, 12, 10, 9, 12, 19,
-			27, 32, 27, 24, 19, 16, 7, 5, 6, 2, 254, 255, 254, 248, 245, 235, 228, 230, 234, 237, 233, 234, 233, 236, 241, 252, 9, 9, 4, 0,
-			251, 242, 249, 15, 22, 17, 16, 18, 14, 17, 23, 26, 17, 6, 255, 255, 247, 244, 241, 244, 247, 255, 255, 249, 246, 255, 1, 6, 9, 7,
-			10, 10, 14, 14, 12, 9, 0, 0, 8, 22, 37, 39, 19, 255, 242, 237, 236, 245, 252, 252, 244, 238, 240, 244, 248, 250, 250, 246, 1, 18,
-			24, 4, 3, 29, 33, 11, 11, 15, 10, 251, 241, 1, 12, 255, 230, 210, 207, 225, 225, 221, 213, 210, 225, 243, 240, 245, 249, 7, 15, 20,
-			44, 38, 25, 26, 28, 12, 0, 14, 15, 248, 0, 24, 17, 12, 0, 242, 227, 227, 11, 7, 214, 233, 255, 248, 251, 2, 27, 16, 2, 17,
-			17, 3, 21, 5, 233, 223, 2, 24, 242, 220, 244, 252, 243, 4, 18, 1, 231, 250, 2, 234, 248, 11, 13, 0, 18, 66, 55, 33, 40, 31,
-			2, 224, 231, 0, 2, 6, 7, 250, 247, 6, 238, 211, 208, 247, 15, 249, 231, 234, 245, 15, 25, 6, 245, 237, 239, 243, 9, 34, 61, 66,
-			37, 5, 0, 12, 2, 224, 222, 22, 38, 22, 22, 23, 16, 16, 13, 7, 2, 22, 41, 28, 7, 253, 238, 4, 58, 77, 60, 15, 224, 207,
-			213, 254, 6, 222, 218, 240, 241, 220, 214, 228, 220, 225, 248, 18, 39, 5, 214, 185, 214, 0, 32, 12, 243, 216, 221, 242, 246, 231, 243, 247,
-			235, 199, 185, 210, 211, 205, 222, 245, 251, 239, 245, 240, 223, 242, 0, 253, 13, 47, 63, 47, 40, 36, 19, 14, 30, 7, 223, 225, 238, 238,
-			216, 221, 251, 10, 2, 246, 239, 12, 9, 11, 19, 55, 105, 106, 97, 71, 39, 22, 26, 25, 33, 41, 73, 69, 27, 238, 239, 244, 9, 42,
-			31, 11, 6, 23, 11, 39, 79, 44, 244, 6, 57, 80, 32, 253, 242, 8, 18, 6, 237, 203, 251, 41, 6, 230, 251, 229, 191, 202, 228, 248,
-			0, 7, 248, 219, 245, 245, 221, 200, 222, 243, 212, 191, 206, 5, 20, 244, 186, 163, 176, 186, 229, 244, 219, 230, 249, 251, 221, 211, 195, 210,
-			230, 248, 6, 224, 221, 231, 1, 12, 5, 244, 226, 237, 6, 4, 250, 2, 9, 241, 244, 29, 50, 23, 0, 16, 14, 1, 1, 16, 14, 13,
-			25, 32, 6, 236, 254, 10, 251, 242, 5, 13, 0, 31, 77, 72, 22, 2, 16, 16, 19, 29, 28, 26, 57, 59, 22, 242, 236, 245, 248, 5,
-			28, 53, 72, 70, 40, 5, 245, 248, 5, 21, 34, 25, 0, 2, 15, 11, 253, 242, 238, 245, 15, 28, 16, 244, 239, 243, 8, 24, 1, 223,
-			214, 243, 34, 33, 240, 187, 212, 14, 64, 57, 19, 0, 226, 218, 189, 198, 239, 26, 44, 12, 231, 216, 223, 200, 166, 189, 231, 249, 243, 22,
-			46, 254, 236, 221, 226, 240, 34, 27, 244, 6, 64, 87, 39, 49, 70, 16, 229, 244, 9, 5, 18, 56, 59, 33, 29, 0, 195, 209, 231, 230,
-			220, 243, 14, 242, 241, 13, 20, 0, 6, 12, 0, 255, 252, 17, 3, 21, 5, 233, 223, 2, 24, 242, 220, 244, 252, 243, 4, 18, 1, 231,
-			250, 2, 234, 248, 11, 13, 0, 18, 66, 55, 33, 40, 31, 2, 224, 231, 0, 2, 6, 7, 250, 247, 6, 238, 211, 208, 247, 15, 249, 231,
-			234, 245, 15, 25, 6, 245, 237, 239, 243, 9, 34, 61, 66, 37, 5, 0, 12, 2, 224, 222, 22, 38, 22, 22, 23, 16, 16, 13, 7, 2,
-			22, 41, 28, 7, 253, 238, 4, 58, 77, 60, 15, 224, 207, 213, 254, 6, 222, 218, 240, 241, 220, 214, 228, 220, 225, 248, 18, 39, 5, 214,
-			185, 214, 0, 32, 12, 243, 216, 221, 242, 246, 231, 243, 247, 235, 199, 185, 210, 211, 205, 222, 245, 251, 239, 245, 240, 223, 242, 0, 253, 13,
-			47, 63, 47, 40, 36, 19, 14, 30, 7, 223, 225, 238, 238, 216, 221, 251, 10, 2, 246, 239, 12, 9, 11, 19, 55, 105, 106, 97, 71, 39,
-			22, 26, 25, 33, 41, 73, 69, 27, 238, 239, 244, 9, 42, 31, 11, 6, 23, 11, 39, 79, 44, 244, 6, 57, 80, 32, 253, 242, 8, 18,
-			6, 237, 203, 251, 41, 6, 230, 251, 229, 191, 202, 228, 248, 0, 7, 248, 219, 245, 245, 221, 200, 222, 243, 212, 191, 206, 5, 20, 244, 186,
-			163, 176, 186, 229, 244, 219, 230, 249, 251, 221, 211, 195, 210, 230, 248, 6, 224, 221, 231, 1, 12, 5, 244, 226, 237, 6, 4, 250, 2, 9,
-			241, 244, 29, 50, 23, 0, 16, 14, 1, 1, 16, 14, 13, 25, 32, 6, 236, 254, 10, 251, 242, 5, 13, 0, 31, 77, 72, 22, 2, 16,
-			16, 19, 29, 28, 26, 57, 59, 22, 242, 236, 245, 248, 5, 28, 53, 72, 70, 40, 5, 245, 248, 5, 21, 34, 25, 0, 2, 15, 11, 253,
-			242, 238, 245, 15, 28, 16, 244, 239, 243, 8, 24, 1, 223, 214, 243, 34, 33, 240, 187, 212, 14, 64, 57, 19, 0, 226, 218, 189, 198, 239,
-			26, 44, 12, 231, 216, 223, 200, 166, 189, 231, 249, 243, 22, 46, 254, 236, 221, 226, 240, 34, 27, 244, 6, 64, 87, 39, 49, 70, 16, 229,
-			244, 9, 5, 18, 56, 59, 33, 29, 0, 195, 209, 231, 230, 220, 243, 14, 242, 241, 13, 20, 0, 6, 12, 0, 255, 252, 4, 0, 18, 36,
-			31, 26, 252, 221, 182, 181, 209, 192, 210, 237, 23, 17, 235, 180, 131, 157, 210, 229, 216, 219, 230, 227, 248, 16, 41, 20, 250, 17, 33, 38,
-			22, 0, 0, 0, 63, 2, 30, 0, 3, 7, 4, 5, 7, 0, 3, 254, 217, 209, 5, 49, 40, 4, 238, 252, 21, 22, 6, 0, 8, 16,
-			13, 3, 2, 8, 10, 8, 7, 6, 6, 9, 13, 12, 9, 7, 8, 6, 5, 8, 8, 8, 7, 4, 5, 6, 6, 6, 3, 3, 6, 3,
-			4, 4, 253, 5, 8, 233, 222, 2, 38, 35, 246, 219, 4, 48, 53, 25, 216, 200, 12, 40, 10, 5, 20, 38, 40, 1, 237, 8, 31, 36,
-			26, 6, 7, 19, 8, 232, 212, 223, 249, 11, 10, 0, 9, 23, 10, 12, 19, 252, 246, 2, 0, 9, 10, 253, 10, 11, 246, 1, 16, 24,
-			33, 1, 240, 12, 10, 3, 13, 242, 235, 14, 13, 2, 11, 254, 244, 13, 29, 23, 6, 245, 0, 30, 25, 2, 253, 248, 246, 6, 8, 252,
-			2, 10, 9, 12, 1, 249, 13, 28, 23, 17, 3, 1, 20, 23, 16, 19, 15, 16, 22, 8, 3, 16, 243, 209, 245, 29, 21, 12, 8, 6,
-			13, 0, 253, 23, 15, 0, 15, 5, 253, 15, 8, 0, 4, 247, 0, 12, 252, 1, 14, 7, 9, 0, 249, 13, 13, 4, 3, 246, 255, 16,
-			7, 4, 2, 2, 17, 254, 247, 22, 6, 245, 9, 0, 0, 15, 253, 8, 24, 250, 254, 21, 15, 10, 246, 249, 35, 11, 233, 15, 22, 4,
-			26, 13, 242, 5, 19, 3, 253, 0, 4, 14, 19, 5, 255, 8, 3, 0, 7, 247, 0, 31, 248, 227, 24, 15, 236, 22, 27, 225, 243, 40,
-			14, 227, 252, 32, 14, 242, 244, 9, 17, 252, 249, 18, 11, 1, 2, 233, 0, 44, 254, 232, 21, 9, 4, 23, 240, 241, 20, 3, 9, 15,
-			253, 18, 2, 232, 25, 16, 240, 22, 2, 243, 41, 9, 229, 18, 7, 252, 30, 7, 235, 240, 0, 23, 0, 236, 13, 0, 240, 12, 251, 243,
-			22, 255, 238, 16, 12, 7, 35, 16, 240, 6, 27, 8, 10, 31, 23, 5, 253, 1, 21, 24, 13, 3, 248, 14, 35, 14, 9, 241, 229, 48,
-			33, 220, 19, 12, 231, 48, 10, 220, 51, 0, 208, 58, 22, 200, 255, 31, 39, 11, 221, 13, 29, 1, 20, 245, 253, 47, 246, 241, 27, 243,
-			1, 19, 0, 37, 247, 209, 44, 32, 239, 18, 7, 15, 30, 234, 255, 36, 7, 249, 236, 9, 44, 249, 244, 18, 7, 19, 249, 246, 42, 239,
-			230, 46, 6, 14, 35, 216, 11, 39, 226, 31, 14, 205, 53, 35, 205, 15, 21, 248, 16, 10, 19, 252, 243, 36, 248, 13, 66, 183, 216, 118,
-			4, 212, 27, 228, 16, 64, 235, 242, 248, 228, 20, 11, 23, 30, 195, 249, 72, 250, 248, 0, 221, 33, 39, 247, 20, 252, 236, 26, 20, 21,
-			13, 232, 3, 28, 26, 8, 208, 248, 58, 0, 220, 222, 237, 65, 33, 183, 4, 96, 26, 192, 224, 99, 91, 197, 210, 61, 30, 234, 250, 7,
-			254, 244, 252, 20, 41, 5, 222, 36, 65, 228, 231, 25, 3, 25, 24, 252, 32, 238, 192, 42, 54, 222, 225, 14, 43, 3, 219, 27, 26, 228,
-			19, 21, 254, 22, 231, 220, 26, 18, 8, 19, 28, 31, 224, 248, 59, 227, 243, 53, 202, 21, 126, 193, 181, 65, 22, 40, 30, 177, 253, 47,
-			240, 5, 240, 247, 51, 216, 210, 53, 241, 227, 47, 255, 243, 0, 191, 4, 21, 0, 219, 229, 3, 19, 255, 1, 253, 238, 240, 255, 11, 255,
-			208, 218, 22, 67, 15, 200, 201, 255, 40, 29, 223, 234, 62, 56, 20, 217, 220, 255, 20, 18, 38, 11, 209, 222, 6, 56, 28, 232, 29, 32,
-			24, 239, 191, 255, 32, 13, 241, 204, 241, 19, 237, 210, 230, 232, 233, 49, 50, 234, 189, 201, 35, 55, 228, 191, 206, 254, 35, 236, 225, 8,
-			23, 0, 211, 236, 24, 61, 33, 232, 235, 17, 63, 26, 247, 2, 245, 32, 17, 49, 10, 236, 30, 48, 36, 1, 243, 5, 19, 25, 244, 241,
-			10, 34, 16, 2, 246, 239, 28, 26, 0, 253, 1, 242, 239, 246, 3, 10, 0, 242, 215, 0, 30, 10, 5, 249, 239, 227, 237, 239, 6, 238,
-			15, 47, 10, 247, 232, 7, 4, 239, 251, 24, 8, 251, 218, 206, 17, 11, 210, 214, 255, 21, 19, 27, 8, 254, 251, 17, 246, 253, 13, 10,
-			0, 8, 248, 248, 0, 244, 244, 0, 40, 27, 249, 235, 1, 23, 239, 222, 242, 12, 37, 255, 216, 237, 25, 28, 0, 254, 5, 254, 244, 236,
-			2, 37, 11, 233, 0, 0, 253, 6, 244, 255, 28, 24, 218, 233, 238, 234, 0, 3, 1, 14, 13, 5, 248, 7, 244, 237, 2, 35, 11, 239,
-			242, 18, 25, 4, 249, 251, 23, 27, 236, 236, 4, 5, 2, 246, 235, 253, 243, 240, 249, 254, 2, 18, 47, 14, 246, 252, 14, 29, 6, 222,
-			239, 15, 32, 30, 10, 226, 237, 3, 26, 31, 232, 247, 2, 231, 12, 19, 10, 0, 220, 241, 31, 7, 18, 1, 243, 243, 10, 30, 2, 228,
-			221, 255, 4, 252, 233, 4, 16, 242, 15, 249, 5, 17, 1, 25, 33, 243, 230, 226, 0, 26, 7, 212, 241, 247, 243, 33, 25, 2, 0, 14,
-			26, 244, 227, 247, 5, 228, 228, 3, 30, 23, 17, 208, 180, 236, 38, 32, 240, 230, 254, 11, 5, 254, 237, 225, 8, 35, 60, 229, 212, 21,
-			28, 35, 17, 248, 212, 208, 0, 39, 29, 227, 204, 215, 3, 45, 35, 4, 6, 7, 14, 1, 4, 253, 251, 17, 42, 46, 236, 247, 0, 2,
-			14, 14, 6, 0, 245, 208, 249, 14, 17, 14, 233, 239, 20, 250, 245, 4, 9, 28, 233, 5, 62, 23, 233, 199, 247, 48, 24, 239, 207, 13,
-			27, 245, 237, 239, 237, 247, 20, 20, 241, 242, 14, 8, 251, 214, 203, 5, 77, 5, 229, 233, 239, 36, 58, 10, 7, 12, 237, 244, 16, 25,
-			2, 251, 1, 24, 3, 224, 252, 27, 21, 250, 228, 242, 44, 57, 30, 226, 170, 8, 58, 28, 209, 249, 7, 4, 21, 241, 202, 0, 7, 251,
-			207, 252, 1, 233, 7, 5, 17, 36, 253, 232, 219, 3, 55, 65, 224, 209, 243, 0, 251, 2, 25, 15, 11, 218, 217, 17, 15, 13, 9, 0,
-			229, 228, 7, 6, 254, 241, 6, 42, 246, 187, 213, 245, 36, 27, 3, 233, 213, 245, 11, 19, 254, 0, 12, 244, 243, 17, 21, 252, 246, 19,
-			18, 26, 254, 229, 235, 35, 68, 21, 230, 216, 252, 33, 32, 18, 242, 247, 13, 21, 8, 250, 8, 20, 247, 247, 18, 21, 230, 238, 42, 16,
-			7, 249, 0, 9, 0, 9, 24, 23, 234, 10, 40, 15, 0, 233, 0, 25, 0, 228, 7, 13, 253, 24, 24, 221, 199, 244, 20, 228, 205, 1,
-			48, 26, 208, 219, 7, 13, 237, 255, 27, 27, 223, 185, 197, 27, 0, 229, 230, 216, 240, 37, 42, 247, 225, 200, 36, 70, 23, 248, 1, 42,
-			229, 204, 3, 18, 29, 11, 226, 246, 17, 15, 12, 20, 22, 21, 0, 205, 224, 253, 43, 63, 32, 209, 201, 235, 0, 38, 13, 255, 189, 221,
-			25, 20, 255, 238, 235, 255, 27, 20, 238, 234, 6, 248, 12, 19, 239, 242, 33, 30, 15, 230, 246, 15, 22, 26, 16, 12, 0, 252, 11, 31,
-			20, 244, 247, 40, 45, 6, 221, 225, 40, 29, 240, 190, 194, 18, 54, 254, 210, 219, 249, 27, 13, 230, 225, 220, 254, 61, 43, 223, 197, 202,
-			0, 79, 48, 243, 203, 205, 40, 96, 43, 230, 192, 246, 47, 40, 2, 235, 205, 6, 66, 9, 209, 203, 230, 45, 44, 255, 241, 211, 221, 22,
-			63, 54, 1, 205, 207, 35, 67, 36, 21, 252, 233, 19, 34, 46, 255, 199, 1, 88, 67, 215, 135, 235, 72, 62, 252, 176, 231, 1, 12, 0,
-			233, 222, 239, 27, 249, 219, 228, 255, 8, 231, 206, 224, 14, 26, 24, 10, 253, 217, 203, 205, 39, 83, 42, 237, 162, 237, 50, 11, 2, 242,
-			39, 240, 237, 245, 254, 8, 254, 11, 235, 201, 246, 17, 241, 27, 33, 21, 25, 236, 228, 12, 49, 64, 34, 0, 207, 18, 56, 16, 231, 243,
-			16, 9, 255, 235, 20, 53, 27, 226, 200, 180, 3, 68, 22, 5, 215, 249, 17, 255, 7, 250, 13, 8, 4, 41, 33, 232, 224, 6, 15, 255,
-			234, 220, 252, 40, 35, 254, 187, 199, 232, 34, 51, 248, 233, 220, 232, 55, 0, 216, 1, 27, 27, 251, 220, 213, 250, 47, 50, 8, 201, 195,
-			11, 25, 11, 3, 11, 29, 14, 230, 2, 45, 47, 24, 19, 247, 215, 216, 25, 47, 7, 219, 227, 7, 32, 30, 15, 23, 255, 226, 208, 233,
-			23, 2, 243, 250, 2, 2, 211, 198, 234, 2, 50, 27, 206, 196, 232, 9, 13, 13, 250, 244, 231, 244, 241, 5, 16, 1, 242, 10, 4, 239,
-			240, 21, 41, 23, 219, 227, 50, 37, 15, 251, 2, 22, 5, 3, 184, 227, 91, 45, 20, 245, 234, 235, 241, 15, 22, 251, 253, 245, 32, 18,
-			233, 215, 246, 34, 51, 29, 13, 237, 19, 58, 19, 241, 3, 18, 250, 11, 32, 37, 8, 247, 2, 11, 235, 211, 216, 17, 99, 20, 224, 200,
-			217, 252, 231, 252, 19, 3, 244, 246, 17, 34, 8, 219, 240, 3, 234, 248, 254, 3, 7, 23, 25, 243, 226, 251, 21, 47, 15, 242, 246, 26,
-			35, 14, 204, 178, 242, 29, 10, 19, 25, 12, 233, 240, 238, 242, 249, 14, 240, 215, 248, 4, 15, 21, 247, 247, 8, 5, 250, 254, 2, 254,
-			253, 2, 237, 233, 19, 36, 16, 249, 251, 34, 28, 245, 237, 244, 16, 39, 10, 251, 244, 244, 13, 12, 225, 212, 224, 29, 9, 239, 244, 0,
-			1, 11, 12, 7, 252, 248, 7, 0, 249, 224, 217, 239, 14, 24, 6, 225, 175, 190, 0, 26, 11, 3, 243, 253, 249, 11, 31, 27, 243, 228,
-			29, 32, 5, 0, 243, 252, 10, 52, 37, 239, 195, 251, 74, 46, 4, 211, 167, 32, 119, 72, 12, 212, 210, 2, 19, 12, 33, 53, 19, 11,
-			3, 223, 239, 9, 18, 31, 8, 223, 207, 246, 13, 17, 16, 244, 230, 230, 30, 46, 15, 249, 224, 250, 20, 6, 238, 239, 18, 24, 20, 1,
-			221, 196, 241, 25, 39, 38, 4, 230, 225, 34, 29, 237, 204, 236, 16, 50, 47, 240, 177, 207, 14, 26, 22, 229, 196, 247, 1, 251, 0, 229,
-			243, 12, 10, 0, 46, 3, 31, 0, 14, 38, 18, 32, 39, 17, 243, 10, 31, 23, 4, 9, 21, 31, 17, 8, 19, 34, 19, 38, 9, 255,
-			18, 33, 29, 22, 31, 239, 6, 20, 17, 41, 17, 5, 6, 16, 45, 17, 5, 36, 34, 7, 5, 37, 42, 25, 1, 14, 15, 21, 252, 6,
-			22, 31, 35, 0, 3, 250, 45, 32, 24, 24, 245, 16, 27, 23, 48, 38, 15, 249, 250, 25, 9, 250, 24, 16, 39, 16, 24, 27, 39, 31,
-			232, 29, 33, 30, 24, 14, 9, 26, 0, 0, 21, 38, 26, 23, 23, 4, 1, 36, 8, 16, 25, 250, 6, 13, 57, 7, 240, 10, 35, 28,
-			27, 30, 21, 28, 16, 42, 23, 3, 19, 13, 37, 18, 19, 37, 63, 9, 0, 42, 55, 53, 231, 15, 63, 55, 15, 1, 24, 253, 40, 32,
-			40, 6, 31, 27, 250, 10, 25, 34, 13, 9, 31, 19, 15, 20, 30, 10, 15, 3, 60, 43, 224, 0, 45, 53, 18, 5, 40, 19, 252, 27,
-			10, 12, 49, 22, 242, 252, 44, 18, 45, 14, 2, 233, 37, 36, 242, 7, 37, 19, 3, 24, 30, 1, 5, 58, 3, 252, 8, 29, 40, 15,
-			11, 14, 3, 255, 0, 37, 36, 11, 245, 17, 55, 249, 255, 25, 48, 21, 252, 18, 48, 23, 237, 235, 34, 38, 235, 240, 39, 36, 16, 23,
-			21, 1, 15, 20, 26, 44, 1, 19, 23, 10, 46, 33, 221, 229, 36, 32, 241, 254, 1, 12, 39, 56, 60, 251, 8, 19, 248, 34, 26, 21,
-			16, 19, 17, 14, 20, 249, 28, 18, 21, 29, 242, 239, 35, 47, 53, 25, 234, 34, 47, 255, 15, 45, 32, 15, 27, 3, 249, 12, 46, 36,
-			22, 41, 47, 222, 238, 62, 42, 11, 228, 11, 55, 29, 221, 5, 73, 31, 13, 20, 248, 252, 5, 42, 59, 15, 27, 14, 31, 10, 244, 48,
-			51, 33, 245, 11, 31, 253, 252, 9, 48, 18, 217, 242, 21, 53, 84, 25, 218, 33, 34, 39, 26, 21, 28, 1, 29, 4, 238, 12, 249, 32,
-			50, 0, 230, 36, 35, 10, 245, 225, 2, 75, 65, 2, 0, 246, 48, 45, 241, 235, 14, 34, 51, 45, 4, 224, 6, 15, 90, 23, 190, 33,
-			93, 28, 61, 28, 241, 183, 15, 47, 30, 12, 243, 240, 2, 89, 65, 216, 221, 22, 58, 65, 8, 234, 6, 30, 10, 21, 68, 242, 202, 60,
-			42, 3, 245, 176, 6, 45, 64, 25, 229, 222, 32, 47, 16, 238, 223, 65, 50, 241, 236, 27, 81, 252, 57, 64, 7, 235, 253, 22, 46, 23,
-			252, 0, 55, 61, 8, 255, 215, 255, 49, 85, 23, 206, 253, 10, 237, 71, 230, 201, 41, 49, 47, 25, 225, 208, 65, 66, 251, 246, 6, 69,
-			41, 20, 21, 245, 242, 27, 49, 4, 38, 52, 1, 220, 2, 48, 221, 248, 6, 11, 46, 55, 199, 208, 34, 16, 45, 29, 177, 41, 84, 33,
-			254, 8, 216, 55, 66, 22, 248, 208, 4, 63, 33, 21, 4, 253, 251, 28, 11, 37, 84, 42, 21, 239, 188, 44, 51, 31, 29, 41, 9, 219,
-			1, 243, 38, 108, 191, 254, 62, 242, 239, 60, 12, 13, 71, 11, 215, 32, 74, 1, 238, 55, 53, 248, 225, 227, 88, 112, 0, 57, 11, 217,
-			36, 4, 25, 55, 38, 44, 9, 3, 57, 81, 18, 247, 233, 63, 8, 9, 43, 52, 12, 21, 32, 22, 48, 44, 253, 9, 60, 56, 50, 30,
-			2, 211, 26, 78, 75, 43, 3, 13, 46, 255, 250, 57, 228, 211, 52, 82, 255, 233, 50, 200, 232, 66, 107, 252, 12, 10, 50, 22, 242, 23,
-			12, 14, 18, 47, 25, 2, 3, 32, 53, 39, 15, 228, 47, 9, 13, 17, 46, 241, 234, 59, 16, 233, 20, 20, 50, 250, 92, 17, 218, 253,
-			248, 243, 58, 7, 201, 20, 232, 221, 9, 87, 96, 3, 225, 242, 250, 14, 13, 0, 20, 64, 9, 13, 231, 238, 63, 49, 36, 253, 209, 207,
-			254, 70, 40, 30, 252, 131, 206, 66, 21, 51, 26, 241, 28, 17, 242, 255, 248, 61, 42, 233, 20, 77, 46, 222, 188, 25, 98, 85, 55, 243,
-			8, 16, 249, 7, 60, 43, 48, 55, 8, 185, 223, 76, 249, 14, 23, 11, 253, 66, 39, 255, 235, 7, 37, 5, 41, 18, 42, 232, 251, 38,
-			92, 50, 192, 2, 1, 245, 5, 53, 87, 9, 250, 236, 245, 22, 36, 213, 236, 62, 109, 71, 243, 224, 253, 80, 101, 248, 232, 57, 71, 38,
-			255, 254, 34, 48, 232, 240, 91, 78, 171, 193, 43, 91, 49, 246, 221, 250, 235, 61, 84, 227, 223, 4, 14, 27, 29, 198, 238, 31, 8, 82,
-			2, 184, 50, 42, 251, 254, 30, 33, 63, 39, 234, 234, 0, 0, 254, 6, 35, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 0, 0, 0,
-			253, 251, 250, 247, 243, 240, 239, 242, 249, 2, 5, 11, 15, 18, 17, 20, 19, 14, 11, 1, 235, 224, 232, 234, 223, 235, 0, 253, 250, 14,
-			25, 21, 24, 26, 22, 20, 11, 254, 253, 249, 235, 232, 240, 241, 240, 249, 255, 7, 12, 19, 21, 26, 21, 14, 15, 6, 0, 248, 250, 241,
-			241, 245, 244, 246, 255, 6, 8, 14, 20, 15, 13, 16, 11, 5, 2, 239, 210, 214, 230, 219, 220, 244, 246, 245, 12, 25, 26, 37, 33, 22,
-			26, 15, 254, 250, 250, 236, 236, 243, 241, 245, 249, 4, 17, 26, 23, 25, 39, 27, 12, 16, 9, 242, 214, 192, 208, 228, 222, 206, 235, 251,
-			237, 5, 34, 46, 41, 40, 38, 36, 28, 1, 255, 4, 242, 227, 240, 252, 241, 241, 7, 19, 17, 24, 28, 32, 23, 18, 10, 9, 253, 234,
-			243, 242, 235, 243, 27, 52, 245, 4, 31, 44, 247, 28, 43, 245, 246, 241, 235, 219, 210, 203, 210, 238, 241, 7, 38, 22, 48, 61, 51, 24,
-			252, 228, 200, 200, 173, 166, 202, 221, 210, 248, 27, 49, 35, 67, 63, 40, 14, 245, 232, 189, 174, 162, 179, 174, 189, 226, 8, 30, 55, 92,
-			86, 75, 72, 54, 22, 0, 253, 224, 204, 207, 193, 211, 227, 17, 26, 56, 76, 84, 83, 72, 63, 44, 11, 248, 248, 224, 212, 215, 229, 221,
-			241, 6, 4, 23, 27, 32, 39, 13, 254, 2, 248, 212, 199, 208, 165, 183, 203, 200, 221, 25, 61, 46, 65, 85, 60, 33, 44, 0, 185, 182,
-			194, 158, 159, 224, 222, 0, 46, 64, 73, 111, 120, 86, 86, 67, 17, 248, 226, 206, 181, 183, 198, 217, 242, 2, 29, 46, 48, 45, 45, 24,
-			243, 205, 180, 153, 131, 148, 158, 168, 192, 231, 15, 49, 86, 95, 104, 105, 94, 69, 48, 23, 255, 234, 215, 211, 207, 210, 221, 242, 8, 31,
-			66, 70, 79, 88, 68, 48, 25, 5, 239, 220, 197, 201, 203, 205, 221, 254, 1, 14, 36, 42, 34, 31, 27, 1, 241, 244, 219, 199, 208, 213,
-			203, 220, 1, 0, 3, 38, 39, 28, 27, 36, 13, 0, 241, 229, 222, 224, 236, 238, 242, 247, 3, 1, 0, 4, 249, 235, 238, 239, 233, 241,
-			248, 0, 2, 22, 45, 53, 48, 42, 33, 24, 35, 2, 249, 254, 243, 211, 237, 247, 224, 250, 10, 10, 253, 14, 6, 14, 14, 9, 0, 1,
-			248, 238, 248, 251, 244, 231, 232, 234, 2, 0, 249, 4, 11, 7, 8, 21, 19, 13, 18, 11, 242, 238, 246, 252, 245, 239, 241, 0, 2, 2,
-			0, 3, 12, 5, 7, 2, 6, 2, 13, 6, 238, 242, 4, 13, 0, 247, 7, 16, 20, 12, 11, 12, 28, 38, 23, 13, 12, 6, 247, 244,
-			225, 219, 217, 230, 223, 233, 0, 5, 8, 20, 17, 15, 19, 23, 1, 12, 32, 33, 19, 18, 13, 238, 252, 253, 239, 235, 252, 225, 205, 237,
-			229, 216, 253, 250, 235, 231, 249, 227, 234, 253, 248, 238, 246, 253, 0, 6, 27, 33, 51, 52, 40, 33, 56, 47, 42, 32, 27, 3, 6, 19,
-			248, 235, 230, 221, 216, 226, 231, 216, 228, 240, 222, 234, 254, 250, 232, 234, 233, 221, 221, 232, 230, 236, 247, 7, 2, 248, 2, 13, 23, 30,
-			33, 26, 28, 39, 46, 52, 51, 46, 44, 34, 22, 27, 26, 2, 10, 3, 241, 233, 252, 253, 245, 4, 15, 0, 5, 10, 9, 235, 238, 234,
-			215, 212, 219, 203, 200, 223, 239, 238, 14, 29, 1, 10, 20, 17, 5, 252, 252, 236, 238, 231, 255, 234, 233, 241, 244, 247, 9, 22, 25, 22,
-			31, 24, 29, 20, 17, 8, 4, 255, 254, 22, 15, 247, 240, 239, 0, 2, 17, 28, 32, 28, 14, 10, 5, 11, 253, 251, 1, 0, 9, 29,
-			23, 3, 5, 1, 250, 246, 252, 234, 238, 2, 243, 240, 247, 0, 253, 2, 245, 237, 243, 0, 5, 13, 14, 30, 42, 16, 5, 5, 12, 246,
-			255, 234, 208, 212, 232, 241, 1, 2, 251, 237, 232, 212, 221, 198, 176, 178, 186, 199, 229, 248, 0, 23, 44, 65, 72, 78, 67, 47, 22, 7,
-			1, 253, 253, 4, 30, 22, 28, 59, 70, 48, 56, 64, 19, 3, 236, 180, 155, 162, 154, 138, 159, 183, 203, 242, 22, 57, 66, 64, 67, 55,
-			42, 28, 35, 0, 232, 245, 0, 235, 9, 39, 29, 37, 79, 81, 56, 65, 35, 231, 212, 213, 200, 181, 192, 181, 184, 208, 239, 4, 34, 56,
-			55, 56, 63, 38, 22, 14, 239, 221, 219, 246, 248, 17, 20, 30, 29, 22, 25, 20, 10, 5, 5, 252, 252, 255, 238, 235, 250, 243, 1, 246,
-			222, 234, 253, 247, 238, 241, 246, 239, 254, 241, 241, 15, 29, 25, 4, 24, 6, 255, 245, 222, 213, 242, 15, 4, 1, 26, 38, 45, 34, 16,
-			5, 3, 12, 242, 221, 224, 218, 203, 206, 202, 215, 247, 5, 6, 253, 27, 28, 44, 26, 6, 10, 1, 232, 212, 214, 220, 238, 17, 23, 30,
-			67, 42, 19, 7, 247, 206, 211, 227, 181, 181, 214, 202, 209, 241, 10, 3, 36, 61, 42, 47, 50, 13, 250, 243, 226, 220, 225, 217, 214, 5,
-			34, 41, 72, 84, 81, 65, 58, 43, 19, 21, 247, 226, 231, 235, 236, 242, 11, 11, 22, 43, 31, 20, 18, 15, 234, 207, 212, 190, 198, 222,
-			208, 208, 241, 9, 243, 24, 45, 50, 65, 76, 58, 40, 39, 28, 255, 249, 249, 238, 232, 235, 245, 5, 20, 30, 27, 21, 33, 32, 21, 247,
-			226, 204, 194, 184, 181, 175, 177, 197, 222, 222, 234, 12, 30, 37, 48, 58, 43, 48, 41, 10, 233, 233, 220, 206, 233, 240, 237, 252, 30, 27,
-			66, 80, 71, 53, 61, 19, 245, 246, 231, 198, 215, 206, 176, 200, 249, 240, 252, 34, 30, 29, 37, 33, 29, 29, 15, 241, 227, 210, 212, 214,
-			232, 248, 2, 21, 35, 50, 53, 69, 48, 49, 22, 5, 0, 251, 221, 226, 224, 232, 232, 3, 241, 254, 36, 18, 21, 23, 16, 236, 245, 238,
-			207, 222, 237, 198, 223, 253, 4, 4, 13, 17, 254, 15, 3, 246, 251, 250, 235, 212, 223, 243, 247, 5, 0, 5, 19, 33, 54, 43, 44, 26,
-			12, 240, 227, 221, 237, 238, 230, 215, 252, 14, 14, 7, 5, 10, 4, 5, 237, 232, 0, 15, 15, 248, 242, 254, 4, 245, 249, 0, 7, 14,
-			18, 250, 0, 23, 19, 6, 12, 19, 24, 21, 15, 2, 250, 251, 248, 244, 242, 244, 0, 246, 237, 221, 250, 242, 236, 240, 238, 227, 239, 7,
-			2, 10, 39, 43, 30, 39, 44, 20, 22, 17, 16, 6, 35, 23, 3, 253, 14, 9, 7, 14, 13, 3, 9, 24, 251, 227, 249, 252, 210, 217,
-			244, 226, 227, 245, 232, 226, 11, 6, 244, 251, 17, 9, 17, 11, 9, 255, 1, 248, 249, 249, 14, 19, 4, 0, 14, 13, 14, 30, 19, 255,
-			255, 247, 237, 238, 238, 243, 249, 250, 5, 7, 27, 23, 16, 17, 30, 6, 7, 4, 236, 233, 248, 226, 199, 231, 251, 247, 12, 29, 255, 254,
-			26, 10, 243, 254, 250, 210, 219, 224, 223, 231, 250, 244, 246, 6, 9, 250, 254, 4, 11, 9, 0, 255, 246, 249, 10, 12, 0, 26, 40, 19,
-			4, 27, 11, 0, 4, 237, 217, 244, 16, 253, 244, 3, 1, 250, 1, 2, 250, 9, 20, 2, 225, 235, 14, 10, 251, 9, 251, 254, 20, 23,
-			3, 18, 35, 29, 20, 15, 19, 20, 21, 19, 248, 232, 8, 254, 247, 247, 242, 237, 253, 10, 240, 245, 236, 235, 248, 236, 239, 239, 221, 240,
-			244, 242, 242, 8, 3, 3, 11, 22, 26, 30, 23, 28, 0, 17, 24, 246, 251, 1, 1, 240, 5, 239, 236, 24, 36, 27, 253, 24, 16, 249,
-			253, 243, 217, 244, 3, 212, 185, 220, 239, 238, 238, 249, 241, 253, 32, 31, 6, 21, 40, 19, 23, 33, 26, 13, 20, 14, 23, 35, 41, 22,
-			5, 22, 18, 27, 12, 250, 251, 254, 243, 224, 229, 226, 248, 244, 236, 239, 255, 8, 28, 15, 2, 18, 24, 16, 27, 15, 236, 254, 255, 249,
-			0, 254, 3, 4, 33, 22, 42, 31, 29, 23, 18, 4, 246, 237, 208, 234, 229, 226, 216, 242, 251, 253, 249, 15, 4, 16, 13, 254, 248, 1,
-			26, 235, 230, 248, 251, 231, 248, 254, 11, 18, 28, 232, 248, 20, 6, 243, 229, 246, 241, 244, 238, 228, 228, 1, 4, 235, 225, 246, 248, 235,
-			245, 9, 235, 231, 0, 1, 245, 17, 8, 247, 11, 36, 22, 249, 7, 19, 1, 248, 19, 241, 242, 2, 251, 216, 244, 8, 5, 255, 4, 11,
-			249, 8, 20, 13, 255, 7, 240, 238, 246, 252, 245, 229, 240, 252, 243, 1, 24, 12, 253, 37, 29, 1, 1, 18, 250, 250, 8, 249, 244, 7,
-			10, 255, 15, 44, 35, 21, 33, 37, 15, 8, 0, 234, 244, 253, 234, 209, 222, 222, 252, 249, 255, 253, 10, 252, 9, 2, 4, 253, 1, 250,
-			238, 251, 229, 3, 254, 20, 0, 11, 3, 24, 33, 21, 7, 11, 20, 23, 22, 0, 6, 253, 249, 238, 235, 247, 241, 232, 221, 243, 247, 240,
-			234, 242, 254, 2, 226, 232, 0, 15, 23, 250, 244, 255, 22, 20, 0, 9, 27, 38, 3, 2, 255, 15, 20, 11, 233, 228, 237, 251, 231, 218,
-			228, 248, 0, 8, 250, 251, 28, 30, 21, 15, 0, 18, 28, 2, 251, 232, 229, 248, 13, 240, 229, 234, 246, 17, 17, 250, 241, 17, 37, 27,
-			245, 232, 244, 17, 14, 240, 226, 245, 19, 37, 16, 244, 10, 28, 35, 30, 14, 14, 20, 24, 6, 10, 0, 5, 9, 9, 11, 4, 0, 23,
-			8, 9, 19, 4, 4, 27, 12, 242, 0, 0, 231, 255, 234, 253, 238, 245, 241, 246, 9, 5, 254, 1, 9, 251, 6, 0, 2, 0, 2, 228,
-			249, 234, 238, 0, 2, 0, 19, 39, 27, 27, 36, 51, 32, 22, 12, 253, 5, 252, 221, 234, 248, 249, 3, 4, 252, 39, 34, 9, 22, 44,
-			33, 30, 255, 226, 14, 12, 245, 225, 235, 253, 0, 2, 4, 11, 0, 17, 18, 253, 248, 241, 223, 247, 235, 224, 224, 230, 211, 239, 253, 241,
-			0, 10, 245, 241, 0, 249, 244, 250, 0, 0, 170, 7, 51, 0, 21, 242, 238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1,
-			188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250, 17, 31, 237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60,
-			17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41, 222, 179, 29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250,
-			249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60, 21, 231, 223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250,
-			232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20, 17, 255, 249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15,
-			41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13, 250, 243, 235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244,
-			35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0, 48, 2, 226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27,
-			10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37, 1, 239, 244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197,
-			22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236, 32, 21, 237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2,
-			39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243, 6, 2, 255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248,
-			246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237, 51, 19, 232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37,
-			2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1, 221, 31, 13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50,
-			0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182, 1, 59, 19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16,
-			21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3, 6, 30, 240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10,
-			212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11, 20, 4, 254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6,
-			248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234, 51, 249, 218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201,
-			15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221, 212, 253, 34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23,
-			30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173, 65, 92, 206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244,
-			197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227, 0, 70, 241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223,
-			1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247, 42, 228, 208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2,
-			245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57, 5, 221, 250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211,
-			0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228, 58, 252, 236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20,
-			237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32, 252, 232, 42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254,
-			45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233, 233, 48, 3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241,
-			224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223, 11, 33, 246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224,
-			30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247, 237, 7, 17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56,
-			34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12, 1, 17, 6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46,
-			227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38, 239, 12, 56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21,
-			222, 219, 35, 42, 215, 255, 7, 6, 40, 0, 188, 15, 76, 245, 193, 29, 25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13,
-			11, 247, 16, 19, 2, 239, 204, 71, 69, 188, 229, 30, 35, 0, 2, 14, 236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23,
-			237, 4, 46, 204, 233, 66, 250, 217, 22, 41, 2, 225, 27, 47, 234, 252, 10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18,
-			53, 242, 10, 6, 234, 30, 19, 235, 9, 42, 242, 224, 32, 0, 243, 16, 251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23,
-			249, 239, 13, 237, 22, 0, 0, 26, 243, 1, 33, 231, 9, 46, 235, 245, 9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232,
-			20, 58, 246, 195, 11, 40, 18, 2, 200, 0, 60, 42, 225, 219, 32, 32, 4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230,
-			5, 26, 236, 255, 19, 8, 10, 21, 242, 238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240,
-			28, 12, 233, 10, 17, 0, 250, 17, 31, 237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2,
-			12, 106, 244, 132, 46, 76, 41, 222, 179, 29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202,
-			26, 57, 239, 25, 236, 237, 60, 21, 231, 223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22,
-			9, 244, 2, 23, 255, 230, 20, 17, 255, 249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241,
-			34, 10, 22, 238, 231, 33, 13, 250, 243, 235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229,
-			232, 14, 252, 39, 22, 231, 0, 48, 2, 226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2,
-			6, 5, 50, 247, 212, 26, 37, 1, 239, 244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23,
-			24, 240, 237, 47, 20, 242, 236, 32, 21, 237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244,
-			227, 73, 17, 203, 11, 38, 243, 6, 2, 255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13,
-			5, 9, 237, 24, 47, 227, 237, 51, 19, 232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0,
-			231, 3, 22, 253, 229, 38, 1, 221, 31, 13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208,
-			32, 55, 217, 214, 74, 45, 182, 1, 59, 19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245,
-			7, 0, 43, 12, 235, 10, 3, 6, 30, 240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43,
-			204, 232, 10, 50, 1, 225, 11, 20, 4, 254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15,
-			238, 0, 9, 0, 35, 235, 234, 51, 249, 218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212,
-			78, 56, 189, 200, 68, 66, 221, 212, 253, 34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227,
-			29, 29, 252, 245, 60, 246, 173, 65, 92, 206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7,
-			5, 249, 239, 28, 10, 0, 227, 0, 70, 241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56,
-			248, 220, 33, 10, 247, 247, 247, 42, 228, 208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246,
-			232, 33, 31, 236, 233, 6, 57, 5, 221, 250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35,
-			36, 254, 208, 4, 81, 223, 228, 58, 252, 236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3,
-			252, 249, 18, 48, 250, 247, 32, 252, 232, 42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239,
-			232, 248, 41, 15, 235, 31, 233, 233, 48, 3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39,
-			17, 244, 222, 0, 47, 12, 223, 11, 33, 246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252,
-			2, 247, 27, 252, 240, 45, 247, 237, 7, 17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11,
-			238, 22, 239, 31, 29, 223, 12, 1, 17, 6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246,
-			12, 249, 1, 56, 233, 234, 38, 239, 12, 56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21, 222, 219, 35, 42, 215, 255, 7,
-			6, 40, 0, 188, 15, 76, 245, 193, 29, 25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13, 11, 247, 16, 19, 2, 239, 204,
-			71, 69, 188, 229, 30, 35, 0, 2, 14, 236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23, 237, 4, 46, 204, 233, 66, 250,
-			217, 22, 41, 2, 225, 27, 47, 234, 252, 10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18, 53, 242, 10, 6, 234, 30, 19,
-			235, 9, 42, 242, 224, 32, 0, 243, 16, 251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23, 249, 239, 13, 0, 0, 150, 0,
-			4, 0, 1, 0, 224, 0, 248, 2, 140, 5, 60, 10, 20, 13, 175, 14, 117, 27, 50, 43, 29, 57, 48, 41, 35, 29, 12, 3, 196, 162,
-			200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 224, 0, 248, 2, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 60, 67, 36, 71, 61, 52, 44, 37,
-			15, 4, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 248, 2, 120, 5, 40, 10, 20, 13, 175, 14, 117, 27, 40, 55, 33, 64,
-			55, 40, 36, 33, 14, 4, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 208, 0, 224, 2, 100, 5, 236, 9, 1, 13, 155, 14, 105, 27,
-			0, 33, 26, 52, 37, 27, 24, 24, 11, 3, 192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 240, 0, 128, 3, 160, 5,
-			150, 10, 164, 13, 45, 15, 195, 27, 45, 45, 31, 64, 57, 40, 30, 20, 9, 4, 235, 162, 134, 132, 120, 120, 247, 170, 165, 44, 65, 70,
-			130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0,
-			128, 3, 160, 5, 150, 10, 164, 13, 45, 15, 195, 27, 50, 82, 42, 87, 77, 54, 41, 27, 12, 5, 235, 162, 134, 132, 120, 120, 247, 170,
-			165, 44, 65, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 240, 0, 128, 3, 160, 5, 150, 10, 164, 13, 45, 15, 195, 27, 80, 67, 37, 78, 69, 48, 37, 24, 11, 5, 235, 162, 134, 132,
-			120, 120, 247, 170, 165, 44, 65, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 240, 0, 128, 3, 160, 5, 150, 10, 164, 13, 45, 15, 195, 27, 0, 37, 28, 58, 52, 36, 27, 18, 8, 3,
-			235, 162, 134, 132, 120, 120, 247, 170, 165, 44, 65, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 5, 0, 1, 0, 240, 0, 200, 2, 224, 6, 176, 9, 112, 13, 10, 15, 96, 27, 44, 46,
-			34, 65, 59, 56, 38, 23, 6, 8, 165, 135, 240, 120, 120, 120, 195, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0, 208, 2, 224, 6, 116, 9, 112, 13, 60, 15,
-			96, 27, 77, 68, 36, 76, 79, 74, 40, 24, 8, 6, 170, 120, 180, 120, 120, 120, 200, 120, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0, 192, 2, 202, 6, 116, 9,
-			72, 13, 60, 15, 96, 27, 77, 53, 29, 62, 71, 62, 56, 25, 13, 6, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 57,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 240, 0, 160, 2,
-			114, 6, 196, 9, 172, 13, 60, 15, 96, 28, 35, 38, 27, 56, 50, 49, 42, 26, 10, 7, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44,
-			45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			240, 0, 160, 2, 26, 6, 216, 9, 172, 13, 60, 15, 96, 28, 0, 33, 26, 55, 45, 42, 36, 22, 7, 9, 167, 105, 180, 120, 120, 120,
-			242, 135, 150, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 215, 0, 5, 0, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 54, 22, 57, 64, 38, 35, 20,
-			14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 90, 82, 28, 70,
-			78, 46, 43, 24, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26,
-			45, 74, 26, 66, 74, 44, 41, 23, 16, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 153, 0, 176, 1, 56, 3, 216, 9, 194, 11,
-			151, 14, 244, 26, 30, 45, 20, 54, 57, 34, 31, 18, 13, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 153, 0, 176, 1, 56, 3,
-			216, 9, 194, 11, 151, 14, 244, 26, 0, 36, 18, 49, 52, 31, 28, 16, 11, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 185, 0, 4, 0,
-			1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 45, 56, 25, 59, 71, 35, 34, 19, 12, 5, 173, 142, 135, 120,
-			120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 80, 106, 34, 81, 98, 48, 46, 27, 17, 7,
-			173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 60, 95, 33, 77, 93, 46,
-			44, 25, 16, 7, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 0, 51,
-			24, 56, 68, 33, 32, 18, 12, 5, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 172, 0, 64, 1, 228, 2, 96, 9,
-			12, 13, 60, 15, 144, 26, 45, 39, 2, 67, 43, 20, 20, 26, 8, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 172, 0, 64, 1,
-			228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 70, 66, 3, 87, 57, 26, 26, 34, 11, 9, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 60, 59, 3, 83, 54, 25, 25, 32, 10, 9, 177, 117, 100, 120, 120, 120,
-			177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 0, 37, 2, 65, 42, 19, 19, 25, 8, 7, 177, 117,
-			100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 110, 0, 4, 0, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 50, 51, 26, 61,
-			52, 32, 29, 20, 14, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26,
-			60, 78, 32, 75, 64, 39, 36, 25, 18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11,
-			136, 14, 144, 26, 60, 67, 30, 71, 57, 37, 33, 23, 16, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 138, 1, 212, 3,
-			56, 9, 224, 11, 136, 14, 144, 26, 0, 31, 21, 46, 40, 33, 29, 18, 13, 5, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 50, 0, 5, 0,
-			1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 34, 17, 54, 37, 31, 34, 31, 8, 11, 160, 90, 135, 120,
-			120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 50, 59, 22, 71, 47, 41, 45, 41, 11, 15,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 85, 54, 21, 68, 46, 39,
-			43, 39, 10, 14, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 40, 42,
-			19, 60, 41, 35, 38, 35, 9, 12, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14,
-			100, 25, 0, 29, 15, 50, 34, 29, 31, 29, 7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 200, 0, 4, 0, 1, 0, 122, 0, 192, 1,
-			240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 50, 49, 28, 59, 69, 41, 43, 30, 17, 6, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 70, 71, 34, 71, 83, 49, 52, 37, 20, 8, 170, 133, 135, 122, 124, 128,
-			197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 64, 32, 68, 79, 47, 49, 35, 19, 7, 170, 133,
-			135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 121, 0, 207, 1, 240, 5, 96, 9, 220, 12, 220, 14, 95, 27, 0, 39, 26, 53, 62, 37, 39, 27,
-			15, 5, 170, 136, 135, 122, 123, 126, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 235, 0, 79, 3, 103, 5, 206, 9, 184, 12, 181, 14, 193, 27,
-			45, 62, 28, 63, 72, 40, 41, 26, 9, 5, 233, 132, 198, 126, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 235, 0, 79, 3, 103, 5, 206, 9, 184, 12,
-			181, 14, 193, 27, 60, 108, 37, 83, 94, 54, 54, 35, 13, 6, 233, 132, 198, 126, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 220, 0, 42, 3, 252, 4,
-			36, 9, 128, 12, 41, 14, 224, 27, 41, 66, 32, 59, 75, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 211, 0,
-			97, 2, 24, 4, 39, 9, 164, 12, 137, 14, 93, 27, 40, 64, 23, 64, 64, 33, 41, 32, 13, 7, 181, 134, 172, 120, 120, 120, 255, 120,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 201, 0, 152, 1, 52, 3, 43, 9, 201, 12, 233, 14, 217, 26, 60, 51, 15, 65, 51, 24, 29, 31, 12, 7, 195, 149, 134, 120,
-			120, 120, 141, 120, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 176, 0, 104, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 31, 8, 55, 37, 20, 20, 26, 11, 7,
-			177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 240, 0, 5, 0, 1, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14, 104, 28, 45, 29,
-			21, 46, 46, 49, 37, 28, 9, 6, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14,
-			104, 28, 50, 84, 36, 79, 78, 83, 63, 48, 15, 11, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 198, 0, 192, 1, 44, 7, 195, 9,
-			213, 12, 91, 14, 62, 28, 75, 71, 31, 76, 61, 74, 57, 44, 14, 10, 183, 109, 149, 120, 120, 120, 185, 107, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 178, 0, 71, 1,
-			179, 3, 63, 9, 9, 13, 48, 15, 166, 26, 70, 42, 4, 71, 37, 23, 22, 30, 12, 7, 178, 124, 103, 120, 120, 120, 185, 107, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			178, 0, 71, 1, 179, 3, 63, 9, 9, 13, 48, 15, 166, 26, 0, 30, 3, 60, 31, 19, 18, 25, 10, 6, 178, 124, 103, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 255, 0, 6, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 45, 6, 66, 59, 59, 60, 29,
-			14, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 40, 65, 9, 78,
-			70, 70, 71, 34, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 24, 1, 172, 8, 240, 10, 32, 13, 0, 15, 160, 26,
-			50, 64, 9, 78, 64, 70, 71, 34, 16, 8, 167, 105, 130, 120, 120, 120, 167, 90, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 158, 0, 48, 1, 168, 7, 140, 10, 240, 12,
-			232, 14, 194, 26, 80, 50, 12, 70, 44, 58, 57, 29, 15, 7, 166, 109, 158, 120, 120, 120, 167, 90, 158, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 72, 1, 16, 4,
-			36, 9, 224, 11, 136, 14, 244, 26, 40, 29, 19, 45, 31, 26, 24, 16, 12, 6, 162, 127, 175, 120, 120, 120, 162, 127, 190, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0,
-			72, 1, 189, 3, 92, 8, 204, 11, 141, 14, 88, 27, 0, 30, 21, 52, 36, 20, 14, 11, 8, 7, 155, 105, 97, 120, 120, 120, 110, 105,
-			97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			215, 0, 5, 0, 1, 0, 232, 0, 144, 3, 40, 5, 180, 10, 212, 13, 100, 15, 102, 27, 45, 57, 32, 62, 59, 39, 37, 22, 9, 3,
-			255, 170, 163, 145, 120, 120, 255, 174, 173, 44, 60, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 232, 0, 144, 3, 40, 5, 180, 10, 212, 13, 100, 15, 102, 27, 50, 99, 42, 82, 78, 52,
-			49, 29, 13, 4, 255, 170, 163, 145, 120, 120, 255, 174, 173, 44, 60, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 225, 0, 72, 3, 138, 5, 220, 10, 212, 13, 80, 15, 120, 27, 60, 66,
-			39, 73, 57, 49, 46, 28, 12, 5, 247, 162, 178, 142, 120, 120, 255, 174, 190, 44, 55, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 104, 1, 152, 8, 4, 11, 172, 13, 60, 15,
-			32, 28, 60, 30, 30, 47, 48, 44, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 104, 1, 152, 8, 4, 11,
-			112, 13, 20, 15, 32, 28, 0, 26, 27, 43, 44, 40, 37, 29, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 245, 0, 5, 0, 1, 0,
-			200, 0, 208, 1, 188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 45, 29, 21, 47, 46, 50, 38, 29, 8, 6, 185, 107, 127, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 200, 0, 208, 1, 188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 70, 85, 36, 79, 79, 85, 65, 49, 15, 11, 185, 107,
-			127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 196, 0, 200, 1, 210, 7, 234, 9, 8, 13, 76, 14, 119, 28, 60, 72, 33, 73, 72, 78, 59, 45,
-			13, 10, 183, 105, 134, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 88, 1, 172, 8, 140, 10, 152, 13, 166, 14, 32, 28, 70, 45, 33, 56,
-			50, 60, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 72, 1, 232, 8, 160, 10, 92, 13, 10, 15, 32, 28,
-			0, 24, 18, 44, 44, 40, 37, 29, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 6, 0, 1, 0, 56, 1, 168, 2, 8, 7,
-			136, 9, 32, 13, 141, 14, 32, 29, 34, 43, 31, 54, 66, 53, 40, 30, 10, 6, 255, 172, 180, 120, 120, 120, 105, 172, 150, 44, 45, 70,
-			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 56, 1,
-			168, 2, 8, 7, 136, 9, 32, 13, 141, 14, 32, 29, 20, 75, 42, 72, 88, 70, 53, 40, 14, 8, 255, 172, 180, 120, 120, 120, 105, 172,
-			150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 56, 1, 168, 2, 8, 7, 136, 9, 32, 13, 141, 14, 32, 29, 46, 45, 32, 56, 68, 54, 41, 31, 10, 6, 255, 172, 180, 120,
-			120, 120, 105, 172, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 240, 0, 78, 2, 67, 7, 176, 9, 32, 13, 116, 14, 32, 28, 94, 49, 29, 58, 68, 60, 49, 40, 12, 6,
-			184, 135, 168, 120, 120, 120, 169, 138, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 5, 0, 156, 0, 99, 1, 141, 8, 140, 10, 112, 13, 0, 15, 32, 28, 40, 34, 29, 50, 45, 54,
-			41, 29, 9, 7, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 112, 13, 10, 15, 32, 28, 0, 30,
-			30, 47, 45, 43, 40, 31, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 144, 0, 213, 1, 96, 3, 136, 9,
-			254, 11, 157, 14, 216, 26, 24, 59, 25, 66, 64, 38, 35, 20, 15, 7, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 144, 0, 213, 1,
-			96, 3, 136, 9, 254, 11, 157, 14, 216, 26, 55, 83, 30, 79, 76, 45, 41, 24, 17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			216, 0, 224, 1, 72, 3, 96, 9, 244, 11, 35, 15, 224, 27, 65, 84, 34, 78, 94, 48, 55, 28, 16, 7, 170, 120, 90, 120, 120, 120,
-			170, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 5, 0, 184, 0, 209, 1, 106, 5, 132, 8, 48, 12, 191, 14, 64, 27, 25, 50, 37, 69, 40, 60, 39, 22, 15, 7, 167, 100,
-			152, 120, 120, 120, 137, 115, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 208, 0, 149, 1, 246, 6, 152, 8, 128, 12, 191, 14, 64, 27, 48, 46, 32, 58, 36, 60, 35, 23,
-			14, 7, 155, 105, 150, 120, 120, 120, 125, 150, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 199, 7, 136, 9, 228, 12, 191, 14, 64, 27, 30, 33, 24, 51,
-			34, 29, 39, 25, 16, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 248, 7, 136, 9, 72, 13, 191, 14, 64, 27,
-			0, 30, 22, 48, 32, 28, 37, 24, 15, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 250, 0, 5, 0, 1, 0, 175, 0, 65, 1, 197, 3,
-			73, 9, 19, 13, 53, 15, 164, 26, 45, 37, 3, 65, 33, 20, 20, 27, 11, 6, 177, 123, 107, 120, 120, 120, 177, 125, 117, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 175, 0,
-			65, 1, 197, 3, 73, 9, 19, 13, 53, 15, 164, 26, 80, 75, 5, 94, 48, 29, 28, 39, 15, 9, 177, 123, 107, 120, 120, 120, 177, 125,
-			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 173, 0, 70, 1, 126, 4, 196, 9, 38, 13, 32, 15, 221, 26, 80, 56, 8, 79, 36, 30, 28, 34, 13, 8, 175, 118, 150, 120,
-			120, 120, 177, 125, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 158, 0, 80, 1, 12, 8, 130, 10, 86, 13, 13, 15, 255, 27, 45, 31, 15, 53, 30, 37, 37, 31, 9, 8,
-			168, 109, 155, 120, 120, 120, 177, 109, 152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 72, 1, 112, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 18, 55, 33, 36,
-			37, 29, 8, 7, 167, 105, 155, 120, 120, 120, 122, 105, 140, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 70, 0, 3, 0, 5, 0, 124, 0, 72, 1, 170, 2, 20, 10, 8, 12, 10, 15,
-			32, 27, 40, 22, 14, 46, 42, 20, 18, 13, 9, 3, 141, 97, 120, 120, 120, 120, 60, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 124, 0, 72, 1, 170, 2, 20, 10,
-			8, 12, 10, 15, 32, 27, 30, 35, 18, 58, 52, 26, 23, 16, 12, 4, 141, 97, 120, 120, 120, 120, 60, 97, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 189, 1,
-			134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 0, 72, 32, 68, 70, 45, 36, 28, 20, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 81, 2,
-			31, 0, 5, 251, 3, 14, 16, 10, 2, 0, 251, 4, 5, 238, 6, 31, 245, 248, 21, 249, 255, 20, 1, 2, 248, 237, 9, 252, 240, 21,
-			12, 254, 3, 231, 222, 231, 223, 229, 207, 194, 231, 228, 219, 250, 253, 2, 10, 249, 12, 24, 6, 23, 19, 16, 54, 30, 0, 41, 49, 22,
-			14, 5, 11, 23, 22, 18, 7, 12, 22, 7, 4, 13, 9, 4, 251, 255, 0, 238, 239, 229, 222, 17, 255, 189, 238, 253, 202, 244, 3, 212,
-			230, 1, 8, 7, 238, 1, 35, 14, 5, 12, 6, 0, 246, 9, 18, 249, 26, 22, 209, 0, 46, 252, 6, 15, 229, 15, 49, 245, 217, 248,
-			12, 2, 241, 240, 238, 244, 10, 1, 223, 229, 9, 7, 236, 250, 248, 214, 0, 24, 232, 18, 64, 252, 249, 46, 31, 29, 53, 54, 44, 42,
-			58, 43, 34, 91, 58, 225, 23, 62, 1, 6, 247, 164, 185, 34, 74, 0, 178, 181, 177, 157, 154, 132, 186, 250, 166, 136, 222, 211, 184, 224,
-			239, 243, 232, 224, 2, 12, 22, 52, 54, 76, 50, 233, 52, 125, 41, 37, 77, 19, 46, 107, 41, 15, 77, 72, 32, 34, 16, 238, 21, 60,
-			2, 234, 22, 240, 188, 246, 25, 224, 189, 214, 236, 220, 203, 214, 237, 246, 215, 182, 223, 254, 206, 210, 8, 250, 232, 1, 253, 0, 35, 30,
-			13, 7, 4, 23, 29, 12, 9, 3, 28, 55, 248, 228, 53, 44, 235, 247, 18, 30, 0, 213, 19, 51, 219, 216, 12, 248, 240, 242, 238, 16,
-			11, 238, 3, 10, 252, 249, 0, 21, 250, 223, 45, 63, 238, 237, 12, 20, 41, 11, 243, 17, 253, 226, 251, 255, 255, 0, 238, 226, 220, 3,
-			45, 230, 204, 23, 0, 234, 40, 12, 248, 44, 1, 218, 11, 11, 247, 8, 31, 38, 238, 215, 15, 232, 185, 0, 4, 241, 49, 5, 190, 20,
-			57, 236, 241, 28, 249, 228, 8, 245, 204, 29, 81, 233, 208, 36, 11, 225, 7, 3, 246, 26, 5, 220, 253, 15, 236, 245, 28, 11, 242, 1,
-			253, 232, 9, 32, 248, 255, 47, 5, 227, 34, 25, 223, 27, 56, 239, 245, 24, 246, 0, 41, 15, 240, 14, 41, 246, 204, 252, 17, 244, 252,
-			238, 219, 24, 33, 214, 223, 9, 232, 220, 11, 15, 240, 244, 242, 232, 15, 31, 245, 252, 35, 18, 232, 223, 247, 4, 6, 33, 24, 251, 20,
-			250, 208, 40, 69, 243, 12, 26, 211, 249, 46, 249, 233, 14, 30, 12, 230, 222, 229, 235, 34, 39, 216, 225, 20, 238, 232, 41, 27, 210, 223,
-			25, 6, 223, 2, 19, 242, 7, 27, 233, 239, 31, 250, 230, 36, 28, 231, 8, 40, 4, 253, 10, 252, 0, 41, 50, 246, 212, 12, 15, 204,
-			240, 32, 231, 238, 18, 211, 230, 54, 0, 216, 21, 12, 227, 237, 251, 2, 0, 9, 35, 251, 224, 27, 18, 237, 22, 7, 221, 12, 18, 229,
-			3, 40, 5, 231, 18, 44, 225, 218, 67, 25, 169, 224, 23, 0, 37, 19, 201, 6, 63, 231, 213, 46, 30, 223, 1, 15, 212, 238, 53, 16,
-			216, 250, 13, 238, 252, 26, 247, 237, 26, 4, 224, 16, 24, 228, 1, 36, 239, 226, 12, 16, 11, 13, 241, 249, 42, 27, 232, 236, 4, 14,
-			18, 3, 246, 2, 18, 255, 222, 248, 29, 244, 219, 0, 250, 251, 29, 240, 206, 13, 34, 252, 241, 246, 250, 252, 8, 0, 0, 0, 45, 0,
-			3, 0, 5, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 45, 5, 8, 15, 6, 4, 2, 2, 0, 0, 200, 212,
-			187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 1, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 14, 14, 24, 10, 7, 3, 3,
-			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 14, 14, 24,
-			10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 24, 0, 3, 0, 5, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13,
-			24, 16, 124, 21, 25, 15, 14, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 57, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 136, 0, 200, 0, 64, 6,
-			40, 10, 232, 13, 24, 16, 124, 21, 0, 15, 14, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50,
-			85, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0,
-			200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 15, 14, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
-			187, 44, 30, 50, 85, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			45, 0, 3, 0, 5, 0, 116, 0, 232, 0, 164, 6, 176, 9, 152, 13, 60, 15, 124, 21, 45, 2, 11, 6, 4, 2, 2, 2, 0, 0,
-			200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 7, 17, 10, 7, 14,
-			3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 7,
-			17, 10, 7, 3, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 24, 0, 3, 0, 5, 0, 136, 0, 216, 1, 64, 6, 196, 9,
-			128, 12, 100, 15, 124, 21, 25, 14, 3, 36, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 136, 0, 216, 1,
-			64, 6, 196, 9, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			136, 0, 216, 1, 64, 6, 196, 9, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175,
-			200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 185, 3, 16, 0, 255, 254, 255, 0, 0, 2, 3, 4, 4, 4, 3, 3, 3, 1, 1, 1, 1, 0, 0, 255, 253, 251, 252, 253,
-			254, 253, 254, 255, 255, 1, 4, 4, 6, 4, 5, 3, 3, 5, 4, 2, 0, 1, 0, 255, 255, 253, 252, 250, 251, 249, 251, 252, 255, 0,
-			2, 3, 5, 3, 5, 8, 12, 12, 13, 15, 16, 14, 17, 233, 133, 161, 0, 56, 75, 57, 15, 3, 245, 228, 211, 211, 248, 30, 57, 51,
-			22, 255, 233, 218, 213, 237, 5, 23, 25, 25, 18, 1, 240, 222, 226, 240, 2, 18, 31, 27, 12, 250, 250, 245, 243, 248, 254, 4, 9, 8,
-			14, 8, 255, 240, 241, 250, 0, 2, 8, 10, 5, 3, 0, 254, 251, 247, 247, 0, 6, 10, 11, 5, 1, 254, 247, 255, 1, 0, 2, 0,
-			1, 4, 0, 254, 248, 250, 253, 254, 7, 13, 9, 6, 1, 251, 249, 248, 250, 253, 3, 8, 14, 11, 4, 251, 247, 248, 245, 250, 1, 7,
-			10, 13, 5, 1, 250, 244, 249, 253, 0, 9, 14, 14, 5, 0, 238, 246, 249, 246, 250, 4, 16, 16, 7, 7, 4, 252, 249, 243, 242, 250,
-			1, 8, 12, 8, 4, 0, 246, 0, 254, 4, 16, 20, 3, 223, 7, 7, 253, 0, 235, 234, 1, 2, 17, 13, 1, 0, 254, 253, 0, 6,
-			20, 21, 11, 5, 0, 243, 226, 224, 233, 253, 13, 20, 20, 13, 2, 246, 249, 252, 0, 8, 7, 15, 13, 254, 254, 244, 237, 245, 251, 9,
-			15, 10, 14, 2, 245, 250, 246, 250, 2, 3, 6, 5, 0, 254, 251, 252, 254, 4, 15, 14, 8, 252, 254, 251, 248, 251, 252, 2, 5, 0,
-			2, 249, 253, 0, 255, 0, 1, 9, 19, 8, 3, 245, 243, 247, 251, 5, 6, 15, 9, 250, 253, 3, 241, 244, 249, 11, 1, 251, 24, 8,
-			240, 4, 4, 5, 14, 251, 1, 18, 237, 0, 0, 244, 247, 251, 251, 8, 6, 238, 250, 1, 8, 16, 8, 253, 2, 22, 12, 15, 0, 250,
-			12, 26, 12, 184, 158, 200, 25, 50, 34, 29, 6, 12, 2, 0, 252, 243, 255, 14, 30, 20, 251, 218, 219, 246, 251, 16, 21, 20, 253, 0,
-			4, 242, 223, 232, 7, 26, 27, 5, 8, 7, 248, 237, 243, 14, 21, 13, 6, 248, 247, 236, 246, 255, 15, 11, 11, 10, 255, 233, 193, 224,
-			12, 33, 31, 31, 28, 7, 8, 255, 2, 222, 207, 253, 22, 29, 2, 255, 245, 234, 243, 0, 10, 251, 253, 9, 33, 23, 252, 244, 246, 0,
-			2, 5, 12, 5, 246, 243, 252, 254, 0, 1, 0, 254, 255, 2, 4, 7, 253, 249, 2, 9, 9, 4, 255, 255, 251, 254, 3, 7, 2, 250,
-			250, 2, 2, 247, 251, 3, 3, 1, 4, 2, 4, 0, 0, 3, 2, 0, 0, 1, 0, 250, 254, 0, 7, 2, 252, 1, 3, 1, 252, 252,
-			0, 1, 5, 7, 8, 1, 254, 248, 251, 255, 1, 4, 3, 2, 3, 2, 0, 252, 251, 252, 1, 3, 4, 0, 4, 0, 2, 252, 254, 0,
-			2, 1, 0, 2, 0, 1, 253, 250, 7, 2, 254, 3, 253, 251, 2, 4, 0, 13, 2, 253, 251, 247, 255, 8, 1, 251, 0, 4, 4, 7,
-			254, 0, 0, 254, 249, 254, 0, 3, 14, 8, 252, 253, 253, 246, 251, 252, 255, 11, 16, 8, 0, 244, 252, 0, 3, 4, 4, 4, 255, 251,
-			252, 1, 0, 0, 252, 254, 3, 5, 6, 4, 255, 248, 248, 7, 2, 255, 255, 12, 10, 4, 254, 245, 248, 252, 0, 0, 7, 4, 0, 0,
-			253, 2, 0, 253, 255, 0, 3, 2, 2, 6, 7, 254, 253, 255, 248, 250, 7, 9, 2, 1, 0, 4, 5, 253, 244, 246, 255, 1, 9, 13,
-			0, 255, 255, 0, 254, 250, 0, 7, 6, 2, 0, 1, 1, 254, 246, 245, 2, 15, 11, 255, 249, 249, 5, 3, 255, 254, 253, 0, 8, 2,
-			5, 1, 251, 255, 0, 1, 5, 1, 252, 252, 0, 3, 0, 2, 8, 0, 253, 0, 255, 2, 253, 255, 0, 0, 0, 1, 2, 10, 0, 251,
-			255, 4, 7, 3, 249, 246, 250, 2, 11, 9, 253, 246, 255, 8, 6, 1, 253, 253, 3, 254, 2, 0, 254, 252, 2, 7, 8, 1, 249, 253,
-			0, 0, 0, 3, 6, 0, 254, 255, 1, 1, 0, 254, 250, 254, 5, 10, 9, 0, 246, 252, 2, 5, 5, 255, 255, 0, 251, 255, 5, 255,
-			0, 3, 2, 4, 254, 252, 0, 0, 0, 3, 2, 5, 0, 251, 0, 253, 0, 0, 0, 3, 3, 5, 4, 0, 253, 252, 250, 0, 7, 3,
-			2, 0, 254, 0, 255, 253, 253, 255, 3, 3, 5, 5, 0, 254, 253, 251, 3, 9, 7, 0, 253, 252, 251, 251, 253, 254, 2, 8, 9, 4,
-			2, 254, 252, 254, 255, 2, 5, 5, 0, 255, 250, 253, 2, 2, 1, 1, 0, 3, 1, 0, 253, 251, 254, 1, 5, 5, 0, 249, 254, 3,
-			5, 4, 3, 1, 254, 254, 255, 0, 0, 0, 0, 6, 2, 254, 253, 254, 253, 0, 2, 5, 7, 0, 255, 254, 253, 0, 0, 3, 7, 4,
-			251, 249, 254, 3, 6, 3, 2, 0, 254, 0, 254, 252, 252, 255, 1, 5, 8, 6, 2, 0, 253, 251, 253, 254, 3, 6, 5, 4, 0, 251,
-			253, 255, 252, 0, 1, 2, 5, 2, 1, 0, 254, 0, 0, 2, 0, 254, 0, 0, 0, 255, 5, 5, 2, 0, 253, 0, 0, 254, 254, 0,
-			0, 0, 0, 0, 3, 0, 5, 0, 128, 0, 64, 1, 196, 4, 244, 6, 148, 12, 20, 15, 225, 25, 20, 24, 6, 51, 24, 18, 0, 9,
-			3, 6, 105, 155, 167, 142, 180, 175, 105, 155, 167, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 136, 0, 208, 1, 80, 5, 228, 7, 108, 12, 216, 14, 225, 25, 30, 67, 30, 90,
-			45, 30, 21, 15, 3, 9, 105, 125, 167, 142, 150, 175, 105, 125, 167, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 240, 1, 80, 5, 12, 8, 108, 12, 56, 14, 225, 25,
-			0, 70, 30, 84, 51, 33, 18, 18, 3, 9, 105, 170, 167, 157, 150, 175, 105, 170, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0, 5, 0, 228, 0, 80, 1, 136, 4,
-			164, 6, 168, 12, 236, 14, 200, 25, 20, 31, 18, 39, 27, 15, 0, 6, 6, 6, 150, 252, 157, 160, 150, 175, 150, 252, 157, 44, 45, 70,
-			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 224, 0,
-			32, 2, 0, 5, 68, 7, 128, 12, 76, 14, 200, 25, 30, 77, 15, 87, 66, 36, 15, 18, 6, 6, 150, 167, 157, 160, 150, 175, 150, 167,
-			157, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 232, 0, 168, 2, 0, 5, 252, 8, 128, 12, 36, 14, 200, 25, 0, 56, 45, 60, 60, 27, 27, 21, 3, 6, 150, 167, 207, 255,
-			182, 175, 150, 167, 207, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 0, 0, 4, 0, 5, 0, 232, 0, 136, 1, 196, 4, 164, 6, 184, 12, 220, 15, 124, 21, 20, 31, 30, 36, 24, 15,
-			0, 3, 0, 0, 180, 152, 180, 150, 250, 175, 180, 152, 180, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 0, 1, 248, 1, 160, 5, 52, 8, 184, 12, 200, 15, 124, 21, 20, 61,
-			27, 69, 36, 24, 9, 12, 3, 3, 197, 152, 217, 210, 250, 175, 197, 152, 217, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 0, 1, 72, 2, 4, 6, 132, 8, 184, 12, 90, 14,
-			124, 21, 24, 80, 30, 84, 54, 39, 24, 15, 3, 3, 197, 152, 217, 210, 250, 175, 197, 152, 217, 44, 45, 70, 130, 56, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 120, 2, 121, 6, 64, 9,
-			184, 12, 90, 14, 124, 21, 0, 61, 30, 69, 66, 45, 42, 27, 3, 3, 252, 152, 157, 210, 250, 175, 252, 152, 157, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 3, 0, 5, 0,
-			208, 0, 136, 1, 176, 4, 164, 6, 80, 12, 185, 15, 169, 26, 20, 30, 27, 42, 21, 12, 0, 3, 0, 6, 150, 147, 172, 160, 150, 175,
-			150, 147, 172, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 5, 0, 208, 0, 192, 1, 180, 5, 52, 8, 80, 12, 185, 15, 169, 26, 30, 39, 27, 51, 30, 21, 15, 12, 0, 6, 150, 185,
-			152, 160, 150, 175, 150, 185, 152, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 208, 0, 240, 1, 224, 6, 16, 9, 148, 12, 76, 14, 88, 27, 0, 58, 27, 75, 33, 33, 30, 24,
-			6, 6, 150, 142, 170, 160, 150, 175, 150, 142, 170, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0, 5, 0, 200, 0, 136, 1, 76, 4, 164, 6, 212, 12, 14, 15, 150, 25,
-			19, 27, 39, 27, 18, 12, 0, 3, 6, 3, 150, 155, 195, 137, 255, 252, 150, 155, 195, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 200, 0, 204, 1, 176, 4, 168, 7, 212, 12,
-			14, 15, 150, 25, 30, 71, 39, 72, 51, 21, 15, 12, 6, 6, 150, 155, 195, 137, 255, 252, 150, 155, 195, 44, 45, 70, 130, 56, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 80, 2, 252, 3,
-			76, 9, 88, 12, 196, 14, 150, 25, 0, 78, 40, 78, 52, 23, 20, 20, 5, 5, 150, 155, 162, 185, 217, 210, 150, 155, 162, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0,
-			5, 0, 128, 0, 64, 1, 196, 4, 164, 6, 148, 12, 20, 15, 225, 25, 20, 24, 6, 51, 24, 18, 0, 9, 3, 6, 105, 155, 167, 142,
-			180, 175, 105, 155, 167, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 5, 0, 136, 0, 208, 1, 80, 5, 228, 7, 108, 12, 216, 14, 225, 25, 30, 67, 30, 90, 45, 30, 21, 15, 3, 9,
-			105, 125, 167, 142, 150, 175, 105, 125, 167, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 240, 1, 80, 5, 12, 8, 108, 12, 56, 14, 225, 25, 0, 70, 30, 84, 51, 33,
-			18, 18, 3, 9, 105, 170, 167, 157, 150, 175, 105, 170, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 139, 0, 4, 0, 1, 0, 128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14,
-			96, 27, 50, 59, 34, 66, 80, 45, 47, 36, 16, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 128, 0, 40, 2, 161, 5, 96, 9,
-			188, 12, 116, 14, 96, 27, 50, 81, 40, 76, 93, 52, 55, 42, 15, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 40, 2,
-			161, 5, 96, 9, 188, 12, 116, 14, 96, 27, 40, 69, 37, 71, 86, 48, 51, 39, 14, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14, 96, 27, 0, 46, 31, 58, 70, 39, 35, 32, 16, 9, 167, 150, 135, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 0, 0, 3, 0, 1, 0, 196, 0, 229, 1, 255, 3, 0, 10, 28, 12, 116, 14, 160, 26, 53, 62, 35, 71, 73, 28, 34, 20,
-			9, 8, 162, 120, 132, 120, 120, 120, 162, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0, 208, 0, 229, 1, 123, 3, 220, 10, 204, 11, 141, 14, 0, 26, 75, 64, 38, 81,
-			60, 33, 35, 16, 11, 8, 162, 105, 87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 194, 1, 24, 3, 164, 11, 68, 12, 241, 14, 0, 26,
-			0, 27, 28, 46, 28, 31, 28, 16, 11, 8, 162, 135, 87, 120, 120, 120, 162, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 151, 0, 4, 0, 1, 0, 32, 1, 88, 3, 40, 5,
-			140, 10, 112, 13, 191, 14, 32, 28, 46, 50, 30, 67, 55, 40, 30, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75,
-			130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 32, 1,
-			88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 40, 84, 40, 87, 72, 52, 39, 24, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170,
-			165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 82, 39, 86, 71, 52, 38, 24, 11, 5, 217, 155, 105, 120,
-			120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 50, 30, 67, 55, 40, 30, 19, 9, 4,
-			217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 40,
-			30, 58, 58, 36, 29, 23, 13, 0, 180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14,
-			160, 27, 60, 78, 42, 80, 80, 51, 40, 33, 18, 0, 180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9,
-			248, 12, 141, 14, 160, 27, 40, 55, 35, 67, 67, 43, 33, 27, 15, 0, 180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 186, 0, 146, 2,
-			128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 0, 33, 30, 51, 51, 33, 28, 23, 12, 0, 180, 150, 177, 120, 120, 120, 200, 120, 172, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 200, 0,
-			4, 0, 1, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 45, 39, 28, 52, 57, 51, 36, 22, 7, 5, 193, 135,
-			180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 85, 83, 41, 76, 83, 75, 53, 33,
-			11, 7, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 70, 67, 37, 68,
-			75, 67, 47, 29, 10, 6, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28,
-			0, 31, 25, 46, 50, 45, 32, 20, 6, 4, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 100, 0, 4, 0, 1, 0, 192, 0, 144, 1, 168, 7,
-			40, 10, 92, 13, 120, 15, 96, 25, 50, 51, 30, 72, 58, 50, 42, 30, 12, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 192, 0,
-			152, 1, 148, 7, 40, 10, 92, 13, 120, 15, 96, 25, 60, 92, 41, 98, 79, 68, 57, 41, 17, 7, 160, 90, 120, 120, 120, 120, 130, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 192, 0, 152, 1, 148, 7, 40, 10, 92, 13, 120, 15, 96, 25, 40, 74, 37, 88, 71, 61, 51, 37, 15, 6, 160, 90, 120, 120,
-			120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 192, 0, 152, 1, 148, 7, 40, 10, 92, 13, 120, 15, 96, 25, 0, 43, 28, 67, 54, 46, 39, 28, 11, 5,
-			160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 149, 0, 4, 0, 1, 0, 176, 0, 152, 1, 128, 7, 0, 10, 92, 13, 20, 15, 96, 25, 50, 53,
-			26, 83, 45, 45, 42, 25, 14, 7, 150, 105, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 192, 0, 152, 1, 128, 7, 20, 10, 92, 13, 120, 15,
-			96, 25, 60, 98, 38, 106, 57, 67, 67, 39, 16, 7, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0, 160, 1, 108, 7, 20, 10,
-			92, 13, 120, 15, 96, 25, 40, 73, 35, 90, 49, 57, 57, 33, 13, 7, 160, 97, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 160, 1,
-			108, 7, 20, 10, 92, 13, 120, 15, 96, 25, 0, 50, 31, 75, 42, 47, 47, 27, 10, 8, 160, 105, 120, 120, 120, 120, 130, 60, 120, 44,
-			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0,
-			4, 0, 1, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 45, 44, 25, 67, 44, 47, 45, 28, 11, 5, 160, 91,
-			120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 70, 88, 36, 95, 63, 66, 64, 39,
-			16, 7, 160, 91, 120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 60, 70, 32, 85,
-			56, 59, 58, 35, 14, 6, 160, 91, 120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25,
-			0, 35, 22, 60, 39, 42, 41, 25, 10, 4, 160, 91, 120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 232, 0, 218, 2, 222, 3,
-			60, 10, 224, 11, 222, 13, 160, 28, 50, 64, 34, 59, 74, 34, 35, 24, 9, 7, 230, 150, 120, 120, 120, 120, 185, 105, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 232, 0,
-			158, 2, 178, 3, 60, 10, 224, 11, 222, 13, 32, 28, 60, 103, 27, 76, 97, 40, 40, 26, 14, 6, 182, 150, 120, 120, 120, 120, 182, 105,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 232, 0, 158, 2, 178, 3, 60, 10, 224, 11, 222, 13, 32, 28, 40, 102, 27, 76, 97, 39, 40, 26, 14, 6, 182, 150, 120, 120,
-			120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 228, 0, 118, 2, 134, 3, 140, 10, 224, 11, 66, 14, 32, 28, 0, 56, 31, 52, 75, 41, 39, 25, 13, 9,
-			177, 150, 120, 120, 120, 120, 177, 75, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 4, 0, 1, 0, 216, 0, 142, 2, 250, 4, 26, 10, 32, 13, 20, 15, 210, 27, 45, 45,
-			30, 55, 66, 39, 38, 24, 13, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 216, 0, 142, 2, 250, 4, 26, 10, 12, 13, 20, 15,
-			210, 27, 80, 86, 39, 78, 90, 51, 50, 31, 18, 7, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 142, 2, 250, 4, 26, 10,
-			32, 13, 20, 15, 210, 27, 60, 75, 37, 73, 84, 47, 47, 29, 16, 6, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 216, 0, 142, 2,
-			250, 4, 26, 10, 32, 13, 20, 15, 210, 27, 0, 39, 28, 51, 61, 36, 36, 22, 12, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 140, 0,
-			4, 0, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 50, 57, 28, 61, 63, 40, 32, 25, 18, 7, 162, 135,
-			150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 50, 83, 38, 71, 75, 52, 42, 33,
-			24, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 40, 69, 35, 65,
-			68, 47, 39, 30, 22, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26,
-			0, 47, 26, 56, 57, 37, 29, 23, 16, 7, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 244, 0, 77, 3, 87, 4,
-			160, 10, 148, 12, 41, 14, 96, 27, 50, 59, 26, 60, 76, 28, 19, 17, 5, 7, 225, 195, 120, 120, 120, 120, 165, 105, 120, 44, 45, 70,
-			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 244, 0,
-			7, 3, 43, 4, 240, 10, 148, 12, 41, 14, 96, 27, 45, 107, 29, 67, 105, 48, 41, 41, 13, 6, 200, 165, 135, 120, 120, 120, 200, 120,
-			135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 0, 1, 27, 3, 255, 3, 64, 11, 228, 12, 41, 14, 224, 27, 59, 101, 33, 69, 92, 41, 45, 45, 11, 6, 200, 135, 150, 120,
-			120, 120, 200, 75, 210, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 228, 0, 7, 3, 10, 4, 240, 10, 52, 13, 41, 14, 224, 27, 58, 94, 32, 72, 86, 48, 50, 47, 11, 6,
-			200, 135, 150, 120, 120, 120, 200, 90, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 228, 0, 243, 2, 255, 3, 160, 10, 148, 12, 41, 14, 224, 27, 38, 63, 32, 63, 82, 35,
-			38, 36, 13, 7, 167, 135, 120, 120, 120, 120, 167, 75, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 164, 0, 27, 3, 98, 4, 20, 10, 148, 12, 41, 14, 224, 27, 0, 39,
-			23, 59, 58, 28, 24, 24, 7, 7, 167, 120, 120, 120, 120, 120, 227, 105, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 140, 0, 244, 1, 172, 5, 36, 9,
-			248, 12, 41, 14, 32, 27, 45, 48, 30, 63, 56, 56, 40, 40, 15, 8, 167, 135, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 140, 0, 224, 1,
-			128, 5, 16, 9, 148, 12, 41, 14, 32, 27, 48, 69, 26, 68, 82, 75, 61, 50, 25, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			172, 0, 224, 1, 128, 5, 16, 9, 168, 12, 41, 14, 160, 27, 41, 75, 33, 70, 90, 74, 60, 53, 17, 8, 170, 120, 150, 120, 120, 120,
-			170, 120, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 204, 0, 249, 1, 139, 5, 16, 9, 168, 12, 41, 14, 160, 27, 78, 53, 34, 68, 67, 54, 45, 35, 15, 8, 170, 120,
-			150, 120, 120, 120, 140, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 204, 0, 33, 2, 139, 5, 16, 9, 168, 12, 141, 14, 160, 27, 0, 35, 31, 52, 54, 52, 38, 30,
-			11, 8, 170, 135, 150, 120, 120, 120, 140, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 76, 0, 4, 0, 45, 0, 40, 0, 112, 1, 68, 3, 36, 9, 28, 12, 216, 14, 32, 28,
-			0, 45, 19, 77, 28, 16, 16, 12, 8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 37, 0, 40, 0, 112, 1, 68, 3, 36, 9, 28, 12,
-			216, 14, 32, 28, 40, 45, 19, 77, 28, 16, 16, 12, 8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 37, 0, 72, 0, 104, 1, 153, 4,
-			36, 9, 148, 12, 166, 14, 192, 27, 36, 46, 16, 80, 33, 22, 26, 17, 13, 0, 120, 90, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70,
-			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 40, 0,
-			79, 1, 221, 7, 96, 9, 208, 12, 116, 14, 192, 27, 0, 90, 9, 86, 74, 89, 97, 58, 13, 0, 120, 120, 120, 120, 120, 120, 120, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			0, 0, 5, 0, 33, 0, 152, 0, 48, 1, 174, 8, 200, 10, 92, 13, 135, 15, 160, 26, 52, 58, 8, 76, 67, 65, 53, 30, 14, 8,
-			180, 120, 120, 120, 120, 120, 180, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 40, 1, 172, 8, 4, 11, 92, 13, 135, 15, 160, 26, 75, 69, 8, 83, 73, 74,
-			75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 39, 1, 229, 8, 4, 11, 12, 13, 216, 14, 64, 26, 40, 43,
-			8, 60, 60, 63, 63, 34, 11, 8, 167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 125, 0, 0, 1, 56, 9, 4, 11, 20, 13, 0, 15,
-			64, 26, 40, 33, 8, 52, 52, 53, 54, 29, 11, 8, 167, 99, 114, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 84, 0, 216, 0, 96, 9, 4, 11,
-			32, 13, 60, 15, 64, 26, 0, 20, 8, 40, 41, 39, 40, 23, 10, 8, 167, 90, 105, 120, 120, 120, 167, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0,
-			152, 0, 209, 1, 112, 3, 80, 10, 104, 11, 141, 14, 192, 27, 43, 48, 27, 57, 61, 29, 29, 16, 12, 6, 162, 135, 165, 120, 120, 120,
-			117, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 168, 0, 209, 1, 68, 3, 80, 10, 104, 11, 141, 14, 32, 27, 93, 92, 29, 72, 80, 48, 44, 26, 16, 6, 165, 135,
-			150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 209, 1, 13, 3, 120, 10, 104, 11, 141, 14, 160, 27, 42, 77, 32, 74, 65, 49, 43, 25,
-			18, 7, 167, 135, 120, 120, 120, 120, 122, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 13, 2, 57, 3, 120, 10, 104, 11, 141, 14, 160, 27, 77, 39, 27, 46,
-			51, 38, 36, 14, 10, 7, 167, 135, 135, 120, 120, 120, 137, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 232, 0, 18, 2, 233, 3, 60, 10, 8, 12, 141, 14, 160, 27,
-			0, 26, 30, 41, 48, 23, 20, 17, 8, 7, 167, 120, 135, 120, 120, 120, 137, 105, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6,
-			212, 8, 148, 12, 41, 14, 64, 26, 42, 48, 17, 72, 53, 40, 40, 37, 11, 0, 120, 150, 135, 120, 120, 120, 60, 135, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0,
-			128, 1, 0, 5, 232, 8, 48, 12, 136, 14, 192, 25, 40, 67, 19, 79, 82, 64, 53, 45, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 184, 0, 152, 1, 232, 3, 96, 9, 28, 12, 236, 14, 128, 26, 50, 62, 26, 66, 68, 45, 37, 28, 21, 6, 162, 135, 150, 120,
-			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 84, 0, 88, 1, 212, 3, 196, 9, 148, 12, 196, 14, 192, 25, 67, 56, 16, 83, 38, 36, 30, 29, 13, 0,
-			120, 145, 135, 120, 120, 120, 60, 100, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 27, 16, 57, 35, 17,
-			20, 20, 10, 0, 120, 135, 135, 120, 120, 120, 60, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6, 212, 8, 148, 12, 41, 14,
-			64, 26, 42, 43, 17, 65, 54, 40, 34, 31, 11, 7, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0, 104, 1, 26, 6, 212, 8,
-			148, 12, 116, 14, 192, 25, 40, 71, 19, 81, 83, 74, 54, 46, 18, 7, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 88, 0, 104, 1,
-			48, 6, 172, 8, 148, 12, 116, 14, 192, 25, 50, 73, 19, 91, 65, 65, 53, 46, 20, 7, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			84, 0, 64, 1, 106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 67, 30, 11, 58, 41, 36, 31, 23, 13, 7, 165, 135, 135, 120, 120, 120,
-			105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 28, 16, 54, 35, 17, 20, 20, 9, 7, 165, 135,
-			135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 236, 0, 82, 3, 84, 5, 116, 9, 88, 12, 116, 14, 224, 27, 50, 57, 28, 58,
-			75, 41, 43, 27, 10, 8, 250, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 236, 0, 62, 3, 84, 5, 136, 9, 88, 12, 116, 14, 224, 27,
-			66, 104, 30, 81, 98, 53, 57, 36, 12, 6, 225, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 220, 0, 42, 3, 252, 4, 36, 9, 128, 12,
-			41, 14, 224, 27, 41, 69, 27, 59, 81, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 0, 1, 173, 2, 87, 4,
-			16, 9, 48, 12, 41, 14, 128, 27, 40, 60, 28, 49, 77, 34, 51, 36, 15, 6, 237, 207, 192, 120, 120, 120, 141, 120, 147, 44, 45, 70,
-			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 0, 1,
-			234, 1, 189, 3, 16, 9, 8, 12, 41, 14, 96, 27, 40, 62, 36, 68, 59, 21, 35, 23, 15, 8, 205, 90, 180, 120, 120, 120, 145, 120,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 172, 0, 232, 1, 132, 3, 192, 8, 168, 12, 60, 15, 96, 27, 0, 29, 25, 50, 42, 16, 18, 13, 11, 9, 200, 90, 120, 120,
-			120, 120, 200, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182,
-			0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 232, 0, 38, 2, 117, 5, 116, 9, 108, 12, 10, 15, 96, 28, 46, 56, 40, 60, 61, 44,
-			32, 36, 20, 8, 167, 120, 165, 120, 120, 120, 227, 150, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 118, 2, 73, 5, 36, 9, 28, 12, 166, 14, 96, 28, 25, 107,
-			47, 85, 109, 75, 55, 45, 19, 8, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0, 118, 2, 73, 5, 212, 8, 28, 12, 141, 14,
-			96, 28, 43, 79, 36, 73, 95, 72, 54, 42, 18, 7, 170, 120, 165, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 8, 1, 18, 2, 117, 5, 132, 8,
-			204, 11, 166, 14, 96, 28, 48, 53, 24, 70, 70, 36, 32, 26, 15, 8, 165, 120, 135, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 5, 0, 192, 0, 174, 1,
-			197, 4, 172, 8, 204, 11, 141, 14, 224, 28, 46, 40, 28, 64, 39, 27, 18, 16, 8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			176, 0, 134, 1, 189, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 24, 58, 38, 22, 15, 12, 9, 8, 152, 120, 75, 120, 120, 120,
-			107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250,
-			0, 0, 226, 0, 7, 0, 5, 0, 44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 51, 47, 28, 58, 63, 37, 40, 27,
-			4, 4, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 70, 100, 41, 85,
-			92, 54, 58, 39, 9, 7, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 44, 1, 120, 3, 216, 4, 200, 10, 72, 13, 191, 14, 64, 27,
-			15, 92, 39, 80, 87, 51, 55, 37, 8, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 33, 0, 20, 1, 80, 3, 29, 5, 216, 9, 72, 13,
-			136, 14, 64, 27, 23, 59, 29, 68, 71, 53, 51, 35, 8, 6, 167, 172, 120, 120, 120, 120, 167, 172, 165, 44, 45, 70, 130, 55, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 216, 0, 16, 3, 4, 6,
-			196, 9, 52, 13, 176, 14, 64, 27, 33, 43, 32, 66, 56, 47, 43, 39, 8, 7, 167, 150, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0,
-			232, 1, 188, 7, 40, 10, 92, 13, 120, 15, 64, 27, 34, 35, 37, 54, 51, 51, 39, 38, 13, 9, 167, 90, 180, 120, 120, 120, 137, 75,
-			150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			1, 0, 196, 0, 159, 1, 252, 7, 40, 10, 112, 13, 120, 15, 220, 27, 0, 37, 39, 55, 48, 48, 39, 32, 11, 10, 167, 90, 114, 120,
-			120, 120, 122, 75, 90, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182,
-			76, 250, 23, 8, 0, 0, 7, 0, 1, 0, 16, 1, 53, 2, 12, 3, 160, 10, 244, 11, 35, 15, 96, 28, 24, 63, 33, 62, 70, 43,
-			37, 17, 11, 7, 167, 120, 90, 120, 120, 120, 167, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 0, 1, 33, 2, 12, 3, 160, 10, 244, 11, 35, 15, 224, 27, 49, 112,
-			43, 87, 92, 61, 53, 26, 15, 6, 165, 120, 90, 120, 120, 120, 165, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 33, 2, 72, 3, 40, 10, 244, 11, 35, 15,
-			224, 27, 65, 92, 39, 81, 98, 49, 57, 29, 17, 7, 170, 120, 90, 120, 120, 120, 170, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 37, 0, 184, 0, 209, 1, 106, 5, 172, 8,
-			108, 12, 216, 14, 64, 27, 22, 48, 36, 68, 39, 59, 38, 22, 15, 7, 167, 100, 152, 120, 120, 120, 137, 115, 167, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 208, 0, 149, 1,
-			246, 6, 172, 8, 188, 12, 236, 14, 64, 27, 48, 43, 32, 56, 36, 59, 35, 22, 13, 7, 155, 105, 150, 120, 120, 120, 125, 150, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			160, 0, 54, 1, 199, 7, 136, 9, 112, 13, 60, 15, 64, 27, 26, 35, 25, 53, 36, 30, 41, 27, 16, 7, 155, 105, 135, 120, 120, 120,
-			125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250,
-			0, 0, 1, 0, 160, 0, 54, 1, 210, 7, 196, 9, 92, 13, 60, 15, 64, 28, 0, 24, 27, 45, 27, 20, 32, 21, 12, 7, 157, 105,
-			135, 120, 120, 120, 82, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244,
-			194, 182, 76, 250, 23, 8, 0, 0, 6, 0, 1, 0, 96, 0, 104, 1, 92, 8, 80, 10, 232, 13, 60, 15, 160, 27, 42, 48, 10, 66,
-			51, 58, 42, 33, 10, 8, 155, 165, 150, 120, 120, 120, 155, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 104, 0, 112, 1, 108, 8, 160, 10, 72, 13, 60, 15, 32, 27,
-			70, 59, 19, 64, 74, 76, 66, 36, 14, 8, 150, 120, 150, 120, 120, 120, 150, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 104, 0, 119, 1, 52, 8, 160, 10, 72, 13,
-			60, 15, 32, 27, 40, 52, 18, 61, 70, 72, 63, 34, 14, 7, 150, 120, 150, 120, 120, 120, 150, 120, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 239, 1, 111, 7,
-			196, 9, 112, 13, 60, 15, 64, 27, 44, 52, 30, 75, 59, 58, 44, 30, 14, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 5, 0, 152, 0,
-			16, 2, 124, 6, 156, 9, 32, 13, 85, 15, 64, 28, 35, 27, 23, 45, 46, 48, 38, 21, 7, 8, 167, 150, 120, 120, 120, 120, 167, 105,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 200, 0, 16, 2, 59, 6, 156, 9, 112, 13, 29, 16, 192, 28, 0, 25, 26, 43, 39, 39, 31, 17, 5, 9, 167, 150, 120, 120,
-			120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182,
-			0, 250, 0, 0, 190, 0, 5, 0, 1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 40, 30, 52, 60, 40,
-			33, 28, 16, 6, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 71,
-			40, 70, 80, 54, 44, 38, 22, 8, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 16, 2, 220, 4, 106, 9, 146, 12, 144, 14,
-			87, 27, 40, 57, 35, 64, 74, 48, 41, 35, 19, 8, 167, 148, 140, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 123, 0, 16, 2, 48, 5, 56, 9,
-			128, 12, 132, 14, 91, 27, 50, 42, 29, 55, 65, 39, 37, 30, 16, 7, 167, 149, 138, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 119, 0, 12, 2,
-			121, 5, 252, 8, 108, 12, 122, 14, 94, 27, 0, 35, 25, 50, 61, 38, 35, 27, 14, 7, 167, 149, 136, 120, 120, 120, 197, 135, 120, 44,
-			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			6, 0, 1, 0, 140, 0, 174, 1, 152, 3, 36, 9, 164, 11, 16, 14, 96, 25, 48, 61, 31, 70, 69, 41, 27, 15, 12, 7, 167, 120,
-			120, 120, 120, 120, 167, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 140, 0, 174, 1, 192, 3, 36, 9, 164, 11, 16, 14, 96, 25, 36, 75, 35, 82, 66, 44, 35, 22,
-			16, 6, 165, 120, 120, 120, 120, 120, 165, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 140, 0, 154, 1, 156, 3, 36, 9, 164, 11, 16, 14, 96, 25, 49, 76, 34, 76,
-			81, 39, 33, 21, 20, 6, 167, 120, 120, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 228, 0, 239, 1, 255, 3, 252, 8, 184, 11, 16, 14, 192, 25,
-			49, 60, 31, 62, 76, 40, 30, 20, 18, 7, 167, 111, 135, 120, 120, 120, 191, 129, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 186, 0, 14, 2, 137, 4, 252, 8, 8, 12,
-			41, 14, 112, 26, 47, 35, 26, 49, 62, 35, 28, 19, 13, 6, 167, 115, 131, 120, 120, 120, 191, 129, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 144, 0, 46, 2, 20, 5,
-			252, 8, 88, 12, 66, 14, 32, 27, 0, 29, 25, 45, 57, 36, 31, 23, 11, 7, 167, 120, 127, 120, 120, 120, 255, 105, 90, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 7, 0,
-			5, 0, 44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 45, 47, 28, 58, 63, 37, 40, 27, 6, 4, 167, 165, 165, 120,
-			120, 120, 167, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 40, 107, 42, 88, 95, 55, 60, 40, 9, 7,
-			167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 80, 1, 132, 3, 161, 5, 36, 9, 112, 13, 241, 14, 64, 27, 31, 71, 36, 76, 95, 55,
-			45, 28, 10, 7, 240, 165, 120, 120, 120, 120, 195, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 32, 1, 248, 2, 191, 6, 36, 9, 192, 13, 241, 14, 64, 27, 25, 41,
-			32, 47, 53, 53, 50, 47, 11, 7, 255, 180, 180, 120, 120, 120, 200, 195, 180, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 224, 0, 224, 1, 45, 7, 136, 9, 112, 13, 241, 14,
-			64, 27, 27, 42, 34, 43, 61, 61, 51, 50, 12, 8, 255, 105, 180, 120, 120, 120, 165, 120, 135, 44, 45, 70, 130, 58, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 224, 0, 8, 2, 23, 7, 176, 9,
-			112, 13, 241, 14, 64, 27, 52, 37, 28, 51, 56, 56, 49, 43, 8, 8, 255, 90, 180, 120, 120, 120, 187, 105, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 208, 0, 128, 2,
-			238, 5, 96, 9, 52, 13, 216, 14, 64, 27, 0, 21, 20, 40, 48, 36, 32, 28, 7, 8, 252, 90, 165, 120, 120, 120, 252, 105, 120, 44,
-			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0,
-			6, 0, 1, 0, 0, 1, 136, 3, 200, 5, 110, 10, 154, 13, 40, 15, 67, 27, 45, 46, 28, 60, 58, 41, 34, 27, 9, 4, 228, 152,
-			186, 132, 120, 120, 255, 174, 173, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 0, 1, 136, 3, 200, 5, 110, 10, 154, 13, 40, 15, 67, 27, 29, 90, 39, 85, 81, 57, 48, 38,
-			12, 5, 228, 152, 186, 132, 120, 120, 255, 174, 173, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 8, 1, 136, 3, 62, 5, 20, 10, 188, 12, 166, 14, 32, 27, 39, 88, 33, 76,
-			89, 68, 56, 46, 13, 6, 185, 180, 165, 120, 120, 120, 245, 135, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 5, 0, 8, 1, 178, 2, 32, 4, 116, 9, 8, 12, 166, 14, 64, 27,
-			42, 90, 37, 64, 99, 52, 43, 35, 14, 7, 185, 135, 150, 120, 120, 120, 194, 105, 111, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 200, 0, 33, 2, 178, 3, 36, 9, 8, 12,
-			216, 14, 160, 27, 84, 49, 27, 58, 75, 37, 32, 23, 12, 8, 177, 120, 120, 120, 120, 120, 147, 105, 105, 44, 45, 70, 130, 57, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 193, 2, 64, 5,
-			16, 9, 128, 12, 241, 14, 32, 28, 0, 28, 28, 44, 60, 36, 32, 26, 8, 8, 185, 150, 120, 120, 120, 120, 155, 150, 105, 44, 45, 70,
-			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 140, 0, 5, 0,
-			1, 0, 192, 0, 32, 2, 60, 5, 156, 9, 92, 13, 52, 18, 0, 28, 45, 54, 25, 63, 72, 40, 34, 17, 14, 6, 170, 165, 135, 120,
-			120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 192, 0, 32, 2, 60, 5, 156, 9, 92, 13, 52, 18, 0, 28, 50, 96, 34, 84, 96, 53, 45, 22, 19, 8,
-			170, 165, 135, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0, 32, 2, 60, 5, 156, 9, 92, 13, 52, 18, 0, 28, 60, 87, 32, 80, 91, 50,
-			43, 21, 18, 7, 170, 165, 135, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 201, 0, 104, 2, 166, 4, 146, 9, 240, 10, 127, 18, 0, 28, 35, 29,
-			25, 49, 38, 30, 24, 8, 11, 4, 170, 165, 136, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 201, 0, 104, 2, 166, 4, 146, 9, 240, 10, 127, 18,
-			0, 28, 0, 28, 24, 48, 38, 30, 23, 8, 10, 4, 170, 165, 136, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 135, 0, 5, 0, 1, 0, 216, 0, 136, 2,
-			156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 45, 70, 34, 68, 76, 43, 39, 30, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			216, 0, 136, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 50, 124, 45, 90, 101, 57, 52, 40, 20, 8, 189, 159, 136, 120, 120, 120,
-			237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 216, 0, 136, 2, 176, 4, 35, 10, 227, 12, 20, 15, 214, 27, 55, 111, 43, 86, 96, 54, 49, 38, 19, 8, 189, 159,
-			136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 35, 33, 30, 51, 34, 32, 27, 6,
-			11, 4, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 0, 28, 25, 48,
-			32, 30, 25, 6, 10, 4, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 190, 0, 5, 0, 1, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12,
-			36, 14, 15, 28, 50, 42, 31, 49, 62, 20, 36, 20, 6, 5, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 0, 1, 80, 2, 232, 3,
-			80, 10, 28, 12, 36, 14, 15, 28, 50, 82, 43, 68, 86, 28, 50, 28, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 0, 1,
-			80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 50, 82, 43, 68, 86, 28, 50, 28, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 40, 59, 36, 58, 73, 24, 42, 24, 7, 6, 186, 151, 122, 120,
-			120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 0, 25, 24, 38, 48, 16, 28, 16, 4, 4,
-			186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 190, 0, 5, 0, 1, 0, 228, 0, 28, 2, 128, 3, 72, 10, 190, 11, 15, 14, 216, 27, 50, 57,
-			28, 61, 69, 28, 35, 19, 9, 5, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 228, 0, 28, 2, 128, 3, 72, 10, 190, 11, 15, 14,
-			216, 27, 50, 90, 35, 76, 87, 35, 44, 24, 11, 6, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 0, 1, 0, 2, 132, 3, 64, 10,
-			216, 11, 234, 13, 15, 28, 50, 74, 39, 57, 91, 24, 46, 25, 8, 7, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 0, 1, 0, 2,
-			132, 3, 64, 10, 216, 11, 234, 13, 15, 28, 40, 59, 35, 51, 81, 22, 42, 22, 7, 6, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			8, 1, 0, 2, 132, 3, 60, 10, 224, 11, 222, 13, 32, 28, 0, 20, 27, 31, 51, 12, 23, 14, 4, 4, 180, 75, 120, 120, 120, 120,
-			85, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 140, 0, 3, 0, 1, 0, 112, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27, 50, 48, 30, 59, 72, 40, 42, 32,
-			16, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27, 90, 78, 39, 75,
-			91, 51, 54, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27,
-			0, 46, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 139, 0, 3, 0, 1, 0, 112, 0, 244, 1, 132, 5,
-			36, 9, 188, 12, 116, 14, 96, 27, 50, 56, 31, 63, 76, 38, 46, 34, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0,
-			244, 1, 132, 5, 16, 9, 188, 12, 116, 14, 96, 27, 90, 80, 37, 72, 96, 48, 60, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 116, 0, 244, 1, 132, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 48, 30, 58, 70, 31, 44, 32, 16, 9, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 190, 0, 4, 0, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 50, 45, 30, 56, 65, 54,
-			35, 25, 8, 5, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 90, 86,
-			41, 77, 90, 75, 49, 35, 12, 7, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15,
-			176, 28, 50, 78, 39, 73, 85, 71, 46, 33, 11, 7, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9,
-			172, 13, 154, 15, 176, 28, 0, 35, 26, 50, 57, 48, 31, 22, 7, 4, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 57,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0,
-			148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 45, 48, 27, 72, 52, 48, 45, 29, 11, 5, 160, 92, 120, 143, 120, 120,
-			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 70, 97, 39, 102, 74, 68, 64, 41, 16, 8, 160, 92,
-			120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 60, 87, 37, 97, 70, 64, 61, 39,
-			15, 7, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 0, 38, 24, 64,
-			47, 43, 40, 26, 10, 5, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 200, 0, 4, 0, 1, 0, 158, 0, 118, 1, 192, 8, 44, 11, 132, 13,
-			0, 15, 8, 28, 50, 40, 18, 55, 57, 49, 46, 30, 11, 8, 180, 111, 153, 120, 120, 120, 185, 112, 155, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 158, 0, 118, 1, 192, 8,
-			44, 11, 132, 13, 0, 15, 8, 28, 80, 75, 26, 76, 78, 68, 63, 42, 16, 11, 180, 111, 153, 120, 120, 120, 185, 112, 155, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 158, 0,
-			118, 1, 192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 70, 63, 23, 69, 72, 62, 58, 38, 15, 10, 180, 111, 153, 120, 120, 120, 185, 112,
-			155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 158, 0, 118, 1, 192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 0, 29, 16, 47, 48, 42, 39, 26, 10, 6, 180, 111, 153, 120,
-			120, 120, 185, 112, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 216, 0, 118, 2, 152, 3, 67, 10, 194, 11, 10, 14, 224, 27, 45, 50, 21, 50, 63, 30,
-			30, 18, 11, 4, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 216, 0, 118, 2, 152, 3, 67, 10, 194, 11, 10, 14, 224, 27, 80, 131,
-			34, 80, 103, 49, 49, 30, 18, 7, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 104, 2, 172, 3, 67, 10, 194, 11, 10, 14,
-			224, 27, 70, 105, 32, 74, 95, 46, 45, 28, 16, 7, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 216, 0, 104, 2, 172, 3, 67, 10,
-			194, 11, 10, 14, 224, 27, 0, 44, 20, 47, 62, 29, 28, 17, 10, 4, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0,
-			188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 45, 42, 27, 51, 58, 37, 33, 23, 16, 5, 164, 141, 150, 120, 120, 120,
-			162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 70, 87, 39, 74, 84, 53, 47, 33, 24, 7, 164, 141,
-			150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 60, 70, 35, 66, 75, 48, 42, 30,
-			21, 6, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 0, 37, 25, 48,
-			54, 34, 31, 22, 15, 4, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 5, 0, 1, 0, 248, 1, 97, 3, 7, 5, 60, 10, 72, 13,
-			141, 14, 88, 27, 65, 48, 25, 51, 60, 25, 22, 20, 6, 6, 255, 162, 210, 120, 120, 120, 120, 162, 120, 44, 60, 70, 130, 55, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 104, 1, 136, 3, 219, 4,
-			60, 10, 72, 13, 141, 14, 88, 27, 75, 111, 36, 82, 86, 52, 35, 33, 13, 7, 210, 175, 150, 120, 120, 120, 210, 175, 120, 44, 60, 70,
-			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 104, 1,
-			128, 3, 219, 4, 196, 9, 32, 13, 116, 14, 88, 27, 63, 110, 36, 82, 86, 52, 35, 33, 13, 7, 210, 175, 150, 120, 120, 120, 210, 175,
-			120, 44, 55, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 104, 1, 134, 3, 219, 4, 184, 9, 20, 13, 116, 14, 33, 27, 71, 104, 35, 79, 85, 50, 35, 33, 13, 8, 214, 172, 150, 120,
-			120, 120, 210, 175, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 104, 1, 127, 3, 220, 4, 156, 9, 248, 12, 116, 14, 160, 26, 0, 41, 24, 51, 61, 32, 26, 22, 8, 8,
-			225, 165, 150, 120, 120, 120, 225, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 211, 0, 5, 0, 1, 0, 140, 0, 224, 1, 100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 45, 40,
-			22, 52, 62, 57, 47, 38, 19, 6, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 140, 0, 224, 1, 100, 5, 252, 8, 28, 12, 192, 13,
-			32, 27, 48, 63, 28, 65, 78, 71, 58, 48, 23, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 140, 0, 224, 1, 100, 5, 252, 8,
-			28, 12, 192, 13, 32, 27, 40, 63, 28, 65, 78, 71, 58, 48, 23, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 140, 0, 248, 1,
-			100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 78, 45, 25, 55, 66, 61, 49, 40, 20, 6, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			140, 0, 8, 2, 100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 0, 31, 21, 46, 55, 51, 41, 34, 16, 5, 170, 135, 165, 120, 120, 120,
-			140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 220, 0, 5, 0, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 55, 21, 52, 64, 39, 36, 18,
-			13, 5, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 40, 107, 29, 73,
-			89, 54, 50, 25, 18, 7, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27,
-			90, 103, 34, 73, 85, 51, 41, 24, 18, 7, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11,
-			141, 14, 32, 27, 45, 59, 26, 58, 60, 39, 31, 18, 13, 5, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 168, 0, 0, 2, 92, 3,
-			88, 10, 104, 11, 141, 14, 32, 27, 0, 27, 18, 40, 40, 23, 20, 12, 9, 3, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0,
-			1, 0, 236, 0, 28, 2, 167, 3, 0, 10, 128, 12, 10, 15, 96, 28, 50, 64, 34, 58, 76, 48, 26, 21, 16, 7, 120, 135, 135, 120,
-			120, 120, 135, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 236, 0, 63, 2, 123, 3, 80, 10, 48, 12, 66, 14, 224, 27, 106, 123, 47, 82, 94, 55, 34, 21, 16, 7,
-			120, 135, 135, 120, 120, 120, 135, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 236, 0, 23, 2, 123, 3, 0, 10, 48, 12, 191, 14, 224, 27, 79, 96, 32, 67, 102, 58,
-			35, 28, 18, 7, 120, 135, 105, 120, 120, 120, 135, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 216, 0, 68, 2, 255, 3, 176, 9, 128, 12, 191, 14, 224, 27, 0, 49,
-			27, 52, 77, 41, 28, 24, 9, 7, 120, 135, 135, 120, 120, 120, 135, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 76, 1, 247, 5, 208, 8,
-			132, 12, 116, 14, 192, 25, 42, 48, 16, 69, 62, 55, 44, 40, 14, 6, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0, 76, 1,
-			247, 5, 208, 8, 132, 12, 116, 14, 192, 25, 40, 76, 20, 87, 78, 69, 55, 50, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			84, 0, 64, 1, 106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 50, 75, 16, 93, 59, 53, 45, 43, 19, 11, 165, 135, 135, 120, 120, 120,
-			105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 84, 0, 64, 1, 106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 67, 39, 12, 67, 43, 38, 32, 31, 14, 8, 165, 135,
-			135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 34, 17, 60, 37, 18, 21, 21,
-			10, 8, 165, 135, 135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 220, 0, 148, 2, 4, 6, 56, 9, 84, 11, 16, 14, 192, 28,
-			34, 47, 34, 53, 70, 53, 36, 48, 13, 8, 120, 165, 150, 120, 120, 120, 165, 210, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 220, 0, 148, 2, 26, 6, 56, 9, 124, 11,
-			116, 14, 192, 28, 60, 82, 42, 76, 91, 74, 45, 57, 24, 8, 120, 165, 150, 120, 120, 120, 165, 120, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 220, 0, 224, 1, 4, 6,
-			232, 8, 68, 12, 191, 14, 192, 28, 54, 54, 36, 55, 79, 57, 35, 30, 16, 7, 120, 120, 120, 120, 120, 120, 165, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 220, 0,
-			164, 1, 120, 4, 152, 8, 88, 12, 141, 14, 64, 28, 45, 56, 44, 77, 54, 30, 24, 26, 15, 9, 120, 120, 120, 120, 120, 120, 60, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 140, 0, 84, 1, 222, 3, 56, 9, 188, 12, 141, 14, 192, 27, 0, 21, 28, 46, 37, 15, 7, 9, 9, 8, 120, 105, 90, 120,
-			120, 120, 60, 120, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 44, 1, 120, 3, 80, 5, 60, 10, 112, 13, 191, 14, 64, 27, 41, 30, 24, 49, 53, 37,
-			31, 23, 3, 4, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 44, 1, 92, 3, 80, 5, 100, 10, 112, 13, 191, 14, 64, 27, 77, 90,
-			41, 86, 93, 58, 59, 40, 5, 7, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 44, 1, 136, 3, 140, 5, 20, 10, 152, 13, 191, 14,
-			64, 27, 33, 80, 40, 82, 89, 55, 56, 38, 5, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0,
-			45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 216, 0, 92, 3, 59, 6, 252, 8,
-			192, 13, 241, 14, 160, 28, 31, 63, 32, 65, 87, 53, 49, 32, 7, 7, 120, 75, 195, 120, 120, 120, 255, 180, 135, 44, 45, 70, 130, 56,
-			0, 0, 0, 0, 43, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 240, 0, 203, 2,
-			224, 6, 176, 9, 112, 13, 10, 15, 96, 27, 53, 48, 32, 63, 65, 62, 36, 22, 5, 7, 165, 135, 240, 120, 120, 120, 195, 105, 165, 44,
-			45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			212, 0, 232, 1, 48, 7, 136, 9, 172, 13, 80, 15, 64, 27, 0, 26, 32, 46, 44, 44, 33, 32, 13, 7, 167, 90, 180, 120, 120, 120,
-			137, 75, 150, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250,
-			0, 0, 0, 0, 5, 0, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 44, 45, 28, 57, 65, 54, 36, 26,
-			9, 5, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 77, 83, 39, 77,
-			88, 73, 49, 35, 12, 7, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0, 136, 2, 224, 6, 116, 9, 72, 13, 60, 15, 96, 27,
-			77, 56, 30, 63, 71, 62, 57, 25, 13, 7, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 178, 0, 103, 2, 84, 6, 76, 9, 2, 13,
-			216, 14, 96, 27, 35, 38, 25, 52, 61, 45, 43, 24, 12, 7, 167, 135, 157, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 163, 0, 81, 2, 17, 6,
-			66, 9, 241, 12, 191, 14, 96, 27, 0, 34, 26, 48, 55, 38, 38, 25, 13, 7, 167, 138, 152, 120, 120, 120, 242, 150, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 40, 0, 7, 0,
-			1, 0, 136, 0, 64, 1, 172, 8, 240, 10, 152, 13, 120, 15, 236, 26, 42, 44, 7, 65, 55, 56, 44, 27, 11, 7, 172, 133, 129, 120,
-			120, 120, 180, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 128, 0, 64, 1, 172, 8, 240, 10, 112, 13, 100, 15, 224, 26, 40, 64, 10, 75, 75, 77, 72, 37, 16, 8,
-			158, 112, 135, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 64, 1, 172, 8, 240, 10, 112, 13, 100, 15, 224, 26, 28, 60, 10, 73, 73, 74,
-			70, 36, 16, 8, 158, 112, 135, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 104, 0, 136, 1, 52, 8, 80, 10, 52, 13, 60, 15, 64, 27, 31, 59,
-			17, 81, 60, 61, 57, 31, 12, 8, 160, 90, 150, 120, 120, 120, 160, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 248, 1, 111, 7, 96, 9, 72, 13, 20, 15,
-			64, 27, 34, 53, 30, 75, 59, 58, 44, 30, 14, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 16, 2, 64, 6, 36, 9,
-			238, 12, 90, 15, 128, 28, 45, 26, 24, 44, 48, 48, 31, 19, 6, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 200, 0, 16, 2,
-			240, 5, 56, 9, 248, 12, 160, 15, 192, 28, 0, 22, 25, 41, 37, 37, 24, 16, 5, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 155, 0,
-			4, 0, 1, 0, 142, 0, 224, 1, 180, 5, 110, 8, 88, 12, 110, 14, 38, 27, 45, 41, 25, 56, 62, 50, 43, 35, 16, 6, 170, 135,
-			161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 142, 0, 224, 1, 180, 5, 110, 8, 88, 12, 110, 14, 38, 27, 60, 51, 28, 62, 69, 56, 48, 40,
-			18, 6, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 142, 0, 212, 1, 164, 5, 240, 7, 72, 12, 146, 14, 38, 27, 50, 46, 28, 59,
-			66, 50, 40, 33, 13, 6, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 142, 0, 208, 1, 160, 5, 208, 7, 68, 12, 156, 14, 38, 27,
-			0, 36, 25, 52, 58, 41, 35, 29, 10, 5, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 140, 0, 3, 0, 1, 0, 112, 0, 240, 1, 220, 5,
-			116, 9, 228, 12, 156, 14, 96, 27, 50, 47, 25, 59, 72, 40, 42, 32, 16, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0,
-			240, 1, 220, 5, 116, 9, 228, 12, 156, 14, 96, 27, 90, 77, 34, 75, 91, 51, 54, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 116, 0, 240, 1, 220, 5, 116, 9, 228, 12, 116, 14, 96, 27, 0, 47, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 135, 0, 3, 0, 1, 0, 152, 0, 72, 2, 120, 5, 134, 9, 195, 12, 165, 14, 141, 27, 45, 49, 32, 59, 72, 43,
-			45, 30, 16, 6, 174, 154, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 72, 2, 120, 5, 134, 9, 195, 12, 165, 14, 141, 27, 90, 77,
-			40, 74, 91, 53, 56, 38, 21, 8, 174, 154, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 80, 2, 120, 5, 134, 9, 195, 12, 165, 14,
-			141, 27, 0, 38, 28, 52, 64, 37, 39, 27, 14, 5, 174, 154, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 180, 0, 5, 0, 1, 0, 55, 1, 158, 2,
-			183, 6, 252, 9, 163, 13, 121, 15, 154, 28, 50, 41, 34, 52, 64, 49, 35, 24, 9, 5, 255, 140, 173, 120, 120, 120, 150, 180, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			55, 1, 158, 2, 183, 6, 252, 9, 163, 13, 121, 15, 154, 28, 40, 76, 46, 70, 86, 66, 47, 33, 12, 7, 255, 140, 173, 120, 120, 120,
-			150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 61, 1, 178, 2, 159, 6, 56, 10, 143, 13, 44, 15, 103, 28, 50, 57, 48, 54, 80, 51, 42, 28, 12, 6, 226, 136,
-			157, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 61, 1, 178, 2, 159, 6, 56, 10, 143, 13, 44, 15, 103, 28, 40, 51, 45, 51, 76, 48, 40, 27,
-			11, 6, 226, 136, 157, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 68, 1, 198, 2, 136, 6, 111, 10, 123, 13, 229, 14, 57, 28, 0, 21, 34, 28,
-			51, 26, 26, 17, 7, 4, 195, 132, 142, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 185, 0, 4, 0, 1, 0, 78, 1, 188, 2, 144, 6, 202, 9, 184, 13,
-			183, 15, 10, 29, 45, 40, 38, 49, 58, 48, 37, 28, 10, 6, 255, 151, 208, 120, 120, 120, 135, 180, 182, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 78, 1, 188, 2, 144, 6,
-			202, 9, 184, 13, 183, 15, 10, 29, 80, 60, 47, 60, 71, 58, 45, 34, 12, 8, 255, 151, 208, 120, 120, 120, 135, 180, 182, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 34, 1,
-			166, 2, 48, 6, 186, 9, 152, 13, 191, 15, 176, 28, 60, 49, 39, 56, 67, 51, 41, 31, 12, 8, 255, 157, 191, 120, 120, 120, 135, 180,
-			182, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 236, 0, 140, 2, 208, 5, 166, 9, 112, 13, 200, 15, 64, 28, 0, 42, 33, 53, 64, 43, 38, 29, 12, 9, 233, 165, 170, 120,
-			120, 120, 135, 165, 175, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 50, 47, 31, 57, 61, 56,
-			43, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 80, 80,
-			40, 74, 79, 72, 56, 41, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 211, 0, 64, 2, 144, 6, 20, 10, 117, 13, 160, 15,
-			149, 28, 40, 57, 36, 62, 68, 56, 46, 34, 12, 7, 208, 142, 158, 120, 120, 120, 189, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 215, 0, 96, 2, 64, 6, 20, 10,
-			123, 13, 160, 15, 73, 28, 0, 40, 32, 56, 58, 44, 39, 29, 11, 6, 228, 153, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 190, 0, 4, 0, 1, 0,
-			168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 50, 41, 32, 62, 49, 47, 44, 32, 14, 6, 161, 98, 126, 120, 120, 120,
-			130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 80, 65, 40, 78, 61, 59, 55, 40, 17, 8, 161, 98,
-			126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 60, 55, 37, 71, 56, 54, 51, 37,
-			16, 7, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 0, 31, 28, 54,
-			42, 41, 38, 28, 12, 5, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 190, 0, 4, 0, 1, 0, 168, 0, 192, 1, 124, 6, 224, 9, 12, 13,
-			60, 15, 230, 25, 50, 42, 29, 59, 53, 50, 47, 34, 15, 6, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 192, 1, 124, 6,
-			224, 9, 12, 13, 60, 15, 230, 25, 80, 69, 38, 76, 69, 65, 61, 44, 19, 8, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0,
-			192, 1, 124, 6, 224, 9, 12, 13, 60, 15, 230, 25, 60, 56, 34, 69, 62, 58, 55, 39, 17, 7, 163, 119, 133, 120, 120, 120, 130, 119,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 168, 0, 192, 1, 124, 6, 224, 9, 12, 13, 60, 15, 230, 25, 0, 32, 26, 52, 47, 44, 41, 30, 13, 5, 163, 119, 133, 120,
-			120, 120, 130, 119, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 126, 0, 112, 1, 52, 8, 100, 10, 47, 13, 60, 15, 96, 25, 45, 40, 25, 65, 47, 43,
-			43, 26, 10, 4, 160, 93, 120, 155, 120, 120, 130, 95, 120, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 126, 0, 112, 1, 52, 8, 100, 10, 47, 13, 60, 15, 96, 25, 70, 66,
-			31, 84, 60, 56, 56, 34, 14, 6, 160, 93, 120, 155, 120, 120, 130, 95, 120, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 126, 0, 88, 1, 98, 8, 140, 10, 41, 13, 45, 15,
-			152, 25, 60, 39, 22, 64, 44, 41, 41, 24, 11, 5, 161, 95, 118, 147, 120, 120, 130, 95, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 126, 0, 88, 1, 98, 8, 140, 10,
-			41, 13, 45, 15, 152, 25, 0, 20, 16, 47, 32, 30, 30, 18, 8, 4, 161, 95, 118, 147, 120, 120, 130, 95, 120, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 4, 0, 1, 0,
-			0, 1, 216, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 45, 43, 29, 54, 65, 39, 35, 32, 10, 5, 175, 147, 147, 120, 120, 120,
-			175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 0, 1, 216, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 80, 84, 41, 76, 90, 54, 48, 44, 14, 7, 175, 147,
-			147, 120, 120, 120, 175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 0, 1, 208, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 60, 66, 36, 67, 80, 48, 43, 39,
-			12, 6, 175, 147, 147, 120, 120, 120, 175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 0, 1, 200, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 0, 44, 29, 54,
-			67, 38, 34, 31, 10, 5, 175, 147, 147, 120, 120, 120, 175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 184, 0, 4, 0, 1, 0, 208, 0, 120, 2, 20, 5, 40, 10, 228, 12,
-			0, 15, 210, 27, 45, 46, 30, 53, 70, 42, 39, 25, 14, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 208, 0, 120, 2, 20, 5,
-			40, 10, 228, 12, 0, 15, 210, 27, 80, 85, 41, 72, 95, 57, 53, 34, 19, 7, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 208, 0,
-			114, 2, 36, 5, 40, 10, 228, 12, 0, 15, 210, 27, 60, 68, 35, 64, 85, 51, 47, 30, 17, 6, 185, 160, 141, 120, 120, 120, 235, 150,
-			118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 208, 0, 104, 2, 60, 5, 40, 10, 228, 12, 0, 15, 210, 27, 0, 39, 26, 49, 65, 39, 36, 23, 13, 5, 185, 160, 141, 120,
-			120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 45, 53, 30, 64, 67, 35,
-			37, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 70, 101,
-			41, 88, 92, 48, 52, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14,
-			96, 27, 60, 82, 37, 79, 82, 43, 46, 39, 20, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 240, 1, 16, 4, 0, 10,
-			168, 12, 96, 14, 96, 27, 0, 46, 28, 59, 62, 32, 35, 29, 15, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 240, 0, 6, 0, 1, 0,
-			250, 0, 216, 2, 176, 4, 40, 10, 188, 12, 92, 14, 87, 27, 45, 47, 29, 54, 70, 40, 36, 33, 9, 5, 167, 147, 147, 120, 120, 120,
-			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 250, 0, 216, 2, 176, 4, 40, 10, 188, 12, 92, 14, 87, 27, 85, 95, 41, 77, 100, 57, 51, 47, 13, 8, 167, 147,
-			147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 250, 0, 200, 2, 176, 4, 196, 9, 128, 12, 92, 14, 87, 27, 50, 66, 35, 65, 84, 48, 43, 39,
-			11, 6, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 80, 2, 236, 4, 128, 7, 164, 11, 232, 13, 96, 27, 35, 40, 26, 60,
-			58, 35, 36, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 116, 0, 8, 2, 236, 4, 108, 7, 164, 11, 232, 13, 96, 27,
-			25, 34, 23, 54, 52, 31, 32, 25, 12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 8, 2, 236, 4, 108, 7, 164, 11,
-			232, 13, 96, 27, 0, 27, 20, 48, 46, 28, 28, 22, 11, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 185, 0, 5, 0, 1, 0, 140, 0,
-			224, 1, 128, 5, 16, 9, 148, 12, 41, 14, 32, 27, 45, 44, 22, 54, 66, 60, 49, 40, 20, 6, 170, 135, 165, 120, 120, 120, 140, 120,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 140, 0, 224, 1, 128, 5, 16, 9, 148, 12, 41, 14, 32, 27, 40, 61, 24, 64, 77, 71, 57, 47, 23, 7, 170, 135, 165, 120,
-			120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 141, 0, 218, 1, 146, 5, 128, 8, 118, 12, 78, 14, 35, 27, 50, 48, 24, 59, 69, 58, 47, 38, 17, 6,
-			170, 135, 163, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 142, 0, 212, 1, 164, 5, 240, 7, 88, 12, 116, 14, 38, 27, 50, 43, 25, 58, 64, 49,
-			39, 33, 12, 6, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 142, 0, 208, 1, 160, 5, 208, 7, 88, 12, 136, 14, 38, 27, 0, 38,
-			24, 54, 60, 42, 36, 30, 10, 6, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 210, 0, 5, 0, 1, 0, 232, 0, 100, 2, 232, 3, 40, 10,
-			224, 11, 222, 13, 32, 28, 40, 51, 23, 55, 71, 34, 35, 23, 12, 5, 182, 127, 125, 120, 120, 120, 182, 127, 125, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 232, 0, 100, 2,
-			232, 3, 40, 10, 224, 11, 222, 13, 32, 28, 50, 93, 31, 75, 97, 47, 47, 31, 17, 7, 182, 127, 125, 120, 120, 120, 182, 127, 125, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			232, 0, 96, 2, 232, 3, 20, 10, 224, 11, 222, 13, 32, 28, 80, 72, 29, 68, 84, 42, 43, 28, 15, 6, 182, 127, 125, 120, 120, 120,
-			182, 127, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 116, 0, 0, 2, 176, 4, 8, 7, 144, 11, 172, 13, 96, 27, 40, 42, 26, 59, 59, 35, 36, 28, 14, 8, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 116, 0, 0, 2, 176, 4, 8, 7, 144, 11, 172, 13, 96, 27, 0, 35, 24, 54, 54, 32, 33, 25,
-			12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 165, 0, 4, 0, 1, 0, 232, 0, 200, 2, 232, 3, 60, 10, 224, 11, 222, 13, 160, 28,
-			45, 58, 33, 56, 73, 34, 35, 23, 9, 8, 230, 150, 120, 120, 120, 120, 185, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 232, 0, 144, 2, 232, 3, 60, 10, 224, 11,
-			222, 13, 32, 28, 80, 94, 29, 78, 98, 44, 45, 29, 16, 7, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 232, 0, 144, 2, 232, 3,
-			60, 10, 224, 11, 222, 13, 32, 28, 40, 75, 28, 73, 83, 42, 42, 28, 15, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 228, 0,
-			118, 2, 192, 3, 140, 10, 224, 11, 66, 14, 32, 28, 0, 45, 29, 49, 70, 38, 37, 23, 12, 9, 177, 150, 120, 120, 120, 120, 177, 75,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			220, 0, 5, 0, 1, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 45, 50, 23, 51, 59, 38, 35, 17, 13, 5,
-			165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 55, 96, 32, 72, 82, 53,
-			48, 24, 18, 7, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 75, 78,
-			29, 64, 74, 48, 44, 22, 16, 6, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 8, 2, 136, 4, 108, 7, 144, 11, 116, 14,
-			96, 27, 45, 35, 24, 54, 54, 32, 33, 25, 12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 116, 0, 8, 2, 136, 4, 108, 7,
-			124, 11, 212, 13, 96, 27, 0, 31, 22, 50, 50, 30, 31, 24, 12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 185, 0, 4, 0, 1, 0,
-			228, 0, 145, 2, 76, 4, 143, 10, 188, 12, 99, 14, 87, 27, 45, 46, 26, 53, 66, 37, 34, 31, 11, 5, 167, 143, 143, 120, 120, 120,
-			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 228, 0, 145, 2, 76, 4, 143, 10, 188, 12, 99, 14, 87, 27, 60, 89, 36, 74, 92, 52, 48, 43, 15, 7, 167, 143,
-			143, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 228, 0, 145, 2, 96, 4, 143, 10, 188, 12, 99, 14, 87, 27, 80, 77, 34, 70, 87, 49, 45, 40,
-			14, 7, 167, 143, 143, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 228, 0, 145, 2, 96, 4, 143, 10, 188, 12, 99, 14, 87, 27, 0, 44, 25, 53,
-			65, 37, 34, 30, 10, 5, 167, 143, 143, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 96, 1, 180, 5, 212, 8, 148, 12,
-			41, 14, 64, 26, 42, 46, 16, 68, 54, 38, 38, 35, 11, 7, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0, 96, 1, 140, 5,
-			212, 8, 148, 12, 116, 14, 192, 25, 40, 71, 20, 82, 78, 69, 54, 50, 17, 7, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 88, 0,
-			96, 1, 120, 5, 172, 8, 148, 12, 116, 14, 192, 25, 50, 67, 21, 84, 64, 66, 50, 47, 19, 7, 167, 120, 135, 120, 120, 120, 107, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 98, 0, 80, 1, 236, 4, 179, 8, 86, 12, 118, 14, 218, 25, 67, 47, 15, 71, 56, 50, 40, 37, 15, 7, 166, 127, 128, 120,
-			120, 120, 107, 90, 128, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 109, 0, 64, 1, 96, 4, 187, 8, 23, 12, 121, 14, 244, 25, 0, 28, 8, 51, 43, 31, 28, 25, 11, 6,
-			165, 135, 138, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 210, 0, 5, 0, 1, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 45, 46,
-			31, 58, 62, 38, 39, 24, 12, 5, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15,
-			238, 27, 80, 88, 43, 81, 86, 54, 54, 34, 18, 7, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 234, 2, 20, 5, 80, 10,
-			248, 12, 140, 15, 220, 27, 45, 70, 38, 71, 76, 47, 47, 29, 16, 6, 184, 154, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 185, 0, 64, 2,
-			16, 4, 68, 10, 8, 12, 20, 15, 89, 27, 40, 35, 22, 45, 48, 29, 25, 16, 10, 4, 172, 140, 148, 120, 120, 120, 237, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			168, 0, 240, 1, 132, 3, 60, 10, 144, 11, 176, 14, 32, 27, 0, 33, 21, 45, 47, 28, 23, 14, 10, 4, 167, 135, 150, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 45, 0, 5, 0, 1, 0, 169, 0, 37, 2, 92, 4, 76, 9, 72, 13, 64, 16, 98, 27, 45, 34, 28, 49, 54, 38, 33, 24,
-			14, 5, 167, 141, 152, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 169, 0, 37, 2, 92, 4, 76, 9, 72, 13, 64, 16, 98, 27, 80, 60, 37, 64,
-			72, 50, 44, 32, 19, 7, 167, 141, 152, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 160, 0, 8, 2, 212, 3, 36, 9, 32, 13, 64, 16, 71, 27,
-			50, 60, 30, 61, 71, 48, 45, 25, 17, 6, 167, 144, 151, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 178, 0, 162, 1, 77, 3, 116, 9, 7, 13,
-			160, 15, 178, 26, 40, 36, 21, 45, 48, 32, 27, 19, 13, 6, 163, 137, 150, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 128, 1, 32, 3,
-			156, 9, 12, 13, 160, 15, 128, 26, 0, 29, 19, 41, 41, 27, 22, 17, 12, 5, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 205, 0, 6, 0,
-			5, 0, 28, 1, 28, 3, 236, 4, 50, 10, 112, 13, 254, 14, 176, 27, 45, 51, 30, 69, 65, 42, 35, 25, 7, 5, 192, 145, 135, 120,
-			120, 120, 167, 135, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 28, 1, 28, 3, 236, 4, 50, 10, 112, 13, 254, 14, 176, 27, 80, 96, 41, 94, 89, 58, 48, 34, 9, 7,
-			192, 145, 135, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 11, 1, 15, 3, 36, 5, 28, 10, 104, 13, 254, 14, 154, 27, 40, 71, 37, 82, 76, 51,
-			44, 33, 8, 6, 187, 148, 144, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 196, 0, 216, 2, 4, 6, 196, 9, 72, 13, 0, 15, 64, 27, 40, 47,
-			35, 66, 56, 47, 47, 43, 8, 7, 167, 162, 180, 120, 120, 120, 167, 132, 135, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 205, 0, 48, 2, 28, 7, 196, 9, 72, 13, 0, 15,
-			63, 27, 40, 38, 32, 56, 51, 47, 43, 41, 12, 8, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 58, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 205, 0, 48, 2, 28, 7, 196, 9,
-			72, 13, 0, 15, 63, 27, 0, 35, 30, 53, 48, 45, 41, 39, 11, 7, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 58,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 230, 0, 5, 0, 1, 0,
-			0, 1, 24, 2, 8, 7, 236, 9, 104, 13, 15, 15, 224, 28, 45, 30, 25, 47, 53, 44, 37, 27, 9, 6, 216, 138, 159, 120, 120, 120,
-			107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 0, 1, 24, 2, 8, 7, 236, 9, 104, 13, 15, 15, 224, 28, 90, 67, 38, 70, 80, 66, 56, 41, 13, 9, 216, 138,
-			159, 120, 120, 120, 107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 232, 1, 108, 7, 40, 10, 163, 13, 57, 15, 148, 28, 55, 56, 37, 67, 69, 62, 51, 39,
-			12, 9, 197, 114, 149, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 40, 30, 27, 50,
-			48, 46, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28,
-			0, 27, 26, 47, 45, 44, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 165, 0, 5, 0, 1, 0, 179, 0, 40, 2, 172, 3,
-			96, 10, 15, 12, 141, 14, 32, 27, 45, 47, 26, 53, 60, 38, 37, 17, 13, 5, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 179, 0,
-			40, 2, 172, 3, 96, 10, 15, 12, 141, 14, 32, 27, 75, 97, 37, 76, 86, 54, 53, 25, 18, 7, 166, 135, 150, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 179, 0, 27, 2, 0, 4, 91, 10, 35, 12, 144, 14, 18, 27, 50, 68, 33, 68, 75, 49, 48, 24, 16, 7, 165, 134, 149, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 180, 0, 158, 1, 244, 6, 38, 10, 218, 12, 175, 14, 141, 26, 45, 32, 22, 50, 42, 40, 36, 27, 10, 5,
-			161, 128, 142, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 181, 0, 144, 1, 13, 7, 32, 10, 239, 12, 179, 14, 126, 26, 0, 24, 20, 46, 38, 37,
-			34, 26, 9, 4, 160, 127, 142, 120, 120, 120, 130, 87, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 230, 0, 6, 0, 1, 0, 14, 1, 24, 2, 240, 6, 236, 9, 112, 13, 80, 15,
+			0, 0, 0, 0, 0, 0, 253, 4, 19, 0, 13, 13, 5, 6, 19, 14, 14, 11, 10, 6, 249, 248, 0, 254, 11, 6, 6, 4, 3, 211,
+			167, 140, 139, 164, 184, 212, 239, 17, 19, 2, 249, 9, 15, 12, 13, 20, 26, 27, 27, 23, 9, 1, 246, 243, 2, 22, 44, 52, 55, 53,
+			50, 50, 51, 58, 57, 53, 50, 45, 24, 10, 0, 246, 1, 4, 7, 255, 213, 209, 197, 175, 173, 188, 217, 225, 220, 239, 239, 223, 222, 229,
+			234, 245, 247, 251, 0, 0, 3, 3, 4, 5, 1, 0, 0, 1, 7, 9, 7, 11, 16, 18, 17, 22, 26, 26, 29, 24, 21, 21, 20, 23,
+			12, 15, 14, 11, 10, 4, 253, 248, 232, 227, 239, 239, 239, 249, 0, 8, 1, 1, 6, 2, 249, 251, 223, 235, 1, 254, 241, 235, 245, 255,
+			249, 241, 247, 0, 2, 0, 250, 3, 13, 9, 13, 19, 24, 25, 23, 17, 21, 22, 16, 10, 7, 7, 12, 5, 3, 2, 4, 8, 4, 1,
+			0, 255, 255, 254, 248, 244, 245, 250, 245, 244, 244, 232, 227, 232, 237, 236, 237, 238, 242, 246, 250, 253, 253, 0, 9, 13, 17, 17, 13, 16,
+			18, 21, 20, 14, 9, 11, 12, 10, 13, 12, 11, 9, 4, 254, 0, 253, 252, 249, 233, 231, 235, 229, 240, 2, 2, 254, 247, 245, 244, 241,
+			242, 247, 0, 7, 11, 13, 19, 22, 19, 14, 11, 11, 7, 2, 1, 5, 10, 18, 19, 16, 20, 12, 0, 247, 246, 247, 247, 249, 249, 251,
+			251, 244, 248, 250, 247, 245, 236, 231, 232, 232, 235, 245, 254, 2, 4, 5, 9, 5, 254, 0, 4, 12, 10, 9, 12, 19, 27, 32, 27, 24,
+			19, 16, 7, 5, 6, 2, 254, 255, 254, 248, 245, 235, 228, 230, 234, 237, 233, 234, 233, 236, 241, 252, 9, 9, 4, 0, 251, 242, 249, 15,
+			22, 17, 16, 18, 14, 17, 23, 26, 17, 6, 255, 255, 247, 244, 241, 244, 247, 255, 255, 249, 246, 255, 1, 6, 9, 7, 10, 10, 14, 14,
+			12, 9, 0, 0, 8, 22, 37, 39, 19, 255, 242, 237, 236, 245, 252, 252, 244, 238, 240, 244, 248, 250, 250, 246, 1, 18, 24, 4, 3, 29,
+			33, 11, 11, 15, 10, 251, 241, 1, 12, 255, 230, 210, 207, 225, 225, 221, 213, 210, 225, 243, 240, 245, 249, 7, 15, 20, 44, 38, 25, 26,
+			28, 12, 0, 14, 15, 248, 0, 24, 17, 12, 0, 242, 227, 227, 11, 7, 214, 233, 255, 248, 251, 2, 27, 16, 2, 17, 17, 3, 21, 5,
+			233, 223, 2, 24, 242, 220, 244, 252, 243, 4, 18, 1, 231, 250, 2, 234, 248, 11, 13, 0, 18, 66, 55, 33, 40, 31, 2, 224, 231, 0,
+			2, 6, 7, 250, 247, 6, 238, 211, 208, 247, 15, 249, 231, 234, 245, 15, 25, 6, 245, 237, 239, 243, 9, 34, 61, 66, 37, 5, 0, 12,
+			2, 224, 222, 22, 38, 22, 22, 23, 16, 16, 13, 7, 2, 22, 41, 28, 7, 253, 238, 4, 58, 77, 60, 15, 224, 207, 213, 254, 6, 222,
+			218, 240, 241, 220, 214, 228, 220, 225, 248, 18, 39, 5, 214, 185, 214, 0, 32, 12, 243, 216, 221, 242, 246, 231, 243, 247, 235, 199, 185, 210,
+			211, 205, 222, 245, 251, 239, 245, 240, 223, 242, 0, 253, 13, 47, 63, 47, 40, 36, 19, 14, 30, 7, 223, 225, 238, 238, 216, 221, 251, 10,
+			2, 246, 239, 12, 9, 11, 19, 55, 105, 106, 97, 71, 39, 22, 26, 25, 33, 41, 73, 69, 27, 238, 239, 244, 9, 42, 31, 11, 6, 23,
+			11, 39, 79, 44, 244, 6, 57, 80, 32, 253, 242, 8, 18, 6, 237, 203, 251, 41, 6, 230, 251, 229, 191, 202, 228, 248, 0, 7, 248, 219,
+			245, 245, 221, 200, 222, 243, 212, 191, 206, 5, 20, 244, 186, 163, 176, 186, 229, 244, 219, 230, 249, 251, 221, 211, 195, 210, 230, 248, 6, 224,
+			221, 231, 1, 12, 5, 244, 226, 237, 6, 4, 250, 2, 9, 241, 244, 29, 50, 23, 0, 16, 14, 1, 1, 16, 14, 13, 25, 32, 6, 236,
+			254, 10, 251, 242, 5, 13, 0, 31, 77, 72, 22, 2, 16, 16, 19, 29, 28, 26, 57, 59, 22, 242, 236, 245, 248, 5, 28, 53, 72, 70,
+			40, 5, 245, 248, 5, 21, 34, 25, 0, 2, 15, 11, 253, 242, 238, 245, 15, 28, 16, 244, 239, 243, 8, 24, 1, 223, 214, 243, 34, 33,
+			240, 187, 212, 14, 64, 57, 19, 0, 226, 218, 189, 198, 239, 26, 44, 12, 231, 216, 223, 200, 166, 189, 231, 249, 243, 22, 46, 254, 236, 221,
+			226, 240, 34, 27, 244, 6, 64, 87, 39, 49, 70, 16, 229, 244, 9, 5, 18, 56, 59, 33, 29, 0, 195, 209, 231, 230, 220, 243, 14, 242,
+			241, 13, 20, 0, 6, 12, 0, 255, 252, 17, 3, 21, 5, 233, 223, 2, 24, 242, 220, 244, 252, 243, 4, 18, 1, 231, 250, 2, 234, 248,
+			11, 13, 0, 18, 66, 55, 33, 40, 31, 2, 224, 231, 0, 2, 6, 7, 250, 247, 6, 238, 211, 208, 247, 15, 249, 231, 234, 245, 15, 25,
+			6, 245, 237, 239, 243, 9, 34, 61, 66, 37, 5, 0, 12, 2, 224, 222, 22, 38, 22, 22, 23, 16, 16, 13, 7, 2, 22, 41, 28, 7,
+			253, 238, 4, 58, 77, 60, 15, 224, 207, 213, 254, 6, 222, 218, 240, 241, 220, 214, 228, 220, 225, 248, 18, 39, 5, 214, 185, 214, 0, 32,
+			12, 243, 216, 221, 242, 246, 231, 243, 247, 235, 199, 185, 210, 211, 205, 222, 245, 251, 239, 245, 240, 223, 242, 0, 253, 13, 47, 63, 47, 40,
+			36, 19, 14, 30, 7, 223, 225, 238, 238, 216, 221, 251, 10, 2, 246, 239, 12, 9, 11, 19, 55, 105, 106, 97, 71, 39, 22, 26, 25, 33,
+			41, 73, 69, 27, 238, 239, 244, 9, 42, 31, 11, 6, 23, 11, 39, 79, 44, 244, 6, 57, 80, 32, 253, 242, 8, 18, 6, 237, 203, 251,
+			41, 6, 230, 251, 229, 191, 202, 228, 248, 0, 7, 248, 219, 245, 245, 221, 200, 222, 243, 212, 191, 206, 5, 20, 244, 186, 163, 176, 186, 229,
+			244, 219, 230, 249, 251, 221, 211, 195, 210, 230, 248, 6, 224, 221, 231, 1, 12, 5, 244, 226, 237, 6, 4, 250, 2, 9, 241, 244, 29, 50,
+			23, 0, 16, 14, 1, 1, 16, 14, 13, 25, 32, 6, 236, 254, 10, 251, 242, 5, 13, 0, 31, 77, 72, 22, 2, 16, 16, 19, 29, 28,
+			26, 57, 59, 22, 242, 236, 245, 248, 5, 28, 53, 72, 70, 40, 5, 245, 248, 5, 21, 34, 25, 0, 2, 15, 11, 253, 242, 238, 245, 15,
+			28, 16, 244, 239, 243, 8, 24, 1, 223, 214, 243, 34, 33, 240, 187, 212, 14, 64, 57, 19, 0, 226, 218, 189, 198, 239, 26, 44, 12, 231,
+			216, 223, 200, 166, 189, 231, 249, 243, 22, 46, 254, 236, 221, 226, 240, 34, 27, 244, 6, 64, 87, 39, 49, 70, 16, 229, 244, 9, 5, 18,
+			56, 59, 33, 29, 0, 195, 209, 231, 230, 220, 243, 14, 242, 241, 13, 20, 0, 6, 12, 0, 255, 252, 4, 0, 18, 36, 31, 26, 252, 221,
+			182, 181, 209, 192, 210, 237, 23, 17, 235, 180, 131, 157, 210, 229, 216, 219, 230, 227, 248, 16, 41, 20, 250, 17, 33, 38, 22, 0, 0, 0,
+			63, 2, 30, 0, 3, 7, 4, 5, 7, 0, 3, 254, 217, 209, 5, 49, 40, 4, 238, 252, 21, 22, 6, 0, 8, 16, 13, 3, 2, 8,
+			10, 8, 7, 6, 6, 9, 13, 12, 9, 7, 8, 6, 5, 8, 8, 8, 7, 4, 5, 6, 6, 6, 3, 3, 6, 3, 4, 4, 253, 5,
+			8, 233, 222, 2, 38, 35, 246, 219, 4, 48, 53, 25, 216, 200, 12, 40, 10, 5, 20, 38, 40, 1, 237, 8, 31, 36, 26, 6, 7, 19,
+			8, 232, 212, 223, 249, 11, 10, 0, 9, 23, 10, 12, 19, 252, 246, 2, 0, 9, 10, 253, 10, 11, 246, 1, 16, 24, 33, 1, 240, 12,
+			10, 3, 13, 242, 235, 14, 13, 2, 11, 254, 244, 13, 29, 23, 6, 245, 0, 30, 25, 2, 253, 248, 246, 6, 8, 252, 2, 10, 9, 12,
+			1, 249, 13, 28, 23, 17, 3, 1, 20, 23, 16, 19, 15, 16, 22, 8, 3, 16, 243, 209, 245, 29, 21, 12, 8, 6, 13, 0, 253, 23,
+			15, 0, 15, 5, 253, 15, 8, 0, 4, 247, 0, 12, 252, 1, 14, 7, 9, 0, 249, 13, 13, 4, 3, 246, 255, 16, 7, 4, 2, 2,
+			17, 254, 247, 22, 6, 245, 9, 0, 0, 15, 253, 8, 24, 250, 254, 21, 15, 10, 246, 249, 35, 11, 233, 15, 22, 4, 26, 13, 242, 5,
+			19, 3, 253, 0, 4, 14, 19, 5, 255, 8, 3, 0, 7, 247, 0, 31, 248, 227, 24, 15, 236, 22, 27, 225, 243, 40, 14, 227, 252, 32,
+			14, 242, 244, 9, 17, 252, 249, 18, 11, 1, 2, 233, 0, 44, 254, 232, 21, 9, 4, 23, 240, 241, 20, 3, 9, 15, 253, 18, 2, 232,
+			25, 16, 240, 22, 2, 243, 41, 9, 229, 18, 7, 252, 30, 7, 235, 240, 0, 23, 0, 236, 13, 0, 240, 12, 251, 243, 22, 255, 238, 16,
+			12, 7, 35, 16, 240, 6, 27, 8, 10, 31, 23, 5, 253, 1, 21, 24, 13, 3, 248, 14, 35, 14, 9, 241, 229, 48, 33, 220, 19, 12,
+			231, 48, 10, 220, 51, 0, 208, 58, 22, 200, 255, 31, 39, 11, 221, 13, 29, 1, 20, 245, 253, 47, 246, 241, 27, 243, 1, 19, 0, 37,
+			247, 209, 44, 32, 239, 18, 7, 15, 30, 234, 255, 36, 7, 249, 236, 9, 44, 249, 244, 18, 7, 19, 249, 246, 42, 239, 230, 46, 6, 14,
+			35, 216, 11, 39, 226, 31, 14, 205, 53, 35, 205, 15, 21, 248, 16, 10, 19, 252, 243, 36, 248, 13, 66, 183, 216, 118, 4, 212, 27, 228,
+			16, 64, 235, 242, 248, 228, 20, 11, 23, 30, 195, 249, 72, 250, 248, 0, 221, 33, 39, 247, 20, 252, 236, 26, 20, 21, 13, 232, 3, 28,
+			26, 8, 208, 248, 58, 0, 220, 222, 237, 65, 33, 183, 4, 96, 26, 192, 224, 99, 91, 197, 210, 61, 30, 234, 250, 7, 254, 244, 252, 20,
+			41, 5, 222, 36, 65, 228, 231, 25, 3, 25, 24, 252, 32, 238, 192, 42, 54, 222, 225, 14, 43, 3, 219, 27, 26, 228, 19, 21, 254, 22,
+			231, 220, 26, 18, 8, 19, 28, 31, 224, 248, 59, 227, 243, 53, 202, 21, 126, 193, 181, 65, 22, 40, 30, 177, 253, 47, 240, 5, 240, 247,
+			51, 216, 210, 53, 241, 227, 47, 255, 243, 0, 191, 4, 21, 0, 219, 229, 3, 19, 255, 1, 253, 238, 240, 255, 11, 255, 208, 218, 22, 67,
+			15, 200, 201, 255, 40, 29, 223, 234, 62, 56, 20, 217, 220, 255, 20, 18, 38, 11, 209, 222, 6, 56, 28, 232, 29, 32, 24, 239, 191, 255,
+			32, 13, 241, 204, 241, 19, 237, 210, 230, 232, 233, 49, 50, 234, 189, 201, 35, 55, 228, 191, 206, 254, 35, 236, 225, 8, 23, 0, 211, 236,
+			24, 61, 33, 232, 235, 17, 63, 26, 247, 2, 245, 32, 17, 49, 10, 236, 30, 48, 36, 1, 243, 5, 19, 25, 244, 241, 10, 34, 16, 2,
+			246, 239, 28, 26, 0, 253, 1, 242, 239, 246, 3, 10, 0, 242, 215, 0, 30, 10, 5, 249, 239, 227, 237, 239, 6, 238, 15, 47, 10, 247,
+			232, 7, 4, 239, 251, 24, 8, 251, 218, 206, 17, 11, 210, 214, 255, 21, 19, 27, 8, 254, 251, 17, 246, 253, 13, 10, 0, 8, 248, 248,
+			0, 244, 244, 0, 40, 27, 249, 235, 1, 23, 239, 222, 242, 12, 37, 255, 216, 237, 25, 28, 0, 254, 5, 254, 244, 236, 2, 37, 11, 233,
+			0, 0, 253, 6, 244, 255, 28, 24, 218, 233, 238, 234, 0, 3, 1, 14, 13, 5, 248, 7, 244, 237, 2, 35, 11, 239, 242, 18, 25, 4,
+			249, 251, 23, 27, 236, 236, 4, 5, 2, 246, 235, 253, 243, 240, 249, 254, 2, 18, 47, 14, 246, 252, 14, 29, 6, 222, 239, 15, 32, 30,
+			10, 226, 237, 3, 26, 31, 232, 247, 2, 231, 12, 19, 10, 0, 220, 241, 31, 7, 18, 1, 243, 243, 10, 30, 2, 228, 221, 255, 4, 252,
+			233, 4, 16, 242, 15, 249, 5, 17, 1, 25, 33, 243, 230, 226, 0, 26, 7, 212, 241, 247, 243, 33, 25, 2, 0, 14, 26, 244, 227, 247,
+			5, 228, 228, 3, 30, 23, 17, 208, 180, 236, 38, 32, 240, 230, 254, 11, 5, 254, 237, 225, 8, 35, 60, 229, 212, 21, 28, 35, 17, 248,
+			212, 208, 0, 39, 29, 227, 204, 215, 3, 45, 35, 4, 6, 7, 14, 1, 4, 253, 251, 17, 42, 46, 236, 247, 0, 2, 14, 14, 6, 0,
+			245, 208, 249, 14, 17, 14, 233, 239, 20, 250, 245, 4, 9, 28, 233, 5, 62, 23, 233, 199, 247, 48, 24, 239, 207, 13, 27, 245, 237, 239,
+			237, 247, 20, 20, 241, 242, 14, 8, 251, 214, 203, 5, 77, 5, 229, 233, 239, 36, 58, 10, 7, 12, 237, 244, 16, 25, 2, 251, 1, 24,
+			3, 224, 252, 27, 21, 250, 228, 242, 44, 57, 30, 226, 170, 8, 58, 28, 209, 249, 7, 4, 21, 241, 202, 0, 7, 251, 207, 252, 1, 233,
+			7, 5, 17, 36, 253, 232, 219, 3, 55, 65, 224, 209, 243, 0, 251, 2, 25, 15, 11, 218, 217, 17, 15, 13, 9, 0, 229, 228, 7, 6,
+			254, 241, 6, 42, 246, 187, 213, 245, 36, 27, 3, 233, 213, 245, 11, 19, 254, 0, 12, 244, 243, 17, 21, 252, 246, 19, 18, 26, 254, 229,
+			235, 35, 68, 21, 230, 216, 252, 33, 32, 18, 242, 247, 13, 21, 8, 250, 8, 20, 247, 247, 18, 21, 230, 238, 42, 16, 7, 249, 0, 9,
+			0, 9, 24, 23, 234, 10, 40, 15, 0, 233, 0, 25, 0, 228, 7, 13, 253, 24, 24, 221, 199, 244, 20, 228, 205, 1, 48, 26, 208, 219,
+			7, 13, 237, 255, 27, 27, 223, 185, 197, 27, 0, 229, 230, 216, 240, 37, 42, 247, 225, 200, 36, 70, 23, 248, 1, 42, 229, 204, 3, 18,
+			29, 11, 226, 246, 17, 15, 12, 20, 22, 21, 0, 205, 224, 253, 43, 63, 32, 209, 201, 235, 0, 38, 13, 255, 189, 221, 25, 20, 255, 238,
+			235, 255, 27, 20, 238, 234, 6, 248, 12, 19, 239, 242, 33, 30, 15, 230, 246, 15, 22, 26, 16, 12, 0, 252, 11, 31, 20, 244, 247, 40,
+			45, 6, 221, 225, 40, 29, 240, 190, 194, 18, 54, 254, 210, 219, 249, 27, 13, 230, 225, 220, 254, 61, 43, 223, 197, 202, 0, 79, 48, 243,
+			203, 205, 40, 96, 43, 230, 192, 246, 47, 40, 2, 235, 205, 6, 66, 9, 209, 203, 230, 45, 44, 255, 241, 211, 221, 22, 63, 54, 1, 205,
+			207, 35, 67, 36, 21, 252, 233, 19, 34, 46, 255, 199, 1, 88, 67, 215, 135, 235, 72, 62, 252, 176, 231, 1, 12, 0, 233, 222, 239, 27,
+			249, 219, 228, 255, 8, 231, 206, 224, 14, 26, 24, 10, 253, 217, 203, 205, 39, 83, 42, 237, 162, 237, 50, 11, 2, 242, 39, 240, 237, 245,
+			254, 8, 254, 11, 235, 201, 246, 17, 241, 27, 33, 21, 25, 236, 228, 12, 49, 64, 34, 0, 207, 18, 56, 16, 231, 243, 16, 9, 255, 235,
+			20, 53, 27, 226, 200, 180, 3, 68, 22, 5, 215, 249, 17, 255, 7, 250, 13, 8, 4, 41, 33, 232, 224, 6, 15, 255, 234, 220, 252, 40,
+			35, 254, 187, 199, 232, 34, 51, 248, 233, 220, 232, 55, 0, 216, 1, 27, 27, 251, 220, 213, 250, 47, 50, 8, 201, 195, 11, 25, 11, 3,
+			11, 29, 14, 230, 2, 45, 47, 24, 19, 247, 215, 216, 25, 47, 7, 219, 227, 7, 32, 30, 15, 23, 255, 226, 208, 233, 23, 2, 243, 250,
+			2, 2, 211, 198, 234, 2, 50, 27, 206, 196, 232, 9, 13, 13, 250, 244, 231, 244, 241, 5, 16, 1, 242, 10, 4, 239, 240, 21, 41, 23,
+			219, 227, 50, 37, 15, 251, 2, 22, 5, 3, 184, 227, 91, 45, 20, 245, 234, 235, 241, 15, 22, 251, 253, 245, 32, 18, 233, 215, 246, 34,
+			51, 29, 13, 237, 19, 58, 19, 241, 3, 18, 250, 11, 32, 37, 8, 247, 2, 11, 235, 211, 216, 17, 99, 20, 224, 200, 217, 252, 231, 252,
+			19, 3, 244, 246, 17, 34, 8, 219, 240, 3, 234, 248, 254, 3, 7, 23, 25, 243, 226, 251, 21, 47, 15, 242, 246, 26, 35, 14, 204, 178,
+			242, 29, 10, 19, 25, 12, 233, 240, 238, 242, 249, 14, 240, 215, 248, 4, 15, 21, 247, 247, 8, 5, 250, 254, 2, 254, 253, 2, 237, 233,
+			19, 36, 16, 249, 251, 34, 28, 245, 237, 244, 16, 39, 10, 251, 244, 244, 13, 12, 225, 212, 224, 29, 9, 239, 244, 0, 1, 11, 12, 7,
+			252, 248, 7, 0, 249, 224, 217, 239, 14, 24, 6, 225, 175, 190, 0, 26, 11, 3, 243, 253, 249, 11, 31, 27, 243, 228, 29, 32, 5, 0,
+			243, 252, 10, 52, 37, 239, 195, 251, 74, 46, 4, 211, 167, 32, 119, 72, 12, 212, 210, 2, 19, 12, 33, 53, 19, 11, 3, 223, 239, 9,
+			18, 31, 8, 223, 207, 246, 13, 17, 16, 244, 230, 230, 30, 46, 15, 249, 224, 250, 20, 6, 238, 239, 18, 24, 20, 1, 221, 196, 241, 25,
+			39, 38, 4, 230, 225, 34, 29, 237, 204, 236, 16, 50, 47, 240, 177, 207, 14, 26, 22, 229, 196, 247, 1, 251, 0, 229, 243, 12, 10, 0,
+			46, 3, 31, 0, 14, 38, 18, 32, 39, 17, 243, 10, 31, 23, 4, 9, 21, 31, 17, 8, 19, 34, 19, 38, 9, 255, 18, 33, 29, 22,
+			31, 239, 6, 20, 17, 41, 17, 5, 6, 16, 45, 17, 5, 36, 34, 7, 5, 37, 42, 25, 1, 14, 15, 21, 252, 6, 22, 31, 35, 0,
+			3, 250, 45, 32, 24, 24, 245, 16, 27, 23, 48, 38, 15, 249, 250, 25, 9, 250, 24, 16, 39, 16, 24, 27, 39, 31, 232, 29, 33, 30,
+			24, 14, 9, 26, 0, 0, 21, 38, 26, 23, 23, 4, 1, 36, 8, 16, 25, 250, 6, 13, 57, 7, 240, 10, 35, 28, 27, 30, 21, 28,
+			16, 42, 23, 3, 19, 13, 37, 18, 19, 37, 63, 9, 0, 42, 55, 53, 231, 15, 63, 55, 15, 1, 24, 253, 40, 32, 40, 6, 31, 27,
+			250, 10, 25, 34, 13, 9, 31, 19, 15, 20, 30, 10, 15, 3, 60, 43, 224, 0, 45, 53, 18, 5, 40, 19, 252, 27, 10, 12, 49, 22,
+			242, 252, 44, 18, 45, 14, 2, 233, 37, 36, 242, 7, 37, 19, 3, 24, 30, 1, 5, 58, 3, 252, 8, 29, 40, 15, 11, 14, 3, 255,
+			0, 37, 36, 11, 245, 17, 55, 249, 255, 25, 48, 21, 252, 18, 48, 23, 237, 235, 34, 38, 235, 240, 39, 36, 16, 23, 21, 1, 15, 20,
+			26, 44, 1, 19, 23, 10, 46, 33, 221, 229, 36, 32, 241, 254, 1, 12, 39, 56, 60, 251, 8, 19, 248, 34, 26, 21, 16, 19, 17, 14,
+			20, 249, 28, 18, 21, 29, 242, 239, 35, 47, 53, 25, 234, 34, 47, 255, 15, 45, 32, 15, 27, 3, 249, 12, 46, 36, 22, 41, 47, 222,
+			238, 62, 42, 11, 228, 11, 55, 29, 221, 5, 73, 31, 13, 20, 248, 252, 5, 42, 59, 15, 27, 14, 31, 10, 244, 48, 51, 33, 245, 11,
+			31, 253, 252, 9, 48, 18, 217, 242, 21, 53, 84, 25, 218, 33, 34, 39, 26, 21, 28, 1, 29, 4, 238, 12, 249, 32, 50, 0, 230, 36,
+			35, 10, 245, 225, 2, 75, 65, 2, 0, 246, 48, 45, 241, 235, 14, 34, 51, 45, 4, 224, 6, 15, 90, 23, 190, 33, 93, 28, 61, 28,
+			241, 183, 15, 47, 30, 12, 243, 240, 2, 89, 65, 216, 221, 22, 58, 65, 8, 234, 6, 30, 10, 21, 68, 242, 202, 60, 42, 3, 245, 176,
+			6, 45, 64, 25, 229, 222, 32, 47, 16, 238, 223, 65, 50, 241, 236, 27, 81, 252, 57, 64, 7, 235, 253, 22, 46, 23, 252, 0, 55, 61,
+			8, 255, 215, 255, 49, 85, 23, 206, 253, 10, 237, 71, 230, 201, 41, 49, 47, 25, 225, 208, 65, 66, 251, 246, 6, 69, 41, 20, 21, 245,
+			242, 27, 49, 4, 38, 52, 1, 220, 2, 48, 221, 248, 6, 11, 46, 55, 199, 208, 34, 16, 45, 29, 177, 41, 84, 33, 254, 8, 216, 55,
+			66, 22, 248, 208, 4, 63, 33, 21, 4, 253, 251, 28, 11, 37, 84, 42, 21, 239, 188, 44, 51, 31, 29, 41, 9, 219, 1, 243, 38, 108,
+			191, 254, 62, 242, 239, 60, 12, 13, 71, 11, 215, 32, 74, 1, 238, 55, 53, 248, 225, 227, 88, 112, 0, 57, 11, 217, 36, 4, 25, 55,
+			38, 44, 9, 3, 57, 81, 18, 247, 233, 63, 8, 9, 43, 52, 12, 21, 32, 22, 48, 44, 253, 9, 60, 56, 50, 30, 2, 211, 26, 78,
+			75, 43, 3, 13, 46, 255, 250, 57, 228, 211, 52, 82, 255, 233, 50, 200, 232, 66, 107, 252, 12, 10, 50, 22, 242, 23, 12, 14, 18, 47,
+			25, 2, 3, 32, 53, 39, 15, 228, 47, 9, 13, 17, 46, 241, 234, 59, 16, 233, 20, 20, 50, 250, 92, 17, 218, 253, 248, 243, 58, 7,
+			201, 20, 232, 221, 9, 87, 96, 3, 225, 242, 250, 14, 13, 0, 20, 64, 9, 13, 231, 238, 63, 49, 36, 253, 209, 207, 254, 70, 40, 30,
+			252, 131, 206, 66, 21, 51, 26, 241, 28, 17, 242, 255, 248, 61, 42, 233, 20, 77, 46, 222, 188, 25, 98, 85, 55, 243, 8, 16, 249, 7,
+			60, 43, 48, 55, 8, 185, 223, 76, 249, 14, 23, 11, 253, 66, 39, 255, 235, 7, 37, 5, 41, 18, 42, 232, 251, 38, 92, 50, 192, 2,
+			1, 245, 5, 53, 87, 9, 250, 236, 245, 22, 36, 213, 236, 62, 109, 71, 243, 224, 253, 80, 101, 248, 232, 57, 71, 38, 255, 254, 34, 48,
+			232, 240, 91, 78, 171, 193, 43, 91, 49, 246, 221, 250, 235, 61, 84, 227, 223, 4, 14, 27, 29, 198, 238, 31, 8, 82, 2, 184, 50, 42,
+			251, 254, 30, 33, 63, 39, 234, 234, 0, 0, 254, 6, 35, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 0, 0, 0, 253, 251, 250, 247,
+			243, 240, 239, 242, 249, 2, 5, 11, 15, 18, 17, 20, 19, 14, 11, 1, 235, 224, 232, 234, 223, 235, 0, 253, 250, 14, 25, 21, 24, 26,
+			22, 20, 11, 254, 253, 249, 235, 232, 240, 241, 240, 249, 255, 7, 12, 19, 21, 26, 21, 14, 15, 6, 0, 248, 250, 241, 241, 245, 244, 246,
+			255, 6, 8, 14, 20, 15, 13, 16, 11, 5, 2, 239, 210, 214, 230, 219, 220, 244, 246, 245, 12, 25, 26, 37, 33, 22, 26, 15, 254, 250,
+			250, 236, 236, 243, 241, 245, 249, 4, 17, 26, 23, 25, 39, 27, 12, 16, 9, 242, 214, 192, 208, 228, 222, 206, 235, 251, 237, 5, 34, 46,
+			41, 40, 38, 36, 28, 1, 255, 4, 242, 227, 240, 252, 241, 241, 7, 19, 17, 24, 28, 32, 23, 18, 10, 9, 253, 234, 243, 242, 235, 243,
+			27, 52, 245, 4, 31, 44, 247, 28, 43, 245, 246, 241, 235, 219, 210, 203, 210, 238, 241, 7, 38, 22, 48, 61, 51, 24, 252, 228, 200, 200,
+			173, 166, 202, 221, 210, 248, 27, 49, 35, 67, 63, 40, 14, 245, 232, 189, 174, 162, 179, 174, 189, 226, 8, 30, 55, 92, 86, 75, 72, 54,
+			22, 0, 253, 224, 204, 207, 193, 211, 227, 17, 26, 56, 76, 84, 83, 72, 63, 44, 11, 248, 248, 224, 212, 215, 229, 221, 241, 6, 4, 23,
+			27, 32, 39, 13, 254, 2, 248, 212, 199, 208, 165, 183, 203, 200, 221, 25, 61, 46, 65, 85, 60, 33, 44, 0, 185, 182, 194, 158, 159, 224,
+			222, 0, 46, 64, 73, 111, 120, 86, 86, 67, 17, 248, 226, 206, 181, 183, 198, 217, 242, 2, 29, 46, 48, 45, 45, 24, 243, 205, 180, 153,
+			131, 148, 158, 168, 192, 231, 15, 49, 86, 95, 104, 105, 94, 69, 48, 23, 255, 234, 215, 211, 207, 210, 221, 242, 8, 31, 66, 70, 79, 88,
+			68, 48, 25, 5, 239, 220, 197, 201, 203, 205, 221, 254, 1, 14, 36, 42, 34, 31, 27, 1, 241, 244, 219, 199, 208, 213, 203, 220, 1, 0,
+			3, 38, 39, 28, 27, 36, 13, 0, 241, 229, 222, 224, 236, 238, 242, 247, 3, 1, 0, 4, 249, 235, 238, 239, 233, 241, 248, 0, 2, 22,
+			45, 53, 48, 42, 33, 24, 35, 2, 249, 254, 243, 211, 237, 247, 224, 250, 10, 10, 253, 14, 6, 14, 14, 9, 0, 1, 248, 238, 248, 251,
+			244, 231, 232, 234, 2, 0, 249, 4, 11, 7, 8, 21, 19, 13, 18, 11, 242, 238, 246, 252, 245, 239, 241, 0, 2, 2, 0, 3, 12, 5,
+			7, 2, 6, 2, 13, 6, 238, 242, 4, 13, 0, 247, 7, 16, 20, 12, 11, 12, 28, 38, 23, 13, 12, 6, 247, 244, 225, 219, 217, 230,
+			223, 233, 0, 5, 8, 20, 17, 15, 19, 23, 1, 12, 32, 33, 19, 18, 13, 238, 252, 253, 239, 235, 252, 225, 205, 237, 229, 216, 253, 250,
+			235, 231, 249, 227, 234, 253, 248, 238, 246, 253, 0, 6, 27, 33, 51, 52, 40, 33, 56, 47, 42, 32, 27, 3, 6, 19, 248, 235, 230, 221,
+			216, 226, 231, 216, 228, 240, 222, 234, 254, 250, 232, 234, 233, 221, 221, 232, 230, 236, 247, 7, 2, 248, 2, 13, 23, 30, 33, 26, 28, 39,
+			46, 52, 51, 46, 44, 34, 22, 27, 26, 2, 10, 3, 241, 233, 252, 253, 245, 4, 15, 0, 5, 10, 9, 235, 238, 234, 215, 212, 219, 203,
+			200, 223, 239, 238, 14, 29, 1, 10, 20, 17, 5, 252, 252, 236, 238, 231, 255, 234, 233, 241, 244, 247, 9, 22, 25, 22, 31, 24, 29, 20,
+			17, 8, 4, 255, 254, 22, 15, 247, 240, 239, 0, 2, 17, 28, 32, 28, 14, 10, 5, 11, 253, 251, 1, 0, 9, 29, 23, 3, 5, 1,
+			250, 246, 252, 234, 238, 2, 243, 240, 247, 0, 253, 2, 245, 237, 243, 0, 5, 13, 14, 30, 42, 16, 5, 5, 12, 246, 255, 234, 208, 212,
+			232, 241, 1, 2, 251, 237, 232, 212, 221, 198, 176, 178, 186, 199, 229, 248, 0, 23, 44, 65, 72, 78, 67, 47, 22, 7, 1, 253, 253, 4,
+			30, 22, 28, 59, 70, 48, 56, 64, 19, 3, 236, 180, 155, 162, 154, 138, 159, 183, 203, 242, 22, 57, 66, 64, 67, 55, 42, 28, 35, 0,
+			232, 245, 0, 235, 9, 39, 29, 37, 79, 81, 56, 65, 35, 231, 212, 213, 200, 181, 192, 181, 184, 208, 239, 4, 34, 56, 55, 56, 63, 38,
+			22, 14, 239, 221, 219, 246, 248, 17, 20, 30, 29, 22, 25, 20, 10, 5, 5, 252, 252, 255, 238, 235, 250, 243, 1, 246, 222, 234, 253, 247,
+			238, 241, 246, 239, 254, 241, 241, 15, 29, 25, 4, 24, 6, 255, 245, 222, 213, 242, 15, 4, 1, 26, 38, 45, 34, 16, 5, 3, 12, 242,
+			221, 224, 218, 203, 206, 202, 215, 247, 5, 6, 253, 27, 28, 44, 26, 6, 10, 1, 232, 212, 214, 220, 238, 17, 23, 30, 67, 42, 19, 7,
+			247, 206, 211, 227, 181, 181, 214, 202, 209, 241, 10, 3, 36, 61, 42, 47, 50, 13, 250, 243, 226, 220, 225, 217, 214, 5, 34, 41, 72, 84,
+			81, 65, 58, 43, 19, 21, 247, 226, 231, 235, 236, 242, 11, 11, 22, 43, 31, 20, 18, 15, 234, 207, 212, 190, 198, 222, 208, 208, 241, 9,
+			243, 24, 45, 50, 65, 76, 58, 40, 39, 28, 255, 249, 249, 238, 232, 235, 245, 5, 20, 30, 27, 21, 33, 32, 21, 247, 226, 204, 194, 184,
+			181, 175, 177, 197, 222, 222, 234, 12, 30, 37, 48, 58, 43, 48, 41, 10, 233, 233, 220, 206, 233, 240, 237, 252, 30, 27, 66, 80, 71, 53,
+			61, 19, 245, 246, 231, 198, 215, 206, 176, 200, 249, 240, 252, 34, 30, 29, 37, 33, 29, 29, 15, 241, 227, 210, 212, 214, 232, 248, 2, 21,
+			35, 50, 53, 69, 48, 49, 22, 5, 0, 251, 221, 226, 224, 232, 232, 3, 241, 254, 36, 18, 21, 23, 16, 236, 245, 238, 207, 222, 237, 198,
+			223, 253, 4, 4, 13, 17, 254, 15, 3, 246, 251, 250, 235, 212, 223, 243, 247, 5, 0, 5, 19, 33, 54, 43, 44, 26, 12, 240, 227, 221,
+			237, 238, 230, 215, 252, 14, 14, 7, 5, 10, 4, 5, 237, 232, 0, 15, 15, 248, 242, 254, 4, 245, 249, 0, 7, 14, 18, 250, 0, 23,
+			19, 6, 12, 19, 24, 21, 15, 2, 250, 251, 248, 244, 242, 244, 0, 246, 237, 221, 250, 242, 236, 240, 238, 227, 239, 7, 2, 10, 39, 43,
+			30, 39, 44, 20, 22, 17, 16, 6, 35, 23, 3, 253, 14, 9, 7, 14, 13, 3, 9, 24, 251, 227, 249, 252, 210, 217, 244, 226, 227, 245,
+			232, 226, 11, 6, 244, 251, 17, 9, 17, 11, 9, 255, 1, 248, 249, 249, 14, 19, 4, 0, 14, 13, 14, 30, 19, 255, 255, 247, 237, 238,
+			238, 243, 249, 250, 5, 7, 27, 23, 16, 17, 30, 6, 7, 4, 236, 233, 248, 226, 199, 231, 251, 247, 12, 29, 255, 254, 26, 10, 243, 254,
+			250, 210, 219, 224, 223, 231, 250, 244, 246, 6, 9, 250, 254, 4, 11, 9, 0, 255, 246, 249, 10, 12, 0, 26, 40, 19, 4, 27, 11, 0,
+			4, 237, 217, 244, 16, 253, 244, 3, 1, 250, 1, 2, 250, 9, 20, 2, 225, 235, 14, 10, 251, 9, 251, 254, 20, 23, 3, 18, 35, 29,
+			20, 15, 19, 20, 21, 19, 248, 232, 8, 254, 247, 247, 242, 237, 253, 10, 240, 245, 236, 235, 248, 236, 239, 239, 221, 240, 244, 242, 242, 8,
+			3, 3, 11, 22, 26, 30, 23, 28, 0, 17, 24, 246, 251, 1, 1, 240, 5, 239, 236, 24, 36, 27, 253, 24, 16, 249, 253, 243, 217, 244,
+			3, 212, 185, 220, 239, 238, 238, 249, 241, 253, 32, 31, 6, 21, 40, 19, 23, 33, 26, 13, 20, 14, 23, 35, 41, 22, 5, 22, 18, 27,
+			12, 250, 251, 254, 243, 224, 229, 226, 248, 244, 236, 239, 255, 8, 28, 15, 2, 18, 24, 16, 27, 15, 236, 254, 255, 249, 0, 254, 3, 4,
+			33, 22, 42, 31, 29, 23, 18, 4, 246, 237, 208, 234, 229, 226, 216, 242, 251, 253, 249, 15, 4, 16, 13, 254, 248, 1, 26, 235, 230, 248,
+			251, 231, 248, 254, 11, 18, 28, 232, 248, 20, 6, 243, 229, 246, 241, 244, 238, 228, 228, 1, 4, 235, 225, 246, 248, 235, 245, 9, 235, 231,
+			0, 1, 245, 17, 8, 247, 11, 36, 22, 249, 7, 19, 1, 248, 19, 241, 242, 2, 251, 216, 244, 8, 5, 255, 4, 11, 249, 8, 20, 13,
+			255, 7, 240, 238, 246, 252, 245, 229, 240, 252, 243, 1, 24, 12, 253, 37, 29, 1, 1, 18, 250, 250, 8, 249, 244, 7, 10, 255, 15, 44,
+			35, 21, 33, 37, 15, 8, 0, 234, 244, 253, 234, 209, 222, 222, 252, 249, 255, 253, 10, 252, 9, 2, 4, 253, 1, 250, 238, 251, 229, 3,
+			254, 20, 0, 11, 3, 24, 33, 21, 7, 11, 20, 23, 22, 0, 6, 253, 249, 238, 235, 247, 241, 232, 221, 243, 247, 240, 234, 242, 254, 2,
+			226, 232, 0, 15, 23, 250, 244, 255, 22, 20, 0, 9, 27, 38, 3, 2, 255, 15, 20, 11, 233, 228, 237, 251, 231, 218, 228, 248, 0, 8,
+			250, 251, 28, 30, 21, 15, 0, 18, 28, 2, 251, 232, 229, 248, 13, 240, 229, 234, 246, 17, 17, 250, 241, 17, 37, 27, 245, 232, 244, 17,
+			14, 240, 226, 245, 19, 37, 16, 244, 10, 28, 35, 30, 14, 14, 20, 24, 6, 10, 0, 5, 9, 9, 11, 4, 0, 23, 8, 9, 19, 4,
+			4, 27, 12, 242, 0, 0, 231, 255, 234, 253, 238, 245, 241, 246, 9, 5, 254, 1, 9, 251, 6, 0, 2, 0, 2, 228, 249, 234, 238, 0,
+			2, 0, 19, 39, 27, 27, 36, 51, 32, 22, 12, 253, 5, 252, 221, 234, 248, 249, 3, 4, 252, 39, 34, 9, 22, 44, 33, 30, 255, 226,
+			14, 12, 245, 225, 235, 253, 0, 2, 4, 11, 0, 17, 18, 253, 248, 241, 223, 247, 235, 224, 224, 230, 211, 239, 253, 241, 0, 10, 245, 241,
+			0, 249, 244, 250, 0, 0, 97, 7, 59, 0, 0, 0, 0, 0, 255, 255, 255, 0, 255, 1, 0, 2, 0, 1, 254, 2, 254, 0, 178, 131,
+			162, 204, 38, 88, 60, 49, 12, 195, 182, 193, 0, 67, 76, 40, 9, 253, 255, 230, 223, 245, 25, 58, 46, 8, 246, 247, 255, 250, 251, 6,
+			24, 30, 20, 248, 242, 252, 0, 8, 9, 11, 20, 13, 2, 247, 242, 254, 6, 8, 239, 188, 189, 198, 236, 21, 38, 45, 42, 250, 224, 217,
+			239, 20, 35, 254, 212, 223, 232, 248, 6, 0, 20, 40, 234, 191, 209, 233, 38, 47, 10, 6, 5, 250, 229, 218, 244, 27, 39, 20, 253, 253,
+			255, 252, 240, 244, 17, 29, 17, 1, 244, 250, 6, 252, 254, 253, 6, 16, 6, 251, 241, 242, 1, 251, 245, 1, 7, 19, 12, 249, 246, 252,
+			2, 6, 2, 6, 13, 8, 253, 244, 253, 11, 16, 7, 6, 4, 7, 0, 242, 247, 10, 23, 26, 0, 222, 224, 236, 250, 16, 14, 14, 18,
+			248, 228, 231, 245, 9, 15, 0, 244, 249, 255, 252, 254, 2, 10, 15, 7, 251, 248, 249, 255, 1, 6, 11, 7, 1, 251, 242, 250, 7, 15,
+			18, 13, 3, 252, 248, 253, 2, 10, 15, 7, 255, 255, 1, 255, 0, 11, 18, 12, 11, 2, 254, 255, 249, 251, 8, 16, 18, 12, 246, 239,
+			248, 3, 12, 12, 6, 9, 2, 253, 252, 1, 9, 11, 10, 4, 11, 11, 254, 0, 3, 7, 16, 4, 6, 9, 2, 0, 249, 3, 15, 249,
+			222, 217, 223, 248, 17, 21, 9, 3, 233, 216, 217, 242, 11, 24, 25, 1, 232, 234, 235, 243, 6, 16, 17, 6, 254, 238, 238, 4, 6, 3,
+			7, 3, 8, 10, 253, 0, 7, 4, 6, 0, 4, 16, 9, 1, 253, 254, 247, 241, 247, 8, 37, 43, 26, 8, 250, 245, 6, 8, 27, 30,
+			2, 3, 239, 218, 244, 1, 16, 36, 20, 14, 12, 3, 4, 241, 2, 23, 8, 12, 0, 244, 19, 25, 3, 249, 8, 23, 15, 7, 4, 255,
+			23, 248, 198, 239, 6, 23, 38, 246, 222, 233, 234, 233, 239, 10, 31, 26, 6, 221, 234, 253, 246, 250, 248, 27, 36, 238, 226, 224, 234, 16,
+			0, 240, 245, 248, 239, 214, 225, 1, 11, 3, 236, 230, 242, 245, 244, 248, 12, 25, 1, 232, 227, 248, 18, 13, 1, 254, 0, 8, 0, 248,
+			5, 12, 10, 4, 252, 0, 4, 1, 3, 9, 13, 7, 253, 252, 255, 2, 3, 254, 252, 2, 5, 7, 254, 251, 255, 2, 7, 5, 6, 8,
+			3, 254, 253, 0, 12, 9, 4, 3, 250, 251, 249, 251, 10, 13, 14, 7, 249, 246, 254, 6, 11, 4, 253, 251, 251, 251, 251, 2, 8, 12,
+			0, 240, 241, 246, 0, 10, 8, 4, 0, 0, 1, 246, 249, 4, 7, 254, 246, 252, 4, 7, 0, 244, 249, 3, 253, 243, 249, 3, 7, 4,
+			255, 248, 246, 241, 243, 254, 15, 17, 2, 244, 237, 242, 3, 12, 13, 16, 17, 3, 245, 248, 1, 7, 8, 1, 0, 1, 254, 252, 250, 0,
+			1, 247, 243, 244, 253, 4, 1, 253, 249, 253, 253, 251, 0, 0, 1, 252, 246, 253, 3, 8, 12, 9, 254, 244, 240, 253, 8, 15, 20, 7,
+			239, 231, 239, 0, 20, 14, 1, 253, 243, 243, 250, 252, 2, 11, 6, 0, 253, 243, 245, 246, 251, 9, 9, 8, 0, 246, 246, 248, 254, 3,
+			1, 0, 247, 242, 248, 4, 13, 0, 244, 242, 247, 1, 4, 9, 12, 4, 0, 0, 6, 23, 21, 5, 248, 253, 10, 17, 27, 23, 13, 10,
+			252, 242, 253, 12, 23, 20, 1, 249, 248, 249, 254, 0, 5, 11, 14, 8, 251, 244, 245, 245, 251, 9, 12, 4, 252, 241, 240, 254, 11, 16,
+			13, 0, 241, 239, 246, 2, 13, 16, 15, 7, 0, 251, 251, 1, 10, 13, 15, 13, 4, 252, 251, 0, 8, 11, 4, 0, 253, 251, 3, 2,
+			11, 11, 254, 240, 233, 249, 8, 11, 11, 0, 240, 233, 236, 252, 10, 16, 13, 251, 243, 240, 249, 1, 7, 19, 20, 13, 3, 249, 254, 255,
+			248, 2, 20, 27, 20, 255, 243, 250, 1, 6, 11, 14, 16, 8, 255, 254, 4, 11, 7, 7, 10, 12, 12, 2, 248, 250, 3, 5, 4, 13,
+			14, 6, 251, 238, 241, 252, 2, 10, 19, 16, 253, 239, 234, 244, 255, 0, 254, 255, 5, 0, 242, 243, 254, 7, 5, 255, 252, 252, 246, 244,
+			5, 14, 11, 254, 231, 236, 253, 0, 8, 10, 10, 8, 245, 237, 242, 253, 10, 7, 0, 9, 1, 245, 241, 246, 9, 11, 3, 246, 242, 2,
+			255, 0, 11, 11, 13, 255, 244, 253, 3, 18, 18, 17, 16, 0, 248, 247, 4, 25, 16, 9, 1, 252, 0, 251, 3, 20, 19, 22, 6, 245,
+			250, 254, 5, 14, 20, 17, 1, 245, 240, 1, 16, 19, 17, 5, 0, 0, 249, 252, 6, 10, 17, 6, 254, 255, 251, 248, 246, 255, 3, 249,
+			239, 233, 235, 244, 245, 245, 251, 252, 240, 233, 236, 245, 250, 253, 0, 5, 6, 244, 240, 253, 11, 24, 19, 5, 1, 253, 252, 255, 14, 27,
+			23, 7, 248, 246, 253, 8, 16, 16, 10, 254, 233, 235, 249, 8, 14, 254, 237, 224, 223, 232, 244, 4, 9, 249, 238, 230, 233, 245, 253, 5,
+			21, 25, 8, 243, 237, 235, 254, 20, 30, 34, 20, 3, 246, 245, 5, 25, 36, 29, 13, 5, 5, 3, 12, 15, 21, 25, 5, 253, 252, 254,
+			4, 1, 1, 0, 251, 250, 248, 250, 2, 1, 251, 243, 248, 0, 0, 3, 5, 4, 0, 245, 236, 244, 249, 253, 248, 0, 5, 255, 249, 239,
+			248, 15, 21, 13, 4, 0, 2, 8, 13, 19, 24, 16, 251, 240, 248, 8, 16, 1, 246, 245, 243, 245, 251, 3, 11, 5, 242, 225, 231, 253,
+			7, 9, 6, 255, 249, 239, 238, 251, 5, 9, 2, 254, 253, 0, 1, 0, 0, 3, 3, 253, 247, 251, 6, 16, 20, 9, 251, 240, 237, 251,
+			8, 12, 15, 3, 250, 251, 245, 248, 0, 1, 1, 253, 0, 5, 0, 250, 247, 250, 2, 2, 3, 8, 12, 14, 252, 242, 243, 249, 6, 10,
+			20, 31, 25, 8, 246, 237, 244, 1, 11, 21, 29, 27, 13, 253, 247, 248, 254, 4, 12, 18, 24, 18, 0, 242, 232, 239, 0, 13, 16, 10,
+			251, 243, 240, 245, 255, 7, 9, 3, 251, 245, 247, 249, 244, 242, 247, 251, 0, 251, 246, 252, 252, 246, 245, 249, 251, 253, 248, 246, 2, 8,
+			0, 249, 242, 247, 255, 2, 9, 14, 20, 13, 255, 253, 8, 25, 32, 35, 30, 24, 13, 252, 248, 2, 23, 27, 19, 9, 255, 248, 247, 253,
+			1, 6, 5, 252, 248, 253, 255, 253, 246, 237, 239, 241, 245, 249, 249, 250, 243, 231, 233, 235, 242, 250, 252, 255, 0, 252, 251, 254, 4, 13,
+			18, 18, 18, 17, 15, 14, 13, 14, 16, 17, 15, 16, 12, 7, 4, 2, 4, 1, 247, 239, 244, 0, 14, 18, 11, 0, 239, 232, 236, 246,
+			8, 12, 6, 254, 242, 239, 239, 238, 242, 255, 9, 9, 2, 249, 242, 242, 250, 6, 20, 26, 28, 21, 14, 13, 5, 7, 10, 11, 16, 11,
+			7, 7, 5, 3, 253, 248, 248, 241, 238, 239, 242, 249, 253, 249, 246, 242, 241, 242, 244, 245, 244, 241, 237, 238, 246, 254, 251, 248, 247, 242,
+			248, 253, 3, 11, 19, 22, 24, 25, 20, 14, 12, 16, 26, 33, 36, 26, 15, 7, 4, 2, 6, 6, 1, 253, 250, 251, 254, 251, 246, 236,
+			239, 242, 244, 253, 251, 243, 235, 226, 222, 228, 240, 245, 248, 243, 233, 225, 228, 234, 245, 2, 8, 11, 13, 6, 5, 4, 10, 22, 34, 37,
+			35, 33, 27, 24, 23, 20, 23, 22, 19, 11, 7, 9, 3, 251, 239, 232, 229, 237, 243, 246, 249, 238, 228, 221, 225, 237, 246, 250, 249, 248,
+			246, 250, 254, 252, 252, 251, 249, 253, 0, 7, 19, 25, 24, 21, 15, 11, 9, 15, 29, 34, 34, 26, 13, 5, 3, 2, 5, 11, 12, 9,
+			5, 0, 246, 239, 230, 231, 242, 245, 245, 236, 229, 232, 237, 243, 243, 245, 246, 245, 246, 250, 255, 4, 1, 251, 253, 252, 248, 249, 253, 6,
+			16, 21, 17, 4, 254, 244, 244, 0, 14, 27, 27, 17, 6, 248, 245, 249, 0, 12, 14, 10, 2, 254, 253, 253, 252, 255, 255, 250, 245, 244,
+			248, 254, 5, 2, 1, 255, 246, 242, 246, 4, 18, 20, 16, 6, 0, 255, 1, 4, 9, 12, 15, 8, 2, 255, 249, 248, 255, 2, 6, 2,
+			249, 243, 245, 255, 3, 8, 2, 249, 243, 242, 251, 4, 8, 5, 0, 254, 252, 251, 250, 249, 0, 10, 13, 6, 253, 244, 243, 250, 1, 10,
+			12, 8, 1, 255, 1, 9, 11, 8, 7, 8, 13, 10, 6, 0, 255, 3, 0, 253, 247, 239, 236, 237, 246, 255, 6, 255, 241, 238, 239, 252,
+			6, 9, 10, 9, 7, 2, 6, 9, 15, 14, 9, 6, 0, 2, 0, 2, 10, 10, 11, 2, 255, 0, 4, 11, 17, 22, 18, 10, 0, 250,
+			255, 7, 18, 23, 18, 0, 232, 212, 211, 227, 249, 4, 1, 243, 228, 222, 225, 238, 254, 9, 13, 5, 6, 8, 13, 17, 17, 21, 21, 17,
+			7, 1, 2, 6, 14, 16, 12, 10, 1, 1, 3, 12, 17, 15, 9, 9, 9, 11, 11, 9, 5, 5, 2, 0, 252, 249, 246, 246, 247, 244,
+			245, 246, 252, 0, 5, 8, 6, 2, 252, 248, 252, 0, 5, 11, 13, 10, 4, 255, 248, 250, 255, 2, 4, 0, 250, 249, 251, 0, 2, 1,
+			248, 240, 241, 243, 249, 253, 249, 247, 248, 251, 252, 254, 254, 254, 1, 6, 11, 6, 253, 246, 251, 6, 14, 19, 11, 2, 0, 255, 0, 6,
+			12, 14, 15, 17, 16, 16, 9, 254, 250, 0, 10, 18, 20, 12, 0, 245, 238, 237, 241, 0, 8, 13, 6, 253, 244, 241, 245, 0, 10, 17,
+			12, 7, 254, 249, 249, 250, 251, 251, 250, 252, 255, 2, 3, 3, 254, 249, 244, 243, 250, 5, 17, 22, 17, 9, 250, 243, 241, 248, 6, 14,
+			21, 17, 5, 248, 237, 233, 234, 246, 2, 11, 15, 11, 7, 0, 254, 250, 253, 1, 6, 15, 20, 18, 12, 2, 245, 237, 242, 250, 4, 10,
+			10, 1, 252, 243, 239, 242, 252, 4, 12, 14, 8, 1, 252, 251, 249, 251, 252, 251, 253, 253, 253, 254, 251, 246, 239, 237, 237, 249, 0, 3,
+			1, 0, 254, 250, 249, 247, 249, 0, 3, 4, 4, 4, 253, 247, 249, 248, 249, 252, 254, 0, 3, 5, 0, 252, 249, 249, 255, 3, 7, 6,
+			5, 0, 250, 253, 253, 0, 1, 252, 250, 247, 247, 248, 0, 4, 1, 255, 245, 237, 240, 247, 1, 8, 10, 1, 250, 244, 239, 247, 0, 7,
+			5, 255, 247, 242, 244, 248, 252, 3, 2, 0, 0, 0, 127, 8, 58, 0, 3, 3, 3, 4, 5, 6, 6, 6, 6, 4, 4, 3, 1, 0,
+			1, 0, 0, 0, 255, 0, 1, 0, 1, 0, 0, 0, 0, 255, 253, 253, 251, 249, 247, 247, 246, 234, 219, 220, 225, 241, 1, 16, 40, 50,
+			55, 48, 39, 33, 17, 253, 234, 218, 220, 219, 224, 234, 248, 14, 28, 34, 41, 40, 40, 28, 13, 0, 242, 237, 226, 222, 229, 233, 250, 2,
+			13, 28, 33, 37, 32, 23, 18, 9, 2, 254, 0, 254, 225, 193, 184, 166, 172, 177, 189, 230, 255, 28, 43, 58, 83, 73, 60, 28, 9, 0,
+			233, 215, 199, 203, 232, 249, 5, 24, 41, 65, 60, 53, 38, 25, 18, 245, 227, 211, 209, 217, 223, 229, 254, 15, 40, 43, 4, 241, 253, 230,
+			213, 195, 192, 223, 224, 242, 243, 33, 66, 64, 56, 41, 44, 48, 11, 237, 217, 220, 233, 220, 222, 237, 13, 36, 30, 37, 38, 49, 39, 8,
+			251, 245, 243, 235, 218, 221, 237, 254, 4, 3, 14, 26, 32, 20, 7, 0, 243, 235, 217, 202, 209, 213, 229, 233, 242, 12, 24, 41, 37, 33,
+			33, 21, 9, 244, 230, 231, 229, 227, 234, 241, 7, 16, 22, 26, 29, 35, 25, 14, 0, 248, 242, 232, 225, 230, 236, 250, 255, 5, 14, 16,
+			21, 22, 10, 9, 251, 241, 231, 219, 223, 226, 238, 249, 1, 15, 28, 36, 36, 32, 26, 20, 12, 255, 245, 240, 242, 244, 250, 254, 7, 18,
+			18, 21, 21, 21, 19, 9, 1, 253, 250, 250, 242, 246, 0, 1, 14, 11, 22, 28, 32, 26, 3, 1, 1, 249, 239, 239, 224, 240, 237, 236,
+			250, 253, 22, 28, 21, 11, 11, 14, 247, 229, 204, 184, 190, 179, 180, 191, 220, 249, 6, 8, 21, 23, 38, 19, 255, 1, 238, 242, 228, 217,
+			230, 244, 6, 17, 27, 36, 41, 47, 34, 16, 6, 249, 224, 221, 187, 209, 225, 235, 253, 245, 4, 13, 5, 8, 253, 250, 10, 243, 246, 251,
+			7, 30, 24, 7, 6, 242, 243, 222, 211, 218, 239, 236, 250, 251, 17, 43, 43, 58, 44, 58, 41, 26, 2, 246, 247, 240, 234, 247, 254, 9,
+			27, 24, 39, 42, 38, 30, 8, 1, 225, 216, 197, 200, 212, 223, 242, 253, 7, 19, 31, 30, 36, 27, 21, 14, 255, 1, 245, 250, 16, 5,
+			27, 28, 43, 44, 32, 44, 21, 17, 7, 244, 245, 245, 245, 5, 244, 15, 9, 28, 31, 13, 21, 1, 255, 231, 218, 204, 194, 185, 166, 182,
+			199, 232, 246, 18, 34, 53, 66, 71, 52, 59, 54, 24, 249, 237, 221, 226, 229, 227, 1, 17, 48, 53, 42, 66, 23, 1, 227, 211, 210, 197,
+			212, 215, 243, 0, 15, 24, 45, 38, 34, 21, 6, 248, 232, 218, 221, 212, 217, 232, 250, 25, 52, 65, 83, 70, 71, 54, 31, 24, 245, 224,
+			200, 199, 199, 210, 239, 21, 39, 73, 26, 18, 0, 227, 231, 182, 208, 197, 211, 219, 220, 14, 24, 46, 41, 18, 34, 24, 242, 239, 226, 238,
+			14, 2, 25, 27, 63, 67, 63, 62, 40, 51, 32, 3, 246, 240, 240, 249, 247, 17, 14, 253, 236, 221, 229, 202, 212, 218, 233, 3, 18, 27,
+			48, 36, 24, 248, 226, 218, 199, 201, 191, 215, 241, 252, 20, 27, 57, 75, 56, 41, 16, 0, 235, 212, 198, 187, 194, 205, 209, 243, 1, 21,
+			25, 18, 22, 5, 254, 225, 213, 212, 214, 219, 229, 225, 244, 9, 18, 37, 33, 43, 27, 11, 247, 228, 230, 225, 232, 237, 246, 0, 25, 24,
+			47, 44, 45, 41, 20, 4, 253, 248, 238, 231, 227, 232, 247, 254, 0, 7, 12, 20, 19, 23, 7, 248, 252, 230, 233, 236, 239, 254, 3, 14,
+			17, 23, 21, 30, 19, 7, 244, 237, 225, 217, 219, 229, 248, 2, 13, 21, 21, 23, 27, 13, 0, 2, 242, 243, 234, 239, 245, 3, 13, 13,
+			16, 7, 6, 250, 236, 230, 222, 210, 218, 233, 232, 9, 1, 24, 37, 38, 57, 38, 48, 38, 13, 0, 232, 230, 220, 209, 214, 215, 238, 253,
+			4, 20, 33, 34, 36, 18, 15, 7, 4, 248, 227, 228, 214, 220, 231, 234, 246, 1, 250, 0, 250, 247, 246, 240, 233, 227, 236, 237, 250, 3,
+			20, 26, 52, 43, 56, 40, 28, 11, 244, 230, 214, 219, 220, 222, 235, 231, 251, 6, 14, 30, 28, 24, 14, 254, 245, 241, 243, 233, 239, 241,
+			249, 253, 1, 2, 14, 15, 16, 20, 14, 13, 251, 231, 223, 226, 236, 248, 7, 26, 30, 38, 43, 35, 40, 24, 15, 5, 250, 254, 0, 248,
+			0, 253, 0, 1, 3, 8, 0, 249, 240, 238, 246, 255, 9, 21, 29, 37, 39, 27, 23, 17, 249, 241, 222, 199, 199, 182, 183, 198, 220, 255,
+			18, 45, 58, 64, 75, 57, 52, 42, 25, 13, 253, 239, 244, 240, 235, 237, 247, 14, 20, 29, 24, 22, 29, 13, 5, 3, 248, 253, 242, 236,
+			249, 252, 6, 11, 16, 33, 37, 31, 14, 252, 245, 228, 219, 220, 228, 249, 7, 26, 45, 67, 68, 69, 50, 30, 19, 252, 232, 202, 198, 194,
+			192, 200, 210, 223, 243, 8, 19, 31, 41, 35, 21, 10, 253, 237, 227, 214, 200, 198, 198, 215, 230, 242, 2, 11, 16, 26, 21, 25, 29, 23,
+			29, 28, 27, 34, 39, 46, 48, 48, 45, 32, 21, 2, 240, 227, 203, 192, 189, 187, 200, 217, 237, 0, 16, 29, 41, 51, 42, 46, 31, 18,
+			7, 247, 242, 232, 234, 238, 233, 240, 252, 4, 9, 13, 14, 24, 24, 27, 24, 27, 35, 25, 25, 36, 26, 31, 16, 1, 4, 253, 246, 232,
+			215, 210, 198, 196, 208, 222, 244, 6, 14, 37, 42, 45, 47, 26, 19, 7, 236, 239, 224, 227, 237, 237, 249, 9, 16, 26, 20, 17, 17, 3,
+			0, 255, 0, 1, 0, 1, 8, 9, 10, 7, 11, 14, 11, 8, 5, 1, 252, 239, 246, 246, 254, 254, 1, 17, 21, 21, 7, 253, 246, 246,
+			238, 239, 246, 3, 5, 4, 12, 19, 36, 43, 43, 54, 46, 33, 12, 249, 235, 234, 223, 223, 228, 236, 250, 255, 9, 13, 12, 10, 2, 254,
+			236, 212, 198, 193, 198, 220, 235, 9, 32, 43, 46, 49, 50, 35, 17, 246, 229, 215, 198, 188, 184, 196, 212, 238, 255, 32, 53, 63, 67, 58,
+			48, 35, 9, 243, 233, 219, 212, 202, 195, 194, 214, 232, 254, 10, 19, 19, 10, 6, 2, 253, 245, 241, 241, 248, 2, 10, 21, 25, 37, 34,
+			39, 35, 22, 10, 250, 238, 232, 219, 208, 208, 214, 229, 246, 253, 6, 20, 24, 29, 28, 19, 8, 245, 232, 227, 224, 219, 211, 210, 220, 236,
+			0, 14, 25, 23, 25, 26, 36, 29, 27, 15, 250, 241, 224, 223, 222, 223, 237, 244, 254, 8, 14, 11, 7, 245, 234, 227, 219, 215, 201, 199,
+			196, 208, 232, 251, 20, 37, 43, 45, 38, 26, 26, 8, 249, 233, 218, 213, 214, 210, 219, 229, 241, 1, 12, 23, 28, 29, 21, 7, 248, 241,
+			229, 221, 224, 226, 247, 0, 16, 33, 40, 44, 44, 39, 32, 28, 6, 247, 232, 224, 223, 224, 231, 241, 255, 9, 20, 30, 44, 43, 35, 30,
+			26, 27, 19, 8, 7, 13, 16, 20, 26, 37, 41, 26, 12, 252, 240, 226, 207, 197, 201, 209, 218, 228, 239, 8, 31, 44, 61, 65, 64, 46,
+			20, 2, 246, 230, 229, 229, 243, 5, 20, 38, 51, 60, 63, 51, 33, 14, 240, 216, 196, 183, 185, 183, 194, 214, 241, 10, 29, 45, 53, 57,
+			45, 32, 10, 251, 228, 215, 209, 218, 236, 250, 15, 37, 62, 76, 84, 82, 71, 48, 17, 243, 214, 193, 175, 169, 172, 195, 226, 4, 35, 57,
+			77, 82, 84, 73, 57, 33, 10, 243, 229, 226, 230, 232, 235, 243, 250, 4, 13, 19, 15, 2, 242, 234, 227, 230, 229, 229, 227, 238, 255, 14,
+			27, 37, 44, 40, 27, 8, 241, 219, 198, 189, 190, 202, 217, 237, 1, 26, 60, 93, 113, 125, 118, 98, 68, 28, 252, 224, 202, 191, 186, 187,
+			192, 198, 210, 230, 249, 4, 8, 10, 13, 9, 0, 242, 232, 230, 235, 249, 17, 38, 44, 35, 21, 11, 8, 1, 245, 229, 218, 211, 207, 203,
+			209, 223, 237, 1, 28, 53, 68, 68, 54, 44, 28, 14, 253, 226, 204, 187, 183, 190, 206, 221, 245, 7, 28, 54, 67, 77, 65, 48, 28, 9,
+			245, 232, 214, 205, 204, 211, 227, 249, 11, 34, 46, 52, 55, 49, 41, 28, 9, 250, 234, 221, 210, 201, 202, 214, 229, 244, 1, 16, 29, 38,
+			37, 35, 29, 15, 4, 255, 255, 0, 255, 251, 245, 241, 242, 246, 247, 249, 245, 243, 246, 249, 0, 6, 8, 8, 10, 10, 9, 2, 1, 0,
+			1, 0, 0, 1, 253, 249, 240, 241, 241, 241, 244, 246, 251, 254, 5, 5, 10, 6, 5, 5, 5, 12, 20, 27, 30, 30, 23, 15, 0, 242,
+			230, 218, 210, 209, 213, 219, 222, 222, 227, 235, 253, 13, 23, 27, 24, 17, 14, 15, 19, 25, 29, 23, 12, 1, 253, 242, 222, 202, 192, 192,
+			198, 203, 214, 229, 240, 0, 18, 41, 61, 71, 72, 67, 62, 54, 36, 12, 244, 229, 217, 209, 200, 197, 200, 210, 226, 251, 22, 43, 54, 54,
+			50, 42, 28, 7, 243, 220, 209, 206, 211, 218, 229, 250, 10, 29, 45, 56, 58, 48, 29, 6, 243, 230, 221, 211, 211, 211, 216, 220, 224, 237,
+			254, 15, 31, 40, 40, 42, 34, 28, 22, 17, 9, 252, 241, 239, 248, 250, 248, 240, 236, 233, 229, 231, 238, 244, 240, 235, 242, 2, 20, 31,
+			37, 45, 53, 57, 53, 36, 19, 253, 227, 210, 207, 216, 218, 209, 205, 216, 231, 249, 7, 24, 41, 49, 55, 59, 58, 48, 37, 26, 25, 26,
+			24, 9, 244, 222, 205, 195, 189, 190, 191, 192, 201, 217, 246, 19, 39, 51, 63, 73, 76, 70, 58, 42, 23, 2, 237, 223, 217, 208, 202, 200,
+			211, 227, 238, 243, 250, 8, 24, 31, 34, 32, 23, 7, 254, 254, 8, 16, 17, 15, 16, 21, 22, 18, 16, 16, 13, 6, 249, 237, 225, 212,
+			200, 201, 221, 243, 253, 0, 9, 25, 39, 51, 60, 65, 51, 30, 5, 246, 233, 225, 217, 216, 220, 231, 245, 0, 11, 21, 29, 35, 39, 40,
+			32, 18, 255, 242, 233, 232, 236, 247, 2, 12, 20, 31, 43, 52, 49, 35, 14, 252, 230, 210, 196, 192, 197, 204, 215, 237, 9, 37, 56, 71,
+			79, 75, 58, 28, 3, 240, 230, 224, 225, 222, 223, 219, 225, 241, 5, 22, 32, 29, 22, 14, 7, 251, 236, 225, 217, 219, 228, 247, 3, 12,
+			20, 19, 27, 29, 20, 1, 233, 213, 194, 186, 188, 201, 220, 244, 14, 44, 72, 85, 85, 74, 58, 39, 19, 251, 224, 198, 182, 177, 185, 205,
+			232, 3, 30, 50, 63, 72, 70, 59, 38, 22, 7, 251, 234, 220, 211, 211, 216, 225, 240, 253, 8, 14, 15, 18, 18, 17, 11, 4, 1, 1,
+			1, 255, 251, 250, 250, 253, 3, 10, 15, 13, 4, 248, 238, 230, 225, 225, 227, 231, 238, 246, 3, 15, 28, 39, 42, 39, 28, 9, 239, 210,
+			192, 187, 191, 200, 220, 241, 5, 19, 33, 47, 52, 47, 37, 23, 8, 247, 229, 216, 208, 205, 210, 220, 233, 248, 4, 12, 17, 23, 28, 30,
+			25, 21, 16, 11, 7, 4, 6, 8, 5, 2, 254, 254, 247, 237, 224, 213, 205, 203, 207, 216, 230, 249, 10, 27, 44, 57, 64, 67, 61, 49,
+			32, 9, 239, 213, 191, 176, 167, 169, 185, 210, 236, 6, 31, 56, 70, 81, 90, 93, 81, 56, 27, 254, 227, 206, 189, 184, 184, 192, 202, 217,
+			231, 243, 254, 10, 24, 33, 40, 40, 35, 31, 30, 30, 30, 26, 19, 10, 1, 249, 241, 233, 226, 223, 225, 228, 230, 230, 227, 228, 236, 253,
+			16, 31, 34, 33, 27, 27, 26, 26, 23, 17, 5, 253, 248, 247, 249, 252, 0, 10, 21, 33, 40, 37, 30, 22, 19, 21, 24, 26, 20, 8,
+			255, 245, 235, 227, 227, 227, 227, 228, 236, 244, 250, 252, 0, 10, 23, 31, 34, 33, 27, 21, 15, 13, 10, 5, 254, 245, 237, 232, 229, 226,
+			225, 225, 231, 242, 253, 1, 3, 5, 5, 7, 10, 12, 12, 6, 0, 250, 251, 252, 252, 251, 252, 253, 0, 2, 3, 3, 0, 250, 246, 244,
+			248, 248, 248, 246, 248, 249, 252, 251, 250, 247, 243, 240, 239, 240, 240, 237, 231, 228, 228, 232, 239, 245, 245, 239, 233, 231, 235, 243, 252, 0,
+			255, 0, 170, 7, 51, 0, 21, 242, 238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28,
+			12, 233, 10, 17, 0, 250, 17, 31, 237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12,
+			106, 244, 132, 46, 76, 41, 222, 179, 29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26,
+			57, 239, 25, 236, 237, 60, 21, 231, 223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9,
+			244, 2, 23, 255, 230, 20, 17, 255, 249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34,
+			10, 22, 238, 231, 33, 13, 250, 243, 235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232,
+			14, 252, 39, 22, 231, 0, 48, 2, 226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6,
+			5, 50, 247, 212, 26, 37, 1, 239, 244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24,
+			240, 237, 47, 20, 242, 236, 32, 21, 237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227,
+			73, 17, 203, 11, 38, 243, 6, 2, 255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5,
+			9, 237, 24, 47, 227, 237, 51, 19, 232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231,
+			3, 22, 253, 229, 38, 1, 221, 31, 13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32,
+			55, 217, 214, 74, 45, 182, 1, 59, 19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7,
+			0, 43, 12, 235, 10, 3, 6, 30, 240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204,
+			232, 10, 50, 1, 225, 11, 20, 4, 254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238,
+			0, 9, 0, 35, 235, 234, 51, 249, 218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78,
+			56, 189, 200, 68, 66, 221, 212, 253, 34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29,
+			29, 252, 245, 60, 246, 173, 65, 92, 206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5,
+			249, 239, 28, 10, 0, 227, 0, 70, 241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248,
+			220, 33, 10, 247, 247, 247, 42, 228, 208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232,
+			33, 31, 236, 233, 6, 57, 5, 221, 250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36,
+			254, 208, 4, 81, 223, 228, 58, 252, 236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252,
+			249, 18, 48, 250, 247, 32, 252, 232, 42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232,
+			248, 41, 15, 235, 31, 233, 233, 48, 3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17,
+			244, 222, 0, 47, 12, 223, 11, 33, 246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2,
+			247, 27, 252, 240, 45, 247, 237, 7, 17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238,
+			22, 239, 31, 29, 223, 12, 1, 17, 6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12,
+			249, 1, 56, 233, 234, 38, 239, 12, 56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21, 222, 219, 35, 42, 215, 255, 7, 6,
+			40, 0, 188, 15, 76, 245, 193, 29, 25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13, 11, 247, 16, 19, 2, 239, 204, 71,
+			69, 188, 229, 30, 35, 0, 2, 14, 236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23, 237, 4, 46, 204, 233, 66, 250, 217,
+			22, 41, 2, 225, 27, 47, 234, 252, 10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18, 53, 242, 10, 6, 234, 30, 19, 235,
+			9, 42, 242, 224, 32, 0, 243, 16, 251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23, 249, 239, 13, 237, 22, 0, 0, 26,
+			243, 1, 33, 231, 9, 46, 235, 245, 9, 30, 30, 186, 244, 60, 27, 7, 219, 251, 54, 24, 255, 232, 20, 58, 246, 195, 11, 40, 18, 2,
+			200, 0, 60, 42, 225, 219, 32, 32, 4, 232, 254, 5, 13, 37, 225, 247, 42, 255, 227, 19, 10, 230, 5, 26, 236, 255, 19, 8, 10, 21,
+			242, 238, 36, 3, 9, 1, 243, 53, 29, 200, 245, 43, 246, 25, 1, 188, 17, 48, 233, 0, 7, 240, 28, 12, 233, 10, 17, 0, 250, 17,
+			31, 237, 219, 30, 38, 12, 249, 237, 0, 38, 249, 9, 12, 224, 60, 17, 164, 60, 69, 186, 246, 2, 12, 106, 244, 132, 46, 76, 41, 222,
+			179, 29, 40, 30, 238, 186, 37, 78, 238, 227, 0, 40, 33, 7, 250, 249, 21, 27, 237, 8, 47, 202, 26, 57, 239, 25, 236, 237, 60, 21,
+			231, 223, 21, 81, 219, 184, 42, 30, 0, 25, 255, 224, 15, 38, 250, 232, 250, 0, 32, 7, 228, 22, 9, 244, 2, 23, 255, 230, 20, 17,
+			255, 249, 243, 37, 42, 244, 226, 0, 25, 5, 245, 12, 12, 242, 15, 41, 228, 203, 64, 67, 199, 241, 34, 10, 22, 238, 231, 33, 13, 250,
+			243, 235, 40, 21, 193, 10, 46, 244, 242, 253, 24, 40, 251, 232, 244, 35, 50, 223, 212, 37, 47, 229, 232, 14, 252, 39, 22, 231, 0, 48,
+			2, 226, 27, 35, 233, 2, 24, 12, 1, 209, 37, 53, 221, 246, 27, 10, 27, 253, 252, 15, 250, 2, 6, 5, 50, 247, 212, 26, 37, 1,
+			239, 244, 44, 30, 236, 7, 247, 30, 34, 228, 242, 4, 45, 0, 197, 22, 59, 255, 233, 254, 1, 23, 24, 240, 237, 47, 20, 242, 236, 32,
+			21, 237, 35, 4, 209, 13, 62, 3, 229, 15, 253, 10, 20, 235, 2, 39, 224, 255, 38, 243, 8, 244, 227, 73, 17, 203, 11, 38, 243, 6,
+			2, 255, 35, 246, 10, 246, 242, 61, 235, 206, 61, 254, 232, 39, 248, 246, 42, 13, 226, 253, 37, 13, 5, 9, 237, 24, 47, 227, 237, 51,
+			19, 232, 18, 7, 238, 27, 17, 235, 8, 14, 228, 21, 11, 236, 37, 2, 243, 12, 9, 8, 27, 0, 231, 3, 22, 253, 229, 38, 1, 221,
+			31, 13, 251, 8, 248, 17, 255, 250, 32, 5, 14, 30, 232, 246, 50, 0, 241, 23, 230, 28, 24, 208, 32, 55, 217, 214, 74, 45, 182, 1,
+			59, 19, 246, 233, 25, 4, 6, 7, 214, 40, 29, 241, 252, 0, 16, 21, 16, 218, 14, 61, 242, 245, 7, 0, 43, 12, 235, 10, 3, 6,
+			30, 240, 245, 49, 243, 219, 16, 66, 11, 175, 2, 101, 238, 236, 10, 212, 50, 100, 166, 173, 111, 43, 204, 232, 10, 50, 1, 225, 11, 20,
+			4, 254, 243, 8, 35, 235, 220, 17, 22, 241, 242, 34, 6, 243, 6, 248, 243, 44, 0, 230, 6, 15, 238, 0, 9, 0, 35, 235, 234, 51,
+			249, 218, 23, 11, 7, 250, 223, 24, 33, 7, 228, 230, 58, 27, 201, 15, 25, 248, 31, 27, 218, 212, 78, 56, 189, 200, 68, 66, 221, 212,
+			253, 34, 62, 218, 221, 32, 13, 6, 7, 7, 8, 14, 251, 6, 23, 30, 210, 250, 62, 19, 230, 227, 29, 29, 252, 245, 60, 246, 173, 65,
+			92, 206, 232, 54, 17, 230, 36, 27, 194, 14, 52, 208, 250, 50, 244, 197, 38, 59, 212, 253, 12, 7, 5, 249, 239, 28, 10, 0, 227, 0,
+			70, 241, 226, 27, 21, 12, 225, 241, 27, 18, 3, 226, 7, 33, 223, 1, 34, 11, 7, 224, 14, 56, 248, 220, 33, 10, 247, 247, 247, 42,
+			228, 208, 44, 51, 239, 237, 245, 22, 56, 202, 245, 54, 241, 1, 2, 245, 43, 251, 220, 18, 29, 246, 232, 33, 31, 236, 233, 6, 57, 5,
+			221, 250, 0, 32, 22, 200, 35, 54, 217, 10, 2, 233, 60, 35, 211, 0, 27, 26, 253, 228, 0, 35, 36, 254, 208, 4, 81, 223, 228, 58,
+			252, 236, 29, 231, 16, 50, 212, 245, 17, 33, 30, 191, 245, 72, 20, 237, 240, 243, 43, 27, 252, 3, 252, 249, 18, 48, 250, 247, 32, 252,
+			232, 42, 11, 210, 39, 53, 250, 196, 8, 57, 250, 243, 34, 242, 254, 45, 230, 242, 3, 30, 28, 239, 232, 248, 41, 15, 235, 31, 233, 233,
+			48, 3, 234, 2, 13, 20, 14, 254, 10, 235, 247, 40, 246, 28, 241, 224, 41, 18, 254, 224, 6, 39, 17, 244, 222, 0, 47, 12, 223, 11,
+			33, 246, 255, 0, 243, 30, 32, 235, 219, 35, 12, 241, 38, 253, 224, 30, 34, 237, 223, 25, 30, 252, 2, 247, 27, 252, 240, 45, 247, 237,
+			7, 17, 16, 250, 222, 17, 69, 230, 224, 37, 7, 53, 247, 198, 56, 34, 215, 25, 10, 238, 42, 11, 238, 22, 239, 31, 29, 223, 12, 1,
+			17, 6, 240, 39, 225, 238, 76, 244, 216, 6, 33, 32, 239, 241, 46, 227, 20, 52, 174, 4, 61, 246, 12, 249, 1, 56, 233, 234, 38, 239,
+			12, 56, 221, 215, 33, 17, 252, 7, 2, 9, 6, 233, 251, 44, 21, 222, 219, 35, 42, 215, 255, 7, 6, 40, 0, 188, 15, 76, 245, 193,
+			29, 25, 23, 8, 182, 44, 68, 240, 236, 240, 53, 10, 225, 18, 13, 11, 247, 16, 19, 2, 239, 204, 71, 69, 188, 229, 30, 35, 0, 2,
+			14, 236, 15, 32, 228, 249, 49, 3, 218, 5, 31, 2, 0, 11, 23, 237, 4, 46, 204, 233, 66, 250, 217, 22, 41, 2, 225, 27, 47, 234,
+			252, 10, 16, 32, 207, 1, 42, 242, 20, 254, 219, 33, 33, 214, 18, 53, 242, 10, 6, 234, 30, 19, 235, 9, 42, 242, 224, 32, 0, 243,
+			16, 251, 11, 23, 244, 253, 40, 252, 250, 35, 247, 246, 16, 251, 23, 249, 239, 13, 0, 0, 150, 0, 4, 0, 1, 0, 224, 0, 248, 2,
+			140, 5, 60, 10, 20, 13, 175, 14, 117, 27, 50, 43, 29, 57, 48, 41, 35, 29, 12, 3, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			224, 0, 248, 2, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 60, 67, 36, 71, 61, 52, 44, 37, 15, 4, 196, 162, 200, 120, 120, 120,
+			249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 224, 0, 248, 2, 120, 5, 40, 10, 20, 13, 175, 14, 117, 27, 40, 55, 33, 64, 55, 40, 36, 33, 14, 4, 196, 162,
+			200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 208, 0, 224, 2, 100, 5, 236, 9, 1, 13, 155, 14, 105, 27, 0, 33, 26, 52, 37, 27, 24, 24,
+			11, 3, 192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 240, 0, 128, 3, 160, 5, 150, 10, 164, 13, 45, 15, 195, 27,
+			45, 45, 31, 64, 57, 40, 30, 20, 9, 4, 235, 162, 134, 132, 120, 120, 247, 170, 165, 44, 65, 70, 130, 55, 0, 0, 0, 0, 45, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 128, 3, 160, 5, 150, 10, 164, 13,
+			45, 15, 195, 27, 50, 82, 42, 87, 77, 54, 41, 27, 12, 5, 235, 162, 134, 132, 120, 120, 247, 170, 165, 44, 65, 70, 130, 55, 0, 0,
+			0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 128, 3, 160, 5,
+			150, 10, 164, 13, 45, 15, 195, 27, 80, 67, 37, 78, 69, 48, 37, 24, 11, 5, 235, 162, 134, 132, 120, 120, 247, 170, 165, 44, 65, 70,
+			130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 240, 0,
+			128, 3, 160, 5, 150, 10, 164, 13, 45, 15, 195, 27, 0, 37, 28, 58, 52, 36, 27, 18, 8, 3, 235, 162, 134, 132, 120, 120, 247, 170,
+			165, 44, 65, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			0, 0, 5, 0, 1, 0, 240, 0, 200, 2, 224, 6, 176, 9, 112, 13, 10, 15, 96, 27, 44, 46, 34, 65, 59, 56, 38, 23, 6, 8,
+			165, 135, 240, 120, 120, 120, 195, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 208, 2, 224, 6, 116, 9, 112, 13, 60, 15, 96, 27, 77, 68, 36, 76, 79, 74,
+			40, 24, 8, 6, 170, 120, 180, 120, 120, 120, 200, 120, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 192, 2, 202, 6, 116, 9, 72, 13, 60, 15, 96, 27, 77, 53,
+			29, 62, 71, 62, 56, 25, 13, 6, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 240, 0, 160, 2, 114, 6, 196, 9, 172, 13, 60, 15,
+			96, 28, 35, 38, 27, 56, 50, 49, 42, 26, 10, 7, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 240, 0, 160, 2, 26, 6, 216, 9,
+			172, 13, 60, 15, 96, 28, 0, 33, 26, 55, 45, 42, 36, 22, 7, 9, 167, 105, 180, 120, 120, 120, 242, 135, 150, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 215, 0, 5, 0, 1, 0,
+			153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 54, 22, 57, 64, 38, 35, 20, 14, 6, 165, 126, 145, 120, 120, 120,
+			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 90, 82, 28, 70, 78, 46, 43, 24, 17, 7, 165, 126,
+			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 45, 74, 26, 66, 74, 44, 41, 23,
+			16, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 153, 0, 176, 1, 56, 3, 216, 9, 194, 11, 151, 14, 244, 26, 30, 45, 20, 54,
+			57, 34, 31, 18, 13, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 153, 0, 176, 1, 56, 3, 216, 9, 194, 11, 151, 14, 244, 26,
+			0, 36, 18, 49, 52, 31, 28, 16, 11, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 184, 0, 72, 2, 172, 3,
+			20, 10, 164, 11, 53, 14, 160, 27, 45, 56, 25, 59, 71, 35, 34, 19, 12, 5, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0,
+			72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 80, 106, 34, 81, 98, 48, 46, 27, 17, 7, 173, 142, 135, 120, 120, 120, 182, 105,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 60, 95, 33, 77, 93, 46, 44, 25, 16, 7, 173, 142, 135, 120,
+			120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 0, 51, 24, 56, 68, 33, 32, 18, 12, 5,
+			173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 45, 39,
+			2, 67, 43, 20, 20, 26, 8, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15,
+			144, 26, 70, 66, 3, 87, 57, 26, 26, 34, 11, 9, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 172, 0, 64, 1, 228, 2, 96, 9,
+			12, 13, 60, 15, 144, 26, 60, 59, 3, 83, 54, 25, 25, 32, 10, 9, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 172, 0, 64, 1,
+			228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 0, 37, 2, 65, 42, 19, 19, 25, 8, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 110, 0,
+			4, 0, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 50, 51, 26, 61, 52, 32, 29, 20, 14, 7, 162, 127,
+			150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 60, 78, 32, 75, 64, 39, 36, 25,
+			18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 60, 67, 30, 71,
+			57, 37, 33, 23, 16, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 138, 1, 212, 3, 56, 9, 224, 11, 136, 14, 144, 26,
+			0, 31, 21, 46, 40, 33, 29, 18, 13, 5, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 50, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6,
+			36, 9, 228, 12, 96, 14, 100, 25, 45, 34, 17, 54, 37, 31, 34, 31, 8, 11, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0,
+			24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 50, 59, 22, 71, 47, 41, 45, 41, 11, 15, 167, 90, 135, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 85, 54, 21, 68, 46, 39, 43, 39, 10, 14, 167, 90, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 40, 42, 19, 60, 41, 35, 38, 35, 9, 12,
+			165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 29, 15, 50, 34, 29,
+			31, 29, 7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 200, 0, 4, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14,
+			95, 27, 50, 49, 28, 59, 69, 41, 43, 30, 17, 6, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 122, 0, 192, 1, 240, 5, 116, 9,
+			228, 12, 246, 14, 95, 27, 70, 71, 34, 71, 83, 49, 52, 37, 20, 8, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 122, 0, 192, 1,
+			240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 64, 32, 68, 79, 47, 49, 35, 19, 7, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			121, 0, 207, 1, 240, 5, 96, 9, 220, 12, 220, 14, 95, 27, 0, 39, 26, 53, 62, 37, 39, 27, 15, 5, 170, 136, 135, 122, 123, 126,
+			197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 0, 0, 6, 0, 1, 0, 235, 0, 79, 3, 103, 5, 206, 9, 184, 12, 181, 14, 193, 27, 45, 62, 28, 63, 72, 40, 41, 26,
+			9, 5, 233, 132, 198, 126, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 235, 0, 79, 3, 103, 5, 206, 9, 184, 12, 181, 14, 193, 27, 60, 108, 37, 83,
+			94, 54, 54, 35, 13, 6, 233, 132, 198, 126, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 220, 0, 42, 3, 252, 4, 36, 9, 128, 12, 41, 14, 224, 27,
+			41, 66, 32, 59, 75, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 211, 0, 97, 2, 24, 4, 39, 9, 164, 12,
+			137, 14, 93, 27, 40, 64, 23, 64, 64, 33, 41, 32, 13, 7, 181, 134, 172, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 201, 0, 152, 1, 52, 3,
+			43, 9, 201, 12, 233, 14, 217, 26, 60, 51, 15, 65, 51, 24, 29, 31, 12, 7, 195, 149, 134, 120, 120, 120, 141, 120, 147, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0,
+			104, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 31, 8, 55, 37, 20, 20, 26, 11, 7, 177, 125, 110, 120, 120, 120, 177, 125,
+			125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			240, 0, 5, 0, 1, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14, 104, 28, 45, 29, 21, 46, 46, 49, 37, 28, 9, 6,
+			184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14, 104, 28, 50, 84, 36, 79, 78, 83,
+			63, 48, 15, 11, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 198, 0, 192, 1, 44, 7, 195, 9, 213, 12, 91, 14, 62, 28, 75, 71,
+			31, 76, 61, 74, 57, 44, 14, 10, 183, 109, 149, 120, 120, 120, 185, 107, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 178, 0, 71, 1, 179, 3, 63, 9, 9, 13, 48, 15,
+			166, 26, 70, 42, 4, 71, 37, 23, 22, 30, 12, 7, 178, 124, 103, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 178, 0, 71, 1, 179, 3, 63, 9,
+			9, 13, 48, 15, 166, 26, 0, 30, 3, 60, 31, 19, 18, 25, 10, 6, 178, 124, 103, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 255, 0, 6, 0, 33, 0,
+			152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 45, 6, 66, 59, 59, 60, 29, 14, 6, 175, 105, 120, 120, 120, 120,
+			175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 40, 65, 9, 78, 70, 70, 71, 34, 16, 8, 167, 105,
+			120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 24, 1, 172, 8, 240, 10, 32, 13, 0, 15, 160, 26, 50, 64, 9, 78, 64, 70, 71, 34,
+			16, 8, 167, 105, 130, 120, 120, 120, 167, 90, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 158, 0, 48, 1, 168, 7, 140, 10, 240, 12, 232, 14, 194, 26, 80, 50, 12, 70,
+			44, 58, 57, 29, 15, 7, 166, 109, 158, 120, 120, 120, 167, 90, 158, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 72, 1, 16, 4, 36, 9, 224, 11, 136, 14, 244, 26,
+			40, 29, 19, 45, 31, 26, 24, 16, 12, 6, 162, 127, 175, 120, 120, 120, 162, 127, 190, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 72, 1, 189, 3, 92, 8, 204, 11,
+			141, 14, 88, 27, 0, 30, 21, 52, 36, 20, 14, 11, 8, 7, 155, 105, 97, 120, 120, 120, 110, 105, 97, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 215, 0, 5, 0, 1, 0, 232, 0,
+			144, 3, 40, 5, 180, 10, 212, 13, 100, 15, 102, 27, 45, 57, 32, 62, 59, 39, 37, 22, 9, 3, 255, 170, 163, 145, 120, 120, 255, 174,
+			173, 44, 60, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 232, 0, 144, 3, 40, 5, 180, 10, 212, 13, 100, 15, 102, 27, 50, 99, 42, 82, 78, 52, 49, 29, 13, 4, 255, 170, 163, 145,
+			120, 120, 255, 174, 173, 44, 60, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 225, 0, 72, 3, 138, 5, 220, 10, 212, 13, 80, 15, 120, 27, 60, 66, 39, 73, 57, 49, 46, 28, 12, 5,
+			247, 162, 178, 142, 120, 120, 255, 174, 190, 44, 55, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 104, 1, 152, 8, 4, 11, 172, 13, 60, 15, 32, 28, 60, 30, 30, 47, 48, 44,
+			40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 104, 1, 152, 8, 4, 11, 112, 13, 20, 15, 32, 28, 0, 26,
+			27, 43, 44, 40, 37, 29, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 245, 0, 5, 0, 1, 0, 200, 0, 208, 1, 188, 7, 216, 9,
+			248, 12, 66, 14, 128, 28, 45, 29, 21, 47, 46, 50, 38, 29, 8, 6, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 208, 1,
+			188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 70, 85, 36, 79, 79, 85, 65, 49, 15, 11, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			196, 0, 200, 1, 210, 7, 234, 9, 8, 13, 76, 14, 119, 28, 60, 72, 33, 73, 72, 78, 59, 45, 13, 10, 183, 105, 134, 120, 120, 120,
+			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 156, 0, 88, 1, 172, 8, 140, 10, 152, 13, 166, 14, 32, 28, 70, 45, 33, 56, 50, 60, 46, 33, 10, 8, 167, 90,
+			195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 144, 0, 72, 1, 232, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 24, 18, 44, 44, 40, 37, 29,
+			8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 20, 0, 6, 0, 1, 0, 56, 1, 168, 2, 8, 7, 136, 9, 32, 13, 141, 14, 32, 29,
+			34, 43, 31, 54, 66, 53, 40, 30, 10, 6, 255, 172, 180, 120, 120, 120, 105, 172, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 56, 1, 168, 2, 8, 7, 136, 9, 32, 13,
+			141, 14, 32, 29, 20, 75, 42, 72, 88, 70, 53, 40, 14, 8, 255, 172, 180, 120, 120, 120, 105, 172, 150, 44, 45, 70, 130, 58, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 56, 1, 168, 2, 8, 7,
+			136, 9, 32, 13, 141, 14, 32, 29, 46, 45, 32, 56, 68, 54, 41, 31, 10, 6, 255, 172, 180, 120, 120, 120, 105, 172, 150, 44, 45, 70,
+			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 240, 0,
+			78, 2, 67, 7, 176, 9, 32, 13, 116, 14, 32, 28, 94, 49, 29, 58, 68, 60, 49, 40, 12, 6, 184, 135, 168, 120, 120, 120, 169, 138,
+			150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			5, 0, 156, 0, 99, 1, 141, 8, 140, 10, 112, 13, 0, 15, 32, 28, 40, 34, 29, 50, 45, 54, 41, 29, 9, 7, 167, 90, 195, 120,
+			120, 120, 122, 120, 135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 112, 13, 10, 15, 32, 28, 0, 30, 30, 47, 45, 43, 40, 31, 9, 8,
+			167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 144, 0, 213, 1, 96, 3, 136, 9, 254, 11, 157, 14, 216, 26, 24, 59,
+			25, 66, 64, 38, 35, 20, 15, 7, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 213, 1, 96, 3, 136, 9, 254, 11, 157, 14,
+			216, 26, 55, 83, 30, 79, 76, 45, 41, 24, 17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 224, 1, 72, 3, 96, 9,
+			244, 11, 35, 15, 224, 27, 65, 84, 34, 78, 94, 48, 55, 28, 16, 7, 170, 120, 90, 120, 120, 120, 170, 75, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0, 184, 0, 209, 1,
+			106, 5, 132, 8, 48, 12, 191, 14, 64, 27, 25, 50, 37, 69, 40, 60, 39, 22, 15, 7, 167, 100, 152, 120, 120, 120, 137, 115, 167, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			208, 0, 149, 1, 246, 6, 152, 8, 128, 12, 191, 14, 64, 27, 48, 46, 32, 58, 36, 60, 35, 23, 14, 7, 155, 105, 150, 120, 120, 120,
+			125, 150, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 1, 0, 160, 0, 54, 1, 199, 7, 136, 9, 228, 12, 191, 14, 64, 27, 30, 33, 24, 51, 34, 29, 39, 25, 16, 7, 155, 105,
+			135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36,
+			0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 248, 7, 136, 9, 72, 13, 191, 14, 64, 27, 0, 30, 22, 48, 32, 28, 37, 24,
+			15, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170,
+			0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0, 175, 0, 65, 1, 197, 3, 73, 9, 19, 13, 53, 15, 164, 26,
+			45, 37, 3, 65, 33, 20, 20, 27, 11, 6, 177, 123, 107, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 175, 0, 65, 1, 197, 3, 73, 9, 19, 13,
+			53, 15, 164, 26, 80, 75, 5, 94, 48, 29, 28, 39, 15, 9, 177, 123, 107, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 173, 0, 70, 1, 126, 4,
+			196, 9, 38, 13, 32, 15, 221, 26, 80, 56, 8, 79, 36, 30, 28, 34, 13, 8, 175, 118, 150, 120, 120, 120, 177, 125, 147, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 158, 0,
+			80, 1, 12, 8, 130, 10, 86, 13, 13, 15, 255, 27, 45, 31, 15, 53, 30, 37, 37, 31, 9, 8, 168, 109, 155, 120, 120, 120, 177, 109,
+			152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 156, 0, 72, 1, 112, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 18, 55, 33, 36, 37, 29, 8, 7, 167, 105, 155, 120,
+			120, 120, 122, 105, 140, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 70, 0, 3, 0, 5, 0, 124, 0, 72, 1, 170, 2, 20, 10, 8, 12, 10, 15, 32, 27, 40, 22, 14, 46, 42, 20,
+			18, 13, 9, 3, 141, 97, 120, 120, 120, 120, 60, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 124, 0, 72, 1, 170, 2, 20, 10, 8, 12, 10, 15, 32, 27, 30, 35,
+			18, 58, 52, 26, 23, 16, 12, 4, 141, 97, 120, 120, 120, 120, 60, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14,
+			128, 26, 0, 72, 32, 68, 70, 45, 36, 28, 20, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 81, 2, 31, 0, 5, 251, 3, 14, 16, 10,
+			2, 0, 251, 4, 5, 238, 6, 31, 245, 248, 21, 249, 255, 20, 1, 2, 248, 237, 9, 252, 240, 21, 12, 254, 3, 231, 222, 231, 223, 229,
+			207, 194, 231, 228, 219, 250, 253, 2, 10, 249, 12, 24, 6, 23, 19, 16, 54, 30, 0, 41, 49, 22, 14, 5, 11, 23, 22, 18, 7, 12,
+			22, 7, 4, 13, 9, 4, 251, 255, 0, 238, 239, 229, 222, 17, 255, 189, 238, 253, 202, 244, 3, 212, 230, 1, 8, 7, 238, 1, 35, 14,
+			5, 12, 6, 0, 246, 9, 18, 249, 26, 22, 209, 0, 46, 252, 6, 15, 229, 15, 49, 245, 217, 248, 12, 2, 241, 240, 238, 244, 10, 1,
+			223, 229, 9, 7, 236, 250, 248, 214, 0, 24, 232, 18, 64, 252, 249, 46, 31, 29, 53, 54, 44, 42, 58, 43, 34, 91, 58, 225, 23, 62,
+			1, 6, 247, 164, 185, 34, 74, 0, 178, 181, 177, 157, 154, 132, 186, 250, 166, 136, 222, 211, 184, 224, 239, 243, 232, 224, 2, 12, 22, 52,
+			54, 76, 50, 233, 52, 125, 41, 37, 77, 19, 46, 107, 41, 15, 77, 72, 32, 34, 16, 238, 21, 60, 2, 234, 22, 240, 188, 246, 25, 224,
+			189, 214, 236, 220, 203, 214, 237, 246, 215, 182, 223, 254, 206, 210, 8, 250, 232, 1, 253, 0, 35, 30, 13, 7, 4, 23, 29, 12, 9, 3,
+			28, 55, 248, 228, 53, 44, 235, 247, 18, 30, 0, 213, 19, 51, 219, 216, 12, 248, 240, 242, 238, 16, 11, 238, 3, 10, 252, 249, 0, 21,
+			250, 223, 45, 63, 238, 237, 12, 20, 41, 11, 243, 17, 253, 226, 251, 255, 255, 0, 238, 226, 220, 3, 45, 230, 204, 23, 0, 234, 40, 12,
+			248, 44, 1, 218, 11, 11, 247, 8, 31, 38, 238, 215, 15, 232, 185, 0, 4, 241, 49, 5, 190, 20, 57, 236, 241, 28, 249, 228, 8, 245,
+			204, 29, 81, 233, 208, 36, 11, 225, 7, 3, 246, 26, 5, 220, 253, 15, 236, 245, 28, 11, 242, 1, 253, 232, 9, 32, 248, 255, 47, 5,
+			227, 34, 25, 223, 27, 56, 239, 245, 24, 246, 0, 41, 15, 240, 14, 41, 246, 204, 252, 17, 244, 252, 238, 219, 24, 33, 214, 223, 9, 232,
+			220, 11, 15, 240, 244, 242, 232, 15, 31, 245, 252, 35, 18, 232, 223, 247, 4, 6, 33, 24, 251, 20, 250, 208, 40, 69, 243, 12, 26, 211,
+			249, 46, 249, 233, 14, 30, 12, 230, 222, 229, 235, 34, 39, 216, 225, 20, 238, 232, 41, 27, 210, 223, 25, 6, 223, 2, 19, 242, 7, 27,
+			233, 239, 31, 250, 230, 36, 28, 231, 8, 40, 4, 253, 10, 252, 0, 41, 50, 246, 212, 12, 15, 204, 240, 32, 231, 238, 18, 211, 230, 54,
+			0, 216, 21, 12, 227, 237, 251, 2, 0, 9, 35, 251, 224, 27, 18, 237, 22, 7, 221, 12, 18, 229, 3, 40, 5, 231, 18, 44, 225, 218,
+			67, 25, 169, 224, 23, 0, 37, 19, 201, 6, 63, 231, 213, 46, 30, 223, 1, 15, 212, 238, 53, 16, 216, 250, 13, 238, 252, 26, 247, 237,
+			26, 4, 224, 16, 24, 228, 1, 36, 239, 226, 12, 16, 11, 13, 241, 249, 42, 27, 232, 236, 4, 14, 18, 3, 246, 2, 18, 255, 222, 248,
+			29, 244, 219, 0, 250, 251, 29, 240, 206, 13, 34, 252, 241, 246, 250, 252, 8, 0, 0, 0, 45, 0, 3, 0, 5, 0, 136, 0, 200, 0,
+			64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 45, 5, 8, 15, 6, 4, 2, 2, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
+			30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0,
+			136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 14, 14, 24, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175,
+			200, 212, 187, 44, 30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 14, 14, 24, 10, 7, 3, 3, 0, 0, 200, 212,
+			187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 24, 0, 3, 0, 5, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 25, 15, 14, 25,
+			10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21,
+			0, 15, 14, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 57, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 200, 0, 64, 6, 40, 10, 232, 13,
+			24, 16, 124, 21, 0, 15, 14, 25, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 57, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 45, 0, 3, 0, 5, 0, 116, 0,
+			232, 0, 164, 6, 176, 9, 152, 13, 60, 15, 124, 21, 45, 2, 11, 6, 4, 2, 2, 2, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
+			187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 7, 17, 10, 7, 14, 3, 3, 0, 0, 200, 212, 187, 255,
+			255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 7, 17, 10, 7, 3, 3, 3, 0, 0,
+			200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 24, 0, 3, 0, 5, 0, 136, 0, 216, 1, 64, 6, 196, 9, 128, 12, 100, 15, 124, 21, 25, 14,
+			3, 36, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9, 128, 12, 100, 15,
+			124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 196, 9,
+			128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 185, 3, 16, 0, 255, 254,
+			255, 0, 0, 2, 3, 4, 4, 4, 3, 3, 3, 1, 1, 1, 1, 0, 0, 255, 253, 251, 252, 253, 254, 253, 254, 255, 255, 1, 4, 4,
+			6, 4, 5, 3, 3, 5, 4, 2, 0, 1, 0, 255, 255, 253, 252, 250, 251, 249, 251, 252, 255, 0, 2, 3, 5, 3, 5, 8, 12, 12,
+			13, 15, 16, 14, 17, 233, 133, 161, 0, 56, 75, 57, 15, 3, 245, 228, 211, 211, 248, 30, 57, 51, 22, 255, 233, 218, 213, 237, 5, 23,
+			25, 25, 18, 1, 240, 222, 226, 240, 2, 18, 31, 27, 12, 250, 250, 245, 243, 248, 254, 4, 9, 8, 14, 8, 255, 240, 241, 250, 0, 2,
+			8, 10, 5, 3, 0, 254, 251, 247, 247, 0, 6, 10, 11, 5, 1, 254, 247, 255, 1, 0, 2, 0, 1, 4, 0, 254, 248, 250, 253, 254,
+			7, 13, 9, 6, 1, 251, 249, 248, 250, 253, 3, 8, 14, 11, 4, 251, 247, 248, 245, 250, 1, 7, 10, 13, 5, 1, 250, 244, 249, 253,
+			0, 9, 14, 14, 5, 0, 238, 246, 249, 246, 250, 4, 16, 16, 7, 7, 4, 252, 249, 243, 242, 250, 1, 8, 12, 8, 4, 0, 246, 0,
+			254, 4, 16, 20, 3, 223, 7, 7, 253, 0, 235, 234, 1, 2, 17, 13, 1, 0, 254, 253, 0, 6, 20, 21, 11, 5, 0, 243, 226, 224,
+			233, 253, 13, 20, 20, 13, 2, 246, 249, 252, 0, 8, 7, 15, 13, 254, 254, 244, 237, 245, 251, 9, 15, 10, 14, 2, 245, 250, 246, 250,
+			2, 3, 6, 5, 0, 254, 251, 252, 254, 4, 15, 14, 8, 252, 254, 251, 248, 251, 252, 2, 5, 0, 2, 249, 253, 0, 255, 0, 1, 9,
+			19, 8, 3, 245, 243, 247, 251, 5, 6, 15, 9, 250, 253, 3, 241, 244, 249, 11, 1, 251, 24, 8, 240, 4, 4, 5, 14, 251, 1, 18,
+			237, 0, 0, 244, 247, 251, 251, 8, 6, 238, 250, 1, 8, 16, 8, 253, 2, 22, 12, 15, 0, 250, 12, 26, 12, 184, 158, 200, 25, 50,
+			34, 29, 6, 12, 2, 0, 252, 243, 255, 14, 30, 20, 251, 218, 219, 246, 251, 16, 21, 20, 253, 0, 4, 242, 223, 232, 7, 26, 27, 5,
+			8, 7, 248, 237, 243, 14, 21, 13, 6, 248, 247, 236, 246, 255, 15, 11, 11, 10, 255, 233, 193, 224, 12, 33, 31, 31, 28, 7, 8, 255,
+			2, 222, 207, 253, 22, 29, 2, 255, 245, 234, 243, 0, 10, 251, 253, 9, 33, 23, 252, 244, 246, 0, 2, 5, 12, 5, 246, 243, 252, 254,
+			0, 1, 0, 254, 255, 2, 4, 7, 253, 249, 2, 9, 9, 4, 255, 255, 251, 254, 3, 7, 2, 250, 250, 2, 2, 247, 251, 3, 3, 1,
+			4, 2, 4, 0, 0, 3, 2, 0, 0, 1, 0, 250, 254, 0, 7, 2, 252, 1, 3, 1, 252, 252, 0, 1, 5, 7, 8, 1, 254, 248,
+			251, 255, 1, 4, 3, 2, 3, 2, 0, 252, 251, 252, 1, 3, 4, 0, 4, 0, 2, 252, 254, 0, 2, 1, 0, 2, 0, 1, 253, 250,
+			7, 2, 254, 3, 253, 251, 2, 4, 0, 13, 2, 253, 251, 247, 255, 8, 1, 251, 0, 4, 4, 7, 254, 0, 0, 254, 249, 254, 0, 3,
+			14, 8, 252, 253, 253, 246, 251, 252, 255, 11, 16, 8, 0, 244, 252, 0, 3, 4, 4, 4, 255, 251, 252, 1, 0, 0, 252, 254, 3, 5,
+			6, 4, 255, 248, 248, 7, 2, 255, 255, 12, 10, 4, 254, 245, 248, 252, 0, 0, 7, 4, 0, 0, 253, 2, 0, 253, 255, 0, 3, 2,
+			2, 6, 7, 254, 253, 255, 248, 250, 7, 9, 2, 1, 0, 4, 5, 253, 244, 246, 255, 1, 9, 13, 0, 255, 255, 0, 254, 250, 0, 7,
+			6, 2, 0, 1, 1, 254, 246, 245, 2, 15, 11, 255, 249, 249, 5, 3, 255, 254, 253, 0, 8, 2, 5, 1, 251, 255, 0, 1, 5, 1,
+			252, 252, 0, 3, 0, 2, 8, 0, 253, 0, 255, 2, 253, 255, 0, 0, 0, 1, 2, 10, 0, 251, 255, 4, 7, 3, 249, 246, 250, 2,
+			11, 9, 253, 246, 255, 8, 6, 1, 253, 253, 3, 254, 2, 0, 254, 252, 2, 7, 8, 1, 249, 253, 0, 0, 0, 3, 6, 0, 254, 255,
+			1, 1, 0, 254, 250, 254, 5, 10, 9, 0, 246, 252, 2, 5, 5, 255, 255, 0, 251, 255, 5, 255, 0, 3, 2, 4, 254, 252, 0, 0,
+			0, 3, 2, 5, 0, 251, 0, 253, 0, 0, 0, 3, 3, 5, 4, 0, 253, 252, 250, 0, 7, 3, 2, 0, 254, 0, 255, 253, 253, 255,
+			3, 3, 5, 5, 0, 254, 253, 251, 3, 9, 7, 0, 253, 252, 251, 251, 253, 254, 2, 8, 9, 4, 2, 254, 252, 254, 255, 2, 5, 5,
+			0, 255, 250, 253, 2, 2, 1, 1, 0, 3, 1, 0, 253, 251, 254, 1, 5, 5, 0, 249, 254, 3, 5, 4, 3, 1, 254, 254, 255, 0,
+			0, 0, 0, 6, 2, 254, 253, 254, 253, 0, 2, 5, 7, 0, 255, 254, 253, 0, 0, 3, 7, 4, 251, 249, 254, 3, 6, 3, 2, 0,
+			254, 0, 254, 252, 252, 255, 1, 5, 8, 6, 2, 0, 253, 251, 253, 254, 3, 6, 5, 4, 0, 251, 253, 255, 252, 0, 1, 2, 5, 2,
+			1, 0, 254, 0, 0, 2, 0, 254, 0, 0, 0, 255, 5, 5, 2, 0, 253, 0, 0, 254, 254, 0, 0, 0, 0, 0, 3, 0, 5, 0,
+			128, 0, 64, 1, 196, 4, 244, 6, 148, 12, 20, 15, 225, 25, 20, 24, 6, 51, 24, 18, 0, 9, 3, 6, 105, 155, 167, 142, 180, 175,
+			105, 155, 167, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 5, 0, 136, 0, 208, 1, 80, 5, 228, 7, 108, 12, 216, 14, 225, 25, 30, 67, 30, 90, 45, 30, 21, 15, 3, 9, 105, 125,
+			167, 142, 150, 175, 105, 125, 167, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 240, 1, 80, 5, 12, 8, 108, 12, 56, 14, 225, 25, 0, 70, 30, 84, 51, 33, 18, 18,
+			3, 9, 105, 170, 167, 157, 150, 175, 105, 170, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 3, 0, 5, 0, 228, 0, 80, 1, 136, 4, 164, 6, 168, 12, 236, 14, 200, 25,
+			20, 31, 18, 39, 27, 15, 0, 6, 6, 6, 150, 252, 157, 160, 150, 175, 150, 252, 157, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 224, 0, 32, 2, 0, 5, 68, 7, 128, 12,
+			76, 14, 200, 25, 30, 77, 15, 87, 66, 36, 15, 18, 6, 6, 150, 167, 157, 160, 150, 175, 150, 167, 157, 44, 45, 70, 130, 56, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 232, 0, 168, 2, 0, 5,
+			252, 8, 128, 12, 36, 14, 200, 25, 0, 56, 45, 60, 60, 27, 27, 21, 3, 6, 150, 167, 207, 255, 182, 175, 150, 167, 207, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 4, 0,
+			5, 0, 232, 0, 136, 1, 196, 4, 164, 6, 184, 12, 220, 15, 124, 21, 20, 31, 30, 36, 24, 15, 0, 3, 0, 0, 180, 152, 180, 150,
+			250, 175, 180, 152, 180, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 5, 0, 0, 1, 248, 1, 160, 5, 52, 8, 184, 12, 200, 15, 124, 21, 20, 61, 27, 69, 36, 24, 9, 12, 3, 3,
+			197, 152, 217, 210, 250, 175, 197, 152, 217, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 5, 0, 0, 1, 72, 2, 4, 6, 132, 8, 184, 12, 90, 14, 124, 21, 24, 80, 30, 84, 54, 39,
+			24, 15, 3, 3, 197, 152, 217, 210, 250, 175, 197, 152, 217, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 120, 2, 121, 6, 64, 9, 184, 12, 90, 14, 124, 21, 0, 61,
+			30, 69, 66, 45, 42, 27, 3, 3, 252, 152, 157, 210, 250, 175, 252, 152, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 3, 0, 5, 0, 208, 0, 136, 1, 176, 4, 164, 6,
+			80, 12, 185, 15, 169, 26, 20, 30, 27, 42, 21, 12, 0, 3, 0, 6, 150, 147, 172, 160, 150, 175, 150, 147, 172, 44, 45, 70, 130, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 208, 0, 192, 1,
+			180, 5, 52, 8, 80, 12, 185, 15, 169, 26, 30, 39, 27, 51, 30, 21, 15, 12, 0, 6, 150, 185, 152, 160, 150, 175, 150, 185, 152, 44,
+			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			208, 0, 240, 1, 224, 6, 16, 9, 148, 12, 76, 14, 88, 27, 0, 58, 27, 75, 33, 33, 30, 24, 6, 6, 150, 142, 170, 160, 150, 175,
+			150, 142, 170, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 0, 0, 3, 0, 5, 0, 200, 0, 136, 1, 76, 4, 164, 6, 212, 12, 14, 15, 150, 25, 19, 27, 39, 27, 18, 12, 0, 3,
+			6, 3, 150, 155, 195, 137, 255, 252, 150, 155, 195, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 200, 0, 204, 1, 176, 4, 168, 7, 212, 12, 14, 15, 150, 25, 30, 71, 39, 72,
+			51, 21, 15, 12, 6, 6, 150, 155, 195, 137, 255, 252, 150, 155, 195, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 80, 2, 252, 3, 76, 9, 88, 12, 196, 14, 150, 25,
+			0, 78, 40, 78, 52, 23, 20, 20, 5, 5, 150, 155, 162, 185, 217, 210, 150, 155, 162, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 3, 0, 5, 0, 128, 0, 64, 1, 196, 4,
+			164, 6, 148, 12, 20, 15, 225, 25, 20, 24, 6, 51, 24, 18, 0, 9, 3, 6, 105, 155, 167, 142, 180, 175, 105, 155, 167, 44, 45, 70,
+			130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 136, 0,
+			208, 1, 80, 5, 228, 7, 108, 12, 216, 14, 225, 25, 30, 67, 30, 90, 45, 30, 21, 15, 3, 9, 105, 125, 167, 142, 150, 175, 105, 125,
+			167, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 136, 0, 240, 1, 80, 5, 12, 8, 108, 12, 56, 14, 225, 25, 0, 70, 30, 84, 51, 33, 18, 18, 3, 9, 105, 170, 167, 157,
+			150, 175, 105, 170, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 139, 0, 4, 0, 1, 0, 128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14, 96, 27, 50, 59, 34, 66, 80, 45,
+			47, 36, 16, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14, 96, 27, 50, 81,
+			40, 76, 93, 52, 55, 42, 15, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14,
+			96, 27, 40, 69, 37, 71, 86, 48, 51, 39, 14, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 128, 0, 40, 2, 161, 5, 96, 9,
+			188, 12, 116, 14, 96, 27, 0, 46, 31, 58, 70, 39, 35, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 3, 0, 1, 0,
+			196, 0, 229, 1, 255, 3, 0, 10, 28, 12, 116, 14, 160, 26, 53, 62, 35, 71, 73, 28, 34, 20, 9, 8, 162, 120, 132, 120, 120, 120,
+			162, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 7, 0, 208, 0, 229, 1, 123, 3, 220, 10, 204, 11, 141, 14, 0, 26, 75, 64, 38, 81, 60, 33, 35, 16, 11, 8, 162, 105,
+			87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 194, 1, 24, 3, 164, 11, 68, 12, 241, 14, 0, 26, 0, 27, 28, 46, 28, 31, 28, 16,
+			11, 8, 162, 135, 87, 120, 120, 120, 162, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 151, 0, 4, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28,
+			46, 50, 30, 67, 55, 40, 30, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13,
+			191, 14, 32, 28, 40, 84, 40, 87, 72, 52, 39, 24, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0,
+			0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 32, 1, 88, 3, 40, 5,
+			140, 10, 112, 13, 191, 14, 32, 28, 65, 82, 39, 86, 71, 52, 38, 24, 11, 5, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75,
+			130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 32, 1,
+			88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 50, 30, 67, 55, 40, 30, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170,
+			165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			150, 0, 4, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 40, 30, 58, 58, 36, 29, 23, 13, 0,
+			180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 60, 78, 42, 80, 80, 51,
+			40, 33, 18, 0, 180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 40, 55,
+			35, 67, 67, 43, 33, 27, 15, 0, 180, 150, 172, 120, 120, 120, 200, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14,
+			160, 27, 0, 33, 30, 51, 51, 33, 28, 23, 12, 0, 180, 150, 177, 120, 120, 120, 200, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 200, 0, 4, 0, 1, 0, 248, 0, 134, 2,
+			244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 45, 39, 28, 52, 57, 51, 36, 22, 7, 5, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 85, 83, 41, 76, 83, 75, 53, 33, 11, 7, 193, 135, 180, 120, 120, 120,
+			217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 70, 67, 37, 68, 75, 67, 47, 29, 10, 6, 193, 135,
+			180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 248, 0, 134, 2, 244, 6, 196, 9, 52, 13, 196, 14, 64, 28, 0, 31, 25, 46, 50, 45, 32, 20,
+			6, 4, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 100, 0, 4, 0, 1, 0, 192, 0, 144, 1, 168, 7, 40, 10, 92, 13, 120, 15, 96, 25,
+			50, 51, 30, 72, 58, 50, 42, 30, 12, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0, 152, 1, 148, 7, 40, 10, 92, 13,
+			120, 15, 96, 25, 60, 92, 41, 98, 79, 68, 57, 41, 17, 7, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 152, 1, 148, 7,
+			40, 10, 92, 13, 120, 15, 96, 25, 40, 74, 37, 88, 71, 61, 51, 37, 15, 6, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0,
+			152, 1, 148, 7, 40, 10, 92, 13, 120, 15, 96, 25, 0, 43, 28, 67, 54, 46, 39, 28, 11, 5, 160, 90, 120, 120, 120, 120, 130, 90,
+			120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			149, 0, 4, 0, 1, 0, 176, 0, 152, 1, 128, 7, 0, 10, 92, 13, 20, 15, 96, 25, 50, 53, 26, 83, 45, 45, 42, 25, 14, 7,
+			150, 105, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0, 152, 1, 128, 7, 20, 10, 92, 13, 120, 15, 96, 25, 60, 98, 38, 106, 57, 67,
+			67, 39, 16, 7, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 160, 1, 108, 7, 20, 10, 92, 13, 120, 15, 96, 25, 40, 73,
+			35, 90, 49, 57, 57, 33, 13, 7, 160, 97, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 160, 1, 108, 7, 20, 10, 92, 13, 120, 15,
+			96, 25, 0, 50, 31, 75, 42, 47, 47, 27, 10, 8, 160, 105, 120, 120, 120, 120, 130, 60, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 170, 0, 120, 1,
+			178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 45, 44, 25, 67, 44, 47, 45, 28, 11, 5, 160, 91, 120, 131, 120, 120, 130, 95, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 70, 88, 36, 95, 63, 66, 64, 39, 16, 7, 160, 91, 120, 131, 120, 120,
+			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 60, 70, 32, 85, 56, 59, 58, 35, 14, 6, 160, 91,
+			120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 170, 0, 120, 1, 178, 7, 25, 10, 37, 13, 55, 15, 96, 25, 0, 35, 22, 60, 39, 42, 41, 25,
+			10, 4, 160, 91, 120, 131, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 232, 0, 218, 2, 222, 3, 60, 10, 224, 11, 222, 13, 160, 28,
+			50, 64, 34, 59, 74, 34, 35, 24, 9, 7, 230, 150, 120, 120, 120, 120, 185, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 232, 0, 158, 2, 178, 3, 60, 10, 224, 11,
+			222, 13, 32, 28, 60, 103, 27, 76, 97, 40, 40, 26, 14, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 232, 0, 158, 2, 178, 3,
+			60, 10, 224, 11, 222, 13, 32, 28, 40, 102, 27, 76, 97, 39, 40, 26, 14, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 228, 0,
+			118, 2, 134, 3, 140, 10, 224, 11, 66, 14, 32, 28, 0, 56, 31, 52, 75, 41, 39, 25, 13, 9, 177, 150, 120, 120, 120, 120, 177, 75,
+			120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			185, 0, 4, 0, 1, 0, 216, 0, 142, 2, 250, 4, 26, 10, 32, 13, 20, 15, 210, 27, 45, 45, 30, 55, 66, 39, 38, 24, 13, 5,
+			185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 216, 0, 142, 2, 250, 4, 26, 10, 12, 13, 20, 15, 210, 27, 80, 86, 39, 78, 90, 51,
+			50, 31, 18, 7, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 142, 2, 250, 4, 26, 10, 32, 13, 20, 15, 210, 27, 60, 75,
+			37, 73, 84, 47, 47, 29, 16, 6, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 216, 0, 142, 2, 250, 4, 26, 10, 32, 13, 20, 15,
+			210, 27, 0, 39, 28, 51, 61, 36, 36, 22, 12, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 140, 0, 4, 0, 1, 0, 184, 0, 189, 1,
+			134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 50, 57, 28, 61, 63, 40, 32, 25, 18, 7, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 50, 83, 38, 71, 75, 52, 42, 33, 24, 6, 162, 135, 150, 120, 120, 120,
+			162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 40, 69, 35, 65, 68, 47, 39, 30, 22, 6, 162, 135,
+			150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 189, 1, 134, 3, 60, 10, 88, 12, 141, 14, 128, 26, 0, 47, 26, 56, 57, 37, 29, 23,
+			16, 7, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 244, 0, 77, 3, 87, 4, 160, 10, 148, 12, 41, 14, 96, 27,
+			50, 59, 26, 60, 76, 28, 19, 17, 5, 7, 225, 195, 120, 120, 120, 120, 165, 105, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 244, 0, 7, 3, 43, 4, 240, 10, 148, 12,
+			41, 14, 96, 27, 45, 107, 29, 67, 105, 48, 41, 41, 13, 6, 200, 165, 135, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 57, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 27, 3, 255, 3,
+			64, 11, 228, 12, 41, 14, 224, 27, 59, 101, 33, 69, 92, 41, 45, 45, 11, 6, 200, 135, 150, 120, 120, 120, 200, 75, 210, 44, 45, 70,
+			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 228, 0,
+			7, 3, 10, 4, 240, 10, 52, 13, 41, 14, 224, 27, 58, 94, 32, 72, 86, 48, 50, 47, 11, 6, 200, 135, 150, 120, 120, 120, 200, 90,
+			135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 228, 0, 243, 2, 255, 3, 160, 10, 148, 12, 41, 14, 224, 27, 38, 63, 32, 63, 82, 35, 38, 36, 13, 7, 167, 135, 120, 120,
+			120, 120, 167, 75, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 164, 0, 27, 3, 98, 4, 20, 10, 148, 12, 41, 14, 224, 27, 0, 39, 23, 59, 58, 28, 24, 24, 7, 7,
+			167, 120, 120, 120, 120, 120, 227, 105, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 140, 0, 244, 1, 172, 5, 36, 9, 248, 12, 41, 14, 32, 27, 45, 48,
+			30, 63, 56, 56, 40, 40, 15, 8, 167, 135, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 140, 0, 224, 1, 128, 5, 16, 9, 148, 12, 41, 14,
+			32, 27, 48, 69, 26, 68, 82, 75, 61, 50, 25, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 172, 0, 224, 1, 128, 5, 16, 9,
+			168, 12, 41, 14, 160, 27, 41, 75, 33, 70, 90, 74, 60, 53, 17, 8, 170, 120, 150, 120, 120, 120, 170, 120, 90, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 204, 0, 249, 1,
+			139, 5, 16, 9, 168, 12, 41, 14, 160, 27, 78, 53, 34, 68, 67, 54, 45, 35, 15, 8, 170, 120, 150, 120, 120, 120, 140, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			204, 0, 33, 2, 139, 5, 16, 9, 168, 12, 141, 14, 160, 27, 0, 35, 31, 52, 54, 52, 38, 30, 11, 8, 170, 135, 150, 120, 120, 120,
+			140, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 76, 0, 4, 0, 45, 0, 40, 0, 112, 1, 68, 3, 36, 9, 28, 12, 216, 14, 32, 28, 0, 45, 19, 77, 28, 16, 16, 12,
+			8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 37, 0, 40, 0, 112, 1, 68, 3, 36, 9, 28, 12, 216, 14, 32, 28, 40, 45, 19, 77,
+			28, 16, 16, 12, 8, 0, 120, 105, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 37, 0, 72, 0, 104, 1, 153, 4, 36, 9, 148, 12, 166, 14, 192, 27,
+			36, 46, 16, 80, 33, 22, 26, 17, 13, 0, 120, 90, 120, 120, 120, 120, 120, 90, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 40, 0, 79, 1, 221, 7, 96, 9, 208, 12,
+			116, 14, 192, 27, 0, 90, 9, 86, 74, 89, 97, 58, 13, 0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 33, 0, 152, 0,
+			48, 1, 174, 8, 200, 10, 92, 13, 135, 15, 160, 26, 52, 58, 8, 76, 67, 65, 53, 30, 14, 8, 180, 120, 120, 120, 120, 120, 180, 105,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 152, 0, 40, 1, 172, 8, 4, 11, 92, 13, 135, 15, 160, 26, 75, 69, 8, 83, 73, 74, 75, 36, 17, 8, 167, 105, 120, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 152, 0, 39, 1, 229, 8, 4, 11, 12, 13, 216, 14, 64, 26, 40, 43, 8, 60, 60, 63, 63, 34, 11, 8,
+			167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 125, 0, 0, 1, 56, 9, 4, 11, 20, 13, 0, 15, 64, 26, 40, 33, 8, 52, 52, 53,
+			54, 29, 11, 8, 167, 99, 114, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 84, 0, 216, 0, 96, 9, 4, 11, 32, 13, 60, 15, 64, 26, 0, 20,
+			8, 40, 41, 39, 40, 23, 10, 8, 167, 90, 105, 120, 120, 120, 167, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 152, 0, 209, 1, 112, 3, 80, 10,
+			104, 11, 141, 14, 192, 27, 43, 48, 27, 57, 61, 29, 29, 16, 12, 6, 162, 135, 165, 120, 120, 120, 117, 105, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 209, 1,
+			68, 3, 80, 10, 104, 11, 141, 14, 32, 27, 93, 92, 29, 72, 80, 48, 44, 26, 16, 6, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			168, 0, 209, 1, 13, 3, 120, 10, 104, 11, 141, 14, 160, 27, 42, 77, 32, 74, 65, 49, 43, 25, 18, 7, 167, 135, 120, 120, 120, 120,
+			122, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 200, 0, 13, 2, 57, 3, 120, 10, 104, 11, 141, 14, 160, 27, 77, 39, 27, 46, 51, 38, 36, 14, 10, 7, 167, 135,
+			135, 120, 120, 120, 137, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 232, 0, 18, 2, 233, 3, 60, 10, 8, 12, 141, 14, 160, 27, 0, 26, 30, 41, 48, 23, 20, 17,
+			8, 7, 167, 120, 135, 120, 120, 120, 137, 105, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6, 212, 8, 148, 12, 41, 14, 64, 26,
+			42, 48, 17, 72, 53, 40, 40, 37, 11, 0, 120, 150, 135, 120, 120, 120, 60, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 128, 1, 0, 5, 232, 8, 48, 12,
+			136, 14, 192, 25, 40, 67, 19, 79, 82, 64, 53, 45, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 152, 1, 232, 3,
+			96, 9, 28, 12, 236, 14, 128, 26, 50, 62, 26, 66, 68, 45, 37, 28, 21, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 84, 0,
+			88, 1, 212, 3, 196, 9, 148, 12, 196, 14, 192, 25, 67, 56, 16, 83, 38, 36, 30, 29, 13, 0, 120, 145, 135, 120, 120, 120, 60, 100,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 27, 16, 57, 35, 17, 20, 20, 10, 0, 120, 135, 135, 120,
+			120, 120, 60, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6, 212, 8, 148, 12, 41, 14, 64, 26, 42, 43, 17, 65, 54, 40,
+			34, 31, 11, 7, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 104, 1, 26, 6, 212, 8, 148, 12, 116, 14, 192, 25, 40, 71,
+			19, 81, 83, 74, 54, 46, 18, 7, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 88, 0, 104, 1, 48, 6, 172, 8, 148, 12, 116, 14,
+			192, 25, 50, 73, 19, 91, 65, 65, 53, 46, 20, 7, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 84, 0, 64, 1, 106, 5, 192, 8,
+			68, 12, 116, 14, 192, 25, 67, 30, 11, 58, 41, 36, 31, 23, 13, 7, 165, 135, 135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 84, 0, 34, 1,
+			255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 28, 16, 54, 35, 17, 20, 20, 9, 7, 165, 135, 135, 120, 120, 120, 105, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0,
+			6, 0, 1, 0, 236, 0, 82, 3, 84, 5, 116, 9, 88, 12, 116, 14, 224, 27, 50, 57, 28, 58, 75, 41, 43, 27, 10, 8, 250, 120,
+			210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 236, 0, 62, 3, 84, 5, 136, 9, 88, 12, 116, 14, 224, 27, 66, 104, 30, 81, 98, 53, 57, 36,
+			12, 6, 225, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 220, 0, 42, 3, 252, 4, 36, 9, 128, 12, 41, 14, 224, 27, 41, 69, 27, 59,
+			81, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 173, 2, 87, 4, 16, 9, 48, 12, 41, 14, 128, 27,
+			40, 60, 28, 49, 77, 34, 51, 36, 15, 6, 237, 207, 192, 120, 120, 120, 141, 120, 147, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 0, 1, 234, 1, 189, 3, 16, 9, 8, 12,
+			41, 14, 96, 27, 40, 62, 36, 68, 59, 21, 35, 23, 15, 8, 205, 90, 180, 120, 120, 120, 145, 120, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 172, 0, 232, 1, 132, 3,
+			192, 8, 168, 12, 60, 15, 96, 27, 0, 29, 25, 50, 42, 16, 18, 13, 11, 9, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70,
+			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 6, 0,
+			1, 0, 232, 0, 38, 2, 117, 5, 116, 9, 108, 12, 10, 15, 96, 28, 46, 56, 40, 60, 61, 44, 32, 36, 20, 8, 167, 120, 165, 120,
+			120, 120, 227, 150, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 248, 0, 118, 2, 73, 5, 36, 9, 28, 12, 166, 14, 96, 28, 25, 107, 47, 85, 109, 75, 55, 45, 19, 8,
+			167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 118, 2, 73, 5, 212, 8, 28, 12, 141, 14, 96, 28, 43, 79, 36, 73, 95, 72,
+			54, 42, 18, 7, 170, 120, 165, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 8, 1, 18, 2, 117, 5, 132, 8, 204, 11, 166, 14, 96, 28, 48, 53,
+			24, 70, 70, 36, 32, 26, 15, 8, 165, 120, 135, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0, 192, 0, 174, 1, 197, 4, 172, 8, 204, 11, 141, 14,
+			224, 28, 46, 40, 28, 64, 39, 27, 18, 16, 8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 134, 1, 189, 3, 92, 8,
+			204, 11, 141, 14, 224, 28, 0, 33, 24, 58, 38, 22, 15, 12, 9, 8, 152, 120, 75, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 226, 0, 7, 0, 5, 0,
+			44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 51, 47, 28, 58, 63, 37, 40, 27, 4, 4, 167, 165, 165, 120, 120, 120,
+			167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 44, 1, 92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 70, 100, 41, 85, 92, 54, 58, 39, 9, 7, 167, 165,
+			165, 120, 120, 120, 167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 44, 1, 120, 3, 216, 4, 200, 10, 72, 13, 191, 14, 64, 27, 15, 92, 39, 80, 87, 51, 55, 37,
+			8, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 60, 70, 130, 55, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 33, 0, 20, 1, 80, 3, 29, 5, 216, 9, 72, 13, 136, 14, 64, 27, 23, 59, 29, 68,
+			71, 53, 51, 35, 8, 6, 167, 172, 120, 120, 120, 120, 167, 172, 165, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 216, 0, 16, 3, 4, 6, 196, 9, 52, 13, 176, 14, 64, 27,
+			33, 43, 32, 66, 56, 47, 43, 39, 8, 7, 167, 150, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 212, 0, 232, 1, 188, 7, 40, 10, 92, 13,
+			120, 15, 64, 27, 34, 35, 37, 54, 51, 51, 39, 38, 13, 9, 167, 90, 180, 120, 120, 120, 137, 75, 150, 44, 45, 70, 130, 53, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 196, 0, 159, 1, 252, 7,
+			40, 10, 112, 13, 120, 15, 220, 27, 0, 37, 39, 55, 48, 48, 39, 32, 11, 10, 167, 90, 114, 120, 120, 120, 122, 75, 90, 44, 45, 70,
+			130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 7, 0,
+			1, 0, 16, 1, 53, 2, 12, 3, 160, 10, 244, 11, 35, 15, 96, 28, 24, 63, 33, 62, 70, 43, 37, 17, 11, 7, 167, 120, 90, 120,
+			120, 120, 167, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 0, 1, 33, 2, 12, 3, 160, 10, 244, 11, 35, 15, 224, 27, 49, 112, 43, 87, 92, 61, 53, 26, 15, 6,
+			165, 120, 90, 120, 120, 120, 165, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 33, 2, 72, 3, 40, 10, 244, 11, 35, 15, 224, 27, 65, 92, 39, 81, 98, 49,
+			57, 29, 17, 7, 170, 120, 90, 120, 120, 120, 170, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 37, 0, 184, 0, 209, 1, 106, 5, 172, 8, 108, 12, 216, 14, 64, 27, 30, 48,
+			36, 68, 39, 59, 38, 22, 15, 7, 167, 100, 152, 120, 120, 120, 137, 115, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 208, 0, 149, 1, 246, 6, 172, 8, 188, 12, 236, 14,
+			64, 27, 48, 43, 32, 56, 36, 59, 35, 22, 13, 7, 155, 105, 150, 120, 120, 120, 125, 150, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 160, 0, 54, 1, 199, 7, 136, 9,
+			112, 13, 60, 15, 64, 27, 26, 35, 25, 53, 36, 30, 41, 27, 16, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1,
+			210, 7, 196, 9, 92, 13, 60, 15, 64, 28, 0, 24, 27, 45, 27, 20, 32, 21, 12, 7, 157, 105, 135, 120, 120, 120, 82, 105, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0,
+			6, 0, 1, 0, 96, 0, 104, 1, 92, 8, 80, 10, 232, 13, 60, 15, 160, 27, 42, 48, 10, 66, 51, 58, 42, 33, 10, 8, 155, 165,
+			150, 120, 120, 120, 155, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 104, 0, 112, 1, 108, 8, 160, 10, 72, 13, 60, 15, 32, 27, 70, 59, 19, 64, 74, 76, 66, 36,
+			14, 8, 150, 120, 150, 120, 120, 120, 150, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 104, 0, 119, 1, 52, 8, 160, 10, 72, 13, 60, 15, 32, 27, 40, 52, 18, 61,
+			70, 72, 63, 34, 14, 7, 150, 120, 150, 120, 120, 120, 150, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 239, 1, 111, 7, 196, 9, 112, 13, 60, 15, 64, 27,
+			44, 52, 30, 75, 59, 58, 44, 30, 14, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0, 152, 0, 16, 2, 124, 6, 156, 9, 32, 13,
+			85, 15, 64, 28, 35, 27, 23, 45, 46, 48, 38, 21, 7, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 16, 2, 59, 6,
+			156, 9, 112, 13, 29, 16, 192, 28, 0, 25, 26, 43, 39, 39, 31, 17, 5, 9, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 190, 0, 5, 0,
+			1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 40, 30, 52, 60, 40, 33, 28, 16, 6, 167, 148, 143, 120,
+			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 71, 40, 70, 80, 54, 44, 38, 22, 8,
+			167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 16, 2, 220, 4, 106, 9, 146, 12, 144, 14, 87, 27, 40, 57, 35, 64, 74, 48,
+			41, 35, 19, 8, 167, 148, 140, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 123, 0, 16, 2, 48, 5, 56, 9, 128, 12, 132, 14, 91, 27, 50, 42,
+			29, 55, 65, 39, 37, 30, 16, 7, 167, 149, 138, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 119, 0, 12, 2, 121, 5, 252, 8, 108, 12, 122, 14,
+			94, 27, 0, 35, 25, 50, 61, 38, 35, 27, 14, 7, 167, 149, 136, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 140, 0, 174, 1,
+			152, 3, 36, 9, 164, 11, 16, 14, 96, 25, 48, 61, 31, 70, 69, 41, 27, 15, 12, 7, 167, 120, 120, 120, 120, 120, 167, 120, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			140, 0, 174, 1, 192, 3, 36, 9, 164, 11, 16, 14, 96, 25, 36, 75, 35, 82, 66, 44, 35, 22, 16, 6, 165, 120, 120, 120, 120, 120,
+			165, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 140, 0, 154, 1, 156, 3, 36, 9, 164, 11, 16, 14, 96, 25, 49, 76, 34, 76, 81, 39, 33, 21, 20, 6, 167, 120,
+			120, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 228, 0, 239, 1, 255, 3, 252, 8, 184, 11, 16, 14, 192, 25, 49, 60, 31, 62, 76, 40, 30, 20,
+			18, 7, 167, 111, 135, 120, 120, 120, 191, 129, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 186, 0, 14, 2, 137, 4, 252, 8, 8, 12, 41, 14, 112, 26, 47, 35, 26, 49,
+			62, 35, 28, 19, 13, 6, 167, 115, 131, 120, 120, 120, 191, 129, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 144, 0, 46, 2, 20, 5, 252, 8, 88, 12, 66, 14, 32, 27,
+			0, 29, 25, 45, 57, 36, 31, 23, 11, 7, 167, 120, 127, 120, 120, 120, 255, 105, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 7, 0, 5, 0, 44, 1, 92, 3, 216, 4,
+			4, 11, 72, 13, 191, 14, 64, 27, 45, 47, 28, 58, 63, 37, 40, 27, 6, 4, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70,
+			130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 44, 1,
+			92, 3, 216, 4, 4, 11, 72, 13, 191, 14, 64, 27, 40, 107, 42, 88, 95, 55, 60, 40, 9, 7, 167, 165, 165, 120, 120, 120, 167, 105,
+			165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 80, 1, 132, 3, 161, 5, 36, 9, 112, 13, 241, 14, 64, 27, 31, 71, 36, 76, 95, 55, 45, 28, 10, 7, 240, 165, 120, 120,
+			120, 120, 195, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 32, 1, 248, 2, 191, 6, 36, 9, 192, 13, 241, 14, 64, 27, 25, 41, 32, 47, 53, 53, 50, 47, 11, 7,
+			255, 180, 180, 120, 120, 120, 200, 195, 180, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 224, 0, 224, 1, 45, 7, 136, 9, 112, 13, 241, 14, 64, 27, 27, 42, 34, 43, 61, 61,
+			51, 50, 12, 8, 255, 105, 180, 120, 120, 120, 165, 120, 135, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 224, 0, 8, 2, 23, 7, 176, 9, 112, 13, 241, 14, 64, 27, 52, 37,
+			28, 51, 56, 56, 49, 43, 8, 8, 255, 90, 180, 120, 120, 120, 187, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 208, 0, 128, 2, 238, 5, 96, 9, 52, 13, 216, 14,
+			64, 27, 0, 21, 20, 40, 48, 36, 32, 28, 7, 8, 252, 90, 165, 120, 120, 120, 252, 105, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 0, 1, 136, 3,
+			200, 5, 110, 10, 154, 13, 40, 15, 67, 27, 45, 46, 28, 60, 58, 41, 34, 27, 9, 4, 228, 152, 186, 132, 120, 120, 255, 174, 173, 44,
+			45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			0, 1, 136, 3, 200, 5, 110, 10, 154, 13, 40, 15, 67, 27, 29, 90, 39, 85, 81, 57, 48, 38, 12, 5, 228, 152, 186, 132, 120, 120,
+			255, 174, 173, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 5, 0, 8, 1, 136, 3, 62, 5, 20, 10, 188, 12, 166, 14, 32, 27, 39, 88, 33, 76, 89, 68, 56, 46, 13, 6, 185, 180,
+			165, 120, 120, 120, 245, 135, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 5, 0, 8, 1, 178, 2, 32, 4, 116, 9, 8, 12, 166, 14, 64, 27, 42, 90, 37, 64, 99, 52, 43, 35,
+			14, 7, 185, 135, 150, 120, 120, 120, 194, 105, 111, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 33, 2, 178, 3, 36, 9, 8, 12, 216, 14, 160, 27, 84, 49, 27, 58,
+			75, 37, 32, 23, 12, 8, 177, 120, 120, 120, 120, 120, 147, 105, 105, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 193, 2, 64, 5, 16, 9, 128, 12, 241, 14, 32, 28,
+			0, 28, 28, 44, 60, 36, 32, 26, 8, 8, 185, 150, 120, 120, 120, 120, 155, 150, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 140, 0, 5, 0, 1, 0, 192, 0, 32, 2, 60, 5,
+			156, 9, 92, 13, 52, 18, 0, 28, 45, 54, 25, 63, 72, 40, 34, 17, 14, 6, 170, 165, 135, 120, 120, 120, 170, 180, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0,
+			32, 2, 60, 5, 156, 9, 92, 13, 52, 18, 0, 28, 50, 96, 34, 84, 96, 53, 45, 22, 19, 8, 170, 165, 135, 120, 120, 120, 170, 180,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 192, 0, 32, 2, 60, 5, 156, 9, 92, 13, 52, 18, 0, 28, 60, 87, 32, 80, 91, 50, 43, 21, 18, 7, 170, 165, 135, 120,
+			120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 201, 0, 104, 2, 166, 4, 146, 9, 240, 10, 127, 18, 0, 28, 35, 29, 25, 49, 38, 30, 24, 8, 11, 4,
+			170, 165, 136, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 201, 0, 104, 2, 166, 4, 146, 9, 240, 10, 127, 18, 0, 28, 0, 28, 24, 48, 38, 30,
+			23, 8, 10, 4, 170, 165, 136, 120, 120, 120, 170, 180, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 135, 0, 5, 0, 1, 0, 216, 0, 136, 2, 156, 4, 35, 10, 227, 12, 20, 15,
+			214, 27, 45, 70, 34, 68, 76, 43, 39, 30, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 216, 0, 136, 2, 156, 4, 35, 10,
+			227, 12, 20, 15, 214, 27, 50, 124, 45, 90, 101, 57, 52, 40, 20, 8, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 136, 2,
+			176, 4, 35, 10, 227, 12, 20, 15, 214, 27, 55, 111, 43, 86, 96, 54, 49, 38, 19, 8, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 35, 33, 30, 51, 34, 32, 27, 6, 11, 4, 170, 165, 137, 120, 120, 120,
+			170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 0, 28, 25, 48, 32, 30, 25, 6, 10, 4, 170, 165,
+			137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 190, 0, 5, 0, 1, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 50, 42, 31, 49,
+			62, 20, 36, 20, 5, 5, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28,
+			50, 82, 43, 68, 86, 28, 50, 28, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 80, 2, 232, 3, 80, 10, 28, 12,
+			36, 14, 15, 28, 50, 82, 43, 68, 86, 28, 50, 28, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 170, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 80, 2, 232, 3,
+			80, 10, 28, 12, 36, 14, 15, 28, 40, 59, 36, 58, 73, 24, 42, 24, 6, 6, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70,
+			130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 0, 1,
+			80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 0, 25, 24, 38, 48, 16, 28, 16, 4, 4, 186, 151, 122, 120, 120, 120, 105, 164,
+			135, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			190, 0, 5, 0, 1, 0, 228, 0, 28, 2, 128, 3, 72, 10, 190, 11, 15, 14, 216, 27, 50, 57, 28, 61, 69, 28, 35, 19, 9, 5,
+			180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 228, 0, 28, 2, 128, 3, 72, 10, 190, 11, 15, 14, 216, 27, 50, 90, 35, 76, 87, 35,
+			44, 24, 11, 6, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 0, 2, 132, 3, 64, 10, 216, 11, 234, 13, 15, 28, 50, 74,
+			39, 57, 91, 24, 46, 25, 8, 7, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 0, 2, 132, 3, 64, 10, 216, 11, 234, 13,
+			15, 28, 40, 59, 35, 51, 81, 21, 41, 22, 7, 6, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 165, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 8, 1, 0, 2, 132, 3, 60, 10,
+			224, 11, 222, 13, 32, 28, 0, 20, 27, 31, 51, 12, 23, 14, 4, 4, 180, 75, 120, 120, 120, 120, 85, 75, 120, 44, 45, 70, 130, 59,
+			165, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 140, 0, 3, 0, 1, 0,
+			112, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27, 50, 48, 30, 59, 72, 40, 42, 32, 16, 7, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 116, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27, 90, 78, 39, 75, 91, 51, 54, 41, 21, 8, 167, 150,
+			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 16, 2, 220, 5, 76, 9, 188, 12, 116, 14, 96, 27, 0, 46, 30, 58, 70, 39, 41, 32,
+			16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 139, 0, 3, 0, 1, 0, 112, 0, 244, 1, 132, 5, 36, 9, 188, 12, 116, 14, 96, 27,
+			50, 56, 31, 63, 76, 38, 46, 34, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 244, 1, 132, 5, 16, 9, 188, 12,
+			116, 14, 96, 27, 90, 80, 37, 72, 96, 48, 60, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 244, 1, 132, 5,
+			36, 9, 188, 12, 116, 14, 96, 27, 0, 48, 30, 58, 70, 31, 44, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 190, 0, 4, 0,
+			1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 50, 45, 30, 56, 65, 54, 35, 25, 8, 5, 255, 142, 180, 120,
+			120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 90, 86, 41, 77, 90, 75, 49, 35, 12, 7,
+			255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 50, 78, 39, 73, 85, 71,
+			46, 33, 11, 7, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 0, 35,
+			26, 50, 57, 48, 31, 22, 7, 4, 255, 142, 180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 148, 0, 128, 1, 238, 7, 50, 10,
+			42, 13, 50, 15, 96, 25, 45, 48, 27, 72, 52, 48, 45, 29, 11, 5, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 148, 0, 128, 1,
+			238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 70, 97, 39, 102, 74, 68, 64, 41, 16, 8, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 60, 87, 37, 97, 70, 64, 61, 39, 15, 7, 160, 92, 120, 143, 120, 120,
+			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 148, 0, 128, 1, 238, 7, 50, 10, 42, 13, 50, 15, 96, 25, 0, 38, 24, 64, 47, 43, 40, 26, 10, 5, 160, 92,
+			120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 184, 0, 160, 1, 92, 8, 100, 10, 212, 13, 60, 15, 128, 28, 45, 39, 25, 53,
+			56, 47, 39, 34, 11, 8, 185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 160, 1, 92, 8, 100, 10, 212, 13, 60, 15, 128, 28,
+			70, 81, 37, 76, 80, 68, 56, 48, 16, 12, 185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 1, 92, 8, 100, 10, 212, 13,
+			60, 15, 128, 28, 60, 66, 33, 68, 72, 61, 50, 43, 14, 10, 185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 160, 1, 92, 8,
+			100, 10, 212, 13, 60, 15, 128, 28, 0, 29, 22, 45, 48, 40, 33, 29, 9, 7, 185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0,
+			1, 0, 216, 0, 118, 2, 152, 3, 67, 10, 194, 11, 10, 14, 224, 27, 45, 50, 21, 50, 63, 30, 30, 18, 11, 4, 178, 146, 127, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 216, 0, 118, 2, 152, 3, 67, 10, 194, 11, 10, 14, 224, 27, 80, 131, 34, 80, 103, 49, 49, 30, 18, 7,
+			178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 104, 2, 172, 3, 67, 10, 194, 11, 10, 14, 224, 27, 70, 105, 32, 74, 95, 46,
+			45, 28, 16, 7, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 216, 0, 104, 2, 172, 3, 67, 10, 194, 11, 10, 14, 224, 27, 0, 44,
+			20, 47, 62, 29, 28, 17, 10, 4, 178, 146, 127, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 188, 0, 221, 1, 200, 3, 60, 10,
+			104, 12, 166, 14, 204, 26, 45, 42, 27, 51, 58, 37, 33, 23, 16, 5, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 188, 0, 221, 1,
+			200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 70, 87, 39, 74, 84, 53, 47, 33, 24, 7, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 60, 70, 35, 66, 75, 48, 42, 30, 21, 6, 164, 141, 150, 120, 120, 120,
+			162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 188, 0, 221, 1, 200, 3, 60, 10, 104, 12, 166, 14, 204, 26, 0, 37, 25, 48, 54, 34, 31, 22, 15, 4, 164, 141,
+			150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 248, 1, 97, 3, 7, 5, 60, 10, 72, 13, 141, 14, 88, 27, 65, 48, 25, 51,
+			60, 25, 22, 20, 6, 6, 255, 162, 210, 120, 120, 120, 120, 162, 120, 44, 60, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 104, 1, 136, 3, 219, 4, 60, 10, 72, 13, 141, 14, 88, 27,
+			75, 111, 36, 82, 86, 52, 35, 33, 13, 7, 210, 175, 150, 120, 120, 120, 210, 175, 120, 44, 60, 70, 130, 55, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 104, 1, 128, 3, 219, 4, 196, 9, 32, 13,
+			116, 14, 88, 27, 63, 110, 36, 82, 86, 52, 35, 33, 13, 7, 210, 175, 150, 120, 120, 120, 210, 175, 120, 44, 55, 70, 130, 55, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 104, 1, 134, 3, 219, 4,
+			184, 9, 20, 13, 116, 14, 33, 27, 71, 104, 35, 79, 85, 50, 35, 33, 13, 8, 214, 172, 150, 120, 120, 120, 210, 175, 120, 44, 45, 70,
+			130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 104, 1,
+			127, 3, 220, 4, 156, 9, 248, 12, 116, 14, 160, 26, 0, 41, 24, 51, 61, 32, 26, 22, 8, 8, 225, 165, 150, 120, 120, 120, 225, 120,
+			120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			211, 0, 5, 0, 1, 0, 140, 0, 224, 1, 100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 45, 40, 22, 52, 62, 57, 47, 38, 19, 6,
+			170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 140, 0, 224, 1, 100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 48, 63, 28, 65, 78, 71,
+			58, 48, 23, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 140, 0, 224, 1, 100, 5, 252, 8, 28, 12, 192, 13, 32, 27, 40, 63,
+			28, 65, 78, 71, 58, 48, 23, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 140, 0, 248, 1, 100, 5, 252, 8, 28, 12, 192, 13,
+			32, 27, 78, 45, 25, 55, 66, 61, 49, 40, 20, 6, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 140, 0, 8, 2, 100, 5, 252, 8,
+			28, 12, 192, 13, 32, 27, 0, 31, 21, 46, 55, 51, 41, 34, 16, 5, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 220, 0, 5, 0, 1, 0,
+			168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 55, 21, 52, 64, 39, 36, 18, 13, 5, 167, 135, 150, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 40, 107, 29, 73, 89, 54, 50, 25, 18, 7, 167, 135,
+			150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 90, 103, 34, 73, 85, 51, 41, 24,
+			18, 7, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 59, 26, 58,
+			60, 39, 31, 18, 13, 5, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 168, 0, 0, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27,
+			0, 27, 18, 40, 40, 23, 20, 12, 9, 3, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 4, 0, 1, 0, 236, 0, 28, 2, 167, 3,
+			0, 10, 128, 12, 10, 15, 96, 28, 50, 64, 34, 58, 76, 48, 26, 21, 16, 7, 120, 135, 135, 120, 120, 120, 135, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 236, 0,
+			63, 2, 123, 3, 80, 10, 48, 12, 66, 14, 224, 27, 106, 123, 47, 82, 94, 55, 34, 21, 16, 7, 120, 135, 135, 120, 120, 120, 135, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 236, 0, 23, 2, 123, 3, 0, 10, 48, 12, 191, 14, 224, 27, 79, 96, 32, 67, 102, 58, 35, 28, 18, 7, 120, 135, 105, 120,
+			120, 120, 135, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 216, 0, 68, 2, 255, 3, 176, 9, 128, 12, 191, 14, 224, 27, 0, 49, 27, 52, 77, 41, 28, 24, 9, 7,
+			120, 135, 135, 120, 120, 120, 135, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 76, 1, 247, 5, 208, 8, 132, 12, 116, 14, 192, 25, 42, 48,
+			16, 69, 62, 55, 44, 40, 14, 6, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 76, 1, 247, 5, 208, 8, 132, 12, 116, 14,
+			192, 25, 40, 76, 20, 87, 78, 69, 55, 50, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 84, 0, 64, 1, 106, 5, 192, 8,
+			68, 12, 116, 14, 192, 25, 50, 75, 16, 93, 59, 53, 45, 43, 19, 11, 165, 135, 135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 84, 0, 64, 1,
+			106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 67, 39, 12, 67, 43, 38, 32, 31, 14, 8, 165, 135, 135, 120, 120, 120, 105, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 34, 17, 60, 37, 18, 21, 21, 10, 8, 165, 135, 135, 120, 120, 120,
+			105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 0, 0, 5, 0, 1, 0, 220, 0, 148, 2, 4, 6, 56, 9, 84, 11, 16, 14, 192, 28, 34, 47, 34, 53, 70, 53, 36, 48,
+			13, 8, 120, 165, 150, 120, 120, 120, 165, 210, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 220, 0, 148, 2, 26, 6, 56, 9, 124, 11, 116, 14, 192, 28, 60, 82, 42, 76,
+			91, 74, 45, 57, 24, 8, 120, 165, 150, 120, 120, 120, 165, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 220, 0, 224, 1, 4, 6, 232, 8, 68, 12, 191, 14, 192, 28,
+			54, 54, 36, 55, 79, 57, 35, 30, 16, 7, 120, 120, 120, 120, 120, 120, 165, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 220, 0, 164, 1, 120, 4, 152, 8, 88, 12,
+			141, 14, 64, 28, 45, 56, 44, 77, 54, 30, 24, 26, 15, 9, 120, 120, 120, 120, 120, 120, 60, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 140, 0, 84, 1, 222, 3,
+			56, 9, 188, 12, 141, 14, 192, 27, 0, 21, 28, 46, 37, 15, 7, 9, 9, 8, 120, 105, 90, 120, 120, 120, 60, 120, 75, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 6, 0,
+			1, 0, 44, 1, 120, 3, 80, 5, 60, 10, 112, 13, 191, 14, 64, 27, 41, 30, 24, 49, 53, 37, 31, 23, 3, 4, 167, 165, 165, 120,
+			120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 44, 1, 92, 3, 80, 5, 100, 10, 112, 13, 191, 14, 64, 27, 77, 90, 41, 86, 93, 58, 59, 40, 5, 7,
+			167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 44, 1, 136, 3, 140, 5, 20, 10, 152, 13, 191, 14, 64, 27, 33, 80, 40, 82, 89, 55,
+			56, 38, 5, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 216, 0, 92, 3, 59, 6, 252, 8, 192, 13, 241, 14, 160, 28, 31, 63,
+			32, 65, 87, 53, 49, 32, 7, 7, 120, 75, 195, 120, 120, 120, 255, 180, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 43, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 240, 0, 203, 2, 224, 6, 176, 9, 112, 13, 10, 15,
+			96, 27, 53, 48, 32, 63, 65, 62, 36, 22, 5, 7, 165, 135, 240, 120, 120, 120, 195, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 212, 0, 232, 1, 48, 7, 136, 9,
+			172, 13, 80, 15, 64, 27, 0, 26, 32, 46, 44, 44, 33, 32, 13, 7, 167, 90, 180, 120, 120, 120, 137, 75, 150, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0,
+			52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 44, 45, 28, 57, 65, 54, 36, 26, 9, 5, 255, 142, 180, 120, 120, 120,
+			150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 52, 1, 135, 2, 242, 6, 226, 9, 172, 13, 154, 15, 176, 28, 77, 83, 39, 77, 88, 73, 49, 35, 12, 7, 255, 142,
+			180, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 136, 2, 224, 6, 116, 9, 72, 13, 60, 15, 96, 27, 77, 56, 30, 63, 71, 62, 57, 25,
+			13, 7, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 178, 0, 103, 2, 84, 6, 76, 9, 2, 13, 216, 14, 96, 27, 35, 38, 25, 52,
+			61, 45, 43, 24, 12, 7, 167, 135, 157, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 163, 0, 81, 2, 17, 6, 66, 9, 241, 12, 191, 14, 96, 27,
+			0, 34, 26, 48, 55, 38, 38, 25, 13, 7, 167, 138, 152, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 40, 0, 7, 0, 1, 0, 136, 0, 64, 1, 172, 8,
+			240, 10, 152, 13, 120, 15, 236, 26, 42, 44, 7, 65, 55, 56, 44, 27, 11, 7, 172, 133, 129, 120, 120, 120, 180, 105, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 128, 0,
+			64, 1, 172, 8, 240, 10, 112, 13, 100, 15, 224, 26, 40, 64, 10, 75, 75, 77, 72, 37, 16, 8, 158, 112, 135, 120, 120, 120, 167, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 128, 0, 64, 1, 172, 8, 240, 10, 112, 13, 100, 15, 224, 26, 28, 60, 10, 73, 73, 74, 70, 36, 16, 8, 158, 112, 135, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 104, 0, 136, 1, 52, 8, 80, 10, 52, 13, 60, 15, 64, 27, 31, 59, 17, 81, 60, 61, 57, 31, 12, 8,
+			160, 90, 150, 120, 120, 120, 160, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 248, 1, 111, 7, 96, 9, 72, 13, 20, 15, 64, 27, 34, 53, 30, 75, 59, 58,
+			44, 30, 14, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 16, 2, 64, 6, 36, 9, 238, 12, 90, 15, 128, 28, 45, 26,
+			24, 44, 48, 48, 31, 19, 6, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 16, 2, 240, 5, 56, 9, 248, 12, 160, 15,
+			192, 28, 0, 22, 25, 41, 37, 37, 24, 16, 5, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 155, 0, 4, 0, 1, 0, 142, 0, 224, 1,
+			180, 5, 110, 8, 88, 12, 110, 14, 38, 27, 45, 41, 25, 56, 62, 50, 43, 35, 16, 6, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			142, 0, 224, 1, 180, 5, 110, 8, 88, 12, 110, 14, 38, 27, 60, 51, 28, 62, 69, 56, 48, 40, 18, 6, 170, 135, 161, 120, 120, 120,
+			140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 142, 0, 212, 1, 164, 5, 240, 7, 72, 12, 146, 14, 38, 27, 50, 46, 28, 59, 66, 50, 40, 33, 13, 6, 170, 135,
+			161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 142, 0, 208, 1, 160, 5, 208, 7, 68, 12, 156, 14, 38, 27, 0, 36, 25, 52, 58, 41, 35, 29,
+			10, 5, 170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 140, 0, 3, 0, 1, 0, 112, 0, 240, 1, 220, 5, 116, 9, 228, 12, 156, 14, 96, 27,
+			50, 47, 25, 59, 72, 40, 42, 32, 16, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 240, 1, 220, 5, 116, 9, 228, 12,
+			156, 14, 96, 27, 90, 77, 34, 75, 91, 51, 54, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 240, 1, 220, 5,
+			116, 9, 228, 12, 116, 14, 96, 27, 0, 47, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 135, 0, 3, 0,
+			1, 0, 152, 0, 72, 2, 120, 5, 134, 9, 195, 12, 165, 14, 141, 27, 45, 49, 32, 59, 72, 43, 45, 30, 16, 6, 174, 154, 137, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 152, 0, 72, 2, 120, 5, 134, 9, 195, 12, 165, 14, 141, 27, 90, 77, 40, 74, 91, 53, 56, 38, 21, 8,
+			174, 154, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 80, 2, 120, 5, 134, 9, 195, 12, 165, 14, 141, 27, 0, 38, 28, 52, 64, 37,
+			39, 27, 14, 5, 174, 154, 137, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 180, 0, 5, 0, 1, 0, 55, 1, 158, 2, 183, 6, 252, 9, 163, 13, 121, 15,
+			154, 28, 50, 41, 34, 51, 63, 49, 34, 24, 9, 5, 255, 140, 173, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 160, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 55, 1, 158, 2, 183, 6, 252, 9,
+			163, 13, 121, 15, 154, 28, 40, 75, 46, 70, 86, 66, 46, 33, 12, 7, 255, 140, 173, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59,
+			160, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 61, 1, 178, 2,
+			159, 6, 56, 10, 143, 13, 44, 15, 103, 28, 50, 56, 48, 54, 80, 51, 42, 28, 11, 6, 226, 136, 157, 120, 120, 120, 150, 180, 150, 44,
+			45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			61, 1, 178, 2, 159, 6, 56, 10, 143, 13, 44, 15, 103, 28, 40, 50, 45, 51, 75, 48, 39, 26, 10, 6, 226, 136, 157, 120, 120, 120,
+			150, 180, 150, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 68, 1, 198, 2, 136, 6, 111, 10, 123, 13, 229, 14, 57, 28, 0, 21, 33, 28, 51, 26, 26, 16, 7, 4, 195, 132,
+			142, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 78, 1, 188, 2, 144, 6, 202, 9, 184, 13, 183, 15, 10, 29, 45, 40, 38, 49,
+			58, 48, 37, 28, 10, 6, 255, 151, 208, 120, 120, 120, 135, 180, 182, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 78, 1, 188, 2, 144, 6, 202, 9, 184, 13, 183, 15, 10, 29,
+			80, 60, 47, 60, 71, 58, 45, 34, 12, 8, 255, 151, 208, 120, 120, 120, 135, 180, 182, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 34, 1, 166, 2, 48, 6, 186, 9, 152, 13,
+			191, 15, 176, 28, 60, 49, 39, 56, 67, 51, 41, 31, 12, 8, 255, 157, 191, 120, 120, 120, 135, 180, 182, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 236, 0, 140, 2, 208, 5,
+			166, 9, 112, 13, 200, 15, 64, 28, 0, 42, 33, 53, 64, 43, 38, 29, 12, 9, 233, 165, 170, 120, 120, 120, 135, 165, 175, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0, 4, 0,
+			1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 50, 47, 31, 57, 61, 56, 43, 31, 10, 6, 244, 132, 159, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 80, 80, 40, 74, 79, 72, 56, 41, 13, 8,
+			244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 211, 0, 64, 2, 144, 6, 20, 10, 117, 13, 160, 15, 149, 28, 40, 57, 36, 62, 68, 56,
+			46, 34, 12, 7, 208, 142, 158, 120, 120, 120, 189, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 215, 0, 96, 2, 64, 6, 20, 10, 123, 13, 160, 15, 73, 28, 0, 40,
+			32, 56, 58, 44, 39, 29, 11, 6, 228, 153, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 190, 0, 4, 0, 1, 0, 168, 0, 160, 1, 8, 7, 0, 10,
+			72, 13, 200, 15, 163, 25, 50, 41, 32, 62, 49, 47, 44, 32, 14, 6, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 160, 1,
+			8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 80, 65, 40, 78, 61, 59, 55, 40, 17, 8, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 60, 55, 37, 71, 56, 54, 51, 37, 16, 7, 161, 98, 126, 120, 120, 120,
+			130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 168, 0, 160, 1, 8, 7, 0, 10, 72, 13, 200, 15, 163, 25, 0, 31, 28, 54, 42, 41, 38, 28, 12, 5, 161, 98,
+			126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 190, 0, 4, 0, 1, 0, 168, 0, 192, 1, 124, 6, 224, 9, 12, 13, 60, 15, 230, 25, 50, 42, 29, 59,
+			53, 50, 47, 34, 15, 6, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 192, 1, 124, 6, 224, 9, 12, 13, 60, 15, 230, 25,
+			80, 69, 38, 76, 69, 65, 61, 44, 19, 8, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 192, 1, 124, 6, 224, 9, 12, 13,
+			60, 15, 230, 25, 60, 56, 34, 69, 62, 58, 55, 39, 17, 7, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 192, 1, 124, 6,
+			224, 9, 12, 13, 60, 15, 230, 25, 0, 32, 26, 52, 47, 44, 41, 30, 13, 5, 163, 119, 133, 120, 120, 120, 130, 119, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0,
+			1, 0, 126, 0, 112, 1, 52, 8, 100, 10, 47, 13, 60, 15, 96, 25, 45, 40, 25, 65, 47, 43, 43, 26, 10, 4, 160, 93, 120, 155,
+			120, 120, 130, 95, 120, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 126, 0, 112, 1, 52, 8, 100, 10, 47, 13, 60, 15, 96, 25, 70, 66, 31, 84, 60, 56, 56, 34, 14, 6,
+			160, 93, 120, 155, 120, 120, 130, 95, 120, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 126, 0, 88, 1, 98, 8, 140, 10, 41, 13, 45, 15, 152, 25, 60, 39, 22, 64, 44, 41,
+			41, 24, 11, 5, 161, 95, 118, 147, 120, 120, 130, 95, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 126, 0, 88, 1, 98, 8, 140, 10, 41, 13, 45, 15, 152, 25, 0, 20,
+			16, 47, 32, 30, 30, 18, 8, 4, 161, 95, 118, 147, 120, 120, 130, 95, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 0, 1, 216, 2, 176, 4, 100, 10,
+			188, 12, 176, 14, 87, 27, 45, 43, 29, 54, 65, 39, 35, 32, 10, 5, 175, 147, 147, 120, 120, 120, 175, 142, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 216, 2,
+			176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 80, 84, 41, 76, 90, 54, 48, 44, 14, 7, 175, 147, 147, 120, 120, 120, 175, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			0, 1, 208, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 60, 66, 36, 67, 80, 48, 43, 39, 12, 6, 175, 147, 147, 120, 120, 120,
+			175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 0, 1, 200, 2, 176, 4, 100, 10, 188, 12, 176, 14, 87, 27, 0, 44, 29, 54, 67, 38, 34, 31, 10, 5, 175, 147,
+			147, 120, 120, 120, 175, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 184, 0, 4, 0, 1, 0, 208, 0, 120, 2, 20, 5, 40, 10, 228, 12, 0, 15, 210, 27, 45, 46, 30, 53,
+			70, 42, 39, 25, 14, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 208, 0, 120, 2, 20, 5, 40, 10, 228, 12, 0, 15, 210, 27,
+			80, 85, 41, 72, 95, 57, 53, 34, 19, 7, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 208, 0, 114, 2, 36, 5, 40, 10, 228, 12,
+			0, 15, 210, 27, 60, 68, 35, 64, 85, 51, 47, 30, 17, 6, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 208, 0, 104, 2, 60, 5,
+			40, 10, 228, 12, 0, 15, 210, 27, 0, 39, 26, 49, 65, 39, 36, 23, 13, 5, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0,
+			1, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 45, 53, 30, 64, 67, 35, 37, 31, 16, 6, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 70, 101, 41, 88, 92, 48, 52, 43, 23, 8,
+			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 60, 82, 37, 79, 82, 43,
+			46, 39, 20, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 240, 1, 16, 4, 0, 10, 168, 12, 96, 14, 96, 27, 0, 46,
+			28, 59, 62, 32, 35, 29, 15, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 255, 0, 6, 0, 1, 0, 250, 0, 216, 2, 176, 4, 40, 10,
+			188, 12, 92, 14, 87, 27, 45, 47, 29, 54, 70, 40, 36, 33, 9, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 250, 0, 216, 2,
+			176, 4, 40, 10, 188, 12, 92, 14, 87, 27, 85, 94, 41, 77, 99, 57, 51, 46, 13, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			250, 0, 200, 2, 176, 4, 196, 9, 128, 12, 92, 14, 87, 27, 50, 66, 35, 65, 84, 48, 43, 39, 11, 6, 167, 147, 147, 120, 120, 120,
+			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 5, 0, 116, 0, 80, 2, 236, 4, 128, 7, 164, 11, 232, 13, 96, 27, 35, 40, 26, 60, 58, 35, 36, 28, 14, 8, 167, 150,
+			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 5, 0, 116, 0, 8, 2, 236, 4, 108, 7, 164, 11, 232, 13, 96, 27, 40, 34, 23, 54, 52, 31, 32, 25,
+			12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 116, 0, 8, 2, 236, 4, 108, 7, 164, 11, 232, 13, 96, 27, 0, 27, 20, 48,
+			46, 28, 28, 22, 11, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 185, 0, 5, 0, 1, 0, 140, 0, 224, 1, 128, 5, 16, 9, 148, 12,
+			41, 14, 32, 27, 45, 44, 22, 54, 66, 60, 49, 40, 20, 6, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 140, 0, 224, 1, 128, 5,
+			16, 9, 148, 12, 41, 14, 32, 27, 40, 61, 24, 64, 77, 71, 57, 47, 23, 7, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 141, 0,
+			218, 1, 146, 5, 128, 8, 118, 12, 78, 14, 35, 27, 50, 48, 24, 59, 69, 58, 47, 38, 17, 6, 170, 135, 163, 120, 120, 120, 140, 120,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 142, 0, 212, 1, 164, 5, 240, 7, 88, 12, 116, 14, 38, 27, 50, 43, 25, 58, 64, 49, 39, 33, 12, 6, 170, 135, 161, 120,
+			120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 142, 0, 208, 1, 160, 5, 208, 7, 88, 12, 136, 14, 38, 27, 0, 38, 24, 54, 60, 42, 36, 30, 10, 6,
+			170, 135, 161, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 230, 0, 6, 0, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 40, 61,
+			26, 61, 74, 36, 35, 20, 13, 5, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14,
+			160, 27, 50, 111, 36, 83, 100, 49, 47, 27, 18, 7, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10,
+			164, 11, 53, 14, 160, 27, 70, 90, 32, 75, 90, 44, 42, 25, 16, 6, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0, 116, 0, 0, 2,
+			176, 4, 8, 7, 144, 11, 172, 13, 96, 27, 35, 42, 25, 59, 59, 34, 35, 27, 13, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0,
+			116, 0, 0, 2, 176, 4, 8, 7, 144, 11, 172, 13, 96, 27, 35, 35, 23, 54, 54, 31, 32, 25, 12, 7, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 1, 0, 129, 0, 232, 1, 40, 5, 68, 7, 184, 11, 212, 13, 67, 27, 0, 35, 24, 52, 56, 36, 33, 27, 11, 6, 168, 142,
+			148, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36,
+			0, 0, 0, 250, 0, 0, 165, 0, 4, 0, 1, 0, 232, 0, 200, 2, 232, 3, 60, 10, 224, 11, 222, 13, 160, 28, 45, 58, 33, 56,
+			73, 34, 35, 23, 9, 8, 230, 150, 120, 120, 120, 120, 185, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 232, 0, 144, 2, 232, 3, 60, 10, 224, 11, 222, 13, 32, 28,
+			80, 94, 29, 78, 98, 44, 45, 29, 16, 7, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 232, 0, 144, 2, 232, 3, 60, 10, 224, 11,
+			222, 13, 32, 28, 40, 75, 28, 73, 83, 42, 42, 28, 15, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 228, 0, 118, 2, 192, 3,
+			140, 10, 224, 11, 66, 14, 32, 28, 0, 45, 29, 49, 70, 38, 37, 23, 12, 9, 177, 150, 120, 120, 120, 120, 177, 75, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 220, 0, 5, 0,
+			1, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 45, 50, 23, 51, 59, 38, 35, 17, 13, 5, 165, 135, 150, 120,
+			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 55, 96, 32, 72, 82, 53, 48, 24, 18, 7,
+			165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 212, 1, 72, 3, 100, 10, 124, 11, 196, 14, 32, 27, 75, 78, 29, 64, 74, 48,
+			44, 22, 16, 6, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 8, 2, 136, 4, 108, 7, 144, 11, 116, 14, 96, 27, 45, 35,
+			24, 54, 54, 32, 33, 25, 12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 116, 0, 8, 2, 136, 4, 108, 7, 124, 11, 212, 13,
+			96, 27, 0, 31, 22, 50, 50, 30, 31, 24, 12, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 228, 0, 145, 2,
+			76, 4, 143, 10, 188, 12, 99, 14, 87, 27, 45, 46, 26, 53, 66, 37, 34, 31, 11, 5, 167, 143, 143, 120, 120, 120, 167, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			228, 0, 145, 2, 76, 4, 143, 10, 188, 12, 99, 14, 87, 27, 60, 89, 36, 74, 92, 52, 48, 43, 15, 7, 167, 143, 143, 120, 120, 120,
+			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 228, 0, 145, 2, 96, 4, 143, 10, 188, 12, 99, 14, 87, 27, 80, 77, 34, 70, 87, 49, 45, 40, 14, 7, 167, 143,
+			143, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 228, 0, 145, 2, 96, 4, 143, 10, 188, 12, 99, 14, 87, 27, 0, 44, 25, 53, 65, 37, 34, 30,
+			10, 5, 167, 143, 143, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 96, 1, 180, 5, 212, 8, 148, 12, 41, 14, 64, 26,
+			42, 46, 16, 68, 54, 37, 37, 35, 10, 7, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 96, 1, 140, 5, 212, 8, 148, 12,
+			116, 14, 192, 25, 40, 71, 20, 82, 78, 69, 54, 50, 17, 7, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 88, 0, 96, 1, 120, 5,
+			172, 8, 148, 12, 116, 14, 192, 25, 50, 67, 21, 84, 64, 66, 50, 47, 19, 7, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 98, 0,
+			80, 1, 236, 4, 179, 8, 86, 12, 118, 14, 218, 25, 67, 46, 15, 70, 56, 49, 40, 36, 15, 6, 166, 127, 128, 120, 120, 120, 107, 90,
+			128, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 109, 0, 64, 1, 76, 4, 187, 8, 23, 12, 121, 14, 244, 25, 0, 27, 8, 51, 40, 30, 28, 24, 11, 5, 165, 135, 138, 120,
+			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 210, 0, 5, 0, 1, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 45, 46, 31, 58, 62, 38,
+			39, 24, 12, 5, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 80, 88,
+			43, 81, 86, 54, 54, 34, 18, 7, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 234, 2, 20, 5, 80, 10, 248, 12, 140, 15,
+			220, 27, 45, 70, 38, 71, 76, 47, 47, 29, 16, 6, 184, 154, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 185, 0, 64, 2, 16, 4, 68, 10,
+			8, 12, 20, 15, 89, 27, 40, 35, 22, 45, 48, 29, 25, 16, 10, 4, 172, 140, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 168, 0, 240, 1,
+			132, 3, 60, 10, 144, 11, 176, 14, 32, 27, 0, 33, 21, 45, 47, 28, 23, 14, 10, 4, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 45, 0,
+			5, 0, 1, 0, 169, 0, 37, 2, 92, 4, 76, 9, 72, 13, 64, 16, 98, 27, 45, 34, 28, 49, 54, 38, 33, 24, 14, 5, 167, 141,
+			152, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 169, 0, 37, 2, 92, 4, 76, 9, 72, 13, 64, 16, 98, 27, 80, 60, 37, 64, 72, 50, 44, 32,
+			19, 7, 167, 141, 152, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 8, 2, 212, 3, 36, 9, 32, 13, 64, 16, 71, 27, 50, 60, 30, 61,
+			71, 48, 45, 25, 17, 6, 167, 144, 151, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 178, 0, 162, 1, 77, 3, 116, 9, 7, 13, 160, 15, 178, 26,
+			40, 36, 21, 45, 48, 32, 27, 19, 13, 6, 163, 137, 150, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 128, 1, 32, 3, 156, 9, 12, 13,
+			160, 15, 128, 26, 0, 29, 19, 41, 41, 27, 22, 17, 12, 5, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 205, 0, 6, 0, 5, 0, 28, 1,
+			28, 3, 236, 4, 50, 10, 112, 13, 254, 14, 176, 27, 45, 51, 30, 69, 65, 42, 35, 25, 7, 5, 192, 145, 135, 120, 120, 120, 167, 135,
+			165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 28, 1, 28, 3, 236, 4, 50, 10, 112, 13, 254, 14, 176, 27, 80, 96, 41, 94, 89, 58, 48, 34, 9, 7, 192, 145, 135, 120,
+			120, 120, 167, 135, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 11, 1, 15, 3, 36, 5, 28, 10, 104, 13, 254, 14, 154, 27, 40, 71, 37, 82, 76, 51, 44, 33, 8, 6,
+			187, 148, 144, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 196, 0, 216, 2, 4, 6, 196, 9, 72, 13, 0, 15, 64, 27, 40, 47, 35, 66, 56, 47,
+			47, 43, 8, 7, 167, 162, 180, 120, 120, 120, 167, 132, 135, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 205, 0, 48, 2, 28, 7, 196, 9, 72, 13, 0, 15, 63, 27, 40, 38,
+			32, 56, 51, 47, 43, 41, 12, 8, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 205, 0, 48, 2, 28, 7, 196, 9, 72, 13, 0, 15,
+			63, 27, 0, 35, 30, 53, 48, 45, 41, 39, 11, 7, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 58, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 230, 0, 5, 0, 1, 0, 0, 1, 24, 2,
+			8, 7, 236, 9, 104, 13, 15, 15, 224, 28, 45, 30, 25, 47, 53, 44, 37, 27, 9, 6, 216, 138, 159, 120, 120, 120, 107, 138, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			0, 1, 24, 2, 8, 7, 236, 9, 104, 13, 15, 15, 224, 28, 90, 67, 38, 70, 80, 66, 56, 41, 13, 9, 216, 138, 159, 120, 120, 120,
+			107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 216, 0, 232, 1, 108, 7, 40, 10, 163, 13, 57, 15, 148, 28, 55, 56, 37, 67, 69, 62, 51, 39, 12, 9, 197, 114,
+			149, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 40, 30, 27, 50, 48, 46, 40, 32,
+			9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 0, 27, 26, 47,
+			45, 44, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 179, 0, 50, 2, 175, 3, 96, 10, 15, 12,
+			141, 14, 32, 27, 45, 35, 22, 45, 52, 33, 32, 15, 11, 4, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 179, 0, 50, 2, 175, 3,
+			96, 10, 15, 12, 141, 14, 32, 27, 40, 114, 40, 82, 93, 59, 58, 27, 20, 8, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 179, 0,
+			50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 70, 94, 36, 74, 84, 53, 52, 24, 18, 7, 166, 135, 150, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 196, 0, 24, 2, 164, 6, 116, 9, 228, 12, 36, 14, 64, 27, 30, 49, 30, 57, 68, 57, 53, 46, 8, 8, 167, 135, 180, 120,
+			120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 5, 0, 199, 0, 101, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 40, 37, 24, 47, 48, 45, 44, 36, 10, 6,
+			156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 199, 0, 101, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 0, 29, 21, 41, 42, 39,
+			39, 31, 9, 5, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 235, 0, 6, 0, 1, 0, 14, 1, 24, 2, 240, 6, 236, 9, 112, 13, 80, 15,
 			186, 28, 50, 42, 28, 57, 61, 55, 44, 32, 10, 7, 211, 132, 156, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 14, 1, 24, 2, 240, 6, 236, 9,
-			112, 13, 80, 15, 186, 28, 75, 67, 35, 72, 77, 70, 55, 40, 13, 8, 211, 132, 156, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 14, 1, 24, 2,
-			240, 6, 196, 9, 112, 13, 80, 15, 186, 28, 45, 53, 31, 64, 69, 61, 48, 35, 11, 7, 211, 132, 156, 120, 120, 120, 107, 131, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 56, 14, 96, 27, 35, 31, 26, 49, 49, 29, 29, 23, 11, 6, 167, 150, 135, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 252, 13, 96, 27, 25, 28, 25, 47, 47, 27, 28, 21, 10, 6, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 252, 13, 96, 27, 0, 24, 23, 44, 44, 25, 26, 20,
-			10, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66,
-			0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 250, 0, 6, 0, 1, 0, 187, 0, 149, 1, 140, 7, 245, 9, 50, 13, 120, 15, 96, 25,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 14, 1, 24, 2, 240, 6, 236, 9,
+			112, 13, 80, 15, 186, 28, 70, 67, 35, 72, 77, 70, 55, 40, 13, 8, 211, 132, 156, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 14, 1, 24, 2,
+			240, 6, 196, 9, 112, 13, 80, 15, 186, 28, 40, 53, 31, 64, 69, 61, 48, 35, 11, 7, 211, 132, 156, 120, 120, 120, 107, 131, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0,
+			116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 56, 14, 96, 27, 40, 31, 26, 49, 49, 29, 29, 23, 11, 6, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 5, 0, 116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 252, 13, 96, 27, 35, 28, 25, 47, 47, 27, 28, 21, 10, 6, 167, 150,
+			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 116, 0, 8, 2, 120, 5, 8, 7, 144, 11, 252, 13, 96, 27, 0, 24, 23, 44, 44, 25, 26, 20,
+			10, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 250, 0, 6, 0, 1, 0, 187, 0, 149, 1, 140, 7, 245, 9, 50, 13, 120, 15, 96, 25,
 			45, 42, 25, 69, 36, 43, 43, 26, 10, 4, 160, 90, 120, 122, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 187, 0, 149, 1, 140, 7, 245, 9, 50, 13,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 187, 0, 149, 1, 140, 7, 245, 9, 50, 13,
 			120, 15, 96, 25, 65, 78, 34, 94, 50, 59, 59, 35, 14, 6, 160, 90, 120, 122, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 187, 0, 149, 1, 140, 7,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 187, 0, 149, 1, 140, 7,
 			196, 9, 50, 13, 120, 15, 96, 25, 45, 58, 30, 82, 43, 44, 47, 30, 12, 5, 160, 90, 120, 145, 120, 120, 130, 95, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 120, 0,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 120, 0,
 			250, 1, 144, 6, 188, 7, 164, 11, 16, 14, 13, 27, 50, 27, 25, 49, 47, 29, 30, 22, 10, 6, 166, 144, 133, 123, 120, 120, 130, 95,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
 			1, 0, 120, 0, 250, 1, 180, 5, 28, 7, 144, 11, 252, 13, 44, 27, 45, 27, 27, 49, 47, 29, 30, 22, 10, 6, 166, 144, 133, 123,
-			120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 120, 0, 250, 1, 180, 5, 28, 7, 144, 11, 252, 13, 44, 27, 0, 24, 25, 46, 44, 28, 28, 21, 10, 5,
-			166, 144, 133, 123, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 220, 0, 5, 0, 1, 0, 116, 0, 200, 1, 56, 4, 96, 9, 168, 12, 96, 14, 96, 27, 45, 43,
+			120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 120, 0, 250, 1, 180, 5, 28, 7, 144, 11, 252, 13, 44, 27, 0, 24, 25, 46, 44, 28, 28, 21, 10, 5,
+			166, 144, 133, 123, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 220, 0, 5, 0, 1, 0, 116, 0, 200, 1, 56, 4, 96, 9, 168, 12, 96, 14, 96, 27, 45, 43,
 			28, 58, 58, 33, 36, 30, 16, 5, 167, 140, 135, 120, 120, 120, 197, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 200, 1, 56, 4, 96, 9, 168, 12, 96, 14,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 200, 1, 56, 4, 96, 9, 168, 12, 96, 14,
 			96, 27, 80, 66, 35, 71, 71, 41, 44, 37, 19, 7, 167, 140, 135, 120, 120, 120, 197, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 208, 1, 56, 4, 46, 9,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 208, 1, 56, 4, 46, 9,
 			140, 12, 98, 14, 96, 27, 55, 59, 33, 68, 68, 39, 42, 35, 18, 7, 167, 141, 135, 120, 120, 120, 197, 110, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 8, 2,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 8, 2,
 			156, 4, 188, 7, 104, 11, 212, 13, 96, 27, 40, 39, 25, 57, 57, 33, 35, 27, 13, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
 			116, 0, 8, 2, 156, 4, 188, 7, 104, 11, 212, 13, 96, 27, 0, 32, 23, 51, 51, 30, 31, 24, 12, 7, 167, 150, 135, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 70, 0, 6, 0, 1, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 45, 54, 29, 64, 70, 37, 40, 32,
-			5, 6, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 50, 83, 36, 79,
-			86, 46, 50, 39, 6, 7, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 208, 2, 136, 5, 176, 9, 36, 14, 180, 15, 117, 27,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 70, 0, 6, 0, 1, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 45, 54, 29, 64, 70, 37, 40, 32,
+			5, 6, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 50, 83, 36, 79,
+			86, 46, 50, 39, 6, 7, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 208, 2, 136, 5, 176, 9, 36, 14, 180, 15, 117, 27,
 			68, 67, 36, 71, 61, 44, 40, 37, 15, 4, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 195, 0, 112, 2, 238, 5, 126, 9, 76, 14,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 195, 0, 112, 2, 238, 5, 126, 9, 76, 14,
 			240, 15, 35, 27, 40, 57, 34, 66, 59, 45, 41, 34, 14, 5, 181, 137, 168, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 160, 0, 72, 2, 220, 5,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 160, 0, 72, 2, 220, 5,
 			96, 9, 16, 14, 44, 16, 199, 27, 25, 38, 30, 53, 56, 42, 36, 23, 14, 5, 171, 161, 165, 121, 122, 125, 171, 137, 172, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 160, 0,
 			72, 2, 220, 5, 96, 9, 16, 14, 44, 16, 199, 27, 0, 32, 28, 49, 52, 39, 33, 22, 13, 5, 171, 161, 165, 121, 122, 125, 171, 137,
-			172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			70, 0, 6, 0, 1, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 45, 54, 29, 64, 70, 37, 40, 32, 5, 6,
-			167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 50, 83, 36, 79, 86, 46,
-			50, 39, 6, 7, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 208, 2, 136, 5, 176, 9, 36, 14, 180, 15, 117, 27, 68, 66,
+			172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			125, 0, 7, 0, 1, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 45, 54, 29, 64, 70, 37, 40, 32, 4, 5,
+			167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 224, 2, 196, 4, 140, 10, 232, 13, 160, 15, 64, 27, 50, 83, 36, 79, 86, 46,
+			50, 39, 5, 7, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 208, 2, 136, 5, 176, 9, 232, 13, 180, 15, 117, 27, 50, 66,
 			36, 71, 61, 44, 40, 36, 15, 4, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 165, 0, 16, 2, 84, 6, 76, 9, 116, 14, 44, 16,
-			208, 26, 40, 39, 31, 61, 57, 48, 42, 34, 14, 6, 165, 113, 136, 120, 120, 120, 130, 113, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 160, 0, 16, 2, 220, 5, 232, 8,
-			232, 13, 44, 16, 199, 27, 25, 39, 28, 53, 56, 42, 36, 23, 14, 5, 171, 161, 165, 121, 122, 125, 171, 137, 172, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 151, 0, 12, 2,
-			190, 5, 142, 8, 42, 13, 100, 15, 119, 27, 0, 30, 24, 46, 52, 37, 32, 24, 11, 5, 170, 148, 163, 120, 121, 122, 171, 137, 172, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 19, 1,
-			7, 0, 1, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 45, 46, 31, 58, 62, 38, 39, 24, 12, 5, 186, 155,
-			145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 75, 88, 43, 81, 86, 54, 54, 34,
-			18, 7, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 234, 2, 20, 5, 40, 10, 248, 12, 140, 15, 220, 27, 45, 70, 38, 71,
-			76, 47, 47, 29, 16, 6, 184, 154, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 185, 0, 64, 2, 76, 4, 236, 9, 28, 12, 20, 15, 89, 27,
-			40, 32, 23, 45, 48, 29, 25, 16, 10, 4, 172, 140, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 164, 0, 8, 2, 0, 5, 10, 9, 38, 12,
-			216, 14, 64, 27, 40, 25, 19, 41, 45, 29, 25, 18, 9, 4, 171, 137, 155, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 153, 0, 236, 1, 50, 5,
-			109, 8, 53, 12, 186, 14, 51, 27, 30, 23, 17, 39, 44, 29, 25, 19, 8, 4, 170, 136, 158, 120, 120, 120, 237, 165, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 142, 0,
-			208, 1, 100, 5, 208, 7, 68, 12, 156, 14, 38, 27, 0, 15, 14, 34, 39, 27, 23, 19, 6, 3, 170, 135, 161, 120, 120, 120, 140, 120,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8,
-			165, 0, 4, 0, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 45, 66, 33, 67, 77, 42, 51, 25, 15, 6,
-			170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 80, 101, 41, 84, 95, 52,
-			63, 31, 18, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 40, 83,
-			37, 76, 87, 48, 57, 28, 17, 7, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 204, 0, 100, 2, 216, 4, 60, 10, 168, 12, 10, 15,
-			0, 28, 0, 51, 31, 59, 68, 37, 45, 22, 13, 9, 167, 165, 150, 120, 120, 120, 167, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 24, 1, 16, 3,
-			156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 52, 29, 59, 64, 45, 35, 22, 10, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44,
-			45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 80, 99, 40, 81, 89, 62, 48, 31, 14, 7, 186, 152, 135, 120, 120, 120,
-			192, 155, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 70, 89, 38, 77, 84, 59, 45, 29, 14, 7, 186, 152,
-			135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 24, 1, 8, 3, 176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 0, 47, 28, 58, 61, 42, 33, 22,
-			10, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 160, 0, 4, 0, 1, 0, 215, 0, 6, 2, 128, 7, 236, 9, 251, 12, 61, 14, 144, 28,
-			50, 45, 31, 61, 55, 60, 46, 36, 11, 8, 175, 109, 133, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 215, 0, 6, 2, 128, 7, 236, 9, 251, 12,
-			61, 14, 144, 28, 70, 80, 42, 81, 74, 80, 61, 48, 15, 11, 175, 109, 133, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 202, 0, 62, 2, 30, 7,
-			236, 9, 82, 13, 228, 14, 207, 28, 40, 62, 39, 70, 73, 69, 53, 39, 13, 8, 195, 127, 153, 120, 120, 120, 160, 105, 127, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0,
-			69, 2, 18, 7, 236, 9, 92, 13, 247, 14, 215, 28, 0, 35, 29, 51, 54, 50, 39, 28, 9, 6, 198, 129, 156, 120, 120, 120, 198, 105,
-			127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			170, 0, 4, 0, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14, 96, 26, 50, 39, 29, 58, 54, 47, 42, 30, 14, 6,
-			163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14, 96, 26, 60, 76, 41, 81, 76, 65,
-			58, 42, 20, 8, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14, 96, 26, 60, 68,
-			39, 77, 72, 62, 55, 40, 18, 7, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14,
-			96, 26, 0, 34, 27, 54, 50, 44, 39, 28, 13, 5, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 200, 0, 4, 0, 1, 0, 184, 0, 8, 2,
-			208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 50, 40, 27, 55, 61, 58, 43, 32, 11, 8, 185, 117, 127, 120, 120, 120, 185, 117, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 70, 76, 38, 76, 83, 80, 60, 44, 16, 12, 185, 117, 127, 120, 120, 120,
-			185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 80, 43, 28, 57, 62, 60, 45, 33, 12, 9, 185, 117,
-			127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 0, 27, 22, 45, 50, 48, 36, 26,
-			9, 7, 185, 117, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 199, 0, 54, 2, 122, 3, 81, 10, 163, 11, 54, 14, 159, 27,
-			50, 61, 22, 57, 69, 34, 33, 19, 12, 5, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 199, 0, 54, 2, 122, 3, 81, 10, 163, 11,
-			54, 14, 159, 27, 60, 115, 30, 78, 96, 47, 45, 26, 17, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 199, 0, 54, 2, 122, 3,
-			81, 10, 163, 11, 54, 14, 159, 27, 40, 104, 29, 74, 91, 45, 43, 25, 16, 6, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 199, 0,
-			54, 2, 122, 3, 81, 10, 163, 11, 54, 14, 159, 27, 0, 52, 20, 52, 64, 32, 30, 17, 11, 4, 172, 142, 135, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			175, 0, 4, 0, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 45, 44, 27, 54, 58, 34, 31, 24, 12, 4,
-			189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 80, 96, 40, 81, 86, 51,
-			46, 36, 18, 7, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 50, 85,
-			38, 76, 81, 48, 44, 34, 17, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15,
-			214, 27, 0, 42, 27, 54, 57, 34, 31, 24, 12, 4, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 135, 0, 151, 1,
-			220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 45, 43, 21, 58, 55, 49, 40, 32, 10, 11, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			135, 0, 151, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 80, 65, 26, 72, 68, 61, 49, 39, 12, 13, 178, 126, 132, 123, 123, 141,
-			187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 135, 0, 151, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 70, 56, 24, 67, 63, 56, 45, 36, 12, 12, 178, 126,
-			132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 135, 0, 136, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 0, 38, 20, 55, 52, 46, 37, 30,
-			9, 10, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 240, 0, 7, 0, 1, 0, 24, 1, 240, 2, 166, 4, 80, 10, 192, 13, 150, 15, 32, 28,
-			45, 57, 30, 66, 66, 46, 36, 23, 11, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 24, 1, 240, 2, 166, 4, 80, 10, 192, 13,
-			150, 15, 32, 28, 70, 109, 41, 91, 91, 63, 49, 32, 15, 8, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 24, 1, 228, 2, 175, 4,
-			58, 10, 204, 13, 162, 15, 32, 28, 50, 94, 40, 84, 85, 57, 48, 31, 14, 7, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 5, 0, 24, 1,
-			199, 2, 196, 4, 4, 10, 232, 13, 192, 15, 32, 28, 30, 77, 38, 76, 78, 46, 47, 29, 13, 7, 186, 152, 135, 120, 120, 120, 192, 155,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			5, 0, 24, 1, 184, 2, 20, 5, 176, 9, 244, 11, 120, 15, 32, 28, 25, 31, 28, 51, 40, 30, 33, 20, 9, 5, 186, 152, 135, 120,
-			120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 24, 1, 176, 2, 40, 5, 176, 9, 204, 11, 236, 14, 32, 28, 20, 30, 28, 52, 24, 7, 14, 14, 9, 5,
-			186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 24, 1, 176, 2, 40, 5, 176, 9, 204, 11, 236, 14, 32, 28, 0, 33, 28, 52, 40, 31,
-			33, 14, 9, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 240, 0, 5, 0, 1, 0, 200, 0, 208, 1, 188, 7, 216, 9, 248, 12, 66, 14,
-			128, 28, 45, 44, 25, 57, 57, 61, 46, 35, 10, 8, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 208, 1, 188, 7, 216, 9,
-			248, 12, 66, 14, 128, 28, 70, 77, 34, 75, 75, 81, 61, 46, 14, 10, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 199, 0, 227, 1,
-			131, 7, 210, 9, 248, 12, 73, 14, 106, 28, 75, 67, 33, 72, 72, 74, 57, 43, 14, 9, 184, 111, 127, 120, 120, 120, 185, 107, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 62, 37, 71, 79, 48, 44, 32, 16, 0, 180, 150, 125, 120, 120, 120,
-			200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 0, 38, 29, 56, 62, 38, 35, 25, 13, 0, 180, 150,
-			125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 45, 0, 4, 0, 1, 0, 152, 0, 72, 1, 76, 9, 124, 11, 172, 13, 120, 15, 160, 26, 45, 41, 17, 60,
-			53, 49, 49, 26, 12, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 72, 1, 76, 9, 124, 11, 172, 13, 120, 15, 160, 26,
-			100, 69, 22, 78, 70, 64, 64, 34, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 24, 1, 136, 9, 164, 11, 16, 14,
-			120, 15, 160, 26, 40, 67, 21, 74, 66, 57, 61, 32, 15, 7, 167, 97, 120, 120, 120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 24, 1, 136, 9,
-			164, 11, 16, 14, 120, 15, 160, 26, 0, 38, 16, 56, 50, 43, 46, 24, 11, 5, 167, 97, 120, 120, 120, 120, 167, 97, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 150, 0, 4, 0,
-			1, 0, 192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 50, 59, 24, 59, 64, 35, 34, 20, 12, 5, 172, 142, 135, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 60, 124, 36, 85, 93, 52, 50, 29, 18, 7,
-			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0, 40, 2, 132, 3, 100, 10, 164, 11, 96, 14, 159, 27, 40, 97, 32, 77, 83, 46,
-			45, 26, 16, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 40, 2, 56, 4, 0, 10, 104, 11, 36, 14, 159, 27, 0, 34,
-			21, 51, 55, 31, 30, 17, 11, 4, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 6, 0, 1, 0, 153, 0, 168, 1, 12, 3, 120, 10,
-			168, 12, 196, 14, 244, 26, 45, 64, 21, 71, 54, 37, 41, 30, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 153, 0, 168, 1,
-			12, 3, 120, 10, 168, 12, 196, 14, 244, 26, 60, 89, 25, 84, 64, 44, 49, 36, 20, 9, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			153, 0, 192, 1, 32, 3, 120, 10, 168, 12, 176, 14, 244, 26, 50, 79, 23, 79, 60, 41, 41, 38, 19, 8, 165, 126, 145, 120, 120, 120,
-			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 153, 0, 224, 1, 112, 3, 196, 9, 168, 12, 156, 14, 244, 26, 45, 68, 32, 75, 57, 21, 39, 36, 18, 8, 165, 126,
-			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 153, 0, 248, 1, 172, 3, 252, 8, 128, 12, 116, 14, 244, 26, 30, 33, 28, 54, 31, 23, 28, 25,
-			11, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 153, 0, 248, 1, 172, 3, 28, 7, 84, 11, 72, 13, 244, 26, 0, 31, 27, 51,
-			38, 16, 27, 24, 10, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 195, 0, 4, 0, 1, 0, 135, 0, 136, 1, 164, 6, 192, 8, 188, 12,
-			128, 14, 153, 24, 45, 42, 22, 57, 51, 48, 39, 31, 10, 11, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 135, 0, 136, 1, 164, 6,
-			192, 8, 188, 12, 128, 14, 153, 24, 80, 73, 30, 76, 68, 64, 52, 41, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 135, 0,
-			136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 70, 59, 27, 68, 61, 57, 46, 37, 12, 13, 178, 126, 132, 123, 123, 141, 187, 126,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 135, 0, 136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 0, 37, 21, 53, 48, 45, 36, 29, 9, 10, 178, 126, 132, 123,
-			123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 235, 0, 5, 0, 1, 0, 24, 1, 186, 2, 40, 5, 180, 9, 98, 13, 20, 15, 71, 28, 45, 42, 28, 56, 57, 42,
-			34, 27, 9, 6, 210, 133, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 24, 1, 186, 2, 40, 5, 180, 9, 98, 13, 20, 15, 71, 28, 60, 81,
-			39, 79, 80, 58, 48, 37, 13, 8, 210, 133, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 10, 1, 145, 2, 70, 5, 166, 9, 86, 13, 2, 15,
-			254, 27, 80, 64, 33, 70, 69, 51, 43, 34, 11, 8, 205, 129, 141, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 24, 1, 84, 6, 36, 9,
-			228, 12, 96, 14, 100, 25, 50, 43, 19, 61, 41, 35, 38, 35, 9, 12, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1,
-			64, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 27, 15, 48, 33, 28, 30, 28, 7, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 220, 0,
-			5, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 45, 14, 61, 43, 32, 35, 26, 14, 6, 165, 126,
-			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 90, 77, 19, 79, 57, 41, 46, 34,
-			19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 62, 17, 71,
-			51, 37, 41, 30, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26,
-			30, 51, 15, 65, 46, 34, 38, 28, 15, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12,
-			176, 14, 244, 26, 0, 30, 11, 50, 35, 26, 29, 21, 11, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 51, 1,
-			124, 3, 60, 5, 124, 10, 93, 13, 187, 14, 253, 27, 45, 59, 32, 70, 62, 38, 33, 22, 10, 5, 205, 152, 124, 120, 120, 120, 249, 174,
-			255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 51, 1, 124, 3, 60, 5, 124, 10, 93, 13, 187, 14, 253, 27, 50, 117, 45, 99, 87, 54, 47, 31, 15, 7, 205, 152, 124, 120,
-			120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 9, 1, 254, 2, 28, 6, 68, 10, 45, 13, 119, 14, 49, 28, 50, 93, 43, 90, 79, 62, 51, 33, 14, 8,
-			187, 133, 125, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 64, 2, 108, 7, 240, 9, 228, 12, 16, 14, 128, 28, 50, 57, 37, 72, 64, 71,
-			54, 34, 13, 10, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 224, 0, 40, 2, 8, 7, 176, 9, 112, 13, 241, 14, 64, 27, 40, 42,
-			28, 60, 56, 56, 49, 43, 8, 8, 255, 90, 180, 120, 120, 120, 187, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 224, 0, 40, 2, 8, 7, 176, 9, 112, 13, 241, 14,
-			64, 27, 0, 34, 25, 54, 50, 50, 44, 39, 7, 7, 255, 90, 180, 120, 120, 120, 187, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 245, 0, 6, 0, 1, 0, 24, 1, 248, 2,
-			176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 60, 34, 66, 63, 43, 37, 24, 11, 6, 186, 152, 152, 120, 120, 120, 192, 155, 167, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			24, 1, 248, 2, 176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 60, 116, 48, 92, 88, 60, 52, 34, 16, 8, 186, 152, 152, 120, 120, 120,
-			192, 155, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 12, 1, 224, 2, 100, 5, 134, 10, 158, 13, 64, 15, 41, 28, 40, 94, 45, 93, 72, 60, 49, 33, 15, 8, 186, 148,
-			160, 120, 120, 120, 192, 155, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 214, 0, 28, 2, 28, 7, 177, 10, 185, 13, 82, 15, 84, 28, 40, 65, 36, 72, 61, 57, 48, 35,
-			14, 9, 185, 127, 169, 120, 120, 120, 192, 155, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 160, 0, 88, 1, 212, 8, 220, 10, 212, 13, 100, 15, 128, 28, 60, 41, 16, 61,
-			42, 44, 39, 30, 11, 8, 185, 107, 177, 120, 120, 120, 185, 107, 177, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 96, 1, 232, 8, 220, 10, 16, 14, 196, 19, 88, 27,
-			0, 33, 20, 48, 32, 36, 32, 12, 11, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 184, 0, 160, 1, 92, 8,
-			100, 10, 212, 13, 60, 15, 128, 28, 45, 39, 25, 53, 56, 47, 39, 34, 11, 8, 185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0,
-			160, 1, 92, 8, 100, 10, 212, 13, 60, 15, 128, 28, 70, 81, 37, 76, 80, 68, 56, 48, 16, 12, 185, 107, 143, 120, 120, 120, 185, 107,
-			167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 184, 0, 160, 1, 92, 8, 100, 10, 212, 13, 60, 15, 128, 28, 60, 66, 33, 68, 72, 61, 50, 43, 14, 10, 185, 107, 143, 120,
-			120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 184, 0, 160, 1, 92, 8, 100, 10, 212, 13, 60, 15, 128, 28, 0, 29, 22, 45, 48, 40, 33, 29, 9, 7,
-			185, 107, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 6, 0, 1, 0, 208, 0, 112, 2, 212, 3, 60, 10, 188, 12, 92, 14, 87, 27, 45, 57,
-			26, 56, 67, 40, 36, 33, 9, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 208, 0, 112, 2, 212, 3, 60, 10, 188, 12, 92, 14,
-			87, 27, 75, 104, 36, 76, 90, 54, 48, 44, 12, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 16, 2, 180, 5, 192, 8,
-			32, 13, 199, 14, 92, 26, 69, 77, 41, 83, 68, 57, 53, 42, 15, 8, 163, 119, 156, 137, 120, 120, 167, 142, 157, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 88, 1,
-			238, 7, 100, 10, 132, 13, 50, 15, 96, 25, 30, 59, 27, 78, 48, 48, 52, 30, 13, 6, 160, 92, 147, 155, 120, 120, 130, 95, 147, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			152, 0, 80, 1, 30, 8, 240, 10, 229, 13, 181, 15, 20, 26, 30, 78, 34, 87, 56, 53, 54, 37, 16, 8, 162, 95, 159, 149, 120, 120,
-			130, 95, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 152, 0, 72, 1, 79, 8, 124, 11, 71, 14, 56, 16, 200, 26, 0, 38, 27, 58, 40, 35, 32, 27, 12, 7, 165, 99,
-			171, 142, 120, 120, 130, 99, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8,
-			87, 182, 0, 250, 0, 0, 210, 0, 5, 0, 1, 0, 148, 0, 128, 1, 238, 7, 60, 10, 42, 13, 50, 15, 96, 25, 45, 39, 23, 65,
-			47, 43, 41, 26, 10, 5, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 148, 0, 128, 1, 238, 7, 60, 10, 42, 13, 50, 15, 96, 25,
-			60, 71, 32, 88, 64, 58, 55, 35, 14, 6, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 128, 1, 228, 7, 216, 9, 248, 12,
-			0, 15, 96, 25, 60, 62, 27, 83, 60, 55, 52, 33, 13, 6, 160, 92, 120, 155, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 120, 0, 250, 1, 144, 6,
-			188, 7, 164, 11, 16, 14, 13, 27, 45, 27, 24, 49, 46, 29, 30, 22, 11, 6, 166, 144, 133, 123, 120, 120, 130, 95, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 120, 0,
-			250, 1, 180, 5, 28, 7, 144, 11, 252, 13, 44, 27, 0, 26, 24, 49, 46, 29, 30, 22, 11, 6, 166, 144, 133, 123, 120, 120, 130, 95,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			75, 0, 5, 0, 1, 0, 135, 0, 88, 1, 224, 6, 192, 8, 188, 12, 128, 14, 153, 24, 45, 51, 22, 63, 57, 50, 41, 32, 10, 11,
-			178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 135, 0, 88, 1, 204, 6, 192, 8, 188, 12, 128, 14, 153, 24, 70, 74, 26, 76, 68, 61,
-			49, 39, 12, 13, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 150, 0, 162, 1, 48, 6, 246, 8, 164, 12, 131, 14, 85, 25, 70, 70,
-			30, 74, 72, 56, 45, 37, 13, 9, 178, 128, 130, 122, 122, 134, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 186, 0, 80, 2, 196, 4, 116, 9, 108, 12, 141, 14,
-			13, 27, 30, 64, 37, 70, 79, 47, 38, 32, 16, 0, 180, 135, 125, 120, 120, 120, 200, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 186, 0, 80, 2, 196, 4, 96, 9,
-			108, 12, 141, 14, 13, 27, 0, 49, 32, 61, 69, 41, 33, 28, 14, 0, 180, 135, 125, 120, 120, 120, 200, 135, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0,
-			196, 0, 104, 2, 252, 3, 0, 10, 28, 12, 116, 14, 119, 26, 53, 61, 35, 71, 73, 28, 34, 20, 9, 8, 162, 105, 132, 120, 120, 120,
-			162, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 7, 0, 208, 0, 48, 2, 132, 3, 220, 10, 204, 11, 141, 14, 0, 26, 24, 60, 38, 81, 60, 33, 35, 16, 11, 8, 162, 105,
-			87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 208, 0, 229, 1, 123, 3, 220, 10, 204, 11, 141, 14, 0, 26, 51, 41, 30, 65, 48, 27, 28, 13,
-			9, 6, 162, 105, 87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 136, 0, 194, 1, 24, 3, 164, 11, 68, 12, 241, 14, 0, 26, 0, 25, 28, 46,
-			28, 24, 20, 16, 11, 8, 162, 135, 87, 120, 120, 120, 162, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 135, 0, 3, 0, 1, 0, 176, 0, 72, 2, 160, 5, 156, 9, 188, 12,
-			116, 14, 88, 27, 45, 50, 33, 60, 73, 41, 39, 33, 17, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 72, 2, 160, 5,
-			156, 9, 188, 12, 116, 14, 88, 27, 90, 78, 41, 75, 91, 51, 49, 41, 21, 8, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0,
-			88, 2, 160, 5, 156, 9, 188, 12, 116, 14, 88, 27, 0, 33, 27, 50, 60, 34, 32, 27, 14, 5, 167, 135, 135, 120, 120, 120, 197, 135,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			185, 0, 4, 0, 1, 0, 240, 0, 224, 2, 4, 6, 196, 9, 92, 13, 80, 15, 153, 28, 45, 37, 29, 51, 56, 41, 29, 26, 9, 5,
-			197, 176, 161, 135, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0, 224, 2, 4, 6, 196, 9, 92, 13, 80, 15, 153, 28, 80, 59, 37, 64, 71, 53,
-			37, 33, 11, 6, 197, 176, 161, 135, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0, 232, 2, 4, 6, 196, 9, 92, 13, 80, 15, 153, 28, 60, 55,
-			35, 64, 64, 50, 35, 31, 11, 6, 197, 179, 161, 135, 120, 120, 220, 179, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 240, 0, 240, 2, 4, 6, 196, 9, 92, 13, 80, 15,
-			153, 28, 0, 33, 27, 50, 50, 39, 27, 24, 8, 5, 197, 179, 161, 135, 120, 120, 220, 179, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 64, 1, 72, 2,
-			28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 50, 34, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 60, 68, 37, 68, 73, 67, 51, 38, 12, 7, 244, 132, 159, 120, 120, 120,
-			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 60, 68, 37, 68, 73, 67, 51, 38, 12, 7, 244, 132,
-			159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 0, 34, 26, 48, 51, 47, 36, 27,
-			9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 160, 0, 4, 0, 1, 0, 229, 0, 183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27,
-			50, 43, 28, 56, 58, 35, 35, 23, 12, 5, 190, 159, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 229, 0, 183, 2, 36, 5, 196, 9, 228, 12,
-			216, 14, 197, 27, 60, 86, 40, 80, 82, 50, 50, 32, 17, 7, 190, 159, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 229, 0, 183, 2, 36, 5,
-			196, 9, 228, 12, 216, 14, 197, 27, 50, 76, 38, 75, 78, 47, 47, 30, 16, 6, 190, 159, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70,
-			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 229, 0,
-			183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27, 0, 38, 27, 53, 55, 33, 33, 21, 11, 4, 190, 159, 148, 120, 120, 120, 237, 165,
-			165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			175, 0, 4, 0, 1, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12, 141, 14, 128, 26, 45, 40, 24, 52, 57, 37, 31, 24, 17, 4,
-			162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12, 141, 14, 128, 26, 70, 95, 38, 79, 88, 57,
-			47, 37, 27, 7, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12, 141, 14, 128, 26, 60, 76,
-			34, 71, 79, 51, 42, 33, 24, 6, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12, 141, 14,
-			128, 26, 0, 36, 23, 49, 54, 35, 29, 23, 17, 4, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 225, 0, 5, 0, 1, 0, 224, 0, 136, 2,
-			84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 45, 34, 20, 41, 60, 29, 29, 29, 9, 4, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			224, 0, 136, 2, 84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 60, 114, 38, 76, 110, 53, 53, 53, 16, 8, 167, 167, 135, 120, 120, 120,
-			167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 224, 0, 136, 2, 84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 60, 102, 36, 72, 104, 50, 50, 50, 15, 7, 167, 167,
-			135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 224, 0, 128, 2, 84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 60, 61, 28, 56, 81, 39, 39, 39,
-			12, 6, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 224, 0, 120, 2, 116, 4, 24, 11, 228, 12, 136, 14, 96, 27, 0, 26, 18, 37,
-			54, 26, 26, 26, 8, 4, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 140, 0, 32, 2, 160, 5, 36, 9, 248, 12,
-			41, 14, 32, 27, 45, 47, 30, 64, 56, 56, 40, 40, 15, 8, 167, 135, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 32, 2, 160, 5,
-			16, 9, 148, 12, 41, 14, 32, 27, 48, 82, 37, 79, 86, 79, 64, 53, 26, 9, 170, 135, 157, 120, 120, 120, 140, 120, 157, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 172, 0,
-			32, 2, 160, 5, 16, 9, 168, 12, 41, 14, 160, 27, 50, 67, 34, 67, 86, 71, 57, 51, 16, 8, 170, 120, 120, 120, 120, 120, 170, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 204, 0, 32, 2, 148, 5, 16, 9, 168, 12, 41, 14, 160, 27, 60, 52, 34, 68, 67, 54, 45, 35, 15, 8, 170, 120, 135, 120,
-			120, 120, 140, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 204, 0, 33, 2, 140, 5, 16, 9, 168, 12, 141, 14, 160, 27, 0, 39, 31, 52, 64, 56, 38, 30, 11, 8,
-			170, 135, 150, 120, 120, 120, 140, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0, 1, 0, 180, 0, 64, 1, 76, 4, 212, 8, 28, 12, 226, 14, 144, 26, 50, 40,
-			13, 59, 45, 30, 33, 29, 14, 7, 170, 130, 126, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 180, 0, 64, 1, 76, 4, 212, 8, 28, 12, 226, 14,
-			144, 26, 85, 59, 16, 72, 55, 37, 41, 36, 18, 9, 170, 130, 126, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 180, 0, 64, 1, 76, 4, 212, 8,
-			28, 12, 226, 14, 144, 26, 56, 43, 13, 61, 47, 32, 35, 30, 15, 7, 170, 130, 126, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 180, 0, 64, 1,
-			252, 3, 152, 8, 28, 12, 226, 14, 144, 26, 0, 36, 12, 57, 37, 23, 25, 23, 11, 7, 170, 130, 148, 120, 120, 120, 162, 120, 148, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0,
-			6, 0, 1, 0, 236, 0, 136, 3, 140, 5, 116, 9, 88, 12, 116, 14, 224, 27, 50, 55, 32, 56, 75, 41, 43, 27, 10, 8, 250, 120,
-			210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 236, 0, 136, 3, 140, 5, 136, 9, 88, 12, 116, 14, 224, 27, 75, 103, 34, 81, 98, 53, 57, 36,
-			12, 6, 225, 120, 210, 120, 120, 120, 255, 120, 165, 44, 60, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 220, 0, 80, 3, 80, 5, 36, 9, 128, 12, 41, 14, 224, 27, 40, 64, 28, 59,
-			81, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44, 60, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 0, 1, 173, 2, 87, 4, 16, 9, 48, 12, 41, 14, 128, 27,
-			35, 60, 28, 49, 77, 34, 51, 36, 15, 6, 237, 207, 192, 120, 120, 120, 141, 120, 147, 44, 55, 70, 130, 57, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 0, 1, 76, 2, 10, 4, 16, 9, 28, 12,
-			41, 14, 112, 27, 35, 70, 35, 63, 75, 31, 48, 33, 17, 8, 221, 148, 186, 120, 120, 120, 141, 120, 147, 44, 45, 70, 130, 57, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 0, 1, 24, 2, 172, 3,
-			252, 8, 28, 12, 41, 14, 112, 27, 0, 23, 20, 36, 37, 17, 25, 19, 9, 4, 221, 148, 186, 120, 120, 120, 141, 120, 147, 44, 45, 70,
-			130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 5, 0,
-			1, 0, 248, 0, 56, 2, 84, 6, 36, 9, 28, 12, 166, 14, 96, 28, 49, 28, 22, 43, 55, 38, 28, 23, 9, 4, 167, 120, 165, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 248, 0, 56, 2, 84, 6, 36, 9, 28, 12, 166, 14, 96, 28, 41, 87, 39, 77, 98, 67, 50, 41, 17, 7,
-			167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 248, 0, 8, 2, 84, 6, 212, 8, 28, 12, 166, 14, 96, 28, 31, 82, 37, 72, 92, 63,
-			47, 38, 16, 7, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 8, 1, 232, 1, 44, 6, 152, 8, 204, 11, 166, 14, 96, 28, 90, 50,
-			23, 66, 66, 38, 30, 25, 14, 8, 165, 120, 135, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 190, 0, 120, 1, 231, 4, 195, 8, 205, 12, 116, 14,
-			160, 28, 0, 33, 30, 54, 32, 25, 21, 18, 7, 7, 120, 103, 105, 120, 120, 120, 120, 100, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 196, 0, 7, 0, 5, 0, 72, 1, 136, 3,
-			62, 5, 140, 10, 112, 13, 191, 14, 32, 28, 51, 43, 28, 63, 56, 33, 28, 18, 8, 4, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44,
-			45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			72, 1, 136, 3, 62, 5, 140, 10, 112, 13, 191, 14, 32, 28, 45, 104, 44, 98, 87, 51, 44, 28, 13, 6, 207, 150, 105, 120, 120, 120,
-			237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 72, 1, 136, 3, 62, 5, 140, 10, 112, 13, 191, 14, 32, 28, 14, 92, 41, 92, 82, 48, 41, 26, 12, 6, 207, 150,
-			105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 33, 0, 6, 1, 95, 3, 155, 5, 186, 9, 22, 13, 91, 14, 176, 27, 23, 65, 36, 77, 72, 48, 45, 36,
-			10, 7, 187, 142, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 33, 0, 196, 0, 32, 3, 249, 5, 232, 8, 188, 12, 247, 13, 64, 27, 33, 41, 29, 58,
-			60, 50, 50, 50, 9, 8, 167, 135, 180, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 212, 0, 244, 1, 133, 7, 136, 9, 228, 12, 91, 14, 64, 27,
-			30, 38, 38, 56, 53, 53, 40, 39, 16, 9, 167, 90, 180, 120, 120, 120, 137, 75, 150, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 212, 0, 184, 1, 177, 7, 196, 9, 52, 13,
-			91, 14, 192, 27, 0, 34, 40, 51, 44, 44, 32, 28, 11, 10, 167, 90, 105, 120, 120, 120, 122, 75, 90, 44, 45, 70, 130, 56, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 230, 0, 5, 0, 1, 0, 0, 1,
-			24, 2, 108, 7, 236, 9, 104, 13, 15, 15, 224, 28, 45, 29, 25, 47, 53, 44, 37, 27, 9, 6, 216, 138, 159, 120, 120, 120, 107, 138,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 0, 1, 24, 2, 108, 7, 236, 9, 104, 13, 15, 15, 224, 28, 90, 67, 38, 70, 80, 66, 56, 41, 13, 9, 216, 138, 159, 120,
-			120, 120, 107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 216, 0, 232, 1, 188, 7, 40, 10, 163, 13, 57, 15, 148, 28, 55, 55, 37, 67, 69, 62, 51, 39, 12, 9,
-			197, 114, 149, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 40, 30, 27, 50, 48, 46,
-			40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 0, 27,
-			26, 47, 45, 44, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 179, 0, 50, 2, 175, 3, 96, 10,
-			15, 12, 141, 14, 32, 27, 45, 36, 22, 46, 52, 33, 32, 15, 11, 4, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 179, 0, 50, 2,
-			175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 40, 116, 40, 82, 93, 59, 58, 27, 20, 8, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			179, 0, 50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 70, 94, 36, 74, 84, 53, 52, 24, 18, 7, 166, 135, 150, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 196, 0, 24, 2, 164, 6, 116, 9, 228, 12, 36, 14, 64, 27, 30, 49, 30, 57, 68, 57, 53, 46, 8, 8, 167, 135,
-			180, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 199, 0, 101, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 35, 38, 24, 47, 48, 45, 44, 36,
-			11, 6, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 199, 0, 101, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 0, 29, 21, 41,
-			42, 39, 39, 31, 9, 5, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 240, 0, 168, 2, 28, 7, 176, 9, 112, 13,
-			10, 15, 96, 27, 44, 48, 34, 65, 59, 56, 38, 23, 6, 8, 165, 135, 240, 120, 120, 120, 195, 105, 165, 44, 45, 70, 130, 57, 0, 0,
-			0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 240, 0, 176, 2, 28, 7,
-			136, 9, 112, 13, 60, 15, 96, 27, 77, 68, 36, 76, 79, 74, 40, 24, 8, 6, 170, 120, 180, 120, 120, 120, 200, 120, 165, 44, 45, 70,
-			130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0,
-			163, 2, 244, 6, 116, 9, 72, 13, 60, 15, 96, 27, 77, 54, 29, 62, 71, 62, 56, 25, 13, 6, 167, 120, 180, 120, 120, 120, 242, 150,
-			150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 240, 0, 223, 2, 114, 6, 216, 9, 172, 13, 60, 15, 96, 28, 35, 36, 27, 56, 50, 49, 42, 26, 10, 7, 167, 120, 180, 120,
-			120, 120, 242, 150, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 240, 0, 223, 2, 26, 6, 236, 9, 172, 13, 60, 15, 96, 28, 0, 28, 25, 53, 43, 40, 35, 21, 7, 8,
-			167, 105, 180, 120, 120, 120, 242, 135, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 193, 0, 6, 0, 1, 0, 104, 0, 160, 1, 9, 8, 80, 10, 72, 13, 60, 15, 160, 27, 42, 46,
-			10, 66, 56, 58, 42, 33, 10, 8, 150, 165, 150, 120, 120, 120, 150, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 104, 0, 160, 1, 20, 8, 160, 10, 72, 13, 60, 15,
-			32, 27, 40, 63, 20, 72, 72, 77, 67, 37, 15, 8, 167, 120, 150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 179, 1, 232, 7, 80, 10,
-			52, 13, 60, 15, 64, 27, 51, 45, 20, 70, 53, 50, 46, 25, 9, 8, 180, 90, 150, 120, 120, 120, 180, 105, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 198, 0, 48, 2,
-			8, 7, 136, 9, 46, 13, 249, 14, 212, 25, 30, 40, 24, 62, 57, 51, 41, 26, 11, 8, 157, 117, 150, 120, 120, 120, 167, 90, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			201, 0, 94, 2, 44, 6, 72, 9, 183, 12, 226, 14, 170, 25, 30, 17, 18, 36, 40, 36, 29, 17, 5, 6, 148, 154, 138, 120, 120, 120,
-			167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 210, 0, 141, 2, 150, 5, 24, 9, 128, 12, 15, 15, 77, 25, 0, 19, 23, 36, 44, 37, 29, 17, 3, 8, 139, 168,
-			138, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8,
-			87, 182, 0, 250, 0, 0, 180, 0, 4, 0, 1, 0, 168, 0, 232, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 45, 56, 28, 58,
-			64, 39, 36, 18, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 232, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27,
-			70, 115, 40, 83, 92, 56, 51, 26, 19, 8, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 232, 1, 132, 3, 216, 9, 164, 11,
-			141, 14, 32, 27, 65, 93, 36, 74, 83, 50, 46, 23, 17, 7, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 232, 1, 152, 3,
-			216, 9, 164, 11, 141, 14, 32, 27, 0, 35, 25, 45, 52, 29, 27, 15, 11, 4, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0,
-			1, 0, 24, 1, 168, 3, 205, 5, 60, 10, 92, 13, 216, 14, 32, 27, 36, 52, 28, 64, 61, 46, 40, 35, 8, 4, 200, 135, 210, 120,
-			120, 120, 255, 150, 135, 44, 60, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 24, 1, 168, 3, 205, 5, 60, 10, 92, 13, 216, 14, 32, 27, 29, 112, 41, 94, 90, 67, 58, 52, 12, 6,
-			200, 135, 210, 120, 120, 120, 255, 150, 135, 44, 60, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 8, 1, 168, 3, 62, 5, 216, 9, 188, 12, 166, 14, 32, 27, 39, 128, 38, 94, 103, 79,
-			65, 53, 16, 8, 185, 180, 165, 120, 120, 120, 245, 135, 120, 44, 60, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 5, 0, 2, 1, 128, 3, 34, 5, 184, 9, 164, 12, 173, 14, 60, 27, 42, 108,
-			37, 86, 98, 72, 60, 48, 15, 8, 185, 175, 159, 120, 120, 120, 245, 135, 120, 44, 50, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 232, 0, 185, 2, 116, 4, 56, 9, 68, 12, 203, 14,
-			176, 27, 84, 52, 33, 55, 80, 46, 39, 31, 11, 8, 185, 157, 135, 120, 120, 120, 194, 105, 111, 44, 45, 70, 130, 57, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 200, 0, 193, 2, 196, 4, 252, 8,
-			128, 12, 241, 14, 32, 28, 0, 26, 28, 42, 56, 36, 32, 26, 8, 8, 185, 180, 120, 120, 120, 120, 155, 120, 105, 44, 45, 70, 130, 56,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 139, 0, 3, 0, 1, 0,
-			158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 50, 32, 10, 59, 42, 49, 50, 25, 11, 5, 166, 105, 120, 120, 120, 120,
-			130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 90, 73, 15, 88, 64, 74, 75, 37, 17, 8, 166, 105,
-			120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 0, 33, 10, 60, 43, 50, 51, 25,
-			11, 5, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 235, 0, 5, 0, 1, 0, 192, 0, 176, 1, 188, 7, 60, 10, 102, 13, 191, 14, 128, 28,
-			45, 27, 21, 44, 45, 44, 34, 28, 8, 6, 185, 107, 135, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 192, 0, 176, 1, 188, 7, 60, 10, 102, 13,
-			191, 14, 128, 28, 70, 80, 35, 76, 77, 75, 59, 47, 15, 11, 185, 107, 135, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 188, 0, 164, 1, 212, 7,
-			72, 10, 99, 13, 196, 14, 96, 28, 70, 69, 32, 71, 72, 69, 55, 44, 14, 10, 184, 107, 134, 120, 120, 120, 185, 107, 167, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 136, 0,
-			17, 1, 207, 8, 213, 10, 57, 13, 7, 15, 236, 26, 50, 38, 13, 54, 50, 49, 46, 28, 11, 7, 174, 105, 118, 120, 120, 120, 185, 107,
-			167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 118, 0, 224, 0, 35, 9, 4, 11, 42, 13, 30, 15, 112, 26, 0, 23, 7, 45, 40, 39, 39, 21, 10, 6, 171, 105, 112, 120,
-			120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 34, 35, 26, 50, 60, 34,
-			36, 27, 14, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 60, 80,
-			39, 76, 92, 52, 54, 42, 22, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 220, 0, 224, 1, 120, 5, 232, 8, 68, 12, 191, 14,
-			192, 28, 54, 54, 36, 55, 79, 57, 35, 30, 16, 7, 120, 120, 120, 120, 120, 120, 165, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 220, 0, 164, 1, 120, 4, 152, 8,
-			88, 12, 141, 14, 64, 28, 45, 56, 44, 77, 54, 30, 24, 26, 15, 9, 120, 120, 120, 120, 120, 120, 60, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 140, 0, 84, 1,
-			222, 3, 56, 9, 188, 12, 141, 14, 192, 27, 0, 21, 28, 46, 37, 15, 7, 9, 9, 8, 120, 105, 90, 120, 120, 120, 60, 120, 75, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0,
-			6, 0, 1, 0, 248, 0, 104, 2, 196, 4, 76, 9, 28, 12, 166, 14, 96, 28, 46, 45, 26, 58, 66, 49, 36, 30, 12, 5, 167, 120,
-			165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 104, 2, 196, 4, 76, 9, 28, 12, 166, 14, 96, 28, 25, 103, 40, 88, 100, 75, 55, 45,
-			19, 8, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 248, 0, 104, 2, 176, 4, 76, 9, 28, 12, 166, 14, 96, 28, 43, 73, 33, 73,
-			84, 63, 46, 38, 16, 7, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 198, 0, 248, 1, 176, 4, 76, 9, 58, 12, 204, 14, 112, 28,
-			48, 72, 28, 76, 72, 41, 43, 25, 14, 8, 166, 142, 142, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 5, 0, 192, 0, 174, 1, 196, 4, 172, 8, 204, 11,
-			141, 14, 224, 28, 46, 40, 28, 64, 39, 27, 18, 16, 8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 134, 1, 189, 3,
-			92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 24, 58, 38, 22, 15, 12, 9, 8, 152, 120, 75, 120, 120, 120, 107, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 5, 0,
-			1, 0, 180, 0, 137, 2, 205, 5, 126, 9, 233, 12, 116, 14, 176, 27, 40, 46, 32, 60, 68, 44, 39, 31, 13, 3, 174, 157, 145, 120,
-			120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 180, 0, 137, 2, 205, 5, 126, 9, 233, 12, 116, 14, 176, 27, 66, 104, 48, 89, 101, 65, 58, 47, 20, 4,
-			174, 157, 145, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0, 102, 2, 173, 6, 120, 9, 242, 12, 86, 14, 243, 27, 94, 61, 33, 67, 76, 59,
-			50, 41, 14, 6, 180, 144, 158, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 44,
-			33, 56, 50, 60, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15,
-			32, 28, 0, 31, 30, 47, 48, 44, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 95, 0, 6, 0, 1, 0, 136, 0, 72, 1,
-			138, 8, 200, 10, 134, 13, 113, 15, 236, 26, 45, 44, 7, 65, 55, 56, 44, 27, 11, 7, 172, 133, 129, 120, 120, 120, 180, 105, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			128, 0, 72, 1, 142, 8, 210, 10, 82, 13, 98, 15, 224, 26, 50, 64, 10, 75, 75, 77, 72, 37, 16, 8, 158, 112, 135, 120, 120, 120,
-			167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 128, 0, 72, 1, 142, 8, 210, 10, 82, 13, 98, 15, 224, 26, 40, 64, 10, 75, 75, 77, 72, 37, 16, 8, 158, 112,
-			135, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 169, 0, 216, 1, 108, 7, 60, 10, 92, 13, 20, 15, 32, 27, 35, 66, 33, 76, 73, 60, 56, 36,
-			18, 4, 173, 127, 122, 120, 120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 37, 26, 51,
-			63, 35, 36, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27,
-			0, 21, 20, 38, 47, 26, 27, 21, 10, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 179, 0, 50, 2, 175, 3,
-			96, 10, 15, 12, 141, 14, 32, 27, 45, 36, 22, 46, 52, 33, 32, 15, 11, 4, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 179, 0,
-			50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 40, 116, 40, 82, 93, 59, 58, 27, 20, 8, 166, 135, 150, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 179, 0, 50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 70, 94, 36, 74, 84, 53, 52, 24, 18, 7, 166, 135, 150, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 196, 0, 24, 2, 164, 6, 116, 9, 228, 12, 36, 14, 64, 27, 30, 49, 30, 57, 68, 57, 53, 46, 8, 8,
-			167, 135, 180, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 199, 0, 112, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 35, 37, 24, 47, 48, 45,
-			44, 36, 11, 6, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 199, 0, 112, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 55, 37,
-			24, 47, 48, 45, 44, 36, 11, 6, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 208, 0, 128, 2, 238, 5, 96, 9, 52, 13, 216, 14,
-			64, 27, 0, 21, 20, 40, 48, 36, 32, 28, 7, 8, 252, 90, 165, 120, 120, 120, 252, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 170, 0, 4, 0, 1, 0, 188, 0, 0, 2,
-			84, 6, 0, 10, 132, 13, 170, 15, 32, 27, 50, 33, 26, 55, 43, 41, 38, 26, 9, 5, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			188, 0, 0, 2, 84, 6, 0, 10, 132, 13, 170, 15, 32, 27, 60, 84, 41, 87, 68, 66, 60, 42, 15, 8, 152, 126, 147, 120, 120, 120,
-			144, 148, 174, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 188, 0, 0, 2, 84, 6, 0, 10, 132, 13, 170, 15, 32, 27, 60, 75, 39, 82, 64, 62, 57, 40, 14, 8, 152, 126,
-			147, 120, 120, 120, 144, 148, 174, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 188, 0, 0, 2, 84, 6, 0, 10, 132, 13, 170, 15, 32, 27, 0, 33, 26, 55, 43, 41, 38, 26,
-			9, 5, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 100, 0, 4, 0, 1, 0, 176, 0, 112, 1, 112, 3, 136, 9, 184, 11, 60, 15, 144, 26,
-			50, 50, 12, 64, 58, 30, 27, 18, 15, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 112, 1, 112, 3, 136, 9, 184, 11,
-			60, 15, 144, 26, 50, 84, 16, 84, 76, 40, 36, 24, 20, 10, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 112, 1, 112, 3,
-			136, 9, 184, 11, 60, 15, 144, 26, 70, 67, 14, 74, 67, 35, 32, 21, 17, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0,
-			112, 1, 132, 3, 136, 9, 184, 11, 60, 15, 144, 26, 0, 34, 12, 52, 47, 25, 22, 15, 12, 6, 162, 127, 150, 120, 120, 120, 162, 127,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			0, 0, 4, 0, 33, 0, 152, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15, 160, 26, 52, 45, 18, 59, 59, 53, 47, 28, 13, 6,
-			167, 110, 120, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15, 160, 26, 75, 71, 23, 74, 74, 66,
-			58, 35, 17, 8, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15, 160, 26, 78, 52,
-			20, 64, 64, 57, 50, 30, 14, 7, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 84, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15,
-			64, 26, 0, 20, 11, 40, 41, 38, 39, 22, 9, 8, 175, 105, 105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 210, 0, 5, 0, 1, 0, 153, 0, 198, 1,
-			44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 57, 24, 58, 65, 39, 36, 20, 14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 40, 96, 31, 76, 85, 51, 46, 26, 19, 8, 165, 126, 145, 120, 120, 120,
-			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 70, 96, 31, 76, 85, 51, 46, 26, 19, 8, 165, 126,
-			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 14, 2, 162, 3, 255, 9, 218, 11, 171, 14, 124, 27, 50, 69, 33, 65, 78, 42, 41, 26,
-			17, 7, 170, 136, 137, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 192, 0, 32, 2, 192, 3, 0, 10, 224, 11, 176, 14, 159, 27, 0, 40, 25, 49,
-			59, 31, 31, 20, 12, 5, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 45, 0, 5, 0, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13,
-			238, 14, 192, 27, 45, 50, 25, 57, 68, 37, 31, 26, 10, 5, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 14, 1, 212, 2, 106, 4,
-			200, 10, 2, 13, 238, 14, 192, 27, 50, 107, 37, 84, 100, 54, 45, 38, 14, 7, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 218, 0,
-			120, 2, 169, 3, 161, 10, 109, 12, 71, 14, 60, 27, 60, 103, 28, 69, 91, 51, 41, 36, 16, 8, 166, 145, 137, 120, 120, 120, 167, 142,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 50, 65, 24, 63, 63, 44, 40, 23, 17, 8, 163, 120, 143, 120,
-			120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 0, 42, 20, 51, 51, 35, 32, 19, 14, 6,
-			163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 44,
-			6, 66, 58, 59, 60, 28, 13, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15,
-			160, 26, 70, 72, 10, 83, 73, 74, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 24, 1, 172, 8, 4, 11,
-			12, 13, 216, 14, 64, 26, 70, 45, 10, 60, 60, 63, 63, 34, 11, 8, 167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 5, 0, 240, 0, 168, 2,
-			164, 6, 136, 9, 72, 13, 60, 15, 96, 27, 65, 36, 27, 54, 45, 54, 45, 22, 12, 6, 167, 135, 180, 120, 120, 120, 242, 135, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			240, 0, 216, 2, 26, 6, 216, 9, 172, 13, 60, 15, 96, 28, 0, 32, 28, 56, 44, 44, 36, 21, 7, 8, 167, 120, 180, 120, 120, 120,
-			242, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 165, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 110, 86, 41, 79, 96, 54, 56, 43,
-			23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0, 116, 0, 24, 2, 136, 5, 16, 9, 88, 12, 16, 14, 88, 27, 55, 24, 22, 43,
-			46, 30, 28, 21, 11, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 72, 2, 120, 5, 208, 7, 224, 11, 152, 13, 88, 27,
-			0, 21, 22, 43, 37, 30, 13, 11, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5,
-			116, 9, 188, 12, 116, 14, 88, 27, 50, 50, 31, 60, 73, 41, 43, 33, 17, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0,
-			24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 90, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 0, 42, 28, 55, 67, 38, 39, 30, 16, 6, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 160, 0, 4, 0, 1, 0, 200, 0, 248, 1, 108, 7, 236, 9, 228, 12, 16, 14, 128, 28, 50, 45, 27, 61, 54, 66,
-			52, 36, 11, 8, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 248, 1, 108, 7, 240, 9, 228, 12, 16, 14, 128, 28, 50, 80,
-			36, 81, 72, 88, 70, 48, 15, 11, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 248, 1, 108, 7, 240, 9, 228, 12, 16, 14,
-			128, 28, 60, 65, 32, 73, 64, 79, 63, 44, 13, 10, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 240, 1, 128, 7, 248, 9,
-			228, 12, 16, 14, 128, 28, 0, 35, 24, 53, 47, 58, 46, 32, 10, 7, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 3, 0, 1, 0,
-			123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27, 50, 49, 30, 62, 69, 42, 44, 32, 16, 6, 166, 145, 133, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27, 90, 88, 40, 83, 92, 56, 58, 43, 22, 8, 166, 145,
-			133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27, 0, 42, 27, 57, 63, 38, 40, 30,
-			15, 5, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0, 1, 0, 200, 0, 40, 2, 12, 3, 200, 10, 188, 12, 36, 14, 32, 28,
-			50, 64, 25, 60, 60, 38, 38, 22, 15, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 40, 2, 12, 3, 200, 10, 188, 12,
-			36, 14, 32, 28, 90, 100, 32, 76, 76, 48, 48, 28, 19, 8, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 40, 2, 12, 3,
-			200, 10, 188, 12, 36, 14, 32, 28, 0, 54, 26, 55, 55, 35, 35, 20, 14, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 140, 0, 3, 0,
-			1, 0, 116, 0, 13, 2, 40, 5, 152, 8, 228, 12, 136, 14, 96, 27, 50, 49, 30, 59, 72, 40, 42, 32, 17, 6, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 116, 0, 13, 2, 40, 5, 152, 8, 228, 12, 136, 14, 96, 27, 90, 88, 41, 79, 96, 54, 56, 43, 23, 8,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 13, 2, 40, 5, 152, 8, 228, 12, 136, 14, 96, 27, 0, 40, 28, 53, 65, 36,
-			38, 29, 15, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 50, 0, 3, 0, 1, 0, 184, 0, 96, 1, 232, 3, 192, 8, 144, 11, 136, 14,
-			144, 26, 50, 42, 23, 49, 55, 43, 40, 29, 17, 7, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 96, 1, 232, 3, 192, 8,
-			144, 11, 136, 14, 144, 26, 100, 58, 27, 58, 64, 51, 47, 34, 20, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 96, 1,
-			232, 3, 152, 8, 104, 11, 136, 14, 144, 26, 0, 34, 22, 44, 49, 38, 33, 22, 16, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 100, 0,
-			3, 0, 1, 0, 216, 0, 68, 2, 0, 5, 160, 10, 248, 12, 191, 14, 64, 29, 45, 40, 26, 55, 68, 37, 42, 32, 19, 0, 150, 144,
-			120, 120, 120, 120, 150, 93, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 1, 0, 192, 0, 224, 1, 16, 4, 180, 10, 12, 13, 140, 15, 128, 28, 100, 28, 27, 45, 50, 33, 27, 20,
-			7, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 17, 0, 192, 0, 224, 1, 16, 4, 180, 10, 12, 13, 140, 15, 128, 28, 0, 23, 26, 42,
-			42, 32, 25, 19, 7, 0, 150, 120, 120, 120, 120, 120, 150, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 140, 0, 3, 0, 1, 0, 8, 1, 223, 2, 224, 6, 116, 9, 112, 13,
-			60, 15, 96, 27, 50, 31, 25, 51, 52, 46, 27, 15, 5, 4, 225, 120, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 8, 1, 223, 2, 224, 6,
-			116, 9, 112, 13, 60, 15, 96, 27, 90, 83, 41, 83, 85, 75, 44, 25, 9, 7, 225, 120, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0,
-			163, 2, 202, 6, 116, 9, 72, 13, 60, 15, 96, 27, 0, 32, 23, 48, 54, 44, 39, 19, 10, 5, 192, 120, 180, 120, 120, 120, 255, 150,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			0, 0, 4, 0, 1, 0, 244, 0, 152, 2, 16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 45, 49, 21, 52, 68, 32, 27, 27, 11, 5,
-			167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 244, 0, 152, 2, 16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 80, 109, 30, 74, 104, 50,
-			46, 46, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 136, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27, 90, 85,
-			29, 71, 92, 47, 44, 44, 14, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 244, 0, 136, 2, 36, 4, 24, 11, 168, 12, 76, 14,
-			96, 27, 0, 63, 26, 63, 76, 42, 39, 39, 13, 6, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 104, 0, 8, 1,
-			72, 8, 64, 11, 228, 12, 88, 17, 160, 27, 45, 42, 11, 57, 39, 57, 61, 22, 13, 9, 150, 135, 157, 120, 120, 120, 150, 135, 157, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			104, 0, 8, 1, 132, 8, 224, 11, 32, 13, 48, 17, 32, 27, 50, 52, 17, 61, 44, 57, 61, 22, 16, 9, 167, 120, 150, 120, 120, 120,
-			167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 104, 0, 24, 1, 112, 8, 224, 11, 32, 13, 68, 17, 32, 27, 50, 36, 15, 51, 35, 47, 51, 19, 14, 8, 167, 120,
-			150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 128, 0, 128, 1, 168, 7, 220, 10, 72, 13, 164, 16, 64, 27, 40, 52, 22, 66, 30, 57, 51, 28,
-			13, 9, 180, 137, 200, 140, 120, 120, 180, 152, 215, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 168, 0, 3, 2, 28, 7, 80, 10, 32, 13, 120, 15, 64, 28, 33, 50, 27, 68,
-			55, 42, 51, 21, 6, 9, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 168, 0, 232, 1, 164, 6, 40, 10, 52, 13, 140, 15, 64, 28,
-			0, 44, 30, 61, 48, 50, 48, 22, 6, 9, 167, 127, 120, 120, 120, 120, 167, 127, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 60, 0, 4, 0, 1, 0, 160, 0, 16, 1, 199, 8,
-			28, 12, 132, 13, 8, 17, 88, 27, 50, 37, 15, 50, 35, 39, 46, 15, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 148, 0,
-			16, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 60, 47, 17, 57, 39, 44, 52, 17, 17, 8, 187, 125, 137, 137, 150, 175, 187, 125,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 160, 0, 32, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 50, 46, 17, 57, 39, 44, 52, 17, 17, 8, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 160, 0, 32, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 0, 33, 14, 48, 33, 37, 44, 14, 14, 7,
-			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 152, 0, 72, 1, 172, 3, 76, 9, 48, 12, 92, 13, 128, 26, 45, 42,
-			26, 52, 43, 32, 29, 28, 17, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 80, 1, 36, 4, 56, 9, 168, 12, 232, 13,
-			128, 26, 50, 61, 32, 64, 54, 39, 36, 35, 21, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 136, 1, 76, 4, 36, 9,
-			148, 12, 36, 14, 128, 26, 33, 61, 32, 68, 54, 43, 39, 32, 21, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 140, 0, 200, 1,
-			236, 4, 252, 8, 128, 12, 212, 13, 32, 27, 26, 60, 24, 64, 74, 68, 55, 45, 22, 7, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			140, 0, 224, 1, 80, 5, 232, 8, 188, 12, 56, 14, 32, 27, 40, 58, 24, 64, 74, 68, 55, 45, 22, 7, 170, 135, 165, 120, 120, 120,
-			140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 116, 0, 224, 1, 200, 5, 196, 9, 228, 12, 116, 14, 88, 27, 0, 51, 32, 62, 68, 42, 44, 25, 18, 6, 167, 135,
-			135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8,
-			87, 182, 0, 250, 0, 0, 60, 0, 4, 0, 1, 0, 153, 0, 52, 1, 16, 8, 20, 10, 132, 13, 80, 15, 88, 27, 50, 39, 28, 44,
-			44, 42, 48, 12, 15, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 153, 0, 72, 1, 52, 8, 20, 10, 132, 13, 80, 15, 88, 27,
-			60, 55, 33, 52, 52, 50, 57, 14, 18, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 153, 0, 72, 1, 52, 8, 20, 10, 132, 13,
-			80, 15, 88, 27, 50, 38, 28, 44, 44, 42, 48, 12, 15, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 153, 0, 48, 1, 112, 8,
-			80, 10, 212, 13, 80, 15, 88, 27, 0, 29, 28, 36, 24, 28, 32, 12, 15, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 7, 0,
-			1, 0, 195, 0, 39, 1, 167, 8, 244, 11, 212, 13, 56, 19, 88, 27, 40, 45, 15, 60, 30, 35, 45, 15, 20, 10, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 180, 0, 24, 1, 132, 8, 224, 11, 132, 13, 152, 18, 88, 27, 20, 57, 15, 68, 36, 42, 52, 21, 15, 10,
-			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 195, 0, 39, 1, 167, 8, 211, 11, 115, 13, 36, 19, 88, 27, 55, 40, 15, 55, 30, 35,
-			40, 15, 15, 10, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 195, 0, 39, 1, 92, 8, 176, 9, 52, 13, 12, 18, 88, 27, 80, 48,
-			14, 62, 48, 33, 43, 14, 14, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 195, 0, 39, 1, 156, 4, 252, 8, 168, 12, 60, 15,
-			88, 27, 60, 58, 14, 72, 48, 28, 33, 9, 9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 195, 0, 39, 1, 172, 3, 252, 8,
-			168, 12, 60, 15, 88, 27, 45, 35, 14, 52, 33, 24, 24, 14, 9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 172, 0, 16, 1,
-			132, 3, 252, 8, 168, 12, 60, 15, 88, 27, 0, 30, 14, 48, 33, 24, 24, 14, 9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0,
-			6, 0, 1, 0, 186, 0, 108, 2, 221, 4, 250, 8, 154, 12, 103, 14, 96, 28, 40, 47, 30, 59, 70, 52, 38, 31, 13, 6, 167, 120,
-			149, 120, 120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 186, 0, 108, 2, 221, 4, 250, 8, 154, 12, 103, 14, 96, 28, 47, 97, 43, 85, 100, 75, 55, 45,
-			19, 8, 167, 120, 149, 120, 120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 104, 0, 208, 1, 136, 4, 152, 8, 188, 12, 76, 14, 96, 28, 28, 76, 32, 85,
-			68, 52, 52, 32, 19, 8, 167, 120, 142, 120, 120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 137, 0, 160, 1, 16, 4, 185, 8, 163, 12, 101, 14, 151, 27,
-			39, 69, 32, 76, 62, 36, 36, 24, 19, 8, 165, 123, 145, 120, 120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 120, 1, 212, 3, 232, 8, 128, 12,
-			136, 14, 128, 26, 60, 42, 35, 46, 43, 31, 31, 18, 15, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 120, 1, 112, 3,
-			232, 8, 128, 12, 136, 14, 128, 26, 0, 38, 32, 43, 40, 26, 29, 17, 14, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 6, 0,
-			1, 0, 24, 1, 0, 3, 176, 4, 4, 11, 172, 13, 200, 15, 64, 27, 45, 56, 30, 58, 72, 40, 34, 24, 4, 5, 187, 135, 165, 120,
-			120, 120, 187, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 24, 1, 0, 3, 176, 4, 4, 11, 172, 13, 200, 15, 64, 27, 56, 114, 43, 83, 102, 57, 49, 34, 6, 8,
-			187, 135, 165, 120, 120, 120, 187, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 246, 0, 208, 2, 140, 5, 20, 10, 252, 13, 64, 16, 88, 27, 50, 85, 38, 84, 92, 52,
-			44, 24, 18, 10, 226, 150, 128, 120, 120, 120, 235, 150, 128, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 227, 0, 80, 2, 8, 7, 20, 10, 252, 13, 108, 17, 88, 27, 44, 48,
-			28, 60, 64, 44, 36, 20, 15, 9, 208, 138, 160, 128, 134, 145, 235, 150, 156, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 204, 0, 112, 1, 52, 8, 160, 10, 16, 14, 36, 19,
-			88, 27, 75, 40, 22, 52, 44, 39, 39, 15, 13, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 56, 1, 192, 8, 124, 11,
-			16, 14, 196, 19, 88, 27, 0, 35, 20, 48, 32, 36, 32, 12, 11, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0,
-			244, 0, 152, 2, 16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 50, 55, 23, 57, 69, 41, 35, 35, 12, 5, 167, 142, 135, 120, 120, 120,
-			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 244, 0, 152, 2, 16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 80, 105, 30, 74, 100, 54, 46, 46, 15, 7, 167, 142,
-			135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 136, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27, 34, 86, 29, 71, 92, 51, 44, 44,
-			15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 244, 0, 216, 2, 116, 4, 160, 10, 148, 12, 41, 14, 96, 27, 60, 78, 30, 65,
-			94, 47, 40, 40, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 246, 0, 200, 2, 120, 5, 216, 9, 132, 13, 224, 16, 88, 27,
-			50, 64, 34, 76, 64, 48, 44, 20, 12, 10, 226, 150, 136, 120, 120, 120, 235, 150, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 128, 1, 52, 8, 44, 11, 248, 12,
-			164, 16, 88, 27, 68, 32, 20, 48, 36, 36, 36, 16, 12, 8, 187, 125, 145, 137, 150, 175, 187, 125, 145, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 204, 0, 56, 1, 192, 8,
-			124, 11, 16, 14, 172, 18, 88, 27, 0, 36, 21, 48, 32, 36, 36, 16, 8, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 5, 0,
-			1, 0, 174, 0, 128, 2, 26, 6, 96, 9, 218, 12, 91, 14, 192, 27, 40, 49, 33, 60, 68, 48, 40, 37, 13, 7, 168, 165, 165, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 174, 0, 128, 2, 26, 6, 96, 9, 218, 12, 91, 14, 192, 27, 66, 93, 46, 82, 94, 66, 55, 51, 18, 10,
-			168, 165, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 240, 0, 78, 2, 67, 7, 116, 9, 248, 12, 66, 14, 32, 28, 94, 53, 28, 61, 69, 60,
-			49, 41, 13, 6, 184, 135, 168, 120, 120, 120, 169, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 40,
-			31, 54, 47, 57, 44, 32, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15,
-			32, 28, 0, 34, 31, 49, 49, 45, 42, 33, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 0, 1, 8, 2,
-			12, 3, 100, 10, 108, 12, 60, 15, 224, 27, 41, 82, 39, 72, 72, 48, 42, 23, 13, 6, 165, 97, 107, 120, 120, 120, 165, 97, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			0, 1, 8, 2, 12, 3, 100, 10, 108, 12, 60, 15, 224, 27, 30, 131, 49, 91, 91, 60, 53, 29, 17, 7, 165, 97, 107, 120, 120, 120,
-			165, 97, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 0, 1, 8, 2, 12, 3, 100, 10, 108, 12, 60, 15, 224, 27, 35, 131, 49, 91, 91, 60, 53, 29, 17, 7, 165, 97,
-			107, 120, 120, 120, 165, 97, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 24, 2, 100, 5, 252, 8, 188, 12, 156, 14, 32, 27, 60, 58, 28, 76, 56, 60, 56, 40,
-			20, 8, 170, 135, 200, 120, 120, 120, 140, 120, 185, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 160, 0, 144, 1, 208, 7, 120, 10, 172, 13, 224, 16, 88, 27, 48, 43, 20, 60,
-			52, 40, 48, 16, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 72, 1, 52, 8, 4, 11, 192, 13, 224, 16, 88, 27,
-			45, 36, 16, 52, 48, 40, 48, 16, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 160, 0, 72, 1, 92, 8, 220, 10, 36, 14,
-			224, 16, 88, 27, 0, 29, 16, 46, 42, 37, 33, 16, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 7, 0, 1, 0, 152, 0,
-			80, 1, 132, 3, 232, 8, 168, 12, 232, 13, 128, 26, 40, 51, 25, 61, 51, 30, 23, 23, 17, 7, 162, 127, 150, 120, 120, 120, 162, 127,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 152, 0, 80, 1, 16, 4, 56, 9, 168, 12, 232, 13, 128, 26, 82, 70, 30, 72, 60, 44, 40, 39, 24, 8, 162, 127, 150, 120,
-			120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 176, 0, 240, 1, 180, 5, 172, 8, 221, 12, 78, 14, 88, 27, 49, 48, 28, 60, 52, 64, 42, 39, 17, 8,
-			166, 137, 154, 150, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 169, 0, 125, 1, 88, 7, 36, 9, 254, 12, 140, 14, 218, 27, 39, 45, 24, 48, 60, 64,
-			44, 39, 13, 8, 168, 144, 156, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 165, 0, 64, 1, 52, 8, 216, 9, 28, 13, 180, 14, 240, 27, 44, 44,
-			16, 60, 60, 51, 43, 37, 12, 8, 83, 127, 134, 120, 120, 120, 112, 120, 134, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 140, 0, 24, 1, 172, 8, 80, 10, 92, 13, 231, 14,
-			12, 28, 41, 40, 20, 48, 56, 52, 41, 34, 10, 8, 168, 105, 130, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 156, 0, 48, 1, 56, 9, 120, 10,
-			92, 13, 10, 15, 32, 28, 0, 34, 20, 52, 48, 44, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 6, 0, 1, 0,
-			184, 0, 96, 1, 112, 3, 192, 8, 144, 11, 136, 14, 144, 26, 55, 29, 19, 40, 45, 31, 28, 21, 14, 6, 162, 135, 150, 120, 120, 120,
-			162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 184, 0, 96, 1, 192, 3, 192, 8, 144, 11, 136, 14, 144, 26, 20, 59, 27, 58, 65, 51, 48, 34, 20, 8, 162, 135,
-			150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 33, 0, 179, 0, 80, 1, 232, 3, 96, 9, 48, 12, 6, 15, 177, 26, 60, 66, 29, 65, 56, 52, 54, 36,
-			22, 9, 166, 133, 148, 122, 124, 129, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 33, 0, 164, 0, 56, 1, 148, 7, 36, 9, 148, 12, 57, 16, 2, 27, 79, 49, 22, 58,
-			32, 48, 52, 26, 19, 8, 176, 129, 143, 129, 137, 151, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 148, 0, 16, 1, 152, 8, 200, 10, 188, 12, 128, 17, 88, 27,
-			84, 37, 16, 52, 36, 40, 48, 16, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 40, 1, 199, 8, 28, 12, 132, 13,
-			8, 17, 88, 27, 0, 36, 16, 52, 36, 36, 40, 16, 12, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 40, 0, 6, 0, 1, 0, 140, 0,
-			232, 1, 196, 4, 36, 9, 128, 12, 41, 14, 32, 27, 40, 51, 30, 65, 61, 55, 44, 43, 21, 7, 170, 135, 165, 120, 120, 120, 140, 120,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 140, 0, 240, 1, 196, 4, 36, 9, 128, 12, 41, 14, 32, 27, 45, 65, 34, 73, 69, 62, 50, 49, 24, 8, 170, 135, 165, 120,
-			120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 158, 0, 8, 2, 80, 5, 16, 9, 188, 12, 148, 14, 0, 28, 50, 59, 34, 72, 64, 59, 53, 42, 18, 9,
-			172, 128, 153, 127, 132, 143, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 192, 1, 84, 6, 56, 9, 208, 12, 40, 15, 51, 29, 45, 55, 27, 68, 51, 51,
-			51, 30, 10, 10, 175, 120, 137, 137, 150, 175, 175, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 153, 0, 96, 1, 148, 7, 196, 9, 92, 13, 80, 15, 88, 27, 15, 31,
-			28, 40, 40, 36, 44, 12, 9, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 153, 0, 40, 1, 228, 7, 96, 9, 112, 13, 80, 15,
-			88, 27, 0, 26, 28, 32, 28, 28, 24, 8, 9, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 188, 0, 40, 1,
-			228, 7, 136, 9, 52, 13, 8, 17, 88, 27, 40, 36, 9, 54, 51, 42, 39, 12, 12, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			188, 0, 40, 1, 188, 7, 176, 9, 12, 13, 188, 17, 88, 27, 65, 55, 11, 68, 64, 53, 49, 15, 15, 9, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 154, 0, 96, 1, 244, 6, 156, 9, 208, 12, 244, 16, 88, 27, 50, 52, 15, 66, 57, 49, 49, 22, 17, 8, 178, 137,
-			161, 129, 135, 148, 187, 125, 162, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 160, 1, 84, 6, 96, 9, 188, 12, 164, 16, 88, 27, 40, 33, 23, 48, 51, 34, 37, 25,
-			15, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 116, 0, 224, 1, 44, 6, 116, 9, 12, 13, 224, 16, 88, 27, 0, 30, 24, 48,
-			50, 34, 34, 21, 13, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 190, 0, 5, 0, 1, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12,
-			36, 14, 15, 28, 50, 34, 28, 41, 62, 28, 36, 23, 6, 5, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 0, 1, 88, 2, 36, 4,
-			80, 10, 28, 12, 36, 14, 15, 28, 50, 69, 39, 64, 82, 39, 50, 32, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 0, 1,
-			88, 2, 36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 50, 69, 39, 64, 82, 39, 50, 32, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 40, 50, 33, 55, 70, 33, 42, 27, 7, 6, 186, 151, 122, 120,
-			120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 0, 24, 23, 38, 49, 23, 30, 19, 5, 4,
-			186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 200, 0, 4, 0, 1, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14, 128, 28, 50, 36,
-			26, 44, 49, 52, 44, 30, 11, 8, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14,
-			128, 28, 80, 68, 36, 60, 68, 72, 60, 41, 15, 11, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 200, 1, 168, 7, 216, 9,
-			248, 12, 66, 14, 128, 28, 70, 56, 34, 52, 62, 66, 55, 38, 13, 10, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 200, 1,
-			168, 7, 216, 9, 248, 12, 66, 14, 128, 28, 0, 23, 25, 32, 37, 37, 32, 25, 9, 7, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 200, 0,
-			5, 0, 1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 37, 28, 41, 51, 23, 33, 18, 9, 5, 177, 100,
-			131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 72, 39, 57, 72, 32, 45, 25,
-			13, 7, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 72, 39, 57,
-			72, 32, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27,
-			50, 52, 33, 48, 61, 27, 39, 21, 11, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 136, 1, 188, 2, 160, 10, 88, 12,
-			176, 14, 159, 27, 0, 34, 31, 45, 41, 20, 33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 83, 9, 26, 0, 255, 7, 255, 250,
-			3, 1, 3, 248, 252, 4, 19, 15, 0, 254, 1, 6, 0, 251, 254, 255, 255, 4, 242, 243, 0, 1, 7, 10, 3, 1, 9, 6, 248, 255,
-			23, 0, 235, 0, 253, 229, 4, 22, 255, 0, 21, 16, 0, 0, 255, 245, 4, 6, 255, 233, 237, 5, 248, 246, 17, 29, 10, 247, 6, 11,
-			4, 241, 255, 251, 243, 13, 245, 223, 0, 34, 8, 13, 7, 246, 255, 242, 17, 12, 243, 7, 254, 230, 254, 24, 4, 244, 250, 243, 233, 254,
-			27, 7, 230, 254, 26, 22, 233, 0, 24, 0, 243, 250, 253, 243, 248, 232, 243, 4, 34, 53, 237, 242, 14, 255, 7, 252, 6, 243, 233, 1,
-			15, 229, 2, 51, 249, 250, 248, 21, 33, 246, 243, 232, 2, 16, 255, 243, 15, 29, 252, 250, 238, 27, 27, 13, 2, 239, 12, 15, 249, 253,
-			7, 1, 14, 255, 243, 2, 248, 255, 14, 0, 7, 255, 246, 245, 251, 6, 11, 252, 238, 243, 233, 252, 26, 255, 249, 0, 4, 8, 250, 255,
-			254, 252, 246, 251, 244, 244, 1, 0, 244, 6, 12, 8, 8, 249, 4, 253, 252, 2, 242, 244, 1, 4, 255, 0, 2, 4, 7, 7, 13, 2,
-			252, 251, 2, 255, 249, 0, 6, 2, 246, 7, 8, 8, 16, 252, 252, 1, 4, 3, 243, 252, 1, 0, 7, 10, 253, 5, 9, 6, 6, 3,
-			250, 0, 6, 4, 249, 255, 9, 244, 4, 4, 1, 4, 8, 8, 250, 252, 8, 5, 14, 246, 250, 4, 253, 1, 248, 254, 241, 0, 254, 0,
-			252, 244, 13, 0, 250, 15, 20, 255, 2, 18, 247, 232, 249, 9, 2, 248, 242, 237, 0, 1, 7, 19, 18, 10, 4, 254, 238, 18, 20, 237,
-			245, 245, 242, 242, 249, 250, 250, 19, 9, 249, 6, 13, 17, 3, 14, 24, 5, 7, 243, 245, 2, 0, 7, 238, 236, 243, 244, 252, 8, 4,
-			246, 12, 16, 18, 254, 11, 8, 6, 1, 241, 248, 247, 2, 247, 247, 231, 4, 11, 9, 5, 251, 14, 254, 255, 6, 248, 6, 16, 4, 245,
-			241, 11, 19, 11, 2, 239, 249, 6, 2, 245, 250, 253, 234, 7, 13, 20, 4, 13, 18, 3, 11, 250, 249, 246, 239, 240, 239, 250, 243, 249,
-			6, 5, 24, 20, 25, 253, 1, 254, 251, 2, 250, 242, 236, 250, 254, 18, 13, 2, 0, 11, 31, 0, 255, 8, 247, 249, 252, 249, 252, 0,
-			246, 253, 3, 9, 5, 11, 10, 245, 4, 11, 3, 1, 7, 249, 253, 242, 253, 254, 245, 6, 250, 251, 6, 9, 6, 9, 10, 8, 4, 254,
-			241, 247, 255, 251, 242, 245, 249, 248, 24, 6, 6, 14, 8, 12, 247, 237, 239, 11, 250, 239, 250, 251, 11, 20, 18, 5, 24, 19, 253, 249,
-			237, 241, 248, 248, 236, 237, 254, 6, 21, 23, 15, 18, 18, 3, 248, 1, 246, 247, 252, 232, 243, 1, 11, 2, 0, 252, 6, 10, 0, 2,
-			10, 1, 250, 249, 245, 5, 12, 20, 255, 0, 247, 247, 5, 10, 16, 247, 250, 12, 249, 6, 20, 6, 14, 241, 6, 1, 250, 0, 237, 250,
-			4, 253, 0, 15, 12, 21, 11, 4, 247, 248, 1, 242, 234, 231, 1, 244, 238, 7, 255, 20, 24, 8, 8, 252, 11, 241, 2, 249, 245, 253,
-			248, 255, 0, 23, 251, 6, 20, 253, 7, 247, 250, 255, 2, 9, 247, 239, 254, 249, 0, 247, 0, 1, 246, 3, 0, 0, 11, 11, 3, 254,
-			0, 245, 255, 6, 249, 238, 1, 1, 249, 19, 25, 10, 18, 7, 245, 1, 9, 4, 238, 251, 1, 238, 7, 0, 9, 2, 9, 33, 14, 236,
-			6, 8, 241, 244, 234, 241, 237, 6, 253, 238, 12, 52, 10, 3, 15, 1, 4, 239, 228, 230, 224, 13, 228, 230, 9, 34, 44, 28, 28, 25,
-			29, 10, 253, 247, 245, 242, 226, 241, 238, 244, 36, 0, 252, 22, 3, 35, 15, 2, 0, 3, 9, 246, 231, 241, 10, 246, 250, 13, 240, 246,
-			253, 14, 22, 19, 39, 11, 235, 1, 253, 230, 243, 236, 228, 219, 239, 6, 240, 0, 14, 20, 245, 5, 38, 11, 228, 2, 24, 243, 243, 250,
-			196, 243, 18, 250, 6, 243, 46, 4, 44, 250, 4, 27, 3, 13, 203, 252, 245, 247, 238, 232, 29, 255, 27, 9, 32, 16, 228, 33, 245, 241,
-			253, 255, 244, 250, 19, 241, 255, 4, 7, 22, 24, 12, 206, 234, 33, 230, 246, 250, 10, 21, 6, 27, 14, 20, 15, 239, 15, 233, 242, 7,
-			238, 254, 249, 3, 9, 21, 6, 11, 252, 6, 12, 243, 6, 221, 236, 9, 2, 0, 249, 245, 255, 25, 19, 255, 250, 20, 246, 251, 253, 233,
-			8, 2, 9, 248, 251, 30, 22, 16, 3, 254, 9, 255, 240, 235, 242, 230, 247, 17, 251, 250, 5, 3, 253, 8, 20, 3, 0, 6, 238, 236,
-			253, 2, 5, 249, 239, 254, 18, 0, 240, 241, 15, 18, 250, 1, 9, 12, 6, 246, 0, 248, 1, 4, 244, 236, 251, 253, 7, 0, 253, 0,
-			5, 30, 13, 232, 250, 18, 0, 2, 9, 249, 243, 11, 5, 252, 11, 13, 255, 0, 249, 227, 254, 19, 2, 241, 1, 24, 27, 35, 0, 249,
-			11, 4, 0, 240, 249, 247, 249, 0, 246, 5, 18, 22, 14, 5, 4, 0, 12, 2, 246, 0, 253, 251, 254, 250, 246, 249, 3, 1, 250, 252,
-			252, 7, 5, 254, 235, 240, 254, 251, 230, 241, 239, 246, 237, 246, 255, 10, 7, 255, 254, 251, 9, 0, 17, 6, 5, 13, 252, 3, 17, 13,
-			24, 13, 21, 14, 11, 12, 6, 7, 7, 3, 252, 248, 236, 247, 0, 252, 253, 252, 4, 1, 254, 255, 2, 252, 248, 241, 245, 251, 251, 7,
-			0, 0, 14, 5, 12, 15, 16, 9, 18, 8, 244, 8, 7, 254, 4, 5, 1, 0, 0, 10, 8, 251, 251, 5, 250, 243, 0, 9, 245, 245,
-			247, 235, 241, 8, 253, 242, 12, 3, 244, 246, 0, 250, 14, 7, 253, 248, 248, 243, 244, 237, 240, 247, 254, 5, 8, 253, 8, 24, 21, 252,
-			0, 1, 236, 241, 242, 241, 1, 8, 248, 12, 23, 8, 35, 15, 0, 9, 14, 250, 244, 10, 230, 218, 250, 10, 249, 3, 17, 247, 43, 13,
-			243, 29, 8, 2, 216, 0, 251, 246, 18, 250, 26, 1, 44, 29, 34, 13, 239, 252, 235, 19, 239, 15, 19, 9, 25, 4, 38, 230, 245, 36,
-			234, 214, 209, 223, 2, 255, 252, 23, 35, 9, 240, 251, 3, 0, 9, 194, 229, 226, 213, 22, 244, 0, 6, 46, 11, 15, 55, 8, 18, 252,
-			245, 219, 244, 251, 201, 250, 247, 244, 32, 26, 11, 2, 37, 6, 249, 1, 210, 233, 234, 221, 1, 8, 249, 249, 36, 253, 31, 13, 247, 26,
-			237, 235, 253, 3, 252, 240, 247, 32, 16, 24, 11, 1, 14, 9, 245, 1, 236, 223, 4, 246, 0, 14, 45, 22, 33, 27, 233, 18, 12, 219,
-			234, 223, 231, 13, 17, 223, 11, 46, 25, 2, 34, 41, 163, 34, 242, 189, 0, 253, 250, 210, 255, 48, 10, 15, 64, 250, 220, 58, 229, 229,
-			19, 240, 247, 1, 219, 220, 24, 46, 240, 2, 23, 26, 3, 238, 11, 244, 33, 14, 240, 249, 226, 217, 8, 2, 3, 23, 247, 33, 233, 250,
-			50, 9, 1, 3, 249, 226, 236, 7, 230, 235, 14, 41, 250, 7, 39, 223, 254, 27, 21, 251, 22, 211, 250, 233, 233, 18, 227, 0, 16, 254,
-			0, 31, 20, 250, 10, 34, 233, 227, 243, 5, 219, 22, 12, 202, 17, 38, 247, 13, 29, 231, 255, 19, 227, 200, 249, 55, 243, 1, 12, 7,
-			8, 17, 251, 208, 255, 29, 244, 251, 251, 2, 249, 3, 33, 240, 4, 18, 235, 219, 7, 247, 244, 41, 19, 0, 255, 34, 251, 18, 27, 245,
-			244, 14, 218, 244, 249, 6, 233, 21, 10, 238, 17, 17, 3, 243, 30, 11, 1, 246, 245, 234, 255, 246, 231, 6, 6, 253, 245, 27, 18, 9,
-			44, 13, 249, 36, 19, 228, 11, 249, 223, 245, 14, 5, 14, 11, 252, 237, 9, 14, 253, 13, 253, 244, 249, 246, 228, 250, 7, 3, 251, 236,
-			236, 242, 242, 255, 5, 246, 1, 11, 5, 0, 10, 18, 15, 253, 231, 238, 248, 11, 19, 0, 1, 12, 21, 19, 14, 20, 3, 3, 1, 235,
-			231, 243, 242, 238, 248, 239, 248, 15, 19, 2, 9, 9, 253, 254, 248, 246, 247, 3, 0, 252, 5, 7, 4, 13, 10, 13, 8, 0, 251, 248,
-			0, 254, 255, 255, 3, 18, 16, 0, 0, 11, 9, 254, 239, 246, 253, 255, 254, 247, 0, 9, 14, 6, 0, 5, 19, 25, 6, 249, 251, 250,
-			250, 255, 255, 255, 3, 253, 255, 254, 246, 249, 255, 12, 0, 251, 2, 1, 3, 7, 4, 0, 0, 12, 2, 246, 239, 246, 7, 0, 0, 11,
-			3, 246, 246, 253, 9, 11, 252, 249, 255, 248, 242, 238, 247, 240, 245, 4, 249, 242, 253, 3, 12, 23, 25, 10, 17, 24, 0, 246, 255, 1,
-			254, 254, 246, 236, 0, 9, 9, 15, 11, 6, 17, 25, 7, 245, 248, 255, 3, 243, 241, 238, 238, 1, 248, 236, 245, 6, 32, 34, 253, 252,
-			2, 14, 20, 0, 6, 0, 248, 241, 226, 223, 252, 41, 39, 251, 252, 3, 10, 8, 23, 26, 6, 0, 232, 215, 9, 26, 11, 229, 214, 4,
-			233, 241, 10, 253, 18, 26, 241, 2, 17, 2, 20, 0, 250, 217, 233, 26, 221, 213, 5, 5, 42, 8, 238, 35, 13, 21, 28, 249, 252, 29,
-			10, 242, 233, 32, 3, 237, 6, 254, 0, 232, 249, 220, 4, 38, 13, 6, 250, 27, 10, 218, 51, 52, 219, 254, 227, 133, 235, 27, 239, 244,
-			15, 232, 7, 57, 31, 1, 49, 52, 213, 229, 205, 227, 30, 239, 229, 233, 14, 23, 247, 4, 28, 36, 5, 2, 226, 209, 0, 251, 16, 33,
-			6, 8, 12, 59, 11, 22, 3, 212, 221, 240, 217, 199, 14, 238, 231, 41, 4, 34, 80, 53, 13, 35, 233, 232, 254, 223, 218, 250, 217, 248,
-			32, 226, 17, 22, 46, 34, 26, 25, 237, 240, 1, 232, 222, 21, 219, 223, 28, 4, 11, 245, 8, 46, 243, 7, 246, 1, 255, 228, 243, 243,
-			0, 17, 17, 7, 26, 248, 0, 20, 14, 245, 221, 16, 1, 219, 0, 12, 242, 252, 49, 32, 235, 232, 10, 210, 2, 226, 208, 0, 9, 5,
-			214, 31, 42, 13, 51, 22, 0, 12, 246, 226, 244, 0, 241, 253, 243, 4, 0, 32, 28, 19, 32, 26, 249, 236, 229, 2, 252, 248, 240, 230,
-			249, 242, 5, 246, 2, 5, 248, 1, 238, 236, 245, 246, 6, 19, 19, 5, 7, 17, 0, 1, 24, 14, 7, 3, 10, 232, 253, 12, 11, 251,
-			248, 9, 253, 12, 12, 0, 245, 248, 15, 8, 10, 1, 0, 0, 240, 242, 239, 248, 13, 10, 224, 228, 4, 29, 17, 4, 248, 9, 24, 15,
-			250, 242, 1, 16, 4, 235, 238, 6, 1, 252, 250, 3, 14, 17, 252, 252, 7, 5, 247, 252, 10, 246, 251, 246, 250, 8, 239, 248, 252, 5,
-			6, 27, 19, 251, 240, 0, 11, 15, 9, 237, 251, 252, 242, 250, 252, 2, 10, 10, 0, 252, 238, 3, 23, 1, 0, 255, 255, 0, 11, 255,
-			238, 1, 4, 243, 252, 3, 245, 239, 12, 12, 7, 3, 6, 21, 17, 1, 252, 249, 4, 0, 247, 236, 243, 245, 249, 1, 9, 13, 16, 13,
-			13, 14, 0, 243, 251, 253, 246, 247, 238, 243, 0, 10, 21, 21, 19, 21, 9, 0, 243, 242, 247, 229, 244, 0, 245, 254, 0, 12, 28, 21,
-			8, 6, 0, 250, 247, 242, 244, 0, 251, 246, 2, 4, 5, 17, 21, 10, 9, 2, 248, 247, 250, 251, 247, 252, 254, 251, 10, 7, 0, 6,
-			8, 7, 254, 249, 251, 252, 245, 254, 4, 251, 1, 2, 250, 4, 13, 2, 252, 254, 2, 9, 3, 253, 0, 7, 9, 0, 255, 250, 249, 248,
-			246, 253, 5, 2, 14, 17, 7, 5, 7, 8, 7, 0, 243, 240, 238, 238, 254, 0, 0, 7, 24, 22, 9, 253, 248, 254, 254, 248, 249, 249,
-			248, 247, 0, 4, 7, 18, 10, 0, 14, 3, 243, 235, 237, 249, 254, 5, 8, 2, 12, 14, 11, 16, 13, 0, 3, 253, 246, 239, 245, 10,
-			3, 1, 9, 6, 248, 255, 14, 0, 253, 255, 249, 238, 244, 241, 243, 3, 6, 8, 7, 6, 10, 9, 0, 3, 10, 254, 253, 254, 248, 251,
-			255, 255, 3, 11, 5, 249, 18, 24, 9, 1, 0, 3, 0, 254, 248, 241, 240, 237, 248, 249, 238, 249, 6, 12, 10, 9, 6, 13, 11, 1,
-			251, 253, 253, 237, 238, 245, 245, 247, 255, 13, 19, 8, 13, 23, 19, 15, 12, 254, 250, 250, 247, 243, 247, 251, 0, 0, 8, 11, 246, 246,
-			15, 19, 244, 252, 15, 248, 242, 250, 4, 249, 3, 3, 241, 0, 0, 252, 250, 253, 7, 5, 6, 4, 15, 15, 5, 0, 2, 14, 17, 3,
-			252, 254, 3, 5, 9, 10, 0, 3, 249, 247, 0, 246, 249, 251, 235, 253, 9, 3, 7, 11, 8, 8, 1, 249, 0, 12, 250, 231, 242, 6,
-			4, 240, 242, 18, 34, 23, 14, 10, 7, 3, 1, 1, 243, 252, 249, 242, 245, 235, 245, 9, 4, 247, 253, 253, 2, 3, 250, 248, 245, 248,
-			254, 249, 251, 4, 8, 2, 254, 5, 13, 12, 12, 6, 252, 0, 4, 251, 241, 238, 249, 254, 245, 235, 249, 1, 252, 253, 1, 8, 15, 17,
-			1, 250, 1, 5, 8, 248, 232, 0, 15, 253, 245, 252, 13, 26, 13, 15, 17, 8, 15, 2, 249, 246, 8, 21, 13, 22, 10, 255, 255, 9,
-			6, 9, 18, 2, 244, 241, 0, 6, 255, 17, 26, 14, 7, 0, 140, 0, 4, 0, 1, 0, 0, 1, 133, 2, 169, 6, 216, 9, 192, 13,
-			185, 15, 32, 29, 50, 47, 31, 55, 66, 49, 36, 28, 9, 7, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 0, 1, 133, 2, 169, 6,
-			216, 9, 192, 13, 185, 15, 32, 29, 50, 90, 43, 76, 91, 68, 51, 39, 13, 7, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 0, 1,
-			133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 40, 68, 37, 66, 79, 59, 45, 34, 11, 6, 217, 150, 180, 120, 120, 120, 217, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 0, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 0, 49, 31, 56, 68, 51, 38, 28, 9, 9, 217, 150, 180, 120,
-			120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 45, 49, 25, 74, 48, 46,
-			48, 28, 11, 5, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 70, 100,
-			36, 105, 69, 65, 68, 40, 16, 7, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15,
-			96, 25, 60, 80, 32, 94, 62, 58, 61, 35, 14, 6, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 104, 0, 104, 1, 72, 8, 100, 10,
-			72, 13, 40, 15, 96, 25, 0, 40, 23, 66, 43, 41, 43, 25, 10, 4, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 4, 0, 1, 0,
-			148, 0, 48, 1, 238, 7, 60, 10, 42, 13, 50, 15, 96, 25, 45, 37, 15, 54, 57, 51, 48, 33, 13, 6, 160, 111, 120, 143, 120, 120,
-			130, 111, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 148, 0, 48, 1, 238, 7, 60, 10, 42, 13, 50, 15, 96, 25, 75, 65, 20, 72, 76, 68, 64, 44, 18, 8, 160, 111,
-			120, 143, 120, 120, 130, 111, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 40, 1, 12, 8, 92, 10, 42, 13, 50, 15, 96, 25, 65, 48, 17, 61, 64, 57, 54, 37,
-			15, 7, 160, 111, 120, 143, 120, 120, 130, 111, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 148, 0, 40, 1, 32, 8, 140, 10, 42, 13, 50, 15, 96, 25, 0, 24, 12, 43,
-			46, 41, 39, 27, 11, 5, 160, 111, 120, 143, 120, 120, 130, 111, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 105, 0, 5, 0, 1, 0, 144, 0, 176, 1, 32, 3, 20, 10, 148, 12,
-			120, 15, 88, 27, 45, 42, 22, 48, 58, 37, 34, 19, 13, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 144, 0, 168, 1, 32, 3,
-			20, 10, 148, 12, 120, 15, 88, 27, 60, 80, 28, 70, 77, 46, 43, 24, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 144, 0,
-			168, 1, 32, 3, 20, 10, 148, 12, 120, 15, 88, 27, 40, 71, 26, 66, 72, 43, 40, 23, 16, 7, 165, 126, 145, 120, 120, 120, 165, 115,
-			130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 136, 0, 160, 1, 22, 3, 30, 10, 148, 12, 120, 15, 88, 27, 40, 49, 22, 55, 60, 36, 33, 19, 13, 6, 165, 126, 145, 120,
-			120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 128, 0, 152, 1, 12, 3, 40, 10, 148, 12, 120, 15, 88, 27, 0, 43, 20, 51, 56, 34, 31, 18, 12, 5,
-			165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 40, 0, 5, 0, 1, 0, 176, 0, 168, 1, 88, 7, 216, 9, 32, 13, 60, 15, 96, 25, 45, 103,
-			44, 108, 68, 68, 75, 44, 18, 8, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 177, 0, 149, 1, 254, 6, 138, 9, 240, 12, 24, 15,
-			141, 25, 44, 91, 42, 98, 65, 63, 69, 40, 18, 8, 160, 93, 125, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 180, 0, 104, 1, 44, 6, 212, 8,
-			128, 12, 196, 14, 248, 25, 71, 72, 40, 76, 60, 52, 55, 32, 19, 8, 161, 101, 138, 120, 120, 120, 130, 101, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 88, 1,
-			56, 4, 152, 8, 104, 11, 136, 14, 144, 26, 40, 45, 36, 44, 52, 36, 36, 20, 20, 8, 162, 135, 157, 120, 120, 120, 162, 120, 157, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			184, 0, 88, 1, 56, 4, 152, 8, 104, 11, 136, 14, 144, 26, 0, 35, 31, 38, 45, 31, 31, 17, 17, 7, 162, 135, 157, 120, 120, 120,
-			162, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 75, 0, 6, 0, 1, 0, 184, 0, 96, 1, 192, 3, 36, 9, 224, 11, 136, 14, 144, 26, 50, 46, 20, 55, 58, 40, 35, 26,
-			14, 7, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 96, 1, 192, 3, 36, 9, 224, 11, 136, 14, 144, 26, 50, 63, 23, 64,
-			68, 47, 40, 30, 17, 8, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 183, 0, 96, 1, 11, 4, 46, 9, 241, 11, 137, 14, 166, 26,
-			50, 53, 23, 59, 61, 45, 39, 29, 16, 8, 162, 126, 164, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 174, 0, 97, 1, 182, 5, 108, 9, 83, 12,
-			147, 14, 38, 27, 50, 36, 24, 48, 39, 45, 40, 28, 14, 7, 164, 118, 201, 120, 120, 120, 162, 120, 200, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 168, 0, 91, 1, 240, 6,
-			229, 9, 206, 12, 153, 14, 143, 27, 25, 26, 22, 42, 33, 36, 33, 22, 10, 6, 165, 106, 186, 120, 120, 120, 162, 120, 172, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 164, 0,
-			87, 1, 119, 7, 26, 10, 3, 13, 157, 14, 189, 27, 0, 23, 21, 40, 33, 32, 27, 20, 6, 6, 166, 101, 183, 120, 120, 120, 162, 120,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			100, 0, 5, 0, 1, 0, 32, 1, 32, 3, 236, 4, 160, 10, 172, 13, 180, 15, 32, 28, 50, 46, 32, 56, 66, 39, 32, 22, 9, 4,
-			162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 32, 1, 32, 3, 216, 4, 160, 10, 172, 13, 180, 15, 32, 28, 50, 91, 44, 82, 88, 54,
-			44, 30, 13, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 32, 1, 32, 3, 0, 5, 160, 10, 172, 13, 180, 15, 32, 28, 50, 87,
-			44, 82, 88, 54, 44, 30, 13, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 32, 1, 13, 3, 0, 5, 120, 10, 52, 13, 120, 15,
-			32, 28, 50, 68, 39, 69, 82, 48, 39, 27, 12, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 32, 1, 13, 3, 0, 5, 120, 10,
-			52, 13, 120, 15, 32, 28, 0, 35, 28, 50, 59, 35, 28, 19, 8, 4, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 160, 0, 4, 0, 1, 0,
-			149, 0, 24, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 44, 7, 62, 51, 47, 51, 23, 16, 8, 182, 120, 133, 133, 142, 161,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 149, 0, 24, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 60, 56, 8, 70, 58, 53, 58, 26, 18, 9, 182, 120,
-			133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 149, 0, 8, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 49, 14, 62, 47, 46, 49, 21,
-			16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 149, 0, 8, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 0, 45, 14, 59,
-			45, 44, 47, 20, 15, 7, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 125, 0, 6, 0, 1, 0, 14, 1, 8, 3, 176, 4, 200, 10, 2, 13,
-			238, 14, 192, 27, 45, 42, 24, 56, 63, 36, 30, 25, 9, 4, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 14, 1, 8, 3, 176, 4,
-			200, 10, 2, 13, 238, 14, 192, 27, 40, 92, 36, 82, 93, 53, 44, 37, 13, 6, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 14, 1,
-			8, 3, 176, 4, 200, 10, 2, 13, 238, 14, 192, 27, 35, 75, 32, 74, 84, 48, 39, 33, 12, 6, 165, 148, 135, 120, 120, 120, 167, 142,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 245, 0, 150, 2, 86, 4, 144, 10, 229, 12, 209, 14, 107, 27, 80, 62, 28, 69, 70, 43, 36, 31, 13, 6, 164, 144, 140, 120,
-			120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 186, 0, 137, 1, 132, 3, 13, 10, 159, 12, 139, 14, 164, 26, 40, 48, 21, 61, 38, 31, 28, 28, 17, 7,
-			163, 134, 154, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 112, 1, 132, 3, 236, 9, 148, 12, 136, 14, 144, 26, 0, 32, 18, 50, 30, 25,
-			23, 23, 14, 6, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 230, 0, 5, 0, 1, 0, 72, 1, 136, 3, 40, 5, 180, 10, 112, 13, 191, 14,
-			32, 28, 45, 45, 30, 64, 55, 34, 30, 19, 9, 4, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 65, 70, 130, 54, 0, 0, 0, 0,
-			50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 72, 1, 136, 3, 40, 5, 180, 10,
-			112, 13, 191, 14, 32, 28, 70, 103, 45, 97, 83, 52, 45, 28, 13, 6, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 65, 70, 130, 54,
-			0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 55, 1, 100, 3,
-			140, 5, 160, 10, 116, 13, 189, 14, 32, 28, 70, 80, 40, 88, 78, 48, 40, 26, 12, 6, 203, 144, 114, 120, 120, 120, 237, 165, 165, 44,
-			60, 70, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			156, 0, 88, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 45, 40, 27, 54, 49, 58, 45, 32, 9, 7, 167, 90, 195, 120, 120, 120,
-			122, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 156, 0, 88, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 25, 22, 44, 45, 41, 37, 30, 8, 7, 167, 90,
-			135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 200, 0, 4, 0, 1, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14, 128, 28, 50, 37, 26, 54,
-			56, 55, 44, 32, 11, 6, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14, 128, 28,
-			80, 57, 32, 66, 69, 68, 54, 40, 13, 8, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13,
-			101, 14, 128, 28, 70, 59, 33, 68, 70, 69, 55, 41, 13, 8, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 160, 0, 232, 1, 198, 7,
-			236, 9, 12, 13, 101, 14, 128, 28, 0, 27, 22, 45, 47, 47, 37, 27, 9, 5, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 60, 0, 4, 0,
-			1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 45, 35, 18, 54, 40, 32, 35, 31, 9, 10, 167, 96, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 60, 68, 25, 76, 56, 45, 48, 43, 13, 15,
-			167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 60, 55, 23, 68, 50, 40,
-			44, 39, 11, 13, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 0, 44,
-			20, 61, 45, 36, 39, 35, 10, 12, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 55, 0, 2, 0, 5, 0, 76, 0, 104, 1, 8, 7, 124, 11,
-			172, 13, 160, 15, 32, 29, 55, 17, 9, 45, 22, 18, 34, 20, 8, 0, 155, 135, 97, 120, 120, 120, 95, 105, 97, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 76, 0, 104, 1,
-			8, 7, 124, 11, 172, 13, 160, 15, 32, 29, 0, 12, 7, 38, 23, 15, 28, 16, 7, 0, 150, 135, 97, 120, 120, 120, 90, 105, 97, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 18, 0,
-			2, 0, 5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 18, 14, 3, 39, 18, 28, 36, 20, 6, 0, 120, 105,
-			150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 1, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 0, 26, 4, 52, 24, 38, 48, 27,
-			8, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 35, 0, 3, 0, 5, 0, 224, 0, 224, 2, 40, 5, 76, 9, 208, 12, 136, 14, 117, 27,
-			35, 30, 23, 47, 39, 34, 28, 23, 9, 2, 196, 162, 195, 120, 120, 120, 249, 174, 250, 44, 35, 70, 130, 50, 0, 0, 0, 0, 45, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 224, 0, 224, 2, 40, 5, 76, 9, 208, 12,
-			136, 14, 117, 27, 40, 30, 23, 47, 39, 34, 28, 23, 9, 2, 196, 162, 195, 120, 120, 120, 249, 174, 250, 44, 35, 70, 130, 50, 0, 0,
-			0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 208, 0, 208, 2, 60, 5,
-			76, 9, 208, 12, 136, 14, 105, 27, 0, 24, 22, 44, 31, 23, 21, 21, 10, 2, 192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 35, 70,
-			130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 35, 0, 3, 0,
-			5, 0, 116, 0, 32, 2, 100, 5, 252, 8, 168, 12, 116, 14, 96, 27, 35, 28, 23, 45, 56, 31, 32, 24, 12, 7, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 5, 0, 116, 0, 32, 2, 100, 5, 252, 8, 168, 12, 116, 14, 96, 27, 40, 28, 23, 45, 56, 31, 32, 24, 12, 7,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 32, 2, 100, 5, 252, 8, 168, 12, 116, 14, 96, 27, 0, 22, 20, 40, 50, 28,
-			28, 22, 11, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 35, 0, 3, 0, 5, 0, 208, 0, 120, 2, 20, 5, 252, 8, 88, 12, 196, 14,
-			210, 27, 35, 34, 27, 45, 60, 36, 33, 21, 12, 4, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 208, 0, 120, 2, 20, 5, 252, 8,
-			88, 12, 196, 14, 210, 27, 40, 34, 27, 45, 60, 36, 33, 21, 12, 4, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 208, 0, 120, 2,
-			20, 5, 252, 8, 88, 12, 156, 14, 210, 27, 0, 27, 25, 41, 52, 30, 28, 19, 11, 4, 185, 160, 141, 120, 120, 120, 235, 150, 118, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 150, 0,
-			5, 0, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 50, 51, 26, 61, 52, 32, 29, 20, 14, 7, 162, 127,
-			150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 60, 78, 32, 75, 64, 39, 36, 25,
-			18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 40, 67, 30, 71,
-			57, 37, 33, 23, 16, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 128, 0, 32, 2, 156, 4, 252, 8, 68, 12, 136, 14, 96, 27,
-			40, 34, 29, 53, 50, 34, 31, 29, 15, 5, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 128, 0, 32, 2, 156, 4, 252, 8, 68, 12,
-			136, 14, 96, 27, 0, 34, 29, 53, 50, 34, 31, 29, 15, 5, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 190, 0, 5, 0, 1, 0, 0, 1,
-			112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 50, 34, 23, 44, 44, 18, 36, 20, 5, 5, 186, 175, 135, 120, 120, 120, 105, 185,
-			148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 50, 66, 32, 61, 61, 25, 50, 28, 8, 7, 186, 175, 135, 120,
-			120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 50, 66, 32, 61, 61, 25, 50, 28, 8, 7,
-			186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 40, 47, 27, 52, 52, 21,
-			42, 24, 6, 6, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 0, 20,
-			18, 34, 34, 14, 28, 16, 4, 4, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 255, 0, 0, 3, 0, 0, 0, 0, 0, 127, 0, 114, 0, 0,
-			0, 0, 245, 0, 5, 0, 1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 45, 32, 26, 49, 47, 49, 41, 30,
-			9, 6, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 71, 38, 72,
-			72, 76, 63, 46, 14, 10, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28,
-			60, 50, 32, 60, 60, 64, 53, 38, 12, 8, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 64, 1, 252, 8, 180, 10, 152, 13,
-			10, 15, 32, 28, 60, 25, 18, 46, 43, 39, 36, 28, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 64, 1, 252, 8,
-			180, 10, 152, 13, 10, 15, 32, 28, 0, 23, 17, 45, 41, 38, 35, 27, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 175, 0, 4, 0,
-			1, 0, 156, 0, 56, 1, 252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 45, 40, 11, 59, 53, 52, 45, 28, 11, 7, 176, 106, 143, 120,
-			120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 156, 0, 56, 1, 252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 70, 83, 17, 85, 76, 75, 65, 40, 16, 10,
-			176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 156, 0, 56, 1, 252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 60, 67, 15, 76, 69, 67,
-			58, 36, 15, 9, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 48, 1, 252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 0, 30,
-			10, 51, 46, 45, 39, 24, 10, 6, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 4, 0, 1, 0, 248, 0, 200, 2, 136, 4, 220, 10,
-			52, 13, 68, 15, 176, 27, 45, 50, 30, 61, 64, 39, 36, 25, 7, 5, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 200, 2,
-			136, 4, 220, 10, 52, 13, 68, 15, 176, 27, 60, 96, 42, 85, 89, 55, 49, 35, 10, 7, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			248, 0, 192, 2, 136, 4, 220, 10, 52, 13, 68, 15, 176, 27, 80, 85, 40, 80, 84, 52, 47, 33, 9, 7, 165, 130, 155, 120, 120, 120,
-			167, 130, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 248, 0, 184, 2, 136, 4, 220, 10, 52, 13, 68, 15, 176, 27, 0, 48, 30, 60, 63, 39, 35, 25, 7, 5, 165, 130,
-			155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 100, 0, 4, 0, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 47, 3, 73,
-			43, 21, 21, 30, 12, 7, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26,
-			50, 79, 4, 96, 56, 28, 28, 40, 16, 10, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13,
-			60, 15, 144, 26, 70, 63, 3, 85, 49, 24, 24, 35, 14, 8, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 88, 1, 32, 3,
-			56, 9, 12, 13, 60, 15, 144, 26, 0, 31, 2, 60, 35, 17, 17, 25, 10, 6, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0,
-			1, 0, 176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 45, 55, 12, 64, 58, 30, 27, 24, 15, 7, 162, 127, 150, 120,
-			120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 70, 92, 16, 84, 76, 40, 36, 32, 20, 10,
-			162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 60, 75, 14, 75, 68, 36,
-			32, 28, 18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 0, 49,
-			11, 61, 55, 29, 26, 23, 14, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10,
-			188, 12, 92, 14, 87, 27, 45, 60, 24, 58, 73, 41, 37, 34, 9, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 250, 0, 176, 2,
-			40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 30, 103, 32, 76, 95, 54, 48, 44, 12, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			244, 0, 216, 2, 116, 4, 160, 10, 148, 12, 41, 14, 96, 27, 35, 85, 32, 68, 98, 49, 41, 41, 16, 8, 167, 142, 135, 120, 120, 120,
-			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 246, 0, 200, 2, 120, 5, 216, 9, 132, 13, 224, 16, 88, 27, 50, 64, 34, 76, 64, 48, 44, 20, 12, 10, 226, 150,
-			136, 120, 120, 120, 235, 150, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 5, 0, 166, 0, 80, 1, 192, 8, 229, 10, 132, 13, 94, 15, 138, 27, 70, 50, 16, 60, 60, 57, 50, 30,
-			13, 8, 181, 110, 142, 120, 120, 120, 235, 150, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 56, 1, 252, 8, 4, 11, 132, 13, 50, 15, 144, 27, 0, 40, 11, 59,
-			53, 52, 45, 28, 11, 7, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 255, 0, 5, 0, 1, 0, 24, 1, 232, 2, 4, 6, 196, 9, 112, 13,
-			40, 15, 153, 28, 45, 45, 31, 60, 60, 46, 36, 28, 10, 6, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 24, 1, 232, 2, 4, 6,
-			196, 9, 112, 13, 40, 15, 153, 28, 75, 88, 44, 84, 84, 64, 51, 39, 14, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 24, 1,
-			232, 2, 4, 6, 196, 9, 112, 13, 40, 15, 153, 28, 65, 79, 41, 79, 79, 60, 48, 37, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 156, 0, 80, 1, 192, 8, 140, 10, 152, 13, 166, 14, 32, 28, 70, 43, 32, 55, 49, 58, 45, 33, 10, 8, 167, 90, 195, 120,
-			120, 120, 122, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 156, 0, 72, 1, 232, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 30, 28, 45, 45, 41, 38, 30, 8, 8,
-			167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 45, 49,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 165, 0, 16, 2, 84, 6, 36, 9, 232, 13, 44, 16,
+			208, 26, 30, 39, 31, 61, 57, 48, 42, 34, 14, 6, 165, 113, 136, 120, 120, 120, 130, 113, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0, 153, 0, 249, 1, 225, 5, 133, 8,
+			12, 13, 90, 15, 40, 27, 40, 38, 28, 56, 60, 45, 38, 30, 11, 6, 168, 133, 154, 120, 120, 121, 130, 113, 136, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 5, 0, 147, 0, 248, 1,
+			175, 5, 248, 7, 128, 12, 236, 14, 79, 27, 40, 35, 25, 50, 56, 39, 34, 26, 10, 5, 170, 141, 162, 120, 120, 121, 171, 137, 172, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0,
+			147, 0, 248, 1, 175, 5, 248, 7, 128, 12, 236, 14, 79, 27, 0, 30, 23, 46, 52, 37, 31, 24, 9, 5, 170, 141, 162, 120, 120, 121,
+			171, 137, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250,
+			23, 8, 19, 1, 7, 0, 1, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 45, 46, 31, 58, 62, 38, 39, 24,
+			12, 5, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 229, 0, 16, 3, 40, 5, 60, 10, 52, 13, 160, 15, 238, 27, 65, 88, 43, 81,
+			86, 54, 54, 34, 18, 7, 186, 155, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 234, 2, 20, 5, 40, 10, 248, 12, 140, 15, 220, 27,
+			45, 70, 38, 71, 76, 47, 47, 29, 16, 6, 184, 154, 145, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 185, 0, 64, 2, 76, 4, 0, 10, 68, 12,
+			60, 15, 89, 27, 40, 32, 23, 45, 48, 29, 25, 16, 10, 4, 172, 140, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0, 164, 0, 8, 2, 0, 5,
+			10, 9, 48, 12, 216, 14, 64, 27, 40, 30, 21, 45, 50, 32, 28, 20, 10, 4, 171, 137, 155, 120, 120, 120, 237, 165, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 5, 0, 149, 0,
+			225, 1, 112, 5, 47, 8, 62, 12, 174, 14, 46, 27, 40, 28, 20, 43, 48, 32, 28, 22, 8, 4, 170, 135, 159, 120, 120, 120, 237, 165,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			1, 0, 142, 0, 208, 1, 160, 5, 208, 7, 68, 12, 156, 14, 38, 27, 0, 26, 22, 45, 50, 35, 30, 25, 8, 5, 170, 135, 161, 120,
+			120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182,
+			64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 45, 66, 33, 67, 77, 42,
+			51, 25, 15, 6, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 80, 101,
+			41, 84, 95, 52, 63, 31, 18, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15,
+			0, 28, 40, 83, 37, 76, 87, 48, 57, 28, 17, 7, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 204, 0, 100, 2, 216, 4, 60, 10,
+			168, 12, 10, 15, 0, 28, 0, 51, 31, 59, 68, 37, 45, 22, 13, 9, 167, 165, 150, 120, 120, 120, 167, 180, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0,
+			24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 52, 29, 59, 64, 45, 35, 22, 10, 5, 186, 152, 135, 120, 120, 120,
+			192, 155, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 80, 99, 40, 81, 89, 62, 48, 31, 14, 7, 186, 152,
+			135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 70, 89, 38, 77, 84, 59, 45, 29,
+			14, 7, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 24, 1, 8, 3, 176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 0, 47, 28, 58,
+			61, 42, 33, 22, 10, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 160, 0, 4, 0, 1, 0, 215, 0, 6, 2, 128, 7, 236, 9, 251, 12,
+			61, 14, 144, 28, 50, 45, 31, 61, 55, 60, 46, 36, 11, 8, 175, 109, 133, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 215, 0, 6, 2, 128, 7,
+			236, 9, 251, 12, 61, 14, 144, 28, 70, 80, 42, 81, 74, 80, 61, 48, 15, 11, 175, 109, 133, 120, 120, 120, 160, 105, 127, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 202, 0,
+			62, 2, 30, 7, 236, 9, 82, 13, 228, 14, 207, 28, 40, 62, 39, 70, 73, 69, 53, 39, 13, 8, 195, 127, 153, 120, 120, 120, 160, 105,
+			127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 200, 0, 69, 2, 18, 7, 236, 9, 92, 13, 247, 14, 215, 28, 0, 35, 29, 51, 54, 50, 39, 28, 9, 6, 198, 129, 156, 120,
+			120, 120, 198, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14, 96, 26, 50, 39, 29, 58, 54, 47,
+			42, 30, 14, 6, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14, 96, 26, 60, 76,
+			41, 81, 76, 65, 58, 42, 20, 8, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9, 238, 12, 216, 14,
+			96, 26, 60, 68, 39, 77, 72, 62, 55, 40, 18, 7, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 154, 0, 248, 1, 164, 6, 176, 9,
+			238, 12, 216, 14, 96, 26, 0, 34, 27, 54, 50, 44, 39, 28, 13, 5, 163, 133, 150, 120, 120, 120, 130, 128, 142, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 200, 0, 4, 0, 1, 0,
+			184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 50, 40, 27, 55, 61, 58, 43, 32, 11, 8, 185, 117, 127, 120, 120, 120,
+			185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 70, 76, 38, 76, 83, 80, 60, 44, 16, 12, 185, 117,
+			127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 80, 43, 28, 57, 62, 60, 45, 33,
+			12, 9, 185, 117, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 8, 2, 208, 7, 236, 9, 248, 12, 66, 14, 128, 28, 0, 27, 22, 45,
+			50, 48, 36, 26, 9, 7, 185, 117, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 199, 0, 54, 2, 122, 3, 81, 10, 163, 11,
+			54, 14, 159, 27, 50, 61, 22, 57, 69, 34, 33, 19, 12, 5, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 199, 0, 54, 2, 122, 3,
+			81, 10, 163, 11, 54, 14, 159, 27, 60, 115, 30, 78, 96, 47, 45, 26, 17, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 199, 0,
+			54, 2, 122, 3, 81, 10, 163, 11, 54, 14, 159, 27, 40, 104, 29, 74, 91, 45, 43, 25, 16, 6, 172, 142, 135, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 199, 0, 54, 2, 122, 3, 81, 10, 163, 11, 54, 14, 159, 27, 0, 52, 20, 52, 64, 32, 30, 17, 11, 4, 172, 142, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 45, 44, 27, 54, 58, 34,
+			31, 24, 12, 4, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15, 214, 27, 80, 96,
+			40, 81, 86, 51, 46, 36, 18, 7, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10, 227, 12, 20, 15,
+			214, 27, 50, 85, 38, 76, 81, 48, 44, 34, 17, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 216, 0, 160, 2, 156, 4, 35, 10,
+			227, 12, 20, 15, 214, 27, 0, 42, 27, 54, 57, 34, 31, 24, 12, 4, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0,
+			135, 0, 151, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 45, 43, 21, 58, 55, 49, 40, 32, 10, 11, 178, 126, 132, 123, 123, 141,
+			187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 135, 0, 151, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 80, 65, 26, 72, 68, 61, 49, 39, 12, 13, 178, 126,
+			132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 135, 0, 151, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 70, 56, 24, 67, 63, 56, 45, 36,
+			12, 12, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 135, 0, 136, 1, 220, 5, 112, 8, 188, 12, 136, 14, 153, 24, 0, 38, 20, 55,
+			52, 46, 37, 30, 9, 10, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 240, 0, 7, 0, 1, 0, 24, 1, 240, 2, 166, 4, 80, 10, 192, 13,
+			150, 15, 32, 28, 45, 57, 30, 66, 66, 46, 36, 23, 11, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 240, 2, 166, 4,
+			80, 10, 192, 13, 150, 15, 32, 28, 70, 109, 41, 91, 91, 63, 49, 32, 15, 8, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 24, 1,
+			228, 2, 175, 4, 58, 10, 204, 13, 162, 15, 32, 28, 50, 94, 40, 84, 85, 57, 48, 31, 14, 7, 186, 152, 135, 120, 120, 120, 192, 155,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			5, 0, 24, 1, 199, 2, 196, 4, 4, 10, 232, 13, 192, 15, 32, 28, 30, 77, 38, 76, 78, 46, 47, 29, 13, 7, 186, 152, 135, 120,
+			120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 5, 0, 24, 1, 184, 2, 20, 5, 176, 9, 244, 11, 120, 15, 32, 28, 25, 31, 28, 51, 40, 30, 33, 20, 9, 5,
+			186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 24, 1, 176, 2, 40, 5, 176, 9, 204, 11, 236, 14, 32, 28, 20, 30, 28, 52, 24, 7,
+			14, 14, 9, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 24, 1, 176, 2, 40, 5, 176, 9, 204, 11, 236, 14, 32, 28, 0, 33,
+			28, 52, 40, 31, 33, 14, 9, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 29, 1, 6, 0, 1, 0, 200, 0, 208, 1, 188, 7, 216, 9,
+			248, 12, 66, 14, 128, 28, 45, 44, 25, 57, 56, 61, 46, 34, 10, 8, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 208, 1,
+			188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 70, 77, 34, 75, 75, 81, 61, 46, 14, 10, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			199, 0, 227, 1, 131, 7, 210, 9, 248, 12, 73, 14, 106, 28, 90, 66, 32, 71, 72, 74, 57, 42, 13, 8, 184, 111, 127, 120, 120, 120,
+			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 186, 0, 152, 2, 220, 5, 196, 9, 168, 12, 56, 14, 160, 27, 40, 50, 34, 66, 63, 36, 41, 30, 15, 0, 180, 150,
+			125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 40, 39, 30, 56, 38, 35, 30, 7,
+			12, 5, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 204, 0, 128, 2, 116, 4, 156, 9, 240, 10, 152, 18, 0, 28, 0, 39, 30, 56,
+			38, 35, 30, 7, 12, 5, 170, 165, 137, 120, 120, 120, 170, 180, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 45, 0, 4, 0, 1, 0, 152, 0, 72, 1, 76, 9, 124, 11, 172, 13,
+			120, 15, 160, 26, 45, 41, 17, 60, 53, 49, 49, 26, 12, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 72, 1, 76, 9,
+			124, 11, 172, 13, 120, 15, 160, 26, 100, 69, 22, 78, 70, 64, 64, 34, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0,
+			24, 1, 136, 9, 164, 11, 16, 14, 120, 15, 160, 26, 40, 67, 21, 74, 66, 57, 61, 32, 15, 7, 167, 97, 120, 120, 120, 120, 167, 97,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 152, 0, 24, 1, 136, 9, 164, 11, 16, 14, 120, 15, 160, 26, 0, 38, 16, 56, 50, 43, 46, 24, 11, 5, 167, 97, 120, 120,
+			120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 50, 59, 24, 59, 64, 35,
+			34, 20, 12, 5, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0, 40, 2, 112, 3, 100, 10, 164, 11, 96, 14, 159, 27, 60, 124,
+			36, 85, 93, 52, 50, 29, 18, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 40, 2, 132, 3, 100, 10, 164, 11, 96, 14,
+			159, 27, 40, 97, 32, 77, 83, 46, 45, 26, 16, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 40, 2, 56, 4, 0, 10,
+			104, 11, 36, 14, 159, 27, 0, 34, 21, 51, 55, 31, 30, 17, 11, 4, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0,
+			135, 0, 136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 45, 42, 22, 57, 51, 48, 39, 31, 10, 11, 178, 126, 132, 123, 123, 141,
+			187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 135, 0, 136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 80, 73, 30, 76, 68, 64, 52, 41, 13, 14, 178, 126,
+			132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 135, 0, 136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 70, 59, 27, 68, 61, 57, 46, 37,
+			12, 13, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 135, 0, 136, 1, 164, 6, 192, 8, 188, 12, 128, 14, 153, 24, 0, 37, 21, 53,
+			48, 45, 36, 29, 9, 10, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 235, 0, 5, 0, 1, 0, 24, 1, 186, 2, 40, 5, 180, 9, 98, 13,
+			20, 15, 71, 28, 45, 42, 28, 56, 57, 42, 34, 27, 9, 6, 210, 133, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 186, 2, 40, 5,
+			180, 9, 98, 13, 20, 15, 71, 28, 60, 81, 39, 79, 80, 58, 48, 37, 13, 8, 210, 133, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 10, 1,
+			145, 2, 70, 5, 166, 9, 86, 13, 2, 15, 254, 27, 80, 64, 33, 70, 69, 51, 43, 34, 11, 8, 205, 129, 141, 120, 120, 120, 237, 165,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 132, 0, 24, 1, 84, 6, 36, 9, 228, 12, 96, 14, 100, 25, 50, 43, 19, 61, 41, 35, 38, 35, 9, 12, 165, 90, 135, 120,
+			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 64, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 27, 15, 48, 33, 28, 30, 28, 7, 10,
+			165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 220, 0, 5, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 45,
+			14, 61, 43, 32, 35, 26, 14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14,
+			244, 26, 90, 77, 19, 79, 57, 41, 46, 34, 19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10,
+			148, 12, 176, 14, 244, 26, 50, 62, 17, 71, 51, 37, 41, 30, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 153, 0, 156, 1,
+			248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 30, 51, 15, 65, 46, 34, 38, 28, 15, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 0, 30, 11, 50, 35, 26, 29, 21, 11, 5, 165, 126, 145, 120, 120, 120,
+			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 0, 0, 6, 0, 1, 0, 51, 1, 124, 3, 60, 5, 124, 10, 93, 13, 187, 14, 253, 27, 45, 59, 32, 70, 62, 38, 33, 22,
+			10, 5, 205, 152, 124, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 51, 1, 124, 3, 60, 5, 124, 10, 93, 13, 187, 14, 253, 27, 50, 117, 45, 99,
+			87, 54, 47, 31, 15, 7, 205, 152, 124, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 9, 1, 254, 2, 28, 6, 68, 10, 45, 13, 119, 14, 49, 28,
+			50, 93, 43, 90, 79, 62, 51, 33, 14, 8, 187, 133, 125, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 64, 2, 108, 7, 240, 9, 228, 12,
+			16, 14, 128, 28, 50, 57, 37, 72, 64, 71, 54, 34, 13, 10, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 224, 0, 40, 2, 8, 7,
+			176, 9, 112, 13, 241, 14, 64, 27, 40, 42, 28, 60, 56, 56, 49, 43, 8, 8, 255, 90, 180, 120, 120, 120, 187, 105, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 224, 0,
+			40, 2, 8, 7, 176, 9, 112, 13, 241, 14, 64, 27, 0, 34, 25, 54, 50, 50, 44, 39, 7, 7, 255, 90, 180, 120, 120, 120, 187, 105,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			245, 0, 6, 0, 1, 0, 24, 1, 248, 2, 176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 60, 34, 66, 63, 43, 37, 24, 11, 6,
+			186, 152, 152, 120, 120, 120, 192, 155, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 248, 2, 176, 4, 120, 10, 152, 13, 60, 15, 32, 28, 60, 116, 48, 92, 88, 60,
+			52, 34, 16, 8, 186, 152, 152, 120, 120, 120, 192, 155, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 12, 1, 224, 2, 100, 5, 134, 10, 158, 13, 64, 15, 41, 28, 40, 94,
+			45, 93, 72, 60, 49, 33, 15, 8, 186, 148, 160, 120, 120, 120, 192, 155, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 214, 0, 28, 2, 28, 7, 177, 10, 185, 13, 82, 15,
+			84, 28, 40, 65, 36, 72, 61, 57, 48, 35, 14, 9, 185, 127, 169, 120, 120, 120, 192, 155, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 160, 0, 88, 1, 212, 8, 220, 10,
+			212, 13, 100, 15, 128, 28, 60, 41, 16, 61, 42, 44, 39, 30, 11, 8, 185, 107, 177, 120, 120, 120, 185, 107, 177, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 204, 0, 96, 1,
+			232, 8, 220, 10, 16, 14, 196, 19, 88, 27, 0, 33, 20, 48, 32, 36, 32, 12, 11, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 45, 0,
+			6, 0, 1, 0, 208, 0, 112, 2, 212, 3, 60, 10, 188, 12, 92, 14, 87, 27, 45, 57, 26, 56, 67, 40, 36, 33, 9, 5, 167, 147,
+			147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 208, 0, 112, 2, 212, 3, 60, 10, 188, 12, 92, 14, 87, 27, 75, 104, 36, 76, 90, 54, 48, 44,
+			12, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 16, 2, 180, 5, 192, 8, 32, 13, 199, 14, 92, 26, 69, 77, 41, 83,
+			68, 57, 53, 42, 15, 8, 163, 119, 156, 137, 120, 120, 167, 142, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 152, 0, 88, 1, 238, 7, 100, 10, 132, 13, 50, 15, 96, 25,
+			30, 59, 27, 78, 48, 48, 52, 30, 13, 6, 160, 92, 147, 155, 120, 120, 130, 95, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 80, 1, 30, 8, 240, 10, 229, 13,
+			181, 15, 20, 26, 30, 78, 34, 87, 56, 53, 54, 37, 16, 8, 162, 95, 159, 149, 120, 120, 130, 95, 147, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 79, 8,
+			124, 11, 71, 14, 56, 16, 200, 26, 0, 38, 27, 58, 40, 35, 32, 27, 12, 7, 165, 99, 171, 142, 120, 120, 130, 99, 147, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 240, 0, 5, 0,
+			1, 0, 200, 0, 208, 1, 188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 45, 44, 25, 57, 57, 61, 46, 35, 10, 8, 185, 107, 127, 120,
+			120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 200, 0, 208, 1, 188, 7, 216, 9, 248, 12, 66, 14, 128, 28, 70, 77, 34, 75, 75, 81, 61, 46, 14, 10,
+			185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 199, 0, 227, 1, 131, 7, 210, 9, 248, 12, 73, 14, 106, 28, 75, 67, 33, 72, 72, 74,
+			57, 43, 14, 9, 184, 111, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 62,
+			37, 71, 79, 48, 44, 32, 16, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14,
+			160, 27, 0, 38, 29, 56, 62, 38, 35, 25, 13, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 210, 0, 5, 0, 1, 0, 148, 0, 128, 1,
+			238, 7, 60, 10, 42, 13, 50, 15, 96, 25, 45, 39, 23, 65, 47, 43, 41, 26, 10, 5, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			148, 0, 128, 1, 238, 7, 60, 10, 42, 13, 50, 15, 96, 25, 60, 71, 32, 88, 64, 58, 55, 35, 14, 6, 160, 92, 120, 143, 120, 120,
+			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 148, 0, 128, 1, 228, 7, 216, 9, 248, 12, 0, 15, 96, 25, 60, 62, 27, 83, 60, 55, 52, 33, 13, 6, 160, 92,
+			120, 155, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 120, 0, 250, 1, 144, 6, 188, 7, 164, 11, 16, 14, 13, 27, 45, 27, 24, 49, 46, 29, 30, 22,
+			11, 6, 166, 144, 133, 123, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 120, 0, 250, 1, 180, 5, 28, 7, 144, 11, 252, 13, 44, 27, 0, 26, 24, 49,
+			46, 29, 30, 22, 11, 6, 166, 144, 133, 123, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 75, 0, 5, 0, 1, 0, 135, 0, 88, 1, 224, 6, 192, 8, 188, 12,
+			128, 14, 153, 24, 45, 51, 22, 63, 57, 50, 41, 32, 10, 11, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 135, 0, 88, 1, 204, 6,
+			192, 8, 188, 12, 128, 14, 153, 24, 70, 74, 26, 76, 68, 61, 49, 39, 12, 13, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 150, 0,
+			162, 1, 48, 6, 246, 8, 164, 12, 131, 14, 85, 25, 70, 70, 30, 74, 72, 56, 45, 37, 13, 9, 178, 128, 130, 122, 122, 134, 187, 126,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 186, 0, 80, 2, 196, 4, 116, 9, 108, 12, 141, 14, 13, 27, 30, 64, 37, 70, 79, 47, 38, 32, 16, 0, 180, 135, 125, 120,
+			120, 120, 200, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 186, 0, 80, 2, 196, 4, 96, 9, 108, 12, 141, 14, 13, 27, 0, 49, 32, 61, 69, 41, 33, 28, 14, 0,
+			180, 135, 125, 120, 120, 120, 200, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 4, 0, 1, 0, 196, 0, 104, 2, 252, 3, 0, 10, 28, 12, 116, 14, 119, 26, 53, 61,
+			35, 71, 73, 28, 34, 20, 9, 8, 162, 105, 132, 120, 120, 120, 162, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 7, 0, 208, 0, 48, 2, 132, 3, 220, 10, 204, 11, 141, 14,
+			0, 26, 24, 60, 38, 81, 60, 33, 35, 16, 11, 8, 162, 105, 87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 208, 0, 229, 1, 123, 3, 220, 10,
+			204, 11, 141, 14, 0, 26, 51, 41, 30, 65, 48, 27, 28, 13, 9, 6, 162, 105, 87, 120, 120, 120, 162, 75, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 194, 1,
+			24, 3, 164, 11, 68, 12, 241, 14, 0, 26, 0, 25, 28, 46, 28, 24, 20, 16, 11, 8, 162, 135, 87, 120, 120, 120, 162, 75, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 135, 0,
+			3, 0, 1, 0, 176, 0, 72, 2, 160, 5, 156, 9, 188, 12, 116, 14, 88, 27, 45, 50, 33, 60, 73, 41, 39, 33, 17, 6, 167, 135,
+			135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 72, 2, 160, 5, 156, 9, 188, 12, 116, 14, 88, 27, 90, 78, 41, 75, 91, 51, 49, 41,
+			21, 8, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 88, 2, 160, 5, 156, 9, 188, 12, 116, 14, 88, 27, 0, 33, 27, 50,
+			60, 34, 32, 27, 14, 5, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 185, 0, 4, 0, 1, 0, 240, 0, 224, 2, 4, 6, 196, 9, 92, 13,
+			80, 15, 153, 28, 45, 37, 29, 51, 56, 41, 29, 26, 9, 5, 197, 176, 161, 135, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 224, 2, 4, 6,
+			196, 9, 92, 13, 80, 15, 153, 28, 80, 59, 37, 64, 71, 53, 37, 33, 11, 6, 197, 176, 161, 135, 120, 120, 220, 176, 161, 44, 45, 70,
+			130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0,
+			232, 2, 4, 6, 196, 9, 92, 13, 80, 15, 153, 28, 60, 55, 35, 64, 64, 50, 35, 31, 11, 6, 197, 179, 161, 135, 120, 120, 220, 179,
+			161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 240, 0, 240, 2, 4, 6, 196, 9, 92, 13, 80, 15, 153, 28, 0, 33, 27, 50, 50, 39, 27, 24, 8, 5, 197, 179, 161, 135,
+			120, 120, 220, 179, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 50, 34, 26, 48, 51, 47,
+			36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 60, 68,
+			37, 68, 73, 67, 51, 38, 12, 7, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15,
+			224, 28, 60, 68, 37, 68, 73, 67, 51, 38, 12, 7, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10,
+			104, 13, 15, 15, 224, 28, 0, 34, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 160, 0, 4, 0, 1, 0,
+			229, 0, 183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27, 50, 43, 28, 56, 58, 35, 35, 23, 12, 5, 190, 159, 148, 120, 120, 120,
+			237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 229, 0, 183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27, 60, 86, 40, 80, 82, 50, 50, 32, 17, 7, 190, 159,
+			148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 229, 0, 183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27, 50, 76, 38, 75, 78, 47, 47, 30,
+			16, 6, 190, 159, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 229, 0, 183, 2, 36, 5, 196, 9, 228, 12, 216, 14, 197, 27, 0, 38, 27, 53,
+			55, 33, 33, 21, 11, 4, 190, 159, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12,
+			141, 14, 128, 26, 45, 40, 24, 52, 57, 37, 31, 24, 17, 4, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 192, 1, 232, 3,
+			216, 9, 88, 12, 141, 14, 128, 26, 70, 95, 38, 79, 88, 57, 47, 37, 27, 7, 162, 127, 157, 120, 120, 120, 162, 127, 157, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0,
+			192, 1, 232, 3, 216, 9, 88, 12, 141, 14, 128, 26, 60, 76, 34, 71, 79, 51, 42, 33, 24, 6, 162, 127, 157, 120, 120, 120, 162, 127,
+			157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 184, 0, 192, 1, 232, 3, 216, 9, 88, 12, 141, 14, 128, 26, 0, 36, 23, 49, 54, 35, 29, 23, 17, 4, 162, 127, 157, 120,
+			120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 225, 0, 5, 0, 1, 0, 224, 0, 136, 2, 84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 45, 34, 20, 41, 60, 29,
+			29, 29, 9, 4, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 224, 0, 136, 2, 84, 4, 24, 11, 228, 12, 136, 14, 96, 27, 60, 114,
+			38, 76, 110, 53, 53, 53, 16, 8, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 136, 2, 84, 4, 24, 11, 228, 12, 136, 14,
+			96, 27, 60, 102, 36, 72, 104, 50, 50, 50, 15, 7, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 224, 0, 128, 2, 84, 4, 24, 11,
+			228, 12, 136, 14, 96, 27, 60, 61, 28, 56, 81, 39, 39, 39, 12, 6, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 224, 0, 120, 2,
+			116, 4, 24, 11, 228, 12, 136, 14, 96, 27, 0, 26, 18, 37, 54, 26, 26, 26, 8, 4, 167, 167, 135, 120, 120, 120, 167, 167, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0,
+			5, 0, 1, 0, 140, 0, 32, 2, 160, 5, 36, 9, 248, 12, 41, 14, 32, 27, 45, 47, 30, 64, 56, 56, 40, 40, 15, 8, 167, 135,
+			180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 32, 2, 160, 5, 16, 9, 148, 12, 41, 14, 32, 27, 48, 82, 37, 79, 86, 79, 64, 53,
+			26, 9, 170, 135, 157, 120, 120, 120, 140, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 172, 0, 32, 2, 160, 5, 16, 9, 168, 12, 41, 14, 160, 27, 50, 67, 34, 67,
+			86, 71, 57, 51, 16, 8, 170, 120, 120, 120, 120, 120, 170, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 204, 0, 32, 2, 148, 5, 16, 9, 168, 12, 41, 14, 160, 27,
+			60, 52, 34, 68, 67, 54, 45, 35, 15, 8, 170, 120, 135, 120, 120, 120, 140, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 204, 0, 33, 2, 140, 5, 16, 9, 168, 12,
+			141, 14, 160, 27, 0, 39, 31, 52, 64, 56, 38, 30, 11, 8, 170, 135, 150, 120, 120, 120, 140, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 4, 0, 1, 0, 180, 0,
+			64, 1, 76, 4, 212, 8, 28, 12, 226, 14, 144, 26, 50, 40, 13, 59, 45, 30, 33, 29, 14, 7, 170, 130, 126, 120, 120, 120, 162, 120,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 180, 0, 64, 1, 76, 4, 212, 8, 28, 12, 226, 14, 144, 26, 85, 59, 16, 72, 55, 37, 41, 36, 18, 9, 170, 130, 126, 120,
+			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 180, 0, 64, 1, 76, 4, 212, 8, 28, 12, 226, 14, 144, 26, 56, 43, 13, 61, 47, 32, 35, 30, 15, 7,
+			170, 130, 126, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 180, 0, 64, 1, 252, 3, 152, 8, 28, 12, 226, 14, 144, 26, 0, 36, 12, 57, 37, 23,
+			25, 23, 11, 7, 170, 130, 148, 120, 120, 120, 162, 120, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 236, 0, 136, 3, 140, 5, 116, 9, 88, 12, 116, 14,
+			224, 27, 50, 55, 32, 56, 75, 41, 43, 27, 10, 8, 250, 120, 210, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			45, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 236, 0, 136, 3, 140, 5, 136, 9,
+			88, 12, 116, 14, 224, 27, 75, 103, 34, 81, 98, 53, 57, 36, 12, 6, 225, 120, 210, 120, 120, 120, 255, 120, 165, 44, 60, 70, 130, 57,
+			0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 220, 0, 80, 3,
+			80, 5, 36, 9, 128, 12, 41, 14, 224, 27, 40, 64, 28, 59, 81, 41, 52, 32, 12, 7, 167, 120, 210, 120, 120, 120, 255, 120, 165, 44,
+			60, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			0, 1, 173, 2, 87, 4, 16, 9, 48, 12, 41, 14, 128, 27, 35, 60, 28, 49, 77, 34, 51, 36, 15, 6, 237, 207, 192, 120, 120, 120,
+			141, 120, 147, 44, 55, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 0, 1, 76, 2, 10, 4, 16, 9, 28, 12, 41, 14, 112, 27, 35, 70, 35, 63, 75, 31, 48, 33, 17, 8, 221, 148,
+			186, 120, 120, 120, 141, 120, 147, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 0, 1, 24, 2, 172, 3, 252, 8, 28, 12, 41, 14, 112, 27, 0, 23, 20, 36, 37, 17, 25, 19,
+			9, 4, 221, 148, 186, 120, 120, 120, 141, 120, 147, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 248, 0, 56, 2, 84, 6, 36, 9, 28, 12, 166, 14, 96, 28,
+			49, 28, 22, 43, 55, 38, 28, 23, 9, 4, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 56, 2, 84, 6, 36, 9, 28, 12,
+			166, 14, 96, 28, 41, 87, 39, 77, 98, 67, 50, 41, 17, 7, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 248, 0, 8, 2, 84, 6,
+			212, 8, 28, 12, 166, 14, 96, 28, 31, 82, 37, 72, 92, 63, 47, 38, 16, 7, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 8, 1,
+			232, 1, 44, 6, 152, 8, 204, 11, 166, 14, 96, 28, 90, 50, 23, 66, 66, 38, 30, 25, 14, 8, 165, 120, 135, 120, 120, 120, 150, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 190, 0, 120, 1, 231, 4, 195, 8, 205, 12, 116, 14, 160, 28, 0, 33, 30, 54, 32, 25, 21, 18, 7, 7, 120, 103, 105, 120,
+			120, 120, 120, 100, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 196, 0, 7, 0, 5, 0, 72, 1, 136, 3, 62, 5, 140, 10, 112, 13, 191, 14, 32, 28, 51, 43, 28, 63, 56, 33,
+			28, 18, 8, 4, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 72, 1, 136, 3, 62, 5, 140, 10, 112, 13, 191, 14, 32, 28, 45, 104,
+			44, 98, 87, 51, 44, 28, 13, 6, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 72, 1, 136, 3, 62, 5, 140, 10, 112, 13, 191, 14,
+			32, 28, 14, 92, 41, 92, 82, 48, 41, 26, 12, 6, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0,
+			45, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 33, 0, 6, 1, 95, 3, 155, 5, 186, 9,
+			22, 13, 91, 14, 176, 27, 23, 65, 36, 77, 72, 48, 45, 36, 10, 7, 187, 142, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 33, 0, 196, 0, 32, 3,
+			249, 5, 232, 8, 188, 12, 247, 13, 64, 27, 33, 41, 29, 58, 60, 50, 50, 50, 9, 8, 167, 135, 180, 120, 120, 120, 167, 105, 135, 44,
+			45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0,
+			212, 0, 244, 1, 133, 7, 136, 9, 228, 12, 91, 14, 64, 27, 30, 38, 38, 56, 53, 53, 40, 39, 16, 9, 167, 90, 180, 120, 120, 120,
+			137, 75, 150, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250,
+			0, 0, 1, 0, 212, 0, 184, 1, 177, 7, 196, 9, 52, 13, 91, 14, 192, 27, 0, 34, 40, 51, 44, 44, 32, 28, 11, 10, 167, 90,
+			105, 120, 120, 120, 122, 75, 90, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200,
+			53, 182, 64, 250, 23, 8, 230, 0, 5, 0, 1, 0, 0, 1, 24, 2, 108, 7, 236, 9, 104, 13, 15, 15, 224, 28, 45, 29, 25, 47,
+			53, 44, 37, 27, 9, 6, 216, 138, 159, 120, 120, 120, 107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 24, 2, 108, 7, 236, 9, 104, 13, 15, 15, 224, 28,
+			90, 67, 38, 70, 80, 66, 56, 41, 13, 9, 216, 138, 159, 120, 120, 120, 107, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 232, 1, 188, 7, 40, 10, 163, 13,
+			57, 15, 148, 28, 55, 55, 37, 67, 69, 62, 51, 39, 12, 9, 197, 114, 149, 120, 120, 120, 107, 131, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 144, 0, 125, 1, 52, 8,
+			148, 10, 188, 13, 76, 15, 32, 28, 40, 30, 27, 50, 48, 46, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 144, 0,
+			125, 1, 52, 8, 148, 10, 188, 13, 76, 15, 32, 28, 0, 27, 26, 47, 45, 44, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			0, 0, 5, 0, 1, 0, 240, 0, 168, 2, 28, 7, 176, 9, 112, 13, 10, 15, 96, 27, 44, 48, 34, 65, 59, 56, 38, 23, 6, 8,
+			165, 135, 240, 120, 120, 120, 195, 105, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 176, 2, 28, 7, 136, 9, 112, 13, 60, 15, 96, 27, 77, 68, 36, 76, 79, 74,
+			40, 24, 8, 6, 170, 120, 180, 120, 120, 120, 200, 120, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 163, 2, 244, 6, 116, 9, 72, 13, 60, 15, 96, 27, 77, 54,
+			29, 62, 71, 62, 56, 25, 13, 6, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0, 43, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 240, 0, 223, 2, 114, 6, 216, 9, 172, 13, 60, 15,
+			96, 28, 35, 36, 27, 56, 50, 49, 42, 26, 10, 7, 167, 120, 180, 120, 120, 120, 242, 150, 150, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 240, 0, 223, 2, 26, 6, 236, 9,
+			172, 13, 60, 15, 96, 28, 0, 28, 25, 53, 43, 40, 35, 21, 7, 8, 167, 105, 180, 120, 120, 120, 242, 135, 150, 44, 45, 70, 130, 57,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 193, 0, 6, 0, 1, 0,
+			104, 0, 160, 1, 9, 8, 80, 10, 72, 13, 60, 15, 160, 27, 42, 46, 10, 66, 56, 58, 42, 33, 10, 8, 150, 165, 150, 120, 120, 120,
+			150, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 104, 0, 160, 1, 20, 8, 160, 10, 72, 13, 60, 15, 32, 27, 40, 63, 20, 72, 72, 77, 67, 37, 15, 8, 167, 120,
+			150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 179, 1, 232, 7, 80, 10, 52, 13, 60, 15, 64, 27, 51, 45, 20, 70, 53, 50, 46, 25,
+			9, 8, 180, 90, 150, 120, 120, 120, 180, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 198, 0, 48, 2, 8, 7, 136, 9, 46, 13, 249, 14, 212, 25, 30, 40, 24, 62,
+			57, 51, 41, 26, 11, 8, 157, 117, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 201, 0, 94, 2, 44, 6, 72, 9, 183, 12, 226, 14, 170, 25,
+			30, 17, 18, 36, 40, 36, 29, 17, 5, 6, 148, 154, 138, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 210, 0, 141, 2, 150, 5, 24, 9, 128, 12,
+			15, 15, 77, 25, 0, 19, 23, 36, 44, 37, 29, 17, 3, 8, 139, 168, 138, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 180, 0, 4, 0, 1, 0, 168, 0,
+			232, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 45, 56, 28, 58, 64, 39, 36, 18, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 168, 0, 232, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 70, 115, 40, 83, 92, 56, 51, 26, 19, 8, 165, 135, 150, 120,
+			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 168, 0, 232, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 65, 93, 36, 74, 83, 50, 46, 23, 17, 7,
+			165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 232, 1, 152, 3, 216, 9, 164, 11, 141, 14, 32, 27, 0, 35, 25, 45, 52, 29,
+			27, 15, 11, 4, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 24, 1, 168, 3, 205, 5, 60, 10, 92, 13, 216, 14,
+			32, 27, 36, 52, 28, 64, 61, 46, 40, 35, 8, 4, 200, 135, 210, 120, 120, 120, 255, 150, 135, 44, 60, 70, 130, 55, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 168, 3, 205, 5, 60, 10,
+			92, 13, 216, 14, 32, 27, 29, 112, 41, 94, 90, 67, 58, 52, 12, 6, 200, 135, 210, 120, 120, 120, 255, 150, 135, 44, 60, 70, 130, 55,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 5, 0, 8, 1, 168, 3,
+			62, 5, 216, 9, 188, 12, 166, 14, 32, 27, 39, 128, 38, 94, 103, 79, 65, 53, 16, 8, 185, 180, 165, 120, 120, 120, 245, 135, 120, 44,
+			60, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0,
+			2, 1, 128, 3, 34, 5, 184, 9, 164, 12, 173, 14, 60, 27, 42, 108, 37, 86, 98, 72, 60, 48, 15, 8, 185, 175, 159, 120, 120, 120,
+			245, 135, 120, 44, 50, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 232, 0, 185, 2, 116, 4, 56, 9, 68, 12, 203, 14, 176, 27, 84, 52, 33, 55, 80, 46, 39, 31, 11, 8, 185, 157,
+			135, 120, 120, 120, 194, 105, 111, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 193, 2, 196, 4, 252, 8, 128, 12, 241, 14, 32, 28, 0, 26, 28, 42, 56, 36, 32, 26,
+			8, 8, 185, 180, 120, 120, 120, 120, 155, 120, 105, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 139, 0, 3, 0, 1, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26,
+			50, 32, 10, 59, 42, 49, 50, 25, 11, 5, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13,
+			9, 15, 112, 26, 90, 73, 15, 88, 64, 74, 75, 37, 17, 8, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 158, 0, 56, 1, 165, 8,
+			215, 10, 49, 13, 9, 15, 112, 26, 0, 33, 10, 60, 43, 50, 51, 25, 11, 5, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 235, 0, 5, 0,
+			1, 0, 192, 0, 176, 1, 188, 7, 60, 10, 102, 13, 191, 14, 128, 28, 45, 27, 21, 44, 45, 44, 34, 28, 8, 6, 185, 107, 135, 120,
+			120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 192, 0, 176, 1, 188, 7, 60, 10, 102, 13, 191, 14, 128, 28, 70, 80, 35, 76, 77, 75, 59, 47, 15, 11,
+			185, 107, 135, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 188, 0, 164, 1, 212, 7, 72, 10, 99, 13, 196, 14, 96, 28, 70, 69, 32, 71, 72, 69,
+			55, 44, 14, 10, 184, 107, 134, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 17, 1, 207, 8, 213, 10, 57, 13, 7, 15, 236, 26, 50, 38,
+			13, 54, 50, 49, 46, 28, 11, 7, 174, 105, 118, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 118, 0, 224, 0, 35, 9, 4, 11, 42, 13, 30, 15,
+			112, 26, 0, 23, 7, 45, 40, 39, 39, 21, 10, 6, 171, 105, 112, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 116, 0, 13, 2,
+			161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 34, 35, 26, 50, 60, 34, 36, 27, 14, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 60, 80, 39, 76, 92, 52, 54, 42, 22, 8, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 220, 0, 224, 1, 120, 5, 232, 8, 68, 12, 191, 14, 192, 28, 54, 54, 36, 55, 79, 57, 35, 30, 16, 7, 120, 120,
+			120, 120, 120, 120, 165, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 220, 0, 164, 1, 120, 4, 152, 8, 88, 12, 141, 14, 64, 28, 45, 56, 44, 77, 54, 30, 24, 26,
+			15, 9, 120, 120, 120, 120, 120, 120, 60, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 140, 0, 84, 1, 222, 3, 56, 9, 188, 12, 141, 14, 192, 27, 0, 21, 28, 46,
+			37, 15, 7, 9, 9, 8, 120, 105, 90, 120, 120, 120, 60, 120, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 248, 0, 104, 2, 196, 4, 76, 9, 28, 12,
+			166, 14, 96, 28, 46, 45, 26, 58, 66, 49, 36, 30, 12, 5, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 104, 2, 196, 4,
+			76, 9, 28, 12, 166, 14, 96, 28, 25, 103, 40, 88, 100, 75, 55, 45, 19, 8, 167, 120, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 248, 0,
+			104, 2, 176, 4, 76, 9, 28, 12, 166, 14, 96, 28, 43, 73, 33, 73, 84, 63, 46, 38, 16, 7, 167, 120, 165, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 198, 0, 248, 1, 176, 4, 76, 9, 58, 12, 204, 14, 112, 28, 48, 72, 28, 76, 72, 41, 43, 25, 14, 8, 166, 142, 142, 120,
+			120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 5, 0, 192, 0, 174, 1, 196, 4, 172, 8, 204, 11, 141, 14, 224, 28, 46, 40, 28, 64, 39, 27, 18, 16, 8, 8,
+			162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 134, 1, 189, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 24, 58, 38, 22,
+			15, 12, 9, 8, 152, 120, 75, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 180, 0, 137, 2, 205, 5, 126, 9, 233, 12, 116, 14,
+			176, 27, 40, 46, 32, 60, 68, 44, 39, 31, 13, 3, 174, 157, 145, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 180, 0, 137, 2, 205, 5, 126, 9,
+			233, 12, 116, 14, 176, 27, 66, 104, 48, 89, 101, 65, 58, 47, 20, 4, 174, 157, 145, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 102, 2,
+			173, 6, 120, 9, 242, 12, 86, 14, 243, 27, 94, 61, 33, 67, 76, 59, 50, 41, 14, 6, 180, 144, 158, 120, 120, 120, 200, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 44, 33, 56, 50, 60, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120,
+			122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 30, 47, 48, 44, 40, 32, 9, 8, 167, 90,
+			135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 95, 0, 6, 0, 1, 0, 136, 0, 72, 1, 138, 8, 200, 10, 134, 13, 113, 15, 236, 26, 45, 44, 7, 65,
+			55, 56, 44, 27, 11, 7, 172, 133, 129, 120, 120, 120, 180, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 128, 0, 72, 1, 142, 8, 210, 10, 82, 13, 98, 15, 224, 26,
+			50, 64, 10, 75, 75, 77, 72, 37, 16, 8, 158, 112, 135, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 72, 1, 142, 8, 210, 10, 82, 13,
+			98, 15, 224, 26, 40, 64, 10, 75, 75, 77, 72, 37, 16, 8, 158, 112, 135, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 169, 0, 216, 1, 108, 7,
+			60, 10, 92, 13, 20, 15, 32, 27, 35, 66, 33, 76, 73, 60, 56, 36, 18, 4, 173, 127, 122, 120, 120, 120, 167, 97, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 116, 0,
+			13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 37, 26, 51, 63, 35, 36, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 21, 20, 38, 47, 26, 27, 21, 10, 6, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0,
+			0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 179, 0, 50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 45, 36, 22, 46, 52, 33,
+			32, 15, 11, 4, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 179, 0, 50, 2, 175, 3, 96, 10, 15, 12, 141, 14, 32, 27, 40, 116,
+			40, 82, 93, 59, 58, 27, 20, 8, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 179, 0, 50, 2, 175, 3, 96, 10, 15, 12, 141, 14,
+			32, 27, 70, 94, 36, 74, 84, 53, 52, 24, 18, 7, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 196, 0, 24, 2, 164, 6, 116, 9,
+			228, 12, 36, 14, 64, 27, 30, 49, 30, 57, 68, 57, 53, 46, 8, 8, 167, 135, 180, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 199, 0, 112, 1,
+			123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 35, 37, 24, 47, 48, 45, 44, 36, 11, 6, 156, 128, 153, 120, 120, 120, 167, 105, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0,
+			199, 0, 112, 1, 123, 7, 201, 10, 228, 12, 107, 14, 64, 27, 55, 37, 24, 47, 48, 45, 44, 36, 11, 6, 156, 128, 153, 120, 120, 120,
+			167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250,
+			0, 0, 1, 0, 208, 0, 128, 2, 238, 5, 96, 9, 52, 13, 216, 14, 64, 27, 0, 21, 20, 40, 48, 36, 32, 28, 7, 8, 252, 90,
+			165, 120, 120, 120, 252, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200,
+			53, 182, 64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 188, 0, 0, 2, 84, 6, 0, 10, 132, 13, 170, 15, 32, 27, 50, 33, 26, 55,
+			43, 41, 38, 26, 9, 5, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 188, 0, 0, 2, 84, 6, 0, 10, 132, 13, 170, 15, 32, 27,
+			60, 84, 41, 87, 68, 66, 60, 42, 15, 8, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 188, 0, 0, 2, 84, 6, 0, 10, 132, 13,
+			170, 15, 32, 27, 60, 75, 39, 82, 64, 62, 57, 40, 14, 8, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 188, 0, 0, 2, 84, 6,
+			0, 10, 132, 13, 170, 15, 32, 27, 0, 33, 26, 55, 43, 41, 38, 26, 9, 5, 152, 126, 147, 120, 120, 120, 144, 148, 174, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 100, 0, 4, 0,
+			1, 0, 176, 0, 112, 1, 112, 3, 136, 9, 184, 11, 60, 15, 144, 26, 50, 50, 12, 64, 58, 30, 27, 18, 15, 7, 162, 127, 150, 120,
+			120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 176, 0, 112, 1, 112, 3, 136, 9, 184, 11, 60, 15, 144, 26, 50, 84, 16, 84, 76, 40, 36, 24, 20, 10,
+			162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 112, 1, 112, 3, 136, 9, 184, 11, 60, 15, 144, 26, 70, 67, 14, 74, 67, 35,
+			32, 21, 17, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 112, 1, 132, 3, 136, 9, 184, 11, 60, 15, 144, 26, 0, 34,
+			12, 52, 47, 25, 22, 15, 12, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 4, 0, 33, 0, 152, 0, 48, 1, 136, 9, 204, 11,
+			232, 13, 220, 15, 160, 26, 52, 45, 18, 59, 59, 53, 47, 28, 13, 6, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 48, 1,
+			136, 9, 204, 11, 232, 13, 220, 15, 160, 26, 75, 71, 23, 74, 74, 66, 58, 35, 17, 8, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			152, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15, 160, 26, 78, 52, 20, 64, 64, 57, 50, 30, 14, 7, 167, 110, 120, 120, 120, 120,
+			167, 110, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 84, 0, 48, 1, 136, 9, 204, 11, 232, 13, 220, 15, 64, 26, 0, 20, 11, 40, 41, 38, 39, 22, 9, 8, 175, 105,
+			105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 210, 0, 5, 0, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 57, 24, 58,
+			65, 39, 36, 20, 14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26,
+			40, 96, 31, 76, 85, 51, 46, 26, 19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11,
+			151, 14, 244, 26, 70, 96, 31, 76, 85, 51, 46, 26, 19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 14, 2, 162, 3,
+			255, 9, 218, 11, 171, 14, 124, 27, 50, 69, 33, 65, 78, 42, 41, 26, 17, 7, 170, 136, 137, 120, 120, 120, 165, 115, 130, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 192, 0,
+			32, 2, 192, 3, 0, 10, 224, 11, 176, 14, 159, 27, 0, 40, 25, 49, 59, 31, 31, 20, 12, 5, 172, 138, 135, 120, 120, 120, 167, 138,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			45, 0, 5, 0, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 45, 50, 25, 57, 68, 37, 31, 26, 10, 5,
+			165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 50, 107, 37, 84, 100, 54,
+			45, 38, 14, 7, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 218, 0, 120, 2, 169, 3, 161, 10, 109, 12, 71, 14, 60, 27, 60, 103,
+			28, 69, 91, 51, 41, 36, 16, 8, 166, 145, 137, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14,
+			216, 26, 50, 65, 24, 63, 63, 44, 40, 23, 17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 144, 0, 216, 1, 12, 3, 196, 9,
+			254, 11, 157, 14, 216, 26, 0, 42, 20, 51, 51, 35, 32, 19, 14, 6, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 250, 0, 5, 0, 33, 0,
+			152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 44, 6, 66, 58, 59, 60, 28, 13, 6, 175, 105, 120, 120, 120, 120,
+			175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 70, 72, 10, 83, 73, 74, 75, 36, 17, 8, 167, 105,
+			120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 24, 1, 172, 8, 4, 11, 12, 13, 216, 14, 64, 26, 70, 45, 10, 60, 60, 63, 63, 34,
+			11, 8, 167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0, 240, 0, 168, 2, 164, 6, 136, 9, 72, 13, 60, 15, 96, 27, 65, 36, 27, 54,
+			45, 54, 45, 22, 12, 6, 167, 135, 180, 120, 120, 120, 242, 135, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 240, 0, 216, 2, 26, 6, 216, 9, 172, 13, 60, 15, 96, 28,
+			0, 32, 28, 56, 44, 44, 36, 21, 7, 8, 167, 120, 180, 120, 120, 120, 242, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 165, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5,
+			116, 9, 188, 12, 116, 14, 88, 27, 110, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 7, 0, 116, 0,
+			24, 2, 136, 5, 16, 9, 88, 12, 16, 14, 88, 27, 55, 24, 22, 43, 46, 30, 28, 21, 11, 4, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 116, 0, 72, 2, 120, 5, 208, 7, 224, 11, 152, 13, 88, 27, 0, 21, 22, 43, 37, 30, 13, 11, 6, 4, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 0, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 50, 50, 31, 60, 73, 41,
+			43, 33, 17, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 90, 86,
+			41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14,
+			88, 27, 0, 42, 28, 55, 67, 38, 39, 30, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 160, 0, 4, 0, 1, 0, 200, 0, 248, 1,
+			108, 7, 236, 9, 228, 12, 16, 14, 128, 28, 50, 45, 27, 61, 54, 66, 52, 36, 11, 8, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			200, 0, 248, 1, 108, 7, 240, 9, 228, 12, 16, 14, 128, 28, 50, 80, 36, 81, 72, 88, 70, 48, 15, 11, 160, 105, 127, 120, 120, 120,
+			160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 200, 0, 248, 1, 108, 7, 240, 9, 228, 12, 16, 14, 128, 28, 60, 65, 32, 73, 64, 79, 63, 44, 13, 10, 160, 105,
+			127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 240, 1, 128, 7, 248, 9, 228, 12, 16, 14, 128, 28, 0, 35, 24, 53, 47, 58, 46, 32,
+			10, 7, 160, 105, 127, 120, 120, 120, 160, 105, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 3, 0, 1, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27,
+			50, 49, 30, 62, 69, 42, 44, 32, 16, 6, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12,
+			136, 14, 38, 27, 90, 88, 40, 83, 92, 56, 58, 43, 22, 8, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 123, 0, 15, 2, 181, 5,
+			176, 9, 198, 12, 136, 14, 38, 27, 0, 42, 27, 57, 63, 38, 40, 30, 15, 5, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 3, 0,
+			1, 0, 200, 0, 40, 2, 12, 3, 200, 10, 188, 12, 36, 14, 32, 28, 50, 64, 25, 60, 60, 38, 38, 22, 15, 6, 182, 150, 120, 120,
+			120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 200, 0, 40, 2, 12, 3, 200, 10, 188, 12, 36, 14, 32, 28, 90, 100, 32, 76, 76, 48, 48, 28, 19, 8,
+			182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 40, 2, 12, 3, 200, 10, 188, 12, 36, 14, 32, 28, 0, 54, 26, 55, 55, 35,
+			35, 20, 14, 6, 182, 150, 120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 116, 0, 13, 2, 40, 5, 152, 8, 228, 12, 136, 14,
+			96, 27, 50, 49, 30, 59, 72, 40, 42, 32, 17, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 13, 2, 40, 5, 152, 8,
+			228, 12, 136, 14, 96, 27, 70, 87, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 13, 2,
+			40, 5, 152, 8, 228, 12, 136, 14, 96, 27, 30, 49, 30, 59, 72, 40, 42, 32, 17, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			116, 0, 13, 2, 40, 5, 152, 8, 228, 12, 136, 14, 96, 27, 0, 40, 27, 53, 65, 36, 38, 29, 15, 5, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 50, 0, 3, 0, 1, 0, 184, 0, 96, 1, 232, 3, 192, 8, 144, 11, 136, 14, 144, 26, 50, 42, 23, 49, 55, 43, 40, 29,
+			17, 7, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 96, 1, 232, 3, 192, 8, 144, 11, 136, 14, 144, 26, 100, 58, 27, 58,
+			64, 51, 47, 34, 20, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 96, 1, 232, 3, 152, 8, 104, 11, 136, 14, 144, 26,
+			0, 34, 22, 44, 49, 38, 33, 22, 16, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 100, 0, 3, 0, 1, 0, 216, 0, 68, 2, 0, 5,
+			160, 10, 248, 12, 191, 14, 64, 29, 45, 40, 26, 55, 68, 37, 42, 32, 19, 0, 150, 144, 120, 120, 120, 120, 150, 93, 105, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 192, 0,
+			224, 1, 16, 4, 180, 10, 12, 13, 140, 15, 128, 28, 100, 28, 27, 45, 50, 33, 27, 20, 7, 0, 150, 120, 120, 120, 120, 120, 150, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			17, 0, 192, 0, 224, 1, 16, 4, 180, 10, 12, 13, 140, 15, 128, 28, 0, 23, 26, 42, 42, 32, 25, 19, 7, 0, 150, 120, 120, 120,
+			120, 120, 150, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 140, 0, 3, 0, 1, 0, 8, 1, 223, 2, 224, 6, 116, 9, 112, 13, 60, 15, 96, 27, 50, 31, 25, 51, 52, 46,
+			27, 15, 5, 4, 225, 120, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 8, 1, 223, 2, 224, 6, 116, 9, 112, 13, 60, 15, 96, 27, 90, 83,
+			41, 83, 85, 75, 44, 25, 9, 7, 225, 120, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 163, 2, 202, 6, 116, 9, 72, 13, 60, 15,
+			96, 27, 0, 32, 23, 48, 54, 44, 39, 19, 10, 5, 192, 120, 180, 120, 120, 120, 255, 150, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 4, 0, 1, 0, 244, 0, 152, 2,
+			16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 45, 49, 21, 52, 68, 32, 27, 27, 11, 5, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			244, 0, 152, 2, 16, 4, 240, 10, 148, 12, 41, 14, 96, 27, 80, 109, 30, 74, 104, 50, 46, 46, 15, 7, 167, 142, 135, 120, 120, 120,
+			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 244, 0, 136, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27, 90, 85, 29, 71, 92, 47, 44, 44, 14, 7, 167, 142,
+			135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 244, 0, 136, 2, 36, 4, 24, 11, 168, 12, 76, 14, 96, 27, 0, 63, 26, 63, 76, 42, 39, 39,
+			13, 6, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 104, 0, 8, 1, 72, 8, 64, 11, 228, 12, 88, 17, 160, 27,
+			45, 42, 11, 57, 39, 57, 61, 22, 13, 9, 150, 135, 157, 120, 120, 120, 150, 135, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 104, 0, 8, 1, 132, 8, 224, 11, 32, 13,
+			48, 17, 32, 27, 50, 52, 17, 61, 44, 57, 61, 22, 16, 9, 167, 120, 150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 104, 0, 24, 1, 112, 8,
+			224, 11, 32, 13, 68, 17, 32, 27, 50, 36, 15, 51, 35, 47, 51, 19, 14, 8, 167, 120, 150, 120, 120, 120, 167, 120, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 128, 0,
+			128, 1, 168, 7, 220, 10, 72, 13, 164, 16, 64, 27, 40, 52, 22, 66, 30, 57, 51, 28, 13, 9, 180, 137, 200, 140, 120, 120, 180, 152,
+			215, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 168, 0, 3, 2, 28, 7, 80, 10, 32, 13, 120, 15, 64, 28, 33, 50, 27, 68, 55, 42, 51, 21, 6, 9, 167, 150, 120, 120,
+			120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 168, 0, 232, 1, 164, 6, 40, 10, 52, 13, 140, 15, 64, 28, 0, 44, 30, 61, 48, 50, 48, 22, 6, 9,
+			167, 127, 120, 120, 120, 120, 167, 127, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 60, 0, 4, 0, 1, 0, 160, 0, 16, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 50, 37,
+			15, 50, 35, 39, 46, 15, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 148, 0, 16, 1, 199, 8, 28, 12, 132, 13, 8, 17,
+			88, 27, 60, 47, 17, 57, 39, 44, 52, 17, 17, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 32, 1, 199, 8, 28, 12,
+			132, 13, 8, 17, 88, 27, 50, 46, 17, 57, 39, 44, 52, 17, 17, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 160, 0, 32, 1,
+			199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 0, 33, 14, 48, 33, 37, 44, 14, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0,
+			6, 0, 1, 0, 152, 0, 72, 1, 172, 3, 76, 9, 48, 12, 92, 13, 128, 26, 45, 42, 26, 52, 43, 32, 29, 28, 17, 6, 162, 127,
+			150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 80, 1, 36, 4, 56, 9, 168, 12, 232, 13, 128, 26, 50, 61, 32, 64, 54, 39, 36, 35,
+			21, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 136, 1, 76, 4, 36, 9, 148, 12, 36, 14, 128, 26, 33, 61, 32, 68,
+			54, 43, 39, 32, 21, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 140, 0, 200, 1, 236, 4, 252, 8, 128, 12, 212, 13, 32, 27,
+			26, 60, 24, 64, 74, 68, 55, 45, 22, 7, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 140, 0, 224, 1, 80, 5, 232, 8, 188, 12,
+			56, 14, 32, 27, 40, 58, 24, 64, 74, 68, 55, 45, 22, 7, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 116, 0, 224, 1, 200, 5,
+			196, 9, 228, 12, 116, 14, 88, 27, 0, 51, 32, 62, 68, 42, 44, 25, 18, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 60, 0, 4, 0,
+			1, 0, 153, 0, 52, 1, 16, 8, 20, 10, 132, 13, 80, 15, 88, 27, 50, 39, 28, 44, 44, 42, 48, 12, 15, 8, 187, 125, 137, 137,
+			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 153, 0, 72, 1, 52, 8, 20, 10, 132, 13, 80, 15, 88, 27, 60, 55, 33, 52, 52, 50, 57, 14, 18, 9,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 153, 0, 72, 1, 52, 8, 20, 10, 132, 13, 80, 15, 88, 27, 50, 38, 28, 44, 44, 42,
+			48, 12, 15, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 153, 0, 48, 1, 112, 8, 80, 10, 212, 13, 80, 15, 88, 27, 0, 29,
+			28, 36, 24, 28, 32, 12, 15, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 7, 0, 1, 0, 195, 0, 39, 1, 167, 8, 244, 11,
+			212, 13, 56, 19, 88, 27, 40, 45, 15, 60, 30, 35, 45, 15, 20, 10, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 180, 0, 24, 1,
+			132, 8, 224, 11, 132, 13, 152, 18, 88, 27, 20, 57, 15, 68, 36, 42, 52, 21, 15, 10, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			195, 0, 39, 1, 167, 8, 211, 11, 115, 13, 36, 19, 88, 27, 55, 40, 15, 55, 30, 35, 40, 15, 15, 10, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 195, 0, 39, 1, 92, 8, 176, 9, 52, 13, 12, 18, 88, 27, 80, 48, 14, 62, 48, 33, 43, 14, 14, 9, 187, 125,
+			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 195, 0, 39, 1, 156, 4, 252, 8, 168, 12, 60, 15, 88, 27, 60, 58, 14, 72, 48, 28, 33, 9,
+			9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 195, 0, 39, 1, 172, 3, 252, 8, 168, 12, 60, 15, 88, 27, 45, 35, 14, 52,
+			33, 24, 24, 14, 9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 16, 1, 132, 3, 252, 8, 168, 12, 60, 15, 88, 27,
+			0, 30, 14, 48, 33, 24, 24, 14, 9, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 186, 0, 108, 2, 221, 4,
+			250, 8, 154, 12, 103, 14, 96, 28, 40, 47, 30, 59, 70, 52, 38, 31, 13, 6, 167, 120, 149, 120, 120, 120, 197, 120, 142, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 186, 0,
+			108, 2, 221, 4, 250, 8, 154, 12, 103, 14, 96, 28, 47, 97, 43, 85, 100, 75, 55, 45, 19, 8, 167, 120, 149, 120, 120, 120, 197, 120,
+			142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 104, 0, 208, 1, 136, 4, 152, 8, 188, 12, 76, 14, 96, 28, 28, 76, 32, 85, 68, 52, 52, 32, 19, 8, 167, 120, 142, 120,
+			120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 137, 0, 160, 1, 16, 4, 185, 8, 163, 12, 101, 14, 151, 27, 39, 69, 32, 76, 62, 36, 36, 24, 19, 8,
+			165, 123, 145, 120, 120, 120, 197, 120, 142, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 120, 1, 212, 3, 232, 8, 128, 12, 136, 14, 128, 26, 60, 42, 35, 46, 43, 31,
+			31, 18, 15, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 184, 0, 120, 1, 112, 3, 232, 8, 128, 12, 136, 14, 128, 26, 0, 38,
+			32, 43, 40, 26, 29, 17, 14, 6, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 24, 1, 0, 3, 176, 4, 4, 11,
+			172, 13, 200, 15, 64, 27, 45, 56, 30, 58, 72, 40, 34, 24, 4, 5, 187, 135, 165, 120, 120, 120, 187, 135, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 0, 3,
+			176, 4, 4, 11, 172, 13, 200, 15, 64, 27, 56, 114, 43, 83, 102, 57, 49, 34, 6, 8, 187, 135, 165, 120, 120, 120, 187, 135, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			246, 0, 208, 2, 140, 5, 20, 10, 252, 13, 64, 16, 88, 27, 50, 85, 38, 84, 92, 52, 44, 24, 18, 10, 226, 150, 128, 120, 120, 120,
+			235, 150, 128, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 227, 0, 80, 2, 8, 7, 20, 10, 252, 13, 108, 17, 88, 27, 44, 48, 28, 60, 64, 44, 36, 20, 15, 9, 208, 138,
+			160, 128, 134, 145, 235, 150, 156, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 204, 0, 112, 1, 52, 8, 160, 10, 16, 14, 36, 19, 88, 27, 75, 40, 22, 52, 44, 39, 39, 15,
+			13, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 204, 0, 56, 1, 192, 8, 124, 11, 16, 14, 196, 19, 88, 27, 0, 35, 20, 48,
+			32, 36, 32, 12, 11, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 244, 0, 152, 2, 16, 4, 240, 10, 148, 12,
+			41, 14, 96, 27, 50, 55, 23, 57, 69, 41, 35, 35, 12, 5, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 244, 0, 152, 2, 16, 4,
+			240, 10, 148, 12, 41, 14, 96, 27, 80, 105, 30, 74, 100, 54, 46, 46, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0,
+			136, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27, 34, 86, 29, 71, 92, 51, 44, 44, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 244, 0, 216, 2, 116, 4, 160, 10, 148, 12, 41, 14, 96, 27, 60, 78, 30, 65, 94, 47, 40, 40, 15, 7, 167, 142, 135, 120,
+			120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 246, 0, 200, 2, 120, 5, 216, 9, 132, 13, 224, 16, 88, 27, 50, 64, 34, 76, 64, 48, 44, 20, 12, 10,
+			226, 150, 136, 120, 120, 120, 235, 150, 136, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 204, 0, 128, 1, 52, 8, 44, 11, 248, 12, 164, 16, 88, 27, 68, 32, 20, 48, 36, 36,
+			36, 16, 12, 8, 187, 125, 145, 137, 150, 175, 187, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 204, 0, 56, 1, 192, 8, 124, 11, 16, 14, 172, 18, 88, 27, 0, 36,
+			21, 48, 32, 36, 36, 16, 8, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 174, 0, 128, 2, 26, 6, 96, 9,
+			218, 12, 91, 14, 192, 27, 40, 49, 33, 60, 68, 48, 40, 37, 13, 7, 168, 165, 165, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 174, 0, 128, 2,
+			26, 6, 96, 9, 218, 12, 91, 14, 192, 27, 66, 93, 46, 82, 94, 66, 55, 51, 18, 10, 168, 165, 165, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			240, 0, 78, 2, 67, 7, 116, 9, 248, 12, 66, 14, 32, 28, 94, 53, 28, 61, 69, 60, 49, 41, 13, 6, 184, 135, 168, 120, 120, 120,
+			169, 138, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 40, 31, 54, 47, 57, 44, 32, 10, 8, 167, 90,
+			195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 34, 31, 49, 49, 45, 42, 33,
+			9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 7, 0, 1, 0, 0, 1, 8, 2, 12, 3, 100, 10, 108, 12, 60, 15, 224, 27,
+			41, 82, 39, 72, 72, 48, 42, 23, 13, 6, 165, 97, 107, 120, 120, 120, 165, 97, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 8, 2, 12, 3, 100, 10, 108, 12,
+			60, 15, 224, 27, 30, 131, 49, 91, 91, 60, 53, 29, 17, 7, 165, 97, 107, 120, 120, 120, 165, 97, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 8, 2, 12, 3,
+			100, 10, 108, 12, 60, 15, 224, 27, 35, 131, 49, 91, 91, 60, 53, 29, 17, 7, 165, 97, 107, 120, 120, 120, 165, 97, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 144, 0,
+			24, 2, 100, 5, 252, 8, 188, 12, 156, 14, 32, 27, 60, 58, 28, 76, 56, 60, 56, 40, 20, 8, 170, 135, 200, 120, 120, 120, 140, 120,
+			185, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 160, 0, 144, 1, 208, 7, 120, 10, 172, 13, 224, 16, 88, 27, 48, 43, 20, 60, 52, 40, 48, 16, 16, 8, 187, 125, 137, 137,
+			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 5, 0, 160, 0, 72, 1, 52, 8, 4, 11, 192, 13, 224, 16, 88, 27, 45, 36, 16, 52, 48, 40, 48, 16, 16, 8,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 72, 1, 92, 8, 220, 10, 36, 14, 224, 16, 88, 27, 0, 29, 16, 46, 42, 37,
+			33, 16, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 7, 0, 1, 0, 152, 0, 80, 1, 132, 3, 232, 8, 168, 12, 232, 13,
+			128, 26, 40, 51, 25, 61, 51, 30, 23, 23, 17, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 80, 1, 16, 4, 56, 9,
+			168, 12, 232, 13, 128, 26, 82, 70, 30, 72, 60, 44, 40, 39, 24, 8, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 240, 1,
+			180, 5, 172, 8, 221, 12, 78, 14, 88, 27, 49, 48, 28, 60, 52, 64, 42, 39, 17, 8, 166, 137, 154, 150, 120, 120, 162, 127, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			169, 0, 125, 1, 88, 7, 36, 9, 254, 12, 140, 14, 218, 27, 39, 45, 24, 48, 60, 64, 44, 39, 13, 8, 168, 144, 156, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 165, 0, 64, 1, 52, 8, 216, 9, 28, 13, 180, 14, 240, 27, 44, 44, 16, 60, 60, 51, 43, 37, 12, 8, 83, 127,
+			134, 120, 120, 120, 112, 120, 134, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 140, 0, 24, 1, 172, 8, 80, 10, 92, 13, 231, 14, 12, 28, 41, 40, 20, 48, 56, 52, 41, 34,
+			10, 8, 168, 105, 130, 120, 120, 120, 197, 120, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 48, 1, 56, 9, 120, 10, 92, 13, 10, 15, 32, 28, 0, 34, 20, 52,
+			48, 44, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 184, 0, 96, 1, 112, 3, 192, 8, 144, 11,
+			136, 14, 144, 26, 55, 29, 19, 40, 45, 31, 28, 21, 14, 6, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 96, 1, 192, 3,
+			192, 8, 144, 11, 136, 14, 144, 26, 20, 59, 27, 58, 65, 51, 48, 34, 20, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 33, 0, 179, 0,
+			80, 1, 232, 3, 96, 9, 48, 12, 6, 15, 177, 26, 60, 66, 29, 65, 56, 52, 54, 36, 22, 9, 166, 133, 148, 122, 124, 129, 162, 120,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			33, 0, 164, 0, 56, 1, 148, 7, 36, 9, 148, 12, 57, 16, 2, 27, 79, 49, 22, 58, 32, 48, 52, 26, 19, 8, 176, 129, 143, 129,
+			137, 151, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 148, 0, 16, 1, 152, 8, 200, 10, 188, 12, 128, 17, 88, 27, 84, 37, 16, 52, 36, 40, 48, 16, 16, 8,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 160, 0, 40, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 0, 36, 16, 52, 36, 36,
+			40, 16, 12, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 40, 0, 6, 0, 1, 0, 140, 0, 232, 1, 196, 4, 36, 9, 128, 12, 41, 14,
+			32, 27, 40, 51, 30, 65, 61, 55, 44, 43, 21, 7, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 140, 0, 240, 1, 196, 4, 36, 9,
+			128, 12, 41, 14, 32, 27, 45, 65, 34, 73, 69, 62, 50, 49, 24, 8, 170, 135, 165, 120, 120, 120, 140, 120, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 158, 0, 8, 2,
+			80, 5, 16, 9, 188, 12, 148, 14, 0, 28, 50, 59, 34, 72, 64, 59, 53, 42, 18, 9, 172, 128, 153, 127, 132, 143, 140, 120, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			184, 0, 192, 1, 84, 6, 56, 9, 208, 12, 40, 15, 51, 29, 45, 55, 27, 68, 51, 51, 51, 30, 10, 10, 175, 120, 137, 137, 150, 175,
+			175, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 153, 0, 96, 1, 148, 7, 196, 9, 92, 13, 80, 15, 88, 27, 15, 31, 28, 40, 40, 36, 44, 12, 9, 8, 187, 125,
+			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 153, 0, 40, 1, 228, 7, 96, 9, 112, 13, 80, 15, 88, 27, 0, 26, 28, 32, 28, 28, 24, 8,
+			9, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 188, 0, 40, 1, 228, 7, 136, 9, 52, 13, 8, 17, 88, 27,
+			40, 36, 9, 54, 51, 42, 39, 12, 12, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 188, 0, 40, 1, 188, 7, 176, 9, 12, 13,
+			188, 17, 88, 27, 65, 55, 11, 68, 64, 53, 49, 15, 15, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 154, 0, 96, 1, 244, 6,
+			156, 9, 208, 12, 244, 16, 88, 27, 50, 52, 15, 66, 57, 49, 49, 22, 17, 8, 178, 137, 161, 129, 135, 148, 187, 125, 162, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0,
+			160, 1, 84, 6, 96, 9, 188, 12, 164, 16, 88, 27, 40, 33, 23, 48, 51, 34, 37, 25, 15, 6, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 116, 0, 224, 1, 44, 6, 116, 9, 12, 13, 224, 16, 88, 27, 0, 30, 24, 48, 50, 34, 34, 21, 13, 5, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 190, 0, 5, 0, 1, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 50, 34, 28, 41, 62, 28,
+			36, 23, 5, 5, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 50, 69,
+			39, 64, 82, 39, 50, 32, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 88, 2, 36, 4, 80, 10, 28, 12, 36, 14,
+			15, 28, 50, 69, 39, 64, 82, 39, 50, 32, 8, 7, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 170, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 88, 2, 36, 4, 80, 10,
+			28, 12, 36, 14, 15, 28, 40, 50, 33, 55, 70, 33, 42, 27, 6, 6, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59,
+			170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 0, 1, 88, 2,
+			36, 4, 80, 10, 28, 12, 36, 14, 15, 28, 0, 24, 23, 38, 49, 23, 30, 19, 4, 4, 186, 151, 122, 120, 120, 120, 105, 164, 135, 44,
+			45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 200, 0,
+			4, 0, 1, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14, 128, 28, 50, 36, 26, 44, 49, 52, 44, 30, 11, 8, 185, 153,
+			127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14, 128, 28, 80, 68, 36, 60, 68, 72, 60, 41,
+			15, 11, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14, 128, 28, 70, 55, 34, 52,
+			62, 66, 55, 38, 13, 10, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 200, 1, 168, 7, 216, 9, 248, 12, 66, 14, 128, 28,
+			0, 23, 25, 32, 37, 37, 32, 25, 9, 7, 185, 153, 127, 120, 120, 120, 185, 200, 127, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 200, 0, 5, 0, 1, 0, 184, 0, 136, 1, 188, 2,
+			160, 10, 88, 12, 176, 14, 159, 27, 50, 37, 28, 41, 51, 23, 33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70,
+			130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0,
+			136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 72, 39, 57, 72, 32, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120, 105, 135,
+			135, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 72, 39, 57, 72, 32, 45, 25, 13, 7, 177, 100, 131, 120,
+			120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 50, 52, 33, 48, 61, 27, 39, 21, 11, 6,
+			177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 0, 34, 31, 45, 41, 20,
+			33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 83, 9, 26, 0, 255, 7, 255, 250, 3, 1, 3, 248, 252, 4, 19, 15, 0, 254,
+			1, 6, 0, 251, 254, 255, 255, 4, 242, 243, 0, 1, 7, 10, 3, 1, 9, 6, 248, 255, 23, 0, 235, 0, 253, 229, 4, 22, 255, 0,
+			21, 16, 0, 0, 255, 245, 4, 6, 255, 233, 237, 5, 248, 246, 17, 29, 10, 247, 6, 11, 4, 241, 255, 251, 243, 13, 245, 223, 0, 34,
+			8, 13, 7, 246, 255, 242, 17, 12, 243, 7, 254, 230, 254, 24, 4, 244, 250, 243, 233, 254, 27, 7, 230, 254, 26, 22, 233, 0, 24, 0,
+			243, 250, 253, 243, 248, 232, 243, 4, 34, 53, 237, 242, 14, 255, 7, 252, 6, 243, 233, 1, 15, 229, 2, 51, 249, 250, 248, 21, 33, 246,
+			243, 232, 2, 16, 255, 243, 15, 29, 252, 250, 238, 27, 27, 13, 2, 239, 12, 15, 249, 253, 7, 1, 14, 255, 243, 2, 248, 255, 14, 0,
+			7, 255, 246, 245, 251, 6, 11, 252, 238, 243, 233, 252, 26, 255, 249, 0, 4, 8, 250, 255, 254, 252, 246, 251, 244, 244, 1, 0, 244, 6,
+			12, 8, 8, 249, 4, 253, 252, 2, 242, 244, 1, 4, 255, 0, 2, 4, 7, 7, 13, 2, 252, 251, 2, 255, 249, 0, 6, 2, 246, 7,
+			8, 8, 16, 252, 252, 1, 4, 3, 243, 252, 1, 0, 7, 10, 253, 5, 9, 6, 6, 3, 250, 0, 6, 4, 249, 255, 9, 244, 4, 4,
+			1, 4, 8, 8, 250, 252, 8, 5, 14, 246, 250, 4, 253, 1, 248, 254, 241, 0, 254, 0, 252, 244, 13, 0, 250, 15, 20, 255, 2, 18,
+			247, 232, 249, 9, 2, 248, 242, 237, 0, 1, 7, 19, 18, 10, 4, 254, 238, 18, 20, 237, 245, 245, 242, 242, 249, 250, 250, 19, 9, 249,
+			6, 13, 17, 3, 14, 24, 5, 7, 243, 245, 2, 0, 7, 238, 236, 243, 244, 252, 8, 4, 246, 12, 16, 18, 254, 11, 8, 6, 1, 241,
+			248, 247, 2, 247, 247, 231, 4, 11, 9, 5, 251, 14, 254, 255, 6, 248, 6, 16, 4, 245, 241, 11, 19, 11, 2, 239, 249, 6, 2, 245,
+			250, 253, 234, 7, 13, 20, 4, 13, 18, 3, 11, 250, 249, 246, 239, 240, 239, 250, 243, 249, 6, 5, 24, 20, 25, 253, 1, 254, 251, 2,
+			250, 242, 236, 250, 254, 18, 13, 2, 0, 11, 31, 0, 255, 8, 247, 249, 252, 249, 252, 0, 246, 253, 3, 9, 5, 11, 10, 245, 4, 11,
+			3, 1, 7, 249, 253, 242, 253, 254, 245, 6, 250, 251, 6, 9, 6, 9, 10, 8, 4, 254, 241, 247, 255, 251, 242, 245, 249, 248, 24, 6,
+			6, 14, 8, 12, 247, 237, 239, 11, 250, 239, 250, 251, 11, 20, 18, 5, 24, 19, 253, 249, 237, 241, 248, 248, 236, 237, 254, 6, 21, 23,
+			15, 18, 18, 3, 248, 1, 246, 247, 252, 232, 243, 1, 11, 2, 0, 252, 6, 10, 0, 2, 10, 1, 250, 249, 245, 5, 12, 20, 255, 0,
+			247, 247, 5, 10, 16, 247, 250, 12, 249, 6, 20, 6, 14, 241, 6, 1, 250, 0, 237, 250, 4, 253, 0, 15, 12, 21, 11, 4, 247, 248,
+			1, 242, 234, 231, 1, 244, 238, 7, 255, 20, 24, 8, 8, 252, 11, 241, 2, 249, 245, 253, 248, 255, 0, 23, 251, 6, 20, 253, 7, 247,
+			250, 255, 2, 9, 247, 239, 254, 249, 0, 247, 0, 1, 246, 3, 0, 0, 11, 11, 3, 254, 0, 245, 255, 6, 249, 238, 1, 1, 249, 19,
+			25, 10, 18, 7, 245, 1, 9, 4, 238, 251, 1, 238, 7, 0, 9, 2, 9, 33, 14, 236, 6, 8, 241, 244, 234, 241, 237, 6, 253, 238,
+			12, 52, 10, 3, 15, 1, 4, 239, 228, 230, 224, 13, 228, 230, 9, 34, 44, 28, 28, 25, 29, 10, 253, 247, 245, 242, 226, 241, 238, 244,
+			36, 0, 252, 22, 3, 35, 15, 2, 0, 3, 9, 246, 231, 241, 10, 246, 250, 13, 240, 246, 253, 14, 22, 19, 39, 11, 235, 1, 253, 230,
+			243, 236, 228, 219, 239, 6, 240, 0, 14, 20, 245, 5, 38, 11, 228, 2, 24, 243, 243, 250, 196, 243, 18, 250, 6, 243, 46, 4, 44, 250,
+			4, 27, 3, 13, 203, 252, 245, 247, 238, 232, 29, 255, 27, 9, 32, 16, 228, 33, 245, 241, 253, 255, 244, 250, 19, 241, 255, 4, 7, 22,
+			24, 12, 206, 234, 33, 230, 246, 250, 10, 21, 6, 27, 14, 20, 15, 239, 15, 233, 242, 7, 238, 254, 249, 3, 9, 21, 6, 11, 252, 6,
+			12, 243, 6, 221, 236, 9, 2, 0, 249, 245, 255, 25, 19, 255, 250, 20, 246, 251, 253, 233, 8, 2, 9, 248, 251, 30, 22, 16, 3, 254,
+			9, 255, 240, 235, 242, 230, 247, 17, 251, 250, 5, 3, 253, 8, 20, 3, 0, 6, 238, 236, 253, 2, 5, 249, 239, 254, 18, 0, 240, 241,
+			15, 18, 250, 1, 9, 12, 6, 246, 0, 248, 1, 4, 244, 236, 251, 253, 7, 0, 253, 0, 5, 30, 13, 232, 250, 18, 0, 2, 9, 249,
+			243, 11, 5, 252, 11, 13, 255, 0, 249, 227, 254, 19, 2, 241, 1, 24, 27, 35, 0, 249, 11, 4, 0, 240, 249, 247, 249, 0, 246, 5,
+			18, 22, 14, 5, 4, 0, 12, 2, 246, 0, 253, 251, 254, 250, 246, 249, 3, 1, 250, 252, 252, 7, 5, 254, 235, 240, 254, 251, 230, 241,
+			239, 246, 237, 246, 255, 10, 7, 255, 254, 251, 9, 0, 17, 6, 5, 13, 252, 3, 17, 13, 24, 13, 21, 14, 11, 12, 6, 7, 7, 3,
+			252, 248, 236, 247, 0, 252, 253, 252, 4, 1, 254, 255, 2, 252, 248, 241, 245, 251, 251, 7, 0, 0, 14, 5, 12, 15, 16, 9, 18, 8,
+			244, 8, 7, 254, 4, 5, 1, 0, 0, 10, 8, 251, 251, 5, 250, 243, 0, 9, 245, 245, 247, 235, 241, 8, 253, 242, 12, 3, 244, 246,
+			0, 250, 14, 7, 253, 248, 248, 243, 244, 237, 240, 247, 254, 5, 8, 253, 8, 24, 21, 252, 0, 1, 236, 241, 242, 241, 1, 8, 248, 12,
+			23, 8, 35, 15, 0, 9, 14, 250, 244, 10, 230, 218, 250, 10, 249, 3, 17, 247, 43, 13, 243, 29, 8, 2, 216, 0, 251, 246, 18, 250,
+			26, 1, 44, 29, 34, 13, 239, 252, 235, 19, 239, 15, 19, 9, 25, 4, 38, 230, 245, 36, 234, 214, 209, 223, 2, 255, 252, 23, 35, 9,
+			240, 251, 3, 0, 9, 194, 229, 226, 213, 22, 244, 0, 6, 46, 11, 15, 55, 8, 18, 252, 245, 219, 244, 251, 201, 250, 247, 244, 32, 26,
+			11, 2, 37, 6, 249, 1, 210, 233, 234, 221, 1, 8, 249, 249, 36, 253, 31, 13, 247, 26, 237, 235, 253, 3, 252, 240, 247, 32, 16, 24,
+			11, 1, 14, 9, 245, 1, 236, 223, 4, 246, 0, 14, 45, 22, 33, 27, 233, 18, 12, 219, 234, 223, 231, 13, 17, 223, 11, 46, 25, 2,
+			34, 41, 163, 34, 242, 189, 0, 253, 250, 210, 255, 48, 10, 15, 64, 250, 220, 58, 229, 229, 19, 240, 247, 1, 219, 220, 24, 46, 240, 2,
+			23, 26, 3, 238, 11, 244, 33, 14, 240, 249, 226, 217, 8, 2, 3, 23, 247, 33, 233, 250, 50, 9, 1, 3, 249, 226, 236, 7, 230, 235,
+			14, 41, 250, 7, 39, 223, 254, 27, 21, 251, 22, 211, 250, 233, 233, 18, 227, 0, 16, 254, 0, 31, 20, 250, 10, 34, 233, 227, 243, 5,
+			219, 22, 12, 202, 17, 38, 247, 13, 29, 231, 255, 19, 227, 200, 249, 55, 243, 1, 12, 7, 8, 17, 251, 208, 255, 29, 244, 251, 251, 2,
+			249, 3, 33, 240, 4, 18, 235, 219, 7, 247, 244, 41, 19, 0, 255, 34, 251, 18, 27, 245, 244, 14, 218, 244, 249, 6, 233, 21, 10, 238,
+			17, 17, 3, 243, 30, 11, 1, 246, 245, 234, 255, 246, 231, 6, 6, 253, 245, 27, 18, 9, 44, 13, 249, 36, 19, 228, 11, 249, 223, 245,
+			14, 5, 14, 11, 252, 237, 9, 14, 253, 13, 253, 244, 249, 246, 228, 250, 7, 3, 251, 236, 236, 242, 242, 255, 5, 246, 1, 11, 5, 0,
+			10, 18, 15, 253, 231, 238, 248, 11, 19, 0, 1, 12, 21, 19, 14, 20, 3, 3, 1, 235, 231, 243, 242, 238, 248, 239, 248, 15, 19, 2,
+			9, 9, 253, 254, 248, 246, 247, 3, 0, 252, 5, 7, 4, 13, 10, 13, 8, 0, 251, 248, 0, 254, 255, 255, 3, 18, 16, 0, 0, 11,
+			9, 254, 239, 246, 253, 255, 254, 247, 0, 9, 14, 6, 0, 5, 19, 25, 6, 249, 251, 250, 250, 255, 255, 255, 3, 253, 255, 254, 246, 249,
+			255, 12, 0, 251, 2, 1, 3, 7, 4, 0, 0, 12, 2, 246, 239, 246, 7, 0, 0, 11, 3, 246, 246, 253, 9, 11, 252, 249, 255, 248,
+			242, 238, 247, 240, 245, 4, 249, 242, 253, 3, 12, 23, 25, 10, 17, 24, 0, 246, 255, 1, 254, 254, 246, 236, 0, 9, 9, 15, 11, 6,
+			17, 25, 7, 245, 248, 255, 3, 243, 241, 238, 238, 1, 248, 236, 245, 6, 32, 34, 253, 252, 2, 14, 20, 0, 6, 0, 248, 241, 226, 223,
+			252, 41, 39, 251, 252, 3, 10, 8, 23, 26, 6, 0, 232, 215, 9, 26, 11, 229, 214, 4, 233, 241, 10, 253, 18, 26, 241, 2, 17, 2,
+			20, 0, 250, 217, 233, 26, 221, 213, 5, 5, 42, 8, 238, 35, 13, 21, 28, 249, 252, 29, 10, 242, 233, 32, 3, 237, 6, 254, 0, 232,
+			249, 220, 4, 38, 13, 6, 250, 27, 10, 218, 51, 52, 219, 254, 227, 133, 235, 27, 239, 244, 15, 232, 7, 57, 31, 1, 49, 52, 213, 229,
+			205, 227, 30, 239, 229, 233, 14, 23, 247, 4, 28, 36, 5, 2, 226, 209, 0, 251, 16, 33, 6, 8, 12, 59, 11, 22, 3, 212, 221, 240,
+			217, 199, 14, 238, 231, 41, 4, 34, 80, 53, 13, 35, 233, 232, 254, 223, 218, 250, 217, 248, 32, 226, 17, 22, 46, 34, 26, 25, 237, 240,
+			1, 232, 222, 21, 219, 223, 28, 4, 11, 245, 8, 46, 243, 7, 246, 1, 255, 228, 243, 243, 0, 17, 17, 7, 26, 248, 0, 20, 14, 245,
+			221, 16, 1, 219, 0, 12, 242, 252, 49, 32, 235, 232, 10, 210, 2, 226, 208, 0, 9, 5, 214, 31, 42, 13, 51, 22, 0, 12, 246, 226,
+			244, 0, 241, 253, 243, 4, 0, 32, 28, 19, 32, 26, 249, 236, 229, 2, 252, 248, 240, 230, 249, 242, 5, 246, 2, 5, 248, 1, 238, 236,
+			245, 246, 6, 19, 19, 5, 7, 17, 0, 1, 24, 14, 7, 3, 10, 232, 253, 12, 11, 251, 248, 9, 253, 12, 12, 0, 245, 248, 15, 8,
+			10, 1, 0, 0, 240, 242, 239, 248, 13, 10, 224, 228, 4, 29, 17, 4, 248, 9, 24, 15, 250, 242, 1, 16, 4, 235, 238, 6, 1, 252,
+			250, 3, 14, 17, 252, 252, 7, 5, 247, 252, 10, 246, 251, 246, 250, 8, 239, 248, 252, 5, 6, 27, 19, 251, 240, 0, 11, 15, 9, 237,
+			251, 252, 242, 250, 252, 2, 10, 10, 0, 252, 238, 3, 23, 1, 0, 255, 255, 0, 11, 255, 238, 1, 4, 243, 252, 3, 245, 239, 12, 12,
+			7, 3, 6, 21, 17, 1, 252, 249, 4, 0, 247, 236, 243, 245, 249, 1, 9, 13, 16, 13, 13, 14, 0, 243, 251, 253, 246, 247, 238, 243,
+			0, 10, 21, 21, 19, 21, 9, 0, 243, 242, 247, 229, 244, 0, 245, 254, 0, 12, 28, 21, 8, 6, 0, 250, 247, 242, 244, 0, 251, 246,
+			2, 4, 5, 17, 21, 10, 9, 2, 248, 247, 250, 251, 247, 252, 254, 251, 10, 7, 0, 6, 8, 7, 254, 249, 251, 252, 245, 254, 4, 251,
+			1, 2, 250, 4, 13, 2, 252, 254, 2, 9, 3, 253, 0, 7, 9, 0, 255, 250, 249, 248, 246, 253, 5, 2, 14, 17, 7, 5, 7, 8,
+			7, 0, 243, 240, 238, 238, 254, 0, 0, 7, 24, 22, 9, 253, 248, 254, 254, 248, 249, 249, 248, 247, 0, 4, 7, 18, 10, 0, 14, 3,
+			243, 235, 237, 249, 254, 5, 8, 2, 12, 14, 11, 16, 13, 0, 3, 253, 246, 239, 245, 10, 3, 1, 9, 6, 248, 255, 14, 0, 253, 255,
+			249, 238, 244, 241, 243, 3, 6, 8, 7, 6, 10, 9, 0, 3, 10, 254, 253, 254, 248, 251, 255, 255, 3, 11, 5, 249, 18, 24, 9, 1,
+			0, 3, 0, 254, 248, 241, 240, 237, 248, 249, 238, 249, 6, 12, 10, 9, 6, 13, 11, 1, 251, 253, 253, 237, 238, 245, 245, 247, 255, 13,
+			19, 8, 13, 23, 19, 15, 12, 254, 250, 250, 247, 243, 247, 251, 0, 0, 8, 11, 246, 246, 15, 19, 244, 252, 15, 248, 242, 250, 4, 249,
+			3, 3, 241, 0, 0, 252, 250, 253, 7, 5, 6, 4, 15, 15, 5, 0, 2, 14, 17, 3, 252, 254, 3, 5, 9, 10, 0, 3, 249, 247,
+			0, 246, 249, 251, 235, 253, 9, 3, 7, 11, 8, 8, 1, 249, 0, 12, 250, 231, 242, 6, 4, 240, 242, 18, 34, 23, 14, 10, 7, 3,
+			1, 1, 243, 252, 249, 242, 245, 235, 245, 9, 4, 247, 253, 253, 2, 3, 250, 248, 245, 248, 254, 249, 251, 4, 8, 2, 254, 5, 13, 12,
+			12, 6, 252, 0, 4, 251, 241, 238, 249, 254, 245, 235, 249, 1, 252, 253, 1, 8, 15, 17, 1, 250, 1, 5, 8, 248, 232, 0, 15, 253,
+			245, 252, 13, 26, 13, 15, 17, 8, 15, 2, 249, 246, 8, 21, 13, 22, 10, 255, 255, 9, 6, 9, 18, 2, 244, 241, 0, 6, 255, 17,
+			26, 14, 7, 0, 140, 0, 4, 0, 1, 0, 0, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 50, 47, 31, 55, 66, 49,
+			36, 28, 9, 7, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 50, 90,
+			43, 76, 91, 68, 51, 39, 13, 7, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15,
+			32, 29, 40, 68, 37, 66, 79, 59, 45, 34, 11, 6, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 133, 2, 169, 6, 216, 9,
+			192, 13, 185, 15, 32, 29, 0, 49, 31, 56, 68, 51, 38, 28, 9, 9, 217, 150, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0,
+			104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 45, 49, 25, 74, 48, 46, 48, 28, 11, 5, 160, 95, 120, 167, 120, 120,
+			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 70, 100, 36, 105, 69, 65, 68, 40, 16, 7, 160, 95,
+			120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 60, 80, 32, 94, 62, 58, 61, 35,
+			14, 6, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 104, 0, 104, 1, 72, 8, 100, 10, 72, 13, 40, 15, 96, 25, 0, 40, 23, 66,
+			43, 41, 43, 25, 10, 4, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 148, 0, 48, 1, 238, 7, 60, 10, 42, 13,
+			50, 15, 96, 25, 45, 37, 15, 54, 57, 51, 48, 33, 13, 6, 160, 111, 120, 143, 120, 120, 130, 111, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 148, 0, 48, 1, 238, 7,
+			60, 10, 42, 13, 50, 15, 96, 25, 75, 65, 20, 72, 76, 68, 64, 44, 18, 8, 160, 111, 120, 143, 120, 120, 130, 111, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 148, 0,
+			40, 1, 12, 8, 92, 10, 42, 13, 50, 15, 96, 25, 65, 48, 17, 61, 64, 57, 54, 37, 15, 7, 160, 111, 120, 143, 120, 120, 130, 111,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 148, 0, 40, 1, 32, 8, 140, 10, 42, 13, 50, 15, 96, 25, 0, 24, 12, 43, 46, 41, 39, 27, 11, 5, 160, 111, 120, 143,
+			120, 120, 130, 111, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 105, 0, 5, 0, 1, 0, 144, 0, 176, 1, 32, 3, 20, 10, 148, 12, 120, 15, 88, 27, 45, 42, 22, 48, 58, 37,
+			34, 19, 13, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 168, 1, 32, 3, 20, 10, 148, 12, 120, 15, 88, 27, 60, 80,
+			28, 70, 77, 46, 43, 24, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 144, 0, 168, 1, 32, 3, 20, 10, 148, 12, 120, 15,
+			88, 27, 40, 71, 26, 66, 72, 43, 40, 23, 16, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 160, 1, 22, 3, 30, 10,
+			148, 12, 120, 15, 88, 27, 40, 49, 22, 55, 60, 36, 33, 19, 13, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 128, 0, 152, 1,
+			12, 3, 40, 10, 148, 12, 120, 15, 88, 27, 0, 43, 20, 51, 56, 34, 31, 18, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 40, 0,
+			5, 0, 1, 0, 176, 0, 168, 1, 88, 7, 216, 9, 32, 13, 60, 15, 96, 25, 45, 103, 44, 108, 68, 68, 75, 44, 18, 8, 160, 90,
+			120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 177, 0, 149, 1, 254, 6, 138, 9, 240, 12, 24, 15, 141, 25, 44, 91, 42, 98, 65, 63, 69, 40,
+			18, 8, 160, 93, 125, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 180, 0, 104, 1, 44, 6, 212, 8, 128, 12, 196, 14, 248, 25, 71, 72, 40, 76,
+			60, 52, 55, 32, 19, 8, 161, 101, 138, 120, 120, 120, 130, 101, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 88, 1, 56, 4, 152, 8, 104, 11, 136, 14, 144, 26,
+			40, 45, 36, 44, 52, 36, 36, 20, 20, 8, 162, 135, 157, 120, 120, 120, 162, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 88, 1, 56, 4, 152, 8, 104, 11,
+			136, 14, 144, 26, 0, 35, 31, 38, 45, 31, 31, 17, 17, 7, 162, 135, 157, 120, 120, 120, 162, 120, 157, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 75, 0, 6, 0, 1, 0, 184, 0,
+			96, 1, 192, 3, 36, 9, 224, 11, 136, 14, 144, 26, 50, 46, 20, 55, 58, 40, 35, 26, 14, 7, 162, 127, 157, 120, 120, 120, 162, 127,
+			157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 184, 0, 96, 1, 192, 3, 36, 9, 224, 11, 136, 14, 144, 26, 50, 63, 23, 64, 68, 47, 40, 30, 17, 8, 162, 127, 157, 120,
+			120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 183, 0, 96, 1, 11, 4, 46, 9, 241, 11, 137, 14, 166, 26, 50, 53, 23, 59, 61, 45, 39, 29, 16, 8,
+			162, 126, 164, 120, 120, 120, 162, 127, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 174, 0, 97, 1, 182, 5, 108, 9, 83, 12, 147, 14, 38, 27, 50, 36, 24, 48, 39, 45,
+			40, 28, 14, 7, 164, 118, 201, 120, 120, 120, 162, 120, 200, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 168, 0, 91, 1, 240, 6, 229, 9, 206, 12, 153, 14, 143, 27, 25, 26,
+			22, 42, 33, 36, 33, 22, 10, 6, 165, 106, 186, 120, 120, 120, 162, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 164, 0, 87, 1, 119, 7, 26, 10, 3, 13, 157, 14,
+			189, 27, 0, 23, 21, 40, 33, 32, 27, 20, 6, 6, 166, 101, 183, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 140, 0, 4, 0, 1, 0, 56, 1, 73, 3,
+			129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 50, 26, 22, 47, 48, 30, 24, 17, 7, 3, 211, 144, 124, 120, 120, 120, 237, 165, 165, 44,
+			45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			56, 1, 73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 25, 85, 40, 85, 86, 54, 43, 30, 12, 6, 211, 144, 124, 120, 120, 120,
+			237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 56, 1, 73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 65, 85, 40, 85, 86, 54, 43, 30, 12, 6, 211, 144,
+			124, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 56, 1, 73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 0, 27, 23, 48, 49, 30, 24, 17,
+			7, 3, 211, 144, 124, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 235, 0, 6, 0, 1, 0, 176, 0, 72, 2, 120, 5, 156, 9, 188, 12, 116, 14, 88, 27,
+			45, 49, 33, 60, 69, 41, 39, 33, 17, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 72, 2, 120, 5, 156, 9, 188, 12,
+			116, 14, 88, 27, 60, 76, 41, 75, 87, 51, 49, 41, 21, 8, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 72, 2, 100, 5,
+			156, 9, 188, 12, 116, 14, 88, 27, 40, 61, 37, 67, 78, 46, 44, 37, 19, 7, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0,
+			184, 1, 66, 4, 106, 9, 228, 12, 216, 14, 244, 26, 40, 53, 20, 68, 59, 32, 32, 33, 15, 7, 172, 130, 122, 120, 120, 120, 197, 135,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 176, 0, 92, 1, 32, 3, 246, 8, 172, 12, 8, 15, 65, 27, 50, 47, 10, 68, 42, 22, 20, 26, 11, 8, 170, 123, 106, 120,
+			120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 176, 0, 92, 1, 32, 3, 246, 8, 172, 12, 8, 15, 65, 27, 0, 32, 8, 57, 35, 18, 17, 22, 9, 6,
+			170, 123, 106, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 215, 0, 6, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 45, 44,
+			6, 70, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15,
+			144, 26, 30, 68, 7, 87, 45, 26, 26, 38, 15, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9,
+			12, 13, 60, 15, 144, 26, 50, 61, 7, 83, 43, 25, 25, 36, 14, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 146, 0, 166, 1,
+			126, 4, 46, 9, 228, 12, 216, 14, 248, 26, 50, 47, 16, 68, 52, 30, 30, 32, 14, 8, 172, 137, 118, 120, 120, 120, 177, 125, 117, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			125, 0, 240, 1, 78, 5, 39, 9, 200, 12, 145, 14, 66, 27, 40, 32, 21, 51, 55, 31, 32, 27, 13, 7, 169, 146, 130, 120, 120, 120,
+			177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 1, 0, 122, 0, 8, 2, 102, 5, 38, 9, 196, 12, 136, 14, 75, 27, 0, 31, 22, 50, 55, 31, 32, 26, 13, 7, 168, 147,
+			131, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36,
+			0, 0, 0, 250, 0, 0, 100, 0, 5, 0, 1, 0, 32, 1, 32, 3, 236, 4, 160, 10, 172, 13, 180, 15, 32, 28, 50, 46, 32, 56,
+			66, 39, 32, 22, 9, 4, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 32, 1, 32, 3, 216, 4, 160, 10, 172, 13, 180, 15, 32, 28,
+			50, 91, 44, 82, 88, 54, 44, 30, 13, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 32, 1, 32, 3, 0, 5, 160, 10, 172, 13,
+			180, 15, 32, 28, 50, 87, 44, 82, 88, 54, 44, 30, 13, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 32, 1, 13, 3, 0, 5,
+			120, 10, 52, 13, 120, 15, 32, 28, 50, 68, 39, 69, 82, 48, 39, 27, 12, 6, 162, 155, 135, 120, 120, 120, 192, 155, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 32, 1,
+			13, 3, 0, 5, 120, 10, 52, 13, 120, 15, 32, 28, 0, 35, 28, 50, 59, 35, 28, 19, 8, 4, 162, 155, 135, 120, 120, 120, 192, 155,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			160, 0, 4, 0, 1, 0, 149, 0, 24, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 44, 7, 62, 51, 47, 51, 23, 16, 8,
+			182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 149, 0, 24, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 60, 56, 8, 70, 58, 53,
+			58, 26, 18, 9, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 149, 0, 8, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 49,
+			14, 62, 47, 46, 49, 21, 16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 149, 0, 8, 1, 207, 8, 214, 11, 112, 13, 134, 16,
+			42, 27, 0, 45, 14, 59, 45, 44, 47, 20, 15, 7, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 125, 0, 6, 0, 1, 0, 14, 1, 8, 3,
+			176, 4, 200, 10, 2, 13, 238, 14, 192, 27, 45, 42, 24, 56, 63, 36, 30, 25, 9, 4, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			14, 1, 8, 3, 176, 4, 200, 10, 2, 13, 238, 14, 192, 27, 40, 92, 36, 82, 93, 53, 44, 37, 13, 6, 165, 148, 135, 120, 120, 120,
+			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 14, 1, 8, 3, 176, 4, 200, 10, 2, 13, 238, 14, 192, 27, 35, 75, 32, 74, 84, 48, 39, 33, 12, 6, 165, 148,
+			135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 245, 0, 150, 2, 86, 4, 144, 10, 229, 12, 209, 14, 107, 27, 80, 62, 28, 69, 70, 43, 36, 31,
+			13, 6, 164, 144, 140, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 186, 0, 137, 1, 132, 3, 13, 10, 159, 12, 139, 14, 164, 26, 40, 48, 21, 61,
+			38, 31, 28, 28, 17, 7, 163, 134, 154, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 184, 0, 112, 1, 132, 3, 236, 9, 148, 12, 136, 14, 144, 26,
+			0, 32, 18, 50, 30, 25, 23, 23, 14, 6, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 230, 0, 5, 0, 1, 0, 72, 1, 136, 3, 40, 5,
+			180, 10, 112, 13, 191, 14, 32, 28, 45, 45, 30, 64, 55, 34, 30, 19, 9, 4, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 65, 70,
+			130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 72, 1,
+			136, 3, 40, 5, 180, 10, 112, 13, 191, 14, 32, 28, 70, 103, 45, 97, 83, 52, 45, 28, 13, 6, 207, 150, 105, 120, 120, 120, 237, 165,
+			165, 44, 65, 70, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 55, 1, 100, 3, 140, 5, 160, 10, 116, 13, 189, 14, 32, 28, 70, 80, 40, 88, 78, 48, 40, 26, 12, 6, 203, 144, 114, 120,
+			120, 120, 237, 165, 165, 44, 60, 70, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 156, 0, 88, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 45, 40, 27, 54, 49, 58, 45, 32, 9, 7,
+			167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 88, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 25, 22, 44, 45, 41,
+			37, 30, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 200, 0, 4, 0, 1, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14,
+			128, 28, 50, 37, 26, 54, 56, 55, 44, 32, 11, 6, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 160, 0, 232, 1, 198, 7, 236, 9,
+			12, 13, 101, 14, 128, 28, 80, 57, 32, 66, 69, 68, 54, 40, 13, 8, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 232, 1,
+			198, 7, 236, 9, 12, 13, 101, 14, 128, 28, 70, 59, 33, 68, 70, 69, 55, 41, 13, 8, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14, 128, 28, 0, 27, 22, 45, 47, 47, 37, 27, 9, 5, 185, 112, 127, 120, 120, 120,
+			185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 60, 0, 4, 0, 1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 45, 35, 18, 54, 40, 32, 35, 31,
+			9, 10, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25, 60, 68, 25, 76,
+			56, 45, 48, 43, 13, 15, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12, 99, 14, 151, 25,
+			60, 55, 23, 68, 50, 40, 44, 39, 11, 13, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 130, 0, 49, 1, 164, 6, 36, 9, 228, 12,
+			99, 14, 151, 25, 0, 44, 20, 61, 45, 36, 39, 35, 10, 12, 167, 96, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 55, 0, 2, 0, 5, 0, 76, 0,
+			104, 1, 8, 7, 124, 11, 172, 13, 160, 15, 32, 29, 55, 17, 9, 45, 22, 18, 34, 20, 8, 0, 155, 135, 97, 120, 120, 120, 95, 105,
+			97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			5, 0, 76, 0, 104, 1, 8, 7, 124, 11, 172, 13, 160, 15, 32, 29, 0, 12, 7, 38, 23, 15, 28, 16, 7, 0, 150, 135, 97, 120,
+			120, 120, 90, 105, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 18, 0, 2, 0, 5, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 18, 14, 3, 39, 18, 28,
+			36, 20, 6, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 180, 0, 29, 1, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29, 0, 26,
+			4, 52, 24, 38, 48, 27, 8, 0, 120, 105, 150, 120, 120, 120, 45, 135, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 245, 0, 6, 0, 1, 0, 149, 0, 24, 1, 207, 8, 214, 11,
+			112, 13, 134, 16, 42, 27, 45, 48, 8, 65, 54, 50, 54, 25, 16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 149, 0, 24, 1,
+			207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 100, 60, 9, 73, 61, 56, 61, 28, 18, 9, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			156, 0, 67, 1, 137, 8, 108, 11, 112, 13, 68, 16, 46, 27, 30, 50, 12, 67, 55, 52, 52, 26, 15, 8, 179, 114, 136, 130, 138, 153,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 184, 0, 239, 1, 111, 7, 196, 9, 112, 13, 60, 15, 64, 27, 35, 41, 27, 67, 53, 52, 39, 27, 12, 7, 167, 90,
+			150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 2, 124, 6, 136, 9, 32, 13, 85, 15, 64, 28, 35, 26, 28, 44, 46, 48, 38, 21,
+			7, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 88, 2, 240, 5, 136, 9, 112, 13, 29, 16, 192, 28, 0, 23, 28, 42,
+			38, 38, 30, 16, 5, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 150, 0, 5, 0, 1, 0, 184, 0, 132, 1, 172, 3, 116, 9, 224, 11,
+			136, 14, 144, 26, 50, 51, 26, 61, 52, 32, 29, 20, 14, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 132, 1, 172, 3,
+			116, 9, 224, 11, 136, 14, 144, 26, 60, 78, 32, 75, 64, 39, 36, 25, 18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0,
+			132, 1, 172, 3, 116, 9, 224, 11, 136, 14, 144, 26, 40, 67, 30, 71, 57, 37, 33, 23, 16, 8, 162, 127, 150, 120, 120, 120, 162, 127,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 128, 0, 32, 2, 156, 4, 252, 8, 68, 12, 136, 14, 96, 27, 40, 34, 29, 53, 50, 34, 31, 29, 15, 5, 167, 135, 135, 120,
+			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 128, 0, 32, 2, 156, 4, 252, 8, 68, 12, 136, 14, 96, 27, 0, 34, 29, 53, 50, 34, 31, 29, 15, 5,
+			167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 190, 0, 5, 0, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 50, 34,
+			23, 44, 44, 18, 36, 20, 5, 5, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14,
+			15, 28, 50, 66, 32, 61, 61, 25, 50, 28, 8, 7, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 160, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11,
+			48, 12, 36, 14, 15, 28, 50, 66, 32, 61, 61, 25, 50, 28, 8, 7, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59,
+			175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 112, 2,
+			192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 40, 47, 27, 52, 52, 21, 42, 24, 6, 6, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44,
+			45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 0, 20, 18, 34, 34, 14, 28, 16, 4, 4, 186, 175, 135, 120, 120, 120,
+			105, 185, 148, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 255, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 5, 0, 1, 0, 244, 0, 35, 2, 63, 7,
+			232, 9, 38, 13, 144, 14, 176, 28, 45, 32, 26, 49, 47, 49, 41, 30, 9, 6, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 244, 0,
+			35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 71, 38, 72, 72, 76, 63, 46, 14, 10, 202, 118, 143, 120, 120, 120, 135, 180,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 60, 50, 32, 60, 60, 64, 53, 38, 12, 8, 202, 118, 143, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 144, 0, 64, 1, 252, 8, 180, 10, 152, 13, 10, 15, 32, 28, 60, 25, 18, 46, 43, 39, 36, 28, 8, 7,
+			167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 144, 0, 64, 1, 252, 8, 180, 10, 152, 13, 10, 15, 32, 28, 0, 23, 17, 45, 41, 38,
+			35, 27, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 156, 0, 56, 1, 252, 8, 4, 11, 212, 13, 120, 15,
+			144, 27, 45, 40, 11, 59, 53, 52, 45, 28, 11, 7, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 156, 0, 56, 1, 252, 8, 4, 11,
+			212, 13, 120, 15, 144, 27, 70, 83, 17, 85, 76, 75, 65, 40, 16, 10, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 156, 0, 56, 1,
+			252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 60, 67, 15, 76, 69, 67, 58, 36, 15, 9, 176, 106, 143, 120, 120, 120, 185, 107, 167, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			156, 0, 48, 1, 252, 8, 4, 11, 212, 13, 120, 15, 144, 27, 0, 30, 10, 51, 46, 45, 39, 24, 10, 6, 176, 106, 143, 120, 120, 120,
+			185, 107, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 185, 0, 4, 0, 1, 0, 248, 0, 200, 2, 136, 4, 220, 10, 52, 13, 68, 15, 176, 27, 45, 50, 30, 61, 64, 39, 36, 25,
+			7, 5, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 200, 2, 136, 4, 220, 10, 52, 13, 68, 15, 176, 27, 60, 96, 42, 85,
+			89, 55, 49, 35, 10, 7, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 248, 0, 192, 2, 136, 4, 220, 10, 52, 13, 68, 15, 176, 27,
+			80, 85, 40, 80, 84, 52, 47, 33, 9, 7, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 248, 0, 184, 2, 136, 4, 220, 10, 52, 13,
+			68, 15, 176, 27, 0, 48, 30, 60, 63, 39, 35, 25, 7, 5, 165, 130, 155, 120, 120, 120, 167, 130, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 100, 0, 4, 0, 1, 0, 176, 0,
+			88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 47, 3, 73, 43, 21, 21, 30, 12, 7, 177, 125, 110, 120, 120, 120, 177, 125,
+			125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 79, 4, 96, 56, 28, 28, 40, 16, 10, 177, 125, 110, 120,
+			120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 63, 3, 85, 49, 24, 24, 35, 14, 8,
+			177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 31, 2, 60, 35, 17,
+			17, 25, 10, 6, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15,
+			144, 26, 45, 55, 12, 64, 58, 30, 27, 24, 15, 7, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 112, 1, 32, 3, 100, 10,
+			48, 12, 60, 15, 144, 26, 70, 92, 16, 84, 76, 40, 36, 32, 20, 10, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 112, 1,
+			32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 60, 75, 14, 75, 68, 36, 32, 28, 18, 9, 162, 127, 150, 120, 120, 120, 162, 127, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			176, 0, 112, 1, 32, 3, 100, 10, 48, 12, 60, 15, 144, 26, 0, 49, 11, 61, 55, 29, 26, 23, 14, 7, 162, 127, 150, 120, 120, 120,
+			162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 0, 0, 6, 0, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 45, 60, 24, 58, 73, 41, 37, 34,
+			9, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 30, 103, 32, 76,
+			95, 54, 48, 44, 12, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0, 216, 2, 116, 4, 160, 10, 148, 12, 41, 14, 96, 27,
+			35, 85, 32, 68, 98, 49, 41, 41, 16, 8, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 246, 0, 200, 2, 120, 5, 216, 9, 132, 13,
+			224, 16, 88, 27, 50, 64, 34, 76, 64, 48, 44, 20, 12, 10, 226, 150, 136, 120, 120, 120, 235, 150, 136, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 5, 0, 166, 0, 80, 1, 192, 8,
+			229, 10, 132, 13, 94, 15, 138, 27, 70, 50, 16, 60, 60, 57, 50, 30, 13, 8, 181, 110, 142, 120, 120, 120, 235, 150, 136, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 156, 0,
+			56, 1, 252, 8, 4, 11, 132, 13, 50, 15, 144, 27, 0, 40, 11, 59, 53, 52, 45, 28, 11, 7, 176, 106, 143, 120, 120, 120, 185, 107,
+			167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			255, 0, 5, 0, 1, 0, 24, 1, 232, 2, 4, 6, 196, 9, 112, 13, 40, 15, 153, 28, 45, 45, 31, 60, 60, 46, 36, 28, 10, 6,
+			215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 232, 2, 4, 6, 196, 9, 112, 13, 40, 15, 153, 28, 75, 88, 44, 84, 84, 64,
+			51, 39, 14, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 24, 1, 232, 2, 4, 6, 196, 9, 112, 13, 40, 15, 153, 28, 65, 79,
+			41, 79, 79, 60, 48, 37, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 80, 1, 192, 8, 140, 10, 152, 13, 166, 14,
+			32, 28, 70, 43, 32, 55, 49, 58, 45, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 72, 1, 232, 8, 160, 10,
+			92, 13, 10, 15, 32, 28, 0, 30, 28, 45, 45, 41, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0,
+			122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 45, 49, 28, 59, 69, 41, 43, 30, 17, 6, 170, 133, 135, 122, 124, 128,
+			197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 79, 36, 75, 88, 52, 55, 38, 21, 8, 170, 133,
+			135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 64, 32, 68, 79, 47, 49, 35,
+			19, 7, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 45, 43, 32, 56,
+			49, 59, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28,
+			0, 27, 28, 44, 44, 40, 37, 29, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 210, 0, 5, 0, 1, 0, 172, 0, 64, 1, 228, 2,
+			96, 9, 12, 13, 60, 15, 144, 26, 45, 35, 2, 64, 42, 19, 19, 25, 8, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 172, 0,
+			64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 75, 74, 4, 92, 64, 28, 28, 36, 12, 10, 177, 117, 100, 120, 120, 120, 177, 117,
+			115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 170, 0, 60, 1, 122, 3, 166, 9, 24, 13, 106, 15, 164, 26, 30, 52, 4, 79, 39, 26, 27, 30, 11, 8, 178, 118, 103, 121,
+			123, 125, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 9, 0, 148, 0, 16, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 60, 35, 15, 49, 34, 38, 45, 15, 15, 7,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 148, 0, 16, 1, 199, 8, 28, 12, 132, 13, 8, 17, 88, 27, 0, 33, 14, 47, 33, 36,
+			44, 14, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 75, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6, 16, 9, 228, 12, 96, 14,
+			100, 25, 45, 42, 18, 60, 40, 35, 37, 34, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 24, 1, 184, 6, 16, 9,
+			228, 12, 96, 14, 100, 25, 75, 78, 25, 82, 56, 47, 51, 47, 12, 17, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 133, 0, 27, 1,
+			40, 7, 96, 9, 253, 12, 122, 14, 196, 25, 75, 61, 23, 71, 51, 46, 48, 41, 11, 14, 167, 91, 138, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			136, 0, 38, 1, 187, 8, 180, 10, 86, 13, 215, 14, 33, 27, 45, 49, 21, 60, 52, 55, 50, 32, 12, 9, 169, 96, 152, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 137, 0, 40, 1, 232, 8, 220, 10, 97, 13, 226, 14, 72, 27, 0, 38, 20, 55, 49, 53, 47, 29, 11, 8, 169, 97,
+			153, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 125, 0, 6, 0, 1, 0, 240, 0, 176, 2, 36, 4, 20, 10, 188, 12, 92, 14, 87, 27, 45, 44, 21, 50,
+			62, 33, 33, 29, 8, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 240, 0, 176, 2, 36, 4, 20, 10, 188, 12, 92, 14, 87, 27,
+			40, 96, 30, 73, 92, 48, 48, 43, 12, 7, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 232, 0, 148, 2, 12, 4, 76, 10, 200, 12,
+			104, 14, 87, 27, 35, 78, 27, 66, 81, 43, 43, 38, 11, 6, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 32, 2, 172, 3,
+			220, 10, 248, 12, 156, 14, 87, 27, 80, 74, 27, 66, 75, 43, 43, 38, 11, 6, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 186, 0,
+			137, 1, 132, 3, 13, 10, 159, 12, 139, 14, 164, 26, 40, 49, 22, 61, 38, 31, 28, 28, 17, 7, 163, 134, 154, 120, 120, 120, 167, 142,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			1, 0, 184, 0, 112, 1, 132, 3, 236, 9, 148, 12, 136, 14, 144, 26, 0, 32, 18, 50, 30, 25, 23, 23, 14, 6, 162, 133, 155, 120,
+			120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0,
+			0, 250, 0, 0, 255, 0, 5, 0, 1, 0, 168, 0, 4, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 56, 21, 52, 64, 39,
+			36, 18, 13, 5, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 4, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 70, 108,
+			29, 73, 89, 54, 50, 25, 18, 7, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 240, 1, 92, 3, 60, 10, 146, 11, 158, 14,
+			18, 27, 80, 90, 25, 71, 81, 49, 45, 25, 17, 7, 168, 134, 145, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 56, 1, 92, 3, 56, 9,
+			12, 13, 60, 15, 144, 26, 60, 53, 3, 79, 43, 23, 23, 33, 13, 8, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 56, 1,
+			92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 33, 2, 62, 35, 19, 19, 27, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 250, 0,
+			5, 0, 1, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14, 104, 28, 45, 29, 21, 46, 46, 49, 37, 28, 9, 6, 184, 108,
+			128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14, 104, 28, 60, 84, 36, 79, 78, 83, 63, 48,
+			15, 11, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 198, 0, 192, 1, 44, 7, 195, 9, 213, 12, 91, 14, 62, 28, 80, 71, 31, 76,
+			61, 74, 57, 44, 14, 10, 183, 109, 149, 120, 120, 120, 185, 107, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 178, 0, 71, 1, 179, 3, 63, 9, 9, 13, 48, 15, 166, 26,
+			65, 42, 4, 71, 37, 23, 22, 30, 12, 7, 178, 124, 103, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 178, 0, 71, 1, 179, 3, 63, 9, 9, 13,
+			48, 15, 166, 26, 0, 30, 3, 60, 31, 19, 18, 25, 10, 6, 178, 124, 103, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 4, 1, 6, 0, 1, 0, 152, 0,
+			40, 1, 152, 8, 4, 11, 92, 13, 135, 15, 160, 26, 45, 21, 4, 46, 41, 41, 42, 20, 9, 4, 167, 105, 120, 120, 120, 120, 167, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 152, 0, 40, 1, 132, 8, 4, 11, 92, 13, 135, 15, 160, 26, 60, 62, 7, 78, 70, 70, 71, 34, 16, 8, 167, 105, 120, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 155, 0, 43, 1, 188, 7, 195, 10, 81, 13, 125, 15, 158, 26, 80, 53, 6, 76, 54, 61, 61, 33, 15, 7,
+			168, 107, 150, 120, 120, 120, 167, 90, 152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 174, 0, 62, 1, 199, 3, 80, 9, 17, 13, 64, 15, 145, 26, 35, 39, 3, 71, 36, 22,
+			22, 29, 12, 7, 176, 123, 103, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 64, 1, 152, 3, 56, 9, 12, 13, 60, 15, 144, 26, 40, 37,
+			2, 67, 33, 19, 19, 28, 11, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 64, 1, 152, 3, 56, 9, 12, 13, 60, 15,
+			144, 26, 0, 30, 2, 60, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 40, 1, 232, 2,
+			240, 5, 196, 9, 112, 13, 40, 15, 153, 28, 45, 42, 29, 57, 60, 43, 35, 26, 9, 5, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			40, 1, 232, 2, 240, 5, 196, 9, 112, 13, 40, 15, 153, 28, 80, 81, 41, 79, 83, 60, 48, 37, 13, 8, 215, 138, 143, 120, 120, 120,
+			237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 24, 1, 186, 2, 4, 6, 180, 9, 98, 13, 20, 15, 71, 28, 80, 64, 35, 71, 72, 53, 43, 34, 12, 7, 210, 133,
+			142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 40, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 42, 19, 61, 41, 35, 38, 35,
+			9, 12, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 40, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 26, 15, 48,
+			33, 28, 30, 28, 7, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13,
+			144, 14, 176, 28, 45, 28, 23, 46, 45, 48, 37, 27, 8, 6, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 244, 0, 35, 2, 63, 7,
+			232, 9, 38, 13, 144, 14, 176, 28, 80, 82, 40, 79, 77, 81, 63, 46, 14, 10, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0,
+			35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 73, 38, 75, 72, 77, 60, 43, 13, 9, 202, 118, 143, 120, 120, 120, 135, 180,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 47, 20, 63, 43, 37, 40, 36, 10, 13, 165, 90, 135, 120,
+			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 30, 16, 50, 34, 29, 32, 29, 8, 10,
+			165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 45, 49,
 			28, 59, 69, 41, 43, 30, 17, 6, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14,
 			95, 27, 80, 79, 36, 75, 88, 52, 55, 38, 21, 8, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9,
 			228, 12, 246, 14, 95, 27, 80, 64, 32, 68, 79, 47, 49, 35, 19, 7, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1,
-			152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 45, 43, 32, 56, 49, 59, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 27, 28, 44, 44, 40, 37, 29, 8, 7, 167, 90, 135, 120, 120, 120,
-			122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 210, 0, 5, 0, 1, 0, 172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 45, 35, 2, 64, 42, 19, 19, 25,
-			8, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 172, 0, 64, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 75, 74, 4, 92,
-			64, 28, 28, 36, 12, 10, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 170, 0, 60, 1, 122, 3, 166, 9, 24, 13, 106, 15, 164, 26,
-			30, 52, 4, 79, 39, 26, 27, 30, 11, 8, 178, 118, 103, 121, 123, 125, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 9, 0, 148, 0, 16, 1, 199, 8, 28, 12, 132, 13,
-			8, 17, 88, 27, 60, 35, 15, 49, 34, 38, 45, 15, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 148, 0, 16, 1, 199, 8,
-			28, 12, 132, 13, 8, 17, 88, 27, 0, 33, 14, 47, 33, 36, 44, 14, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 75, 0, 5, 0,
-			1, 0, 132, 0, 24, 1, 184, 6, 16, 9, 228, 12, 96, 14, 100, 25, 45, 42, 18, 60, 40, 35, 37, 34, 9, 12, 167, 90, 135, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 132, 0, 24, 1, 184, 6, 16, 9, 228, 12, 96, 14, 100, 25, 75, 78, 25, 82, 56, 47, 51, 47, 12, 17,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 133, 0, 27, 1, 40, 7, 96, 9, 253, 12, 122, 14, 196, 25, 75, 61, 23, 71, 51, 46,
-			48, 41, 11, 14, 167, 91, 138, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 136, 0, 38, 1, 187, 8, 180, 10, 86, 13, 215, 14, 33, 27, 45, 49,
-			21, 60, 52, 55, 50, 32, 12, 9, 169, 96, 152, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 137, 0, 40, 1, 232, 8, 220, 10, 97, 13, 226, 14,
-			72, 27, 0, 38, 20, 55, 49, 53, 47, 29, 11, 8, 169, 97, 153, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 125, 0, 6, 0, 1, 0, 240, 0, 176, 2,
-			36, 4, 20, 10, 188, 12, 92, 14, 87, 27, 45, 44, 21, 50, 62, 33, 33, 29, 8, 5, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			240, 0, 176, 2, 36, 4, 20, 10, 188, 12, 92, 14, 87, 27, 40, 96, 30, 73, 92, 48, 48, 43, 12, 7, 167, 147, 147, 120, 120, 120,
-			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 232, 0, 148, 2, 12, 4, 76, 10, 200, 12, 104, 14, 87, 27, 35, 78, 27, 66, 81, 43, 43, 38, 11, 6, 167, 147,
-			147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 32, 2, 172, 3, 220, 10, 248, 12, 156, 14, 87, 27, 80, 74, 27, 66, 75, 43, 43, 38,
-			11, 6, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 186, 0, 137, 1, 132, 3, 13, 10, 159, 12, 139, 14, 164, 26, 40, 49, 22, 61,
-			38, 31, 28, 28, 17, 7, 163, 134, 154, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 112, 1, 132, 3, 236, 9, 148, 12, 136, 14, 144, 26,
-			0, 32, 18, 50, 30, 25, 23, 23, 14, 6, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 255, 0, 5, 0, 1, 0, 168, 0, 4, 2, 92, 3,
-			88, 10, 104, 11, 141, 14, 32, 27, 45, 56, 21, 52, 64, 39, 36, 18, 13, 5, 167, 135, 150, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0,
-			4, 2, 92, 3, 88, 10, 104, 11, 141, 14, 32, 27, 70, 108, 29, 73, 89, 54, 50, 25, 18, 7, 167, 135, 150, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 168, 0, 240, 1, 92, 3, 60, 10, 146, 11, 158, 14, 18, 27, 80, 90, 25, 71, 81, 49, 45, 25, 17, 7, 168, 134, 145, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 176, 0, 56, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 60, 53, 3, 79, 43, 23, 23, 33, 13, 8,
-			177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 56, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 33, 2, 62, 35, 19,
-			19, 27, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 200, 0, 204, 1, 137, 7, 208, 9, 208, 12, 69, 14,
-			104, 28, 45, 29, 21, 46, 46, 49, 37, 28, 9, 6, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 204, 1, 137, 7, 208, 9,
-			208, 12, 69, 14, 104, 28, 60, 84, 36, 79, 78, 83, 63, 48, 15, 11, 184, 108, 128, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 198, 0, 192, 1,
-			44, 7, 195, 9, 213, 12, 91, 14, 62, 28, 80, 71, 31, 76, 61, 74, 57, 44, 14, 10, 183, 109, 149, 120, 120, 120, 185, 107, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			178, 0, 71, 1, 179, 3, 63, 9, 9, 13, 48, 15, 166, 26, 65, 42, 4, 71, 37, 23, 22, 30, 12, 7, 178, 124, 103, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 178, 0, 71, 1, 179, 3, 63, 9, 9, 13, 48, 15, 166, 26, 0, 30, 3, 60, 31, 19, 18, 25, 10, 6, 178, 124,
-			103, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 4, 1, 6, 0, 1, 0, 152, 0, 40, 1, 152, 8, 4, 11, 92, 13, 135, 15, 160, 26, 45, 21, 4, 46,
-			41, 41, 42, 20, 9, 4, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 40, 1, 132, 8, 4, 11, 92, 13, 135, 15, 160, 26,
-			60, 62, 7, 78, 70, 70, 71, 34, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 155, 0, 43, 1, 188, 7, 195, 10, 81, 13,
-			125, 15, 158, 26, 80, 53, 6, 76, 54, 61, 61, 33, 15, 7, 168, 107, 150, 120, 120, 120, 167, 90, 152, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 174, 0, 62, 1, 199, 3,
-			80, 9, 17, 13, 64, 15, 145, 26, 35, 39, 3, 71, 36, 22, 22, 29, 12, 7, 176, 123, 103, 120, 120, 120, 167, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0,
-			64, 1, 152, 3, 56, 9, 12, 13, 60, 15, 144, 26, 40, 37, 2, 67, 33, 19, 19, 28, 11, 7, 177, 125, 102, 120, 120, 120, 177, 125,
-			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			1, 0, 176, 0, 64, 1, 152, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 30, 2, 60, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182,
-			0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 40, 1, 232, 2, 240, 5, 196, 9, 112, 13, 40, 15, 153, 28, 45, 42, 29, 57, 60, 43,
-			35, 26, 9, 5, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 40, 1, 232, 2, 240, 5, 196, 9, 112, 13, 40, 15, 153, 28, 80, 81,
-			41, 79, 83, 60, 48, 37, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 24, 1, 186, 2, 4, 6, 180, 9, 98, 13, 20, 15,
-			71, 28, 80, 64, 35, 71, 72, 53, 43, 34, 12, 7, 210, 133, 142, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 40, 1, 184, 6, 36, 9,
-			228, 12, 96, 14, 100, 25, 45, 42, 19, 61, 41, 35, 38, 35, 9, 12, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 40, 1,
-			184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 26, 15, 48, 33, 28, 30, 28, 7, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 250, 0,
-			5, 0, 1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 45, 28, 23, 46, 45, 48, 37, 27, 8, 6, 202, 118,
-			143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 82, 40, 79, 77, 81, 63, 46,
-			14, 10, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 35, 2, 63, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 73, 38, 75,
-			72, 77, 60, 43, 13, 9, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25,
-			45, 47, 20, 63, 43, 37, 40, 36, 10, 13, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12,
-			96, 14, 100, 25, 0, 30, 16, 50, 34, 29, 32, 29, 8, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 122, 0,
-			192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 45, 49, 28, 59, 69, 41, 43, 30, 17, 6, 170, 133, 135, 122, 124, 128, 197, 131,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 79, 36, 75, 88, 52, 55, 38, 21, 8, 170, 133, 135, 122,
-			124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 80, 64, 32, 68, 79, 47, 49, 35, 19, 7,
-			170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 47, 20, 63, 43, 37,
-			40, 36, 10, 13, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 30,
-			16, 50, 34, 29, 32, 29, 8, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11,
-			52, 13, 0, 15, 160, 26, 45, 45, 6, 66, 59, 59, 60, 29, 14, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 24, 1,
-			232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 80, 72, 10, 83, 73, 74, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			152, 0, 24, 1, 232, 8, 4, 11, 12, 13, 216, 14, 64, 26, 80, 45, 10, 60, 60, 63, 63, 34, 11, 8, 167, 105, 120, 120, 120, 120,
-			167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 47, 20, 63, 43, 37, 40, 36, 10, 13, 165, 90,
-			135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 30, 16, 50, 34, 29, 32, 29,
-			8, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 185, 0, 5, 0, 1, 0, 176, 0, 88, 1, 128, 3, 71, 9, 213, 12, 38, 15, 162, 26,
-			45, 47, 6, 73, 41, 23, 23, 29, 12, 7, 176, 126, 108, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 88, 1, 128, 3, 71, 9, 213, 12,
-			38, 15, 162, 26, 80, 80, 8, 94, 53, 31, 30, 38, 16, 9, 176, 126, 108, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 103, 1, 125, 3,
-			80, 9, 181, 12, 25, 15, 173, 26, 65, 60, 9, 80, 48, 28, 26, 31, 13, 7, 175, 126, 112, 120, 120, 120, 177, 125, 117, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 5, 0, 170, 0,
-			224, 1, 99, 3, 155, 9, 98, 12, 223, 14, 7, 27, 60, 47, 22, 59, 51, 32, 27, 19, 12, 5, 169, 133, 142, 120, 120, 120, 177, 125,
-			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 169, 0, 238, 1, 96, 3, 164, 9, 88, 12, 216, 14, 18, 27, 0, 33, 19, 48, 44, 26, 23, 15, 11, 4, 168, 134, 145, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 80, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 35, 17, 55, 37, 32,
-			35, 32, 8, 11, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 80, 67,
-			24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14,
-			100, 25, 80, 54, 21, 68, 46, 39, 43, 39, 10, 14, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9,
-			228, 12, 246, 14, 95, 27, 45, 38, 25, 52, 61, 36, 38, 27, 15, 5, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 122, 0, 192, 1,
-			240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 0, 27, 21, 44, 52, 30, 32, 23, 12, 5, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 65, 0,
-			4, 0, 5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 20, 8, 14, 26, 25, 12, 12, 12, 7, 4, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 25, 15, 19, 35, 33, 16, 16, 16,
-			9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 20, 15, 19, 35,
-			33, 16, 16, 16, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27,
-			0, 9, 15, 28, 26, 13, 13, 13, 7, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 234, 8, 18, 0, 253, 253, 0, 0, 249, 246, 252, 252,
-			244, 236, 237, 245, 247, 248, 252, 254, 2, 10, 16, 10, 13, 22, 7, 13, 34, 24, 31, 29, 14, 29, 17, 7, 25, 0, 230, 246, 252, 249,
-			247, 228, 229, 242, 246, 232, 229, 240, 238, 245, 1, 252, 215, 217, 5, 13, 18, 35, 17, 20, 45, 18, 244, 251, 254, 0, 17, 252, 225, 245,
-			2, 29, 10, 214, 234, 22, 55, 56, 13, 2, 28, 34, 40, 24, 228, 233, 251, 253, 37, 250, 182, 232, 30, 33, 245, 208, 223, 245, 231, 217,
-			220, 197, 216, 8, 234, 158, 176, 233, 228, 240, 246, 252, 40, 51, 23, 37, 82, 62, 43, 73, 90, 92, 101, 75, 32, 44, 50, 20, 12, 5,
-			239, 216, 208, 226, 230, 167, 151, 213, 223, 225, 233, 220, 234, 10, 42, 34, 4, 37, 71, 36, 31, 49, 246, 226, 15, 248, 229, 238, 211, 238,
-			5, 225, 250, 249, 204, 238, 22, 12, 10, 20, 34, 43, 33, 45, 64, 46, 36, 60, 60, 32, 245, 230, 16, 29, 228, 223, 218, 162, 218, 0,
-			199, 217, 235, 226, 39, 30, 244, 34, 5, 242, 30, 25, 17, 12, 7, 20, 44, 22, 240, 243, 231, 210, 1, 19, 208, 221, 252, 238, 238, 204,
-			185, 246, 246, 221, 32, 35, 237, 3, 41, 40, 25, 10, 22, 70, 103, 70, 50, 74, 68, 49, 38, 12, 251, 22, 14, 238, 7, 220, 153, 181,
-			212, 215, 209, 171, 165, 225, 239, 204, 206, 224, 204, 248, 19, 241, 3, 255, 2, 49, 58, 12, 237, 19, 48, 25, 18, 19, 6, 15, 35, 37,
-			18, 220, 224, 42, 25, 238, 231, 243, 17, 12, 10, 44, 22, 18, 88, 50, 245, 18, 241, 197, 3, 22, 240, 243, 201, 184, 244, 238, 212, 227,
-			237, 14, 55, 32, 222, 248, 95, 72, 228, 196, 223, 255, 10, 6, 231, 253, 40, 4, 18, 47, 220, 226, 65, 61, 34, 33, 13, 18, 41, 23,
-			253, 242, 248, 5, 8, 251, 215, 197, 206, 196, 168, 164, 201, 206, 222, 26, 245, 186, 227, 4, 53, 90, 6, 219, 39, 43, 0, 10, 236, 205,
-			244, 7, 255, 3, 233, 217, 15, 36, 250, 234, 0, 0, 254, 24, 3, 236, 29, 71, 55, 37, 43, 0, 232, 9, 5, 243, 239, 236, 230, 243,
-			242, 232, 245, 247, 215, 190, 215, 222, 221, 253, 255, 240, 5, 23, 29, 61, 48, 3, 29, 31, 4, 28, 14, 8, 13, 241, 15, 33, 1, 246,
-			255, 7, 231, 214, 14, 22, 251, 251, 228, 251, 254, 215, 246, 21, 241, 233, 0, 254, 46, 59, 0, 7, 58, 49, 7, 246, 241, 8, 38, 241,
-			175, 184, 205, 232, 252, 193, 156, 206, 253, 5, 239, 207, 229, 12, 46, 70, 27, 20, 69, 76, 69, 60, 34, 65, 55, 255, 21, 0, 182, 205,
-			252, 254, 238, 207, 186, 212, 7, 238, 214, 221, 204, 244, 46, 40, 6, 243, 253, 39, 33, 242, 229, 232, 1, 0, 224, 2, 253, 217, 253, 13,
-			245, 254, 252, 251, 56, 28, 232, 3, 241, 245, 16, 17, 12, 252, 15, 31, 23, 26, 6, 238, 2, 15, 11, 48, 64, 39, 2, 46, 101, 19,
-			219, 14, 41, 7, 234, 200, 219, 244, 206, 222, 13, 4, 230, 234, 243, 3, 34, 30, 27, 35, 31, 59, 80, 56, 49, 51, 26, 9, 3, 7,
-			242, 196, 216, 1, 210, 193, 193, 161, 224, 5, 177, 158, 221, 243, 1, 246, 215, 9, 46, 16, 33, 51, 35, 55, 36, 255, 22, 20, 216, 182,
-			213, 220, 208, 214, 214, 202, 218, 252, 1, 253, 254, 252, 21, 38, 254, 15, 66, 43, 62, 105, 73, 65, 77, 58, 49, 40, 241, 232, 34, 239,
-			180, 237, 234, 189, 234, 254, 226, 242, 254, 5, 53, 61, 3, 3, 62, 61, 37, 11, 249, 0, 10, 240, 197, 221, 243, 204, 224, 30, 226, 211,
-			35, 251, 234, 10, 242, 37, 49, 204, 13, 85, 4, 7, 45, 250, 238, 9, 244, 247, 9, 6, 32, 42, 1, 238, 252, 252, 248, 25, 5, 182,
-			212, 49, 41, 239, 235, 239, 4, 29, 225, 199, 227, 189, 208, 7, 219, 214, 11, 241, 217, 3, 49, 38, 16, 21, 55, 97, 48, 2, 43, 26,
-			198, 221, 4, 198, 203, 235, 195, 231, 237, 180, 238, 34, 5, 10, 21, 53, 108, 80, 46, 52, 46, 46, 35, 17, 13, 242, 230, 251, 206, 155,
-			190, 214, 187, 208, 217, 195, 11, 17, 231, 33, 40, 5, 26, 21, 24, 43, 238, 229, 22, 14, 238, 200, 239, 34, 34, 34, 251, 205, 234, 56,
-			35, 231, 19, 53, 37, 33, 251, 244, 51, 26, 230, 3, 233, 209, 1, 247, 231, 0, 216, 167, 218, 228, 191, 221, 231, 219, 14, 5, 219, 26,
-			29, 250, 44, 61, 19, 252, 8, 33, 62, 46, 0, 246, 9, 22, 5, 242, 236, 231, 228, 243, 227, 219, 6, 11, 30, 62, 17, 40, 106, 70,
-			93, 104, 14, 17, 55, 30, 242, 196, 183, 221, 233, 176, 136, 156, 192, 179, 183, 184, 158, 189, 227, 245, 244, 251, 22, 56, 66, 39, 2, 6,
-			28, 248, 237, 255, 248, 231, 209, 220, 222, 236, 15, 7, 8, 16, 6, 33, 47, 34, 53, 59, 40, 42, 42, 47, 39, 0, 7, 2, 220, 207,
-			178, 154, 195, 216, 179, 178, 193, 215, 26, 10, 235, 58, 67, 16, 71, 93, 29, 9, 24, 48, 54, 11, 245, 23, 33, 1, 216, 223, 25, 37,
-			66, 67, 248, 226, 13, 28, 16, 9, 225, 227, 7, 225, 229, 3, 220, 229, 0, 251, 37, 14, 225, 19, 21, 230, 226, 242, 7, 16, 254, 5,
-			14, 242, 244, 19, 26, 13, 252, 10, 14, 6, 25, 6, 232, 255, 18, 244, 233, 17, 31, 6, 255, 22, 27, 241, 203, 229, 8, 251, 226, 238,
-			6, 241, 239, 9, 228, 249, 61, 9, 226, 33, 30, 1, 42, 6, 242, 44, 15, 251, 34, 255, 250, 27, 245, 227, 9, 33, 17, 28, 9, 199,
-			215, 15, 243, 205, 208, 190, 211, 8, 248, 207, 240, 252, 226, 7, 8, 237, 50, 74, 47, 87, 54, 10, 65, 46, 253, 239, 243, 0, 250, 0,
-			230, 225, 238, 220, 254, 22, 200, 204, 22, 243, 1, 34, 232, 231, 40, 38, 251, 17, 8, 2, 79, 45, 224, 28, 56, 17, 32, 245, 187, 244,
-			42, 0, 219, 239, 242, 233, 242, 220, 205, 244, 236, 215, 255, 0, 237, 12, 37, 46, 55, 53, 58, 55, 27, 21, 30, 30, 36, 19, 248, 249,
-			235, 231, 253, 207, 161, 208, 242, 221, 210, 236, 12, 9, 227, 216, 7, 6, 243, 249, 251, 6, 18, 47, 46, 17, 30, 21, 6, 71, 96, 46,
-			50, 35, 1, 16, 231, 200, 239, 252, 252, 3, 225, 184, 180, 190, 211, 232, 225, 221, 1, 22, 29, 22, 255, 28, 46, 33, 59, 48, 19, 36,
-			17, 244, 254, 237, 236, 248, 240, 247, 228, 212, 189, 164, 178, 222, 6, 0, 254, 19, 46, 67, 55, 4, 251, 38, 46, 44, 58, 40, 19, 12,
-			2, 10, 14, 234, 214, 243, 228, 180, 173, 186, 210, 243, 221, 192, 232, 248, 246, 13, 0, 225, 9, 59, 45, 35, 29, 18, 24, 32, 26, 30,
-			54, 42, 2, 11, 23, 4, 1, 10, 246, 218, 249, 240, 198, 217, 235, 244, 250, 234, 231, 3, 20, 10, 24, 35, 7, 0, 24, 245, 215, 228,
-			228, 223, 209, 219, 220, 206, 211, 225, 215, 192, 215, 245, 248, 9, 27, 17, 30, 64, 53, 52, 74, 80, 94, 86, 51, 41, 27, 241, 221, 245,
-			233, 221, 10, 2, 225, 244, 234, 216, 1, 254, 211, 10, 62, 12, 237, 253, 254, 12, 44, 15, 249, 27, 9, 241, 247, 213, 193, 230, 242, 214,
-			216, 2, 31, 22, 7, 237, 242, 37, 51, 29, 27, 27, 9, 32, 18, 205, 215, 254, 253, 3, 247, 238, 1, 8, 1, 242, 215, 227, 16, 15,
-			3, 251, 250, 15, 246, 245, 18, 3, 12, 35, 241, 208, 254, 249, 223, 227, 214, 223, 252, 4, 6, 10, 251, 247, 25, 28, 253, 10, 35, 21,
-			22, 40, 8, 247, 16, 19, 4, 5, 237, 218, 7, 6, 208, 215, 230, 231, 1, 248, 228, 253, 254, 231, 0, 11, 244, 3, 40, 25, 7, 21,
-			4, 0, 23, 1, 0, 16, 7, 25, 13, 241, 253, 245, 217, 220, 232, 253, 12, 252, 237, 19, 52, 19, 18, 41, 18, 37, 64, 22, 4, 1,
-			243, 3, 23, 17, 3, 6, 15, 0, 9, 13, 223, 252, 31, 5, 17, 26, 245, 248, 16, 7, 20, 40, 3, 237, 31, 25, 232, 223, 199, 210,
-			243, 210, 204, 238, 229, 232, 245, 246, 244, 251, 19, 42, 69, 72, 16, 243, 24, 45, 15, 237, 228, 233, 246, 240, 214, 227, 254, 247, 244, 235,
-			224, 250, 18, 13, 254, 233, 243, 2, 16, 44, 19, 11, 44, 53, 37, 15, 17, 22, 19, 34, 27, 249, 251, 16, 24, 255, 231, 249, 253, 3,
-			255, 223, 245, 14, 249, 214, 222, 247, 248, 2, 251, 236, 233, 227, 238, 17, 18, 238, 248, 4, 11, 36, 15, 234, 16, 56, 40, 45, 28, 1,
-			33, 18, 227, 233, 244, 242, 4, 8, 251, 254, 250, 248, 7, 11, 10, 14, 5, 5, 22, 26, 5, 255, 249, 229, 231, 255, 243, 212, 234, 243,
-			198, 216, 1, 243, 236, 247, 247, 250, 238, 238, 25, 33, 23, 28, 47, 52, 47, 72, 45, 249, 247, 6, 14, 14, 8, 241, 237, 247, 251, 243,
-			221, 210, 226, 14, 12, 232, 239, 4, 12, 8, 244, 225, 246, 6, 246, 242, 242, 240, 246, 243, 213, 224, 16, 255, 248, 6, 247, 8, 31, 10,
-			16, 38, 29, 42, 50, 39, 37, 23, 9, 249, 1, 28, 2, 243, 237, 208, 223, 241, 228, 230, 228, 217, 235, 236, 218, 239, 254, 223, 229, 12,
-			9, 13, 29, 27, 40, 40, 44, 48, 13, 239, 245, 18, 27, 253, 222, 226, 242, 231, 221, 211, 200, 228, 237, 211, 205, 213, 241, 22, 35, 36,
-			34, 46, 61, 57, 52, 35, 30, 48, 39, 25, 19, 239, 222, 238, 235, 203, 189, 192, 187, 204, 228, 210, 205, 234, 0, 27, 25, 5, 24, 34,
-			25, 32, 27, 17, 32, 50, 35, 9, 14, 13, 249, 245, 244, 248, 8, 245, 227, 246, 239, 229, 252, 238, 206, 229, 248, 244, 9, 12, 255, 15,
-			24, 14, 22, 29, 5, 12, 35, 12, 9, 10, 236, 234, 250, 225, 201, 213, 204, 186, 203, 220, 220, 240, 242, 238, 252, 4, 18, 26, 18, 17,
-			52, 63, 37, 38, 67, 58, 23, 30, 15, 239, 252, 255, 237, 224, 204, 215, 241, 213, 199, 221, 222, 223, 254, 8, 248, 22, 52, 49, 61, 56,
-			49, 73, 76, 60, 77, 52, 15, 34, 29, 15, 13, 232, 209, 229, 219, 184, 189, 219, 208, 192, 223, 243, 243, 5, 11, 5, 22, 27, 34, 71,
-			63, 33, 60, 63, 20, 18, 23, 255, 0, 8, 244, 245, 5, 237, 215, 222, 208, 213, 220, 177, 174, 219, 222, 218, 235, 219, 239, 38, 47, 45,
-			50, 23, 17, 61, 46, 3, 6, 245, 244, 8, 224, 186, 203, 206, 208, 219, 188, 188, 241, 9, 15, 15, 7, 7, 40, 73, 66, 67, 70, 53,
-			77, 90, 38, 19, 28, 253, 0, 19, 230, 207, 237, 241, 231, 221, 191, 207, 1, 1, 245, 255, 250, 7, 41, 35, 35, 36, 27, 57, 80, 51,
-			20, 19, 26, 33, 8, 219, 229, 7, 253, 236, 216, 194, 213, 231, 215, 218, 239, 234, 247, 6, 248, 252, 8, 7, 26, 44, 30, 26, 33, 36,
-			47, 57, 21, 240, 246, 247, 247, 249, 229, 208, 225, 237, 221, 220, 225, 230, 246, 11, 17, 20, 40, 35, 49, 80, 51, 34, 56, 40, 14, 28,
-			1, 215, 231, 230, 217, 211, 193, 201, 218, 203, 195, 220, 233, 232, 250, 3, 0, 7, 17, 17, 14, 10, 26, 49, 45, 34, 37, 41, 27, 9,
-			8, 16, 15, 2, 242, 233, 241, 244, 234, 230, 245, 251, 255, 21, 17, 0, 23, 45, 25, 7, 10, 21, 24, 23, 19, 4, 253, 0, 249, 227,
-			218, 225, 234, 225, 219, 218, 194, 201, 224, 223, 230, 233, 222, 242, 12, 251, 245, 10, 8, 16, 31, 8, 5, 45, 34, 252, 13, 10, 240, 247,
-			251, 244, 244, 247, 245, 0, 1, 240, 5, 27, 8, 16, 38, 20, 20, 22, 248, 252, 19, 9, 5, 6, 231, 221, 236, 226, 214, 221, 221, 223,
-			242, 241, 231, 243, 245, 242, 7, 19, 1, 0, 8, 252, 15, 34, 7, 15, 30, 14, 28, 35, 3, 7, 23, 1, 8, 28, 2, 251, 8, 242,
-			248, 15, 239, 229, 255, 239, 238, 11, 1, 253, 13, 8, 6, 6, 234, 223, 251, 253, 236, 250, 0, 249, 254, 248, 241, 249, 242, 247, 12, 0,
-			250, 14, 14, 8, 10, 17, 28, 39, 22, 0, 14, 21, 1, 3, 11, 251, 255, 5, 249, 1, 5, 238, 241, 1, 237, 228, 238, 244, 7, 254,
-			229, 243, 5, 5, 249, 254, 14, 23, 28, 21, 8, 252, 251, 4, 2, 247, 244, 248, 250, 251, 242, 238, 250, 3, 2, 253, 252, 248, 255, 24,
-			13, 247, 254, 7, 13, 6, 246, 248, 255, 255, 247, 238, 245, 249, 253, 0, 249, 254, 6, 2, 3, 5, 1, 4, 0, 0, 185, 0, 4, 0,
-			1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 45, 46, 22, 50, 61, 38, 34, 31, 9, 5, 167, 157, 147, 120,
-			120, 120, 167, 152, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 60, 88, 31, 70, 84, 52, 47, 43, 12, 7,
-			167, 157, 147, 120, 120, 120, 167, 152, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 80, 79, 29, 66, 79, 49,
-			45, 41, 11, 7, 167, 157, 147, 120, 120, 120, 167, 152, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 250, 0, 160, 2, 76, 4, 246, 10, 188, 12, 92, 14, 87, 27, 0, 42,
-			22, 50, 60, 37, 34, 31, 8, 5, 167, 159, 147, 120, 120, 120, 167, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 200, 0, 4, 0, 1, 0, 191, 0, 196, 1, 88, 7, 216, 9,
-			248, 12, 123, 14, 185, 27, 50, 42, 27, 55, 55, 57, 48, 34, 11, 7, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 191, 0, 196, 1,
-			88, 7, 216, 9, 248, 12, 123, 14, 185, 27, 80, 80, 37, 76, 76, 79, 65, 47, 16, 10, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			191, 0, 196, 1, 88, 7, 216, 9, 248, 12, 123, 14, 185, 27, 70, 67, 34, 69, 70, 73, 60, 43, 15, 9, 178, 107, 129, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 191, 0, 196, 1, 88, 7, 216, 9, 248, 12, 123, 14, 185, 27, 0, 30, 23, 47, 47, 49, 40, 29, 10, 6, 178, 107,
-			129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 200, 0, 80, 2, 44, 6, 176, 9, 52, 13, 7, 15, 8, 28, 50, 48, 31, 58,
-			68, 47, 38, 28, 12, 5, 221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 80, 2, 44, 6, 176, 9, 52, 13, 7, 15, 8, 28,
-			80, 83, 41, 76, 90, 62, 51, 38, 17, 7, 221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 80, 2, 44, 6, 156, 9, 52, 13,
-			7, 15, 8, 28, 40, 63, 36, 66, 78, 54, 44, 33, 14, 6, 221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 80, 2, 44, 6,
-			156, 9, 52, 13, 7, 15, 8, 28, 0, 33, 27, 50, 54, 40, 33, 24, 11, 4, 221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 160, 0, 4, 0,
-			1, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 42, 7, 61, 51, 47, 51, 23, 15, 7, 182, 120, 133, 133,
-			142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 60, 54, 8, 69, 58, 53, 58, 26, 17, 8,
-			182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 47, 14, 61, 47, 46,
-			49, 20, 15, 7, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 0, 34,
-			12, 53, 41, 40, 42, 17, 13, 6, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 33, 0, 152, 0, 8, 1, 36, 9, 64, 11,
-			132, 13, 100, 15, 160, 26, 50, 43, 8, 65, 53, 53, 53, 28, 13, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 8, 1,
-			36, 9, 64, 11, 132, 13, 100, 15, 160, 26, 75, 66, 10, 80, 65, 65, 65, 35, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			152, 0, 8, 1, 36, 9, 84, 11, 132, 13, 100, 15, 160, 26, 70, 54, 9, 73, 59, 59, 59, 31, 15, 7, 167, 105, 120, 120, 120, 120,
-			167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 118, 0, 240, 0, 35, 9, 44, 11, 72, 13, 60, 15, 112, 26, 0, 26, 7, 48, 42, 41, 42, 23, 10, 6, 171, 105,
-			112, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26, 45, 32, 25, 51,
-			51, 44, 38, 32, 17, 6, 168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26,
-			75, 46, 30, 60, 60, 53, 45, 38, 20, 8, 168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12,
-			100, 15, 90, 26, 75, 41, 28, 57, 57, 50, 43, 36, 19, 7, 168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 120, 0, 80, 1, 160, 5,
-			156, 9, 228, 12, 100, 15, 90, 26, 0, 32, 25, 51, 51, 44, 38, 32, 17, 6, 168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 120, 0, 4, 0,
-			1, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 35, 6, 61, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 59, 8, 80, 48, 28, 28, 40, 16, 10,
-			177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 36, 6, 62, 37, 21,
-			21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 23,
-			5, 50, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 172, 0, 40, 1, 228, 2, 96, 9,
-			12, 13, 60, 15, 144, 26, 45, 40, 3, 67, 48, 19, 25, 28, 9, 8, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 172, 0, 40, 1,
-			228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 70, 63, 4, 84, 60, 24, 32, 36, 12, 10, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			172, 0, 40, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 60, 56, 3, 79, 57, 22, 30, 34, 11, 9, 177, 117, 100, 120, 120, 120,
-			177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 172, 0, 40, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 0, 38, 3, 65, 46, 18, 24, 28, 9, 7, 177, 117,
-			100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 125, 0, 4, 0, 1, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26, 45, 43, 6, 69,
-			44, 22, 25, 25, 12, 7, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26,
-			80, 70, 8, 88, 56, 28, 32, 32, 16, 10, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12,
-			60, 15, 144, 26, 70, 57, 7, 79, 50, 25, 28, 28, 14, 9, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 104, 1, 92, 3,
-			56, 9, 108, 12, 60, 15, 144, 26, 0, 38, 5, 65, 41, 20, 23, 23, 11, 7, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 165, 0, 4, 0,
-			1, 0, 180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 45, 34, 24, 51, 51, 36, 36, 30, 15, 7, 170, 125, 145, 120,
-			120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 70, 60, 32, 68, 68, 48, 48, 40, 20, 10,
-			170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 50, 54, 30, 64, 64, 45,
-			45, 38, 19, 9, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 0, 29,
-			22, 47, 47, 33, 33, 28, 14, 7, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 116, 0, 208, 1, 116, 4, 80, 10,
-			48, 12, 196, 14, 96, 27, 45, 40, 23, 57, 57, 37, 34, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 208, 1,
-			116, 4, 80, 10, 48, 12, 196, 14, 96, 27, 70, 79, 32, 80, 80, 52, 48, 44, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			116, 0, 208, 1, 116, 4, 80, 10, 48, 12, 196, 14, 96, 27, 60, 64, 28, 72, 72, 46, 43, 39, 20, 7, 167, 150, 135, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 116, 0, 208, 1, 116, 4, 80, 10, 48, 12, 196, 14, 96, 27, 0, 35, 21, 53, 53, 34, 32, 29, 15, 5, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 0, 0, 5, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 40, 44, 29, 57,
-			69, 39, 40, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27,
-			66, 97, 43, 84, 102, 57, 60, 46, 24, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 124, 0, 244, 1, 40, 6, 172, 9, 232, 12,
-			126, 14, 128, 27, 94, 50, 32, 60, 70, 44, 44, 33, 16, 6, 167, 138, 147, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1, 152, 8,
-			140, 10, 152, 13, 166, 14, 32, 28, 40, 40, 31, 54, 47, 57, 44, 32, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0,
-			99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 34, 31, 49, 49, 45, 42, 33, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			175, 8, 35, 0, 10, 234, 191, 13, 42, 250, 10, 243, 236, 16, 5, 2, 0, 226, 210, 25, 80, 2, 180, 13, 43, 252, 13, 226, 242, 255,
-			251, 50, 248, 205, 34, 7, 237, 34, 235, 12, 251, 235, 63, 0, 246, 239, 1, 49, 228, 236, 20, 211, 14, 67, 204, 220, 28, 253, 0, 12,
-			231, 222, 16, 35, 16, 227, 216, 47, 50, 231, 255, 236, 0, 24, 232, 29, 26, 225, 208, 57, 84, 205, 220, 5, 40, 27, 220, 19, 14, 228,
-			26, 30, 250, 255, 4, 230, 244, 60, 7, 184, 230, 76, 37, 188, 252, 20, 235, 3, 42, 7, 221, 0, 3, 19, 45, 234, 227, 8, 26, 52,
-			220, 232, 34, 216, 6, 42, 7, 216, 192, 39, 57, 236, 222, 8, 10, 249, 20, 241, 0, 5, 230, 62, 23, 235, 213, 249, 95, 226, 213, 34,
-			6, 227, 223, 49, 34, 195, 248, 59, 236, 236, 38, 17, 231, 253, 23, 13, 246, 226, 28, 212, 4, 66, 199, 10, 250, 241, 56, 231, 224, 35,
-			251, 228, 20, 12, 6, 247, 236, 21, 32, 244, 228, 0, 11, 8, 0, 12, 18, 8, 233, 251, 29, 244, 242, 25, 1, 11, 6, 219, 58, 11,
-			193, 255, 38, 27, 178, 22, 25, 194, 42, 18, 221, 230, 9, 10, 244, 243, 2, 11, 254, 0, 229, 250, 255, 9, 28, 226, 226, 48, 40, 209,
-			12, 3, 249, 57, 193, 33, 63, 167, 62, 22, 229, 65, 179, 0, 103, 215, 191, 51, 39, 177, 3, 47, 245, 250, 220, 7, 44, 219, 233, 11,
-			206, 25, 8, 162, 49, 33, 179, 22, 33, 214, 242, 11, 245, 252, 32, 32, 212, 27, 80, 181, 225, 71, 249, 232, 70, 10, 204, 50, 239, 238,
-			42, 205, 227, 230, 23, 65, 165, 245, 78, 170, 245, 45, 176, 35, 35, 184, 81, 24, 182, 42, 242, 242, 39, 230, 231, 11, 12, 241, 5, 28,
-			251, 222, 20, 32, 212, 250, 35, 1, 231, 29, 32, 174, 253, 60, 222, 244, 14, 244, 0, 254, 8, 19, 245, 241, 242, 16, 18, 211, 1, 23,
-			252, 26, 244, 221, 14, 22, 225, 224, 17, 9, 242, 7, 21, 242, 250, 25, 252, 231, 30, 252, 213, 66, 20, 227, 254, 249, 40, 7, 207, 217,
-			55, 32, 209, 227, 249, 66, 210, 193, 91, 214, 188, 37, 8, 22, 240, 233, 17, 243, 21, 0, 231, 245, 12, 54, 228, 241, 27, 204, 246, 60,
-			233, 222, 3, 1, 41, 232, 238, 42, 249, 226, 11, 25, 221, 26, 14, 217, 48, 23, 206, 225, 54, 248, 185, 48, 28, 216, 251, 244, 12, 24,
-			230, 2, 10, 20, 251, 238, 26, 238, 34, 228, 186, 105, 1, 145, 33, 71, 221, 195, 32, 24, 191, 20, 31, 197, 10, 33, 7, 229, 16, 42,
-			179, 30, 95, 213, 240, 11, 29, 15, 204, 56, 251, 165, 80, 43, 199, 248, 12, 247, 29, 31, 178, 240, 36, 245, 25, 225, 248, 59, 225, 207,
-			3, 46, 214, 198, 65, 17, 245, 242, 6, 255, 249, 49, 196, 254, 67, 220, 5, 14, 243, 55, 247, 177, 64, 10, 184, 47, 0, 221, 53, 250,
-			216, 18, 245, 255, 243, 232, 41, 22, 225, 250, 38, 251, 241, 217, 38, 89, 154, 236, 108, 244, 195, 249, 47, 22, 229, 218, 19, 49, 191, 216,
-			81, 247, 231, 21, 220, 0, 46, 10, 236, 6, 242, 229, 30, 228, 230, 59, 233, 231, 31, 241, 10, 212, 246, 99, 224, 225, 37, 238, 24, 28,
-			226, 33, 21, 202, 6, 51, 3, 206, 17, 52, 224, 233, 245, 19, 12, 160, 46, 104, 168, 230, 252, 2, 53, 189, 11, 23, 218, 41, 249, 4,
-			14, 201, 13, 60, 21, 217, 226, 56, 11, 10, 42, 225, 209, 11, 69, 220, 201, 58, 19, 231, 241, 40, 20, 163, 230, 123, 17, 163, 16, 40,
-			237, 240, 27, 4, 208, 29, 28, 207, 19, 27, 199, 242, 84, 9, 163, 25, 25, 225, 43, 250, 11, 3, 194, 68, 52, 192, 11, 24, 246, 7,
-			224, 14, 17, 197, 35, 54, 213, 4, 13, 215, 253, 33, 31, 251, 226, 243, 75, 15, 142, 24, 38, 236, 255, 249, 69, 218, 187, 111, 26, 166,
-			243, 10, 251, 14, 12, 214, 9, 93, 204, 176, 66, 21, 191, 25, 68, 210, 218, 52, 12, 224, 28, 10, 237, 22, 252, 8, 250, 5, 36, 232,
-			247, 255, 21, 251, 201, 48, 31, 201, 234, 21, 32, 241, 212, 247, 48, 28, 200, 239, 20, 22, 18, 193, 2, 81, 200, 209, 120, 3, 144, 69,
-			52, 179, 12, 12, 254, 13, 199, 49, 56, 163, 255, 76, 243, 211, 247, 66, 38, 170, 242, 68, 43, 204, 184, 72, 32, 230, 224, 46, 86, 146,
-			218, 126, 12, 165, 0, 53, 223, 5, 42, 220, 230, 31, 254, 230, 19, 1, 230, 19, 5, 254, 0, 243, 15, 231, 21, 33, 207, 0, 251, 237,
-			29, 228, 234, 23, 226, 27, 32, 231, 1, 255, 42, 252, 203, 34, 48, 255, 252, 1, 26, 10, 214, 22, 17, 230, 221, 3, 65, 235, 214, 11,
-			15, 252, 246, 12, 248, 247, 17, 255, 253, 253, 255, 12, 220, 23, 15, 214, 26, 252, 24, 2, 226, 34, 223, 254, 39, 216, 248, 7, 8, 20,
-			231, 248, 8, 25, 246, 255, 42, 221, 247, 255, 21, 35, 201, 4, 17, 239, 24, 250, 20, 3, 217, 69, 243, 222, 28, 228, 48, 246, 220, 26,
-			239, 226, 228, 36, 27, 204, 228, 25, 14, 252, 0, 255, 7, 1, 255, 45, 232, 191, 66, 14, 202, 21, 29, 223, 240, 74, 252, 196, 24, 18,
-			229, 17, 26, 250, 251, 243, 44, 17, 197, 18, 55, 214, 237, 35, 249, 6, 246, 14, 253, 213, 62, 6, 172, 40, 65, 194, 232, 44, 1, 196,
-			234, 61, 233, 238, 43, 233, 248, 13, 0, 2, 247, 22, 250, 240, 45, 236, 231, 28, 5, 253, 240, 244, 15, 50, 249, 213, 74, 16, 197, 26,
-			1, 10, 233, 232, 75, 221, 7, 18, 204, 70, 227, 233, 64, 226, 238, 1, 7, 13, 245, 240, 7, 16, 209, 212, 23, 251, 251, 18, 222, 18,
-			19, 220, 10, 4, 18, 248, 253, 40, 238, 246, 33, 37, 239, 251, 23, 237, 14, 9, 233, 19, 44, 217, 6, 41, 189, 1, 4, 33, 255, 146,
-			74, 37, 174, 1, 16, 1, 246, 1, 19, 237, 233, 39, 253, 226, 32, 20, 225, 222, 82, 8, 145, 56, 61, 231, 236, 243, 56, 232, 229, 28,
-			246, 66, 236, 200, 49, 252, 246, 253, 236, 13, 33, 201, 189, 103, 8, 140, 31, 48, 234, 243, 10, 32, 9, 226, 22, 60, 210, 214, 47, 23,
-			237, 241, 47, 12, 216, 24, 35, 236, 232, 49, 10, 192, 20, 42, 226, 236, 41, 16, 192, 230, 46, 18, 208, 217, 53, 22, 185, 3, 61, 241,
-			238, 7, 9, 5, 223, 0, 245, 36, 54, 175, 11, 40, 232, 6, 241, 37, 249, 216, 80, 254, 197, 36, 16, 15, 247, 228, 9, 1, 25, 216,
-			235, 81, 233, 208, 52, 21, 224, 255, 47, 6, 214, 23, 14, 221, 244, 23, 21, 245, 250, 237, 245, 16, 12, 229, 235, 44, 243, 229, 58, 214,
-			192, 88, 238, 187, 34, 34, 0, 208, 69, 27, 181, 43, 238, 231, 30, 238, 18, 245, 1, 41, 217, 16, 254, 201, 74, 0, 191, 41, 12, 250,
-			2, 250, 33, 11, 242, 223, 18, 45, 210, 241, 31, 26, 209, 204, 41, 233, 241, 26, 219, 14, 40, 205, 240, 45, 12, 224, 237, 54, 9, 210,
-			223, 48, 47, 170, 253, 56, 255, 5, 223, 248, 54, 6, 214, 4, 31, 0, 224, 245, 44, 241, 231, 37, 0, 1, 247, 240, 23, 5, 237, 3,
-			19, 215, 4, 6, 217, 42, 253, 219, 8, 39, 249, 198, 48, 41, 204, 18, 48, 211, 249, 22, 4, 245, 229, 78, 0, 176, 31, 53, 9, 200,
-			241, 64, 238, 210, 60, 26, 210, 21, 32, 241, 245, 19, 235, 241, 62, 209, 189, 50, 252, 231, 244, 246, 29, 245, 252, 16, 2, 2, 254, 10,
-			249, 30, 252, 214, 43, 0, 2, 18, 229, 1, 23, 26, 7, 230, 8, 60, 179, 231, 92, 189, 244, 7, 235, 61, 232, 215, 42, 19, 205, 4,
-			49, 221, 224, 59, 10, 217, 9, 243, 7, 3, 233, 3, 12, 9, 234, 8, 0, 12, 22, 190, 29, 37, 189, 31, 10, 233, 60, 237, 227, 24,
-			232, 23, 3, 223, 32, 252, 28, 7, 221, 61, 9, 241, 244, 37, 43, 159, 9, 73, 236, 205, 254, 50, 220, 220, 37, 249, 217, 11, 41, 238,
-			220, 41, 254, 253, 25, 212, 35, 246, 219, 57, 245, 238, 254, 0, 3, 25, 251, 203, 48, 15, 211, 19, 45, 255, 217, 21, 32, 246, 17, 10,
-			230, 40, 12, 218, 20, 0, 49, 6, 216, 36, 191, 0, 40, 182, 7, 7, 255, 18, 229, 6, 9, 230, 243, 58, 4, 146, 38, 73, 196, 244,
-			23, 242, 224, 28, 21, 213, 11, 13, 3, 10, 246, 16, 10, 247, 6, 37, 29, 233, 2, 28, 237, 0, 29, 1, 206, 8, 62, 211, 246, 18,
-			204, 249, 19, 12, 0, 220, 0, 24, 246, 9, 246, 226, 248, 23, 24, 220, 11, 7, 248, 33, 227, 235, 244, 223, 33, 42, 236, 197, 4, 78,
-			6, 230, 248, 247, 22, 39, 254, 217, 28, 33, 248, 0, 8, 6, 225, 244, 77, 40, 147, 12, 57, 205, 41, 3, 248, 228, 215, 78, 253, 211,
-			236, 0, 38, 219, 5, 36, 164, 240, 83, 228, 187, 236, 44, 30, 205, 43, 37, 182, 36, 46, 227, 255, 25, 250, 218, 66, 29, 173, 250, 73,
-			11, 213, 246, 23, 43, 196, 5, 63, 186, 7, 250, 247, 40, 213, 255, 6, 232, 53, 2, 174, 16, 35, 229, 218, 15, 15, 202, 32, 30, 240,
-			6, 247, 17, 249, 18, 14, 205, 23, 21, 253, 15, 252, 24, 4, 229, 245, 28, 6, 200, 23, 21, 249, 16, 219, 14, 43, 230, 239, 5, 234,
-			12, 33, 249, 234, 249, 51, 224, 203, 56, 231, 231, 46, 235, 211, 30, 21, 212, 10, 22, 0, 246, 216, 39, 17, 206, 53, 13, 214, 61, 246,
-			217, 21, 247, 9, 253, 4, 26, 242, 218, 41, 61, 167, 248, 68, 190, 222, 43, 243, 206, 34, 51, 220, 222, 24, 30, 239, 223, 39, 9, 217,
-			44, 0, 240, 32, 15, 240, 217, 47, 246, 199, 33, 253, 16, 12, 244, 26, 235, 9, 11, 212, 7, 235, 0, 50, 1, 231, 3, 66, 212, 191,
-			29, 253, 11, 252, 8, 20, 248, 35, 5, 203, 6, 36, 211, 251, 59, 248, 243, 34, 1, 13, 12, 212, 54, 5, 190, 69, 248, 229, 53, 218,
-			3, 33, 200, 0, 15, 203, 1, 31, 220, 245, 70, 230, 193, 72, 8, 233, 23, 206, 6, 45, 210, 219, 63, 44, 226, 246, 0, 48, 16, 203,
-			39, 6, 235, 47, 221, 254, 59, 203, 0, 53, 222, 255, 4, 244, 44, 2, 225, 19, 1, 249, 23, 219, 222, 27, 242, 245, 2, 8, 28, 237,
-			235, 247, 23, 248, 167, 52, 74, 177, 252, 65, 244, 248, 0, 1, 29, 234, 241, 27, 16, 28, 247, 245, 59, 243, 227, 29, 214, 13, 36, 223,
-			24, 0, 227, 14, 255, 252, 255, 242, 254, 1, 8, 16, 232, 12, 40, 223, 5, 10, 230, 14, 229, 10, 43, 222, 243, 254, 3, 2, 243, 7,
-			242, 27, 248, 217, 46, 7, 23, 11, 213, 28, 33, 237, 237, 38, 14, 242, 24, 246, 232, 21, 242, 226, 51, 1, 198, 248, 41, 1, 206, 14,
-			28, 249, 207, 240, 57, 242, 204, 55, 31, 201, 24, 248, 245, 45, 233, 225, 21, 28, 215, 0, 21, 243, 9, 228, 13, 38, 240, 3, 8, 13,
-			34, 246, 9, 22, 225, 11, 43, 208, 222, 70, 255, 201, 0, 43, 226, 209, 53, 228, 226, 34, 250, 239, 241, 14, 9, 239, 237, 253, 36, 2,
-			242, 24, 253, 31, 14, 248, 18, 244, 29, 234, 239, 32, 15, 0, 200, 10, 47, 215, 205, 51, 251, 204, 27, 1, 254, 18, 21, 235, 8, 29,
-			212, 252, 16, 2, 18, 239, 250, 41, 227, 238, 43, 241, 241, 31, 247, 212, 48, 11, 173, 25, 61, 213, 209, 5, 31, 15, 214, 13, 40, 242,
-			249, 10, 14, 237, 252, 20, 4, 255, 236, 32, 10, 208, 51, 14, 219, 28, 223, 231, 64, 250, 209, 49, 5, 234, 26, 247, 2, 4, 248, 19,
-			19, 216, 247, 19, 219, 0, 18, 2, 238, 0, 8, 243, 18, 6, 229, 242, 24, 245, 223, 9, 19, 8, 243, 8, 30, 237, 228, 36, 17, 230,
-			9, 17, 250, 255, 242, 5, 11, 219, 23, 21, 202, 255, 46, 10, 231, 242, 46, 248, 163, 62, 48, 167, 245, 52, 32, 201, 237, 61, 232, 223,
-			31, 246, 254, 244, 216, 57, 0, 236, 28, 211, 2, 34, 226, 241, 12, 10, 12, 249, 10, 10, 227, 11, 25, 7, 7, 218, 18, 60, 200, 252,
-			59, 214, 1, 47, 229, 237, 4, 0, 58, 0, 3, 0, 5, 0, 116, 0, 232, 0, 52, 8, 140, 10, 16, 14, 104, 16, 124, 21, 58, 14,
-			25, 15, 10, 10, 10, 10, 5, 5, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 52, 8, 140, 10, 16, 14, 104, 16,
-			124, 21, 0, 14, 25, 15, 10, 10, 10, 10, 5, 5, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 232, 0, 52, 8, 140, 10,
-			16, 14, 104, 16, 124, 21, 0, 14, 25, 15, 10, 5, 5, 5, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 14, 4, 30, 0, 1, 1,
-			1, 248, 1, 254, 243, 4, 9, 5, 0, 4, 5, 15, 15, 16, 12, 15, 146, 182, 22, 55, 66, 236, 245, 250, 3, 18, 227, 255, 36, 231,
-			7, 17, 254, 15, 253, 241, 243, 232, 4, 21, 231, 9, 10, 252, 15, 8, 14, 0, 247, 7, 242, 253, 24, 226, 220, 17, 39, 31, 248, 243,
-			232, 226, 250, 21, 15, 13, 249, 7, 13, 6, 23, 216, 228, 252, 24, 10, 5, 33, 223, 222, 250, 32, 253, 10, 17, 211, 15, 252, 2, 252,
-			20, 3, 20, 19, 28, 181, 196, 10, 7, 68, 6, 9, 233, 236, 231, 40, 253, 237, 14, 231, 50, 247, 17, 234, 225, 38, 20, 2, 254, 255,
-			222, 192, 243, 67, 47, 34, 247, 192, 0, 43, 230, 239, 16, 228, 27, 254, 23, 18, 218, 27, 3, 210, 242, 36, 253, 9, 214, 15, 54, 14,
-			3, 222, 246, 242, 248, 230, 61, 42, 154, 13, 31, 70, 2, 162, 18, 32, 216, 232, 49, 34, 205, 236, 87, 1, 223, 225, 225, 60, 14, 181,
-			215, 96, 71, 194, 225, 15, 97, 161, 199, 65, 4, 0, 216, 11, 84, 182, 14, 0, 220, 44, 248, 2, 245, 204, 48, 78, 208, 253, 22, 224,
-			14, 12, 241, 229, 210, 34, 16, 40, 17, 243, 241, 217, 15, 5, 24, 252, 215, 33, 40, 237, 216, 31, 29, 222, 193, 47, 39, 227, 238, 242,
-			61, 43, 163, 236, 41, 71, 238, 208, 225, 255, 36, 5, 226, 37, 41, 245, 219, 250, 9, 227, 237, 44, 66, 230, 166, 247, 60, 39, 49, 178,
-			175, 58, 50, 17, 242, 178, 221, 96, 49, 2, 232, 206, 219, 3, 238, 22, 54, 53, 18, 173, 250, 25, 252, 249, 208, 246, 80, 13, 242, 5,
-			238, 219, 36, 226, 255, 37, 254, 36, 198, 2, 48, 11, 228, 193, 252, 53, 35, 12, 222, 205, 44, 49, 224, 210, 42, 253, 225, 18, 235, 17,
-			69, 239, 211, 9, 0, 15, 180, 237, 114, 26, 219, 255, 0, 8, 239, 211, 235, 62, 5, 14, 225, 238, 9, 20, 44, 11, 217, 218, 242, 18,
-			49, 5, 245, 203, 229, 53, 23, 249, 50, 221, 215, 224, 249, 60, 37, 231, 50, 7, 149, 236, 55, 45, 218, 235, 245, 255, 44, 37, 252, 202,
-			34, 232, 233, 23, 41, 252, 191, 225, 36, 79, 3, 243, 231, 240, 23, 210, 184, 54, 82, 14, 18, 244, 244, 214, 234, 31, 215, 246, 24, 18,
-			45, 7, 237, 242, 235, 249, 33, 53, 23, 164, 133, 22, 96, 96, 9, 166, 0, 39, 1, 214, 184, 253, 73, 18, 0, 33, 21, 249, 182, 218,
-			33, 43, 12, 217, 234, 14, 23, 69, 236, 178, 250, 51, 237, 232, 30, 229, 11, 50, 13, 237, 253, 245, 179, 1, 9, 51, 73, 15, 209, 246,
-			248, 243, 206, 0, 255, 16, 38, 28, 249, 240, 29, 15, 246, 204, 228, 243, 36, 75, 232, 209, 243, 24, 38, 243, 3, 255, 204, 241, 57, 55,
-			222, 195, 13, 38, 1, 13, 26, 208, 214, 237, 251, 55, 25, 24, 8, 237, 6, 214, 190, 50, 3, 21, 30, 223, 17, 29, 252, 223, 221, 244,
-			19, 9, 3, 11, 10, 63, 240, 223, 255, 242, 238, 204, 240, 50, 68, 56, 1, 165, 230, 20, 19, 11, 209, 1, 40, 198, 17, 57, 25, 37,
-			251, 158, 201, 76, 27, 203, 213, 0, 66, 28, 23, 2, 0, 247, 217, 250, 229, 9, 31, 217, 19, 64, 246, 242, 235, 250, 20, 214, 255, 40,
-			237, 3, 249, 6, 87, 0, 196, 247, 244, 237, 241, 252, 56, 37, 224, 250, 245, 3, 15, 4, 15, 214, 2, 19, 247, 250, 54, 236, 192, 3,
-			29, 68, 233, 227, 37, 197, 238, 5, 238, 39, 74, 25, 217, 222, 232, 208, 234, 67, 77, 249, 209, 22, 41, 218, 206, 222, 244, 17, 92, 50,
-			201, 231, 14, 229, 214, 28, 47, 35, 0, 185, 210, 30, 52, 229, 244, 41, 55, 10, 164, 232, 4, 198, 240, 78, 104, 52, 235, 165, 170, 1,
-			43, 26, 13, 20, 3, 252, 209, 228, 12, 26, 24, 25, 238, 225, 14, 5, 238, 11, 12, 253, 7, 9, 245, 241, 252, 233, 2, 38, 0, 14,
-			4, 24, 227, 210, 250, 9, 20, 17, 29, 20, 235, 233, 201, 230, 32, 44, 0, 26, 54, 230, 164, 209, 36, 42, 25, 239, 20, 29, 250, 236,
-			202, 236, 12, 39, 16, 15, 244, 19, 222, 197, 43, 239, 46, 43, 253, 236, 222, 212, 7, 35, 251, 39, 4, 20, 224, 224, 241, 250, 14, 5,
-			37, 61, 242, 196, 17, 202, 238, 13, 15, 50, 38, 252, 218, 225, 234, 8, 254, 50, 35, 227, 250, 226, 6, 252, 15, 22, 237, 234, 37, 251,
-			236, 249, 20, 18, 240, 22, 246, 248, 0, 0, 239, 243, 17, 13, 25, 253, 253, 236, 241, 45, 244, 222, 248, 15, 22, 25, 255, 241, 249, 237,
-			252, 23, 21, 238, 242, 2, 6, 240, 7, 23, 25, 34, 233, 223, 194, 201, 45, 76, 40, 252, 250, 234, 245, 250, 236, 225, 40, 35, 253, 16,
-			9, 233, 238, 207, 235, 42, 37, 59, 15, 239, 240, 178, 191, 9, 61, 81, 46, 213, 222, 233, 240, 1, 238, 10, 16, 27, 44, 10, 215, 212,
-			240, 33, 7, 6, 2, 27, 253, 214, 217, 229, 55, 63, 29, 14, 231, 204, 201, 240, 17, 41, 26, 27, 34, 237, 182, 211, 23, 53, 21, 13,
-			0, 221, 230, 244, 255, 2, 27, 17, 14, 21, 246, 249, 227, 218, 5, 20, 30, 36, 3, 229, 218, 224, 0, 24, 32, 50, 243, 214, 1, 250,
-			240, 254, 7, 27, 42, 14, 228, 206, 238, 0, 1, 21, 38, 8, 242, 227, 253, 20, 0, 6, 12, 241, 244, 23, 2, 243, 14, 245, 242, 243,
-			9, 22, 6, 6, 230, 233, 33, 11, 244, 24, 20, 234, 230, 241, 22, 5, 239, 9, 6, 37, 11, 212, 223, 251, 10, 245, 11, 63, 43, 223,
-			214, 240, 3, 39, 248, 231, 241, 1, 0, 1, 32, 29, 10, 232, 220, 252, 0, 0, 125, 0, 2, 0, 17, 0, 158, 0, 220, 1, 180, 5,
-			166, 9, 103, 12, 96, 14, 162, 26, 125, 21, 25, 43, 26, 25, 25, 22, 6, 6, 153, 115, 128, 120, 120, 120, 165, 135, 135, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1,
+			184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 47, 20, 63, 43, 37, 40, 36, 10, 13, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 30, 16, 50, 34, 29, 32, 29, 8, 10, 165, 90, 135, 120, 120, 120,
+			165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 250, 0, 5, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 45, 6, 66, 59, 59, 60, 29,
+			14, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 80, 72, 10, 83,
+			73, 74, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 4, 11, 12, 13, 216, 14, 64, 26,
+			80, 45, 10, 60, 60, 63, 63, 34, 11, 8, 167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12,
+			96, 14, 100, 25, 45, 47, 20, 63, 43, 37, 40, 36, 10, 13, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 184, 6,
+			36, 9, 228, 12, 96, 14, 100, 25, 0, 30, 16, 50, 34, 29, 32, 29, 8, 10, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 185, 0, 5, 0,
+			1, 0, 176, 0, 88, 1, 128, 3, 71, 9, 213, 12, 38, 15, 162, 26, 45, 47, 6, 73, 41, 23, 23, 29, 12, 7, 176, 126, 108, 120,
+			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 176, 0, 88, 1, 128, 3, 71, 9, 213, 12, 38, 15, 162, 26, 80, 80, 8, 94, 53, 31, 30, 38, 16, 9,
+			176, 126, 108, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 103, 1, 125, 3, 80, 9, 181, 12, 25, 15, 173, 26, 65, 60, 9, 80, 48, 28,
+			26, 31, 13, 7, 175, 126, 112, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 5, 0, 170, 0, 224, 1, 99, 3, 155, 9, 98, 12, 223, 14, 7, 27, 60, 47,
+			22, 59, 51, 32, 27, 19, 12, 5, 169, 133, 142, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 169, 0, 238, 1, 96, 3, 164, 9, 88, 12, 216, 14,
+			18, 27, 0, 33, 19, 48, 44, 26, 23, 15, 11, 4, 168, 134, 145, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 80, 0, 5, 0, 1, 0, 132, 0, 24, 1,
+			184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 35, 17, 55, 37, 32, 35, 32, 8, 11, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 80, 67, 24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 80, 54, 21, 68, 46, 39, 43, 39, 10, 14, 167, 90,
+			135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 45, 38, 25, 52, 61, 36, 38, 27,
+			15, 5, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 122, 0, 192, 1, 240, 5, 116, 9, 228, 12, 246, 14, 95, 27, 0, 27, 21, 44,
+			52, 30, 32, 23, 12, 5, 170, 133, 135, 122, 124, 128, 197, 131, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 65, 0, 4, 0, 5, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12,
+			212, 13, 96, 27, 20, 8, 14, 26, 25, 12, 12, 12, 7, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 116, 0, 13, 2, 161, 5,
+			152, 8, 128, 12, 212, 13, 96, 27, 25, 15, 19, 35, 33, 16, 16, 16, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 5, 0, 116, 0,
+			13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 20, 15, 19, 35, 33, 16, 16, 16, 9, 5, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 116, 0, 13, 2, 161, 5, 152, 8, 128, 12, 212, 13, 96, 27, 0, 9, 15, 28, 26, 13, 13, 13, 7, 4, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 234, 8, 18, 0, 253, 253, 0, 0, 249, 246, 252, 252, 244, 236, 237, 245, 247, 248, 252, 254, 2, 10, 16, 10, 13, 22,
+			7, 13, 34, 24, 31, 29, 14, 29, 17, 7, 25, 0, 230, 246, 252, 249, 247, 228, 229, 242, 246, 232, 229, 240, 238, 245, 1, 252, 215, 217,
+			5, 13, 18, 35, 17, 20, 45, 18, 244, 251, 254, 0, 17, 252, 225, 245, 2, 29, 10, 214, 234, 22, 55, 56, 13, 2, 28, 34, 40, 24,
+			228, 233, 251, 253, 37, 250, 182, 232, 30, 33, 245, 208, 223, 245, 231, 217, 220, 197, 216, 8, 234, 158, 176, 233, 228, 240, 246, 252, 40, 51,
+			23, 37, 82, 62, 43, 73, 90, 92, 101, 75, 32, 44, 50, 20, 12, 5, 239, 216, 208, 226, 230, 167, 151, 213, 223, 225, 233, 220, 234, 10,
+			42, 34, 4, 37, 71, 36, 31, 49, 246, 226, 15, 248, 229, 238, 211, 238, 5, 225, 250, 249, 204, 238, 22, 12, 10, 20, 34, 43, 33, 45,
+			64, 46, 36, 60, 60, 32, 245, 230, 16, 29, 228, 223, 218, 162, 218, 0, 199, 217, 235, 226, 39, 30, 244, 34, 5, 242, 30, 25, 17, 12,
+			7, 20, 44, 22, 240, 243, 231, 210, 1, 19, 208, 221, 252, 238, 238, 204, 185, 246, 246, 221, 32, 35, 237, 3, 41, 40, 25, 10, 22, 70,
+			103, 70, 50, 74, 68, 49, 38, 12, 251, 22, 14, 238, 7, 220, 153, 181, 212, 215, 209, 171, 165, 225, 239, 204, 206, 224, 204, 248, 19, 241,
+			3, 255, 2, 49, 58, 12, 237, 19, 48, 25, 18, 19, 6, 15, 35, 37, 18, 220, 224, 42, 25, 238, 231, 243, 17, 12, 10, 44, 22, 18,
+			88, 50, 245, 18, 241, 197, 3, 22, 240, 243, 201, 184, 244, 238, 212, 227, 237, 14, 55, 32, 222, 248, 95, 72, 228, 196, 223, 255, 10, 6,
+			231, 253, 40, 4, 18, 47, 220, 226, 65, 61, 34, 33, 13, 18, 41, 23, 253, 242, 248, 5, 8, 251, 215, 197, 206, 196, 168, 164, 201, 206,
+			222, 26, 245, 186, 227, 4, 53, 90, 6, 219, 39, 43, 0, 10, 236, 205, 244, 7, 255, 3, 233, 217, 15, 36, 250, 234, 0, 0, 254, 24,
+			3, 236, 29, 71, 55, 37, 43, 0, 232, 9, 5, 243, 239, 236, 230, 243, 242, 232, 245, 247, 215, 190, 215, 222, 221, 253, 255, 240, 5, 23,
+			29, 61, 48, 3, 29, 31, 4, 28, 14, 8, 13, 241, 15, 33, 1, 246, 255, 7, 231, 214, 14, 22, 251, 251, 228, 251, 254, 215, 246, 21,
+			241, 233, 0, 254, 46, 59, 0, 7, 58, 49, 7, 246, 241, 8, 38, 241, 175, 184, 205, 232, 252, 193, 156, 206, 253, 5, 239, 207, 229, 12,
+			46, 70, 27, 20, 69, 76, 69, 60, 34, 65, 55, 255, 21, 0, 182, 205, 252, 254, 238, 207, 186, 212, 7, 238, 214, 221, 204, 244, 46, 40,
+			6, 243, 253, 39, 33, 242, 229, 232, 1, 0, 224, 2, 253, 217, 253, 13, 245, 254, 252, 251, 56, 28, 232, 3, 241, 245, 16, 17, 12, 252,
+			15, 31, 23, 26, 6, 238, 2, 15, 11, 48, 64, 39, 2, 46, 101, 19, 219, 14, 41, 7, 234, 200, 219, 244, 206, 222, 13, 4, 230, 234,
+			243, 3, 34, 30, 27, 35, 31, 59, 80, 56, 49, 51, 26, 9, 3, 7, 242, 196, 216, 1, 210, 193, 193, 161, 224, 5, 177, 158, 221, 243,
+			1, 246, 215, 9, 46, 16, 33, 51, 35, 55, 36, 255, 22, 20, 216, 182, 213, 220, 208, 214, 214, 202, 218, 252, 1, 253, 254, 252, 21, 38,
+			254, 15, 66, 43, 62, 105, 73, 65, 77, 58, 49, 40, 241, 232, 34, 239, 180, 237, 234, 189, 234, 254, 226, 242, 254, 5, 53, 61, 3, 3,
+			62, 61, 37, 11, 249, 0, 10, 240, 197, 221, 243, 204, 224, 30, 226, 211, 35, 251, 234, 10, 242, 37, 49, 204, 13, 85, 4, 7, 45, 250,
+			238, 9, 244, 247, 9, 6, 32, 42, 1, 238, 252, 252, 248, 25, 5, 182, 212, 49, 41, 239, 235, 239, 4, 29, 225, 199, 227, 189, 208, 7,
+			219, 214, 11, 241, 217, 3, 49, 38, 16, 21, 55, 97, 48, 2, 43, 26, 198, 221, 4, 198, 203, 235, 195, 231, 237, 180, 238, 34, 5, 10,
+			21, 53, 108, 80, 46, 52, 46, 46, 35, 17, 13, 242, 230, 251, 206, 155, 190, 214, 187, 208, 217, 195, 11, 17, 231, 33, 40, 5, 26, 21,
+			24, 43, 238, 229, 22, 14, 238, 200, 239, 34, 34, 34, 251, 205, 234, 56, 35, 231, 19, 53, 37, 33, 251, 244, 51, 26, 230, 3, 233, 209,
+			1, 247, 231, 0, 216, 167, 218, 228, 191, 221, 231, 219, 14, 5, 219, 26, 29, 250, 44, 61, 19, 252, 8, 33, 62, 46, 0, 246, 9, 22,
+			5, 242, 236, 231, 228, 243, 227, 219, 6, 11, 30, 62, 17, 40, 106, 70, 93, 104, 14, 17, 55, 30, 242, 196, 183, 221, 233, 176, 136, 156,
+			192, 179, 183, 184, 158, 189, 227, 245, 244, 251, 22, 56, 66, 39, 2, 6, 28, 248, 237, 255, 248, 231, 209, 220, 222, 236, 15, 7, 8, 16,
+			6, 33, 47, 34, 53, 59, 40, 42, 42, 47, 39, 0, 7, 2, 220, 207, 178, 154, 195, 216, 179, 178, 193, 215, 26, 10, 235, 58, 67, 16,
+			71, 93, 29, 9, 24, 48, 54, 11, 245, 23, 33, 1, 216, 223, 25, 37, 66, 67, 248, 226, 13, 28, 16, 9, 225, 227, 7, 225, 229, 3,
+			220, 229, 0, 251, 37, 14, 225, 19, 21, 230, 226, 242, 7, 16, 254, 5, 14, 242, 244, 19, 26, 13, 252, 10, 14, 6, 25, 6, 232, 255,
+			18, 244, 233, 17, 31, 6, 255, 22, 27, 241, 203, 229, 8, 251, 226, 238, 6, 241, 239, 9, 228, 249, 61, 9, 226, 33, 30, 1, 42, 6,
+			242, 44, 15, 251, 34, 255, 250, 27, 245, 227, 9, 33, 17, 28, 9, 199, 215, 15, 243, 205, 208, 190, 211, 8, 248, 207, 240, 252, 226, 7,
+			8, 237, 50, 74, 47, 87, 54, 10, 65, 46, 253, 239, 243, 0, 250, 0, 230, 225, 238, 220, 254, 22, 200, 204, 22, 243, 1, 34, 232, 231,
+			40, 38, 251, 17, 8, 2, 79, 45, 224, 28, 56, 17, 32, 245, 187, 244, 42, 0, 219, 239, 242, 233, 242, 220, 205, 244, 236, 215, 255, 0,
+			237, 12, 37, 46, 55, 53, 58, 55, 27, 21, 30, 30, 36, 19, 248, 249, 235, 231, 253, 207, 161, 208, 242, 221, 210, 236, 12, 9, 227, 216,
+			7, 6, 243, 249, 251, 6, 18, 47, 46, 17, 30, 21, 6, 71, 96, 46, 50, 35, 1, 16, 231, 200, 239, 252, 252, 3, 225, 184, 180, 190,
+			211, 232, 225, 221, 1, 22, 29, 22, 255, 28, 46, 33, 59, 48, 19, 36, 17, 244, 254, 237, 236, 248, 240, 247, 228, 212, 189, 164, 178, 222,
+			6, 0, 254, 19, 46, 67, 55, 4, 251, 38, 46, 44, 58, 40, 19, 12, 2, 10, 14, 234, 214, 243, 228, 180, 173, 186, 210, 243, 221, 192,
+			232, 248, 246, 13, 0, 225, 9, 59, 45, 35, 29, 18, 24, 32, 26, 30, 54, 42, 2, 11, 23, 4, 1, 10, 246, 218, 249, 240, 198, 217,
+			235, 244, 250, 234, 231, 3, 20, 10, 24, 35, 7, 0, 24, 245, 215, 228, 228, 223, 209, 219, 220, 206, 211, 225, 215, 192, 215, 245, 248, 9,
+			27, 17, 30, 64, 53, 52, 74, 80, 94, 86, 51, 41, 27, 241, 221, 245, 233, 221, 10, 2, 225, 244, 234, 216, 1, 254, 211, 10, 62, 12,
+			237, 253, 254, 12, 44, 15, 249, 27, 9, 241, 247, 213, 193, 230, 242, 214, 216, 2, 31, 22, 7, 237, 242, 37, 51, 29, 27, 27, 9, 32,
+			18, 205, 215, 254, 253, 3, 247, 238, 1, 8, 1, 242, 215, 227, 16, 15, 3, 251, 250, 15, 246, 245, 18, 3, 12, 35, 241, 208, 254, 249,
+			223, 227, 214, 223, 252, 4, 6, 10, 251, 247, 25, 28, 253, 10, 35, 21, 22, 40, 8, 247, 16, 19, 4, 5, 237, 218, 7, 6, 208, 215,
+			230, 231, 1, 248, 228, 253, 254, 231, 0, 11, 244, 3, 40, 25, 7, 21, 4, 0, 23, 1, 0, 16, 7, 25, 13, 241, 253, 245, 217, 220,
+			232, 253, 12, 252, 237, 19, 52, 19, 18, 41, 18, 37, 64, 22, 4, 1, 243, 3, 23, 17, 3, 6, 15, 0, 9, 13, 223, 252, 31, 5,
+			17, 26, 245, 248, 16, 7, 20, 40, 3, 237, 31, 25, 232, 223, 199, 210, 243, 210, 204, 238, 229, 232, 245, 246, 244, 251, 19, 42, 69, 72,
+			16, 243, 24, 45, 15, 237, 228, 233, 246, 240, 214, 227, 254, 247, 244, 235, 224, 250, 18, 13, 254, 233, 243, 2, 16, 44, 19, 11, 44, 53,
+			37, 15, 17, 22, 19, 34, 27, 249, 251, 16, 24, 255, 231, 249, 253, 3, 255, 223, 245, 14, 249, 214, 222, 247, 248, 2, 251, 236, 233, 227,
+			238, 17, 18, 238, 248, 4, 11, 36, 15, 234, 16, 56, 40, 45, 28, 1, 33, 18, 227, 233, 244, 242, 4, 8, 251, 254, 250, 248, 7, 11,
+			10, 14, 5, 5, 22, 26, 5, 255, 249, 229, 231, 255, 243, 212, 234, 243, 198, 216, 1, 243, 236, 247, 247, 250, 238, 238, 25, 33, 23, 28,
+			47, 52, 47, 72, 45, 249, 247, 6, 14, 14, 8, 241, 237, 247, 251, 243, 221, 210, 226, 14, 12, 232, 239, 4, 12, 8, 244, 225, 246, 6,
+			246, 242, 242, 240, 246, 243, 213, 224, 16, 255, 248, 6, 247, 8, 31, 10, 16, 38, 29, 42, 50, 39, 37, 23, 9, 249, 1, 28, 2, 243,
+			237, 208, 223, 241, 228, 230, 228, 217, 235, 236, 218, 239, 254, 223, 229, 12, 9, 13, 29, 27, 40, 40, 44, 48, 13, 239, 245, 18, 27, 253,
+			222, 226, 242, 231, 221, 211, 200, 228, 237, 211, 205, 213, 241, 22, 35, 36, 34, 46, 61, 57, 52, 35, 30, 48, 39, 25, 19, 239, 222, 238,
+			235, 203, 189, 192, 187, 204, 228, 210, 205, 234, 0, 27, 25, 5, 24, 34, 25, 32, 27, 17, 32, 50, 35, 9, 14, 13, 249, 245, 244, 248,
+			8, 245, 227, 246, 239, 229, 252, 238, 206, 229, 248, 244, 9, 12, 255, 15, 24, 14, 22, 29, 5, 12, 35, 12, 9, 10, 236, 234, 250, 225,
+			201, 213, 204, 186, 203, 220, 220, 240, 242, 238, 252, 4, 18, 26, 18, 17, 52, 63, 37, 38, 67, 58, 23, 30, 15, 239, 252, 255, 237, 224,
+			204, 215, 241, 213, 199, 221, 222, 223, 254, 8, 248, 22, 52, 49, 61, 56, 49, 73, 76, 60, 77, 52, 15, 34, 29, 15, 13, 232, 209, 229,
+			219, 184, 189, 219, 208, 192, 223, 243, 243, 5, 11, 5, 22, 27, 34, 71, 63, 33, 60, 63, 20, 18, 23, 255, 0, 8, 244, 245, 5, 237,
+			215, 222, 208, 213, 220, 177, 174, 219, 222, 218, 235, 219, 239, 38, 47, 45, 50, 23, 17, 61, 46, 3, 6, 245, 244, 8, 224, 186, 203, 206,
+			208, 219, 188, 188, 241, 9, 15, 15, 7, 7, 40, 73, 66, 67, 70, 53, 77, 90, 38, 19, 28, 253, 0, 19, 230, 207, 237, 241, 231, 221,
+			191, 207, 1, 1, 245, 255, 250, 7, 41, 35, 35, 36, 27, 57, 80, 51, 20, 19, 26, 33, 8, 219, 229, 7, 253, 236, 216, 194, 213, 231,
+			215, 218, 239, 234, 247, 6, 248, 252, 8, 7, 26, 44, 30, 26, 33, 36, 47, 57, 21, 240, 246, 247, 247, 249, 229, 208, 225, 237, 221, 220,
+			225, 230, 246, 11, 17, 20, 40, 35, 49, 80, 51, 34, 56, 40, 14, 28, 1, 215, 231, 230, 217, 211, 193, 201, 218, 203, 195, 220, 233, 232,
+			250, 3, 0, 7, 17, 17, 14, 10, 26, 49, 45, 34, 37, 41, 27, 9, 8, 16, 15, 2, 242, 233, 241, 244, 234, 230, 245, 251, 255, 21,
+			17, 0, 23, 45, 25, 7, 10, 21, 24, 23, 19, 4, 253, 0, 249, 227, 218, 225, 234, 225, 219, 218, 194, 201, 224, 223, 230, 233, 222, 242,
+			12, 251, 245, 10, 8, 16, 31, 8, 5, 45, 34, 252, 13, 10, 240, 247, 251, 244, 244, 247, 245, 0, 1, 240, 5, 27, 8, 16, 38, 20,
+			20, 22, 248, 252, 19, 9, 5, 6, 231, 221, 236, 226, 214, 221, 221, 223, 242, 241, 231, 243, 245, 242, 7, 19, 1, 0, 8, 252, 15, 34,
+			7, 15, 30, 14, 28, 35, 3, 7, 23, 1, 8, 28, 2, 251, 8, 242, 248, 15, 239, 229, 255, 239, 238, 11, 1, 253, 13, 8, 6, 6,
+			234, 223, 251, 253, 236, 250, 0, 249, 254, 248, 241, 249, 242, 247, 12, 0, 250, 14, 14, 8, 10, 17, 28, 39, 22, 0, 14, 21, 1, 3,
+			11, 251, 255, 5, 249, 1, 5, 238, 241, 1, 237, 228, 238, 244, 7, 254, 229, 243, 5, 5, 249, 254, 14, 23, 28, 21, 8, 252, 251, 4,
+			2, 247, 244, 248, 250, 251, 242, 238, 250, 3, 2, 253, 252, 248, 255, 24, 13, 247, 254, 7, 13, 6, 246, 248, 255, 255, 247, 238, 245, 249,
+			253, 0, 249, 254, 6, 2, 3, 5, 1, 4, 0, 0, 185, 0, 4, 0, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14,
+			87, 27, 45, 46, 22, 50, 61, 38, 34, 31, 9, 5, 167, 157, 147, 120, 120, 120, 167, 152, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 250, 0, 176, 2, 40, 4, 246, 10,
+			188, 12, 92, 14, 87, 27, 60, 88, 31, 70, 84, 52, 47, 43, 12, 7, 167, 157, 147, 120, 120, 120, 167, 152, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 250, 0, 176, 2,
+			40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 80, 79, 29, 66, 79, 49, 45, 41, 11, 7, 167, 157, 147, 120, 120, 120, 167, 152, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			250, 0, 160, 2, 76, 4, 246, 10, 188, 12, 92, 14, 87, 27, 0, 42, 22, 50, 60, 37, 34, 31, 8, 5, 167, 159, 147, 120, 120, 120,
+			167, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 200, 0, 4, 0, 1, 0, 191, 0, 196, 1, 88, 7, 216, 9, 248, 12, 123, 14, 185, 27, 50, 42, 27, 55, 55, 57, 48, 34,
+			11, 7, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 191, 0, 196, 1, 88, 7, 216, 9, 248, 12, 123, 14, 185, 27, 80, 80, 37, 76,
+			76, 79, 65, 47, 16, 10, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 191, 0, 196, 1, 88, 7, 216, 9, 248, 12, 123, 14, 185, 27,
+			70, 67, 34, 69, 70, 73, 60, 43, 15, 9, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 191, 0, 196, 1, 88, 7, 216, 9, 248, 12,
+			123, 14, 185, 27, 0, 30, 23, 47, 47, 49, 40, 29, 10, 6, 178, 107, 129, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 200, 0,
+			80, 2, 44, 6, 176, 9, 52, 13, 7, 15, 8, 28, 50, 48, 31, 58, 68, 47, 38, 28, 12, 5, 221, 163, 157, 120, 120, 120, 150, 163,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 200, 0, 80, 2, 44, 6, 176, 9, 52, 13, 7, 15, 8, 28, 80, 83, 41, 76, 90, 62, 51, 38, 17, 7, 221, 163, 157, 120,
+			120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 200, 0, 80, 2, 44, 6, 156, 9, 52, 13, 7, 15, 8, 28, 40, 63, 36, 66, 78, 54, 44, 33, 14, 6,
+			221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 80, 2, 44, 6, 156, 9, 52, 13, 7, 15, 8, 28, 0, 33, 27, 50, 54, 40,
+			33, 24, 11, 4, 221, 163, 157, 120, 120, 120, 150, 163, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 160, 0, 4, 0, 1, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16,
+			42, 27, 50, 42, 7, 61, 51, 47, 51, 23, 15, 7, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 172, 0, 64, 1, 207, 8, 214, 11,
+			112, 13, 134, 16, 42, 27, 60, 54, 8, 69, 58, 53, 58, 26, 17, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 172, 0, 64, 1,
+			207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 47, 14, 61, 47, 46, 49, 20, 15, 7, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 0, 34, 12, 53, 41, 40, 42, 17, 13, 6, 182, 120, 133, 133, 142, 161,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 195, 0, 4, 0, 33, 0, 152, 0, 8, 1, 36, 9, 64, 11, 132, 13, 100, 15, 160, 26, 50, 43, 8, 65, 53, 53, 53, 28,
+			13, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 8, 1, 36, 9, 64, 11, 132, 13, 100, 15, 160, 26, 75, 66, 10, 80,
+			65, 65, 65, 35, 16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 8, 1, 36, 9, 84, 11, 132, 13, 100, 15, 160, 26,
+			70, 54, 9, 73, 59, 59, 59, 31, 15, 7, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 118, 0, 240, 0, 35, 9, 44, 11, 72, 13,
+			60, 15, 112, 26, 0, 26, 7, 48, 42, 41, 42, 23, 10, 6, 171, 105, 112, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0, 120, 0,
+			80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26, 45, 32, 25, 51, 51, 44, 38, 32, 17, 6, 168, 112, 148, 120, 120, 120, 107, 112,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26, 75, 46, 30, 60, 60, 53, 45, 38, 20, 8, 168, 112, 148, 120,
+			120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26, 75, 41, 28, 57, 57, 50, 43, 36, 19, 7,
+			168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 120, 0, 80, 1, 160, 5, 156, 9, 228, 12, 100, 15, 90, 26, 0, 32, 25, 51, 51, 44,
+			38, 32, 17, 6, 168, 112, 148, 120, 120, 120, 107, 112, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 120, 0, 4, 0, 1, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15,
+			144, 26, 50, 35, 6, 61, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 64, 1, 52, 3, 56, 9,
+			12, 13, 60, 15, 144, 26, 70, 59, 8, 80, 48, 28, 28, 40, 16, 10, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1,
+			52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 36, 6, 62, 37, 21, 21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 23, 5, 50, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120,
+			177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 175, 0, 4, 0, 1, 0, 172, 0, 40, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 45, 40, 3, 67, 48, 19, 25, 28,
+			9, 8, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 172, 0, 40, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 70, 63, 4, 84,
+			60, 24, 32, 36, 12, 10, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 172, 0, 40, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26,
+			60, 56, 3, 79, 57, 22, 30, 34, 11, 9, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 172, 0, 40, 1, 228, 2, 96, 9, 12, 13,
+			60, 15, 144, 26, 0, 38, 3, 65, 46, 18, 24, 28, 9, 7, 177, 117, 100, 120, 120, 120, 177, 117, 115, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 125, 0, 4, 0, 1, 0, 176, 0,
+			104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26, 45, 43, 6, 69, 44, 22, 25, 25, 12, 7, 177, 125, 110, 120, 120, 120, 177, 125,
+			125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26, 80, 70, 8, 88, 56, 28, 32, 32, 16, 10, 177, 125, 110, 120,
+			120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26, 70, 57, 7, 79, 50, 25, 28, 28, 14, 9,
+			177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 104, 1, 92, 3, 56, 9, 108, 12, 60, 15, 144, 26, 0, 38, 5, 65, 41, 20,
+			23, 23, 11, 7, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14,
+			144, 26, 45, 34, 24, 51, 51, 36, 36, 30, 15, 7, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 180, 0, 192, 1, 196, 4, 212, 8,
+			148, 12, 226, 14, 144, 26, 70, 60, 32, 68, 68, 48, 48, 40, 20, 10, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 180, 0, 192, 1,
+			196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 50, 54, 30, 64, 64, 45, 45, 38, 19, 9, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			180, 0, 192, 1, 196, 4, 212, 8, 148, 12, 226, 14, 144, 26, 0, 29, 22, 47, 47, 33, 33, 28, 14, 7, 170, 125, 145, 120, 120, 120,
+			162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 175, 0, 4, 0, 1, 0, 116, 0, 208, 1, 116, 4, 80, 10, 48, 12, 196, 14, 96, 27, 45, 40, 23, 57, 57, 37, 34, 31,
+			16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 208, 1, 116, 4, 80, 10, 48, 12, 196, 14, 96, 27, 70, 79, 32, 80,
+			80, 52, 48, 44, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 208, 1, 116, 4, 80, 10, 48, 12, 196, 14, 96, 27,
+			60, 64, 28, 72, 72, 46, 43, 39, 20, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 208, 1, 116, 4, 80, 10, 48, 12,
+			196, 14, 96, 27, 0, 35, 21, 53, 53, 34, 32, 29, 15, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 116, 0,
+			24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 40, 44, 29, 57, 69, 39, 40, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 66, 97, 43, 84, 102, 57, 60, 46, 24, 9, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 124, 0, 244, 1, 40, 6, 172, 9, 232, 12, 126, 14, 128, 27, 94, 50, 32, 60, 70, 44, 44, 33, 16, 6,
+			167, 138, 147, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 40, 31, 54, 47, 57,
+			44, 32, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 34,
+			31, 49, 49, 45, 42, 33, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 175, 8, 35, 0, 10, 234, 191, 13, 42, 250, 10, 243, 236, 16,
+			5, 2, 0, 226, 210, 25, 80, 2, 180, 13, 43, 252, 13, 226, 242, 255, 251, 50, 248, 205, 34, 7, 237, 34, 235, 12, 251, 235, 63, 0,
+			246, 239, 1, 49, 228, 236, 20, 211, 14, 67, 204, 220, 28, 253, 0, 12, 231, 222, 16, 35, 16, 227, 216, 47, 50, 231, 255, 236, 0, 24,
+			232, 29, 26, 225, 208, 57, 84, 205, 220, 5, 40, 27, 220, 19, 14, 228, 26, 30, 250, 255, 4, 230, 244, 60, 7, 184, 230, 76, 37, 188,
+			252, 20, 235, 3, 42, 7, 221, 0, 3, 19, 45, 234, 227, 8, 26, 52, 220, 232, 34, 216, 6, 42, 7, 216, 192, 39, 57, 236, 222, 8,
+			10, 249, 20, 241, 0, 5, 230, 62, 23, 235, 213, 249, 95, 226, 213, 34, 6, 227, 223, 49, 34, 195, 248, 59, 236, 236, 38, 17, 231, 253,
+			23, 13, 246, 226, 28, 212, 4, 66, 199, 10, 250, 241, 56, 231, 224, 35, 251, 228, 20, 12, 6, 247, 236, 21, 32, 244, 228, 0, 11, 8,
+			0, 12, 18, 8, 233, 251, 29, 244, 242, 25, 1, 11, 6, 219, 58, 11, 193, 255, 38, 27, 178, 22, 25, 194, 42, 18, 221, 230, 9, 10,
+			244, 243, 2, 11, 254, 0, 229, 250, 255, 9, 28, 226, 226, 48, 40, 209, 12, 3, 249, 57, 193, 33, 63, 167, 62, 22, 229, 65, 179, 0,
+			103, 215, 191, 51, 39, 177, 3, 47, 245, 250, 220, 7, 44, 219, 233, 11, 206, 25, 8, 162, 49, 33, 179, 22, 33, 214, 242, 11, 245, 252,
+			32, 32, 212, 27, 80, 181, 225, 71, 249, 232, 70, 10, 204, 50, 239, 238, 42, 205, 227, 230, 23, 65, 165, 245, 78, 170, 245, 45, 176, 35,
+			35, 184, 81, 24, 182, 42, 242, 242, 39, 230, 231, 11, 12, 241, 5, 28, 251, 222, 20, 32, 212, 250, 35, 1, 231, 29, 32, 174, 253, 60,
+			222, 244, 14, 244, 0, 254, 8, 19, 245, 241, 242, 16, 18, 211, 1, 23, 252, 26, 244, 221, 14, 22, 225, 224, 17, 9, 242, 7, 21, 242,
+			250, 25, 252, 231, 30, 252, 213, 66, 20, 227, 254, 249, 40, 7, 207, 217, 55, 32, 209, 227, 249, 66, 210, 193, 91, 214, 188, 37, 8, 22,
+			240, 233, 17, 243, 21, 0, 231, 245, 12, 54, 228, 241, 27, 204, 246, 60, 233, 222, 3, 1, 41, 232, 238, 42, 249, 226, 11, 25, 221, 26,
+			14, 217, 48, 23, 206, 225, 54, 248, 185, 48, 28, 216, 251, 244, 12, 24, 230, 2, 10, 20, 251, 238, 26, 238, 34, 228, 186, 105, 1, 145,
+			33, 71, 221, 195, 32, 24, 191, 20, 31, 197, 10, 33, 7, 229, 16, 42, 179, 30, 95, 213, 240, 11, 29, 15, 204, 56, 251, 165, 80, 43,
+			199, 248, 12, 247, 29, 31, 178, 240, 36, 245, 25, 225, 248, 59, 225, 207, 3, 46, 214, 198, 65, 17, 245, 242, 6, 255, 249, 49, 196, 254,
+			67, 220, 5, 14, 243, 55, 247, 177, 64, 10, 184, 47, 0, 221, 53, 250, 216, 18, 245, 255, 243, 232, 41, 22, 225, 250, 38, 251, 241, 217,
+			38, 89, 154, 236, 108, 244, 195, 249, 47, 22, 229, 218, 19, 49, 191, 216, 81, 247, 231, 21, 220, 0, 46, 10, 236, 6, 242, 229, 30, 228,
+			230, 59, 233, 231, 31, 241, 10, 212, 246, 99, 224, 225, 37, 238, 24, 28, 226, 33, 21, 202, 6, 51, 3, 206, 17, 52, 224, 233, 245, 19,
+			12, 160, 46, 104, 168, 230, 252, 2, 53, 189, 11, 23, 218, 41, 249, 4, 14, 201, 13, 60, 21, 217, 226, 56, 11, 10, 42, 225, 209, 11,
+			69, 220, 201, 58, 19, 231, 241, 40, 20, 163, 230, 123, 17, 163, 16, 40, 237, 240, 27, 4, 208, 29, 28, 207, 19, 27, 199, 242, 84, 9,
+			163, 25, 25, 225, 43, 250, 11, 3, 194, 68, 52, 192, 11, 24, 246, 7, 224, 14, 17, 197, 35, 54, 213, 4, 13, 215, 253, 33, 31, 251,
+			226, 243, 75, 15, 142, 24, 38, 236, 255, 249, 69, 218, 187, 111, 26, 166, 243, 10, 251, 14, 12, 214, 9, 93, 204, 176, 66, 21, 191, 25,
+			68, 210, 218, 52, 12, 224, 28, 10, 237, 22, 252, 8, 250, 5, 36, 232, 247, 255, 21, 251, 201, 48, 31, 201, 234, 21, 32, 241, 212, 247,
+			48, 28, 200, 239, 20, 22, 18, 193, 2, 81, 200, 209, 120, 3, 144, 69, 52, 179, 12, 12, 254, 13, 199, 49, 56, 163, 255, 76, 243, 211,
+			247, 66, 38, 170, 242, 68, 43, 204, 184, 72, 32, 230, 224, 46, 86, 146, 218, 126, 12, 165, 0, 53, 223, 5, 42, 220, 230, 31, 254, 230,
+			19, 1, 230, 19, 5, 254, 0, 243, 15, 231, 21, 33, 207, 0, 251, 237, 29, 228, 234, 23, 226, 27, 32, 231, 1, 255, 42, 252, 203, 34,
+			48, 255, 252, 1, 26, 10, 214, 22, 17, 230, 221, 3, 65, 235, 214, 11, 15, 252, 246, 12, 248, 247, 17, 255, 253, 253, 255, 12, 220, 23,
+			15, 214, 26, 252, 24, 2, 226, 34, 223, 254, 39, 216, 248, 7, 8, 20, 231, 248, 8, 25, 246, 255, 42, 221, 247, 255, 21, 35, 201, 4,
+			17, 239, 24, 250, 20, 3, 217, 69, 243, 222, 28, 228, 48, 246, 220, 26, 239, 226, 228, 36, 27, 204, 228, 25, 14, 252, 0, 255, 7, 1,
+			255, 45, 232, 191, 66, 14, 202, 21, 29, 223, 240, 74, 252, 196, 24, 18, 229, 17, 26, 250, 251, 243, 44, 17, 197, 18, 55, 214, 237, 35,
+			249, 6, 246, 14, 253, 213, 62, 6, 172, 40, 65, 194, 232, 44, 1, 196, 234, 61, 233, 238, 43, 233, 248, 13, 0, 2, 247, 22, 250, 240,
+			45, 236, 231, 28, 5, 253, 240, 244, 15, 50, 249, 213, 74, 16, 197, 26, 1, 10, 233, 232, 75, 221, 7, 18, 204, 70, 227, 233, 64, 226,
+			238, 1, 7, 13, 245, 240, 7, 16, 209, 212, 23, 251, 251, 18, 222, 18, 19, 220, 10, 4, 18, 248, 253, 40, 238, 246, 33, 37, 239, 251,
+			23, 237, 14, 9, 233, 19, 44, 217, 6, 41, 189, 1, 4, 33, 255, 146, 74, 37, 174, 1, 16, 1, 246, 1, 19, 237, 233, 39, 253, 226,
+			32, 20, 225, 222, 82, 8, 145, 56, 61, 231, 236, 243, 56, 232, 229, 28, 246, 66, 236, 200, 49, 252, 246, 253, 236, 13, 33, 201, 189, 103,
+			8, 140, 31, 48, 234, 243, 10, 32, 9, 226, 22, 60, 210, 214, 47, 23, 237, 241, 47, 12, 216, 24, 35, 236, 232, 49, 10, 192, 20, 42,
+			226, 236, 41, 16, 192, 230, 46, 18, 208, 217, 53, 22, 185, 3, 61, 241, 238, 7, 9, 5, 223, 0, 245, 36, 54, 175, 11, 40, 232, 6,
+			241, 37, 249, 216, 80, 254, 197, 36, 16, 15, 247, 228, 9, 1, 25, 216, 235, 81, 233, 208, 52, 21, 224, 255, 47, 6, 214, 23, 14, 221,
+			244, 23, 21, 245, 250, 237, 245, 16, 12, 229, 235, 44, 243, 229, 58, 214, 192, 88, 238, 187, 34, 34, 0, 208, 69, 27, 181, 43, 238, 231,
+			30, 238, 18, 245, 1, 41, 217, 16, 254, 201, 74, 0, 191, 41, 12, 250, 2, 250, 33, 11, 242, 223, 18, 45, 210, 241, 31, 26, 209, 204,
+			41, 233, 241, 26, 219, 14, 40, 205, 240, 45, 12, 224, 237, 54, 9, 210, 223, 48, 47, 170, 253, 56, 255, 5, 223, 248, 54, 6, 214, 4,
+			31, 0, 224, 245, 44, 241, 231, 37, 0, 1, 247, 240, 23, 5, 237, 3, 19, 215, 4, 6, 217, 42, 253, 219, 8, 39, 249, 198, 48, 41,
+			204, 18, 48, 211, 249, 22, 4, 245, 229, 78, 0, 176, 31, 53, 9, 200, 241, 64, 238, 210, 60, 26, 210, 21, 32, 241, 245, 19, 235, 241,
+			62, 209, 189, 50, 252, 231, 244, 246, 29, 245, 252, 16, 2, 2, 254, 10, 249, 30, 252, 214, 43, 0, 2, 18, 229, 1, 23, 26, 7, 230,
+			8, 60, 179, 231, 92, 189, 244, 7, 235, 61, 232, 215, 42, 19, 205, 4, 49, 221, 224, 59, 10, 217, 9, 243, 7, 3, 233, 3, 12, 9,
+			234, 8, 0, 12, 22, 190, 29, 37, 189, 31, 10, 233, 60, 237, 227, 24, 232, 23, 3, 223, 32, 252, 28, 7, 221, 61, 9, 241, 244, 37,
+			43, 159, 9, 73, 236, 205, 254, 50, 220, 220, 37, 249, 217, 11, 41, 238, 220, 41, 254, 253, 25, 212, 35, 246, 219, 57, 245, 238, 254, 0,
+			3, 25, 251, 203, 48, 15, 211, 19, 45, 255, 217, 21, 32, 246, 17, 10, 230, 40, 12, 218, 20, 0, 49, 6, 216, 36, 191, 0, 40, 182,
+			7, 7, 255, 18, 229, 6, 9, 230, 243, 58, 4, 146, 38, 73, 196, 244, 23, 242, 224, 28, 21, 213, 11, 13, 3, 10, 246, 16, 10, 247,
+			6, 37, 29, 233, 2, 28, 237, 0, 29, 1, 206, 8, 62, 211, 246, 18, 204, 249, 19, 12, 0, 220, 0, 24, 246, 9, 246, 226, 248, 23,
+			24, 220, 11, 7, 248, 33, 227, 235, 244, 223, 33, 42, 236, 197, 4, 78, 6, 230, 248, 247, 22, 39, 254, 217, 28, 33, 248, 0, 8, 6,
+			225, 244, 77, 40, 147, 12, 57, 205, 41, 3, 248, 228, 215, 78, 253, 211, 236, 0, 38, 219, 5, 36, 164, 240, 83, 228, 187, 236, 44, 30,
+			205, 43, 37, 182, 36, 46, 227, 255, 25, 250, 218, 66, 29, 173, 250, 73, 11, 213, 246, 23, 43, 196, 5, 63, 186, 7, 250, 247, 40, 213,
+			255, 6, 232, 53, 2, 174, 16, 35, 229, 218, 15, 15, 202, 32, 30, 240, 6, 247, 17, 249, 18, 14, 205, 23, 21, 253, 15, 252, 24, 4,
+			229, 245, 28, 6, 200, 23, 21, 249, 16, 219, 14, 43, 230, 239, 5, 234, 12, 33, 249, 234, 249, 51, 224, 203, 56, 231, 231, 46, 235, 211,
+			30, 21, 212, 10, 22, 0, 246, 216, 39, 17, 206, 53, 13, 214, 61, 246, 217, 21, 247, 9, 253, 4, 26, 242, 218, 41, 61, 167, 248, 68,
+			190, 222, 43, 243, 206, 34, 51, 220, 222, 24, 30, 239, 223, 39, 9, 217, 44, 0, 240, 32, 15, 240, 217, 47, 246, 199, 33, 253, 16, 12,
+			244, 26, 235, 9, 11, 212, 7, 235, 0, 50, 1, 231, 3, 66, 212, 191, 29, 253, 11, 252, 8, 20, 248, 35, 5, 203, 6, 36, 211, 251,
+			59, 248, 243, 34, 1, 13, 12, 212, 54, 5, 190, 69, 248, 229, 53, 218, 3, 33, 200, 0, 15, 203, 1, 31, 220, 245, 70, 230, 193, 72,
+			8, 233, 23, 206, 6, 45, 210, 219, 63, 44, 226, 246, 0, 48, 16, 203, 39, 6, 235, 47, 221, 254, 59, 203, 0, 53, 222, 255, 4, 244,
+			44, 2, 225, 19, 1, 249, 23, 219, 222, 27, 242, 245, 2, 8, 28, 237, 235, 247, 23, 248, 167, 52, 74, 177, 252, 65, 244, 248, 0, 1,
+			29, 234, 241, 27, 16, 28, 247, 245, 59, 243, 227, 29, 214, 13, 36, 223, 24, 0, 227, 14, 255, 252, 255, 242, 254, 1, 8, 16, 232, 12,
+			40, 223, 5, 10, 230, 14, 229, 10, 43, 222, 243, 254, 3, 2, 243, 7, 242, 27, 248, 217, 46, 7, 23, 11, 213, 28, 33, 237, 237, 38,
+			14, 242, 24, 246, 232, 21, 242, 226, 51, 1, 198, 248, 41, 1, 206, 14, 28, 249, 207, 240, 57, 242, 204, 55, 31, 201, 24, 248, 245, 45,
+			233, 225, 21, 28, 215, 0, 21, 243, 9, 228, 13, 38, 240, 3, 8, 13, 34, 246, 9, 22, 225, 11, 43, 208, 222, 70, 255, 201, 0, 43,
+			226, 209, 53, 228, 226, 34, 250, 239, 241, 14, 9, 239, 237, 253, 36, 2, 242, 24, 253, 31, 14, 248, 18, 244, 29, 234, 239, 32, 15, 0,
+			200, 10, 47, 215, 205, 51, 251, 204, 27, 1, 254, 18, 21, 235, 8, 29, 212, 252, 16, 2, 18, 239, 250, 41, 227, 238, 43, 241, 241, 31,
+			247, 212, 48, 11, 173, 25, 61, 213, 209, 5, 31, 15, 214, 13, 40, 242, 249, 10, 14, 237, 252, 20, 4, 255, 236, 32, 10, 208, 51, 14,
+			219, 28, 223, 231, 64, 250, 209, 49, 5, 234, 26, 247, 2, 4, 248, 19, 19, 216, 247, 19, 219, 0, 18, 2, 238, 0, 8, 243, 18, 6,
+			229, 242, 24, 245, 223, 9, 19, 8, 243, 8, 30, 237, 228, 36, 17, 230, 9, 17, 250, 255, 242, 5, 11, 219, 23, 21, 202, 255, 46, 10,
+			231, 242, 46, 248, 163, 62, 48, 167, 245, 52, 32, 201, 237, 61, 232, 223, 31, 246, 254, 244, 216, 57, 0, 236, 28, 211, 2, 34, 226, 241,
+			12, 10, 12, 249, 10, 10, 227, 11, 25, 7, 7, 218, 18, 60, 200, 252, 59, 214, 1, 47, 229, 237, 4, 0, 58, 0, 3, 0, 5, 0,
+			116, 0, 232, 0, 52, 8, 140, 10, 16, 14, 104, 16, 124, 21, 58, 14, 25, 15, 10, 10, 10, 10, 5, 5, 200, 212, 187, 255, 255, 175,
+			200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 116, 0, 232, 0, 52, 8, 140, 10, 16, 14, 104, 16, 124, 21, 0, 14, 25, 15, 10, 10, 10, 10, 5, 5, 200, 212,
+			187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 52, 8, 140, 10, 16, 14, 104, 16, 124, 21, 0, 14, 25, 15, 10, 5, 5, 5,
+			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 14, 4, 30, 0, 1, 1, 1, 248, 1, 254, 243, 4, 9, 5, 0, 4, 5, 15, 15, 16,
+			12, 15, 146, 182, 22, 55, 66, 236, 245, 250, 3, 18, 227, 255, 36, 231, 7, 17, 254, 15, 253, 241, 243, 232, 4, 21, 231, 9, 10, 252,
+			15, 8, 14, 0, 247, 7, 242, 253, 24, 226, 220, 17, 39, 31, 248, 243, 232, 226, 250, 21, 15, 13, 249, 7, 13, 6, 23, 216, 228, 252,
+			24, 10, 5, 33, 223, 222, 250, 32, 253, 10, 17, 211, 15, 252, 2, 252, 20, 3, 20, 19, 28, 181, 196, 10, 7, 68, 6, 9, 233, 236,
+			231, 40, 253, 237, 14, 231, 50, 247, 17, 234, 225, 38, 20, 2, 254, 255, 222, 192, 243, 67, 47, 34, 247, 192, 0, 43, 230, 239, 16, 228,
+			27, 254, 23, 18, 218, 27, 3, 210, 242, 36, 253, 9, 214, 15, 54, 14, 3, 222, 246, 242, 248, 230, 61, 42, 154, 13, 31, 70, 2, 162,
+			18, 32, 216, 232, 49, 34, 205, 236, 87, 1, 223, 225, 225, 60, 14, 181, 215, 96, 71, 194, 225, 15, 97, 161, 199, 65, 4, 0, 216, 11,
+			84, 182, 14, 0, 220, 44, 248, 2, 245, 204, 48, 78, 208, 253, 22, 224, 14, 12, 241, 229, 210, 34, 16, 40, 17, 243, 241, 217, 15, 5,
+			24, 252, 215, 33, 40, 237, 216, 31, 29, 222, 193, 47, 39, 227, 238, 242, 61, 43, 163, 236, 41, 71, 238, 208, 225, 255, 36, 5, 226, 37,
+			41, 245, 219, 250, 9, 227, 237, 44, 66, 230, 166, 247, 60, 39, 49, 178, 175, 58, 50, 17, 242, 178, 221, 96, 49, 2, 232, 206, 219, 3,
+			238, 22, 54, 53, 18, 173, 250, 25, 252, 249, 208, 246, 80, 13, 242, 5, 238, 219, 36, 226, 255, 37, 254, 36, 198, 2, 48, 11, 228, 193,
+			252, 53, 35, 12, 222, 205, 44, 49, 224, 210, 42, 253, 225, 18, 235, 17, 69, 239, 211, 9, 0, 15, 180, 237, 114, 26, 219, 255, 0, 8,
+			239, 211, 235, 62, 5, 14, 225, 238, 9, 20, 44, 11, 217, 218, 242, 18, 49, 5, 245, 203, 229, 53, 23, 249, 50, 221, 215, 224, 249, 60,
+			37, 231, 50, 7, 149, 236, 55, 45, 218, 235, 245, 255, 44, 37, 252, 202, 34, 232, 233, 23, 41, 252, 191, 225, 36, 79, 3, 243, 231, 240,
+			23, 210, 184, 54, 82, 14, 18, 244, 244, 214, 234, 31, 215, 246, 24, 18, 45, 7, 237, 242, 235, 249, 33, 53, 23, 164, 133, 22, 96, 96,
+			9, 166, 0, 39, 1, 214, 184, 253, 73, 18, 0, 33, 21, 249, 182, 218, 33, 43, 12, 217, 234, 14, 23, 69, 236, 178, 250, 51, 237, 232,
+			30, 229, 11, 50, 13, 237, 253, 245, 179, 1, 9, 51, 73, 15, 209, 246, 248, 243, 206, 0, 255, 16, 38, 28, 249, 240, 29, 15, 246, 204,
+			228, 243, 36, 75, 232, 209, 243, 24, 38, 243, 3, 255, 204, 241, 57, 55, 222, 195, 13, 38, 1, 13, 26, 208, 214, 237, 251, 55, 25, 24,
+			8, 237, 6, 214, 190, 50, 3, 21, 30, 223, 17, 29, 252, 223, 221, 244, 19, 9, 3, 11, 10, 63, 240, 223, 255, 242, 238, 204, 240, 50,
+			68, 56, 1, 165, 230, 20, 19, 11, 209, 1, 40, 198, 17, 57, 25, 37, 251, 158, 201, 76, 27, 203, 213, 0, 66, 28, 23, 2, 0, 247,
+			217, 250, 229, 9, 31, 217, 19, 64, 246, 242, 235, 250, 20, 214, 255, 40, 237, 3, 249, 6, 87, 0, 196, 247, 244, 237, 241, 252, 56, 37,
+			224, 250, 245, 3, 15, 4, 15, 214, 2, 19, 247, 250, 54, 236, 192, 3, 29, 68, 233, 227, 37, 197, 238, 5, 238, 39, 74, 25, 217, 222,
+			232, 208, 234, 67, 77, 249, 209, 22, 41, 218, 206, 222, 244, 17, 92, 50, 201, 231, 14, 229, 214, 28, 47, 35, 0, 185, 210, 30, 52, 229,
+			244, 41, 55, 10, 164, 232, 4, 198, 240, 78, 104, 52, 235, 165, 170, 1, 43, 26, 13, 20, 3, 252, 209, 228, 12, 26, 24, 25, 238, 225,
+			14, 5, 238, 11, 12, 253, 7, 9, 245, 241, 252, 233, 2, 38, 0, 14, 4, 24, 227, 210, 250, 9, 20, 17, 29, 20, 235, 233, 201, 230,
+			32, 44, 0, 26, 54, 230, 164, 209, 36, 42, 25, 239, 20, 29, 250, 236, 202, 236, 12, 39, 16, 15, 244, 19, 222, 197, 43, 239, 46, 43,
+			253, 236, 222, 212, 7, 35, 251, 39, 4, 20, 224, 224, 241, 250, 14, 5, 37, 61, 242, 196, 17, 202, 238, 13, 15, 50, 38, 252, 218, 225,
+			234, 8, 254, 50, 35, 227, 250, 226, 6, 252, 15, 22, 237, 234, 37, 251, 236, 249, 20, 18, 240, 22, 246, 248, 0, 0, 239, 243, 17, 13,
+			25, 253, 253, 236, 241, 45, 244, 222, 248, 15, 22, 25, 255, 241, 249, 237, 252, 23, 21, 238, 242, 2, 6, 240, 7, 23, 25, 34, 233, 223,
+			194, 201, 45, 76, 40, 252, 250, 234, 245, 250, 236, 225, 40, 35, 253, 16, 9, 233, 238, 207, 235, 42, 37, 59, 15, 239, 240, 178, 191, 9,
+			61, 81, 46, 213, 222, 233, 240, 1, 238, 10, 16, 27, 44, 10, 215, 212, 240, 33, 7, 6, 2, 27, 253, 214, 217, 229, 55, 63, 29, 14,
+			231, 204, 201, 240, 17, 41, 26, 27, 34, 237, 182, 211, 23, 53, 21, 13, 0, 221, 230, 244, 255, 2, 27, 17, 14, 21, 246, 249, 227, 218,
+			5, 20, 30, 36, 3, 229, 218, 224, 0, 24, 32, 50, 243, 214, 1, 250, 240, 254, 7, 27, 42, 14, 228, 206, 238, 0, 1, 21, 38, 8,
+			242, 227, 253, 20, 0, 6, 12, 241, 244, 23, 2, 243, 14, 245, 242, 243, 9, 22, 6, 6, 230, 233, 33, 11, 244, 24, 20, 234, 230, 241,
+			22, 5, 239, 9, 6, 37, 11, 212, 223, 251, 10, 245, 11, 63, 43, 223, 214, 240, 3, 39, 248, 231, 241, 1, 0, 1, 32, 29, 10, 232,
+			220, 252, 0, 0, 125, 0, 2, 0, 17, 0, 158, 0, 220, 1, 180, 5, 166, 9, 103, 12, 96, 14, 162, 26, 125, 21, 25, 43, 26, 25,
+			25, 22, 6, 6, 153, 115, 128, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15,
+			40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 60, 0, 2, 0, 1, 0, 252, 0, 90, 2, 230, 5, 20, 10,
+			169, 12, 184, 14, 96, 28, 60, 13, 27, 28, 29, 28, 20, 22, 8, 3, 193, 136, 140, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2,
+			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 65, 0,
+			2, 0, 17, 0, 220, 0, 110, 2, 56, 4, 180, 10, 13, 12, 66, 14, 248, 27, 65, 11, 23, 26, 26, 16, 20, 16, 5, 3, 164, 157,
+			128, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12,
+			4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 95, 0, 3, 0, 5, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28,
+			80, 45, 45, 48, 68, 35, 38, 25, 11, 5, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 37, 0, 205, 0, 164, 2, 200, 4, 44, 10, 41, 12,
+			125, 14, 244, 27, 15, 17, 37, 31, 23, 20, 18, 13, 4, 0, 154, 139, 127, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 56, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 37, 0, 184, 0, 160, 2, 176, 4,
+			40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 95, 0, 3, 0,
+			5, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 80, 46, 31, 46, 57, 25, 36, 20, 10, 5, 177, 100, 131, 120,
+			120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 15, 11, 34, 27, 13, 17, 13, 10, 3, 0,
+			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 18, 40, 32, 16, 20,
+			16, 12, 4, 0, 142, 140, 122, 120, 120, 120, 172, 110, 152, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 90, 0, 2, 0, 17, 0, 150, 0, 60, 2, 41, 5, 166, 9, 83, 12, 106, 14,
+			160, 27, 90, 13, 28, 26, 29, 22, 17, 19, 9, 4, 155, 145, 128, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10,
+			234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 65, 0, 2, 0, 17, 0,
+			236, 0, 226, 2, 236, 4, 90, 10, 173, 12, 144, 14, 0, 28, 65, 16, 26, 32, 28, 23, 16, 16, 7, 3, 180, 147, 113, 120, 120, 120,
+			247, 170, 165, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175,
+			150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 70, 0, 2, 0, 1, 0, 172, 0, 68, 2, 59, 6, 10, 10, 123, 12, 99, 14, 48, 28, 70, 32, 35, 50,
+			44, 46, 36, 26, 9, 4, 163, 126, 125, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
+			0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 50, 0, 2, 0, 17, 0, 178, 0, 214, 1, 192, 6,
+			255, 10, 173, 12, 115, 15, 133, 27, 50, 21, 18, 40, 33, 35, 33, 17, 10, 4, 162, 130, 127, 126, 131, 140, 187, 125, 137, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0,
 			160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130,
-			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			60, 0, 2, 0, 1, 0, 252, 0, 90, 2, 230, 5, 20, 10, 169, 12, 184, 14, 96, 28, 60, 13, 27, 28, 29, 28, 20, 22, 8, 3,
-			193, 136, 140, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20,
-			16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 65, 0, 2, 0, 17, 0, 220, 0, 110, 2, 56, 4, 180, 10, 13, 12, 66, 14,
-			248, 27, 65, 11, 23, 26, 26, 16, 20, 16, 5, 3, 164, 157, 128, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10,
+			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			40, 0, 2, 0, 17, 0, 172, 0, 70, 2, 26, 4, 0, 10, 199, 11, 119, 14, 128, 27, 40, 25, 29, 40, 46, 33, 28, 15, 10, 3,
+			153, 137, 136, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20,
+			16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 50, 0, 2, 0, 17, 0, 180, 0, 214, 1, 242, 3, 176, 9, 123, 12, 206, 14,
+			56, 27, 50, 14, 14, 37, 23, 18, 15, 19, 7, 3, 160, 132, 112, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10,
 			234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 95, 0, 3, 0, 5, 0,
-			63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 80, 45, 45, 48, 68, 35, 38, 25, 11, 5, 221, 135, 155, 120, 120, 120,
-			150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 37, 0, 205, 0, 164, 2, 200, 4, 44, 10, 41, 12, 125, 14, 244, 27, 15, 17, 37, 31, 23, 20, 18, 13, 4, 0, 154, 139,
-			127, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12,
-			4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 95, 0, 3, 0, 5, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27,
-			80, 46, 31, 46, 57, 25, 36, 20, 10, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11,
-			96, 14, 224, 27, 15, 11, 34, 27, 13, 17, 13, 10, 3, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 37, 0, 184, 0, 160, 2, 176, 4,
-			40, 10, 234, 11, 96, 14, 224, 27, 0, 18, 40, 32, 16, 20, 16, 12, 4, 0, 142, 140, 122, 120, 120, 120, 172, 110, 152, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 90, 0, 2, 0,
-			17, 0, 150, 0, 60, 2, 41, 5, 166, 9, 83, 12, 106, 14, 160, 27, 90, 13, 28, 26, 29, 22, 17, 19, 9, 4, 155, 145, 128, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0,
-			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 65, 0, 2, 0, 17, 0, 236, 0, 226, 2, 236, 4, 90, 10, 173, 12, 144, 14, 0, 28, 65, 16,
-			26, 32, 28, 23, 16, 16, 7, 3, 180, 147, 113, 120, 120, 120, 247, 170, 165, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
-			224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 70, 0, 2, 0, 1, 0, 172, 0, 68, 2,
-			59, 6, 10, 10, 123, 12, 99, 14, 48, 28, 70, 32, 35, 50, 44, 46, 36, 26, 9, 4, 163, 126, 125, 120, 120, 120, 185, 117, 127, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0,
-			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
-			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 50, 0, 2, 0, 17, 0, 178, 0, 214, 1, 192, 6, 255, 10, 173, 12, 115, 15, 133, 27, 50, 21, 18, 40, 33, 35, 33, 17,
-			10, 4, 162, 130, 127, 126, 131, 140, 187, 125, 137, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32,
-			16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 40, 0, 2, 0, 17, 0, 172, 0, 70, 2, 26, 4, 0, 10, 199, 11,
-			119, 14, 128, 27, 40, 25, 29, 40, 46, 33, 28, 15, 10, 3, 153, 137, 136, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4,
-			40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 50, 0, 2, 0,
-			17, 0, 180, 0, 214, 1, 242, 3, 176, 9, 123, 12, 206, 14, 56, 27, 50, 14, 14, 37, 23, 18, 15, 19, 7, 3, 160, 132, 112, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 17, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0,
-			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15,
-			40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15,
-			224, 28, 0, 34, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2,
-			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14, 96, 27, 0, 36, 28, 51, 63, 35, 32, 28, 14, 8, 167, 150, 135, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12,
-			4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 0, 1, 112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 0, 42, 25, 48,
-			48, 20, 40, 23, 6, 5, 186, 175, 135, 120, 120, 120, 105, 185, 148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11,
-			96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 63, 1, 182, 2, 80, 5,
-			64, 10, 139, 13, 33, 15, 96, 28, 0, 45, 45, 48, 68, 35, 38, 25, 11, 5, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0,
-			37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120,
-			120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 0, 67, 24, 76, 51, 44, 48, 44, 12, 16,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15,
-			40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 192, 0, 179, 1, 92, 3, 252, 8, 184, 11, 60, 15,
-			32, 28, 0, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82, 90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2,
-			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27, 0, 46, 31, 46, 57, 25, 36, 20, 10, 5, 177, 100, 131, 120, 120, 120,
-			105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 100, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 100, 15, 40, 32, 16, 20, 16, 12,
-			4, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 21, 25, 39,
-			40, 37, 30, 20, 7, 6, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11,
-			96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 112, 0, 13, 2, 161, 5,
-			36, 9, 188, 12, 116, 14, 96, 27, 0, 60, 34, 66, 80, 45, 47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 75, 0, 2, 0,
-			37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120,
-			120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 53, 31, 69, 57, 42, 31, 19, 9, 4,
-			217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15,
-			40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14,
-			128, 28, 0, 41, 27, 56, 59, 58, 46, 34, 11, 7, 185, 112, 127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 100, 0, 2, 0, 37, 0, 184, 0, 160, 2,
-			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 100, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 0, 27, 6, 49, 41, 38, 41, 19, 12, 6, 182, 120, 133, 133, 142, 161,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12,
-			4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 0, 35, 17, 52,
-			37, 27, 30, 22, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11,
-			96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 52, 3,
-			56, 9, 12, 13, 60, 15, 144, 26, 0, 35, 6, 61, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 12, 0, 2, 0,
-			1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 12, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120,
-			120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0,
-			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 60, 0, 3, 0, 5, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 30, 4,
-			20, 15, 12, 15, 12, 16, 5, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
-			224, 27, 30, 4, 17, 18, 11, 14, 11, 15, 4, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 160, 2, 176, 4, 40, 10,
-			234, 11, 96, 14, 224, 27, 0, 4, 14, 20, 10, 13, 10, 14, 4, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 55, 0, 2, 0, 5, 0,
-			200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 55, 5, 16, 23, 12, 15, 12, 16, 5, 0, 150, 175, 175, 120, 120, 120,
-			100, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 1, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 5, 16, 23, 12, 15, 12, 16, 5, 0, 150, 175,
-			175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 90, 0, 2, 0, 17, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 90, 21, 28, 36,
-			46, 24, 22, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
-			0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 65, 0, 2, 0, 17, 0, 32, 1, 88, 3, 40, 5,
-			140, 10, 112, 13, 191, 14, 32, 28, 65, 35, 32, 53, 48, 31, 24, 25, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75,
-			130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0,
-			108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130,
-			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			60, 0, 2, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 60, 31, 31, 43, 49, 39, 30, 38, 12, 7,
-			244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25,
-			15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 50, 0, 2, 0, 17, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16,
-			42, 27, 50, 47, 8, 65, 54, 50, 54, 25, 16, 8, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10,
-			234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 40, 0, 2, 0, 17, 0,
-			160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 40, 87, 34, 66, 84, 51, 46, 23, 17, 6, 165, 135, 150, 120, 120, 120,
-			165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175,
-			150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 50, 0, 2, 0, 17, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 36, 6, 62,
-			37, 21, 21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
-			0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 40, 0, 2, 0, 17, 0, 132, 0, 24, 1, 184, 6,
-			36, 9, 228, 12, 96, 14, 100, 25, 40, 43, 19, 60, 40, 35, 38, 35, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0, 184, 0,
-			108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130,
-			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			47, 0, 3, 0, 37, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 27, 6, 28, 16, 12, 20, 12, 10, 5, 0,
-			70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 37, 0, 172, 0, 134, 2, 176, 4, 80, 10, 234, 11, 96, 14, 224, 27, 20, 9, 34, 12, 12, 23,
-			10, 9, 6, 0, 106, 157, 136, 135, 135, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 160, 0, 160, 2, 176, 4, 120, 10, 234, 11, 96, 14, 224, 27, 0, 6,
-			27, 6, 9, 18, 6, 6, 6, 0, 142, 140, 122, 120, 120, 120, 172, 110, 152, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 45, 0, 2, 0, 37, 0, 184, 0, 108, 2, 176, 4, 40, 10,
-			234, 11, 96, 14, 224, 27, 45, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 184, 0, 108, 2,
-			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 4, 22, 13, 9, 16, 9, 7, 3, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44,
-			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 47, 0,
-			4, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 7, 5, 27, 12, 20, 10, 4, 4, 2, 0, 70, 175,
-			150, 150, 150, 120, 85, 130, 137, 44, 35, 50, 60, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 20, 9, 32, 21, 21, 13, 6, 5,
-			2, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 20, 11, 35, 26,
-			18, 16, 10, 8, 2, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
-			0, 12, 37, 27, 19, 17, 11, 9, 3, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 4, 0, 1, 0, 160, 0, 160, 2, 76, 4,
-			40, 10, 234, 11, 96, 14, 224, 27, 5, 21, 47, 38, 19, 24, 15, 11, 4, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70,
-			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 172, 0,
-			160, 2, 126, 4, 40, 10, 234, 11, 96, 14, 224, 27, 35, 20, 42, 34, 17, 21, 15, 11, 3, 0, 142, 140, 122, 120, 120, 120, 172, 110,
-			152, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 5, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120,
-			120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0,
-			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 2, 0, 5, 0, 148, 0, 120, 1, 100, 5, 84, 11, 32, 13, 135, 15, 224, 28, 45, 35,
-			32, 58, 36, 40, 51, 27, 10, 0, 102, 105, 127, 120, 120, 120, 102, 90, 127, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 124, 0, 209, 1, 112, 3, 84, 11, 68, 12, 191, 14,
-			160, 26, 0, 66, 26, 78, 70, 48, 48, 30, 17, 0, 120, 120, 120, 120, 120, 120, 75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 0, 0, 2, 0, 5, 0, 98, 0, 106, 1,
-			230, 5, 60, 10, 12, 13, 37, 15, 114, 26, 75, 20, 14, 45, 29, 19, 17, 16, 9, 8, 155, 112, 127, 120, 120, 120, 160, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 17, 0,
-			64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27, 0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120,
-			120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 140, 0, 3, 0, 1, 0, 115, 0, 200, 1, 180, 5, 122, 9, 200, 12, 179, 14, 96, 27, 50, 42, 26, 54, 67, 41, 43, 34,
-			16, 6, 167, 134, 130, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 115, 0, 200, 1, 180, 5, 122, 9, 200, 12, 179, 14, 96, 27, 90, 74, 35, 72,
-			89, 54, 57, 44, 22, 8, 167, 134, 130, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 115, 0, 200, 1, 180, 5, 122, 9, 200, 12, 179, 14, 96, 27,
-			0, 38, 25, 51, 64, 39, 41, 32, 16, 6, 167, 134, 130, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 175, 0, 4, 0, 1, 0, 32, 1, 88, 3, 40, 5,
-			140, 10, 112, 13, 191, 14, 32, 28, 45, 53, 31, 69, 57, 41, 31, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75,
-			130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 32, 1,
-			88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 50, 96, 42, 93, 77, 56, 42, 26, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170,
-			165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 80, 78, 38, 84, 69, 51, 37, 24, 11, 5, 217, 155, 105, 120,
-			120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 43, 28, 62, 52, 37, 28, 17, 8, 4,
-			217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 4, 0, 33, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 52, 21,
-			24, 39, 39, 36, 29, 19, 7, 6, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15,
-			32, 28, 75, 29, 29, 46, 47, 43, 35, 23, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10,
-			92, 13, 10, 15, 32, 28, 70, 23, 26, 41, 42, 38, 31, 21, 7, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1,
-			174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 25, 27, 43, 44, 40, 33, 22, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44,
-			45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 220, 0,
-			5, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 44, 11, 61, 43, 32, 35, 26, 14, 6, 165, 126,
-			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 90, 75, 15, 79, 57, 41, 46, 34,
-			19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 60, 13, 71,
-			51, 37, 41, 30, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26,
-			30, 50, 12, 65, 46, 34, 38, 28, 15, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12,
-			176, 14, 244, 26, 0, 29, 9, 50, 35, 26, 29, 21, 11, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 160, 0,
-			32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 45, 41, 23, 45, 58, 35, 32, 16, 11, 4, 165, 135, 150, 120, 120, 120, 165, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 50, 75, 32, 61, 78, 47, 43, 21, 16, 6, 165, 135, 150, 120,
-			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 80, 61, 29, 55, 70, 43, 39, 19, 14, 5,
-			165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 0, 34, 21, 41, 52, 32,
-			29, 14, 10, 4, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 71, 0, 3, 0, 5, 0, 192, 0, 179, 1, 92, 3, 252, 8, 184, 11, 60, 15,
-			32, 28, 26, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82, 90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 208, 0, 199, 1, 132, 3, 16, 9,
-			184, 11, 60, 15, 32, 28, 45, 62, 31, 81, 61, 30, 24, 15, 8, 0, 120, 120, 150, 120, 120, 120, 75, 90, 105, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 32, 1, 88, 3,
-			40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 53, 31, 69, 57, 42, 31, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44,
-			65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 180, 0,
-			5, 0, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 50, 37, 40, 43, 61, 31, 35, 23, 10, 5, 221, 135,
-			155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 40, 67, 55, 59, 82, 43, 47, 31,
-			13, 7, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 50, 54, 49, 53,
-			74, 38, 42, 28, 12, 6, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28,
-			40, 48, 46, 50, 70, 36, 40, 26, 11, 6, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13,
-			33, 15, 96, 28, 0, 21, 30, 33, 46, 24, 26, 17, 7, 4, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 200, 0, 5, 0, 1, 0, 184, 0,
-			88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 37, 28, 41, 51, 15, 25, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 58, 35, 51, 64, 19, 32, 22, 12, 6, 177, 100, 131, 120,
-			120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 58, 35, 51, 64, 19, 32, 22, 12, 6,
-			177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 51, 33, 48, 61, 18,
-			30, 21, 11, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 0, 37,
-			28, 41, 51, 15, 25, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 58, 0, 3, 0, 5, 0, 116, 0, 200, 0, 26, 4, 102, 8,
-			232, 13, 24, 16, 124, 21, 48, 10, 21, 12, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 55, 65, 50,
-			0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0, 216, 0,
-			251, 4, 202, 8, 102, 13, 24, 16, 124, 21, 10, 12, 20, 16, 10, 6, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
-			30, 55, 65, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
-			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 35, 0, 2, 0, 5, 0, 116, 0, 232, 0, 252, 3, 60, 10, 232, 13, 24, 16, 124, 21, 35, 8, 16, 14, 4, 2, 2, 2,
-			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 4, 22, 17,
-			8, 11, 8, 6, 2, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 58, 0, 3, 0, 5, 0, 116, 0, 208, 0, 104, 6, 40, 10, 232, 13,
-			24, 16, 124, 21, 48, 7, 12, 16, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 50, 0, 0,
-			0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 126, 0, 212, 0, 34, 6,
-			171, 9, 102, 13, 24, 16, 124, 21, 10, 10, 16, 18, 10, 6, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50,
-			85, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0,
-			216, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 15, 20, 20, 12, 8, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
-			187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			58, 0, 3, 0, 5, 0, 116, 0, 200, 0, 208, 7, 34, 11, 232, 13, 24, 16, 124, 21, 48, 11, 22, 13, 9, 4, 4, 4, 0, 0,
-			200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 75, 140, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0, 200, 0, 214, 6, 40, 10, 102, 13, 24, 16, 124, 21, 10, 12, 20, 16, 10, 6,
-			4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 75, 140, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 200, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 12,
-			18, 18, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 35, 0, 3, 0, 5, 0, 116, 0, 200, 0, 198, 7, 34, 11,
-			232, 13, 24, 16, 124, 21, 20, 10, 19, 19, 7, 3, 3, 3, 0, 0, 100, 150, 150, 150, 150, 150, 100, 150, 150, 44, 30, 75, 140, 56,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 150, 0, 180, 1,
-			59, 6, 165, 10, 233, 12, 60, 15, 174, 24, 15, 11, 28, 24, 11, 11, 9, 7, 1, 0, 85, 162, 150, 135, 135, 135, 100, 150, 150, 44,
-			30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
-			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 188, 2, 51, 0, 255, 0, 0, 1, 0, 2, 2, 5, 3, 6, 5, 8, 5, 8, 2, 0, 197, 190, 230, 30, 57, 50, 29, 11,
-			254, 227, 221, 233, 4, 27, 27, 14, 254, 235, 231, 234, 243, 254, 14, 25, 22, 11, 3, 250, 246, 245, 249, 2, 8, 11, 10, 5, 0, 247,
-			251, 248, 250, 1, 1, 2, 3, 255, 7, 251, 250, 249, 246, 6, 9, 17, 21, 18, 14, 14, 14, 16, 217, 147, 162, 234, 65, 82, 67, 26,
-			6, 228, 208, 211, 245, 23, 42, 52, 46, 4, 203, 170, 192, 245, 35, 57, 45, 26, 9, 236, 231, 212, 239, 3, 20, 34, 34, 12, 244, 221,
-			213, 247, 5, 23, 34, 25, 13, 9, 245, 243, 196, 218, 233, 25, 56, 34, 23, 246, 229, 224, 245, 2, 20, 23, 29, 16, 251, 231, 236, 228,
-			244, 3, 16, 26, 12, 252, 0, 239, 253, 239, 10, 15, 16, 4, 4, 253, 245, 250, 247, 6, 9, 255, 18, 0, 246, 250, 236, 11, 14, 12,
-			240, 242, 250, 249, 16, 16, 2, 250, 0, 1, 13, 14, 11, 23, 252, 235, 212, 208, 241, 14, 34, 37, 31, 16, 254, 229, 215, 230, 244, 249,
-			34, 47, 61, 25, 234, 208, 221, 238, 2, 225, 248, 49, 55, 24, 235, 198, 230, 251, 8, 27, 20, 20, 18, 3, 238, 243, 242, 255, 1, 252,
-			13, 13, 0, 235, 243, 3, 254, 253, 254, 13, 15, 12, 0, 249, 3, 3, 254, 18, 15, 8, 254, 208, 217, 227, 254, 40, 27, 23, 15, 0,
-			251, 240, 242, 4, 6, 14, 16, 1, 250, 230, 228, 240, 0, 15, 26, 21, 8, 250, 254, 255, 252, 252, 3, 4, 17, 15, 253, 246, 219, 232,
-			1, 12, 12, 10, 255, 255, 253, 249, 255, 2, 13, 22, 0, 59, 23, 15, 0, 202, 131, 161, 242, 60, 99, 41, 39, 0, 245, 220, 219, 248,
-			17, 65, 81, 15, 197, 157, 184, 227, 24, 67, 64, 44, 233, 204, 227, 244, 241, 31, 44, 46, 20, 253, 233, 202, 206, 235, 26, 66, 33, 13,
-			239, 212, 218, 234, 28, 26, 24, 21, 4, 253, 236, 219, 246, 0, 6, 35, 34, 25, 240, 234, 230, 235, 239, 242, 13, 39, 46, 30, 0, 225,
-			190, 215, 12, 36, 38, 23, 253, 241, 248, 3, 0, 247, 233, 236, 14, 34, 32, 6, 247, 228, 235, 0, 8, 10, 0, 246, 0, 19, 16, 4,
-			250, 239, 237, 249, 14, 13, 9, 6, 252, 6, 3, 251, 236, 242, 244, 1, 27, 27, 17, 7, 243, 238, 239, 239, 252, 1, 22, 21, 16, 12,
-			233, 236, 246, 247, 5, 8, 3, 16, 18, 14, 4, 235, 227, 227, 253, 21, 26, 23, 7, 247, 240, 245, 236, 0, 6, 0, 32, 8, 16, 0,
-			237, 247, 232, 3, 11, 23, 6, 230, 250, 253, 9, 16, 3, 0, 241, 1, 253, 13, 252, 244, 23, 15, 2, 248, 230, 240, 2, 6, 20, 24,
-			4, 1, 244, 226, 254, 236, 8, 27, 4, 15, 9, 250, 240, 238, 247, 28, 30, 20, 245, 216, 223, 242, 12, 27, 31, 14, 252, 247, 239, 242,
-			252, 0, 32, 19, 5, 253, 232, 220, 242, 16, 30, 35, 8, 249, 229, 226, 250, 18, 39, 21, 235, 226, 223, 234, 26, 52, 50, 13, 223, 202,
-			216, 252, 37, 35, 13, 247, 238, 11, 20, 2, 236, 218, 229, 8, 42, 51, 24, 238, 214, 223, 250, 14, 21, 11, 255, 250, 3, 12, 6, 249,
-			242, 242, 255, 10, 9, 10, 3, 250, 254, 254, 0, 1, 0, 1, 255, 252, 1, 7, 8, 7, 254, 246, 245, 248, 3, 12, 10, 0, 255, 250,
-			0, 11, 2, 253, 244, 245, 2, 15, 16, 12, 245, 240, 242, 251, 15, 11, 7, 252, 0, 5, 6, 254, 246, 242, 253, 12, 12, 6, 249, 247,
-			251, 4, 7, 8, 0, 250, 254, 5, 0, 5, 3, 247, 7, 253, 255, 0, 242, 252, 0, 14, 16, 0, 249, 0, 253, 6, 10, 252, 251, 253,
-			255, 6, 7, 249, 249, 252, 1, 7, 9, 6, 244, 247, 249, 3, 13, 6, 125, 0, 3, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9,
-			172, 13, 160, 15, 0, 27, 65, 23, 53, 41, 25, 16, 13, 16, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 236, 0, 124, 1,
-			12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41, 25, 16, 13, 16, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 13, 42, 29, 18, 11, 9, 11, 6, 0, 132, 60, 90, 120, 120, 120,
-			42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 136, 2, 15, 0, 32, 20, 44, 55, 14, 36, 37, 12, 13, 23, 241, 240, 13, 253, 5, 17, 226, 0, 245, 12, 228, 250, 230, 250,
-			237, 251, 22, 3, 53, 11, 2, 39, 1, 20, 40, 35, 9, 221, 25, 18, 17, 227, 252, 27, 247, 0, 51, 28, 29, 37, 34, 30, 48, 18,
-			30, 63, 55, 54, 252, 61, 66, 33, 52, 35, 69, 52, 75, 53, 31, 54, 72, 31, 27, 58, 12, 41, 44, 43, 245, 26, 23, 5, 237, 4,
-			247, 244, 21, 3, 241, 21, 3, 6, 5, 31, 7, 25, 43, 11, 36, 64, 37, 82, 41, 21, 47, 36, 40, 21, 51, 64, 13, 18, 59, 22,
-			49, 255, 17, 45, 30, 21, 23, 18, 15, 32, 25, 22, 226, 19, 26, 247, 32, 248, 5, 17, 41, 6, 24, 12, 234, 27, 23, 59, 249, 1,
-			14, 32, 43, 250, 246, 252, 42, 35, 251, 8, 45, 245, 6, 3, 5, 7, 40, 226, 18, 30, 0, 243, 22, 251, 3, 57, 50, 230, 235, 89,
-			9, 234, 62, 14, 240, 82, 68, 216, 7, 20, 16, 10, 247, 21, 236, 223, 59, 40, 166, 4, 245, 223, 22, 252, 17, 15, 27, 249, 32, 22,
-			245, 3, 46, 49, 228, 59, 41, 249, 44, 29, 25, 9, 246, 69, 241, 36, 25, 7, 0, 18, 47, 217, 248, 0, 241, 32, 46, 251, 238, 24,
-			67, 28, 230, 35, 31, 47, 13, 41, 85, 0, 14, 72, 239, 57, 70, 245, 16, 31, 22, 24, 32, 30, 36, 39, 75, 7, 217, 13, 61, 15,
-			253, 57, 66, 223, 38, 77, 36, 235, 242, 66, 60, 237, 2, 52, 8, 48, 25, 208, 61, 45, 234, 227, 12, 68, 202, 242, 97, 227, 252, 94,
-			216, 240, 50, 255, 4, 252, 41, 235, 18, 81, 235, 17, 251, 64, 214, 213, 80, 239, 210, 80, 33, 185, 39, 226, 37, 239, 224, 47, 255, 36,
-			38, 14, 62, 254, 12, 42, 23, 239, 48, 4, 16, 239, 5, 60, 245, 68, 221, 240, 54, 234, 212, 22, 22, 16, 253, 95, 49, 146, 20, 89,
-			202, 10, 102, 228, 243, 84, 26, 248, 22, 78, 235, 224, 38, 37, 196, 28, 75, 209, 16, 62, 234, 247, 13, 244, 56, 11, 237, 35, 58, 233,
-			251, 67, 36, 214, 53, 61, 0, 77, 236, 5, 58, 47, 10, 251, 11, 42, 0, 224, 14, 10, 21, 241, 20, 50, 28, 203, 238, 72, 60, 12,
-			250, 18, 53, 1, 14, 30, 238, 41, 60, 255, 253, 41, 29, 236, 202, 59, 73, 203, 2, 255, 187, 77, 30, 153, 253, 96, 2, 144, 24, 109,
-			205, 195, 66, 55, 9, 236, 192, 41, 44, 7, 203, 41, 97, 239, 215, 252, 69, 53, 244, 226, 85, 95, 183, 208, 72, 64, 242, 231, 245, 32,
-			51, 235, 10, 252, 49, 11, 161, 64, 78, 240, 248, 16, 72, 52, 234, 45, 31, 226, 4, 238, 3, 40, 17, 244, 254, 248, 242, 250, 239, 13,
-			13, 221, 9, 215, 2, 80, 10, 248, 40, 14, 38, 34, 210, 245, 34, 253, 7, 7, 70, 13, 215, 13, 34, 47, 230, 218, 68, 51, 8, 36,
-			236, 10, 50, 183, 6, 0, 187, 20, 28, 215, 234, 6, 245, 53, 239, 198, 36, 7, 237, 36, 34, 16, 14, 215, 4, 55, 245, 14, 91, 59,
-			6, 2, 19, 44, 40, 237, 72, 120, 64, 6, 39, 66, 47, 16, 14, 71, 57, 19, 252, 23, 13, 9, 70, 25, 200, 11, 18, 233, 230, 36,
-			51, 29, 65, 45, 18, 249, 8, 7, 237, 41, 26, 250, 72, 87, 203, 240, 85, 2, 144, 217, 11, 13, 37, 4, 41, 120, 30, 195, 248, 67,
-			11, 184, 215, 60, 43, 214, 27, 120, 49, 209, 223, 20, 40, 194, 173, 246, 53, 20, 253, 23, 249, 1, 249, 213, 3, 0, 0, 44, 0, 0,
-			0, 0, 124, 127, 0, 114, 117, 34, 0, 128, 117, 12, 34, 0, 13, 117, 0, 14, 117, 0, 115, 117, 0, 116, 117, 0, 118, 117, 55, 0,
-			119, 122, 0, 126, 35, 12, 0, 127, 35, 34, 0, 120, 35, 12, 0, 137, 35, 57, 0, 145, 35, 57, 131, 34, 0, 144, 35, 57, 131, 34,
-			0, 135, 35, 58, 0, 146, 35, 58, 13, 0, 150, 113, 0, 121, 112, 0, 152, 36, 0, 140, 112, 12, 34, 0, 138, 112, 12, 118, 0, 122,
-			125, 0, 113, 126, 0, 129, 37, 12, 0, 141, 37, 34, 0, 142, 37, 12, 34, 0, 131, 127, 0, 130, 127, 12, 0, 149, 39, 0, 132, 127,
-			34, 0, 133, 127, 34, 0, 139, 127, 57, 0, 136, 128, 0, 151, 116, 0, 117, 40, 0, 134, 129, 0, 143, 40, 34, 0, 125, 142, 0, 147,
-			37, 34, 0, 148, 117, 34, 0, 44, 34, 0, 108, 47, 0, 58, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 5, 0, 1, 0,
-			63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 50, 38, 37, 37, 66, 41, 35, 23, 10, 5, 221, 200, 155, 120, 120, 120,
-			150, 245, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 40, 71, 50, 50, 89, 55, 47, 31, 13, 7, 221, 200,
-			155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 50, 57, 45, 45, 80, 49, 42, 28,
-			12, 6, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 40, 45, 40, 40,
-			71, 44, 37, 25, 10, 6, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28,
-			0, 22, 28, 28, 50, 31, 26, 17, 7, 4, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 141, 0, 97, 1, 68, 7,
-			134, 9, 242, 12, 208, 14, 66, 26, 45, 39, 21, 58, 49, 47, 48, 27, 11, 7, 167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 141, 0,
-			97, 1, 68, 7, 134, 9, 242, 12, 208, 14, 66, 26, 70, 75, 29, 81, 68, 66, 66, 38, 15, 10, 167, 100, 124, 120, 120, 120, 167, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 141, 0, 97, 1, 68, 7, 134, 9, 242, 12, 208, 14, 66, 26, 60, 61, 26, 73, 61, 59, 60, 34, 14, 9, 167, 100, 124, 120,
-			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 141, 0, 97, 1, 68, 7, 134, 9, 242, 12, 208, 14, 66, 26, 0, 34, 20, 55, 46, 45, 45, 26, 10, 7,
-			167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 215, 0, 5, 0, 1, 0, 32, 1, 92, 3, 192, 5, 102, 10, 158, 13, 27, 15, 118, 27, 45, 35,
-			30, 56, 58, 37, 34, 23, 6, 4, 209, 165, 164, 130, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 32, 1, 92, 3, 192, 5, 102, 10, 158, 13, 27, 15,
-			118, 27, 60, 74, 44, 82, 84, 54, 49, 34, 9, 6, 209, 165, 164, 130, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 56, 1, 207, 2, 86, 6, 216, 9,
-			152, 13, 112, 15, 220, 28, 70, 68, 39, 69, 75, 57, 44, 34, 12, 7, 255, 144, 161, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 6, 1, 50, 2,
-			45, 7, 223, 9, 77, 13, 225, 14, 189, 28, 40, 48, 32, 52, 60, 51, 42, 35, 11, 7, 228, 126, 148, 120, 120, 120, 237, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			0, 1, 32, 2, 70, 7, 225, 9, 68, 13, 208, 14, 185, 28, 0, 31, 25, 41, 48, 41, 34, 29, 9, 6, 224, 124, 146, 120, 120, 120,
-			237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 105, 0, 4, 0, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 30, 16, 19, 37, 29, 17, 15, 15,
-			5, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 45, 19, 22, 41,
-			33, 19, 17, 17, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27,
-			30, 19, 22, 41, 33, 19, 17, 17, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12,
-			116, 14, 96, 27, 0, 13, 16, 31, 34, 21, 22, 17, 8, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 128, 0,
-			32, 2, 196, 4, 216, 9, 188, 12, 20, 15, 96, 27, 45, 45, 33, 61, 58, 39, 36, 33, 17, 6, 167, 135, 135, 120, 120, 120, 197, 135,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 128, 0, 32, 2, 196, 4, 216, 9, 188, 12, 20, 15, 96, 27, 60, 71, 42, 76, 72, 49, 46, 42, 22, 7, 167, 135, 135, 120,
-			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 128, 0, 32, 2, 196, 4, 216, 9, 188, 12, 20, 15, 96, 27, 70, 57, 38, 69, 65, 44, 41, 38, 19, 6,
-			167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 128, 0, 32, 2, 236, 4, 216, 9, 188, 12, 20, 15, 96, 27, 0, 41, 32, 58, 55, 37,
-			35, 32, 16, 5, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 156, 0, 40, 1, 172, 8, 64, 11, 192, 13, 120, 15,
-			144, 27, 45, 40, 11, 59, 53, 50, 42, 28, 11, 7, 176, 106, 155, 120, 120, 120, 185, 107, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 156, 0, 40, 1, 172, 8, 64, 11,
-			192, 13, 120, 15, 144, 27, 80, 74, 16, 81, 73, 68, 57, 38, 15, 9, 176, 106, 155, 120, 120, 120, 185, 107, 155, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 156, 0, 36, 1,
-			196, 8, 76, 11, 216, 13, 144, 15, 144, 27, 50, 63, 14, 75, 67, 63, 52, 35, 14, 9, 176, 106, 155, 120, 120, 120, 185, 107, 155, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			156, 0, 32, 1, 212, 8, 84, 11, 232, 13, 160, 15, 144, 27, 0, 33, 10, 53, 48, 45, 37, 25, 10, 6, 176, 106, 155, 120, 120, 120,
-			185, 107, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 250, 0, 5, 0, 1, 0, 248, 0, 144, 2, 204, 6, 196, 9, 242, 13, 183, 15, 64, 28, 45, 28, 24, 44, 49, 44, 29, 19,
-			7, 4, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 144, 2, 204, 6, 196, 9, 242, 13, 183, 15, 64, 28, 80, 82, 41, 76,
-			83, 75, 49, 33, 12, 8, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 128, 2, 204, 6, 208, 9, 225, 13, 155, 15, 70, 28,
-			80, 74, 39, 72, 78, 72, 48, 33, 11, 8, 193, 132, 174, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 214, 0, 33, 2, 59, 7, 27, 10, 118, 13,
-			233, 14, 110, 28, 45, 48, 28, 58, 59, 61, 44, 33, 10, 7, 187, 115, 141, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 200, 0, 248, 1, 108, 7,
-			60, 10, 72, 13, 156, 14, 128, 28, 0, 30, 23, 48, 48, 52, 39, 30, 9, 6, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 4, 0,
-			33, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 52, 28, 19, 35, 41, 45, 45, 29, 11, 5, 166, 170, 129, 120,
-			120, 120, 167, 190, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 75, 44, 24, 44, 52, 56, 56, 36, 14, 6,
-			166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 79, 35, 21, 39, 46, 50,
-			51, 33, 13, 6, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 0, 33,
-			25, 36, 43, 46, 46, 33, 13, 6, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 184, 0, 152, 1, 128, 7, 236, 9,
-			52, 13, 80, 15, 96, 25, 50, 41, 35, 59, 42, 57, 53, 28, 12, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 152, 1,
-			128, 7, 236, 9, 52, 13, 80, 15, 96, 25, 60, 74, 47, 79, 57, 76, 71, 38, 17, 7, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			184, 0, 152, 1, 128, 7, 236, 9, 52, 13, 80, 15, 96, 25, 40, 60, 42, 71, 51, 68, 64, 34, 15, 6, 160, 90, 120, 120, 120, 120,
-			130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 184, 0, 160, 1, 108, 7, 20, 10, 92, 13, 120, 15, 96, 25, 0, 44, 34, 68, 38, 51, 47, 27, 10, 8, 160, 105,
-			120, 120, 120, 120, 130, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 190, 0, 5, 0, 1, 0, 251, 0, 136, 2, 96, 4, 92, 10, 60, 12, 48, 14, 235, 27, 50, 39, 30, 52,
-			63, 24, 35, 22, 7, 5, 182, 149, 126, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 251, 0, 136, 2, 96, 4, 92, 10, 60, 12, 48, 14, 235, 27,
-			50, 77, 41, 72, 87, 33, 49, 31, 9, 7, 182, 149, 126, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 251, 0, 136, 2, 96, 4, 92, 10, 60, 12,
-			48, 14, 235, 27, 50, 77, 41, 72, 87, 33, 49, 31, 9, 7, 182, 149, 126, 120, 120, 120, 105, 164, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 251, 0, 136, 2, 96, 4,
-			92, 10, 60, 12, 48, 14, 235, 27, 40, 55, 35, 61, 74, 28, 42, 26, 8, 6, 182, 149, 126, 120, 120, 120, 105, 164, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 0, 1,
-			80, 2, 232, 3, 80, 10, 28, 12, 36, 14, 15, 28, 0, 25, 24, 38, 48, 16, 28, 16, 4, 4, 186, 151, 122, 120, 120, 120, 105, 164,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			165, 0, 4, 0, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 45, 48, 34, 51, 73, 40, 48, 24, 14, 6,
-			170, 150, 150, 120, 120, 120, 170, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 80, 68, 41, 61, 87, 48,
-			57, 28, 17, 7, 170, 150, 150, 120, 120, 120, 170, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 40, 59,
-			38, 55, 82, 45, 54, 27, 16, 6, 170, 150, 150, 120, 120, 120, 170, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 204, 0, 100, 2, 216, 4, 60, 10, 168, 12, 10, 15,
-			0, 28, 0, 40, 37, 46, 64, 35, 42, 21, 12, 9, 167, 150, 150, 120, 120, 120, 167, 165, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 190, 0, 5, 0, 1, 0, 192, 0, 192, 1,
-			72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 50, 40, 25, 45, 62, 20, 33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 50, 77, 35, 63, 87, 28, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120,
-			105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 50, 77, 35, 63, 87, 28, 45, 25, 13, 7, 177, 100,
-			131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 40, 49, 31, 53, 66, 24, 39, 21,
-			11, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 0, 28, 28, 45,
-			41, 20, 33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 100, 0, 4, 0, 1, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13,
-			60, 15, 144, 26, 50, 36, 3, 58, 43, 21, 21, 30, 15, 7, 177, 175, 102, 120, 120, 120, 177, 175, 117, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 72, 1, 132, 3,
-			56, 9, 12, 13, 60, 15, 144, 26, 50, 61, 4, 76, 56, 28, 28, 40, 20, 10, 177, 175, 102, 120, 120, 120, 177, 175, 117, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0,
-			72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 45, 3, 64, 49, 24, 24, 35, 17, 8, 177, 180, 102, 120, 120, 120, 177, 180,
-			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 24, 2, 45, 35, 17, 17, 25, 12, 6, 177, 200, 102, 120,
-			120, 120, 177, 200, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 110, 0, 6, 0, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 45, 58, 27, 62, 74, 40,
-			33, 28, 10, 5, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 65, 137,
-			42, 95, 114, 62, 51, 43, 16, 8, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14,
-			192, 27, 40, 111, 38, 86, 102, 55, 46, 39, 15, 7, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 218, 0, 120, 2, 232, 3, 161, 10,
-			109, 12, 71, 14, 60, 27, 50, 94, 29, 71, 93, 53, 42, 37, 17, 8, 166, 145, 137, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 216, 1,
-			12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 40, 75, 26, 68, 68, 47, 43, 25, 18, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0,
-			144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 0, 53, 22, 57, 57, 40, 36, 21, 15, 7, 163, 120, 143, 120, 120, 120,
-			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250,
-			0, 0, 45, 0, 3, 0, 5, 0, 116, 0, 232, 0, 164, 6, 176, 9, 152, 13, 60, 15, 124, 21, 45, 9, 20, 12, 8, 4, 4, 4,
-			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 9, 20, 12,
-			8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21,
-			0, 9, 20, 12, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 58, 0, 3, 0, 5, 0, 116, 0, 232, 0, 252, 8,
-			240, 10, 232, 13, 24, 16, 124, 21, 58, 11, 22, 13, 9, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 116, 0,
-			232, 0, 252, 8, 240, 10, 232, 13, 24, 16, 124, 21, 0, 11, 22, 13, 9, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
-			187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 116, 0, 232, 0, 252, 8, 240, 10, 232, 13, 24, 16, 124, 21, 0, 11, 22, 13, 9, 4, 4, 4, 0, 0, 200, 212, 187, 255,
-			255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 42, 3, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 14, 26, 36, 42,
-			44, 45, 42, 34, 23, 3, 230, 196, 171, 166, 179, 204, 230, 249, 5, 15, 25, 30, 24, 0, 222, 185, 164, 168, 195, 224, 243, 0, 17, 47,
-			80, 102, 102, 79, 44, 11, 244, 226, 206, 185, 168, 166, 187, 230, 25, 68, 91, 97, 98, 100, 96, 75, 34, 239, 189, 158, 150, 159, 174, 191,
-			213, 245, 32, 78, 113, 125, 112, 81, 44, 9, 234, 200, 165, 137, 131, 153, 198, 251, 39, 70, 91, 106, 114, 110, 87, 46, 252, 202, 168, 153,
-			153, 163, 180, 204, 239, 26, 71, 104, 116, 106, 82, 53, 22, 245, 208, 171, 144, 137, 154, 187, 228, 9, 40, 64, 82, 92, 91, 73, 40, 255,
-			216, 188, 174, 170, 172, 180, 198, 229, 10, 48, 75, 85, 80, 66, 46, 22, 250, 216, 184, 161, 154, 166, 192, 225, 1, 31, 57, 77, 91, 94,
-			82, 55, 20, 244, 219, 203, 193, 189, 193, 206, 229, 1, 30, 51, 61, 62, 55, 42, 25, 4, 237, 213, 195, 187, 192, 206, 225, 245, 7, 25,
-			41, 52, 54, 45, 29, 8, 245, 229, 217, 210, 207, 210, 220, 235, 255, 17, 32, 40, 41, 38, 31, 21, 7, 248, 231, 219, 214, 217, 226, 238,
-			251, 7, 20, 31, 39, 40, 33, 21, 7, 250, 238, 229, 224, 223, 225, 233, 244, 2, 16, 27, 32, 33, 31, 26, 18, 7, 252, 240, 232, 228,
-			230, 235, 243, 253, 6, 17, 26, 31, 32, 28, 20, 9, 255, 246, 238, 233, 231, 232, 238, 246, 0, 10, 17, 22, 24, 23, 20, 13, 5, 253,
-			245, 238, 235, 235, 239, 245, 252, 2, 10, 17, 21, 22, 20, 15, 8, 1, 251, 246, 242, 240, 240, 243, 249, 255, 4, 9, 13, 15, 15, 13,
-			10, 5, 0, 251, 248, 245, 245, 246, 249, 252, 0, 3, 7, 10, 11, 10, 8, 5, 2, 0, 253, 251, 250, 250, 251, 253, 255, 1, 3, 5,
-			5, 6, 5, 4, 2, 0, 0, 255, 254, 254, 254, 255, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 4, 0, 1, 0, 32, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28,
-			45, 49, 30, 65, 58, 38, 30, 19, 9, 4, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 32, 1, 66, 3, 196, 4, 130, 10, 112, 13,
-			48, 15, 32, 28, 70, 100, 43, 92, 83, 55, 43, 28, 13, 6, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 57, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 32, 1, 66, 3, 196, 4,
-			130, 10, 112, 13, 48, 15, 32, 28, 60, 82, 38, 83, 75, 50, 38, 25, 11, 5, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70,
-			130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 32, 1,
-			66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 0, 43, 28, 61, 55, 36, 28, 18, 8, 4, 186, 152, 120, 120, 120, 120, 192, 155,
-			135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			175, 0, 4, 0, 1, 0, 130, 0, 80, 1, 162, 8, 240, 10, 112, 13, 100, 15, 120, 26, 45, 48, 19, 68, 52, 50, 43, 30, 11, 6,
-			168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 130, 0, 80, 1, 162, 8, 240, 10, 112, 13, 100, 15, 120, 26, 70, 89, 26, 93, 71, 68,
-			59, 40, 16, 8, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 130, 0, 80, 1, 162, 8, 200, 10, 112, 13, 100, 15, 120, 26, 60, 81,
-			24, 88, 67, 64, 56, 38, 15, 8, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 130, 0, 80, 1, 162, 8, 200, 10, 112, 13, 100, 15,
-			120, 26, 0, 36, 16, 58, 44, 43, 37, 25, 10, 5, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 176, 0, 64, 1,
-			172, 3, 56, 9, 228, 12, 60, 15, 144, 26, 45, 39, 5, 66, 34, 17, 26, 29, 11, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			176, 0, 64, 1, 172, 3, 56, 9, 228, 12, 60, 15, 144, 26, 80, 65, 7, 85, 44, 22, 33, 37, 14, 9, 177, 125, 102, 120, 120, 120,
-			177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 176, 0, 64, 1, 152, 3, 56, 9, 228, 12, 60, 15, 144, 26, 50, 48, 6, 73, 38, 19, 28, 31, 12, 7, 177, 125,
-			102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 228, 12, 60, 15, 144, 26, 0, 35, 5, 62, 32, 16, 24, 27,
-			10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 133, 0, 93, 1, 164, 6, 242, 8, 208, 12, 114, 14, 24, 25,
-			45, 41, 21, 57, 47, 41, 38, 32, 10, 11, 173, 111, 133, 121, 121, 130, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 133, 0, 93, 1, 164, 6, 242, 8, 208, 12,
-			114, 14, 24, 25, 80, 71, 27, 76, 62, 54, 50, 42, 13, 14, 173, 111, 133, 121, 121, 130, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 133, 0, 93, 1, 164, 6,
-			242, 8, 208, 12, 114, 14, 24, 25, 70, 57, 25, 68, 55, 49, 45, 38, 12, 13, 173, 111, 133, 121, 121, 130, 187, 126, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 133, 0,
-			93, 1, 164, 6, 242, 8, 208, 12, 114, 14, 24, 25, 0, 35, 19, 54, 44, 38, 35, 30, 9, 10, 173, 111, 133, 121, 121, 130, 187, 126,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			245, 0, 6, 0, 1, 0, 72, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 45, 50, 32, 67, 59, 34, 30, 19, 9, 4,
-			207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 72, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 40, 101, 43, 96, 85, 49,
-			43, 27, 13, 6, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 55, 1, 100, 3, 128, 5, 140, 10, 116, 13, 189, 14, 32, 28, 75, 82,
-			41, 88, 78, 48, 40, 26, 12, 6, 203, 144, 114, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 48, 1, 56, 9, 164, 11, 232, 13, 220, 15,
-			160, 26, 40, 59, 21, 68, 68, 61, 54, 32, 15, 7, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 105, 0, 48, 1, 56, 9, 164, 11,
-			232, 13, 220, 15, 93, 26, 45, 31, 15, 51, 51, 47, 46, 26, 12, 8, 172, 106, 109, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 55,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 105, 0, 48, 1,
-			56, 9, 164, 11, 232, 13, 220, 15, 93, 26, 0, 31, 15, 51, 51, 47, 46, 26, 12, 8, 172, 106, 109, 120, 120, 120, 167, 110, 120, 44,
-			45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 170, 0,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0,
+			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
+			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 0, 34, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132,
+			159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32,
+			16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 128, 0, 40, 2, 161, 5, 96, 9, 188, 12, 116, 14, 96, 27,
+			0, 36, 28, 51, 63, 35, 32, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4,
+			40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 0, 1,
+			112, 2, 192, 3, 64, 11, 48, 12, 36, 14, 15, 28, 0, 42, 25, 48, 48, 20, 40, 23, 6, 5, 186, 175, 135, 120, 120, 120, 105, 185,
+			148, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0,
+			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 0, 45, 45, 48, 68, 35,
+			38, 25, 11, 5, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
+			224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9,
+			228, 12, 96, 14, 100, 25, 0, 67, 24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0,
+			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
+			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 192, 0, 179, 1, 92, 3, 252, 8, 184, 11, 60, 15, 32, 28, 0, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82,
+			90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32,
+			16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0, 136, 1, 188, 2, 160, 10, 88, 12, 176, 14, 159, 27,
+			0, 46, 31, 46, 57, 25, 36, 20, 10, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 100, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4,
+			40, 10, 234, 11, 96, 14, 224, 27, 100, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 156, 0,
+			99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 21, 25, 39, 40, 37, 30, 20, 7, 6, 167, 90, 135, 120, 120, 120, 122, 120,
+			120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0,
+			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 112, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 0, 60, 34, 66, 80, 45,
+			47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 75, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
+			224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10,
+			112, 13, 191, 14, 32, 28, 0, 53, 31, 69, 57, 42, 31, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54,
+			0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0,
+			184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120,
+			85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 160, 0, 232, 1, 198, 7, 236, 9, 12, 13, 101, 14, 128, 28, 0, 41, 27, 56, 59, 58, 46, 34, 11, 7, 185, 112,
+			127, 120, 120, 120, 185, 117, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 100, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 100, 15, 40, 32,
+			16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27,
+			0, 27, 6, 49, 41, 38, 41, 19, 12, 6, 182, 120, 133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4,
+			40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 153, 0,
+			156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 0, 35, 17, 52, 37, 27, 30, 22, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115,
+			130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			74, 0, 2, 0, 37, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 75, 15, 40, 32, 16, 20, 16, 12, 4, 0,
+			70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 176, 0, 64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 35, 6, 61, 36, 21,
+			21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 12, 0, 2, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
+			224, 27, 12, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10,
+			234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 60, 0, 3, 0, 5, 0,
+			200, 0, 160, 2, 176, 4, 40, 10, 84, 11, 96, 14, 224, 27, 30, 2, 16, 12, 9, 12, 9, 12, 4, 0, 150, 175, 175, 120, 120, 120,
+			100, 125, 125, 44, 45, 70, 130, 40, 0, 25, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 5, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 30, 4, 17, 18, 11, 14, 11, 15, 4, 0, 150, 175,
+			175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 48, 0, 25, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 160, 2, 176, 4, 40, 10, 28, 12, 96, 14, 224, 27, 0, 5, 16, 23, 13, 15, 12, 16,
+			5, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 48, 0, 20, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 55, 0, 2, 0, 5, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
+			55, 5, 16, 23, 12, 15, 12, 16, 5, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 200, 0, 160, 2, 176, 4, 40, 10, 234, 11,
+			96, 14, 224, 27, 0, 5, 16, 23, 12, 15, 12, 16, 5, 0, 150, 175, 175, 120, 120, 120, 100, 125, 125, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 90, 0, 2, 0, 17, 0, 116, 0,
+			13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 90, 21, 28, 36, 46, 24, 22, 28, 14, 8, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150,
+			150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 65, 0, 2, 0, 17, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 35, 32, 53, 48, 31,
+			24, 25, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10,
+			35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 60, 0, 2, 0, 1, 0, 64, 1, 72, 2, 28, 7, 0, 10,
+			104, 13, 15, 15, 224, 28, 60, 31, 31, 43, 49, 39, 30, 38, 12, 7, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 108, 2,
+			176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 50, 0,
+			2, 0, 17, 0, 172, 0, 64, 1, 207, 8, 214, 11, 112, 13, 134, 16, 42, 27, 50, 47, 8, 65, 54, 50, 54, 25, 16, 8, 182, 120,
+			133, 133, 142, 161, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12,
+			5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 40, 0, 2, 0, 17, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27,
+			40, 87, 34, 66, 84, 51, 46, 23, 17, 6, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11,
+			96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 50, 0, 2, 0, 17, 0, 176, 0,
+			64, 1, 52, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 36, 6, 62, 37, 21, 21, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125,
+			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10, 35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150,
+			150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 40, 0, 2, 0, 17, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 40, 43, 19, 60, 40, 35,
+			38, 35, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 10,
+			35, 20, 15, 25, 15, 12, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 47, 0, 3, 0, 37, 0, 184, 0, 108, 2, 176, 4, 40, 10,
+			234, 11, 96, 14, 224, 27, 27, 6, 28, 16, 12, 20, 12, 10, 5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 37, 0, 172, 0, 134, 2,
+			176, 4, 80, 10, 234, 11, 96, 14, 224, 27, 20, 9, 34, 12, 12, 23, 10, 9, 6, 0, 106, 157, 136, 135, 135, 120, 85, 130, 187, 44,
+			45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			160, 0, 160, 2, 176, 4, 120, 10, 234, 11, 96, 14, 224, 27, 0, 6, 27, 6, 9, 18, 6, 6, 6, 0, 142, 140, 122, 120, 120, 120,
+			172, 110, 152, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 45, 0, 2, 0, 37, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 45, 10, 35, 20, 15, 25, 15, 12,
+			5, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0, 108, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 4, 22, 13,
+			9, 16, 9, 7, 3, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 47, 0, 4, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11,
+			96, 14, 224, 27, 7, 5, 27, 12, 20, 10, 4, 4, 2, 0, 70, 175, 150, 150, 150, 120, 85, 130, 137, 44, 35, 50, 60, 53, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0, 160, 2, 176, 4,
+			40, 10, 234, 11, 96, 14, 224, 27, 20, 9, 32, 21, 21, 13, 6, 5, 2, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70,
+			130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0,
+			160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 20, 11, 35, 26, 18, 16, 10, 8, 2, 0, 70, 175, 150, 150, 150, 120, 85, 130,
+			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 12, 37, 27, 19, 17, 11, 9, 3, 0, 70, 175, 150, 150,
+			150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 45, 0, 4, 0, 1, 0, 160, 0, 160, 2, 76, 4, 40, 10, 234, 11, 96, 14, 224, 27, 5, 21, 47, 38, 19, 24,
+			15, 11, 4, 0, 70, 175, 150, 150, 150, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 172, 0, 160, 2, 126, 4, 40, 10, 234, 11, 96, 14, 224, 27, 35, 20,
+			42, 34, 17, 21, 15, 11, 3, 0, 142, 140, 122, 120, 120, 120, 172, 110, 152, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14,
+			224, 27, 5, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10,
+			234, 11, 96, 14, 224, 27, 0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 45, 0, 2, 0, 5, 0,
+			148, 0, 120, 1, 100, 5, 84, 11, 32, 13, 135, 15, 224, 28, 45, 35, 32, 58, 36, 40, 51, 27, 10, 0, 102, 105, 127, 120, 120, 120,
+			102, 90, 127, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 124, 0, 209, 1, 112, 3, 84, 11, 68, 12, 191, 14, 160, 26, 0, 66, 26, 78, 70, 48, 48, 30, 17, 0, 120, 120,
+			120, 120, 120, 120, 75, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 0, 0, 2, 0, 5, 0, 98, 0, 106, 1, 230, 5, 60, 10, 12, 13, 37, 15, 114, 26, 75, 20, 14, 45,
+			29, 19, 17, 16, 9, 8, 155, 112, 127, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 17, 0, 64, 0, 189, 1, 20, 5, 84, 11, 52, 13, 235, 15, 128, 27,
+			0, 18, 16, 48, 32, 17, 11, 10, 7, 0, 150, 135, 120, 120, 120, 120, 120, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 140, 0, 3, 0, 1, 0, 115, 0, 200, 1, 180, 5,
+			122, 9, 200, 12, 179, 14, 96, 27, 50, 42, 26, 54, 67, 41, 43, 34, 16, 6, 167, 134, 130, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 115, 0,
+			200, 1, 180, 5, 122, 9, 200, 12, 179, 14, 96, 27, 90, 74, 35, 72, 89, 54, 57, 44, 22, 8, 167, 134, 130, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 115, 0, 200, 1, 180, 5, 122, 9, 200, 12, 179, 14, 96, 27, 0, 38, 25, 51, 64, 39, 41, 32, 16, 6, 167, 134, 130, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 45, 53, 31, 69, 57, 41,
+			31, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 50, 96,
+			42, 93, 77, 56, 42, 26, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14,
+			32, 28, 80, 78, 38, 84, 69, 51, 37, 24, 11, 5, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0,
+			50, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10,
+			112, 13, 191, 14, 32, 28, 0, 43, 28, 62, 52, 37, 28, 17, 8, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54,
+			0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 4, 0, 33, 0,
+			156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 52, 21, 24, 39, 39, 36, 29, 19, 7, 6, 167, 90, 135, 120, 120, 120,
+			122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 75, 29, 29, 46, 47, 43, 35, 23, 8, 7, 167, 90,
+			135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 70, 23, 26, 41, 42, 38, 31, 21,
+			7, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 25, 27, 43,
+			44, 40, 33, 22, 8, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 220, 0, 5, 0, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12,
+			176, 14, 244, 26, 50, 44, 11, 61, 43, 32, 35, 26, 14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 153, 0, 156, 1, 248, 2,
+			120, 10, 148, 12, 176, 14, 244, 26, 90, 75, 15, 79, 57, 41, 46, 34, 19, 8, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 153, 0,
+			156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 50, 60, 13, 71, 51, 37, 41, 30, 17, 7, 165, 126, 145, 120, 120, 120, 165, 115,
+			130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 30, 50, 12, 65, 46, 34, 38, 28, 15, 7, 165, 126, 145, 120,
+			120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 153, 0, 156, 1, 248, 2, 120, 10, 148, 12, 176, 14, 244, 26, 0, 29, 9, 50, 35, 26, 29, 21, 11, 5,
+			165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 45, 41,
+			23, 45, 58, 35, 32, 16, 11, 4, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 160, 0, 32, 2, 132, 3, 216, 9, 164, 11, 141, 14,
+			32, 27, 50, 75, 32, 61, 78, 47, 43, 21, 16, 6, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 32, 2, 132, 3, 216, 9,
+			164, 11, 141, 14, 32, 27, 80, 61, 29, 55, 70, 43, 39, 19, 14, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 160, 0, 32, 2,
+			132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 0, 34, 21, 41, 52, 32, 29, 14, 10, 4, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 71, 0,
+			3, 0, 5, 0, 192, 0, 179, 1, 92, 3, 252, 8, 184, 11, 60, 15, 32, 28, 26, 43, 19, 81, 28, 14, 11, 8, 7, 0, 120, 82,
+			90, 120, 120, 120, 75, 82, 90, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 5, 0, 208, 0, 199, 1, 132, 3, 16, 9, 184, 11, 60, 15, 32, 28, 45, 62, 31, 81, 61, 30, 24, 15,
+			8, 0, 120, 120, 150, 120, 120, 120, 75, 90, 105, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 32, 1, 88, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 0, 53, 31, 69,
+			57, 42, 31, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 180, 0, 5, 0, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13,
+			33, 15, 96, 28, 50, 36, 40, 43, 61, 31, 34, 23, 9, 5, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 160, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 63, 1, 182, 2, 80, 5,
+			64, 10, 139, 13, 33, 15, 96, 28, 40, 67, 54, 58, 82, 43, 46, 31, 13, 7, 221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70,
+			130, 59, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 63, 1,
+			182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 50, 54, 49, 52, 74, 38, 42, 28, 12, 6, 221, 135, 155, 120, 120, 120, 150, 180,
+			150, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 40, 48, 46, 49, 70, 36, 39, 26, 11, 6, 221, 135, 155, 120,
+			120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 63, 1, 182, 2, 80, 5, 64, 10, 139, 13, 33, 15, 96, 28, 0, 21, 30, 32, 46, 24, 26, 17, 7, 4,
+			221, 135, 155, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 200, 0, 5, 0, 1, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 37,
+			28, 41, 51, 15, 25, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14,
+			159, 27, 50, 58, 35, 51, 64, 19, 32, 22, 12, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 160, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 88, 1, 188, 2, 60, 10,
+			88, 12, 176, 14, 159, 27, 50, 58, 35, 51, 64, 19, 32, 22, 12, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60,
+			165, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 88, 1,
+			188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 50, 51, 33, 48, 61, 18, 30, 21, 11, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44,
+			45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			184, 0, 88, 1, 188, 2, 60, 10, 88, 12, 176, 14, 159, 27, 0, 37, 28, 41, 51, 15, 25, 18, 9, 5, 177, 100, 131, 120, 120, 120,
+			105, 135, 135, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 58, 0, 3, 0, 5, 0, 116, 0, 200, 0, 26, 4, 102, 8, 232, 13, 24, 16, 124, 21, 48, 10, 21, 12, 8, 4, 4, 4,
+			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 55, 65, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 116, 0, 216, 0, 251, 4, 202, 8, 102, 13, 24, 16, 124, 21, 10, 12, 20, 16,
+			10, 6, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 55, 65, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
+			0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 35, 0, 2, 0, 5, 0, 116, 0, 232, 0, 252, 3,
+			60, 10, 232, 13, 24, 16, 124, 21, 35, 8, 16, 14, 4, 2, 2, 2, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0,
+			160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27, 0, 4, 22, 17, 8, 11, 8, 6, 2, 0, 70, 175, 150, 120, 120, 120, 85, 130,
+			187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			58, 0, 3, 0, 5, 0, 116, 0, 208, 0, 104, 6, 40, 10, 232, 13, 24, 16, 124, 21, 48, 7, 12, 16, 8, 4, 4, 4, 0, 0,
+			200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 126, 0, 212, 0, 34, 6, 171, 9, 102, 13, 24, 16, 124, 21, 10, 10, 16, 18, 10, 6,
+			4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 50, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 216, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 15,
+			20, 20, 12, 8, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 58, 0, 3, 0, 5, 0, 116, 0, 200, 0, 208, 7, 34, 11,
+			232, 13, 24, 16, 124, 21, 48, 11, 22, 13, 9, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 75, 140, 48,
+			0, 0, 0, 0, 60, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 116, 0, 200, 0,
+			214, 6, 40, 10, 102, 13, 24, 16, 124, 21, 10, 12, 20, 16, 10, 6, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
+			30, 75, 140, 48, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			116, 0, 200, 0, 220, 5, 46, 9, 228, 12, 24, 16, 124, 21, 0, 12, 18, 18, 10, 7, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175,
+			200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 35, 0, 3, 0, 5, 0, 116, 0, 200, 0, 198, 7, 34, 11, 232, 13, 24, 16, 124, 21, 20, 10, 19, 19, 7, 3, 3, 3,
+			0, 0, 100, 150, 150, 150, 150, 150, 100, 150, 150, 44, 30, 75, 140, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 150, 0, 180, 1, 59, 6, 165, 10, 233, 12, 60, 15, 174, 24, 15, 11, 28, 24,
+			11, 11, 9, 7, 1, 0, 85, 162, 150, 135, 135, 135, 100, 150, 150, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 160, 2, 176, 4, 40, 10, 234, 11, 96, 14, 224, 27,
+			0, 15, 40, 32, 16, 20, 16, 12, 4, 0, 70, 175, 150, 120, 120, 120, 85, 130, 187, 44, 45, 70, 130, 53, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 188, 2, 51, 0, 255, 0, 0, 1, 0, 2, 2, 5,
+			3, 6, 5, 8, 5, 8, 2, 0, 197, 190, 230, 30, 57, 50, 29, 11, 254, 227, 221, 233, 4, 27, 27, 14, 254, 235, 231, 234, 243, 254,
+			14, 25, 22, 11, 3, 250, 246, 245, 249, 2, 8, 11, 10, 5, 0, 247, 251, 248, 250, 1, 1, 2, 3, 255, 7, 251, 250, 249, 246, 6,
+			9, 17, 21, 18, 14, 14, 14, 16, 217, 147, 162, 234, 65, 82, 67, 26, 6, 228, 208, 211, 245, 23, 42, 52, 46, 4, 203, 170, 192, 245,
+			35, 57, 45, 26, 9, 236, 231, 212, 239, 3, 20, 34, 34, 12, 244, 221, 213, 247, 5, 23, 34, 25, 13, 9, 245, 243, 196, 218, 233, 25,
+			56, 34, 23, 246, 229, 224, 245, 2, 20, 23, 29, 16, 251, 231, 236, 228, 244, 3, 16, 26, 12, 252, 0, 239, 253, 239, 10, 15, 16, 4,
+			4, 253, 245, 250, 247, 6, 9, 255, 18, 0, 246, 250, 236, 11, 14, 12, 240, 242, 250, 249, 16, 16, 2, 250, 0, 1, 13, 14, 11, 23,
+			252, 235, 212, 208, 241, 14, 34, 37, 31, 16, 254, 229, 215, 230, 244, 249, 34, 47, 61, 25, 234, 208, 221, 238, 2, 225, 248, 49, 55, 24,
+			235, 198, 230, 251, 8, 27, 20, 20, 18, 3, 238, 243, 242, 255, 1, 252, 13, 13, 0, 235, 243, 3, 254, 253, 254, 13, 15, 12, 0, 249,
+			3, 3, 254, 18, 15, 8, 254, 208, 217, 227, 254, 40, 27, 23, 15, 0, 251, 240, 242, 4, 6, 14, 16, 1, 250, 230, 228, 240, 0, 15,
+			26, 21, 8, 250, 254, 255, 252, 252, 3, 4, 17, 15, 253, 246, 219, 232, 1, 12, 12, 10, 255, 255, 253, 249, 255, 2, 13, 22, 0, 59,
+			23, 15, 0, 202, 131, 161, 242, 60, 99, 41, 39, 0, 245, 220, 219, 248, 17, 65, 81, 15, 197, 157, 184, 227, 24, 67, 64, 44, 233, 204,
+			227, 244, 241, 31, 44, 46, 20, 253, 233, 202, 206, 235, 26, 66, 33, 13, 239, 212, 218, 234, 28, 26, 24, 21, 4, 253, 236, 219, 246, 0,
+			6, 35, 34, 25, 240, 234, 230, 235, 239, 242, 13, 39, 46, 30, 0, 225, 190, 215, 12, 36, 38, 23, 253, 241, 248, 3, 0, 247, 233, 236,
+			14, 34, 32, 6, 247, 228, 235, 0, 8, 10, 0, 246, 0, 19, 16, 4, 250, 239, 237, 249, 14, 13, 9, 6, 252, 6, 3, 251, 236, 242,
+			244, 1, 27, 27, 17, 7, 243, 238, 239, 239, 252, 1, 22, 21, 16, 12, 233, 236, 246, 247, 5, 8, 3, 16, 18, 14, 4, 235, 227, 227,
+			253, 21, 26, 23, 7, 247, 240, 245, 236, 0, 6, 0, 32, 8, 16, 0, 237, 247, 232, 3, 11, 23, 6, 230, 250, 253, 9, 16, 3, 0,
+			241, 1, 253, 13, 252, 244, 23, 15, 2, 248, 230, 240, 2, 6, 20, 24, 4, 1, 244, 226, 254, 236, 8, 27, 4, 15, 9, 250, 240, 238,
+			247, 28, 30, 20, 245, 216, 223, 242, 12, 27, 31, 14, 252, 247, 239, 242, 252, 0, 32, 19, 5, 253, 232, 220, 242, 16, 30, 35, 8, 249,
+			229, 226, 250, 18, 39, 21, 235, 226, 223, 234, 26, 52, 50, 13, 223, 202, 216, 252, 37, 35, 13, 247, 238, 11, 20, 2, 236, 218, 229, 8,
+			42, 51, 24, 238, 214, 223, 250, 14, 21, 11, 255, 250, 3, 12, 6, 249, 242, 242, 255, 10, 9, 10, 3, 250, 254, 254, 0, 1, 0, 1,
+			255, 252, 1, 7, 8, 7, 254, 246, 245, 248, 3, 12, 10, 0, 255, 250, 0, 11, 2, 253, 244, 245, 2, 15, 16, 12, 245, 240, 242, 251,
+			15, 11, 7, 252, 0, 5, 6, 254, 246, 242, 253, 12, 12, 6, 249, 247, 251, 4, 7, 8, 0, 250, 254, 5, 0, 5, 3, 247, 7, 253,
+			255, 0, 242, 252, 0, 14, 16, 0, 249, 0, 253, 6, 10, 252, 251, 253, 255, 6, 7, 249, 249, 252, 1, 7, 9, 6, 244, 247, 249, 3,
+			13, 6, 125, 0, 3, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 65, 23, 53, 41, 25, 16, 13, 16,
+			8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 60, 23, 53, 41,
+			25, 16, 13, 16, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27,
+			0, 13, 42, 29, 18, 11, 9, 11, 6, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 136, 2, 15, 0, 32, 20, 44, 55, 14, 36, 37, 12,
+			13, 23, 241, 240, 13, 253, 5, 17, 226, 0, 245, 12, 228, 250, 230, 250, 237, 251, 22, 3, 53, 11, 2, 39, 1, 20, 40, 35, 9, 221,
+			25, 18, 17, 227, 252, 27, 247, 0, 51, 28, 29, 37, 34, 30, 48, 18, 30, 63, 55, 54, 252, 61, 66, 33, 52, 35, 69, 52, 75, 53,
+			31, 54, 72, 31, 27, 58, 12, 41, 44, 43, 245, 26, 23, 5, 237, 4, 247, 244, 21, 3, 241, 21, 3, 6, 5, 31, 7, 25, 43, 11,
+			36, 64, 37, 82, 41, 21, 47, 36, 40, 21, 51, 64, 13, 18, 59, 22, 49, 255, 17, 45, 30, 21, 23, 18, 15, 32, 25, 22, 226, 19,
+			26, 247, 32, 248, 5, 17, 41, 6, 24, 12, 234, 27, 23, 59, 249, 1, 14, 32, 43, 250, 246, 252, 42, 35, 251, 8, 45, 245, 6, 3,
+			5, 7, 40, 226, 18, 30, 0, 243, 22, 251, 3, 57, 50, 230, 235, 89, 9, 234, 62, 14, 240, 82, 68, 216, 7, 20, 16, 10, 247, 21,
+			236, 223, 59, 40, 166, 4, 245, 223, 22, 252, 17, 15, 27, 249, 32, 22, 245, 3, 46, 49, 228, 59, 41, 249, 44, 29, 25, 9, 246, 69,
+			241, 36, 25, 7, 0, 18, 47, 217, 248, 0, 241, 32, 46, 251, 238, 24, 67, 28, 230, 35, 31, 47, 13, 41, 85, 0, 14, 72, 239, 57,
+			70, 245, 16, 31, 22, 24, 32, 30, 36, 39, 75, 7, 217, 13, 61, 15, 253, 57, 66, 223, 38, 77, 36, 235, 242, 66, 60, 237, 2, 52,
+			8, 48, 25, 208, 61, 45, 234, 227, 12, 68, 202, 242, 97, 227, 252, 94, 216, 240, 50, 255, 4, 252, 41, 235, 18, 81, 235, 17, 251, 64,
+			214, 213, 80, 239, 210, 80, 33, 185, 39, 226, 37, 239, 224, 47, 255, 36, 38, 14, 62, 254, 12, 42, 23, 239, 48, 4, 16, 239, 5, 60,
+			245, 68, 221, 240, 54, 234, 212, 22, 22, 16, 253, 95, 49, 146, 20, 89, 202, 10, 102, 228, 243, 84, 26, 248, 22, 78, 235, 224, 38, 37,
+			196, 28, 75, 209, 16, 62, 234, 247, 13, 244, 56, 11, 237, 35, 58, 233, 251, 67, 36, 214, 53, 61, 0, 77, 236, 5, 58, 47, 10, 251,
+			11, 42, 0, 224, 14, 10, 21, 241, 20, 50, 28, 203, 238, 72, 60, 12, 250, 18, 53, 1, 14, 30, 238, 41, 60, 255, 253, 41, 29, 236,
+			202, 59, 73, 203, 2, 255, 187, 77, 30, 153, 253, 96, 2, 144, 24, 109, 205, 195, 66, 55, 9, 236, 192, 41, 44, 7, 203, 41, 97, 239,
+			215, 252, 69, 53, 244, 226, 85, 95, 183, 208, 72, 64, 242, 231, 245, 32, 51, 235, 10, 252, 49, 11, 161, 64, 78, 240, 248, 16, 72, 52,
+			234, 45, 31, 226, 4, 238, 3, 40, 17, 244, 254, 248, 242, 250, 239, 13, 13, 221, 9, 215, 2, 80, 10, 248, 40, 14, 38, 34, 210, 245,
+			34, 253, 7, 7, 70, 13, 215, 13, 34, 47, 230, 218, 68, 51, 8, 36, 236, 10, 50, 183, 6, 0, 187, 20, 28, 215, 234, 6, 245, 53,
+			239, 198, 36, 7, 237, 36, 34, 16, 14, 215, 4, 55, 245, 14, 91, 59, 6, 2, 19, 44, 40, 237, 72, 120, 64, 6, 39, 66, 47, 16,
+			14, 71, 57, 19, 252, 23, 13, 9, 70, 25, 200, 11, 18, 233, 230, 36, 51, 29, 65, 45, 18, 249, 8, 7, 237, 41, 26, 250, 72, 87,
+			203, 240, 85, 2, 144, 217, 11, 13, 37, 4, 41, 120, 30, 195, 248, 67, 11, 184, 215, 60, 43, 214, 27, 120, 49, 209, 223, 20, 40, 194,
+			173, 246, 53, 20, 253, 23, 249, 1, 249, 213, 3, 0, 0, 44, 0, 0, 0, 0, 126, 127, 0, 114, 117, 34, 0, 131, 117, 12, 34, 0,
+			13, 117, 0, 14, 117, 0, 115, 117, 0, 116, 117, 0, 118, 117, 55, 0, 119, 122, 0, 121, 35, 12, 0, 130, 35, 34, 0, 120, 35, 12,
+			0, 140, 35, 57, 0, 148, 35, 57, 131, 34, 0, 147, 35, 57, 131, 34, 0, 138, 35, 58, 0, 149, 35, 58, 13, 0, 153, 113, 0, 122,
+			112, 0, 155, 36, 0, 143, 112, 12, 34, 0, 141, 112, 12, 118, 0, 124, 125, 0, 113, 126, 0, 132, 37, 12, 0, 144, 37, 34, 0, 145,
+			37, 12, 34, 0, 134, 127, 0, 133, 127, 12, 0, 152, 39, 0, 135, 127, 34, 0, 136, 127, 34, 0, 142, 127, 57, 0, 139, 128, 0, 154,
+			116, 0, 117, 40, 0, 137, 129, 0, 146, 40, 34, 0, 129, 142, 0, 150, 37, 34, 0, 151, 117, 34, 0, 44, 34, 0, 108, 47, 0, 58,
+			133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 5, 0, 1, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28,
+			50, 38, 37, 37, 65, 40, 34, 23, 9, 5, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13,
+			33, 15, 96, 28, 40, 70, 50, 50, 89, 54, 46, 31, 13, 7, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 175, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 63, 1, 160, 2, 124, 6,
+			64, 10, 139, 13, 33, 15, 96, 28, 50, 57, 45, 45, 80, 49, 42, 28, 12, 6, 221, 200, 155, 120, 120, 120, 150, 245, 150, 44, 45, 70,
+			130, 59, 185, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 63, 1,
+			160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 40, 45, 40, 40, 71, 43, 37, 25, 10, 5, 221, 200, 155, 120, 120, 120, 150, 245,
+			150, 44, 45, 70, 130, 59, 185, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 63, 1, 160, 2, 124, 6, 64, 10, 139, 13, 33, 15, 96, 28, 0, 22, 28, 28, 49, 30, 26, 17, 7, 4, 221, 200, 155, 120,
+			120, 120, 150, 245, 150, 44, 45, 70, 130, 59, 185, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 141, 0, 97, 1, 68, 7, 134, 9, 242, 12, 208, 14, 66, 26, 45, 39, 21, 58, 49, 47,
+			48, 27, 11, 7, 167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 141, 0, 97, 1, 68, 7, 134, 9, 242, 12, 208, 14, 66, 26, 70, 75,
+			29, 81, 68, 66, 66, 38, 15, 10, 167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 141, 0, 97, 1, 68, 7, 134, 9, 242, 12, 208, 14,
+			66, 26, 60, 61, 26, 73, 61, 59, 60, 34, 14, 9, 167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 141, 0, 97, 1, 68, 7, 134, 9,
+			242, 12, 208, 14, 66, 26, 0, 34, 20, 55, 46, 45, 45, 26, 10, 7, 167, 100, 124, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 215, 0, 5, 0, 1, 0,
+			32, 1, 92, 3, 192, 5, 102, 10, 158, 13, 27, 15, 118, 27, 45, 35, 30, 56, 58, 37, 34, 23, 6, 4, 209, 165, 164, 130, 120, 120,
+			167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 32, 1, 92, 3, 192, 5, 102, 10, 158, 13, 27, 15, 118, 27, 60, 74, 44, 82, 84, 54, 49, 34, 9, 6, 209, 165,
+			164, 130, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 56, 1, 207, 2, 86, 6, 216, 9, 152, 13, 112, 15, 220, 28, 70, 68, 39, 69, 75, 57, 44, 34,
+			12, 7, 255, 144, 161, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 6, 1, 50, 2, 45, 7, 223, 9, 77, 13, 225, 14, 189, 28, 40, 48, 32, 52,
+			60, 51, 42, 35, 11, 7, 228, 126, 148, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 0, 1, 32, 2, 70, 7, 225, 9, 68, 13, 208, 14, 185, 28,
+			0, 31, 25, 41, 48, 41, 34, 29, 9, 6, 224, 124, 146, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 105, 0, 4, 0, 1, 0, 116, 0, 13, 2, 161, 5,
+			232, 8, 188, 12, 116, 14, 96, 27, 30, 16, 19, 37, 29, 17, 15, 15, 5, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 116, 0,
+			13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 45, 19, 22, 41, 33, 19, 17, 17, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 30, 19, 22, 41, 33, 19, 17, 17, 6, 4, 167, 150, 135, 120,
+			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 0, 13, 16, 31, 34, 21, 22, 17, 8, 5,
+			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 144, 0, 224, 1, 32, 3, 140, 10, 228, 12, 120, 15, 88, 27, 45, 51,
+			23, 55, 59, 35, 32, 18, 13, 5, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 224, 1, 32, 3, 140, 10, 228, 12, 120, 15,
+			88, 27, 60, 94, 32, 75, 80, 47, 44, 25, 18, 8, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 144, 0, 224, 1, 32, 3, 140, 10,
+			228, 12, 120, 15, 88, 27, 60, 75, 29, 67, 71, 42, 39, 22, 16, 7, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 144, 0, 224, 1,
+			32, 3, 140, 10, 228, 12, 120, 15, 88, 27, 0, 44, 22, 51, 54, 32, 30, 17, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0,
 			4, 0, 1, 0, 229, 0, 216, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27, 50, 53, 31, 61, 69, 39, 42, 24, 13, 6, 189, 159,
-			136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 229, 0, 216, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27, 70, 82, 38, 77, 86, 48, 53, 29,
-			17, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 229, 0, 216, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27, 50, 68, 35, 70,
-			78, 44, 48, 27, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 229, 0, 224, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27,
+			136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 229, 0, 216, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27, 70, 82, 38, 77, 86, 48, 53, 29,
+			17, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 229, 0, 216, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27, 50, 68, 35, 70,
+			78, 44, 48, 27, 15, 6, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 229, 0, 224, 2, 20, 5, 35, 10, 227, 12, 233, 14, 214, 27,
 			0, 38, 27, 54, 55, 34, 37, 21, 12, 5, 189, 159, 136, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 115, 0, 4, 0, 1, 0, 136, 0, 224, 1, 24, 6,
-			116, 9, 248, 12, 240, 15, 95, 27, 45, 44, 27, 57, 66, 39, 41, 24, 16, 6, 170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 136, 0,
-			224, 1, 24, 6, 116, 9, 248, 12, 220, 15, 95, 27, 70, 71, 34, 72, 83, 49, 52, 30, 20, 8, 170, 137, 135, 122, 124, 128, 197, 137,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 136, 0, 234, 1, 4, 6, 92, 9, 227, 12, 157, 15, 95, 27, 70, 64, 33, 69, 79, 47, 50, 30, 19, 7, 170, 137, 135, 122,
-			124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 136, 0, 4, 2, 240, 5, 36, 9, 178, 12, 10, 15, 95, 27, 0, 36, 24, 52, 59, 35, 38, 25, 14, 5,
-			170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 5, 0, 1, 0, 144, 0, 120, 1, 188, 7, 120, 10, 132, 13, 160, 15, 128, 28, 45, 45,
-			22, 58, 58, 58, 47, 44, 11, 8, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 144, 0, 120, 1, 188, 7, 120, 10, 132, 13, 160, 15,
-			128, 28, 41, 91, 32, 84, 84, 84, 68, 64, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 208, 1, 188, 7, 80, 10,
-			132, 13, 216, 14, 128, 28, 74, 93, 38, 84, 88, 84, 68, 51, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 208, 1,
-			148, 7, 60, 10, 92, 13, 196, 14, 128, 28, 40, 93, 38, 84, 88, 84, 68, 51, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			200, 0, 32, 2, 8, 7, 136, 9, 228, 12, 76, 14, 128, 28, 0, 44, 30, 58, 61, 58, 47, 36, 11, 8, 185, 107, 127, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 255, 0, 5, 0, 1, 0, 31, 1, 64, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 45, 37, 28, 51, 55, 50, 39, 28,
-			9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 22, 1, 160, 2, 204, 6, 255, 9, 124, 13, 33, 15, 156, 28, 70, 58, 37, 68,
-			71, 61, 48, 35, 12, 7, 245, 138, 159, 124, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 242, 0, 97, 3, 196, 5, 122, 10, 204, 13, 109, 15, 140, 27,
-			80, 78, 43, 84, 81, 56, 44, 31, 14, 6, 250, 166, 163, 142, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10, 216, 13,
-			120, 15, 102, 27, 60, 83, 41, 81, 77, 51, 41, 29, 13, 5, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 236, 0, 128, 3, 160, 5,
-			140, 10, 216, 13, 120, 15, 102, 27, 0, 50, 32, 63, 60, 40, 32, 22, 10, 4, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 199, 0, 6, 0,
-			5, 0, 24, 1, 240, 2, 116, 4, 4, 11, 152, 13, 35, 15, 64, 27, 51, 53, 27, 57, 72, 38, 39, 19, 3, 8, 225, 165, 135, 120,
-			120, 120, 225, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 24, 1, 240, 2, 116, 4, 4, 11, 72, 13, 191, 14, 64, 27, 75, 95, 34, 81, 88, 51, 55, 37, 5, 7,
-			167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 24, 1, 240, 2, 196, 4, 200, 10, 72, 13, 191, 14, 64, 27, 30, 77, 32, 77, 83, 48,
-			52, 35, 5, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 33, 0, 196, 0, 224, 2, 249, 5, 232, 8, 188, 12, 247, 13, 64, 27, 33, 39,
-			29, 59, 54, 45, 44, 45, 8, 8, 167, 150, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 193, 0, 208, 1, 160, 7, 173, 9, 21, 13, 229, 14,
-			64, 27, 40, 41, 30, 57, 50, 49, 43, 40, 14, 9, 167, 105, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 192, 0, 168, 1, 208, 7, 196, 9,
-			32, 13, 0, 15, 64, 27, 0, 30, 27, 50, 44, 44, 38, 34, 13, 8, 167, 100, 180, 120, 120, 120, 137, 85, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 225, 0, 6, 0, 1, 0,
-			177, 0, 117, 1, 37, 3, 102, 10, 50, 12, 55, 15, 148, 26, 45, 38, 11, 53, 49, 26, 23, 20, 12, 6, 162, 127, 149, 120, 120, 120,
-			162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 177, 0, 117, 1, 37, 3, 102, 10, 50, 12, 55, 15, 148, 26, 50, 60, 13, 66, 61, 32, 29, 26, 16, 8, 162, 127,
-			149, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 189, 0, 168, 1, 84, 3, 128, 10, 68, 12, 5, 15, 185, 26, 50, 64, 24, 59, 72, 37, 34, 31,
-			17, 8, 163, 130, 147, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 244, 0, 128, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27, 40, 94, 30, 75,
-			97, 50, 46, 46, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 244, 0, 128, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27,
-			40, 84, 29, 71, 92, 47, 44, 44, 14, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 244, 0, 128, 2, 36, 4, 240, 10, 148, 12,
-			41, 14, 96, 27, 0, 45, 23, 53, 64, 36, 33, 33, 11, 5, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 152, 0,
-			24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 27, 6, 51, 45, 46, 46, 22, 10, 5, 167, 105, 120, 120, 120, 120, 167, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 80, 65, 9, 78, 70, 70, 71, 34, 16, 8, 167, 105, 120, 120,
-			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 161, 0, 67, 1, 160, 8, 207, 10, 36, 13, 208, 14, 0, 27, 65, 48, 12, 66, 59, 62, 59, 31, 13, 7,
-			166, 105, 121, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 31, 1, 72, 2, 244, 6, 0, 10, 104, 13, 15, 15, 224, 28, 60, 38, 30, 52, 55, 49,
-			38, 27, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 31, 1, 72, 2, 244, 6, 0, 10, 104, 13, 15, 15, 224, 28, 0, 33,
-			28, 48, 51, 46, 35, 25, 9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 240, 0, 5, 0, 1, 0, 168, 0, 240, 1, 132, 3, 216, 9,
-			164, 11, 141, 14, 32, 27, 45, 54, 23, 57, 64, 39, 35, 17, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 240, 1,
-			132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 80, 105, 33, 80, 89, 54, 49, 24, 18, 7, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			170, 0, 224, 1, 138, 3, 186, 9, 168, 11, 141, 14, 76, 27, 55, 83, 27, 74, 79, 48, 43, 22, 16, 6, 164, 133, 148, 120, 120, 120,
-			165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 192, 0, 120, 1, 32, 3, 172, 8, 204, 11, 141, 14, 224, 28, 60, 44, 23, 63, 38, 26, 17, 15, 7, 7, 162, 120,
-			135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 104, 1, 32, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 19, 57, 37, 21, 14, 11,
-			8, 7, 152, 120, 97, 120, 120, 120, 107, 90, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 16, 1, 96, 2, 8, 7, 225, 9, 104, 13, 15, 15, 224, 28,
-			40, 29, 23, 47, 51, 46, 36, 26, 8, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 16, 1, 96, 2, 8, 7, 225, 9, 104, 13,
-			15, 15, 224, 28, 66, 69, 36, 73, 77, 71, 55, 40, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 6, 1, 64, 2, 20, 7,
-			226, 9, 99, 13, 18, 15, 157, 28, 94, 58, 30, 66, 70, 65, 50, 37, 12, 8, 237, 130, 156, 120, 120, 120, 135, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0,
-			112, 1, 128, 7, 40, 10, 50, 13, 48, 15, 64, 26, 40, 37, 19, 53, 51, 51, 47, 29, 11, 8, 181, 111, 129, 120, 120, 120, 135, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 152, 0, 152, 1, 168, 7, 40, 10, 52, 13, 60, 15, 96, 25, 0, 30, 24, 56, 44, 48, 45, 26, 10, 8, 160, 105, 120, 120,
-			120, 120, 130, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 201, 4, 37, 0, 1, 5, 238, 14, 15, 233, 0, 15, 12, 244, 232, 21, 11, 0, 252, 238, 27, 254, 250, 251, 0, 30,
-			251, 232, 4, 19, 244, 249, 15, 238, 27, 244, 247, 11, 249, 2, 8, 250, 2, 7, 249, 8, 243, 14, 242, 2, 29, 243, 242, 0, 20, 248,
-			3, 5, 245, 7, 2, 12, 248, 239, 10, 18, 3, 229, 11, 9, 248, 28, 222, 16, 19, 252, 19, 249, 5, 237, 227, 235, 239, 35, 16, 242,
-			248, 244, 11, 239, 33, 20, 213, 26, 249, 5, 21, 227, 0, 35, 39, 240, 220, 12, 29, 29, 243, 242, 16, 29, 2, 229, 13, 0, 19, 8,
-			250, 245, 19, 4, 247, 220, 239, 234, 211, 242, 20, 8, 0, 6, 12, 238, 224, 14, 41, 195, 231, 247, 188, 236, 15, 234, 1, 25, 3, 231,
-			252, 28, 27, 35, 252, 236, 23, 58, 255, 232, 34, 41, 255, 8, 19, 252, 252, 29, 46, 235, 238, 74, 8, 189, 13, 27, 235, 233, 31, 14,
-			236, 228, 253, 23, 237, 239, 16, 234, 231, 29, 241, 242, 4, 16, 236, 239, 38, 228, 234, 68, 238, 216, 40, 240, 255, 24, 247, 11, 239, 255,
-			3, 21, 18, 227, 243, 44, 224, 253, 15, 5, 10, 216, 247, 51, 8, 200, 4, 36, 250, 2, 218, 249, 45, 2, 213, 11, 13, 177, 229, 20,
-			1, 232, 30, 21, 208, 26, 55, 18, 194, 20, 42, 7, 14, 218, 8, 59, 243, 251, 29, 252, 2, 247, 1, 15, 18, 243, 253, 10, 4, 255,
-			11, 252, 232, 248, 23, 250, 242, 243, 21, 246, 222, 33, 252, 244, 13, 253, 221, 255, 38, 250, 201, 55, 247, 214, 13, 0, 250, 2, 217, 218,
-			251, 51, 210, 204, 33, 55, 237, 217, 34, 13, 11, 232, 0, 80, 228, 255, 8, 19, 58, 210, 25, 40, 226, 51, 246, 237, 37, 12, 255, 234,
-			27, 26, 203, 36, 19, 221, 3, 1, 0, 237, 250, 28, 221, 237, 35, 240, 240, 1, 229, 253, 0, 7, 9, 244, 245, 233, 46, 251, 210, 26,
-			14, 248, 238, 33, 13, 203, 28, 26, 224, 5, 5, 252, 25, 245, 15, 1, 250, 29, 236, 237, 54, 221, 206, 247, 8, 247, 187, 21, 51, 222,
-			25, 35, 233, 12, 25, 219, 254, 45, 3, 245, 21, 26, 5, 253, 0, 5, 237, 35, 236, 226, 22, 43, 206, 238, 52, 19, 226, 236, 21, 1,
-			249, 244, 244, 4, 54, 223, 204, 22, 5, 0, 11, 197, 240, 53, 218, 232, 53, 210, 10, 21, 251, 244, 0, 2, 11, 8, 255, 249, 241, 38,
-			249, 217, 26, 27, 5, 11, 251, 218, 55, 26, 199, 5, 30, 10, 12, 198, 38, 7, 221, 38, 255, 227, 13, 6, 43, 224, 215, 62, 0, 235,
-			42, 212, 243, 43, 253, 253, 224, 16, 28, 244, 12, 4, 223, 251, 51, 226, 239, 19, 225, 30, 32, 213, 238, 6, 32, 231, 232, 27, 240, 238,
-			13, 11, 233, 247, 27, 237, 3, 250, 2, 22, 216, 19, 25, 222, 36, 10, 211, 254, 37, 46, 215, 220, 50, 230, 240, 30, 250, 246, 232, 31,
-			5, 232, 32, 243, 42, 239, 253, 31, 233, 14, 220, 48, 31, 210, 15, 245, 11, 15, 2, 237, 24, 251, 8, 217, 47, 33, 207, 7, 31, 17,
-			190, 11, 20, 242, 218, 34, 10, 179, 23, 52, 222, 236, 14, 25, 16, 246, 243, 10, 239, 183, 244, 12, 195, 241, 62, 188, 9, 23, 249, 246,
-			232, 88, 27, 171, 23, 49, 21, 34, 27, 225, 11, 7, 71, 197, 217, 93, 254, 213, 27, 22, 240, 25, 16, 224, 23, 23, 223, 36, 243, 220,
-			57, 242, 219, 218, 38, 13, 172, 28, 18, 226, 179, 57, 41, 164, 244, 66, 208, 251, 248, 234, 23, 34, 29, 195, 45, 248, 250, 12, 0, 20,
-			234, 33, 47, 208, 3, 63, 207, 34, 18, 185, 0, 31, 252, 216, 254, 19, 36, 10, 217, 220, 22, 34, 251, 217, 245, 70, 2, 181, 18, 35,
-			220, 96, 161, 18, 92, 165, 252, 42, 254, 10, 1, 228, 32, 0, 246, 2, 4, 30, 18, 240, 235, 26, 235, 225, 246, 35, 31, 184, 224, 65,
-			251, 241, 246, 13, 28, 232, 234, 48, 191, 233, 90, 231, 226, 43, 8, 191, 24, 62, 206, 221, 38, 25, 189, 252, 72, 218, 222, 69, 5, 208,
-			46, 245, 209, 21, 53, 250, 180, 54, 0, 198, 76, 7, 194, 26, 41, 235, 1, 240, 31, 240, 237, 51, 199, 237, 112, 217, 177, 52, 24, 222,
-			6, 238, 241, 55, 217, 183, 59, 58, 208, 241, 17, 35, 214, 0, 25, 255, 31, 219, 233, 54, 0, 247, 1, 228, 30, 215, 20, 53, 200, 20,
-			249, 238, 83, 254, 142, 16, 125, 236, 153, 40, 54, 253, 18, 206, 254, 49, 36, 205, 182, 51, 75, 223, 172, 9, 247, 48, 245, 240, 251, 8,
-			20, 226, 1, 24, 232, 3, 29, 15, 4, 252, 252, 12, 0, 16, 242, 66, 239, 184, 4, 38, 15, 225, 245, 21, 1, 241, 3, 219, 11, 227,
-			250, 38, 248, 188, 216, 77, 64, 187, 240, 5, 69, 230, 203, 57, 39, 243, 5, 240, 39, 19, 208, 248, 28, 2, 234, 248, 6, 248, 14, 11,
-			250, 24, 30, 221, 218, 44, 9, 250, 203, 242, 17, 19, 254, 202, 217, 49, 241, 241, 0, 238, 14, 32, 0, 230, 253, 44, 0, 223, 86, 233,
-			246, 39, 1, 246, 6, 4, 12, 234, 3, 38, 237, 16, 223, 223, 50, 23, 229, 211, 250, 27, 254, 246, 233, 219, 46, 250, 188, 40, 20, 239,
-			244, 42, 19, 233, 48, 18, 202, 9, 11, 229, 16, 22, 218, 245, 35, 32, 238, 223, 58, 7, 0, 11, 205, 221, 74, 25, 186, 10, 34, 244,
-			222, 250, 53, 16, 200, 20, 37, 254, 252, 227, 13, 18, 14, 252, 252, 31, 216, 204, 28, 50, 6, 234, 225, 35, 1, 230, 251, 22, 11, 2,
-			237, 0, 42, 241, 212, 38, 32, 227, 13, 9, 209, 10, 27, 238, 210, 248, 20, 231, 249, 13, 33, 0, 236, 34, 21, 9, 11, 227, 12, 29,
-			249, 226, 245, 14, 224, 196, 1, 3, 196, 242, 12, 37, 234, 243, 40, 16, 250, 21, 3, 252, 18, 11, 209, 241, 70, 18, 248, 3, 1, 249,
-			229, 16, 29, 236, 64, 29, 214, 13, 18, 4, 253, 240, 15, 4, 15, 239, 216, 10, 32, 246, 4, 239, 232, 222, 241, 4, 10, 1, 242, 238,
-			255, 12, 227, 242, 16, 248, 244, 10, 248, 244, 7, 0, 28, 35, 12, 237, 5, 32, 20, 17, 226, 0, 26, 4, 231, 15, 26, 224, 239, 31,
-			22, 244, 233, 246, 0, 0, 18, 246, 244, 24, 11, 253, 3, 242, 241, 0, 14, 18, 254, 247, 249, 1, 0, 243, 4, 13, 2, 243, 0, 6,
-			1, 29, 219, 236, 44, 3, 248, 243, 6, 48, 241, 242, 31, 4, 12, 252, 250, 22, 13, 240, 247, 1, 253, 237, 231, 246, 6, 1, 241, 252,
-			1, 6, 252, 247, 16, 11, 0, 17, 7, 7, 253, 0, 10, 232, 254, 20, 3, 250, 237, 245, 0, 0, 14, 254, 247, 252, 243, 0, 252, 248,
-			6, 7, 252, 0, 0, 0, 165, 0, 4, 0, 1, 0, 144, 0, 224, 1, 32, 3, 140, 10, 228, 12, 120, 15, 88, 27, 45, 51, 23, 55,
-			59, 35, 32, 18, 13, 5, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 144, 0, 224, 1, 32, 3, 140, 10, 228, 12, 120, 15, 88, 27,
-			60, 94, 32, 75, 80, 47, 44, 25, 18, 8, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 144, 0, 224, 1, 32, 3, 140, 10, 228, 12,
-			120, 15, 88, 27, 60, 75, 29, 67, 71, 42, 39, 22, 16, 7, 165, 131, 145, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 224, 1, 32, 3,
-			140, 10, 228, 12, 120, 15, 88, 27, 0, 44, 22, 51, 54, 32, 30, 17, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 156, 0, 4, 0,
-			1, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 46, 49, 30, 64, 61, 39, 37, 21, 11, 5, 200, 157, 123, 120,
-			120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 50, 85, 40, 84, 80, 52, 48, 28, 15, 6,
-			200, 157, 123, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 60, 79, 38, 81, 77, 50,
-			46, 27, 14, 6, 200, 157, 123, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 0, 52,
-			31, 66, 63, 40, 38, 22, 11, 5, 200, 157, 123, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 4, 0, 1, 0, 136, 0, 224, 1, 4, 6, 36, 9,
-			248, 12, 220, 15, 95, 27, 45, 47, 29, 60, 60, 42, 44, 25, 17, 6, 170, 137, 153, 122, 124, 128, 197, 137, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 136, 0, 224, 1,
-			4, 6, 36, 9, 248, 12, 220, 15, 95, 27, 50, 74, 36, 76, 76, 52, 55, 32, 21, 8, 170, 137, 153, 122, 124, 128, 197, 137, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			136, 0, 168, 1, 180, 5, 72, 8, 248, 12, 220, 15, 95, 27, 70, 79, 36, 76, 68, 52, 55, 32, 21, 8, 170, 137, 165, 122, 124, 128,
-			197, 137, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 136, 0, 144, 1, 84, 6, 72, 8, 248, 12, 220, 15, 95, 27, 0, 38, 24, 51, 54, 35, 29, 21, 14, 5, 170, 137,
-			135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 240, 0, 5, 0, 1, 0, 168, 0, 240, 1, 132, 3, 216, 9, 224, 11, 141, 14, 32, 27, 45, 56, 27, 57,
-			64, 39, 35, 21, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 168, 0, 240, 1, 132, 3, 216, 9, 224, 11, 141, 14, 32, 27,
-			80, 108, 38, 80, 89, 54, 49, 29, 18, 7, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 170, 0, 224, 1, 138, 3, 186, 9, 224, 11,
-			141, 14, 76, 27, 55, 85, 31, 74, 79, 48, 43, 27, 16, 6, 164, 133, 148, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 181, 0, 172, 1, 115, 3,
-			51, 9, 224, 11, 141, 14, 22, 28, 60, 73, 31, 73, 64, 40, 33, 21, 12, 7, 163, 126, 141, 120, 120, 120, 165, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 192, 0,
-			120, 1, 92, 3, 172, 8, 224, 11, 141, 14, 224, 28, 0, 39, 25, 58, 35, 24, 16, 14, 7, 7, 162, 120, 135, 120, 120, 120, 117, 90,
-			180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			215, 0, 6, 0, 1, 0, 132, 0, 16, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 37, 18, 57, 36, 30, 30, 30, 9, 12,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 16, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 20, 68, 24, 76, 51, 44,
-			48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 70, 54,
-			21, 68, 46, 39, 43, 39, 10, 14, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 178, 0, 126, 1, 31, 4, 53, 9, 251, 11, 131, 14,
-			113, 26, 40, 37, 22, 51, 47, 36, 32, 21, 14, 7, 163, 128, 153, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 138, 1, 212, 3, 56, 9,
-			224, 11, 136, 14, 144, 26, 40, 41, 24, 53, 51, 38, 33, 21, 15, 6, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0, 138, 1,
-			212, 3, 56, 9, 224, 11, 136, 14, 144, 26, 0, 29, 20, 44, 42, 31, 27, 17, 13, 5, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 100, 0,
-			3, 0, 5, 0, 4, 0, 176, 0, 208, 7, 184, 11, 58, 14, 136, 19, 224, 21, 40, 4, 0, 24, 2, 2, 4, 4, 4, 4, 150, 125,
-			137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 5, 0, 4, 0, 176, 0, 208, 7, 184, 11, 58, 14, 136, 19, 224, 21, 60, 5, 0, 25, 2, 2, 4, 4,
-			5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 9, 0, 4, 0, 176, 0, 108, 7, 184, 11, 58, 14, 136, 19, 224, 21, 0, 5, 0, 25,
-			2, 2, 4, 4, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 198, 8, 12, 0, 0, 255, 254, 252, 251, 251, 253, 0, 1, 1, 2, 2,
-			2, 0, 253, 251, 248, 245, 241, 237, 235, 236, 236, 237, 237, 237, 240, 243, 246, 245, 241, 238, 236, 235, 236, 237, 239, 244, 250, 253, 254, 0,
-			5, 10, 10, 4, 254, 250, 247, 240, 232, 227, 227, 228, 227, 230, 235, 240, 244, 245, 241, 240, 247, 0, 6, 6, 255, 247, 241, 231, 223, 230,
-			239, 242, 243, 247, 255, 8, 11, 6, 5, 6, 10, 22, 38, 49, 60, 70, 70, 66, 65, 65, 65, 64, 59, 49, 38, 23, 4, 244, 232, 218,
-			206, 202, 199, 196, 196, 197, 196, 199, 203, 207, 213, 221, 228, 233, 237, 239, 238, 238, 242, 247, 0, 14, 26, 30, 33, 37, 37, 39, 42, 41,
-			43, 47, 47, 46, 47, 43, 36, 31, 29, 27, 30, 39, 48, 56, 60, 58, 56, 61, 71, 81, 93, 105, 114, 120, 125, 123, 116, 113, 113, 109,
-			103, 104, 105, 102, 97, 90, 81, 78, 75, 60, 44, 38, 32, 25, 19, 6, 246, 235, 227, 225, 235, 249, 0, 0, 253, 249, 250, 254, 3, 11,
-			16, 16, 6, 252, 249, 254, 2, 2, 255, 251, 249, 242, 230, 214, 201, 197, 200, 200, 200, 207, 215, 224, 231, 231, 234, 246, 255, 252, 246, 241,
-			235, 227, 217, 211, 220, 242, 2, 8, 11, 14, 12, 1, 243, 227, 216, 210, 199, 182, 171, 172, 178, 183, 185, 188, 195, 208, 219, 222, 218, 214,
-			212, 210, 209, 213, 218, 225, 237, 249, 254, 0, 4, 14, 22, 20, 11, 3, 1, 250, 235, 222, 219, 222, 225, 228, 234, 241, 247, 255, 1, 3,
-			13, 27, 35, 34, 26, 17, 13, 4, 249, 246, 249, 249, 248, 249, 254, 4, 9, 7, 6, 9, 12, 19, 27, 29, 28, 28, 27, 22, 18, 18,
-			17, 13, 8, 3, 0, 250, 241, 234, 234, 237, 236, 235, 237, 238, 235, 227, 219, 220, 232, 249, 4, 14, 22, 30, 37, 37, 31, 25, 22, 16,
-			11, 11, 11, 13, 19, 24, 33, 39, 35, 27, 25, 18, 5, 254, 254, 0, 0, 251, 245, 241, 235, 229, 231, 236, 239, 239, 239, 239, 236, 232,
-			234, 242, 251, 0, 2, 7, 7, 255, 248, 247, 242, 227, 204, 190, 198, 217, 232, 247, 1, 2, 253, 244, 242, 9, 40, 37, 9, 246, 235, 223,
-			216, 220, 232, 244, 241, 223, 223, 251, 14, 7, 0, 253, 235, 216, 218, 236, 250, 249, 246, 254, 10, 19, 25, 36, 59, 70, 51, 31, 32, 31,
-			17, 3, 3, 22, 44, 48, 38, 29, 31, 30, 16, 254, 244, 244, 239, 226, 218, 230, 251, 8, 14, 20, 28, 29, 18, 2, 245, 235, 235, 244,
-			251, 3, 20, 35, 33, 21, 23, 44, 51, 21, 245, 245, 246, 234, 239, 1, 14, 17, 8, 252, 7, 32, 42, 35, 23, 12, 5, 255, 245, 242,
-			244, 240, 236, 241, 246, 247, 255, 9, 16, 20, 15, 12, 22, 24, 8, 1, 6, 8, 11, 9, 253, 251, 6, 11, 14, 15, 13, 24, 38, 30,
-			18, 21, 21, 8, 250, 244, 252, 5, 9, 20, 30, 19, 6, 13, 26, 29, 19, 6, 7, 16, 21, 33, 51, 56, 43, 23, 10, 11, 20, 31,
-			29, 11, 251, 244, 249, 9, 11, 251, 251, 10, 8, 250, 251, 13, 28, 22, 11, 15, 24, 15, 0, 255, 3, 4, 10, 18, 15, 8, 2, 3,
-			12, 13, 15, 35, 32, 249, 235, 1, 6, 251, 0, 13, 6, 251, 252, 11, 31, 32, 15, 15, 24, 18, 6, 255, 253, 2, 1, 251, 3, 19,
-			21, 12, 1, 3, 19, 27, 15, 254, 237, 221, 218, 234, 245, 241, 248, 2, 248, 236, 4, 45, 58, 42, 32, 40, 43, 36, 35, 41, 29, 252,
-			226, 228, 237, 245, 12, 34, 29, 11, 249, 236, 241, 252, 249, 241, 234, 228, 235, 246, 0, 28, 54, 45, 19, 6, 10, 24, 22, 251, 231, 237,
-			252, 11, 23, 27, 21, 5, 249, 1, 15, 21, 24, 14, 248, 241, 251, 8, 23, 26, 14, 10, 7, 249, 249, 17, 26, 0, 232, 238, 2, 0,
-			244, 251, 13, 16, 0, 247, 8, 29, 21, 0, 1, 11, 2, 231, 209, 223, 4, 18, 3, 0, 20, 29, 9, 5, 46, 62, 13, 235, 254, 17,
-			11, 254, 251, 12, 18, 252, 241, 4, 18, 5, 242, 245, 15, 27, 13, 4, 7, 6, 7, 18, 25, 12, 251, 253, 15, 17, 6, 13, 27, 12,
-			240, 244, 24, 38, 10, 235, 233, 252, 10, 2, 252, 5, 6, 0, 10, 17, 16, 24, 21, 0, 252, 4, 11, 19, 12, 255, 18, 46, 40, 33,
-			40, 33, 23, 27, 13, 243, 233, 237, 241, 247, 242, 241, 9, 36, 33, 3, 235, 226, 212, 195, 205, 229, 243, 254, 3, 255, 6, 38, 71, 76,
-			43, 13, 25, 47, 39, 13, 9, 37, 43, 255, 221, 243, 27, 38, 255, 204, 211, 249, 244, 226, 246, 20, 24, 15, 11, 25, 42, 35, 1, 234,
-			246, 0, 245, 249, 8, 245, 221, 248, 34, 38, 3, 231, 252, 35, 8, 203, 221, 34, 22, 199, 199, 33, 76, 21, 241, 29, 75, 58, 15, 254,
-			2, 252, 219, 202, 241, 25, 13, 246, 9, 44, 48, 33, 27, 24, 6, 238, 229, 246, 7, 234, 190, 204, 242, 243, 232, 249, 8, 3, 4, 24,
-			34, 26, 11, 250, 237, 235, 246, 17, 31, 9, 248, 250, 3, 30, 45, 29, 26, 25, 0, 240, 242, 239, 245, 252, 242, 236, 247, 6, 22, 30,
-			19, 252, 243, 252, 246, 227, 222, 224, 221, 221, 231, 252, 21, 21, 255, 246, 5, 24, 26, 252, 222, 232, 248, 237, 235, 0, 9, 255, 246, 3,
-			42, 69, 45, 6, 249, 250, 255, 254, 244, 246, 246, 215, 206, 255, 43, 33, 251, 236, 251, 0, 237, 234, 253, 249, 212, 182, 206, 254, 253, 224,
-			236, 15, 24, 13, 0, 0, 20, 16, 238, 239, 26, 31, 246, 226, 252, 37, 47, 3, 236, 15, 24, 238, 221, 244, 0, 234, 199, 209, 253, 0,
-			239, 246, 9, 32, 31, 253, 244, 254, 234, 215, 217, 234, 9, 16, 6, 31, 49, 33, 28, 18, 246, 231, 224, 223, 240, 232, 202, 195, 208, 229,
-			6, 28, 30, 25, 15, 0, 251, 5, 10, 241, 203, 201, 244, 31, 31, 12, 15, 17, 1, 249, 253, 239, 201, 186, 226, 7, 7, 10, 8, 249,
-			244, 235, 228, 250, 246, 211, 207, 218, 232, 6, 10, 252, 0, 248, 237, 0, 3, 248, 250, 238, 229, 250, 12, 14, 13, 14, 16, 7, 1, 3,
-			242, 231, 249, 254, 239, 231, 224, 230, 248, 253, 3, 14, 0, 227, 216, 231, 248, 254, 253, 241, 228, 228, 230, 239, 6, 15, 247, 219, 232, 10,
-			9, 243, 252, 17, 22, 2, 225, 236, 15, 252, 233, 13, 31, 11, 250, 247, 21, 48, 22, 238, 221, 228, 238, 228, 234, 13, 3, 218, 226, 5,
-			32, 36, 250, 215, 232, 231, 212, 233, 251, 226, 207, 235, 35, 55, 13, 236, 254, 20, 15, 252, 239, 240, 243, 247, 13, 34, 13, 238, 242, 6,
-			20, 23, 255, 219, 218, 239, 246, 243, 246, 247, 237, 230, 240, 0, 9, 8, 248, 237, 3, 7, 215, 189, 217, 233, 233, 247, 247, 231, 240, 255,
-			2, 21, 25, 12, 21, 25, 253, 234, 234, 245, 7, 11, 18, 27, 249, 222, 7, 47, 54, 31, 224, 196, 230, 234, 224, 240, 219, 189, 200, 223,
-			4, 34, 5, 234, 249, 0, 0, 8, 255, 234, 223, 222, 230, 233, 238, 0, 14, 15, 20, 35, 50, 45, 22, 11, 8, 247, 231, 238, 243, 227,
-			209, 210, 229, 5, 26, 14, 251, 244, 240, 234, 228, 221, 219, 216, 218, 236, 249, 250, 3, 17, 25, 31, 14, 238, 229, 232, 224, 225, 242, 2,
-			16, 14, 17, 48, 57, 21, 4, 8, 249, 227, 215, 217, 243, 7, 1, 255, 1, 247, 234, 240, 5, 19, 2, 219, 203, 235, 11, 253, 227, 239,
-			12, 22, 5, 243, 2, 14, 230, 199, 219, 229, 215, 217, 234, 14, 53, 38, 252, 248, 19, 33, 18, 243, 222, 219, 213, 203, 223, 255, 243, 211,
-			224, 16, 52, 50, 14, 249, 6, 21, 11, 241, 221, 216, 195, 177, 210, 250, 240, 215, 222, 15, 57, 48, 29, 15, 241, 231, 241, 237, 233, 214,
-			192, 227, 18, 35, 65, 71, 36, 29, 30, 8, 246, 205, 162, 174, 195, 204, 223, 235, 2, 31, 29, 38, 52, 17, 239, 239, 254, 4, 214, 156,
-			187, 252, 12, 23, 45, 48, 20, 240, 245, 37, 53, 5, 207, 197, 214, 214, 214, 233, 248, 250, 243, 246, 30, 62, 38, 0, 228, 216, 244, 15,
-			10, 254, 232, 218, 239, 251, 249, 13, 8, 228, 230, 13, 46, 43, 255, 222, 237, 5, 7, 232, 199, 214, 237, 227, 239, 24, 34, 6, 229, 243,
-			41, 37, 222, 188, 226, 8, 4, 239, 237, 252, 10, 15, 12, 33, 50, 8, 222, 229, 245, 254, 237, 196, 205, 237, 229, 240, 254, 220, 228, 24,
-			48, 68, 56, 250, 235, 4, 8, 15, 255, 204, 197, 207, 203, 239, 21, 2, 234, 243, 21, 58, 42, 246, 227, 236, 243, 243, 229, 224, 241, 243,
-			234, 247, 4, 8, 14, 13, 3, 2, 0, 247, 0, 9, 253, 251, 0, 235, 227, 1, 5, 236, 228, 230, 241, 5, 3, 251, 253, 240, 234, 253,
-			254, 248, 254, 245, 239, 1, 17, 26, 28, 15, 0, 248, 243, 247, 251, 249, 245, 226, 222, 0, 18, 3, 248, 245, 251, 0, 242, 237, 248, 240,
-			227, 229, 234, 249, 253, 234, 242, 12, 14, 8, 3, 0, 17, 17, 250, 254, 7, 255, 0, 248, 233, 251, 0, 244, 0, 6, 253, 0, 240, 229,
-			13, 31, 5, 254, 255, 248, 245, 228, 237, 20, 4, 220, 240, 24, 36, 11, 213, 214, 12, 255, 210, 230, 255, 250, 244, 242, 23, 65, 21, 222,
-			249, 25, 7, 227, 209, 228, 239, 217, 227, 7, 16, 12, 2, 2, 42, 57, 18, 254, 250, 230, 216, 206, 218, 1, 3, 238, 8, 49, 45, 12,
-			240, 236, 240, 237, 232, 225, 218, 214, 209, 240, 47, 63, 22, 240, 234, 253, 254, 222, 213, 237, 242, 230, 236, 12, 45, 38, 6, 253, 14, 20,
-			248, 212, 211, 227, 231, 236, 255, 19, 24, 8, 4, 30, 51, 37, 6, 237, 228, 222, 211, 216, 232, 235, 229, 231, 255, 30, 27, 253, 250, 22,
-			34, 255, 208, 207, 231, 229, 227, 242, 4, 20, 11, 251, 31, 65, 29, 254, 11, 22, 17, 241, 204, 223, 246, 226, 224, 251, 2, 2, 0, 250,
-			6, 17, 1, 239, 237, 240, 231, 213, 223, 254, 9, 1, 246, 239, 5, 29, 16, 5, 7, 240, 224, 238, 252, 10, 14, 244, 236, 7, 27, 39,
-			37, 4, 243, 247, 245, 248, 248, 227, 218, 221, 226, 248, 16, 21, 12, 4, 18, 42, 34, 9, 250, 233, 224, 225, 218, 218, 234, 243, 245, 251,
-			4, 27, 41, 20, 253, 1, 5, 244, 222, 223, 252, 9, 242, 232, 5, 22, 9, 253, 253, 10, 10, 232, 213, 245, 4, 237, 226, 240, 252, 6,
-			8, 255, 0, 0, 247, 251, 1, 0, 253, 230, 222, 16, 51, 29, 14, 11, 255, 0, 0, 241, 230, 214, 202, 220, 246, 250, 248, 3, 18, 24,
-			28, 23, 254, 230, 225, 226, 235, 255, 17, 12, 249, 2, 29, 26, 10, 6, 254, 248, 235, 223, 253, 18, 236, 219, 249, 12, 35, 49, 21, 255,
-			1, 3, 12, 13, 238, 205, 194, 202, 231, 2, 3, 255, 8, 28, 41, 41, 31, 10, 238, 214, 205, 216, 230, 238, 244, 244, 247, 11, 29, 26,
-			12, 253, 252, 5, 250, 232, 236, 237, 225, 223, 241, 23, 46, 28, 9, 7, 5, 0, 242, 229, 235, 238, 232, 235, 244, 4, 19, 10, 4, 14,
-			8, 251, 236, 227, 242, 0, 253, 0, 7, 15, 23, 5, 247, 252, 236, 224, 245, 249, 241, 250, 250, 253, 18, 27, 34, 46, 36, 4, 235, 221,
-			211, 212, 232, 253, 0, 251, 253, 19, 49, 53, 30, 8, 249, 232, 215, 204, 211, 228, 229, 222, 244, 35, 63, 48, 17, 1, 1, 254, 237, 221,
-			219, 224, 233, 244, 255, 14, 24, 11, 253, 2, 14, 17, 9, 245, 229, 235, 249, 1, 0, 242, 230, 244, 18, 28, 17, 12, 4, 253, 8, 0,
-			224, 213, 205, 200, 238, 15, 12, 16, 19, 11, 28, 46, 30, 255, 231, 234, 253, 247, 232, 237, 242, 253, 19, 20, 14, 14, 3, 4, 20, 3,
-			242, 252, 248, 255, 26, 12, 245, 0, 4, 5, 24, 16, 253, 244, 233, 249, 19, 5, 243, 235, 228, 254, 12, 244, 240, 247, 240, 5, 20, 5,
-			13, 7, 239, 12, 37, 16, 10, 0, 238, 0, 253, 227, 249, 9, 250, 251, 245, 240, 11, 9, 236, 248, 4, 240, 231, 246, 4, 0, 233, 227,
-			246, 254, 253, 5, 11, 2, 246, 245, 0, 254, 244, 241, 243, 247, 249, 0, 20, 30, 13, 1, 13, 24, 22, 9, 252, 254, 1, 244, 233, 239,
-			242, 240, 241, 240, 242, 253, 253, 247, 254, 1, 254, 254, 250, 250, 0, 0, 175, 0, 4, 0, 1, 0, 208, 0, 144, 2, 24, 6, 136, 9,
-			22, 13, 216, 14, 92, 27, 45, 38, 30, 55, 57, 46, 32, 23, 10, 5, 168, 135, 157, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 208, 0, 144, 2,
-			24, 6, 136, 9, 22, 13, 216, 14, 92, 27, 70, 61, 38, 70, 73, 58, 41, 29, 13, 6, 168, 135, 157, 120, 120, 120, 200, 127, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			202, 0, 136, 2, 0, 6, 140, 9, 4, 13, 196, 14, 92, 27, 60, 50, 35, 63, 67, 51, 37, 27, 13, 6, 168, 136, 153, 120, 120, 120,
-			200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 202, 0, 136, 2, 0, 6, 140, 9, 4, 13, 196, 14, 92, 27, 0, 27, 27, 46, 49, 37, 23, 17, 9, 4, 168, 136,
-			153, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27, 45, 56, 28, 56,
-			68, 34, 34, 22, 14, 6, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27,
-			80, 111, 40, 80, 96, 48, 48, 31, 20, 8, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11,
-			196, 14, 159, 27, 70, 96, 38, 72, 91, 45, 45, 29, 19, 8, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 24, 2, 152, 3,
-			40, 10, 244, 11, 196, 14, 159, 27, 0, 47, 26, 50, 64, 32, 32, 20, 13, 5, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 190, 0, 4, 0,
-			1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 50, 42, 32, 62, 49, 52, 44, 32, 14, 6, 161, 98, 126, 120,
-			120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 80, 67, 40, 78, 61, 66, 55, 40, 17, 8,
-			161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 60, 56, 37, 71, 56, 61,
-			51, 37, 16, 7, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 0, 32,
-			28, 54, 42, 46, 38, 28, 12, 5, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0, 6, 0, 1, 0, 186, 0, 176, 2, 84, 6, 80, 10,
-			192, 13, 100, 15, 160, 27, 50, 41, 39, 54, 66, 42, 33, 27, 15, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 186, 0, 176, 2,
-			84, 6, 80, 10, 192, 13, 100, 15, 160, 27, 50, 63, 48, 66, 81, 52, 40, 33, 18, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			186, 0, 160, 2, 84, 6, 80, 10, 192, 13, 100, 15, 160, 27, 45, 47, 42, 52, 75, 45, 36, 29, 16, 0, 180, 150, 125, 120, 120, 120,
-			200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 188, 0, 34, 2, 57, 5, 54, 10, 250, 12, 206, 14, 197, 27, 45, 26, 37, 37, 42, 31, 26, 21, 10, 2, 180, 119,
-			122, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 192, 0, 135, 1, 222, 3, 20, 10, 6, 12, 21, 14, 244, 27, 40, 20, 40, 29, 26, 17, 22, 16,
-			6, 5, 180, 81, 119, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 192, 0, 135, 1, 222, 3, 20, 10, 6, 12, 21, 14, 244, 27, 0, 14, 34, 24,
-			14, 14, 18, 14, 5, 4, 180, 81, 119, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 244, 0, 6, 0, 1, 0, 228, 0, 40, 2, 128, 3, 120, 10, 8, 12,
-			15, 14, 216, 27, 50, 61, 29, 60, 73, 30, 34, 21, 10, 6, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 228, 0, 40, 2, 128, 3,
-			120, 10, 8, 12, 15, 14, 216, 27, 40, 85, 35, 71, 86, 35, 40, 25, 12, 7, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 228, 0,
-			40, 2, 128, 3, 120, 10, 8, 12, 15, 14, 216, 27, 45, 75, 33, 67, 81, 33, 38, 23, 11, 6, 180, 112, 128, 120, 120, 120, 105, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 215, 0, 229, 1, 83, 3, 127, 10, 228, 12, 60, 15, 176, 27, 50, 47, 41, 51, 63, 25, 25, 19, 11, 5, 164, 96, 118, 120,
-			120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 205, 0, 184, 1, 52, 3, 132, 10, 248, 12, 4, 16, 148, 27, 60, 21, 43, 30, 30, 20, 13, 13, 9, 4,
-			153, 85, 112, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 205, 0, 184, 1, 52, 3, 132, 10, 248, 12, 4, 16, 148, 27, 0, 16, 37, 26, 26, 17,
-			11, 11, 8, 3, 153, 85, 112, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 139, 0, 3, 0, 1, 0, 80, 1, 168, 2, 124, 6, 216, 9, 192, 13, 185, 15,
-			32, 29, 50, 49, 35, 57, 69, 51, 38, 29, 10, 8, 255, 150, 180, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 88, 1, 168, 2, 124, 6, 216, 9,
-			192, 13, 185, 15, 32, 29, 90, 82, 45, 74, 89, 66, 50, 38, 13, 8, 255, 150, 180, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 88, 1, 168, 2,
-			124, 6, 216, 9, 192, 13, 185, 15, 32, 29, 0, 47, 34, 56, 67, 50, 38, 28, 9, 9, 255, 150, 180, 120, 120, 120, 135, 180, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 167, 10,
-			52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255, 253, 255, 0, 1, 1, 0, 255, 253, 255, 1,
-			0, 254, 0, 7, 6, 254, 2, 3, 1, 0, 0, 0, 253, 253, 244, 245, 8, 21, 10, 251, 249, 4, 0, 0, 4, 4, 246, 237, 246, 10,
-			15, 27, 27, 225, 225, 2, 34, 31, 7, 252, 226, 4, 33, 247, 210, 242, 25, 37, 13, 247, 241, 243, 25, 28, 247, 237, 254, 65, 35, 236,
-			218, 188, 249, 59, 78, 31, 199, 236, 10, 229, 22, 50, 36, 238, 191, 14, 47, 241, 234, 236, 224, 68, 38, 10, 241, 213, 43, 0, 6, 33,
-			244, 26, 235, 221, 6, 233, 38, 252, 235, 235, 5, 57, 253, 254, 18, 15, 5, 221, 203, 212, 219, 255, 22, 52, 57, 23, 218, 184, 213, 244,
-			18, 31, 40, 10, 225, 228, 236, 242, 245, 17, 29, 243, 221, 245, 24, 23, 17, 251, 237, 225, 237, 0, 250, 243, 0, 20, 17, 21, 246, 216,
-			245, 30, 55, 242, 209, 2, 7, 27, 23, 248, 236, 219, 6, 19, 254, 47, 23, 250, 227, 207, 5, 12, 23, 13, 7, 0, 251, 249, 249, 250,
-			254, 0, 255, 251, 248, 248, 254, 5, 8, 12, 12, 255, 254, 13, 0, 243, 245, 247, 0, 0, 10, 14, 2, 250, 247, 251, 4, 1, 253, 243,
-			250, 4, 4, 255, 1, 2, 2, 1, 4, 0, 1, 255, 0, 3, 5, 7, 4, 5, 9, 5, 1, 0, 3, 4, 11, 8, 5, 0, 2, 3,
-			6, 4, 255, 255, 0, 1, 1, 1, 2, 8, 9, 6, 3, 252, 250, 248, 252, 5, 8, 5, 4, 0, 255, 252, 253, 251, 1, 7, 4, 0,
-			252, 254, 253, 1, 3, 2, 254, 0, 255, 252, 252, 255, 254, 1, 3, 253, 253, 0, 3, 255, 253, 2, 4, 4, 6, 2, 255, 249, 252, 4,
-			4, 8, 8, 3, 1, 255, 3, 254, 250, 0, 4, 6, 0, 252, 1, 255, 1, 1, 255, 248, 253, 2, 5, 9, 255, 247, 251, 251, 0, 10,
-			2, 251, 236, 250, 2, 7, 6, 0, 1, 11, 7, 5, 4, 3, 3, 245, 253, 6, 253, 0, 0, 254, 243, 244, 1, 5, 4, 251, 248, 247,
-			236, 249, 5, 6, 250, 252, 6, 12, 254, 248, 242, 245, 21, 37, 248, 234, 3, 248, 247, 20, 30, 246, 224, 0, 34, 13, 14, 239, 248, 10,
-			0, 16, 0, 3, 9, 253, 3, 3, 247, 244, 238, 23, 49, 1, 247, 225, 0, 29, 245, 1, 3, 253, 236, 249, 11, 14, 14, 13, 10, 10,
-			11, 10, 6, 254, 244, 240, 254, 13, 5, 254, 254, 18, 0, 4, 206, 237, 18, 253, 25, 241, 250, 1, 243, 32, 206, 6, 52, 241, 211, 219,
-			46, 28, 221, 18, 238, 221, 47, 39, 8, 197, 0, 239, 208, 39, 69, 254, 208, 241, 15, 5, 245, 0, 238, 41, 15, 190, 47, 15, 242, 226,
-			247, 28, 10, 22, 2, 230, 214, 17, 16, 46, 16, 161, 31, 46, 223, 245, 241, 64, 206, 19, 20, 216, 36, 208, 34, 18, 211, 27, 207, 62,
-			231, 221, 100, 183, 255, 41, 235, 242, 245, 100, 239, 150, 0, 52, 13, 16, 253, 8, 23, 0, 248, 15, 24, 206, 211, 226, 64, 40, 42, 23,
-			151, 194, 28, 50, 19, 214, 3, 19, 224, 241, 244, 45, 255, 230, 255, 24, 24, 245, 246, 213, 241, 46, 1, 232, 236, 30, 30, 5, 77, 20,
-			2, 57, 17, 35, 9, 250, 10, 221, 25, 21, 255, 15, 213, 226, 5, 241, 238, 208, 211, 12, 234, 0, 244, 188, 253, 26, 246, 211, 240, 21,
-			3, 6, 236, 225, 231, 233, 46, 49, 13, 243, 2, 34, 12, 243, 3, 0, 19, 54, 56, 13, 14, 10, 36, 8, 232, 1, 0, 252, 2, 4,
-			255, 228, 250, 246, 250, 244, 226, 235, 242, 236, 237, 213, 231, 10, 23, 242, 225, 242, 26, 5, 251, 250, 9, 8, 13, 8, 0, 1, 11, 18,
-			16, 9, 7, 12, 17, 14, 1, 245, 243, 22, 49, 38, 246, 247, 247, 7, 8, 253, 221, 229, 21, 10, 247, 240, 237, 9, 15, 232, 229, 252,
-			33, 22, 237, 1, 249, 228, 0, 14, 37, 4, 226, 21, 0, 214, 14, 41, 39, 4, 217, 243, 17, 22, 6, 243, 12, 15, 2, 18, 4, 219,
-			242, 254, 17, 31, 248, 246, 248, 252, 241, 253, 19, 2, 15, 252, 240, 253, 252, 247, 244, 5, 23, 12, 21, 217, 210, 0, 5, 39, 7, 239,
-			249, 248, 25, 0, 251, 240, 221, 36, 49, 14, 244, 224, 0, 10, 226, 247, 24, 9, 18, 10, 5, 250, 235, 5, 243, 1, 18, 250, 245, 250,
-			14, 15, 243, 244, 10, 12, 246, 229, 241, 23, 34, 253, 219, 213, 4, 52, 34, 27, 224, 233, 16, 247, 252, 21, 248, 233, 7, 3, 3, 237,
-			225, 12, 23, 26, 17, 251, 4, 243, 224, 235, 240, 22, 23, 29, 11, 212, 215, 28, 18, 12, 0, 248, 8, 237, 247, 250, 222, 23, 23, 23,
-			32, 229, 228, 248, 254, 28, 12, 253, 251, 227, 234, 38, 31, 9, 2, 230, 251, 0, 246, 26, 26, 10, 255, 234, 29, 39, 207, 213, 230, 7,
-			66, 19, 238, 242, 223, 247, 13, 25, 38, 6, 230, 233, 0, 0, 255, 239, 250, 0, 24, 36, 9, 239, 236, 255, 11, 12, 5, 2, 3, 5,
-			5, 5, 3, 4, 5, 2, 255, 248, 240, 242, 250, 5, 252, 39, 5, 213, 9, 20, 254, 237, 230, 50, 60, 240, 249, 3, 212, 244, 22, 2,
-			21, 239, 17, 27, 220, 228, 35, 6, 221, 239, 11, 52, 14, 210, 8, 25, 4, 229, 200, 38, 22, 236, 33, 5, 215, 207, 253, 52, 11, 254,
-			16, 227, 217, 5, 44, 244, 171, 225, 40, 27, 32, 35, 223, 212, 243, 28, 21, 223, 237, 5, 231, 235, 57, 72, 238, 166, 222, 248, 23, 45,
-			52, 14, 170, 252, 54, 249, 220, 198, 30, 43, 215, 18, 38, 19, 241, 245, 10, 211, 195, 55, 73, 250, 226, 0, 37, 226, 199, 47, 63, 212,
-			13, 46, 3, 32, 187, 236, 102, 1, 235, 10, 221, 66, 15, 169, 50, 213, 249, 117, 242, 244, 237, 221, 36, 9, 241, 19, 219, 246, 65, 218,
-			215, 27, 33, 13, 209, 13, 250, 225, 243, 75, 45, 191, 223, 223, 19, 33, 5, 66, 208, 188, 29, 11, 39, 246, 221, 38, 228, 2, 35, 229,
-			21, 243, 212, 79, 252, 229, 17, 240, 24, 201, 220, 82, 27, 215, 231, 7, 21, 243, 239, 18, 246, 235, 4, 251, 24, 243, 5, 6, 221, 5,
-			16, 23, 230, 247, 23, 251, 224, 228, 35, 41, 1, 237, 205, 20, 68, 243, 219, 235, 16, 31, 240, 243, 218, 225, 255, 11, 8, 1, 2, 7,
-			9, 7, 2, 253, 1, 14, 13, 2, 252, 7, 19, 239, 11, 11, 1, 251, 229, 18, 11, 1, 235, 22, 7, 230, 244, 28, 252, 24, 243, 252,
-			241, 12, 7, 34, 230, 239, 22, 239, 34, 249, 239, 246, 244, 29, 16, 252, 4, 0, 201, 16, 37, 247, 244, 6, 19, 251, 210, 247, 86, 250,
-			197, 239, 23, 42, 0, 221, 31, 246, 197, 22, 50, 14, 6, 207, 15, 7, 211, 47, 22, 245, 254, 216, 5, 4, 24, 48, 245, 175, 199, 75,
-			66, 45, 209, 179, 241, 241, 71, 92, 223, 203, 205, 16, 23, 255, 24, 23, 244, 242, 239, 242, 11, 2, 45, 254, 229, 205, 235, 84, 45, 222,
-			203, 220, 66, 2, 22, 25, 212, 243, 240, 11, 28, 236, 12, 36, 252, 231, 236, 228, 47, 31, 232, 232, 239, 8, 25, 10, 17, 200, 238, 35,
-			34, 35, 238, 224, 229, 222, 249, 57, 66, 23, 185, 189, 244, 58, 55, 226, 253, 5, 244, 8, 232, 0, 11, 21, 19, 203, 212, 50, 0, 36,
-			42, 231, 206, 207, 48, 45, 252, 236, 220, 42, 15, 3, 2, 201, 232, 73, 45, 247, 212, 239, 1, 1, 41, 2, 227, 234, 10, 30, 14, 241,
-			252, 17, 0, 236, 25, 236, 247, 29, 12, 250, 250, 233, 21, 5, 252, 251, 21, 17, 32, 210, 237, 229, 243, 13, 0, 252, 244, 241, 253, 5,
-			6, 5, 7, 11, 13, 6, 232, 205, 232, 45, 97, 10, 211, 208, 238, 35, 10, 11, 2, 231, 3, 38, 6, 246, 228, 220, 49, 29, 234, 224,
-			220, 12, 45, 49, 250, 185, 227, 22, 52, 49, 242, 178, 237, 22, 44, 11, 209, 247, 6, 227, 34, 25, 18, 243, 22, 67, 7, 202, 13, 60,
-			255, 229, 188, 253, 72, 10, 236, 231, 183, 255, 78, 30, 244, 193, 251, 14, 46, 49, 227, 207, 198, 34, 62, 5, 232, 245, 13, 236, 228, 0,
-			15, 237, 214, 233, 1, 3, 28, 249, 1, 253, 18, 17, 0, 6, 6, 241, 16, 0, 0, 4, 238, 255, 22, 31, 254, 202, 2, 26, 243, 13,
-			25, 20, 0, 193, 255, 20, 242, 27, 17, 246, 216, 224, 29, 50, 0, 240, 234, 228, 219, 40, 95, 19, 173, 225, 63, 42, 7, 0, 0, 241,
-			251, 19, 28, 240, 223, 238, 46, 39, 219, 201, 245, 13, 31, 11, 219, 195, 255, 51, 28, 214, 198, 7, 41, 37, 20, 254, 198, 208, 215, 52,
-			74, 36, 251, 191, 206, 20, 45, 54, 233, 241, 4, 19, 25, 17, 241, 235, 232, 1, 38, 36, 9, 253, 233, 211, 255, 49, 11, 222, 20, 56,
-			247, 208, 181, 243, 55, 21, 14, 23, 240, 212, 253, 24, 29, 33, 201, 225, 14, 39, 68, 254, 193, 212, 252, 20, 2, 252, 249, 248, 254, 1,
-			0, 255, 3, 10, 15, 12, 255, 243, 255, 11, 13, 242, 237, 202, 20, 88, 19, 223, 203, 213, 23, 26, 15, 41, 247, 204, 250, 243, 47, 44,
-			215, 205, 17, 11, 40, 4, 232, 253, 8, 235, 1, 14, 14, 7, 241, 11, 24, 2, 240, 241, 234, 218, 10, 87, 37, 227, 178, 202, 24, 65,
-			27, 253, 221, 204, 239, 40, 49, 21, 216, 202, 247, 11, 48, 44, 251, 203, 215, 7, 85, 29, 210, 171, 246, 63, 84, 225, 184, 250, 34, 254,
-			245, 248, 45, 19, 223, 227, 227, 50, 74, 13, 251, 185, 194, 38, 248, 15, 59, 253, 234, 196, 231, 127, 5, 228, 216, 209, 76, 19, 200, 255,
-			4, 8, 58, 210, 219, 11, 245, 92, 29, 225, 4, 195, 234, 69, 3, 225, 242, 15, 50, 231, 214, 10, 247, 219, 59, 59, 227, 199, 188, 53,
-			85, 245, 237, 218, 214, 44, 50, 237, 214, 13, 46, 14, 233, 251, 251, 242, 251, 37, 19, 216, 211, 22, 59, 26, 217, 229, 18, 22, 15, 252,
-			252, 243, 222, 243, 29, 41, 235, 214, 32, 32, 42, 226, 200, 8, 236, 39, 39, 239, 0, 8, 223, 237, 21, 43, 31, 236, 200, 19, 51, 22,
-			235, 217, 0, 6, 230, 31, 48, 24, 251, 201, 214, 27, 39, 17, 236, 207, 251, 48, 10, 248, 235, 2, 14, 247, 254, 0, 253, 253, 251, 249,
-			250, 252, 0, 9, 17, 21, 12, 250, 237, 233, 238, 250, 38, 249, 216, 245, 30, 43, 28, 189, 208, 21, 25, 37, 8, 213, 200, 220, 39, 66,
-			252, 242, 219, 248, 21, 13, 9, 12, 226, 193, 254, 61, 37, 230, 199, 234, 17, 50, 6, 254, 249, 221, 11, 36, 248, 245, 15, 11, 225, 225,
-			28, 59, 21, 232, 241, 228, 20, 28, 23, 4, 207, 218, 4, 37, 57, 240, 213, 0, 255, 16, 16, 0, 233, 245, 17, 15, 22, 252, 231, 15,
-			252, 228, 253, 10, 52, 41, 231, 244, 236, 211, 5, 29, 53, 24, 222, 207, 224, 30, 75, 14, 224, 220, 253, 48, 18, 202, 222, 46, 63, 0,
-			198, 209, 25, 47, 11, 227, 233, 6, 39, 16, 234, 246, 251, 240, 2, 252, 11, 46, 242, 211, 251, 37, 33, 243, 218, 251, 29, 0, 252, 251,
-			3, 248, 242, 21, 15, 6, 251, 239, 252, 252, 1, 5, 23, 8, 222, 232, 27, 30, 247, 228, 252, 13, 6, 19, 13, 244, 218, 229, 16, 36,
-			15, 1, 240, 1, 16, 11, 255, 255, 229, 250, 22, 0, 241, 23, 27, 13, 233, 217, 8, 25, 21, 14, 221, 246, 14, 19, 255, 245, 229, 240,
-			22, 37, 25, 242, 209, 244, 3, 17, 26, 240, 220, 234, 2, 48, 24, 235, 218, 224, 16, 39, 247, 246, 2, 17, 1, 244, 238, 241, 253, 7,
-			8, 1, 254, 4, 14, 16, 2, 241, 232, 253, 18, 32, 255, 210, 227, 10, 50, 2, 218, 240, 244, 36, 43, 242, 226, 222, 255, 35, 47, 253,
-			213, 216, 245, 33, 39, 16, 247, 238, 253, 10, 5, 15, 255, 231, 247, 6, 7, 5, 27, 3, 237, 7, 0, 0, 7, 12, 2, 237, 242, 11,
-			17, 24, 252, 217, 253, 19, 28, 6, 232, 239, 254, 247, 5, 18, 19, 3, 230, 6, 24, 233, 247, 28, 4, 241, 243, 11, 13, 4, 244, 249,
-			0, 252, 25, 25, 255, 231, 220, 16, 37, 250, 232, 238, 36, 33, 250, 1, 253, 226, 248, 6, 36, 5, 219, 234, 245, 10, 38, 16, 238, 211,
-			255, 32, 24, 252, 239, 232, 236, 0, 29, 11, 252, 242, 254, 24, 15, 248, 240, 243, 253, 1, 20, 7, 236, 240, 7, 15, 12, 6, 247, 4,
-			251, 255, 16, 254, 250, 255, 254, 0, 252, 16, 37, 13, 231, 236, 2, 21, 23, 6, 241, 245, 255, 18, 12, 246, 244, 10, 24, 10, 238, 242,
-			8, 18, 20, 13, 239, 240, 4, 13, 4, 250, 254, 16, 20, 0, 235, 246, 14, 27, 1, 248, 235, 241, 16, 17, 254, 243, 234, 238, 6, 27,
-			1, 245, 253, 7, 232, 233, 5, 254, 253, 12, 0, 248, 244, 6, 246, 220, 2, 9, 9, 18, 245, 242, 248, 249, 2, 3, 252, 247, 255, 8,
-			12, 10, 6, 2, 1, 6, 9, 6, 2, 247, 237, 230, 16, 251, 228, 31, 16, 245, 244, 235, 254, 252, 21, 62, 252, 208, 219, 221, 30, 71,
-			253, 213, 251, 18, 8, 238, 36, 36, 231, 212, 248, 232, 42, 78, 14, 181, 209, 40, 31, 234, 30, 59, 241, 182, 5, 28, 6, 235, 20, 38,
-			213, 202, 27, 53, 15, 10, 11, 225, 180, 21, 79, 30, 226, 207, 180, 234, 66, 83, 21, 196, 218, 241, 0, 32, 10, 1, 235, 187, 2, 67,
-			39, 231, 189, 235, 40, 51, 22, 205, 209, 13, 31, 10, 244, 220, 242, 32, 45, 18, 232, 218, 247, 21, 31, 23, 228, 210, 5, 54, 45, 246,
-			201, 235, 16, 40, 26, 248, 232, 245, 4, 18, 6, 247, 251, 14, 17, 15, 0, 250, 3, 15, 19, 10, 3, 11, 17, 19, 25, 15, 9, 19,
-			25, 18, 7, 17, 28, 23, 12, 9, 6, 5, 12, 20, 14, 255, 250, 0, 10, 10, 254, 242, 241, 247, 249, 249, 244, 244, 244, 247, 246, 233,
-			228, 242, 245, 237, 234, 227, 227, 241, 245, 236, 226, 240, 2, 255, 242, 233, 223, 230, 243, 254, 255, 250, 245, 231, 239, 23, 28, 245, 218, 235,
-			0, 8, 9, 14, 247, 236, 229, 252, 23, 28, 13, 246, 240, 0, 251, 4, 8, 1, 0, 254, 4, 0, 15, 17, 3, 253, 253, 250, 248, 249,
-			251, 252, 252, 2, 11, 19, 16, 6, 6, 15, 25, 3, 244, 18, 7, 0, 26, 44, 7, 222, 255, 32, 7, 25, 32, 230, 218, 20, 51, 16,
-			231, 222, 253, 55, 21, 219, 253, 32, 3, 239, 2, 242, 231, 12, 14, 8, 18, 247, 212, 246, 43, 12, 223, 251, 36, 2, 221, 240, 10, 19,
-			9, 240, 230, 252, 29, 29, 0, 231, 214, 242, 29, 31, 251, 230, 250, 4, 6, 21, 15, 1, 252, 251, 252, 252, 11, 12, 253, 252, 253, 249,
-			251, 10, 10, 7, 10, 18, 35, 55, 52, 27, 252, 0, 24, 28, 32, 32, 18, 9, 21, 36, 34, 25, 18, 9, 6, 10, 8, 244, 235, 0,
-			85, 0, 3, 0, 5, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18, 174, 21, 55, 2, 12, 14, 4, 4, 4, 3, 5, 5,
-			92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18, 174, 21, 30, 3, 14, 16, 5, 5,
-			5, 4, 6, 6, 92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 9, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18, 174, 21, 0, 3,
-			13, 15, 4, 4, 4, 3, 5, 5, 92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 240, 0, 5, 0, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10,
-			164, 11, 53, 14, 160, 27, 45, 61, 26, 62, 74, 37, 35, 20, 13, 5, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 184, 0, 72, 2,
-			172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 75, 118, 36, 86, 103, 51, 49, 28, 18, 7, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			184, 0, 52, 2, 158, 3, 240, 9, 168, 11, 61, 14, 192, 27, 60, 96, 33, 79, 91, 46, 43, 26, 16, 7, 172, 140, 135, 120, 120, 120,
-			182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 192, 0, 120, 1, 32, 3, 172, 8, 204, 11, 141, 14, 224, 28, 60, 47, 27, 63, 39, 27, 18, 16, 8, 8, 162, 120,
-			135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 104, 1, 32, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 36, 23, 58, 38, 22, 15, 12,
-			9, 8, 152, 120, 97, 120, 120, 120, 107, 90, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 144, 9, 55, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 3, 1, 0, 2, 4, 3, 1,
-			1, 0, 0, 0, 1, 0, 255, 254, 255, 0, 1, 1, 0, 255, 254, 255, 255, 254, 254, 253, 251, 252, 253, 254, 0, 1, 1, 1, 2, 2,
-			0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 3, 3, 3, 2, 3, 3, 3, 1, 0, 0, 255, 255, 0, 1, 0, 0, 255, 255, 255,
-			254, 253, 254, 0, 2, 3, 4, 4, 2, 0, 254, 253, 253, 253, 252, 251, 252, 255, 0, 0, 0, 1, 2, 2, 1, 0, 255, 254, 253, 252,
-			253, 255, 0, 1, 2, 3, 3, 2, 3, 3, 0, 255, 0, 0, 253, 251, 252, 254, 0, 3, 5, 4, 3, 3, 1, 0, 0, 1, 0, 253,
-			253, 255, 0, 0, 255, 254, 255, 0, 0, 0, 254, 254, 255, 255, 0, 0, 255, 0, 1, 1, 1, 4, 6, 1, 253, 254, 2, 8, 8, 5,
-			0, 255, 254, 254, 0, 2, 0, 255, 255, 1, 4, 6, 6, 4, 3, 2, 1, 0, 255, 254, 250, 246, 243, 245, 249, 0, 6, 11, 11, 6,
-			255, 250, 248, 249, 251, 251, 250, 249, 251, 2, 7, 6, 4, 5, 8, 11, 12, 8, 5, 2, 253, 245, 245, 249, 250, 251, 1, 10, 15, 17,
-			15, 5, 252, 251, 248, 241, 243, 251, 252, 251, 0, 2, 0, 253, 253, 252, 255, 4, 5, 0, 1, 4, 1, 250, 245, 245, 248, 1, 11, 15,
-			13, 8, 4, 0, 250, 249, 0, 4, 6, 11, 17, 16, 9, 1, 249, 243, 246, 253, 252, 250, 254, 4, 12, 14, 8, 0, 254, 0, 254, 248,
-			246, 246, 239, 238, 254, 14, 14, 1, 248, 247, 1, 14, 15, 4, 254, 252, 250, 252, 253, 248, 245, 0, 11, 11, 8, 11, 9, 3, 4, 9,
-			5, 250, 241, 241, 251, 10, 19, 10, 254, 253, 2, 7, 13, 11, 249, 232, 239, 0, 8, 10, 10, 5, 0, 252, 250, 250, 250, 246, 244, 0,
-			16, 18, 6, 255, 2, 8, 10, 4, 250, 244, 248, 251, 249, 252, 1, 0, 253, 2, 10, 12, 12, 13, 8, 255, 248, 246, 243, 241, 246, 252,
-			0, 8, 16, 16, 12, 10, 6, 254, 249, 253, 252, 244, 243, 249, 253, 255, 6, 13, 12, 10, 7, 4, 5, 7, 3, 246, 236, 245, 2, 6,
-			8, 8, 2, 255, 254, 253, 251, 253, 0, 253, 251, 255, 4, 8, 10, 4, 251, 253, 6, 6, 254, 250, 252, 0, 2, 0, 248, 252, 7, 5,
-			255, 7, 16, 0, 238, 243, 0, 8, 12, 6, 250, 252, 11, 14, 5, 1, 1, 252, 247, 249, 250, 249, 252, 254, 252, 0, 15, 20, 9, 251,
-			245, 248, 255, 1, 253, 248, 1, 10, 5, 254, 254, 0, 254, 254, 2, 11, 15, 5, 247, 242, 248, 0, 2, 1, 0, 3, 4, 4, 6, 2,
-			245, 242, 0, 10, 1, 253, 0, 252, 246, 0, 14, 11, 255, 247, 244, 244, 254, 3, 253, 248, 252, 255, 2, 12, 13, 0, 247, 249, 253, 1,
-			10, 12, 254, 237, 238, 250, 254, 1, 11, 14, 8, 10, 17, 12, 254, 246, 244, 243, 249, 3, 7, 5, 2, 255, 254, 5, 7, 6, 12, 18,
-			4, 241, 245, 6, 1, 239, 242, 9, 18, 4, 247, 245, 251, 2, 4, 3, 8, 6, 246, 239, 0, 16, 8, 251, 247, 247, 255, 19, 33, 16,
-			243, 235, 246, 0, 5, 3, 253, 251, 1, 4, 2, 8, 13, 1, 244, 252, 10, 6, 253, 2, 11, 5, 251, 253, 8, 13, 6, 254, 248, 243,
-			237, 236, 251, 14, 19, 16, 13, 9, 0, 247, 245, 251, 0, 0, 253, 254, 6, 12, 11, 1, 244, 239, 250, 7, 12, 7, 4, 2, 255, 247,
-			245, 0, 6, 251, 242, 255, 16, 19, 6, 245, 235, 240, 1, 20, 26, 14, 242, 225, 235, 249, 1, 17, 31, 15, 240, 236, 0, 11, 3, 249,
-			248, 2, 15, 17, 6, 251, 243, 234, 236, 4, 32, 29, 5, 255, 3, 254, 247, 0, 9, 2, 252, 1, 0, 233, 219, 236, 8, 28, 32, 16,
-			248, 245, 5, 2, 241, 240, 250, 250, 1, 23, 22, 246, 226, 236, 251, 6, 20, 17, 247, 240, 14, 31, 10, 242, 238, 240, 238, 249, 16, 23,
-			6, 250, 3, 23, 32, 17, 246, 233, 240, 244, 242, 246, 0, 9, 15, 19, 19, 4, 244, 244, 250, 243, 234, 248, 20, 22, 1, 254, 2, 249,
-			237, 243, 255, 254, 251, 2, 10, 7, 5, 4, 253, 247, 251, 251, 244, 252, 6, 254, 246, 11, 31, 17, 248, 239, 247, 8, 26, 15, 241, 238,
-			1, 254, 235, 255, 29, 5, 213, 219, 12, 42, 38, 17, 245, 231, 243, 255, 1, 4, 251, 224, 226, 10, 34, 17, 13, 30, 13, 236, 243, 11,
-			8, 238, 218, 225, 255, 24, 20, 2, 0, 10, 16, 27, 28, 255, 219, 221, 255, 20, 6, 234, 225, 248, 22, 28, 7, 248, 254, 4, 251, 243,
-			6, 30, 19, 240, 227, 248, 6, 1, 247, 243, 251, 13, 32, 33, 8, 238, 237, 253, 249, 232, 251, 26, 16, 247, 0, 17, 4, 242, 249, 1,
-			255, 1, 8, 9, 17, 16, 247, 234, 255, 250, 215, 231, 36, 45, 253, 240, 11, 4, 222, 219, 250, 9, 11, 21, 14, 252, 251, 251, 234, 227,
-			248, 17, 23, 20, 13, 250, 237, 250, 12, 252, 226, 243, 16, 12, 3, 21, 21, 248, 240, 254, 248, 237, 0, 19, 6, 252, 8, 8, 250, 255,
-			2, 238, 230, 251, 10, 5, 7, 25, 30, 14, 246, 228, 225, 238, 5, 19, 10, 246, 233, 242, 14, 41, 35, 251, 211, 215, 11, 51, 29, 239,
-			227, 239, 235, 229, 249, 23, 37, 14, 244, 4, 37, 18, 229, 231, 253, 232, 209, 245, 35, 26, 247, 243, 17, 42, 29, 5, 6, 9, 236, 211,
-			235, 7, 252, 248, 33, 58, 29, 248, 244, 10, 15, 234, 204, 237, 22, 2, 226, 246, 33, 46, 26, 251, 231, 241, 6, 3, 244, 252, 2, 242,
-			237, 252, 0, 255, 15, 26, 12, 3, 3, 246, 237, 255, 12, 254, 249, 13, 11, 236, 236, 14, 24, 3, 2, 27, 31, 252, 212, 216, 253, 8,
-			246, 251, 35, 62, 43, 7, 233, 218, 235, 253, 230, 214, 255, 44, 32, 5, 11, 23, 15, 0, 230, 196, 220, 24, 26, 236, 234, 14, 12, 247,
-			2, 20, 17, 28, 28, 232, 192, 232, 24, 5, 225, 235, 3, 5, 14, 37, 35, 6, 242, 242, 242, 241, 0, 32, 40, 3, 229, 245, 5, 240,
-			226, 0, 30, 22, 3, 3, 14, 13, 247, 214, 211, 3, 50, 30, 247, 11, 42, 0, 198, 213, 3, 13, 254, 248, 0, 20, 48, 39, 251, 236,
-			254, 237, 204, 225, 17, 27, 4, 248, 241, 250, 33, 64, 36, 239, 221, 239, 4, 9, 252, 242, 242, 247, 248, 246, 4, 31, 35, 12, 0, 7,
-			10, 254, 236, 229, 242, 254, 252, 2, 20, 15, 249, 252, 14, 4, 240, 254, 20, 254, 222, 240, 24, 19, 236, 223, 0, 28, 17, 255, 13, 37,
-			15, 215, 195, 231, 18, 25, 12, 5, 6, 8, 8, 6, 255, 246, 247, 0, 254, 238, 239, 14, 31, 6, 245, 5, 11, 252, 0, 14, 254, 233,
-			249, 11, 0, 240, 250, 9, 12, 4, 253, 3, 19, 11, 245, 244, 251, 240, 237, 6, 20, 3, 243, 237, 243, 14, 34, 23, 5, 1, 247, 238,
-			1, 20, 254, 226, 244, 14, 0, 237, 1, 29, 22, 1, 0, 7, 5, 250, 243, 240, 241, 0, 13, 8, 245, 228, 239, 30, 63, 18, 210, 224,
-			27, 41, 2, 230, 240, 3, 252, 227, 237, 16, 25, 9, 255, 254, 252, 2, 17, 2, 216, 213, 12, 54, 39, 2, 237, 239, 6, 21, 250, 221,
-			250, 24, 3, 253, 23, 11, 211, 199, 255, 44, 45, 24, 248, 216, 225, 9, 22, 0, 253, 20, 5, 207, 216, 54, 74, 208, 156, 32, 126, 27,
-			176, 223, 44, 32, 230, 203, 234, 31, 37, 250, 239, 18, 27, 3, 255, 244, 211, 233, 32, 18, 229, 250, 36, 17, 245, 6, 23, 248, 212, 224,
-			7, 23, 7, 251, 1, 5, 0, 11, 30, 5, 225, 247, 33, 7, 211, 231, 34, 25, 209, 198, 36, 79, 248, 193, 8, 62, 254, 189, 224, 25,
-			15, 230, 231, 21, 53, 30, 242, 238, 8, 2, 235, 253, 20, 0, 240, 3, 252, 206, 218, 41, 68, 15, 250, 20, 14, 233, 217, 217, 213, 239,
-			38, 51, 3, 228, 249, 17, 15, 9, 6, 254, 249, 248, 233, 221, 244, 23, 21, 255, 4, 26, 28, 12, 251, 236, 227, 232, 253, 9, 2, 249,
-			246, 2, 30, 37, 12, 251, 4, 4, 233, 207, 212, 252, 35, 30, 0, 3, 38, 27, 238, 235, 13, 9, 225, 219, 3, 29, 17, 253, 237, 222,
-			234, 23, 66, 66, 27, 231, 201, 216, 241, 231, 219, 2, 72, 95, 45, 236, 205, 218, 231, 223, 240, 23, 37, 24, 4, 241, 228, 240, 11, 17,
-			4, 6, 13, 8, 0, 243, 224, 221, 238, 255, 3, 20, 56, 56, 9, 232, 221, 200, 188, 233, 40, 52, 31, 16, 255, 228, 212, 224, 9, 59,
-			62, 251, 195, 224, 22, 14, 228, 234, 15, 19, 0, 254, 16, 35, 25, 239, 208, 229, 16, 23, 253, 246, 8, 8, 250, 253, 0, 1, 30, 49,
-			0, 183, 182, 252, 42, 14, 230, 247, 35, 44, 9, 228, 213, 223, 1, 33, 30, 255, 225, 222, 247, 18, 27, 21, 25, 37, 24, 233, 190, 198,
-			242, 20, 34, 32, 12, 241, 236, 2, 17, 13, 17, 32, 12, 201, 170, 229, 48, 53, 1, 235, 11, 39, 12, 223, 225, 12, 23, 241, 219, 246,
-			11, 255, 242, 4, 32, 34, 14, 8, 16, 247, 198, 201, 8, 46, 6, 229, 22, 67, 10, 184, 204, 36, 71, 35, 247, 226, 214, 202, 217, 14,
-			75, 87, 42, 250, 219, 201, 204, 247, 45, 38, 238, 217, 239, 242, 233, 17, 74, 60, 254, 216, 227, 248, 244, 230, 239, 10, 14, 1, 11, 24,
-			9, 250, 24, 67, 33, 190, 141, 193, 18, 57, 57, 29, 253, 247, 247, 238, 242, 11, 37, 26, 241, 216, 240, 5, 223, 186, 245, 93, 106, 9,
-			204, 243, 26, 8, 234, 220, 218, 238, 21, 39, 18, 7, 27, 24, 243, 222, 240, 16, 22, 248, 218, 233, 18, 26, 253, 247, 23, 29, 242, 228,
-			26, 65, 4, 170, 171, 0, 65, 54, 10, 236, 228, 234, 252, 41, 79, 44, 215, 160, 181, 247, 48, 60, 30, 7, 9, 18, 1, 217, 197, 231,
-			35, 62, 36, 246, 216, 219, 233, 236, 3, 42, 48, 19, 252, 0, 11, 248, 205, 193, 238, 38, 57, 35, 250, 217, 221, 4, 39, 30, 251, 245,
-			14, 12, 230, 223, 253, 251, 215, 231, 56, 102, 45, 216, 200, 238, 2, 5, 12, 6, 243, 232, 240, 1, 24, 28, 12, 12, 13, 247, 229, 236,
-			237, 229, 250, 25, 22, 254, 246, 252, 0, 7, 29, 33, 253, 205, 190, 226, 31, 58, 25, 240, 244, 11, 20, 24, 18, 236, 201, 219, 253, 12,
-			21, 22, 0, 240, 251, 6, 13, 32, 39, 7, 222, 221, 245, 252, 247, 250, 3, 18, 31, 26, 254, 221, 213, 243, 28, 39, 10, 231, 214, 228,
-			3, 28, 23, 6, 11, 15, 0, 253, 7, 238, 198, 225, 45, 66, 19, 240, 229, 220, 229, 5, 28, 29, 28, 22, 1, 230, 209, 218, 9, 49,
-			35, 245, 228, 242, 249, 3, 30, 34, 6, 244, 251, 0, 245, 227, 223, 251, 13, 1, 1, 21, 16, 245, 242, 9, 17, 9, 12, 6, 235, 222,
-			238, 237, 224, 11, 74, 49, 226, 214, 21, 55, 16, 216, 216, 5, 11, 221, 205, 4, 56, 34, 251, 11, 33, 254, 208, 225, 14, 23, 254, 222,
-			210, 240, 35, 49, 20, 6, 10, 248, 221, 240, 24, 21, 234, 209, 228, 10, 26, 7, 5, 51, 71, 11, 194, 179, 219, 14, 44, 45, 22, 247,
-			214, 191, 228, 62, 106, 55, 238, 217, 211, 198, 216, 8, 43, 45, 32, 13, 242, 230, 236, 233, 235, 20, 68, 52, 241, 200, 203, 222, 253, 30,
-			48, 52, 42, 251, 176, 164, 238, 49, 51, 27, 19, 8, 251, 243, 224, 217, 6, 61, 39, 221, 214, 18, 30, 255, 252, 10, 251, 222, 239, 47,
-			80, 30, 204, 168, 190, 226, 9, 74, 112, 58, 213, 169, 207, 242, 239, 255, 46, 71, 28, 221, 195, 213, 12, 59, 47, 2, 239, 251, 250, 227,
-			228, 3, 30, 27, 7, 253, 1, 4, 254, 250, 255, 252, 243, 250, 8, 6, 253, 250, 248, 253, 19, 35, 12, 230, 222, 245, 0, 246, 249, 4,
-			8, 12, 24, 27, 10, 237, 215, 223, 4, 32, 10, 223, 229, 16, 26, 255, 2, 32, 20, 231, 215, 247, 21, 16, 243, 228, 245, 15, 19, 0,
-			246, 10, 30, 24, 11, 249, 207, 168, 192, 17, 80, 78, 22, 225, 216, 233, 0, 27, 48, 33, 239, 201, 210, 240, 255, 251, 7, 38, 58, 41,
-			254, 226, 240, 1, 248, 235, 243, 251, 249, 6, 22, 8, 251, 19, 42, 21, 246, 238, 237, 231, 240, 8, 15, 5, 255, 246, 248, 21, 46, 29,
-			249, 239, 249, 250, 237, 223, 226, 253, 34, 53, 38, 2, 234, 234, 249, 9, 18, 3, 229, 219, 248, 16, 18, 17, 17, 254, 231, 247, 25, 23,
-			239, 211, 222, 248, 7, 15, 22, 23, 9, 238, 229, 5, 39, 25, 239, 227, 244, 250, 241, 249, 20, 34, 20, 251, 242, 1, 15, 4, 245, 244,
-			255, 6, 0, 239, 231, 1, 38, 44, 21, 249, 236, 241, 243, 236, 245, 20, 31, 253, 222, 238, 16, 25, 17, 16, 8, 247, 243, 247, 245, 245,
-			253, 2, 8, 21, 24, 5, 247, 250, 250, 236, 239, 10, 25, 8, 240, 231, 238, 253, 8, 9, 6, 9, 12, 0, 231, 227, 252, 13, 9, 8,
-			9, 0, 245, 247, 252, 254, 2, 9, 2, 249, 255, 16, 23, 17, 4, 241, 223, 230, 7, 28, 15, 252, 247, 255, 6, 7, 11, 15, 5, 239,
-			229, 244, 3, 3, 0, 6, 7, 249, 240, 250, 10, 20, 18, 0, 231, 220, 236, 11, 28, 16, 1, 0, 4, 247, 226, 234, 15, 44, 32, 0,
-			238, 238, 8, 7, 88, 0, 0, 0, 0, 0, 0, 0, 255, 0, 2, 2, 0, 255, 254, 253, 254, 0, 4, 8, 8, 5, 1, 0, 254, 254,
-			0, 1, 2, 1, 255, 254, 254, 0, 1, 2, 2, 1, 0, 0, 0, 255, 0, 0, 2, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 255,
-			0, 1, 3, 5, 9, 18, 26, 21, 254, 230, 223, 231, 248, 4, 10, 14, 12, 1, 251, 251, 0, 0, 255, 255, 0, 255, 252, 252, 4, 13,
-			14, 8, 0, 245, 231, 224, 234, 1, 23, 26, 17, 7, 3, 3, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 255,
-			255, 0, 0, 0, 1, 2, 2, 1, 255, 254, 254, 0, 2, 3, 1, 255, 254, 254, 0, 2, 6, 8, 7, 3, 0, 253, 253, 254, 255, 0,
-			3, 3, 0, 255, 0, 0, 0, 0, 1, 1, 0, 255, 0, 1, 0, 255, 0, 2, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
-			0, 0, 2, 7, 13, 15, 6, 247, 235, 236, 246, 1, 9, 14, 13, 7, 254, 250, 251, 253, 255, 0, 2, 4, 3, 1, 0, 0, 255, 252,
-			252, 254, 0, 0, 255, 255, 0, 1, 3, 5, 6, 6, 3, 0, 253, 253, 254, 255, 255, 0, 0, 0, 1, 5, 9, 6, 255, 251, 252, 0,
-			2, 1, 0, 0, 4, 7, 4, 252, 246, 248, 255, 5, 9, 6, 255, 249, 250, 1, 15, 35, 51, 47, 20, 246, 225, 214, 219, 241, 13, 27,
-			16, 255, 247, 252, 0, 253, 252, 255, 245, 229, 247, 23, 13, 233, 234, 11, 17, 244, 228, 243, 0, 249, 228, 223, 251, 22, 24, 23, 23, 1,
-			232, 240, 11, 13, 253, 251, 0, 1, 6, 17, 18, 4, 251, 7, 15, 252, 242, 7, 22, 7, 244, 249, 7, 11, 6, 3, 2, 4, 255, 238,
-			227, 248, 21, 16, 241, 239, 20, 35, 251, 215, 240, 22, 18, 242, 233, 252, 249, 228, 246, 32, 23, 238, 242, 16, 17, 253, 240, 245, 4, 6,
-			243, 246, 24, 29, 250, 231, 252, 24, 10, 229, 237, 21, 15, 233, 236, 16, 28, 11, 244, 245, 7, 3, 240, 251, 27, 27, 243, 225, 253, 19,
-			7, 0, 19, 22, 238, 203, 235, 40, 41, 241, 220, 246, 13, 22, 5, 233, 239, 13, 18, 249, 236, 255, 16, 10, 249, 241, 246, 246, 244, 10,
-			40, 23, 229, 222, 5, 18, 0, 247, 0, 14, 4, 232, 239, 25, 31, 251, 238, 0, 13, 10, 244, 242, 25, 43, 254, 207, 226, 20, 37, 13,
-			250, 3, 27, 16, 220, 207, 255, 25, 15, 14, 23, 6, 233, 220, 236, 27, 44, 250, 206, 230, 18, 29, 22, 0, 224, 220, 247, 26, 35, 10,
-			241, 224, 219, 244, 36, 46, 12, 250, 246, 234, 238, 255, 253, 248, 25, 53, 1, 179, 199, 42, 68, 254, 220, 1, 20, 248, 231, 253, 14, 3,
-			1, 20, 19, 246, 221, 241, 37, 35, 221, 192, 251, 49, 35, 0, 242, 242, 242, 239, 249, 15, 30, 28, 8, 220, 195, 1, 69, 16, 190, 221,
-			65, 80, 243, 190, 242, 30, 255, 221, 9, 75, 46, 209, 183, 241, 18, 250, 243, 25, 45, 254, 192, 232, 64, 53, 234, 205, 241, 30, 20, 231,
-			232, 25, 40, 238, 188, 232, 53, 58, 7, 227, 211, 212, 4, 61, 44, 247, 237, 242, 223, 240, 39, 47, 253, 214, 225, 3, 28, 23, 6, 0,
-			242, 230, 255, 34, 27, 0, 245, 226, 203, 240, 65, 86, 6, 174, 182, 23, 78, 10, 190, 212, 20, 39, 23, 7, 243, 227, 246, 22, 17, 247,
-			252, 37, 31, 193, 177, 54, 117, 7, 203, 30, 47, 191, 164, 39, 126, 29, 169, 209, 38, 15, 223, 29, 106, 46, 184, 176, 5, 29, 232, 235,
-			55, 67, 228, 176, 0, 67, 10, 203, 245, 33, 249, 222, 10, 22, 231, 229, 27, 34, 236, 208, 239, 16, 8, 237, 235, 1, 16, 10, 255, 250,
-			5, 29, 28, 245, 215, 237, 23, 26, 0, 7, 37, 21, 221, 213, 15, 54, 23, 234, 241, 24, 24, 238, 214, 242, 28, 36, 11, 248, 241, 232,
-			226, 244, 14, 23, 14, 247, 228, 245, 12, 248, 213, 247, 66, 45, 184, 148, 8, 106, 41, 190, 222, 68, 44, 191, 198, 56, 86, 250, 194, 242,
-			32, 8, 229, 0, 50, 47, 242, 197, 236, 49, 45, 246, 231, 0, 6, 1, 5, 6, 9, 11, 239, 205, 244, 59, 31, 197, 213, 54, 54, 227,
-			224, 25, 15, 226, 242, 18, 13, 6, 4, 230, 220, 19, 41, 245, 241, 36, 14, 219, 249, 38, 3, 219, 2, 39, 255, 229, 20, 46, 248, 205,
-			249, 50, 27, 217, 218, 29, 42, 220, 183, 11, 73, 10, 207, 246, 46, 10, 176, 206, 71, 74, 237, 237, 46, 7, 175, 220, 81, 74, 220, 197,
-			12, 29, 244, 246, 22, 22, 247, 225, 241, 18, 35, 20, 234, 215, 245, 21, 25, 18, 4, 234, 245, 26, 4, 226, 9, 48, 247, 196, 253, 52,
-			25, 249, 251, 237, 232, 7, 32, 25, 238, 192, 211, 35, 79, 35, 220, 180, 208, 32, 73, 32, 236, 224, 225, 240, 12, 22, 27, 28, 252, 218,
-			235, 15, 11, 243, 249, 18, 24, 9, 248, 236, 240, 9, 24, 6, 238, 245, 19, 23, 240, 220, 3, 35, 18, 241, 227, 247, 21, 25, 2, 244,
-			222, 197, 248, 83, 78, 238, 184, 221, 8, 11, 10, 34, 40, 236, 190, 241, 45, 19, 240, 23, 48, 228, 177, 255, 70, 23, 205, 206, 9, 37,
-			11, 255, 11, 249, 214, 243, 48, 35, 230, 230, 6, 250, 239, 14, 38, 27, 255, 246, 6, 0, 228, 233, 21, 28, 243, 244, 40, 35, 229, 208,
-			244, 30, 40, 3, 214, 219, 15, 35, 251, 229, 12, 42, 13, 215, 209, 19, 39, 224, 205, 18, 46, 0, 227, 255, 20, 5, 252, 253, 245, 241,
-			248, 11, 36, 29, 244, 218, 239, 19, 24, 6, 254, 244, 232, 244, 12, 17, 5, 0, 250, 242, 6, 31, 4, 212, 224, 15, 12, 240, 4, 28,
-			253, 225, 252, 26, 0, 214, 232, 25, 25, 244, 241, 18, 25, 248, 225, 246, 28, 32, 244, 218, 3, 34, 242, 202, 1, 57, 19, 230, 241, 249,
-			238, 7, 28, 2, 245, 1, 247, 229, 0, 37, 21, 242, 238, 241, 242, 9, 28, 14, 243, 215, 220, 14, 59, 48, 250, 197, 189, 245, 53, 48,
-			2, 237, 233, 228, 246, 22, 33, 27, 1, 227, 229, 1, 14, 1, 250, 3, 12, 10, 4, 250, 241, 252, 16, 14, 246, 235, 2, 27, 8, 222,
-			231, 23, 35, 4, 233, 237, 6, 21, 10, 253, 245, 218, 217, 35, 90, 32, 198, 193, 246, 13, 3, 15, 38, 7, 203, 206, 18, 37, 247, 252,
-			47, 16, 185, 206, 54, 65, 240, 197, 240, 36, 27, 255, 6, 11, 233, 222, 19, 51, 3, 221, 250, 4, 238, 252, 30, 35, 9, 243, 253, 7,
-			239, 218, 252, 35, 8, 231, 10, 49, 9, 212, 223, 14, 45, 25, 227, 203, 243, 32, 12, 224, 244, 38, 35, 244, 211, 249, 49, 8, 201, 243,
-			56, 33, 228, 233, 18, 17, 251, 251, 253, 241, 236, 253, 30, 42, 6, 222, 224, 4, 27, 20, 9, 249, 223, 226, 12, 30, 6, 249, 4, 2,
-			244, 8, 28, 241, 204, 242, 28, 19, 2, 9, 6, 236, 232, 8, 33, 5, 216, 221, 14, 29, 253, 246, 23, 20, 222, 198, 0, 68, 47, 214,
-			206, 30, 32, 210, 232, 81, 74, 228, 202, 243, 249, 248, 24, 39, 17, 238, 207, 222, 27, 62, 28, 233, 219, 227, 239, 19, 47, 16, 227, 215,
-			239, 20, 41, 29, 0, 227, 215, 232, 13, 33, 17, 1, 6, 244, 220, 253, 50, 38, 232, 208, 240, 8, 5, 12, 29, 15, 237, 226, 255, 23,
-			17, 0, 250, 252, 254, 247, 246, 18, 49, 20, 211, 211, 22, 42, 251, 236, 2, 250, 230, 252, 34, 34, 0, 231, 235, 251, 3, 14, 25, 5,
-			219, 230, 31, 37, 243, 228, 15, 37, 254, 219, 248, 33, 14, 228, 241, 23, 7, 227, 246, 27, 5, 227, 255, 36, 0, 212, 254, 52, 25, 228,
-			217, 239, 6, 15, 17, 23, 17, 237, 216, 4, 48, 8, 211, 242, 27, 249, 213, 1, 40, 1, 230, 10, 28, 240, 218, 252, 4, 234, 245, 18,
-			10, 1, 17, 6, 217, 220, 28, 48, 249, 211, 224, 0, 25, 26, 5, 1, 21, 13, 229, 229, 30, 50, 245, 196, 226, 16, 23, 22, 34, 25,
-			245, 217, 221, 248, 26, 45, 18, 225, 212, 248, 20, 17, 18, 23, 1, 224, 218, 246, 16, 20, 9, 252, 243, 247, 5, 9, 1, 7, 16, 255,
-			220, 216, 5, 48, 37, 247, 222, 236, 9, 23, 11, 247, 242, 0, 10, 0, 244, 252, 7, 8, 0, 248, 252, 3, 5, 255, 250, 2, 9, 246,
-			231, 249, 16, 9, 250, 0, 12, 5, 243, 237, 251, 13, 10, 246, 246, 11, 9, 237, 240, 22, 42, 23, 249, 228, 225, 248, 25, 31, 8, 251,
-			252, 250, 254, 16, 28, 10, 238, 231, 247, 5, 14, 10, 254, 249, 253, 248, 246, 6, 20, 1, 235, 243, 3, 253, 237, 244, 13, 27, 11, 244,
-			232, 229, 246, 20, 33, 16, 248, 242, 247, 243, 239, 255, 26, 32, 12, 245, 231, 241, 11, 22, 11, 0, 250, 237, 242, 13, 24, 8, 255, 7,
-			4, 245, 247, 9, 14, 3, 251, 246, 240, 246, 12, 25, 18, 2, 249, 244, 247, 255, 3, 6, 12, 12, 254, 236, 242, 4, 11, 9, 12, 8,
-			249, 236, 240, 0, 15, 16, 6, 2, 4, 255, 242, 243, 6, 18, 12, 2, 254, 252, 251, 255, 2, 2, 0, 0, 2, 4, 0, 253, 1, 8,
-			1, 246, 248, 5, 9, 0, 248, 248, 249, 246, 250, 6, 10, 253, 238, 240, 251, 1, 4, 3, 255, 252, 252, 253, 0, 2, 0, 253, 254, 2,
-			8, 12, 5, 249, 248, 3, 11, 11, 13, 13, 252, 235, 244, 9, 18, 13, 7, 3, 254, 248, 246, 252, 3, 6, 3, 255, 254, 253, 252, 253,
-			2, 6, 2, 250, 244, 242, 244, 251, 0, 253, 248, 254, 5, 3, 255, 0, 0, 249, 243, 245, 253, 6, 10, 6, 0, 254, 254, 3, 12, 11,
-			1, 248, 244, 247, 3, 15, 16, 11, 8, 8, 7, 5, 6, 4, 251, 244, 249, 1, 5, 6, 11, 13, 6, 0, 0, 254, 250, 249, 248, 249,
-			251, 0, 4, 7, 10, 10, 122, 6, 55, 0, 253, 254, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, 255, 254, 255, 0, 2, 1,
-			0, 254, 253, 0, 6, 7, 5, 2, 255, 250, 255, 9, 11, 2, 253, 0, 3, 2, 255, 0, 4, 3, 3, 1, 255, 0, 4, 1, 254, 3,
-			7, 0, 248, 248, 254, 4, 9, 5, 253, 248, 250, 255, 8, 9, 250, 243, 253, 4, 2, 255, 254, 255, 253, 252, 255, 5, 8, 5, 0, 251,
-			248, 253, 10, 15, 6, 247, 237, 248, 5, 6, 4, 3, 252, 245, 249, 0, 5, 12, 11, 254, 248, 0, 6, 1, 251, 250, 255, 9, 14, 252,
-			236, 251, 9, 13, 12, 248, 235, 1, 25, 11, 251, 253, 251, 250, 5, 10, 6, 8, 255, 231, 233, 7, 28, 26, 2, 234, 243, 23, 37, 20,
-			4, 246, 233, 240, 0, 11, 17, 9, 235, 228, 247, 252, 8, 25, 12, 244, 238, 244, 249, 13, 30, 10, 236, 230, 238, 248, 11, 21, 5, 245,
-			245, 249, 250, 254, 7, 24, 27, 251, 221, 238, 15, 18, 11, 13, 0, 239, 247, 7, 8, 7, 2, 250, 4, 10, 246, 240, 9, 28, 16, 250,
-			236, 235, 252, 20, 26, 4, 239, 241, 254, 4, 10, 12, 253, 232, 241, 13, 17, 0, 252, 245, 238, 13, 31, 0, 236, 238, 245, 4, 20, 10,
-			7, 20, 253, 222, 242, 16, 15, 8, 6, 248, 244, 255, 254, 253, 3, 8, 14, 14, 249, 230, 245, 2, 254, 5, 23, 23, 3, 232, 219, 241,
-			21, 34, 24, 1, 223, 212, 253, 41, 38, 11, 242, 220, 230, 16, 37, 15, 245, 227, 228, 8, 42, 30, 252, 226, 218, 249, 40, 30, 252, 4,
-			3, 222, 230, 27, 28, 253, 1, 1, 223, 224, 14, 34, 23, 7, 239, 219, 228, 3, 39, 47, 252, 192, 213, 19, 48, 42, 3, 195, 202, 45,
-			73, 252, 213, 244, 6, 253, 251, 13, 29, 13, 230, 225, 2, 29, 26, 249, 211, 232, 44, 58, 250, 199, 205, 1, 61, 50, 237, 209, 243, 2,
-			255, 28, 53, 0, 201, 223, 1, 23, 39, 25, 3, 12, 19, 253, 0, 43, 59, 26, 235, 219, 245, 2, 239, 227, 246, 251, 247, 9, 7, 229,
-			220, 247, 10, 21, 21, 246, 239, 24, 8, 184, 204, 51, 53, 249, 218, 188, 194, 27, 90, 29, 214, 235, 16, 5, 0, 12, 7, 27, 50, 3,
-			195, 222, 33, 46, 32, 6, 221, 205, 244, 68, 82, 250, 192, 220, 3, 31, 48, 11, 211, 227, 1, 240, 245, 25, 12, 235, 246, 250, 232, 252,
-			13, 253, 24, 60, 215, 132, 252, 115, 83, 234, 156, 175, 8, 67, 41, 247, 245, 11, 1, 255, 4, 235, 234, 20, 48, 40, 5, 222, 216, 245,
-			12, 41, 73, 27, 214, 209, 212, 236, 60, 99, 28, 197, 184, 226, 40, 62, 0, 223, 248, 254, 234, 242, 16, 7, 235, 255, 12, 239, 250, 16,
-			244, 231, 1, 252, 245, 43, 55, 249, 219, 217, 230, 28, 76, 36, 212, 203, 251, 21, 2, 242, 17, 40, 8, 219, 208, 240, 29, 55, 39, 241,
-			200, 218, 10, 49, 57, 0, 189, 205, 13, 59, 49, 234, 173, 228, 62, 51, 10, 5, 233, 203, 234, 21, 29, 39, 25, 220, 199, 252, 27, 6,
-			255, 250, 242, 10, 16, 237, 244, 45, 43, 251, 235, 224, 230, 18, 41, 23, 250, 228, 229, 11, 42, 27, 2, 222, 191, 223, 31, 54, 34, 1,
-			215, 221, 23, 29, 0, 11, 15, 232, 207, 231, 11, 45, 50, 1, 210, 225, 18, 27, 250, 233, 251, 9, 0, 235, 248, 52, 50, 224, 198, 247,
-			31, 34, 255, 209, 217, 20, 44, 33, 26, 248, 204, 226, 30, 40, 1, 218, 209, 8, 66, 30, 224, 237, 17, 2, 237, 243, 8, 26, 252, 209,
-			232, 35, 57, 24, 238, 215, 220, 252, 23, 12, 5, 25, 0, 209, 229, 34, 51, 33, 255, 199, 196, 252, 27, 33, 25, 247, 218, 239, 19, 32,
-			27, 251, 217, 227, 255, 22, 42, 26, 234, 240, 26, 3, 232, 0, 11, 11, 8, 229, 199, 249, 53, 38, 11, 253, 219, 208, 251, 26, 29, 49,
-			22, 192, 184, 26, 76, 26, 226, 194, 220, 40, 67, 22, 228, 208, 221, 17, 61, 41, 252, 217, 210, 246, 33, 33, 0, 243, 9, 13, 223, 202,
-			0, 67, 61, 247, 205, 221, 244, 24, 56, 23, 233, 244, 4, 235, 248, 20, 245, 239, 11, 255, 239, 11, 11, 228, 237, 4, 240, 238, 29, 54,
-			2, 190, 193, 2, 69, 84, 11, 199, 212, 230, 251, 48, 64, 17, 241, 237, 220, 240, 40, 47, 22, 248, 224, 244, 15, 11, 0, 255, 246, 5,
-			55, 42, 217, 170, 199, 25, 86, 52, 217, 188, 0, 40, 0, 245, 18, 255, 240, 0, 234, 225, 7, 30, 20, 5, 235, 203, 228, 37, 48, 2,
-			229, 223, 241, 35, 53, 21, 250, 233, 229, 255, 32, 32, 5, 231, 218, 1, 39, 24, 22, 24, 237, 208, 241, 19, 13, 16, 13, 242, 243, 17,
-			2, 226, 253, 21, 242, 214, 235, 1, 14, 33, 28, 249, 227, 232, 254, 23, 19, 241, 226, 239, 245, 7, 36, 32, 252, 213, 203, 6, 87, 43,
-			199, 216, 12, 16, 28, 47, 25, 1, 247, 201, 197, 12, 54, 50, 17, 208, 192, 27, 76, 255, 220, 252, 239, 239, 47, 35, 198, 212, 25, 34,
-			34, 14, 202, 186, 5, 32, 248, 242, 3, 20, 38, 19, 224, 227, 21, 28, 1, 222, 206, 5, 57, 20, 240, 3, 255, 227, 3, 36, 33, 30,
-			233, 165, 208, 70, 121, 70, 235, 153, 163, 254, 58, 69, 40, 220, 161, 217, 49, 43, 14, 33, 4, 170, 175, 24, 65, 18, 236, 213, 225, 45,
-			57, 214, 188, 26, 57, 236, 204, 232, 0, 40, 80, 39, 221, 212, 239, 2, 26, 34, 2, 231, 238, 242, 252, 27, 51, 48, 3, 201, 198, 251,
-			35, 36, 12, 227, 221, 16, 35, 6, 3, 6, 225, 210, 3, 31, 21, 5, 233, 222, 255, 45, 64, 26, 204, 155, 196, 21, 56, 50, 24, 220,
-			179, 234, 69, 87, 22, 194, 161, 222, 61, 78, 15, 234, 242, 240, 236, 6, 32, 24, 253, 219, 203, 245, 60, 81, 42, 8, 242, 207, 212, 4,
-			23, 25, 25, 237, 191, 237, 60, 45, 234, 216, 248, 13, 253, 230, 237, 13, 31, 16, 251, 249, 5, 7, 241, 216, 232, 13, 12, 5, 20, 7,
-			240, 5, 28, 253, 230, 245, 243, 245, 9, 30, 41, 12, 228, 225, 248, 30, 57, 14, 191, 191, 14, 56, 47, 33, 0, 217, 230, 32, 57, 29,
-			252, 237, 240, 5, 31, 36, 33, 18, 232, 196, 216, 5, 14, 248, 229, 233, 247, 242, 232, 234, 241, 254, 0, 234, 217, 224, 232, 247, 32, 45,
-			3, 229, 226, 243, 22, 44, 24, 245, 227, 233, 21, 70, 55, 0, 228, 238, 14, 48, 42, 0, 231, 245, 9, 18, 22, 15, 0, 250, 252, 241,
-			228, 249, 23, 23, 2, 234, 222, 239, 11, 22, 3, 238, 238, 251, 254, 245, 246, 3, 10, 0, 246, 2, 23, 13, 239, 235, 3, 18, 11, 2,
-			4, 2, 249, 247, 10, 28, 17, 250, 235, 241, 4, 15, 8, 255, 253, 0, 7, 7, 248, 243, 4, 14, 9, 6, 4, 251, 249, 3, 13, 14,
-			8, 252, 240, 242, 3, 14, 5, 253, 1, 5, 6, 12, 7, 239, 228, 245, 6, 9, 3, 248, 239, 250, 7, 0, 245, 251, 0, 250, 247, 248,
-			247, 253, 11, 19, 5, 235, 231, 0, 22, 20, 5, 241, 230, 255, 28, 24, 10, 1, 253, 255, 252, 249, 0, 10, 16, 16, 7, 251, 255, 8,
-			5, 0, 1, 255, 254, 3, 6, 253, 242, 242, 253, 10, 19, 8, 239, 223, 230, 247, 6, 23, 22, 4, 249, 241, 240, 0, 22, 20, 252, 235,
-			241, 3, 21, 24, 11, 247, 231, 235, 11, 35, 20, 250, 237, 240, 2, 21, 27, 21, 13, 255, 231, 222, 246, 25, 34, 11, 236, 222, 236, 11,
-			33, 19, 239, 217, 232, 13, 36, 20, 240, 224, 243, 17, 27, 15, 3, 249, 243, 251, 2, 0, 1, 9, 14, 10, 253, 238, 239, 4, 25, 24,
-			7, 251, 252, 252, 249, 251, 8, 24, 24, 2, 229, 221, 242, 14, 26, 9, 241, 237, 252, 7, 8, 255, 248, 254, 5, 9, 12, 6, 246, 228,
-			230, 3, 31, 26, 255, 231, 227, 244, 10, 21, 15, 3, 249, 242, 243, 251, 6, 12, 1, 241, 242, 253, 0, 255, 249, 244, 253, 5, 6, 0,
-			247, 246, 255, 1, 252, 254, 7, 9, 3, 253, 249, 250, 0, 6, 6, 3, 2, 1, 255, 2, 11, 15, 11, 9, 6, 0, 0, 5, 8, 10,
-			7, 0, 254, 0, 4, 7, 5, 0, 252, 251, 255, 3, 2, 0, 255, 0, 255, 254, 253, 253, 254, 255, 0, 0, 0, 0, 3, 1, 252, 250,
-			255, 4, 7, 6, 1, 254, 255, 4, 10, 10, 6, 1, 0, 3, 8, 12, 12, 12, 6, 255, 0, 3, 3, 4, 6, 3, 253, 248, 252, 2,
-			7, 8, 2, 251, 253, 0, 251, 244, 251, 6, 6, 0, 248, 246, 252, 1, 254, 246, 242, 248, 8, 13, 254, 244, 243, 246, 0, 12, 19, 15,
-			253, 231, 227, 246, 17, 32, 17, 240, 223, 238, 3, 12, 11, 6, 0, 251, 251, 3, 10, 0, 241, 239, 255, 21, 23, 252, 226, 224, 247, 20,
-			29, 14, 254, 247, 250, 254, 253, 2, 18, 27, 14, 246, 234, 247, 7, 15, 11, 4, 0, 0, 255, 247, 245, 0, 14, 22, 21, 0, 229, 231,
-			8, 34, 25, 246, 218, 229, 7, 32, 22, 246, 223, 230, 2, 29, 31, 3, 227, 223, 0, 0, 60, 0, 3, 0, 5, 0, 176, 0, 248, 1,
-			176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 60, 2, 16, 5, 3, 1, 0, 0, 0, 0, 210, 75, 120, 120, 120, 120, 120, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			176, 0, 248, 1, 176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 0, 11, 35, 12, 8, 3, 1, 1, 1, 0, 210, 75, 120, 120, 120, 120,
-			120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 176, 0, 248, 1, 176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 0, 11, 35, 12, 8, 3, 1, 1, 1, 0, 210, 75,
-			120, 120, 120, 120, 120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 52, 3, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 7, 13, 21, 16, 235,
-			225, 4, 24, 254, 238, 0, 14, 0, 243, 2, 13, 254, 247, 11, 17, 255, 251, 7, 9, 5, 2, 4, 0, 251, 0, 5, 1, 253, 254, 0,
-			0, 249, 254, 3, 1, 255, 253, 253, 252, 247, 242, 7, 16, 255, 2, 26, 30, 218, 217, 27, 25, 228, 218, 26, 92, 34, 201, 216, 21, 41,
-			254, 232, 31, 59, 222, 164, 0, 79, 91, 225, 131, 243, 104, 75, 234, 182, 9, 69, 38, 233, 212, 247, 18, 20, 249, 218, 254, 25, 9, 234,
-			237, 3, 13, 4, 239, 249, 9, 12, 243, 3, 11, 10, 17, 13, 15, 254, 234, 229, 249, 25, 19, 230, 226, 16, 13, 245, 249, 17, 2, 4,
-			252, 248, 255, 21, 33, 226, 222, 19, 30, 22, 26, 252, 241, 247, 35, 24, 221, 241, 21, 17, 7, 0, 27, 32, 51, 47, 19, 239, 18, 28,
-			6, 225, 254, 5, 244, 230, 9, 7, 7, 2, 5, 6, 12, 246, 245, 12, 10, 235, 214, 14, 21, 252, 7, 24, 254, 15, 45, 16, 208, 227,
-			7, 0, 219, 217, 22, 51, 4, 248, 30, 14, 2, 19, 15, 242, 219, 249, 33, 238, 230, 16, 17, 245, 245, 34, 24, 224, 240, 51, 27, 223,
-			237, 17, 15, 251, 8, 33, 24, 4, 25, 19, 253, 4, 9, 254, 251, 245, 12, 0, 237, 2, 21, 255, 8, 31, 250, 248, 16, 6, 245, 248,
-			248, 12, 15, 249, 250, 9, 5, 3, 2, 4, 255, 252, 251, 252, 1, 251, 245, 1, 20, 0, 251, 10, 7, 246, 12, 18, 245, 245, 9, 0,
-			245, 255, 253, 238, 240, 5, 7, 251, 239, 0, 255, 254, 248, 252, 9, 245, 238, 14, 6, 240, 0, 16, 9, 1, 5, 14, 1, 252, 20, 12,
-			240, 5, 26, 2, 247, 13, 19, 251, 0, 20, 255, 0, 15, 255, 252, 3, 3, 7, 252, 248, 252, 8, 254, 6, 4, 253, 9, 11, 250, 241,
-			0, 6, 250, 2, 2, 248, 6, 13, 252, 242, 6, 5, 254, 251, 248, 14, 13, 241, 253, 6, 251, 241, 250, 0, 248, 242, 3, 254, 242, 0,
-			251, 244, 237, 240, 249, 254, 240, 237, 242, 237, 239, 245, 238, 236, 1, 224, 244, 230, 234, 242, 241, 238, 240, 249, 227, 252, 4, 211, 17, 252,
-			240, 0, 8, 250, 249, 5, 3, 250, 4, 9, 4, 8, 23, 11, 11, 14, 18, 14, 255, 19, 17, 6, 10, 25, 17, 10, 21, 12, 1, 14,
-			14, 1, 13, 17, 4, 5, 13, 10, 241, 19, 0, 245, 16, 0, 0, 1, 255, 8, 247, 6, 5, 7, 239, 16, 251, 244, 255, 0, 254, 247,
-			0, 5, 249, 2, 4, 246, 2, 5, 1, 252, 1, 253, 9, 1, 3, 253, 16, 4, 14, 9, 2, 11, 14, 4, 5, 18, 14, 6, 20, 16,
-			3, 19, 24, 8, 11, 20, 14, 10, 10, 15, 10, 5, 18, 18, 254, 17, 27, 0, 13, 22, 1, 9, 20, 9, 3, 11, 27, 6, 7, 30,
-			255, 7, 20, 247, 0, 5, 6, 7, 12, 246, 9, 244, 245, 8, 232, 246, 251, 247, 226, 250, 235, 236, 250, 245, 236, 237, 6, 234, 231, 250,
-			235, 243, 5, 250, 229, 14, 234, 237, 3, 217, 237, 12, 221, 252, 25, 233, 244, 29, 184, 13, 1, 201, 33, 226, 0, 14, 235, 253, 245, 246,
-			255, 254, 238, 237, 0, 238, 239, 247, 255, 241, 20, 18, 244, 21, 25, 242, 20, 7, 12, 23, 28, 7, 8, 31, 22, 11, 24, 5, 18, 15,
-			22, 2, 245, 10, 4, 239, 14, 253, 236, 20, 0, 249, 254, 19, 243, 4, 8, 233, 5, 0, 236, 6, 227, 4, 4, 243, 244, 0, 233, 248,
-			253, 228, 232, 236, 250, 230, 237, 252, 235, 238, 254, 237, 227, 0, 244, 228, 5, 234, 237, 247, 246, 230, 249, 238, 250, 254, 234, 0, 255, 248,
-			8, 0, 239, 14, 17, 255, 22, 9, 9, 32, 18, 14, 28, 28, 16, 33, 18, 7, 23, 29, 14, 12, 24, 19, 21, 24, 10, 14, 16, 24,
-			14, 7, 21, 21, 14, 18, 17, 9, 18, 18, 17, 3, 15, 11, 0, 8, 0, 0, 7, 1, 0, 254, 251, 6, 0, 246, 8, 247, 254, 5,
-			247, 2, 247, 2, 2, 250, 4, 1, 240, 244, 253, 254, 240, 10, 250, 235, 249, 239, 244, 220, 252, 227, 233, 244, 246, 221, 228, 2, 216, 222,
-			248, 225, 210, 11, 241, 213, 4, 244, 193, 218, 234, 177, 215, 248, 193, 205, 225, 226, 214, 206, 1, 205, 211, 31, 224, 211, 32, 13, 232, 49,
-			47, 14, 52, 83, 38, 38, 78, 66, 32, 60, 52, 11, 40, 46, 10, 14, 29, 21, 19, 14, 24, 0, 3, 0, 5, 0, 116, 0, 232, 0,
-			240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 25, 3, 12, 8, 4, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			116, 0, 232, 0, 240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 0, 3, 12, 8, 4, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175,
-			200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 116, 0, 232, 0, 240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 0, 3, 12, 8, 4, 4, 4, 4, 0, 0, 200, 212,
-			187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 219, 11, 36, 0, 7, 17, 19, 225, 216, 254, 31, 13, 216, 207, 17, 33, 10, 243, 229, 3, 15, 238, 228, 235,
-			33, 49, 231, 196, 4, 51, 235, 175, 11, 48, 5, 236, 241, 241, 15, 13, 230, 226, 14, 25, 243, 241, 6, 250, 8, 247, 239, 250, 26, 19,
-			216, 234, 44, 11, 226, 0, 19, 245, 247, 1, 255, 14, 11, 239, 1, 4, 231, 0, 33, 21, 242, 237, 5, 229, 244, 45, 15, 223, 0, 13,
-			226, 250, 35, 5, 2, 10, 211, 255, 49, 252, 251, 6, 28, 30, 252, 213, 220, 8, 20, 14, 11, 254, 0, 5, 2, 251, 242, 248, 37, 12,
-			245, 8, 0, 229, 252, 1, 234, 10, 16, 10, 13, 228, 222, 22, 38, 252, 210, 243, 36, 252, 227, 22, 38, 233, 246, 2, 237, 8, 31, 244,
-			238, 17, 8, 229, 213, 8, 67, 9, 187, 227, 35, 34, 215, 224, 42, 44, 247, 206, 227, 24, 54, 229, 215, 14, 31, 11, 243, 222, 0, 45,
-			9, 221, 236, 8, 25, 24, 241, 226, 10, 31, 229, 230, 18, 28, 11, 241, 213, 242, 39, 5, 239, 10, 251, 236, 7, 22, 255, 0, 4, 251,
-			0, 9, 251, 253, 238, 226, 19, 42, 14, 238, 0, 238, 231, 245, 23, 50, 11, 233, 252, 12, 230, 234, 29, 49, 3, 209, 226, 26, 48, 249,
-			228, 34, 37, 211, 200, 18, 53, 34, 240, 229, 0, 37, 254, 206, 250, 78, 44, 196, 221, 36, 22, 243, 230, 252, 32, 32, 244, 239, 249, 14,
-			252, 234, 13, 39, 238, 231, 6, 250, 253, 252, 232, 11, 51, 0, 202, 219, 35, 30, 210, 230, 42, 9, 238, 251, 255, 22, 10, 214, 224, 17,
-			32, 15, 235, 252, 24, 251, 213, 28, 33, 238, 13, 13, 238, 1, 20, 246, 249, 2, 14, 19, 254, 233, 248, 28, 9, 5, 0, 230, 230, 6,
-			21, 19, 27, 242, 229, 245, 2, 250, 39, 36, 228, 222, 25, 1, 218, 15, 37, 235, 17, 20, 215, 238, 15, 253, 253, 14, 37, 5, 220, 220,
-			21, 21, 1, 234, 253, 37, 3, 191, 10, 57, 240, 236, 21, 230, 244, 33, 235, 228, 18, 24, 250, 242, 223, 3, 44, 5, 238, 246, 4, 13,
-			231, 237, 44, 65, 223, 196, 6, 51, 19, 220, 227, 52, 39, 237, 204, 255, 33, 247, 223, 14, 22, 251, 241, 238, 238, 13, 30, 0, 240, 255,
-			6, 247, 243, 12, 1, 7, 25, 246, 250, 15, 251, 230, 255, 30, 25, 237, 225, 11, 19, 240, 254, 17, 21, 1, 215, 219, 71, 59, 224, 212,
-			6, 19, 8, 244, 7, 25, 2, 227, 251, 254, 8, 31, 14, 182, 241, 44, 12, 1, 252, 240, 1, 18, 248, 216, 5, 41, 239, 243, 37, 234,
-			209, 16, 53, 218, 230, 52, 8, 193, 247, 50, 26, 238, 239, 0, 28, 38, 219, 185, 31, 81, 249, 201, 19, 40, 230, 204, 251, 52, 54, 1,
-			201, 208, 27, 37, 241, 251, 35, 5, 227, 218, 235, 62, 45, 214, 214, 25, 28, 220, 212, 46, 61, 220, 206, 13, 27, 12, 237, 0, 15, 27,
-			253, 231, 15, 17, 250, 233, 3, 2, 16, 15, 0, 234, 7, 11, 235, 7, 14, 248, 236, 254, 30, 22, 235, 236, 251, 13, 13, 247, 230, 8,
-			12, 1, 14, 10, 6, 245, 223, 26, 51, 223, 229, 36, 249, 239, 26, 25, 248, 0, 242, 238, 9, 35, 0, 235, 26, 7, 223, 253, 33, 251,
-			240, 4, 2, 29, 28, 227, 228, 13, 252, 242, 255, 32, 51, 235, 200, 254, 26, 244, 255, 22, 8, 251, 237, 5, 18, 253, 244, 21, 13, 4,
-			249, 240, 0, 7, 19, 9, 234, 247, 8, 244, 223, 19, 55, 24, 203, 212, 17, 12, 244, 22, 24, 0, 254, 231, 233, 14, 36, 6, 231, 252,
-			29, 252, 233, 0, 235, 0, 44, 234, 230, 35, 8, 212, 233, 21, 24, 246, 210, 10, 45, 3, 230, 216, 26, 40, 235, 235, 32, 26, 242, 233,
-			253, 15, 27, 5, 3, 228, 245, 20, 254, 240, 22, 11, 7, 30, 242, 208, 11, 18, 239, 18, 49, 2, 209, 240, 254, 8, 15, 28, 5, 248,
-			231, 235, 6, 25, 6, 245, 237, 230, 18, 18, 228, 2, 25, 244, 221, 1, 22, 28, 252, 218, 252, 5, 252, 23, 232, 224, 51, 24, 224, 7,
-			8, 231, 10, 17, 10, 31, 251, 192, 230, 48, 26, 236, 1, 22, 244, 226, 247, 246, 39, 53, 215, 197, 31, 41, 245, 234, 245, 27, 34, 251,
-			219, 249, 31, 243, 228, 38, 46, 227, 231, 242, 241, 31, 57, 250, 196, 245, 20, 26, 0, 1, 15, 244, 228, 220, 13, 25, 15, 9, 238, 243,
-			6, 246, 234, 10, 15, 5, 249, 250, 253, 0, 5, 243, 236, 14, 48, 240, 222, 5, 4, 16, 12, 238, 0, 30, 239, 228, 15, 20, 13, 8,
-			231, 218, 27, 56, 252, 217, 238, 16, 36, 247, 220, 18, 35, 237, 210, 235, 48, 55, 251, 210, 249, 4, 229, 228, 45, 57, 7, 245, 223, 226,
-			229, 247, 27, 67, 10, 225, 1, 222, 235, 27, 29, 4, 255, 247, 238, 237, 16, 43, 0, 251, 250, 255, 234, 251, 15, 35, 18, 245, 231, 248,
-			15, 255, 248, 242, 35, 29, 252, 215, 234, 12, 19, 250, 220, 5, 20, 244, 244, 17, 19, 20, 192, 207, 51, 21, 223, 9, 23, 246, 250, 234,
-			232, 13, 29, 21, 239, 227, 13, 18, 228, 252, 33, 3, 250, 230, 226, 16, 39, 1, 248, 250, 4, 0, 232, 255, 47, 232, 213, 40, 52, 221,
-			206, 13, 30, 6, 231, 238, 23, 35, 251, 206, 9, 29, 244, 236, 11, 33, 17, 221, 175, 3, 80, 11, 227, 11, 0, 223, 252, 2, 252, 28,
-			34, 247, 203, 232, 42, 52, 232, 210, 38, 56, 227, 209, 29, 37, 211, 247, 72, 11, 205, 241, 2, 1, 26, 38, 13, 248, 204, 229, 54, 36,
-			218, 10, 57, 204, 194, 15, 35, 7, 24, 242, 214, 9, 0, 232, 14, 25, 17, 16, 232, 194, 245, 22, 17, 4, 11, 7, 224, 254, 249, 235,
-			21, 31, 233, 245, 25, 233, 238, 40, 2, 229, 12, 42, 226, 212, 19, 46, 243, 3, 22, 208, 246, 53, 246, 228, 22, 35, 244, 208, 23, 41,
-			239, 228, 0, 15, 0, 14, 255, 229, 8, 12, 249, 232, 11, 41, 234, 187, 14, 69, 240, 225, 10, 3, 221, 243, 33, 24, 250, 2, 250, 223,
-			9, 27, 12, 28, 237, 201, 254, 40, 3, 11, 253, 218, 16, 21, 240, 5, 244, 247, 8, 246, 10, 42, 9, 212, 220, 24, 33, 9, 225, 6,
-			14, 252, 245, 247, 22, 30, 239, 234, 18, 243, 2, 36, 216, 249, 70, 241, 206, 37, 252, 237, 56, 2, 207, 16, 21, 249, 0, 233, 15, 13,
-			208, 2, 77, 14, 210, 228, 253, 4, 1, 23, 20, 5, 219, 205, 2, 43, 24, 255, 217, 252, 15, 4, 11, 247, 227, 0, 253, 255, 10, 12,
-			253, 0, 32, 250, 222, 240, 1, 21, 21, 241, 255, 36, 254, 194, 238, 29, 26, 10, 19, 15, 233, 209, 4, 28, 15, 11, 251, 247, 252, 250,
-			8, 23, 0, 4, 240, 222, 16, 24, 9, 26, 2, 222, 234, 9, 22, 5, 248, 32, 21, 224, 241, 1, 14, 9, 249, 251, 24, 12, 222, 250,
-			16, 29, 15, 207, 239, 69, 8, 199, 7, 254, 247, 42, 243, 181, 40, 84, 209, 178, 18, 68, 16, 223, 223, 35, 42, 227, 200, 18, 81, 241,
-			210, 42, 27, 210, 235, 247, 19, 53, 6, 188, 238, 66, 23, 192, 216, 28, 65, 234, 229, 33, 26, 240, 247, 245, 242, 32, 43, 237, 237, 23,
-			15, 253, 17, 0, 223, 0, 34, 16, 21, 25, 247, 216, 221, 11, 61, 30, 242, 233, 238, 6, 8, 20, 22, 255, 221, 227, 16, 26, 11, 16,
-			244, 216, 245, 3, 3, 34, 38, 240, 191, 247, 21, 254, 21, 48, 227, 170, 0, 71, 246, 228, 14, 238, 219, 21, 20, 253, 33, 251, 205, 1,
-			19, 12, 7, 252, 2, 234, 225, 14, 21, 13, 26, 223, 213, 19, 3, 13, 53, 234, 207, 14, 254, 243, 41, 20, 222, 35, 2, 196, 232, 58,
-			67, 239, 213, 34, 34, 191, 215, 45, 33, 23, 36, 223, 199, 36, 13, 212, 4, 59, 14, 196, 231, 12, 207, 9, 85, 241, 187, 0, 247, 2,
-			45, 242, 226, 43, 0, 189, 251, 22, 5, 13, 0, 250, 15, 237, 214, 7, 14, 31, 19, 195, 225, 63, 13, 191, 255, 18, 11, 252, 209, 5,
-			63, 242, 190, 49, 27, 231, 238, 208, 10, 75, 0, 205, 9, 29, 32, 219, 174, 48, 81, 238, 203, 29, 42, 249, 209, 225, 13, 31, 10, 11,
-			17, 5, 217, 209, 6, 29, 31, 0, 242, 10, 253, 234, 243, 23, 44, 245, 220, 14, 9, 239, 34, 27, 229, 238, 4, 17, 11, 253, 3, 250,
-			219, 252, 55, 32, 211, 242, 59, 13, 201, 224, 46, 44, 222, 242, 34, 28, 213, 223, 54, 255, 195, 19, 63, 0, 224, 0, 20, 244, 18, 8,
-			239, 6, 3, 231, 12, 41, 16, 212, 254, 44, 239, 241, 250, 233, 38, 51, 224, 209, 25, 45, 233, 214, 234, 19, 49, 236, 215, 37, 16, 219,
-			225, 2, 48, 43, 252, 221, 217, 0, 17, 250, 250, 43, 26, 205, 195, 26, 46, 245, 229, 73, 66, 159, 165, 68, 48, 233, 251, 231, 36, 77,
-			191, 151, 53, 92, 238, 221, 32, 60, 252, 203, 218, 6, 76, 94, 3, 186, 9, 27, 228, 240, 52, 62, 20, 181, 215, 72, 25, 240, 13, 21,
-			12, 229, 203, 13, 90, 33, 229, 210, 246, 19, 246, 232, 38, 81, 5, 205, 196, 242, 35, 2, 6, 33, 248, 212, 216, 245, 48, 69, 6, 194,
-			220, 33, 34, 26, 254, 239, 6, 43, 241, 192, 37, 72, 237, 225, 41, 12, 226, 244, 236, 3, 34, 1, 222, 15, 62, 229, 166, 5, 86, 250,
-			177, 18, 52, 234, 225, 245, 13, 30, 227, 234, 40, 11, 192, 231, 18, 33, 251, 225, 44, 31, 175, 205, 28, 232, 0, 92, 17, 190, 207, 25,
-			6, 225, 9, 29, 249, 231, 215, 252, 54, 0, 196, 236, 12, 245, 244, 24, 18, 233, 205, 237, 43, 26, 229, 211, 240, 31, 3, 252, 5, 239,
-			249, 240, 208, 54, 61, 196, 226, 36, 245, 204, 14, 5, 0, 14, 233, 252, 8, 251, 249, 252, 216, 19, 51, 14, 229, 197, 234, 56, 42, 250,
-			251, 5, 216, 236, 28, 255, 255, 42, 27, 200, 195, 49, 61, 211, 220, 35, 13, 231, 249, 50, 35, 204, 217, 29, 28, 248, 234, 13, 28, 251,
-			213, 9, 68, 236, 208, 13, 9, 10, 22, 250, 226, 236, 58, 23, 211, 250, 34, 195, 213, 86, 52, 219, 205, 0, 24, 26, 248, 233, 249, 8,
-			22, 237, 6, 37, 250, 231, 223, 2, 77, 30, 181, 210, 43, 19, 254, 253, 6, 27, 246, 167, 2, 95, 12, 177, 5, 50, 0, 225, 208, 238,
-			35, 45, 9, 208, 220, 47, 251, 178, 12, 69, 23, 240, 196, 251, 78, 254, 163, 249, 73, 11, 202, 228, 38, 38, 233, 241, 4, 11, 8, 242,
-			220, 19, 46, 250, 238, 250, 9, 250, 222, 240, 50, 61, 242, 199, 253, 33, 243, 233, 13, 60, 15, 217, 211, 25, 72, 7, 189, 3, 63, 251,
-			210, 17, 29, 241, 253, 36, 249, 234, 21, 248, 202, 35, 114, 34, 177, 208, 6, 15, 25, 41, 18, 251, 5, 221, 211, 31, 21, 231, 32, 42,
-			214, 212, 3, 22, 61, 238, 205, 47, 16, 157, 234, 89, 47, 243, 246, 240, 241, 3, 246, 235, 49, 58, 230, 184, 251, 13, 238, 26, 16, 192,
-			5, 75, 251, 165, 3, 61, 20, 234, 2, 13, 3, 230, 3, 40, 5, 221, 24, 24, 191, 245, 61, 30, 246, 207, 2, 12, 10, 13, 4, 243,
-			254, 239, 219, 43, 21, 238, 38, 248, 183, 29, 56, 204, 14, 37, 215, 242, 40, 234, 215, 47, 35, 218, 224, 1, 251, 253, 31, 15, 237, 28,
-			2, 178, 36, 60, 201, 252, 59, 244, 11, 16, 220, 18, 47, 236, 6, 6, 247, 44, 15, 161, 228, 106, 40, 183, 219, 53, 63, 187, 199, 64,
-			47, 238, 233, 204, 43, 117, 226, 164, 27, 75, 234, 197, 222, 48, 72, 233, 223, 22, 252, 194, 214, 50, 75, 215, 173, 49, 71, 198, 192, 18,
-			60, 246, 203, 236, 38, 50, 16, 225, 186, 3, 97, 1, 150, 228, 84, 57, 192, 191, 30, 35, 186, 217, 57, 37, 230, 240, 208, 212, 22, 20,
-			255, 23, 8, 245, 191, 179, 33, 84, 250, 242, 254, 207, 224, 229, 248, 77, 52, 193, 203, 23, 3, 0, 235, 251, 71, 242, 160, 11, 44, 253,
-			230, 221, 78, 69, 147, 150, 97, 91, 202, 195, 234, 1, 20, 20, 36, 28, 244, 199, 204, 0, 54, 24, 31, 52, 229, 169, 251, 27, 23, 54,
-			39, 195, 218, 46, 7, 249, 51, 17, 222, 8, 61, 235, 227, 49, 10, 5, 65, 255, 180, 30, 83, 221, 226, 97, 31, 172, 0, 32, 32, 46,
-			234, 225, 20, 22, 245, 237, 31, 40, 229, 199, 39, 50, 218, 243, 50, 2, 198, 252, 38, 36, 227, 206, 29, 99, 8, 175, 1, 71, 244, 203,
-			62, 47, 218, 233, 1, 233, 10, 69, 5, 209, 209, 11, 23, 6, 222, 13, 72, 211, 136, 32, 115, 202, 161, 79, 87, 207, 157, 14, 77, 7,
-			211, 249, 4, 30, 249, 179, 251, 76, 249, 190, 24, 16, 252, 27, 244, 229, 29, 23, 238, 255, 38, 18, 206, 213, 66, 95, 236, 164, 253, 82,
-			0, 137, 9, 119, 5, 173, 255, 16, 5, 17, 200, 201, 124, 106, 142, 160, 70, 25, 206, 253, 51, 56, 247, 169, 210, 47, 53, 240, 228, 6,
-			15, 215, 221, 4, 24, 39, 243, 190, 10, 66, 247, 223, 228, 22, 52, 242, 194, 5, 69, 9, 220, 210, 254, 57, 27, 210, 221, 33, 19, 219,
-			221, 60, 41, 225, 7, 56, 248, 236, 209, 234, 70, 64, 234, 13, 22, 231, 230, 11, 5, 40, 40, 217, 223, 0, 236, 15, 54, 254, 225, 251,
-			11, 208, 212, 72, 65, 211, 213, 43, 234, 211, 24, 24, 0, 33, 251, 189, 245, 23, 18, 19, 223, 206, 44, 60, 206, 181, 23, 88, 230, 156,
-			47, 71, 193, 200, 20, 29, 22, 234, 245, 10, 245, 244, 30, 226, 233, 48, 13, 224, 219, 254, 35, 4, 251, 32, 37, 203, 186, 255, 29, 21,
-			16, 36, 4, 209, 179, 30, 95, 6, 216, 11, 17, 218, 219, 21, 45, 253, 6, 37, 235, 188, 0, 36, 251, 238, 25, 7, 224, 251, 20, 214,
-			213, 58, 43, 208, 211, 6, 5, 250, 246, 12, 22, 0, 210, 217, 27, 34, 249, 9, 27, 233, 248, 250, 224, 6, 79, 17, 228, 9, 235, 215,
-			25, 42, 249, 252, 31, 234, 153, 243, 105, 42, 229, 5, 237, 232, 253, 249, 27, 79, 6, 183, 243, 63, 7, 239, 251, 16, 237, 236, 30, 1,
-			198, 10, 34, 213, 250, 44, 223, 230, 18, 229, 255, 42, 230, 242, 33, 4, 206, 245, 56, 65, 243, 178, 216, 44, 61, 255, 185, 29, 76, 186,
-			137, 44, 90, 0, 192, 245, 17, 244, 253, 33, 248, 231, 39, 10, 195, 248, 61, 35, 244, 218, 1, 254, 223, 231, 61, 72, 226, 157, 228, 68,
-			52, 199, 216, 62, 62, 233, 209, 246, 34, 250, 249, 39, 17, 190, 232, 11, 22, 29, 23, 5, 226, 0, 23, 254, 244, 54, 50, 249, 222, 241,
-			14, 16, 244, 248, 27, 29, 244, 244, 31, 10, 211, 228, 44, 34, 212, 240, 25, 7, 2, 255, 250, 14, 8, 228, 226, 9, 33, 30, 0, 191,
-			220, 25, 18, 241, 248, 44, 12, 201, 199, 28, 36, 7, 251, 219, 220, 22, 252, 216, 39, 67, 235, 217, 252, 11, 6, 15, 234, 239, 59, 42,
-			178, 210, 68, 24, 200, 6, 56, 18, 247, 223, 196, 40, 97, 250, 213, 25, 29, 213, 218, 32, 70, 21, 210, 220, 3, 1, 250, 243, 26, 52,
-			228, 212, 32, 43, 223, 235, 41, 21, 254, 249, 232, 232, 36, 34, 220, 239, 26, 7, 218, 236, 33, 29, 232, 229, 253, 13, 14, 239, 235, 27,
-			41, 250, 199, 243, 44, 19, 214, 233, 54, 253, 203, 240, 20, 11, 250, 230, 10, 44, 230, 209, 13, 35, 249, 230, 249, 16, 9, 245, 251, 11,
-			17, 7, 211, 225, 31, 29, 7, 253, 230, 233, 15, 16, 1, 8, 241, 238, 8, 250, 251, 32, 19, 226, 226, 254, 19, 35, 0, 232, 232, 248,
-			22, 254, 237, 4, 14, 253, 244, 248, 10, 22, 238, 235, 22, 36, 0, 253, 243, 242, 27, 32, 3, 8, 7, 250, 239, 13, 42, 2, 215, 245,
-			11, 26, 28, 251, 226, 12, 25, 233, 255, 42, 0, 223, 246, 5, 9, 11, 230, 236, 10, 4, 252, 249, 251, 7, 248, 227, 249, 44, 41, 220,
-			211, 9, 25, 254, 7, 13, 248, 255, 0, 235, 10, 23, 235, 232, 20, 25, 254, 235, 241, 4, 8, 252, 3, 27, 3, 237, 251, 16, 11, 7,
-			15, 0, 239, 249, 2, 254, 15, 32, 1, 223, 242, 14, 11, 254, 240, 247, 22, 4, 208, 0, 49, 250, 234, 34, 16, 227, 252, 12, 4, 16,
-			12, 9, 6, 241, 244, 251, 1, 23, 30, 253, 236, 245, 0, 6, 0, 11, 44, 10, 210, 234, 24, 28, 5, 238, 0, 24, 244, 218, 4, 32,
-			12, 246, 244, 254, 8, 253, 237, 251, 27, 12, 241, 235, 254, 252, 253, 243, 250, 13, 4, 230, 221, 254, 16, 3, 246, 251, 251, 239, 236, 255,
-			16, 13, 234, 211, 254, 27, 246, 230, 247, 2, 246, 240, 246, 2, 244, 0, 121, 8, 30, 0, 248, 12, 23, 0, 234, 214, 221, 242, 8, 252,
-			4, 28, 34, 36, 47, 28, 249, 224, 232, 242, 227, 215, 244, 15, 6, 13, 43, 54, 41, 33, 40, 28, 245, 226, 226, 222, 197, 220, 255, 254,
-			29, 57, 36, 31, 48, 58, 3, 235, 23, 251, 212, 0, 30, 244, 252, 34, 38, 42, 42, 13, 8, 14, 247, 233, 230, 219, 200, 242, 23, 18,
-			10, 48, 61, 46, 39, 236, 225, 252, 225, 204, 217, 233, 237, 27, 53, 33, 48, 44, 255, 20, 5, 220, 223, 230, 200, 214, 24, 1, 245, 53,
-			49, 15, 38, 19, 223, 224, 249, 219, 203, 254, 14, 11, 29, 32, 29, 27, 34, 29, 254, 6, 2, 212, 209, 230, 218, 201, 217, 19, 24, 12,
-			37, 49, 27, 18, 31, 244, 212, 235, 244, 224, 223, 254, 11, 9, 26, 30, 29, 39, 28, 15, 1, 225, 219, 244, 227, 234, 9, 243, 231, 17,
-			28, 245, 253, 30, 255, 236, 16, 23, 247, 254, 3, 0, 240, 243, 248, 0, 2, 242, 12, 19, 253, 253, 24, 32, 2, 4, 255, 237, 241, 236,
-			212, 241, 19, 11, 17, 56, 50, 16, 37, 17, 184, 192, 223, 179, 180, 2, 27, 33, 73, 93, 66, 41, 41, 13, 224, 217, 214, 187, 189, 211,
-			243, 14, 36, 60, 87, 53, 33, 51, 6, 219, 227, 199, 167, 195, 220, 211, 240, 17, 33, 63, 89, 45, 25, 43, 244, 180, 222, 206, 188, 240,
-			242, 242, 34, 46, 22, 34, 24, 250, 247, 241, 211, 211, 228, 234, 249, 13, 32, 18, 37, 62, 32, 23, 34, 6, 227, 242, 223, 206, 235, 226,
-			225, 3, 13, 1, 25, 44, 26, 8, 10, 254, 224, 209, 207, 201, 201, 214, 244, 38, 51, 27, 54, 71, 23, 3, 15, 219, 192, 223, 215, 220,
-			238, 235, 11, 46, 32, 38, 41, 6, 0, 245, 221, 208, 219, 232, 228, 246, 8, 16, 28, 46, 43, 32, 4, 223, 218, 236, 205, 205, 234, 249,
-			35, 29, 40, 85, 58, 7, 6, 3, 207, 181, 205, 206, 202, 6, 17, 32, 76, 82, 30, 29, 54, 238, 188, 226, 208, 179, 220, 233, 246, 12,
-			31, 39, 67, 69, 42, 59, 26, 210, 177, 182, 194, 184, 223, 9, 16, 52, 92, 78, 63, 43, 0, 217, 213, 213, 188, 203, 215, 247, 16, 29,
-			47, 56, 37, 39, 24, 5, 6, 240, 221, 208, 238, 240, 226, 243, 28, 48, 34, 24, 43, 26, 16, 0, 223, 200, 210, 224, 225, 247, 244, 240,
-			34, 39, 8, 42, 59, 6, 243, 6, 247, 211, 217, 203, 215, 1, 6, 21, 51, 54, 37, 20, 21, 30, 0, 223, 229, 207, 199, 228, 238, 243,
-			39, 47, 44, 63, 58, 33, 17, 248, 221, 209, 201, 215, 214, 194, 239, 23, 18, 33, 61, 48, 30, 10, 0, 2, 234, 225, 230, 239, 0, 14,
-			37, 32, 36, 46, 59, 31, 247, 234, 236, 203, 213, 236, 206, 214, 3, 19, 11, 47, 64, 19, 31, 50, 255, 231, 250, 224, 182, 194, 219, 218,
-			243, 49, 35, 33, 86, 64, 26, 51, 14, 193, 226, 233, 177, 196, 250, 251, 237, 33, 54, 27, 27, 46, 9, 239, 2, 252, 219, 219, 206, 212,
-			4, 16, 16, 29, 48, 64, 19, 10, 27, 224, 202, 230, 219, 224, 1, 22, 37, 37, 22, 17, 46, 27, 210, 191, 228, 202, 168, 237, 251, 248,
-			42, 47, 32, 49, 53, 254, 244, 3, 233, 209, 208, 218, 222, 240, 0, 2, 16, 54, 29, 24, 38, 12, 240, 252, 4, 220, 198, 220, 244, 252,
-			21, 29, 25, 31, 62, 49, 251, 13, 14, 217, 219, 220, 217, 232, 243, 19, 49, 67, 45, 32, 44, 15, 239, 215, 207, 208, 221, 231, 233, 244,
-			249, 6, 26, 40, 62, 54, 15, 16, 4, 220, 205, 209, 211, 229, 217, 236, 17, 41, 59, 62, 41, 43, 54, 17, 232, 233, 216, 178, 178, 216,
-			232, 245, 27, 41, 36, 63, 68, 40, 1, 232, 241, 200, 159, 182, 226, 231, 247, 44, 63, 64, 70, 67, 4, 3, 254, 176, 166, 235, 224, 180,
-			1, 26, 28, 58, 65, 38, 45, 41, 248, 218, 224, 222, 192, 218, 233, 223, 253, 61, 39, 25, 54, 67, 43, 0, 212, 213, 213, 197, 210, 249,
-			248, 2, 56, 51, 34, 41, 27, 7, 22, 250, 209, 185, 203, 246, 210, 213, 42, 46, 11, 78, 74, 35, 59, 28, 231, 240, 217, 161, 170, 204,
-			232, 242, 42, 45, 25, 62, 69, 24, 8, 10, 239, 223, 227, 171, 197, 247, 217, 245, 27, 26, 48, 57, 28, 4, 252, 243, 233, 228, 227, 8,
-			31, 41, 24, 29, 37, 17, 240, 230, 239, 226, 228, 249, 3, 6, 7, 23, 15, 5, 42, 28, 222, 248, 5, 235, 239, 223, 216, 41, 20, 217,
-			22, 58, 3, 5, 28, 10, 231, 218, 235, 233, 225, 252, 230, 243, 55, 16, 24, 76, 39, 0, 20, 12, 217, 224, 237, 225, 192, 231, 18, 252,
-			248, 39, 32, 19, 48, 19, 235, 247, 243, 238, 221, 197, 221, 251, 237, 217, 26, 63, 30, 5, 42, 49, 253, 244, 3, 237, 224, 251, 225, 211,
-			240, 3, 251, 22, 9, 239, 23, 63, 47, 7, 40, 23, 194, 225, 30, 195, 158, 7, 12, 243, 42, 66, 32, 8, 20, 19, 243, 226, 2, 8,
-			254, 12, 244, 238, 14, 13, 235, 252, 242, 237, 8, 254, 5, 11, 15, 4, 5, 0, 252, 241, 247, 4, 8, 243, 0, 16, 253, 2, 24, 250,
-			243, 22, 17, 223, 225, 13, 237, 205, 253, 40, 3, 3, 61, 39, 27, 53, 248, 196, 227, 205, 175, 204, 230, 216, 20, 52, 33, 52, 65, 32,
-			243, 6, 25, 217, 215, 11, 243, 216, 234, 9, 32, 25, 22, 41, 43, 20, 26, 16, 239, 225, 228, 229, 236, 229, 229, 240, 21, 28, 22, 39,
-			45, 24, 41, 32, 237, 241, 236, 207, 215, 232, 229, 234, 10, 45, 43, 45, 58, 21, 19, 31, 229, 200, 223, 226, 204, 220, 248, 255, 249, 20,
-			47, 26, 0, 17, 42, 21, 248, 246, 12, 0, 219, 229, 228, 216, 225, 13, 25, 6, 24, 31, 10, 0, 10, 0, 207, 218, 20, 240, 220, 26,
-			255, 0, 50, 8, 230, 20, 8, 252, 1, 245, 18, 25, 11, 13, 9, 236, 218, 237, 249, 207, 231, 32, 41, 0, 21, 54, 41, 23, 14, 8,
-			250, 227, 226, 206, 216, 245, 244, 20, 49, 60, 63, 61, 29, 1, 13, 211, 149, 215, 209, 148, 216, 51, 6, 2, 67, 44, 23, 55, 10, 201,
-			6, 247, 183, 223, 22, 227, 247, 58, 18, 45, 71, 13, 252, 18, 2, 239, 244, 227, 188, 220, 0, 221, 212, 35, 30, 254, 44, 60, 248, 229,
-			12, 231, 200, 226, 251, 196, 195, 10, 29, 11, 23, 43, 31, 13, 14, 8, 241, 244, 238, 238, 9, 34, 27, 19, 6, 19, 248, 234, 10, 1,
-			221, 230, 13, 237, 241, 255, 22, 6, 0, 22, 12, 29, 0, 234, 24, 9, 198, 215, 6, 249, 230, 22, 39, 0, 37, 62, 211, 180, 247, 210,
-			228, 52, 253, 228, 74, 52, 2, 74, 34, 212, 26, 31, 214, 225, 8, 231, 211, 9, 233, 211, 65, 37, 218, 30, 53, 232, 242, 30, 205, 180,
-			252, 240, 227, 6, 1, 252, 41, 51, 6, 238, 5, 11, 238, 249, 0, 239, 255, 36, 28, 8, 52, 40, 234, 235, 239, 208, 212, 244, 206, 223,
-			46, 22, 245, 48, 70, 238, 241, 20, 227, 190, 252, 248, 218, 253, 23, 22, 29, 11, 6, 35, 241, 208, 49, 51, 197, 242, 45, 0, 248, 17,
-			250, 245, 20, 249, 225, 17, 28, 211, 221, 32, 248, 233, 54, 45, 39, 38, 9, 3, 10, 230, 196, 199, 193, 203, 224, 17, 24, 15, 77, 78,
-			22, 45, 66, 233, 214, 17, 219, 154, 201, 255, 235, 9, 9, 251, 36, 73, 8, 0, 17, 214, 201, 215, 209, 215, 15, 63, 5, 18, 90, 31,
-			204, 9, 12, 210, 3, 20, 203, 243, 41, 249, 15, 67, 255, 248, 67, 40, 0, 24, 236, 203, 204, 221, 202, 226, 0, 13, 53, 55, 31, 35,
-			73, 3, 195, 247, 232, 166, 212, 1, 229, 232, 24, 0, 243, 71, 50, 5, 37, 14, 218, 255, 12, 202, 220, 243, 212, 221, 20, 21, 14, 26,
-			56, 54, 24, 22, 20, 246, 248, 232, 203, 231, 2, 235, 226, 252, 10, 32, 47, 3, 19, 69, 28, 218, 253, 19, 205, 185, 20, 21, 210, 26,
-			70, 3, 15, 61, 254, 252, 19, 206, 205, 234, 215, 211, 242, 230, 246, 35, 39, 21, 28, 39, 54, 23, 228, 234, 241, 235, 214, 246, 24, 16,
-			0, 9, 14, 245, 231, 232, 255, 6, 240, 241, 12, 8, 3, 38, 42, 248, 237, 12, 2, 244, 239, 223, 222, 5, 11, 6, 50, 54, 26, 38,
-			48, 248, 229, 244, 227, 192, 214, 241, 1, 33, 56, 68, 52, 36, 4, 1, 27, 227, 183, 187, 194, 208, 230, 35, 59, 68, 70, 47, 36, 22,
-			231, 179, 196, 213, 178, 214, 12, 0, 20, 63, 55, 42, 44, 26, 243, 200, 187, 182, 201, 215, 234, 0, 48, 51, 30, 56, 65, 26, 11, 247,
-			206, 207, 197, 201, 216, 237, 245, 244, 14, 79, 98, 79, 76, 50, 247, 219, 199, 152, 159, 180, 200, 219, 8, 76, 94, 103, 89, 64, 55, 10,
-			226, 212, 206, 186, 140, 172, 234, 13, 6, 46, 101, 78, 93, 94, 3, 204, 172, 156, 156, 188, 196, 192, 31, 57, 30, 84, 94, 29, 25, 63,
-			248, 155, 199, 203, 149, 192, 0, 239, 29, 125, 94, 52, 89, 46, 205, 225, 199, 141, 175, 203, 220, 1, 43, 49, 67, 56, 10, 34, 39, 214,
-			205, 253, 233, 219, 0, 20, 5, 44, 67, 20, 24, 18, 236, 237, 219, 198, 254, 14, 227, 26, 72, 16, 4, 55, 38, 246, 240, 241, 215, 219,
-			252, 248, 253, 15, 2, 255, 19, 248, 230, 17, 241, 193, 24, 84, 244, 225, 43, 25, 219, 230, 248, 236, 237, 253, 253, 255, 19, 11, 3, 30,
-			34, 8, 229, 230, 240, 229, 222, 220, 243, 23, 24, 28, 26, 19, 39, 40, 244, 204, 233, 241, 195, 209, 241, 8, 5, 13, 81, 87, 17, 12,
-			39, 249, 202, 241, 220, 188, 235, 253, 227, 255, 47, 26, 20, 35, 253, 251, 30, 17, 251, 222, 225, 0, 252, 250, 6, 244, 247, 5, 1, 14,
-			17, 253, 29, 80, 7, 230, 12, 3, 210, 196, 230, 246, 232, 252, 47, 43, 35, 19, 8, 23, 11, 232, 225, 221, 200, 203, 238, 242, 250, 80,
-			102, 43, 43, 80, 35, 211, 211, 230, 192, 152, 185, 241, 251, 14, 89, 78, 42, 94, 91, 1, 228, 248, 179, 149, 183, 174, 177, 228, 251, 53,
-			104, 62, 77, 111, 39, 232, 230, 198, 154, 162, 215, 231, 227, 44, 103, 67, 70, 101, 49, 12, 243, 215, 194, 164, 161, 207, 226, 238, 47, 52,
-			33, 79, 69, 6, 21, 18, 225, 162, 175, 206, 177, 216, 18, 15, 37, 97, 84, 33, 23, 36, 232, 180, 168, 177, 197, 186, 226, 45, 91, 70,
-			68, 102, 87, 35, 254, 231, 204, 184, 173, 193, 221, 250, 21, 59, 57, 62, 112, 98, 33, 237, 221, 195, 143, 164, 206, 200, 228, 241, 23, 49,
-			65, 57, 41, 47, 9, 6, 251, 206, 209, 227, 220, 214, 221, 253, 29, 22, 24, 59, 64, 27, 22, 32, 9, 253, 236, 228, 237, 224, 239, 248,
-			223, 255, 30, 7, 20, 52, 37, 41, 29, 7, 251, 225, 223, 227, 210, 219, 232, 232, 244, 21, 15, 27, 47, 41, 41, 12, 21, 18, 222, 232,
-			228, 229, 245, 234, 244, 18, 5, 12, 29, 13, 16, 24, 1, 27, 17, 241, 254, 243, 222, 230, 236, 229, 210, 248, 17, 18, 244, 12, 49, 11,
-			21, 38, 6, 235, 251, 236, 205, 237, 247, 251, 12, 19, 40, 35, 25, 15, 13, 255, 241, 252, 249, 221, 206, 247, 245, 216, 246, 33, 32, 35,
-			27, 39, 62, 12, 0, 234, 209, 214, 187, 183, 248, 231, 248, 41, 33, 43, 67, 42, 30, 24, 243, 216, 216, 190, 193, 214, 219, 229, 19, 26,
-			36, 43, 54, 54, 23, 10, 0, 232, 201, 215, 218, 178, 231, 38, 5, 34, 99, 52, 32, 72, 22, 247, 5, 199, 203, 236, 204, 240, 10, 2,
-			22, 33, 47, 31, 255, 10, 6, 233, 225, 229, 230, 221, 249, 0, 0, 34, 34, 15, 40, 10, 252, 0, 231, 205, 228, 253, 235, 230, 21, 20,
-			24, 28, 31, 41, 8, 13, 5, 244, 5, 231, 222, 253, 1, 233, 12, 16, 3, 41, 27, 16, 6, 250, 255, 240, 217, 234, 249, 242, 246, 0,
-			0, 0, 76, 11, 178, 0, 10, 246, 247, 248, 0, 19, 0, 242, 9, 16, 0, 239, 239, 3, 14, 11, 4, 253, 1, 252, 245, 250, 2, 10,
-			19, 12, 242, 231, 246, 9, 15, 8, 3, 2, 249, 240, 254, 9, 255, 1, 9, 11, 15, 245, 216, 244, 30, 29, 4, 238, 244, 11, 253, 232,
-			5, 27, 16, 5, 242, 231, 0, 17, 0, 236, 253, 31, 27, 244, 233, 253, 1, 247, 5, 27, 8, 235, 242, 3, 1, 250, 6, 37, 21, 221,
-			219, 0, 20, 16, 248, 248, 30, 22, 215, 204, 16, 49, 11, 239, 0, 21, 244, 213, 251, 25, 8, 12, 19, 248, 236, 245, 1, 15, 2, 245,
-			14, 13, 241, 246, 254, 255, 19, 20, 253, 248, 247, 246, 250, 249, 7, 23, 18, 250, 236, 248, 2, 3, 255, 253, 13, 27, 248, 216, 241, 27,
-			30, 254, 249, 12, 251, 221, 245, 32, 25, 242, 242, 14, 13, 240, 235, 5, 13, 5, 11, 3, 240, 241, 253, 13, 11, 241, 253, 45, 18, 194,
-			206, 35, 53, 248, 226, 7, 26, 250, 230, 254, 19, 10, 2, 3, 250, 242, 0, 13, 246, 232, 16, 42, 11, 230, 230, 0, 254, 254, 27, 19,
-			250, 250, 251, 244, 244, 3, 29, 13, 251, 3, 247, 222, 237, 16, 32, 20, 253, 253, 247, 225, 253, 34, 8, 238, 3, 30, 21, 216, 185, 1,
-			70, 37, 1, 246, 233, 243, 245, 250, 15, 32, 20, 231, 225, 12, 13, 232, 244, 41, 46, 240, 202, 240, 24, 8, 238, 0, 40, 28, 229, 217,
-			251, 22, 7, 250, 5, 29, 9, 212, 221, 24, 31, 0, 254, 13, 0, 233, 235, 250, 8, 24, 35, 11, 231, 225, 241, 4, 24, 27, 10, 238,
-			232, 247, 4, 255, 3, 28, 25, 245, 230, 240, 6, 9, 252, 6, 22, 253, 227, 246, 5, 9, 21, 4, 241, 0, 10, 244, 230, 8, 45, 14,
-			219, 235, 32, 20, 227, 224, 11, 39, 8, 235, 8, 11, 234, 239, 8, 26, 19, 238, 235, 3, 254, 244, 0, 21, 34, 4, 232, 243, 249, 254,
-			10, 11, 255, 2, 7, 244, 232, 254, 24, 20, 3, 254, 247, 242, 247, 4, 12, 0, 2, 36, 8, 204, 222, 24, 42, 13, 238, 238, 3, 4,
-			240, 240, 14, 40, 23, 231, 217, 254, 20, 7, 252, 254, 4, 10, 253, 242, 0, 7, 254, 11, 26, 255, 225, 231, 4, 21, 11, 8, 3, 238,
-			235, 4, 13, 0, 0, 9, 15, 9, 241, 232, 244, 252, 11, 28, 21, 245, 229, 250, 20, 12, 254, 253, 3, 249, 234, 251, 17, 22, 9, 234,
-			236, 23, 25, 245, 230, 247, 21, 17, 254, 253, 247, 240, 255, 17, 26, 16, 246, 230, 246, 11, 242, 223, 20, 63, 13, 206, 219, 40, 43, 218,
-			207, 29, 57, 3, 213, 223, 28, 35, 237, 237, 26, 12, 232, 231, 12, 42, 4, 221, 1, 22, 236, 217, 13, 54, 26, 226, 215, 248, 21, 37,
-			2, 215, 241, 25, 23, 6, 236, 232, 12, 20, 254, 0, 245, 254, 28, 7, 232, 242, 0, 6, 255, 3, 28, 3, 237, 254, 4, 0, 7, 0,
-			233, 244, 20, 19, 251, 247, 18, 20, 239, 215, 246, 21, 13, 6, 26, 8, 219, 215, 7, 44, 25, 233, 242, 36, 6, 188, 219, 49, 64, 1,
-			204, 236, 26, 7, 246, 10, 18, 13, 253, 214, 225, 33, 36, 249, 243, 19, 7, 217, 229, 23, 28, 20, 13, 240, 225, 231, 9, 23, 255, 11,
-			34, 247, 207, 232, 13, 22, 18, 22, 2, 225, 236, 11, 9, 252, 0, 29, 17, 217, 222, 21, 20, 249, 2, 11, 0, 0, 5, 245, 229, 251,
-			39, 33, 233, 229, 10, 10, 238, 247, 10, 17, 17, 3, 237, 238, 254, 8, 3, 254, 22, 30, 230, 197, 245, 43, 40, 253, 248, 8, 237, 219,
-			5, 29, 15, 11, 255, 236, 240, 249, 10, 9, 10, 23, 254, 223, 247, 25, 6, 232, 1, 26, 9, 245, 225, 232, 24, 49, 6, 217, 253, 41,
-			251, 214, 247, 23, 13, 253, 0, 14, 254, 226, 251, 39, 13, 233, 245, 255, 4, 14, 253, 234, 253, 24, 30, 247, 222, 254, 27, 3, 230, 252,
-			15, 3, 255, 11, 9, 240, 237, 11, 25, 4, 235, 243, 19, 7, 238, 2, 29, 6, 227, 232, 13, 25, 247, 241, 21, 12, 224, 237, 28, 29,
-			238, 228, 25, 43, 240, 200, 242, 48, 27, 229, 0, 27, 244, 224, 4, 25, 12, 251, 249, 2, 248, 238, 7, 15, 2, 10, 2, 240, 237, 237,
-			16, 53, 6, 224, 238, 12, 34, 3, 204, 225, 33, 47, 6, 229, 237, 13, 15, 247, 239, 253, 10, 17, 9, 246, 244, 6, 1, 234, 4, 44,
-			8, 210, 228, 32, 46, 246, 216, 255, 23, 1, 247, 249, 6, 24, 8, 227, 233, 18, 18, 248, 249, 10, 13, 3, 0, 251, 238, 249, 14, 12,
-			255, 242, 4, 21, 244, 229, 249, 17, 29, 6, 244, 255, 3, 250, 6, 2, 238, 1, 23, 253, 235, 245, 22, 44, 250, 197, 238, 46, 36, 234,
-			201, 0, 62, 20, 220, 225, 10, 40, 5, 222, 251, 21, 13, 236, 215, 15, 55, 4, 215, 235, 15, 27, 2, 251, 23, 0, 206, 239, 27, 17,
-			2, 14, 15, 245, 214, 251, 29, 13, 5, 246, 232, 255, 3, 1, 19, 13, 245, 251, 8, 6, 251, 236, 247, 27, 18, 245, 245, 8, 7, 238,
-			232, 19, 34, 15, 0, 250, 241, 217, 224, 30, 65, 7, 214, 234, 21, 28, 247, 228, 1, 25, 12, 238, 227, 0, 15, 9, 16, 14, 232, 226,
-			6, 27, 22, 245, 223, 7, 30, 242, 218, 4, 52, 30, 223, 227, 9, 0, 250, 18, 19, 244, 239, 2, 249, 247, 25, 43, 246, 202, 238, 39,
-			32, 235, 223, 4, 32, 9, 220, 238, 47, 39, 213, 199, 43, 76, 223, 168, 250, 75, 34, 215, 235, 31, 12, 230, 246, 18, 16, 0, 228, 231,
-			22, 31, 249, 245, 0, 0, 9, 11, 242, 252, 13, 246, 251, 11, 0, 0, 0, 248, 14, 23, 239, 238, 0, 3, 14, 0, 236, 1, 0, 0,
-			20, 17, 235, 221, 23, 46, 243, 213, 16, 55, 247, 182, 242, 73, 40, 218, 216, 18, 31, 241, 226, 2, 19, 10, 247, 255, 22, 6, 220, 230,
-			27, 22, 236, 4, 32, 11, 233, 224, 0, 24, 254, 247, 15, 14, 248, 241, 252, 4, 4, 3, 2, 0, 8, 2, 247, 248, 0, 16, 12, 240,
-			240, 9, 23, 10, 230, 231, 22, 23, 244, 238, 0, 17, 11, 232, 254, 23, 0, 1, 254, 212, 252, 53, 26, 254, 235, 208, 254, 46, 23, 248,
-			234, 238, 15, 12, 243, 4, 252, 240, 33, 34, 234, 227, 0, 12, 247, 249, 19, 16, 244, 245, 8, 3, 251, 7, 0, 246, 15, 8, 229, 243,
-			8, 26, 34, 0, 212, 224, 27, 40, 248, 218, 251, 36, 15, 228, 235, 23, 11, 233, 1, 31, 9, 245, 225, 229, 23, 42, 13, 240, 232, 253,
-			21, 252, 216, 3, 61, 33, 216, 190, 246, 50, 41, 1, 232, 237, 17, 27, 240, 203, 244, 63, 49, 232, 207, 254, 28, 10, 249, 237, 235, 21,
-			34, 247, 217, 0, 35, 14, 237, 231, 4, 19, 0, 0, 17, 248, 224, 254, 50, 18, 200, 218, 34, 44, 0, 238, 249, 9, 7, 255, 245, 0,
-			10, 250, 245, 27, 30, 221, 199, 14, 61, 24, 227, 227, 17, 3, 210, 255, 44, 18, 236, 233, 31, 47, 207, 161, 11, 104, 43, 230, 223, 226,
-			244, 4, 20, 25, 20, 2, 244, 236, 244, 244, 0, 16, 26, 21, 248, 217, 224, 11, 55, 25, 220, 221, 13, 22, 239, 229, 12, 45, 11, 223,
-			247, 17, 0, 252, 244, 254, 21, 14, 248, 225, 243, 33, 15, 234, 255, 31, 17, 223, 223, 11, 15, 255, 9, 7, 8, 2, 236, 224, 3, 47,
-			25, 246, 228, 253, 30, 236, 191, 12, 66, 26, 255, 217, 222, 36, 23, 216, 245, 26, 28, 13, 209, 201, 35, 61, 251, 225, 17, 39, 222, 184,
-			3, 81, 17, 173, 237, 94, 37, 205, 217, 3, 32, 19, 235, 241, 9, 241, 240, 30, 16, 250, 20, 4, 218, 240, 31, 11, 218, 225, 27, 54,
-			11, 216, 234, 22, 12, 252, 9, 7, 240, 241, 9, 2, 244, 17, 17, 246, 241, 255, 14, 5, 242, 5, 10, 244, 255, 21, 244, 220, 0, 43,
-			40, 229, 206, 3, 38, 9, 240, 240, 12, 7, 241, 11, 9, 239, 0, 20, 5, 249, 238, 10, 24, 245, 239, 16, 14, 245, 232, 239, 30, 43,
-			252, 231, 244, 245, 12, 17, 1, 255, 242, 247, 0, 1, 34, 23, 200, 223, 53, 34, 218, 205, 21, 84, 7, 169, 218, 57, 62, 221, 177, 26,
-			98, 251, 173, 233, 60, 62, 209, 181, 49, 67, 212, 201, 10, 52, 26, 216, 225, 41, 12, 212, 3, 45, 0, 228, 230, 252, 23, 11, 11, 20,
-			218, 209, 26, 42, 0, 241, 234, 4, 39, 2, 218, 245, 31, 26, 240, 219, 246, 36, 36, 246, 219, 246, 26, 24, 254, 216, 226, 38, 71, 250,
-			191, 237, 46, 22, 212, 233, 40, 17, 239, 1, 5, 234, 230, 14, 50, 252, 212, 11, 25, 236, 239, 18, 37, 8, 223, 215, 17, 38, 0, 0,
-			15, 228, 219, 11, 32, 20, 9, 245, 229, 1, 12, 252, 248, 0, 18, 14, 232, 224, 13, 37, 15, 248, 229, 243, 15, 15, 247, 231, 6, 54,
-			250, 182, 246, 77, 32, 210, 224, 39, 14, 197, 251, 74, 20, 212, 215, 252, 46, 20, 242, 11, 11, 234, 237, 252, 255, 30, 27, 227, 225, 29,
-			6, 227, 3, 21, 3, 251, 244, 5, 8, 254, 9, 16, 241, 206, 255, 62, 20, 227, 238, 10, 8, 240, 238, 38, 37, 213, 212, 25, 42, 20,
-			242, 202, 238, 46, 32, 233, 226, 4, 46, 38, 205, 187, 26, 68, 13, 221, 219, 15, 35, 252, 223, 230, 9, 43, 16, 244, 0, 249, 212, 246,
-			27, 22, 24, 16, 222, 220, 3, 32, 38, 246, 206, 255, 27, 239, 0, 35, 15, 254, 225, 215, 12, 39, 12, 1, 255, 239, 254, 13, 245, 243,
-			13, 20, 248, 221, 8, 55, 11, 197, 227, 32, 32, 4, 238, 235, 5, 29, 11, 231, 240, 13, 7, 244, 245, 9, 27, 8, 233, 233, 16, 6,
-			229, 16, 64, 1, 197, 228, 27, 16, 237, 6, 27, 0, 245, 4, 10, 1, 226, 233, 36, 38, 3, 233, 211, 251, 57, 19, 211, 235, 30, 14,
-			234, 10, 15, 233, 243, 28, 11, 237, 229, 248, 24, 21, 3, 12, 2, 232, 221, 255, 45, 12, 242, 14, 11, 219, 218, 21, 37, 250, 11, 37,
-			216, 181, 22, 95, 18, 185, 207, 37, 47, 242, 223, 9, 22, 0, 253, 253, 229, 242, 37, 40, 242, 222, 249, 26, 2, 210, 248, 69, 21, 216,
-			245, 9, 253, 244, 251, 31, 27, 234, 226, 6, 32, 252, 217, 240, 35, 31, 246, 236, 22, 24, 239, 231, 238, 249, 47, 30, 212, 225, 25, 33,
-			2, 212, 219, 65, 81, 231, 158, 238, 69, 31, 205, 239, 28, 12, 238, 240, 26, 27, 219, 248, 56, 239, 158, 239, 101, 75, 197, 176, 43, 83,
-			223, 180, 8, 79, 7, 189, 233, 39, 29, 227, 217, 42, 48, 204, 236, 74, 32, 185, 188, 25, 64, 243, 231, 27, 12, 223, 242, 20, 24, 3,
-			243, 6, 10, 212, 203, 30, 77, 22, 203, 211, 30, 55, 244, 203, 251, 61, 28, 204, 207, 17, 46, 5, 238, 2, 1, 240, 0, 23, 13, 252,
-			239, 234, 0, 26, 2, 241, 12, 16, 241, 230, 6, 69, 25, 176, 195, 49, 68, 246, 201, 2, 61, 1, 185, 219, 28, 50, 37, 248, 216, 227,
-			20, 11, 228, 255, 70, 26, 192, 204, 38, 46, 224, 227, 53, 37, 202, 200, 31, 67, 6, 185, 224, 65, 58, 206, 189, 27, 46, 245, 240, 19,
-			18, 241, 220, 249, 22, 28, 24, 239, 226, 0, 17, 250, 229, 3, 36, 24, 237, 226, 238, 9, 32, 20, 233, 239, 24, 6, 226, 254, 23, 24,
-			242, 207, 4, 89, 12, 166, 200, 30, 64, 30, 213, 225, 39, 17, 220, 239, 33, 37, 248, 203, 237, 53, 21, 214, 252, 32, 16, 236, 212, 245,
-			58, 45, 224, 212, 12, 33, 226, 194, 18, 91, 21, 184, 230, 54, 7, 202, 248, 51, 44, 246, 174, 219, 79, 53, 208, 224, 24, 33, 4, 216,
-			235, 46, 33, 233, 232, 233, 250, 32, 43, 6, 192, 206, 56, 55, 212, 225, 33, 30, 246, 216, 251, 35, 19, 234, 198, 248, 105, 50, 156, 177,
-			81, 103, 213, 130, 5, 114, 12, 179, 241, 59, 32, 216, 200, 26, 69, 242, 198, 14, 46, 244, 209, 253, 59, 27, 201, 215, 23, 33, 25, 242,
-			210, 2, 35, 249, 233, 17, 37, 2, 222, 209, 2, 54, 28, 221, 202, 12, 70, 14, 199, 248, 60, 253, 174, 253, 83, 32, 207, 234, 22, 250,
-			236, 22, 30, 237, 213, 15, 72, 4, 182, 238, 48, 10, 215, 233, 24, 56, 13, 216, 239, 251, 236, 252, 29, 46, 0, 204, 247, 37, 12, 244,
-			238, 238, 248, 20, 67, 36, 192, 171, 6, 84, 35, 187, 222, 85, 46, 175, 186, 52, 92, 255, 170, 218, 53, 32, 233, 237, 25, 25, 230, 216,
-			2, 35, 36, 229, 202, 16, 51, 250, 208, 244, 40, 58, 2, 228, 0, 238, 192, 243, 56, 49, 249, 217, 4, 46, 245, 214, 5, 43, 16, 216,
-			220, 28, 27, 250, 246, 1, 4, 235, 239, 60, 52, 197, 189, 25, 46, 252, 231, 20, 51, 230, 155, 243, 96, 48, 196, 207, 33, 70, 0, 180,
-			224, 52, 31, 248, 14, 246, 212, 10, 38, 2, 223, 216, 43, 76, 230, 201, 8, 38, 3, 204, 199, 45, 75, 11, 229, 228, 5, 6, 218, 255,
-			62, 31, 219, 191, 240, 63, 42, 224, 214, 0, 37, 8, 236, 33, 38, 202, 217, 40, 14, 211, 0, 76, 34, 176, 194, 53, 52, 227, 215, 28,
-			55, 242, 192, 237, 35, 42, 253, 222, 1, 36, 20, 232, 215, 18, 29, 198, 209, 53, 87, 13, 171, 178, 35, 92, 16, 207, 222, 27, 28, 222,
-			245, 58, 18, 202, 218, 30, 46, 8, 246, 251, 246, 230, 237, 8, 25, 22, 3, 242, 248, 0, 244, 252, 255, 21, 25, 242, 229, 40, 16, 173,
-			225, 87, 61, 217, 186, 242, 27, 10, 23, 34, 242, 204, 1, 67, 14, 165, 220, 89, 40, 206, 220, 25, 56, 253, 195, 251, 37, 254, 225, 254,
-			26, 11, 250, 224, 0, 49, 11, 208, 246, 39, 32, 245, 204, 228, 58, 42, 205, 214, 34, 56, 11, 214, 228, 34, 17, 221, 239, 36, 8, 207,
-			229, 47, 35, 241, 236, 246, 13, 19, 250, 0, 15, 245, 217, 234, 24, 44, 17, 224, 251, 51, 8, 200, 217, 28, 53, 6, 220, 248, 12, 250,
-			248, 6, 19, 0, 247, 6, 1, 238, 255, 35, 19, 221, 222, 16, 15, 249, 17, 24, 242, 204, 243, 45, 39, 249, 218, 244, 43, 253, 211, 0,
-			30, 6, 247, 246, 30, 25, 218, 211, 20, 58, 8, 209, 242, 15, 10, 12, 247, 0, 30, 0, 242, 254, 242, 244, 14, 17, 254, 223, 244, 48,
-			23, 224, 239, 19, 31, 240, 206, 6, 41, 4, 231, 233, 12, 30, 0, 224, 249, 32, 33, 0, 220, 225, 18, 38, 255, 224, 244, 32, 21, 226,
-			234, 33, 38, 246, 218, 243, 36, 13, 222, 231, 11, 40, 14, 219, 236, 38, 29, 232, 233, 16, 14, 231, 233, 32, 33, 223, 213, 26, 57, 0,
-			218, 242, 6, 0, 254, 253, 8, 11, 0, 247, 252, 11, 5, 2, 7, 250, 240, 245, 16, 30, 2, 234, 244, 245, 9, 33, 11, 242, 246, 3,
-			6, 249, 243, 15, 14, 227, 239, 25, 21, 252, 242, 0, 13, 253, 239, 0, 21, 7, 239, 245, 2, 9, 13, 247, 252, 252, 251, 20, 14, 244,
-			239, 250, 12, 25, 0, 211, 252, 54, 11, 228, 251, 11, 0, 238, 236, 31, 41, 232, 233, 12, 0, 244, 250, 11, 39, 6, 233, 253, 251, 227,
-			241, 27, 44, 13, 240, 233, 224, 248, 35, 33, 10, 239, 219, 243, 20, 17, 15, 13, 245, 228, 227, 6, 44, 27, 243, 230, 237, 252, 13, 14,
-			2, 6, 6, 252, 5, 4, 249, 251, 249, 252, 14, 0, 243, 3, 15, 5, 253, 249, 255, 5, 14, 5, 239, 234, 252, 19, 16, 255, 236, 239,
-			11, 30, 18, 254, 238, 251, 0, 246, 0, 6, 11, 14, 248, 242, 255, 1, 16, 8, 249, 8, 0, 233, 241, 9, 12, 6, 1, 254, 253, 252,
-			254, 14, 10, 249, 7, 11, 222, 222, 22, 34, 6, 247, 248, 5, 1, 243, 7, 13, 0, 3, 252, 244, 0, 9, 2, 5, 5, 244, 243, 4,
-			5, 3, 6, 253, 253, 5, 0, 254, 1, 3, 9, 9, 248, 245, 0, 255, 1, 2, 182, 7, 69, 0, 0, 7, 18, 244, 226, 0, 8, 237,
-			247, 12, 250, 247, 255, 237, 242, 6, 18, 0, 235, 225, 244, 23, 11, 246, 247, 242, 237, 247, 14, 21, 244, 222, 239, 10, 8, 246, 255, 251,
-			239, 1, 3, 244, 248, 0, 251, 253, 251, 237, 8, 22, 229, 226, 11, 9, 253, 240, 247, 10, 251, 236, 255, 15, 241, 224, 16, 24, 229, 225,
-			17, 10, 227, 2, 12, 240, 240, 255, 6, 2, 244, 246, 249, 248, 11, 0, 235, 245, 3, 1, 248, 3, 253, 241, 2, 250, 238, 0, 8, 4,
-			247, 238, 243, 7, 14, 242, 248, 6, 243, 232, 8, 20, 254, 234, 250, 0, 233, 251, 35, 7, 202, 238, 28, 5, 239, 0, 0, 230, 242, 27,
-			2, 234, 4, 253, 215, 3, 53, 246, 208, 252, 10, 243, 255, 19, 5, 244, 228, 233, 4, 22, 13, 243, 228, 239, 9, 20, 245, 232, 0, 2,
-			242, 0, 21, 235, 220, 22, 22, 225, 240, 18, 253, 232, 5, 15, 238, 235, 15, 6, 235, 239, 13, 12, 240, 231, 255, 19, 2, 230, 251, 255,
-			241, 10, 3, 252, 8, 245, 215, 255, 40, 5, 223, 237, 7, 3, 254, 15, 253, 217, 237, 11, 22, 12, 235, 242, 4, 233, 229, 27, 32, 245,
-			233, 242, 242, 250, 30, 20, 228, 229, 4, 1, 244, 6, 14, 246, 228, 255, 13, 0, 249, 252, 248, 230, 249, 42, 12, 213, 234, 15, 4, 250,
-			253, 8, 255, 224, 241, 24, 21, 234, 227, 13, 16, 229, 245, 21, 253, 237, 240, 248, 12, 25, 1, 225, 229, 0, 14, 9, 9, 234, 241, 2,
-			248, 12, 21, 238, 211, 252, 34, 19, 226, 247, 17, 242, 226, 18, 38, 239, 227, 253, 4, 5, 9, 255, 240, 247, 246, 250, 22, 15, 243, 237,
-			244, 0, 7, 2, 254, 249, 255, 249, 245, 9, 8, 252, 233, 244, 8, 9, 1, 252, 251, 247, 244, 3, 17, 253, 233, 248, 6, 2, 5, 245,
-			238, 14, 14, 230, 242, 17, 250, 238, 14, 18, 253, 229, 233, 4, 24, 7, 227, 0, 19, 241, 231, 18, 17, 240, 237, 8, 10, 252, 249, 246,
-			250, 7, 9, 237, 251, 26, 246, 225, 253, 4, 252, 251, 0, 29, 16, 212, 230, 36, 24, 212, 231, 38, 15, 224, 241, 10, 252, 8, 23, 247,
-			227, 222, 0, 53, 31, 219, 215, 253, 13, 252, 251, 19, 10, 235, 226, 249, 16, 9, 0, 243, 249, 10, 251, 235, 5, 21, 245, 230, 247, 15,
-			26, 253, 213, 235, 23, 20, 235, 235, 22, 2, 224, 9, 21, 232, 238, 22, 10, 235, 239, 19, 19, 236, 228, 7, 5, 242, 14, 34, 246, 208,
-			2, 25, 246, 248, 6, 253, 249, 0, 11, 247, 236, 3, 3, 249, 0, 3, 249, 235, 255, 38, 16, 217, 219, 17, 19, 237, 4, 27, 244, 224,
-			0, 11, 249, 4, 18, 246, 222, 252, 16, 13, 242, 229, 16, 28, 229, 219, 17, 23, 241, 240, 7, 11, 246, 249, 11, 255, 229, 252, 18, 10,
-			239, 227, 6, 30, 3, 228, 235, 11, 17, 0, 243, 248, 8, 255, 240, 249, 26, 13, 217, 234, 10, 12, 8, 12, 3, 225, 234, 14, 2, 252,
-			23, 6, 224, 229, 5, 28, 3, 227, 248, 21, 3, 241, 245, 9, 244, 242, 27, 18, 231, 243, 4, 240, 250, 37, 7, 226, 240, 254, 15, 0,
-			233, 10, 30, 255, 234, 252, 7, 250, 241, 13, 21, 240, 235, 6, 6, 240, 0, 13, 4, 242, 239, 5, 0, 240, 6, 12, 4, 237, 212, 27,
-			50, 228, 205, 20, 48, 225, 196, 26, 55, 237, 211, 0, 14, 247, 246, 14, 15, 246, 244, 236, 230, 5, 42, 17, 237, 226, 242, 16, 16, 1,
-			8, 243, 201, 239, 43, 62, 251, 201, 233, 0, 245, 253, 49, 41, 244, 176, 191, 42, 44, 1, 240, 238, 240, 234, 16, 64, 3, 212, 11, 4,
-			227, 7, 23, 17, 246, 223, 238, 11, 25, 251, 229, 255, 18, 0, 250, 245, 241, 7, 1, 248, 4, 243, 1, 24, 236, 218, 251, 30, 24, 229,
-			246, 27, 215, 211, 54, 51, 245, 233, 251, 255, 240, 15, 29, 0, 228, 228, 0, 13, 248, 5, 31, 243, 196, 242, 47, 18, 241, 24, 250, 191,
-			245, 58, 21, 217, 248, 21, 240, 245, 1, 9, 1, 233, 245, 22, 24, 240, 216, 246, 20, 8, 230, 0, 46, 35, 196, 169, 1, 54, 45, 21,
-			233, 202, 220, 9, 44, 21, 214, 240, 34, 245, 196, 23, 80, 0, 151, 233, 88, 22, 219, 245, 9, 253, 249, 2, 21, 10, 232, 243, 20, 245,
-			224, 14, 50, 12, 204, 229, 31, 18, 245, 14, 247, 215, 238, 50, 48, 249, 194, 217, 0, 27, 36, 5, 221, 235, 4, 5, 244, 254, 32, 26,
-			221, 187, 254, 55, 67, 235, 155, 240, 48, 10, 241, 21, 37, 214, 176, 9, 94, 11, 193, 220, 19, 35, 26, 223, 212, 13, 25, 14, 230, 220,
-			14, 32, 245, 243, 252, 11, 0, 216, 5, 46, 16, 221, 212, 25, 47, 218, 199, 11, 20, 36, 43, 234, 181, 195, 8, 86, 46, 242, 236, 248,
-			233, 190, 252, 100, 49, 206, 181, 237, 35, 32, 239, 250, 25, 251, 216, 253, 43, 13, 227, 209, 252, 45, 32, 240, 225, 226, 242, 12, 39, 45,
-			231, 215, 235, 220, 252, 78, 48, 219, 236, 246, 245, 18, 14, 16, 1, 228, 253, 25, 10, 231, 219, 13, 51, 254, 233, 242, 236, 250, 50, 48,
-			222, 197, 217, 247, 25, 57, 49, 233, 190, 233, 6, 246, 8, 24, 36, 5, 224, 0, 11, 208, 183, 22, 90, 34, 234, 0, 238, 176, 183, 38,
-			113, 95, 243, 130, 194, 11, 5, 38, 68, 30, 207, 200, 246, 245, 234, 24, 32, 35, 44, 230, 179, 199, 228, 21, 89, 86, 255, 143, 199, 9,
-			4, 11, 61, 253, 208, 252, 39, 19, 168, 173, 60, 120, 29, 173, 175, 235, 16, 73, 66, 219, 177, 233, 12, 36, 5, 230, 8, 13, 242, 252,
-			243, 248, 14, 2, 254, 4, 253, 244, 225, 32, 68, 226, 181, 236, 26, 44, 54, 238, 167, 200, 84, 91, 213, 157, 236, 57, 12, 243, 41, 42,
-			213, 163, 206, 53, 69, 26, 2, 234, 179, 206, 33, 78, 29, 194, 228, 31, 243, 210, 50, 46, 233, 185, 251, 94, 26, 177, 207, 32, 34, 2,
-			12, 11, 245, 203, 210, 0, 48, 105, 30, 134, 139, 19, 68, 46, 11, 6, 224, 216, 232, 26, 39, 228, 7, 36, 15, 227, 182, 217, 51, 45,
-			31, 9, 198, 214, 5, 6, 15, 15, 254, 30, 28, 194, 168, 31, 76, 33, 203, 226, 41, 4, 238, 248, 250, 239, 18, 20, 253, 9, 22, 231,
-			187, 240, 59, 66, 246, 188, 217, 6, 35, 24, 7, 0, 232, 217, 240, 22, 54, 3, 231, 3, 0, 236, 224, 250, 62, 8, 213, 25, 24, 230,
-			218, 252, 2, 232, 11, 87, 46, 179, 151, 253, 65, 16, 234, 54, 65, 200, 136, 216, 60, 80, 19, 252, 206, 181, 255, 93, 69, 184, 189, 33,
-			29, 187, 220, 100, 52, 183, 199, 27, 10, 226, 9, 56, 15, 196, 216, 18, 25, 3, 255, 0, 30, 13, 192, 221, 34, 36, 238, 246, 45, 8,
-			167, 226, 70, 26, 189, 217, 98, 77, 177, 134, 4, 72, 13, 244, 26, 29, 210, 171, 249, 70, 38, 15, 0, 222, 208, 235, 7, 8, 34, 36,
-			10, 244, 209, 207, 7, 31, 14, 253, 254, 1, 27, 5, 194, 223, 28, 48, 18, 10, 246, 174, 174, 38, 112, 60, 231, 161, 206, 251, 241, 23,
-			77, 50, 229, 208, 188, 236, 37, 24, 252, 22, 31, 245, 210, 212, 1, 15, 237, 4, 68, 50, 188, 153, 224, 41, 63, 43, 22, 245, 179, 178,
-			237, 52, 82, 24, 236, 228, 216, 234, 238, 33, 97, 10, 172, 199, 24, 39, 3, 246, 244, 247, 246, 240, 255, 20, 7, 232, 233, 253, 28, 4,
-			246, 4, 242, 232, 235, 22, 46, 13, 214, 184, 241, 36, 31, 4, 7, 224, 190, 239, 53, 46, 8, 223, 213, 243, 10, 26, 9, 231, 240, 246,
-			243, 25, 50, 3, 213, 186, 223, 34, 61, 17, 241, 215, 233, 4, 248, 5, 19, 5, 232, 231, 10, 6, 253, 255, 250, 237, 240, 7, 33, 13,
-			236, 195, 223, 42, 18, 238, 8, 11, 221, 195, 246, 59, 28, 246, 240, 0, 238, 195, 0, 59, 7, 238, 4, 0, 227, 203, 16, 57, 4, 210,
-			240, 10, 243, 245, 2, 0, 255, 13, 20, 238, 207, 241, 20, 1, 10, 38, 24, 223, 189, 229, 19, 28, 34, 31, 222, 197, 248, 42, 15, 229,
-			14, 20, 240, 226, 237, 5, 20, 10, 0, 0, 236, 240, 0, 232, 247, 41, 39, 243, 208, 226, 25, 15, 238, 4, 4, 3, 244, 242, 14, 19,
-			2, 226, 3, 29, 233, 219, 251, 36, 15, 236, 4, 26, 234, 213, 245, 11, 15, 1, 13, 12, 242, 221, 233, 35, 39, 236, 221, 0, 23, 255,
-			219, 248, 37, 28, 240, 229, 236, 12, 28, 254, 243, 19, 14, 235, 239, 1, 20, 2, 240, 14, 14, 250, 250, 255, 0, 17, 10, 233, 242, 8,
-			16, 236, 251, 46, 27, 245, 204, 229, 1, 33, 49, 10, 236, 225, 248, 4, 13, 247, 250, 26, 21, 230, 234, 15, 24, 237, 226, 0, 37, 31,
-			249, 229, 244, 255, 2, 14, 43, 21, 230, 226, 254, 15, 0, 252, 20, 18, 253, 240, 239, 1, 20, 9, 230, 248, 46, 22, 241, 226, 244, 11,
-			254, 6, 19, 11, 247, 236, 7, 32, 245, 230, 19, 40, 3, 214, 255, 33, 250, 227, 3, 39, 13, 233, 251, 10, 9, 231, 237, 38, 38, 247,
-			232, 0, 12, 238, 3, 26, 22, 5, 228, 241, 14, 254, 243, 5, 42, 24, 233, 246, 253, 250, 253, 3, 26, 10, 247, 250, 4, 6, 0, 235,
-			0, 43, 13, 243, 243, 251, 5, 4, 3, 28, 8, 247, 236, 249, 13, 16, 2, 2, 11, 11, 238, 248, 4, 13, 11, 245, 3, 2, 5, 1,
-			251, 252, 13, 8, 251, 4, 23, 245, 224, 6, 27, 14, 245, 0, 27, 248, 234, 2, 18, 7, 1, 17, 11, 229, 252, 12, 16, 14, 234, 248,
-			6, 245, 7, 2, 16, 11, 237, 7, 12, 1, 251, 245, 17, 32, 250, 0, 15, 1, 233, 232, 27, 41, 242, 243, 36, 19, 209, 216, 28, 33,
-			4, 7, 8, 5, 239, 227, 13, 34, 14, 244, 252, 19, 247, 234, 18, 24, 255, 252, 14, 10, 245, 249, 7, 2, 2, 0, 24, 20, 238, 226,
-			239, 36, 25, 245, 245, 10, 18, 1, 227, 248, 22, 11, 246, 1, 12, 7, 5, 0, 244, 252, 250, 0, 15, 23, 253, 236, 2, 5, 251, 20,
-			9, 0, 242, 253, 18, 250, 0, 1, 248, 18, 13, 243, 251, 3, 10, 255, 239, 17, 38, 16, 241, 231, 250, 18, 0, 237, 7, 36, 8, 244,
-			239, 0, 19, 243, 242, 24, 19, 250, 249, 8, 31, 244, 219, 14, 32, 244, 227, 6, 23, 1, 246, 252, 1, 1, 2, 253, 239, 233, 250, 21,
-			15, 248, 249, 0, 248, 246, 244, 19, 11, 246, 248, 9, 16, 242, 246, 13, 12, 234, 230, 11, 38, 0, 238, 254, 5, 5, 251, 3, 11, 249,
-			244, 255, 18, 10, 8, 0, 252, 245, 254, 9, 247, 249, 9, 11, 12, 243, 242, 8, 6, 2, 248, 241, 14, 26, 251, 235, 251, 13, 2, 248,
-			22, 21, 233, 216, 253, 27, 7, 251, 13, 12, 239, 228, 252, 22, 5, 236, 0, 0, 18, 9, 134, 0, 0, 0, 0, 1, 4, 8, 6, 252,
-			244, 248, 0, 2, 2, 4, 4, 255, 251, 250, 254, 1, 3, 4, 3, 1, 255, 253, 253, 255, 2, 3, 2, 0, 255, 253, 253, 255, 1, 2,
-			1, 0, 254, 254, 254, 255, 0, 0, 0, 0, 255, 254, 254, 255, 0, 0, 0, 0, 255, 254, 254, 255, 255, 255, 0, 0, 0, 254, 254, 255,
-			255, 0, 0, 254, 254, 0, 255, 253, 254, 0, 1, 1, 0, 253, 254, 0, 0, 255, 255, 0, 1, 0, 254, 253, 0, 4, 4, 4, 0, 247,
-			245, 0, 5, 2, 0, 3, 2, 250, 246, 254, 5, 4, 2, 1, 0, 254, 0, 0, 253, 255, 5, 5, 0, 254, 0, 0, 255, 255, 0, 2,
-			2, 0, 0, 254, 253, 0, 3, 1, 255, 0, 0, 253, 255, 0, 0, 0, 1, 253, 253, 2, 255, 252, 3, 5, 253, 253, 255, 255, 2, 3,
-			0, 1, 0, 250, 253, 3, 3, 0, 252, 249, 0, 6, 1, 252, 253, 255, 0, 0, 253, 254, 2, 0, 252, 251, 254, 1, 0, 252, 254, 5,
-			1, 249, 250, 1, 5, 0, 254, 255, 251, 252, 4, 3, 254, 254, 0, 0, 2, 1, 249, 244, 4, 18, 2, 242, 250, 3, 255, 255, 8, 6,
-			252, 246, 249, 1, 7, 5, 1, 252, 244, 251, 9, 2, 249, 1, 8, 0, 245, 250, 5, 1, 253, 3, 3, 0, 253, 250, 254, 5, 0, 255,
-			1, 253, 252, 7, 8, 249, 242, 252, 12, 14, 248, 235, 6, 16, 246, 243, 12, 8, 248, 253, 254, 1, 6, 252, 242, 1, 5, 253, 0, 1,
-			252, 3, 4, 253, 1, 5, 255, 1, 4, 254, 255, 8, 3, 246, 245, 6, 15, 252, 242, 4, 9, 3, 2, 255, 248, 253, 12, 11, 244, 245,
-			11, 250, 234, 13, 31, 253, 229, 241, 0, 6, 4, 3, 8, 251, 234, 248, 12, 1, 252, 8, 3, 249, 252, 253, 251, 0, 9, 2, 252, 252,
-			254, 253, 253, 4, 5, 251, 253, 7, 253, 235, 254, 22, 8, 246, 250, 1, 253, 251, 2, 12, 8, 248, 238, 253, 16, 4, 245, 255, 3, 253,
-			0, 4, 254, 0, 1, 249, 248, 9, 8, 243, 254, 11, 247, 244, 9, 8, 254, 244, 253, 14, 1, 238, 253, 11, 0, 252, 1, 3, 252, 247,
-			1, 8, 254, 250, 0, 0, 254, 8, 0, 236, 253, 23, 1, 242, 1, 5, 254, 253, 254, 2, 8, 253, 252, 4, 0, 248, 7, 6, 244, 255,
-			22, 255, 232, 0, 18, 5, 251, 246, 248, 14, 17, 245, 240, 4, 11, 1, 248, 0, 12, 7, 243, 242, 12, 16, 249, 240, 253, 10, 11, 245,
-			239, 15, 22, 240, 239, 11, 10, 253, 252, 253, 255, 8, 1, 248, 255, 5, 4, 9, 1, 247, 1, 6, 254, 250, 0, 2, 4, 2, 255, 249,
-			252, 0, 2, 7, 8, 249, 247, 4, 2, 253, 12, 5, 230, 241, 20, 17, 241, 241, 3, 0, 248, 0, 5, 0, 248, 253, 6, 249, 239, 5,
-			15, 1, 7, 5, 237, 1, 40, 31, 1, 247, 254, 7, 247, 227, 249, 17, 8, 241, 242, 25, 17, 203, 226, 58, 33, 214, 238, 37, 13, 229,
-			4, 34, 0, 239, 248, 244, 11, 24, 244, 235, 252, 254, 16, 8, 249, 253, 251, 0, 255, 242, 9, 36, 248, 207, 247, 28, 13, 3, 249, 244,
-			8, 9, 246, 253, 14, 255, 244, 252, 255, 4, 14, 253, 242, 1, 255, 237, 9, 35, 243, 223, 10, 19, 248, 255, 17, 0, 237, 241, 7, 33,
-			1, 215, 247, 20, 253, 247, 9, 0, 245, 2, 3, 242, 250, 15, 7, 243, 245, 2, 9, 245, 244, 27, 9, 221, 237, 20, 19, 237, 238, 31,
-			11, 216, 229, 19, 32, 252, 234, 4, 4, 250, 248, 250, 22, 21, 242, 230, 253, 20, 0, 236, 6, 25, 1, 240, 243, 2, 11, 255, 253, 5,
-			12, 242, 223, 13, 37, 254, 240, 245, 249, 12, 13, 243, 254, 12, 247, 236, 16, 19, 246, 251, 0, 241, 1, 10, 255, 6, 254, 244, 4, 13,
-			253, 237, 13, 21, 232, 240, 17, 6, 252, 2, 248, 250, 12, 2, 238, 237, 12, 30, 253, 228, 3, 18, 242, 232, 23, 33, 245, 220, 240, 27,
-			23, 239, 239, 15, 21, 252, 228, 246, 37, 8, 220, 0, 16, 253, 0, 249, 244, 29, 22, 216, 217, 33, 55, 251, 207, 239, 33, 12, 240, 252,
-			9, 0, 245, 249, 4, 9, 3, 1, 245, 241, 9, 22, 245, 249, 4, 1, 251, 254, 253, 11, 15, 238, 224, 28, 47, 211, 212, 46, 36, 215,
-			233, 42, 41, 224, 179, 254, 75, 22, 207, 230, 17, 8, 251, 17, 8, 225, 247, 21, 254, 245, 22, 17, 239, 243, 16, 4, 12, 18, 243, 226,
-			254, 240, 241, 14, 32, 34, 248, 198, 251, 67, 28, 221, 232, 21, 24, 242, 227, 25, 48, 227, 191, 7, 41, 254, 223, 255, 36, 251, 220, 5,
-			18, 14, 11, 242, 231, 11, 29, 0, 219, 250, 42, 9, 215, 253, 30, 248, 232, 8, 15, 11, 1, 213, 247, 54, 25, 231, 235, 9, 30, 3,
-			208, 245, 33, 13, 1, 5, 255, 2, 1, 226, 230, 18, 29, 242, 226, 15, 30, 234, 233, 16, 254, 247, 11, 10, 243, 243, 11, 29, 252, 226,
-			255, 15, 249, 248, 12, 7, 239, 254, 24, 247, 226, 17, 26, 237, 252, 19, 249, 233, 1, 28, 18, 232, 222, 17, 33, 232, 242, 47, 9, 202,
-			239, 50, 18, 209, 235, 29, 4, 237, 9, 19, 247, 223, 250, 36, 34, 238, 221, 251, 9, 14, 24, 0, 213, 239, 33, 22, 250, 244, 233, 251,
-			27, 5, 243, 252, 255, 250, 241, 8, 36, 4, 225, 244, 2, 10, 12, 254, 254, 2, 241, 236, 22, 35, 243, 215, 4, 22, 3, 240, 244, 17,
-			0, 213, 251, 68, 22, 184, 221, 45, 24, 249, 243, 0, 254, 244, 246, 20, 21, 233, 238, 19, 4, 235, 9, 32, 239, 200, 0, 54, 12, 213,
-			0, 33, 245, 210, 9, 60, 12, 208, 208, 34, 50, 217, 219, 36, 35, 232, 215, 12, 35, 254, 241, 3, 241, 249, 24, 0, 251, 32, 11, 207,
-			220, 35, 43, 253, 229, 236, 253, 11, 8, 15, 1, 240, 244, 8, 16, 2, 240, 252, 16, 3, 252, 253, 253, 2, 254, 0, 19, 7, 247, 245,
-			255, 9, 0, 243, 4, 18, 253, 235, 15, 26, 246, 232, 251, 40, 28, 212, 211, 29, 29, 9, 20, 231, 184, 5, 78, 10, 213, 238, 7, 255,
-			253, 17, 23, 242, 227, 2, 15, 20, 12, 230, 237, 27, 254, 239, 27, 5, 213, 7, 38, 243, 237, 10, 3, 4, 253, 239, 20, 36, 233, 224,
-			16, 12, 253, 25, 15, 228, 226, 18, 31, 6, 248, 240, 8, 17, 239, 253, 31, 248, 231, 19, 9, 224, 9, 53, 243, 207, 255, 34, 18, 252,
-			226, 230, 32, 21, 237, 4, 11, 245, 10, 0, 218, 13, 70, 246, 193, 254, 38, 13, 247, 7, 33, 11, 222, 228, 21, 49, 246, 194, 26, 58,
-			213, 215, 36, 40, 2, 210, 223, 58, 48, 205, 227, 46, 7, 227, 12, 254, 240, 24, 17, 223, 237, 12, 20, 10, 245, 254, 20, 250, 227, 7,
-			41, 11, 219, 238, 24, 15, 254, 255, 1, 16, 18, 225, 207, 43, 72, 232, 178, 252, 69, 36, 205, 211, 45, 34, 214, 226, 46, 27, 217, 232,
-			38, 39, 236, 234, 254, 255, 19, 22, 233, 246, 29, 242, 213, 22, 53, 253, 224, 230, 12, 46, 247, 204, 28, 45, 234, 226, 3, 18, 21, 239,
-			215, 27, 45, 244, 222, 8, 33, 15, 226, 219, 26, 40, 250, 255, 255, 234, 244, 26, 40, 12, 220, 221, 26, 40, 225, 207, 47, 54, 219, 189,
-			18, 74, 2, 194, 0, 59, 5, 215, 246, 37, 29, 11, 0, 211, 231, 48, 39, 220, 221, 16, 25, 5, 243, 250, 28, 2, 230, 6, 21, 8,
-			8, 8, 10, 23, 11, 237, 237, 13, 35, 244, 205, 8, 43, 10, 228, 209, 9, 55, 8, 204, 218, 22, 60, 25, 210, 226, 34, 19, 211, 226,
-			55, 40, 199, 215, 37, 41, 5, 206, 222, 50, 38, 231, 225, 6, 32, 255, 217, 228, 40, 59, 215, 157, 39, 111, 221, 131, 7, 98, 17, 181,
-			214, 64, 37, 197, 221, 31, 19, 252, 229, 244, 39, 0, 189, 4, 79, 246, 184, 2, 43, 243, 228, 29, 5, 215, 1, 42, 233, 232, 27, 14,
-			231, 231, 11, 21, 246, 243, 255, 240, 244, 18, 11, 241, 252, 1, 226, 2, 53, 244, 197, 14, 16, 235, 34, 21, 181, 220, 50, 38, 225, 219,
-			30, 3, 194, 7, 70, 251, 167, 234, 85, 24, 155, 234, 89, 245, 187, 7, 43, 22, 218, 206, 35, 53, 216, 222, 28, 255, 249, 0, 240, 251,
-			26, 243, 229, 29, 36, 205, 202, 44, 49, 228, 226, 18, 4, 250, 10, 247, 239, 20, 255, 231, 12, 19, 253, 237, 241, 8, 21, 1, 244, 245,
-			249, 3, 0, 13, 2, 244, 8, 20, 219, 223, 31, 31, 233, 223, 15, 25, 217, 211, 37, 45, 4, 221, 223, 17, 41, 240, 249, 4, 233, 11,
-			9, 224, 8, 58, 229, 177, 13, 74, 7, 205, 238, 14, 9, 249, 235, 6, 33, 255, 220, 229, 13, 29, 12, 250, 245, 248, 245, 19, 23, 231,
-			232, 12, 9, 248, 0, 7, 2, 0, 2, 246, 2, 8, 255, 248, 250, 254, 17, 12, 255, 251, 240, 9, 29, 242, 221, 32, 27, 211, 246, 53,
-			255, 199, 2, 50, 17, 216, 226, 30, 30, 232, 239, 24, 249, 231, 11, 19, 253, 253, 1, 243, 236, 43, 47, 198, 194, 38, 35, 233, 232, 12,
-			12, 232, 233, 33, 30, 230, 241, 18, 254, 247, 32, 1, 206, 250, 42, 4, 239, 251, 234, 9, 58, 229, 199, 47, 24, 196, 11, 42, 249, 251,
-			239, 236, 24, 22, 245, 249, 6, 5, 244, 241, 5, 27, 15, 235, 233, 2, 16, 22, 1, 213, 235, 32, 22, 224, 245, 31, 253, 226, 254, 20,
-			22, 5, 212, 243, 24, 245, 240, 30, 5, 225, 238, 7, 19, 245, 0, 18, 235, 224, 21, 20, 237, 10, 31, 239, 226, 4, 11, 9, 11, 241,
-			213, 251, 37, 23, 248, 217, 231, 32, 44, 221, 196, 28, 64, 230, 184, 22, 56, 244, 210, 252, 29, 10, 236, 6, 12, 215, 250, 59, 13, 200,
-			240, 35, 11, 237, 242, 240, 12, 42, 236, 214, 21, 35, 232, 245, 37, 10, 210, 247, 40, 251, 230, 25, 20, 215, 1, 38, 246, 222, 12, 29,
-			8, 232, 232, 16, 15, 243, 253, 12, 249, 250, 16, 10, 237, 0, 31, 244, 227, 37, 30, 207, 223, 46, 45, 239, 200, 1, 62, 10, 202, 236,
-			48, 26, 218, 248, 55, 251, 202, 25, 52, 234, 233, 14, 23, 0, 236, 253, 18, 12, 249, 255, 241, 3, 36, 20, 221, 245, 18, 3, 0, 12,
-			3, 0, 246, 253, 14, 13, 254, 241, 253, 26, 20, 213, 241, 56, 24, 216, 223, 37, 43, 220, 217, 51, 24, 203, 245, 35, 21, 241, 228, 22,
-			33, 240, 240, 18, 253, 253, 23, 8, 238, 14, 31, 244, 223, 251, 23, 24, 248, 232, 254, 21, 6, 231, 18, 46, 237, 197, 11, 41, 15, 239,
-			226, 12, 30, 253, 239, 19, 12, 232, 239, 22, 26, 250, 236, 254, 6, 16, 7, 239, 2, 24, 249, 236, 17, 8, 253, 0, 5, 13, 21, 241,
-			223, 21, 41, 239, 210, 14, 45, 2, 224, 0, 18, 5, 0, 250, 0, 12, 255, 245, 5, 3, 0, 22, 5, 235, 255, 25, 2, 245, 15, 10,
-			237, 251, 25, 9, 245, 10, 11, 237, 254, 22, 247, 245, 31, 20, 217, 213, 47, 69, 215, 180, 34, 69, 240, 196, 14, 65, 252, 211, 247, 25,
-			19, 239, 235, 29, 16, 213, 243, 45, 23, 226, 225, 13, 36, 247, 229, 9, 8, 241, 10, 15, 240, 238, 18, 22, 226, 242, 42, 7, 219, 6,
-			23, 6, 5, 255, 250, 249, 0, 14, 13, 4, 3, 232, 236, 28, 34, 243, 237, 8, 245, 233, 20, 38, 247, 209, 254, 40, 1, 238, 29, 33,
-			224, 195, 14, 77, 17, 195, 235, 32, 246, 230, 32, 34, 242, 223, 249, 19, 20, 13, 255, 231, 248, 43, 11, 213, 255, 46, 0, 225, 1, 32,
-			19, 237, 222, 10, 47, 1, 211, 250, 51, 21, 209, 235, 50, 28, 224, 239, 46, 26, 200, 211, 50, 51, 233, 216, 7, 41, 0, 209, 1, 43,
-			255, 218, 8, 40, 243, 207, 8, 54, 1, 208, 247, 40, 4, 217, 245, 30, 7, 228, 251, 32, 12, 237, 245, 2, 14, 8, 4, 5, 243, 242,
-			16, 17, 7, 251, 225, 13, 39, 235, 223, 27, 12, 225, 4, 37, 4, 226, 230, 12, 46, 13, 221, 242, 23, 248, 239, 29, 22, 232, 239, 14,
-			11, 3, 2, 4, 254, 243, 11, 35, 3, 206, 247, 54, 7, 205, 7, 51, 241, 208, 26, 49, 231, 209, 11, 41, 3, 219, 250, 36, 8, 230,
-			243, 28, 28, 241, 229, 9, 21, 252, 242, 13, 19, 240, 236, 21, 9, 225, 254, 47, 3, 208, 252, 49, 12, 221, 249, 30, 10, 232, 245, 16,
-			15, 251, 247, 0, 2, 0, 6, 3, 0, 2, 244, 246, 10, 16, 3, 255, 252, 253, 1, 0, 10, 15, 248, 235, 5, 25, 2, 233, 248, 18,
-			8, 245, 249, 7, 9, 246, 241, 17, 17, 239, 250, 28, 6, 226, 252, 31, 13, 225, 239, 25, 17, 232, 242, 27, 11, 232, 2, 25, 2, 250,
-			3, 255, 247, 4, 0, 0, 225, 1, 33, 0, 8, 4, 7, 7, 20, 44, 10, 4, 9, 250, 252, 247, 237, 225, 218, 237, 231, 235, 246, 241,
-			0, 9, 13, 10, 0, 14, 14, 2, 3, 246, 240, 239, 232, 230, 219, 224, 229, 226, 235, 237, 236, 246, 248, 247, 245, 244, 247, 241, 236, 233,
-			223, 217, 220, 218, 209, 207, 210, 214, 222, 230, 235, 237, 243, 251, 0, 255, 255, 252, 252, 253, 253, 250, 250, 0, 6, 10, 14, 19, 24, 34,
-			38, 41, 43, 50, 56, 54, 55, 57, 61, 79, 76, 73, 75, 67, 65, 59, 47, 32, 16, 15, 11, 6, 5, 4, 11, 21, 28, 36, 30, 33,
-			35, 25, 21, 12, 253, 245, 233, 220, 213, 200, 197, 192, 192, 198, 192, 197, 212, 215, 223, 231, 236, 239, 236, 241, 236, 222, 224, 218, 215, 212,
-			206, 205, 204, 208, 221, 219, 227, 231, 242, 253, 0, 2, 0, 0, 4, 0, 0, 0, 1, 0, 2, 8, 6, 13, 16, 20, 24, 27, 27, 25,
-			27, 24, 8, 4, 254, 231, 221, 178, 176, 59, 41, 45, 88, 81, 98, 114, 125, 80, 4, 22, 232, 215, 213, 158, 170, 198, 247, 18, 0, 44,
-			85, 91, 125, 107, 85, 60, 43, 37, 241, 222, 212, 196, 224, 225, 222, 239, 3, 18, 3, 5, 16, 19, 26, 29, 16, 254, 255, 14, 6, 2,
-			245, 226, 242, 245, 252, 247, 228, 235, 246, 246, 250, 237, 231, 228, 228, 235, 217, 218, 213, 205, 221, 216, 222, 235, 234, 242, 235, 236, 235, 226,
-			231, 213, 204, 208, 206, 205, 203, 205, 209, 217, 235, 245, 249, 0, 10, 12, 22, 28, 24, 14, 17, 15, 14, 20, 27, 37, 41, 49, 60, 59,
-			65, 63, 62, 66, 63, 68, 66, 63, 63, 58, 59, 59, 61, 56, 42, 42, 45, 40, 47, 37, 30, 20, 8, 6, 1, 250, 243, 237, 243, 244,
-			243, 244, 231, 230, 236, 224, 230, 219, 211, 211, 212, 214, 211, 205, 209, 197, 202, 191, 187, 194, 195, 203, 202, 206, 217, 217, 229, 236, 219, 218,
-			203, 207, 209, 209, 218, 221, 233, 248, 0, 14, 11, 20, 28, 27, 35, 16, 1, 0, 252, 1, 254, 249, 0, 9, 36, 50, 71, 96, 98, 110,
-			120, 114, 104, 103, 84, 64, 43, 27, 13, 249, 234, 219, 215, 226, 228, 238, 248, 254, 16, 27, 36, 42, 34, 23, 15, 254, 239, 221, 194, 182,
-			179, 181, 197, 214, 236, 1, 17, 49, 59, 66, 64, 45, 35, 14, 1, 246, 222, 223, 224, 232, 3, 15, 29, 43, 53, 67, 60, 49, 37, 14,
-			253, 234, 217, 201, 191, 190, 191, 193, 204, 214, 223, 235, 242, 241, 240, 233, 225, 213, 204, 187, 179, 171, 164, 160, 160, 178, 210, 226, 244, 4,
-			0, 247, 239, 240, 224, 217, 225, 217, 230, 246, 0, 0, 0, 0, 108, 0, 5, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12,
-			91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0, 196, 0, 114, 1, 84, 4,
-			252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 216, 0,
-			184, 1, 169, 6, 96, 9, 128, 12, 66, 14, 192, 27, 9, 17, 28, 40, 36, 33, 32, 19, 7, 0, 120, 105, 120, 120, 120, 120, 30, 105,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 212, 0, 179, 1, 155, 7, 96, 9, 228, 12, 216, 14, 160, 27, 29, 15, 25, 37, 34, 40, 30, 18, 6, 0, 120, 105, 180, 120,
-			120, 120, 24, 96, 99, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 200, 0, 164, 1, 141, 8, 0, 10, 32, 13, 110, 15, 64, 27, 0, 95, 63, 93, 97, 97, 76, 45, 16, 0,
-			120, 105, 120, 120, 120, 120, 15, 75, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 140, 0, 3, 0, 1, 0, 148, 0, 128, 1, 168, 7, 196, 9, 228, 12, 50, 15, 96, 25, 50, 6,
-			8, 22, 28, 22, 24, 15, 6, 3, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 148, 0, 128, 1, 168, 7, 196, 9, 228, 12, 50, 15,
-			96, 25, 90, 6, 8, 22, 28, 22, 24, 15, 6, 3, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 80, 1, 32, 8, 60, 10,
-			42, 13, 50, 15, 96, 25, 0, 1, 4, 11, 14, 12, 12, 7, 3, 1, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 175, 0, 4, 0, 1, 0,
-			104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 45, 54, 26, 77, 50, 48, 50, 29, 12, 5, 160, 95, 120, 167, 120, 120,
-			130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 70, 120, 40, 116, 76, 72, 75, 44, 18, 8, 160, 95,
-			120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 60, 97, 36, 104, 68, 64, 67, 39,
-			16, 7, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 104, 0, 104, 1, 72, 8, 100, 10, 72, 13, 40, 15, 96, 25, 0, 43, 24, 69,
-			45, 43, 45, 26, 10, 5, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 90, 0, 3, 0, 1, 0, 192, 0, 144, 1, 168, 7, 236, 9, 32, 13,
-			60, 15, 96, 25, 50, 38, 29, 64, 37, 26, 24, 8, 5, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 192, 0, 152, 1, 148, 7,
-			236, 9, 32, 13, 60, 15, 96, 25, 90, 84, 44, 96, 64, 44, 40, 20, 8, 8, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0,
-			152, 1, 168, 7, 236, 9, 32, 13, 60, 15, 96, 25, 0, 31, 26, 58, 41, 29, 21, 14, 4, 5, 160, 90, 120, 120, 120, 120, 130, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			195, 0, 4, 0, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15, 104, 25, 45, 64, 13, 76, 60, 68, 68, 40, 15, 12,
-			174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15, 104, 25, 80, 64, 13, 76, 60, 68,
-			68, 40, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15, 104, 25, 70, 53,
-			11, 69, 54, 62, 61, 36, 13, 11, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15,
-			104, 25, 0, 34, 9, 55, 43, 49, 49, 29, 11, 8, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 31, 1, 77, 2,
-			255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 50, 32, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 81, 42, 77, 82, 75, 58, 42, 14, 9, 244, 132, 159, 120, 120, 120,
-			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 73, 40, 73, 77, 71, 55, 40, 13, 8, 244, 132,
-			159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48, 51, 47, 36, 27,
-			9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 31, 1, 176, 1, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28,
-			50, 34, 26, 40, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 31, 1, 184, 1, 255, 6, 225, 9, 104, 13,
-			15, 15, 224, 28, 60, 71, 42, 49, 82, 75, 58, 42, 14, 9, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 31, 1, 160, 1, 255, 6,
-			225, 9, 104, 13, 15, 15, 224, 28, 60, 60, 40, 39, 77, 71, 55, 40, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 31, 1,
-			168, 1, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 26, 26, 26, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			170, 0, 4, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 50, 24, 26, 40, 43, 38, 31, 21, 9, 5,
-			244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 55, 42, 60, 64, 57,
-			49, 34, 14, 9, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 54,
-			40, 61, 64, 54, 50, 32, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15,
-			224, 28, 0, 23, 26, 40, 40, 38, 31, 21, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 220, 0, 4, 0, 1, 0, 153, 0, 198, 1,
-			44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 41, 24, 49, 52, 39, 36, 20, 14, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 90, 63, 31, 60, 64, 51, 46, 26, 19, 8, 165, 126, 145, 120, 120, 120,
-			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 153, 0, 192, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 80, 53, 28, 54, 61, 45, 42, 23, 17, 7, 165, 126,
-			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 153, 0, 176, 1, 56, 3, 216, 9, 194, 11, 151, 14, 244, 26, 0, 31, 21, 43, 46, 34, 31, 18,
-			12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 140, 0, 3, 0, 1, 0, 204, 0, 158, 2, 252, 4, 60, 10, 168, 12, 10, 15, 0, 28,
-			50, 54, 35, 56, 76, 42, 50, 25, 14, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 204, 0, 93, 2, 208, 4, 60, 10, 168, 12,
-			10, 15, 0, 28, 90, 108, 43, 86, 98, 54, 65, 32, 19, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 204, 0, 93, 2, 252, 4,
-			60, 10, 168, 12, 10, 15, 0, 28, 0, 52, 31, 61, 69, 38, 46, 22, 13, 9, 167, 165, 150, 120, 120, 120, 167, 180, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 100, 0, 4, 0,
-			1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 45, 3, 73, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 77, 4, 96, 48, 28, 28, 40, 16, 10,
-			177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 61, 3, 85, 42, 24,
-			24, 35, 14, 8, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 30,
-			2, 60, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 50, 0, 5, 0, 1, 0, 135, 0, 96, 1, 138, 6, 68, 9,
-			128, 12, 128, 14, 153, 24, 50, 48, 12, 67, 56, 50, 45, 32, 10, 11, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 135, 0, 96, 1,
-			138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 115, 80, 16, 86, 72, 64, 58, 41, 13, 14, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			135, 0, 96, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 55, 51, 12, 69, 58, 51, 47, 33, 10, 11, 178, 122, 132, 123, 123, 141,
-			187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 135, 0, 88, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 40, 43, 10, 64, 51, 48, 44, 31, 10, 10, 178, 122,
-			132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 135, 0, 80, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 0, 40, 9, 63, 46, 40, 35, 30,
-			8, 8, 181, 122, 132, 123, 123, 141, 190, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6, 212, 8, 148, 12, 41, 14, 64, 26,
-			42, 56, 18, 76, 56, 42, 42, 39, 12, 8, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0, 104, 1, 26, 6, 212, 8, 148, 12,
-			116, 14, 192, 25, 40, 87, 23, 91, 86, 77, 60, 55, 19, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 88, 0, 104, 1, 48, 6,
-			172, 8, 148, 12, 116, 14, 192, 25, 50, 80, 24, 94, 68, 74, 55, 53, 21, 8, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 84, 0,
-			64, 1, 106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 67, 39, 12, 67, 43, 38, 32, 31, 14, 8, 165, 135, 135, 120, 120, 120, 105, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 34, 17, 60, 37, 18, 21, 21, 10, 8, 165, 135, 135, 120,
-			120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 139, 0, 3, 0, 1, 0, 112, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 60, 34, 66, 80, 45,
-			47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 90, 87,
-			41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14,
-			96, 27, 0, 46, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 105, 0, 4, 0, 5, 0, 88, 0, 24, 1,
-			6, 9, 140, 10, 32, 13, 191, 14, 224, 28, 30, 19, 10, 42, 37, 34, 45, 22, 7, 0, 135, 120, 135, 120, 120, 120, 30, 105, 75, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0,
-			88, 0, 24, 1, 174, 8, 196, 9, 32, 13, 91, 14, 224, 28, 17, 24, 7, 55, 33, 35, 37, 24, 7, 0, 135, 90, 135, 120, 120, 120,
-			30, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 5, 0, 88, 0, 84, 1, 188, 7, 36, 9, 168, 12, 191, 14, 224, 28, 58, 20, 5, 45, 20, 48, 40, 26, 5, 0, 135, 135,
-			135, 120, 120, 120, 30, 90, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 144, 1, 56, 7, 212, 8, 168, 12, 191, 14, 224, 28, 0, 86, 34, 108, 58, 77, 61, 37,
-			10, 0, 120, 105, 120, 120, 120, 120, 30, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 5, 0, 180, 0, 248, 2, 185, 8, 200, 10, 32, 13, 116, 14, 0, 29,
-			45, 13, 4, 8, 23, 36, 46, 26, 7, 0, 120, 62, 150, 120, 120, 120, 45, 92, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 196, 0, 229, 1, 136, 6, 36, 9, 28, 12,
-			116, 14, 0, 28, 50, 37, 32, 53, 66, 51, 49, 29, 6, 0, 120, 120, 150, 120, 120, 120, 75, 105, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 7, 3, 43, 4,
-			240, 10, 148, 12, 41, 14, 96, 27, 59, 126, 29, 73, 116, 52, 45, 45, 15, 7, 167, 165, 135, 120, 120, 120, 167, 120, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 228, 0,
-			7, 3, 10, 4, 240, 10, 52, 13, 41, 14, 224, 27, 58, 116, 30, 82, 97, 55, 57, 54, 13, 8, 167, 135, 150, 120, 120, 120, 167, 90,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 228, 0, 243, 2, 255, 3, 160, 10, 148, 12, 41, 14, 224, 27, 38, 71, 34, 67, 87, 37, 41, 38, 14, 8, 167, 135, 120, 120,
-			120, 120, 167, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 164, 0, 27, 3, 98, 4, 20, 10, 148, 12, 41, 14, 224, 27, 0, 40, 24, 60, 59, 29, 25, 25, 8, 8,
-			167, 120, 120, 120, 120, 120, 227, 105, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 154, 0, 4, 0, 1, 0, 248, 0, 137, 3, 40, 5, 140, 10, 112, 13, 35, 15, 32, 28, 50, 60,
-			34, 70, 69, 40, 27, 24, 9, 8, 210, 150, 105, 120, 120, 120, 255, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14,
-			32, 28, 40, 66, 42, 75, 65, 49, 43, 27, 13, 7, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 72, 1, 157, 3, 40, 5, 140, 10,
-			112, 13, 191, 14, 32, 28, 65, 72, 41, 80, 67, 56, 42, 26, 13, 6, 210, 150, 105, 120, 120, 120, 240, 165, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 16, 1, 128, 3,
-			60, 5, 100, 10, 112, 13, 191, 14, 160, 28, 0, 54, 35, 70, 63, 37, 33, 26, 8, 9, 210, 135, 105, 120, 120, 120, 255, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 154, 0,
-			4, 0, 1, 0, 248, 0, 137, 3, 40, 5, 140, 10, 112, 13, 35, 15, 32, 28, 50, 60, 34, 70, 69, 40, 27, 24, 9, 8, 210, 150,
-			105, 120, 120, 120, 255, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 40, 102, 42, 95, 85, 49, 43, 27,
-			13, 7, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 97, 41, 93,
-			83, 56, 42, 26, 13, 6, 210, 150, 105, 120, 120, 120, 240, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 16, 1, 128, 3, 60, 5, 100, 10, 112, 13, 191, 14, 160, 28,
-			0, 54, 35, 70, 63, 37, 33, 26, 8, 9, 210, 135, 105, 120, 120, 120, 255, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 50, 0, 4, 0, 5, 0, 4, 0, 16, 1, 220, 5,
-			136, 9, 58, 14, 216, 19, 224, 21, 40, 5, 8, 23, 10, 6, 6, 6, 4, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 4, 0,
-			16, 1, 220, 5, 136, 9, 58, 14, 216, 19, 224, 21, 10, 6, 9, 25, 11, 6, 6, 6, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			5, 0, 4, 0, 16, 1, 220, 5, 144, 9, 58, 14, 216, 19, 224, 21, 0, 6, 9, 26, 12, 7, 7, 7, 5, 4, 150, 125, 137, 137,
-			150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 17, 0, 4, 0, 16, 1, 220, 5, 160, 9, 58, 14, 216, 19, 224, 21, 0, 6, 9, 25, 11, 6, 6, 6, 5, 4,
-			150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 253, 2, 193, 0, 1, 254, 252, 255, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 2, 4, 6, 8,
-			9, 11, 10, 9, 8, 6, 5, 5, 6, 7, 8, 10, 11, 12, 13, 13, 12, 11, 10, 10, 9, 8, 8, 8, 8, 9, 9, 8, 7, 5,
-			3, 3, 4, 4, 1, 254, 251, 251, 251, 252, 252, 251, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253, 251, 245, 236, 226, 218, 215, 216, 221,
-			227, 234, 238, 240, 239, 237, 234, 231, 229, 228, 230, 234, 238, 242, 246, 252, 0, 6, 10, 15, 17, 18, 16, 13, 9, 6, 5, 7, 11, 17,
-			22, 26, 28, 28, 27, 23, 19, 15, 10, 7, 4, 1, 0, 255, 255, 254, 254, 254, 254, 253, 252, 250, 247, 243, 240, 237, 235, 234, 235, 237,
-			239, 242, 244, 246, 248, 249, 250, 251, 252, 253, 254, 254, 255, 0, 0, 1, 3, 4, 5, 6, 6, 5, 4, 2, 0, 253, 252, 251, 252, 254,
-			0, 3, 5, 5, 5, 3, 1, 0, 254, 253, 251, 250, 250, 251, 253, 0, 1, 3, 3, 3, 3, 2, 1, 0, 0, 0, 1, 2, 3, 4,
-			4, 4, 4, 3, 3, 3, 4, 4, 4, 4, 3, 2, 1, 0, 0, 255, 255, 255, 255, 0, 0, 1, 2, 3, 2, 0, 255, 253, 252, 253,
-			254, 0, 0, 2, 3, 4, 4, 3, 2, 2, 2, 3, 3, 2, 0, 0, 0, 2, 4, 5, 6, 6, 4, 2, 0, 254, 253, 252, 251, 250,
-			250, 252, 255, 0, 0, 0, 255, 255, 0, 0, 255, 253, 252, 252, 253, 253, 253, 252, 252, 253, 252, 251, 250, 252, 253, 252, 250, 251, 0, 8,
-			14, 16, 14, 13, 13, 13, 11, 8, 6, 6, 7, 9, 15, 23, 32, 39, 40, 27, 253, 209, 166, 138, 130, 142, 167, 197, 229, 255, 12, 11,
-			0, 241, 231, 228, 231, 236, 242, 248, 253, 0, 3, 9, 20, 36, 53, 67, 73, 68, 54, 34, 13, 253, 242, 239, 244, 255, 12, 23, 27, 23,
-			14, 3, 249, 240, 234, 230, 229, 227, 224, 219, 215, 212, 214, 220, 230, 240, 249, 254, 255, 250, 243, 235, 229, 228, 232, 241, 252, 6, 15, 21,
-			24, 25, 24, 22, 22, 21, 20, 17, 14, 10, 5, 2, 0, 0, 3, 7, 11, 13, 12, 7, 0, 248, 240, 234, 229, 228, 229, 232, 236, 240,
-			242, 244, 245, 246, 247, 248, 250, 253, 255, 0, 0, 0, 0, 2, 5, 10, 15, 20, 25, 26, 26, 23, 19, 15, 11, 8, 7, 6, 5, 4,
-			4, 3, 3, 3, 3, 3, 2, 0, 254, 250, 245, 241, 237, 237, 238, 242, 246, 252, 1, 7, 11, 12, 12, 11, 10, 8, 6, 6, 6, 8,
-			10, 12, 15, 17, 20, 22, 24, 24, 21, 15, 9, 3, 0, 252, 249, 249, 251, 255, 2, 3, 2, 0, 255, 252, 250, 247, 245, 246, 249, 252,
-			254, 254, 252, 252, 252, 255, 3, 8, 11, 12, 9, 6, 3, 2, 1, 2, 3, 4, 6, 7, 8, 9, 9, 8, 6, 4, 3, 3, 4, 7,
-			9, 9, 8, 5, 2, 1, 3, 7, 12, 14, 12, 4, 249, 234, 221, 213, 214, 223, 237, 254, 13, 23, 24, 17, 6, 252, 243, 237, 238, 244,
-			254, 4, 5, 0, 252, 252, 252, 247, 237, 226, 218, 215, 216, 221, 227, 234, 239, 240, 239, 238, 235, 232, 230, 229, 231, 234, 239, 243, 247, 252,
-			1, 6, 11, 15, 17, 18, 17, 14, 10, 7, 6, 8, 12, 17, 23, 27, 29, 29, 27, 24, 19, 15, 11, 7, 4, 1, 0, 0, 255, 254,
-			254, 254, 254, 254, 253, 250, 247, 244, 241, 238, 235, 234, 235, 237, 240, 242, 244, 246, 248, 250, 251, 252, 252, 253, 254, 255, 0, 0, 1, 3,
-			4, 5, 6, 7, 7, 6, 5, 2, 0, 254, 252, 251, 252, 255, 1, 3, 5, 6, 5, 4, 2, 0, 255, 253, 251, 250, 251, 252, 254, 0,
-			2, 3, 3, 3, 3, 3, 2, 0, 0, 0, 1, 2, 3, 4, 5, 5, 4, 4, 4, 4, 4, 5, 5, 4, 4, 3, 2, 0, 0, 0,
-			255, 255, 0, 0, 0, 1, 3, 3, 3, 1, 0, 254, 253, 253, 255, 0, 1, 3, 4, 4, 5, 4, 3, 2, 2, 3, 3, 3, 1, 1,
-			1, 3, 5, 6, 7, 6, 5, 2, 0, 255, 253, 252, 251, 250, 251, 253, 255, 1, 1, 0, 255, 0, 0, 0, 0, 254, 252, 0, 0, 0,
-			50, 0, 5, 0, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 45, 35, 17, 54, 37, 34, 34, 31, 8, 11,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 50, 68, 24, 76, 52, 48,
-			48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 85, 55,
-			21, 68, 46, 43, 43, 39, 10, 14, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14,
-			100, 25, 40, 43, 19, 60, 41, 38, 38, 35, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 16, 1, 8, 7, 212, 8,
-			228, 12, 96, 14, 100, 25, 0, 29, 15, 50, 34, 29, 31, 29, 7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 235, 0, 5, 0, 1, 0,
-			244, 0, 35, 2, 48, 7, 232, 9, 38, 13, 144, 14, 176, 28, 45, 28, 23, 46, 45, 48, 37, 27, 8, 6, 202, 118, 143, 120, 120, 120,
-			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 244, 0, 35, 2, 48, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 82, 40, 79, 77, 81, 63, 46, 14, 10, 202, 118,
-			143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 238, 0, 18, 2, 230, 6, 214, 9, 6, 13, 144, 14, 122, 28, 80, 72, 37, 74, 71, 73, 58, 41,
-			14, 9, 198, 118, 144, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 184, 0, 120, 1, 192, 3, 46, 9, 224, 11, 136, 14, 144, 26, 30, 48, 26, 59,
-			47, 37, 32, 21, 15, 7, 162, 122, 155, 120, 120, 120, 162, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 120, 1, 212, 3, 56, 9, 224, 11, 136, 14, 144, 26,
-			0, 29, 20, 45, 39, 32, 28, 17, 13, 5, 162, 125, 155, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 140, 0, 4, 0, 1, 0, 56, 1, 73, 3, 129, 5,
-			246, 9, 86, 13, 211, 14, 92, 28, 50, 26, 22, 47, 48, 30, 24, 17, 7, 3, 211, 144, 124, 120, 120, 120, 237, 165, 165, 44, 45, 70,
-			130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 56, 1,
-			73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 25, 91, 41, 88, 89, 56, 45, 32, 13, 7, 211, 144, 124, 120, 120, 120, 237, 165,
-			165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 56, 1, 73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 65, 87, 40, 86, 87, 54, 44, 31, 13, 6, 211, 144, 124, 120,
-			120, 120, 237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 56, 1, 73, 3, 129, 5, 246, 9, 86, 13, 211, 14, 92, 28, 0, 27, 23, 48, 49, 30, 24, 17, 7, 3,
-			211, 144, 124, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 48, 0, 3, 0, 5, 0, 168, 0, 160, 1, 232, 3, 216, 9, 72, 13, 168, 17, 106, 24, 25, 10,
-			31, 19, 3, 3, 7, 3, 7, 11, 97, 125, 137, 137, 150, 175, 97, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 9, 0, 168, 0, 160, 1, 232, 3, 216, 9, 72, 13, 168, 17,
-			106, 24, 23, 10, 31, 19, 3, 3, 7, 3, 7, 7, 97, 125, 137, 137, 150, 175, 97, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 168, 0, 160, 1, 232, 3, 216, 9,
-			72, 13, 168, 17, 106, 24, 0, 10, 31, 19, 3, 3, 7, 3, 7, 7, 97, 125, 137, 137, 150, 175, 97, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 175, 0, 4, 0, 1, 0,
-			24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 45, 44, 27, 62, 53, 40, 30, 19, 9, 4, 217, 155, 105, 120, 120, 120,
-			247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 70, 93, 40, 90, 76, 58, 43, 27, 13, 6, 217, 155,
-			105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 60, 83, 38, 85, 72, 55, 41, 26,
-			12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 0, 39, 26, 58,
-			50, 38, 28, 18, 8, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 4, 0, 33, 0, 152, 0, 40, 1, 232, 8, 4, 11, 52, 13,
-			0, 15, 160, 26, 52, 30, 12, 39, 42, 51, 51, 33, 13, 6, 167, 190, 120, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 40, 1, 232, 8,
-			4, 11, 52, 13, 0, 15, 160, 26, 75, 47, 15, 49, 53, 64, 64, 41, 16, 8, 167, 190, 120, 120, 120, 120, 167, 190, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0,
-			40, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 79, 38, 13, 44, 47, 58, 58, 37, 14, 7, 167, 190, 120, 120, 120, 120, 167, 190,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 84, 0, 240, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26, 0, 22, 11, 34, 39, 37, 38, 21, 9, 8, 175, 200, 105, 120,
-			120, 120, 175, 200, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 150, 0, 4, 0, 1, 0, 186, 0, 152, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 37, 31, 52, 63, 36,
-			29, 23, 13, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 186, 0, 152, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 60, 68,
-			43, 72, 86, 50, 39, 32, 18, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 186, 0, 152, 2, 128, 5, 156, 9, 248, 12, 141, 14,
-			160, 27, 40, 61, 40, 68, 81, 47, 37, 30, 17, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 186, 0, 152, 2, 128, 5, 156, 9,
-			248, 12, 141, 14, 160, 27, 0, 32, 29, 49, 59, 34, 27, 22, 12, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 247, 0, 5, 0, 1, 0,
-			186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 45, 41, 33, 55, 66, 38, 30, 24, 13, 0, 180, 150, 125, 120, 120, 120,
-			200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 3, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 60, 62, 41, 68, 82, 47, 37, 30, 17, 0, 180, 150,
-			125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 80, 49, 36, 60, 72, 42, 33, 27,
-			15, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 208, 0, 136, 1, 8, 2, 20, 10, 216, 11, 234, 13, 15, 28, 62, 27, 39, 30,
-			16, 28, 28, 19, 6, 6, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 208, 0, 136, 1, 8, 2, 20, 10, 216, 11, 234, 13, 15, 28,
-			0, 16, 32, 22, 14, 24, 24, 17, 5, 5, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 7, 0, 1, 0, 206, 0, 200, 1, 72, 3,
-			38, 10, 208, 11, 47, 14, 159, 27, 24, 50, 28, 50, 69, 23, 36, 20, 10, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 206, 0,
-			200, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 55, 78, 35, 63, 87, 28, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120, 105, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 206, 0, 200, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 65, 70, 33, 60, 82, 27, 43, 24, 12, 7, 177, 100, 131, 120,
-			120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 5, 0, 201, 0, 184, 1, 80, 5, 16, 9, 243, 11, 67, 14, 134, 27, 25, 40, 26, 56, 46, 36, 43, 24, 12, 7,
-			176, 151, 153, 120, 120, 120, 105, 177, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 120, 1, 244, 6, 172, 8, 168, 12, 0, 15, 160, 26, 48, 30, 14, 43, 43, 39,
-			46, 32, 15, 7, 167, 197, 120, 120, 120, 120, 167, 197, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 56, 1, 248, 7, 220, 10, 12, 13, 0, 15, 160, 26, 30, 27,
-			12, 42, 35, 29, 35, 29, 14, 6, 167, 200, 120, 120, 120, 120, 167, 200, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 152, 0, 56, 1, 248, 7, 220, 10, 52, 13, 0, 15,
-			160, 26, 0, 21, 11, 37, 28, 28, 28, 23, 12, 6, 167, 200, 120, 120, 120, 120, 167, 200, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 7, 0, 1, 0, 232, 0, 218, 2,
-			222, 3, 60, 10, 224, 11, 222, 13, 160, 28, 40, 57, 32, 56, 70, 33, 33, 22, 9, 7, 230, 150, 120, 120, 120, 120, 185, 105, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			232, 0, 158, 2, 178, 3, 60, 10, 224, 11, 222, 13, 32, 28, 49, 114, 28, 81, 103, 42, 43, 28, 15, 6, 182, 150, 120, 120, 120, 120,
-			182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 228, 0, 138, 2, 222, 3, 14, 10, 232, 11, 244, 13, 10, 28, 65, 105, 30, 83, 101, 46, 44, 29, 16, 7, 181, 145,
-			123, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 37, 0, 184, 0, 209, 1, 106, 5, 112, 8, 48, 12, 191, 14, 64, 27, 22, 49, 37, 68, 39, 59, 39, 22,
-			15, 7, 167, 100, 152, 120, 120, 120, 137, 115, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 208, 0, 149, 1, 246, 6, 112, 8, 128, 12, 191, 14, 64, 27, 48, 45, 32, 57,
-			36, 60, 35, 23, 14, 7, 155, 105, 150, 120, 120, 120, 125, 150, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 199, 7, 136, 9, 228, 12, 191, 14, 64, 27,
-			26, 36, 25, 53, 36, 30, 41, 27, 16, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 210, 7, 252, 8, 92, 13,
-			35, 15, 64, 28, 0, 25, 27, 45, 27, 21, 33, 22, 13, 8, 157, 105, 135, 120, 120, 120, 82, 105, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 5, 0, 1, 0, 88, 1,
-			128, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 46, 46, 33, 54, 65, 48, 36, 27, 9, 8, 255, 150, 180, 120, 120, 120, 135, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 88, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 61, 85, 45, 74, 89, 66, 50, 38, 13, 8, 255, 150, 180, 120,
-			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 36, 1, 64, 2, 241, 5, 12, 9, 148, 12, 20, 15, 173, 28, 48, 56, 30, 66, 71, 45, 36, 29, 13, 7,
-			222, 132, 153, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 174, 1, 156, 4, 172, 8, 204, 11, 141, 14, 224, 28, 46, 36, 26, 61, 37, 26,
-			17, 15, 8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 134, 1, 189, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 29,
-			25, 53, 35, 20, 14, 11, 8, 7, 155, 120, 75, 120, 120, 120, 110, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 195, 0, 4, 0, 1, 0, 112, 0, 120, 1, 235, 5, 156, 9,
-			208, 12, 60, 15, 90, 26, 45, 28, 23, 48, 46, 43, 40, 28, 15, 6, 168, 135, 148, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 112, 0, 120, 1,
-			235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 75, 39, 27, 58, 54, 51, 47, 34, 18, 7, 168, 135, 148, 120, 120, 120, 107, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			112, 0, 120, 1, 235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 75, 35, 25, 55, 51, 48, 45, 32, 17, 6, 168, 135, 148, 120, 120, 120,
-			107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 112, 0, 120, 1, 235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 0, 28, 23, 48, 46, 43, 40, 28, 15, 6, 168, 135,
-			148, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 105, 0, 4, 0, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 30, 13, 18, 34,
-			28, 16, 14, 14, 5, 3, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27,
-			45, 16, 20, 38, 32, 18, 16, 16, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12,
-			116, 14, 96, 27, 30, 16, 20, 38, 32, 18, 16, 16, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 13, 2, 161, 5,
-			232, 8, 188, 12, 116, 14, 96, 27, 0, 11, 15, 29, 35, 19, 20, 16, 8, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 80, 0, 4, 0,
-			1, 0, 104, 0, 44, 1, 172, 5, 84, 11, 12, 13, 135, 15, 32, 28, 0, 32, 17, 53, 34, 32, 55, 26, 8, 0, 150, 120, 150, 120,
-			120, 120, 120, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 11, 0, 104, 0, 44, 1, 172, 5, 84, 11, 12, 13, 135, 15, 32, 28, 40, 23, 14, 45, 29, 27, 47, 22, 7, 0,
-			150, 120, 150, 120, 120, 120, 120, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 9, 0, 136, 0, 184, 1, 48, 6, 84, 11, 92, 13, 210, 15, 32, 28, 40, 14, 13, 41, 31, 28,
-			27, 13, 5, 0, 150, 105, 150, 120, 120, 120, 120, 45, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 136, 0, 104, 1, 152, 8, 84, 11, 32, 13, 210, 15, 32, 28, 0, 76,
-			20, 78, 80, 78, 76, 34, 10, 0, 150, 150, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 103, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9,
-			172, 13, 160, 15, 0, 27, 40, 14, 48, 29, 21, 13, 11, 13, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0, 236, 0, 144, 1,
-			12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 15, 12, 46, 28, 22, 16, 14, 16, 10, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			236, 0, 164, 1, 122, 7, 80, 10, 172, 13, 235, 15, 128, 27, 49, 9, 28, 24, 31, 32, 28, 18, 6, 0, 120, 75, 90, 120, 120, 120,
-			30, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 204, 0, 144, 1, 97, 8, 20, 10, 92, 13, 135, 15, 128, 27, 0, 66, 51, 66, 65, 81, 81, 52, 12, 0, 120, 105,
-			150, 120, 120, 120, 45, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 140, 0, 3, 0, 1, 0, 148, 0, 128, 1, 32, 8, 60, 10, 42, 13, 50, 15, 96, 25, 50, 6, 8, 21,
-			26, 24, 23, 14, 6, 2, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 148, 0, 128, 1, 32, 8, 60, 10, 42, 13, 50, 15, 96, 25,
-			90, 7, 8, 22, 28, 25, 24, 15, 6, 2, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 128, 1, 32, 8, 60, 10, 42, 13,
-			50, 15, 96, 25, 0, 1, 4, 11, 14, 12, 12, 7, 3, 1, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 46, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 175, 0, 4, 0, 1, 0, 176, 0,
-			240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 45, 50, 29, 56, 64, 39, 34, 24, 17, 5, 164, 141, 150, 120, 120, 120, 162, 120,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 70, 109, 43, 83, 95, 57, 51, 36, 26, 8, 164, 141, 150, 120,
-			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 60, 88, 39, 75, 85, 51, 46, 32, 23, 7,
-			164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 0, 44, 27, 53, 60, 36,
-			32, 23, 16, 5, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 235, 0, 6, 0, 1, 0, 176, 0, 72, 2, 120, 5, 156, 9, 188, 12, 116, 14,
-			88, 27, 45, 49, 33, 60, 69, 41, 39, 33, 17, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 72, 2, 120, 5, 156, 9,
-			188, 12, 116, 14, 88, 27, 60, 76, 41, 75, 87, 51, 49, 41, 21, 8, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 72, 2,
-			100, 5, 156, 9, 188, 12, 116, 14, 88, 27, 40, 61, 37, 67, 78, 46, 44, 37, 19, 7, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			176, 0, 184, 1, 66, 4, 106, 9, 228, 12, 216, 14, 244, 26, 40, 53, 20, 68, 59, 32, 32, 33, 15, 7, 172, 130, 122, 120, 120, 120,
-			197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 176, 0, 92, 1, 32, 3, 246, 8, 172, 12, 8, 15, 65, 27, 50, 47, 10, 68, 42, 22, 20, 26, 11, 8, 170, 123,
-			106, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 176, 0, 92, 1, 32, 3, 246, 8, 172, 12, 8, 15, 65, 27, 0, 32, 8, 57, 35, 18, 17, 22,
-			9, 6, 170, 123, 106, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66,
-			0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 120, 0, 7, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11, 52, 13, 0, 15, 160, 26,
-			52, 43, 6, 65, 57, 58, 58, 28, 13, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13,
-			0, 15, 160, 26, 50, 69, 9, 81, 72, 72, 73, 35, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 152, 0, 24, 1, 232, 8,
-			4, 11, 52, 13, 0, 15, 160, 26, 40, 50, 8, 69, 61, 61, 62, 30, 14, 7, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0,
-			24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 30, 44, 7, 65, 57, 58, 58, 28, 13, 6, 167, 105, 120, 120, 120, 120, 167, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 152, 0, 24, 1, 252, 8, 4, 11, 52, 13, 0, 15, 160, 26, 48, 62, 9, 77, 68, 69, 69, 33, 16, 8, 167, 105, 120, 120,
-			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 152, 0, 24, 1, 252, 8, 4, 11, 12, 13, 216, 14, 64, 26, 60, 44, 9, 58, 58, 61, 62, 33, 11, 8,
-			167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 84, 0, 200, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26, 0, 21, 7, 40, 41, 38,
-			39, 22, 9, 8, 175, 105, 105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 250, 0, 5, 0, 1, 0, 141, 0, 80, 1, 244, 6, 236, 9, 32, 13, 160, 15,
-			104, 25, 45, 40, 9, 60, 53, 53, 51, 31, 11, 9, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 141, 0, 80, 1, 244, 6, 236, 9,
-			32, 13, 160, 15, 104, 25, 80, 64, 12, 76, 68, 68, 65, 39, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 143, 0, 66, 1,
-			116, 7, 51, 10, 27, 13, 109, 15, 159, 25, 80, 48, 10, 64, 59, 60, 58, 34, 12, 10, 172, 113, 125, 121, 121, 129, 187, 130, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			152, 0, 24, 1, 232, 8, 4, 11, 12, 13, 216, 14, 64, 26, 45, 39, 9, 55, 55, 58, 59, 31, 11, 7, 167, 105, 120, 120, 120, 120,
-			167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 84, 0, 200, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26, 0, 22, 8, 41, 41, 39, 40, 23, 10, 8, 175, 105,
-			105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 180, 5, 212, 8, 148, 12, 41, 14, 64, 26, 42, 51, 17, 72,
-			57, 40, 40, 37, 11, 8, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 84, 0, 104, 1, 140, 5, 212, 8, 148, 12, 116, 14, 192, 25,
-			40, 79, 21, 87, 82, 73, 57, 52, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 88, 0, 96, 1, 120, 5, 172, 8, 148, 12,
-			116, 14, 192, 25, 50, 74, 22, 89, 68, 70, 52, 50, 20, 8, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 109, 0, 64, 1, 113, 4,
-			187, 8, 23, 12, 121, 14, 244, 25, 67, 49, 11, 68, 57, 41, 37, 33, 15, 8, 165, 135, 138, 120, 120, 120, 162, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 84, 0,
-			34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 30, 16, 57, 35, 17, 20, 20, 10, 8, 165, 135, 135, 120, 120, 120, 105, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0,
-			235, 0, 6, 0, 1, 0, 0, 1, 43, 2, 64, 6, 243, 9, 229, 12, 226, 14, 112, 28, 45, 37, 27, 53, 51, 46, 38, 25, 10, 5,
-			222, 133, 154, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 19, 0, 0, 1, 43, 2, 241, 5, 243, 9, 229, 12, 226, 14, 112, 28, 40, 46, 31, 59, 57, 52,
-			42, 28, 11, 6, 222, 133, 154, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 162, 0, 16, 2, 16, 4, 216, 9, 58, 12, 176, 14, 121, 27, 40, 48,
-			30, 55, 67, 39, 35, 26, 16, 6, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 162, 0, 16, 2, 16, 4, 216, 9, 58, 12, 176, 14,
-			121, 27, 70, 54, 32, 58, 71, 41, 37, 27, 16, 6, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 162, 0, 16, 2, 16, 4, 216, 9,
-			58, 12, 176, 14, 121, 27, 40, 60, 34, 62, 74, 43, 39, 28, 17, 6, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 162, 0, 16, 2,
-			16, 4, 216, 9, 58, 12, 176, 14, 121, 27, 0, 38, 27, 49, 59, 34, 31, 23, 14, 5, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 255, 0,
-			5, 0, 1, 0, 243, 0, 200, 1, 8, 7, 216, 9, 28, 13, 170, 14, 164, 28, 45, 36, 23, 48, 54, 53, 41, 30, 9, 6, 214, 120,
-			143, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 237, 0, 196, 1, 174, 6, 202, 9, 27, 13, 183, 14, 116, 28, 70, 57, 27, 62, 67, 63, 49, 38,
-			12, 8, 210, 120, 140, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 183, 0, 160, 1, 123, 3, 71, 9, 14, 13, 46, 15, 193, 26, 80, 82, 23, 87,
-			71, 32, 30, 40, 15, 9, 181, 124, 113, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13, 60, 15, 144, 26,
-			60, 64, 3, 86, 50, 25, 25, 36, 14, 9, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9, 12, 13,
-			60, 15, 144, 26, 0, 31, 2, 60, 35, 17, 17, 25, 10, 6, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 255, 0, 5, 0, 1, 0, 168, 0,
-			16, 2, 112, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 52, 20, 51, 63, 38, 35, 17, 13, 5, 167, 135, 150, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 195, 0, 156, 2, 68, 4, 108, 10, 97, 12, 235, 14, 60, 27, 70, 83, 34, 75, 82, 52, 45, 26, 16, 6, 201, 149, 155, 130,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 231, 0, 105, 3, 125, 5, 136, 10, 178, 13, 105, 15, 97, 27, 80, 78, 43, 85, 82, 54, 44, 30, 14, 5,
-			246, 167, 162, 143, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10, 216, 13, 120, 15, 102, 27, 60, 83, 41, 81, 77, 51,
-			41, 29, 13, 5, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10, 216, 13, 120, 15, 102, 27, 0, 56,
-			34, 67, 63, 42, 34, 23, 11, 4, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 20, 0, 3, 0, 5, 0, 136, 0, 216, 1, 64, 6, 32, 8,
-			128, 12, 100, 15, 124, 21, 20, 14, 3, 36, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 136, 0, 216, 1,
-			64, 6, 32, 8, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			136, 0, 216, 1, 64, 6, 32, 8, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175,
-			200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 20, 0, 3, 0, 5, 0, 136, 0, 8, 2, 120, 5, 148, 7, 128, 12, 100, 15, 124, 21, 20, 4, 4, 20, 16, 8, 4, 8,
-			0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 136, 0, 8, 2, 120, 5, 148, 7, 128, 12, 100, 15, 124, 21, 0, 4, 4, 20,
-			16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 8, 2, 120, 5, 148, 7, 128, 12, 100, 15, 124, 21,
-			0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 8, 1, 23, 0, 255, 2, 250, 255, 251, 0, 253, 255,
-			253, 252, 1, 2, 2, 1, 253, 8, 5, 6, 7, 14, 13, 12, 17, 13, 16, 5, 164, 135, 240, 0, 35, 45, 3, 43, 36, 3, 19, 0,
-			247, 11, 247, 252, 12, 228, 242, 255, 240, 250, 251, 3, 3, 244, 8, 13, 1, 248, 3, 3, 2, 25, 11, 0, 16, 22, 6, 22, 212, 179,
-			243, 250, 37, 8, 255, 19, 4, 12, 254, 239, 7, 240, 219, 252, 239, 251, 42, 29, 42, 28, 15, 28, 249, 214, 226, 225, 240, 240, 240, 15,
-			9, 245, 23, 14, 4, 246, 238, 11, 21, 16, 5, 249, 251, 23, 6, 9, 5, 248, 241, 251, 246, 255, 227, 234, 255, 5, 20, 13, 0, 253,
-			252, 247, 42, 12, 247, 248, 6, 30, 30, 0, 3, 18, 191, 220, 208, 229, 20, 255, 12, 19, 5, 53, 25, 245, 19, 215, 7, 47, 251, 12,
-			213, 238, 248, 247, 4, 229, 37, 250, 228, 246, 12, 20, 37, 3, 230, 33, 231, 223, 243, 40, 76, 233, 219, 36, 242, 246, 242, 41, 16, 230,
-			220, 215, 0, 21, 251, 224, 251, 54, 217, 217, 22, 40, 26, 42, 59, 27, 220, 15, 72, 244, 207, 167, 168, 209, 3, 239, 12, 33, 63, 6,
-			218, 45, 55, 222, 243, 44, 11, 241, 23, 29, 247, 250, 16, 193, 238, 25, 218, 204, 251, 37, 16, 218, 24, 18, 213, 50, 43, 230, 3, 22,
-			230, 243, 4, 43, 25, 243, 18, 232, 222, 32, 6, 226, 228, 242, 229, 212, 50, 0, 5, 0, 1, 0, 132, 0, 24, 1, 12, 8, 36, 9,
-			228, 12, 96, 14, 100, 25, 45, 35, 17, 54, 37, 31, 34, 31, 8, 11, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 24, 1,
-			188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 50, 68, 24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			132, 0, 24, 1, 168, 7, 36, 9, 228, 12, 96, 14, 100, 25, 85, 55, 21, 68, 46, 39, 43, 39, 10, 14, 167, 90, 135, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 132, 0, 24, 1, 188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 40, 43, 19, 60, 41, 35, 38, 35, 9, 12, 165, 90,
-			135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 0, 29, 15, 50, 34, 29, 31, 29,
-			7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 144, 0, 128, 1, 128, 7, 176, 9, 248, 12, 0, 15, 160, 26,
-			45, 42, 23, 60, 54, 54, 54, 26, 12, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 144, 0, 128, 1, 128, 7, 176, 9, 248, 12,
-			0, 15, 160, 26, 70, 81, 32, 84, 76, 76, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 144, 0, 128, 1, 128, 7,
-			176, 9, 248, 12, 0, 15, 160, 26, 60, 65, 28, 75, 68, 68, 67, 32, 15, 7, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0,
-			128, 1, 128, 7, 136, 9, 32, 13, 0, 15, 160, 26, 0, 35, 19, 56, 50, 50, 51, 24, 11, 5, 167, 105, 120, 120, 120, 120, 167, 90,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			175, 0, 4, 0, 1, 0, 135, 0, 120, 1, 4, 6, 212, 8, 72, 13, 0, 15, 50, 25, 45, 40, 14, 59, 47, 56, 44, 26, 10, 5,
-			178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 135, 0, 104, 1, 4, 6, 172, 8, 72, 13, 0, 15, 50, 25, 70, 73, 20, 80, 64, 68,
-			60, 36, 13, 8, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 135, 0, 104, 1, 4, 6, 192, 8, 72, 13, 0, 15, 50, 25, 60, 59,
-			18, 72, 57, 61, 54, 32, 12, 7, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 135, 0, 104, 1, 24, 6, 232, 8, 72, 13, 0, 15,
-			50, 25, 0, 30, 12, 51, 40, 43, 38, 23, 8, 5, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 115, 0, 3, 0, 1, 0, 160, 0, 75, 2,
-			220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 45, 53, 37, 66, 63, 47, 41, 27, 15, 6, 171, 143, 165, 121, 122, 125, 171, 120, 172, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			160, 0, 75, 2, 220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 70, 85, 48, 84, 80, 60, 52, 34, 20, 8, 171, 143, 165, 121, 122, 125,
-			171, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 160, 0, 75, 2, 220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 0, 68, 43, 75, 72, 54, 46, 31, 18, 7, 171, 143,
-			165, 121, 122, 125, 171, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 205, 0, 4, 0, 1, 0, 248, 0, 152, 2, 232, 3, 160, 10, 216, 12, 109, 14, 87, 27, 45, 50, 25, 54,
-			60, 33, 35, 31, 9, 5, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 248, 0, 152, 2, 232, 3, 160, 10, 216, 12, 109, 14, 87, 27,
-			90, 91, 34, 73, 81, 45, 47, 42, 12, 7, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 248, 0, 144, 2, 252, 3, 140, 10, 216, 12,
-			109, 14, 87, 27, 70, 73, 31, 67, 74, 41, 43, 38, 11, 6, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 248, 0, 144, 2, 16, 4,
-			80, 10, 168, 12, 109, 14, 87, 27, 0, 46, 25, 54, 60, 33, 35, 31, 9, 5, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 67, 8, 23, 0,
-			1, 5, 2, 0, 254, 252, 253, 251, 251, 248, 247, 250, 1, 12, 15, 13, 5, 0, 248, 241, 243, 249, 255, 0, 8, 22, 34, 38, 35, 30,
-			23, 10, 1, 251, 238, 223, 220, 231, 239, 243, 247, 253, 251, 246, 252, 0, 249, 238, 235, 237, 242, 254, 4, 0, 243, 239, 245, 249, 253, 1,
-			10, 18, 21, 22, 24, 34, 43, 47, 42, 36, 32, 30, 25, 13, 2, 254, 254, 0, 11, 28, 37, 34, 33, 32, 24, 15, 9, 5, 249, 242,
-			245, 242, 219, 197, 197, 210, 219, 221, 226, 244, 17, 48, 58, 44, 25, 20, 20, 7, 242, 225, 224, 238, 2, 14, 12, 20, 40, 58, 48, 27,
-			18, 23, 21, 0, 231, 213, 204, 203, 210, 214, 212, 213, 234, 1, 6, 252, 251, 1, 250, 231, 217, 220, 230, 244, 254, 0, 253, 4, 22, 30,
-			21, 10, 6, 10, 13, 11, 1, 249, 255, 8, 9, 252, 244, 251, 13, 29, 33, 32, 31, 38, 44, 39, 24, 14, 11, 4, 249, 236, 231, 236,
-			244, 253, 0, 249, 242, 249, 6, 5, 246, 230, 230, 241, 248, 248, 248, 247, 248, 251, 251, 241, 230, 227, 231, 237, 235, 234, 234, 239, 245, 250,
-			246, 235, 234, 243, 246, 237, 232, 239, 249, 0, 253, 248, 242, 242, 249, 251, 243, 232, 238, 250, 5, 8, 8, 13, 25, 34, 31, 20, 10, 14,
-			26, 31, 20, 14, 22, 30, 28, 19, 20, 21, 11, 3, 12, 26, 25, 14, 9, 12, 18, 13, 5, 254, 249, 243, 238, 238, 239, 244, 241, 238,
-			243, 2, 10, 12, 15, 19, 15, 3, 250, 248, 248, 239, 230, 223, 227, 241, 2, 12, 24, 45, 60, 61, 52, 36, 21, 13, 13, 10, 2, 0,
-			5, 20, 30, 37, 29, 14, 2, 254, 251, 246, 248, 242, 228, 217, 210, 203, 198, 211, 234, 250, 0, 1, 11, 14, 11, 5, 253, 243, 238, 248,
-			1, 11, 18, 23, 20, 11, 6, 11, 14, 2, 245, 246, 2, 11, 12, 5, 8, 19, 31, 33, 22, 2, 247, 251, 249, 229, 213, 214, 228, 237,
-			239, 240, 243, 255, 12, 23, 9, 240, 223, 222, 230, 236, 237, 233, 242, 2, 16, 21, 24, 31, 45, 54, 46, 25, 10, 5, 0, 237, 208, 195,
-			202, 221, 234, 243, 251, 8, 18, 21, 20, 15, 0, 251, 253, 237, 205, 193, 212, 228, 236, 247, 16, 42, 54, 56, 44, 24, 8, 255, 243, 223,
-			219, 231, 246, 6, 19, 35, 38, 39, 42, 43, 25, 251, 238, 238, 236, 231, 234, 242, 246, 254, 16, 34, 43, 36, 29, 17, 4, 0, 2, 2,
-			252, 254, 0, 6, 8, 13, 13, 3, 242, 230, 231, 238, 244, 240, 223, 213, 226, 243, 243, 226, 222, 234, 252, 8, 16, 18, 14, 15, 17, 11,
-			252, 244, 249, 253, 251, 253, 5, 22, 31, 40, 41, 31, 19, 24, 42, 37, 18, 14, 30, 31, 9, 253, 5, 11, 4, 250, 245, 241, 241, 248,
-			246, 240, 236, 238, 237, 233, 231, 221, 208, 213, 231, 236, 211, 206, 234, 9, 26, 32, 36, 25, 30, 52, 62, 39, 6, 254, 254, 254, 0, 5,
-			9, 11, 26, 35, 34, 33, 35, 32, 12, 246, 222, 209, 201, 199, 198, 195, 201, 225, 5, 20, 10, 6, 25, 32, 2, 230, 227, 225, 211, 207,
-			221, 230, 237, 11, 43, 44, 28, 35, 57, 55, 23, 247, 236, 247, 254, 246, 229, 239, 14, 40, 46, 40, 41, 36, 31, 13, 243, 221, 219, 230,
-			232, 228, 231, 247, 7, 13, 2, 247, 253, 8, 254, 231, 229, 249, 253, 250, 255, 8, 13, 29, 54, 54, 29, 8, 9, 254, 230, 210, 212, 222,
-			231, 251, 13, 29, 33, 44, 55, 51, 29, 7, 249, 229, 216, 226, 234, 221, 209, 229, 249, 246, 253, 17, 21, 251, 246, 2, 3, 243, 251, 9,
-			254, 237, 244, 10, 12, 5, 4, 4, 2, 12, 28, 32, 26, 32, 40, 28, 5, 0, 7, 244, 210, 198, 211, 220, 224, 241, 6, 17, 28, 41,
-			46, 30, 14, 0, 235, 223, 227, 239, 235, 234, 253, 24, 39, 41, 37, 28, 20, 21, 18, 0, 236, 234, 243, 245, 248, 6, 14, 13, 26, 47,
-			46, 16, 253, 0, 0, 235, 210, 201, 199, 211, 228, 243, 249, 0, 13, 20, 13, 5, 249, 231, 216, 218, 229, 234, 235, 251, 19, 32, 33, 30,
-			28, 23, 31, 36, 22, 251, 243, 253, 238, 214, 221, 1, 21, 24, 25, 38, 40, 37, 16, 244, 219, 211, 213, 217, 234, 248, 253, 5, 30, 40,
-			7, 227, 233, 4, 253, 220, 210, 234, 253, 3, 11, 25, 16, 11, 18, 26, 5, 248, 6, 19, 4, 238, 242, 251, 252, 0, 12, 21, 26, 42,
-			56, 38, 10, 2, 9, 1, 234, 226, 218, 213, 214, 234, 240, 226, 224, 4, 35, 44, 55, 82, 77, 26, 233, 218, 207, 181, 171, 185, 194, 188,
-			216, 21, 62, 53, 40, 65, 86, 80, 50, 26, 255, 228, 217, 214, 202, 196, 224, 13, 38, 43, 50, 68, 80, 62, 25, 249, 230, 219, 197, 176,
-			172, 188, 212, 248, 27, 47, 43, 49, 67, 68, 24, 233, 223, 237, 233, 211, 199, 209, 231, 5, 34, 42, 31, 36, 63, 75, 43, 246, 224, 227,
-			227, 209, 205, 215, 231, 250, 9, 27, 30, 39, 44, 36, 12, 255, 253, 251, 236, 220, 203, 192, 191, 213, 240, 252, 254, 8, 36, 58, 63, 55,
-			45, 40, 33, 10, 223, 195, 211, 243, 245, 212, 211, 252, 35, 37, 25, 27, 27, 29, 31, 34, 13, 236, 230, 237, 222, 194, 197, 228, 243, 253,
-			23, 48, 43, 40, 56, 45, 3, 238, 254, 251, 220, 205, 214, 214, 211, 236, 2, 2, 0, 21, 42, 34, 19, 16, 14, 247, 229, 231, 249, 249,
-			236, 235, 251, 8, 9, 15, 28, 32, 33, 39, 50, 36, 3, 232, 223, 232, 233, 224, 213, 232, 3, 20, 28, 49, 63, 46, 15, 2, 243, 211,
-			199, 208, 205, 180, 194, 245, 33, 29, 27, 35, 41, 35, 27, 15, 242, 218, 224, 244, 237, 209, 218, 6, 31, 18, 13, 44, 56, 41, 41, 54,
-			32, 244, 234, 246, 231, 199, 192, 211, 227, 252, 34, 48, 38, 42, 75, 80, 37, 240, 233, 239, 224, 188, 182, 204, 225, 244, 11, 27, 24, 32,
-			56, 56, 16, 238, 237, 240, 228, 220, 230, 226, 226, 248, 24, 25, 8, 16, 34, 23, 255, 253, 8, 1, 248, 1, 10, 12, 13, 26, 22, 2,
-			245, 245, 246, 243, 239, 228, 228, 242, 6, 9, 16, 27, 42, 34, 29, 28, 23, 244, 202, 173, 168, 174, 190, 219, 235, 250, 21, 85, 125, 114,
-			68, 41, 30, 5, 218, 189, 180, 168, 172, 207, 10, 34, 36, 52, 96, 110, 84, 39, 4, 226, 204, 194, 179, 162, 168, 215, 5, 29, 38, 47,
-			60, 59, 49, 23, 245, 213, 191, 190, 197, 205, 209, 221, 255, 42, 80, 84, 67, 48, 35, 20, 254, 228, 205, 188, 194, 223, 244, 244, 0, 30,
-			51, 52, 51, 56, 48, 31, 14, 250, 217, 192, 201, 211, 218, 216, 229, 255, 27, 43, 44, 39, 45, 56, 50, 13, 235, 227, 231, 220, 196, 191,
-			196, 198, 219, 20, 62, 50, 36, 70, 105, 74, 19, 3, 1, 217, 179, 186, 210, 203, 211, 245, 18, 9, 13, 42, 67, 57, 43, 31, 8, 243,
-			239, 238, 215, 192, 194, 224, 244, 251, 0, 13, 24, 25, 23, 16, 11, 3, 2, 2, 251, 245, 252, 3, 5, 3, 10, 12, 6, 251, 245, 247,
-			253, 2, 0, 2, 22, 46, 43, 16, 5, 14, 21, 14, 252, 238, 217, 210, 219, 233, 229, 217, 228, 9, 47, 46, 25, 15, 18, 14, 251, 229,
-			212, 202, 211, 243, 9, 0, 253, 28, 53, 42, 14, 16, 26, 15, 255, 247, 239, 219, 216, 239, 1, 0, 246, 3, 31, 55, 50, 24, 6, 11,
-			24, 6, 225, 205, 218, 240, 246, 247, 249, 255, 7, 24, 36, 20, 245, 246, 0, 249, 216, 214, 245, 3, 244, 240, 0, 6, 6, 15, 27, 21,
-			7, 19, 37, 19, 233, 214, 224, 232, 221, 218, 235, 6, 20, 43, 60, 56, 34, 27, 36, 36, 9, 239, 224, 220, 213, 212, 210, 224, 4, 42,
-			52, 34, 40, 56, 58, 22, 241, 219, 206, 196, 205, 217, 215, 212, 233, 11, 19, 9, 11, 37, 42, 28, 16, 10, 255, 240, 244, 243, 230, 216,
-			239, 6, 5, 251, 2, 22, 37, 35, 28, 5, 250, 4, 20, 10, 249, 0, 15, 13, 255, 252, 248, 232, 228, 246, 1, 243, 239, 16, 45, 38,
-			13, 0, 253, 241, 236, 232, 224, 213, 233, 0, 4, 5, 28, 46, 40, 29, 23, 18, 253, 235, 221, 201, 196, 224, 254, 14, 26, 41, 49, 40,
-			33, 18, 251, 224, 222, 229, 229, 230, 243, 0, 0, 250, 1, 17, 21, 10, 10, 20, 25, 18, 7, 249, 235, 237, 0, 1, 234, 221, 247, 17,
-			12, 254, 1, 6, 12, 16, 25, 10, 245, 244, 9, 5, 235, 218, 223, 240, 255, 8, 8, 9, 19, 35, 31, 12, 0, 253, 241, 233, 231, 235,
-			247, 7, 23, 16, 255, 251, 8, 21, 24, 16, 255, 246, 255, 13, 7, 243, 228, 227, 236, 246, 250, 249, 246, 0, 7, 11, 14, 24, 26, 28,
-			33, 32, 10, 243, 236, 239, 225, 205, 212, 240, 4, 7, 16, 35, 51, 46, 35, 27, 6, 238, 228, 233, 230, 220, 226, 248, 8, 15, 24, 27,
-			22, 14, 7, 248, 234, 233, 232, 220, 214, 223, 237, 247, 5, 18, 16, 11, 27, 44, 40, 23, 17, 15, 11, 3, 251, 238, 227, 227, 231, 226,
-			227, 250, 23, 41, 47, 52, 58, 54, 36, 13, 241, 210, 199, 208, 214, 207, 214, 253, 36, 49, 46, 46, 36, 21, 13, 0, 223, 195, 202, 219,
-			210, 196, 213, 244, 2, 8, 16, 24, 29, 42, 45, 25, 0, 252, 255, 246, 228, 223, 237, 0, 22, 31, 26, 21, 31, 43, 38, 12, 243, 233,
-			238, 247, 251, 237, 221, 230, 4, 20, 14, 6, 14, 21, 19, 13, 4, 247, 240, 240, 236, 227, 230, 245, 1, 4, 4, 1, 5, 15, 25, 18,
-			1, 248, 252, 252, 243, 228, 219, 224, 238, 253, 5, 17, 33, 50, 52, 37, 15, 0, 246, 234, 221, 207, 200, 210, 238, 7, 15, 20, 34, 48,
-			55, 54, 44, 23, 4, 254, 245, 227, 215, 225, 236, 243, 252, 14, 24, 29, 37, 41, 24, 0, 249, 250, 237, 215, 201, 195, 200, 217, 240, 245,
-			241, 249, 16, 33, 31, 22, 15, 9, 7, 13, 10, 250, 238, 248, 9, 7, 254, 0, 9, 14, 26, 39, 39, 31, 38, 49, 38, 16, 10, 7,
-			246, 228, 226, 223, 217, 227, 249, 254, 242, 242, 1, 5, 253, 244, 240, 236, 238, 249, 1, 253, 248, 0, 8, 3, 248, 249, 3, 7, 6, 6,
-			8, 13, 29, 38, 23, 0, 252, 6, 6, 251, 239, 236, 241, 3, 20, 20, 11, 16, 31, 34, 12, 244, 234, 233, 228, 219, 212, 213, 226, 246,
-			3, 0, 251, 255, 4, 0, 243, 230, 224, 228, 244, 255, 1, 6, 23, 42, 45, 36, 26, 21, 18, 12, 4, 254, 253, 3, 11, 13, 9, 10,
-			18, 22, 17, 11, 8, 5, 0, 251, 247, 244, 247, 252, 255, 0, 5, 10, 13, 12, 3, 245, 231, 226, 223, 217, 215, 217, 220, 223, 230, 236,
-			242, 251, 4, 8, 4, 0, 0, 4, 5, 1, 251, 246, 244, 251, 8, 16, 12, 9, 14, 21, 23, 24, 25, 20, 12, 9, 10, 6, 1, 2,
-			7, 10, 15, 25, 35, 34, 26, 19, 12, 0, 243, 233, 222, 214, 217, 235, 0, 11, 18, 23, 29, 34, 29, 10, 244, 225, 210, 199, 197, 204,
-			217, 230, 244, 3, 22, 40, 49, 50, 44, 36, 26, 17, 8, 249, 234, 228, 235, 245, 0, 6, 16, 33, 57, 65, 50, 32, 26, 21, 1, 236,
-			227, 232, 242, 250, 0, 8, 20, 31, 35, 27, 11, 252, 245, 237, 222, 203, 193, 191, 197, 206, 215, 219, 232, 254, 16, 19, 15, 14, 15, 11,
-			253, 233, 218, 219, 229, 240, 250, 3, 16, 35, 55, 62, 54, 43, 38, 32, 21, 7, 254, 250, 255, 6, 8, 6, 14, 30, 41, 36, 24, 13,
-			6, 254, 236, 214, 199, 197, 204, 211, 211, 211, 217, 228, 232, 223, 215, 0, 185, 0, 4, 0, 1, 0, 147, 0, 22, 1, 238, 7, 186, 9,
-			17, 13, 141, 14, 81, 26, 45, 41, 10, 62, 52, 48, 52, 29, 12, 8, 167, 101, 123, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 147, 0, 22, 1,
-			238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 70, 75, 14, 84, 71, 65, 70, 39, 16, 10, 167, 101, 123, 120, 120, 120, 167, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 70, 61, 12, 76, 63, 58, 63, 35, 15, 9, 167, 101, 123, 120, 120, 120,
-			167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 0, 30, 8, 54, 45, 41, 45, 25, 10, 6, 167, 101,
-			123, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 165, 0, 4, 0, 1, 0, 160, 0, 248, 1, 60, 5, 172, 8, 228, 12, 246, 14, 95, 27, 45, 43, 27, 55,
-			64, 43, 40, 30, 16, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 160, 0, 248, 1, 60, 5, 172, 8, 228, 12, 246, 14, 95, 27,
-			60, 72, 36, 72, 84, 56, 52, 38, 21, 8, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 160, 0, 248, 1, 60, 5, 172, 8, 228, 12,
-			246, 14, 95, 27, 60, 60, 32, 65, 76, 50, 47, 35, 19, 7, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 160, 0, 248, 1, 60, 5,
-			172, 8, 228, 12, 246, 14, 95, 27, 0, 36, 28, 50, 58, 39, 36, 27, 15, 5, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 4, 0,
-			1, 0, 122, 0, 136, 1, 180, 5, 132, 8, 228, 12, 246, 14, 95, 27, 45, 41, 18, 54, 67, 39, 42, 29, 16, 6, 170, 133, 127, 122,
-			124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 122, 0, 136, 1, 180, 5, 132, 8, 228, 12, 246, 14, 95, 27, 97, 72, 24, 72, 88, 52, 55, 38, 21, 8,
-			170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 122, 0, 136, 1, 120, 5, 112, 8, 228, 12, 246, 14, 95, 27, 73, 62, 21, 68, 79, 47,
-			43, 35, 19, 7, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 122, 0, 152, 1, 79, 5, 153, 8, 228, 12, 246, 14, 95, 27, 0, 39,
-			23, 54, 57, 37, 34, 23, 11, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 165, 0, 4, 0, 1, 0, 24, 1, 248, 2, 236, 4, 196, 9,
-			112, 13, 40, 15, 153, 28, 45, 48, 28, 57, 63, 46, 37, 28, 10, 6, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 24, 1, 248, 2,
-			236, 4, 196, 9, 112, 13, 40, 15, 153, 28, 60, 83, 38, 76, 83, 60, 48, 37, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			24, 1, 248, 2, 20, 5, 196, 9, 112, 13, 40, 15, 153, 28, 60, 73, 36, 72, 79, 57, 46, 35, 13, 7, 215, 138, 143, 120, 120, 120,
-			237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 24, 1, 248, 2, 40, 5, 196, 9, 112, 13, 40, 15, 153, 28, 0, 40, 26, 53, 59, 43, 34, 26, 9, 5, 215, 138,
-			143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 132, 0, 67, 1, 240, 5, 92, 8, 228, 12, 96, 14, 100, 25, 45, 41, 18, 63,
-			40, 35, 37, 34, 9, 12, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 67, 1, 240, 5, 92, 8, 228, 12, 96, 14, 100, 25,
-			70, 66, 22, 80, 51, 44, 48, 44, 12, 16, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 67, 1, 240, 5, 112, 8, 228, 12,
-			96, 14, 100, 25, 60, 58, 21, 75, 48, 41, 45, 41, 11, 15, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 67, 1, 240, 5,
-			112, 8, 228, 12, 96, 14, 100, 25, 0, 41, 18, 63, 40, 35, 37, 34, 9, 12, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 210, 0, 5, 0,
-			1, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25, 45, 42, 15, 62, 40, 34, 37, 34, 9, 12, 167, 90, 135, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25, 60, 69, 20, 80, 51, 44, 48, 44, 12, 16,
-			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25, 70, 62, 19, 76, 49, 42,
-			45, 41, 11, 15, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 132, 0, 24, 1, 24, 6, 72, 8, 228, 12, 96, 14, 100, 25, 35, 41,
-			15, 62, 40, 34, 37, 34, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 24, 6, 72, 8, 228, 12, 96, 14,
-			100, 25, 0, 36, 14, 58, 37, 32, 35, 32, 8, 11, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 235, 0, 5, 0, 1, 0, 8, 1, 8, 3,
-			60, 5, 236, 9, 32, 13, 191, 14, 64, 27, 45, 53, 34, 66, 72, 43, 43, 31, 4, 6, 167, 135, 165, 120, 120, 120, 167, 135, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			8, 1, 8, 3, 60, 5, 236, 9, 32, 13, 191, 14, 64, 27, 80, 103, 48, 92, 100, 60, 60, 44, 6, 8, 167, 135, 165, 120, 120, 120,
-			167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 254, 0, 222, 2, 146, 5, 252, 9, 44, 13, 189, 14, 86, 27, 70, 92, 46, 88, 95, 60, 58, 43, 7, 8, 167, 130,
-			168, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 43, 32, 55, 49, 58, 45, 33,
-			10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 28, 28, 44,
-			45, 41, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0, 1, 0, 122, 0, 240, 1, 140, 5, 132, 8, 228, 12,
-			246, 14, 95, 27, 45, 38, 25, 54, 60, 37, 39, 28, 15, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 122, 0, 240, 1, 140, 5,
-			132, 8, 228, 12, 246, 14, 95, 27, 75, 74, 36, 76, 84, 52, 55, 38, 21, 8, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 125, 0,
-			218, 1, 214, 5, 191, 8, 236, 12, 247, 14, 76, 27, 60, 72, 31, 76, 82, 53, 57, 38, 21, 8, 170, 129, 127, 122, 124, 127, 197, 131,
-			127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			1, 0, 152, 0, 11, 1, 112, 8, 212, 10, 52, 13, 0, 15, 160, 26, 70, 40, 4, 64, 57, 46, 58, 28, 13, 6, 167, 99, 120, 120,
-			120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 152, 0, 11, 1, 112, 8, 212, 10, 52, 13, 0, 15, 160, 26, 0, 34, 3, 59, 53, 43, 54, 26, 12, 6,
-			167, 99, 120, 120, 120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0,
-			0, 0, 0, 0, 0, 250, 0, 0, 40, 0, 7, 0, 1, 0, 24, 1, 232, 2, 140, 5, 196, 9, 112, 13, 40, 15, 153, 28, 40, 50,
-			33, 63, 63, 48, 38, 29, 10, 6, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 24, 1, 232, 2, 140, 5, 196, 9, 112, 13, 40, 15,
-			153, 28, 35, 89, 44, 84, 84, 64, 51, 39, 14, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 245, 0, 176, 2, 104, 5, 160, 9,
-			112, 13, 40, 15, 153, 28, 40, 81, 41, 79, 79, 53, 49, 38, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 195, 0, 56, 2,
-			122, 5, 68, 9, 112, 13, 30, 15, 83, 27, 50, 73, 33, 76, 65, 46, 53, 38, 13, 7, 201, 130, 147, 121, 121, 127, 237, 165, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			144, 0, 173, 1, 140, 5, 232, 8, 55, 13, 20, 15, 13, 26, 60, 55, 21, 69, 49, 38, 39, 32, 12, 7, 188, 123, 151, 122, 122, 135,
-			237, 165, 151, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 1, 0, 147, 0, 64, 1, 20, 5, 34, 9, 40, 13, 15, 15, 105, 25, 35, 37, 10, 61, 46, 28, 25, 18, 12, 7, 181, 109,
-			137, 123, 123, 139, 187, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8,
-			87, 182, 0, 250, 0, 0, 1, 0, 147, 0, 64, 1, 20, 5, 34, 9, 40, 13, 15, 15, 105, 25, 0, 29, 9, 54, 41, 25, 22, 16,
-			11, 6, 181, 109, 137, 123, 123, 139, 187, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65,
-			0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 155, 0, 4, 0, 1, 0, 133, 0, 144, 1, 64, 6, 116, 9, 196, 12, 151, 14, 39, 25,
-			50, 40, 23, 56, 50, 37, 41, 32, 12, 10, 177, 127, 132, 124, 123, 138, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 133, 0, 144, 1, 64, 6, 116, 9, 196, 12,
-			151, 14, 39, 25, 70, 52, 26, 64, 57, 43, 46, 37, 13, 11, 177, 127, 132, 124, 123, 138, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 133, 0, 144, 1, 64, 6,
-			116, 9, 196, 12, 151, 14, 39, 25, 35, 52, 26, 64, 57, 43, 46, 37, 13, 11, 177, 127, 132, 124, 123, 138, 187, 126, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 133, 0,
-			144, 1, 64, 6, 116, 9, 196, 12, 151, 14, 39, 25, 0, 31, 20, 50, 44, 33, 36, 28, 10, 9, 177, 127, 132, 124, 123, 138, 187, 126,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			95, 0, 4, 0, 1, 0, 135, 0, 151, 1, 220, 5, 96, 9, 188, 12, 136, 14, 153, 24, 45, 43, 21, 59, 56, 46, 37, 28, 10, 11,
-			178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 135, 0, 151, 1, 220, 5, 96, 9, 188, 12, 136, 14, 153, 24, 80, 71, 28, 76, 72, 60,
-			48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 135, 0, 202, 1, 233, 5, 179, 9, 188, 12, 136, 14, 153, 24, 50, 76,
-			33, 81, 72, 60, 48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 135, 0, 202, 1, 233, 5, 179, 9, 188, 12, 136, 14,
-			153, 24, 0, 76, 33, 81, 72, 60, 48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 4, 0, 1, 0, 168, 0, 232, 1,
-			152, 3, 136, 9, 244, 11, 141, 14, 32, 27, 45, 55, 28, 58, 65, 39, 32, 18, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			168, 0, 232, 1, 152, 3, 136, 9, 244, 11, 141, 14, 32, 27, 90, 109, 42, 80, 92, 59, 48, 27, 20, 8, 165, 135, 150, 120, 120, 120,
-			165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 171, 0, 160, 1, 211, 2, 101, 9, 239, 12, 42, 15, 89, 27, 60, 57, 28, 60, 52, 27, 22, 14, 11, 8, 196, 108,
-			123, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 172, 0, 160, 1, 188, 2, 96, 9, 12, 13, 60, 15, 96, 27, 0, 36, 24, 48, 40, 24, 20, 12,
-			10, 8, 200, 105, 120, 120, 120, 120, 200, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 155, 0, 5, 0, 1, 0, 136, 0, 232, 1, 64, 6, 140, 10, 232, 13, 64, 16, 95, 27,
-			45, 44, 24, 58, 58, 43, 33, 27, 16, 6, 170, 152, 153, 122, 124, 128, 197, 152, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 136, 0, 232, 1, 64, 6, 140, 10, 232, 13,
-			64, 16, 95, 27, 60, 67, 30, 72, 72, 53, 41, 34, 20, 8, 170, 152, 153, 122, 124, 128, 197, 152, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 232, 1, 64, 6,
-			140, 10, 232, 13, 64, 16, 95, 27, 40, 60, 28, 68, 68, 50, 39, 32, 19, 7, 170, 152, 153, 122, 124, 128, 197, 152, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 160, 0,
-			136, 1, 12, 8, 60, 10, 127, 13, 159, 14, 16, 28, 50, 46, 31, 55, 51, 54, 33, 36, 10, 7, 168, 109, 141, 120, 120, 120, 200, 109,
-			141, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 160, 0, 136, 1, 12, 8, 60, 10, 127, 13, 159, 14, 16, 28, 0, 32, 26, 46, 43, 45, 27, 30, 8, 6, 168, 109, 141, 120,
-			120, 120, 200, 109, 141, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 90, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 35, 13, 36, 20, 38, 12,
-			16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 25, 13,
-			36, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14,
-			32, 27, 30, 5, 22, 11, 22, 8, 11, 11, 4, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 196, 0, 114, 1, 84, 4, 252, 8,
-			88, 12, 91, 14, 32, 27, 0, 3, 19, 9, 19, 7, 9, 9, 3, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 90, 0, 4, 0, 5, 0,
-			236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 35, 17, 40, 41, 25, 16, 13, 16, 8, 0, 132, 60, 90, 120, 120, 120,
-			42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250,
-			0, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 25, 14, 36, 37, 22, 14, 12, 14, 8, 0, 132, 60,
-			90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59,
-			105, 182, 200, 250, 21, 8, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 30, 5, 22, 22, 20, 12, 10, 12,
-			7, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165,
-			0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 0, 3, 16, 16,
-			15, 9, 8, 9, 5, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 100, 0, 4, 0, 5, 0, 204, 0, 120, 1, 92, 8, 124, 11, 172, 13,
-			160, 15, 0, 27, 30, 19, 41, 45, 19, 19, 15, 15, 9, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 204, 0, 120, 1, 192, 8,
-			28, 12, 172, 13, 160, 15, 0, 27, 25, 16, 39, 39, 18, 18, 15, 14, 9, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 5, 0, 204, 0,
-			120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 45, 4, 21, 21, 15, 15, 12, 12, 7, 0, 135, 60, 90, 120, 120, 120, 45, 135,
-			105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			37, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 0, 4, 21, 21, 15, 15, 12, 12, 7, 0, 135, 60, 90, 120,
-			120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 95, 0, 4, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 40, 17, 44, 14, 19, 10,
-			10, 13, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23, 25, 17,
-			44, 14, 19, 10, 10, 13, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 232, 0, 13, 2, 236, 9, 44, 11, 76, 14, 23, 17,
-			224, 23, 30, 5, 25, 6, 15, 8, 8, 10, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 232, 0, 13, 2, 236, 9, 44, 11,
-			76, 14, 23, 17, 224, 23, 0, 4, 22, 5, 13, 7, 7, 9, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 97, 9, 23, 0, 0, 255,
-			255, 254, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 255, 255, 254, 254, 254, 255, 255, 254, 255, 255, 254, 255, 0, 255, 255, 254, 255, 0,
-			0, 255, 255, 255, 0, 255, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 254, 255, 0, 0, 0, 0, 0, 0, 0, 7, 40, 43,
-			3, 236, 248, 2, 254, 9, 28, 28, 15, 6, 0, 251, 1, 17, 25, 17, 16, 22, 13, 9, 24, 30, 25, 29, 91, 77, 249, 254, 0, 245,
-			246, 42, 53, 24, 241, 196, 216, 250, 239, 246, 4, 245, 195, 162, 180, 212, 233, 249, 235, 204, 175, 172, 165, 194, 235, 223, 215, 169, 135, 191,
-			226, 235, 0, 249, 242, 239, 213, 191, 2, 90, 36, 246, 254, 12, 72, 57, 93, 127, 43, 26, 20, 11, 36, 68, 78, 30, 14, 239, 229, 46,
-			32, 240, 14, 37, 231, 164, 187, 7, 26, 223, 167, 175, 221, 208, 181, 182, 227, 241, 173, 188, 230, 216, 197, 211, 247, 213, 230, 240, 192, 228,
-			1, 8, 26, 5, 224, 3, 32, 24, 15, 20, 16, 23, 0, 6, 20, 4, 32, 64, 49, 40, 78, 49, 13, 11, 29, 50, 28, 255, 241, 20,
-			36, 254, 207, 251, 69, 29, 220, 197, 244, 18, 234, 202, 238, 44, 6, 161, 164, 1, 39, 17, 202, 184, 9, 25, 210, 178, 243, 56, 29, 215,
-			166, 250, 83, 246, 197, 14, 80, 17, 190, 216, 15, 58, 55, 31, 6, 243, 241, 251, 33, 38, 249, 24, 40, 233, 183, 219, 29, 50, 31, 245,
-			252, 24, 11, 222, 198, 250, 61, 38, 251, 241, 5, 18, 254, 247, 62, 62, 44, 4, 207, 214, 245, 33, 62, 32, 250, 252, 226, 202, 207, 241,
-			26, 47, 29, 187, 175, 228, 242, 236, 243, 11, 11, 228, 208, 180, 194, 235, 46, 31, 222, 220, 242, 250, 202, 215, 2, 47, 23, 216, 229, 253,
-			236, 244, 247, 242, 26, 33, 229, 193, 246, 15, 3, 5, 5, 17, 253, 236, 220, 238, 36, 23, 251, 202, 209, 11, 23, 248, 242, 37, 8, 193,
-			208, 245, 10, 31, 2, 240, 1, 254, 228, 192, 221, 16, 38, 27, 244, 253, 244, 209, 223, 0, 40, 39, 241, 239, 2, 10, 243, 227, 12, 44,
-			40, 19, 237, 230, 243, 253, 8, 0, 49, 63, 19, 249, 208, 238, 22, 21, 4, 254, 35, 13, 246, 0, 248, 251, 0, 10, 23, 32, 29, 254,
-			252, 243, 240, 16, 32, 13, 19, 38, 11, 246, 0, 251, 251, 7, 29, 41, 34, 28, 232, 231, 10, 9, 254, 4, 47, 48, 12, 226, 245, 27,
-			2, 230, 232, 35, 44, 241, 227, 247, 14, 248, 205, 235, 23, 21, 3, 3, 252, 235, 199, 213, 3, 25, 16, 5, 253, 4, 10, 232, 217, 248,
-			39, 18, 226, 248, 32, 13, 222, 197, 251, 44, 248, 236, 45, 45, 0, 220, 216, 251, 3, 4, 7, 22, 33, 252, 216, 243, 255, 255, 255, 245,
-			4, 243, 245, 1, 4, 225, 212, 241, 241, 253, 3, 2, 229, 233, 254, 227, 234, 244, 238, 236, 6, 7, 251, 237, 242, 247, 234, 247, 14, 2,
-			0, 248, 241, 238, 235, 255, 8, 17, 255, 248, 14, 18, 240, 207, 7, 63, 27, 234, 242, 20, 11, 224, 217, 1, 53, 20, 236, 244, 12, 26,
-			240, 242, 254, 21, 4, 221, 239, 29, 14, 222, 209, 7, 18, 242, 229, 230, 242, 232, 226, 254, 19, 9, 240, 222, 243, 2, 19, 232, 219, 17,
-			25, 0, 238, 29, 24, 242, 237, 255, 7, 245, 254, 23, 19, 29, 2, 221, 235, 1, 15, 2, 7, 13, 16, 242, 221, 229, 245, 5, 3, 231,
-			248, 26, 8, 206, 210, 59, 23, 203, 217, 12, 16, 204, 226, 12, 14, 241, 247, 247, 251, 246, 203, 236, 10, 28, 3, 249, 10, 38, 14, 225,
-			250, 18, 5, 235, 11, 35, 24, 5, 8, 4, 246, 1, 237, 240, 245, 239, 0, 17, 4, 231, 11, 6, 211, 223, 252, 19, 249, 242, 247, 8,
-			0, 225, 237, 248, 254, 252, 10, 10, 2, 10, 237, 243, 22, 21, 2, 4, 1, 228, 7, 21, 246, 237, 25, 31, 246, 246, 252, 0, 247, 254,
-			4, 32, 32, 15, 18, 254, 255, 231, 240, 252, 27, 21, 247, 252, 250, 14, 2, 253, 3, 250, 238, 244, 3, 254, 0, 9, 31, 6, 233, 243,
-			238, 238, 222, 245, 24, 16, 3, 8, 17, 239, 217, 234, 234, 211, 221, 15, 48, 24, 254, 251, 251, 2, 9, 236, 242, 6, 3, 223, 242, 29,
-			8, 244, 229, 13, 251, 218, 219, 241, 0, 231, 0, 42, 57, 49, 28, 29, 14, 6, 3, 12, 21, 23, 19, 35, 38, 12, 22, 41, 18, 238,
-			233, 1, 237, 222, 246, 255, 5, 1, 249, 234, 250, 247, 219, 210, 234, 5, 0, 244, 243, 11, 23, 4, 253, 4, 0, 237, 242, 13, 34, 7,
-			0, 21, 21, 11, 2, 251, 246, 3, 11, 18, 15, 1, 2, 2, 5, 242, 232, 227, 240, 255, 249, 230, 222, 242, 251, 235, 228, 5, 13, 246,
-			224, 230, 243, 244, 235, 237, 243, 252, 6, 254, 4, 250, 239, 238, 218, 213, 242, 247, 234, 248, 3, 247, 221, 231, 240, 221, 202, 201, 206, 223,
-			234, 249, 251, 246, 225, 225, 228, 212, 215, 238, 0, 250, 238, 245, 12, 252, 226, 228, 242, 241, 226, 229, 252, 4, 1, 250, 0, 4, 10, 2,
-			252, 0, 0, 253, 231, 245, 21, 15, 246, 242, 0, 2, 241, 27, 52, 7, 235, 0, 16, 216, 212, 232, 221, 218, 242, 3, 2, 9, 4, 234,
-			232, 234, 240, 235, 228, 235, 228, 238, 0, 251, 4, 17, 17, 13, 244, 222, 226, 237, 246, 6, 29, 58, 54, 33, 11, 249, 0, 236, 224, 252,
-			18, 29, 24, 27, 45, 23, 237, 236, 237, 226, 211, 215, 229, 239, 248, 8, 28, 16, 10, 5, 252, 206, 179, 219, 229, 227, 18, 45, 36, 18,
-			25, 11, 236, 227, 223, 231, 9, 20, 7, 13, 49, 29, 246, 232, 225, 213, 224, 237, 229, 5, 28, 16, 253, 252, 19, 11, 252, 246, 219, 226,
-			0, 254, 250, 28, 57, 42, 10, 250, 248, 229, 238, 3, 10, 50, 49, 32, 14, 241, 229, 232, 221, 216, 229, 12, 21, 254, 4, 16, 16, 246,
-			219, 226, 241, 252, 242, 0, 23, 28, 0, 223, 242, 10, 7, 253, 254, 4, 246, 225, 242, 6, 17, 18, 19, 16, 1, 7, 10, 251, 0, 20,
-			30, 32, 35, 33, 1, 10, 23, 14, 26, 11, 243, 242, 239, 240, 239, 11, 18, 8, 19, 26, 19, 243, 231, 228, 204, 203, 195, 225, 24, 39,
-			35, 24, 28, 13, 228, 198, 197, 222, 243, 237, 244, 34, 76, 71, 38, 43, 42, 17, 237, 235, 6, 24, 6, 246, 23, 56, 42, 4, 4, 20,
-			246, 225, 225, 226, 0, 4, 247, 248, 248, 237, 219, 241, 248, 227, 211, 230, 251, 226, 245, 22, 31, 36, 19, 254, 1, 12, 238, 200, 233, 20,
-			15, 26, 49, 42, 27, 45, 7, 216, 235, 5, 243, 229, 32, 45, 10, 16, 25, 21, 6, 228, 221, 241, 220, 186, 212, 7, 2, 247, 13, 48,
-			27, 220, 191, 183, 191, 189, 193, 6, 68, 55, 10, 0, 2, 229, 194, 194, 223, 252, 13, 24, 45, 50, 41, 31, 27, 17, 248, 228, 229, 219,
-			222, 7, 28, 27, 26, 30, 26, 8, 231, 207, 198, 204, 220, 222, 0, 37, 41, 40, 40, 18, 238, 243, 244, 225, 221, 230, 247, 239, 236, 12,
-			35, 27, 10, 4, 250, 235, 239, 247, 242, 243, 14, 16, 6, 250, 235, 242, 249, 227, 202, 232, 3, 240, 240, 4, 16, 22, 251, 222, 231, 1,
-			10, 0, 1, 33, 48, 27, 253, 227, 237, 3, 240, 226, 7, 27, 15, 11, 25, 31, 15, 22, 252, 234, 245, 241, 247, 238, 218, 228, 4, 6,
-			222, 247, 11, 249, 232, 228, 0, 1, 227, 224, 249, 5, 6, 240, 222, 216, 224, 230, 225, 248, 23, 30, 43, 43, 16, 9, 7, 0, 230, 223,
-			249, 29, 33, 25, 30, 23, 23, 16, 242, 237, 9, 12, 243, 230, 244, 243, 238, 211, 205, 239, 7, 5, 244, 3, 9, 254, 226, 219, 241, 241,
-			235, 236, 250, 4, 9, 249, 222, 5, 33, 27, 10, 251, 3, 6, 255, 233, 223, 228, 220, 231, 12, 25, 22, 30, 41, 27, 252, 229, 234, 229,
-			220, 228, 241, 250, 246, 7, 29, 32, 12, 232, 224, 213, 212, 230, 229, 240, 239, 8, 21, 19, 28, 26, 13, 236, 218, 241, 250, 4, 12, 5,
-			29, 46, 25, 254, 235, 236, 244, 235, 228, 217, 233, 16, 21, 242, 243, 13, 22, 0, 254, 0, 249, 254, 247, 243, 252, 255, 7, 23, 46, 37,
-			13, 16, 247, 228, 222, 237, 10, 27, 23, 24, 45, 51, 26, 241, 236, 227, 211, 229, 0, 3, 3, 14, 19, 13, 21, 31, 0, 206, 202, 219,
-			242, 248, 220, 245, 39, 28, 3, 252, 253, 239, 210, 199, 215, 233, 26, 55, 48, 42, 38, 30, 9, 227, 212, 214, 221, 247, 8, 11, 28, 48,
-			45, 25, 253, 250, 245, 218, 197, 202, 236, 15, 15, 30, 33, 9, 7, 250, 217, 206, 214, 226, 255, 18, 22, 47, 74, 46, 8, 244, 236, 234,
-			232, 250, 9, 39, 90, 87, 52, 25, 12, 9, 231, 190, 199, 224, 244, 22, 30, 40, 45, 21, 239, 218, 199, 190, 226, 22, 44, 21, 47, 60,
-			19, 223, 204, 233, 235, 220, 220, 3, 42, 50, 30, 15, 3, 239, 232, 217, 214, 239, 14, 29, 32, 39, 42, 47, 25, 245, 226, 234, 241, 244,
-			7, 13, 14, 9, 21, 6, 234, 221, 213, 231, 245, 252, 251, 243, 10, 11, 251, 242, 253, 239, 211, 206, 230, 244, 241, 0, 16, 27, 29, 13,
-			235, 222, 208, 206, 244, 10, 4, 1, 29, 43, 24, 253, 238, 239, 235, 237, 235, 243, 13, 28, 21, 6, 15, 20, 6, 244, 225, 222, 245, 6,
-			2, 8, 25, 39, 33, 2, 227, 225, 246, 212, 186, 230, 21, 28, 22, 31, 33, 255, 229, 215, 199, 223, 251, 252, 18, 61, 59, 38, 17, 7,
-			250, 231, 222, 218, 232, 249, 10, 38, 57, 35, 5, 249, 239, 227, 213, 221, 5, 14, 3, 19, 36, 43, 36, 7, 235, 214, 218, 222, 211, 212,
-			253, 29, 25, 16, 1, 232, 212, 203, 213, 233, 250, 7, 29, 47, 18, 4, 3, 245, 224, 208, 241, 17, 23, 0, 248, 14, 27, 23, 242, 242,
-			255, 249, 250, 252, 253, 2, 7, 0, 247, 239, 223, 205, 231, 254, 245, 254, 250, 7, 249, 220, 237, 18, 254, 222, 232, 2, 16, 247, 230, 246,
-			9, 14, 249, 233, 246, 8, 15, 9, 253, 255, 18, 15, 252, 247, 0, 248, 233, 241, 240, 251, 27, 46, 43, 16, 249, 236, 221, 218, 220, 238,
-			8, 17, 21, 251, 238, 1, 252, 225, 207, 221, 252, 9, 9, 10, 18, 26, 7, 227, 221, 235, 233, 238, 11, 27, 40, 42, 30, 18, 241, 217,
-			218, 217, 230, 2, 10, 33, 56, 47, 255, 226, 213, 204, 210, 212, 231, 17, 38, 26, 7, 250, 0, 245, 210, 199, 216, 234, 253, 12, 22, 21,
-			7, 245, 231, 211, 218, 249, 7, 11, 24, 24, 17, 10, 240, 229, 226, 235, 4, 14, 34, 40, 23, 17, 1, 232, 228, 244, 252, 13, 31, 29,
-			28, 5, 247, 244, 211, 218, 250, 3, 2, 18, 12, 249, 242, 245, 242, 219, 226, 255, 14, 17, 14, 6, 2, 251, 244, 238, 236, 253, 8, 18,
-			37, 38, 13, 226, 231, 254, 249, 255, 19, 35, 37, 26, 9, 0, 236, 212, 226, 249, 251, 252, 31, 64, 40, 245, 240, 241, 214, 200, 227, 21,
-			40, 18, 22, 32, 5, 246, 238, 232, 242, 243, 252, 11, 16, 12, 12, 20, 3, 236, 240, 3, 16, 12, 15, 18, 11, 250, 247, 248, 238, 240,
-			250, 254, 11, 16, 33, 35, 9, 236, 225, 239, 10, 0, 233, 5, 27, 10, 245, 239, 254, 8, 3, 2, 14, 1, 8, 15, 231, 217, 240, 251,
-			11, 22, 2, 11, 22, 19, 250, 232, 1, 17, 0, 247, 249, 254, 1, 248, 232, 240, 7, 30, 21, 253, 251, 235, 226, 245, 253, 243, 253, 28,
-			36, 20, 5, 0, 7, 1, 234, 220, 228, 245, 7, 12, 4, 245, 247, 254, 243, 224, 230, 238, 246, 10, 7, 249, 237, 251, 10, 6, 250, 255,
-			17, 21, 4, 240, 250, 21, 16, 253, 241, 243, 11, 15, 255, 254, 0, 243, 231, 249, 13, 7, 4, 7, 1, 250, 230, 223, 251, 3, 254, 12,
-			34, 36, 15, 252, 243, 245, 239, 244, 255, 15, 20, 26, 31, 7, 243, 222, 220, 236, 243, 0, 21, 20, 8, 7, 1, 241, 225, 239, 4, 7,
-			250, 252, 19, 13, 248, 240, 240, 241, 247, 252, 252, 252, 11, 20, 8, 250, 254, 5, 2, 247, 240, 5, 35, 19, 0, 9, 17, 18, 12, 3,
-			0, 253, 239, 239, 3, 3, 243, 252, 16, 8, 237, 233, 237, 232, 229, 227, 239, 20, 20, 253, 248, 242, 228, 240, 249, 246, 4, 28, 33, 11,
-			250, 240, 230, 239, 244, 250, 17, 33, 25, 14, 2, 239, 230, 238, 245, 250, 10, 42, 51, 18, 244, 229, 238, 230, 216, 231, 6, 32, 28, 2,
-			235, 228, 218, 192, 183, 222, 15, 37, 26, 5, 244, 237, 226, 225, 248, 8, 21, 42, 56, 41, 10, 242, 230, 231, 242, 249, 17, 50, 52, 18,
-			248, 244, 233, 225, 228, 238, 6, 43, 45, 22, 6, 248, 231, 219, 213, 225, 0, 31, 39, 16, 245, 231, 217, 210, 225, 253, 25, 45, 31, 4,
-			236, 228, 239, 239, 240, 249, 19, 37, 22, 4, 245, 241, 249, 245, 243, 5, 21, 16, 2, 252, 250, 255, 0, 241, 227, 230, 251, 251, 251, 11,
-			9, 252, 231, 219, 228, 240, 252, 7, 8, 6, 8, 4, 253, 242, 234, 241, 15, 29, 22, 12, 7, 0, 255, 247, 234, 248, 12, 22, 14, 0,
-			0, 0, 90, 0, 2, 0, 37, 0, 184, 0, 24, 2, 112, 5, 72, 8, 0, 10, 188, 12, 136, 19, 90, 2, 9, 16, 4, 6, 8, 3,
-			3, 3, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0, 184, 0, 24, 2, 112, 5, 248, 7, 236, 9, 188, 12, 131, 24, 0, 0, 7, 2,
-			3, 8, 6, 2, 1, 1, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29,
-			31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89,
-			91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149,
-			151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, 205, 207, 209,
-			211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 254, 254, 253, 252, 251, 250, 249, 247,
-			246, 245, 244, 243, 241, 240, 239, 237, 236, 234, 233, 231, 230, 228, 226, 225, 223, 221, 220, 218, 216, 214, 212, 210, 209, 207, 205, 203, 201, 199,
-			197, 195, 193, 191, 189, 186, 184, 182, 180, 178, 176, 174, 171, 169, 167, 165, 162, 160, 158, 156, 153, 151, 149, 147, 144, 142, 140, 137, 135, 133,
-			131, 128, 126, 124, 121, 119, 117, 114, 112, 110, 108, 105, 103, 101, 99, 96, 94, 92, 90, 88, 85, 83, 81, 79, 77, 75, 73, 70, 68, 66,
-			64, 62, 59, 57, 55, 53, 51, 49, 46, 44, 42, 40, 38, 35, 33, 31, 29, 27, 25, 23, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2,
-			0, 2, 4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 37, 38,
-			39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 62, 63, 64, 66, 68, 69,
-			71, 73, 75, 77, 79, 81, 83, 85, 88, 90, 93, 95, 98, 101, 104, 107, 110, 114, 117, 121, 124, 128, 132, 136, 140, 145, 149, 154, 159, 163,
-			166, 170, 174, 177, 181, 184, 188, 192, 195, 199, 202, 206, 209, 213, 216, 219, 223, 226, 229, 232, 235, 238, 241, 243, 245, 247, 249, 250, 252, 253,
-			254, 255, 255, 255, 255, 255, 255, 255, 254, 251, 248, 245, 242, 238, 234, 230, 227, 222, 218, 214, 210, 205, 201, 196, 191, 187, 182, 177, 172, 167,
-			162, 157, 152, 147, 142, 137, 132, 127, 122, 117, 112, 107, 102, 97, 92, 87, 82, 78, 73, 69, 64, 60, 56, 51, 47, 43, 40, 36, 32, 29,
-			26, 23, 20, 17, 14, 12, 9, 7, 5, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 5, 7, 10, 12, 15, 19,
-			23, 27, 31, 36, 41, 46, 52, 58, 65, 72, 79, 86, 94, 103, 112, 117, 122, 127, 132, 137, 142, 147, 152, 157, 162, 167, 172, 177, 182, 187,
-			191, 196, 201, 205, 210, 214, 218, 222, 227, 230, 234, 238, 242, 245, 248, 251, 127, 123, 118, 114, 110, 105, 101, 97, 94, 90, 86, 82, 79, 75,
-			72, 68, 65, 62, 59, 56, 53, 50, 47, 44, 42, 39, 37, 34, 32, 30, 28, 26, 24, 22, 20, 19, 17, 16, 14, 13, 12, 11, 10, 9,
-			8, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 18, 20, 21, 23, 25,
-			27, 30, 32, 34, 37, 40, 42, 45, 48, 51, 55, 58, 61, 65, 68, 72, 76, 80, 84, 88, 93, 97, 101, 105, 109, 113, 117, 122, 126, 130,
-			134, 139, 143, 148, 152, 157, 162, 166, 171, 176, 181, 186, 191, 196, 201, 206, 211, 217, 222, 227, 233, 238, 243, 249, 152, 152, 152, 152, 152, 152,
-			152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
-			152, 152, 152, 152, 152, 152, 152, 152, 152, 151, 143, 136, 128, 121, 114, 108, 101, 95, 90, 85, 81, 77, 73, 70, 68, 66, 65, 65, 66, 67,
-			69, 72, 76, 81, 86, 93, 101, 109, 119, 130, 142, 152, 152, 152, 152, 151, 151, 151, 151, 150, 150, 150, 150, 149, 149, 149, 149, 148, 148, 148,
-			148, 147, 147, 147, 147, 146, 146, 146, 146, 145, 145, 145, 145, 144, 144, 144, 144, 143, 143, 143, 143, 142, 142, 142, 142, 141, 141, 141, 141, 140,
-			140, 140, 254, 251, 248, 244, 241, 237, 233, 229, 225, 221, 217, 213, 208, 204, 199, 195, 190, 185, 180, 176, 171, 166, 161, 156, 151, 146, 141, 136,
-			131, 126, 121, 117, 112, 107, 102, 97, 93, 88, 83, 79, 74, 70, 66, 61, 57, 53, 49, 45, 42, 38, 35, 31, 28, 25, 22, 19, 17, 14,
-			12, 10, 8, 6, 5, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 5, 7, 9, 12, 14, 17, 21, 24, 27, 29, 32, 34,
-			37, 39, 42, 45, 47, 49, 52, 54, 57, 59, 61, 63, 65, 67, 69, 71, 73, 74, 76, 77, 78, 80, 80, 81, 82, 82, 82, 83, 82, 82,
-			82, 81, 80, 79, 77, 76, 74, 71, 69, 66, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-			127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
-			127, 127, 124, 120, 116, 112, 108, 104, 101, 97, 94, 91, 88, 86, 84, 82, 80, 78, 77, 76, 75, 75, 75, 76, 76, 78, 79, 81, 84, 86,
-			90, 94, 98, 103, 108, 114, 120, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 175, 0, 4, 0, 1, 0, 153, 0, 128, 1, 224, 2,
-			200, 10, 148, 12, 176, 14, 244, 26, 45, 54, 16, 64, 49, 33, 40, 27, 15, 6, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 153, 0,
-			128, 1, 224, 2, 200, 10, 148, 12, 176, 14, 244, 26, 70, 91, 22, 84, 64, 44, 52, 36, 20, 9, 165, 126, 145, 120, 120, 120, 165, 115,
-			130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 153, 0, 128, 1, 224, 2, 200, 10, 148, 12, 176, 14, 244, 26, 60, 91, 22, 84, 64, 44, 52, 36, 20, 9, 165, 126, 145, 120,
-			120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0,
-			240, 250, 209, 182, 1, 0, 153, 0, 128, 1, 224, 2, 200, 10, 148, 12, 176, 14, 244, 26, 0, 91, 22, 84, 64, 44, 52, 36, 20, 9,
-			165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 160, 0, 4, 0, 1, 0, 130, 0, 48, 1, 24, 6, 36, 9, 12, 13, 0, 15, 151, 25, 45, 40,
-			19, 58, 43, 34, 40, 30, 10, 11, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 130, 0, 48, 1, 24, 6, 36, 9, 12, 13, 0, 15,
-			151, 25, 70, 69, 25, 76, 56, 45, 52, 40, 13, 15, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 130, 0, 48, 1, 24, 6, 36, 9,
-			12, 13, 0, 15, 151, 25, 45, 56, 23, 68, 50, 40, 46, 36, 11, 13, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250, 209, 182, 1, 0, 130, 0, 48, 1,
-			24, 6, 36, 9, 12, 13, 0, 15, 151, 25, 0, 69, 25, 76, 56, 45, 52, 40, 13, 15, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0,
-			4, 0, 1, 0, 112, 0, 244, 1, 132, 5, 36, 9, 188, 12, 116, 14, 96, 27, 45, 41, 27, 54, 66, 33, 39, 30, 15, 7, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0,
-			0, 0, 1, 250, 0, 0, 3, 0, 116, 0, 244, 1, 132, 5, 16, 9, 188, 12, 116, 14, 96, 27, 80, 67, 34, 66, 88, 44, 55, 40,
-			21, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 244, 1, 132, 5, 16, 9, 188, 12, 116, 14, 96, 27, 60, 54, 30, 59,
-			79, 39, 49, 36, 19, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 244, 1, 132, 5, 36, 9, 188, 12, 116, 14, 96, 27,
-			0, 32, 24, 47, 58, 25, 36, 26, 13, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0, 180, 0, 160, 2, 180, 5,
-			126, 9, 233, 12, 116, 14, 176, 27, 40, 41, 33, 52, 68, 44, 39, 31, 13, 3, 174, 157, 145, 120, 120, 120, 200, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 180, 0,
-			160, 2, 180, 5, 126, 9, 233, 12, 116, 14, 176, 27, 50, 92, 50, 78, 101, 65, 58, 47, 20, 4, 174, 157, 145, 120, 120, 120, 200, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 180, 0, 160, 2, 180, 5, 126, 9, 233, 12, 116, 14, 176, 27, 50, 69, 44, 68, 88, 57, 50, 41, 17, 4, 174, 157, 145, 120,
-			120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0,
-			240, 250, 209, 182, 1, 0, 174, 0, 104, 2, 63, 6, 195, 9, 22, 13, 128, 14, 204, 27, 60, 47, 36, 57, 68, 50, 43, 34, 14, 4,
-			172, 140, 150, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 160, 0, 189, 1, 132, 7, 102, 10, 127, 13, 159, 14, 16, 28, 30, 49, 34, 59, 55, 59,
-			47, 34, 11, 7, 168, 99, 162, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0, 156, 0, 144, 1, 208, 7, 140, 10, 152, 13, 166, 14, 32, 28, 0, 33,
-			29, 51, 45, 54, 42, 30, 9, 7, 167, 90, 165, 120, 120, 120, 122, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 76, 8, 87, 182, 53, 250, 0, 0, 250, 0, 5, 0, 1, 0, 135, 0, 88, 1, 220, 5, 132, 8,
-			128, 12, 128, 14, 153, 24, 45, 38, 11, 58, 50, 44, 41, 29, 9, 10, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 135, 0, 88, 1,
-			220, 5, 132, 8, 128, 12, 128, 14, 153, 24, 80, 77, 16, 84, 72, 64, 58, 41, 13, 14, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			141, 0, 86, 1, 132, 6, 29, 9, 192, 12, 170, 14, 158, 25, 80, 50, 14, 68, 54, 50, 47, 35, 11, 11, 175, 118, 139, 122, 122, 134,
-			187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250,
-			209, 182, 1, 0, 158, 0, 80, 1, 12, 8, 130, 10, 86, 13, 13, 15, 255, 27, 45, 31, 15, 53, 30, 37, 37, 31, 9, 8, 168, 109,
-			155, 120, 120, 120, 177, 109, 152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 72, 1, 112, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 18, 55, 33, 36, 37, 29,
-			8, 7, 167, 105, 155, 120, 120, 120, 122, 105, 140, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 0, 0, 6, 0, 1, 0, 224, 0, 8, 3, 216, 4, 236, 9, 8, 12, 116, 14, 224, 27,
-			46, 69, 26, 64, 75, 42, 45, 28, 10, 5, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 224, 0, 8, 3, 216, 4, 236, 9, 8, 12,
-			116, 14, 224, 27, 60, 111, 34, 82, 95, 54, 57, 36, 13, 7, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 208, 2, 16, 4,
-			96, 9, 8, 12, 116, 14, 224, 27, 70, 100, 32, 77, 64, 51, 54, 34, 12, 6, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250, 209, 182, 1, 0, 240, 0,
-			24, 2, 92, 3, 56, 9, 48, 12, 79, 14, 160, 27, 70, 93, 38, 68, 40, 36, 48, 33, 15, 8, 215, 112, 172, 120, 120, 120, 255, 120,
-			187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 0, 1, 200, 1, 52, 3, 16, 9, 8, 12, 41, 14, 96, 27, 30, 84, 36, 76, 59, 21, 35, 23, 15, 8, 205, 105, 157, 120,
-			120, 120, 145, 105, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191,
-			251, 250, 194, 182, 1, 0, 172, 0, 152, 1, 188, 2, 192, 8, 88, 12, 60, 15, 96, 27, 0, 37, 24, 48, 40, 24, 20, 12, 10, 8,
-			200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			76, 8, 87, 182, 53, 250, 0, 0, 217, 0, 6, 0, 1, 0, 104, 0, 144, 1, 132, 8, 160, 10, 72, 13, 60, 15, 32, 27, 42, 45,
-			17, 61, 61, 61, 57, 31, 12, 7, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 3, 0, 104, 0, 144, 1, 132, 8, 160, 10, 72, 13, 60, 15,
-			32, 27, 40, 63, 20, 72, 72, 72, 67, 37, 15, 8, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 117, 0, 192, 1, 9, 8, 113, 10,
-			47, 13, 24, 15, 42, 27, 50, 64, 24, 74, 74, 68, 64, 38, 16, 8, 167, 122, 153, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250, 209, 182, 1, 0, 169, 0, 69, 2,
-			26, 6, 180, 9, 201, 12, 135, 14, 82, 27, 50, 64, 37, 74, 74, 50, 48, 38, 20, 7, 167, 133, 137, 120, 120, 120, 167, 120, 157, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			176, 0, 128, 2, 220, 5, 156, 9, 188, 12, 116, 14, 88, 27, 35, 58, 37, 71, 71, 46, 44, 37, 19, 7, 167, 135, 135, 120, 120, 120,
-			197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250,
-			194, 182, 1, 0, 176, 0, 128, 2, 220, 5, 156, 9, 188, 12, 116, 14, 88, 27, 0, 39, 30, 58, 58, 38, 36, 30, 16, 6, 167, 135,
-			135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 8,
-			87, 182, 53, 250, 0, 0, 110, 0, 4, 0, 5, 0, 76, 0, 80, 1, 200, 5, 40, 10, 152, 13, 160, 15, 32, 29, 40, 19, 11, 48,
-			18, 14, 36, 21, 9, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 76, 0, 80, 1, 200, 5, 40, 10, 152, 13, 160, 15, 32, 29,
-			35, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 17, 0, 76, 0, 80, 1, 200, 5, 40, 10, 152, 13,
-			160, 15, 32, 29, 35, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 2, 0, 0, 0, 240, 250, 209, 182, 1, 0, 76, 0, 80, 1, 200, 5,
-			40, 10, 152, 13, 160, 15, 32, 29, 0, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 46, 0, 8, 0,
-			1, 0, 200, 0, 127, 2, 126, 5, 127, 9, 197, 12, 114, 14, 244, 26, 12, 59, 40, 72, 72, 40, 28, 20, 16, 12, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 200, 0, 125, 2, 136, 5, 127, 9, 207, 12, 123, 14, 244, 26, 12, 66, 52, 72, 72, 44, 32, 28, 20, 8,
-			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 103, 2, 9, 6, 181, 9, 248, 12, 224, 14, 244, 26, 12, 53, 52, 60, 64, 36,
-			28, 28, 20, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 65, 2, 159, 6, 235, 9, 253, 12, 61, 15, 244, 26, 12, 43,
-			52, 48, 52, 28, 28, 28, 8, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15,
-			159, 27, 48, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11,
-			16, 14, 200, 15, 159, 27, 24, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1,
-			208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 24, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 1, 0,
-			152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 188, 69, 0, 182, 129, 244, 194, 182, 2, 250,
-			0, 0, 0, 0, 9, 0, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 28, 62, 24, 59, 74, 42, 38, 34,
-			10, 6, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 35, 127, 35, 84,
-			105, 60, 54, 49, 14, 8, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27,
-			29, 127, 35, 84, 105, 60, 54, 49, 14, 8, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 250, 0, 160, 2, 76, 4, 246, 10, 188, 12,
-			92, 14, 87, 27, 43, 118, 35, 84, 105, 60, 54, 49, 14, 8, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 204, 0, 93, 2, 252, 4,
-			60, 10, 168, 12, 10, 15, 0, 28, 50, 40, 28, 53, 61, 33, 40, 20, 11, 8, 167, 165, 150, 120, 120, 120, 167, 180, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0,
-			200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 21, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 21, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182,
-			76, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 43, 22, 36, 20, 20, 8, 4, 4, 8, 8,
-			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 188, 69, 0, 182,
-			129, 244, 194, 182, 2, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8,
-			4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 239, 208, 182,
-			96, 1, 0, 182, 29, 32, 0, 0, 152, 250, 227, 191, 0, 0, 6, 0, 1, 0, 228, 0, 224, 2, 180, 5, 196, 9, 68, 12, 216, 14,
-			80, 28, 45, 46, 25, 55, 66, 44, 36, 32, 12, 5, 172, 142, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 228, 0, 224, 2, 180, 5, 196, 9,
-			68, 12, 216, 14, 80, 28, 66, 83, 34, 75, 90, 60, 49, 43, 17, 7, 172, 142, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 222, 0, 224, 2,
-			40, 5, 96, 9, 98, 12, 76, 14, 247, 27, 41, 73, 29, 63, 84, 46, 52, 35, 14, 7, 168, 124, 204, 120, 120, 120, 255, 120, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0,
-			0, 1, 96, 2, 87, 4, 16, 9, 48, 12, 41, 14, 128, 27, 40, 64, 28, 61, 77, 35, 52, 36, 15, 7, 237, 126, 192, 120, 120, 120,
-			141, 126, 147, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250,
-			0, 0, 1, 0, 0, 1, 208, 1, 189, 3, 16, 9, 8, 12, 41, 14, 96, 27, 40, 65, 36, 68, 59, 21, 35, 23, 15, 8, 205, 90,
-			180, 120, 120, 120, 145, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0,
-			0, 0, 0, 250, 0, 0, 1, 0, 172, 0, 200, 1, 152, 3, 192, 8, 168, 12, 60, 15, 96, 27, 0, 30, 25, 50, 42, 16, 18, 13,
-			11, 9, 200, 90, 120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66,
-			0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 34, 0, 8, 0, 1, 0, 200, 0, 196, 2, 190, 6, 114, 9, 178, 13, 224, 13, 244, 26,
-			12, 56, 40, 72, 68, 64, 20, 20, 20, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 201, 2, 197, 6, 100, 9, 129, 13,
-			48, 14, 244, 26, 12, 66, 40, 80, 76, 64, 24, 24, 16, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 200, 2, 192, 6,
-			98, 9, 90, 13, 131, 14, 244, 26, 12, 56, 40, 72, 72, 60, 40, 0, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0,
-			197, 2, 184, 6, 97, 9, 75, 13, 174, 14, 244, 26, 24, 51, 36, 68, 68, 56, 48, 12, 16, 16, 187, 125, 137, 137, 150, 175, 187, 125,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 200, 0, 182, 2, 153, 6, 108, 9, 67, 13, 220, 14, 244, 26, 36, 48, 36, 68, 60, 48, 44, 28, 16, 12, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 24, 32, 36, 32, 44, 36, 32, 20, 16, 8,
-			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 36, 22, 36, 20, 20, 8,
-			4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22,
-			36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 188, 69, 0, 182, 129, 244, 194, 182, 2, 250, 0, 0, 89, 0, 9, 0, 1, 0, 200, 0, 104, 1, 38, 8, 98, 10,
-			18, 13, 10, 15, 244, 26, 12, 55, 30, 57, 48, 42, 39, 24, 12, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 200, 0, 136, 1,
-			230, 7, 48, 10, 17, 13, 30, 15, 244, 26, 12, 111, 36, 92, 64, 64, 56, 36, 20, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			200, 0, 136, 1, 223, 7, 46, 10, 23, 13, 38, 15, 244, 26, 12, 110, 40, 88, 64, 64, 56, 40, 24, 16, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 1, 0, 200, 0, 136, 1, 224, 7, 48, 10, 26, 13, 40, 15, 244, 26, 12, 97, 36, 84, 60, 60, 56, 36, 24, 12, 187, 125,
-			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236,
-			45, 182, 1, 250, 0, 0, 1, 0, 200, 0, 144, 1, 245, 7, 60, 10, 43, 13, 84, 15, 244, 26, 12, 68, 40, 60, 56, 56, 56, 40,
-			20, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0,
-			0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 200, 1, 152, 8, 140, 10, 16, 14, 180, 15, 159, 27, 24, 24, 36, 32,
-			36, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 168, 0, 96, 1, 204, 6, 196, 9, 176, 14, 48, 17, 244, 26,
-			42, 37, 44, 40, 8, 36, 24, 12, 0, 0, 125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 1, 0, 168, 0, 96, 1, 204, 6, 196, 9, 176, 14,
-			68, 17, 244, 26, 30, 37, 44, 40, 8, 36, 24, 12, 0, 0, 125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 188, 69, 0, 182, 129, 244, 194, 182, 2, 250, 0, 0, 1, 0, 168, 0, 96, 1, 204, 6,
-			196, 9, 176, 14, 68, 17, 244, 26, 0, 26, 40, 32, 8, 16, 8, 12, 0, 0, 125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 239, 208, 182, 96, 1, 0, 182, 29, 32, 0, 0, 152, 250, 227, 191, 0, 0, 5, 0,
-			1, 0, 200, 0, 38, 1, 6, 5, 126, 10, 152, 11, 253, 14, 244, 26, 29, 91, 56, 52, 48, 44, 16, 28, 12, 8, 187, 125, 137, 137,
-			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 3, 0, 200, 0, 58, 1, 37, 5, 140, 10, 174, 16, 160, 15, 244, 26, 51, 74, 48, 52, 40, 36, 12, 16, 16, 12,
-			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 42, 1, 244, 4, 57, 10, 85, 10, 215, 16, 244, 26, 98, 59, 48, 40, 32, 20,
-			8, 4, 4, 4, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 104, 52,
-			52, 36, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15,
-			159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 23, 0, 7, 0, 1, 0, 200, 0, 191, 1,
-			229, 5, 86, 9, 209, 12, 236, 14, 244, 26, 23, 73, 36, 72, 76, 40, 40, 28, 24, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			200, 0, 193, 1, 232, 5, 89, 9, 218, 12, 246, 14, 244, 26, 24, 70, 32, 72, 76, 44, 44, 36, 28, 16, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 200, 0, 194, 1, 241, 5, 85, 9, 209, 12, 239, 14, 244, 26, 12, 55, 32, 64, 60, 36, 36, 28, 20, 8, 187, 125,
-			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 200, 1, 119, 6, 146, 9, 16, 13, 86, 15, 244, 26, 12, 38, 36, 48, 40, 32, 32, 24,
-			16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 36, 39, 44, 36,
-			44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27,
-			48, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14,
-			200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 232, 65, 0, 191, 129, 244, 194, 182, 76, 250, 23, 8, 0, 0, 6, 0, 1, 0, 152, 0,
-			56, 2, 132, 3, 44, 11, 192, 13, 120, 15, 159, 27, 45, 62, 29, 67, 58, 32, 29, 22, 14, 6, 172, 142, 135, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			3, 0, 152, 0, 56, 2, 132, 3, 44, 11, 192, 13, 120, 15, 159, 27, 84, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120,
-			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 152, 0, 72, 2, 92, 3, 144, 11, 232, 13, 140, 15, 159, 27, 40, 112, 40, 80, 80, 44, 40, 31, 20, 8,
-			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 55, 32, 36, 32, 44, 36,
-			32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 60, 22,
-			36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15,
-			159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 152, 0, 56, 2,
-			132, 3, 44, 11, 192, 13, 120, 15, 159, 27, 55, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 1, 0,
-			152, 0, 56, 2, 132, 3, 44, 11, 192, 13, 120, 15, 159, 27, 74, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 3, 0, 176, 0, 56, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26, 46, 78, 4, 96, 52, 28, 28, 40, 16, 10, 177, 125,
-			102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 17, 32, 36, 32, 44, 36, 32, 20,
-			16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 16, 22, 36, 20,
-			20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36,
-			23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27,
-			0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 116, 0, 232, 1, 136, 4,
-			236, 9, 168, 12, 156, 14, 96, 27, 45, 48, 27, 63, 60, 34, 37, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0,
-			232, 1, 136, 4, 236, 9, 168, 12, 156, 14, 96, 27, 70, 93, 38, 88, 84, 48, 52, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 116, 0, 232, 1, 136, 4, 236, 9, 168, 12, 156, 14, 96, 27, 60, 75, 34, 79, 75, 43, 46, 39, 20, 7, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 116, 0, 232, 1, 136, 4, 236, 9, 168, 12, 156, 14, 96, 27, 0, 41, 25, 58, 56, 32, 34, 29, 15, 5,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 152, 153, 153, 154, 156, 157, 159, 161, 164, 167, 169, 172, 176, 179, 182, 186, 190, 193, 197, 201, 205, 209,
-			212, 216, 220, 223, 227, 230, 234, 237, 240, 242, 245, 247, 249, 251, 252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 254, 253, 251, 250, 248, 246,
-			243, 241, 238, 236, 233, 230, 228, 224, 221, 218, 215, 211, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 167, 163, 159, 154, 150, 145, 141, 136,
-			132, 127, 123, 118, 114, 109, 105, 101, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 57, 53, 50, 47, 43, 40, 38, 35, 32, 29, 26, 23,
-			21, 18, 15, 13, 10, 8, 7, 5, 3, 2, 1, 0, 0, 0, 0, 0, 110, 0, 3, 0, 5, 0, 240, 0, 13, 2, 108, 7, 128, 12,
-			156, 14, 23, 17, 224, 23, 60, 24, 54, 8, 8, 16, 6, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 5, 0, 240, 0, 13, 2,
-			108, 7, 128, 12, 156, 14, 23, 17, 224, 23, 50, 24, 54, 8, 8, 16, 6, 8, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			240, 0, 13, 2, 108, 7, 128, 12, 156, 14, 23, 17, 224, 23, 0, 15, 43, 6, 6, 13, 5, 6, 3, 0, 162, 90, 165, 120, 120, 120,
-			132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250,
-			209, 182, 181, 2, 30, 0, 23, 23, 23, 23, 23, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 23, 23, 24, 24, 23, 23,
-			24, 24, 24, 23, 23, 22, 22, 22, 21, 21, 22, 22, 22, 22, 22, 22, 21, 22, 22, 22, 22, 21, 21, 21, 22, 21, 21, 22, 21, 21,
-			21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 19, 19, 19, 20, 20, 19, 19, 19, 19, 19, 19, 19,
-			19, 19, 19, 19, 19, 19, 18, 18, 17, 18, 18, 18, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17,
-			17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 16, 16, 15, 16,
-			17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 17, 17, 17, 16, 17, 17, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-			17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-			18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 18, 19, 18, 18, 18, 18, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18,
-			18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 20, 20, 19, 19, 19, 19, 19, 19, 20, 20, 19, 19,
-			20, 20, 20, 20, 19, 19, 20, 20, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 21, 21, 21, 21, 21, 21,
-			22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23,
-			23, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 24, 24, 24,
-			24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-			24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21,
-			22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 20, 21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 14, 12,
-			7, 1, 222, 165, 138, 148, 195, 198, 198, 244, 25, 46, 55, 66, 97, 101, 57, 31, 23, 253, 219, 214, 234, 2, 15, 26, 54, 77, 73, 65,
-			79, 75, 55, 28, 2, 254, 245, 236, 249, 23, 34, 48, 51, 57, 73, 62, 47, 36, 29, 22, 3, 249, 248, 1, 11, 20, 50, 73, 76, 44,
-			6, 13, 30, 51, 1, 2, 2, 251, 226, 225, 253, 13, 8, 4, 31, 33, 20, 10, 32, 44, 25, 243, 222, 217, 210, 204, 204, 253, 34, 46,
-			54, 65, 72, 71, 46, 40, 52, 37, 7, 255, 7, 22, 2, 246, 23, 47, 56, 15, 36, 47, 51, 22, 16, 49, 55, 31, 255, 25, 43, 30,
-			1, 22, 43, 40, 6, 19, 42, 28, 242, 222, 9, 8, 241, 226, 12, 37, 31, 35, 46, 81, 83, 51, 45, 74, 60, 27, 17, 41, 65, 55,
-			29, 42, 42, 247, 179, 146, 149, 154, 146, 144, 229, 243, 17, 31, 88, 105, 125, 118, 68, 76, 252, 220, 204, 207, 195, 218, 252, 22, 59, 44,
-			8, 243, 191, 206, 217, 166, 153, 171, 211, 228, 251, 20, 87, 118, 103, 109, 84, 65, 31, 255, 232, 250, 252, 253, 9, 18, 43, 85, 96, 88,
-			59, 31, 48, 48, 245, 191, 205, 221, 31, 35, 18, 39, 43, 19, 237, 232, 244, 248, 215, 195, 212, 205, 218, 236, 20, 42, 32, 19, 12, 21,
-			246, 225, 229, 255, 2, 1, 27, 51, 57, 0, 0, 0, 75, 8, 18, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 39, 39, 39,
-			40, 39, 39, 39, 38, 39, 38, 38, 38, 38, 38, 38, 38, 37, 37, 36, 36, 36, 36, 36, 35, 35, 36, 35, 35, 34, 35, 34, 34, 33,
-			33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 30, 29,
-			29, 29, 28, 29, 28, 28, 28, 28, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 26, 26, 27, 27, 26, 26, 25,
-			25, 25, 26, 26, 26, 26, 26, 26, 25, 25, 26, 26, 26, 26, 25, 26, 26, 26, 26, 25, 24, 24, 25, 25, 25, 25, 26, 25, 26, 26,
-			26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 25, 25, 26, 26, 25, 26, 26, 26, 26, 26, 26, 26, 26,
-			27, 26, 26, 26, 26, 26, 26, 27, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 28, 27, 28, 28, 28, 28, 28, 28, 28,
-			28, 28, 28, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 30, 30, 30, 31, 31, 31, 31, 30, 30,
-			30, 30, 30, 30, 30, 31, 31, 30, 31, 31, 31, 31, 31, 31, 32, 32, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34,
-			34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 37, 37, 36, 36, 36, 37, 37, 37, 37, 37, 38, 37, 37, 37, 38, 38, 38,
-			38, 38, 38, 39, 39, 38, 39, 40, 40, 39, 39, 39, 40, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 41, 42, 42, 42, 42,
-			42, 42, 42, 42, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 44, 44, 45, 45, 45, 45,
-			45, 46, 45, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44,
-			44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 42, 42, 42, 42,
-			42, 42, 42, 42, 42, 42, 43, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 41, 41, 42, 42, 42, 41, 42, 42, 42,
-			42, 42, 42, 42, 41, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 41, 41, 40, 40, 40, 40, 39, 39, 39, 39, 39, 38, 38, 38, 38,
-			38, 38, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 37, 37, 38, 37, 36, 36, 36, 36, 36, 36, 36, 35, 35, 35, 35, 35, 35,
-			35, 35, 36, 35, 34, 32, 32, 33, 34, 34, 34, 33, 32, 31, 32, 33, 32, 32, 31, 31, 30, 30, 31, 31, 31, 31, 30, 30, 30, 31,
-			31, 31, 32, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 28, 29, 31, 33, 31, 26, 25, 27, 30, 31, 31, 29, 27, 27, 28, 28, 29,
-			31, 31, 28, 26, 27, 26, 26, 18, 238, 195, 224, 70, 120, 72, 11, 245, 235, 247, 42, 84, 72, 32, 5, 251, 0, 31, 65, 61, 27, 7,
-			10, 20, 34, 48, 49, 33, 16, 12, 20, 33, 45, 48, 35, 16, 8, 19, 36, 44, 42, 32, 20, 14, 19, 33, 44, 43, 31, 18, 16, 23,
-			33, 38, 36, 28, 22, 21, 24, 28, 29, 30, 32, 33, 29, 23, 23, 29, 32, 31, 32, 32, 27, 22, 23, 28, 30, 32, 31, 22, 21, 28,
-			33, 31, 30, 30, 25, 21, 22, 31, 38, 33, 21, 20, 29, 32, 28, 29, 32, 26, 21, 29, 37, 33, 27, 28, 28, 27, 32, 37, 30, 23,
-			28, 35, 32, 28, 30, 36, 38, 32, 21, 25, 42, 41, 29, 29, 34, 29, 29, 39, 43, 34, 26, 26, 29, 33, 40, 42, 38, 31, 29, 31,
-			32, 33, 41, 47, 40, 27, 23, 28, 38, 47, 46, 31, 24, 38, 45, 32, 30, 45, 46, 34, 33, 39, 36, 35, 41, 42, 37, 34, 35, 34,
-			35, 43, 46, 37, 33, 40, 42, 34, 37, 46, 40, 32, 43, 48, 33, 29, 45, 52, 42, 33, 32, 38, 44, 44, 46, 49, 41, 28, 33, 52,
-			57, 40, 25, 36, 53, 52, 36, 32, 46, 54, 44, 37, 46, 45, 33, 42, 58, 52, 37, 36, 38, 38, 48, 58, 48, 32, 31, 42, 50, 51,
-			42, 34, 43, 54, 46, 36, 44, 45, 34, 42, 60, 51, 31, 43, 58, 37, 22, 47, 62, 47, 42, 45, 33, 32, 54, 59, 39, 31, 36, 45,
-			55, 46, 31, 31, 43, 53, 58, 51, 33, 22, 28, 44, 61, 59, 39, 30, 34, 34, 42, 54, 47, 33, 36, 44, 34, 32, 61, 70, 25, 0,
-			32, 61, 64, 66, 45, 254, 255, 58, 82, 50, 35, 40, 26, 21, 48, 60, 45, 46, 41, 13, 25, 74, 70, 25, 23, 42, 38, 36, 49, 52,
-			46, 45, 35, 21, 38, 63, 55, 37, 30, 28, 36, 47, 47, 50, 50, 33, 15, 30, 60, 58, 34, 34, 44, 29, 18, 48, 77, 55, 19, 17,
-			30, 29, 47, 73, 56, 21, 16, 28, 39, 48, 47, 35, 33, 42, 42, 30, 26, 33, 38, 37, 43, 52, 43, 21, 14, 34, 46, 37, 34, 44,
-			41, 23, 17, 24, 36, 52, 59, 39, 2, 254, 30, 46, 46, 62, 53, 3, 243, 29, 51, 30, 33, 58, 41, 7, 12, 33, 38, 42, 42, 19,
-			13, 44, 46, 9, 6, 45, 55, 26, 12, 31, 33, 9, 23, 63, 51, 255, 246, 30, 54, 41, 33, 35, 16, 255, 13, 37, 49, 52, 40, 8,
-			241, 8, 57, 70, 41, 11, 0, 255, 22, 66, 72, 29, 255, 3, 20, 35, 44, 41, 25, 15, 26, 34, 21, 19, 39, 51, 30, 0, 8, 44,
-			48, 20, 13, 29, 29, 25, 42, 48, 22, 4, 19, 35, 32, 36, 48, 39, 17, 5, 13, 32, 48, 48, 27, 16, 30, 32, 13, 12, 39, 54,
-			38, 22, 22, 21, 16, 28, 36, 31, 35, 46, 42, 13, 240, 2, 60, 89, 52, 253, 243, 4, 31, 71, 79, 22, 234, 9, 45, 33, 37, 63,
-			36, 243, 2, 54, 58, 29, 22, 22, 16, 35, 62, 42, 7, 6, 27, 48, 50, 33, 22, 26, 24, 20, 31, 53, 48, 18, 10, 32, 45, 40,
-			25, 17, 40, 57, 33, 8, 16, 41, 53, 32, 21, 45, 48, 17, 255, 22, 69, 78, 34, 254, 14, 49, 39, 14, 50, 73, 18, 245, 43, 83,
-			43, 253, 7, 50, 66, 52, 37, 21, 3, 17, 61, 75, 52, 26, 6, 4, 37, 71, 63, 35, 27, 21, 13, 40, 74, 58, 26, 20, 24, 44,
-			62, 47, 26, 27, 30, 43, 60, 59, 35, 2, 9, 48, 72, 69, 48, 23, 17, 24, 34, 59, 69, 33, 17, 60, 73, 14, 246, 43, 78, 66,
-			51, 30, 10, 23, 54, 64, 49, 38, 38, 32, 35, 52, 47, 30, 40, 59, 44, 21, 37, 54, 38, 36, 57, 44, 17, 44, 72, 37, 9, 42,
-			65, 45, 37, 44, 36, 29, 45, 55, 35, 25, 51, 61, 39, 27, 35, 40, 48, 60, 46, 19, 31, 57, 50, 38, 46, 46, 21, 21, 57, 72,
-			48, 26, 11, 17, 69, 88, 32, 252, 31, 60, 39, 34, 59, 56, 23, 15, 37, 42, 34, 55, 74, 42, 254, 9, 57, 67, 49, 36, 31, 28,
-			28, 43, 60, 56, 39, 23, 10, 25, 62, 74, 48, 22, 20, 27, 33, 48, 64, 58, 33, 14, 18, 40, 57, 57, 55, 34, 0, 9, 59, 74,
-			54, 37, 15, 254, 25, 74, 71, 26, 17, 49, 42, 4, 24, 73, 62, 23, 22, 34, 25, 26, 62, 69, 18, 0, 41, 57, 28, 23, 48, 43,
-			17, 28, 46, 33, 27, 36, 28, 29, 50, 45, 16, 15, 44, 53, 31, 20, 33, 38, 34, 40, 33, 11, 20, 49, 49, 29, 19, 26, 41, 42,
-			15, 0, 31, 58, 47, 31, 24, 10, 8, 36, 55, 41, 27, 21, 10, 9, 34, 57, 43, 18, 27, 36, 10, 2, 39, 51, 29, 28, 30, 10,
-			16, 46, 37, 5, 14, 43, 45, 26, 15, 23, 29, 25, 28, 38, 39, 27, 21, 24, 22, 15, 26, 46, 38, 15, 15, 28, 34, 29, 24, 21,
-			27, 36, 27, 16, 28, 40, 28, 11, 22, 48, 39, 5, 9, 40, 44, 30, 28, 27, 14, 12, 33, 54, 46, 21, 5, 8, 30, 50, 45, 27,
-			16, 18, 26, 37, 42, 31, 14, 18, 32, 24, 21, 48, 57, 27, 0, 4, 27, 50, 52, 26, 9, 23, 38, 27, 19, 30, 38, 35, 34, 28,
-			14, 13, 29, 45, 44, 31, 22, 20, 22, 26, 30, 35, 35, 25, 21, 30, 37, 33, 29, 27, 19, 23, 43, 46, 25, 15, 22, 24, 32, 48,
-			44, 18, 7, 25, 41, 33, 25, 34, 40, 26, 19, 31, 34, 26, 34, 41, 28, 18, 27, 36, 29, 29, 44, 42, 19, 14, 35, 43, 27, 23,
-			43, 45, 20, 16, 36, 45, 41, 42, 31, 15, 27, 49, 44, 27, 28, 37, 33, 34, 44, 37, 20, 26, 45, 47, 34, 31, 36, 37, 32, 33,
-			43, 46, 36, 31, 33, 32, 32, 42, 50, 43, 30, 27, 36, 46, 46, 37, 33, 32, 32, 43, 58, 53, 31, 22, 30, 41, 52, 56, 44, 31,
-			28, 30, 37, 53, 59, 42, 23, 27, 42, 51, 50, 42, 29, 26, 42, 58, 57, 42, 27, 24, 35, 50, 55, 47, 34, 32, 38, 41, 43, 47,
-			46, 37, 31, 36, 42, 43, 42, 47, 46, 33, 27, 41, 56, 49, 35, 34, 37, 38, 44, 51, 46, 37, 36, 37, 37, 40, 46, 46, 39, 30,
-			31, 41, 48, 45, 41, 38, 32, 31, 39, 46, 44, 41, 41, 38, 34, 35, 40, 43, 44, 44, 38, 31, 33, 41, 42, 40, 36, 39, 46, 42,
-			28, 31, 43, 42, 37, 42, 43, 36, 37, 41, 33, 29, 40, 44, 35, 34, 41, 39, 32, 31, 37, 42, 42, 36, 32, 33, 33, 34, 41, 45,
-			38, 30, 33, 37, 35, 34, 38, 40, 37, 33, 34, 38, 38, 37, 37, 36, 34, 34, 36, 36, 36, 35, 32, 30, 37, 47, 41, 26, 24, 33,
-			38, 41, 43, 36, 25, 27, 36, 40, 42, 39, 31, 25, 29, 35, 36, 38, 39, 33, 27, 31, 34, 33, 35, 36, 31, 28, 32, 34, 33, 36,
-			36, 30, 27, 33, 35, 32, 33, 32, 30, 29, 32, 34, 34, 34, 29, 23, 25, 32, 36, 34, 29, 27, 28, 27, 27, 31, 35, 31, 25, 22,
-			23, 26, 31, 33, 31, 29, 27, 22, 22, 29, 34, 33, 29, 25, 21, 25, 32, 34, 29, 27, 27, 26, 25, 25, 27, 29, 30, 28, 27, 26,
-			24, 23, 24, 28, 29, 27, 25, 24, 26, 28, 30, 29, 26, 25, 26, 29, 28, 24, 22, 27, 31, 30, 29, 29, 25, 22, 25, 29, 28, 29,
-			30, 27, 23, 24, 28, 29, 30, 30, 27, 23, 24, 27, 31, 33, 33, 27, 24, 26, 30, 31, 31, 32, 28, 24, 26, 31, 31, 30, 30, 28,
-			25, 27, 32, 31, 26, 26, 29, 29, 30, 32, 30, 27, 28, 30, 30, 29, 30, 32, 32, 29, 27, 28, 31, 34, 33, 28, 27, 28, 29, 29,
-			33, 34, 29, 27, 30, 31, 31, 32, 32, 29, 28, 30, 31, 32, 33, 31, 28, 28, 31, 32, 32, 32, 30, 27, 29, 33, 33, 32, 31, 31,
-			31, 32, 33, 32, 32, 35, 36, 33, 33, 34, 35, 33, 33, 35, 36, 34, 33, 33, 34, 34, 34, 34, 34, 33, 33, 33, 33, 34, 35, 35,
-			35, 34, 33, 33, 34, 35, 35, 35, 34, 35, 37, 37, 36, 35, 35, 36, 37, 39, 39, 38, 36, 36, 36, 38, 39, 37, 37, 38, 38, 37,
-			37, 38, 38, 38, 38, 38, 39, 38, 37, 38, 39, 38, 37, 38, 38, 37, 37, 38, 38, 38, 37, 37, 38, 39, 39, 38, 38, 39, 40, 39,
-			39, 39, 39, 39, 38, 39, 41, 41, 39, 37, 39, 40, 40, 40, 41, 40, 38, 39, 40, 40, 41, 42, 40, 38, 39, 39, 41, 41, 39, 38,
-			38, 40, 42, 40, 39, 39, 40, 40, 40, 0, 59, 11, 50, 0, 7, 251, 250, 9, 253, 8, 246, 253, 17, 225, 2, 33, 228, 2, 29, 239,
-			238, 19, 3, 255, 0, 249, 12, 254, 3, 7, 252, 250, 241, 17, 31, 231, 239, 24, 248, 234, 10, 12, 16, 253, 242, 4, 252, 6, 11, 238,
-			253, 254, 30, 19, 213, 253, 23, 235, 254, 20, 252, 17, 3, 232, 15, 245, 237, 33, 254, 225, 15, 25, 255, 246, 4, 252, 234, 13, 11, 235,
-			10, 27, 253, 242, 14, 243, 239, 14, 241, 22, 48, 245, 211, 236, 6, 8, 18, 11, 248, 234, 0, 18, 244, 251, 21, 245, 236, 5, 4, 24,
-			4, 229, 254, 17, 5, 244, 4, 19, 240, 246, 21, 10, 240, 2, 2, 229, 19, 14, 5, 7, 224, 244, 23, 9, 240, 252, 34, 253, 206, 8,
-			50, 235, 0, 25, 229, 4, 32, 237, 243, 12, 6, 16, 239, 236, 27, 254, 4, 254, 244, 28, 247, 253, 21, 244, 241, 9, 248, 13, 20, 236,
-			13, 10, 232, 244, 25, 4, 217, 12, 38, 254, 223, 224, 0, 43, 40, 243, 222, 238, 15, 27, 236, 239, 32, 20, 214, 225, 21, 29, 247, 241,
-			0, 11, 31, 248, 220, 7, 0, 21, 22, 217, 203, 39, 56, 222, 237, 20, 253, 4, 9, 238, 227, 9, 23, 11, 0, 242, 242, 242, 53, 4,
-			207, 45, 255, 228, 27, 255, 220, 12, 45, 250, 249, 244, 235, 8, 19, 8, 253, 18, 241, 212, 249, 40, 39, 244, 225, 248, 23, 12, 255, 8,
-			217, 0, 42, 251, 233, 22, 29, 215, 234, 19, 6, 253, 0, 19, 250, 238, 3, 3, 24, 35, 221, 209, 36, 21, 237, 10, 8, 250, 228, 6,
-			29, 10, 243, 227, 247, 0, 5, 29, 18, 216, 243, 46, 231, 252, 22, 244, 254, 249, 249, 255, 1, 250, 7, 14, 252, 29, 246, 189, 21, 33,
-			9, 13, 233, 246, 0, 243, 12, 30, 249, 221, 40, 20, 210, 252, 255, 1, 46, 25, 220, 237, 15, 13, 31, 233, 209, 30, 44, 219, 230, 29,
-			238, 253, 35, 255, 236, 251, 7, 253, 5, 254, 19, 48, 197, 189, 50, 11, 34, 29, 191, 4, 34, 236, 247, 242, 246, 35, 43, 231, 216, 7,
-			9, 37, 3, 190, 247, 64, 16, 216, 5, 243, 241, 59, 237, 197, 19, 56, 18, 207, 223, 253, 37, 45, 215, 206, 32, 51, 232, 224, 13, 26,
-			37, 229, 222, 251, 22, 43, 226, 219, 28, 251, 247, 13, 2, 0, 253, 3, 251, 240, 31, 25, 226, 232, 2, 25, 37, 254, 217, 234, 26, 21,
-			246, 232, 245, 18, 31, 247, 216, 15, 20, 231, 226, 16, 55, 250, 218, 12, 57, 216, 206, 81, 255, 199, 44, 51, 221, 198, 6, 248, 27, 58,
-			225, 215, 243, 27, 48, 239, 188, 47, 52, 186, 242, 45, 6, 0, 237, 203, 5, 85, 241, 190, 21, 15, 235, 49, 33, 167, 255, 98, 212, 241,
-			46, 194, 0, 48, 236, 9, 2, 222, 23, 35, 0, 232, 0, 25, 249, 9, 4, 227, 4, 37, 46, 240, 171, 233, 46, 11, 225, 19, 18, 228,
-			231, 248, 33, 28, 215, 241, 35, 241, 6, 69, 223, 151, 32, 72, 199, 19, 69, 188, 199, 35, 46, 243, 226, 34, 3, 200, 246, 46, 34, 255,
-			249, 231, 231, 41, 27, 211, 220, 24, 38, 24, 243, 0, 254, 205, 243, 56, 1, 254, 22, 226, 244, 12, 244, 247, 26, 54, 239, 222, 241, 3,
-			46, 28, 247, 204, 236, 32, 14, 245, 238, 30, 23, 252, 245, 210, 0, 34, 227, 244, 74, 7, 237, 4, 202, 243, 44, 36, 245, 249, 9, 241,
-			238, 232, 59, 55, 157, 197, 93, 60, 204, 250, 23, 177, 244, 82, 8, 1, 6, 199, 5, 35, 2, 6, 197, 234, 54, 9, 18, 6, 216, 229,
-			13, 25, 27, 255, 181, 252, 73, 253, 236, 236, 246, 51, 33, 234, 224, 10, 11, 248, 5, 0, 235, 24, 21, 234, 18, 0, 224, 31, 31, 199,
-			236, 46, 252, 234, 239, 5, 48, 246, 216, 24, 26, 226, 217, 249, 52, 52, 3, 241, 206, 207, 23, 39, 12, 255, 31, 247, 194, 22, 51, 0,
-			210, 201, 55, 90, 228, 187, 249, 14, 16, 22, 254, 246, 249, 226, 13, 31, 243, 253, 34, 0, 238, 7, 0, 241, 246, 238, 39, 56, 232, 210,
-			227, 253, 33, 28, 228, 214, 55, 56, 208, 213, 15, 252, 217, 222, 26, 103, 29, 197, 232, 251, 228, 0, 233, 29, 96, 245, 215, 0, 0, 245,
-			242, 34, 31, 24, 25, 202, 180, 254, 8, 35, 65, 216, 219, 48, 53, 252, 159, 205, 49, 81, 27, 209, 182, 224, 78, 31, 231, 4, 255, 30,
-			238, 200, 16, 2, 238, 10, 250, 30, 67, 220, 165, 4, 64, 38, 254, 214, 215, 33, 50, 254, 234, 204, 7, 61, 39, 242, 214, 16, 246, 218,
-			11, 20, 32, 30, 247, 179, 228, 97, 35, 196, 212, 16, 34, 3, 5, 5, 215, 225, 4, 16, 52, 27, 214, 245, 247, 239, 17, 24, 1, 239,
-			240, 34, 50, 233, 176, 239, 69, 48, 210, 203, 250, 54, 82, 209, 200, 41, 240, 243, 21, 242, 241, 24, 24, 2, 244, 4, 255, 238, 10, 7,
-			246, 23, 1, 250, 24, 237, 227, 19, 7, 9, 9, 233, 250, 0, 254, 23, 251, 4, 245, 208, 32, 60, 251, 198, 199, 40, 91, 11, 180, 213,
-			48, 22, 233, 240, 0, 249, 255, 36, 12, 243, 211, 226, 46, 48, 241, 243, 239, 207, 225, 38, 81, 23, 213, 239, 17, 39, 7, 220, 225, 249,
-			13, 0, 246, 33, 36, 248, 243, 0, 247, 248, 2, 20, 24, 4, 238, 229, 2, 240, 223, 28, 88, 27, 202, 211, 244, 6, 217, 13, 77, 223,
-			220, 43, 242, 231, 38, 1, 24, 29, 175, 213, 33, 2, 21, 28, 10, 241, 250, 4, 246, 236, 11, 31, 253, 25, 25, 207, 248, 14, 8, 32,
-			246, 202, 237, 8, 57, 34, 227, 199, 243, 12, 244, 42, 48, 242, 222, 221, 43, 34, 197, 200, 13, 72, 22, 244, 222, 189, 13, 34, 1, 37,
-			38, 194, 194, 47, 19, 250, 0, 179, 4, 125, 15, 171, 248, 3, 219, 50, 64, 199, 213, 77, 44, 244, 0, 168, 224, 91, 4, 222, 32, 40,
-			239, 248, 7, 249, 6, 10, 14, 16, 250, 5, 238, 224, 37, 25, 247, 246, 192, 230, 99, 69, 186, 201, 34, 13, 240, 242, 6, 20, 40, 8,
-			202, 253, 252, 223, 30, 28, 243, 254, 248, 4, 20, 230, 237, 249, 3, 36, 241, 193, 242, 36, 30, 1, 236, 244, 210, 226, 85, 78, 227, 203,
-			203, 250, 47, 5, 1, 51, 35, 246, 234, 194, 208, 30, 54, 42, 15, 211, 226, 21, 19, 246, 236, 6, 46, 18, 235, 206, 216, 27, 28, 43,
-			13, 195, 251, 12, 18, 23, 236, 5, 30, 230, 236, 18, 221, 231, 59, 50, 233, 200, 14, 62, 239, 220, 41, 240, 240, 39, 14, 222, 244, 48,
-			41, 244, 223, 242, 251, 216, 246, 62, 31, 224, 245, 25, 7, 220, 232, 4, 5, 19, 7, 231, 11, 10, 241, 1, 227, 237, 42, 44, 0, 230,
-			244, 239, 238, 30, 34, 19, 234, 196, 215, 23, 37, 14, 3, 214, 0, 36, 255, 192, 185, 50, 91, 43, 253, 218, 226, 244, 2, 250, 243, 41,
-			28, 243, 10, 9, 226, 245, 242, 246, 63, 33, 239, 21, 212, 202, 11, 37, 53, 32, 252, 229, 208, 243, 6, 252, 37, 59, 21, 233, 226, 211,
-			228, 33, 38, 247, 229, 7, 4, 243, 221, 224, 83, 74, 210, 198, 202, 5, 62, 27, 245, 232, 17, 3, 210, 25, 76, 241, 185, 29, 80, 236,
-			201, 228, 20, 78, 39, 240, 185, 200, 56, 76, 13, 237, 223, 200, 246, 48, 32, 251, 249, 13, 39, 14, 199, 171, 10, 79, 44, 241, 166, 181,
-			37, 66, 33, 242, 221, 233, 240, 252, 39, 20, 216, 2, 249, 2, 26, 194, 221, 52, 40, 18, 7, 243, 219, 227, 14, 26, 48, 21, 206, 241,
-			13, 217, 254, 43, 3, 0, 30, 241, 221, 5, 12, 20, 49, 28, 202, 178, 227, 13, 41, 51, 29, 0, 216, 208, 251, 34, 1, 237, 3, 2,
-			5, 4, 230, 240, 7, 42, 31, 246, 207, 213, 19, 6, 27, 82, 243, 194, 220, 10, 42, 32, 230, 208, 63, 60, 192, 239, 16, 251, 34, 47,
-			2, 229, 13, 4, 199, 3, 62, 47, 248, 190, 197, 253, 17, 37, 55, 231, 151, 37, 71, 194, 214, 42, 23, 0, 252, 252, 2, 10, 7, 9,
-			3, 242, 251, 241, 223, 248, 36, 61, 255, 187, 203, 246, 12, 22, 39, 0, 236, 253, 232, 11, 52, 8, 202, 199, 6, 68, 42, 241, 236, 5,
-			255, 0, 15, 249, 0, 243, 252, 60, 38, 215, 184, 231, 37, 66, 34, 229, 237, 17, 11, 244, 7, 16, 254, 253, 25, 0, 212, 251, 2, 222,
-			249, 30, 40, 1, 232, 240, 7, 1, 236, 242, 255, 5, 17, 4, 248, 0, 238, 250, 252, 244, 29, 24, 243, 212, 245, 22, 222, 6, 56, 245,
-			215, 3, 0, 1, 20, 240, 8, 14, 222, 42, 72, 223, 213, 234, 15, 33, 21, 11, 234, 12, 25, 247, 237, 6, 252, 5, 20, 237, 251, 18,
-			255, 17, 12, 4, 251, 214, 239, 21, 12, 41, 11, 180, 214, 52, 31, 238, 248, 2, 8, 29, 247, 216, 2, 40, 248, 240, 7, 243, 22, 18,
-			233, 246, 245, 238, 34, 52, 249, 252, 253, 221, 241, 1, 26, 35, 229, 218, 10, 41, 22, 235, 1, 14, 237, 233, 252, 252, 0, 18, 22, 24,
-			5, 246, 245, 245, 219, 254, 53, 14, 249, 11, 1, 225, 245, 255, 2, 20, 37, 255, 214, 224, 16, 22, 249, 234, 224, 253, 17, 250, 3, 249,
-			227, 233, 255, 54, 44, 225, 209, 209, 232, 60, 95, 239, 172, 222, 31, 27, 252, 12, 0, 252, 32, 37, 35, 224, 180, 246, 55, 47, 11, 231,
-			213, 2, 28, 3, 37, 23, 231, 192, 232, 41, 17, 242, 247, 253, 25, 39, 236, 212, 244, 18, 45, 244, 245, 1, 221, 8, 28, 252, 253, 13,
-			230, 216, 14, 23, 35, 33, 243, 5, 11, 245, 230, 241, 29, 24, 0, 12, 16, 0, 11, 8, 254, 2, 246, 234, 243, 250, 33, 44, 0, 217,
-			214, 238, 15, 50, 11, 215, 211, 6, 28, 254, 2, 234, 219, 23, 24, 37, 25, 218, 243, 255, 233, 246, 25, 13, 251, 28, 11, 14, 33, 223,
-			174, 0, 60, 0, 240, 248, 232, 254, 18, 21, 29, 26, 208, 187, 13, 11, 50, 48, 215, 223, 252, 251, 253, 41, 64, 26, 220, 200, 1, 238,
-			234, 30, 48, 59, 242, 206, 223, 189, 255, 83, 50, 249, 218, 197, 227, 29, 23, 0, 250, 236, 236, 9, 36, 231, 203, 21, 33, 251, 249, 219,
-			221, 243, 51, 33, 243, 240, 223, 21, 15, 0, 51, 252, 191, 17, 68, 32, 242, 238, 232, 225, 32, 62, 6, 206, 1, 29, 233, 221, 248, 20,
-			32, 57, 46, 227, 202, 215, 235, 25, 59, 47, 244, 203, 0, 33, 4, 4, 8, 235, 208, 231, 20, 36, 19, 253, 1, 241, 228, 0, 21, 12,
-			246, 248, 0, 47, 10, 214, 229, 215, 12, 55, 27, 243, 200, 236, 32, 52, 47, 5, 213, 212, 227, 252, 37, 69, 31, 246, 225, 231, 6, 32,
-			49, 205, 190, 21, 238, 210, 243, 5, 12, 27, 55, 253, 169, 195, 239, 19, 11, 45, 63, 219, 192, 4, 255, 246, 27, 11, 249, 38, 52, 38,
-			14, 237, 235, 234, 11, 64, 36, 8, 255, 237, 251, 13, 244, 229, 246, 31, 49, 35, 230, 178, 201, 240, 16, 34, 37, 246, 201, 233, 212, 212,
-			35, 60, 39, 252, 186, 178, 253, 41, 45, 67, 12, 228, 226, 195, 211, 52, 104, 46, 225, 238, 244, 248, 21, 237, 232, 59, 69, 15, 191, 169,
-			251, 50, 67, 33, 253, 232, 212, 236, 245, 254, 26, 14, 252, 242, 245, 221, 193, 246, 31, 60, 77, 16, 170, 160, 240, 57, 64, 19, 225, 220,
-			219, 7, 44, 238, 251, 53, 3, 226, 5, 244, 234, 11, 35, 38, 0, 251, 3, 251, 11, 17, 8, 251, 241, 240, 8, 20, 251, 0, 238, 248,
-			43, 0, 234, 4, 243, 251, 29, 250, 242, 52, 44, 229, 207, 250, 11, 7, 49, 30, 232, 8, 251, 215, 211, 228, 31, 46, 39, 253, 196, 185,
-			253, 51, 4, 253, 14, 240, 242, 3, 253, 236, 249, 16, 22, 22, 4, 254, 0, 252, 248, 238, 249, 243, 252, 27, 8, 222, 235, 22, 12, 242,
-			229, 232, 14, 44, 26, 246, 240, 254, 13, 7, 236, 249, 38, 20, 10, 33, 220, 198, 7, 24, 31, 10, 251, 2, 227, 236, 24, 44, 1, 215,
-			250, 5, 34, 28, 237, 1, 48, 44, 213, 167, 212, 2, 48, 70, 28, 219, 192, 214, 42, 68, 236, 236, 9, 252, 237, 242, 11, 29, 14, 234,
-			213, 219, 232, 20, 57, 32, 246, 194, 196, 239, 26, 53, 35, 28, 246, 228, 241, 3, 50, 33, 19, 34, 14, 234, 218, 245, 9, 26, 44, 16,
-			239, 240, 214, 228, 34, 41, 8, 244, 214, 222, 4, 255, 16, 36, 248, 211, 204, 249, 22, 19, 14, 237, 224, 235, 248, 233, 241, 41, 84, 35,
-			204, 213, 15, 2, 236, 5, 30, 37, 246, 193, 220, 23, 65, 66, 8, 223, 224, 210, 205, 23, 68, 43, 20, 235, 230, 240, 3, 18, 4, 21,
-			30, 254, 248, 10, 3, 253, 10, 23, 26, 245, 240, 4, 217, 207, 6, 28, 7, 253, 226, 197, 1, 41, 13, 248, 212, 224, 242, 247, 25, 45,
-			39, 226, 225, 18, 19, 25, 9, 220, 7, 67, 43, 243, 193, 197, 14, 94, 77, 8, 227, 216, 252, 14, 2, 8, 28, 5, 170, 178, 20, 57,
-			32, 204, 164, 218, 37, 60, 34, 230, 217, 1, 244, 240, 16, 16, 0, 237, 1, 35, 252, 232, 228, 227, 40, 50, 9, 221, 200, 7, 84, 73,
-			26, 244, 174, 182, 39, 81, 49, 17, 194, 183, 0, 28, 45, 27, 227, 230, 2, 12, 251, 244, 248, 218, 10, 25, 3, 22, 238, 233, 246, 233,
-			36, 60, 13, 247, 2, 12, 0, 21, 7, 224, 18, 58, 36, 243, 191, 207, 238, 18, 32, 28, 33, 3, 238, 251, 14, 251, 217, 239, 3, 3,
-			33, 6, 218, 227, 251, 36, 40, 245, 207, 194, 218, 25, 54, 10, 233, 3, 249, 231, 4, 35, 12, 240, 238, 4, 15, 244, 239, 16, 9, 18,
-			15, 224, 251, 18, 12, 247, 1, 17, 253, 254, 254, 7, 245, 4, 52, 7, 202, 226, 6, 14, 17, 22, 242, 214, 3, 33, 21, 19, 228, 199,
-			252, 38, 65, 44, 214, 187, 232, 11, 37, 61, 22, 197, 179, 227, 17, 34, 31, 12, 244, 1, 245, 222, 250, 252, 8, 28, 14, 248, 234, 235,
-			225, 252, 40, 43, 10, 227, 229, 1, 26, 41, 23, 233, 203, 222, 248, 47, 74, 16, 237, 216, 235, 29, 27, 251, 2, 250, 220, 236, 6, 0,
-			9, 49, 56, 15, 218, 197, 210, 249, 46, 46, 16, 251, 225, 225, 2, 13, 11, 32, 253, 211, 247, 12, 240, 251, 14, 243, 13, 49, 12, 218,
-			226, 243, 2, 30, 49, 22, 249, 232, 228, 1, 18, 5, 248, 255, 7, 12, 16, 16, 246, 230, 3, 23, 19, 0, 235, 233, 14, 49, 17, 254,
-			235, 205, 249, 12, 35, 16, 215, 218, 3, 30, 245, 218, 223, 222, 248, 31, 41, 17, 237, 227, 243, 248, 249, 7, 11, 16, 36, 9, 244, 8,
-			8, 247, 255, 39, 36, 240, 220, 245, 20, 41, 17, 243, 254, 13, 15, 13, 250, 230, 238, 252, 11, 15, 9, 1, 11, 22, 253, 223, 232, 8,
-			0, 255, 6, 248, 230, 236, 0, 1, 13, 19, 255, 242, 227, 230, 3, 18, 250, 241, 238, 241, 9, 21, 23, 16, 13, 250, 222, 231, 4, 31,
-			37, 21, 254, 244, 227, 230, 2, 22, 32, 23, 253, 228, 216, 248, 37, 56, 29, 251, 214, 209, 243, 13, 39, 42, 247, 236, 239, 240, 18, 246,
-			254, 31, 246, 235, 3, 245, 250, 10, 13, 22, 20, 11, 239, 228, 227, 4, 17, 6, 17, 16, 0, 236, 12, 33, 250, 254, 247, 241, 14, 249,
-			249, 12, 4, 2, 6, 243, 228, 254, 16, 10, 12, 14, 4, 246, 245, 252, 245, 6, 19, 3, 15, 5, 248, 250, 247, 2, 255, 0, 12, 1,
-			240, 228, 247, 20, 30, 4, 231, 235, 251, 253, 231, 240, 35, 34, 254, 254, 248, 226, 240, 248, 14, 31, 4, 245, 254, 251, 9, 17, 12, 22,
-			4, 227, 222, 5, 29, 16, 245, 239, 24, 8, 246, 14, 13, 244, 228, 238, 5, 29, 18, 5, 249, 229, 250, 3, 15, 15, 247, 241, 237, 248,
-			18, 2, 3, 10, 253, 7, 2, 232, 237, 0, 116, 8, 28, 0, 1, 1, 1, 0, 1, 3, 2, 255, 252, 252, 255, 3, 7, 8, 5, 0,
-			253, 253, 255, 0, 3, 3, 2, 0, 254, 1, 4, 4, 2, 0, 255, 0, 0, 0, 0, 0, 3, 5, 4, 0, 253, 249, 250, 253, 0, 0,
-			254, 253, 254, 1, 8, 10, 5, 255, 244, 238, 239, 246, 245, 231, 228, 234, 249, 20, 41, 42, 24, 1, 239, 232, 245, 9, 24, 27, 17, 1,
-			247, 247, 254, 5, 9, 8, 5, 2, 1, 1, 1, 3, 7, 8, 5, 0, 252, 250, 250, 253, 1, 6, 8, 6, 4, 0, 255, 255, 0, 0,
-			0, 254, 253, 254, 255, 0, 1, 4, 7, 6, 2, 255, 251, 249, 252, 2, 7, 7, 8, 9, 11, 14, 15, 5, 240, 223, 215, 197, 189, 207,
-			232, 6, 33, 41, 31, 15, 4, 253, 254, 4, 12, 21, 21, 15, 8, 254, 248, 249, 255, 2, 1, 0, 3, 3, 0, 254, 0, 3, 6, 9,
-			9, 6, 6, 7, 2, 0, 2, 255, 254, 255, 251, 253, 1, 2, 1, 0, 1, 1, 0, 0, 253, 252, 253, 0, 7, 2, 255, 0, 255, 255,
-			0, 0, 254, 249, 248, 247, 253, 4, 254, 0, 2, 245, 240, 250, 251, 246, 0, 6, 0, 4, 10, 3, 1, 6, 3, 4, 5, 7, 8, 12,
-			2, 252, 0, 2, 0, 9, 7, 255, 6, 12, 254, 254, 9, 251, 241, 6, 13, 247, 253, 8, 249, 254, 10, 2, 1, 1, 251, 252, 4, 251,
-			254, 12, 255, 238, 0, 3, 249, 0, 14, 8, 246, 0, 4, 246, 255, 1, 253, 5, 3, 252, 252, 255, 250, 1, 9, 0, 0, 6, 252, 249,
-			1, 4, 10, 2, 0, 5, 242, 253, 15, 255, 252, 9, 255, 244, 4, 11, 0, 4, 5, 251, 253, 250, 0, 9, 255, 253, 7, 255, 242, 254,
-			4, 248, 12, 17, 245, 253, 0, 246, 8, 9, 249, 6, 3, 244, 253, 4, 248, 4, 10, 253, 0, 7, 2, 4, 254, 0, 254, 252, 254, 251,
-			252, 9, 6, 13, 6, 247, 252, 5, 250, 6, 4, 251, 2, 2, 252, 5, 4, 0, 3, 252, 250, 255, 253, 4, 14, 0, 244, 2, 254, 253,
-			11, 3, 0, 6, 250, 240, 0, 5, 0, 9, 6, 252, 0, 248, 245, 6, 10, 6, 2, 252, 4, 250, 253, 5, 7, 6, 0, 255, 5, 252,
-			252, 0, 3, 2, 252, 255, 5, 248, 0, 5, 245, 251, 17, 6, 0, 9, 249, 248, 3, 2, 0, 6, 6, 248, 240, 0, 254, 248, 14, 12,
-			5, 9, 253, 1, 4, 242, 5, 11, 246, 6, 11, 250, 3, 1, 1, 255, 238, 2, 0, 237, 12, 14, 243, 7, 10, 249, 9, 12, 246, 3,
-			2, 242, 1, 12, 250, 254, 11, 2, 248, 0, 248, 244, 4, 246, 252, 16, 0, 10, 13, 231, 253, 10, 246, 4, 25, 1, 249, 3, 0, 244,
-			1, 12, 6, 4, 6, 0, 250, 248, 252, 255, 2, 1, 10, 0, 245, 254, 8, 1, 0, 11, 1, 241, 1, 0, 243, 15, 15, 240, 11, 11,
-			231, 1, 16, 250, 8, 11, 246, 250, 252, 250, 0, 6, 7, 2, 16, 0, 240, 4, 248, 234, 20, 6, 237, 13, 8, 235, 5, 12, 0, 2,
-			0, 252, 10, 252, 254, 0, 248, 255, 0, 255, 0, 248, 7, 10, 255, 11, 1, 245, 9, 5, 248, 3, 2, 248, 1, 9, 4, 7, 255, 1,
-			13, 249, 247, 9, 248, 245, 15, 8, 4, 14, 247, 246, 11, 246, 242, 19, 0, 245, 16, 251, 239, 16, 246, 233, 24, 6, 237, 17, 252, 235,
-			13, 0, 246, 26, 4, 249, 28, 254, 225, 4, 250, 239, 14, 254, 251, 15, 11, 0, 255, 249, 254, 255, 0, 253, 12, 17, 254, 249, 247, 249,
-			10, 10, 0, 4, 3, 252, 0, 250, 240, 9, 12, 248, 10, 12, 246, 2, 255, 246, 11, 2, 247, 18, 11, 241, 4, 2, 233, 10, 15, 243,
-			0, 2, 247, 3, 254, 254, 19, 8, 251, 0, 252, 240, 243, 4, 4, 9, 19, 0, 248, 10, 239, 239, 18, 252, 1, 22, 248, 247, 14, 251,
-			2, 9, 241, 253, 4, 243, 5, 13, 0, 5, 255, 253, 1, 254, 4, 244, 246, 27, 255, 252, 22, 250, 234, 6, 7, 251, 3, 15, 250, 248,
-			7, 240, 232, 19, 12, 253, 27, 6, 227, 6, 255, 234, 15, 16, 0, 13, 2, 246, 0, 7, 249, 241, 7, 7, 247, 18, 2, 245, 19, 255,
-			230, 10, 245, 249, 34, 7, 247, 28, 249, 223, 2, 2, 250, 13, 13, 249, 249, 245, 3, 13, 255, 251, 5, 241, 246, 19, 2, 251, 16, 249,
-			235, 12, 8, 250, 7, 254, 238, 0, 12, 3, 248, 11, 11, 251, 20, 0, 230, 22, 7, 249, 10, 239, 242, 21, 243, 250, 24, 252, 244, 11,
-			249, 250, 8, 9, 2, 247, 250, 0, 251, 12, 8, 253, 11, 6, 249, 254, 255, 0, 247, 252, 15, 0, 242, 10, 10, 254, 245, 250, 6, 253,
-			250, 21, 255, 241, 0, 1, 255, 247, 2, 27, 241, 247, 25, 255, 236, 3, 237, 244, 13, 10, 15, 19, 3, 11, 250, 233, 11, 15, 247, 8,
-			4, 239, 13, 0, 235, 10, 12, 241, 254, 3, 246, 24, 22, 243, 10, 244, 214, 6, 6, 254, 39, 12, 239, 4, 6, 241, 248, 16, 253, 251,
-			18, 241, 238, 31, 238, 217, 41, 8, 215, 35, 20, 216, 17, 18, 225, 9, 7, 236, 12, 7, 238, 4, 255, 255, 20, 241, 252, 31, 0, 243,
-			20, 8, 238, 6, 1, 6, 252, 234, 18, 18, 235, 14, 250, 242, 14, 252, 249, 26, 251, 233, 253, 13, 251, 232, 22, 33, 242, 250, 30, 239,
-			225, 16, 2, 217, 26, 31, 232, 251, 27, 248, 247, 6, 255, 4, 4, 243, 9, 8, 243, 3, 0, 9, 13, 226, 12, 5, 218, 40, 38, 230,
-			26, 242, 233, 13, 233, 248, 41, 236, 245, 31, 234, 245, 19, 233, 2, 17, 231, 4, 11, 230, 254, 13, 247, 16, 20, 7, 8, 246, 240, 0,
-			243, 8, 36, 2, 229, 22, 15, 229, 13, 6, 245, 4, 0, 243, 244, 9, 26, 232, 14, 45, 217, 245, 34, 212, 255, 51, 235, 235, 50, 245,
-			248, 36, 228, 220, 18, 238, 250, 27, 244, 238, 12, 245, 248, 14, 254, 254, 25, 6, 248, 7, 238, 254, 27, 2, 249, 6, 235, 9, 7, 11,
-			5, 248, 252, 253, 230, 249, 24, 3, 240, 42, 23, 233, 10, 254, 219, 3, 0, 233, 18, 18, 235, 3, 29, 0, 234, 247, 247, 252, 254, 11,
-			21, 0, 253, 253, 237, 11, 42, 237, 252, 29, 232, 225, 21, 254, 7, 8, 219, 249, 39, 231, 22, 47, 219, 6, 41, 225, 9, 11, 221, 3,
-			19, 250, 1, 9, 240, 252, 4, 255, 11, 239, 254, 23, 254, 237, 22, 253, 245, 19, 247, 237, 14, 245, 244, 21, 5, 244, 1, 1, 6, 251,
-			253, 37, 7, 230, 37, 17, 207, 6, 31, 229, 242, 28, 251, 234, 13, 244, 250, 24, 249, 3, 13, 214, 18, 47, 242, 12, 3, 245, 44, 7,
-			224, 43, 255, 223, 45, 245, 233, 22, 252, 255, 255, 203, 245, 221, 170, 235, 244, 185, 26, 35, 218, 12, 20, 237, 40, 35, 238, 43, 32, 236,
-			46, 20, 220, 62, 253, 205, 55, 6, 197, 57, 251, 209, 49, 23, 225, 43, 244, 227, 23, 20, 244, 0, 18, 12, 221, 245, 47, 234, 243, 48,
-			249, 193, 37, 13, 210, 11, 34, 254, 10, 244, 25, 4, 215, 13, 17, 201, 22, 7, 187, 38, 30, 204, 40, 12, 212, 9, 242, 230, 21, 220,
-			0, 45, 229, 236, 25, 249, 17, 23, 253, 10, 254, 24, 242, 239, 17, 240, 230, 41, 5, 216, 19, 29, 222, 11, 62, 219, 202, 48, 245, 216,
-			44, 21, 213, 21, 1, 229, 253, 11, 0, 8, 233, 19, 9, 252, 254, 252, 16, 40, 241, 251, 13, 230, 249, 17, 2, 0, 9, 19, 3, 238,
-			15, 241, 251, 24, 248, 4, 4, 231, 235, 245, 7, 37, 14, 253, 14, 3, 221, 0, 233, 245, 25, 4, 3, 67, 225, 220, 55, 231, 194, 74,
-			230, 203, 79, 237, 180, 76, 232, 231, 116, 223, 210, 46, 174, 240, 68, 180, 34, 50, 185, 40, 39, 162, 23, 38, 217, 29, 41, 200, 28, 28,
-			200, 11, 38, 194, 16, 45, 244, 4, 13, 231, 6, 7, 211, 35, 19, 217, 0, 14, 240, 15, 14, 12, 254, 250, 24, 245, 252, 32, 224, 0,
-			44, 204, 13, 21, 223, 37, 248, 194, 77, 6, 179, 56, 20, 171, 37, 22, 184, 47, 22, 226, 56, 231, 204, 78, 231, 199, 69, 235, 210, 63,
-			229, 228, 82, 221, 215, 85, 191, 216, 86, 229, 225, 90, 220, 209, 51, 246, 211, 59, 12, 222, 47, 249, 179, 63, 21, 160, 89, 23, 159, 66,
-			27, 130, 31, 55, 192, 12, 60, 209, 3, 56, 232, 247, 42, 243, 226, 33, 243, 198, 23, 9, 216, 36, 16, 201, 251, 25, 255, 245, 18, 22,
-			250, 8, 19, 210, 17, 9, 237, 50, 11, 201, 45, 8, 207, 36, 251, 239, 37, 238, 215, 49, 1, 222, 56, 26, 210, 251, 245, 236, 34, 19,
-			238, 1, 25, 205, 236, 50, 243, 216, 46, 14, 219, 12, 1, 220, 37, 31, 215, 23, 5, 224, 15, 17, 248, 24, 218, 236, 36, 210, 32, 44,
-			182, 24, 92, 168, 243, 73, 212, 241, 60, 226, 237, 43, 212, 250, 36, 252, 254, 29, 220, 18, 4, 218, 11, 17, 224, 68, 35, 166, 19, 7,
-			191, 49, 42, 220, 32, 246, 246, 16, 200, 21, 79, 208, 16, 59, 150, 233, 49, 212, 16, 52, 232, 253, 19, 210, 228, 0, 7, 10, 22, 23,
-			249, 214, 37, 251, 199, 20, 41, 224, 36, 27, 185, 2, 25, 208, 33, 52, 207, 15, 28, 218, 18, 17, 238, 48, 16, 200, 17, 253, 213, 41,
-			29, 223, 4, 0, 0, 29, 247, 230, 5, 242, 248, 31, 17, 235, 244, 239, 27, 11, 245, 27, 239, 226, 58, 9, 206, 19, 244, 239, 76, 253,
-			210, 20, 254, 254, 25, 237, 249, 41, 12, 228, 249, 253, 236, 2, 40, 18, 210, 247, 12, 243, 239, 232, 246, 13, 240, 37, 27, 213, 23, 41,
-			196, 247, 46, 233, 237, 25, 0, 242, 6, 238, 0, 31, 4, 249, 9, 254, 238, 248, 25, 26, 237, 244, 21, 238, 242, 32, 251, 225, 5, 255,
-			221, 14, 19, 244, 18, 7, 13, 22, 243, 253, 236, 246, 35, 15, 243, 25, 2, 243, 18, 15, 247, 22, 248, 237, 35, 0, 231, 8, 246, 245,
-			14, 246, 5, 3, 231, 16, 232, 228, 19, 253, 245, 34, 251, 250, 30, 240, 231, 33, 251, 240, 13, 228, 247, 33, 223, 3, 44, 248, 253, 10,
-			252, 7, 30, 33, 0, 3, 14, 7, 249, 246, 0, 247, 241, 23, 11, 253, 1, 229, 230, 16, 248, 234, 11, 222, 224, 38, 0, 217, 31, 0,
-			206, 47, 5, 206, 54, 20, 207, 32, 18, 204, 19, 67, 209, 237, 49, 209, 228, 60, 217, 229, 66, 241, 214, 50, 9, 224, 38, 3, 215, 31,
-			10, 231, 36, 5, 223, 14, 24, 220, 2, 39, 210, 215, 58, 239, 204, 51, 254, 201, 33, 0, 203, 30, 28, 222, 18, 38, 211, 236, 47, 220,
-			241, 40, 253, 237, 47, 43, 214, 6, 53, 240, 0, 47, 252, 0, 42, 20, 244, 9, 6, 244, 4, 19, 3, 252, 7, 4, 226, 245, 24, 244,
-			253, 37, 245, 225, 20, 242, 223, 11, 8, 241, 21, 21, 233, 0, 12, 221, 254, 13, 221, 0, 8, 211, 243, 249, 242, 251, 0, 228, 241, 250,
-			236, 11, 7, 243, 16, 1, 250, 7, 253, 247, 8, 1, 247, 20, 6, 218, 12, 27, 249, 11, 29, 249, 6, 7, 255, 16, 255, 6, 40, 6,
-			2, 30, 10, 249, 251, 6, 244, 239, 2, 2, 253, 10, 22, 253, 6, 25, 252, 247, 28, 1, 233, 2, 251, 227, 1, 15, 228, 244, 8, 234,
-			249, 22, 255, 252, 9, 3, 239, 0, 11, 5, 246, 0, 5, 253, 8, 3, 250, 242, 4, 5, 235, 243, 15, 245, 247, 8, 244, 246, 8, 4,
-			251, 13, 254, 255, 11, 12, 9, 14, 28, 12, 255, 13, 6, 250, 3, 11, 4, 10, 23, 0, 236, 1, 15, 251, 4, 11, 250, 255, 4, 247,
-			249, 8, 253, 253, 12, 255, 237, 251, 3, 246, 248, 245, 238, 250, 3, 254, 8, 5, 1, 252, 1, 253, 241, 7, 15, 237, 240, 0, 232, 248,
-			15, 248, 237, 242, 232, 247, 254, 242, 250, 250, 252, 1, 0, 251, 5, 251, 2, 11, 232, 11, 45, 0, 13, 13, 13, 13, 13, 13, 13, 13,
-			13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-			13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15,
-			15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 16,
-			17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18,
-			18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
-			18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-			17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 17, 17, 17, 16, 16, 16, 16, 16, 16,
-			16, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15,
-			16, 15, 15, 15, 15, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13,
-			13, 14, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-			11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-			9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9,
-			9, 10, 10, 10, 10, 9, 9, 9, 10, 10, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-			9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
-			9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-			10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-			12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-			14, 14, 15, 15, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15,
-			16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,
-			16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 17, 17, 16, 16, 17, 17, 17, 17, 16, 16, 16, 16, 17, 17, 16, 17, 17, 17, 17, 17,
-			16, 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16,
-			16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 16, 16, 16, 16, 15, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15,
-			15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-			14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 12, 12,
-			12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 11, 11, 11, 11,
-			11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-			10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-			10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10,
-			10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-			11, 11, 11, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,
-			13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-			13, 13, 13, 13, 13, 13, 13, 13, 13, 11, 9, 3, 0, 0, 12, 42, 58, 34, 0, 250, 6, 11, 11, 14, 16, 14, 14, 19, 23, 24,
-			20, 14, 10, 10, 11, 13, 17, 22, 23, 20, 15, 13, 15, 17, 18, 18, 16, 13, 12, 14, 19, 22, 23, 21, 17, 14, 12, 13, 17, 20,
-			21, 21, 19, 17, 16, 16, 17, 17, 18, 19, 20, 19, 17, 17, 19, 19, 17, 17, 17, 17, 18, 19, 19, 19, 17, 16, 15, 16, 17, 19,
-			20, 20, 18, 17, 16, 17, 17, 17, 17, 18, 19, 18, 17, 16, 17, 17, 18, 18, 17, 16, 16, 17, 17, 17, 18, 18, 19, 19, 18, 17,
-			15, 17, 18, 16, 16, 19, 20, 17, 16, 18, 18, 17, 16, 17, 18, 18, 17, 17, 17, 18, 18, 17, 16, 17, 17, 17, 16, 17, 18, 17,
-			17, 18, 18, 18, 16, 16, 14, 8, 249, 229, 213, 226, 37, 119, 127, 62, 10, 0, 241, 208, 200, 228, 1, 13, 22, 44, 70, 85, 77, 49,
-			14, 239, 221, 226, 248, 11, 13, 5, 5, 20, 35, 46, 55, 61, 51, 13, 214, 182, 207, 7, 48, 60, 61, 55, 37, 12, 254, 0, 3, 0,
-			253, 3, 17, 30, 42, 46, 36, 16, 255, 243, 246, 10, 29, 26, 16, 15, 9, 247, 227, 214, 223, 9, 67, 95, 76, 37, 8, 0, 1, 0,
-			255, 249, 238, 245, 24, 54, 52, 41, 38, 18, 239, 227, 250, 22, 32, 33, 32, 23, 6, 0, 14, 26, 12, 250, 251, 5, 13, 24, 31, 28,
-			21, 17, 11, 1, 0, 0, 3, 15, 25, 17, 7, 13, 29, 34, 14, 243, 244, 14, 24, 6, 252, 5, 24, 34, 22, 10, 14, 15, 0, 253,
-			18, 22, 1, 253, 14, 20, 13, 10, 12, 21, 25, 11, 254, 6, 19, 16, 6, 6, 8, 10, 21, 29, 17, 254, 249, 6, 29, 36, 12, 251,
-			4, 13, 8, 16, 27, 19, 10, 7, 0, 7, 32, 30, 251, 240, 14, 36, 20, 11, 22, 15, 0, 2, 10, 20, 29, 10, 239, 3, 45, 35,
-			251, 2, 39, 29, 243, 233, 8, 47, 42, 5, 249, 10, 23, 19, 12, 6, 9, 17, 20, 13, 3, 9, 28, 33, 12, 240, 239, 11, 44, 48,
-			23, 0, 247, 247, 5, 31, 43, 28, 6, 0, 6, 6, 3, 13, 20, 15, 13, 20, 21, 11, 8, 22, 22, 250, 243, 14, 26, 17, 26, 42,
-			19, 237, 240, 30, 45, 2, 240, 19, 35, 10, 8, 30, 25, 7, 13, 19, 253, 237, 11, 57, 52, 2, 233, 4, 34, 23, 8, 18, 25, 8,
-			1, 20, 32, 21, 8, 8, 10, 9, 6, 16, 42, 48, 16, 241, 244, 18, 44, 39, 18, 4, 247, 244, 20, 63, 44, 248, 249, 28, 28, 8,
-			7, 15, 20, 27, 17, 3, 14, 31, 19, 250, 248, 9, 16, 252, 221, 216, 242, 20, 55, 92, 103, 60, 3, 241, 250, 244, 228, 252, 47, 54,
-			11, 8, 68, 92, 33, 216, 200, 251, 45, 30, 9, 55, 79, 9, 225, 18, 41, 10, 13, 39, 26, 247, 225, 251, 61, 76, 22, 4, 34, 31,
-			1, 246, 252, 12, 33, 47, 37, 0, 239, 26, 60, 20, 244, 24, 43, 0, 237, 21, 56, 33, 251, 241, 9, 58, 67, 13, 242, 13, 14, 246,
-			12, 38, 18, 8, 24, 28, 23, 17, 14, 26, 22, 246, 248, 27, 33, 25, 32, 11, 239, 8, 50, 35, 255, 249, 17, 40, 29, 2, 5, 34,
-			19, 234, 6, 69, 43, 241, 251, 21, 37, 51, 16, 207, 211, 32, 90, 74, 14, 230, 237, 17, 44, 41, 9, 236, 253, 35, 36, 19, 21, 13,
-			13, 50, 38, 212, 204, 50, 94, 18, 228, 5, 34, 32, 22, 2, 253, 19, 17, 249, 19, 64, 47, 1, 236, 239, 15, 44, 24, 253, 21, 40,
-			3, 239, 11, 41, 39, 31, 12, 229, 222, 3, 41, 46, 33, 12, 4, 26, 27, 242, 220, 8, 59, 41, 252, 252, 10, 4, 11, 41, 38, 252,
-			234, 14, 48, 20, 236, 235, 22, 60, 34, 228, 238, 55, 67, 4, 205, 208, 18, 85, 66, 253, 228, 240, 2, 39, 53, 20, 0, 253, 232, 245,
-			48, 50, 248, 235, 26, 64, 31, 209, 194, 39, 106, 18, 191, 238, 56, 47, 253, 243, 24, 32, 246, 249, 43, 33, 242, 252, 17, 0, 8, 41,
-			32, 254, 245, 0, 3, 12, 36, 47, 18, 232, 232, 24, 50, 7, 225, 248, 35, 45, 31, 0, 215, 239, 64, 80, 0, 210, 241, 20, 26, 28,
-			15, 250, 0, 32, 43, 13, 246, 244, 2, 17, 16, 10, 24, 27, 245, 251, 42, 33, 252, 254, 250, 246, 30, 47, 10, 2, 20, 5, 243, 10,
-			37, 28, 10, 252, 240, 254, 31, 54, 33, 240, 214, 254, 67, 70, 242, 200, 7, 46, 15, 19, 36, 253, 228, 15, 34, 11, 12, 19, 3, 13,
-			36, 7, 237, 14, 28, 254, 5, 37, 14, 249, 26, 37, 247, 232, 23, 47, 13, 243, 253, 12, 24, 52, 48, 253, 235, 5, 8, 245, 5, 41,
-			46, 16, 2, 21, 22, 241, 221, 20, 88, 59, 216, 193, 34, 98, 30, 225, 254, 10, 248, 32, 85, 37, 217, 230, 26, 30, 14, 28, 38, 24,
-			255, 240, 5, 40, 24, 242, 18, 75, 50, 242, 227, 242, 13, 56, 59, 11, 242, 253, 17, 40, 39, 11, 250, 253, 15, 50, 56, 3, 222, 0,
-			41, 26, 19, 41, 24, 233, 244, 47, 45, 0, 1, 37, 30, 3, 7, 23, 24, 9, 2, 9, 16, 34, 54, 38, 254, 237, 245, 0, 27, 61,
-			55, 9, 246, 10, 14, 2, 19, 44, 33, 252, 237, 16, 69, 54, 238, 225, 30, 58, 25, 252, 238, 244, 50, 97, 26, 201, 231, 37, 43, 48,
-			41, 241, 233, 35, 37, 254, 26, 59, 1, 207, 249, 44, 63, 68, 30, 222, 213, 1, 37, 53, 44, 1, 240, 27, 43, 0, 1, 45, 28, 236,
-			248, 26, 28, 24, 23, 16, 27, 35, 6, 243, 5, 21, 25, 29, 21, 9, 12, 13, 9, 26, 40, 17, 235, 235, 29, 78, 61, 254, 225, 240,
-			6, 38, 55, 24, 251, 6, 23, 21, 25, 24, 3, 253, 15, 24, 25, 23, 11, 11, 29, 27, 13, 9, 254, 255, 33, 54, 21, 245, 3, 31,
-			25, 0, 255, 27, 48, 20, 238, 244, 31, 52, 30, 246, 234, 13, 45, 33, 4, 1, 15, 26, 21, 0, 244, 7, 46, 47, 6, 239, 3, 24,
-			11, 8, 30, 26, 250, 251, 17, 31, 37, 9, 225, 250, 47, 36, 0, 1, 19, 17, 1, 3, 19, 18, 5, 19, 28, 253, 240, 10, 26, 21,
-			25, 19, 0, 250, 3, 18, 25, 24, 12, 255, 252, 16, 38, 7, 226, 10, 83, 51, 215, 199, 5, 56, 48, 7, 238, 2, 26, 13, 0, 24,
-			35, 4, 247, 12, 12, 254, 10, 21, 9, 2, 13, 29, 32, 12, 242, 254, 27, 18, 243, 239, 16, 54, 50, 10, 242, 253, 8, 3, 14, 38,
-			22, 242, 244, 12, 35, 47, 20, 230, 241, 30, 22, 4, 36, 41, 234, 214, 22, 58, 26, 254, 253, 13, 32, 30, 3, 247, 6, 16, 9, 18,
-			41, 27, 243, 242, 22, 44, 22, 3, 6, 253, 248, 29, 55, 14, 241, 12, 38, 18, 251, 8, 35, 23, 239, 231, 18, 60, 48, 12, 6, 250,
-			215, 246, 83, 94, 3, 210, 225, 243, 26, 85, 73, 250, 206, 238, 38, 64, 29, 226, 222, 32, 84, 34, 203, 218, 63, 74, 236, 209, 25, 66,
-			36, 4, 248, 237, 241, 15, 57, 61, 6, 222, 249, 47, 54, 5, 224, 247, 35, 40, 12, 5, 19, 5, 247, 27, 64, 25, 226, 238, 31, 42,
-			22, 4, 247, 252, 28, 49, 46, 28, 247, 221, 246, 33, 57, 53, 12, 229, 248, 42, 43, 0, 239, 13, 45, 47, 32, 0, 231, 253, 34, 31,
-			16, 25, 30, 8, 254, 28, 44, 10, 242, 6, 31, 30, 30, 33, 14, 248, 253, 17, 26, 33, 44, 30, 253, 248, 15, 24, 18, 15, 15, 23,
-			29, 18, 7, 12, 26, 37, 28, 247, 230, 19, 61, 38, 4, 8, 10, 2, 21, 46, 39, 12, 244, 235, 13, 58, 40, 0, 10, 38, 17, 242,
-			5, 47, 44, 1, 246, 17, 36, 27, 10, 12, 21, 8, 0, 24, 50, 39, 8, 250, 9, 28, 2, 242, 31, 67, 32, 0, 8, 13, 7, 7,
-			20, 34, 29, 14, 7, 2, 0, 27, 56, 35, 247, 240, 15, 36, 24, 9, 14, 24, 15, 3, 14, 32, 30, 17, 0, 239, 2, 54, 55, 4,
-			246, 21, 26, 254, 253, 25, 45, 27, 254, 255, 18, 21, 13, 21, 31, 14, 249, 253, 7, 21, 48, 50, 7, 233, 247, 20, 32, 22, 16, 18,
-			15, 9, 7, 8, 20, 34, 21, 253, 0, 25, 31, 6, 0, 26, 36, 5, 239, 9, 54, 46, 1, 245, 255, 0, 16, 44, 45, 11, 240, 0,
-			31, 29, 7, 0, 13, 33, 29, 0, 246, 8, 35, 35, 4, 253, 27, 28, 243, 247, 52, 59, 250, 217, 254, 31, 30, 28, 21, 4, 2, 12,
-			12, 17, 31, 18, 242, 241, 21, 38, 15, 9, 33, 27, 247, 243, 12, 19, 11, 20, 31, 13, 0, 8, 4, 252, 20, 38, 13, 247, 6, 20,
-			18, 34, 30, 240, 221, 5, 35, 26, 15, 13, 20, 21, 254, 241, 13, 36, 15, 247, 250, 7, 29, 45, 17, 239, 255, 19, 2, 1, 22, 18,
-			10, 13, 4, 7, 30, 20, 238, 242, 27, 32, 11, 15, 12, 247, 3, 32, 15, 252, 11, 16, 247, 249, 37, 53, 5, 219, 245, 34, 39, 8,
-			247, 3, 18, 11, 6, 26, 32, 0, 232, 248, 21, 29, 20, 15, 9, 5, 9, 8, 2, 3, 2, 4, 27, 35, 7, 254, 17, 9, 246, 10,
-			32, 13, 249, 3, 27, 30, 13, 0, 3, 11, 12, 6, 255, 253, 15, 46, 48, 11, 236, 240, 1, 16, 30, 32, 10, 240, 251, 35, 53, 27,
-			239, 222, 251, 38, 51, 27, 252, 241, 4, 33, 33, 12, 0, 253, 252, 12, 36, 34, 10, 255, 9, 17, 11, 13, 22, 9, 244, 4, 40, 44,
-			15, 241, 241, 21, 43, 20, 0, 3, 12, 17, 19, 17, 15, 6, 0, 18, 39, 17, 241, 251, 22, 20, 12, 28, 42, 19, 240, 235, 9, 38,
-			34, 13, 9, 19, 5, 249, 23, 49, 19, 240, 254, 31, 32, 7, 1, 13, 18, 21, 27, 21, 9, 8, 4, 2, 20, 37, 28, 15, 16, 15,
-			5, 253, 4, 25, 37, 33, 23, 12, 7, 5, 5, 14, 24, 18, 14, 28, 38, 25, 253, 241, 2, 29, 38, 30, 21, 16, 5, 254, 8, 24,
-			29, 32, 26, 8, 8, 19, 9, 254, 19, 42, 30, 8, 5, 13, 17, 15, 14, 11, 9, 17, 39, 46, 14, 234, 241, 18, 31, 22, 25, 34,
-			31, 13, 246, 242, 11, 35, 34, 29, 26, 9, 250, 255, 17, 30, 27, 8, 2, 27, 41, 19, 255, 2, 6, 4, 13, 32, 41, 27, 6, 4,
-			18, 16, 254, 252, 19, 40, 33, 11, 6, 12, 7, 8, 31, 41, 14, 242, 248, 20, 42, 35, 7, 248, 5, 25, 27, 21, 23, 22, 1, 242,
-			5, 35, 32, 13, 13, 24, 21, 8, 255, 4, 21, 27, 20, 13, 9, 11, 22, 23, 8, 5, 19, 21, 8, 2, 10, 25, 36, 27, 1, 248,
-			12, 30, 13, 252, 18, 40, 14, 248, 11, 30, 20, 11, 14, 8, 1, 9, 22, 22, 15, 11, 10, 10, 13, 15, 16, 17, 17, 10, 2, 6,
-			17, 19, 15, 16, 15, 10, 9, 13, 12, 10, 14, 15, 13, 11, 8, 7, 13, 17, 12, 11, 21, 18, 2, 255, 9, 13, 14, 19, 16, 9,
-			8, 9, 5, 6, 18, 24, 13, 255, 4, 20, 17, 3, 8, 19, 10, 253, 2, 20, 23, 11, 5, 13, 17, 7, 1, 6, 12, 15, 13, 8,
-			2, 6, 18, 24, 13, 0, 1, 12, 10, 2, 11, 20, 12, 2, 4, 10, 16, 15, 6, 3, 12, 14, 8, 10, 14, 9, 4, 7, 8, 7,
-			14, 23, 19, 5, 0, 8, 14, 12, 9, 7, 6, 12, 17, 10, 2, 9, 21, 22, 11, 0, 0, 12, 16, 10, 9, 12, 8, 7, 13, 12,
-			7, 11, 21, 21, 11, 4, 5, 10, 9, 3, 218, 12, 24, 0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22,
-			22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 22, 22, 22, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22,
-			22, 23, 23, 23, 23, 23, 23, 23, 22, 23, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23,
-			23, 24, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
-			23, 23, 23, 24, 24, 24, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-			25, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 26, 26, 26, 27, 27, 27, 27, 27, 27, 28, 28,
-			28, 28, 28, 28, 28, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 29, 29, 28, 28, 28, 28, 29, 28, 28, 28, 29, 29, 29, 29,
-			29, 29, 29, 29, 29, 29, 30, 30, 29, 29, 29, 30, 29, 29, 29, 29, 29, 30, 30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-			29, 29, 29, 29, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28, 29, 29, 29,
-			28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 28, 28, 28, 27, 28, 28, 28, 27, 27, 27, 27, 28, 27, 27, 28, 28, 28, 28, 28,
-			28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-			28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26,
-			26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23,
-			23, 23, 24, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 22, 23, 22, 22, 22, 22,
-			22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 21, 21, 21, 21, 21,
-			22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 22, 22, 23, 22, 22, 22, 23,
-			23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22,
-			22, 22, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 23, 23, 23,
-			23, 22, 22, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-			24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-			26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 27, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27,
-			27, 27, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 30,
-			30, 30, 30, 30, 30, 29, 30, 30, 30, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-			30, 30, 30, 30, 30, 30, 30, 30, 29, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-			29, 29, 29, 29, 29, 28, 28, 28, 29, 29, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-			28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 28, 28, 28, 28, 27, 27, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27,
-			27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 26, 26, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-			25, 25, 26, 26, 26, 25, 26, 26, 26, 25, 25, 25, 25, 24, 25, 25, 25, 25, 25, 24, 24, 24, 24, 23, 23, 23, 23, 23, 22, 23,
-			23, 23, 23, 23, 22, 23, 22, 22, 22, 22, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 20,
-			21, 21, 22, 22, 22, 21, 20, 19, 19, 19, 20, 20, 20, 21, 20, 20, 20, 21, 22, 21, 20, 20, 18, 1, 223, 195, 201, 247, 42, 74,
-			82, 63, 30, 3, 239, 210, 185, 197, 243, 24, 43, 60, 71, 65, 53, 43, 28, 6, 246, 241, 247, 6, 31, 56, 69, 66, 48, 24, 2, 250,
-			253, 5, 14, 23, 30, 34, 37, 38, 33, 25, 18, 11, 7, 3, 4, 12, 23, 33, 39, 39, 34, 24, 14, 7, 4, 5, 16, 34, 44, 35,
-			22, 16, 24, 25, 13, 9, 24, 35, 27, 11, 13, 31, 44, 39, 22, 12, 10, 13, 18, 26, 35, 39, 32, 17, 10, 15, 22, 30, 36, 34,
-			24, 14, 15, 26, 34, 30, 20, 22, 25, 24, 23, 26, 28, 26, 31, 38, 23, 4, 8, 37, 49, 32, 15, 16, 28, 32, 25, 22, 23, 19,
-			25, 32, 34, 27, 22, 19, 20, 30, 36, 33, 23, 18, 14, 21, 26, 32, 45, 43, 15, 242, 252, 15, 17, 6, 21, 48, 55, 54, 39, 12,
-			4, 29, 52, 25, 7, 27, 38, 17, 18, 53, 54, 23, 19, 42, 37, 3, 252, 33, 64, 47, 12, 14, 33, 42, 35, 31, 16, 13, 44, 47,
-			5, 4, 42, 51, 32, 29, 35, 8, 15, 39, 52, 39, 35, 41, 16, 254, 12, 66, 73, 32, 254, 252, 40, 71, 52, 15, 24, 50, 32, 3,
-			10, 44, 49, 33, 31, 31, 11, 234, 227, 236, 6, 39, 50, 44, 23, 28, 57, 60, 34, 34, 41, 26, 14, 18, 22, 38, 67, 70, 35, 1,
-			1, 27, 53, 49, 27, 20, 29, 27, 11, 9, 39, 66, 51, 41, 28, 249, 240, 27, 71, 48, 16, 32, 34, 8, 23, 61, 40, 9, 27, 37,
-			13, 1, 38, 56, 28, 35, 74, 29, 206, 243, 85, 88, 29, 37, 44, 253, 229, 28, 76, 58, 26, 24, 29, 16, 26, 31, 42, 39, 24, 15,
-			15, 48, 53, 23, 4, 31, 50, 35, 29, 32, 28, 23, 25, 14, 29, 51, 23, 3, 45, 75, 18, 231, 26, 88, 47, 244, 247, 31, 48, 44,
-			33, 22, 21, 30, 38, 21, 12, 15, 39, 68, 39, 249, 5, 39, 23, 1, 34, 83, 51, 235, 246, 51, 57, 18, 25, 24, 246, 248, 71, 98,
-			15, 231, 1, 28, 32, 46, 70, 19, 227, 4, 59, 49, 23, 4, 252, 27, 48, 24, 22, 78, 39, 214, 230, 56, 60, 252, 22, 68, 26, 212,
-			12, 82, 34, 236, 22, 74, 18, 232, 22, 59, 36, 247, 13, 55, 25, 1, 24, 53, 17, 237, 2, 36, 34, 33, 69, 27, 213, 246, 65, 42,
-			248, 4, 46, 52, 20, 18, 13, 245, 24, 66, 39, 237, 244, 35, 27, 34, 57, 36, 251, 245, 40, 25, 243, 15, 52, 64, 7, 211, 0, 87,
-			73, 244, 227, 29, 53, 247, 245, 66, 72, 0, 246, 28, 19, 250, 22, 72, 41, 235, 238, 22, 70, 59, 5, 0, 26, 19, 245, 7, 58, 67,
-			25, 19, 34, 248, 217, 14, 84, 79, 5, 243, 2, 9, 37, 57, 33, 253, 255, 27, 49, 43, 15, 6, 31, 63, 14, 201, 255, 89, 76, 245,
-			251, 57, 67, 7, 235, 19, 21, 0, 50, 86, 25, 226, 7, 45, 25, 4, 35, 57, 28, 39, 37, 239, 231, 44, 73, 9, 241, 43, 62, 3,
-			237, 67, 91, 253, 219, 11, 33, 33, 25, 45, 54, 15, 19, 29, 4, 249, 46, 78, 7, 229, 36, 79, 64, 23, 238, 248, 38, 51, 36, 21,
-			8, 20, 52, 28, 239, 19, 69, 58, 27, 21, 24, 247, 236, 47, 64, 25, 42, 80, 30, 241, 254, 23, 59, 59, 39, 0, 235, 39, 67, 41,
-			39, 46, 12, 237, 255, 47, 81, 69, 21, 1, 12, 26, 41, 34, 35, 59, 57, 254, 238, 68, 79, 10, 255, 35, 45, 2, 15, 71, 94, 40,
-			217, 246, 69, 58, 251, 14, 92, 59, 243, 20, 74, 8, 229, 75, 97, 6, 221, 25, 67, 51, 42, 55, 21, 240, 36, 52, 20, 34, 55, 22,
-			6, 42, 78, 31, 229, 252, 82, 122, 40, 207, 229, 59, 71, 32, 20, 33, 63, 34, 246, 2, 54, 89, 62, 17, 239, 242, 37, 57, 27, 24,
-			58, 65, 25, 11, 41, 40, 254, 255, 34, 46, 62, 62, 18, 243, 25, 88, 53, 0, 23, 28, 254, 252, 67, 93, 12, 241, 34, 55, 15, 255,
-			53, 59, 36, 23, 16, 11, 13, 51, 63, 20, 247, 36, 76, 45, 8, 1, 14, 37, 41, 45, 26, 0, 22, 59, 43, 25, 41, 31, 252, 3,
-			33, 70, 64, 24, 33, 9, 242, 18, 64, 51, 18, 16, 25, 16, 36, 73, 38, 235, 237, 39, 48, 22, 39, 37, 8, 23, 55, 17, 234, 10,
-			36, 38, 37, 32, 0, 251, 24, 39, 33, 35, 20, 0, 32, 44, 28, 21, 38, 20, 238, 29, 90, 56, 235, 254, 33, 25, 29, 69, 55, 246,
-			245, 31, 37, 6, 31, 65, 32, 234, 243, 59, 71, 5, 221, 1, 42, 44, 42, 14, 252, 23, 41, 21, 4, 13, 32, 27, 250, 9, 43, 44,
-			37, 22, 5, 5, 14, 14, 26, 38, 16, 0, 31, 48, 27, 255, 254, 251, 10, 64, 70, 12, 220, 243, 35, 22, 244, 25, 71, 45, 239, 241,
-			11, 254, 15, 65, 42, 235, 225, 8, 45, 56, 35, 251, 232, 4, 39, 27, 249, 8, 46, 26, 251, 17, 35, 18, 0, 10, 30, 17, 14, 20,
-			18, 6, 254, 9, 28, 28, 16, 39, 54, 4, 202, 226, 21, 57, 71, 46, 1, 227, 245, 24, 29, 22, 14, 22, 45, 20, 240, 10, 40, 30,
-			8, 250, 13, 48, 45, 15, 253, 254, 13, 18, 39, 41, 250, 231, 15, 67, 56, 21, 245, 247, 5, 249, 228, 230, 4, 10, 12, 18, 248, 233,
-			6, 43, 59, 32, 236, 247, 49, 73, 37, 9, 13, 29, 35, 23, 13, 8, 18, 36, 36, 16, 4, 27, 47, 15, 254, 30, 61, 39, 250, 246,
-			17, 22, 24, 36, 20, 0, 3, 18, 22, 28, 33, 16, 252, 3, 29, 39, 37, 34, 20, 13, 27, 34, 15, 13, 46, 63, 52, 14, 247, 8,
-			45, 66, 44, 7, 1, 19, 34, 35, 22, 30, 46, 47, 18, 252, 5, 12, 30, 57, 56, 28, 253, 3, 30, 26, 20, 33, 38, 33, 37, 34,
-			16, 14, 32, 50, 40, 5, 255, 29, 59, 61, 33, 19, 33, 38, 8, 248, 24, 61, 61, 28, 11, 28, 39, 34, 31, 41, 30, 10, 25, 56,
-			25, 254, 29, 42, 25, 32, 57, 42, 20, 20, 20, 16, 39, 60, 38, 2, 16, 71, 69, 20, 22, 41, 44, 35, 23, 37, 31, 22, 44, 66,
-			37, 1, 9, 36, 51, 25, 26, 58, 42, 3, 2, 35, 49, 34, 18, 10, 29, 56, 53, 19, 5, 15, 29, 41, 34, 36, 26, 18, 33, 60,
-			61, 42, 14, 251, 17, 56, 69, 34, 16, 26, 28, 33, 40, 42, 34, 28, 28, 23, 25, 43, 49, 22, 16, 42, 48, 26, 24, 44, 54, 35,
-			24, 26, 9, 17, 63, 71, 15, 248, 24, 76, 78, 17, 231, 1, 53, 57, 23, 18, 39, 25, 252, 28, 86, 54, 0, 2, 49, 55, 1, 10,
-			66, 77, 42, 10, 4, 25, 34, 28, 21, 39, 68, 48, 9, 8, 41, 47, 28, 29, 20, 16, 35, 66, 68, 12, 246, 32, 56, 46, 29, 24,
-			27, 22, 35, 62, 52, 10, 244, 21, 74, 75, 20, 13, 51, 38, 251, 0, 40, 48, 26, 30, 33, 25, 21, 38, 44, 19, 14, 21, 15, 5,
-			37, 70, 55, 15, 0, 3, 18, 45, 40, 24, 29, 41, 34, 17, 5, 19, 39, 45, 31, 25, 50, 65, 3, 221, 0, 58, 52, 1, 14, 52,
-			53, 22, 250, 0, 53, 72, 37, 251, 239, 23, 69, 56, 21, 19, 49, 45, 252, 247, 27, 57, 55, 52, 17, 247, 19, 25, 27, 56, 77, 38,
-			239, 250, 19, 43, 75, 75, 14, 223, 16, 87, 81, 22, 237, 244, 36, 68, 40, 255, 9, 69, 66, 29, 33, 22, 246, 16, 72, 70, 27, 22,
-			32, 14, 15, 22, 43, 48, 64, 76, 19, 247, 22, 22, 253, 30, 93, 71, 2, 12, 58, 50, 7, 2, 37, 48, 29, 31, 36, 22, 11, 20,
-			36, 30, 33, 43, 22, 7, 26, 50, 55, 50, 21, 3, 250, 22, 73, 66, 34, 18, 39, 35, 4, 0, 21, 44, 33, 26, 40, 39, 15, 3,
-			48, 75, 28, 238, 3, 31, 30, 49, 52, 25, 13, 36, 41, 15, 1, 13, 38, 56, 54, 21, 249, 32, 66, 32, 252, 25, 65, 31, 242, 249,
-			54, 80, 47, 17, 7, 11, 9, 21, 37, 50, 41, 27, 36, 20, 240, 2, 54, 68, 41, 26, 16, 18, 24, 30, 32, 31, 31, 32, 24, 254,
-			17, 47, 45, 22, 30, 37, 25, 17, 19, 13, 13, 54, 61, 30, 248, 3, 42, 62, 48, 13, 12, 37, 36, 21, 12, 42, 63, 47, 28, 16,
-			25, 19, 17, 32, 61, 58, 19, 17, 39, 39, 25, 36, 56, 30, 20, 38, 42, 28, 18, 21, 21, 54, 75, 37, 249, 244, 11, 31, 66, 72,
-			22, 248, 7, 38, 38, 41, 50, 35, 255, 5, 48, 54, 31, 23, 16, 20, 51, 64, 40, 3, 1, 46, 37, 1, 28, 67, 41, 0, 19, 51,
-			36, 17, 25, 37, 31, 44, 64, 35, 0, 18, 30, 24, 18, 34, 58, 49, 34, 17, 25, 13, 3, 28, 51, 49, 25, 30, 42, 37, 24, 28,
-			40, 6, 4, 41, 59, 55, 47, 40, 12, 6, 27, 24, 17, 51, 75, 42, 0, 12, 45, 34, 13, 19, 26, 28, 44, 66, 51, 16, 0, 6,
-			29, 60, 69, 46, 24, 21, 14, 13, 36, 57, 56, 37, 25, 13, 16, 42, 57, 43, 35, 30, 10, 19, 60, 66, 19, 16, 49, 42, 14, 11,
-			26, 42, 42, 23, 12, 20, 50, 55, 46, 47, 33, 250, 248, 51, 71, 29, 9, 41, 53, 37, 46, 56, 31, 255, 6, 33, 40, 43, 43, 28,
-			14, 26, 50, 41, 16, 39, 50, 19, 0, 6, 21, 44, 59, 35, 0, 255, 47, 91, 70, 20, 245, 254, 39, 44, 17, 12, 38, 63, 40, 8,
-			20, 41, 21, 1, 24, 37, 10, 242, 21, 54, 68, 54, 7, 248, 12, 30, 21, 17, 24, 38, 24, 11, 19, 17, 18, 38, 48, 38, 16, 0,
-			1, 1, 19, 45, 47, 34, 18, 16, 33, 27, 19, 27, 40, 37, 3, 248, 13, 21, 17, 30, 64, 80, 32, 240, 2, 24, 255, 240, 42, 71,
-			17, 248, 30, 48, 21, 20, 30, 7, 233, 1, 50, 46, 16, 10, 9, 0, 16, 42, 49, 35, 18, 9, 7, 23, 29, 8, 3, 20, 41, 51,
-			44, 36, 21, 4, 247, 6, 35, 31, 20, 17, 15, 20, 50, 56, 22, 255, 1, 12, 21, 35, 20, 243, 252, 35, 36, 24, 28, 25, 6, 3,
-			33, 43, 17, 5, 10, 16, 37, 52, 37, 26, 29, 35, 28, 12, 11, 27, 23, 5, 2, 16, 44, 54, 29, 5, 19, 19, 253, 7, 30, 14,
-			0, 26, 51, 30, 0, 4, 37, 46, 29, 19, 12, 12, 15, 14, 3, 2, 29, 48, 27, 6, 18, 43, 19, 237, 5, 52, 45, 14, 11, 19,
-			26, 52, 53, 10, 4, 37, 34, 3, 14, 40, 25, 255, 17, 43, 28, 5, 14, 36, 23, 11, 18, 28, 41, 41, 250, 212, 251, 68, 83, 46,
-			18, 4, 251, 13, 60, 64, 19, 254, 0, 22, 43, 37, 26, 41, 46, 23, 0, 1, 17, 23, 27, 33, 29, 14, 22, 49, 32, 245, 241, 22,
-			57, 61, 41, 8, 238, 247, 24, 41, 34, 29, 28, 17, 254, 2, 45, 65, 31, 0, 6, 10, 4, 17, 41, 51, 44, 21, 0, 9, 22, 28,
-			38, 33, 8, 5, 30, 29, 28, 35, 28, 3, 5, 46, 60, 28, 3, 5, 11, 28, 42, 56, 53, 21, 240, 2, 40, 46, 43, 37, 27, 17,
-			17, 14, 9, 19, 43, 41, 25, 26, 34, 28, 29, 35, 23, 9, 12, 32, 34, 31, 37, 35, 17, 17, 38, 42, 33, 28, 30, 22, 24, 37,
-			32, 14, 12, 30, 34, 32, 47, 50, 31, 17, 8, 1, 11, 29, 47, 56, 39, 22, 16, 26, 46, 50, 48, 28, 0, 4, 34, 46, 35, 19,
-			10, 17, 33, 38, 28, 18, 27, 32, 13, 3, 25, 51, 39, 14, 12, 27, 37, 35, 28, 25, 23, 29, 36, 22, 14, 16, 27, 41, 39, 34,
-			32, 31, 28, 24, 25, 34, 32, 12, 9, 29, 42, 32, 20, 24, 28, 26, 32, 30, 21, 10, 7, 18, 39, 46, 38, 30, 21, 21, 21, 26,
-			36, 36, 11, 6, 32, 38, 28, 34, 39, 29, 17, 17, 28, 37, 33, 17, 14, 22, 22, 18, 29, 40, 35, 23, 21, 34, 31, 10, 255, 6,
-			19, 26, 33, 31, 21, 19, 27, 33, 31, 27, 19, 6, 11, 30, 22, 5, 16, 33, 40, 39, 31, 23, 8, 5, 21, 31, 22, 11, 17, 30,
-			38, 32, 25, 26, 31, 28, 20, 18, 19, 20, 26, 41, 34, 3, 247, 17, 43, 39, 29, 31, 24, 10, 6, 5, 1, 9, 31, 39, 17, 0,
-			13, 36, 31, 14, 8, 10, 20, 29, 19, 6, 11, 25, 24, 21, 34, 39, 19, 4, 19, 32, 26, 23, 33, 19, 249, 0, 35, 43, 25, 21,
-			27, 19, 4, 15, 27, 20, 16, 19, 17, 9, 13, 28, 37, 31, 27, 30, 26, 17, 13, 17, 18, 19, 32, 42, 35, 23, 22, 26, 23, 18,
-			27, 34, 33, 30, 17, 8, 13, 31, 34, 30, 36, 34, 23, 18, 17, 16, 24, 32, 27, 13, 9, 21, 33, 32, 26, 27, 26, 17, 9, 13,
-			24, 31, 32, 31, 28, 19, 13, 20, 31, 31, 29, 32, 31, 20, 12, 13, 25, 32, 30, 24, 22, 28, 26, 17, 16, 22, 27, 31, 33, 26,
-			16, 20, 27, 30, 29, 30, 26, 17, 19, 25, 27, 25, 26, 31, 30, 21, 15, 18, 26, 34, 36, 28, 15, 10, 21, 29, 27, 28, 35, 33,
-			23, 20, 24, 26, 29, 35, 31, 21, 18, 22, 28, 30, 27, 27, 31, 33, 30, 22, 18, 23, 33, 35, 26, 19, 25, 32, 28, 26, 29, 30,
-			26, 26, 26, 19, 0, 0, 175, 0, 4, 0, 1, 0, 44, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 45, 50, 30, 64,
-			60, 39, 31, 20, 9, 5, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 44, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28,
-			70, 104, 44, 92, 87, 57, 44, 29, 13, 7, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 44, 1, 66, 3, 216, 4, 240, 10, 112, 13,
-			48, 15, 32, 28, 60, 80, 45, 77, 82, 54, 42, 27, 13, 6, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 44, 1, 66, 3, 216, 4,
-			84, 11, 152, 13, 80, 15, 32, 28, 0, 30, 37, 35, 56, 37, 29, 19, 9, 4, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 45, 0, 5, 0,
-			1, 0, 240, 0, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 45, 61, 34, 63, 75, 41, 34, 29, 11, 5, 165, 148, 135, 120,
-			120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
-			1, 250, 0, 0, 3, 0, 248, 0, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 130, 112, 43, 86, 102, 55, 46, 39, 15, 7,
-			165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 218, 0, 120, 2, 169, 3, 161, 10, 109, 12, 71, 14, 60, 27, 55, 109, 34, 71, 93, 53,
-			42, 37, 17, 8, 166, 145, 137, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 144, 0, 208, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 40, 67,
-			25, 64, 64, 45, 41, 24, 17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 144, 0, 208, 1, 12, 3, 196, 9, 254, 11, 157, 14,
-			216, 26, 0, 42, 19, 51, 51, 35, 32, 19, 14, 6, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 195, 0, 4, 0, 1, 0, 141, 0, 80, 1,
-			204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 45, 36, 12, 54, 51, 51, 49, 30, 11, 9, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0,
-			141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 75, 63, 16, 72, 68, 68, 65, 39, 15, 12, 174, 115, 127, 122, 122, 132,
-			187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 75, 46, 13, 61, 57, 57, 55, 33, 12, 10, 174, 115,
-			127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0,
-			0, 0, 240, 250, 209, 182, 1, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 0, 30, 11, 49, 46, 47, 45, 27,
-			10, 8, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 210, 0, 5, 0, 1, 0, 171, 0, 105, 1, 248, 7, 2, 11, 28, 13, 224, 14, 196, 26,
-			45, 29, 17, 48, 48, 38, 38, 24, 10, 5, 167, 113, 125, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 214, 0, 18, 2, 160, 6, 203, 10, 77, 13,
-			4, 15, 79, 27, 60, 58, 30, 71, 73, 55, 50, 32, 14, 7, 175, 128, 129, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 24, 1, 16, 3, 156, 4,
-			120, 10, 152, 13, 60, 15, 32, 28, 60, 73, 36, 66, 79, 56, 43, 28, 13, 7, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 24, 1,
-			16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 65, 37, 62, 75, 52, 40, 27, 12, 6, 186, 152, 135, 120, 120, 120, 192, 155,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 0, 43, 30, 50, 61, 42, 33, 22, 10, 5, 186, 152, 135, 120,
-			120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191,
-			251, 250, 194, 182, 203, 0, 6, 0, 1, 0, 200, 0, 29, 1, 245, 8, 36, 11, 186, 12, 165, 15, 244, 26, 61, 64, 0, 88, 56, 44,
-			48, 36, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
-			3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 200, 0, 34, 2, 165, 7, 70, 9, 110, 13, 79, 15, 244, 26, 70, 85,
-			40, 88, 68, 64, 40, 20, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 9, 3, 208, 4, 241, 9, 60, 13, 194, 14,
-			244, 26, 72, 99, 52, 96, 92, 48, 44, 32, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10,
-			2, 13, 238, 14, 192, 27, 61, 140, 52, 95, 114, 62, 51, 43, 16, 8, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 200, 0, 145, 2,
-			228, 3, 118, 10, 225, 12, 56, 15, 244, 26, 60, 127, 48, 108, 68, 40, 44, 28, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0,
-			200, 0, 45, 2, 57, 3, 209, 10, 2, 13, 122, 15, 244, 26, 0, 106, 46, 86, 54, 36, 32, 18, 14, 7, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 48, 250,
-			48, 0, 215, 0, 5, 0, 33, 0, 173, 0, 64, 1, 156, 8, 220, 10, 66, 13, 19, 15, 228, 26, 45, 44, 12, 60, 60, 59, 56, 29,
-			13, 6, 182, 105, 128, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0,
-			0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 173, 0, 64, 1, 156, 8, 220, 10, 66, 13, 19, 15, 228, 26, 40, 56, 14, 68,
-			68, 66, 64, 32, 14, 7, 182, 105, 128, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 244, 0, 229, 1, 108, 7, 82, 10, 89, 13, 17, 15, 34, 28,
-			90, 58, 28, 67, 66, 65, 55, 35, 13, 8, 221, 122, 147, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 31, 1, 72, 2, 204, 6, 0, 10, 104, 13,
-			15, 15, 224, 28, 40, 43, 31, 56, 56, 55, 42, 31, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 31, 1, 72, 2, 204, 6,
-			0, 10, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48, 48, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 225, 0, 5, 0,
-			1, 0, 136, 0, 44, 1, 8, 7, 96, 9, 148, 12, 41, 14, 144, 26, 45, 27, 13, 56, 44, 37, 29, 23, 11, 0, 120, 120, 105, 120,
-			120, 120, 60, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
-			1, 250, 0, 0, 3, 0, 136, 0, 164, 1, 120, 5, 196, 9, 48, 12, 41, 14, 144, 26, 40, 52, 27, 82, 60, 46, 40, 29, 19, 0,
-			120, 120, 112, 120, 120, 120, 60, 75, 112, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 192, 0, 40, 2, 132, 3, 20, 10, 204, 11, 96, 14, 88, 27, 80, 106, 35, 84, 81, 51,
-			49, 28, 18, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 60, 105,
-			32, 76, 83, 46, 44, 26, 16, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14,
-			159, 27, 0, 55, 23, 55, 60, 34, 32, 18, 12, 5, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 102, 0, 6, 0, 1, 0, 200, 0, 14, 1,
-			21, 9, 210, 11, 91, 12, 164, 15, 244, 26, 43, 65, 3, 83, 38, 41, 38, 38, 11, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0,
-			144, 0, 76, 1, 251, 8, 200, 10, 111, 12, 209, 14, 244, 26, 60, 104, 11, 102, 72, 64, 60, 49, 15, 9, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 104, 0, 154, 1, 228, 6, 50, 9, 139, 12, 250, 14, 244, 26, 107, 56, 33, 69, 42, 48, 42, 27, 12, 6, 187, 125,
-			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0,
-			0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 207, 1, 11, 4, 244, 9, 110, 12, 228, 14, 244, 26, 124, 75, 32, 80, 54, 35, 25, 16,
-			12, 6, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 104, 0, 168, 1, 29, 3, 47, 10, 55, 12, 77, 15, 244, 26, 35, 84, 41, 76,
-			64, 22, 15, 7, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0, 200, 0, 114, 1, 202, 2, 115, 10, 103, 12, 72, 15, 244, 26,
-			0, 64, 24, 63, 45, 21, 15, 9, 12, 6, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 48, 250, 48, 0, 160, 0, 4, 0, 1, 0, 132, 0, 8, 2, 136, 4,
-			136, 9, 128, 12, 156, 14, 84, 27, 50, 40, 30, 52, 60, 40, 33, 28, 16, 6, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 132, 0,
-			8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 60, 71, 40, 70, 80, 54, 44, 38, 22, 8, 167, 148, 143, 120, 120, 120, 197, 135,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 53, 34, 60, 69, 46, 38, 33, 19, 7, 167, 148, 143, 120,
-			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0,
-			240, 250, 209, 182, 1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 0, 33, 27, 48, 55, 37, 30, 26, 15, 5,
-			167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 239, 0, 5, 0, 1, 0, 80, 0, 96, 1, 52, 3, 193, 10, 228, 12, 114, 15, 244, 26, 87, 79,
-			30, 80, 61, 42, 30, 0, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 80, 0, 191, 1, 17, 3, 196, 10, 108, 12, 119, 15,
-			244, 26, 50, 97, 53, 83, 53, 41, 38, 34, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 80, 2, 81, 3, 120, 10,
-			94, 12, 201, 14, 244, 26, 53, 122, 49, 83, 79, 38, 30, 19, 19, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 57, 3,
-			115, 4, 10, 10, 41, 12, 214, 13, 244, 26, 49, 96, 50, 90, 75, 54, 28, 39, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			200, 0, 57, 3, 115, 4, 10, 10, 41, 12, 214, 13, 244, 26, 0, 97, 54, 90, 75, 54, 28, 39, 14, 7, 187, 125, 137, 137, 150, 175,
-			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250,
-			194, 182, 14, 1, 6, 0, 1, 0, 200, 0, 68, 1, 46, 3, 69, 11, 54, 13, 160, 15, 244, 26, 48, 50, 11, 68, 41, 15, 11, 0,
-			15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0,
-			0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 200, 0, 124, 1, 239, 2, 107, 10, 86, 12, 52, 16, 244, 26, 45, 96, 30, 79,
-			57, 26, 22, 15, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 197, 2, 187, 3, 240, 9, 163, 12, 23, 15, 244, 26,
-			67, 134, 49, 91, 83, 49, 38, 30, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 224, 0, 30, 3, 60, 5, 1, 9, 112, 13,
-			119, 14, 244, 26, 70, 94, 49, 106, 68, 57, 38, 0, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 200, 0, 190, 1, 106, 8,
-			33, 10, 134, 12, 93, 14, 244, 26, 40, 58, 27, 69, 54, 46, 34, 31, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0, 200, 0,
-			190, 1, 106, 8, 33, 10, 134, 12, 93, 14, 244, 26, 0, 23, 17, 44, 34, 29, 22, 19, 7, 4, 187, 125, 137, 137, 150, 175, 187, 125,
-			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 48, 250, 48, 0,
-			38, 1, 6, 0, 1, 0, 200, 0, 126, 1, 12, 3, 253, 9, 107, 12, 48, 14, 244, 26, 46, 107, 24, 88, 72, 40, 40, 40, 16, 8,
-			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
-			3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 168, 0, 215, 1, 238, 3, 112, 9, 161, 12, 217, 14, 244, 26, 50, 145, 48, 100, 100, 44,
-			40, 44, 16, 8, 187, 125, 175, 137, 150, 175, 187, 125, 175, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 200, 0, 203, 1, 170, 6, 140, 8, 3, 12, 148, 13, 244, 26, 62, 128,
-			45, 98, 60, 91, 68, 38, 15, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 200, 0, 176, 1, 88, 8, 132, 9, 72, 12, 130, 14,
-			244, 26, 60, 81, 32, 75, 68, 57, 57, 32, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 176, 0, 88, 1, 180, 8, 228, 10,
-			161, 12, 16, 15, 244, 26, 76, 85, 12, 92, 64, 60, 56, 28, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0, 152, 0, 72, 1,
-			232, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 46, 26, 66, 44, 44, 37, 29, 11, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 48, 250, 48, 0, 240, 0,
-			6, 0, 1, 0, 142, 0, 62, 1, 138, 2, 166, 9, 38, 12, 203, 14, 24, 27, 40, 35, 7, 66, 37, 18, 19, 14, 8, 4, 148, 126,
-			80, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0,
-			0, 0, 1, 250, 0, 0, 3, 0, 142, 0, 62, 1, 138, 2, 166, 9, 38, 12, 203, 14, 24, 27, 40, 39, 8, 69, 39, 18, 20, 15,
-			8, 4, 148, 126, 80, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 147, 0, 85, 1, 159, 2, 185, 9, 25, 12, 193, 14, 37, 27, 40, 38, 10, 68,
-			43, 21, 22, 20, 9, 4, 151, 127, 85, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14, 159, 27,
-			70, 99, 31, 74, 81, 45, 43, 25, 16, 6, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11,
-			53, 14, 160, 27, 50, 81, 30, 71, 86, 42, 41, 23, 15, 6, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 1, 0, 184, 0, 72, 2, 172, 3,
-			20, 10, 164, 11, 53, 14, 160, 27, 0, 46, 23, 54, 64, 32, 30, 18, 11, 4, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 48, 250, 48, 0, 205, 0, 5, 0,
-			1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 27, 15, 48, 33, 28, 30, 28, 7, 10, 160, 90, 135, 120,
-			120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0,
-			1, 250, 0, 0, 3, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 40, 38, 18, 58, 39, 33, 36, 33, 9, 12,
-			160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 142, 0, 83, 1, 156, 6, 74, 9, 252, 12, 124, 14, 151, 25, 80, 53, 24, 69, 50, 41,
-			43, 38, 11, 13, 169, 98, 137, 122, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182, 1, 0, 232, 0, 104, 3, 160, 5, 160, 10, 216, 13, 120, 15, 102, 27, 40, 84,
-			44, 78, 82, 54, 44, 30, 14, 5, 255, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 232, 0, 104, 3, 160, 5, 160, 10, 216, 13, 120, 15,
-			102, 27, 0, 45, 32, 57, 60, 40, 32, 22, 10, 4, 255, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 205, 0, 5, 0, 1, 0, 147, 0, 22, 1,
-			238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 45, 38, 10, 60, 51, 47, 50, 28, 12, 7, 167, 101, 123, 120, 120, 120, 167, 90, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0,
-			132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 30, 40, 18, 58, 39, 36, 36, 33, 9, 12, 167, 90, 135, 120, 120, 120,
-			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 147, 0, 54, 1, 186, 6, 58, 9, 241, 12, 113, 14, 189, 25, 80, 54, 23, 68, 49, 43, 44, 39, 11, 13, 168, 94,
-			137, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0,
-			0, 0, 240, 250, 209, 182, 1, 0, 3, 1, 17, 2, 200, 6, 216, 9, 80, 13, 239, 14, 63, 28, 50, 61, 34, 68, 64, 62, 50, 38,
-			12, 9, 228, 124, 154, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 31, 1, 72, 2, 204, 6, 0, 10, 104, 13, 15, 15, 224, 28, 0, 35, 28, 51,
-			50, 49, 38, 28, 9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
-			0, 0, 1, 0, 0, 0, 108, 65, 227, 191, 251, 250, 194, 182, 0, 0, 5, 0, 1, 0, 132, 0, 16, 1, 8, 7, 232, 8, 228, 12,
-			96, 14, 100, 25, 40, 39, 18, 57, 39, 36, 36, 33, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 1, 250, 0, 0, 3, 0, 132, 0, 16, 1, 8, 7,
-			232, 8, 228, 12, 96, 14, 100, 25, 65, 61, 22, 72, 49, 45, 45, 41, 11, 15, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0,
-			52, 1, 219, 6, 6, 9, 218, 12, 241, 14, 225, 25, 50, 59, 24, 70, 54, 45, 46, 39, 13, 13, 167, 105, 135, 120, 120, 120, 167, 135,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 3, 0, 0, 0, 240, 250, 209, 182,
-			1, 0, 116, 0, 160, 1, 84, 6, 96, 9, 188, 12, 164, 16, 88, 27, 40, 33, 23, 48, 51, 34, 37, 25, 15, 6, 167, 150, 135, 120,
-			120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182,
-			1, 250, 0, 0, 1, 0, 116, 0, 224, 1, 44, 6, 116, 9, 12, 13, 224, 16, 88, 27, 0, 30, 24, 48, 50, 34, 34, 21, 13, 5,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
-			108, 65, 227, 191, 251, 250, 194, 182, 174, 0, 4, 0, 1, 0, 136, 0, 200, 1, 216, 4, 96, 9, 100, 12, 156, 14, 12, 27, 44, 39,
-			25, 55, 58, 34, 33, 25, 14, 5, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 136, 0, 200, 1, 216, 4, 96, 9, 100, 12, 156, 14,
-			12, 27, 80, 58, 31, 67, 71, 41, 40, 30, 17, 6, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 136, 0, 200, 1, 216, 4, 96, 9,
-			100, 12, 156, 14, 12, 27, 50, 52, 29, 63, 67, 39, 38, 28, 16, 6, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 136, 0, 200, 1,
-			216, 4, 96, 9, 100, 12, 156, 14, 12, 27, 0, 35, 24, 52, 55, 32, 31, 23, 13, 5, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 160, 0,
-			4, 0, 1, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27, 50, 42, 31, 57, 60, 33, 36, 28, 16, 6, 168, 147,
-			130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27, 60, 75, 42, 76, 80, 44, 49, 38,
-			22, 8, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27, 50, 57, 36, 66,
-			69, 38, 42, 33, 19, 7, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27,
-			0, 35, 28, 52, 55, 30, 33, 26, 15, 5, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 160, 0, 4, 0, 1, 0, 169, 0, 193, 1, 89, 3,
-			196, 9, 244, 11, 146, 14, 186, 26, 50, 43, 23, 52, 55, 34, 29, 20, 14, 4, 163, 130, 148, 120, 120, 120, 162, 120, 165, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 169, 0,
-			193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 70, 85, 33, 72, 77, 48, 41, 28, 20, 6, 163, 130, 148, 120, 120, 120, 162, 120,
-			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 40, 71, 30, 66, 71, 44, 38, 25, 18, 6, 163, 130, 148, 120,
-			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 0, 43, 23, 52, 55, 34, 29, 20, 14, 4,
-			163, 130, 148, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 165, 0, 4, 0, 1, 0, 180, 0, 144, 1, 216, 4, 152, 8, 148, 12, 226, 14, 144, 26, 45, 36,
-			24, 51, 51, 36, 36, 30, 15, 7, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 180, 0, 144, 1, 216, 4, 152, 8, 148, 12, 226, 14,
-			144, 26, 80, 65, 32, 68, 68, 48, 48, 40, 20, 10, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 180, 0, 144, 1, 216, 4, 152, 8,
-			148, 12, 226, 14, 144, 26, 40, 58, 30, 64, 64, 45, 45, 38, 19, 9, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 180, 0, 144, 1,
-			216, 4, 152, 8, 148, 12, 226, 14, 144, 26, 0, 31, 22, 47, 47, 33, 33, 28, 14, 7, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 185, 0,
-			4, 0, 1, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27, 45, 59, 31, 64, 78, 41, 48, 37, 19, 7, 167, 150,
-			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190,
-			111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27, 80, 73, 35, 72, 86, 45, 53, 41,
-			21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64,
-			0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27, 60, 59, 31, 64,
-			78, 41, 48, 37, 19, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186,
-			209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27,
-			0, 73, 35, 72, 86, 45, 53, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 170, 0, 4, 0, 1, 0, 246, 0, 80, 2, 164, 6,
-			201, 9, 70, 13, 255, 14, 73, 28, 50, 33, 27, 49, 54, 44, 34, 25, 9, 5, 219, 138, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 246, 0,
-			80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 60, 83, 43, 78, 87, 70, 54, 39, 15, 8, 219, 138, 158, 120, 120, 120, 135, 180,
-			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 60, 74, 40, 74, 82, 67, 51, 37, 14, 8, 219, 138, 158, 120,
-			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 0, 33, 27, 49, 54, 44, 34, 25, 9, 5,
-			219, 138, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 190, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 40, 23,
-			14, 45, 31, 26, 28, 26, 7, 9, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14,
-			100, 25, 30, 48, 20, 64, 44, 37, 40, 37, 10, 13, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 166, 0, 136, 1, 18, 7, 138, 9,
-			228, 12, 56, 14, 242, 26, 40, 68, 30, 76, 60, 65, 57, 45, 13, 13, 160, 97, 131, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 6, 1, 33, 2,
-			26, 7, 232, 9, 77, 13, 228, 14, 125, 28, 80, 71, 37, 72, 73, 69, 54, 41, 13, 9, 227, 125, 153, 120, 120, 120, 160, 135, 135, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0,
-			31, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120,
-			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250,
-			0, 0, 125, 0, 5, 0, 13, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14, 220, 15, 32, 29, 0, 19, 7, 46, 7, 28, 21, 10,
-			7, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 13, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14, 220, 15, 32, 29, 50, 19, 7, 46,
-			7, 28, 21, 10, 7, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14, 220, 15, 32, 29,
-			45, 17, 6, 44, 10, 27, 20, 10, 6, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14,
-			220, 15, 32, 29, 30, 13, 6, 39, 9, 24, 18, 9, 6, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 76, 0, 224, 0, 136, 9,
-			4, 11, 156, 14, 220, 15, 32, 29, 0, 15, 6, 41, 9, 28, 22, 12, 6, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 105, 0, 4, 0,
-			1, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 35, 19, 7, 46, 10, 28, 18, 10, 5, 3, 150, 115, 97, 120,
-			120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182,
-			1, 250, 0, 0, 13, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 40, 19, 7, 46, 10, 28, 18, 10, 5, 3,
-			150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191,
-			233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 30, 19, 7, 46, 10, 28,
-			18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182,
-			49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 0, 19,
-			7, 46, 10, 28, 18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 65, 0, 3, 0, 5, 0, 140, 0, 224, 1, 178, 3, 84, 11,
-			152, 13, 104, 16, 0, 27, 35, 16, 16, 43, 23, 15, 10, 13, 7, 0, 160, 150, 120, 120, 120, 120, 145, 60, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 140, 0, 224, 1,
-			178, 3, 84, 11, 152, 13, 104, 16, 0, 27, 30, 20, 18, 48, 25, 17, 12, 14, 8, 0, 160, 150, 120, 120, 120, 120, 145, 60, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			140, 0, 224, 1, 178, 3, 84, 11, 152, 13, 104, 16, 0, 27, 0, 20, 18, 48, 25, 17, 12, 14, 8, 0, 160, 150, 120, 120, 120, 120,
-			145, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 170, 0, 4, 0, 1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 45, 52, 22, 54, 54, 36, 34, 22,
-			14, 6, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 70, 92, 30, 72,
-			72, 48, 46, 30, 19, 8, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27,
-			55, 83, 28, 68, 68, 45, 43, 28, 18, 8, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12,
-			236, 14, 38, 27, 0, 45, 21, 50, 50, 33, 32, 21, 13, 5, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 35, 0, 3, 0, 5, 0, 224, 0,
-			248, 2, 140, 5, 60, 10, 20, 13, 175, 14, 117, 27, 35, 24, 21, 43, 36, 31, 26, 21, 9, 2, 196, 162, 200, 120, 120, 120, 249, 174,
-			255, 44, 35, 70, 130, 50, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0,
-			5, 0, 224, 0, 248, 2, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 40, 22, 21, 41, 35, 30, 25, 21, 8, 2, 196, 162, 200, 120,
-			120, 120, 249, 174, 255, 44, 35, 70, 130, 50, 0, 0, 0, 0, 45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182,
-			200, 250, 21, 8, 1, 0, 208, 0, 224, 2, 100, 5, 236, 9, 1, 13, 155, 14, 105, 27, 0, 22, 21, 42, 30, 22, 20, 20, 9, 2,
-			192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 35, 70, 130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182,
-			29, 32, 0, 0, 240, 250, 209, 182, 45, 0, 3, 0, 5, 0, 224, 0, 216, 2, 80, 5, 232, 8, 20, 13, 175, 14, 117, 27, 45, 15,
-			19, 32, 27, 23, 19, 16, 6, 1, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 46, 0, 0, 0, 0, 45, 0, 0, 0,
-			0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 5, 0, 224, 0, 216, 2, 80, 5, 232, 8, 20, 13, 175, 14,
-			117, 27, 35, 22, 20, 40, 34, 29, 24, 20, 8, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 50, 0, 0, 0, 0,
-			45, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 224, 0, 216, 2, 80, 5, 232, 8,
-			20, 13, 175, 14, 117, 27, 0, 23, 21, 41, 34, 30, 25, 20, 8, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 50,
-			0, 0, 0, 0, 45, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 199, 7, 49, 0, 6, 7,
-			6, 7, 6, 6, 3, 4, 1, 3, 232, 221, 255, 253, 1, 246, 234, 38, 20, 20, 249, 11, 15, 37, 242, 0, 223, 1, 242, 224, 248, 229,
-			2, 0, 244, 3, 39, 10, 27, 238, 36, 13, 2, 233, 224, 225, 240, 219, 218, 221, 237, 4, 13, 12, 25, 14, 37, 219, 243, 224, 244, 213,
-			217, 230, 34, 40, 20, 19, 19, 65, 20, 240, 235, 232, 251, 242, 239, 255, 19, 7, 5, 245, 254, 241, 220, 205, 220, 230, 240, 234, 228, 7,
-			25, 35, 19, 13, 30, 29, 24, 244, 3, 253, 247, 252, 227, 19, 2, 20, 253, 31, 12, 39, 7, 244, 247, 244, 245, 229, 202, 210, 242, 245,
-			238, 246, 249, 41, 32, 10, 31, 17, 28, 19, 243, 255, 2, 245, 253, 238, 0, 24, 11, 12, 24, 22, 25, 16, 243, 254, 252, 236, 232, 173,
-			27, 27, 7, 222, 38, 97, 105, 9, 251, 67, 56, 20, 196, 211, 0, 24, 230, 246, 1, 51, 59, 18, 10, 50, 36, 17, 222, 237, 13, 250,
-			216, 221, 253, 24, 17, 248, 12, 39, 30, 30, 243, 239, 192, 215, 187, 180, 173, 203, 244, 247, 25, 17, 56, 61, 58, 22, 0, 1, 225, 228,
-			193, 222, 230, 253, 0, 3, 20, 50, 18, 19, 10, 253, 246, 223, 203, 223, 219, 212, 238, 234, 20, 10, 20, 25, 24, 22, 8, 250, 229, 224,
-			228, 238, 210, 236, 233, 255, 10, 30, 19, 24, 37, 14, 6, 248, 213, 238, 211, 221, 222, 241, 0, 16, 8, 61, 48, 66, 34, 47, 21, 10,
-			253, 220, 221, 225, 217, 243, 2, 253, 33, 8, 44, 53, 14, 11, 254, 251, 239, 219, 214, 219, 235, 227, 244, 0, 17, 16, 24, 20, 39, 16,
-			1, 0, 246, 248, 253, 220, 243, 231, 10, 3, 18, 16, 54, 42, 42, 31, 17, 29, 17, 242, 252, 223, 4, 245, 1, 234, 57, 35, 22, 33,
-			16, 19, 6, 219, 202, 236, 193, 215, 200, 248, 22, 23, 16, 64, 52, 76, 45, 45, 67, 62, 30, 39, 19, 44, 36, 11, 25, 35, 40, 9,
-			226, 201, 234, 186, 152, 133, 162, 197, 193, 162, 194, 0, 7, 4, 2, 17, 39, 22, 240, 241, 245, 2, 247, 239, 16, 42, 59, 55, 57, 77,
-			97, 59, 41, 22, 28, 13, 239, 202, 212, 222, 210, 213, 219, 236, 247, 238, 233, 230, 208, 211, 194, 196, 186, 193, 200, 197, 205, 232, 254, 5,
-			9, 26, 26, 49, 21, 23, 29, 21, 39, 30, 5, 32, 33, 10, 14, 17, 15, 33, 4, 238, 7, 247, 236, 231, 225, 238, 0, 245, 223, 220,
-			226, 247, 242, 226, 4, 251, 19, 0, 249, 6, 19, 24, 38, 19, 49, 37, 28, 24, 11, 10, 18, 1, 15, 47, 39, 35, 28, 43, 24, 6,
-			251, 246, 2, 0, 223, 244, 250, 237, 240, 242, 246, 2, 249, 0, 3, 7, 7, 13, 255, 0, 0, 251, 219, 240, 245, 8, 0, 9, 36, 42,
-			40, 25, 14, 36, 33, 252, 5, 242, 1, 252, 250, 2, 24, 27, 47, 6, 19, 25, 254, 238, 230, 215, 222, 228, 235, 251, 17, 15, 3, 7,
-			5, 248, 232, 194, 200, 232, 187, 213, 196, 2, 7, 15, 1, 28, 10, 7, 241, 227, 230, 210, 214, 206, 238, 242, 233, 243, 13, 11, 27, 37,
-			19, 26, 7, 239, 196, 199, 180, 213, 190, 231, 253, 28, 44, 67, 54, 74, 39, 7, 2, 234, 211, 212, 212, 225, 233, 7, 10, 31, 47, 59,
-			48, 58, 9, 2, 243, 213, 220, 213, 201, 232, 244, 0, 2, 14, 32, 31, 35, 254, 250, 229, 208, 215, 189, 207, 223, 244, 20, 18, 44, 59,
-			37, 27, 40, 25, 29, 254, 242, 248, 248, 14, 8, 20, 45, 57, 74, 59, 71, 79, 72, 37, 21, 5, 242, 244, 248, 9, 10, 41, 43, 55,
-			54, 63, 48, 37, 30, 6, 252, 239, 206, 231, 227, 219, 252, 12, 10, 35, 30, 49, 40, 39, 35, 18, 25, 5, 1, 237, 230, 228, 218, 224,
-			225, 231, 251, 253, 224, 233, 224, 233, 207, 204, 192, 223, 200, 195, 201, 218, 217, 216, 233, 233, 237, 244, 236, 6, 6, 246, 8, 7, 13, 28,
-			13, 23, 31, 33, 43, 23, 28, 31, 38, 33, 7, 25, 247, 2, 247, 249, 231, 246, 244, 244, 237, 252, 4, 0, 248, 255, 10, 253, 243, 251,
-			234, 254, 237, 235, 226, 243, 224, 247, 239, 2, 1, 4, 12, 8, 8, 251, 247, 250, 245, 243, 236, 247, 0, 2, 247, 3, 245, 249, 243, 229,
-			236, 227, 237, 236, 253, 244, 3, 5, 7, 10, 14, 8, 254, 11, 8, 34, 18, 25, 16, 47, 28, 37, 18, 22, 28, 35, 30, 36, 41, 26,
-			34, 39, 25, 34, 24, 245, 0, 20, 228, 252, 220, 231, 252, 233, 214, 249, 232, 237, 243, 234, 250, 243, 206, 235, 221, 237, 243, 224, 238, 0,
-			0, 6, 246, 252, 12, 21, 25, 9, 17, 6, 5, 7, 241, 254, 238, 236, 242, 243, 5, 248, 253, 252, 0, 237, 251, 223, 250, 217, 237, 228,
-			226, 243, 239, 12, 2, 23, 9, 37, 37, 19, 25, 4, 19, 255, 0, 248, 249, 248, 3, 235, 246, 255, 249, 239, 249, 18, 17, 14, 8, 16,
-			10, 7, 248, 0, 255, 251, 254, 16, 4, 8, 22, 28, 33, 28, 26, 39, 30, 36, 38, 48, 43, 48, 72, 25, 48, 39, 49, 47, 33, 37,
-			40, 15, 17, 251, 255, 241, 218, 223, 213, 206, 221, 217, 226, 209, 238, 241, 0, 247, 253, 232, 241, 242, 244, 235, 240, 0, 12, 2, 36, 14,
-			13, 27, 8, 6, 1, 231, 232, 226, 223, 236, 204, 251, 215, 239, 252, 242, 251, 236, 238, 249, 209, 220, 202, 189, 203, 196, 193, 208, 210, 236,
-			228, 10, 255, 14, 12, 9, 8, 248, 6, 0, 254, 248, 8, 27, 31, 23, 48, 66, 64, 77, 44, 60, 31, 53, 4, 29, 11, 13, 26, 18,
-			18, 21, 26, 29, 20, 25, 24, 20, 7, 9, 18, 14, 237, 19, 253, 255, 247, 250, 252, 6, 0, 252, 8, 245, 17, 4, 14, 13, 30, 252,
-			25, 254, 6, 17, 229, 4, 243, 238, 250, 239, 250, 234, 248, 238, 249, 243, 243, 252, 244, 254, 244, 1, 249, 248, 230, 253, 239, 241, 244, 242,
-			251, 9, 244, 248, 5, 6, 254, 231, 223, 237, 211, 215, 209, 229, 241, 229, 232, 239, 227, 246, 221, 232, 231, 232, 232, 224, 238, 247, 253, 242,
-			0, 8, 9, 251, 254, 0, 11, 251, 248, 6, 5, 9, 1, 4, 10, 7, 16, 12, 9, 13, 23, 13, 19, 25, 18, 25, 25, 31, 33, 17,
-			13, 27, 5, 35, 8, 27, 26, 38, 22, 26, 8, 19, 1, 8, 252, 253, 4, 254, 253, 7, 11, 17, 4, 15, 35, 7, 16, 22, 17, 24,
-			15, 13, 31, 14, 28, 21, 16, 14, 4, 17, 0, 254, 5, 2, 11, 255, 9, 0, 246, 0, 0, 0, 243, 238, 251, 248, 234, 242, 255, 249,
-			246, 251, 2, 0, 247, 239, 5, 239, 229, 242, 227, 243, 217, 219, 228, 217, 226, 227, 224, 242, 227, 249, 250, 226, 255, 247, 243, 249, 238, 10,
-			238, 238, 242, 232, 252, 228, 229, 0, 242, 0, 254, 6, 20, 251, 22, 28, 18, 30, 24, 25, 21, 14, 26, 6, 22, 7, 19, 34, 22, 28,
-			22, 24, 23, 8, 16, 25, 12, 16, 15, 10, 12, 4, 7, 3, 12, 1, 9, 3, 247, 1, 251, 247, 254, 246, 248, 249, 229, 249, 231, 244,
-			239, 246, 253, 252, 0, 0, 0, 247, 251, 246, 248, 241, 236, 245, 225, 221, 244, 226, 238, 246, 241, 255, 6, 6, 22, 1, 18, 18, 11, 18,
-			3, 22, 10, 5, 22, 5, 251, 2, 231, 249, 248, 240, 0, 253, 8, 27, 15, 23, 30, 27, 29, 16, 11, 10, 253, 247, 237, 241, 235, 227,
-			231, 233, 234, 249, 253, 0, 9, 254, 6, 3, 255, 9, 250, 248, 246, 252, 243, 235, 239, 234, 2, 233, 238, 251, 253, 244, 250, 243, 5, 14,
-			249, 16, 9, 13, 9, 7, 20, 11, 16, 7, 9, 9, 0, 254, 243, 244, 4, 0, 251, 17, 16, 23, 26, 13, 35, 30, 16, 21, 19, 28,
-			25, 19, 32, 27, 33, 28, 28, 33, 25, 11, 11, 7, 5, 252, 245, 251, 0, 253, 253, 252, 254, 252, 249, 253, 244, 255, 246, 254, 244, 4,
-			251, 254, 237, 244, 254, 245, 253, 252, 5, 1, 2, 1, 12, 254, 236, 235, 229, 225, 223, 218, 233, 224, 239, 247, 253, 249, 253, 254, 252, 248,
-			3, 255, 248, 248, 251, 0, 252, 2, 253, 3, 251, 1, 254, 3, 255, 5, 248, 23, 6, 1, 251, 250, 249, 242, 238, 239, 248, 232, 240, 251,
-			255, 8, 3, 10, 5, 1, 2, 254, 253, 250, 4, 254, 0, 247, 255, 239, 255, 0, 22, 4, 17, 20, 20, 14, 17, 24, 23, 8, 5, 5,
-			254, 239, 231, 235, 239, 245, 248, 6, 9, 15, 4, 14, 1, 14, 0, 0, 0, 11, 7, 12, 0, 13, 10, 10, 6, 17, 12, 16, 2, 17,
-			14, 22, 10, 7, 13, 0, 254, 239, 254, 235, 243, 239, 255, 255, 1, 253, 10, 255, 15, 13, 25, 16, 21, 17, 11, 0, 0, 2, 244, 247,
-			0, 13, 252, 0, 6, 9, 3, 252, 15, 8, 253, 250, 254, 253, 235, 243, 238, 243, 230, 248, 244, 239, 241, 0, 0, 254, 6, 25, 12, 0,
-			9, 11, 7, 242, 2, 2, 1, 241, 255, 249, 246, 237, 244, 247, 248, 247, 252, 247, 247, 0, 248, 2, 252, 17, 0, 255, 255, 255, 254, 237,
-			2, 4, 0, 8, 3, 18, 254, 1, 246, 255, 248, 0, 254, 0, 3, 2, 3, 0, 9, 1, 3, 248, 3, 251, 246, 238, 244, 243, 239, 245,
-			250, 7, 2, 11, 11, 16, 21, 17, 22, 12, 20, 2, 3, 241, 242, 244, 239, 242, 240, 255, 246, 251, 243, 2, 255, 0, 246, 1, 4, 1,
-			254, 255, 5, 5, 4, 0, 14, 11, 14, 3, 9, 10, 252, 248, 248, 254, 242, 244, 252, 244, 252, 246, 3, 248, 0, 7, 9, 4, 10, 20,
-			8, 4, 0, 10, 251, 252, 253, 253, 252, 254, 252, 249, 253, 244, 255, 246, 254, 244, 4, 251, 254, 237, 244, 254, 245, 253, 252, 5, 1, 2,
-			1, 12, 254, 236, 235, 229, 225, 223, 218, 233, 224, 239, 247, 253, 249, 253, 254, 252, 248, 3, 255, 248, 248, 251, 0, 252, 2, 253, 3, 251,
-			1, 254, 3, 255, 5, 248, 23, 6, 1, 251, 250, 249, 242, 238, 239, 248, 232, 240, 251, 255, 8, 3, 10, 5, 1, 2, 254, 253, 250, 4,
-			254, 0, 247, 255, 239, 255, 0, 22, 4, 17, 20, 20, 14, 17, 24, 23, 8, 5, 5, 254, 239, 231, 235, 239, 245, 248, 6, 9, 15, 4,
-			14, 1, 14, 0, 0, 0, 11, 7, 12, 0, 13, 10, 10, 6, 17, 12, 16, 2, 17, 14, 22, 10, 7, 13, 0, 254, 239, 254, 235, 243,
-			239, 255, 255, 1, 253, 10, 255, 15, 13, 25, 16, 21, 17, 11, 0, 0, 2, 244, 247, 0, 13, 252, 0, 6, 9, 3, 252, 15, 8, 253,
-			250, 254, 253, 235, 243, 238, 243, 230, 248, 244, 239, 241, 0, 0, 254, 6, 25, 12, 0, 9, 11, 7, 242, 2, 2, 1, 241, 255, 249, 246,
-			237, 244, 247, 248, 247, 252, 247, 247, 0, 248, 2, 252, 17, 0, 255, 255, 255, 254, 237, 2, 4, 0, 8, 3, 18, 254, 1, 246, 255, 248,
-			0, 254, 0, 3, 2, 3, 0, 9, 1, 0, 0, 7, 15, 22, 29, 36, 43, 50, 57, 63, 70, 76, 83, 89, 95, 101, 107, 112, 118, 123,
-			129, 134, 139, 144, 149, 153, 158, 162, 167, 171, 175, 179, 183, 187, 190, 194, 197, 201, 204, 207, 210, 213, 215, 218, 220, 223, 225, 227, 229, 231,
-			232, 234, 236, 237, 238, 239, 240, 241, 242, 243, 243, 244, 244, 244, 244, 244, 244, 244, 243, 243, 242, 241, 240, 239, 238, 237, 236, 234, 232, 231,
-			229, 227, 225, 223, 220, 218, 215, 213, 210, 207, 204, 201, 197, 194, 190, 187, 183, 179, 175, 171, 167, 162, 158, 153, 149, 144, 139, 134, 129, 123,
-			118, 112, 107, 101, 95, 89, 83, 76, 70, 63, 57, 50, 43, 36, 29, 22, 15, 7, 0, 0, 6, 0, 1, 0, 204, 0, 158, 2, 252, 4,
-			60, 10, 168, 12, 10, 15, 0, 28, 40, 47, 32, 52, 71, 39, 47, 23, 13, 7, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 204, 0,
-			93, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 50, 115, 45, 89, 101, 56, 67, 33, 20, 8, 170, 165, 150, 120, 120, 120, 170, 180,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8,
-			1, 0, 204, 0, 93, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 30, 104, 42, 84, 96, 53, 64, 32, 19, 8, 170, 165, 150, 120,
-			120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0,
-			240, 250, 209, 182, 1, 0, 190, 0, 32, 2, 242, 5, 84, 10, 240, 12, 236, 14, 9, 28, 75, 69, 37, 71, 77, 51, 55, 30, 15, 7,
-			169, 142, 163, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191,
-			145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 156, 0, 144, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 30, 37, 31, 54, 47, 57,
-			44, 32, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8,
-			28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 156, 0, 144, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31,
-			31, 49, 49, 45, 42, 33, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0, 22, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 254, 255, 255, 254, 253, 251, 249,
-			245, 238, 230, 224, 229, 251, 22, 38, 34, 17, 252, 234, 229, 235, 252, 10, 15, 20, 16, 5, 250, 236, 241, 247, 254, 12, 15, 16, 3, 244,
-			232, 235, 254, 11, 24, 26, 27, 17, 250, 243, 242, 251, 1, 247, 239, 244, 4, 7, 234, 201, 193, 236, 60, 94, 65, 11, 222, 209, 192, 184,
-			221, 27, 76, 64, 17, 235, 218, 205, 200, 222, 14, 62, 62, 32, 1, 238, 233, 228, 239, 6, 26, 16, 5, 8, 239, 1, 11, 1, 28, 250,
-			249, 2, 223, 246, 247, 254, 35, 17, 3, 250, 221, 235, 241, 232, 251, 0, 27, 40, 10, 5, 242, 218, 231, 248, 13, 30, 26, 11, 248, 237,
-			236, 240, 2, 19, 19, 8, 250, 244, 237, 233, 249, 7, 20, 29, 22, 0, 240, 238, 245, 247, 248, 5, 27, 37, 23, 253, 242, 239, 248, 1,
-			249, 233, 234, 40, 82, 39, 234, 205, 234, 253, 248, 3, 8, 31, 31, 245, 251, 252, 233, 249, 248, 12, 25, 5, 8, 249, 240, 253, 244, 7,
-			34, 18, 8, 249, 236, 243, 250, 18, 18, 1, 11, 4, 7, 27, 4, 233, 228, 234, 26, 48, 25, 14, 0, 3, 5, 234, 219, 246, 33, 49,
-			30, 253, 237, 232, 231, 239, 249, 36, 65, 16, 223, 219, 249, 26, 19, 246, 238, 5, 30, 25, 13, 4, 252, 1, 253, 230, 245, 20, 20, 4,
-			247, 9, 38, 41, 13, 224, 219, 229, 203, 203, 252, 43, 65, 46, 8, 245, 224, 199, 201, 231, 14, 36, 37, 23, 253, 241, 228, 220, 254, 15,
-			11, 18, 12, 9, 3, 241, 239, 251, 252, 240, 242, 3, 17, 10, 254, 252, 0, 7, 255, 242, 240, 242, 249, 11, 20, 0, 237, 237, 250, 6,
-			9, 1, 2, 7, 247, 234, 247, 9, 9, 1, 0, 2, 252, 236, 236, 252, 10, 11, 0, 0, 2, 254, 244, 232, 239, 252, 250, 255, 15, 9,
-			247, 242, 252, 5, 4, 250, 0, 14, 1, 243, 234, 242, 18, 22, 255, 244, 249, 14, 32, 4, 221, 226, 252, 13, 14, 10, 20, 24, 4, 242,
-			236, 244, 252, 1, 16, 21, 27, 14, 243, 248, 0, 243, 247, 13, 19, 14, 3, 250, 3, 18, 3, 247, 254, 0, 20, 20, 247, 249, 5, 5,
-			0, 252, 8, 18, 253, 249, 3, 3, 20, 17, 7, 16, 13, 247, 233, 240, 250, 26, 42, 3, 240, 245, 250, 12, 18, 10, 5, 253, 6, 6,
-			244, 241, 251, 16, 12, 253, 4, 8, 1, 239, 224, 5, 39, 18, 4, 0, 245, 255, 0, 246, 2, 24, 21, 18, 22, 15, 244, 208, 227, 19,
-			24, 11, 17, 2, 230, 0, 246, 217, 19, 28, 17, 21, 246, 245, 236, 239, 245, 1, 56, 61, 6, 240, 240, 212, 253, 22, 247, 24, 33, 34,
-			3, 214, 239, 218, 251, 58, 31, 39, 43, 220, 170, 1, 35, 5, 27, 0, 10, 32, 5, 7, 248, 228, 254, 29, 29, 23, 238, 227, 24, 7,
-			213, 207, 226, 17, 66, 61, 7, 229, 249, 12, 4, 2, 3, 6, 32, 19, 226, 220, 1, 8, 245, 24, 31, 9, 29, 255, 220, 237, 2, 249,
-			232, 24, 52, 7, 248, 5, 0, 4, 3, 220, 240, 45, 37, 0, 254, 5, 249, 241, 229, 217, 250, 10, 247, 247, 13, 15, 244, 244, 249, 214,
-			217, 9, 8, 243, 252, 246, 245, 3, 241, 220, 225, 2, 16, 255, 11, 255, 221, 240, 255, 9, 31, 4, 213, 220, 252, 1, 1, 5, 16, 36,
-			14, 213, 193, 232, 26, 33, 16, 6, 242, 240, 5, 250, 218, 223, 7, 35, 7, 242, 3, 3, 247, 228, 227, 1, 22, 15, 244, 237, 248, 252,
-			245, 255, 15, 1, 0, 246, 227, 249, 4, 2, 6, 13, 13, 3, 242, 228, 246, 248, 14, 43, 12, 4, 242, 219, 233, 248, 17, 17, 26, 25,
-			253, 246, 243, 8, 253, 229, 11, 16, 5, 32, 30, 246, 232, 227, 242, 22, 12, 35, 56, 1, 241, 1, 11, 250, 232, 250, 28, 50, 250, 228,
-			11, 22, 9, 219, 217, 29, 61, 2, 223, 255, 8, 5, 239, 212, 22, 87, 27, 218, 223, 0, 24, 4, 228, 253, 79, 89, 235, 169, 233, 48,
-			17, 205, 241, 76, 83, 23, 201, 183, 223, 19, 57, 16, 17, 49, 3, 237, 247, 244, 0, 0, 9, 53, 25, 226, 239, 13, 47, 56, 247, 213,
-			4, 6, 223, 218, 235, 51, 122, 57, 223, 233, 6, 251, 200, 181, 6, 81, 62, 0, 237, 10, 18, 250, 220, 232, 2, 11, 36, 16, 248, 22,
-			21, 248, 0, 10, 1, 252, 246, 241, 209, 207, 11, 66, 96, 37, 208, 225, 249, 234, 224, 220, 21, 84, 72, 58, 27, 220, 201, 209, 228, 22,
-			37, 8, 242, 8, 36, 245, 215, 229, 218, 248, 23, 19, 10, 248, 244, 248, 2, 241, 232, 15, 2, 232, 1, 25, 9, 237, 206, 212, 17, 33,
-			4, 246, 221, 194, 207, 255, 31, 37, 10, 249, 240, 204, 215, 237, 249, 22, 25, 45, 16, 215, 210, 209, 236, 8, 13, 21, 40, 12, 213, 202,
-			209, 12, 29, 8, 11, 249, 6, 232, 186, 234, 24, 38, 38, 255, 226, 238, 230, 238, 244, 0, 45, 23, 8, 4, 226, 243, 9, 255, 242, 14,
-			37, 7, 240, 220, 220, 23, 46, 0, 0, 11, 2, 227, 195, 248, 21, 33, 47, 13, 7, 221, 199, 243, 24, 62, 38, 8, 0, 239, 253, 250,
-			224, 236, 24, 66, 54, 241, 227, 2, 250, 249, 252, 250, 21, 32, 11, 246, 241, 246, 243, 242, 1, 55, 66, 245, 188, 193, 2, 56, 40, 15,
-			17, 28, 245, 199, 203, 234, 22, 49, 45, 31, 35, 23, 224, 183, 202, 0, 52, 80, 31, 230, 245, 0, 234, 228, 247, 8, 48, 60, 249, 222,
-			236, 255, 21, 0, 23, 55, 0, 223, 189, 188, 32, 89, 50, 224, 217, 20, 7, 220, 191, 251, 75, 40, 1, 249, 252, 252, 234, 252, 19, 30,
-			35, 250, 236, 8, 12, 25, 249, 215, 239, 7, 21, 255, 2, 47, 43, 242, 207, 243, 17, 0, 221, 226, 54, 104, 34, 185, 166, 0, 65, 12,
-			209, 250, 47, 30, 240, 229, 19, 23, 246, 231, 233, 31, 49, 245, 193, 212, 52, 89, 249, 185, 254, 44, 23, 3, 238, 237, 254, 12, 4, 243,
-			15, 15, 253, 253, 221, 246, 255, 229, 253, 14, 45, 23, 206, 159, 173, 251, 57, 101, 70, 239, 196, 209, 250, 4, 247, 241, 9, 5, 228, 212,
-			219, 25, 39, 245, 234, 22, 54, 0, 194, 204, 11, 46, 2, 216, 223, 251, 36, 32, 210, 189, 13, 50, 7, 210, 203, 13, 35, 254, 242, 245,
-			35, 50, 249, 221, 231, 12, 47, 1, 175, 177, 8, 95, 97, 11, 208, 206, 215, 233, 9, 49, 61, 54, 12, 223, 207, 198, 235, 44, 80, 44,
-			249, 8, 13, 226, 195, 221, 33, 77, 69, 12, 218, 222, 224, 226, 8, 38, 35, 24, 19, 17, 232, 186, 215, 1, 53, 76, 3, 217, 252, 19,
-			5, 215, 206, 54, 114, 28, 205, 195, 239, 28, 30, 25, 6, 230, 246, 10, 254, 18, 40, 18, 242, 200, 202, 244, 16, 56, 62, 25, 2, 212,
-			199, 9, 35, 23, 29, 29, 9, 231, 230, 253, 237, 0, 60, 55, 254, 237, 12, 252, 229, 248, 250, 6, 41, 40, 3, 236, 215, 246, 34, 234,
-			214, 21, 84, 72, 252, 195, 184, 7, 44, 250, 234, 9, 68, 34, 210, 213, 238, 20, 29, 238, 246, 31, 33, 254, 221, 237, 2, 12, 250, 245,
-			47, 66, 13, 229, 214, 191, 240, 64, 58, 34, 7, 1, 37, 252, 166, 174, 253, 65, 61, 26, 56, 29, 206, 188, 188, 231, 250, 9, 108, 112,
-			18, 211, 181, 213, 252, 0, 35, 76, 22, 227, 225, 201, 244, 47, 47, 26, 0, 0, 242, 238, 248, 239, 9, 27, 0, 245, 12, 34, 24, 229,
-			193, 221, 250, 17, 16, 247, 247, 255, 251, 226, 197, 213, 24, 56, 10, 247, 255, 237, 231, 223, 248, 47, 28, 4, 6, 2, 1, 237, 241, 11,
-			4, 236, 8, 47, 1, 217, 228, 253, 17, 7, 7, 16, 241, 219, 235, 234, 221, 248, 25, 27, 2, 230, 228, 245, 252, 254, 253, 249, 254, 253,
-			249, 246, 0, 18, 12, 254, 236, 240, 6, 4, 250, 246, 2, 19, 9, 246, 233, 236, 251, 7, 8, 249, 246, 245, 252, 0, 234, 245, 5, 0,
-			15, 11, 237, 233, 1, 28, 20, 251, 243, 230, 248, 39, 30, 235, 236, 23, 36, 241, 223, 11, 23, 18, 253, 252, 9, 251, 0, 243, 2, 16,
-			242, 12, 17, 247, 230, 230, 20, 45, 27, 231, 197, 240, 21, 12, 8, 9, 33, 42, 240, 210, 219, 14, 47, 14, 3, 248, 5, 38, 5, 194,
-			202, 39, 48, 236, 232, 8, 24, 255, 202, 229, 48, 60, 12, 208, 221, 6, 5, 18, 26, 20, 10, 221, 221, 9, 28, 20, 7, 18, 26, 13,
-			237, 227, 6, 32, 17, 0, 5, 6, 28, 23, 235, 227, 18, 48, 250, 229, 10, 47, 52, 243, 223, 3, 33, 40, 244, 219, 253, 18, 24, 1,
-			245, 35, 34, 231, 221, 5, 24, 227, 206, 249, 62, 112, 32, 195, 208, 14, 22, 239, 246, 13, 21, 25, 15, 250, 7, 18, 254, 237, 223, 13,
-			55, 8, 188, 192, 6, 33, 34, 10, 231, 250, 27, 0, 200, 219, 26, 49, 25, 2, 233, 219, 247, 17, 13, 4, 3, 240, 250, 15, 0, 242,
-			225, 231, 242, 241, 17, 43, 9, 216, 225, 8, 10, 219, 198, 224, 11, 50, 19, 244, 252, 240, 215, 199, 231, 28, 33, 0, 249, 255, 230, 231,
-			248, 242, 1, 4, 239, 247, 252, 251, 249, 225, 240, 254, 235, 244, 6, 23, 19, 255, 230, 201, 228, 17, 20, 249, 235, 2, 20, 9, 221, 210,
-			255, 21, 17, 4, 236, 234, 245, 230, 243, 6, 255, 4, 250, 234, 243, 245, 233, 237, 2, 8, 7, 238, 221, 251, 11, 246, 232, 253, 11, 23,
-			2, 213, 225, 247, 17, 21, 241, 0, 12, 250, 1, 245, 229, 224, 1, 52, 24, 1, 234, 231, 8, 241, 243, 250, 18, 48, 0, 252, 251, 236,
-			253, 243, 4, 19, 38, 54, 242, 206, 233, 0, 5, 2, 31, 23, 32, 44, 233, 210, 232, 13, 12, 254, 23, 14, 3, 244, 240, 17, 29, 25,
-			8, 233, 230, 239, 20, 70, 21, 239, 16, 6, 5, 24, 4, 2, 11, 1, 7, 25, 31, 17, 240, 210, 255, 53, 50, 31, 0, 0, 14, 13,
-			0, 237, 6, 41, 48, 27, 250, 235, 242, 16, 35, 24, 9, 17, 21, 248, 224, 207, 245, 80, 78, 33, 22, 251, 237, 214, 215, 26, 32, 27,
-			58, 49, 19, 218, 167, 180, 247, 66, 94, 50, 244, 254, 12, 227, 214, 253, 27, 10, 243, 3, 62, 88, 34, 209, 177, 236, 40, 35, 4, 240,
-			248, 8, 247, 234, 254, 249, 253, 11, 7, 15, 237, 195, 215, 7, 33, 20, 15, 2, 255, 1, 221, 207, 237, 4, 16, 13, 8, 17, 7, 226,
-			207, 223, 252, 254, 251, 19, 22, 16, 14, 230, 205, 217, 242, 3, 246, 6, 24, 4, 249, 229, 216, 214, 243, 26, 24, 1, 228, 233, 251, 242,
-			238, 244, 250, 250, 253, 12, 20, 241, 199, 202, 249, 39, 4, 218, 234, 253, 254, 213, 197, 229, 10, 25, 2, 248, 229, 210, 225, 0, 1, 232,
-			7, 23, 0, 7, 246, 215, 217, 255, 20, 249, 2, 1, 244, 23, 248, 226, 0, 248, 6, 5, 236, 243, 6, 18, 246, 219, 242, 3, 17, 19,
-			237, 245, 252, 230, 249, 245, 0, 31, 23, 5, 220, 211, 246, 0, 16, 24, 34, 16, 215, 212, 226, 19, 39, 255, 29, 25, 9, 254, 206, 231,
-			254, 28, 41, 4, 25, 13, 4, 254, 209, 215, 0, 60, 59, 14, 255, 15, 29, 221, 209, 18, 29, 12, 9, 17, 3, 243, 252, 251, 12, 35,
-			5, 254, 5, 237, 250, 250, 247, 36, 22, 244, 3, 21, 5, 241, 244, 0, 24, 20, 0, 254, 251, 39, 42, 244, 235, 246, 8, 13, 15, 10,
-			246, 1, 14, 15, 5, 248, 252, 32, 40, 217, 201, 15, 39, 18, 250, 5, 15, 238, 225, 250, 14, 16, 9, 3, 4, 255, 2, 10, 255, 250,
-			237, 242, 255, 6, 47, 50, 9, 228, 197, 217, 19, 45, 27, 252, 245, 252, 244, 243, 253, 244, 251, 30, 32, 236, 198, 226, 2, 13, 13, 0,
-			3, 24, 11, 223, 222, 0, 254, 248, 6, 5, 255, 253, 22, 35, 248, 238, 229, 201, 251, 17, 4, 10, 250, 9, 24, 238, 191, 204, 6, 44,
-			35, 246, 226, 241, 7, 251, 211, 224, 4, 22, 17, 0, 246, 228, 243, 4, 239, 239, 3, 14, 6, 245, 239, 224, 226, 0, 9, 10, 19, 6,
-			241, 231, 226, 234, 3, 13, 4, 254, 255, 252, 246, 241, 221, 230, 13, 13, 0, 0, 243, 247, 255, 239, 233, 241, 17, 31, 253, 236, 238, 0,
-			17, 2, 219, 223, 19, 22, 2, 0, 227, 221, 20, 18, 241, 247, 237, 1, 14, 238, 244, 13, 9, 231, 237, 7, 7, 15, 254, 243, 11, 21,
-			243, 222, 244, 8, 31, 32, 8, 247, 251, 255, 228, 237, 21, 27, 23, 0, 248, 13, 244, 220, 245, 10, 25, 32, 26, 3, 231, 226, 246, 25,
-			21, 237, 249, 32, 27, 7, 247, 249, 7, 235, 223, 10, 33, 30, 17, 239, 252, 45, 23, 234, 228, 253, 27, 31, 24, 11, 254, 244, 236, 9,
-			37, 17, 0, 255, 16, 32, 7, 245, 3, 30, 41, 12, 255, 12, 26, 15, 221, 236, 37, 24, 0, 6, 22, 39, 20, 235, 231, 15, 41, 20,
-			253, 13, 20, 5, 255, 244, 17, 32, 251, 236, 6, 33, 32, 16, 8, 9, 245, 235, 251, 3, 32, 32, 5, 5, 1, 250, 253, 243, 243, 25,
-			55, 41, 5, 245, 238, 215, 217, 10, 51, 43, 16, 5, 0, 236, 227, 238, 1, 14, 15, 23, 4, 241, 242, 247, 2, 13, 22, 8, 237, 229,
-			3, 28, 14, 255, 238, 249, 19, 22, 4, 233, 250, 17, 7, 245, 238, 3, 31, 24, 234, 226, 9, 36, 13, 218, 223, 23, 41, 253, 229, 243,
-			2, 20, 248, 228, 12, 11, 247, 248, 255, 1, 247, 254, 1, 14, 20, 247, 248, 18, 4, 230, 247, 247, 245, 39, 24, 243, 241, 248, 9, 254,
-			254, 1, 2, 13, 246, 232, 244, 249, 0, 17, 24, 5, 238, 240, 14, 2, 219, 233, 26, 52, 13, 236, 230, 245, 17, 249, 234, 250, 24, 50,
-			3, 230, 235, 241, 3, 7, 20, 24, 12, 250, 225, 241, 12, 12, 0, 238, 251, 17, 3, 251, 244, 2, 15, 250, 251, 3, 2, 2, 9, 6,
-			250, 247, 246, 2, 2, 4, 14, 253, 245, 252, 5, 248, 234, 246, 252, 24, 37, 8, 227, 225, 15, 8, 230, 247, 27, 40, 11, 238, 235, 2,
-			14, 240, 222, 3, 43, 19, 229, 240, 24, 23, 254, 246, 3, 11, 252, 241, 248, 8, 6, 4, 16, 6, 1, 5, 245, 244, 251, 255, 7, 6,
-			21, 24, 9, 248, 227, 254, 16, 245, 237, 6, 36, 30, 251, 230, 240, 252, 4, 6, 1, 12, 32, 22, 239, 224, 249, 22, 20, 244, 252, 31,
-			29, 13, 253, 241, 244, 3, 23, 13, 0, 3, 5, 22, 26, 255, 243, 255, 10, 14, 0, 250, 5, 13, 24, 25, 5, 255, 20, 23, 230, 200,
-			236, 39, 58, 20, 245, 9, 26, 0, 228, 216, 246, 31, 26, 1, 0, 23, 15, 246, 241, 250, 10, 18, 7, 3, 12, 6, 244, 237, 0, 25,
-			16, 1, 2, 1, 2, 3, 7, 5, 255, 253, 244, 3, 34, 25, 0, 238, 236, 10, 27, 2, 231, 255, 29, 20, 1, 237, 247, 21, 16, 254,
-			246, 246, 8, 19, 3, 250, 239, 242, 12, 18, 1, 248, 250, 10, 15, 0, 239, 244, 17, 11, 246, 249, 248, 3, 10, 252, 2, 12, 255, 251,
-			2, 251, 246, 252, 255, 5, 9, 6, 0, 252, 240, 234, 0, 30, 27, 248, 231, 240, 5, 13, 238, 228, 3, 20, 22, 7, 233, 233, 255, 255,
-			255, 255, 253, 12, 13, 2, 238, 227, 255, 1, 252, 8, 19, 24, 243, 225, 2, 0, 240, 242, 250, 13, 17, 7, 17, 6, 224, 232, 249, 241,
-			9, 18, 5, 10, 6, 4, 246, 240, 11, 3, 242, 251, 244, 17, 45, 255, 230, 247, 8, 12, 230, 218, 15, 56, 26, 227, 223, 0, 14, 2,
-			238, 236, 17, 39, 4, 244, 3, 0, 251, 240, 229, 252, 16, 24, 20, 243, 226, 245, 252, 2, 2, 240, 247, 21, 35, 16, 241, 237, 239, 233,
-			250, 16, 34, 33, 253, 240, 4, 4, 246, 243, 249, 3, 19, 20, 15, 1, 243, 0, 0, 238, 246, 17, 21, 1, 251, 248, 6, 10, 239, 242,
-			7, 14, 7, 250, 246, 254, 9, 0, 243, 246, 3, 18, 9, 250, 244, 247, 249, 252, 6, 8, 9, 7, 253, 251, 254, 255, 251, 247, 0, 11,
-			8, 1, 4, 0, 242, 241, 254, 18, 25, 11, 245, 243, 6, 9, 252, 237, 254, 29, 23, 250, 237, 255, 14, 2, 235, 240, 24, 41, 13, 239,
-			232, 246, 0, 6, 13, 19, 20, 14, 255, 240, 246, 249, 249, 2, 15, 33, 28, 4, 236, 233, 255, 5, 0, 0, 14, 26, 12, 5, 0, 239,
-			252, 9, 10, 17, 6, 0, 10, 3, 1, 1, 245, 245, 1, 14, 17, 13, 5, 253, 253, 254, 245, 243, 5, 24, 22, 8, 1, 249, 232, 223,
-			239, 17, 37, 25, 252, 235, 240, 255, 6, 248, 245, 12, 23, 13, 2, 247, 242, 238, 237, 1, 14, 9, 22, 23, 251, 234, 230, 237, 6, 21,
-			13, 0, 9, 16, 255, 244, 239, 241, 242, 6, 27, 18, 24, 7, 232, 231, 234, 255, 18, 17, 22, 11, 239, 231, 239, 252, 17, 23, 2, 0,
-			5, 250, 237, 229, 249, 21, 25, 7, 251, 10, 8, 251, 249, 228, 222, 4, 38, 29, 10, 250, 245, 251, 248, 0, 9, 12, 16, 4, 4, 7,
-			231, 216, 250, 23, 26, 21, 5, 238, 245, 253, 248, 250, 243, 1, 17, 20, 10, 232, 243, 249, 233, 14, 30, 12, 1, 249, 248, 0, 16, 2,
-			249, 6, 9, 5, 241, 247, 6, 246, 247, 255, 2, 10, 4, 255, 253, 3, 3, 246, 240, 249, 19, 26, 250, 240, 255, 1, 254, 250, 254, 3,
-			17, 8, 231, 245, 10, 4, 7, 6, 4, 9, 254, 235, 244, 16, 31, 8, 238, 250, 17, 16, 245, 234, 249, 0, 7, 12, 6, 0, 247, 244,
-			249, 1, 9, 3, 251, 2, 7, 254, 244, 248, 0, 1, 8, 6, 252, 245, 247, 0, 9, 9, 252, 235, 240, 9, 20, 3, 242, 253, 9, 252,
-			240, 249, 14, 17, 251, 240, 251, 9, 15, 255, 239, 252, 7, 249, 249, 1, 1, 8, 6, 247, 240, 254, 13, 9, 252, 243, 249, 0, 4, 10,
-			7, 2, 0, 253, 245, 241, 253, 5, 5, 2, 249, 2, 12, 0, 247, 243, 252, 11, 7, 247, 248, 5, 5, 0, 0, 0, 246, 246, 6, 21,
-			18, 254, 247, 246, 241, 249, 251, 0, 9, 19, 19, 0, 246, 244, 251, 249, 238, 248, 12, 30, 19, 242, 238, 252, 253, 250, 1, 8, 12, 12,
-			0, 248, 4, 0, 230, 233, 10, 24, 18, 255, 247, 0, 1, 243, 232, 255, 21, 19, 7, 249, 2, 9, 249, 232, 242, 12, 11, 244, 248, 18,
-			21, 1, 245, 243, 249, 253, 0, 0, 8, 13, 255, 251, 251, 249, 251, 254, 4, 4, 8, 2, 248, 255, 0, 0, 9, 3, 243, 245, 5, 14,
-			6, 248, 0, 5, 251, 249, 250, 1, 9, 7, 0, 246, 247, 1, 3, 7, 253, 250, 6, 248, 242, 0, 1, 18, 17, 247, 246, 4, 9, 250,
-			232, 239, 12, 33, 24, 6, 247, 245, 248, 246, 255, 7, 9, 16, 26, 22, 253, 224, 224, 245, 3, 21, 14, 5, 19, 5, 249, 240, 228, 244,
-			18, 27, 5, 2, 255, 248, 5, 4, 2, 1, 10, 21, 254, 234, 255, 18, 8, 6, 14, 4, 1, 1, 246, 247, 255, 0, 255, 13, 28, 10,
-			247, 235, 232, 246, 8, 34, 31, 0, 247, 242, 242, 252, 251, 1, 20, 18, 255, 240, 246, 255, 3, 5, 0, 252, 253, 5, 11, 255, 240, 251,
-			14, 7, 248, 0, 15, 4, 241, 239, 252, 15, 10, 247, 251, 254, 0, 11, 0, 239, 248, 255, 255, 1, 249, 250, 10, 14, 0, 238, 246, 0,
-			252, 251, 1, 8, 5, 254, 246, 249, 2, 255, 248, 249, 0, 10, 15, 251, 234, 252, 8, 254, 243, 245, 5, 18, 10, 248, 243, 0, 5, 245,
-			238, 254, 11, 17, 6, 249, 249, 253, 248, 239, 247, 8, 12, 5, 253, 0, 5, 250, 238, 242, 2, 14, 7, 0, 1, 0, 246, 238, 249, 7,
-			9, 7, 1, 1, 0, 240, 239, 252, 2, 12, 13, 9, 0, 246, 240, 244, 4, 5, 0, 4, 8, 13, 7, 242, 239, 0, 7, 252, 242, 0,
-			13, 10, 252, 245, 1, 7, 246, 240, 252, 8, 12, 1, 252, 0, 0, 254, 252, 254, 1, 3, 4, 1, 1, 0, 252, 253, 250, 250, 3, 8,
-			9, 2, 249, 246, 0, 11, 1, 252, 252, 254, 7, 6, 252, 254, 10, 9, 247, 240, 254, 14, 7, 252, 1, 5, 9, 0, 236, 244, 8, 11,
-			4, 250, 0, 15, 7, 245, 246, 3, 8, 3, 6, 253, 251, 8, 253, 249, 11, 9, 248, 247, 9, 9, 1, 6, 254, 253, 4, 251, 248, 2,
-			12, 7, 254, 6, 12, 252, 244, 251, 0, 11, 4, 247, 0, 11, 15, 3, 245, 246, 254, 13, 9, 246, 255, 9, 5, 4, 2, 251, 254, 8,
-			1, 247, 255, 11, 14, 7, 252, 254, 8, 4, 4, 252, 248, 20, 23, 5, 253, 248, 5, 10, 254, 244, 1, 28, 21, 3, 243, 237, 10, 15,
-			246, 253, 19, 21, 14, 255, 244, 0, 254, 245, 254, 14, 32, 24, 247, 230, 248, 14, 11, 250, 249, 6, 22, 25, 255, 237, 253, 9, 18, 10,
-			239, 243, 11, 18, 6, 255, 253, 6, 21, 3, 243, 245, 253, 15, 15, 0, 0, 8, 5, 249, 239, 246, 13, 20, 4, 0, 4, 251, 241, 252,
-			11, 12, 4, 251, 252, 1, 1, 3, 4, 1, 3, 2, 0, 2, 5, 1, 249, 246, 252, 6, 14, 7, 250, 248, 251, 255, 254, 254, 5, 12,
-			11, 255, 244, 240, 246, 4, 9, 4, 3, 6, 5, 1, 248, 241, 253, 9, 7, 3, 3, 1, 252, 248, 244, 250, 8, 13, 5, 250, 244, 248,
-			1, 4, 253, 251, 4, 7, 0, 251, 248, 248, 2, 7, 254, 249, 2, 8, 2, 250, 247, 0, 5, 254, 247, 251, 8, 13, 0, 242, 246, 0,
-			3, 0, 250, 250, 1, 7, 3, 248, 245, 253, 2, 5, 252, 246, 2, 8, 0, 249, 246, 251, 2, 6, 2, 252, 253, 250, 255, 4, 251, 247,
-			0, 4, 7, 7, 253, 248, 248, 250, 1, 3, 254, 253, 0, 5, 8, 253, 244, 248, 1, 1, 250, 0, 8, 11, 5, 250, 248, 250, 251, 253,
-			1, 9, 7, 0, 254, 254, 253, 251, 253, 3, 2, 255, 254, 2, 10, 253, 246, 0, 2, 6, 1, 254, 2, 2, 0, 253, 255, 4, 1, 255,
-			0, 2, 7, 4, 248, 245, 3, 13, 3, 251, 254, 7, 15, 2, 241, 238, 251, 12, 14, 11, 5, 255, 0, 247, 245, 252, 0, 12, 15, 9,
-			255, 247, 255, 0, 254, 3, 7, 1, 3, 6, 1, 254, 246, 247, 4, 10, 5, 0, 10, 7, 246, 246, 253, 10, 16, 7, 254, 248, 0, 1,
-			254, 3, 0, 254, 7, 13, 9, 251, 243, 255, 9, 3, 247, 246, 10, 20, 11, 251, 240, 255, 4, 252, 254, 0, 0, 4, 9, 11, 11, 0,
-			244, 249, 0, 6, 7, 2, 4, 6, 8, 3, 249, 247, 252, 3, 9, 9, 7, 0, 249, 253, 0, 255, 4, 2, 3, 10, 6, 4, 255, 248,
-			255, 1, 4, 13, 13, 254, 245, 249, 0, 4, 254, 250, 4, 20, 18, 254, 238, 242, 255, 2, 0, 4, 14, 16, 0, 249, 250, 250, 0, 0,
-			0, 11, 16, 10, 253, 245, 251, 0, 253, 252, 5, 9, 14, 10, 251, 251, 0, 248, 244, 1, 11, 14, 18, 6, 249, 245, 243, 250, 0, 2,
-			1, 10, 18, 5, 249, 248, 251, 252, 249, 252, 12, 21, 7, 252, 248, 252, 1, 249, 241, 254, 21, 26, 11, 250, 240, 246, 253, 249, 253, 10,
-			18, 16, 3, 250, 245, 239, 246, 3, 7, 9, 9, 4, 0, 252, 249, 252, 254, 0, 4, 5, 8, 9, 255, 242, 241, 253, 10, 6, 252, 253,
-			2, 9, 6, 246, 238, 250, 10, 8, 255, 0, 3, 0, 253, 250, 248, 1, 10, 2, 247, 248, 4, 5, 253, 254, 0, 5, 5, 253, 248, 252,
-			255, 255, 2, 5, 6, 1, 253, 253, 0, 255, 252, 0, 1, 2, 3, 255, 249, 250, 0, 3, 1, 253, 252, 0, 0, 249, 253, 4, 4, 0,
-			252, 251, 1, 4, 253, 249, 0, 3, 3, 255, 250, 254, 254, 253, 254, 0, 3, 1, 0, 253, 1, 6, 0, 249, 249, 255, 3, 2, 0, 255,
-			0, 254, 255, 0, 252, 255, 6, 3, 252, 250, 255, 255, 0, 1, 253, 2, 6, 0, 252, 249, 0, 4, 4, 0, 247, 252, 3, 3, 1, 251,
-			0, 6, 2, 254, 248, 246, 255, 2, 0, 3, 9, 9, 0, 245, 243, 250, 0, 4, 2, 4, 11, 7, 253, 244, 246, 255, 4, 4, 3, 5,
-			9, 2, 248, 249, 248, 252, 1, 3, 12, 14, 5, 250, 243, 246, 246, 252, 6, 12, 16, 9, 252, 244, 243, 241, 249, 10, 18, 18, 6, 253,
-			252, 243, 239, 252, 8, 18, 24, 10, 245, 237, 241, 251, 2, 9, 15, 12, 8, 2, 245, 241, 245, 254, 8, 14, 10, 4, 5, 3, 248, 238,
-			241, 0, 16, 20, 10, 1, 253, 249, 247, 248, 0, 10, 15, 10, 0, 253, 254, 252, 245, 252, 9, 11, 12, 9, 0, 248, 246, 251, 255, 2,
-			8, 9, 10, 7, 252, 244, 247, 253, 0, 6, 9, 8, 8, 3, 253, 249, 246, 248, 7, 16, 7, 0, 251, 255, 8, 2, 249, 248, 252, 3,
-			12, 8, 255, 253, 1, 0, 249, 251, 5, 16, 14, 2, 254, 251, 252, 254, 254, 3, 9, 10, 6, 253, 248, 250, 0, 3, 5, 8, 8, 0,
-			252, 252, 250, 253, 5, 7, 9, 10, 1, 251, 251, 254, 0, 0, 0, 5, 7, 6, 4, 2, 0, 251, 249, 253, 0, 4, 3, 6, 11, 2,
-			253, 253, 252, 254, 0, 1, 8, 12, 8, 3, 249, 243, 249, 1, 7, 7, 7, 8, 4, 253, 250, 250, 251, 3, 11, 9, 2, 254, 255, 0,
-			255, 255, 2, 6, 7, 1, 255, 254, 250, 251, 0, 4, 8, 6, 0, 255, 0, 254, 251, 255, 6, 8, 4, 254, 252, 0, 2, 0, 0, 0,
-			2, 3, 3, 1, 255, 254, 255, 0, 0, 2, 1, 4, 2, 251, 249, 254, 5, 9, 5, 0, 0, 3, 1, 251, 250, 1, 10, 7, 254, 253,
-			0, 1, 0, 251, 251, 4, 7, 3, 255, 0, 1, 255, 252, 252, 255, 4, 5, 0, 0, 4, 1, 251, 251, 255, 3, 2, 255, 0, 8, 9,
-			255, 250, 252, 253, 0, 3, 3, 2, 2, 2, 0, 251, 251, 255, 0, 2, 3, 3, 6, 4, 255, 248, 248, 254, 3, 7, 8, 3, 0, 254,
-			251, 253, 254, 255, 3, 9, 5, 0, 2, 0, 253, 250, 250, 1, 10, 10, 1, 254, 0, 0, 254, 251, 253, 0, 6, 8, 6, 1, 248, 245,
-			253, 3, 6, 7, 5, 2, 0, 251, 250, 253, 0, 2, 5, 9, 8, 255, 248, 249, 251, 2, 8, 7, 3, 0, 0, 255, 251, 250, 254, 8,
-			10, 0, 255, 0, 0, 253, 252, 1, 5, 8, 4, 252, 251, 254, 0, 0, 255, 3, 8, 4, 254, 254, 254, 255, 0, 1, 3, 3, 0, 253,
-			254, 3, 1, 254, 1, 6, 4, 0, 254, 254, 0, 1, 1, 0, 2, 2, 2, 255, 254, 0, 0, 1, 2, 1, 2, 0, 253, 254, 255, 2,
-			8, 4, 1, 1, 251, 251, 0, 6, 5, 2, 1, 1, 0, 254, 252, 255, 1, 3, 5, 3, 3, 3, 254, 250, 254, 2, 5, 5, 3, 0,
-			255, 0, 0, 0, 0, 3, 5, 3, 254, 251, 254, 4, 6, 2, 0, 0, 1, 1, 0, 255, 2, 7, 7, 3, 254, 251, 253, 3, 2, 253,
-			1, 8, 7, 3, 0, 253, 253, 255, 0, 1, 5, 6, 1, 253, 252, 253, 1, 1, 1, 4, 4, 5, 3, 253, 251, 252, 255, 1, 5, 6,
-			5, 1, 251, 251, 255, 0, 0, 1, 3, 2, 2, 1, 253, 253, 0, 0, 1, 3, 0, 254, 255, 2, 3, 255, 252, 254, 2, 2, 0, 255,
-			2, 5, 3, 254, 249, 254, 5, 3, 0, 0, 4, 2, 255, 253, 255, 0, 0, 0, 0, 0, 200, 0, 4, 0, 1, 0, 191, 0, 180, 1,
-			28, 8, 44, 10, 124, 13, 216, 14, 128, 28, 50, 41, 25, 54, 56, 53, 42, 34, 11, 8, 185, 107, 137, 120, 120, 120, 185, 107, 127, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			191, 0, 180, 1, 28, 8, 44, 10, 124, 13, 216, 14, 128, 28, 80, 77, 35, 75, 77, 73, 57, 47, 15, 11, 185, 107, 137, 120, 120, 120,
-			185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 191, 0, 180, 1, 28, 8, 44, 10, 124, 13, 216, 14, 128, 28, 70, 65, 32, 69, 71, 67, 53, 43, 13, 10, 185, 107,
-			137, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 191, 0, 180, 1, 28, 8, 44, 10, 124, 13, 216, 14, 128, 28, 0, 29, 22, 46, 48, 45, 35, 29,
-			9, 7, 185, 107, 137, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 188, 4, 48, 0, 2, 252, 253, 253, 7, 7, 0, 0, 248, 251, 0, 6, 8, 0, 248, 248,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 156, 0, 4, 0, 1, 0, 253, 0, 32, 3, 40, 5,
+			77, 10, 28, 13, 216, 14, 244, 27, 46, 49, 30, 64, 61, 39, 37, 21, 11, 5, 200, 157, 123, 120, 120, 120, 247, 170, 165, 44, 65, 75,
+			130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 253, 0,
+			32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 50, 85, 40, 84, 80, 52, 48, 28, 15, 6, 200, 157, 123, 120, 120, 120, 247, 170,
+			165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 60, 79, 38, 81, 77, 50, 46, 27, 14, 6, 200, 157, 123, 120,
+			120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 253, 0, 32, 3, 40, 5, 77, 10, 28, 13, 216, 14, 244, 27, 0, 52, 31, 66, 63, 40, 38, 22, 11, 5,
+			200, 157, 123, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 4, 0, 1, 0, 136, 0, 224, 1, 4, 6, 36, 9, 248, 12, 220, 15, 95, 27, 45, 47,
+			29, 60, 60, 42, 44, 25, 17, 6, 170, 137, 153, 122, 124, 128, 197, 137, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 136, 0, 224, 1, 4, 6, 36, 9, 248, 12, 220, 15,
+			95, 27, 50, 74, 36, 76, 76, 52, 55, 32, 21, 8, 170, 137, 153, 122, 124, 128, 197, 137, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 168, 1, 180, 5, 72, 8,
+			248, 12, 220, 15, 95, 27, 70, 79, 36, 76, 68, 52, 55, 32, 21, 8, 170, 137, 165, 122, 124, 128, 197, 137, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 144, 1,
+			84, 6, 72, 8, 248, 12, 220, 15, 95, 27, 0, 38, 24, 51, 54, 35, 29, 21, 14, 5, 170, 137, 135, 122, 124, 128, 197, 137, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 240, 0,
+			5, 0, 1, 0, 168, 0, 240, 1, 132, 3, 216, 9, 224, 11, 141, 14, 32, 27, 45, 56, 27, 57, 64, 39, 35, 21, 13, 5, 165, 135,
+			150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 240, 1, 132, 3, 216, 9, 224, 11, 141, 14, 32, 27, 80, 108, 38, 80, 89, 54, 49, 29,
+			18, 7, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 170, 0, 224, 1, 138, 3, 186, 9, 224, 11, 141, 14, 76, 27, 55, 85, 31, 74,
+			79, 48, 43, 27, 16, 6, 164, 133, 148, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 181, 0, 172, 1, 115, 3, 51, 9, 224, 11, 141, 14, 22, 28,
+			60, 73, 31, 73, 64, 40, 33, 21, 12, 7, 163, 126, 141, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 192, 0, 120, 1, 92, 3, 172, 8, 224, 11,
+			141, 14, 224, 28, 0, 39, 25, 58, 35, 24, 16, 14, 7, 7, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 215, 0, 6, 0, 1, 0, 132, 0,
+			16, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 37, 18, 57, 36, 30, 30, 30, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 132, 0, 16, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 20, 68, 24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 70, 54, 21, 68, 46, 39, 43, 39, 10, 14,
+			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 178, 0, 126, 1, 31, 4, 53, 9, 251, 11, 131, 14, 113, 26, 40, 37, 22, 51, 47, 36,
+			32, 21, 14, 7, 163, 128, 153, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 138, 1, 212, 3, 56, 9, 224, 11, 136, 14, 144, 26, 40, 41,
+			24, 53, 51, 38, 33, 21, 15, 6, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 184, 0, 138, 1, 212, 3, 56, 9, 224, 11, 136, 14,
+			144, 26, 0, 29, 20, 44, 42, 31, 27, 17, 13, 5, 162, 133, 155, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 100, 0, 3, 0, 5, 0, 4, 0, 176, 0,
+			208, 7, 184, 11, 58, 14, 136, 19, 224, 21, 40, 4, 0, 24, 2, 2, 4, 4, 4, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0,
+			4, 0, 176, 0, 208, 7, 184, 11, 58, 14, 136, 19, 224, 21, 60, 5, 0, 25, 2, 2, 4, 4, 5, 4, 150, 125, 137, 137, 150, 175,
+			150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 9, 0, 4, 0, 176, 0, 108, 7, 184, 11, 58, 14, 136, 19, 224, 21, 0, 5, 0, 25, 2, 2, 4, 4, 5, 4, 150, 125,
+			137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 198, 8, 12, 0, 0, 255, 254, 252, 251, 251, 253, 0, 1, 1, 2, 2, 2, 0, 253, 251, 248, 245, 241, 237,
+			235, 236, 236, 237, 237, 237, 240, 243, 246, 245, 241, 238, 236, 235, 236, 237, 239, 244, 250, 253, 254, 0, 5, 10, 10, 4, 254, 250, 247, 240,
+			232, 227, 227, 228, 227, 230, 235, 240, 244, 245, 241, 240, 247, 0, 6, 6, 255, 247, 241, 231, 223, 230, 239, 242, 243, 247, 255, 8, 11, 6,
+			5, 6, 10, 22, 38, 49, 60, 70, 70, 66, 65, 65, 65, 64, 59, 49, 38, 23, 4, 244, 232, 218, 206, 202, 199, 196, 196, 197, 196, 199,
+			203, 207, 213, 221, 228, 233, 237, 239, 238, 238, 242, 247, 0, 14, 26, 30, 33, 37, 37, 39, 42, 41, 43, 47, 47, 46, 47, 43, 36, 31,
+			29, 27, 30, 39, 48, 56, 60, 58, 56, 61, 71, 81, 93, 105, 114, 120, 125, 123, 116, 113, 113, 109, 103, 104, 105, 102, 97, 90, 81, 78,
+			75, 60, 44, 38, 32, 25, 19, 6, 246, 235, 227, 225, 235, 249, 0, 0, 253, 249, 250, 254, 3, 11, 16, 16, 6, 252, 249, 254, 2, 2,
+			255, 251, 249, 242, 230, 214, 201, 197, 200, 200, 200, 207, 215, 224, 231, 231, 234, 246, 255, 252, 246, 241, 235, 227, 217, 211, 220, 242, 2, 8,
+			11, 14, 12, 1, 243, 227, 216, 210, 199, 182, 171, 172, 178, 183, 185, 188, 195, 208, 219, 222, 218, 214, 212, 210, 209, 213, 218, 225, 237, 249,
+			254, 0, 4, 14, 22, 20, 11, 3, 1, 250, 235, 222, 219, 222, 225, 228, 234, 241, 247, 255, 1, 3, 13, 27, 35, 34, 26, 17, 13, 4,
+			249, 246, 249, 249, 248, 249, 254, 4, 9, 7, 6, 9, 12, 19, 27, 29, 28, 28, 27, 22, 18, 18, 17, 13, 8, 3, 0, 250, 241, 234,
+			234, 237, 236, 235, 237, 238, 235, 227, 219, 220, 232, 249, 4, 14, 22, 30, 37, 37, 31, 25, 22, 16, 11, 11, 11, 13, 19, 24, 33, 39,
+			35, 27, 25, 18, 5, 254, 254, 0, 0, 251, 245, 241, 235, 229, 231, 236, 239, 239, 239, 239, 236, 232, 234, 242, 251, 0, 2, 7, 7, 255,
+			248, 247, 242, 227, 204, 190, 198, 217, 232, 247, 1, 2, 253, 244, 242, 9, 40, 37, 9, 246, 235, 223, 216, 220, 232, 244, 241, 223, 223, 251,
+			14, 7, 0, 253, 235, 216, 218, 236, 250, 249, 246, 254, 10, 19, 25, 36, 59, 70, 51, 31, 32, 31, 17, 3, 3, 22, 44, 48, 38, 29,
+			31, 30, 16, 254, 244, 244, 239, 226, 218, 230, 251, 8, 14, 20, 28, 29, 18, 2, 245, 235, 235, 244, 251, 3, 20, 35, 33, 21, 23, 44,
+			51, 21, 245, 245, 246, 234, 239, 1, 14, 17, 8, 252, 7, 32, 42, 35, 23, 12, 5, 255, 245, 242, 244, 240, 236, 241, 246, 247, 255, 9,
+			16, 20, 15, 12, 22, 24, 8, 1, 6, 8, 11, 9, 253, 251, 6, 11, 14, 15, 13, 24, 38, 30, 18, 21, 21, 8, 250, 244, 252, 5,
+			9, 20, 30, 19, 6, 13, 26, 29, 19, 6, 7, 16, 21, 33, 51, 56, 43, 23, 10, 11, 20, 31, 29, 11, 251, 244, 249, 9, 11, 251,
+			251, 10, 8, 250, 251, 13, 28, 22, 11, 15, 24, 15, 0, 255, 3, 4, 10, 18, 15, 8, 2, 3, 12, 13, 15, 35, 32, 249, 235, 1,
+			6, 251, 0, 13, 6, 251, 252, 11, 31, 32, 15, 15, 24, 18, 6, 255, 253, 2, 1, 251, 3, 19, 21, 12, 1, 3, 19, 27, 15, 254,
+			237, 221, 218, 234, 245, 241, 248, 2, 248, 236, 4, 45, 58, 42, 32, 40, 43, 36, 35, 41, 29, 252, 226, 228, 237, 245, 12, 34, 29, 11,
+			249, 236, 241, 252, 249, 241, 234, 228, 235, 246, 0, 28, 54, 45, 19, 6, 10, 24, 22, 251, 231, 237, 252, 11, 23, 27, 21, 5, 249, 1,
+			15, 21, 24, 14, 248, 241, 251, 8, 23, 26, 14, 10, 7, 249, 249, 17, 26, 0, 232, 238, 2, 0, 244, 251, 13, 16, 0, 247, 8, 29,
+			21, 0, 1, 11, 2, 231, 209, 223, 4, 18, 3, 0, 20, 29, 9, 5, 46, 62, 13, 235, 254, 17, 11, 254, 251, 12, 18, 252, 241, 4,
+			18, 5, 242, 245, 15, 27, 13, 4, 7, 6, 7, 18, 25, 12, 251, 253, 15, 17, 6, 13, 27, 12, 240, 244, 24, 38, 10, 235, 233, 252,
+			10, 2, 252, 5, 6, 0, 10, 17, 16, 24, 21, 0, 252, 4, 11, 19, 12, 255, 18, 46, 40, 33, 40, 33, 23, 27, 13, 243, 233, 237,
+			241, 247, 242, 241, 9, 36, 33, 3, 235, 226, 212, 195, 205, 229, 243, 254, 3, 255, 6, 38, 71, 76, 43, 13, 25, 47, 39, 13, 9, 37,
+			43, 255, 221, 243, 27, 38, 255, 204, 211, 249, 244, 226, 246, 20, 24, 15, 11, 25, 42, 35, 1, 234, 246, 0, 245, 249, 8, 245, 221, 248,
+			34, 38, 3, 231, 252, 35, 8, 203, 221, 34, 22, 199, 199, 33, 76, 21, 241, 29, 75, 58, 15, 254, 2, 252, 219, 202, 241, 25, 13, 246,
+			9, 44, 48, 33, 27, 24, 6, 238, 229, 246, 7, 234, 190, 204, 242, 243, 232, 249, 8, 3, 4, 24, 34, 26, 11, 250, 237, 235, 246, 17,
+			31, 9, 248, 250, 3, 30, 45, 29, 26, 25, 0, 240, 242, 239, 245, 252, 242, 236, 247, 6, 22, 30, 19, 252, 243, 252, 246, 227, 222, 224,
+			221, 221, 231, 252, 21, 21, 255, 246, 5, 24, 26, 252, 222, 232, 248, 237, 235, 0, 9, 255, 246, 3, 42, 69, 45, 6, 249, 250, 255, 254,
+			244, 246, 246, 215, 206, 255, 43, 33, 251, 236, 251, 0, 237, 234, 253, 249, 212, 182, 206, 254, 253, 224, 236, 15, 24, 13, 0, 0, 20, 16,
+			238, 239, 26, 31, 246, 226, 252, 37, 47, 3, 236, 15, 24, 238, 221, 244, 0, 234, 199, 209, 253, 0, 239, 246, 9, 32, 31, 253, 244, 254,
+			234, 215, 217, 234, 9, 16, 6, 31, 49, 33, 28, 18, 246, 231, 224, 223, 240, 232, 202, 195, 208, 229, 6, 28, 30, 25, 15, 0, 251, 5,
+			10, 241, 203, 201, 244, 31, 31, 12, 15, 17, 1, 249, 253, 239, 201, 186, 226, 7, 7, 10, 8, 249, 244, 235, 228, 250, 246, 211, 207, 218,
+			232, 6, 10, 252, 0, 248, 237, 0, 3, 248, 250, 238, 229, 250, 12, 14, 13, 14, 16, 7, 1, 3, 242, 231, 249, 254, 239, 231, 224, 230,
+			248, 253, 3, 14, 0, 227, 216, 231, 248, 254, 253, 241, 228, 228, 230, 239, 6, 15, 247, 219, 232, 10, 9, 243, 252, 17, 22, 2, 225, 236,
+			15, 252, 233, 13, 31, 11, 250, 247, 21, 48, 22, 238, 221, 228, 238, 228, 234, 13, 3, 218, 226, 5, 32, 36, 250, 215, 232, 231, 212, 233,
+			251, 226, 207, 235, 35, 55, 13, 236, 254, 20, 15, 252, 239, 240, 243, 247, 13, 34, 13, 238, 242, 6, 20, 23, 255, 219, 218, 239, 246, 243,
+			246, 247, 237, 230, 240, 0, 9, 8, 248, 237, 3, 7, 215, 189, 217, 233, 233, 247, 247, 231, 240, 255, 2, 21, 25, 12, 21, 25, 253, 234,
+			234, 245, 7, 11, 18, 27, 249, 222, 7, 47, 54, 31, 224, 196, 230, 234, 224, 240, 219, 189, 200, 223, 4, 34, 5, 234, 249, 0, 0, 8,
+			255, 234, 223, 222, 230, 233, 238, 0, 14, 15, 20, 35, 50, 45, 22, 11, 8, 247, 231, 238, 243, 227, 209, 210, 229, 5, 26, 14, 251, 244,
+			240, 234, 228, 221, 219, 216, 218, 236, 249, 250, 3, 17, 25, 31, 14, 238, 229, 232, 224, 225, 242, 2, 16, 14, 17, 48, 57, 21, 4, 8,
+			249, 227, 215, 217, 243, 7, 1, 255, 1, 247, 234, 240, 5, 19, 2, 219, 203, 235, 11, 253, 227, 239, 12, 22, 5, 243, 2, 14, 230, 199,
+			219, 229, 215, 217, 234, 14, 53, 38, 252, 248, 19, 33, 18, 243, 222, 219, 213, 203, 223, 255, 243, 211, 224, 16, 52, 50, 14, 249, 6, 21,
+			11, 241, 221, 216, 195, 177, 210, 250, 240, 215, 222, 15, 57, 48, 29, 15, 241, 231, 241, 237, 233, 214, 192, 227, 18, 35, 65, 71, 36, 29,
+			30, 8, 246, 205, 162, 174, 195, 204, 223, 235, 2, 31, 29, 38, 52, 17, 239, 239, 254, 4, 214, 156, 187, 252, 12, 23, 45, 48, 20, 240,
+			245, 37, 53, 5, 207, 197, 214, 214, 214, 233, 248, 250, 243, 246, 30, 62, 38, 0, 228, 216, 244, 15, 10, 254, 232, 218, 239, 251, 249, 13,
+			8, 228, 230, 13, 46, 43, 255, 222, 237, 5, 7, 232, 199, 214, 237, 227, 239, 24, 34, 6, 229, 243, 41, 37, 222, 188, 226, 8, 4, 239,
+			237, 252, 10, 15, 12, 33, 50, 8, 222, 229, 245, 254, 237, 196, 205, 237, 229, 240, 254, 220, 228, 24, 48, 68, 56, 250, 235, 4, 8, 15,
+			255, 204, 197, 207, 203, 239, 21, 2, 234, 243, 21, 58, 42, 246, 227, 236, 243, 243, 229, 224, 241, 243, 234, 247, 4, 8, 14, 13, 3, 2,
+			0, 247, 0, 9, 253, 251, 0, 235, 227, 1, 5, 236, 228, 230, 241, 5, 3, 251, 253, 240, 234, 253, 254, 248, 254, 245, 239, 1, 17, 26,
+			28, 15, 0, 248, 243, 247, 251, 249, 245, 226, 222, 0, 18, 3, 248, 245, 251, 0, 242, 237, 248, 240, 227, 229, 234, 249, 253, 234, 242, 12,
+			14, 8, 3, 0, 17, 17, 250, 254, 7, 255, 0, 248, 233, 251, 0, 244, 0, 6, 253, 0, 240, 229, 13, 31, 5, 254, 255, 248, 245, 228,
+			237, 20, 4, 220, 240, 24, 36, 11, 213, 214, 12, 255, 210, 230, 255, 250, 244, 242, 23, 65, 21, 222, 249, 25, 7, 227, 209, 228, 239, 217,
+			227, 7, 16, 12, 2, 2, 42, 57, 18, 254, 250, 230, 216, 206, 218, 1, 3, 238, 8, 49, 45, 12, 240, 236, 240, 237, 232, 225, 218, 214,
+			209, 240, 47, 63, 22, 240, 234, 253, 254, 222, 213, 237, 242, 230, 236, 12, 45, 38, 6, 253, 14, 20, 248, 212, 211, 227, 231, 236, 255, 19,
+			24, 8, 4, 30, 51, 37, 6, 237, 228, 222, 211, 216, 232, 235, 229, 231, 255, 30, 27, 253, 250, 22, 34, 255, 208, 207, 231, 229, 227, 242,
+			4, 20, 11, 251, 31, 65, 29, 254, 11, 22, 17, 241, 204, 223, 246, 226, 224, 251, 2, 2, 0, 250, 6, 17, 1, 239, 237, 240, 231, 213,
+			223, 254, 9, 1, 246, 239, 5, 29, 16, 5, 7, 240, 224, 238, 252, 10, 14, 244, 236, 7, 27, 39, 37, 4, 243, 247, 245, 248, 248, 227,
+			218, 221, 226, 248, 16, 21, 12, 4, 18, 42, 34, 9, 250, 233, 224, 225, 218, 218, 234, 243, 245, 251, 4, 27, 41, 20, 253, 1, 5, 244,
+			222, 223, 252, 9, 242, 232, 5, 22, 9, 253, 253, 10, 10, 232, 213, 245, 4, 237, 226, 240, 252, 6, 8, 255, 0, 0, 247, 251, 1, 0,
+			253, 230, 222, 16, 51, 29, 14, 11, 255, 0, 0, 241, 230, 214, 202, 220, 246, 250, 248, 3, 18, 24, 28, 23, 254, 230, 225, 226, 235, 255,
+			17, 12, 249, 2, 29, 26, 10, 6, 254, 248, 235, 223, 253, 18, 236, 219, 249, 12, 35, 49, 21, 255, 1, 3, 12, 13, 238, 205, 194, 202,
+			231, 2, 3, 255, 8, 28, 41, 41, 31, 10, 238, 214, 205, 216, 230, 238, 244, 244, 247, 11, 29, 26, 12, 253, 252, 5, 250, 232, 236, 237,
+			225, 223, 241, 23, 46, 28, 9, 7, 5, 0, 242, 229, 235, 238, 232, 235, 244, 4, 19, 10, 4, 14, 8, 251, 236, 227, 242, 0, 253, 0,
+			7, 15, 23, 5, 247, 252, 236, 224, 245, 249, 241, 250, 250, 253, 18, 27, 34, 46, 36, 4, 235, 221, 211, 212, 232, 253, 0, 251, 253, 19,
+			49, 53, 30, 8, 249, 232, 215, 204, 211, 228, 229, 222, 244, 35, 63, 48, 17, 1, 1, 254, 237, 221, 219, 224, 233, 244, 255, 14, 24, 11,
+			253, 2, 14, 17, 9, 245, 229, 235, 249, 1, 0, 242, 230, 244, 18, 28, 17, 12, 4, 253, 8, 0, 224, 213, 205, 200, 238, 15, 12, 16,
+			19, 11, 28, 46, 30, 255, 231, 234, 253, 247, 232, 237, 242, 253, 19, 20, 14, 14, 3, 4, 20, 3, 242, 252, 248, 255, 26, 12, 245, 0,
+			4, 5, 24, 16, 253, 244, 233, 249, 19, 5, 243, 235, 228, 254, 12, 244, 240, 247, 240, 5, 20, 5, 13, 7, 239, 12, 37, 16, 10, 0,
+			238, 0, 253, 227, 249, 9, 250, 251, 245, 240, 11, 9, 236, 248, 4, 240, 231, 246, 4, 0, 233, 227, 246, 254, 253, 5, 11, 2, 246, 245,
+			0, 254, 244, 241, 243, 247, 249, 0, 20, 30, 13, 1, 13, 24, 22, 9, 252, 254, 1, 244, 233, 239, 242, 240, 241, 240, 242, 253, 253, 247,
+			254, 1, 254, 254, 250, 250, 0, 0, 175, 0, 4, 0, 1, 0, 128, 0, 32, 2, 196, 4, 216, 9, 188, 12, 20, 15, 96, 27, 45, 45,
+			33, 61, 58, 39, 36, 33, 17, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 128, 0, 32, 2, 196, 4, 216, 9, 188, 12, 20, 15,
+			96, 27, 60, 71, 42, 76, 72, 49, 46, 42, 22, 7, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 32, 2, 196, 4, 216, 9,
+			188, 12, 20, 15, 96, 27, 70, 57, 38, 69, 65, 44, 41, 38, 19, 6, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 128, 0, 32, 2,
+			236, 4, 216, 9, 188, 12, 20, 15, 96, 27, 0, 41, 32, 58, 55, 37, 35, 32, 16, 5, 167, 135, 135, 120, 120, 120, 197, 135, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 250, 0,
+			5, 0, 1, 0, 248, 0, 144, 2, 204, 6, 196, 9, 242, 13, 183, 15, 64, 28, 45, 28, 24, 44, 49, 44, 29, 19, 7, 4, 193, 135,
+			180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 144, 2, 204, 6, 196, 9, 242, 13, 183, 15, 64, 28, 80, 82, 41, 76, 83, 75, 49, 33,
+			12, 8, 193, 135, 180, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0, 128, 2, 204, 6, 208, 9, 225, 13, 155, 15, 70, 28, 80, 74, 39, 72,
+			78, 72, 48, 33, 11, 8, 193, 132, 174, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 214, 0, 33, 2, 59, 7, 27, 10, 118, 13, 233, 14, 110, 28,
+			45, 48, 28, 58, 59, 61, 44, 33, 10, 7, 187, 115, 141, 120, 120, 120, 217, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 248, 1, 108, 7, 60, 10, 72, 13,
+			156, 14, 128, 28, 0, 30, 23, 48, 48, 52, 39, 30, 9, 6, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 32, 1,
+			66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 45, 49, 30, 65, 58, 38, 30, 19, 9, 4, 186, 152, 120, 120, 120, 120, 192, 155,
+			135, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 32, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 70, 100, 43, 92, 83, 55, 43, 28, 13, 6, 186, 152, 120, 120,
+			120, 120, 192, 155, 135, 44, 45, 70, 130, 57, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 32, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 60, 82, 38, 83, 75, 50, 38, 25, 11, 5,
+			186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 56, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 32, 1, 66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 0, 43, 28, 61, 55, 36,
+			28, 18, 8, 4, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 4, 0, 33, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15,
+			20, 26, 52, 28, 19, 35, 41, 44, 44, 28, 11, 4, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 165, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 169, 0, 56, 1, 192, 8, 28, 11,
+			84, 13, 40, 15, 20, 26, 75, 43, 24, 44, 52, 56, 56, 36, 14, 6, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60,
+			165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 169, 0, 56, 1,
+			192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 79, 35, 21, 39, 46, 50, 50, 32, 12, 5, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44,
+			45, 70, 130, 60, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 0, 33, 25, 36, 43, 46, 46, 32, 12, 5, 166, 170, 129, 120, 120, 120,
+			167, 190, 120, 44, 45, 70, 130, 60, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 150, 0, 4, 0, 1, 0, 184, 0, 152, 1, 128, 7, 236, 9, 52, 13, 80, 15, 96, 25, 50, 41, 35, 59, 42, 57, 53, 28,
+			12, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 184, 0, 152, 1, 128, 7, 236, 9, 52, 13, 80, 15, 96, 25, 60, 74, 47, 79,
+			57, 76, 71, 38, 17, 7, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 184, 0, 152, 1, 128, 7, 236, 9, 52, 13, 80, 15, 96, 25,
+			40, 60, 42, 71, 51, 68, 64, 34, 15, 6, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 160, 1, 108, 7, 20, 10, 92, 13,
+			120, 15, 96, 25, 0, 44, 34, 68, 38, 51, 47, 27, 10, 8, 160, 105, 120, 120, 120, 120, 130, 60, 120, 44, 45, 70, 130, 60, 165, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 216, 0,
+			248, 2, 140, 5, 60, 10, 20, 13, 175, 14, 117, 27, 50, 38, 30, 48, 51, 44, 37, 30, 12, 3, 196, 162, 200, 120, 120, 120, 249, 174,
+			255, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 216, 0, 248, 2, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 60, 50, 38, 50, 64, 46, 46, 38, 16, 4, 196, 162, 200, 120,
+			120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 208, 0, 248, 2, 120, 5, 40, 10, 20, 13, 175, 14, 117, 27, 40, 38, 36, 43, 55, 33, 36, 33, 13, 3,
+			196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 208, 0, 226, 2, 80, 5, 236, 9, 1, 13, 155, 14, 105, 27, 0, 20, 29, 29, 37, 22,
+			24, 24, 11, 3, 192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 204, 0, 100, 2, 208, 4, 60, 10, 168, 12, 10, 15,
+			0, 28, 45, 47, 34, 51, 72, 40, 48, 23, 14, 5, 170, 150, 150, 120, 120, 120, 170, 165, 120, 44, 45, 70, 130, 59, 160, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 204, 0, 100, 2, 208, 4, 60, 10,
+			168, 12, 10, 15, 0, 28, 80, 67, 41, 61, 86, 47, 57, 28, 17, 6, 170, 150, 150, 120, 120, 120, 170, 165, 120, 44, 45, 70, 130, 59,
+			165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 204, 0, 100, 2,
+			208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 40, 58, 38, 55, 81, 45, 54, 26, 16, 6, 170, 150, 150, 120, 120, 120, 170, 165, 120, 44,
+			45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			204, 0, 100, 2, 216, 4, 60, 10, 168, 12, 10, 15, 0, 28, 0, 39, 37, 46, 64, 34, 42, 21, 11, 8, 167, 150, 150, 120, 120, 120,
+			167, 165, 120, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 190, 0, 5, 0, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 50, 39, 25, 45, 62, 20, 33, 18,
+			9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 50, 76, 35, 63,
+			86, 28, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27,
+			50, 76, 35, 63, 86, 28, 45, 25, 13, 7, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 192, 1, 72, 3, 38, 10, 208, 11,
+			47, 14, 159, 27, 40, 48, 30, 53, 65, 24, 39, 21, 11, 6, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 165, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 192, 0, 192, 1, 72, 3,
+			38, 10, 208, 11, 47, 14, 159, 27, 0, 28, 28, 45, 41, 20, 33, 18, 9, 5, 177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70,
+			130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 100, 0, 4, 0,
+			1, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 36, 3, 58, 43, 21, 21, 30, 15, 7, 177, 175, 102, 120,
+			120, 120, 177, 175, 117, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 61, 4, 76, 56, 28, 28, 40, 20, 10,
+			177, 175, 102, 120, 120, 120, 177, 175, 117, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 45, 3, 64, 49, 24,
+			24, 35, 17, 8, 177, 180, 102, 120, 120, 120, 177, 180, 117, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 72, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 24,
+			2, 45, 35, 17, 17, 25, 12, 6, 177, 200, 102, 120, 120, 120, 177, 200, 117, 44, 45, 70, 130, 60, 160, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 110, 0, 6, 0, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10,
+			2, 13, 238, 14, 192, 27, 45, 52, 26, 59, 70, 38, 32, 27, 10, 5, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 14, 1, 212, 2,
+			106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 65, 111, 37, 85, 102, 55, 46, 38, 14, 7, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 40, 100, 36, 81, 97, 53, 44, 37, 14, 7, 165, 148, 135, 120, 120, 120,
+			167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 218, 0, 120, 2, 232, 3, 161, 10, 109, 12, 71, 14, 60, 27, 50, 85, 27, 67, 88, 50, 40, 35, 16, 7, 166, 145,
+			137, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 40, 68, 25, 64, 64, 45, 41, 24,
+			17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 144, 0, 216, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 0, 48, 21, 54,
+			54, 38, 34, 20, 14, 7, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 45, 0, 3, 0, 5, 0, 116, 0, 232, 0, 164, 6, 176, 9, 152, 13,
+			60, 15, 124, 21, 45, 9, 20, 12, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 116, 0, 232, 0, 164, 6,
+			216, 9, 192, 13, 80, 15, 124, 21, 0, 9, 20, 12, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0,
+			232, 0, 164, 6, 216, 9, 192, 13, 80, 15, 124, 21, 0, 9, 20, 12, 8, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
+			187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			254, 5, 22, 0, 235, 3, 25, 4, 249, 243, 11, 15, 250, 0, 16, 8, 247, 255, 5, 0, 249, 254, 18, 17, 7, 1, 250, 15, 11, 0,
+			253, 2, 13, 2, 255, 22, 12, 244, 16, 10, 0, 234, 10, 1, 249, 12, 240, 239, 0, 12, 3, 248, 228, 252, 249, 252, 1, 245, 7, 23,
+			218, 230, 7, 33, 4, 248, 255, 4, 27, 15, 234, 238, 255, 7, 0, 15, 3, 8, 255, 9, 3, 242, 8, 19, 248, 255, 8, 13, 4, 230,
+			235, 1, 31, 7, 239, 235, 0, 1, 244, 4, 20, 23, 237, 225, 239, 10, 22, 0, 252, 237, 0, 25, 241, 234, 11, 18, 254, 233, 240, 15,
+			9, 245, 255, 4, 218, 7, 25, 230, 247, 12, 246, 231, 0, 251, 13, 12, 255, 232, 232, 3, 3, 14, 3, 6, 3, 14, 27, 56, 71, 6,
+			221, 183, 203, 28, 228, 244, 53, 41, 18, 211, 239, 5, 53, 110, 73, 10, 226, 230, 234, 251, 0, 32, 33, 20, 6, 250, 216, 197, 213, 27,
+			12, 253, 241, 223, 19, 232, 247, 33, 12, 242, 222, 242, 18, 254, 18, 249, 219, 8, 10, 10, 6, 25, 34, 229, 221, 249, 0, 251, 235, 27,
+			40, 233, 255, 8, 12, 246, 230, 247, 244, 233, 1, 33, 34, 219, 15, 25, 252, 237, 4, 16, 12, 10, 0, 235, 235, 236, 224, 233, 224, 16,
+			46, 232, 212, 233, 7, 0, 0, 211, 239, 9, 55, 52, 246, 26, 66, 247, 191, 251, 246, 7, 19, 73, 105, 35, 20, 49, 245, 207, 219, 15,
+			33, 235, 194, 246, 63, 255, 195, 218, 253, 236, 200, 30, 44, 219, 24, 38, 167, 196, 255, 79, 85, 247, 237, 3, 200, 172, 231, 11, 28, 13,
+			0, 245, 1, 241, 0, 53, 7, 228, 27, 67, 27, 18, 68, 117, 46, 177, 190, 49, 82, 200, 155, 88, 124, 255, 169, 184, 252, 38, 243, 190,
+			206, 252, 246, 167, 191, 226, 40, 27, 210, 3, 34, 230, 217, 208, 34, 255, 233, 11, 30, 231, 247, 67, 44, 237, 220, 10, 23, 27, 34, 0,
+			12, 36, 252, 23, 1, 38, 70, 16, 32, 21, 208, 250, 23, 223, 183, 58, 68, 205, 208, 253, 48, 220, 174, 227, 32, 18, 204, 255, 51, 254,
+			233, 210, 6, 32, 239, 252, 229, 247, 62, 8, 216, 249, 4, 20, 254, 25, 26, 9, 239, 242, 5, 248, 2, 53, 244, 246, 52, 33, 2, 234,
+			240, 39, 251, 163, 246, 26, 236, 188, 235, 39, 17, 204, 221, 8, 62, 35, 0, 227, 246, 41, 255, 194, 255, 72, 27, 238, 210, 43, 49, 18,
+			25, 234, 223, 19, 33, 240, 16, 45, 46, 235, 3, 248, 12, 46, 247, 236, 8, 20, 248, 252, 234, 27, 18, 237, 6, 228, 7, 58, 231, 183,
+			16, 48, 241, 225, 230, 3, 237, 1, 10, 248, 224, 221, 238, 250, 21, 8, 232, 243, 234, 235, 241, 239, 13, 39, 248, 196, 243, 53, 32, 225,
+			214, 45, 30, 5, 221, 205, 17, 233, 235, 228, 238, 7, 22, 5, 226, 232, 49, 32, 0, 248, 51, 71, 223, 244, 38, 41, 23, 252, 20, 30,
+			234, 237, 253, 11, 20, 7, 217, 216, 1, 236, 217, 38, 47, 240, 242, 30, 42, 11, 224, 3, 46, 253, 238, 222, 237, 10, 236, 220, 2, 32,
+			15, 27, 211, 249, 60, 27, 224, 231, 2, 17, 17, 227, 7, 47, 24, 217, 228, 5, 248, 193, 239, 6, 232, 228, 18, 25, 10, 254, 15, 35,
+			18, 248, 252, 239, 238, 1, 255, 243, 19, 48, 46, 3, 254, 4, 255, 239, 226, 241, 246, 244, 1, 10, 8, 28, 35, 253, 3, 22, 9, 21,
+			7, 240, 253, 252, 17, 18, 19, 4, 2, 61, 11, 218, 218, 253, 248, 221, 251, 35, 46, 56, 41, 23, 14, 20, 1, 7, 18, 20, 16, 14,
+			242, 249, 32, 32, 224, 229, 227, 239, 244, 233, 231, 250, 231, 210, 198, 212, 242, 241, 243, 4, 248, 237, 214, 205, 238, 21, 251, 236, 248, 246,
+			243, 222, 235, 30, 30, 43, 17, 252, 0, 248, 238, 248, 253, 12, 6, 0, 22, 27, 28, 247, 241, 244, 244, 210, 208, 229, 219, 190, 238, 17,
+			16, 250, 253, 38, 27, 1, 230, 19, 243, 232, 9, 33, 246, 244, 36, 23, 0, 16, 9, 255, 238, 226, 8, 5, 24, 242, 238, 28, 48, 50,
+			34, 3, 18, 15, 227, 238, 2, 19, 32, 53, 54, 18, 250, 5, 23, 248, 249, 235, 243, 242, 236, 9, 29, 30, 42, 31, 7, 7, 5, 236,
+			222, 244, 1, 41, 42, 21, 8, 0, 14, 2, 231, 251, 4, 237, 214, 234, 21, 26, 10, 4, 34, 63, 23, 237, 248, 19, 20, 0, 238, 8,
+			39, 21, 234, 240, 14, 27, 226, 209, 222, 13, 20, 240, 229, 0, 250, 251, 4, 31, 42, 30, 13, 255, 242, 235, 227, 238, 3, 17, 24, 242,
+			237, 244, 228, 212, 228, 4, 2, 243, 236, 245, 247, 249, 252, 242, 247, 250, 255, 246, 239, 241, 245, 234, 225, 238, 246, 249, 7, 248, 219, 229,
+			253, 227, 226, 229, 17, 36, 245, 227, 233, 245, 12, 244, 246, 9, 249, 232, 234, 255, 15, 247, 235, 6, 0, 0, 33, 28, 253, 245, 30, 42,
+			11, 243, 8, 61, 63, 30, 11, 13, 3, 1, 8, 11, 14, 35, 41, 31, 254, 10, 19, 249, 254, 0, 16, 29, 24, 18, 8, 12, 16, 16,
+			40, 31, 34, 18, 1, 244, 246, 28, 21, 255, 14, 16, 7, 251, 239, 253, 14, 17, 246, 231, 231, 221, 206, 226, 244, 21, 12, 246, 250, 3,
+			250, 250, 246, 235, 232, 243, 10, 10, 1, 245, 0, 8, 6, 0, 238, 213, 208, 232, 239, 203, 203, 233, 231, 229, 232, 227, 225, 231, 234, 233,
+			255, 0, 239, 220, 219, 0, 16, 16, 8, 247, 230, 235, 15, 18, 240, 234, 243, 253, 9, 246, 248, 1, 12, 33, 27, 18, 15, 13, 14, 29,
+			33, 35, 19, 251, 232, 243, 4, 26, 9, 253, 250, 1, 5, 6, 5, 249, 6, 11, 11, 16, 23, 14, 26, 39, 45, 15, 247, 243, 3, 16,
+			20, 5, 250, 230, 218, 247, 35, 31, 32, 31, 44, 31, 19, 12, 11, 4, 14, 44, 67, 39, 0, 243, 249, 0, 255, 0, 246, 249, 15, 2,
+			252, 1, 1, 243, 240, 22, 58, 26, 0, 255, 26, 14, 242, 239, 12, 20, 19, 11, 17, 13, 239, 215, 225, 14, 26, 26, 19, 25, 31, 8,
+			254, 13, 10, 249, 255, 22, 15, 255, 248, 254, 253, 16, 255, 245, 249, 248, 240, 230, 216, 223, 218, 203, 221, 17, 43, 42, 18, 17, 21, 8,
+			255, 5, 2, 239, 234, 240, 225, 221, 221, 222, 227, 215, 221, 224, 222, 205, 204, 224, 7, 5, 250, 250, 241, 247, 253, 5, 250, 239, 212, 215,
+			229, 246, 237, 224, 217, 244, 246, 220, 204, 200, 204, 208, 243, 0, 238, 229, 242, 13, 15, 4, 245, 255, 246, 241, 242, 251, 248, 216, 225, 254,
+			15, 6, 3, 5, 2, 250, 0, 24, 30, 18, 4, 27, 44, 37, 23, 34, 38, 37, 35, 37, 14, 251, 235, 254, 4, 5, 13, 19, 12, 23,
+			56, 67, 63, 46, 35, 41, 41, 36, 34, 20, 29, 16, 23, 19, 12, 18, 13, 30, 35, 26, 4, 4, 6, 11, 24, 38, 37, 37, 36, 19,
+			9, 0, 9, 13, 12, 3, 6, 249, 244, 242, 239, 5, 15, 4, 251, 248, 252, 247, 233, 237, 237, 244, 238, 226, 234, 234, 233, 217, 233, 234,
+			231, 233, 232, 234, 221, 224, 1, 254, 223, 220, 227, 240, 228, 229, 249, 251, 229, 222, 225, 230, 217, 208, 208, 221, 236, 249, 6, 14, 252, 8,
+			40, 30, 7, 0, 26, 20, 7, 10, 20, 27, 253, 1, 13, 19, 6, 9, 30, 9, 238, 242, 8, 14, 2, 18, 37, 51, 48, 48, 55, 46,
+			36, 46, 56, 50, 47, 36, 16, 251, 0, 15, 29, 4, 237, 244, 244, 247, 3, 0, 16, 27, 35, 47, 45, 17, 7, 0, 7, 238, 226, 216,
+			207, 213, 226, 235, 237, 225, 223, 234, 244, 248, 3, 0, 233, 209, 217, 242, 246, 235, 234, 238, 254, 0, 247, 218, 201, 189, 204, 230, 220, 209,
+			215, 222, 227, 209, 203, 222, 228, 215, 245, 246, 247, 241, 237, 236, 229, 234, 8, 38, 30, 10, 6, 27, 26, 10, 251, 6, 8, 13, 37, 31,
+			4, 1, 27, 52, 45, 4, 252, 10, 21, 19, 27, 20, 19, 15, 10, 24, 26, 32, 37, 30, 18, 9, 21, 24, 24, 246, 0, 33, 47, 23,
+			11, 0, 10, 29, 40, 43, 25, 9, 0, 16, 16, 16, 14, 7, 10, 12, 1, 249, 4, 253, 247, 255, 12, 26, 16, 255, 238, 246, 251, 0,
+			10, 16, 10, 6, 14, 15, 8, 255, 255, 9, 252, 3, 5, 6, 235, 234, 248, 16, 17, 13, 15, 13, 19, 21, 25, 251, 237, 255, 17, 248,
+			237, 240, 242, 253, 14, 29, 21, 235, 0, 0, 188, 4, 48, 0, 2, 252, 253, 253, 7, 7, 0, 0, 248, 251, 0, 6, 8, 0, 248, 248,
 			0, 7, 4, 2, 252, 247, 0, 255, 7, 6, 251, 243, 249, 3, 14, 16, 0, 247, 246, 252, 2, 8, 0, 0, 250, 253, 7, 4, 255, 252,
 			253, 251, 2, 2, 249, 252, 2, 16, 12, 246, 236, 252, 4, 18, 6, 248, 246, 241, 12, 7, 5, 253, 241, 248, 7, 7, 8, 254, 243, 245,
 			4, 10, 11, 8, 234, 234, 6, 19, 11, 7, 240, 240, 12, 18, 255, 237, 245, 252, 6, 1, 8, 21, 2, 236, 242, 250, 1, 32, 30, 243,
@@ -12757,840 +9876,4580 @@ FilesInMemory create_espeakdata_phons () {
 			3, 3, 3, 255, 255, 2, 2, 0, 0, 0, 1, 1, 0, 255, 2, 0, 2, 3, 0, 0, 255, 0, 0, 2, 3, 3, 255, 255, 5, 2,
 			255, 3, 0, 253, 255, 2, 4, 5, 0, 253, 1, 3, 2, 2, 255, 254, 2, 0, 3, 4, 254, 252, 4, 6, 0, 255, 0, 1, 2, 2,
 			0, 254, 0, 3, 1, 5, 4, 254, 1, 0, 1, 1, 255, 0, 5, 4, 254, 0, 2, 1, 2, 1, 255, 0, 2, 2, 0, 1, 0, 0,
-			3, 1, 0, 0, 3, 0, 255, 4, 255, 254, 2, 0, 2, 3, 0, 254, 255, 2, 2, 0, 2, 0, 255, 1, 3, 2, 172, 7, 130, 0,
-			1, 1, 1, 1, 1, 1, 1, 2, 4, 12, 31, 46, 11, 197, 182, 214, 6, 55, 45, 33, 240, 222, 13, 255, 213, 207, 230, 4, 90, 100,
-			0, 167, 227, 243, 38, 96, 2, 131, 232, 24, 14, 75, 16, 202, 2, 34, 243, 255, 239, 214, 7, 41, 2, 11, 20, 17, 13, 235, 211, 226,
-			247, 19, 6, 19, 16, 35, 6, 1, 9, 216, 216, 255, 0, 52, 53, 255, 249, 242, 247, 255, 249, 232, 207, 233, 32, 41, 0, 21, 2, 234,
-			252, 251, 29, 57, 247, 206, 220, 232, 54, 39, 14, 222, 240, 239, 8, 49, 37, 3, 222, 223, 0, 37, 16, 240, 237, 249, 24, 10, 245, 212,
-			227, 7, 52, 32, 244, 226, 230, 4, 0, 0, 16, 41, 45, 23, 212, 217, 231, 17, 26, 4, 238, 218, 239, 254, 249, 255, 226, 247, 7, 1,
-			233, 217, 238, 19, 40, 64, 20, 3, 242, 231, 246, 3, 250, 0, 18, 18, 10, 14, 22, 9, 10, 251, 217, 235, 10, 10, 15, 12, 24, 32,
-			30, 230, 222, 231, 1, 9, 4, 251, 252, 20, 27, 15, 254, 231, 231, 241, 255, 7, 9, 5, 3, 246, 254, 12, 236, 238, 225, 7, 13, 8,
-			12, 246, 4, 10, 8, 249, 239, 1, 2, 231, 227, 10, 21, 81, 57, 250, 200, 214, 225, 6, 24, 1, 253, 9, 22, 12, 251, 230, 232, 250,
-			18, 12, 7, 247, 249, 246, 249, 253, 5, 4, 6, 255, 240, 235, 248, 23, 42, 9, 248, 229, 0, 6, 19, 0, 239, 247, 8, 20, 8, 255,
-			248, 5, 22, 32, 11, 244, 228, 238, 254, 12, 10, 0, 252, 3, 4, 0, 4, 0, 253, 249, 251, 3, 11, 5, 5, 248, 233, 247, 0, 10,
-			8, 250, 237, 247, 5, 3, 255, 2, 249, 249, 0, 3, 2, 0, 251, 250, 4, 3, 5, 12, 12, 2, 252, 252, 250, 8, 10, 5, 6, 13,
-			3, 3, 7, 251, 255, 253, 244, 250, 4, 0, 3, 4, 253, 243, 246, 250, 1, 1, 251, 245, 255, 3, 2, 2, 251, 244, 247, 251, 251, 8,
-			2, 248, 254, 5, 6, 2, 5, 255, 0, 253, 250, 7, 10, 7, 255, 0, 0, 5, 11, 10, 6, 1, 250, 0, 3, 2, 251, 253, 3, 9,
-			10, 2, 255, 253, 254, 6, 10, 8, 0, 252, 4, 10, 5, 253, 246, 252, 0, 7, 7, 1, 3, 252, 253, 0, 4, 1, 0, 255, 253, 253,
-			0, 255, 1, 0, 254, 253, 2, 2, 0, 2, 1, 255, 255, 255, 0, 4, 3, 0, 0, 0, 1, 1, 2, 2, 2, 3, 0, 2, 3, 1,
-			0, 0, 255, 0, 0, 2, 2, 3, 2, 1, 0, 254, 252, 0, 0, 0, 0, 255, 255, 0, 0, 255, 254, 253, 253, 254, 0, 0, 2, 255,
-			251, 251, 254, 0, 2, 0, 255, 255, 255, 1, 2, 0, 255, 255, 255, 0, 3, 2, 1, 255, 254, 254, 0, 2, 2, 0, 255, 255, 0, 0,
-			0, 0, 0, 0, 255, 254, 0, 1, 1, 254, 254, 255, 255, 1, 1, 255, 254, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 255,
-			254, 254, 0, 1, 2, 2, 0, 255, 0, 1, 0, 1, 0, 254, 1, 2, 2, 1, 0, 255, 0, 0, 0, 1, 0, 0, 255, 0, 0, 2,
-			2, 2, 0, 255, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 255,
-			0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 1,
-			0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0,
-			255, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 1, 0, 0, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
-			1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 1, 1, 0, 0, 0,
-			0, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 1, 1, 1, 0,
-			0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1, 1, 1,
-			0, 1, 1, 0, 0, 0, 1, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 2, 0, 0, 0,
-			0, 2, 2, 0, 0, 0, 2, 1, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1,
-			0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 1,
-			1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 1, 2,
-			0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+			3, 1, 0, 0, 3, 0, 255, 4, 255, 254, 2, 0, 2, 3, 0, 254, 255, 2, 2, 0, 2, 0, 255, 1, 3, 2, 58, 0, 3, 0,
+			5, 0, 116, 0, 232, 0, 252, 8, 240, 10, 232, 13, 24, 16, 124, 21, 58, 11, 22, 13, 9, 4, 4, 4, 0, 0, 200, 212, 187, 255,
+			255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 1, 0, 116, 0, 232, 0, 252, 8, 240, 10, 232, 13, 24, 16, 124, 21, 0, 11, 22, 13, 9, 4, 4, 4, 0, 0,
+			200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 252, 8, 240, 10, 232, 13, 24, 16, 124, 21, 0, 11, 22, 13, 9, 4,
+			4, 4, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 42, 3, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 1, 0, 0, 0, 255, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 3, 2, 255, 251, 247,
-			247, 251, 1, 8, 10, 7, 4, 1, 254, 252, 249, 250, 248, 255, 4, 9, 10, 4, 2, 0, 255, 254, 253, 255, 254, 1, 3, 3, 1, 255,
-			255, 254, 0, 0, 1, 3, 2, 1, 0, 254, 254, 252, 254, 254, 0, 2, 3, 4, 4, 2, 0, 254, 254, 254, 255, 0, 2, 3, 3, 2,
-			2, 0, 255, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, 254, 251, 252, 255, 1, 3, 3, 3, 2, 1, 0,
-			0, 253, 252, 253, 0, 4, 5, 5, 4, 2, 0, 0, 0, 254, 254, 0, 2, 3, 1, 1, 0, 0, 255, 0, 0, 0, 1, 1, 0, 0,
-			0, 0, 0, 0, 255, 0, 2, 4, 3, 2, 0, 0, 0, 0, 255, 0, 0, 2, 3, 3, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 1, 1,
-			1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 254, 253, 255, 2, 5, 6, 3, 0, 254, 253, 255, 0, 0, 0, 2, 4,
-			5, 5, 2, 0, 254, 253, 255, 1, 2, 1, 0, 0, 0, 0, 1, 0, 255, 255, 0, 1, 2, 1, 0, 0, 255, 255, 0, 0, 0, 0,
-			2, 3, 2, 2, 0, 255, 0, 0, 1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 1, 0, 255, 253, 251, 251, 253, 0, 2, 5,
-			7, 5, 1, 254, 253, 252, 252, 253, 255, 2, 5, 7, 7, 4, 0, 254, 254, 255, 0, 0, 0, 2, 2, 1, 1, 0, 255, 255, 255, 0,
-			1, 1, 1, 0, 255, 255, 255, 255, 255, 0, 0, 2, 4, 3, 2, 1, 0, 254, 255, 0, 0, 1, 2, 2, 2, 1, 0, 0, 0, 255,
-			0, 0, 1, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 254, 253, 253, 253, 254,
-			1, 3, 6, 7, 3, 255, 251, 251, 253, 255, 255, 0, 2, 4, 5, 5, 1, 254, 252, 252, 0, 1, 2, 1, 1, 0, 1, 1, 0, 255,
-			254, 0, 2, 3, 2, 0, 0, 254, 255, 0, 0, 0, 0, 0, 2, 3, 2, 0, 255, 255, 255, 0, 0, 1, 1, 1, 2, 1, 0, 0,
-			255, 0, 0, 0, 1, 2, 1, 0, 255, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 255, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 1, 0, 254, 253, 252, 254, 1, 2, 3, 4, 3, 2, 255, 253, 254,
-			255, 0, 0, 3, 4, 2, 1, 0, 0, 255, 0, 1, 1, 2, 0, 0, 0, 0, 0, 255, 0, 0, 0, 2, 2, 3, 1, 0, 0, 255,
-			255, 255, 0, 1, 1, 2, 3, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,
-			0, 0, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
-			0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0,
-			0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 254, 254, 0, 2, 4, 3, 2, 0, 0, 0, 1, 1, 0, 0, 0, 2,
-			3, 2, 0, 0, 255, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
-			1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
-			1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0,
-			0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 2, 6, 14, 26, 36, 42, 44, 45, 42, 34, 23, 3, 230, 196, 171, 166, 179, 204, 230, 249, 5, 15, 25, 30, 24, 0, 222, 185,
+			164, 168, 195, 224, 243, 0, 17, 47, 80, 102, 102, 79, 44, 11, 244, 226, 206, 185, 168, 166, 187, 230, 25, 68, 91, 97, 98, 100, 96, 75,
+			34, 239, 189, 158, 150, 159, 174, 191, 213, 245, 32, 78, 113, 125, 112, 81, 44, 9, 234, 200, 165, 137, 131, 153, 198, 251, 39, 70, 91, 106,
+			114, 110, 87, 46, 252, 202, 168, 153, 153, 163, 180, 204, 239, 26, 71, 104, 116, 106, 82, 53, 22, 245, 208, 171, 144, 137, 154, 187, 228, 9,
+			40, 64, 82, 92, 91, 73, 40, 255, 216, 188, 174, 170, 172, 180, 198, 229, 10, 48, 75, 85, 80, 66, 46, 22, 250, 216, 184, 161, 154, 166,
+			192, 225, 1, 31, 57, 77, 91, 94, 82, 55, 20, 244, 219, 203, 193, 189, 193, 206, 229, 1, 30, 51, 61, 62, 55, 42, 25, 4, 237, 213,
+			195, 187, 192, 206, 225, 245, 7, 25, 41, 52, 54, 45, 29, 8, 245, 229, 217, 210, 207, 210, 220, 235, 255, 17, 32, 40, 41, 38, 31, 21,
+			7, 248, 231, 219, 214, 217, 226, 238, 251, 7, 20, 31, 39, 40, 33, 21, 7, 250, 238, 229, 224, 223, 225, 233, 244, 2, 16, 27, 32, 33,
+			31, 26, 18, 7, 252, 240, 232, 228, 230, 235, 243, 253, 6, 17, 26, 31, 32, 28, 20, 9, 255, 246, 238, 233, 231, 232, 238, 246, 0, 10,
+			17, 22, 24, 23, 20, 13, 5, 253, 245, 238, 235, 235, 239, 245, 252, 2, 10, 17, 21, 22, 20, 15, 8, 1, 251, 246, 242, 240, 240, 243,
+			249, 255, 4, 9, 13, 15, 15, 13, 10, 5, 0, 251, 248, 245, 245, 246, 249, 252, 0, 3, 7, 10, 11, 10, 8, 5, 2, 0, 253, 251,
+			250, 250, 251, 253, 255, 1, 3, 5, 5, 6, 5, 4, 2, 0, 0, 255, 254, 254, 254, 255, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12,
-			116, 14, 88, 27, 110, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 7, 0, 116, 0, 24, 2, 136, 5,
-			16, 9, 88, 12, 16, 14, 88, 27, 55, 24, 22, 43, 46, 30, 28, 21, 11, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0,
-			72, 2, 120, 5, 208, 7, 224, 11, 152, 13, 88, 27, 0, 21, 22, 43, 37, 30, 13, 11, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120,
-			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182,
-			0, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 50, 50, 31, 60, 73, 41, 43, 33, 17, 6,
-			167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 90, 86, 41, 79, 96, 54,
-			56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 0, 42,
-			28, 55, 67, 38, 39, 30, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 0, 0, 3, 0, 1, 0, 123, 0, 15, 2, 181, 5, 176, 9,
-			198, 12, 136, 14, 38, 27, 50, 49, 30, 62, 69, 42, 44, 32, 16, 6, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
-			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 123, 0, 15, 2,
-			181, 5, 176, 9, 198, 12, 136, 14, 38, 27, 90, 88, 40, 83, 92, 56, 58, 43, 22, 8, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0,
-			123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27, 0, 42, 27, 57, 63, 38, 40, 30, 15, 5, 166, 145, 133, 120, 120, 120,
-			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250,
-			209, 182, 201, 0, 6, 0, 1, 0, 104, 0, 139, 1, 9, 8, 80, 10, 72, 13, 60, 15, 160, 27, 42, 46, 10, 66, 56, 58, 42, 33,
-			10, 8, 150, 165, 150, 120, 120, 120, 150, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64,
-			0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 104, 0, 139, 1, 20, 8, 160, 10, 72, 13, 60, 15, 32, 27, 50, 60, 16, 66,
-			78, 77, 67, 37, 15, 8, 167, 120, 150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242,
-			110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 128, 0, 179, 1, 232, 7, 80, 10, 52, 13, 60, 15, 64, 27,
-			31, 45, 20, 70, 53, 50, 46, 25, 9, 8, 180, 90, 150, 120, 120, 120, 180, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 168, 0, 3, 2, 67, 7, 196, 9, 112, 13,
-			60, 15, 64, 27, 44, 40, 25, 65, 56, 50, 38, 25, 12, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 1, 0, 168, 0, 3, 2, 103, 6,
-			156, 9, 32, 13, 85, 15, 64, 28, 34, 25, 21, 43, 43, 45, 36, 20, 6, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, 1, 0, 184, 0,
-			3, 2, 59, 6, 156, 9, 112, 13, 29, 16, 192, 28, 0, 25, 26, 43, 39, 39, 31, 16, 4, 8, 167, 150, 120, 120, 120, 120, 167, 105,
-			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191, 76, 8, 87, 182, 0, 250, 0, 0,
-			180, 0, 4, 0, 1, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 50, 32, 10, 58, 42, 49, 50, 24, 11, 5,
-			166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191,
-			197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 70, 73, 15, 88, 64, 74,
-			75, 37, 17, 8, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182,
-			232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 60, 65,
-			14, 83, 60, 70, 71, 35, 16, 7, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
-			0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 125, 0, 0, 1, 56, 9, 4, 11, 20, 13, 0, 15,
-			64, 26, 0, 33, 8, 52, 52, 53, 54, 29, 11, 8, 167, 99, 114, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
-			40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 95, 0, 4, 0, 1, 0, 157, 0, 144, 1,
-			90, 5, 252, 8, 168, 12, 181, 14, 148, 25, 45, 41, 21, 56, 54, 42, 37, 29, 12, 9, 174, 125, 138, 121, 121, 130, 187, 126, 137, 44,
-			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0,
-			157, 0, 144, 1, 90, 5, 252, 8, 168, 12, 181, 14, 148, 25, 90, 74, 29, 75, 73, 56, 50, 39, 16, 12, 174, 125, 138, 121, 121, 130,
-			187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250,
-			21, 8, 1, 0, 143, 0, 183, 1, 0, 5, 65, 9, 121, 12, 164, 14, 155, 26, 50, 60, 29, 67, 70, 44, 41, 32, 16, 7, 168, 136,
-			140, 120, 120, 123, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32,
-			0, 0, 240, 250, 209, 182, 1, 0, 143, 0, 183, 1, 0, 5, 65, 9, 121, 12, 164, 14, 155, 26, 0, 44, 25, 58, 60, 38, 36, 27,
-			14, 6, 168, 136, 140, 120, 120, 123, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65,
-			0, 191, 145, 236, 45, 182, 1, 250, 0, 0, 215, 0, 6, 0, 1, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13, 60, 15, 144, 26,
-			45, 44, 6, 70, 36, 21, 21, 30, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 104, 64, 0, 191, 197, 190, 111, 182, 1, 250, 0, 0, 3, 0, 176, 0, 64, 1, 92, 3, 56, 9, 12, 13,
-			60, 15, 144, 26, 30, 68, 7, 87, 45, 26, 26, 38, 15, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0,
-			0, 0, 40, 0, 0, 0, 0, 242, 110, 182, 232, 64, 0, 191, 233, 59, 105, 182, 200, 250, 21, 8, 1, 0, 176, 0, 64, 1, 92, 3,
-			56, 9, 12, 13, 60, 15, 144, 26, 50, 61, 7, 83, 43, 25, 25, 36, 14, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70,
-			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 49, 165, 0, 182, 29, 32, 0, 0, 240, 250, 209, 182, 1, 0, 146, 0,
-			166, 1, 126, 4, 46, 9, 228, 12, 216, 14, 248, 26, 50, 47, 16, 68, 52, 30, 30, 32, 14, 8, 172, 137, 118, 120, 120, 120, 177, 125,
-			117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 186, 209, 182, 72, 65, 0, 191, 145, 236, 45, 182, 1, 250, 0, 0,
-			1, 0, 125, 0, 240, 1, 78, 5, 39, 9, 200, 12, 145, 14, 66, 27, 40, 32, 21, 51, 55, 31, 32, 27, 13, 7, 169, 146, 130, 120,
-			120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 36, 23, 8, 28, 0, 0, 0, 0, 0, 0, 0,
-			0, 250, 0, 0, 1, 0, 122, 0, 8, 2, 102, 5, 38, 9, 196, 12, 136, 14, 75, 27, 0, 31, 22, 50, 55, 31, 32, 26, 13, 7,
-			168, 147, 131, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 191,
-			76, 8, 87, 182, 0, 250, 0, 0, 51, 1, 61, 0, 0, 0, 3, 3, 34, 126, 63, 228, 224, 253, 19, 246, 245, 31, 94, 39, 4, 4,
-			31, 47, 12, 255, 17, 4, 41, 10, 7, 12, 9, 8, 13, 12, 5, 243, 226, 244, 244, 251, 240, 226, 238, 62, 71, 228, 217, 12, 18, 14,
-			249, 10, 3, 233, 224, 4, 36, 44, 25, 254, 4, 35, 16, 240, 229, 2, 18, 12, 5, 11, 0, 245, 243, 249, 16, 11, 253, 241, 231, 251,
-			4, 238, 233, 250, 8, 11, 3, 252, 0, 250, 243, 254, 5, 37, 34, 8, 239, 251, 34, 27, 27, 11, 16, 40, 29, 12, 11, 7, 7, 239,
-			247, 6, 23, 9, 245, 233, 8, 7, 6, 247, 234, 6, 236, 209, 242, 5, 246, 224, 219, 0, 30, 9, 224, 212, 223, 249, 246, 235, 227, 234,
-			10, 15, 237, 7, 242, 22, 6, 217, 215, 0, 48, 10, 217, 227, 12, 32, 7, 235, 2, 9, 231, 226, 241, 248, 28, 221, 213, 247, 17, 5,
-			248, 246, 244, 214, 224, 245, 234, 241, 2, 19, 221, 246, 6, 247, 236, 228, 23, 0, 240, 234, 11, 5, 253, 1, 10, 3, 32, 19, 241, 254,
-			15, 249, 240, 14, 35, 8, 238, 20, 47, 17, 252, 246, 241, 0, 13, 33, 1, 9, 5, 9, 0, 6, 20, 0, 249, 244, 3, 250, 0, 39,
-			11, 220, 241, 39, 38, 14, 227, 236, 255, 255, 252, 250, 251, 4, 250, 246, 254, 254, 245, 231, 234, 248, 248, 243, 243, 244, 246, 245, 240, 236,
-			238, 239, 239, 240, 239, 242, 244, 238, 233, 239, 242, 243, 242, 235, 234, 238, 236, 240, 240, 246, 0, 5, 6, 9, 5, 241, 242, 245, 251, 10,
-			2, 19, 23, 19, 23, 15, 15, 2, 0, 253, 5, 13, 19, 19, 6, 8, 4, 247, 246, 0, 0};
-		autoFileInMemory espeakdata_phons2 = FileInMemory_createWithData (385580, reinterpret_cast<const char *> (&espeakdata_phons2_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/phondata", 
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 4, 0, 1, 0, 156, 0, 40, 1, 172, 8,
+			64, 11, 192, 13, 120, 15, 144, 27, 45, 40, 11, 59, 53, 50, 42, 28, 11, 7, 176, 106, 155, 120, 120, 120, 185, 107, 155, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 156, 0,
+			40, 1, 172, 8, 64, 11, 192, 13, 120, 15, 144, 27, 80, 74, 16, 81, 73, 68, 57, 38, 15, 9, 176, 106, 155, 120, 120, 120, 185, 107,
+			155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 156, 0, 36, 1, 196, 8, 76, 11, 216, 13, 144, 15, 144, 27, 50, 63, 14, 75, 67, 63, 52, 35, 14, 9, 176, 106, 155, 120,
+			120, 120, 185, 107, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 156, 0, 32, 1, 212, 8, 84, 11, 232, 13, 160, 15, 144, 27, 0, 33, 10, 53, 48, 45, 37, 25, 10, 6,
+			176, 106, 155, 120, 120, 120, 185, 107, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 36, 1, 196, 2, 104, 6, 206, 9, 142, 13, 132, 15, 220, 28, 45, 41,
+			30, 51, 59, 44, 32, 26, 9, 5, 248, 163, 170, 127, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 36, 1, 196, 2, 104, 6, 206, 9, 142, 13, 132, 15,
+			220, 28, 80, 65, 38, 65, 75, 56, 41, 33, 11, 6, 248, 163, 170, 127, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 36, 1, 196, 2, 104, 6, 206, 9,
+			142, 13, 132, 15, 220, 28, 60, 59, 36, 62, 71, 53, 38, 31, 11, 6, 248, 163, 170, 127, 120, 120, 220, 176, 161, 44, 45, 70, 130, 58,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 36, 1, 196, 2,
+			104, 6, 206, 9, 142, 13, 132, 15, 220, 28, 0, 35, 28, 48, 55, 41, 30, 24, 8, 5, 248, 163, 170, 127, 120, 120, 220, 176, 161, 44,
+			45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0,
+			4, 0, 1, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27, 45, 56, 28, 56, 68, 34, 34, 22, 14, 6, 172, 138,
+			135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27, 80, 111, 40, 80, 96, 48, 48, 31,
+			20, 8, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27, 70, 86, 36, 68,
+			86, 43, 43, 27, 18, 7, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 24, 2, 152, 3, 40, 10, 244, 11, 196, 14, 159, 27,
+			0, 47, 26, 50, 64, 32, 32, 20, 13, 5, 172, 138, 135, 120, 120, 120, 167, 138, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 66, 4, 15, 0, 0, 0, 255, 255, 253, 253, 255, 252,
+			251, 250, 248, 246, 243, 239, 233, 196, 188, 233, 27, 45, 16, 245, 239, 0, 16, 21, 11, 4, 3, 18, 20, 7, 246, 248, 1, 23, 28, 8,
+			0, 251, 1, 6, 255, 202, 190, 242, 37, 47, 4, 229, 239, 30, 51, 26, 2, 248, 0, 249, 219, 216, 250, 24, 15, 253, 227, 239, 251, 6,
+			242, 252, 248, 247, 250, 226, 244, 254, 18, 18, 13, 12, 18, 25, 20, 21, 25, 13, 22, 6, 15, 25, 27, 36, 6, 232, 235, 7, 25, 27,
+			240, 235, 238, 252, 15, 242, 0, 244, 5, 0, 251, 244, 191, 182, 211, 7, 44, 10, 204, 212, 236, 32, 35, 11, 252, 2, 32, 35, 15, 245,
+			248, 5, 24, 29, 22, 12, 250, 2, 19, 28, 15, 20, 14, 9, 23, 15, 14, 6, 7, 14, 14, 10, 251, 4, 4, 7, 253, 244, 2, 5,
+			13, 249, 243, 244, 0, 255, 250, 254, 5, 5, 235, 250, 2, 253, 1, 244, 247, 8, 6, 254, 240, 242, 5, 6, 10, 7, 247, 246, 249, 250,
+			3, 5, 247, 244, 10, 0, 245, 2, 0, 251, 235, 243, 13, 6, 12, 240, 232, 254, 253, 9, 248, 247, 10, 254, 0, 245, 249, 4, 9, 3,
+			250, 11, 242, 249, 8, 6, 6, 246, 241, 7, 8, 9, 9, 241, 244, 10, 19, 254, 233, 242, 12, 36, 247, 223, 238, 2, 21, 15, 251, 229,
+			240, 10, 16, 248, 7, 245, 255, 19, 5, 248, 212, 0, 51, 24, 253, 237, 241, 14, 10, 238, 4, 18, 241, 12, 4, 0, 9, 249, 12, 20,
+			7, 250, 12, 249, 254, 11, 255, 3, 252, 253, 15, 11, 236, 12, 15, 250, 244, 245, 25, 42, 238, 228, 255, 17, 21, 8, 3, 6, 251, 240,
+			17, 34, 0, 249, 18, 3, 236, 252, 15, 9, 254, 248, 0, 248, 253, 248, 241, 10, 243, 244, 23, 0, 225, 218, 248, 21, 38, 239, 216, 238,
+			0, 12, 0, 241, 229, 252, 12, 25, 239, 245, 4, 3, 5, 252, 246, 11, 33, 13, 253, 231, 242, 248, 25, 27, 254, 16, 239, 231, 15, 2,
+			25, 22, 209, 0, 43, 239, 255, 11, 11, 232, 241, 14, 245, 13, 14, 242, 237, 235, 245, 25, 0, 253, 15, 233, 249, 9, 252, 21, 23, 233,
+			247, 6, 253, 25, 20, 251, 226, 23, 29, 247, 241, 17, 24, 225, 218, 246, 29, 52, 29, 199, 191, 5, 69, 61, 240, 208, 227, 22, 6, 234,
+			10, 46, 3, 11, 248, 205, 252, 45, 13, 6, 30, 211, 226, 12, 45, 40, 215, 208, 242, 46, 50, 235, 145, 162, 221, 249, 25, 235, 177, 218,
+			241, 254, 44, 2, 244, 19, 11, 2, 32, 54, 45, 251, 210, 245, 62, 74, 233, 250, 15, 250, 5, 22, 68, 33, 237, 237, 249, 52, 52, 204,
+			233, 8, 251, 29, 58, 46, 193, 149, 244, 88, 34, 250, 238, 201, 17, 73, 252, 219, 215, 224, 35, 40, 41, 214, 207, 61, 28, 220, 0, 10,
+			36, 240, 193, 14, 241, 241, 112, 36, 176, 209, 240, 35, 32, 239, 239, 249, 2, 252, 247, 18, 25, 197, 201, 54, 56, 253, 222, 227, 7, 254,
+			1, 27, 249, 235, 19, 28, 14, 210, 247, 24, 229, 232, 12, 32, 46, 0, 199, 211, 239, 37, 254, 226, 34, 31, 248, 210, 12, 72, 250, 158,
+			208, 68, 81, 9, 185, 160, 17, 61, 32, 253, 224, 7, 0, 242, 247, 240, 32, 42, 252, 235, 216, 23, 34, 228, 234, 64, 19, 19, 85, 250,
+			163, 235, 82, 53, 12, 231, 18, 59, 246, 252, 17, 231, 11, 93, 10, 237, 3, 239, 31, 25, 247, 13, 5, 27, 52, 11, 213, 230, 7, 41,
+			70, 216, 168, 246, 16, 253, 21, 248, 226, 7, 243, 250, 240, 210, 23, 9, 0, 21, 231, 236, 216, 0, 22, 247, 226, 238, 44, 56, 21, 171,
+			161, 255, 39, 60, 51, 200, 158, 221, 20, 28, 0, 204, 229, 27, 238, 207, 232, 253, 43, 15, 224, 182, 253, 91, 23, 250, 178, 140, 250, 103,
+			66, 252, 215, 17, 90, 234, 201, 201, 14, 94, 12, 215, 22, 30, 251, 228, 178, 210, 32, 51, 4, 204, 195, 30, 8, 186, 199, 31, 70, 1,
+			230, 209, 231, 253, 253, 35, 63, 21, 2, 21, 218, 246, 15, 243, 33, 43, 63, 48, 194, 178, 246, 9, 44, 86, 24, 168, 196, 27, 48, 14,
+			217, 213, 14, 59, 44, 228, 185, 237, 35, 8, 9, 29, 6, 245, 196, 210, 225, 220, 254, 66, 61, 179, 174, 3, 74, 236, 151, 230, 13, 28,
+			3, 16, 200, 207, 248, 230, 1, 15, 28, 179, 167, 242, 18, 242, 250, 24, 223, 235, 27, 29, 218, 158, 224, 49, 63, 44, 40, 230, 185, 191,
+			241, 26, 63, 39, 0, 15, 235, 221, 248, 61, 18, 17, 48, 248, 31, 45, 232, 202, 23, 75, 74, 69, 245, 211, 218, 246, 41, 76, 76, 39,
+			34, 17, 226, 244, 45, 10, 24, 64, 61, 88, 33, 187, 221, 52, 57, 80, 66, 11, 232, 7, 7, 6, 14, 89, 66, 0, 49, 10, 202, 230,
+			27, 91, 75, 13, 10, 229, 233, 1, 252, 8, 43, 56, 251, 183, 219, 1, 33, 29, 0, 213, 13, 78, 221, 133, 220, 47, 80, 0, 205, 6,
+			237, 233, 215, 208, 236, 3, 34, 18, 194, 215, 17, 250, 225, 188, 239, 68, 48, 236, 206, 237, 232, 246, 61, 48, 255, 246, 24, 253, 203, 212,
+			247, 34, 74, 25, 208, 240, 37, 235, 236, 3, 42, 32, 229, 9, 254, 2, 46, 41, 7, 221, 244, 33, 22, 5, 222, 204, 56, 114, 18, 213,
+			215, 236, 7, 53, 65, 10, 236, 246, 19, 20, 246, 243, 29, 57, 241, 192, 9, 28, 20, 244, 218, 229, 34, 33, 237, 223, 214, 233, 250, 12,
+			11, 234, 209, 222, 247, 23, 0, 253, 247, 200, 208, 248, 0, 5, 219, 228, 1, 231, 221, 198, 209, 242, 252, 246, 242, 233, 238, 218, 186, 197,
+			242, 33, 11, 244, 212, 233, 241, 244, 202, 135, 165, 32, 94, 244, 138, 153, 214, 2, 18, 224, 172, 209, 246, 218, 196, 204, 221, 225, 218, 4,
+			240, 202, 195, 164, 190, 255, 1, 241, 219, 172, 170, 221, 12, 251, 208, 174, 186, 201, 198, 210, 249, 242, 194, 148, 132, 218, 21, 231, 195, 161,
+			168, 246, 0, 0, 199, 0, 6, 0, 5, 0, 24, 1, 240, 2, 116, 4, 4, 11, 152, 13, 35, 15, 64, 27, 51, 53, 27, 57, 72, 38,
+			39, 19, 3, 8, 225, 165, 135, 120, 120, 120, 225, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 240, 2, 116, 4, 4, 11, 72, 13, 191, 14, 64, 27, 75, 95,
+			34, 81, 88, 51, 55, 37, 5, 7, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 24, 1, 240, 2, 196, 4, 200, 10, 72, 13, 191, 14,
+			64, 27, 30, 77, 32, 77, 83, 48, 52, 35, 5, 6, 167, 165, 165, 120, 120, 120, 167, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 33, 0, 196, 0, 224, 2, 249, 5, 232, 8,
+			188, 12, 247, 13, 64, 27, 33, 39, 29, 59, 54, 45, 44, 45, 8, 8, 167, 150, 180, 120, 120, 120, 167, 120, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 193, 0, 208, 1,
+			160, 7, 173, 9, 21, 13, 229, 14, 64, 27, 40, 41, 30, 57, 50, 49, 43, 40, 14, 9, 167, 105, 180, 120, 120, 120, 167, 120, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0,
+			192, 0, 168, 1, 208, 7, 196, 9, 32, 13, 0, 15, 64, 27, 0, 30, 27, 50, 44, 44, 38, 34, 13, 8, 167, 100, 180, 120, 120, 120,
+			137, 85, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250,
+			0, 0, 0, 0, 6, 0, 1, 0, 204, 0, 158, 2, 252, 4, 60, 10, 168, 12, 10, 15, 0, 28, 40, 47, 32, 52, 71, 39, 47, 23,
+			13, 7, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 204, 0, 93, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28, 50, 115, 45, 89,
+			101, 56, 67, 33, 20, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 204, 0, 93, 2, 208, 4, 60, 10, 168, 12, 10, 15, 0, 28,
+			30, 104, 42, 84, 96, 53, 64, 32, 19, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 190, 0, 32, 2, 242, 5, 84, 10, 240, 12,
+			236, 14, 9, 28, 75, 69, 37, 71, 77, 51, 55, 30, 15, 7, 169, 142, 163, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 144, 1, 152, 8,
+			140, 10, 152, 13, 166, 14, 32, 28, 30, 37, 31, 54, 47, 57, 44, 32, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 156, 0,
+			144, 1, 174, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 31, 49, 49, 45, 42, 33, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			254, 251, 248, 244, 241, 237, 233, 229, 225, 221, 217, 213, 208, 204, 199, 195, 190, 185, 180, 176, 171, 166, 161, 156, 151, 146, 141, 136, 131, 126,
+			121, 117, 112, 107, 102, 97, 93, 88, 83, 79, 74, 70, 66, 61, 57, 53, 49, 45, 42, 38, 35, 31, 28, 25, 22, 19, 17, 14, 12, 10,
+			8, 6, 5, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 4, 5, 7, 9, 12, 14, 17, 21, 24, 27, 29, 32, 34, 37, 39,
+			42, 45, 47, 49, 52, 54, 57, 59, 61, 63, 65, 67, 69, 71, 73, 74, 76, 77, 78, 80, 80, 81, 82, 82, 82, 83, 82, 82, 82, 81,
+			80, 79, 77, 76, 74, 71, 69, 66, 175, 0, 4, 0, 1, 0, 130, 0, 80, 1, 162, 8, 240, 10, 112, 13, 100, 15, 120, 26, 45, 48,
+			19, 68, 52, 50, 43, 30, 11, 6, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 130, 0, 80, 1, 162, 8, 240, 10, 112, 13, 100, 15,
+			120, 26, 70, 89, 26, 93, 71, 68, 59, 40, 16, 8, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 130, 0, 80, 1, 162, 8, 200, 10,
+			112, 13, 100, 15, 120, 26, 60, 81, 24, 88, 67, 64, 56, 38, 15, 8, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 130, 0, 80, 1,
+			162, 8, 200, 10, 112, 13, 100, 15, 120, 26, 0, 36, 16, 58, 44, 43, 37, 25, 10, 5, 168, 95, 132, 143, 120, 120, 185, 102, 167, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0,
+			4, 0, 1, 0, 176, 0, 64, 1, 172, 3, 56, 9, 228, 12, 60, 15, 144, 26, 45, 39, 5, 66, 34, 17, 26, 29, 11, 7, 177, 125,
+			102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 64, 1, 172, 3, 56, 9, 228, 12, 60, 15, 144, 26, 80, 65, 7, 85, 44, 22, 33, 37,
+			14, 9, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 152, 3, 56, 9, 228, 12, 60, 15, 144, 26, 50, 48, 6, 73,
+			38, 19, 28, 31, 12, 7, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 228, 12, 60, 15, 144, 26,
+			0, 35, 5, 62, 32, 16, 24, 27, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0, 133, 0, 93, 1, 164, 6,
+			242, 8, 208, 12, 114, 14, 24, 25, 45, 41, 21, 57, 47, 41, 38, 32, 10, 11, 173, 111, 133, 121, 121, 130, 187, 126, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 133, 0,
+			93, 1, 164, 6, 242, 8, 208, 12, 114, 14, 24, 25, 80, 71, 27, 76, 62, 54, 50, 42, 13, 14, 173, 111, 133, 121, 121, 130, 187, 126,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 133, 0, 93, 1, 164, 6, 242, 8, 208, 12, 114, 14, 24, 25, 70, 57, 25, 68, 55, 49, 45, 38, 12, 13, 173, 111, 133, 121,
+			121, 130, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 133, 0, 93, 1, 164, 6, 242, 8, 208, 12, 114, 14, 24, 25, 0, 35, 19, 54, 44, 38, 35, 30, 9, 10,
+			173, 111, 133, 121, 121, 130, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 245, 0, 6, 0, 1, 0, 72, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 45, 50,
+			32, 67, 59, 34, 30, 19, 9, 4, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56, 0, 0, 0, 0, 45, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 72, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14,
+			32, 28, 40, 101, 43, 96, 85, 49, 43, 27, 13, 6, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 57, 0, 0, 0, 0,
+			45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 55, 1, 100, 3, 128, 5, 140, 10,
+			116, 13, 189, 14, 32, 28, 75, 82, 41, 88, 78, 48, 40, 26, 12, 6, 203, 144, 114, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 56,
+			0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 152, 0, 48, 1,
+			56, 9, 164, 11, 232, 13, 220, 15, 160, 26, 40, 59, 21, 68, 68, 61, 54, 32, 15, 7, 167, 110, 120, 120, 120, 120, 167, 110, 120, 44,
+			45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			105, 0, 48, 1, 56, 9, 164, 11, 232, 13, 220, 15, 93, 26, 45, 31, 15, 51, 51, 47, 46, 26, 12, 8, 172, 106, 109, 120, 120, 120,
+			167, 110, 120, 44, 45, 70, 130, 55, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 1, 0, 105, 0, 48, 1, 56, 9, 164, 11, 232, 13, 220, 15, 93, 26, 0, 31, 15, 51, 51, 47, 46, 26, 12, 8, 172, 106,
+			109, 120, 120, 120, 167, 110, 120, 44, 45, 70, 130, 54, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36,
+			0, 0, 0, 250, 0, 0, 60, 0, 5, 0, 5, 0, 100, 0, 16, 1, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 15, 1, 4, 9,
+			0, 0, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 49, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 100, 0, 16, 1, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21,
+			25, 5, 8, 16, 1, 1, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 49, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 5, 0, 100, 0, 16, 1, 64, 6, 40, 10, 232, 13,
+			24, 16, 124, 21, 20, 5, 8, 16, 1, 1, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 49, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 100, 0, 16, 1, 64, 6,
+			40, 10, 232, 13, 24, 16, 124, 21, 0, 3, 8, 11, 1, 1, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70,
+			130, 49, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 100, 0,
+			16, 1, 64, 6, 40, 10, 232, 13, 24, 16, 124, 21, 0, 2, 7, 9, 1, 1, 0, 0, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212,
+			187, 44, 45, 70, 130, 49, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			115, 0, 4, 0, 1, 0, 136, 0, 224, 1, 24, 6, 116, 9, 248, 12, 240, 15, 95, 27, 45, 44, 27, 57, 66, 39, 41, 24, 16, 6,
+			170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 136, 0, 224, 1, 24, 6, 116, 9, 248, 12, 220, 15, 95, 27, 70, 71, 34, 72, 83, 49,
+			52, 30, 20, 8, 170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 234, 1, 4, 6, 92, 9, 227, 12, 157, 15, 95, 27, 70, 64,
+			33, 69, 79, 47, 50, 30, 19, 7, 170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 4, 2, 240, 5, 36, 9, 178, 12, 10, 15,
+			95, 27, 0, 36, 24, 52, 59, 35, 38, 25, 14, 5, 170, 137, 135, 122, 124, 128, 197, 137, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 200, 0, 4, 0, 1, 0, 158, 0, 118, 1,
+			192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 50, 40, 18, 55, 57, 49, 46, 30, 11, 8, 180, 111, 153, 120, 120, 120, 185, 112, 155, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			158, 0, 118, 1, 192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 80, 75, 26, 76, 78, 68, 63, 42, 16, 11, 180, 111, 153, 120, 120, 120,
+			185, 112, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 158, 0, 118, 1, 192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 70, 63, 23, 69, 72, 62, 58, 38, 15, 10, 180, 111,
+			153, 120, 120, 120, 185, 112, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 158, 0, 118, 1, 192, 8, 44, 11, 132, 13, 0, 15, 8, 28, 0, 29, 16, 47, 48, 42, 39, 26,
+			10, 6, 180, 111, 153, 120, 120, 120, 185, 112, 155, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 45, 0, 5, 0, 1, 0, 144, 0, 120, 1, 188, 7, 120, 10, 132, 13, 160, 15, 128, 28,
+			45, 45, 22, 58, 58, 58, 47, 44, 11, 8, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 120, 1, 188, 7, 120, 10, 132, 13,
+			160, 15, 128, 28, 41, 91, 32, 84, 84, 84, 68, 64, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 208, 1, 188, 7,
+			80, 10, 132, 13, 216, 14, 128, 28, 74, 93, 38, 84, 88, 84, 68, 51, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0,
+			208, 1, 148, 7, 60, 10, 92, 13, 196, 14, 128, 28, 40, 93, 38, 84, 88, 84, 68, 51, 16, 12, 185, 107, 127, 120, 120, 120, 185, 107,
+			127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 200, 0, 32, 2, 8, 7, 136, 9, 228, 12, 76, 14, 128, 28, 0, 44, 30, 58, 61, 58, 47, 36, 11, 8, 185, 107, 127, 120,
+			120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 255, 0, 5, 0, 1, 0, 31, 1, 64, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 45, 37, 28, 51, 55, 50,
+			39, 28, 9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 22, 1, 160, 2, 204, 6, 255, 9, 124, 13, 33, 15, 156, 28, 70, 58,
+			37, 68, 71, 61, 48, 35, 12, 7, 245, 138, 159, 124, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 242, 0, 97, 3, 196, 5, 122, 10, 204, 13, 109, 15,
+			140, 27, 80, 78, 43, 84, 81, 56, 44, 31, 14, 6, 250, 166, 163, 142, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10,
+			216, 13, 120, 15, 102, 27, 60, 83, 41, 81, 77, 51, 41, 29, 13, 5, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 236, 0, 128, 3,
+			160, 5, 140, 10, 216, 13, 120, 15, 102, 27, 0, 50, 32, 63, 60, 40, 32, 22, 10, 4, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 225, 0,
+			6, 0, 1, 0, 177, 0, 117, 1, 37, 3, 102, 10, 50, 12, 55, 15, 148, 26, 45, 38, 11, 53, 49, 26, 23, 20, 12, 6, 162, 127,
+			149, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 177, 0, 117, 1, 37, 3, 102, 10, 50, 12, 55, 15, 148, 26, 50, 60, 13, 66, 61, 32, 29, 26,
+			16, 8, 162, 127, 149, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 189, 0, 168, 1, 84, 3, 128, 10, 68, 12, 5, 15, 185, 26, 50, 64, 24, 59,
+			72, 37, 34, 31, 17, 8, 163, 130, 147, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 244, 0, 128, 2, 36, 4, 240, 10, 148, 12, 41, 14, 96, 27,
+			40, 94, 30, 75, 97, 50, 46, 46, 15, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 244, 0, 128, 2, 36, 4, 240, 10, 148, 12,
+			41, 14, 96, 27, 40, 84, 29, 71, 92, 47, 44, 44, 14, 7, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 244, 0, 128, 2, 36, 4,
+			240, 10, 148, 12, 41, 14, 96, 27, 0, 45, 23, 53, 64, 36, 33, 33, 11, 5, 167, 142, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 250, 0, 5, 0,
+			1, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 27, 6, 51, 45, 46, 46, 22, 10, 5, 167, 105, 120, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 80, 65, 9, 78, 70, 70, 71, 34, 16, 8,
+			167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 161, 0, 67, 1, 160, 8, 207, 10, 36, 13, 208, 14, 0, 27, 65, 48, 12, 66, 59, 62,
+			59, 31, 13, 7, 166, 105, 121, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 31, 1, 72, 2, 244, 6, 0, 10, 104, 13, 15, 15, 224, 28, 60, 38,
+			30, 52, 55, 49, 38, 27, 10, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 31, 1, 72, 2, 244, 6, 0, 10, 104, 13, 15, 15,
+			224, 28, 0, 33, 28, 48, 51, 46, 35, 25, 9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 240, 0, 5, 0, 1, 0, 168, 0, 240, 1,
+			132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 45, 54, 23, 57, 64, 39, 35, 17, 13, 5, 165, 135, 150, 120, 120, 120, 165, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			168, 0, 240, 1, 132, 3, 216, 9, 164, 11, 141, 14, 32, 27, 80, 105, 33, 80, 89, 54, 49, 24, 18, 7, 165, 135, 150, 120, 120, 120,
+			165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 170, 0, 224, 1, 138, 3, 186, 9, 168, 11, 141, 14, 76, 27, 55, 83, 27, 74, 79, 48, 43, 22, 16, 6, 164, 133,
+			148, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 120, 1, 32, 3, 172, 8, 204, 11, 141, 14, 224, 28, 60, 44, 23, 63, 38, 26, 17, 15,
+			7, 7, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 104, 1, 32, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 19, 57,
+			37, 21, 14, 11, 8, 7, 152, 120, 97, 120, 120, 120, 107, 90, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 16, 1, 96, 2, 8, 7, 225, 9, 104, 13,
+			15, 15, 224, 28, 40, 29, 23, 47, 51, 46, 36, 26, 8, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 16, 1, 96, 2, 8, 7,
+			225, 9, 104, 13, 15, 15, 224, 28, 66, 69, 36, 73, 77, 71, 55, 40, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 6, 1,
+			64, 2, 20, 7, 226, 9, 99, 13, 18, 15, 157, 28, 94, 58, 30, 66, 70, 65, 50, 37, 12, 8, 237, 130, 156, 120, 120, 120, 135, 180,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 168, 0, 112, 1, 128, 7, 40, 10, 50, 13, 48, 15, 64, 26, 40, 37, 19, 53, 51, 51, 47, 29, 11, 8, 181, 111, 129, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 152, 0, 152, 1, 168, 7, 40, 10, 52, 13, 60, 15, 96, 25, 0, 30, 24, 56, 44, 48, 45, 26, 10, 8,
+			160, 105, 120, 120, 120, 120, 130, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 201, 4, 37, 0, 1, 5, 238, 14, 15, 233, 0, 15, 12, 244, 232, 21, 11, 0, 252, 238, 27, 254,
+			250, 251, 0, 30, 251, 232, 4, 19, 244, 249, 15, 238, 27, 244, 247, 11, 249, 2, 8, 250, 2, 7, 249, 8, 243, 14, 242, 2, 29, 243,
+			242, 0, 20, 248, 3, 5, 245, 7, 2, 12, 248, 239, 10, 18, 3, 229, 11, 9, 248, 28, 222, 16, 19, 252, 19, 249, 5, 237, 227, 235,
+			239, 35, 16, 242, 248, 244, 11, 239, 33, 20, 213, 26, 249, 5, 21, 227, 0, 35, 39, 240, 220, 12, 29, 29, 243, 242, 16, 29, 2, 229,
+			13, 0, 19, 8, 250, 245, 19, 4, 247, 220, 239, 234, 211, 242, 20, 8, 0, 6, 12, 238, 224, 14, 41, 195, 231, 247, 188, 236, 15, 234,
+			1, 25, 3, 231, 252, 28, 27, 35, 252, 236, 23, 58, 255, 232, 34, 41, 255, 8, 19, 252, 252, 29, 46, 235, 238, 74, 8, 189, 13, 27,
+			235, 233, 31, 14, 236, 228, 253, 23, 237, 239, 16, 234, 231, 29, 241, 242, 4, 16, 236, 239, 38, 228, 234, 68, 238, 216, 40, 240, 255, 24,
+			247, 11, 239, 255, 3, 21, 18, 227, 243, 44, 224, 253, 15, 5, 10, 216, 247, 51, 8, 200, 4, 36, 250, 2, 218, 249, 45, 2, 213, 11,
+			13, 177, 229, 20, 1, 232, 30, 21, 208, 26, 55, 18, 194, 20, 42, 7, 14, 218, 8, 59, 243, 251, 29, 252, 2, 247, 1, 15, 18, 243,
+			253, 10, 4, 255, 11, 252, 232, 248, 23, 250, 242, 243, 21, 246, 222, 33, 252, 244, 13, 253, 221, 255, 38, 250, 201, 55, 247, 214, 13, 0,
+			250, 2, 217, 218, 251, 51, 210, 204, 33, 55, 237, 217, 34, 13, 11, 232, 0, 80, 228, 255, 8, 19, 58, 210, 25, 40, 226, 51, 246, 237,
+			37, 12, 255, 234, 27, 26, 203, 36, 19, 221, 3, 1, 0, 237, 250, 28, 221, 237, 35, 240, 240, 1, 229, 253, 0, 7, 9, 244, 245, 233,
+			46, 251, 210, 26, 14, 248, 238, 33, 13, 203, 28, 26, 224, 5, 5, 252, 25, 245, 15, 1, 250, 29, 236, 237, 54, 221, 206, 247, 8, 247,
+			187, 21, 51, 222, 25, 35, 233, 12, 25, 219, 254, 45, 3, 245, 21, 26, 5, 253, 0, 5, 237, 35, 236, 226, 22, 43, 206, 238, 52, 19,
+			226, 236, 21, 1, 249, 244, 244, 4, 54, 223, 204, 22, 5, 0, 11, 197, 240, 53, 218, 232, 53, 210, 10, 21, 251, 244, 0, 2, 11, 8,
+			255, 249, 241, 38, 249, 217, 26, 27, 5, 11, 251, 218, 55, 26, 199, 5, 30, 10, 12, 198, 38, 7, 221, 38, 255, 227, 13, 6, 43, 224,
+			215, 62, 0, 235, 42, 212, 243, 43, 253, 253, 224, 16, 28, 244, 12, 4, 223, 251, 51, 226, 239, 19, 225, 30, 32, 213, 238, 6, 32, 231,
+			232, 27, 240, 238, 13, 11, 233, 247, 27, 237, 3, 250, 2, 22, 216, 19, 25, 222, 36, 10, 211, 254, 37, 46, 215, 220, 50, 230, 240, 30,
+			250, 246, 232, 31, 5, 232, 32, 243, 42, 239, 253, 31, 233, 14, 220, 48, 31, 210, 15, 245, 11, 15, 2, 237, 24, 251, 8, 217, 47, 33,
+			207, 7, 31, 17, 190, 11, 20, 242, 218, 34, 10, 179, 23, 52, 222, 236, 14, 25, 16, 246, 243, 10, 239, 183, 244, 12, 195, 241, 62, 188,
+			9, 23, 249, 246, 232, 88, 27, 171, 23, 49, 21, 34, 27, 225, 11, 7, 71, 197, 217, 93, 254, 213, 27, 22, 240, 25, 16, 224, 23, 23,
+			223, 36, 243, 220, 57, 242, 219, 218, 38, 13, 172, 28, 18, 226, 179, 57, 41, 164, 244, 66, 208, 251, 248, 234, 23, 34, 29, 195, 45, 248,
+			250, 12, 0, 20, 234, 33, 47, 208, 3, 63, 207, 34, 18, 185, 0, 31, 252, 216, 254, 19, 36, 10, 217, 220, 22, 34, 251, 217, 245, 70,
+			2, 181, 18, 35, 220, 96, 161, 18, 92, 165, 252, 42, 254, 10, 1, 228, 32, 0, 246, 2, 4, 30, 18, 240, 235, 26, 235, 225, 246, 35,
+			31, 184, 224, 65, 251, 241, 246, 13, 28, 232, 234, 48, 191, 233, 90, 231, 226, 43, 8, 191, 24, 62, 206, 221, 38, 25, 189, 252, 72, 218,
+			222, 69, 5, 208, 46, 245, 209, 21, 53, 250, 180, 54, 0, 198, 76, 7, 194, 26, 41, 235, 1, 240, 31, 240, 237, 51, 199, 237, 112, 217,
+			177, 52, 24, 222, 6, 238, 241, 55, 217, 183, 59, 58, 208, 241, 17, 35, 214, 0, 25, 255, 31, 219, 233, 54, 0, 247, 1, 228, 30, 215,
+			20, 53, 200, 20, 249, 238, 83, 254, 142, 16, 125, 236, 153, 40, 54, 253, 18, 206, 254, 49, 36, 205, 182, 51, 75, 223, 172, 9, 247, 48,
+			245, 240, 251, 8, 20, 226, 1, 24, 232, 3, 29, 15, 4, 252, 252, 12, 0, 16, 242, 66, 239, 184, 4, 38, 15, 225, 245, 21, 1, 241,
+			3, 219, 11, 227, 250, 38, 248, 188, 216, 77, 64, 187, 240, 5, 69, 230, 203, 57, 39, 243, 5, 240, 39, 19, 208, 248, 28, 2, 234, 248,
+			6, 248, 14, 11, 250, 24, 30, 221, 218, 44, 9, 250, 203, 242, 17, 19, 254, 202, 217, 49, 241, 241, 0, 238, 14, 32, 0, 230, 253, 44,
+			0, 223, 86, 233, 246, 39, 1, 246, 6, 4, 12, 234, 3, 38, 237, 16, 223, 223, 50, 23, 229, 211, 250, 27, 254, 246, 233, 219, 46, 250,
+			188, 40, 20, 239, 244, 42, 19, 233, 48, 18, 202, 9, 11, 229, 16, 22, 218, 245, 35, 32, 238, 223, 58, 7, 0, 11, 205, 221, 74, 25,
+			186, 10, 34, 244, 222, 250, 53, 16, 200, 20, 37, 254, 252, 227, 13, 18, 14, 252, 252, 31, 216, 204, 28, 50, 6, 234, 225, 35, 1, 230,
+			251, 22, 11, 2, 237, 0, 42, 241, 212, 38, 32, 227, 13, 9, 209, 10, 27, 238, 210, 248, 20, 231, 249, 13, 33, 0, 236, 34, 21, 9,
+			11, 227, 12, 29, 249, 226, 245, 14, 224, 196, 1, 3, 196, 242, 12, 37, 234, 243, 40, 16, 250, 21, 3, 252, 18, 11, 209, 241, 70, 18,
+			248, 3, 1, 249, 229, 16, 29, 236, 64, 29, 214, 13, 18, 4, 253, 240, 15, 4, 15, 239, 216, 10, 32, 246, 4, 239, 232, 222, 241, 4,
+			10, 1, 242, 238, 255, 12, 227, 242, 16, 248, 244, 10, 248, 244, 7, 0, 28, 35, 12, 237, 5, 32, 20, 17, 226, 0, 26, 4, 231, 15,
+			26, 224, 239, 31, 22, 244, 233, 246, 0, 0, 18, 246, 244, 24, 11, 253, 3, 242, 241, 0, 14, 18, 254, 247, 249, 1, 0, 243, 4, 13,
+			2, 243, 0, 6, 1, 29, 219, 236, 44, 3, 248, 243, 6, 48, 241, 242, 31, 4, 12, 252, 250, 22, 13, 240, 247, 1, 253, 237, 231, 246,
+			6, 1, 241, 252, 1, 6, 252, 247, 16, 11, 0, 17, 7, 7, 253, 0, 10, 232, 254, 20, 3, 250, 237, 245, 0, 0, 14, 254, 247, 252,
+			243, 0, 252, 248, 6, 7, 252, 0, 0, 0, 175, 0, 4, 0, 1, 0, 208, 0, 144, 2, 24, 6, 136, 9, 22, 13, 216, 14, 92, 27,
+			45, 38, 30, 55, 57, 46, 32, 23, 10, 5, 168, 135, 157, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 208, 0, 144, 2, 24, 6, 136, 9, 22, 13,
+			216, 14, 92, 27, 70, 61, 38, 70, 73, 58, 41, 29, 13, 6, 168, 135, 157, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 202, 0, 136, 2, 0, 6,
+			140, 9, 4, 13, 196, 14, 92, 27, 60, 50, 35, 63, 67, 51, 37, 27, 13, 6, 168, 136, 153, 120, 120, 120, 200, 127, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 202, 0,
+			136, 2, 0, 6, 140, 9, 4, 13, 196, 14, 92, 27, 0, 27, 27, 46, 49, 37, 23, 17, 9, 4, 168, 136, 153, 120, 120, 120, 200, 127,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			190, 0, 4, 0, 1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 50, 42, 32, 62, 49, 52, 44, 32, 14, 6,
+			161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 80, 67, 40, 78, 61, 66,
+			55, 40, 17, 8, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15, 163, 25, 60, 56,
+			37, 71, 56, 61, 51, 37, 16, 7, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 152, 1, 224, 6, 236, 9, 72, 13, 180, 15,
+			163, 25, 0, 32, 28, 54, 42, 46, 38, 28, 12, 5, 161, 98, 126, 120, 120, 120, 130, 107, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 185, 0, 6, 0, 1, 0, 186, 0, 176, 2,
+			84, 6, 80, 10, 192, 13, 100, 15, 160, 27, 50, 41, 39, 54, 66, 42, 33, 27, 15, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44,
+			45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			186, 0, 176, 2, 84, 6, 80, 10, 192, 13, 100, 15, 160, 27, 50, 63, 48, 66, 81, 52, 40, 33, 18, 0, 180, 150, 125, 120, 120, 120,
+			200, 120, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 186, 0, 160, 2, 84, 6, 80, 10, 192, 13, 100, 15, 160, 27, 45, 47, 42, 52, 75, 45, 36, 29, 16, 0, 180, 150,
+			125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 188, 0, 34, 2, 57, 5, 54, 10, 250, 12, 206, 14, 197, 27, 45, 25, 37, 37, 42, 30, 25, 21,
+			10, 2, 180, 119, 122, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 192, 0, 135, 1, 222, 3, 20, 10, 6, 12, 21, 14, 244, 27, 40, 19, 40, 29,
+			26, 17, 21, 16, 6, 5, 180, 81, 119, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 192, 0, 135, 1, 222, 3, 20, 10, 6, 12, 21, 14, 244, 27,
+			0, 13, 34, 24, 14, 14, 18, 14, 5, 4, 180, 81, 119, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 245, 0, 6, 0, 1, 0, 228, 0, 40, 2, 128, 3,
+			120, 10, 8, 12, 15, 14, 216, 27, 50, 61, 29, 60, 73, 29, 34, 20, 10, 5, 180, 112, 128, 120, 120, 120, 105, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 228, 0,
+			40, 2, 128, 3, 120, 10, 8, 12, 15, 14, 216, 27, 40, 85, 34, 71, 86, 34, 40, 24, 11, 6, 180, 112, 128, 120, 120, 120, 105, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 228, 0, 40, 2, 128, 3, 120, 10, 8, 12, 15, 14, 216, 27, 45, 75, 32, 67, 81, 32, 38, 23, 11, 6, 180, 112, 128, 120,
+			120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 215, 0, 229, 1, 83, 3, 127, 10, 228, 12, 60, 15, 176, 27, 50, 46, 41, 51, 63, 25, 25, 18, 10, 5,
+			164, 96, 118, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 205, 0, 184, 1, 52, 3, 132, 10, 248, 12, 4, 16, 148, 27, 60, 21, 43, 30, 30, 20,
+			13, 13, 9, 4, 153, 85, 112, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 205, 0, 184, 1, 52, 3, 132, 10, 248, 12, 4, 16, 148, 27, 0, 16,
+			37, 26, 26, 17, 11, 11, 8, 3, 153, 85, 112, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 175, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 139, 0, 3, 0, 1, 0, 80, 1, 168, 2, 124, 6, 216, 9,
+			192, 13, 185, 15, 32, 29, 50, 49, 35, 57, 69, 51, 38, 29, 10, 8, 255, 150, 180, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 88, 1, 168, 2,
+			124, 6, 216, 9, 192, 13, 185, 15, 32, 29, 90, 82, 45, 74, 89, 66, 50, 38, 13, 8, 255, 150, 180, 120, 120, 120, 135, 180, 150, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			88, 1, 168, 2, 124, 6, 216, 9, 192, 13, 185, 15, 32, 29, 0, 47, 34, 56, 67, 50, 38, 28, 9, 9, 255, 150, 180, 120, 120, 120,
+			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 167, 10, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255, 253, 255, 0, 1, 1, 0,
+			255, 253, 255, 1, 0, 254, 0, 7, 6, 254, 2, 3, 1, 0, 0, 0, 253, 253, 244, 245, 8, 21, 10, 251, 249, 4, 0, 0, 4, 4,
+			246, 237, 246, 10, 15, 27, 27, 225, 225, 2, 34, 31, 7, 252, 226, 4, 33, 247, 210, 242, 25, 37, 13, 247, 241, 243, 25, 28, 247, 237,
+			254, 65, 35, 236, 218, 188, 249, 59, 78, 31, 199, 236, 10, 229, 22, 50, 36, 238, 191, 14, 47, 241, 234, 236, 224, 68, 38, 10, 241, 213,
+			43, 0, 6, 33, 244, 26, 235, 221, 6, 233, 38, 252, 235, 235, 5, 57, 253, 254, 18, 15, 5, 221, 203, 212, 219, 255, 22, 52, 57, 23,
+			218, 184, 213, 244, 18, 31, 40, 10, 225, 228, 236, 242, 245, 17, 29, 243, 221, 245, 24, 23, 17, 251, 237, 225, 237, 0, 250, 243, 0, 20,
+			17, 21, 246, 216, 245, 30, 55, 242, 209, 2, 7, 27, 23, 248, 236, 219, 6, 19, 254, 47, 23, 250, 227, 207, 5, 12, 23, 13, 7, 0,
+			251, 249, 249, 250, 254, 0, 255, 251, 248, 248, 254, 5, 8, 12, 12, 255, 254, 13, 0, 243, 245, 247, 0, 0, 10, 14, 2, 250, 247, 251,
+			4, 1, 253, 243, 250, 4, 4, 255, 1, 2, 2, 1, 4, 0, 1, 255, 0, 3, 5, 7, 4, 5, 9, 5, 1, 0, 3, 4, 11, 8,
+			5, 0, 2, 3, 6, 4, 255, 255, 0, 1, 1, 1, 2, 8, 9, 6, 3, 252, 250, 248, 252, 5, 8, 5, 4, 0, 255, 252, 253, 251,
+			1, 7, 4, 0, 252, 254, 253, 1, 3, 2, 254, 0, 255, 252, 252, 255, 254, 1, 3, 253, 253, 0, 3, 255, 253, 2, 4, 4, 6, 2,
+			255, 249, 252, 4, 4, 8, 8, 3, 1, 255, 3, 254, 250, 0, 4, 6, 0, 252, 1, 255, 1, 1, 255, 248, 253, 2, 5, 9, 255, 247,
+			251, 251, 0, 10, 2, 251, 236, 250, 2, 7, 6, 0, 1, 11, 7, 5, 4, 3, 3, 245, 253, 6, 253, 0, 0, 254, 243, 244, 1, 5,
+			4, 251, 248, 247, 236, 249, 5, 6, 250, 252, 6, 12, 254, 248, 242, 245, 21, 37, 248, 234, 3, 248, 247, 20, 30, 246, 224, 0, 34, 13,
+			14, 239, 248, 10, 0, 16, 0, 3, 9, 253, 3, 3, 247, 244, 238, 23, 49, 1, 247, 225, 0, 29, 245, 1, 3, 253, 236, 249, 11, 14,
+			14, 13, 10, 10, 11, 10, 6, 254, 244, 240, 254, 13, 5, 254, 254, 18, 0, 4, 206, 237, 18, 253, 25, 241, 250, 1, 243, 32, 206, 6,
+			52, 241, 211, 219, 46, 28, 221, 18, 238, 221, 47, 39, 8, 197, 0, 239, 208, 39, 69, 254, 208, 241, 15, 5, 245, 0, 238, 41, 15, 190,
+			47, 15, 242, 226, 247, 28, 10, 22, 2, 230, 214, 17, 16, 46, 16, 161, 31, 46, 223, 245, 241, 64, 206, 19, 20, 216, 36, 208, 34, 18,
+			211, 27, 207, 62, 231, 221, 100, 183, 255, 41, 235, 242, 245, 100, 239, 150, 0, 52, 13, 16, 253, 8, 23, 0, 248, 15, 24, 206, 211, 226,
+			64, 40, 42, 23, 151, 194, 28, 50, 19, 214, 3, 19, 224, 241, 244, 45, 255, 230, 255, 24, 24, 245, 246, 213, 241, 46, 1, 232, 236, 30,
+			30, 5, 77, 20, 2, 57, 17, 35, 9, 250, 10, 221, 25, 21, 255, 15, 213, 226, 5, 241, 238, 208, 211, 12, 234, 0, 244, 188, 253, 26,
+			246, 211, 240, 21, 3, 6, 236, 225, 231, 233, 46, 49, 13, 243, 2, 34, 12, 243, 3, 0, 19, 54, 56, 13, 14, 10, 36, 8, 232, 1,
+			0, 252, 2, 4, 255, 228, 250, 246, 250, 244, 226, 235, 242, 236, 237, 213, 231, 10, 23, 242, 225, 242, 26, 5, 251, 250, 9, 8, 13, 8,
+			0, 1, 11, 18, 16, 9, 7, 12, 17, 14, 1, 245, 243, 22, 49, 38, 246, 247, 247, 7, 8, 253, 221, 229, 21, 10, 247, 240, 237, 9,
+			15, 232, 229, 252, 33, 22, 237, 1, 249, 228, 0, 14, 37, 4, 226, 21, 0, 214, 14, 41, 39, 4, 217, 243, 17, 22, 6, 243, 12, 15,
+			2, 18, 4, 219, 242, 254, 17, 31, 248, 246, 248, 252, 241, 253, 19, 2, 15, 252, 240, 253, 252, 247, 244, 5, 23, 12, 21, 217, 210, 0,
+			5, 39, 7, 239, 249, 248, 25, 0, 251, 240, 221, 36, 49, 14, 244, 224, 0, 10, 226, 247, 24, 9, 18, 10, 5, 250, 235, 5, 243, 1,
+			18, 250, 245, 250, 14, 15, 243, 244, 10, 12, 246, 229, 241, 23, 34, 253, 219, 213, 4, 52, 34, 27, 224, 233, 16, 247, 252, 21, 248, 233,
+			7, 3, 3, 237, 225, 12, 23, 26, 17, 251, 4, 243, 224, 235, 240, 22, 23, 29, 11, 212, 215, 28, 18, 12, 0, 248, 8, 237, 247, 250,
+			222, 23, 23, 23, 32, 229, 228, 248, 254, 28, 12, 253, 251, 227, 234, 38, 31, 9, 2, 230, 251, 0, 246, 26, 26, 10, 255, 234, 29, 39,
+			207, 213, 230, 7, 66, 19, 238, 242, 223, 247, 13, 25, 38, 6, 230, 233, 0, 0, 255, 239, 250, 0, 24, 36, 9, 239, 236, 255, 11, 12,
+			5, 2, 3, 5, 5, 5, 3, 4, 5, 2, 255, 248, 240, 242, 250, 5, 252, 39, 5, 213, 9, 20, 254, 237, 230, 50, 60, 240, 249, 3,
+			212, 244, 22, 2, 21, 239, 17, 27, 220, 228, 35, 6, 221, 239, 11, 52, 14, 210, 8, 25, 4, 229, 200, 38, 22, 236, 33, 5, 215, 207,
+			253, 52, 11, 254, 16, 227, 217, 5, 44, 244, 171, 225, 40, 27, 32, 35, 223, 212, 243, 28, 21, 223, 237, 5, 231, 235, 57, 72, 238, 166,
+			222, 248, 23, 45, 52, 14, 170, 252, 54, 249, 220, 198, 30, 43, 215, 18, 38, 19, 241, 245, 10, 211, 195, 55, 73, 250, 226, 0, 37, 226,
+			199, 47, 63, 212, 13, 46, 3, 32, 187, 236, 102, 1, 235, 10, 221, 66, 15, 169, 50, 213, 249, 117, 242, 244, 237, 221, 36, 9, 241, 19,
+			219, 246, 65, 218, 215, 27, 33, 13, 209, 13, 250, 225, 243, 75, 45, 191, 223, 223, 19, 33, 5, 66, 208, 188, 29, 11, 39, 246, 221, 38,
+			228, 2, 35, 229, 21, 243, 212, 79, 252, 229, 17, 240, 24, 201, 220, 82, 27, 215, 231, 7, 21, 243, 239, 18, 246, 235, 4, 251, 24, 243,
+			5, 6, 221, 5, 16, 23, 230, 247, 23, 251, 224, 228, 35, 41, 1, 237, 205, 20, 68, 243, 219, 235, 16, 31, 240, 243, 218, 225, 255, 11,
+			8, 1, 2, 7, 9, 7, 2, 253, 1, 14, 13, 2, 252, 7, 19, 239, 11, 11, 1, 251, 229, 18, 11, 1, 235, 22, 7, 230, 244, 28,
+			252, 24, 243, 252, 241, 12, 7, 34, 230, 239, 22, 239, 34, 249, 239, 246, 244, 29, 16, 252, 4, 0, 201, 16, 37, 247, 244, 6, 19, 251,
+			210, 247, 86, 250, 197, 239, 23, 42, 0, 221, 31, 246, 197, 22, 50, 14, 6, 207, 15, 7, 211, 47, 22, 245, 254, 216, 5, 4, 24, 48,
+			245, 175, 199, 75, 66, 45, 209, 179, 241, 241, 71, 92, 223, 203, 205, 16, 23, 255, 24, 23, 244, 242, 239, 242, 11, 2, 45, 254, 229, 205,
+			235, 84, 45, 222, 203, 220, 66, 2, 22, 25, 212, 243, 240, 11, 28, 236, 12, 36, 252, 231, 236, 228, 47, 31, 232, 232, 239, 8, 25, 10,
+			17, 200, 238, 35, 34, 35, 238, 224, 229, 222, 249, 57, 66, 23, 185, 189, 244, 58, 55, 226, 253, 5, 244, 8, 232, 0, 11, 21, 19, 203,
+			212, 50, 0, 36, 42, 231, 206, 207, 48, 45, 252, 236, 220, 42, 15, 3, 2, 201, 232, 73, 45, 247, 212, 239, 1, 1, 41, 2, 227, 234,
+			10, 30, 14, 241, 252, 17, 0, 236, 25, 236, 247, 29, 12, 250, 250, 233, 21, 5, 252, 251, 21, 17, 32, 210, 237, 229, 243, 13, 0, 252,
+			244, 241, 253, 5, 6, 5, 7, 11, 13, 6, 232, 205, 232, 45, 97, 10, 211, 208, 238, 35, 10, 11, 2, 231, 3, 38, 6, 246, 228, 220,
+			49, 29, 234, 224, 220, 12, 45, 49, 250, 185, 227, 22, 52, 49, 242, 178, 237, 22, 44, 11, 209, 247, 6, 227, 34, 25, 18, 243, 22, 67,
+			7, 202, 13, 60, 255, 229, 188, 253, 72, 10, 236, 231, 183, 255, 78, 30, 244, 193, 251, 14, 46, 49, 227, 207, 198, 34, 62, 5, 232, 245,
+			13, 236, 228, 0, 15, 237, 214, 233, 1, 3, 28, 249, 1, 253, 18, 17, 0, 6, 6, 241, 16, 0, 0, 4, 238, 255, 22, 31, 254, 202,
+			2, 26, 243, 13, 25, 20, 0, 193, 255, 20, 242, 27, 17, 246, 216, 224, 29, 50, 0, 240, 234, 228, 219, 40, 95, 19, 173, 225, 63, 42,
+			7, 0, 0, 241, 251, 19, 28, 240, 223, 238, 46, 39, 219, 201, 245, 13, 31, 11, 219, 195, 255, 51, 28, 214, 198, 7, 41, 37, 20, 254,
+			198, 208, 215, 52, 74, 36, 251, 191, 206, 20, 45, 54, 233, 241, 4, 19, 25, 17, 241, 235, 232, 1, 38, 36, 9, 253, 233, 211, 255, 49,
+			11, 222, 20, 56, 247, 208, 181, 243, 55, 21, 14, 23, 240, 212, 253, 24, 29, 33, 201, 225, 14, 39, 68, 254, 193, 212, 252, 20, 2, 252,
+			249, 248, 254, 1, 0, 255, 3, 10, 15, 12, 255, 243, 255, 11, 13, 242, 237, 202, 20, 88, 19, 223, 203, 213, 23, 26, 15, 41, 247, 204,
+			250, 243, 47, 44, 215, 205, 17, 11, 40, 4, 232, 253, 8, 235, 1, 14, 14, 7, 241, 11, 24, 2, 240, 241, 234, 218, 10, 87, 37, 227,
+			178, 202, 24, 65, 27, 253, 221, 204, 239, 40, 49, 21, 216, 202, 247, 11, 48, 44, 251, 203, 215, 7, 85, 29, 210, 171, 246, 63, 84, 225,
+			184, 250, 34, 254, 245, 248, 45, 19, 223, 227, 227, 50, 74, 13, 251, 185, 194, 38, 248, 15, 59, 253, 234, 196, 231, 127, 5, 228, 216, 209,
+			76, 19, 200, 255, 4, 8, 58, 210, 219, 11, 245, 92, 29, 225, 4, 195, 234, 69, 3, 225, 242, 15, 50, 231, 214, 10, 247, 219, 59, 59,
+			227, 199, 188, 53, 85, 245, 237, 218, 214, 44, 50, 237, 214, 13, 46, 14, 233, 251, 251, 242, 251, 37, 19, 216, 211, 22, 59, 26, 217, 229,
+			18, 22, 15, 252, 252, 243, 222, 243, 29, 41, 235, 214, 32, 32, 42, 226, 200, 8, 236, 39, 39, 239, 0, 8, 223, 237, 21, 43, 31, 236,
+			200, 19, 51, 22, 235, 217, 0, 6, 230, 31, 48, 24, 251, 201, 214, 27, 39, 17, 236, 207, 251, 48, 10, 248, 235, 2, 14, 247, 254, 0,
+			253, 253, 251, 249, 250, 252, 0, 9, 17, 21, 12, 250, 237, 233, 238, 250, 38, 249, 216, 245, 30, 43, 28, 189, 208, 21, 25, 37, 8, 213,
+			200, 220, 39, 66, 252, 242, 219, 248, 21, 13, 9, 12, 226, 193, 254, 61, 37, 230, 199, 234, 17, 50, 6, 254, 249, 221, 11, 36, 248, 245,
+			15, 11, 225, 225, 28, 59, 21, 232, 241, 228, 20, 28, 23, 4, 207, 218, 4, 37, 57, 240, 213, 0, 255, 16, 16, 0, 233, 245, 17, 15,
+			22, 252, 231, 15, 252, 228, 253, 10, 52, 41, 231, 244, 236, 211, 5, 29, 53, 24, 222, 207, 224, 30, 75, 14, 224, 220, 253, 48, 18, 202,
+			222, 46, 63, 0, 198, 209, 25, 47, 11, 227, 233, 6, 39, 16, 234, 246, 251, 240, 2, 252, 11, 46, 242, 211, 251, 37, 33, 243, 218, 251,
+			29, 0, 252, 251, 3, 248, 242, 21, 15, 6, 251, 239, 252, 252, 1, 5, 23, 8, 222, 232, 27, 30, 247, 228, 252, 13, 6, 19, 13, 244,
+			218, 229, 16, 36, 15, 1, 240, 1, 16, 11, 255, 255, 229, 250, 22, 0, 241, 23, 27, 13, 233, 217, 8, 25, 21, 14, 221, 246, 14, 19,
+			255, 245, 229, 240, 22, 37, 25, 242, 209, 244, 3, 17, 26, 240, 220, 234, 2, 48, 24, 235, 218, 224, 16, 39, 247, 246, 2, 17, 1, 244,
+			238, 241, 253, 7, 8, 1, 254, 4, 14, 16, 2, 241, 232, 253, 18, 32, 255, 210, 227, 10, 50, 2, 218, 240, 244, 36, 43, 242, 226, 222,
+			255, 35, 47, 253, 213, 216, 245, 33, 39, 16, 247, 238, 253, 10, 5, 15, 255, 231, 247, 6, 7, 5, 27, 3, 237, 7, 0, 0, 7, 12,
+			2, 237, 242, 11, 17, 24, 252, 217, 253, 19, 28, 6, 232, 239, 254, 247, 5, 18, 19, 3, 230, 6, 24, 233, 247, 28, 4, 241, 243, 11,
+			13, 4, 244, 249, 0, 252, 25, 25, 255, 231, 220, 16, 37, 250, 232, 238, 36, 33, 250, 1, 253, 226, 248, 6, 36, 5, 219, 234, 245, 10,
+			38, 16, 238, 211, 255, 32, 24, 252, 239, 232, 236, 0, 29, 11, 252, 242, 254, 24, 15, 248, 240, 243, 253, 1, 20, 7, 236, 240, 7, 15,
+			12, 6, 247, 4, 251, 255, 16, 254, 250, 255, 254, 0, 252, 16, 37, 13, 231, 236, 2, 21, 23, 6, 241, 245, 255, 18, 12, 246, 244, 10,
+			24, 10, 238, 242, 8, 18, 20, 13, 239, 240, 4, 13, 4, 250, 254, 16, 20, 0, 235, 246, 14, 27, 1, 248, 235, 241, 16, 17, 254, 243,
+			234, 238, 6, 27, 1, 245, 253, 7, 232, 233, 5, 254, 253, 12, 0, 248, 244, 6, 246, 220, 2, 9, 9, 18, 245, 242, 248, 249, 2, 3,
+			252, 247, 255, 8, 12, 10, 6, 2, 1, 6, 9, 6, 2, 247, 237, 230, 16, 251, 228, 31, 16, 245, 244, 235, 254, 252, 21, 62, 252, 208,
+			219, 221, 30, 71, 253, 213, 251, 18, 8, 238, 36, 36, 231, 212, 248, 232, 42, 78, 14, 181, 209, 40, 31, 234, 30, 59, 241, 182, 5, 28,
+			6, 235, 20, 38, 213, 202, 27, 53, 15, 10, 11, 225, 180, 21, 79, 30, 226, 207, 180, 234, 66, 83, 21, 196, 218, 241, 0, 32, 10, 1,
+			235, 187, 2, 67, 39, 231, 189, 235, 40, 51, 22, 205, 209, 13, 31, 10, 244, 220, 242, 32, 45, 18, 232, 218, 247, 21, 31, 23, 228, 210,
+			5, 54, 45, 246, 201, 235, 16, 40, 26, 248, 232, 245, 4, 18, 6, 247, 251, 14, 17, 15, 0, 250, 3, 15, 19, 10, 3, 11, 17, 19,
+			25, 15, 9, 19, 25, 18, 7, 17, 28, 23, 12, 9, 6, 5, 12, 20, 14, 255, 250, 0, 10, 10, 254, 242, 241, 247, 249, 249, 244, 244,
+			244, 247, 246, 233, 228, 242, 245, 237, 234, 227, 227, 241, 245, 236, 226, 240, 2, 255, 242, 233, 223, 230, 243, 254, 255, 250, 245, 231, 239, 23,
+			28, 245, 218, 235, 0, 8, 9, 14, 247, 236, 229, 252, 23, 28, 13, 246, 240, 0, 251, 4, 8, 1, 0, 254, 4, 0, 15, 17, 3, 253,
+			253, 250, 248, 249, 251, 252, 252, 2, 11, 19, 16, 6, 6, 15, 25, 3, 244, 18, 7, 0, 26, 44, 7, 222, 255, 32, 7, 25, 32, 230,
+			218, 20, 51, 16, 231, 222, 253, 55, 21, 219, 253, 32, 3, 239, 2, 242, 231, 12, 14, 8, 18, 247, 212, 246, 43, 12, 223, 251, 36, 2,
+			221, 240, 10, 19, 9, 240, 230, 252, 29, 29, 0, 231, 214, 242, 29, 31, 251, 230, 250, 4, 6, 21, 15, 1, 252, 251, 252, 252, 11, 12,
+			253, 252, 253, 249, 251, 10, 10, 7, 10, 18, 35, 55, 52, 27, 252, 0, 24, 28, 32, 32, 18, 9, 21, 36, 34, 25, 18, 9, 6, 10,
+			8, 244, 235, 0, 85, 0, 3, 0, 5, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18, 174, 21, 55, 2, 12, 14, 4, 4,
+			4, 3, 5, 5, 92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18, 174, 21, 30, 3,
+			14, 16, 5, 5, 5, 4, 6, 6, 92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 9, 0, 112, 0, 144, 1, 8, 7, 152, 8, 216, 14, 14, 18,
+			174, 21, 0, 3, 13, 15, 4, 4, 4, 3, 5, 5, 92, 165, 137, 137, 150, 175, 92, 165, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 240, 0, 5, 0, 1, 0, 184, 0, 72, 2,
+			172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 45, 61, 26, 62, 74, 37, 35, 20, 13, 5, 173, 142, 135, 120, 120, 120, 182, 105, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 75, 118, 36, 86, 103, 51, 49, 28, 18, 7, 173, 142, 135, 120, 120, 120,
+			182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 184, 0, 52, 2, 158, 3, 240, 9, 168, 11, 61, 14, 192, 27, 60, 96, 33, 79, 91, 46, 43, 26, 16, 7, 172, 140,
+			135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 120, 1, 32, 3, 172, 8, 204, 11, 141, 14, 224, 28, 60, 47, 27, 63, 39, 27, 18, 16,
+			8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 104, 1, 32, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 36, 23, 58,
+			38, 22, 15, 12, 9, 8, 152, 120, 97, 120, 120, 120, 107, 90, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 144, 9, 55, 0, 0, 1, 1, 1, 1, 1, 2, 3, 3, 3, 1, 0,
+			2, 4, 3, 1, 1, 0, 0, 0, 1, 0, 255, 254, 255, 0, 1, 1, 0, 255, 254, 255, 255, 254, 254, 253, 251, 252, 253, 254, 0, 1,
+			1, 1, 2, 2, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 3, 3, 3, 2, 3, 3, 3, 1, 0, 0, 255, 255, 0, 1, 0,
+			0, 255, 255, 255, 254, 253, 254, 0, 2, 3, 4, 4, 2, 0, 254, 253, 253, 253, 252, 251, 252, 255, 0, 0, 0, 1, 2, 2, 1, 0,
+			255, 254, 253, 252, 253, 255, 0, 1, 2, 3, 3, 2, 3, 3, 0, 255, 0, 0, 253, 251, 252, 254, 0, 3, 5, 4, 3, 3, 1, 0,
+			0, 1, 0, 253, 253, 255, 0, 0, 255, 254, 255, 0, 0, 0, 254, 254, 255, 255, 0, 0, 255, 0, 1, 1, 1, 4, 6, 1, 253, 254,
+			2, 8, 8, 5, 0, 255, 254, 254, 0, 2, 0, 255, 255, 1, 4, 6, 6, 4, 3, 2, 1, 0, 255, 254, 250, 246, 243, 245, 249, 0,
+			6, 11, 11, 6, 255, 250, 248, 249, 251, 251, 250, 249, 251, 2, 7, 6, 4, 5, 8, 11, 12, 8, 5, 2, 253, 245, 245, 249, 250, 251,
+			1, 10, 15, 17, 15, 5, 252, 251, 248, 241, 243, 251, 252, 251, 0, 2, 0, 253, 253, 252, 255, 4, 5, 0, 1, 4, 1, 250, 245, 245,
+			248, 1, 11, 15, 13, 8, 4, 0, 250, 249, 0, 4, 6, 11, 17, 16, 9, 1, 249, 243, 246, 253, 252, 250, 254, 4, 12, 14, 8, 0,
+			254, 0, 254, 248, 246, 246, 239, 238, 254, 14, 14, 1, 248, 247, 1, 14, 15, 4, 254, 252, 250, 252, 253, 248, 245, 0, 11, 11, 8, 11,
+			9, 3, 4, 9, 5, 250, 241, 241, 251, 10, 19, 10, 254, 253, 2, 7, 13, 11, 249, 232, 239, 0, 8, 10, 10, 5, 0, 252, 250, 250,
+			250, 246, 244, 0, 16, 18, 6, 255, 2, 8, 10, 4, 250, 244, 248, 251, 249, 252, 1, 0, 253, 2, 10, 12, 12, 13, 8, 255, 248, 246,
+			243, 241, 246, 252, 0, 8, 16, 16, 12, 10, 6, 254, 249, 253, 252, 244, 243, 249, 253, 255, 6, 13, 12, 10, 7, 4, 5, 7, 3, 246,
+			236, 245, 2, 6, 8, 8, 2, 255, 254, 253, 251, 253, 0, 253, 251, 255, 4, 8, 10, 4, 251, 253, 6, 6, 254, 250, 252, 0, 2, 0,
+			248, 252, 7, 5, 255, 7, 16, 0, 238, 243, 0, 8, 12, 6, 250, 252, 11, 14, 5, 1, 1, 252, 247, 249, 250, 249, 252, 254, 252, 0,
+			15, 20, 9, 251, 245, 248, 255, 1, 253, 248, 1, 10, 5, 254, 254, 0, 254, 254, 2, 11, 15, 5, 247, 242, 248, 0, 2, 1, 0, 3,
+			4, 4, 6, 2, 245, 242, 0, 10, 1, 253, 0, 252, 246, 0, 14, 11, 255, 247, 244, 244, 254, 3, 253, 248, 252, 255, 2, 12, 13, 0,
+			247, 249, 253, 1, 10, 12, 254, 237, 238, 250, 254, 1, 11, 14, 8, 10, 17, 12, 254, 246, 244, 243, 249, 3, 7, 5, 2, 255, 254, 5,
+			7, 6, 12, 18, 4, 241, 245, 6, 1, 239, 242, 9, 18, 4, 247, 245, 251, 2, 4, 3, 8, 6, 246, 239, 0, 16, 8, 251, 247, 247,
+			255, 19, 33, 16, 243, 235, 246, 0, 5, 3, 253, 251, 1, 4, 2, 8, 13, 1, 244, 252, 10, 6, 253, 2, 11, 5, 251, 253, 8, 13,
+			6, 254, 248, 243, 237, 236, 251, 14, 19, 16, 13, 9, 0, 247, 245, 251, 0, 0, 253, 254, 6, 12, 11, 1, 244, 239, 250, 7, 12, 7,
+			4, 2, 255, 247, 245, 0, 6, 251, 242, 255, 16, 19, 6, 245, 235, 240, 1, 20, 26, 14, 242, 225, 235, 249, 1, 17, 31, 15, 240, 236,
+			0, 11, 3, 249, 248, 2, 15, 17, 6, 251, 243, 234, 236, 4, 32, 29, 5, 255, 3, 254, 247, 0, 9, 2, 252, 1, 0, 233, 219, 236,
+			8, 28, 32, 16, 248, 245, 5, 2, 241, 240, 250, 250, 1, 23, 22, 246, 226, 236, 251, 6, 20, 17, 247, 240, 14, 31, 10, 242, 238, 240,
+			238, 249, 16, 23, 6, 250, 3, 23, 32, 17, 246, 233, 240, 244, 242, 246, 0, 9, 15, 19, 19, 4, 244, 244, 250, 243, 234, 248, 20, 22,
+			1, 254, 2, 249, 237, 243, 255, 254, 251, 2, 10, 7, 5, 4, 253, 247, 251, 251, 244, 252, 6, 254, 246, 11, 31, 17, 248, 239, 247, 8,
+			26, 15, 241, 238, 1, 254, 235, 255, 29, 5, 213, 219, 12, 42, 38, 17, 245, 231, 243, 255, 1, 4, 251, 224, 226, 10, 34, 17, 13, 30,
+			13, 236, 243, 11, 8, 238, 218, 225, 255, 24, 20, 2, 0, 10, 16, 27, 28, 255, 219, 221, 255, 20, 6, 234, 225, 248, 22, 28, 7, 248,
+			254, 4, 251, 243, 6, 30, 19, 240, 227, 248, 6, 1, 247, 243, 251, 13, 32, 33, 8, 238, 237, 253, 249, 232, 251, 26, 16, 247, 0, 17,
+			4, 242, 249, 1, 255, 1, 8, 9, 17, 16, 247, 234, 255, 250, 215, 231, 36, 45, 253, 240, 11, 4, 222, 219, 250, 9, 11, 21, 14, 252,
+			251, 251, 234, 227, 248, 17, 23, 20, 13, 250, 237, 250, 12, 252, 226, 243, 16, 12, 3, 21, 21, 248, 240, 254, 248, 237, 0, 19, 6, 252,
+			8, 8, 250, 255, 2, 238, 230, 251, 10, 5, 7, 25, 30, 14, 246, 228, 225, 238, 5, 19, 10, 246, 233, 242, 14, 41, 35, 251, 211, 215,
+			11, 51, 29, 239, 227, 239, 235, 229, 249, 23, 37, 14, 244, 4, 37, 18, 229, 231, 253, 232, 209, 245, 35, 26, 247, 243, 17, 42, 29, 5,
+			6, 9, 236, 211, 235, 7, 252, 248, 33, 58, 29, 248, 244, 10, 15, 234, 204, 237, 22, 2, 226, 246, 33, 46, 26, 251, 231, 241, 6, 3,
+			244, 252, 2, 242, 237, 252, 0, 255, 15, 26, 12, 3, 3, 246, 237, 255, 12, 254, 249, 13, 11, 236, 236, 14, 24, 3, 2, 27, 31, 252,
+			212, 216, 253, 8, 246, 251, 35, 62, 43, 7, 233, 218, 235, 253, 230, 214, 255, 44, 32, 5, 11, 23, 15, 0, 230, 196, 220, 24, 26, 236,
+			234, 14, 12, 247, 2, 20, 17, 28, 28, 232, 192, 232, 24, 5, 225, 235, 3, 5, 14, 37, 35, 6, 242, 242, 242, 241, 0, 32, 40, 3,
+			229, 245, 5, 240, 226, 0, 30, 22, 3, 3, 14, 13, 247, 214, 211, 3, 50, 30, 247, 11, 42, 0, 198, 213, 3, 13, 254, 248, 0, 20,
+			48, 39, 251, 236, 254, 237, 204, 225, 17, 27, 4, 248, 241, 250, 33, 64, 36, 239, 221, 239, 4, 9, 252, 242, 242, 247, 248, 246, 4, 31,
+			35, 12, 0, 7, 10, 254, 236, 229, 242, 254, 252, 2, 20, 15, 249, 252, 14, 4, 240, 254, 20, 254, 222, 240, 24, 19, 236, 223, 0, 28,
+			17, 255, 13, 37, 15, 215, 195, 231, 18, 25, 12, 5, 6, 8, 8, 6, 255, 246, 247, 0, 254, 238, 239, 14, 31, 6, 245, 5, 11, 252,
+			0, 14, 254, 233, 249, 11, 0, 240, 250, 9, 12, 4, 253, 3, 19, 11, 245, 244, 251, 240, 237, 6, 20, 3, 243, 237, 243, 14, 34, 23,
+			5, 1, 247, 238, 1, 20, 254, 226, 244, 14, 0, 237, 1, 29, 22, 1, 0, 7, 5, 250, 243, 240, 241, 0, 13, 8, 245, 228, 239, 30,
+			63, 18, 210, 224, 27, 41, 2, 230, 240, 3, 252, 227, 237, 16, 25, 9, 255, 254, 252, 2, 17, 2, 216, 213, 12, 54, 39, 2, 237, 239,
+			6, 21, 250, 221, 250, 24, 3, 253, 23, 11, 211, 199, 255, 44, 45, 24, 248, 216, 225, 9, 22, 0, 253, 20, 5, 207, 216, 54, 74, 208,
+			156, 32, 126, 27, 176, 223, 44, 32, 230, 203, 234, 31, 37, 250, 239, 18, 27, 3, 255, 244, 211, 233, 32, 18, 229, 250, 36, 17, 245, 6,
+			23, 248, 212, 224, 7, 23, 7, 251, 1, 5, 0, 11, 30, 5, 225, 247, 33, 7, 211, 231, 34, 25, 209, 198, 36, 79, 248, 193, 8, 62,
+			254, 189, 224, 25, 15, 230, 231, 21, 53, 30, 242, 238, 8, 2, 235, 253, 20, 0, 240, 3, 252, 206, 218, 41, 68, 15, 250, 20, 14, 233,
+			217, 217, 213, 239, 38, 51, 3, 228, 249, 17, 15, 9, 6, 254, 249, 248, 233, 221, 244, 23, 21, 255, 4, 26, 28, 12, 251, 236, 227, 232,
+			253, 9, 2, 249, 246, 2, 30, 37, 12, 251, 4, 4, 233, 207, 212, 252, 35, 30, 0, 3, 38, 27, 238, 235, 13, 9, 225, 219, 3, 29,
+			17, 253, 237, 222, 234, 23, 66, 66, 27, 231, 201, 216, 241, 231, 219, 2, 72, 95, 45, 236, 205, 218, 231, 223, 240, 23, 37, 24, 4, 241,
+			228, 240, 11, 17, 4, 6, 13, 8, 0, 243, 224, 221, 238, 255, 3, 20, 56, 56, 9, 232, 221, 200, 188, 233, 40, 52, 31, 16, 255, 228,
+			212, 224, 9, 59, 62, 251, 195, 224, 22, 14, 228, 234, 15, 19, 0, 254, 16, 35, 25, 239, 208, 229, 16, 23, 253, 246, 8, 8, 250, 253,
+			0, 1, 30, 49, 0, 183, 182, 252, 42, 14, 230, 247, 35, 44, 9, 228, 213, 223, 1, 33, 30, 255, 225, 222, 247, 18, 27, 21, 25, 37,
+			24, 233, 190, 198, 242, 20, 34, 32, 12, 241, 236, 2, 17, 13, 17, 32, 12, 201, 170, 229, 48, 53, 1, 235, 11, 39, 12, 223, 225, 12,
+			23, 241, 219, 246, 11, 255, 242, 4, 32, 34, 14, 8, 16, 247, 198, 201, 8, 46, 6, 229, 22, 67, 10, 184, 204, 36, 71, 35, 247, 226,
+			214, 202, 217, 14, 75, 87, 42, 250, 219, 201, 204, 247, 45, 38, 238, 217, 239, 242, 233, 17, 74, 60, 254, 216, 227, 248, 244, 230, 239, 10,
+			14, 1, 11, 24, 9, 250, 24, 67, 33, 190, 141, 193, 18, 57, 57, 29, 253, 247, 247, 238, 242, 11, 37, 26, 241, 216, 240, 5, 223, 186,
+			245, 93, 106, 9, 204, 243, 26, 8, 234, 220, 218, 238, 21, 39, 18, 7, 27, 24, 243, 222, 240, 16, 22, 248, 218, 233, 18, 26, 253, 247,
+			23, 29, 242, 228, 26, 65, 4, 170, 171, 0, 65, 54, 10, 236, 228, 234, 252, 41, 79, 44, 215, 160, 181, 247, 48, 60, 30, 7, 9, 18,
+			1, 217, 197, 231, 35, 62, 36, 246, 216, 219, 233, 236, 3, 42, 48, 19, 252, 0, 11, 248, 205, 193, 238, 38, 57, 35, 250, 217, 221, 4,
+			39, 30, 251, 245, 14, 12, 230, 223, 253, 251, 215, 231, 56, 102, 45, 216, 200, 238, 2, 5, 12, 6, 243, 232, 240, 1, 24, 28, 12, 12,
+			13, 247, 229, 236, 237, 229, 250, 25, 22, 254, 246, 252, 0, 7, 29, 33, 253, 205, 190, 226, 31, 58, 25, 240, 244, 11, 20, 24, 18, 236,
+			201, 219, 253, 12, 21, 22, 0, 240, 251, 6, 13, 32, 39, 7, 222, 221, 245, 252, 247, 250, 3, 18, 31, 26, 254, 221, 213, 243, 28, 39,
+			10, 231, 214, 228, 3, 28, 23, 6, 11, 15, 0, 253, 7, 238, 198, 225, 45, 66, 19, 240, 229, 220, 229, 5, 28, 29, 28, 22, 1, 230,
+			209, 218, 9, 49, 35, 245, 228, 242, 249, 3, 30, 34, 6, 244, 251, 0, 245, 227, 223, 251, 13, 1, 1, 21, 16, 245, 242, 9, 17, 9,
+			12, 6, 235, 222, 238, 237, 224, 11, 74, 49, 226, 214, 21, 55, 16, 216, 216, 5, 11, 221, 205, 4, 56, 34, 251, 11, 33, 254, 208, 225,
+			14, 23, 254, 222, 210, 240, 35, 49, 20, 6, 10, 248, 221, 240, 24, 21, 234, 209, 228, 10, 26, 7, 5, 51, 71, 11, 194, 179, 219, 14,
+			44, 45, 22, 247, 214, 191, 228, 62, 106, 55, 238, 217, 211, 198, 216, 8, 43, 45, 32, 13, 242, 230, 236, 233, 235, 20, 68, 52, 241, 200,
+			203, 222, 253, 30, 48, 52, 42, 251, 176, 164, 238, 49, 51, 27, 19, 8, 251, 243, 224, 217, 6, 61, 39, 221, 214, 18, 30, 255, 252, 10,
+			251, 222, 239, 47, 80, 30, 204, 168, 190, 226, 9, 74, 112, 58, 213, 169, 207, 242, 239, 255, 46, 71, 28, 221, 195, 213, 12, 59, 47, 2,
+			239, 251, 250, 227, 228, 3, 30, 27, 7, 253, 1, 4, 254, 250, 255, 252, 243, 250, 8, 6, 253, 250, 248, 253, 19, 35, 12, 230, 222, 245,
+			0, 246, 249, 4, 8, 12, 24, 27, 10, 237, 215, 223, 4, 32, 10, 223, 229, 16, 26, 255, 2, 32, 20, 231, 215, 247, 21, 16, 243, 228,
+			245, 15, 19, 0, 246, 10, 30, 24, 11, 249, 207, 168, 192, 17, 80, 78, 22, 225, 216, 233, 0, 27, 48, 33, 239, 201, 210, 240, 255, 251,
+			7, 38, 58, 41, 254, 226, 240, 1, 248, 235, 243, 251, 249, 6, 22, 8, 251, 19, 42, 21, 246, 238, 237, 231, 240, 8, 15, 5, 255, 246,
+			248, 21, 46, 29, 249, 239, 249, 250, 237, 223, 226, 253, 34, 53, 38, 2, 234, 234, 249, 9, 18, 3, 229, 219, 248, 16, 18, 17, 17, 254,
+			231, 247, 25, 23, 239, 211, 222, 248, 7, 15, 22, 23, 9, 238, 229, 5, 39, 25, 239, 227, 244, 250, 241, 249, 20, 34, 20, 251, 242, 1,
+			15, 4, 245, 244, 255, 6, 0, 239, 231, 1, 38, 44, 21, 249, 236, 241, 243, 236, 245, 20, 31, 253, 222, 238, 16, 25, 17, 16, 8, 247,
+			243, 247, 245, 245, 253, 2, 8, 21, 24, 5, 247, 250, 250, 236, 239, 10, 25, 8, 240, 231, 238, 253, 8, 9, 6, 9, 12, 0, 231, 227,
+			252, 13, 9, 8, 9, 0, 245, 247, 252, 254, 2, 9, 2, 249, 255, 16, 23, 17, 4, 241, 223, 230, 7, 28, 15, 252, 247, 255, 6, 7,
+			11, 15, 5, 239, 229, 244, 3, 3, 0, 6, 7, 249, 240, 250, 10, 20, 18, 0, 231, 220, 236, 11, 28, 16, 1, 0, 4, 247, 226, 234,
+			15, 44, 32, 0, 238, 238, 8, 7, 88, 0, 0, 0, 0, 0, 0, 0, 255, 0, 2, 2, 0, 255, 254, 253, 254, 0, 4, 8, 8, 5,
+			1, 0, 254, 254, 0, 1, 2, 1, 255, 254, 254, 0, 1, 2, 2, 1, 0, 0, 0, 255, 0, 0, 2, 3, 1, 0, 0, 0, 0, 0,
+			0, 0, 0, 255, 0, 1, 3, 5, 9, 18, 26, 21, 254, 230, 223, 231, 248, 4, 10, 14, 12, 1, 251, 251, 0, 0, 255, 255, 0, 255,
+			252, 252, 4, 13, 14, 8, 0, 245, 231, 224, 234, 1, 23, 26, 17, 7, 3, 3, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+			2, 2, 0, 255, 255, 0, 0, 0, 1, 2, 2, 1, 255, 254, 254, 0, 2, 3, 1, 255, 254, 254, 0, 2, 6, 8, 7, 3, 0, 253,
+			253, 254, 255, 0, 3, 3, 0, 255, 0, 0, 0, 0, 1, 1, 0, 255, 0, 1, 0, 255, 0, 2, 1, 0, 0, 0, 0, 0, 0, 1,
+			0, 0, 0, 0, 0, 0, 2, 7, 13, 15, 6, 247, 235, 236, 246, 1, 9, 14, 13, 7, 254, 250, 251, 253, 255, 0, 2, 4, 3, 1,
+			0, 0, 255, 252, 252, 254, 0, 0, 255, 255, 0, 1, 3, 5, 6, 6, 3, 0, 253, 253, 254, 255, 255, 0, 0, 0, 1, 5, 9, 6,
+			255, 251, 252, 0, 2, 1, 0, 0, 4, 7, 4, 252, 246, 248, 255, 5, 9, 6, 255, 249, 250, 1, 15, 35, 51, 47, 20, 246, 225, 214,
+			219, 241, 13, 27, 16, 255, 247, 252, 0, 253, 252, 255, 245, 229, 247, 23, 13, 233, 234, 11, 17, 244, 228, 243, 0, 249, 228, 223, 251, 22,
+			24, 23, 23, 1, 232, 240, 11, 13, 253, 251, 0, 1, 6, 17, 18, 4, 251, 7, 15, 252, 242, 7, 22, 7, 244, 249, 7, 11, 6, 3,
+			2, 4, 255, 238, 227, 248, 21, 16, 241, 239, 20, 35, 251, 215, 240, 22, 18, 242, 233, 252, 249, 228, 246, 32, 23, 238, 242, 16, 17, 253,
+			240, 245, 4, 6, 243, 246, 24, 29, 250, 231, 252, 24, 10, 229, 237, 21, 15, 233, 236, 16, 28, 11, 244, 245, 7, 3, 240, 251, 27, 27,
+			243, 225, 253, 19, 7, 0, 19, 22, 238, 203, 235, 40, 41, 241, 220, 246, 13, 22, 5, 233, 239, 13, 18, 249, 236, 255, 16, 10, 249, 241,
+			246, 246, 244, 10, 40, 23, 229, 222, 5, 18, 0, 247, 0, 14, 4, 232, 239, 25, 31, 251, 238, 0, 13, 10, 244, 242, 25, 43, 254, 207,
+			226, 20, 37, 13, 250, 3, 27, 16, 220, 207, 255, 25, 15, 14, 23, 6, 233, 220, 236, 27, 44, 250, 206, 230, 18, 29, 22, 0, 224, 220,
+			247, 26, 35, 10, 241, 224, 219, 244, 36, 46, 12, 250, 246, 234, 238, 255, 253, 248, 25, 53, 1, 179, 199, 42, 68, 254, 220, 1, 20, 248,
+			231, 253, 14, 3, 1, 20, 19, 246, 221, 241, 37, 35, 221, 192, 251, 49, 35, 0, 242, 242, 242, 239, 249, 15, 30, 28, 8, 220, 195, 1,
+			69, 16, 190, 221, 65, 80, 243, 190, 242, 30, 255, 221, 9, 75, 46, 209, 183, 241, 18, 250, 243, 25, 45, 254, 192, 232, 64, 53, 234, 205,
+			241, 30, 20, 231, 232, 25, 40, 238, 188, 232, 53, 58, 7, 227, 211, 212, 4, 61, 44, 247, 237, 242, 223, 240, 39, 47, 253, 214, 225, 3,
+			28, 23, 6, 0, 242, 230, 255, 34, 27, 0, 245, 226, 203, 240, 65, 86, 6, 174, 182, 23, 78, 10, 190, 212, 20, 39, 23, 7, 243, 227,
+			246, 22, 17, 247, 252, 37, 31, 193, 177, 54, 117, 7, 203, 30, 47, 191, 164, 39, 126, 29, 169, 209, 38, 15, 223, 29, 106, 46, 184, 176,
+			5, 29, 232, 235, 55, 67, 228, 176, 0, 67, 10, 203, 245, 33, 249, 222, 10, 22, 231, 229, 27, 34, 236, 208, 239, 16, 8, 237, 235, 1,
+			16, 10, 255, 250, 5, 29, 28, 245, 215, 237, 23, 26, 0, 7, 37, 21, 221, 213, 15, 54, 23, 234, 241, 24, 24, 238, 214, 242, 28, 36,
+			11, 248, 241, 232, 226, 244, 14, 23, 14, 247, 228, 245, 12, 248, 213, 247, 66, 45, 184, 148, 8, 106, 41, 190, 222, 68, 44, 191, 198, 56,
+			86, 250, 194, 242, 32, 8, 229, 0, 50, 47, 242, 197, 236, 49, 45, 246, 231, 0, 6, 1, 5, 6, 9, 11, 239, 205, 244, 59, 31, 197,
+			213, 54, 54, 227, 224, 25, 15, 226, 242, 18, 13, 6, 4, 230, 220, 19, 41, 245, 241, 36, 14, 219, 249, 38, 3, 219, 2, 39, 255, 229,
+			20, 46, 248, 205, 249, 50, 27, 217, 218, 29, 42, 220, 183, 11, 73, 10, 207, 246, 46, 10, 176, 206, 71, 74, 237, 237, 46, 7, 175, 220,
+			81, 74, 220, 197, 12, 29, 244, 246, 22, 22, 247, 225, 241, 18, 35, 20, 234, 215, 245, 21, 25, 18, 4, 234, 245, 26, 4, 226, 9, 48,
+			247, 196, 253, 52, 25, 249, 251, 237, 232, 7, 32, 25, 238, 192, 211, 35, 79, 35, 220, 180, 208, 32, 73, 32, 236, 224, 225, 240, 12, 22,
+			27, 28, 252, 218, 235, 15, 11, 243, 249, 18, 24, 9, 248, 236, 240, 9, 24, 6, 238, 245, 19, 23, 240, 220, 3, 35, 18, 241, 227, 247,
+			21, 25, 2, 244, 222, 197, 248, 83, 78, 238, 184, 221, 8, 11, 10, 34, 40, 236, 190, 241, 45, 19, 240, 23, 48, 228, 177, 255, 70, 23,
+			205, 206, 9, 37, 11, 255, 11, 249, 214, 243, 48, 35, 230, 230, 6, 250, 239, 14, 38, 27, 255, 246, 6, 0, 228, 233, 21, 28, 243, 244,
+			40, 35, 229, 208, 244, 30, 40, 3, 214, 219, 15, 35, 251, 229, 12, 42, 13, 215, 209, 19, 39, 224, 205, 18, 46, 0, 227, 255, 20, 5,
+			252, 253, 245, 241, 248, 11, 36, 29, 244, 218, 239, 19, 24, 6, 254, 244, 232, 244, 12, 17, 5, 0, 250, 242, 6, 31, 4, 212, 224, 15,
+			12, 240, 4, 28, 253, 225, 252, 26, 0, 214, 232, 25, 25, 244, 241, 18, 25, 248, 225, 246, 28, 32, 244, 218, 3, 34, 242, 202, 1, 57,
+			19, 230, 241, 249, 238, 7, 28, 2, 245, 1, 247, 229, 0, 37, 21, 242, 238, 241, 242, 9, 28, 14, 243, 215, 220, 14, 59, 48, 250, 197,
+			189, 245, 53, 48, 2, 237, 233, 228, 246, 22, 33, 27, 1, 227, 229, 1, 14, 1, 250, 3, 12, 10, 4, 250, 241, 252, 16, 14, 246, 235,
+			2, 27, 8, 222, 231, 23, 35, 4, 233, 237, 6, 21, 10, 253, 245, 218, 217, 35, 90, 32, 198, 193, 246, 13, 3, 15, 38, 7, 203, 206,
+			18, 37, 247, 252, 47, 16, 185, 206, 54, 65, 240, 197, 240, 36, 27, 255, 6, 11, 233, 222, 19, 51, 3, 221, 250, 4, 238, 252, 30, 35,
+			9, 243, 253, 7, 239, 218, 252, 35, 8, 231, 10, 49, 9, 212, 223, 14, 45, 25, 227, 203, 243, 32, 12, 224, 244, 38, 35, 244, 211, 249,
+			49, 8, 201, 243, 56, 33, 228, 233, 18, 17, 251, 251, 253, 241, 236, 253, 30, 42, 6, 222, 224, 4, 27, 20, 9, 249, 223, 226, 12, 30,
+			6, 249, 4, 2, 244, 8, 28, 241, 204, 242, 28, 19, 2, 9, 6, 236, 232, 8, 33, 5, 216, 221, 14, 29, 253, 246, 23, 20, 222, 198,
+			0, 68, 47, 214, 206, 30, 32, 210, 232, 81, 74, 228, 202, 243, 249, 248, 24, 39, 17, 238, 207, 222, 27, 62, 28, 233, 219, 227, 239, 19,
+			47, 16, 227, 215, 239, 20, 41, 29, 0, 227, 215, 232, 13, 33, 17, 1, 6, 244, 220, 253, 50, 38, 232, 208, 240, 8, 5, 12, 29, 15,
+			237, 226, 255, 23, 17, 0, 250, 252, 254, 247, 246, 18, 49, 20, 211, 211, 22, 42, 251, 236, 2, 250, 230, 252, 34, 34, 0, 231, 235, 251,
+			3, 14, 25, 5, 219, 230, 31, 37, 243, 228, 15, 37, 254, 219, 248, 33, 14, 228, 241, 23, 7, 227, 246, 27, 5, 227, 255, 36, 0, 212,
+			254, 52, 25, 228, 217, 239, 6, 15, 17, 23, 17, 237, 216, 4, 48, 8, 211, 242, 27, 249, 213, 1, 40, 1, 230, 10, 28, 240, 218, 252,
+			4, 234, 245, 18, 10, 1, 17, 6, 217, 220, 28, 48, 249, 211, 224, 0, 25, 26, 5, 1, 21, 13, 229, 229, 30, 50, 245, 196, 226, 16,
+			23, 22, 34, 25, 245, 217, 221, 248, 26, 45, 18, 225, 212, 248, 20, 17, 18, 23, 1, 224, 218, 246, 16, 20, 9, 252, 243, 247, 5, 9,
+			1, 7, 16, 255, 220, 216, 5, 48, 37, 247, 222, 236, 9, 23, 11, 247, 242, 0, 10, 0, 244, 252, 7, 8, 0, 248, 252, 3, 5, 255,
+			250, 2, 9, 246, 231, 249, 16, 9, 250, 0, 12, 5, 243, 237, 251, 13, 10, 246, 246, 11, 9, 237, 240, 22, 42, 23, 249, 228, 225, 248,
+			25, 31, 8, 251, 252, 250, 254, 16, 28, 10, 238, 231, 247, 5, 14, 10, 254, 249, 253, 248, 246, 6, 20, 1, 235, 243, 3, 253, 237, 244,
+			13, 27, 11, 244, 232, 229, 246, 20, 33, 16, 248, 242, 247, 243, 239, 255, 26, 32, 12, 245, 231, 241, 11, 22, 11, 0, 250, 237, 242, 13,
+			24, 8, 255, 7, 4, 245, 247, 9, 14, 3, 251, 246, 240, 246, 12, 25, 18, 2, 249, 244, 247, 255, 3, 6, 12, 12, 254, 236, 242, 4,
+			11, 9, 12, 8, 249, 236, 240, 0, 15, 16, 6, 2, 4, 255, 242, 243, 6, 18, 12, 2, 254, 252, 251, 255, 2, 2, 0, 0, 2, 4,
+			0, 253, 1, 8, 1, 246, 248, 5, 9, 0, 248, 248, 249, 246, 250, 6, 10, 253, 238, 240, 251, 1, 4, 3, 255, 252, 252, 253, 0, 2,
+			0, 253, 254, 2, 8, 12, 5, 249, 248, 3, 11, 11, 13, 13, 252, 235, 244, 9, 18, 13, 7, 3, 254, 248, 246, 252, 3, 6, 3, 255,
+			254, 253, 252, 253, 2, 6, 2, 250, 244, 242, 244, 251, 0, 253, 248, 254, 5, 3, 255, 0, 0, 249, 243, 245, 253, 6, 10, 6, 0, 254,
+			254, 3, 12, 11, 1, 248, 244, 247, 3, 15, 16, 11, 8, 8, 7, 5, 6, 4, 251, 244, 249, 1, 5, 6, 11, 13, 6, 0, 0, 254,
+			250, 249, 248, 249, 251, 0, 4, 7, 10, 10, 122, 6, 55, 0, 253, 254, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255, 255, 255, 254,
+			255, 0, 2, 1, 0, 254, 253, 0, 6, 7, 5, 2, 255, 250, 255, 9, 11, 2, 253, 0, 3, 2, 255, 0, 4, 3, 3, 1, 255, 0,
+			4, 1, 254, 3, 7, 0, 248, 248, 254, 4, 9, 5, 253, 248, 250, 255, 8, 9, 250, 243, 253, 4, 2, 255, 254, 255, 253, 252, 255, 5,
+			8, 5, 0, 251, 248, 253, 10, 15, 6, 247, 237, 248, 5, 6, 4, 3, 252, 245, 249, 0, 5, 12, 11, 254, 248, 0, 6, 1, 251, 250,
+			255, 9, 14, 252, 236, 251, 9, 13, 12, 248, 235, 1, 25, 11, 251, 253, 251, 250, 5, 10, 6, 8, 255, 231, 233, 7, 28, 26, 2, 234,
+			243, 23, 37, 20, 4, 246, 233, 240, 0, 11, 17, 9, 235, 228, 247, 252, 8, 25, 12, 244, 238, 244, 249, 13, 30, 10, 236, 230, 238, 248,
+			11, 21, 5, 245, 245, 249, 250, 254, 7, 24, 27, 251, 221, 238, 15, 18, 11, 13, 0, 239, 247, 7, 8, 7, 2, 250, 4, 10, 246, 240,
+			9, 28, 16, 250, 236, 235, 252, 20, 26, 4, 239, 241, 254, 4, 10, 12, 253, 232, 241, 13, 17, 0, 252, 245, 238, 13, 31, 0, 236, 238,
+			245, 4, 20, 10, 7, 20, 253, 222, 242, 16, 15, 8, 6, 248, 244, 255, 254, 253, 3, 8, 14, 14, 249, 230, 245, 2, 254, 5, 23, 23,
+			3, 232, 219, 241, 21, 34, 24, 1, 223, 212, 253, 41, 38, 11, 242, 220, 230, 16, 37, 15, 245, 227, 228, 8, 42, 30, 252, 226, 218, 249,
+			40, 30, 252, 4, 3, 222, 230, 27, 28, 253, 1, 1, 223, 224, 14, 34, 23, 7, 239, 219, 228, 3, 39, 47, 252, 192, 213, 19, 48, 42,
+			3, 195, 202, 45, 73, 252, 213, 244, 6, 253, 251, 13, 29, 13, 230, 225, 2, 29, 26, 249, 211, 232, 44, 58, 250, 199, 205, 1, 61, 50,
+			237, 209, 243, 2, 255, 28, 53, 0, 201, 223, 1, 23, 39, 25, 3, 12, 19, 253, 0, 43, 59, 26, 235, 219, 245, 2, 239, 227, 246, 251,
+			247, 9, 7, 229, 220, 247, 10, 21, 21, 246, 239, 24, 8, 184, 204, 51, 53, 249, 218, 188, 194, 27, 90, 29, 214, 235, 16, 5, 0, 12,
+			7, 27, 50, 3, 195, 222, 33, 46, 32, 6, 221, 205, 244, 68, 82, 250, 192, 220, 3, 31, 48, 11, 211, 227, 1, 240, 245, 25, 12, 235,
+			246, 250, 232, 252, 13, 253, 24, 60, 215, 132, 252, 115, 83, 234, 156, 175, 8, 67, 41, 247, 245, 11, 1, 255, 4, 235, 234, 20, 48, 40,
+			5, 222, 216, 245, 12, 41, 73, 27, 214, 209, 212, 236, 60, 99, 28, 197, 184, 226, 40, 62, 0, 223, 248, 254, 234, 242, 16, 7, 235, 255,
+			12, 239, 250, 16, 244, 231, 1, 252, 245, 43, 55, 249, 219, 217, 230, 28, 76, 36, 212, 203, 251, 21, 2, 242, 17, 40, 8, 219, 208, 240,
+			29, 55, 39, 241, 200, 218, 10, 49, 57, 0, 189, 205, 13, 59, 49, 234, 173, 228, 62, 51, 10, 5, 233, 203, 234, 21, 29, 39, 25, 220,
+			199, 252, 27, 6, 255, 250, 242, 10, 16, 237, 244, 45, 43, 251, 235, 224, 230, 18, 41, 23, 250, 228, 229, 11, 42, 27, 2, 222, 191, 223,
+			31, 54, 34, 1, 215, 221, 23, 29, 0, 11, 15, 232, 207, 231, 11, 45, 50, 1, 210, 225, 18, 27, 250, 233, 251, 9, 0, 235, 248, 52,
+			50, 224, 198, 247, 31, 34, 255, 209, 217, 20, 44, 33, 26, 248, 204, 226, 30, 40, 1, 218, 209, 8, 66, 30, 224, 237, 17, 2, 237, 243,
+			8, 26, 252, 209, 232, 35, 57, 24, 238, 215, 220, 252, 23, 12, 5, 25, 0, 209, 229, 34, 51, 33, 255, 199, 196, 252, 27, 33, 25, 247,
+			218, 239, 19, 32, 27, 251, 217, 227, 255, 22, 42, 26, 234, 240, 26, 3, 232, 0, 11, 11, 8, 229, 199, 249, 53, 38, 11, 253, 219, 208,
+			251, 26, 29, 49, 22, 192, 184, 26, 76, 26, 226, 194, 220, 40, 67, 22, 228, 208, 221, 17, 61, 41, 252, 217, 210, 246, 33, 33, 0, 243,
+			9, 13, 223, 202, 0, 67, 61, 247, 205, 221, 244, 24, 56, 23, 233, 244, 4, 235, 248, 20, 245, 239, 11, 255, 239, 11, 11, 228, 237, 4,
+			240, 238, 29, 54, 2, 190, 193, 2, 69, 84, 11, 199, 212, 230, 251, 48, 64, 17, 241, 237, 220, 240, 40, 47, 22, 248, 224, 244, 15, 11,
+			0, 255, 246, 5, 55, 42, 217, 170, 199, 25, 86, 52, 217, 188, 0, 40, 0, 245, 18, 255, 240, 0, 234, 225, 7, 30, 20, 5, 235, 203,
+			228, 37, 48, 2, 229, 223, 241, 35, 53, 21, 250, 233, 229, 255, 32, 32, 5, 231, 218, 1, 39, 24, 22, 24, 237, 208, 241, 19, 13, 16,
+			13, 242, 243, 17, 2, 226, 253, 21, 242, 214, 235, 1, 14, 33, 28, 249, 227, 232, 254, 23, 19, 241, 226, 239, 245, 7, 36, 32, 252, 213,
+			203, 6, 87, 43, 199, 216, 12, 16, 28, 47, 25, 1, 247, 201, 197, 12, 54, 50, 17, 208, 192, 27, 76, 255, 220, 252, 239, 239, 47, 35,
+			198, 212, 25, 34, 34, 14, 202, 186, 5, 32, 248, 242, 3, 20, 38, 19, 224, 227, 21, 28, 1, 222, 206, 5, 57, 20, 240, 3, 255, 227,
+			3, 36, 33, 30, 233, 165, 208, 70, 121, 70, 235, 153, 163, 254, 58, 69, 40, 220, 161, 217, 49, 43, 14, 33, 4, 170, 175, 24, 65, 18,
+			236, 213, 225, 45, 57, 214, 188, 26, 57, 236, 204, 232, 0, 40, 80, 39, 221, 212, 239, 2, 26, 34, 2, 231, 238, 242, 252, 27, 51, 48,
+			3, 201, 198, 251, 35, 36, 12, 227, 221, 16, 35, 6, 3, 6, 225, 210, 3, 31, 21, 5, 233, 222, 255, 45, 64, 26, 204, 155, 196, 21,
+			56, 50, 24, 220, 179, 234, 69, 87, 22, 194, 161, 222, 61, 78, 15, 234, 242, 240, 236, 6, 32, 24, 253, 219, 203, 245, 60, 81, 42, 8,
+			242, 207, 212, 4, 23, 25, 25, 237, 191, 237, 60, 45, 234, 216, 248, 13, 253, 230, 237, 13, 31, 16, 251, 249, 5, 7, 241, 216, 232, 13,
+			12, 5, 20, 7, 240, 5, 28, 253, 230, 245, 243, 245, 9, 30, 41, 12, 228, 225, 248, 30, 57, 14, 191, 191, 14, 56, 47, 33, 0, 217,
+			230, 32, 57, 29, 252, 237, 240, 5, 31, 36, 33, 18, 232, 196, 216, 5, 14, 248, 229, 233, 247, 242, 232, 234, 241, 254, 0, 234, 217, 224,
+			232, 247, 32, 45, 3, 229, 226, 243, 22, 44, 24, 245, 227, 233, 21, 70, 55, 0, 228, 238, 14, 48, 42, 0, 231, 245, 9, 18, 22, 15,
+			0, 250, 252, 241, 228, 249, 23, 23, 2, 234, 222, 239, 11, 22, 3, 238, 238, 251, 254, 245, 246, 3, 10, 0, 246, 2, 23, 13, 239, 235,
+			3, 18, 11, 2, 4, 2, 249, 247, 10, 28, 17, 250, 235, 241, 4, 15, 8, 255, 253, 0, 7, 7, 248, 243, 4, 14, 9, 6, 4, 251,
+			249, 3, 13, 14, 8, 252, 240, 242, 3, 14, 5, 253, 1, 5, 6, 12, 7, 239, 228, 245, 6, 9, 3, 248, 239, 250, 7, 0, 245, 251,
+			0, 250, 247, 248, 247, 253, 11, 19, 5, 235, 231, 0, 22, 20, 5, 241, 230, 255, 28, 24, 10, 1, 253, 255, 252, 249, 0, 10, 16, 16,
+			7, 251, 255, 8, 5, 0, 1, 255, 254, 3, 6, 253, 242, 242, 253, 10, 19, 8, 239, 223, 230, 247, 6, 23, 22, 4, 249, 241, 240, 0,
+			22, 20, 252, 235, 241, 3, 21, 24, 11, 247, 231, 235, 11, 35, 20, 250, 237, 240, 2, 21, 27, 21, 13, 255, 231, 222, 246, 25, 34, 11,
+			236, 222, 236, 11, 33, 19, 239, 217, 232, 13, 36, 20, 240, 224, 243, 17, 27, 15, 3, 249, 243, 251, 2, 0, 1, 9, 14, 10, 253, 238,
+			239, 4, 25, 24, 7, 251, 252, 252, 249, 251, 8, 24, 24, 2, 229, 221, 242, 14, 26, 9, 241, 237, 252, 7, 8, 255, 248, 254, 5, 9,
+			12, 6, 246, 228, 230, 3, 31, 26, 255, 231, 227, 244, 10, 21, 15, 3, 249, 242, 243, 251, 6, 12, 1, 241, 242, 253, 0, 255, 249, 244,
+			253, 5, 6, 0, 247, 246, 255, 1, 252, 254, 7, 9, 3, 253, 249, 250, 0, 6, 6, 3, 2, 1, 255, 2, 11, 15, 11, 9, 6, 0,
+			0, 5, 8, 10, 7, 0, 254, 0, 4, 7, 5, 0, 252, 251, 255, 3, 2, 0, 255, 0, 255, 254, 253, 253, 254, 255, 0, 0, 0, 0,
+			3, 1, 252, 250, 255, 4, 7, 6, 1, 254, 255, 4, 10, 10, 6, 1, 0, 3, 8, 12, 12, 12, 6, 255, 0, 3, 3, 4, 6, 3,
+			253, 248, 252, 2, 7, 8, 2, 251, 253, 0, 251, 244, 251, 6, 6, 0, 248, 246, 252, 1, 254, 246, 242, 248, 8, 13, 254, 244, 243, 246,
+			0, 12, 19, 15, 253, 231, 227, 246, 17, 32, 17, 240, 223, 238, 3, 12, 11, 6, 0, 251, 251, 3, 10, 0, 241, 239, 255, 21, 23, 252,
+			226, 224, 247, 20, 29, 14, 254, 247, 250, 254, 253, 2, 18, 27, 14, 246, 234, 247, 7, 15, 11, 4, 0, 0, 255, 247, 245, 0, 14, 22,
+			21, 0, 229, 231, 8, 34, 25, 246, 218, 229, 7, 32, 22, 246, 223, 230, 2, 29, 31, 3, 227, 223, 0, 0, 60, 0, 3, 0, 5, 0,
+			176, 0, 248, 1, 176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 60, 2, 16, 5, 3, 1, 0, 0, 0, 0, 210, 75, 120, 120, 120, 120,
+			120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 176, 0, 248, 1, 176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 0, 11, 35, 12, 8, 3, 1, 1, 1, 0, 210, 75,
+			120, 120, 120, 120, 120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 248, 1, 176, 4, 192, 8, 48, 12, 210, 15, 96, 27, 0, 11, 35, 12, 8, 3, 1, 1,
+			1, 0, 210, 75, 120, 120, 120, 120, 120, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 52, 3, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 4, 7,
+			13, 21, 16, 235, 225, 4, 24, 254, 238, 0, 14, 0, 243, 2, 13, 254, 247, 11, 17, 255, 251, 7, 9, 5, 2, 4, 0, 251, 0, 5,
+			1, 253, 254, 0, 0, 249, 254, 3, 1, 255, 253, 253, 252, 247, 242, 7, 16, 255, 2, 26, 30, 218, 217, 27, 25, 228, 218, 26, 92, 34,
+			201, 216, 21, 41, 254, 232, 31, 59, 222, 164, 0, 79, 91, 225, 131, 243, 104, 75, 234, 182, 9, 69, 38, 233, 212, 247, 18, 20, 249, 218,
+			254, 25, 9, 234, 237, 3, 13, 4, 239, 249, 9, 12, 243, 3, 11, 10, 17, 13, 15, 254, 234, 229, 249, 25, 19, 230, 226, 16, 13, 245,
+			249, 17, 2, 4, 252, 248, 255, 21, 33, 226, 222, 19, 30, 22, 26, 252, 241, 247, 35, 24, 221, 241, 21, 17, 7, 0, 27, 32, 51, 47,
+			19, 239, 18, 28, 6, 225, 254, 5, 244, 230, 9, 7, 7, 2, 5, 6, 12, 246, 245, 12, 10, 235, 214, 14, 21, 252, 7, 24, 254, 15,
+			45, 16, 208, 227, 7, 0, 219, 217, 22, 51, 4, 248, 30, 14, 2, 19, 15, 242, 219, 249, 33, 238, 230, 16, 17, 245, 245, 34, 24, 224,
+			240, 51, 27, 223, 237, 17, 15, 251, 8, 33, 24, 4, 25, 19, 253, 4, 9, 254, 251, 245, 12, 0, 237, 2, 21, 255, 8, 31, 250, 248,
+			16, 6, 245, 248, 248, 12, 15, 249, 250, 9, 5, 3, 2, 4, 255, 252, 251, 252, 1, 251, 245, 1, 20, 0, 251, 10, 7, 246, 12, 18,
+			245, 245, 9, 0, 245, 255, 253, 238, 240, 5, 7, 251, 239, 0, 255, 254, 248, 252, 9, 245, 238, 14, 6, 240, 0, 16, 9, 1, 5, 14,
+			1, 252, 20, 12, 240, 5, 26, 2, 247, 13, 19, 251, 0, 20, 255, 0, 15, 255, 252, 3, 3, 7, 252, 248, 252, 8, 254, 6, 4, 253,
+			9, 11, 250, 241, 0, 6, 250, 2, 2, 248, 6, 13, 252, 242, 6, 5, 254, 251, 248, 14, 13, 241, 253, 6, 251, 241, 250, 0, 248, 242,
+			3, 254, 242, 0, 251, 244, 237, 240, 249, 254, 240, 237, 242, 237, 239, 245, 238, 236, 1, 224, 244, 230, 234, 242, 241, 238, 240, 249, 227, 252,
+			4, 211, 17, 252, 240, 0, 8, 250, 249, 5, 3, 250, 4, 9, 4, 8, 23, 11, 11, 14, 18, 14, 255, 19, 17, 6, 10, 25, 17, 10,
+			21, 12, 1, 14, 14, 1, 13, 17, 4, 5, 13, 10, 241, 19, 0, 245, 16, 0, 0, 1, 255, 8, 247, 6, 5, 7, 239, 16, 251, 244,
+			255, 0, 254, 247, 0, 5, 249, 2, 4, 246, 2, 5, 1, 252, 1, 253, 9, 1, 3, 253, 16, 4, 14, 9, 2, 11, 14, 4, 5, 18,
+			14, 6, 20, 16, 3, 19, 24, 8, 11, 20, 14, 10, 10, 15, 10, 5, 18, 18, 254, 17, 27, 0, 13, 22, 1, 9, 20, 9, 3, 11,
+			27, 6, 7, 30, 255, 7, 20, 247, 0, 5, 6, 7, 12, 246, 9, 244, 245, 8, 232, 246, 251, 247, 226, 250, 235, 236, 250, 245, 236, 237,
+			6, 234, 231, 250, 235, 243, 5, 250, 229, 14, 234, 237, 3, 217, 237, 12, 221, 252, 25, 233, 244, 29, 184, 13, 1, 201, 33, 226, 0, 14,
+			235, 253, 245, 246, 255, 254, 238, 237, 0, 238, 239, 247, 255, 241, 20, 18, 244, 21, 25, 242, 20, 7, 12, 23, 28, 7, 8, 31, 22, 11,
+			24, 5, 18, 15, 22, 2, 245, 10, 4, 239, 14, 253, 236, 20, 0, 249, 254, 19, 243, 4, 8, 233, 5, 0, 236, 6, 227, 4, 4, 243,
+			244, 0, 233, 248, 253, 228, 232, 236, 250, 230, 237, 252, 235, 238, 254, 237, 227, 0, 244, 228, 5, 234, 237, 247, 246, 230, 249, 238, 250, 254,
+			234, 0, 255, 248, 8, 0, 239, 14, 17, 255, 22, 9, 9, 32, 18, 14, 28, 28, 16, 33, 18, 7, 23, 29, 14, 12, 24, 19, 21, 24,
+			10, 14, 16, 24, 14, 7, 21, 21, 14, 18, 17, 9, 18, 18, 17, 3, 15, 11, 0, 8, 0, 0, 7, 1, 0, 254, 251, 6, 0, 246,
+			8, 247, 254, 5, 247, 2, 247, 2, 2, 250, 4, 1, 240, 244, 253, 254, 240, 10, 250, 235, 249, 239, 244, 220, 252, 227, 233, 244, 246, 221,
+			228, 2, 216, 222, 248, 225, 210, 11, 241, 213, 4, 244, 193, 218, 234, 177, 215, 248, 193, 205, 225, 226, 214, 206, 1, 205, 211, 31, 224, 211,
+			32, 13, 232, 49, 47, 14, 52, 83, 38, 38, 78, 66, 32, 60, 52, 11, 40, 46, 10, 14, 29, 21, 19, 14, 24, 0, 3, 0, 5, 0,
+			116, 0, 232, 0, 240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 25, 3, 12, 8, 4, 4, 4, 4, 0, 0, 200, 212, 187, 255, 255, 175,
+			200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 1, 0, 116, 0, 232, 0, 240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 0, 3, 12, 8, 4, 4, 4, 4, 0, 0, 200, 212,
+			187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 0, 240, 5, 176, 9, 152, 13, 60, 15, 124, 21, 0, 3, 12, 8, 4, 4, 4, 4,
+			0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 219, 11, 36, 0, 7, 17, 19, 225, 216, 254, 31, 13, 216, 207, 17, 33, 10, 243, 229, 3,
+			15, 238, 228, 235, 33, 49, 231, 196, 4, 51, 235, 175, 11, 48, 5, 236, 241, 241, 15, 13, 230, 226, 14, 25, 243, 241, 6, 250, 8, 247,
+			239, 250, 26, 19, 216, 234, 44, 11, 226, 0, 19, 245, 247, 1, 255, 14, 11, 239, 1, 4, 231, 0, 33, 21, 242, 237, 5, 229, 244, 45,
+			15, 223, 0, 13, 226, 250, 35, 5, 2, 10, 211, 255, 49, 252, 251, 6, 28, 30, 252, 213, 220, 8, 20, 14, 11, 254, 0, 5, 2, 251,
+			242, 248, 37, 12, 245, 8, 0, 229, 252, 1, 234, 10, 16, 10, 13, 228, 222, 22, 38, 252, 210, 243, 36, 252, 227, 22, 38, 233, 246, 2,
+			237, 8, 31, 244, 238, 17, 8, 229, 213, 8, 67, 9, 187, 227, 35, 34, 215, 224, 42, 44, 247, 206, 227, 24, 54, 229, 215, 14, 31, 11,
+			243, 222, 0, 45, 9, 221, 236, 8, 25, 24, 241, 226, 10, 31, 229, 230, 18, 28, 11, 241, 213, 242, 39, 5, 239, 10, 251, 236, 7, 22,
+			255, 0, 4, 251, 0, 9, 251, 253, 238, 226, 19, 42, 14, 238, 0, 238, 231, 245, 23, 50, 11, 233, 252, 12, 230, 234, 29, 49, 3, 209,
+			226, 26, 48, 249, 228, 34, 37, 211, 200, 18, 53, 34, 240, 229, 0, 37, 254, 206, 250, 78, 44, 196, 221, 36, 22, 243, 230, 252, 32, 32,
+			244, 239, 249, 14, 252, 234, 13, 39, 238, 231, 6, 250, 253, 252, 232, 11, 51, 0, 202, 219, 35, 30, 210, 230, 42, 9, 238, 251, 255, 22,
+			10, 214, 224, 17, 32, 15, 235, 252, 24, 251, 213, 28, 33, 238, 13, 13, 238, 1, 20, 246, 249, 2, 14, 19, 254, 233, 248, 28, 9, 5,
+			0, 230, 230, 6, 21, 19, 27, 242, 229, 245, 2, 250, 39, 36, 228, 222, 25, 1, 218, 15, 37, 235, 17, 20, 215, 238, 15, 253, 253, 14,
+			37, 5, 220, 220, 21, 21, 1, 234, 253, 37, 3, 191, 10, 57, 240, 236, 21, 230, 244, 33, 235, 228, 18, 24, 250, 242, 223, 3, 44, 5,
+			238, 246, 4, 13, 231, 237, 44, 65, 223, 196, 6, 51, 19, 220, 227, 52, 39, 237, 204, 255, 33, 247, 223, 14, 22, 251, 241, 238, 238, 13,
+			30, 0, 240, 255, 6, 247, 243, 12, 1, 7, 25, 246, 250, 15, 251, 230, 255, 30, 25, 237, 225, 11, 19, 240, 254, 17, 21, 1, 215, 219,
+			71, 59, 224, 212, 6, 19, 8, 244, 7, 25, 2, 227, 251, 254, 8, 31, 14, 182, 241, 44, 12, 1, 252, 240, 1, 18, 248, 216, 5, 41,
+			239, 243, 37, 234, 209, 16, 53, 218, 230, 52, 8, 193, 247, 50, 26, 238, 239, 0, 28, 38, 219, 185, 31, 81, 249, 201, 19, 40, 230, 204,
+			251, 52, 54, 1, 201, 208, 27, 37, 241, 251, 35, 5, 227, 218, 235, 62, 45, 214, 214, 25, 28, 220, 212, 46, 61, 220, 206, 13, 27, 12,
+			237, 0, 15, 27, 253, 231, 15, 17, 250, 233, 3, 2, 16, 15, 0, 234, 7, 11, 235, 7, 14, 248, 236, 254, 30, 22, 235, 236, 251, 13,
+			13, 247, 230, 8, 12, 1, 14, 10, 6, 245, 223, 26, 51, 223, 229, 36, 249, 239, 26, 25, 248, 0, 242, 238, 9, 35, 0, 235, 26, 7,
+			223, 253, 33, 251, 240, 4, 2, 29, 28, 227, 228, 13, 252, 242, 255, 32, 51, 235, 200, 254, 26, 244, 255, 22, 8, 251, 237, 5, 18, 253,
+			244, 21, 13, 4, 249, 240, 0, 7, 19, 9, 234, 247, 8, 244, 223, 19, 55, 24, 203, 212, 17, 12, 244, 22, 24, 0, 254, 231, 233, 14,
+			36, 6, 231, 252, 29, 252, 233, 0, 235, 0, 44, 234, 230, 35, 8, 212, 233, 21, 24, 246, 210, 10, 45, 3, 230, 216, 26, 40, 235, 235,
+			32, 26, 242, 233, 253, 15, 27, 5, 3, 228, 245, 20, 254, 240, 22, 11, 7, 30, 242, 208, 11, 18, 239, 18, 49, 2, 209, 240, 254, 8,
+			15, 28, 5, 248, 231, 235, 6, 25, 6, 245, 237, 230, 18, 18, 228, 2, 25, 244, 221, 1, 22, 28, 252, 218, 252, 5, 252, 23, 232, 224,
+			51, 24, 224, 7, 8, 231, 10, 17, 10, 31, 251, 192, 230, 48, 26, 236, 1, 22, 244, 226, 247, 246, 39, 53, 215, 197, 31, 41, 245, 234,
+			245, 27, 34, 251, 219, 249, 31, 243, 228, 38, 46, 227, 231, 242, 241, 31, 57, 250, 196, 245, 20, 26, 0, 1, 15, 244, 228, 220, 13, 25,
+			15, 9, 238, 243, 6, 246, 234, 10, 15, 5, 249, 250, 253, 0, 5, 243, 236, 14, 48, 240, 222, 5, 4, 16, 12, 238, 0, 30, 239, 228,
+			15, 20, 13, 8, 231, 218, 27, 56, 252, 217, 238, 16, 36, 247, 220, 18, 35, 237, 210, 235, 48, 55, 251, 210, 249, 4, 229, 228, 45, 57,
+			7, 245, 223, 226, 229, 247, 27, 67, 10, 225, 1, 222, 235, 27, 29, 4, 255, 247, 238, 237, 16, 43, 0, 251, 250, 255, 234, 251, 15, 35,
+			18, 245, 231, 248, 15, 255, 248, 242, 35, 29, 252, 215, 234, 12, 19, 250, 220, 5, 20, 244, 244, 17, 19, 20, 192, 207, 51, 21, 223, 9,
+			23, 246, 250, 234, 232, 13, 29, 21, 239, 227, 13, 18, 228, 252, 33, 3, 250, 230, 226, 16, 39, 1, 248, 250, 4, 0, 232, 255, 47, 232,
+			213, 40, 52, 221, 206, 13, 30, 6, 231, 238, 23, 35, 251, 206, 9, 29, 244, 236, 11, 33, 17, 221, 175, 3, 80, 11, 227, 11, 0, 223,
+			252, 2, 252, 28, 34, 247, 203, 232, 42, 52, 232, 210, 38, 56, 227, 209, 29, 37, 211, 247, 72, 11, 205, 241, 2, 1, 26, 38, 13, 248,
+			204, 229, 54, 36, 218, 10, 57, 204, 194, 15, 35, 7, 24, 242, 214, 9, 0, 232, 14, 25, 17, 16, 232, 194, 245, 22, 17, 4, 11, 7,
+			224, 254, 249, 235, 21, 31, 233, 245, 25, 233, 238, 40, 2, 229, 12, 42, 226, 212, 19, 46, 243, 3, 22, 208, 246, 53, 246, 228, 22, 35,
+			244, 208, 23, 41, 239, 228, 0, 15, 0, 14, 255, 229, 8, 12, 249, 232, 11, 41, 234, 187, 14, 69, 240, 225, 10, 3, 221, 243, 33, 24,
+			250, 2, 250, 223, 9, 27, 12, 28, 237, 201, 254, 40, 3, 11, 253, 218, 16, 21, 240, 5, 244, 247, 8, 246, 10, 42, 9, 212, 220, 24,
+			33, 9, 225, 6, 14, 252, 245, 247, 22, 30, 239, 234, 18, 243, 2, 36, 216, 249, 70, 241, 206, 37, 252, 237, 56, 2, 207, 16, 21, 249,
+			0, 233, 15, 13, 208, 2, 77, 14, 210, 228, 253, 4, 1, 23, 20, 5, 219, 205, 2, 43, 24, 255, 217, 252, 15, 4, 11, 247, 227, 0,
+			253, 255, 10, 12, 253, 0, 32, 250, 222, 240, 1, 21, 21, 241, 255, 36, 254, 194, 238, 29, 26, 10, 19, 15, 233, 209, 4, 28, 15, 11,
+			251, 247, 252, 250, 8, 23, 0, 4, 240, 222, 16, 24, 9, 26, 2, 222, 234, 9, 22, 5, 248, 32, 21, 224, 241, 1, 14, 9, 249, 251,
+			24, 12, 222, 250, 16, 29, 15, 207, 239, 69, 8, 199, 7, 254, 247, 42, 243, 181, 40, 84, 209, 178, 18, 68, 16, 223, 223, 35, 42, 227,
+			200, 18, 81, 241, 210, 42, 27, 210, 235, 247, 19, 53, 6, 188, 238, 66, 23, 192, 216, 28, 65, 234, 229, 33, 26, 240, 247, 245, 242, 32,
+			43, 237, 237, 23, 15, 253, 17, 0, 223, 0, 34, 16, 21, 25, 247, 216, 221, 11, 61, 30, 242, 233, 238, 6, 8, 20, 22, 255, 221, 227,
+			16, 26, 11, 16, 244, 216, 245, 3, 3, 34, 38, 240, 191, 247, 21, 254, 21, 48, 227, 170, 0, 71, 246, 228, 14, 238, 219, 21, 20, 253,
+			33, 251, 205, 1, 19, 12, 7, 252, 2, 234, 225, 14, 21, 13, 26, 223, 213, 19, 3, 13, 53, 234, 207, 14, 254, 243, 41, 20, 222, 35,
+			2, 196, 232, 58, 67, 239, 213, 34, 34, 191, 215, 45, 33, 23, 36, 223, 199, 36, 13, 212, 4, 59, 14, 196, 231, 12, 207, 9, 85, 241,
+			187, 0, 247, 2, 45, 242, 226, 43, 0, 189, 251, 22, 5, 13, 0, 250, 15, 237, 214, 7, 14, 31, 19, 195, 225, 63, 13, 191, 255, 18,
+			11, 252, 209, 5, 63, 242, 190, 49, 27, 231, 238, 208, 10, 75, 0, 205, 9, 29, 32, 219, 174, 48, 81, 238, 203, 29, 42, 249, 209, 225,
+			13, 31, 10, 11, 17, 5, 217, 209, 6, 29, 31, 0, 242, 10, 253, 234, 243, 23, 44, 245, 220, 14, 9, 239, 34, 27, 229, 238, 4, 17,
+			11, 253, 3, 250, 219, 252, 55, 32, 211, 242, 59, 13, 201, 224, 46, 44, 222, 242, 34, 28, 213, 223, 54, 255, 195, 19, 63, 0, 224, 0,
+			20, 244, 18, 8, 239, 6, 3, 231, 12, 41, 16, 212, 254, 44, 239, 241, 250, 233, 38, 51, 224, 209, 25, 45, 233, 214, 234, 19, 49, 236,
+			215, 37, 16, 219, 225, 2, 48, 43, 252, 221, 217, 0, 17, 250, 250, 43, 26, 205, 195, 26, 46, 245, 229, 73, 66, 159, 165, 68, 48, 233,
+			251, 231, 36, 77, 191, 151, 53, 92, 238, 221, 32, 60, 252, 203, 218, 6, 76, 94, 3, 186, 9, 27, 228, 240, 52, 62, 20, 181, 215, 72,
+			25, 240, 13, 21, 12, 229, 203, 13, 90, 33, 229, 210, 246, 19, 246, 232, 38, 81, 5, 205, 196, 242, 35, 2, 6, 33, 248, 212, 216, 245,
+			48, 69, 6, 194, 220, 33, 34, 26, 254, 239, 6, 43, 241, 192, 37, 72, 237, 225, 41, 12, 226, 244, 236, 3, 34, 1, 222, 15, 62, 229,
+			166, 5, 86, 250, 177, 18, 52, 234, 225, 245, 13, 30, 227, 234, 40, 11, 192, 231, 18, 33, 251, 225, 44, 31, 175, 205, 28, 232, 0, 92,
+			17, 190, 207, 25, 6, 225, 9, 29, 249, 231, 215, 252, 54, 0, 196, 236, 12, 245, 244, 24, 18, 233, 205, 237, 43, 26, 229, 211, 240, 31,
+			3, 252, 5, 239, 249, 240, 208, 54, 61, 196, 226, 36, 245, 204, 14, 5, 0, 14, 233, 252, 8, 251, 249, 252, 216, 19, 51, 14, 229, 197,
+			234, 56, 42, 250, 251, 5, 216, 236, 28, 255, 255, 42, 27, 200, 195, 49, 61, 211, 220, 35, 13, 231, 249, 50, 35, 204, 217, 29, 28, 248,
+			234, 13, 28, 251, 213, 9, 68, 236, 208, 13, 9, 10, 22, 250, 226, 236, 58, 23, 211, 250, 34, 195, 213, 86, 52, 219, 205, 0, 24, 26,
+			248, 233, 249, 8, 22, 237, 6, 37, 250, 231, 223, 2, 77, 30, 181, 210, 43, 19, 254, 253, 6, 27, 246, 167, 2, 95, 12, 177, 5, 50,
+			0, 225, 208, 238, 35, 45, 9, 208, 220, 47, 251, 178, 12, 69, 23, 240, 196, 251, 78, 254, 163, 249, 73, 11, 202, 228, 38, 38, 233, 241,
+			4, 11, 8, 242, 220, 19, 46, 250, 238, 250, 9, 250, 222, 240, 50, 61, 242, 199, 253, 33, 243, 233, 13, 60, 15, 217, 211, 25, 72, 7,
+			189, 3, 63, 251, 210, 17, 29, 241, 253, 36, 249, 234, 21, 248, 202, 35, 114, 34, 177, 208, 6, 15, 25, 41, 18, 251, 5, 221, 211, 31,
+			21, 231, 32, 42, 214, 212, 3, 22, 61, 238, 205, 47, 16, 157, 234, 89, 47, 243, 246, 240, 241, 3, 246, 235, 49, 58, 230, 184, 251, 13,
+			238, 26, 16, 192, 5, 75, 251, 165, 3, 61, 20, 234, 2, 13, 3, 230, 3, 40, 5, 221, 24, 24, 191, 245, 61, 30, 246, 207, 2, 12,
+			10, 13, 4, 243, 254, 239, 219, 43, 21, 238, 38, 248, 183, 29, 56, 204, 14, 37, 215, 242, 40, 234, 215, 47, 35, 218, 224, 1, 251, 253,
+			31, 15, 237, 28, 2, 178, 36, 60, 201, 252, 59, 244, 11, 16, 220, 18, 47, 236, 6, 6, 247, 44, 15, 161, 228, 106, 40, 183, 219, 53,
+			63, 187, 199, 64, 47, 238, 233, 204, 43, 117, 226, 164, 27, 75, 234, 197, 222, 48, 72, 233, 223, 22, 252, 194, 214, 50, 75, 215, 173, 49,
+			71, 198, 192, 18, 60, 246, 203, 236, 38, 50, 16, 225, 186, 3, 97, 1, 150, 228, 84, 57, 192, 191, 30, 35, 186, 217, 57, 37, 230, 240,
+			208, 212, 22, 20, 255, 23, 8, 245, 191, 179, 33, 84, 250, 242, 254, 207, 224, 229, 248, 77, 52, 193, 203, 23, 3, 0, 235, 251, 71, 242,
+			160, 11, 44, 253, 230, 221, 78, 69, 147, 150, 97, 91, 202, 195, 234, 1, 20, 20, 36, 28, 244, 199, 204, 0, 54, 24, 31, 52, 229, 169,
+			251, 27, 23, 54, 39, 195, 218, 46, 7, 249, 51, 17, 222, 8, 61, 235, 227, 49, 10, 5, 65, 255, 180, 30, 83, 221, 226, 97, 31, 172,
+			0, 32, 32, 46, 234, 225, 20, 22, 245, 237, 31, 40, 229, 199, 39, 50, 218, 243, 50, 2, 198, 252, 38, 36, 227, 206, 29, 99, 8, 175,
+			1, 71, 244, 203, 62, 47, 218, 233, 1, 233, 10, 69, 5, 209, 209, 11, 23, 6, 222, 13, 72, 211, 136, 32, 115, 202, 161, 79, 87, 207,
+			157, 14, 77, 7, 211, 249, 4, 30, 249, 179, 251, 76, 249, 190, 24, 16, 252, 27, 244, 229, 29, 23, 238, 255, 38, 18, 206, 213, 66, 95,
+			236, 164, 253, 82, 0, 137, 9, 119, 5, 173, 255, 16, 5, 17, 200, 201, 124, 106, 142, 160, 70, 25, 206, 253, 51, 56, 247, 169, 210, 47,
+			53, 240, 228, 6, 15, 215, 221, 4, 24, 39, 243, 190, 10, 66, 247, 223, 228, 22, 52, 242, 194, 5, 69, 9, 220, 210, 254, 57, 27, 210,
+			221, 33, 19, 219, 221, 60, 41, 225, 7, 56, 248, 236, 209, 234, 70, 64, 234, 13, 22, 231, 230, 11, 5, 40, 40, 217, 223, 0, 236, 15,
+			54, 254, 225, 251, 11, 208, 212, 72, 65, 211, 213, 43, 234, 211, 24, 24, 0, 33, 251, 189, 245, 23, 18, 19, 223, 206, 44, 60, 206, 181,
+			23, 88, 230, 156, 47, 71, 193, 200, 20, 29, 22, 234, 245, 10, 245, 244, 30, 226, 233, 48, 13, 224, 219, 254, 35, 4, 251, 32, 37, 203,
+			186, 255, 29, 21, 16, 36, 4, 209, 179, 30, 95, 6, 216, 11, 17, 218, 219, 21, 45, 253, 6, 37, 235, 188, 0, 36, 251, 238, 25, 7,
+			224, 251, 20, 214, 213, 58, 43, 208, 211, 6, 5, 250, 246, 12, 22, 0, 210, 217, 27, 34, 249, 9, 27, 233, 248, 250, 224, 6, 79, 17,
+			228, 9, 235, 215, 25, 42, 249, 252, 31, 234, 153, 243, 105, 42, 229, 5, 237, 232, 253, 249, 27, 79, 6, 183, 243, 63, 7, 239, 251, 16,
+			237, 236, 30, 1, 198, 10, 34, 213, 250, 44, 223, 230, 18, 229, 255, 42, 230, 242, 33, 4, 206, 245, 56, 65, 243, 178, 216, 44, 61, 255,
+			185, 29, 76, 186, 137, 44, 90, 0, 192, 245, 17, 244, 253, 33, 248, 231, 39, 10, 195, 248, 61, 35, 244, 218, 1, 254, 223, 231, 61, 72,
+			226, 157, 228, 68, 52, 199, 216, 62, 62, 233, 209, 246, 34, 250, 249, 39, 17, 190, 232, 11, 22, 29, 23, 5, 226, 0, 23, 254, 244, 54,
+			50, 249, 222, 241, 14, 16, 244, 248, 27, 29, 244, 244, 31, 10, 211, 228, 44, 34, 212, 240, 25, 7, 2, 255, 250, 14, 8, 228, 226, 9,
+			33, 30, 0, 191, 220, 25, 18, 241, 248, 44, 12, 201, 199, 28, 36, 7, 251, 219, 220, 22, 252, 216, 39, 67, 235, 217, 252, 11, 6, 15,
+			234, 239, 59, 42, 178, 210, 68, 24, 200, 6, 56, 18, 247, 223, 196, 40, 97, 250, 213, 25, 29, 213, 218, 32, 70, 21, 210, 220, 3, 1,
+			250, 243, 26, 52, 228, 212, 32, 43, 223, 235, 41, 21, 254, 249, 232, 232, 36, 34, 220, 239, 26, 7, 218, 236, 33, 29, 232, 229, 253, 13,
+			14, 239, 235, 27, 41, 250, 199, 243, 44, 19, 214, 233, 54, 253, 203, 240, 20, 11, 250, 230, 10, 44, 230, 209, 13, 35, 249, 230, 249, 16,
+			9, 245, 251, 11, 17, 7, 211, 225, 31, 29, 7, 253, 230, 233, 15, 16, 1, 8, 241, 238, 8, 250, 251, 32, 19, 226, 226, 254, 19, 35,
+			0, 232, 232, 248, 22, 254, 237, 4, 14, 253, 244, 248, 10, 22, 238, 235, 22, 36, 0, 253, 243, 242, 27, 32, 3, 8, 7, 250, 239, 13,
+			42, 2, 215, 245, 11, 26, 28, 251, 226, 12, 25, 233, 255, 42, 0, 223, 246, 5, 9, 11, 230, 236, 10, 4, 252, 249, 251, 7, 248, 227,
+			249, 44, 41, 220, 211, 9, 25, 254, 7, 13, 248, 255, 0, 235, 10, 23, 235, 232, 20, 25, 254, 235, 241, 4, 8, 252, 3, 27, 3, 237,
+			251, 16, 11, 7, 15, 0, 239, 249, 2, 254, 15, 32, 1, 223, 242, 14, 11, 254, 240, 247, 22, 4, 208, 0, 49, 250, 234, 34, 16, 227,
+			252, 12, 4, 16, 12, 9, 6, 241, 244, 251, 1, 23, 30, 253, 236, 245, 0, 6, 0, 11, 44, 10, 210, 234, 24, 28, 5, 238, 0, 24,
+			244, 218, 4, 32, 12, 246, 244, 254, 8, 253, 237, 251, 27, 12, 241, 235, 254, 252, 253, 243, 250, 13, 4, 230, 221, 254, 16, 3, 246, 251,
+			251, 239, 236, 255, 16, 13, 234, 211, 254, 27, 246, 230, 247, 2, 246, 240, 246, 2, 244, 0, 121, 8, 30, 0, 248, 12, 23, 0, 234, 214,
+			221, 242, 8, 252, 4, 28, 34, 36, 47, 28, 249, 224, 232, 242, 227, 215, 244, 15, 6, 13, 43, 54, 41, 33, 40, 28, 245, 226, 226, 222,
+			197, 220, 255, 254, 29, 57, 36, 31, 48, 58, 3, 235, 23, 251, 212, 0, 30, 244, 252, 34, 38, 42, 42, 13, 8, 14, 247, 233, 230, 219,
+			200, 242, 23, 18, 10, 48, 61, 46, 39, 236, 225, 252, 225, 204, 217, 233, 237, 27, 53, 33, 48, 44, 255, 20, 5, 220, 223, 230, 200, 214,
+			24, 1, 245, 53, 49, 15, 38, 19, 223, 224, 249, 219, 203, 254, 14, 11, 29, 32, 29, 27, 34, 29, 254, 6, 2, 212, 209, 230, 218, 201,
+			217, 19, 24, 12, 37, 49, 27, 18, 31, 244, 212, 235, 244, 224, 223, 254, 11, 9, 26, 30, 29, 39, 28, 15, 1, 225, 219, 244, 227, 234,
+			9, 243, 231, 17, 28, 245, 253, 30, 255, 236, 16, 23, 247, 254, 3, 0, 240, 243, 248, 0, 2, 242, 12, 19, 253, 253, 24, 32, 2, 4,
+			255, 237, 241, 236, 212, 241, 19, 11, 17, 56, 50, 16, 37, 17, 184, 192, 223, 179, 180, 2, 27, 33, 73, 93, 66, 41, 41, 13, 224, 217,
+			214, 187, 189, 211, 243, 14, 36, 60, 87, 53, 33, 51, 6, 219, 227, 199, 167, 195, 220, 211, 240, 17, 33, 63, 89, 45, 25, 43, 244, 180,
+			222, 206, 188, 240, 242, 242, 34, 46, 22, 34, 24, 250, 247, 241, 211, 211, 228, 234, 249, 13, 32, 18, 37, 62, 32, 23, 34, 6, 227, 242,
+			223, 206, 235, 226, 225, 3, 13, 1, 25, 44, 26, 8, 10, 254, 224, 209, 207, 201, 201, 214, 244, 38, 51, 27, 54, 71, 23, 3, 15, 219,
+			192, 223, 215, 220, 238, 235, 11, 46, 32, 38, 41, 6, 0, 245, 221, 208, 219, 232, 228, 246, 8, 16, 28, 46, 43, 32, 4, 223, 218, 236,
+			205, 205, 234, 249, 35, 29, 40, 85, 58, 7, 6, 3, 207, 181, 205, 206, 202, 6, 17, 32, 76, 82, 30, 29, 54, 238, 188, 226, 208, 179,
+			220, 233, 246, 12, 31, 39, 67, 69, 42, 59, 26, 210, 177, 182, 194, 184, 223, 9, 16, 52, 92, 78, 63, 43, 0, 217, 213, 213, 188, 203,
+			215, 247, 16, 29, 47, 56, 37, 39, 24, 5, 6, 240, 221, 208, 238, 240, 226, 243, 28, 48, 34, 24, 43, 26, 16, 0, 223, 200, 210, 224,
+			225, 247, 244, 240, 34, 39, 8, 42, 59, 6, 243, 6, 247, 211, 217, 203, 215, 1, 6, 21, 51, 54, 37, 20, 21, 30, 0, 223, 229, 207,
+			199, 228, 238, 243, 39, 47, 44, 63, 58, 33, 17, 248, 221, 209, 201, 215, 214, 194, 239, 23, 18, 33, 61, 48, 30, 10, 0, 2, 234, 225,
+			230, 239, 0, 14, 37, 32, 36, 46, 59, 31, 247, 234, 236, 203, 213, 236, 206, 214, 3, 19, 11, 47, 64, 19, 31, 50, 255, 231, 250, 224,
+			182, 194, 219, 218, 243, 49, 35, 33, 86, 64, 26, 51, 14, 193, 226, 233, 177, 196, 250, 251, 237, 33, 54, 27, 27, 46, 9, 239, 2, 252,
+			219, 219, 206, 212, 4, 16, 16, 29, 48, 64, 19, 10, 27, 224, 202, 230, 219, 224, 1, 22, 37, 37, 22, 17, 46, 27, 210, 191, 228, 202,
+			168, 237, 251, 248, 42, 47, 32, 49, 53, 254, 244, 3, 233, 209, 208, 218, 222, 240, 0, 2, 16, 54, 29, 24, 38, 12, 240, 252, 4, 220,
+			198, 220, 244, 252, 21, 29, 25, 31, 62, 49, 251, 13, 14, 217, 219, 220, 217, 232, 243, 19, 49, 67, 45, 32, 44, 15, 239, 215, 207, 208,
+			221, 231, 233, 244, 249, 6, 26, 40, 62, 54, 15, 16, 4, 220, 205, 209, 211, 229, 217, 236, 17, 41, 59, 62, 41, 43, 54, 17, 232, 233,
+			216, 178, 178, 216, 232, 245, 27, 41, 36, 63, 68, 40, 1, 232, 241, 200, 159, 182, 226, 231, 247, 44, 63, 64, 70, 67, 4, 3, 254, 176,
+			166, 235, 224, 180, 1, 26, 28, 58, 65, 38, 45, 41, 248, 218, 224, 222, 192, 218, 233, 223, 253, 61, 39, 25, 54, 67, 43, 0, 212, 213,
+			213, 197, 210, 249, 248, 2, 56, 51, 34, 41, 27, 7, 22, 250, 209, 185, 203, 246, 210, 213, 42, 46, 11, 78, 74, 35, 59, 28, 231, 240,
+			217, 161, 170, 204, 232, 242, 42, 45, 25, 62, 69, 24, 8, 10, 239, 223, 227, 171, 197, 247, 217, 245, 27, 26, 48, 57, 28, 4, 252, 243,
+			233, 228, 227, 8, 31, 41, 24, 29, 37, 17, 240, 230, 239, 226, 228, 249, 3, 6, 7, 23, 15, 5, 42, 28, 222, 248, 5, 235, 239, 223,
+			216, 41, 20, 217, 22, 58, 3, 5, 28, 10, 231, 218, 235, 233, 225, 252, 230, 243, 55, 16, 24, 76, 39, 0, 20, 12, 217, 224, 237, 225,
+			192, 231, 18, 252, 248, 39, 32, 19, 48, 19, 235, 247, 243, 238, 221, 197, 221, 251, 237, 217, 26, 63, 30, 5, 42, 49, 253, 244, 3, 237,
+			224, 251, 225, 211, 240, 3, 251, 22, 9, 239, 23, 63, 47, 7, 40, 23, 194, 225, 30, 195, 158, 7, 12, 243, 42, 66, 32, 8, 20, 19,
+			243, 226, 2, 8, 254, 12, 244, 238, 14, 13, 235, 252, 242, 237, 8, 254, 5, 11, 15, 4, 5, 0, 252, 241, 247, 4, 8, 243, 0, 16,
+			253, 2, 24, 250, 243, 22, 17, 223, 225, 13, 237, 205, 253, 40, 3, 3, 61, 39, 27, 53, 248, 196, 227, 205, 175, 204, 230, 216, 20, 52,
+			33, 52, 65, 32, 243, 6, 25, 217, 215, 11, 243, 216, 234, 9, 32, 25, 22, 41, 43, 20, 26, 16, 239, 225, 228, 229, 236, 229, 229, 240,
+			21, 28, 22, 39, 45, 24, 41, 32, 237, 241, 236, 207, 215, 232, 229, 234, 10, 45, 43, 45, 58, 21, 19, 31, 229, 200, 223, 226, 204, 220,
+			248, 255, 249, 20, 47, 26, 0, 17, 42, 21, 248, 246, 12, 0, 219, 229, 228, 216, 225, 13, 25, 6, 24, 31, 10, 0, 10, 0, 207, 218,
+			20, 240, 220, 26, 255, 0, 50, 8, 230, 20, 8, 252, 1, 245, 18, 25, 11, 13, 9, 236, 218, 237, 249, 207, 231, 32, 41, 0, 21, 54,
+			41, 23, 14, 8, 250, 227, 226, 206, 216, 245, 244, 20, 49, 60, 63, 61, 29, 1, 13, 211, 149, 215, 209, 148, 216, 51, 6, 2, 67, 44,
+			23, 55, 10, 201, 6, 247, 183, 223, 22, 227, 247, 58, 18, 45, 71, 13, 252, 18, 2, 239, 244, 227, 188, 220, 0, 221, 212, 35, 30, 254,
+			44, 60, 248, 229, 12, 231, 200, 226, 251, 196, 195, 10, 29, 11, 23, 43, 31, 13, 14, 8, 241, 244, 238, 238, 9, 34, 27, 19, 6, 19,
+			248, 234, 10, 1, 221, 230, 13, 237, 241, 255, 22, 6, 0, 22, 12, 29, 0, 234, 24, 9, 198, 215, 6, 249, 230, 22, 39, 0, 37, 62,
+			211, 180, 247, 210, 228, 52, 253, 228, 74, 52, 2, 74, 34, 212, 26, 31, 214, 225, 8, 231, 211, 9, 233, 211, 65, 37, 218, 30, 53, 232,
+			242, 30, 205, 180, 252, 240, 227, 6, 1, 252, 41, 51, 6, 238, 5, 11, 238, 249, 0, 239, 255, 36, 28, 8, 52, 40, 234, 235, 239, 208,
+			212, 244, 206, 223, 46, 22, 245, 48, 70, 238, 241, 20, 227, 190, 252, 248, 218, 253, 23, 22, 29, 11, 6, 35, 241, 208, 49, 51, 197, 242,
+			45, 0, 248, 17, 250, 245, 20, 249, 225, 17, 28, 211, 221, 32, 248, 233, 54, 45, 39, 38, 9, 3, 10, 230, 196, 199, 193, 203, 224, 17,
+			24, 15, 77, 78, 22, 45, 66, 233, 214, 17, 219, 154, 201, 255, 235, 9, 9, 251, 36, 73, 8, 0, 17, 214, 201, 215, 209, 215, 15, 63,
+			5, 18, 90, 31, 204, 9, 12, 210, 3, 20, 203, 243, 41, 249, 15, 67, 255, 248, 67, 40, 0, 24, 236, 203, 204, 221, 202, 226, 0, 13,
+			53, 55, 31, 35, 73, 3, 195, 247, 232, 166, 212, 1, 229, 232, 24, 0, 243, 71, 50, 5, 37, 14, 218, 255, 12, 202, 220, 243, 212, 221,
+			20, 21, 14, 26, 56, 54, 24, 22, 20, 246, 248, 232, 203, 231, 2, 235, 226, 252, 10, 32, 47, 3, 19, 69, 28, 218, 253, 19, 205, 185,
+			20, 21, 210, 26, 70, 3, 15, 61, 254, 252, 19, 206, 205, 234, 215, 211, 242, 230, 246, 35, 39, 21, 28, 39, 54, 23, 228, 234, 241, 235,
+			214, 246, 24, 16, 0, 9, 14, 245, 231, 232, 255, 6, 240, 241, 12, 8, 3, 38, 42, 248, 237, 12, 2, 244, 239, 223, 222, 5, 11, 6,
+			50, 54, 26, 38, 48, 248, 229, 244, 227, 192, 214, 241, 1, 33, 56, 68, 52, 36, 4, 1, 27, 227, 183, 187, 194, 208, 230, 35, 59, 68,
+			70, 47, 36, 22, 231, 179, 196, 213, 178, 214, 12, 0, 20, 63, 55, 42, 44, 26, 243, 200, 187, 182, 201, 215, 234, 0, 48, 51, 30, 56,
+			65, 26, 11, 247, 206, 207, 197, 201, 216, 237, 245, 244, 14, 79, 98, 79, 76, 50, 247, 219, 199, 152, 159, 180, 200, 219, 8, 76, 94, 103,
+			89, 64, 55, 10, 226, 212, 206, 186, 140, 172, 234, 13, 6, 46, 101, 78, 93, 94, 3, 204, 172, 156, 156, 188, 196, 192, 31, 57, 30, 84,
+			94, 29, 25, 63, 248, 155, 199, 203, 149, 192, 0, 239, 29, 125, 94, 52, 89, 46, 205, 225, 199, 141, 175, 203, 220, 1, 43, 49, 67, 56,
+			10, 34, 39, 214, 205, 253, 233, 219, 0, 20, 5, 44, 67, 20, 24, 18, 236, 237, 219, 198, 254, 14, 227, 26, 72, 16, 4, 55, 38, 246,
+			240, 241, 215, 219, 252, 248, 253, 15, 2, 255, 19, 248, 230, 17, 241, 193, 24, 84, 244, 225, 43, 25, 219, 230, 248, 236, 237, 253, 253, 255,
+			19, 11, 3, 30, 34, 8, 229, 230, 240, 229, 222, 220, 243, 23, 24, 28, 26, 19, 39, 40, 244, 204, 233, 241, 195, 209, 241, 8, 5, 13,
+			81, 87, 17, 12, 39, 249, 202, 241, 220, 188, 235, 253, 227, 255, 47, 26, 20, 35, 253, 251, 30, 17, 251, 222, 225, 0, 252, 250, 6, 244,
+			247, 5, 1, 14, 17, 253, 29, 80, 7, 230, 12, 3, 210, 196, 230, 246, 232, 252, 47, 43, 35, 19, 8, 23, 11, 232, 225, 221, 200, 203,
+			238, 242, 250, 80, 102, 43, 43, 80, 35, 211, 211, 230, 192, 152, 185, 241, 251, 14, 89, 78, 42, 94, 91, 1, 228, 248, 179, 149, 183, 174,
+			177, 228, 251, 53, 104, 62, 77, 111, 39, 232, 230, 198, 154, 162, 215, 231, 227, 44, 103, 67, 70, 101, 49, 12, 243, 215, 194, 164, 161, 207,
+			226, 238, 47, 52, 33, 79, 69, 6, 21, 18, 225, 162, 175, 206, 177, 216, 18, 15, 37, 97, 84, 33, 23, 36, 232, 180, 168, 177, 197, 186,
+			226, 45, 91, 70, 68, 102, 87, 35, 254, 231, 204, 184, 173, 193, 221, 250, 21, 59, 57, 62, 112, 98, 33, 237, 221, 195, 143, 164, 206, 200,
+			228, 241, 23, 49, 65, 57, 41, 47, 9, 6, 251, 206, 209, 227, 220, 214, 221, 253, 29, 22, 24, 59, 64, 27, 22, 32, 9, 253, 236, 228,
+			237, 224, 239, 248, 223, 255, 30, 7, 20, 52, 37, 41, 29, 7, 251, 225, 223, 227, 210, 219, 232, 232, 244, 21, 15, 27, 47, 41, 41, 12,
+			21, 18, 222, 232, 228, 229, 245, 234, 244, 18, 5, 12, 29, 13, 16, 24, 1, 27, 17, 241, 254, 243, 222, 230, 236, 229, 210, 248, 17, 18,
+			244, 12, 49, 11, 21, 38, 6, 235, 251, 236, 205, 237, 247, 251, 12, 19, 40, 35, 25, 15, 13, 255, 241, 252, 249, 221, 206, 247, 245, 216,
+			246, 33, 32, 35, 27, 39, 62, 12, 0, 234, 209, 214, 187, 183, 248, 231, 248, 41, 33, 43, 67, 42, 30, 24, 243, 216, 216, 190, 193, 214,
+			219, 229, 19, 26, 36, 43, 54, 54, 23, 10, 0, 232, 201, 215, 218, 178, 231, 38, 5, 34, 99, 52, 32, 72, 22, 247, 5, 199, 203, 236,
+			204, 240, 10, 2, 22, 33, 47, 31, 255, 10, 6, 233, 225, 229, 230, 221, 249, 0, 0, 34, 34, 15, 40, 10, 252, 0, 231, 205, 228, 253,
+			235, 230, 21, 20, 24, 28, 31, 41, 8, 13, 5, 244, 5, 231, 222, 253, 1, 233, 12, 16, 3, 41, 27, 16, 6, 250, 255, 240, 217, 234,
+			249, 242, 246, 0, 0, 0, 76, 11, 178, 0, 10, 246, 247, 248, 0, 19, 0, 242, 9, 16, 0, 239, 239, 3, 14, 11, 4, 253, 1, 252,
+			245, 250, 2, 10, 19, 12, 242, 231, 246, 9, 15, 8, 3, 2, 249, 240, 254, 9, 255, 1, 9, 11, 15, 245, 216, 244, 30, 29, 4, 238,
+			244, 11, 253, 232, 5, 27, 16, 5, 242, 231, 0, 17, 0, 236, 253, 31, 27, 244, 233, 253, 1, 247, 5, 27, 8, 235, 242, 3, 1, 250,
+			6, 37, 21, 221, 219, 0, 20, 16, 248, 248, 30, 22, 215, 204, 16, 49, 11, 239, 0, 21, 244, 213, 251, 25, 8, 12, 19, 248, 236, 245,
+			1, 15, 2, 245, 14, 13, 241, 246, 254, 255, 19, 20, 253, 248, 247, 246, 250, 249, 7, 23, 18, 250, 236, 248, 2, 3, 255, 253, 13, 27,
+			248, 216, 241, 27, 30, 254, 249, 12, 251, 221, 245, 32, 25, 242, 242, 14, 13, 240, 235, 5, 13, 5, 11, 3, 240, 241, 253, 13, 11, 241,
+			253, 45, 18, 194, 206, 35, 53, 248, 226, 7, 26, 250, 230, 254, 19, 10, 2, 3, 250, 242, 0, 13, 246, 232, 16, 42, 11, 230, 230, 0,
+			254, 254, 27, 19, 250, 250, 251, 244, 244, 3, 29, 13, 251, 3, 247, 222, 237, 16, 32, 20, 253, 253, 247, 225, 253, 34, 8, 238, 3, 30,
+			21, 216, 185, 1, 70, 37, 1, 246, 233, 243, 245, 250, 15, 32, 20, 231, 225, 12, 13, 232, 244, 41, 46, 240, 202, 240, 24, 8, 238, 0,
+			40, 28, 229, 217, 251, 22, 7, 250, 5, 29, 9, 212, 221, 24, 31, 0, 254, 13, 0, 233, 235, 250, 8, 24, 35, 11, 231, 225, 241, 4,
+			24, 27, 10, 238, 232, 247, 4, 255, 3, 28, 25, 245, 230, 240, 6, 9, 252, 6, 22, 253, 227, 246, 5, 9, 21, 4, 241, 0, 10, 244,
+			230, 8, 45, 14, 219, 235, 32, 20, 227, 224, 11, 39, 8, 235, 8, 11, 234, 239, 8, 26, 19, 238, 235, 3, 254, 244, 0, 21, 34, 4,
+			232, 243, 249, 254, 10, 11, 255, 2, 7, 244, 232, 254, 24, 20, 3, 254, 247, 242, 247, 4, 12, 0, 2, 36, 8, 204, 222, 24, 42, 13,
+			238, 238, 3, 4, 240, 240, 14, 40, 23, 231, 217, 254, 20, 7, 252, 254, 4, 10, 253, 242, 0, 7, 254, 11, 26, 255, 225, 231, 4, 21,
+			11, 8, 3, 238, 235, 4, 13, 0, 0, 9, 15, 9, 241, 232, 244, 252, 11, 28, 21, 245, 229, 250, 20, 12, 254, 253, 3, 249, 234, 251,
+			17, 22, 9, 234, 236, 23, 25, 245, 230, 247, 21, 17, 254, 253, 247, 240, 255, 17, 26, 16, 246, 230, 246, 11, 242, 223, 20, 63, 13, 206,
+			219, 40, 43, 218, 207, 29, 57, 3, 213, 223, 28, 35, 237, 237, 26, 12, 232, 231, 12, 42, 4, 221, 1, 22, 236, 217, 13, 54, 26, 226,
+			215, 248, 21, 37, 2, 215, 241, 25, 23, 6, 236, 232, 12, 20, 254, 0, 245, 254, 28, 7, 232, 242, 0, 6, 255, 3, 28, 3, 237, 254,
+			4, 0, 7, 0, 233, 244, 20, 19, 251, 247, 18, 20, 239, 215, 246, 21, 13, 6, 26, 8, 219, 215, 7, 44, 25, 233, 242, 36, 6, 188,
+			219, 49, 64, 1, 204, 236, 26, 7, 246, 10, 18, 13, 253, 214, 225, 33, 36, 249, 243, 19, 7, 217, 229, 23, 28, 20, 13, 240, 225, 231,
+			9, 23, 255, 11, 34, 247, 207, 232, 13, 22, 18, 22, 2, 225, 236, 11, 9, 252, 0, 29, 17, 217, 222, 21, 20, 249, 2, 11, 0, 0,
+			5, 245, 229, 251, 39, 33, 233, 229, 10, 10, 238, 247, 10, 17, 17, 3, 237, 238, 254, 8, 3, 254, 22, 30, 230, 197, 245, 43, 40, 253,
+			248, 8, 237, 219, 5, 29, 15, 11, 255, 236, 240, 249, 10, 9, 10, 23, 254, 223, 247, 25, 6, 232, 1, 26, 9, 245, 225, 232, 24, 49,
+			6, 217, 253, 41, 251, 214, 247, 23, 13, 253, 0, 14, 254, 226, 251, 39, 13, 233, 245, 255, 4, 14, 253, 234, 253, 24, 30, 247, 222, 254,
+			27, 3, 230, 252, 15, 3, 255, 11, 9, 240, 237, 11, 25, 4, 235, 243, 19, 7, 238, 2, 29, 6, 227, 232, 13, 25, 247, 241, 21, 12,
+			224, 237, 28, 29, 238, 228, 25, 43, 240, 200, 242, 48, 27, 229, 0, 27, 244, 224, 4, 25, 12, 251, 249, 2, 248, 238, 7, 15, 2, 10,
+			2, 240, 237, 237, 16, 53, 6, 224, 238, 12, 34, 3, 204, 225, 33, 47, 6, 229, 237, 13, 15, 247, 239, 253, 10, 17, 9, 246, 244, 6,
+			1, 234, 4, 44, 8, 210, 228, 32, 46, 246, 216, 255, 23, 1, 247, 249, 6, 24, 8, 227, 233, 18, 18, 248, 249, 10, 13, 3, 0, 251,
+			238, 249, 14, 12, 255, 242, 4, 21, 244, 229, 249, 17, 29, 6, 244, 255, 3, 250, 6, 2, 238, 1, 23, 253, 235, 245, 22, 44, 250, 197,
+			238, 46, 36, 234, 201, 0, 62, 20, 220, 225, 10, 40, 5, 222, 251, 21, 13, 236, 215, 15, 55, 4, 215, 235, 15, 27, 2, 251, 23, 0,
+			206, 239, 27, 17, 2, 14, 15, 245, 214, 251, 29, 13, 5, 246, 232, 255, 3, 1, 19, 13, 245, 251, 8, 6, 251, 236, 247, 27, 18, 245,
+			245, 8, 7, 238, 232, 19, 34, 15, 0, 250, 241, 217, 224, 30, 65, 7, 214, 234, 21, 28, 247, 228, 1, 25, 12, 238, 227, 0, 15, 9,
+			16, 14, 232, 226, 6, 27, 22, 245, 223, 7, 30, 242, 218, 4, 52, 30, 223, 227, 9, 0, 250, 18, 19, 244, 239, 2, 249, 247, 25, 43,
+			246, 202, 238, 39, 32, 235, 223, 4, 32, 9, 220, 238, 47, 39, 213, 199, 43, 76, 223, 168, 250, 75, 34, 215, 235, 31, 12, 230, 246, 18,
+			16, 0, 228, 231, 22, 31, 249, 245, 0, 0, 9, 11, 242, 252, 13, 246, 251, 11, 0, 0, 0, 248, 14, 23, 239, 238, 0, 3, 14, 0,
+			236, 1, 0, 0, 20, 17, 235, 221, 23, 46, 243, 213, 16, 55, 247, 182, 242, 73, 40, 218, 216, 18, 31, 241, 226, 2, 19, 10, 247, 255,
+			22, 6, 220, 230, 27, 22, 236, 4, 32, 11, 233, 224, 0, 24, 254, 247, 15, 14, 248, 241, 252, 4, 4, 3, 2, 0, 8, 2, 247, 248,
+			0, 16, 12, 240, 240, 9, 23, 10, 230, 231, 22, 23, 244, 238, 0, 17, 11, 232, 254, 23, 0, 1, 254, 212, 252, 53, 26, 254, 235, 208,
+			254, 46, 23, 248, 234, 238, 15, 12, 243, 4, 252, 240, 33, 34, 234, 227, 0, 12, 247, 249, 19, 16, 244, 245, 8, 3, 251, 7, 0, 246,
+			15, 8, 229, 243, 8, 26, 34, 0, 212, 224, 27, 40, 248, 218, 251, 36, 15, 228, 235, 23, 11, 233, 1, 31, 9, 245, 225, 229, 23, 42,
+			13, 240, 232, 253, 21, 252, 216, 3, 61, 33, 216, 190, 246, 50, 41, 1, 232, 237, 17, 27, 240, 203, 244, 63, 49, 232, 207, 254, 28, 10,
+			249, 237, 235, 21, 34, 247, 217, 0, 35, 14, 237, 231, 4, 19, 0, 0, 17, 248, 224, 254, 50, 18, 200, 218, 34, 44, 0, 238, 249, 9,
+			7, 255, 245, 0, 10, 250, 245, 27, 30, 221, 199, 14, 61, 24, 227, 227, 17, 3, 210, 255, 44, 18, 236, 233, 31, 47, 207, 161, 11, 104,
+			43, 230, 223, 226, 244, 4, 20, 25, 20, 2, 244, 236, 244, 244, 0, 16, 26, 21, 248, 217, 224, 11, 55, 25, 220, 221, 13, 22, 239, 229,
+			12, 45, 11, 223, 247, 17, 0, 252, 244, 254, 21, 14, 248, 225, 243, 33, 15, 234, 255, 31, 17, 223, 223, 11, 15, 255, 9, 7, 8, 2,
+			236, 224, 3, 47, 25, 246, 228, 253, 30, 236, 191, 12, 66, 26, 255, 217, 222, 36, 23, 216, 245, 26, 28, 13, 209, 201, 35, 61, 251, 225,
+			17, 39, 222, 184, 3, 81, 17, 173, 237, 94, 37, 205, 217, 3, 32, 19, 235, 241, 9, 241, 240, 30, 16, 250, 20, 4, 218, 240, 31, 11,
+			218, 225, 27, 54, 11, 216, 234, 22, 12, 252, 9, 7, 240, 241, 9, 2, 244, 17, 17, 246, 241, 255, 14, 5, 242, 5, 10, 244, 255, 21,
+			244, 220, 0, 43, 40, 229, 206, 3, 38, 9, 240, 240, 12, 7, 241, 11, 9, 239, 0, 20, 5, 249, 238, 10, 24, 245, 239, 16, 14, 245,
+			232, 239, 30, 43, 252, 231, 244, 245, 12, 17, 1, 255, 242, 247, 0, 1, 34, 23, 200, 223, 53, 34, 218, 205, 21, 84, 7, 169, 218, 57,
+			62, 221, 177, 26, 98, 251, 173, 233, 60, 62, 209, 181, 49, 67, 212, 201, 10, 52, 26, 216, 225, 41, 12, 212, 3, 45, 0, 228, 230, 252,
+			23, 11, 11, 20, 218, 209, 26, 42, 0, 241, 234, 4, 39, 2, 218, 245, 31, 26, 240, 219, 246, 36, 36, 246, 219, 246, 26, 24, 254, 216,
+			226, 38, 71, 250, 191, 237, 46, 22, 212, 233, 40, 17, 239, 1, 5, 234, 230, 14, 50, 252, 212, 11, 25, 236, 239, 18, 37, 8, 223, 215,
+			17, 38, 0, 0, 15, 228, 219, 11, 32, 20, 9, 245, 229, 1, 12, 252, 248, 0, 18, 14, 232, 224, 13, 37, 15, 248, 229, 243, 15, 15,
+			247, 231, 6, 54, 250, 182, 246, 77, 32, 210, 224, 39, 14, 197, 251, 74, 20, 212, 215, 252, 46, 20, 242, 11, 11, 234, 237, 252, 255, 30,
+			27, 227, 225, 29, 6, 227, 3, 21, 3, 251, 244, 5, 8, 254, 9, 16, 241, 206, 255, 62, 20, 227, 238, 10, 8, 240, 238, 38, 37, 213,
+			212, 25, 42, 20, 242, 202, 238, 46, 32, 233, 226, 4, 46, 38, 205, 187, 26, 68, 13, 221, 219, 15, 35, 252, 223, 230, 9, 43, 16, 244,
+			0, 249, 212, 246, 27, 22, 24, 16, 222, 220, 3, 32, 38, 246, 206, 255, 27, 239, 0, 35, 15, 254, 225, 215, 12, 39, 12, 1, 255, 239,
+			254, 13, 245, 243, 13, 20, 248, 221, 8, 55, 11, 197, 227, 32, 32, 4, 238, 235, 5, 29, 11, 231, 240, 13, 7, 244, 245, 9, 27, 8,
+			233, 233, 16, 6, 229, 16, 64, 1, 197, 228, 27, 16, 237, 6, 27, 0, 245, 4, 10, 1, 226, 233, 36, 38, 3, 233, 211, 251, 57, 19,
+			211, 235, 30, 14, 234, 10, 15, 233, 243, 28, 11, 237, 229, 248, 24, 21, 3, 12, 2, 232, 221, 255, 45, 12, 242, 14, 11, 219, 218, 21,
+			37, 250, 11, 37, 216, 181, 22, 95, 18, 185, 207, 37, 47, 242, 223, 9, 22, 0, 253, 253, 229, 242, 37, 40, 242, 222, 249, 26, 2, 210,
+			248, 69, 21, 216, 245, 9, 253, 244, 251, 31, 27, 234, 226, 6, 32, 252, 217, 240, 35, 31, 246, 236, 22, 24, 239, 231, 238, 249, 47, 30,
+			212, 225, 25, 33, 2, 212, 219, 65, 81, 231, 158, 238, 69, 31, 205, 239, 28, 12, 238, 240, 26, 27, 219, 248, 56, 239, 158, 239, 101, 75,
+			197, 176, 43, 83, 223, 180, 8, 79, 7, 189, 233, 39, 29, 227, 217, 42, 48, 204, 236, 74, 32, 185, 188, 25, 64, 243, 231, 27, 12, 223,
+			242, 20, 24, 3, 243, 6, 10, 212, 203, 30, 77, 22, 203, 211, 30, 55, 244, 203, 251, 61, 28, 204, 207, 17, 46, 5, 238, 2, 1, 240,
+			0, 23, 13, 252, 239, 234, 0, 26, 2, 241, 12, 16, 241, 230, 6, 69, 25, 176, 195, 49, 68, 246, 201, 2, 61, 1, 185, 219, 28, 50,
+			37, 248, 216, 227, 20, 11, 228, 255, 70, 26, 192, 204, 38, 46, 224, 227, 53, 37, 202, 200, 31, 67, 6, 185, 224, 65, 58, 206, 189, 27,
+			46, 245, 240, 19, 18, 241, 220, 249, 22, 28, 24, 239, 226, 0, 17, 250, 229, 3, 36, 24, 237, 226, 238, 9, 32, 20, 233, 239, 24, 6,
+			226, 254, 23, 24, 242, 207, 4, 89, 12, 166, 200, 30, 64, 30, 213, 225, 39, 17, 220, 239, 33, 37, 248, 203, 237, 53, 21, 214, 252, 32,
+			16, 236, 212, 245, 58, 45, 224, 212, 12, 33, 226, 194, 18, 91, 21, 184, 230, 54, 7, 202, 248, 51, 44, 246, 174, 219, 79, 53, 208, 224,
+			24, 33, 4, 216, 235, 46, 33, 233, 232, 233, 250, 32, 43, 6, 192, 206, 56, 55, 212, 225, 33, 30, 246, 216, 251, 35, 19, 234, 198, 248,
+			105, 50, 156, 177, 81, 103, 213, 130, 5, 114, 12, 179, 241, 59, 32, 216, 200, 26, 69, 242, 198, 14, 46, 244, 209, 253, 59, 27, 201, 215,
+			23, 33, 25, 242, 210, 2, 35, 249, 233, 17, 37, 2, 222, 209, 2, 54, 28, 221, 202, 12, 70, 14, 199, 248, 60, 253, 174, 253, 83, 32,
+			207, 234, 22, 250, 236, 22, 30, 237, 213, 15, 72, 4, 182, 238, 48, 10, 215, 233, 24, 56, 13, 216, 239, 251, 236, 252, 29, 46, 0, 204,
+			247, 37, 12, 244, 238, 238, 248, 20, 67, 36, 192, 171, 6, 84, 35, 187, 222, 85, 46, 175, 186, 52, 92, 255, 170, 218, 53, 32, 233, 237,
+			25, 25, 230, 216, 2, 35, 36, 229, 202, 16, 51, 250, 208, 244, 40, 58, 2, 228, 0, 238, 192, 243, 56, 49, 249, 217, 4, 46, 245, 214,
+			5, 43, 16, 216, 220, 28, 27, 250, 246, 1, 4, 235, 239, 60, 52, 197, 189, 25, 46, 252, 231, 20, 51, 230, 155, 243, 96, 48, 196, 207,
+			33, 70, 0, 180, 224, 52, 31, 248, 14, 246, 212, 10, 38, 2, 223, 216, 43, 76, 230, 201, 8, 38, 3, 204, 199, 45, 75, 11, 229, 228,
+			5, 6, 218, 255, 62, 31, 219, 191, 240, 63, 42, 224, 214, 0, 37, 8, 236, 33, 38, 202, 217, 40, 14, 211, 0, 76, 34, 176, 194, 53,
+			52, 227, 215, 28, 55, 242, 192, 237, 35, 42, 253, 222, 1, 36, 20, 232, 215, 18, 29, 198, 209, 53, 87, 13, 171, 178, 35, 92, 16, 207,
+			222, 27, 28, 222, 245, 58, 18, 202, 218, 30, 46, 8, 246, 251, 246, 230, 237, 8, 25, 22, 3, 242, 248, 0, 244, 252, 255, 21, 25, 242,
+			229, 40, 16, 173, 225, 87, 61, 217, 186, 242, 27, 10, 23, 34, 242, 204, 1, 67, 14, 165, 220, 89, 40, 206, 220, 25, 56, 253, 195, 251,
+			37, 254, 225, 254, 26, 11, 250, 224, 0, 49, 11, 208, 246, 39, 32, 245, 204, 228, 58, 42, 205, 214, 34, 56, 11, 214, 228, 34, 17, 221,
+			239, 36, 8, 207, 229, 47, 35, 241, 236, 246, 13, 19, 250, 0, 15, 245, 217, 234, 24, 44, 17, 224, 251, 51, 8, 200, 217, 28, 53, 6,
+			220, 248, 12, 250, 248, 6, 19, 0, 247, 6, 1, 238, 255, 35, 19, 221, 222, 16, 15, 249, 17, 24, 242, 204, 243, 45, 39, 249, 218, 244,
+			43, 253, 211, 0, 30, 6, 247, 246, 30, 25, 218, 211, 20, 58, 8, 209, 242, 15, 10, 12, 247, 0, 30, 0, 242, 254, 242, 244, 14, 17,
+			254, 223, 244, 48, 23, 224, 239, 19, 31, 240, 206, 6, 41, 4, 231, 233, 12, 30, 0, 224, 249, 32, 33, 0, 220, 225, 18, 38, 255, 224,
+			244, 32, 21, 226, 234, 33, 38, 246, 218, 243, 36, 13, 222, 231, 11, 40, 14, 219, 236, 38, 29, 232, 233, 16, 14, 231, 233, 32, 33, 223,
+			213, 26, 57, 0, 218, 242, 6, 0, 254, 253, 8, 11, 0, 247, 252, 11, 5, 2, 7, 250, 240, 245, 16, 30, 2, 234, 244, 245, 9, 33,
+			11, 242, 246, 3, 6, 249, 243, 15, 14, 227, 239, 25, 21, 252, 242, 0, 13, 253, 239, 0, 21, 7, 239, 245, 2, 9, 13, 247, 252, 252,
+			251, 20, 14, 244, 239, 250, 12, 25, 0, 211, 252, 54, 11, 228, 251, 11, 0, 238, 236, 31, 41, 232, 233, 12, 0, 244, 250, 11, 39, 6,
+			233, 253, 251, 227, 241, 27, 44, 13, 240, 233, 224, 248, 35, 33, 10, 239, 219, 243, 20, 17, 15, 13, 245, 228, 227, 6, 44, 27, 243, 230,
+			237, 252, 13, 14, 2, 6, 6, 252, 5, 4, 249, 251, 249, 252, 14, 0, 243, 3, 15, 5, 253, 249, 255, 5, 14, 5, 239, 234, 252, 19,
+			16, 255, 236, 239, 11, 30, 18, 254, 238, 251, 0, 246, 0, 6, 11, 14, 248, 242, 255, 1, 16, 8, 249, 8, 0, 233, 241, 9, 12, 6,
+			1, 254, 253, 252, 254, 14, 10, 249, 7, 11, 222, 222, 22, 34, 6, 247, 248, 5, 1, 243, 7, 13, 0, 3, 252, 244, 0, 9, 2, 5,
+			5, 244, 243, 4, 5, 3, 6, 253, 253, 5, 0, 254, 1, 3, 9, 9, 248, 245, 0, 255, 1, 2, 182, 7, 69, 0, 0, 7, 18, 244,
+			226, 0, 8, 237, 247, 12, 250, 247, 255, 237, 242, 6, 18, 0, 235, 225, 244, 23, 11, 246, 247, 242, 237, 247, 14, 21, 244, 222, 239, 10,
+			8, 246, 255, 251, 239, 1, 3, 244, 248, 0, 251, 253, 251, 237, 8, 22, 229, 226, 11, 9, 253, 240, 247, 10, 251, 236, 255, 15, 241, 224,
+			16, 24, 229, 225, 17, 10, 227, 2, 12, 240, 240, 255, 6, 2, 244, 246, 249, 248, 11, 0, 235, 245, 3, 1, 248, 3, 253, 241, 2, 250,
+			238, 0, 8, 4, 247, 238, 243, 7, 14, 242, 248, 6, 243, 232, 8, 20, 254, 234, 250, 0, 233, 251, 35, 7, 202, 238, 28, 5, 239, 0,
+			0, 230, 242, 27, 2, 234, 4, 253, 215, 3, 53, 246, 208, 252, 10, 243, 255, 19, 5, 244, 228, 233, 4, 22, 13, 243, 228, 239, 9, 20,
+			245, 232, 0, 2, 242, 0, 21, 235, 220, 22, 22, 225, 240, 18, 253, 232, 5, 15, 238, 235, 15, 6, 235, 239, 13, 12, 240, 231, 255, 19,
+			2, 230, 251, 255, 241, 10, 3, 252, 8, 245, 215, 255, 40, 5, 223, 237, 7, 3, 254, 15, 253, 217, 237, 11, 22, 12, 235, 242, 4, 233,
+			229, 27, 32, 245, 233, 242, 242, 250, 30, 20, 228, 229, 4, 1, 244, 6, 14, 246, 228, 255, 13, 0, 249, 252, 248, 230, 249, 42, 12, 213,
+			234, 15, 4, 250, 253, 8, 255, 224, 241, 24, 21, 234, 227, 13, 16, 229, 245, 21, 253, 237, 240, 248, 12, 25, 1, 225, 229, 0, 14, 9,
+			9, 234, 241, 2, 248, 12, 21, 238, 211, 252, 34, 19, 226, 247, 17, 242, 226, 18, 38, 239, 227, 253, 4, 5, 9, 255, 240, 247, 246, 250,
+			22, 15, 243, 237, 244, 0, 7, 2, 254, 249, 255, 249, 245, 9, 8, 252, 233, 244, 8, 9, 1, 252, 251, 247, 244, 3, 17, 253, 233, 248,
+			6, 2, 5, 245, 238, 14, 14, 230, 242, 17, 250, 238, 14, 18, 253, 229, 233, 4, 24, 7, 227, 0, 19, 241, 231, 18, 17, 240, 237, 8,
+			10, 252, 249, 246, 250, 7, 9, 237, 251, 26, 246, 225, 253, 4, 252, 251, 0, 29, 16, 212, 230, 36, 24, 212, 231, 38, 15, 224, 241, 10,
+			252, 8, 23, 247, 227, 222, 0, 53, 31, 219, 215, 253, 13, 252, 251, 19, 10, 235, 226, 249, 16, 9, 0, 243, 249, 10, 251, 235, 5, 21,
+			245, 230, 247, 15, 26, 253, 213, 235, 23, 20, 235, 235, 22, 2, 224, 9, 21, 232, 238, 22, 10, 235, 239, 19, 19, 236, 228, 7, 5, 242,
+			14, 34, 246, 208, 2, 25, 246, 248, 6, 253, 249, 0, 11, 247, 236, 3, 3, 249, 0, 3, 249, 235, 255, 38, 16, 217, 219, 17, 19, 237,
+			4, 27, 244, 224, 0, 11, 249, 4, 18, 246, 222, 252, 16, 13, 242, 229, 16, 28, 229, 219, 17, 23, 241, 240, 7, 11, 246, 249, 11, 255,
+			229, 252, 18, 10, 239, 227, 6, 30, 3, 228, 235, 11, 17, 0, 243, 248, 8, 255, 240, 249, 26, 13, 217, 234, 10, 12, 8, 12, 3, 225,
+			234, 14, 2, 252, 23, 6, 224, 229, 5, 28, 3, 227, 248, 21, 3, 241, 245, 9, 244, 242, 27, 18, 231, 243, 4, 240, 250, 37, 7, 226,
+			240, 254, 15, 0, 233, 10, 30, 255, 234, 252, 7, 250, 241, 13, 21, 240, 235, 6, 6, 240, 0, 13, 4, 242, 239, 5, 0, 240, 6, 12,
+			4, 237, 212, 27, 50, 228, 205, 20, 48, 225, 196, 26, 55, 237, 211, 0, 14, 247, 246, 14, 15, 246, 244, 236, 230, 5, 42, 17, 237, 226,
+			242, 16, 16, 1, 8, 243, 201, 239, 43, 62, 251, 201, 233, 0, 245, 253, 49, 41, 244, 176, 191, 42, 44, 1, 240, 238, 240, 234, 16, 64,
+			3, 212, 11, 4, 227, 7, 23, 17, 246, 223, 238, 11, 25, 251, 229, 255, 18, 0, 250, 245, 241, 7, 1, 248, 4, 243, 1, 24, 236, 218,
+			251, 30, 24, 229, 246, 27, 215, 211, 54, 51, 245, 233, 251, 255, 240, 15, 29, 0, 228, 228, 0, 13, 248, 5, 31, 243, 196, 242, 47, 18,
+			241, 24, 250, 191, 245, 58, 21, 217, 248, 21, 240, 245, 1, 9, 1, 233, 245, 22, 24, 240, 216, 246, 20, 8, 230, 0, 46, 35, 196, 169,
+			1, 54, 45, 21, 233, 202, 220, 9, 44, 21, 214, 240, 34, 245, 196, 23, 80, 0, 151, 233, 88, 22, 219, 245, 9, 253, 249, 2, 21, 10,
+			232, 243, 20, 245, 224, 14, 50, 12, 204, 229, 31, 18, 245, 14, 247, 215, 238, 50, 48, 249, 194, 217, 0, 27, 36, 5, 221, 235, 4, 5,
+			244, 254, 32, 26, 221, 187, 254, 55, 67, 235, 155, 240, 48, 10, 241, 21, 37, 214, 176, 9, 94, 11, 193, 220, 19, 35, 26, 223, 212, 13,
+			25, 14, 230, 220, 14, 32, 245, 243, 252, 11, 0, 216, 5, 46, 16, 221, 212, 25, 47, 218, 199, 11, 20, 36, 43, 234, 181, 195, 8, 86,
+			46, 242, 236, 248, 233, 190, 252, 100, 49, 206, 181, 237, 35, 32, 239, 250, 25, 251, 216, 253, 43, 13, 227, 209, 252, 45, 32, 240, 225, 226,
+			242, 12, 39, 45, 231, 215, 235, 220, 252, 78, 48, 219, 236, 246, 245, 18, 14, 16, 1, 228, 253, 25, 10, 231, 219, 13, 51, 254, 233, 242,
+			236, 250, 50, 48, 222, 197, 217, 247, 25, 57, 49, 233, 190, 233, 6, 246, 8, 24, 36, 5, 224, 0, 11, 208, 183, 22, 90, 34, 234, 0,
+			238, 176, 183, 38, 113, 95, 243, 130, 194, 11, 5, 38, 68, 30, 207, 200, 246, 245, 234, 24, 32, 35, 44, 230, 179, 199, 228, 21, 89, 86,
+			255, 143, 199, 9, 4, 11, 61, 253, 208, 252, 39, 19, 168, 173, 60, 120, 29, 173, 175, 235, 16, 73, 66, 219, 177, 233, 12, 36, 5, 230,
+			8, 13, 242, 252, 243, 248, 14, 2, 254, 4, 253, 244, 225, 32, 68, 226, 181, 236, 26, 44, 54, 238, 167, 200, 84, 91, 213, 157, 236, 57,
+			12, 243, 41, 42, 213, 163, 206, 53, 69, 26, 2, 234, 179, 206, 33, 78, 29, 194, 228, 31, 243, 210, 50, 46, 233, 185, 251, 94, 26, 177,
+			207, 32, 34, 2, 12, 11, 245, 203, 210, 0, 48, 105, 30, 134, 139, 19, 68, 46, 11, 6, 224, 216, 232, 26, 39, 228, 7, 36, 15, 227,
+			182, 217, 51, 45, 31, 9, 198, 214, 5, 6, 15, 15, 254, 30, 28, 194, 168, 31, 76, 33, 203, 226, 41, 4, 238, 248, 250, 239, 18, 20,
+			253, 9, 22, 231, 187, 240, 59, 66, 246, 188, 217, 6, 35, 24, 7, 0, 232, 217, 240, 22, 54, 3, 231, 3, 0, 236, 224, 250, 62, 8,
+			213, 25, 24, 230, 218, 252, 2, 232, 11, 87, 46, 179, 151, 253, 65, 16, 234, 54, 65, 200, 136, 216, 60, 80, 19, 252, 206, 181, 255, 93,
+			69, 184, 189, 33, 29, 187, 220, 100, 52, 183, 199, 27, 10, 226, 9, 56, 15, 196, 216, 18, 25, 3, 255, 0, 30, 13, 192, 221, 34, 36,
+			238, 246, 45, 8, 167, 226, 70, 26, 189, 217, 98, 77, 177, 134, 4, 72, 13, 244, 26, 29, 210, 171, 249, 70, 38, 15, 0, 222, 208, 235,
+			7, 8, 34, 36, 10, 244, 209, 207, 7, 31, 14, 253, 254, 1, 27, 5, 194, 223, 28, 48, 18, 10, 246, 174, 174, 38, 112, 60, 231, 161,
+			206, 251, 241, 23, 77, 50, 229, 208, 188, 236, 37, 24, 252, 22, 31, 245, 210, 212, 1, 15, 237, 4, 68, 50, 188, 153, 224, 41, 63, 43,
+			22, 245, 179, 178, 237, 52, 82, 24, 236, 228, 216, 234, 238, 33, 97, 10, 172, 199, 24, 39, 3, 246, 244, 247, 246, 240, 255, 20, 7, 232,
+			233, 253, 28, 4, 246, 4, 242, 232, 235, 22, 46, 13, 214, 184, 241, 36, 31, 4, 7, 224, 190, 239, 53, 46, 8, 223, 213, 243, 10, 26,
+			9, 231, 240, 246, 243, 25, 50, 3, 213, 186, 223, 34, 61, 17, 241, 215, 233, 4, 248, 5, 19, 5, 232, 231, 10, 6, 253, 255, 250, 237,
+			240, 7, 33, 13, 236, 195, 223, 42, 18, 238, 8, 11, 221, 195, 246, 59, 28, 246, 240, 0, 238, 195, 0, 59, 7, 238, 4, 0, 227, 203,
+			16, 57, 4, 210, 240, 10, 243, 245, 2, 0, 255, 13, 20, 238, 207, 241, 20, 1, 10, 38, 24, 223, 189, 229, 19, 28, 34, 31, 222, 197,
+			248, 42, 15, 229, 14, 20, 240, 226, 237, 5, 20, 10, 0, 0, 236, 240, 0, 232, 247, 41, 39, 243, 208, 226, 25, 15, 238, 4, 4, 3,
+			244, 242, 14, 19, 2, 226, 3, 29, 233, 219, 251, 36, 15, 236, 4, 26, 234, 213, 245, 11, 15, 1, 13, 12, 242, 221, 233, 35, 39, 236,
+			221, 0, 23, 255, 219, 248, 37, 28, 240, 229, 236, 12, 28, 254, 243, 19, 14, 235, 239, 1, 20, 2, 240, 14, 14, 250, 250, 255, 0, 17,
+			10, 233, 242, 8, 16, 236, 251, 46, 27, 245, 204, 229, 1, 33, 49, 10, 236, 225, 248, 4, 13, 247, 250, 26, 21, 230, 234, 15, 24, 237,
+			226, 0, 37, 31, 249, 229, 244, 255, 2, 14, 43, 21, 230, 226, 254, 15, 0, 252, 20, 18, 253, 240, 239, 1, 20, 9, 230, 248, 46, 22,
+			241, 226, 244, 11, 254, 6, 19, 11, 247, 236, 7, 32, 245, 230, 19, 40, 3, 214, 255, 33, 250, 227, 3, 39, 13, 233, 251, 10, 9, 231,
+			237, 38, 38, 247, 232, 0, 12, 238, 3, 26, 22, 5, 228, 241, 14, 254, 243, 5, 42, 24, 233, 246, 253, 250, 253, 3, 26, 10, 247, 250,
+			4, 6, 0, 235, 0, 43, 13, 243, 243, 251, 5, 4, 3, 28, 8, 247, 236, 249, 13, 16, 2, 2, 11, 11, 238, 248, 4, 13, 11, 245,
+			3, 2, 5, 1, 251, 252, 13, 8, 251, 4, 23, 245, 224, 6, 27, 14, 245, 0, 27, 248, 234, 2, 18, 7, 1, 17, 11, 229, 252, 12,
+			16, 14, 234, 248, 6, 245, 7, 2, 16, 11, 237, 7, 12, 1, 251, 245, 17, 32, 250, 0, 15, 1, 233, 232, 27, 41, 242, 243, 36, 19,
+			209, 216, 28, 33, 4, 7, 8, 5, 239, 227, 13, 34, 14, 244, 252, 19, 247, 234, 18, 24, 255, 252, 14, 10, 245, 249, 7, 2, 2, 0,
+			24, 20, 238, 226, 239, 36, 25, 245, 245, 10, 18, 1, 227, 248, 22, 11, 246, 1, 12, 7, 5, 0, 244, 252, 250, 0, 15, 23, 253, 236,
+			2, 5, 251, 20, 9, 0, 242, 253, 18, 250, 0, 1, 248, 18, 13, 243, 251, 3, 10, 255, 239, 17, 38, 16, 241, 231, 250, 18, 0, 237,
+			7, 36, 8, 244, 239, 0, 19, 243, 242, 24, 19, 250, 249, 8, 31, 244, 219, 14, 32, 244, 227, 6, 23, 1, 246, 252, 1, 1, 2, 253,
+			239, 233, 250, 21, 15, 248, 249, 0, 248, 246, 244, 19, 11, 246, 248, 9, 16, 242, 246, 13, 12, 234, 230, 11, 38, 0, 238, 254, 5, 5,
+			251, 3, 11, 249, 244, 255, 18, 10, 8, 0, 252, 245, 254, 9, 247, 249, 9, 11, 12, 243, 242, 8, 6, 2, 248, 241, 14, 26, 251, 235,
+			251, 13, 2, 248, 22, 21, 233, 216, 253, 27, 7, 251, 13, 12, 239, 228, 252, 22, 5, 236, 0, 0, 18, 9, 134, 0, 0, 0, 0, 1,
+			4, 8, 6, 252, 244, 248, 0, 2, 2, 4, 4, 255, 251, 250, 254, 1, 3, 4, 3, 1, 255, 253, 253, 255, 2, 3, 2, 0, 255, 253,
+			253, 255, 1, 2, 1, 0, 254, 254, 254, 255, 0, 0, 0, 0, 255, 254, 254, 255, 0, 0, 0, 0, 255, 254, 254, 255, 255, 255, 0, 0,
+			0, 254, 254, 255, 255, 0, 0, 254, 254, 0, 255, 253, 254, 0, 1, 1, 0, 253, 254, 0, 0, 255, 255, 0, 1, 0, 254, 253, 0, 4,
+			4, 4, 0, 247, 245, 0, 5, 2, 0, 3, 2, 250, 246, 254, 5, 4, 2, 1, 0, 254, 0, 0, 253, 255, 5, 5, 0, 254, 0, 0,
+			255, 255, 0, 2, 2, 0, 0, 254, 253, 0, 3, 1, 255, 0, 0, 253, 255, 0, 0, 0, 1, 253, 253, 2, 255, 252, 3, 5, 253, 253,
+			255, 255, 2, 3, 0, 1, 0, 250, 253, 3, 3, 0, 252, 249, 0, 6, 1, 252, 253, 255, 0, 0, 253, 254, 2, 0, 252, 251, 254, 1,
+			0, 252, 254, 5, 1, 249, 250, 1, 5, 0, 254, 255, 251, 252, 4, 3, 254, 254, 0, 0, 2, 1, 249, 244, 4, 18, 2, 242, 250, 3,
+			255, 255, 8, 6, 252, 246, 249, 1, 7, 5, 1, 252, 244, 251, 9, 2, 249, 1, 8, 0, 245, 250, 5, 1, 253, 3, 3, 0, 253, 250,
+			254, 5, 0, 255, 1, 253, 252, 7, 8, 249, 242, 252, 12, 14, 248, 235, 6, 16, 246, 243, 12, 8, 248, 253, 254, 1, 6, 252, 242, 1,
+			5, 253, 0, 1, 252, 3, 4, 253, 1, 5, 255, 1, 4, 254, 255, 8, 3, 246, 245, 6, 15, 252, 242, 4, 9, 3, 2, 255, 248, 253,
+			12, 11, 244, 245, 11, 250, 234, 13, 31, 253, 229, 241, 0, 6, 4, 3, 8, 251, 234, 248, 12, 1, 252, 8, 3, 249, 252, 253, 251, 0,
+			9, 2, 252, 252, 254, 253, 253, 4, 5, 251, 253, 7, 253, 235, 254, 22, 8, 246, 250, 1, 253, 251, 2, 12, 8, 248, 238, 253, 16, 4,
+			245, 255, 3, 253, 0, 4, 254, 0, 1, 249, 248, 9, 8, 243, 254, 11, 247, 244, 9, 8, 254, 244, 253, 14, 1, 238, 253, 11, 0, 252,
+			1, 3, 252, 247, 1, 8, 254, 250, 0, 0, 254, 8, 0, 236, 253, 23, 1, 242, 1, 5, 254, 253, 254, 2, 8, 253, 252, 4, 0, 248,
+			7, 6, 244, 255, 22, 255, 232, 0, 18, 5, 251, 246, 248, 14, 17, 245, 240, 4, 11, 1, 248, 0, 12, 7, 243, 242, 12, 16, 249, 240,
+			253, 10, 11, 245, 239, 15, 22, 240, 239, 11, 10, 253, 252, 253, 255, 8, 1, 248, 255, 5, 4, 9, 1, 247, 1, 6, 254, 250, 0, 2,
+			4, 2, 255, 249, 252, 0, 2, 7, 8, 249, 247, 4, 2, 253, 12, 5, 230, 241, 20, 17, 241, 241, 3, 0, 248, 0, 5, 0, 248, 253,
+			6, 249, 239, 5, 15, 1, 7, 5, 237, 1, 40, 31, 1, 247, 254, 7, 247, 227, 249, 17, 8, 241, 242, 25, 17, 203, 226, 58, 33, 214,
+			238, 37, 13, 229, 4, 34, 0, 239, 248, 244, 11, 24, 244, 235, 252, 254, 16, 8, 249, 253, 251, 0, 255, 242, 9, 36, 248, 207, 247, 28,
+			13, 3, 249, 244, 8, 9, 246, 253, 14, 255, 244, 252, 255, 4, 14, 253, 242, 1, 255, 237, 9, 35, 243, 223, 10, 19, 248, 255, 17, 0,
+			237, 241, 7, 33, 1, 215, 247, 20, 253, 247, 9, 0, 245, 2, 3, 242, 250, 15, 7, 243, 245, 2, 9, 245, 244, 27, 9, 221, 237, 20,
+			19, 237, 238, 31, 11, 216, 229, 19, 32, 252, 234, 4, 4, 250, 248, 250, 22, 21, 242, 230, 253, 20, 0, 236, 6, 25, 1, 240, 243, 2,
+			11, 255, 253, 5, 12, 242, 223, 13, 37, 254, 240, 245, 249, 12, 13, 243, 254, 12, 247, 236, 16, 19, 246, 251, 0, 241, 1, 10, 255, 6,
+			254, 244, 4, 13, 253, 237, 13, 21, 232, 240, 17, 6, 252, 2, 248, 250, 12, 2, 238, 237, 12, 30, 253, 228, 3, 18, 242, 232, 23, 33,
+			245, 220, 240, 27, 23, 239, 239, 15, 21, 252, 228, 246, 37, 8, 220, 0, 16, 253, 0, 249, 244, 29, 22, 216, 217, 33, 55, 251, 207, 239,
+			33, 12, 240, 252, 9, 0, 245, 249, 4, 9, 3, 1, 245, 241, 9, 22, 245, 249, 4, 1, 251, 254, 253, 11, 15, 238, 224, 28, 47, 211,
+			212, 46, 36, 215, 233, 42, 41, 224, 179, 254, 75, 22, 207, 230, 17, 8, 251, 17, 8, 225, 247, 21, 254, 245, 22, 17, 239, 243, 16, 4,
+			12, 18, 243, 226, 254, 240, 241, 14, 32, 34, 248, 198, 251, 67, 28, 221, 232, 21, 24, 242, 227, 25, 48, 227, 191, 7, 41, 254, 223, 255,
+			36, 251, 220, 5, 18, 14, 11, 242, 231, 11, 29, 0, 219, 250, 42, 9, 215, 253, 30, 248, 232, 8, 15, 11, 1, 213, 247, 54, 25, 231,
+			235, 9, 30, 3, 208, 245, 33, 13, 1, 5, 255, 2, 1, 226, 230, 18, 29, 242, 226, 15, 30, 234, 233, 16, 254, 247, 11, 10, 243, 243,
+			11, 29, 252, 226, 255, 15, 249, 248, 12, 7, 239, 254, 24, 247, 226, 17, 26, 237, 252, 19, 249, 233, 1, 28, 18, 232, 222, 17, 33, 232,
+			242, 47, 9, 202, 239, 50, 18, 209, 235, 29, 4, 237, 9, 19, 247, 223, 250, 36, 34, 238, 221, 251, 9, 14, 24, 0, 213, 239, 33, 22,
+			250, 244, 233, 251, 27, 5, 243, 252, 255, 250, 241, 8, 36, 4, 225, 244, 2, 10, 12, 254, 254, 2, 241, 236, 22, 35, 243, 215, 4, 22,
+			3, 240, 244, 17, 0, 213, 251, 68, 22, 184, 221, 45, 24, 249, 243, 0, 254, 244, 246, 20, 21, 233, 238, 19, 4, 235, 9, 32, 239, 200,
+			0, 54, 12, 213, 0, 33, 245, 210, 9, 60, 12, 208, 208, 34, 50, 217, 219, 36, 35, 232, 215, 12, 35, 254, 241, 3, 241, 249, 24, 0,
+			251, 32, 11, 207, 220, 35, 43, 253, 229, 236, 253, 11, 8, 15, 1, 240, 244, 8, 16, 2, 240, 252, 16, 3, 252, 253, 253, 2, 254, 0,
+			19, 7, 247, 245, 255, 9, 0, 243, 4, 18, 253, 235, 15, 26, 246, 232, 251, 40, 28, 212, 211, 29, 29, 9, 20, 231, 184, 5, 78, 10,
+			213, 238, 7, 255, 253, 17, 23, 242, 227, 2, 15, 20, 12, 230, 237, 27, 254, 239, 27, 5, 213, 7, 38, 243, 237, 10, 3, 4, 253, 239,
+			20, 36, 233, 224, 16, 12, 253, 25, 15, 228, 226, 18, 31, 6, 248, 240, 8, 17, 239, 253, 31, 248, 231, 19, 9, 224, 9, 53, 243, 207,
+			255, 34, 18, 252, 226, 230, 32, 21, 237, 4, 11, 245, 10, 0, 218, 13, 70, 246, 193, 254, 38, 13, 247, 7, 33, 11, 222, 228, 21, 49,
+			246, 194, 26, 58, 213, 215, 36, 40, 2, 210, 223, 58, 48, 205, 227, 46, 7, 227, 12, 254, 240, 24, 17, 223, 237, 12, 20, 10, 245, 254,
+			20, 250, 227, 7, 41, 11, 219, 238, 24, 15, 254, 255, 1, 16, 18, 225, 207, 43, 72, 232, 178, 252, 69, 36, 205, 211, 45, 34, 214, 226,
+			46, 27, 217, 232, 38, 39, 236, 234, 254, 255, 19, 22, 233, 246, 29, 242, 213, 22, 53, 253, 224, 230, 12, 46, 247, 204, 28, 45, 234, 226,
+			3, 18, 21, 239, 215, 27, 45, 244, 222, 8, 33, 15, 226, 219, 26, 40, 250, 255, 255, 234, 244, 26, 40, 12, 220, 221, 26, 40, 225, 207,
+			47, 54, 219, 189, 18, 74, 2, 194, 0, 59, 5, 215, 246, 37, 29, 11, 0, 211, 231, 48, 39, 220, 221, 16, 25, 5, 243, 250, 28, 2,
+			230, 6, 21, 8, 8, 8, 10, 23, 11, 237, 237, 13, 35, 244, 205, 8, 43, 10, 228, 209, 9, 55, 8, 204, 218, 22, 60, 25, 210, 226,
+			34, 19, 211, 226, 55, 40, 199, 215, 37, 41, 5, 206, 222, 50, 38, 231, 225, 6, 32, 255, 217, 228, 40, 59, 215, 157, 39, 111, 221, 131,
+			7, 98, 17, 181, 214, 64, 37, 197, 221, 31, 19, 252, 229, 244, 39, 0, 189, 4, 79, 246, 184, 2, 43, 243, 228, 29, 5, 215, 1, 42,
+			233, 232, 27, 14, 231, 231, 11, 21, 246, 243, 255, 240, 244, 18, 11, 241, 252, 1, 226, 2, 53, 244, 197, 14, 16, 235, 34, 21, 181, 220,
+			50, 38, 225, 219, 30, 3, 194, 7, 70, 251, 167, 234, 85, 24, 155, 234, 89, 245, 187, 7, 43, 22, 218, 206, 35, 53, 216, 222, 28, 255,
+			249, 0, 240, 251, 26, 243, 229, 29, 36, 205, 202, 44, 49, 228, 226, 18, 4, 250, 10, 247, 239, 20, 255, 231, 12, 19, 253, 237, 241, 8,
+			21, 1, 244, 245, 249, 3, 0, 13, 2, 244, 8, 20, 219, 223, 31, 31, 233, 223, 15, 25, 217, 211, 37, 45, 4, 221, 223, 17, 41, 240,
+			249, 4, 233, 11, 9, 224, 8, 58, 229, 177, 13, 74, 7, 205, 238, 14, 9, 249, 235, 6, 33, 255, 220, 229, 13, 29, 12, 250, 245, 248,
+			245, 19, 23, 231, 232, 12, 9, 248, 0, 7, 2, 0, 2, 246, 2, 8, 255, 248, 250, 254, 17, 12, 255, 251, 240, 9, 29, 242, 221, 32,
+			27, 211, 246, 53, 255, 199, 2, 50, 17, 216, 226, 30, 30, 232, 239, 24, 249, 231, 11, 19, 253, 253, 1, 243, 236, 43, 47, 198, 194, 38,
+			35, 233, 232, 12, 12, 232, 233, 33, 30, 230, 241, 18, 254, 247, 32, 1, 206, 250, 42, 4, 239, 251, 234, 9, 58, 229, 199, 47, 24, 196,
+			11, 42, 249, 251, 239, 236, 24, 22, 245, 249, 6, 5, 244, 241, 5, 27, 15, 235, 233, 2, 16, 22, 1, 213, 235, 32, 22, 224, 245, 31,
+			253, 226, 254, 20, 22, 5, 212, 243, 24, 245, 240, 30, 5, 225, 238, 7, 19, 245, 0, 18, 235, 224, 21, 20, 237, 10, 31, 239, 226, 4,
+			11, 9, 11, 241, 213, 251, 37, 23, 248, 217, 231, 32, 44, 221, 196, 28, 64, 230, 184, 22, 56, 244, 210, 252, 29, 10, 236, 6, 12, 215,
+			250, 59, 13, 200, 240, 35, 11, 237, 242, 240, 12, 42, 236, 214, 21, 35, 232, 245, 37, 10, 210, 247, 40, 251, 230, 25, 20, 215, 1, 38,
+			246, 222, 12, 29, 8, 232, 232, 16, 15, 243, 253, 12, 249, 250, 16, 10, 237, 0, 31, 244, 227, 37, 30, 207, 223, 46, 45, 239, 200, 1,
+			62, 10, 202, 236, 48, 26, 218, 248, 55, 251, 202, 25, 52, 234, 233, 14, 23, 0, 236, 253, 18, 12, 249, 255, 241, 3, 36, 20, 221, 245,
+			18, 3, 0, 12, 3, 0, 246, 253, 14, 13, 254, 241, 253, 26, 20, 213, 241, 56, 24, 216, 223, 37, 43, 220, 217, 51, 24, 203, 245, 35,
+			21, 241, 228, 22, 33, 240, 240, 18, 253, 253, 23, 8, 238, 14, 31, 244, 223, 251, 23, 24, 248, 232, 254, 21, 6, 231, 18, 46, 237, 197,
+			11, 41, 15, 239, 226, 12, 30, 253, 239, 19, 12, 232, 239, 22, 26, 250, 236, 254, 6, 16, 7, 239, 2, 24, 249, 236, 17, 8, 253, 0,
+			5, 13, 21, 241, 223, 21, 41, 239, 210, 14, 45, 2, 224, 0, 18, 5, 0, 250, 0, 12, 255, 245, 5, 3, 0, 22, 5, 235, 255, 25,
+			2, 245, 15, 10, 237, 251, 25, 9, 245, 10, 11, 237, 254, 22, 247, 245, 31, 20, 217, 213, 47, 69, 215, 180, 34, 69, 240, 196, 14, 65,
+			252, 211, 247, 25, 19, 239, 235, 29, 16, 213, 243, 45, 23, 226, 225, 13, 36, 247, 229, 9, 8, 241, 10, 15, 240, 238, 18, 22, 226, 242,
+			42, 7, 219, 6, 23, 6, 5, 255, 250, 249, 0, 14, 13, 4, 3, 232, 236, 28, 34, 243, 237, 8, 245, 233, 20, 38, 247, 209, 254, 40,
+			1, 238, 29, 33, 224, 195, 14, 77, 17, 195, 235, 32, 246, 230, 32, 34, 242, 223, 249, 19, 20, 13, 255, 231, 248, 43, 11, 213, 255, 46,
+			0, 225, 1, 32, 19, 237, 222, 10, 47, 1, 211, 250, 51, 21, 209, 235, 50, 28, 224, 239, 46, 26, 200, 211, 50, 51, 233, 216, 7, 41,
+			0, 209, 1, 43, 255, 218, 8, 40, 243, 207, 8, 54, 1, 208, 247, 40, 4, 217, 245, 30, 7, 228, 251, 32, 12, 237, 245, 2, 14, 8,
+			4, 5, 243, 242, 16, 17, 7, 251, 225, 13, 39, 235, 223, 27, 12, 225, 4, 37, 4, 226, 230, 12, 46, 13, 221, 242, 23, 248, 239, 29,
+			22, 232, 239, 14, 11, 3, 2, 4, 254, 243, 11, 35, 3, 206, 247, 54, 7, 205, 7, 51, 241, 208, 26, 49, 231, 209, 11, 41, 3, 219,
+			250, 36, 8, 230, 243, 28, 28, 241, 229, 9, 21, 252, 242, 13, 19, 240, 236, 21, 9, 225, 254, 47, 3, 208, 252, 49, 12, 221, 249, 30,
+			10, 232, 245, 16, 15, 251, 247, 0, 2, 0, 6, 3, 0, 2, 244, 246, 10, 16, 3, 255, 252, 253, 1, 0, 10, 15, 248, 235, 5, 25,
+			2, 233, 248, 18, 8, 245, 249, 7, 9, 246, 241, 17, 17, 239, 250, 28, 6, 226, 252, 31, 13, 225, 239, 25, 17, 232, 242, 27, 11, 232,
+			2, 25, 2, 250, 3, 255, 247, 4, 0, 0, 225, 1, 33, 0, 8, 4, 7, 7, 20, 44, 10, 4, 9, 250, 252, 247, 237, 225, 218, 237,
+			231, 235, 246, 241, 0, 9, 13, 10, 0, 14, 14, 2, 3, 246, 240, 239, 232, 230, 219, 224, 229, 226, 235, 237, 236, 246, 248, 247, 245, 244,
+			247, 241, 236, 233, 223, 217, 220, 218, 209, 207, 210, 214, 222, 230, 235, 237, 243, 251, 0, 255, 255, 252, 252, 253, 253, 250, 250, 0, 6, 10,
+			14, 19, 24, 34, 38, 41, 43, 50, 56, 54, 55, 57, 61, 79, 76, 73, 75, 67, 65, 59, 47, 32, 16, 15, 11, 6, 5, 4, 11, 21,
+			28, 36, 30, 33, 35, 25, 21, 12, 253, 245, 233, 220, 213, 200, 197, 192, 192, 198, 192, 197, 212, 215, 223, 231, 236, 239, 236, 241, 236, 222,
+			224, 218, 215, 212, 206, 205, 204, 208, 221, 219, 227, 231, 242, 253, 0, 2, 0, 0, 4, 0, 0, 0, 1, 0, 2, 8, 6, 13, 16, 20,
+			24, 27, 27, 25, 27, 24, 8, 4, 254, 231, 221, 178, 176, 59, 41, 45, 88, 81, 98, 114, 125, 80, 4, 22, 232, 215, 213, 158, 170, 198,
+			247, 18, 0, 44, 85, 91, 125, 107, 85, 60, 43, 37, 241, 222, 212, 196, 224, 225, 222, 239, 3, 18, 3, 5, 16, 19, 26, 29, 16, 254,
+			255, 14, 6, 2, 245, 226, 242, 245, 252, 247, 228, 235, 246, 246, 250, 237, 231, 228, 228, 235, 217, 218, 213, 205, 221, 216, 222, 235, 234, 242,
+			235, 236, 235, 226, 231, 213, 204, 208, 206, 205, 203, 205, 209, 217, 235, 245, 249, 0, 10, 12, 22, 28, 24, 14, 17, 15, 14, 20, 27, 37,
+			41, 49, 60, 59, 65, 63, 62, 66, 63, 68, 66, 63, 63, 58, 59, 59, 61, 56, 42, 42, 45, 40, 47, 37, 30, 20, 8, 6, 1, 250,
+			243, 237, 243, 244, 243, 244, 231, 230, 236, 224, 230, 219, 211, 211, 212, 214, 211, 205, 209, 197, 202, 191, 187, 194, 195, 203, 202, 206, 217, 217,
+			229, 236, 219, 218, 203, 207, 209, 209, 218, 221, 233, 248, 0, 14, 11, 20, 28, 27, 35, 16, 1, 0, 252, 1, 254, 249, 0, 9, 36, 50,
+			71, 96, 98, 110, 120, 114, 104, 103, 84, 64, 43, 27, 13, 249, 234, 219, 215, 226, 228, 238, 248, 254, 16, 27, 36, 42, 34, 23, 15, 254,
+			239, 221, 194, 182, 179, 181, 197, 214, 236, 1, 17, 49, 59, 66, 64, 45, 35, 14, 1, 246, 222, 223, 224, 232, 3, 15, 29, 43, 53, 67,
+			60, 49, 37, 14, 253, 234, 217, 201, 191, 190, 191, 193, 204, 214, 223, 235, 242, 241, 240, 233, 225, 213, 204, 187, 179, 171, 164, 160, 160, 178,
+			210, 226, 244, 4, 0, 247, 239, 240, 224, 217, 225, 217, 230, 246, 0, 0, 0, 0, 108, 0, 5, 0, 5, 0, 196, 0, 114, 1, 84, 4,
+			252, 8, 88, 12, 91, 14, 32, 27, 70, 18, 46, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 7, 0, 196, 0,
+			114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 19, 47, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 216, 0, 184, 1, 169, 6, 96, 9, 128, 12, 66, 14, 192, 27, 9, 17, 28, 40, 36, 33, 32, 19, 7, 0, 120, 105, 120, 120,
+			120, 120, 30, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 212, 0, 179, 1, 155, 7, 96, 9, 228, 12, 216, 14, 160, 27, 29, 15, 25, 37, 34, 40, 30, 18, 6, 0,
+			120, 105, 180, 120, 120, 120, 24, 96, 99, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 164, 1, 141, 8, 0, 10, 32, 13, 110, 15, 64, 27, 0, 95, 63, 93, 97, 97,
+			76, 45, 16, 0, 120, 105, 120, 120, 120, 120, 15, 75, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 140, 0, 3, 0, 1, 0, 148, 0, 128, 1, 168, 7, 196, 9, 228, 12, 50, 15,
+			96, 25, 50, 6, 8, 22, 28, 22, 24, 15, 6, 3, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 148, 0, 128, 1, 168, 7, 196, 9,
+			228, 12, 50, 15, 96, 25, 90, 6, 8, 22, 28, 22, 24, 15, 6, 3, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 148, 0, 80, 1,
+			32, 8, 60, 10, 42, 13, 50, 15, 96, 25, 0, 1, 4, 11, 14, 12, 12, 7, 3, 1, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 175, 0,
+			4, 0, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 45, 54, 26, 77, 50, 48, 50, 29, 12, 5, 160, 95,
+			120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 70, 120, 40, 116, 76, 72, 75, 44,
+			18, 8, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 104, 0, 104, 1, 72, 8, 120, 10, 52, 13, 40, 15, 96, 25, 60, 97, 36, 104,
+			68, 64, 67, 39, 16, 7, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 104, 0, 104, 1, 72, 8, 100, 10, 72, 13, 40, 15, 96, 25,
+			0, 43, 24, 69, 45, 43, 45, 26, 10, 5, 160, 95, 120, 167, 120, 120, 130, 95, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 90, 0, 3, 0, 1, 0, 192, 0, 144, 1, 168, 7,
+			236, 9, 32, 13, 60, 15, 96, 25, 50, 38, 29, 64, 37, 26, 24, 8, 5, 5, 160, 90, 120, 120, 120, 120, 130, 90, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 192, 0,
+			152, 1, 148, 7, 236, 9, 32, 13, 60, 15, 96, 25, 90, 84, 44, 96, 64, 44, 40, 20, 8, 8, 160, 90, 120, 120, 120, 120, 130, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 192, 0, 152, 1, 168, 7, 236, 9, 32, 13, 60, 15, 96, 25, 0, 31, 26, 58, 41, 29, 21, 14, 4, 5, 160, 90, 120, 120,
+			120, 120, 130, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 195, 0, 4, 0, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15, 104, 25, 45, 64, 13, 76, 60, 68,
+			68, 40, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15, 104, 25, 80, 64,
+			13, 76, 60, 68, 68, 40, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9, 172, 13, 160, 15,
+			104, 25, 70, 53, 11, 69, 54, 62, 61, 36, 13, 11, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 141, 0, 84, 1, 144, 6, 16, 9,
+			172, 13, 160, 15, 104, 25, 0, 34, 9, 55, 43, 49, 49, 29, 11, 8, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0, 4, 0, 1, 0,
+			31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 50, 32, 26, 48, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120,
+			135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 81, 42, 77, 82, 75, 58, 42, 14, 9, 244, 132,
+			159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 73, 40, 73, 77, 71, 55, 40,
+			13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48,
+			51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 31, 1, 176, 1, 255, 6, 225, 9, 104, 13,
+			15, 15, 224, 28, 50, 34, 26, 40, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 31, 1, 184, 1, 255, 6,
+			225, 9, 104, 13, 15, 15, 224, 28, 60, 71, 42, 49, 82, 75, 58, 42, 14, 9, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 31, 1,
+			160, 1, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 60, 40, 39, 77, 71, 55, 40, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180,
+			150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 31, 1, 168, 1, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 0, 26, 26, 26, 51, 47, 36, 27, 9, 5, 244, 132, 159, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 170, 0, 4, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 50, 24, 26, 40, 43, 38,
+			31, 21, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15, 224, 28, 60, 55,
+			42, 60, 64, 57, 49, 34, 14, 9, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9, 104, 13, 15, 15,
+			224, 28, 60, 54, 40, 61, 64, 54, 50, 32, 13, 8, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 31, 1, 77, 2, 255, 6, 225, 9,
+			104, 13, 15, 15, 224, 28, 0, 23, 26, 40, 40, 38, 31, 21, 9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 220, 0, 4, 0, 1, 0,
+			153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 41, 24, 49, 52, 39, 36, 20, 14, 6, 165, 126, 145, 120, 120, 120,
+			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 90, 63, 31, 60, 64, 51, 46, 26, 19, 8, 165, 126,
+			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 153, 0, 192, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 80, 53, 28, 54, 61, 45, 42, 23,
+			17, 7, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 153, 0, 176, 1, 56, 3, 216, 9, 194, 11, 151, 14, 244, 26, 0, 31, 21, 43,
+			46, 34, 31, 18, 12, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 140, 0, 3, 0, 1, 0, 204, 0, 158, 2, 252, 4, 60, 10, 168, 12,
+			10, 15, 0, 28, 50, 54, 35, 56, 76, 42, 50, 25, 14, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 204, 0, 93, 2, 208, 4,
+			60, 10, 168, 12, 10, 15, 0, 28, 90, 108, 43, 86, 98, 54, 65, 32, 19, 8, 170, 165, 150, 120, 120, 120, 170, 180, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 204, 0,
+			93, 2, 252, 4, 60, 10, 168, 12, 10, 15, 0, 28, 0, 52, 31, 61, 69, 38, 46, 22, 13, 9, 167, 165, 150, 120, 120, 120, 167, 180,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			100, 0, 4, 0, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 45, 3, 73, 36, 21, 21, 30, 12, 7,
+			177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 50, 77, 4, 96, 48, 28,
+			28, 40, 16, 10, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15, 144, 26, 70, 61,
+			3, 85, 42, 24, 24, 35, 14, 8, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 64, 1, 132, 3, 56, 9, 12, 13, 60, 15,
+			144, 26, 0, 30, 2, 60, 30, 17, 17, 25, 10, 6, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 50, 0, 5, 0, 1, 0, 135, 0, 96, 1,
+			138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 50, 48, 12, 67, 56, 50, 45, 32, 10, 11, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			135, 0, 96, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 115, 80, 16, 86, 72, 64, 58, 41, 13, 14, 178, 122, 132, 123, 123, 141,
+			187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 135, 0, 96, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 55, 51, 12, 69, 58, 51, 47, 33, 10, 11, 178, 122,
+			132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 135, 0, 88, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 40, 43, 10, 64, 51, 48, 44, 31,
+			10, 10, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 135, 0, 80, 1, 138, 6, 68, 9, 128, 12, 128, 14, 153, 24, 0, 40, 9, 63,
+			46, 40, 35, 30, 8, 8, 181, 122, 132, 123, 123, 141, 190, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 70, 6, 212, 8, 148, 12,
+			41, 14, 64, 26, 42, 56, 18, 76, 56, 42, 42, 39, 12, 8, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 104, 1, 26, 6,
+			212, 8, 148, 12, 116, 14, 192, 25, 40, 87, 23, 91, 86, 77, 60, 55, 19, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 88, 0,
+			104, 1, 48, 6, 172, 8, 148, 12, 116, 14, 192, 25, 50, 80, 24, 94, 68, 74, 55, 53, 21, 8, 167, 120, 135, 120, 120, 120, 107, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 84, 0, 64, 1, 106, 5, 192, 8, 68, 12, 116, 14, 192, 25, 67, 39, 12, 67, 43, 38, 32, 31, 14, 8, 165, 135, 135, 120,
+			120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 34, 17, 60, 37, 18, 21, 21, 10, 8,
+			165, 135, 135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 139, 0, 3, 0, 1, 0, 112, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14, 96, 27, 50, 60,
+			34, 66, 80, 45, 47, 36, 18, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 13, 2, 161, 5, 36, 9, 188, 12, 116, 14,
+			96, 27, 90, 87, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5, 36, 9,
+			188, 12, 116, 14, 96, 27, 0, 46, 30, 58, 70, 39, 41, 32, 16, 9, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 105, 0, 4, 0, 5, 0,
+			88, 0, 24, 1, 6, 9, 140, 10, 32, 13, 191, 14, 224, 28, 30, 19, 10, 42, 37, 34, 45, 22, 7, 0, 135, 120, 135, 120, 120, 120,
+			30, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 7, 0, 88, 0, 24, 1, 174, 8, 196, 9, 32, 13, 91, 14, 224, 28, 17, 24, 7, 55, 33, 35, 37, 24, 7, 0, 135, 90,
+			135, 120, 120, 120, 30, 105, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 5, 0, 88, 0, 84, 1, 188, 7, 36, 9, 168, 12, 191, 14, 224, 28, 58, 20, 5, 45, 20, 48, 40, 26,
+			5, 0, 135, 135, 135, 120, 120, 120, 30, 90, 75, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 144, 1, 56, 7, 212, 8, 168, 12, 191, 14, 224, 28, 0, 86, 34, 108,
+			58, 77, 61, 37, 10, 0, 120, 105, 120, 120, 120, 120, 30, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 5, 0, 180, 0, 248, 2, 185, 8, 200, 10, 32, 13,
+			116, 14, 0, 29, 45, 13, 4, 8, 23, 36, 46, 26, 7, 0, 120, 62, 150, 120, 120, 120, 45, 92, 90, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 196, 0, 229, 1, 136, 6,
+			36, 9, 28, 12, 116, 14, 0, 28, 50, 37, 32, 53, 66, 51, 49, 29, 6, 0, 120, 120, 150, 120, 120, 120, 75, 105, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0,
+			7, 3, 43, 4, 240, 10, 148, 12, 41, 14, 96, 27, 59, 126, 29, 73, 116, 52, 45, 45, 15, 7, 167, 165, 135, 120, 120, 120, 167, 120,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 228, 0, 7, 3, 10, 4, 240, 10, 52, 13, 41, 14, 224, 27, 58, 116, 30, 82, 97, 55, 57, 54, 13, 8, 167, 135, 150, 120,
+			120, 120, 167, 90, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 228, 0, 243, 2, 255, 3, 160, 10, 148, 12, 41, 14, 224, 27, 38, 71, 34, 67, 87, 37, 41, 38, 14, 8,
+			167, 135, 120, 120, 120, 120, 167, 75, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 164, 0, 27, 3, 98, 4, 20, 10, 148, 12, 41, 14, 224, 27, 0, 40, 24, 60, 59, 29,
+			25, 25, 8, 8, 167, 120, 120, 120, 120, 120, 227, 105, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 154, 0, 4, 0, 1, 0, 248, 0, 137, 3, 40, 5, 140, 10, 112, 13, 35, 15,
+			32, 28, 50, 60, 34, 70, 69, 40, 27, 24, 9, 8, 210, 150, 105, 120, 120, 120, 255, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 72, 1, 157, 3, 40, 5, 140, 10,
+			112, 13, 191, 14, 32, 28, 40, 66, 42, 75, 65, 49, 43, 27, 13, 7, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 72, 1, 157, 3,
+			40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 65, 72, 41, 80, 67, 56, 42, 26, 13, 6, 210, 150, 105, 120, 120, 120, 240, 165, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			16, 1, 128, 3, 60, 5, 100, 10, 112, 13, 191, 14, 160, 28, 0, 54, 35, 70, 63, 37, 33, 26, 8, 9, 210, 135, 105, 120, 120, 120,
+			255, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 154, 0, 4, 0, 1, 0, 248, 0, 137, 3, 40, 5, 140, 10, 112, 13, 35, 15, 32, 28, 50, 60, 34, 70, 69, 40, 27, 24,
+			9, 8, 210, 150, 105, 120, 120, 120, 255, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 40, 102, 42, 95,
+			85, 49, 43, 27, 13, 7, 207, 150, 105, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 72, 1, 157, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28,
+			65, 97, 41, 93, 83, 56, 42, 26, 13, 6, 210, 150, 105, 120, 120, 120, 240, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 16, 1, 128, 3, 60, 5, 100, 10, 112, 13,
+			191, 14, 160, 28, 0, 54, 35, 70, 63, 37, 33, 26, 8, 9, 210, 135, 105, 120, 120, 120, 255, 165, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 50, 0, 4, 0, 5, 0, 4, 0,
+			16, 1, 220, 5, 136, 9, 58, 14, 216, 19, 224, 21, 40, 5, 8, 23, 10, 6, 6, 6, 4, 4, 150, 125, 137, 137, 150, 175, 150, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			5, 0, 4, 0, 16, 1, 220, 5, 136, 9, 58, 14, 216, 19, 224, 21, 10, 6, 9, 25, 11, 6, 6, 6, 5, 4, 150, 125, 137, 137,
+			150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 5, 0, 4, 0, 16, 1, 220, 5, 144, 9, 58, 14, 216, 19, 224, 21, 0, 6, 9, 26, 12, 7, 7, 7, 5, 4,
+			150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 17, 0, 4, 0, 16, 1, 220, 5, 160, 9, 58, 14, 216, 19, 224, 21, 0, 6, 9, 25, 11, 6,
+			6, 6, 5, 4, 150, 125, 137, 137, 150, 175, 150, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 253, 2, 193, 0, 1, 254, 252, 255, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
+			2, 4, 6, 8, 9, 11, 10, 9, 8, 6, 5, 5, 6, 7, 8, 10, 11, 12, 13, 13, 12, 11, 10, 10, 9, 8, 8, 8, 8, 9,
+			9, 8, 7, 5, 3, 3, 4, 4, 1, 254, 251, 251, 251, 252, 252, 251, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253, 251, 245, 236, 226,
+			218, 215, 216, 221, 227, 234, 238, 240, 239, 237, 234, 231, 229, 228, 230, 234, 238, 242, 246, 252, 0, 6, 10, 15, 17, 18, 16, 13, 9, 6,
+			5, 7, 11, 17, 22, 26, 28, 28, 27, 23, 19, 15, 10, 7, 4, 1, 0, 255, 255, 254, 254, 254, 254, 253, 252, 250, 247, 243, 240, 237,
+			235, 234, 235, 237, 239, 242, 244, 246, 248, 249, 250, 251, 252, 253, 254, 254, 255, 0, 0, 1, 3, 4, 5, 6, 6, 5, 4, 2, 0, 253,
+			252, 251, 252, 254, 0, 3, 5, 5, 5, 3, 1, 0, 254, 253, 251, 250, 250, 251, 253, 0, 1, 3, 3, 3, 3, 2, 1, 0, 0, 0,
+			1, 2, 3, 4, 4, 4, 4, 3, 3, 3, 4, 4, 4, 4, 3, 2, 1, 0, 0, 255, 255, 255, 255, 0, 0, 1, 2, 3, 2, 0,
+			255, 253, 252, 253, 254, 0, 0, 2, 3, 4, 4, 3, 2, 2, 2, 3, 3, 2, 0, 0, 0, 2, 4, 5, 6, 6, 4, 2, 0, 254,
+			253, 252, 251, 250, 250, 252, 255, 0, 0, 0, 255, 255, 0, 0, 255, 253, 252, 252, 253, 253, 253, 252, 252, 253, 252, 251, 250, 252, 253, 252,
+			250, 251, 0, 8, 14, 16, 14, 13, 13, 13, 11, 8, 6, 6, 7, 9, 15, 23, 32, 39, 40, 27, 253, 209, 166, 138, 130, 142, 167, 197,
+			229, 255, 12, 11, 0, 241, 231, 228, 231, 236, 242, 248, 253, 0, 3, 9, 20, 36, 53, 67, 73, 68, 54, 34, 13, 253, 242, 239, 244, 255,
+			12, 23, 27, 23, 14, 3, 249, 240, 234, 230, 229, 227, 224, 219, 215, 212, 214, 220, 230, 240, 249, 254, 255, 250, 243, 235, 229, 228, 232, 241,
+			252, 6, 15, 21, 24, 25, 24, 22, 22, 21, 20, 17, 14, 10, 5, 2, 0, 0, 3, 7, 11, 13, 12, 7, 0, 248, 240, 234, 229, 228,
+			229, 232, 236, 240, 242, 244, 245, 246, 247, 248, 250, 253, 255, 0, 0, 0, 0, 2, 5, 10, 15, 20, 25, 26, 26, 23, 19, 15, 11, 8,
+			7, 6, 5, 4, 4, 3, 3, 3, 3, 3, 2, 0, 254, 250, 245, 241, 237, 237, 238, 242, 246, 252, 1, 7, 11, 12, 12, 11, 10, 8,
+			6, 6, 6, 8, 10, 12, 15, 17, 20, 22, 24, 24, 21, 15, 9, 3, 0, 252, 249, 249, 251, 255, 2, 3, 2, 0, 255, 252, 250, 247,
+			245, 246, 249, 252, 254, 254, 252, 252, 252, 255, 3, 8, 11, 12, 9, 6, 3, 2, 1, 2, 3, 4, 6, 7, 8, 9, 9, 8, 6, 4,
+			3, 3, 4, 7, 9, 9, 8, 5, 2, 1, 3, 7, 12, 14, 12, 4, 249, 234, 221, 213, 214, 223, 237, 254, 13, 23, 24, 17, 6, 252,
+			243, 237, 238, 244, 254, 4, 5, 0, 252, 252, 252, 247, 237, 226, 218, 215, 216, 221, 227, 234, 239, 240, 239, 238, 235, 232, 230, 229, 231, 234,
+			239, 243, 247, 252, 1, 6, 11, 15, 17, 18, 17, 14, 10, 7, 6, 8, 12, 17, 23, 27, 29, 29, 27, 24, 19, 15, 11, 7, 4, 1,
+			0, 0, 255, 254, 254, 254, 254, 254, 253, 250, 247, 244, 241, 238, 235, 234, 235, 237, 240, 242, 244, 246, 248, 250, 251, 252, 252, 253, 254, 255,
+			0, 0, 1, 3, 4, 5, 6, 7, 7, 6, 5, 2, 0, 254, 252, 251, 252, 255, 1, 3, 5, 6, 5, 4, 2, 0, 255, 253, 251, 250,
+			251, 252, 254, 0, 2, 3, 3, 3, 3, 3, 2, 0, 0, 0, 1, 2, 3, 4, 5, 5, 4, 4, 4, 4, 4, 5, 5, 4, 4, 3,
+			2, 0, 0, 0, 255, 255, 0, 0, 0, 1, 3, 3, 3, 1, 0, 254, 253, 253, 255, 0, 1, 3, 4, 4, 5, 4, 3, 2, 2, 3,
+			3, 3, 1, 1, 1, 3, 5, 6, 7, 6, 5, 2, 0, 255, 253, 252, 251, 250, 251, 253, 255, 1, 1, 0, 255, 0, 0, 0, 0, 254,
+			252, 0, 0, 0, 50, 0, 5, 0, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 45, 35, 17, 54, 37, 34,
+			34, 31, 8, 11, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 50, 68,
+			24, 76, 52, 48, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14,
+			100, 25, 85, 55, 21, 68, 46, 43, 43, 39, 10, 14, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 16, 1, 28, 7, 232, 8,
+			228, 12, 96, 14, 100, 25, 40, 43, 19, 60, 41, 38, 38, 35, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 16, 1,
+			8, 7, 212, 8, 228, 12, 96, 14, 100, 25, 0, 29, 15, 50, 34, 29, 31, 29, 7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 235, 0,
+			5, 0, 1, 0, 244, 0, 35, 2, 48, 7, 232, 9, 38, 13, 144, 14, 176, 28, 45, 28, 23, 46, 45, 48, 37, 27, 8, 6, 202, 118,
+			143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 244, 0, 35, 2, 48, 7, 232, 9, 38, 13, 144, 14, 176, 28, 80, 82, 40, 79, 77, 81, 63, 46,
+			14, 10, 202, 118, 143, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 238, 0, 18, 2, 230, 6, 214, 9, 6, 13, 144, 14, 122, 28, 80, 72, 37, 74,
+			71, 73, 58, 41, 14, 9, 198, 118, 144, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 120, 1, 192, 3, 46, 9, 224, 11, 136, 14, 144, 26,
+			30, 48, 26, 59, 47, 37, 32, 21, 15, 7, 162, 122, 155, 120, 120, 120, 162, 120, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 184, 0, 120, 1, 212, 3, 56, 9, 224, 11,
+			136, 14, 144, 26, 0, 29, 20, 45, 39, 32, 28, 17, 13, 5, 162, 125, 155, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 48, 0, 3, 0, 5, 0, 168, 0,
+			160, 1, 232, 3, 216, 9, 72, 13, 168, 17, 106, 24, 25, 10, 31, 19, 3, 3, 7, 3, 7, 11, 97, 125, 137, 137, 150, 175, 97, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			9, 0, 168, 0, 160, 1, 232, 3, 216, 9, 72, 13, 168, 17, 106, 24, 23, 10, 31, 19, 3, 3, 7, 3, 7, 7, 97, 125, 137, 137,
+			150, 175, 97, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 168, 0, 160, 1, 232, 3, 216, 9, 72, 13, 168, 17, 106, 24, 0, 10, 31, 19, 3, 3, 7, 3, 7, 7,
+			97, 125, 137, 137, 150, 175, 97, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 175, 0, 4, 0, 1, 0, 24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 45, 44,
+			27, 62, 53, 40, 30, 19, 9, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 96, 3, 0, 5, 140, 10, 132, 13, 140, 15,
+			32, 28, 70, 93, 40, 90, 76, 58, 43, 27, 13, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0,
+			50, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 24, 1, 96, 3, 0, 5, 140, 10,
+			132, 13, 140, 15, 32, 28, 60, 83, 38, 85, 72, 55, 41, 26, 12, 6, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54,
+			0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 24, 1, 96, 3,
+			0, 5, 140, 10, 132, 13, 140, 15, 32, 28, 0, 39, 26, 58, 50, 38, 28, 18, 8, 4, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44,
+			65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0,
+			4, 0, 33, 0, 152, 0, 40, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 52, 30, 12, 39, 42, 51, 51, 33, 12, 6, 167, 190,
+			120, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 40, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 75, 47, 15, 49, 53, 64, 64, 41,
+			16, 7, 167, 190, 120, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 40, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 79, 38, 13, 44,
+			47, 58, 58, 37, 14, 6, 167, 190, 120, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 84, 0, 240, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26,
+			0, 21, 11, 34, 38, 37, 38, 21, 9, 7, 175, 200, 105, 120, 120, 120, 175, 200, 120, 44, 45, 70, 130, 60, 170, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 253, 0, 152, 2, 120, 5,
+			238, 9, 66, 13, 215, 14, 0, 28, 50, 35, 35, 47, 62, 34, 31, 23, 11, 2, 200, 140, 140, 120, 120, 120, 150, 180, 150, 44, 45, 70,
+			130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 253, 0,
+			152, 2, 120, 5, 238, 9, 66, 13, 215, 14, 0, 28, 60, 66, 48, 64, 84, 46, 43, 31, 15, 3, 200, 140, 140, 120, 120, 120, 150, 180,
+			150, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 253, 0, 152, 2, 120, 5, 238, 9, 66, 13, 215, 14, 0, 28, 40, 59, 45, 61, 79, 44, 40, 29, 14, 3, 200, 140, 140, 120,
+			120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 253, 0, 152, 2, 120, 5, 238, 9, 66, 13, 215, 14, 0, 28, 0, 31, 33, 44, 58, 32, 29, 21, 10, 2,
+			200, 140, 140, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 150, 0, 4, 0, 1, 0, 186, 0, 152, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 50, 37,
+			31, 52, 63, 36, 29, 23, 13, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 186, 0, 152, 2, 128, 5, 156, 9, 248, 12, 141, 14,
+			160, 27, 60, 68, 43, 72, 86, 50, 39, 32, 18, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 186, 0, 152, 2, 128, 5, 156, 9,
+			248, 12, 141, 14, 160, 27, 40, 61, 40, 68, 81, 47, 37, 30, 17, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44, 45, 70, 130, 59,
+			155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 186, 0, 152, 2,
+			128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 0, 32, 29, 49, 59, 34, 27, 22, 12, 0, 180, 145, 125, 120, 120, 120, 200, 127, 120, 44,
+			45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 247, 0,
+			5, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 45, 41, 33, 55, 66, 38, 30, 24, 13, 0, 180, 150,
+			125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 60, 62, 41, 68, 82, 47, 37, 30,
+			17, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 186, 0, 146, 2, 128, 5, 156, 9, 248, 12, 141, 14, 160, 27, 80, 49, 36, 60,
+			72, 42, 33, 27, 15, 0, 180, 150, 125, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 208, 0, 136, 1, 8, 2, 20, 10, 216, 11, 234, 13, 15, 28,
+			62, 26, 39, 30, 16, 28, 28, 19, 6, 5, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 165, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 208, 0, 136, 1, 8, 2, 20, 10, 216, 11,
+			234, 13, 15, 28, 0, 16, 32, 22, 14, 24, 24, 17, 5, 4, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 59, 175, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 7, 0, 1, 0, 206, 0,
+			200, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 24, 49, 28, 50, 69, 23, 36, 20, 10, 5, 177, 100, 131, 120, 120, 120, 105, 135,
+			135, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 206, 0, 200, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 55, 77, 35, 63, 86, 28, 45, 25, 13, 7, 177, 100, 131, 120,
+			120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 206, 0, 200, 1, 72, 3, 38, 10, 208, 11, 47, 14, 159, 27, 65, 69, 33, 59, 82, 27, 43, 23, 12, 6,
+			177, 100, 131, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 165, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 5, 0, 201, 0, 184, 1, 80, 5, 16, 9, 243, 11, 67, 14, 134, 27, 25, 39, 26, 56, 46, 36,
+			43, 24, 12, 6, 176, 151, 153, 120, 120, 120, 105, 177, 157, 44, 45, 70, 130, 60, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 120, 1, 244, 6, 172, 8, 168, 12, 0, 15, 160, 26, 48, 30,
+			14, 43, 43, 39, 46, 32, 15, 7, 167, 197, 120, 120, 120, 120, 167, 197, 120, 44, 45, 70, 130, 60, 170, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 56, 1, 248, 7, 220, 10, 12, 13, 0, 15,
+			160, 26, 30, 27, 12, 42, 35, 29, 35, 29, 13, 6, 167, 200, 120, 120, 120, 120, 167, 200, 120, 44, 45, 70, 130, 60, 170, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 56, 1, 248, 7, 220, 10,
+			52, 13, 0, 15, 160, 26, 0, 21, 11, 37, 28, 28, 28, 23, 12, 5, 167, 200, 120, 120, 120, 120, 167, 200, 120, 44, 45, 70, 130, 60,
+			170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 7, 0, 1, 0,
+			232, 0, 218, 2, 222, 3, 60, 10, 224, 11, 222, 13, 160, 28, 40, 57, 32, 56, 70, 33, 33, 22, 9, 7, 230, 150, 120, 120, 120, 120,
+			185, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 232, 0, 158, 2, 178, 3, 60, 10, 224, 11, 222, 13, 32, 28, 49, 114, 28, 81, 103, 42, 43, 28, 15, 6, 182, 150,
+			120, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 228, 0, 138, 2, 222, 3, 14, 10, 232, 11, 244, 13, 10, 28, 65, 105, 30, 83, 101, 46, 44, 29,
+			16, 7, 181, 145, 123, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 37, 0, 184, 0, 209, 1, 106, 5, 112, 8, 48, 12, 191, 14, 64, 27, 22, 49, 37, 68,
+			39, 59, 39, 22, 15, 7, 167, 100, 152, 120, 120, 120, 137, 115, 167, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 208, 0, 149, 1, 246, 6, 112, 8, 128, 12, 191, 14, 64, 27,
+			48, 45, 32, 57, 36, 60, 35, 23, 14, 7, 155, 105, 150, 120, 120, 120, 125, 150, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 160, 0, 54, 1, 199, 7, 136, 9, 228, 12,
+			191, 14, 64, 27, 26, 36, 25, 53, 36, 30, 41, 27, 16, 7, 155, 105, 135, 120, 120, 120, 125, 105, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 160, 0, 54, 1, 210, 7,
+			252, 8, 92, 13, 35, 15, 64, 28, 0, 25, 27, 45, 27, 21, 33, 22, 13, 8, 157, 105, 135, 120, 120, 120, 82, 105, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 5, 0,
+			1, 0, 88, 1, 128, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 46, 46, 33, 54, 65, 48, 36, 27, 9, 8, 255, 150, 180, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 88, 1, 133, 2, 169, 6, 216, 9, 192, 13, 185, 15, 32, 29, 61, 85, 45, 74, 89, 66, 50, 38, 13, 8,
+			255, 150, 180, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 36, 1, 64, 2, 241, 5, 12, 9, 148, 12, 20, 15, 173, 28, 48, 56, 30, 66, 71, 45,
+			36, 29, 13, 7, 222, 132, 153, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 174, 1, 156, 4, 172, 8, 204, 11, 141, 14, 224, 28, 46, 36,
+			26, 61, 37, 26, 17, 15, 8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 134, 1, 189, 3, 92, 8, 204, 11, 141, 14,
+			224, 28, 0, 29, 25, 53, 35, 20, 14, 11, 8, 7, 155, 120, 75, 120, 120, 120, 110, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 195, 0, 4, 0, 1, 0, 112, 0, 120, 1,
+			235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 45, 28, 23, 48, 46, 43, 40, 28, 15, 6, 168, 135, 148, 120, 120, 120, 107, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			112, 0, 120, 1, 235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 75, 39, 27, 58, 54, 51, 47, 34, 18, 7, 168, 135, 148, 120, 120, 120,
+			107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 112, 0, 120, 1, 235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 75, 35, 25, 55, 51, 48, 45, 32, 17, 6, 168, 135,
+			148, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 112, 0, 120, 1, 235, 5, 156, 9, 208, 12, 60, 15, 90, 26, 0, 28, 23, 48, 46, 43, 40, 28,
+			15, 6, 168, 135, 148, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 105, 0, 4, 0, 1, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27,
+			30, 13, 18, 34, 28, 16, 14, 14, 5, 3, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 116, 0, 13, 2, 161, 5, 232, 8, 188, 12,
+			116, 14, 96, 27, 45, 16, 20, 38, 32, 18, 16, 16, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 13, 2, 161, 5,
+			232, 8, 188, 12, 116, 14, 96, 27, 30, 16, 20, 38, 32, 18, 16, 16, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0,
+			13, 2, 161, 5, 232, 8, 188, 12, 116, 14, 96, 27, 0, 11, 15, 29, 35, 19, 20, 16, 8, 4, 167, 150, 135, 120, 120, 120, 197, 120,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			80, 0, 4, 0, 1, 0, 104, 0, 44, 1, 172, 5, 84, 11, 12, 13, 135, 15, 32, 28, 0, 32, 17, 53, 34, 32, 55, 26, 8, 0,
+			150, 120, 150, 120, 120, 120, 120, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 11, 0, 104, 0, 44, 1, 172, 5, 84, 11, 12, 13, 135, 15, 32, 28, 40, 23, 14, 45, 29, 27,
+			47, 22, 7, 0, 150, 120, 150, 120, 120, 120, 120, 105, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 9, 0, 136, 0, 184, 1, 48, 6, 84, 11, 92, 13, 210, 15, 32, 28, 40, 14,
+			13, 41, 31, 28, 27, 13, 5, 0, 150, 105, 150, 120, 120, 120, 120, 45, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 136, 0, 104, 1, 152, 8, 84, 11, 32, 13, 210, 15,
+			32, 28, 0, 76, 20, 78, 80, 78, 76, 34, 10, 0, 150, 150, 120, 120, 120, 120, 120, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 103, 0, 4, 0, 5, 0, 236, 0, 124, 1,
+			12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 40, 14, 48, 29, 21, 13, 11, 13, 7, 0, 120, 60, 90, 120, 120, 120, 30, 135, 105, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 7, 0,
+			236, 0, 144, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 15, 12, 46, 28, 22, 16, 14, 16, 10, 0, 120, 60, 90, 120, 120, 120,
+			30, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 236, 0, 164, 1, 122, 7, 80, 10, 172, 13, 235, 15, 128, 27, 49, 9, 28, 24, 31, 32, 28, 18, 6, 0, 120, 75,
+			90, 120, 120, 120, 30, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 204, 0, 144, 1, 97, 8, 20, 10, 92, 13, 135, 15, 128, 27, 0, 66, 51, 66, 65, 81, 81, 52,
+			12, 0, 120, 105, 150, 120, 120, 120, 45, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 140, 0, 3, 0, 1, 0, 148, 0, 128, 1, 32, 8, 60, 10, 42, 13, 50, 15, 96, 25,
+			50, 6, 8, 21, 26, 24, 23, 14, 6, 2, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 52, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 148, 0, 128, 1, 32, 8, 60, 10, 42, 13,
+			50, 15, 96, 25, 90, 7, 8, 22, 28, 25, 24, 15, 6, 2, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70, 130, 54, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 148, 0, 128, 1, 32, 8,
+			60, 10, 42, 13, 50, 15, 96, 25, 0, 1, 4, 11, 14, 12, 12, 7, 3, 1, 160, 92, 120, 143, 120, 120, 130, 95, 120, 44, 45, 70,
+			130, 46, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 175, 0, 4, 0,
+			1, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 45, 50, 29, 56, 64, 39, 34, 24, 17, 5, 164, 141, 150, 120,
+			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 70, 109, 43, 83, 95, 57, 51, 36, 26, 8,
+			164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 60, 88, 39, 75, 85, 51,
+			46, 32, 23, 7, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 240, 1, 204, 3, 196, 9, 104, 12, 166, 14, 204, 26, 0, 44,
+			27, 53, 60, 36, 32, 23, 16, 5, 164, 141, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 120, 0, 7, 0, 33, 0, 152, 0, 32, 1, 224, 8, 4, 11,
+			52, 13, 0, 15, 160, 26, 52, 43, 6, 65, 57, 58, 58, 28, 13, 6, 175, 105, 120, 120, 120, 120, 175, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 24, 1,
+			232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 50, 69, 9, 81, 72, 72, 73, 35, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 40, 50, 8, 69, 61, 61, 62, 30, 14, 7, 167, 105, 120, 120, 120, 120,
+			167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 30, 44, 7, 65, 57, 58, 58, 28, 13, 6, 167, 105,
+			120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 24, 1, 252, 8, 4, 11, 52, 13, 0, 15, 160, 26, 48, 62, 9, 77, 68, 69, 69, 33,
+			16, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 24, 1, 252, 8, 4, 11, 12, 13, 216, 14, 64, 26, 60, 44, 9, 58,
+			58, 61, 62, 33, 11, 8, 167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 84, 0, 200, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26,
+			0, 21, 7, 40, 41, 38, 39, 22, 9, 8, 175, 105, 105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0, 141, 0, 80, 1, 244, 6,
+			236, 9, 32, 13, 160, 15, 104, 25, 45, 40, 9, 60, 53, 53, 51, 31, 11, 9, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 141, 0,
+			80, 1, 244, 6, 236, 9, 32, 13, 160, 15, 104, 25, 80, 64, 12, 76, 68, 68, 65, 39, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 143, 0, 66, 1, 116, 7, 51, 10, 27, 13, 109, 15, 159, 25, 80, 48, 10, 64, 59, 60, 58, 34, 12, 10, 172, 113, 125, 121,
+			121, 129, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 152, 0, 24, 1, 232, 8, 4, 11, 12, 13, 216, 14, 64, 26, 45, 39, 9, 55, 55, 58, 59, 31, 11, 7,
+			167, 105, 120, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 84, 0, 200, 0, 94, 9, 4, 11, 32, 13, 60, 15, 64, 26, 0, 22, 8, 41, 41, 39,
+			40, 23, 10, 8, 175, 105, 105, 120, 120, 120, 175, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182,
+			200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0, 1, 0, 84, 0, 104, 1, 180, 5, 212, 8, 148, 12, 41, 14,
+			64, 26, 42, 51, 17, 72, 57, 40, 40, 37, 11, 8, 162, 150, 135, 120, 120, 120, 102, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 84, 0, 104, 1, 140, 5, 212, 8,
+			148, 12, 116, 14, 192, 25, 40, 79, 21, 87, 82, 73, 57, 52, 18, 8, 167, 135, 135, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 88, 0, 96, 1,
+			120, 5, 172, 8, 148, 12, 116, 14, 192, 25, 50, 74, 22, 89, 68, 70, 52, 50, 20, 8, 167, 120, 135, 120, 120, 120, 107, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			109, 0, 64, 1, 113, 4, 187, 8, 23, 12, 121, 14, 244, 25, 67, 49, 11, 68, 57, 41, 37, 33, 15, 8, 165, 135, 138, 120, 120, 120,
+			162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 84, 0, 34, 1, 255, 3, 172, 8, 28, 12, 116, 14, 192, 25, 0, 30, 16, 57, 35, 17, 20, 20, 10, 8, 165, 135,
+			135, 120, 120, 120, 105, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 235, 0, 6, 0, 1, 0, 0, 1, 43, 2, 64, 6, 243, 9, 229, 12, 226, 14, 112, 28, 45, 37, 27, 53,
+			51, 46, 38, 25, 10, 5, 222, 133, 154, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 19, 0, 0, 1, 43, 2, 241, 5, 243, 9, 229, 12, 226, 14, 112, 28,
+			40, 46, 31, 59, 57, 52, 42, 28, 11, 6, 222, 133, 154, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 162, 0, 16, 2, 16, 4, 216, 9, 58, 12,
+			176, 14, 121, 27, 40, 48, 30, 55, 67, 39, 35, 26, 16, 6, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 162, 0, 16, 2, 16, 4,
+			216, 9, 58, 12, 176, 14, 121, 27, 70, 54, 32, 58, 71, 41, 37, 27, 16, 6, 169, 143, 139, 120, 120, 120, 197, 135, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 162, 0,
+			16, 2, 16, 4, 216, 9, 58, 12, 176, 14, 121, 27, 40, 60, 34, 62, 74, 43, 39, 28, 17, 6, 169, 143, 139, 120, 120, 120, 197, 135,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			1, 0, 162, 0, 16, 2, 16, 4, 216, 9, 58, 12, 176, 14, 121, 27, 0, 38, 27, 49, 59, 34, 31, 23, 14, 5, 169, 143, 139, 120,
+			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0,
+			0, 250, 0, 0, 255, 0, 5, 0, 1, 0, 243, 0, 200, 1, 8, 7, 216, 9, 28, 13, 170, 14, 164, 28, 45, 36, 23, 48, 54, 53,
+			41, 30, 9, 6, 214, 120, 143, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 237, 0, 196, 1, 174, 6, 202, 9, 27, 13, 183, 14, 116, 28, 70, 57,
+			27, 62, 67, 63, 49, 38, 12, 8, 210, 120, 140, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 183, 0, 160, 1, 123, 3, 71, 9, 14, 13, 46, 15,
+			193, 26, 80, 82, 23, 87, 71, 32, 30, 40, 15, 9, 181, 124, 113, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 176, 0, 88, 1, 32, 3, 56, 9,
+			12, 13, 60, 15, 144, 26, 60, 64, 3, 86, 50, 25, 25, 36, 14, 9, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0, 88, 1,
+			32, 3, 56, 9, 12, 13, 60, 15, 144, 26, 0, 31, 2, 60, 35, 17, 17, 25, 10, 6, 177, 125, 110, 120, 120, 120, 177, 125, 125, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 255, 0,
+			5, 0, 1, 0, 168, 0, 16, 2, 112, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 52, 20, 51, 63, 38, 35, 17, 13, 5, 167, 135,
+			150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 3, 0, 195, 0, 156, 2, 68, 4, 108, 10, 97, 12, 235, 14, 60, 27, 70, 83, 34, 75, 82, 52, 45, 26,
+			16, 6, 201, 149, 155, 130, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 231, 0, 105, 3, 125, 5, 136, 10, 178, 13, 105, 15, 97, 27, 80, 78, 43, 85,
+			82, 54, 44, 30, 14, 5, 246, 167, 162, 143, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10, 216, 13, 120, 15, 102, 27,
+			60, 83, 41, 81, 77, 51, 41, 29, 13, 5, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 236, 0, 128, 3, 160, 5, 140, 10, 216, 13,
+			120, 15, 102, 27, 0, 56, 34, 67, 63, 42, 34, 23, 11, 4, 251, 170, 163, 145, 120, 120, 255, 174, 173, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 20, 0, 3, 0, 5, 0, 136, 0,
+			216, 1, 64, 6, 32, 8, 128, 12, 100, 15, 124, 21, 20, 14, 3, 36, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212,
+			187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			1, 0, 136, 0, 216, 1, 64, 6, 32, 8, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0, 200, 212, 187, 187,
+			205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 136, 0, 216, 1, 64, 6, 32, 8, 128, 12, 100, 15, 124, 21, 0, 11, 3, 32, 21, 7, 3, 7, 0, 0,
+			200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 20, 0, 3, 0, 5, 0, 136, 0, 8, 2, 120, 5, 148, 7, 128, 12, 100, 15, 124, 21, 20, 4,
+			4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 136, 0, 8, 2, 120, 5, 148, 7, 128, 12, 100, 15,
+			124, 21, 0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 8, 2, 120, 5, 148, 7,
+			128, 12, 100, 15, 124, 21, 0, 4, 4, 20, 16, 8, 4, 8, 0, 0, 200, 212, 187, 187, 205, 175, 200, 212, 187, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 8, 1, 23, 0, 255, 2,
+			250, 255, 251, 0, 253, 255, 253, 252, 1, 2, 2, 1, 253, 8, 5, 6, 7, 14, 13, 12, 17, 13, 16, 5, 164, 135, 240, 0, 35, 45,
+			3, 43, 36, 3, 19, 0, 247, 11, 247, 252, 12, 228, 242, 255, 240, 250, 251, 3, 3, 244, 8, 13, 1, 248, 3, 3, 2, 25, 11, 0,
+			16, 22, 6, 22, 212, 179, 243, 250, 37, 8, 255, 19, 4, 12, 254, 239, 7, 240, 219, 252, 239, 251, 42, 29, 42, 28, 15, 28, 249, 214,
+			226, 225, 240, 240, 240, 15, 9, 245, 23, 14, 4, 246, 238, 11, 21, 16, 5, 249, 251, 23, 6, 9, 5, 248, 241, 251, 246, 255, 227, 234,
+			255, 5, 20, 13, 0, 253, 252, 247, 42, 12, 247, 248, 6, 30, 30, 0, 3, 18, 191, 220, 208, 229, 20, 255, 12, 19, 5, 53, 25, 245,
+			19, 215, 7, 47, 251, 12, 213, 238, 248, 247, 4, 229, 37, 250, 228, 246, 12, 20, 37, 3, 230, 33, 231, 223, 243, 40, 76, 233, 219, 36,
+			242, 246, 242, 41, 16, 230, 220, 215, 0, 21, 251, 224, 251, 54, 217, 217, 22, 40, 26, 42, 59, 27, 220, 15, 72, 244, 207, 167, 168, 209,
+			3, 239, 12, 33, 63, 6, 218, 45, 55, 222, 243, 44, 11, 241, 23, 29, 247, 250, 16, 193, 238, 25, 218, 204, 251, 37, 16, 218, 24, 18,
+			213, 50, 43, 230, 3, 22, 230, 243, 4, 43, 25, 243, 18, 232, 222, 32, 6, 226, 228, 242, 229, 212, 50, 0, 5, 0, 1, 0, 132, 0,
+			24, 1, 12, 8, 36, 9, 228, 12, 96, 14, 100, 25, 45, 35, 17, 54, 37, 31, 34, 31, 8, 11, 160, 90, 135, 120, 120, 120, 160, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 132, 0, 24, 1, 188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 50, 68, 24, 76, 51, 44, 48, 44, 12, 16, 167, 90, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 168, 7, 36, 9, 228, 12, 96, 14, 100, 25, 85, 55, 21, 68, 46, 39, 43, 39, 10, 14,
+			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 40, 43, 19, 60, 41, 35,
+			38, 35, 9, 12, 165, 90, 135, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 188, 7, 36, 9, 228, 12, 96, 14, 100, 25, 0, 29,
+			15, 50, 34, 29, 31, 29, 7, 10, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 144, 0, 128, 1, 128, 7, 176, 9,
+			248, 12, 0, 15, 160, 26, 45, 42, 23, 60, 54, 54, 54, 26, 12, 6, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 128, 1,
+			128, 7, 176, 9, 248, 12, 0, 15, 160, 26, 70, 81, 32, 84, 76, 76, 75, 36, 17, 8, 167, 105, 120, 120, 120, 120, 167, 90, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			144, 0, 128, 1, 128, 7, 176, 9, 248, 12, 0, 15, 160, 26, 60, 65, 28, 75, 68, 68, 67, 32, 15, 7, 167, 105, 120, 120, 120, 120,
+			167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 152, 0, 128, 1, 128, 7, 136, 9, 32, 13, 0, 15, 160, 26, 0, 35, 19, 56, 50, 50, 51, 24, 11, 5, 167, 105,
+			120, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 135, 0, 120, 1, 4, 6, 212, 8, 72, 13, 0, 15, 50, 25, 45, 40, 14, 59,
+			47, 56, 44, 26, 10, 5, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 135, 0, 104, 1, 4, 6, 172, 8, 72, 13, 0, 15, 50, 25,
+			70, 73, 20, 80, 64, 68, 60, 36, 13, 8, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 135, 0, 104, 1, 4, 6, 192, 8, 72, 13,
+			0, 15, 50, 25, 60, 59, 18, 72, 57, 61, 54, 32, 12, 7, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 135, 0, 104, 1, 24, 6,
+			232, 8, 72, 13, 0, 15, 50, 25, 0, 30, 12, 51, 40, 43, 38, 23, 8, 5, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 115, 0, 3, 0,
+			1, 0, 160, 0, 75, 2, 220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 45, 53, 37, 66, 63, 47, 41, 27, 15, 6, 171, 143, 165, 121,
+			122, 125, 171, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 160, 0, 75, 2, 220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 70, 85, 48, 84, 80, 60, 52, 34, 20, 8,
+			171, 143, 165, 121, 122, 125, 171, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 75, 2, 220, 5, 252, 8, 148, 12, 165, 15, 199, 27, 0, 68, 43, 75, 72, 54,
+			46, 31, 18, 7, 171, 143, 165, 121, 122, 125, 171, 120, 172, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 205, 0, 4, 0, 1, 0, 248, 0, 152, 2, 232, 3, 160, 10, 216, 12, 109, 14,
+			87, 27, 45, 50, 25, 54, 60, 33, 35, 31, 9, 5, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 152, 2, 232, 3, 160, 10,
+			216, 12, 109, 14, 87, 27, 90, 91, 34, 73, 81, 45, 47, 42, 12, 7, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 248, 0, 144, 2,
+			252, 3, 140, 10, 216, 12, 109, 14, 87, 27, 70, 73, 31, 67, 74, 41, 43, 38, 11, 6, 167, 148, 135, 120, 120, 120, 167, 145, 131, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			248, 0, 144, 2, 16, 4, 80, 10, 168, 12, 109, 14, 87, 27, 0, 46, 25, 54, 60, 33, 35, 31, 9, 5, 167, 148, 135, 120, 120, 120,
+			167, 145, 131, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 67, 8, 23, 0, 1, 5, 2, 0, 254, 252, 253, 251, 251, 248, 247, 250, 1, 12, 15, 13, 5, 0, 248, 241, 243, 249, 255, 0,
+			8, 22, 34, 38, 35, 30, 23, 10, 1, 251, 238, 223, 220, 231, 239, 243, 247, 253, 251, 246, 252, 0, 249, 238, 235, 237, 242, 254, 4, 0,
+			243, 239, 245, 249, 253, 1, 10, 18, 21, 22, 24, 34, 43, 47, 42, 36, 32, 30, 25, 13, 2, 254, 254, 0, 11, 28, 37, 34, 33, 32,
+			24, 15, 9, 5, 249, 242, 245, 242, 219, 197, 197, 210, 219, 221, 226, 244, 17, 48, 58, 44, 25, 20, 20, 7, 242, 225, 224, 238, 2, 14,
+			12, 20, 40, 58, 48, 27, 18, 23, 21, 0, 231, 213, 204, 203, 210, 214, 212, 213, 234, 1, 6, 252, 251, 1, 250, 231, 217, 220, 230, 244,
+			254, 0, 253, 4, 22, 30, 21, 10, 6, 10, 13, 11, 1, 249, 255, 8, 9, 252, 244, 251, 13, 29, 33, 32, 31, 38, 44, 39, 24, 14,
+			11, 4, 249, 236, 231, 236, 244, 253, 0, 249, 242, 249, 6, 5, 246, 230, 230, 241, 248, 248, 248, 247, 248, 251, 251, 241, 230, 227, 231, 237,
+			235, 234, 234, 239, 245, 250, 246, 235, 234, 243, 246, 237, 232, 239, 249, 0, 253, 248, 242, 242, 249, 251, 243, 232, 238, 250, 5, 8, 8, 13,
+			25, 34, 31, 20, 10, 14, 26, 31, 20, 14, 22, 30, 28, 19, 20, 21, 11, 3, 12, 26, 25, 14, 9, 12, 18, 13, 5, 254, 249, 243,
+			238, 238, 239, 244, 241, 238, 243, 2, 10, 12, 15, 19, 15, 3, 250, 248, 248, 239, 230, 223, 227, 241, 2, 12, 24, 45, 60, 61, 52, 36,
+			21, 13, 13, 10, 2, 0, 5, 20, 30, 37, 29, 14, 2, 254, 251, 246, 248, 242, 228, 217, 210, 203, 198, 211, 234, 250, 0, 1, 11, 14,
+			11, 5, 253, 243, 238, 248, 1, 11, 18, 23, 20, 11, 6, 11, 14, 2, 245, 246, 2, 11, 12, 5, 8, 19, 31, 33, 22, 2, 247, 251,
+			249, 229, 213, 214, 228, 237, 239, 240, 243, 255, 12, 23, 9, 240, 223, 222, 230, 236, 237, 233, 242, 2, 16, 21, 24, 31, 45, 54, 46, 25,
+			10, 5, 0, 237, 208, 195, 202, 221, 234, 243, 251, 8, 18, 21, 20, 15, 0, 251, 253, 237, 205, 193, 212, 228, 236, 247, 16, 42, 54, 56,
+			44, 24, 8, 255, 243, 223, 219, 231, 246, 6, 19, 35, 38, 39, 42, 43, 25, 251, 238, 238, 236, 231, 234, 242, 246, 254, 16, 34, 43, 36,
+			29, 17, 4, 0, 2, 2, 252, 254, 0, 6, 8, 13, 13, 3, 242, 230, 231, 238, 244, 240, 223, 213, 226, 243, 243, 226, 222, 234, 252, 8,
+			16, 18, 14, 15, 17, 11, 252, 244, 249, 253, 251, 253, 5, 22, 31, 40, 41, 31, 19, 24, 42, 37, 18, 14, 30, 31, 9, 253, 5, 11,
+			4, 250, 245, 241, 241, 248, 246, 240, 236, 238, 237, 233, 231, 221, 208, 213, 231, 236, 211, 206, 234, 9, 26, 32, 36, 25, 30, 52, 62, 39,
+			6, 254, 254, 254, 0, 5, 9, 11, 26, 35, 34, 33, 35, 32, 12, 246, 222, 209, 201, 199, 198, 195, 201, 225, 5, 20, 10, 6, 25, 32,
+			2, 230, 227, 225, 211, 207, 221, 230, 237, 11, 43, 44, 28, 35, 57, 55, 23, 247, 236, 247, 254, 246, 229, 239, 14, 40, 46, 40, 41, 36,
+			31, 13, 243, 221, 219, 230, 232, 228, 231, 247, 7, 13, 2, 247, 253, 8, 254, 231, 229, 249, 253, 250, 255, 8, 13, 29, 54, 54, 29, 8,
+			9, 254, 230, 210, 212, 222, 231, 251, 13, 29, 33, 44, 55, 51, 29, 7, 249, 229, 216, 226, 234, 221, 209, 229, 249, 246, 253, 17, 21, 251,
+			246, 2, 3, 243, 251, 9, 254, 237, 244, 10, 12, 5, 4, 4, 2, 12, 28, 32, 26, 32, 40, 28, 5, 0, 7, 244, 210, 198, 211, 220,
+			224, 241, 6, 17, 28, 41, 46, 30, 14, 0, 235, 223, 227, 239, 235, 234, 253, 24, 39, 41, 37, 28, 20, 21, 18, 0, 236, 234, 243, 245,
+			248, 6, 14, 13, 26, 47, 46, 16, 253, 0, 0, 235, 210, 201, 199, 211, 228, 243, 249, 0, 13, 20, 13, 5, 249, 231, 216, 218, 229, 234,
+			235, 251, 19, 32, 33, 30, 28, 23, 31, 36, 22, 251, 243, 253, 238, 214, 221, 1, 21, 24, 25, 38, 40, 37, 16, 244, 219, 211, 213, 217,
+			234, 248, 253, 5, 30, 40, 7, 227, 233, 4, 253, 220, 210, 234, 253, 3, 11, 25, 16, 11, 18, 26, 5, 248, 6, 19, 4, 238, 242, 251,
+			252, 0, 12, 21, 26, 42, 56, 38, 10, 2, 9, 1, 234, 226, 218, 213, 214, 234, 240, 226, 224, 4, 35, 44, 55, 82, 77, 26, 233, 218,
+			207, 181, 171, 185, 194, 188, 216, 21, 62, 53, 40, 65, 86, 80, 50, 26, 255, 228, 217, 214, 202, 196, 224, 13, 38, 43, 50, 68, 80, 62,
+			25, 249, 230, 219, 197, 176, 172, 188, 212, 248, 27, 47, 43, 49, 67, 68, 24, 233, 223, 237, 233, 211, 199, 209, 231, 5, 34, 42, 31, 36,
+			63, 75, 43, 246, 224, 227, 227, 209, 205, 215, 231, 250, 9, 27, 30, 39, 44, 36, 12, 255, 253, 251, 236, 220, 203, 192, 191, 213, 240, 252,
+			254, 8, 36, 58, 63, 55, 45, 40, 33, 10, 223, 195, 211, 243, 245, 212, 211, 252, 35, 37, 25, 27, 27, 29, 31, 34, 13, 236, 230, 237,
+			222, 194, 197, 228, 243, 253, 23, 48, 43, 40, 56, 45, 3, 238, 254, 251, 220, 205, 214, 214, 211, 236, 2, 2, 0, 21, 42, 34, 19, 16,
+			14, 247, 229, 231, 249, 249, 236, 235, 251, 8, 9, 15, 28, 32, 33, 39, 50, 36, 3, 232, 223, 232, 233, 224, 213, 232, 3, 20, 28, 49,
+			63, 46, 15, 2, 243, 211, 199, 208, 205, 180, 194, 245, 33, 29, 27, 35, 41, 35, 27, 15, 242, 218, 224, 244, 237, 209, 218, 6, 31, 18,
+			13, 44, 56, 41, 41, 54, 32, 244, 234, 246, 231, 199, 192, 211, 227, 252, 34, 48, 38, 42, 75, 80, 37, 240, 233, 239, 224, 188, 182, 204,
+			225, 244, 11, 27, 24, 32, 56, 56, 16, 238, 237, 240, 228, 220, 230, 226, 226, 248, 24, 25, 8, 16, 34, 23, 255, 253, 8, 1, 248, 1,
+			10, 12, 13, 26, 22, 2, 245, 245, 246, 243, 239, 228, 228, 242, 6, 9, 16, 27, 42, 34, 29, 28, 23, 244, 202, 173, 168, 174, 190, 219,
+			235, 250, 21, 85, 125, 114, 68, 41, 30, 5, 218, 189, 180, 168, 172, 207, 10, 34, 36, 52, 96, 110, 84, 39, 4, 226, 204, 194, 179, 162,
+			168, 215, 5, 29, 38, 47, 60, 59, 49, 23, 245, 213, 191, 190, 197, 205, 209, 221, 255, 42, 80, 84, 67, 48, 35, 20, 254, 228, 205, 188,
+			194, 223, 244, 244, 0, 30, 51, 52, 51, 56, 48, 31, 14, 250, 217, 192, 201, 211, 218, 216, 229, 255, 27, 43, 44, 39, 45, 56, 50, 13,
+			235, 227, 231, 220, 196, 191, 196, 198, 219, 20, 62, 50, 36, 70, 105, 74, 19, 3, 1, 217, 179, 186, 210, 203, 211, 245, 18, 9, 13, 42,
+			67, 57, 43, 31, 8, 243, 239, 238, 215, 192, 194, 224, 244, 251, 0, 13, 24, 25, 23, 16, 11, 3, 2, 2, 251, 245, 252, 3, 5, 3,
+			10, 12, 6, 251, 245, 247, 253, 2, 0, 2, 22, 46, 43, 16, 5, 14, 21, 14, 252, 238, 217, 210, 219, 233, 229, 217, 228, 9, 47, 46,
+			25, 15, 18, 14, 251, 229, 212, 202, 211, 243, 9, 0, 253, 28, 53, 42, 14, 16, 26, 15, 255, 247, 239, 219, 216, 239, 1, 0, 246, 3,
+			31, 55, 50, 24, 6, 11, 24, 6, 225, 205, 218, 240, 246, 247, 249, 255, 7, 24, 36, 20, 245, 246, 0, 249, 216, 214, 245, 3, 244, 240,
+			0, 6, 6, 15, 27, 21, 7, 19, 37, 19, 233, 214, 224, 232, 221, 218, 235, 6, 20, 43, 60, 56, 34, 27, 36, 36, 9, 239, 224, 220,
+			213, 212, 210, 224, 4, 42, 52, 34, 40, 56, 58, 22, 241, 219, 206, 196, 205, 217, 215, 212, 233, 11, 19, 9, 11, 37, 42, 28, 16, 10,
+			255, 240, 244, 243, 230, 216, 239, 6, 5, 251, 2, 22, 37, 35, 28, 5, 250, 4, 20, 10, 249, 0, 15, 13, 255, 252, 248, 232, 228, 246,
+			1, 243, 239, 16, 45, 38, 13, 0, 253, 241, 236, 232, 224, 213, 233, 0, 4, 5, 28, 46, 40, 29, 23, 18, 253, 235, 221, 201, 196, 224,
+			254, 14, 26, 41, 49, 40, 33, 18, 251, 224, 222, 229, 229, 230, 243, 0, 0, 250, 1, 17, 21, 10, 10, 20, 25, 18, 7, 249, 235, 237,
+			0, 1, 234, 221, 247, 17, 12, 254, 1, 6, 12, 16, 25, 10, 245, 244, 9, 5, 235, 218, 223, 240, 255, 8, 8, 9, 19, 35, 31, 12,
+			0, 253, 241, 233, 231, 235, 247, 7, 23, 16, 255, 251, 8, 21, 24, 16, 255, 246, 255, 13, 7, 243, 228, 227, 236, 246, 250, 249, 246, 0,
+			7, 11, 14, 24, 26, 28, 33, 32, 10, 243, 236, 239, 225, 205, 212, 240, 4, 7, 16, 35, 51, 46, 35, 27, 6, 238, 228, 233, 230, 220,
+			226, 248, 8, 15, 24, 27, 22, 14, 7, 248, 234, 233, 232, 220, 214, 223, 237, 247, 5, 18, 16, 11, 27, 44, 40, 23, 17, 15, 11, 3,
+			251, 238, 227, 227, 231, 226, 227, 250, 23, 41, 47, 52, 58, 54, 36, 13, 241, 210, 199, 208, 214, 207, 214, 253, 36, 49, 46, 46, 36, 21,
+			13, 0, 223, 195, 202, 219, 210, 196, 213, 244, 2, 8, 16, 24, 29, 42, 45, 25, 0, 252, 255, 246, 228, 223, 237, 0, 22, 31, 26, 21,
+			31, 43, 38, 12, 243, 233, 238, 247, 251, 237, 221, 230, 4, 20, 14, 6, 14, 21, 19, 13, 4, 247, 240, 240, 236, 227, 230, 245, 1, 4,
+			4, 1, 5, 15, 25, 18, 1, 248, 252, 252, 243, 228, 219, 224, 238, 253, 5, 17, 33, 50, 52, 37, 15, 0, 246, 234, 221, 207, 200, 210,
+			238, 7, 15, 20, 34, 48, 55, 54, 44, 23, 4, 254, 245, 227, 215, 225, 236, 243, 252, 14, 24, 29, 37, 41, 24, 0, 249, 250, 237, 215,
+			201, 195, 200, 217, 240, 245, 241, 249, 16, 33, 31, 22, 15, 9, 7, 13, 10, 250, 238, 248, 9, 7, 254, 0, 9, 14, 26, 39, 39, 31,
+			38, 49, 38, 16, 10, 7, 246, 228, 226, 223, 217, 227, 249, 254, 242, 242, 1, 5, 253, 244, 240, 236, 238, 249, 1, 253, 248, 0, 8, 3,
+			248, 249, 3, 7, 6, 6, 8, 13, 29, 38, 23, 0, 252, 6, 6, 251, 239, 236, 241, 3, 20, 20, 11, 16, 31, 34, 12, 244, 234, 233,
+			228, 219, 212, 213, 226, 246, 3, 0, 251, 255, 4, 0, 243, 230, 224, 228, 244, 255, 1, 6, 23, 42, 45, 36, 26, 21, 18, 12, 4, 254,
+			253, 3, 11, 13, 9, 10, 18, 22, 17, 11, 8, 5, 0, 251, 247, 244, 247, 252, 255, 0, 5, 10, 13, 12, 3, 245, 231, 226, 223, 217,
+			215, 217, 220, 223, 230, 236, 242, 251, 4, 8, 4, 0, 0, 4, 5, 1, 251, 246, 244, 251, 8, 16, 12, 9, 14, 21, 23, 24, 25, 20,
+			12, 9, 10, 6, 1, 2, 7, 10, 15, 25, 35, 34, 26, 19, 12, 0, 243, 233, 222, 214, 217, 235, 0, 11, 18, 23, 29, 34, 29, 10,
+			244, 225, 210, 199, 197, 204, 217, 230, 244, 3, 22, 40, 49, 50, 44, 36, 26, 17, 8, 249, 234, 228, 235, 245, 0, 6, 16, 33, 57, 65,
+			50, 32, 26, 21, 1, 236, 227, 232, 242, 250, 0, 8, 20, 31, 35, 27, 11, 252, 245, 237, 222, 203, 193, 191, 197, 206, 215, 219, 232, 254,
+			16, 19, 15, 14, 15, 11, 253, 233, 218, 219, 229, 240, 250, 3, 16, 35, 55, 62, 54, 43, 38, 32, 21, 7, 254, 250, 255, 6, 8, 6,
+			14, 30, 41, 36, 24, 13, 6, 254, 236, 214, 199, 197, 204, 211, 211, 211, 217, 228, 232, 223, 215, 0, 185, 0, 4, 0, 1, 0, 147, 0,
+			22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 45, 41, 10, 62, 52, 48, 52, 29, 12, 8, 167, 101, 123, 120, 120, 120, 167, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 70, 75, 14, 84, 71, 65, 70, 39, 16, 10, 167, 101, 123, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 70, 61, 12, 76, 63, 58, 63, 35, 15, 9,
+			167, 101, 123, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 0, 30, 8, 54, 45, 41,
+			45, 25, 10, 6, 167, 101, 123, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 160, 0, 248, 1, 60, 5, 172, 8, 228, 12, 246, 14,
+			95, 27, 45, 43, 27, 55, 64, 43, 40, 30, 16, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 160, 0, 248, 1, 60, 5, 172, 8,
+			228, 12, 246, 14, 95, 27, 60, 72, 36, 72, 84, 56, 52, 38, 21, 8, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 160, 0, 248, 1,
+			60, 5, 172, 8, 228, 12, 246, 14, 95, 27, 60, 60, 32, 65, 76, 50, 47, 35, 19, 7, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			160, 0, 248, 1, 60, 5, 172, 8, 228, 12, 246, 14, 95, 27, 0, 36, 28, 50, 58, 39, 36, 27, 15, 5, 170, 133, 127, 122, 124, 128,
+			197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 45, 0, 4, 0, 1, 0, 122, 0, 136, 1, 180, 5, 132, 8, 228, 12, 246, 14, 95, 27, 45, 41, 18, 54, 67, 39, 42, 29,
+			16, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 122, 0, 136, 1, 180, 5, 132, 8, 228, 12, 246, 14, 95, 27, 97, 72, 24, 72,
+			88, 52, 55, 38, 21, 8, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 122, 0, 136, 1, 120, 5, 112, 8, 228, 12, 246, 14, 95, 27,
+			73, 62, 21, 68, 79, 47, 43, 35, 19, 7, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 122, 0, 152, 1, 79, 5, 153, 8, 228, 12,
+			246, 14, 95, 27, 0, 39, 23, 54, 57, 37, 34, 23, 11, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 24, 1,
+			248, 2, 236, 4, 196, 9, 112, 13, 40, 15, 153, 28, 45, 48, 28, 57, 63, 46, 37, 28, 10, 6, 215, 138, 143, 120, 120, 120, 237, 165,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 24, 1, 248, 2, 236, 4, 196, 9, 112, 13, 40, 15, 153, 28, 60, 83, 38, 76, 83, 60, 48, 37, 13, 8, 215, 138, 143, 120,
+			120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 24, 1, 248, 2, 20, 5, 196, 9, 112, 13, 40, 15, 153, 28, 60, 73, 36, 72, 79, 57, 46, 35, 13, 7,
+			215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 24, 1, 248, 2, 40, 5, 196, 9, 112, 13, 40, 15, 153, 28, 0, 40, 26, 53, 59, 43,
+			34, 26, 9, 5, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 175, 0, 4, 0, 1, 0, 132, 0, 67, 1, 240, 5, 92, 8, 228, 12, 96, 14,
+			100, 25, 45, 41, 18, 63, 40, 35, 37, 34, 9, 12, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 67, 1, 240, 5, 92, 8,
+			228, 12, 96, 14, 100, 25, 70, 66, 22, 80, 51, 44, 48, 44, 12, 16, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 132, 0, 67, 1,
+			240, 5, 112, 8, 228, 12, 96, 14, 100, 25, 60, 58, 21, 75, 48, 41, 45, 41, 11, 15, 167, 105, 135, 120, 120, 120, 167, 112, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			132, 0, 67, 1, 240, 5, 112, 8, 228, 12, 96, 14, 100, 25, 0, 41, 18, 63, 40, 35, 37, 34, 9, 12, 167, 105, 135, 120, 120, 120,
+			167, 112, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 210, 0, 5, 0, 1, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25, 45, 42, 15, 62, 40, 34, 37, 34,
+			9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25, 60, 69, 20, 80,
+			51, 44, 48, 44, 12, 16, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 132, 0, 16, 1, 240, 5, 52, 8, 228, 12, 96, 14, 100, 25,
+			70, 62, 19, 76, 49, 42, 45, 41, 11, 15, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 24, 1, 24, 6, 72, 8, 228, 12,
+			96, 14, 100, 25, 35, 41, 15, 62, 40, 34, 37, 34, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 132, 0, 24, 1, 24, 6,
+			72, 8, 228, 12, 96, 14, 100, 25, 0, 36, 14, 58, 37, 32, 35, 32, 8, 11, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 235, 0, 5, 0,
+			1, 0, 8, 1, 8, 3, 60, 5, 236, 9, 32, 13, 191, 14, 64, 27, 45, 53, 34, 66, 72, 43, 43, 31, 4, 6, 167, 135, 165, 120,
+			120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 8, 1, 8, 3, 60, 5, 236, 9, 32, 13, 191, 14, 64, 27, 80, 103, 48, 92, 100, 60, 60, 44, 6, 8,
+			167, 135, 165, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 254, 0, 222, 2, 146, 5, 252, 9, 44, 13, 189, 14, 86, 27, 70, 92, 46, 88, 95, 60,
+			58, 43, 7, 8, 167, 130, 168, 120, 120, 120, 167, 135, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 99, 1, 152, 8, 140, 10, 152, 13, 166, 14, 32, 28, 40, 43,
+			32, 55, 49, 58, 45, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 99, 1, 174, 8, 160, 10, 92, 13, 10, 15,
+			32, 28, 0, 28, 28, 44, 45, 41, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 250, 0, 5, 0, 1, 0, 122, 0, 240, 1,
+			140, 5, 132, 8, 228, 12, 246, 14, 95, 27, 45, 38, 25, 54, 60, 37, 39, 28, 15, 6, 170, 133, 127, 122, 124, 128, 197, 131, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			122, 0, 240, 1, 140, 5, 132, 8, 228, 12, 246, 14, 95, 27, 75, 74, 36, 76, 84, 52, 55, 38, 21, 8, 170, 133, 127, 122, 124, 128,
+			197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 125, 0, 218, 1, 214, 5, 191, 8, 236, 12, 247, 14, 76, 27, 60, 72, 31, 76, 82, 53, 57, 38, 21, 8, 170, 129,
+			127, 122, 124, 127, 197, 131, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 152, 0, 11, 1, 112, 8, 212, 10, 52, 13, 0, 15, 160, 26, 70, 40, 4, 64, 57, 46, 58, 28,
+			13, 6, 167, 99, 120, 120, 120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 11, 1, 112, 8, 212, 10, 52, 13, 0, 15, 160, 26, 0, 34, 3, 59,
+			53, 43, 54, 26, 12, 6, 167, 99, 120, 120, 120, 120, 167, 97, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 40, 0, 7, 0, 1, 0, 24, 1, 232, 2, 140, 5, 196, 9, 112, 13,
+			40, 15, 153, 28, 40, 50, 33, 63, 63, 48, 38, 29, 10, 6, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 24, 1, 232, 2, 140, 5,
+			196, 9, 112, 13, 40, 15, 153, 28, 35, 89, 44, 84, 84, 64, 51, 39, 14, 8, 215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 245, 0,
+			176, 2, 104, 5, 160, 9, 112, 13, 40, 15, 153, 28, 40, 81, 41, 79, 79, 53, 49, 38, 13, 8, 215, 138, 143, 120, 120, 120, 237, 165,
+			165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 195, 0, 56, 2, 122, 5, 68, 9, 112, 13, 30, 15, 83, 27, 50, 73, 33, 76, 65, 46, 53, 38, 13, 7, 201, 130, 147, 121,
+			121, 127, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 144, 0, 173, 1, 140, 5, 232, 8, 55, 13, 20, 15, 13, 26, 60, 55, 21, 69, 49, 38, 39, 32, 12, 7,
+			188, 123, 151, 122, 122, 135, 237, 165, 151, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 147, 0, 64, 1, 20, 5, 34, 9, 40, 13, 15, 15, 105, 25, 35, 37, 10, 61, 46, 28,
+			25, 18, 12, 7, 181, 109, 137, 123, 123, 139, 187, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 147, 0, 64, 1, 20, 5, 34, 9, 40, 13, 15, 15, 105, 25, 0, 29,
+			9, 54, 41, 25, 22, 16, 11, 6, 181, 109, 137, 123, 123, 139, 187, 120, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 155, 0, 4, 0, 1, 0, 133, 0, 144, 1, 64, 6, 116, 9,
+			196, 12, 151, 14, 39, 25, 50, 40, 23, 56, 50, 37, 41, 32, 12, 10, 177, 127, 132, 124, 123, 138, 187, 126, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 133, 0, 144, 1,
+			64, 6, 116, 9, 196, 12, 151, 14, 39, 25, 70, 52, 26, 64, 57, 43, 46, 37, 13, 11, 177, 127, 132, 124, 123, 138, 187, 126, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			133, 0, 144, 1, 64, 6, 116, 9, 196, 12, 151, 14, 39, 25, 35, 52, 26, 64, 57, 43, 46, 37, 13, 11, 177, 127, 132, 124, 123, 138,
+			187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 133, 0, 144, 1, 64, 6, 116, 9, 196, 12, 151, 14, 39, 25, 0, 31, 20, 50, 44, 33, 36, 28, 10, 9, 177, 127,
+			132, 124, 123, 138, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 95, 0, 4, 0, 1, 0, 135, 0, 151, 1, 220, 5, 96, 9, 188, 12, 136, 14, 153, 24, 45, 43, 21, 59,
+			56, 46, 37, 28, 10, 11, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 135, 0, 151, 1, 220, 5, 96, 9, 188, 12, 136, 14, 153, 24,
+			80, 71, 28, 76, 72, 60, 48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 135, 0, 202, 1, 233, 5, 179, 9, 188, 12,
+			136, 14, 153, 24, 50, 76, 33, 81, 72, 60, 48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 135, 0, 202, 1, 233, 5,
+			179, 9, 188, 12, 136, 14, 153, 24, 0, 76, 33, 81, 72, 60, 48, 36, 13, 14, 178, 126, 132, 123, 123, 141, 187, 126, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 4, 0,
+			1, 0, 168, 0, 232, 1, 152, 3, 136, 9, 244, 11, 141, 14, 32, 27, 45, 55, 28, 58, 65, 39, 32, 18, 13, 5, 165, 135, 150, 120,
+			120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 168, 0, 232, 1, 152, 3, 136, 9, 244, 11, 141, 14, 32, 27, 90, 109, 42, 80, 92, 59, 48, 27, 20, 8,
+			165, 135, 150, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 171, 0, 160, 1, 211, 2, 101, 9, 239, 12, 42, 15, 89, 27, 60, 57, 28, 60, 52, 27,
+			22, 14, 11, 8, 196, 108, 123, 120, 120, 120, 165, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 172, 0, 160, 1, 188, 2, 96, 9, 12, 13, 60, 15, 96, 27, 0, 36,
+			24, 48, 40, 24, 20, 12, 10, 8, 200, 105, 120, 120, 120, 120, 200, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 155, 0, 5, 0, 1, 0, 136, 0, 232, 1, 64, 6, 140, 10,
+			232, 13, 64, 16, 95, 27, 45, 44, 24, 58, 58, 43, 33, 27, 16, 6, 170, 152, 153, 122, 124, 128, 197, 152, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 136, 0, 232, 1,
+			64, 6, 140, 10, 232, 13, 64, 16, 95, 27, 60, 67, 30, 72, 72, 53, 41, 34, 20, 8, 170, 152, 153, 122, 124, 128, 197, 152, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			136, 0, 232, 1, 64, 6, 140, 10, 232, 13, 64, 16, 95, 27, 40, 60, 28, 68, 68, 50, 39, 32, 19, 7, 170, 152, 153, 122, 124, 128,
+			197, 152, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 160, 0, 136, 1, 12, 8, 60, 10, 127, 13, 159, 14, 16, 28, 50, 46, 31, 55, 51, 54, 33, 36, 10, 7, 168, 109,
+			141, 120, 120, 120, 200, 109, 141, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 160, 0, 136, 1, 12, 8, 60, 10, 127, 13, 159, 14, 16, 28, 0, 32, 26, 46, 43, 45, 27, 30,
+			8, 6, 168, 109, 141, 120, 120, 120, 200, 109, 141, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 90, 0, 4, 0, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27,
+			35, 13, 36, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 196, 0, 114, 1, 84, 4, 252, 8, 88, 12,
+			91, 14, 32, 27, 25, 13, 36, 20, 38, 12, 16, 16, 6, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 5, 0, 196, 0, 114, 1, 84, 4,
+			252, 8, 88, 12, 91, 14, 32, 27, 30, 5, 22, 11, 22, 8, 11, 11, 4, 0, 125, 60, 135, 120, 120, 120, 80, 75, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 196, 0,
+			114, 1, 84, 4, 252, 8, 88, 12, 91, 14, 32, 27, 0, 3, 19, 9, 19, 7, 9, 9, 3, 0, 125, 60, 135, 120, 120, 120, 80, 75,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			90, 0, 4, 0, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 35, 17, 40, 41, 25, 16, 13, 16, 8, 0,
+			132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 25, 14, 36, 37, 22, 14,
+			12, 14, 8, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15, 0, 27, 30, 5,
+			22, 22, 20, 12, 10, 12, 7, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 236, 0, 124, 1, 12, 7, 236, 9, 172, 13, 160, 15,
+			0, 27, 0, 3, 16, 16, 15, 9, 8, 9, 5, 0, 132, 60, 90, 120, 120, 120, 42, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 100, 0, 4, 0, 5, 0, 204, 0, 120, 1,
+			92, 8, 124, 11, 172, 13, 160, 15, 0, 27, 30, 19, 41, 45, 19, 19, 15, 15, 9, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0,
+			204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 25, 16, 39, 39, 18, 18, 15, 14, 9, 0, 135, 60, 90, 120, 120, 120,
+			45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 5, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 45, 4, 21, 21, 15, 15, 12, 12, 7, 0, 135, 60,
+			90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 37, 0, 204, 0, 120, 1, 192, 8, 28, 12, 172, 13, 160, 15, 0, 27, 0, 4, 21, 21, 15, 15, 12, 12,
+			7, 0, 135, 60, 90, 120, 120, 120, 45, 135, 105, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 95, 0, 4, 0, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14, 23, 17, 224, 23,
+			40, 17, 44, 14, 19, 10, 10, 13, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 240, 0, 13, 2, 248, 9, 124, 11, 76, 14,
+			23, 17, 224, 23, 25, 17, 44, 14, 19, 10, 10, 13, 4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 232, 0, 13, 2, 236, 9,
+			44, 11, 76, 14, 23, 17, 224, 23, 30, 5, 25, 6, 15, 8, 8, 10, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 232, 0,
+			13, 2, 236, 9, 44, 11, 76, 14, 23, 17, 224, 23, 0, 4, 22, 5, 13, 7, 7, 9, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			97, 9, 23, 0, 0, 255, 255, 254, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 255, 255, 254, 254, 254, 255, 255, 254, 255, 255, 254, 255,
+			0, 255, 255, 254, 255, 0, 0, 255, 255, 255, 0, 255, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 254, 255, 0, 0, 0, 0,
+			0, 0, 0, 7, 40, 43, 3, 236, 248, 2, 254, 9, 28, 28, 15, 6, 0, 251, 1, 17, 25, 17, 16, 22, 13, 9, 24, 30, 25, 29,
+			91, 77, 249, 254, 0, 245, 246, 42, 53, 24, 241, 196, 216, 250, 239, 246, 4, 245, 195, 162, 180, 212, 233, 249, 235, 204, 175, 172, 165, 194,
+			235, 223, 215, 169, 135, 191, 226, 235, 0, 249, 242, 239, 213, 191, 2, 90, 36, 246, 254, 12, 72, 57, 93, 127, 43, 26, 20, 11, 36, 68,
+			78, 30, 14, 239, 229, 46, 32, 240, 14, 37, 231, 164, 187, 7, 26, 223, 167, 175, 221, 208, 181, 182, 227, 241, 173, 188, 230, 216, 197, 211,
+			247, 213, 230, 240, 192, 228, 1, 8, 26, 5, 224, 3, 32, 24, 15, 20, 16, 23, 0, 6, 20, 4, 32, 64, 49, 40, 78, 49, 13, 11,
+			29, 50, 28, 255, 241, 20, 36, 254, 207, 251, 69, 29, 220, 197, 244, 18, 234, 202, 238, 44, 6, 161, 164, 1, 39, 17, 202, 184, 9, 25,
+			210, 178, 243, 56, 29, 215, 166, 250, 83, 246, 197, 14, 80, 17, 190, 216, 15, 58, 55, 31, 6, 243, 241, 251, 33, 38, 249, 24, 40, 233,
+			183, 219, 29, 50, 31, 245, 252, 24, 11, 222, 198, 250, 61, 38, 251, 241, 5, 18, 254, 247, 62, 62, 44, 4, 207, 214, 245, 33, 62, 32,
+			250, 252, 226, 202, 207, 241, 26, 47, 29, 187, 175, 228, 242, 236, 243, 11, 11, 228, 208, 180, 194, 235, 46, 31, 222, 220, 242, 250, 202, 215,
+			2, 47, 23, 216, 229, 253, 236, 244, 247, 242, 26, 33, 229, 193, 246, 15, 3, 5, 5, 17, 253, 236, 220, 238, 36, 23, 251, 202, 209, 11,
+			23, 248, 242, 37, 8, 193, 208, 245, 10, 31, 2, 240, 1, 254, 228, 192, 221, 16, 38, 27, 244, 253, 244, 209, 223, 0, 40, 39, 241, 239,
+			2, 10, 243, 227, 12, 44, 40, 19, 237, 230, 243, 253, 8, 0, 49, 63, 19, 249, 208, 238, 22, 21, 4, 254, 35, 13, 246, 0, 248, 251,
+			0, 10, 23, 32, 29, 254, 252, 243, 240, 16, 32, 13, 19, 38, 11, 246, 0, 251, 251, 7, 29, 41, 34, 28, 232, 231, 10, 9, 254, 4,
+			47, 48, 12, 226, 245, 27, 2, 230, 232, 35, 44, 241, 227, 247, 14, 248, 205, 235, 23, 21, 3, 3, 252, 235, 199, 213, 3, 25, 16, 5,
+			253, 4, 10, 232, 217, 248, 39, 18, 226, 248, 32, 13, 222, 197, 251, 44, 248, 236, 45, 45, 0, 220, 216, 251, 3, 4, 7, 22, 33, 252,
+			216, 243, 255, 255, 255, 245, 4, 243, 245, 1, 4, 225, 212, 241, 241, 253, 3, 2, 229, 233, 254, 227, 234, 244, 238, 236, 6, 7, 251, 237,
+			242, 247, 234, 247, 14, 2, 0, 248, 241, 238, 235, 255, 8, 17, 255, 248, 14, 18, 240, 207, 7, 63, 27, 234, 242, 20, 11, 224, 217, 1,
+			53, 20, 236, 244, 12, 26, 240, 242, 254, 21, 4, 221, 239, 29, 14, 222, 209, 7, 18, 242, 229, 230, 242, 232, 226, 254, 19, 9, 240, 222,
+			243, 2, 19, 232, 219, 17, 25, 0, 238, 29, 24, 242, 237, 255, 7, 245, 254, 23, 19, 29, 2, 221, 235, 1, 15, 2, 7, 13, 16, 242,
+			221, 229, 245, 5, 3, 231, 248, 26, 8, 206, 210, 59, 23, 203, 217, 12, 16, 204, 226, 12, 14, 241, 247, 247, 251, 246, 203, 236, 10, 28,
+			3, 249, 10, 38, 14, 225, 250, 18, 5, 235, 11, 35, 24, 5, 8, 4, 246, 1, 237, 240, 245, 239, 0, 17, 4, 231, 11, 6, 211, 223,
+			252, 19, 249, 242, 247, 8, 0, 225, 237, 248, 254, 252, 10, 10, 2, 10, 237, 243, 22, 21, 2, 4, 1, 228, 7, 21, 246, 237, 25, 31,
+			246, 246, 252, 0, 247, 254, 4, 32, 32, 15, 18, 254, 255, 231, 240, 252, 27, 21, 247, 252, 250, 14, 2, 253, 3, 250, 238, 244, 3, 254,
+			0, 9, 31, 6, 233, 243, 238, 238, 222, 245, 24, 16, 3, 8, 17, 239, 217, 234, 234, 211, 221, 15, 48, 24, 254, 251, 251, 2, 9, 236,
+			242, 6, 3, 223, 242, 29, 8, 244, 229, 13, 251, 218, 219, 241, 0, 231, 0, 42, 57, 49, 28, 29, 14, 6, 3, 12, 21, 23, 19, 35,
+			38, 12, 22, 41, 18, 238, 233, 1, 237, 222, 246, 255, 5, 1, 249, 234, 250, 247, 219, 210, 234, 5, 0, 244, 243, 11, 23, 4, 253, 4,
+			0, 237, 242, 13, 34, 7, 0, 21, 21, 11, 2, 251, 246, 3, 11, 18, 15, 1, 2, 2, 5, 242, 232, 227, 240, 255, 249, 230, 222, 242,
+			251, 235, 228, 5, 13, 246, 224, 230, 243, 244, 235, 237, 243, 252, 6, 254, 4, 250, 239, 238, 218, 213, 242, 247, 234, 248, 3, 247, 221, 231,
+			240, 221, 202, 201, 206, 223, 234, 249, 251, 246, 225, 225, 228, 212, 215, 238, 0, 250, 238, 245, 12, 252, 226, 228, 242, 241, 226, 229, 252, 4,
+			1, 250, 0, 4, 10, 2, 252, 0, 0, 253, 231, 245, 21, 15, 246, 242, 0, 2, 241, 27, 52, 7, 235, 0, 16, 216, 212, 232, 221, 218,
+			242, 3, 2, 9, 4, 234, 232, 234, 240, 235, 228, 235, 228, 238, 0, 251, 4, 17, 17, 13, 244, 222, 226, 237, 246, 6, 29, 58, 54, 33,
+			11, 249, 0, 236, 224, 252, 18, 29, 24, 27, 45, 23, 237, 236, 237, 226, 211, 215, 229, 239, 248, 8, 28, 16, 10, 5, 252, 206, 179, 219,
+			229, 227, 18, 45, 36, 18, 25, 11, 236, 227, 223, 231, 9, 20, 7, 13, 49, 29, 246, 232, 225, 213, 224, 237, 229, 5, 28, 16, 253, 252,
+			19, 11, 252, 246, 219, 226, 0, 254, 250, 28, 57, 42, 10, 250, 248, 229, 238, 3, 10, 50, 49, 32, 14, 241, 229, 232, 221, 216, 229, 12,
+			21, 254, 4, 16, 16, 246, 219, 226, 241, 252, 242, 0, 23, 28, 0, 223, 242, 10, 7, 253, 254, 4, 246, 225, 242, 6, 17, 18, 19, 16,
+			1, 7, 10, 251, 0, 20, 30, 32, 35, 33, 1, 10, 23, 14, 26, 11, 243, 242, 239, 240, 239, 11, 18, 8, 19, 26, 19, 243, 231, 228,
+			204, 203, 195, 225, 24, 39, 35, 24, 28, 13, 228, 198, 197, 222, 243, 237, 244, 34, 76, 71, 38, 43, 42, 17, 237, 235, 6, 24, 6, 246,
+			23, 56, 42, 4, 4, 20, 246, 225, 225, 226, 0, 4, 247, 248, 248, 237, 219, 241, 248, 227, 211, 230, 251, 226, 245, 22, 31, 36, 19, 254,
+			1, 12, 238, 200, 233, 20, 15, 26, 49, 42, 27, 45, 7, 216, 235, 5, 243, 229, 32, 45, 10, 16, 25, 21, 6, 228, 221, 241, 220, 186,
+			212, 7, 2, 247, 13, 48, 27, 220, 191, 183, 191, 189, 193, 6, 68, 55, 10, 0, 2, 229, 194, 194, 223, 252, 13, 24, 45, 50, 41, 31,
+			27, 17, 248, 228, 229, 219, 222, 7, 28, 27, 26, 30, 26, 8, 231, 207, 198, 204, 220, 222, 0, 37, 41, 40, 40, 18, 238, 243, 244, 225,
+			221, 230, 247, 239, 236, 12, 35, 27, 10, 4, 250, 235, 239, 247, 242, 243, 14, 16, 6, 250, 235, 242, 249, 227, 202, 232, 3, 240, 240, 4,
+			16, 22, 251, 222, 231, 1, 10, 0, 1, 33, 48, 27, 253, 227, 237, 3, 240, 226, 7, 27, 15, 11, 25, 31, 15, 22, 252, 234, 245, 241,
+			247, 238, 218, 228, 4, 6, 222, 247, 11, 249, 232, 228, 0, 1, 227, 224, 249, 5, 6, 240, 222, 216, 224, 230, 225, 248, 23, 30, 43, 43,
+			16, 9, 7, 0, 230, 223, 249, 29, 33, 25, 30, 23, 23, 16, 242, 237, 9, 12, 243, 230, 244, 243, 238, 211, 205, 239, 7, 5, 244, 3,
+			9, 254, 226, 219, 241, 241, 235, 236, 250, 4, 9, 249, 222, 5, 33, 27, 10, 251, 3, 6, 255, 233, 223, 228, 220, 231, 12, 25, 22, 30,
+			41, 27, 252, 229, 234, 229, 220, 228, 241, 250, 246, 7, 29, 32, 12, 232, 224, 213, 212, 230, 229, 240, 239, 8, 21, 19, 28, 26, 13, 236,
+			218, 241, 250, 4, 12, 5, 29, 46, 25, 254, 235, 236, 244, 235, 228, 217, 233, 16, 21, 242, 243, 13, 22, 0, 254, 0, 249, 254, 247, 243,
+			252, 255, 7, 23, 46, 37, 13, 16, 247, 228, 222, 237, 10, 27, 23, 24, 45, 51, 26, 241, 236, 227, 211, 229, 0, 3, 3, 14, 19, 13,
+			21, 31, 0, 206, 202, 219, 242, 248, 220, 245, 39, 28, 3, 252, 253, 239, 210, 199, 215, 233, 26, 55, 48, 42, 38, 30, 9, 227, 212, 214,
+			221, 247, 8, 11, 28, 48, 45, 25, 253, 250, 245, 218, 197, 202, 236, 15, 15, 30, 33, 9, 7, 250, 217, 206, 214, 226, 255, 18, 22, 47,
+			74, 46, 8, 244, 236, 234, 232, 250, 9, 39, 90, 87, 52, 25, 12, 9, 231, 190, 199, 224, 244, 22, 30, 40, 45, 21, 239, 218, 199, 190,
+			226, 22, 44, 21, 47, 60, 19, 223, 204, 233, 235, 220, 220, 3, 42, 50, 30, 15, 3, 239, 232, 217, 214, 239, 14, 29, 32, 39, 42, 47,
+			25, 245, 226, 234, 241, 244, 7, 13, 14, 9, 21, 6, 234, 221, 213, 231, 245, 252, 251, 243, 10, 11, 251, 242, 253, 239, 211, 206, 230, 244,
+			241, 0, 16, 27, 29, 13, 235, 222, 208, 206, 244, 10, 4, 1, 29, 43, 24, 253, 238, 239, 235, 237, 235, 243, 13, 28, 21, 6, 15, 20,
+			6, 244, 225, 222, 245, 6, 2, 8, 25, 39, 33, 2, 227, 225, 246, 212, 186, 230, 21, 28, 22, 31, 33, 255, 229, 215, 199, 223, 251, 252,
+			18, 61, 59, 38, 17, 7, 250, 231, 222, 218, 232, 249, 10, 38, 57, 35, 5, 249, 239, 227, 213, 221, 5, 14, 3, 19, 36, 43, 36, 7,
+			235, 214, 218, 222, 211, 212, 253, 29, 25, 16, 1, 232, 212, 203, 213, 233, 250, 7, 29, 47, 18, 4, 3, 245, 224, 208, 241, 17, 23, 0,
+			248, 14, 27, 23, 242, 242, 255, 249, 250, 252, 253, 2, 7, 0, 247, 239, 223, 205, 231, 254, 245, 254, 250, 7, 249, 220, 237, 18, 254, 222,
+			232, 2, 16, 247, 230, 246, 9, 14, 249, 233, 246, 8, 15, 9, 253, 255, 18, 15, 252, 247, 0, 248, 233, 241, 240, 251, 27, 46, 43, 16,
+			249, 236, 221, 218, 220, 238, 8, 17, 21, 251, 238, 1, 252, 225, 207, 221, 252, 9, 9, 10, 18, 26, 7, 227, 221, 235, 233, 238, 11, 27,
+			40, 42, 30, 18, 241, 217, 218, 217, 230, 2, 10, 33, 56, 47, 255, 226, 213, 204, 210, 212, 231, 17, 38, 26, 7, 250, 0, 245, 210, 199,
+			216, 234, 253, 12, 22, 21, 7, 245, 231, 211, 218, 249, 7, 11, 24, 24, 17, 10, 240, 229, 226, 235, 4, 14, 34, 40, 23, 17, 1, 232,
+			228, 244, 252, 13, 31, 29, 28, 5, 247, 244, 211, 218, 250, 3, 2, 18, 12, 249, 242, 245, 242, 219, 226, 255, 14, 17, 14, 6, 2, 251,
+			244, 238, 236, 253, 8, 18, 37, 38, 13, 226, 231, 254, 249, 255, 19, 35, 37, 26, 9, 0, 236, 212, 226, 249, 251, 252, 31, 64, 40, 245,
+			240, 241, 214, 200, 227, 21, 40, 18, 22, 32, 5, 246, 238, 232, 242, 243, 252, 11, 16, 12, 12, 20, 3, 236, 240, 3, 16, 12, 15, 18,
+			11, 250, 247, 248, 238, 240, 250, 254, 11, 16, 33, 35, 9, 236, 225, 239, 10, 0, 233, 5, 27, 10, 245, 239, 254, 8, 3, 2, 14, 1,
+			8, 15, 231, 217, 240, 251, 11, 22, 2, 11, 22, 19, 250, 232, 1, 17, 0, 247, 249, 254, 1, 248, 232, 240, 7, 30, 21, 253, 251, 235,
+			226, 245, 253, 243, 253, 28, 36, 20, 5, 0, 7, 1, 234, 220, 228, 245, 7, 12, 4, 245, 247, 254, 243, 224, 230, 238, 246, 10, 7, 249,
+			237, 251, 10, 6, 250, 255, 17, 21, 4, 240, 250, 21, 16, 253, 241, 243, 11, 15, 255, 254, 0, 243, 231, 249, 13, 7, 4, 7, 1, 250,
+			230, 223, 251, 3, 254, 12, 34, 36, 15, 252, 243, 245, 239, 244, 255, 15, 20, 26, 31, 7, 243, 222, 220, 236, 243, 0, 21, 20, 8, 7,
+			1, 241, 225, 239, 4, 7, 250, 252, 19, 13, 248, 240, 240, 241, 247, 252, 252, 252, 11, 20, 8, 250, 254, 5, 2, 247, 240, 5, 35, 19,
+			0, 9, 17, 18, 12, 3, 0, 253, 239, 239, 3, 3, 243, 252, 16, 8, 237, 233, 237, 232, 229, 227, 239, 20, 20, 253, 248, 242, 228, 240,
+			249, 246, 4, 28, 33, 11, 250, 240, 230, 239, 244, 250, 17, 33, 25, 14, 2, 239, 230, 238, 245, 250, 10, 42, 51, 18, 244, 229, 238, 230,
+			216, 231, 6, 32, 28, 2, 235, 228, 218, 192, 183, 222, 15, 37, 26, 5, 244, 237, 226, 225, 248, 8, 21, 42, 56, 41, 10, 242, 230, 231,
+			242, 249, 17, 50, 52, 18, 248, 244, 233, 225, 228, 238, 6, 43, 45, 22, 6, 248, 231, 219, 213, 225, 0, 31, 39, 16, 245, 231, 217, 210,
+			225, 253, 25, 45, 31, 4, 236, 228, 239, 239, 240, 249, 19, 37, 22, 4, 245, 241, 249, 245, 243, 5, 21, 16, 2, 252, 250, 255, 0, 241,
+			227, 230, 251, 251, 251, 11, 9, 252, 231, 219, 228, 240, 252, 7, 8, 6, 8, 4, 253, 242, 234, 241, 15, 29, 22, 12, 7, 0, 255, 247,
+			234, 248, 12, 22, 14, 0, 0, 0, 90, 0, 2, 0, 37, 0, 184, 0, 24, 2, 112, 5, 72, 8, 0, 10, 188, 12, 136, 19, 90, 2,
+			9, 16, 4, 6, 8, 3, 3, 3, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 184, 0, 24, 2, 112, 5, 248, 7, 236, 9, 188, 12,
+			131, 24, 0, 0, 7, 2, 3, 8, 6, 2, 1, 1, 157, 125, 137, 137, 150, 175, 157, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 0, 1, 3, 5, 7, 9, 11, 13, 15, 17,
+			19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77,
+			79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137,
+			139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197,
+			199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 254, 254,
+			253, 252, 251, 250, 249, 247, 246, 245, 244, 243, 241, 240, 239, 237, 236, 234, 233, 231, 230, 228, 226, 225, 223, 221, 220, 218, 216, 214, 212, 210,
+			209, 207, 205, 203, 201, 199, 197, 195, 193, 191, 189, 186, 184, 182, 180, 178, 176, 174, 171, 169, 167, 165, 162, 160, 158, 156, 153, 151, 149, 147,
+			144, 142, 140, 137, 135, 133, 131, 128, 126, 124, 121, 119, 117, 114, 112, 110, 108, 105, 103, 101, 99, 96, 94, 92, 90, 88, 85, 83, 81, 79,
+			77, 75, 73, 70, 68, 66, 64, 62, 59, 57, 55, 53, 51, 49, 46, 44, 42, 40, 38, 35, 33, 31, 29, 27, 25, 23, 20, 18, 16, 14,
+			12, 10, 8, 6, 4, 2, 0, 2, 4, 6, 8, 10, 11, 13, 15, 16, 18, 19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+			34, 35, 36, 36, 37, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60,
+			62, 63, 64, 66, 68, 69, 71, 73, 75, 77, 79, 81, 83, 85, 88, 90, 93, 95, 98, 101, 104, 107, 110, 114, 117, 121, 124, 128, 132, 136,
+			140, 145, 149, 154, 159, 163, 166, 170, 174, 177, 181, 184, 188, 192, 195, 199, 202, 206, 209, 213, 216, 219, 223, 226, 229, 232, 235, 238, 241, 243,
+			245, 247, 249, 250, 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 254, 251, 248, 245, 242, 238, 234, 230, 227, 222, 218, 214, 210, 205, 201, 196,
+			191, 187, 182, 177, 172, 167, 162, 157, 152, 147, 142, 137, 132, 127, 122, 117, 112, 107, 102, 97, 92, 87, 82, 78, 73, 69, 64, 60, 56, 51,
+			47, 43, 40, 36, 32, 29, 26, 23, 20, 17, 14, 12, 9, 7, 5, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3,
+			5, 7, 10, 12, 15, 19, 23, 27, 31, 36, 41, 46, 52, 58, 65, 72, 79, 86, 94, 103, 112, 117, 122, 127, 132, 137, 142, 147, 152, 157,
+			162, 167, 172, 177, 182, 187, 191, 196, 201, 205, 210, 214, 218, 222, 227, 230, 234, 238, 242, 245, 248, 251, 127, 123, 118, 114, 110, 105, 101, 97,
+			94, 90, 86, 82, 79, 75, 72, 68, 65, 62, 59, 56, 53, 50, 47, 44, 42, 39, 37, 34, 32, 30, 28, 26, 24, 22, 20, 19, 17, 16,
+			14, 13, 12, 11, 10, 9, 8, 7, 6, 6, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, 9, 10, 11, 12, 13, 15,
+			16, 18, 20, 21, 23, 25, 27, 30, 32, 34, 37, 40, 42, 45, 48, 51, 55, 58, 61, 65, 68, 72, 76, 80, 84, 88, 93, 97, 101, 105,
+			109, 113, 117, 122, 126, 130, 134, 139, 143, 148, 152, 157, 162, 166, 171, 176, 181, 186, 191, 196, 201, 206, 211, 217, 222, 227, 233, 238, 243, 249,
+			152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
+			152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 151, 143, 136, 128, 121, 114, 108, 101, 95, 90, 85, 81, 77, 73, 70,
+			68, 66, 65, 65, 66, 67, 69, 72, 76, 81, 86, 93, 101, 109, 119, 130, 142, 152, 152, 152, 152, 151, 151, 151, 151, 150, 150, 150, 150, 149,
+			149, 149, 149, 148, 148, 148, 148, 147, 147, 147, 147, 146, 146, 146, 146, 145, 145, 145, 145, 144, 144, 144, 144, 143, 143, 143, 143, 142, 142, 142,
+			142, 141, 141, 141, 141, 140, 140, 140, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+			127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
+			124, 120, 116, 112, 108, 104, 101, 97, 94, 91, 88, 86, 84, 82, 80, 78, 77, 76, 75, 75, 75, 76, 76, 78, 79, 81, 84, 86, 90, 94,
+			98, 103, 108, 114, 120, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 160, 0, 4, 0, 1, 0, 130, 0, 48, 1, 24, 6, 36, 9,
+			12, 13, 0, 15, 151, 25, 45, 37, 19, 55, 43, 34, 40, 30, 10, 11, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 130, 0, 48, 1,
+			24, 6, 36, 9, 12, 13, 0, 15, 151, 25, 70, 63, 25, 72, 56, 45, 52, 40, 13, 15, 167, 96, 127, 120, 120, 120, 197, 120, 127, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			130, 0, 48, 1, 24, 6, 36, 9, 12, 13, 0, 15, 151, 25, 45, 51, 22, 64, 50, 40, 46, 36, 11, 13, 167, 96, 127, 120, 120, 120,
+			197, 120, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 130, 0, 48, 1, 24, 6, 36, 9, 12, 13, 0, 15, 151, 25, 0, 63, 25, 72, 56, 45, 52, 40, 13, 15, 167, 96,
+			127, 120, 120, 120, 197, 120, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 112, 0, 244, 1, 132, 5, 36, 9, 188, 12, 116, 14, 96, 27, 45, 41, 27, 54,
+			66, 33, 39, 30, 15, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 116, 0, 244, 1, 132, 5, 16, 9, 188, 12, 116, 14, 96, 27,
+			80, 67, 34, 66, 88, 44, 55, 40, 21, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 244, 1, 132, 5, 16, 9, 188, 12,
+			116, 14, 96, 27, 60, 54, 30, 59, 79, 39, 49, 36, 19, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 244, 1, 132, 5,
+			36, 9, 188, 12, 116, 14, 96, 27, 0, 32, 24, 47, 58, 25, 36, 26, 13, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 250, 0, 5, 0,
+			1, 0, 24, 1, 224, 2, 220, 5, 196, 9, 112, 13, 40, 15, 153, 28, 45, 46, 31, 60, 60, 46, 36, 28, 10, 6, 215, 138, 143, 120,
+			120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0,
+			176, 250, 118, 0, 3, 0, 24, 1, 224, 2, 220, 5, 196, 9, 112, 13, 40, 15, 153, 28, 80, 89, 44, 84, 84, 64, 51, 39, 14, 8,
+			215, 138, 143, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 218, 0, 8, 2, 168, 7, 50, 10, 102, 13, 25, 15, 93, 28, 80, 58, 35, 62, 62, 51,
+			43, 33, 11, 8, 191, 114, 139, 120, 120, 120, 237, 165, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 156, 0, 56, 1, 36, 9, 160, 10, 92, 13, 10, 15, 32, 28, 45, 34,
+			30, 46, 47, 43, 39, 31, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 56, 1, 36, 9, 160, 10, 92, 13, 10, 15,
+			32, 28, 0, 31, 28, 44, 45, 41, 38, 30, 8, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 165, 0, 5, 0, 1, 0, 179, 0, 40, 2,
+			172, 3, 96, 10, 15, 12, 141, 14, 32, 27, 45, 47, 26, 53, 60, 38, 37, 17, 13, 5, 166, 135, 150, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0,
+			179, 0, 40, 2, 172, 3, 96, 10, 15, 12, 141, 14, 32, 27, 75, 97, 37, 76, 86, 54, 53, 25, 18, 7, 166, 135, 150, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 179, 0, 27, 2, 0, 4, 91, 10, 35, 12, 144, 14, 18, 27, 50, 68, 33, 68, 75, 49, 48, 24, 16, 7, 165, 134,
+			149, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0,
+			0, 0, 1, 250, 0, 0, 5, 0, 180, 0, 158, 1, 244, 6, 38, 10, 218, 12, 175, 14, 141, 26, 45, 32, 22, 49, 42, 40, 36, 27,
+			10, 4, 161, 128, 142, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 181, 0, 144, 1, 13, 7, 32, 10, 239, 12, 179, 14, 126, 26, 0, 24, 20, 45,
+			37, 37, 34, 26, 9, 4, 160, 127, 142, 120, 120, 120, 130, 87, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 250, 0, 5, 0, 1, 0, 135, 0, 88, 1, 220, 5, 132, 8, 128, 12,
+			128, 14, 153, 24, 45, 38, 11, 58, 50, 44, 41, 29, 9, 10, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 135, 0, 88, 1, 220, 5,
+			132, 8, 128, 12, 128, 14, 153, 24, 80, 77, 16, 84, 72, 64, 58, 41, 13, 14, 178, 122, 132, 123, 123, 141, 187, 130, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 141, 0,
+			86, 1, 132, 6, 29, 9, 192, 12, 170, 14, 158, 25, 80, 50, 14, 68, 54, 50, 47, 35, 11, 11, 175, 118, 139, 122, 122, 134, 187, 130,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 158, 0, 80, 1, 12, 8, 130, 10, 86, 13, 13, 15, 255, 27, 45, 31, 15, 53, 30, 37, 37, 31, 9, 8, 168, 109, 155, 120,
+			120, 120, 177, 109, 152, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 156, 0, 72, 1, 112, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 31, 18, 55, 33, 36, 37, 29, 8, 7,
+			167, 105, 155, 120, 120, 120, 122, 105, 140, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+			124, 169, 247, 191, 251, 250, 201, 182, 0, 0, 6, 0, 1, 0, 224, 0, 8, 3, 216, 4, 236, 9, 8, 12, 116, 14, 224, 27, 46, 69,
+			26, 64, 75, 42, 45, 28, 10, 5, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 224, 0, 8, 3, 216, 4, 236, 9, 8, 12, 116, 14,
+			224, 27, 60, 111, 34, 82, 95, 54, 57, 36, 13, 7, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 224, 0, 208, 2, 16, 4, 96, 9,
+			8, 12, 116, 14, 224, 27, 70, 100, 32, 77, 64, 51, 54, 34, 12, 6, 225, 120, 187, 120, 120, 120, 255, 120, 187, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 240, 0, 24, 2,
+			92, 3, 56, 9, 48, 12, 79, 14, 160, 27, 70, 93, 38, 68, 40, 36, 48, 33, 15, 8, 215, 112, 172, 120, 120, 120, 255, 120, 187, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			0, 1, 200, 1, 52, 3, 16, 9, 8, 12, 41, 14, 96, 27, 30, 84, 36, 76, 59, 21, 35, 23, 15, 8, 205, 105, 157, 120, 120, 120,
+			145, 105, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250,
+			201, 182, 1, 0, 172, 0, 152, 1, 188, 2, 192, 8, 88, 12, 60, 15, 96, 27, 0, 37, 24, 48, 40, 24, 20, 12, 10, 8, 200, 90,
+			120, 120, 120, 120, 200, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36,
+			0, 0, 53, 250, 0, 0, 217, 0, 6, 0, 1, 0, 104, 0, 144, 1, 132, 8, 160, 10, 72, 13, 60, 15, 32, 27, 42, 45, 17, 61,
+			61, 61, 57, 31, 12, 7, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 104, 0, 144, 1, 132, 8, 160, 10, 72, 13, 60, 15, 32, 27,
+			40, 63, 20, 72, 72, 72, 67, 37, 15, 8, 167, 120, 157, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 117, 0, 192, 1, 9, 8, 113, 10, 47, 13,
+			24, 15, 42, 27, 50, 64, 24, 74, 74, 68, 64, 38, 16, 8, 167, 122, 153, 120, 120, 120, 167, 120, 157, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 169, 0, 69, 2, 26, 6,
+			180, 9, 201, 12, 135, 14, 82, 27, 50, 64, 37, 74, 74, 50, 48, 38, 20, 7, 167, 133, 137, 120, 120, 120, 167, 120, 157, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 176, 0,
+			128, 2, 220, 5, 156, 9, 188, 12, 116, 14, 88, 27, 35, 58, 37, 71, 71, 46, 44, 37, 19, 7, 167, 135, 135, 120, 120, 120, 197, 135,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182,
+			1, 0, 176, 0, 128, 2, 220, 5, 156, 9, 188, 12, 116, 14, 88, 27, 0, 39, 30, 58, 58, 38, 36, 30, 16, 6, 167, 135, 135, 120,
+			120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0,
+			53, 250, 0, 0, 247, 0, 5, 0, 1, 0, 216, 0, 5, 3, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 45, 36, 32, 42, 54, 47,
+			39, 32, 13, 3, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 216, 0, 5, 3, 140, 5, 40, 10, 20, 13, 175, 14, 117, 27, 60, 52,
+			38, 50, 64, 55, 46, 38, 16, 4, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 216, 0, 223, 2, 50, 5, 38, 10, 245, 12, 156, 14,
+			132, 27, 80, 40, 35, 43, 54, 48, 41, 33, 13, 4, 195, 154, 192, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 59, 170, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 208, 0, 136, 1, 8, 2, 20, 10,
+			216, 11, 234, 13, 15, 28, 62, 26, 39, 30, 16, 28, 28, 19, 6, 5, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44, 45, 70, 130, 60,
+			155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 208, 0, 136, 1,
+			8, 2, 20, 10, 216, 11, 234, 13, 15, 28, 0, 16, 32, 22, 14, 24, 24, 17, 5, 4, 186, 83, 122, 120, 120, 120, 105, 135, 135, 44,
+			45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 255, 0,
+			5, 0, 1, 0, 168, 0, 16, 2, 112, 3, 88, 10, 104, 11, 141, 14, 32, 27, 45, 52, 20, 51, 62, 38, 34, 17, 12, 5, 167, 135,
+			150, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0,
+			0, 0, 176, 250, 118, 0, 3, 0, 55, 1, 158, 2, 183, 6, 252, 9, 163, 13, 121, 15, 154, 28, 70, 68, 44, 66, 82, 63, 44, 31,
+			11, 6, 255, 140, 173, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 55, 1, 158, 2, 183, 6, 252, 9, 163, 13, 121, 15, 154, 28, 80, 68, 44, 66,
+			82, 63, 44, 31, 11, 6, 255, 140, 173, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 61, 1, 178, 2, 159, 6, 56, 10, 143, 13, 44, 15, 103, 28,
+			60, 56, 48, 54, 80, 51, 42, 28, 11, 6, 226, 136, 157, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 61, 1, 178, 2, 159, 6, 56, 10, 143, 13,
+			44, 15, 103, 28, 0, 38, 39, 44, 65, 41, 34, 23, 9, 5, 226, 136, 157, 120, 120, 120, 150, 180, 150, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 250, 0, 5, 0, 1, 0, 152, 0,
+			24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 45, 27, 6, 51, 45, 45, 46, 22, 10, 4, 167, 105, 120, 120, 120, 120, 167, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0,
+			3, 0, 152, 0, 24, 1, 232, 8, 4, 11, 52, 13, 0, 15, 160, 26, 80, 65, 9, 78, 69, 70, 71, 34, 16, 7, 167, 105, 120, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 200, 0, 200, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 65, 55, 30, 64, 64, 64, 54, 40, 12, 6,
+			185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			2, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 192, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 60, 41, 26, 55, 55, 55,
+			46, 35, 11, 5, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 184, 1, 188, 7, 236, 9, 32, 13, 136, 14, 128, 28, 0, 36,
+			24, 51, 51, 51, 43, 33, 10, 5, 185, 107, 127, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 175, 0, 4, 0, 1, 0, 148, 0, 0, 1, 228, 2, 96, 9,
+			12, 13, 60, 15, 144, 26, 45, 30, 3, 59, 39, 16, 26, 29, 9, 8, 177, 105, 100, 120, 120, 120, 177, 105, 115, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 3, 0, 148, 0, 0, 1,
+			228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 70, 44, 4, 72, 48, 20, 32, 36, 12, 10, 177, 105, 100, 120, 120, 120, 177, 105, 115, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			148, 0, 0, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 60, 39, 3, 68, 45, 19, 30, 34, 11, 9, 177, 105, 100, 120, 120, 120,
+			177, 105, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 148, 0, 0, 1, 228, 2, 96, 9, 12, 13, 60, 15, 144, 26, 0, 26, 3, 56, 37, 15, 24, 28, 9, 7, 177, 105,
+			100, 120, 120, 120, 177, 105, 115, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 199, 1, 107, 0, 228, 227, 236, 249, 249, 248, 3, 11, 2, 254, 6, 17, 19, 15, 253, 221, 196, 203, 14, 49,
+			10, 9, 24, 68, 126, 69, 24, 33, 24, 255, 225, 210, 227, 248, 226, 203, 208, 217, 213, 219, 247, 11, 11, 3, 254, 0, 253, 244, 245, 6,
+			30, 37, 31, 27, 20, 15, 18, 17, 11, 14, 15, 6, 254, 249, 239, 232, 244, 4, 8, 15, 29, 29, 17, 19, 15, 234, 201, 204, 218, 222,
+			226, 234, 240, 250, 9, 13, 12, 30, 55, 56, 44, 36, 23, 5, 0, 252, 231, 219, 233, 251, 251, 249, 0, 2, 254, 1, 7, 0, 241, 241,
+			4, 18, 14, 3, 245, 226, 220, 232, 244, 0, 27, 58, 58, 37, 29, 29, 19, 12, 14, 7, 1, 14, 19, 252, 230, 229, 229, 222, 229, 243,
+			245, 240, 246, 254, 246, 232, 233, 240, 246, 2, 25, 40, 34, 24, 24, 21, 11, 6, 8, 6, 4, 11, 11, 252, 242, 251, 2, 4, 12, 23,
+			25, 23, 21, 7, 241, 230, 233, 233, 229, 230, 235, 238, 243, 251, 255, 0, 11, 25, 30, 29, 29, 27, 20, 10, 0, 250, 251, 252, 251, 253,
+			253, 250, 251, 1, 7, 8, 0, 249, 250, 1, 1, 255, 0, 4, 1, 0, 3, 3, 254, 2, 17, 15, 0, 0, 10, 4, 251, 255, 2, 0,
+			2, 10, 10, 8, 10, 11, 9, 8, 8, 8, 5, 0, 251, 245, 246, 254, 252, 243, 248, 2, 0, 253, 5, 8, 0, 255, 10, 14, 4, 1,
+			8, 3, 249, 252, 7, 4, 252, 0, 9, 11, 6, 4, 5, 3, 1, 7, 13, 11, 7, 7, 9, 3, 253, 253, 254, 248, 244, 250, 0, 0,
+			255, 0, 1, 4, 4, 5, 9, 10, 9, 11, 10, 7, 3, 255, 251, 252, 254, 254, 1, 2, 255, 0, 3, 4, 2, 2, 4, 5, 4, 4,
+			6, 5, 0, 255, 1, 0, 0, 1, 2, 2, 2, 0, 1, 4, 6, 10, 12, 8, 3, 4, 8, 9, 4, 1, 3, 1, 252, 251, 253, 252,
+			252, 0, 0, 255, 255, 3, 6, 7, 7, 7, 7, 7, 5, 3, 3, 0, 251, 0, 6, 2, 254, 2, 4, 0, 0, 4, 2, 3, 8, 5,
+			0, 0, 1, 2, 1, 0, 0, 2, 4, 7, 7, 4, 4, 6, 6, 5, 7, 7, 5, 2, 255, 255, 0, 0, 255, 0, 255, 0, 5, 4,
+			0, 0, 2, 2, 2, 0, 1, 4, 6, 3, 2, 2, 4, 4, 4, 5, 7, 8, 9, 10, 5, 255, 0, 4, 2, 1, 1, 0, 0, 1,
+			1, 0, 0, 2, 3, 4, 3, 1, 1, 3, 5, 3, 3, 4, 3, 0, 110, 0, 4, 0, 5, 0, 76, 0, 80, 1, 200, 5, 40, 10,
+			152, 13, 160, 15, 32, 29, 40, 19, 11, 48, 18, 14, 36, 21, 9, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 2, 0, 0, 0, 2, 0, 0, 0, 176, 250, 118, 0, 1, 0, 76, 0, 80, 1,
+			200, 5, 40, 10, 152, 13, 160, 15, 32, 29, 35, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123, 97, 120, 120, 120, 90, 116, 97, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 17, 0,
+			76, 0, 80, 1, 200, 5, 40, 10, 152, 13, 160, 15, 32, 29, 35, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123, 97, 120, 120, 120,
+			90, 116, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 2, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 76, 0, 80, 1, 200, 5, 40, 10, 152, 13, 160, 15, 32, 29, 0, 27, 13, 57, 22, 17, 42, 25, 11, 0, 150, 123,
+			97, 120, 120, 120, 90, 116, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 236, 5, 35, 0, 255, 2, 6, 7, 2, 254, 3, 10, 4, 248, 254, 10, 1, 243, 253, 8, 255, 251, 5, 5,
+			252, 247, 246, 254, 7, 0, 248, 1, 10, 5, 255, 252, 1, 10, 4, 249, 254, 5, 1, 0, 5, 9, 7, 252, 245, 0, 10, 1, 245, 246,
+			3, 10, 250, 239, 6, 20, 254, 242, 3, 7, 251, 251, 5, 8, 1, 252, 0, 2, 253, 254, 8, 10, 3, 251, 246, 2, 12, 250, 238, 3,
+			12, 250, 251, 10, 3, 250, 5, 6, 247, 252, 6, 244, 243, 41, 55, 238, 208, 12, 30, 226, 204, 1, 49, 35, 236, 215, 3, 25, 238, 217,
+			1, 32, 17, 0, 2, 6, 251, 247, 4, 2, 242, 6, 34, 9, 242, 3, 7, 250, 0, 9, 252, 241, 244, 253, 253, 236, 241, 20, 16, 233,
+			239, 13, 5, 251, 6, 16, 20, 12, 251, 6, 22, 248, 231, 7, 10, 238, 245, 8, 252, 228, 225, 4, 39, 10, 227, 5, 47, 23, 255, 253,
+			243, 245, 255, 247, 248, 4, 255, 1, 10, 245, 235, 4, 254, 234, 255, 14, 3, 17, 30, 1, 242, 5, 9, 245, 237, 3, 17, 253, 248, 14,
+			251, 222, 8, 28, 228, 232, 39, 13, 222, 4, 22, 233, 243, 27, 6, 238, 0, 11, 4, 5, 252, 242, 5, 18, 243, 216, 255, 43, 7, 214,
+			253, 33, 222, 189, 40, 106, 17, 203, 2, 47, 255, 210, 251, 51, 16, 200, 227, 43, 13, 199, 218, 254, 237, 243, 25, 11, 232, 250, 42, 49,
+			4, 235, 25, 60, 0, 204, 250, 29, 248, 238, 13, 249, 200, 229, 42, 22, 195, 214, 61, 46, 199, 222, 61, 34, 220, 2, 53, 6, 213, 243,
+			35, 19, 220, 220, 20, 30, 242, 234, 12, 24, 0, 229, 238, 19, 19, 241, 251, 18, 247, 234, 20, 22, 228, 230, 20, 16, 227, 219, 0, 24,
+			13, 250, 252, 20, 22, 236, 218, 16, 45, 248, 226, 20, 31, 248, 246, 11, 0, 245, 5, 14, 253, 238, 253, 10, 249, 237, 1, 2, 237, 254,
+			26, 4, 233, 0, 24, 5, 246, 255, 247, 241, 15, 27, 242, 240, 39, 35, 220, 212, 14, 28, 241, 224, 10, 44, 6, 214, 246, 33, 1, 226,
+			5, 31, 253, 224, 251, 34, 19, 225, 229, 27, 25, 231, 232, 13, 19, 4, 254, 4, 16, 253, 220, 246, 30, 255, 217, 255, 43, 20, 224, 216,
+			15, 47, 244, 200, 6, 59, 9, 212, 236, 36, 40, 231, 202, 19, 66, 2, 210, 245, 26, 22, 243, 216, 255, 52, 17, 209, 220, 8, 19, 2,
+			242, 251, 16, 1, 237, 8, 28, 252, 231, 2, 35, 25, 231, 216, 25, 56, 235, 190, 255, 40, 0, 232, 253, 2, 248, 254, 14, 12, 244, 229,
+			0, 41, 29, 229, 223, 26, 46, 250, 217, 240, 9, 18, 11, 234, 221, 11, 38, 247, 223, 10, 28, 248, 238, 14, 15, 234, 234, 25, 43, 254,
+			222, 255, 36, 15, 219, 208, 8, 59, 17, 205, 221, 19, 8, 231, 245, 12, 16, 19, 8, 246, 254, 4, 243, 255, 30, 8, 227, 253, 33, 13,
+			240, 240, 249, 4, 16, 6, 237, 232, 3, 24, 0, 222, 237, 20, 26, 255, 235, 251, 36, 41, 251, 230, 0, 4, 250, 9, 14, 246, 245, 13,
+			9, 238, 224, 235, 3, 22, 19, 255, 247, 4, 16, 3, 242, 246, 0, 5, 11, 11, 1, 3, 16, 11, 244, 230, 241, 2, 3, 246, 247, 5,
+			8, 3, 7, 12, 6, 254, 250, 2, 5, 242, 236, 14, 31, 250, 228, 8, 36, 2, 220, 230, 8, 14, 254, 255, 12, 11, 3, 4, 3, 250,
+			244, 245, 1, 12, 2, 248, 0, 0, 247, 253, 2, 251, 0, 10, 2, 253, 255, 255, 10, 12, 244, 246, 16, 2, 236, 254, 11, 2, 0, 249,
+			0, 21, 2, 222, 248, 24, 249, 231, 9, 20, 0, 0, 9, 9, 8, 5, 252, 248, 244, 241, 251, 9, 1, 244, 255, 15, 10, 250, 243, 4,
+			24, 7, 237, 250, 3, 239, 251, 30, 9, 236, 2, 12, 242, 242, 7, 3, 246, 255, 14, 3, 241, 0, 15, 249, 250, 29, 11, 228, 250, 16,
+			251, 246, 254, 249, 7, 21, 251, 232, 249, 7, 8, 3, 255, 10, 17, 255, 249, 253, 235, 229, 3, 18, 3, 1, 7, 4, 10, 18, 1, 247,
+			5, 8, 253, 1, 9, 10, 12, 251, 224, 238, 2, 242, 255, 32, 3, 232, 14, 22, 236, 236, 4, 255, 252, 2, 254, 248, 245, 248, 9, 17,
+			6, 0, 253, 255, 8, 252, 231, 255, 24, 6, 245, 0, 6, 255, 249, 2, 20, 16, 251, 247, 0, 255, 1, 9, 12, 13, 8, 0, 252, 247,
+			250, 0, 250, 244, 1, 5, 255, 0, 255, 0, 13, 0, 239, 6, 24, 255, 238, 253, 9, 2, 233, 229, 3, 4, 231, 249, 31, 19, 249, 255,
+			12, 12, 253, 239, 3, 31, 12, 241, 1, 21, 0, 235, 252, 3, 239, 248, 21, 5, 242, 8, 10, 245, 249, 247, 233, 254, 22, 19, 6, 239,
+			220, 240, 255, 241, 253, 24, 36, 37, 11, 238, 11, 42, 1, 222, 244, 15, 21, 4, 240, 253, 12, 251, 244, 255, 248, 248, 16, 22, 253, 230,
+			223, 230, 244, 2, 8, 0, 0, 21, 22, 237, 213, 238, 13, 21, 10, 5, 16, 18, 1, 241, 236, 245, 4, 1, 245, 0, 14, 10, 4, 3,
+			0, 0, 0, 0, 8, 9, 255, 0, 8, 4, 254, 253, 7, 21, 10, 248, 253, 1, 255, 252, 236, 232, 4, 12, 251, 5, 16, 251, 247, 0,
+			244, 246, 8, 6, 251, 249, 245, 248, 9, 15, 3, 254, 7, 8, 248, 244, 252, 253, 4, 10, 5, 14, 16, 244, 246, 21, 1, 239, 15, 12,
+			245, 20, 23, 233, 232, 1, 5, 2, 243, 246, 27, 17, 235, 253, 0, 232, 15, 36, 243, 250, 22, 237, 232, 8, 228, 219, 30, 32, 245, 3,
+			8, 224, 212, 234, 250, 5, 17, 39, 62, 50, 21, 11, 4, 249, 254, 7, 8, 17, 29, 9, 233, 232, 243, 237, 247, 11, 254, 247, 12, 246,
+			207, 224, 239, 233, 9, 26, 249, 254, 27, 10, 246, 244, 225, 230, 5, 1, 242, 0, 27, 37, 20, 246, 245, 13, 19, 17, 16, 255, 242, 2,
+			15, 2, 245, 255, 15, 12, 3, 5, 5, 4, 9, 247, 229, 251, 7, 245, 249, 8, 3, 9, 18, 0, 242, 246, 249, 248, 245, 245, 253, 252,
+			244, 252, 1, 246, 240, 248, 1, 9, 2, 254, 10, 7, 250, 4, 14, 7, 5, 1, 0, 15, 8, 252, 12, 9, 243, 3, 15, 249, 248, 6,
+			10, 15, 2, 241, 248, 237, 229, 10, 8, 235, 17, 27, 230, 2, 42, 232, 217, 25, 2, 217, 255, 9, 232, 239, 10, 14, 0, 251, 15, 9,
+			226, 246, 30, 253, 235, 18, 2, 218, 230, 231, 230, 19, 44, 40, 55, 49, 26, 31, 13, 236, 255, 22, 3, 0, 4, 245, 251, 7, 243, 221,
+			228, 241, 251, 249, 237, 239, 254, 244, 226, 235, 245, 240, 255, 23, 9, 251, 11, 6, 241, 2, 15, 246, 247, 21, 19, 253, 244, 245, 2, 16,
+			17, 19, 17, 0, 0, 12, 3, 2, 16, 11, 6, 23, 28, 11, 250, 244, 0, 5, 250, 245, 246, 246, 4, 9, 242, 234, 248, 243, 236, 245,
+			245, 243, 253, 255, 253, 255, 248, 248, 0, 254, 254, 10, 13, 1, 254, 252, 249, 0, 2, 1, 8, 17, 18, 13, 10, 6, 0, 254, 7, 7,
+			1, 11, 16, 0, 0, 19, 11, 250, 2, 6, 240, 234, 248, 239, 228, 246, 251, 230, 242, 10, 253, 250, 12, 3, 0, 13, 250, 246, 21, 249,
+			221, 18, 17, 230, 22, 31, 214, 251, 43, 229, 243, 51, 229, 210, 50, 3, 203, 34, 249, 130, 231, 69, 246, 14, 105, 44, 13, 82, 46, 232,
+			0, 20, 14, 7, 221, 233, 30, 230, 184, 0, 246, 185, 7, 44, 200, 213, 43, 238, 179, 236, 247, 229, 17, 24, 253, 13, 9, 248, 17, 8,
+			239, 24, 21, 205, 232, 44, 14, 253, 34, 19, 254, 30, 42, 17, 255, 241, 250, 8, 246, 246, 19, 3, 242, 27, 39, 0, 14, 49, 21, 246,
+			249, 236, 220, 237, 245, 228, 225, 240, 247, 241, 230, 237, 0, 253, 239, 254, 254, 227, 248, 23, 249, 240, 31, 35, 7, 21, 24, 253, 249, 254,
+			3, 18, 6, 253, 25, 18, 244, 11, 24, 249, 4, 33, 11, 252, 8, 6, 0, 245, 233, 250, 254, 231, 245, 13, 0, 253, 253, 225, 222, 248,
+			254, 251, 250, 250, 6, 6, 252, 8, 12, 0, 16, 15, 243, 3, 16, 234, 237, 7, 247, 0, 19, 243, 248, 25, 1, 254, 21, 245, 231, 238,
+			182, 195, 32, 25, 24, 116, 94, 26, 93, 87, 228, 254, 50, 229, 192, 231, 231, 228, 223, 192, 207, 232, 227, 21, 63, 252, 233, 2, 151, 0,
+			3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3,
+			3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 4, 3, 3, 3, 2, 1, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2,
+			2, 2, 3, 3, 3, 3, 3, 2, 2, 1, 2, 2, 2, 3, 3, 3, 3, 2, 2, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 1,
+			1, 1, 1, 2, 3, 3, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1,
+			0, 0, 1, 1, 3, 4, 4, 4, 4, 3, 1, 1, 0, 0, 2, 3, 4, 5, 5, 4, 2, 0, 0, 0, 1, 3, 5, 5, 5, 4,
+			3, 2, 1, 1, 3, 4, 5, 7, 8, 7, 10, 14, 11, 4, 2, 6, 12, 19, 25, 23, 12, 0, 250, 252, 3, 11, 15, 14, 11, 7,
+			4, 0, 0, 4, 9, 15, 15, 12, 13, 19, 23, 19, 12, 7, 7, 11, 18, 26, 34, 35, 27, 13, 0, 251, 0, 4, 11, 23, 24, 11,
+			3, 7, 8, 5, 5, 5, 5, 14, 23, 23, 16, 9, 5, 0, 251, 250, 4, 14, 14, 18, 24, 16, 5, 2, 254, 249, 1, 16, 19, 21,
+			24, 20, 12, 7, 3, 2, 7, 19, 33, 34, 23, 20, 20, 12, 7, 9, 7, 4, 3, 0, 255, 11, 23, 24, 15, 0, 250, 0, 4, 0,
+			0, 3, 8, 11, 12, 8, 5, 255, 245, 244, 0, 5, 5, 7, 8, 11, 17, 17, 6, 247, 239, 248, 10, 19, 17, 21, 22, 13, 4, 3,
+			3, 2, 0, 253, 251, 0, 3, 3, 8, 20, 23, 9, 252, 255, 9, 11, 9, 14, 17, 15, 13, 11, 2, 251, 248, 247, 252, 9, 18, 14,
+			10, 8, 4, 255, 250, 249, 0, 8, 5, 1, 8, 12, 10, 9, 6, 253, 248, 252, 1, 6, 11, 16, 15, 5, 254, 0, 5, 9, 9, 5,
+			0, 4, 13, 10, 3, 0, 254, 255, 2, 4, 4, 7, 8, 4, 0, 255, 255, 0, 253, 250, 251, 255, 2, 7, 7, 0, 249, 246, 247, 252,
+			0, 253, 250, 251, 0, 0, 253, 248, 248, 254, 1, 1, 255, 252, 251, 252, 252, 251, 252, 253, 254, 0, 0, 0, 0, 2, 3, 1, 255, 255,
+			2, 4, 4, 4, 4, 5, 5, 4, 2, 0, 3, 7, 9, 9, 8, 6, 6, 7, 9, 10, 8, 6, 6, 9, 14, 15, 13, 11, 9, 10,
+			12, 14, 15, 14, 13, 10, 9, 11, 14, 13, 8, 6, 7, 10, 11, 10, 7, 3, 0, 254, 253, 252, 251, 250, 248, 244, 240, 239, 240, 240,
+			239, 236, 230, 227, 224, 221, 217, 213, 211, 210, 210, 209, 206, 201, 199, 202, 209, 213, 214, 214, 216, 218, 221, 225, 229, 232, 235, 239, 243, 248,
+			254, 1, 4, 6, 8, 11, 14, 16, 19, 22, 24, 26, 27, 27, 26, 24, 23, 24, 26, 26, 25, 21, 16, 12, 9, 7, 5, 5, 4, 3,
+			3, 4, 5, 5, 1, 255, 255, 1, 4, 7, 9, 10, 8, 8, 10, 12, 15, 19, 24, 29, 34, 36, 35, 31, 28, 29, 34, 39, 41, 43,
+			44, 43, 40, 38, 35, 31, 29, 27, 25, 23, 18, 8, 254, 246, 241, 238, 239, 243, 243, 238, 229, 217, 202, 185, 171, 164, 163, 165, 167, 167,
+			160, 146, 136, 142, 162, 181, 194, 203, 204, 197, 193, 199, 210, 222, 235, 248, 0, 13, 26, 32, 30, 29, 35, 40, 44, 49, 54, 55, 53, 50,
+			46, 40, 32, 26, 20, 17, 20, 21, 14, 1, 246, 235, 224, 215, 211, 209, 205, 200, 197, 194, 194, 196, 195, 192, 192, 195, 197, 198, 204, 214,
+			226, 238, 249, 0, 5, 12, 17, 23, 31, 41, 51, 61, 69, 77, 83, 86, 86, 85, 83, 82, 80, 79, 79, 79, 79, 76, 72, 68, 63, 56,
+			50, 46, 43, 41, 37, 33, 28, 23, 19, 15, 14, 16, 17, 15, 10, 6, 1, 252, 246, 242, 239, 237, 236, 233, 229, 224, 218, 208, 196, 187,
+			180, 172, 165, 159, 152, 143, 134, 131, 139, 162, 193, 218, 232, 236, 233, 224, 216, 218, 229, 245, 8, 32, 56, 73, 80, 0, 0, 0, 160, 5,
+			191, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
+			0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 255, 0, 2, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 255, 1, 0, 254, 0, 1, 0, 254, 255, 1,
+			1, 0, 255, 2, 3, 0, 255, 1, 1, 0, 0, 1, 1, 0, 255, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 255, 0, 1, 1, 0,
+			0, 2, 0, 254, 0, 4, 1, 253, 255, 1, 0, 252, 253, 1, 4, 2, 0, 1, 2, 0, 0, 255, 255, 0, 254, 250, 251, 2, 7, 8,
+			5, 2, 3, 4, 255, 249, 253, 3, 3, 0, 253, 253, 0, 0, 254, 0, 2, 0, 253, 254, 1, 3, 2, 0, 1, 4, 0, 254, 4, 10,
+			7, 0, 253, 252, 250, 249, 253, 6, 10, 6, 2, 0, 253, 253, 0, 1, 2, 3, 0, 255, 0, 0, 254, 0, 2, 0, 252, 253, 2, 5,
+			0, 255, 6, 7, 251, 246, 0, 6, 4, 2, 1, 0, 253, 247, 248, 0, 3, 0, 2, 6, 3, 255, 255, 0, 3, 2, 0, 5, 0, 232,
+			223, 243, 6, 13, 25, 43, 43, 11, 227, 213, 228, 249, 9, 24, 30, 22, 8, 248, 233, 238, 4, 21, 15, 253, 235, 234, 247, 1, 9, 20,
+			25, 13, 249, 232, 226, 236, 254, 7, 4, 1, 3, 3, 255, 248, 253, 8, 7, 251, 244, 246, 250, 255, 6, 12, 16, 20, 14, 254, 245, 248,
+			251, 249, 249, 3, 17, 22, 15, 6, 1, 251, 247, 248, 250, 0, 8, 8, 0, 0, 4, 3, 2, 0, 250, 245, 248, 247, 243, 249, 3, 9,
+			9, 3, 255, 250, 241, 235, 244, 0, 4, 11, 24, 25, 9, 249, 243, 248, 255, 0, 0, 8, 13, 10, 3, 0, 1, 9, 10, 0, 244, 241,
+			246, 0, 8, 8, 8, 10, 6, 251, 242, 242, 248, 1, 6, 1, 254, 2, 4, 255, 253, 254, 250, 247, 252, 254, 253, 2, 10, 9, 1, 251,
+			253, 2, 5, 7, 3, 231, 190, 220, 43, 40, 246, 27, 127, 75, 201, 159, 206, 253, 9, 25, 53, 54, 20, 249, 235, 227, 225, 232, 249, 252,
+			225, 213, 254, 44, 31, 250, 246, 244, 235, 234, 219, 235, 2, 9, 14, 14, 13, 20, 18, 252, 232, 232, 248, 250, 1, 31, 26, 255, 12, 37,
+			17, 251, 250, 0, 255, 245, 241, 2, 21, 19, 9, 9, 7, 241, 224, 228, 234, 233, 243, 7, 20, 12, 251, 245, 249, 241, 229, 235, 245, 249,
+			0, 8, 7, 10, 15, 10, 5, 0, 247, 248, 0, 255, 1, 10, 18, 26, 31, 21, 10, 255, 243, 247, 251, 237, 241, 15, 25, 1, 241, 244,
+			245, 234, 226, 236, 248, 251, 3, 13, 9, 6, 6, 252, 248, 252, 244, 246, 10, 13, 1, 5, 11, 8, 3, 250, 242, 242, 244, 255, 9, 0,
+			255, 12, 4, 255, 12, 4, 245, 0, 231, 185, 249, 59, 13, 16, 98, 76, 242, 188, 195, 234, 250, 1, 36, 42, 8, 2, 1, 233, 221, 220,
+			228, 255, 246, 214, 243, 35, 30, 243, 236, 5, 5, 233, 230, 0, 5, 239, 249, 33, 34, 7, 11, 19, 252, 235, 246, 253, 2, 18, 21, 13,
+			17, 24, 17, 0, 242, 240, 244, 245, 245, 248, 252, 6, 13, 0, 244, 255, 251, 225, 221, 236, 240, 247, 11, 18, 8, 2, 2, 253, 242, 236,
+			243, 255, 3, 10, 21, 19, 13, 21, 18, 0, 252, 3, 7, 2, 248, 248, 13, 28, 14, 252, 250, 251, 239, 225, 230, 247, 253, 253, 3, 6,
+			0, 250, 247, 243, 239, 241, 251, 4, 9, 13, 13, 10, 9, 4, 0, 4, 1, 242, 251, 15, 7, 249, 2, 7, 255, 250, 248, 250, 1, 0,
+			248, 248, 0, 11, 11, 254, 255, 244, 194, 192, 18, 57, 30, 47, 83, 38, 219, 203, 224, 246, 7, 20, 25, 19, 17, 13, 235, 206, 223, 237,
+			225, 239, 7, 255, 252, 15, 6, 242, 255, 9, 248, 237, 252, 3, 247, 251, 23, 27, 0, 2, 25, 11, 245, 253, 255, 244, 5, 28, 20, 9,
+			15, 16, 3, 251, 249, 243, 241, 249, 252, 245, 247, 2, 1, 252, 254, 251, 240, 238, 244, 246, 245, 0, 16, 13, 2, 2, 1, 249, 248, 253,
+			249, 246, 0, 16, 26, 20, 8, 9, 10, 1, 255, 2, 254, 254, 3, 4, 4, 7, 6, 0, 247, 237, 236, 242, 245, 249, 252, 254, 6, 10,
+			0, 251, 253, 246, 240, 248, 1, 7, 12, 14, 11, 6, 0, 1, 5, 253, 245, 254, 8, 6, 1, 0, 1, 5, 0, 240, 238, 3, 14, 249,
+			235, 4, 25, 4, 247, 252, 229, 192, 218, 31, 38, 48, 78, 63, 6, 206, 206, 234, 250, 14, 40, 30, 13, 19, 7, 224, 205, 218, 227, 233,
+			252, 6, 1, 4, 14, 255, 235, 251, 9, 247, 241, 4, 4, 244, 3, 29, 15, 248, 11, 37, 9, 234, 248, 252, 238, 6, 37, 24, 14, 25,
+			7, 238, 249, 5, 248, 236, 250, 5, 249, 240, 3, 11, 251, 247, 249, 234, 234, 251, 248, 246, 13, 24, 11, 2, 0, 248, 244, 246, 253, 0,
+			253, 1, 20, 28, 18, 3, 250, 253, 5, 0, 0, 14, 17, 4, 253, 251, 254, 9, 9, 247, 237, 244, 248, 241, 243, 1, 5, 254, 1, 4,
+			247, 246, 0, 250, 244, 5, 15, 8, 11, 17, 4, 246, 252, 10, 3, 245, 252, 9, 2, 255, 3, 255, 251, 2, 0, 245, 251, 7, 5, 249,
+			248, 11, 17, 0, 0, 244, 187, 189, 31, 46, 26, 81, 93, 18, 203, 198, 223, 245, 7, 32, 44, 30, 12, 6, 237, 201, 203, 226, 235, 250,
+			10, 9, 5, 8, 254, 241, 251, 1, 248, 245, 0, 6, 1, 2, 15, 19, 6, 7, 23, 13, 242, 239, 250, 247, 0, 31, 40, 16, 4, 6,
+			254, 244, 248, 251, 246, 250, 5, 4, 250, 252, 4, 254, 242, 248, 254, 241, 234, 244, 252, 5, 20, 20, 5, 253, 249, 242, 238, 247, 4, 10,
+			7, 13, 21, 13, 0, 251, 247, 253, 10, 11, 3, 5, 10, 7, 0, 0, 9, 5, 245, 245, 254, 250, 247, 250, 250, 0, 7, 0, 251, 254,
+			245, 239, 245, 251, 5, 15, 6, 1, 13, 9, 252, 251, 0, 6, 6, 253, 4, 18, 1, 244, 2, 2, 251, 254, 246, 247, 7, 0, 249, 10,
+			2, 249, 18, 16, 243, 234, 206, 197, 22, 44, 28, 94, 90, 247, 196, 212, 219, 241, 17, 27, 34, 39, 22, 5, 233, 201, 193, 216, 237, 0,
+			20, 14, 10, 13, 249, 238, 2, 251, 230, 242, 1, 6, 13, 11, 8, 12, 8, 6, 19, 9, 235, 233, 247, 3, 21, 33, 27, 13, 253, 247,
+			253, 249, 242, 249, 255, 1, 16, 17, 255, 243, 244, 245, 247, 254, 0, 247, 241, 248, 0, 5, 14, 11, 249, 241, 249, 252, 249, 246, 245, 0,
+			18, 25, 18, 8, 3, 0, 244, 237, 2, 23, 14, 4, 4, 4, 10, 13, 252, 242, 254, 4, 254, 250, 251, 253, 254, 255, 3, 1, 249, 247,
+			248, 242, 244, 255, 4, 9, 9, 1, 254, 2, 3, 253, 248, 255, 12, 13, 5, 6, 1, 249, 253, 254, 251, 254, 253, 254, 8, 1, 248, 10,
+			6, 241, 7, 24, 250, 243, 241, 190, 220, 47, 31, 55, 101, 47, 223, 198, 202, 219, 251, 21, 46, 51, 28, 19, 251, 208, 192, 193, 221, 252,
+			27, 29, 16, 20, 11, 235, 235, 250, 233, 230, 249, 7, 18, 22, 15, 5, 255, 250, 0, 5, 252, 248, 250, 0, 22, 35, 22, 16, 13, 247,
+			238, 254, 251, 242, 0, 11, 8, 12, 13, 253, 235, 237, 248, 251, 251, 0, 0, 249, 1, 12, 4, 251, 252, 249, 240, 245, 0, 253, 250, 5,
+			11, 2, 6, 11, 255, 248, 255, 250, 246, 12, 27, 13, 4, 15, 16, 253, 240, 249, 4, 6, 7, 5, 255, 0, 6, 249, 240, 255, 3, 246,
+			246, 0, 255, 251, 250, 253, 4, 5, 252, 250, 1, 0, 254, 1, 8, 9, 3, 1, 5, 0, 245, 250, 7, 8, 255, 250, 2, 8, 252, 244,
+			255, 2, 85, 5, 64, 0, 0, 0, 255, 0, 2, 0, 0, 2, 1, 255, 0, 0, 255, 0, 1, 1, 3, 2, 0, 0, 3, 1, 255, 0,
+			0, 0, 0, 2, 1, 0, 1, 0, 255, 1, 2, 255, 254, 0, 0, 0, 1, 1, 0, 1, 0, 254, 255, 0, 1, 4, 3, 255, 255, 0,
+			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 254, 0, 3, 2, 0, 255, 0, 2, 3, 0, 0, 2, 1, 255, 0, 0, 0, 0, 1, 2,
+			1, 255, 253, 255, 1, 2, 0, 254, 0, 3, 1, 255, 0, 1, 0, 255, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 255, 255,
+			2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 2, 1, 255, 0, 0, 1, 0, 255, 255, 0, 0, 0, 0, 2, 1, 1, 0,
+			0, 1, 0, 0, 1, 0, 0, 1, 2, 0, 0, 0, 254, 255, 3, 2, 255, 0, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2, 253, 253,
+			0, 2, 2, 2, 0, 255, 1, 3, 1, 0, 0, 1, 0, 255, 0, 1, 3, 3, 255, 253, 0, 0, 2, 4, 1, 254, 254, 0, 0, 3,
+			1, 254, 0, 3, 2, 0, 0, 255, 1, 4, 255, 251, 1, 8, 5, 0, 0, 254, 245, 245, 12, 35, 15, 229, 225, 1, 20, 12, 1, 240,
+			231, 5, 34, 13, 241, 243, 251, 254, 9, 12, 255, 247, 252, 3, 13, 13, 250, 238, 252, 13, 7, 251, 1, 8, 252, 248, 5, 3, 247, 254,
+			10, 6, 254, 252, 0, 7, 4, 251, 252, 3, 6, 5, 1, 251, 251, 255, 7, 11, 252, 240, 4, 18, 251, 239, 5, 14, 251, 248, 7, 3,
+			245, 1, 17, 1, 244, 0, 1, 251, 7, 4, 246, 8, 13, 236, 246, 28, 4, 235, 7, 10, 238, 0, 21, 0, 242, 0, 13, 9, 243, 234,
+			9, 29, 255, 237, 255, 1, 250, 3, 12, 1, 250, 1, 8, 4, 248, 239, 5, 35, 8, 220, 246, 26, 255, 250, 29, 247, 200, 7, 54, 4,
+			233, 248, 251, 15, 23, 244, 242, 11, 252, 248, 15, 2, 236, 255, 16, 8, 253, 245, 0, 10, 248, 251, 26, 12, 234, 250, 15, 246, 236, 21,
+			36, 245, 220, 1, 16, 247, 248, 10, 10, 16, 6, 223, 234, 26, 20, 255, 6, 241, 226, 21, 42, 248, 230, 253, 254, 254, 8, 5, 2, 2,
+			253, 5, 7, 236, 237, 19, 25, 4, 253, 238, 237, 14, 21, 240, 234, 9, 26, 14, 237, 218, 2, 48, 20, 225, 230, 13, 20, 246, 244, 25,
+			29, 240, 219, 245, 17, 24, 254, 239, 19, 21, 212, 214, 36, 56, 0, 209, 222, 37, 53, 223, 199, 15, 44, 30, 254, 191, 220, 62, 31, 218,
+			7, 14, 218, 1, 33, 246, 249, 253, 229, 32, 70, 229, 178, 250, 57, 50, 234, 184, 250, 48, 9, 5, 10, 207, 222, 51, 41, 238, 230, 245,
+			14, 21, 245, 251, 18, 245, 242, 19, 5, 249, 2, 243, 254, 23, 250, 247, 18, 246, 243, 22, 239, 221, 39, 44, 238, 237, 0, 0, 4, 238,
+			243, 49, 37, 208, 206, 32, 59, 230, 176, 19, 87, 251, 220, 20, 227, 201, 44, 46, 238, 9, 3, 217, 253, 3, 0, 61, 19, 180, 239, 27,
+			238, 27, 47, 219, 229, 8, 231, 33, 54, 180, 202, 87, 44, 239, 14, 202, 170, 43, 80, 11, 3, 231, 213, 28, 6, 181, 22, 121, 248, 149,
+			1, 72, 250, 208, 16, 46, 254, 220, 236, 8, 26, 254, 214, 4, 77, 33, 184, 162, 247, 87, 69, 238, 242, 12, 211, 211, 27, 15, 11, 58,
+			241, 182, 31, 34, 175, 250, 112, 18, 185, 221, 248, 25, 41, 235, 4, 82, 230, 132, 248, 51, 251, 44, 61, 204, 218, 43, 217, 167, 32, 98,
+			53, 252, 178, 184, 45, 62, 225, 225, 29, 33, 0, 205, 213, 41, 35, 227, 39, 77, 186, 135, 23, 90, 20, 233, 251, 23, 12, 216, 210, 248,
+			7, 31, 48, 7, 239, 0, 239, 214, 235, 15, 55, 50, 234, 216, 1, 230, 213, 35, 69, 16, 215, 184, 251, 100, 28, 164, 1, 96, 238, 166,
+			253, 44, 20, 3, 254, 13, 1, 200, 233, 66, 15, 183, 250, 86, 32, 190, 195, 30, 61, 245, 219, 22, 20, 235, 255, 6, 243, 9, 2, 225,
+			13, 44, 240, 229, 1, 236, 10, 68, 253, 192, 11, 40, 245, 245, 244, 227, 21, 44, 251, 4, 16, 201, 212, 47, 16, 209, 27, 88, 14, 188,
+			186, 249, 51, 25, 249, 28, 0, 196, 6, 37, 194, 242, 118, 16, 160, 17, 42, 189, 237, 53, 247, 8, 73, 236, 166, 243, 15, 242, 23, 64,
+			35, 227, 189, 233, 36, 10, 238, 18, 30, 8, 253, 221, 213, 21, 38, 242, 253, 52, 23, 199, 187, 2, 47, 7, 250, 51, 40, 198, 175, 241,
+			25, 19, 9, 21, 41, 17, 217, 205, 230, 250, 31, 64, 38, 250, 231, 201, 196, 18, 80, 29, 237, 6, 252, 196, 215, 21, 34, 36, 38, 241,
+			200, 230, 247, 230, 5, 64, 69, 16, 223, 220, 219, 198, 244, 79, 66, 250, 10, 27, 206, 171, 239, 31, 23, 16, 16, 12, 5, 239, 214, 232,
+			25, 31, 251, 253, 22, 251, 220, 0, 39, 25, 242, 213, 232, 21, 13, 249, 27, 26, 220, 227, 23, 7, 229, 246, 13, 22, 25, 13, 253, 237,
+			228, 249, 11, 0, 5, 15, 252, 252, 22, 5, 229, 237, 248, 242, 2, 33, 34, 4, 240, 248, 252, 240, 248, 6, 10, 22, 16, 240, 250, 17,
+			231, 213, 18, 35, 248, 245, 9, 10, 10, 249, 227, 251, 25, 13, 241, 235, 6, 35, 13, 229, 236, 0, 6, 21, 7, 229, 253, 34, 252, 218,
+			0, 20, 250, 255, 25, 9, 231, 236, 6, 7, 250, 245, 249, 14, 37, 7, 215, 241, 44, 18, 208, 224, 28, 28, 255, 6, 17, 243, 227, 255,
+			14, 248, 232, 254, 27, 22, 253, 0, 8, 236, 219, 0, 23, 0, 243, 15, 45, 27, 223, 205, 5, 26, 228, 214, 25, 67, 23, 221, 234, 25,
+			5, 207, 238, 35, 0, 233, 31, 41, 244, 236, 253, 242, 248, 10, 254, 250, 14, 7, 250, 12, 15, 233, 217, 0, 34, 12, 244, 16, 34, 239,
+			209, 253, 19, 251, 251, 5, 255, 5, 14, 1, 254, 254, 231, 236, 21, 24, 253, 2, 17, 5, 244, 239, 245, 253, 251, 1, 20, 21, 9, 6,
+			248, 230, 242, 0, 253, 5, 16, 13, 17, 13, 241, 232, 248, 248, 248, 6, 8, 11, 25, 9, 234, 243, 9, 1, 240, 236, 0, 31, 29, 0,
+			245, 250, 247, 250, 2, 0, 254, 0, 1, 3, 0, 248, 6, 17, 244, 228, 3, 16, 2, 9, 15, 251, 244, 0, 5, 4, 254, 239, 247, 15,
+			17, 3, 255, 255, 255, 252, 244, 245, 0, 9, 22, 27, 8, 247, 246, 234, 230, 2, 22, 12, 13, 11, 238, 238, 13, 6, 236, 246, 3, 255,
+			5, 15, 5, 254, 255, 251, 247, 255, 6, 255, 239, 253, 30, 24, 248, 250, 251, 215, 217, 13, 22, 2, 32, 54, 14, 239, 238, 226, 221, 246,
+			14, 24, 32, 35, 20, 244, 215, 215, 231, 246, 19, 40, 18, 5, 27, 16, 233, 232, 243, 229, 240, 19, 24, 11, 13, 7, 245, 238, 238, 240,
+			245, 248, 4, 22, 17, 5, 13, 5, 235, 237, 1, 252, 243, 255, 8, 14, 24, 22, 6, 246, 226, 226, 251, 8, 7, 16, 20, 11, 12, 3,
+			233, 231, 248, 247, 0, 27, 25, 5, 8, 9, 247, 243, 0, 2, 255, 252, 0, 6, 9, 8, 11, 6, 244, 239, 251, 250, 245, 0, 6, 4,
+			13, 15, 255, 250, 254, 241, 238, 3, 5, 252, 9, 17, 0, 249, 252, 245, 246, 253, 255, 6, 7, 0, 12, 18, 249, 243, 0, 240, 232, 8,
+			20, 8, 19, 21, 0, 250, 255, 247, 246, 0, 6, 10, 13, 12, 4, 246, 242, 0, 0, 242, 250, 0, 0, 0, 152, 153, 153, 154, 156, 157,
+			159, 161, 164, 167, 169, 172, 176, 179, 182, 186, 190, 193, 197, 201, 205, 209, 212, 216, 220, 223, 227, 230, 234, 237, 240, 242, 245, 247, 249, 251,
+			252, 253, 254, 254, 255, 255, 255, 255, 255, 255, 254, 253, 251, 250, 248, 246, 243, 241, 238, 236, 233, 230, 228, 224, 221, 218, 215, 211, 208, 204,
+			200, 196, 192, 188, 184, 180, 176, 172, 167, 163, 159, 154, 150, 145, 141, 136, 132, 127, 123, 118, 114, 109, 105, 101, 96, 92, 88, 84, 80, 76,
+			72, 68, 64, 60, 57, 53, 50, 47, 43, 40, 38, 35, 32, 29, 26, 23, 21, 18, 15, 13, 10, 8, 7, 5, 3, 2, 1, 0, 0, 0,
+			0, 0, 81, 0, 5, 0, 1, 0, 16, 1, 136, 3, 40, 5, 140, 10, 112, 13, 35, 15, 32, 28, 32, 58, 36, 70, 64, 40, 27, 24,
+			9, 8, 217, 150, 105, 120, 120, 120, 255, 180, 150, 44, 65, 70, 130, 53, 0, 0, 0, 0, 50, 0, 0, 0, 0, 210, 117, 182, 3, 0,
+			0, 0, 3, 0, 0, 0, 176, 250, 118, 0, 3, 0, 32, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28, 16, 146, 53, 116,
+			96, 70, 52, 33, 16, 8, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 54, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 32, 1, 136, 3, 40, 5, 140, 10, 112, 13, 191, 14, 32, 28,
+			17, 146, 53, 116, 96, 70, 52, 33, 16, 8, 217, 155, 105, 120, 120, 120, 247, 170, 165, 44, 65, 75, 130, 53, 0, 0, 0, 0, 50, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 3, 0, 0, 0, 1, 250, 0, 0, 1, 0, 16, 1, 128, 3, 60, 5, 100, 10, 112, 13,
+			191, 14, 160, 28, 16, 45, 33, 64, 58, 33, 30, 23, 7, 8, 217, 135, 105, 120, 120, 120, 255, 165, 165, 44, 65, 70, 130, 53, 0, 0,
+			0, 0, 50, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 216, 1, 111, 5,
+			196, 9, 224, 13, 160, 15, 244, 26, 0, 1, 0, 16, 8, 8, 4, 4, 0, 0, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 124, 169, 247, 191, 251, 250, 201, 182, 170, 0, 4, 0,
+			1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 45, 52, 22, 54, 54, 36, 34, 22, 14, 6, 165, 131, 156, 120,
+			120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 3, 0, 0, 0, 3, 0, 0, 0,
+			176, 250, 118, 0, 3, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 70, 92, 30, 72, 72, 48, 46, 30, 19, 8,
+			165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 55, 83, 28, 68, 68, 45,
+			43, 28, 18, 8, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 3, 0, 0, 0, 1, 250, 0, 0, 1, 0, 148, 0, 224, 1, 248, 2, 150, 10, 188, 12, 236, 14, 38, 27, 0, 45,
+			21, 50, 50, 33, 32, 21, 13, 5, 165, 131, 156, 120, 120, 120, 165, 110, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 46, 0, 8, 0, 1, 0, 200, 0, 127, 2, 126, 5, 127, 9,
+			197, 12, 114, 14, 244, 26, 12, 59, 40, 72, 72, 40, 28, 20, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 125, 2,
+			136, 5, 127, 9, 207, 12, 123, 14, 244, 26, 12, 66, 52, 72, 72, 44, 32, 28, 20, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			200, 0, 103, 2, 9, 6, 181, 9, 248, 12, 224, 14, 244, 26, 12, 53, 52, 60, 64, 36, 28, 28, 20, 16, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 200, 0, 65, 2, 159, 6, 235, 9, 253, 12, 61, 15, 244, 26, 12, 43, 52, 48, 52, 28, 28, 28, 8, 8, 187, 125,
+			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 48, 32, 36, 32, 44, 36, 32, 20,
+			16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 24, 22, 36, 20,
+			20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27,
+			24, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14,
+			200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 188, 37, 0, 182, 112, 172, 75, 8, 104, 250, 215, 182, 0, 0, 9, 0, 1, 0, 250, 0,
+			176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 28, 62, 24, 59, 74, 42, 38, 34, 10, 6, 167, 147, 147, 120, 120, 120, 167, 142,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 35, 127, 35, 84, 105, 60, 54, 49, 14, 8, 167, 147, 147, 120,
+			120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 250, 0, 176, 2, 40, 4, 246, 10, 188, 12, 92, 14, 87, 27, 29, 127, 35, 84, 105, 60, 54, 49, 14, 8,
+			167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 250, 0, 160, 2, 76, 4, 246, 10, 188, 12, 92, 14, 87, 27, 43, 118, 35, 84, 105, 60,
+			54, 49, 14, 8, 167, 147, 147, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 204, 0, 93, 2, 252, 4, 60, 10, 168, 12, 10, 15, 0, 28, 50, 40,
+			28, 53, 61, 33, 40, 20, 11, 8, 167, 165, 150, 120, 120, 120, 167, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15,
+			159, 27, 21, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11,
+			16, 14, 200, 15, 159, 27, 21, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1,
+			208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 43, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 188, 37, 0, 182, 112, 172, 75, 8, 104, 250, 215, 182, 1, 0,
+			152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 207, 215, 182, 49, 133, 0, 182, 200, 172, 75, 8, 168, 250,
+			247, 191, 0, 0, 6, 0, 1, 0, 228, 0, 224, 2, 180, 5, 196, 9, 68, 12, 216, 14, 80, 28, 45, 46, 25, 55, 66, 44, 36, 32,
+			12, 5, 172, 142, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 228, 0, 224, 2, 180, 5, 196, 9, 68, 12, 216, 14, 80, 28, 66, 83, 34, 75,
+			90, 60, 49, 43, 17, 7, 172, 142, 180, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 222, 0, 224, 2, 40, 5, 96, 9, 98, 12, 76, 14, 247, 27,
+			41, 73, 29, 63, 84, 46, 52, 35, 14, 7, 168, 124, 204, 120, 120, 120, 255, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 0, 1, 96, 2, 87, 4, 16, 9, 48, 12,
+			41, 14, 128, 27, 40, 64, 28, 61, 77, 35, 52, 36, 15, 7, 237, 126, 192, 120, 120, 120, 141, 126, 147, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 0, 1, 208, 1, 189, 3,
+			16, 9, 8, 12, 41, 14, 96, 27, 40, 65, 36, 68, 59, 21, 35, 23, 15, 8, 205, 90, 180, 120, 120, 120, 145, 120, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 172, 0,
+			200, 1, 152, 3, 192, 8, 168, 12, 60, 15, 96, 27, 0, 30, 25, 50, 42, 16, 18, 13, 11, 9, 200, 90, 120, 120, 120, 120, 200, 120,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			34, 0, 8, 0, 1, 0, 200, 0, 196, 2, 190, 6, 114, 9, 178, 13, 224, 13, 244, 26, 12, 56, 40, 72, 68, 64, 20, 20, 20, 12,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 201, 2, 197, 6, 100, 9, 129, 13, 48, 14, 244, 26, 12, 66, 40, 80, 76, 64,
+			24, 24, 16, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 200, 2, 192, 6, 98, 9, 90, 13, 131, 14, 244, 26, 12, 56,
+			40, 72, 72, 60, 40, 0, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 197, 2, 184, 6, 97, 9, 75, 13, 174, 14,
+			244, 26, 24, 51, 36, 68, 68, 56, 48, 12, 16, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 182, 2, 153, 6, 108, 9,
+			67, 13, 220, 14, 244, 26, 36, 48, 36, 68, 60, 48, 44, 28, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 200, 1,
+			12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 24, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 1, 0,
+			152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 36, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142,
+			135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 188, 37, 0, 182, 112, 172,
+			75, 8, 104, 250, 215, 182, 89, 0, 9, 0, 1, 0, 200, 0, 104, 1, 38, 8, 98, 10, 18, 13, 10, 15, 244, 26, 12, 55, 30, 57,
+			48, 42, 39, 24, 12, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 136, 1, 230, 7, 48, 10, 17, 13, 30, 15, 244, 26,
+			12, 111, 36, 92, 64, 64, 56, 36, 20, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 136, 1, 223, 7, 46, 10, 23, 13,
+			38, 15, 244, 26, 12, 110, 40, 88, 64, 64, 56, 40, 24, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 136, 1, 224, 7,
+			48, 10, 26, 13, 40, 15, 244, 26, 12, 97, 36, 84, 60, 60, 56, 36, 24, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0,
+			144, 1, 245, 7, 60, 10, 43, 13, 84, 15, 244, 26, 12, 68, 40, 60, 56, 56, 56, 40, 20, 12, 187, 125, 137, 137, 150, 175, 187, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8,
+			1, 0, 152, 0, 200, 1, 152, 8, 140, 10, 16, 14, 180, 15, 159, 27, 24, 24, 36, 32, 36, 36, 32, 20, 16, 8, 172, 142, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0,
+			0, 250, 0, 0, 1, 0, 168, 0, 96, 1, 204, 6, 196, 9, 176, 14, 48, 17, 244, 26, 42, 37, 44, 40, 8, 36, 24, 12, 0, 0,
+			125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 24, 170, 0, 191,
+			188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 168, 0, 96, 1, 204, 6, 196, 9, 176, 14, 68, 17, 244, 26, 30, 37, 44, 40, 8, 36,
+			24, 12, 0, 0, 125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			188, 37, 0, 182, 112, 172, 75, 8, 104, 250, 215, 182, 1, 0, 168, 0, 96, 1, 204, 6, 196, 9, 176, 14, 68, 17, 244, 26, 0, 26,
+			40, 32, 8, 16, 8, 12, 0, 0, 125, 125, 137, 137, 150, 175, 125, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 207, 215, 182, 49, 133, 0, 182, 200, 172, 75, 8, 168, 250, 247, 191, 0, 0, 5, 0, 1, 0, 200, 0, 38, 1, 6, 5, 126, 10,
+			152, 11, 253, 14, 244, 26, 29, 91, 56, 52, 48, 44, 16, 28, 12, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 58, 1,
+			37, 5, 140, 10, 174, 16, 160, 15, 244, 26, 51, 74, 48, 52, 40, 36, 12, 16, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			200, 0, 42, 1, 244, 4, 57, 10, 85, 10, 215, 16, 244, 26, 98, 59, 48, 40, 32, 20, 8, 4, 4, 4, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 104, 52, 52, 36, 20, 8, 4, 4, 8, 8, 172, 142,
+			135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4,
+			8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 23, 0, 7, 0, 1, 0, 200, 0, 191, 1, 229, 5, 86, 9, 209, 12, 236, 14, 244, 26,
+			23, 73, 36, 72, 76, 40, 40, 28, 24, 12, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 193, 1, 232, 5, 89, 9, 218, 12,
+			246, 14, 244, 26, 24, 70, 32, 72, 76, 44, 44, 36, 28, 16, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 194, 1, 241, 5,
+			85, 9, 209, 12, 239, 14, 244, 26, 12, 55, 32, 64, 60, 36, 36, 28, 20, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0,
+			200, 1, 119, 6, 146, 9, 16, 13, 86, 15, 244, 26, 12, 38, 36, 48, 40, 32, 32, 24, 16, 12, 187, 125, 137, 137, 150, 175, 187, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 36, 39, 44, 36, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 48, 22, 36, 20, 20, 8, 4, 4, 8, 8,
+			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8,
+			4, 4, 8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			24, 170, 0, 191, 188, 200, 53, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 152, 0, 56, 2, 132, 3, 44, 11, 192, 13, 120, 15,
+			159, 27, 45, 62, 29, 67, 58, 32, 29, 22, 14, 6, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 152, 0, 56, 2, 132, 3, 44, 11,
+			192, 13, 120, 15, 159, 27, 84, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 152, 0, 72, 2,
+			92, 3, 144, 11, 232, 13, 140, 15, 159, 27, 40, 112, 40, 80, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			152, 0, 200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 55, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 60, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142,
+			135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4,
+			8, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 0, 0, 6, 0, 1, 0, 152, 0, 56, 2, 132, 3, 44, 11, 192, 13, 120, 15, 159, 27,
+			55, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 152, 0, 56, 2, 132, 3, 44, 11, 192, 13,
+			120, 15, 159, 27, 74, 116, 40, 92, 80, 44, 40, 31, 20, 8, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 3, 0, 176, 0, 56, 1, 92, 3,
+			56, 9, 12, 13, 60, 15, 144, 26, 46, 78, 4, 96, 52, 28, 28, 40, 16, 10, 177, 125, 102, 120, 120, 120, 177, 125, 117, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 152, 0,
+			200, 1, 12, 3, 144, 11, 16, 14, 180, 15, 159, 27, 17, 32, 36, 32, 44, 36, 32, 20, 16, 8, 172, 142, 135, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 16, 22, 36, 20, 20, 8, 4, 4, 8, 8, 172, 142, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 208, 2, 144, 11, 16, 14, 200, 15, 159, 27, 0, 22, 36, 20, 20, 8, 4, 4, 8, 8,
+			172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 175, 0, 4, 0, 1, 0, 116, 0, 232, 1, 136, 4, 236, 9, 168, 12, 156, 14, 96, 27, 45, 48,
+			27, 63, 60, 34, 37, 31, 16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 232, 1, 136, 4, 236, 9, 168, 12, 156, 14,
+			96, 27, 70, 93, 38, 88, 84, 48, 52, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 232, 1, 136, 4, 236, 9,
+			168, 12, 156, 14, 96, 27, 60, 75, 34, 79, 75, 43, 46, 39, 20, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 232, 1,
+			136, 4, 236, 9, 168, 12, 156, 14, 96, 27, 0, 41, 25, 58, 56, 32, 34, 29, 15, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 110, 0,
+			3, 0, 5, 0, 240, 0, 13, 2, 108, 7, 128, 12, 156, 14, 23, 17, 224, 23, 60, 24, 54, 8, 8, 16, 6, 8, 4, 0, 162, 90,
+			165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184,
+			216, 182, 176, 250, 118, 182, 5, 0, 240, 0, 13, 2, 108, 7, 128, 12, 156, 14, 23, 17, 224, 23, 50, 24, 54, 8, 8, 16, 6, 8,
+			4, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168,
+			0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 240, 0, 13, 2, 108, 7, 128, 12, 156, 14, 23, 17, 224, 23, 0, 15, 43, 6,
+			6, 13, 5, 6, 3, 0, 162, 90, 165, 120, 120, 120, 132, 165, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 181, 2, 30, 0, 23, 23, 23, 23, 23, 22, 22, 23, 23, 23, 23, 23,
+			23, 23, 23, 23, 22, 22, 23, 23, 24, 24, 23, 23, 24, 24, 24, 23, 23, 22, 22, 22, 21, 21, 22, 22, 22, 22, 22, 22, 21, 22,
+			22, 22, 22, 21, 21, 21, 22, 21, 21, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 20, 20,
+			19, 19, 19, 20, 20, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 18, 18, 17, 18, 18, 18, 17, 17, 17, 17, 18, 18,
+			18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16,
+			16, 16, 16, 16, 17, 17, 17, 17, 16, 16, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 17, 17, 17, 16, 17, 17,
+			16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 17, 17, 17,
+			17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 18, 19, 18, 18,
+			18, 18, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
+			20, 20, 19, 19, 19, 19, 19, 19, 20, 20, 19, 19, 20, 20, 20, 20, 19, 19, 20, 20, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21,
+			21, 21, 21, 21, 20, 20, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
+			23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23,
+			23, 23, 24, 24, 24, 24, 25, 25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 24, 24, 24, 24, 24, 24,
+			24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22,
+			22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 20,
+			21, 21, 20, 20, 20, 19, 19, 18, 18, 17, 14, 12, 7, 1, 222, 165, 138, 148, 195, 198, 198, 244, 25, 46, 55, 66, 97, 101, 57, 31,
+			23, 253, 219, 214, 234, 2, 15, 26, 54, 77, 73, 65, 79, 75, 55, 28, 2, 254, 245, 236, 249, 23, 34, 48, 51, 57, 73, 62, 47, 36,
+			29, 22, 3, 249, 248, 1, 11, 20, 50, 73, 76, 44, 6, 13, 30, 51, 1, 2, 2, 251, 226, 225, 253, 13, 8, 4, 31, 33, 20, 10,
+			32, 44, 25, 243, 222, 217, 210, 204, 204, 253, 34, 46, 54, 65, 72, 71, 46, 40, 52, 37, 7, 255, 7, 22, 2, 246, 23, 47, 56, 15,
+			36, 47, 51, 22, 16, 49, 55, 31, 255, 25, 43, 30, 1, 22, 43, 40, 6, 19, 42, 28, 242, 222, 9, 8, 241, 226, 12, 37, 31, 35,
+			46, 81, 83, 51, 45, 74, 60, 27, 17, 41, 65, 55, 29, 42, 42, 247, 179, 146, 149, 154, 146, 144, 229, 243, 17, 31, 88, 105, 125, 118,
+			68, 76, 252, 220, 204, 207, 195, 218, 252, 22, 59, 44, 8, 243, 191, 206, 217, 166, 153, 171, 211, 228, 251, 20, 87, 118, 103, 109, 84, 65,
+			31, 255, 232, 250, 252, 253, 9, 18, 43, 85, 96, 88, 59, 31, 48, 48, 245, 191, 205, 221, 31, 35, 18, 39, 43, 19, 237, 232, 244, 248,
+			215, 195, 212, 205, 218, 236, 20, 42, 32, 19, 12, 21, 246, 225, 229, 255, 2, 1, 27, 51, 57, 0, 0, 0, 75, 8, 18, 0, 40, 40,
+			40, 40, 40, 40, 40, 40, 40, 39, 39, 39, 39, 39, 40, 39, 39, 39, 38, 39, 38, 38, 38, 38, 38, 38, 38, 37, 37, 36, 36, 36,
+			36, 36, 35, 35, 36, 35, 35, 34, 35, 34, 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30,
+			30, 30, 30, 30, 30, 29, 29, 29, 29, 29, 30, 29, 29, 29, 28, 29, 28, 28, 28, 28, 27, 27, 27, 28, 27, 27, 27, 27, 27, 27,
+			27, 27, 27, 27, 26, 26, 26, 27, 27, 26, 26, 25, 25, 25, 26, 26, 26, 26, 26, 26, 25, 25, 26, 26, 26, 26, 25, 26, 26, 26,
+			26, 25, 24, 24, 25, 25, 25, 25, 26, 25, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 24, 24, 24, 25,
+			25, 26, 26, 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 27, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26,
+			26, 27, 27, 28, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+			30, 30, 29, 30, 30, 30, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 31, 31, 30, 31, 31, 31, 31, 31, 31, 32, 32, 33, 33,
+			33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 37, 37, 36, 36, 36,
+			37, 37, 37, 37, 37, 38, 37, 37, 37, 38, 38, 38, 38, 38, 38, 39, 39, 38, 39, 40, 40, 39, 39, 39, 40, 41, 41, 41, 41, 42,
+			42, 42, 42, 42, 42, 42, 42, 41, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 44, 43, 43, 43, 43, 44, 44, 44, 44,
+			45, 45, 45, 45, 45, 45, 44, 44, 45, 45, 45, 45, 45, 46, 45, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 44, 44,
+			44, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
+			44, 44, 43, 43, 43, 43, 43, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+			41, 41, 41, 41, 41, 42, 42, 42, 41, 42, 42, 42, 42, 42, 42, 42, 41, 42, 41, 41, 41, 41, 41, 41, 41, 42, 42, 41, 41, 40,
+			40, 40, 40, 39, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 37, 37, 38, 37, 36,
+			36, 36, 36, 36, 36, 36, 35, 35, 35, 35, 35, 35, 35, 35, 36, 35, 34, 32, 32, 33, 34, 34, 34, 33, 32, 31, 32, 33, 32, 32,
+			31, 31, 30, 30, 31, 31, 31, 31, 30, 30, 30, 31, 31, 31, 32, 31, 31, 30, 30, 30, 30, 30, 29, 29, 29, 28, 29, 31, 33, 31,
+			26, 25, 27, 30, 31, 31, 29, 27, 27, 28, 28, 29, 31, 31, 28, 26, 27, 26, 26, 18, 238, 195, 224, 70, 120, 72, 11, 245, 235, 247,
+			42, 84, 72, 32, 5, 251, 0, 31, 65, 61, 27, 7, 10, 20, 34, 48, 49, 33, 16, 12, 20, 33, 45, 48, 35, 16, 8, 19, 36, 44,
+			42, 32, 20, 14, 19, 33, 44, 43, 31, 18, 16, 23, 33, 38, 36, 28, 22, 21, 24, 28, 29, 30, 32, 33, 29, 23, 23, 29, 32, 31,
+			32, 32, 27, 22, 23, 28, 30, 32, 31, 22, 21, 28, 33, 31, 30, 30, 25, 21, 22, 31, 38, 33, 21, 20, 29, 32, 28, 29, 32, 26,
+			21, 29, 37, 33, 27, 28, 28, 27, 32, 37, 30, 23, 28, 35, 32, 28, 30, 36, 38, 32, 21, 25, 42, 41, 29, 29, 34, 29, 29, 39,
+			43, 34, 26, 26, 29, 33, 40, 42, 38, 31, 29, 31, 32, 33, 41, 47, 40, 27, 23, 28, 38, 47, 46, 31, 24, 38, 45, 32, 30, 45,
+			46, 34, 33, 39, 36, 35, 41, 42, 37, 34, 35, 34, 35, 43, 46, 37, 33, 40, 42, 34, 37, 46, 40, 32, 43, 48, 33, 29, 45, 52,
+			42, 33, 32, 38, 44, 44, 46, 49, 41, 28, 33, 52, 57, 40, 25, 36, 53, 52, 36, 32, 46, 54, 44, 37, 46, 45, 33, 42, 58, 52,
+			37, 36, 38, 38, 48, 58, 48, 32, 31, 42, 50, 51, 42, 34, 43, 54, 46, 36, 44, 45, 34, 42, 60, 51, 31, 43, 58, 37, 22, 47,
+			62, 47, 42, 45, 33, 32, 54, 59, 39, 31, 36, 45, 55, 46, 31, 31, 43, 53, 58, 51, 33, 22, 28, 44, 61, 59, 39, 30, 34, 34,
+			42, 54, 47, 33, 36, 44, 34, 32, 61, 70, 25, 0, 32, 61, 64, 66, 45, 254, 255, 58, 82, 50, 35, 40, 26, 21, 48, 60, 45, 46,
+			41, 13, 25, 74, 70, 25, 23, 42, 38, 36, 49, 52, 46, 45, 35, 21, 38, 63, 55, 37, 30, 28, 36, 47, 47, 50, 50, 33, 15, 30,
+			60, 58, 34, 34, 44, 29, 18, 48, 77, 55, 19, 17, 30, 29, 47, 73, 56, 21, 16, 28, 39, 48, 47, 35, 33, 42, 42, 30, 26, 33,
+			38, 37, 43, 52, 43, 21, 14, 34, 46, 37, 34, 44, 41, 23, 17, 24, 36, 52, 59, 39, 2, 254, 30, 46, 46, 62, 53, 3, 243, 29,
+			51, 30, 33, 58, 41, 7, 12, 33, 38, 42, 42, 19, 13, 44, 46, 9, 6, 45, 55, 26, 12, 31, 33, 9, 23, 63, 51, 255, 246, 30,
+			54, 41, 33, 35, 16, 255, 13, 37, 49, 52, 40, 8, 241, 8, 57, 70, 41, 11, 0, 255, 22, 66, 72, 29, 255, 3, 20, 35, 44, 41,
+			25, 15, 26, 34, 21, 19, 39, 51, 30, 0, 8, 44, 48, 20, 13, 29, 29, 25, 42, 48, 22, 4, 19, 35, 32, 36, 48, 39, 17, 5,
+			13, 32, 48, 48, 27, 16, 30, 32, 13, 12, 39, 54, 38, 22, 22, 21, 16, 28, 36, 31, 35, 46, 42, 13, 240, 2, 60, 89, 52, 253,
+			243, 4, 31, 71, 79, 22, 234, 9, 45, 33, 37, 63, 36, 243, 2, 54, 58, 29, 22, 22, 16, 35, 62, 42, 7, 6, 27, 48, 50, 33,
+			22, 26, 24, 20, 31, 53, 48, 18, 10, 32, 45, 40, 25, 17, 40, 57, 33, 8, 16, 41, 53, 32, 21, 45, 48, 17, 255, 22, 69, 78,
+			34, 254, 14, 49, 39, 14, 50, 73, 18, 245, 43, 83, 43, 253, 7, 50, 66, 52, 37, 21, 3, 17, 61, 75, 52, 26, 6, 4, 37, 71,
+			63, 35, 27, 21, 13, 40, 74, 58, 26, 20, 24, 44, 62, 47, 26, 27, 30, 43, 60, 59, 35, 2, 9, 48, 72, 69, 48, 23, 17, 24,
+			34, 59, 69, 33, 17, 60, 73, 14, 246, 43, 78, 66, 51, 30, 10, 23, 54, 64, 49, 38, 38, 32, 35, 52, 47, 30, 40, 59, 44, 21,
+			37, 54, 38, 36, 57, 44, 17, 44, 72, 37, 9, 42, 65, 45, 37, 44, 36, 29, 45, 55, 35, 25, 51, 61, 39, 27, 35, 40, 48, 60,
+			46, 19, 31, 57, 50, 38, 46, 46, 21, 21, 57, 72, 48, 26, 11, 17, 69, 88, 32, 252, 31, 60, 39, 34, 59, 56, 23, 15, 37, 42,
+			34, 55, 74, 42, 254, 9, 57, 67, 49, 36, 31, 28, 28, 43, 60, 56, 39, 23, 10, 25, 62, 74, 48, 22, 20, 27, 33, 48, 64, 58,
+			33, 14, 18, 40, 57, 57, 55, 34, 0, 9, 59, 74, 54, 37, 15, 254, 25, 74, 71, 26, 17, 49, 42, 4, 24, 73, 62, 23, 22, 34,
+			25, 26, 62, 69, 18, 0, 41, 57, 28, 23, 48, 43, 17, 28, 46, 33, 27, 36, 28, 29, 50, 45, 16, 15, 44, 53, 31, 20, 33, 38,
+			34, 40, 33, 11, 20, 49, 49, 29, 19, 26, 41, 42, 15, 0, 31, 58, 47, 31, 24, 10, 8, 36, 55, 41, 27, 21, 10, 9, 34, 57,
+			43, 18, 27, 36, 10, 2, 39, 51, 29, 28, 30, 10, 16, 46, 37, 5, 14, 43, 45, 26, 15, 23, 29, 25, 28, 38, 39, 27, 21, 24,
+			22, 15, 26, 46, 38, 15, 15, 28, 34, 29, 24, 21, 27, 36, 27, 16, 28, 40, 28, 11, 22, 48, 39, 5, 9, 40, 44, 30, 28, 27,
+			14, 12, 33, 54, 46, 21, 5, 8, 30, 50, 45, 27, 16, 18, 26, 37, 42, 31, 14, 18, 32, 24, 21, 48, 57, 27, 0, 4, 27, 50,
+			52, 26, 9, 23, 38, 27, 19, 30, 38, 35, 34, 28, 14, 13, 29, 45, 44, 31, 22, 20, 22, 26, 30, 35, 35, 25, 21, 30, 37, 33,
+			29, 27, 19, 23, 43, 46, 25, 15, 22, 24, 32, 48, 44, 18, 7, 25, 41, 33, 25, 34, 40, 26, 19, 31, 34, 26, 34, 41, 28, 18,
+			27, 36, 29, 29, 44, 42, 19, 14, 35, 43, 27, 23, 43, 45, 20, 16, 36, 45, 41, 42, 31, 15, 27, 49, 44, 27, 28, 37, 33, 34,
+			44, 37, 20, 26, 45, 47, 34, 31, 36, 37, 32, 33, 43, 46, 36, 31, 33, 32, 32, 42, 50, 43, 30, 27, 36, 46, 46, 37, 33, 32,
+			32, 43, 58, 53, 31, 22, 30, 41, 52, 56, 44, 31, 28, 30, 37, 53, 59, 42, 23, 27, 42, 51, 50, 42, 29, 26, 42, 58, 57, 42,
+			27, 24, 35, 50, 55, 47, 34, 32, 38, 41, 43, 47, 46, 37, 31, 36, 42, 43, 42, 47, 46, 33, 27, 41, 56, 49, 35, 34, 37, 38,
+			44, 51, 46, 37, 36, 37, 37, 40, 46, 46, 39, 30, 31, 41, 48, 45, 41, 38, 32, 31, 39, 46, 44, 41, 41, 38, 34, 35, 40, 43,
+			44, 44, 38, 31, 33, 41, 42, 40, 36, 39, 46, 42, 28, 31, 43, 42, 37, 42, 43, 36, 37, 41, 33, 29, 40, 44, 35, 34, 41, 39,
+			32, 31, 37, 42, 42, 36, 32, 33, 33, 34, 41, 45, 38, 30, 33, 37, 35, 34, 38, 40, 37, 33, 34, 38, 38, 37, 37, 36, 34, 34,
+			36, 36, 36, 35, 32, 30, 37, 47, 41, 26, 24, 33, 38, 41, 43, 36, 25, 27, 36, 40, 42, 39, 31, 25, 29, 35, 36, 38, 39, 33,
+			27, 31, 34, 33, 35, 36, 31, 28, 32, 34, 33, 36, 36, 30, 27, 33, 35, 32, 33, 32, 30, 29, 32, 34, 34, 34, 29, 23, 25, 32,
+			36, 34, 29, 27, 28, 27, 27, 31, 35, 31, 25, 22, 23, 26, 31, 33, 31, 29, 27, 22, 22, 29, 34, 33, 29, 25, 21, 25, 32, 34,
+			29, 27, 27, 26, 25, 25, 27, 29, 30, 28, 27, 26, 24, 23, 24, 28, 29, 27, 25, 24, 26, 28, 30, 29, 26, 25, 26, 29, 28, 24,
+			22, 27, 31, 30, 29, 29, 25, 22, 25, 29, 28, 29, 30, 27, 23, 24, 28, 29, 30, 30, 27, 23, 24, 27, 31, 33, 33, 27, 24, 26,
+			30, 31, 31, 32, 28, 24, 26, 31, 31, 30, 30, 28, 25, 27, 32, 31, 26, 26, 29, 29, 30, 32, 30, 27, 28, 30, 30, 29, 30, 32,
+			32, 29, 27, 28, 31, 34, 33, 28, 27, 28, 29, 29, 33, 34, 29, 27, 30, 31, 31, 32, 32, 29, 28, 30, 31, 32, 33, 31, 28, 28,
+			31, 32, 32, 32, 30, 27, 29, 33, 33, 32, 31, 31, 31, 32, 33, 32, 32, 35, 36, 33, 33, 34, 35, 33, 33, 35, 36, 34, 33, 33,
+			34, 34, 34, 34, 34, 33, 33, 33, 33, 34, 35, 35, 35, 34, 33, 33, 34, 35, 35, 35, 34, 35, 37, 37, 36, 35, 35, 36, 37, 39,
+			39, 38, 36, 36, 36, 38, 39, 37, 37, 38, 38, 37, 37, 38, 38, 38, 38, 38, 39, 38, 37, 38, 39, 38, 37, 38, 38, 37, 37, 38,
+			38, 38, 37, 37, 38, 39, 39, 38, 38, 39, 40, 39, 39, 39, 39, 39, 38, 39, 41, 41, 39, 37, 39, 40, 40, 40, 41, 40, 38, 39,
+			40, 40, 41, 42, 40, 38, 39, 39, 41, 41, 39, 38, 38, 40, 42, 40, 39, 39, 40, 40, 40, 0, 59, 11, 50, 0, 7, 251, 250, 9,
+			253, 8, 246, 253, 17, 225, 2, 33, 228, 2, 29, 239, 238, 19, 3, 255, 0, 249, 12, 254, 3, 7, 252, 250, 241, 17, 31, 231, 239, 24,
+			248, 234, 10, 12, 16, 253, 242, 4, 252, 6, 11, 238, 253, 254, 30, 19, 213, 253, 23, 235, 254, 20, 252, 17, 3, 232, 15, 245, 237, 33,
+			254, 225, 15, 25, 255, 246, 4, 252, 234, 13, 11, 235, 10, 27, 253, 242, 14, 243, 239, 14, 241, 22, 48, 245, 211, 236, 6, 8, 18, 11,
+			248, 234, 0, 18, 244, 251, 21, 245, 236, 5, 4, 24, 4, 229, 254, 17, 5, 244, 4, 19, 240, 246, 21, 10, 240, 2, 2, 229, 19, 14,
+			5, 7, 224, 244, 23, 9, 240, 252, 34, 253, 206, 8, 50, 235, 0, 25, 229, 4, 32, 237, 243, 12, 6, 16, 239, 236, 27, 254, 4, 254,
+			244, 28, 247, 253, 21, 244, 241, 9, 248, 13, 20, 236, 13, 10, 232, 244, 25, 4, 217, 12, 38, 254, 223, 224, 0, 43, 40, 243, 222, 238,
+			15, 27, 236, 239, 32, 20, 214, 225, 21, 29, 247, 241, 0, 11, 31, 248, 220, 7, 0, 21, 22, 217, 203, 39, 56, 222, 237, 20, 253, 4,
+			9, 238, 227, 9, 23, 11, 0, 242, 242, 242, 53, 4, 207, 45, 255, 228, 27, 255, 220, 12, 45, 250, 249, 244, 235, 8, 19, 8, 253, 18,
+			241, 212, 249, 40, 39, 244, 225, 248, 23, 12, 255, 8, 217, 0, 42, 251, 233, 22, 29, 215, 234, 19, 6, 253, 0, 19, 250, 238, 3, 3,
+			24, 35, 221, 209, 36, 21, 237, 10, 8, 250, 228, 6, 29, 10, 243, 227, 247, 0, 5, 29, 18, 216, 243, 46, 231, 252, 22, 244, 254, 249,
+			249, 255, 1, 250, 7, 14, 252, 29, 246, 189, 21, 33, 9, 13, 233, 246, 0, 243, 12, 30, 249, 221, 40, 20, 210, 252, 255, 1, 46, 25,
+			220, 237, 15, 13, 31, 233, 209, 30, 44, 219, 230, 29, 238, 253, 35, 255, 236, 251, 7, 253, 5, 254, 19, 48, 197, 189, 50, 11, 34, 29,
+			191, 4, 34, 236, 247, 242, 246, 35, 43, 231, 216, 7, 9, 37, 3, 190, 247, 64, 16, 216, 5, 243, 241, 59, 237, 197, 19, 56, 18, 207,
+			223, 253, 37, 45, 215, 206, 32, 51, 232, 224, 13, 26, 37, 229, 222, 251, 22, 43, 226, 219, 28, 251, 247, 13, 2, 0, 253, 3, 251, 240,
+			31, 25, 226, 232, 2, 25, 37, 254, 217, 234, 26, 21, 246, 232, 245, 18, 31, 247, 216, 15, 20, 231, 226, 16, 55, 250, 218, 12, 57, 216,
+			206, 81, 255, 199, 44, 51, 221, 198, 6, 248, 27, 58, 225, 215, 243, 27, 48, 239, 188, 47, 52, 186, 242, 45, 6, 0, 237, 203, 5, 85,
+			241, 190, 21, 15, 235, 49, 33, 167, 255, 98, 212, 241, 46, 194, 0, 48, 236, 9, 2, 222, 23, 35, 0, 232, 0, 25, 249, 9, 4, 227,
+			4, 37, 46, 240, 171, 233, 46, 11, 225, 19, 18, 228, 231, 248, 33, 28, 215, 241, 35, 241, 6, 69, 223, 151, 32, 72, 199, 19, 69, 188,
+			199, 35, 46, 243, 226, 34, 3, 200, 246, 46, 34, 255, 249, 231, 231, 41, 27, 211, 220, 24, 38, 24, 243, 0, 254, 205, 243, 56, 1, 254,
+			22, 226, 244, 12, 244, 247, 26, 54, 239, 222, 241, 3, 46, 28, 247, 204, 236, 32, 14, 245, 238, 30, 23, 252, 245, 210, 0, 34, 227, 244,
+			74, 7, 237, 4, 202, 243, 44, 36, 245, 249, 9, 241, 238, 232, 59, 55, 157, 197, 93, 60, 204, 250, 23, 177, 244, 82, 8, 1, 6, 199,
+			5, 35, 2, 6, 197, 234, 54, 9, 18, 6, 216, 229, 13, 25, 27, 255, 181, 252, 73, 253, 236, 236, 246, 51, 33, 234, 224, 10, 11, 248,
+			5, 0, 235, 24, 21, 234, 18, 0, 224, 31, 31, 199, 236, 46, 252, 234, 239, 5, 48, 246, 216, 24, 26, 226, 217, 249, 52, 52, 3, 241,
+			206, 207, 23, 39, 12, 255, 31, 247, 194, 22, 51, 0, 210, 201, 55, 90, 228, 187, 249, 14, 16, 22, 254, 246, 249, 226, 13, 31, 243, 253,
+			34, 0, 238, 7, 0, 241, 246, 238, 39, 56, 232, 210, 227, 253, 33, 28, 228, 214, 55, 56, 208, 213, 15, 252, 217, 222, 26, 103, 29, 197,
+			232, 251, 228, 0, 233, 29, 96, 245, 215, 0, 0, 245, 242, 34, 31, 24, 25, 202, 180, 254, 8, 35, 65, 216, 219, 48, 53, 252, 159, 205,
+			49, 81, 27, 209, 182, 224, 78, 31, 231, 4, 255, 30, 238, 200, 16, 2, 238, 10, 250, 30, 67, 220, 165, 4, 64, 38, 254, 214, 215, 33,
+			50, 254, 234, 204, 7, 61, 39, 242, 214, 16, 246, 218, 11, 20, 32, 30, 247, 179, 228, 97, 35, 196, 212, 16, 34, 3, 5, 5, 215, 225,
+			4, 16, 52, 27, 214, 245, 247, 239, 17, 24, 1, 239, 240, 34, 50, 233, 176, 239, 69, 48, 210, 203, 250, 54, 82, 209, 200, 41, 240, 243,
+			21, 242, 241, 24, 24, 2, 244, 4, 255, 238, 10, 7, 246, 23, 1, 250, 24, 237, 227, 19, 7, 9, 9, 233, 250, 0, 254, 23, 251, 4,
+			245, 208, 32, 60, 251, 198, 199, 40, 91, 11, 180, 213, 48, 22, 233, 240, 0, 249, 255, 36, 12, 243, 211, 226, 46, 48, 241, 243, 239, 207,
+			225, 38, 81, 23, 213, 239, 17, 39, 7, 220, 225, 249, 13, 0, 246, 33, 36, 248, 243, 0, 247, 248, 2, 20, 24, 4, 238, 229, 2, 240,
+			223, 28, 88, 27, 202, 211, 244, 6, 217, 13, 77, 223, 220, 43, 242, 231, 38, 1, 24, 29, 175, 213, 33, 2, 21, 28, 10, 241, 250, 4,
+			246, 236, 11, 31, 253, 25, 25, 207, 248, 14, 8, 32, 246, 202, 237, 8, 57, 34, 227, 199, 243, 12, 244, 42, 48, 242, 222, 221, 43, 34,
+			197, 200, 13, 72, 22, 244, 222, 189, 13, 34, 1, 37, 38, 194, 194, 47, 19, 250, 0, 179, 4, 125, 15, 171, 248, 3, 219, 50, 64, 199,
+			213, 77, 44, 244, 0, 168, 224, 91, 4, 222, 32, 40, 239, 248, 7, 249, 6, 10, 14, 16, 250, 5, 238, 224, 37, 25, 247, 246, 192, 230,
+			99, 69, 186, 201, 34, 13, 240, 242, 6, 20, 40, 8, 202, 253, 252, 223, 30, 28, 243, 254, 248, 4, 20, 230, 237, 249, 3, 36, 241, 193,
+			242, 36, 30, 1, 236, 244, 210, 226, 85, 78, 227, 203, 203, 250, 47, 5, 1, 51, 35, 246, 234, 194, 208, 30, 54, 42, 15, 211, 226, 21,
+			19, 246, 236, 6, 46, 18, 235, 206, 216, 27, 28, 43, 13, 195, 251, 12, 18, 23, 236, 5, 30, 230, 236, 18, 221, 231, 59, 50, 233, 200,
+			14, 62, 239, 220, 41, 240, 240, 39, 14, 222, 244, 48, 41, 244, 223, 242, 251, 216, 246, 62, 31, 224, 245, 25, 7, 220, 232, 4, 5, 19,
+			7, 231, 11, 10, 241, 1, 227, 237, 42, 44, 0, 230, 244, 239, 238, 30, 34, 19, 234, 196, 215, 23, 37, 14, 3, 214, 0, 36, 255, 192,
+			185, 50, 91, 43, 253, 218, 226, 244, 2, 250, 243, 41, 28, 243, 10, 9, 226, 245, 242, 246, 63, 33, 239, 21, 212, 202, 11, 37, 53, 32,
+			252, 229, 208, 243, 6, 252, 37, 59, 21, 233, 226, 211, 228, 33, 38, 247, 229, 7, 4, 243, 221, 224, 83, 74, 210, 198, 202, 5, 62, 27,
+			245, 232, 17, 3, 210, 25, 76, 241, 185, 29, 80, 236, 201, 228, 20, 78, 39, 240, 185, 200, 56, 76, 13, 237, 223, 200, 246, 48, 32, 251,
+			249, 13, 39, 14, 199, 171, 10, 79, 44, 241, 166, 181, 37, 66, 33, 242, 221, 233, 240, 252, 39, 20, 216, 2, 249, 2, 26, 194, 221, 52,
+			40, 18, 7, 243, 219, 227, 14, 26, 48, 21, 206, 241, 13, 217, 254, 43, 3, 0, 30, 241, 221, 5, 12, 20, 49, 28, 202, 178, 227, 13,
+			41, 51, 29, 0, 216, 208, 251, 34, 1, 237, 3, 2, 5, 4, 230, 240, 7, 42, 31, 246, 207, 213, 19, 6, 27, 82, 243, 194, 220, 10,
+			42, 32, 230, 208, 63, 60, 192, 239, 16, 251, 34, 47, 2, 229, 13, 4, 199, 3, 62, 47, 248, 190, 197, 253, 17, 37, 55, 231, 151, 37,
+			71, 194, 214, 42, 23, 0, 252, 252, 2, 10, 7, 9, 3, 242, 251, 241, 223, 248, 36, 61, 255, 187, 203, 246, 12, 22, 39, 0, 236, 253,
+			232, 11, 52, 8, 202, 199, 6, 68, 42, 241, 236, 5, 255, 0, 15, 249, 0, 243, 252, 60, 38, 215, 184, 231, 37, 66, 34, 229, 237, 17,
+			11, 244, 7, 16, 254, 253, 25, 0, 212, 251, 2, 222, 249, 30, 40, 1, 232, 240, 7, 1, 236, 242, 255, 5, 17, 4, 248, 0, 238, 250,
+			252, 244, 29, 24, 243, 212, 245, 22, 222, 6, 56, 245, 215, 3, 0, 1, 20, 240, 8, 14, 222, 42, 72, 223, 213, 234, 15, 33, 21, 11,
+			234, 12, 25, 247, 237, 6, 252, 5, 20, 237, 251, 18, 255, 17, 12, 4, 251, 214, 239, 21, 12, 41, 11, 180, 214, 52, 31, 238, 248, 2,
+			8, 29, 247, 216, 2, 40, 248, 240, 7, 243, 22, 18, 233, 246, 245, 238, 34, 52, 249, 252, 253, 221, 241, 1, 26, 35, 229, 218, 10, 41,
+			22, 235, 1, 14, 237, 233, 252, 252, 0, 18, 22, 24, 5, 246, 245, 245, 219, 254, 53, 14, 249, 11, 1, 225, 245, 255, 2, 20, 37, 255,
+			214, 224, 16, 22, 249, 234, 224, 253, 17, 250, 3, 249, 227, 233, 255, 54, 44, 225, 209, 209, 232, 60, 95, 239, 172, 222, 31, 27, 252, 12,
+			0, 252, 32, 37, 35, 224, 180, 246, 55, 47, 11, 231, 213, 2, 28, 3, 37, 23, 231, 192, 232, 41, 17, 242, 247, 253, 25, 39, 236, 212,
+			244, 18, 45, 244, 245, 1, 221, 8, 28, 252, 253, 13, 230, 216, 14, 23, 35, 33, 243, 5, 11, 245, 230, 241, 29, 24, 0, 12, 16, 0,
+			11, 8, 254, 2, 246, 234, 243, 250, 33, 44, 0, 217, 214, 238, 15, 50, 11, 215, 211, 6, 28, 254, 2, 234, 219, 23, 24, 37, 25, 218,
+			243, 255, 233, 246, 25, 13, 251, 28, 11, 14, 33, 223, 174, 0, 60, 0, 240, 248, 232, 254, 18, 21, 29, 26, 208, 187, 13, 11, 50, 48,
+			215, 223, 252, 251, 253, 41, 64, 26, 220, 200, 1, 238, 234, 30, 48, 59, 242, 206, 223, 189, 255, 83, 50, 249, 218, 197, 227, 29, 23, 0,
+			250, 236, 236, 9, 36, 231, 203, 21, 33, 251, 249, 219, 221, 243, 51, 33, 243, 240, 223, 21, 15, 0, 51, 252, 191, 17, 68, 32, 242, 238,
+			232, 225, 32, 62, 6, 206, 1, 29, 233, 221, 248, 20, 32, 57, 46, 227, 202, 215, 235, 25, 59, 47, 244, 203, 0, 33, 4, 4, 8, 235,
+			208, 231, 20, 36, 19, 253, 1, 241, 228, 0, 21, 12, 246, 248, 0, 47, 10, 214, 229, 215, 12, 55, 27, 243, 200, 236, 32, 52, 47, 5,
+			213, 212, 227, 252, 37, 69, 31, 246, 225, 231, 6, 32, 49, 205, 190, 21, 238, 210, 243, 5, 12, 27, 55, 253, 169, 195, 239, 19, 11, 45,
+			63, 219, 192, 4, 255, 246, 27, 11, 249, 38, 52, 38, 14, 237, 235, 234, 11, 64, 36, 8, 255, 237, 251, 13, 244, 229, 246, 31, 49, 35,
+			230, 178, 201, 240, 16, 34, 37, 246, 201, 233, 212, 212, 35, 60, 39, 252, 186, 178, 253, 41, 45, 67, 12, 228, 226, 195, 211, 52, 104, 46,
+			225, 238, 244, 248, 21, 237, 232, 59, 69, 15, 191, 169, 251, 50, 67, 33, 253, 232, 212, 236, 245, 254, 26, 14, 252, 242, 245, 221, 193, 246,
+			31, 60, 77, 16, 170, 160, 240, 57, 64, 19, 225, 220, 219, 7, 44, 238, 251, 53, 3, 226, 5, 244, 234, 11, 35, 38, 0, 251, 3, 251,
+			11, 17, 8, 251, 241, 240, 8, 20, 251, 0, 238, 248, 43, 0, 234, 4, 243, 251, 29, 250, 242, 52, 44, 229, 207, 250, 11, 7, 49, 30,
+			232, 8, 251, 215, 211, 228, 31, 46, 39, 253, 196, 185, 253, 51, 4, 253, 14, 240, 242, 3, 253, 236, 249, 16, 22, 22, 4, 254, 0, 252,
+			248, 238, 249, 243, 252, 27, 8, 222, 235, 22, 12, 242, 229, 232, 14, 44, 26, 246, 240, 254, 13, 7, 236, 249, 38, 20, 10, 33, 220, 198,
+			7, 24, 31, 10, 251, 2, 227, 236, 24, 44, 1, 215, 250, 5, 34, 28, 237, 1, 48, 44, 213, 167, 212, 2, 48, 70, 28, 219, 192, 214,
+			42, 68, 236, 236, 9, 252, 237, 242, 11, 29, 14, 234, 213, 219, 232, 20, 57, 32, 246, 194, 196, 239, 26, 53, 35, 28, 246, 228, 241, 3,
+			50, 33, 19, 34, 14, 234, 218, 245, 9, 26, 44, 16, 239, 240, 214, 228, 34, 41, 8, 244, 214, 222, 4, 255, 16, 36, 248, 211, 204, 249,
+			22, 19, 14, 237, 224, 235, 248, 233, 241, 41, 84, 35, 204, 213, 15, 2, 236, 5, 30, 37, 246, 193, 220, 23, 65, 66, 8, 223, 224, 210,
+			205, 23, 68, 43, 20, 235, 230, 240, 3, 18, 4, 21, 30, 254, 248, 10, 3, 253, 10, 23, 26, 245, 240, 4, 217, 207, 6, 28, 7, 253,
+			226, 197, 1, 41, 13, 248, 212, 224, 242, 247, 25, 45, 39, 226, 225, 18, 19, 25, 9, 220, 7, 67, 43, 243, 193, 197, 14, 94, 77, 8,
+			227, 216, 252, 14, 2, 8, 28, 5, 170, 178, 20, 57, 32, 204, 164, 218, 37, 60, 34, 230, 217, 1, 244, 240, 16, 16, 0, 237, 1, 35,
+			252, 232, 228, 227, 40, 50, 9, 221, 200, 7, 84, 73, 26, 244, 174, 182, 39, 81, 49, 17, 194, 183, 0, 28, 45, 27, 227, 230, 2, 12,
+			251, 244, 248, 218, 10, 25, 3, 22, 238, 233, 246, 233, 36, 60, 13, 247, 2, 12, 0, 21, 7, 224, 18, 58, 36, 243, 191, 207, 238, 18,
+			32, 28, 33, 3, 238, 251, 14, 251, 217, 239, 3, 3, 33, 6, 218, 227, 251, 36, 40, 245, 207, 194, 218, 25, 54, 10, 233, 3, 249, 231,
+			4, 35, 12, 240, 238, 4, 15, 244, 239, 16, 9, 18, 15, 224, 251, 18, 12, 247, 1, 17, 253, 254, 254, 7, 245, 4, 52, 7, 202, 226,
+			6, 14, 17, 22, 242, 214, 3, 33, 21, 19, 228, 199, 252, 38, 65, 44, 214, 187, 232, 11, 37, 61, 22, 197, 179, 227, 17, 34, 31, 12,
+			244, 1, 245, 222, 250, 252, 8, 28, 14, 248, 234, 235, 225, 252, 40, 43, 10, 227, 229, 1, 26, 41, 23, 233, 203, 222, 248, 47, 74, 16,
+			237, 216, 235, 29, 27, 251, 2, 250, 220, 236, 6, 0, 9, 49, 56, 15, 218, 197, 210, 249, 46, 46, 16, 251, 225, 225, 2, 13, 11, 32,
+			253, 211, 247, 12, 240, 251, 14, 243, 13, 49, 12, 218, 226, 243, 2, 30, 49, 22, 249, 232, 228, 1, 18, 5, 248, 255, 7, 12, 16, 16,
+			246, 230, 3, 23, 19, 0, 235, 233, 14, 49, 17, 254, 235, 205, 249, 12, 35, 16, 215, 218, 3, 30, 245, 218, 223, 222, 248, 31, 41, 17,
+			237, 227, 243, 248, 249, 7, 11, 16, 36, 9, 244, 8, 8, 247, 255, 39, 36, 240, 220, 245, 20, 41, 17, 243, 254, 13, 15, 13, 250, 230,
+			238, 252, 11, 15, 9, 1, 11, 22, 253, 223, 232, 8, 0, 255, 6, 248, 230, 236, 0, 1, 13, 19, 255, 242, 227, 230, 3, 18, 250, 241,
+			238, 241, 9, 21, 23, 16, 13, 250, 222, 231, 4, 31, 37, 21, 254, 244, 227, 230, 2, 22, 32, 23, 253, 228, 216, 248, 37, 56, 29, 251,
+			214, 209, 243, 13, 39, 42, 247, 236, 239, 240, 18, 246, 254, 31, 246, 235, 3, 245, 250, 10, 13, 22, 20, 11, 239, 228, 227, 4, 17, 6,
+			17, 16, 0, 236, 12, 33, 250, 254, 247, 241, 14, 249, 249, 12, 4, 2, 6, 243, 228, 254, 16, 10, 12, 14, 4, 246, 245, 252, 245, 6,
+			19, 3, 15, 5, 248, 250, 247, 2, 255, 0, 12, 1, 240, 228, 247, 20, 30, 4, 231, 235, 251, 253, 231, 240, 35, 34, 254, 254, 248, 226,
+			240, 248, 14, 31, 4, 245, 254, 251, 9, 17, 12, 22, 4, 227, 222, 5, 29, 16, 245, 239, 24, 8, 246, 14, 13, 244, 228, 238, 5, 29,
+			18, 5, 249, 229, 250, 3, 15, 15, 247, 241, 237, 248, 18, 2, 3, 10, 253, 7, 2, 232, 237, 0, 116, 8, 28, 0, 1, 1, 1, 0,
+			1, 3, 2, 255, 252, 252, 255, 3, 7, 8, 5, 0, 253, 253, 255, 0, 3, 3, 2, 0, 254, 1, 4, 4, 2, 0, 255, 0, 0, 0,
+			0, 0, 3, 5, 4, 0, 253, 249, 250, 253, 0, 0, 254, 253, 254, 1, 8, 10, 5, 255, 244, 238, 239, 246, 245, 231, 228, 234, 249, 20,
+			41, 42, 24, 1, 239, 232, 245, 9, 24, 27, 17, 1, 247, 247, 254, 5, 9, 8, 5, 2, 1, 1, 1, 3, 7, 8, 5, 0, 252, 250,
+			250, 253, 1, 6, 8, 6, 4, 0, 255, 255, 0, 0, 0, 254, 253, 254, 255, 0, 1, 4, 7, 6, 2, 255, 251, 249, 252, 2, 7, 7,
+			8, 9, 11, 14, 15, 5, 240, 223, 215, 197, 189, 207, 232, 6, 33, 41, 31, 15, 4, 253, 254, 4, 12, 21, 21, 15, 8, 254, 248, 249,
+			255, 2, 1, 0, 3, 3, 0, 254, 0, 3, 6, 9, 9, 6, 6, 7, 2, 0, 2, 255, 254, 255, 251, 253, 1, 2, 1, 0, 1, 1,
+			0, 0, 253, 252, 253, 0, 7, 2, 255, 0, 255, 255, 0, 0, 254, 249, 248, 247, 253, 4, 254, 0, 2, 245, 240, 250, 251, 246, 0, 6,
+			0, 4, 10, 3, 1, 6, 3, 4, 5, 7, 8, 12, 2, 252, 0, 2, 0, 9, 7, 255, 6, 12, 254, 254, 9, 251, 241, 6, 13, 247,
+			253, 8, 249, 254, 10, 2, 1, 1, 251, 252, 4, 251, 254, 12, 255, 238, 0, 3, 249, 0, 14, 8, 246, 0, 4, 246, 255, 1, 253, 5,
+			3, 252, 252, 255, 250, 1, 9, 0, 0, 6, 252, 249, 1, 4, 10, 2, 0, 5, 242, 253, 15, 255, 252, 9, 255, 244, 4, 11, 0, 4,
+			5, 251, 253, 250, 0, 9, 255, 253, 7, 255, 242, 254, 4, 248, 12, 17, 245, 253, 0, 246, 8, 9, 249, 6, 3, 244, 253, 4, 248, 4,
+			10, 253, 0, 7, 2, 4, 254, 0, 254, 252, 254, 251, 252, 9, 6, 13, 6, 247, 252, 5, 250, 6, 4, 251, 2, 2, 252, 5, 4, 0,
+			3, 252, 250, 255, 253, 4, 14, 0, 244, 2, 254, 253, 11, 3, 0, 6, 250, 240, 0, 5, 0, 9, 6, 252, 0, 248, 245, 6, 10, 6,
+			2, 252, 4, 250, 253, 5, 7, 6, 0, 255, 5, 252, 252, 0, 3, 2, 252, 255, 5, 248, 0, 5, 245, 251, 17, 6, 0, 9, 249, 248,
+			3, 2, 0, 6, 6, 248, 240, 0, 254, 248, 14, 12, 5, 9, 253, 1, 4, 242, 5, 11, 246, 6, 11, 250, 3, 1, 1, 255, 238, 2,
+			0, 237, 12, 14, 243, 7, 10, 249, 9, 12, 246, 3, 2, 242, 1, 12, 250, 254, 11, 2, 248, 0, 248, 244, 4, 246, 252, 16, 0, 10,
+			13, 231, 253, 10, 246, 4, 25, 1, 249, 3, 0, 244, 1, 12, 6, 4, 6, 0, 250, 248, 252, 255, 2, 1, 10, 0, 245, 254, 8, 1,
+			0, 11, 1, 241, 1, 0, 243, 15, 15, 240, 11, 11, 231, 1, 16, 250, 8, 11, 246, 250, 252, 250, 0, 6, 7, 2, 16, 0, 240, 4,
+			248, 234, 20, 6, 237, 13, 8, 235, 5, 12, 0, 2, 0, 252, 10, 252, 254, 0, 248, 255, 0, 255, 0, 248, 7, 10, 255, 11, 1, 245,
+			9, 5, 248, 3, 2, 248, 1, 9, 4, 7, 255, 1, 13, 249, 247, 9, 248, 245, 15, 8, 4, 14, 247, 246, 11, 246, 242, 19, 0, 245,
+			16, 251, 239, 16, 246, 233, 24, 6, 237, 17, 252, 235, 13, 0, 246, 26, 4, 249, 28, 254, 225, 4, 250, 239, 14, 254, 251, 15, 11, 0,
+			255, 249, 254, 255, 0, 253, 12, 17, 254, 249, 247, 249, 10, 10, 0, 4, 3, 252, 0, 250, 240, 9, 12, 248, 10, 12, 246, 2, 255, 246,
+			11, 2, 247, 18, 11, 241, 4, 2, 233, 10, 15, 243, 0, 2, 247, 3, 254, 254, 19, 8, 251, 0, 252, 240, 243, 4, 4, 9, 19, 0,
+			248, 10, 239, 239, 18, 252, 1, 22, 248, 247, 14, 251, 2, 9, 241, 253, 4, 243, 5, 13, 0, 5, 255, 253, 1, 254, 4, 244, 246, 27,
+			255, 252, 22, 250, 234, 6, 7, 251, 3, 15, 250, 248, 7, 240, 232, 19, 12, 253, 27, 6, 227, 6, 255, 234, 15, 16, 0, 13, 2, 246,
+			0, 7, 249, 241, 7, 7, 247, 18, 2, 245, 19, 255, 230, 10, 245, 249, 34, 7, 247, 28, 249, 223, 2, 2, 250, 13, 13, 249, 249, 245,
+			3, 13, 255, 251, 5, 241, 246, 19, 2, 251, 16, 249, 235, 12, 8, 250, 7, 254, 238, 0, 12, 3, 248, 11, 11, 251, 20, 0, 230, 22,
+			7, 249, 10, 239, 242, 21, 243, 250, 24, 252, 244, 11, 249, 250, 8, 9, 2, 247, 250, 0, 251, 12, 8, 253, 11, 6, 249, 254, 255, 0,
+			247, 252, 15, 0, 242, 10, 10, 254, 245, 250, 6, 253, 250, 21, 255, 241, 0, 1, 255, 247, 2, 27, 241, 247, 25, 255, 236, 3, 237, 244,
+			13, 10, 15, 19, 3, 11, 250, 233, 11, 15, 247, 8, 4, 239, 13, 0, 235, 10, 12, 241, 254, 3, 246, 24, 22, 243, 10, 244, 214, 6,
+			6, 254, 39, 12, 239, 4, 6, 241, 248, 16, 253, 251, 18, 241, 238, 31, 238, 217, 41, 8, 215, 35, 20, 216, 17, 18, 225, 9, 7, 236,
+			12, 7, 238, 4, 255, 255, 20, 241, 252, 31, 0, 243, 20, 8, 238, 6, 1, 6, 252, 234, 18, 18, 235, 14, 250, 242, 14, 252, 249, 26,
+			251, 233, 253, 13, 251, 232, 22, 33, 242, 250, 30, 239, 225, 16, 2, 217, 26, 31, 232, 251, 27, 248, 247, 6, 255, 4, 4, 243, 9, 8,
+			243, 3, 0, 9, 13, 226, 12, 5, 218, 40, 38, 230, 26, 242, 233, 13, 233, 248, 41, 236, 245, 31, 234, 245, 19, 233, 2, 17, 231, 4,
+			11, 230, 254, 13, 247, 16, 20, 7, 8, 246, 240, 0, 243, 8, 36, 2, 229, 22, 15, 229, 13, 6, 245, 4, 0, 243, 244, 9, 26, 232,
+			14, 45, 217, 245, 34, 212, 255, 51, 235, 235, 50, 245, 248, 36, 228, 220, 18, 238, 250, 27, 244, 238, 12, 245, 248, 14, 254, 254, 25, 6,
+			248, 7, 238, 254, 27, 2, 249, 6, 235, 9, 7, 11, 5, 248, 252, 253, 230, 249, 24, 3, 240, 42, 23, 233, 10, 254, 219, 3, 0, 233,
+			18, 18, 235, 3, 29, 0, 234, 247, 247, 252, 254, 11, 21, 0, 253, 253, 237, 11, 42, 237, 252, 29, 232, 225, 21, 254, 7, 8, 219, 249,
+			39, 231, 22, 47, 219, 6, 41, 225, 9, 11, 221, 3, 19, 250, 1, 9, 240, 252, 4, 255, 11, 239, 254, 23, 254, 237, 22, 253, 245, 19,
+			247, 237, 14, 245, 244, 21, 5, 244, 1, 1, 6, 251, 253, 37, 7, 230, 37, 17, 207, 6, 31, 229, 242, 28, 251, 234, 13, 244, 250, 24,
+			249, 3, 13, 214, 18, 47, 242, 12, 3, 245, 44, 7, 224, 43, 255, 223, 45, 245, 233, 22, 252, 255, 255, 203, 245, 221, 170, 235, 244, 185,
+			26, 35, 218, 12, 20, 237, 40, 35, 238, 43, 32, 236, 46, 20, 220, 62, 253, 205, 55, 6, 197, 57, 251, 209, 49, 23, 225, 43, 244, 227,
+			23, 20, 244, 0, 18, 12, 221, 245, 47, 234, 243, 48, 249, 193, 37, 13, 210, 11, 34, 254, 10, 244, 25, 4, 215, 13, 17, 201, 22, 7,
+			187, 38, 30, 204, 40, 12, 212, 9, 242, 230, 21, 220, 0, 45, 229, 236, 25, 249, 17, 23, 253, 10, 254, 24, 242, 239, 17, 240, 230, 41,
+			5, 216, 19, 29, 222, 11, 62, 219, 202, 48, 245, 216, 44, 21, 213, 21, 1, 229, 253, 11, 0, 8, 233, 19, 9, 252, 254, 252, 16, 40,
+			241, 251, 13, 230, 249, 17, 2, 0, 9, 19, 3, 238, 15, 241, 251, 24, 248, 4, 4, 231, 235, 245, 7, 37, 14, 253, 14, 3, 221, 0,
+			233, 245, 25, 4, 3, 67, 225, 220, 55, 231, 194, 74, 230, 203, 79, 237, 180, 76, 232, 231, 116, 223, 210, 46, 174, 240, 68, 180, 34, 50,
+			185, 40, 39, 162, 23, 38, 217, 29, 41, 200, 28, 28, 200, 11, 38, 194, 16, 45, 244, 4, 13, 231, 6, 7, 211, 35, 19, 217, 0, 14,
+			240, 15, 14, 12, 254, 250, 24, 245, 252, 32, 224, 0, 44, 204, 13, 21, 223, 37, 248, 194, 77, 6, 179, 56, 20, 171, 37, 22, 184, 47,
+			22, 226, 56, 231, 204, 78, 231, 199, 69, 235, 210, 63, 229, 228, 82, 221, 215, 85, 191, 216, 86, 229, 225, 90, 220, 209, 51, 246, 211, 59,
+			12, 222, 47, 249, 179, 63, 21, 160, 89, 23, 159, 66, 27, 130, 31, 55, 192, 12, 60, 209, 3, 56, 232, 247, 42, 243, 226, 33, 243, 198,
+			23, 9, 216, 36, 16, 201, 251, 25, 255, 245, 18, 22, 250, 8, 19, 210, 17, 9, 237, 50, 11, 201, 45, 8, 207, 36, 251, 239, 37, 238,
+			215, 49, 1, 222, 56, 26, 210, 251, 245, 236, 34, 19, 238, 1, 25, 205, 236, 50, 243, 216, 46, 14, 219, 12, 1, 220, 37, 31, 215, 23,
+			5, 224, 15, 17, 248, 24, 218, 236, 36, 210, 32, 44, 182, 24, 92, 168, 243, 73, 212, 241, 60, 226, 237, 43, 212, 250, 36, 252, 254, 29,
+			220, 18, 4, 218, 11, 17, 224, 68, 35, 166, 19, 7, 191, 49, 42, 220, 32, 246, 246, 16, 200, 21, 79, 208, 16, 59, 150, 233, 49, 212,
+			16, 52, 232, 253, 19, 210, 228, 0, 7, 10, 22, 23, 249, 214, 37, 251, 199, 20, 41, 224, 36, 27, 185, 2, 25, 208, 33, 52, 207, 15,
+			28, 218, 18, 17, 238, 48, 16, 200, 17, 253, 213, 41, 29, 223, 4, 0, 0, 29, 247, 230, 5, 242, 248, 31, 17, 235, 244, 239, 27, 11,
+			245, 27, 239, 226, 58, 9, 206, 19, 244, 239, 76, 253, 210, 20, 254, 254, 25, 237, 249, 41, 12, 228, 249, 253, 236, 2, 40, 18, 210, 247,
+			12, 243, 239, 232, 246, 13, 240, 37, 27, 213, 23, 41, 196, 247, 46, 233, 237, 25, 0, 242, 6, 238, 0, 31, 4, 249, 9, 254, 238, 248,
+			25, 26, 237, 244, 21, 238, 242, 32, 251, 225, 5, 255, 221, 14, 19, 244, 18, 7, 13, 22, 243, 253, 236, 246, 35, 15, 243, 25, 2, 243,
+			18, 15, 247, 22, 248, 237, 35, 0, 231, 8, 246, 245, 14, 246, 5, 3, 231, 16, 232, 228, 19, 253, 245, 34, 251, 250, 30, 240, 231, 33,
+			251, 240, 13, 228, 247, 33, 223, 3, 44, 248, 253, 10, 252, 7, 30, 33, 0, 3, 14, 7, 249, 246, 0, 247, 241, 23, 11, 253, 1, 229,
+			230, 16, 248, 234, 11, 222, 224, 38, 0, 217, 31, 0, 206, 47, 5, 206, 54, 20, 207, 32, 18, 204, 19, 67, 209, 237, 49, 209, 228, 60,
+			217, 229, 66, 241, 214, 50, 9, 224, 38, 3, 215, 31, 10, 231, 36, 5, 223, 14, 24, 220, 2, 39, 210, 215, 58, 239, 204, 51, 254, 201,
+			33, 0, 203, 30, 28, 222, 18, 38, 211, 236, 47, 220, 241, 40, 253, 237, 47, 43, 214, 6, 53, 240, 0, 47, 252, 0, 42, 20, 244, 9,
+			6, 244, 4, 19, 3, 252, 7, 4, 226, 245, 24, 244, 253, 37, 245, 225, 20, 242, 223, 11, 8, 241, 21, 21, 233, 0, 12, 221, 254, 13,
+			221, 0, 8, 211, 243, 249, 242, 251, 0, 228, 241, 250, 236, 11, 7, 243, 16, 1, 250, 7, 253, 247, 8, 1, 247, 20, 6, 218, 12, 27,
+			249, 11, 29, 249, 6, 7, 255, 16, 255, 6, 40, 6, 2, 30, 10, 249, 251, 6, 244, 239, 2, 2, 253, 10, 22, 253, 6, 25, 252, 247,
+			28, 1, 233, 2, 251, 227, 1, 15, 228, 244, 8, 234, 249, 22, 255, 252, 9, 3, 239, 0, 11, 5, 246, 0, 5, 253, 8, 3, 250, 242,
+			4, 5, 235, 243, 15, 245, 247, 8, 244, 246, 8, 4, 251, 13, 254, 255, 11, 12, 9, 14, 28, 12, 255, 13, 6, 250, 3, 11, 4, 10,
+			23, 0, 236, 1, 15, 251, 4, 11, 250, 255, 4, 247, 249, 8, 253, 253, 12, 255, 237, 251, 3, 246, 248, 245, 238, 250, 3, 254, 8, 5,
+			1, 252, 1, 253, 241, 7, 15, 237, 240, 0, 232, 248, 15, 248, 237, 242, 232, 247, 254, 242, 250, 250, 252, 1, 0, 251, 5, 251, 2, 11,
+			232, 11, 45, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14,
+			13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14,
+			14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 16, 16,
+			16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+			17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
+			18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 17,
+			17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
+			16, 16, 16, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+			16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 16, 15, 15, 15, 15, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+			15, 15, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+			12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10,
+			10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+			9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 9, 10, 10, 10, 10, 9, 9, 9, 10, 10, 9, 9, 9, 10, 10, 10, 10, 10,
+			10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+			9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10,
+			10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+			11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14,
+			14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+			15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 15, 15, 16, 16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16,
+			16, 16, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 16, 16, 16, 16, 17, 17, 16, 16, 17, 17, 17, 17,
+			16, 16, 16, 16, 17, 17, 16, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+			17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 16, 16, 16, 16, 15, 16,
+			16, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 14,
+			14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13,
+			13, 13, 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11,
+			11, 11, 11, 11, 11, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+			10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+			10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11,
+			11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+			11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+			12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+			13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 11, 9, 3, 0, 0, 12, 42, 58, 34,
+			0, 250, 6, 11, 11, 14, 16, 14, 14, 19, 23, 24, 20, 14, 10, 10, 11, 13, 17, 22, 23, 20, 15, 13, 15, 17, 18, 18, 16, 13,
+			12, 14, 19, 22, 23, 21, 17, 14, 12, 13, 17, 20, 21, 21, 19, 17, 16, 16, 17, 17, 18, 19, 20, 19, 17, 17, 19, 19, 17, 17,
+			17, 17, 18, 19, 19, 19, 17, 16, 15, 16, 17, 19, 20, 20, 18, 17, 16, 17, 17, 17, 17, 18, 19, 18, 17, 16, 17, 17, 18, 18,
+			17, 16, 16, 17, 17, 17, 18, 18, 19, 19, 18, 17, 15, 17, 18, 16, 16, 19, 20, 17, 16, 18, 18, 17, 16, 17, 18, 18, 17, 17,
+			17, 18, 18, 17, 16, 17, 17, 17, 16, 17, 18, 17, 17, 18, 18, 18, 16, 16, 14, 8, 249, 229, 213, 226, 37, 119, 127, 62, 10, 0,
+			241, 208, 200, 228, 1, 13, 22, 44, 70, 85, 77, 49, 14, 239, 221, 226, 248, 11, 13, 5, 5, 20, 35, 46, 55, 61, 51, 13, 214, 182,
+			207, 7, 48, 60, 61, 55, 37, 12, 254, 0, 3, 0, 253, 3, 17, 30, 42, 46, 36, 16, 255, 243, 246, 10, 29, 26, 16, 15, 9, 247,
+			227, 214, 223, 9, 67, 95, 76, 37, 8, 0, 1, 0, 255, 249, 238, 245, 24, 54, 52, 41, 38, 18, 239, 227, 250, 22, 32, 33, 32, 23,
+			6, 0, 14, 26, 12, 250, 251, 5, 13, 24, 31, 28, 21, 17, 11, 1, 0, 0, 3, 15, 25, 17, 7, 13, 29, 34, 14, 243, 244, 14,
+			24, 6, 252, 5, 24, 34, 22, 10, 14, 15, 0, 253, 18, 22, 1, 253, 14, 20, 13, 10, 12, 21, 25, 11, 254, 6, 19, 16, 6, 6,
+			8, 10, 21, 29, 17, 254, 249, 6, 29, 36, 12, 251, 4, 13, 8, 16, 27, 19, 10, 7, 0, 7, 32, 30, 251, 240, 14, 36, 20, 11,
+			22, 15, 0, 2, 10, 20, 29, 10, 239, 3, 45, 35, 251, 2, 39, 29, 243, 233, 8, 47, 42, 5, 249, 10, 23, 19, 12, 6, 9, 17,
+			20, 13, 3, 9, 28, 33, 12, 240, 239, 11, 44, 48, 23, 0, 247, 247, 5, 31, 43, 28, 6, 0, 6, 6, 3, 13, 20, 15, 13, 20,
+			21, 11, 8, 22, 22, 250, 243, 14, 26, 17, 26, 42, 19, 237, 240, 30, 45, 2, 240, 19, 35, 10, 8, 30, 25, 7, 13, 19, 253, 237,
+			11, 57, 52, 2, 233, 4, 34, 23, 8, 18, 25, 8, 1, 20, 32, 21, 8, 8, 10, 9, 6, 16, 42, 48, 16, 241, 244, 18, 44, 39,
+			18, 4, 247, 244, 20, 63, 44, 248, 249, 28, 28, 8, 7, 15, 20, 27, 17, 3, 14, 31, 19, 250, 248, 9, 16, 252, 221, 216, 242, 20,
+			55, 92, 103, 60, 3, 241, 250, 244, 228, 252, 47, 54, 11, 8, 68, 92, 33, 216, 200, 251, 45, 30, 9, 55, 79, 9, 225, 18, 41, 10,
+			13, 39, 26, 247, 225, 251, 61, 76, 22, 4, 34, 31, 1, 246, 252, 12, 33, 47, 37, 0, 239, 26, 60, 20, 244, 24, 43, 0, 237, 21,
+			56, 33, 251, 241, 9, 58, 67, 13, 242, 13, 14, 246, 12, 38, 18, 8, 24, 28, 23, 17, 14, 26, 22, 246, 248, 27, 33, 25, 32, 11,
+			239, 8, 50, 35, 255, 249, 17, 40, 29, 2, 5, 34, 19, 234, 6, 69, 43, 241, 251, 21, 37, 51, 16, 207, 211, 32, 90, 74, 14, 230,
+			237, 17, 44, 41, 9, 236, 253, 35, 36, 19, 21, 13, 13, 50, 38, 212, 204, 50, 94, 18, 228, 5, 34, 32, 22, 2, 253, 19, 17, 249,
+			19, 64, 47, 1, 236, 239, 15, 44, 24, 253, 21, 40, 3, 239, 11, 41, 39, 31, 12, 229, 222, 3, 41, 46, 33, 12, 4, 26, 27, 242,
+			220, 8, 59, 41, 252, 252, 10, 4, 11, 41, 38, 252, 234, 14, 48, 20, 236, 235, 22, 60, 34, 228, 238, 55, 67, 4, 205, 208, 18, 85,
+			66, 253, 228, 240, 2, 39, 53, 20, 0, 253, 232, 245, 48, 50, 248, 235, 26, 64, 31, 209, 194, 39, 106, 18, 191, 238, 56, 47, 253, 243,
+			24, 32, 246, 249, 43, 33, 242, 252, 17, 0, 8, 41, 32, 254, 245, 0, 3, 12, 36, 47, 18, 232, 232, 24, 50, 7, 225, 248, 35, 45,
+			31, 0, 215, 239, 64, 80, 0, 210, 241, 20, 26, 28, 15, 250, 0, 32, 43, 13, 246, 244, 2, 17, 16, 10, 24, 27, 245, 251, 42, 33,
+			252, 254, 250, 246, 30, 47, 10, 2, 20, 5, 243, 10, 37, 28, 10, 252, 240, 254, 31, 54, 33, 240, 214, 254, 67, 70, 242, 200, 7, 46,
+			15, 19, 36, 253, 228, 15, 34, 11, 12, 19, 3, 13, 36, 7, 237, 14, 28, 254, 5, 37, 14, 249, 26, 37, 247, 232, 23, 47, 13, 243,
+			253, 12, 24, 52, 48, 253, 235, 5, 8, 245, 5, 41, 46, 16, 2, 21, 22, 241, 221, 20, 88, 59, 216, 193, 34, 98, 30, 225, 254, 10,
+			248, 32, 85, 37, 217, 230, 26, 30, 14, 28, 38, 24, 255, 240, 5, 40, 24, 242, 18, 75, 50, 242, 227, 242, 13, 56, 59, 11, 242, 253,
+			17, 40, 39, 11, 250, 253, 15, 50, 56, 3, 222, 0, 41, 26, 19, 41, 24, 233, 244, 47, 45, 0, 1, 37, 30, 3, 7, 23, 24, 9,
+			2, 9, 16, 34, 54, 38, 254, 237, 245, 0, 27, 61, 55, 9, 246, 10, 14, 2, 19, 44, 33, 252, 237, 16, 69, 54, 238, 225, 30, 58,
+			25, 252, 238, 244, 50, 97, 26, 201, 231, 37, 43, 48, 41, 241, 233, 35, 37, 254, 26, 59, 1, 207, 249, 44, 63, 68, 30, 222, 213, 1,
+			37, 53, 44, 1, 240, 27, 43, 0, 1, 45, 28, 236, 248, 26, 28, 24, 23, 16, 27, 35, 6, 243, 5, 21, 25, 29, 21, 9, 12, 13,
+			9, 26, 40, 17, 235, 235, 29, 78, 61, 254, 225, 240, 6, 38, 55, 24, 251, 6, 23, 21, 25, 24, 3, 253, 15, 24, 25, 23, 11, 11,
+			29, 27, 13, 9, 254, 255, 33, 54, 21, 245, 3, 31, 25, 0, 255, 27, 48, 20, 238, 244, 31, 52, 30, 246, 234, 13, 45, 33, 4, 1,
+			15, 26, 21, 0, 244, 7, 46, 47, 6, 239, 3, 24, 11, 8, 30, 26, 250, 251, 17, 31, 37, 9, 225, 250, 47, 36, 0, 1, 19, 17,
+			1, 3, 19, 18, 5, 19, 28, 253, 240, 10, 26, 21, 25, 19, 0, 250, 3, 18, 25, 24, 12, 255, 252, 16, 38, 7, 226, 10, 83, 51,
+			215, 199, 5, 56, 48, 7, 238, 2, 26, 13, 0, 24, 35, 4, 247, 12, 12, 254, 10, 21, 9, 2, 13, 29, 32, 12, 242, 254, 27, 18,
+			243, 239, 16, 54, 50, 10, 242, 253, 8, 3, 14, 38, 22, 242, 244, 12, 35, 47, 20, 230, 241, 30, 22, 4, 36, 41, 234, 214, 22, 58,
+			26, 254, 253, 13, 32, 30, 3, 247, 6, 16, 9, 18, 41, 27, 243, 242, 22, 44, 22, 3, 6, 253, 248, 29, 55, 14, 241, 12, 38, 18,
+			251, 8, 35, 23, 239, 231, 18, 60, 48, 12, 6, 250, 215, 246, 83, 94, 3, 210, 225, 243, 26, 85, 73, 250, 206, 238, 38, 64, 29, 226,
+			222, 32, 84, 34, 203, 218, 63, 74, 236, 209, 25, 66, 36, 4, 248, 237, 241, 15, 57, 61, 6, 222, 249, 47, 54, 5, 224, 247, 35, 40,
+			12, 5, 19, 5, 247, 27, 64, 25, 226, 238, 31, 42, 22, 4, 247, 252, 28, 49, 46, 28, 247, 221, 246, 33, 57, 53, 12, 229, 248, 42,
+			43, 0, 239, 13, 45, 47, 32, 0, 231, 253, 34, 31, 16, 25, 30, 8, 254, 28, 44, 10, 242, 6, 31, 30, 30, 33, 14, 248, 253, 17,
+			26, 33, 44, 30, 253, 248, 15, 24, 18, 15, 15, 23, 29, 18, 7, 12, 26, 37, 28, 247, 230, 19, 61, 38, 4, 8, 10, 2, 21, 46,
+			39, 12, 244, 235, 13, 58, 40, 0, 10, 38, 17, 242, 5, 47, 44, 1, 246, 17, 36, 27, 10, 12, 21, 8, 0, 24, 50, 39, 8, 250,
+			9, 28, 2, 242, 31, 67, 32, 0, 8, 13, 7, 7, 20, 34, 29, 14, 7, 2, 0, 27, 56, 35, 247, 240, 15, 36, 24, 9, 14, 24,
+			15, 3, 14, 32, 30, 17, 0, 239, 2, 54, 55, 4, 246, 21, 26, 254, 253, 25, 45, 27, 254, 255, 18, 21, 13, 21, 31, 14, 249, 253,
+			7, 21, 48, 50, 7, 233, 247, 20, 32, 22, 16, 18, 15, 9, 7, 8, 20, 34, 21, 253, 0, 25, 31, 6, 0, 26, 36, 5, 239, 9,
+			54, 46, 1, 245, 255, 0, 16, 44, 45, 11, 240, 0, 31, 29, 7, 0, 13, 33, 29, 0, 246, 8, 35, 35, 4, 253, 27, 28, 243, 247,
+			52, 59, 250, 217, 254, 31, 30, 28, 21, 4, 2, 12, 12, 17, 31, 18, 242, 241, 21, 38, 15, 9, 33, 27, 247, 243, 12, 19, 11, 20,
+			31, 13, 0, 8, 4, 252, 20, 38, 13, 247, 6, 20, 18, 34, 30, 240, 221, 5, 35, 26, 15, 13, 20, 21, 254, 241, 13, 36, 15, 247,
+			250, 7, 29, 45, 17, 239, 255, 19, 2, 1, 22, 18, 10, 13, 4, 7, 30, 20, 238, 242, 27, 32, 11, 15, 12, 247, 3, 32, 15, 252,
+			11, 16, 247, 249, 37, 53, 5, 219, 245, 34, 39, 8, 247, 3, 18, 11, 6, 26, 32, 0, 232, 248, 21, 29, 20, 15, 9, 5, 9, 8,
+			2, 3, 2, 4, 27, 35, 7, 254, 17, 9, 246, 10, 32, 13, 249, 3, 27, 30, 13, 0, 3, 11, 12, 6, 255, 253, 15, 46, 48, 11,
+			236, 240, 1, 16, 30, 32, 10, 240, 251, 35, 53, 27, 239, 222, 251, 38, 51, 27, 252, 241, 4, 33, 33, 12, 0, 253, 252, 12, 36, 34,
+			10, 255, 9, 17, 11, 13, 22, 9, 244, 4, 40, 44, 15, 241, 241, 21, 43, 20, 0, 3, 12, 17, 19, 17, 15, 6, 0, 18, 39, 17,
+			241, 251, 22, 20, 12, 28, 42, 19, 240, 235, 9, 38, 34, 13, 9, 19, 5, 249, 23, 49, 19, 240, 254, 31, 32, 7, 1, 13, 18, 21,
+			27, 21, 9, 8, 4, 2, 20, 37, 28, 15, 16, 15, 5, 253, 4, 25, 37, 33, 23, 12, 7, 5, 5, 14, 24, 18, 14, 28, 38, 25,
+			253, 241, 2, 29, 38, 30, 21, 16, 5, 254, 8, 24, 29, 32, 26, 8, 8, 19, 9, 254, 19, 42, 30, 8, 5, 13, 17, 15, 14, 11,
+			9, 17, 39, 46, 14, 234, 241, 18, 31, 22, 25, 34, 31, 13, 246, 242, 11, 35, 34, 29, 26, 9, 250, 255, 17, 30, 27, 8, 2, 27,
+			41, 19, 255, 2, 6, 4, 13, 32, 41, 27, 6, 4, 18, 16, 254, 252, 19, 40, 33, 11, 6, 12, 7, 8, 31, 41, 14, 242, 248, 20,
+			42, 35, 7, 248, 5, 25, 27, 21, 23, 22, 1, 242, 5, 35, 32, 13, 13, 24, 21, 8, 255, 4, 21, 27, 20, 13, 9, 11, 22, 23,
+			8, 5, 19, 21, 8, 2, 10, 25, 36, 27, 1, 248, 12, 30, 13, 252, 18, 40, 14, 248, 11, 30, 20, 11, 14, 8, 1, 9, 22, 22,
+			15, 11, 10, 10, 13, 15, 16, 17, 17, 10, 2, 6, 17, 19, 15, 16, 15, 10, 9, 13, 12, 10, 14, 15, 13, 11, 8, 7, 13, 17,
+			12, 11, 21, 18, 2, 255, 9, 13, 14, 19, 16, 9, 8, 9, 5, 6, 18, 24, 13, 255, 4, 20, 17, 3, 8, 19, 10, 253, 2, 20,
+			23, 11, 5, 13, 17, 7, 1, 6, 12, 15, 13, 8, 2, 6, 18, 24, 13, 0, 1, 12, 10, 2, 11, 20, 12, 2, 4, 10, 16, 15,
+			6, 3, 12, 14, 8, 10, 14, 9, 4, 7, 8, 7, 14, 23, 19, 5, 0, 8, 14, 12, 9, 7, 6, 12, 17, 10, 2, 9, 21, 22,
+			11, 0, 0, 12, 16, 10, 9, 12, 8, 7, 13, 12, 7, 11, 21, 21, 11, 4, 5, 10, 9, 3, 218, 12, 24, 0, 23, 23, 23, 23,
+			23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 22, 22, 22,
+			21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 22, 23, 22, 22, 22, 22, 23, 23, 23, 23,
+			23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 24, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23,
+			23, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24,
+			24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26,
+			25, 26, 26, 26, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 29, 29,
+			28, 28, 28, 28, 29, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 29, 29, 29, 30, 29, 29, 29, 29, 29, 30,
+			30, 30, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+			29, 29, 29, 28, 28, 28, 28, 28, 28, 29, 29, 29, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 28, 28, 28, 27, 28, 28, 28,
+			27, 27, 27, 27, 28, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+			28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27,
+			27, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+			25, 25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 24, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+			22, 22, 22, 22, 22, 23, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21,
+			21, 21, 21, 22, 22, 22, 22, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+			22, 22, 22, 21, 21, 22, 22, 23, 22, 22, 22, 23, 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22,
+			22, 22, 22, 22, 22, 23, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
+			23, 23, 23, 23, 23, 22, 22, 22, 22, 23, 23, 23, 23, 22, 22, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 23, 24, 24, 24,
+			24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26,
+			26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27,
+			28, 27, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 28, 29, 29, 29, 29, 29,
+			29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 29, 30, 30, 30, 31, 31, 30, 30, 30, 30, 30, 30, 30,
+			30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 30, 29, 29, 29, 29, 29, 29, 29, 29,
+			29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 29, 29, 29, 28, 28, 28, 28, 28, 28, 28,
+			28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 28, 28, 28, 28,
+			27, 27, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 26, 26,
+			26, 27, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, 25, 25, 26, 26, 26, 25, 26, 26, 26, 25, 25, 25, 25, 24, 25, 25, 25, 25,
+			25, 24, 24, 24, 24, 23, 23, 23, 23, 23, 22, 23, 23, 23, 23, 23, 22, 23, 22, 22, 22, 22, 23, 23, 23, 22, 22, 22, 22, 22,
+			22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 20, 21, 21, 22, 22, 22, 21, 20, 19, 19, 19, 20, 20, 20, 21, 20, 20, 20, 21,
+			22, 21, 20, 20, 18, 1, 223, 195, 201, 247, 42, 74, 82, 63, 30, 3, 239, 210, 185, 197, 243, 24, 43, 60, 71, 65, 53, 43, 28, 6,
+			246, 241, 247, 6, 31, 56, 69, 66, 48, 24, 2, 250, 253, 5, 14, 23, 30, 34, 37, 38, 33, 25, 18, 11, 7, 3, 4, 12, 23, 33,
+			39, 39, 34, 24, 14, 7, 4, 5, 16, 34, 44, 35, 22, 16, 24, 25, 13, 9, 24, 35, 27, 11, 13, 31, 44, 39, 22, 12, 10, 13,
+			18, 26, 35, 39, 32, 17, 10, 15, 22, 30, 36, 34, 24, 14, 15, 26, 34, 30, 20, 22, 25, 24, 23, 26, 28, 26, 31, 38, 23, 4,
+			8, 37, 49, 32, 15, 16, 28, 32, 25, 22, 23, 19, 25, 32, 34, 27, 22, 19, 20, 30, 36, 33, 23, 18, 14, 21, 26, 32, 45, 43,
+			15, 242, 252, 15, 17, 6, 21, 48, 55, 54, 39, 12, 4, 29, 52, 25, 7, 27, 38, 17, 18, 53, 54, 23, 19, 42, 37, 3, 252, 33,
+			64, 47, 12, 14, 33, 42, 35, 31, 16, 13, 44, 47, 5, 4, 42, 51, 32, 29, 35, 8, 15, 39, 52, 39, 35, 41, 16, 254, 12, 66,
+			73, 32, 254, 252, 40, 71, 52, 15, 24, 50, 32, 3, 10, 44, 49, 33, 31, 31, 11, 234, 227, 236, 6, 39, 50, 44, 23, 28, 57, 60,
+			34, 34, 41, 26, 14, 18, 22, 38, 67, 70, 35, 1, 1, 27, 53, 49, 27, 20, 29, 27, 11, 9, 39, 66, 51, 41, 28, 249, 240, 27,
+			71, 48, 16, 32, 34, 8, 23, 61, 40, 9, 27, 37, 13, 1, 38, 56, 28, 35, 74, 29, 206, 243, 85, 88, 29, 37, 44, 253, 229, 28,
+			76, 58, 26, 24, 29, 16, 26, 31, 42, 39, 24, 15, 15, 48, 53, 23, 4, 31, 50, 35, 29, 32, 28, 23, 25, 14, 29, 51, 23, 3,
+			45, 75, 18, 231, 26, 88, 47, 244, 247, 31, 48, 44, 33, 22, 21, 30, 38, 21, 12, 15, 39, 68, 39, 249, 5, 39, 23, 1, 34, 83,
+			51, 235, 246, 51, 57, 18, 25, 24, 246, 248, 71, 98, 15, 231, 1, 28, 32, 46, 70, 19, 227, 4, 59, 49, 23, 4, 252, 27, 48, 24,
+			22, 78, 39, 214, 230, 56, 60, 252, 22, 68, 26, 212, 12, 82, 34, 236, 22, 74, 18, 232, 22, 59, 36, 247, 13, 55, 25, 1, 24, 53,
+			17, 237, 2, 36, 34, 33, 69, 27, 213, 246, 65, 42, 248, 4, 46, 52, 20, 18, 13, 245, 24, 66, 39, 237, 244, 35, 27, 34, 57, 36,
+			251, 245, 40, 25, 243, 15, 52, 64, 7, 211, 0, 87, 73, 244, 227, 29, 53, 247, 245, 66, 72, 0, 246, 28, 19, 250, 22, 72, 41, 235,
+			238, 22, 70, 59, 5, 0, 26, 19, 245, 7, 58, 67, 25, 19, 34, 248, 217, 14, 84, 79, 5, 243, 2, 9, 37, 57, 33, 253, 255, 27,
+			49, 43, 15, 6, 31, 63, 14, 201, 255, 89, 76, 245, 251, 57, 67, 7, 235, 19, 21, 0, 50, 86, 25, 226, 7, 45, 25, 4, 35, 57,
+			28, 39, 37, 239, 231, 44, 73, 9, 241, 43, 62, 3, 237, 67, 91, 253, 219, 11, 33, 33, 25, 45, 54, 15, 19, 29, 4, 249, 46, 78,
+			7, 229, 36, 79, 64, 23, 238, 248, 38, 51, 36, 21, 8, 20, 52, 28, 239, 19, 69, 58, 27, 21, 24, 247, 236, 47, 64, 25, 42, 80,
+			30, 241, 254, 23, 59, 59, 39, 0, 235, 39, 67, 41, 39, 46, 12, 237, 255, 47, 81, 69, 21, 1, 12, 26, 41, 34, 35, 59, 57, 254,
+			238, 68, 79, 10, 255, 35, 45, 2, 15, 71, 94, 40, 217, 246, 69, 58, 251, 14, 92, 59, 243, 20, 74, 8, 229, 75, 97, 6, 221, 25,
+			67, 51, 42, 55, 21, 240, 36, 52, 20, 34, 55, 22, 6, 42, 78, 31, 229, 252, 82, 122, 40, 207, 229, 59, 71, 32, 20, 33, 63, 34,
+			246, 2, 54, 89, 62, 17, 239, 242, 37, 57, 27, 24, 58, 65, 25, 11, 41, 40, 254, 255, 34, 46, 62, 62, 18, 243, 25, 88, 53, 0,
+			23, 28, 254, 252, 67, 93, 12, 241, 34, 55, 15, 255, 53, 59, 36, 23, 16, 11, 13, 51, 63, 20, 247, 36, 76, 45, 8, 1, 14, 37,
+			41, 45, 26, 0, 22, 59, 43, 25, 41, 31, 252, 3, 33, 70, 64, 24, 33, 9, 242, 18, 64, 51, 18, 16, 25, 16, 36, 73, 38, 235,
+			237, 39, 48, 22, 39, 37, 8, 23, 55, 17, 234, 10, 36, 38, 37, 32, 0, 251, 24, 39, 33, 35, 20, 0, 32, 44, 28, 21, 38, 20,
+			238, 29, 90, 56, 235, 254, 33, 25, 29, 69, 55, 246, 245, 31, 37, 6, 31, 65, 32, 234, 243, 59, 71, 5, 221, 1, 42, 44, 42, 14,
+			252, 23, 41, 21, 4, 13, 32, 27, 250, 9, 43, 44, 37, 22, 5, 5, 14, 14, 26, 38, 16, 0, 31, 48, 27, 255, 254, 251, 10, 64,
+			70, 12, 220, 243, 35, 22, 244, 25, 71, 45, 239, 241, 11, 254, 15, 65, 42, 235, 225, 8, 45, 56, 35, 251, 232, 4, 39, 27, 249, 8,
+			46, 26, 251, 17, 35, 18, 0, 10, 30, 17, 14, 20, 18, 6, 254, 9, 28, 28, 16, 39, 54, 4, 202, 226, 21, 57, 71, 46, 1, 227,
+			245, 24, 29, 22, 14, 22, 45, 20, 240, 10, 40, 30, 8, 250, 13, 48, 45, 15, 253, 254, 13, 18, 39, 41, 250, 231, 15, 67, 56, 21,
+			245, 247, 5, 249, 228, 230, 4, 10, 12, 18, 248, 233, 6, 43, 59, 32, 236, 247, 49, 73, 37, 9, 13, 29, 35, 23, 13, 8, 18, 36,
+			36, 16, 4, 27, 47, 15, 254, 30, 61, 39, 250, 246, 17, 22, 24, 36, 20, 0, 3, 18, 22, 28, 33, 16, 252, 3, 29, 39, 37, 34,
+			20, 13, 27, 34, 15, 13, 46, 63, 52, 14, 247, 8, 45, 66, 44, 7, 1, 19, 34, 35, 22, 30, 46, 47, 18, 252, 5, 12, 30, 57,
+			56, 28, 253, 3, 30, 26, 20, 33, 38, 33, 37, 34, 16, 14, 32, 50, 40, 5, 255, 29, 59, 61, 33, 19, 33, 38, 8, 248, 24, 61,
+			61, 28, 11, 28, 39, 34, 31, 41, 30, 10, 25, 56, 25, 254, 29, 42, 25, 32, 57, 42, 20, 20, 20, 16, 39, 60, 38, 2, 16, 71,
+			69, 20, 22, 41, 44, 35, 23, 37, 31, 22, 44, 66, 37, 1, 9, 36, 51, 25, 26, 58, 42, 3, 2, 35, 49, 34, 18, 10, 29, 56,
+			53, 19, 5, 15, 29, 41, 34, 36, 26, 18, 33, 60, 61, 42, 14, 251, 17, 56, 69, 34, 16, 26, 28, 33, 40, 42, 34, 28, 28, 23,
+			25, 43, 49, 22, 16, 42, 48, 26, 24, 44, 54, 35, 24, 26, 9, 17, 63, 71, 15, 248, 24, 76, 78, 17, 231, 1, 53, 57, 23, 18,
+			39, 25, 252, 28, 86, 54, 0, 2, 49, 55, 1, 10, 66, 77, 42, 10, 4, 25, 34, 28, 21, 39, 68, 48, 9, 8, 41, 47, 28, 29,
+			20, 16, 35, 66, 68, 12, 246, 32, 56, 46, 29, 24, 27, 22, 35, 62, 52, 10, 244, 21, 74, 75, 20, 13, 51, 38, 251, 0, 40, 48,
+			26, 30, 33, 25, 21, 38, 44, 19, 14, 21, 15, 5, 37, 70, 55, 15, 0, 3, 18, 45, 40, 24, 29, 41, 34, 17, 5, 19, 39, 45,
+			31, 25, 50, 65, 3, 221, 0, 58, 52, 1, 14, 52, 53, 22, 250, 0, 53, 72, 37, 251, 239, 23, 69, 56, 21, 19, 49, 45, 252, 247,
+			27, 57, 55, 52, 17, 247, 19, 25, 27, 56, 77, 38, 239, 250, 19, 43, 75, 75, 14, 223, 16, 87, 81, 22, 237, 244, 36, 68, 40, 255,
+			9, 69, 66, 29, 33, 22, 246, 16, 72, 70, 27, 22, 32, 14, 15, 22, 43, 48, 64, 76, 19, 247, 22, 22, 253, 30, 93, 71, 2, 12,
+			58, 50, 7, 2, 37, 48, 29, 31, 36, 22, 11, 20, 36, 30, 33, 43, 22, 7, 26, 50, 55, 50, 21, 3, 250, 22, 73, 66, 34, 18,
+			39, 35, 4, 0, 21, 44, 33, 26, 40, 39, 15, 3, 48, 75, 28, 238, 3, 31, 30, 49, 52, 25, 13, 36, 41, 15, 1, 13, 38, 56,
+			54, 21, 249, 32, 66, 32, 252, 25, 65, 31, 242, 249, 54, 80, 47, 17, 7, 11, 9, 21, 37, 50, 41, 27, 36, 20, 240, 2, 54, 68,
+			41, 26, 16, 18, 24, 30, 32, 31, 31, 32, 24, 254, 17, 47, 45, 22, 30, 37, 25, 17, 19, 13, 13, 54, 61, 30, 248, 3, 42, 62,
+			48, 13, 12, 37, 36, 21, 12, 42, 63, 47, 28, 16, 25, 19, 17, 32, 61, 58, 19, 17, 39, 39, 25, 36, 56, 30, 20, 38, 42, 28,
+			18, 21, 21, 54, 75, 37, 249, 244, 11, 31, 66, 72, 22, 248, 7, 38, 38, 41, 50, 35, 255, 5, 48, 54, 31, 23, 16, 20, 51, 64,
+			40, 3, 1, 46, 37, 1, 28, 67, 41, 0, 19, 51, 36, 17, 25, 37, 31, 44, 64, 35, 0, 18, 30, 24, 18, 34, 58, 49, 34, 17,
+			25, 13, 3, 28, 51, 49, 25, 30, 42, 37, 24, 28, 40, 6, 4, 41, 59, 55, 47, 40, 12, 6, 27, 24, 17, 51, 75, 42, 0, 12,
+			45, 34, 13, 19, 26, 28, 44, 66, 51, 16, 0, 6, 29, 60, 69, 46, 24, 21, 14, 13, 36, 57, 56, 37, 25, 13, 16, 42, 57, 43,
+			35, 30, 10, 19, 60, 66, 19, 16, 49, 42, 14, 11, 26, 42, 42, 23, 12, 20, 50, 55, 46, 47, 33, 250, 248, 51, 71, 29, 9, 41,
+			53, 37, 46, 56, 31, 255, 6, 33, 40, 43, 43, 28, 14, 26, 50, 41, 16, 39, 50, 19, 0, 6, 21, 44, 59, 35, 0, 255, 47, 91,
+			70, 20, 245, 254, 39, 44, 17, 12, 38, 63, 40, 8, 20, 41, 21, 1, 24, 37, 10, 242, 21, 54, 68, 54, 7, 248, 12, 30, 21, 17,
+			24, 38, 24, 11, 19, 17, 18, 38, 48, 38, 16, 0, 1, 1, 19, 45, 47, 34, 18, 16, 33, 27, 19, 27, 40, 37, 3, 248, 13, 21,
+			17, 30, 64, 80, 32, 240, 2, 24, 255, 240, 42, 71, 17, 248, 30, 48, 21, 20, 30, 7, 233, 1, 50, 46, 16, 10, 9, 0, 16, 42,
+			49, 35, 18, 9, 7, 23, 29, 8, 3, 20, 41, 51, 44, 36, 21, 4, 247, 6, 35, 31, 20, 17, 15, 20, 50, 56, 22, 255, 1, 12,
+			21, 35, 20, 243, 252, 35, 36, 24, 28, 25, 6, 3, 33, 43, 17, 5, 10, 16, 37, 52, 37, 26, 29, 35, 28, 12, 11, 27, 23, 5,
+			2, 16, 44, 54, 29, 5, 19, 19, 253, 7, 30, 14, 0, 26, 51, 30, 0, 4, 37, 46, 29, 19, 12, 12, 15, 14, 3, 2, 29, 48,
+			27, 6, 18, 43, 19, 237, 5, 52, 45, 14, 11, 19, 26, 52, 53, 10, 4, 37, 34, 3, 14, 40, 25, 255, 17, 43, 28, 5, 14, 36,
+			23, 11, 18, 28, 41, 41, 250, 212, 251, 68, 83, 46, 18, 4, 251, 13, 60, 64, 19, 254, 0, 22, 43, 37, 26, 41, 46, 23, 0, 1,
+			17, 23, 27, 33, 29, 14, 22, 49, 32, 245, 241, 22, 57, 61, 41, 8, 238, 247, 24, 41, 34, 29, 28, 17, 254, 2, 45, 65, 31, 0,
+			6, 10, 4, 17, 41, 51, 44, 21, 0, 9, 22, 28, 38, 33, 8, 5, 30, 29, 28, 35, 28, 3, 5, 46, 60, 28, 3, 5, 11, 28,
+			42, 56, 53, 21, 240, 2, 40, 46, 43, 37, 27, 17, 17, 14, 9, 19, 43, 41, 25, 26, 34, 28, 29, 35, 23, 9, 12, 32, 34, 31,
+			37, 35, 17, 17, 38, 42, 33, 28, 30, 22, 24, 37, 32, 14, 12, 30, 34, 32, 47, 50, 31, 17, 8, 1, 11, 29, 47, 56, 39, 22,
+			16, 26, 46, 50, 48, 28, 0, 4, 34, 46, 35, 19, 10, 17, 33, 38, 28, 18, 27, 32, 13, 3, 25, 51, 39, 14, 12, 27, 37, 35,
+			28, 25, 23, 29, 36, 22, 14, 16, 27, 41, 39, 34, 32, 31, 28, 24, 25, 34, 32, 12, 9, 29, 42, 32, 20, 24, 28, 26, 32, 30,
+			21, 10, 7, 18, 39, 46, 38, 30, 21, 21, 21, 26, 36, 36, 11, 6, 32, 38, 28, 34, 39, 29, 17, 17, 28, 37, 33, 17, 14, 22,
+			22, 18, 29, 40, 35, 23, 21, 34, 31, 10, 255, 6, 19, 26, 33, 31, 21, 19, 27, 33, 31, 27, 19, 6, 11, 30, 22, 5, 16, 33,
+			40, 39, 31, 23, 8, 5, 21, 31, 22, 11, 17, 30, 38, 32, 25, 26, 31, 28, 20, 18, 19, 20, 26, 41, 34, 3, 247, 17, 43, 39,
+			29, 31, 24, 10, 6, 5, 1, 9, 31, 39, 17, 0, 13, 36, 31, 14, 8, 10, 20, 29, 19, 6, 11, 25, 24, 21, 34, 39, 19, 4,
+			19, 32, 26, 23, 33, 19, 249, 0, 35, 43, 25, 21, 27, 19, 4, 15, 27, 20, 16, 19, 17, 9, 13, 28, 37, 31, 27, 30, 26, 17,
+			13, 17, 18, 19, 32, 42, 35, 23, 22, 26, 23, 18, 27, 34, 33, 30, 17, 8, 13, 31, 34, 30, 36, 34, 23, 18, 17, 16, 24, 32,
+			27, 13, 9, 21, 33, 32, 26, 27, 26, 17, 9, 13, 24, 31, 32, 31, 28, 19, 13, 20, 31, 31, 29, 32, 31, 20, 12, 13, 25, 32,
+			30, 24, 22, 28, 26, 17, 16, 22, 27, 31, 33, 26, 16, 20, 27, 30, 29, 30, 26, 17, 19, 25, 27, 25, 26, 31, 30, 21, 15, 18,
+			26, 34, 36, 28, 15, 10, 21, 29, 27, 28, 35, 33, 23, 20, 24, 26, 29, 35, 31, 21, 18, 22, 28, 30, 27, 27, 31, 33, 30, 22,
+			18, 23, 33, 35, 26, 19, 25, 32, 28, 26, 29, 30, 26, 26, 26, 19, 0, 0, 175, 0, 4, 0, 1, 0, 44, 1, 66, 3, 196, 4,
+			130, 10, 112, 13, 48, 15, 32, 28, 45, 50, 30, 64, 60, 39, 31, 20, 9, 5, 186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 44, 1,
+			66, 3, 196, 4, 130, 10, 112, 13, 48, 15, 32, 28, 70, 104, 44, 92, 87, 57, 44, 29, 13, 7, 186, 152, 120, 120, 120, 120, 192, 155,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0,
+			1, 0, 44, 1, 66, 3, 216, 4, 240, 10, 112, 13, 48, 15, 32, 28, 60, 80, 45, 77, 82, 54, 42, 27, 13, 6, 186, 152, 120, 120,
+			120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0,
+			1, 250, 0, 0, 1, 0, 44, 1, 66, 3, 216, 4, 84, 11, 152, 13, 80, 15, 32, 28, 0, 30, 37, 35, 56, 37, 29, 19, 9, 4,
+			186, 152, 120, 120, 120, 120, 192, 155, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0,
+			188, 200, 53, 182, 64, 250, 23, 8, 45, 0, 5, 0, 1, 0, 240, 0, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 45, 61,
+			34, 63, 75, 41, 34, 29, 11, 5, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 248, 0, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14,
+			192, 27, 130, 112, 43, 86, 102, 55, 46, 39, 15, 7, 165, 148, 135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 218, 0, 120, 2, 169, 3, 161, 10,
+			109, 12, 71, 14, 60, 27, 55, 109, 34, 71, 93, 53, 42, 37, 17, 8, 166, 145, 137, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 144, 0, 208, 1,
+			12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 40, 67, 25, 64, 64, 45, 41, 24, 17, 8, 163, 120, 143, 120, 120, 120, 165, 115, 130, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			144, 0, 208, 1, 12, 3, 196, 9, 254, 11, 157, 14, 216, 26, 0, 42, 19, 51, 51, 35, 32, 19, 14, 6, 163, 120, 143, 120, 120, 120,
+			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 195, 0, 4, 0, 1, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 45, 36, 12, 54, 51, 51, 49, 30,
+			11, 9, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25, 75, 63, 16, 72,
+			68, 68, 65, 39, 15, 12, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12, 40, 15, 104, 25,
+			75, 46, 13, 61, 57, 57, 55, 33, 12, 10, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 141, 0, 80, 1, 204, 6, 0, 10, 208, 12,
+			40, 15, 104, 25, 0, 30, 11, 49, 46, 47, 45, 27, 10, 8, 174, 115, 127, 122, 122, 132, 187, 130, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 210, 0, 5, 0, 1, 0, 171, 0,
+			105, 1, 248, 7, 2, 11, 28, 13, 224, 14, 196, 26, 45, 29, 17, 48, 48, 38, 38, 24, 10, 5, 167, 113, 125, 120, 120, 120, 167, 90,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 214, 0, 18, 2, 160, 6, 203, 10, 77, 13, 4, 15, 79, 27, 60, 58, 30, 71, 73, 55, 50, 32, 14, 7, 175, 128, 129, 120,
+			120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 60, 73, 36, 66, 79, 56, 43, 28, 13, 7,
+			186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 45, 65, 37, 62, 75, 52,
+			40, 27, 12, 6, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 24, 1, 16, 3, 156, 4, 120, 10, 152, 13, 60, 15, 32, 28, 0, 43,
+			30, 50, 61, 42, 33, 22, 10, 5, 186, 152, 135, 120, 120, 120, 192, 155, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 203, 0, 6, 0, 1, 0, 200, 0, 29, 1, 245, 8, 36, 11,
+			186, 12, 165, 15, 244, 26, 61, 64, 0, 88, 56, 44, 48, 36, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 34, 2,
+			165, 7, 70, 9, 110, 13, 79, 15, 244, 26, 70, 85, 40, 88, 68, 64, 40, 20, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			200, 0, 9, 3, 208, 4, 241, 9, 60, 13, 194, 14, 244, 26, 72, 99, 52, 96, 92, 48, 44, 32, 16, 8, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 14, 1, 212, 2, 106, 4, 200, 10, 2, 13, 238, 14, 192, 27, 61, 140, 52, 95, 114, 62, 51, 43, 16, 8, 165, 148,
+			135, 120, 120, 120, 167, 142, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 145, 2, 228, 3, 118, 10, 225, 12, 56, 15, 244, 26, 60, 127, 48, 108, 68, 40, 44, 28,
+			16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 45, 2, 57, 3, 209, 10, 2, 13, 122, 15, 244, 26, 0, 106, 46, 86,
+			54, 36, 32, 18, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 215, 0, 5, 0, 33, 0, 173, 0, 64, 1, 156, 8, 220, 10, 66, 13,
+			19, 15, 228, 26, 45, 44, 12, 60, 60, 59, 56, 29, 13, 6, 182, 105, 128, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 173, 0, 64, 1, 156, 8,
+			220, 10, 66, 13, 19, 15, 228, 26, 40, 56, 14, 68, 68, 66, 64, 32, 14, 7, 182, 105, 128, 120, 120, 120, 167, 105, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 244, 0,
+			229, 1, 108, 7, 82, 10, 89, 13, 17, 15, 34, 28, 90, 58, 28, 67, 66, 65, 55, 35, 13, 8, 221, 122, 147, 120, 120, 120, 167, 105,
+			120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 31, 1, 72, 2, 204, 6, 0, 10, 104, 13, 15, 15, 224, 28, 40, 43, 31, 56, 56, 55, 42, 31, 10, 6, 244, 132, 159, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 31, 1, 72, 2, 204, 6, 0, 10, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48, 48, 47, 36, 27, 9, 5,
+			244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 225, 0, 5, 0, 1, 0, 136, 0, 44, 1, 8, 7, 96, 9, 148, 12, 41, 14, 144, 26, 45, 27,
+			13, 56, 44, 37, 29, 23, 11, 0, 120, 120, 105, 120, 120, 120, 60, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 136, 0, 164, 1, 120, 5, 196, 9, 48, 12, 41, 14,
+			144, 26, 40, 52, 27, 82, 60, 46, 40, 29, 19, 0, 120, 120, 112, 120, 120, 120, 60, 75, 112, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 192, 0, 40, 2, 132, 3, 20, 10,
+			204, 11, 96, 14, 88, 27, 80, 106, 35, 84, 81, 51, 49, 28, 18, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0, 40, 2,
+			92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 60, 105, 32, 76, 83, 46, 44, 26, 16, 7, 172, 142, 135, 120, 120, 120, 167, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			192, 0, 40, 2, 92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 0, 55, 23, 55, 60, 34, 32, 18, 12, 5, 172, 142, 135, 120, 120, 120,
+			167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 102, 0, 6, 0, 1, 0, 200, 0, 14, 1, 21, 9, 210, 11, 91, 12, 164, 15, 244, 26, 43, 65, 3, 83, 38, 41, 38, 38,
+			11, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 144, 0, 76, 1, 251, 8, 200, 10, 111, 12, 209, 14, 244, 26, 60, 104, 11, 102,
+			72, 64, 60, 49, 15, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 104, 0, 154, 1, 228, 6, 50, 9, 139, 12, 250, 14, 244, 26,
+			107, 56, 33, 69, 42, 48, 42, 27, 12, 6, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 207, 1, 11, 4, 244, 9, 110, 12,
+			228, 14, 244, 26, 124, 75, 32, 80, 54, 35, 25, 16, 12, 6, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 104, 0, 168, 1, 29, 3,
+			47, 10, 55, 12, 77, 15, 244, 26, 35, 84, 41, 76, 64, 22, 15, 7, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0,
+			114, 1, 202, 2, 115, 10, 103, 12, 72, 15, 244, 26, 0, 64, 24, 63, 45, 21, 15, 9, 12, 6, 187, 125, 137, 137, 150, 175, 187, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0,
+			160, 0, 4, 0, 1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 40, 30, 52, 60, 40, 33, 28, 16, 6,
+			167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 60, 71, 40, 70, 80, 54,
+			44, 38, 22, 8, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14, 84, 27, 50, 53,
+			34, 60, 69, 46, 38, 33, 19, 7, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 132, 0, 8, 2, 136, 4, 136, 9, 128, 12, 156, 14,
+			84, 27, 0, 33, 27, 48, 55, 37, 30, 26, 15, 5, 167, 148, 143, 120, 120, 120, 197, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 239, 0, 5, 0, 1, 0, 80, 0, 96, 1,
+			52, 3, 193, 10, 228, 12, 114, 15, 244, 26, 87, 79, 30, 80, 61, 42, 30, 0, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			80, 0, 191, 1, 17, 3, 196, 10, 108, 12, 119, 15, 244, 26, 50, 97, 53, 83, 53, 41, 38, 34, 15, 7, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 128, 0, 80, 2, 81, 3, 120, 10, 94, 12, 201, 14, 244, 26, 53, 122, 49, 83, 79, 38, 30, 19, 19, 7, 187, 125,
+			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 200, 0, 57, 3, 115, 4, 10, 10, 41, 12, 214, 13, 244, 26, 49, 96, 50, 90, 75, 54, 28, 39,
+			14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 200, 0, 57, 3, 115, 4, 10, 10, 41, 12, 214, 13, 244, 26, 0, 97, 54, 90,
+			75, 54, 28, 39, 14, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200,
+			53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 14, 1, 6, 0, 1, 0, 200, 0, 68, 1, 46, 3, 69, 11, 54, 13,
+			160, 15, 244, 26, 48, 50, 11, 68, 41, 15, 11, 0, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 200, 0, 124, 1, 239, 2,
+			107, 10, 86, 12, 52, 16, 244, 26, 45, 96, 30, 79, 57, 26, 22, 15, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0,
+			197, 2, 187, 3, 240, 9, 163, 12, 23, 15, 244, 26, 67, 134, 49, 91, 83, 49, 38, 30, 15, 7, 187, 125, 137, 137, 150, 175, 187, 125,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 224, 0, 30, 3, 60, 5, 1, 9, 112, 13, 119, 14, 244, 26, 70, 94, 49, 106, 68, 57, 38, 0, 15, 7, 187, 125, 137, 137,
+			150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 200, 0, 190, 1, 106, 8, 33, 10, 134, 12, 93, 14, 244, 26, 40, 58, 27, 69, 54, 46, 34, 31, 15, 7,
+			187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 200, 0, 190, 1, 106, 8, 33, 10, 134, 12, 93, 14, 244, 26, 0, 23, 17, 44, 34, 29,
+			22, 19, 7, 4, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 38, 1, 6, 0, 1, 0, 200, 0, 126, 1, 12, 3, 253, 9, 107, 12, 48, 14,
+			244, 26, 46, 107, 24, 88, 72, 40, 40, 40, 16, 8, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 168, 0, 215, 1, 238, 3, 112, 9,
+			161, 12, 217, 14, 244, 26, 50, 145, 48, 100, 100, 44, 40, 44, 16, 8, 187, 125, 175, 137, 150, 175, 187, 125, 175, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 200, 0, 203, 1,
+			170, 6, 140, 8, 3, 12, 148, 13, 244, 26, 62, 128, 45, 98, 60, 91, 68, 38, 15, 9, 187, 125, 137, 137, 150, 175, 187, 125, 137, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0,
+			200, 0, 176, 1, 88, 8, 132, 9, 72, 12, 130, 14, 244, 26, 60, 81, 32, 75, 68, 57, 57, 32, 14, 7, 187, 125, 137, 137, 150, 175,
+			187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250,
+			23, 8, 1, 0, 176, 0, 88, 1, 180, 8, 228, 10, 161, 12, 16, 15, 244, 26, 76, 85, 12, 92, 64, 60, 56, 28, 16, 8, 187, 125,
+			137, 137, 150, 175, 187, 125, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220,
+			52, 182, 64, 250, 23, 8, 1, 0, 152, 0, 72, 1, 232, 8, 160, 10, 92, 13, 10, 15, 32, 28, 0, 46, 26, 66, 44, 44, 37, 29,
+			11, 7, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 240, 0, 6, 0, 1, 0, 142, 0, 62, 1, 138, 2, 166, 9, 38, 12, 203, 14, 24, 27,
+			40, 35, 7, 66, 37, 18, 19, 14, 8, 4, 148, 126, 80, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 142, 0, 62, 1, 138, 2, 166, 9, 38, 12,
+			203, 14, 24, 27, 40, 39, 8, 69, 39, 18, 20, 15, 8, 4, 148, 126, 80, 120, 120, 120, 75, 90, 90, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 147, 0, 85, 1, 159, 2,
+			185, 9, 25, 12, 193, 14, 37, 27, 40, 38, 10, 68, 43, 21, 22, 20, 9, 4, 151, 127, 85, 120, 120, 120, 75, 90, 90, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 192, 0,
+			40, 2, 92, 3, 100, 10, 164, 11, 96, 14, 159, 27, 70, 99, 31, 74, 81, 45, 43, 25, 16, 6, 172, 142, 135, 120, 120, 120, 167, 135,
+			135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 50, 81, 30, 71, 86, 42, 41, 23, 15, 6, 173, 142, 135, 120,
+			120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 1, 0, 184, 0, 72, 2, 172, 3, 20, 10, 164, 11, 53, 14, 160, 27, 0, 46, 23, 54, 64, 32, 30, 18, 11, 4,
+			173, 142, 135, 120, 120, 120, 182, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			165, 36, 0, 0, 0, 250, 0, 0, 205, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 45, 27,
+			15, 48, 33, 28, 30, 28, 7, 10, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 24, 1, 184, 6, 36, 9, 228, 12, 96, 14,
+			100, 25, 40, 38, 18, 58, 39, 33, 36, 33, 9, 12, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 142, 0, 83, 1, 156, 6, 74, 9,
+			252, 12, 124, 14, 151, 25, 80, 53, 24, 69, 50, 41, 43, 38, 11, 13, 169, 98, 137, 122, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 232, 0, 104, 3,
+			160, 5, 160, 10, 216, 13, 120, 15, 102, 27, 40, 84, 44, 78, 82, 54, 44, 30, 14, 5, 255, 170, 163, 145, 120, 120, 255, 174, 173, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0,
+			232, 0, 104, 3, 160, 5, 160, 10, 216, 13, 120, 15, 102, 27, 0, 45, 32, 57, 60, 40, 32, 22, 10, 4, 255, 170, 163, 145, 120, 120,
+			255, 174, 173, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250,
+			23, 8, 205, 0, 5, 0, 1, 0, 147, 0, 22, 1, 238, 7, 186, 9, 17, 13, 141, 14, 81, 26, 45, 38, 10, 60, 51, 47, 50, 28,
+			12, 7, 167, 101, 123, 120, 120, 120, 167, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168,
+			0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 16, 1, 28, 7, 232, 8, 228, 12, 96, 14, 100, 25, 30, 40, 18, 58,
+			39, 36, 36, 33, 9, 12, 167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 147, 0, 54, 1, 186, 6, 58, 9, 241, 12, 113, 14, 189, 25,
+			80, 54, 23, 68, 49, 43, 44, 39, 11, 13, 168, 94, 137, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 3, 1, 17, 2, 200, 6, 216, 9, 80, 13,
+			239, 14, 63, 28, 50, 61, 34, 68, 64, 62, 50, 38, 12, 9, 228, 124, 154, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 31, 1, 72, 2, 204, 6,
+			0, 10, 104, 13, 15, 15, 224, 28, 0, 35, 28, 51, 50, 49, 38, 28, 9, 6, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 5, 0,
+			1, 0, 132, 0, 16, 1, 8, 7, 232, 8, 228, 12, 96, 14, 100, 25, 40, 39, 18, 57, 39, 36, 36, 33, 9, 12, 167, 90, 135, 120,
+			120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 132, 0, 16, 1, 8, 7, 232, 8, 228, 12, 96, 14, 100, 25, 65, 61, 22, 72, 49, 45, 45, 41, 11, 15,
+			167, 90, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 52, 1, 219, 6, 6, 9, 218, 12, 241, 14, 225, 25, 50, 59, 24, 70, 54, 45,
+			46, 39, 13, 13, 167, 105, 135, 120, 120, 120, 167, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 160, 1, 84, 6, 96, 9, 188, 12, 164, 16, 88, 27, 40, 33,
+			23, 48, 51, 34, 37, 25, 15, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 116, 0, 224, 1, 44, 6, 116, 9, 12, 13, 224, 16,
+			88, 27, 0, 30, 24, 48, 50, 34, 34, 21, 13, 5, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 220, 0, 4, 0, 1, 0, 153, 0, 208, 1,
+			52, 3, 255, 9, 194, 11, 151, 14, 244, 26, 50, 36, 18, 47, 51, 30, 28, 15, 11, 5, 165, 126, 145, 120, 120, 120, 165, 115, 130, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0,
+			153, 0, 208, 1, 52, 3, 255, 9, 194, 11, 151, 14, 244, 26, 90, 94, 30, 77, 82, 49, 45, 25, 18, 8, 165, 126, 145, 120, 120, 120,
+			165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250,
+			0, 0, 1, 0, 153, 0, 198, 1, 44, 3, 255, 9, 194, 11, 151, 14, 244, 26, 80, 82, 28, 71, 76, 45, 42, 23, 17, 7, 165, 126,
+			145, 120, 120, 120, 165, 115, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0,
+			0, 0, 1, 250, 0, 0, 1, 0, 184, 0, 184, 1, 52, 3, 40, 10, 244, 11, 141, 14, 128, 26, 0, 55, 27, 57, 58, 38, 30, 24,
+			17, 8, 162, 135, 150, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0,
+			0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 59, 2, 47, 0, 8, 6, 5, 4, 199, 131, 133, 214, 44, 105, 96, 34, 233, 229, 248, 253,
+			2, 24, 34, 7, 223, 227, 0, 36, 38, 3, 228, 232, 220, 203, 209, 208, 225, 2, 22, 15, 252, 223, 199, 197, 227, 232, 242, 233, 212, 232,
+			248, 255, 9, 28, 14, 253, 5, 253, 244, 16, 43, 37, 2, 240, 254, 0, 1, 7, 10, 24, 19, 25, 245, 243, 4, 24, 7, 246, 7, 252,
+			6, 11, 5, 232, 16, 33, 2, 12, 23, 233, 219, 16, 40, 4, 249, 28, 17, 247, 0, 33, 28, 6, 0, 5, 31, 21, 19, 2, 242, 24,
+			28, 0, 236, 241, 246, 243, 5, 242, 235, 253, 33, 16, 236, 238, 241, 5, 19, 10, 0, 8, 7, 253, 253, 12, 14, 10, 3, 13, 10, 0,
+			248, 255, 11, 10, 11, 1, 246, 250, 8, 16, 0, 4, 254, 249, 252, 247, 250, 243, 251, 242, 245, 19, 18, 238, 202, 214, 222, 225, 236, 246,
+			248, 233, 250, 255, 235, 235, 251, 3, 12, 20, 15, 255, 3, 9, 23, 24, 16, 7, 0, 12, 28, 19, 9, 17, 27, 22, 16, 0, 251, 2,
+			8, 3, 5, 8, 10, 251, 239, 245, 1, 0, 231, 226, 222, 236, 243, 252, 248, 245, 246, 243, 240, 240, 244, 238, 235, 241, 253, 3, 10, 14,
+			5, 0, 251, 254, 1, 1, 12, 12, 3, 0, 10, 22, 38, 42, 27, 14, 13, 13, 8, 6, 254, 245, 252, 5, 6, 0, 250, 242, 242, 237,
+			238, 238, 242, 242, 247, 249, 0, 10, 16, 14, 6, 10, 15, 11, 17, 20, 19, 21, 19, 14, 4, 8, 13, 12, 9, 12, 14, 8, 254, 253,
+			255, 252, 249, 253, 8, 11, 10, 1, 1, 4, 4, 3, 251, 248, 247, 247, 249, 250, 246, 248, 249, 247, 250, 243, 239, 236, 231, 231, 246, 254,
+			245, 240, 245, 254, 0, 0, 255, 250, 245, 242, 242, 245, 250, 254, 252, 1, 4, 0, 0, 0, 255, 251, 248, 253, 3, 0, 255, 3, 7, 15,
+			23, 22, 15, 6, 6, 11, 9, 9, 14, 14, 14, 14, 13, 7, 1, 3, 7, 4, 255, 250, 247, 248, 250, 1, 3, 2, 255, 252, 249, 249,
+			247, 244, 250, 253, 254, 251, 254, 252, 249, 253, 0, 2, 3, 4, 3, 0, 0, 3, 3, 3, 3, 3, 1, 1, 2, 2, 2, 4, 8, 8,
+			6, 3, 0, 3, 5, 4, 1, 0, 1, 3, 1, 0, 5, 7, 6, 7, 8, 8, 5, 2, 0, 1, 4, 9, 9, 7, 4, 2, 6, 11,
+			13, 11, 8, 4, 0, 0, 253, 251, 253, 1, 6, 7, 5, 7, 1, 253, 251, 251, 251, 250, 251, 254, 0, 255, 0, 2, 2, 0, 255, 254,
+			253, 253, 255, 0, 255, 0, 2, 1, 0, 254, 253, 254, 0, 255, 254, 253, 252, 252, 253, 255, 254, 253, 0, 0, 253, 250, 250, 250, 252, 255,
+			0, 1, 0, 254, 254, 254, 255, 255, 1, 0, 255, 254, 254, 255, 0, 1, 2, 2, 1, 255, 251, 251, 252, 251, 254, 252, 251, 250, 251, 253,
+			253, 253, 252, 251, 250, 251, 249, 247, 245, 247, 250, 252, 251, 248, 244, 245, 247, 249, 250, 252, 250, 246, 244, 242, 243, 244, 247, 250, 251, 249,
+			249, 245, 242, 244, 246, 249, 249, 248, 245, 245, 244, 245, 249, 254, 0, 0, 174, 0, 4, 0, 1, 0, 136, 0, 192, 1, 0, 5, 96, 9,
+			100, 12, 156, 14, 12, 27, 44, 39, 23, 57, 56, 39, 34, 26, 14, 5, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 136, 0, 192, 1,
+			0, 5, 96, 9, 100, 12, 156, 14, 12, 27, 80, 58, 28, 69, 68, 47, 41, 31, 17, 6, 165, 141, 141, 120, 120, 120, 162, 127, 165, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			136, 0, 192, 1, 0, 5, 96, 9, 100, 12, 156, 14, 12, 27, 50, 52, 26, 65, 64, 45, 39, 29, 16, 6, 165, 141, 141, 120, 120, 120,
+			162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 136, 0, 192, 1, 0, 5, 96, 9, 100, 12, 156, 14, 12, 27, 0, 35, 22, 54, 53, 37, 32, 24, 14, 5, 165, 141,
+			141, 120, 120, 120, 162, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 160, 0, 4, 0, 1, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27, 50, 42, 31, 57,
+			60, 33, 36, 28, 16, 6, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12, 236, 14, 99, 27,
+			60, 75, 42, 76, 80, 44, 49, 38, 22, 8, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 142, 0, 52, 2, 136, 4, 160, 10, 188, 12,
+			236, 14, 99, 27, 50, 57, 36, 66, 69, 38, 42, 33, 19, 7, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 142, 0, 52, 2, 136, 4,
+			160, 10, 188, 12, 236, 14, 99, 27, 0, 35, 28, 52, 55, 30, 33, 26, 15, 5, 168, 147, 130, 120, 120, 120, 197, 135, 130, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 160, 0, 4, 0,
+			1, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 50, 43, 23, 52, 55, 34, 29, 20, 14, 4, 163, 130, 148, 120,
+			120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 70, 85, 33, 72, 77, 48, 41, 28, 20, 6,
+			163, 130, 148, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 40, 71, 30, 66, 71, 44,
+			38, 25, 18, 6, 163, 130, 148, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 169, 0, 193, 1, 89, 3, 196, 9, 244, 11, 146, 14, 186, 26, 0, 43,
+			23, 52, 55, 34, 29, 20, 14, 4, 163, 130, 148, 120, 120, 120, 162, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 165, 0, 4, 0, 1, 0, 180, 0, 144, 1, 216, 4, 152, 8,
+			148, 12, 226, 14, 144, 26, 45, 36, 24, 51, 51, 36, 36, 30, 15, 7, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 180, 0, 144, 1,
+			216, 4, 152, 8, 148, 12, 226, 14, 144, 26, 80, 65, 32, 68, 68, 48, 48, 40, 20, 10, 170, 125, 145, 120, 120, 120, 162, 125, 145, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			180, 0, 144, 1, 216, 4, 152, 8, 148, 12, 226, 14, 144, 26, 40, 58, 30, 64, 64, 45, 45, 38, 19, 9, 170, 125, 145, 120, 120, 120,
+			162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 180, 0, 144, 1, 216, 4, 152, 8, 148, 12, 226, 14, 144, 26, 0, 31, 22, 47, 47, 33, 33, 28, 14, 7, 170, 125,
+			145, 120, 120, 120, 162, 125, 145, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 185, 0, 4, 0, 1, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27, 45, 59, 31, 64,
+			78, 41, 48, 37, 19, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210,
+			117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12, 132, 14, 96, 27,
+			80, 73, 35, 72, 86, 45, 53, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 240, 1, 32, 5, 104, 9, 180, 12,
+			132, 14, 96, 27, 60, 59, 31, 64, 78, 41, 48, 37, 19, 7, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 116, 0, 240, 1, 32, 5,
+			104, 9, 180, 12, 132, 14, 96, 27, 0, 73, 35, 72, 86, 45, 53, 41, 21, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 170, 0, 4, 0,
+			1, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 50, 33, 27, 49, 54, 44, 34, 25, 9, 5, 219, 138, 158, 120,
+			120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 60, 83, 43, 78, 87, 70, 54, 39, 15, 8,
+			219, 138, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 60, 74, 40, 74, 82, 67,
+			51, 37, 14, 8, 219, 138, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 246, 0, 80, 2, 164, 6, 201, 9, 70, 13, 255, 14, 73, 28, 0, 33,
+			27, 49, 54, 44, 34, 25, 9, 5, 219, 138, 158, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 190, 0, 5, 0, 1, 0, 132, 0, 24, 1, 184, 6, 36, 9,
+			228, 12, 96, 14, 100, 25, 40, 23, 14, 45, 31, 26, 28, 26, 7, 9, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 132, 0, 24, 1,
+			184, 6, 36, 9, 228, 12, 96, 14, 100, 25, 30, 48, 20, 64, 44, 37, 40, 37, 10, 13, 160, 90, 135, 120, 120, 120, 160, 135, 135, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			166, 0, 136, 1, 18, 7, 138, 9, 228, 12, 56, 14, 242, 26, 40, 68, 30, 76, 60, 65, 57, 45, 13, 13, 160, 97, 131, 120, 120, 120,
+			160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 6, 1, 33, 2, 26, 7, 232, 9, 77, 13, 228, 14, 125, 28, 80, 71, 37, 72, 73, 69, 54, 41, 13, 9, 227, 125,
+			153, 120, 120, 120, 160, 135, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 1, 0, 31, 1, 72, 2, 28, 7, 0, 10, 104, 13, 15, 15, 224, 28, 0, 32, 26, 48, 51, 47, 36, 27,
+			9, 5, 244, 132, 159, 120, 120, 120, 135, 180, 150, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 125, 0, 5, 0, 13, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14, 220, 15, 32, 29,
+			0, 19, 7, 46, 7, 28, 21, 10, 7, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 13, 0, 76, 0, 224, 0, 8, 7, 4, 11, 156, 14,
+			220, 15, 32, 29, 50, 19, 7, 46, 7, 28, 21, 10, 7, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 76, 0, 224, 0, 8, 7,
+			4, 11, 156, 14, 220, 15, 32, 29, 45, 17, 6, 44, 10, 27, 20, 10, 6, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 76, 0,
+			224, 0, 8, 7, 4, 11, 156, 14, 220, 15, 32, 29, 30, 13, 6, 39, 9, 24, 18, 9, 6, 3, 150, 115, 97, 120, 120, 120, 90, 130,
+			97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			1, 0, 76, 0, 224, 0, 136, 9, 4, 11, 156, 14, 220, 15, 32, 29, 0, 15, 6, 41, 9, 28, 22, 12, 6, 3, 150, 115, 97, 120,
+			120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182,
+			64, 250, 23, 8, 105, 0, 4, 0, 1, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 35, 19, 7, 46, 10, 28,
+			18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182,
+			200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 13, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15, 32, 29, 40, 19,
+			7, 46, 10, 28, 18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 76, 0, 224, 0, 156, 9, 4, 11, 156, 14, 220, 15,
+			32, 29, 30, 19, 7, 46, 10, 28, 18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 76, 0, 224, 0, 156, 9, 4, 11,
+			156, 14, 220, 15, 32, 29, 0, 19, 7, 46, 10, 28, 18, 10, 5, 3, 150, 115, 97, 120, 120, 120, 90, 130, 97, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 65, 0, 3, 0, 5, 0,
+			140, 0, 224, 1, 178, 3, 84, 11, 152, 13, 104, 16, 0, 27, 35, 16, 16, 43, 23, 15, 10, 13, 7, 0, 160, 150, 120, 120, 120, 120,
+			145, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 5, 0, 140, 0, 224, 1, 178, 3, 84, 11, 152, 13, 104, 16, 0, 27, 30, 20, 18, 48, 25, 17, 12, 14, 8, 0, 160, 150,
+			120, 120, 120, 120, 145, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 140, 0, 224, 1, 178, 3, 84, 11, 152, 13, 104, 16, 0, 27, 0, 20, 18, 48, 25, 17, 12, 14,
+			8, 0, 160, 150, 120, 120, 120, 120, 145, 60, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 35, 0, 3, 0, 5, 0, 224, 0, 248, 2, 140, 5, 60, 10, 20, 13, 175, 14, 117, 27,
+			35, 24, 21, 43, 36, 31, 26, 21, 9, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 35, 70, 130, 50, 0, 0, 0, 0, 45, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 5, 0, 224, 0, 248, 2, 140, 5, 40, 10, 20, 13,
+			175, 14, 117, 27, 40, 22, 21, 41, 35, 30, 25, 21, 8, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 35, 70, 130, 50, 0, 0,
+			0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 208, 0, 224, 2, 100, 5,
+			236, 9, 1, 13, 155, 14, 105, 27, 0, 22, 21, 42, 30, 22, 20, 20, 9, 2, 192, 158, 201, 120, 120, 120, 249, 174, 255, 44, 35, 70,
+			130, 52, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 75, 0, 4, 0,
+			5, 0, 224, 0, 216, 2, 60, 5, 232, 8, 20, 13, 175, 14, 117, 27, 60, 15, 19, 32, 27, 23, 19, 16, 6, 1, 196, 162, 200, 120,
+			120, 120, 249, 174, 255, 44, 45, 70, 130, 46, 0, 0, 0, 0, 45, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 5, 0, 224, 0, 216, 2, 60, 5, 232, 8, 20, 13, 175, 14, 117, 27, 0, 22, 20, 40, 34, 29, 24, 20, 8, 2,
+			196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 50, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 13, 0, 224, 0, 216, 2, 60, 5, 232, 8, 20, 13, 175, 14, 117, 27, 15, 21, 20, 40, 33, 28,
+			24, 20, 8, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 50, 0, 0, 0, 0, 45, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 224, 0, 216, 2, 80, 5, 232, 8, 20, 13, 175, 14, 117, 27, 0, 23,
+			21, 41, 34, 30, 25, 20, 8, 2, 196, 162, 200, 120, 120, 120, 249, 174, 255, 44, 45, 70, 130, 50, 0, 0, 0, 0, 45, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 42, 8, 58, 0, 5, 3, 2, 1, 1, 1, 1, 1, 0, 255,
+			0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 0, 0, 0, 251, 205, 197, 210, 213, 253, 5, 20, 56, 54, 53, 43, 36, 36, 15,
+			234, 214, 204, 220, 221, 221, 228, 253, 22, 35, 32, 35, 44, 42, 30, 4, 246, 242, 237, 227, 216, 222, 237, 251, 4, 5, 19, 30, 31, 28,
+			16, 5, 230, 203, 181, 162, 174, 184, 205, 237, 4, 33, 58, 75, 86, 79, 61, 41, 17, 252, 226, 207, 202, 209, 219, 233, 248, 11, 33, 44,
+			49, 48, 42, 33, 17, 254, 239, 229, 222, 220, 218, 226, 240, 254, 7, 18, 24, 30, 31, 23, 17, 7, 0, 248, 238, 238, 240, 247, 253, 255,
+			241, 232, 232, 226, 226, 224, 228, 245, 0, 9, 18, 24, 7, 249, 237, 226, 230, 228, 232, 243, 253, 10, 21, 31, 48, 51, 41, 28, 16, 9,
+			255, 237, 226, 225, 227, 233, 234, 246, 8, 20, 28, 27, 22, 25, 16, 3, 247, 236, 232, 232, 225, 224, 235, 245, 254, 7, 12, 22, 27, 22,
+			14, 10, 3, 1, 249, 243, 242, 249, 253, 0, 3, 12, 20, 23, 20, 16, 13, 9, 1, 251, 244, 242, 242, 245, 246, 250, 0, 5, 9, 9,
+			8, 11, 9, 0, 253, 246, 246, 246, 245, 245, 250, 0, 3, 7, 8, 12, 8, 7, 4, 253, 253, 245, 243, 244, 243, 248, 252, 255, 4, 5,
+			8, 8, 10, 7, 4, 5, 0, 252, 253, 251, 255, 5, 1, 5, 10, 3, 8, 8, 2, 5, 3, 1, 0, 253, 254, 0, 1, 4, 1, 4,
+			5, 5, 3, 255, 254, 0, 253, 250, 252, 252, 255, 2, 254, 3, 9, 8, 11, 5, 6, 13, 12, 9, 4, 7, 7, 6, 2, 0, 1, 7,
+			6, 0, 0, 2, 6, 2, 0, 1, 4, 4, 2, 252, 251, 227, 222, 204, 199, 209, 209, 234, 246, 1, 22, 27, 40, 47, 38, 30, 22, 9,
+			1, 245, 236, 235, 243, 245, 252, 0, 8, 20, 22, 26, 25, 25, 16, 4, 252, 245, 243, 241, 237, 240, 247, 255, 2, 3, 11, 15, 19, 18,
+			15, 13, 13, 12, 9, 11, 8, 251, 245, 246, 255, 7, 18, 35, 57, 72, 47, 19, 252, 228, 213, 173, 156, 173, 186, 192, 199, 221, 8, 59,
+			62, 52, 66, 62, 55, 28, 246, 242, 248, 241, 222, 226, 243, 18, 37, 35, 47, 64, 67, 52, 21, 0, 248, 239, 220, 207, 210, 225, 245, 251,
+			3, 20, 40, 49, 40, 24, 15, 231, 219, 215, 215, 247, 15, 30, 48, 55, 46, 52, 47, 24, 253, 197, 162, 144, 132, 140, 150, 182, 228, 8,
+			22, 46, 60, 75, 66, 41, 11, 254, 230, 211, 198, 198, 225, 249, 8, 26, 44, 65, 67, 55, 38, 27, 13, 245, 220, 204, 200, 211, 218, 228,
+			244, 7, 17, 24, 17, 13, 10, 253, 242, 225, 213, 214, 216, 219, 234, 248, 12, 33, 38, 44, 42, 42, 36, 28, 4, 254, 248, 244, 243, 242,
+			252, 6, 25, 25, 30, 31, 31, 28, 18, 5, 254, 0, 255, 249, 250, 248, 5, 252, 226, 226, 225, 237, 242, 243, 249, 8, 13, 2, 254, 1,
+			4, 250, 233, 220, 230, 237, 235, 232, 243, 7, 21, 19, 13, 19, 30, 22, 13, 9, 6, 11, 2, 245, 249, 2, 6, 9, 4, 4, 14, 13,
+			7, 0, 255, 252, 247, 242, 238, 245, 249, 245, 248, 252, 0, 6, 5, 253, 252, 250, 249, 249, 245, 248, 0, 254, 1, 2, 8, 15, 14, 11,
+			6, 9, 4, 6, 255, 255, 0, 254, 252, 255, 1, 8, 5, 4, 1, 8, 10, 3, 0, 252, 248, 248, 241, 242, 247, 246, 249, 252, 0, 5,
+			11, 3, 0, 2, 255, 0, 247, 250, 246, 250, 254, 252, 2, 6, 5, 9, 255, 252, 248, 238, 234, 231, 225, 229, 237, 239, 254, 6, 11, 27,
+			29, 23, 23, 13, 5, 0, 246, 238, 241, 246, 245, 252, 3, 10, 21, 17, 23, 14, 22, 5, 250, 237, 233, 230, 236, 241, 254, 8, 19, 19,
+			21, 16, 15, 9, 4, 243, 243, 234, 235, 234, 240, 252, 10, 24, 20, 23, 22, 12, 18, 5, 255, 249, 249, 242, 241, 247, 243, 255, 5, 0,
+			11, 10, 10, 12, 6, 0, 4, 5, 252, 0, 251, 248, 251, 251, 250, 0, 2, 9, 10, 9, 4, 6, 3, 255, 252, 247, 247, 252, 250, 2,
+			5, 9, 17, 10, 18, 12, 15, 5, 12, 0, 1, 0, 0, 0, 1, 255, 3, 6, 0, 252, 1, 1, 5, 2, 0, 255, 2, 250, 252, 252,
+			252, 0, 255, 253, 2, 7, 7, 7, 7, 0, 254, 252, 244, 242, 244, 245, 248, 255, 2, 14, 12, 13, 12, 3, 2, 252, 240, 236, 239, 233,
+			242, 246, 252, 4, 8, 12, 21, 20, 15, 16, 14, 7, 4, 254, 247, 245, 245, 246, 0, 7, 12, 25, 29, 28, 31, 21, 10, 1, 242, 238,
+			238, 238, 243, 254, 3, 13, 14, 20, 19, 19, 11, 0, 246, 239, 243, 244, 247, 247, 250, 0, 1, 7, 11, 21, 22, 19, 5, 0, 254, 248,
+			248, 244, 250, 5, 8, 12, 7, 7, 16, 15, 2, 250, 246, 246, 244, 238, 242, 247, 0, 0, 254, 0, 8, 7, 10, 2, 0, 3, 255, 250,
+			242, 247, 247, 255, 254, 0, 6, 13, 17, 18, 16, 9, 4, 252, 247, 240, 236, 234, 237, 245, 246, 3, 9, 11, 12, 7, 6, 1, 1, 243,
+			242, 244, 240, 249, 249, 255, 5, 4, 3, 7, 12, 13, 9, 2, 251, 244, 231, 225, 225, 228, 236, 243, 252, 0, 10, 15, 11, 14, 12, 14,
+			4, 248, 236, 236, 237, 240, 244, 251, 7, 20, 21, 23, 30, 27, 25, 16, 6, 250, 247, 236, 237, 242, 251, 4, 8, 8, 9, 16, 15, 17,
+			18, 7, 6, 253, 240, 236, 236, 236, 244, 250, 250, 7, 14, 23, 32, 30, 25, 11, 0, 248, 248, 248, 245, 251, 254, 6, 9, 16, 13, 7,
+			10, 5, 7, 1, 0, 252, 249, 245, 240, 244, 244, 246, 244, 245, 255, 0, 255, 252, 248, 253, 247, 242, 244, 242, 251, 252, 0, 5, 9, 5,
+			2, 4, 4, 9, 8, 4, 1, 0, 248, 246, 241, 241, 243, 247, 253, 5, 8, 9, 10, 11, 11, 4, 254, 252, 250, 248, 243, 246, 247, 248,
+			255, 0, 6, 14, 13, 14, 12, 10, 0, 254, 244, 239, 246, 244, 255, 4, 11, 14, 15, 9, 8, 11, 5, 3, 252, 254, 249, 249, 248, 255,
+			3, 8, 10, 7, 12, 14, 10, 13, 2, 255, 251, 254, 0, 2, 0, 0, 2, 1, 6, 6, 9, 8, 3, 254, 245, 251, 253, 252, 249, 244,
+			249, 253, 1, 2, 14, 21, 20, 12, 7, 6, 6, 1, 245, 247, 244, 254, 254, 253, 10, 16, 20, 19, 17, 14, 14, 0, 245, 241, 247, 244,
+			242, 243, 249, 6, 13, 17, 14, 14, 15, 5, 255, 250, 244, 243, 237, 227, 234, 246, 249, 255, 3, 5, 8, 9, 8, 8, 3, 4, 252, 248,
+			240, 240, 247, 0, 7, 5, 13, 15, 15, 12, 6, 7, 8, 12, 11, 16, 16, 16, 17, 12, 8, 9, 11, 9, 5, 7, 1, 6, 6, 0,
+			11, 9, 11, 11, 5, 0, 251, 254, 253, 254, 1, 1, 2, 0, 251, 244, 246, 248, 254, 2, 6, 10, 10, 1, 247, 240, 239, 239, 238, 236,
+			246, 251, 1, 2, 17, 20, 23, 24, 12, 7, 4, 0, 251, 255, 250, 251, 0, 249, 255, 4, 5, 12, 19, 17, 13, 10, 3, 2, 2, 250,
+			243, 238, 228, 230, 230, 234, 237, 244, 247, 254, 4, 9, 14, 16, 11, 6, 3, 0, 254, 2, 1, 5, 9, 12, 21, 21, 31, 31, 30, 21,
+			6, 1, 255, 0, 0, 255, 0, 4, 5, 9, 8, 10, 11, 11, 12, 4, 3, 1, 254, 248, 247, 245, 244, 248, 241, 239, 240, 247, 249, 254,
+			0, 0, 4, 0, 254, 250, 249, 252, 247, 249, 247, 246, 246, 249, 252, 251, 254, 251, 243, 242, 238, 241, 246, 253, 1, 10, 17, 19, 22, 19,
+			19, 13, 8, 253, 244, 240, 236, 237, 242, 246, 253, 2, 12, 14, 16, 15, 13, 7, 255, 242, 229, 221, 210, 213, 221, 233, 250, 3, 15, 19,
+			26, 24, 21, 13, 5, 2, 251, 244, 240, 241, 247, 255, 1, 8, 15, 17, 17, 15, 13, 12, 11, 4, 251, 245, 246, 245, 249, 248, 254, 8,
+			14, 17, 16, 18, 14, 9, 250, 245, 238, 239, 234, 230, 233, 234, 246, 250, 3, 8, 13, 15, 10, 7, 255, 248, 242, 235, 235, 233, 235, 233,
+			237, 242, 250, 4, 6, 8, 8, 8, 6, 8, 8, 253, 254, 248, 242, 246, 246, 250, 250, 251, 253, 255, 6, 4, 255, 251, 249, 253, 255, 252,
+			0, 6, 10, 12, 12, 12, 10, 6, 0, 0, 3, 6, 8, 8, 10, 17, 20, 17, 17, 19, 22, 24, 21, 19, 20, 22, 17, 11, 5, 252,
+			247, 239, 231, 233, 237, 241, 244, 248, 255, 2, 6, 2, 0, 252, 248, 242, 234, 232, 231, 231, 230, 231, 236, 241, 246, 249, 251, 253, 0, 0,
+			255, 252, 252, 0, 255, 254, 254, 254, 252, 249, 247, 247, 248, 250, 249, 250, 0, 1, 2, 1, 251, 250, 253, 255, 0, 0, 0, 0, 2, 2,
+			1, 4, 1, 254, 252, 252, 252, 254, 254, 252, 252, 255, 0, 4, 7, 6, 8, 6, 9, 12, 15, 13, 14, 8, 6, 4, 2, 2, 4, 5,
+			4, 1, 1, 255, 0, 2, 8, 13, 19, 22, 24, 24, 21, 18, 13, 5, 0, 255, 255, 254, 253, 251, 253, 0, 3, 6, 9, 14, 13, 11,
+			7, 2, 0, 252, 251, 0, 4, 9, 8, 8, 5, 8, 10, 11, 12, 10, 7, 1, 252, 246, 244, 245, 244, 246, 248, 254, 1, 3, 8, 10,
+			7, 4, 0, 252, 251, 251, 251, 251, 253, 253, 0, 4, 8, 11, 9, 8, 5, 4, 4, 4, 6, 9, 11, 11, 11, 9, 7, 5, 2, 254,
+			250, 246, 248, 252, 2, 2, 4, 3, 4, 5, 2, 0, 251, 247, 239, 238, 237, 235, 237, 239, 244, 252, 5, 14, 20, 25, 27, 28, 23, 15,
+			5, 0, 251, 251, 253, 252, 252, 252, 253, 2, 5, 12, 16, 19, 22, 20, 16, 12, 7, 2, 254, 252, 248, 247, 245, 244, 248, 250, 254, 254,
+			255, 254, 253, 255, 252, 249, 243, 244, 249, 253, 1, 2, 1, 252, 248, 243, 245, 251, 0, 5, 4, 5, 3, 0, 254, 250, 250, 249, 246, 245,
+			246, 245, 248, 251, 0, 0, 1, 0, 0, 0, 253, 253, 254, 254, 0, 3, 4, 4, 5, 7, 8, 9, 11, 15, 13, 9, 4, 255, 250, 247,
+			246, 247, 249, 0, 8, 16, 20, 22, 22, 19, 15, 8, 4, 254, 249, 244, 239, 240, 241, 242, 242, 243, 244, 250, 3, 11, 18, 23, 24, 24,
+			21, 18, 12, 7, 0, 250, 247, 241, 239, 239, 239, 242, 250, 2, 10, 15, 17, 18, 17, 17, 13, 6, 255, 245, 238, 232, 231, 232, 234, 236,
+			240, 246, 252, 4, 9, 13, 15, 13, 11, 7, 2, 254, 251, 248, 245, 244, 244, 246, 248, 250, 255, 2, 4, 5, 4, 4, 3, 3, 0, 251,
+			245, 241, 235, 229, 227, 227, 233, 241, 253, 4, 11, 14, 13, 13, 10, 10, 10, 7, 3, 254, 251, 247, 247, 244, 245, 249, 254, 1, 5, 10,
+			16, 21, 23, 24, 22, 18, 14, 8, 3, 255, 251, 250, 247, 247, 247, 248, 247, 247, 247, 245, 247, 246, 249, 252, 251, 251, 248, 248, 248, 249,
+			250, 250, 250, 251, 254, 1, 6, 11, 14, 12, 8, 5, 0, 0, 253, 249, 245, 241, 238, 236, 237, 242, 248, 255, 4, 9, 12, 16, 15, 12,
+			7, 2, 254, 253, 252, 251, 251, 250, 249, 249, 250, 252, 255, 3, 6, 5, 6, 3, 3, 3, 3, 3, 0, 253, 248, 248, 250, 252, 254, 254,
+			254, 255, 0, 3, 3, 4, 3, 2, 3, 3, 3, 4, 3, 5, 6, 8, 10, 10, 11, 11, 11, 10, 9, 8, 7, 5, 3, 4, 4, 4,
+			2, 0, 254, 251, 248, 246, 247, 247, 249, 252, 0, 0, 0, 7, 15, 22, 29, 36, 43, 50, 57, 63, 70, 76, 83, 89, 95, 101, 107, 112,
+			118, 123, 129, 134, 139, 144, 149, 153, 158, 162, 167, 171, 175, 179, 183, 187, 190, 194, 197, 201, 204, 207, 210, 213, 215, 218, 220, 223, 225, 227,
+			229, 231, 232, 234, 236, 237, 238, 239, 240, 241, 242, 243, 243, 244, 244, 244, 244, 244, 244, 244, 243, 243, 242, 241, 240, 239, 238, 237, 236, 234,
+			232, 231, 229, 227, 225, 223, 220, 218, 215, 213, 210, 207, 204, 201, 197, 194, 190, 187, 183, 179, 175, 171, 167, 162, 158, 153, 149, 144, 139, 134,
+			129, 123, 118, 112, 107, 101, 95, 89, 83, 76, 70, 63, 57, 50, 43, 36, 29, 22, 15, 7, 6, 4, 18, 0, 2, 2, 3, 4, 1, 253,
+			253, 255, 255, 251, 250, 254, 0, 254, 247, 244, 246, 253, 4, 7, 5, 0, 251, 249, 249, 250, 253, 1, 6, 9, 6, 0, 252, 250, 251, 0,
+			7, 15, 21, 16, 5, 251, 2, 22, 57, 89, 49, 247, 211, 200, 229, 18, 45, 32, 1, 230, 221, 226, 236, 3, 21, 17, 0, 232, 213, 217,
+			238, 2, 9, 5, 251, 240, 235, 237, 243, 248, 3, 14, 7, 244, 237, 240, 243, 249, 4, 12, 13, 6, 1, 254, 239, 230, 244, 11, 32, 50,
+			105, 109, 22, 211, 165, 174, 230, 50, 98, 75, 8, 212, 223, 4, 11, 255, 210, 196, 14, 70, 52, 251, 226, 207, 227, 2, 8, 20, 24, 10,
+			245, 233, 6, 52, 44, 0, 210, 148, 137, 233, 50, 104, 109, 35, 224, 209, 210, 200, 225, 29, 101, 122, 52, 217, 138, 136, 248, 99, 123, 55,
+			219, 172, 180, 225, 25, 55, 39, 15, 5, 249, 234, 242, 15, 23, 12, 0, 228, 207, 215, 236, 8, 23, 12, 251, 233, 225, 225, 242, 245, 237,
+			0, 16, 5, 239, 232, 242, 0, 14, 15, 18, 30, 32, 30, 18, 3, 0, 5, 11, 19, 21, 14, 12, 4, 3, 22, 24, 7, 243, 245, 6,
+			11, 8, 3, 246, 246, 254, 0, 3, 253, 226, 218, 246, 7, 15, 28, 17, 251, 248, 250, 246, 243, 247, 255, 6, 7, 3, 251, 239, 236, 244,
+			11, 14, 6, 5, 3, 255, 249, 245, 242, 249, 7, 22, 19, 255, 237, 234, 243, 2, 13, 14, 252, 245, 247, 247, 5, 11, 0, 241, 242, 251,
+			6, 12, 7, 254, 246, 249, 0, 0, 254, 0, 2, 9, 9, 2, 251, 242, 245, 3, 15, 18, 8, 253, 246, 251, 0, 2, 6, 11, 14, 4,
+			252, 247, 254, 11, 14, 9, 0, 249, 0, 13, 11, 2, 251, 249, 255, 6, 14, 14, 5, 251, 0, 9, 6, 9, 9, 3, 5, 1, 244, 243,
+			251, 7, 23, 20, 0, 240, 235, 238, 0, 17, 14, 2, 250, 243, 244, 4, 14, 6, 252, 250, 255, 255, 255, 0, 252, 253, 5, 7, 248, 236,
+			238, 253, 8, 14, 11, 250, 241, 246, 251, 255, 9, 13, 6, 247, 243, 253, 253, 2, 5, 8, 8, 253, 245, 246, 2, 15, 17, 2, 248, 245,
+			251, 0, 2, 1, 0, 3, 0, 0, 252, 246, 254, 6, 11, 11, 7, 253, 247, 253, 4, 8, 7, 5, 1, 2, 3, 0, 252, 255, 4, 1,
+			0, 1, 3, 1, 252, 255, 0, 254, 2, 7, 5, 3, 255, 250, 250, 0, 8, 12, 5, 254, 249, 253, 1, 2, 3, 1, 252, 251, 2, 6,
+			1, 250, 250, 255, 0, 4, 5, 251, 253, 4, 2, 3, 4, 247, 239, 248, 5, 8, 3, 1, 252, 247, 0, 4, 251, 251, 2, 0, 255, 5,
+			2, 250, 251, 7, 12, 8, 3, 0, 251, 255, 7, 6, 252, 248, 255, 7, 13, 6, 254, 253, 255, 5, 8, 6, 3, 0, 0, 5, 6, 0,
+			0, 5, 8, 5, 1, 1, 0, 253, 253, 2, 5, 4, 1, 255, 253, 254, 0, 0, 0, 0, 254, 254, 254, 255, 0, 0, 254, 253, 252, 253,
+			0, 1, 0, 253, 247, 250, 0, 2, 4, 2, 253, 250, 249, 250, 1, 2, 255, 255, 255, 0, 1, 0, 255, 254, 254, 1, 4, 2, 0, 255,
+			254, 254, 254, 2, 7, 7, 0, 251, 248, 252, 4, 8, 9, 0, 249, 246, 249, 4, 8, 6, 1, 253, 254, 1, 6, 6, 2, 1, 4, 5,
+			2, 0, 2, 4, 5, 9, 7, 1, 254, 255, 0, 3, 5, 4, 3, 2, 2, 2, 1, 0, 0, 2, 6, 7, 3, 0, 255, 0, 3, 6,
+			3, 255, 253, 255, 3, 3, 0, 0, 0, 1, 2, 1, 0, 0, 0, 2, 3, 1, 255, 254, 0, 1, 1, 2, 0, 252, 251, 255, 1, 3,
+			3, 1, 253, 250, 253, 0, 2, 1, 0, 0, 255, 254, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 22, 21, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 254, 255, 255, 254, 253, 251, 249, 245, 238, 230, 224, 229, 251, 22, 38, 34, 17,
+			252, 234, 229, 235, 252, 10, 15, 20, 16, 5, 250, 236, 241, 247, 254, 12, 15, 16, 3, 244, 232, 235, 254, 11, 24, 26, 27, 17, 250, 243,
+			242, 251, 1, 247, 239, 244, 4, 7, 234, 201, 193, 236, 60, 94, 65, 11, 222, 209, 192, 184, 221, 27, 76, 64, 17, 235, 218, 205, 200, 222,
+			14, 62, 62, 32, 1, 238, 233, 228, 239, 6, 26, 16, 5, 8, 239, 1, 11, 1, 28, 250, 249, 2, 223, 246, 247, 254, 35, 17, 3, 250,
+			221, 235, 241, 232, 251, 0, 27, 40, 10, 5, 242, 218, 231, 248, 13, 30, 26, 11, 248, 237, 236, 240, 2, 19, 19, 8, 250, 244, 237, 233,
+			249, 7, 20, 29, 22, 0, 240, 238, 245, 247, 248, 5, 27, 37, 23, 253, 242, 239, 248, 1, 249, 233, 234, 40, 82, 39, 234, 205, 234, 253,
+			248, 3, 8, 31, 31, 245, 251, 252, 233, 249, 248, 12, 25, 5, 8, 249, 240, 253, 244, 7, 34, 18, 8, 249, 236, 243, 250, 18, 18, 1,
+			11, 4, 7, 27, 4, 233, 228, 234, 26, 48, 25, 14, 0, 3, 5, 234, 219, 246, 33, 49, 30, 253, 237, 232, 231, 239, 249, 36, 65, 16,
+			223, 219, 249, 26, 19, 246, 238, 5, 30, 25, 13, 4, 252, 1, 253, 230, 245, 20, 20, 4, 247, 9, 38, 41, 13, 224, 219, 229, 203, 203,
+			252, 43, 65, 46, 8, 245, 224, 199, 201, 231, 14, 36, 37, 23, 253, 241, 228, 220, 254, 15, 11, 18, 12, 9, 3, 241, 239, 251, 252, 240,
+			242, 3, 17, 10, 254, 252, 0, 7, 255, 242, 240, 242, 249, 11, 20, 0, 237, 237, 250, 6, 9, 1, 2, 7, 247, 234, 247, 9, 9, 1,
+			0, 2, 252, 236, 236, 252, 10, 11, 0, 0, 2, 254, 244, 232, 239, 252, 250, 255, 15, 9, 247, 242, 252, 5, 4, 250, 0, 14, 1, 243,
+			234, 242, 18, 22, 255, 244, 249, 14, 32, 4, 221, 226, 252, 13, 14, 10, 20, 24, 4, 242, 236, 244, 252, 1, 16, 21, 27, 14, 243, 248,
+			0, 243, 247, 13, 19, 14, 3, 250, 3, 18, 3, 247, 254, 0, 20, 20, 247, 249, 5, 5, 0, 252, 8, 18, 253, 249, 3, 3, 20, 17,
+			7, 16, 13, 247, 233, 240, 250, 26, 42, 3, 240, 245, 250, 12, 18, 10, 5, 253, 6, 6, 244, 241, 251, 16, 12, 253, 4, 8, 1, 239,
+			224, 5, 39, 18, 4, 0, 245, 255, 0, 246, 2, 24, 21, 18, 22, 15, 244, 208, 227, 19, 24, 11, 17, 2, 230, 0, 246, 217, 19, 28,
+			17, 21, 246, 245, 236, 239, 245, 1, 56, 61, 6, 240, 240, 212, 253, 22, 247, 24, 33, 34, 3, 214, 239, 218, 251, 58, 31, 39, 43, 220,
+			170, 1, 35, 5, 27, 0, 10, 32, 5, 7, 248, 228, 254, 29, 29, 23, 238, 227, 24, 7, 213, 207, 226, 17, 66, 61, 7, 229, 249, 12,
+			4, 2, 3, 6, 32, 19, 226, 220, 1, 8, 245, 24, 31, 9, 29, 255, 220, 237, 2, 249, 232, 24, 52, 7, 248, 5, 0, 4, 3, 220,
+			240, 45, 37, 0, 254, 5, 249, 241, 229, 217, 250, 10, 247, 247, 13, 15, 244, 244, 249, 214, 217, 9, 8, 243, 252, 246, 245, 3, 241, 220,
+			225, 2, 16, 255, 11, 255, 221, 240, 255, 9, 31, 4, 213, 220, 252, 1, 1, 5, 16, 36, 14, 213, 193, 232, 26, 33, 16, 6, 242, 240,
+			5, 250, 218, 223, 7, 35, 7, 242, 3, 3, 247, 228, 227, 1, 22, 15, 244, 237, 248, 252, 245, 255, 15, 1, 0, 246, 227, 249, 4, 2,
+			6, 13, 13, 3, 242, 228, 246, 248, 14, 43, 12, 4, 242, 219, 233, 248, 17, 17, 26, 25, 253, 246, 243, 8, 253, 229, 11, 16, 5, 32,
+			30, 246, 232, 227, 242, 22, 12, 35, 56, 1, 241, 1, 11, 250, 232, 250, 28, 50, 250, 228, 11, 22, 9, 219, 217, 29, 61, 2, 223, 255,
+			8, 5, 239, 212, 22, 87, 27, 218, 223, 0, 24, 4, 228, 253, 79, 89, 235, 169, 233, 48, 17, 205, 241, 76, 83, 23, 201, 183, 223, 19,
+			57, 16, 17, 49, 3, 237, 247, 244, 0, 0, 9, 53, 25, 226, 239, 13, 47, 56, 247, 213, 4, 6, 223, 218, 235, 51, 122, 57, 223, 233,
+			6, 251, 200, 181, 6, 81, 62, 0, 237, 10, 18, 250, 220, 232, 2, 11, 36, 16, 248, 22, 21, 248, 0, 10, 1, 252, 246, 241, 209, 207,
+			11, 66, 96, 37, 208, 225, 249, 234, 224, 220, 21, 84, 72, 58, 27, 220, 201, 209, 228, 22, 37, 8, 242, 8, 36, 245, 215, 229, 218, 248,
+			23, 19, 10, 248, 244, 248, 2, 241, 232, 15, 2, 232, 1, 25, 9, 237, 206, 212, 17, 33, 4, 246, 221, 194, 207, 255, 31, 37, 10, 249,
+			240, 204, 215, 237, 249, 22, 25, 45, 16, 215, 210, 209, 236, 8, 13, 21, 40, 12, 213, 202, 209, 12, 29, 8, 11, 249, 6, 232, 186, 234,
+			24, 38, 38, 255, 226, 238, 230, 238, 244, 0, 45, 23, 8, 4, 226, 243, 9, 255, 242, 14, 37, 7, 240, 220, 220, 23, 46, 0, 0, 11,
+			2, 227, 195, 248, 21, 33, 47, 13, 7, 221, 199, 243, 24, 62, 38, 8, 0, 239, 253, 250, 224, 236, 24, 66, 54, 241, 227, 2, 250, 249,
+			252, 250, 21, 32, 11, 246, 241, 246, 243, 242, 1, 55, 66, 245, 188, 193, 2, 56, 40, 15, 17, 28, 245, 199, 203, 234, 22, 49, 45, 31,
+			35, 23, 224, 183, 202, 0, 52, 80, 31, 230, 245, 0, 234, 228, 247, 8, 48, 60, 249, 222, 236, 255, 21, 0, 23, 55, 0, 223, 189, 188,
+			32, 89, 50, 224, 217, 20, 7, 220, 191, 251, 75, 40, 1, 249, 252, 252, 234, 252, 19, 30, 35, 250, 236, 8, 12, 25, 249, 215, 239, 7,
+			21, 255, 2, 47, 43, 242, 207, 243, 17, 0, 221, 226, 54, 104, 34, 185, 166, 0, 65, 12, 209, 250, 47, 30, 240, 229, 19, 23, 246, 231,
+			233, 31, 49, 245, 193, 212, 52, 89, 249, 185, 254, 44, 23, 3, 238, 237, 254, 12, 4, 243, 15, 15, 253, 253, 221, 246, 255, 229, 253, 14,
+			45, 23, 206, 159, 173, 251, 57, 101, 70, 239, 196, 209, 250, 4, 247, 241, 9, 5, 228, 212, 219, 25, 39, 245, 234, 22, 54, 0, 194, 204,
+			11, 46, 2, 216, 223, 251, 36, 32, 210, 189, 13, 50, 7, 210, 203, 13, 35, 254, 242, 245, 35, 50, 249, 221, 231, 12, 47, 1, 175, 177,
+			8, 95, 97, 11, 208, 206, 215, 233, 9, 49, 61, 54, 12, 223, 207, 198, 235, 44, 80, 44, 249, 8, 13, 226, 195, 221, 33, 77, 69, 12,
+			218, 222, 224, 226, 8, 38, 35, 24, 19, 17, 232, 186, 215, 1, 53, 76, 3, 217, 252, 19, 5, 215, 206, 54, 114, 28, 205, 195, 239, 28,
+			30, 25, 6, 230, 246, 10, 254, 18, 40, 18, 242, 200, 202, 244, 16, 56, 62, 25, 2, 212, 199, 9, 35, 23, 29, 29, 9, 231, 230, 253,
+			237, 0, 60, 55, 254, 237, 12, 252, 229, 248, 250, 6, 41, 40, 3, 236, 215, 246, 34, 234, 214, 21, 84, 72, 252, 195, 184, 7, 44, 250,
+			234, 9, 68, 34, 210, 213, 238, 20, 29, 238, 246, 31, 33, 254, 221, 237, 2, 12, 250, 245, 47, 66, 13, 229, 214, 191, 240, 64, 58, 34,
+			7, 1, 37, 252, 166, 174, 253, 65, 61, 26, 56, 29, 206, 188, 188, 231, 250, 9, 108, 112, 18, 211, 181, 213, 252, 0, 35, 76, 22, 227,
+			225, 201, 244, 47, 47, 26, 0, 0, 242, 238, 248, 239, 9, 27, 0, 245, 12, 34, 24, 229, 193, 221, 250, 17, 16, 247, 247, 255, 251, 226,
+			197, 213, 24, 56, 10, 247, 255, 237, 231, 223, 248, 47, 28, 4, 6, 2, 1, 237, 241, 11, 4, 236, 8, 47, 1, 217, 228, 253, 17, 7,
+			7, 16, 241, 219, 235, 234, 221, 248, 25, 27, 2, 230, 228, 245, 252, 254, 253, 249, 254, 253, 249, 246, 0, 18, 12, 254, 236, 240, 6, 4,
+			250, 246, 2, 19, 9, 246, 233, 236, 251, 7, 8, 249, 246, 245, 252, 0, 234, 245, 5, 0, 15, 11, 237, 233, 1, 28, 20, 251, 243, 230,
+			248, 39, 30, 235, 236, 23, 36, 241, 223, 11, 23, 18, 253, 252, 9, 251, 0, 243, 2, 16, 242, 12, 17, 247, 230, 230, 20, 45, 27, 231,
+			197, 240, 21, 12, 8, 9, 33, 42, 240, 210, 219, 14, 47, 14, 3, 248, 5, 38, 5, 194, 202, 39, 48, 236, 232, 8, 24, 255, 202, 229,
+			48, 60, 12, 208, 221, 6, 5, 18, 26, 20, 10, 221, 221, 9, 28, 20, 7, 18, 26, 13, 237, 227, 6, 32, 17, 0, 5, 6, 28, 23,
+			235, 227, 18, 48, 250, 229, 10, 47, 52, 243, 223, 3, 33, 40, 244, 219, 253, 18, 24, 1, 245, 35, 34, 231, 221, 5, 24, 227, 206, 249,
+			62, 112, 32, 195, 208, 14, 22, 239, 246, 13, 21, 25, 15, 250, 7, 18, 254, 237, 223, 13, 55, 8, 188, 192, 6, 33, 34, 10, 231, 250,
+			27, 0, 200, 219, 26, 49, 25, 2, 233, 219, 247, 17, 13, 4, 3, 240, 250, 15, 0, 242, 225, 231, 242, 241, 17, 43, 9, 216, 225, 8,
+			10, 219, 198, 224, 11, 50, 19, 244, 252, 240, 215, 199, 231, 28, 33, 0, 249, 255, 230, 231, 248, 242, 1, 4, 239, 247, 252, 251, 249, 225,
+			240, 254, 235, 244, 6, 23, 19, 255, 230, 201, 228, 17, 20, 249, 235, 2, 20, 9, 221, 210, 255, 21, 17, 4, 236, 234, 245, 230, 243, 6,
+			255, 4, 250, 234, 243, 245, 233, 237, 2, 8, 7, 238, 221, 251, 11, 246, 232, 253, 11, 23, 2, 213, 225, 247, 17, 21, 241, 0, 12, 250,
+			1, 245, 229, 224, 1, 52, 24, 1, 234, 231, 8, 241, 243, 250, 18, 48, 0, 252, 251, 236, 253, 243, 4, 19, 38, 54, 242, 206, 233, 0,
+			5, 2, 31, 23, 32, 44, 233, 210, 232, 13, 12, 254, 23, 14, 3, 244, 240, 17, 29, 25, 8, 233, 230, 239, 20, 70, 21, 239, 16, 6,
+			5, 24, 4, 2, 11, 1, 7, 25, 31, 17, 240, 210, 255, 53, 50, 31, 0, 0, 14, 13, 0, 237, 6, 41, 48, 27, 250, 235, 242, 16,
+			35, 24, 9, 17, 21, 248, 224, 207, 245, 80, 78, 33, 22, 251, 237, 214, 215, 26, 32, 27, 58, 49, 19, 218, 167, 180, 247, 66, 94, 50,
+			244, 254, 12, 227, 214, 253, 27, 10, 243, 3, 62, 88, 34, 209, 177, 236, 40, 35, 4, 240, 248, 8, 247, 234, 254, 249, 253, 11, 7, 15,
+			237, 195, 215, 7, 33, 20, 15, 2, 255, 1, 221, 207, 237, 4, 16, 13, 8, 17, 7, 226, 207, 223, 252, 254, 251, 19, 22, 16, 14, 230,
+			205, 217, 242, 3, 246, 6, 24, 4, 249, 229, 216, 214, 243, 26, 24, 1, 228, 233, 251, 242, 238, 244, 250, 250, 253, 12, 20, 241, 199, 202,
+			249, 39, 4, 218, 234, 253, 254, 213, 197, 229, 10, 25, 2, 248, 229, 210, 225, 0, 1, 232, 7, 23, 0, 7, 246, 215, 217, 255, 20, 249,
+			2, 1, 244, 23, 248, 226, 0, 248, 6, 5, 236, 243, 6, 18, 246, 219, 242, 3, 17, 19, 237, 245, 252, 230, 249, 245, 0, 31, 23, 5,
+			220, 211, 246, 0, 16, 24, 34, 16, 215, 212, 226, 19, 39, 255, 29, 25, 9, 254, 206, 231, 254, 28, 41, 4, 25, 13, 4, 254, 209, 215,
+			0, 60, 59, 14, 255, 15, 29, 221, 209, 18, 29, 12, 9, 17, 3, 243, 252, 251, 12, 35, 5, 254, 5, 237, 250, 250, 247, 36, 22, 244,
+			3, 21, 5, 241, 244, 0, 24, 20, 0, 254, 251, 39, 42, 244, 235, 246, 8, 13, 15, 10, 246, 1, 14, 15, 5, 248, 252, 32, 40, 217,
+			201, 15, 39, 18, 250, 5, 15, 238, 225, 250, 14, 16, 9, 3, 4, 255, 2, 10, 255, 250, 237, 242, 255, 6, 47, 50, 9, 228, 197, 217,
+			19, 45, 27, 252, 245, 252, 244, 243, 253, 244, 251, 30, 32, 236, 198, 226, 2, 13, 13, 0, 3, 24, 11, 223, 222, 0, 254, 248, 6, 5,
+			255, 253, 22, 35, 248, 238, 229, 201, 251, 17, 4, 10, 250, 9, 24, 238, 191, 204, 6, 44, 35, 246, 226, 241, 7, 251, 211, 224, 4, 22,
+			17, 0, 246, 228, 243, 4, 239, 239, 3, 14, 6, 245, 239, 224, 226, 0, 9, 10, 19, 6, 241, 231, 226, 234, 3, 13, 4, 254, 255, 252,
+			246, 241, 221, 230, 13, 13, 0, 0, 243, 247, 255, 239, 233, 241, 17, 31, 253, 236, 238, 0, 17, 2, 219, 223, 19, 22, 2, 0, 227, 221,
+			20, 18, 241, 247, 237, 1, 14, 238, 244, 13, 9, 231, 237, 7, 7, 15, 254, 243, 11, 21, 243, 222, 244, 8, 31, 32, 8, 247, 251, 255,
+			228, 237, 21, 27, 23, 0, 248, 13, 244, 220, 245, 10, 25, 32, 26, 3, 231, 226, 246, 25, 21, 237, 249, 32, 27, 7, 247, 249, 7, 235,
+			223, 10, 33, 30, 17, 239, 252, 45, 23, 234, 228, 253, 27, 31, 24, 11, 254, 244, 236, 9, 37, 17, 0, 255, 16, 32, 7, 245, 3, 30,
+			41, 12, 255, 12, 26, 15, 221, 236, 37, 24, 0, 6, 22, 39, 20, 235, 231, 15, 41, 20, 253, 13, 20, 5, 255, 244, 17, 32, 251, 236,
+			6, 33, 32, 16, 8, 9, 245, 235, 251, 3, 32, 32, 5, 5, 1, 250, 253, 243, 243, 25, 55, 41, 5, 245, 238, 215, 217, 10, 51, 43,
+			16, 5, 0, 236, 227, 238, 1, 14, 15, 23, 4, 241, 242, 247, 2, 13, 22, 8, 237, 229, 3, 28, 14, 255, 238, 249, 19, 22, 4, 233,
+			250, 17, 7, 245, 238, 3, 31, 24, 234, 226, 9, 36, 13, 218, 223, 23, 41, 253, 229, 243, 2, 20, 248, 228, 12, 11, 247, 248, 255, 1,
+			247, 254, 1, 14, 20, 247, 248, 18, 4, 230, 247, 247, 245, 39, 24, 243, 241, 248, 9, 254, 254, 1, 2, 13, 246, 232, 244, 249, 0, 17,
+			24, 5, 238, 240, 14, 2, 219, 233, 26, 52, 13, 236, 230, 245, 17, 249, 234, 250, 24, 50, 3, 230, 235, 241, 3, 7, 20, 24, 12, 250,
+			225, 241, 12, 12, 0, 238, 251, 17, 3, 251, 244, 2, 15, 250, 251, 3, 2, 2, 9, 6, 250, 247, 246, 2, 2, 4, 14, 253, 245, 252,
+			5, 248, 234, 246, 252, 24, 37, 8, 227, 225, 15, 8, 230, 247, 27, 40, 11, 238, 235, 2, 14, 240, 222, 3, 43, 19, 229, 240, 24, 23,
+			254, 246, 3, 11, 252, 241, 248, 8, 6, 4, 16, 6, 1, 5, 245, 244, 251, 255, 7, 6, 21, 24, 9, 248, 227, 254, 16, 245, 237, 6,
+			36, 30, 251, 230, 240, 252, 4, 6, 1, 12, 32, 22, 239, 224, 249, 22, 20, 244, 252, 31, 29, 13, 253, 241, 244, 3, 23, 13, 0, 3,
+			5, 22, 26, 255, 243, 255, 10, 14, 0, 250, 5, 13, 24, 25, 5, 255, 20, 23, 230, 200, 236, 39, 58, 20, 245, 9, 26, 0, 228, 216,
+			246, 31, 26, 1, 0, 23, 15, 246, 241, 250, 10, 18, 7, 3, 12, 6, 244, 237, 0, 25, 16, 1, 2, 1, 2, 3, 7, 5, 255, 253,
+			244, 3, 34, 25, 0, 238, 236, 10, 27, 2, 231, 255, 29, 20, 1, 237, 247, 21, 16, 254, 246, 246, 8, 19, 3, 250, 239, 242, 12, 18,
+			1, 248, 250, 10, 15, 0, 239, 244, 17, 11, 246, 249, 248, 3, 10, 252, 2, 12, 255, 251, 2, 251, 246, 252, 255, 5, 9, 6, 0, 252,
+			240, 234, 0, 30, 27, 248, 231, 240, 5, 13, 238, 228, 3, 20, 22, 7, 233, 233, 255, 255, 255, 255, 253, 12, 13, 2, 238, 227, 255, 1,
+			252, 8, 19, 24, 243, 225, 2, 0, 240, 242, 250, 13, 17, 7, 17, 6, 224, 232, 249, 241, 9, 18, 5, 10, 6, 4, 246, 240, 11, 3,
+			242, 251, 244, 17, 45, 255, 230, 247, 8, 12, 230, 218, 15, 56, 26, 227, 223, 0, 14, 2, 238, 236, 17, 39, 4, 244, 3, 0, 251, 240,
+			229, 252, 16, 24, 20, 243, 226, 245, 252, 2, 2, 240, 247, 21, 35, 16, 241, 237, 239, 233, 250, 16, 34, 33, 253, 240, 4, 4, 246, 243,
+			249, 3, 19, 20, 15, 1, 243, 0, 0, 238, 246, 17, 21, 1, 251, 248, 6, 10, 239, 242, 7, 14, 7, 250, 246, 254, 9, 0, 243, 246,
+			3, 18, 9, 250, 244, 247, 249, 252, 6, 8, 9, 7, 253, 251, 254, 255, 251, 247, 0, 11, 8, 1, 4, 0, 242, 241, 254, 18, 25, 11,
+			245, 243, 6, 9, 252, 237, 254, 29, 23, 250, 237, 255, 14, 2, 235, 240, 24, 41, 13, 239, 232, 246, 0, 6, 13, 19, 20, 14, 255, 240,
+			246, 249, 249, 2, 15, 33, 28, 4, 236, 233, 255, 5, 0, 0, 14, 26, 12, 5, 0, 239, 252, 9, 10, 17, 6, 0, 10, 3, 1, 1,
+			245, 245, 1, 14, 17, 13, 5, 253, 253, 254, 245, 243, 5, 24, 22, 8, 1, 249, 232, 223, 239, 17, 37, 25, 252, 235, 240, 255, 6, 248,
+			245, 12, 23, 13, 2, 247, 242, 238, 237, 1, 14, 9, 22, 23, 251, 234, 230, 237, 6, 21, 13, 0, 9, 16, 255, 244, 239, 241, 242, 6,
+			27, 18, 24, 7, 232, 231, 234, 255, 18, 17, 22, 11, 239, 231, 239, 252, 17, 23, 2, 0, 5, 250, 237, 229, 249, 21, 25, 7, 251, 10,
+			8, 251, 249, 228, 222, 4, 38, 29, 10, 250, 245, 251, 248, 0, 9, 12, 16, 4, 4, 7, 231, 216, 250, 23, 26, 21, 5, 238, 245, 253,
+			248, 250, 243, 1, 17, 20, 10, 232, 243, 249, 233, 14, 30, 12, 1, 249, 248, 0, 16, 2, 249, 6, 9, 5, 241, 247, 6, 246, 247, 255,
+			2, 10, 4, 255, 253, 3, 3, 246, 240, 249, 19, 26, 250, 240, 255, 1, 254, 250, 254, 3, 17, 8, 231, 245, 10, 4, 7, 6, 4, 9,
+			254, 235, 244, 16, 31, 8, 238, 250, 17, 16, 245, 234, 249, 0, 7, 12, 6, 0, 247, 244, 249, 1, 9, 3, 251, 2, 7, 254, 244, 248,
+			0, 1, 8, 6, 252, 245, 247, 0, 9, 9, 252, 235, 240, 9, 20, 3, 242, 253, 9, 252, 240, 249, 14, 17, 251, 240, 251, 9, 15, 255,
+			239, 252, 7, 249, 249, 1, 1, 8, 6, 247, 240, 254, 13, 9, 252, 243, 249, 0, 4, 10, 7, 2, 0, 253, 245, 241, 253, 5, 5, 2,
+			249, 2, 12, 0, 247, 243, 252, 11, 7, 247, 248, 5, 5, 0, 0, 0, 246, 246, 6, 21, 18, 254, 247, 246, 241, 249, 251, 0, 9, 19,
+			19, 0, 246, 244, 251, 249, 238, 248, 12, 30, 19, 242, 238, 252, 253, 250, 1, 8, 12, 12, 0, 248, 4, 0, 230, 233, 10, 24, 18, 255,
+			247, 0, 1, 243, 232, 255, 21, 19, 7, 249, 2, 9, 249, 232, 242, 12, 11, 244, 248, 18, 21, 1, 245, 243, 249, 253, 0, 0, 8, 13,
+			255, 251, 251, 249, 251, 254, 4, 4, 8, 2, 248, 255, 0, 0, 9, 3, 243, 245, 5, 14, 6, 248, 0, 5, 251, 249, 250, 1, 9, 7,
+			0, 246, 247, 1, 3, 7, 253, 250, 6, 248, 242, 0, 1, 18, 17, 247, 246, 4, 9, 250, 232, 239, 12, 33, 24, 6, 247, 245, 248, 246,
+			255, 7, 9, 16, 26, 22, 253, 224, 224, 245, 3, 21, 14, 5, 19, 5, 249, 240, 228, 244, 18, 27, 5, 2, 255, 248, 5, 4, 2, 1,
+			10, 21, 254, 234, 255, 18, 8, 6, 14, 4, 1, 1, 246, 247, 255, 0, 255, 13, 28, 10, 247, 235, 232, 246, 8, 34, 31, 0, 247, 242,
+			242, 252, 251, 1, 20, 18, 255, 240, 246, 255, 3, 5, 0, 252, 253, 5, 11, 255, 240, 251, 14, 7, 248, 0, 15, 4, 241, 239, 252, 15,
+			10, 247, 251, 254, 0, 11, 0, 239, 248, 255, 255, 1, 249, 250, 10, 14, 0, 238, 246, 0, 252, 251, 1, 8, 5, 254, 246, 249, 2, 255,
+			248, 249, 0, 10, 15, 251, 234, 252, 8, 254, 243, 245, 5, 18, 10, 248, 243, 0, 5, 245, 238, 254, 11, 17, 6, 249, 249, 253, 248, 239,
+			247, 8, 12, 5, 253, 0, 5, 250, 238, 242, 2, 14, 7, 0, 1, 0, 246, 238, 249, 7, 9, 7, 1, 1, 0, 240, 239, 252, 2, 12,
+			13, 9, 0, 246, 240, 244, 4, 5, 0, 4, 8, 13, 7, 242, 239, 0, 7, 252, 242, 0, 13, 10, 252, 245, 1, 7, 246, 240, 252, 8,
+			12, 1, 252, 0, 0, 254, 252, 254, 1, 3, 4, 1, 1, 0, 252, 253, 250, 250, 3, 8, 9, 2, 249, 246, 0, 11, 1, 252, 252, 254,
+			7, 6, 252, 254, 10, 9, 247, 240, 254, 14, 7, 252, 1, 5, 9, 0, 236, 244, 8, 11, 4, 250, 0, 15, 7, 245, 246, 3, 8, 3,
+			6, 253, 251, 8, 253, 249, 11, 9, 248, 247, 9, 9, 1, 6, 254, 253, 4, 251, 248, 2, 12, 7, 254, 6, 12, 252, 244, 251, 0, 11,
+			4, 247, 0, 11, 15, 3, 245, 246, 254, 13, 9, 246, 255, 9, 5, 4, 2, 251, 254, 8, 1, 247, 255, 11, 14, 7, 252, 254, 8, 4,
+			4, 252, 248, 20, 23, 5, 253, 248, 5, 10, 254, 244, 1, 28, 21, 3, 243, 237, 10, 15, 246, 253, 19, 21, 14, 255, 244, 0, 254, 245,
+			254, 14, 32, 24, 247, 230, 248, 14, 11, 250, 249, 6, 22, 25, 255, 237, 253, 9, 18, 10, 239, 243, 11, 18, 6, 255, 253, 6, 21, 3,
+			243, 245, 253, 15, 15, 0, 0, 8, 5, 249, 239, 246, 13, 20, 4, 0, 4, 251, 241, 252, 11, 12, 4, 251, 252, 1, 1, 3, 4, 1,
+			3, 2, 0, 2, 5, 1, 249, 246, 252, 6, 14, 7, 250, 248, 251, 255, 254, 254, 5, 12, 11, 255, 244, 240, 246, 4, 9, 4, 3, 6,
+			5, 1, 248, 241, 253, 9, 7, 3, 3, 1, 252, 248, 244, 250, 8, 13, 5, 250, 244, 248, 1, 4, 253, 251, 4, 7, 0, 251, 248, 248,
+			2, 7, 254, 249, 2, 8, 2, 250, 247, 0, 5, 254, 247, 251, 8, 13, 0, 242, 246, 0, 3, 0, 250, 250, 1, 7, 3, 248, 245, 253,
+			2, 5, 252, 246, 2, 8, 0, 249, 246, 251, 2, 6, 2, 252, 253, 250, 255, 4, 251, 247, 0, 4, 7, 7, 253, 248, 248, 250, 1, 3,
+			254, 253, 0, 5, 8, 253, 244, 248, 1, 1, 250, 0, 8, 11, 5, 250, 248, 250, 251, 253, 1, 9, 7, 0, 254, 254, 253, 251, 253, 3,
+			2, 255, 254, 2, 10, 253, 246, 0, 2, 6, 1, 254, 2, 2, 0, 253, 255, 4, 1, 255, 0, 2, 7, 4, 248, 245, 3, 13, 3, 251,
+			254, 7, 15, 2, 241, 238, 251, 12, 14, 11, 5, 255, 0, 247, 245, 252, 0, 12, 15, 9, 255, 247, 255, 0, 254, 3, 7, 1, 3, 6,
+			1, 254, 246, 247, 4, 10, 5, 0, 10, 7, 246, 246, 253, 10, 16, 7, 254, 248, 0, 1, 254, 3, 0, 254, 7, 13, 9, 251, 243, 255,
+			9, 3, 247, 246, 10, 20, 11, 251, 240, 255, 4, 252, 254, 0, 0, 4, 9, 11, 11, 0, 244, 249, 0, 6, 7, 2, 4, 6, 8, 3,
+			249, 247, 252, 3, 9, 9, 7, 0, 249, 253, 0, 255, 4, 2, 3, 10, 6, 4, 255, 248, 255, 1, 4, 13, 13, 254, 245, 249, 0, 4,
+			254, 250, 4, 20, 18, 254, 238, 242, 255, 2, 0, 4, 14, 16, 0, 249, 250, 250, 0, 0, 0, 11, 16, 10, 253, 245, 251, 0, 253, 252,
+			5, 9, 14, 10, 251, 251, 0, 248, 244, 1, 11, 14, 18, 6, 249, 245, 243, 250, 0, 2, 1, 10, 18, 5, 249, 248, 251, 252, 249, 252,
+			12, 21, 7, 252, 248, 252, 1, 249, 241, 254, 21, 26, 11, 250, 240, 246, 253, 249, 253, 10, 18, 16, 3, 250, 245, 239, 246, 3, 7, 9,
+			9, 4, 0, 252, 249, 252, 254, 0, 4, 5, 8, 9, 255, 242, 241, 253, 10, 6, 252, 253, 2, 9, 6, 246, 238, 250, 10, 8, 255, 0,
+			3, 0, 253, 250, 248, 1, 10, 2, 247, 248, 4, 5, 253, 254, 0, 5, 5, 253, 248, 252, 255, 255, 2, 5, 6, 1, 253, 253, 0, 255,
+			252, 0, 1, 2, 3, 255, 249, 250, 0, 3, 1, 253, 252, 0, 0, 249, 253, 4, 4, 0, 252, 251, 1, 4, 253, 249, 0, 3, 3, 255,
+			250, 254, 254, 253, 254, 0, 3, 1, 0, 253, 1, 6, 0, 249, 249, 255, 3, 2, 0, 255, 0, 254, 255, 0, 252, 255, 6, 3, 252, 250,
+			255, 255, 0, 1, 253, 2, 6, 0, 252, 249, 0, 4, 4, 0, 247, 252, 3, 3, 1, 251, 0, 6, 2, 254, 248, 246, 255, 2, 0, 3,
+			9, 9, 0, 245, 243, 250, 0, 4, 2, 4, 11, 7, 253, 244, 246, 255, 4, 4, 3, 5, 9, 2, 248, 249, 248, 252, 1, 3, 12, 14,
+			5, 250, 243, 246, 246, 252, 6, 12, 16, 9, 252, 244, 243, 241, 249, 10, 18, 18, 6, 253, 252, 243, 239, 252, 8, 18, 24, 10, 245, 237,
+			241, 251, 2, 9, 15, 12, 8, 2, 245, 241, 245, 254, 8, 14, 10, 4, 5, 3, 248, 238, 241, 0, 16, 20, 10, 1, 253, 249, 247, 248,
+			0, 10, 15, 10, 0, 253, 254, 252, 245, 252, 9, 11, 12, 9, 0, 248, 246, 251, 255, 2, 8, 9, 10, 7, 252, 244, 247, 253, 0, 6,
+			9, 8, 8, 3, 253, 249, 246, 248, 7, 16, 7, 0, 251, 255, 8, 2, 249, 248, 252, 3, 12, 8, 255, 253, 1, 0, 249, 251, 5, 16,
+			14, 2, 254, 251, 252, 254, 254, 3, 9, 10, 6, 253, 248, 250, 0, 3, 5, 8, 8, 0, 252, 252, 250, 253, 5, 7, 9, 10, 1, 251,
+			251, 254, 0, 0, 0, 5, 7, 6, 4, 2, 0, 251, 249, 253, 0, 4, 3, 6, 11, 2, 253, 253, 252, 254, 0, 1, 8, 12, 8, 3,
+			249, 243, 249, 1, 7, 7, 7, 8, 4, 253, 250, 250, 251, 3, 11, 9, 2, 254, 255, 0, 255, 255, 2, 6, 7, 1, 255, 254, 250, 251,
+			0, 4, 8, 6, 0, 255, 0, 254, 251, 255, 6, 8, 4, 254, 252, 0, 2, 0, 0, 0, 2, 3, 3, 1, 255, 254, 255, 0, 0, 2,
+			1, 4, 2, 251, 249, 254, 5, 9, 5, 0, 0, 3, 1, 251, 250, 1, 10, 7, 254, 253, 0, 1, 0, 251, 251, 4, 7, 3, 255, 0,
+			1, 255, 252, 252, 255, 4, 5, 0, 0, 4, 1, 251, 251, 255, 3, 2, 255, 0, 8, 9, 255, 250, 252, 253, 0, 3, 3, 2, 2, 2,
+			0, 251, 251, 255, 0, 2, 3, 3, 6, 4, 255, 248, 248, 254, 3, 7, 8, 3, 0, 254, 251, 253, 254, 255, 3, 9, 5, 0, 2, 0,
+			253, 250, 250, 1, 10, 10, 1, 254, 0, 0, 254, 251, 253, 0, 6, 8, 6, 1, 248, 245, 253, 3, 6, 7, 5, 2, 0, 251, 250, 253,
+			0, 2, 5, 9, 8, 255, 248, 249, 251, 2, 8, 7, 3, 0, 0, 255, 251, 250, 254, 8, 10, 0, 255, 0, 0, 253, 252, 1, 5, 8,
+			4, 252, 251, 254, 0, 0, 255, 3, 8, 4, 254, 254, 254, 255, 0, 1, 3, 3, 0, 253, 254, 3, 1, 254, 1, 6, 4, 0, 254, 254,
+			0, 1, 1, 0, 2, 2, 2, 255, 254, 0, 0, 1, 2, 1, 2, 0, 253, 254, 255, 2, 8, 4, 1, 1, 251, 251, 0, 6, 5, 2,
+			1, 1, 0, 254, 252, 255, 1, 3, 5, 3, 3, 3, 254, 250, 254, 2, 5, 5, 3, 0, 255, 0, 0, 0, 0, 3, 5, 3, 254, 251,
+			254, 4, 6, 2, 0, 0, 1, 1, 0, 255, 2, 7, 7, 3, 254, 251, 253, 3, 2, 253, 1, 8, 7, 3, 0, 253, 253, 255, 0, 1,
+			5, 6, 1, 253, 252, 253, 1, 1, 1, 4, 4, 5, 3, 253, 251, 252, 255, 1, 5, 6, 5, 1, 251, 251, 255, 0, 0, 1, 3, 2,
+			2, 1, 253, 253, 0, 0, 1, 3, 0, 254, 255, 2, 3, 255, 252, 254, 2, 2, 0, 255, 2, 5, 3, 254, 249, 254, 5, 3, 0, 0,
+			4, 2, 255, 253, 255, 0, 0, 0, 0, 0, 200, 0, 4, 0, 1, 0, 191, 0, 180, 1, 28, 8, 44, 10, 124, 13, 216, 14, 128, 28,
+			50, 41, 25, 54, 56, 53, 42, 34, 11, 8, 185, 107, 137, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 191, 0, 180, 1, 28, 8, 44, 10, 124, 13,
+			216, 14, 128, 28, 80, 77, 35, 75, 77, 73, 57, 47, 15, 11, 185, 107, 137, 120, 120, 120, 185, 107, 127, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 191, 0, 180, 1, 28, 8,
+			44, 10, 124, 13, 216, 14, 128, 28, 70, 65, 32, 69, 71, 67, 53, 43, 13, 10, 185, 107, 137, 120, 120, 120, 185, 107, 127, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 191, 0,
+			180, 1, 28, 8, 44, 10, 124, 13, 216, 14, 128, 28, 0, 29, 22, 46, 48, 45, 35, 29, 9, 7, 185, 107, 137, 120, 120, 120, 185, 107,
+			127, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8,
+			175, 0, 4, 0, 1, 0, 214, 0, 168, 2, 240, 5, 200, 9, 22, 13, 200, 14, 102, 27, 45, 38, 30, 56, 55, 42, 32, 25, 11, 3,
+			179, 145, 174, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191,
+			197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 214, 0, 168, 2, 240, 5, 200, 9, 22, 13, 200, 14, 102, 27, 70, 61, 38, 71, 70, 53,
+			40, 31, 14, 5, 179, 145, 174, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0,
+			184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 214, 0, 168, 2, 240, 5, 200, 9, 22, 13, 200, 14, 102, 27, 60, 51,
+			35, 65, 64, 48, 37, 29, 13, 4, 179, 145, 174, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 214, 0, 168, 2, 240, 5, 200, 9, 22, 13, 200, 14,
+			102, 27, 0, 28, 25, 48, 47, 36, 27, 21, 9, 3, 179, 145, 174, 120, 120, 120, 200, 127, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 172, 7, 130, 0, 1, 1, 1, 1, 1, 1,
+			1, 2, 4, 12, 31, 46, 11, 197, 182, 214, 6, 55, 45, 33, 240, 222, 13, 255, 213, 207, 230, 4, 90, 100, 0, 167, 227, 243, 38, 96,
+			2, 131, 232, 24, 14, 75, 16, 202, 2, 34, 243, 255, 239, 214, 7, 41, 2, 11, 20, 17, 13, 235, 211, 226, 247, 19, 6, 19, 16, 35,
+			6, 1, 9, 216, 216, 255, 0, 52, 53, 255, 249, 242, 247, 255, 249, 232, 207, 233, 32, 41, 0, 21, 2, 234, 252, 251, 29, 57, 247, 206,
+			220, 232, 54, 39, 14, 222, 240, 239, 8, 49, 37, 3, 222, 223, 0, 37, 16, 240, 237, 249, 24, 10, 245, 212, 227, 7, 52, 32, 244, 226,
+			230, 4, 0, 0, 16, 41, 45, 23, 212, 217, 231, 17, 26, 4, 238, 218, 239, 254, 249, 255, 226, 247, 7, 1, 233, 217, 238, 19, 40, 64,
+			20, 3, 242, 231, 246, 3, 250, 0, 18, 18, 10, 14, 22, 9, 10, 251, 217, 235, 10, 10, 15, 12, 24, 32, 30, 230, 222, 231, 1, 9,
+			4, 251, 252, 20, 27, 15, 254, 231, 231, 241, 255, 7, 9, 5, 3, 246, 254, 12, 236, 238, 225, 7, 13, 8, 12, 246, 4, 10, 8, 249,
+			239, 1, 2, 231, 227, 10, 21, 81, 57, 250, 200, 214, 225, 6, 24, 1, 253, 9, 22, 12, 251, 230, 232, 250, 18, 12, 7, 247, 249, 246,
+			249, 253, 5, 4, 6, 255, 240, 235, 248, 23, 42, 9, 248, 229, 0, 6, 19, 0, 239, 247, 8, 20, 8, 255, 248, 5, 22, 32, 11, 244,
+			228, 238, 254, 12, 10, 0, 252, 3, 4, 0, 4, 0, 253, 249, 251, 3, 11, 5, 5, 248, 233, 247, 0, 10, 8, 250, 237, 247, 5, 3,
+			255, 2, 249, 249, 0, 3, 2, 0, 251, 250, 4, 3, 5, 12, 12, 2, 252, 252, 250, 8, 10, 5, 6, 13, 3, 3, 7, 251, 255, 253,
+			244, 250, 4, 0, 3, 4, 253, 243, 246, 250, 1, 1, 251, 245, 255, 3, 2, 2, 251, 244, 247, 251, 251, 8, 2, 248, 254, 5, 6, 2,
+			5, 255, 0, 253, 250, 7, 10, 7, 255, 0, 0, 5, 11, 10, 6, 1, 250, 0, 3, 2, 251, 253, 3, 9, 10, 2, 255, 253, 254, 6,
+			10, 8, 0, 252, 4, 10, 5, 253, 246, 252, 0, 7, 7, 1, 3, 252, 253, 0, 4, 1, 0, 255, 253, 253, 0, 255, 1, 0, 254, 253,
+			2, 2, 0, 2, 1, 255, 255, 255, 0, 4, 3, 0, 0, 0, 1, 1, 2, 2, 2, 3, 0, 2, 3, 1, 0, 0, 255, 0, 0, 2,
+			2, 3, 2, 1, 0, 254, 252, 0, 0, 0, 0, 255, 255, 0, 0, 255, 254, 253, 253, 254, 0, 0, 2, 255, 251, 251, 254, 0, 2, 0,
+			255, 255, 255, 1, 2, 0, 255, 255, 255, 0, 3, 2, 1, 255, 254, 254, 0, 2, 2, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 254,
+			0, 1, 1, 254, 254, 255, 255, 1, 1, 255, 254, 255, 255, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 255, 254, 254, 0, 1, 2, 2,
+			0, 255, 0, 1, 0, 1, 0, 254, 1, 2, 2, 1, 0, 255, 0, 0, 0, 1, 0, 0, 255, 0, 0, 2, 2, 2, 0, 255, 0, 0,
+			1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 255, 0, 0, 0, 1, 0, 0,
+			0, 1, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 255, 0, 0, 0,
+			0, 0, 0, 0, 1, 1, 0, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 255, 0, 0, 0, 0, 0,
+			0, 0, 0, 1, 0, 0, 255, 0, 0, 1, 0, 0, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+			1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 1, 0, 0,
+			0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
+			1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0,
+			1, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 1, 0, 1, 0, 0, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0,
+			2, 1, 0, 0, 0, 1, 2, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1,
+			0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1,
+			1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 1, 2, 0, 255, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 255, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 255, 255,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 1, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 3, 2, 255, 251, 247, 247, 251, 1, 8, 10, 7,
+			4, 1, 254, 252, 249, 250, 248, 255, 4, 9, 10, 4, 2, 0, 255, 254, 253, 255, 254, 1, 3, 3, 1, 255, 255, 254, 0, 0, 1, 3,
+			2, 1, 0, 254, 254, 252, 254, 254, 0, 2, 3, 4, 4, 2, 0, 254, 254, 254, 255, 0, 2, 3, 3, 2, 2, 0, 255, 0, 0, 0,
+			1, 2, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, 254, 251, 252, 255, 1, 3, 3, 3, 2, 1, 0, 0, 253, 252, 253, 0, 4,
+			5, 5, 4, 2, 0, 0, 0, 254, 254, 0, 2, 3, 1, 1, 0, 0, 255, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 255, 0,
+			2, 4, 3, 2, 0, 0, 0, 0, 255, 0, 0, 2, 3, 3, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 255, 254, 253, 255, 2, 5, 6, 3, 0, 254, 253, 255, 0, 0, 0, 2, 4, 5, 5, 2, 0, 254, 253,
+			255, 1, 2, 1, 0, 0, 0, 0, 1, 0, 255, 255, 0, 1, 2, 1, 0, 0, 255, 255, 0, 0, 0, 0, 2, 3, 2, 2, 0, 255,
+			0, 0, 1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 2, 2, 1, 0, 255, 253, 251, 251, 253, 0, 2, 5, 7, 5, 1, 254, 253, 252,
+			252, 253, 255, 2, 5, 7, 7, 4, 0, 254, 254, 255, 0, 0, 0, 2, 2, 1, 1, 0, 255, 255, 255, 0, 1, 1, 1, 0, 255, 255,
+			255, 255, 255, 0, 0, 2, 4, 3, 2, 1, 0, 254, 255, 0, 0, 1, 2, 2, 2, 1, 0, 0, 0, 255, 0, 0, 1, 0, 0, 0,
+			255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 254, 253, 253, 253, 254, 1, 3, 6, 7, 3, 255,
+			251, 251, 253, 255, 255, 0, 2, 4, 5, 5, 1, 254, 252, 252, 0, 1, 2, 1, 1, 0, 1, 1, 0, 255, 254, 0, 2, 3, 2, 0,
+			0, 254, 255, 0, 0, 0, 0, 0, 2, 3, 2, 0, 255, 255, 255, 0, 0, 1, 1, 1, 2, 1, 0, 0, 255, 0, 0, 0, 1, 2,
+			1, 0, 255, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 255, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 1, 1, 0, 0, 0, 0, 2, 2, 1, 0, 254, 253, 252, 254, 1, 2, 3, 4, 3, 2, 255, 253, 254, 255, 0, 0, 3, 4, 2,
+			1, 0, 0, 255, 0, 1, 1, 2, 0, 0, 0, 0, 0, 255, 0, 0, 0, 2, 2, 3, 1, 0, 0, 255, 255, 255, 0, 1, 1, 2,
+			3, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2,
+			1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1,
+			0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1,
+			1, 0, 0, 0, 0, 0, 0, 0, 254, 254, 0, 2, 4, 3, 2, 0, 0, 0, 1, 1, 0, 0, 0, 2, 3, 2, 0, 0, 255, 0,
+			1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1,
+			0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 3, 0, 5, 0, 136, 0, 216, 0, 220, 5, 140, 10, 228, 12, 24, 16, 124, 21, 35, 9,
+			16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 1, 0, 136, 0, 216, 0, 220, 5, 140, 10, 228, 12, 24, 16,
+			124, 21, 0, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 136, 0, 216, 0, 220, 5, 140, 10,
+			228, 12, 24, 16, 124, 21, 0, 9, 16, 16, 9, 6, 3, 3, 0, 0, 200, 212, 187, 255, 255, 175, 200, 212, 187, 44, 30, 50, 85, 54,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 6, 0, 1, 0,
+			180, 0, 128, 2, 120, 5, 126, 9, 233, 12, 116, 14, 176, 27, 40, 47, 32, 60, 67, 43, 38, 31, 13, 3, 174, 157, 145, 120, 120, 120,
+			200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 180, 0, 128, 2, 120, 5, 126, 9, 233, 12, 116, 14, 176, 27, 45, 105, 48, 89, 101, 65, 57, 47, 19, 4, 174, 157,
+			145, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 187, 0, 120, 2, 181, 5, 125, 9, 234, 12, 110, 14, 189, 27, 45, 78, 41, 77, 87, 59, 51, 42,
+			16, 4, 175, 155, 147, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 216, 0, 88, 2, 184, 6, 136, 9, 242, 12, 86, 14, 243, 27, 70, 61, 33, 67,
+			75, 58, 50, 40, 14, 5, 180, 144, 158, 120, 120, 120, 200, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 156, 0, 96, 1, 192, 8, 140, 10, 152, 13, 166, 14, 32, 28,
+			40, 44, 33, 56, 50, 60, 46, 33, 10, 8, 167, 90, 195, 120, 120, 120, 122, 120, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 156, 0, 96, 1, 192, 8, 160, 10, 92, 13,
+			10, 15, 32, 28, 0, 31, 30, 47, 48, 44, 40, 32, 9, 8, 167, 90, 135, 120, 120, 120, 122, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 245, 0, 5, 0, 1, 0, 253, 0,
+			168, 2, 120, 5, 238, 9, 66, 13, 215, 14, 0, 28, 45, 45, 40, 54, 70, 39, 36, 26, 12, 3, 200, 140, 140, 120, 120, 120, 150, 175,
+			150, 44, 45, 70, 130, 59, 155, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182,
+			3, 0, 253, 0, 168, 2, 120, 5, 238, 9, 66, 13, 215, 14, 0, 28, 70, 81, 54, 72, 94, 52, 48, 35, 17, 4, 200, 140, 140, 120,
+			120, 120, 150, 175, 150, 44, 45, 70, 130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182,
+			1, 250, 0, 0, 1, 0, 211, 0, 232, 1, 108, 7, 133, 10, 75, 13, 255, 14, 10, 27, 70, 48, 35, 52, 65, 48, 46, 31, 13, 4,
+			183, 150, 134, 120, 120, 120, 158, 175, 135, 44, 45, 70, 130, 60, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182,
+			8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 60, 31, 20, 37, 44, 47,
+			47, 30, 11, 5, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 175, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 169, 0, 56, 1, 192, 8, 28, 11, 84, 13, 40, 15, 20, 26, 0, 16,
+			14, 27, 32, 34, 34, 22, 8, 3, 166, 170, 129, 120, 120, 120, 167, 190, 120, 44, 45, 70, 130, 60, 175, 0, 0, 0, 40, 0, 0, 0,
+			0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 0, 0, 6, 0, 1, 0, 238, 0, 168, 2, 60, 5, 136, 9,
+			48, 12, 191, 14, 88, 28, 46, 47, 26, 58, 67, 47, 36, 31, 12, 5, 170, 131, 172, 120, 120, 120, 255, 120, 142, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 238, 0, 168, 2,
+			60, 5, 136, 9, 48, 12, 191, 14, 88, 28, 25, 108, 40, 88, 102, 72, 56, 48, 19, 8, 170, 131, 172, 120, 120, 120, 255, 120, 142, 44,
+			45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0,
+			230, 0, 128, 2, 32, 5, 124, 9, 50, 12, 193, 14, 92, 28, 43, 69, 31, 71, 80, 54, 44, 36, 15, 6, 169, 133, 166, 120, 120, 120,
+			255, 132, 138, 44, 45, 70, 130, 58, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250,
+			0, 0, 1, 0, 198, 0, 248, 1, 176, 4, 76, 9, 58, 12, 204, 14, 112, 28, 60, 71, 28, 76, 72, 41, 43, 25, 14, 8, 166, 142,
+			142, 120, 120, 120, 170, 180, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200,
+			53, 182, 64, 250, 23, 8, 5, 0, 192, 0, 174, 1, 196, 4, 172, 8, 204, 11, 141, 14, 224, 28, 46, 39, 28, 64, 39, 27, 18, 16,
+			8, 8, 162, 120, 135, 120, 120, 120, 117, 90, 180, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169,
+			0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 176, 0, 134, 1, 189, 3, 92, 8, 204, 11, 141, 14, 224, 28, 0, 33, 24, 58,
+			38, 22, 15, 12, 9, 8, 152, 120, 75, 120, 120, 120, 107, 90, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 247, 0, 5, 0, 1, 0, 251, 0, 128, 2, 96, 4, 92, 10, 60, 12,
+			48, 14, 235, 27, 45, 49, 32, 65, 69, 26, 39, 24, 7, 5, 182, 124, 126, 120, 120, 120, 105, 139, 135, 44, 45, 70, 130, 59, 160, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 251, 0, 128, 2, 96, 4,
+			92, 10, 60, 12, 48, 14, 235, 27, 60, 70, 39, 78, 82, 31, 47, 29, 8, 6, 182, 124, 126, 120, 120, 120, 105, 139, 135, 44, 45, 70,
+			130, 59, 160, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 230, 0,
+			8, 2, 52, 3, 56, 10, 10, 12, 13, 14, 253, 27, 80, 44, 41, 50, 48, 30, 37, 25, 7, 6, 184, 116, 124, 120, 120, 120, 105, 149,
+			135, 44, 45, 70, 130, 59, 170, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 208, 0, 136, 1, 8, 2, 20, 10, 216, 11, 234, 13, 15, 28, 62, 26, 39, 30, 16, 28, 28, 19, 6, 5, 186, 83, 122, 120,
+			120, 120, 105, 135, 135, 44, 45, 70, 130, 60, 155, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 1, 0, 222, 0, 130, 1, 0, 5, 0, 10, 194, 12, 197, 14, 136, 27, 0, 22, 47, 35, 19, 23, 22, 17, 6, 3,
+			153, 71, 106, 120, 120, 120, 67, 135, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191,
+			77, 220, 52, 182, 64, 250, 23, 8, 165, 0, 3, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 110, 86,
+			41, 79, 96, 54, 56, 43, 23, 8, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 7, 0, 116, 0, 24, 2, 136, 5, 16, 9, 88, 12, 16, 14,
+			88, 27, 55, 24, 22, 43, 46, 30, 28, 21, 11, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 72, 2, 120, 5, 208, 7,
+			224, 11, 152, 13, 88, 27, 0, 21, 22, 43, 37, 30, 13, 11, 6, 4, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 3, 0, 1, 0,
+			116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 50, 50, 31, 60, 73, 41, 43, 33, 17, 6, 167, 150, 135, 120, 120, 120,
+			197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 90, 86, 41, 79, 96, 54, 56, 43, 23, 8, 167, 150,
+			135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 116, 0, 24, 2, 140, 5, 116, 9, 188, 12, 116, 14, 88, 27, 0, 42, 28, 55, 67, 38, 39, 30,
+			16, 6, 167, 150, 135, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 0, 0, 3, 0, 1, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12, 136, 14, 38, 27,
+			50, 49, 30, 62, 69, 42, 44, 32, 16, 6, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0,
+			0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 123, 0, 15, 2, 181, 5, 176, 9, 198, 12,
+			136, 14, 38, 27, 90, 88, 40, 83, 92, 56, 58, 43, 22, 8, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 123, 0, 15, 2, 181, 5,
+			176, 9, 198, 12, 136, 14, 38, 27, 0, 42, 27, 57, 63, 38, 40, 30, 15, 5, 166, 145, 133, 120, 120, 120, 197, 120, 120, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 201, 0, 6, 0,
+			1, 0, 104, 0, 139, 1, 9, 8, 80, 10, 72, 13, 60, 15, 160, 27, 42, 46, 10, 66, 56, 58, 42, 33, 10, 8, 150, 165, 150, 120,
+			120, 120, 150, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182,
+			176, 250, 118, 182, 3, 0, 104, 0, 139, 1, 20, 8, 160, 10, 72, 13, 60, 15, 32, 27, 50, 60, 16, 66, 78, 77, 67, 37, 15, 8,
+			167, 120, 150, 120, 120, 120, 167, 120, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191,
+			197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 128, 0, 179, 1, 232, 7, 80, 10, 52, 13, 60, 15, 64, 27, 31, 45, 20, 70, 53, 50,
+			46, 25, 9, 8, 180, 90, 150, 120, 120, 120, 180, 105, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182,
+			49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 168, 0, 3, 2, 67, 7, 196, 9, 112, 13, 60, 15, 64, 27, 44, 40,
+			25, 65, 56, 50, 38, 25, 12, 8, 167, 90, 150, 120, 120, 120, 167, 90, 165, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0,
+			0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 1, 0, 168, 0, 3, 2, 103, 6, 156, 9, 32, 13, 85, 15,
+			64, 28, 34, 25, 21, 43, 43, 45, 36, 20, 6, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59, 0, 0, 0, 0,
+			40, 0, 0, 0, 0, 200, 53, 182, 200, 169, 0, 191, 77, 220, 52, 182, 64, 250, 23, 8, 1, 0, 184, 0, 3, 2, 59, 6, 156, 9,
+			112, 13, 29, 16, 192, 28, 0, 25, 26, 43, 39, 39, 31, 16, 4, 8, 167, 150, 120, 120, 120, 120, 167, 105, 135, 44, 45, 70, 130, 59,
+			0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 36, 0, 0, 0, 250, 0, 0, 180, 0, 4, 0, 1, 0,
+			158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 50, 32, 10, 58, 42, 49, 50, 24, 11, 5, 166, 105, 120, 120, 120, 120,
+			130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250,
+			118, 182, 3, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 70, 73, 15, 88, 64, 74, 75, 37, 17, 8, 166, 105,
+			120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158,
+			118, 182, 1, 250, 0, 0, 1, 0, 158, 0, 56, 1, 165, 8, 215, 10, 49, 13, 9, 15, 112, 26, 60, 65, 14, 83, 60, 70, 71, 35,
+			16, 7, 166, 105, 120, 120, 120, 120, 130, 75, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133,
+			0, 182, 8, 0, 0, 0, 1, 250, 0, 0, 1, 0, 125, 0, 0, 1, 56, 9, 4, 11, 20, 13, 0, 15, 64, 26, 0, 33, 8, 52,
+			52, 53, 54, 29, 11, 8, 167, 99, 114, 120, 120, 120, 167, 105, 120, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154,
+			216, 182, 0, 0, 0, 0, 188, 200, 53, 182, 64, 250, 23, 8, 95, 0, 4, 0, 1, 0, 157, 0, 144, 1, 90, 5, 252, 8, 168, 12,
+			181, 14, 148, 25, 45, 41, 21, 56, 54, 42, 37, 29, 12, 9, 174, 125, 138, 121, 121, 130, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0,
+			0, 0, 40, 0, 0, 0, 0, 210, 117, 182, 200, 168, 0, 191, 197, 184, 216, 182, 176, 250, 118, 182, 3, 0, 157, 0, 144, 1, 90, 5,
+			252, 8, 168, 12, 181, 14, 148, 25, 90, 74, 29, 75, 73, 56, 50, 39, 16, 12, 174, 125, 138, 121, 121, 130, 187, 126, 137, 44, 45, 70,
+			130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 184, 168, 0, 191, 197, 158, 118, 182, 1, 250, 0, 0, 1, 0, 143, 0,
+			183, 1, 0, 5, 65, 9, 121, 12, 164, 14, 155, 26, 50, 60, 29, 67, 70, 44, 41, 32, 16, 7, 168, 136, 140, 120, 120, 123, 187, 126,
+			137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 49, 133, 0, 182, 8, 0, 0, 0, 1, 250, 0, 0,
+			1, 0, 143, 0, 183, 1, 0, 5, 65, 9, 121, 12, 164, 14, 155, 26, 0, 44, 25, 58, 60, 38, 36, 27, 14, 6, 168, 136, 140, 120,
+			120, 123, 187, 126, 137, 44, 45, 70, 130, 59, 0, 0, 0, 0, 40, 0, 0, 0, 0, 154, 216, 182, 0, 0, 0, 0, 188, 200, 53, 182,
+			64, 250, 23, 8, 51, 1, 61, 0, 0, 0, 3, 3, 34, 126, 63, 228, 224, 253, 19, 246, 245, 31, 94, 39, 4, 4, 31, 47, 12, 255,
+			17, 4, 41, 10, 7, 12, 9, 8, 13, 12, 5, 243, 226, 244, 244, 251, 240, 226, 238, 62, 71, 228, 217, 12, 18, 14, 249, 10, 3, 233,
+			224, 4, 36, 44, 25, 254, 4, 35, 16, 240, 229, 2, 18, 12, 5, 11, 0, 245, 243, 249, 16, 11, 253, 241, 231, 251, 4, 238, 233, 250,
+			8, 11, 3, 252, 0, 250, 243, 254, 5, 37, 34, 8, 239, 251, 34, 27, 27, 11, 16, 40, 29, 12, 11, 7, 7, 239, 247, 6, 23, 9,
+			245, 233, 8, 7, 6, 247, 234, 6, 236, 209, 242, 5, 246, 224, 219, 0, 30, 9, 224, 212, 223, 249, 246, 235, 227, 234, 10, 15, 237, 7,
+			242, 22, 6, 217, 215, 0, 48, 10, 217, 227, 12, 32, 7, 235, 2, 9, 231, 226, 241, 248, 28, 221, 213, 247, 17, 5, 248, 246, 244, 214,
+			224, 245, 234, 241, 2, 19, 221, 246, 6, 247, 236, 228, 23, 0, 240, 234, 11, 5, 253, 1, 10, 3, 32, 19, 241, 254, 15, 249, 240, 14,
+			35, 8, 238, 20, 47, 17, 252, 246, 241, 0, 13, 33, 1, 9, 5, 9, 0, 6, 20, 0, 249, 244, 3, 250, 0, 39, 11, 220, 241, 39,
+			38, 14, 227, 236, 255, 255, 252, 250, 251, 4, 250, 246, 254, 254, 245, 231, 234, 248, 248, 243, 243, 244, 246, 245, 240, 236, 238, 239, 239, 240,
+			239, 242, 244, 238, 233, 239, 242, 243, 242, 235, 234, 238, 236, 240, 240, 246, 0, 5, 6, 9, 5, 241, 242, 245, 251, 10, 2, 19, 23, 19,
+			23, 15, 15, 2, 0, 253, 5, 13, 19, 19, 6, 8, 4, 247, 246, 0, 0};
+		autoFileInMemory espeakdata_phons2 = FileInMemory_createWithData (406336, reinterpret_cast<const char *> (&espeakdata_phons2_data), 
+			U"/home/david/projects/praat/espeak-work/espeak-1.48.04-source/espeak-data/phondata", 
 			U"phondata");
-		Collection_addItem (me.peek(), espeakdata_phons2.transfer());
+		my addItem_move (espeakdata_phons2.move());
 
-		static unsigned char espeakdata_phons3_data[20427] = {
-			36, 70, 1, 0, 0, 161, 213, 131, 0, 0, 0, 0, 0, 162, 18, 130, 0, 0, 0, 0, 0, 192, 1, 0, 0, 176, 85, 0, 2, 13,
-			153, 201, 16, 52, 34, 36, 3, 104, 1, 13, 0, 32, 25, 10, 0, 176, 134, 0, 0, 176, 183, 0, 0, 176, 248, 0, 38, 5, 0, 176,
-			57, 1, 0, 176, 122, 1, 0, 176, 187, 1, 3, 13, 204, 109, 0, 169, 134, 40, 95, 10, 2, 47, 0, 176, 252, 1, 0, 176, 93, 2,
-			3, 13, 204, 110, 0, 169, 134, 40, 95, 10, 2, 47, 0, 176, 190, 2, 0, 176, 15, 3, 4, 13, 139, 197, 169, 204, 0, 176, 96, 3,
-			192, 195, 177, 3, 3, 13, 204, 114, 0, 169, 0, 176, 52, 4, 3, 13, 204, 108, 0, 169, 0, 176, 133, 4, 2, 13, 185, 201, 138, 41,
-			46, 1, 6, 106, 16, 223, 198, 4, 16, 223, 247, 4, 16, 223, 40, 5, 16, 223, 89, 5, 16, 223, 138, 5, 16, 223, 187, 5, 2, 39,
-			224, 236, 236, 5, 0, 39, 0, 176, 13, 6, 47, 48, 48, 48, 49, 32, 0, 176, 62, 6, 0, 176, 95, 6, 50, 34, 5, 104, 0, 176,
-			144, 6, 0, 240, 177, 6, 47, 48, 48, 48, 49, 32, 0, 176, 135, 11, 138, 39, 0, 176, 184, 11, 0, 176, 233, 11, 0, 240, 177, 6,
-			1, 13, 0, 114, 52, 36, 3, 104, 1, 13, 0, 32, 0, 161, 25, 3, 75, 1, 96, 170, 0, 162, 18, 34, 75, 9, 96, 170, 0, 176,
-			10, 12, 16, 244, 59, 12, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 254, 13,
-			32, 243, 63, 14, 1, 13, 0, 114, 0, 161, 25, 3, 64, 9, 118, 90, 0, 162, 18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 198, 4,
-			16, 223, 247, 4, 16, 223, 40, 5, 16, 223, 89, 5, 16, 223, 138, 5, 16, 223, 187, 5, 2, 39, 224, 236, 236, 5, 0, 176, 254, 13,
-			0, 240, 218, 16, 2, 13, 128, 202, 138, 41, 5, 104, 0, 176, 235, 17, 32, 243, 44, 18, 0, 176, 235, 17, 176, 244, 44, 18, 6, 106,
-			0, 208, 238, 21, 0, 208, 31, 22, 0, 208, 64, 22, 96, 223, 97, 22, 0, 208, 146, 22, 0, 208, 211, 22, 1, 0, 138, 41, 56, 1,
-			138, 41, 17, 104, 6, 108, 64, 236, 4, 23, 128, 237, 69, 23, 32, 238, 134, 23, 32, 238, 183, 23, 128, 237, 248, 23, 128, 237, 73, 24,
-			0, 176, 138, 24, 1, 0, 0, 145, 194, 0, 28, 32, 224, 236, 171, 24, 4, 96, 2, 39, 128, 237, 171, 24, 0, 39, 0, 176, 204, 24,
-			47, 32, 0, 176, 253, 24, 56, 32, 0, 176, 30, 25, 0, 176, 63, 25, 2, 41, 55, 1, 6, 108, 64, 236, 4, 23, 128, 237, 69, 23,
-			32, 238, 134, 23, 32, 238, 183, 23, 128, 237, 248, 23, 128, 237, 73, 24, 57, 37, 0, 176, 134, 23, 58, 37, 0, 176, 134, 23, 0, 176,
-			138, 24, 2, 41, 55, 1, 0, 145, 194, 0, 57, 37, 0, 176, 96, 25, 58, 37, 0, 176, 145, 25, 6, 108, 64, 236, 210, 25, 224, 236,
-			19, 26, 128, 237, 96, 25, 32, 238, 84, 26, 224, 236, 149, 26, 128, 237, 145, 25, 1, 0, 2, 41, 55, 1, 6, 108, 0, 224, 230, 26,
-			0, 224, 7, 27, 0, 224, 40, 27, 0, 224, 73, 27, 0, 224, 122, 27, 192, 238, 171, 27, 0, 176, 138, 24, 2, 13, 142, 202, 1, 162,
-			30, 82, 0, 0, 0, 0, 6, 106, 0, 208, 204, 27, 0, 208, 253, 27, 0, 208, 46, 28, 0, 208, 95, 28, 0, 208, 144, 28, 0, 208,
-			209, 28, 0, 39, 0, 176, 18, 29, 0, 176, 83, 29, 2, 13, 173, 201, 0, 176, 148, 29, 138, 41, 63, 1, 128, 237, 197, 29, 0, 39,
-			0, 176, 246, 29, 0, 176, 55, 30, 2, 41, 23, 104, 6, 106, 0, 208, 104, 30, 0, 208, 153, 30, 0, 208, 202, 30, 0, 208, 251, 30,
-			0, 208, 44, 31, 0, 208, 93, 31, 32, 238, 142, 31, 0, 39, 3, 104, 0, 176, 175, 31, 0, 176, 175, 31, 11, 96, 0, 162, 25, 18,
-			0, 0, 0, 0, 31, 32, 3, 104, 0, 176, 224, 31, 0, 176, 33, 32, 1, 0, 2, 43, 21, 104, 6, 106, 0, 208, 82, 32, 0, 208,
-			147, 32, 0, 208, 212, 32, 0, 208, 21, 33, 0, 208, 70, 33, 0, 208, 151, 33, 32, 238, 200, 33, 0, 39, 3, 104, 0, 176, 233, 33,
-			7, 96, 0, 162, 35, 18, 0, 0, 0, 0, 0, 176, 10, 34, 1, 0, 31, 32, 3, 104, 1, 13, 0, 32, 138, 41, 1, 1, 6, 106,
-			0, 208, 59, 34, 0, 208, 108, 34, 0, 208, 157, 34, 0, 208, 206, 34, 0, 208, 255, 34, 0, 208, 64, 35, 31, 32, 128, 237, 113, 35,
-			0, 39, 0, 176, 146, 35, 1, 0, 0, 162, 18, 34, 75, 9, 84, 65, 2, 47, 11, 104, 0, 161, 25, 3, 75, 1, 212, 114, 133, 41,
-			3, 104, 0, 176, 179, 35, 0, 176, 244, 35, 6, 106, 0, 208, 53, 36, 0, 208, 118, 36, 0, 208, 183, 36, 0, 208, 248, 36, 0, 208,
-			73, 37, 0, 208, 138, 37, 138, 39, 3, 43, 0, 176, 203, 37, 0, 39, 0, 176, 252, 37, 138, 41, 0, 176, 29, 38, 1, 0, 0, 162,
-			146, 50, 77, 9, 98, 162, 2, 47, 7, 104, 0, 161, 25, 3, 79, 1, 222, 154, 0, 176, 78, 38, 6, 106, 0, 208, 143, 38, 0, 208,
-			208, 38, 0, 208, 17, 39, 0, 208, 82, 39, 0, 208, 147, 39, 0, 208, 212, 39, 138, 39, 3, 43, 0, 176, 21, 40, 0, 55, 50, 32,
-			0, 176, 70, 40, 138, 41, 0, 176, 103, 40, 1, 0, 2, 13, 179, 201, 0, 161, 153, 18, 69, 73, 88, 162, 0, 162, 146, 50, 69, 73,
-			88, 162, 2, 47, 0, 176, 152, 40, 6, 106, 0, 208, 143, 38, 0, 208, 208, 38, 0, 208, 17, 39, 0, 208, 82, 39, 0, 208, 147, 39,
-			0, 208, 212, 39, 138, 39, 3, 43, 0, 176, 21, 40, 0, 55, 66, 32, 0, 176, 217, 40, 138, 41, 0, 176, 250, 40, 1, 0, 2, 13,
-			178, 201, 0, 162, 23, 114, 81, 13, 114, 205, 2, 47, 5, 104, 0, 208, 43, 41, 0, 176, 76, 41, 6, 106, 0, 208, 141, 41, 0, 208,
-			238, 41, 0, 208, 63, 42, 0, 208, 160, 42, 0, 208, 1, 43, 0, 208, 114, 43, 0, 39, 0, 176, 211, 43, 138, 41, 10, 104, 67, 36,
-			3, 104, 37, 10, 4, 96, 67, 37, 2, 104, 50, 10, 0, 176, 244, 43, 1, 0, 0, 162, 148, 50, 75, 13, 110, 189, 2, 47, 7, 104,
-			0, 161, 25, 3, 79, 1, 42, 172, 0, 176, 69, 44, 6, 106, 0, 208, 134, 44, 0, 208, 183, 44, 0, 208, 232, 44, 0, 208, 25, 45,
-			0, 208, 74, 45, 0, 208, 123, 45, 31, 32, 128, 237, 172, 45, 138, 39, 3, 43, 0, 176, 221, 45, 0, 39, 0, 176, 254, 45, 138, 41,
-			0, 176, 31, 46, 1, 0, 2, 13, 190, 201, 0, 162, 136, 20, 73, 13, 96, 170, 0, 161, 10, 19, 77, 9, 96, 170, 31, 48, 30, 32,
-			0, 176, 80, 46, 0, 176, 161, 46, 2, 13, 190, 201, 14, 37, 3, 104, 1, 13, 0, 114, 30, 50, 31, 34, 13, 104, 0, 161, 25, 3,
-			75, 1, 94, 170, 0, 176, 242, 46, 96, 249, 177, 6, 0, 176, 242, 46, 96, 249, 177, 6, 0, 161, 25, 3, 75, 9, 94, 170, 29, 34,
-			5, 104, 0, 176, 35, 47, 128, 252, 177, 6, 34, 34, 0, 176, 100, 47, 0, 162, 153, 20, 75, 13, 222, 169, 0, 161, 25, 3, 75, 1,
-			94, 170, 0, 176, 35, 47, 128, 252, 177, 6, 0, 162, 136, 20, 71, 77, 220, 169, 0, 161, 10, 19, 71, 9, 220, 169, 0, 176, 133, 47,
-			0, 162, 18, 34, 73, 9, 84, 73, 1, 47, 0, 176, 214, 47, 2, 47, 15, 104, 0, 161, 213, 3, 73, 5, 84, 73, 133, 41, 5, 104,
-			0, 176, 7, 48, 0, 240, 56, 48, 0, 176, 7, 48, 0, 240, 62, 49, 133, 41, 5, 104, 0, 176, 151, 49, 0, 240, 56, 48, 14, 34,
-			5, 104, 0, 176, 200, 49, 0, 240, 62, 49, 28, 34, 5, 104, 0, 176, 9, 50, 0, 240, 62, 49, 29, 34, 5, 104, 0, 176, 74, 50,
-			0, 240, 62, 49, 30, 34, 5, 104, 0, 176, 139, 50, 0, 240, 62, 49, 31, 34, 5, 104, 0, 176, 204, 50, 0, 240, 62, 49, 32, 34,
-			5, 104, 0, 176, 13, 51, 0, 240, 62, 49, 33, 34, 5, 104, 0, 176, 78, 51, 0, 240, 62, 49, 0, 176, 143, 51, 0, 240, 62, 49,
-			0, 161, 213, 3, 77, 5, 98, 170, 0, 162, 18, 34, 77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52,
-			0, 240, 50, 52, 0, 176, 60, 53, 0, 240, 109, 53, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170, 1, 47,
-			0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47, 64, 246, 244, 53, 0, 176,
-			60, 53, 64, 246, 244, 53, 0, 161, 213, 3, 81, 9, 238, 188, 0, 162, 18, 34, 81, 9, 46, 173, 1, 47, 0, 176, 173, 54, 133, 41,
-			5, 104, 0, 176, 222, 54, 0, 240, 15, 55, 0, 176, 157, 57, 0, 240, 206, 57, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9,
-			246, 221, 0, 162, 18, 2, 85, 9, 246, 221, 1, 47, 0, 176, 173, 54, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 222, 54, 0, 240,
-			15, 55, 0, 176, 157, 57, 0, 240, 209, 58, 133, 41, 5, 104, 0, 176, 222, 54, 0, 240, 15, 55, 0, 176, 157, 57, 0, 240, 209, 58,
-			0, 161, 227, 83, 85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 1, 47, 0, 176, 233, 59, 2, 47, 11, 104, 133, 41, 5, 104,
-			0, 176, 26, 60, 48, 242, 206, 57, 0, 176, 75, 60, 208, 242, 206, 57, 133, 41, 5, 104, 0, 176, 124, 60, 48, 242, 206, 57, 0, 176,
-			173, 60, 208, 242, 206, 57, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 1, 47, 0, 176, 222, 60, 133, 41,
-			5, 104, 0, 176, 15, 61, 0, 240, 64, 61, 0, 176, 48, 62, 96, 249, 97, 62, 0, 161, 25, 3, 173, 9, 84, 90, 0, 162, 25, 18,
-			13, 9, 84, 73, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 3, 63, 0, 240, 52, 63, 0, 176, 116, 65, 0, 240, 52, 63, 133, 41,
-			5, 104, 0, 176, 165, 65, 0, 240, 52, 63, 0, 176, 214, 65, 0, 240, 52, 63, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18,
-			9, 1, 84, 73, 2, 47, 15, 104, 0, 162, 25, 50, 9, 5, 84, 73, 133, 41, 5, 104, 0, 176, 3, 63, 0, 240, 52, 63, 0, 176,
-			7, 66, 96, 249, 52, 63, 133, 41, 5, 104, 0, 176, 165, 65, 0, 240, 52, 63, 134, 40, 3, 43, 35, 10, 0, 176, 56, 66, 0, 240,
-			52, 63, 2, 13, 139, 202, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 121, 66, 0, 176,
-			170, 66, 0, 162, 25, 18, 13, 1, 98, 170, 2, 47, 0, 161, 25, 3, 15, 0, 90, 170, 133, 41, 5, 104, 0, 176, 235, 66, 0, 240,
-			28, 67, 0, 176, 94, 69, 0, 240, 28, 67, 0, 162, 25, 18, 13, 1, 98, 170, 2, 47, 9, 104, 0, 161, 25, 3, 15, 0, 92, 170,
-			0, 162, 25, 50, 13, 5, 92, 170, 133, 41, 5, 104, 0, 176, 143, 69, 96, 244, 192, 69, 0, 176, 109, 72, 80, 245, 192, 69, 0, 161,
-			25, 3, 75, 1, 232, 171, 0, 162, 18, 34, 75, 9, 232, 171, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 158, 72, 0, 240, 207, 72,
-			0, 176, 41, 75, 32, 248, 207, 72, 133, 41, 5, 104, 0, 176, 90, 75, 0, 240, 207, 72, 0, 176, 139, 75, 32, 248, 207, 72, 2, 13,
-			144, 202, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 34, 73, 9, 100, 171, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 158, 72,
-			0, 240, 188, 75, 0, 176, 41, 75, 0, 240, 188, 75, 133, 41, 5, 104, 0, 176, 90, 75, 0, 240, 188, 75, 0, 176, 139, 75, 0, 240,
-			188, 75, 2, 13, 145, 202, 0, 161, 35, 83, 85, 9, 246, 221, 0, 162, 18, 34, 73, 9, 46, 173, 133, 41, 5, 104, 0, 176, 224, 77,
-			0, 245, 17, 78, 0, 176, 210, 80, 0, 245, 3, 81, 2, 13, 145, 202, 0, 161, 35, 83, 85, 9, 246, 221, 0, 162, 18, 34, 73, 9,
-			46, 173, 133, 41, 5, 104, 0, 176, 224, 77, 0, 240, 81, 83, 0, 176, 210, 80, 0, 245, 3, 86, 2, 13, 157, 202, 0, 161, 25, 3,
-			51, 5, 246, 221, 0, 162, 50, 18, 51, 5, 246, 221, 0, 176, 80, 88, 144, 241, 145, 88, 0, 161, 25, 3, 77, 9, 238, 188, 0, 162,
-			18, 34, 73, 9, 46, 173, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 87, 90, 0, 240, 136, 90, 0, 176, 139, 92, 0, 240, 188, 92,
-			133, 41, 5, 104, 0, 176, 191, 94, 0, 240, 136, 90, 0, 176, 240, 94, 0, 240, 188, 92, 0, 161, 25, 3, 83, 9, 246, 221, 0, 162,
-			18, 34, 83, 9, 54, 220, 133, 41, 5, 104, 0, 176, 191, 94, 0, 240, 136, 90, 0, 176, 240, 94, 0, 240, 188, 92, 2, 13, 129, 202,
-			133, 41, 5, 104, 0, 176, 33, 95, 192, 243, 98, 95, 0, 176, 33, 95, 0, 245, 98, 95, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162,
-			210, 18, 73, 1, 84, 65, 133, 41, 0, 192, 33, 98, 34, 34, 96, 196, 37, 100, 51, 50, 52, 34, 0, 192, 37, 100, 14, 34, 0, 192,
-			55, 101, 55, 34, 0, 192, 2, 102, 0, 192, 0, 103, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41,
-			0, 192, 220, 103, 34, 50, 51, 50, 52, 34, 0, 192, 12, 105, 14, 34, 32, 195, 228, 106, 160, 197, 232, 107, 0, 161, 21, 28, 77, 5,
-			158, 162, 0, 162, 146, 18, 77, 1, 94, 162, 133, 41, 48, 194, 228, 106, 96, 196, 245, 108, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41,
-			0, 192, 220, 109, 0, 192, 44, 112, 3, 13, 201, 116, 0, 149, 0, 161, 227, 83, 85, 1, 246, 221, 133, 41, 0, 192, 188, 113, 0, 192,
-			188, 113, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 125, 115, 96, 201, 144, 116, 0, 161,
-			213, 3, 75, 1, 238, 172, 0, 162, 146, 18, 75, 1, 110, 189, 2, 47, 0, 162, 146, 18, 75, 1, 238, 172, 133, 41, 0, 192, 60, 117,
-			34, 50, 51, 50, 52, 34, 0, 192, 107, 118, 31, 50, 38, 34, 0, 192, 251, 119, 55, 34, 0, 192, 109, 121, 14, 34, 96, 196, 249, 122,
-			0, 192, 46, 124, 6, 161, 213, 19, 73, 5, 226, 155, 2, 162, 146, 20, 73, 5, 98, 155, 133, 41, 128, 194, 99, 125, 33, 34, 0, 197,
-			190, 125, 0, 195, 99, 125, 0, 162, 18, 2, 75, 1, 84, 65, 0, 41, 0, 192, 6, 126, 0, 192, 186, 128, 0, 161, 25, 3, 77, 1,
-			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 0, 192, 182, 130, 0, 192, 214, 132, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162,
-			146, 18, 77, 1, 98, 162, 0, 41, 0, 192, 192, 69, 48, 50, 47, 50, 49, 34, 0, 192, 252, 134, 0, 192, 40, 137, 0, 161, 25, 3,
-			77, 1, 106, 172, 0, 162, 18, 2, 77, 1, 106, 172, 0, 41, 0, 192, 16, 139, 0, 192, 188, 141, 2, 13, 130, 202, 0, 161, 25, 3,
-			73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 0, 41, 192, 195, 40, 144, 160, 197, 40, 144, 2, 13, 130, 202, 0, 161, 35, 83,
-			51, 5, 246, 221, 0, 162, 35, 82, 51, 5, 246, 221, 0, 41, 0, 192, 17, 78, 0, 192, 3, 81, 2, 13, 149, 201, 0, 161, 35, 83,
-			51, 5, 246, 221, 0, 162, 18, 66, 51, 5, 246, 221, 0, 41, 0, 192, 81, 83, 0, 192, 3, 86, 2, 13, 172, 201, 6, 106, 0, 208,
-			238, 21, 0, 208, 31, 22, 0, 208, 64, 22, 96, 223, 97, 22, 0, 208, 146, 22, 0, 208, 211, 22, 2, 39, 128, 237, 171, 24, 192, 195,
-			143, 146, 0, 161, 25, 3, 51, 1, 246, 221, 0, 162, 146, 18, 51, 1, 246, 221, 0, 41, 0, 192, 32, 149, 0, 192, 145, 88, 0, 161,
-			25, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 0, 41, 128, 199, 106, 151, 144, 193, 195, 153, 0, 41, 96, 196, 98, 95,
-			0, 192, 98, 95, 1, 13, 0, 104, 28, 34, 0, 192, 8, 156, 29, 34, 0, 192, 93, 157, 30, 34, 0, 192, 252, 158, 31, 34, 0, 192,
-			161, 160, 32, 34, 0, 192, 7, 162, 33, 34, 0, 192, 182, 163, 96, 196, 127, 165, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18,
-			77, 1, 98, 162, 133, 41, 0, 192, 42, 167, 0, 192, 130, 169, 0, 161, 217, 19, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170,
-			1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 143, 69, 192, 243, 42, 167, 0, 176, 25, 172, 192, 248, 130, 169, 0, 161, 213, 3,
-			75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 55, 34, 0, 192, 2, 102, 87, 41, 0, 192, 37, 100, 133, 41, 0, 197, 74, 172,
-			0, 192, 55, 101, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 133, 41, 0, 192, 33, 98, 55, 34, 0, 192,
-			2, 102, 0, 192, 153, 172, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 220, 103, 0, 192,
-			218, 173, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 18, 2, 85, 33, 246, 221, 133, 41, 0, 192, 107, 174, 160, 197, 156, 175, 0, 161,
-			213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195, 249, 122, 192, 195, 249, 122, 0, 161, 213, 3, 76, 1,
-			238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195, 105, 176, 55, 34, 0, 192, 109, 121, 160, 197, 105, 176, 0, 161, 25, 3,
-			77, 1, 98, 170, 133, 41, 0, 192, 192, 69, 0, 192, 42, 178, 128, 40, 4, 104, 108, 1, 0, 176, 22, 180, 0, 176, 87, 180, 0, 176,
-			22, 180, 0, 176, 248, 0, 0, 176, 152, 180, 38, 5, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 58, 181, 0, 176, 123, 181, 0, 176,
-			188, 181, 0, 176, 253, 181, 0, 176, 78, 182, 0, 176, 143, 182, 0, 176, 240, 182, 0, 176, 65, 183, 0, 176, 162, 183, 0, 176, 243, 183,
-			0, 176, 68, 184, 0, 176, 165, 184, 0, 176, 22, 185, 0, 145, 93, 1, 2, 41, 0, 176, 103, 185, 1, 0, 0, 161, 213, 3, 75, 1,
-			84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 133, 41, 0, 197, 74, 172, 87, 41, 0, 192, 37, 100, 55, 34, 0, 192, 2, 102, 0, 192,
-			55, 101, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 224, 193, 228, 106, 192, 195, 152, 185, 0, 161,
-			213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240,
-			50, 52, 87, 41, 5, 104, 0, 176, 100, 47, 224, 246, 244, 53, 0, 176, 60, 53, 224, 246, 244, 53, 0, 161, 213, 3, 77, 1, 238, 188,
-			0, 162, 146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 60, 117, 87, 41, 0, 192, 107, 118, 31, 50, 38, 34, 0, 192, 251, 119, 55, 34,
-			0, 192, 109, 121, 96, 196, 249, 122, 47, 1, 1, 0, 2, 13, 190, 201, 0, 161, 213, 3, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9,
-			98, 170, 2, 47, 9, 104, 1, 47, 3, 104, 0, 176, 46, 186, 0, 176, 95, 186, 96, 244, 109, 53, 1, 47, 0, 176, 144, 186, 0, 176,
-			193, 186, 96, 244, 109, 53, 140, 39, 72, 1, 2, 96, 47, 1, 1, 0, 140, 39, 88, 1, 2, 96, 89, 1, 1, 0, 2, 43, 3, 0,
-			8, 104, 2, 55, 57, 48, 58, 32, 3, 104, 59, 1, 2, 96, 56, 1, 0, 145, 208, 0, 1, 0, 0, 161, 213, 3, 73, 9, 238, 172,
-			0, 162, 18, 34, 73, 9, 46, 173, 1, 47, 0, 176, 222, 60, 133, 41, 5, 104, 0, 176, 15, 61, 0, 240, 242, 186, 0, 176, 48, 62,
-			0, 240, 242, 186, 2, 13, 185, 201, 6, 106, 0, 208, 226, 187, 0, 208, 19, 188, 0, 208, 68, 188, 0, 208, 133, 188, 0, 208, 182, 188,
-			0, 208, 231, 188, 2, 39, 64, 236, 236, 5, 0, 176, 95, 6, 69, 39, 113, 3, 140, 39, 3, 0, 89, 1, 88, 1, 1, 0, 44, 5,
-			136, 40, 0, 176, 24, 189, 0, 176, 85, 0, 0, 145, 127, 7, 2, 13, 153, 201, 1, 0, 2, 41, 113, 1, 0, 176, 85, 0, 2, 57,
-			0, 41, 117, 1, 0, 176, 85, 0, 3, 13, 153, 201, 0, 108, 0, 145, 194, 0, 0, 176, 89, 189, 119, 16, 129, 40, 0, 176, 138, 189,
-			0, 176, 183, 0, 2, 13, 144, 201, 0, 176, 203, 189, 1, 13, 0, 97, 44, 5, 0, 176, 183, 0, 113, 16, 0, 176, 12, 190, 38, 5,
-			0, 176, 77, 190, 38, 5, 0, 176, 142, 190, 38, 5, 113, 1, 1, 0, 2, 13, 170, 201, 38, 5, 0, 176, 207, 190, 13, 16, 0, 176,
-			16, 191, 13, 16, 0, 176, 81, 191, 0, 176, 146, 191, 44, 5, 0, 176, 211, 191, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 211, 191,
-			44, 5, 13, 16, 0, 176, 52, 192, 38, 5, 58, 32, 0, 208, 133, 192, 0, 176, 198, 192, 13, 16, 0, 176, 23, 193, 13, 16, 0, 176,
-			23, 193, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 23, 193, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 23, 193, 59, 34, 0, 176,
-			104, 193, 57, 37, 90, 10, 0, 176, 185, 193, 0, 176, 10, 194, 4, 13, 153, 201, 138, 202, 0, 176, 107, 194, 29, 34, 38, 4, 0, 176,
-			204, 194, 0, 176, 68, 184, 0, 176, 61, 195, 44, 5, 0, 176, 152, 180, 44, 5, 0, 176, 174, 195, 44, 5, 0, 176, 174, 195, 44, 5,
-			129, 40, 0, 176, 15, 196, 0, 176, 96, 196, 44, 5, 0, 176, 193, 196, 144, 1, 1, 0, 44, 5, 0, 176, 50, 197, 4, 13, 153, 201,
-			185, 201, 44, 36, 3, 104, 2, 13, 153, 201, 44, 5, 0, 176, 147, 197, 4, 13, 140, 202, 185, 201, 44, 36, 3, 104, 2, 13, 140, 202,
-			44, 5, 0, 176, 228, 197, 0, 176, 233, 180, 0, 176, 53, 198, 0, 176, 134, 198, 0, 176, 248, 0, 0, 176, 215, 198, 111, 5, 0, 145,
-			82, 2, 1, 0, 2, 13, 153, 201, 44, 5, 0, 176, 8, 199, 119, 16, 0, 176, 183, 0, 113, 16, 0, 176, 57, 199, 38, 5, 0, 176,
-			122, 199, 38, 5, 0, 176, 122, 199, 38, 5, 0, 176, 187, 199, 13, 16, 0, 176, 252, 199, 2, 13, 138, 202, 13, 16, 0, 176, 61, 200,
-			0, 176, 146, 191, 2, 13, 144, 201, 44, 5, 0, 176, 203, 189, 44, 5, 0, 176, 126, 200, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176,
-			126, 200, 1, 13, 0, 97, 0, 176, 183, 0, 44, 5, 13, 16, 0, 176, 207, 200, 38, 5, 58, 32, 0, 208, 133, 192, 0, 176, 57, 1,
-			44, 5, 13, 16, 0, 176, 32, 201, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 113, 201, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176,
-			113, 201, 13, 16, 0, 176, 23, 193, 0, 176, 178, 201, 4, 13, 166, 195, 138, 202, 0, 176, 3, 202, 3, 13, 203, 111, 0, 144, 0, 176,
-			233, 180, 0, 176, 84, 202, 3, 13, 203, 101, 0, 144, 0, 176, 248, 0, 0, 176, 61, 195, 44, 5, 0, 176, 181, 202, 44, 5, 0, 176,
-			6, 203, 44, 5, 0, 176, 96, 196, 44, 5, 0, 176, 193, 196, 144, 1, 1, 0, 44, 5, 0, 176, 50, 197, 2, 13, 154, 201, 44, 5,
-			0, 176, 119, 203, 87, 41, 114, 1, 0, 176, 184, 203, 0, 176, 233, 203, 2, 41, 113, 1, 0, 176, 233, 203, 3, 13, 153, 201, 0, 108,
-			0, 176, 89, 189, 2, 13, 166, 195, 119, 16, 8, 41, 0, 176, 26, 204, 0, 176, 107, 204, 2, 13, 144, 201, 0, 176, 203, 189, 113, 16,
-			0, 176, 172, 204, 38, 5, 113, 16, 0, 176, 142, 190, 38, 5, 0, 176, 237, 204, 0, 176, 46, 205, 38, 5, 0, 176, 111, 205, 4, 13,
-			145, 201, 144, 203, 13, 16, 34, 34, 130, 1, 0, 176, 176, 205, 13, 16, 0, 176, 241, 205, 0, 176, 50, 206, 34, 34, 0, 176, 115, 206,
-			0, 176, 176, 205, 6, 13, 145, 201, 144, 203, 185, 201, 44, 34, 4, 104, 4, 13, 145, 201, 144, 203, 130, 10, 44, 5, 0, 176, 115, 206,
-			44, 5, 0, 176, 212, 206, 38, 5, 0, 176, 198, 192, 13, 16, 34, 34, 0, 176, 37, 207, 0, 176, 118, 207, 6, 13, 148, 201, 144, 203,
-			185, 201, 34, 36, 4, 104, 4, 13, 148, 201, 144, 203, 34, 5, 0, 176, 37, 207, 5, 13, 203, 111, 201, 144, 0, 185, 34, 36, 4, 104,
-			3, 13, 203, 111, 0, 144, 34, 5, 0, 176, 183, 207, 13, 16, 0, 176, 8, 208, 0, 176, 73, 208, 0, 176, 154, 208, 0, 176, 235, 208,
-			29, 50, 32, 34, 38, 4, 0, 176, 60, 209, 0, 176, 157, 209, 0, 176, 238, 209, 4, 13, 155, 201, 185, 201, 34, 36, 3, 104, 2, 13,
-			155, 201, 34, 5, 0, 176, 63, 210, 0, 176, 174, 195, 4, 13, 170, 201, 185, 201, 34, 36, 3, 104, 2, 13, 170, 201, 34, 5, 0, 176,
-			160, 210, 4, 13, 138, 202, 185, 201, 44, 36, 3, 104, 2, 13, 138, 202, 44, 5, 0, 176, 1, 211, 5, 13, 201, 97, 201, 170, 0, 153,
-			44, 5, 0, 176, 82, 211, 5, 13, 201, 97, 201, 170, 0, 154, 44, 5, 0, 176, 179, 211, 7, 13, 201, 97, 202, 170, 201, 138, 0, 185,
-			34, 36, 5, 104, 5, 13, 201, 97, 202, 170, 0, 138, 34, 5, 0, 176, 20, 212, 2, 60, 50, 37, 9, 104, 2, 43, 129, 41, 6, 104,
-			50, 35, 135, 42, 2, 104, 2, 96, 25, 1, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192,
-			220, 103, 34, 50, 51, 50, 52, 34, 0, 192, 12, 105, 14, 34, 32, 195, 228, 106, 160, 197, 232, 107, 44, 5, 0, 176, 215, 198, 2, 41,
-			13, 1, 44, 5, 0, 41, 0, 176, 228, 197, 0, 176, 133, 212, 2, 41, 113, 1, 0, 176, 215, 198, 2, 57, 0, 41, 117, 1, 0, 176,
-			215, 198, 119, 16, 154, 18, 0, 176, 198, 212, 119, 16, 0, 176, 198, 212, 2, 13, 144, 201, 44, 5, 0, 176, 22, 180, 2, 13, 58, 97,
-			44, 5, 0, 176, 198, 212, 113, 16, 0, 176, 7, 213, 59, 34, 5, 104, 32, 238, 210, 25, 0, 176, 215, 198, 0, 176, 72, 213, 0, 145,
-			177, 9, 1, 0, 1, 13, 0, 101, 38, 5, 0, 176, 137, 213, 13, 16, 0, 176, 202, 213, 13, 16, 0, 176, 11, 214, 2, 13, 137, 202,
-			0, 176, 76, 214, 2, 13, 58, 97, 44, 5, 34, 34, 4, 104, 125, 10, 0, 176, 141, 214, 0, 176, 198, 212, 3, 13, 203, 97, 0, 144,
-			34, 4, 0, 176, 141, 214, 148, 18, 1, 13, 0, 101, 34, 4, 0, 176, 254, 214, 38, 5, 58, 32, 0, 208, 133, 192, 7, 57, 0, 41,
-			90, 10, 0, 176, 79, 215, 13, 16, 34, 34, 0, 176, 183, 207, 0, 176, 122, 1, 2, 13, 148, 201, 34, 4, 0, 176, 144, 215, 1, 13,
-			0, 111, 34, 4, 0, 176, 209, 215, 13, 16, 0, 176, 118, 207, 4, 13, 137, 202, 144, 203, 7, 41, 100, 10, 0, 41, 4, 104, 100, 10,
-			0, 176, 76, 214, 0, 176, 50, 216, 4, 13, 140, 202, 137, 202, 0, 176, 115, 216, 3, 13, 203, 111, 0, 144, 0, 176, 196, 216, 2, 57,
-			7, 41, 155, 1, 59, 34, 0, 176, 21, 217, 0, 176, 118, 217, 0, 176, 118, 217, 3, 13, 203, 101, 0, 144, 0, 176, 215, 217, 0, 176,
-			24, 218, 1, 13, 0, 101, 34, 4, 0, 176, 254, 214, 2, 13, 170, 201, 34, 4, 0, 176, 121, 218, 4, 13, 137, 202, 185, 201, 44, 34,
-			3, 104, 2, 13, 137, 202, 120, 10, 44, 5, 0, 176, 202, 218, 44, 5, 0, 176, 50, 197, 44, 5, 0, 176, 21, 217, 144, 1, 1, 0,
-			3, 13, 153, 201, 0, 108, 0, 145, 194, 0, 0, 176, 27, 219, 0, 176, 0, 0, 138, 41, 46, 1, 0, 145, 72, 0, 1, 0, 44, 5,
-			136, 40, 0, 176, 92, 219, 0, 176, 85, 0, 0, 145, 79, 10, 2, 13, 153, 201, 1, 0, 2, 41, 113, 1, 0, 176, 92, 219, 2, 57,
-			0, 41, 117, 1, 0, 176, 92, 219, 2, 13, 166, 195, 119, 16, 0, 176, 141, 219, 113, 16, 0, 176, 206, 219, 38, 5, 0, 176, 122, 199,
-			38, 5, 0, 176, 122, 199, 38, 5, 0, 176, 111, 205, 13, 16, 0, 176, 118, 207, 13, 16, 0, 176, 15, 220, 0, 176, 80, 220, 2, 13,
-			144, 201, 44, 5, 0, 176, 92, 219, 44, 5, 0, 176, 145, 220, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 145, 220, 4, 13, 145, 201,
-			144, 203, 0, 176, 145, 220, 13, 16, 44, 5, 0, 176, 226, 220, 38, 5, 58, 32, 0, 208, 133, 192, 0, 176, 57, 1, 13, 16, 44, 5,
-			0, 176, 32, 201, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 32, 201, 13, 16, 0, 176, 23, 193, 0, 176, 51, 221, 0, 176, 116, 221,
-			4, 13, 153, 201, 138, 202, 0, 176, 213, 221, 29, 50, 32, 34, 38, 4, 0, 176, 38, 222, 0, 176, 151, 222, 0, 176, 232, 222, 44, 5,
-			0, 176, 73, 223, 44, 5, 0, 176, 154, 223, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 251, 223, 44, 5, 0, 176, 193, 196, 144, 1,
-			1, 0, 44, 5, 0, 176, 60, 224, 111, 5, 0, 145, 82, 2, 1, 0, 119, 16, 0, 176, 183, 0, 113, 16, 0, 176, 248, 0, 38, 5,
-			55, 50, 59, 34, 0, 176, 122, 199, 0, 176, 157, 224, 38, 5, 0, 176, 57, 1, 13, 16, 0, 176, 58, 181, 2, 13, 138, 202, 13, 16,
-			0, 176, 61, 200, 23, 5, 0, 176, 146, 191, 2, 13, 144, 201, 0, 176, 203, 189, 44, 5, 0, 176, 126, 200, 4, 13, 145, 201, 144, 203,
-			44, 5, 0, 176, 126, 200, 1, 13, 0, 97, 0, 176, 183, 0, 13, 16, 44, 5, 0, 176, 78, 182, 2, 13, 105, 101, 38, 5, 0, 176,
-			206, 224, 13, 16, 44, 5, 0, 176, 32, 201, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 32, 201, 13, 16, 0, 176, 32, 201, 3, 13,
-			153, 201, 0, 117, 0, 176, 31, 225, 4, 13, 166, 195, 138, 202, 0, 176, 3, 202, 4, 13, 140, 202, 138, 202, 0, 176, 112, 225, 4, 13,
-			148, 201, 170, 201, 0, 176, 232, 222, 3, 13, 203, 101, 0, 144, 0, 176, 209, 225, 3, 13, 201, 111, 0, 170, 0, 176, 165, 184, 4, 13,
-			156, 201, 144, 203, 44, 5, 0, 176, 52, 192, 44, 5, 0, 176, 34, 226, 44, 5, 0, 176, 96, 196, 44, 5, 0, 176, 131, 226, 144, 1,
-			1, 0, 44, 5, 0, 176, 50, 197, 44, 5, 0, 176, 244, 226, 2, 41, 113, 1, 0, 176, 244, 226, 0, 176, 87, 180, 113, 16, 0, 176,
-			248, 0, 38, 5, 0, 176, 157, 224, 38, 5, 0, 176, 157, 224, 38, 5, 0, 176, 57, 1, 0, 176, 8, 208, 0, 176, 58, 181, 0, 176,
-			53, 227, 0, 176, 22, 180, 0, 176, 87, 180, 44, 5, 0, 176, 87, 180, 0, 176, 87, 180, 44, 5, 0, 176, 58, 181, 38, 5, 0, 176,
-			118, 227, 0, 176, 122, 1, 44, 5, 0, 176, 122, 1, 44, 5, 0, 176, 183, 227, 0, 176, 122, 1, 0, 176, 187, 1, 0, 176, 8, 228,
-			0, 176, 233, 180, 0, 176, 162, 183, 0, 176, 248, 0, 0, 176, 24, 218, 44, 5, 0, 176, 254, 214, 44, 5, 0, 176, 89, 228, 46, 34,
-			4, 104, 95, 10, 0, 176, 170, 228, 0, 176, 219, 228, 2, 13, 144, 201, 0, 176, 81, 191, 0, 176, 12, 229, 2, 13, 153, 201, 46, 34,
-			4, 104, 95, 10, 0, 176, 170, 228, 0, 176, 77, 229, 0, 176, 126, 229, 0, 176, 175, 229, 0, 176, 224, 229, 59, 34, 32, 238, 17, 230,
-			0, 176, 66, 230, 59, 34, 32, 238, 17, 230, 0, 176, 66, 230, 3, 13, 153, 201, 0, 108, 0, 176, 89, 189, 0, 176, 115, 230, 3, 13,
-			201, 105, 0, 153, 0, 176, 180, 230, 38, 5, 0, 176, 21, 231, 4, 13, 138, 202, 153, 201, 0, 176, 86, 231, 0, 176, 183, 231, 0, 176,
-			248, 231, 0, 176, 105, 232, 38, 5, 0, 176, 202, 232, 38, 5, 0, 176, 43, 233, 4, 13, 155, 201, 170, 201, 38, 5, 0, 176, 156, 233,
-			38, 5, 0, 176, 237, 233, 4, 13, 138, 202, 170, 201, 38, 5, 0, 176, 94, 234, 38, 5, 0, 176, 207, 234, 38, 5, 0, 176, 48, 235,
-			0, 176, 145, 235, 0, 176, 10, 194, 0, 176, 248, 0, 0, 176, 32, 201, 0, 176, 52, 192, 0, 176, 226, 235, 0, 176, 51, 236, 0, 176,
-			116, 236, 0, 161, 25, 3, 173, 1, 238, 188, 0, 162, 146, 18, 173, 1, 110, 189, 192, 195, 197, 236, 0, 161, 25, 3, 64, 9, 118, 90,
-			0, 162, 18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 198, 4, 16, 223, 247, 4, 16, 223, 40, 5, 16, 223, 89, 5, 16, 223, 138, 5,
-			16, 223, 187, 5, 2, 39, 224, 236, 236, 5, 0, 176, 254, 13, 64, 246, 218, 16, 13, 48, 109, 32, 2, 104, 5, 96, 0, 176, 233, 11,
-			0, 240, 177, 6, 1, 0, 0, 161, 213, 3, 83, 1, 246, 221, 0, 162, 146, 18, 83, 1, 246, 221, 0, 192, 251, 119, 0, 176, 183, 0,
-			0, 176, 27, 239, 2, 13, 168, 201, 0, 176, 92, 239, 0, 176, 46, 205, 0, 176, 202, 213, 0, 176, 123, 181, 0, 176, 85, 0, 109, 18,
-			0, 176, 57, 1, 4, 13, 168, 201, 144, 203, 110, 18, 0, 176, 157, 239, 112, 18, 0, 176, 187, 1, 108, 18, 0, 176, 248, 0, 111, 18,
-			0, 176, 222, 239, 35, 18, 0, 176, 211, 191, 4, 13, 145, 201, 168, 201, 0, 176, 43, 233, 0, 176, 204, 194, 3, 13, 201, 97, 0, 168,
-			0, 176, 204, 194, 0, 176, 143, 182, 0, 176, 156, 233, 4, 13, 153, 201, 168, 201, 0, 176, 156, 233, 0, 176, 240, 182, 0, 176, 47, 240,
-			3, 13, 168, 201, 0, 117, 0, 176, 47, 240, 0, 176, 61, 195, 4, 13, 148, 201, 168, 201, 0, 176, 61, 195, 0, 176, 128, 240, 3, 13,
-			201, 117, 0, 168, 0, 176, 128, 240, 0, 161, 25, 3, 75, 1, 96, 170, 0, 162, 18, 34, 75, 9, 96, 170, 0, 176, 10, 12, 16, 244,
-			59, 12, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 1, 47, 0, 176, 222, 60, 133, 41, 5, 104, 0, 176,
-			15, 61, 192, 248, 64, 61, 0, 176, 48, 62, 96, 249, 97, 62, 34, 34, 5, 104, 2, 42, 2, 104, 2, 96, 108, 1, 0, 176, 184, 203,
-			139, 40, 105, 10, 0, 176, 203, 189, 87, 41, 62, 10, 0, 176, 183, 0, 16, 34, 67, 10, 0, 176, 12, 229, 13, 16, 16, 34, 67, 10,
-			0, 176, 12, 229, 16, 34, 67, 10, 38, 5, 0, 176, 122, 199, 0, 176, 122, 199, 16, 34, 67, 10, 0, 176, 122, 1, 16, 34, 67, 10,
-			34, 34, 5, 104, 2, 42, 2, 104, 2, 96, 115, 1, 0, 176, 188, 181, 0, 176, 225, 240, 35, 17, 0, 176, 225, 240, 58, 32, 0, 208,
-			133, 192, 0, 176, 50, 241, 111, 18, 58, 32, 0, 208, 133, 192, 0, 176, 50, 241, 0, 176, 187, 1, 0, 176, 115, 241, 0, 176, 212, 241,
-			0, 176, 68, 184, 0, 176, 165, 184, 0, 176, 37, 242, 0, 176, 215, 217, 0, 176, 233, 180, 0, 176, 253, 181, 2, 13, 143, 202, 16, 34,
-			57, 10, 0, 176, 102, 242, 0, 176, 78, 182, 16, 34, 80, 10, 0, 176, 175, 229, 2, 13, 102, 112, 0, 162, 18, 2, 75, 1, 84, 65,
-			0, 192, 186, 128, 140, 43, 81, 1, 2, 96, 99, 1, 1, 0, 2, 41, 55, 1, 6, 108, 64, 236, 4, 23, 128, 237, 69, 23, 32, 238,
-			134, 23, 32, 238, 183, 23, 128, 237, 248, 23, 128, 237, 73, 24, 0, 176, 167, 242, 2, 41, 21, 104, 6, 106, 0, 208, 82, 32, 0, 208,
-			147, 32, 0, 208, 212, 32, 0, 208, 21, 33, 0, 208, 70, 33, 0, 208, 151, 33, 32, 238, 200, 33, 0, 39, 3, 104, 0, 176, 200, 242,
-			7, 96, 0, 162, 35, 18, 0, 0, 0, 0, 0, 176, 10, 34, 1, 0, 14, 37, 2, 104, 11, 96, 2, 43, 9, 104, 2, 44, 3, 104,
-			51, 1, 5, 96, 47, 37, 2, 104, 2, 96, 14, 3, 92, 39, 1, 1, 0, 145, 137, 2, 1, 0, 2, 13, 128, 202, 2, 43, 5, 104,
-			0, 176, 235, 17, 32, 243, 44, 18, 92, 39, 3, 104, 1, 1, 2, 96, 136, 1, 1, 0, 2, 43, 34, 1, 2, 13, 144, 201, 29, 48,
-			109, 32, 0, 176, 233, 242, 33, 32, 0, 176, 26, 243, 0, 176, 75, 243, 4, 13, 138, 202, 144, 201, 0, 176, 124, 243, 0, 176, 205, 243,
-			55, 1, 1, 0, 139, 34, 48, 1, 0, 145, 193, 2, 1, 0, 139, 34, 47, 1, 0, 145, 12, 3, 1, 0, 139, 34, 49, 1, 0, 145,
-			150, 3, 1, 0, 0, 176, 87, 180, 0, 176, 12, 229, 38, 5, 0, 176, 57, 1, 136, 40, 0, 176, 233, 180, 0, 176, 32, 201, 0, 176,
-			187, 1, 0, 176, 143, 182, 0, 176, 240, 182, 0, 176, 162, 183, 0, 176, 34, 244, 0, 176, 237, 233, 0, 176, 22, 185, 0, 176, 12, 229,
-			0, 176, 12, 229, 38, 5, 108, 17, 0, 176, 115, 244, 38, 5, 0, 176, 92, 239, 0, 176, 12, 229, 0, 176, 141, 219, 0, 176, 180, 244,
-			0, 176, 8, 208, 0, 176, 32, 201, 0, 176, 78, 182, 0, 176, 123, 181, 0, 176, 245, 244, 0, 176, 54, 245, 0, 176, 253, 181, 0, 176,
-			119, 245, 0, 176, 216, 245, 0, 176, 61, 195, 0, 176, 34, 244, 0, 176, 41, 246, 0, 176, 122, 246, 0, 176, 203, 246, 0, 176, 28, 247,
-			0, 176, 125, 247, 0, 176, 206, 247, 0, 176, 31, 248, 0, 176, 128, 248, 0, 176, 209, 248, 0, 176, 34, 249, 0, 176, 115, 249, 0, 176,
-			196, 249, 0, 176, 89, 228, 0, 176, 21, 250, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170,
-			0, 176, 102, 250, 32, 243, 63, 14, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 165, 65,
-			0, 176, 56, 66, 0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18, 79, 9, 98, 155, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104,
-			0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47, 192, 243, 244, 53, 0, 176, 60, 53, 192, 243, 244, 53, 28, 34,
-			0, 192, 8, 156, 29, 34, 0, 192, 93, 157, 30, 34, 0, 192, 252, 158, 31, 34, 0, 192, 161, 160, 32, 34, 96, 196, 167, 250, 33, 34,
-			0, 197, 167, 250, 96, 196, 127, 165, 0, 176, 180, 244, 0, 176, 227, 252, 0, 176, 176, 205, 0, 176, 72, 213, 0, 176, 36, 253, 0, 176,
-			101, 253, 0, 176, 166, 253, 0, 176, 231, 253, 0, 176, 92, 239, 0, 176, 40, 254, 0, 176, 251, 223, 0, 176, 233, 180, 0, 176, 58, 181,
-			0, 176, 105, 254, 0, 176, 170, 254, 0, 176, 235, 254, 0, 176, 44, 255, 0, 176, 109, 255, 0, 176, 141, 219, 0, 176, 141, 219, 0, 176,
-			78, 182, 0, 176, 78, 182, 0, 176, 253, 181, 0, 176, 253, 181, 0, 176, 216, 245, 0, 176, 174, 255, 0, 176, 203, 246, 0, 161, 25, 3,
-			169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 165, 65, 0, 176, 56, 66, 0, 161, 21, 29, 77, 5, 158, 162,
-			0, 162, 146, 18, 77, 1, 94, 162, 133, 41, 192, 195, 228, 106, 0, 197, 245, 108, 0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18,
-			79, 9, 98, 155, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47,
-			192, 243, 244, 53, 0, 176, 60, 53, 192, 243, 244, 53, 50, 34, 5, 104, 0, 176, 144, 6, 0, 240, 177, 6, 0, 176, 233, 11, 0, 240,
-			177, 6, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 0, 41, 0, 192, 249, 122, 31, 50, 61, 34, 128, 194,
-			251, 119, 55, 34, 128, 194, 109, 121, 34, 34, 128, 194, 107, 118, 49, 34, 160, 192, 249, 122, 64, 193, 249, 122, 28, 34, 0, 192, 8, 156,
-			29, 34, 0, 192, 93, 157, 30, 34, 0, 192, 252, 158, 31, 34, 0, 192, 161, 160, 32, 34, 0, 192, 7, 162, 33, 34, 0, 192, 182, 163,
-			96, 196, 127, 165, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 255, 255, 0, 161, 227, 83, 85, 1,
-			246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 192, 195, 125, 115, 0, 197, 245, 108, 0, 161, 232, 83, 83, 9, 246, 221, 0, 162,
-			50, 82, 83, 41, 246, 221, 1, 47, 1, 176, 44, 2, 133, 41, 5, 104, 0, 176, 1, 52, 129, 242, 93, 2, 87, 41, 5, 104, 0, 176,
-			100, 47, 1, 245, 93, 2, 0, 176, 60, 53, 1, 245, 93, 2, 111, 32, 1, 224, 98, 3, 33, 96, 112, 32, 1, 224, 131, 3, 29, 96,
-			113, 32, 1, 224, 164, 3, 25, 96, 114, 48, 115, 32, 1, 224, 197, 3, 20, 96, 116, 32, 1, 224, 246, 3, 16, 96, 2, 39, 14, 104,
-			6, 108, 1, 224, 39, 4, 1, 224, 72, 4, 1, 224, 105, 4, 1, 224, 138, 4, 1, 224, 171, 4, 1, 224, 204, 4, 1, 0, 112, 34,
-			1, 208, 237, 4, 46, 96, 117, 34, 1, 208, 14, 5, 42, 96, 113, 34, 1, 208, 47, 5, 38, 96, 114, 50, 115, 34, 1, 208, 80, 5,
-			33, 96, 111, 34, 1, 208, 113, 5, 29, 96, 58, 34, 1, 208, 146, 5, 25, 96, 116, 34, 1, 208, 179, 5, 21, 96, 57, 50, 118, 34,
-			1, 208, 212, 5, 16, 96, 2, 41, 14, 104, 6, 106, 1, 208, 245, 5, 1, 208, 22, 6, 1, 208, 55, 6, 1, 208, 88, 6, 1, 208,
-			121, 6, 1, 208, 154, 6, 1, 0, 0, 161, 25, 3, 71, 1, 222, 185, 2, 13, 129, 202, 138, 41, 46, 1, 4, 96, 138, 55, 0, 39,
-			119, 1, 0, 145, 248, 14, 0, 145, 29, 15, 1, 176, 187, 6, 2, 13, 129, 202, 138, 41, 1, 1, 2, 96, 34, 1, 1, 0, 2, 13,
-			129, 202, 47, 53, 48, 53, 49, 37, 5, 104, 1, 176, 220, 6, 240, 240, 177, 6, 138, 39, 5, 104, 1, 176, 13, 7, 240, 240, 177, 6,
-			6, 108, 1, 224, 46, 7, 1, 224, 79, 7, 1, 224, 112, 7, 1, 224, 145, 7, 1, 224, 178, 7, 1, 224, 211, 7, 111, 32, 1, 224,
-			244, 7, 8, 41, 5, 104, 1, 176, 21, 8, 64, 241, 177, 6, 109, 34, 15, 10, 1, 176, 70, 8, 64, 241, 177, 6, 0, 161, 25, 3,
-			71, 1, 222, 185, 2, 13, 129, 202, 0, 145, 29, 15, 83, 53, 49, 53, 48, 53, 89, 53, 47, 53, 91, 37, 1, 176, 103, 8, 110, 37,
-			1, 176, 168, 8, 40, 10, 1, 176, 187, 6, 1, 0, 138, 41, 56, 1, 3, 96, 110, 37, 59, 1, 6, 106, 0, 208, 238, 21, 96, 223,
-			31, 22, 16, 223, 64, 22, 16, 223, 97, 22, 97, 223, 233, 8, 192, 222, 211, 22, 28, 32, 224, 236, 171, 24, 4, 96, 2, 39, 128, 237,
-			171, 24, 0, 55, 134, 40, 0, 176, 204, 24, 87, 55, 8, 39, 0, 176, 204, 24, 47, 32, 0, 176, 253, 24, 56, 32, 0, 176, 30, 25,
-			0, 176, 63, 25, 2, 41, 55, 1, 111, 37, 1, 224, 10, 9, 16, 96, 2, 44, 14, 104, 6, 108, 0, 224, 230, 26, 0, 224, 7, 27,
-			0, 224, 40, 27, 0, 224, 73, 27, 0, 224, 122, 27, 0, 224, 171, 27, 109, 32, 0, 176, 204, 24, 0, 176, 138, 24, 138, 41, 56, 1,
-			6, 106, 0, 208, 238, 21, 96, 223, 31, 22, 16, 223, 64, 22, 16, 223, 97, 22, 96, 223, 146, 22, 192, 222, 211, 22, 47, 32, 0, 176,
-			253, 24, 0, 176, 63, 25, 1, 176, 43, 9, 1, 176, 43, 9, 2, 43, 110, 10, 2, 96, 85, 10, 1, 176, 92, 9, 81, 181, 92, 9,
-			56, 34, 192, 238, 171, 24, 5, 96, 2, 41, 100, 10, 2, 96, 85, 10, 0, 176, 37, 242, 0, 176, 37, 242, 57, 36, 95, 10, 2, 96,
-			85, 10, 0, 176, 206, 219, 0, 176, 206, 219, 119, 53, 59, 37, 5, 104, 2, 43, 2, 104, 120, 10, 16, 96, 109, 37, 2, 43, 8, 104,
-			31, 36, 4, 104, 110, 10, 38, 5, 2, 96, 118, 1, 6, 96, 2, 43, 57, 1, 3, 96, 75, 10, 38, 5, 0, 176, 166, 253, 6, 106,
-			0, 208, 82, 32, 0, 208, 147, 32, 0, 208, 212, 32, 0, 208, 21, 33, 0, 208, 70, 33, 0, 208, 151, 33, 1, 176, 157, 9, 2, 41,
-			110, 10, 2, 96, 85, 10, 139, 40, 1, 176, 222, 9, 0, 176, 233, 180, 1, 0, 139, 40, 1, 176, 47, 10, 108, 36, 138, 42, 1, 176,
-			47, 10, 109, 36, 138, 42, 1, 176, 47, 10, 0, 176, 251, 223, 2, 57, 57, 34, 110, 10, 2, 96, 90, 10, 0, 176, 105, 254, 0, 176,
-			105, 254, 114, 52, 31, 36, 4, 104, 55, 10, 0, 181, 253, 181, 90, 10, 0, 176, 253, 181, 0, 176, 253, 181, 0, 176, 24, 189, 0, 176,
-			24, 189, 0, 176, 78, 182, 109, 48, 108, 37, 15, 104, 6, 106, 0, 208, 104, 30, 1, 208, 112, 10, 0, 208, 202, 30, 0, 208, 251, 30,
-			0, 208, 44, 31, 0, 208, 93, 31, 2, 96, 133, 1, 1, 0, 2, 41, 23, 104, 6, 106, 0, 208, 104, 30, 1, 208, 112, 10, 0, 208,
-			202, 30, 0, 208, 251, 30, 0, 208, 44, 31, 0, 208, 93, 31, 32, 238, 142, 31, 0, 39, 3, 104, 0, 176, 175, 31, 0, 176, 175, 31,
-			11, 96, 0, 162, 25, 18, 0, 0, 0, 0, 31, 32, 3, 104, 0, 176, 224, 31, 0, 176, 33, 32, 1, 0, 0, 176, 205, 243, 134, 34,
-			0, 176, 206, 219, 1, 176, 161, 10, 1, 176, 242, 10, 1, 176, 161, 10, 0, 161, 213, 3, 173, 9, 84, 90, 0, 162, 18, 34, 73, 9,
-			84, 73, 2, 47, 15, 104, 0, 161, 213, 3, 73, 5, 84, 73, 133, 41, 5, 104, 0, 176, 7, 48, 0, 240, 56, 48, 0, 176, 7, 48,
-			0, 240, 62, 49, 1, 47, 7, 104, 109, 36, 3, 104, 1, 176, 67, 11, 0, 176, 214, 47, 133, 57, 55, 34, 5, 104, 0, 176, 151, 49,
-			0, 240, 56, 48, 56, 34, 0, 176, 143, 51, 109, 34, 5, 104, 1, 176, 116, 11, 32, 243, 62, 49, 0, 176, 143, 51, 96, 244, 62, 49,
-			0, 161, 21, 29, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 7, 104, 109, 36, 3, 104, 1, 176, 149, 11, 0, 176,
-			208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 32, 243, 50, 52, 109, 36, 5, 104, 0, 176, 100, 47, 32, 243, 50, 52, 0, 176, 60, 53,
-			128, 242, 109, 53, 0, 162, 18, 2, 171, 1, 84, 65, 0, 41, 0, 192, 6, 126, 0, 197, 186, 128, 0, 161, 213, 3, 73, 9, 238, 172,
-			0, 162, 18, 34, 73, 5, 46, 173, 1, 47, 7, 104, 109, 36, 3, 104, 1, 176, 198, 11, 0, 176, 222, 60, 133, 41, 5, 104, 0, 176,
-			15, 61, 0, 240, 64, 61, 109, 36, 5, 104, 1, 176, 247, 11, 65, 241, 40, 12, 0, 176, 48, 62, 65, 241, 40, 12, 0, 161, 213, 3,
-			77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 60, 117, 31, 50, 38, 34, 208, 194, 251, 119, 108, 34, 128, 194,
-			109, 121, 109, 34, 4, 104, 22, 10, 32, 195, 46, 124, 128, 194, 46, 124, 0, 162, 146, 50, 77, 9, 98, 162, 2, 47, 7, 104, 0, 161,
-			25, 3, 79, 1, 222, 154, 0, 176, 78, 38, 6, 106, 0, 208, 143, 38, 0, 208, 208, 38, 0, 208, 17, 39, 0, 208, 82, 39, 0, 208,
-			147, 39, 0, 208, 212, 39, 138, 39, 3, 43, 0, 176, 21, 40, 0, 55, 50, 32, 0, 176, 70, 40, 138, 41, 4, 104, 60, 10, 1, 176,
-			216, 12, 1, 0, 58, 50, 2, 41, 50, 1, 2, 96, 1, 1, 1, 0, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1,
-			84, 65, 133, 41, 0, 197, 33, 98, 14, 34, 96, 196, 55, 101, 108, 34, 32, 195, 2, 102, 109, 34, 4, 104, 20, 10, 0, 197, 33, 98,
-			160, 197, 74, 172, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 138, 41, 1, 1, 208, 194, 0, 103, 0, 161,
-			25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 208, 194, 192, 69, 48, 50, 47, 50, 49, 34, 208, 194, 252, 134,
-			208, 194, 40, 137, 0, 161, 25, 3, 77, 1, 102, 172, 0, 162, 18, 2, 77, 1, 102, 172, 47, 37, 30, 10, 0, 41, 208, 194, 16, 139,
-			208, 194, 188, 141, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 128, 194, 220, 103, 109, 34, 4, 104,
-			20, 10, 33, 195, 9, 13, 128, 194, 218, 173, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 2, 57, 58, 50,
-			57, 34, 224, 193, 218, 173, 1, 1, 1, 0, 0, 41, 47, 1, 5, 96, 138, 41, 1, 1, 2, 96, 140, 1, 1, 0, 0, 161, 25, 3,
-			169, 1, 84, 90, 0, 162, 18, 2, 169, 1, 84, 73, 2, 47, 4, 104, 0, 145, 201, 3, 1, 0, 133, 41, 5, 104, 0, 176, 165, 65,
-			0, 240, 52, 63, 134, 40, 3, 43, 35, 10, 4, 96, 133, 52, 109, 36, 30, 10, 0, 176, 56, 66, 192, 243, 52, 63, 13, 16, 0, 176,
-			81, 191, 0, 162, 25, 18, 13, 1, 98, 170, 88, 36, 0, 176, 208, 51, 133, 57, 0, 41, 5, 104, 0, 176, 143, 69, 208, 242, 192, 69,
-			47, 37, 30, 10, 0, 176, 109, 72, 208, 242, 192, 69, 2, 57, 133, 50, 57, 34, 6, 104, 35, 10, 0, 176, 109, 72, 128, 242, 40, 137,
-			1, 1, 1, 0, 0, 41, 89, 1, 6, 96, 2, 57, 133, 34, 88, 1, 2, 96, 1, 1, 1, 0, 0, 176, 206, 219, 0, 176, 123, 181,
-			1, 176, 217, 13, 38, 5, 0, 176, 122, 199, 0, 176, 53, 227, 1, 176, 42, 14, 1, 176, 107, 14, 0, 176, 227, 252, 0, 161, 25, 3,
-			71, 1, 222, 185, 138, 41, 46, 1, 1, 176, 188, 14, 128, 247, 177, 6, 14, 16, 108, 34, 0, 176, 92, 219, 1, 176, 253, 14, 130, 40,
-			19, 104, 108, 32, 2, 104, 13, 1, 136, 40, 2, 104, 1, 1, 92, 45, 7, 0, 2, 104, 9, 96, 143, 40, 3, 104, 1, 1, 5, 96,
-			141, 40, 2, 104, 2, 96, 1, 1, 73, 39, 110, 1, 11, 96, 34, 32, 111, 1, 8, 96, 130, 40, 2, 104, 13, 1, 108, 34, 3, 104,
-			0, 176, 92, 219, 0, 176, 15, 220, 0, 176, 92, 219, 14, 16, 0, 176, 215, 198, 38, 5, 0, 176, 118, 227, 38, 5, 1, 176, 62, 15,
-			38, 5, 0, 176, 92, 239, 0, 176, 215, 217, 0, 176, 215, 217, 1, 176, 127, 15, 0, 176, 206, 219, 0, 176, 141, 219, 0, 176, 180, 244,
-			0, 176, 203, 189, 0, 176, 222, 239, 0, 176, 233, 180, 0, 176, 58, 181, 0, 176, 16, 191, 0, 176, 53, 227, 0, 176, 123, 181, 1, 176,
-			208, 15, 1, 176, 17, 16, 0, 176, 51, 236, 0, 176, 26, 204, 1, 176, 82, 16, 1, 176, 163, 16, 0, 176, 134, 198, 1, 176, 228, 16,
-			1, 176, 53, 17, 1, 176, 53, 17, 0, 176, 216, 245, 1, 176, 118, 17, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1,
-			84, 65, 1, 47, 0, 176, 214, 47, 0, 176, 200, 49, 96, 244, 153, 172, 0, 161, 21, 28, 77, 1, 94, 170, 0, 162, 146, 18, 77, 1,
-			94, 162, 133, 41, 48, 194, 228, 106, 32, 195, 228, 106, 0, 161, 213, 3, 77, 1, 94, 170, 0, 162, 146, 18, 77, 1, 94, 162, 1, 47,
-			0, 176, 208, 51, 1, 176, 215, 17, 128, 242, 228, 106, 2, 13, 136, 202, 0, 161, 213, 3, 71, 1, 100, 170, 0, 162, 146, 18, 71, 65,
-			100, 162, 0, 192, 218, 173, 3, 13, 136, 202, 0, 104, 0, 161, 213, 3, 71, 1, 100, 170, 0, 162, 146, 18, 71, 65, 100, 162, 0, 192,
-			232, 107, 2, 13, 150, 201, 0, 161, 213, 3, 71, 5, 100, 170, 0, 162, 18, 2, 71, 69, 100, 170, 1, 47, 1, 176, 149, 11, 133, 41,
-			5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 0, 176, 100, 47, 0, 240, 109, 53, 3, 13, 150, 201, 0, 104, 0, 161, 213, 3, 71, 5,
-			100, 170, 0, 162, 18, 2, 71, 69, 100, 170, 1, 47, 1, 176, 149, 11, 0, 176, 100, 47, 0, 240, 232, 107, 0, 145, 29, 5, 2, 13,
-			104, 99, 1, 0, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 18, 2, 85, 33, 246, 221, 1, 47, 0, 176, 233, 59, 0, 176, 233, 59,
-			0, 240, 188, 113, 0, 161, 149, 18, 76, 5, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 1, 47, 1, 176, 8, 18, 133, 41, 5, 104,
-			1, 176, 8, 18, 48, 242, 105, 176, 1, 176, 8, 18, 32, 243, 105, 176, 193, 195, 57, 18, 0, 176, 81, 191, 109, 18, 0, 176, 183, 0,
-			2, 13, 140, 202, 136, 41, 65, 34, 13, 1, 0, 176, 15, 220, 2, 59, 150, 36, 1, 1, 109, 1, 1, 0, 1, 176, 5, 19, 0, 176,
-			248, 0, 0, 176, 248, 0, 136, 40, 130, 40, 1, 176, 70, 19, 1, 176, 62, 15, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 233, 180,
-			122, 18, 1, 176, 135, 19, 1, 176, 135, 19, 2, 13, 137, 202, 1, 176, 200, 19, 40, 44, 2, 104, 2, 96, 152, 18, 1, 176, 135, 19,
-			2, 13, 137, 202, 1, 176, 200, 19, 1, 176, 9, 20, 0, 176, 10, 194, 1, 1, 1, 0, 0, 176, 85, 0, 2, 13, 144, 201, 1, 176,
-			106, 20, 0, 176, 198, 212, 0, 176, 248, 0, 0, 176, 248, 0, 1, 176, 62, 15, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 233, 180,
-			0, 176, 53, 227, 0, 176, 53, 227, 0, 176, 162, 183, 1, 176, 118, 17, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9,
-			94, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47, 64, 246,
-			244, 53, 32, 179, 60, 53, 192, 243, 152, 185, 0, 176, 92, 219, 2, 13, 168, 201, 0, 181, 76, 214, 2, 13, 144, 201, 131, 56, 141, 56,
-			136, 40, 1, 176, 106, 20, 13, 17, 65, 34, 136, 41, 2, 104, 13, 1, 0, 176, 203, 189, 1, 0, 35, 1, 1, 0, 1, 176, 5, 19,
-			0, 176, 248, 0, 0, 176, 248, 0, 1, 176, 62, 15, 0, 176, 122, 199, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 233, 180, 0, 176,
-			187, 1, 0, 176, 187, 1, 0, 176, 162, 183, 1, 176, 118, 17, 0, 176, 118, 207, 0, 176, 206, 219, 38, 5, 0, 176, 115, 244, 0, 176,
-			251, 223, 0, 176, 53, 227, 1, 176, 171, 20, 0, 176, 102, 242, 0, 176, 57, 1, 0, 176, 187, 199, 0, 176, 183, 0, 0, 176, 222, 239,
-			0, 176, 123, 181, 0, 176, 253, 181, 0, 176, 78, 182, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192,
-			130, 169, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 208, 194, 228, 106, 32, 195, 228, 106, 47, 34,
-			0, 192, 1, 0, 47, 1, 1, 0, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170, 1, 47, 0, 176, 208, 51,
-			133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 244, 53, 34, 34, 5, 104, 0, 176, 100, 47, 224, 246, 244, 53, 0, 176, 60, 53, 224, 246,
-			244, 53, 138, 41, 56, 1, 0, 145, 194, 0, 28, 32, 224, 236, 171, 24, 4, 96, 2, 39, 128, 237, 171, 24, 0, 39, 0, 176, 204, 24,
-			47, 32, 0, 176, 253, 24, 0, 176, 63, 25, 0, 176, 44, 255, 0, 176, 198, 212, 0, 176, 198, 212, 0, 176, 198, 212, 0, 41, 0, 176,
-			152, 180, 0, 176, 206, 219, 0, 41, 0, 176, 152, 180, 0, 176, 206, 219, 0, 176, 206, 219, 1, 176, 236, 20, 1, 176, 61, 21, 114, 19,
-			0, 176, 21, 231, 0, 176, 21, 231, 1, 176, 62, 15, 0, 176, 32, 201, 0, 176, 32, 201, 0, 176, 32, 201, 0, 176, 187, 1, 0, 176,
-			187, 1, 0, 176, 123, 181, 0, 176, 187, 1, 0, 176, 187, 1, 1, 176, 142, 21, 0, 176, 34, 244, 0, 176, 28, 247, 1, 176, 239, 21,
-			0, 176, 61, 195, 0, 176, 22, 185, 1, 176, 80, 22, 0, 176, 143, 182, 0, 176, 240, 182, 1, 176, 161, 22, 0, 176, 162, 183, 1, 176,
-			242, 22, 2, 44, 2, 104, 2, 96, 14, 3, 0, 181, 254, 13, 32, 243, 63, 14, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176,
-			173, 54, 133, 41, 5, 104, 0, 176, 222, 54, 0, 240, 15, 55, 1, 0, 0, 161, 227, 83, 85, 1, 246, 221, 0, 192, 188, 113, 0, 161,
-			213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 48, 194, 228, 106, 192, 195, 228, 106, 0, 161, 227, 83, 85, 1,
-			246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 125, 115, 192, 195, 125, 115, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162,
-			18, 2, 76, 9, 94, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 87, 41, 5, 104, 0, 176,
-			100, 47, 224, 246, 244, 53, 0, 176, 60, 53, 224, 246, 244, 53, 0, 161, 232, 83, 83, 9, 246, 221, 0, 162, 50, 82, 83, 41, 246, 221,
-			1, 47, 1, 176, 44, 2, 133, 41, 5, 104, 0, 176, 1, 52, 129, 242, 93, 2, 87, 41, 5, 104, 0, 176, 100, 47, 1, 245, 93, 2,
-			0, 176, 60, 53, 1, 245, 93, 2, 6, 106, 0, 208, 141, 41, 0, 208, 238, 41, 0, 208, 63, 42, 0, 208, 160, 42, 0, 208, 1, 43,
-			0, 208, 114, 43, 0, 39, 0, 176, 211, 43, 138, 41, 10, 104, 67, 36, 3, 104, 37, 10, 4, 96, 67, 37, 2, 104, 50, 10, 0, 176,
-			244, 43, 1, 0, 2, 13, 173, 201, 0, 176, 148, 29, 3, 13, 204, 108, 0, 169, 0, 176, 133, 4, 0, 176, 44, 255, 38, 5, 1, 176,
-			62, 15, 38, 5, 1, 176, 62, 15, 0, 176, 206, 219, 0, 176, 206, 219, 0, 176, 141, 219, 0, 176, 141, 219, 112, 16, 0, 176, 198, 212,
-			0, 176, 198, 212, 2, 13, 144, 201, 0, 176, 241, 205, 0, 176, 32, 201, 0, 176, 32, 201, 0, 176, 187, 1, 0, 176, 187, 1, 1, 176,
-			142, 21, 0, 176, 34, 244, 0, 176, 28, 247, 1, 176, 239, 21, 0, 176, 61, 195, 0, 176, 22, 185, 1, 176, 80, 22, 0, 176, 31, 248,
-			0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 254, 13, 32, 243, 63, 14, 0, 161, 213, 3, 77, 1,
-			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 42, 167, 161, 197, 67, 23, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162,
-			146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 220, 103, 48, 199, 218, 173, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1,
-			84, 65, 133, 41, 0, 197, 74, 172, 55, 34, 0, 192, 2, 102, 128, 199, 55, 101, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18,
-			77, 1, 110, 189, 133, 41, 0, 192, 60, 117, 31, 50, 61, 34, 0, 192, 251, 119, 55, 34, 0, 192, 109, 121, 192, 195, 249, 122, 0, 161,
-			25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 42, 178, 0, 176, 184, 203, 0, 176, 50, 241, 0, 176, 122, 199,
-			0, 176, 253, 181, 0, 176, 78, 182, 0, 176, 123, 181, 0, 176, 12, 229, 13, 16, 0, 176, 27, 239, 1, 176, 119, 24, 1, 176, 119, 24,
-			129, 40, 7, 104, 136, 40, 3, 104, 1, 176, 106, 20, 1, 176, 184, 24, 0, 176, 183, 0, 0, 176, 87, 180, 129, 40, 1, 176, 106, 20,
-			0, 176, 176, 205, 0, 176, 134, 198, 0, 176, 243, 183, 13, 17, 119, 1, 1, 0, 1, 176, 249, 24, 1, 176, 58, 25, 0, 176, 68, 184,
-			0, 176, 128, 248, 0, 176, 8, 228, 0, 176, 240, 182, 1, 176, 139, 25, 0, 161, 25, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9,
-			46, 173, 101, 37, 1, 1, 140, 43, 2, 104, 2, 96, 101, 1, 133, 41, 5, 104, 0, 176, 191, 94, 0, 240, 136, 90, 1, 176, 236, 25,
-			193, 248, 29, 26, 1, 13, 0, 32, 1, 0, 136, 40, 5, 104, 47, 50, 72, 34, 2, 104, 128, 1, 0, 145, 87, 6, 1, 0, 136, 40,
-			5, 104, 47, 50, 72, 34, 2, 104, 128, 1, 128, 32, 47, 1, 0, 145, 12, 3, 1, 0, 136, 40, 5, 104, 48, 50, 71, 34, 2, 104,
-			128, 1, 0, 145, 52, 6, 1, 0, 136, 40, 5, 104, 48, 50, 71, 34, 2, 104, 128, 1, 128, 32, 48, 1, 0, 145, 193, 2, 1, 0,
-			136, 40, 5, 104, 89, 50, 88, 34, 2, 104, 128, 1, 0, 145, 125, 5, 1, 0, 136, 40, 5, 104, 89, 50, 88, 34, 2, 104, 128, 1,
-			128, 32, 89, 1, 0, 145, 16, 4, 1, 0, 108, 16, 0, 176, 183, 0, 2, 13, 144, 201, 1, 176, 106, 20, 0, 41, 0, 176, 152, 180,
-			0, 176, 206, 219, 1, 176, 80, 28, 38, 5, 0, 176, 231, 253, 1, 176, 145, 28, 0, 176, 123, 181, 2, 13, 168, 201, 1, 176, 210, 28,
-			1, 176, 19, 29, 1, 176, 116, 29, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176,
-			254, 13, 32, 243, 63, 14, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 48, 194, 228, 106, 192, 195,
-			228, 106, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 125, 115, 192, 195, 125, 115, 0, 161,
-			213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240,
-			50, 52, 87, 41, 5, 104, 0, 176, 100, 47, 224, 246, 244, 53, 0, 176, 60, 53, 224, 246, 244, 53, 0, 161, 232, 83, 83, 9, 246, 221,
-			0, 162, 50, 82, 83, 41, 246, 221, 1, 47, 1, 176, 44, 2, 133, 41, 5, 104, 0, 176, 1, 52, 129, 242, 93, 2, 87, 41, 5, 104,
-			0, 176, 100, 47, 1, 245, 93, 2, 0, 176, 60, 53, 1, 245, 93, 2, 0, 145, 31, 6, 3, 13, 202, 100, 0, 145, 1, 0, 0, 145,
-			29, 5, 3, 13, 201, 116, 0, 149, 1, 0, 0, 145, 93, 1, 2, 41, 0, 176, 103, 185, 1, 0, 0, 162, 18, 2, 75, 1, 84, 65,
-			133, 41, 0, 192, 6, 126, 89, 34, 0, 202, 186, 128, 192, 200, 186, 128, 38, 5, 0, 176, 92, 239, 38, 5, 0, 176, 21, 231, 1, 176,
-			213, 29, 0, 176, 12, 229, 0, 176, 206, 219, 136, 40, 129, 40, 0, 176, 138, 189, 0, 176, 183, 0, 0, 176, 183, 0, 0, 176, 32, 201,
-			0, 176, 32, 201, 0, 176, 245, 244, 0, 176, 123, 181, 0, 176, 143, 182, 0, 176, 240, 182, 1, 176, 161, 22, 0, 176, 162, 183, 1, 176,
-			242, 22, 3, 13, 204, 114, 0, 169, 0, 176, 52, 4, 5, 13, 204, 114, 203, 169, 0, 144, 0, 176, 52, 4, 3, 13, 204, 114, 0, 157,
-			0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 139, 75, 33, 243, 6, 30, 5, 13, 204, 114, 204, 157,
-			0, 138, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 1, 176, 177, 32, 145, 241, 6, 30, 3, 13, 204, 108,
-			0, 169, 0, 176, 133, 4, 5, 13, 204, 108, 203, 169, 0, 144, 0, 176, 133, 4, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18,
-			77, 1, 98, 162, 133, 41, 0, 192, 220, 103, 0, 192, 218, 173, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65,
-			133, 41, 0, 197, 55, 101, 55, 34, 0, 192, 2, 102, 128, 199, 55, 101, 0, 176, 206, 219, 0, 176, 198, 212, 0, 176, 202, 213, 0, 176,
-			187, 1, 1, 176, 226, 32, 3, 13, 204, 114, 0, 169, 0, 176, 52, 4, 0, 161, 25, 3, 77, 1, 106, 172, 0, 162, 18, 2, 77, 1,
-			106, 172, 133, 41, 161, 197, 51, 33, 225, 198, 51, 33, 0, 161, 213, 3, 77, 1, 102, 156, 133, 41, 129, 194, 152, 35, 33, 195, 152, 35,
-			3, 13, 201, 116, 0, 149, 0, 161, 227, 83, 85, 1, 114, 205, 133, 41, 33, 195, 91, 37, 33, 195, 91, 37, 0, 161, 25, 3, 75, 1,
-			232, 171, 0, 162, 18, 34, 75, 9, 232, 171, 133, 41, 5, 104, 0, 176, 90, 75, 1, 245, 51, 33, 0, 176, 139, 75, 97, 249, 51, 33,
-			0, 161, 213, 3, 81, 9, 102, 172, 0, 162, 18, 34, 81, 9, 102, 172, 1, 47, 0, 176, 173, 54, 133, 41, 5, 104, 0, 176, 222, 54,
-			33, 243, 152, 35, 1, 176, 251, 38, 1, 245, 152, 35, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 114, 205, 1, 47, 0, 176,
-			173, 54, 133, 41, 5, 104, 0, 176, 222, 54, 33, 243, 91, 37, 1, 176, 251, 38, 1, 245, 91, 37, 1, 176, 43, 9, 0, 176, 244, 226,
-			122, 18, 0, 176, 183, 0, 0, 176, 183, 0, 1, 176, 106, 20, 0, 176, 206, 219, 0, 176, 248, 0, 138, 18, 38, 5, 1, 176, 62, 15,
-			38, 5, 0, 176, 92, 239, 0, 176, 32, 201, 139, 18, 0, 176, 123, 181, 0, 176, 245, 244, 0, 176, 162, 183, 0, 161, 213, 3, 77, 1,
-			96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 48, 194, 228, 106, 32, 195, 228, 106, 0, 161, 21, 28, 77, 9, 98, 170, 0, 162,
-			18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176,
-			100, 47, 0, 240, 109, 53, 0, 176, 60, 53, 32, 243, 109, 53, 0, 161, 25, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189,
-			208, 194, 195, 153, 1, 13, 0, 32, 16, 4, 0, 176, 134, 0, 0, 161, 213, 3, 87, 1, 246, 221, 0, 162, 146, 18, 87, 1, 246, 221,
-			0, 192, 251, 119, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 173, 54, 133, 41, 5, 104, 0, 176,
-			222, 54, 0, 240, 15, 55, 0, 176, 157, 57, 0, 240, 209, 58, 38, 5, 0, 176, 157, 224, 2, 13, 144, 201, 0, 176, 22, 180, 1, 13,
-			0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 254, 13, 32, 243, 63, 14, 0, 161, 213, 3,
-			77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 49, 194, 44, 39, 33, 195, 44, 39, 0, 161, 21, 28, 77, 9, 98, 170,
-			0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 1, 176, 250, 39, 1, 240, 44, 39, 1, 176, 250, 39,
-			33, 243, 44, 39, 31, 50, 30, 34, 1, 192, 43, 40, 2, 41, 1, 192, 35, 43, 97, 196, 35, 43, 28, 34, 0, 192, 8, 156, 31, 50,
-			30, 34, 1, 192, 43, 40, 2, 41, 1, 192, 35, 43, 97, 196, 35, 43, 0, 161, 213, 3, 81, 9, 238, 188, 0, 162, 18, 34, 81, 9,
-			46, 173, 1, 47, 0, 176, 173, 54, 0, 176, 157, 57, 1, 240, 67, 45, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 246, 221,
-			1, 47, 0, 176, 173, 54, 0, 176, 157, 57, 1, 240, 23, 48, 0, 161, 213, 3, 77, 1, 238, 188, 33, 195, 6, 50, 3, 13, 201, 116,
-			0, 149, 0, 161, 227, 83, 85, 1, 246, 221, 1, 192, 23, 48, 0, 161, 25, 3, 75, 1, 232, 171, 0, 162, 18, 34, 75, 9, 232, 171,
-			133, 41, 5, 104, 0, 176, 139, 75, 33, 243, 67, 45, 0, 176, 139, 75, 193, 243, 67, 45, 0, 161, 25, 3, 77, 1, 106, 172, 0, 162,
-			18, 2, 77, 1, 106, 172, 133, 41, 193, 195, 67, 45, 97, 196, 67, 45, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9,
-			46, 173, 1, 47, 0, 176, 222, 60, 133, 41, 5, 104, 0, 176, 15, 61, 0, 240, 64, 61, 0, 176, 48, 62, 161, 245, 76, 52, 0, 161,
-			25, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 224, 193, 195, 153, 2, 13, 173, 201, 0, 176, 148, 29, 2, 13, 173, 201,
-			0, 176, 148, 29, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 40, 137, 2, 13, 178, 201, 0, 162,
-			23, 114, 81, 13, 114, 205, 2, 47, 5, 104, 0, 208, 43, 41, 0, 176, 76, 41, 6, 106, 0, 208, 141, 41, 0, 208, 238, 41, 0, 208,
-			63, 42, 0, 208, 160, 42, 0, 208, 1, 43, 0, 208, 114, 43, 0, 39, 0, 176, 211, 43, 138, 41, 10, 104, 67, 36, 3, 104, 37, 10,
-			4, 96, 67, 37, 2, 104, 50, 10, 0, 176, 244, 43, 1, 0, 2, 44, 2, 104, 2, 96, 14, 3, 0, 181, 254, 13, 32, 243, 63, 14,
-			0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 173, 54, 133, 41, 5, 104, 0, 176, 222, 54, 0, 240, 15, 55, 1, 0, 0, 161,
-			227, 83, 85, 1, 246, 221, 0, 192, 188, 113, 0, 162, 18, 34, 75, 9, 84, 65, 2, 47, 11, 104, 0, 161, 25, 3, 75, 1, 212, 114,
-			133, 41, 3, 104, 0, 176, 179, 35, 0, 176, 244, 35, 0, 208, 248, 36, 0, 176, 203, 37, 2, 41, 38, 1, 113, 32, 1, 176, 198, 52,
-			1, 176, 23, 53, 90, 32, 115, 1, 25, 10, 1, 176, 72, 53, 132, 45, 7, 0, 117, 1, 132, 40, 37, 1, 1, 176, 137, 53, 1, 176,
-			186, 53, 132, 40, 6, 104, 57, 37, 3, 104, 35, 1, 2, 96, 37, 1, 1, 176, 72, 53, 132, 40, 36, 1, 73, 44, 117, 1, 1, 176,
-			72, 53, 132, 40, 6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 120, 1, 73, 44, 117, 1, 1, 176, 72, 53, 1, 176, 251, 53, 132, 40,
-			6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 121, 1, 1, 176, 60, 54, 132, 45, 7, 0, 6, 104, 57, 32, 3, 104, 119, 1, 2, 96,
-			122, 1, 132, 40, 6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 121, 1, 1, 176, 125, 54, 132, 45, 7, 0, 117, 1, 132, 40, 36, 1,
-			73, 44, 123, 1, 1, 176, 125, 54, 122, 1, 1, 0, 126, 18, 1, 176, 190, 54, 73, 44, 128, 1, 132, 40, 39, 1, 1, 176, 255, 54,
-			1, 176, 48, 55, 1, 176, 113, 55, 1, 176, 194, 55, 126, 18, 1, 176, 19, 56, 90, 32, 3, 104, 115, 18, 121, 1, 91, 32, 3, 104,
-			115, 18, 121, 1, 110, 32, 3, 104, 115, 18, 121, 1, 37, 18, 1, 176, 236, 20, 1, 176, 68, 56, 132, 40, 4, 104, 100, 10, 1, 176,
-			133, 56, 0, 176, 174, 195, 1, 0, 132, 40, 0, 176, 141, 219, 73, 44, 2, 104, 117, 1, 1, 0, 132, 40, 6, 104, 57, 37, 3, 104,
-			134, 1, 2, 96, 120, 1, 73, 44, 126, 1, 0, 176, 81, 191, 0, 176, 46, 205, 1, 176, 230, 56, 57, 37, 2, 104, 12, 96, 132, 40,
-			7, 104, 73, 44, 3, 104, 120, 1, 2, 96, 134, 1, 4, 96, 73, 44, 2, 104, 117, 1, 136, 40, 0, 176, 203, 189, 1, 176, 39, 57,
-			132, 45, 7, 0, 35, 1, 132, 40, 6, 104, 57, 37, 3, 104, 35, 1, 2, 96, 134, 1, 0, 176, 81, 191, 0, 176, 203, 189, 0, 161,
-			153, 55, 75, 1, 94, 170, 0, 162, 18, 2, 75, 9, 94, 170, 1, 176, 104, 57, 33, 243, 169, 57, 38, 5, 130, 40, 1, 176, 70, 19,
-			1, 176, 62, 15, 130, 40, 0, 176, 12, 229, 0, 176, 206, 219, 130, 40, 0, 176, 133, 212, 1, 176, 253, 14, 130, 40, 10, 104, 131, 45,
-			7, 0, 3, 104, 1, 176, 184, 24, 2, 13, 144, 201, 0, 176, 15, 220, 0, 176, 183, 0, 130, 40, 0, 176, 251, 223, 0, 176, 122, 1,
-			130, 40, 0, 176, 245, 244, 0, 176, 123, 181, 0, 161, 213, 3, 85, 5, 110, 173, 0, 162, 18, 34, 85, 37, 110, 173, 1, 47, 0, 176,
-			222, 60, 133, 41, 5, 104, 0, 176, 15, 61, 0, 240, 64, 61, 0, 176, 48, 62, 96, 249, 97, 62, 108, 18, 0, 176, 183, 0, 136, 40,
-			1, 176, 184, 24, 1, 176, 5, 19, 124, 18, 0, 176, 215, 217, 8, 59, 3, 43, 0, 176, 12, 229, 0, 176, 248, 0, 1, 0, 124, 17,
-			0, 176, 206, 219, 38, 5, 0, 176, 57, 1, 1, 18, 37, 1, 1, 0, 38, 5, 0, 176, 115, 244, 127, 18, 0, 176, 233, 180, 8, 59,
-			3, 43, 0, 176, 32, 201, 0, 176, 233, 180, 1, 0, 127, 17, 0, 176, 58, 181, 111, 18, 0, 176, 123, 181, 0, 176, 123, 181, 0, 176,
-			154, 208, 0, 176, 162, 183, 0, 176, 165, 184, 1, 176, 5, 19, 0, 176, 152, 180, 38, 5, 1, 176, 70, 19, 0, 176, 233, 180, 0, 176,
-			187, 1, 0, 176, 198, 212, 0, 176, 248, 0, 0, 176, 50, 241, 0, 176, 222, 239, 0, 176, 105, 254, 0, 176, 253, 181, 1, 176, 106, 58,
-			0, 176, 8, 228, 1, 176, 107, 14, 0, 176, 243, 183, 1, 176, 187, 58, 0, 176, 165, 184, 2, 13, 176, 202, 28, 34, 0, 192, 8, 156,
-			29, 34, 0, 192, 93, 157, 30, 34, 0, 192, 252, 158, 31, 34, 0, 192, 161, 160, 32, 34, 0, 192, 7, 162, 33, 34, 0, 192, 182, 163,
-			96, 196, 127, 165, 1, 176, 12, 59, 0, 176, 12, 229, 0, 176, 12, 229, 38, 5, 0, 176, 57, 1, 0, 176, 122, 1, 0, 176, 122, 1,
-			0, 176, 105, 254, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 2, 57, 87, 57, 3, 41, 6, 104, 0, 55,
-			8, 39, 2, 104, 2, 96, 100, 1, 1, 47, 0, 176, 222, 60, 133, 41, 5, 104, 0, 176, 15, 61, 0, 240, 64, 61, 0, 176, 48, 62,
-			0, 240, 97, 62, 2, 57, 87, 57, 57, 34, 7, 104, 0, 55, 8, 55, 55, 32, 2, 104, 2, 96, 86, 1, 0, 145, 233, 6, 1, 0,
-			2, 57, 87, 57, 3, 41, 6, 104, 0, 55, 8, 39, 2, 104, 2, 96, 82, 1, 0, 145, 193, 2, 1, 0, 0, 145, 253, 3, 133, 41,
-			5, 104, 0, 176, 235, 66, 128, 242, 28, 67, 1, 0, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41,
-			192, 195, 192, 69, 48, 50, 47, 50, 49, 34, 0, 192, 252, 134, 0, 197, 40, 137, 2, 13, 139, 202, 0, 161, 25, 3, 169, 5, 84, 90,
-			0, 162, 5, 18, 9, 1, 84, 73, 133, 41, 5, 104, 0, 176, 165, 65, 0, 245, 52, 63, 1, 176, 77, 59, 0, 245, 52, 63, 2, 13,
-			190, 201, 2, 43, 69, 1, 0, 145, 137, 2, 1, 0, 124, 17, 1, 176, 126, 59, 2, 13, 144, 201, 0, 176, 203, 189, 13, 17, 0, 176,
-			248, 0, 13, 17, 0, 176, 206, 219, 0, 176, 206, 219, 111, 17, 0, 176, 122, 1, 111, 17, 0, 176, 233, 180, 0, 176, 188, 181, 111, 17,
-			0, 176, 123, 181, 0, 176, 157, 224, 0, 176, 51, 236, 38, 5, 1, 176, 191, 59, 1, 176, 228, 16, 1, 176, 53, 17, 4, 13, 144, 201,
-			131, 204, 1, 176, 0, 60, 8, 13, 144, 201, 131, 204, 138, 202, 131, 204, 1, 176, 65, 60, 7, 13, 204, 111, 201, 131, 204, 170, 0, 131,
-			1, 176, 146, 60, 0, 176, 203, 189, 2, 41, 1, 1, 0, 176, 203, 189, 0, 176, 87, 180, 0, 176, 66, 230, 0, 176, 248, 0, 38, 5,
-			0, 176, 157, 224, 2, 41, 57, 1, 38, 5, 0, 176, 157, 224, 0, 176, 16, 191, 0, 176, 123, 181, 136, 40, 2, 41, 58, 1, 0, 176,
-			53, 227, 38, 5, 0, 176, 162, 183, 38, 5, 0, 176, 243, 183, 38, 5, 1, 176, 3, 61, 0, 176, 240, 182, 1, 176, 116, 61, 2, 13,
-			129, 202, 134, 40, 107, 1, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 254, 13, 32, 243, 63, 14,
-			0, 145, 125, 5, 1, 13, 0, 115, 1, 0, 2, 13, 190, 201, 0, 161, 213, 3, 79, 5, 98, 170, 0, 162, 18, 2, 79, 9, 98, 170,
-			1, 47, 0, 176, 144, 186, 0, 176, 193, 186, 128, 242, 109, 53, 2, 13, 144, 201, 0, 176, 203, 189, 2, 13, 144, 201, 2, 41, 1, 1,
-			0, 176, 203, 189, 132, 18, 0, 176, 87, 180, 4, 13, 144, 201, 131, 204, 0, 176, 26, 204, 8, 13, 144, 201, 131, 204, 138, 202, 131, 204,
-			1, 176, 65, 60, 112, 17, 0, 176, 206, 219, 112, 17, 0, 176, 248, 0, 2, 13, 168, 201, 1, 176, 197, 61, 38, 5, 0, 176, 57, 1,
-			2, 13, 168, 201, 2, 41, 1, 1, 38, 5, 1, 176, 197, 61, 0, 176, 252, 199, 40, 18, 0, 176, 233, 180, 1, 176, 135, 19, 2, 41,
-			58, 1, 1, 176, 135, 19, 1, 176, 187, 58, 2, 13, 129, 202, 0, 161, 25, 3, 71, 1, 222, 185, 138, 41, 46, 1, 1, 176, 6, 62,
-			128, 247, 177, 6, 0, 145, 143, 5, 2, 13, 131, 202, 1, 0, 2, 13, 178, 202, 2, 41, 38, 1, 125, 32, 4, 104, 30, 10, 1, 176,
-			71, 62, 126, 32, 1, 176, 198, 52, 127, 32, 1, 176, 136, 62, 1, 176, 201, 62, 124, 18, 38, 5, 0, 176, 57, 1, 0, 176, 12, 229,
-			2, 13, 168, 201, 1, 176, 197, 61, 0, 176, 87, 180, 0, 176, 92, 219, 1, 176, 250, 62, 0, 176, 245, 244, 0, 176, 78, 182, 0, 176,
-			209, 225, 1, 176, 59, 63, 1, 176, 161, 22, 1, 176, 156, 63, 1, 176, 13, 64, 1, 176, 94, 64, 1, 176, 61, 21, 1, 176, 175, 64,
-			1, 176, 16, 65, 1, 176, 97, 65, 138, 41, 46, 1, 6, 106, 16, 223, 198, 4, 16, 223, 247, 4, 16, 223, 40, 5, 16, 223, 89, 5,
-			16, 223, 138, 5, 16, 223, 187, 5, 2, 39, 224, 236, 236, 5, 47, 48, 48, 48, 49, 32, 0, 176, 135, 11, 0, 176, 184, 11, 0, 145,
-			208, 0, 0, 162, 18, 2, 0, 32, 0, 0, 1, 0, 0, 145, 183, 1, 0, 162, 18, 34, 83, 41, 84, 65, 1, 0, 0, 145, 223, 1,
-			0, 162, 146, 50, 83, 41, 98, 162, 1, 0, 0, 145, 201, 6, 0, 162, 210, 19, 73, 33, 84, 65, 1, 0, 0, 145, 220, 6, 0, 162,
-			146, 18, 79, 33, 98, 164, 1, 0, 0, 145, 18, 6, 0, 162, 146, 18, 77, 33, 98, 162, 1, 0, 0, 145, 103, 5, 0, 162, 18, 2,
-			75, 33, 84, 65, 1, 0, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 33, 98, 162, 32, 195, 3, 81, 0, 161, 25, 3,
-			77, 1, 106, 172, 0, 162, 18, 2, 77, 33, 106, 172, 0, 192, 3, 86, 0, 162, 18, 34, 73, 41, 84, 73, 31, 34, 5, 104, 0, 176,
-			204, 50, 0, 240, 62, 49, 0, 176, 143, 51, 0, 240, 62, 49, 0, 145, 233, 6, 0, 161, 213, 3, 79, 9, 98, 172, 0, 162, 18, 2,
-			79, 41, 98, 172, 1, 0, 0, 162, 136, 20, 73, 45, 98, 170, 31, 34, 9, 104, 0, 161, 25, 3, 71, 1, 98, 170, 1, 176, 178, 65,
-			0, 240, 177, 6, 1, 176, 227, 65, 0, 240, 177, 6, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 33, 84, 73, 133, 41,
-			5, 104, 0, 176, 165, 65, 0, 240, 52, 63, 0, 176, 56, 66, 0, 240, 52, 63, 0, 162, 25, 18, 13, 33, 98, 170, 133, 41, 5, 104,
-			0, 176, 143, 69, 0, 240, 192, 69, 0, 176, 109, 72, 0, 240, 192, 69, 0, 161, 25, 3, 75, 33, 232, 171, 0, 162, 18, 34, 75, 9,
-			232, 171, 133, 41, 5, 104, 0, 176, 90, 75, 0, 240, 207, 72, 0, 176, 139, 75, 0, 240, 207, 72, 136, 40, 130, 40, 35, 34, 1, 1,
-			128, 40, 1, 176, 12, 59, 0, 176, 87, 180, 0, 176, 12, 229, 38, 5, 0, 176, 57, 1, 0, 176, 122, 1, 0, 176, 123, 181, 0, 161,
-			213, 26, 77, 5, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 1, 192, 20, 66, 1, 192, 20, 66, 0, 161, 213, 3, 77, 1,
-			238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 60, 117, 87, 41, 0, 192, 107, 118, 55, 34, 0, 192, 109, 121, 96, 196,
-			249, 122, 0, 176, 102, 242, 0, 176, 248, 0, 0, 176, 152, 180, 0, 176, 233, 180, 0, 176, 16, 191, 1, 176, 116, 61, 1, 176, 3, 61,
-			1, 176, 226, 32, 0, 176, 203, 246, 0, 162, 18, 2, 75, 1, 84, 65, 0, 192, 186, 128, 38, 5, 58, 32, 0, 208, 133, 192, 0, 176,
-			50, 241, 38, 5, 0, 176, 92, 239, 0, 176, 215, 217, 112, 17, 0, 176, 57, 199, 0, 176, 152, 180, 13, 16, 1, 176, 213, 29, 2, 13,
-			153, 201, 0, 176, 101, 253, 1, 176, 87, 66, 1, 176, 168, 66, 2, 13, 137, 202, 1, 176, 233, 66, 1, 176, 171, 20, 1, 176, 42, 67,
-			0, 176, 50, 206, 130, 40, 136, 40, 1, 176, 106, 20, 1, 176, 5, 19, 0, 176, 141, 219, 1, 176, 91, 67, 0, 176, 122, 1, 0, 176,
-			233, 180, 0, 176, 54, 245, 0, 176, 123, 181, 0, 161, 25, 3, 179, 1, 110, 189, 0, 162, 146, 18, 179, 1, 110, 189, 193, 195, 156, 67,
-			0, 176, 184, 203, 0, 176, 92, 219, 38, 5, 0, 176, 92, 239, 38, 5, 58, 32, 0, 208, 133, 192, 0, 176, 57, 1, 1, 176, 42, 14,
-			1, 176, 174, 69, 1, 176, 239, 69, 1, 176, 48, 70, 13, 16, 0, 176, 206, 219, 0, 176, 152, 180, 0, 176, 215, 217, 1, 176, 113, 70,
-			1, 176, 113, 70, 0, 176, 227, 252, 0, 176, 227, 252, 0, 176, 122, 1, 0, 176, 222, 239, 0, 176, 53, 227, 0, 176, 123, 181, 2, 13,
-			137, 202, 1, 176, 178, 70, 4, 13, 137, 202, 144, 203, 1, 176, 243, 70, 38, 5, 0, 176, 24, 218, 38, 5, 1, 176, 68, 71, 38, 5,
-			0, 176, 61, 195, 4, 13, 137, 202, 170, 201, 38, 5, 0, 176, 203, 246, 1, 176, 149, 71, 1, 176, 230, 71, 38, 5, 0, 176, 157, 224,
-			38, 5, 37, 18, 0, 176, 115, 244, 38, 5, 0, 176, 122, 199, 38, 5, 109, 18, 0, 176, 122, 199, 0, 176, 206, 219, 0, 176, 7, 213,
-			1, 176, 106, 20, 35, 18, 0, 176, 176, 205, 1, 176, 145, 28, 114, 18, 0, 176, 183, 227, 0, 176, 245, 244, 40, 18, 0, 176, 123, 181,
-			1, 176, 87, 72, 117, 18, 0, 176, 102, 242, 1, 176, 152, 72, 119, 18, 1, 176, 152, 72, 0, 176, 118, 217, 121, 18, 0, 176, 118, 217,
-			0, 176, 243, 183, 123, 18, 0, 176, 243, 183, 0, 176, 28, 247, 125, 18, 0, 176, 28, 247, 1, 176, 217, 72, 127, 18, 1, 176, 217, 72,
-			1, 176, 26, 73, 129, 18, 1, 176, 26, 73, 0, 176, 165, 184, 0, 176, 102, 242, 2, 13, 35, 109, 0, 162, 18, 34, 75, 9, 84, 65,
-			1, 176, 107, 73, 2, 13, 35, 110, 0, 162, 146, 50, 77, 9, 98, 162, 6, 106, 0, 208, 143, 38, 0, 208, 208, 38, 0, 208, 17, 39,
-			0, 208, 82, 39, 0, 208, 147, 39, 0, 208, 212, 39, 1, 176, 172, 73, 3, 13, 178, 201, 0, 35, 0, 162, 18, 98, 81, 13, 110, 189,
-			1, 176, 237, 73, 3, 13, 139, 197, 0, 35, 0, 162, 148, 50, 75, 13, 110, 189, 6, 106, 0, 208, 134, 44, 0, 208, 183, 44, 0, 208,
-			232, 44, 0, 208, 25, 45, 0, 208, 74, 45, 0, 208, 123, 45, 1, 176, 46, 74, 2, 13, 35, 108, 144, 193, 143, 146, 3, 13, 108, 116,
-			0, 35, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 33, 195, 111, 74, 2, 13, 35, 114, 1, 176, 201, 76,
-			0, 240, 177, 6, 0, 161, 213, 26, 75, 5, 84, 90, 0, 162, 18, 34, 73, 9, 84, 74, 0, 192, 62, 49, 0, 161, 213, 3, 77, 9,
-			98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 133, 41, 0, 192, 50, 52, 0, 197, 109, 53, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162,
-			18, 34, 73, 9, 46, 173, 133, 41, 0, 192, 64, 61, 96, 201, 97, 62, 5, 146, 168, 51, 1, 0, 5, 146, 40, 52, 1, 0, 5, 146,
-			168, 52, 1, 0, 5, 146, 40, 53, 1, 0, 5, 146, 168, 53, 5, 147, 40, 54, 1, 0, 5, 146, 168, 54, 5, 147, 40, 55, 1, 0,
-			5, 146, 40, 52, 1, 0, 1, 176, 12, 59, 1, 176, 126, 59, 0, 176, 66, 230, 0, 176, 248, 0, 38, 5, 58, 37, 0, 208, 251, 30,
-			0, 176, 115, 244, 1, 176, 91, 67, 0, 176, 222, 239, 1, 176, 234, 77, 1, 176, 43, 78, 1, 176, 108, 78, 1, 176, 108, 78, 1, 176,
-			173, 78, 0, 176, 162, 183, 0, 176, 174, 255, 0, 176, 174, 255, 0, 176, 243, 183, 0, 176, 68, 184, 1, 176, 3, 61, 0, 176, 165, 184,
-			0, 176, 22, 185, 1, 176, 14, 79, 1, 176, 95, 79, 0, 176, 10, 194, 0, 176, 240, 182, 1, 176, 116, 61, 0, 176, 65, 183, 0, 176,
-			31, 225, 0, 176, 31, 225, 1, 176, 192, 79, 0, 176, 21, 250, 0, 176, 96, 196, 0, 161, 25, 3, 83, 1, 238, 188, 0, 162, 146, 18,
-			83, 1, 110, 189, 32, 195, 106, 151, 138, 41, 59, 1, 0, 145, 194, 0, 1, 176, 33, 80, 5, 146, 168, 51, 1, 0, 5, 146, 168, 52,
-			1, 0, 5, 146, 168, 51, 1, 0, 5, 146, 40, 52, 1, 0, 5, 146, 168, 52, 1, 0, 5, 146, 168, 51, 1, 0, 5, 146, 40, 52,
-			1, 0, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 130, 169, 0, 161, 213, 3, 77, 1, 238, 188,
-			133, 41, 0, 192, 220, 109, 0, 192, 44, 112, 0, 161, 213, 3, 75, 1, 238, 172, 0, 162, 146, 18, 75, 5, 110, 189, 133, 41, 0, 192,
-			0, 0, 31, 34, 0, 192, 251, 119, 34, 50, 51, 34, 0, 192, 107, 118, 55, 34, 0, 192, 109, 121, 14, 34, 96, 196, 249, 122, 0, 192,
-			46, 124, 0, 161, 213, 19, 75, 1, 84, 115, 0, 162, 210, 18, 73, 5, 84, 65, 133, 41, 0, 192, 0, 0, 0, 192, 0, 103, 0, 161,
-			213, 3, 81, 1, 98, 170, 0, 162, 146, 18, 77, 5, 98, 162, 133, 41, 0, 192, 0, 0, 0, 192, 232, 107, 0, 176, 227, 252, 1, 176,
-			142, 21, 0, 176, 8, 228, 1, 176, 98, 80, 1, 176, 227, 80, 0, 176, 203, 189, 0, 176, 209, 225, 1, 176, 116, 81, 0, 176, 152, 180,
-			0, 176, 243, 183, 1, 176, 213, 81, 1, 176, 116, 61, 38, 5, 49, 52, 68, 36, 4, 104, 75, 10, 0, 176, 122, 199, 0, 176, 57, 1,
-			1, 176, 86, 82, 0, 176, 65, 183, 2, 41, 68, 1, 1, 176, 231, 82, 0, 176, 122, 1, 1, 176, 56, 83, 0, 176, 61, 195, 0, 176,
-			125, 247, 1, 176, 169, 83, 49, 52, 68, 36, 0, 176, 53, 227, 0, 176, 123, 181, 1, 176, 10, 84, 0, 176, 22, 185, 0, 176, 78, 182,
-			1, 176, 107, 84, 0, 176, 48, 235, 0, 176, 253, 181, 5, 146, 176, 82, 1, 0, 5, 146, 40, 52, 1, 0, 5, 146, 168, 53, 1, 0,
-			5, 146, 40, 52, 1, 0, 5, 146, 40, 52, 1, 0, 5, 146, 168, 52, 1, 0, 5, 146, 168, 52, 1, 0, 5, 146, 40, 52, 1, 0,
-			5, 146, 40, 52, 1, 0, 5, 146, 168, 51, 1, 0, 0, 162, 146, 50, 77, 9, 98, 162, 6, 106, 0, 208, 143, 38, 0, 208, 208, 38,
-			0, 208, 17, 39, 0, 208, 82, 39, 0, 208, 147, 39, 0, 208, 212, 39, 138, 41, 1, 176, 216, 12, 0, 176, 70, 40, 0, 162, 25, 50,
-			87, 9, 230, 171, 6, 106, 0, 208, 134, 44, 0, 208, 183, 44, 0, 208, 232, 44, 0, 208, 25, 45, 0, 208, 74, 45, 0, 208, 123, 45,
-			0, 39, 0, 176, 254, 45, 138, 41, 1, 176, 204, 84, 1, 0, 0, 145, 194, 0, 31, 36, 0, 208, 97, 22, 0, 176, 204, 24, 2, 41,
-			18, 104, 6, 106, 0, 208, 82, 32, 0, 208, 147, 32, 0, 208, 212, 32, 0, 208, 21, 33, 0, 208, 70, 33, 0, 208, 151, 33, 32, 238,
-			200, 33, 0, 176, 233, 33, 0, 162, 35, 18, 0, 0, 0, 0, 0, 176, 10, 34, 1, 0, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162,
-			210, 18, 73, 1, 84, 65, 0, 192, 55, 101, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 0, 192, 153, 172,
-			0, 162, 18, 2, 75, 1, 84, 65, 0, 192, 186, 128, 0, 161, 21, 21, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 129, 194,
-			20, 66, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 220, 103, 2, 161, 213, 3, 73, 5, 226, 155,
-			2, 162, 210, 19, 73, 5, 226, 155, 177, 196, 253, 84, 2, 161, 213, 3, 73, 5, 226, 155, 2, 162, 210, 19, 73, 5, 226, 155, 0, 197,
-			105, 176, 3, 13, 201, 116, 0, 149, 0, 161, 213, 3, 85, 1, 246, 221, 1, 192, 172, 85, 4, 13, 201, 116, 104, 149, 0, 161, 213, 3,
-			85, 1, 246, 221, 1, 197, 192, 87, 2, 13, 149, 201, 0, 161, 25, 3, 85, 1, 246, 221, 65, 193, 67, 45, 0, 161, 25, 3, 73, 1,
-			100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 133, 41, 32, 195, 40, 144, 32, 195, 40, 144, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162,
-			146, 18, 77, 1, 98, 162, 97, 196, 144, 90, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 192, 195, 130, 169,
-			0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 1, 192, 174, 92, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162,
-			18, 2, 73, 1, 100, 171, 1, 192, 169, 95, 1, 176, 204, 84, 68, 34, 1, 176, 225, 98, 0, 176, 183, 0, 68, 34, 0, 176, 211, 191,
-			0, 176, 198, 212, 0, 176, 38, 222, 1, 176, 34, 99, 68, 34, 1, 176, 253, 14, 0, 176, 207, 200, 0, 176, 228, 197, 0, 176, 27, 239,
-			0, 176, 157, 209, 68, 34, 0, 176, 77, 190, 50, 34, 1, 176, 70, 19, 0, 176, 57, 1, 0, 176, 40, 254, 1, 176, 115, 99, 1, 176,
-			180, 99, 1, 176, 5, 100, 1, 176, 102, 100, 1, 176, 183, 100, 1, 176, 8, 101, 68, 34, 0, 176, 134, 198, 0, 176, 183, 227, 1, 176,
-			105, 101, 0, 176, 235, 208, 1, 176, 169, 83, 68, 34, 1, 176, 53, 17, 0, 176, 123, 181, 1, 176, 170, 101, 1, 176, 97, 65, 1, 176,
-			251, 101, 0, 176, 86, 231, 1, 176, 92, 102, 1, 176, 189, 102, 68, 34, 0, 176, 224, 229, 1, 176, 106, 58, 1, 176, 139, 25, 1, 176,
-			30, 103, 1, 176, 111, 103, 1, 176, 192, 103, 0, 176, 203, 246, 0, 176, 57, 1, 0, 176, 12, 229, 1, 176, 106, 20, 108, 17, 1, 176,
-			5, 19, 0, 176, 252, 199, 0, 176, 235, 254, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 124, 1, 138, 41, 138, 42, 2, 104, 124, 1,
-			1, 176, 62, 15, 1, 176, 70, 19, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 113, 1, 138, 41, 138, 42, 2, 104, 113, 1, 1, 176,
-			87, 66, 0, 176, 50, 216, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 109, 1, 138, 41, 138, 42, 2, 104, 109, 1, 0, 176, 12, 229,
-			0, 176, 206, 219, 0, 176, 78, 182, 1, 176, 184, 24, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 111, 1, 138, 41, 138, 42, 2, 104,
-			111, 1, 0, 176, 245, 244, 0, 176, 188, 181, 2, 13, 175, 201, 1, 176, 17, 104, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 110, 1,
-			138, 41, 138, 42, 2, 104, 110, 1, 0, 176, 251, 223, 0, 176, 122, 1, 0, 161, 222, 19, 87, 1, 246, 204, 0, 162, 18, 2, 85, 1,
-			118, 205, 133, 41, 0, 197, 251, 119, 0, 192, 251, 119, 1, 47, 0, 176, 233, 59, 0, 161, 213, 3, 85, 9, 246, 221, 0, 162, 18, 2,
-			85, 41, 246, 221, 2, 47, 5, 104, 0, 176, 75, 60, 192, 243, 251, 119, 0, 176, 173, 60, 192, 243, 251, 119, 1, 176, 62, 15, 57, 34,
-			0, 176, 122, 199, 0, 176, 46, 205, 0, 176, 187, 199, 1, 176, 213, 29, 0, 176, 27, 239, 0, 176, 8, 208, 1, 176, 82, 104, 1, 176,
-			147, 104, 1, 176, 212, 104, 1, 176, 135, 19, 1, 176, 87, 66, 1, 176, 242, 22, 0, 176, 3, 202, 0, 176, 81, 191, 0, 161, 25, 3,
-			173, 1, 238, 188, 0, 162, 146, 18, 173, 1, 110, 189, 192, 195, 197, 236, 0, 161, 222, 19, 87, 1, 246, 204, 0, 162, 18, 2, 85, 1,
-			118, 205, 133, 41, 0, 197, 251, 119, 0, 192, 251, 119, 0, 161, 213, 3, 85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 1, 47,
-			0, 176, 233, 59, 0, 176, 173, 60, 192, 243, 251, 119, 0, 176, 92, 219, 108, 17, 0, 176, 183, 0, 13, 17, 0, 176, 206, 219, 0, 176,
-			206, 219, 0, 176, 248, 0, 38, 5, 1, 176, 62, 15, 0, 176, 122, 1, 0, 176, 233, 180, 0, 176, 187, 1, 0, 176, 162, 183, 0, 176,
-			34, 244, 0, 176, 143, 182, 0, 176, 107, 194, 1, 176, 108, 78, 1, 176, 108, 78, 13, 17, 107, 34, 1, 176, 21, 105, 1, 176, 108, 78,
-			13, 17, 0, 176, 122, 199, 128, 40, 0, 176, 203, 189, 0, 176, 198, 212, 0, 176, 203, 189, 128, 40, 0, 176, 203, 189, 0, 176, 115, 230,
-			1, 176, 86, 105, 0, 176, 101, 253, 130, 40, 0, 176, 12, 229, 0, 176, 248, 0, 59, 34, 5, 104, 224, 236, 84, 26, 0, 176, 46, 205,
-			60, 34, 5, 104, 32, 238, 73, 27, 0, 176, 207, 190, 0, 176, 231, 253, 0, 176, 157, 224, 0, 176, 253, 181, 130, 40, 0, 176, 32, 201,
-			1, 176, 145, 28, 0, 176, 123, 181, 1, 176, 142, 21, 0, 176, 157, 209, 0, 176, 238, 209, 1, 176, 151, 105, 2, 41, 55, 1, 1, 176,
-			232, 105, 138, 41, 122, 1, 6, 106, 0, 208, 204, 27, 0, 208, 253, 27, 0, 208, 46, 28, 0, 208, 95, 28, 0, 208, 144, 28, 0, 208,
-			209, 28, 0, 39, 0, 176, 18, 29, 1, 176, 57, 106, 138, 41, 59, 1, 0, 145, 194, 0, 28, 32, 224, 236, 171, 24, 4, 96, 2, 39,
-			128, 237, 171, 24, 1, 176, 122, 106, 0, 145, 93, 1, 0, 176, 103, 185, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1,
-			84, 65, 133, 41, 0, 197, 74, 172, 55, 34, 0, 192, 2, 102, 128, 199, 55, 101, 0, 161, 21, 28, 75, 9, 98, 170, 0, 162, 18, 2,
-			77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47,
-			32, 243, 109, 53, 0, 176, 60, 53, 32, 243, 109, 53, 0, 162, 25, 18, 13, 1, 98, 170, 133, 41, 5, 104, 0, 176, 143, 69, 0, 240,
-			192, 69, 0, 176, 109, 72, 0, 240, 40, 137, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 173, 54,
-			133, 41, 5, 104, 0, 176, 222, 54, 0, 240, 188, 113, 0, 176, 157, 57, 96, 249, 188, 113, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162,
-			146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 60, 117, 0, 192, 249, 122, 0, 176, 85, 0, 0, 176, 57, 1, 0, 176, 102, 242, 0, 176,
-			206, 219, 0, 176, 227, 252, 0, 176, 233, 180, 0, 176, 123, 181, 0, 176, 175, 229, 0, 176, 162, 183, 0, 176, 68, 184, 0, 176, 6, 203,
-			0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 1, 192, 67, 23, 0, 176, 215, 198, 0, 176, 203, 189, 38, 5,
-			0, 176, 115, 244, 0, 176, 248, 0, 0, 176, 12, 229, 0, 176, 27, 239, 0, 176, 141, 219, 0, 176, 87, 180, 0, 176, 198, 212, 0, 176,
-			123, 181, 0, 176, 222, 239, 1, 176, 171, 106, 0, 176, 11, 214, 0, 176, 202, 213, 0, 176, 253, 181, 1, 176, 42, 14, 0, 176, 175, 229,
-			0, 176, 133, 212, 0, 176, 162, 183, 60, 1, 0, 145, 208, 0, 1, 0, 2, 43, 51, 1, 1, 176, 236, 106, 2, 13, 129, 202, 1, 176,
-			29, 107, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 48, 50, 47, 50, 49, 34, 0, 192, 252, 134, 0, 192,
-			40, 137, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 133, 41, 0, 192, 55, 101, 34, 34, 96, 196, 37, 100,
-			51, 50, 52, 34, 0, 192, 37, 100, 14, 34, 0, 192, 55, 101, 55, 34, 0, 192, 2, 102, 0, 192, 0, 103, 0, 161, 213, 3, 77, 1,
-			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 34, 50, 51, 50, 52, 34, 0, 192, 12, 105, 160, 197, 232, 107, 0, 176, 85, 0, 0, 176,
-			57, 1, 136, 40, 0, 176, 206, 219, 0, 176, 57, 199, 1, 176, 106, 20, 0, 176, 32, 201, 0, 176, 123, 181, 0, 161, 213, 3, 76, 5,
-			92, 139, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 129, 194, 78, 107, 55, 34, 0, 192, 109, 121, 193, 195, 78, 107, 0, 161, 213, 3,
-			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 1, 192, 67, 23, 2, 41, 1, 1, 0, 41, 124, 1, 108, 18, 0, 176, 87, 180,
-			2, 41, 1, 1, 0, 41, 124, 1, 0, 176, 22, 180, 2, 41, 1, 1, 0, 41, 125, 1, 0, 176, 248, 0, 2, 41, 1, 1, 0, 41,
-			126, 1, 0, 176, 57, 1, 2, 41, 1, 1, 0, 41, 127, 1, 0, 176, 233, 180, 2, 41, 1, 1, 0, 41, 128, 1, 0, 176, 123, 181,
-			2, 41, 1, 1, 0, 176, 22, 180, 2, 41, 1, 1, 0, 176, 248, 0, 2, 41, 1, 1, 0, 176, 57, 1, 2, 41, 1, 1, 0, 176,
-			233, 180, 2, 41, 1, 1, 0, 176, 123, 181, 5, 146, 40, 52, 1, 0, 5, 146, 4, 181, 1, 0, 13, 18, 108, 34, 0, 176, 92, 219,
-			1, 176, 253, 14, 0, 176, 215, 198, 108, 34, 0, 176, 92, 219, 1, 176, 253, 14, 38, 5, 0, 176, 57, 1, 0, 176, 248, 0, 0, 176,
-			180, 244, 0, 176, 251, 223, 0, 176, 123, 181, 1, 176, 142, 21, 1, 176, 118, 17, 0, 176, 68, 184, 0, 176, 240, 182, 1, 176, 97, 109,
-			0, 176, 105, 232, 0, 176, 165, 184, 0, 176, 125, 247, 0, 176, 22, 185, 5, 146, 168, 54, 1, 0, 108, 34, 0, 176, 92, 219, 1, 176,
-			253, 14, 13, 18, 108, 34, 0, 176, 92, 219, 0, 176, 15, 220, 38, 5, 0, 176, 118, 227, 38, 5, 0, 176, 92, 239, 0, 176, 215, 217,
-			0, 176, 27, 239, 0, 176, 180, 244, 0, 176, 58, 181, 0, 176, 233, 180, 0, 176, 53, 227, 0, 176, 123, 181, 38, 5, 0, 176, 57, 1,
-			0, 176, 206, 219, 0, 176, 115, 230, 0, 176, 122, 1, 0, 176, 187, 1, 0, 176, 68, 184, 0, 176, 10, 194, 0, 176, 85, 0, 38, 5,
-			0, 176, 92, 239, 0, 176, 245, 244, 0, 176, 183, 0, 0, 176, 248, 0, 0, 176, 152, 180, 0, 176, 233, 180, 1, 176, 145, 28, 0, 176,
-			57, 1, 0, 176, 12, 229, 1, 176, 106, 20, 0, 176, 252, 199, 0, 176, 235, 254, 6, 106, 0, 208, 238, 21, 0, 208, 31, 22, 0, 208,
-			64, 22, 96, 223, 97, 22, 0, 208, 146, 22, 0, 208, 211, 22, 2, 39, 128, 237, 171, 24, 1, 197, 194, 109, 81, 181, 92, 9, 1, 176,
-			9, 115, 0, 176, 206, 219, 38, 5, 0, 176, 166, 253, 1, 176, 222, 9, 1, 176, 47, 10, 0, 176, 105, 254, 0, 176, 205, 243, 1, 176,
-			161, 10, 1, 176, 228, 16, 1, 176, 70, 19, 0, 176, 12, 229, 0, 176, 141, 219, 0, 176, 253, 181, 1, 176, 171, 20, 0, 176, 235, 254,
-			0, 176, 251, 223, 0, 176, 227, 252, 2, 13, 175, 201, 1, 176, 17, 104, 0, 176, 57, 1, 1, 176, 9, 115, 0, 176, 12, 190, 0, 176,
-			180, 244, 0, 176, 202, 213, 0, 176, 233, 180, 0, 176, 187, 1, 38, 5, 1, 176, 70, 19, 0, 176, 12, 229, 2, 13, 168, 201, 1, 176,
-			210, 28, 73, 43, 0, 176, 212, 241, 1, 176, 126, 59, 73, 43, 0, 176, 156, 233, 0, 176, 215, 198, 1, 176, 250, 62, 0, 176, 245, 244,
-			4, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 0, 192, 55, 101, 2, 44, 2, 43, 82, 1, 0, 145, 193, 2,
-			1, 0, 4, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 220, 103, 96, 196, 245, 108, 4, 161,
-			213, 3, 77, 1, 228, 154, 133, 41, 1, 197, 74, 115, 1, 197, 74, 115, 6, 161, 213, 3, 75, 1, 162, 162, 0, 162, 146, 18, 75, 1,
-			110, 189, 193, 195, 122, 116, 31, 37, 99, 1, 3, 96, 0, 145, 234, 5, 1, 0, 0, 176, 85, 0, 0, 176, 85, 0, 38, 5, 0, 176,
-			157, 224, 38, 5, 0, 176, 57, 1, 0, 176, 248, 0, 0, 176, 248, 0, 0, 176, 12, 190, 0, 176, 12, 190, 0, 176, 22, 180, 1, 176,
-			126, 59, 0, 176, 122, 1, 0, 176, 122, 1, 0, 176, 233, 180, 0, 176, 233, 180, 0, 176, 245, 244, 0, 176, 187, 1, 109, 16, 0, 176,
-			22, 180, 0, 176, 22, 180, 0, 176, 248, 0, 0, 176, 248, 0, 1, 176, 62, 15, 0, 176, 57, 1, 0, 176, 251, 223, 0, 176, 251, 223,
-			1, 176, 135, 19, 1, 176, 135, 19, 1, 176, 9, 20, 0, 176, 85, 0, 1, 176, 106, 20, 1, 176, 5, 19, 0, 176, 12, 229, 0, 176,
-			248, 0, 1, 176, 62, 15, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 233, 180, 1, 176, 135, 19, 1, 176, 135, 19, 0, 176, 162, 183,
-			1, 176, 118, 17, 0, 176, 92, 219, 2, 13, 144, 201, 13, 18, 1, 176, 106, 20, 0, 176, 198, 212, 1, 176, 213, 29, 1, 176, 213, 29,
-			0, 176, 206, 219, 0, 176, 12, 229, 1, 176, 62, 15, 0, 176, 57, 1, 0, 176, 32, 201, 0, 176, 32, 201, 1, 176, 135, 19, 1, 176,
-			135, 19, 1, 176, 9, 20, 0, 176, 10, 194, 2, 43, 2, 104, 6, 96, 138, 39, 3, 104, 56, 1, 2, 96, 59, 1, 0, 145, 208, 0,
-			1, 0, 2, 13, 185, 201, 6, 106, 0, 208, 226, 187, 0, 208, 19, 188, 0, 208, 68, 188, 0, 208, 133, 188, 0, 208, 182, 188, 0, 208,
-			231, 188, 2, 39, 64, 236, 236, 5, 0, 176, 95, 6, 46, 34, 4, 104, 95, 10, 1, 176, 102, 118, 1, 176, 151, 118, 0, 176, 122, 199,
-			38, 5, 1, 176, 200, 118, 38, 5, 0, 176, 142, 190, 55, 17, 0, 176, 101, 253, 3, 13, 201, 105, 0, 153, 44, 5, 0, 176, 180, 230,
-			109, 16, 0, 176, 12, 190, 1, 13, 0, 97, 1, 176, 5, 19, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 211, 191, 0, 176, 32, 201,
-			114, 17, 0, 176, 252, 199, 0, 176, 235, 254, 0, 176, 146, 191, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162,
-			133, 41, 0, 192, 42, 167, 0, 192, 130, 169, 0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195,
-			105, 176, 55, 34, 0, 192, 109, 121, 160, 197, 105, 176, 0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41,
-			32, 195, 249, 122, 192, 195, 249, 122, 6, 106, 0, 208, 238, 21, 0, 208, 31, 22, 0, 208, 64, 22, 96, 223, 97, 22, 0, 208, 146, 22,
-			0, 208, 211, 22, 2, 39, 128, 237, 171, 24, 1, 197, 194, 109, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65,
-			133, 41, 0, 192, 33, 98, 34, 34, 0, 192, 37, 100, 55, 34, 0, 192, 2, 102, 0, 192, 153, 172, 0, 161, 25, 3, 64, 9, 118, 90,
-			0, 162, 18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 198, 4, 16, 223, 247, 4, 16, 223, 40, 5, 16, 223, 89, 5, 16, 223, 138, 5,
-			16, 223, 187, 5, 2, 39, 224, 236, 236, 5, 0, 176, 254, 13, 64, 246, 218, 16, 13, 48, 108, 32, 2, 104, 5, 96, 0, 176, 233, 11,
-			0, 240, 177, 6, 1, 0, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 0, 192, 220, 109, 0, 192, 44, 112, 3, 13, 201, 116, 0, 149,
-			0, 161, 227, 83, 85, 1, 246, 221, 133, 41, 0, 192, 188, 113, 0, 192, 188, 113, 38, 5, 108, 17, 0, 176, 115, 244, 38, 5, 0, 176,
-			77, 190, 0, 176, 12, 229, 0, 176, 180, 244, 0, 176, 32, 201, 0, 176, 78, 182, 0, 176, 123, 181, 0, 176, 54, 245, 0, 176, 253, 181,
-			0, 176, 119, 245, 0, 176, 216, 245, 0, 176, 61, 195, 0, 176, 34, 244, 0, 176, 41, 246, 0, 176, 122, 246, 0, 176, 203, 246, 0, 176,
-			28, 247, 0, 176, 125, 247, 0, 176, 206, 247, 0, 176, 31, 248, 0, 176, 209, 248, 0, 176, 34, 249, 0, 176, 115, 249, 0, 176, 196, 249,
-			0, 176, 89, 228, 0, 176, 21, 250, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 165, 65,
-			0, 176, 56, 66, 0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18, 79, 9, 98, 155, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104,
-			0, 176, 1, 52, 0, 240, 50, 52, 34, 34, 5, 104, 0, 176, 100, 47, 192, 243, 244, 53, 0, 176, 60, 53, 192, 243, 244, 53, 28, 34,
-			0, 192, 8, 156, 29, 34, 0, 192, 93, 157, 30, 34, 0, 192, 252, 158, 31, 34, 0, 192, 161, 160, 32, 34, 96, 196, 167, 250, 33, 34,
-			0, 197, 167, 250, 96, 196, 127, 165, 0, 176, 183, 0, 0, 176, 12, 229, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 187, 1, 0, 161,
-			213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 1, 192, 67, 23, 1, 192, 67, 23, 0, 161, 217, 19, 77, 5,
-			98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176, 143, 69, 193, 243, 67, 23, 0, 176,
-			25, 172, 193, 248, 67, 23, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 42, 167, 0, 192,
-			130, 169, 0, 161, 217, 19, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 208, 51, 133, 41, 5, 104, 0, 176,
-			143, 69, 192, 243, 42, 167, 0, 176, 25, 172, 192, 248, 130, 169, 136, 40, 70, 10, 0, 176, 46, 205, 136, 40, 70, 10, 1, 176, 105, 101,
-			136, 40, 70, 10, 0, 176, 73, 208, 136, 40, 70, 10, 0, 176, 188, 181, 0, 176, 180, 244, 1, 176, 5, 19, 0, 176, 27, 239, 1, 176,
-			249, 118, 0, 176, 244, 226, 1, 176, 90, 119, 0, 176, 196, 216, 1, 176, 155, 119, 0, 176, 170, 254, 0, 161, 25, 3, 173, 1, 238, 188,
-			0, 162, 146, 18, 173, 1, 110, 189, 192, 195, 197, 236, 92, 43, 2, 104, 2, 96, 64, 1, 0, 145, 208, 0, 1, 0, 0, 176, 118, 207,
-			0, 176, 57, 1, 0, 176, 105, 254, 0, 176, 141, 219, 0, 176, 12, 229, 0, 176, 251, 223, 0, 176, 34, 244, 1, 176, 161, 22, 0, 176,
-			85, 0, 1, 176, 12, 59, 35, 19, 0, 176, 203, 189, 0, 176, 206, 219, 109, 19, 0, 176, 85, 0, 38, 5, 0, 176, 77, 190, 111, 19,
-			38, 5, 0, 176, 85, 0, 0, 176, 58, 181, 113, 19, 0, 176, 85, 0, 0, 176, 146, 191, 115, 19, 0, 176, 85, 0, 0, 176, 211, 191,
-			0, 176, 248, 0, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 123, 181, 0, 176, 174, 255, 1, 176, 59, 63, 0, 176, 6, 203, 1, 176,
-			220, 119, 0, 176, 57, 1, 0, 176, 253, 181, 0, 176, 187, 1, 0, 176, 46, 205, 0, 176, 175, 229, 0, 176, 251, 223, 2, 13, 175, 201,
-			1, 176, 108, 78, 0, 176, 57, 199, 58, 36, 3, 0, 144, 40, 3, 0, 9, 104, 141, 40, 2, 104, 113, 1, 113, 38, 8, 0, 142, 40,
-			2, 104, 113, 1, 0, 176, 176, 205, 0, 176, 118, 207, 1, 176, 9, 115, 0, 176, 122, 199, 92, 61, 8, 0, 92, 45, 7, 0, 111, 1,
-			112, 1, 1, 0, 92, 61, 8, 0, 92, 45, 7, 0, 108, 1, 2, 96, 40, 1, 1, 0, 93, 45, 7, 0, 110, 1, 2, 96, 36, 1,
-			1, 0, 93, 61, 8, 0, 93, 45, 7, 0, 104, 1, 0, 145, 54, 5, 1, 0, 93, 61, 8, 0, 93, 45, 7, 0, 118, 1, 2, 96,
-			100, 1, 1, 0, 93, 61, 8, 0, 93, 45, 7, 0, 64, 1, 0, 145, 208, 0, 1, 0, 2, 13, 144, 201, 0, 176, 176, 205, 2, 13,
-			155, 201, 0, 176, 12, 190, 2, 13, 140, 202, 0, 176, 202, 213, 1, 13, 0, 111, 1, 176, 222, 9, 1, 13, 0, 117, 0, 176, 123, 181,
-			2, 13, 175, 201, 0, 176, 40, 254, 2, 161, 213, 3, 73, 5, 226, 155, 2, 162, 210, 19, 73, 5, 226, 155, 177, 196, 253, 84, 0, 161,
-			21, 21, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 129, 194, 61, 120, 3, 13, 201, 116, 0, 149, 0, 161, 213, 3, 85, 1,
-			246, 221, 1, 192, 91, 37, 3, 13, 202, 100, 0, 145, 0, 161, 213, 3, 85, 1, 246, 221, 0, 176, 157, 57, 0, 240, 209, 58, 2, 13,
-			190, 201, 0, 162, 136, 20, 73, 13, 96, 170, 0, 161, 10, 19, 77, 9, 96, 170, 31, 48, 30, 32, 0, 176, 80, 46, 0, 176, 161, 46,
-			0, 176, 183, 0, 136, 40, 0, 176, 72, 213, 0, 176, 248, 0, 0, 176, 57, 1, 0, 176, 233, 180, 0, 176, 105, 254, 0, 176, 162, 183,
-			3, 13, 108, 116, 0, 35, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 33, 195, 111, 74, 0};
-		autoFileInMemory espeakdata_phons3 = FileInMemory_createWithData (20426, reinterpret_cast<const char *> (&espeakdata_phons3_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/phonindex", 
+		static unsigned char espeakdata_phons3_data[25029] = {
+			1, 72, 1, 0, 0, 161, 213, 131, 0, 0, 0, 0, 0, 162, 18, 130, 0, 0, 0, 0, 0, 192, 2, 0, 0, 176, 86, 0, 2, 13,
+			153, 201, 16, 52, 34, 36, 1, 13, 0, 32, 25, 10, 0, 176, 135, 0, 0, 176, 184, 0, 0, 176, 249, 0, 38, 5, 0, 176, 58, 1,
+			0, 176, 123, 1, 0, 176, 188, 1, 3, 13, 204, 109, 0, 169, 134, 40, 95, 10, 2, 47, 0, 176, 253, 1, 0, 176, 94, 2, 3, 13,
+			204, 110, 0, 169, 134, 40, 95, 10, 2, 47, 0, 176, 191, 2, 0, 176, 16, 3, 4, 13, 139, 197, 169, 204, 0, 176, 97, 3, 192, 195,
+			178, 3, 3, 13, 204, 114, 0, 169, 0, 176, 53, 4, 3, 13, 204, 108, 0, 169, 0, 176, 134, 4, 2, 13, 185, 201, 138, 41, 46, 1,
+			6, 106, 16, 223, 199, 4, 16, 223, 248, 4, 16, 223, 41, 5, 16, 223, 90, 5, 16, 223, 139, 5, 16, 223, 188, 5, 2, 39, 224, 236,
+			237, 5, 0, 39, 0, 176, 14, 6, 47, 48, 48, 48, 49, 32, 0, 176, 63, 6, 0, 176, 96, 6, 50, 34, 5, 104, 0, 176, 145, 6,
+			0, 240, 178, 6, 47, 48, 48, 48, 49, 32, 0, 176, 136, 11, 138, 39, 0, 176, 185, 11, 0, 176, 234, 11, 0, 240, 178, 6, 1, 13,
+			0, 114, 52, 36, 1, 13, 0, 32, 0, 161, 25, 3, 75, 1, 96, 170, 0, 162, 18, 34, 75, 9, 96, 170, 0, 176, 11, 12, 16, 244,
+			60, 12, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 255, 13, 32, 243, 64, 14,
+			1, 13, 0, 114, 0, 161, 25, 3, 64, 9, 118, 90, 0, 162, 18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 199, 4, 16, 223, 248, 4,
+			16, 223, 41, 5, 16, 223, 90, 5, 16, 223, 139, 5, 16, 223, 188, 5, 2, 39, 224, 236, 237, 5, 0, 176, 255, 13, 0, 240, 219, 16,
+			2, 13, 128, 202, 138, 41, 5, 104, 0, 176, 236, 17, 32, 243, 45, 18, 0, 176, 236, 17, 176, 244, 45, 18, 6, 106, 0, 208, 239, 21,
+			0, 208, 32, 22, 0, 208, 65, 22, 96, 223, 98, 22, 0, 208, 147, 22, 0, 208, 212, 22, 1, 0, 138, 41, 56, 1, 138, 41, 17, 104,
+			6, 108, 64, 236, 5, 23, 128, 237, 70, 23, 32, 238, 135, 23, 32, 238, 184, 23, 128, 237, 249, 23, 128, 237, 74, 24, 0, 176, 139, 24,
+			1, 0, 0, 145, 192, 0, 28, 32, 224, 236, 172, 24, 4, 96, 2, 39, 128, 237, 172, 24, 0, 39, 0, 176, 205, 24, 47, 32, 0, 176,
+			254, 24, 56, 32, 0, 176, 31, 25, 0, 176, 64, 25, 2, 41, 55, 1, 6, 108, 64, 236, 5, 23, 128, 237, 70, 23, 32, 238, 135, 23,
+			32, 238, 184, 23, 128, 237, 249, 23, 128, 237, 74, 24, 57, 37, 0, 176, 135, 23, 58, 37, 0, 176, 135, 23, 0, 176, 139, 24, 2, 41,
+			55, 1, 0, 145, 192, 0, 57, 37, 0, 176, 97, 25, 58, 37, 0, 176, 146, 25, 6, 108, 64, 236, 211, 25, 224, 236, 20, 26, 128, 237,
+			97, 25, 32, 238, 85, 26, 224, 236, 150, 26, 128, 237, 146, 25, 1, 0, 2, 41, 55, 1, 6, 108, 0, 224, 231, 26, 0, 224, 8, 27,
+			0, 224, 41, 27, 0, 224, 74, 27, 0, 224, 123, 27, 192, 238, 172, 27, 0, 176, 139, 24, 2, 13, 142, 202, 1, 162, 30, 82, 0, 0,
+			0, 0, 6, 106, 0, 208, 205, 27, 0, 208, 254, 27, 0, 208, 47, 28, 0, 208, 96, 28, 0, 208, 145, 28, 0, 208, 210, 28, 0, 39,
+			0, 176, 19, 29, 0, 176, 84, 29, 2, 13, 173, 201, 0, 176, 149, 29, 138, 41, 63, 1, 128, 237, 198, 29, 0, 39, 0, 176, 247, 29,
+			0, 176, 56, 30, 2, 41, 23, 104, 6, 106, 0, 208, 105, 30, 0, 208, 154, 30, 0, 208, 203, 30, 0, 208, 252, 30, 0, 208, 45, 31,
+			0, 208, 94, 31, 32, 238, 143, 31, 8, 44, 3, 104, 0, 176, 176, 31, 0, 176, 209, 31, 11, 96, 0, 162, 25, 18, 0, 0, 0, 0,
+			31, 32, 3, 104, 0, 176, 2, 32, 0, 176, 67, 32, 1, 0, 2, 43, 21, 104, 6, 106, 0, 208, 116, 32, 0, 208, 181, 32, 0, 208,
+			246, 32, 0, 208, 55, 33, 0, 208, 104, 33, 0, 208, 185, 33, 32, 238, 234, 33, 0, 39, 3, 104, 0, 176, 11, 34, 7, 96, 0, 162,
+			35, 18, 0, 0, 0, 0, 0, 176, 44, 34, 1, 0, 31, 32, 1, 13, 0, 32, 138, 41, 1, 1, 6, 106, 0, 208, 93, 34, 0, 208,
+			142, 34, 0, 208, 191, 34, 0, 208, 240, 34, 0, 208, 33, 35, 0, 208, 98, 35, 31, 32, 128, 237, 147, 35, 0, 39, 0, 176, 180, 35,
+			1, 0, 0, 162, 18, 34, 75, 9, 84, 65, 2, 47, 11, 104, 0, 161, 25, 3, 75, 1, 212, 114, 133, 41, 3, 104, 0, 176, 213, 35,
+			0, 176, 22, 36, 6, 106, 0, 208, 87, 36, 0, 208, 152, 36, 0, 208, 217, 36, 0, 208, 26, 37, 0, 208, 107, 37, 0, 208, 172, 37,
+			138, 39, 3, 43, 0, 176, 237, 37, 0, 39, 0, 176, 30, 38, 138, 41, 0, 176, 63, 38, 1, 0, 0, 162, 146, 50, 77, 9, 94, 162,
+			2, 47, 7, 104, 0, 161, 25, 3, 79, 1, 222, 154, 0, 176, 112, 38, 6, 106, 0, 208, 177, 38, 0, 208, 242, 38, 0, 208, 51, 39,
+			0, 208, 116, 39, 0, 208, 181, 39, 0, 208, 246, 39, 138, 39, 3, 43, 0, 176, 55, 40, 0, 55, 50, 32, 0, 176, 104, 40, 138, 41,
+			0, 176, 137, 40, 1, 0, 2, 13, 179, 201, 0, 161, 153, 18, 69, 73, 98, 170, 0, 162, 146, 50, 69, 73, 98, 170, 2, 47, 0, 176,
+			186, 40, 6, 106, 0, 208, 251, 40, 0, 208, 60, 41, 0, 208, 125, 41, 0, 208, 190, 41, 0, 208, 255, 41, 0, 208, 64, 42, 138, 39,
+			3, 43, 0, 176, 55, 40, 0, 55, 66, 32, 0, 176, 129, 42, 138, 41, 0, 176, 162, 42, 1, 0, 2, 13, 178, 201, 0, 162, 23, 114,
+			81, 13, 114, 205, 2, 47, 5, 104, 0, 208, 211, 42, 0, 176, 244, 42, 6, 106, 0, 208, 53, 43, 0, 208, 150, 43, 0, 208, 231, 43,
+			0, 208, 72, 44, 0, 208, 169, 44, 0, 208, 26, 45, 0, 39, 0, 176, 123, 45, 138, 41, 10, 104, 67, 36, 3, 104, 37, 10, 4, 96,
+			67, 37, 2, 104, 50, 10, 0, 176, 156, 45, 1, 0, 0, 162, 148, 50, 75, 13, 110, 189, 2, 47, 11, 104, 0, 161, 25, 3, 79, 1,
+			42, 172, 133, 41, 3, 104, 0, 176, 237, 45, 0, 176, 46, 46, 6, 106, 0, 208, 111, 46, 0, 208, 160, 46, 0, 208, 209, 46, 0, 208,
+			2, 47, 0, 208, 51, 47, 0, 208, 100, 47, 31, 32, 128, 237, 149, 47, 138, 39, 3, 43, 0, 176, 198, 47, 0, 39, 0, 176, 231, 47,
+			138, 41, 0, 176, 8, 48, 1, 0, 2, 13, 190, 201, 0, 162, 136, 20, 73, 13, 96, 170, 0, 161, 10, 19, 77, 9, 96, 170, 31, 48,
+			30, 32, 0, 176, 57, 48, 0, 176, 138, 48, 2, 13, 190, 201, 14, 37, 1, 13, 0, 114, 30, 50, 31, 34, 13, 104, 0, 161, 25, 3,
+			75, 1, 94, 170, 0, 176, 219, 48, 96, 249, 178, 6, 0, 176, 219, 48, 96, 249, 178, 6, 0, 161, 25, 3, 75, 9, 94, 170, 29, 34,
+			5, 104, 0, 176, 12, 49, 128, 252, 178, 6, 34, 34, 0, 176, 77, 49, 0, 162, 153, 20, 75, 13, 222, 169, 0, 161, 25, 3, 75, 1,
+			94, 170, 0, 176, 12, 49, 128, 252, 178, 6, 0, 162, 136, 20, 71, 77, 220, 169, 0, 161, 10, 19, 71, 9, 220, 169, 138, 41, 0, 176,
+			110, 49, 0, 176, 191, 49, 0, 162, 18, 34, 73, 9, 84, 73, 1, 47, 0, 176, 16, 50, 2, 47, 15, 104, 0, 161, 213, 3, 73, 5,
+			84, 73, 133, 41, 5, 104, 0, 176, 65, 50, 0, 240, 114, 50, 0, 176, 65, 50, 0, 240, 120, 51, 133, 41, 5, 104, 0, 176, 209, 51,
+			0, 240, 114, 50, 14, 34, 5, 104, 0, 176, 2, 52, 0, 240, 120, 51, 28, 34, 5, 104, 0, 176, 67, 52, 0, 240, 120, 51, 29, 34,
+			5, 104, 0, 176, 132, 52, 0, 240, 120, 51, 30, 34, 5, 104, 0, 176, 197, 52, 0, 240, 120, 51, 31, 34, 5, 104, 0, 176, 6, 53,
+			0, 240, 120, 51, 32, 34, 5, 104, 0, 176, 71, 53, 0, 240, 120, 51, 33, 34, 5, 104, 0, 176, 136, 53, 0, 240, 120, 51, 0, 176,
+			201, 53, 0, 240, 120, 51, 0, 161, 213, 3, 77, 5, 98, 170, 0, 162, 18, 34, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41,
+			5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 0, 176, 118, 55, 0, 240, 167, 55, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2,
+			76, 9, 94, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49,
+			64, 246, 46, 56, 0, 176, 118, 55, 64, 246, 46, 56, 0, 161, 213, 3, 81, 9, 238, 188, 0, 162, 18, 34, 81, 9, 46, 173, 1, 47,
+			0, 176, 231, 56, 133, 41, 5, 104, 0, 176, 24, 57, 0, 240, 73, 57, 0, 176, 215, 59, 0, 240, 8, 60, 3, 13, 202, 100, 0, 145,
+			0, 161, 227, 83, 85, 9, 246, 221, 0, 162, 18, 2, 85, 9, 246, 221, 1, 47, 0, 176, 231, 56, 2, 47, 11, 104, 133, 41, 5, 104,
+			0, 176, 24, 57, 0, 240, 73, 57, 0, 176, 215, 59, 0, 240, 11, 61, 133, 41, 5, 104, 0, 176, 24, 57, 0, 240, 73, 57, 0, 176,
+			215, 59, 0, 240, 11, 61, 0, 161, 227, 83, 85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 1, 47, 0, 176, 35, 62, 2, 47,
+			11, 104, 133, 41, 5, 104, 0, 176, 84, 62, 48, 242, 8, 60, 0, 176, 133, 62, 208, 242, 8, 60, 133, 41, 5, 104, 0, 176, 182, 62,
+			48, 242, 8, 60, 0, 176, 231, 62, 208, 242, 8, 60, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 1, 47,
+			0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240, 122, 63, 0, 176, 106, 64, 96, 249, 155, 64, 0, 161, 25, 3, 173, 9,
+			84, 90, 0, 162, 25, 18, 13, 9, 84, 73, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 61, 65, 0, 240, 110, 65, 0, 176, 174, 67,
+			0, 240, 110, 65, 133, 41, 5, 104, 0, 176, 223, 67, 0, 240, 110, 65, 0, 176, 16, 68, 0, 240, 110, 65, 0, 161, 25, 3, 169, 1,
+			84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 2, 47, 15, 104, 0, 162, 25, 50, 9, 5, 84, 73, 133, 41, 5, 104, 0, 176, 61, 65,
+			0, 240, 110, 65, 0, 176, 65, 68, 96, 249, 110, 65, 133, 41, 5, 104, 0, 176, 223, 67, 0, 240, 110, 65, 134, 40, 3, 43, 35, 10,
+			0, 176, 114, 68, 0, 240, 110, 65, 2, 13, 139, 202, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41,
+			0, 176, 179, 68, 0, 176, 228, 68, 0, 162, 25, 18, 13, 1, 98, 170, 2, 47, 0, 161, 25, 3, 15, 0, 90, 170, 133, 41, 5, 104,
+			0, 176, 37, 69, 0, 240, 86, 69, 0, 176, 152, 71, 0, 240, 86, 69, 0, 162, 25, 18, 13, 1, 98, 170, 2, 47, 9, 104, 0, 161,
+			25, 3, 15, 0, 92, 170, 0, 162, 25, 50, 13, 5, 92, 170, 133, 41, 5, 104, 0, 176, 201, 71, 96, 244, 250, 71, 0, 176, 167, 74,
+			80, 245, 250, 71, 0, 161, 25, 3, 75, 1, 232, 171, 0, 162, 18, 34, 75, 9, 232, 171, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176,
+			216, 74, 0, 240, 9, 75, 0, 176, 99, 77, 32, 248, 9, 75, 133, 41, 5, 104, 0, 176, 148, 77, 0, 240, 9, 75, 0, 176, 197, 77,
+			32, 248, 9, 75, 2, 13, 144, 202, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 34, 73, 9, 100, 171, 2, 47, 11, 104, 133, 41,
+			5, 104, 0, 176, 216, 74, 0, 240, 246, 77, 0, 176, 99, 77, 0, 240, 246, 77, 133, 41, 5, 104, 0, 176, 148, 77, 0, 240, 246, 77,
+			0, 176, 197, 77, 0, 240, 246, 77, 2, 13, 145, 202, 0, 161, 35, 83, 85, 9, 246, 221, 0, 162, 18, 34, 73, 9, 46, 173, 133, 41,
+			5, 104, 0, 176, 26, 80, 0, 245, 75, 80, 0, 176, 12, 83, 0, 245, 61, 83, 2, 13, 145, 202, 0, 161, 35, 83, 85, 9, 246, 221,
+			0, 162, 18, 34, 73, 9, 46, 173, 133, 41, 5, 104, 0, 176, 26, 80, 0, 240, 139, 85, 0, 176, 12, 83, 0, 245, 61, 88, 2, 13,
+			157, 202, 0, 161, 25, 3, 51, 5, 246, 221, 0, 162, 50, 18, 51, 5, 246, 221, 0, 176, 138, 90, 144, 241, 203, 90, 0, 161, 25, 3,
+			77, 9, 238, 188, 0, 162, 18, 34, 73, 9, 46, 173, 2, 47, 11, 104, 133, 41, 5, 104, 0, 176, 145, 92, 0, 240, 194, 92, 0, 176,
+			197, 94, 0, 240, 246, 94, 133, 41, 5, 104, 0, 176, 249, 96, 0, 240, 194, 92, 0, 176, 42, 97, 0, 240, 246, 94, 0, 161, 25, 3,
+			83, 9, 246, 221, 0, 162, 18, 34, 83, 9, 54, 220, 133, 41, 5, 104, 0, 176, 249, 96, 0, 240, 194, 92, 0, 176, 42, 97, 0, 240,
+			246, 94, 2, 13, 129, 202, 133, 41, 5, 104, 0, 176, 91, 97, 192, 243, 156, 97, 0, 176, 91, 97, 0, 245, 156, 97, 0, 161, 213, 26,
+			75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 133, 41, 0, 192, 91, 100, 34, 34, 96, 196, 95, 102, 51, 50, 52, 34, 0, 192,
+			95, 102, 14, 34, 0, 192, 113, 103, 55, 34, 0, 192, 60, 104, 0, 192, 58, 105, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18,
+			77, 1, 98, 162, 133, 41, 0, 192, 22, 106, 34, 50, 51, 50, 52, 34, 0, 192, 70, 107, 14, 34, 32, 195, 30, 109, 160, 197, 34, 110,
+			0, 161, 21, 28, 77, 5, 158, 162, 0, 162, 146, 18, 77, 1, 94, 162, 133, 41, 48, 194, 30, 109, 96, 196, 47, 111, 0, 161, 213, 3,
+			77, 1, 238, 188, 133, 41, 0, 192, 226, 111, 0, 192, 50, 114, 3, 13, 201, 116, 0, 149, 0, 161, 227, 83, 85, 1, 246, 221, 133, 41,
+			0, 192, 194, 115, 0, 192, 194, 115, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 131, 117,
+			96, 201, 150, 118, 0, 161, 213, 3, 75, 1, 238, 172, 0, 162, 146, 18, 75, 1, 110, 189, 2, 47, 0, 162, 146, 18, 75, 1, 238, 172,
+			133, 41, 0, 192, 66, 119, 34, 50, 51, 50, 52, 34, 0, 192, 113, 120, 31, 50, 38, 34, 0, 192, 1, 122, 55, 34, 0, 192, 115, 123,
+			14, 34, 96, 196, 255, 124, 0, 192, 52, 126, 6, 161, 213, 19, 73, 5, 226, 155, 2, 162, 146, 20, 73, 5, 98, 155, 133, 41, 128, 194,
+			105, 127, 33, 34, 0, 197, 196, 127, 0, 195, 105, 127, 0, 162, 18, 2, 75, 1, 84, 65, 0, 41, 0, 192, 12, 128, 0, 192, 192, 130,
+			0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 0, 192, 188, 132, 0, 192, 220, 134, 0, 161, 25, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 0, 192, 250, 71, 48, 50, 47, 50, 49, 34, 0, 192, 2, 137, 0, 192,
+			46, 139, 0, 161, 25, 3, 77, 1, 106, 172, 0, 162, 18, 2, 77, 1, 106, 172, 0, 41, 0, 192, 22, 141, 0, 192, 194, 143, 2, 13,
+			130, 202, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 0, 41, 192, 195, 46, 146, 160, 197, 46, 146, 2, 13,
+			130, 202, 0, 161, 35, 83, 51, 5, 246, 221, 0, 162, 35, 82, 51, 5, 246, 221, 0, 41, 0, 192, 75, 80, 0, 192, 61, 83, 2, 13,
+			149, 201, 0, 161, 35, 83, 51, 5, 246, 221, 0, 162, 18, 66, 51, 5, 246, 221, 0, 41, 0, 192, 139, 85, 0, 192, 61, 88, 2, 13,
+			172, 201, 6, 106, 0, 208, 239, 21, 0, 208, 32, 22, 0, 208, 65, 22, 96, 223, 98, 22, 0, 208, 147, 22, 0, 208, 212, 22, 2, 39,
+			128, 237, 172, 24, 192, 195, 149, 148, 0, 161, 25, 3, 51, 1, 246, 221, 0, 162, 146, 18, 51, 1, 246, 221, 0, 41, 0, 192, 38, 151,
+			0, 192, 203, 90, 0, 161, 25, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 0, 41, 192, 195, 112, 153, 64, 193, 71, 156,
+			0, 41, 96, 196, 156, 97, 0, 197, 156, 97, 1, 13, 0, 104, 28, 34, 0, 192, 140, 158, 29, 34, 0, 192, 225, 159, 30, 34, 0, 192,
+			128, 161, 31, 34, 0, 192, 37, 163, 32, 34, 0, 192, 139, 164, 33, 34, 0, 192, 58, 166, 96, 196, 3, 168, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 174, 169, 0, 192, 6, 172, 0, 161, 217, 19, 77, 5, 98, 170, 0, 162,
+			18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 201, 71, 192, 243, 174, 169, 0, 176, 157, 174, 192, 248,
+			6, 172, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 55, 34, 0, 192, 60, 104, 87, 41, 0, 192, 95, 102,
+			133, 41, 0, 197, 206, 174, 0, 192, 113, 103, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 133, 41, 0, 192,
+			91, 100, 55, 34, 0, 192, 60, 104, 0, 192, 29, 175, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41,
+			0, 192, 22, 106, 0, 192, 94, 176, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 18, 2, 85, 33, 246, 221, 133, 41, 0, 192, 239, 176,
+			160, 197, 32, 178, 0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195, 255, 124, 192, 195, 255, 124,
+			0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195, 237, 178, 55, 34, 0, 192, 115, 123, 160, 197,
+			237, 178, 0, 161, 213, 3, 76, 5, 92, 139, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 128, 194, 237, 178, 30, 52, 31, 36, 128, 194,
+			174, 180, 32, 52, 33, 36, 144, 193, 136, 182, 224, 193, 136, 182, 1, 0, 0, 161, 25, 3, 77, 1, 98, 170, 133, 41, 0, 192, 250, 71,
+			0, 192, 169, 184, 128, 40, 4, 104, 108, 1, 0, 176, 149, 186, 0, 176, 214, 186, 0, 176, 149, 186, 0, 176, 249, 0, 0, 176, 23, 187,
+			38, 5, 0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 185, 187, 0, 176, 250, 187, 0, 176, 59, 188, 0, 176, 124, 188, 0, 176, 205, 188,
+			0, 176, 14, 189, 0, 176, 111, 189, 0, 176, 192, 189, 0, 176, 33, 190, 0, 176, 114, 190, 0, 176, 195, 190, 0, 176, 36, 191, 0, 176,
+			149, 191, 0, 145, 91, 1, 2, 41, 0, 176, 230, 191, 1, 0, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65,
+			133, 41, 0, 197, 206, 174, 87, 41, 0, 192, 95, 102, 55, 34, 0, 192, 60, 104, 0, 192, 113, 103, 0, 161, 213, 3, 77, 1, 96, 170,
+			0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 224, 193, 30, 109, 192, 195, 23, 192, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2,
+			76, 9, 94, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 87, 41, 5, 104, 0, 176, 77, 49,
+			224, 246, 46, 56, 0, 176, 118, 55, 224, 246, 46, 56, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 133, 41,
+			0, 192, 66, 119, 87, 41, 0, 192, 113, 120, 31, 50, 38, 34, 0, 192, 1, 122, 55, 34, 0, 192, 115, 123, 96, 196, 255, 124, 47, 1,
+			1, 0, 2, 13, 190, 201, 0, 161, 213, 3, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 2, 47, 9, 104, 1, 47, 3, 104,
+			0, 176, 173, 192, 0, 176, 222, 192, 96, 244, 167, 55, 1, 47, 0, 176, 15, 193, 0, 176, 64, 193, 32, 243, 167, 55, 140, 39, 72, 1,
+			2, 96, 47, 1, 1, 0, 140, 39, 88, 1, 2, 96, 89, 1, 1, 0, 2, 43, 3, 0, 8, 104, 2, 55, 57, 48, 58, 32, 3, 104,
+			59, 1, 2, 96, 56, 1, 0, 145, 206, 0, 1, 0, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 1, 47,
+			0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240, 113, 193, 0, 176, 106, 64, 0, 240, 113, 193, 2, 13, 185, 201, 6, 106,
+			0, 208, 97, 194, 0, 208, 146, 194, 0, 208, 195, 194, 0, 208, 4, 195, 0, 208, 53, 195, 0, 208, 102, 195, 2, 39, 64, 236, 237, 5,
+			0, 176, 96, 6, 69, 39, 113, 3, 140, 39, 3, 0, 89, 1, 88, 1, 1, 0, 44, 5, 136, 40, 0, 176, 151, 195, 0, 176, 86, 0,
+			0, 145, 152, 7, 2, 13, 153, 201, 1, 0, 2, 41, 113, 1, 13, 1, 1, 0, 2, 57, 0, 41, 117, 1, 13, 1, 1, 0, 4, 13,
+			201, 1, 108, 153, 0, 145, 192, 0, 0, 176, 216, 195, 119, 16, 129, 40, 0, 176, 9, 196, 0, 176, 184, 0, 2, 13, 144, 201, 0, 176,
+			74, 196, 1, 13, 0, 97, 3, 47, 121, 1, 44, 5, 0, 176, 184, 0, 113, 16, 0, 176, 139, 196, 129, 40, 2, 45, 7, 0, 131, 45,
+			7, 0, 13, 1, 122, 1, 1, 0, 38, 5, 0, 176, 204, 196, 3, 47, 124, 1, 38, 5, 0, 176, 13, 197, 3, 47, 124, 1, 38, 5,
+			113, 1, 1, 0, 1, 13, 0, 105, 38, 5, 0, 176, 78, 197, 13, 16, 0, 176, 143, 197, 129, 40, 2, 45, 7, 0, 129, 45, 7, 0,
+			3, 0, 13, 1, 126, 1, 1, 0, 126, 1, 1, 0, 13, 16, 0, 176, 208, 197, 0, 176, 17, 198, 44, 5, 0, 176, 82, 198, 4, 13,
+			145, 201, 144, 203, 44, 5, 0, 176, 82, 198, 44, 5, 13, 16, 0, 176, 179, 198, 38, 5, 58, 32, 0, 208, 4, 199, 0, 176, 69, 199,
+			13, 16, 0, 176, 150, 199, 13, 16, 0, 176, 150, 199, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 150, 199, 4, 13, 148, 201, 144, 203,
+			3, 47, 135, 1, 44, 5, 0, 176, 150, 199, 59, 34, 0, 176, 231, 199, 57, 37, 90, 10, 0, 176, 56, 200, 0, 176, 137, 200, 4, 13,
+			153, 201, 138, 202, 0, 176, 234, 200, 29, 34, 38, 4, 0, 176, 75, 201, 0, 176, 195, 190, 0, 176, 188, 201, 44, 5, 0, 176, 23, 187,
+			44, 5, 0, 176, 45, 202, 3, 47, 144, 1, 44, 5, 0, 176, 45, 202, 44, 5, 129, 40, 0, 176, 142, 202, 0, 176, 223, 202, 44, 5,
+			0, 176, 64, 203, 147, 1, 1, 0, 44, 5, 0, 176, 177, 203, 4, 13, 153, 201, 185, 201, 44, 36, 2, 13, 153, 201, 44, 5, 0, 176,
+			18, 204, 4, 13, 140, 202, 185, 201, 44, 36, 2, 13, 140, 202, 44, 5, 0, 176, 99, 204, 0, 176, 104, 187, 0, 176, 180, 204, 0, 176,
+			5, 205, 0, 176, 249, 0, 0, 176, 86, 205, 111, 5, 0, 145, 79, 2, 1, 0, 2, 13, 153, 201, 44, 5, 0, 176, 135, 205, 119, 16,
+			0, 176, 184, 0, 113, 16, 0, 176, 184, 205, 38, 5, 0, 176, 249, 205, 38, 5, 0, 176, 249, 205, 0, 176, 58, 206, 13, 16, 0, 176,
+			123, 206, 2, 13, 138, 202, 13, 16, 0, 176, 188, 206, 0, 176, 17, 198, 2, 13, 144, 201, 44, 5, 0, 176, 74, 196, 44, 5, 0, 176,
+			253, 206, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 253, 206, 1, 13, 0, 97, 0, 176, 184, 0, 44, 5, 13, 16, 0, 176, 78, 207,
+			38, 5, 58, 32, 0, 208, 4, 199, 0, 176, 58, 1, 44, 5, 13, 16, 0, 176, 159, 207, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176,
+			240, 207, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 240, 207, 13, 16, 0, 176, 150, 199, 0, 176, 49, 208, 4, 13, 166, 195, 138, 202,
+			0, 176, 130, 208, 3, 13, 203, 111, 0, 144, 0, 176, 104, 187, 0, 176, 211, 208, 3, 13, 203, 101, 0, 144, 0, 176, 249, 0, 0, 176,
+			188, 201, 44, 5, 0, 176, 52, 209, 44, 5, 0, 176, 133, 209, 44, 5, 0, 176, 223, 202, 44, 5, 0, 176, 64, 203, 147, 1, 1, 0,
+			44, 5, 0, 176, 177, 203, 2, 13, 154, 201, 44, 5, 0, 176, 246, 209, 87, 41, 114, 1, 136, 40, 0, 176, 151, 195, 0, 176, 55, 210,
+			2, 41, 113, 1, 0, 176, 104, 210, 2, 13, 166, 195, 119, 16, 8, 41, 0, 176, 153, 210, 0, 176, 234, 210, 2, 13, 144, 201, 0, 176,
+			74, 196, 113, 16, 0, 176, 43, 211, 38, 5, 113, 16, 0, 176, 13, 197, 38, 5, 0, 176, 108, 211, 3, 13, 181, 225, 0, 187, 0, 176,
+			173, 211, 38, 5, 0, 176, 238, 211, 4, 13, 145, 201, 144, 203, 13, 16, 34, 34, 133, 1, 0, 176, 47, 212, 129, 1, 1, 0, 13, 16,
+			0, 176, 112, 212, 0, 176, 177, 212, 34, 36, 0, 176, 242, 212, 0, 176, 47, 212, 7, 13, 201, 2, 203, 145, 201, 144, 0, 185, 44, 34,
+			4, 13, 145, 201, 144, 203, 130, 10, 44, 5, 0, 176, 242, 212, 44, 5, 114, 16, 0, 176, 83, 213, 38, 5, 0, 176, 69, 199, 13, 16,
+			34, 36, 0, 176, 164, 213, 0, 176, 5, 214, 7, 13, 201, 2, 203, 148, 201, 144, 0, 185, 34, 36, 4, 13, 148, 201, 144, 203, 34, 5,
+			0, 176, 164, 213, 6, 13, 111, 2, 144, 203, 185, 201, 34, 36, 3, 13, 203, 111, 0, 144, 34, 5, 0, 176, 70, 214, 13, 16, 0, 176,
+			151, 214, 0, 176, 216, 214, 0, 176, 41, 215, 0, 176, 122, 215, 29, 50, 32, 34, 38, 4, 0, 176, 203, 215, 0, 176, 44, 216, 0, 176,
+			125, 216, 5, 13, 201, 1, 201, 155, 0, 185, 34, 36, 2, 13, 155, 201, 34, 5, 0, 176, 222, 216, 0, 176, 45, 202, 5, 13, 201, 1,
+			201, 170, 0, 185, 34, 36, 2, 13, 170, 201, 34, 5, 0, 176, 63, 217, 5, 13, 202, 1, 201, 138, 0, 185, 44, 36, 2, 13, 138, 202,
+			44, 5, 0, 176, 160, 217, 5, 13, 201, 97, 201, 170, 0, 153, 44, 5, 0, 176, 241, 217, 5, 13, 201, 97, 201, 170, 0, 154, 44, 5,
+			0, 176, 82, 218, 7, 13, 201, 97, 202, 170, 201, 138, 0, 185, 34, 36, 5, 13, 201, 97, 202, 170, 0, 138, 34, 5, 0, 176, 195, 218,
+			0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 2, 43, 129, 41, 14, 104, 50, 54, 6, 0, 3, 0, 131, 36,
+			9, 104, 2, 44, 3, 104, 25, 1, 5, 96, 50, 37, 3, 104, 192, 195, 34, 110, 133, 41, 0, 192, 22, 106, 34, 50, 51, 50, 52, 34,
+			0, 192, 70, 107, 14, 34, 32, 195, 30, 109, 160, 197, 34, 110, 0, 161, 213, 131, 0, 0, 0, 0, 0, 162, 18, 130, 0, 0, 0, 0,
+			0, 192, 2, 0, 44, 5, 0, 176, 86, 205, 2, 41, 13, 1, 44, 5, 0, 41, 0, 176, 99, 204, 0, 176, 52, 219, 2, 41, 113, 1,
+			13, 1, 1, 0, 2, 57, 0, 41, 117, 1, 13, 1, 1, 0, 119, 16, 157, 18, 0, 176, 117, 219, 119, 16, 0, 176, 117, 219, 2, 13,
+			144, 201, 44, 5, 0, 176, 149, 186, 2, 13, 58, 97, 44, 5, 0, 176, 117, 219, 113, 16, 0, 176, 182, 219, 59, 34, 5, 104, 32, 238,
+			211, 25, 0, 176, 86, 205, 0, 176, 247, 219, 0, 145, 243, 9, 1, 0, 113, 1, 1, 0, 1, 13, 0, 101, 38, 5, 0, 176, 56, 220,
+			13, 16, 0, 176, 121, 220, 129, 1, 1, 0, 13, 16, 0, 176, 186, 220, 2, 13, 137, 202, 0, 176, 251, 220, 2, 13, 58, 97, 44, 5,
+			34, 34, 4, 104, 125, 10, 0, 176, 60, 221, 0, 176, 117, 219, 3, 13, 203, 97, 0, 144, 34, 36, 3, 0, 34, 4, 0, 176, 60, 221,
+			151, 18, 1, 13, 0, 101, 0, 176, 173, 221, 38, 5, 58, 32, 0, 208, 4, 199, 7, 57, 0, 41, 90, 10, 0, 176, 14, 222, 13, 16,
+			34, 34, 0, 176, 70, 214, 0, 176, 123, 1, 2, 13, 148, 201, 34, 36, 3, 0, 34, 4, 0, 176, 79, 222, 1, 13, 0, 111, 34, 36,
+			3, 0, 34, 4, 0, 176, 79, 222, 13, 16, 0, 176, 5, 214, 4, 13, 137, 202, 144, 203, 7, 41, 100, 10, 0, 41, 4, 104, 100, 10,
+			0, 176, 251, 220, 0, 176, 144, 222, 4, 13, 140, 202, 137, 202, 0, 176, 209, 222, 3, 13, 203, 111, 0, 144, 0, 176, 34, 223, 2, 57,
+			7, 41, 158, 1, 59, 34, 0, 176, 115, 223, 0, 176, 212, 223, 0, 176, 212, 223, 3, 13, 203, 101, 0, 144, 0, 176, 58, 206, 0, 176,
+			53, 224, 1, 13, 0, 101, 34, 36, 3, 0, 34, 4, 0, 176, 150, 224, 2, 13, 170, 201, 34, 36, 3, 0, 34, 4, 0, 176, 231, 224,
+			4, 13, 137, 202, 185, 201, 44, 34, 2, 13, 137, 202, 120, 10, 44, 5, 0, 176, 56, 225, 44, 5, 0, 176, 177, 203, 44, 5, 0, 176,
+			115, 223, 147, 1, 1, 0, 3, 13, 153, 201, 0, 108, 0, 145, 192, 0, 0, 176, 137, 225, 0, 176, 0, 0, 138, 41, 46, 1, 0, 145,
+			71, 0, 1, 13, 0, 114, 1, 0, 44, 5, 136, 40, 0, 176, 202, 225, 0, 176, 86, 0, 0, 145, 159, 10, 2, 13, 153, 201, 1, 0,
+			2, 41, 113, 1, 0, 176, 202, 225, 2, 57, 0, 41, 117, 1, 0, 176, 202, 225, 2, 13, 166, 195, 119, 16, 0, 176, 251, 225, 113, 16,
+			0, 176, 60, 226, 38, 5, 0, 176, 249, 205, 38, 5, 0, 176, 249, 205, 38, 5, 0, 176, 238, 211, 13, 16, 0, 176, 5, 214, 13, 16,
+			0, 176, 125, 226, 0, 176, 190, 226, 2, 13, 144, 201, 44, 5, 0, 176, 202, 225, 44, 5, 0, 176, 255, 226, 4, 13, 145, 201, 144, 203,
+			44, 5, 0, 176, 255, 226, 4, 13, 145, 201, 144, 203, 0, 176, 255, 226, 13, 16, 44, 5, 0, 176, 80, 227, 38, 5, 58, 32, 0, 208,
+			4, 199, 0, 176, 58, 1, 13, 16, 44, 5, 0, 176, 159, 207, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176, 159, 207, 13, 16, 0, 176,
+			150, 199, 0, 176, 161, 227, 0, 176, 226, 227, 4, 13, 153, 201, 138, 202, 0, 176, 67, 228, 29, 50, 32, 34, 38, 4, 0, 176, 148, 228,
+			0, 176, 5, 229, 0, 176, 125, 216, 44, 5, 0, 176, 86, 229, 44, 5, 0, 176, 167, 229, 4, 13, 148, 201, 144, 203, 44, 5, 0, 176,
+			8, 230, 44, 5, 0, 176, 64, 203, 147, 1, 1, 0, 44, 5, 0, 176, 73, 230, 111, 5, 0, 145, 79, 2, 1, 0, 119, 16, 0, 176,
+			184, 0, 113, 16, 0, 176, 249, 0, 38, 5, 55, 50, 59, 34, 0, 176, 249, 205, 0, 176, 170, 230, 38, 5, 0, 176, 58, 1, 13, 16,
+			0, 176, 185, 187, 129, 1, 1, 0, 2, 13, 138, 202, 13, 16, 0, 176, 188, 206, 23, 5, 0, 176, 17, 198, 2, 13, 144, 201, 0, 176,
+			74, 196, 44, 5, 0, 176, 253, 206, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 253, 206, 1, 13, 0, 97, 0, 176, 184, 0, 13, 16,
+			44, 5, 0, 176, 205, 188, 2, 13, 105, 101, 38, 5, 0, 176, 219, 230, 13, 16, 44, 5, 0, 176, 159, 207, 4, 13, 148, 201, 144, 203,
+			44, 5, 0, 176, 159, 207, 13, 16, 0, 176, 159, 207, 3, 13, 153, 201, 0, 117, 0, 176, 44, 231, 4, 13, 166, 195, 138, 202, 0, 176,
+			130, 208, 4, 13, 140, 202, 138, 202, 0, 176, 125, 231, 4, 13, 148, 201, 170, 201, 0, 176, 125, 216, 3, 13, 203, 101, 0, 144, 0, 176,
+			222, 231, 3, 13, 201, 111, 0, 170, 0, 176, 36, 191, 4, 13, 156, 201, 144, 203, 44, 5, 0, 176, 179, 198, 44, 5, 0, 176, 47, 232,
+			44, 5, 0, 176, 223, 202, 44, 5, 0, 176, 144, 232, 147, 1, 1, 0, 44, 5, 0, 176, 177, 203, 44, 5, 0, 176, 1, 233, 2, 41,
+			113, 1, 0, 176, 1, 233, 0, 176, 214, 186, 113, 16, 0, 176, 249, 0, 38, 5, 0, 176, 170, 230, 38, 5, 0, 176, 170, 230, 38, 5,
+			0, 176, 58, 1, 0, 176, 151, 214, 0, 176, 185, 187, 0, 176, 66, 233, 0, 176, 149, 186, 0, 176, 214, 186, 44, 5, 0, 176, 214, 186,
+			0, 176, 214, 186, 44, 5, 0, 176, 185, 187, 38, 5, 0, 176, 131, 233, 0, 176, 123, 1, 44, 5, 0, 176, 123, 1, 44, 5, 0, 176,
+			196, 233, 0, 176, 123, 1, 0, 176, 188, 1, 0, 176, 21, 234, 0, 176, 104, 187, 0, 176, 33, 190, 0, 176, 249, 0, 0, 176, 53, 224,
+			44, 5, 0, 176, 150, 224, 44, 5, 0, 176, 102, 234, 46, 34, 4, 104, 95, 10, 0, 176, 183, 234, 0, 176, 232, 234, 2, 13, 144, 201,
+			0, 176, 208, 197, 0, 176, 25, 235, 2, 13, 153, 201, 46, 34, 4, 104, 95, 10, 0, 176, 183, 234, 0, 176, 90, 235, 0, 176, 139, 235,
+			0, 176, 188, 235, 0, 176, 253, 235, 59, 34, 32, 238, 46, 236, 0, 176, 95, 236, 59, 34, 32, 238, 46, 236, 0, 176, 95, 236, 3, 13,
+			153, 201, 0, 108, 0, 176, 216, 195, 0, 176, 144, 236, 3, 13, 201, 105, 0, 153, 0, 176, 209, 236, 38, 5, 0, 176, 50, 237, 4, 13,
+			138, 202, 153, 201, 0, 176, 115, 237, 0, 176, 212, 237, 0, 176, 21, 238, 0, 176, 134, 238, 38, 5, 0, 176, 231, 238, 38, 5, 0, 176,
+			72, 239, 4, 13, 155, 201, 170, 201, 38, 5, 0, 176, 185, 239, 38, 5, 0, 176, 10, 240, 4, 13, 138, 202, 170, 201, 38, 5, 0, 176,
+			123, 240, 38, 5, 0, 176, 236, 240, 38, 5, 0, 176, 77, 241, 0, 176, 174, 241, 0, 176, 137, 200, 0, 176, 249, 0, 0, 176, 159, 207,
+			0, 176, 179, 198, 0, 176, 255, 241, 0, 176, 80, 242, 0, 176, 145, 242, 0, 161, 25, 3, 173, 1, 238, 188, 0, 162, 146, 18, 173, 1,
+			110, 189, 192, 195, 226, 242, 0, 161, 25, 3, 64, 9, 118, 90, 0, 162, 18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 199, 4, 16, 223,
+			248, 4, 16, 223, 41, 5, 16, 223, 90, 5, 16, 223, 139, 5, 16, 223, 188, 5, 2, 39, 224, 236, 237, 5, 0, 176, 255, 13, 64, 246,
+			219, 16, 13, 48, 109, 32, 2, 104, 5, 96, 0, 176, 234, 11, 0, 240, 178, 6, 1, 0, 0, 161, 213, 3, 83, 1, 246, 221, 0, 162,
+			146, 18, 83, 1, 246, 221, 0, 192, 1, 122, 0, 176, 184, 0, 0, 176, 56, 245, 2, 13, 168, 201, 0, 176, 121, 245, 0, 176, 173, 211,
+			0, 176, 121, 220, 0, 176, 250, 187, 0, 176, 86, 0, 109, 18, 0, 176, 58, 1, 4, 13, 168, 201, 144, 203, 110, 18, 0, 176, 186, 245,
+			112, 18, 0, 176, 188, 1, 108, 18, 0, 176, 249, 0, 111, 18, 0, 176, 251, 245, 35, 18, 0, 176, 82, 198, 4, 13, 145, 201, 168, 201,
+			0, 176, 72, 239, 0, 176, 75, 201, 3, 13, 201, 97, 0, 168, 0, 176, 75, 201, 0, 176, 14, 189, 0, 176, 185, 239, 4, 13, 153, 201,
+			168, 201, 0, 176, 185, 239, 0, 176, 111, 189, 0, 176, 76, 246, 3, 13, 168, 201, 0, 117, 0, 176, 76, 246, 0, 176, 188, 201, 4, 13,
+			148, 201, 168, 201, 0, 176, 188, 201, 0, 176, 157, 246, 3, 13, 201, 117, 0, 168, 0, 176, 157, 246, 0, 161, 25, 3, 75, 1, 96, 170,
+			0, 162, 18, 34, 75, 9, 96, 170, 0, 176, 11, 12, 16, 244, 60, 12, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9,
+			46, 173, 1, 47, 0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 192, 248, 122, 63, 0, 176, 106, 64, 96, 249, 155, 64, 108, 34,
+			4, 104, 40, 10, 0, 176, 183, 234, 109, 34, 4, 104, 40, 10, 0, 176, 183, 234, 110, 34, 4, 104, 40, 10, 0, 176, 183, 234, 108, 32,
+			4, 104, 30, 10, 0, 176, 183, 234, 0, 176, 232, 234, 0, 176, 86, 0, 0, 176, 254, 246, 2, 13, 144, 201, 35, 19, 0, 176, 74, 196,
+			0, 176, 60, 226, 113, 19, 111, 1, 1, 0, 0, 176, 204, 196, 3, 13, 204, 105, 0, 175, 0, 176, 78, 197, 0, 176, 186, 220, 115, 19,
+			112, 1, 1, 0, 0, 176, 17, 198, 117, 19, 111, 1, 1, 0, 3, 13, 204, 117, 0, 134, 0, 176, 188, 1, 1, 13, 0, 65, 0, 176,
+			47, 212, 120, 19, 112, 1, 1, 0, 0, 176, 104, 187, 0, 176, 82, 198, 0, 176, 249, 0, 0, 176, 58, 1, 0, 176, 250, 187, 0, 176,
+			63, 247, 0, 176, 133, 209, 0, 176, 160, 247, 0, 176, 33, 190, 128, 19, 112, 1, 1, 0, 0, 176, 14, 189, 130, 19, 0, 176, 14, 189,
+			31, 32, 1, 13, 0, 32, 6, 106, 0, 208, 93, 34, 0, 208, 142, 34, 0, 208, 191, 34, 0, 208, 240, 34, 0, 208, 33, 35, 0, 208,
+			98, 35, 31, 32, 128, 237, 147, 35, 0, 39, 0, 176, 180, 35, 1, 0, 34, 34, 5, 104, 2, 42, 2, 104, 2, 96, 108, 1, 0, 176,
+			55, 210, 139, 40, 105, 10, 0, 176, 74, 196, 87, 41, 62, 10, 0, 176, 184, 0, 16, 34, 67, 10, 0, 176, 25, 235, 13, 16, 16, 34,
+			67, 10, 0, 176, 25, 235, 16, 34, 67, 10, 38, 5, 0, 176, 249, 205, 0, 176, 249, 205, 16, 34, 67, 10, 0, 176, 123, 1, 16, 34,
+			67, 10, 34, 34, 138, 42, 115, 1, 0, 176, 59, 188, 0, 176, 1, 248, 35, 17, 0, 176, 1, 248, 58, 32, 0, 208, 4, 199, 0, 176,
+			82, 248, 111, 18, 58, 32, 0, 208, 4, 199, 0, 176, 82, 248, 0, 176, 188, 1, 0, 176, 147, 248, 0, 176, 244, 248, 0, 176, 195, 190,
+			0, 176, 36, 191, 0, 176, 69, 249, 0, 176, 58, 206, 0, 176, 104, 187, 0, 176, 124, 188, 2, 13, 143, 202, 16, 34, 57, 10, 0, 176,
+			134, 249, 0, 176, 205, 188, 16, 34, 80, 10, 0, 176, 188, 235, 2, 13, 102, 112, 0, 162, 18, 2, 75, 1, 84, 65, 0, 192, 192, 130,
+			140, 43, 81, 1, 2, 96, 99, 1, 1, 0, 2, 41, 55, 1, 6, 108, 64, 236, 5, 23, 128, 237, 70, 23, 32, 238, 135, 23, 32, 238,
+			184, 23, 128, 237, 249, 23, 128, 237, 74, 24, 0, 176, 199, 249, 2, 41, 21, 104, 6, 106, 0, 208, 116, 32, 0, 208, 181, 32, 0, 208,
+			246, 32, 0, 208, 55, 33, 0, 208, 104, 33, 0, 208, 185, 33, 32, 238, 234, 33, 0, 39, 3, 104, 0, 176, 232, 249, 7, 96, 0, 162,
+			35, 18, 0, 0, 0, 0, 0, 176, 44, 34, 1, 0, 14, 37, 2, 104, 11, 96, 2, 43, 9, 104, 2, 44, 3, 104, 51, 1, 5, 96,
+			47, 37, 2, 104, 2, 96, 14, 3, 92, 39, 1, 1, 0, 145, 138, 2, 1, 0, 3, 13, 201, 105, 0, 144, 0, 176, 9, 250, 4, 13,
+			138, 202, 144, 201, 0, 176, 106, 250, 0, 176, 187, 250, 55, 1, 1, 0, 138, 34, 48, 1, 0, 145, 196, 2, 1, 0, 138, 34, 47, 1,
+			0, 145, 15, 3, 1, 0, 138, 34, 49, 1, 0, 145, 153, 3, 1, 0, 0, 176, 214, 186, 0, 176, 25, 235, 38, 5, 0, 176, 58, 1,
+			136, 40, 0, 176, 104, 187, 0, 176, 159, 207, 0, 176, 188, 1, 0, 176, 14, 189, 0, 176, 111, 189, 0, 176, 33, 190, 0, 176, 16, 251,
+			0, 176, 10, 240, 0, 176, 149, 191, 0, 176, 25, 235, 0, 176, 25, 235, 38, 5, 108, 17, 0, 176, 97, 251, 38, 5, 0, 176, 121, 245,
+			0, 176, 25, 235, 0, 176, 251, 225, 0, 176, 162, 251, 0, 176, 151, 214, 0, 176, 159, 207, 0, 176, 205, 188, 0, 176, 250, 187, 0, 176,
+			227, 251, 0, 176, 36, 252, 0, 176, 124, 188, 0, 176, 101, 252, 0, 176, 198, 252, 0, 176, 188, 201, 0, 176, 16, 251, 0, 176, 23, 253,
+			0, 176, 104, 253, 0, 176, 185, 253, 0, 176, 10, 254, 0, 176, 107, 254, 0, 176, 188, 254, 0, 176, 13, 255, 0, 176, 110, 255, 0, 176,
+			191, 255, 1, 176, 16, 0, 1, 176, 97, 0, 1, 176, 178, 0, 0, 176, 102, 234, 1, 176, 3, 1, 1, 13, 0, 114, 0, 161, 25, 3,
+			73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 1, 176, 84, 1, 32, 243, 64, 14, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162,
+			25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 223, 67, 0, 176, 114, 68, 0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18, 79, 9,
+			98, 155, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49, 192, 243,
+			46, 56, 0, 176, 118, 55, 192, 243, 46, 56, 28, 34, 0, 192, 140, 158, 29, 34, 0, 192, 225, 159, 30, 34, 0, 192, 128, 161, 31, 34,
+			0, 192, 37, 163, 32, 34, 97, 196, 149, 1, 33, 34, 1, 197, 149, 1, 96, 196, 3, 168, 0, 176, 162, 251, 1, 176, 209, 3, 0, 176,
+			47, 212, 0, 176, 247, 219, 1, 176, 18, 4, 1, 176, 83, 4, 1, 176, 148, 4, 1, 176, 213, 4, 0, 176, 121, 245, 1, 176, 22, 5,
+			0, 176, 8, 230, 0, 176, 104, 187, 0, 176, 185, 187, 1, 176, 87, 5, 1, 176, 152, 5, 1, 176, 217, 5, 1, 176, 26, 6, 1, 176,
+			91, 6, 0, 176, 251, 225, 0, 176, 251, 225, 0, 176, 205, 188, 0, 176, 205, 188, 0, 176, 124, 188, 0, 176, 124, 188, 0, 176, 198, 252,
+			1, 176, 156, 6, 0, 176, 185, 253, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 223, 67,
+			0, 176, 114, 68, 0, 161, 21, 29, 77, 5, 158, 162, 0, 162, 146, 18, 77, 1, 94, 162, 133, 41, 192, 195, 30, 109, 0, 197, 47, 111,
+			0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18, 79, 9, 98, 155, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54,
+			0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49, 192, 243, 46, 56, 0, 176, 118, 55, 192, 243, 46, 56, 50, 34, 5, 104, 0, 176,
+			145, 6, 0, 240, 178, 6, 0, 176, 234, 11, 0, 240, 178, 6, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189,
+			0, 41, 0, 192, 255, 124, 31, 50, 61, 34, 128, 194, 1, 122, 55, 34, 128, 194, 115, 123, 34, 34, 128, 194, 113, 120, 49, 34, 160, 192,
+			255, 124, 64, 193, 255, 124, 28, 34, 0, 192, 140, 158, 29, 34, 0, 192, 225, 159, 30, 34, 0, 192, 128, 161, 31, 34, 0, 192, 37, 163,
+			32, 34, 0, 192, 139, 164, 33, 34, 0, 192, 58, 166, 96, 196, 3, 168, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1,
+			98, 162, 1, 192, 237, 6, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 192, 195, 131, 117, 0, 197,
+			47, 111, 0, 161, 232, 83, 83, 9, 246, 221, 0, 162, 50, 82, 83, 41, 246, 221, 1, 47, 1, 176, 26, 9, 133, 41, 5, 104, 0, 176,
+			59, 54, 129, 242, 75, 9, 87, 41, 5, 104, 0, 176, 77, 49, 1, 245, 75, 9, 0, 176, 118, 55, 1, 245, 75, 9, 111, 32, 1, 224,
+			80, 10, 33, 96, 112, 32, 1, 224, 113, 10, 29, 96, 113, 32, 1, 224, 146, 10, 25, 96, 114, 48, 115, 32, 1, 224, 179, 10, 20, 96,
+			116, 32, 1, 224, 228, 10, 16, 96, 2, 39, 14, 104, 6, 108, 1, 224, 21, 11, 1, 224, 54, 11, 1, 224, 87, 11, 1, 224, 120, 11,
+			1, 224, 153, 11, 1, 224, 186, 11, 1, 0, 112, 34, 1, 208, 219, 11, 46, 96, 117, 34, 1, 208, 252, 11, 42, 96, 113, 34, 1, 208,
+			29, 12, 38, 96, 114, 50, 115, 34, 1, 208, 62, 12, 33, 96, 111, 34, 1, 208, 95, 12, 29, 96, 58, 34, 1, 208, 128, 12, 25, 96,
+			116, 34, 1, 208, 161, 12, 21, 96, 57, 50, 118, 34, 1, 208, 194, 12, 16, 96, 2, 41, 14, 104, 6, 106, 1, 208, 227, 12, 1, 208,
+			4, 13, 1, 208, 37, 13, 1, 208, 70, 13, 1, 208, 103, 13, 1, 208, 136, 13, 1, 0, 0, 161, 25, 3, 71, 1, 222, 185, 2, 13,
+			129, 202, 138, 41, 46, 1, 4, 96, 138, 55, 0, 39, 119, 1, 0, 145, 163, 15, 0, 145, 200, 15, 1, 176, 169, 13, 2, 13, 129, 202,
+			138, 41, 1, 1, 2, 96, 34, 1, 1, 0, 2, 13, 129, 202, 47, 53, 48, 53, 49, 37, 5, 104, 1, 176, 202, 13, 240, 240, 178, 6,
+			138, 39, 5, 104, 1, 176, 251, 13, 240, 240, 178, 6, 6, 108, 1, 224, 28, 14, 1, 224, 61, 14, 1, 224, 94, 14, 1, 224, 127, 14,
+			1, 224, 160, 14, 1, 224, 193, 14, 111, 32, 1, 224, 226, 14, 8, 41, 5, 104, 1, 176, 3, 15, 64, 241, 178, 6, 109, 34, 15, 10,
+			1, 176, 52, 15, 64, 241, 178, 6, 0, 161, 25, 3, 71, 1, 222, 185, 2, 13, 129, 202, 0, 145, 200, 15, 83, 53, 49, 53, 48, 53,
+			89, 53, 47, 53, 91, 37, 1, 176, 85, 15, 110, 37, 1, 176, 150, 15, 40, 10, 1, 176, 169, 13, 1, 0, 138, 41, 56, 1, 3, 96,
+			110, 37, 59, 1, 6, 106, 0, 208, 239, 21, 96, 223, 32, 22, 16, 223, 65, 22, 16, 223, 98, 22, 97, 223, 215, 15, 192, 222, 212, 22,
+			28, 32, 224, 236, 172, 24, 4, 96, 2, 39, 128, 237, 172, 24, 0, 55, 134, 40, 0, 176, 205, 24, 87, 55, 8, 39, 0, 176, 205, 24,
+			47, 32, 0, 176, 254, 24, 56, 32, 0, 176, 31, 25, 0, 176, 64, 25, 2, 41, 55, 1, 111, 37, 1, 224, 248, 15, 16, 96, 2, 44,
+			14, 104, 6, 108, 0, 224, 231, 26, 0, 224, 8, 27, 0, 224, 41, 27, 0, 224, 74, 27, 0, 224, 123, 27, 0, 224, 172, 27, 109, 32,
+			0, 176, 205, 24, 0, 176, 139, 24, 138, 41, 56, 1, 6, 106, 0, 208, 239, 21, 96, 223, 32, 22, 16, 223, 65, 22, 16, 223, 98, 22,
+			96, 223, 147, 22, 192, 222, 212, 22, 47, 32, 0, 176, 254, 24, 0, 176, 64, 25, 1, 176, 25, 16, 1, 176, 25, 16, 2, 43, 110, 10,
+			2, 96, 85, 10, 1, 176, 74, 16, 81, 181, 74, 16, 56, 34, 192, 238, 172, 24, 5, 96, 2, 41, 100, 10, 2, 96, 85, 10, 0, 176,
+			69, 249, 0, 176, 69, 249, 57, 36, 95, 10, 2, 96, 85, 10, 0, 176, 60, 226, 0, 176, 60, 226, 119, 53, 59, 37, 5, 104, 2, 43,
+			2, 104, 120, 10, 16, 96, 109, 37, 2, 43, 8, 104, 31, 36, 4, 104, 110, 10, 38, 5, 2, 96, 118, 1, 6, 96, 2, 43, 57, 1,
+			3, 96, 75, 10, 38, 5, 1, 176, 148, 4, 6, 106, 0, 208, 116, 32, 0, 208, 181, 32, 0, 208, 246, 32, 0, 208, 55, 33, 0, 208,
+			104, 33, 0, 208, 185, 33, 1, 176, 139, 16, 2, 41, 110, 10, 2, 96, 85, 10, 139, 40, 1, 176, 204, 16, 0, 176, 104, 187, 1, 0,
+			139, 40, 1, 176, 29, 17, 108, 36, 138, 42, 1, 176, 29, 17, 109, 36, 138, 42, 1, 176, 29, 17, 0, 176, 8, 230, 2, 57, 57, 34,
+			110, 10, 2, 96, 90, 10, 1, 176, 87, 5, 1, 176, 87, 5, 114, 52, 31, 36, 4, 104, 55, 10, 0, 181, 124, 188, 90, 10, 0, 176,
+			124, 188, 0, 176, 124, 188, 0, 176, 151, 195, 0, 176, 151, 195, 0, 176, 205, 188, 109, 48, 108, 37, 15, 104, 6, 106, 0, 208, 105, 30,
+			1, 208, 94, 17, 0, 208, 203, 30, 0, 208, 252, 30, 0, 208, 45, 31, 0, 208, 94, 31, 2, 96, 133, 1, 1, 0, 2, 41, 23, 104,
+			6, 106, 0, 208, 105, 30, 1, 208, 94, 17, 0, 208, 203, 30, 0, 208, 252, 30, 0, 208, 45, 31, 0, 208, 94, 31, 32, 238, 143, 31,
+			0, 39, 3, 104, 0, 176, 209, 31, 0, 176, 209, 31, 11, 96, 0, 162, 25, 18, 0, 0, 0, 0, 31, 32, 3, 104, 0, 176, 2, 32,
+			0, 176, 67, 32, 1, 0, 0, 176, 187, 250, 134, 34, 0, 176, 60, 226, 1, 176, 143, 17, 1, 176, 224, 17, 1, 176, 143, 17, 0, 161,
+			213, 3, 173, 9, 84, 90, 0, 162, 18, 34, 73, 9, 84, 73, 2, 47, 15, 104, 0, 161, 213, 3, 73, 5, 84, 73, 133, 41, 5, 104,
+			0, 176, 65, 50, 0, 240, 114, 50, 0, 176, 65, 50, 0, 240, 120, 51, 1, 47, 7, 104, 109, 36, 3, 104, 1, 176, 49, 18, 0, 176,
+			16, 50, 133, 57, 55, 34, 5, 104, 0, 176, 209, 51, 0, 240, 114, 50, 56, 34, 0, 176, 201, 53, 109, 34, 5, 104, 1, 176, 98, 18,
+			32, 243, 120, 51, 0, 176, 201, 53, 96, 244, 120, 51, 0, 161, 21, 29, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47,
+			7, 104, 109, 36, 3, 104, 1, 176, 131, 18, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 32, 243, 108, 54, 109, 36, 5, 104,
+			0, 176, 77, 49, 32, 243, 108, 54, 0, 176, 118, 55, 128, 242, 167, 55, 0, 162, 18, 2, 171, 1, 84, 65, 0, 41, 0, 192, 12, 128,
+			0, 197, 192, 130, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 5, 46, 173, 1, 47, 7, 104, 109, 36, 3, 104, 1, 176,
+			180, 18, 0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240, 122, 63, 109, 36, 5, 104, 1, 176, 229, 18, 65, 241, 22, 19,
+			0, 176, 106, 64, 65, 241, 22, 19, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 66, 119,
+			31, 50, 38, 34, 208, 194, 1, 122, 108, 34, 128, 194, 115, 123, 109, 34, 4, 104, 22, 10, 32, 195, 52, 126, 128, 194, 52, 126, 0, 162,
+			146, 50, 77, 9, 98, 162, 2, 47, 7, 104, 0, 161, 25, 3, 79, 1, 222, 154, 0, 176, 112, 38, 6, 106, 0, 208, 177, 38, 0, 208,
+			242, 38, 0, 208, 51, 39, 0, 208, 116, 39, 0, 208, 181, 39, 0, 208, 246, 39, 138, 39, 3, 43, 0, 176, 55, 40, 0, 55, 50, 32,
+			0, 176, 104, 40, 138, 41, 4, 104, 60, 10, 1, 176, 198, 19, 1, 0, 58, 50, 2, 41, 50, 1, 2, 96, 1, 1, 1, 0, 0, 161,
+			213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 133, 41, 0, 197, 91, 100, 14, 34, 96, 196, 113, 103, 108, 34, 32, 195,
+			60, 104, 109, 34, 4, 104, 20, 10, 0, 197, 91, 100, 160, 197, 206, 174, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1,
+			84, 65, 138, 41, 1, 1, 208, 194, 58, 105, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 208, 194,
+			250, 71, 48, 50, 47, 50, 49, 34, 208, 194, 2, 137, 208, 194, 46, 139, 0, 161, 25, 3, 77, 1, 102, 172, 0, 162, 18, 2, 77, 1,
+			102, 172, 47, 37, 30, 10, 0, 41, 208, 194, 22, 141, 208, 194, 194, 143, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1,
+			98, 162, 133, 41, 128, 194, 22, 106, 109, 34, 4, 104, 20, 10, 33, 195, 247, 19, 128, 194, 94, 176, 0, 161, 213, 3, 77, 1, 96, 170,
+			0, 162, 146, 18, 77, 1, 96, 162, 2, 57, 58, 50, 57, 34, 224, 193, 94, 176, 1, 1, 1, 0, 0, 41, 47, 1, 5, 96, 138, 41,
+			1, 1, 2, 96, 140, 1, 1, 0, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 18, 2, 169, 1, 84, 73, 2, 47, 4, 104, 0, 145,
+			204, 3, 1, 0, 133, 41, 5, 104, 0, 176, 223, 67, 0, 240, 110, 65, 134, 40, 3, 43, 35, 10, 4, 96, 133, 52, 109, 36, 30, 10,
+			0, 176, 114, 68, 192, 243, 110, 65, 13, 16, 0, 176, 208, 197, 0, 162, 25, 18, 13, 1, 98, 170, 88, 36, 0, 176, 10, 54, 133, 57,
+			0, 41, 5, 104, 0, 176, 201, 71, 208, 242, 250, 71, 47, 37, 30, 10, 0, 176, 167, 74, 208, 242, 250, 71, 2, 57, 133, 50, 57, 34,
+			6, 104, 35, 10, 0, 176, 167, 74, 128, 242, 46, 139, 1, 1, 1, 0, 0, 41, 89, 1, 6, 96, 2, 57, 133, 34, 88, 1, 2, 96,
+			1, 1, 1, 0, 0, 176, 60, 226, 0, 176, 250, 187, 1, 176, 199, 20, 38, 5, 0, 176, 249, 205, 0, 176, 66, 233, 1, 176, 24, 21,
+			1, 176, 89, 21, 1, 176, 209, 3, 0, 161, 25, 3, 71, 1, 222, 185, 138, 41, 46, 1, 1, 176, 170, 21, 128, 247, 178, 6, 0, 176,
+			55, 210, 0, 176, 82, 248, 0, 176, 249, 205, 0, 176, 124, 188, 0, 176, 205, 188, 0, 176, 250, 187, 0, 176, 25, 235, 13, 16, 0, 176,
+			56, 245, 1, 176, 235, 21, 1, 176, 235, 21, 129, 40, 7, 104, 136, 40, 3, 104, 1, 176, 44, 22, 1, 176, 109, 22, 0, 176, 184, 0,
+			0, 176, 214, 186, 129, 40, 1, 176, 44, 22, 0, 176, 47, 212, 0, 176, 5, 205, 0, 176, 114, 190, 13, 17, 119, 1, 1, 0, 1, 176,
+			174, 22, 1, 176, 239, 22, 0, 176, 195, 190, 0, 176, 110, 255, 0, 176, 21, 234, 0, 176, 111, 189, 1, 176, 64, 23, 0, 161, 25, 3,
+			73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 101, 37, 1, 1, 140, 43, 2, 104, 2, 96, 101, 1, 133, 41, 5, 104, 0, 176,
+			249, 96, 0, 240, 194, 92, 1, 176, 161, 23, 193, 248, 210, 23, 1, 13, 0, 32, 1, 0, 136, 40, 5, 104, 47, 50, 72, 34, 2, 104,
+			128, 1, 0, 145, 90, 6, 1, 0, 136, 40, 5, 104, 47, 50, 72, 34, 2, 104, 128, 1, 128, 32, 47, 1, 0, 145, 15, 3, 1, 0,
+			136, 40, 5, 104, 48, 50, 71, 34, 2, 104, 128, 1, 0, 145, 55, 6, 1, 0, 136, 40, 5, 104, 48, 50, 71, 34, 2, 104, 128, 1,
+			128, 32, 48, 1, 0, 145, 196, 2, 1, 0, 136, 40, 5, 104, 89, 50, 88, 34, 2, 104, 128, 1, 0, 145, 128, 5, 1, 0, 136, 40,
+			5, 104, 89, 50, 88, 34, 2, 104, 128, 1, 128, 32, 89, 1, 0, 145, 19, 4, 1, 0, 14, 16, 108, 50, 108, 32, 0, 176, 202, 225,
+			57, 34, 0, 176, 125, 226, 1, 176, 5, 26, 134, 40, 4, 104, 0, 176, 125, 226, 1, 0, 130, 40, 32, 104, 65, 10, 136, 40, 141, 40,
+			3, 0, 2, 104, 1, 1, 108, 32, 2, 104, 13, 1, 2, 45, 10, 0, 92, 45, 7, 0, 3, 0, 6, 104, 138, 43, 136, 41, 2, 104,
+			2, 96, 1, 1, 73, 39, 108, 34, 3, 0, 3, 104, 110, 1, 6, 96, 34, 32, 3, 104, 111, 1, 2, 96, 13, 1, 108, 50, 108, 32,
+			0, 176, 202, 225, 58, 32, 0, 176, 186, 220, 0, 176, 125, 226, 0, 176, 202, 225, 14, 16, 0, 176, 86, 205, 129, 40, 37, 1, 38, 5,
+			0, 176, 131, 233, 38, 5, 0, 176, 170, 230, 38, 5, 0, 176, 121, 245, 0, 176, 58, 206, 0, 176, 58, 206, 1, 176, 70, 26, 0, 176,
+			60, 226, 0, 176, 251, 225, 57, 36, 1, 176, 151, 26, 0, 176, 162, 251, 0, 176, 74, 196, 0, 176, 251, 245, 0, 176, 104, 187, 0, 176,
+			185, 187, 0, 176, 143, 197, 0, 176, 66, 233, 0, 176, 250, 187, 1, 176, 216, 26, 1, 176, 25, 27, 0, 176, 80, 242, 0, 176, 153, 210,
+			1, 176, 90, 27, 1, 176, 155, 27, 0, 176, 5, 205, 1, 176, 220, 27, 1, 176, 45, 28, 1, 176, 45, 28, 0, 176, 198, 252, 1, 176,
+			110, 28, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 1, 47, 0, 176, 16, 50, 0, 176, 2, 52, 96, 244,
+			29, 175, 0, 161, 21, 28, 77, 1, 94, 170, 0, 162, 146, 18, 77, 1, 94, 162, 133, 41, 48, 194, 30, 109, 32, 195, 30, 109, 0, 161,
+			213, 3, 77, 1, 94, 170, 0, 162, 146, 18, 77, 1, 94, 162, 1, 47, 0, 176, 10, 54, 1, 176, 207, 28, 128, 242, 30, 109, 2, 13,
+			136, 202, 0, 161, 213, 3, 71, 1, 100, 170, 0, 162, 146, 18, 71, 65, 100, 162, 0, 192, 94, 176, 4, 13, 136, 202, 176, 202, 0, 161,
+			213, 3, 75, 1, 100, 170, 0, 162, 146, 18, 71, 65, 100, 162, 141, 36, 139, 1, 1, 197, 0, 29, 2, 13, 150, 201, 0, 161, 213, 3,
+			71, 5, 100, 170, 0, 162, 18, 2, 71, 69, 100, 170, 1, 47, 1, 176, 131, 18, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54,
+			0, 176, 77, 49, 0, 240, 167, 55, 4, 13, 150, 201, 176, 202, 0, 161, 213, 3, 71, 5, 100, 170, 0, 162, 18, 2, 71, 69, 100, 170,
+			1, 47, 1, 176, 131, 18, 0, 176, 77, 49, 0, 240, 34, 110, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 0, 192, 226, 111, 1, 192,
+			129, 30, 0, 145, 32, 5, 3, 13, 202, 99, 0, 176, 1, 0, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 18, 2, 85, 33, 246, 221,
+			1, 47, 0, 176, 35, 62, 0, 176, 35, 62, 0, 240, 194, 115, 0, 161, 149, 18, 76, 5, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189,
+			1, 47, 1, 176, 177, 31, 133, 41, 5, 104, 1, 176, 177, 31, 48, 242, 237, 178, 1, 176, 177, 31, 32, 243, 237, 178, 193, 195, 226, 31,
+			136, 40, 0, 145, 101, 0, 9, 96, 2, 44, 5, 104, 138, 59, 109, 36, 2, 104, 16, 1, 0, 145, 71, 0, 2, 13, 190, 201, 1, 0,
+			136, 40, 138, 44, 2, 45, 10, 0, 1, 1, 141, 40, 18, 104, 37, 54, 7, 0, 40, 38, 7, 0, 2, 104, 39, 1, 34, 37, 2, 45,
+			7, 0, 8, 104, 136, 45, 7, 0, 109, 38, 7, 0, 2, 104, 2, 96, 39, 1, 121, 1, 1, 0, 136, 40, 129, 40, 1, 176, 44, 22,
+			0, 176, 117, 219, 1, 176, 174, 32, 0, 176, 188, 1, 0, 176, 249, 0, 1, 176, 239, 32, 58, 36, 85, 10, 0, 176, 104, 187, 1, 176,
+			48, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 1, 192, 113, 33, 1, 192, 113, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41,
+			0, 192, 226, 111, 0, 192, 50, 114, 13, 18, 108, 34, 0, 176, 202, 225, 1, 176, 5, 26, 0, 176, 86, 205, 108, 34, 0, 176, 202, 225,
+			1, 176, 5, 26, 38, 5, 0, 176, 58, 1, 0, 176, 249, 0, 0, 176, 162, 251, 0, 176, 8, 230, 0, 176, 250, 187, 1, 176, 131, 34,
+			1, 176, 110, 28, 0, 176, 195, 190, 0, 176, 111, 189, 1, 176, 228, 34, 0, 176, 134, 238, 0, 176, 36, 191, 0, 176, 107, 254, 0, 176,
+			149, 191, 14, 16, 108, 34, 0, 176, 202, 225, 1, 176, 5, 26, 0, 145, 151, 19, 1, 0, 0, 176, 202, 225, 14, 16, 0, 176, 86, 205,
+			4, 146, 20, 141, 1, 0, 108, 34, 0, 176, 202, 225, 1, 176, 5, 26, 13, 18, 108, 34, 0, 176, 202, 225, 0, 176, 125, 226, 38, 5,
+			0, 176, 131, 233, 38, 5, 0, 176, 121, 245, 0, 176, 58, 206, 0, 176, 56, 245, 0, 176, 162, 251, 0, 176, 185, 187, 0, 176, 104, 187,
+			0, 176, 66, 233, 0, 176, 250, 187, 0, 176, 208, 197, 109, 18, 0, 176, 184, 0, 2, 13, 140, 202, 136, 41, 65, 34, 13, 1, 0, 176,
+			125, 226, 2, 59, 149, 36, 1, 1, 109, 1, 1, 0, 1, 176, 151, 26, 0, 176, 249, 0, 0, 176, 249, 0, 136, 40, 130, 40, 1, 176,
+			101, 35, 1, 176, 174, 32, 0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 104, 187, 122, 18, 1, 176, 166, 35, 1, 176, 166, 35, 2, 13,
+			137, 202, 1, 176, 231, 35, 40, 44, 2, 104, 2, 96, 151, 18, 1, 176, 166, 35, 2, 13, 137, 202, 1, 176, 231, 35, 1, 176, 40, 36,
+			0, 176, 137, 200, 1, 1, 1, 0, 0, 145, 73, 4, 2, 13, 187, 201, 1, 0, 0, 176, 86, 0, 2, 13, 144, 201, 1, 176, 44, 22,
+			0, 176, 117, 219, 0, 176, 249, 0, 0, 176, 249, 0, 1, 176, 174, 32, 0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 104, 187, 0, 176,
+			66, 233, 0, 176, 66, 233, 0, 176, 33, 190, 1, 176, 110, 28, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170,
+			1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49, 64, 246, 46, 56,
+			32, 179, 118, 55, 192, 243, 23, 192, 0, 176, 202, 225, 2, 13, 168, 201, 128, 183, 251, 220, 2, 13, 144, 201, 131, 56, 141, 56, 136, 40,
+			1, 176, 109, 22, 13, 17, 65, 34, 136, 41, 2, 104, 13, 1, 0, 176, 74, 196, 1, 0, 35, 1, 1, 0, 1, 176, 151, 26, 0, 176,
+			249, 0, 0, 176, 249, 0, 1, 176, 174, 32, 0, 176, 249, 205, 0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 104, 187, 0, 176, 188, 1,
+			0, 176, 188, 1, 0, 176, 33, 190, 1, 176, 110, 28, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 1, 47,
+			7, 104, 2, 44, 3, 104, 0, 176, 16, 50, 1, 176, 137, 36, 133, 41, 0, 192, 91, 100, 55, 34, 0, 192, 60, 104, 0, 192, 29, 175,
+			0, 161, 21, 28, 77, 1, 94, 170, 0, 162, 146, 18, 77, 1, 94, 162, 1, 47, 7, 104, 2, 44, 3, 104, 0, 176, 10, 54, 1, 176,
+			137, 36, 133, 41, 48, 194, 30, 109, 32, 195, 30, 109, 4, 13, 136, 202, 176, 202, 0, 161, 213, 3, 75, 1, 100, 170, 0, 162, 146, 18,
+			71, 65, 100, 162, 141, 36, 139, 1, 1, 197, 0, 29, 4, 13, 136, 202, 176, 202, 0, 161, 213, 3, 75, 1, 100, 170, 0, 162, 146, 18,
+			71, 65, 100, 162, 1, 47, 7, 104, 2, 44, 3, 104, 1, 176, 131, 18, 1, 176, 137, 36, 1, 197, 0, 29, 0, 161, 227, 83, 85, 1,
+			246, 221, 1, 47, 7, 104, 2, 44, 3, 104, 0, 176, 35, 62, 1, 176, 137, 36, 133, 41, 0, 192, 194, 115, 0, 192, 194, 115, 0, 161,
+			213, 3, 76, 5, 92, 139, 0, 162, 146, 18, 76, 1, 110, 189, 1, 47, 7, 104, 2, 44, 3, 104, 0, 176, 24, 63, 1, 176, 137, 36,
+			133, 41, 128, 194, 237, 178, 30, 52, 31, 36, 128, 194, 174, 180, 32, 52, 33, 36, 144, 193, 136, 182, 224, 193, 136, 182, 1, 0, 134, 40,
+			0, 145, 219, 4, 5, 96, 136, 40, 141, 40, 3, 0, 71, 1, 1, 0, 134, 40, 0, 145, 245, 4, 5, 96, 136, 40, 141, 40, 3, 0,
+			72, 1, 1, 0, 134, 40, 0, 145, 57, 5, 5, 96, 136, 40, 141, 40, 3, 0, 81, 1, 1, 0, 0, 176, 5, 214, 0, 176, 60, 226,
+			38, 5, 0, 176, 97, 251, 0, 176, 8, 230, 0, 176, 66, 233, 1, 176, 218, 36, 0, 176, 134, 249, 0, 176, 58, 1, 1, 176, 27, 37,
+			0, 176, 184, 0, 0, 176, 251, 245, 0, 176, 250, 187, 0, 176, 124, 188, 0, 176, 205, 188, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162,
+			146, 18, 77, 1, 98, 162, 0, 192, 6, 172, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 208, 194,
+			30, 109, 32, 195, 30, 109, 47, 34, 0, 192, 2, 0, 47, 1, 1, 0, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9,
+			94, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 46, 56, 34, 34, 5, 104, 0, 176, 77, 49, 224, 246,
+			46, 56, 0, 176, 118, 55, 224, 246, 46, 56, 138, 41, 56, 1, 0, 145, 192, 0, 28, 32, 224, 236, 172, 24, 4, 96, 2, 39, 128, 237,
+			172, 24, 0, 39, 0, 176, 205, 24, 47, 32, 0, 176, 254, 24, 0, 176, 64, 25, 1, 176, 26, 6, 0, 176, 117, 219, 0, 176, 117, 219,
+			0, 176, 117, 219, 0, 41, 0, 176, 23, 187, 0, 176, 60, 226, 0, 41, 0, 176, 23, 187, 0, 176, 60, 226, 0, 176, 60, 226, 1, 176,
+			92, 37, 1, 176, 173, 37, 114, 19, 0, 176, 50, 237, 0, 176, 50, 237, 1, 176, 174, 32, 0, 176, 159, 207, 0, 176, 159, 207, 0, 176,
+			159, 207, 0, 176, 188, 1, 0, 176, 188, 1, 0, 176, 250, 187, 0, 176, 188, 1, 0, 176, 188, 1, 1, 176, 131, 34, 0, 176, 16, 251,
+			0, 176, 10, 254, 1, 176, 254, 37, 0, 176, 188, 201, 0, 176, 149, 191, 1, 176, 95, 38, 0, 176, 14, 189, 0, 176, 111, 189, 1, 176,
+			176, 38, 0, 176, 33, 190, 1, 176, 1, 39, 2, 44, 2, 104, 2, 96, 14, 3, 0, 181, 255, 13, 32, 243, 64, 14, 0, 161, 213, 3,
+			77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 48, 194, 30, 109, 192, 195, 30, 109, 0, 161, 227, 83, 85, 1, 246, 221,
+			0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 131, 117, 192, 195, 131, 117, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2,
+			76, 9, 94, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 87, 41, 5, 104, 0, 176, 77, 49,
+			224, 246, 46, 56, 0, 176, 118, 55, 224, 246, 46, 56, 0, 161, 232, 83, 83, 9, 246, 221, 0, 162, 50, 82, 83, 41, 246, 221, 1, 47,
+			1, 176, 26, 9, 133, 41, 5, 104, 0, 176, 59, 54, 129, 242, 75, 9, 87, 41, 5, 104, 0, 176, 77, 49, 1, 245, 75, 9, 0, 176,
+			118, 55, 1, 245, 75, 9, 6, 106, 0, 208, 53, 43, 0, 208, 150, 43, 0, 208, 231, 43, 0, 208, 72, 44, 0, 208, 169, 44, 0, 208,
+			26, 45, 0, 39, 0, 176, 123, 45, 138, 41, 10, 104, 67, 36, 3, 104, 37, 10, 4, 96, 67, 37, 2, 104, 50, 10, 0, 176, 156, 45,
+			1, 0, 2, 13, 173, 201, 0, 176, 149, 29, 3, 13, 204, 108, 0, 169, 0, 176, 134, 4, 1, 176, 26, 6, 38, 5, 1, 176, 174, 32,
+			38, 5, 1, 176, 174, 32, 0, 176, 60, 226, 0, 176, 60, 226, 0, 176, 251, 225, 0, 176, 251, 225, 112, 16, 0, 176, 117, 219, 0, 176,
+			117, 219, 2, 13, 144, 201, 0, 176, 112, 212, 0, 176, 159, 207, 0, 176, 159, 207, 0, 176, 188, 1, 0, 176, 188, 1, 1, 176, 131, 34,
+			0, 176, 16, 251, 0, 176, 10, 254, 1, 176, 254, 37, 0, 176, 188, 201, 0, 176, 149, 191, 1, 176, 95, 38, 0, 176, 13, 255, 0, 161,
+			25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 255, 13, 32, 243, 64, 14, 0, 161, 213, 3, 77, 1, 98, 170,
+			0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 174, 169, 161, 197, 82, 39, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18,
+			77, 1, 98, 162, 133, 41, 0, 192, 22, 106, 48, 199, 94, 176, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65,
+			133, 41, 0, 197, 206, 174, 55, 34, 0, 192, 60, 104, 128, 199, 113, 103, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1,
+			110, 189, 133, 41, 0, 192, 66, 119, 31, 50, 61, 34, 0, 192, 1, 122, 55, 34, 0, 192, 115, 123, 192, 195, 255, 124, 0, 161, 25, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 169, 184, 108, 16, 0, 176, 184, 0, 2, 13, 144, 201, 1, 176, 44, 22,
+			0, 41, 0, 176, 23, 187, 0, 176, 60, 226, 1, 176, 134, 40, 38, 5, 1, 176, 213, 4, 1, 176, 48, 33, 0, 176, 250, 187, 2, 13,
+			168, 201, 1, 176, 199, 40, 1, 176, 8, 41, 1, 176, 105, 41, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34,
+			73, 9, 98, 170, 0, 176, 255, 13, 32, 243, 64, 14, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41,
+			48, 194, 30, 109, 192, 195, 30, 109, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 133, 41, 224, 193, 131, 117,
+			192, 195, 131, 117, 0, 161, 213, 3, 76, 9, 94, 170, 0, 162, 18, 2, 76, 9, 94, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104,
+			0, 176, 59, 54, 0, 240, 108, 54, 87, 41, 5, 104, 0, 176, 77, 49, 224, 246, 46, 56, 0, 176, 118, 55, 224, 246, 46, 56, 0, 161,
+			232, 83, 83, 9, 246, 221, 0, 162, 50, 82, 83, 41, 246, 221, 1, 47, 1, 176, 26, 9, 133, 41, 5, 104, 0, 176, 59, 54, 129, 242,
+			75, 9, 87, 41, 5, 104, 0, 176, 77, 49, 1, 245, 75, 9, 0, 176, 118, 55, 1, 245, 75, 9, 0, 145, 34, 6, 3, 13, 202, 100,
+			0, 145, 1, 0, 0, 145, 32, 5, 3, 13, 201, 116, 0, 149, 1, 0, 0, 145, 91, 1, 2, 41, 0, 176, 230, 191, 1, 0, 0, 162,
+			18, 2, 75, 1, 84, 65, 133, 41, 0, 192, 12, 128, 89, 34, 0, 202, 192, 130, 192, 200, 192, 130, 38, 5, 0, 176, 121, 245, 38, 5,
+			0, 176, 50, 237, 1, 176, 202, 41, 0, 176, 25, 235, 0, 176, 60, 226, 136, 40, 129, 40, 0, 176, 9, 196, 0, 176, 184, 0, 0, 176,
+			184, 0, 0, 176, 159, 207, 0, 176, 159, 207, 0, 176, 227, 251, 0, 176, 250, 187, 0, 176, 14, 189, 0, 176, 111, 189, 1, 176, 176, 38,
+			0, 176, 33, 190, 1, 176, 1, 39, 3, 13, 204, 114, 0, 169, 0, 176, 53, 4, 5, 13, 204, 114, 203, 169, 0, 144, 0, 176, 53, 4,
+			3, 13, 204, 114, 0, 157, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 197, 77, 33, 243, 251, 41,
+			5, 13, 204, 114, 204, 157, 0, 138, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 1, 176, 166, 44, 145, 241,
+			251, 41, 3, 13, 204, 108, 0, 169, 0, 176, 134, 4, 5, 13, 204, 108, 203, 169, 0, 144, 0, 176, 134, 4, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 22, 106, 0, 192, 94, 176, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162,
+			210, 19, 73, 1, 84, 65, 133, 41, 0, 197, 113, 103, 55, 34, 0, 192, 60, 104, 128, 199, 113, 103, 0, 176, 60, 226, 0, 176, 117, 219,
+			0, 176, 121, 220, 0, 176, 188, 1, 1, 176, 215, 44, 3, 13, 204, 114, 0, 169, 0, 176, 53, 4, 0, 161, 25, 3, 77, 1, 106, 172,
+			0, 162, 18, 2, 77, 1, 106, 172, 133, 41, 161, 197, 40, 45, 225, 198, 40, 45, 0, 161, 213, 3, 77, 1, 102, 156, 133, 41, 129, 194,
+			141, 47, 33, 195, 141, 47, 3, 13, 201, 116, 0, 149, 0, 161, 227, 83, 85, 1, 114, 205, 133, 41, 33, 195, 80, 49, 33, 195, 80, 49,
+			0, 161, 25, 3, 75, 1, 232, 171, 0, 162, 18, 34, 75, 9, 232, 171, 133, 41, 5, 104, 0, 176, 148, 77, 1, 245, 40, 45, 0, 176,
+			197, 77, 97, 249, 40, 45, 0, 161, 213, 3, 81, 9, 102, 172, 0, 162, 18, 34, 81, 9, 102, 172, 1, 47, 0, 176, 231, 56, 133, 41,
+			5, 104, 0, 176, 24, 57, 33, 243, 141, 47, 1, 176, 240, 50, 1, 245, 141, 47, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9,
+			114, 205, 1, 47, 0, 176, 231, 56, 133, 41, 5, 104, 0, 176, 24, 57, 33, 243, 80, 49, 1, 176, 240, 50, 1, 245, 80, 49, 1, 176,
+			25, 16, 0, 176, 1, 233, 122, 18, 0, 176, 184, 0, 0, 176, 184, 0, 1, 176, 44, 22, 0, 176, 60, 226, 0, 176, 249, 0, 138, 18,
+			38, 5, 1, 176, 174, 32, 38, 5, 0, 176, 121, 245, 0, 176, 159, 207, 139, 18, 0, 176, 250, 187, 0, 176, 227, 251, 0, 176, 33, 190,
+			0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 48, 194, 30, 109, 32, 195, 30, 109, 0, 161, 21, 28,
+			77, 9, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54,
+			34, 34, 5, 104, 0, 176, 77, 49, 0, 240, 167, 55, 0, 176, 118, 55, 32, 243, 167, 55, 0, 161, 25, 3, 77, 1, 238, 188, 0, 162,
+			146, 18, 77, 1, 110, 189, 208, 194, 71, 156, 1, 13, 0, 32, 16, 4, 0, 176, 135, 0, 0, 161, 213, 3, 87, 1, 246, 221, 0, 162,
+			146, 18, 87, 1, 246, 221, 0, 192, 1, 122, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 231, 56,
+			133, 41, 5, 104, 0, 176, 24, 57, 0, 240, 73, 57, 0, 176, 215, 59, 0, 240, 11, 61, 38, 5, 0, 176, 170, 230, 2, 13, 144, 201,
+			0, 176, 149, 186, 1, 13, 0, 114, 0, 161, 25, 3, 73, 1, 98, 170, 0, 162, 18, 34, 73, 9, 98, 170, 0, 176, 255, 13, 32, 243,
+			64, 14, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 49, 194, 33, 51, 33, 195, 33, 51, 0, 161,
+			21, 28, 77, 9, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 1, 176, 239, 51, 1, 240,
+			33, 51, 1, 176, 239, 51, 33, 243, 33, 51, 31, 50, 30, 34, 1, 192, 32, 52, 2, 41, 1, 192, 24, 55, 97, 196, 24, 55, 28, 34,
+			0, 192, 140, 158, 31, 50, 30, 34, 1, 192, 32, 52, 2, 41, 1, 192, 24, 55, 97, 196, 24, 55, 0, 161, 213, 3, 81, 9, 238, 188,
+			0, 162, 18, 34, 81, 9, 46, 173, 1, 47, 0, 176, 231, 56, 0, 176, 215, 59, 1, 240, 56, 57, 3, 13, 202, 100, 0, 145, 0, 161,
+			227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 231, 56, 0, 176, 215, 59, 1, 240, 12, 60, 0, 161, 213, 3, 77, 1, 238, 188, 33, 195,
+			251, 61, 3, 13, 201, 116, 0, 149, 0, 161, 227, 83, 85, 1, 246, 221, 1, 192, 12, 60, 0, 161, 25, 3, 75, 1, 232, 171, 0, 162,
+			18, 34, 75, 9, 232, 171, 133, 41, 5, 104, 0, 176, 197, 77, 33, 243, 56, 57, 0, 176, 197, 77, 193, 243, 56, 57, 0, 161, 25, 3,
+			77, 1, 106, 172, 0, 162, 18, 2, 77, 1, 106, 172, 133, 41, 193, 195, 56, 57, 97, 196, 56, 57, 0, 161, 213, 3, 73, 9, 238, 172,
+			0, 162, 18, 34, 73, 9, 46, 173, 1, 47, 0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240, 122, 63, 0, 176, 106, 64,
+			161, 245, 65, 64, 0, 161, 25, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 224, 193, 71, 156, 2, 13, 173, 201, 0, 176,
+			149, 29, 2, 13, 173, 201, 0, 176, 149, 29, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 192, 46, 139,
+			2, 13, 178, 201, 0, 162, 23, 114, 81, 13, 114, 205, 2, 47, 5, 104, 0, 208, 211, 42, 0, 176, 244, 42, 6, 106, 0, 208, 53, 43,
+			0, 208, 150, 43, 0, 208, 231, 43, 0, 208, 72, 44, 0, 208, 169, 44, 0, 208, 26, 45, 0, 39, 0, 176, 123, 45, 138, 41, 10, 104,
+			67, 36, 3, 104, 37, 10, 4, 96, 67, 37, 2, 104, 50, 10, 0, 176, 156, 45, 1, 0, 2, 44, 2, 104, 2, 96, 14, 3, 0, 181,
+			255, 13, 32, 243, 64, 14, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 231, 56, 133, 41, 5, 104, 0, 176, 24, 57, 0, 240,
+			73, 57, 1, 0, 0, 161, 227, 83, 85, 1, 246, 221, 0, 192, 194, 115, 0, 162, 18, 34, 75, 9, 84, 65, 2, 47, 11, 104, 0, 161,
+			25, 3, 75, 1, 212, 114, 133, 41, 3, 104, 0, 176, 213, 35, 0, 176, 22, 36, 0, 208, 26, 37, 0, 176, 237, 37, 2, 41, 38, 1,
+			113, 32, 1, 176, 187, 64, 1, 176, 12, 65, 90, 32, 115, 1, 25, 10, 1, 176, 61, 65, 132, 45, 7, 0, 117, 1, 132, 40, 37, 1,
+			1, 176, 126, 65, 1, 176, 175, 65, 132, 40, 6, 104, 57, 37, 3, 104, 35, 1, 2, 96, 37, 1, 1, 176, 61, 65, 132, 40, 36, 1,
+			73, 44, 117, 1, 1, 176, 61, 65, 132, 40, 6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 120, 1, 73, 44, 117, 1, 1, 176, 61, 65,
+			1, 176, 240, 65, 132, 40, 6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 121, 1, 1, 176, 49, 66, 132, 45, 7, 0, 6, 104, 57, 32,
+			3, 104, 119, 1, 2, 96, 122, 1, 132, 40, 6, 104, 57, 37, 3, 104, 36, 1, 2, 96, 121, 1, 1, 176, 114, 66, 132, 45, 7, 0,
+			117, 1, 132, 40, 36, 1, 73, 44, 123, 1, 1, 176, 114, 66, 122, 1, 1, 0, 126, 18, 1, 176, 179, 66, 73, 44, 128, 1, 132, 40,
+			39, 1, 1, 176, 244, 66, 1, 176, 37, 67, 1, 176, 102, 67, 1, 176, 183, 67, 126, 18, 1, 176, 8, 68, 90, 32, 3, 104, 115, 18,
+			121, 1, 91, 32, 3, 104, 115, 18, 121, 1, 110, 32, 3, 104, 115, 18, 121, 1, 37, 18, 1, 176, 92, 37, 1, 176, 57, 68, 132, 40,
+			4, 104, 100, 10, 1, 176, 122, 68, 0, 176, 45, 202, 1, 0, 132, 40, 0, 176, 251, 225, 73, 44, 2, 104, 117, 1, 1, 0, 132, 40,
+			6, 104, 57, 37, 3, 104, 134, 1, 2, 96, 120, 1, 73, 44, 126, 1, 0, 176, 208, 197, 0, 176, 173, 211, 1, 176, 219, 68, 57, 37,
+			2, 104, 12, 96, 132, 40, 7, 104, 73, 44, 3, 104, 120, 1, 2, 96, 134, 1, 4, 96, 73, 44, 2, 104, 117, 1, 136, 40, 0, 176,
+			74, 196, 1, 176, 28, 69, 132, 45, 7, 0, 35, 1, 132, 40, 6, 104, 57, 37, 3, 104, 35, 1, 2, 96, 134, 1, 0, 176, 208, 197,
+			0, 176, 74, 196, 0, 161, 153, 55, 75, 1, 94, 170, 0, 162, 18, 2, 75, 9, 94, 170, 1, 176, 93, 69, 33, 243, 158, 69, 38, 5,
+			130, 40, 1, 176, 101, 35, 1, 176, 174, 32, 130, 40, 0, 176, 25, 235, 0, 176, 60, 226, 130, 40, 0, 176, 52, 219, 1, 176, 5, 26,
+			130, 40, 10, 104, 131, 45, 7, 0, 3, 104, 1, 176, 109, 22, 2, 13, 144, 201, 0, 176, 125, 226, 0, 176, 184, 0, 130, 40, 0, 176,
+			8, 230, 0, 176, 123, 1, 130, 40, 0, 176, 227, 251, 0, 176, 250, 187, 0, 161, 213, 3, 85, 5, 110, 173, 0, 162, 18, 34, 85, 37,
+			110, 173, 1, 47, 0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240, 122, 63, 0, 176, 106, 64, 96, 249, 155, 64, 108, 18,
+			0, 176, 184, 0, 136, 40, 1, 176, 109, 22, 1, 176, 151, 26, 124, 18, 0, 176, 58, 206, 8, 59, 3, 43, 0, 176, 25, 235, 0, 176,
+			249, 0, 1, 0, 124, 17, 0, 176, 60, 226, 38, 5, 0, 176, 58, 1, 1, 18, 37, 1, 1, 0, 38, 5, 0, 176, 97, 251, 127, 18,
+			0, 176, 104, 187, 8, 59, 3, 43, 0, 176, 159, 207, 0, 176, 104, 187, 1, 0, 127, 17, 0, 176, 185, 187, 111, 18, 0, 176, 250, 187,
+			0, 176, 250, 187, 0, 176, 41, 215, 0, 176, 33, 190, 0, 176, 36, 191, 1, 176, 151, 26, 0, 176, 23, 187, 38, 5, 1, 176, 101, 35,
+			0, 176, 104, 187, 0, 176, 188, 1, 0, 176, 117, 219, 0, 176, 249, 0, 0, 176, 82, 248, 0, 176, 251, 245, 1, 176, 87, 5, 0, 176,
+			124, 188, 1, 176, 95, 70, 0, 176, 21, 234, 1, 176, 89, 21, 0, 176, 114, 190, 1, 176, 176, 70, 0, 176, 36, 191, 2, 13, 176, 202,
+			28, 34, 0, 192, 140, 158, 29, 34, 0, 192, 225, 159, 30, 34, 0, 192, 128, 161, 31, 34, 0, 192, 37, 163, 32, 34, 0, 192, 139, 164,
+			33, 34, 0, 192, 58, 166, 96, 196, 3, 168, 0, 176, 254, 246, 0, 176, 25, 235, 0, 176, 25, 235, 38, 5, 0, 176, 58, 1, 0, 176,
+			123, 1, 0, 176, 123, 1, 1, 176, 87, 5, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9, 46, 173, 2, 57, 87, 57,
+			3, 41, 6, 104, 0, 55, 8, 39, 2, 104, 2, 96, 100, 1, 1, 47, 0, 176, 24, 63, 133, 41, 5, 104, 0, 176, 73, 63, 0, 240,
+			122, 63, 0, 176, 106, 64, 0, 240, 155, 64, 2, 57, 87, 57, 57, 34, 7, 104, 0, 55, 8, 55, 55, 32, 2, 104, 2, 96, 86, 1,
+			0, 145, 2, 7, 1, 0, 2, 57, 87, 57, 3, 41, 6, 104, 0, 55, 8, 39, 2, 104, 2, 96, 82, 1, 0, 145, 196, 2, 1, 0,
+			0, 145, 0, 4, 133, 41, 5, 104, 0, 176, 37, 69, 48, 242, 86, 69, 1, 0, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18,
+			77, 1, 98, 162, 0, 41, 192, 195, 250, 71, 48, 50, 47, 50, 49, 34, 0, 192, 2, 137, 0, 197, 46, 139, 2, 13, 139, 202, 0, 161,
+			25, 3, 169, 5, 84, 90, 0, 162, 5, 18, 9, 1, 84, 73, 133, 41, 5, 104, 0, 176, 223, 67, 0, 245, 110, 65, 1, 176, 1, 71,
+			0, 245, 110, 65, 2, 13, 190, 201, 2, 43, 69, 1, 0, 145, 138, 2, 1, 0, 89, 1, 1, 0, 124, 17, 1, 176, 50, 71, 2, 13,
+			144, 201, 0, 176, 74, 196, 13, 17, 0, 176, 249, 0, 13, 17, 0, 176, 60, 226, 0, 176, 60, 226, 111, 17, 0, 176, 123, 1, 111, 17,
+			0, 176, 104, 187, 0, 176, 59, 188, 111, 17, 0, 176, 250, 187, 131, 45, 8, 0, 3, 0, 47, 1, 1, 0, 0, 176, 23, 187, 36, 19,
+			1, 1, 1, 0, 0, 176, 185, 187, 0, 176, 170, 230, 0, 176, 80, 242, 38, 5, 1, 176, 115, 71, 1, 176, 220, 27, 1, 176, 45, 28,
+			4, 13, 144, 201, 131, 204, 139, 40, 1, 176, 180, 71, 1, 176, 245, 71, 1, 0, 8, 13, 144, 201, 131, 204, 138, 202, 131, 204, 1, 176,
+			54, 72, 7, 13, 204, 111, 201, 131, 204, 170, 0, 131, 1, 176, 135, 72, 0, 176, 74, 196, 2, 41, 1, 1, 0, 176, 74, 196, 0, 176,
+			214, 186, 0, 176, 95, 236, 0, 176, 249, 0, 38, 5, 0, 176, 170, 230, 2, 41, 57, 1, 38, 5, 0, 176, 170, 230, 0, 176, 143, 197,
+			0, 176, 250, 187, 136, 40, 137, 40, 2, 41, 58, 1, 0, 176, 66, 233, 38, 5, 0, 176, 33, 190, 38, 5, 0, 176, 114, 190, 38, 5,
+			1, 176, 248, 72, 0, 176, 111, 189, 1, 176, 105, 73, 0, 145, 255, 5, 1, 13, 0, 120, 1, 0, 0, 145, 128, 5, 1, 13, 0, 115,
+			1, 0, 2, 13, 190, 201, 0, 161, 213, 3, 79, 5, 98, 170, 0, 162, 18, 2, 79, 9, 98, 170, 1, 47, 0, 176, 15, 193, 0, 176,
+			64, 193, 128, 242, 167, 55, 2, 13, 144, 201, 0, 176, 74, 196, 2, 13, 144, 201, 2, 41, 1, 1, 0, 176, 74, 196, 132, 18, 0, 176,
+			214, 186, 4, 13, 144, 201, 131, 204, 0, 176, 153, 210, 8, 13, 144, 201, 131, 204, 138, 202, 131, 204, 1, 176, 54, 72, 112, 17, 0, 176,
+			60, 226, 112, 17, 0, 176, 249, 0, 2, 13, 168, 201, 1, 176, 186, 73, 38, 5, 0, 176, 58, 1, 2, 13, 168, 201, 2, 41, 1, 1,
+			38, 5, 1, 176, 186, 73, 0, 176, 123, 206, 40, 18, 0, 176, 104, 187, 1, 176, 166, 35, 136, 40, 137, 40, 2, 41, 58, 1, 1, 176,
+			166, 35, 1, 176, 176, 70, 2, 13, 129, 202, 0, 161, 25, 3, 71, 1, 222, 185, 138, 41, 46, 1, 1, 176, 251, 73, 128, 247, 178, 6,
+			0, 145, 146, 5, 2, 13, 131, 202, 1, 0, 2, 13, 178, 202, 2, 41, 38, 1, 125, 32, 4, 104, 30, 10, 1, 176, 60, 74, 126, 32,
+			1, 176, 187, 64, 127, 32, 1, 176, 125, 74, 1, 176, 190, 74, 124, 18, 38, 5, 0, 176, 58, 1, 0, 176, 25, 235, 2, 13, 168, 201,
+			1, 176, 186, 73, 0, 176, 214, 186, 0, 176, 202, 225, 1, 176, 239, 74, 0, 176, 227, 251, 0, 176, 205, 188, 0, 176, 222, 231, 0, 176,
+			63, 247, 1, 176, 176, 38, 1, 176, 48, 75, 1, 176, 161, 75, 1, 176, 242, 75, 1, 176, 173, 37, 1, 176, 67, 76, 1, 176, 164, 76,
+			1, 176, 245, 76, 138, 41, 46, 1, 6, 106, 16, 223, 199, 4, 16, 223, 248, 4, 16, 223, 41, 5, 16, 223, 90, 5, 16, 223, 139, 5,
+			16, 223, 188, 5, 2, 39, 224, 236, 237, 5, 47, 48, 48, 48, 49, 32, 0, 176, 136, 11, 0, 176, 185, 11, 0, 145, 206, 0, 0, 162,
+			18, 2, 0, 32, 0, 0, 1, 0, 0, 145, 180, 1, 0, 162, 18, 34, 83, 41, 84, 65, 1, 0, 0, 145, 220, 1, 0, 162, 146, 50,
+			83, 41, 98, 162, 1, 0, 0, 145, 226, 6, 0, 162, 210, 19, 73, 33, 84, 65, 1, 0, 0, 145, 245, 6, 0, 162, 146, 18, 79, 33,
+			98, 164, 1, 0, 0, 145, 21, 6, 0, 162, 146, 18, 77, 33, 98, 162, 1, 0, 0, 145, 106, 5, 0, 162, 18, 2, 75, 33, 84, 65,
+			1, 0, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 33, 98, 162, 32, 195, 61, 83, 0, 161, 25, 3, 77, 1, 106, 172,
+			0, 162, 18, 2, 77, 33, 106, 172, 0, 192, 61, 88, 0, 162, 18, 34, 73, 41, 84, 73, 31, 34, 5, 104, 0, 176, 6, 53, 0, 240,
+			120, 51, 0, 176, 201, 53, 0, 240, 120, 51, 0, 145, 2, 7, 0, 161, 213, 3, 79, 9, 98, 172, 0, 162, 18, 2, 79, 41, 98, 172,
+			1, 0, 0, 162, 136, 20, 73, 45, 98, 170, 31, 34, 9, 104, 0, 161, 25, 3, 71, 1, 98, 170, 1, 176, 70, 77, 0, 240, 178, 6,
+			1, 176, 119, 77, 0, 240, 178, 6, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 33, 84, 73, 133, 41, 5, 104, 0, 176,
+			223, 67, 0, 240, 110, 65, 0, 176, 114, 68, 0, 240, 110, 65, 0, 162, 25, 18, 13, 33, 98, 170, 133, 41, 5, 104, 0, 176, 201, 71,
+			0, 240, 250, 71, 0, 176, 167, 74, 0, 240, 250, 71, 0, 161, 25, 3, 75, 33, 232, 171, 0, 162, 18, 34, 75, 9, 232, 171, 133, 41,
+			5, 104, 0, 176, 148, 77, 0, 240, 9, 75, 0, 176, 197, 77, 0, 240, 9, 75, 136, 40, 130, 40, 35, 34, 1, 1, 128, 40, 0, 176,
+			254, 246, 0, 176, 214, 186, 0, 176, 25, 235, 38, 5, 0, 176, 58, 1, 0, 176, 123, 1, 0, 176, 250, 187, 0, 161, 213, 26, 77, 5,
+			96, 170, 0, 162, 146, 18, 77, 1, 96, 162, 133, 41, 1, 192, 168, 77, 1, 192, 168, 77, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162,
+			146, 18, 77, 1, 110, 189, 133, 41, 0, 192, 66, 119, 87, 41, 0, 192, 113, 120, 55, 34, 0, 192, 115, 123, 96, 196, 255, 124, 0, 176,
+			134, 249, 0, 176, 249, 0, 0, 176, 23, 187, 0, 176, 104, 187, 0, 176, 143, 197, 1, 176, 105, 73, 1, 176, 248, 72, 1, 176, 215, 44,
+			0, 176, 185, 253, 0, 162, 18, 2, 75, 1, 84, 65, 0, 192, 192, 130, 38, 5, 58, 32, 0, 208, 4, 199, 0, 176, 82, 248, 38, 5,
+			0, 176, 121, 245, 0, 176, 58, 206, 112, 17, 0, 176, 184, 205, 0, 176, 23, 187, 13, 16, 1, 176, 202, 41, 2, 13, 153, 201, 1, 176,
+			83, 4, 1, 176, 235, 77, 1, 176, 60, 78, 2, 13, 137, 202, 1, 176, 125, 78, 1, 176, 218, 36, 1, 176, 190, 78, 0, 176, 177, 212,
+			130, 40, 136, 40, 1, 176, 44, 22, 1, 176, 151, 26, 0, 176, 251, 225, 1, 176, 239, 78, 0, 176, 123, 1, 0, 176, 104, 187, 0, 176,
+			36, 252, 0, 176, 250, 187, 0, 161, 25, 3, 179, 1, 110, 189, 0, 162, 146, 18, 179, 1, 110, 189, 193, 195, 48, 79, 0, 176, 55, 210,
+			0, 176, 202, 225, 38, 5, 0, 176, 121, 245, 38, 5, 58, 32, 0, 208, 4, 199, 0, 176, 58, 1, 1, 176, 24, 21, 1, 176, 66, 81,
+			1, 176, 131, 81, 1, 176, 196, 81, 13, 16, 0, 176, 60, 226, 0, 176, 23, 187, 0, 176, 58, 206, 1, 176, 5, 82, 1, 176, 5, 82,
+			1, 176, 209, 3, 1, 176, 209, 3, 0, 176, 123, 1, 0, 176, 251, 245, 0, 176, 66, 233, 0, 176, 250, 187, 2, 13, 137, 202, 1, 176,
+			70, 82, 4, 13, 137, 202, 144, 203, 1, 176, 135, 82, 38, 5, 0, 176, 53, 224, 38, 5, 1, 176, 216, 82, 38, 5, 0, 176, 188, 201,
+			4, 13, 137, 202, 170, 201, 38, 5, 0, 176, 185, 253, 1, 176, 41, 83, 1, 176, 122, 83, 38, 5, 0, 176, 170, 230, 38, 5, 37, 18,
+			0, 176, 97, 251, 38, 5, 0, 176, 249, 205, 38, 5, 109, 18, 0, 176, 249, 205, 0, 176, 60, 226, 0, 176, 182, 219, 1, 176, 44, 22,
+			35, 18, 0, 176, 47, 212, 1, 176, 48, 33, 114, 18, 0, 176, 196, 233, 0, 176, 227, 251, 40, 18, 0, 176, 250, 187, 1, 176, 235, 83,
+			117, 18, 0, 176, 134, 249, 1, 176, 44, 84, 119, 18, 1, 176, 44, 84, 0, 176, 212, 223, 121, 18, 0, 176, 212, 223, 0, 176, 114, 190,
+			123, 18, 0, 176, 114, 190, 0, 176, 10, 254, 125, 18, 0, 176, 10, 254, 1, 176, 109, 84, 127, 18, 1, 176, 109, 84, 1, 176, 174, 84,
+			129, 18, 1, 176, 174, 84, 0, 176, 36, 191, 0, 176, 134, 249, 2, 13, 35, 109, 0, 162, 18, 34, 75, 9, 84, 65, 1, 176, 255, 84,
+			2, 13, 35, 110, 0, 162, 146, 50, 77, 9, 98, 162, 6, 106, 0, 208, 177, 38, 0, 208, 242, 38, 0, 208, 51, 39, 0, 208, 116, 39,
+			0, 208, 181, 39, 0, 208, 246, 39, 1, 176, 64, 85, 3, 13, 178, 201, 0, 35, 0, 162, 18, 98, 81, 13, 110, 189, 1, 176, 129, 85,
+			3, 13, 139, 197, 0, 35, 0, 162, 148, 50, 75, 13, 110, 189, 6, 106, 0, 208, 111, 46, 0, 208, 160, 46, 0, 208, 209, 46, 0, 208,
+			2, 47, 0, 208, 51, 47, 0, 208, 100, 47, 1, 176, 194, 85, 2, 13, 35, 108, 144, 193, 149, 148, 3, 13, 108, 116, 0, 35, 0, 161,
+			213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 33, 195, 3, 86, 2, 13, 35, 114, 1, 176, 93, 88, 0, 240, 178, 6,
+			0, 161, 213, 26, 75, 5, 84, 90, 0, 162, 18, 34, 73, 9, 84, 74, 0, 192, 120, 51, 0, 161, 213, 3, 77, 9, 98, 170, 0, 162,
+			18, 2, 77, 9, 98, 170, 133, 41, 0, 192, 108, 54, 0, 197, 167, 55, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9,
+			46, 173, 133, 41, 0, 192, 122, 63, 96, 201, 155, 64, 5, 146, 248, 97, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 248, 98, 1, 0,
+			5, 146, 120, 99, 1, 0, 5, 146, 248, 99, 5, 147, 120, 100, 1, 0, 4, 146, 20, 141, 5, 147, 248, 100, 1, 0, 5, 146, 120, 98,
+			1, 0, 0, 176, 254, 246, 67, 50, 80, 34, 50, 10, 2, 96, 70, 10, 0, 176, 9, 196, 0, 176, 182, 219, 0, 176, 249, 0, 38, 5,
+			58, 37, 0, 208, 252, 30, 67, 50, 80, 34, 4, 104, 50, 10, 1, 176, 25, 27, 70, 10, 0, 176, 97, 251, 1, 0, 117, 50, 68, 34,
+			40, 10, 2, 96, 70, 10, 0, 176, 196, 233, 117, 50, 68, 34, 55, 10, 2, 96, 70, 10, 0, 176, 104, 187, 117, 50, 68, 34, 60, 10,
+			2, 96, 70, 10, 193, 179, 45, 28, 117, 50, 68, 34, 60, 10, 2, 96, 90, 10, 1, 176, 94, 89, 117, 50, 68, 50, 67, 50, 80, 34,
+			60, 10, 2, 96, 70, 10, 0, 176, 52, 219, 1, 176, 159, 89, 1, 176, 224, 89, 0, 176, 33, 190, 1, 176, 156, 6, 0, 176, 23, 253,
+			0, 176, 114, 190, 0, 176, 195, 190, 1, 176, 49, 90, 0, 176, 36, 191, 0, 176, 149, 191, 1, 176, 130, 90, 1, 176, 211, 90, 0, 176,
+			137, 200, 0, 176, 111, 189, 1, 176, 105, 73, 0, 176, 192, 189, 0, 176, 63, 247, 0, 176, 44, 231, 1, 176, 52, 91, 1, 176, 3, 1,
+			0, 176, 223, 202, 1, 176, 54, 72, 1, 176, 149, 91, 1, 176, 245, 76, 1, 176, 230, 91, 1, 176, 55, 92, 0, 176, 125, 216, 1, 176,
+			135, 72, 0, 176, 222, 231, 97, 180, 136, 92, 0, 161, 15, 19, 83, 1, 238, 188, 0, 162, 146, 18, 83, 1, 110, 189, 81, 192, 201, 92,
+			0, 161, 8, 19, 77, 1, 98, 170, 1, 176, 60, 93, 0, 161, 200, 19, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 33, 195,
+			125, 93, 0, 161, 200, 19, 77, 1, 238, 188, 161, 192, 249, 94, 2, 13, 151, 201, 0, 161, 200, 19, 77, 5, 98, 170, 0, 162, 15, 50,
+			77, 9, 98, 170, 1, 192, 181, 95, 0, 161, 200, 51, 85, 1, 246, 221, 0, 162, 8, 18, 51, 37, 246, 221, 81, 192, 30, 97, 0, 161,
+			213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 160, 192, 206, 174, 0, 161, 200, 58, 75, 1, 84, 115, 0, 162, 136, 50,
+			77, 9, 98, 162, 0, 176, 162, 42, 0, 161, 8, 28, 77, 5, 158, 162, 0, 162, 136, 18, 77, 1, 94, 162, 133, 41, 81, 192, 168, 77,
+			96, 196, 47, 111, 5, 146, 248, 97, 1, 0, 5, 146, 120, 98, 5, 147, 248, 100, 1, 0, 5, 146, 120, 99, 1, 0, 4, 146, 20, 141,
+			1, 0, 4, 146, 20, 141, 5, 147, 248, 100, 1, 0, 4, 146, 20, 141, 5, 147, 248, 100, 1, 0, 5, 146, 248, 97, 1, 0, 0, 145,
+			207, 32, 1, 0, 0, 145, 203, 32, 1, 0, 0, 145, 196, 32, 1, 0, 0, 145, 249, 32, 1, 0, 0, 145, 2, 33, 1, 0, 0, 145,
+			221, 32, 0, 176, 139, 235, 0, 145, 54, 33, 0, 176, 10, 240, 0, 161, 200, 48, 75, 1, 84, 115, 1, 0, 0, 145, 10, 33, 1, 176,
+			16, 0, 5, 146, 212, 137, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 248, 98, 1, 0, 5, 146, 120, 99, 5, 147, 120, 100, 1, 0,
+			5, 146, 248, 99, 1, 0, 4, 146, 20, 141, 1, 0, 5, 146, 120, 98, 1, 0, 0, 145, 207, 32, 0, 176, 186, 245, 0, 145, 203, 32,
+			0, 176, 23, 187, 0, 145, 196, 32, 1, 176, 149, 98, 0, 145, 249, 32, 1, 0, 0, 145, 2, 33, 1, 0, 0, 145, 221, 32, 0, 176,
+			159, 207, 0, 145, 54, 33, 0, 176, 10, 240, 0, 145, 242, 32, 0, 176, 251, 220, 0, 145, 228, 32, 1, 176, 230, 98, 0, 145, 10, 33,
+			1, 176, 16, 0, 5, 146, 248, 97, 1, 0, 5, 146, 248, 98, 1, 0, 5, 146, 248, 97, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146,
+			248, 98, 1, 0, 5, 146, 248, 97, 1, 0, 5, 146, 120, 98, 1, 0, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1,
+			98, 162, 0, 192, 6, 172, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 0, 192, 226, 111, 0, 192, 50, 114, 0, 161, 213, 3, 75, 1,
+			238, 172, 0, 162, 146, 18, 75, 5, 110, 189, 133, 41, 0, 192, 0, 0, 31, 34, 0, 192, 1, 122, 34, 50, 51, 34, 0, 192, 113, 120,
+			55, 34, 0, 192, 115, 123, 14, 34, 96, 196, 255, 124, 0, 192, 52, 126, 0, 161, 213, 19, 75, 1, 84, 115, 0, 162, 210, 18, 73, 5,
+			84, 65, 133, 41, 0, 192, 0, 0, 0, 192, 58, 105, 0, 161, 213, 3, 81, 1, 98, 170, 0, 162, 146, 18, 77, 5, 98, 162, 133, 41,
+			0, 192, 0, 0, 0, 192, 34, 110, 1, 176, 209, 3, 1, 176, 131, 34, 0, 176, 21, 234, 1, 176, 39, 99, 1, 176, 168, 99, 0, 176,
+			74, 196, 0, 176, 222, 231, 1, 176, 57, 100, 0, 176, 23, 187, 0, 176, 114, 190, 1, 176, 154, 100, 1, 176, 105, 73, 38, 5, 49, 52,
+			68, 36, 4, 104, 75, 10, 0, 176, 249, 205, 0, 176, 58, 1, 1, 176, 27, 101, 0, 176, 192, 189, 2, 41, 68, 1, 1, 176, 172, 101,
+			0, 176, 123, 1, 1, 176, 253, 101, 0, 176, 188, 201, 0, 176, 107, 254, 1, 176, 110, 102, 49, 52, 68, 36, 0, 176, 66, 233, 0, 176,
+			250, 187, 1, 176, 207, 102, 0, 176, 149, 191, 0, 176, 205, 188, 1, 176, 48, 103, 0, 176, 77, 241, 0, 176, 124, 188, 5, 146, 212, 137,
+			1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 248, 99, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 248, 98,
+			1, 0, 5, 146, 248, 98, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 120, 98, 1, 0, 5, 146, 248, 97, 1, 0, 0, 162, 146, 50,
+			77, 9, 98, 162, 6, 106, 0, 208, 177, 38, 0, 208, 242, 38, 0, 208, 51, 39, 0, 208, 116, 39, 0, 208, 181, 39, 0, 208, 246, 39,
+			138, 41, 1, 176, 198, 19, 0, 176, 104, 40, 0, 162, 25, 50, 87, 9, 230, 171, 6, 106, 0, 208, 111, 46, 0, 208, 160, 46, 0, 208,
+			209, 46, 0, 208, 2, 47, 0, 208, 51, 47, 0, 208, 100, 47, 0, 39, 0, 176, 231, 47, 138, 41, 1, 176, 113, 103, 1, 0, 0, 145,
+			192, 0, 31, 36, 0, 208, 98, 22, 0, 176, 205, 24, 2, 41, 18, 104, 6, 106, 0, 208, 116, 32, 0, 208, 181, 32, 0, 208, 246, 32,
+			0, 208, 55, 33, 0, 208, 104, 33, 0, 208, 185, 33, 32, 238, 234, 33, 0, 176, 11, 34, 0, 162, 35, 18, 0, 0, 0, 0, 0, 176,
+			44, 34, 1, 0, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 0, 192, 113, 103, 0, 161, 213, 26, 75, 1,
+			84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 0, 192, 29, 175, 0, 162, 18, 2, 75, 1, 84, 65, 0, 192, 192, 130, 0, 161, 21, 21,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 129, 194, 168, 77, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1,
+			98, 162, 0, 192, 22, 106, 2, 161, 213, 3, 73, 5, 226, 155, 2, 162, 210, 19, 73, 5, 226, 155, 177, 196, 162, 103, 2, 161, 213, 3,
+			73, 5, 226, 155, 2, 162, 210, 19, 73, 5, 226, 155, 0, 197, 237, 178, 3, 13, 201, 116, 0, 149, 0, 161, 213, 3, 85, 1, 246, 221,
+			1, 192, 81, 104, 4, 13, 201, 116, 104, 149, 0, 161, 213, 3, 85, 1, 246, 221, 1, 197, 101, 106, 2, 13, 149, 201, 0, 161, 25, 3,
+			85, 1, 246, 221, 65, 193, 56, 57, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 133, 41, 32, 195, 46, 146,
+			32, 195, 46, 146, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 97, 196, 53, 109, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 192, 195, 6, 172, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171,
+			1, 192, 83, 111, 0, 161, 25, 3, 73, 1, 100, 171, 0, 162, 18, 2, 73, 1, 100, 171, 1, 192, 78, 114, 1, 176, 113, 103, 68, 34,
+			1, 176, 134, 117, 0, 176, 184, 0, 68, 34, 0, 176, 82, 198, 0, 176, 117, 219, 0, 176, 148, 228, 1, 176, 199, 117, 68, 34, 1, 176,
+			5, 26, 0, 176, 78, 207, 0, 176, 99, 204, 0, 176, 56, 245, 0, 176, 44, 216, 68, 34, 0, 176, 204, 196, 50, 34, 1, 176, 101, 35,
+			0, 176, 58, 1, 1, 176, 22, 5, 1, 176, 24, 118, 1, 176, 89, 118, 1, 176, 170, 118, 1, 176, 11, 119, 1, 176, 92, 119, 1, 176,
+			173, 119, 68, 34, 0, 176, 5, 205, 0, 176, 196, 233, 1, 176, 14, 120, 0, 176, 122, 215, 1, 176, 110, 102, 68, 34, 1, 176, 45, 28,
+			0, 176, 250, 187, 1, 176, 79, 120, 1, 176, 245, 76, 1, 176, 160, 120, 0, 176, 115, 237, 1, 176, 1, 121, 1, 176, 98, 121, 68, 34,
+			0, 176, 253, 235, 1, 176, 95, 70, 1, 176, 64, 23, 1, 176, 195, 121, 1, 176, 20, 122, 1, 176, 101, 122, 0, 176, 185, 253, 0, 176,
+			58, 1, 0, 176, 25, 235, 1, 176, 151, 26, 1, 176, 182, 122, 1, 176, 87, 5, 0, 162, 25, 18, 13, 1, 98, 170, 2, 47, 9, 104,
+			0, 161, 25, 3, 15, 0, 92, 170, 0, 162, 25, 50, 13, 5, 92, 170, 0, 176, 26, 80, 176, 244, 61, 83, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 97, 196, 247, 122, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162,
+			32, 195, 188, 132, 0, 161, 25, 3, 77, 1, 106, 172, 0, 162, 18, 2, 77, 1, 106, 172, 1, 192, 40, 45, 0, 161, 25, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 192, 195, 250, 71, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65,
+			0, 192, 58, 105, 2, 13, 178, 201, 0, 162, 23, 114, 81, 13, 114, 205, 2, 47, 5, 104, 0, 208, 211, 42, 0, 176, 244, 42, 6, 106,
+			0, 208, 53, 43, 0, 208, 150, 43, 0, 208, 231, 43, 0, 208, 72, 44, 0, 208, 169, 44, 0, 208, 26, 45, 0, 176, 156, 45, 0, 162,
+			148, 50, 75, 13, 110, 189, 2, 47, 7, 104, 0, 161, 25, 3, 79, 1, 42, 172, 0, 176, 46, 46, 6, 106, 0, 208, 111, 46, 0, 208,
+			160, 46, 0, 208, 209, 46, 0, 208, 2, 47, 0, 208, 51, 47, 0, 208, 100, 47, 32, 179, 8, 48, 6, 106, 0, 208, 105, 30, 0, 208,
+			154, 30, 0, 208, 203, 30, 0, 208, 252, 30, 0, 208, 45, 31, 0, 208, 94, 31, 32, 238, 143, 31, 0, 176, 230, 191, 0, 161, 213, 3,
+			75, 1, 238, 172, 0, 162, 146, 18, 75, 1, 110, 189, 2, 47, 0, 162, 146, 18, 75, 1, 238, 172, 32, 195, 66, 119, 0, 161, 227, 83,
+			85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 2, 47, 5, 104, 0, 176, 133, 62, 208, 242, 73, 57, 138, 41, 5, 104, 0, 176,
+			231, 62, 208, 242, 73, 57, 0, 176, 231, 62, 208, 242, 73, 57, 1, 0, 0, 161, 213, 3, 73, 9, 238, 172, 0, 162, 18, 34, 73, 9,
+			46, 173, 1, 47, 0, 176, 24, 63, 0, 176, 106, 64, 32, 243, 155, 64, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 124, 1, 138, 41,
+			138, 42, 2, 104, 124, 1, 1, 176, 174, 32, 1, 176, 101, 35, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104, 113, 1, 138, 41, 138, 42,
+			2, 104, 113, 1, 1, 176, 235, 77, 0, 176, 144, 222, 144, 40, 2, 104, 18, 96, 136, 57, 138, 45, 6, 0, 7, 104, 87, 57, 8, 57,
+			55, 50, 64, 34, 2, 104, 125, 1, 139, 40, 2, 104, 109, 1, 138, 41, 138, 42, 2, 104, 109, 1, 0, 176, 25, 235, 0, 176, 60, 226,
+			1, 176, 202, 41, 0, 176, 205, 188, 129, 40, 136, 40, 1, 176, 44, 22, 0, 176, 1, 248, 144, 40, 2, 104, 8, 96, 139, 40, 2, 104,
+			111, 1, 138, 41, 138, 42, 2, 104, 111, 1, 0, 176, 227, 251, 0, 176, 59, 188, 2, 13, 175, 201, 1, 176, 135, 123, 144, 40, 2, 104,
+			8, 96, 139, 40, 2, 104, 110, 1, 138, 41, 138, 42, 2, 104, 110, 1, 0, 176, 8, 230, 0, 176, 123, 1, 0, 161, 222, 19, 87, 1,
+			246, 204, 0, 162, 18, 2, 85, 1, 118, 205, 133, 41, 0, 197, 1, 122, 0, 192, 1, 122, 1, 47, 0, 176, 35, 62, 0, 161, 213, 3,
+			85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 2, 47, 5, 104, 0, 176, 133, 62, 192, 243, 1, 122, 0, 176, 231, 62, 192, 243,
+			1, 122, 2, 44, 2, 43, 16, 1, 0, 145, 119, 0, 1, 0, 1, 176, 174, 32, 57, 34, 0, 176, 249, 205, 0, 176, 173, 211, 1, 176,
+			27, 37, 1, 176, 202, 41, 0, 176, 56, 245, 0, 176, 151, 214, 1, 176, 200, 123, 1, 176, 9, 124, 1, 176, 74, 124, 1, 176, 166, 35,
+			1, 176, 235, 77, 1, 176, 1, 39, 0, 176, 130, 208, 0, 176, 208, 197, 0, 161, 25, 3, 173, 1, 238, 188, 0, 162, 146, 18, 173, 1,
+			110, 189, 192, 195, 226, 242, 0, 161, 222, 19, 87, 1, 246, 204, 0, 162, 18, 2, 85, 1, 118, 205, 133, 41, 0, 197, 1, 122, 0, 192,
+			1, 122, 0, 161, 213, 3, 85, 9, 246, 221, 0, 162, 18, 2, 85, 41, 246, 221, 1, 47, 0, 176, 35, 62, 0, 176, 231, 62, 192, 243,
+			1, 122, 13, 32, 23, 3, 0, 176, 202, 225, 35, 32, 23, 3, 108, 17, 0, 176, 184, 0, 30, 32, 23, 3, 13, 17, 0, 176, 60, 226,
+			30, 32, 23, 3, 0, 176, 60, 226, 30, 32, 23, 3, 0, 176, 249, 0, 37, 32, 23, 3, 1, 176, 174, 32, 32, 32, 23, 3, 0, 176,
+			123, 1, 32, 32, 23, 3, 0, 176, 104, 187, 40, 32, 23, 3, 0, 176, 188, 1, 2, 39, 23, 3, 2, 41, 23, 4, 0, 176, 33, 190,
+			0, 176, 16, 251, 2, 39, 23, 3, 2, 41, 23, 4, 0, 176, 188, 201, 2, 39, 23, 3, 2, 41, 23, 4, 0, 176, 14, 189, 0, 176,
+			234, 200, 1, 176, 159, 89, 1, 176, 159, 89, 13, 17, 107, 34, 1, 176, 139, 124, 1, 176, 159, 89, 13, 17, 0, 176, 249, 205, 128, 40,
+			0, 176, 74, 196, 0, 176, 117, 219, 0, 176, 74, 196, 128, 40, 0, 176, 74, 196, 0, 176, 144, 236, 1, 176, 204, 124, 1, 176, 83, 4,
+			130, 40, 0, 176, 25, 235, 0, 176, 249, 0, 59, 34, 5, 104, 224, 236, 85, 26, 0, 176, 173, 211, 60, 34, 5, 104, 32, 238, 74, 27,
+			0, 176, 78, 197, 1, 176, 213, 4, 0, 176, 170, 230, 0, 176, 124, 188, 130, 40, 0, 176, 159, 207, 1, 176, 48, 33, 0, 176, 250, 187,
+			1, 176, 131, 34, 0, 176, 44, 216, 1, 176, 49, 90, 1, 176, 13, 125, 2, 41, 55, 1, 1, 176, 94, 125, 138, 41, 122, 1, 6, 106,
+			0, 208, 205, 27, 0, 208, 254, 27, 0, 208, 47, 28, 0, 208, 96, 28, 0, 208, 145, 28, 0, 208, 210, 28, 0, 39, 0, 176, 19, 29,
+			1, 176, 175, 125, 138, 41, 59, 1, 0, 145, 192, 0, 28, 32, 224, 236, 172, 24, 4, 96, 2, 39, 128, 237, 172, 24, 1, 176, 240, 125,
+			0, 145, 91, 1, 0, 176, 230, 191, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 133, 41, 0, 197, 206, 174,
+			55, 34, 0, 192, 60, 104, 128, 199, 113, 103, 0, 161, 21, 28, 75, 9, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176,
+			10, 54, 133, 41, 5, 104, 0, 176, 59, 54, 0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49, 32, 243, 167, 55, 0, 176, 118, 55,
+			32, 243, 167, 55, 0, 162, 25, 18, 13, 1, 98, 170, 133, 41, 5, 104, 0, 176, 201, 71, 0, 240, 250, 71, 0, 176, 167, 74, 0, 240,
+			46, 139, 3, 13, 202, 100, 0, 145, 0, 161, 227, 83, 85, 9, 246, 221, 1, 47, 0, 176, 231, 56, 133, 41, 5, 104, 0, 176, 24, 57,
+			0, 240, 194, 115, 0, 176, 215, 59, 96, 249, 194, 115, 0, 161, 213, 3, 77, 1, 238, 188, 0, 162, 146, 18, 77, 1, 110, 189, 133, 41,
+			0, 192, 66, 119, 0, 192, 255, 124, 0, 176, 86, 0, 0, 176, 58, 1, 0, 176, 134, 249, 0, 176, 60, 226, 1, 176, 209, 3, 0, 176,
+			104, 187, 0, 176, 250, 187, 0, 176, 188, 235, 0, 176, 33, 190, 0, 176, 195, 190, 0, 176, 133, 209, 0, 161, 213, 3, 77, 1, 98, 170,
+			0, 162, 146, 18, 77, 1, 98, 162, 1, 192, 82, 39, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 193, 195, 129, 30, 1, 192, 129, 30,
+			134, 40, 50, 36, 11, 104, 14, 54, 6, 0, 108, 38, 6, 0, 6, 104, 136, 45, 6, 0, 3, 104, 85, 10, 1, 0, 60, 37, 141, 40,
+			13, 104, 131, 40, 6, 104, 50, 10, 68, 36, 2, 104, 246, 12, 1, 0, 140, 43, 138, 43, 3, 104, 50, 10, 1, 0, 109, 33, 3, 0,
+			11, 104, 140, 44, 140, 43, 8, 104, 14, 38, 6, 0, 5, 104, 141, 40, 3, 104, 50, 10, 1, 0, 140, 44, 138, 44, 8, 104, 138, 43,
+			14, 38, 6, 0, 86, 38, 9, 0, 2, 104, 50, 10, 14, 36, 86, 38, 6, 0, 136, 45, 6, 0, 90, 10, 132, 40, 142, 40, 11, 104,
+			140, 43, 138, 43, 8, 104, 140, 45, 6, 0, 138, 45, 6, 0, 3, 104, 55, 10, 1, 0, 140, 44, 140, 43, 43, 104, 138, 44, 138, 43,
+			40, 104, 136, 43, 3, 0, 37, 104, 57, 38, 6, 0, 3, 0, 51, 37, 3, 0, 18, 104, 34, 36, 3, 0, 110, 36, 3, 0, 13, 104,
+			131, 40, 11, 104, 141, 40, 9, 104, 138, 43, 3, 0, 138, 45, 6, 0, 3, 0, 3, 104, 55, 10, 1, 0, 51, 37, 12, 104, 132, 40,
+			68, 36, 3, 0, 3, 104, 45, 10, 1, 0, 132, 40, 68, 36, 3, 104, 37, 10, 1, 0, 138, 44, 89, 36, 138, 45, 6, 0, 14, 38,
+			9, 0, 50, 10, 91, 37, 140, 43, 138, 43, 50, 10, 51, 53, 110, 53, 34, 37, 16, 104, 138, 43, 5, 104, 141, 40, 3, 104, 55, 10,
+			1, 0, 136, 40, 3, 104, 60, 10, 1, 0, 140, 43, 138, 43, 3, 104, 55, 10, 1, 0, 68, 36, 50, 10, 138, 43, 47, 54, 6, 0,
+			72, 38, 6, 0, 12, 104, 14, 54, 9, 0, 108, 54, 9, 0, 109, 38, 9, 0, 5, 104, 141, 40, 3, 104, 55, 10, 1, 0, 138, 43,
+			60, 38, 6, 0, 14, 54, 9, 0, 108, 38, 9, 0, 55, 10, 60, 36, 14, 38, 9, 0, 9, 104, 57, 38, 6, 0, 3, 0, 5, 104,
+			140, 45, 6, 0, 2, 104, 50, 10, 49, 52, 81, 36, 14, 38, 6, 0, 5, 104, 111, 33, 3, 104, 50, 10, 1, 0, 132, 40, 141, 40,
+			3, 0, 19, 104, 49, 36, 3, 0, 81, 36, 3, 0, 14, 104, 68, 36, 3, 0, 138, 45, 6, 0, 3, 0, 8, 104, 140, 43, 3, 0,
+			140, 45, 6, 0, 3, 0, 2, 104, 85, 10, 1, 0, 60, 38, 8, 0, 40, 38, 10, 0, 3, 104, 175, 10, 1, 0, 40, 38, 10, 0,
+			60, 37, 16, 104, 136, 40, 3, 0, 13, 104, 47, 36, 3, 0, 72, 36, 3, 0, 8, 104, 89, 36, 3, 0, 91, 36, 3, 0, 3, 104,
+			162, 10, 1, 0, 72, 37, 14, 36, 7, 104, 86, 38, 6, 0, 3, 0, 3, 104, 175, 10, 1, 0, 76, 37, 140, 43, 138, 43, 3, 104,
+			90, 10, 1, 0, 140, 43, 14, 38, 6, 0, 86, 38, 9, 0, 3, 104, 90, 10, 1, 0, 140, 44, 140, 43, 16, 104, 138, 44, 138, 43,
+			13, 104, 51, 37, 3, 0, 34, 37, 3, 0, 110, 37, 3, 0, 4, 104, 90, 10, 1, 0, 3, 96, 60, 10, 1, 0, 134, 40, 21, 104,
+			80, 10, 136, 40, 2, 104, 90, 10, 138, 43, 138, 45, 6, 0, 138, 45, 9, 0, 2, 104, 70, 10, 108, 36, 139, 43, 2, 104, 120, 10,
+			138, 43, 14, 38, 6, 0, 2, 104, 112, 10, 14, 52, 109, 36, 112, 10, 138, 43, 14, 38, 6, 0, 16, 104, 141, 40, 8, 104, 140, 44,
+			140, 43, 3, 104, 90, 10, 2, 96, 112, 10, 1, 0, 142, 40, 3, 0, 132, 40, 3, 104, 70, 10, 1, 0, 86, 36, 14, 38, 6, 0,
+			6, 104, 132, 40, 3, 0, 3, 104, 112, 10, 1, 0, 138, 43, 109, 54, 6, 0, 108, 54, 6, 0, 14, 38, 6, 0, 112, 10, 140, 44,
+			140, 43, 42, 104, 138, 44, 138, 43, 39, 104, 51, 37, 3, 0, 34, 37, 3, 0, 110, 37, 3, 0, 60, 37, 3, 0, 12, 104, 140, 45,
+			6, 0, 3, 0, 3, 104, 90, 10, 1, 0, 138, 45, 6, 0, 2, 104, 60, 10, 14, 96, 60, 37, 3, 0, 132, 40, 10, 104, 51, 37,
+			3, 0, 34, 37, 3, 0, 110, 37, 3, 0, 3, 104, 60, 10, 1, 0, 51, 37, 134, 44, 3, 104, 90, 10, 1, 0, 107, 37, 138, 43,
+			138, 45, 6, 0, 14, 38, 9, 0, 3, 104, 55, 10, 1, 0, 14, 52, 108, 36, 4, 104, 141, 40, 2, 104, 112, 10, 60, 37, 140, 43,
+			138, 43, 3, 104, 90, 10, 1, 0, 138, 43, 37, 38, 6, 0, 3, 104, 112, 10, 1, 0, 86, 36, 14, 38, 6, 0, 50, 38, 9, 0,
+			4, 104, 141, 40, 2, 104, 90, 10, 60, 37, 138, 43, 14, 104, 14, 38, 6, 0, 3, 0, 108, 38, 6, 0, 3, 0, 109, 38, 6, 0,
+			3, 0, 3, 104, 50, 10, 2, 96, 80, 10, 60, 37, 140, 43, 138, 43, 65, 10, 34, 53, 51, 53, 110, 37, 5, 104, 65, 10, 14, 36,
+			2, 104, 120, 10, 68, 36, 9, 104, 51, 37, 3, 0, 34, 37, 3, 0, 110, 37, 3, 0, 2, 104, 70, 10, 138, 43, 138, 45, 6, 0,
+			12, 104, 60, 36, 3, 0, 9, 104, 34, 36, 3, 0, 51, 37, 3, 0, 110, 37, 3, 0, 2, 104, 55, 10, 1, 0, 11, 5, 0, 176,
+			86, 205, 2, 13, 153, 201, 16, 52, 34, 36, 1, 13, 0, 32, 25, 10, 50, 36, 7, 10, 138, 44, 136, 40, 7, 10, 37, 37, 136, 40,
+			7, 10, 2, 43, 13, 1, 0, 176, 135, 0, 0, 176, 74, 196, 4, 13, 144, 201, 175, 204, 1, 176, 33, 126, 0, 145, 162, 39, 0, 176,
+			97, 251, 0, 145, 202, 38, 0, 176, 97, 251, 38, 5, 0, 176, 204, 196, 0, 145, 162, 39, 0, 176, 249, 0, 0, 145, 202, 38, 0, 176,
+			249, 0, 136, 40, 11, 5, 108, 36, 112, 10, 51, 53, 34, 53, 110, 37, 108, 38, 6, 0, 112, 10, 0, 145, 162, 39, 110, 36, 108, 38,
+			6, 0, 50, 10, 0, 176, 25, 235, 2, 13, 181, 206, 0, 145, 202, 38, 0, 176, 25, 235, 1, 13, 0, 97, 138, 43, 14, 54, 6, 0,
+			13, 38, 6, 0, 6, 104, 50, 38, 9, 0, 3, 0, 2, 104, 112, 10, 14, 52, 108, 36, 130, 10, 0, 145, 162, 39, 0, 176, 56, 245,
+			1, 13, 0, 97, 0, 145, 202, 38, 0, 176, 56, 245, 1, 13, 0, 97, 0, 145, 162, 39, 0, 176, 251, 225, 2, 13, 97, 63, 0, 145,
+			202, 38, 0, 176, 251, 225, 2, 13, 145, 201, 0, 145, 162, 39, 121, 36, 112, 10, 0, 176, 9, 196, 3, 13, 201, 63, 0, 145, 0, 145,
+			202, 38, 0, 176, 9, 196, 14, 52, 108, 52, 14, 54, 6, 0, 108, 38, 6, 0, 112, 10, 134, 40, 3, 0, 0, 145, 162, 39, 0, 176,
+			250, 187, 0, 145, 202, 38, 0, 176, 250, 187, 108, 54, 6, 0, 14, 38, 6, 0, 112, 10, 0, 145, 162, 39, 0, 176, 251, 245, 0, 145,
+			202, 38, 0, 176, 251, 245, 2, 13, 146, 201, 125, 52, 126, 36, 112, 10, 0, 145, 162, 39, 1, 176, 230, 98, 2, 13, 146, 201, 0, 145,
+			202, 38, 1, 176, 230, 98, 0, 145, 162, 39, 0, 176, 186, 220, 0, 145, 202, 38, 0, 176, 186, 220, 2, 13, 148, 201, 0, 145, 162, 39,
+			0, 176, 121, 220, 2, 13, 148, 201, 0, 145, 202, 38, 0, 176, 121, 220, 0, 145, 162, 39, 0, 176, 124, 188, 0, 145, 202, 38, 0, 176,
+			124, 188, 108, 52, 14, 36, 112, 10, 0, 145, 162, 39, 1, 176, 24, 21, 0, 145, 162, 39, 0, 176, 188, 235, 0, 145, 202, 38, 0, 176,
+			188, 235, 0, 145, 162, 39, 0, 176, 52, 219, 0, 145, 202, 38, 0, 176, 52, 219, 112, 35, 3, 0, 108, 35, 3, 0, 14, 35, 3, 0,
+			138, 43, 112, 10, 112, 52, 108, 52, 13, 52, 14, 36, 140, 10, 136, 40, 70, 10, 138, 43, 14, 54, 6, 0, 108, 38, 6, 0, 95, 10,
+			0, 176, 33, 190, 55, 36, 1, 104, 60, 1, 1, 0, 0, 176, 139, 24, 4, 13, 144, 201, 175, 204, 2, 43, 109, 36, 3, 0, 108, 36,
+			3, 0, 14, 36, 3, 0, 51, 1, 108, 53, 109, 37, 136, 40, 11, 1, 108, 53, 109, 37, 89, 36, 136, 43, 1, 1, 108, 53, 109, 37,
+			50, 36, 14, 38, 6, 0, 1, 1, 108, 52, 109, 36, 136, 41, 4, 104, 132, 44, 2, 104, 1, 1, 1, 176, 33, 126, 2, 13, 129, 202,
+			1, 176, 82, 126, 0, 161, 25, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 48, 50, 47, 50, 49, 34, 0, 192, 2, 137,
+			0, 192, 46, 139, 0, 161, 213, 26, 75, 1, 84, 115, 0, 162, 210, 18, 73, 1, 84, 65, 133, 41, 0, 192, 113, 103, 34, 34, 96, 196,
+			95, 102, 51, 50, 52, 34, 0, 192, 95, 102, 14, 34, 0, 192, 113, 103, 55, 34, 0, 192, 60, 104, 0, 192, 58, 105, 0, 161, 213, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 34, 50, 51, 50, 52, 34, 0, 192, 70, 107, 136, 40, 1, 104, 160, 197, 34, 110,
+			136, 40, 11, 5, 2, 43, 25, 104, 6, 106, 0, 208, 116, 32, 0, 208, 181, 32, 0, 208, 246, 32, 0, 208, 55, 33, 0, 208, 104, 33,
+			0, 208, 185, 33, 0, 162, 35, 18, 0, 0, 0, 0, 32, 238, 234, 33, 0, 39, 3, 104, 0, 176, 11, 34, 7, 96, 0, 162, 35, 18,
+			0, 0, 0, 0, 0, 176, 44, 34, 1, 0, 0, 176, 86, 0, 0, 176, 58, 1, 136, 40, 0, 176, 60, 226, 0, 176, 184, 205, 129, 40,
+			1, 176, 44, 22, 0, 176, 117, 219, 0, 176, 159, 207, 0, 176, 250, 187, 0, 161, 213, 3, 76, 5, 92, 139, 0, 162, 146, 18, 76, 1,
+			110, 189, 133, 41, 128, 194, 237, 178, 30, 52, 31, 36, 128, 194, 174, 180, 32, 52, 33, 36, 225, 193, 147, 126, 48, 194, 136, 182, 1, 0,
+			0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 1, 192, 82, 39, 0, 161, 25, 3, 77, 9, 238, 188, 0, 162,
+			18, 34, 73, 9, 46, 173, 0, 176, 42, 97, 64, 246, 156, 97, 0, 161, 25, 3, 77, 9, 238, 188, 0, 162, 18, 34, 73, 9, 46, 173,
+			0, 176, 42, 97, 32, 243, 226, 242, 0, 176, 5, 214, 0, 176, 58, 1, 1, 176, 87, 5, 0, 176, 251, 225, 0, 176, 25, 235, 0, 176,
+			8, 230, 0, 176, 16, 251, 1, 176, 176, 38, 2, 41, 1, 1, 0, 41, 124, 1, 108, 18, 0, 176, 214, 186, 2, 41, 1, 1, 0, 41,
+			124, 1, 0, 176, 149, 186, 2, 41, 1, 1, 0, 41, 125, 1, 0, 176, 249, 0, 2, 41, 1, 1, 0, 41, 126, 1, 0, 176, 58, 1,
+			2, 41, 1, 1, 0, 41, 127, 1, 0, 176, 104, 187, 2, 41, 1, 1, 0, 41, 128, 1, 0, 176, 250, 187, 2, 41, 1, 1, 0, 176,
+			149, 186, 2, 41, 1, 1, 0, 176, 249, 0, 2, 41, 1, 1, 0, 176, 58, 1, 2, 41, 1, 1, 0, 176, 104, 187, 2, 41, 1, 1,
+			0, 176, 250, 187, 5, 146, 120, 98, 1, 0, 6, 146, 124, 2, 1, 0, 38, 5, 0, 176, 58, 1, 0, 176, 60, 226, 0, 176, 144, 236,
+			0, 176, 123, 1, 0, 176, 188, 1, 0, 176, 195, 190, 0, 176, 137, 200, 0, 176, 86, 0, 0, 176, 121, 245, 0, 176, 227, 251, 129, 40,
+			0, 176, 9, 196, 0, 176, 184, 0, 109, 17, 0, 176, 58, 206, 36, 1, 1, 0, 0, 176, 60, 226, 130, 40, 13, 1, 0, 176, 60, 226,
+			111, 17, 1, 176, 204, 16, 39, 1, 1, 0, 131, 40, 0, 176, 123, 206, 0, 176, 185, 187, 0, 161, 213, 3, 77, 1, 96, 170, 0, 162,
+			146, 18, 77, 1, 96, 162, 133, 41, 2, 44, 128, 194, 30, 109, 192, 195, 30, 109, 0, 161, 213, 3, 75, 1, 238, 172, 0, 162, 146, 18,
+			75, 1, 110, 189, 2, 47, 0, 162, 146, 18, 75, 1, 238, 172, 136, 40, 0, 192, 52, 126, 133, 41, 0, 192, 66, 119, 34, 50, 51, 50,
+			52, 34, 0, 192, 113, 120, 31, 50, 38, 34, 0, 192, 1, 122, 55, 34, 0, 192, 115, 123, 14, 34, 96, 196, 255, 124, 0, 192, 52, 126,
+			0, 176, 124, 188, 0, 176, 249, 205, 0, 176, 151, 195, 37, 17, 0, 176, 58, 1, 108, 17, 1, 176, 174, 32, 13, 17, 0, 176, 249, 0,
+			13, 17, 0, 176, 249, 0, 0, 176, 184, 205, 0, 176, 184, 205, 35, 17, 0, 176, 47, 212, 13, 17, 0, 176, 184, 0, 0, 176, 184, 0,
+			0, 176, 121, 220, 0, 176, 121, 220, 0, 176, 104, 187, 0, 176, 251, 245, 40, 17, 1, 176, 87, 5, 1, 176, 87, 5, 2, 13, 175, 201,
+			1, 176, 87, 5, 2, 13, 175, 201, 1, 176, 87, 5, 2, 13, 164, 201, 13, 17, 1, 176, 26, 6, 2, 13, 164, 201, 13, 17, 1, 176,
+			26, 6, 13, 18, 0, 176, 133, 209, 13, 18, 0, 176, 9, 250, 0, 176, 160, 247, 13, 17, 0, 176, 33, 190, 0, 176, 114, 190, 1, 176,
+			156, 6, 4, 13, 175, 201, 170, 201, 1, 176, 130, 90, 13, 17, 1, 176, 211, 90, 0, 176, 134, 238, 0, 161, 227, 83, 85, 1, 246, 221,
+			0, 162, 25, 18, 51, 37, 246, 221, 33, 200, 191, 128, 0, 161, 227, 83, 85, 1, 246, 221, 0, 162, 25, 18, 51, 37, 246, 221, 0, 192,
+			1, 122, 0, 145, 189, 5, 2, 13, 131, 202, 1, 0, 2, 13, 190, 201, 0, 161, 213, 3, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9,
+			98, 170, 2, 47, 9, 104, 1, 47, 3, 104, 0, 176, 173, 192, 0, 176, 222, 192, 96, 244, 167, 55, 1, 47, 0, 176, 15, 193, 0, 176,
+			64, 193, 144, 241, 167, 55, 35, 38, 8, 0, 35, 1, 33, 96, 112, 38, 8, 0, 7, 104, 16, 32, 3, 104, 35, 1, 2, 96, 112, 1,
+			24, 96, 116, 38, 8, 0, 116, 1, 20, 96, 37, 38, 8, 0, 37, 1, 16, 96, 36, 38, 8, 0, 36, 1, 12, 96, 40, 38, 8, 0,
+			40, 1, 8, 96, 119, 38, 8, 0, 119, 1, 4, 96, 120, 38, 8, 0, 120, 1, 1, 1, 1, 0, 2, 60, 3, 0, 130, 56, 85, 45,
+			8, 0, 1, 1, 12, 96, 131, 52, 132, 36, 3, 104, 99, 1, 7, 96, 81, 52, 49, 36, 3, 104, 101, 1, 2, 96, 107, 1, 1, 0,
+			2, 41, 107, 1, 2, 96, 1, 1, 1, 0, 0, 176, 58, 1, 0, 176, 25, 235, 1, 176, 44, 22, 0, 176, 123, 206, 1, 176, 217, 5,
+			6, 106, 0, 208, 239, 21, 0, 208, 32, 22, 0, 208, 65, 22, 96, 223, 98, 22, 0, 208, 147, 22, 0, 208, 212, 22, 2, 39, 128, 237,
+			172, 24, 1, 197, 194, 129, 81, 181, 74, 16, 1, 176, 9, 135, 0, 176, 60, 226, 38, 5, 1, 176, 148, 4, 1, 176, 204, 16, 1, 176,
+			29, 17, 1, 176, 87, 5, 0, 176, 187, 250, 1, 176, 143, 17, 1, 176, 220, 27, 1, 176, 101, 35, 0, 176, 25, 235, 136, 40, 1, 176,
+			74, 135, 0, 176, 251, 225, 0, 176, 124, 188, 1, 176, 218, 36, 0, 176, 227, 251, 1, 176, 29, 17, 136, 40, 0, 176, 149, 186, 0, 176,
+			162, 251, 2, 13, 175, 201, 1, 176, 135, 123, 0, 176, 58, 1, 1, 176, 9, 135, 0, 176, 139, 196, 0, 176, 162, 251, 0, 176, 121, 220,
+			0, 176, 104, 187, 0, 176, 188, 1, 38, 5, 1, 176, 101, 35, 0, 176, 25, 235, 2, 13, 168, 201, 1, 176, 199, 40, 73, 43, 0, 176,
+			244, 248, 1, 176, 50, 71, 73, 43, 0, 176, 185, 239, 0, 176, 86, 205, 1, 176, 239, 74, 0, 176, 227, 251, 4, 161, 213, 3, 75, 1,
+			84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 0, 192, 113, 103, 2, 44, 2, 43, 82, 1, 0, 145, 196, 2, 1, 0, 4, 161, 213, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 22, 106, 96, 196, 47, 111, 4, 161, 213, 3, 77, 1, 228, 154,
+			133, 41, 1, 197, 129, 30, 1, 197, 129, 30, 6, 161, 213, 3, 75, 1, 162, 162, 0, 162, 146, 18, 75, 1, 110, 189, 193, 195, 139, 135,
+			31, 37, 99, 1, 3, 96, 0, 145, 237, 5, 1, 0, 0, 176, 86, 0, 0, 176, 86, 0, 38, 5, 0, 176, 170, 230, 38, 5, 0, 176,
+			58, 1, 0, 176, 249, 0, 0, 176, 249, 0, 0, 176, 139, 196, 0, 176, 139, 196, 0, 176, 149, 186, 1, 176, 50, 71, 0, 176, 123, 1,
+			0, 176, 123, 1, 0, 176, 104, 187, 0, 176, 104, 187, 0, 176, 227, 251, 0, 176, 188, 1, 109, 16, 0, 176, 149, 186, 0, 176, 149, 186,
+			0, 176, 249, 0, 0, 176, 249, 0, 1, 176, 174, 32, 0, 176, 58, 1, 0, 176, 8, 230, 0, 176, 8, 230, 1, 176, 166, 35, 1, 176,
+			166, 35, 1, 176, 40, 36, 0, 176, 86, 0, 1, 176, 44, 22, 1, 176, 151, 26, 0, 176, 25, 235, 0, 176, 249, 0, 1, 176, 174, 32,
+			0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 104, 187, 1, 176, 166, 35, 1, 176, 166, 35, 0, 176, 33, 190, 1, 176, 110, 28, 4, 13,
+			136, 202, 176, 202, 0, 161, 213, 3, 75, 1, 100, 170, 0, 162, 146, 18, 71, 65, 100, 162, 141, 36, 139, 1, 1, 197, 0, 29, 4, 13,
+			150, 201, 176, 202, 0, 161, 213, 3, 76, 5, 100, 170, 0, 162, 18, 2, 71, 69, 100, 170, 1, 47, 1, 176, 131, 18, 33, 179, 119, 137,
+			1, 245, 0, 29, 0, 176, 202, 225, 2, 13, 144, 201, 13, 18, 1, 176, 44, 22, 0, 176, 117, 219, 1, 176, 202, 41, 1, 176, 202, 41,
+			0, 176, 60, 226, 0, 176, 25, 235, 1, 176, 174, 32, 0, 176, 58, 1, 0, 176, 159, 207, 0, 176, 159, 207, 1, 176, 166, 35, 1, 176,
+			166, 35, 1, 176, 40, 36, 1, 176, 110, 28, 3, 13, 181, 225, 0, 144, 0, 145, 180, 1, 1, 0, 3, 13, 129, 226, 0, 191, 0, 145,
+			220, 1, 1, 0, 3, 13, 182, 225, 0, 175, 0, 145, 1, 2, 1, 0, 3, 13, 182, 225, 0, 174, 0, 145, 39, 2, 1, 0, 3, 13,
+			181, 225, 0, 145, 0, 145, 79, 2, 1, 0, 1, 176, 168, 137, 1, 176, 9, 138, 1, 176, 90, 138, 1, 176, 187, 138, 134, 40, 4, 104,
+			0, 176, 208, 197, 1, 0, 130, 40, 29, 104, 65, 10, 136, 40, 141, 40, 3, 0, 2, 104, 1, 1, 2, 45, 10, 0, 92, 45, 7, 0,
+			3, 0, 6, 104, 138, 43, 136, 41, 2, 104, 2, 96, 1, 1, 73, 39, 108, 34, 3, 0, 3, 104, 110, 1, 6, 96, 34, 32, 3, 104,
+			111, 1, 2, 96, 13, 1, 58, 32, 0, 176, 186, 220, 0, 176, 208, 197, 0, 176, 104, 187, 136, 40, 138, 44, 2, 45, 10, 0, 1, 1,
+			141, 40, 10, 104, 37, 54, 7, 0, 40, 38, 7, 0, 2, 104, 39, 1, 34, 37, 2, 104, 39, 1, 121, 1, 1, 0, 0, 176, 117, 219,
+			1, 176, 174, 32, 0, 176, 188, 1, 0, 176, 249, 0, 1, 176, 239, 32, 58, 36, 85, 10, 0, 176, 104, 187, 1, 176, 48, 33, 136, 40,
+			138, 44, 121, 1, 1, 0, 136, 40, 129, 40, 1, 176, 44, 22, 0, 176, 117, 219, 1, 176, 174, 32, 0, 176, 188, 1, 0, 176, 249, 0,
+			1, 176, 239, 32, 58, 36, 85, 10, 0, 176, 104, 187, 1, 176, 48, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 1, 192, 113, 33,
+			1, 192, 113, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 0, 192, 226, 111, 0, 192, 50, 114, 136, 40, 129, 40, 1, 176, 44, 22,
+			0, 176, 117, 219, 1, 176, 174, 32, 0, 176, 188, 1, 0, 176, 249, 0, 1, 176, 239, 32, 58, 36, 85, 10, 0, 176, 104, 187, 1, 176,
+			48, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 1, 192, 113, 33, 1, 192, 113, 33, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41,
+			0, 192, 226, 111, 0, 192, 50, 114, 2, 43, 2, 104, 6, 96, 138, 39, 3, 104, 56, 1, 2, 96, 59, 1, 0, 145, 206, 0, 1, 0,
+			2, 13, 185, 201, 6, 106, 0, 208, 97, 194, 0, 208, 146, 194, 0, 208, 195, 194, 0, 208, 4, 195, 0, 208, 53, 195, 0, 208, 102, 195,
+			2, 39, 64, 236, 237, 5, 0, 176, 96, 6, 46, 34, 4, 104, 95, 10, 1, 176, 12, 139, 1, 176, 61, 139, 0, 176, 249, 205, 38, 5,
+			1, 176, 110, 139, 38, 5, 0, 176, 13, 197, 55, 17, 1, 176, 83, 4, 3, 13, 201, 105, 0, 153, 44, 5, 0, 176, 209, 236, 109, 16,
+			0, 176, 139, 196, 1, 13, 0, 97, 1, 176, 151, 26, 4, 13, 145, 201, 144, 203, 44, 5, 0, 176, 82, 198, 0, 176, 159, 207, 114, 17,
+			0, 176, 123, 206, 1, 176, 217, 5, 0, 176, 17, 198, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41,
+			0, 192, 174, 169, 0, 192, 6, 172, 0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195, 237, 178,
+			55, 34, 0, 192, 115, 123, 160, 197, 237, 178, 0, 161, 213, 3, 76, 1, 238, 172, 0, 162, 146, 18, 76, 1, 110, 189, 133, 41, 32, 195,
+			255, 124, 192, 195, 255, 124, 6, 106, 0, 208, 239, 21, 0, 208, 32, 22, 0, 208, 65, 22, 96, 223, 98, 22, 0, 208, 147, 22, 0, 208,
+			212, 22, 2, 39, 128, 237, 172, 24, 1, 197, 194, 129, 0, 161, 213, 3, 75, 1, 84, 115, 0, 162, 210, 19, 73, 1, 84, 65, 133, 41,
+			0, 192, 91, 100, 34, 34, 0, 192, 95, 102, 55, 34, 0, 192, 60, 104, 0, 192, 29, 175, 0, 161, 25, 3, 64, 9, 118, 90, 0, 162,
+			18, 2, 64, 9, 98, 90, 6, 106, 16, 223, 199, 4, 16, 223, 248, 4, 16, 223, 41, 5, 16, 223, 90, 5, 16, 223, 139, 5, 16, 223,
+			188, 5, 2, 39, 224, 236, 237, 5, 0, 176, 255, 13, 64, 246, 219, 16, 13, 48, 108, 32, 2, 104, 5, 96, 0, 176, 234, 11, 0, 240,
+			178, 6, 1, 0, 0, 161, 213, 3, 77, 1, 238, 188, 133, 41, 0, 192, 226, 111, 0, 192, 50, 114, 3, 13, 201, 116, 0, 149, 0, 161,
+			227, 83, 85, 1, 246, 221, 133, 41, 0, 192, 194, 115, 0, 192, 194, 115, 38, 5, 108, 17, 0, 176, 97, 251, 38, 5, 0, 176, 204, 196,
+			0, 176, 25, 235, 0, 176, 162, 251, 0, 176, 159, 207, 0, 176, 205, 188, 0, 176, 250, 187, 0, 176, 36, 252, 0, 176, 124, 188, 0, 176,
+			101, 252, 0, 176, 198, 252, 0, 176, 188, 201, 0, 176, 16, 251, 0, 176, 23, 253, 0, 176, 104, 253, 0, 176, 185, 253, 0, 176, 10, 254,
+			0, 176, 107, 254, 0, 176, 188, 254, 0, 176, 13, 255, 0, 176, 191, 255, 1, 176, 16, 0, 1, 176, 97, 0, 1, 176, 178, 0, 0, 176,
+			102, 234, 1, 176, 3, 1, 0, 161, 25, 3, 169, 1, 84, 90, 0, 162, 25, 18, 9, 1, 84, 73, 133, 41, 0, 176, 223, 67, 0, 176,
+			114, 68, 0, 161, 213, 3, 79, 9, 98, 155, 0, 162, 146, 18, 79, 9, 98, 155, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176,
+			59, 54, 0, 240, 108, 54, 34, 34, 5, 104, 0, 176, 77, 49, 192, 243, 46, 56, 0, 176, 118, 55, 192, 243, 46, 56, 28, 34, 0, 192,
+			140, 158, 29, 34, 0, 192, 225, 159, 30, 34, 0, 192, 128, 161, 31, 34, 0, 192, 37, 163, 32, 34, 97, 196, 149, 1, 33, 34, 1, 197,
+			149, 1, 96, 196, 3, 168, 0, 176, 184, 0, 0, 176, 25, 235, 0, 176, 58, 1, 0, 176, 104, 187, 0, 176, 188, 1, 0, 161, 213, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 1, 192, 82, 39, 1, 192, 82, 39, 0, 161, 217, 19, 77, 5, 98, 170,
+			0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 201, 71, 193, 243, 82, 39, 0, 176, 157, 174,
+			193, 248, 82, 39, 0, 161, 213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 174, 169, 0, 192, 6, 172,
+			0, 161, 217, 19, 77, 5, 98, 170, 0, 162, 18, 2, 77, 9, 98, 170, 1, 47, 0, 176, 10, 54, 133, 41, 5, 104, 0, 176, 201, 71,
+			192, 243, 174, 169, 0, 176, 157, 174, 192, 248, 6, 172, 136, 40, 70, 10, 0, 176, 173, 211, 136, 40, 70, 10, 1, 176, 14, 120, 136, 40,
+			70, 10, 0, 176, 216, 214, 136, 40, 70, 10, 0, 176, 59, 188, 0, 176, 162, 251, 1, 176, 151, 26, 0, 176, 56, 245, 1, 176, 159, 139,
+			0, 176, 1, 233, 1, 176, 0, 140, 0, 176, 34, 223, 1, 176, 65, 140, 1, 176, 152, 5, 0, 161, 25, 3, 173, 1, 238, 188, 0, 162,
+			146, 18, 173, 1, 110, 189, 192, 195, 226, 242, 92, 43, 2, 104, 2, 96, 64, 1, 0, 145, 206, 0, 1, 0, 0, 176, 58, 1, 0, 176,
+			124, 188, 0, 176, 188, 1, 0, 176, 173, 211, 0, 176, 188, 235, 0, 176, 8, 230, 2, 13, 175, 201, 1, 176, 159, 89, 0, 176, 184, 205,
+			58, 36, 3, 0, 144, 40, 3, 0, 9, 104, 141, 40, 2, 104, 113, 1, 113, 38, 8, 0, 142, 40, 2, 104, 113, 1, 0, 176, 47, 212,
+			0, 176, 5, 214, 1, 176, 9, 135, 0, 176, 249, 205, 92, 61, 8, 0, 92, 45, 7, 0, 111, 1, 112, 1, 1, 0, 92, 61, 8, 0,
+			92, 45, 7, 0, 108, 1, 2, 96, 40, 1, 1, 0, 93, 45, 7, 0, 110, 1, 2, 96, 36, 1, 1, 0, 93, 61, 8, 0, 93, 45,
+			7, 0, 104, 1, 0, 145, 57, 5, 1, 0, 93, 61, 8, 0, 93, 45, 7, 0, 118, 1, 2, 96, 100, 1, 1, 0, 93, 61, 8, 0,
+			93, 45, 7, 0, 64, 1, 0, 145, 206, 0, 1, 0, 2, 13, 144, 201, 0, 176, 47, 212, 2, 13, 155, 201, 0, 176, 139, 196, 2, 13,
+			140, 202, 0, 176, 121, 220, 1, 13, 0, 111, 1, 176, 204, 16, 1, 13, 0, 117, 0, 176, 250, 187, 2, 13, 175, 201, 1, 176, 22, 5,
+			2, 161, 213, 3, 73, 5, 226, 155, 2, 162, 210, 19, 73, 5, 226, 155, 177, 196, 162, 103, 0, 161, 21, 21, 77, 1, 98, 170, 0, 162,
+			146, 18, 77, 1, 98, 162, 129, 194, 130, 140, 3, 13, 201, 116, 0, 149, 0, 161, 213, 3, 85, 1, 246, 221, 1, 192, 80, 49, 3, 13,
+			202, 100, 0, 145, 0, 161, 213, 3, 85, 1, 246, 221, 0, 176, 215, 59, 0, 240, 11, 61, 2, 13, 190, 201, 0, 162, 136, 20, 73, 13,
+			96, 170, 0, 161, 10, 19, 77, 9, 96, 170, 31, 48, 30, 32, 0, 176, 57, 48, 0, 176, 138, 48, 0, 176, 184, 0, 136, 40, 0, 176,
+			247, 219, 0, 176, 249, 0, 0, 176, 58, 1, 0, 176, 104, 187, 1, 176, 87, 5, 0, 176, 33, 190, 3, 13, 108, 116, 0, 35, 0, 161,
+			213, 3, 77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 33, 195, 3, 86, 0, 176, 254, 246, 29, 34, 1, 1, 0, 176, 254, 246,
+			0, 176, 25, 235, 38, 5, 0, 176, 58, 1, 0, 176, 123, 1, 1, 176, 87, 5, 0, 176, 205, 188, 2, 13, 130, 202, 0, 161, 25, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 0, 41, 192, 195, 46, 146, 160, 197, 46, 146, 1, 13, 0, 115, 0, 161, 25, 3,
+			77, 1, 98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 88, 34, 4, 104, 125, 2, 1, 1, 9, 96, 81, 34, 49, 2, 6, 96, 72, 34,
+			47, 2, 3, 96, 71, 34, 48, 2, 0, 41, 192, 195, 250, 71, 0, 197, 46, 139, 3, 13, 202, 116, 0, 130, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 174, 169, 0, 192, 6, 172, 2, 13, 115, 116, 0, 161, 213, 3, 77, 1,
+			98, 170, 0, 162, 146, 18, 77, 1, 98, 162, 133, 41, 0, 192, 174, 169, 0, 192, 6, 172, 81, 34, 4, 104, 49, 2, 1, 1, 10, 96,
+			72, 34, 4, 104, 47, 2, 1, 1, 5, 96, 88, 34, 3, 104, 125, 2, 1, 1, 0, 145, 245, 6, 1, 0, 2, 13, 190, 201, 2, 43,
+			69, 1, 0, 145, 138, 2, 1, 0, 0};
+		autoFileInMemory espeakdata_phons3 = FileInMemory_createWithData (25028, reinterpret_cast<const char *> (&espeakdata_phons3_data), 
+			U"/home/david/projects/praat/espeak-work/espeak-1.48.04-source/espeak-data/phonindex", 
 			U"phonindex");
-		Collection_addItem (me.peek(), espeakdata_phons3.transfer());
+		my addItem_move (espeakdata_phons3.move());
 
-		static unsigned char espeakdata_phons4_data[36149] = {
-			84, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 98, 97, 115, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+		static unsigned char espeakdata_phons4_data[40565] = {
+			94, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 98, 97, 115, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			95, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0,
 			1, 0, 37, 37, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1,
@@ -13600,1209 +14459,1357 @@ FilesInMemory create_espeakdata_phons () {
 			0, 0, 0, 0, 10, 0, 10, 0, 12, 1, 95, 33, 0, 0, 64, 0, 0, 0, 0, 0, 11, 0, 10, 0, 17, 1, 58, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 35, 0, 64, 0, 0, 0, 2, 0, 0, 0, 12, 0, 13, 2, 28, 28, 70, 0, 64, 45,
 			0, 0, 2, 0, 16, 0, 14, 0, 14, 2, 28, 28, 90, 0, 124, 124, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9,
-			42, 0, 0, 0, 16, 64, 132, 0, 137, 2, 16, 5, 0, 0, 0, 3, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
-			0, 0, 35, 88, 49, 0, 40, 0, 4, 0, 60, 0, 18, 6, 0, 0, 0, 3, 63, 0, 0, 0, 72, 0, 12, 0, 2, 0, 19, 4,
-			0, 0, 0, 2, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 9, 0, 0, 0, 0, 95, 94, 95, 0, 0, 0, 0, 0, 0, 0,
+			42, 0, 0, 0, 16, 64, 132, 0, 138, 2, 16, 5, 0, 0, 0, 3, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
+			0, 0, 35, 88, 49, 0, 40, 0, 4, 0, 59, 0, 18, 6, 0, 0, 0, 3, 63, 0, 0, 0, 72, 0, 12, 0, 2, 0, 19, 4,
+			0, 0, 0, 3, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 9, 0, 0, 0, 0, 95, 94, 95, 0, 0, 0, 0, 0, 0, 0,
 			21, 0, 10, 0, 5, 1, 95, 88, 49, 0, 0, 0, 0, 0, 0, 0, 22, 0, 10, 0, 5, 1, 95, 124, 0, 0, 0, 0, 0, 0,
 			0, 0, 23, 0, 10, 0, 0, 5, 95, 58, 58, 0, 0, 0, 0, 0, 0, 0, 24, 0, 10, 0, 75, 1, 116, 35, 0, 0, 0, 0,
 			0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 39, 33, 0, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 6, 0, 95, 59, 95, 0,
 			0, 0, 0, 0, 0, 0, 27, 0, 10, 0, 100, 1, 35, 64, 0, 0, 0, 0, 0, 0, 0, 0, 28, 9, 0, 0, 0, 0, 35, 97,
 			0, 0, 0, 0, 0, 0, 0, 0, 29, 9, 0, 0, 0, 0, 35, 101, 0, 0, 0, 0, 0, 0, 0, 0, 30, 9, 0, 0, 0, 0,
 			35, 105, 0, 0, 0, 0, 0, 0, 0, 0, 31, 9, 0, 0, 0, 0, 35, 111, 0, 0, 0, 0, 0, 0, 0, 0, 32, 9, 0, 0,
-			0, 0, 35, 117, 0, 0, 0, 0, 0, 0, 0, 0, 33, 9, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 128, 0, 72, 0, 34, 3,
-			0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 24, 0, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 26, 0,
-			36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 28, 0, 37, 2, 31, 31, 85, 0, 59, 0, 0, 0, 0, 2, 0, 0,
-			157, 1, 38, 3, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 31, 0, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 33, 0, 40, 2, 33, 33, 85, 0, 109, 45, 0, 0, 0, 0, 0, 0, 35, 0, 41, 2, 28, 28, 85, 0, 110, 45, 0, 0,
-			0, 0, 0, 0, 45, 0, 42, 2, 28, 28, 85, 0, 78, 45, 0, 0, 0, 0, 0, 0, 55, 0, 43, 2, 30, 30, 95, 0, 114, 45,
-			0, 0, 2, 0, 0, 0, 62, 0, 44, 2, 28, 28, 110, 0, 108, 45, 0, 0, 2, 0, 0, 0, 67, 0, 45, 2, 28, 28, 100, 0,
-			114, 47, 0, 0, 0, 0, 128, 0, 102, 0, 46, 3, 0, 0, 0, 2, 116, 0, 0, 0, 8, 0, 4, 0, 242, 4, 47, 4, 0, 72,
-			0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 216, 4, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 54, 5, 49, 4,
-			0, 81, 0, 2, 110, 0, 0, 0, 16, 0, 4, 0, 223, 1, 50, 8, 0, 0, 0, 4, 82, 0, 0, 0, 128, 0, 0, 0, 120, 0,
-			51, 3, 0, 0, 0, 6, 82, 50, 0, 0, 128, 0, 0, 0, 138, 0, 52, 3, 0, 0, 0, 6, 82, 51, 0, 0, 128, 0, 0, 0,
-			152, 0, 53, 3, 0, 0, 30, 6, 114, 34, 0, 0, 16, 0, 10, 0, 182, 0, 54, 7, 0, 0, 0, 6, 108, 0, 0, 0, 0, 0,
-			0, 0, 208, 0, 55, 3, 0, 0, 0, 7, 108, 47, 0, 0, 0, 0, 0, 0, 248, 0, 56, 3, 0, 0, 0, 7, 106, 0, 0, 0,
-			0, 2, 0, 0, 128, 1, 57, 3, 0, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 93, 1, 58, 3, 0, 0, 0, 7, 108, 47,
-			50, 0, 0, 0, 0, 0, 15, 1, 59, 3, 0, 0, 0, 7, 108, 47, 51, 0, 0, 0, 0, 0, 39, 1, 60, 3, 0, 0, 0, 7,
-			108, 94, 0, 0, 0, 0, 0, 0, 56, 1, 61, 3, 0, 0, 50, 7, 108, 46, 0, 0, 0, 0, 5, 0, 80, 1, 62, 3, 0, 0,
-			0, 7, 76, 47, 0, 0, 0, 0, 0, 0, 15, 1, 63, 3, 0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 84, 1, 64, 3,
-			0, 0, 0, 7, 109, 0, 0, 0, 16, 0, 1, 0, 183, 1, 65, 8, 0, 0, 0, 4, 110, 46, 0, 0, 16, 0, 5, 0, 4, 2,
-			66, 8, 50, 0, 0, 4, 110, 94, 0, 0, 16, 2, 7, 0, 42, 2, 67, 8, 0, 0, 0, 4, 78, 0, 0, 0, 16, 0, 8, 0,
-			82, 2, 68, 8, 0, 0, 0, 8, 42, 42, 0, 0, 0, 0, 132, 0, 121, 2, 69, 3, 0, 0, 0, 3, 114, 46, 0, 0, 0, 0,
-			5, 0, 183, 2, 70, 3, 0, 0, 0, 3, 98, 0, 0, 0, 16, 0, 1, 0, 193, 2, 71, 5, 0, 48, 0, 5, 100, 0, 0, 0,
-			16, 0, 4, 0, 12, 3, 72, 5, 0, 47, 0, 5, 100, 91, 0, 0, 16, 0, 3, 0, 33, 3, 73, 5, 0, 74, 0, 5, 116, 91,
-			0, 0, 8, 0, 3, 0, 7, 5, 74, 4, 0, 73, 0, 2, 100, 90, 0, 0, 48, 0, 6, 0, 60, 3, 75, 5, 0, 76, 0, 5,
-			116, 83, 0, 0, 40, 0, 6, 0, 20, 5, 76, 4, 0, 75, 0, 2, 100, 90, 59, 0, 48, 2, 6, 0, 81, 3, 77, 5, 0, 78,
-			0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 29, 5, 78, 4, 0, 77, 0, 2, 74, 0, 0, 0, 48, 2, 7, 0, 117, 3, 79, 5,
-			0, 80, 0, 5, 99, 0, 0, 0, 8, 2, 7, 0, 41, 5, 80, 4, 0, 79, 0, 2, 103, 0, 0, 0, 16, 0, 8, 0, 150, 3,
-			81, 5, 0, 49, 0, 5, 66, 0, 0, 0, 16, 0, 1, 0, 171, 3, 82, 7, 0, 83, 0, 6, 102, 0, 0, 0, 8, 0, 2, 0,
-			103, 5, 83, 6, 0, 84, 0, 3, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 83, 0, 6, 118, 35, 0, 0, 16, 0,
-			2, 0, 238, 3, 85, 7, 0, 83, 0, 6, 68, 0, 0, 0, 16, 0, 3, 0, 253, 3, 86, 7, 0, 87, 0, 6, 84, 0, 0, 0,
-			8, 0, 3, 0, 112, 5, 87, 6, 0, 86, 0, 3, 122, 0, 0, 0, 48, 0, 4, 0, 16, 4, 88, 7, 0, 89, 0, 6, 115, 0,
-			0, 0, 40, 0, 4, 0, 125, 5, 89, 6, 0, 88, 0, 3, 90, 0, 0, 0, 48, 0, 6, 0, 40, 4, 90, 7, 0, 91, 0, 6,
-			83, 0, 0, 0, 40, 0, 6, 0, 143, 5, 91, 6, 0, 90, 0, 3, 122, 46, 0, 0, 48, 0, 6, 0, 70, 4, 92, 7, 0, 93,
-			0, 6, 115, 46, 0, 0, 40, 0, 6, 0, 156, 5, 93, 6, 0, 92, 0, 3, 122, 59, 0, 0, 48, 2, 7, 0, 102, 4, 94, 7,
-			0, 95, 0, 6, 115, 59, 0, 0, 40, 2, 7, 0, 171, 5, 95, 6, 0, 94, 0, 3, 90, 59, 0, 0, 48, 2, 7, 0, 122, 4,
-			96, 7, 0, 97, 0, 6, 83, 59, 0, 0, 40, 2, 7, 0, 186, 5, 97, 6, 0, 96, 0, 3, 74, 94, 0, 0, 16, 2, 7, 0,
-			142, 4, 98, 7, 0, 99, 0, 6, 67, 0, 0, 0, 8, 2, 7, 0, 221, 5, 99, 6, 0, 0, 0, 3, 81, 0, 0, 0, 16, 0,
-			8, 0, 156, 4, 100, 7, 0, 101, 0, 6, 120, 0, 0, 0, 8, 0, 8, 0, 234, 5, 101, 6, 0, 100, 0, 3, 81, 94, 0, 0,
-			16, 0, 8, 0, 186, 4, 102, 7, 0, 0, 0, 6, 81, 34, 0, 0, 16, 0, 10, 0, 204, 4, 103, 7, 0, 0, 0, 6, 113, 0,
-			0, 0, 8, 0, 10, 0, 87, 5, 104, 4, 0, 0, 0, 2, 108, 35, 0, 0, 8, 0, 4, 0, 201, 5, 105, 6, 0, 0, 0, 3,
-			88, 0, 0, 0, 8, 0, 10, 0, 247, 5, 106, 6, 0, 103, 0, 3, 104, 0, 0, 0, 8, 0, 12, 0, 252, 5, 107, 6, 0, 0,
-			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 0, 0, 99, 111, 110, 115,
+			0, 0, 35, 117, 0, 0, 0, 0, 0, 0, 0, 0, 33, 9, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 128, 0, 71, 0, 34, 3,
+			0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 23, 0, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 25, 0,
+			36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 27, 0, 37, 2, 31, 31, 85, 0, 59, 0, 0, 0, 0, 2, 0, 0,
+			155, 1, 38, 3, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 30, 0, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 32, 0, 40, 2, 33, 33, 85, 0, 109, 45, 0, 0, 0, 0, 0, 0, 34, 0, 41, 2, 28, 28, 85, 4, 110, 45, 0, 0,
+			0, 0, 0, 0, 44, 0, 42, 2, 28, 28, 85, 4, 78, 45, 0, 0, 0, 0, 0, 0, 54, 0, 43, 2, 30, 30, 95, 4, 114, 45,
+			0, 0, 2, 0, 0, 0, 61, 0, 44, 2, 28, 28, 110, 0, 108, 45, 0, 0, 2, 0, 0, 0, 66, 0, 45, 2, 28, 28, 100, 0,
+			114, 47, 0, 0, 0, 0, 128, 0, 101, 0, 46, 3, 0, 0, 0, 2, 116, 0, 0, 0, 8, 0, 4, 0, 245, 4, 47, 4, 0, 72,
+			0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 219, 4, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 57, 5, 49, 4,
+			0, 81, 0, 2, 110, 0, 0, 0, 16, 0, 4, 0, 220, 1, 50, 8, 0, 0, 0, 4, 82, 0, 0, 0, 128, 0, 0, 0, 119, 0,
+			51, 3, 0, 0, 0, 6, 82, 50, 0, 0, 128, 0, 0, 0, 136, 0, 52, 3, 0, 0, 0, 6, 82, 51, 0, 0, 128, 0, 0, 0,
+			150, 0, 53, 3, 0, 0, 30, 6, 114, 34, 0, 0, 16, 0, 10, 0, 180, 0, 54, 7, 0, 0, 0, 6, 108, 0, 0, 0, 0, 0,
+			0, 0, 206, 0, 55, 3, 0, 0, 0, 7, 108, 47, 0, 0, 0, 0, 0, 0, 246, 0, 56, 3, 0, 0, 0, 7, 106, 0, 0, 0,
+			0, 2, 0, 0, 126, 1, 57, 3, 31, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 91, 1, 58, 3, 0, 0, 0, 7, 108, 47,
+			50, 0, 0, 0, 0, 0, 13, 1, 59, 3, 0, 0, 0, 7, 108, 47, 51, 0, 0, 0, 0, 0, 37, 1, 60, 3, 0, 0, 0, 7,
+			108, 94, 0, 0, 0, 0, 0, 0, 54, 1, 61, 3, 0, 0, 50, 7, 108, 46, 0, 0, 0, 0, 5, 0, 78, 1, 62, 3, 0, 0,
+			0, 7, 76, 47, 0, 0, 0, 0, 0, 0, 13, 1, 63, 3, 0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 82, 1, 64, 3,
+			0, 0, 0, 7, 109, 0, 0, 0, 16, 0, 1, 0, 180, 1, 65, 8, 0, 0, 0, 4, 110, 46, 0, 0, 16, 0, 5, 0, 1, 2,
+			66, 8, 50, 0, 0, 4, 110, 94, 0, 0, 16, 2, 7, 0, 39, 2, 67, 8, 0, 0, 0, 4, 78, 0, 0, 0, 16, 0, 8, 0,
+			79, 2, 68, 8, 0, 0, 0, 8, 42, 42, 0, 0, 0, 0, 132, 0, 122, 2, 69, 3, 0, 0, 0, 3, 114, 46, 0, 0, 0, 0,
+			5, 0, 183, 2, 70, 3, 0, 0, 0, 3, 98, 0, 0, 0, 16, 0, 1, 0, 196, 2, 71, 5, 0, 48, 0, 5, 100, 0, 0, 0,
+			16, 0, 4, 0, 15, 3, 72, 5, 0, 47, 0, 5, 100, 91, 0, 0, 16, 0, 3, 0, 36, 3, 73, 5, 0, 74, 0, 5, 116, 91,
+			0, 0, 8, 0, 3, 0, 10, 5, 74, 4, 0, 73, 0, 2, 100, 90, 0, 0, 48, 0, 6, 0, 63, 3, 75, 5, 0, 76, 0, 5,
+			116, 83, 0, 0, 40, 0, 6, 0, 23, 5, 76, 4, 0, 75, 0, 2, 100, 90, 59, 0, 48, 2, 6, 0, 84, 3, 77, 5, 0, 78,
+			0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 32, 5, 78, 4, 0, 77, 0, 2, 74, 0, 0, 0, 48, 2, 7, 0, 120, 3, 79, 5,
+			0, 80, 0, 5, 99, 0, 0, 0, 8, 2, 7, 0, 44, 5, 80, 4, 0, 79, 0, 2, 103, 0, 0, 0, 16, 0, 8, 0, 153, 3,
+			81, 5, 0, 49, 0, 5, 66, 0, 0, 0, 16, 0, 1, 0, 174, 3, 82, 7, 0, 83, 0, 6, 102, 0, 0, 0, 8, 0, 2, 0,
+			106, 5, 83, 6, 0, 84, 0, 3, 118, 0, 0, 0, 16, 0, 2, 0, 204, 3, 84, 7, 0, 83, 0, 6, 118, 35, 0, 0, 16, 0,
+			2, 0, 241, 3, 85, 7, 0, 83, 0, 6, 68, 0, 0, 0, 16, 0, 3, 0, 0, 4, 86, 7, 0, 87, 0, 6, 84, 0, 0, 0,
+			8, 0, 3, 0, 115, 5, 87, 6, 0, 86, 0, 3, 122, 0, 0, 0, 48, 0, 4, 0, 19, 4, 88, 7, 0, 89, 0, 6, 115, 0,
+			0, 0, 40, 0, 4, 0, 128, 5, 89, 6, 0, 88, 0, 3, 90, 0, 0, 0, 48, 0, 6, 0, 43, 4, 90, 7, 0, 91, 0, 6,
+			83, 0, 0, 0, 40, 0, 6, 0, 146, 5, 91, 6, 0, 90, 0, 3, 122, 46, 0, 0, 48, 0, 6, 0, 73, 4, 92, 7, 0, 93,
+			0, 6, 115, 46, 0, 0, 40, 0, 6, 0, 159, 5, 93, 6, 0, 92, 0, 3, 122, 59, 0, 0, 48, 2, 7, 0, 105, 4, 94, 7,
+			0, 95, 0, 6, 115, 59, 0, 0, 40, 2, 7, 0, 174, 5, 95, 6, 0, 94, 0, 3, 90, 59, 0, 0, 48, 2, 7, 0, 125, 4,
+			96, 7, 0, 97, 0, 6, 83, 59, 0, 0, 40, 2, 7, 0, 189, 5, 97, 6, 0, 96, 0, 3, 74, 94, 0, 0, 16, 2, 7, 0,
+			145, 4, 98, 7, 0, 99, 0, 6, 67, 0, 0, 0, 8, 2, 7, 0, 224, 5, 99, 6, 0, 0, 0, 3, 81, 0, 0, 0, 16, 0,
+			8, 0, 159, 4, 100, 7, 0, 101, 0, 6, 120, 0, 0, 0, 8, 0, 8, 0, 237, 5, 101, 6, 0, 100, 0, 3, 81, 94, 0, 0,
+			16, 0, 8, 0, 189, 4, 102, 7, 0, 0, 0, 6, 81, 34, 0, 0, 16, 0, 10, 0, 207, 4, 103, 7, 0, 0, 0, 6, 113, 0,
+			0, 0, 8, 0, 10, 0, 90, 5, 104, 4, 0, 0, 0, 2, 108, 35, 0, 0, 8, 0, 4, 0, 204, 5, 105, 6, 0, 0, 0, 3,
+			88, 0, 0, 0, 8, 0, 10, 0, 250, 5, 106, 6, 0, 103, 0, 3, 104, 0, 0, 0, 8, 0, 12, 0, 255, 5, 107, 6, 0, 0,
+			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 0, 0, 99, 111, 110, 115,
 			111, 110, 97, 110, 116, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 115,
-			0, 0, 40, 0, 4, 0, 18, 6, 108, 4, 0, 109, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 31, 6, 109, 5, 0, 108, 0, 5,
-			112, 45, 0, 0, 8, 0, 1, 0, 52, 6, 110, 4, 0, 71, 0, 2, 112, 104, 0, 0, 8, 0, 1, 0, 71, 6, 111, 4, 0, 71,
-			0, 2, 116, 45, 0, 0, 8, 0, 4, 0, 87, 6, 112, 4, 0, 72, 0, 2, 99, 50, 0, 0, 40, 0, 7, 0, 100, 6, 113, 4,
-			0, 0, 0, 2, 107, 45, 0, 0, 8, 0, 8, 0, 113, 6, 114, 4, 0, 81, 0, 2, 107, 104, 0, 0, 8, 0, 8, 0, 126, 6,
-			115, 4, 0, 81, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 142, 6, 116, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 98, 97, 115, 101, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 151, 6, 35, 2,
-			29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 160, 6, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 164, 6,
-			37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 167, 6, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0,
-			171, 6, 40, 2, 33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0,
-			1, 0, 201, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 4, 7, 49, 4, 0, 81, 0, 2, 100, 0, 0, 0,
-			16, 0, 3, 0, 233, 6, 72, 5, 0, 47, 0, 5, 97, 47, 0, 0, 0, 0, 0, 0, 158, 6, 108, 2, 28, 28, 90, 0, 69, 0,
-			0, 0, 0, 0, 0, 0, 162, 6, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0, 169, 6, 110, 2, 32, 32, 85, 0,
-			85, 0, 0, 0, 0, 0, 0, 0, 173, 6, 111, 2, 33, 33, 80, 0, 121, 0, 0, 0, 0, 0, 0, 0, 175, 6, 112, 2, 31, 31,
-			80, 0, 89, 0, 0, 0, 0, 0, 0, 0, 177, 6, 113, 2, 28, 28, 80, 0, 97, 85, 0, 0, 0, 0, 0, 0, 179, 6, 114, 2,
-			29, 33, 135, 0, 101, 85, 0, 0, 0, 0, 0, 0, 181, 6, 115, 2, 30, 33, 130, 0, 105, 85, 0, 0, 0, 0, 0, 0, 183, 6,
-			116, 2, 31, 33, 120, 0, 97, 73, 0, 0, 0, 0, 0, 0, 185, 6, 117, 2, 29, 31, 125, 0, 101, 73, 0, 0, 0, 0, 0, 0,
-			187, 6, 118, 2, 30, 31, 125, 0, 69, 73, 0, 0, 0, 0, 0, 0, 189, 6, 119, 2, 30, 31, 115, 0, 111, 73, 0, 0, 0, 0,
-			0, 0, 191, 6, 120, 2, 32, 31, 120, 0, 117, 73, 0, 0, 0, 0, 0, 0, 193, 6, 121, 2, 33, 31, 120, 0, 119, 50, 0, 0,
-			0, 0, 0, 0, 195, 6, 122, 3, 0, 0, 0, 7, 116, 115, 0, 0, 40, 0, 4, 0, 18, 6, 123, 4, 0, 0, 0, 2, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 0, 0, 101, 110, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0,
-			0, 0, 127, 7, 13, 2, 28, 28, 70, 0, 116, 35, 0, 0, 16, 0, 4, 0, 29, 7, 25, 5, 0, 0, 0, 5, 97, 0, 0, 0,
-			0, 0, 0, 0, 154, 7, 35, 2, 29, 29, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 181, 7, 37, 2, 31, 31, 70, 0, 114, 45,
-			0, 0, 0, 0, 128, 0, 100, 7, 44, 3, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7,
-			116, 50, 0, 0, 16, 0, 4, 0, 27, 7, 108, 5, 0, 0, 0, 0, 100, 35, 0, 0, 8, 0, 4, 0, 56, 7, 109, 4, 0, 0,
-			0, 0, 122, 35, 0, 0, 40, 0, 4, 0, 61, 7, 110, 6, 0, 0, 0, 0, 103, 45, 0, 0, 16, 0, 8, 0, 79, 7, 111, 5,
-			0, 0, 0, 5, 122, 47, 50, 0, 48, 0, 4, 0, 120, 7, 112, 7, 0, 0, 0, 6, 73, 50, 0, 0, 2, 0, 0, 0, 175, 7,
-			113, 2, 31, 31, 65, 0, 51, 0, 0, 0, 2, 0, 0, 0, 133, 7, 114, 2, 28, 28, 70, 0, 64, 50, 0, 0, 2, 0, 0, 0,
-			138, 7, 115, 2, 28, 28, 60, 0, 64, 53, 0, 0, 2, 0, 0, 0, 142, 7, 116, 2, 28, 28, 70, 0, 85, 0, 0, 0, 0, 0,
-			0, 0, 192, 7, 117, 2, 32, 32, 75, 0, 64, 76, 0, 0, 2, 0, 0, 0, 147, 7, 118, 2, 28, 55, 80, 0, 97, 35, 0, 0,
-			2, 0, 0, 0, 160, 7, 119, 2, 28, 28, 75, 0, 97, 97, 0, 0, 0, 0, 0, 0, 164, 7, 120, 2, 29, 29, 92, 0, 69, 0,
-			0, 0, 0, 0, 0, 0, 169, 7, 121, 2, 30, 30, 70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 172, 7, 122, 2, 31, 31, 65, 0,
-			73, 35, 0, 0, 2, 0, 0, 0, 178, 7, 123, 2, 31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0, 186, 7, 124, 2, 32, 32,
-			70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 189, 7, 125, 2, 29, 28, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 194, 7, 126, 2,
-			29, 29, 115, 0, 65, 64, 0, 0, 0, 0, 0, 0, 197, 7, 127, 2, 29, 29, 115, 0, 51, 58, 0, 0, 0, 0, 0, 0, 203, 7,
-			128, 2, 28, 28, 105, 0, 105, 58, 0, 0, 0, 0, 0, 0, 207, 7, 129, 2, 31, 31, 87, 0, 79, 58, 0, 0, 0, 0, 0, 0,
-			213, 7, 130, 2, 32, 32, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 216, 7, 131, 2, 32, 32, 100, 0, 79, 64, 0, 0, 0, 0,
-			0, 0, 219, 7, 132, 2, 32, 32, 120, 0, 111, 64, 0, 0, 0, 0, 0, 0, 225, 7, 133, 2, 32, 32, 125, 0, 117, 58, 0, 0,
-			0, 0, 0, 0, 231, 7, 134, 2, 33, 33, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 238, 7, 135, 2, 29, 33, 115, 0, 111, 85,
-			0, 0, 0, 0, 0, 0, 240, 7, 136, 2, 28, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 245, 7, 137, 2, 29, 31, 120, 0,
-			101, 73, 0, 0, 0, 0, 0, 0, 249, 7, 138, 2, 30, 31, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0, 251, 7, 139, 2, 32, 31,
-			115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 253, 7, 140, 2, 30, 28, 115, 0, 105, 64, 0, 0, 0, 0, 0, 0, 0, 8, 141, 2,
-			31, 28, 125, 0, 105, 64, 51, 0, 0, 0, 0, 0, 3, 8, 142, 2, 31, 28, 125, 0, 85, 64, 0, 0, 0, 0, 0, 0, 6, 8,
-			143, 2, 33, 28, 100, 0, 97, 73, 64, 0, 0, 0, 0, 0, 12, 8, 144, 2, 29, 28, 140, 0, 97, 73, 51, 0, 0, 0, 0, 0,
-			15, 8, 145, 2, 29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 17, 8, 146, 2, 29, 28, 140, 0, 73, 82, 0, 0, 0, 0,
-			0, 0, 20, 8, 147, 2, 28, 28, 95, 0, 86, 82, 0, 0, 0, 0, 0, 0, 30, 8, 148, 2, 28, 28, 105, 0, 111, 58, 0, 0,
-			0, 0, 0, 0, 40, 8, 149, 2, 32, 32, 110, 0, 65, 126, 0, 0, 0, 0, 0, 0, 42, 8, 150, 2, 29, 29, 130, 0, 79, 126,
-			0, 0, 0, 0, 0, 0, 44, 8, 151, 2, 32, 32, 120, 0, 101, 58, 0, 0, 0, 0, 0, 0, 46, 8, 152, 2, 30, 30, 105, 0,
-			64, 35, 0, 0, 2, 0, 0, 0, 48, 8, 153, 2, 31, 31, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 33, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 59, 8, 35, 2, 29, 29, 70, 0, 105, 0,
-			0, 0, 0, 0, 0, 0, 71, 8, 37, 2, 31, 31, 75, 0, 78, 0, 0, 0, 16, 0, 8, 0, 50, 8, 68, 8, 0, 0, 0, 8,
-			73, 50, 0, 0, 2, 0, 0, 0, 68, 8, 113, 2, 31, 31, 70, 0, 51, 0, 0, 0, 2, 0, 0, 0, 54, 8, 114, 2, 28, 28,
-			70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 82, 8, 117, 2, 32, 32, 85, 0, 97, 35, 0, 0, 2, 0, 0, 0, 84, 8, 119, 2,
-			28, 28, 70, 0, 97, 97, 0, 0, 0, 0, 0, 0, 98, 8, 120, 2, 29, 29, 75, 0, 69, 0, 0, 0, 0, 0, 0, 0, 62, 8,
-			121, 2, 29, 29, 75, 0, 73, 0, 0, 0, 0, 0, 0, 0, 65, 8, 122, 2, 31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0,
-			74, 8, 124, 2, 32, 32, 75, 0, 86, 0, 0, 0, 0, 0, 0, 0, 77, 8, 125, 2, 32, 32, 70, 0, 65, 58, 0, 0, 0, 0,
-			0, 0, 89, 8, 126, 2, 29, 28, 120, 0, 65, 64, 0, 0, 0, 0, 0, 0, 92, 8, 127, 2, 29, 28, 125, 0, 51, 58, 0, 0,
-			0, 0, 0, 0, 102, 8, 128, 2, 28, 28, 115, 0, 105, 58, 0, 0, 0, 0, 0, 0, 106, 8, 129, 2, 31, 31, 87, 0, 79, 58,
-			0, 0, 0, 0, 0, 0, 112, 8, 130, 2, 32, 32, 120, 0, 79, 0, 0, 0, 0, 0, 0, 0, 128, 8, 131, 2, 32, 32, 75, 0,
-			79, 64, 0, 0, 0, 0, 0, 0, 116, 8, 132, 2, 32, 28, 120, 0, 111, 64, 0, 0, 0, 0, 0, 0, 122, 8, 133, 2, 32, 28,
-			120, 0, 117, 58, 0, 0, 0, 0, 0, 0, 131, 8, 134, 2, 33, 33, 100, 0, 97, 85, 0, 0, 0, 0, 0, 0, 133, 8, 135, 2,
-			30, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 138, 8, 136, 2, 32, 32, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 143, 8,
-			137, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 145, 8, 138, 2, 31, 31, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0,
-			150, 8, 139, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 152, 8, 140, 2, 30, 28, 110, 0, 105, 64, 0, 0, 0, 0,
-			0, 0, 155, 8, 141, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 158, 8, 143, 2, 33, 28, 100, 0, 97, 73, 64, 0,
-			0, 0, 0, 0, 161, 8, 144, 2, 29, 28, 140, 0, 97, 73, 51, 0, 0, 0, 0, 0, 164, 8, 145, 2, 29, 28, 140, 0, 97, 85,
-			64, 0, 0, 0, 0, 0, 166, 8, 146, 2, 29, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			41, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 117, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 174, 8, 13, 2, 28, 28, 65, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 189, 8, 35, 2, 30, 28, 105, 0, 105, 0, 0, 0, 2, 0, 0, 0, 213, 8, 37, 2, 31, 31, 85, 0, 114, 47,
-			0, 0, 0, 0, 0, 0, 0, 0, 46, 3, 0, 0, 0, 2, 116, 0, 0, 0, 8, 0, 4, 0, 105, 9, 47, 4, 0, 72, 0, 2,
-			116, 50, 0, 0, 8, 0, 4, 0, 242, 4, 108, 4, 0, 0, 0, 2, 73, 50, 0, 0, 2, 0, 0, 0, 208, 8, 113, 2, 31, 31,
-			80, 0, 51, 0, 0, 0, 2, 0, 0, 0, 169, 8, 114, 2, 28, 28, 105, 0, 64, 50, 0, 0, 2, 0, 0, 0, 180, 8, 115, 2,
-			28, 28, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0, 227, 8, 117, 2, 32, 32, 72, 0, 64, 76, 0, 0, 2, 0, 0, 0, 184, 8,
-			118, 2, 28, 55, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0, 197, 8, 119, 2, 28, 28, 75, 0, 97, 97, 0, 0, 0, 0, 0, 0,
-			189, 8, 120, 2, 30, 28, 105, 0, 69, 0, 0, 0, 0, 0, 0, 0, 201, 8, 121, 2, 30, 30, 97, 0, 73, 0, 0, 0, 0, 0,
-			0, 0, 204, 8, 122, 2, 31, 31, 80, 0, 73, 35, 0, 0, 2, 0, 0, 0, 211, 8, 123, 2, 31, 31, 80, 0, 48, 0, 0, 0,
-			0, 0, 0, 0, 216, 8, 124, 2, 29, 29, 100, 0, 86, 0, 0, 0, 0, 0, 0, 0, 224, 8, 125, 2, 29, 28, 85, 0, 65, 58,
-			0, 0, 0, 0, 0, 0, 229, 8, 126, 2, 29, 29, 100, 0, 65, 64, 0, 0, 0, 0, 0, 0, 234, 8, 127, 2, 29, 29, 90, 0,
-			51, 58, 0, 0, 0, 0, 0, 0, 247, 8, 128, 2, 28, 28, 120, 0, 105, 58, 0, 0, 0, 0, 0, 0, 250, 8, 129, 2, 31, 31,
-			85, 0, 79, 58, 0, 0, 0, 0, 0, 0, 253, 8, 130, 2, 32, 32, 105, 0, 79, 0, 0, 0, 0, 0, 0, 0, 27, 9, 131, 2,
-			32, 32, 100, 0, 79, 64, 0, 0, 0, 0, 0, 0, 3, 9, 132, 2, 32, 28, 125, 0, 111, 64, 0, 0, 0, 0, 0, 0, 15, 9,
-			133, 2, 32, 28, 125, 0, 117, 58, 0, 0, 0, 0, 0, 0, 30, 9, 134, 2, 33, 33, 95, 0, 97, 85, 0, 0, 0, 0, 0, 0,
-			32, 9, 135, 2, 29, 32, 117, 0, 111, 85, 0, 0, 0, 0, 0, 0, 34, 9, 136, 2, 28, 33, 115, 0, 97, 73, 0, 0, 0, 0,
-			0, 0, 36, 9, 137, 2, 29, 31, 125, 0, 101, 73, 0, 0, 0, 0, 0, 0, 41, 9, 138, 2, 30, 31, 115, 0, 79, 73, 0, 0,
-			0, 0, 0, 0, 43, 9, 139, 2, 32, 31, 142, 0, 101, 64, 0, 0, 0, 0, 0, 0, 45, 9, 140, 2, 30, 28, 140, 0, 105, 64,
-			0, 0, 0, 0, 0, 0, 55, 9, 141, 2, 31, 28, 125, 0, 105, 64, 51, 0, 0, 0, 0, 0, 57, 9, 142, 2, 31, 28, 140, 0,
-			85, 64, 0, 0, 0, 0, 0, 0, 67, 9, 143, 2, 28, 28, 125, 0, 97, 73, 64, 0, 0, 0, 0, 0, 77, 9, 144, 2, 29, 28,
-			150, 0, 97, 73, 51, 0, 0, 0, 0, 0, 84, 9, 145, 2, 29, 28, 150, 0, 97, 85, 64, 0, 0, 0, 0, 0, 91, 9, 146, 2,
-			29, 28, 150, 0, 64, 47, 0, 0, 2, 0, 0, 0, 178, 8, 154, 2, 28, 28, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 40, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 115, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 137, 9, 13, 2, 28, 28,
-			70, 0, 114, 0, 0, 0, 128, 0, 128, 0, 74, 10, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 157, 9, 35, 2,
-			29, 29, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 188, 9, 37, 2, 31, 30, 75, 0, 114, 47, 0, 0, 0, 0, 0, 0, 72, 10,
-			46, 3, 0, 0, 0, 2, 73, 50, 0, 0, 2, 0, 0, 0, 185, 9, 113, 2, 28, 28, 55, 0, 51, 0, 0, 0, 2, 0, 0, 0,
-			140, 9, 114, 2, 28, 28, 70, 0, 64, 50, 0, 0, 2, 0, 0, 0, 148, 9, 115, 2, 28, 28, 60, 0, 64, 53, 0, 0, 2, 0,
-			0, 0, 152, 9, 116, 2, 28, 28, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 199, 9, 117, 2, 33, 33, 70, 0, 64, 76, 0, 0,
-			2, 0, 0, 0, 65, 10, 118, 2, 28, 55, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0, 164, 9, 119, 2, 28, 28, 70, 0, 97, 97,
-			0, 0, 0, 0, 0, 0, 169, 9, 120, 2, 29, 29, 110, 0, 69, 0, 0, 0, 0, 0, 0, 0, 174, 9, 121, 2, 30, 30, 85, 0,
-			73, 0, 0, 0, 0, 0, 0, 0, 177, 9, 122, 2, 28, 28, 55, 0, 48, 0, 0, 0, 0, 0, 0, 0, 193, 9, 124, 2, 32, 32,
-			100, 0, 86, 0, 0, 0, 0, 0, 0, 0, 196, 9, 125, 2, 29, 28, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 203, 9, 126, 2,
-			29, 29, 110, 0, 65, 64, 0, 0, 0, 0, 0, 0, 213, 9, 127, 2, 29, 28, 125, 0, 51, 58, 0, 0, 0, 0, 0, 0, 219, 9,
-			128, 2, 30, 28, 105, 0, 105, 58, 0, 0, 0, 0, 0, 0, 225, 9, 129, 2, 31, 31, 65, 0, 79, 58, 0, 0, 0, 0, 0, 0,
-			234, 9, 130, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 250, 9, 131, 2, 32, 32, 75, 0, 79, 64, 0, 0, 0, 0,
-			0, 0, 240, 9, 132, 2, 32, 28, 115, 0, 111, 64, 0, 0, 0, 0, 0, 0, 245, 9, 133, 2, 32, 28, 115, 0, 117, 58, 0, 0,
-			0, 0, 0, 0, 253, 9, 134, 2, 33, 33, 80, 0, 97, 85, 0, 0, 0, 0, 0, 0, 9, 10, 135, 2, 29, 33, 100, 0, 111, 85,
-			0, 0, 0, 0, 0, 0, 14, 10, 136, 2, 32, 33, 95, 0, 97, 73, 0, 0, 0, 0, 0, 0, 19, 10, 137, 2, 29, 31, 95, 0,
-			101, 73, 0, 0, 0, 0, 0, 0, 29, 10, 138, 2, 30, 31, 95, 0, 79, 73, 0, 0, 0, 0, 0, 0, 34, 10, 139, 2, 32, 31,
-			105, 0, 101, 64, 0, 0, 0, 0, 0, 0, 36, 10, 140, 2, 30, 28, 110, 0, 105, 64, 51, 0, 0, 0, 0, 0, 41, 10, 142, 2,
-			31, 28, 110, 0, 85, 64, 0, 0, 0, 0, 0, 0, 46, 10, 143, 2, 33, 28, 90, 0, 97, 73, 64, 0, 0, 0, 0, 0, 60, 10,
-			144, 2, 29, 28, 135, 0, 97, 73, 51, 0, 0, 0, 0, 0, 63, 10, 145, 2, 29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0,
-			57, 10, 146, 2, 29, 28, 135, 0, 97, 47, 0, 0, 0, 0, 0, 0, 161, 9, 154, 2, 29, 29, 80, 0, 97, 73, 50, 0, 0, 0,
-			0, 0, 27, 10, 155, 2, 29, 31, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0,
-			0, 0, 0, 0, 101, 110, 45, 114, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 79, 10, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0,
-			99, 10, 35, 2, 29, 29, 87, 0, 105, 0, 0, 0, 0, 0, 0, 0, 113, 10, 37, 2, 31, 31, 70, 0, 73, 50, 0, 0, 2, 0,
-			0, 0, 110, 10, 113, 2, 31, 31, 65, 0, 51, 0, 0, 0, 2, 0, 0, 0, 85, 10, 114, 2, 28, 28, 70, 0, 64, 50, 0, 0,
-			2, 0, 0, 0, 90, 10, 115, 2, 28, 28, 60, 0, 64, 53, 0, 0, 2, 0, 0, 0, 94, 10, 116, 2, 28, 28, 70, 0, 85, 0,
-			0, 0, 0, 0, 0, 0, 122, 10, 117, 2, 32, 32, 75, 0, 97, 35, 0, 0, 2, 0, 0, 0, 124, 10, 119, 2, 28, 28, 75, 0,
-			97, 97, 0, 0, 0, 0, 0, 0, 138, 10, 120, 2, 29, 29, 100, 0, 69, 0, 0, 0, 0, 0, 0, 0, 104, 10, 121, 2, 30, 30,
-			70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 107, 10, 122, 2, 31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0, 116, 10, 124, 2,
-			32, 32, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 119, 10, 125, 2, 29, 28, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 129, 10,
-			126, 2, 29, 29, 120, 0, 65, 64, 0, 0, 0, 0, 0, 0, 132, 10, 127, 2, 29, 29, 120, 0, 51, 58, 0, 0, 0, 0, 0, 0,
-			143, 10, 128, 2, 28, 28, 105, 0, 105, 58, 0, 0, 0, 0, 32, 0, 147, 10, 129, 2, 31, 31, 87, 0, 79, 58, 0, 0, 0, 0,
-			0, 0, 153, 10, 130, 2, 32, 32, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 163, 10, 131, 2, 32, 32, 75, 0, 79, 64, 0, 0,
-			0, 0, 0, 0, 157, 10, 132, 2, 32, 28, 115, 0, 117, 58, 0, 0, 0, 0, 0, 0, 166, 10, 134, 2, 33, 33, 95, 0, 97, 85,
-			0, 0, 0, 0, 0, 0, 168, 10, 135, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 170, 10, 136, 2, 28, 33, 110, 0,
-			97, 73, 0, 0, 0, 0, 0, 0, 175, 10, 137, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 180, 10, 138, 2, 31, 31,
-			110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 182, 10, 139, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 184, 10, 140, 2,
-			30, 28, 110, 0, 105, 64, 0, 0, 0, 0, 0, 0, 187, 10, 141, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 190, 10,
-			143, 2, 33, 28, 115, 0, 97, 73, 64, 0, 0, 0, 0, 0, 196, 10, 144, 2, 29, 28, 135, 0, 97, 73, 51, 0, 0, 0, 0, 0,
-			199, 10, 145, 2, 29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 201, 10, 146, 2, 29, 28, 135, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 119, 109, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 208, 10,
-			35, 2, 29, 29, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 221, 10, 37, 2, 31, 31, 110, 0, 78, 0, 0, 0, 16, 0, 8, 0,
-			204, 10, 68, 8, 0, 0, 0, 8, 73, 50, 0, 0, 2, 0, 0, 0, 214, 10, 113, 2, 31, 31, 70, 0, 85, 0, 0, 0, 0, 0,
-			0, 0, 232, 10, 117, 2, 33, 33, 75, 0, 97, 35, 0, 0, 2, 0, 0, 0, 235, 10, 119, 2, 28, 28, 70, 0, 97, 97, 0, 0,
-			0, 0, 0, 0, 248, 10, 120, 2, 29, 29, 80, 0, 69, 0, 0, 0, 0, 0, 0, 0, 211, 10, 121, 2, 30, 30, 75, 0, 73, 0,
-			0, 0, 0, 0, 0, 0, 214, 10, 122, 2, 31, 31, 70, 0, 48, 0, 0, 0, 0, 0, 0, 0, 224, 10, 124, 2, 32, 32, 70, 0,
-			86, 0, 0, 0, 0, 0, 0, 0, 227, 10, 125, 2, 32, 32, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 239, 10, 126, 2, 29, 29,
-			120, 0, 65, 64, 0, 0, 0, 0, 0, 0, 242, 10, 127, 2, 29, 29, 120, 0, 51, 58, 0, 0, 0, 0, 0, 0, 252, 10, 128, 2,
-			28, 28, 125, 0, 105, 58, 0, 0, 0, 0, 0, 0, 0, 11, 129, 2, 30, 31, 110, 0, 79, 58, 0, 0, 0, 0, 0, 0, 5, 11,
-			130, 2, 32, 32, 120, 0, 79, 0, 0, 0, 0, 0, 0, 0, 15, 11, 131, 2, 32, 32, 75, 0, 79, 64, 0, 0, 0, 0, 0, 0,
-			9, 11, 132, 2, 32, 28, 120, 0, 117, 58, 0, 0, 0, 0, 0, 0, 18, 11, 134, 2, 33, 33, 100, 0, 97, 85, 0, 0, 0, 0,
-			0, 0, 23, 11, 135, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 28, 11, 136, 2, 28, 33, 110, 0, 97, 73, 0, 0,
-			0, 0, 0, 0, 33, 11, 137, 2, 32, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 38, 11, 138, 2, 28, 31, 120, 0, 79, 73,
-			0, 0, 0, 0, 0, 0, 43, 11, 139, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 48, 11, 140, 2, 28, 28, 120, 0,
-			105, 64, 0, 0, 0, 0, 0, 0, 54, 11, 141, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 57, 11, 143, 2, 33, 28,
-			100, 0, 97, 73, 64, 0, 0, 0, 0, 0, 60, 11, 144, 2, 29, 28, 140, 0, 97, 73, 51, 0, 0, 0, 0, 0, 63, 11, 145, 2,
-			29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 65, 11, 146, 2, 29, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 30, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 119, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 68, 11, 13, 2, 28, 28,
-			70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 75, 11, 35, 2, 29, 29, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 86, 11, 37, 2,
-			31, 31, 75, 0, 108, 0, 0, 0, 0, 0, 0, 0, 208, 0, 55, 3, 0, 0, 0, 7, 73, 50, 0, 0, 2, 0, 0, 0, 83, 11,
-			113, 2, 31, 31, 70, 0, 64, 50, 0, 0, 2, 0, 0, 0, 71, 11, 115, 2, 28, 28, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			93, 11, 117, 2, 32, 32, 75, 0, 97, 35, 0, 0, 2, 0, 0, 0, 95, 11, 119, 2, 28, 28, 70, 0, 97, 97, 0, 0, 0, 0,
-			0, 0, 102, 11, 120, 2, 29, 29, 105, 0, 69, 0, 0, 0, 0, 0, 0, 0, 77, 11, 121, 2, 30, 30, 85, 0, 73, 0, 0, 0,
-			0, 0, 0, 0, 80, 11, 122, 2, 31, 31, 70, 0, 48, 0, 0, 0, 0, 0, 0, 0, 89, 11, 124, 2, 29, 29, 70, 0, 86, 0,
-			0, 0, 0, 0, 0, 0, 91, 11, 125, 2, 32, 32, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 97, 11, 126, 2, 29, 28, 120, 0,
-			65, 64, 0, 0, 0, 0, 0, 0, 99, 11, 127, 2, 29, 28, 130, 0, 51, 58, 0, 0, 0, 0, 0, 0, 104, 11, 128, 2, 32, 32,
-			120, 0, 105, 58, 0, 0, 0, 0, 0, 0, 107, 11, 129, 2, 31, 31, 95, 0, 79, 58, 0, 0, 0, 0, 0, 0, 110, 11, 130, 2,
-			32, 32, 120, 0, 79, 0, 0, 0, 0, 0, 0, 0, 118, 11, 131, 2, 32, 32, 75, 0, 79, 64, 0, 0, 0, 0, 0, 0, 112, 11,
-			132, 2, 32, 28, 120, 0, 111, 64, 0, 0, 0, 0, 0, 0, 115, 11, 133, 2, 32, 28, 120, 0, 117, 58, 0, 0, 0, 0, 0, 0,
-			120, 11, 134, 2, 33, 33, 95, 0, 97, 85, 0, 0, 0, 0, 0, 0, 122, 11, 135, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0,
-			0, 0, 124, 11, 136, 2, 32, 32, 115, 0, 97, 73, 0, 0, 0, 0, 0, 0, 126, 11, 137, 2, 29, 31, 115, 0, 101, 73, 0, 0,
-			0, 0, 0, 0, 128, 11, 138, 2, 31, 31, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0, 130, 11, 139, 2, 32, 31, 115, 0, 101, 64,
-			0, 0, 0, 0, 0, 0, 132, 11, 140, 2, 30, 28, 110, 0, 105, 64, 0, 0, 0, 0, 0, 0, 135, 11, 141, 2, 31, 29, 120, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 0, 0, 97, 102, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 70, 0, 64, 0, 0, 0, 2, 0, 0, 0, 138, 11, 13, 2, 28, 28, 70, 0, 114, 0,
-			0, 0, 128, 0, 128, 0, 255, 11, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 145, 11, 35, 2, 29, 29, 70, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 188, 11, 37, 2, 31, 31, 50, 0, 117, 0, 0, 0, 0, 0, 0, 0, 164, 11, 40, 2, 33, 33,
-			55, 0, 114, 47, 0, 0, 0, 0, 0, 0, 27, 12, 46, 3, 0, 0, 0, 7, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3,
-			0, 0, 0, 7, 99, 0, 0, 0, 8, 2, 7, 0, 36, 12, 80, 4, 0, 81, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 149, 11,
-			108, 2, 30, 30, 70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 151, 11, 109, 2, 28, 28, 70, 0, 79, 0, 0, 0, 0, 0, 0, 0,
-			160, 11, 110, 2, 32, 32, 70, 0, 87, 0, 0, 0, 0, 0, 0, 0, 162, 11, 111, 2, 28, 28, 70, 0, 38, 0, 0, 0, 0, 0,
-			0, 0, 166, 11, 112, 2, 30, 30, 75, 0, 38, 58, 0, 0, 0, 0, 0, 0, 171, 11, 113, 2, 30, 30, 140, 0, 64, 76, 0, 0,
-			2, 0, 0, 0, 176, 11, 114, 2, 28, 55, 80, 0, 65, 58, 0, 0, 0, 0, 0, 0, 181, 11, 115, 2, 29, 29, 140, 0, 101, 64,
-			0, 0, 0, 0, 0, 0, 183, 11, 116, 2, 31, 28, 115, 0, 111, 64, 0, 0, 0, 0, 0, 0, 191, 11, 117, 2, 33, 28, 125, 0,
-			121, 0, 0, 0, 0, 0, 0, 0, 196, 11, 118, 2, 31, 31, 90, 0, 105, 117, 0, 0, 0, 0, 0, 0, 198, 11, 119, 2, 31, 33,
-			110, 0, 64, 85, 0, 0, 0, 0, 0, 0, 200, 11, 120, 2, 28, 33, 85, 0, 97, 73, 0, 0, 0, 0, 0, 0, 202, 11, 121, 2,
-			29, 31, 110, 0, 65, 73, 0, 0, 0, 0, 0, 0, 205, 11, 122, 2, 29, 31, 155, 0, 101, 73, 0, 0, 0, 0, 0, 0, 208, 11,
-			123, 2, 30, 31, 85, 0, 79, 73, 0, 0, 0, 0, 0, 0, 214, 11, 124, 2, 32, 31, 115, 0, 111, 73, 0, 0, 0, 0, 0, 0,
-			217, 11, 125, 2, 32, 31, 145, 0, 117, 73, 0, 0, 0, 0, 0, 0, 223, 11, 126, 2, 33, 31, 120, 0, 89, 121, 0, 0, 0, 0,
-			0, 0, 226, 11, 127, 2, 28, 31, 110, 0, 89, 64, 0, 0, 0, 0, 0, 0, 229, 11, 128, 2, 31, 28, 105, 0, 97, 85, 0, 0,
-			0, 0, 0, 0, 231, 11, 129, 2, 29, 33, 115, 0, 101, 58, 0, 0, 0, 0, 0, 0, 233, 11, 130, 2, 30, 30, 105, 0, 79, 58,
-			0, 0, 0, 0, 0, 0, 235, 11, 131, 2, 32, 32, 140, 0, 51, 58, 0, 0, 0, 0, 0, 0, 237, 11, 132, 2, 28, 28, 115, 0,
-			65, 126, 0, 0, 0, 0, 0, 0, 239, 11, 133, 2, 29, 29, 120, 0, 101, 126, 0, 0, 0, 0, 0, 0, 241, 11, 134, 2, 30, 30,
-			120, 0, 111, 126, 0, 0, 0, 0, 0, 0, 243, 11, 135, 2, 32, 32, 120, 0, 120, 50, 0, 0, 8, 0, 8, 0, 245, 11, 136, 6,
-			0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 0, 0, 99, 121,
+			0, 0, 40, 0, 4, 0, 21, 6, 108, 4, 0, 109, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 34, 6, 109, 5, 0, 108, 0, 5,
+			112, 45, 0, 0, 8, 0, 1, 0, 55, 6, 110, 4, 0, 71, 0, 2, 112, 104, 0, 0, 8, 0, 1, 0, 74, 6, 111, 4, 0, 71,
+			0, 2, 116, 45, 0, 0, 8, 0, 4, 0, 90, 6, 112, 4, 0, 72, 0, 2, 99, 50, 0, 0, 40, 0, 7, 0, 103, 6, 113, 4,
+			0, 0, 0, 2, 107, 45, 0, 0, 8, 0, 8, 0, 116, 6, 114, 4, 0, 81, 0, 2, 107, 104, 0, 0, 8, 0, 8, 0, 129, 6,
+			115, 4, 0, 81, 0, 2, 107, 35, 0, 0, 8, 0, 8, 0, 145, 6, 116, 4, 0, 81, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0,
+			167, 6, 117, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0,
+			0, 0, 98, 97, 115, 101, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 176, 6, 35, 2, 29, 29, 95, 0, 101, 0, 0, 0, 0, 0, 0, 0, 185, 6,
+			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 189, 6, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			192, 6, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 196, 6, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0,
+			3, 0, 245, 6, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 226, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0,
+			8, 0, 8, 0, 29, 7, 49, 4, 0, 81, 0, 2, 100, 0, 0, 0, 16, 0, 3, 0, 2, 7, 72, 5, 0, 47, 0, 5, 97, 47,
+			0, 0, 0, 0, 0, 0, 183, 6, 108, 2, 28, 28, 95, 0, 69, 0, 0, 0, 0, 0, 0, 0, 187, 6, 109, 2, 30, 30, 90, 0,
+			79, 0, 0, 0, 0, 0, 0, 0, 194, 6, 110, 2, 32, 32, 90, 0, 85, 0, 0, 0, 0, 0, 0, 0, 198, 6, 111, 2, 33, 33,
+			90, 0, 121, 0, 0, 0, 0, 0, 0, 0, 200, 6, 112, 2, 31, 31, 90, 0, 89, 0, 0, 0, 0, 0, 0, 0, 202, 6, 113, 2,
+			28, 28, 90, 0, 97, 85, 0, 0, 0, 0, 0, 0, 204, 6, 114, 2, 29, 33, 135, 0, 101, 85, 0, 0, 0, 0, 0, 0, 206, 6,
+			115, 2, 30, 33, 130, 0, 105, 85, 0, 0, 0, 0, 0, 0, 208, 6, 116, 2, 31, 33, 120, 0, 97, 73, 0, 0, 0, 0, 0, 0,
+			210, 6, 117, 2, 29, 31, 125, 0, 101, 73, 0, 0, 0, 0, 0, 0, 212, 6, 118, 2, 30, 31, 125, 0, 69, 73, 0, 0, 0, 0,
+			0, 0, 214, 6, 119, 2, 30, 31, 115, 0, 111, 73, 0, 0, 0, 0, 0, 0, 216, 6, 120, 2, 32, 31, 120, 0, 117, 73, 0, 0,
+			0, 0, 0, 0, 218, 6, 121, 2, 33, 31, 120, 0, 119, 50, 0, 0, 0, 0, 0, 0, 220, 6, 122, 3, 0, 0, 0, 7, 116, 115,
+			0, 0, 40, 0, 4, 0, 21, 6, 123, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			56, 1, 0, 0, 0, 0, 0, 0, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 152, 7, 13, 2, 28, 28, 70, 0, 116, 35, 0, 0,
+			16, 0, 4, 0, 54, 7, 25, 5, 0, 0, 0, 5, 97, 0, 0, 0, 0, 0, 0, 0, 179, 7, 35, 2, 29, 29, 80, 0, 105, 0,
+			0, 0, 0, 0, 0, 0, 220, 7, 37, 2, 31, 31, 70, 0, 114, 45, 0, 0, 0, 0, 128, 0, 125, 7, 44, 3, 0, 0, 0, 0,
+			108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 116, 50, 0, 0, 16, 0, 4, 0, 52, 7, 108, 5, 0, 0,
+			0, 0, 100, 35, 0, 0, 8, 0, 4, 0, 81, 7, 109, 4, 0, 0, 0, 0, 122, 35, 0, 0, 40, 0, 4, 0, 86, 7, 110, 6,
+			0, 0, 0, 0, 103, 45, 0, 0, 16, 0, 8, 0, 104, 7, 111, 5, 0, 0, 0, 5, 122, 47, 50, 0, 48, 0, 4, 0, 145, 7,
+			112, 7, 0, 0, 0, 6, 73, 50, 0, 0, 2, 0, 0, 0, 210, 7, 113, 2, 31, 31, 65, 0, 51, 0, 0, 0, 2, 0, 0, 0,
+			158, 7, 114, 2, 28, 28, 70, 0, 64, 50, 0, 0, 2, 0, 0, 0, 163, 7, 115, 2, 28, 28, 60, 0, 64, 53, 0, 0, 2, 0,
+			0, 0, 167, 7, 116, 2, 28, 28, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 242, 7, 117, 2, 32, 32, 75, 0, 64, 76, 0, 0,
+			2, 0, 0, 0, 172, 7, 118, 2, 28, 55, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0, 185, 7, 119, 2, 28, 28, 75, 0, 97, 97,
+			0, 0, 0, 0, 0, 0, 189, 7, 120, 2, 29, 29, 92, 0, 65, 58, 0, 0, 0, 0, 0, 0, 244, 7, 121, 2, 29, 29, 115, 0,
+			69, 0, 0, 0, 0, 0, 0, 0, 196, 7, 122, 2, 30, 30, 70, 0, 69, 35, 0, 0, 0, 0, 0, 0, 199, 7, 123, 2, 30, 30,
+			90, 0, 73, 0, 0, 0, 0, 0, 0, 0, 207, 7, 124, 2, 31, 31, 65, 0, 73, 35, 0, 0, 2, 0, 0, 0, 215, 7, 125, 2,
+			31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0, 225, 7, 126, 2, 32, 32, 70, 0, 48, 35, 0, 0, 0, 0, 0, 0, 228, 7,
+			127, 2, 32, 32, 90, 0, 48, 50, 0, 0, 0, 0, 0, 0, 237, 7, 128, 2, 32, 32, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0,
+			239, 7, 129, 2, 29, 28, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0, 247, 7, 130, 2, 29, 29, 115, 0, 51, 58, 0, 0, 0, 0,
+			0, 0, 253, 7, 131, 2, 28, 28, 105, 0, 105, 58, 0, 0, 0, 0, 0, 0, 1, 8, 132, 2, 31, 31, 87, 0, 79, 58, 0, 0,
+			0, 0, 0, 0, 7, 8, 133, 2, 32, 32, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 10, 8, 134, 2, 32, 32, 100, 0, 79, 64,
+			0, 0, 0, 0, 0, 0, 13, 8, 135, 2, 32, 32, 120, 0, 111, 64, 0, 0, 0, 0, 0, 0, 19, 8, 136, 2, 32, 32, 125, 0,
+			117, 58, 0, 0, 0, 0, 0, 0, 27, 8, 137, 2, 33, 33, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 34, 8, 138, 2, 29, 33,
+			115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 36, 8, 139, 2, 28, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 41, 8, 140, 2,
+			29, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 45, 8, 141, 2, 30, 31, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0, 47, 8,
+			142, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 49, 8, 143, 2, 30, 28, 115, 0, 105, 64, 0, 0, 0, 0, 0, 0,
+			52, 8, 144, 2, 31, 28, 125, 0, 105, 64, 51, 0, 0, 0, 0, 0, 55, 8, 145, 2, 31, 28, 125, 0, 85, 64, 0, 0, 0, 0,
+			0, 0, 60, 8, 146, 2, 33, 28, 100, 0, 97, 73, 64, 0, 0, 0, 0, 0, 66, 8, 147, 2, 29, 28, 140, 0, 97, 73, 51, 0,
+			0, 0, 0, 0, 69, 8, 148, 2, 29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 71, 8, 149, 2, 29, 28, 140, 0, 73, 82,
+			0, 0, 0, 0, 0, 0, 74, 8, 150, 2, 28, 28, 95, 0, 86, 82, 0, 0, 0, 0, 0, 0, 83, 8, 151, 2, 28, 28, 105, 0,
+			111, 58, 0, 0, 0, 0, 0, 0, 92, 8, 152, 2, 32, 32, 110, 0, 65, 126, 0, 0, 0, 0, 0, 0, 94, 8, 153, 2, 29, 29,
+			130, 0, 79, 126, 0, 0, 0, 0, 0, 0, 96, 8, 154, 2, 32, 32, 120, 0, 101, 58, 0, 0, 0, 0, 0, 0, 98, 8, 155, 2,
+			30, 30, 105, 0, 64, 35, 0, 0, 2, 0, 0, 0, 100, 8, 156, 2, 31, 31, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 33, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 111, 8, 35, 2, 29, 29,
+			70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 123, 8, 37, 2, 31, 31, 75, 0, 78, 0, 0, 0, 16, 0, 8, 0, 102, 8, 68, 8,
+			0, 0, 0, 8, 73, 50, 0, 0, 2, 0, 0, 0, 120, 8, 113, 2, 31, 31, 70, 0, 51, 0, 0, 0, 2, 0, 0, 0, 106, 8,
+			114, 2, 28, 28, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 133, 8, 117, 2, 32, 32, 85, 0, 97, 35, 0, 0, 2, 0, 0, 0,
+			135, 8, 119, 2, 28, 28, 70, 0, 97, 97, 0, 0, 0, 0, 0, 0, 149, 8, 120, 2, 29, 29, 75, 0, 65, 58, 0, 0, 0, 0,
+			0, 0, 140, 8, 121, 2, 29, 28, 120, 0, 69, 0, 0, 0, 0, 0, 0, 0, 114, 8, 122, 2, 29, 29, 75, 0, 73, 0, 0, 0,
+			0, 0, 0, 0, 117, 8, 124, 2, 31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0, 125, 8, 126, 2, 32, 32, 75, 0, 86, 0,
+			0, 0, 0, 0, 0, 0, 128, 8, 129, 2, 32, 32, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0, 143, 8, 130, 2, 29, 28, 125, 0,
+			51, 58, 0, 0, 0, 0, 0, 0, 153, 8, 131, 2, 28, 28, 115, 0, 105, 58, 0, 0, 0, 0, 0, 0, 157, 8, 132, 2, 31, 31,
+			87, 0, 79, 58, 0, 0, 0, 0, 0, 0, 163, 8, 133, 2, 32, 32, 120, 0, 79, 0, 0, 0, 0, 0, 0, 0, 179, 8, 134, 2,
+			32, 32, 75, 0, 79, 64, 0, 0, 0, 0, 0, 0, 167, 8, 135, 2, 32, 28, 120, 0, 111, 64, 0, 0, 0, 0, 0, 0, 173, 8,
+			136, 2, 32, 28, 120, 0, 117, 58, 0, 0, 0, 0, 0, 0, 182, 8, 137, 2, 33, 33, 100, 0, 97, 85, 0, 0, 0, 0, 0, 0,
+			184, 8, 138, 2, 30, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 189, 8, 139, 2, 32, 32, 110, 0, 97, 73, 0, 0, 0, 0,
+			0, 0, 194, 8, 140, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 196, 8, 141, 2, 31, 31, 105, 0, 79, 73, 0, 0,
+			0, 0, 0, 0, 201, 8, 142, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 203, 8, 143, 2, 30, 28, 110, 0, 105, 64,
+			0, 0, 0, 0, 0, 0, 206, 8, 144, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 209, 8, 146, 2, 33, 28, 100, 0,
+			97, 73, 64, 0, 0, 0, 0, 0, 212, 8, 147, 2, 29, 28, 140, 0, 97, 73, 51, 0, 0, 0, 0, 0, 215, 8, 148, 2, 29, 28,
+			140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 217, 8, 149, 2, 29, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 41, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 117, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 225, 8, 13, 2, 28, 28, 65, 0,
+			63, 0, 0, 0, 72, 0, 12, 0, 193, 9, 19, 4, 0, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 0, 236, 8, 35, 2, 30, 28,
+			105, 0, 105, 0, 0, 0, 2, 0, 0, 0, 7, 9, 37, 2, 31, 31, 85, 0, 114, 47, 0, 0, 0, 0, 0, 0, 0, 0, 46, 3,
+			0, 0, 0, 2, 116, 0, 0, 0, 8, 0, 4, 0, 156, 9, 47, 4, 0, 72, 0, 2, 116, 50, 0, 0, 8, 0, 4, 0, 245, 4,
+			108, 4, 0, 0, 0, 2, 73, 50, 0, 0, 2, 0, 0, 0, 255, 8, 113, 2, 31, 31, 80, 0, 51, 0, 0, 0, 2, 0, 0, 0,
+			220, 8, 114, 2, 28, 28, 105, 0, 64, 50, 0, 0, 2, 0, 0, 0, 232, 8, 115, 2, 28, 28, 60, 0, 85, 0, 0, 0, 0, 0,
+			0, 0, 23, 9, 117, 2, 32, 32, 72, 0, 97, 35, 0, 0, 2, 0, 0, 0, 244, 8, 119, 2, 28, 28, 75, 0, 97, 97, 0, 0,
+			0, 0, 0, 0, 236, 8, 120, 2, 30, 28, 105, 0, 65, 58, 0, 0, 0, 0, 0, 0, 25, 9, 121, 2, 29, 29, 100, 0, 69, 0,
+			0, 0, 0, 0, 0, 0, 248, 8, 122, 2, 30, 30, 95, 0, 73, 0, 0, 0, 0, 0, 0, 0, 251, 8, 124, 2, 31, 31, 80, 0,
+			73, 35, 0, 0, 2, 0, 0, 0, 2, 9, 125, 2, 31, 31, 80, 0, 48, 0, 0, 0, 0, 0, 0, 0, 10, 9, 126, 2, 29, 29,
+			100, 0, 48, 50, 0, 0, 0, 0, 0, 0, 18, 9, 128, 2, 32, 32, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 20, 9, 129, 2,
+			29, 28, 85, 0, 65, 64, 0, 0, 0, 0, 0, 0, 30, 9, 130, 2, 29, 29, 90, 0, 51, 58, 0, 0, 0, 0, 0, 0, 43, 9,
+			131, 2, 28, 28, 120, 0, 105, 58, 0, 0, 0, 0, 0, 0, 47, 9, 132, 2, 31, 31, 85, 0, 79, 58, 0, 0, 0, 0, 0, 0,
+			50, 9, 133, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 79, 9, 134, 2, 32, 32, 100, 0, 79, 64, 0, 0, 0, 0,
+			0, 0, 56, 9, 135, 2, 32, 28, 125, 0, 111, 64, 0, 0, 0, 0, 0, 0, 68, 9, 136, 2, 32, 28, 125, 0, 117, 58, 0, 0,
+			0, 0, 0, 0, 82, 9, 137, 2, 33, 33, 95, 0, 97, 85, 0, 0, 0, 0, 0, 0, 84, 9, 138, 2, 29, 32, 117, 0, 111, 85,
+			0, 0, 0, 0, 0, 0, 86, 9, 139, 2, 28, 33, 115, 0, 97, 73, 0, 0, 0, 0, 0, 0, 88, 9, 140, 2, 29, 31, 120, 0,
+			101, 73, 0, 0, 0, 0, 0, 0, 93, 9, 141, 2, 30, 31, 110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 95, 9, 142, 2, 32, 31,
+			135, 0, 101, 64, 0, 0, 0, 0, 0, 0, 97, 9, 143, 2, 30, 28, 140, 0, 105, 64, 0, 0, 0, 0, 0, 0, 107, 9, 144, 2,
+			31, 28, 125, 0, 105, 64, 51, 0, 0, 0, 0, 0, 109, 9, 145, 2, 31, 28, 140, 0, 85, 64, 0, 0, 0, 0, 0, 0, 119, 9,
+			146, 2, 28, 28, 125, 0, 97, 73, 64, 0, 0, 0, 0, 0, 129, 9, 147, 2, 29, 28, 150, 0, 97, 73, 51, 0, 0, 0, 0, 0,
+			136, 9, 148, 2, 29, 28, 155, 0, 97, 85, 64, 0, 0, 0, 0, 0, 143, 9, 149, 2, 29, 28, 150, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 115, 99, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 203, 9,
+			13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0, 128, 0, 152, 10, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0,
+			223, 9, 35, 2, 29, 29, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 10, 37, 2, 31, 30, 75, 0, 114, 47, 0, 0, 0, 0,
+			0, 0, 150, 10, 46, 3, 0, 0, 0, 2, 73, 50, 0, 0, 2, 0, 0, 0, 251, 9, 113, 2, 28, 28, 55, 0, 51, 0, 0, 0,
+			2, 0, 0, 0, 206, 9, 114, 2, 28, 28, 70, 0, 64, 50, 0, 0, 2, 0, 0, 0, 214, 9, 115, 2, 28, 28, 60, 0, 64, 53,
+			0, 0, 2, 0, 0, 0, 218, 9, 116, 2, 28, 28, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 13, 10, 117, 2, 33, 33, 70, 0,
+			64, 76, 0, 0, 2, 0, 0, 0, 143, 10, 118, 2, 28, 55, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0, 230, 9, 119, 2, 28, 28,
+			70, 0, 97, 97, 0, 0, 0, 0, 0, 0, 235, 9, 120, 2, 29, 29, 110, 0, 65, 58, 0, 0, 0, 0, 0, 0, 17, 10, 121, 2,
+			29, 29, 110, 0, 69, 0, 0, 0, 0, 0, 0, 0, 240, 9, 122, 2, 30, 30, 85, 0, 73, 0, 0, 0, 0, 0, 0, 0, 243, 9,
+			124, 2, 28, 28, 55, 0, 73, 35, 0, 0, 0, 0, 0, 0, 254, 9, 125, 2, 28, 28, 90, 0, 48, 0, 0, 0, 0, 0, 0, 0,
+			5, 10, 126, 2, 32, 32, 100, 0, 48, 50, 0, 0, 0, 0, 0, 0, 8, 10, 128, 2, 32, 32, 70, 0, 86, 0, 0, 0, 0, 0,
+			0, 0, 10, 10, 129, 2, 29, 28, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0, 27, 10, 130, 2, 29, 28, 125, 0, 51, 58, 0, 0,
+			0, 0, 0, 0, 35, 10, 131, 2, 30, 28, 115, 0, 105, 58, 0, 0, 0, 0, 0, 0, 40, 10, 132, 2, 31, 31, 65, 0, 79, 58,
+			0, 0, 0, 0, 0, 0, 49, 10, 133, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 69, 10, 134, 2, 32, 32, 75, 0,
+			79, 64, 0, 0, 0, 0, 0, 0, 55, 10, 135, 2, 32, 28, 115, 0, 111, 64, 0, 0, 0, 0, 0, 0, 62, 10, 136, 2, 32, 28,
+			115, 0, 117, 58, 0, 0, 0, 0, 0, 0, 72, 10, 137, 2, 33, 33, 80, 0, 97, 85, 0, 0, 0, 0, 0, 0, 84, 10, 138, 2,
+			29, 33, 100, 0, 111, 85, 0, 0, 0, 0, 0, 0, 89, 10, 139, 2, 32, 33, 95, 0, 97, 73, 0, 0, 0, 0, 0, 0, 94, 10,
+			140, 2, 29, 31, 95, 0, 101, 73, 0, 0, 0, 0, 0, 0, 104, 10, 141, 2, 30, 31, 95, 0, 79, 73, 0, 0, 0, 0, 0, 0,
+			109, 10, 142, 2, 32, 31, 105, 0, 101, 64, 0, 0, 0, 0, 0, 0, 111, 10, 143, 2, 30, 28, 110, 0, 105, 64, 51, 0, 0, 0,
+			0, 0, 118, 10, 145, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 125, 10, 146, 2, 33, 28, 90, 0, 97, 73, 64, 0,
+			0, 0, 0, 0, 138, 10, 147, 2, 29, 28, 135, 0, 97, 73, 51, 0, 0, 0, 0, 0, 141, 10, 148, 2, 29, 28, 140, 0, 97, 85,
+			64, 0, 0, 0, 0, 0, 135, 10, 149, 2, 29, 28, 135, 0, 97, 47, 0, 0, 0, 0, 0, 0, 227, 9, 157, 2, 29, 29, 80, 0,
+			97, 73, 50, 0, 0, 0, 0, 0, 102, 10, 158, 2, 29, 31, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 114, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 159, 10, 13, 2, 28, 28, 70, 0, 97, 0,
+			0, 0, 0, 0, 0, 0, 179, 10, 35, 2, 29, 29, 87, 0, 105, 0, 0, 0, 0, 0, 0, 0, 193, 10, 37, 2, 31, 31, 70, 0,
+			73, 50, 0, 0, 2, 0, 0, 0, 190, 10, 113, 2, 31, 31, 65, 0, 51, 0, 0, 0, 2, 0, 0, 0, 165, 10, 114, 2, 28, 28,
+			70, 0, 64, 50, 0, 0, 2, 0, 0, 0, 170, 10, 115, 2, 28, 28, 60, 0, 64, 53, 0, 0, 2, 0, 0, 0, 174, 10, 116, 2,
+			28, 28, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 202, 10, 117, 2, 32, 32, 75, 0, 97, 35, 0, 0, 2, 0, 0, 0, 204, 10,
+			119, 2, 28, 28, 75, 0, 97, 97, 0, 0, 0, 0, 0, 0, 218, 10, 120, 2, 29, 29, 100, 0, 65, 58, 0, 0, 0, 0, 0, 0,
+			209, 10, 121, 2, 29, 29, 120, 0, 69, 0, 0, 0, 0, 0, 0, 0, 184, 10, 122, 2, 30, 30, 70, 0, 73, 0, 0, 0, 0, 0,
+			0, 0, 187, 10, 124, 2, 31, 31, 65, 0, 48, 0, 0, 0, 0, 0, 0, 0, 196, 10, 126, 2, 32, 32, 70, 0, 86, 0, 0, 0,
+			0, 0, 0, 0, 199, 10, 129, 2, 29, 28, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0, 212, 10, 130, 2, 29, 29, 120, 0, 51, 58,
+			0, 0, 0, 0, 0, 0, 223, 10, 131, 2, 28, 28, 105, 0, 105, 58, 0, 0, 0, 0, 32, 0, 227, 10, 132, 2, 31, 31, 87, 0,
+			79, 58, 0, 0, 0, 0, 0, 0, 233, 10, 133, 2, 32, 32, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 243, 10, 134, 2, 32, 32,
+			75, 0, 79, 64, 0, 0, 0, 0, 0, 0, 237, 10, 135, 2, 32, 28, 115, 0, 117, 58, 0, 0, 0, 0, 0, 0, 246, 10, 137, 2,
+			33, 33, 95, 0, 97, 85, 0, 0, 0, 0, 0, 0, 248, 10, 138, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 250, 10,
+			139, 2, 28, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 255, 10, 140, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0,
+			4, 11, 141, 2, 31, 31, 110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 6, 11, 142, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0,
+			0, 0, 8, 11, 143, 2, 30, 28, 110, 0, 105, 64, 0, 0, 0, 0, 0, 0, 11, 11, 144, 2, 31, 28, 120, 0, 85, 64, 0, 0,
+			0, 0, 0, 0, 14, 11, 146, 2, 33, 28, 115, 0, 97, 73, 64, 0, 0, 0, 0, 0, 20, 11, 147, 2, 29, 28, 135, 0, 97, 73,
+			51, 0, 0, 0, 0, 0, 23, 11, 148, 2, 29, 28, 140, 0, 97, 85, 64, 0, 0, 0, 0, 0, 25, 11, 149, 2, 29, 28, 135, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 101, 110, 45, 119, 109, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0,
+			0, 0, 0, 0, 32, 11, 35, 2, 29, 29, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 45, 11, 37, 2, 31, 31, 110, 0, 78, 0,
+			0, 0, 16, 0, 8, 0, 28, 11, 68, 8, 0, 0, 0, 8, 73, 50, 0, 0, 2, 0, 0, 0, 38, 11, 113, 2, 31, 31, 70, 0,
+			85, 0, 0, 0, 0, 0, 0, 0, 58, 11, 117, 2, 33, 33, 75, 0, 97, 35, 0, 0, 2, 0, 0, 0, 61, 11, 119, 2, 28, 28,
+			70, 0, 97, 97, 0, 0, 0, 0, 0, 0, 74, 11, 120, 2, 29, 29, 80, 0, 65, 58, 0, 0, 0, 0, 0, 0, 65, 11, 121, 2,
+			29, 29, 120, 0, 69, 0, 0, 0, 0, 0, 0, 0, 35, 11, 122, 2, 30, 30, 75, 0, 73, 0, 0, 0, 0, 0, 0, 0, 38, 11,
+			124, 2, 31, 31, 70, 0, 48, 0, 0, 0, 0, 0, 0, 0, 48, 11, 126, 2, 32, 32, 70, 0, 48, 50, 0, 0, 0, 0, 0, 0,
+			51, 11, 128, 2, 32, 32, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 53, 11, 129, 2, 32, 32, 70, 0, 65, 64, 0, 0, 0, 0,
+			0, 0, 68, 11, 130, 2, 29, 29, 120, 0, 51, 58, 0, 0, 0, 0, 0, 0, 78, 11, 131, 2, 28, 28, 125, 0, 105, 58, 0, 0,
+			0, 0, 0, 0, 82, 11, 132, 2, 30, 31, 110, 0, 79, 58, 0, 0, 0, 0, 0, 0, 87, 11, 133, 2, 32, 32, 120, 0, 79, 0,
+			0, 0, 0, 0, 0, 0, 97, 11, 134, 2, 32, 32, 75, 0, 79, 64, 0, 0, 0, 0, 0, 0, 91, 11, 135, 2, 32, 28, 120, 0,
+			117, 58, 0, 0, 0, 0, 0, 0, 100, 11, 137, 2, 33, 33, 100, 0, 97, 85, 0, 0, 0, 0, 0, 0, 105, 11, 138, 2, 29, 33,
+			115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 110, 11, 139, 2, 28, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 115, 11, 140, 2,
+			32, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 120, 11, 141, 2, 28, 31, 120, 0, 79, 73, 0, 0, 0, 0, 0, 0, 125, 11,
+			142, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 130, 11, 143, 2, 28, 28, 120, 0, 105, 64, 0, 0, 0, 0, 0, 0,
+			136, 11, 144, 2, 31, 28, 120, 0, 85, 64, 0, 0, 0, 0, 0, 0, 139, 11, 146, 2, 33, 28, 100, 0, 97, 73, 64, 0, 0, 0,
+			0, 0, 142, 11, 147, 2, 29, 28, 140, 0, 97, 73, 51, 0, 0, 0, 0, 0, 145, 11, 148, 2, 29, 28, 140, 0, 97, 85, 64, 0,
+			0, 0, 0, 0, 147, 11, 149, 2, 29, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 4,
+			0, 0, 0, 0, 0, 0, 101, 110, 45, 119, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 150, 11, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0, 0, 0,
+			0, 0, 157, 11, 35, 2, 29, 29, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 168, 11, 37, 2, 31, 31, 75, 0, 108, 0, 0, 0,
+			0, 0, 0, 0, 206, 0, 55, 3, 0, 0, 0, 7, 73, 50, 0, 0, 2, 0, 0, 0, 165, 11, 113, 2, 31, 31, 70, 0, 64, 50,
+			0, 0, 2, 0, 0, 0, 153, 11, 115, 2, 28, 28, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0, 175, 11, 117, 2, 32, 32, 75, 0,
+			97, 35, 0, 0, 2, 0, 0, 0, 177, 11, 119, 2, 28, 28, 70, 0, 97, 97, 0, 0, 0, 0, 0, 0, 184, 11, 120, 2, 29, 29,
+			105, 0, 65, 58, 0, 0, 0, 0, 0, 0, 179, 11, 121, 2, 29, 28, 120, 0, 69, 0, 0, 0, 0, 0, 0, 0, 159, 11, 122, 2,
+			30, 30, 85, 0, 73, 0, 0, 0, 0, 0, 0, 0, 162, 11, 124, 2, 31, 31, 70, 0, 48, 0, 0, 0, 0, 0, 0, 0, 171, 11,
+			126, 2, 29, 29, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 173, 11, 129, 2, 32, 32, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0,
+			181, 11, 130, 2, 29, 28, 130, 0, 51, 58, 0, 0, 0, 0, 0, 0, 186, 11, 131, 2, 32, 32, 120, 0, 105, 58, 0, 0, 0, 0,
+			0, 0, 189, 11, 132, 2, 31, 31, 95, 0, 79, 58, 0, 0, 0, 0, 0, 0, 192, 11, 133, 2, 32, 32, 120, 0, 79, 0, 0, 0,
+			0, 0, 0, 0, 200, 11, 134, 2, 32, 32, 75, 0, 79, 64, 0, 0, 0, 0, 0, 0, 194, 11, 135, 2, 32, 28, 120, 0, 111, 64,
+			0, 0, 0, 0, 0, 0, 197, 11, 136, 2, 32, 28, 120, 0, 117, 58, 0, 0, 0, 0, 0, 0, 202, 11, 137, 2, 33, 33, 95, 0,
+			97, 85, 0, 0, 0, 0, 0, 0, 204, 11, 138, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 206, 11, 139, 2, 32, 32,
+			115, 0, 97, 73, 0, 0, 0, 0, 0, 0, 208, 11, 140, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 210, 11, 141, 2,
+			31, 31, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0, 212, 11, 142, 2, 32, 31, 115, 0, 101, 64, 0, 0, 0, 0, 0, 0, 214, 11,
+			143, 2, 30, 28, 110, 0, 105, 64, 0, 0, 0, 0, 0, 0, 217, 11, 144, 2, 31, 29, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 0, 0, 97, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9,
+			0, 0, 70, 0, 64, 0, 0, 0, 2, 0, 0, 0, 220, 11, 13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0, 128, 0, 81, 12,
+			34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 227, 11, 35, 2, 29, 29, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+			14, 12, 37, 2, 31, 31, 50, 0, 117, 0, 0, 0, 0, 0, 0, 0, 246, 11, 40, 2, 33, 33, 55, 0, 114, 47, 0, 0, 0, 0,
+			0, 0, 109, 12, 46, 3, 0, 0, 0, 7, 108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 99, 0, 0, 0,
+			8, 2, 7, 0, 118, 12, 80, 4, 0, 81, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 231, 11, 108, 2, 30, 30, 70, 0, 73, 0,
+			0, 0, 0, 0, 0, 0, 233, 11, 109, 2, 28, 28, 70, 0, 79, 0, 0, 0, 0, 0, 0, 0, 242, 11, 110, 2, 32, 32, 70, 0,
+			87, 0, 0, 0, 0, 0, 0, 0, 244, 11, 111, 2, 28, 28, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 248, 11, 112, 2, 30, 30,
+			75, 0, 38, 58, 0, 0, 0, 0, 0, 0, 253, 11, 113, 2, 30, 30, 140, 0, 64, 76, 0, 0, 2, 0, 0, 0, 2, 12, 114, 2,
+			28, 55, 80, 0, 65, 58, 0, 0, 0, 0, 0, 0, 7, 12, 115, 2, 29, 29, 140, 0, 101, 64, 0, 0, 0, 0, 0, 0, 9, 12,
+			116, 2, 31, 28, 115, 0, 111, 64, 0, 0, 0, 0, 0, 0, 17, 12, 117, 2, 33, 28, 125, 0, 121, 0, 0, 0, 0, 0, 0, 0,
+			22, 12, 118, 2, 31, 31, 90, 0, 105, 117, 0, 0, 0, 0, 0, 0, 24, 12, 119, 2, 31, 33, 110, 0, 64, 85, 0, 0, 0, 0,
+			0, 0, 26, 12, 120, 2, 28, 33, 85, 0, 97, 73, 0, 0, 0, 0, 0, 0, 28, 12, 121, 2, 29, 31, 110, 0, 65, 73, 0, 0,
+			0, 0, 0, 0, 31, 12, 122, 2, 29, 31, 155, 0, 101, 73, 0, 0, 0, 0, 0, 0, 34, 12, 123, 2, 30, 31, 85, 0, 79, 73,
+			0, 0, 0, 0, 0, 0, 40, 12, 124, 2, 32, 31, 115, 0, 111, 73, 0, 0, 0, 0, 0, 0, 43, 12, 125, 2, 32, 31, 145, 0,
+			117, 73, 0, 0, 0, 0, 0, 0, 49, 12, 126, 2, 33, 31, 120, 0, 89, 121, 0, 0, 0, 0, 0, 0, 52, 12, 127, 2, 28, 31,
+			110, 0, 89, 64, 0, 0, 0, 0, 0, 0, 55, 12, 128, 2, 31, 28, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 57, 12, 129, 2,
+			29, 33, 115, 0, 101, 58, 0, 0, 0, 0, 0, 0, 59, 12, 130, 2, 30, 30, 105, 0, 79, 58, 0, 0, 0, 0, 0, 0, 61, 12,
+			131, 2, 32, 32, 140, 0, 51, 58, 0, 0, 0, 0, 0, 0, 63, 12, 132, 2, 28, 28, 115, 0, 65, 126, 0, 0, 0, 0, 0, 0,
+			65, 12, 133, 2, 29, 29, 120, 0, 101, 126, 0, 0, 0, 0, 0, 0, 67, 12, 134, 2, 30, 30, 120, 0, 111, 126, 0, 0, 0, 0,
+			0, 0, 69, 12, 135, 2, 32, 32, 120, 0, 120, 50, 0, 0, 8, 0, 8, 0, 71, 12, 136, 6, 0, 0, 0, 3, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 0, 0, 99, 121, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 128, 0, 0, 0,
+			209, 12, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 128, 12, 35, 2, 29, 29, 75, 0, 103, 0, 0, 0, 16, 0,
+			8, 0, 221, 12, 81, 5, 0, 49, 0, 5, 69, 0, 0, 0, 0, 0, 0, 0, 130, 12, 108, 2, 30, 30, 75, 0, 73, 0, 0, 0,
+			0, 0, 0, 0, 132, 12, 109, 2, 31, 31, 75, 0, 89, 0, 0, 0, 0, 0, 0, 0, 136, 12, 110, 2, 31, 31, 75, 0, 79, 0,
+			0, 0, 0, 0, 0, 0, 138, 12, 111, 2, 32, 32, 75, 0, 85, 0, 0, 0, 0, 0, 0, 0, 140, 12, 112, 2, 33, 33, 75, 0,
+			86, 0, 0, 0, 0, 0, 0, 0, 142, 12, 113, 2, 28, 28, 75, 0, 105, 58, 0, 0, 0, 0, 0, 0, 144, 12, 114, 2, 31, 31,
+			90, 0, 121, 58, 0, 0, 0, 0, 0, 0, 147, 12, 115, 2, 31, 31, 90, 0, 117, 58, 0, 0, 0, 0, 0, 0, 153, 12, 116, 2,
+			33, 33, 95, 0, 101, 58, 0, 0, 0, 0, 0, 0, 156, 12, 117, 2, 30, 30, 105, 0, 111, 58, 0, 0, 0, 0, 0, 0, 159, 12,
+			118, 2, 32, 32, 105, 0, 65, 58, 0, 0, 0, 0, 0, 0, 162, 12, 119, 2, 29, 29, 115, 0, 65, 89, 0, 0, 0, 0, 0, 0,
+			165, 12, 120, 2, 29, 31, 125, 0, 97, 73, 0, 0, 0, 0, 0, 0, 170, 12, 121, 2, 29, 31, 105, 0, 97, 89, 0, 0, 0, 0,
+			0, 0, 172, 12, 122, 2, 29, 31, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 177, 12, 123, 2, 29, 33, 105, 0, 64, 73, 0, 0,
+			0, 0, 0, 0, 179, 12, 124, 2, 28, 31, 105, 0, 64, 89, 0, 0, 0, 0, 0, 0, 181, 12, 125, 2, 28, 31, 105, 0, 101, 85,
+			0, 0, 0, 0, 0, 0, 186, 12, 126, 2, 30, 33, 105, 0, 73, 117, 0, 0, 0, 0, 0, 0, 188, 12, 127, 2, 31, 33, 105, 0,
+			89, 117, 0, 0, 0, 0, 0, 0, 190, 12, 128, 2, 31, 33, 105, 0, 79, 73, 0, 0, 0, 0, 0, 0, 195, 12, 129, 2, 32, 31,
+			105, 0, 79, 89, 0, 0, 0, 0, 0, 0, 197, 12, 130, 2, 32, 31, 105, 0, 117, 73, 0, 0, 0, 0, 0, 0, 202, 12, 131, 2,
+			33, 31, 105, 0, 117, 89, 0, 0, 0, 0, 0, 0, 204, 12, 132, 2, 33, 31, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 0, 0, 103, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 242, 12, 13, 2, 28, 28,
+			55, 0, 97, 0, 0, 0, 0, 0, 0, 0, 10, 13, 35, 2, 29, 29, 82, 0, 105, 0, 0, 0, 2, 0, 0, 0, 24, 13, 37, 2,
+			31, 31, 22, 0, 59, 0, 0, 0, 0, 2, 0, 0, 77, 13, 38, 3, 0, 0, 0, 0, 105, 58, 0, 0, 0, 0, 0, 0, 57, 13,
+			108, 2, 31, 31, 115, 0, 73, 0, 0, 0, 0, 0, 0, 0, 22, 13, 109, 2, 31, 31, 65, 0, 101, 58, 0, 0, 0, 0, 0, 0,
+			55, 13, 110, 2, 30, 30, 115, 0, 64, 47, 0, 0, 0, 0, 0, 0, 8, 13, 111, 2, 28, 28, 65, 0, 97, 35, 0, 0, 0, 0,
+			0, 0, 12, 13, 112, 2, 28, 28, 65, 0, 69, 0, 0, 0, 0, 0, 0, 0, 17, 13, 113, 2, 30, 30, 77, 0, 69, 35, 0, 0,
+			0, 0, 0, 0, 19, 13, 114, 2, 28, 28, 65, 0, 79, 0, 0, 0, 0, 0, 0, 0, 29, 13, 115, 2, 29, 28, 77, 0, 79, 35,
+			0, 0, 0, 0, 0, 0, 31, 13, 116, 2, 28, 28, 65, 0, 85, 0, 0, 0, 0, 0, 0, 0, 34, 13, 117, 2, 33, 33, 77, 0,
+			85, 35, 0, 0, 0, 0, 0, 0, 36, 13, 118, 2, 28, 28, 65, 0, 117, 49, 0, 0, 0, 0, 0, 0, 39, 13, 119, 2, 33, 33,
+			27, 0, 48, 0, 0, 0, 0, 0, 0, 0, 44, 13, 120, 2, 29, 29, 97, 0, 48, 35, 0, 0, 0, 0, 0, 0, 48, 13, 121, 2,
+			28, 28, 65, 0, 111, 58, 0, 0, 0, 0, 0, 0, 51, 13, 122, 2, 32, 32, 105, 0, 65, 58, 0, 0, 0, 0, 0, 0, 53, 13,
+			123, 2, 29, 29, 110, 0, 117, 58, 0, 0, 0, 0, 0, 0, 59, 13, 124, 2, 33, 33, 115, 0, 64, 85, 0, 0, 0, 0, 0, 0,
+			61, 13, 125, 2, 28, 33, 130, 0, 105, 64, 0, 0, 0, 0, 0, 0, 63, 13, 126, 2, 31, 28, 130, 0, 117, 64, 0, 0, 0, 0,
+			0, 0, 65, 13, 127, 2, 33, 28, 130, 0, 97, 73, 0, 0, 0, 0, 0, 0, 67, 13, 128, 2, 29, 31, 137, 0, 97, 73, 35, 0,
+			0, 0, 0, 0, 69, 13, 129, 2, 28, 28, 65, 0, 97, 85, 0, 0, 0, 0, 0, 0, 72, 13, 130, 2, 29, 33, 150, 0, 97, 85,
+			35, 0, 0, 0, 0, 0, 74, 13, 131, 2, 28, 28, 65, 0, 101, 73, 0, 0, 0, 0, 0, 0, 45, 8, 132, 2, 30, 31, 105, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 48, 236, 3, 0, 100, 101, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+			2, 0, 0, 0, 100, 13, 13, 2, 28, 28, 60, 0, 114, 0, 0, 0, 16, 0, 132, 0, 248, 13, 34, 5, 0, 0, 0, 6, 97, 0,
+			0, 0, 0, 0, 0, 0, 112, 13, 35, 2, 29, 29, 55, 0, 108, 47, 0, 0, 0, 0, 0, 0, 202, 13, 56, 3, 0, 0, 0, 7,
+			106, 0, 0, 0, 0, 2, 0, 0, 219, 13, 57, 3, 0, 0, 0, 7, 98, 0, 0, 0, 48, 0, 4, 0, 24, 14, 71, 7, 0, 48,
+			0, 0, 100, 0, 0, 0, 16, 0, 4, 0, 29, 14, 72, 5, 0, 47, 0, 0, 103, 0, 0, 0, 16, 0, 8, 0, 34, 14, 81, 5,
+			0, 49, 0, 0, 51, 0, 0, 0, 2, 0, 0, 16, 108, 13, 108, 2, 28, 28, 80, 0, 69, 0, 0, 0, 0, 0, 0, 0, 116, 13,
+			109, 2, 30, 30, 60, 0, 69, 50, 0, 0, 0, 0, 0, 0, 120, 13, 110, 2, 30, 30, 60, 0, 73, 0, 0, 0, 0, 0, 0, 0,
+			125, 13, 111, 2, 31, 31, 60, 0, 73, 58, 0, 0, 0, 0, 0, 0, 130, 13, 112, 2, 31, 31, 95, 0, 79, 0, 0, 0, 0, 0,
+			0, 0, 132, 13, 113, 2, 32, 32, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0, 136, 13, 114, 2, 33, 33, 60, 0, 85, 82, 0, 0,
+			0, 0, 0, 16, 15, 14, 115, 2, 33, 28, 90, 0, 65, 58, 0, 0, 0, 0, 0, 0, 143, 13, 116, 2, 29, 29, 125, 0, 65, 0,
+			0, 0, 0, 0, 0, 0, 145, 13, 117, 2, 29, 29, 125, 0, 105, 58, 0, 0, 0, 0, 0, 0, 148, 13, 118, 2, 31, 31, 90, 0,
+			105, 50, 0, 0, 0, 0, 0, 0, 153, 13, 119, 2, 31, 31, 90, 0, 117, 58, 0, 0, 0, 0, 0, 0, 159, 13, 120, 2, 33, 33,
+			95, 0, 97, 85, 0, 0, 0, 0, 0, 0, 161, 13, 121, 2, 29, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 163, 13, 122, 2,
+			29, 31, 105, 0, 69, 73, 0, 0, 0, 0, 0, 0, 165, 13, 123, 2, 30, 31, 105, 0, 79, 89, 0, 0, 0, 0, 0, 0, 167, 13,
+			124, 2, 32, 31, 110, 0, 69, 58, 0, 0, 0, 0, 0, 0, 169, 13, 125, 2, 30, 30, 100, 0, 101, 58, 0, 0, 0, 0, 0, 0,
+			171, 13, 126, 2, 30, 30, 100, 0, 111, 58, 0, 0, 0, 0, 0, 0, 173, 13, 127, 2, 32, 32, 105, 0, 121, 58, 0, 0, 0, 0,
+			0, 0, 175, 13, 128, 2, 33, 33, 100, 0, 121, 0, 0, 0, 0, 0, 0, 0, 177, 13, 129, 2, 33, 33, 55, 0, 89, 58, 0, 0,
+			0, 0, 0, 0, 183, 13, 130, 2, 28, 28, 90, 0, 87, 0, 0, 0, 0, 0, 0, 0, 185, 13, 131, 2, 28, 28, 75, 0, 116, 115,
+			0, 0, 40, 0, 4, 0, 21, 6, 132, 4, 0, 0, 0, 2, 112, 70, 0, 0, 8, 0, 1, 0, 189, 13, 133, 4, 0, 0, 0, 2,
+			103, 35, 0, 0, 8, 2, 7, 0, 197, 13, 134, 6, 0, 0, 0, 3, 105, 82, 0, 0, 0, 0, 0, 16, 10, 14, 135, 2, 31, 28,
+			120, 0, 111, 85, 0, 0, 0, 0, 0, 0, 86, 9, 136, 2, 28, 33, 115, 0, 65, 126, 0, 0, 0, 0, 0, 0, 20, 14, 137, 2,
+			29, 29, 130, 0, 108, 50, 0, 0, 0, 0, 0, 0, 22, 14, 138, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 101, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 39, 14, 35, 2, 29, 29,
+			90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 41, 14, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 43, 14, 37, 2,
+			31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 46, 14, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 51, 14,
+			40, 2, 33, 33, 85, 0, 97, 85, 0, 0, 0, 0, 0, 0, 53, 14, 108, 2, 29, 33, 125, 0, 101, 85, 0, 0, 0, 0, 0, 0,
+			55, 14, 109, 2, 30, 33, 125, 0, 97, 73, 0, 0, 0, 0, 0, 0, 57, 14, 110, 2, 29, 31, 125, 0, 101, 73, 0, 0, 0, 0,
+			0, 0, 59, 14, 111, 2, 30, 31, 125, 0, 111, 73, 0, 0, 0, 0, 0, 0, 61, 14, 112, 2, 32, 31, 125, 0, 117, 73, 0, 0,
+			0, 0, 0, 0, 63, 14, 113, 2, 33, 31, 125, 0, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6, 114, 4, 0, 0, 0, 2, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 15, 0, 0, 0, 0, 0, 0, 106, 98, 111, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0,
+			0, 0, 65, 14, 36, 2, 30, 30, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0,
+			0, 0, 0, 0, 110, 99, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 150, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			67, 14, 36, 2, 30, 30, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0,
+			0, 0, 102, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 80, 0, 114, 0, 0, 0, 128, 0, 0, 0, 119, 0,
+			34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 80, 14, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			76, 14, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 69, 14, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0,
+			0, 0, 84, 14, 39, 2, 32, 32, 77, 0, 117, 0, 0, 0, 0, 0, 0, 0, 88, 14, 40, 2, 33, 33, 70, 0, 116, 0, 0, 0,
+			8, 0, 3, 0, 10, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 226, 6, 48, 4, 0, 71, 0, 2, 107, 0,
+			0, 0, 8, 0, 8, 0, 29, 7, 49, 4, 0, 81, 0, 2, 82, 50, 0, 0, 128, 0, 0, 0, 132, 14, 52, 3, 0, 0, 0, 6,
+			100, 0, 0, 0, 16, 0, 3, 0, 159, 14, 72, 5, 0, 47, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 146, 14, 84, 7, 0, 83,
+			0, 6, 104, 0, 0, 0, 8, 0, 12, 0, 186, 14, 107, 6, 0, 0, 0, 3, 73, 0, 0, 0, 0, 0, 0, 0, 73, 14, 108, 2,
+			31, 31, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 78, 14, 109, 2, 29, 29, 75, 0, 97, 50, 0, 0, 0, 0, 0, 0, 82, 14,
+			110, 2, 29, 29, 85, 0, 89, 0, 0, 0, 0, 0, 0, 0, 86, 14, 111, 2, 28, 28, 77, 0, 117, 49, 0, 0, 0, 0, 0, 0,
+			90, 14, 112, 2, 33, 33, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 92, 14, 113, 2, 33, 33, 70, 0, 121, 0, 0, 0, 0, 0,
+			0, 0, 94, 14, 114, 2, 33, 33, 75, 0, 97, 105, 0, 0, 0, 0, 32, 0, 96, 14, 115, 2, 29, 31, 155, 0, 38, 105, 0, 0,
+			0, 0, 32, 0, 98, 14, 116, 2, 29, 31, 145, 0, 111, 105, 0, 0, 0, 0, 32, 0, 100, 14, 117, 2, 32, 31, 140, 0, 101, 105,
+			0, 0, 0, 0, 32, 0, 102, 14, 118, 2, 30, 31, 140, 0, 89, 105, 0, 0, 0, 0, 32, 0, 104, 14, 119, 2, 28, 31, 135, 0,
+			117, 105, 0, 0, 0, 0, 32, 0, 106, 14, 120, 2, 33, 31, 135, 0, 121, 105, 0, 0, 0, 0, 32, 0, 108, 14, 121, 2, 33, 31,
+			135, 0, 97, 117, 0, 0, 0, 0, 32, 0, 110, 14, 122, 2, 29, 33, 150, 0, 111, 117, 0, 0, 0, 0, 32, 0, 112, 14, 123, 2,
+			32, 33, 140, 0, 101, 117, 0, 0, 0, 0, 32, 0, 114, 14, 124, 2, 30, 33, 140, 0, 105, 117, 0, 0, 0, 0, 32, 0, 116, 14,
+			125, 2, 31, 33, 140, 0, 38, 121, 0, 0, 0, 0, 32, 0, 118, 14, 126, 2, 29, 33, 140, 0, 101, 121, 0, 0, 0, 0, 32, 0,
+			120, 14, 127, 2, 30, 33, 140, 0, 89, 121, 0, 0, 0, 0, 32, 0, 122, 14, 128, 2, 28, 33, 135, 0, 105, 121, 0, 0, 0, 0,
+			32, 0, 124, 14, 129, 2, 31, 33, 130, 0, 117, 111, 0, 0, 0, 0, 32, 0, 126, 14, 130, 2, 33, 32, 140, 0, 105, 101, 0, 0,
+			0, 0, 32, 0, 128, 14, 131, 2, 31, 30, 140, 0, 121, 89, 0, 0, 0, 0, 32, 0, 130, 14, 132, 2, 33, 28, 140, 0, 115, 50,
+			0, 0, 40, 0, 4, 0, 167, 6, 133, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			40, 1, 0, 0, 0, 0, 0, 0, 101, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 80, 0, 114, 0, 0, 0,
+			0, 0, 0, 0, 57, 15, 34, 3, 0, 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 206, 14, 35, 2, 29, 29, 85, 0, 101, 0,
+			0, 0, 0, 0, 0, 0, 212, 14, 36, 2, 30, 30, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 218, 14, 37, 2, 31, 31, 70, 0,
+			111, 0, 0, 0, 0, 0, 0, 0, 226, 14, 39, 2, 32, 32, 80, 0, 117, 0, 0, 0, 0, 0, 0, 0, 232, 14, 40, 2, 33, 33,
+			72, 0, 116, 0, 0, 0, 8, 0, 67, 0, 17, 15, 47, 4, 0, 72, 0, 5, 112, 0, 0, 0, 8, 0, 1, 0, 226, 6, 48, 4,
+			0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 67, 15, 49, 4, 0, 81, 0, 5, 100, 0, 0, 0, 16, 0, 3, 0, 30, 15,
+			72, 5, 0, 47, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 4, 15, 84, 7, 0, 83, 0, 6, 104, 0, 0, 0, 8, 0, 12, 0,
+			93, 15, 107, 6, 0, 0, 0, 3, 97, 58, 0, 0, 0, 0, 0, 0, 208, 14, 108, 2, 29, 29, 170, 0, 65, 49, 0, 0, 0, 0,
+			0, 0, 210, 14, 109, 2, 29, 29, 127, 0, 101, 58, 0, 0, 0, 0, 0, 0, 214, 14, 110, 2, 30, 30, 160, 0, 69, 49, 0, 0,
+			0, 0, 0, 0, 216, 14, 111, 2, 30, 30, 120, 0, 105, 58, 0, 0, 0, 0, 0, 0, 220, 14, 112, 2, 31, 31, 140, 0, 73, 49,
+			0, 0, 0, 0, 0, 0, 222, 14, 113, 2, 31, 31, 105, 0, 105, 49, 0, 0, 0, 0, 0, 0, 224, 14, 114, 2, 31, 31, 15, 0,
+			111, 58, 0, 0, 0, 0, 0, 0, 228, 14, 115, 2, 32, 32, 160, 0, 79, 49, 0, 0, 0, 0, 0, 0, 230, 14, 116, 2, 32, 32,
+			112, 0, 117, 58, 0, 0, 0, 0, 0, 0, 234, 14, 117, 2, 33, 33, 145, 0, 85, 49, 0, 0, 0, 0, 0, 0, 236, 14, 118, 2,
+			33, 33, 109, 0, 56, 0, 0, 0, 0, 0, 0, 0, 238, 14, 119, 2, 28, 28, 82, 0, 56, 58, 0, 0, 0, 0, 0, 0, 240, 14,
+			120, 2, 28, 28, 165, 0, 38, 0, 0, 0, 0, 0, 0, 0, 242, 14, 121, 2, 29, 29, 87, 0, 38, 58, 0, 0, 0, 0, 0, 0,
+			244, 14, 122, 2, 29, 29, 175, 0, 89, 0, 0, 0, 0, 0, 0, 0, 246, 14, 123, 2, 28, 28, 82, 0, 89, 58, 0, 0, 0, 0,
+			0, 0, 248, 14, 124, 2, 28, 28, 165, 0, 121, 0, 0, 0, 0, 0, 0, 0, 250, 14, 125, 2, 33, 33, 72, 0, 121, 58, 0, 0,
+			0, 0, 0, 0, 252, 14, 126, 2, 33, 33, 145, 0, 38, 105, 0, 0, 0, 0, 32, 0, 254, 14, 127, 2, 29, 31, 157, 0, 89, 105,
+			0, 0, 0, 0, 32, 0, 0, 15, 128, 2, 28, 31, 152, 0, 121, 105, 0, 0, 0, 0, 32, 0, 2, 15, 129, 2, 33, 31, 142, 0,
+			115, 50, 0, 0, 40, 0, 4, 0, 167, 6, 130, 6, 0, 0, 0, 3, 115, 94, 0, 0, 40, 2, 4, 0, 113, 15, 131, 6, 0, 88,
+			0, 3, 116, 94, 0, 0, 8, 2, 7, 0, 123, 15, 132, 4, 0, 133, 0, 5, 100, 94, 0, 0, 16, 2, 4, 0, 136, 15, 133, 5,
+			0, 132, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 104, 82, 4, 0, 102, 114,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			114, 0, 0, 0, 128, 0, 0, 0, 127, 12, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 46, 12, 35, 2, 29, 29,
-			75, 0, 103, 0, 0, 0, 16, 0, 8, 0, 139, 12, 81, 5, 0, 49, 0, 5, 69, 0, 0, 0, 0, 0, 0, 0, 48, 12, 108, 2,
-			30, 30, 75, 0, 73, 0, 0, 0, 0, 0, 0, 0, 50, 12, 109, 2, 31, 31, 75, 0, 89, 0, 0, 0, 0, 0, 0, 0, 54, 12,
-			110, 2, 31, 31, 75, 0, 79, 0, 0, 0, 0, 0, 0, 0, 56, 12, 111, 2, 32, 32, 75, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			58, 12, 112, 2, 33, 33, 75, 0, 86, 0, 0, 0, 0, 0, 0, 0, 60, 12, 113, 2, 28, 28, 75, 0, 105, 58, 0, 0, 0, 0,
-			0, 0, 62, 12, 114, 2, 31, 31, 90, 0, 121, 58, 0, 0, 0, 0, 0, 0, 65, 12, 115, 2, 31, 31, 90, 0, 117, 58, 0, 0,
-			0, 0, 0, 0, 71, 12, 116, 2, 33, 33, 95, 0, 101, 58, 0, 0, 0, 0, 0, 0, 74, 12, 117, 2, 30, 30, 105, 0, 111, 58,
-			0, 0, 0, 0, 0, 0, 77, 12, 118, 2, 32, 32, 105, 0, 65, 58, 0, 0, 0, 0, 0, 0, 80, 12, 119, 2, 29, 29, 115, 0,
-			65, 89, 0, 0, 0, 0, 0, 0, 83, 12, 120, 2, 29, 31, 125, 0, 97, 73, 0, 0, 0, 0, 0, 0, 88, 12, 121, 2, 29, 31,
-			105, 0, 97, 89, 0, 0, 0, 0, 0, 0, 90, 12, 122, 2, 29, 31, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 95, 12, 123, 2,
-			29, 33, 105, 0, 64, 73, 0, 0, 0, 0, 0, 0, 97, 12, 124, 2, 28, 31, 105, 0, 64, 89, 0, 0, 0, 0, 0, 0, 99, 12,
-			125, 2, 28, 31, 105, 0, 101, 85, 0, 0, 0, 0, 0, 0, 104, 12, 126, 2, 30, 33, 105, 0, 73, 117, 0, 0, 0, 0, 0, 0,
-			106, 12, 127, 2, 31, 33, 105, 0, 89, 117, 0, 0, 0, 0, 0, 0, 108, 12, 128, 2, 31, 33, 105, 0, 79, 73, 0, 0, 0, 0,
-			0, 0, 113, 12, 129, 2, 32, 31, 105, 0, 79, 89, 0, 0, 0, 0, 0, 0, 115, 12, 130, 2, 32, 31, 105, 0, 117, 73, 0, 0,
-			0, 0, 0, 0, 120, 12, 131, 2, 33, 31, 105, 0, 117, 89, 0, 0, 0, 0, 0, 0, 122, 12, 132, 2, 33, 31, 105, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 120, 208, 3, 0, 100, 101, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0,
-			0, 0, 160, 12, 13, 2, 28, 28, 60, 0, 114, 0, 0, 0, 16, 0, 132, 0, 55, 13, 34, 5, 0, 0, 0, 6, 97, 0, 0, 0,
-			0, 0, 0, 0, 172, 12, 35, 2, 29, 29, 55, 0, 108, 47, 0, 0, 0, 0, 0, 0, 9, 13, 56, 3, 0, 0, 0, 7, 106, 0,
-			0, 0, 0, 2, 0, 0, 26, 13, 57, 3, 0, 0, 0, 7, 98, 0, 0, 0, 48, 0, 4, 0, 109, 13, 71, 7, 0, 48, 0, 0,
-			100, 0, 0, 0, 16, 0, 4, 0, 114, 13, 72, 5, 0, 47, 0, 0, 103, 0, 0, 0, 16, 0, 8, 0, 119, 13, 81, 5, 0, 49,
-			0, 0, 51, 0, 0, 0, 2, 0, 0, 16, 168, 12, 108, 2, 28, 28, 80, 0, 69, 0, 0, 0, 0, 0, 0, 0, 176, 12, 109, 2,
-			30, 30, 60, 0, 69, 50, 0, 0, 0, 0, 0, 0, 180, 12, 110, 2, 30, 30, 60, 0, 73, 0, 0, 0, 0, 0, 0, 0, 185, 12,
-			111, 2, 31, 31, 60, 0, 73, 58, 0, 0, 0, 0, 0, 0, 190, 12, 112, 2, 31, 31, 95, 0, 79, 0, 0, 0, 0, 0, 0, 0,
-			192, 12, 113, 2, 32, 32, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0, 196, 12, 114, 2, 33, 33, 60, 0, 85, 82, 0, 0, 0, 0,
-			0, 16, 100, 13, 115, 2, 33, 28, 90, 0, 65, 58, 0, 0, 0, 0, 0, 0, 206, 12, 116, 2, 29, 29, 125, 0, 65, 0, 0, 0,
-			0, 0, 0, 0, 208, 12, 117, 2, 29, 29, 125, 0, 105, 58, 0, 0, 0, 0, 0, 0, 211, 12, 118, 2, 31, 31, 90, 0, 105, 50,
-			0, 0, 0, 0, 0, 0, 216, 12, 119, 2, 31, 31, 90, 0, 117, 58, 0, 0, 0, 0, 0, 0, 222, 12, 120, 2, 33, 33, 95, 0,
-			97, 85, 0, 0, 0, 0, 0, 0, 224, 12, 121, 2, 29, 33, 110, 0, 97, 73, 0, 0, 0, 0, 0, 0, 226, 12, 122, 2, 29, 31,
-			105, 0, 69, 73, 0, 0, 0, 0, 0, 0, 228, 12, 123, 2, 30, 31, 105, 0, 79, 89, 0, 0, 0, 0, 0, 0, 230, 12, 124, 2,
-			32, 31, 110, 0, 69, 58, 0, 0, 0, 0, 0, 0, 232, 12, 125, 2, 30, 30, 100, 0, 101, 58, 0, 0, 0, 0, 0, 0, 234, 12,
-			126, 2, 30, 30, 100, 0, 111, 58, 0, 0, 0, 0, 0, 0, 236, 12, 127, 2, 32, 32, 105, 0, 121, 58, 0, 0, 0, 0, 0, 0,
-			238, 12, 128, 2, 33, 33, 100, 0, 121, 0, 0, 0, 0, 0, 0, 0, 240, 12, 129, 2, 33, 33, 55, 0, 89, 58, 0, 0, 0, 0,
-			0, 0, 246, 12, 130, 2, 28, 28, 90, 0, 87, 0, 0, 0, 0, 0, 0, 0, 248, 12, 131, 2, 28, 28, 75, 0, 116, 115, 0, 0,
-			40, 0, 4, 0, 18, 6, 132, 4, 0, 0, 0, 2, 112, 70, 0, 0, 8, 0, 1, 0, 252, 12, 133, 4, 0, 0, 0, 2, 103, 35,
-			0, 0, 8, 2, 7, 0, 4, 13, 134, 6, 0, 0, 0, 3, 114, 50, 0, 0, 16, 0, 10, 0, 73, 13, 135, 7, 0, 0, 55, 6,
-			86, 35, 0, 0, 0, 0, 0, 0, 87, 13, 136, 3, 0, 0, 0, 7, 111, 85, 0, 0, 0, 0, 0, 0, 34, 9, 137, 2, 28, 33,
-			115, 0, 65, 126, 0, 0, 0, 0, 0, 0, 105, 13, 138, 2, 29, 29, 130, 0, 108, 50, 0, 0, 0, 0, 0, 0, 107, 13, 139, 3,
-			0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, 101, 111,
+			58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 20, 0, 64, 0, 0, 0, 0, 0, 0, 0, 173, 16, 13, 2, 28, 28,
+			85, 0, 64, 45, 0, 0, 2, 0, 0, 0, 175, 16, 14, 2, 28, 28, 65, 0, 114, 0, 0, 0, 16, 0, 138, 1, 250, 15, 34, 7,
+			109, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 177, 16, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 185, 16,
+			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 2, 0, 0, 205, 16, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			244, 16, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 11, 17, 40, 2, 33, 33, 90, 0, 114, 47, 0, 0, 16, 0,
+			138, 0, 19, 16, 46, 7, 109, 0, 0, 7, 116, 0, 0, 0, 8, 0, 4, 0, 110, 18, 47, 4, 110, 72, 0, 2, 112, 0, 0, 0,
+			8, 0, 1, 0, 41, 18, 48, 4, 110, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 227, 17, 49, 4, 110, 81, 25, 2, 110, 0,
+			0, 0, 16, 0, 4, 0, 252, 17, 50, 8, 0, 0, 0, 4, 108, 0, 0, 0, 0, 0, 0, 0, 86, 16, 55, 3, 108, 0, 0, 7,
+			108, 47, 0, 0, 0, 0, 5, 0, 127, 16, 56, 3, 108, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 37, 17, 58, 2, 33, 33,
+			90, 0, 108, 47, 50, 0, 0, 0, 0, 0, 153, 16, 59, 3, 108, 0, 0, 0, 98, 0, 0, 0, 16, 0, 1, 0, 102, 17, 71, 5,
+			110, 48, 0, 6, 100, 0, 0, 0, 16, 0, 4, 0, 154, 17, 72, 5, 110, 47, 0, 5, 103, 0, 0, 0, 16, 0, 8, 0, 195, 17,
+			81, 5, 110, 49, 0, 5, 102, 0, 0, 0, 8, 0, 2, 0, 186, 17, 83, 6, 110, 84, 0, 3, 118, 0, 0, 0, 16, 0, 2, 0,
+			151, 18, 84, 7, 110, 83, 45, 6, 122, 0, 0, 0, 48, 0, 4, 0, 184, 18, 88, 7, 0, 89, 0, 6, 115, 0, 0, 0, 40, 0,
+			4, 0, 77, 18, 89, 6, 0, 88, 0, 3, 83, 0, 0, 0, 40, 0, 6, 0, 95, 18, 91, 6, 110, 90, 0, 3, 35, 108, 0, 0,
+			0, 0, 0, 0, 0, 0, 108, 9, 0, 0, 0, 0, 35, 114, 0, 0, 0, 0, 0, 0, 0, 0, 109, 9, 0, 0, 0, 0, 35, 99,
+			70, 82, 0, 0, 0, 0, 0, 0, 110, 9, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 20, 17, 111, 2, 33, 33, 90, 0,
+			69, 0, 0, 0, 0, 0, 0, 0, 197, 16, 112, 2, 30, 30, 90, 0, 65, 126, 0, 0, 0, 0, 0, 0, 91, 17, 113, 2, 29, 29,
+			95, 0, 69, 126, 0, 0, 0, 0, 0, 0, 93, 17, 114, 2, 30, 30, 95, 0, 87, 126, 0, 0, 0, 0, 0, 0, 100, 17, 115, 2,
+			28, 28, 95, 0, 79, 126, 0, 0, 0, 0, 0, 0, 98, 17, 116, 2, 32, 32, 95, 0, 87, 0, 0, 0, 0, 0, 0, 0, 31, 17,
+			117, 2, 28, 28, 90, 0, 106, 47, 0, 0, 0, 0, 0, 0, 229, 16, 118, 2, 31, 31, 40, 0, 114, 47, 50, 0, 0, 0, 138, 1,
+			63, 16, 119, 3, 109, 0, 0, 0, 114, 50, 0, 0, 16, 0, 138, 0, 12, 16, 120, 7, 109, 0, 0, 0, 97, 45, 0, 0, 2, 0,
+			0, 0, 183, 16, 121, 2, 29, 29, 65, 0, 97, 35, 0, 0, 2, 0, 0, 0, 185, 7, 122, 2, 28, 28, 75, 0, 101, 45, 0, 0,
+			2, 0, 0, 0, 195, 16, 123, 2, 30, 30, 65, 0, 69, 45, 0, 0, 2, 0, 0, 0, 203, 16, 124, 2, 30, 30, 65, 0, 73, 0,
+			0, 0, 0, 0, 0, 0, 207, 7, 125, 2, 31, 31, 65, 0, 73, 50, 0, 0, 2, 0, 0, 0, 210, 7, 126, 2, 31, 31, 65, 0,
+			79, 0, 0, 0, 0, 0, 0, 0, 254, 16, 127, 2, 32, 32, 85, 0, 111, 85, 0, 0, 0, 0, 0, 0, 36, 8, 128, 2, 28, 33,
+			110, 0, 117, 58, 0, 0, 0, 0, 0, 0, 18, 17, 129, 2, 33, 33, 120, 0, 121, 45, 0, 0, 2, 0, 0, 0, 29, 17, 130, 2,
+			33, 33, 65, 0, 87, 50, 0, 0, 2, 0, 0, 0, 33, 17, 131, 2, 28, 28, 50, 0, 89, 0, 0, 0, 0, 0, 0, 0, 35, 17,
+			132, 2, 28, 28, 85, 0, 119, 47, 0, 0, 0, 0, 0, 0, 56, 17, 133, 3, 0, 0, 0, 7, 110, 50, 0, 0, 16, 0, 4, 0,
+			35, 18, 134, 8, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 11, 17, 135, 2, 33, 33, 90, 0, 121, 34, 0, 0, 0, 0,
+			0, 0, 20, 17, 136, 2, 33, 33, 90, 0, 69, 58, 0, 0, 0, 0, 0, 0, 197, 16, 137, 2, 30, 30, 90, 0, 65, 0, 0, 0,
+			0, 0, 0, 0, 177, 16, 138, 2, 29, 29, 90, 0, 112, 50, 0, 0, 8, 0, 1, 0, 65, 18, 139, 4, 0, 0, 0, 2, 116, 50,
+			0, 0, 8, 0, 4, 0, 128, 18, 140, 4, 0, 0, 0, 2, 116, 51, 0, 0, 8, 0, 4, 0, 143, 18, 141, 4, 0, 0, 0, 2,
+			86, 0, 0, 0, 0, 0, 0, 0, 181, 18, 142, 2, 29, 28, 70, 0, 122, 50, 0, 0, 48, 0, 4, 0, 204, 18, 143, 7, 0, 0,
+			0, 0, 122, 51, 0, 0, 48, 0, 4, 0, 215, 18, 144, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 11, 20, 0, 0, 0, 0, 0, 0, 102, 114, 45, 99, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 35, 0,
+			117, 0, 0, 0, 0, 0, 0, 0, 226, 18, 40, 2, 33, 33, 87, 0, 82, 0, 0, 0, 128, 0, 0, 0, 241, 18, 51, 3, 0, 0,
+			0, 7, 69, 0, 0, 0, 0, 0, 0, 0, 224, 18, 112, 2, 30, 30, 82, 0, 69, 126, 0, 0, 0, 0, 0, 0, 228, 18, 114, 2,
+			30, 30, 96, 0, 73, 0, 0, 0, 0, 0, 0, 0, 230, 18, 125, 2, 31, 31, 79, 0, 85, 0, 0, 0, 0, 0, 0, 0, 233, 18,
+			135, 2, 33, 33, 75, 0, 121, 34, 0, 0, 0, 0, 0, 0, 235, 18, 136, 2, 33, 33, 70, 0, 69, 58, 0, 0, 0, 0, 0, 0,
+			237, 18, 137, 2, 28, 30, 115, 0, 65, 0, 0, 0, 0, 0, 0, 0, 239, 18, 138, 2, 29, 29, 83, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 0, 0, 110, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 251, 18,
+			13, 2, 28, 28, 62, 0, 114, 0, 0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0,
+			26, 19, 35, 2, 29, 29, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 253, 18, 37, 2, 31, 31, 65, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 5, 19, 40, 2, 33, 33, 75, 0, 116, 0, 0, 0, 8, 0, 4, 0, 81, 19, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0,
+			8, 0, 1, 0, 101, 19, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6, 49, 4, 0, 0, 0, 2, 108, 0,
+			0, 0, 0, 0, 0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 98, 0, 0, 0, 16, 0, 1, 0, 110, 19, 71, 5, 0, 48, 0, 5,
+			100, 0, 0, 0, 16, 0, 4, 0, 90, 19, 72, 5, 0, 47, 0, 5, 122, 0, 0, 0, 48, 0, 4, 0, 130, 19, 88, 7, 0, 89,
+			0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 121, 19, 89, 6, 0, 88, 0, 3, 81, 0, 0, 0, 16, 0, 8, 0, 54, 19, 100, 7,
+			0, 101, 0, 6, 73, 0, 0, 0, 0, 0, 0, 0, 255, 18, 108, 2, 31, 31, 65, 0, 121, 0, 0, 0, 0, 0, 0, 0, 1, 19,
+			109, 2, 33, 33, 90, 0, 56, 0, 0, 0, 0, 0, 0, 0, 3, 19, 110, 2, 33, 33, 70, 0, 69, 0, 0, 0, 0, 0, 0, 0,
+			7, 19, 111, 2, 30, 30, 70, 0, 69, 50, 0, 0, 0, 0, 0, 0, 9, 19, 112, 2, 30, 30, 70, 0, 79, 0, 0, 0, 0, 0,
+			0, 0, 12, 19, 113, 2, 32, 32, 70, 0, 79, 58, 0, 0, 0, 0, 0, 0, 14, 19, 114, 2, 32, 32, 105, 0, 97, 58, 0, 0,
+			0, 0, 0, 0, 16, 19, 115, 2, 29, 29, 105, 0, 65, 0, 0, 0, 0, 0, 0, 0, 28, 19, 116, 2, 29, 29, 75, 0, 65, 126,
+			0, 0, 0, 0, 0, 0, 91, 17, 117, 2, 29, 29, 95, 0, 79, 126, 0, 0, 0, 0, 0, 0, 33, 19, 118, 2, 32, 32, 95, 0,
+			101, 58, 0, 0, 0, 0, 0, 0, 35, 19, 119, 2, 30, 31, 95, 0, 101, 35, 0, 0, 0, 0, 0, 0, 37, 19, 120, 2, 30, 31,
+			95, 0, 89, 58, 0, 0, 0, 0, 0, 0, 40, 19, 121, 2, 28, 28, 110, 0, 111, 58, 0, 0, 0, 0, 0, 0, 42, 19, 122, 2,
+			32, 33, 75, 0, 69, 73, 0, 0, 0, 0, 0, 0, 44, 19, 123, 2, 29, 31, 105, 0, 87, 121, 0, 0, 0, 0, 0, 0, 46, 19,
+			124, 2, 28, 33, 110, 0, 86, 85, 0, 0, 0, 0, 0, 0, 48, 19, 125, 2, 29, 32, 110, 0, 101, 85, 0, 0, 0, 0, 0, 0,
+			50, 19, 126, 2, 30, 33, 110, 0, 121, 85, 0, 0, 0, 0, 0, 0, 52, 19, 127, 2, 33, 33, 110, 0, 33, 0, 0, 0, 0, 0,
+			0, 0, 78, 19, 128, 0, 10, 0, 12, 1, 120, 50, 0, 0, 8, 0, 8, 0, 71, 12, 129, 6, 0, 0, 0, 3, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 9, 0, 0, 50, 0, 64, 0, 0, 0, 0, 0, 0, 16, 141, 19, 13, 2, 28, 28, 65, 0, 116, 35, 0, 0, 8, 0,
+			3, 0, 26, 20, 25, 4, 0, 72, 0, 2, 114, 0, 0, 0, 0, 0, 128, 0, 175, 20, 34, 3, 0, 0, 0, 3, 97, 0, 0, 0,
+			0, 0, 32, 0, 229, 19, 35, 2, 29, 29, 70, 0, 101, 0, 0, 0, 0, 0, 0, 0, 216, 19, 36, 2, 30, 30, 70, 0, 105, 0,
+			0, 0, 0, 0, 0, 0, 208, 19, 37, 2, 31, 31, 115, 0, 111, 0, 0, 0, 0, 0, 0, 0, 233, 19, 39, 2, 32, 32, 70, 0,
+			116, 0, 0, 0, 8, 0, 3, 0, 10, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 55, 6, 48, 4, 0, 0,
+			0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6, 49, 4, 0, 81, 0, 2, 98, 0, 0, 0, 16, 0, 1, 0, 196, 2, 71, 5,
+			0, 0, 0, 5, 100, 0, 0, 0, 16, 0, 3, 0, 36, 3, 72, 5, 0, 47, 0, 5, 74, 0, 0, 0, 48, 2, 7, 0, 120, 3,
+			79, 5, 0, 0, 0, 5, 99, 0, 0, 0, 40, 0, 6, 0, 122, 20, 80, 4, 0, 75, 0, 2, 103, 0, 0, 0, 16, 0, 8, 0,
+			153, 3, 81, 5, 0, 49, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 241, 3, 84, 7, 0, 83, 0, 6, 72, 0, 0, 0, 8, 0,
+			12, 0, 255, 5, 108, 6, 0, 0, 0, 3, 86, 0, 0, 0, 0, 0, 0, 16, 151, 19, 109, 2, 28, 28, 70, 0, 64, 51, 0, 0,
+			0, 0, 0, 16, 200, 19, 110, 2, 28, 28, 65, 0, 64, 50, 0, 0, 0, 0, 0, 16, 198, 19, 111, 2, 28, 28, 65, 0, 105, 58,
+			0, 0, 0, 0, 32, 0, 203, 19, 112, 2, 31, 31, 115, 0, 73, 0, 0, 0, 0, 0, 0, 0, 211, 19, 113, 2, 31, 31, 50, 0,
+			101, 58, 0, 0, 0, 0, 32, 0, 214, 19, 114, 2, 30, 30, 110, 0, 69, 58, 0, 0, 0, 0, 32, 0, 218, 19, 115, 2, 30, 30,
+			110, 0, 69, 0, 0, 0, 0, 0, 0, 0, 220, 19, 116, 2, 30, 30, 70, 0, 38, 58, 0, 0, 0, 0, 32, 0, 222, 19, 117, 2,
+			29, 29, 110, 0, 97, 58, 0, 0, 0, 0, 32, 0, 224, 19, 118, 2, 29, 29, 100, 0, 111, 58, 0, 0, 0, 0, 32, 0, 231, 19,
+			119, 2, 32, 32, 113, 0, 79, 58, 0, 0, 0, 0, 32, 0, 235, 19, 120, 2, 32, 32, 105, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			237, 19, 121, 2, 32, 32, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0, 239, 19, 122, 2, 33, 33, 70, 0, 117, 58, 0, 0, 0, 0,
+			32, 0, 241, 19, 123, 2, 33, 33, 115, 0, 105, 126, 0, 0, 0, 0, 32, 0, 243, 19, 124, 2, 31, 31, 110, 0, 73, 126, 0, 0,
+			0, 0, 32, 0, 245, 19, 125, 2, 31, 31, 85, 0, 101, 126, 0, 0, 0, 0, 32, 0, 247, 19, 126, 2, 30, 30, 110, 0, 69, 126,
+			0, 0, 0, 0, 32, 0, 249, 19, 127, 2, 30, 30, 110, 0, 97, 126, 0, 0, 0, 0, 32, 0, 251, 19, 128, 2, 29, 29, 110, 0,
+			86, 126, 0, 0, 0, 0, 32, 0, 253, 19, 129, 2, 28, 28, 110, 0, 79, 126, 0, 0, 0, 0, 32, 0, 255, 19, 130, 2, 32, 32,
+			110, 0, 111, 126, 0, 0, 0, 0, 32, 0, 1, 20, 131, 2, 32, 32, 110, 0, 85, 126, 0, 0, 0, 0, 0, 0, 3, 20, 132, 2,
+			33, 33, 85, 0, 117, 126, 0, 0, 0, 0, 32, 0, 5, 20, 133, 2, 33, 33, 110, 0, 97, 73, 0, 0, 0, 0, 32, 0, 7, 20,
+			134, 2, 28, 31, 120, 0, 97, 85, 0, 0, 0, 0, 32, 0, 9, 20, 135, 2, 29, 33, 120, 0, 112, 35, 0, 0, 8, 0, 1, 0,
+			74, 6, 136, 4, 0, 0, 0, 2, 98, 35, 0, 0, 16, 0, 1, 0, 11, 20, 137, 5, 0, 136, 0, 5, 100, 35, 0, 0, 16, 0,
+			3, 0, 39, 20, 138, 5, 0, 25, 0, 5, 116, 46, 0, 0, 8, 0, 5, 0, 54, 20, 139, 4, 0, 140, 0, 2, 100, 46, 0, 0,
+			16, 0, 5, 0, 81, 20, 140, 5, 0, 139, 0, 5, 116, 46, 35, 0, 8, 0, 5, 0, 66, 20, 141, 4, 0, 142, 0, 2, 100, 46,
+			35, 0, 16, 0, 5, 0, 104, 20, 142, 5, 0, 141, 0, 5, 99, 35, 0, 0, 40, 2, 7, 0, 131, 20, 143, 4, 0, 77, 0, 2,
+			74, 35, 0, 0, 48, 0, 7, 0, 137, 20, 144, 5, 0, 143, 0, 5, 107, 35, 0, 0, 8, 0, 8, 0, 145, 6, 145, 4, 0, 146,
+			0, 2, 103, 35, 0, 0, 16, 0, 3, 0, 152, 20, 146, 5, 0, 145, 0, 5, 35, 88, 50, 0, 40, 0, 4, 0, 173, 20, 147, 6,
+			0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 23, 0, 0, 0, 0, 0, 0, 98, 110,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			97, 0, 0, 0, 0, 0, 0, 0, 124, 13, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 126, 13, 36, 2, 30, 30,
-			85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 128, 13, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 131, 13, 39, 2,
-			32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 136, 13, 40, 2, 33, 33, 85, 0, 97, 85, 0, 0, 0, 0, 0, 0, 138, 13,
-			108, 2, 29, 33, 125, 0, 101, 85, 0, 0, 0, 0, 0, 0, 140, 13, 109, 2, 30, 33, 125, 0, 97, 73, 0, 0, 0, 0, 0, 0,
-			142, 13, 110, 2, 29, 31, 125, 0, 101, 73, 0, 0, 0, 0, 0, 0, 144, 13, 111, 2, 30, 31, 125, 0, 111, 73, 0, 0, 0, 0,
-			0, 0, 146, 13, 112, 2, 32, 31, 125, 0, 117, 73, 0, 0, 0, 0, 0, 0, 148, 13, 113, 2, 33, 31, 125, 0, 116, 115, 0, 0,
-			40, 0, 4, 0, 18, 6, 114, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14,
-			0, 0, 0, 0, 0, 0, 106, 98, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 150, 13, 36, 2, 30, 30, 85, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 110, 99, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			97, 0, 0, 0, 0, 0, 0, 0, 216, 20, 35, 2, 29, 29, 112, 0, 101, 0, 0, 0, 0, 0, 0, 0, 226, 20, 36, 2, 30, 30,
+			105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 222, 20, 37, 2, 31, 31, 105, 0, 111, 0, 0, 0, 0, 0, 0, 0, 230, 20, 39, 2,
+			32, 32, 105, 0, 117, 0, 0, 0, 0, 0, 0, 0, 224, 20, 40, 2, 33, 33, 105, 0, 116, 83, 0, 0, 40, 0, 6, 0, 236, 20,
+			76, 4, 0, 75, 0, 2, 86, 0, 0, 0, 0, 0, 0, 16, 190, 20, 109, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			234, 20, 121, 2, 32, 32, 100, 0, 38, 0, 0, 0, 0, 0, 0, 0, 228, 20, 148, 2, 29, 29, 105, 0, 116, 83, 35, 0, 40, 0,
+			6, 0, 245, 20, 149, 4, 0, 75, 0, 2, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 23, 0, 0, 0, 0, 0, 0, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 32, 0,
+			16, 21, 35, 2, 29, 29, 115, 0, 101, 0, 0, 0, 0, 0, 0, 0, 14, 21, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0,
+			0, 0, 11, 21, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 18, 21, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0,
+			0, 0, 0, 0, 20, 21, 40, 2, 33, 33, 80, 0, 86, 0, 0, 0, 0, 0, 0, 0, 254, 20, 109, 2, 28, 28, 80, 0, 64, 51,
+			0, 0, 0, 0, 0, 0, 4, 21, 110, 2, 28, 28, 70, 0, 97, 73, 0, 0, 0, 0, 32, 0, 22, 21, 134, 2, 29, 31, 120, 0,
+			97, 85, 0, 0, 0, 0, 32, 0, 24, 21, 135, 2, 29, 33, 120, 0, 64, 47, 0, 0, 0, 0, 0, 0, 6, 21, 148, 2, 28, 28,
+			65, 0, 101, 73, 0, 0, 0, 0, 32, 0, 26, 21, 149, 2, 30, 31, 120, 0, 101, 85, 0, 0, 0, 0, 32, 0, 28, 21, 150, 2,
+			30, 33, 120, 0, 86, 73, 0, 0, 0, 0, 32, 0, 30, 21, 151, 2, 28, 31, 120, 0, 86, 85, 0, 0, 0, 0, 32, 0, 32, 21,
+			152, 2, 28, 33, 120, 0, 111, 73, 0, 0, 0, 0, 32, 0, 34, 21, 153, 2, 32, 31, 120, 0, 111, 85, 0, 0, 0, 0, 32, 0,
+			36, 21, 154, 2, 32, 33, 120, 0, 117, 73, 0, 0, 0, 0, 32, 0, 38, 21, 155, 2, 33, 31, 120, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 23, 0, 0, 0, 0, 0, 0, 117, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			12, 9, 0, 0, 150, 0, 101, 0, 0, 0, 0, 0, 0, 0, 152, 13, 36, 2, 30, 30, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 0, 0, 102, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9,
-			0, 0, 80, 0, 114, 0, 0, 0, 128, 0, 0, 0, 120, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 165, 13,
-			35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 161, 13, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0,
-			154, 13, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 169, 13, 39, 2, 32, 32, 77, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 173, 13, 40, 2, 33, 33, 70, 0, 116, 0, 0, 0, 8, 0, 3, 0, 7, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 201, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 4, 7, 49, 4, 0, 81, 0, 2, 82, 50,
-			0, 0, 128, 0, 0, 0, 217, 13, 52, 3, 0, 0, 0, 6, 100, 0, 0, 0, 16, 0, 3, 0, 244, 13, 72, 5, 0, 47, 0, 5,
-			118, 0, 0, 0, 16, 0, 2, 0, 231, 13, 84, 7, 0, 83, 0, 6, 104, 0, 0, 0, 8, 0, 12, 0, 15, 14, 107, 6, 0, 0,
-			0, 3, 73, 0, 0, 0, 0, 0, 0, 0, 158, 13, 108, 2, 31, 31, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 163, 13, 109, 2,
-			29, 29, 75, 0, 97, 50, 0, 0, 0, 0, 0, 0, 167, 13, 110, 2, 29, 29, 85, 0, 89, 0, 0, 0, 0, 0, 0, 0, 171, 13,
-			111, 2, 28, 28, 77, 0, 117, 49, 0, 0, 0, 0, 0, 0, 175, 13, 112, 2, 33, 33, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			177, 13, 113, 2, 33, 33, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 179, 13, 114, 2, 33, 33, 75, 0, 97, 105, 0, 0, 0, 0,
-			32, 0, 181, 13, 115, 2, 29, 31, 155, 0, 38, 105, 0, 0, 0, 0, 32, 0, 183, 13, 116, 2, 29, 31, 145, 0, 111, 105, 0, 0,
-			0, 0, 32, 0, 185, 13, 117, 2, 32, 31, 140, 0, 101, 105, 0, 0, 0, 0, 32, 0, 187, 13, 118, 2, 30, 31, 140, 0, 89, 105,
-			0, 0, 0, 0, 32, 0, 189, 13, 119, 2, 28, 31, 135, 0, 117, 105, 0, 0, 0, 0, 32, 0, 191, 13, 120, 2, 33, 31, 135, 0,
-			121, 105, 0, 0, 0, 0, 32, 0, 193, 13, 121, 2, 33, 31, 135, 0, 97, 117, 0, 0, 0, 0, 32, 0, 195, 13, 122, 2, 29, 33,
-			150, 0, 111, 117, 0, 0, 0, 0, 32, 0, 197, 13, 123, 2, 32, 33, 140, 0, 101, 117, 0, 0, 0, 0, 32, 0, 199, 13, 124, 2,
-			30, 33, 140, 0, 105, 117, 0, 0, 0, 0, 32, 0, 201, 13, 125, 2, 31, 33, 140, 0, 38, 121, 0, 0, 0, 0, 32, 0, 203, 13,
-			126, 2, 29, 33, 140, 0, 101, 121, 0, 0, 0, 0, 32, 0, 205, 13, 127, 2, 30, 33, 140, 0, 89, 121, 0, 0, 0, 0, 32, 0,
-			207, 13, 128, 2, 28, 33, 135, 0, 105, 121, 0, 0, 0, 0, 32, 0, 209, 13, 129, 2, 31, 33, 130, 0, 117, 111, 0, 0, 0, 0,
-			32, 0, 211, 13, 130, 2, 33, 32, 140, 0, 105, 101, 0, 0, 0, 0, 32, 0, 213, 13, 131, 2, 31, 30, 140, 0, 121, 89, 0, 0,
-			0, 0, 32, 0, 215, 13, 132, 2, 33, 28, 140, 0, 115, 50, 0, 0, 40, 0, 4, 0, 142, 6, 133, 6, 0, 0, 0, 3, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 0, 0, 101, 116, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 9, 0, 0, 80, 0, 114, 0, 0, 0, 0, 0, 0, 0, 142, 14, 34, 3, 0, 0, 0, 2, 97, 0, 0, 0,
-			0, 0, 0, 0, 35, 14, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 41, 14, 36, 2, 30, 30, 80, 0, 105, 0,
-			0, 0, 0, 0, 0, 0, 47, 14, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 55, 14, 39, 2, 32, 32, 80, 0,
-			117, 0, 0, 0, 0, 0, 0, 0, 61, 14, 40, 2, 33, 33, 72, 0, 116, 0, 0, 0, 8, 0, 67, 0, 102, 14, 47, 4, 0, 72,
-			0, 5, 112, 0, 0, 0, 8, 0, 1, 0, 201, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 152, 14, 49, 4,
-			0, 81, 0, 5, 100, 0, 0, 0, 16, 0, 3, 0, 115, 14, 72, 5, 0, 47, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 89, 14,
-			84, 7, 0, 83, 0, 6, 104, 0, 0, 0, 8, 0, 12, 0, 178, 14, 107, 6, 0, 0, 0, 3, 97, 58, 0, 0, 0, 0, 0, 0,
-			37, 14, 108, 2, 29, 29, 170, 0, 65, 49, 0, 0, 0, 0, 0, 0, 39, 14, 109, 2, 29, 29, 127, 0, 101, 58, 0, 0, 0, 0,
-			0, 0, 43, 14, 110, 2, 30, 30, 160, 0, 69, 49, 0, 0, 0, 0, 0, 0, 45, 14, 111, 2, 30, 30, 120, 0, 105, 58, 0, 0,
-			0, 0, 0, 0, 49, 14, 112, 2, 31, 31, 140, 0, 73, 49, 0, 0, 0, 0, 0, 0, 51, 14, 113, 2, 31, 31, 105, 0, 105, 49,
-			0, 0, 0, 0, 0, 0, 53, 14, 114, 2, 31, 31, 15, 0, 111, 58, 0, 0, 0, 0, 0, 0, 57, 14, 115, 2, 32, 32, 160, 0,
-			79, 49, 0, 0, 0, 0, 0, 0, 59, 14, 116, 2, 32, 32, 112, 0, 117, 58, 0, 0, 0, 0, 0, 0, 63, 14, 117, 2, 33, 33,
-			145, 0, 85, 49, 0, 0, 0, 0, 0, 0, 65, 14, 118, 2, 33, 33, 109, 0, 56, 0, 0, 0, 0, 0, 0, 0, 67, 14, 119, 2,
-			28, 28, 82, 0, 56, 58, 0, 0, 0, 0, 0, 0, 69, 14, 120, 2, 28, 28, 165, 0, 38, 0, 0, 0, 0, 0, 0, 0, 71, 14,
-			121, 2, 29, 29, 87, 0, 38, 58, 0, 0, 0, 0, 0, 0, 73, 14, 122, 2, 29, 29, 175, 0, 89, 0, 0, 0, 0, 0, 0, 0,
-			75, 14, 123, 2, 28, 28, 82, 0, 89, 58, 0, 0, 0, 0, 0, 0, 77, 14, 124, 2, 28, 28, 165, 0, 121, 0, 0, 0, 0, 0,
-			0, 0, 79, 14, 125, 2, 33, 33, 72, 0, 121, 58, 0, 0, 0, 0, 0, 0, 81, 14, 126, 2, 33, 33, 145, 0, 38, 105, 0, 0,
-			0, 0, 32, 0, 83, 14, 127, 2, 29, 31, 157, 0, 89, 105, 0, 0, 0, 0, 32, 0, 85, 14, 128, 2, 28, 31, 152, 0, 121, 105,
-			0, 0, 0, 0, 32, 0, 87, 14, 129, 2, 33, 31, 142, 0, 115, 50, 0, 0, 40, 0, 4, 0, 142, 6, 130, 6, 0, 0, 0, 3,
-			115, 94, 0, 0, 40, 2, 4, 0, 198, 14, 131, 6, 0, 88, 0, 3, 116, 94, 0, 0, 8, 2, 7, 0, 208, 14, 132, 4, 0, 133,
-			0, 5, 100, 94, 0, 0, 16, 2, 4, 0, 221, 14, 133, 5, 0, 132, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 64, 1, 0, 0, 176, 54, 4, 0, 102, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 20, 0,
-			64, 0, 0, 0, 0, 0, 0, 0, 2, 16, 13, 2, 28, 28, 85, 0, 64, 45, 0, 0, 2, 0, 0, 0, 4, 16, 14, 2, 28, 28,
-			65, 0, 114, 0, 0, 0, 16, 0, 138, 1, 79, 15, 34, 7, 109, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 6, 16, 35, 2,
-			29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 14, 16, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 2, 0, 0, 34, 16,
-			37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 73, 16, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0,
-			96, 16, 40, 2, 33, 33, 90, 0, 114, 47, 0, 0, 16, 0, 138, 0, 104, 15, 46, 7, 109, 0, 0, 7, 116, 0, 0, 0, 8, 0,
-			4, 0, 195, 17, 47, 4, 110, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 126, 17, 48, 4, 110, 71, 0, 2, 107, 0, 0, 0,
-			8, 0, 8, 0, 56, 17, 49, 4, 110, 81, 25, 2, 110, 0, 0, 0, 16, 0, 4, 0, 81, 17, 50, 8, 0, 0, 0, 4, 108, 0,
-			0, 0, 0, 0, 0, 0, 171, 15, 55, 3, 108, 0, 0, 7, 108, 47, 0, 0, 0, 0, 5, 0, 212, 15, 56, 3, 108, 0, 0, 7,
-			119, 0, 0, 0, 0, 0, 0, 0, 122, 16, 58, 2, 33, 33, 90, 0, 108, 47, 50, 0, 0, 0, 0, 0, 238, 15, 59, 3, 108, 0,
-			0, 0, 98, 0, 0, 0, 16, 0, 1, 0, 187, 16, 71, 5, 110, 48, 0, 6, 100, 0, 0, 0, 16, 0, 4, 0, 239, 16, 72, 5,
-			110, 47, 0, 5, 103, 0, 0, 0, 16, 0, 8, 0, 24, 17, 81, 5, 110, 49, 0, 5, 102, 0, 0, 0, 8, 0, 2, 0, 15, 17,
-			83, 6, 110, 84, 0, 3, 118, 0, 0, 0, 16, 0, 2, 0, 236, 17, 84, 7, 110, 83, 45, 6, 122, 0, 0, 0, 48, 0, 4, 0,
-			13, 18, 88, 7, 0, 89, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 162, 17, 89, 6, 0, 88, 0, 3, 83, 0, 0, 0, 40, 0,
-			6, 0, 180, 17, 91, 6, 110, 90, 0, 3, 35, 108, 0, 0, 0, 0, 0, 0, 0, 0, 108, 9, 0, 0, 0, 0, 35, 114, 0, 0,
-			0, 0, 0, 0, 0, 0, 109, 9, 0, 0, 0, 0, 35, 99, 70, 82, 0, 0, 0, 0, 0, 0, 110, 9, 0, 0, 0, 0, 121, 0,
-			0, 0, 0, 0, 0, 0, 105, 16, 111, 2, 33, 33, 90, 0, 69, 0, 0, 0, 0, 0, 0, 0, 26, 16, 112, 2, 30, 30, 90, 0,
-			65, 126, 0, 0, 0, 0, 0, 0, 176, 16, 113, 2, 29, 29, 95, 0, 69, 126, 0, 0, 0, 0, 0, 0, 178, 16, 114, 2, 30, 30,
-			95, 0, 87, 126, 0, 0, 0, 0, 0, 0, 185, 16, 115, 2, 28, 28, 95, 0, 79, 126, 0, 0, 0, 0, 0, 0, 183, 16, 116, 2,
-			32, 32, 95, 0, 87, 0, 0, 0, 0, 0, 0, 0, 116, 16, 117, 2, 28, 28, 90, 0, 106, 47, 0, 0, 0, 0, 0, 0, 58, 16,
-			118, 2, 31, 31, 40, 0, 114, 47, 50, 0, 0, 0, 138, 1, 148, 15, 119, 3, 109, 0, 0, 0, 114, 50, 0, 0, 16, 0, 138, 0,
-			97, 15, 120, 7, 109, 0, 0, 0, 97, 45, 0, 0, 2, 0, 0, 0, 12, 16, 121, 2, 29, 29, 65, 0, 97, 35, 0, 0, 2, 0,
-			0, 0, 160, 7, 122, 2, 28, 28, 75, 0, 101, 45, 0, 0, 2, 0, 0, 0, 24, 16, 123, 2, 30, 30, 65, 0, 69, 45, 0, 0,
-			2, 0, 0, 0, 32, 16, 124, 2, 30, 30, 65, 0, 73, 0, 0, 0, 0, 0, 0, 0, 172, 7, 125, 2, 31, 31, 65, 0, 73, 50,
-			0, 0, 2, 0, 0, 0, 175, 7, 126, 2, 31, 31, 65, 0, 79, 0, 0, 0, 0, 0, 0, 0, 83, 16, 127, 2, 32, 32, 85, 0,
-			111, 85, 0, 0, 0, 0, 0, 0, 240, 7, 128, 2, 28, 33, 110, 0, 117, 58, 0, 0, 0, 0, 0, 0, 103, 16, 129, 2, 33, 33,
-			120, 0, 121, 45, 0, 0, 2, 0, 0, 0, 114, 16, 130, 2, 33, 33, 65, 0, 87, 50, 0, 0, 2, 0, 0, 0, 118, 16, 131, 2,
-			28, 28, 50, 0, 89, 0, 0, 0, 0, 0, 0, 0, 120, 16, 132, 2, 28, 28, 85, 0, 119, 47, 0, 0, 0, 0, 0, 0, 141, 16,
-			133, 3, 0, 0, 0, 7, 110, 50, 0, 0, 16, 0, 4, 0, 120, 17, 134, 8, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			96, 16, 135, 2, 33, 33, 90, 0, 121, 34, 0, 0, 0, 0, 0, 0, 105, 16, 136, 2, 33, 33, 90, 0, 69, 58, 0, 0, 0, 0,
-			0, 0, 26, 16, 137, 2, 30, 30, 90, 0, 65, 0, 0, 0, 0, 0, 0, 0, 6, 16, 138, 2, 29, 29, 90, 0, 112, 50, 0, 0,
-			8, 0, 1, 0, 150, 17, 139, 4, 0, 0, 0, 2, 116, 50, 0, 0, 8, 0, 4, 0, 213, 17, 140, 4, 0, 0, 0, 2, 116, 51,
-			0, 0, 8, 0, 4, 0, 228, 17, 141, 4, 0, 0, 0, 2, 86, 0, 0, 0, 0, 0, 0, 0, 10, 18, 142, 2, 29, 28, 70, 0,
-			122, 50, 0, 0, 48, 0, 4, 0, 33, 18, 143, 7, 0, 0, 0, 0, 122, 51, 0, 0, 48, 0, 4, 0, 44, 18, 144, 7, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 19, 0, 0, 0, 0, 0, 0, 102, 114, 45, 99,
-			97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 35, 0, 117, 0, 0, 0, 0, 0, 0, 0, 55, 18, 40, 2, 33, 33, 87, 0,
-			82, 0, 0, 0, 128, 0, 0, 0, 70, 18, 51, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0, 0, 0, 53, 18, 112, 2, 30, 30,
-			82, 0, 69, 126, 0, 0, 0, 0, 0, 0, 57, 18, 114, 2, 30, 30, 96, 0, 73, 0, 0, 0, 0, 0, 0, 0, 59, 18, 125, 2,
-			31, 31, 79, 0, 85, 0, 0, 0, 0, 0, 0, 0, 62, 18, 135, 2, 33, 33, 75, 0, 121, 34, 0, 0, 0, 0, 0, 0, 64, 18,
-			136, 2, 33, 33, 70, 0, 69, 58, 0, 0, 0, 0, 0, 0, 66, 18, 137, 2, 28, 30, 115, 0, 65, 0, 0, 0, 0, 0, 0, 0,
-			68, 18, 138, 2, 29, 29, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0,
-			0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 50, 0, 64, 0, 0, 0, 0, 0, 0, 16, 80, 18,
-			13, 2, 28, 28, 65, 0, 97, 0, 0, 0, 0, 0, 32, 0, 147, 18, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0,
-			137, 18, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 129, 18, 37, 2, 31, 31, 115, 0, 111, 0, 0, 0, 0, 0,
-			0, 0, 151, 18, 39, 2, 32, 32, 65, 0, 116, 0, 0, 0, 8, 0, 3, 0, 7, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 52, 6, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 113, 6, 49, 4, 0, 81, 0, 2, 98, 0,
-			0, 0, 16, 0, 1, 0, 193, 2, 71, 5, 0, 0, 0, 5, 100, 0, 0, 0, 16, 0, 3, 0, 33, 3, 72, 5, 0, 47, 0, 5,
-			74, 0, 0, 0, 48, 2, 7, 0, 117, 3, 79, 5, 0, 0, 0, 5, 99, 0, 0, 0, 8, 2, 7, 0, 41, 5, 80, 4, 0, 0,
-			0, 2, 103, 0, 0, 0, 16, 0, 8, 0, 150, 3, 81, 5, 0, 49, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 238, 3, 84, 7,
-			0, 83, 0, 6, 72, 0, 0, 0, 8, 0, 12, 0, 252, 5, 108, 6, 0, 0, 0, 3, 86, 0, 0, 0, 0, 0, 0, 16, 86, 18,
-			109, 2, 28, 28, 65, 0, 64, 51, 0, 0, 0, 0, 0, 16, 123, 18, 110, 2, 28, 28, 65, 0, 64, 50, 0, 0, 0, 0, 0, 16,
-			121, 18, 111, 2, 28, 28, 65, 0, 105, 58, 0, 0, 0, 0, 32, 0, 126, 18, 112, 2, 31, 31, 115, 0, 73, 0, 0, 0, 0, 0,
-			0, 0, 132, 18, 113, 2, 31, 31, 50, 0, 101, 58, 0, 0, 0, 0, 32, 0, 135, 18, 114, 2, 30, 30, 110, 0, 69, 58, 0, 0,
-			0, 0, 32, 0, 139, 18, 115, 2, 30, 30, 110, 0, 69, 0, 0, 0, 0, 0, 0, 0, 141, 18, 116, 2, 30, 30, 65, 0, 38, 58,
-			0, 0, 0, 0, 32, 0, 143, 18, 117, 2, 29, 29, 110, 0, 97, 58, 0, 0, 0, 0, 32, 0, 145, 18, 118, 2, 29, 29, 115, 0,
-			111, 58, 0, 0, 0, 0, 32, 0, 149, 18, 119, 2, 32, 32, 110, 0, 79, 58, 0, 0, 0, 0, 32, 0, 153, 18, 120, 2, 32, 32,
-			105, 0, 79, 0, 0, 0, 0, 0, 0, 0, 155, 18, 121, 2, 32, 32, 65, 0, 85, 0, 0, 0, 0, 0, 0, 0, 157, 18, 122, 2,
-			33, 33, 60, 0, 117, 58, 0, 0, 0, 0, 32, 0, 159, 18, 123, 2, 33, 33, 115, 0, 105, 126, 0, 0, 0, 0, 32, 0, 161, 18,
-			124, 2, 31, 31, 110, 0, 73, 126, 0, 0, 0, 0, 32, 0, 163, 18, 125, 2, 31, 31, 85, 0, 101, 126, 0, 0, 0, 0, 32, 0,
-			165, 18, 126, 2, 30, 30, 110, 0, 69, 126, 0, 0, 0, 0, 32, 0, 167, 18, 127, 2, 30, 30, 115, 0, 97, 126, 0, 0, 0, 0,
-			32, 0, 169, 18, 128, 2, 29, 29, 125, 0, 86, 126, 0, 0, 0, 0, 32, 0, 171, 18, 129, 2, 28, 28, 125, 0, 79, 126, 0, 0,
-			0, 0, 32, 0, 173, 18, 130, 2, 32, 32, 115, 0, 111, 126, 0, 0, 0, 0, 32, 0, 175, 18, 131, 2, 32, 32, 110, 0, 85, 126,
-			0, 0, 0, 0, 0, 0, 177, 18, 132, 2, 33, 33, 85, 0, 117, 126, 0, 0, 0, 0, 32, 0, 179, 18, 133, 2, 33, 33, 115, 0,
-			97, 73, 0, 0, 0, 0, 32, 0, 181, 18, 134, 2, 28, 31, 120, 0, 97, 85, 0, 0, 0, 0, 32, 0, 183, 18, 135, 2, 29, 33,
-			120, 0, 112, 104, 0, 0, 8, 0, 1, 0, 71, 6, 136, 4, 0, 0, 0, 2, 98, 104, 0, 0, 16, 0, 1, 0, 185, 18, 137, 5,
-			0, 136, 0, 5, 116, 104, 0, 0, 8, 0, 3, 0, 200, 18, 138, 4, 0, 72, 0, 2, 100, 104, 0, 0, 16, 0, 3, 0, 213, 18,
-			139, 5, 0, 138, 0, 5, 116, 46, 0, 0, 8, 0, 5, 0, 228, 18, 140, 4, 0, 141, 0, 2, 100, 46, 0, 0, 16, 0, 5, 0,
-			253, 18, 141, 5, 0, 140, 0, 5, 116, 104, 46, 0, 8, 0, 5, 0, 240, 18, 142, 4, 0, 143, 0, 2, 100, 104, 46, 0, 16, 0,
-			5, 0, 20, 19, 143, 5, 0, 142, 0, 5, 99, 104, 0, 0, 40, 2, 7, 0, 38, 19, 144, 4, 0, 77, 0, 2, 74, 104, 0, 0,
-			48, 0, 7, 0, 43, 19, 145, 5, 0, 144, 0, 5, 107, 104, 0, 0, 8, 0, 8, 0, 126, 6, 146, 4, 0, 147, 0, 2, 103, 104,
-			0, 0, 16, 0, 3, 0, 58, 19, 147, 5, 0, 146, 0, 5, 35, 88, 50, 0, 40, 0, 4, 0, 79, 19, 148, 6, 0, 0, 0, 3,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 21, 0, 0, 0, 0, 0, 0, 116, 97, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 25, 0, 64, 0, 0, 0, 0, 0, 0, 0, 81, 19, 13, 2, 28, 28, 65, 0, 97, 0,
-			0, 0, 0, 0, 0, 0, 83, 19, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 100, 19, 36, 2, 30, 30, 65, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 104, 19, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 112, 19, 39, 2, 32, 32,
-			65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 116, 19, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6, 47, 4,
-			0, 0, 0, 2, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 0, 0, 6, 86, 0, 0, 0, 0, 0, 0, 0, 86, 19,
-			109, 2, 28, 28, 65, 0, 105, 58, 0, 0, 0, 0, 0, 0, 110, 19, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0,
-			102, 19, 114, 2, 30, 30, 125, 0, 97, 58, 0, 0, 0, 0, 0, 0, 98, 19, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0,
-			0, 0, 114, 19, 119, 2, 32, 32, 150, 0, 85, 0, 0, 0, 0, 0, 0, 0, 121, 19, 122, 2, 33, 33, 55, 0, 117, 58, 0, 0,
-			0, 0, 0, 0, 125, 19, 123, 2, 33, 33, 140, 0, 97, 73, 0, 0, 0, 0, 0, 0, 135, 19, 134, 2, 29, 31, 140, 0, 97, 85,
-			0, 0, 0, 0, 0, 0, 137, 19, 135, 2, 29, 33, 135, 0, 86, 35, 0, 0, 0, 0, 0, 0, 93, 19, 149, 2, 28, 28, 65, 0,
-			35, 0, 0, 0, 0, 0, 0, 0, 139, 19, 150, 9, 0, 0, 0, 0, 117, 50, 0, 0, 0, 0, 0, 0, 119, 19, 151, 2, 33, 33,
-			55, 0, 85, 58, 0, 0, 0, 0, 0, 0, 131, 19, 152, 2, 33, 33, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 17, 21, 0, 0, 0, 0, 0, 0, 107, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 141, 19, 13, 2, 29, 29, 65, 0,
-			114, 0, 0, 0, 0, 0, 128, 0, 72, 0, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 32, 0, 143, 19, 35, 2, 28, 29,
-			65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 149, 19, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 153, 19, 37, 2,
-			31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 157, 19, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 161, 19,
-			40, 2, 33, 33, 55, 0, 100, 0, 0, 0, 16, 0, 3, 0, 169, 19, 72, 5, 0, 74, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0,
-			201, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 155, 19, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0,
-			0, 0, 151, 19, 114, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 147, 19, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0,
-			0, 0, 0, 0, 159, 19, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 163, 19, 123, 2, 33, 33, 140, 0, 97, 73,
-			0, 0, 0, 0, 32, 0, 165, 19, 134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 167, 19, 135, 2, 29, 33, 135, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0, 0, 0, 0, 0, 109, 108, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
-			0, 0, 0, 0, 196, 19, 13, 2, 28, 28, 65, 0, 114, 0, 0, 0, 16, 64, 132, 0, 137, 2, 34, 5, 0, 0, 0, 3, 97, 0,
-			0, 0, 0, 0, 0, 0, 202, 19, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 221, 19, 36, 2, 30, 30, 65, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 225, 19, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 231, 19, 39, 2, 32, 32,
-			65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 235, 19, 40, 2, 33, 33, 55, 0, 82, 0, 0, 0, 128, 0, 0, 0, 138, 0, 51, 3,
-			0, 0, 0, 6, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 32, 0, 229, 19,
-			112, 2, 31, 31, 135, 0, 73, 0, 0, 0, 0, 0, 0, 0, 227, 19, 113, 2, 31, 31, 65, 0, 101, 58, 0, 0, 0, 0, 32, 0,
-			223, 19, 114, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 32, 0, 219, 19, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0,
-			32, 0, 233, 19, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 32, 0, 237, 19, 123, 2, 33, 33, 140, 0, 97, 73, 0, 0,
-			0, 0, 32, 0, 239, 19, 134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 241, 19, 135, 2, 29, 33, 135, 0, 121, 0,
-			0, 0, 2, 0, 0, 0, 198, 19, 149, 2, 28, 28, 40, 0, 97, 35, 0, 0, 0, 0, 0, 0, 217, 19, 150, 2, 29, 29, 90, 0,
-			100, 35, 0, 0, 16, 0, 4, 0, 12, 3, 151, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 9, 0, 0, 60, 0, 64, 0, 0, 0, 0, 0, 0, 16, 40, 21, 13, 2, 28, 28, 65, 0, 86, 0, 0, 0, 0, 0, 0, 16,
+			46, 21, 109, 2, 28, 28, 75, 0, 64, 51, 0, 0, 0, 0, 0, 16, 51, 21, 110, 2, 28, 28, 75, 0, 64, 50, 0, 0, 0, 0,
+			0, 16, 49, 21, 111, 2, 28, 28, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 23, 0, 0,
+			0, 0, 0, 0, 112, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 57, 21, 13, 2, 28, 28, 65, 0, 97, 0, 0, 0, 0, 0, 32, 0,
+			78, 21, 35, 2, 29, 29, 110, 0, 101, 0, 0, 0, 0, 0, 32, 0, 74, 21, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0,
+			32, 0, 68, 21, 37, 2, 31, 31, 110, 0, 117, 0, 0, 0, 0, 0, 32, 0, 86, 21, 40, 2, 33, 33, 110, 0, 118, 0, 0, 0,
+			16, 0, 2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 86, 0, 0, 0, 0, 0, 0, 0, 62, 21, 109, 2, 28, 28, 65, 0, 73, 0,
+			0, 0, 0, 0, 0, 0, 71, 21, 113, 2, 31, 31, 75, 0, 69, 0, 0, 0, 0, 0, 32, 0, 76, 21, 116, 2, 30, 30, 100, 0,
+			111, 58, 0, 0, 0, 0, 32, 0, 82, 21, 119, 2, 32, 32, 110, 0, 79, 0, 0, 0, 0, 0, 32, 0, 80, 21, 121, 2, 32, 32,
+			100, 0, 85, 0, 0, 0, 0, 0, 0, 0, 84, 21, 122, 2, 33, 33, 75, 0, 43, 0, 0, 0, 0, 0, 0, 0, 54, 21, 148, 1,
+			5, 30, 0, 0, 101, 73, 0, 0, 0, 0, 0, 0, 45, 8, 149, 2, 30, 31, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 24, 23, 0, 0, 0, 0, 0, 0, 116, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0,
+			25, 0, 64, 0, 0, 0, 0, 0, 0, 0, 88, 21, 13, 2, 28, 28, 65, 0, 97, 0, 0, 0, 0, 0, 0, 0, 90, 21, 35, 2,
+			29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 107, 21, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 111, 21,
+			37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 119, 21, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			123, 21, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 118, 0, 0, 0, 16, 0,
+			2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 122, 46, 0, 0, 48, 0, 6, 0, 148, 21, 92, 7, 0, 93, 0, 6, 86, 0, 0, 0,
+			0, 0, 0, 0, 93, 21, 109, 2, 28, 28, 65, 0, 105, 58, 0, 0, 0, 0, 0, 0, 117, 21, 112, 2, 31, 31, 135, 0, 101, 58,
+			0, 0, 0, 0, 0, 0, 109, 21, 114, 2, 30, 30, 125, 0, 97, 58, 0, 0, 0, 0, 0, 0, 105, 21, 118, 2, 29, 29, 150, 0,
+			111, 58, 0, 0, 0, 0, 0, 0, 121, 21, 119, 2, 32, 32, 150, 0, 85, 0, 0, 0, 0, 0, 0, 0, 128, 21, 122, 2, 33, 33,
+			55, 0, 117, 58, 0, 0, 0, 0, 0, 0, 132, 21, 123, 2, 33, 33, 140, 0, 97, 73, 0, 0, 0, 0, 0, 0, 142, 21, 134, 2,
+			29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 0, 0, 144, 21, 135, 2, 29, 33, 135, 0, 86, 35, 0, 0, 0, 0, 0, 0, 100, 21,
+			148, 2, 28, 28, 65, 0, 35, 0, 0, 0, 0, 0, 0, 0, 146, 21, 149, 9, 0, 0, 0, 0, 117, 50, 0, 0, 0, 0, 0, 0,
+			126, 21, 150, 2, 33, 33, 55, 0, 85, 58, 0, 0, 0, 0, 0, 0, 138, 21, 151, 2, 33, 33, 135, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 23, 0, 0, 0, 0, 0, 0, 107, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 153, 21,
+			13, 2, 29, 29, 65, 0, 114, 0, 0, 0, 0, 0, 128, 0, 71, 0, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 32, 0,
+			155, 21, 35, 2, 28, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 161, 21, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0,
+			0, 0, 165, 21, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 169, 21, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0,
+			0, 0, 0, 0, 173, 21, 40, 2, 33, 33, 55, 0, 100, 0, 0, 0, 16, 0, 3, 0, 181, 21, 72, 5, 0, 74, 0, 5, 118, 0,
+			0, 0, 16, 0, 2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 167, 21, 112, 2, 31, 31, 135, 0,
+			101, 58, 0, 0, 0, 0, 0, 0, 163, 21, 114, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 159, 21, 118, 2, 29, 29,
+			150, 0, 111, 58, 0, 0, 0, 0, 0, 0, 171, 21, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 175, 21, 123, 2,
+			33, 33, 140, 0, 97, 73, 0, 0, 0, 0, 32, 0, 177, 21, 134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 179, 21,
+			135, 2, 29, 33, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 23, 0, 0, 0, 0, 0, 0,
+			109, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 208, 21, 13, 2, 28, 28, 65, 0, 114, 0, 0, 0, 0, 0, 132, 0, 122, 2, 34, 3,
+			0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0, 214, 21, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 233, 21,
+			36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 237, 21, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			243, 21, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 247, 21, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0,
+			3, 0, 136, 22, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 127, 22, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0,
+			8, 0, 8, 0, 145, 22, 49, 4, 0, 81, 0, 2, 82, 0, 0, 0, 128, 0, 0, 0, 136, 0, 51, 3, 0, 0, 0, 6, 118, 0,
+			0, 0, 16, 0, 2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 32, 0, 241, 21, 112, 2, 31, 31, 135, 0,
+			73, 0, 0, 0, 0, 0, 0, 0, 239, 21, 113, 2, 31, 31, 65, 0, 101, 58, 0, 0, 0, 0, 32, 0, 235, 21, 114, 2, 30, 30,
+			135, 0, 97, 58, 0, 0, 0, 0, 32, 0, 231, 21, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0, 32, 0, 245, 21, 119, 2,
+			32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 32, 0, 249, 21, 123, 2, 33, 33, 140, 0, 97, 73, 0, 0, 0, 0, 32, 0, 251, 21,
+			134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 253, 21, 135, 2, 29, 33, 135, 0, 98, 35, 0, 0, 8, 0, 1, 2,
+			255, 21, 137, 4, 0, 71, 0, 2, 100, 35, 0, 0, 8, 0, 3, 2, 23, 22, 138, 4, 0, 72, 0, 2, 116, 46, 35, 0, 8, 0,
+			5, 0, 44, 22, 141, 4, 0, 142, 0, 2, 100, 46, 35, 0, 8, 0, 5, 2, 59, 22, 142, 4, 0, 142, 0, 2, 74, 35, 0, 0,
+			40, 2, 7, 2, 80, 22, 144, 4, 0, 143, 0, 2, 103, 35, 0, 0, 8, 0, 8, 2, 97, 22, 146, 4, 0, 0, 0, 2, 121, 0,
+			0, 0, 2, 0, 0, 0, 210, 21, 148, 2, 28, 28, 40, 0, 97, 35, 0, 0, 0, 0, 0, 0, 229, 21, 149, 2, 29, 29, 90, 0,
+			100, 50, 0, 0, 16, 0, 4, 0, 15, 3, 150, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 104, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 247, 19, 37, 2, 31, 31, 70, 0, 111, 0,
-			0, 0, 0, 0, 0, 0, 250, 19, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 252, 19, 40, 2, 33, 33, 65, 0,
-			116, 0, 0, 0, 8, 0, 3, 0, 26, 20, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 52, 6, 48, 4, 0, 71,
-			0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 113, 6, 49, 4, 0, 81, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 71, 20, 55, 3,
-			0, 0, 0, 7, 100, 0, 0, 0, 16, 0, 3, 0, 44, 20, 72, 5, 0, 47, 0, 5, 99, 0, 0, 0, 40, 0, 7, 0, 100, 6,
-			80, 4, 0, 79, 0, 2, 65, 0, 0, 0, 0, 0, 0, 0, 243, 19, 108, 2, 32, 32, 70, 0, 69, 0, 0, 0, 0, 0, 0, 0,
-			245, 19, 109, 2, 30, 30, 70, 0, 89, 0, 0, 0, 0, 0, 0, 0, 254, 19, 110, 2, 28, 28, 65, 0, 121, 0, 0, 0, 0, 0,
-			0, 0, 0, 20, 111, 2, 33, 33, 65, 0, 105, 58, 0, 0, 0, 0, 0, 0, 2, 20, 112, 2, 31, 31, 110, 0, 101, 58, 0, 0,
-			0, 0, 0, 0, 4, 20, 113, 2, 30, 30, 120, 0, 97, 58, 0, 0, 0, 0, 0, 0, 6, 20, 114, 2, 29, 29, 135, 0, 111, 58,
-			0, 0, 0, 0, 0, 0, 8, 20, 115, 2, 32, 32, 130, 0, 117, 58, 0, 0, 0, 0, 0, 0, 10, 20, 116, 2, 33, 33, 120, 0,
-			121, 58, 0, 0, 0, 0, 0, 0, 12, 20, 117, 2, 33, 33, 120, 0, 89, 58, 0, 0, 0, 0, 0, 0, 14, 20, 118, 2, 28, 28,
-			130, 0, 116, 115, 0, 0, 40, 0, 4, 0, 16, 20, 119, 4, 0, 0, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 31, 6, 120, 5,
-			0, 119, 0, 5, 116, 50, 0, 0, 8, 0, 3, 0, 39, 20, 121, 4, 0, 0, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 142, 6,
-			122, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 158, 22, 37, 2, 31, 31, 70, 0, 111, 0,
+			0, 0, 0, 0, 0, 0, 161, 22, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 163, 22, 40, 2, 33, 33, 65, 0,
+			116, 0, 0, 0, 8, 0, 3, 0, 193, 22, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 55, 6, 48, 4, 0, 71,
+			0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6, 49, 4, 0, 81, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 238, 22, 55, 3,
+			0, 0, 0, 7, 100, 0, 0, 0, 16, 0, 3, 0, 211, 22, 72, 5, 0, 47, 0, 5, 99, 0, 0, 0, 40, 0, 7, 0, 103, 6,
+			80, 4, 0, 79, 0, 2, 65, 0, 0, 0, 0, 0, 0, 0, 154, 22, 108, 2, 32, 32, 70, 0, 69, 0, 0, 0, 0, 0, 0, 0,
+			156, 22, 109, 2, 30, 30, 70, 0, 89, 0, 0, 0, 0, 0, 0, 0, 165, 22, 110, 2, 28, 28, 65, 0, 121, 0, 0, 0, 0, 0,
+			0, 0, 167, 22, 111, 2, 33, 33, 65, 0, 105, 58, 0, 0, 0, 0, 0, 0, 169, 22, 112, 2, 31, 31, 110, 0, 101, 58, 0, 0,
+			0, 0, 0, 0, 171, 22, 113, 2, 30, 30, 120, 0, 97, 58, 0, 0, 0, 0, 0, 0, 173, 22, 114, 2, 29, 29, 135, 0, 111, 58,
+			0, 0, 0, 0, 0, 0, 175, 22, 115, 2, 32, 32, 130, 0, 117, 58, 0, 0, 0, 0, 0, 0, 177, 22, 116, 2, 33, 33, 120, 0,
+			121, 58, 0, 0, 0, 0, 0, 0, 179, 22, 117, 2, 33, 33, 120, 0, 89, 58, 0, 0, 0, 0, 0, 0, 181, 22, 118, 2, 28, 28,
+			130, 0, 116, 115, 0, 0, 40, 0, 4, 0, 183, 22, 119, 4, 0, 0, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 34, 6, 120, 5,
+			0, 119, 0, 5, 116, 50, 0, 0, 8, 0, 3, 0, 206, 22, 121, 4, 0, 0, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 167, 6,
+			122, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0,
 			108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 90, 20, 13, 2, 28, 28, 60, 0, 114, 0, 0, 0, 192, 0, 132, 0, 161, 20, 34, 3,
-			0, 0, 40, 0, 97, 0, 0, 0, 0, 0, 0, 0, 92, 20, 35, 2, 29, 29, 60, 0, 101, 0, 0, 0, 0, 0, 0, 0, 98, 20,
-			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 114, 20, 37, 2, 31, 31, 50, 0, 111, 0, 0, 0, 0, 0, 0, 0,
-			121, 20, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0, 0, 0, 0, 0, 129, 20, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0,
-			3, 0, 189, 20, 47, 4, 0, 72, 0, 2, 108, 0, 0, 0, 2, 0, 0, 0, 45, 21, 55, 2, 28, 28, 150, 0, 119, 0, 0, 0,
-			0, 0, 0, 0, 133, 20, 58, 2, 33, 33, 90, 0, 100, 0, 0, 0, 16, 0, 3, 0, 215, 20, 72, 5, 0, 47, 0, 5, 100, 90,
-			59, 0, 48, 2, 7, 0, 169, 20, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 183, 20, 78, 4, 0, 77, 0, 2,
-			65, 0, 0, 0, 0, 0, 0, 0, 94, 20, 108, 2, 29, 29, 40, 0, 97, 58, 0, 0, 0, 0, 32, 0, 96, 20, 109, 2, 29, 29,
-			175, 0, 69, 0, 0, 0, 0, 0, 0, 0, 103, 20, 110, 2, 30, 30, 40, 0, 101, 58, 0, 0, 0, 0, 0, 0, 108, 20, 111, 2,
-			30, 30, 150, 0, 101, 101, 0, 0, 0, 0, 32, 0, 110, 20, 112, 2, 30, 30, 130, 0, 101, 65, 0, 0, 0, 0, 32, 0, 112, 20,
-			113, 2, 30, 29, 145, 0, 73, 0, 0, 0, 0, 0, 0, 0, 117, 20, 114, 2, 31, 31, 35, 0, 105, 58, 0, 0, 0, 0, 0, 0,
-			119, 20, 115, 2, 31, 31, 150, 0, 79, 0, 0, 0, 0, 0, 0, 0, 123, 20, 116, 2, 32, 32, 35, 0, 111, 58, 0, 0, 0, 0,
-			0, 0, 125, 20, 117, 2, 32, 32, 150, 0, 85, 0, 0, 0, 0, 0, 0, 0, 127, 20, 118, 2, 33, 33, 35, 0, 117, 58, 0, 0,
-			0, 0, 0, 0, 131, 20, 119, 2, 33, 33, 165, 0, 87, 0, 0, 0, 0, 0, 0, 0, 135, 20, 120, 2, 33, 33, 50, 0, 97, 105,
-			0, 0, 0, 0, 32, 0, 137, 20, 121, 2, 29, 31, 155, 0, 101, 105, 0, 0, 0, 0, 32, 0, 139, 20, 122, 2, 30, 31, 150, 0,
-			97, 117, 0, 0, 0, 0, 32, 0, 141, 20, 123, 2, 29, 33, 150, 0, 117, 111, 0, 0, 0, 0, 32, 0, 143, 20, 124, 2, 33, 29,
-			150, 0, 111, 105, 0, 0, 0, 0, 32, 0, 145, 20, 125, 2, 32, 31, 145, 0, 117, 105, 0, 0, 0, 0, 32, 0, 147, 20, 126, 2,
-			33, 31, 145, 0, 105, 101, 0, 0, 0, 0, 32, 0, 149, 20, 127, 2, 31, 30, 145, 0, 97, 85, 0, 0, 0, 0, 0, 0, 151, 20,
-			128, 2, 29, 33, 135, 0, 101, 85, 0, 0, 0, 0, 0, 0, 153, 20, 129, 2, 30, 33, 130, 0, 111, 85, 0, 0, 0, 0, 0, 0,
-			155, 20, 130, 2, 32, 33, 130, 0, 97, 73, 0, 0, 0, 0, 0, 0, 157, 20, 131, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0,
-			0, 0, 159, 20, 132, 2, 30, 31, 130, 0, 116, 115, 0, 0, 40, 0, 4, 0, 18, 6, 133, 4, 0, 0, 0, 2, 116, 59, 0, 0,
-			8, 2, 7, 0, 202, 20, 134, 4, 0, 135, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 242, 20, 135, 5, 0, 134, 0, 5, 110, 59,
-			0, 0, 0, 2, 0, 0, 13, 21, 136, 3, 0, 0, 0, 0, 108, 59, 0, 0, 0, 2, 5, 0, 41, 21, 137, 3, 0, 0, 40, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 0, 0, 108, 118, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
-			0, 0, 0, 0, 50, 21, 13, 2, 28, 28, 60, 0, 97, 0, 0, 0, 0, 0, 0, 0, 66, 21, 35, 2, 29, 29, 60, 0, 101, 0,
-			0, 0, 0, 0, 0, 0, 58, 21, 36, 2, 30, 30, 60, 0, 105, 0, 0, 0, 0, 0, 0, 0, 52, 21, 37, 2, 31, 31, 55, 0,
-			111, 0, 0, 0, 0, 0, 0, 0, 75, 21, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0, 0, 0, 0, 0, 79, 21, 40, 2, 33, 33,
-			55, 0, 116, 0, 0, 0, 8, 0, 68, 0, 124, 21, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 137, 21, 48, 4,
-			0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 153, 21, 49, 4, 0, 81, 0, 2, 82, 50, 0, 0, 128, 0, 0, 0, 99, 21,
-			52, 3, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 55, 21, 108, 2, 31, 31, 150, 0, 101, 58, 0, 0, 0, 0, 0, 0,
-			60, 21, 109, 2, 30, 30, 165, 0, 38, 0, 0, 0, 0, 0, 0, 0, 62, 21, 110, 2, 29, 29, 60, 0, 38, 58, 0, 0, 0, 0,
-			0, 0, 64, 21, 111, 2, 29, 29, 165, 0, 97, 35, 0, 0, 0, 0, 0, 0, 71, 21, 112, 2, 29, 29, 60, 0, 97, 58, 0, 0,
-			0, 0, 0, 0, 69, 21, 113, 2, 29, 29, 175, 0, 111, 58, 0, 0, 0, 0, 0, 0, 77, 21, 114, 2, 32, 32, 165, 0, 117, 58,
-			0, 0, 0, 0, 0, 0, 81, 21, 115, 2, 33, 33, 165, 0, 97, 105, 0, 0, 0, 0, 32, 0, 83, 21, 116, 2, 29, 31, 155, 0,
-			101, 105, 0, 0, 0, 0, 32, 0, 85, 21, 117, 2, 30, 31, 150, 0, 97, 117, 0, 0, 0, 0, 32, 0, 87, 21, 118, 2, 29, 33,
-			150, 0, 117, 111, 0, 0, 0, 0, 32, 0, 89, 21, 119, 2, 33, 29, 150, 0, 111, 105, 0, 0, 0, 0, 32, 0, 91, 21, 120, 2,
-			32, 31, 145, 0, 117, 105, 0, 0, 0, 0, 32, 0, 93, 21, 121, 2, 33, 31, 145, 0, 105, 101, 0, 0, 0, 0, 32, 0, 95, 21,
-			122, 2, 31, 30, 145, 0, 105, 117, 0, 0, 0, 0, 32, 0, 97, 21, 123, 2, 31, 33, 145, 0, 116, 115, 0, 0, 40, 0, 68, 0,
-			111, 21, 124, 4, 0, 0, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 173, 21, 125, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 0, 0, 110, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 183, 21,
-			13, 2, 28, 28, 62, 0, 114, 0, 0, 0, 128, 0, 0, 0, 138, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0,
-			214, 21, 35, 2, 29, 29, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 185, 21, 37, 2, 31, 31, 65, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 193, 21, 40, 2, 33, 33, 75, 0, 116, 0, 0, 0, 8, 0, 4, 0, 13, 22, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 33, 22, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 113, 6, 49, 4, 0, 0, 0, 2, 98, 0,
-			0, 0, 16, 0, 1, 0, 42, 22, 71, 5, 0, 48, 0, 5, 100, 0, 0, 0, 16, 0, 4, 0, 22, 22, 72, 5, 0, 47, 0, 5,
-			122, 0, 0, 0, 48, 0, 4, 0, 62, 22, 88, 7, 0, 89, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 53, 22, 89, 6, 0, 88,
-			0, 3, 81, 0, 0, 0, 16, 0, 8, 0, 242, 21, 100, 7, 0, 101, 0, 6, 73, 0, 0, 0, 0, 0, 0, 0, 187, 21, 108, 2,
-			31, 31, 65, 0, 121, 0, 0, 0, 0, 0, 0, 0, 189, 21, 109, 2, 33, 33, 90, 0, 56, 0, 0, 0, 0, 0, 0, 0, 191, 21,
-			110, 2, 33, 33, 70, 0, 69, 0, 0, 0, 0, 0, 0, 0, 195, 21, 111, 2, 30, 30, 70, 0, 69, 50, 0, 0, 0, 0, 0, 0,
-			197, 21, 112, 2, 30, 30, 70, 0, 79, 0, 0, 0, 0, 0, 0, 0, 200, 21, 113, 2, 32, 32, 70, 0, 79, 58, 0, 0, 0, 0,
-			0, 0, 202, 21, 114, 2, 32, 32, 105, 0, 97, 58, 0, 0, 0, 0, 0, 0, 204, 21, 115, 2, 29, 29, 105, 0, 65, 0, 0, 0,
-			0, 0, 0, 0, 216, 21, 116, 2, 29, 29, 75, 0, 65, 126, 0, 0, 0, 0, 0, 0, 176, 16, 117, 2, 29, 29, 95, 0, 79, 126,
-			0, 0, 0, 0, 0, 0, 221, 21, 118, 2, 32, 32, 95, 0, 101, 58, 0, 0, 0, 0, 0, 0, 223, 21, 119, 2, 30, 31, 95, 0,
-			101, 35, 0, 0, 0, 0, 0, 0, 225, 21, 120, 2, 30, 31, 95, 0, 89, 58, 0, 0, 0, 0, 0, 0, 228, 21, 121, 2, 28, 28,
-			110, 0, 111, 58, 0, 0, 0, 0, 0, 0, 230, 21, 122, 2, 32, 33, 75, 0, 69, 73, 0, 0, 0, 0, 0, 0, 232, 21, 123, 2,
-			29, 31, 105, 0, 87, 121, 0, 0, 0, 0, 0, 0, 234, 21, 124, 2, 28, 33, 110, 0, 86, 85, 0, 0, 0, 0, 0, 0, 236, 21,
-			125, 2, 29, 32, 110, 0, 101, 85, 0, 0, 0, 0, 0, 0, 238, 21, 126, 2, 30, 33, 110, 0, 121, 85, 0, 0, 0, 0, 0, 0,
-			240, 21, 127, 2, 33, 33, 110, 0, 33, 0, 0, 0, 0, 0, 0, 0, 10, 22, 128, 0, 10, 0, 12, 1, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 0, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 73, 22,
-			35, 2, 29, 29, 95, 0, 105, 0, 0, 0, 0, 0, 0, 0, 87, 22, 37, 2, 31, 31, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0,
-			92, 22, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0, 116, 22, 47, 4, 0, 72, 0, 2, 82, 0, 0, 0, 128, 0,
-			0, 0, 102, 22, 51, 3, 0, 0, 0, 6, 119, 0, 0, 0, 0, 0, 0, 0, 208, 22, 58, 3, 0, 0, 0, 7, 100, 0, 0, 0,
-			16, 0, 3, 0, 142, 22, 72, 5, 0, 47, 0, 5, 102, 0, 0, 0, 8, 0, 2, 0, 214, 22, 83, 6, 0, 84, 0, 3, 97, 35,
-			0, 0, 0, 0, 0, 0, 76, 22, 108, 2, 29, 29, 85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 80, 22, 109, 2, 30, 30, 90, 0,
-			69, 35, 0, 0, 0, 0, 0, 0, 85, 22, 110, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 90, 22, 111, 2, 32, 32,
-			90, 0, 121, 0, 0, 0, 0, 0, 0, 0, 94, 22, 112, 2, 31, 31, 90, 0, 69, 126, 0, 0, 0, 0, 0, 0, 98, 22, 113, 2,
-			30, 33, 125, 0, 79, 126, 0, 0, 0, 0, 0, 0, 100, 22, 114, 2, 32, 32, 125, 0, 116, 59, 0, 0, 8, 2, 7, 0, 129, 22,
-			115, 4, 0, 116, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 169, 22, 116, 5, 0, 115, 0, 5, 116, 115, 0, 0, 40, 0, 4, 0,
-			18, 6, 117, 4, 0, 118, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 196, 22, 118, 5, 0, 117, 0, 5, 116, 115, 59, 0, 40, 2,
-			7, 0, 202, 22, 119, 4, 0, 120, 0, 2, 100, 122, 59, 0, 48, 2, 6, 0, 81, 3, 120, 5, 0, 119, 0, 5, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 0, 0, 0, 0, 0, 0, 115, 107, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
-			238, 22, 35, 2, 29, 29, 60, 0, 101, 0, 0, 0, 0, 0, 0, 0, 234, 22, 36, 2, 30, 30, 60, 0, 105, 0, 0, 0, 0, 0,
-			0, 0, 226, 22, 37, 2, 31, 31, 50, 0, 111, 0, 0, 0, 0, 0, 0, 0, 246, 22, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0,
-			0, 0, 0, 0, 250, 22, 40, 2, 33, 33, 55, 0, 114, 45, 0, 0, 0, 0, 0, 0, 8, 23, 44, 2, 28, 28, 100, 0, 108, 45,
-			0, 0, 0, 0, 0, 0, 50, 23, 45, 2, 28, 28, 70, 0, 116, 0, 0, 0, 8, 0, 4, 0, 61, 23, 47, 4, 0, 72, 0, 2,
-			112, 0, 0, 0, 8, 0, 1, 0, 74, 23, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 4, 7, 49, 4, 0, 0,
-			0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 195, 6, 58, 3,
-			0, 0, 0, 7, 105, 58, 0, 0, 0, 0, 0, 0, 229, 22, 121, 2, 31, 31, 130, 0, 38, 0, 0, 0, 0, 0, 0, 0, 232, 22,
-			122, 2, 30, 30, 60, 0, 101, 58, 0, 0, 0, 0, 0, 0, 236, 22, 123, 2, 30, 30, 145, 0, 97, 58, 0, 0, 0, 0, 0, 0,
-			244, 22, 124, 2, 29, 29, 145, 0, 111, 58, 0, 0, 0, 0, 0, 0, 248, 22, 125, 2, 32, 32, 145, 0, 117, 58, 0, 0, 0, 0,
-			0, 0, 252, 22, 126, 2, 33, 33, 140, 0, 97, 85, 0, 0, 0, 0, 0, 0, 254, 22, 127, 2, 29, 33, 135, 0, 101, 85, 0, 0,
-			0, 0, 0, 0, 0, 23, 128, 2, 30, 33, 130, 0, 111, 85, 0, 0, 0, 0, 0, 0, 2, 23, 129, 2, 32, 33, 130, 0, 97, 73,
-			0, 0, 0, 0, 0, 0, 4, 23, 130, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0, 0, 0, 6, 23, 131, 2, 30, 31, 130, 0,
-			114, 58, 0, 0, 0, 0, 0, 0, 13, 23, 132, 2, 28, 28, 150, 0, 82, 94, 0, 0, 48, 0, 6, 0, 19, 23, 133, 7, 0, 0,
-			0, 6, 82, 94, 47, 0, 48, 0, 6, 0, 34, 23, 134, 7, 0, 0, 0, 6, 108, 58, 0, 0, 0, 0, 0, 0, 55, 23, 135, 2,
-			28, 28, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 30, 0, 0, 0, 0, 0, 0, 99, 115,
+			0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1, 23, 13, 2, 28, 28, 60, 0, 114, 0, 0, 0, 192, 0, 132, 0, 72, 23, 34, 3,
+			0, 0, 40, 0, 97, 0, 0, 0, 0, 0, 0, 0, 3, 23, 35, 2, 29, 29, 60, 0, 101, 0, 0, 0, 0, 0, 0, 0, 9, 23,
+			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 25, 23, 37, 2, 31, 31, 50, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			32, 23, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0, 0, 0, 0, 0, 40, 23, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0,
+			3, 0, 80, 23, 47, 4, 0, 72, 0, 2, 108, 0, 0, 0, 2, 0, 0, 0, 192, 23, 55, 2, 28, 28, 150, 0, 119, 0, 0, 0,
+			0, 0, 0, 0, 44, 23, 58, 2, 33, 33, 90, 0, 100, 0, 0, 0, 16, 0, 3, 0, 106, 23, 72, 5, 0, 47, 0, 5, 65, 0,
+			0, 0, 0, 0, 0, 0, 5, 23, 108, 2, 29, 29, 40, 0, 97, 58, 0, 0, 0, 0, 32, 0, 7, 23, 109, 2, 29, 29, 175, 0,
+			69, 0, 0, 0, 0, 0, 0, 0, 14, 23, 110, 2, 30, 30, 40, 0, 101, 58, 0, 0, 0, 0, 0, 0, 19, 23, 111, 2, 30, 30,
+			150, 0, 101, 101, 0, 0, 0, 0, 32, 0, 21, 23, 112, 2, 30, 30, 130, 0, 101, 65, 0, 0, 0, 0, 32, 0, 23, 23, 113, 2,
+			30, 29, 145, 0, 73, 0, 0, 0, 0, 0, 0, 0, 28, 23, 114, 2, 31, 31, 35, 0, 105, 58, 0, 0, 0, 0, 0, 0, 30, 23,
+			115, 2, 31, 31, 150, 0, 79, 0, 0, 0, 0, 0, 0, 0, 34, 23, 116, 2, 32, 32, 35, 0, 111, 58, 0, 0, 0, 0, 0, 0,
+			36, 23, 117, 2, 32, 32, 150, 0, 85, 0, 0, 0, 0, 0, 0, 0, 38, 23, 118, 2, 33, 33, 35, 0, 117, 58, 0, 0, 0, 0,
+			0, 0, 42, 23, 119, 2, 33, 33, 165, 0, 87, 0, 0, 0, 0, 0, 0, 0, 46, 23, 120, 2, 33, 33, 50, 0, 97, 105, 0, 0,
+			0, 0, 32, 0, 48, 23, 121, 2, 29, 31, 155, 0, 101, 105, 0, 0, 0, 0, 32, 0, 50, 23, 122, 2, 30, 31, 150, 0, 97, 117,
+			0, 0, 0, 0, 32, 0, 52, 23, 123, 2, 29, 33, 150, 0, 117, 111, 0, 0, 0, 0, 32, 0, 54, 23, 124, 2, 33, 29, 150, 0,
+			111, 105, 0, 0, 0, 0, 32, 0, 56, 23, 125, 2, 32, 31, 145, 0, 117, 105, 0, 0, 0, 0, 32, 0, 58, 23, 126, 2, 33, 31,
+			145, 0, 105, 101, 0, 0, 0, 0, 32, 0, 60, 23, 127, 2, 31, 30, 145, 0, 97, 85, 0, 0, 0, 0, 0, 0, 62, 23, 128, 2,
+			29, 33, 135, 0, 101, 85, 0, 0, 0, 0, 0, 0, 64, 23, 129, 2, 30, 33, 130, 0, 111, 85, 0, 0, 0, 0, 0, 0, 66, 23,
+			130, 2, 32, 33, 130, 0, 97, 73, 0, 0, 0, 0, 0, 0, 68, 23, 131, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0, 0, 0,
+			70, 23, 132, 2, 30, 31, 130, 0, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6, 133, 4, 0, 0, 0, 2, 116, 59, 0, 0, 8, 2,
+			7, 0, 93, 23, 134, 4, 0, 135, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 133, 23, 135, 5, 0, 134, 0, 5, 110, 59, 0, 0,
+			0, 2, 0, 0, 160, 23, 136, 3, 0, 0, 0, 0, 108, 59, 0, 0, 0, 2, 5, 0, 188, 23, 137, 3, 0, 0, 40, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 0, 0, 108, 118, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
+			0, 0, 197, 23, 13, 2, 28, 28, 60, 0, 97, 0, 0, 0, 0, 0, 0, 0, 213, 23, 35, 2, 29, 29, 60, 0, 101, 0, 0, 0,
+			0, 0, 0, 0, 205, 23, 36, 2, 30, 30, 60, 0, 105, 0, 0, 0, 0, 0, 0, 0, 199, 23, 37, 2, 31, 31, 55, 0, 111, 0,
+			0, 0, 0, 0, 0, 0, 222, 23, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0, 0, 0, 0, 0, 226, 23, 40, 2, 33, 33, 55, 0,
+			116, 0, 0, 0, 8, 0, 68, 0, 15, 24, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 28, 24, 48, 4, 0, 71,
+			0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 44, 24, 49, 4, 0, 81, 0, 2, 82, 50, 0, 0, 128, 0, 0, 0, 246, 23, 52, 3,
+			0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 202, 23, 108, 2, 31, 31, 150, 0, 101, 58, 0, 0, 0, 0, 0, 0, 207, 23,
+			109, 2, 30, 30, 165, 0, 38, 0, 0, 0, 0, 0, 0, 0, 209, 23, 110, 2, 29, 29, 60, 0, 38, 58, 0, 0, 0, 0, 0, 0,
+			211, 23, 111, 2, 29, 29, 165, 0, 97, 35, 0, 0, 0, 0, 0, 0, 218, 23, 112, 2, 29, 29, 60, 0, 97, 58, 0, 0, 0, 0,
+			0, 0, 216, 23, 113, 2, 29, 29, 175, 0, 111, 58, 0, 0, 0, 0, 0, 0, 224, 23, 114, 2, 32, 32, 165, 0, 117, 58, 0, 0,
+			0, 0, 0, 0, 228, 23, 115, 2, 33, 33, 165, 0, 97, 105, 0, 0, 0, 0, 32, 0, 230, 23, 116, 2, 29, 31, 155, 0, 101, 105,
+			0, 0, 0, 0, 32, 0, 232, 23, 117, 2, 30, 31, 150, 0, 97, 117, 0, 0, 0, 0, 32, 0, 234, 23, 118, 2, 29, 33, 150, 0,
+			117, 111, 0, 0, 0, 0, 32, 0, 236, 23, 119, 2, 33, 29, 150, 0, 111, 105, 0, 0, 0, 0, 32, 0, 238, 23, 120, 2, 32, 31,
+			145, 0, 117, 105, 0, 0, 0, 0, 32, 0, 240, 23, 121, 2, 33, 31, 145, 0, 105, 101, 0, 0, 0, 0, 32, 0, 242, 23, 122, 2,
+			31, 30, 145, 0, 105, 117, 0, 0, 0, 0, 32, 0, 244, 23, 123, 2, 31, 33, 145, 0, 116, 115, 0, 0, 40, 0, 68, 0, 2, 24,
+			124, 4, 0, 0, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 64, 24, 125, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 0, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 74, 24, 35, 2,
+			29, 29, 95, 0, 105, 0, 0, 0, 0, 0, 0, 0, 88, 24, 37, 2, 31, 31, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 93, 24,
+			40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0, 117, 24, 47, 4, 0, 72, 0, 2, 82, 0, 0, 0, 128, 0, 0, 0,
+			103, 24, 51, 3, 0, 0, 0, 6, 119, 0, 0, 0, 0, 0, 0, 0, 209, 24, 58, 3, 0, 0, 0, 7, 100, 0, 0, 0, 16, 0,
+			3, 0, 143, 24, 72, 5, 0, 47, 0, 5, 102, 0, 0, 0, 8, 0, 2, 0, 215, 24, 83, 6, 0, 84, 0, 3, 97, 35, 0, 0,
+			0, 0, 0, 0, 77, 24, 108, 2, 29, 29, 85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 81, 24, 109, 2, 30, 30, 90, 0, 69, 35,
+			0, 0, 0, 0, 0, 0, 86, 24, 110, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 91, 24, 111, 2, 32, 32, 90, 0,
+			121, 0, 0, 0, 0, 0, 0, 0, 95, 24, 112, 2, 31, 31, 90, 0, 69, 126, 0, 0, 0, 0, 0, 0, 99, 24, 113, 2, 30, 33,
+			125, 0, 79, 126, 0, 0, 0, 0, 0, 0, 101, 24, 114, 2, 32, 32, 125, 0, 116, 59, 0, 0, 8, 2, 7, 0, 130, 24, 115, 4,
+			0, 116, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 170, 24, 116, 5, 0, 115, 0, 5, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6,
+			117, 4, 0, 118, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 197, 24, 118, 5, 0, 117, 0, 5, 116, 115, 59, 0, 40, 2, 7, 0,
+			203, 24, 119, 4, 0, 120, 0, 2, 100, 122, 59, 0, 48, 2, 6, 0, 84, 3, 120, 5, 0, 119, 0, 5, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 34, 0, 0, 0, 0, 0, 0, 115, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 239, 24,
+			35, 2, 29, 29, 60, 0, 101, 0, 0, 0, 0, 0, 0, 0, 235, 24, 36, 2, 30, 30, 60, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+			227, 24, 37, 2, 31, 31, 50, 0, 111, 0, 0, 0, 0, 0, 0, 0, 247, 24, 39, 2, 32, 32, 60, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 251, 24, 40, 2, 33, 33, 55, 0, 114, 45, 0, 0, 0, 0, 0, 0, 9, 25, 44, 2, 28, 28, 100, 0, 108, 45, 0, 0,
+			0, 0, 0, 0, 51, 25, 45, 2, 28, 28, 70, 0, 116, 0, 0, 0, 8, 0, 4, 0, 62, 25, 47, 4, 0, 72, 0, 2, 112, 0,
+			0, 0, 8, 0, 1, 0, 75, 25, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 29, 7, 49, 4, 0, 0, 0, 2,
+			108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 220, 6, 58, 3, 0, 0,
+			0, 7, 105, 58, 0, 0, 0, 0, 0, 0, 230, 24, 121, 2, 31, 31, 130, 0, 38, 0, 0, 0, 0, 0, 0, 0, 233, 24, 122, 2,
+			30, 30, 60, 0, 101, 58, 0, 0, 0, 0, 0, 0, 237, 24, 123, 2, 30, 30, 145, 0, 97, 58, 0, 0, 0, 0, 0, 0, 245, 24,
+			124, 2, 29, 29, 145, 0, 111, 58, 0, 0, 0, 0, 0, 0, 249, 24, 125, 2, 32, 32, 145, 0, 117, 58, 0, 0, 0, 0, 0, 0,
+			253, 24, 126, 2, 33, 33, 140, 0, 97, 85, 0, 0, 0, 0, 0, 0, 255, 24, 127, 2, 29, 33, 135, 0, 101, 85, 0, 0, 0, 0,
+			0, 0, 1, 25, 128, 2, 30, 33, 130, 0, 111, 85, 0, 0, 0, 0, 0, 0, 3, 25, 129, 2, 32, 33, 130, 0, 97, 73, 0, 0,
+			0, 0, 0, 0, 5, 25, 130, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0, 0, 0, 7, 25, 131, 2, 30, 31, 130, 0, 114, 58,
+			0, 0, 0, 0, 0, 0, 14, 25, 132, 2, 28, 28, 150, 0, 82, 94, 0, 0, 48, 0, 6, 0, 20, 25, 133, 7, 0, 0, 0, 6,
+			82, 94, 47, 0, 48, 0, 6, 0, 35, 25, 134, 7, 0, 0, 0, 6, 108, 58, 0, 0, 0, 0, 0, 0, 56, 25, 135, 2, 28, 28,
+			125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 35, 0, 0, 0, 0, 0, 0, 99, 115, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0,
+			0, 0, 0, 0, 0, 0, 91, 25, 36, 2, 30, 30, 60, 0, 111, 0, 0, 0, 0, 0, 0, 0, 95, 25, 39, 2, 32, 32, 60, 0,
+			114, 45, 0, 0, 0, 0, 0, 0, 101, 25, 44, 2, 28, 28, 60, 0, 97, 58, 0, 0, 0, 0, 0, 0, 93, 25, 124, 2, 29, 29,
+			145, 0, 117, 58, 0, 0, 0, 0, 0, 0, 97, 25, 126, 2, 33, 33, 140, 0, 111, 85, 0, 0, 0, 0, 0, 0, 99, 25, 129, 2,
+			32, 33, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 35, 0, 0, 0, 0, 0, 0, 104, 114,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			101, 0, 0, 0, 0, 0, 0, 0, 90, 23, 36, 2, 30, 30, 60, 0, 111, 0, 0, 0, 0, 0, 0, 0, 94, 23, 39, 2, 32, 32,
-			60, 0, 114, 45, 0, 0, 0, 0, 0, 0, 100, 23, 44, 2, 28, 28, 60, 0, 97, 58, 0, 0, 0, 0, 0, 0, 92, 23, 124, 2,
-			29, 29, 145, 0, 117, 58, 0, 0, 0, 0, 0, 0, 96, 23, 126, 2, 33, 33, 140, 0, 111, 85, 0, 0, 0, 0, 0, 0, 98, 23,
-			129, 2, 32, 33, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 30, 0, 0, 0, 0, 0, 0,
-			104, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 198, 23, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 202, 23, 35, 2,
-			29, 29, 80, 0, 101, 0, 0, 0, 0, 0, 0, 0, 211, 23, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 213, 23,
-			37, 2, 31, 31, 60, 0, 111, 0, 0, 0, 0, 0, 0, 0, 220, 23, 39, 2, 32, 32, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0,
-			222, 23, 40, 2, 33, 33, 70, 0, 116, 0, 0, 0, 8, 0, 3, 0, 229, 23, 47, 4, 0, 72, 0, 2, 82, 0, 0, 0, 128, 0,
-			0, 0, 120, 0, 51, 3, 0, 0, 0, 6, 100, 0, 0, 0, 16, 0, 4, 0, 242, 23, 72, 5, 0, 47, 0, 5, 100, 90, 0, 0,
-			48, 0, 6, 0, 157, 23, 75, 5, 0, 76, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 118, 23, 76, 4, 0, 75, 0, 2, 100, 90,
-			59, 0, 48, 2, 6, 0, 178, 23, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 127, 23, 78, 4, 0, 77, 0, 2,
-			90, 0, 0, 0, 48, 0, 6, 0, 139, 23, 90, 7, 0, 91, 0, 6, 83, 0, 0, 0, 40, 0, 6, 0, 105, 23, 91, 6, 0, 90,
-			0, 3, 120, 0, 0, 0, 8, 0, 8, 0, 13, 24, 101, 6, 0, 100, 0, 3, 69, 0, 0, 0, 0, 0, 0, 0, 209, 23, 109, 2,
-			30, 30, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 207, 23, 122, 2, 29, 29, 70, 0, 97, 73, 0, 0, 0, 0, 0, 0, 227, 23,
-			130, 2, 29, 31, 125, 0, 64, 50, 0, 0, 0, 0, 0, 0, 200, 23, 136, 2, 28, 28, 70, 0, 65, 0, 0, 0, 0, 0, 0, 0,
-			205, 23, 137, 2, 29, 29, 80, 0, 73, 0, 0, 0, 0, 0, 0, 0, 217, 23, 138, 2, 31, 31, 60, 0, 85, 0, 0, 0, 0, 0,
-			0, 0, 225, 23, 139, 2, 33, 33, 70, 0, 114, 42, 0, 0, 2, 0, 16, 0, 23, 24, 140, 2, 28, 28, 25, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 32, 0, 0, 0, 0, 0, 0, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 90, 59, 0, 48, 2, 7, 0,
-			38, 24, 77, 5, 0, 78, 0, 5, 107, 94, 0, 0, 8, 0, 7, 0, 28, 24, 141, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 32, 0, 0, 0, 0, 0, 0, 115, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 8, 0, 3, 0, 79, 24,
-			47, 4, 0, 72, 0, 2, 100, 0, 0, 0, 16, 0, 4, 0, 92, 24, 72, 5, 0, 47, 0, 5, 100, 90, 0, 0, 48, 0, 6, 0,
-			134, 24, 75, 5, 0, 76, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 163, 24, 76, 4, 0, 75, 0, 2, 100, 90, 59, 0, 48, 2,
-			6, 0, 149, 24, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 169, 24, 78, 4, 0, 77, 0, 2, 90, 0, 0, 0,
-			48, 0, 6, 0, 178, 24, 90, 7, 0, 91, 0, 6, 83, 0, 0, 0, 40, 0, 6, 0, 196, 24, 91, 6, 0, 90, 0, 3, 38, 0,
-			0, 0, 0, 0, 0, 0, 61, 24, 122, 2, 29, 29, 70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 58, 24, 138, 2, 31, 31, 60, 0,
-			114, 42, 0, 0, 128, 0, 0, 0, 65, 24, 140, 3, 0, 0, 0, 6, 120, 35, 0, 0, 8, 0, 8, 0, 113, 24, 141, 6, 0, 0,
-			0, 3, 104, 35, 0, 0, 8, 0, 8, 0, 122, 24, 142, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 0, 0, 114, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 192, 0, 132, 0, 42, 25, 34, 3, 0, 0, 40, 0,
-			97, 0, 0, 0, 0, 0, 0, 0, 241, 25, 35, 2, 29, 29, 50, 0, 101, 0, 0, 0, 0, 0, 0, 0, 194, 25, 36, 2, 30, 30,
-			50, 0, 105, 0, 0, 0, 0, 0, 0, 0, 97, 25, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 176, 25, 39, 2,
-			32, 32, 50, 0, 117, 0, 0, 0, 0, 0, 0, 0, 185, 25, 40, 2, 33, 33, 40, 0, 116, 0, 0, 0, 8, 0, 3, 0, 116, 22,
-			47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 52, 6, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0,
-			113, 6, 49, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 5, 0, 240, 24, 55, 3, 0, 0, 20, 7, 108, 94, 0, 0, 0, 2,
-			5, 0, 244, 24, 61, 3, 0, 0, 40, 0, 100, 0, 0, 0, 16, 0, 3, 0, 142, 22, 72, 5, 0, 0, 0, 5, 100, 90, 59, 0,
-			48, 2, 7, 0, 50, 25, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 64, 25, 78, 4, 0, 77, 0, 2, 103, 0,
-			0, 0, 16, 0, 8, 2, 209, 24, 81, 5, 0, 49, 0, 5, 115, 0, 0, 0, 40, 0, 4, 0, 248, 24, 89, 6, 0, 0, 0, 3,
-			115, 59, 0, 0, 40, 0, 4, 0, 125, 5, 95, 6, 0, 0, 0, 3, 120, 0, 0, 0, 8, 0, 8, 0, 230, 24, 101, 6, 0, 0,
-			0, 3, 110, 95, 0, 0, 16, 0, 4, 0, 223, 1, 108, 8, 0, 0, 0, 4, 110, 35, 0, 0, 16, 2, 7, 0, 2, 25, 109, 8,
-			0, 0, 0, 4, 116, 115, 0, 0, 40, 0, 4, 0, 18, 6, 110, 4, 0, 0, 0, 2, 116, 59, 0, 0, 8, 2, 7, 0, 129, 22,
-			111, 4, 0, 0, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 169, 22, 112, 5, 0, 0, 0, 5, 109, 59, 0, 0, 16, 0, 1, 0,
-			70, 25, 113, 8, 0, 0, 0, 4, 73, 94, 0, 0, 2, 0, 16, 0, 90, 25, 114, 2, 31, 31, 35, 0, 121, 0, 0, 0, 0, 0,
-			0, 0, 109, 25, 115, 2, 31, 31, 50, 0, 73, 35, 0, 0, 0, 0, 0, 0, 102, 25, 116, 2, 31, 31, 40, 0, 73, 0, 0, 0,
-			0, 0, 0, 0, 111, 25, 117, 2, 31, 31, 40, 0, 73, 50, 0, 0, 0, 0, 0, 0, 120, 25, 118, 2, 31, 31, 40, 0, 73, 51,
-			0, 0, 0, 0, 0, 0, 126, 25, 119, 2, 31, 31, 40, 0, 106, 97, 0, 0, 0, 0, 0, 0, 211, 25, 120, 2, 31, 29, 90, 0,
-			69, 0, 0, 0, 0, 0, 0, 0, 137, 25, 121, 2, 30, 30, 50, 0, 69, 35, 0, 0, 0, 0, 0, 0, 139, 25, 122, 2, 30, 30,
-			50, 0, 69, 50, 0, 0, 0, 0, 0, 0, 148, 25, 123, 2, 30, 30, 40, 0, 69, 51, 0, 0, 0, 0, 0, 0, 165, 25, 124, 2,
-			30, 30, 40, 0, 69, 37, 0, 0, 0, 0, 0, 0, 174, 25, 125, 2, 0, 0, 90, 0, 86, 0, 0, 0, 2, 0, 0, 0, 4, 26,
-			126, 2, 29, 28, 40, 0, 79, 0, 0, 0, 0, 0, 0, 0, 179, 25, 127, 2, 32, 32, 40, 0, 56, 0, 0, 0, 0, 0, 0, 0,
-			191, 25, 128, 2, 32, 32, 50, 0, 117, 35, 0, 0, 0, 0, 0, 0, 187, 25, 129, 2, 33, 33, 40, 0, 117, 34, 0, 0, 0, 0,
-			0, 0, 189, 25, 130, 2, 33, 33, 75, 0, 106, 117, 0, 0, 0, 0, 0, 0, 209, 25, 131, 2, 33, 33, 95, 0, 106, 97, 35, 0,
-			0, 0, 0, 0, 219, 25, 132, 2, 31, 29, 90, 0, 86, 35, 0, 0, 2, 0, 0, 0, 226, 25, 133, 2, 29, 28, 40, 0, 65, 0,
-			0, 0, 0, 0, 0, 0, 239, 25, 134, 2, 29, 29, 50, 0, 89, 0, 0, 0, 2, 0, 0, 0, 237, 25, 135, 2, 33, 33, 70, 0,
-			97, 35, 0, 0, 0, 0, 0, 0, 16, 26, 136, 2, 29, 29, 50, 0, 82, 52, 0, 0, 0, 0, 0, 0, 18, 26, 137, 3, 0, 0,
-			0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 29, 0, 0, 0, 0, 0, 0, 98, 103, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 0, 0, 0, 0, 41, 26, 13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0, 0, 0, 138, 0, 34, 3, 0, 0, 0, 6,
-			97, 0, 0, 0, 0, 0, 0, 0, 46, 26, 35, 2, 29, 29, 75, 0, 101, 0, 0, 0, 0, 0, 0, 0, 36, 26, 36, 2, 30, 30,
-			70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 30, 26, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 59, 26, 39, 2,
-			32, 32, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0, 64, 26, 40, 2, 33, 33, 70, 0, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7,
-			55, 3, 0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 84, 1, 64, 3, 0, 0, 0, 7, 120, 0, 0, 0, 8, 0, 8, 0,
-			234, 5, 101, 6, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 14, 0, 0, 0, 0, 103, 35, 0, 0, 16, 0,
-			8, 2, 209, 24, 121, 5, 0, 0, 0, 5, 103, 59, 0, 0, 16, 2, 8, 0, 69, 26, 122, 5, 0, 49, 0, 5, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 0, 0, 0, 0, 0, 0, 105, 116, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 12, 9, 0, 0, 25, 0, 97, 0, 0, 0, 0, 0, 0, 0, 90, 26, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0,
-			0, 0, 98, 26, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 111, 26, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0,
-			0, 0, 0, 0, 120, 26, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 133, 26, 40, 2, 33, 33, 80, 0, 108, 94,
-			0, 0, 0, 0, 0, 0, 56, 1, 61, 3, 0, 0, 70, 7, 97, 47, 0, 0, 0, 0, 0, 0, 93, 26, 108, 2, 28, 28, 90, 0,
-			69, 0, 0, 0, 0, 0, 0, 0, 108, 26, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0, 130, 26, 110, 2, 32, 32,
-			85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 136, 26, 111, 2, 33, 33, 80, 0, 97, 85, 0, 0, 0, 0, 0, 0, 138, 26, 114, 2,
-			29, 32, 135, 0, 97, 73, 0, 0, 0, 0, 0, 0, 140, 26, 117, 2, 29, 31, 125, 0, 111, 73, 0, 0, 0, 0, 0, 0, 142, 26,
-			120, 2, 32, 31, 115, 0, 101, 47, 0, 0, 0, 0, 0, 0, 101, 26, 124, 2, 30, 30, 85, 0, 105, 35, 0, 0, 0, 0, 0, 0,
-			114, 26, 125, 2, 31, 31, 70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 117, 26, 126, 2, 31, 31, 75, 0, 111, 47, 0, 0, 0, 0,
-			0, 0, 123, 26, 127, 2, 32, 32, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 1, 0, 0,
+			64, 0, 0, 0, 0, 0, 0, 0, 199, 25, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 203, 25, 35, 2, 29, 29,
+			80, 0, 101, 0, 0, 0, 0, 0, 0, 0, 212, 25, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 214, 25, 37, 2,
+			31, 31, 60, 0, 111, 0, 0, 0, 0, 0, 0, 0, 221, 25, 39, 2, 32, 32, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0, 223, 25,
+			40, 2, 33, 33, 70, 0, 116, 0, 0, 0, 8, 0, 3, 0, 230, 25, 47, 4, 0, 72, 0, 2, 82, 0, 0, 0, 128, 0, 0, 0,
+			119, 0, 51, 3, 0, 0, 0, 6, 100, 0, 0, 0, 16, 0, 4, 0, 243, 25, 72, 5, 0, 47, 0, 5, 100, 90, 0, 0, 48, 0,
+			6, 0, 158, 25, 75, 5, 0, 76, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 119, 25, 76, 4, 0, 75, 0, 2, 100, 90, 59, 0,
+			48, 2, 6, 0, 179, 25, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 128, 25, 78, 4, 0, 77, 0, 2, 90, 0,
+			0, 0, 48, 0, 6, 0, 140, 25, 90, 7, 0, 91, 0, 6, 83, 0, 0, 0, 40, 0, 6, 0, 106, 25, 91, 6, 0, 90, 0, 3,
+			120, 0, 0, 0, 8, 0, 8, 0, 14, 26, 101, 6, 0, 100, 0, 3, 69, 0, 0, 0, 0, 0, 0, 0, 210, 25, 109, 2, 30, 30,
+			70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 208, 25, 122, 2, 29, 29, 70, 0, 97, 73, 0, 0, 0, 0, 0, 0, 228, 25, 130, 2,
+			29, 31, 125, 0, 64, 50, 0, 0, 0, 0, 0, 0, 201, 25, 136, 2, 28, 28, 70, 0, 65, 0, 0, 0, 0, 0, 0, 0, 206, 25,
+			137, 2, 29, 29, 80, 0, 73, 0, 0, 0, 0, 0, 0, 0, 218, 25, 138, 2, 31, 31, 60, 0, 85, 0, 0, 0, 0, 0, 0, 0,
+			226, 25, 139, 2, 33, 33, 70, 0, 114, 42, 0, 0, 2, 0, 16, 0, 24, 26, 140, 2, 28, 28, 25, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 37, 0, 0, 0, 0, 0, 0, 109, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 90, 59, 0, 48, 2, 7, 0, 39, 26,
+			77, 5, 0, 78, 0, 5, 107, 94, 0, 0, 8, 0, 7, 0, 29, 26, 141, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 14, 37, 0, 0, 0, 0, 0, 0, 115, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 8, 0, 3, 0, 80, 26, 47, 4,
+			0, 72, 0, 2, 100, 0, 0, 0, 16, 0, 4, 0, 93, 26, 72, 5, 0, 47, 0, 5, 100, 90, 0, 0, 48, 0, 6, 0, 135, 26,
+			75, 5, 0, 76, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 164, 26, 76, 4, 0, 75, 0, 2, 100, 90, 59, 0, 48, 2, 6, 0,
+			150, 26, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 170, 26, 78, 4, 0, 77, 0, 2, 90, 0, 0, 0, 48, 0,
+			6, 0, 179, 26, 90, 7, 0, 91, 0, 6, 83, 0, 0, 0, 40, 0, 6, 0, 197, 26, 91, 6, 0, 90, 0, 3, 38, 0, 0, 0,
+			0, 0, 0, 0, 62, 26, 122, 2, 29, 29, 70, 0, 73, 0, 0, 0, 0, 0, 0, 0, 59, 26, 138, 2, 31, 31, 60, 0, 114, 42,
+			0, 0, 128, 0, 0, 0, 66, 26, 140, 3, 0, 0, 0, 6, 120, 35, 0, 0, 8, 0, 8, 0, 114, 26, 141, 6, 0, 0, 0, 3,
+			104, 35, 0, 0, 8, 0, 8, 0, 123, 26, 142, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 49, 1, 0, 0, 0, 0, 0, 0, 114, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 192, 0, 132, 0, 43, 27, 34, 3, 0, 0, 40, 0, 97, 0,
+			0, 0, 0, 0, 0, 0, 242, 27, 35, 2, 29, 29, 50, 0, 101, 0, 0, 0, 0, 0, 0, 0, 195, 27, 36, 2, 30, 30, 50, 0,
+			105, 0, 0, 0, 0, 0, 0, 0, 98, 27, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 177, 27, 39, 2, 32, 32,
+			50, 0, 117, 0, 0, 0, 0, 0, 0, 0, 186, 27, 40, 2, 33, 33, 40, 0, 116, 0, 0, 0, 8, 0, 3, 0, 117, 24, 47, 4,
+			0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 55, 6, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6,
+			49, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 5, 0, 241, 26, 55, 3, 0, 0, 20, 7, 108, 94, 0, 0, 0, 2, 5, 0,
+			245, 26, 61, 3, 0, 0, 40, 0, 100, 0, 0, 0, 16, 0, 3, 0, 143, 24, 72, 5, 0, 0, 0, 5, 100, 90, 59, 0, 48, 2,
+			7, 0, 51, 27, 77, 5, 0, 78, 0, 5, 116, 83, 59, 0, 40, 2, 7, 0, 65, 27, 78, 4, 0, 77, 0, 2, 103, 0, 0, 0,
+			16, 0, 8, 2, 210, 26, 81, 5, 0, 49, 0, 5, 115, 0, 0, 0, 40, 0, 4, 0, 249, 26, 89, 6, 0, 0, 0, 3, 115, 59,
+			0, 0, 40, 0, 4, 0, 128, 5, 95, 6, 0, 0, 0, 3, 120, 0, 0, 0, 8, 0, 8, 0, 231, 26, 101, 6, 0, 0, 0, 3,
+			110, 95, 0, 0, 16, 0, 4, 0, 220, 1, 108, 8, 0, 0, 0, 4, 110, 35, 0, 0, 16, 2, 7, 0, 3, 27, 109, 8, 0, 0,
+			0, 4, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6, 110, 4, 0, 0, 0, 2, 116, 59, 0, 0, 8, 2, 7, 0, 130, 24, 111, 4,
+			0, 0, 0, 2, 100, 59, 0, 0, 16, 2, 4, 0, 170, 24, 112, 5, 0, 0, 0, 5, 109, 59, 0, 0, 16, 0, 1, 0, 71, 27,
+			113, 8, 0, 0, 0, 4, 73, 94, 0, 0, 2, 0, 16, 0, 91, 27, 114, 2, 31, 31, 35, 0, 121, 0, 0, 0, 0, 0, 0, 0,
+			110, 27, 115, 2, 31, 31, 50, 0, 73, 35, 0, 0, 0, 0, 0, 0, 103, 27, 116, 2, 31, 31, 40, 0, 73, 0, 0, 0, 0, 0,
+			0, 0, 112, 27, 117, 2, 31, 31, 40, 0, 73, 50, 0, 0, 0, 0, 0, 0, 121, 27, 118, 2, 31, 31, 40, 0, 73, 51, 0, 0,
+			0, 0, 0, 0, 127, 27, 119, 2, 31, 31, 40, 0, 106, 97, 0, 0, 0, 0, 0, 0, 212, 27, 120, 2, 31, 29, 90, 0, 69, 0,
+			0, 0, 0, 0, 0, 0, 138, 27, 121, 2, 30, 30, 50, 0, 69, 35, 0, 0, 0, 0, 0, 0, 140, 27, 122, 2, 30, 30, 50, 0,
+			69, 50, 0, 0, 0, 0, 0, 0, 149, 27, 123, 2, 30, 30, 40, 0, 69, 51, 0, 0, 0, 0, 0, 0, 166, 27, 124, 2, 30, 30,
+			40, 0, 69, 37, 0, 0, 0, 0, 0, 0, 175, 27, 125, 2, 0, 0, 90, 0, 86, 0, 0, 0, 2, 0, 0, 0, 5, 28, 126, 2,
+			29, 28, 40, 0, 79, 0, 0, 0, 0, 0, 0, 0, 180, 27, 127, 2, 32, 32, 40, 0, 56, 0, 0, 0, 0, 0, 0, 0, 192, 27,
+			128, 2, 32, 32, 50, 0, 117, 35, 0, 0, 0, 0, 0, 0, 188, 27, 129, 2, 33, 33, 40, 0, 117, 34, 0, 0, 0, 0, 0, 0,
+			190, 27, 130, 2, 33, 33, 75, 0, 106, 117, 0, 0, 0, 0, 0, 0, 210, 27, 131, 2, 33, 33, 95, 0, 106, 97, 35, 0, 0, 0,
+			0, 0, 220, 27, 132, 2, 31, 29, 90, 0, 86, 35, 0, 0, 2, 0, 0, 0, 227, 27, 133, 2, 29, 28, 40, 0, 65, 0, 0, 0,
+			0, 0, 0, 0, 240, 27, 134, 2, 29, 29, 50, 0, 89, 0, 0, 0, 2, 0, 0, 0, 238, 27, 135, 2, 33, 33, 70, 0, 97, 35,
+			0, 0, 0, 0, 0, 0, 17, 28, 136, 2, 29, 29, 50, 0, 82, 52, 0, 0, 0, 0, 0, 0, 19, 28, 137, 3, 0, 0, 0, 6,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 34, 0, 0, 0, 0, 0, 0, 98, 103, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+			0, 0, 0, 0, 42, 28, 13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0,
+			0, 0, 0, 0, 0, 0, 47, 28, 35, 2, 29, 29, 75, 0, 101, 0, 0, 0, 0, 0, 0, 0, 37, 28, 36, 2, 30, 30, 70, 0,
+			105, 0, 0, 0, 0, 0, 0, 0, 31, 28, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 60, 28, 39, 2, 32, 32,
+			70, 0, 117, 0, 0, 0, 0, 0, 0, 0, 65, 28, 40, 2, 33, 33, 70, 0, 108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3,
+			0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 82, 1, 64, 3, 0, 0, 0, 7, 120, 0, 0, 0, 8, 0, 8, 0, 237, 5,
+			101, 6, 0, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 14, 0, 0, 0, 0, 103, 35, 0, 0, 16, 0, 8, 2,
+			210, 26, 121, 5, 0, 0, 0, 5, 103, 59, 0, 0, 16, 2, 8, 0, 70, 28, 122, 5, 0, 49, 0, 5, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 3, 0, 0, 0, 0, 0, 0, 105, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 9, 0, 0, 25, 0, 97, 0, 0, 0, 0, 0, 0, 0, 91, 28, 35, 2, 29, 29, 80, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			99, 28, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 112, 28, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0,
+			0, 0, 121, 28, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 134, 28, 40, 2, 33, 33, 75, 0, 108, 94, 0, 0,
+			0, 0, 0, 0, 54, 1, 61, 3, 0, 0, 65, 7, 97, 47, 0, 0, 0, 0, 0, 0, 94, 28, 108, 2, 28, 28, 70, 0, 69, 0,
+			0, 0, 0, 0, 0, 0, 109, 28, 109, 2, 30, 30, 72, 0, 79, 0, 0, 0, 0, 0, 0, 0, 131, 28, 110, 2, 32, 32, 75, 0,
+			85, 0, 0, 0, 0, 0, 0, 0, 137, 28, 111, 2, 33, 33, 70, 0, 97, 85, 0, 0, 0, 0, 0, 0, 139, 28, 114, 2, 29, 32,
+			150, 0, 97, 73, 0, 0, 0, 0, 0, 0, 141, 28, 117, 2, 29, 31, 125, 0, 111, 73, 0, 0, 0, 0, 0, 0, 143, 28, 120, 2,
+			32, 31, 115, 0, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6, 123, 4, 0, 123, 0, 2, 101, 47, 0, 0, 0, 0, 0, 0, 102, 28,
+			124, 2, 30, 30, 70, 0, 105, 35, 0, 0, 0, 0, 0, 0, 115, 28, 125, 2, 31, 31, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0,
+			118, 28, 126, 2, 31, 31, 70, 0, 111, 47, 0, 0, 0, 0, 0, 0, 124, 28, 127, 2, 32, 32, 70, 0, 100, 122, 0, 0, 48, 0,
+			4, 0, 34, 6, 128, 5, 0, 88, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 1, 0, 0,
 			0, 0, 0, 0, 108, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 144, 26, 35, 2, 29, 29, 85, 0, 112, 0, 0, 0, 8, 0, 1, 0,
-			52, 6, 48, 4, 0, 71, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0,
-			0, 0, 146, 26, 108, 2, 30, 30, 85, 0, 73, 0, 0, 0, 0, 0, 0, 0, 148, 26, 109, 2, 31, 31, 75, 0, 79, 0, 0, 0,
-			0, 0, 0, 0, 151, 26, 110, 2, 32, 32, 80, 0, 85, 0, 0, 0, 0, 0, 0, 0, 153, 26, 111, 2, 33, 33, 80, 0, 97, 58,
-			0, 0, 0, 0, 0, 0, 155, 26, 112, 2, 29, 29, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 157, 26, 113, 2, 30, 30, 130, 0,
-			105, 58, 0, 0, 0, 0, 0, 0, 159, 26, 114, 2, 31, 31, 120, 0, 111, 58, 0, 0, 0, 0, 0, 0, 161, 26, 115, 2, 32, 32,
-			125, 0, 117, 58, 0, 0, 0, 0, 0, 0, 163, 26, 116, 2, 33, 33, 125, 0, 121, 0, 0, 0, 0, 0, 0, 0, 165, 26, 117, 2,
-			31, 31, 75, 0, 121, 58, 0, 0, 0, 0, 0, 0, 167, 26, 118, 2, 31, 31, 125, 0, 97, 85, 0, 0, 0, 0, 0, 0, 169, 26,
-			119, 2, 29, 33, 135, 0, 97, 73, 0, 0, 0, 0, 0, 0, 171, 26, 120, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0, 0, 0,
-			173, 26, 121, 2, 30, 31, 135, 0, 69, 85, 0, 0, 0, 0, 0, 0, 175, 26, 122, 2, 30, 33, 135, 0, 79, 73, 0, 0, 0, 0,
-			0, 0, 177, 26, 123, 2, 32, 31, 125, 0, 60, 104, 62, 0, 8, 0, 12, 0, 179, 26, 124, 6, 0, 0, 25, 3, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 145, 28, 35, 2, 29, 29, 85, 0, 112, 0, 0, 0, 8, 0, 1, 0,
+			55, 6, 48, 4, 0, 71, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0,
+			0, 0, 147, 28, 108, 2, 30, 30, 85, 0, 73, 0, 0, 0, 0, 0, 0, 0, 149, 28, 109, 2, 31, 31, 75, 0, 79, 0, 0, 0,
+			0, 0, 0, 0, 152, 28, 110, 2, 32, 32, 80, 0, 85, 0, 0, 0, 0, 0, 0, 0, 154, 28, 111, 2, 33, 33, 80, 0, 97, 58,
+			0, 0, 0, 0, 0, 0, 156, 28, 112, 2, 29, 29, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 158, 28, 113, 2, 30, 30, 130, 0,
+			105, 58, 0, 0, 0, 0, 0, 0, 160, 28, 114, 2, 31, 31, 120, 0, 111, 58, 0, 0, 0, 0, 0, 0, 162, 28, 115, 2, 32, 32,
+			125, 0, 117, 58, 0, 0, 0, 0, 0, 0, 164, 28, 116, 2, 33, 33, 125, 0, 121, 0, 0, 0, 0, 0, 0, 0, 166, 28, 117, 2,
+			31, 31, 75, 0, 121, 58, 0, 0, 0, 0, 0, 0, 168, 28, 118, 2, 31, 31, 125, 0, 97, 85, 0, 0, 0, 0, 0, 0, 170, 28,
+			119, 2, 29, 33, 135, 0, 97, 73, 0, 0, 0, 0, 0, 0, 172, 28, 120, 2, 29, 31, 135, 0, 101, 73, 0, 0, 0, 0, 0, 0,
+			174, 28, 121, 2, 30, 31, 135, 0, 69, 85, 0, 0, 0, 0, 0, 0, 176, 28, 122, 2, 30, 33, 135, 0, 79, 73, 0, 0, 0, 0,
+			0, 0, 178, 28, 123, 2, 32, 31, 125, 0, 60, 104, 62, 0, 8, 0, 12, 0, 180, 28, 124, 6, 0, 0, 25, 3, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 0, 0, 0, 0, 101, 115, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 16, 64, 132, 0,
-			62, 27, 34, 5, 0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0, 201, 26, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0,
-			0, 0, 203, 26, 36, 2, 30, 30, 95, 0, 105, 0, 0, 0, 0, 0, 0, 0, 207, 26, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0,
-			0, 0, 0, 0, 210, 26, 39, 2, 32, 32, 95, 0, 117, 0, 0, 0, 0, 0, 0, 0, 214, 26, 40, 2, 33, 33, 90, 0, 98, 0,
-			0, 0, 16, 0, 1, 0, 3, 27, 71, 5, 0, 0, 0, 0, 100, 0, 0, 0, 16, 0, 3, 0, 246, 26, 72, 5, 0, 0, 0, 0,
-			103, 0, 0, 0, 16, 0, 8, 0, 216, 26, 81, 5, 0, 49, 0, 5, 118, 35, 0, 0, 16, 0, 2, 0, 42, 27, 85, 7, 0, 83,
-			0, 6, 68, 0, 0, 0, 16, 0, 3, 0, 15, 27, 86, 7, 0, 87, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 24, 27, 89, 6,
-			0, 88, 0, 3, 69, 0, 0, 0, 0, 0, 0, 0, 205, 26, 109, 2, 30, 30, 95, 0, 79, 0, 0, 0, 0, 0, 0, 0, 212, 26,
-			110, 2, 32, 32, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 39, 0, 0, 0, 0, 0, 0,
+			63, 29, 34, 5, 0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0, 202, 28, 35, 2, 29, 29, 100, 0, 101, 0, 0, 0, 0, 0,
+			0, 0, 204, 28, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 208, 28, 37, 2, 31, 31, 95, 0, 111, 0, 0, 0,
+			0, 0, 0, 0, 211, 28, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0, 215, 28, 40, 2, 33, 33, 100, 0, 98, 0,
+			0, 0, 16, 0, 1, 0, 4, 29, 71, 5, 0, 0, 0, 0, 100, 0, 0, 0, 16, 0, 3, 0, 247, 28, 72, 5, 0, 0, 0, 0,
+			103, 0, 0, 0, 16, 0, 8, 0, 217, 28, 81, 5, 0, 49, 0, 5, 118, 35, 0, 0, 16, 0, 2, 0, 43, 29, 85, 7, 0, 83,
+			0, 6, 68, 0, 0, 0, 16, 0, 3, 0, 16, 29, 86, 7, 0, 87, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 25, 29, 89, 6,
+			0, 88, 0, 3, 69, 0, 0, 0, 0, 0, 0, 0, 206, 28, 109, 2, 30, 30, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 213, 28,
+			110, 2, 32, 32, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 44, 0, 0, 0, 0, 0, 0,
 			101, 115, 45, 108, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 39, 0, 0, 0, 0, 0, 0, 99, 97, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
-			0, 0, 0, 0, 0, 0, 69, 27, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 76, 27, 36, 2, 30, 30, 85, 0,
-			111, 0, 0, 0, 0, 0, 0, 0, 87, 27, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 92, 27, 40, 2, 33, 33,
-			80, 0, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0, 0, 0, 79, 27, 109, 2,
-			30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 84, 27, 110, 2, 32, 32, 85, 0, 85, 0, 0, 0, 2, 0, 0, 0, 90, 27,
-			111, 2, 33, 33, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0, 72, 27, 124, 2, 28, 28, 85, 0, 69, 50, 0, 0, 0, 0, 0, 0,
-			82, 27, 125, 2, 30, 30, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 3, 0, 0, 0, 0,
-			0, 0, 112, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 42, 0, 0, 0, 16, 0, 4, 0, 188, 27, 16, 5, 0, 0, 0, 6, 101, 0, 0, 0, 0, 0, 0, 0, 135, 27,
-			36, 2, 30, 30, 80, 0, 117, 0, 0, 0, 0, 0, 0, 0, 147, 27, 40, 2, 33, 33, 80, 0, 114, 45, 0, 0, 0, 0, 128, 0,
-			100, 7, 44, 3, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7, 120, 0, 0, 0, 128, 0,
-			0, 0, 167, 27, 101, 3, 0, 0, 0, 6, 69, 0, 0, 0, 0, 0, 0, 0, 133, 27, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0,
-			0, 0, 0, 0, 145, 27, 110, 2, 32, 32, 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 149, 27, 111, 2, 33, 33, 70, 0, 121, 0,
-			0, 0, 0, 0, 0, 0, 137, 27, 112, 2, 31, 31, 55, 0, 101, 85, 0, 0, 0, 0, 0, 0, 163, 27, 115, 2, 30, 33, 115, 0,
-			97, 73, 0, 0, 0, 0, 0, 0, 154, 27, 117, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 157, 27, 118, 2, 30, 31,
-			105, 0, 73, 0, 0, 0, 2, 0, 0, 0, 95, 27, 124, 2, 31, 31, 45, 0, 101, 126, 0, 0, 0, 0, 0, 0, 97, 27, 125, 2,
-			30, 30, 120, 0, 105, 126, 0, 0, 0, 0, 0, 0, 99, 27, 126, 2, 31, 31, 120, 0, 111, 126, 0, 0, 0, 0, 0, 0, 102, 27,
-			127, 2, 32, 32, 120, 0, 117, 126, 0, 0, 0, 0, 0, 0, 104, 27, 128, 2, 33, 33, 90, 0, 38, 126, 0, 0, 0, 0, 0, 0,
-			106, 27, 129, 2, 28, 28, 90, 0, 38, 85, 126, 0, 0, 0, 0, 0, 111, 27, 130, 2, 28, 33, 120, 0, 111, 73, 126, 0, 0, 0,
-			0, 0, 118, 27, 131, 2, 32, 31, 130, 0, 38, 0, 0, 0, 0, 0, 0, 0, 125, 27, 132, 2, 28, 28, 90, 0, 38, 47, 0, 0,
-			0, 0, 0, 0, 127, 27, 133, 2, 28, 28, 90, 0, 65, 0, 0, 0, 0, 0, 0, 0, 131, 27, 134, 2, 29, 29, 100, 0, 105, 47,
-			0, 0, 0, 0, 0, 0, 140, 27, 135, 2, 31, 31, 75, 0, 79, 73, 0, 0, 0, 0, 0, 0, 160, 27, 136, 2, 32, 31, 115, 0,
-			69, 85, 0, 0, 0, 0, 0, 0, 165, 27, 137, 2, 30, 33, 115, 0, 115, 35, 0, 0, 40, 0, 4, 0, 183, 27, 138, 6, 0, 88,
-			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 42, 0, 0, 0, 0, 0, 0, 112, 116, 45, 112,
-			116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
-			0, 0, 0, 0, 0, 0, 215, 27, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 233, 27, 36, 2, 30, 30, 80, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 240, 27, 37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 252, 27, 39, 2, 32, 32,
-			85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 255, 27, 40, 2, 33, 33, 80, 0, 82, 0, 0, 0, 0, 0, 128, 0, 72, 0, 51, 3,
-			0, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 195, 6, 58, 3, 0, 0, 0, 7, 120, 0, 0, 0, 128, 0, 0, 0, 7, 28,
-			101, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0, 0, 0, 230, 27, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0,
-			250, 27, 110, 2, 32, 32, 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 1, 28, 111, 2, 33, 33, 55, 0, 121, 0, 0, 0, 0, 0,
-			0, 0, 236, 27, 112, 2, 28, 28, 55, 0, 38, 126, 0, 0, 0, 0, 0, 0, 218, 27, 129, 2, 30, 28, 120, 0, 38, 85, 126, 0,
-			0, 0, 0, 0, 223, 27, 130, 2, 28, 33, 120, 0, 38, 0, 0, 0, 2, 0, 0, 0, 205, 27, 132, 2, 28, 28, 90, 0, 38, 47,
-			0, 0, 0, 0, 0, 0, 209, 27, 133, 2, 28, 28, 90, 0, 105, 47, 0, 0, 0, 0, 0, 0, 243, 27, 135, 2, 31, 31, 50, 0,
-			69, 85, 0, 0, 0, 0, 0, 0, 5, 28, 137, 2, 30, 33, 110, 0, 115, 35, 0, 0, 40, 0, 6, 0, 19, 28, 138, 6, 0, 90,
-			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 114, 111, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 0, 0, 0, 0, 53, 28, 13, 2, 28, 28, 85, 0, 114, 0, 0, 0, 128, 0, 0, 0, 81, 28, 34, 3, 0, 0, 0, 7,
-			97, 0, 0, 0, 0, 0, 0, 0, 51, 28, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 45, 28, 36, 2, 30, 30,
-			90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 55, 28, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 57, 28, 40, 2,
-			33, 33, 80, 0, 122, 59, 0, 0, 48, 0, 4, 0, 236, 28, 94, 7, 0, 95, 0, 6, 115, 59, 0, 0, 40, 0, 4, 0, 155, 28,
-			95, 6, 0, 94, 0, 3, 90, 59, 0, 0, 48, 0, 6, 0, 250, 28, 96, 7, 0, 97, 0, 6, 83, 59, 0, 0, 40, 0, 6, 0,
-			165, 28, 97, 6, 0, 96, 0, 3, 121, 0, 0, 0, 0, 0, 0, 0, 47, 28, 112, 2, 28, 28, 90, 0, 89, 0, 0, 0, 0, 0,
-			0, 0, 59, 28, 113, 2, 28, 28, 90, 0, 73, 94, 0, 0, 2, 0, 0, 0, 24, 28, 124, 2, 31, 31, 35, 0, 108, 59, 0, 0,
-			0, 0, 0, 0, 106, 28, 125, 3, 0, 0, 0, 7, 109, 59, 0, 0, 16, 0, 1, 0, 113, 28, 126, 8, 0, 0, 0, 4, 110, 59,
-			0, 0, 16, 0, 4, 0, 120, 28, 127, 8, 0, 0, 0, 4, 105, 47, 0, 0, 0, 0, 0, 0, 41, 28, 128, 2, 31, 31, 75, 0,
-			64, 73, 0, 0, 0, 0, 0, 0, 61, 28, 129, 2, 28, 31, 125, 0, 64, 85, 0, 0, 0, 0, 0, 0, 63, 28, 130, 2, 28, 33,
-			130, 0, 111, 85, 0, 0, 0, 0, 0, 0, 65, 28, 131, 2, 32, 33, 130, 0, 105, 73, 0, 0, 0, 0, 0, 0, 67, 28, 132, 2,
-			31, 31, 125, 0, 121, 73, 0, 0, 0, 0, 0, 0, 69, 28, 133, 2, 28, 31, 105, 0, 121, 85, 0, 0, 0, 0, 0, 0, 71, 28,
-			134, 2, 28, 33, 115, 0, 101, 97, 0, 0, 0, 0, 0, 0, 73, 28, 135, 2, 30, 29, 125, 0, 101, 111, 0, 0, 0, 0, 0, 0,
-			75, 28, 136, 2, 30, 32, 135, 0, 101, 91, 117, 0, 0, 0, 0, 0, 77, 28, 137, 2, 30, 33, 125, 0, 79, 97, 0, 0, 0, 0,
-			0, 0, 79, 28, 138, 2, 32, 29, 125, 0, 112, 59, 0, 0, 8, 0, 1, 0, 127, 28, 139, 4, 0, 71, 0, 2, 116, 59, 0, 0,
-			8, 0, 3, 0, 134, 28, 140, 4, 0, 72, 0, 2, 116, 115, 59, 0, 40, 0, 4, 0, 141, 28, 141, 4, 0, 0, 0, 2, 102, 59,
-			0, 0, 8, 0, 2, 0, 148, 28, 142, 6, 0, 84, 0, 3, 98, 59, 0, 0, 16, 0, 1, 0, 175, 28, 143, 5, 0, 139, 0, 5,
-			100, 59, 0, 0, 16, 0, 3, 0, 189, 28, 144, 5, 0, 140, 0, 5, 42, 59, 0, 0, 16, 0, 4, 0, 200, 28, 145, 5, 0, 0,
-			0, 2, 118, 59, 0, 0, 16, 0, 2, 0, 218, 28, 146, 7, 0, 142, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 10, 3, 0, 0, 0, 0, 0, 0, 101, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 128, 0, 0, 0, 152, 0, 34, 3, 0, 0, 30, 6,
-			97, 0, 0, 0, 0, 0, 0, 0, 12, 29, 35, 2, 29, 29, 70, 0, 101, 0, 0, 0, 0, 0, 0, 0, 21, 29, 36, 2, 30, 30,
-			70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 23, 29, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 26, 29, 39, 2,
-			32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 28, 29, 40, 2, 33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 4, 0, 30, 29,
-			47, 4, 0, 72, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 43, 29, 49, 4, 0, 81, 0, 2, 100, 0, 0, 0, 16, 0, 4, 0,
-			12, 3, 72, 5, 0, 47, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, 0,
-			0, 0, 103, 114, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 50, 0, 101, 0, 0, 0, 0, 0, 0, 0, 64, 29,
-			36, 2, 30, 30, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 68, 29, 39, 2, 32, 32, 70, 0, 102, 0, 0, 0, 8, 0, 1, 0,
-			80, 29, 83, 4, 0, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 66, 29, 109, 2, 30, 30, 75, 0, 79, 0, 0, 0, 0, 0,
-			0, 0, 70, 29, 110, 2, 32, 32, 75, 0, 121, 0, 0, 0, 0, 0, 0, 0, 62, 29, 112, 2, 31, 31, 80, 0, 69, 85, 0, 0,
-			0, 0, 0, 0, 72, 29, 124, 2, 30, 33, 115, 0, 79, 73, 0, 0, 0, 0, 0, 0, 74, 29, 125, 2, 32, 31, 115, 0, 79, 85,
-			0, 0, 0, 0, 0, 0, 76, 29, 126, 2, 32, 33, 115, 0, 121, 73, 0, 0, 0, 0, 0, 0, 78, 29, 127, 2, 31, 31, 115, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 0, 115, 118, 0, 0, 0, 0,
+			0, 0, 84, 0, 0, 0, 40, 0, 4, 0, 70, 29, 87, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 11, 44, 0, 0, 0, 0, 0, 0, 99, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 72, 29, 35, 2, 29, 29, 90, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 79, 29, 36, 2, 30, 30, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 90, 29, 39, 2, 32, 32,
+			85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 95, 29, 40, 2, 33, 33, 80, 0, 108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3,
+			0, 0, 0, 7, 69, 0, 0, 0, 0, 0, 0, 0, 82, 29, 109, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 87, 29,
+			110, 2, 32, 32, 85, 0, 85, 0, 0, 0, 2, 0, 0, 0, 93, 29, 111, 2, 33, 33, 80, 0, 97, 35, 0, 0, 2, 0, 0, 0,
+			75, 29, 124, 2, 28, 28, 85, 0, 69, 50, 0, 0, 0, 0, 0, 0, 85, 29, 125, 2, 30, 30, 90, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 44, 0, 0, 0, 0, 0, 0, 97, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 35, 0, 0, 8, 0, 3, 0, 98, 29,
+			25, 4, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 103, 29, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			108, 29, 110, 2, 32, 32, 85, 0, 101, 35, 0, 0, 0, 0, 0, 0, 105, 29, 124, 2, 30, 30, 100, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 3, 0, 0, 0, 0, 0, 0, 112, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 16, 0, 4, 0, 197, 29,
+			16, 5, 0, 0, 0, 6, 101, 0, 0, 0, 0, 0, 0, 0, 154, 29, 36, 2, 30, 30, 80, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			166, 29, 40, 2, 33, 33, 80, 0, 114, 45, 0, 0, 0, 0, 128, 0, 125, 7, 44, 3, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0,
+			0, 0, 91, 7, 55, 3, 0, 0, 0, 7, 120, 0, 0, 0, 8, 0, 12, 0, 187, 29, 101, 6, 0, 0, 0, 3, 69, 0, 0, 0,
+			0, 0, 0, 0, 152, 29, 109, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0, 164, 29, 110, 2, 32, 32, 85, 0, 85, 0,
+			0, 0, 0, 0, 0, 0, 168, 29, 111, 2, 33, 33, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 156, 29, 112, 2, 31, 31, 55, 0,
+			101, 85, 0, 0, 0, 0, 0, 0, 183, 29, 115, 2, 30, 33, 115, 0, 97, 73, 0, 0, 0, 0, 0, 0, 174, 29, 117, 2, 29, 31,
+			115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 177, 29, 118, 2, 30, 31, 105, 0, 73, 0, 0, 0, 2, 0, 0, 0, 110, 29, 124, 2,
+			31, 31, 45, 0, 101, 126, 0, 0, 0, 0, 0, 0, 112, 29, 125, 2, 30, 30, 120, 0, 105, 126, 0, 0, 0, 0, 0, 0, 114, 29,
+			126, 2, 31, 31, 120, 0, 111, 126, 0, 0, 0, 0, 0, 0, 117, 29, 127, 2, 32, 32, 120, 0, 117, 126, 0, 0, 0, 0, 0, 0,
+			119, 29, 128, 2, 33, 33, 90, 0, 38, 126, 0, 0, 0, 0, 0, 0, 121, 29, 129, 2, 28, 28, 90, 0, 38, 85, 126, 0, 0, 0,
+			0, 0, 130, 29, 130, 2, 28, 33, 120, 0, 111, 73, 126, 0, 0, 0, 0, 0, 137, 29, 131, 2, 32, 31, 130, 0, 38, 0, 0, 0,
+			0, 0, 0, 0, 144, 29, 132, 2, 28, 28, 90, 0, 38, 47, 0, 0, 0, 0, 0, 0, 146, 29, 133, 2, 28, 28, 90, 0, 65, 0,
+			0, 0, 0, 0, 0, 0, 150, 29, 134, 2, 29, 29, 100, 0, 105, 47, 0, 0, 0, 0, 0, 0, 159, 29, 135, 2, 31, 31, 75, 0,
+			79, 73, 0, 0, 0, 0, 0, 0, 180, 29, 136, 2, 32, 31, 115, 0, 69, 85, 0, 0, 0, 0, 0, 0, 185, 29, 137, 2, 30, 33,
+			115, 0, 115, 35, 0, 0, 40, 0, 4, 0, 192, 29, 138, 6, 0, 88, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 20, 48, 0, 0, 0, 0, 0, 0, 112, 116, 45, 112, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 224, 29, 35, 2, 29, 29, 90, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 242, 29, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 249, 29, 37, 2, 31, 31,
+			85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 5, 30, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 8, 30, 40, 2,
+			33, 33, 90, 0, 82, 0, 0, 0, 0, 0, 128, 0, 71, 0, 51, 3, 0, 0, 0, 7, 119, 0, 0, 0, 0, 0, 0, 0, 220, 6,
+			58, 3, 0, 0, 0, 7, 120, 0, 0, 0, 128, 0, 0, 0, 18, 30, 101, 3, 0, 0, 0, 7, 69, 0, 0, 0, 0, 0, 0, 0,
+			239, 29, 109, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 3, 30, 110, 2, 32, 32, 90, 0, 85, 0, 0, 0, 0, 0,
+			0, 0, 10, 30, 111, 2, 33, 33, 65, 0, 121, 0, 0, 0, 0, 0, 0, 0, 245, 29, 112, 2, 28, 28, 65, 0, 38, 126, 0, 0,
+			0, 0, 0, 0, 227, 29, 129, 2, 30, 28, 120, 0, 38, 85, 126, 0, 0, 0, 0, 0, 232, 29, 130, 2, 28, 33, 120, 0, 38, 0,
+			0, 0, 2, 0, 0, 0, 214, 29, 132, 2, 28, 28, 90, 0, 38, 47, 0, 0, 0, 0, 0, 0, 218, 29, 133, 2, 28, 28, 90, 0,
+			105, 47, 0, 0, 0, 0, 0, 0, 252, 29, 135, 2, 31, 31, 65, 0, 69, 85, 0, 0, 0, 0, 0, 0, 16, 30, 137, 2, 30, 33,
+			115, 0, 115, 35, 0, 0, 40, 0, 6, 0, 30, 30, 138, 6, 0, 90, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 36, 3, 0, 0, 0, 0, 0, 0, 114, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 30, 13, 2, 28, 28, 85, 0,
+			114, 0, 0, 0, 128, 0, 0, 0, 92, 30, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 62, 30, 35, 2, 29, 29,
+			90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 56, 30, 36, 2, 30, 30, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 66, 30, 39, 2,
+			32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 68, 30, 40, 2, 33, 33, 80, 0, 122, 59, 0, 0, 48, 0, 4, 0, 247, 30,
+			94, 7, 0, 95, 0, 6, 115, 59, 0, 0, 40, 0, 4, 0, 166, 30, 95, 6, 0, 94, 0, 3, 90, 59, 0, 0, 48, 0, 6, 0,
+			5, 31, 96, 7, 0, 97, 0, 6, 83, 59, 0, 0, 40, 0, 6, 0, 176, 30, 97, 6, 0, 96, 0, 3, 121, 0, 0, 0, 0, 0,
+			0, 0, 58, 30, 112, 2, 28, 28, 90, 0, 89, 0, 0, 0, 0, 0, 0, 0, 70, 30, 113, 2, 28, 28, 90, 0, 73, 94, 0, 0,
+			2, 0, 0, 0, 35, 30, 124, 2, 31, 31, 35, 0, 108, 59, 0, 0, 0, 0, 0, 0, 117, 30, 125, 3, 0, 0, 0, 7, 109, 59,
+			0, 0, 16, 0, 1, 0, 124, 30, 126, 8, 0, 0, 0, 4, 110, 59, 0, 0, 16, 0, 4, 0, 131, 30, 127, 8, 0, 0, 0, 4,
+			105, 47, 0, 0, 0, 0, 0, 0, 52, 30, 128, 2, 31, 31, 75, 0, 64, 73, 0, 0, 0, 0, 0, 0, 72, 30, 129, 2, 28, 31,
+			125, 0, 64, 85, 0, 0, 0, 0, 0, 0, 74, 30, 130, 2, 28, 33, 130, 0, 111, 85, 0, 0, 0, 0, 0, 0, 76, 30, 131, 2,
+			32, 33, 130, 0, 105, 73, 0, 0, 0, 0, 0, 0, 78, 30, 132, 2, 31, 31, 125, 0, 121, 73, 0, 0, 0, 0, 0, 0, 80, 30,
+			133, 2, 28, 31, 105, 0, 121, 85, 0, 0, 0, 0, 0, 0, 82, 30, 134, 2, 28, 33, 115, 0, 101, 97, 0, 0, 0, 0, 0, 0,
+			84, 30, 135, 2, 30, 29, 125, 0, 101, 111, 0, 0, 0, 0, 0, 0, 86, 30, 136, 2, 30, 32, 135, 0, 101, 91, 117, 0, 0, 0,
+			0, 0, 88, 30, 137, 2, 30, 33, 125, 0, 79, 97, 0, 0, 0, 0, 0, 0, 90, 30, 138, 2, 32, 29, 125, 0, 112, 59, 0, 0,
+			8, 0, 1, 0, 138, 30, 139, 4, 0, 71, 0, 2, 116, 59, 0, 0, 8, 0, 3, 0, 145, 30, 140, 4, 0, 72, 0, 2, 116, 115,
+			59, 0, 40, 0, 4, 0, 152, 30, 141, 4, 0, 0, 0, 2, 102, 59, 0, 0, 8, 0, 2, 0, 159, 30, 142, 6, 0, 84, 0, 3,
+			98, 59, 0, 0, 16, 0, 1, 0, 186, 30, 143, 5, 0, 139, 0, 5, 100, 59, 0, 0, 16, 0, 3, 0, 200, 30, 144, 5, 0, 140,
+			0, 5, 42, 59, 0, 0, 16, 0, 4, 0, 211, 30, 145, 5, 0, 0, 0, 2, 118, 59, 0, 0, 16, 0, 2, 0, 229, 30, 146, 7,
+			0, 142, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 3, 0, 0, 0, 0, 0, 0, 101, 108,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			114, 0, 0, 0, 128, 0, 0, 0, 150, 0, 34, 3, 0, 0, 30, 6, 97, 0, 0, 0, 0, 0, 0, 0, 23, 31, 35, 2, 29, 29,
+			70, 0, 101, 0, 0, 0, 0, 0, 0, 0, 32, 31, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 34, 31, 37, 2,
+			31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 37, 31, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 39, 31,
+			40, 2, 33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 4, 0, 41, 31, 47, 4, 0, 72, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0,
+			54, 31, 49, 4, 0, 81, 0, 2, 100, 0, 0, 0, 16, 0, 4, 0, 15, 3, 72, 5, 0, 47, 0, 5, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 3, 0, 0, 0, 0, 0, 0, 103, 114, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 9, 0, 0, 50, 0, 101, 0, 0, 0, 0, 0, 0, 0, 75, 31, 36, 2, 30, 30, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			79, 31, 39, 2, 32, 32, 70, 0, 102, 0, 0, 0, 8, 0, 1, 0, 91, 31, 83, 4, 0, 0, 0, 2, 69, 0, 0, 0, 0, 0,
+			0, 0, 77, 31, 109, 2, 30, 30, 75, 0, 79, 0, 0, 0, 0, 0, 0, 0, 81, 31, 110, 2, 32, 32, 75, 0, 121, 0, 0, 0,
+			0, 0, 0, 0, 73, 31, 112, 2, 31, 31, 80, 0, 69, 85, 0, 0, 0, 0, 0, 0, 83, 31, 124, 2, 30, 33, 115, 0, 79, 73,
+			0, 0, 0, 0, 0, 0, 85, 31, 125, 2, 32, 31, 115, 0, 79, 85, 0, 0, 0, 0, 0, 0, 87, 31, 126, 2, 32, 33, 115, 0,
+			121, 73, 0, 0, 0, 0, 0, 0, 89, 31, 127, 2, 31, 31, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 22, 1, 0, 0, 0, 0, 0, 0, 115, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 134, 31, 35, 2, 29, 29, 70, 0, 105, 58,
+			0, 0, 0, 0, 0, 0, 97, 31, 108, 2, 31, 31, 90, 0, 73, 0, 0, 0, 0, 0, 0, 0, 103, 31, 109, 2, 31, 31, 65, 0,
+			101, 58, 0, 0, 0, 0, 0, 0, 106, 31, 110, 2, 30, 30, 105, 0, 69, 0, 0, 0, 0, 0, 0, 0, 108, 31, 111, 2, 30, 30,
+			70, 0, 69, 45, 0, 0, 2, 0, 0, 0, 116, 31, 112, 2, 28, 28, 70, 0, 69, 58, 0, 0, 0, 0, 0, 0, 111, 31, 113, 2,
+			30, 28, 110, 0, 69, 51, 0, 0, 0, 0, 0, 0, 113, 31, 114, 2, 30, 30, 70, 0, 121, 58, 0, 0, 0, 0, 0, 0, 120, 31,
+			115, 2, 33, 33, 110, 0, 121, 0, 0, 0, 0, 0, 0, 0, 122, 31, 116, 2, 33, 33, 70, 0, 117, 45, 0, 0, 0, 0, 0, 0,
+			124, 31, 117, 2, 33, 33, 100, 0, 89, 58, 0, 0, 0, 0, 0, 0, 128, 31, 118, 2, 28, 28, 110, 0, 87, 0, 0, 0, 0, 0,
+			0, 0, 130, 31, 119, 2, 28, 28, 70, 0, 56, 0, 0, 0, 0, 0, 0, 0, 132, 31, 120, 2, 33, 33, 70, 0, 38, 0, 0, 0,
+			0, 0, 0, 0, 140, 31, 121, 2, 29, 29, 70, 0, 65, 58, 0, 0, 0, 0, 0, 0, 142, 31, 122, 2, 29, 29, 125, 0, 79, 0,
+			0, 0, 0, 0, 0, 0, 144, 31, 123, 2, 32, 32, 70, 0, 111, 58, 0, 0, 0, 0, 0, 0, 146, 31, 124, 2, 32, 32, 105, 0,
+			85, 0, 0, 0, 0, 0, 0, 0, 148, 31, 125, 2, 33, 33, 70, 0, 117, 58, 0, 0, 0, 0, 0, 0, 150, 31, 126, 2, 33, 33,
+			105, 0, 115, 120, 0, 0, 8, 0, 8, 0, 152, 31, 127, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 162, 31, 13, 2, 28, 28, 60, 0,
+			97, 0, 0, 0, 0, 0, 0, 0, 190, 31, 35, 2, 29, 29, 60, 0, 97, 35, 0, 0, 2, 0, 0, 0, 164, 31, 108, 2, 28, 29,
+			60, 0, 73, 0, 0, 0, 0, 0, 0, 0, 166, 31, 109, 2, 31, 31, 50, 0, 105, 58, 0, 0, 0, 0, 0, 0, 169, 31, 110, 2,
+			31, 31, 115, 0, 121, 0, 0, 0, 0, 0, 0, 0, 175, 31, 111, 2, 33, 33, 60, 0, 121, 58, 0, 0, 0, 0, 0, 0, 177, 31,
+			112, 2, 33, 33, 130, 0, 87, 0, 0, 0, 0, 0, 0, 0, 179, 31, 113, 2, 28, 28, 60, 0, 89, 58, 0, 0, 0, 0, 0, 0,
+			181, 31, 114, 2, 28, 28, 130, 0, 69, 0, 0, 0, 0, 0, 0, 0, 183, 31, 115, 2, 30, 30, 60, 0, 69, 58, 0, 0, 0, 0,
+			0, 0, 186, 31, 116, 2, 30, 30, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 188, 31, 117, 2, 30, 30, 125, 0, 97, 58, 0, 0,
+			0, 0, 0, 0, 192, 31, 118, 2, 29, 29, 135, 0, 65, 0, 0, 0, 0, 0, 0, 0, 194, 31, 119, 2, 29, 29, 65, 0, 65, 58,
+			0, 0, 0, 0, 0, 0, 196, 31, 120, 2, 29, 29, 140, 0, 79, 0, 0, 0, 0, 0, 0, 0, 198, 31, 121, 2, 32, 32, 60, 0,
+			111, 58, 0, 0, 0, 0, 0, 0, 200, 31, 122, 2, 32, 32, 135, 0, 85, 0, 0, 0, 0, 0, 0, 0, 202, 31, 123, 2, 33, 33,
+			60, 0, 117, 58, 0, 0, 0, 0, 0, 0, 204, 31, 124, 2, 33, 33, 120, 0, 117, 45, 0, 0, 0, 0, 0, 0, 206, 31, 125, 2,
+			33, 33, 60, 0, 117, 45, 58, 0, 0, 0, 0, 0, 210, 31, 126, 2, 33, 33, 130, 0, 65, 73, 0, 0, 0, 0, 0, 0, 215, 31,
+			127, 2, 29, 31, 135, 0, 97, 73, 0, 0, 0, 0, 0, 0, 218, 31, 128, 2, 29, 31, 135, 0, 79, 73, 0, 0, 0, 0, 0, 0,
+			221, 31, 129, 2, 32, 31, 135, 0, 117, 45, 73, 0, 0, 0, 0, 0, 224, 31, 130, 2, 33, 31, 135, 0, 89, 121, 0, 0, 0, 0,
+			0, 0, 230, 31, 131, 2, 28, 33, 135, 0, 97, 85, 0, 0, 0, 0, 0, 0, 232, 31, 132, 2, 29, 33, 135, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 0, 0, 105, 115, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 12, 9, 0, 0, 55, 0, 97, 0, 0, 0, 0, 0, 0, 0, 252, 31, 35, 2, 28, 28, 65, 0, 105, 0, 0, 0, 0, 0,
+			0, 0, 234, 31, 37, 2, 31, 31, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 6, 32, 40, 2, 33, 33, 65, 0, 98, 0, 0, 0,
+			8, 0, 1, 0, 133, 32, 71, 4, 0, 0, 0, 5, 100, 0, 0, 0, 8, 0, 4, 0, 143, 32, 72, 4, 0, 0, 0, 5, 103, 0,
+			0, 0, 8, 0, 8, 0, 156, 32, 81, 4, 0, 0, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 241, 3, 84, 7, 0, 83, 0, 6,
+			108, 35, 0, 0, 8, 0, 4, 0, 110, 32, 105, 6, 0, 0, 0, 3, 105, 58, 0, 0, 0, 0, 0, 0, 237, 31, 108, 2, 31, 31,
+			115, 0, 73, 0, 0, 0, 0, 0, 0, 0, 241, 31, 109, 2, 31, 31, 65, 0, 73, 58, 0, 0, 0, 0, 0, 0, 244, 31, 110, 2,
+			31, 31, 115, 0, 69, 0, 0, 0, 0, 0, 0, 0, 248, 31, 111, 2, 30, 30, 65, 0, 69, 58, 0, 0, 0, 0, 0, 0, 250, 31,
+			112, 2, 30, 30, 65, 0, 97, 58, 0, 0, 0, 0, 0, 0, 254, 31, 113, 2, 29, 29, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			1, 32, 114, 2, 32, 32, 65, 0, 79, 58, 0, 0, 0, 0, 0, 0, 3, 32, 115, 2, 32, 32, 115, 0, 117, 58, 0, 0, 0, 0,
+			0, 0, 8, 32, 116, 2, 33, 33, 115, 0, 121, 0, 0, 0, 0, 0, 0, 0, 11, 32, 117, 2, 28, 28, 65, 0, 121, 58, 0, 0,
+			0, 0, 0, 0, 13, 32, 118, 2, 31, 31, 115, 0, 87, 0, 0, 0, 0, 0, 0, 0, 16, 32, 119, 2, 28, 28, 65, 0, 87, 58,
+			0, 0, 0, 0, 0, 0, 18, 32, 120, 2, 28, 28, 65, 0, 97, 73, 0, 0, 0, 0, 0, 0, 21, 32, 121, 2, 29, 31, 85, 0,
+			97, 73, 58, 0, 0, 0, 0, 0, 23, 32, 122, 2, 29, 31, 115, 0, 101, 73, 0, 0, 0, 0, 0, 0, 26, 32, 123, 2, 30, 31,
+			85, 0, 101, 73, 58, 0, 0, 0, 0, 0, 28, 32, 124, 2, 30, 31, 115, 0, 97, 85, 0, 0, 0, 0, 0, 0, 31, 32, 125, 2,
+			29, 33, 85, 0, 97, 85, 58, 0, 0, 0, 0, 0, 33, 32, 126, 2, 29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 36, 32,
+			127, 2, 32, 33, 85, 0, 111, 85, 58, 0, 0, 0, 0, 0, 38, 32, 128, 2, 32, 33, 115, 0, 89, 121, 0, 0, 0, 0, 0, 0,
+			41, 32, 129, 2, 28, 31, 75, 0, 89, 121, 58, 0, 0, 0, 0, 0, 43, 32, 130, 2, 28, 31, 110, 0, 79, 73, 0, 0, 0, 0,
+			0, 0, 46, 32, 131, 2, 32, 31, 105, 0, 121, 73, 0, 0, 0, 0, 0, 0, 48, 32, 132, 2, 31, 31, 90, 0, 109, 35, 0, 0,
+			16, 0, 1, 0, 50, 32, 133, 8, 0, 0, 0, 6, 110, 35, 0, 0, 16, 0, 4, 0, 58, 32, 134, 8, 0, 0, 0, 6, 110, 94,
+			35, 0, 16, 2, 7, 0, 79, 32, 135, 8, 0, 0, 0, 6, 78, 35, 0, 0, 16, 0, 8, 0, 88, 32, 136, 8, 0, 0, 0, 6,
+			116, 108, 35, 0, 8, 0, 4, 0, 114, 32, 137, 4, 0, 0, 0, 2, 114, 35, 0, 0, 0, 0, 0, 0, 127, 32, 138, 3, 0, 0,
+			0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 167, 6, 139, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 0, 0, 118, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 249, 32, 13, 2, 28, 29, 90, 0,
+			64, 45, 0, 0, 0, 0, 0, 0, 58, 33, 14, 2, 32, 31, 75, 0, 49, 0, 0, 0, 0, 0, 0, 0, 169, 32, 17, 1, 34, 36,
+			0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 194, 32, 35, 2, 28, 28, 70, 0, 101, 0, 0, 0, 0, 0, 0, 0, 205, 32, 36, 2,
+			30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 207, 32, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 228, 32,
+			39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 235, 32, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 4, 0,
+			78, 33, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 116, 33, 48, 4, 0, 0, 0, 2, 110, 0, 0, 0, 16, 0,
+			4, 0, 126, 33, 50, 8, 0, 0, 37, 4, 108, 0, 0, 0, 0, 0, 0, 0, 72, 33, 55, 3, 0, 0, 0, 0, 116, 91, 0, 0,
+			8, 0, 3, 0, 136, 33, 74, 4, 0, 73, 2, 2, 99, 0, 0, 0, 8, 2, 7, 0, 106, 33, 80, 4, 0, 0, 1, 2, 50, 0,
+			0, 0, 0, 0, 0, 0, 172, 32, 108, 1, 8, 30, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 175, 32, 109, 1, 30, 60, 0, 0,
+			52, 0, 0, 0, 0, 0, 0, 0, 178, 32, 110, 1, 10, 55, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 181, 32, 111, 1, 28, 58,
+			0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 186, 32, 112, 1, 25, 60, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 191, 32, 113, 1,
+			35, 40, 0, 0, 97, 58, 0, 0, 0, 0, 0, 0, 196, 32, 114, 2, 29, 29, 90, 0, 69, 0, 0, 0, 0, 0, 0, 0, 203, 32,
+			115, 2, 30, 30, 70, 0, 79, 0, 0, 0, 0, 0, 0, 0, 221, 32, 116, 2, 32, 32, 90, 0, 107, 104, 0, 0, 8, 0, 8, 0,
+			62, 33, 117, 6, 0, 0, 0, 3, 121, 0, 0, 0, 0, 0, 0, 0, 242, 32, 118, 2, 33, 33, 90, 0, 64, 58, 0, 0, 0, 0,
+			0, 0, 2, 33, 119, 2, 28, 28, 70, 0, 97, 73, 0, 0, 0, 0, 0, 0, 4, 33, 120, 2, 29, 31, 70, 0, 97, 58, 73, 0,
+			0, 0, 0, 0, 6, 33, 121, 2, 29, 31, 100, 0, 64, 73, 0, 0, 0, 0, 0, 0, 8, 33, 122, 2, 28, 31, 100, 0, 64, 58,
+			73, 0, 0, 0, 0, 0, 10, 33, 123, 2, 28, 31, 100, 0, 101, 73, 0, 0, 0, 0, 0, 0, 12, 33, 124, 2, 30, 31, 70, 0,
+			69, 73, 0, 0, 0, 0, 0, 0, 14, 33, 125, 2, 30, 31, 70, 0, 79, 73, 0, 0, 0, 0, 0, 0, 16, 33, 126, 2, 32, 31,
+			100, 0, 111, 73, 0, 0, 0, 0, 0, 0, 18, 33, 127, 2, 32, 31, 100, 0, 117, 73, 0, 0, 0, 0, 0, 0, 20, 33, 128, 2,
+			33, 31, 100, 0, 121, 73, 0, 0, 0, 0, 0, 0, 22, 33, 129, 2, 33, 31, 100, 0, 97, 85, 0, 0, 0, 0, 0, 0, 24, 33,
+			130, 2, 29, 33, 75, 0, 97, 58, 85, 0, 0, 0, 0, 0, 26, 33, 131, 2, 29, 33, 75, 0, 101, 85, 0, 0, 0, 0, 0, 0,
+			28, 33, 132, 2, 30, 33, 75, 0, 69, 85, 0, 0, 0, 0, 0, 0, 30, 33, 133, 2, 30, 33, 75, 0, 105, 85, 0, 0, 0, 0,
+			0, 0, 32, 33, 134, 2, 31, 33, 70, 0, 64, 85, 0, 0, 0, 0, 0, 0, 34, 33, 135, 2, 28, 33, 70, 0, 64, 58, 85, 0,
+			0, 0, 0, 0, 36, 33, 136, 2, 28, 33, 70, 0, 105, 64, 0, 0, 0, 0, 0, 0, 38, 33, 137, 2, 31, 28, 70, 0, 121, 64,
+			0, 0, 0, 0, 0, 0, 40, 33, 138, 2, 31, 28, 70, 0, 117, 64, 0, 0, 0, 0, 0, 0, 42, 33, 139, 2, 33, 28, 50, 0,
+			111, 35, 0, 0, 0, 0, 0, 0, 44, 33, 140, 2, 32, 32, 70, 0, 79, 35, 0, 0, 0, 0, 0, 0, 46, 33, 141, 2, 32, 32,
+			70, 0, 111, 64, 0, 0, 0, 0, 0, 0, 48, 33, 142, 2, 32, 29, 70, 0, 111, 38, 0, 0, 0, 0, 0, 0, 50, 33, 143, 2,
+			32, 32, 70, 0, 105, 69, 0, 0, 0, 0, 0, 0, 52, 33, 144, 2, 31, 30, 70, 0, 79, 105, 0, 0, 0, 0, 0, 0, 54, 33,
+			145, 2, 32, 31, 70, 0, 79, 45, 0, 0, 0, 0, 0, 0, 56, 33, 146, 2, 32, 31, 75, 0, 117, 45, 0, 0, 0, 0, 0, 0,
+			60, 33, 147, 2, 33, 33, 75, 0, 99, 114, 0, 0, 40, 0, 6, 0, 88, 33, 148, 4, 0, 0, 0, 2, 100, 95, 0, 0, 16, 0,
+			4, 0, 94, 33, 149, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 56, 0, 0,
+			0, 0, 0, 0, 118, 105, 45, 104, 117, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 185, 33, 13, 2, 28, 29, 75, 0, 49, 0, 0, 0, 0, 0, 0, 0,
+			149, 33, 17, 1, 10, 60, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 176, 33, 37, 2, 31, 31, 75, 0, 110, 0, 0, 0, 16, 0,
+			4, 0, 199, 33, 50, 8, 0, 0, 37, 4, 50, 0, 0, 0, 0, 0, 0, 0, 152, 33, 108, 1, 20, 25, 0, 0, 51, 0, 0, 0,
+			0, 0, 0, 0, 157, 33, 109, 1, 2, 10, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 160, 33, 110, 1, 5, 10, 0, 0, 53, 0,
+			0, 0, 0, 0, 0, 0, 163, 33, 111, 1, 10, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 168, 33, 112, 1, 10, 25, 0, 0,
+			55, 0, 0, 0, 0, 0, 0, 0, 173, 33, 113, 1, 5, 40, 0, 0, 97, 58, 0, 0, 0, 0, 0, 0, 182, 33, 114, 2, 29, 29,
+			75, 0, 69, 0, 0, 0, 0, 0, 0, 0, 179, 33, 115, 2, 30, 30, 75, 0, 79, 0, 0, 0, 0, 0, 0, 0, 191, 33, 116, 2,
+			32, 32, 75, 0, 64, 58, 0, 0, 0, 0, 0, 0, 188, 33, 119, 2, 28, 28, 75, 0, 64, 58, 73, 0, 0, 0, 0, 0, 204, 33,
+			123, 2, 28, 31, 100, 0, 79, 105, 0, 0, 0, 0, 0, 0, 195, 33, 145, 2, 32, 31, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 18, 56, 0, 0, 0, 0, 0, 0, 118, 105, 45, 115, 103, 110, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 243, 33, 13, 2,
+			28, 29, 75, 0, 49, 0, 0, 0, 0, 0, 0, 0, 208, 33, 17, 1, 20, 35, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 231, 33,
+			37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 5, 34, 39, 2, 32, 32, 90, 0, 50, 0, 0, 0, 0, 0, 0, 0,
+			211, 33, 108, 1, 10, 20, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 214, 33, 109, 1, 45, 80, 0, 0, 52, 0, 0, 0, 0, 0,
+			0, 0, 217, 33, 110, 1, 45, 50, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 222, 33, 111, 1, 30, 75, 0, 0, 54, 0, 0, 0,
+			0, 0, 0, 0, 225, 33, 112, 1, 20, 25, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 228, 33, 113, 1, 40, 42, 0, 0, 97, 58,
+			0, 0, 0, 0, 0, 0, 239, 33, 114, 2, 29, 29, 75, 0, 69, 0, 0, 0, 0, 0, 0, 0, 235, 33, 115, 2, 30, 30, 75, 0,
+			79, 0, 0, 0, 0, 0, 0, 0, 249, 33, 116, 2, 32, 32, 40, 0, 121, 0, 0, 0, 0, 0, 0, 0, 1, 34, 118, 2, 33, 33,
+			90, 0, 64, 58, 0, 0, 0, 0, 0, 0, 246, 33, 119, 2, 28, 28, 75, 0, 64, 58, 73, 0, 0, 0, 0, 0, 9, 34, 123, 2,
+			28, 31, 100, 0, 79, 105, 0, 0, 0, 0, 0, 0, 253, 33, 145, 2, 32, 31, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 0, 0, 122, 104, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 13, 34, 17, 1, 50, 50,
+			0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 115, 34, 35, 2, 28, 28, 75, 0, 101, 0, 0, 0, 0, 0, 0, 0, 121, 34, 36, 2,
+			30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0, 129, 34, 37, 2, 31, 31, 95, 0, 111, 0, 0, 0, 0, 0, 0, 0, 146, 34,
+			39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 156, 34, 40, 2, 33, 33, 85, 0, 116, 0, 0, 0, 8, 0, 4, 0,
+			92, 34, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 79, 34, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0,
+			8, 0, 53, 34, 49, 4, 0, 0, 0, 2, 99, 0, 0, 0, 40, 0, 6, 0, 44, 34, 80, 4, 0, 0, 0, 2, 122, 0, 0, 0,
+			40, 0, 4, 0, 34, 34, 88, 4, 0, 0, 0, 2, 50, 0, 0, 0, 0, 0, 0, 0, 16, 34, 108, 1, 30, 50, 0, 0, 51, 0,
+			0, 0, 0, 0, 0, 0, 19, 34, 109, 1, 30, 30, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 22, 34, 110, 1, 10, 20, 0, 0,
+			53, 0, 0, 0, 0, 0, 0, 0, 25, 34, 111, 1, 10, 30, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 28, 34, 112, 1, 20, 20,
+			0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 31, 34, 113, 1, 30, 50, 0, 0, 97, 97, 0, 0, 0, 0, 0, 0, 105, 34, 114, 2,
+			29, 29, 115, 0, 97, 97, 105, 0, 0, 0, 0, 0, 107, 34, 115, 2, 29, 31, 135, 0, 97, 97, 117, 0, 0, 0, 0, 0, 109, 34,
+			116, 2, 29, 33, 130, 0, 97, 110, 103, 0, 0, 0, 0, 0, 111, 34, 117, 2, 29, 29, 110, 0, 97, 97, 110, 103, 0, 0, 0, 0,
+			113, 34, 118, 2, 29, 29, 135, 0, 97, 105, 0, 0, 0, 0, 0, 0, 117, 34, 119, 2, 28, 31, 100, 0, 97, 117, 0, 0, 0, 0,
+			0, 0, 119, 34, 120, 2, 29, 33, 100, 0, 101, 105, 0, 0, 0, 0, 0, 0, 123, 34, 121, 2, 30, 31, 110, 0, 101, 110, 103, 0,
+			0, 0, 0, 0, 125, 34, 122, 2, 30, 30, 110, 0, 101, 117, 0, 0, 0, 0, 0, 0, 127, 34, 123, 2, 30, 33, 130, 0, 105, 110,
+			103, 0, 0, 0, 0, 0, 138, 34, 124, 2, 31, 31, 110, 0, 105, 117, 0, 0, 0, 0, 0, 0, 140, 34, 125, 2, 31, 33, 100, 0,
+			110, 103, 0, 0, 0, 0, 0, 0, 142, 34, 126, 2, 0, 0, 175, 0, 111, 101, 110, 103, 0, 0, 0, 0, 148, 34, 127, 2, 32, 30,
+			140, 0, 111, 105, 0, 0, 0, 0, 0, 0, 150, 34, 128, 2, 32, 31, 100, 0, 111, 117, 0, 0, 0, 0, 0, 0, 152, 34, 129, 2,
+			32, 33, 100, 0, 111, 110, 103, 0, 0, 0, 0, 0, 154, 34, 130, 2, 32, 32, 110, 0, 117, 110, 103, 0, 0, 0, 0, 0, 162, 34,
+			131, 2, 33, 33, 100, 0, 117, 105, 0, 0, 0, 0, 0, 0, 164, 34, 132, 2, 33, 31, 110, 0, 111, 101, 0, 0, 0, 0, 0, 0,
+			166, 34, 133, 2, 28, 28, 115, 0, 101, 111, 0, 0, 0, 0, 0, 0, 168, 34, 134, 2, 28, 28, 85, 0, 101, 111, 105, 0, 0, 0,
+			0, 0, 170, 34, 135, 2, 28, 31, 110, 0, 121, 117, 0, 0, 0, 0, 0, 0, 172, 34, 136, 2, 33, 33, 110, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 0, 122, 104, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
+			188, 35, 13, 2, 28, 28, 100, 0, 97, 0, 0, 0, 0, 0, 0, 0, 174, 35, 35, 2, 29, 29, 125, 0, 105, 0, 0, 0, 0, 0,
+			0, 0, 199, 35, 37, 2, 31, 31, 125, 0, 111, 0, 0, 0, 0, 0, 0, 0, 221, 35, 39, 2, 32, 32, 125, 0, 117, 0, 0, 0,
+			0, 0, 0, 0, 232, 35, 40, 2, 33, 33, 125, 0, 78, 45, 0, 0, 0, 0, 0, 0, 172, 35, 43, 2, 68, 68, 125, 0, 116, 0,
+			0, 0, 8, 0, 4, 0, 53, 35, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 27, 35, 48, 4, 0, 0, 0, 2,
+			107, 0, 0, 0, 8, 0, 10, 0, 73, 35, 49, 4, 0, 0, 0, 2, 110, 0, 0, 0, 16, 0, 4, 0, 204, 34, 50, 8, 0, 0,
+			0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 250, 34, 55, 3, 0, 0, 0, 2, 106, 0, 0, 0, 0, 2, 0, 0, 1, 35, 57, 3,
+			0, 0, 0, 1, 78, 0, 0, 0, 16, 0, 8, 0, 226, 34, 68, 8, 0, 0, 0, 7, 116, 83, 59, 0, 40, 2, 7, 0, 93, 35,
+			78, 4, 0, 0, 0, 2, 102, 0, 0, 0, 8, 0, 2, 0, 47, 35, 83, 6, 0, 0, 0, 2, 115, 46, 0, 0, 40, 0, 6, 0,
+			119, 35, 93, 6, 0, 0, 0, 3, 83, 59, 0, 0, 40, 0, 6, 0, 111, 35, 97, 6, 0, 0, 0, 2, 49, 49, 0, 0, 0, 0,
+			0, 0, 174, 34, 108, 1, 9, 12, 0, 0, 50, 49, 0, 0, 0, 0, 0, 0, 177, 34, 109, 1, 10, 20, 0, 0, 50, 49, 52, 0,
+			0, 0, 0, 0, 180, 34, 110, 1, 18, 42, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 183, 34, 111, 1, 20, 22, 0, 0, 51, 51,
+			0, 0, 0, 0, 0, 0, 186, 34, 112, 1, 30, 32, 0, 0, 51, 53, 0, 0, 0, 0, 0, 0, 189, 34, 113, 1, 30, 50, 0, 0,
+			52, 52, 0, 0, 0, 0, 0, 0, 192, 34, 114, 1, 38, 41, 0, 0, 53, 49, 0, 0, 0, 0, 0, 0, 195, 34, 115, 1, 10, 50,
+			0, 0, 53, 51, 0, 0, 0, 0, 0, 0, 198, 34, 116, 1, 30, 50, 0, 0, 53, 53, 0, 0, 0, 0, 0, 0, 201, 34, 117, 1,
+			50, 55, 0, 0, 112, 104, 0, 0, 8, 0, 1, 0, 37, 35, 118, 4, 0, 0, 0, 2, 116, 104, 0, 0, 8, 0, 4, 0, 63, 35,
+			119, 4, 0, 0, 0, 2, 107, 104, 0, 0, 8, 0, 10, 0, 83, 35, 120, 4, 0, 0, 0, 2, 116, 83, 59, 104, 40, 2, 7, 0,
+			102, 35, 121, 4, 0, 0, 0, 2, 116, 115, 0, 0, 40, 0, 4, 0, 132, 35, 122, 4, 0, 0, 0, 2, 116, 115, 104, 0, 40, 0,
+			4, 0, 142, 35, 123, 4, 0, 0, 0, 2, 116, 115, 46, 0, 40, 0, 6, 0, 152, 35, 124, 6, 0, 0, 0, 3, 116, 115, 46, 104,
+			40, 0, 6, 0, 162, 35, 125, 6, 0, 0, 0, 3, 65, 0, 0, 0, 0, 0, 0, 0, 179, 35, 126, 2, 29, 29, 125, 0, 97, 105,
+			0, 0, 0, 0, 0, 0, 184, 35, 127, 2, 29, 31, 125, 0, 65, 117, 0, 0, 0, 0, 0, 0, 186, 35, 128, 2, 29, 33, 125, 0,
+			64, 114, 0, 0, 0, 0, 0, 0, 193, 35, 129, 2, 28, 28, 175, 0, 69, 0, 0, 0, 0, 0, 0, 0, 195, 35, 130, 2, 30, 30,
+			125, 0, 101, 105, 0, 0, 0, 0, 0, 0, 197, 35, 131, 2, 30, 31, 125, 0, 105, 91, 0, 0, 0, 0, 0, 0, 207, 35, 132, 2,
+			31, 31, 125, 0, 105, 46, 0, 0, 0, 0, 0, 0, 209, 35, 133, 2, 31, 31, 125, 0, 105, 65, 0, 0, 0, 0, 0, 0, 211, 35,
+			134, 2, 31, 29, 125, 0, 105, 65, 117, 0, 0, 0, 0, 0, 213, 35, 135, 2, 31, 33, 125, 0, 105, 69, 0, 0, 0, 0, 0, 0,
+			215, 35, 136, 2, 31, 30, 125, 0, 105, 111, 0, 0, 0, 0, 0, 0, 217, 35, 137, 2, 31, 32, 125, 0, 105, 111, 117, 0, 0, 0,
+			0, 0, 219, 35, 138, 2, 31, 33, 125, 0, 111, 45, 0, 0, 0, 0, 0, 0, 226, 35, 139, 2, 32, 32, 125, 0, 111, 117, 0, 0,
+			0, 0, 0, 0, 228, 35, 140, 2, 32, 33, 125, 0, 111, 110, 103, 0, 0, 0, 0, 0, 230, 35, 141, 2, 32, 32, 250, 0, 117, 65,
+			0, 0, 0, 0, 0, 0, 237, 35, 142, 2, 33, 29, 125, 0, 117, 97, 0, 0, 0, 0, 0, 0, 239, 35, 143, 2, 33, 29, 125, 0,
+			117, 97, 105, 0, 0, 0, 0, 0, 241, 35, 144, 2, 33, 31, 125, 0, 117, 64, 0, 0, 0, 0, 0, 0, 243, 35, 145, 2, 33, 28,
+			115, 0, 117, 101, 105, 0, 0, 0, 0, 0, 245, 35, 146, 2, 33, 31, 125, 0, 117, 111, 0, 0, 0, 0, 0, 0, 247, 35, 147, 2,
+			33, 32, 140, 0, 121, 0, 0, 0, 0, 0, 0, 0, 249, 35, 148, 2, 31, 33, 125, 0, 121, 117, 0, 0, 0, 0, 0, 0, 254, 35,
+			149, 2, 31, 33, 125, 0, 121, 38, 0, 0, 0, 0, 0, 0, 0, 36, 150, 2, 31, 30, 125, 0, 121, 69, 0, 0, 0, 0, 0, 0,
+			2, 36, 151, 2, 31, 30, 125, 0, 121, 64, 0, 0, 0, 0, 0, 0, 4, 36, 152, 2, 31, 28, 125, 0, 121, 105, 0, 0, 0, 0,
+			0, 0, 6, 36, 153, 2, 31, 31, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0,
+			0, 0, 0, 0, 115, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 12, 36, 35, 2, 29, 29, 105, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			10, 36, 36, 2, 30, 30, 105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 8, 36, 37, 2, 31, 31, 100, 0, 111, 0, 0, 0, 0, 0,
+			0, 0, 14, 36, 39, 2, 32, 32, 105, 0, 117, 0, 0, 0, 0, 0, 0, 0, 16, 36, 40, 2, 33, 33, 100, 0, 116, 0, 0, 0,
+			8, 0, 4, 0, 36, 36, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 76, 36, 48, 4, 0, 71, 0, 2, 107, 0,
+			0, 0, 8, 0, 8, 0, 157, 36, 49, 4, 0, 81, 0, 2, 119, 0, 0, 0, 0, 0, 0, 0, 140, 36, 58, 3, 0, 0, 0, 7,
+			110, 94, 0, 0, 16, 2, 7, 0, 86, 36, 67, 8, 0, 0, 0, 4, 78, 0, 0, 0, 16, 0, 8, 0, 113, 36, 68, 8, 0, 0,
+			0, 8, 100, 0, 0, 0, 16, 0, 3, 0, 2, 7, 72, 5, 0, 0, 0, 5, 74, 0, 0, 0, 48, 2, 7, 0, 172, 36, 79, 5,
+			0, 80, 0, 5, 103, 0, 0, 0, 16, 0, 8, 0, 197, 36, 81, 5, 0, 49, 0, 5, 84, 0, 0, 0, 8, 0, 3, 0, 46, 36,
+			87, 6, 0, 86, 0, 3, 122, 0, 0, 0, 48, 0, 4, 0, 18, 36, 88, 7, 0, 89, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0,
+			66, 36, 89, 6, 0, 88, 0, 3, 83, 0, 0, 0, 40, 0, 6, 0, 56, 36, 91, 6, 0, 90, 0, 3, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 3, 0, 0, 0, 0, 0, 0, 116, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 9, 0, 0, 70, 0, 64, 0, 0, 0, 0, 0, 0, 0, 32, 37, 13, 2, 28, 28, 90, 0, 97, 0, 0, 0, 0, 0, 0, 0,
+			12, 37, 35, 2, 29, 29, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 240, 36, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0,
+			0, 0, 212, 36, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 36, 37, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0,
+			0, 0, 0, 0, 18, 37, 40, 2, 33, 33, 90, 0, 82, 0, 0, 0, 128, 0, 0, 0, 84, 37, 51, 3, 0, 0, 0, 6, 74, 0,
+			0, 0, 16, 0, 6, 0, 63, 37, 79, 5, 0, 0, 0, 5, 99, 0, 0, 0, 8, 0, 7, 0, 50, 37, 80, 4, 0, 0, 0, 2,
+			69, 0, 0, 0, 0, 0, 0, 0, 6, 37, 109, 2, 30, 30, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 48, 37, 110, 2, 32, 32,
+			100, 0, 85, 0, 0, 0, 0, 0, 0, 0, 30, 37, 111, 2, 33, 33, 90, 0, 121, 0, 0, 0, 0, 0, 0, 0, 226, 36, 112, 2,
+			33, 33, 90, 0, 89, 0, 0, 0, 0, 0, 0, 0, 238, 36, 113, 2, 33, 33, 90, 0, 73, 0, 0, 0, 0, 0, 0, 0, 224, 36,
+			124, 2, 31, 31, 90, 0, 38, 0, 0, 0, 0, 0, 0, 0, 8, 37, 125, 2, 29, 29, 100, 0, 87, 0, 0, 0, 0, 0, 0, 0,
+			10, 37, 126, 2, 28, 28, 100, 0, 71, 0, 0, 0, 0, 0, 128, 0, 101, 0, 127, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 3, 0, 0, 0, 0, 0, 0, 107, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 103, 37,
+			35, 2, 29, 29, 105, 0, 101, 0, 0, 0, 0, 0, 0, 0, 97, 37, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+			90, 37, 37, 2, 31, 31, 95, 0, 111, 0, 0, 0, 0, 0, 0, 0, 107, 37, 39, 2, 32, 32, 110, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 111, 37, 40, 2, 33, 33, 100, 0, 74, 0, 0, 0, 16, 0, 6, 0, 144, 37, 79, 5, 0, 80, 0, 5, 99, 0, 0, 0,
+			8, 0, 7, 0, 131, 37, 80, 4, 0, 79, 0, 2, 120, 0, 0, 0, 8, 0, 8, 0, 121, 37, 101, 6, 0, 0, 0, 3, 69, 0,
+			0, 0, 0, 0, 0, 0, 99, 37, 109, 2, 29, 29, 75, 0, 85, 0, 0, 0, 0, 0, 0, 0, 109, 37, 111, 2, 33, 33, 65, 0,
+			121, 0, 0, 0, 0, 0, 0, 0, 113, 37, 112, 2, 33, 33, 80, 0, 101, 85, 0, 0, 0, 0, 0, 0, 117, 37, 115, 2, 30, 31,
+			140, 0, 101, 73, 0, 0, 0, 0, 0, 0, 115, 37, 118, 2, 30, 31, 140, 0, 73, 0, 0, 0, 0, 0, 0, 0, 92, 37, 124, 2,
+			28, 28, 55, 0, 69, 35, 0, 0, 0, 0, 0, 0, 101, 37, 125, 2, 30, 30, 70, 0, 56, 0, 0, 0, 0, 0, 0, 0, 105, 37,
+			126, 2, 28, 28, 80, 0, 86, 0, 0, 0, 0, 0, 0, 0, 119, 37, 127, 2, 28, 28, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 16, 3, 0, 0, 0, 0, 0, 0, 105, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 159, 37, 13, 2,
+			28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 163, 37, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 177, 37,
+			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 181, 37, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0,
+			189, 37, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 193, 37, 40, 2, 33, 33, 90, 0, 100, 0, 0, 0, 16, 0,
+			4, 0, 15, 3, 72, 5, 0, 47, 0, 5, 69, 0, 0, 0, 0, 0, 0, 0, 168, 37, 109, 2, 30, 30, 90, 0, 79, 0, 0, 0,
+			0, 0, 0, 0, 185, 37, 110, 2, 32, 32, 90, 0, 97, 85, 0, 0, 0, 0, 0, 0, 211, 37, 114, 2, 29, 33, 120, 0, 97, 73,
+			0, 0, 0, 0, 0, 0, 197, 37, 117, 2, 29, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 203, 37, 118, 2, 30, 31, 120, 0,
+			69, 50, 0, 0, 0, 0, 0, 0, 173, 37, 124, 2, 30, 30, 90, 0, 79, 73, 0, 0, 0, 0, 0, 0, 205, 37, 125, 2, 32, 31,
+			120, 0, 64, 85, 0, 0, 0, 0, 0, 0, 217, 37, 126, 2, 28, 33, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, 115, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 219, 37, 13, 2, 28, 28, 75, 0,
+			97, 0, 0, 0, 0, 0, 0, 0, 232, 37, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 248, 37, 36, 2, 30, 30,
+			85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 253, 37, 37, 2, 31, 31, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0, 20, 38, 40, 2,
+			33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 3, 0, 10, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 71, 38,
+			48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 148, 38, 49, 4, 0, 81, 0, 2, 119, 0, 0, 0, 0, 0, 0, 0,
+			67, 38, 58, 3, 0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 34, 38, 64, 3, 0, 0, 0, 7, 100, 0, 0, 0, 16, 0,
+			4, 0, 87, 38, 72, 5, 0, 47, 0, 5, 100, 90, 59, 0, 48, 2, 6, 0, 128, 38, 77, 5, 0, 78, 0, 5, 99, 0, 0, 0,
+			40, 2, 7, 0, 32, 5, 80, 4, 0, 77, 0, 2, 122, 0, 0, 0, 48, 0, 4, 0, 114, 38, 88, 7, 0, 89, 0, 6, 64, 47,
+			0, 0, 0, 0, 0, 0, 221, 37, 108, 2, 28, 28, 50, 0, 86, 0, 0, 0, 0, 0, 0, 0, 223, 37, 109, 2, 28, 28, 85, 0,
+			73, 35, 0, 0, 0, 0, 0, 0, 229, 37, 110, 2, 28, 28, 85, 0, 97, 47, 0, 0, 0, 0, 0, 0, 237, 37, 111, 2, 29, 29,
+			85, 0, 65, 0, 0, 0, 0, 0, 0, 0, 239, 37, 112, 2, 29, 29, 85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 244, 37, 113, 2,
+			30, 30, 85, 0, 69, 35, 0, 0, 0, 0, 0, 0, 246, 37, 114, 2, 28, 28, 85, 0, 73, 0, 0, 0, 0, 0, 0, 0, 11, 38,
+			115, 2, 31, 31, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 13, 38, 116, 2, 33, 33, 80, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			15, 38, 117, 2, 32, 32, 85, 0, 97, 73, 0, 0, 0, 0, 0, 0, 22, 38, 118, 2, 29, 31, 110, 0, 101, 73, 0, 0, 0, 0,
+			0, 0, 24, 38, 119, 2, 30, 31, 110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 26, 38, 120, 2, 32, 31, 110, 0, 121, 69, 0, 0,
+			0, 0, 0, 0, 28, 38, 121, 2, 33, 30, 120, 0, 108, 47, 52, 0, 0, 0, 0, 0, 30, 38, 122, 3, 0, 0, 0, 7, 108, 108,
+			0, 0, 0, 0, 0, 0, 54, 38, 123, 3, 0, 0, 0, 7, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6, 124, 4, 0, 125, 0, 2,
+			100, 122, 0, 0, 48, 0, 4, 0, 34, 6, 125, 5, 0, 124, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 104, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 161, 38, 13, 2, 28, 28, 80, 0, 116, 35,
+			0, 0, 8, 0, 4, 0, 245, 4, 25, 4, 0, 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 169, 38, 35, 2, 29, 29, 100, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 167, 38, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 163, 38, 37, 2, 31, 31,
+			80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 171, 38, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 173, 38, 40, 2,
+			33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0, 10, 5, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 55, 6,
+			48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6, 49, 4, 0, 0, 0, 2, 116, 83, 0, 0, 40, 0, 6, 0,
+			193, 38, 76, 4, 0, 75, 0, 2, 81, 0, 0, 0, 16, 0, 10, 0, 207, 4, 100, 7, 0, 0, 0, 6, 121, 0, 0, 0, 0, 0,
+			0, 0, 165, 38, 108, 2, 31, 31, 80, 0, 87, 0, 0, 0, 0, 0, 0, 0, 175, 38, 109, 2, 28, 28, 90, 0, 97, 73, 0, 0,
+			0, 0, 0, 0, 177, 38, 110, 2, 29, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 179, 38, 111, 2, 30, 31, 120, 0, 105, 64,
+			0, 0, 0, 0, 0, 0, 181, 38, 112, 2, 31, 28, 120, 0, 112, 35, 0, 0, 8, 0, 1, 0, 74, 6, 113, 4, 0, 0, 0, 2,
+			116, 115, 35, 0, 40, 0, 4, 0, 21, 6, 114, 4, 0, 0, 0, 2, 107, 35, 0, 0, 8, 0, 8, 0, 57, 5, 115, 4, 0, 0,
+			0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 34, 6, 116, 5, 0, 117, 0, 5, 116, 115, 0, 0, 40, 0, 4, 0, 183, 38, 117, 4,
+			0, 0, 0, 2, 116, 83, 35, 0, 40, 0, 6, 0, 23, 5, 118, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 0, 0, 100, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 168, 40, 13, 2, 28, 28,
+			30, 0, 64, 45, 0, 0, 2, 0, 16, 0, 171, 40, 14, 2, 28, 28, 90, 0, 114, 0, 0, 0, 0, 0, 0, 0, 162, 41, 34, 3,
+			0, 0, 0, 7, 101, 0, 0, 0, 0, 0, 0, 0, 208, 40, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 197, 40,
+			37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 54, 41, 39, 2, 32, 32, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			37, 41, 40, 2, 33, 33, 70, 0, 116, 0, 0, 0, 8, 0, 4, 0, 242, 41, 47, 4, 0, 72, 0, 7, 112, 0, 0, 0, 8, 0,
+			1, 0, 216, 41, 48, 4, 0, 71, 0, 7, 82, 0, 0, 0, 0, 0, 0, 0, 197, 41, 51, 3, 0, 0, 0, 6, 108, 0, 0, 0,
+			0, 0, 0, 0, 156, 41, 55, 3, 0, 0, 0, 7, 106, 0, 0, 0, 0, 2, 0, 0, 3, 42, 57, 3, 0, 0, 0, 7, 108, 47,
+			51, 0, 0, 0, 0, 0, 160, 41, 60, 3, 0, 0, 40, 7, 118, 0, 0, 0, 16, 0, 2, 0, 241, 3, 84, 7, 0, 83, 0, 6,
+			115, 0, 0, 0, 40, 0, 4, 0, 201, 41, 89, 6, 0, 88, 0, 3, 86, 0, 0, 0, 0, 0, 0, 0, 82, 41, 108, 2, 28, 28,
+			70, 0, 63, 86, 0, 0, 0, 0, 0, 0, 86, 41, 109, 2, 28, 28, 70, 0, 51, 45, 0, 0, 0, 0, 0, 0, 192, 40, 110, 3,
+			0, 0, 0, 7, 63, 105, 0, 0, 0, 0, 0, 0, 201, 40, 111, 2, 31, 31, 70, 0, 51, 0, 0, 0, 2, 0, 0, 0, 190, 40,
+			112, 2, 29, 29, 20, 0, 73, 0, 0, 0, 0, 0, 0, 0, 205, 40, 113, 2, 31, 31, 65, 0, 63, 101, 0, 0, 0, 0, 0, 0,
+			212, 40, 114, 2, 30, 30, 70, 0, 69, 0, 0, 0, 0, 0, 0, 0, 216, 40, 115, 2, 30, 30, 70, 0, 63, 69, 0, 0, 0, 0,
+			0, 0, 234, 40, 116, 2, 30, 30, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 240, 40, 117, 2, 30, 30, 70, 0, 63, 38, 0, 0,
+			0, 0, 0, 0, 4, 41, 118, 2, 30, 30, 70, 0, 38, 35, 0, 0, 0, 0, 0, 0, 10, 41, 119, 2, 30, 30, 70, 0, 63, 38,
+			35, 0, 0, 0, 0, 0, 16, 41, 120, 2, 30, 30, 70, 0, 65, 0, 0, 0, 0, 0, 0, 0, 22, 41, 121, 2, 29, 29, 70, 0,
+			63, 65, 0, 0, 0, 0, 0, 0, 30, 41, 122, 2, 29, 29, 70, 0, 63, 117, 0, 0, 0, 0, 0, 0, 50, 41, 123, 2, 33, 33,
+			70, 0, 63, 111, 0, 0, 0, 0, 0, 0, 63, 41, 124, 2, 32, 32, 70, 0, 79, 0, 0, 0, 0, 0, 0, 0, 67, 41, 125, 2,
+			32, 32, 70, 0, 63, 79, 0, 0, 0, 0, 0, 0, 76, 41, 126, 2, 32, 32, 70, 0, 48, 0, 0, 0, 0, 0, 0, 0, 90, 41,
+			127, 2, 32, 32, 70, 0, 63, 48, 0, 0, 0, 0, 0, 0, 96, 41, 128, 2, 32, 32, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0,
+			102, 41, 129, 2, 31, 31, 70, 0, 63, 121, 0, 0, 0, 0, 0, 0, 106, 41, 130, 2, 31, 31, 70, 0, 89, 0, 0, 0, 0, 0,
+			0, 0, 110, 41, 131, 2, 31, 31, 70, 0, 87, 0, 0, 0, 0, 0, 0, 0, 117, 41, 132, 2, 28, 28, 70, 0, 63, 87, 0, 0,
+			0, 0, 0, 0, 121, 41, 133, 2, 28, 28, 70, 0, 87, 35, 0, 0, 0, 0, 0, 0, 125, 41, 134, 2, 28, 28, 70, 0, 63, 87,
+			35, 0, 0, 0, 0, 0, 129, 41, 135, 2, 28, 28, 70, 0, 97, 73, 0, 0, 0, 0, 0, 0, 133, 41, 136, 2, 29, 31, 150, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 107, 97, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+			2, 0, 0, 0, 38, 42, 13, 2, 28, 28, 60, 0, 116, 35, 0, 0, 8, 0, 4, 0, 245, 4, 25, 4, 0, 0, 0, 2, 114, 0,
+			0, 0, 128, 0, 0, 0, 119, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 47, 42, 35, 2, 29, 29, 90, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 42, 42, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 40, 42, 37, 2, 31, 31,
+			80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 52, 42, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 54, 42, 40, 2,
+			33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 4, 0, 90, 6, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 55, 6,
+			48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 116, 6, 49, 4, 0, 0, 0, 2, 99, 0, 0, 0, 40, 0, 7, 0,
+			103, 6, 80, 4, 0, 0, 0, 2, 81, 0, 0, 0, 16, 0, 8, 0, 88, 42, 100, 7, 0, 101, 0, 6, 112, 35, 0, 0, 8, 0,
+			1, 0, 74, 6, 108, 4, 0, 0, 0, 2, 116, 115, 35, 0, 40, 0, 4, 0, 21, 6, 109, 4, 0, 0, 0, 2, 107, 35, 0, 0,
+			8, 0, 8, 0, 56, 42, 110, 4, 0, 81, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 34, 6, 111, 5, 0, 112, 0, 5, 116, 115,
+			0, 0, 40, 0, 4, 0, 78, 42, 112, 4, 0, 0, 0, 2, 81, 50, 0, 0, 16, 0, 8, 0, 100, 42, 113, 7, 0, 101, 0, 6,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 102, 97, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 123, 29, 35, 2, 29, 29, 70, 0, 105, 58, 0, 0, 0, 0, 0, 0, 86, 29, 108, 2, 31, 31, 90, 0, 73, 0,
-			0, 0, 0, 0, 0, 0, 92, 29, 109, 2, 31, 31, 65, 0, 101, 58, 0, 0, 0, 0, 0, 0, 95, 29, 110, 2, 30, 30, 105, 0,
-			69, 0, 0, 0, 0, 0, 0, 0, 97, 29, 111, 2, 30, 30, 70, 0, 69, 45, 0, 0, 2, 0, 0, 0, 105, 29, 112, 2, 28, 28,
-			70, 0, 69, 58, 0, 0, 0, 0, 0, 0, 100, 29, 113, 2, 30, 28, 110, 0, 69, 51, 0, 0, 0, 0, 0, 0, 102, 29, 114, 2,
-			30, 30, 70, 0, 121, 58, 0, 0, 0, 0, 0, 0, 109, 29, 115, 2, 33, 33, 110, 0, 121, 0, 0, 0, 0, 0, 0, 0, 111, 29,
-			116, 2, 33, 33, 70, 0, 117, 45, 0, 0, 0, 0, 0, 0, 113, 29, 117, 2, 33, 33, 100, 0, 89, 58, 0, 0, 0, 0, 0, 0,
-			117, 29, 118, 2, 28, 28, 110, 0, 87, 0, 0, 0, 0, 0, 0, 0, 119, 29, 119, 2, 28, 28, 70, 0, 56, 0, 0, 0, 0, 0,
-			0, 0, 121, 29, 120, 2, 33, 33, 70, 0, 38, 0, 0, 0, 0, 0, 0, 0, 129, 29, 121, 2, 29, 29, 70, 0, 65, 58, 0, 0,
-			0, 0, 0, 0, 131, 29, 122, 2, 29, 29, 125, 0, 79, 0, 0, 0, 0, 0, 0, 0, 133, 29, 123, 2, 32, 32, 70, 0, 111, 58,
-			0, 0, 0, 0, 0, 0, 135, 29, 124, 2, 32, 32, 105, 0, 85, 0, 0, 0, 0, 0, 0, 0, 137, 29, 125, 2, 33, 33, 70, 0,
-			117, 58, 0, 0, 0, 0, 0, 0, 139, 29, 126, 2, 33, 33, 105, 0, 115, 120, 0, 0, 8, 0, 8, 0, 141, 29, 127, 6, 0, 0,
-			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 0, 0, 110, 111, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 2, 0, 0, 0, 151, 29, 13, 2, 28, 28, 60, 0, 97, 0, 0, 0, 0, 0, 0, 0, 179, 29, 35, 2, 29, 29, 60, 0,
-			97, 35, 0, 0, 2, 0, 0, 0, 153, 29, 108, 2, 28, 29, 60, 0, 73, 0, 0, 0, 0, 0, 0, 0, 155, 29, 109, 2, 31, 31,
-			50, 0, 105, 58, 0, 0, 0, 0, 0, 0, 158, 29, 110, 2, 31, 31, 115, 0, 121, 0, 0, 0, 0, 0, 0, 0, 164, 29, 111, 2,
-			33, 33, 60, 0, 121, 58, 0, 0, 0, 0, 0, 0, 166, 29, 112, 2, 33, 33, 130, 0, 87, 0, 0, 0, 0, 0, 0, 0, 168, 29,
-			113, 2, 28, 28, 60, 0, 89, 58, 0, 0, 0, 0, 0, 0, 170, 29, 114, 2, 28, 28, 130, 0, 69, 0, 0, 0, 0, 0, 0, 0,
-			172, 29, 115, 2, 30, 30, 60, 0, 69, 58, 0, 0, 0, 0, 0, 0, 175, 29, 116, 2, 30, 30, 135, 0, 101, 58, 0, 0, 0, 0,
-			0, 0, 177, 29, 117, 2, 30, 30, 125, 0, 97, 58, 0, 0, 0, 0, 0, 0, 181, 29, 118, 2, 29, 29, 135, 0, 65, 0, 0, 0,
-			0, 0, 0, 0, 183, 29, 119, 2, 29, 29, 65, 0, 65, 58, 0, 0, 0, 0, 0, 0, 185, 29, 120, 2, 29, 29, 140, 0, 79, 0,
-			0, 0, 0, 0, 0, 0, 187, 29, 121, 2, 32, 32, 60, 0, 111, 58, 0, 0, 0, 0, 0, 0, 189, 29, 122, 2, 32, 32, 135, 0,
-			85, 0, 0, 0, 0, 0, 0, 0, 191, 29, 123, 2, 33, 33, 60, 0, 117, 58, 0, 0, 0, 0, 0, 0, 193, 29, 124, 2, 33, 33,
-			120, 0, 117, 45, 0, 0, 0, 0, 0, 0, 195, 29, 125, 2, 33, 33, 60, 0, 117, 45, 58, 0, 0, 0, 0, 0, 199, 29, 126, 2,
-			33, 33, 130, 0, 65, 73, 0, 0, 0, 0, 0, 0, 204, 29, 127, 2, 29, 31, 135, 0, 97, 73, 0, 0, 0, 0, 0, 0, 207, 29,
-			128, 2, 29, 31, 135, 0, 79, 73, 0, 0, 0, 0, 0, 0, 210, 29, 129, 2, 32, 31, 135, 0, 117, 45, 73, 0, 0, 0, 0, 0,
-			213, 29, 130, 2, 33, 31, 135, 0, 89, 121, 0, 0, 0, 0, 0, 0, 219, 29, 131, 2, 28, 33, 135, 0, 97, 85, 0, 0, 0, 0,
-			0, 0, 221, 29, 132, 2, 29, 33, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 1, 0, 0,
-			0, 0, 0, 0, 105, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 55, 0, 97, 0, 0, 0, 0, 0, 0, 0,
-			241, 29, 35, 2, 28, 28, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 223, 29, 37, 2, 31, 31, 65, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 251, 29, 40, 2, 33, 33, 65, 0, 98, 0, 0, 0, 8, 0, 1, 0, 122, 30, 71, 4, 0, 0, 0, 5, 100, 0, 0, 0,
-			8, 0, 4, 0, 132, 30, 72, 4, 0, 0, 0, 5, 103, 0, 0, 0, 8, 0, 8, 0, 145, 30, 81, 4, 0, 0, 0, 5, 118, 0,
-			0, 0, 16, 0, 2, 0, 238, 3, 84, 7, 0, 83, 0, 6, 108, 35, 0, 0, 8, 0, 4, 0, 99, 30, 105, 6, 0, 0, 0, 3,
-			105, 58, 0, 0, 0, 0, 0, 0, 226, 29, 108, 2, 31, 31, 115, 0, 73, 0, 0, 0, 0, 0, 0, 0, 230, 29, 109, 2, 31, 31,
-			65, 0, 73, 58, 0, 0, 0, 0, 0, 0, 233, 29, 110, 2, 31, 31, 115, 0, 69, 0, 0, 0, 0, 0, 0, 0, 237, 29, 111, 2,
-			30, 30, 65, 0, 69, 58, 0, 0, 0, 0, 0, 0, 239, 29, 112, 2, 30, 30, 65, 0, 97, 58, 0, 0, 0, 0, 0, 0, 243, 29,
-			113, 2, 29, 29, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 246, 29, 114, 2, 32, 32, 65, 0, 79, 58, 0, 0, 0, 0, 0, 0,
-			248, 29, 115, 2, 32, 32, 115, 0, 117, 58, 0, 0, 0, 0, 0, 0, 253, 29, 116, 2, 33, 33, 115, 0, 121, 0, 0, 0, 0, 0,
-			0, 0, 0, 30, 117, 2, 28, 28, 65, 0, 121, 58, 0, 0, 0, 0, 0, 0, 2, 30, 118, 2, 31, 31, 115, 0, 87, 0, 0, 0,
-			0, 0, 0, 0, 5, 30, 119, 2, 28, 28, 65, 0, 87, 58, 0, 0, 0, 0, 0, 0, 7, 30, 120, 2, 28, 28, 65, 0, 97, 73,
-			0, 0, 0, 0, 0, 0, 10, 30, 121, 2, 29, 31, 85, 0, 97, 73, 58, 0, 0, 0, 0, 0, 12, 30, 122, 2, 29, 31, 115, 0,
-			101, 73, 0, 0, 0, 0, 0, 0, 15, 30, 123, 2, 30, 31, 85, 0, 101, 73, 58, 0, 0, 0, 0, 0, 17, 30, 124, 2, 30, 31,
-			115, 0, 97, 85, 0, 0, 0, 0, 0, 0, 20, 30, 125, 2, 29, 33, 85, 0, 97, 85, 58, 0, 0, 0, 0, 0, 22, 30, 126, 2,
-			29, 33, 115, 0, 111, 85, 0, 0, 0, 0, 0, 0, 25, 30, 127, 2, 32, 33, 85, 0, 111, 85, 58, 0, 0, 0, 0, 0, 27, 30,
-			128, 2, 32, 33, 115, 0, 89, 121, 0, 0, 0, 0, 0, 0, 30, 30, 129, 2, 28, 31, 75, 0, 89, 121, 58, 0, 0, 0, 0, 0,
-			32, 30, 130, 2, 28, 31, 110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 35, 30, 131, 2, 32, 31, 105, 0, 121, 73, 0, 0, 0, 0,
-			0, 0, 37, 30, 132, 2, 31, 31, 90, 0, 109, 35, 0, 0, 16, 0, 1, 0, 39, 30, 133, 8, 0, 0, 0, 6, 110, 35, 0, 0,
-			16, 0, 4, 0, 47, 30, 134, 8, 0, 0, 0, 6, 110, 94, 35, 0, 16, 2, 7, 0, 68, 30, 135, 8, 0, 0, 0, 6, 78, 35,
-			0, 0, 16, 0, 8, 0, 77, 30, 136, 8, 0, 0, 0, 6, 116, 108, 35, 0, 8, 0, 4, 0, 103, 30, 137, 4, 0, 0, 0, 2,
-			114, 35, 0, 0, 0, 0, 0, 0, 116, 30, 138, 3, 0, 0, 0, 2, 115, 50, 0, 0, 40, 0, 4, 0, 142, 6, 139, 6, 0, 0,
-			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 0, 0, 118, 105, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 0, 0, 0, 0, 205, 30, 13, 2, 28, 29, 65, 0, 49, 0, 0, 0, 0, 0, 0, 0, 158, 30, 17, 1, 28, 32, 0, 0,
-			97, 0, 0, 0, 0, 0, 0, 0, 183, 30, 35, 2, 28, 28, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 189, 30, 36, 2, 30, 30,
-			100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 191, 30, 37, 2, 31, 31, 95, 0, 111, 0, 0, 0, 0, 0, 0, 0, 199, 30, 39, 2,
-			32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0, 201, 30, 40, 2, 33, 33, 100, 0, 108, 0, 0, 0, 0, 0, 0, 0, 3, 31,
-			55, 3, 0, 0, 0, 7, 50, 0, 0, 0, 0, 0, 0, 0, 161, 30, 108, 1, 8, 20, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0,
-			164, 30, 109, 1, 25, 50, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 167, 30, 110, 1, 5, 30, 0, 0, 53, 0, 0, 0, 0, 0,
-			0, 0, 170, 30, 111, 1, 28, 58, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 175, 30, 112, 1, 20, 40, 37, 0, 55, 0, 0, 0,
-			0, 0, 0, 0, 180, 30, 113, 1, 20, 40, 0, 0, 97, 58, 0, 0, 0, 0, 0, 0, 185, 30, 114, 2, 29, 29, 140, 0, 69, 0,
-			0, 0, 0, 0, 0, 0, 187, 30, 115, 2, 30, 30, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 197, 30, 116, 2, 32, 32, 100, 0,
-			121, 0, 0, 0, 0, 0, 0, 0, 203, 30, 117, 2, 33, 33, 100, 0, 64, 58, 0, 0, 0, 0, 0, 0, 207, 30, 118, 2, 28, 28,
-			140, 0, 97, 73, 0, 0, 0, 0, 0, 0, 209, 30, 119, 2, 29, 31, 125, 0, 97, 58, 73, 0, 0, 0, 0, 0, 211, 30, 120, 2,
-			29, 31, 125, 0, 64, 73, 0, 0, 0, 0, 0, 0, 213, 30, 121, 2, 28, 31, 125, 0, 64, 58, 73, 0, 0, 0, 0, 0, 215, 30,
-			122, 2, 28, 31, 125, 0, 101, 73, 0, 0, 0, 0, 0, 0, 217, 30, 123, 2, 30, 31, 100, 0, 69, 73, 0, 0, 0, 0, 0, 0,
-			219, 30, 124, 2, 30, 31, 100, 0, 79, 73, 0, 0, 0, 0, 0, 0, 221, 30, 125, 2, 32, 31, 100, 0, 111, 73, 0, 0, 0, 0,
-			0, 0, 223, 30, 126, 2, 32, 31, 100, 0, 117, 73, 0, 0, 0, 0, 0, 0, 225, 30, 127, 2, 33, 31, 100, 0, 121, 73, 0, 0,
-			0, 0, 0, 0, 227, 30, 128, 2, 33, 31, 100, 0, 97, 85, 0, 0, 0, 0, 0, 0, 229, 30, 129, 2, 29, 33, 105, 0, 97, 58,
-			85, 0, 0, 0, 0, 0, 231, 30, 130, 2, 29, 33, 135, 0, 101, 85, 0, 0, 0, 0, 0, 0, 233, 30, 131, 2, 30, 33, 100, 0,
-			69, 85, 0, 0, 0, 0, 0, 0, 235, 30, 132, 2, 30, 33, 100, 0, 105, 85, 0, 0, 0, 0, 0, 0, 237, 30, 133, 2, 31, 33,
-			100, 0, 64, 85, 0, 0, 0, 0, 0, 0, 239, 30, 134, 2, 28, 33, 100, 0, 64, 58, 85, 0, 0, 0, 0, 0, 241, 30, 135, 2,
-			28, 33, 135, 0, 105, 64, 0, 0, 0, 0, 0, 0, 243, 30, 136, 2, 31, 28, 120, 0, 121, 64, 0, 0, 0, 0, 0, 0, 245, 30,
-			137, 2, 31, 28, 100, 0, 117, 64, 0, 0, 0, 0, 0, 0, 247, 30, 138, 2, 33, 28, 100, 0, 107, 104, 0, 0, 8, 0, 8, 0,
-			249, 30, 139, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0,
-			0, 0, 122, 104, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 9, 31, 17, 1, 50, 50, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 111, 31,
-			35, 2, 28, 28, 75, 0, 101, 0, 0, 0, 0, 0, 0, 0, 117, 31, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0,
-			125, 31, 37, 2, 31, 31, 95, 0, 111, 0, 0, 0, 0, 0, 0, 0, 142, 31, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 152, 31, 40, 2, 33, 33, 85, 0, 116, 0, 0, 0, 8, 0, 4, 0, 88, 31, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 75, 31, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 49, 31, 49, 4, 0, 0, 0, 2, 99, 0,
-			0, 0, 40, 0, 6, 0, 40, 31, 80, 4, 0, 0, 0, 2, 122, 0, 0, 0, 40, 0, 4, 0, 30, 31, 88, 4, 0, 0, 0, 2,
-			50, 0, 0, 0, 0, 0, 0, 0, 12, 31, 108, 1, 30, 50, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 15, 31, 109, 1, 30, 30,
-			0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 18, 31, 110, 1, 10, 20, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 21, 31, 111, 1,
-			10, 30, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 24, 31, 112, 1, 20, 20, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 27, 31,
-			113, 1, 30, 50, 0, 0, 97, 97, 0, 0, 0, 0, 0, 0, 101, 31, 114, 2, 29, 29, 115, 0, 97, 97, 105, 0, 0, 0, 0, 0,
-			103, 31, 115, 2, 29, 31, 135, 0, 97, 97, 117, 0, 0, 0, 0, 0, 105, 31, 116, 2, 29, 33, 130, 0, 97, 110, 103, 0, 0, 0,
-			0, 0, 107, 31, 117, 2, 29, 29, 110, 0, 97, 97, 110, 103, 0, 0, 0, 0, 109, 31, 118, 2, 29, 29, 135, 0, 97, 105, 0, 0,
-			0, 0, 0, 0, 113, 31, 119, 2, 28, 31, 100, 0, 97, 117, 0, 0, 0, 0, 0, 0, 115, 31, 120, 2, 29, 33, 100, 0, 101, 105,
-			0, 0, 0, 0, 0, 0, 119, 31, 121, 2, 30, 31, 110, 0, 101, 110, 103, 0, 0, 0, 0, 0, 121, 31, 122, 2, 30, 30, 110, 0,
-			101, 117, 0, 0, 0, 0, 0, 0, 123, 31, 123, 2, 30, 33, 130, 0, 105, 110, 103, 0, 0, 0, 0, 0, 134, 31, 124, 2, 31, 31,
-			110, 0, 105, 117, 0, 0, 0, 0, 0, 0, 136, 31, 125, 2, 31, 33, 100, 0, 110, 103, 0, 0, 0, 0, 0, 0, 138, 31, 126, 2,
-			0, 0, 175, 0, 111, 101, 110, 103, 0, 0, 0, 0, 144, 31, 127, 2, 32, 30, 140, 0, 111, 105, 0, 0, 0, 0, 0, 0, 146, 31,
-			128, 2, 32, 31, 100, 0, 111, 117, 0, 0, 0, 0, 0, 0, 148, 31, 129, 2, 32, 33, 100, 0, 111, 110, 103, 0, 0, 0, 0, 0,
-			150, 31, 130, 2, 32, 32, 110, 0, 117, 110, 103, 0, 0, 0, 0, 0, 158, 31, 131, 2, 33, 33, 100, 0, 117, 105, 0, 0, 0, 0,
-			0, 0, 160, 31, 132, 2, 33, 31, 110, 0, 111, 101, 0, 0, 0, 0, 0, 0, 162, 31, 133, 2, 28, 28, 115, 0, 101, 111, 0, 0,
-			0, 0, 0, 0, 164, 31, 134, 2, 28, 28, 85, 0, 101, 111, 105, 0, 0, 0, 0, 0, 166, 31, 135, 2, 28, 31, 110, 0, 121, 117,
-			0, 0, 0, 0, 0, 0, 168, 31, 136, 2, 33, 33, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			64, 1, 0, 0, 0, 0, 0, 0, 122, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 184, 32, 13, 2, 28, 28, 100, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 170, 32, 35, 2, 29, 29, 125, 0, 105, 0, 0, 0, 0, 0, 0, 0, 195, 32, 37, 2, 31, 31, 125, 0, 111, 0,
-			0, 0, 0, 0, 0, 0, 217, 32, 39, 2, 32, 32, 125, 0, 117, 0, 0, 0, 0, 0, 0, 0, 228, 32, 40, 2, 33, 33, 125, 0,
-			78, 45, 0, 0, 0, 0, 0, 0, 168, 32, 43, 2, 68, 68, 125, 0, 116, 0, 0, 0, 8, 0, 4, 0, 49, 32, 47, 4, 0, 0,
-			0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 23, 32, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 10, 0, 69, 32, 49, 4,
-			0, 0, 0, 2, 110, 0, 0, 0, 16, 0, 4, 0, 200, 31, 50, 8, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 246, 31,
-			55, 3, 0, 0, 0, 2, 106, 0, 0, 0, 0, 2, 0, 0, 253, 31, 57, 3, 0, 0, 0, 1, 78, 0, 0, 0, 16, 0, 8, 0,
-			222, 31, 68, 8, 0, 0, 0, 7, 116, 83, 59, 0, 40, 2, 7, 0, 89, 32, 78, 4, 0, 0, 0, 2, 102, 0, 0, 0, 8, 0,
-			2, 0, 43, 32, 83, 6, 0, 0, 0, 2, 115, 46, 0, 0, 40, 0, 6, 0, 115, 32, 93, 6, 0, 0, 0, 3, 83, 59, 0, 0,
-			40, 0, 6, 0, 107, 32, 97, 6, 0, 0, 0, 2, 49, 49, 0, 0, 0, 0, 0, 0, 170, 31, 108, 1, 9, 12, 0, 0, 50, 49,
-			0, 0, 0, 0, 0, 0, 173, 31, 109, 1, 10, 20, 0, 0, 50, 49, 52, 0, 0, 0, 0, 0, 176, 31, 110, 1, 18, 42, 0, 0,
-			50, 50, 0, 0, 0, 0, 0, 0, 179, 31, 111, 1, 20, 22, 0, 0, 51, 51, 0, 0, 0, 0, 0, 0, 182, 31, 112, 1, 30, 32,
-			0, 0, 51, 53, 0, 0, 0, 0, 0, 0, 185, 31, 113, 1, 30, 50, 0, 0, 52, 52, 0, 0, 0, 0, 0, 0, 188, 31, 114, 1,
-			38, 41, 0, 0, 53, 49, 0, 0, 0, 0, 0, 0, 191, 31, 115, 1, 10, 50, 0, 0, 53, 51, 0, 0, 0, 0, 0, 0, 194, 31,
-			116, 1, 30, 50, 0, 0, 53, 53, 0, 0, 0, 0, 0, 0, 197, 31, 117, 1, 50, 55, 0, 0, 112, 104, 0, 0, 8, 0, 1, 0,
-			33, 32, 118, 4, 0, 0, 0, 2, 116, 104, 0, 0, 8, 0, 4, 0, 59, 32, 119, 4, 0, 0, 0, 2, 107, 104, 0, 0, 8, 0,
-			10, 0, 79, 32, 120, 4, 0, 0, 0, 2, 116, 83, 59, 104, 40, 2, 7, 0, 98, 32, 121, 4, 0, 0, 0, 2, 116, 115, 0, 0,
-			40, 0, 4, 0, 128, 32, 122, 4, 0, 0, 0, 2, 116, 115, 104, 0, 40, 0, 4, 0, 138, 32, 123, 4, 0, 0, 0, 2, 116, 115,
-			46, 0, 40, 0, 6, 0, 148, 32, 124, 6, 0, 0, 0, 3, 116, 115, 46, 104, 40, 0, 6, 0, 158, 32, 125, 6, 0, 0, 0, 3,
-			65, 0, 0, 0, 0, 0, 0, 0, 175, 32, 126, 2, 29, 29, 125, 0, 97, 105, 0, 0, 0, 0, 0, 0, 180, 32, 127, 2, 29, 31,
-			125, 0, 65, 117, 0, 0, 0, 0, 0, 0, 182, 32, 128, 2, 29, 33, 125, 0, 64, 114, 0, 0, 0, 0, 0, 0, 189, 32, 129, 2,
-			28, 28, 175, 0, 69, 0, 0, 0, 0, 0, 0, 0, 191, 32, 130, 2, 30, 30, 125, 0, 101, 105, 0, 0, 0, 0, 0, 0, 193, 32,
-			131, 2, 30, 31, 125, 0, 105, 91, 0, 0, 0, 0, 0, 0, 203, 32, 132, 2, 31, 31, 125, 0, 105, 46, 0, 0, 0, 0, 0, 0,
-			205, 32, 133, 2, 31, 31, 125, 0, 105, 65, 0, 0, 0, 0, 0, 0, 207, 32, 134, 2, 31, 29, 125, 0, 105, 65, 117, 0, 0, 0,
-			0, 0, 209, 32, 135, 2, 31, 33, 125, 0, 105, 69, 0, 0, 0, 0, 0, 0, 211, 32, 136, 2, 31, 30, 125, 0, 105, 111, 0, 0,
-			0, 0, 0, 0, 213, 32, 137, 2, 31, 32, 125, 0, 105, 111, 117, 0, 0, 0, 0, 0, 215, 32, 138, 2, 31, 33, 125, 0, 111, 45,
-			0, 0, 0, 0, 0, 0, 222, 32, 139, 2, 32, 32, 125, 0, 111, 117, 0, 0, 0, 0, 0, 0, 224, 32, 140, 2, 32, 33, 125, 0,
-			111, 110, 103, 0, 0, 0, 0, 0, 226, 32, 141, 2, 32, 32, 250, 0, 117, 65, 0, 0, 0, 0, 0, 0, 233, 32, 142, 2, 33, 29,
-			125, 0, 117, 97, 0, 0, 0, 0, 0, 0, 235, 32, 143, 2, 33, 29, 125, 0, 117, 97, 105, 0, 0, 0, 0, 0, 237, 32, 144, 2,
-			33, 31, 125, 0, 117, 64, 0, 0, 0, 0, 0, 0, 239, 32, 145, 2, 33, 28, 115, 0, 117, 101, 105, 0, 0, 0, 0, 0, 241, 32,
-			146, 2, 33, 31, 125, 0, 117, 111, 0, 0, 0, 0, 0, 0, 243, 32, 147, 2, 33, 32, 140, 0, 121, 0, 0, 0, 0, 0, 0, 0,
-			245, 32, 148, 2, 31, 33, 125, 0, 121, 117, 0, 0, 0, 0, 0, 0, 250, 32, 149, 2, 31, 33, 125, 0, 121, 38, 0, 0, 0, 0,
-			0, 0, 252, 32, 150, 2, 31, 30, 125, 0, 121, 69, 0, 0, 0, 0, 0, 0, 254, 32, 151, 2, 31, 30, 125, 0, 121, 64, 0, 0,
-			0, 0, 0, 0, 0, 33, 152, 2, 31, 28, 125, 0, 121, 105, 0, 0, 0, 0, 0, 0, 2, 33, 153, 2, 31, 31, 125, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 115, 119, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0,
-			0, 0, 10, 33, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 6, 33, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0,
-			0, 0, 0, 0, 4, 33, 37, 2, 31, 31, 82, 0, 111, 0, 0, 0, 0, 0, 0, 0, 13, 33, 39, 2, 32, 32, 90, 0, 117, 0,
-			0, 0, 0, 0, 0, 0, 15, 33, 40, 2, 33, 33, 85, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6, 47, 4, 0, 0, 0, 2,
-			100, 0, 0, 0, 16, 0, 3, 0, 233, 6, 72, 5, 0, 0, 0, 5, 97, 47, 0, 0, 0, 0, 0, 0, 8, 33, 108, 2, 28, 28,
-			90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 3, 0, 0, 0, 0, 0, 0, 116, 114, 0, 0,
+			0, 0, 0, 0, 118, 42, 35, 2, 31, 31, 80, 0, 101, 0, 0, 0, 0, 0, 0, 0, 120, 42, 36, 2, 31, 31, 80, 0, 105, 0,
+			0, 0, 0, 0, 0, 0, 114, 42, 37, 2, 31, 31, 100, 0, 111, 0, 0, 0, 0, 0, 0, 0, 122, 42, 39, 2, 31, 31, 80, 0,
+			117, 0, 0, 0, 0, 0, 0, 0, 116, 42, 40, 2, 31, 31, 100, 0, 65, 0, 0, 0, 0, 0, 0, 0, 112, 42, 108, 2, 31, 31,
+			100, 0, 101, 73, 0, 0, 0, 0, 0, 0, 124, 42, 109, 2, 31, 31, 110, 0, 111, 85, 0, 0, 0, 0, 0, 0, 126, 42, 110, 2,
+			31, 31, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 3, 0, 0, 0, 0, 0, 0, 114, 119,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 60, 0, 97, 0, 0, 0, 0, 0, 0, 0, 128, 42, 35, 2, 29, 29,
+			90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 141, 42, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 147, 42, 37, 2,
+			31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 153, 42, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 159, 42,
+			40, 2, 33, 33, 80, 0, 97, 47, 0, 0, 0, 0, 0, 0, 135, 42, 108, 2, 28, 28, 90, 0, 97, 35, 0, 0, 0, 0, 0, 0,
+			165, 42, 124, 2, 28, 28, 50, 0, 101, 35, 0, 0, 0, 0, 0, 0, 169, 42, 125, 2, 30, 30, 50, 0, 105, 35, 0, 0, 0, 0,
+			0, 0, 173, 42, 126, 2, 31, 31, 50, 0, 111, 35, 0, 0, 0, 0, 0, 0, 177, 42, 127, 2, 32, 32, 50, 0, 117, 35, 0, 0,
+			0, 0, 0, 0, 181, 42, 128, 2, 33, 33, 50, 0, 43, 0, 0, 0, 0, 0, 0, 0, 185, 42, 129, 1, 0, 30, 0, 0, 43, 50,
+			0, 0, 0, 0, 0, 0, 188, 42, 130, 1, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			8, 1, 0, 0, 0, 0, 0, 0, 112, 114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 191, 42, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0,
+			0, 0, 0, 0, 198, 42, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 200, 42, 40, 2, 33, 33, 85, 0, 69, 0,
+			0, 0, 0, 0, 0, 0, 194, 42, 108, 2, 30, 30, 85, 0, 65, 0, 0, 0, 0, 0, 0, 0, 196, 42, 109, 2, 29, 29, 90, 0,
+			101, 73, 0, 0, 0, 0, 0, 0, 202, 42, 110, 2, 30, 31, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 204, 42, 111, 2, 29, 33,
+			115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 34, 0, 0, 0, 0, 0, 0, 115, 108, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 70, 0, 64, 0, 0, 0, 0, 0, 0, 0, 77, 33, 13, 2, 28, 28, 75, 0,
-			97, 0, 0, 0, 0, 0, 0, 0, 61, 33, 35, 2, 29, 29, 95, 0, 101, 0, 0, 0, 0, 0, 0, 0, 45, 33, 36, 2, 30, 30,
-			90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 17, 33, 37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 81, 33, 39, 2,
-			32, 32, 95, 0, 117, 0, 0, 0, 0, 0, 0, 0, 63, 33, 40, 2, 33, 33, 75, 0, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7,
-			55, 3, 0, 0, 0, 7, 74, 0, 0, 0, 16, 0, 6, 0, 108, 33, 79, 5, 0, 0, 0, 5, 99, 0, 0, 0, 8, 0, 7, 0,
-			95, 33, 80, 4, 0, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 57, 33, 109, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0,
-			0, 0, 93, 33, 110, 2, 32, 32, 95, 0, 85, 0, 0, 0, 0, 0, 0, 0, 75, 33, 111, 2, 33, 33, 75, 0, 121, 0, 0, 0,
-			0, 0, 0, 0, 31, 33, 112, 2, 33, 33, 77, 0, 89, 0, 0, 0, 0, 0, 0, 0, 43, 33, 113, 2, 33, 33, 77, 0, 73, 0,
-			0, 0, 0, 0, 0, 0, 29, 33, 124, 2, 31, 31, 75, 0, 87, 0, 0, 0, 0, 0, 0, 0, 59, 33, 125, 2, 28, 28, 90, 0,
-			71, 0, 0, 0, 0, 0, 128, 0, 102, 0, 126, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 18, 3, 0, 0, 0, 0, 0, 0, 107, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 142, 33, 35, 2, 29, 29, 105, 0, 101, 0,
-			0, 0, 0, 0, 0, 0, 136, 33, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0, 129, 33, 37, 2, 31, 31, 95, 0,
-			111, 0, 0, 0, 0, 0, 0, 0, 146, 33, 39, 2, 32, 32, 110, 0, 117, 0, 0, 0, 0, 0, 0, 0, 150, 33, 40, 2, 33, 33,
-			100, 0, 74, 0, 0, 0, 16, 0, 6, 0, 183, 33, 79, 5, 0, 80, 0, 5, 99, 0, 0, 0, 8, 0, 7, 0, 170, 33, 80, 4,
-			0, 79, 0, 2, 120, 0, 0, 0, 8, 0, 8, 0, 160, 33, 101, 6, 0, 0, 0, 3, 69, 0, 0, 0, 0, 0, 0, 0, 138, 33,
-			109, 2, 29, 29, 75, 0, 85, 0, 0, 0, 0, 0, 0, 0, 148, 33, 111, 2, 33, 33, 65, 0, 121, 0, 0, 0, 0, 0, 0, 0,
-			152, 33, 112, 2, 33, 33, 80, 0, 101, 85, 0, 0, 0, 0, 0, 0, 156, 33, 115, 2, 30, 31, 140, 0, 101, 73, 0, 0, 0, 0,
-			0, 0, 154, 33, 118, 2, 30, 31, 140, 0, 73, 0, 0, 0, 0, 0, 0, 0, 131, 33, 124, 2, 28, 28, 55, 0, 69, 35, 0, 0,
-			0, 0, 0, 0, 140, 33, 125, 2, 30, 30, 70, 0, 56, 0, 0, 0, 0, 0, 0, 0, 144, 33, 126, 2, 28, 28, 80, 0, 86, 0,
-			0, 0, 0, 0, 0, 0, 158, 33, 127, 2, 28, 28, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			15, 3, 0, 0, 0, 0, 0, 0, 105, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 198, 33, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 200, 33, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 208, 33, 36, 2, 30, 30, 90, 0, 105, 0,
-			0, 0, 0, 0, 0, 0, 210, 33, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 215, 33, 39, 2, 32, 32, 90, 0,
-			117, 0, 0, 0, 0, 0, 0, 0, 217, 33, 40, 2, 33, 33, 90, 0, 100, 0, 0, 0, 16, 0, 4, 0, 12, 3, 72, 5, 0, 47,
-			0, 5, 69, 0, 0, 0, 0, 0, 0, 0, 203, 33, 109, 2, 30, 30, 90, 0, 79, 0, 0, 0, 0, 0, 0, 0, 213, 33, 110, 2,
-			32, 32, 90, 0, 97, 85, 0, 0, 0, 0, 0, 0, 223, 33, 114, 2, 29, 33, 120, 0, 97, 73, 0, 0, 0, 0, 0, 0, 219, 33,
-			117, 2, 29, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 221, 33, 118, 2, 30, 31, 120, 0, 69, 50, 0, 0, 0, 0, 0, 0,
-			206, 33, 124, 2, 30, 30, 90, 0, 64, 85, 0, 0, 0, 0, 0, 0, 225, 33, 125, 2, 28, 33, 120, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, 115, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 227, 33,
-			13, 2, 28, 28, 75, 0, 97, 0, 0, 0, 0, 0, 0, 0, 240, 33, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0,
-			0, 34, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 5, 34, 37, 2, 31, 31, 70, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 28, 34, 40, 2, 33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 3, 0, 7, 5, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 79, 34, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 156, 34, 49, 4, 0, 81, 0, 2, 119, 0,
-			0, 0, 0, 0, 0, 0, 75, 34, 58, 3, 0, 0, 0, 7, 76, 0, 0, 0, 0, 0, 0, 0, 42, 34, 64, 3, 0, 0, 0, 7,
-			100, 0, 0, 0, 16, 0, 4, 0, 95, 34, 72, 5, 0, 47, 0, 5, 100, 90, 59, 0, 48, 2, 6, 0, 136, 34, 77, 5, 0, 78,
-			0, 5, 99, 0, 0, 0, 40, 2, 7, 0, 29, 5, 80, 4, 0, 77, 0, 2, 122, 0, 0, 0, 48, 0, 4, 0, 122, 34, 88, 7,
-			0, 89, 0, 6, 64, 47, 0, 0, 0, 0, 0, 0, 229, 33, 108, 2, 28, 28, 50, 0, 86, 0, 0, 0, 0, 0, 0, 0, 231, 33,
-			109, 2, 28, 28, 85, 0, 73, 35, 0, 0, 0, 0, 0, 0, 237, 33, 110, 2, 28, 28, 85, 0, 97, 47, 0, 0, 0, 0, 0, 0,
-			245, 33, 111, 2, 29, 29, 85, 0, 65, 0, 0, 0, 0, 0, 0, 0, 247, 33, 112, 2, 29, 29, 85, 0, 69, 0, 0, 0, 0, 0,
-			0, 0, 252, 33, 113, 2, 30, 30, 85, 0, 69, 35, 0, 0, 0, 0, 0, 0, 254, 33, 114, 2, 28, 28, 85, 0, 73, 0, 0, 0,
-			0, 0, 0, 0, 19, 34, 115, 2, 31, 31, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 21, 34, 116, 2, 33, 33, 80, 0, 79, 0,
-			0, 0, 0, 0, 0, 0, 23, 34, 117, 2, 32, 32, 85, 0, 97, 73, 0, 0, 0, 0, 0, 0, 30, 34, 118, 2, 29, 31, 110, 0,
-			101, 73, 0, 0, 0, 0, 0, 0, 32, 34, 119, 2, 30, 31, 110, 0, 79, 73, 0, 0, 0, 0, 0, 0, 34, 34, 120, 2, 32, 31,
-			110, 0, 121, 69, 0, 0, 0, 0, 0, 0, 36, 34, 121, 2, 33, 30, 120, 0, 108, 47, 52, 0, 0, 0, 0, 0, 38, 34, 122, 3,
-			0, 0, 0, 7, 108, 108, 0, 0, 0, 0, 0, 0, 62, 34, 123, 3, 0, 0, 0, 7, 116, 115, 0, 0, 40, 0, 4, 0, 18, 6,
-			124, 4, 0, 125, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 31, 6, 125, 5, 0, 124, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 104, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 169, 34, 13, 2,
-			28, 28, 80, 0, 116, 35, 0, 0, 8, 0, 4, 0, 242, 4, 25, 4, 0, 0, 0, 2, 97, 0, 0, 0, 0, 0, 0, 0, 177, 34,
-			35, 2, 29, 29, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 175, 34, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0,
-			171, 34, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 179, 34, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0,
-			0, 0, 181, 34, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0, 7, 5, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0,
-			8, 0, 1, 0, 52, 6, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 113, 6, 49, 4, 0, 0, 0, 2, 99, 0,
-			0, 0, 40, 0, 7, 0, 100, 6, 80, 4, 0, 0, 0, 2, 81, 0, 0, 0, 16, 0, 10, 0, 204, 4, 100, 7, 0, 0, 0, 6,
-			121, 0, 0, 0, 0, 0, 0, 0, 173, 34, 108, 2, 31, 31, 80, 0, 87, 0, 0, 0, 0, 0, 0, 0, 183, 34, 109, 2, 28, 28,
-			90, 0, 97, 73, 0, 0, 0, 0, 0, 0, 185, 34, 110, 2, 29, 31, 120, 0, 101, 73, 0, 0, 0, 0, 0, 0, 187, 34, 111, 2,
-			30, 31, 120, 0, 105, 64, 0, 0, 0, 0, 0, 0, 189, 34, 112, 2, 31, 28, 120, 0, 112, 35, 0, 0, 8, 0, 1, 0, 71, 6,
-			113, 4, 0, 0, 0, 2, 116, 115, 35, 0, 40, 0, 4, 0, 18, 6, 114, 4, 0, 0, 0, 2, 107, 35, 0, 0, 8, 0, 8, 0,
-			126, 6, 115, 4, 0, 0, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 31, 6, 116, 5, 0, 117, 0, 5, 116, 115, 0, 0, 40, 0,
-			4, 0, 191, 34, 117, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0,
-			0, 0, 0, 0, 100, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 201, 34, 13, 2, 28, 28, 65, 0, 114, 0, 0, 0, 0, 0, 0, 0,
-			244, 34, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 0, 0, 216, 34, 35, 2, 29, 29, 75, 0, 101, 0, 0, 0, 0, 0,
-			0, 0, 208, 34, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 205, 34, 37, 2, 31, 31, 75, 0, 111, 0, 0, 0,
-			0, 0, 0, 0, 222, 34, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 220, 34, 40, 2, 33, 33, 75, 0, 116, 0,
-			0, 0, 8, 0, 4, 0, 37, 35, 47, 4, 0, 72, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0, 11, 35, 48, 4, 0, 71, 0, 2,
-			82, 0, 0, 0, 0, 0, 0, 0, 248, 34, 51, 3, 0, 0, 0, 7, 108, 0, 0, 0, 0, 0, 0, 0, 240, 34, 55, 3, 0, 0,
-			0, 7, 118, 0, 0, 0, 16, 0, 2, 0, 238, 3, 84, 7, 0, 83, 0, 6, 115, 0, 0, 0, 40, 0, 4, 0, 252, 34, 89, 6,
-			0, 88, 0, 3, 51, 0, 0, 0, 2, 0, 0, 0, 203, 34, 108, 2, 29, 29, 65, 0, 69, 0, 0, 0, 0, 0, 0, 0, 210, 34,
-			109, 2, 30, 30, 75, 0, 38, 0, 0, 0, 0, 0, 0, 0, 212, 34, 110, 2, 30, 30, 75, 0, 38, 35, 0, 0, 0, 0, 0, 0,
-			214, 34, 111, 2, 30, 30, 60, 0, 65, 0, 0, 0, 0, 0, 0, 0, 218, 34, 112, 2, 29, 29, 75, 0, 79, 0, 0, 0, 0, 0,
-			0, 0, 224, 34, 113, 2, 32, 32, 75, 0, 86, 0, 0, 0, 0, 0, 0, 0, 226, 34, 114, 2, 28, 28, 75, 0, 48, 0, 0, 0,
-			0, 0, 0, 0, 228, 34, 115, 2, 32, 32, 75, 0, 121, 0, 0, 0, 0, 0, 0, 0, 230, 34, 116, 2, 31, 31, 75, 0, 89, 0,
-			0, 0, 0, 0, 0, 0, 232, 34, 117, 2, 31, 31, 75, 0, 87, 0, 0, 0, 0, 0, 0, 0, 234, 34, 118, 2, 28, 28, 75, 0,
-			87, 35, 0, 0, 0, 0, 0, 0, 236, 34, 119, 2, 28, 28, 75, 0, 97, 73, 0, 0, 0, 0, 0, 0, 238, 34, 120, 2, 29, 31,
-			125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 107, 97, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 2, 0, 0, 0, 52, 35, 13, 2, 28, 28, 60, 0, 116, 35, 0, 0, 8, 0, 4, 0, 242, 4, 25, 4, 0, 0, 0, 2,
-			114, 0, 0, 0, 128, 0, 0, 0, 120, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 61, 35, 35, 2, 29, 29,
-			90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 56, 35, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 54, 35, 37, 2,
-			31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 63, 35, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 65, 35,
-			40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 4, 0, 87, 6, 47, 4, 0, 0, 0, 2, 112, 0, 0, 0, 8, 0, 1, 0,
-			52, 6, 48, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 113, 6, 49, 4, 0, 0, 0, 2, 99, 0, 0, 0, 40, 0,
-			7, 0, 100, 6, 80, 4, 0, 0, 0, 2, 81, 0, 0, 0, 16, 0, 10, 0, 204, 4, 100, 7, 0, 0, 0, 6, 112, 35, 0, 0,
-			8, 0, 1, 0, 71, 6, 108, 4, 0, 0, 0, 2, 116, 115, 35, 0, 40, 0, 4, 0, 18, 6, 109, 4, 0, 0, 0, 2, 107, 35,
-			0, 0, 8, 0, 8, 0, 67, 35, 110, 4, 0, 81, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 31, 6, 111, 5, 0, 112, 0, 5,
-			116, 115, 0, 0, 40, 0, 4, 0, 83, 35, 112, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 15, 3, 0, 0, 0, 0, 0, 0, 114, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 60, 0, 97, 0,
-			0, 0, 0, 0, 0, 0, 93, 35, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 106, 35, 36, 2, 30, 30, 85, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 112, 35, 37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 118, 35, 39, 2, 32, 32,
-			85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 124, 35, 40, 2, 33, 33, 80, 0, 97, 47, 0, 0, 0, 0, 0, 0, 100, 35, 108, 2,
-			28, 28, 90, 0, 97, 35, 0, 0, 0, 0, 0, 0, 130, 35, 124, 2, 28, 28, 50, 0, 101, 35, 0, 0, 0, 0, 0, 0, 134, 35,
-			125, 2, 30, 30, 50, 0, 105, 35, 0, 0, 0, 0, 0, 0, 138, 35, 126, 2, 31, 31, 50, 0, 111, 35, 0, 0, 0, 0, 0, 0,
-			142, 35, 127, 2, 32, 32, 50, 0, 117, 35, 0, 0, 0, 0, 0, 0, 146, 35, 128, 2, 33, 33, 50, 0, 43, 0, 0, 0, 0, 0,
-			0, 0, 150, 35, 129, 1, 0, 30, 0, 0, 43, 50, 0, 0, 0, 0, 0, 0, 153, 35, 130, 1, 0, 30, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 21, 0, 0, 0, 0, 0, 0, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 32, 0,
-			174, 35, 35, 2, 29, 29, 115, 0, 101, 0, 0, 0, 0, 0, 0, 0, 172, 35, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0,
-			0, 0, 169, 35, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 176, 35, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0,
-			0, 0, 0, 0, 178, 35, 40, 2, 33, 33, 80, 0, 86, 0, 0, 0, 0, 0, 0, 0, 156, 35, 109, 2, 28, 28, 80, 0, 64, 51,
-			0, 0, 0, 0, 0, 0, 162, 35, 110, 2, 28, 28, 70, 0, 97, 73, 0, 0, 0, 0, 32, 0, 180, 35, 134, 2, 29, 31, 120, 0,
-			97, 85, 0, 0, 0, 0, 32, 0, 182, 35, 135, 2, 29, 33, 120, 0, 64, 47, 0, 0, 0, 0, 0, 0, 164, 35, 149, 2, 28, 28,
-			65, 0, 101, 73, 0, 0, 0, 0, 32, 0, 184, 35, 150, 2, 30, 31, 120, 0, 101, 85, 0, 0, 0, 0, 32, 0, 186, 35, 151, 2,
-			30, 33, 120, 0, 86, 73, 0, 0, 0, 0, 32, 0, 188, 35, 152, 2, 28, 31, 120, 0, 86, 85, 0, 0, 0, 0, 32, 0, 190, 35,
-			153, 2, 28, 33, 120, 0, 111, 73, 0, 0, 0, 0, 32, 0, 192, 35, 154, 2, 32, 31, 120, 0, 111, 85, 0, 0, 0, 0, 32, 0,
-			194, 35, 155, 2, 32, 33, 120, 0, 117, 73, 0, 0, 0, 0, 32, 0, 196, 35, 156, 2, 33, 31, 120, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 21, 0, 0, 0, 0, 0, 0, 112, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 201, 35,
-			13, 2, 28, 28, 65, 0, 97, 0, 0, 0, 0, 0, 32, 0, 222, 35, 35, 2, 29, 29, 110, 0, 101, 0, 0, 0, 0, 0, 32, 0,
-			218, 35, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 32, 0, 212, 35, 37, 2, 31, 31, 110, 0, 117, 0, 0, 0, 0, 0,
-			32, 0, 230, 35, 40, 2, 33, 33, 110, 0, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 0, 0, 6, 86, 0, 0, 0,
-			0, 0, 0, 0, 206, 35, 109, 2, 28, 28, 65, 0, 73, 0, 0, 0, 0, 0, 0, 0, 215, 35, 113, 2, 31, 31, 75, 0, 69, 0,
-			0, 0, 0, 0, 32, 0, 220, 35, 116, 2, 30, 30, 100, 0, 111, 58, 0, 0, 0, 0, 32, 0, 226, 35, 119, 2, 32, 32, 110, 0,
-			79, 0, 0, 0, 0, 0, 32, 0, 224, 35, 121, 2, 32, 32, 100, 0, 85, 0, 0, 0, 0, 0, 0, 0, 228, 35, 122, 2, 33, 33,
-			75, 0, 43, 0, 0, 0, 0, 0, 0, 0, 198, 35, 149, 1, 5, 30, 0, 0, 101, 73, 0, 0, 0, 0, 0, 0, 249, 7, 150, 2,
-			30, 31, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 112, 114,
-			115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			105, 0, 0, 0, 0, 0, 0, 0, 232, 35, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 239, 35, 39, 2, 32, 32,
-			85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 241, 35, 40, 2, 33, 33, 85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 235, 35, 108, 2,
-			30, 30, 85, 0, 65, 0, 0, 0, 0, 0, 0, 0, 237, 35, 109, 2, 29, 29, 90, 0, 101, 73, 0, 0, 0, 0, 0, 0, 243, 35,
-			110, 2, 30, 31, 105, 0, 97, 85, 0, 0, 0, 0, 0, 0, 245, 35, 111, 2, 29, 33, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 10, 30, 0, 0, 0, 0, 0, 0, 115, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 247, 35, 13, 2,
-			28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 254, 35, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 36,
-			36, 2, 30, 30, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 249, 35, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0,
-			4, 36, 39, 2, 32, 32, 80, 0, 117, 0, 0, 0, 0, 0, 0, 0, 252, 35, 40, 2, 33, 33, 70, 0, 118, 0, 0, 0, 16, 0,
-			2, 0, 238, 3, 84, 7, 0, 0, 0, 6, 69, 0, 0, 0, 0, 0, 0, 0, 2, 36, 109, 2, 30, 30, 80, 0, 79, 0, 0, 0,
-			0, 0, 0, 0, 6, 36, 111, 2, 32, 32, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1,
-			0, 0, 0, 0, 0, 0, 103, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 8, 0, 3, 0, 200, 18, 47, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0,
-			8, 0, 54, 5, 49, 4, 0, 0, 0, 2, 98, 0, 0, 0, 8, 0, 1, 0, 122, 30, 71, 4, 0, 0, 0, 5, 100, 0, 0, 0,
-			8, 0, 3, 0, 7, 5, 72, 4, 0, 0, 0, 2, 103, 0, 0, 0, 8, 0, 8, 0, 113, 6, 81, 4, 0, 0, 0, 2, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 110, 115, 111, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 25, 0, 64, 0, 0, 0, 0, 0, 0, 0, 206, 42, 13, 2, 28, 28, 80, 0,
+			97, 0, 0, 0, 0, 0, 0, 0, 212, 42, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 217, 42, 36, 2, 30, 30,
+			85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 208, 42, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 228, 42, 39, 2,
+			32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 210, 42, 40, 2, 33, 33, 80, 0, 116, 0, 0, 0, 8, 0, 3, 0, 238, 42,
+			47, 4, 0, 72, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 252, 42, 49, 4, 0, 81, 0, 2, 118, 0, 0, 0, 16, 0, 2, 0,
+			241, 3, 84, 7, 0, 0, 0, 6, 69, 0, 0, 0, 0, 0, 0, 0, 222, 42, 109, 2, 30, 30, 80, 0, 69, 35, 0, 0, 0, 0,
+			0, 0, 224, 42, 110, 2, 30, 30, 80, 0, 79, 0, 0, 0, 0, 0, 0, 0, 233, 42, 111, 2, 32, 32, 85, 0, 121, 0, 0, 0,
+			0, 0, 0, 0, 32, 43, 112, 2, 31, 31, 85, 0, 101, 43, 0, 0, 0, 0, 0, 0, 220, 42, 121, 2, 30, 30, 90, 0, 111, 43,
+			0, 0, 0, 0, 0, 0, 231, 42, 122, 2, 32, 32, 90, 0, 82, 94, 0, 0, 48, 0, 6, 0, 20, 25, 123, 7, 0, 0, 0, 6,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 0, 0, 103, 100, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+			2, 0, 0, 0, 36, 43, 13, 2, 28, 28, 65, 0, 42, 0, 0, 0, 16, 0, 4, 0, 143, 43, 16, 5, 0, 0, 0, 5, 97, 0,
+			0, 0, 0, 0, 0, 0, 57, 43, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 47, 43, 36, 2, 30, 30, 65, 0,
+			105, 0, 0, 0, 0, 0, 0, 0, 41, 43, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 68, 43, 39, 2, 32, 32,
+			65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 73, 43, 40, 2, 33, 33, 65, 0, 116, 0, 0, 0, 8, 0, 3, 0, 26, 20, 47, 4,
+			0, 0, 0, 2, 82, 0, 0, 0, 128, 0, 0, 0, 136, 0, 51, 3, 0, 0, 0, 6, 98, 0, 0, 0, 8, 0, 1, 0, 133, 32,
+			71, 4, 0, 0, 0, 5, 100, 0, 0, 0, 8, 0, 4, 0, 143, 32, 72, 4, 0, 0, 0, 5, 103, 0, 0, 0, 8, 0, 8, 0,
+			156, 32, 81, 4, 0, 0, 0, 5, 83, 0, 0, 0, 40, 2, 7, 0, 138, 43, 91, 6, 0, 0, 0, 0, 73, 0, 0, 0, 2, 0,
+			0, 0, 34, 43, 108, 2, 31, 31, 65, 0, 105, 58, 0, 0, 0, 0, 32, 0, 38, 43, 109, 2, 31, 31, 120, 0, 101, 58, 0, 0,
+			0, 0, 32, 0, 44, 43, 110, 2, 30, 30, 120, 0, 69, 58, 0, 0, 0, 0, 32, 0, 50, 43, 111, 2, 30, 30, 120, 0, 69, 0,
+			0, 0, 0, 0, 0, 0, 52, 43, 112, 2, 30, 30, 65, 0, 97, 58, 0, 0, 0, 0, 32, 0, 54, 43, 113, 2, 29, 29, 120, 0,
+			97, 50, 0, 0, 0, 0, 0, 0, 60, 43, 114, 2, 29, 29, 65, 0, 79, 58, 0, 0, 0, 0, 32, 0, 62, 43, 115, 2, 32, 32,
+			120, 0, 79, 0, 0, 0, 0, 0, 0, 0, 64, 43, 116, 2, 32, 32, 65, 0, 111, 58, 0, 0, 0, 0, 32, 0, 66, 43, 117, 2,
+			32, 32, 120, 0, 117, 58, 0, 0, 0, 0, 32, 0, 70, 43, 118, 2, 33, 33, 120, 0, 117, 45, 0, 0, 0, 0, 32, 0, 79, 43,
+			119, 2, 28, 28, 65, 0, 111, 45, 0, 0, 0, 0, 0, 0, 88, 43, 120, 2, 28, 28, 65, 0, 105, 64, 0, 0, 0, 0, 32, 0,
+			93, 43, 121, 2, 31, 28, 120, 0, 105, 97, 0, 0, 0, 0, 32, 0, 96, 43, 122, 2, 31, 28, 120, 0, 117, 64, 0, 0, 0, 0,
+			32, 0, 99, 43, 123, 2, 33, 28, 120, 0, 97, 73, 0, 0, 0, 0, 32, 0, 101, 43, 124, 2, 29, 31, 120, 0, 101, 73, 0, 0,
+			0, 0, 32, 0, 104, 43, 125, 2, 30, 31, 120, 0, 64, 73, 0, 0, 0, 0, 32, 0, 106, 43, 126, 2, 28, 31, 120, 0, 117, 45,
+			73, 0, 0, 0, 32, 0, 108, 43, 127, 2, 28, 31, 120, 0, 97, 85, 0, 0, 0, 0, 32, 0, 113, 43, 128, 2, 29, 33, 120, 0,
+			79, 85, 0, 0, 0, 0, 32, 0, 116, 43, 129, 2, 28, 33, 120, 0, 100, 59, 0, 0, 40, 0, 6, 0, 122, 20, 130, 4, 0, 0,
+			0, 2, 103, 59, 0, 0, 8, 0, 8, 0, 118, 43, 131, 4, 0, 0, 0, 0, 107, 59, 0, 0, 8, 0, 8, 0, 128, 43, 132, 4,
+			0, 0, 0, 0, 116, 59, 0, 0, 40, 2, 7, 0, 131, 20, 133, 4, 0, 0, 0, 2, 110, 91, 0, 0, 16, 0, 4, 0, 220, 1,
+			134, 8, 0, 0, 0, 4, 42, 59, 0, 0, 16, 0, 3, 0, 0, 4, 135, 7, 0, 0, 0, 6, 38, 0, 0, 0, 2, 0, 0, 0,
+			170, 43, 136, 2, 28, 28, 65, 0, 35, 0, 0, 0, 8, 0, 12, 0, 208, 43, 137, 6, 0, 0, 0, 0, 104, 35, 0, 0, 8, 0,
+			12, 0, 227, 43, 138, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0,
+			0, 0, 0, 0, 110, 115, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 236, 43, 35, 2, 28, 28, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			234, 43, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 232, 43, 37, 2, 31, 31, 55, 0, 111, 0, 0, 0, 0, 0,
+			0, 0, 238, 43, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 240, 43, 40, 2, 33, 33, 85, 0, 116, 0, 0, 0,
+			8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 100, 0, 0, 0, 16, 0, 3, 0, 2, 7, 72, 5, 0, 0, 0, 5, 85, 0,
+			0, 0, 0, 0, 0, 0, 198, 6, 108, 2, 33, 33, 90, 0, 69, 0, 0, 0, 0, 0, 0, 0, 187, 6, 109, 2, 30, 30, 90, 0,
+			75, 0, 0, 0, 8, 0, 4, 0, 242, 43, 110, 6, 0, 0, 0, 3, 120, 50, 0, 0, 8, 0, 8, 0, 71, 12, 111, 6, 0, 0,
+			0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 20, 0, 0, 0, 0, 0, 0, 104, 116, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
+			0, 0, 0, 0, 0, 0, 4, 44, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 6, 44, 36, 2, 30, 30, 85, 0,
+			105, 0, 0, 0, 0, 0, 0, 0, 10, 44, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 13, 44, 39, 2, 32, 32,
+			85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 17, 44, 40, 2, 33, 33, 90, 0, 69, 0, 0, 0, 0, 0, 0, 0, 8, 44, 112, 2,
+			30, 30, 85, 0, 65, 126, 0, 0, 0, 0, 0, 0, 19, 44, 113, 2, 29, 29, 100, 0, 69, 126, 0, 0, 0, 0, 0, 0, 21, 44,
+			114, 2, 30, 30, 100, 0, 79, 126, 0, 0, 0, 0, 0, 0, 23, 44, 116, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0,
+			15, 44, 127, 2, 32, 32, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 62, 0, 0, 0, 0,
+			0, 0, 97, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 47, 44, 13, 2, 28, 28, 90, 0, 97, 0, 0, 0, 0, 0, 0, 0, 42, 44,
+			35, 2, 29, 29, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 27, 44, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+			25, 44, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 40, 44, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 38, 44, 40, 2, 33, 33, 90, 0, 121, 0, 0, 0, 0, 0, 0, 0, 34, 44, 112, 2, 33, 33, 100, 0, 38, 0, 0, 0,
+			0, 0, 0, 0, 29, 44, 125, 2, 30, 30, 100, 0, 87, 0, 0, 0, 0, 0, 0, 0, 36, 44, 126, 2, 28, 28, 100, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 97, 107, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0,
-			0, 0, 12, 36, 35, 2, 28, 28, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 10, 36, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0,
-			0, 0, 0, 0, 8, 36, 37, 2, 31, 31, 55, 0, 111, 0, 0, 0, 0, 0, 0, 0, 14, 36, 39, 2, 32, 32, 90, 0, 117, 0,
-			0, 0, 0, 0, 0, 0, 16, 36, 40, 2, 33, 33, 85, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6, 47, 4, 0, 0, 0, 2,
-			100, 0, 0, 0, 16, 0, 3, 0, 233, 6, 72, 5, 0, 0, 0, 5, 85, 0, 0, 0, 0, 0, 0, 0, 173, 6, 108, 2, 33, 33,
-			80, 0, 69, 0, 0, 0, 0, 0, 0, 0, 162, 6, 109, 2, 30, 30, 85, 0, 75, 0, 0, 0, 8, 0, 4, 0, 18, 36, 110, 6,
-			0, 0, 0, 3, 120, 50, 0, 0, 8, 0, 8, 0, 245, 11, 111, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 11, 19, 0, 0, 0, 0, 0, 0, 104, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 36, 36, 35, 2, 29, 29,
-			85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 38, 36, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 42, 36, 37, 2,
-			31, 31, 80, 0, 111, 0, 0, 0, 0, 0, 0, 0, 45, 36, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 49, 36,
-			40, 2, 33, 33, 90, 0, 69, 0, 0, 0, 0, 0, 0, 0, 40, 36, 112, 2, 30, 30, 85, 0, 65, 126, 0, 0, 0, 0, 0, 0,
-			51, 36, 113, 2, 29, 29, 100, 0, 69, 126, 0, 0, 0, 0, 0, 0, 53, 36, 114, 2, 30, 30, 100, 0, 79, 126, 0, 0, 0, 0,
-			0, 0, 55, 36, 116, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 47, 36, 127, 2, 32, 32, 85, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 54, 0, 0, 0, 0, 0, 0, 97, 122, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 57, 44, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 53, 44, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0,
+			0, 0, 0, 0, 51, 44, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0, 61, 44, 39, 2, 32, 32, 85, 0, 117, 0,
+			0, 0, 0, 0, 0, 0, 63, 44, 40, 2, 33, 33, 85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 55, 44, 108, 2, 30, 30, 85, 0,
+			79, 0, 0, 0, 0, 0, 0, 0, 59, 44, 109, 2, 32, 32, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 15, 1, 0, 0, 0, 0, 0, 0, 97, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 79, 44, 13, 2, 28, 28, 110, 0, 114, 0,
+			0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 74, 44, 35, 2, 29, 29, 110, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 68, 44, 36, 2, 30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0, 65, 44, 37, 2, 31, 31,
+			100, 0, 111, 0, 0, 0, 0, 0, 0, 0, 84, 44, 39, 2, 32, 32, 110, 0, 117, 0, 0, 0, 0, 0, 0, 0, 86, 44, 40, 2,
+			33, 33, 110, 0, 98, 0, 0, 0, 16, 0, 1, 0, 98, 44, 71, 5, 0, 0, 0, 0, 120, 0, 0, 0, 8, 0, 8, 0, 136, 44,
+			101, 6, 0, 0, 0, 3, 121, 0, 0, 0, 0, 0, 0, 0, 70, 44, 108, 2, 28, 28, 90, 0, 112, 96, 0, 0, 8, 0, 1, 0,
+			88, 44, 109, 4, 0, 71, 0, 2, 116, 96, 0, 0, 8, 0, 4, 0, 104, 44, 110, 4, 0, 72, 0, 2, 116, 83, 96, 0, 40, 0,
+			6, 0, 117, 44, 111, 4, 0, 75, 0, 2, 107, 96, 0, 0, 8, 0, 8, 0, 126, 44, 112, 4, 0, 0, 0, 2, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 119, 111, 0, 0, 0, 0, 0, 0, 0, 0,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
-			73, 36, 13, 2, 28, 28, 80, 0, 97, 0, 0, 0, 0, 0, 0, 0, 71, 36, 35, 2, 29, 29, 100, 0, 101, 0, 0, 0, 0, 0,
-			0, 0, 59, 36, 36, 2, 30, 30, 80, 0, 105, 0, 0, 0, 0, 0, 0, 0, 57, 36, 37, 2, 31, 31, 80, 0, 111, 0, 0, 0,
-			0, 0, 0, 0, 69, 36, 39, 2, 32, 32, 80, 0, 117, 0, 0, 0, 0, 0, 0, 0, 67, 36, 40, 2, 33, 33, 80, 0, 121, 0,
-			0, 0, 0, 0, 0, 0, 63, 36, 112, 2, 33, 33, 100, 0, 87, 0, 0, 0, 0, 0, 0, 0, 65, 36, 125, 2, 28, 28, 90, 0,
-			38, 0, 0, 0, 0, 0, 0, 0, 61, 36, 127, 2, 30, 30, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 8, 1, 0, 0, 0, 0, 0, 0, 97, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 83, 36, 35, 2, 29, 29, 85, 0, 101, 0,
-			0, 0, 0, 0, 0, 0, 79, 36, 36, 2, 30, 30, 85, 0, 105, 0, 0, 0, 0, 0, 0, 0, 77, 36, 37, 2, 31, 31, 85, 0,
-			111, 0, 0, 0, 0, 0, 0, 0, 87, 36, 39, 2, 32, 32, 85, 0, 117, 0, 0, 0, 0, 0, 0, 0, 89, 36, 40, 2, 33, 33,
-			85, 0, 69, 0, 0, 0, 0, 0, 0, 0, 81, 36, 108, 2, 30, 30, 85, 0, 79, 0, 0, 0, 0, 0, 0, 0, 85, 36, 109, 2,
-			32, 32, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 0, 0, 97, 109,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			64, 0, 0, 0, 0, 0, 0, 0, 105, 36, 13, 2, 28, 28, 110, 0, 114, 0, 0, 0, 128, 0, 0, 0, 138, 0, 34, 3, 0, 0,
-			0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 100, 36, 35, 2, 29, 29, 110, 0, 101, 0, 0, 0, 0, 0, 0, 0, 94, 36, 36, 2,
-			30, 30, 110, 0, 105, 0, 0, 0, 0, 0, 0, 0, 91, 36, 37, 2, 31, 31, 100, 0, 111, 0, 0, 0, 0, 0, 0, 0, 110, 36,
-			39, 2, 32, 32, 110, 0, 117, 0, 0, 0, 0, 0, 0, 0, 112, 36, 40, 2, 33, 33, 110, 0, 98, 0, 0, 0, 16, 0, 1, 0,
-			124, 36, 71, 5, 0, 0, 0, 0, 120, 0, 0, 0, 8, 0, 8, 0, 162, 36, 101, 6, 0, 0, 0, 3, 121, 0, 0, 0, 0, 0,
-			0, 0, 96, 36, 108, 2, 28, 28, 90, 0, 112, 96, 0, 0, 8, 0, 1, 0, 114, 36, 109, 4, 0, 71, 0, 2, 116, 96, 0, 0,
-			8, 0, 4, 0, 130, 36, 110, 4, 0, 72, 0, 2, 116, 83, 96, 0, 40, 0, 6, 0, 143, 36, 111, 4, 0, 75, 0, 2, 107, 96,
-			0, 0, 8, 0, 8, 0, 152, 36, 112, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			18, 1, 0, 0, 0, 0, 0, 0, 119, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 168, 36, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 186, 36, 35, 2, 29, 29, 70, 0, 101, 0, 0, 0, 0, 0, 0, 0, 178, 36, 36, 2, 30, 30, 70, 0, 105, 0,
-			0, 0, 0, 0, 0, 0, 172, 36, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0, 0, 0, 0, 0, 194, 36, 39, 2, 32, 32, 70, 0,
-			117, 0, 0, 0, 0, 0, 0, 0, 198, 36, 40, 2, 33, 33, 70, 0, 64, 58, 0, 0, 0, 0, 0, 0, 170, 36, 108, 2, 28, 28,
-			135, 0, 105, 58, 0, 0, 0, 0, 0, 0, 175, 36, 109, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 180, 36, 110, 2,
-			30, 30, 135, 0, 69, 0, 0, 0, 0, 0, 0, 0, 182, 36, 111, 2, 30, 30, 70, 0, 69, 58, 0, 0, 0, 0, 0, 0, 184, 36,
-			112, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 188, 36, 113, 2, 29, 29, 135, 0, 79, 0, 0, 0, 0, 0, 0, 0,
-			190, 36, 114, 2, 32, 32, 70, 0, 79, 58, 0, 0, 0, 0, 0, 0, 192, 36, 115, 2, 32, 32, 135, 0, 111, 58, 0, 0, 0, 0,
-			0, 0, 196, 36, 116, 2, 32, 32, 135, 0, 117, 58, 0, 0, 0, 0, 0, 0, 200, 36, 117, 2, 33, 33, 135, 0, 115, 50, 0, 0,
-			40, 0, 4, 0, 142, 6, 118, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 21,
-			0, 0, 0, 0, 0, 0, 100, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 202, 36, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0,
-			0, 0, 207, 36, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 211, 36, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0,
-			0, 0, 0, 0, 215, 36, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 219, 36, 40, 2, 33, 33, 55, 0, 116, 0,
-			0, 0, 8, 0, 3, 0, 220, 6, 47, 4, 0, 0, 0, 2, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 0, 0, 6,
-			105, 58, 0, 0, 0, 0, 0, 0, 213, 36, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 209, 36, 114, 2, 30, 30,
-			125, 0, 97, 58, 0, 0, 0, 0, 0, 0, 205, 36, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0, 0, 0, 217, 36, 119, 2,
-			32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 221, 36, 123, 2, 33, 33, 145, 0, 97, 73, 0, 0, 0, 0, 0, 0, 223, 36,
-			134, 2, 29, 31, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 0, 0, 0, 0, 0,
-			116, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 225, 36, 13, 2, 29, 29, 65, 0, 114, 0, 0, 0, 128, 0, 0, 0, 138, 0, 34, 3,
-			0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 32, 0, 227, 36, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 231, 36,
-			36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 235, 36, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0,
-			239, 36, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 243, 36, 40, 2, 33, 33, 55, 0, 118, 0, 0, 0, 16, 0,
-			2, 0, 201, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 237, 36, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0,
-			0, 0, 0, 0, 233, 36, 114, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 229, 36, 118, 2, 29, 29, 150, 0, 111, 58,
-			0, 0, 0, 0, 0, 0, 241, 36, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 245, 36, 123, 2, 33, 33, 140, 0,
-			97, 73, 0, 0, 0, 0, 32, 0, 247, 36, 134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 249, 36, 135, 2, 29, 33,
-			135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 21, 0, 0, 0, 0, 0, 0, 115, 105, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
-			0, 0, 0, 0, 0, 0, 251, 36, 13, 2, 29, 29, 65, 0, 114, 0, 0, 0, 0, 0, 128, 0, 72, 0, 34, 3, 0, 0, 0, 7,
-			97, 0, 0, 0, 0, 0, 32, 0, 253, 36, 35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 8, 37, 36, 2, 30, 30,
-			65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 12, 37, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 16, 37, 39, 2,
-			32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 20, 37, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6,
-			47, 4, 0, 0, 0, 2, 118, 0, 0, 0, 16, 0, 2, 0, 201, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0,
-			14, 37, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 10, 37, 114, 2, 30, 30, 135, 0, 38, 58, 0, 0, 0, 0,
-			0, 0, 6, 37, 117, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 2, 37, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0,
-			0, 0, 0, 0, 18, 37, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 22, 37, 123, 2, 33, 33, 140, 0, 97, 73,
-			0, 0, 0, 0, 32, 0, 24, 37, 134, 2, 29, 31, 140, 0, 97, 85, 0, 0, 0, 0, 32, 0, 26, 37, 135, 2, 29, 33, 135, 0,
-			38, 0, 0, 0, 0, 0, 0, 0, 4, 37, 149, 2, 30, 30, 65, 0, 109, 35, 0, 0, 16, 0, 1, 0, 183, 1, 150, 8, 0, 0,
-			0, 4, 110, 35, 0, 0, 16, 0, 4, 0, 223, 1, 151, 8, 0, 0, 0, 4, 110, 46, 35, 0, 16, 0, 5, 0, 4, 2, 152, 8,
-			50, 0, 0, 4, 110, 94, 35, 0, 16, 2, 7, 0, 42, 2, 153, 8, 0, 0, 0, 4, 78, 35, 0, 0, 16, 0, 8, 0, 82, 2,
-			154, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0,
-			116, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 59, 37, 13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0, 128, 0, 184, 37, 34, 3,
-			0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 86, 37, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0, 74, 37,
-			36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 66, 37, 37, 2, 31, 31, 85, 0, 111, 0, 0, 0, 0, 0, 0, 0,
-			98, 37, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 101, 37, 40, 2, 33, 33, 85, 0, 114, 45, 0, 0, 0, 0,
-			128, 0, 39, 37, 44, 3, 0, 0, 0, 0, 114, 47, 0, 0, 0, 0, 0, 0, 212, 37, 46, 3, 0, 0, 0, 7, 116, 0, 0, 0,
-			8, 0, 3, 0, 220, 6, 47, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 66, 7, 55, 3, 0, 0, 0, 7, 100, 0,
-			0, 0, 16, 0, 3, 0, 233, 6, 72, 5, 0, 0, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 221, 37, 76, 4, 0, 75, 0, 2,
-			116, 83, 59, 0, 40, 2, 7, 0, 230, 37, 78, 4, 0, 77, 0, 2, 73, 0, 0, 0, 0, 0, 0, 0, 68, 37, 108, 2, 31, 31,
-			65, 0, 73, 50, 0, 0, 2, 0, 0, 0, 71, 37, 109, 2, 31, 31, 65, 0, 101, 64, 0, 0, 0, 0, 0, 0, 77, 37, 110, 2,
-			31, 28, 115, 0, 69, 0, 0, 0, 2, 0, 0, 0, 83, 37, 111, 2, 30, 30, 70, 0, 65, 64, 0, 0, 0, 0, 0, 0, 90, 37,
-			112, 2, 29, 29, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 96, 37, 113, 2, 32, 32, 70, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			103, 37, 114, 2, 32, 32, 75, 0, 116, 115, 0, 0, 40, 0, 4, 0, 105, 37, 115, 4, 0, 0, 0, 2, 107, 104, 0, 0, 8, 0,
-			8, 0, 118, 37, 116, 4, 0, 81, 0, 2, 107, 45, 0, 0, 8, 0, 8, 0, 134, 37, 117, 4, 0, 81, 0, 2, 75, 0, 0, 0,
-			8, 0, 4, 0, 147, 37, 118, 6, 0, 0, 0, 3, 112, 104, 0, 0, 8, 0, 1, 0, 165, 37, 119, 4, 0, 71, 0, 2, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, 109, 116, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 12, 9, 0, 0, 80, 0, 97, 0, 0, 0, 0, 0, 0, 0, 251, 37, 35, 2, 29, 29, 85, 0, 101, 0, 0, 0,
-			0, 0, 0, 0, 249, 37, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 32, 0, 9, 38, 37, 2, 29, 31, 145, 0, 111, 0,
-			0, 0, 0, 0, 0, 0, 253, 37, 39, 2, 32, 32, 77, 0, 117, 0, 0, 0, 0, 0, 0, 0, 1, 38, 40, 2, 33, 33, 70, 0,
-			112, 0, 0, 0, 8, 0, 1, 0, 201, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 4, 7, 49, 4, 0, 81,
-			0, 2, 100, 0, 0, 0, 16, 0, 3, 0, 54, 38, 72, 5, 0, 47, 0, 5, 118, 0, 0, 0, 16, 0, 2, 0, 41, 38, 84, 7,
-			0, 83, 0, 6, 104, 0, 0, 0, 8, 0, 12, 0, 81, 38, 107, 6, 0, 0, 0, 3, 73, 0, 0, 0, 0, 0, 0, 0, 246, 37,
-			108, 2, 31, 31, 65, 0, 89, 0, 0, 0, 0, 0, 0, 0, 255, 37, 109, 2, 28, 28, 77, 0, 85, 0, 0, 0, 0, 0, 0, 0,
-			3, 38, 110, 2, 33, 33, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 5, 38, 111, 2, 33, 33, 75, 0, 97, 105, 0, 0, 0, 0,
-			32, 0, 7, 38, 112, 2, 29, 31, 155, 0, 111, 105, 0, 0, 0, 0, 32, 0, 11, 38, 113, 2, 32, 31, 140, 0, 101, 105, 0, 0,
-			0, 0, 32, 0, 13, 38, 114, 2, 30, 31, 140, 0, 89, 105, 0, 0, 0, 0, 32, 0, 15, 38, 115, 2, 28, 31, 135, 0, 117, 105,
-			0, 0, 0, 0, 32, 0, 17, 38, 116, 2, 33, 31, 135, 0, 121, 105, 0, 0, 0, 0, 32, 0, 19, 38, 117, 2, 33, 31, 135, 0,
-			97, 117, 0, 0, 0, 0, 32, 0, 21, 38, 118, 2, 29, 33, 150, 0, 111, 117, 0, 0, 0, 0, 32, 0, 23, 38, 119, 2, 32, 33,
-			140, 0, 101, 117, 0, 0, 0, 0, 32, 0, 25, 38, 120, 2, 30, 33, 140, 0, 105, 117, 0, 0, 0, 0, 32, 0, 27, 38, 121, 2,
-			31, 33, 140, 0, 101, 121, 0, 0, 0, 0, 32, 0, 29, 38, 122, 2, 30, 33, 140, 0, 89, 121, 0, 0, 0, 0, 32, 0, 31, 38,
-			123, 2, 28, 33, 135, 0, 105, 121, 0, 0, 0, 0, 32, 0, 33, 38, 124, 2, 31, 33, 130, 0, 117, 111, 0, 0, 0, 0, 32, 0,
-			35, 38, 125, 2, 33, 32, 140, 0, 105, 101, 0, 0, 0, 0, 32, 0, 37, 38, 126, 2, 31, 30, 140, 0, 121, 89, 0, 0, 0, 0,
-			32, 0, 39, 38, 127, 2, 33, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 21, 0, 0,
-			0, 0, 0, 0, 98, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 101, 38, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 0,
-			103, 38, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 105, 38, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0,
-			0, 0, 107, 38, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 109, 38, 40, 2, 33, 33, 90, 0, 116, 115, 0, 0,
-			40, 0, 4, 0, 111, 38, 149, 4, 0, 150, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 124, 38, 150, 5, 0, 149, 0, 5, 116, 115,
-			104, 0, 40, 0, 4, 0, 145, 38, 151, 4, 0, 150, 0, 2, 100, 122, 104, 0, 48, 0, 4, 0, 158, 38, 152, 5, 0, 149, 0, 5,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 107, 107, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0,
-			128, 0, 0, 0, 138, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 197, 38, 35, 2, 29, 29, 100, 0, 101, 0,
-			0, 0, 0, 0, 0, 16, 201, 38, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 205, 38, 37, 2, 31, 31, 90, 0,
-			111, 0, 0, 0, 0, 0, 0, 0, 207, 38, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0, 211, 38, 40, 2, 33, 33,
-			100, 0, 116, 0, 0, 0, 8, 0, 3, 0, 220, 6, 47, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 223, 38, 55, 3,
-			0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 62, 34, 64, 3, 0, 0, 0, 7, 88, 0, 0, 0, 8, 0, 10, 0, 213, 38,
-			106, 6, 0, 0, 0, 3, 73, 0, 0, 0, 0, 0, 0, 16, 179, 38, 108, 2, 28, 28, 50, 0, 56, 0, 0, 0, 0, 0, 0, 0,
-			183, 38, 109, 2, 28, 28, 50, 0, 117, 35, 0, 0, 0, 0, 0, 16, 187, 38, 110, 2, 13, 13, 50, 0, 85, 0, 0, 0, 0, 0,
-			0, 0, 191, 38, 111, 2, 33, 33, 50, 0, 65, 0, 0, 0, 0, 0, 0, 0, 195, 38, 112, 2, 29, 29, 100, 0, 38, 0, 0, 0,
-			0, 0, 0, 16, 199, 38, 113, 2, 29, 29, 100, 0, 69, 0, 0, 0, 0, 0, 0, 0, 203, 38, 114, 2, 13, 13, 100, 0, 89, 0,
-			0, 0, 0, 0, 0, 16, 209, 38, 115, 2, 28, 28, 100, 0, 71, 0, 0, 0, 16, 0, 10, 0, 182, 0, 116, 7, 0, 0, 0, 6,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 102, 97, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0,
-			0, 0, 0, 0, 236, 38, 35, 2, 31, 31, 80, 0, 101, 0, 0, 0, 0, 0, 0, 0, 238, 38, 36, 2, 31, 31, 80, 0, 105, 0,
-			0, 0, 0, 0, 0, 0, 232, 38, 37, 2, 31, 31, 100, 0, 111, 0, 0, 0, 0, 0, 0, 0, 240, 38, 39, 2, 31, 31, 80, 0,
-			117, 0, 0, 0, 0, 0, 0, 0, 234, 38, 40, 2, 31, 31, 100, 0, 65, 0, 0, 0, 0, 0, 0, 0, 230, 38, 108, 2, 31, 31,
-			100, 0, 101, 73, 0, 0, 0, 0, 0, 0, 242, 38, 109, 2, 31, 31, 110, 0, 111, 85, 0, 0, 0, 0, 0, 0, 244, 38, 110, 2,
-			31, 31, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 0, 0, 103, 97,
+			142, 44, 13, 2, 28, 28, 70, 0, 97, 0, 0, 0, 0, 0, 0, 0, 160, 44, 35, 2, 29, 29, 70, 0, 101, 0, 0, 0, 0, 0,
+			0, 0, 152, 44, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 146, 44, 37, 2, 31, 31, 70, 0, 111, 0, 0, 0,
+			0, 0, 0, 0, 168, 44, 39, 2, 32, 32, 70, 0, 117, 0, 0, 0, 0, 0, 0, 0, 172, 44, 40, 2, 33, 33, 70, 0, 64, 58,
+			0, 0, 0, 0, 0, 0, 144, 44, 108, 2, 28, 28, 135, 0, 105, 58, 0, 0, 0, 0, 0, 0, 149, 44, 109, 2, 31, 31, 135, 0,
+			101, 58, 0, 0, 0, 0, 0, 0, 154, 44, 110, 2, 30, 30, 135, 0, 69, 0, 0, 0, 0, 0, 0, 0, 156, 44, 111, 2, 30, 30,
+			70, 0, 69, 58, 0, 0, 0, 0, 0, 0, 158, 44, 112, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0, 0, 0, 162, 44, 113, 2,
+			29, 29, 135, 0, 79, 0, 0, 0, 0, 0, 0, 0, 164, 44, 114, 2, 32, 32, 70, 0, 79, 58, 0, 0, 0, 0, 0, 0, 166, 44,
+			115, 2, 32, 32, 135, 0, 111, 58, 0, 0, 0, 0, 0, 0, 170, 44, 116, 2, 32, 32, 135, 0, 117, 58, 0, 0, 0, 0, 0, 0,
+			174, 44, 117, 2, 33, 33, 135, 0, 115, 50, 0, 0, 40, 0, 4, 0, 167, 6, 118, 6, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 23, 0, 0, 0, 0, 0, 0, 100, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 176, 44,
+			35, 2, 29, 29, 65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 181, 44, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0,
+			185, 44, 37, 2, 31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 189, 44, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 193, 44, 40, 2, 33, 33, 55, 0, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 118, 0, 0, 0,
+			16, 0, 2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 187, 44, 112, 2, 31, 31, 135, 0, 101, 58,
+			0, 0, 0, 0, 0, 0, 183, 44, 114, 2, 30, 30, 125, 0, 97, 58, 0, 0, 0, 0, 0, 0, 179, 44, 118, 2, 29, 29, 150, 0,
+			111, 58, 0, 0, 0, 0, 0, 0, 191, 44, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0, 0, 0, 0, 0, 195, 44, 123, 2, 33, 33,
+			145, 0, 97, 73, 0, 0, 0, 0, 0, 0, 197, 44, 134, 2, 29, 31, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 18, 23, 0, 0, 0, 0, 0, 0, 116, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 199, 44, 13, 2, 29, 29, 65, 0,
+			114, 0, 0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 32, 0, 201, 44, 35, 2, 29, 29,
+			65, 0, 101, 0, 0, 0, 0, 0, 0, 0, 205, 44, 36, 2, 30, 30, 65, 0, 105, 0, 0, 0, 0, 0, 0, 0, 209, 44, 37, 2,
+			31, 31, 65, 0, 111, 0, 0, 0, 0, 0, 0, 0, 213, 44, 39, 2, 32, 32, 65, 0, 117, 0, 0, 0, 0, 0, 0, 0, 217, 44,
+			40, 2, 33, 33, 55, 0, 118, 0, 0, 0, 16, 0, 2, 0, 204, 3, 84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0,
+			211, 44, 112, 2, 31, 31, 135, 0, 101, 58, 0, 0, 0, 0, 0, 0, 207, 44, 114, 2, 30, 30, 135, 0, 97, 58, 0, 0, 0, 0,
+			0, 0, 203, 44, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0, 0, 0, 215, 44, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0,
+			0, 0, 0, 0, 219, 44, 123, 2, 33, 33, 140, 0, 97, 73, 0, 0, 0, 0, 32, 0, 221, 44, 134, 2, 29, 31, 140, 0, 97, 85,
+			0, 0, 0, 0, 32, 0, 223, 44, 135, 2, 29, 33, 135, 0, 116, 46, 35, 0, 8, 0, 5, 0, 225, 44, 141, 4, 0, 142, 0, 2,
+			100, 46, 35, 0, 16, 0, 5, 0, 240, 44, 142, 5, 0, 141, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 24, 23, 0, 0, 0, 0, 0, 0, 115, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 2, 45, 13, 2, 29, 29, 75, 0, 114, 0,
+			0, 0, 0, 0, 128, 0, 71, 0, 34, 3, 0, 0, 0, 7, 97, 0, 0, 0, 0, 0, 32, 0, 4, 45, 35, 2, 29, 29, 75, 0,
+			101, 0, 0, 0, 0, 0, 0, 0, 15, 45, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 19, 45, 37, 2, 31, 31,
+			75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 23, 45, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 27, 45, 40, 2,
+			33, 33, 65, 0, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 118, 0, 0, 0, 16, 0, 2, 0, 204, 3,
+			84, 7, 0, 0, 0, 6, 105, 58, 0, 0, 0, 0, 0, 0, 21, 45, 112, 2, 31, 31, 150, 0, 101, 58, 0, 0, 0, 0, 0, 0,
+			17, 45, 114, 2, 30, 30, 150, 0, 38, 58, 0, 0, 0, 0, 0, 0, 13, 45, 117, 2, 30, 30, 150, 0, 97, 58, 0, 0, 0, 0,
+			0, 0, 9, 45, 118, 2, 29, 29, 150, 0, 111, 58, 0, 0, 0, 0, 0, 0, 25, 45, 119, 2, 32, 32, 150, 0, 117, 58, 0, 0,
+			0, 0, 0, 0, 29, 45, 123, 2, 33, 33, 150, 0, 97, 73, 0, 0, 0, 0, 32, 0, 31, 45, 134, 2, 29, 31, 150, 0, 97, 85,
+			0, 0, 0, 0, 32, 0, 33, 45, 135, 2, 29, 33, 150, 0, 38, 0, 0, 0, 0, 0, 0, 0, 11, 45, 148, 2, 30, 30, 75, 0,
+			109, 35, 0, 0, 16, 0, 1, 0, 35, 45, 149, 8, 0, 0, 0, 4, 110, 35, 0, 0, 16, 0, 4, 0, 41, 45, 150, 8, 0, 0,
+			0, 4, 110, 46, 35, 0, 16, 0, 5, 0, 47, 45, 151, 8, 50, 0, 0, 4, 110, 94, 35, 0, 16, 2, 7, 0, 53, 45, 152, 8,
+			0, 0, 0, 4, 78, 35, 0, 0, 16, 0, 8, 0, 59, 45, 153, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 7, 23, 0, 0, 0, 0, 0, 0, 103, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 16, 73, 45, 109, 2, 28, 28,
+			70, 0, 111, 58, 0, 0, 0, 0, 32, 0, 113, 45, 119, 2, 32, 32, 113, 0, 97, 73, 0, 0, 0, 0, 32, 0, 65, 45, 134, 2,
+			28, 31, 120, 0, 97, 85, 0, 0, 0, 0, 32, 0, 69, 45, 135, 2, 29, 33, 120, 0, 97, 73, 126, 0, 0, 0, 32, 0, 67, 45,
+			148, 2, 28, 31, 135, 0, 97, 85, 126, 0, 0, 0, 32, 0, 71, 45, 149, 2, 29, 33, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 12, 24, 0, 0, 0, 0, 0, 0, 97, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 133, 45, 35, 2,
+			29, 29, 112, 0, 101, 0, 0, 0, 0, 0, 0, 0, 139, 45, 36, 2, 30, 30, 105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 135, 45,
+			37, 2, 31, 31, 105, 0, 111, 0, 0, 0, 0, 0, 0, 0, 143, 45, 39, 2, 32, 32, 105, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			137, 45, 40, 2, 33, 33, 105, 0, 116, 83, 0, 0, 40, 0, 6, 0, 23, 5, 76, 4, 0, 0, 0, 2, 86, 0, 0, 0, 0, 0,
+			0, 16, 115, 45, 109, 2, 32, 32, 100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 147, 45, 121, 2, 32, 32, 100, 0, 38, 0, 0, 0,
+			0, 0, 0, 0, 141, 45, 148, 2, 29, 29, 105, 0, 116, 83, 35, 0, 40, 0, 6, 0, 23, 5, 149, 4, 0, 0, 0, 2, 126, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 150, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			12, 24, 0, 0, 0, 0, 0, 0, 111, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 153, 45, 35, 2, 29, 29, 112, 0, 101, 0, 0, 0,
+			0, 0, 0, 0, 163, 45, 36, 2, 30, 30, 105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 159, 45, 37, 2, 31, 31, 105, 0, 111, 0,
+			0, 0, 0, 0, 0, 0, 167, 45, 39, 2, 32, 32, 105, 0, 117, 0, 0, 0, 0, 0, 0, 0, 161, 45, 40, 2, 33, 33, 105, 0,
+			116, 83, 0, 0, 40, 0, 6, 0, 173, 45, 76, 4, 0, 75, 0, 2, 86, 0, 0, 0, 0, 0, 0, 16, 149, 45, 109, 2, 32, 32,
+			100, 0, 79, 0, 0, 0, 0, 0, 0, 0, 171, 45, 121, 2, 32, 32, 100, 0, 38, 0, 0, 0, 0, 0, 0, 0, 165, 45, 148, 2,
+			29, 29, 105, 0, 116, 83, 35, 0, 40, 0, 6, 0, 182, 45, 149, 4, 0, 75, 0, 2, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			150, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 24, 0, 0, 0, 0, 0, 0,
+			109, 110, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 191, 45, 35, 2, 29, 29, 112, 0, 101, 0, 0, 0, 0, 0, 0, 0, 201, 45, 36, 2,
+			30, 30, 105, 0, 105, 0, 0, 0, 0, 0, 0, 0, 197, 45, 37, 2, 31, 31, 105, 0, 111, 0, 0, 0, 0, 0, 0, 0, 205, 45,
+			39, 2, 32, 32, 105, 0, 117, 0, 0, 0, 0, 0, 0, 0, 199, 45, 40, 2, 33, 33, 105, 0, 116, 83, 0, 0, 40, 0, 6, 0,
+			211, 45, 76, 4, 0, 75, 0, 2, 79, 0, 0, 0, 0, 0, 0, 0, 209, 45, 121, 2, 32, 32, 100, 0, 38, 0, 0, 0, 0, 0,
+			0, 0, 203, 45, 148, 2, 29, 29, 105, 0, 116, 83, 35, 0, 40, 0, 6, 0, 220, 45, 149, 4, 0, 75, 0, 2, 126, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 150, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1,
+			0, 0, 0, 0, 0, 0, 116, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 2, 0, 0, 0, 4, 46, 13, 2, 28, 28, 70, 0, 114, 0, 0, 0, 128, 0,
+			128, 0, 129, 46, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 31, 46, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0,
+			0, 0, 0, 0, 19, 46, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 11, 46, 37, 2, 31, 31, 85, 0, 111, 0,
+			0, 0, 0, 0, 0, 0, 43, 46, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 46, 46, 40, 2, 33, 33, 85, 0,
+			114, 45, 0, 0, 0, 0, 128, 0, 240, 45, 44, 3, 0, 0, 0, 0, 114, 47, 0, 0, 0, 0, 0, 0, 157, 46, 46, 3, 0, 0,
+			0, 7, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0, 0, 0, 91, 7, 55, 3,
+			0, 0, 0, 7, 100, 0, 0, 0, 16, 0, 3, 0, 2, 7, 72, 5, 0, 0, 0, 5, 116, 83, 0, 0, 40, 0, 6, 0, 166, 46,
+			76, 4, 0, 75, 0, 2, 116, 83, 59, 0, 40, 2, 7, 0, 175, 46, 78, 4, 0, 77, 0, 2, 73, 0, 0, 0, 0, 0, 0, 0,
+			13, 46, 108, 2, 31, 31, 65, 0, 73, 50, 0, 0, 2, 0, 0, 0, 16, 46, 109, 2, 31, 31, 65, 0, 101, 64, 0, 0, 0, 0,
+			0, 0, 22, 46, 110, 2, 31, 28, 115, 0, 69, 0, 0, 0, 2, 0, 0, 0, 28, 46, 111, 2, 30, 30, 70, 0, 65, 64, 0, 0,
+			0, 0, 0, 0, 35, 46, 112, 2, 29, 29, 115, 0, 79, 0, 0, 0, 0, 0, 0, 0, 41, 46, 113, 2, 32, 32, 70, 0, 85, 0,
+			0, 0, 0, 0, 0, 0, 48, 46, 114, 2, 32, 32, 75, 0, 116, 115, 0, 0, 40, 0, 4, 0, 50, 46, 115, 4, 0, 0, 0, 2,
+			107, 104, 0, 0, 8, 0, 8, 0, 63, 46, 116, 4, 0, 81, 0, 2, 107, 45, 0, 0, 8, 0, 8, 0, 79, 46, 117, 4, 0, 81,
+			0, 2, 75, 0, 0, 0, 8, 0, 4, 0, 92, 46, 118, 6, 0, 0, 0, 3, 112, 104, 0, 0, 8, 0, 1, 0, 110, 46, 119, 4,
+			0, 71, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, 109, 116,
 			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			64, 0, 0, 0, 0, 0, 0, 0, 246, 38, 13, 2, 28, 28, 60, 0, 97, 0, 0, 0, 0, 0, 0, 0, 248, 38, 35, 2, 29, 29,
-			100, 0, 97, 35, 0, 0, 0, 0, 0, 0, 250, 38, 108, 2, 28, 28, 60, 0, 69, 0, 0, 0, 0, 0, 0, 0, 253, 38, 109, 2,
-			30, 30, 70, 0, 69, 35, 0, 0, 0, 0, 0, 0, 255, 38, 110, 2, 28, 28, 60, 0, 73, 0, 0, 0, 0, 0, 0, 0, 2, 39,
-			111, 2, 31, 31, 60, 0, 73, 35, 0, 0, 0, 0, 0, 0, 5, 39, 112, 2, 28, 28, 60, 0, 79, 0, 0, 0, 0, 0, 0, 0,
-			9, 39, 113, 2, 32, 32, 70, 0, 79, 35, 0, 0, 0, 0, 0, 0, 11, 39, 114, 2, 28, 28, 60, 0, 85, 0, 0, 0, 0, 0,
-			0, 0, 14, 39, 115, 2, 33, 33, 70, 0, 85, 35, 0, 0, 0, 0, 0, 0, 16, 39, 116, 2, 28, 28, 60, 0, 65, 58, 0, 0,
-			0, 0, 0, 0, 19, 39, 117, 2, 29, 29, 100, 0, 101, 58, 0, 0, 0, 0, 0, 0, 21, 39, 118, 2, 30, 30, 105, 0, 105, 58,
-			0, 0, 0, 0, 0, 0, 23, 39, 119, 2, 31, 31, 105, 0, 111, 58, 0, 0, 0, 0, 0, 0, 25, 39, 120, 2, 32, 32, 95, 0,
-			117, 58, 0, 0, 0, 0, 0, 0, 27, 39, 121, 2, 33, 33, 105, 0, 64, 73, 0, 0, 0, 0, 0, 0, 29, 39, 122, 2, 28, 31,
-			120, 0, 64, 85, 0, 0, 0, 0, 0, 0, 31, 39, 123, 2, 28, 33, 120, 0, 105, 64, 0, 0, 0, 0, 0, 0, 33, 39, 124, 2,
-			31, 28, 120, 0, 117, 64, 0, 0, 0, 0, 0, 0, 35, 39, 125, 2, 33, 28, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, 116, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 128, 0, 0, 0, 138, 0, 34, 3, 0, 0,
-			0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 76, 39, 35, 2, 29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 16, 43, 39, 36, 2,
-			28, 28, 55, 0, 105, 0, 0, 0, 0, 0, 0, 16, 37, 39, 37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 32, 47, 39,
-			39, 2, 32, 32, 55, 0, 117, 0, 0, 0, 0, 0, 0, 32, 41, 39, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0,
-			220, 6, 47, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0, 97, 39, 49, 4, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0,
-			0, 0, 113, 39, 55, 3, 0, 0, 0, 0, 100, 0, 0, 0, 16, 0, 3, 0, 33, 3, 72, 5, 0, 0, 0, 5, 103, 0, 0, 0,
-			16, 0, 8, 0, 105, 39, 81, 7, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 16, 39, 39, 108, 2, 33, 33, 90, 0, 87, 0,
-			0, 0, 0, 0, 0, 16, 45, 39, 109, 2, 28, 28, 55, 0, 86, 0, 0, 0, 0, 0, 0, 32, 49, 39, 110, 2, 28, 28, 55, 0,
-			38, 0, 0, 0, 0, 0, 0, 16, 53, 39, 111, 2, 30, 30, 90, 0, 65, 0, 0, 0, 0, 0, 0, 32, 55, 39, 112, 2, 29, 29,
-			90, 0, 48, 0, 0, 0, 0, 0, 0, 32, 70, 39, 113, 2, 32, 32, 90, 0, 101, 58, 0, 0, 0, 0, 0, 16, 72, 39, 114, 2,
-			30, 30, 120, 0, 73, 0, 0, 0, 0, 0, 0, 16, 74, 39, 115, 2, 31, 31, 55, 0, 117, 50, 0, 0, 0, 0, 0, 0, 83, 39,
-			116, 2, 33, 33, 90, 0, 101, 50, 0, 0, 0, 0, 0, 0, 91, 39, 117, 2, 28, 28, 50, 0, 71, 0, 0, 0, 16, 0, 10, 0,
-			204, 4, 118, 7, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0,
-			0, 0, 107, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 129, 39, 13, 2, 28, 28, 100, 0, 42, 0, 0, 0, 16, 0, 132, 0, 185, 39,
-			16, 5, 0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0, 121, 39, 35, 2, 29, 29, 100, 0, 111, 0, 0, 0, 0, 0, 0, 0,
-			133, 39, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0, 137, 39, 40, 2, 33, 33, 100, 0, 100, 90, 59, 0, 48, 2,
-			6, 0, 174, 39, 77, 5, 0, 0, 0, 2, 116, 83, 59, 0, 40, 2, 6, 0, 165, 39, 78, 4, 0, 0, 0, 2, 69, 0, 0, 0,
-			0, 0, 0, 0, 125, 39, 108, 2, 30, 30, 100, 0, 117, 45, 0, 0, 0, 0, 0, 0, 141, 39, 109, 2, 33, 33, 100, 0, 107, 45,
-			0, 0, 8, 0, 8, 0, 145, 39, 110, 4, 0, 0, 50, 3, 107, 104, 0, 0, 8, 0, 8, 0, 126, 6, 111, 4, 0, 0, 0, 2,
-			116, 45, 0, 0, 8, 0, 4, 0, 155, 39, 112, 4, 0, 0, 0, 3, 112, 45, 0, 0, 8, 0, 1, 0, 52, 6, 113, 4, 0, 0,
-			0, 2, 112, 104, 0, 0, 8, 0, 1, 0, 71, 6, 114, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 60, 0,
-			114, 0, 0, 0, 16, 0, 10, 0, 182, 0, 34, 7, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 201, 39, 35, 2, 29, 29,
-			75, 0, 101, 0, 0, 0, 0, 0, 0, 0, 203, 39, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 0, 0, 208, 39, 37, 2,
-			31, 31, 75, 0, 111, 0, 0, 0, 0, 0, 0, 0, 210, 39, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 212, 39,
-			40, 2, 33, 33, 75, 0, 97, 73, 0, 0, 0, 0, 0, 0, 214, 39, 108, 2, 29, 31, 125, 0, 38, 0, 0, 0, 0, 0, 0, 0,
-			212, 34, 109, 2, 30, 30, 75, 0, 87, 0, 0, 0, 0, 0, 0, 0, 234, 34, 110, 2, 28, 28, 75, 0, 79, 0, 0, 0, 0, 0,
-			0, 0, 224, 34, 111, 2, 32, 32, 75, 0, 116, 108, 35, 0, 8, 0, 4, 0, 216, 39, 112, 4, 0, 0, 0, 2, 116, 115, 0, 0,
-			40, 0, 4, 0, 18, 6, 113, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-		autoFileInMemory espeakdata_phons4 = FileInMemory_createWithData (36148, reinterpret_cast<const char *> (&espeakdata_phons4_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/phontab", 
+			58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 80, 0, 97, 0, 0, 0, 0, 0, 0, 0, 196, 46, 35, 2, 29, 29,
+			85, 0, 101, 0, 0, 0, 0, 0, 0, 0, 194, 46, 36, 2, 30, 30, 75, 0, 105, 0, 0, 0, 0, 0, 32, 0, 210, 46, 37, 2,
+			29, 31, 145, 0, 111, 0, 0, 0, 0, 0, 0, 0, 198, 46, 39, 2, 32, 32, 77, 0, 117, 0, 0, 0, 0, 0, 0, 0, 202, 46,
+			40, 2, 33, 33, 70, 0, 112, 0, 0, 0, 8, 0, 1, 0, 226, 6, 48, 4, 0, 71, 0, 2, 107, 0, 0, 0, 8, 0, 8, 0,
+			29, 7, 49, 4, 0, 81, 0, 2, 100, 0, 0, 0, 16, 0, 3, 0, 255, 46, 72, 5, 0, 47, 0, 5, 118, 0, 0, 0, 16, 0,
+			2, 0, 242, 46, 84, 7, 0, 83, 0, 6, 104, 0, 0, 0, 8, 0, 12, 0, 26, 47, 107, 6, 0, 0, 0, 3, 73, 0, 0, 0,
+			0, 0, 0, 0, 191, 46, 108, 2, 31, 31, 65, 0, 89, 0, 0, 0, 0, 0, 0, 0, 200, 46, 109, 2, 28, 28, 77, 0, 85, 0,
+			0, 0, 0, 0, 0, 0, 204, 46, 110, 2, 33, 33, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 206, 46, 111, 2, 33, 33, 75, 0,
+			97, 105, 0, 0, 0, 0, 32, 0, 208, 46, 112, 2, 29, 31, 155, 0, 111, 105, 0, 0, 0, 0, 32, 0, 212, 46, 113, 2, 32, 31,
+			140, 0, 101, 105, 0, 0, 0, 0, 32, 0, 214, 46, 114, 2, 30, 31, 140, 0, 89, 105, 0, 0, 0, 0, 32, 0, 216, 46, 115, 2,
+			28, 31, 135, 0, 117, 105, 0, 0, 0, 0, 32, 0, 218, 46, 116, 2, 33, 31, 135, 0, 121, 105, 0, 0, 0, 0, 32, 0, 220, 46,
+			117, 2, 33, 31, 135, 0, 97, 117, 0, 0, 0, 0, 32, 0, 222, 46, 118, 2, 29, 33, 150, 0, 111, 117, 0, 0, 0, 0, 32, 0,
+			224, 46, 119, 2, 32, 33, 140, 0, 101, 117, 0, 0, 0, 0, 32, 0, 226, 46, 120, 2, 30, 33, 140, 0, 105, 117, 0, 0, 0, 0,
+			32, 0, 228, 46, 121, 2, 31, 33, 140, 0, 101, 121, 0, 0, 0, 0, 32, 0, 230, 46, 122, 2, 30, 33, 140, 0, 89, 121, 0, 0,
+			0, 0, 32, 0, 232, 46, 123, 2, 28, 33, 135, 0, 105, 121, 0, 0, 0, 0, 32, 0, 234, 46, 124, 2, 31, 33, 130, 0, 117, 111,
+			0, 0, 0, 0, 32, 0, 236, 46, 125, 2, 33, 32, 140, 0, 105, 101, 0, 0, 0, 0, 32, 0, 238, 46, 126, 2, 31, 30, 140, 0,
+			121, 89, 0, 0, 0, 0, 32, 0, 240, 46, 127, 2, 33, 28, 140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 10, 23, 0, 0, 0, 0, 0, 0, 98, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 46, 47, 35, 2, 29, 29, 90, 0, 101, 0,
+			0, 0, 0, 0, 0, 0, 48, 47, 36, 2, 30, 30, 90, 0, 105, 0, 0, 0, 0, 0, 0, 0, 50, 47, 37, 2, 31, 31, 90, 0,
+			111, 0, 0, 0, 0, 0, 0, 0, 52, 47, 39, 2, 32, 32, 90, 0, 117, 0, 0, 0, 0, 0, 0, 0, 54, 47, 40, 2, 33, 33,
+			90, 0, 116, 115, 0, 0, 40, 0, 4, 0, 56, 47, 148, 4, 0, 149, 0, 2, 100, 122, 0, 0, 48, 0, 4, 0, 69, 47, 149, 5,
+			0, 148, 0, 5, 116, 115, 35, 0, 40, 0, 4, 0, 90, 47, 150, 4, 0, 149, 0, 2, 100, 122, 35, 0, 48, 0, 4, 0, 103, 47,
+			151, 5, 0, 148, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0,
+			107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 114, 0, 0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 142, 47, 35, 2,
+			29, 29, 100, 0, 101, 0, 0, 0, 0, 0, 0, 16, 146, 47, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 150, 47,
+			37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 0, 152, 47, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			156, 47, 40, 2, 33, 33, 100, 0, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 108, 0, 0, 0, 0, 0,
+			0, 0, 168, 47, 55, 3, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 54, 38, 64, 3, 0, 0, 0, 7, 88, 0, 0, 0,
+			8, 0, 10, 0, 158, 47, 106, 6, 0, 0, 0, 3, 73, 0, 0, 0, 0, 0, 0, 16, 124, 47, 108, 2, 28, 28, 50, 0, 56, 0,
+			0, 0, 0, 0, 0, 0, 128, 47, 109, 2, 28, 28, 50, 0, 117, 35, 0, 0, 0, 0, 0, 16, 132, 47, 110, 2, 13, 13, 50, 0,
+			85, 0, 0, 0, 0, 0, 0, 0, 136, 47, 111, 2, 33, 33, 50, 0, 65, 0, 0, 0, 0, 0, 0, 0, 140, 47, 112, 2, 29, 29,
+			100, 0, 38, 0, 0, 0, 0, 0, 0, 16, 144, 47, 113, 2, 29, 29, 100, 0, 69, 0, 0, 0, 0, 0, 0, 0, 148, 47, 114, 2,
+			13, 13, 100, 0, 89, 0, 0, 0, 0, 0, 0, 16, 154, 47, 115, 2, 28, 28, 100, 0, 71, 0, 0, 0, 16, 0, 10, 0, 180, 0,
+			116, 7, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0,
+			116, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 114, 0, 0, 0, 128, 0, 0, 0, 136, 0, 34, 3, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 214, 47, 35, 2,
+			29, 29, 90, 0, 101, 0, 0, 0, 0, 0, 0, 16, 181, 47, 36, 2, 28, 28, 55, 0, 105, 0, 0, 0, 0, 0, 0, 16, 175, 47,
+			37, 2, 31, 31, 90, 0, 111, 0, 0, 0, 0, 0, 0, 32, 185, 47, 39, 2, 32, 32, 55, 0, 117, 0, 0, 0, 0, 0, 0, 32,
+			179, 47, 40, 2, 33, 33, 90, 0, 116, 0, 0, 0, 8, 0, 3, 0, 245, 6, 47, 4, 0, 0, 0, 2, 107, 0, 0, 0, 8, 0,
+			8, 0, 235, 47, 49, 4, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 251, 47, 55, 3, 0, 0, 0, 0, 100, 0, 0, 0,
+			16, 0, 3, 0, 36, 3, 72, 5, 0, 0, 0, 5, 103, 0, 0, 0, 16, 0, 8, 0, 243, 47, 81, 7, 0, 0, 0, 0, 121, 0,
+			0, 0, 0, 0, 0, 16, 177, 47, 108, 2, 33, 33, 90, 0, 87, 0, 0, 0, 0, 0, 0, 16, 183, 47, 109, 2, 28, 28, 55, 0,
+			86, 0, 0, 0, 0, 0, 0, 32, 187, 47, 110, 2, 28, 28, 55, 0, 38, 0, 0, 0, 0, 0, 0, 16, 191, 47, 111, 2, 30, 30,
+			90, 0, 65, 0, 0, 0, 0, 0, 0, 32, 193, 47, 112, 2, 29, 29, 90, 0, 48, 0, 0, 0, 0, 0, 0, 32, 208, 47, 113, 2,
+			32, 32, 90, 0, 101, 58, 0, 0, 0, 0, 0, 16, 210, 47, 114, 2, 30, 30, 120, 0, 73, 0, 0, 0, 0, 0, 0, 16, 212, 47,
+			115, 2, 31, 31, 55, 0, 117, 50, 0, 0, 0, 0, 0, 0, 221, 47, 116, 2, 33, 33, 90, 0, 101, 50, 0, 0, 0, 0, 0, 0,
+			229, 47, 117, 2, 28, 28, 50, 0, 71, 0, 0, 0, 16, 0, 10, 0, 207, 4, 118, 7, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 107, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 11, 48,
+			13, 2, 28, 28, 100, 0, 42, 0, 0, 0, 16, 0, 132, 0, 67, 48, 16, 5, 0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0,
+			3, 48, 35, 2, 29, 29, 100, 0, 111, 0, 0, 0, 0, 0, 0, 0, 15, 48, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0,
+			0, 0, 19, 48, 40, 2, 33, 33, 100, 0, 100, 90, 59, 0, 48, 2, 6, 0, 56, 48, 77, 5, 0, 0, 0, 2, 116, 83, 59, 0,
+			40, 2, 6, 0, 47, 48, 78, 4, 0, 0, 0, 2, 69, 0, 0, 0, 0, 0, 0, 0, 7, 48, 108, 2, 30, 30, 100, 0, 117, 45,
+			0, 0, 0, 0, 0, 0, 23, 48, 109, 2, 33, 33, 100, 0, 107, 45, 0, 0, 8, 0, 8, 0, 27, 48, 110, 4, 0, 0, 50, 3,
+			107, 104, 0, 0, 8, 0, 8, 0, 129, 6, 111, 4, 0, 0, 0, 2, 116, 45, 0, 0, 8, 0, 4, 0, 37, 48, 112, 4, 0, 0,
+			0, 3, 112, 45, 0, 0, 8, 0, 1, 0, 55, 6, 113, 4, 0, 0, 0, 2, 112, 104, 0, 0, 8, 0, 1, 0, 74, 6, 114, 4,
+			0, 0, 0, 2, 115, 45, 0, 0, 40, 0, 4, 0, 128, 5, 115, 6, 0, 0, 0, 3, 113, 45, 0, 0, 8, 0, 10, 0, 90, 5,
+			116, 4, 0, 0, 0, 2, 116, 83, 59, 45, 40, 2, 7, 0, 32, 5, 117, 4, 0, 0, 0, 2, 100, 45, 0, 0, 16, 0, 4, 0,
+			15, 3, 118, 5, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0,
+			0, 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 0, 0, 60, 0, 114, 0, 0, 0, 16, 0, 10, 0, 180, 0,
+			34, 7, 0, 0, 0, 6, 97, 0, 0, 0, 0, 0, 0, 0, 83, 48, 35, 2, 29, 29, 75, 0, 101, 0, 0, 0, 0, 0, 0, 0,
+			208, 40, 36, 2, 30, 30, 70, 0, 105, 0, 0, 0, 0, 0, 0, 0, 90, 48, 37, 2, 31, 31, 75, 0, 111, 0, 0, 0, 0, 0,
+			0, 0, 92, 48, 39, 2, 32, 32, 75, 0, 117, 0, 0, 0, 0, 0, 0, 0, 94, 48, 40, 2, 33, 33, 75, 0, 69, 0, 0, 0,
+			0, 0, 0, 0, 85, 48, 108, 2, 30, 30, 75, 0, 97, 73, 0, 0, 0, 0, 0, 0, 96, 48, 109, 2, 29, 31, 125, 0, 38, 0,
+			0, 0, 0, 0, 0, 0, 240, 40, 110, 2, 30, 30, 70, 0, 86, 0, 0, 0, 0, 0, 0, 0, 82, 41, 111, 2, 28, 28, 70, 0,
+			79, 0, 0, 0, 0, 0, 0, 0, 67, 41, 112, 2, 32, 32, 70, 0, 121, 0, 0, 0, 0, 0, 0, 0, 102, 41, 113, 2, 31, 31,
+			70, 0, 87, 0, 0, 0, 0, 0, 0, 0, 117, 41, 114, 2, 28, 28, 70, 0, 51, 0, 0, 0, 2, 0, 0, 0, 190, 40, 115, 2,
+			29, 29, 20, 0, 116, 108, 35, 0, 8, 0, 4, 0, 98, 48, 116, 4, 0, 0, 0, 2, 116, 115, 0, 0, 40, 0, 4, 0, 21, 6,
+			117, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 3, 0, 0, 0, 0, 0, 0,
+			101, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 114, 0, 0, 0, 16, 64, 132, 0, 219, 48, 34, 5, 0, 0, 0, 3, 97, 0, 0, 0, 0, 0, 0, 0, 111, 48, 35, 2,
+			29, 29, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 117, 48, 36, 2, 30, 30, 100, 0, 105, 0, 0, 0, 0, 0, 0, 0, 119, 48,
+			37, 2, 31, 31, 95, 0, 111, 0, 0, 0, 0, 0, 0, 0, 122, 48, 39, 2, 32, 32, 100, 0, 117, 0, 0, 0, 0, 0, 0, 0,
+			124, 48, 40, 2, 33, 33, 100, 0, 116, 0, 0, 0, 8, 0, 3, 0, 202, 48, 47, 4, 0, 0, 0, 2, 98, 0, 0, 0, 16, 0,
+			1, 0, 4, 29, 71, 5, 0, 0, 0, 0, 100, 0, 0, 0, 16, 0, 3, 0, 247, 28, 72, 5, 0, 0, 0, 0, 103, 0, 0, 0,
+			16, 0, 8, 0, 217, 28, 81, 5, 0, 0, 0, 5, 122, 0, 0, 0, 40, 0, 4, 0, 143, 48, 88, 6, 0, 0, 0, 3, 115, 0,
+			0, 0, 40, 0, 4, 0, 128, 48, 89, 6, 0, 0, 0, 3, 89, 0, 0, 0, 0, 0, 0, 0, 126, 48, 113, 2, 28, 28, 100, 0,
+			116, 115, 0, 0, 40, 0, 4, 0, 171, 48, 123, 4, 0, 0, 0, 2, 97, 50, 0, 0, 0, 0, 0, 0, 113, 48, 124, 2, 29, 29,
+			100, 0, 116, 122, 0, 0, 40, 0, 4, 0, 187, 48, 125, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0};
+		autoFileInMemory espeakdata_phons4 = FileInMemory_createWithData (40564, reinterpret_cast<const char *> (&espeakdata_phons4_data), 
+			U"/home/david/projects/praat/espeak-work/espeak-1.48.04-source/espeak-data/phontab", 
 			U"phontab");
-		Collection_addItem (me.peek(), espeakdata_phons4.transfer());
+		my addItem_move (espeakdata_phons4.move());
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created.");
+		Melder_throw (U"FileInMemorySet not created.");
 	}
 }
 
diff --git a/external/espeak/espeakdata_variants.cpp b/external/espeak/espeakdata_variants.cpp
index 4d66113..4985374 100644
--- a/external/espeak/espeakdata_variants.cpp
+++ b/external/espeak/espeakdata_variants.cpp
@@ -1,22 +1,22 @@
-/* File espeakdata_variants.cpp was generated automatically on Sun Nov  4 17:43:38 2012 from files in espeak-data/voices/!v  */
+/* File espeakdata_variants.cpp (version 1.48.04) was automaticallygenerated on Thu Dec  3 15:21:15 2015 from files in espeak-data/voices/!v  */
 
 #include "espeakdata_FileInMemory.h"
 #include "Collection.h"
 #include "FileInMemory.h"
 #include "melder.h"
 
-FilesInMemory create_espeakdata_variants () {
+autoFileInMemorySet create_espeakdata_variants () {
 	try {
-		autoFilesInMemory me = FilesInMemory_create ();
+		autoFileInMemorySet me = FileInMemorySet_create ();
 		static unsigned char espeakdata_variants1_data[94] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 99, 114, 111, 97, 107, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 32, 55, 48, 10, 10, 112, 105, 116, 99, 104, 32, 56, 53, 32, 49, 49, 55, 10, 102, 108, 117,
 			116, 116, 101, 114, 32, 50, 48, 10, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49, 48, 48, 32, 56, 48, 32, 49, 49, 48, 10,
 			10, 10, 10, 0};
 		autoFileInMemory espeakdata_variants1 = FileInMemory_createWithData (93, reinterpret_cast<const char *> (&espeakdata_variants1_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/croak",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/croak", 
 			U"croak");
-		Collection_addItem (me.peek(), espeakdata_variants1.transfer());
+		my addItem_move (espeakdata_variants1.move());
 
 		static unsigned char espeakdata_variants2_data[325] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 49, 10,
@@ -31,9 +31,9 @@ FilesInMemory create_espeakdata_variants () {
 			110, 116, 32, 56, 32, 49, 49, 48, 32, 32, 55, 48, 32, 49, 53, 48, 10, 10, 115, 116, 114, 101, 115, 115, 65, 100, 100, 32, 45, 49,
 			48, 32, 45, 49, 48, 32, 45, 50, 48, 32, 45, 50, 48, 32, 48, 32, 48, 32, 52, 48, 32, 54, 48, 10, 0};
 		autoFileInMemory espeakdata_variants2 = FileInMemory_createWithData (324, reinterpret_cast<const char *> (&espeakdata_variants2_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/f1",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/f1", 
 			U"f1");
-		Collection_addItem (me.peek(), espeakdata_variants2.transfer());
+		my addItem_move (espeakdata_variants2.move());
 
 		static unsigned char espeakdata_variants3_data[358] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 50, 10,
@@ -49,9 +49,9 @@ FilesInMemory create_espeakdata_variants () {
 			52, 48, 10, 98, 114, 101, 97, 116, 104, 32, 48, 32, 50, 32, 51, 32, 51, 32, 51, 32, 51, 32, 51, 32, 50, 10, 101, 99, 104, 111,
 			32, 49, 52, 48, 32, 49, 48, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 49, 50, 53, 32, 49, 50, 53, 10, 0};
 		autoFileInMemory espeakdata_variants3 = FileInMemory_createWithData (357, reinterpret_cast<const char *> (&espeakdata_variants3_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/f2",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/f2", 
 			U"f2");
-		Collection_addItem (me.peek(), espeakdata_variants3.transfer());
+		my addItem_move (espeakdata_variants3.move());
 
 		static unsigned char espeakdata_variants4_data[376] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 51, 10,
@@ -68,9 +68,9 @@ FilesInMemory create_espeakdata_variants () {
 			116, 104, 32, 48, 32, 50, 32, 51, 32, 51, 32, 51, 32, 51, 32, 51, 32, 50, 10, 101, 99, 104, 111, 32, 49, 50, 48, 32, 49, 48,
 			10, 114, 111, 117, 103, 104, 110, 101, 115, 115, 32, 52, 10, 10, 10, 0};
 		autoFileInMemory espeakdata_variants4 = FileInMemory_createWithData (375, reinterpret_cast<const char *> (&espeakdata_variants4_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/f3",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/f3", 
 			U"f3");
-		Collection_addItem (me.peek(), espeakdata_variants4.transfer());
+		my addItem_move (espeakdata_variants4.move());
 
 		static unsigned char espeakdata_variants5_data[351] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 52, 10,
@@ -86,9 +86,9 @@ FilesInMemory create_espeakdata_variants () {
 			32, 45, 50, 48, 32, 48, 32, 48, 32, 50, 48, 32, 49, 50, 48, 10, 115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 49, 56, 32, 49,
 			54, 32, 50, 48, 32, 50, 48, 32, 50, 48, 32, 50, 48, 32, 50, 48, 32, 50, 48, 10, 0};
 		autoFileInMemory espeakdata_variants5 = FileInMemory_createWithData (350, reinterpret_cast<const char *> (&espeakdata_variants5_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/f4",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/f4", 
 			U"f4");
-		Collection_addItem (me.peek(), espeakdata_variants5.transfer());
+		my addItem_move (espeakdata_variants5.move());
 
 		static unsigned char espeakdata_variants6_data[426] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 32, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 53,
@@ -107,35 +107,43 @@ FilesInMemory create_espeakdata_variants () {
 			48, 10, 98, 114, 101, 97, 116, 104, 119, 32, 49, 53, 48, 32, 49, 53, 48, 32, 50, 48, 48, 32, 50, 48, 48, 32, 52, 48, 48, 32,
 			52, 48, 48, 32, 10, 0};
 		autoFileInMemory espeakdata_variants6 = FileInMemory_createWithData (425, reinterpret_cast<const char *> (&espeakdata_variants6_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/f5",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/f5", 
 			U"f5");
-		Collection_addItem (me.peek(), espeakdata_variants6.transfer());
+		my addItem_move (espeakdata_variants6.move());
 
 		static unsigned char espeakdata_variants7_data[39] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 107, 108, 97, 116, 116, 10, 107, 108,
 			97, 116, 116, 32, 49, 10, 32, 10, 0};
 		autoFileInMemory espeakdata_variants7 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_variants7_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/klatt",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/klatt", 
 			U"klatt");
-		Collection_addItem (me.peek(), espeakdata_variants7.transfer());
+		my addItem_move (espeakdata_variants7.move());
 
 		static unsigned char espeakdata_variants8_data[39] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 107, 108, 97, 116, 116, 50, 10, 107,
 			108, 97, 116, 116, 32, 50, 10, 10, 0};
 		autoFileInMemory espeakdata_variants8 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_variants8_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/klatt2",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/klatt2", 
 			U"klatt2");
-		Collection_addItem (me.peek(), espeakdata_variants8.transfer());
+		my addItem_move (espeakdata_variants8.move());
 
 		static unsigned char espeakdata_variants9_data[40] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 107, 108, 97, 116, 116, 51, 10, 107,
 			108, 97, 116, 116, 32, 51, 10, 32, 10, 0};
 		autoFileInMemory espeakdata_variants9 = FileInMemory_createWithData (39, reinterpret_cast<const char *> (&espeakdata_variants9_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/klatt3",
+			U"espeak-1.48.04-source/espeak-data/voices/!v/klatt3", 
 			U"klatt3");
-		Collection_addItem (me.peek(), espeakdata_variants9.transfer());
+		my addItem_move (espeakdata_variants9.move());
 
-		static unsigned char espeakdata_variants10_data[336] = {
+		static unsigned char espeakdata_variants10_data[40] = {
+			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 107, 108, 97, 116, 116, 52, 10, 107,
+			108, 97, 116, 116, 32, 52, 10, 32, 10, 0};
+		autoFileInMemory espeakdata_variants10 = FileInMemory_createWithData (39, reinterpret_cast<const char *> (&espeakdata_variants10_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/klatt4", 
+			U"klatt4");
+		my addItem_move (espeakdata_variants10.move());
+
+		static unsigned char espeakdata_variants11_data[336] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 49, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 32, 55, 48, 10, 10, 112, 105, 116, 99, 104, 32, 55, 53, 32, 49, 48, 57, 10, 102, 108, 117,
 			116, 116, 101, 114, 32, 53, 10, 114, 111, 117, 103, 104, 110, 101, 115, 115, 32, 52, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32,
@@ -148,12 +156,12 @@ FilesInMemory create_espeakdata_variants () {
 			49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56, 32, 49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 10, 47, 47, 115,
 			116, 114, 101, 115, 115, 65, 100, 100, 32, 45, 49, 48, 32, 45, 49, 48, 32, 45, 50, 48, 32, 45, 50, 48, 32, 48, 32, 48, 32, 52,
 			48, 32, 55, 48, 10, 0};
-		autoFileInMemory espeakdata_variants10 = FileInMemory_createWithData (335, reinterpret_cast<const char *> (&espeakdata_variants10_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m1",
+		autoFileInMemory espeakdata_variants11 = FileInMemory_createWithData (335, reinterpret_cast<const char *> (&espeakdata_variants11_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m1", 
 			U"m1");
-		Collection_addItem (me.peek(), espeakdata_variants10.transfer());
+		my addItem_move (espeakdata_variants11.move());
 
-		static unsigned char espeakdata_variants11_data[265] = {
+		static unsigned char espeakdata_variants12_data[265] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 50, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 56, 56, 32, 49, 49, 53, 10, 101, 99, 104, 111, 32, 49,
 			51, 48, 32, 49, 53, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49, 48, 48, 32, 32, 56, 48, 32, 49, 50, 48, 10, 102, 111,
@@ -163,12 +171,12 @@ FilesInMemory create_espeakdata_variants () {
 			97, 110, 116, 32, 53, 32, 49, 48, 48, 32, 32, 57, 48, 32, 49, 50, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 54, 32, 49, 48,
 			48, 32, 32, 57, 48, 32, 49, 50, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 55, 32, 49, 48, 48, 32, 32, 57, 48, 32, 49, 50,
 			48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56, 32, 49, 48, 48, 32, 32, 57, 48, 32, 49, 50, 48, 10, 0};
-		autoFileInMemory espeakdata_variants11 = FileInMemory_createWithData (264, reinterpret_cast<const char *> (&espeakdata_variants11_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m2",
+		autoFileInMemory espeakdata_variants12 = FileInMemory_createWithData (264, reinterpret_cast<const char *> (&espeakdata_variants12_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m2", 
 			U"m2");
-		Collection_addItem (me.peek(), espeakdata_variants11.transfer());
+		my addItem_move (espeakdata_variants12.move());
 
-		static unsigned char espeakdata_variants12_data[286] = {
+		static unsigned char espeakdata_variants13_data[301] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 51, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 50, 50, 10, 102, 111, 114, 109, 97, 110,
 			116, 32, 48, 32, 49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 32, 57, 54, 32,
@@ -177,14 +185,15 @@ FilesInMemory create_espeakdata_variants () {
 			52, 32, 32, 57, 53, 32, 49, 48, 51, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 53, 32, 32, 57, 53, 32, 49, 48,
 			51, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 54, 32, 49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111,
 			114, 109, 97, 110, 116, 32, 55, 32, 49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56, 32,
-			49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 10, 115, 116, 114, 101, 115, 115, 65, 100, 100, 32, 49, 48, 32, 49, 48, 32, 48,
-			32, 48, 32, 48, 32, 48, 32, 45, 51, 48, 32, 45, 51, 48, 10, 0};
-		autoFileInMemory espeakdata_variants12 = FileInMemory_createWithData (285, reinterpret_cast<const char *> (&espeakdata_variants12_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m3",
+			49, 48, 48, 32, 49, 48, 48, 32, 49, 48, 48, 10, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 49, 48, 48, 10, 115, 116,
+			114, 101, 115, 115, 65, 100, 100, 32, 49, 48, 32, 49, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 45, 51, 48, 32, 45, 51, 48, 10,
+			0};
+		autoFileInMemory espeakdata_variants13 = FileInMemory_createWithData (300, reinterpret_cast<const char *> (&espeakdata_variants13_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m3", 
 			U"m3");
-		Collection_addItem (me.peek(), espeakdata_variants12.transfer());
+		my addItem_move (espeakdata_variants13.move());
 
-		static unsigned char espeakdata_variants13_data[291] = {
+		static unsigned char espeakdata_variants14_data[291] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 52, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 55, 48, 32, 49, 49, 48, 10, 10, 102, 111, 114, 109, 97,
 			110, 116, 32, 48, 32, 49, 48, 51, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 49, 48, 51,
@@ -195,12 +204,12 @@ FilesInMemory create_espeakdata_variants () {
 			111, 114, 109, 97, 110, 116, 32, 55, 32, 49, 48, 51, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56,
 			32, 49, 48, 51, 32, 49, 48, 48, 32, 49, 48, 48, 10, 10, 115, 116, 114, 101, 115, 115, 65, 100, 100, 32, 45, 49, 48, 32, 45, 49,
 			48, 32, 45, 51, 48, 32, 45, 51, 48, 32, 48, 32, 48, 32, 54, 48, 32, 57, 48, 10, 0};
-		autoFileInMemory espeakdata_variants13 = FileInMemory_createWithData (290, reinterpret_cast<const char *> (&espeakdata_variants13_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m4",
+		autoFileInMemory espeakdata_variants14 = FileInMemory_createWithData (290, reinterpret_cast<const char *> (&espeakdata_variants14_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m4", 
 			U"m4");
-		Collection_addItem (me.peek(), espeakdata_variants13.transfer());
+		my addItem_move (espeakdata_variants14.move());
 
-		static unsigned char espeakdata_variants14_data[263] = {
+		static unsigned char espeakdata_variants15_data[263] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 53, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49, 48, 48, 32, 32, 56, 53, 32, 49,
 			51, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 32, 57, 48, 32, 32, 56, 53, 32, 49, 51, 48, 32, 32, 52, 48, 10, 102,
@@ -210,12 +219,12 @@ FilesInMemory create_espeakdata_variants () {
 			48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 54, 32, 49, 48, 53, 32, 32, 56, 53, 32, 49, 53, 48, 10, 102, 111, 114, 109, 97, 110,
 			116, 32, 55, 32, 49, 48, 53, 32, 32, 56, 53, 32, 49, 53, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56, 32, 49, 48, 53, 32,
 			32, 56, 53, 32, 49, 53, 48, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 0};
-		autoFileInMemory espeakdata_variants14 = FileInMemory_createWithData (262, reinterpret_cast<const char *> (&espeakdata_variants14_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m5",
+		autoFileInMemory espeakdata_variants15 = FileInMemory_createWithData (262, reinterpret_cast<const char *> (&espeakdata_variants15_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m5", 
 			U"m5");
-		Collection_addItem (me.peek(), espeakdata_variants14.transfer());
+		my addItem_move (espeakdata_variants15.move());
 
-		static unsigned char espeakdata_variants15_data[189] = {
+		static unsigned char espeakdata_variants16_data[189] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 54, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 56, 50, 32, 49, 49, 55, 10, 10, 102, 111, 114, 109, 97,
 			110, 116, 32, 48, 32, 49, 48, 48, 32, 32, 57, 48, 32, 49, 50, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 49, 48, 48,
@@ -223,12 +232,12 @@ FilesInMemory create_espeakdata_variants () {
 			10, 102, 111, 114, 109, 97, 110, 116, 32, 51, 32, 49, 48, 48, 32, 32, 55, 53, 32, 49, 52, 48, 10, 102, 111, 114, 109, 97, 110, 116,
 			32, 52, 32, 49, 48, 48, 32, 32, 56, 48, 32, 49, 52, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 53, 32, 49, 48, 48, 32, 32,
 			56, 48, 32, 49, 52, 48, 10, 10, 0};
-		autoFileInMemory espeakdata_variants15 = FileInMemory_createWithData (188, reinterpret_cast<const char *> (&espeakdata_variants15_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m6",
+		autoFileInMemory espeakdata_variants16 = FileInMemory_createWithData (188, reinterpret_cast<const char *> (&espeakdata_variants16_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m6", 
 			U"m6");
-		Collection_addItem (me.peek(), espeakdata_variants15.transfer());
+		my addItem_move (espeakdata_variants16.move());
 
-		static unsigned char espeakdata_variants16_data[255] = {
+		static unsigned char espeakdata_variants17_data[255] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 109, 97, 108, 101, 55, 10, 103, 101,
 			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 32, 55, 53, 32, 49, 50, 53, 10, 10, 102, 111, 114, 109,
 			97, 110, 116, 32, 48, 32, 49, 48, 48, 32, 49, 50, 53, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 49, 48,
@@ -238,12 +247,12 @@ FilesInMemory create_espeakdata_variants () {
 			114, 109, 97, 110, 116, 32, 54, 32, 32, 57, 48, 32, 53, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 55, 32, 49,
 			48, 48, 32, 53, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 56, 32, 49, 48, 48, 32, 53, 48, 32, 49, 48, 48,
 			10, 118, 111, 105, 99, 105, 110, 103, 32, 49, 53, 53, 10, 10, 0};
-		autoFileInMemory espeakdata_variants16 = FileInMemory_createWithData (254, reinterpret_cast<const char *> (&espeakdata_variants16_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/m7",
+		autoFileInMemory espeakdata_variants17 = FileInMemory_createWithData (254, reinterpret_cast<const char *> (&espeakdata_variants17_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/m7", 
 			U"m7");
-		Collection_addItem (me.peek(), espeakdata_variants16.transfer());
+		my addItem_move (espeakdata_variants17.move());
 
-		static unsigned char espeakdata_variants17_data[187] = {
+		static unsigned char espeakdata_variants18_data[187] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 119, 104, 105, 115, 112, 101, 114, 10,
 			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 56, 50, 32, 49, 49, 55, 10, 102, 108, 117, 116,
 			116, 101, 114, 32, 50, 48, 10, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49, 48, 48, 32, 32, 48, 32, 49, 48, 48, 10, 102,
@@ -251,12 +260,12 @@ FilesInMemory create_espeakdata_variants () {
 			55, 10, 98, 114, 101, 97, 116, 104, 32, 32, 32, 55, 53, 32, 32, 55, 53, 32, 32, 53, 48, 32, 32, 52, 48, 32, 32, 49, 53, 32,
 			32, 49, 48, 10, 98, 114, 101, 97, 116, 104, 119, 32, 49, 53, 48, 32, 49, 53, 48, 32, 50, 48, 48, 32, 50, 48, 48, 32, 52, 48,
 			48, 32, 52, 48, 48, 10, 0};
-		autoFileInMemory espeakdata_variants17 = FileInMemory_createWithData (186, reinterpret_cast<const char *> (&espeakdata_variants17_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/whisper",
+		autoFileInMemory espeakdata_variants18 = FileInMemory_createWithData (186, reinterpret_cast<const char *> (&espeakdata_variants18_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/whisper", 
 			U"whisper");
-		Collection_addItem (me.peek(), espeakdata_variants17.transfer());
+		my addItem_move (espeakdata_variants18.move());
 
-		static unsigned char espeakdata_variants18_data[393] = {
+		static unsigned char espeakdata_variants19_data[393] = {
 			108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 97, 114, 105, 97, 110, 116, 10, 110, 97, 109, 101, 32, 102, 101, 109, 97, 108, 101, 95, 119,
 			104, 105, 115, 112, 101, 114, 10, 103, 101, 110, 100, 101, 114, 32, 102, 101, 109, 97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 49, 54,
 			48, 32, 50, 50, 48, 10, 114, 111, 117, 103, 104, 110, 101, 115, 115, 32, 51, 10, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49,
@@ -271,14 +280,14 @@ FilesInMemory create_espeakdata_variants () {
 			50, 48, 10, 98, 114, 101, 97, 116, 104, 32, 55, 53, 32, 55, 53, 32, 53, 48, 32, 52, 48, 32, 49, 53, 32, 49, 48, 10, 98, 114,
 			101, 97, 116, 104, 119, 32, 49, 53, 48, 32, 49, 53, 48, 32, 50, 48, 48, 32, 50, 48, 48, 32, 52, 48, 48, 32, 52, 48, 48, 10,
 			32, 10, 0};
-		autoFileInMemory espeakdata_variants18 = FileInMemory_createWithData (392, reinterpret_cast<const char *> (&espeakdata_variants18_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/!v/whisperf",
+		autoFileInMemory espeakdata_variants19 = FileInMemory_createWithData (392, reinterpret_cast<const char *> (&espeakdata_variants19_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/!v/whisperf", 
 			U"whisperf");
-		Collection_addItem (me.peek(), espeakdata_variants18.transfer());
+		my addItem_move (espeakdata_variants19.move());
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created.");
+		Melder_throw (U"FileInMemorySet not created.");
 	}
 }
 
diff --git a/external/espeak/espeakdata_voices.cpp b/external/espeak/espeakdata_voices.cpp
index 4af626d..0a17148 100644
--- a/external/espeak/espeakdata_voices.cpp
+++ b/external/espeak/espeakdata_voices.cpp
@@ -1,33 +1,311 @@
-/* File espeakdata_voices.cpp was generated automatically on Sun Nov  4 17:43:38 2012 from files in espeak-data/voices  */
+/* File espeakdata_voices.cpp (version 1.48.04) was automatically generated on Thu Dec  3 15:21:15 2015 from files in espeak-data/voices  */
 
 #include "espeakdata_FileInMemory.h"
 #include "Collection.h"
 #include "FileInMemory.h"
 #include "melder.h"
 
-FilesInMemory create_espeakdata_voices () {
+autoFileInMemorySet create_espeakdata_voices () {
 	try {
-		autoFilesInMemory me = FilesInMemory_create ();
-		static unsigned char espeakdata_voices1_data[68] = {
-			110, 97, 109, 101, 32, 97, 102, 114, 105, 107, 97, 97, 110, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 102, 10, 103, 101, 110,
-			100, 101, 114, 32, 109, 97, 108, 101, 10, 114, 111, 117, 103, 104, 110, 101, 115, 115, 32, 48, 10, 112, 105, 116, 99, 104, 32, 54, 51, 32,
-			49, 50, 48, 10, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices1 = FileInMemory_createWithData (67, reinterpret_cast<const char *> (&espeakdata_voices1_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//af",
-			U"af");
-		Collection_addItem (me.peek(), espeakdata_voices1.transfer());
-
-		static unsigned char espeakdata_voices2_data[116] = {
-			110, 97, 109, 101, 32, 98, 117, 108, 103, 97, 114, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 98,
-			103, 10, 10, 115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 49, 51, 32, 49, 50, 32, 49, 55, 32, 49, 55, 32, 50, 48, 32, 50, 50,
-			32, 50, 50, 32, 50, 49, 32, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 56, 48, 32, 49, 55, 48, 32, 32,
-			50, 48, 48, 32, 50, 48, 48, 32, 32, 50, 48, 48, 32, 50, 48, 48, 32, 32, 50, 49, 48, 32, 50, 50, 48, 0};
-		autoFileInMemory espeakdata_voices2 = FileInMemory_createWithData (115, reinterpret_cast<const char *> (&espeakdata_voices2_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//bg",
+		autoFileInMemorySet me = FileInMemorySet_create ();
+		static unsigned char espeakdata_voices1_data[28] = {
+			110, 97, 109, 101, 32, 112, 101, 114, 115, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 97, 10, 32, 10, 0};
+		autoFileInMemory espeakdata_voices1 = FileInMemory_createWithData (27, reinterpret_cast<const char *> (&espeakdata_voices1_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/fa", 
+			U"fa");
+		my addItem_move (espeakdata_voices1.move());
+
+		static unsigned char espeakdata_voices2_data[202] = {
+			110, 97, 109, 101, 32, 112, 101, 114, 115, 105, 97, 110, 45, 112, 105, 110, 103, 108, 105, 115, 104, 10, 47, 47, 32, 83, 111, 109, 101, 116,
+			105, 109, 101, 115, 44, 32, 70, 97, 114, 115, 105, 32, 115, 112, 101, 97, 107, 101, 114, 115, 32, 119, 114, 105, 116, 101, 32, 70, 97, 114,
+			115, 105, 32, 119, 111, 114, 100, 115, 32, 117, 115, 105, 110, 103, 32, 69, 110, 103, 108, 105, 115, 104, 32, 99, 104, 97, 114, 97, 99, 116,
+			101, 114, 115, 44, 32, 112, 97, 114, 116, 105, 99, 117, 108, 97, 114, 108, 121, 32, 105, 110, 32, 67, 104, 97, 116, 32, 97, 110, 100, 32,
+			83, 77, 83, 32, 40, 116, 101, 120, 116, 101, 32, 109, 101, 115, 115, 97, 103, 101, 115, 41, 46, 41, 44, 32, 99, 97, 108, 108, 101, 100,
+			32, 80, 105, 110, 103, 108, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 97, 45, 112, 105, 110, 10, 100, 105, 99, 116,
+			114, 117, 108, 101, 115, 32, 49, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 102, 97, 10, 10, 0};
+		autoFileInMemory espeakdata_voices2 = FileInMemory_createWithData (201, reinterpret_cast<const char *> (&espeakdata_voices2_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/fa-pin", 
+			U"fa-pin");
+		my addItem_move (espeakdata_voices2.move());
+
+		static unsigned char espeakdata_voices3_data[36] = {
+			110, 97, 109, 101, 32, 104, 105, 110, 100, 105, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 105, 10, 103, 101, 110, 100, 101, 114, 32,
+			109, 97, 108, 101, 10, 0};
+		autoFileInMemory espeakdata_voices3 = FileInMemory_createWithData (35, reinterpret_cast<const char *> (&espeakdata_voices3_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/hi", 
+			U"hi");
+		my addItem_move (espeakdata_voices3.move());
+
+		static unsigned char espeakdata_voices4_data[39] = {
+			110, 97, 109, 101, 32, 97, 114, 109, 101, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121, 10, 103, 101, 110, 100,
+			101, 114, 32, 109, 97, 108, 101, 10, 0};
+		autoFileInMemory espeakdata_voices4 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices4_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/hy", 
+			U"hy");
+		my addItem_move (espeakdata_voices4.move());
+
+		static unsigned char espeakdata_voices5_data[326] = {
+			110, 97, 109, 101, 32, 97, 114, 109, 101, 110, 105, 97, 110, 45, 119, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121,
+			45, 119, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121, 32, 32, 56, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97,
+			108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 10, 47, 47, 32, 99, 104, 97, 110, 103, 101, 32, 99, 111, 110,
+			115, 111, 110, 97, 110, 116, 115, 32, 102, 111, 114, 32, 87, 101, 115, 116, 32, 65, 114, 109, 101, 110, 105, 97, 110, 32, 112, 114, 111, 110,
+			117, 110, 99, 105, 97, 116, 105, 111, 110, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 98, 32, 32, 112, 35, 10, 114, 101, 112,
+			108, 97, 99, 101, 32, 48, 48, 32, 100, 32, 32, 116, 35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 100, 122, 32, 116, 115,
+			35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 100, 90, 32, 116, 83, 35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48,
+			32, 103, 32, 32, 107, 35, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 112, 32, 32, 98, 10, 114, 101, 112, 108, 97, 99,
+			101, 32, 48, 48, 32, 116, 32, 32, 100, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 116, 115, 32, 100, 122, 10, 114, 101, 112,
+			108, 97, 99, 101, 32, 48, 48, 32, 116, 83, 32, 100, 90, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 107, 32, 32, 103, 10,
+			10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 82, 50, 32, 82, 32, 32, 47, 47, 32, 63, 63, 10, 10, 0};
+		autoFileInMemory espeakdata_voices5 = FileInMemory_createWithData (325, reinterpret_cast<const char *> (&espeakdata_voices5_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/hy-west", 
+			U"hy-west");
+		my addItem_move (espeakdata_voices5.move());
+
+		static unsigned char espeakdata_voices6_data[147] = {
+			110, 97, 109, 101, 32, 105, 110, 100, 111, 110, 101, 115, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 105, 100, 10, 103, 101,
+			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 54, 48, 32, 50, 48,
+			48, 32, 32, 49, 56, 48, 32, 49, 56, 48, 32, 32, 48, 32, 48, 32, 32, 50, 50, 48, 32, 50, 52, 48, 10, 115, 116, 114, 101, 115,
+			115, 65, 109, 112, 32, 32, 32, 32, 49, 54, 32, 32, 49, 56, 32, 32, 32, 49, 56, 32, 32, 49, 56, 32, 32, 32, 48, 32, 48, 32,
+			32, 50, 50, 32, 32, 50, 49, 10, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 32, 56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices6 = FileInMemory_createWithData (146, reinterpret_cast<const char *> (&espeakdata_voices6_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/id", 
+			U"id");
+		my addItem_move (espeakdata_voices6.move());
+
+		static unsigned char espeakdata_voices7_data[27] = {
+			110, 97, 109, 101, 32, 103, 101, 111, 114, 103, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 97, 10, 0};
+		autoFileInMemory espeakdata_voices7 = FileInMemory_createWithData (26, reinterpret_cast<const char *> (&espeakdata_voices7_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ka", 
+			U"ka");
+		my addItem_move (espeakdata_voices7.move());
+
+		static unsigned char espeakdata_voices8_data[56] = {
+			110, 97, 109, 101, 32, 107, 97, 110, 110, 97, 100, 97, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 110, 10, 10, 105, 110, 116, 111,
+			110, 97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices8 = FileInMemory_createWithData (55, reinterpret_cast<const char *> (&espeakdata_voices8_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/kn", 
+			U"kn");
+		my addItem_move (espeakdata_voices8.move());
+
+		static unsigned char espeakdata_voices9_data[53] = {
+			110, 97, 109, 101, 32, 107, 117, 114, 100, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 117, 10, 103, 101, 110, 100, 101,
+			114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 119, 111, 114, 100, 115, 32, 49, 32, 52, 56, 10, 10, 0};
+		autoFileInMemory espeakdata_voices9 = FileInMemory_createWithData (52, reinterpret_cast<const char *> (&espeakdata_voices9_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ku", 
+			U"ku");
+		my addItem_move (espeakdata_voices9.move());
+
+		static unsigned char espeakdata_voices10_data[70] = {
+			110, 97, 109, 101, 32, 109, 97, 108, 97, 121, 97, 108, 97, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 109, 108, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111,
+			110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices10 = FileInMemory_createWithData (69, reinterpret_cast<const char *> (&espeakdata_voices10_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ml", 
+			U"ml");
+		my addItem_move (espeakdata_voices10.move());
+
+		static unsigned char espeakdata_voices11_data[458] = {
+			47, 47, 32, 76, 97, 115, 116, 32, 117, 112, 100, 97, 116, 101, 100, 58, 32, 49, 52, 32, 79, 99, 116, 111, 98, 101, 114, 32, 50, 48,
+			49, 48, 44, 32, 74, 97, 115, 111, 110, 32, 79, 110, 103, 32, 40, 106, 97, 115, 111, 110, 64, 112, 111, 114, 116, 97, 108, 103, 114, 111,
+			111, 118, 101, 46, 99, 111, 109, 41, 10, 110, 97, 109, 101, 32, 109, 97, 108, 97, 121, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 109,
+			115, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 105, 100, 10, 10, 116, 114, 97,
+			110, 115, 108, 97, 116, 111, 114, 32, 105, 100, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 54, 48, 32, 50,
+			48, 48, 32, 32, 49, 56, 48, 32, 49, 56, 48, 32, 32, 48, 32, 48, 32, 32, 50, 50, 48, 32, 50, 52, 48, 10, 115, 116, 114, 101,
+			115, 115, 65, 109, 112, 32, 32, 32, 32, 49, 54, 32, 32, 49, 56, 32, 32, 32, 49, 56, 32, 32, 49, 56, 32, 32, 32, 48, 32, 48,
+			32, 32, 50, 50, 32, 32, 50, 49, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 9, 51, 9, 47, 47, 32, 76, 101, 115, 115, 32,
+			105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 44, 32, 97, 110, 100, 32, 99, 111, 109, 109, 97, 32, 100, 111, 101, 115, 32, 110, 111, 116,
+			32, 114, 97, 105, 115, 101, 32, 116, 104, 101, 32, 112, 105, 116, 99, 104, 46, 10, 10, 47, 47, 32, 78, 117, 97, 110, 99, 101, 32, 45,
+			32, 80, 101, 110, 105, 110, 115, 117, 108, 97, 32, 77, 97, 108, 97, 121, 115, 105, 97, 10, 47, 47, 32, 114, 101, 112, 108, 97, 99, 101,
+			9, 51, 32, 97, 9, 64, 9, 47, 47, 32, 99, 104, 97, 110, 103, 101, 32, 39, 115, 97, 121, 97, 39, 32, 116, 111, 32, 39, 115, 97,
+			121, 101, 39, 10, 9, 9, 9, 9, 47, 47, 32, 40, 111, 110, 108, 121, 32, 116, 104, 101, 32, 108, 97, 115, 116, 32, 112, 104, 111, 110,
+			101, 109, 101, 32, 111, 102, 32, 97, 32, 119, 111, 114, 100, 44, 32, 111, 110, 108, 121, 32, 105, 110, 32, 117, 110, 115, 116, 114, 101, 115,
+			115, 101, 100, 32, 115, 121, 108, 108, 97, 98, 108, 101, 115, 41, 10, 9, 9, 9, 9, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115,
+			32, 56, 48, 32, 56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices11 = FileInMemory_createWithData (457, reinterpret_cast<const char *> (&espeakdata_voices11_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ms", 
+			U"ms");
+		my addItem_move (espeakdata_voices11.move());
+
+		static unsigned char espeakdata_voices12_data[50] = {
+			110, 97, 109, 101, 32, 110, 101, 112, 97, 108, 105, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 110, 101, 10, 103, 101, 110, 100, 101, 114,
+			32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 0};
+		autoFileInMemory espeakdata_voices12 = FileInMemory_createWithData (49, reinterpret_cast<const char *> (&espeakdata_voices12_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ne", 
+			U"ne");
+		my addItem_move (espeakdata_voices12.move());
+
+		static unsigned char espeakdata_voices13_data[26] = {
+			110, 97, 109, 101, 32, 112, 117, 110, 106, 97, 98, 105, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 97, 10, 0};
+		autoFileInMemory espeakdata_voices13 = FileInMemory_createWithData (25, reinterpret_cast<const char *> (&espeakdata_voices13_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/pa", 
+			U"pa");
+		my addItem_move (espeakdata_voices13.move());
+
+		static unsigned char espeakdata_voices14_data[64] = {
+			110, 97, 109, 101, 32, 116, 97, 109, 105, 108, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 97, 10, 103, 101, 110, 100, 101, 114, 32,
+			109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32,
+			56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices14 = FileInMemory_createWithData (63, reinterpret_cast<const char *> (&espeakdata_voices14_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/ta", 
+			U"ta");
+		my addItem_move (espeakdata_voices14.move());
+
+		static unsigned char espeakdata_voices15_data[39] = {
+			110, 97, 109, 101, 32, 116, 117, 114, 107, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 114, 10, 103, 101, 110, 100, 101,
+			114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices15 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices15_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/tr", 
+			U"tr");
+		my addItem_move (espeakdata_voices15.move());
+
+		static unsigned char espeakdata_voices16_data[60] = {
+			110, 97, 109, 101, 32, 118, 105, 101, 116, 110, 97, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 105, 10, 103, 101, 110, 100, 101,
+			114, 32, 109, 97, 108, 101, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 0};
+		autoFileInMemory espeakdata_voices16 = FileInMemory_createWithData (59, reinterpret_cast<const char *> (&espeakdata_voices16_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/vi", 
+			U"vi");
+		my addItem_move (espeakdata_voices16.move());
+
+		static unsigned char espeakdata_voices17_data[203] = {
+			110, 97, 109, 101, 32, 118, 105, 101, 116, 110, 97, 109, 95, 104, 117, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 105, 45, 104,
+			117, 101, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 118, 105, 45, 104, 117, 101, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49,
+			10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 50,
+			32, 49, 49, 56, 32, 32, 32, 47, 47, 56, 48, 32, 49, 49, 56, 10, 47, 47, 98, 114, 101, 97, 116, 104, 32, 32, 32, 55, 53, 32,
+			55, 53, 32, 54, 48, 32, 52, 48, 32, 49, 53, 32, 49, 48, 10, 32, 47, 47, 98, 114, 101, 97, 116, 104, 119, 32, 32, 49, 53, 48,
+			32, 49, 53, 48, 32, 50, 48, 48, 32, 50, 48, 48, 32, 52, 48, 48, 32, 52, 48, 48, 10, 32, 118, 111, 105, 99, 105, 110, 103, 32,
+			57, 48, 32, 32, 47, 47, 49, 56, 10, 32, 102, 108, 117, 116, 116, 101, 114, 32, 32, 50, 48, 10, 0};
+		autoFileInMemory espeakdata_voices17 = FileInMemory_createWithData (202, reinterpret_cast<const char *> (&espeakdata_voices17_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/vi-hue", 
+			U"vi-hue");
+		my addItem_move (espeakdata_voices17.move());
+
+		static unsigned char espeakdata_voices18_data[203] = {
+			110, 97, 109, 101, 32, 118, 105, 101, 116, 110, 97, 109, 95, 115, 103, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 105, 45, 115,
+			103, 110, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 118, 105, 45, 115, 103, 110, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 50,
+			10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 50,
+			32, 49, 49, 56, 32, 32, 32, 47, 47, 56, 48, 32, 49, 49, 56, 10, 47, 47, 98, 114, 101, 97, 116, 104, 32, 32, 32, 55, 53, 32,
+			55, 53, 32, 54, 48, 32, 52, 48, 32, 49, 53, 32, 49, 48, 10, 32, 47, 47, 98, 114, 101, 97, 116, 104, 119, 32, 32, 49, 53, 48,
+			32, 49, 53, 48, 32, 50, 48, 48, 32, 50, 48, 48, 32, 52, 48, 48, 32, 52, 48, 48, 10, 32, 118, 111, 105, 99, 105, 110, 103, 32,
+			57, 48, 32, 32, 47, 47, 49, 56, 10, 32, 102, 108, 117, 116, 116, 101, 114, 32, 32, 50, 48, 10, 0};
+		autoFileInMemory espeakdata_voices18 = FileInMemory_createWithData (202, reinterpret_cast<const char *> (&espeakdata_voices18_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/vi-sgn", 
+			U"vi-sgn");
+		my addItem_move (espeakdata_voices18.move());
+
+		static unsigned char espeakdata_voices19_data[612] = {
+			110, 97, 109, 101, 32, 77, 97, 110, 100, 97, 114, 105, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 10, 103, 101, 110, 100,
+			101, 114, 32, 109, 97, 108, 101, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 10,
+			100, 105, 99, 116, 95, 109, 105, 110, 32, 49, 48, 48, 48, 48, 48, 10, 10, 47, 47, 102, 111, 114, 32, 115, 111, 109, 101, 32, 100, 105,
+			97, 108, 101, 99, 116, 115, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 110, 103, 32, 119, 105, 116,
+			104, 32, 110, 10, 47, 47, 91, 122, 104, 93, 58, 32, 239, 191, 189, 222, 186, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239,
+			191, 189, 239, 191, 189, 239, 191, 189, 110, 103, 239, 191, 189, 239, 191, 189, 239, 191, 189, 110, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101,
+			32, 48, 32, 78, 32, 110, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 114, 102, 120, 32, 99, 111,
+			110, 115, 111, 110, 97, 110, 116, 115, 10, 47, 47, 91, 122, 104, 93, 58, 32, 239, 191, 189, 222, 190, 239, 191, 189, 239, 191, 189, 239, 191,
+			189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 114, 239, 191, 189, 239, 191, 189, 239, 191, 189, 108, 239, 191, 189, 239, 191, 189,
+			122, 239, 191, 189, 239, 191, 189, 101, 114, 239, 191, 189, 239, 191, 189, 239, 191, 189, 101, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32,
+			48, 32, 116, 115, 46, 104, 32, 116, 115, 104, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 116, 115, 46, 32, 116, 115, 10,
+			47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 115, 46, 32, 115, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 105,
+			46, 32, 105, 91, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 122, 46, 32, 108, 10, 47, 47, 114, 101, 112, 108, 97, 99,
+			101, 32, 48, 32, 122, 46, 32, 122, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 64, 114, 32, 64, 10, 10, 47, 47, 91,
+			101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 98, 101, 103, 105, 110, 110, 105, 110, 103, 32, 110, 32, 111, 114, 32, 108, 10,
+			47, 47, 91, 122, 104, 93, 58, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 110, 108, 239, 191, 189, 239, 191, 189, 110, 239,
+			191, 189, 239, 191, 189, 239, 191, 189, 108, 239, 191, 189, 239, 191, 189, 108, 239, 191, 189, 239, 191, 189, 239, 191, 189, 110, 10, 47, 47, 114,
+			101, 112, 108, 97, 99, 101, 32, 50, 32, 110, 32, 108, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 50, 32, 108, 32, 110, 10, 10,
+			47, 47, 91, 101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 98, 101, 103, 105, 110, 110, 105, 110, 103, 32, 119, 32, 119, 105,
+			116, 104, 32, 118, 10, 47, 47, 91, 122, 104, 93, 58, 32, 119, 239, 191, 189, 239, 191, 189, 239, 191, 189, 118, 10, 47, 47, 114, 101, 112,
+			108, 97, 99, 101, 32, 48, 32, 119, 32, 32, 118, 0};
+		autoFileInMemory espeakdata_voices19 = FileInMemory_createWithData (611, reinterpret_cast<const char *> (&espeakdata_voices19_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/zh", 
+			U"zh");
+		my addItem_move (espeakdata_voices19.move());
+
+		static unsigned char espeakdata_voices20_data[211] = {
+			110, 97, 109, 101, 32, 99, 97, 110, 116, 111, 110, 101, 115, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 45, 121, 117, 101,
+			10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 121, 117, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 121, 10, 10, 116, 114,
+			97, 110, 115, 108, 97, 116, 111, 114, 32, 122, 104, 121, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 122, 104, 121, 10, 100, 105, 99, 116,
+			105, 111, 110, 97, 114, 121, 32, 122, 104, 121, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 32, 105, 110, 116,
+			101, 114, 112, 114, 101, 116, 32, 69, 110, 103, 108, 105, 115, 104, 32, 108, 101, 116, 116, 101, 114, 115, 32, 97, 115, 32, 49, 61, 69, 110,
+			103, 108, 105, 115, 104, 32, 119, 111, 114, 100, 115, 44, 32, 50, 61, 106, 121, 117, 116, 112, 105, 110, 103, 10, 100, 105, 99, 116, 114, 117,
+			108, 101, 115, 32, 49, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 100, 105, 99, 116, 95, 109, 105, 110, 32, 49, 48, 48, 48, 48, 10,
+			0};
+		autoFileInMemory espeakdata_voices20 = FileInMemory_createWithData (210, reinterpret_cast<const char *> (&espeakdata_voices20_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/asia/zh-yue", 
+			U"zh-yue");
+		my addItem_move (espeakdata_voices20.move());
+
+		static unsigned char espeakdata_voices21_data[39] = {
+			110, 97, 109, 101, 32, 103, 101, 114, 109, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 100, 101, 10, 103, 101, 110, 100, 101, 114,
+			32, 109, 97, 108, 101, 10, 10, 10, 0};
+		autoFileInMemory espeakdata_voices21 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices21_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/de", 
+			U"de");
+		my addItem_move (espeakdata_voices21.move());
+
+		static unsigned char espeakdata_voices22_data[39] = {
+			110, 97, 109, 101, 32, 100, 101, 102, 97, 117, 108, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 10, 103, 101, 110, 100, 101,
+			114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices22 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices22_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/default", 
+			U"default");
+		my addItem_move (espeakdata_voices22.move());
+
+		static unsigned char espeakdata_voices23_data[111] = {
+			110, 97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 103, 98, 32, 32, 50,
+			10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 50, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110,
+			32, 50, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56,
+			10, 10, 116, 117, 110, 101, 115, 32, 115, 49, 32, 99, 49, 32, 113, 49, 32, 101, 49, 10, 0};
+		autoFileInMemory espeakdata_voices23 = FileInMemory_createWithData (110, reinterpret_cast<const char *> (&espeakdata_voices23_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/en", 
+			U"en");
+		my addItem_move (espeakdata_voices23.move());
+
+		static unsigned char espeakdata_voices24_data[265] = {
+			47, 47, 32, 109, 111, 118, 105, 110, 103, 32, 116, 111, 119, 97, 114, 100, 115, 32, 85, 83, 32, 69, 110, 103, 108, 105, 115, 104, 10, 110,
+			97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 45, 117, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 115, 32,
+			50, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 114, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 32, 51, 10,
+			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 101, 110, 45, 117, 115, 10, 100, 105,
+			99, 116, 114, 117, 108, 101, 115, 32, 51, 32, 54, 10, 111, 112, 116, 105, 111, 110, 32, 114, 101, 100, 117, 99, 101, 95, 116, 32, 49, 10,
+			10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 52, 48, 32, 49, 50, 48, 32, 49, 57, 48, 32, 49, 55, 48, 32,
+			48, 32, 48, 32, 50, 53, 53, 32, 51, 48, 48, 10, 115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 32, 49, 55, 32, 49, 54, 32, 32,
+			49, 57, 32, 49, 57, 32, 32, 49, 57, 32, 49, 57, 32, 32, 50, 49, 32, 49, 57, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48,
+			51, 32, 73, 32, 32, 105, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 50, 32, 105, 10, 10, 0};
+		autoFileInMemory espeakdata_voices24 = FileInMemory_createWithData (264, reinterpret_cast<const char *> (&espeakdata_voices24_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/en-us", 
+			U"en-us");
+		my addItem_move (espeakdata_voices24.move());
+
+		static unsigned char espeakdata_voices25_data[182] = {
+			110, 97, 109, 101, 32, 115, 112, 97, 110, 105, 115, 104, 45, 108, 97, 116, 105, 110, 45, 97, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101,
+			32, 101, 115, 45, 108, 97, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 115, 45, 109, 120, 32, 54, 10, 108, 97, 110, 103, 117, 97,
+			103, 101, 32, 101, 115, 32, 54, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32,
+			101, 115, 45, 108, 97, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 50, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50,
+			10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 55, 48, 32, 50, 48, 48, 32, 32, 50, 51, 48, 32, 49, 56, 48,
+			32, 32, 48, 32, 48, 32, 32, 50, 53, 48, 32, 50, 56, 48, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 84, 32, 115,
+			10, 0};
+		autoFileInMemory espeakdata_voices25 = FileInMemory_createWithData (181, reinterpret_cast<const char *> (&espeakdata_voices25_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/es-la", 
+			U"es-la");
+		my addItem_move (espeakdata_voices25.move());
+
+		static unsigned char espeakdata_voices26_data[40] = {
+			110, 97, 109, 101, 32, 97, 114, 97, 103, 111, 110, 101, 115, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 110, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 0};
+		autoFileInMemory espeakdata_voices26 = FileInMemory_createWithData (39, reinterpret_cast<const char *> (&espeakdata_voices26_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/an", 
+			U"an");
+		my addItem_move (espeakdata_voices26.move());
+
+		static unsigned char espeakdata_voices27_data[111] = {
+			110, 97, 109, 101, 32, 98, 117, 108, 103, 97, 114, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 98, 103, 10, 10, 115, 116,
+			114, 101, 115, 115, 65, 109, 112, 32, 49, 51, 32, 49, 50, 32, 49, 55, 32, 49, 55, 32, 50, 48, 32, 50, 50, 32, 50, 50, 32, 50,
+			49, 32, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 56, 48, 32, 49, 55, 48, 32, 32, 50, 48, 48, 32, 50,
+			48, 48, 32, 32, 50, 48, 48, 32, 50, 48, 48, 32, 32, 50, 49, 48, 32, 50, 50, 48, 0};
+		autoFileInMemory espeakdata_voices27 = FileInMemory_createWithData (110, reinterpret_cast<const char *> (&espeakdata_voices27_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/bg", 
 			U"bg");
-		Collection_addItem (me.peek(), espeakdata_voices2.transfer());
+		my addItem_move (espeakdata_voices27.move());
 
-		static unsigned char espeakdata_voices3_data[258] = {
+		static unsigned char espeakdata_voices28_data[258] = {
 			110, 97, 109, 101, 32, 98, 111, 115, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 98, 115, 10, 112, 104, 111, 110, 101,
 			109, 101, 115, 32, 104, 114, 10, 100, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 104, 98, 115, 10, 103, 101, 110, 100, 101, 114, 32, 109,
 			97, 108, 101, 10, 10, 112, 105, 116, 99, 104, 32, 56, 49, 32, 49, 50, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 48, 32, 49, 48,
@@ -37,140 +315,95 @@ FilesInMemory create_espeakdata_voices () {
 			49, 48, 50, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 53, 32, 32, 57, 55, 32, 49, 48, 50, 32, 49, 48, 48, 10,
 			10, 115, 116, 114, 101, 115, 115, 65, 100, 100, 32, 49, 48, 32, 49, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 45, 51, 48, 32, 45,
 			51, 48, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 51, 32, 52, 10, 0};
-		autoFileInMemory espeakdata_voices3 = FileInMemory_createWithData (257, reinterpret_cast<const char *> (&espeakdata_voices3_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//bs", 
+		autoFileInMemory espeakdata_voices28 = FileInMemory_createWithData (257, reinterpret_cast<const char *> (&espeakdata_voices28_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/bs", 
 			U"bs");
-		Collection_addItem (me.peek(), espeakdata_voices3.transfer());
+		my addItem_move (espeakdata_voices28.move());
 
-		static unsigned char espeakdata_voices4_data[39] = {
+		static unsigned char espeakdata_voices29_data[39] = {
 			110, 97, 109, 101, 32, 99, 97, 116, 97, 108, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 99, 97, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices4 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices4_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ca", 
+		autoFileInMemory espeakdata_voices29 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices29_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/ca", 
 			U"ca");
-		Collection_addItem (me.peek(), espeakdata_voices4.transfer());
+		my addItem_move (espeakdata_voices29.move());
 
-		static unsigned char espeakdata_voices5_data[37] = {
+		static unsigned char espeakdata_voices30_data[37] = {
 			110, 97, 109, 101, 32, 99, 122, 101, 99, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 99, 115, 10, 103, 101, 110, 100, 101, 114, 32,
 			109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices5 = FileInMemory_createWithData (36, reinterpret_cast<const char *> (&espeakdata_voices5_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//cs", 
+		autoFileInMemory espeakdata_voices30 = FileInMemory_createWithData (36, reinterpret_cast<const char *> (&espeakdata_voices30_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/cs", 
 			U"cs");
-		Collection_addItem (me.peek(), espeakdata_voices5.transfer());
+		my addItem_move (espeakdata_voices30.move());
 
-		static unsigned char espeakdata_voices6_data[55] = {
-			108, 97, 110, 103, 117, 97, 103, 101, 32, 99, 121, 10, 110, 97, 109, 101, 32, 119, 101, 108, 115, 104, 45, 116, 101, 115, 116, 10, 103, 101,
-			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 52, 10, 0};
-		autoFileInMemory espeakdata_voices6 = FileInMemory_createWithData (54, reinterpret_cast<const char *> (&espeakdata_voices6_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//cy", 
+		static unsigned char espeakdata_voices31_data[50] = {
+			108, 97, 110, 103, 117, 97, 103, 101, 32, 99, 121, 10, 110, 97, 109, 101, 32, 119, 101, 108, 115, 104, 10, 103, 101, 110, 100, 101, 114, 32,
+			109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 52, 10, 0};
+		autoFileInMemory espeakdata_voices31 = FileInMemory_createWithData (49, reinterpret_cast<const char *> (&espeakdata_voices31_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/cy", 
 			U"cy");
-		Collection_addItem (me.peek(), espeakdata_voices6.transfer());
+		my addItem_move (espeakdata_voices31.move());
 
-		static unsigned char espeakdata_voices7_data[58] = {
+		static unsigned char espeakdata_voices32_data[58] = {
 			110, 97, 109, 101, 32, 100, 97, 110, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 100, 97, 10, 103, 101, 110, 100, 101, 114,
 			32, 109, 97, 108, 101, 10, 10, 116, 117, 110, 101, 115, 32, 115, 50, 32, 99, 50, 32, 113, 50, 32, 101, 50, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices7 = FileInMemory_createWithData (57, reinterpret_cast<const char *> (&espeakdata_voices7_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//da", 
+		autoFileInMemory espeakdata_voices32 = FileInMemory_createWithData (57, reinterpret_cast<const char *> (&espeakdata_voices32_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/da", 
 			U"da");
-		Collection_addItem (me.peek(), espeakdata_voices7.transfer());
+		my addItem_move (espeakdata_voices32.move());
 
-		static unsigned char espeakdata_voices8_data[39] = {
-			110, 97, 109, 101, 32, 103, 101, 114, 109, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 100, 101, 10, 103, 101, 110, 100, 101, 114,
-			32, 109, 97, 108, 101, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices8 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices8_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//de", 
-			U"de");
-		Collection_addItem (me.peek(), espeakdata_voices8.transfer());
-
-		static unsigned char espeakdata_voices9_data[39] = {
-			110, 97, 109, 101, 32, 100, 101, 102, 97, 117, 108, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 10, 103, 101, 110, 100, 101,
-			114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices9 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices9_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//default", 
-			U"default");
-		Collection_addItem (me.peek(), espeakdata_voices9.transfer());
-
-		static unsigned char espeakdata_voices10_data[38] = {
+		static unsigned char espeakdata_voices33_data[38] = {
 			110, 97, 109, 101, 32, 103, 114, 101, 101, 107, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 108, 10, 103, 101, 110, 100, 101, 114, 32,
 			109, 97, 108, 101, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices10 = FileInMemory_createWithData (37, reinterpret_cast<const char *> (&espeakdata_voices10_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//el", 
+		autoFileInMemory espeakdata_voices33 = FileInMemory_createWithData (37, reinterpret_cast<const char *> (&espeakdata_voices33_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/el", 
 			U"el");
-		Collection_addItem (me.peek(), espeakdata_voices10.transfer());
-
-		static unsigned char espeakdata_voices11_data[40] = {
-			110, 97, 109, 101, 32, 101, 115, 112, 101, 114, 97, 110, 116, 111, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 111, 10, 103, 101, 110,
-			100, 101, 114, 32, 109, 97, 108, 101, 10, 0};
-		autoFileInMemory espeakdata_voices11 = FileInMemory_createWithData (39, reinterpret_cast<const char *> (&espeakdata_voices11_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//eo", 
-			U"eo");
-		Collection_addItem (me.peek(), espeakdata_voices11.transfer());
+		my addItem_move (espeakdata_voices33.move());
 
-		static unsigned char espeakdata_voices12_data[67] = {
+		static unsigned char espeakdata_voices34_data[67] = {
 			110, 97, 109, 101, 32, 115, 112, 97, 110, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 115, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 47, 47, 105, 110, 116, 111, 110, 97, 116, 105,
 			111, 110, 32, 51, 10, 10, 0};
-		autoFileInMemory espeakdata_voices12 = FileInMemory_createWithData (66, reinterpret_cast<const char *> (&espeakdata_voices12_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//es", 
+		autoFileInMemory espeakdata_voices34 = FileInMemory_createWithData (66, reinterpret_cast<const char *> (&espeakdata_voices34_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/es", 
 			U"es");
-		Collection_addItem (me.peek(), espeakdata_voices12.transfer());
-
-		static unsigned char espeakdata_voices13_data[188] = {
-			110, 97, 109, 101, 32, 115, 112, 97, 110, 105, 115, 104, 45, 108, 97, 116, 105, 110, 45, 97, 109, 101, 114, 105, 99, 97, 110, 10, 108, 97,
-			110, 103, 117, 97, 103, 101, 32, 101, 115, 45, 108, 97, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 115, 45, 109, 120, 32, 54, 10,
-			108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 115, 32, 54, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111,
-			110, 101, 109, 101, 115, 32, 101, 115, 45, 108, 97, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 50, 10, 105, 110, 116, 111, 110, 97,
-			116, 105, 111, 110, 32, 50, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 55, 48, 32, 50, 48, 48, 32, 32, 50,
-			51, 48, 32, 49, 56, 48, 32, 32, 48, 32, 48, 32, 32, 50, 53, 48, 32, 50, 56, 48, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32,
-			48, 48, 32, 84, 32, 115, 10, 0};
-		autoFileInMemory espeakdata_voices13 = FileInMemory_createWithData (187, reinterpret_cast<const char *> (&espeakdata_voices13_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//es-la", 
-			U"es-la");
-		Collection_addItem (me.peek(), espeakdata_voices13.transfer());
+		my addItem_move (espeakdata_voices34.move());
 
-		static unsigned char espeakdata_voices14_data[28] = {
+		static unsigned char espeakdata_voices35_data[28] = {
 			110, 97, 109, 101, 32, 101, 115, 116, 111, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 116, 10, 10, 0};
-		autoFileInMemory espeakdata_voices14 = FileInMemory_createWithData (27, reinterpret_cast<const char *> (&espeakdata_voices14_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//et", 
+		autoFileInMemory espeakdata_voices35 = FileInMemory_createWithData (27, reinterpret_cast<const char *> (&espeakdata_voices35_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/et", 
 			U"et");
-		Collection_addItem (me.peek(), espeakdata_voices14.transfer());
+		my addItem_move (espeakdata_voices35.move());
 
-		static unsigned char espeakdata_voices15_data[39] = {
+		static unsigned char espeakdata_voices36_data[39] = {
 			110, 97, 109, 101, 32, 102, 105, 110, 110, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 105, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices15 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices15_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//fi", 
+		autoFileInMemory espeakdata_voices36 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices36_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/fi", 
 			U"fi");
-		Collection_addItem (me.peek(), espeakdata_voices15.transfer());
-
-		static unsigned char espeakdata_voices16_data[83] = {
-			110, 97, 109, 101, 32, 102, 114, 101, 110, 99, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 114, 45, 102, 114, 10, 108, 97, 110,
-			103, 117, 97, 103, 101, 32, 102, 114, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101,
-			115, 32, 49, 10, 116, 117, 110, 101, 115, 32, 115, 51, 32, 99, 51, 32, 113, 51, 32, 101, 51, 10, 0};
-		autoFileInMemory espeakdata_voices16 = FileInMemory_createWithData (82, reinterpret_cast<const char *> (&espeakdata_voices16_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//fr", 
-			U"fr");
-		Collection_addItem (me.peek(), espeakdata_voices16.transfer());
-
-		static unsigned char espeakdata_voices17_data[97] = {
-			110, 97, 109, 101, 32, 102, 114, 101, 110, 99, 104, 32, 40, 66, 101, 108, 103, 105, 117, 109, 41, 10, 108, 97, 110, 103, 117, 97, 103, 101,
-			32, 102, 114, 45, 98, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 114, 32, 56, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97,
-			108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 50, 10, 116, 117, 110, 101, 115, 32, 115, 51, 32, 99, 51, 32, 113, 51,
-			32, 101, 51, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices17 = FileInMemory_createWithData (96, reinterpret_cast<const char *> (&espeakdata_voices17_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//fr-be", 
+		my addItem_move (espeakdata_voices36.move());
+
+		static unsigned char espeakdata_voices37_data[95] = {
+			110, 97, 109, 101, 32, 102, 114, 101, 110, 99, 104, 45, 66, 101, 108, 103, 105, 117, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102,
+			114, 45, 98, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 114, 32, 56, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101,
+			10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 50, 10, 116, 117, 110, 101, 115, 32, 115, 51, 32, 99, 51, 32, 113, 51, 32, 101,
+			51, 10, 10, 10, 0};
+		autoFileInMemory espeakdata_voices37 = FileInMemory_createWithData (94, reinterpret_cast<const char *> (&espeakdata_voices37_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/fr-be", 
 			U"fr-be");
-		Collection_addItem (me.peek(), espeakdata_voices17.transfer());
-
-		static unsigned char espeakdata_voices18_data[36] = {
-			110, 97, 109, 101, 32, 104, 105, 110, 100, 105, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 105, 10, 103, 101, 110, 100, 101, 114, 32,
-			109, 97, 108, 101, 10, 0};
-		autoFileInMemory espeakdata_voices18 = FileInMemory_createWithData (35, reinterpret_cast<const char *> (&espeakdata_voices18_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//hi", 
-			U"hi");
-		Collection_addItem (me.peek(), espeakdata_voices18.transfer());
+		my addItem_move (espeakdata_voices37.move());
+
+		static unsigned char espeakdata_voices38_data[66] = {
+			110, 97, 109, 101, 32, 105, 114, 105, 115, 104, 45, 103, 97, 101, 105, 108, 103, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 103, 97,
+			10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 32, 32, 47, 47, 32, 102, 105, 120, 32, 102, 111, 114, 32, 101, 99, 108, 105,
+			112, 115, 105, 115, 10, 0};
+		autoFileInMemory espeakdata_voices38 = FileInMemory_createWithData (65, reinterpret_cast<const char *> (&espeakdata_voices38_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/ga", 
+			U"ga");
+		my addItem_move (espeakdata_voices38.move());
 
-		static unsigned char espeakdata_voices19_data[291] = {
+		static unsigned char espeakdata_voices39_data[291] = {
 			110, 97, 109, 101, 32, 99, 114, 111, 97, 116, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 114, 10, 108, 97, 110, 103,
 			117, 97, 103, 101, 32, 104, 98, 115, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 105, 111, 110, 97,
 			114, 121, 32, 104, 98, 115, 10, 10, 47, 47, 32, 97, 116, 116, 114, 105, 98, 117, 116, 101, 115, 32, 116, 111, 119, 97, 114, 100, 115, 32,
@@ -181,218 +414,132 @@ FilesInMemory create_espeakdata_voices () {
 			32, 32, 57, 55, 32, 49, 48, 50, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116, 32, 53, 32, 32, 57, 55, 32, 49, 48, 50,
 			32, 49, 48, 48, 10, 10, 115, 116, 114, 101, 115, 115, 65, 100, 100, 32, 49, 48, 32, 49, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32,
 			45, 51, 48, 32, 45, 51, 48, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 0};
-		autoFileInMemory espeakdata_voices19 = FileInMemory_createWithData (290, reinterpret_cast<const char *> (&espeakdata_voices19_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//hr", 
+		autoFileInMemory espeakdata_voices39 = FileInMemory_createWithData (290, reinterpret_cast<const char *> (&espeakdata_voices39_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/hr", 
 			U"hr");
-		Collection_addItem (me.peek(), espeakdata_voices19.transfer());
+		my addItem_move (espeakdata_voices39.move());
 
-		static unsigned char espeakdata_voices20_data[74] = {
+		static unsigned char espeakdata_voices40_data[74] = {
 			110, 97, 109, 101, 32, 104, 117, 110, 103, 97, 114, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 117, 10, 103, 101, 110,
 			100, 101, 114, 32, 109, 97, 108, 101, 10, 111, 112, 116, 105, 111, 110, 32, 98, 114, 97, 99, 107, 101, 116, 32, 48, 32, 48, 10, 112, 105,
 			116, 99, 104, 32, 56, 49, 32, 49, 49, 55, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices20 = FileInMemory_createWithData (73, reinterpret_cast<const char *> (&espeakdata_voices20_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//hu", 
+		autoFileInMemory espeakdata_voices40 = FileInMemory_createWithData (73, reinterpret_cast<const char *> (&espeakdata_voices40_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/hu", 
 			U"hu");
-		Collection_addItem (me.peek(), espeakdata_voices20.transfer());
+		my addItem_move (espeakdata_voices40.move());
 
-		static unsigned char espeakdata_voices21_data[39] = {
-			110, 97, 109, 101, 32, 97, 114, 109, 101, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121, 10, 103, 101, 110, 100,
-			101, 114, 32, 109, 97, 108, 101, 10, 0};
-		autoFileInMemory espeakdata_voices21 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices21_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//hy", 
-			U"hy");
-		Collection_addItem (me.peek(), espeakdata_voices21.transfer());
-
-		static unsigned char espeakdata_voices22_data[327] = {
-			110, 97, 109, 101, 32, 97, 114, 109, 101, 110, 105, 97, 110, 45, 119, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121,
-			45, 119, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 121, 32, 32, 56, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97,
-			108, 101, 10, 10, 47, 47, 32, 99, 104, 97, 110, 103, 101, 32, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 102, 111, 114, 32, 87,
-			101, 115, 116, 32, 65, 114, 109, 101, 110, 105, 97, 110, 32, 112, 114, 111, 110, 117, 110, 99, 105, 97, 116, 105, 111, 110, 10, 114, 101, 112,
-			108, 97, 99, 101, 32, 48, 48, 32, 98, 32, 32, 112, 35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 100, 32, 32, 116, 35,
-			10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 100, 122, 32, 116, 115, 35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32,
-			100, 90, 32, 116, 83, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 103, 32, 32, 107, 35, 10, 10, 114, 101, 112, 108, 97, 99,
-			101, 32, 48, 48, 32, 112, 32, 32, 98, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 116, 32, 32, 100, 10, 114, 101, 112, 108,
-			97, 99, 101, 32, 48, 48, 32, 116, 115, 32, 100, 122, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 99, 32, 32, 100, 90, 10,
-			114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 107, 32, 32, 103, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 42, 42,
-			32, 82, 32, 32, 47, 47, 32, 63, 63, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 114, 32, 32, 82, 10, 0};
-		autoFileInMemory espeakdata_voices22 = FileInMemory_createWithData (326, reinterpret_cast<const char *> (&espeakdata_voices22_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//hy-west", 
-			U"hy-west");
-		Collection_addItem (me.peek(), espeakdata_voices22.transfer());
-
-		static unsigned char espeakdata_voices23_data[152] = {
-			110, 97, 109, 101, 32, 105, 110, 100, 111, 110, 101, 115, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32,
-			105, 100, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49,
-			54, 48, 32, 50, 48, 48, 32, 32, 49, 56, 48, 32, 49, 56, 48, 32, 32, 48, 32, 48, 32, 32, 50, 50, 48, 32, 50, 52, 48, 10,
-			115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 32, 32, 32, 49, 54, 32, 32, 49, 56, 32, 32, 32, 49, 56, 32, 32, 49, 56, 32, 32,
-			32, 48, 32, 48, 32, 32, 50, 50, 32, 32, 50, 49, 10, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 32, 56, 48,
-			10, 0};
-		autoFileInMemory espeakdata_voices23 = FileInMemory_createWithData (151, reinterpret_cast<const char *> (&espeakdata_voices23_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//id", 
-			U"id");
-		Collection_addItem (me.peek(), espeakdata_voices23.transfer());
-
-		static unsigned char espeakdata_voices24_data[46] = {
-			110, 97, 109, 101, 32, 105, 99, 101, 108, 97, 110, 100, 105, 99, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 105,
-			115, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices24 = FileInMemory_createWithData (45, reinterpret_cast<const char *> (&espeakdata_voices24_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//is", 
+		static unsigned char espeakdata_voices41_data[41] = {
+			110, 97, 109, 101, 32, 105, 99, 101, 108, 97, 110, 100, 105, 99, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 105, 115, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices41 = FileInMemory_createWithData (40, reinterpret_cast<const char *> (&espeakdata_voices41_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/is", 
 			U"is");
-		Collection_addItem (me.peek(), espeakdata_voices24.transfer());
-
-		static unsigned char espeakdata_voices25_data[55] = {
-			110, 97, 109, 101, 32, 105, 116, 97, 108, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 105, 116, 10, 103, 101, 110, 100, 101,
-			114, 32, 109, 97, 108, 101, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 105, 32, 73, 10, 10, 0};
-		autoFileInMemory espeakdata_voices25 = FileInMemory_createWithData (54, reinterpret_cast<const char *> (&espeakdata_voices25_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//it", 
+		my addItem_move (espeakdata_voices41.move());
+
+		static unsigned char espeakdata_voices42_data[75] = {
+			32, 10, 110, 97, 109, 101, 32, 105, 116, 97, 108, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 105, 116, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 116, 117, 110, 101, 115, 32, 115, 52, 32, 99, 52, 32, 113, 52, 32, 101, 52, 10, 10, 114,
+			101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 105, 32, 73, 10, 0};
+		autoFileInMemory espeakdata_voices42 = FileInMemory_createWithData (74, reinterpret_cast<const char *> (&espeakdata_voices42_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/it", 
 			U"it");
-		Collection_addItem (me.peek(), espeakdata_voices25.transfer());
-
-		static unsigned char espeakdata_voices26_data[32] = {
-			110, 97, 109, 101, 32, 103, 101, 111, 114, 103, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 97,
-			10, 0};
-		autoFileInMemory espeakdata_voices26 = FileInMemory_createWithData (31, reinterpret_cast<const char *> (&espeakdata_voices26_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ka", 
-			U"ka");
-		Collection_addItem (me.peek(), espeakdata_voices26.transfer());
-
-		static unsigned char espeakdata_voices27_data[56] = {
-			110, 97, 109, 101, 32, 107, 97, 110, 110, 97, 100, 97, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 110, 10, 10, 105, 110, 116, 111,
-			110, 97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
-		autoFileInMemory espeakdata_voices27 = FileInMemory_createWithData (55, reinterpret_cast<const char *> (&espeakdata_voices27_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//kn", 
-			U"kn");
-		Collection_addItem (me.peek(), espeakdata_voices27.transfer());
-
-		static unsigned char espeakdata_voices28_data[53] = {
-			110, 97, 109, 101, 32, 107, 117, 114, 100, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 117, 10, 103, 101, 110, 100, 101,
-			114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 119, 111, 114, 100, 115, 32, 49, 32, 52, 56, 10, 10, 0};
-		autoFileInMemory espeakdata_voices28 = FileInMemory_createWithData (52, reinterpret_cast<const char *> (&espeakdata_voices28_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ku", 
-			U"ku");
-		Collection_addItem (me.peek(), espeakdata_voices28.transfer());
+		my addItem_move (espeakdata_voices42.move());
 
-		static unsigned char espeakdata_voices29_data[299] = {
-			110, 97, 109, 101, 32, 108, 97, 116, 105, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 108, 97, 10, 103, 101, 110, 100, 101, 114, 32,
-			109, 97, 108, 101, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 50, 32, 51, 51, 32, 48, 32, 50, 10, 47, 47, 32, 114, 117,
-			108, 101, 61, 112, 101, 110, 117, 108, 116, 105, 109, 97, 116, 101, 10, 47, 47, 32, 102, 108, 97, 103, 115, 61, 48, 49, 48, 48, 48, 48,
-			49, 32, 40, 110, 111, 32, 97, 117, 116, 111, 109, 97, 116, 105, 99, 32, 115, 101, 99, 111, 110, 100, 97, 114, 121, 32, 115, 116, 114, 101,
-			115, 115, 32, 43, 32, 100, 111, 110, 39, 116, 32, 115, 116, 114, 101, 115, 32, 109, 111, 110, 111, 115, 121, 108, 108, 97, 98, 108, 101, 115,
-			41, 10, 47, 47, 32, 117, 110, 115, 116, 114, 101, 115, 115, 101, 100, 95, 119, 100, 49, 61, 48, 10, 47, 47, 32, 117, 110, 115, 116, 114,
-			101, 115, 115, 101, 100, 95, 119, 100, 50, 61, 50, 10, 10, 47, 47, 32, 115, 104, 111, 114, 116, 32, 103, 97, 112, 32, 98, 101, 116, 119,
-			101, 101, 110, 32, 119, 111, 114, 100, 115, 10, 119, 111, 114, 100, 115, 32, 50, 10, 10, 47, 47, 32, 78, 111, 116, 101, 58, 32, 84, 104,
-			101, 32, 76, 97, 116, 105, 110, 32, 118, 111, 105, 99, 101, 32, 110, 101, 101, 100, 115, 32, 108, 111, 110, 103, 32, 118, 111, 119, 101, 108,
-			115, 32, 116, 111, 32, 98, 101, 32, 109, 97, 114, 107, 101, 100, 32, 119, 105, 116, 104, 32, 109, 97, 99, 114, 111, 110, 115, 10, 0};
-		autoFileInMemory espeakdata_voices29 = FileInMemory_createWithData (298, reinterpret_cast<const char *> (&espeakdata_voices29_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//la", 
-			U"la");
-		Collection_addItem (me.peek(), espeakdata_voices29.transfer());
+		static unsigned char espeakdata_voices43_data[43] = {
+			10, 110, 97, 109, 101, 32, 108, 105, 116, 104, 117, 97, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 108, 116, 10, 103,
+			101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices43 = FileInMemory_createWithData (42, reinterpret_cast<const char *> (&espeakdata_voices43_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/lt", 
+			U"lt");
+		my addItem_move (espeakdata_voices43.move());
 
-		static unsigned char espeakdata_voices30_data[58] = {
+		static unsigned char espeakdata_voices44_data[58] = {
 			110, 97, 109, 101, 32, 108, 97, 116, 118, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 108, 118, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 32, 111, 32, 32, 111, 58, 10, 10, 0};
-		autoFileInMemory espeakdata_voices30 = FileInMemory_createWithData (57, reinterpret_cast<const char *> (&espeakdata_voices30_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//lv", 
+		autoFileInMemory espeakdata_voices44 = FileInMemory_createWithData (57, reinterpret_cast<const char *> (&espeakdata_voices44_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/lv", 
 			U"lv");
-		Collection_addItem (me.peek(), espeakdata_voices30.transfer());
+		my addItem_move (espeakdata_voices44.move());
 
-		static unsigned char espeakdata_voices31_data[47] = {
-			110, 97, 109, 101, 32, 109, 97, 99, 101, 100, 111, 110, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32,
-			109, 107, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices31 = FileInMemory_createWithData (46, reinterpret_cast<const char *> (&espeakdata_voices31_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//mk", 
+		static unsigned char espeakdata_voices45_data[42] = {
+			110, 97, 109, 101, 32, 109, 97, 99, 101, 100, 111, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 109, 107, 10, 103, 101,
+			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices45 = FileInMemory_createWithData (41, reinterpret_cast<const char *> (&espeakdata_voices45_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/mk", 
 			U"mk");
-		Collection_addItem (me.peek(), espeakdata_voices31.transfer());
+		my addItem_move (espeakdata_voices45.move());
 
-		static unsigned char espeakdata_voices32_data[70] = {
-			110, 97, 109, 101, 32, 109, 97, 108, 97, 121, 97, 108, 97, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 109, 108, 10, 103, 101, 110,
-			100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111,
-			110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
-		autoFileInMemory espeakdata_voices32 = FileInMemory_createWithData (69, reinterpret_cast<const char *> (&espeakdata_voices32_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ml", 
-			U"ml");
-		Collection_addItem (me.peek(), espeakdata_voices32.transfer());
-
-		static unsigned char espeakdata_voices33_data[41] = {
-			108, 97, 110, 103, 117, 97, 103, 101, 32, 110, 108, 10, 110, 97, 109, 101, 32, 100, 117, 116, 99, 104, 45, 116, 101, 115, 116, 10, 103, 101,
-			110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 0};
-		autoFileInMemory espeakdata_voices33 = FileInMemory_createWithData (40, reinterpret_cast<const char *> (&espeakdata_voices33_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//nl", 
+		static unsigned char espeakdata_voices46_data[36] = {
+			108, 97, 110, 103, 117, 97, 103, 101, 32, 110, 108, 10, 110, 97, 109, 101, 32, 100, 117, 116, 99, 104, 10, 103, 101, 110, 100, 101, 114, 32,
+			109, 97, 108, 101, 10, 0};
+		autoFileInMemory espeakdata_voices46 = FileInMemory_createWithData (35, reinterpret_cast<const char *> (&espeakdata_voices46_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/nl", 
 			U"nl");
-		Collection_addItem (me.peek(), espeakdata_voices33.transfer());
+		my addItem_move (espeakdata_voices46.move());
 
-		static unsigned char espeakdata_voices34_data[66] = {
+		static unsigned char espeakdata_voices47_data[66] = {
 			110, 97, 109, 101, 32, 110, 111, 114, 119, 101, 103, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 110, 111, 10, 108, 97, 110,
 			103, 117, 97, 103, 101, 32, 110, 98, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105,
 			111, 110, 32, 52, 10, 0};
-		autoFileInMemory espeakdata_voices34 = FileInMemory_createWithData (65, reinterpret_cast<const char *> (&espeakdata_voices34_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//no", 
+		autoFileInMemory espeakdata_voices47 = FileInMemory_createWithData (65, reinterpret_cast<const char *> (&espeakdata_voices47_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/no", 
 			U"no");
-		Collection_addItem (me.peek(), espeakdata_voices34.transfer());
+		my addItem_move (espeakdata_voices47.move());
 
-		static unsigned char espeakdata_voices35_data[51] = {
+		static unsigned char espeakdata_voices48_data[51] = {
 			110, 97, 109, 101, 32, 112, 111, 108, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 108, 10, 103, 101, 110, 100, 101, 114,
 			32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 0};
-		autoFileInMemory espeakdata_voices35 = FileInMemory_createWithData (50, reinterpret_cast<const char *> (&espeakdata_voices35_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//pl", 
+		autoFileInMemory espeakdata_voices48 = FileInMemory_createWithData (50, reinterpret_cast<const char *> (&espeakdata_voices48_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/pl", 
 			U"pl");
-		Collection_addItem (me.peek(), espeakdata_voices35.transfer());
+		my addItem_move (espeakdata_voices48.move());
 
-		static unsigned char espeakdata_voices36_data[66] = {
-			110, 97, 109, 101, 32, 98, 114, 97, 122, 105, 108, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 116, 45, 98, 114, 10, 108, 97, 110,
-			103, 117, 97, 103, 101, 32, 112, 116, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101,
-			115, 32, 50, 10, 10, 0};
-		autoFileInMemory espeakdata_voices36 = FileInMemory_createWithData (65, reinterpret_cast<const char *> (&espeakdata_voices36_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//pt", 
-			U"pt");
-		Collection_addItem (me.peek(), espeakdata_voices36.transfer());
-
-		static unsigned char espeakdata_voices37_data[97] = {
+		static unsigned char espeakdata_voices49_data[97] = {
 			110, 97, 109, 101, 32, 112, 111, 114, 116, 117, 103, 97, 108, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 116, 45, 112, 116, 10, 108,
 			97, 110, 103, 117, 97, 103, 101, 32, 112, 116, 32, 54, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 112, 104, 111, 110, 101,
 			109, 101, 115, 32, 112, 116, 45, 112, 116, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 105, 110, 116, 111, 110, 97, 116,
 			105, 111, 110, 32, 50, 10, 0};
-		autoFileInMemory espeakdata_voices37 = FileInMemory_createWithData (96, reinterpret_cast<const char *> (&espeakdata_voices37_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//pt-pt", 
+		autoFileInMemory espeakdata_voices49 = FileInMemory_createWithData (96, reinterpret_cast<const char *> (&espeakdata_voices49_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/pt-pt", 
 			U"pt-pt");
-		Collection_addItem (me.peek(), espeakdata_voices37.transfer());
+		my addItem_move (espeakdata_voices49.move());
 
-		static unsigned char espeakdata_voices38_data[41] = {
+		static unsigned char espeakdata_voices50_data[41] = {
 			110, 97, 109, 101, 32, 114, 111, 109, 97, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 114, 111, 10, 103, 101, 110, 100,
 			101, 114, 32, 109, 97, 108, 101, 10, 10, 10, 0};
-		autoFileInMemory espeakdata_voices38 = FileInMemory_createWithData (40, reinterpret_cast<const char *> (&espeakdata_voices38_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ro", 
+		autoFileInMemory espeakdata_voices50 = FileInMemory_createWithData (40, reinterpret_cast<const char *> (&espeakdata_voices50_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/ro", 
 			U"ro");
-		Collection_addItem (me.peek(), espeakdata_voices38.transfer());
-
-		static unsigned char espeakdata_voices39_data[61] = {
-			110, 97, 109, 101, 32, 114, 117, 115, 115, 105, 97, 110, 95, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 114, 117, 10,
-			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 97, 32, 97, 35, 10, 10,
-			0};
-		autoFileInMemory espeakdata_voices39 = FileInMemory_createWithData (60, reinterpret_cast<const char *> (&espeakdata_voices39_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ru", 
+		my addItem_move (espeakdata_voices50.move());
+
+		static unsigned char espeakdata_voices51_data[72] = {
+			110, 97, 109, 101, 32, 114, 117, 115, 115, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 114, 117, 10, 103, 101, 110, 100, 101,
+			114, 32, 109, 97, 108, 101, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 97, 32, 97, 35, 10, 10, 100, 105, 99, 116, 95,
+			109, 105, 110, 32, 32, 50, 48, 48, 48, 48, 10, 0};
+		autoFileInMemory espeakdata_voices51 = FileInMemory_createWithData (71, reinterpret_cast<const char *> (&espeakdata_voices51_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/ru", 
 			U"ru");
-		Collection_addItem (me.peek(), espeakdata_voices39.transfer());
+		my addItem_move (espeakdata_voices51.move());
 
-		static unsigned char espeakdata_voices40_data[38] = {
+		static unsigned char espeakdata_voices52_data[38] = {
 			110, 97, 109, 101, 32, 115, 108, 111, 118, 97, 107, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 107, 10, 103, 101, 110, 100, 101, 114,
 			32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices40 = FileInMemory_createWithData (37, reinterpret_cast<const char *> (&espeakdata_voices40_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//sk", 
+		autoFileInMemory espeakdata_voices52 = FileInMemory_createWithData (37, reinterpret_cast<const char *> (&espeakdata_voices52_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/sk", 
 			U"sk");
-		Collection_addItem (me.peek(), espeakdata_voices40.transfer());
+		my addItem_move (espeakdata_voices52.move());
 
-		static unsigned char espeakdata_voices41_data[116] = {
+		static unsigned char espeakdata_voices53_data[116] = {
 			110, 97, 109, 101, 32, 97, 108, 98, 97, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 113, 10, 103, 101, 110, 100,
 			101, 114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 32, 97, 100, 100, 32, 116, 104, 105, 115, 32, 108, 105, 110, 101, 32, 116, 111, 32, 114,
 			101, 109, 111, 118, 101, 32, 39, 195, 171, 39, 32, 97, 116, 32, 116, 104, 101, 32, 101, 110, 100, 32, 111, 102, 32, 119, 111, 114, 100, 115,
 			10, 47, 47, 32, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 32, 64, 47, 32, 32, 78, 85, 76, 76, 10, 0};
-		autoFileInMemory espeakdata_voices41 = FileInMemory_createWithData (115, reinterpret_cast<const char *> (&espeakdata_voices41_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//sq", 
+		autoFileInMemory espeakdata_voices53 = FileInMemory_createWithData (115, reinterpret_cast<const char *> (&espeakdata_voices53_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/sq", 
 			U"sq");
-		Collection_addItem (me.peek(), espeakdata_voices41.transfer());
+		my addItem_move (espeakdata_voices53.move());
 
-		static unsigned char espeakdata_voices42_data[278] = {
+		static unsigned char espeakdata_voices54_data[278] = {
 			110, 97, 109, 101, 32, 115, 101, 114, 98, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 114, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 100, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 104, 98, 115, 10, 10, 47, 47, 32, 97, 116, 116, 114,
 			105, 98, 117, 116, 101, 115, 32, 116, 111, 119, 97, 114, 100, 115, 32, 33, 118, 97, 114, 105, 97, 110, 116, 51, 32, 112, 105, 116, 99, 104,
@@ -403,117 +550,51 @@ FilesInMemory create_espeakdata_voices () {
 			114, 109, 97, 110, 116, 32, 53, 32, 32, 57, 55, 32, 49, 48, 50, 32, 49, 48, 48, 10, 10, 115, 116, 114, 101, 115, 115, 65, 100, 100,
 			32, 49, 48, 32, 49, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 45, 51, 48, 32, 45, 51, 48, 10, 100, 105, 99, 116, 114, 117, 108,
 			101, 115, 32, 50, 32, 52, 10, 0};
-		autoFileInMemory espeakdata_voices42 = FileInMemory_createWithData (277, reinterpret_cast<const char *> (&espeakdata_voices42_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//sr", 
+		autoFileInMemory espeakdata_voices54 = FileInMemory_createWithData (277, reinterpret_cast<const char *> (&espeakdata_voices54_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/sr", 
 			U"sr");
-		Collection_addItem (me.peek(), espeakdata_voices42.transfer());
+		my addItem_move (espeakdata_voices54.move());
 
-		static unsigned char espeakdata_voices43_data[39] = {
+		static unsigned char espeakdata_voices55_data[39] = {
 			110, 97, 109, 101, 32, 115, 119, 101, 100, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 118, 10, 103, 101, 110, 100, 101,
 			114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices43 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices43_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//sv", 
+		autoFileInMemory espeakdata_voices55 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices55_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/europe/sv", 
 			U"sv");
-		Collection_addItem (me.peek(), espeakdata_voices43.transfer());
-
-		static unsigned char espeakdata_voices44_data[44] = {
-			110, 97, 109, 101, 32, 115, 119, 97, 104, 105, 108, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 119, 10,
-			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices44 = FileInMemory_createWithData (43, reinterpret_cast<const char *> (&espeakdata_voices44_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//sw", 
-			U"sw");
-		Collection_addItem (me.peek(), espeakdata_voices44.transfer());
+		my addItem_move (espeakdata_voices55.move());
 
-		static unsigned char espeakdata_voices45_data[64] = {
-			110, 97, 109, 101, 32, 116, 97, 109, 105, 108, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 97, 10, 103, 101, 110, 100, 101, 114, 32,
-			109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32,
-			56, 48, 10, 0};
-		autoFileInMemory espeakdata_voices45 = FileInMemory_createWithData (63, reinterpret_cast<const char *> (&espeakdata_voices45_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//ta", 
-			U"ta");
-		Collection_addItem (me.peek(), espeakdata_voices45.transfer());
-
-		static unsigned char espeakdata_voices46_data[39] = {
-			110, 97, 109, 101, 32, 116, 117, 114, 107, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 114, 10, 103, 101, 110, 100, 101,
-			114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices46 = FileInMemory_createWithData (38, reinterpret_cast<const char *> (&espeakdata_voices46_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//tr", 
-			U"tr");
-		Collection_addItem (me.peek(), espeakdata_voices46.transfer());
-
-		static unsigned char espeakdata_voices47_data[60] = {
-			110, 97, 109, 101, 32, 118, 105, 101, 116, 110, 97, 109, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 118, 105, 10, 103, 101, 110, 100, 101,
-			114, 32, 109, 97, 108, 101, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 0};
-		autoFileInMemory espeakdata_voices47 = FileInMemory_createWithData (59, reinterpret_cast<const char *> (&espeakdata_voices47_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//vi", 
-			U"vi");
-		Collection_addItem (me.peek(), espeakdata_voices47.transfer());
-
-		static unsigned char espeakdata_voices48_data[595] = {
-			110, 97, 109, 101, 32, 77, 97, 110, 100, 97, 114, 105, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 10, 103, 101, 110, 100,
-			101, 114, 32, 109, 97, 108, 101, 10, 119, 111, 114, 100, 115, 32, 49, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 10,
-			47, 47, 102, 111, 114, 32, 115, 111, 109, 101, 32, 100, 105, 97, 108, 101, 99, 116, 115, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114,
-			101, 112, 108, 97, 99, 101, 32, 110, 103, 32, 119, 105, 116, 104, 32, 110, 10, 47, 47, 91, 122, 104, 93, 58, 32, 239, 191, 189, 222, 186,
-			239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 110, 103, 239, 191, 189, 239, 191, 189, 239,
-			191, 189, 110, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 78, 32, 110, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114,
-			101, 112, 108, 97, 99, 101, 32, 114, 102, 120, 32, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 10, 47, 47, 91, 122, 104, 93, 58, 32,
-			239, 191, 189, 222, 190, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 114, 239, 191, 189,
-			239, 191, 189, 239, 191, 189, 108, 239, 191, 189, 239, 191, 189, 122, 239, 191, 189, 239, 191, 189, 101, 114, 239, 191, 189, 239, 191, 189, 239, 191,
-			189, 101, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 116, 115, 46, 104, 32, 116, 115, 104, 10, 47, 47, 114, 101, 112, 108,
-			97, 99, 101, 32, 48, 32, 116, 115, 46, 32, 116, 115, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 115, 46, 32, 115, 10,
-			47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 105, 46, 32, 105, 91, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32,
-			122, 46, 32, 108, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 122, 46, 32, 122, 10, 47, 47, 114, 101, 112, 108, 97, 99,
-			101, 32, 48, 32, 64, 114, 32, 64, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 98, 101, 103, 105,
-			110, 110, 105, 110, 103, 32, 110, 32, 111, 114, 32, 108, 10, 47, 47, 91, 122, 104, 93, 58, 32, 239, 191, 189, 239, 191, 189, 239, 191, 189,
-			239, 191, 189, 110, 108, 239, 191, 189, 239, 191, 189, 110, 239, 191, 189, 239, 191, 189, 239, 191, 189, 108, 239, 191, 189, 239, 191, 189, 108, 239,
-			191, 189, 239, 191, 189, 239, 191, 189, 110, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 50, 32, 110, 32, 108, 10, 47, 47, 114, 101,
-			112, 108, 97, 99, 101, 32, 50, 32, 108, 32, 110, 10, 10, 47, 47, 91, 101, 110, 93, 58, 32, 114, 101, 112, 108, 97, 99, 101, 32, 98,
-			101, 103, 105, 110, 110, 105, 110, 103, 32, 119, 32, 119, 105, 116, 104, 32, 118, 10, 47, 47, 91, 122, 104, 93, 58, 32, 119, 239, 191, 189,
-			239, 191, 189, 239, 191, 189, 118, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 32, 119, 32, 32, 118, 0};
-		autoFileInMemory espeakdata_voices48 = FileInMemory_createWithData (594, reinterpret_cast<const char *> (&espeakdata_voices48_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//zh", 
-			U"zh");
-		Collection_addItem (me.peek(), espeakdata_voices48.transfer());
+		static unsigned char espeakdata_voices56_data[83] = {
+			110, 97, 109, 101, 32, 102, 114, 101, 110, 99, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 102, 114, 45, 102, 114, 10, 108, 97, 110,
+			103, 117, 97, 103, 101, 32, 102, 114, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101,
+			115, 32, 49, 10, 116, 117, 110, 101, 115, 32, 115, 51, 32, 99, 51, 32, 113, 51, 32, 101, 51, 10, 0};
+		autoFileInMemory espeakdata_voices56 = FileInMemory_createWithData (82, reinterpret_cast<const char *> (&espeakdata_voices56_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/fr", 
+			U"fr");
+		my addItem_move (espeakdata_voices56.move());
 
-		static unsigned char espeakdata_voices49_data[196] = {
-			110, 97, 109, 101, 32, 99, 97, 110, 116, 111, 110, 101, 115, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 45, 121, 117, 101,
-			10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 121, 117, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 122, 104, 121, 10, 10, 116, 114,
-			97, 110, 115, 108, 97, 116, 111, 114, 32, 122, 104, 121, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 122, 104, 121, 10, 100, 105, 99, 116,
-			105, 111, 110, 97, 114, 121, 32, 122, 104, 121, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 47, 47, 32, 105, 110, 116,
-			101, 114, 112, 114, 101, 116, 32, 69, 110, 103, 108, 105, 115, 104, 32, 108, 101, 116, 116, 101, 114, 115, 32, 97, 115, 32, 49, 61, 69, 110,
-			103, 108, 105, 115, 104, 32, 119, 111, 114, 100, 115, 44, 32, 50, 61, 106, 121, 117, 116, 112, 105, 110, 103, 10, 100, 105, 99, 116, 114, 117,
-			108, 101, 115, 32, 49, 10, 10, 119, 111, 114, 100, 115, 32, 49, 10, 0};
-		autoFileInMemory espeakdata_voices49 = FileInMemory_createWithData (195, reinterpret_cast<const char *> (&espeakdata_voices49_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices//zh-yue", 
-			U"zh-yue");
-		Collection_addItem (me.peek(), espeakdata_voices49.transfer());
-
-		static unsigned char espeakdata_voices50_data[143] = {
-			110, 97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 50,
-			10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 103, 98, 32, 32, 50, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110,
-			32, 50, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 32, 105,
-			10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 50, 32, 105, 10, 10, 47, 47, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49,
-			49, 56, 10, 10, 116, 117, 110, 101, 115, 32, 115, 49, 32, 99, 49, 32, 113, 49, 32, 101, 49, 10, 0};
-		autoFileInMemory espeakdata_voices50 = FileInMemory_createWithData (142, reinterpret_cast<const char *> (&espeakdata_voices50_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en", 
-			U"en");
-		Collection_addItem (me.peek(), espeakdata_voices50.transfer());
-
-		static unsigned char espeakdata_voices51_data[217] = {
-			110, 97, 109, 101, 32, 108, 97, 110, 99, 97, 115, 104, 105, 114, 101, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107,
-			45, 110, 111, 114, 116, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 51, 10, 108, 97, 110, 103, 117,
-			97, 103, 101, 32, 101, 110, 32, 53, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115,
-			32, 101, 110, 45, 110, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 54, 48, 32, 49, 53, 48, 32, 32, 49,
-			56, 48, 32, 49, 56, 48, 32, 32, 50, 50, 48, 32, 50, 50, 48, 32, 32, 50, 57, 48, 32, 50, 57, 48, 10, 10, 114, 101, 112, 108,
-			97, 99, 101, 32, 48, 48, 32, 105, 64, 51, 32, 105, 64, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 78, 32, 110, 10, 47,
-			47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 32, 32, 105, 10, 47, 47, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32,
-			73, 50, 32, 105, 10, 10, 0};
-		autoFileInMemory espeakdata_voices51 = FileInMemory_createWithData (216, reinterpret_cast<const char *> (&espeakdata_voices51_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-n", 
+		static unsigned char espeakdata_voices57_data[68] = {
+			110, 97, 109, 101, 32, 97, 102, 114, 105, 107, 97, 97, 110, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 102, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 114, 111, 117, 103, 104, 110, 101, 115, 115, 32, 48, 10, 112, 105, 116, 99, 104, 32, 54, 51, 32,
+			49, 50, 48, 10, 10, 10, 10, 0};
+		autoFileInMemory espeakdata_voices57 = FileInMemory_createWithData (67, reinterpret_cast<const char *> (&espeakdata_voices57_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/af", 
+			U"af");
+		my addItem_move (espeakdata_voices57.move());
+
+		static unsigned char espeakdata_voices58_data[202] = {
+			110, 97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 45, 110, 111, 114, 116, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110,
+			45, 117, 107, 45, 110, 111, 114, 116, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 51, 10, 108, 97,
+			110, 103, 117, 97, 103, 101, 32, 101, 110, 32, 53, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101,
+			109, 101, 115, 32, 101, 110, 45, 110, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 54, 48, 32, 49, 53, 48,
+			32, 32, 49, 56, 48, 32, 49, 56, 48, 32, 32, 50, 50, 48, 32, 50, 50, 48, 32, 32, 50, 57, 48, 32, 50, 57, 48, 10, 10, 114,
+			101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 105, 64, 51, 32, 105, 64, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 78, 32,
+			110, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 105, 32, 32, 73, 50, 10, 10, 10, 0};
+		autoFileInMemory espeakdata_voices58 = FileInMemory_createWithData (201, reinterpret_cast<const char *> (&espeakdata_voices58_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/en-n", 
 			U"en-n");
-		Collection_addItem (me.peek(), espeakdata_voices51.transfer());
+		my addItem_move (espeakdata_voices58.move());
 
-		static unsigned char espeakdata_voices52_data[195] = {
+		static unsigned char espeakdata_voices59_data[195] = {
 			110, 97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 95, 114, 112, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107,
 			45, 114, 112, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 52, 10, 108, 97, 110, 103, 117, 97, 103, 101,
 			32, 101, 110, 32, 53, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 101, 110,
@@ -521,12 +602,12 @@ FilesInMemory create_espeakdata_voices () {
 			32, 48, 48, 32, 105, 64, 51, 32, 105, 64, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 32, 105, 10, 114, 101, 112, 108,
 			97, 99, 101, 32, 48, 51, 32, 73, 50, 32, 105, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 64, 32, 97, 35, 10, 114, 101,
 			112, 108, 97, 99, 101, 32, 48, 51, 32, 51, 32, 97, 35, 10, 0};
-		autoFileInMemory espeakdata_voices52 = FileInMemory_createWithData (194, reinterpret_cast<const char *> (&espeakdata_voices52_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-rp", 
+		autoFileInMemory espeakdata_voices59 = FileInMemory_createWithData (194, reinterpret_cast<const char *> (&espeakdata_voices59_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/en-rp", 
 			U"en-rp");
-		Collection_addItem (me.peek(), espeakdata_voices52.transfer());
+		my addItem_move (espeakdata_voices59.move());
 
-		static unsigned char espeakdata_voices53_data[247] = {
+		static unsigned char espeakdata_voices60_data[247] = {
 			110, 97, 109, 101, 32, 101, 110, 45, 115, 99, 111, 116, 116, 105, 115, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 115,
 			99, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 32, 52, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112,
 			104, 111, 110, 101, 109, 101, 115, 32, 101, 110, 45, 115, 99, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 53, 32, 54, 32, 55, 10,
@@ -536,28 +617,12 @@ FilesInMemory create_espeakdata_voices () {
 			101, 112, 108, 97, 99, 101, 32, 48, 49, 32, 97, 73, 32, 97, 73, 50, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 50, 32, 97, 32,
 			97, 47, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 50, 32, 117, 58, 32, 85, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 50, 32,
 			51, 58, 32, 86, 82, 10, 0};
-		autoFileInMemory espeakdata_voices53 = FileInMemory_createWithData (246, reinterpret_cast<const char *> (&espeakdata_voices53_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-sc", 
+		autoFileInMemory espeakdata_voices60 = FileInMemory_createWithData (246, reinterpret_cast<const char *> (&espeakdata_voices60_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/en-sc", 
 			U"en-sc");
-		Collection_addItem (me.peek(), espeakdata_voices53.transfer());
-
-		static unsigned char espeakdata_voices54_data[281] = {
-			47, 47, 32, 109, 111, 118, 105, 110, 103, 32, 116, 111, 119, 97, 114, 100, 115, 32, 85, 83, 32, 69, 110, 103, 108, 105, 115, 104, 10, 110,
-			97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 45, 117, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 115, 32,
-			50, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 114, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 32, 51, 10,
-			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 101, 110, 45, 117, 115, 10, 100, 105,
-			99, 116, 114, 117, 108, 101, 115, 32, 51, 32, 54, 10, 111, 112, 116, 105, 111, 110, 32, 114, 101, 100, 117, 99, 101, 95, 116, 32, 49, 10,
-			10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 52, 53, 32, 49, 50, 53, 32, 49, 57, 48, 32, 49, 55, 48, 32,
-			48, 32, 48, 32, 50, 54, 48, 32, 51, 48, 48, 10, 115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 32, 49, 55, 32, 49, 54, 32, 32,
-			49, 57, 32, 49, 57, 32, 32, 49, 57, 32, 49, 57, 32, 32, 50, 49, 32, 49, 57, 10, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48,
-			51, 32, 73, 32, 32, 105, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 73, 50, 32, 105, 10, 114, 101, 112, 108, 97, 99, 101,
-			32, 48, 51, 32, 64, 32, 32, 64, 47, 10, 0};
-		autoFileInMemory espeakdata_voices54 = FileInMemory_createWithData (280, reinterpret_cast<const char *> (&espeakdata_voices54_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-us", 
-			U"en-us");
-		Collection_addItem (me.peek(), espeakdata_voices54.transfer());
+		my addItem_move (espeakdata_voices60.move());
 
-		static unsigned char espeakdata_voices55_data[317] = {
+		static unsigned char espeakdata_voices61_data[317] = {
 			110, 97, 109, 101, 32, 101, 110, 45, 119, 101, 115, 116, 105, 110, 100, 105, 101, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110,
 			45, 119, 105, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 32, 52, 10, 108, 97, 110, 103, 117, 97, 103, 101,
 			32, 101, 110, 32, 49, 48, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 101,
@@ -569,12 +634,12 @@ FilesInMemory create_espeakdata_voices () {
 			112, 108, 97, 99, 101, 32, 48, 51, 32, 51, 32, 97, 35, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 51, 32, 78, 32, 110, 10, 10,
 			102, 111, 114, 109, 97, 110, 116, 32, 49, 32, 32, 57, 56, 32, 32, 49, 48, 48, 32, 49, 48, 48, 10, 102, 111, 114, 109, 97, 110, 116,
 			32, 50, 32, 32, 57, 56, 32, 32, 49, 48, 48, 32, 49, 48, 48, 10, 0};
-		autoFileInMemory espeakdata_voices55 = FileInMemory_createWithData (316, reinterpret_cast<const char *> (&espeakdata_voices55_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-wi", 
+		autoFileInMemory espeakdata_voices61 = FileInMemory_createWithData (316, reinterpret_cast<const char *> (&espeakdata_voices61_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/en-wi", 
 			U"en-wi");
-		Collection_addItem (me.peek(), espeakdata_voices55.transfer());
+		my addItem_move (espeakdata_voices61.move());
 
-		static unsigned char espeakdata_voices56_data[206] = {
+		static unsigned char espeakdata_voices62_data[206] = {
 			110, 97, 109, 101, 32, 101, 110, 103, 108, 105, 115, 104, 95, 119, 109, 105, 100, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110,
 			45, 117, 107, 45, 119, 109, 105, 100, 115, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 110, 45, 117, 107, 32, 57, 10, 108, 97, 110,
 			103, 117, 97, 103, 101, 32, 101, 110, 32, 57, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 112, 104, 111, 110, 101, 109,
@@ -582,247 +647,216 @@ FilesInMemory create_espeakdata_voices () {
 			112, 108, 97, 99, 101, 32, 48, 48, 32, 111, 64, 32, 79, 64, 10, 114, 101, 112, 108, 97, 99, 101, 32, 48, 48, 32, 105, 64, 51, 32,
 			105, 64, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 54, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 52, 10, 115, 116,
 			114, 101, 115, 115, 65, 100, 100, 32, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 48, 32, 50, 48, 10, 0};
-		autoFileInMemory espeakdata_voices56 = FileInMemory_createWithData (205, reinterpret_cast<const char *> (&espeakdata_voices56_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/en/en-wm", 
+		autoFileInMemory espeakdata_voices62 = FileInMemory_createWithData (205, reinterpret_cast<const char *> (&espeakdata_voices62_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/en-wm", 
 			U"en-wm");
-		Collection_addItem (me.peek(), espeakdata_voices56.transfer());
-
-		static unsigned char espeakdata_voices57_data[44] = {
-			110, 97, 109, 101, 32, 97, 107, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 107, 10, 116, 114, 97,
-			110, 115, 108, 97, 116, 111, 114, 32, 115, 119, 10, 32, 10, 0};
-		autoFileInMemory espeakdata_voices57 = FileInMemory_createWithData (43, reinterpret_cast<const char *> (&espeakdata_voices57_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ak", 
-			U"ak");
-		Collection_addItem (me.peek(), espeakdata_voices57.transfer());
+		my addItem_move (espeakdata_voices62.move());
 
-		static unsigned char espeakdata_voices58_data[32] = {
-			110, 97, 109, 101, 32, 97, 109, 104, 97, 114, 105, 99, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 109, 10,
-			10, 0};
-		autoFileInMemory espeakdata_voices58 = FileInMemory_createWithData (31, reinterpret_cast<const char *> (&espeakdata_voices58_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/am", 
-			U"am");
-		Collection_addItem (me.peek(), espeakdata_voices58.transfer());
-
-		static unsigned char espeakdata_voices59_data[36] = {
-			110, 97, 109, 101, 32, 97, 122, 101, 114, 98, 97, 105, 106, 97, 110, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101,
-			32, 97, 122, 10, 10, 0};
-		autoFileInMemory espeakdata_voices59 = FileInMemory_createWithData (35, reinterpret_cast<const char *> (&espeakdata_voices59_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/az", 
-			U"az");
-		Collection_addItem (me.peek(), espeakdata_voices59.transfer());
-
-		static unsigned char espeakdata_voices60_data[116] = {
-			110, 97, 109, 101, 32, 98, 117, 108, 103, 97, 114, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 98,
-			103, 10, 10, 115, 116, 114, 101, 115, 115, 65, 109, 112, 32, 49, 51, 32, 49, 50, 32, 49, 55, 32, 49, 55, 32, 50, 48, 32, 50, 50,
-			32, 50, 50, 32, 50, 49, 32, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 56, 48, 32, 49, 55, 48, 32, 32,
-			50, 48, 48, 32, 50, 48, 48, 32, 32, 50, 48, 48, 32, 50, 48, 48, 32, 32, 50, 49, 48, 32, 50, 50, 48, 0};
-		autoFileInMemory espeakdata_voices60 = FileInMemory_createWithData (115, reinterpret_cast<const char *> (&espeakdata_voices60_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/bg", 
-			U"bg");
-		Collection_addItem (me.peek(), espeakdata_voices60.transfer());
-
-		static unsigned char espeakdata_voices61_data[31] = {
-			110, 97, 109, 101, 32, 100, 105, 118, 101, 104, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 100, 118, 10, 10,
-			0};
-		autoFileInMemory espeakdata_voices61 = FileInMemory_createWithData (30, reinterpret_cast<const char *> (&espeakdata_voices61_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/dv", 
-			U"dv");
-		Collection_addItem (me.peek(), espeakdata_voices61.transfer());
-
-		static unsigned char espeakdata_voices62_data[43] = {
-			110, 97, 109, 101, 32, 105, 114, 105, 115, 104, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 103, 97, 10, 115, 116,
-			114, 101, 115, 115, 114, 117, 108, 101, 32, 48, 10, 10, 0};
-		autoFileInMemory espeakdata_voices62 = FileInMemory_createWithData (42, reinterpret_cast<const char *> (&espeakdata_voices62_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ga", 
-			U"ga");
-		Collection_addItem (me.peek(), espeakdata_voices62.transfer());
+		static unsigned char espeakdata_voices63_data[54] = {
+			110, 97, 109, 101, 32, 101, 115, 112, 101, 114, 97, 110, 116, 111, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 111, 10, 103, 101, 110,
+			100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 97, 112, 111, 115, 116, 114, 111, 112, 104, 101, 32, 50, 10, 0};
+		autoFileInMemory espeakdata_voices63 = FileInMemory_createWithData (53, reinterpret_cast<const char *> (&espeakdata_voices63_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/eo", 
+			U"eo");
+		my addItem_move (espeakdata_voices63.move());
 
-		static unsigned char espeakdata_voices63_data[111] = {
+		static unsigned char espeakdata_voices64_data[111] = {
 			110, 97, 109, 101, 32, 103, 114, 101, 101, 107, 45, 97, 110, 99, 105, 101, 110, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 103, 114,
 			99, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 49, 55,
 			48, 32, 49, 55, 48, 32, 32, 49, 57, 48, 32, 49, 57, 48, 32, 32, 48, 32, 48, 32, 32, 50, 51, 48, 32, 50, 52, 48, 10, 100,
 			105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 119, 111, 114, 100, 115, 32, 51, 10, 10, 0};
-		autoFileInMemory espeakdata_voices63 = FileInMemory_createWithData (110, reinterpret_cast<const char *> (&espeakdata_voices63_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/grc", 
+		autoFileInMemory espeakdata_voices64 = FileInMemory_createWithData (110, reinterpret_cast<const char *> (&espeakdata_voices64_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/grc", 
 			U"grc");
-		Collection_addItem (me.peek(), espeakdata_voices63.transfer());
-
-		static unsigned char espeakdata_voices64_data[28] = {
-			110, 97, 109, 101, 32, 104, 97, 105, 116, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 104, 116, 10, 32, 10, 0};
-		autoFileInMemory espeakdata_voices64 = FileInMemory_createWithData (27, reinterpret_cast<const char *> (&espeakdata_voices64_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ht", 
-			U"ht");
-		Collection_addItem (me.peek(), espeakdata_voices64.transfer());
+		my addItem_move (espeakdata_voices64.move());
 
 		static unsigned char espeakdata_voices65_data[70] = {
 			110, 97, 109, 101, 32, 108, 111, 106, 98, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 106, 98, 111, 10, 10, 115, 112, 101, 101,
 			100, 32, 56, 48, 32, 32, 32, 47, 47, 32, 115, 112, 101, 101, 100, 32, 97, 100, 106, 117, 115, 116, 109, 101, 110, 116, 44, 32, 112, 101,
 			114, 99, 101, 110, 116, 97, 103, 101, 10, 0};
 		autoFileInMemory espeakdata_voices65 = FileInMemory_createWithData (69, reinterpret_cast<const char *> (&espeakdata_voices65_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/jbo", 
+			U"espeak-1.48.04-source/espeak-data/voices/other/jbo", 
 			U"jbo");
-		Collection_addItem (me.peek(), espeakdata_voices65.transfer());
+		my addItem_move (espeakdata_voices65.move());
 
-		static unsigned char espeakdata_voices66_data[27] = {
-			110, 97, 109, 101, 32, 107, 97, 122, 97, 107, 104, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 107, 10, 32, 10, 0};
-		autoFileInMemory espeakdata_voices66 = FileInMemory_createWithData (26, reinterpret_cast<const char *> (&espeakdata_voices66_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/kk", 
-			U"kk");
-		Collection_addItem (me.peek(), espeakdata_voices66.transfer());
+		static unsigned char espeakdata_voices66_data[299] = {
+			110, 97, 109, 101, 32, 108, 97, 116, 105, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 108, 97, 10, 103, 101, 110, 100, 101, 114, 32,
+			109, 97, 108, 101, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 50, 32, 51, 51, 32, 48, 32, 50, 10, 47, 47, 32, 114, 117,
+			108, 101, 61, 112, 101, 110, 117, 108, 116, 105, 109, 97, 116, 101, 10, 47, 47, 32, 102, 108, 97, 103, 115, 61, 48, 49, 48, 48, 48, 48,
+			49, 32, 40, 110, 111, 32, 97, 117, 116, 111, 109, 97, 116, 105, 99, 32, 115, 101, 99, 111, 110, 100, 97, 114, 121, 32, 115, 116, 114, 101,
+			115, 115, 32, 43, 32, 100, 111, 110, 39, 116, 32, 115, 116, 114, 101, 115, 32, 109, 111, 110, 111, 115, 121, 108, 108, 97, 98, 108, 101, 115,
+			41, 10, 47, 47, 32, 117, 110, 115, 116, 114, 101, 115, 115, 101, 100, 95, 119, 100, 49, 61, 48, 10, 47, 47, 32, 117, 110, 115, 116, 114,
+			101, 115, 115, 101, 100, 95, 119, 100, 50, 61, 50, 10, 10, 47, 47, 32, 115, 104, 111, 114, 116, 32, 103, 97, 112, 32, 98, 101, 116, 119,
+			101, 101, 110, 32, 119, 111, 114, 100, 115, 10, 119, 111, 114, 100, 115, 32, 50, 10, 10, 47, 47, 32, 78, 111, 116, 101, 58, 32, 84, 104,
+			101, 32, 76, 97, 116, 105, 110, 32, 118, 111, 105, 99, 101, 32, 110, 101, 101, 100, 115, 32, 108, 111, 110, 103, 32, 118, 111, 119, 101, 108,
+			115, 32, 116, 111, 32, 98, 101, 32, 109, 97, 114, 107, 101, 100, 32, 119, 105, 116, 104, 32, 109, 97, 99, 114, 111, 110, 115, 10, 0};
+		autoFileInMemory espeakdata_voices66 = FileInMemory_createWithData (298, reinterpret_cast<const char *> (&espeakdata_voices66_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/la", 
+			U"la");
+		my addItem_move (espeakdata_voices66.move());
 
-		static unsigned char espeakdata_voices67_data[75] = {
-			110, 97, 109, 101, 32, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 108, 10, 10,
-			115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 50, 32, 32, 47, 47, 32, 112, 101, 110, 117, 108, 116, 105, 109, 97, 116, 101, 32, 40,
-			102, 111, 114, 32, 116, 101, 115, 116, 105, 110, 103, 41, 10, 10, 0};
-		autoFileInMemory espeakdata_voices67 = FileInMemory_createWithData (74, reinterpret_cast<const char *> (&espeakdata_voices67_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/kl", 
-			U"kl");
-		Collection_addItem (me.peek(), espeakdata_voices67.transfer());
-
-		static unsigned char espeakdata_voices68_data[83] = {
-			110, 97, 109, 101, 32, 75, 111, 114, 101, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 111, 10, 103, 101, 110, 100, 101, 114,
-			32, 109, 97, 108, 101, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32,
-			50, 10, 10, 116, 117, 110, 101, 115, 32, 113, 49, 32, 113, 49, 32, 113, 49, 32, 113, 49, 10, 10, 0};
-		autoFileInMemory espeakdata_voices68 = FileInMemory_createWithData (82, reinterpret_cast<const char *> (&espeakdata_voices68_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ko", 
-			U"ko");
-		Collection_addItem (me.peek(), espeakdata_voices68.transfer());
+		static unsigned char espeakdata_voices67_data[91] = {
+			110, 97, 109, 101, 32, 108, 105, 110, 103, 117, 97, 95, 102, 114, 97, 110, 99, 97, 95, 110, 111, 118, 97, 13, 10, 108, 97, 110, 103, 117,
+			97, 103, 101, 32, 108, 102, 110, 13, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 13, 10, 13, 10, 112, 104, 111, 110, 101, 109,
+			101, 115, 32, 98, 97, 115, 101, 50, 13, 10, 108, 95, 117, 110, 112, 114, 111, 110, 111, 117, 110, 99, 97, 98, 108, 101, 32, 48, 13, 10,
+			0};
+		autoFileInMemory espeakdata_voices67 = FileInMemory_createWithData (90, reinterpret_cast<const char *> (&espeakdata_voices67_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/lfn", 
+			U"lfn");
+		my addItem_move (espeakdata_voices67.move());
 
-		static unsigned char espeakdata_voices69_data[43] = {
-			10, 110, 97, 109, 101, 32, 108, 105, 116, 104, 117, 97, 110, 105, 97, 110, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 108, 116, 10, 103,
-			101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
-		autoFileInMemory espeakdata_voices69 = FileInMemory_createWithData (42, reinterpret_cast<const char *> (&espeakdata_voices69_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/lt", 
-			U"lt");
-		Collection_addItem (me.peek(), espeakdata_voices69.transfer());
-
-		static unsigned char espeakdata_voices70_data[33] = {
-			110, 97, 109, 101, 32, 109, 97, 108, 116, 101, 115, 101, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 109, 116, 10,
-			32, 10, 0};
-		autoFileInMemory espeakdata_voices70 = FileInMemory_createWithData (32, reinterpret_cast<const char *> (&espeakdata_voices70_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/mt", 
-			U"mt");
-		Collection_addItem (me.peek(), espeakdata_voices70.transfer());
-
-		static unsigned char espeakdata_voices71_data[127] = {
-			110, 97, 109, 101, 32, 110, 97, 104, 117, 97, 116, 108, 32, 45, 32, 99, 108, 97, 115, 115, 105, 99, 97, 108, 10, 108, 97, 110, 103, 117,
-			97, 103, 101, 32, 110, 99, 105, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111,
-			110, 32, 51, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 50, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32,
-			32, 49, 57, 48, 32, 32, 49, 57, 48, 32, 32, 50, 48, 48, 32, 32, 50, 48, 48, 32, 32, 48, 32, 32, 48, 32, 32, 50, 50, 48,
-			32, 32, 50, 52, 48, 10, 0};
-		autoFileInMemory espeakdata_voices71 = FileInMemory_createWithData (126, reinterpret_cast<const char *> (&espeakdata_voices71_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/nci", 
-			U"nci");
-		Collection_addItem (me.peek(), espeakdata_voices71.transfer());
+		static unsigned char espeakdata_voices68_data[44] = {
+			110, 97, 109, 101, 32, 115, 119, 97, 104, 105, 108, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 119, 10,
+			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 0};
+		autoFileInMemory espeakdata_voices68 = FileInMemory_createWithData (43, reinterpret_cast<const char *> (&espeakdata_voices68_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/other/sw", 
+			U"sw");
+		my addItem_move (espeakdata_voices68.move());
 
-		static unsigned char espeakdata_voices72_data[55] = {
-			110, 97, 109, 101, 32, 110, 101, 112, 97, 108, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 110, 101, 10, 103,
-			101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101, 115, 32, 49, 10, 0};
-		autoFileInMemory espeakdata_voices72 = FileInMemory_createWithData (54, reinterpret_cast<const char *> (&espeakdata_voices72_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ne", 
-			U"ne");
-		Collection_addItem (me.peek(), espeakdata_voices72.transfer());
+		static unsigned char espeakdata_voices69_data[107] = {
+			110, 97, 109, 101, 32, 98, 114, 97, 122, 105, 108, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 116, 45, 98, 114, 10, 108, 97, 110,
+			103, 117, 97, 103, 101, 32, 112, 116, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 100, 105, 99, 116, 114, 117, 108, 101,
+			115, 32, 50, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 50, 48, 48, 32, 49, 49, 53, 32, 50, 51, 48, 32, 50,
+			51, 48, 32, 48, 32, 48, 32, 50, 53, 48, 32, 50, 55, 48, 10, 10, 0};
+		autoFileInMemory espeakdata_voices69 = FileInMemory_createWithData (106, reinterpret_cast<const char *> (&espeakdata_voices69_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/pt", 
+			U"pt");
+		my addItem_move (espeakdata_voices69.move());
+
+		static unsigned char espeakdata_voices70_data[32] = {
+			110, 97, 109, 101, 32, 97, 109, 104, 97, 114, 105, 99, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 109, 10,
+			10, 0};
+		autoFileInMemory espeakdata_voices70 = FileInMemory_createWithData (31, reinterpret_cast<const char *> (&espeakdata_voices70_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/am", 
+			U"am");
+		my addItem_move (espeakdata_voices70.move());
 
-		static unsigned char espeakdata_voices73_data[48] = {
-			110, 97, 109, 101, 32, 110, 111, 114, 116, 104, 101, 114, 110, 45, 115, 111, 116, 104, 111, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 110,
-			115, 111, 10, 116, 114, 97, 110, 115, 108, 97, 116, 111, 114, 32, 115, 119, 10, 0};
-		autoFileInMemory espeakdata_voices73 = FileInMemory_createWithData (47, reinterpret_cast<const char *> (&espeakdata_voices73_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/nso", 
-			U"nso");
-		Collection_addItem (me.peek(), espeakdata_voices73.transfer());
+		static unsigned char espeakdata_voices71_data[34] = {
+			110, 97, 109, 101, 32, 97, 115, 115, 97, 109, 101, 115, 101, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 97, 115,
+			10, 10, 32, 0};
+		autoFileInMemory espeakdata_voices71 = FileInMemory_createWithData (33, reinterpret_cast<const char *> (&espeakdata_voices71_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/as", 
+			U"as");
+		my addItem_move (espeakdata_voices71.move());
+
+		static unsigned char espeakdata_voices72_data[36] = {
+			110, 97, 109, 101, 32, 97, 122, 101, 114, 98, 97, 105, 106, 97, 110, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101,
+			32, 97, 122, 10, 10, 0};
+		autoFileInMemory espeakdata_voices72 = FileInMemory_createWithData (35, reinterpret_cast<const char *> (&espeakdata_voices72_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/az", 
+			U"az");
+		my addItem_move (espeakdata_voices72.move());
+
+		static unsigned char espeakdata_voices73_data[43] = {
+			110, 97, 109, 101, 32, 98, 101, 110, 103, 97, 108, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 98, 110, 10,
+			103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 0};
+		autoFileInMemory espeakdata_voices73 = FileInMemory_createWithData (42, reinterpret_cast<const char *> (&espeakdata_voices73_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/bn", 
+			U"bn");
+		my addItem_move (espeakdata_voices73.move());
 
 		static unsigned char espeakdata_voices74_data[31] = {
-			110, 97, 109, 101, 32, 112, 117, 110, 106, 97, 98, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 97, 10,
+			110, 97, 109, 101, 32, 98, 97, 115, 113, 117, 101, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 101, 117, 10, 10,
 			0};
 		autoFileInMemory espeakdata_voices74 = FileInMemory_createWithData (30, reinterpret_cast<const char *> (&espeakdata_voices74_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/pa", 
-			U"pa");
-		Collection_addItem (me.peek(), espeakdata_voices74.transfer());
+			U"espeak-1.48.04-source/espeak-data/voices/test/eu", 
+			U"eu");
+		my addItem_move (espeakdata_voices74.move());
+
+		static unsigned char espeakdata_voices75_data[41] = {
+			110, 97, 109, 101, 32, 115, 99, 111, 116, 116, 105, 115, 104, 45, 103, 97, 101, 108, 105, 99, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103,
+			117, 97, 103, 101, 32, 103, 100, 10, 32, 10, 0};
+		autoFileInMemory espeakdata_voices75 = FileInMemory_createWithData (40, reinterpret_cast<const char *> (&espeakdata_voices75_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/gd", 
+			U"gd");
+		my addItem_move (espeakdata_voices75.move());
+
+		static unsigned char espeakdata_voices76_data[33] = {
+			110, 97, 109, 101, 32, 103, 117, 106, 97, 114, 97, 116, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 103, 117,
+			10, 10, 0};
+		autoFileInMemory espeakdata_voices76 = FileInMemory_createWithData (32, reinterpret_cast<const char *> (&espeakdata_voices76_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/gu", 
+			U"gu");
+		my addItem_move (espeakdata_voices76.move());
+
+		static unsigned char espeakdata_voices77_data[31] = {
+			110, 97, 109, 101, 32, 103, 114, 101, 101, 110, 108, 97, 110, 100, 105, 99, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 108, 10, 10,
+			0};
+		autoFileInMemory espeakdata_voices77 = FileInMemory_createWithData (30, reinterpret_cast<const char *> (&espeakdata_voices77_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/kl", 
+			U"kl");
+		my addItem_move (espeakdata_voices77.move());
+
+		static unsigned char espeakdata_voices78_data[69] = {
+			110, 97, 109, 101, 32, 107, 111, 114, 101, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 107, 111, 10, 103,
+			101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 112, 105, 116, 99, 104, 32, 56, 48, 32, 49, 49, 56, 10, 105, 110, 116, 111, 110, 97,
+			116, 105, 111, 110, 32, 50, 10, 10, 0};
+		autoFileInMemory espeakdata_voices78 = FileInMemory_createWithData (68, reinterpret_cast<const char *> (&espeakdata_voices78_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/ko", 
+			U"ko");
+		my addItem_move (espeakdata_voices78.move());
+
+		static unsigned char espeakdata_voices79_data[125] = {
+			110, 97, 109, 101, 32, 110, 97, 104, 117, 97, 116, 108, 45, 99, 108, 97, 115, 115, 105, 99, 97, 108, 10, 108, 97, 110, 103, 117, 97, 103,
+			101, 32, 110, 99, 105, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32,
+			51, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 50, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 32, 49,
+			57, 48, 32, 32, 49, 57, 48, 32, 32, 50, 48, 48, 32, 32, 50, 48, 48, 32, 32, 48, 32, 32, 48, 32, 32, 50, 50, 48, 32, 32,
+			50, 52, 48, 10, 0};
+		autoFileInMemory espeakdata_voices79 = FileInMemory_createWithData (124, reinterpret_cast<const char *> (&espeakdata_voices79_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/nci", 
+			U"nci");
+		my addItem_move (espeakdata_voices79.move());
+
+		static unsigned char espeakdata_voices80_data[29] = {
+			110, 97, 109, 101, 32, 111, 114, 105, 121, 97, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 111, 114, 10, 0};
+		autoFileInMemory espeakdata_voices80 = FileInMemory_createWithData (28, reinterpret_cast<const char *> (&espeakdata_voices80_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/or", 
+			U"or");
+		my addItem_move (espeakdata_voices80.move());
 
-		static unsigned char espeakdata_voices75_data[52] = {
+		static unsigned char espeakdata_voices81_data[52] = {
 			110, 97, 109, 101, 32, 112, 97, 112, 105, 97, 109, 101, 110, 116, 111, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32,
 			112, 97, 112, 10, 10, 112, 104, 111, 110, 101, 109, 101, 115, 32, 98, 97, 115, 101, 50, 10, 10, 0};
-		autoFileInMemory espeakdata_voices75 = FileInMemory_createWithData (51, reinterpret_cast<const char *> (&espeakdata_voices75_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/pap", 
+		autoFileInMemory espeakdata_voices81 = FileInMemory_createWithData (51, reinterpret_cast<const char *> (&espeakdata_voices81_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/pap", 
 			U"pap");
-		Collection_addItem (me.peek(), espeakdata_voices75.transfer());
-
-		static unsigned char espeakdata_voices76_data[58] = {
-			110, 97, 109, 101, 32, 100, 97, 114, 105, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 112, 114, 115, 10, 10, 116,
-			114, 97, 110, 115, 108, 97, 116, 111, 114, 32, 102, 97, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 49, 48, 10, 0};
-		autoFileInMemory espeakdata_voices76 = FileInMemory_createWithData (57, reinterpret_cast<const char *> (&espeakdata_voices76_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/prs", 
-			U"prs");
-		Collection_addItem (me.peek(), espeakdata_voices76.transfer());
-
-		static unsigned char espeakdata_voices77_data[49] = {
-			110, 97, 109, 101, 32, 107, 105, 110, 121, 97, 114, 119, 97, 110, 100, 97, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101,
-			32, 114, 119, 10, 103, 101, 110, 100, 101, 114, 32, 109, 97, 108, 101, 10, 32, 10, 0};
-		autoFileInMemory espeakdata_voices77 = FileInMemory_createWithData (48, reinterpret_cast<const char *> (&espeakdata_voices77_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/rw", 
-			U"rw");
-		Collection_addItem (me.peek(), espeakdata_voices77.transfer());
-
-		static unsigned char espeakdata_voices78_data[40] = {
-			110, 97, 109, 101, 32, 115, 105, 110, 104, 97, 108, 97, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 105, 10, 10, 105, 110, 116, 111,
-			110, 97, 116, 105, 111, 110, 32, 50, 10, 0};
-		autoFileInMemory espeakdata_voices78 = FileInMemory_createWithData (39, reinterpret_cast<const char *> (&espeakdata_voices78_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/si", 
+		my addItem_move (espeakdata_voices81.move());
+
+		static unsigned char espeakdata_voices82_data[45] = {
+			110, 97, 109, 101, 32, 115, 105, 110, 104, 97, 108, 97, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115, 105, 10,
+			10, 105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 0};
+		autoFileInMemory espeakdata_voices82 = FileInMemory_createWithData (44, reinterpret_cast<const char *> (&espeakdata_voices82_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/si", 
 			U"si");
-		Collection_addItem (me.peek(), espeakdata_voices78.transfer());
+		my addItem_move (espeakdata_voices82.move());
 
-		static unsigned char espeakdata_voices79_data[84] = {
+		static unsigned char espeakdata_voices83_data[34] = {
 			110, 97, 109, 101, 32, 115, 108, 111, 118, 101, 110, 105, 97, 110, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 115,
-			108, 10, 32, 10, 115, 116, 114, 101, 115, 115, 76, 101, 110, 103, 116, 104, 32, 32, 32, 49, 54, 48, 32, 49, 53, 48, 32, 32, 50, 52,
-			48, 32, 50, 52, 48, 32, 32, 50, 52, 48, 32, 50, 52, 48, 32, 32, 51, 48, 48, 32, 51, 50, 48, 0};
-		autoFileInMemory espeakdata_voices79 = FileInMemory_createWithData (83, reinterpret_cast<const char *> (&espeakdata_voices79_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/sl", 
+			108, 10, 32, 0};
+		autoFileInMemory espeakdata_voices83 = FileInMemory_createWithData (33, reinterpret_cast<const char *> (&espeakdata_voices83_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/sl", 
 			U"sl");
-		Collection_addItem (me.peek(), espeakdata_voices79.transfer());
+		my addItem_move (espeakdata_voices83.move());
 
-		static unsigned char espeakdata_voices80_data[55] = {
-			110, 97, 109, 101, 32, 116, 101, 108, 117, 103, 117, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 101, 10, 10, 105, 110, 116, 111, 110,
-			97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
-		autoFileInMemory espeakdata_voices80 = FileInMemory_createWithData (54, reinterpret_cast<const char *> (&espeakdata_voices80_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/te", 
+		static unsigned char espeakdata_voices84_data[60] = {
+			110, 97, 109, 101, 32, 116, 101, 108, 117, 103, 117, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 101, 10, 10,
+			105, 110, 116, 111, 110, 97, 116, 105, 111, 110, 32, 50, 10, 47, 47, 99, 111, 110, 115, 111, 110, 97, 110, 116, 115, 32, 56, 48, 10, 0};
+		autoFileInMemory espeakdata_voices84 = FileInMemory_createWithData (59, reinterpret_cast<const char *> (&espeakdata_voices84_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/te", 
 			U"te");
-		Collection_addItem (me.peek(), espeakdata_voices80.transfer());
-
-		static unsigned char espeakdata_voices81_data[34] = {
-			110, 97, 109, 101, 32, 115, 101, 116, 115, 119, 97, 110, 97, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 110,
-			10, 32, 10, 0};
-		autoFileInMemory espeakdata_voices81 = FileInMemory_createWithData (33, reinterpret_cast<const char *> (&espeakdata_voices81_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/tn", 
-			U"tn");
-		Collection_addItem (me.peek(), espeakdata_voices81.transfer());
-
-		static unsigned char espeakdata_voices82_data[49] = {
-			110, 97, 109, 101, 32, 116, 97, 116, 97, 114, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 116, 116, 10, 10, 116,
-			117, 110, 101, 115, 32, 115, 51, 32, 99, 51, 32, 113, 51, 32, 101, 51, 10, 10, 0};
-		autoFileInMemory espeakdata_voices82 = FileInMemory_createWithData (48, reinterpret_cast<const char *> (&espeakdata_voices82_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/tt", 
-			U"tt");
-		Collection_addItem (me.peek(), espeakdata_voices82.transfer());
-
-		static unsigned char espeakdata_voices83_data[55] = {
-			110, 97, 109, 101, 32, 117, 114, 100, 117, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 117, 114, 10, 10, 112, 104,
-			111, 110, 101, 109, 101, 115, 32, 104, 105, 10, 115, 116, 114, 101, 115, 115, 114, 117, 108, 101, 32, 54, 10, 10, 0};
-		autoFileInMemory espeakdata_voices83 = FileInMemory_createWithData (54, reinterpret_cast<const char *> (&espeakdata_voices83_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/ur", 
-			U"ur");
-		Collection_addItem (me.peek(), espeakdata_voices83.transfer());
+		my addItem_move (espeakdata_voices84.move());
 
-		static unsigned char espeakdata_voices84_data[32] = {
-			110, 97, 109, 101, 32, 119, 111, 108, 111, 102, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 119, 111, 10, 10, 32,
-			10, 0};
-		autoFileInMemory espeakdata_voices84 = FileInMemory_createWithData (31, reinterpret_cast<const char *> (&espeakdata_voices84_data), 
-			U"/home/david/praat/src/espeak-work/espeak-1.46.27/espeak-data/voices/test/wo", 
-			U"wo");
-		Collection_addItem (me.peek(), espeakdata_voices84.transfer());
+		static unsigned char espeakdata_voices85_data[43] = {
+			110, 97, 109, 101, 32, 117, 114, 100, 117, 45, 116, 101, 115, 116, 10, 108, 97, 110, 103, 117, 97, 103, 101, 32, 117, 114, 10, 10, 115, 116,
+			114, 101, 115, 115, 114, 117, 108, 101, 32, 54, 10, 10, 0};
+		autoFileInMemory espeakdata_voices85 = FileInMemory_createWithData (42, reinterpret_cast<const char *> (&espeakdata_voices85_data), 
+			U"espeak-1.48.04-source/espeak-data/voices/test/ur", 
+			U"ur");
+		my addItem_move (espeakdata_voices85.move());
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
-		Melder_throw (U"FilesInMemory not created.");
+		Melder_throw (U"FileInMemorySet not created.");
 	}
 }
 
diff --git a/external/espeak/event.h b/external/espeak/event.h
old mode 100644
new mode 100755
diff --git a/external/espeak/fifo.h b/external/espeak/fifo.h
old mode 100644
new mode 100755
diff --git a/external/espeak/intonation.cpp b/external/espeak/intonation.cpp
old mode 100644
new mode 100755
index 891c390..e4c68bc
--- a/external/espeak/intonation.cpp
+++ b/external/espeak/intonation.cpp
@@ -338,7 +338,7 @@ static void count_pitch_vowels(int start, int end, int clause_end)
 	number_body = 0;
 	number_tail = 0;   /* number between tonic syllable and next primary */
 	last_primary = -1;
-	
+
 	for(ix=start; ix<end; ix++)
 	{
 		stress = syllable_tab[ix].stress;   /* marked stress level */
@@ -527,7 +527,7 @@ int secondary=2;  // 2
 					n_steps = count_increments(syl_ix+1, head_final, 4);
 					pitch = tune->onset << 8;
 					used_onset = 1;
-				}	
+				}
 
 				if(n_steps > tune->head_max_steps)
 					n_steps = tune->head_max_steps;
@@ -697,7 +697,7 @@ static int calc_pitch_segment(int ix, int end_ix, TONE_HEAD *th, TONE_NUCLEUS *t
 			n_primary--;
 			if((tn->backwards) && (n_primary < 2))
 			{
-					pitch = tn->backwards[n_primary] << 8;	
+					pitch = tn->backwards[n_primary] << 8;
 			}
 		}
 
@@ -745,7 +745,7 @@ static void SetPitchGradient(int start_ix, int end_ix, int start_pitch, int end_
 
 	if(n_increments <= 0)
 		return;
-	
+
 	if(n_increments > 1)
 	{
 		increment = increment / n_increments;
@@ -802,7 +802,7 @@ static int calc_pitches2(int start, int end,  int tune_number)
 
 	if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE)
 	{
-		tone_posn = tone_posn2;  // put tone on the penultimate stressed word 
+		tone_posn = tone_posn2;  // put tone on the penultimate stressed word
 	}
 	ix = SetHeadIntonation(tune, ix, tone_posn, 0);
 
@@ -811,7 +811,7 @@ static int calc_pitches2(int start, int end,  int tune_number)
 
 	/* tonic syllable */
 	/******************/
-	
+
 //	if(tn->flags & T_EMPH)
 //	{
 //		syllable_tab[ix].flags |= SYL_EMPHASIS;
@@ -836,7 +836,7 @@ static int calc_pitches2(int start, int end,  int tune_number)
 
 	/* tail, after the tonic syllable */
 	/**********************************/
-	
+
 	SetPitchGradient(ix, end, tune->tail_start, tune->tail_end);
 
 	return(tone_pitch_env);
@@ -877,7 +877,7 @@ static int calc_pitches(int control, int start, int end,  int tune_number)
 
 	if(option_tone_flags & OPTION_EMPHASIZE_PENULTIMATE)
 	{
-		tone_posn = tone_posn2;  // put tone on the penultimate stressed word 
+		tone_posn = tone_posn2;  // put tone on the penultimate stressed word
 	}
 	ix = calc_pitch_segment(ix,tone_posn, th, tn, PRIMARY, continuing);
 // ix = SetBodyIntonation(&tunes[0], ix, tone_posn, 0);
@@ -887,7 +887,7 @@ static int calc_pitches(int control, int start, int end,  int tune_number)
 
 	/* tonic syllable */
 	/******************/
-	
+
 	if(tn->flags & T_EMPH)
 	{
 		syllable_tab[ix].flags |= SYL_EMPHASIS;
@@ -912,7 +912,7 @@ static int calc_pitches(int control, int start, int end,  int tune_number)
 
 	/* tail, after the tonic syllable */
 	/**********************************/
-	
+
 	SetPitchGradient(ix, end, tn->tail_start, tn->tail_end);
 
 	return(tone_pitch_env);
@@ -1037,7 +1037,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
 					if(tph->mnemonic == 0x343132)   // [214]
 						prev_p->tone_ph = PhonemeCode2('3','5');
 					else
-						prev_p->tone_ph = PhonemeCode2('2','1'); 
+						prev_p->tone_ph = PhonemeCode2('2','1');
 				}
 				if((prev_tph->mnemonic == 0x3135)  && (tph->mnemonic == 0x3135))  //  [51] + [51]
 				{
@@ -1176,7 +1176,7 @@ void CalcPitches(Translator *tr, int clause_type)
 	}
 	else
 	{
-		group_tone = tr->punct_to_tone[option][clause_type]; 
+		group_tone = tr->punct_to_tone[option][clause_type];
 		group_tone_emph = tr->punct_to_tone[option][5];   // emphatic form of statement
 		group_tone_comma = tr->punct_to_tone[option][1];   // emphatic form of statement
 	}
@@ -1247,9 +1247,23 @@ void CalcPitches(Translator *tr, int clause_type)
 
 			count_pitch_vowels(st_start, ix, n_st);
 			if((ix < n_st) || (clause_type == 0))
+			{
+				calc_pitches(option, st_start, ix, group_tone);   // split into > 1 tone groups
+
+				if((clause_type==1) || (clause_type==2))
+					group_tone = tr->langopts.tunes[1];  // , or ?  remainder has comma-tone
+				else
+					group_tone = tr->langopts.tunes[0];  // . or !  remainder has statement tone
+			}
+			else
+				calc_pitches(option, st_start, ix, group_tone);
+
+#ifdef deleted
+			if((ix < n_st) || (clause_type == 0))
 				calc_pitches(option, st_start, ix, group_tone_emph);   // split into > 1 tone groups, use emphatic tone
 			else
 				calc_pitches(option, st_start, ix, group_tone);
+#endif
 
 			st_start = ix;
 		}
@@ -1269,14 +1283,14 @@ void CalcPitches(Translator *tr, int clause_type)
 		calc_pitches(option, st_start, st_ix, group_tone);
 	}
 
-	
+
 	// unpack pitch data
 	st_ix=0;
 	for(ix=ph_start; ix < ph_end; ix++)
 	{
 		p = &phoneme_list[ix];
 		p->stresslevel = syllable_tab[st_ix].stress;
-		
+
 		if(p->synthflags & SFLAG_SYLLABLE)
 		{
 			syl = &syllable_tab[st_ix];
@@ -1313,11 +1327,11 @@ if(p->tone_ph)
 			{
 				p->stresslevel |= 8;      // emphasized
 			}
-	
+
 			st_ix++;
 		}
 	}
 
 }  // end of CalcPitches
 
- 
+
diff --git a/external/espeak/klatt.cpp b/external/espeak/klatt.cpp
old mode 100644
new mode 100755
index 961c661..9e7a818
--- a/external/espeak/klatt.cpp
+++ b/external/espeak/klatt.cpp
@@ -22,7 +22,7 @@
  *               <http://www.gnu.org/licenses/>.                           *
  ***************************************************************************/
 
-// See URL: ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/synthesis/klatt.3.04.tar.gz  
+// See URL: ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/synthesis/klatt.3.04.tar.gz
 
 #include "StdAfx.h"
 
@@ -58,19 +58,69 @@ static int sample_count;
 /* function prototypes for functions private to this file */
 
 static void flutter(klatt_frame_ptr);
-static double sampled_source (void);
+static double sampled_source (int);
 static double impulsive_source (void);
 static double natural_source (void);
-static void pitch_synch_par_reset (klatt_frame_ptr); 
+static void pitch_synch_par_reset (klatt_frame_ptr);
 static double gen_noise (double);
 static double DBtoLIN (long);
-static void frame_init (klatt_frame_ptr); 
+static void frame_init (klatt_frame_ptr);
 static void setabc (long,long,resonator_ptr);
 static void setzeroabc (long,long,resonator_ptr);
 
 static klatt_frame_t  kt_frame;
 static klatt_global_t kt_globals;
 
+#define NUMBER_OF_SAMPLES 100
+
+static int scale_wav_tab[] = {45,38,45,45,55};   // scale output from different voicing sources
+
+// For testing, this can be overwritten in KlattInit()
+	static short natural_samples2[256]= {
+  2583,  2516,  2450,  2384,  2319,  2254,  2191,  2127,
+  2067,  2005,  1946,  1890,  1832,  1779,  1726,  1675,
+  1626,  1579,  1533,  1491,  1449,  1409,  1372,  1336,
+  1302,  1271,  1239,  1211,  1184,  1158,  1134,  1111,
+  1089,  1069,  1049,  1031,  1013,   996,   980,   965,
+   950,   936,   921,   909,   895,   881,   869,   855,
+   843,   830,   818,   804,   792,   779,   766,   754,
+   740,   728,   715,   702,   689,   676,   663,   651,
+   637,   626,   612,   601,   588,   576,   564,   552,
+   540,   530,   517,   507,   496,   485,   475,   464,
+   454,   443,   434,   424,   414,   404,   394,   385,
+   375,   366,   355,   347,   336,   328,   317,   308,
+   299,   288,   280,   269,   260,   250,   240,   231,
+   220,   212,   200,   192,   181,   172,   161,   152,
+   142,   133,   123,   113,   105,    94,    86,    76,
+    67,    57,    49,    39,    30,    22,    11,     4,
+    -5,   -14,   -23,   -32,   -41,   -50,   -60,   -69,
+   -78,   -87,   -96,  -107,  -115,  -126,  -134,  -144,
+  -154,  -164,  -174,  -183,  -193,  -203,  -213,  -222,
+  -233,  -242,  -252,  -262,  -271,  -281,  -291,  -301,
+  -310,  -320,  -330,  -339,  -349,  -357,  -368,  -377,
+  -387,  -397,  -406,  -417,  -426,  -436,  -446,  -456,
+  -467,  -477,  -487,  -499,  -509,  -521,  -532,  -543,
+  -555,  -567,  -579,  -591,  -603,  -616,  -628,  -641,
+  -653,  -666,  -679,  -692,  -705,  -717,  -732,  -743,
+  -758,  -769,  -783,  -795,  -808,  -820,  -834,  -845,
+  -860,  -872,  -885,  -898,  -911,  -926,  -939,  -955,
+  -968,  -986,  -999, -1018, -1034, -1054, -1072, -1094,
+ -1115, -1138, -1162, -1188, -1215, -1244, -1274, -1307,
+ -1340, -1377, -1415, -1453, -1496, -1538, -1584, -1631,
+ -1680, -1732, -1783, -1839, -1894, -1952, -2010, -2072,
+ -2133, -2196, -2260, -2325, -2390, -2456, -2522, -2589,
+};
+	static short natural_samples[100]=
+	{
+		-310,-400,530,356,224,89,23,-10,-58,-16,461,599,536,701,770,
+		605,497,461,560,404,110,224,131,104,-97,155,278,-154,-1165,
+		-598,737,125,-592,41,11,-247,-10,65,92,80,-304,71,167,-1,122,
+		233,161,-43,278,479,485,407,266,650,134,80,236,68,260,269,179,
+		53,140,275,293,296,104,257,152,311,182,263,245,125,314,140,44,
+		203,230,-235,-286,23,107,92,-91,38,464,443,176,98,-784,-2449,
+		-1891,-1045,-1600,-1462,-1384,-1261,-949,-730
+	};
+
 /*
 function RESONATOR
 
@@ -81,7 +131,7 @@ is stored in the globals structure.
 static double resonator(resonator_ptr r, double input)
 {
 	double x;
-	
+
 	x = (double) ((double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2);
 	r->p2 = (double)r->p1;
 	r->p1 = (double)x;
@@ -92,11 +142,11 @@ static double resonator(resonator_ptr r, double input)
 static double resonator2(resonator_ptr r, double input)
 {
 	double x;
-	
+
 	x = (double) ((double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2);
 	r->p2 = (double)r->p1;
 	r->p1 = (double)x;
-	
+
 	r->a += r->a_inc;
 	r->b += r->b_inc;
 	r->c += r->c_inc;
@@ -105,13 +155,13 @@ static double resonator2(resonator_ptr r, double input)
 
 
 
-/* 
+/*
 function ANTIRESONATOR
 
-This is a generic anti-resonator function. The code is the same as resonator 
-except that a,b,c need to be set with setzeroabc() and we save inputs in 
+This is a generic anti-resonator function. The code is the same as resonator
+except that a,b,c need to be set with setzeroabc() and we save inputs in
 p1/p2 rather than outputs. There is currently only one of these - "rnz"
-Output = (rnz.a * input) + (rnz.b * oldin1) + (rnz.c * oldin2) 
+Output = (rnz.a * input) + (rnz.b * oldin1) + (rnz.c * oldin2)
 */
 
 #ifdef deleted
@@ -129,7 +179,7 @@ static double antiresonator2(resonator_ptr r, double input)
 	register double x = (double)r->a * (double)input + (double)r->b * (double)r->p1 + (double)r->c * (double)r->p2;
 	r->p2 = (double)r->p1;
 	r->p1 = (double)input;
-	
+
 	r->a += r->a_inc;
 	r->b += r->b_inc;
 	r->c += r->c_inc;
@@ -143,7 +193,7 @@ function FLUTTER
 
 This function adds F0 flutter, as specified in:
 
-"Analysis, synthesis and perception of voice quality variations among 
+"Analysis, synthesis and perception of voice quality variations among
 female and male talkers" D.H. Klatt and L.C. Klatt JASA 87(2) February 1990.
 
 Flutter is added by applying a quasi-random element constructed from three
@@ -155,7 +205,7 @@ static void flutter(klatt_frame_ptr frame)
 	static int time_count;
 	double delta_f0;
 	double fla,flb,flc,fld,fle;
-	
+
 	fla = (double) kt_globals.f0_flutter / 50;
 	flb = (double) kt_globals.original_f0 / 100;
 //	flc = sin(2*PI*12.7*time_count);
@@ -178,7 +228,7 @@ Allows the use of a glottal excitation waveform sampled from a real
 voice.
 */
 
-static double sampled_source()
+static double sampled_source(int source_num)
 {
 	int itemp;
 	double ftemp;
@@ -187,23 +237,35 @@ static double sampled_source()
 	int current_value;
 	int next_value;
 	double temp_diff;
-	
+	short *samples;
+
+	if(source_num == 0)
+	{
+		samples = natural_samples;
+		kt_globals.num_samples = 100;
+	}
+	else
+	{
+		samples = natural_samples2;
+		kt_globals.num_samples = 256;
+	}
+
 	if(kt_globals.T0!=0)
 	{
 		ftemp = (double) kt_globals.nper;
 		ftemp = ftemp / kt_globals.T0;
 		ftemp = ftemp * kt_globals.num_samples;
 		itemp = (int) ftemp;
-	
+
 		temp_diff = ftemp - (double) itemp;
-	
-		current_value = kt_globals.natural_samples[itemp];
-		next_value = kt_globals.natural_samples[itemp+1];
-	
+
+		current_value = samples[itemp];
+		next_value = samples[itemp+1];
+
 		diff_value = (double) next_value - (double) current_value;
 		diff_value = diff_value * temp_diff;
-	
-		result = kt_globals.natural_samples[itemp] + diff_value;
+
+		result = samples[itemp] + diff_value;
 		result = result * kt_globals.sample_factor;
 	}
 	else
@@ -216,14 +278,14 @@ static double sampled_source()
 
 
 
-/* 
+/*
 function PARWAVE
 
 Converts synthesis parameters to a waveform.
 */
 
 
-static int parwave(klatt_frame_ptr frame) 
+static int parwave(klatt_frame_ptr frame)
 {
 	double temp;
 	int value;
@@ -236,7 +298,7 @@ static int parwave(klatt_frame_ptr frame)
 	double casc_next_in;
 	double par_glotout;
 	static double noise;
-	static double voice;
+	static double voiceSample;
 	static double vlast;
 	static double glotlast;
 	static double sourc;
@@ -260,7 +322,7 @@ if(option_log_frames)
 
 	/* MAIN LOOP, for each output sample of current frame: */
 
-	for (kt_globals.ns=0; kt_globals.ns<kt_globals.nspfr; kt_globals.ns++) 
+	for (kt_globals.ns=0; kt_globals.ns<kt_globals.nspfr; kt_globals.ns++)
 	{
 		/* Get low-passed random number for aspiration and frication noise */
 		noise = gen_noise(noise);
@@ -269,87 +331,90 @@ if(option_log_frames)
 		Amplitude modulate noise (reduce noise amplitude during
 		second half of glottal period) if voicing simultaneously present.
 		*/
-	
-		if (kt_globals.nper > kt_globals.nmod) 
+
+		if (kt_globals.nper > kt_globals.nmod)
 		{
 			noise *= (double) 0.5;
 		}
-	
+
 		/* Compute frication noise */
 		frics = kt_globals.amp_frica * noise;
-	
+
 		/*
-			Compute voicing waveform. Run glottal source simulation at 4 
-			times normal sample rate to minimize quantization noise in 
+			Compute voicing waveform. Run glottal source simulation at 4
+			times normal sample rate to minimize quantization noise in
 			period of female voice.
 		*/
-	
-		for (n4=0; n4<4; n4++) 
+
+		for (n4=0; n4<4; n4++)
 		{
 			switch(kt_globals.glsource)
 			{
 			case IMPULSIVE:
-				voice = impulsive_source();
+				voiceSample = impulsive_source();
 				break;
 			case NATURAL:
-				voice = natural_source();	
+				voiceSample = natural_source();
 				break;
 			case SAMPLED:
-				voice = sampled_source();
+				voiceSample = sampled_source(0);
+				break;
+			case SAMPLED2:
+				voiceSample = sampled_source(1);
 				break;
 			}
-	
+
 			/* Reset period when counter 'nper' reaches T0 */
-			if (kt_globals.nper >= kt_globals.T0) 
+			if (kt_globals.nper >= kt_globals.T0)
 			{
 				kt_globals.nper = 0;
 				pitch_synch_par_reset(frame);
 			}
-	
+
 			/*
 			Low-pass filter voicing waveform before downsampling from 4*samrate
-			to samrate samples/sec.  Resonator f=.09*samrate, bw=.06*samrate 
+			to samrate samples/sec.  Resonator f=.09*samrate, bw=.06*samrate
 			*/
-	
-			voice = resonator(&(kt_globals.rsn[RLP]),voice);
-	
+
+			voiceSample = resonator(&(kt_globals.rsn[RLP]),voiceSample);
+
 			/* Increment counter that keeps track of 4*samrate samples per sec */
 			kt_globals.nper++;
 		}
-	
+
 		/*
 			Tilt spectrum of voicing source down by soft low-pass filtering, amount
 			of tilt determined by TLTdb
 		*/
-	
-		voice = (voice * kt_globals.onemd) + (vlast * kt_globals.decay);
-		vlast = voice;
-	
-		/* 
-			Add breathiness during glottal open phase. Amount of breathiness 
-			determined by parameter Aturb Use nrand rather than noise because 
-			noise is low-passed. 
+
+		voiceSample = (voiceSample * kt_globals.onemd) + (vlast * kt_globals.decay);
+		vlast = voiceSample;
+
+		/*
+			Add breathiness during glottal open phase. Amount of breathiness
+			determined by parameter Aturb Use nrand rather than noise because
+			noise is low-passed.
 		*/
-	
-	
-		if (kt_globals.nper < kt_globals.nopen) 
+
+
+		if (kt_globals.nper < kt_globals.nopen)
 		{
-			voice += kt_globals.amp_breth * kt_globals.nrand;
+			voiceSample += kt_globals.amp_breth * kt_globals.nrand;
 		}
-	
+
 		/* Set amplitude of voicing */
-		glotout = kt_globals.amp_voice * voice;
-		par_glotout = kt_globals.par_amp_voice * voice;
-	
+		glotout = kt_globals.amp_voice * voiceSample;
+		par_glotout = kt_globals.par_amp_voice * voiceSample;
+
 		/* Compute aspiration amplitude and add to voicing source */
 		aspiration = kt_globals.amp_aspir * noise;
 		glotout += aspiration;
-	
+
 		par_glotout += aspiration;
-	
-		/*  
+
+		/*
 			Cascade vocal tract, excited by laryngeal sources.
-			Nasal antiresonator, then formants FNP, F5, F4, F3, F2, F1 
+			Nasal antiresonator, then formants FNP, F5, F4, F3, F2, F1
 		*/
 
 		out=0;
@@ -366,20 +431,20 @@ if(option_log_frames)
 			casc_next_in = resonator2(&(kt_globals.rsn[R2c]),casc_next_in);
 			out = resonator2(&(kt_globals.rsn[R1c]),casc_next_in);
 		}
-	
+
 		/* Excite parallel F1 and FNP by voicing waveform */
 		sourc = par_glotout;        /* Source is voicing plus aspiration */
 
 		/*
-			Standard parallel vocal tract Formants F6,F5,F4,F3,F2, 
-			outputs added with alternating sign. Sound source for other 
-			parallel resonators is frication plus first difference of 
-			voicing waveform. 
+			Standard parallel vocal tract Formants F6,F5,F4,F3,F2,
+			outputs added with alternating sign. Sound source for other
+			parallel resonators is frication plus first difference of
+			voicing waveform.
 		*/
-	
+
 		out += resonator(&(kt_globals.rsn[R1p]),sourc);
 		out += resonator(&(kt_globals.rsn[Rnpp]),sourc);
-	
+
 		sourc = frics + par_glotout - glotlast;
 		glotlast = par_glotout;
 
@@ -387,24 +452,24 @@ if(option_log_frames)
 		{
 			out = resonator(&(kt_globals.rsn[ix]),sourc) - out;
 		}
-	
+
 		outbypas = kt_globals.amp_bypas * sourc;
-	
+
 		out = outbypas - out;
 
 #ifdef deleted
 // for testing
-		if (kt_globals.outsl != 0) 
+		if (kt_globals.outsl != 0)
 		{
 			switch(kt_globals.outsl)
 			{
 			case 1:
-				out = voice;
+				out = voiceSample;
 				break;
 			case 2:
 				out = aspiration;
 				break;
-			case 3: 
+			case 3:
 				out = frics;
 				break;
 			case 4:
@@ -432,7 +497,7 @@ if(option_log_frames)
 			int z2;
 			signed char c;
 			int sample;
-	
+
 			z2 = 0;
 			if(wdata.mix_wavefile_ix < wdata.n_mix_wavefile)
 			{
@@ -469,7 +534,7 @@ if(option_log_frames)
 		{
 			value = -32768;
 		}
-	
+
 		if (value > 32767)
 		{
 			value =  32767;
@@ -533,13 +598,13 @@ void KlattReset(int control)
 }
 
 
-/* 
+/*
 function FRAME_INIT
 
 Use parameters from the input frame to set up resonator coefficients.
 */
 
-static void frame_init(klatt_frame_ptr frame) 
+static void frame_init(klatt_frame_ptr frame)
 {
 	double amp_par[7];
 	static double amp_par_factor[7] = {0.6, 0.4, 0.15, 0.06, 0.04, 0.022, 0.03};
@@ -547,13 +612,13 @@ static void frame_init(klatt_frame_ptr frame)
 	int ix;
 
 	kt_globals.original_f0 = frame->F0hz10 / 10;
-	
+
 	frame->AVdb_tmp  = frame->AVdb - 7;
 	if (frame->AVdb_tmp < 0)
 	{
 		frame->AVdb_tmp = 0;
 	}
-	
+
 	kt_globals.amp_aspir = DBtoLIN(frame->ASP) * 0.05;
 	kt_globals.amp_frica = DBtoLIN(frame->AF) * 0.25;
 	kt_globals.par_amp_voice = DBtoLIN(frame->AVpdb);
@@ -566,12 +631,12 @@ static void frame_init(klatt_frame_ptr frame)
 	}
 
 	Gain0_tmp = frame->Gain0 - 3;
-	if (Gain0_tmp <= 0) 
+	if (Gain0_tmp <= 0)
 	{
 		Gain0_tmp = 57;
 	}
 	kt_globals.amp_gain0 = DBtoLIN(Gain0_tmp) / kt_globals.scale_wav;
-	
+
 	/* Set coefficients of variable cascade resonators */
 	for(ix=1; ix<=9; ix++)
 	{
@@ -581,7 +646,7 @@ static void frame_init(klatt_frame_ptr frame)
 		if(ix <= 5)
 		{
 			setabc(frame->Fhz_next[ix],frame->Bhz_next[ix],&(kt_globals.rsn_next[ix]));
-	
+
 			kt_globals.rsn[ix].a_inc = (kt_globals.rsn_next[ix].a - kt_globals.rsn[ix].a) / 64.0;
 			kt_globals.rsn[ix].b_inc = (kt_globals.rsn_next[ix].b - kt_globals.rsn[ix].b) / 64.0;
 			kt_globals.rsn[ix].c_inc = (kt_globals.rsn_next[ix].c - kt_globals.rsn[ix].c) / 64.0;
@@ -595,19 +660,19 @@ static void frame_init(klatt_frame_ptr frame)
 	kt_globals.rsn[F_NZ].b_inc = (kt_globals.rsn_next[F_NZ].b - kt_globals.rsn[F_NZ].b) / 64.0;
 	kt_globals.rsn[F_NZ].c_inc = (kt_globals.rsn_next[F_NZ].c - kt_globals.rsn[F_NZ].c) / 64.0;
 
-	
+
 	/* Set coefficients of parallel resonators, and amplitude of outputs */
-	
+
 	for(ix=0; ix<=6; ix++)
 	{
 		setabc(frame->Fhz[ix],frame->Bphz[ix],&(kt_globals.rsn[Rparallel+ix]));
 		kt_globals.rsn[Rparallel+ix].a *= amp_par[ix];
 	}
-	
+
 	/* output low-pass filter */
-	
+
 	setabc((long)0.0,(long)(kt_globals.samrate/2),&(kt_globals.rsn[Rout]));
-	
+
 }
 
 
@@ -615,28 +680,28 @@ static void frame_init(klatt_frame_ptr frame)
 /*
 function IMPULSIVE_SOURCE
 
-Generate a low pass filtered train of impulses as an approximation of 
-a natural excitation waveform. Low-pass filter the differentiated impulse 
-with a critically-damped second-order filter, time constant proportional 
+Generate a low pass filtered train of impulses as an approximation of
+a natural excitation waveform. Low-pass filter the differentiated impulse
+with a critically-damped second-order filter, time constant proportional
 to Kopen.
 */
 
 
-static double impulsive_source() 
+static double impulsive_source()
 {
 	static double doublet[] = {0.0,13000000.0,-13000000.0};
 	static double vwave;
-	
-	if (kt_globals.nper < 3) 
+
+	if (kt_globals.nper < 3)
 	{
 		vwave = doublet[kt_globals.nper];
 	}
-	else 
+	else
 	{
 		vwave = 0.0;
 	}
-	
-	return(resonator(&(kt_globals.rsn[RGL]),vwave));
+
+	return (resonator(&(kt_globals.rsn[RGL]),vwave));
 }
 
 
@@ -648,20 +713,20 @@ Vwave is the differentiated glottal flow waveform, there is a weak
 spectral zero around 800 Hz, magic constants a,b reset pitch synchronously.
 */
 
-static double natural_source() 
+static double natural_source()
 {
 	double lgtemp;
 	static double vwave;
-	
-	if (kt_globals.nper < kt_globals.nopen) 
+
+	if (kt_globals.nper < kt_globals.nopen)
 	{
 		kt_globals.pulse_shape_a -= kt_globals.pulse_shape_b;
 		vwave += kt_globals.pulse_shape_a;
 		lgtemp=vwave * 0.028;
-	
+
 		return(lgtemp);
 	}
-	else 
+	else
 	{
 		vwave = 0.0;
 		return(0.0);
@@ -695,125 +760,125 @@ Assume voicing waveform V(t) has form: k1 t**2 - k2 t**3
   potion of the voicing cycle "nopen".
 
   Let integral of dV/dt have no net dc flow --> a = (b * nopen) / 3
- 
+
   Let maximum of dUg(n)/dn be constant --> b = gain / (nopen * nopen)
   meaning as nopen gets bigger, V has bigger peak proportional to n
 
   Thus, to generate the table below for 40 <= nopen <= 263:
-  
+
   B0[nopen - 40] = 1920000 / (nopen * nopen)
 */
 
-static void pitch_synch_par_reset(klatt_frame_ptr frame) 
+static void pitch_synch_par_reset(klatt_frame_ptr frame)
 {
 	long temp;
 	double temp1;
 	static long skew;
-	static short B0[224] = 
+	static short B0[224] =
 	{
 		1200,1142,1088,1038, 991, 948, 907, 869, 833, 799, 768, 738, 710, 683, 658,
 		634, 612, 590, 570, 551, 533, 515, 499, 483, 468, 454, 440, 427, 415, 403,
 		391, 380, 370, 360, 350, 341, 332, 323, 315, 307, 300, 292, 285, 278, 272,
 		265, 259, 253, 247, 242, 237, 231, 226, 221, 217, 212, 208, 204, 199, 195,
 		192, 188, 184, 180, 177, 174, 170, 167, 164, 161, 158, 155, 153, 150, 147,
-		145, 142, 140, 137, 135, 133, 131, 128, 126, 124, 122, 120, 119, 117, 115, 
+		145, 142, 140, 137, 135, 133, 131, 128, 126, 124, 122, 120, 119, 117, 115,
 		113,111, 110, 108, 106, 105, 103, 102, 100, 99, 97, 96, 95, 93, 92, 91, 90,
 		88, 87, 86, 85, 84, 83, 82, 80, 79, 78, 77, 76, 75, 75, 74, 73, 72, 71,
-		70, 69, 68, 68, 67, 66, 65, 64, 64, 63, 62, 61, 61, 60, 59, 59, 58, 57, 
+		70, 69, 68, 68, 67, 66, 65, 64, 64, 63, 62, 61, 61, 60, 59, 59, 58, 57,
 		57, 56, 56, 55, 55, 54, 54, 53, 53, 52, 52, 51, 51, 50, 50, 49, 49, 48, 48,
 		47, 47, 46, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 41, 41, 40, 40,
 		39, 39, 38, 38, 38, 38, 37, 37, 36, 36, 36, 36, 35, 35, 35, 35, 34, 34,33,
 		33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 29, 29,
 		28, 28, 28, 28, 27, 27
 	};
-	
-	if (frame->F0hz10 > 0) 
+
+	if (frame->F0hz10 > 0)
 	{
 		/* T0 is 4* the number of samples in one pitch period */
-	
+
 		kt_globals.T0 = (40 * kt_globals.samrate) / frame->F0hz10;
-	
-	
+
+
 		kt_globals.amp_voice = DBtoLIN(frame->AVdb_tmp);
-	
+
 		/* Duration of period before amplitude modulation */
-	
+
 		kt_globals.nmod = kt_globals.T0;
-		if (frame->AVdb_tmp > 0) 
+		if (frame->AVdb_tmp > 0)
 		{
 			kt_globals.nmod >>= 1;
 		}
-	
+
 		/* Breathiness of voicing waveform */
-	
+
 		kt_globals.amp_breth = DBtoLIN(frame->Aturb) * 0.1;
-	
+
 		/* Set open phase of glottal period where  40 <= open phase <= 263 */
-	
+
 		kt_globals.nopen = 4 * frame->Kopen;
-	
+
 		if ((kt_globals.glsource == IMPULSIVE) && (kt_globals.nopen > 263))
 		{
 			kt_globals.nopen = 263;
 		}
-	
-		if (kt_globals.nopen >= (kt_globals.T0-1)) 
+
+		if (kt_globals.nopen >= (kt_globals.T0-1))
 		{
 //	printf("Warning: glottal open period cannot exceed T0, truncated\n");
 			kt_globals.nopen = kt_globals.T0 - 2;
 		}
-	
-		if (kt_globals.nopen < 40) 
+
+		if (kt_globals.nopen < 40)
 		{
 			/* F0 max = 1000 Hz */
 //	printf("Warning: minimum glottal open period is 10 samples.\n");
 //	printf("truncated, nopen = %d\n",kt_globals.nopen);
 			kt_globals.nopen = 40;
 		}
-	
-	
+
+
 		/* Reset a & b, which determine shape of "natural" glottal waveform */
-	
+
 		kt_globals.pulse_shape_b = B0[kt_globals.nopen-40];
 		kt_globals.pulse_shape_a = (kt_globals.pulse_shape_b * kt_globals.nopen) * 0.333;
-	
+
 		/* Reset width of "impulsive" glottal pulse */
-	
+
 		temp = kt_globals.samrate / kt_globals.nopen;
-	
+
 		setabc((long)0,temp,&(kt_globals.rsn[RGL]));
-	
+
 		/* Make gain at F1 about constant */
-	
+
 		temp1 = kt_globals.nopen *.00833;
 		kt_globals.rsn[RGL].a *= temp1 * temp1;
-		
+
 		/*
 		Truncate skewness so as not to exceed duration of closed phase
 		of glottal period.
 		*/
-	
-	
+
+
 		temp = kt_globals.T0 - kt_globals.nopen;
-		if (frame->Kskew > temp) 
+		if (frame->Kskew > temp)
 		{
 //	printf("Kskew duration=%d > glottal closed period=%d, truncate\n", frame->Kskew, kt_globals.T0 - kt_globals.nopen);
 			frame->Kskew = temp;
 		}
-		if (skew >= 0) 
+		if (skew >= 0)
 		{
 			skew = frame->Kskew;
 		}
-		else 
+		else
 		{
 			skew = - frame->Kskew;
 		}
-	
+
 		/* Add skewness to closed portion of voicing period */
 		kt_globals.T0 = kt_globals.T0 + skew;
 		skew = - skew;
 	}
-	else 
+	else
 	{
 		kt_globals.T0 = 4;                     /* Default for f0 undefined */
 		kt_globals.amp_voice = 0.0;
@@ -822,20 +887,20 @@ static void pitch_synch_par_reset(klatt_frame_ptr frame)
 		kt_globals.pulse_shape_a = 0.0;
 		kt_globals.pulse_shape_b = 0.0;
 	}
-	
+
 	/* Reset these pars pitch synchronously or at update rate if f0=0 */
-	
-	if ((kt_globals.T0 != 4) || (kt_globals.ns == 0)) 
+
+	if ((kt_globals.T0 != 4) || (kt_globals.ns == 0))
 	{
 		/* Set one-pole low-pass filter that tilts glottal source */
-	
+
 		kt_globals.decay = (0.033 * frame->TLTdb);
-	
-		if (kt_globals.decay > 0.0) 
+
+		if (kt_globals.decay > 0.0)
 		{
 			kt_globals.onemd = 1.0 - kt_globals.decay;
 		}
-		else 
+		else
 		{
 			kt_globals.onemd = 1.0;
 		}
@@ -847,7 +912,7 @@ static void pitch_synch_par_reset(klatt_frame_ptr frame)
 /*
 function SETABC
 
-Convert formant freqencies and bandwidth into resonator difference 
+Convert formant freqencies and bandwidth into resonator difference
 equation constants.
 */
 
@@ -856,18 +921,18 @@ static void setabc(long int f, long int bw, resonator_ptr rp)
 {
 	double r;
 	double arg;
-	
+
 	/* Let r  =  exp(-pi bw t) */
 	arg = kt_globals.minus_pi_t * bw;
 	r = exp(arg);
-	
+
 	/* Let c  =  -r**2 */
 	rp->c = -(r * r);
-	
+
 	/* Let b = r * 2*cos(2 pi f t) */
 	arg = kt_globals.two_pi_t * f;
 	rp->b = r * cos(arg) * 2.0;
-	
+
 	/* Let a = 1.0 - b - c */
 	rp->a = 1.0 - rp->b - rp->c;
 }
@@ -876,7 +941,7 @@ static void setabc(long int f, long int bw, resonator_ptr rp)
 /*
 function SETZEROABC
 
-Convert formant freqencies and bandwidth into anti-resonator difference 
+Convert formant freqencies and bandwidth into anti-resonator difference
 equation constants.
 */
 
@@ -884,7 +949,7 @@ static void setzeroabc(long int f, long int bw, resonator_ptr rp)
 {
 	double r;
 	double arg;
-	
+
 	f = -f;
 
 //NOTE, changes made 30.09.2011 for Reece Dunn <msclrhd at googlemail.com>
@@ -894,17 +959,17 @@ static void setzeroabc(long int f, long int bw, resonator_ptr rp)
 	/* Let r  =  exp(-pi bw t) */
 	arg = kt_globals.minus_pi_t * bw;
 	r = exp(arg);
-	
+
 	/* Let c  =  -r**2 */
 	rp->c = -(r * r);
-	
+
 	/* Let b = r * 2*cos(2 pi f t) */
 	arg = kt_globals.two_pi_t * f;
 	rp->b = r * cos(arg) * 2.;
-	
+
 	/* Let a = 1.0 - b - c */
 	rp->a = 1.0 - rp->b - rp->c;
-	
+
 	/* Now convert to antiresonator coefficients (a'=1/a, b'=b/a, c'=c/a) */
 	/* If f == 0 then rp->a gets set to 0 which makes a'=1/a set a', b' and c' to
 	 * INF, causing an audible sound spike when triggered (e.g. apiration with the
@@ -920,26 +985,26 @@ static void setzeroabc(long int f, long int bw, resonator_ptr rp)
 }
 
 
-/* 
+/*
 function GEN_NOISE
 
-Random number generator (return a number between -8191 and +8191) 
-Noise spectrum is tilted down by soft low-pass filter having a pole near 
-the origin in the z-plane, i.e. output = input + (0.75 * lastoutput) 
+Random number generator (return a number between -8191 and +8191)
+Noise spectrum is tilted down by soft low-pass filter having a pole near
+the origin in the z-plane, i.e. output = input + (0.75 * lastoutput)
 */
 
 
-static double gen_noise(double noise) 
+static double gen_noise(double noise)
 {
 	long temp;
-	static double nlast;
-	
+	static double nlast = 0;
+
 	temp = (long) getrandom(-8191,8191);
 	kt_globals.nrand = (long) temp;
-	
+
 	noise = kt_globals.nrand + (0.75 * nlast);
 	nlast = noise;
-	
+
 	return(noise);
 }
 
@@ -956,16 +1021,16 @@ Conversion table, db to linear, 87 dB --> 32767
                                 81 dB --> 16384 (6 dB down = 0.5)
                                  ...
                                  0 dB -->     0
- 
+
 The just noticeable difference for a change in intensity of a vowel
 is approximately 1 dB.  Thus all amplitudes are quantized to 1 dB
 steps.
 */
 
 
-static double DBtoLIN(long dB) 
+static double DBtoLIN(long dB)
 {
-	static short amptable[88] = 
+	static short amptable[88] =
 	{
 		0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   6,   7,
       8,   9,   10,  11,  13,  14,  16,  18,  20,  22,  25,  28,  32,
@@ -976,12 +1041,12 @@ static double DBtoLIN(long dB)
 		4096,  4547,  5104,  5751,  6488,  7291,  8192,  9093,  10207,
 		11502,  12976,  14582,  16384,  18350,  20644,  23429,
 		26214,  29491,  32767 };
-	
+
 	if ((dB < 0) || (dB > 87))
 	{
 		return(0);
 	}
-	
+
 	return((double)(amptable[dB]) * 0.001);
 }
 
@@ -996,11 +1061,10 @@ static int klattp[N_KLATTP];
 static double klattp1[N_KLATTP];
 static double klattp_inc[N_KLATTP];
 
-static int scale_wav_tab[] = {45,38,45,45};   // scale output from different voicing sources
 
 
 
-int Wavegen_Klatt(int resume)
+static int Wavegen_Klatt(int resume)
 {//==========================
 	int pk;
 	int x;
@@ -1029,7 +1093,7 @@ int Wavegen_Klatt(int resume)
 		}
 		for(ix=1; ix < 7; ix++)
 		{
-			kt_frame.Ap[ix] = 0;
+			kt_frame.Ap[ix] = peaks[ix].ap;
 		}
 
 		kt_frame.AVdb = klattp[KLATT_AV];
@@ -1119,7 +1183,7 @@ int Wavegen_Klatt(int resume)
 }
 
 
-void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v, int control)
+static void SetSynth_Klatt(int length, int /* modn */, frame_t *fr1, frame_t *fr2, voice_t *v, int control)
 {//===========================================================================================
 	int ix;
 	DOUBLEX next;
@@ -1130,7 +1194,7 @@ void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v
 
 	if(wvoice != NULL)
 	{
-		if((wvoice->klattv[0] > 0) && (wvoice->klattv[0] <=3 ))
+		if((wvoice->klattv[0] > 0) && (wvoice->klattv[0] <=4 ))
 		{
 			kt_globals.glsource = wvoice->klattv[0];
 			kt_globals.scale_wav = scale_wav_tab[kt_globals.glsource];
@@ -1150,7 +1214,7 @@ void SetSynth_Klatt(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v
 		{
 			if(qix >= N_WCMDQ) qix = 0;
 			if(qix == wcmdq_tail) break;
-	
+
 			cmd = wcmdq[qix][0];
 			if(cmd==WCMD_KLATT)
 			{
@@ -1197,7 +1261,7 @@ if(option_log_frames)
 		fprintf(f_log,"K %3dmS  %3d %3d %4d %4d (%2d)  to  %3d %3d %4d %4d (%2d)\n",length*1000/samplerate,
 			fr1->klattp[KLATT_FNZ]*2,fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3], fr1->klattp[KLATT_AV],
 			fr2->klattp[KLATT_FNZ]*2,fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3], fr2->klattp[KLATT_AV] );
-	
+
 		fclose(f_log);
 	}
 }
@@ -1278,12 +1342,12 @@ if(option_log_frames)
 		{
 			peaks[ix].bp1 = fr1->klatt_bp[ix] * 4;  // parallel bandwidth
 			peaks[ix].bp = (int)peaks[ix].bp1;
-			next = fr2->klatt_bp[ix] * 2;
+			next = fr2->klatt_bp[ix] * 4;
 			peaks[ix].bp_inc =  ((next - peaks[ix].bp1) * STEPSIZE) / length;
 
 			peaks[ix].ap1 = fr1->klatt_ap[ix];   // parallal amplitude
 			peaks[ix].ap = (int)peaks[ix].ap1;
-			next = fr2->klatt_ap[ix] * 2;
+			next = fr2->klatt_ap[ix];
 			peaks[ix].ap_inc =  ((next - peaks[ix].ap1) * STEPSIZE) / length;
 		}
 	}
@@ -1302,18 +1366,7 @@ int Wavegen_Klatt2(int length, int modulation, int resume, frame_t *fr1, frame_t
 
 void KlattInit()
 {
-#define NUMBER_OF_SAMPLES 100
 
-	static short natural_samples[NUMBER_OF_SAMPLES]=
-	{
-		-310,-400,530,356,224,89,23,-10,-58,-16,461,599,536,701,770,
-		605,497,461,560,404,110,224,131,104,-97,155,278,-154,-1165,
-		-598,737,125,-592,41,11,-247,-10,65,92,80,-304,71,167,-1,122,
-		233,161,-43,278,479,485,407,266,650,134,80,236,68,260,269,179,
-		53,140,275,293,296,104,257,152,311,182,263,245,125,314,140,44,
-		203,230,-235,-286,23,107,92,-91,38,464,443,176,98,-784,-2449,
-		-1891,-1045,-1600,-1462,-1384,-1261,-949,-730
-	};
 	static short formant_hz[10] = {280,688,1064,2806,3260,3700,6500,7000,8000,280};
 	static short bandwidth[10] = {89,160,70,160,200,200,500,500,500,89};
 	static short parallel_amp[10] = { 0,59,59,59,59,59,59,0,0,0};
@@ -1321,6 +1374,12 @@ void KlattInit()
 
 	int ix;
 
+for(ix=0; ix<256; ix++)
+{
+	// TEST: Overwrite natural_samples2
+	// sawtooth wave
+//	natural_samples2[ix] = (128-ix) * 20;
+}
 	sample_count=0;
 
 	kt_globals.synthesis_model = CASCADE_PARALLEL;
diff --git a/external/espeak/klatt.h b/external/espeak/klatt.h
old mode 100644
new mode 100755
index 76613a5..e4448e4
--- a/external/espeak/klatt.h
+++ b/external/espeak/klatt.h
@@ -1,11 +1,12 @@
 
 
 #define CASCADE_PARALLEL 1         /* Type of synthesis model */
-#define ALL_PARALLEL     2 
+#define ALL_PARALLEL     2
 
 #define IMPULSIVE        1         /* Type of voicing source */
 #define NATURAL          2
 #define SAMPLED          3
+#define SAMPLED2         4
 
 #define PI               3.1415927
 
@@ -96,7 +97,7 @@ typedef struct
   resonator_t rsn_next[N_RSN];
 
 } klatt_global_t, *klatt_global_ptr;
-  
+
 /* Structure for Klatt Parameters */
 
 #define F_NZ   0  // nasal zero formant
diff --git a/external/espeak/numbers.cpp b/external/espeak/numbers.cpp
old mode 100644
new mode 100755
index 90a246e..974f916
--- a/external/espeak/numbers.cpp
+++ b/external/espeak/numbers.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -70,38 +70,37 @@ static char *digit_lookup;
 static int speak_missing_thousands;
 static int number_control;
 
-
 typedef struct {
-const char *name;
-int  flags;
+	const char *name;
+	int  flags;
 } ACCENTS;
 
 // these are tokens to look up in the *_list file.
 static ACCENTS accents_tab[] = {
-{"_lig", 1},
-{"_smc", 1},  // smallcap
-{"_tur", 1},  // turned
-{"_rev", 1},  // reversed
-{"_crl", 0},  // curl
-
-{"_acu", 0},  // acute
-{"_brv", 0},  // breve
-{"_hac", 0},  // caron/hacek
-{"_ced", 0},  // cedilla
-{"_cir", 0},  // circumflex
-{"_dia", 0},  // diaeresis
-{"_ac2", 0},  // double acute
-{"_dot", 0},  // dot
-{"_grv", 0},  // grave
-{"_mcn", 0},  // macron
-{"_ogo", 0},  // ogonek
-{"_rng", 0},  // ring
-{"_stk", 0},  // stroke
-{"_tld", 0},  // tilde
-
-{"_bar", 0},  // bar
-{"_rfx", 0},  // retroflex
-{"_hok", 0},  // hook
+	{"_lig", 1},
+	{"_smc", 1},  // smallcap
+	{"_tur", 1},  // turned
+	{"_rev", 1},  // reversed
+	{"_crl", 0},  // curl
+
+	{"_acu", 0},  // acute
+	{"_brv", 0},  // breve
+	{"_hac", 0},  // caron/hacek
+	{"_ced", 0},  // cedilla
+	{"_cir", 0},  // circumflex
+	{"_dia", 0},  // diaeresis
+	{"_ac2", 0},  // double acute
+	{"_dot", 0},  // dot
+	{"_grv", 0},  // grave
+	{"_mcn", 0},  // macron
+	{"_ogo", 0},  // ogonek
+	{"_rng", 0},  // ring
+	{"_stk", 0},  // stroke
+	{"_tld", 0},  // tilde
+
+	{"_bar", 0},  // bar
+	{"_rfx", 0},  // retroflex
+	{"_hok", 0},  // hook
 };
 
 
@@ -127,270 +126,271 @@ static ACCENTS accents_tab[] = {
 
 
 static const short non_ascii_tab[] = {
-    0, 0x3b1, 0x259, 0x25b, 0x3b3, 0x3b9, 0x153, 0x3c9,
-0x3c6, 0x283, 0x3c5, 0x292, 0x294, 0x27e };
+	0, 0x3b1, 0x259, 0x25b, 0x3b3, 0x3b9, 0x153, 0x3c9,
+	0x3c6, 0x283, 0x3c5, 0x292, 0x294, 0x27e
+};
 
 
 // characters U+00e0 to U+017f
 static const unsigned short letter_accents_0e0[] = {
-LETTER('a',M_GRAVE,0),   // U+00e0
-LETTER('a',M_ACUTE,0),
-LETTER('a',M_CIRCUMFLEX,0),
-LETTER('a',M_TILDE,0),
-LETTER('a',M_DIAERESIS,0),
-LETTER('a',M_RING,0),
-LIGATURE('a','e',0),
-LETTER('c',M_CEDILLA,0),
-LETTER('e',M_GRAVE,0),
-LETTER('e',M_ACUTE,0),
-LETTER('e',M_CIRCUMFLEX,0),
-LETTER('e',M_DIAERESIS,0),
-LETTER('i',M_GRAVE,0),
-LETTER('i',M_ACUTE,0),
-LETTER('i',M_CIRCUMFLEX,0),
-LETTER('i',M_DIAERESIS,0),
-LETTER('d',M_NAME,0),  // eth  // U+00f0
-LETTER('n',M_TILDE,0),
-LETTER('o',M_GRAVE,0),
-LETTER('o',M_ACUTE,0),
-LETTER('o',M_CIRCUMFLEX,0),
-LETTER('o',M_TILDE,0),
-LETTER('o',M_DIAERESIS,0),
-0,     // division sign
-LETTER('o',M_STROKE,0),
-LETTER('u',M_GRAVE,0),
-LETTER('u',M_ACUTE,0),
-LETTER('u',M_CIRCUMFLEX,0),
-LETTER('u',M_DIAERESIS,0),
-LETTER('y',M_ACUTE,0),
-LETTER('t',M_NAME,0),  // thorn
-LETTER('y',M_DIAERESIS,0),
-CAPITAL,                 // U+0100
-LETTER('a',M_MACRON,0),
-CAPITAL,
-LETTER('a',M_BREVE,0),
-CAPITAL,
-LETTER('a',M_OGONEK,0),
-CAPITAL,
-LETTER('c',M_ACUTE,0),
-CAPITAL,
-LETTER('c',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('c',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('c',M_CARON,0),
-CAPITAL,
-LETTER('d',M_CARON,0),
-CAPITAL,                 // U+0110
-LETTER('d',M_STROKE,0),
-CAPITAL,
-LETTER('e',M_MACRON,0),
-CAPITAL,
-LETTER('e',M_BREVE,0),
-CAPITAL,
-LETTER('e',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('e',M_OGONEK,0),
-CAPITAL,
-LETTER('e',M_CARON,0),
-CAPITAL,
-LETTER('g',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('g',M_BREVE,0),
-CAPITAL,                // U+0120
-LETTER('g',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('g',M_CEDILLA,0),
-CAPITAL,
-LETTER('h',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('h',M_STROKE,0),
-CAPITAL,
-LETTER('i',M_TILDE,0),
-CAPITAL,
-LETTER('i',M_MACRON,0),
-CAPITAL,
-LETTER('i',M_BREVE,0),
-CAPITAL,
-LETTER('i',M_OGONEK,0),
-CAPITAL,               // U+0130
-LETTER('i',M_NAME,0), // dotless i
-CAPITAL,
-LIGATURE('i','j',0),
-CAPITAL,
-LETTER('j',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('k',M_CEDILLA,0),
-LETTER('k',M_NAME,0),  // kra
-CAPITAL,
-LETTER('l',M_ACUTE,0),
-CAPITAL,
-LETTER('l',M_CEDILLA,0),
-CAPITAL,
-LETTER('l',M_CARON,0),
-CAPITAL,
-LETTER('l',M_MIDDLE_DOT,0),  // U+0140
-CAPITAL,
-LETTER('l',M_STROKE,0),
-CAPITAL,
-LETTER('n',M_ACUTE,0),
-CAPITAL,
-LETTER('n',M_CEDILLA,0),
-CAPITAL,
-LETTER('n',M_CARON,0),
-LETTER('n',M_NAME,0),  // apostrophe n
-CAPITAL,
-LETTER('n',M_NAME,0),  // eng
-CAPITAL,
-LETTER('o',M_MACRON,0),
-CAPITAL,
-LETTER('o',M_BREVE,0),
-CAPITAL,             // U+0150
-LETTER('o',M_DOUBLE_ACUTE,0),
-CAPITAL,
-LIGATURE('o','e',0),
-CAPITAL,
-LETTER('r',M_ACUTE,0),
-CAPITAL,
-LETTER('r',M_CEDILLA,0),
-CAPITAL,
-LETTER('r',M_CARON,0),
-CAPITAL,
-LETTER('s',M_ACUTE,0),
-CAPITAL,
-LETTER('s',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('s',M_CEDILLA,0),
-CAPITAL,              // U+0160
-LETTER('s',M_CARON,0),
-CAPITAL,
-LETTER('t',M_CEDILLA,0),
-CAPITAL,
-LETTER('t',M_CARON,0),
-CAPITAL,
-LETTER('t',M_STROKE,0),
-CAPITAL,
-LETTER('u',M_TILDE,0),
-CAPITAL,
-LETTER('u',M_MACRON,0),
-CAPITAL,
-LETTER('u',M_BREVE,0),
-CAPITAL,
-LETTER('u',M_RING,0),
-CAPITAL,              // U+0170
-LETTER('u',M_DOUBLE_ACUTE,0),
-CAPITAL,
-LETTER('u',M_OGONEK,0),
-CAPITAL,
-LETTER('w',M_CIRCUMFLEX,0),
-CAPITAL,
-LETTER('y',M_CIRCUMFLEX,0),
-CAPITAL,   // Y-DIAERESIS
-CAPITAL,
-LETTER('z',M_ACUTE,0),
-CAPITAL,
-LETTER('z',M_DOT_ABOVE,0),
-CAPITAL,
-LETTER('z',M_CARON,0),
-LETTER('s',M_NAME,0), // long-s  // U+17f
+	LETTER('a',M_GRAVE,0),   // U+00e0
+	LETTER('a',M_ACUTE,0),
+	LETTER('a',M_CIRCUMFLEX,0),
+	LETTER('a',M_TILDE,0),
+	LETTER('a',M_DIAERESIS,0),
+	LETTER('a',M_RING,0),
+	LIGATURE('a','e',0),
+	LETTER('c',M_CEDILLA,0),
+	LETTER('e',M_GRAVE,0),
+	LETTER('e',M_ACUTE,0),
+	LETTER('e',M_CIRCUMFLEX,0),
+	LETTER('e',M_DIAERESIS,0),
+	LETTER('i',M_GRAVE,0),
+	LETTER('i',M_ACUTE,0),
+	LETTER('i',M_CIRCUMFLEX,0),
+	LETTER('i',M_DIAERESIS,0),
+	LETTER('d',M_NAME,0),  // eth  // U+00f0
+	LETTER('n',M_TILDE,0),
+	LETTER('o',M_GRAVE,0),
+	LETTER('o',M_ACUTE,0),
+	LETTER('o',M_CIRCUMFLEX,0),
+	LETTER('o',M_TILDE,0),
+	LETTER('o',M_DIAERESIS,0),
+	0,     // division sign
+	LETTER('o',M_STROKE,0),
+	LETTER('u',M_GRAVE,0),
+	LETTER('u',M_ACUTE,0),
+	LETTER('u',M_CIRCUMFLEX,0),
+	LETTER('u',M_DIAERESIS,0),
+	LETTER('y',M_ACUTE,0),
+	LETTER('t',M_NAME,0),  // thorn
+	LETTER('y',M_DIAERESIS,0),
+	CAPITAL,                 // U+0100
+	LETTER('a',M_MACRON,0),
+	CAPITAL,
+	LETTER('a',M_BREVE,0),
+	CAPITAL,
+	LETTER('a',M_OGONEK,0),
+	CAPITAL,
+	LETTER('c',M_ACUTE,0),
+	CAPITAL,
+	LETTER('c',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('c',M_DOT_ABOVE,0),
+	CAPITAL,
+	LETTER('c',M_CARON,0),
+	CAPITAL,
+	LETTER('d',M_CARON,0),
+	CAPITAL,                 // U+0110
+	LETTER('d',M_STROKE,0),
+	CAPITAL,
+	LETTER('e',M_MACRON,0),
+	CAPITAL,
+	LETTER('e',M_BREVE,0),
+	CAPITAL,
+	LETTER('e',M_DOT_ABOVE,0),
+	CAPITAL,
+	LETTER('e',M_OGONEK,0),
+	CAPITAL,
+	LETTER('e',M_CARON,0),
+	CAPITAL,
+	LETTER('g',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('g',M_BREVE,0),
+	CAPITAL,                // U+0120
+	LETTER('g',M_DOT_ABOVE,0),
+	CAPITAL,
+	LETTER('g',M_CEDILLA,0),
+	CAPITAL,
+	LETTER('h',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('h',M_STROKE,0),
+	CAPITAL,
+	LETTER('i',M_TILDE,0),
+	CAPITAL,
+	LETTER('i',M_MACRON,0),
+	CAPITAL,
+	LETTER('i',M_BREVE,0),
+	CAPITAL,
+	LETTER('i',M_OGONEK,0),
+	CAPITAL,               // U+0130
+	LETTER('i',M_NAME,0), // dotless i
+	CAPITAL,
+	LIGATURE('i','j',0),
+	CAPITAL,
+	LETTER('j',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('k',M_CEDILLA,0),
+	LETTER('k',M_NAME,0),  // kra
+	CAPITAL,
+	LETTER('l',M_ACUTE,0),
+	CAPITAL,
+	LETTER('l',M_CEDILLA,0),
+	CAPITAL,
+	LETTER('l',M_CARON,0),
+	CAPITAL,
+	LETTER('l',M_MIDDLE_DOT,0),  // U+0140
+	CAPITAL,
+	LETTER('l',M_STROKE,0),
+	CAPITAL,
+	LETTER('n',M_ACUTE,0),
+	CAPITAL,
+	LETTER('n',M_CEDILLA,0),
+	CAPITAL,
+	LETTER('n',M_CARON,0),
+	LETTER('n',M_NAME,0),  // apostrophe n
+	CAPITAL,
+	LETTER('n',M_NAME,0),  // eng
+	CAPITAL,
+	LETTER('o',M_MACRON,0),
+	CAPITAL,
+	LETTER('o',M_BREVE,0),
+	CAPITAL,             // U+0150
+	LETTER('o',M_DOUBLE_ACUTE,0),
+	CAPITAL,
+	LIGATURE('o','e',0),
+	CAPITAL,
+	LETTER('r',M_ACUTE,0),
+	CAPITAL,
+	LETTER('r',M_CEDILLA,0),
+	CAPITAL,
+	LETTER('r',M_CARON,0),
+	CAPITAL,
+	LETTER('s',M_ACUTE,0),
+	CAPITAL,
+	LETTER('s',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('s',M_CEDILLA,0),
+	CAPITAL,              // U+0160
+	LETTER('s',M_CARON,0),
+	CAPITAL,
+	LETTER('t',M_CEDILLA,0),
+	CAPITAL,
+	LETTER('t',M_CARON,0),
+	CAPITAL,
+	LETTER('t',M_STROKE,0),
+	CAPITAL,
+	LETTER('u',M_TILDE,0),
+	CAPITAL,
+	LETTER('u',M_MACRON,0),
+	CAPITAL,
+	LETTER('u',M_BREVE,0),
+	CAPITAL,
+	LETTER('u',M_RING,0),
+	CAPITAL,              // U+0170
+	LETTER('u',M_DOUBLE_ACUTE,0),
+	CAPITAL,
+	LETTER('u',M_OGONEK,0),
+	CAPITAL,
+	LETTER('w',M_CIRCUMFLEX,0),
+	CAPITAL,
+	LETTER('y',M_CIRCUMFLEX,0),
+	CAPITAL,   // Y-DIAERESIS
+	CAPITAL,
+	LETTER('z',M_ACUTE,0),
+	CAPITAL,
+	LETTER('z',M_DOT_ABOVE,0),
+	CAPITAL,
+	LETTER('z',M_CARON,0),
+	LETTER('s',M_NAME,0), // long-s  // U+17f
 };
 
 
 // characters U+0250 to U+029F
 static const unsigned short letter_accents_250[] = {
-LETTER('a',M_TURNED,0),		// U+250
-LETTER(L_ALPHA,0,0),
-LETTER(L_ALPHA,M_TURNED,0),
-LETTER('b',M_IMPLOSIVE,0),
-0,  // open-o
-LETTER('c',M_CURL,0),
-LETTER('d',M_RETROFLEX,0),
-LETTER('d',M_IMPLOSIVE,0),
-LETTER('e',M_REVERSED,0),	// U+258
-0,   // schwa
-LETTER(L_SCHWA,M_HOOK,0),
-0,   // open-e
-LETTER(L_OPEN_E,M_REVERSED,0),
-LETTER(L_OPEN_E,M_HOOK,M_REVERSED),
-0,//LETTER(L_OPEN_E,M_CLOSED,M_REVERSED),
-LETTER('j',M_BAR,0),
-LETTER('g',M_IMPLOSIVE,0),	// U+260
-LETTER('g',0,0),
-LETTER('g',M_SMALLCAP,0),
-LETTER(L_GAMMA,0,0),
-0,   // ramshorn
-LETTER('h',M_TURNED,0),
-LETTER('h',M_HOOK,0),
-0,//LETTER(L_HENG,M_HOOK,0),
-LETTER('i',M_BAR,0),		// U+268
-LETTER(L_IOTA,0,0),
-LETTER('i',M_SMALLCAP,0),
-LETTER('l',M_TILDE,0),
-LETTER('l',M_BAR,0),
-LETTER('l',M_RETROFLEX,0),
-LIGATURE('l','z',0),
-LETTER('m',M_TURNED,0),
-0,//LETTER('m',M_TURNED,M_LEG),	// U+270
-LETTER('m',M_HOOK,0),
-0,//LETTER('n',M_LEFTHOOK,0),
-LETTER('n',M_RETROFLEX,0),
-LETTER('n',M_SMALLCAP,0),
-LETTER('o',M_BAR,0),
-LIGATURE('o','e',M_SMALLCAP),
-0,//LETTER(L_OMEGA,M_CLOSED,0),
-LETTER(L_PHI,0,0),		// U+278
-LETTER('r',M_TURNED,0),
-0,//LETTER('r',M_TURNED,M_LEG),
-LETTER('r',M_RETROFLEX,M_TURNED),
-0,//LETTER('r',M_LEG,0),
-LETTER('r',M_RETROFLEX,0),
-0,  // r-tap
-LETTER(L_RTAP,M_REVERSED,0),
-LETTER('r',M_SMALLCAP,0),	// U+280
-LETTER('r',M_TURNED,M_SMALLCAP),
-LETTER('s',M_RETROFLEX,0),
-0,  // esh
-0,//LETTER('j',M_BAR,L_IMPLOSIVE),
-LETTER(L_ESH,M_REVERSED,0),
-LETTER(L_ESH,M_CURL,0),
-LETTER('t',M_TURNED,0),
-LETTER('t',M_RETROFLEX,0),	// U+288
-LETTER('u',M_BAR,0),
-LETTER(L_UPSILON,0,0),
-LETTER('v',M_HOOK,0),
-LETTER('v',M_TURNED,0),
-LETTER('w',M_TURNED,0),
-LETTER('y',M_TURNED,0),
-LETTER('y',M_SMALLCAP,0),
-LETTER('z',M_RETROFLEX,0),	// U+290
-LETTER('z',M_CURL,0),
-0,  // ezh
-LETTER(L_EZH,M_CURL,0),
-0,  // glottal stop
-LETTER(L_GLOTTAL,M_REVERSED,0),
-LETTER(L_GLOTTAL,M_TURNED,0),
-0,//LETTER('c',M_LONG,0),
-0,  // bilabial click		// U+298
-LETTER('b',M_SMALLCAP,0),
-0,//LETTER(L_OPEN_E,M_CLOSED,0),
-LETTER('g',M_IMPLOSIVE,M_SMALLCAP),
-LETTER('h',M_SMALLCAP,0),
-LETTER('j',M_CURL,0),
-LETTER('k',M_TURNED,0),
-LETTER('l',M_SMALLCAP,0),
-LETTER('q',M_HOOK,0),      // U+2a0
-LETTER(L_GLOTTAL,M_STROKE,0),
-LETTER(L_GLOTTAL,M_STROKE,M_REVERSED),
-LIGATURE('d','z',0),
-0,   // dezh
-LIGATURE('d','z',M_CURL),
-LIGATURE('t','s',0),
-0,   // tesh
-LIGATURE('t','s',M_CURL),
+	LETTER('a',M_TURNED,0),		// U+250
+	LETTER(L_ALPHA,0,0),
+	LETTER(L_ALPHA,M_TURNED,0),
+	LETTER('b',M_IMPLOSIVE,0),
+	0,  // open-o
+	LETTER('c',M_CURL,0),
+	LETTER('d',M_RETROFLEX,0),
+	LETTER('d',M_IMPLOSIVE,0),
+	LETTER('e',M_REVERSED,0),	// U+258
+	0,   // schwa
+	LETTER(L_SCHWA,M_HOOK,0),
+	0,   // open-e
+	LETTER(L_OPEN_E,M_REVERSED,0),
+	LETTER(L_OPEN_E,M_HOOK,M_REVERSED),
+	0,//LETTER(L_OPEN_E,M_CLOSED,M_REVERSED),
+	LETTER('j',M_BAR,0),
+	LETTER('g',M_IMPLOSIVE,0),	// U+260
+	LETTER('g',0,0),
+	LETTER('g',M_SMALLCAP,0),
+	LETTER(L_GAMMA,0,0),
+	0,   // ramshorn
+	LETTER('h',M_TURNED,0),
+	LETTER('h',M_HOOK,0),
+	0,//LETTER(L_HENG,M_HOOK,0),
+	LETTER('i',M_BAR,0),		// U+268
+	LETTER(L_IOTA,0,0),
+	LETTER('i',M_SMALLCAP,0),
+	LETTER('l',M_TILDE,0),
+	LETTER('l',M_BAR,0),
+	LETTER('l',M_RETROFLEX,0),
+	LIGATURE('l','z',0),
+	LETTER('m',M_TURNED,0),
+	0,//LETTER('m',M_TURNED,M_LEG),	// U+270
+	LETTER('m',M_HOOK,0),
+	0,//LETTER('n',M_LEFTHOOK,0),
+	LETTER('n',M_RETROFLEX,0),
+	LETTER('n',M_SMALLCAP,0),
+	LETTER('o',M_BAR,0),
+	LIGATURE('o','e',M_SMALLCAP),
+	0,//LETTER(L_OMEGA,M_CLOSED,0),
+	LETTER(L_PHI,0,0),		// U+278
+	LETTER('r',M_TURNED,0),
+	0,//LETTER('r',M_TURNED,M_LEG),
+	LETTER('r',M_RETROFLEX,M_TURNED),
+	0,//LETTER('r',M_LEG,0),
+	LETTER('r',M_RETROFLEX,0),
+	0,  // r-tap
+	LETTER(L_RTAP,M_REVERSED,0),
+	LETTER('r',M_SMALLCAP,0),	// U+280
+	LETTER('r',M_TURNED,M_SMALLCAP),
+	LETTER('s',M_RETROFLEX,0),
+	0,  // esh
+	0,//LETTER('j',M_BAR,L_IMPLOSIVE),
+	LETTER(L_ESH,M_REVERSED,0),
+	LETTER(L_ESH,M_CURL,0),
+	LETTER('t',M_TURNED,0),
+	LETTER('t',M_RETROFLEX,0),	// U+288
+	LETTER('u',M_BAR,0),
+	LETTER(L_UPSILON,0,0),
+	LETTER('v',M_HOOK,0),
+	LETTER('v',M_TURNED,0),
+	LETTER('w',M_TURNED,0),
+	LETTER('y',M_TURNED,0),
+	LETTER('y',M_SMALLCAP,0),
+	LETTER('z',M_RETROFLEX,0),	// U+290
+	LETTER('z',M_CURL,0),
+	0,  // ezh
+	LETTER(L_EZH,M_CURL,0),
+	0,  // glottal stop
+	LETTER(L_GLOTTAL,M_REVERSED,0),
+	LETTER(L_GLOTTAL,M_TURNED,0),
+	0,//LETTER('c',M_LONG,0),
+	0,  // bilabial click		// U+298
+	LETTER('b',M_SMALLCAP,0),
+	0,//LETTER(L_OPEN_E,M_CLOSED,0),
+	LETTER('g',M_IMPLOSIVE,M_SMALLCAP),
+	LETTER('h',M_SMALLCAP,0),
+	LETTER('j',M_CURL,0),
+	LETTER('k',M_TURNED,0),
+	LETTER('l',M_SMALLCAP,0),
+	LETTER('q',M_HOOK,0),      // U+2a0
+	LETTER(L_GLOTTAL,M_STROKE,0),
+	LETTER(L_GLOTTAL,M_STROKE,M_REVERSED),
+	LIGATURE('d','z',0),
+	0,   // dezh
+	LIGATURE('d','z',M_CURL),
+	LIGATURE('t','s',0),
+	0,   // tesh
+	LIGATURE('t','s',M_CURL),
 };
 
 static int LookupLetter2(Translator *tr, unsigned int letter, char *ph_buf)
-{//========================================================================
+{	//========================================================================
 	int len;
 	char single_letter[10];
 
@@ -431,11 +431,10 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
 	{
 		accent_data = letter_accents_0e0[letter - 0xe0];
 	}
-	else
-	if((letter >= 0x250) && (letter <= 0x2a8))
+	else if((letter >= 0x250) && (letter <= 0x2a8))
 	{
 		accent_data = letter_accents_250[letter - 0x250];
-	} 
+	}
 
 	if(accent_data != 0)
 	{
@@ -485,8 +484,7 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
 				{
 					if(accent1 == 0)
 						strcpy(ph_buf, ph_letter1);
-					else
-					if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1))
+					else if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1))
 						sprintf(ph_buf,"%s%c%c%s", ph_accent1, phonPAUSE_VSHORT, phonSTRESS_P, ph_letter1);
 					else
 						sprintf(ph_buf,"%c%s%c%s%c", phonSTRESS_2, ph_letter1, phonPAUSE_VSHORT, ph_accent1, phonPAUSE_VSHORT);
@@ -551,7 +549,7 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b
 
 	// if the $accent flag is set for this letter, use the accents table (below)
 	dict_flags[1] = 0;
-	
+
 	if(Lookup(tr, &single_letter[1], ph_buf3) == 0)
 	{
 		single_letter[1] = ' ';
@@ -579,6 +577,122 @@ void LookupLetter(Translator *tr, unsigned int letter, int next_byte, char *ph_b
 }  // end of LookupLetter
 
 
+// unicode ranges for non-ascii digits 0-9
+static const int number_ranges[] = {
+	0x660, 0x6f0,  // arabic
+	0x966, 0x9e6, 0xa66, 0xae6, 0xb66, 0xbe6, 0xc66, 0xce6, 0xd66,  // indic
+	0xe50, 0xed0, 0xf20, 0x1040, 0x1090,
+	0 };  // these must be in ascending order
+
+
+static int NonAsciiNumber(int letter)
+{//============================
+// Change non-ascii digit into ascii digit '0' to '9', (or -1 if not)
+	const int *p;
+	int base;
+
+	for(p=number_ranges; (base = *p) != 0; p++)
+	{
+		if(letter < base)
+			break;  // not found
+		if(letter < (base+10))
+			return(letter-base+'0');
+	}
+	return(-1);
+}
+
+#define L_SUB 0x4000   // subscript
+#define L_SUP 0x8000   // superscript
+
+static const char *modifiers[] = {NULL, "_sub", "_sup", NULL};
+
+// this list must be in ascending order
+static unsigned short derived_letters[] = {
+	0x00aa, 'a'+L_SUP,
+	0x00b2, '2'+L_SUP,
+	0x00b3, '3'+L_SUP,
+	0x00b9, '1'+L_SUP,
+	0x00ba, 'o'+L_SUP,
+	0x02b0, 'h'+L_SUP,
+	0x02b1, 0x266+L_SUP,
+	0x02b2, 'j'+L_SUP,
+	0x02b3, 'r'+L_SUP,
+	0x02b4, 0x279+L_SUP,
+	0x02b5, 0x27b+L_SUP,
+	0x02b6, 0x281+L_SUP,
+	0x02b7, 'w'+L_SUP,
+	0x02b8, 'y'+L_SUP,
+	0x02c0, 0x294+L_SUP,
+	0x02c1, 0x295+L_SUP,
+	0x02e0, 0x263+L_SUP,
+	0x02e1, 'l'+L_SUP,
+	0x02e2, 's'+L_SUP,
+	0x02e3, 'x'+L_SUP,
+	0x2070, '0'+L_SUP,
+	0x2071, 'i'+L_SUP,
+	0x2074, '4'+L_SUP,
+	0x2075, '5'+L_SUP,
+	0x2076, '6'+L_SUP,
+	0x2077, '7'+L_SUP,
+	0x2078, '8'+L_SUP,
+	0x2079, '9'+L_SUP,
+	0x207a, '+'+L_SUP,
+	0x207b, '-'+L_SUP,
+	0x207c, '='+L_SUP,
+	0x207d, '('+L_SUP,
+	0x207e, ')'+L_SUP,
+	0x207f, 'n'+L_SUP,
+	0x2080, '0'+L_SUB,
+	0x2081, '1'+L_SUB,
+	0x2082, '2'+L_SUB,
+	0x2083, '3'+L_SUB,
+	0x2084, '4'+L_SUB,
+	0x2085, '5'+L_SUB,
+	0x2086, '6'+L_SUB,
+	0x2087, '7'+L_SUB,
+	0x2088, '8'+L_SUB,
+	0x2089, '9'+L_SUB,
+	0x208a, '+'+L_SUB,
+	0x208b, '-'+L_SUB,
+	0x208c, '='+L_SUB,
+	0x208d, '('+L_SUB,
+	0x208e, ')'+L_SUB,
+	0x2090, 'a'+L_SUB,
+	0x2091, 'e'+L_SUB,
+	0x2092, 'o'+L_SUB,
+	0x2093, 'x'+L_SUB,
+	0x2094, 0x259+L_SUB,
+	0x2095, 'h'+L_SUB,
+	0x2096, 'k'+L_SUB,
+	0x2097, 'l'+L_SUB,
+	0x2098, 'm'+L_SUB,
+	0x2099, 'n'+L_SUB,
+	0x209a, 'p'+L_SUB,
+	0x209b, 's'+L_SUB,
+	0x209c, 't'+L_SUB,
+	0,0};
+
+
+static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"};  // names, using phonemes available to all languages
+
+
+int IsSuperscript(int letter)
+{//===========================
+// is this a subscript or superscript letter ?
+	int ix;
+	int c;
+
+	for(ix=0; (c = derived_letters[ix]) != 0; ix+=2)
+	{
+		if(c > letter)
+			break;
+		if(c == letter)
+			return(derived_letters[ix+1]);
+	}
+	return(0);
+}
+
+
 
 int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
 {//=========================================================================
@@ -586,21 +700,34 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
 // return number of bytes used by the letter
 // control bit 0:  a non-initial letter in a word
 //         bit 1:  say 'capital'
+//         bit 2:  say character code for unknown letters
 
 	int n_bytes;
 	int letter;
 	int len;
 	int ix;
-	int save_option_phonemes;
+	int c;
 	char *p2;
 	char *pbuf;
-	char capital[20];
+	const char *modifier;
+	ALPHABET *alphabet;
+	int al_offset;
+	int al_flags;
+	int language;
+	int number;
+	int phontab_1;
+	int speak_letter_number;
+	char capital[30];
 	char ph_buf[80];
 	char ph_buf2[80];
-	char hexbuf[6];
+	char ph_alphabet[80];
+	char hexbuf[12];
+	static char pause_string[] = {phonPAUSE, 0};
 
 	ph_buf[0] = 0;
+	ph_alphabet[0] = 0;
 	capital[0] = 0;
+	phontab_1 = translator->phoneme_tab_ix;
 
 	n_bytes = utf8_in(&letter,word);
 
@@ -612,93 +739,249 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
 	if(control & 2)
 	{
 		// include CAPITAL information
-		if(iswupper(letter))
+		if(iswupper2(letter))
 		{
 			Lookup(tr, "_cap", capital);
 		}
 	}
 	letter = towlower2(letter);
-
 	LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
 
+	if(ph_buf[0] == 0)
+	{
+		// is this a subscript or superscript letter ?
+		if((c = IsSuperscript(letter)) != 0)
+		{
+			letter = c & 0x3fff;
+			if((control & 4 ) && ((modifier = modifiers[c >> 14]) != NULL))
+			{
+				// don't say "superscript" during normal text reading
+				Lookup(tr, modifier, capital);
+				if(capital[0] == 0)
+				{
+					capital[2] = SetTranslator2("en");   // overwrites previous contents of translator2
+					Lookup(translator2, modifier, &capital[3]);
+					if(capital[3] != 0)
+					{
+						capital[0] = phonPAUSE;
+						capital[1] = phonSWITCH;
+						len = strlen(&capital[3]);
+						capital[len+3] = phonSWITCH;
+						capital[len+4] = phontab_1;
+						capital[len+5] = 0;
+					}
+				}
+			}
+		}
+		LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
+	}
+
 	if(ph_buf[0] == phonSWITCH)
 	{
 		strcpy(phonemes,ph_buf);
 		return(0);
 	}
 
-	if((ph_buf[0] == 0) && (tr->translator_name != L('e','n')))
+
+	if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0))
 	{
-		// speak as English, check whether there is a translation for this character
-		SetTranslator2("en");
-		save_option_phonemes = option_phonemes;
-		option_phonemes = 0;
-		LookupLetter(translator2, letter, word[n_bytes], ph_buf, control & 1);
-		SelectPhonemeTable(voice->phoneme_tab_ix);  // revert to original phoneme table
-		option_phonemes = save_option_phonemes;
+		// convert a non-ascii number to 0-9
+		LookupLetter(tr, number, 0, ph_buf, control & 1);
+	}
+
+	al_offset = 0;
+	al_flags = 0;
+	if((alphabet = AlphabetFromChar(letter)) != NULL)
+	{
+		al_offset = alphabet->offset;
+		al_flags = alphabet->flags;
+	}
 
-		if(ph_buf[0] != 0)
+	if(alphabet != current_alphabet)
+	{
+		// speak the name of the alphabet
+		current_alphabet = alphabet;
+		if((alphabet != NULL) && !(al_flags & AL_DONT_NAME) && (al_offset != translator->letter_bits_offset))
 		{
-			sprintf(phonemes,"%cen",phonSWITCH);
-			return(0);
+			if((al_flags & AL_DONT_NAME) || (al_offset == translator->langopts.alt_alphabet) || (al_offset == translator->langopts.our_alphabet))
+			{
+				// don't say the alphabet name
+			}
+			else
+			{
+				ph_buf2[0] = 0;
+				if(Lookup(translator, alphabet->name, ph_alphabet) == 0)  // the original language for the current voice
+				{
+					// Can't find the local name for this alphabet, use the English name
+					ph_alphabet[2] = SetTranslator2("en");   // overwrites previous contents of translator2
+					Lookup(translator2, alphabet->name, ph_buf2);
+				}
+				else if(translator != tr)
+				{
+					phontab_1 = tr->phoneme_tab_ix;
+					strcpy(ph_buf2, ph_alphabet);
+					ph_alphabet[2] = translator->phoneme_tab_ix;
+				}
+
+				if(ph_buf2[0] != 0)
+				{
+					// we used a different language for the alphabet name (now in ph_buf2)
+					ph_alphabet[0] = phonPAUSE;
+					ph_alphabet[1] = phonSWITCH;
+					strcpy(&ph_alphabet[3], ph_buf2);
+					len = strlen(ph_buf2) + 3;
+					ph_alphabet[len] = phonSWITCH;
+					ph_alphabet[len+1] = phontab_1;
+					ph_alphabet[len+2] = 0;
+				}
+			}
 		}
 	}
 
+
+// caution: SetWordStress() etc don't expect phonSWITCH + phoneme table number
+
 	if(ph_buf[0] == 0)
 	{
-		// character name not found
-		if((letter >= 0x2800) && (letter <= 0x28ff))
+		if((al_offset != 0) && (al_offset == translator->langopts.alt_alphabet))
+			language = translator->langopts.alt_alphabet_lang;
+		else
+		if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS))
+			language = alphabet->language;
+		else
+			language = L('e','n');
+
+		if((language != tr->translator_name) || (language == L('k','o')))
 		{
-			// braille dots symbol
-			Lookup(tr, "_braille", ph_buf);
-			if(ph_buf[0] == 0)
-			{
-				EncodePhonemes("br'e:l", ph_buf, NULL);
-			}
+			char *p3;
+			int initial, code;
+			char hangul_buf[12];
+
+			// speak in the language for this alphabet (or English)
+			ph_buf[2] = SetTranslator2(WordToString2(language));
 
-			if(ph_buf[0] != 0)
+			if(translator2 != NULL)
 			{
-				pbuf = ph_buf + strlen(ph_buf);
-				for(ix=0; ix<8; ix++)
+				if(((code = letter - 0xac00) >= 0) && (letter <= 0xd7af))
 				{
-					if(letter & (1 << ix))
+					// Special case for Korean letters.
+					// break a syllable hangul into 2 or 3 individual jamo
+
+					hangul_buf[0] = ' ';
+					p3 = &hangul_buf[1];
+					if((initial = (code/28)/21) != 11)
 					{
-						*pbuf++ = phonPAUSE_VSHORT;
-						LookupLetter(tr, '1'+ix, 0, pbuf, 1);
-						pbuf += strlen(pbuf);
+						p3 += utf8_out(initial + 0x1100, p3);
 					}
+					utf8_out(((code/28) % 21) + 0x1161, p3);  // medial
+					utf8_out((code % 28) + 0x11a7, &p3[3]);   // final
+					p3[6] = ' ';
+					p3[7] = 0;
+					ph_buf[3] = 0;
+					TranslateRules(translator2, &hangul_buf[1], &ph_buf[3], sizeof(ph_buf)-3, NULL, 0, NULL);
+					SetWordStress(translator2, &ph_buf[3], NULL, -1, 0);
+				}
+				else
+				{
+					LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
+				}
+
+				if(ph_buf[3] == phonSWITCH)
+				{
+					// another level of language change
+					ph_buf[2] = SetTranslator2(&ph_buf[4]);
+					LookupLetter(translator2, letter, word[n_bytes], &ph_buf[3], control & 1);
+				}
+
+				SelectPhonemeTable(voice->phoneme_tab_ix);  // revert to original phoneme table
+
+				if(ph_buf[3] != 0)
+				{
+					ph_buf[0] = phonPAUSE;
+					ph_buf[1] = phonSWITCH;
+					len = strlen(&ph_buf[3]) + 3;
+					ph_buf[len] = phonSWITCH;  // switch back
+					ph_buf[len+1] = tr->phoneme_tab_ix;
+					ph_buf[len+2] = 0;
 				}
 			}
 		}
+	}
+
+	if(ph_buf[0] == 0)
+	{
+		// character name not found
 
 		if(ph_buf[0]== 0)
 		{
-			if(iswalpha(letter))
-				Lookup(tr, "_?A", ph_buf);
+			speak_letter_number = 1;
+			if(!(al_flags & AL_NO_SYMBOL))
+			{
+				if(iswalpha2(letter))
+					Lookup(translator, "_?A", ph_buf);
+
+				if((ph_buf[0]==0) && !iswspace(letter))
+					Lookup(translator, "_??", ph_buf);
 
-			if((ph_buf[0]==0) && !iswspace(letter))
-				Lookup(tr, "_??", ph_buf);
-	
-			if(ph_buf[0] != 0)
+				if(ph_buf[0] == 0)
+				{
+					EncodePhonemes("l'et@", ph_buf, NULL);
+				}
+			}
+
+			if(!(control & 4) && (al_flags & AL_NOT_CODE))
+			{
+				// don't speak the character code number, unless we want full details of this character
+				speak_letter_number = 0;
+			}
+
+//			if((ph_alphabet[0] != 0) && speak_letter_number)
+//				ph_buf[0] = 0;  // don't speak "letter" if we speak alphabet name
+
+			if(speak_letter_number)
 			{
-				// speak the hexadecimal number of the character code
-				sprintf(hexbuf,"%x",letter);
+				if(al_offset == 0x2800)
+				{
+					// braille dots symbol, list the numbered dots
+					p2 = hexbuf;
+					for(ix=0; ix<8; ix++)
+					{
+						if(letter & (1 << ix))
+						{
+							*p2++ = '1'+ix;
+						}
+					}
+					*p2 = 0;
+				}
+				else
+				{
+					// speak the hexadecimal number of the character code
+					sprintf(hexbuf,"%x",letter);
+				}
+
 				pbuf = ph_buf;
 				for(p2 = hexbuf; *p2 != 0; p2++)
 				{
 					pbuf += strlen(pbuf);
 					*pbuf++ = phonPAUSE_VSHORT;
-					LookupLetter(tr, *p2, 0, pbuf, 1);
+					LookupLetter(translator, *p2, 0, pbuf, 1);
+					if(((pbuf[0] == 0) || (pbuf[0]==phonSWITCH)) && (*p2 >= 'a'))
+					{
+						// This language has no translation for 'a' to 'f', speak English names using base phonemes
+						EncodePhonemes(hex_letters[*p2 - 'a'], pbuf, NULL);
+					}
 				}
+				strcat(pbuf, pause_string);
 			}
 		}
 	}
 
 	len = strlen(phonemes);
-	if(tr->langopts.accents & 2)
-		sprintf(ph_buf2,"%c%s%s",0xff,ph_buf,capital);
+
+	if(tr->langopts.accents & 2)  // 'capital' before or after the word ?
+		sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,ph_buf,capital);
 	else
-		sprintf(ph_buf2,"%c%s%s",0xff,capital,ph_buf);  // the 0xff marker will be removed or replaced in SetSpellingStress()
+		sprintf(ph_buf2,"%c%s%s%s",0xff,ph_alphabet,capital,ph_buf);  // the 0xff marker will be removed or replaced in SetSpellingStress()
 	if((len + strlen(ph_buf2)) < N_WORD_PHONEMES)
 	{
 		strcpy(&phonemes[len],ph_buf2);
@@ -714,23 +997,25 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
 	int ix;
 	unsigned int c;
 	int n_stress=0;
+	int prev = 0;
 	int count;
 	unsigned char buf[N_WORD_PHONEMES];
 
 	for(ix=0; (c = phonemes[ix]) != 0; ix++)
 	{
-		if(c == phonSTRESS_P)
+		if((c == phonSTRESS_P) && (prev != phonSWITCH))
 		{
 			n_stress++;
 		}
-		buf[ix] = c;
+		buf[ix] = prev = c;
 	}
 	buf[ix] = 0;
 
 	count = 0;
+	prev = 0;
 	for(ix=0; (c = buf[ix]) != 0; ix++)
 	{
-		if((c == phonSTRESS_P) && (n_chars > 1))
+		if((c == phonSTRESS_P) && (n_chars > 1) && (prev != phonSWITCH))
 		{
 			count++;
 
@@ -749,8 +1034,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
 				}
 			}
 		}
-		else
-		if(c == 0xff)
+		else if(c == 0xff)
 		{
 			if((control < 2) || (ix==0))
 				continue;   // don't insert pauses
@@ -761,10 +1045,8 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
 				c = phonPAUSE_NOLINK;  // pause following a primary stress
 			else
 				c = phonPAUSE_VSHORT;
-//			else
-//				continue;       // remove marker
 		}
-		*phonemes++ = c;
+		*phonemes++ = prev = c;
 	}
 	if(control >= 2)
 		*phonemes++ = phonPAUSE_NOLINK;
@@ -776,6 +1058,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars)
 // Numbers
 
 static char ph_ordinal2[12];
+static char ph_ordinal2x[12];
 
 
 static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman)
@@ -798,7 +1081,7 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB
 			{
 				// ordinal number is indicated by dot after the number
 				// but not if the next word starts with an upper-case letter
-            // (c2 == 0) is for cases such as, "2.,"
+				// (c2 == 0) is for cases such as, "2.,"
 				ordinal = 2;
 				if(word_end[0] == '.')
 					word_end[0] = ' ';
@@ -809,11 +1092,11 @@ static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB
 					nextflags = 0;
 					if(IsAlpha(c2))
 					{
-						nextflags = TranslateWord(tr, &word_end[2], 0, NULL);
+						nextflags = TranslateWord(tr, &word_end[2], 0, NULL, NULL);
 					}
 
-if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))
-	ordinal = 0;   // TEST  09.02.10
+					if((tr->prev_dict_flags[0] & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG_COMMA_AFTER) || iswdigit(c2)))
+						ordinal = 0;   // TEST  09.02.10
 
 					if(nextflags & FLAG_ALT_TRANS)
 						ordinal = 0;
@@ -823,7 +1106,7 @@ if((tr->prev_dict_flags & FLAG_ALT_TRANS) && ((c2 == 0) || (wtab[0].flags & FLAG
 						if(word[-2] == '-')
 							ordinal = 0;   // eg. december 2-5. között
 
-						if(tr->prev_dict_flags & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS))
+						if(tr->prev_dict_flags[0] & (FLAG_ALT_TRANS | FLAG_ALT3_TRANS))
 							ordinal = 0x22;
 					}
 				}
@@ -872,7 +1155,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 
 	static const char *roman_numbers = "ixcmvld";
 	static int roman_values[] = {1,10,100,1000,5,50,500};
- 
+
 	acc = 0;
 	prev = 0;
 	subtract = 0x7fff;
@@ -880,9 +1163,12 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 	flags[0] = 0;
 	flags[1] = 0;
 
-	if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || isdigit(word[-2]))
+	if(((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) || IsDigit09(word[-2]))
 		return(0);    // not '2xx'
 
+	if(word[1] == ' ')
+		return(0);  // only one letter, don't speak as a Roman Number
+
 	word_start = word;
 	while((c = *word++) != ' ')
 	{
@@ -911,8 +1197,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 			subtract = prev;
 			value -= subtract;
 		}
-		else
-		if(value >= subtract)
+		else if(value >= subtract)
 			return(0);
 		else
 			acc += prev;
@@ -920,9 +1205,9 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 		n_digits++;
 	}
 
-	if(isdigit(word[0]))
+	if(IsDigit09(word[0]))
 		return(0);      // eg. 'xx2'
- 
+
 	acc += prev;
 	if(acc < tr->langopts.min_roman)
 		return(0);
@@ -940,7 +1225,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 		p = &ph_out[strlen(ph_roman)];
 	}
 
-	sprintf(number_chars,"  %d    ",acc);
+	sprintf(number_chars,"  %d %s    ",acc, tr->langopts.roman_suffix);
 
 	if(word[0] == '.')
 	{
@@ -972,7 +1257,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 		}
 	}
 
-	tr->prev_dict_flags = 0;
+	tr->prev_dict_flags[0] = 0;
+	tr->prev_dict_flags[1] = 0;
 	TranslateNumber(tr, &number_chars[2], p, flags, wtab, num_control);
 
 	if(tr->langopts.numbers & NUM_ROMAN_AFTER)
@@ -985,7 +1271,7 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab)
 static const char *M_Variant(int value)
 {//====================================
 	// returns M, or perhaps MA or MB for some cases
-	
+
 	int teens = 0;
 
 	if(((value % 100) > 10) && ((value % 100) < 20))
@@ -1074,7 +1360,7 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
 
 	if(found_value == 0)
 	{
-		if((value % 100) >= 20) 
+		if((value % 100) >= 20)
 		{
 			Lookup(tr, "_0of", ph_of);
 		}
@@ -1137,7 +1423,7 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, int thou
 }  // end f LookupThousands
 
 
-static int LookupNum2(Translator *tr, int value, const int control, char *ph_out)
+static int LookupNum2(Translator *tr, int value, int thousandplex, const int control, char *ph_out)
 {//=============================================================================
 // Lookup a 2 digit number
 // control bit 0: ordinal number
@@ -1146,6 +1432,8 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 // control bit 3: use feminine form of '2' (for thousands
 // control bit 4: speak zero tens
 // control bit 5: variant of ordinal number (lang=hu)
+//         bit 8   followed by decimal fraction
+//         bit 9: use #f form for both tens and units (lang=ml)
 
 	int found;
 	int ix;
@@ -1190,19 +1478,26 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 			// is there a special pronunciation for this 2-digit number
 			if(control & 8)
 			{
-				// is there a feminine form?
-				sprintf(string,"_%df",value);
-				found = Lookup(tr, string, ph_digits);
+				// is there a feminine or thousands-variant form?
+				sprintf(string,"_%dfx",value);
+				if((found = Lookup(tr, string, ph_digits)) == 0)
+				{
+					sprintf(string,"_%df",value);
+					found = Lookup(tr, string, ph_digits);
+				}
 			}
-			else
-			if(is_ordinal)
+			else if(is_ordinal)
 			{
 				strcpy(ph_ordinal, ph_ordinal2);
-		
+
 				if(control & 4)
 				{
 					sprintf(string,"_%d%cx",value,ord_type);  // LANG=hu, special word for 1. 2. when there are no higher digits
-					found = Lookup(tr, string, ph_digits);
+					if((found = Lookup(tr, string, ph_digits)) != 0)
+					{
+						if(ph_ordinal2x[0] != 0)
+							strcpy(ph_ordinal, ph_ordinal2x);  // alternate pronunciation (lang=an)
+					}
 				}
 				if(found == 0)
 				{
@@ -1211,7 +1506,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				}
 				found_ordinal = found;
 			}
-	
+
 			if(found == 0)
 			{
 				if(control & 2)
@@ -1227,7 +1522,10 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				else
 				{
 					// followed by hundreds or thousands etc
-					sprintf(string,"_%da",value);
+					if((tr->langopts.numbers2 & NUM2_ORDINAL_AND_THOUSANDS) && (thousandplex <= 1))
+						sprintf(string, "_%do", value);  // LANG=TA
+					else
+						sprintf(string, "_%da", value);
 					found = Lookup(tr, string, ph_digits);
 				}
 
@@ -1245,9 +1543,9 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				}
 			}
 		}
-	
+
 		// no, speak as tens+units
-	
+
 		if((control & 0x10) && (value < 10))
 		{
 			// speak leading zero
@@ -1261,9 +1559,8 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 			}
 			else
 			{
-	
-				if((is_ordinal) && 
-					((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)))
+
+				if(is_ordinal)
 				{
 					sprintf(string,"_%dX%c", tens, ord_type);
 					if(Lookup(tr, string, ph_tens) != 0)
@@ -1279,10 +1576,13 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				}
 				if(found_ordinal == 0)
 				{
-					sprintf(string,"_%dX", tens);
+					if(control & 0x200)
+						sprintf(string, "_%dXf", tens);
+					else
+						sprintf(string,"_%dX", tens);
 					Lookup(tr, string, ph_tens);
 				}
-	
+
 				if((ph_tens[0] == 0) && (tr->langopts.numbers & NUM_VIGESIMAL))
 				{
 					// tens not found,  (for example) 73 is 60+13
@@ -1290,12 +1590,12 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 					sprintf(string,"_%dX", tens & 0xfe);
 					Lookup(tr, string, ph_tens);
 				}
-	
+
 				ph_digits[0] = 0;
 				if(units > 0)
-				{	
+				{
 					found = 0;
-	
+
 					if((control & 2) && (digit_lookup[0] != 0))
 					{
 						// we have an entry for this digit (possibly together with the next word)
@@ -1328,11 +1628,13 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 								sprintf(string,"_%de",units);
 								found = Lookup(tr, string, ph_digits);
 							}
-							else
-							if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0))
+							else if(((control & 2) == 0) || ((tr->langopts.numbers & NUM_SWAP_TENS) != 0))
 							{
 								// followed by hundreds or thousands (or tens)
-								sprintf(string,"_%da",units);
+								if((tr->langopts.numbers2 & NUM2_ORDINAL_AND_THOUSANDS) && (thousandplex <= 1))
+									sprintf(string, "_%do", units);  // LANG=TA,  only for 100s, 1000s
+								else
+									sprintf(string, "_%da", units);
 								found = Lookup(tr, string, ph_digits);
 							}
 						}
@@ -1345,7 +1647,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				}
 			}
 		}
-	
+
 		if((is_ordinal) && (found_ordinal == 0) && (ph_ordinal[0] == 0))
 		{
 			if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & NUM_SWAP_TENS)))
@@ -1353,12 +1655,12 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 			if(ph_ordinal[0] == 0)
 				Lookup(tr, "_ord", ph_ordinal);
 		}
-	
+
 		if((tr->langopts.numbers & (NUM_SWAP_TENS | NUM_AND_UNITS)) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
 		{
 			Lookup(tr, "_0and", ph_and);
 
-			if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))
+			if((is_ordinal) && (tr->langopts.numbers2 & NUM2_ORDINAL_NO_AND))
 				ph_and[0] = 0;
 
 			if(tr->langopts.numbers & NUM_SWAP_TENS)
@@ -1376,7 +1678,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 				{
 					if((next_phtype = phoneme_tab[(unsigned int)(ph_digits[0])]->type) == phSTRESS)
 						next_phtype = phoneme_tab[(unsigned int)(ph_digits[1])]->type;
-		
+
 					if((phoneme_tab[(unsigned int)(ph_tens[ix])]->type == phVOWEL) && (next_phtype == phVOWEL))
 						ph_tens[ix] = 0;
 				}
@@ -1385,7 +1687,22 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out
 		}
 	}
 
-	if(tr->langopts.numbers & NUM_SINGLE_STRESS)
+	if(tr->langopts.numbers & NUM_SINGLE_STRESS_L)
+	{
+		// only one primary stress, on the first part (tens)
+		found = 0;
+		for(ix=0; ix < (signed)strlen(ph_out); ix++)
+		{
+			if(ph_out[ix] == phonSTRESS_P)
+			{
+				if(found)
+					ph_out[ix] = phonSTRESS_3;
+				else
+					found = 1;
+			}
+		}
+	}
+	else if(tr->langopts.numbers & NUM_SINGLE_STRESS)
 	{
 		// only one primary stress
 		found = 0;
@@ -1410,6 +1727,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 //  control  bit 0,  previous thousands
 //           bit 1,  ordinal number
 //           bit 5   variant form of ordinal number
+//           bit 8   followed by decimal fraction
 	int found;
 	int hundreds;
 	int tensunits;
@@ -1419,6 +1737,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 	int ordinal;
 	int tplex;
 	int say_zero_hundred=0;
+	int say_one_hundred;
 	char string[12];  // for looking up entries in **_list
 	char buf1[100];
 	char buf2[100];
@@ -1468,8 +1787,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 			// speak numbers such as 1984 as years: nineteen-eighty-four
 //			ph_100[0] = 0;   // don't say "hundred", we also need to surpess "and"
 		}
-		else
-		if(hundreds >= 10)
+		else if(hundreds >= 10)
 		{
 			ph_digits[0] = 0;
 
@@ -1488,18 +1806,21 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 				x = 0;
 				if(tr->langopts.numbers2 & (1 << tplex))
 					x = 8;   // use variant (feminine) for before thousands and millions
-				LookupNum2(tr, hundreds/10, x, ph_digits);
+				if(tr->translator_name == L('m','l'))
+					x = 0x208;
+				LookupNum2(tr, hundreds/10, thousandplex, x, ph_digits);
 			}
 
 			if(tr->langopts.numbers2 & 0x200)
-				sprintf(ph_thousands,"%s%s",ph_10T,ph_digits);  // say "thousands" before its number, not after
+				sprintf(ph_thousands,"%s%c%s%c",ph_10T,phonEND_WORD,ph_digits,phonEND_WORD);  // say "thousands" before its number, not after
 			else
-				sprintf(ph_thousands,"%s%s",ph_digits,ph_10T);
+				sprintf(ph_thousands,"%s%c%s%c",ph_digits,phonEND_WORD,ph_10T,phonEND_WORD);
 
 			hundreds %= 10;
 			if((hundreds == 0) && (say_zero_hundred == 0))
 				ph_100[0] = 0;
 			suppress_null = 1;
+			control |= 1;
 		}
 
 		ph_digits[0] = 0;
@@ -1515,7 +1836,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 
 			found = 0;
 			if((ordinal)
-				&& ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)))
+					&& ((tensunits == 0) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)))
 			{
 				// ordinal number
 				sprintf(string, "_%dCo", hundreds);
@@ -1535,28 +1856,42 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 			}
 			else
 			{
-				if((!found) && (tensunits == 0))
+				if((hundreds==1) && (tr->langopts.numbers2 & NUM2_OMIT_1_HUNDRED_ONLY) && ((control & 1)==0))
 				{
-				// is there a special pronunciation for exactly n00 ?
-					sprintf(string,"_%dC0",hundreds);
-					found = Lookup(tr, string, ph_digits);
+					// only look for special 100 if there are previous thousands
 				}
-	
-				if(!found)
+				else
 				{
-					sprintf(string,"_%dC",hundreds);
-					found = Lookup(tr, string, ph_digits);  // is there a specific pronunciation for n-hundred ?
+					if((!found) && (tensunits == 0))
+					{
+						// is there a special pronunciation for exactly n00 ?
+						sprintf(string,"_%dC0",hundreds);
+						found = Lookup(tr, string, ph_digits);
+					}
+
+					if(!found)
+					{
+						sprintf(string,"_%dC",hundreds);
+						found = Lookup(tr, string, ph_digits);  // is there a specific pronunciation for n-hundred ?
+					}
 				}
-	
+
 				if(found)
 				{
 					ph_100[0] = 0;
 				}
 				else
 				{
-					if((hundreds > 1) || ((tr->langopts.numbers & NUM_OMIT_1_HUNDRED) == 0))
+					say_one_hundred = 1;
+					if(hundreds == 1)
+					{
+						if((tr->langopts.numbers & NUM_OMIT_1_HUNDRED) != 0)
+							say_one_hundred = 0;
+					}
+
+					if(say_one_hundred != 0)
 					{
-						LookupNum2(tr, hundreds, 0, ph_digits);
+						LookupNum2(tr, hundreds, thousandplex, 0, ph_digits);
 					}
 				}
 			}
@@ -1610,7 +1945,12 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 				x = 8;   // use variant (feminine) for before thousands and millions
 		}
 
-		if(LookupNum2(tr, tensunits, x, buf2) != 0)
+		if((tr->translator_name == L('m','l')) && (thousandplex == 1))
+		{
+			x |= 0x208;  // use #f form for both tens and units
+		}
+
+		if(LookupNum2(tr, tensunits, thousandplex, x | (control & 0x100), buf2) != 0)
 		{
 			if(tr->langopts.numbers & NUM_SINGLE_AND)
 				ph_hundred_and[0] = 0;  // don't put 'and' after 'hundred' if there's 'and' between tens and units
@@ -1627,23 +1967,23 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
 		}
 	}
 
-	sprintf(ph_out,"%s%s%s",buf1,ph_hundred_and,buf2);
+	sprintf(ph_out,"%s%s%c%s",buf1,ph_hundred_and,phonEND_WORD,buf2);
 
 	return(0);
 }  // end of LookupNum3
 
 
-bool CheckThousandsGroup(char *word, int group_len)
+static bool CheckThousandsGroup(char *word, int group_len)
 {//================================================
 // Is this a group of 3 digits which looks like a thousands group?
 	int ix;
 
-	if(isdigit(word[group_len]) || isdigit(-1))
+	if(IsDigit09(word[group_len]) || IsDigit09(-1))
 		return(false);
 
 	for(ix=0; ix < group_len; ix++)
 	{
-		if(!isdigit(word[ix]))
+		if(!IsDigit09(word[ix]))
 			return(false);
 	}
 	return(true);
@@ -1668,7 +2008,6 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	int thousands_inc = 0;
 	int prev_thousands = 0;
 	int ordinal = 0;
-	int dot_ordinal;
 	int this_value;
 	int decimal_count;
 	int max_decimal_count;
@@ -1676,6 +2015,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	int suffix_ix;
 	int skipwords = 0;
 	int group_len;
+	int len;
 	char *p;
 	char string[32];  // for looking up entries in **_list
 	char buf1[100];
@@ -1694,7 +2034,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	digit_lookup = buf_digit_lookup;
 	number_control = control;
 
-	for(ix=0; isdigit(word[ix]); ix++) ;
+	for(ix=0; IsDigit09(word[ix]); ix++) ;
 	n_digits = ix;
 	value = this_value = atoi(word);
 
@@ -1703,15 +2043,14 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 		group_len = 4;
 
 	// is there a previous thousands part (as a previous "word") ?
-	if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && isdigit(word[-3]))
+	if((n_digits == group_len) && (word[-2] == tr->langopts.thousands_sep) && IsDigit09(word[-3]))
 	{
 		prev_thousands = 1;
 	}
-	else
-	if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE))
+	else if((tr->langopts.thousands_sep == ' ') || (tr->langopts.numbers & NUM_ALLOW_SPACE))
 	{
 		// thousands groups can be separated by spaces
-		if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && isdigit(word[-2]))
+		if((n_digits == 3) && !(wtab->flags & FLAG_MULTIPLE_SPACES) && IsDigit09(word[-2]))
 		{
 			prev_thousands = 1;
 		}
@@ -1728,10 +2067,12 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	{
 		// don't check for ordinal if the number has a leading zero
 		if((ordinal = CheckDotOrdinal(tr, word, &word[ix], wtab, 0)) != 0)
-			dot_ordinal = 1;
+		{
+//			dot_ordinal = 1;
+		}
 	}
 
-	if((word[ix] == '.') && !isdigit(word[ix+1]) && !isdigit(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
+	if((word[ix] == '.') && !IsDigit09(word[ix+1]) && !IsDigit09(word[ix+2]) && !(wtab[1].flags & FLAG_NOSPACE))
 	{
 		// remove dot unless followed by another number
 		word[ix] = 0;
@@ -1760,8 +2101,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 			{
 				ordinal = 2;
 			}
-			else
-			if(!isdigit(suffix[0]))   // not _#9 (tab)
+			else if(!IsDigit09(suffix[0]))  // not _#9 (tab)
 			{
 				sprintf(string,"_#%s",suffix);
 				if(Lookup(tr, string, ph_ordinal2))
@@ -1769,7 +2109,9 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 					// this is an ordinal suffix
 					ordinal = 2;
 					flags[0] |= FLAG_SKIPWORDS;
-					skipwords = 1; 
+					skipwords = 1;
+					sprintf(string,"_x#%s",suffix);
+					Lookup(tr, string, ph_ordinal2x);  // is there an alternate pronunciation?
 				}
 			}
 		}
@@ -1784,7 +2126,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 
 	if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep))
 	{
-		if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7]))
+		if((n_digits == 2) && (word[3] == ':') && IsDigit09(word[5]) && isspace(word[7]))
 		{
 			// looks like a time 02:30, omit the leading zero
 		}
@@ -1806,8 +2148,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 
 	if((tr->langopts.numbers & NUM_ALLOW_SPACE) && (word[n_digits] == ' '))
 		thousands_inc = 1;
-	else
-	if(word[n_digits] == tr->langopts.thousands_sep)
+	else if(word[n_digits] == tr->langopts.thousands_sep)
 		thousands_inc = 2;
 
 	suffix_ix = n_digits+2;
@@ -1854,14 +2195,13 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 		}
 	}
 
-	if((word[n_digits] == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
+	if((word[n_digits] == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
 	{
 		// this "word" ends with a decimal point
 		Lookup(tr, "_dpt", ph_append);
-		decimal_point = 1;
+		decimal_point = 0x100;
 	}
-	else
-	if(suppress_null == 0)
+	else if(suppress_null == 0)
 	{
 		if(thousands_inc > 0)
 		{
@@ -1879,16 +2219,16 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	}
 	else
 
-	if(speak_missing_thousands == 1)
-	{
-		// speak this thousandplex if there was no word for the previous thousandplex
-		sprintf(string,"_0M%d",thousandplex+1);
-		if(Lookup(tr, string, buf1)==0)
+		if(speak_missing_thousands == 1)
 		{
-			sprintf(string,"_0M%d",thousandplex);
-			Lookup(tr, string, ph_append);
+			// speak this thousandplex if there was no word for the previous thousandplex
+			sprintf(string,"_0M%d",thousandplex+1);
+			if(Lookup(tr, string, buf1)==0)
+			{
+				sprintf(string,"_0M%d",thousandplex);
+				Lookup(tr, string, ph_append);
+			}
 		}
-	}
 
 	if((ph_append[0] == 0) && (word[n_digits] == '.') && (thousandplex == 0))
 	{
@@ -1900,8 +2240,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 		char *p2;
 		// look for combinations of the number with the next word
 		p = word;
-		while(isdigit(p[1])) p++;  // just use the last digit
-		if(isdigit(p[-1]))
+		while(IsDigit09(p[1])) p++;  // just use the last digit
+		if(IsDigit09(p[-1]))
 		{
 			p2 = p - 1;
 			if(LookupDictList(tr, &p2, buf_digit_lookup, flags, FLAG_SUFX, wtab))  // lookup 2 digits
@@ -1913,6 +2253,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 //		if((buf_digit_lookup[0] == 0) && (*p != '0') && (dot_ordinal==0))
 		if((buf_digit_lookup[0] == 0) && (*p != '0'))
 		{
+			// LANG=hu ?
 			// not found, lookup only the last digit (?? but not if dot-ordinal has been found)
 			if(LookupDictList(tr, &p, buf_digit_lookup, flags, FLAG_SUFX, wtab))  // don't match '0', or entries with $only
 			{
@@ -1920,28 +2261,42 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 			}
 		}
 
-		if((tr->langopts.numbers2 & NUM2_PERCENT_BEFORE) && (prev_thousands == 0))
+		if(prev_thousands == 0)
 		{
-			// LANG=si, say "percent" before the number
-			p2 = word;
-			while((*p2 != ' ') && (*p2 != 0))
+			if((decimal_point == 0) && (ordinal == 0))
 			{
-				p2++;
+				// Look for special pronunciation for this number in isolation (LANG=kl)
+				sprintf(string, "_%dn", value);
+				if(Lookup(tr, string, ph_out))
+				{
+					return(1);
+				}
 			}
-			if(p2[1] == '%')
+
+			if(tr->langopts.numbers2 & NUM2_PERCENT_BEFORE)
 			{
-				Lookup(tr, "%", ph_out);
-				ph_out += strlen(ph_out);
-				p2[1] = ' ';
+				// LANG=si, say "percent" before the number
+				p2 = word;
+				while((*p2 != ' ') && (*p2 != 0))
+				{
+					p2++;
+				}
+				if(p2[1] == '%')
+				{
+					Lookup(tr, "%", ph_out);
+					ph_out += strlen(ph_out);
+					p2[1] = ' ';
+				}
 			}
 		}
+
 	}
 
-	LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal);
+	LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal | decimal_point);
 	if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200))
-		sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_append,ph_buf2,ph_buf);  // say "thousands" before its number
+		sprintf(ph_out,"%s%s%c%s%s",ph_zeros,ph_append,phonEND_WORD,ph_buf2,ph_buf);  // say "thousands" before its number
 	else
-		sprintf(ph_out,"%s%s%s%s",ph_zeros,ph_buf2,ph_buf,ph_append);
+		sprintf(ph_out,"%s%s%s%c%s",ph_zeros,ph_buf2,ph_buf,phonEND_WORD,ph_append);
 
 
 	while(decimal_point)
@@ -1949,7 +2304,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 		n_digits++;
 
 		decimal_count = 0;
-		while(isdigit(word[n_digits+decimal_count]))
+		while(IsDigit09(word[n_digits+decimal_count]))
 			decimal_count++;
 
 //		if(decimal_count > 1)
@@ -1968,7 +2323,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 					decimal_count--;
 					n_digits++;
 				}
-				if((decimal_count <= max_decimal_count) && isdigit(word[n_digits]))
+				if((decimal_count <= max_decimal_count) && IsDigit09(word[n_digits]))
 				{
 					LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
 					strcat(ph_out,buf1);
@@ -2000,27 +2355,39 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 				// Romanian decimal fractions
 				if((decimal_count <= 4) && (word[n_digits] != '0'))
 				{
-						LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
-						strcat(ph_out,buf1);
-						n_digits += decimal_count;
+					LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
+					strcat(ph_out,buf1);
+					n_digits += decimal_count;
 				}
 				break;
+
+			case NUM_DFRACTION_7:
+				// alternative form of decimal fraction digits, except the final digit
+				while(decimal_count-- > 1)
+				{
+					sprintf(string,"_%cd", word[n_digits]);
+					if(Lookup(tr, string, buf1) == 0)
+						break;
+					n_digits++;
+					strcat(ph_out, buf1);
+				}
 			}
 		}
 
-		while(isdigit(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
+		while(IsDigit09(c = word[n_digits]) && (strlen(ph_out) < (N_WORD_PHONEMES - 10)))
 		{
 			// speak any remaining decimal fraction digits individually
 			value = word[n_digits++] - '0';
-			LookupNum2(tr, value, 2, buf1);
-			strcat(ph_out,buf1);
+			LookupNum2(tr, value, 0, 2, buf1);
+			len = strlen(ph_out);
+			sprintf(&ph_out[len],"%c%s", phonEND_WORD, buf1);
 		}
 
 		// something after the decimal part ?
 		if(Lookup(tr, "_dpt2", buf1))
 			strcat(ph_out,buf1);
 
-		if((c == tr->langopts.decimal_sep) && isdigit(word[n_digits+1]))
+		if((c == tr->langopts.decimal_sep) && IsDigit09(word[n_digits+1]))
 		{
 			Lookup(tr, "_dpt", buf1);
 			strcat(ph_out,buf1);
@@ -2033,14 +2400,15 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
 	if((ph_out[0] != 0) && (ph_out[0] != phonSWITCH))
 	{
 		int next_char;
-		char *p;
+		// char *p; djmw 
 		p = &word[n_digits+1];
 
 		p += utf8_in(&next_char,p);
 		if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
 			utf8_in(&next_char,p);
 
-		if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
+		if(!iswalpha2(next_char) && (thousands_exact==0))
+//		if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
 			strcat(ph_out,str_pause);  // don't add pause for 100s,  6th, etc.
 	}
 
diff --git a/external/espeak/phoneme.h b/external/espeak/phoneme.h
old mode 100644
new mode 100755
index cf8f98c..9a2e139
--- a/external/espeak/phoneme.h
+++ b/external/espeak/phoneme.h
@@ -49,7 +49,7 @@
 #define phSINGLE_INSTN  0x1000    // this phoneme has a single instruction program, with an implicit Return
 #define phBRKAFTER 0x4000  // [*] add a post-pause
 
-#define phNONSYLLABIC  0x100000   // don't count this vowel as a syllable when finding the stress position 
+#define phNONSYLLABIC  0x100000   // don't count this vowel as a syllable when finding the stress position
 #define phLONG         0x200000
 #define phLENGTHENSTOP 0x400000  // make the pre-pause slightly longer
 #define phRHOTIC       0x800000  // bit 23
@@ -113,7 +113,7 @@ typedef struct {
 	unsigned char  end_type;
 	unsigned char  std_length;   // for vowels, in mS/2;  for phSTRESS phonemes, this is the stress/tone type
 	unsigned char  length_mod;   // a length_mod group number, used to access length_mod_tab
-	
+
 } PHONEME_TAB;
 
 
@@ -155,13 +155,13 @@ typedef struct {
 
 
 
-#define PH(c1,c2)  (c2<<8)+c1          // combine two characters into an integer for phoneme name 
+#define PH(c1,c2)  (c2<<8)+c1          // combine two characters into an integer for phoneme name
 #define PH3(c1,c2,c3) (c3<<16)+(c2<<8)+c1
 #define PhonemeCode2(c1,c2)  PhonemeCode((c2<<8)+c1)
 int LookupPhonemeString(const char *string);
 int PhonemeCode(unsigned int mnem);
 
-const char *EncodePhonemes(const char *p, char *outptr, unsigned char *bad_phoneme);
+const char *EncodePhonemes(const char *p, char *outptr, int *bad_phoneme);
 void DecodePhonemes(const char *inptr, char *outptr);
 
 extern const char *WordToString(unsigned int word);
diff --git a/external/espeak/phonemelist.cpp b/external/espeak/phonemelist.cpp
old mode 100644
new mode 100755
index 0449a11..07d6fd3
--- a/external/espeak/phonemelist.cpp
+++ b/external/espeak/phonemelist.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -47,7 +47,6 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
 	int replace_flags;
 	int n_plist_out = 0;
 	int word_end;
-	int switched_language = 0;
 	PHONEME_LIST2 *plist2;
 	PHONEME_TAB *next=NULL;
 
@@ -55,11 +54,8 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
 	{
 		plist2 = &ph_list2[ix];
 
-		if(plist2->phcode == phonSWITCH)
-			switched_language ^= 1;
-
 		// don't do any substitution if the language has been temporarily changed
-		if(switched_language == 0)
+		if(!(plist2->synthflags & SFLAG_SWITCHED_LANG))
 		{
 			if(ix < (n_ph_list2 -1))
 				next = phoneme_tab[ph_list2[ix+1].phcode];
@@ -81,6 +77,9 @@ static int SubstitutePhonemes(Translator *tr, PHONEME_LIST *plist_out)
 					if((replace_flags & 2) && ((plist2->stresslevel & 0x7) > 3))
 						continue;     // this replacement doesn't occur in stressed syllables
 
+					if((replace_flags & 4) && (plist2->sourceix == 0))
+						continue;     // this replacement only occurs at the start of a word
+
 					// substitute the replacement phoneme
 					plist2->phcode = replace_phonemes[k].new_ph;
 					if((plist2->stresslevel > 1) && (phoneme_tab[plist2->phcode]->phflags & phUNSTRESSED))
@@ -117,12 +116,16 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 	PHONEME_TAB *next, *next2;
 	int unstress_count = 0;
 	int word_stress = 0;
-	int switched_language = 0;
+	int current_phoneme_tab;
 	int max_stress;
 	int voicing;
 	int regression;
 	int end_sourceix;
 	int alternative;
+	int delete_count;
+	int word_start;
+	int inserted;
+	int deleted;
 	PHONEME_DATA phdata;
 
 	int n_ph_list3;
@@ -133,7 +136,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 	PHONEME_LIST2 *plist2;
 	WORD_PH_DATA worddata;
 
-    memset(&worddata, 0, sizeof(worddata));
+	memset(&worddata, 0, sizeof(worddata));
 	plist2 = ph_list2;
 	phlist = phoneme_list;
 	end_sourceix = plist2[n_ph_list2-1].sourceix;
@@ -142,7 +145,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 	max_stress = 0;
 	for(j = n_ph_list2-3; j>=0; j--)
 	{
-		// start with the last phoneme (before the terminating pauses) and move forwards
+		// start with the last phoneme (before the terminating pauses) and move backwards
 		if((plist2[j].stresslevel & 0x7f) > max_stress)
 			max_stress = plist2[j].stresslevel & 0x7f;
 		if(plist2[j].sourceix != 0)
@@ -166,6 +169,42 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 		}
 	}
 
+	// look for switch of phoneme tables
+	delete_count = 0;
+	current_phoneme_tab = tr->phoneme_tab_ix;
+	for(j = 0; j < n_ph_list2; j++)
+	{
+		if(current_phoneme_tab != tr->phoneme_tab_ix)
+		{
+			plist2[j].synthflags |= SFLAG_SWITCHED_LANG;
+		}
+
+		if(delete_count > 0)
+		{
+			memcpy(&plist2[j-delete_count], &plist2[j], sizeof(plist2[0]));
+		}
+
+		if(plist2[j].phcode == phonSWITCH)
+		{
+			if((!(plist2[j].synthflags & SFLAG_EMBEDDED)) && (
+				(plist2[j].tone_ph == current_phoneme_tab) ||
+			    (plist2[j+1].phcode == phonSWITCH) ||
+				((plist2[j+1].phcode == phonPAUSE) && (plist2[j+2].phcode == phonSWITCH))
+				))
+			{
+				// delete this phonSWITCH if it's switching to the current phoneme table, or
+				// delete this phonSWITCH if its followed by another phonSWITCH
+				delete_count++;
+			}
+			else
+			{
+				current_phoneme_tab = plist2[j].tone_ph;
+			}
+		}
+
+	}
+	n_ph_list2 -= delete_count;
+
 	if((regression = tr->langopts.param[LOPT_REGRESSIVE_VOICING]) != 0)
 	{
 		// set consonant clusters to all voiced or all unvoiced
@@ -180,10 +219,14 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 			if(ph == NULL)
 				continue;
 
-			if(ph->code == phonSWITCH)
-				switched_language ^= 1;
-			if(switched_language)
+			if(plist2[j].synthflags & SFLAG_SWITCHED_LANG)
+			{
+				stop_propagation = 0;
+				voicing = 0;
+				if(regression & 0x100)
+					voicing = 1;   // word-end devoicing
 				continue;
+			}
 
 			type = ph->type;
 
@@ -204,21 +247,18 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 				{
 					voicing = 1;
 				}
-				else
-				if((voicing==2) && (ph->end_type != 0))  // use end_type field for voicing_switch for consonants
+				else if((voicing==2) && (ph->end_type != 0)) // use end_type field for voicing_switch for consonants
 				{
 					plist2[j].phcode = ph->end_type;  // change to voiced equivalent
 				}
 			}
-			else
-			if((type==phVSTOP) || type==(phVFRICATIVE))
+			else if((type==phVSTOP) || type==(phVFRICATIVE))
 			{
 				if((voicing==0) && (regression & 0xf))
 				{
 					voicing = 2;
 				}
-				else
-				if((voicing==1) && (ph->end_type != 0))
+				else if((voicing==1) && (ph->end_type != 0))
 				{
 					plist2[j].phcode = ph->end_type;  // change to unvoiced equivalent
 				}
@@ -297,35 +337,52 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 	// transfer all the phonemes of the clause into phoneme_list
 	ph = phoneme_tab[phonPAUSE];
 	ph_list3[0].ph = ph;
-
-	switched_language = 0;
+	word_start = 1;
 
 	for(j=0; insert_ph || ((j < n_ph_list3) && (ix < N_PHONEME_LIST-3)); j++)
 	{
 		plist3 = &ph_list3[j];
 
+		inserted = 0;
+		deleted = 0;
 		if(insert_ph != 0)
 		{
 			// we have a (linking) phoneme which we need to insert here
 			next = phoneme_tab[plist3->phcode];      // this phoneme, i.e. after the insert
 
 			// re-use the previous entry for the inserted phoneme.
-			// That's OK because we don't look backwards from plist3   *** but CountVowelPosiion() and isAfterStress does !!!
+			// That's OK because we don't look backwards from plist3   *** but CountVowelPosition() and isAfterStress does !!!
 			j--;
 			plist3 = plist3_inserted = &ph_list3[j];
 			if(j > 0)
 			{
-				memcpy(&plist3[-1], &plist3[0], sizeof(*plist3));
+				// move all previous phonemes in the word back one place
+				int k;
+				if(word_start > 0)
+				{
+					k = word_start;
+					word_start--;
+				}
+				else
+				{
+					k = 2;   // No more space, don't loose the start of word mark at ph_list2[word_start]
+				}
+				for(; k<=j; k++)
+					memcpy(&ph_list3[k-1], &ph_list3[k], sizeof(*plist3));
 			}
 			memset(&plist3[0], 0, sizeof(*plist3));
 			plist3->phcode = insert_ph;
 			ph = phoneme_tab[insert_ph];
 			plist3->ph = ph;
 			insert_ph = 0;
+			inserted = 1;    // don't insert the same phoneme repeatedly
 		}
 		else
 		{
 			// otherwise get the next phoneme from the list
+			if(plist3->sourceix != 0)
+				word_start = j;
+
 			ph = phoneme_tab[plist3->phcode];
 			plist3[0].ph = ph;
 
@@ -333,7 +390,6 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 			{
 				// change phoneme table
 				SelectPhonemeTable(plist3->tone_ph);
-				switched_language ^= SFLAG_SWITCHED_LANG;
 			}
 			next = phoneme_tab[plist3[1].phcode];      // the phoneme after this one
 			plist3[1].ph = next;
@@ -343,7 +399,15 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 
 		InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata);
 
-		if((alternative = phdata.pd_param[pd_INSERTPHONEME]) > 0)
+		if((alternative = phdata.pd_param[pd_CHANGE_NEXTPHONEME]) > 0)
+		{
+			ph_list3[j+1].ph = phoneme_tab[alternative];
+			ph_list3[j+1].phcode = alternative;
+			ph_list3[j+1].type = phoneme_tab[alternative]->type;
+			next = phoneme_tab[alternative];
+		}
+
+		if(((alternative = phdata.pd_param[pd_INSERTPHONEME]) > 0) && (inserted == 0))
 		{
 			// PROBLEM: if we insert a phoneme before a vowel then we loose the stress.
 			PHONEME_TAB *ph2;
@@ -377,23 +441,27 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 			plist3->phcode = alternative;
 
 			if(alternative == 1)
-				continue;    // NULL phoneme, discard
-
-			if(ph->type == phVOWEL)
 			{
-				plist3->synthflags |= SFLAG_SYLLABLE;
-				if(ph2->type != phVOWEL)
-					plist3->stresslevel = 0;   // change from non-vowel to vowel, make sure it's unstressed
+				deleted = 1;   // NULL phoneme, discard
 			}
 			else
-				plist3->synthflags &= ~SFLAG_SYLLABLE;
+			{
+				if(ph->type == phVOWEL)
+				{
+					plist3->synthflags |= SFLAG_SYLLABLE;
+					if(ph2->type != phVOWEL)
+						plist3->stresslevel = 0;   // change from non-vowel to vowel, make sure it's unstressed
+				}
+				else
+					plist3->synthflags &= ~SFLAG_SYLLABLE;
 
-			// re-interpret the changed phoneme
-			// But it doesn't obey a second ChangePhoneme()
-			InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata);
+				// re-interpret the changed phoneme
+				// But it doesn't obey a second ChangePhoneme()
+				InterpretPhoneme(tr, 0x100, plist3, &phdata, &worddata);
+			}
 		}
 
-		if(ph->type == phVOWEL)
+		if((ph->type == phVOWEL) && (deleted == 0))
 		{
 			PHONEME_LIST *p;
 
@@ -428,7 +496,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 					{
 						// in a sequence of unstressed syllables, reduce alternate syllables to 'diminished'
 						// stress.  But not for the last phoneme of a stressed word
-						if((tr->langopts.stress_flags & 0x2) || ((word_stress > 3) && ((plist3+1)->sourceix!=0)))
+						if((tr->langopts.stress_flags & S_NO_DIM) || ((word_stress > 3) && ((plist3+1)->sourceix!=0)))
 						{
 							// An unstressed final vowel of a stressed word
 							unstress_count=1;    // try again for next syllable
@@ -449,9 +517,10 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 		if((plist3+1)->synthflags & SFLAG_LENGTHEN)
 		{
 			static char types_double[] = {phFRICATIVE,phVFRICATIVE,phNASAL,phLIQUID,0};
-			if(strchr(types_double,next->type))
+			if((j > 0) && (strchr(types_double,next->type)))
 			{
 				// lengthen this consonant by doubling it
+				// BUT, can't insert a phoneme at position plist3[0] because it crashes PrevPh()
 				insert_ph = next->code;
 				(plist3+1)->synthflags ^= SFLAG_LENGTHEN;
 			}
@@ -498,7 +567,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 				}
 			}
 
-			if(plist3 != plist3_inserted)
+			if((plist3 != plist3_inserted) && (ix > 0))
 			{
 				if((x = (tr->langopts.word_gap & 0x7)) != 0)
 				{
@@ -531,67 +600,70 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
 			// not yet implemented
 		}
 
-		phlist[ix].ph = ph;
-		phlist[ix].type = ph->type;
-		phlist[ix].env = PITCHfall;          // default, can be changed in the "intonation" module
-		phlist[ix].synthflags = plist3->synthflags | switched_language;
-		phlist[ix].stresslevel = plist3->stresslevel & 0xf;
-		phlist[ix].wordstress = plist3->wordstress;
-		phlist[ix].tone_ph = plist3->tone_ph;
-		phlist[ix].sourceix = 0;
-		phlist[ix].phcode = ph->code;
-
-		if(plist3->sourceix != 0)
+		if(deleted == 0)
 		{
-			phlist[ix].sourceix = plist3->sourceix;
-			phlist[ix].newword = 1;     // this phoneme is the start of a word
+			phlist[ix].ph = ph;
+			phlist[ix].type = ph->type;
+			phlist[ix].env = PITCHfall;          // default, can be changed in the "intonation" module
+			phlist[ix].synthflags = plist3->synthflags;
+			phlist[ix].stresslevel = plist3->stresslevel & 0xf;
+			phlist[ix].wordstress = plist3->wordstress;
+			phlist[ix].tone_ph = plist3->tone_ph;
+			phlist[ix].sourceix = 0;
+			phlist[ix].phcode = ph->code;
+
+			if(plist3->sourceix != 0)
+			{
+				phlist[ix].sourceix = plist3->sourceix;
+				phlist[ix].newword = 1;     // this phoneme is the start of a word
 
-			if(start_sentence)
+				if(start_sentence)
+				{
+					phlist[ix].newword = 5;  // start of sentence + start of word
+					start_sentence = 0;
+				}
+			}
+			else
 			{
-				phlist[ix].newword = 5;  // start of sentence + start of word
-				start_sentence = 0;
+				phlist[ix].newword = 0;
 			}
-		}
-		else
-		{
-			phlist[ix].newword = 0;
-		}
 
-//		phlist[ix].length = ph->std_length;
-		phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2;
-		if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0))
-		{
-			phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT];
-			phlist[ix].length = option_wordgap*14;   // 10mS per unit at the default speed
-		}
+	//		phlist[ix].length = ph->std_length;
+			phlist[ix].length = phdata.pd_param[i_SET_LENGTH]*2;
+			if((ph->code == phonPAUSE_LONG) && (option_wordgap > 0) && (plist3[1].sourceix != 0))
+			{
+				phlist[ix].ph = phoneme_tab[phonPAUSE_SHORT];
+				phlist[ix].length = option_wordgap*14;   // 10mS per unit at the default speed
+			}
 
-		if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE)
-		{
-			phlist[ix].length = 128;  // length_mod
-			phlist[ix].env = PITCHfall;
-		}
+			if(ph->type==phVOWEL || ph->type==phLIQUID || ph->type==phNASAL || ph->type==phVSTOP || ph->type==phVFRICATIVE || (ph->phflags & phPREVOICE))
+			{
+				phlist[ix].length = 128;  // length_mod
+				phlist[ix].env = PITCHfall;
+			}
 
-		phlist[ix].prepause = 0;
-		phlist[ix].amp = 20;          // default, will be changed later
-		phlist[ix].pitch1 = 255;
-		phlist[ix].pitch2 = 255;
-		ix++;
+			phlist[ix].prepause = 0;
+			phlist[ix].amp = 20;          // default, will be changed later
+			phlist[ix].pitch1 = 255;
+			phlist[ix].pitch2 = 255;
+			ix++;
+		}
 	}
 	phlist[ix].newword = 2;     // end of clause
 
 	phlist[ix].phcode = phonPAUSE;
-   phlist[ix].type = phPAUSE;  // terminate with 2 Pause phonemes
+	phlist[ix].type = phPAUSE;  // terminate with 2 Pause phonemes
 	phlist[ix].length = post_pause;  // length of the pause, depends on the punctuation
 	phlist[ix].sourceix = end_sourceix;
 	phlist[ix].synthflags = 0;
-   phlist[ix++].ph = phoneme_tab[phonPAUSE];
+	phlist[ix++].ph = phoneme_tab[phonPAUSE];
 
 	phlist[ix].phcode = phonPAUSE;
-   phlist[ix].type = phPAUSE;
+	phlist[ix].type = phPAUSE;
 	phlist[ix].length = 0;
 	phlist[ix].sourceix=0;
 	phlist[ix].synthflags = 0;
-   phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];
+	phlist[ix++].ph = phoneme_tab[phonPAUSE_SHORT];
 
 	n_phoneme_list = ix;
 }  // end of MakePhonemeList
diff --git a/external/espeak/readclause.cpp b/external/espeak/readclause.cpp
old mode 100644
new mode 100755
index c1be8a0..376aee8
--- a/external/espeak/readclause.cpp
+++ b/external/espeak/readclause.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -58,7 +58,7 @@ static const char *ungot_word = NULL;
 static int end_of_input;
 
 static int ignore_text=0;   // set during <sub> ... </sub>  to ignore text which has been replaced by an alias
-static int audio_text=0;    // set during <audio> ... </audio> 
+static int audio_text=0;    // set during <audio> ... </audio>
 static int clear_skipping_text = 0;  // next clause should clear the skipping_text flag
 int count_characters = 0;
 static int sayas_mode;
@@ -71,6 +71,8 @@ static int ssml_ignore_l_angle = 0;
 
 // punctuations symbols that can end a clause
 static const unsigned short punct_chars[] = {',','.','?','!',':',';',
+  0x00a1,  // inverted exclamation
+  0x00bf,  // inverted question
   0x2013,  // en-dash
   0x2014,  // em-dash
   0x2026,  // elipsis
@@ -85,9 +87,12 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';',
   0x055e,  // Armenian question
   0x055b,  // Armenian emphasis mark
 
-  0x0b1b,  // Arabic ;
+  0x060c,  // Arabic ,
+  0x061b,  // Arabic ;
   0x061f,  // Arabic ?
+  0x06d4,  // Arabic .
 
+  0x0df4,  // Singhalese Kunddaliya
   0x0f0d,  // Tibet Shad
   0x0f0e,
 
@@ -109,7 +114,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';',
   0xff1a,  // fullwidth colon
   0xff1b,  // fullwidth semicolon
   0xff1f,  // fullwidth question mark
-  
+
   0};
 
 
@@ -117,6 +122,8 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';',
 // bits 0-7 pause x 10mS, bits 12-14 intonation type, bit 15 don't need following space or bracket
 static const unsigned int punct_attributes [] = { 0,
   CLAUSE_COMMA, CLAUSE_PERIOD, CLAUSE_QUESTION, CLAUSE_EXCLAMATION, CLAUSE_COLON, CLAUSE_SEMICOLON,
+  CLAUSE_SEMICOLON | 0x8000,      // inverted exclamation
+  CLAUSE_SEMICOLON | 0x8000,      // inverted question
   CLAUSE_SEMICOLON,  // en-dash
   CLAUSE_SEMICOLON,  // em-dash
   CLAUSE_SEMICOLON | PUNCT_SAY_NAME | 0x8000,      // elipsis
@@ -131,9 +138,12 @@ static const unsigned int punct_attributes [] = { 0,
   CLAUSE_QUESTION | PUNCT_IN_WORD,  // Armenian question
   CLAUSE_PERIOD | PUNCT_IN_WORD,  // Armenian emphasis mark
 
+  CLAUSE_COMMA,      // Arabic ,
   CLAUSE_SEMICOLON,  // Arabic ;
   CLAUSE_QUESTION,   // Arabic question mark
+  CLAUSE_PERIOD,     // Arabic full stop
 
+  CLAUSE_PERIOD+0x8000,     // Singhalese period
   CLAUSE_PERIOD+0x8000,     // Tibet period
   CLAUSE_PARAGRAPH,
 
@@ -205,50 +215,91 @@ const int param_defaults[N_SPEECH_PARAM] = {
    0,     // voice type
 };
 
-#ifdef NEED_WCHAR_FUNCTIONS
 
-// additional Latin characters beyond the Latin1 character set
-#define MAX_WALPHA  0x233
-// indexed by character - 0x100
-// 0=not alphabetic, 0xff=lower case, 0xfe=special case
+// additional Latin characters beyond the ascii character set
+#define MAX_WALPHA  0x24f
+// indexed by character - 0x80
+// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower
 //   other=value to add to upper case to convert to lower case
-static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 100
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 110
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 120
-   0xfe,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,   1,  // 130
-   0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,  // 140
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 150
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 160
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,  // 170
-   0xff, 210,   1,0xff,   1,0xff, 206,   1,0xff, 205, 205,   1,0xff,0xff,  79, 202,  // 180
-    203,   1,0xff, 205, 207,0xff, 211, 209,   1,0xff,0xff,0xff, 211, 213,0xff, 214,  // 190
-      1,0xff,   1,0xff,   1,0xff, 218,   1,0xff, 218,0xff,0xff,   1,0xff, 218,   1,  // 1a0
-   0xff, 217, 217,   1,0xff,   1,0xff, 219,   1,0xff,0xff,0xff,   1,0xff,0xff,0xff,  // 1b0
-   0xff,0xff,0xff,0xff,   2,   1,0xff,   2,   1,0xff,   2,   1,0xff,   1,0xff,   1,  // 1c0
-   0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,  // 1d0
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 1e0
-   0xff,   2,   1,0xff,   1,0xff,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 1f0
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 200
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 210
-   0xff,   0,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 220
-      1,0xff,   1,0xff };    // 230
+static unsigned char walpha_tab[MAX_WALPHA-0x7f] = {
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, // 080
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, // 090
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 0xfe,    0,    0,    0,    0,    0, // 0a0
+    0,    0,    0,    0,    0, 0xff,    0,    0,    0,    0, 0xfe,    0,    0,    0,    0,    0, // 0b0
+   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32, // 0c0
+   32,   32,   32,   32,   32,   32,   32,    0,   32,   32,   32,   32,   32,   32,   32, 0xff, // 0d0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,    0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 100
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 110
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 120
+ 0xfd, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff,    1, // 130
+ 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff, // 140
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 150
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 160
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfd,    1, 0xff,    1, 0xff,    1, 0xff, 0xff, // 170
+ 0xff,  210,    1, 0xff,    1, 0xff,  206,    1, 0xff,  205,  205,    1, 0xff, 0xfe,   79,  202, // 180
+  203,    1, 0xff,  205,  207, 0xff,  211,  209,    1, 0xff, 0xff, 0xfe,  211,  213, 0xff,  214, // 190
+    1, 0xff,    1, 0xff,    1, 0xff,  218,    1, 0xff,  218, 0xfe, 0xfe,    1, 0xff,  218,    1, // 1a0
+ 0xff,  217,  217,    1, 0xff,    1, 0xff,  219,    1, 0xff, 0xfe, 0xfe,    1, 0xff, 0xfe, 0xff, // 1b0
+ 0xfe, 0xfe, 0xfe, 0xfe,    2, 0xff, 0xff,    2, 0xff, 0xff,    2, 0xff, 0xff,    1, 0xff,    1, // 1c0
+ 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xff,    1, 0xff, // 1d0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 1e0
+ 0xfe,    2, 0xff, 0xff,    1, 0xff, 0xfd, 0xfd,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 1f0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 200
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 210
+ 0xfd, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 220
+    1, 0xff,    1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd,    1, 0xff, 0xfd, 0xfd, 0xfe, // 230
+ 0xfe,    1, 0xff, 0xfd,   69,   71,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff}; // 240
+
+static const short wchar_tolower[] = {
+	0x130, 0x069,
+	0x178, 0x0ff,
+	0x1f6, 0x195,
+	0x1f7, 0x1bf,
+	0x220, 0x19e,
+	0x23a, 0x2c65,
+	0x23d, 0x19a,
+	0x23e, 0x2c66,
+	0x243, 0x180,
+	0,0 };
+
+static const short wchar_toupper[] = {
+	0x0b5, 0x39c,
+	0x0df, 0x0df,
+	0x0ff, 0x178,
+	0x131, 0x049,
+	0x17f, 0x053,
+	0x180, 0x243,
+	0x195, 0x1f6,
+	0x19a, 0x23d,
+	0x19e, 0x220,
+	0x1bf, 0x1f7,
+	0x1c6, 0x1c4,
+	0x1c9, 0x1c7,
+	0x1cc, 0x1ca,
+	0x1dd, 0x18e,
+	0x1f3, 0x1f1,
+	0,0 };
+
+
+#ifdef NEED_WCHAR_FUNCTIONS
 
 // use ctype.h functions for Latin1 (character < 0x100)
 int iswalpha(int c)
 {
-	if(c < 0x100)
+	if(c < 0x80)
 		return(isalpha(c));
 	if((c > 0x3040) && (c <= 0xa700))
 		return(1);  // japanese, chinese characters
 	if(c > MAX_WALPHA)
 		return(0);
-	return(walpha_tab[c-0x100]);
+	return(walpha_tab[c-0x80]);
 }
 
 int iswdigit(int c)
 {
-	if(c < 0x100)
+	if(c < 0x80)
 		return(isdigit(c));
 	return(0);
 }
@@ -263,50 +314,67 @@ int iswalnum(int c)
 int towlower(int c)
 {
 	int x;
-	if(c < 0x100)
+	int ix;
+
+	if(c < 0x80)
 		return(tolower(c));
-	if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
-		return(c);  // already lower case
-	if(x == 0xfe)
+
+	if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe))
+		return(c);
+
+	if(x == 0xfd)
 	{
-		// special cases
-		if(c == 0x130)   // uppercase i-dot
-			return('i');
+		// special cases, lookup translation table
+		for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+		{
+			if(wchar_tolower[ix] == c)
+				return(wchar_tolower[ix+1]);
+		}
 	}
 	return(c + x);  // convert to lower case
 }
 
 int towupper(int c)
 {
-	// check whether the previous character code is the upper-case equivalent of this character
-	if(tolower(c-1) == c)
-		return(c-1);  // yes, use it
+	int ix;
+	// check whether a previous character code is the upper-case equivalent of this character
+	if(towlower(c-32) == c)
+		return(c-32); // yes, use it
+	if(towlower(c-1) == c)
+		return(c-1);
+	for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+	{
+		if(wchar_toupper[ix] == c)
+			return(wchar_toupper[ix+1]);
+	}
 	return(c);  // no
 }
 
 int iswupper(int c)
 {
 	int x;
-	if(c < 0x100)
+	if(c < 0x80)
 		return(isupper(c));
-	if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
+	if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff))
 		return(0);
 	return(1);
 }
 
 int iswlower(int c)
 {
-	if(c < 0x100)
+	if(c < 0x80)
 		return(islower(c));
-	if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
+	if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff))
 		return(0);
 	return(1);
 }
 
 int iswspace(int c)
 {
-	if(c < 0x100)
+	if(c < 0x80)
 		return(isspace(c));
+	if(c == 0xa0)
+		return(1);
 	return(0);
 }
 
@@ -358,23 +426,96 @@ float wcstod(const wchar_t *str, wchar_t **tailptr)
 }
 #endif
 
+
+// use internal data for iswalpha up to U+024F
+// iswalpha() on Windows is unreliable  (U+AA, U+BA).
+int iswalpha2(int c)
+{
+	if(c < 0x80)
+		return(isalpha(c));
+	if((c > 0x3040) && (c <= 0xa700))
+		return(1);  // japanese, chinese characters
+	if(c > MAX_WALPHA)
+		return(iswalpha(c));
+	return(walpha_tab[c-0x80]);
+}
+
+int iswlower2(int c)
+{
+	if(c < 0x80)
+		return(islower(c));
+	if(c > MAX_WALPHA)
+		return(iswlower(c));
+	if(walpha_tab[c-0x80] == 0xff)
+		return(1);
+	return(0);
+}
+
+int iswupper2(int c)
+{
+	int x;
+	if(c < 0x80)
+		return(isupper(c));
+	if(c > MAX_WALPHA)
+		return(iswupper(c));
+	if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe))
+		return(1);
+	return(0);
+}
+
 int towlower2(unsigned int c)
 {
+	int x;
+	int ix;
+
 	// check for non-standard upper to lower case conversions
 	if(c == 'I')
 	{
-		if(translator->translator_name == L('t','r'))
+		if(translator->langopts.dotless_i)
 		{
 			c = 0x131;   // I -> ı
 		}
 	}
-#ifdef __WIN32__
-	if(c == 0x130)   // uppercase i-dot
-		return('i');
-#endif
-	return(towlower(c));
+
+	if(c < 0x80)
+		return(tolower(c));
+
+	if(c > MAX_WALPHA)
+		return(towlower(c));
+
+	if((x = walpha_tab[c-0x80]) >= 0xfe)
+		return(c);   // this is not an upper case letter
+
+	if(x == 0xfd)
+	{
+		// special cases, lookup translation table
+		for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+		{
+			if(wchar_tolower[ix] == (int)c)
+				return(wchar_tolower[ix+1]);
+		}
+	}
+	return(c + x);  // convert to lower case
 }
 
+int towupper2(unsigned int c)
+{
+	int ix;
+	if(c > MAX_WALPHA)
+		return(towupper(c));
+
+	// check whether a previous character code is the upper-case equivalent of this character
+	if(towlower2(c-32) == (int)c)
+		return(c-32); // yes, use it
+	if(towlower2(c-1) == (int)c)
+		return(c-1);
+	for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+	{
+		if(wchar_toupper[ix] == (int)c)
+			return(wchar_toupper[ix+1]);
+	}
+	return(c);  // no
+}
 
 static int IsRomanU(unsigned int c)
 {//================================
@@ -446,7 +587,7 @@ static int GetC_get(void)
 			end_of_input = 1;
 			return(0);
 		}
-	
+
 		if(!end_of_input)
 		{
 			if(option_multibyte == espeakCHARS_16BIT)
@@ -561,8 +702,8 @@ static void UngetC(int c)
 }
 
 
-static const char *WordToString2(unsigned int word)
-{//================================================
+const char *WordToString2(unsigned int word)
+{//============================================
 // Convert a language mnemonic word into a string
 	int  ix;
 	static char buf[5];
@@ -641,7 +782,7 @@ static const char *LookupCharName(Translator *tr, int c, int only)
 		}
 	}
 
-	if((only==0) && (phonemes[0] == 0) && (tr->translator_name != L('e','n')))
+	if((only==0) && ((phonemes[0] == 0) || (phonemes[0] == phonSWITCH)) && (tr->translator_name != L('e','n')))
 	{
 		// not found, try English
 		SetTranslator2("en");
@@ -734,7 +875,6 @@ static int LoadSoundFile(const char *fname, int index)
 	{
 		int ix;
 		int fd_temp;
-		const char *resample;
 		int header[3];
 		char command[sizeof(fname2)+sizeof(fname2)+40];
 
@@ -748,17 +888,11 @@ static int LoadSoundFile(const char *fname, int index)
 			fclose(f);
 			f = NULL;
 
-			if(header[2] == samplerate)
-				resample = "";
-			else
-				resample = "polyphase";
-
 			strcpy(fname_temp,"/tmp/espeakXXXXXX");
 			if((fd_temp = mkstemp(fname_temp)) >= 0)
 			{
 				close(fd_temp);
-//			sprintf(fname_temp,"%s.wav",tmpnam(NULL));
-				sprintf(command,"sox \"%s\" -r %d -w -s -c1 %s %s\n", fname, samplerate, fname_temp, resample);
+				sprintf(command,"sox \"%s\" -r %d -c1 -t wav %s\n", fname, samplerate, fname_temp);
 				if(system(command) == 0)
 				{
 					fname = fname_temp;
@@ -847,14 +981,13 @@ static int LoadSoundFile2(const char *fname)
 
 
 static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output, int *bufix, int end_clause)
-{//==========================================================================================================
+{//=============================================================================================================
 	// announce punctuation names
 	// c1:  the punctuation character
 	// c2:  the following character
 
 	int punct_count;
-	const char *punctname;
-	int found = 0;
+	const char *punctname = NULL;
 	int soundicon;
 	int attributes;
 	int short_pause;
@@ -863,6 +996,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
 	int bufix1;
 	char buf[200];
 	char buf2[80];
+	char ph_buf[30];
 
 	c2 = *c2_ptr;
 	buf[0] = 0;
@@ -872,12 +1006,24 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
 		// add an embedded command to play the soundicon
 		sprintf(buf,"\001%dI ",soundicon);
 		UngetC(c2);
-		found = 1;
 	}
 	else
-	if((punctname = LookupCharName(tr, c1, 0)) != NULL)
 	{
-		found = 1;
+		if((c1 == '.') && (end_clause) && (c2 != '.'))
+		{
+			if(LookupSpecial(tr, "_.p", ph_buf))
+			{
+				punctname = ph_buf;  // use word for 'period' instead of 'dot'
+			}
+		}
+		if(punctname == NULL)
+		{
+			punctname = LookupCharName(tr, c1, 0);
+		}
+
+		if(punctname == NULL)
+			return(-1);
+
 		if((*bufix==0) || (end_clause ==0) || (tr->langopts.param[LOPT_ANNOUNCE_PUNCT] & 2))
 		{
 			punct_count=1;
@@ -937,9 +1083,6 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
 		}
 	}
 
-	if(found == 0)
-		return(-1);
-
 	bufix1 = *bufix;
 	len = strlen(buf);
 	strcpy(&output[*bufix],buf);
@@ -966,7 +1109,7 @@ static int AnnouncePunctuation(Translator *tr, int c1, int *c2_ptr, char *output
 
 	if(attributes & CLAUSE_BIT_SENTENCE)
 		return(attributes);
-	
+
 	return(short_pause);
 }  //  end of AnnouncePunctuation
 
@@ -1083,7 +1226,7 @@ static const char *VoiceFromStack()
 				}
 				p += (strlen(p) + 1);
 			}
-			
+
 			if(voice_name_specified == 0)
 				voice_name[0] = 0;  // forget a previous voice name if a language is specified
 		}
@@ -1116,7 +1259,7 @@ static const char *VoiceFromStack()
 
 
 
-static void ProcessParamStack(char *outbuf, int &outix)
+static void ProcessParamStack(char *outbuf, int *outix)
 {//====================================================
 // Set the speech parameters from the parameter stack
 	int param;
@@ -1165,8 +1308,8 @@ static void ProcessParamStack(char *outbuf, int &outix)
 			}
 
 			speech_parameters[param] = new_parameters[param];
-			strcpy(&outbuf[outix],buf);
-			outix += strlen(buf);
+			strcpy(&outbuf[*outix],buf);
+			*outix += strlen(buf);
 		}
 	}
 }  // end of ProcessParamStack
@@ -1190,7 +1333,7 @@ static PARAM_STACK *PushParamStack(int tag_type)
 }  //  end of PushParamStack
 
 
-static void PopParamStack(int tag_type, char *outbuf, int &outix)
+static void PopParamStack(int tag_type, char *outbuf, int *outix)
 {//==============================================================
 	// unwind the stack up to and including the previous tag of this type
 	int ix;
@@ -1253,7 +1396,7 @@ static wchar_t *GetSsmlAttribute(wchar_t *pw, const char *name)
 static int attrcmp(const wchar_t *string1, const char *string2)
 {//============================================================
 	int  ix;
-	
+
 	if(string1 == NULL)
 		return(1);
 
@@ -1283,10 +1426,10 @@ static int attrnumber(const wchar_t *pw, int default_value, int type)
 {//==================================================================
 	int value = 0;
 
-	if((pw == NULL) || !isdigit(*pw))
+	if((pw == NULL) || !IsDigit09(*pw))
 		return(default_value);
 
-	while(isdigit(*pw))
+	while(IsDigit09(*pw))
 	{
 		value = value*10 + *pw++ - '0';
 	}
@@ -1339,7 +1482,7 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out)
 	}
 	if(*pw == '-')
 	{
-		pw++;	
+		pw++;
 		sign = -1;
 	}
 	value = (double)wcstod(pw,&tail);
@@ -1360,10 +1503,14 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out)
 
 	if((tail[0]=='s') && (tail[1]=='t'))
 	{
+#ifdef PLATFORM_RISCOS
+		*value_out = 100;
+#else
 		double x;
 		// convert from semitones to a  frequency percentage
-		x = pow(double(2.0),double((value*sign)/12)) * 100;
+		x = pow((double)2.0,(double)((value*sign)/12)) * 100;
 		*value_out = (int)x;
+#endif
 		return(2);   // percentage
 	}
 
@@ -1380,8 +1527,7 @@ static int attr_prosody_value(int param_type, const wchar_t *pw, int *value_out)
 	return(sign);   // -1, 0, or 1
 }  // end of attr_prosody_value
 
-
-int AddNameData(const char *name, int wide)
+static int AddNameData(const char *name, int wide)
 {//========================================
 // Add the name to the namedata and return its position
 // (Used by the Windows SAPI wrapper)
@@ -1453,6 +1599,7 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type)
 	wchar_t *name;
 	wchar_t *age;
 	wchar_t *variant;
+	int value;
 	const char *new_voice_id;
 	SSML_STACK *ssml_sp;
 
@@ -1490,15 +1637,17 @@ static int GetVoiceAttributes(wchar_t *pw, int tag_type)
 			age = GetSsmlAttribute(pw,"age");
 			gender = GetSsmlAttribute(pw,"gender");
 		}
-	
+
 		if((tag_type != SSML_VOICE) && (lang==NULL))
 			return(0);  // <s> or <p> without language spec, nothing to do
-	
+
 		ssml_sp = &ssml_stack[n_ssml_stack++];
 
 		attrcopy_utf8(ssml_sp->language,lang,sizeof(ssml_sp->language));
 		attrcopy_utf8(ssml_sp->voice_name,name,sizeof(ssml_sp->voice_name));
-		ssml_sp->voice_variant_number = attrnumber(variant,1,0)-1;
+		if((value = attrnumber(variant,1,0)) > 0)
+			value--;    // variant='0' and variant='1' the same
+		ssml_sp->voice_variant_number = value;
 		ssml_sp->voice_age = attrnumber(age,0,0);
 		ssml_sp->voice_gender = attrlookup(gender,mnem_gender);
 		ssml_sp->tag_type = tag_type;
@@ -1588,7 +1737,7 @@ static void SetProsodyParameter(int param_type, wchar_t *attr1, PARAM_STACK *sp)
 }  // end of SetProsodyParemeter
 
 
-static int ReplaceKeyName(char *outbuf, int index, int &outix)
+static int ReplaceKeyName(char *outbuf, int index, int *outix)
 {//===========================================================
 // Replace some key-names by single characters, so they can be pronounced in different languages
 	static MNEM_TAB keynames[] = {
@@ -1597,7 +1746,7 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix)
 	{"underscore ", 0xe05f},
 	{"double-quote ", '"'},
 	{NULL, 0}};
-	
+
 	int ix;
 	int letter;
 	char *p;
@@ -1607,14 +1756,14 @@ static int ReplaceKeyName(char *outbuf, int index, int &outix)
 	if((letter = LookupMnem(keynames, p)) != 0)
 	{
 		ix = utf8_out(letter, p);
-		outix = index + ix;
+		*outix = index + ix;
 		return(letter);
 	}
 	return(0);
 }
 
 
-static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outbuf, int self_closing)
+static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int *outix, int n_outbuf, int self_closing)
 {//==================================================================================================
 // xml_buf is the tag and attributes with a zero terminator in place of the original '>'
 // returns a clause terminator value.
@@ -1629,7 +1778,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 	int voice_change_flag;
 	wchar_t *px;
 	wchar_t *attr1;
-	wchar_t *attr2; 
+	wchar_t *attr2;
 	wchar_t *attr3;
 	int terminator;
 	char *uri;
@@ -1693,13 +1842,13 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 	tag_name[ix] = 0;
 
 	px = &xml_buf[ix];   // the tag's attributes
-	
+
 	if(tag_name[0] == '/')
 	{
 		// closing tag
 		if((tag_type = LookupMnem(ssmltags,&tag_name[1])) != HTML_NOSPACE)
 		{
-			outbuf[outix++] = ' ';
+			outbuf[(*outix)++] = ' ';
 		}
 		tag_type += SSML_CLOSE;
 	}
@@ -1708,7 +1857,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 		if((tag_type = LookupMnem(ssmltags,tag_name)) != HTML_NOSPACE)
 		{
 			// separate SSML tags from the previous word (but not HMTL tags such as <b> <font> which can occur inside a word)
-			outbuf[outix++] = ' ';
+			outbuf[(*outix)++] = ' ';
 		}
 
 		if(self_closing && ignore_if_self_closing[tag_type])
@@ -1808,22 +1957,22 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 		}
 
 		sprintf(buf,"%c%dY",CTRL_EMBEDDED,value);
-		strcpy(&outbuf[outix],buf);
-		outix += strlen(buf);
+		strcpy(&outbuf[*outix],buf);
+		*outix += strlen(buf);
 
-		sayas_start = outix;
+		sayas_start = *outix;
 		sayas_mode = value;   // punctuation doesn't end clause during SAY-AS
 		break;
 
 	case SSML_SAYAS + SSML_CLOSE:
 		if(sayas_mode == SAYAS_KEY)
 		{
-			outbuf[outix] = 0;
+			outbuf[*outix] = 0;
 			ReplaceKeyName(outbuf, sayas_start, outix);
 		}
 
-		outbuf[outix++] = CTRL_EMBEDDED;
-		outbuf[outix++] = 'Y';
+		outbuf[(*outix)++] = CTRL_EMBEDDED;
+		outbuf[(*outix)++] = 'Y';
 		sayas_mode = 0;
 		break;
 
@@ -1832,7 +1981,7 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 		{
 			// use the alias  rather than the text
 			ignore_text = 1;
-			outix += attrcopy_utf8(&outbuf[outix],attr1,n_outbuf-outix);
+			*outix += attrcopy_utf8(&outbuf[*outix],attr1,n_outbuf-*outix);
 		}
 		break;
 
@@ -1862,8 +2011,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 			if((index = AddNameData(buf,0)) >= 0)
 			{
 				sprintf(buf,"%c%dM",CTRL_EMBEDDED,index);
-				strcpy(&outbuf[outix],buf);
-				outix += strlen(buf);
+				strcpy(&outbuf[*outix],buf);
+				*outix += strlen(buf);
 			}
 		}
 		break;
@@ -1890,8 +2039,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 				if(index >= 0)
 				{
 					sprintf(buf,"%c%dI",CTRL_EMBEDDED,index);
-					strcpy(&outbuf[outix],buf);
-					outix += strlen(buf);
+					strcpy(&outbuf[*outix],buf);
+					*outix += strlen(buf);
 					sp->parameter[espeakSILENCE] = 1;
 				}
 			}
@@ -1903,8 +2052,8 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 					if(uri_callback(1,uri,xmlbase) == 0)
 					{
 						sprintf(buf,"%c%dU",CTRL_EMBEDDED,index);
-						strcpy(&outbuf[outix],buf);
-						outix += strlen(buf);
+						strcpy(&outbuf[*outix],buf);
+						*outix += strlen(buf);
 						sp->parameter[espeakSILENCE] = 1;
 					}
 				}
@@ -1934,15 +2083,21 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 			if(value < 3)
 			{
 				// adjust prepause on the following word
-				sprintf(&outbuf[outix],"%c%dB",CTRL_EMBEDDED,value);
-				outix += 3;
+				sprintf(&outbuf[*outix],"%c%dB",CTRL_EMBEDDED,value);
+				*outix += 3;
 				terminator = 0;
 			}
 			value = break_value[value];
 		}
 		if((attr2 = GetSsmlAttribute(px,"time")) != NULL)
 		{
-			value = (attrnumber(attr2,0,1) * 25) / speed.pause_factor; // compensate for speaking speed to keep constant pause length
+			value2 = attrnumber(attr2,0,1);   // pause in mS
+
+			// compensate for speaking speed to keep constant pause length, see function PauseLength()
+			// 'value' here is x 10mS
+			value = (value2 * 256) / (speed.clause_pause_factor * 10);
+			if(value < 200)
+				value = (value2 * 256) / (speed.pause_factor * 10);
 
 			if(terminator == 0)
 				terminator = CLAUSE_NONE;
@@ -1950,7 +2105,13 @@ static int ProcessSsmlTag(wchar_t *xml_buf, char *outbuf, int &outix, int n_outb
 		if(terminator)
 		{
 			if(value > 0xfff)
-				value = 0xfff;
+			{
+				// scale down the value and set a scaling indicator bit
+				value = value / 32;
+				if(value > 0xfff)
+					value = 0xfff;
+				terminator |= CLAUSE_PAUSE_LONG;
+			}
 			return(terminator + value);
 		}
 		break;
@@ -2145,7 +2306,7 @@ f_input = f_in;  // for GetC etc
 				return(CLAUSE_EOF);
 			}
 
-			if((skip_characters > 0) && (count_characters > skip_characters))
+			if((skip_characters > 0) && (count_characters >= skip_characters))
 			{
 				// reached the specified start position
 				// don't break a word
@@ -2250,7 +2411,7 @@ f_input = f_in;  // for GetC etc
 					c2 = ' ';
 				}
 				else
-				if((c2 == '/') || iswalpha(c2))
+				if((c2 == '/') || iswalpha2(c2))
 				{
 					// check for space in the output buffer for embedded commands produced by the SSML tag
 					if(ix > (n_buf - 20))
@@ -2273,7 +2434,7 @@ f_input = f_in;  // for GetC etc
 					}
 					xml_buf[n_xml_buf] = 0;
 					c2 = ' ';
-	
+
 					self_closing = 0;
 					if(xml_buf[n_xml_buf-1] == '/')
 					{
@@ -2281,9 +2442,9 @@ f_input = f_in;  // for GetC etc
 						xml_buf[n_xml_buf-1] = ' ';
 						self_closing = 1;
 					}
-		
-					terminator = ProcessSsmlTag(xml_buf,buf,ix,n_buf,self_closing);
-		
+
+					terminator = ProcessSsmlTag(xml_buf,buf,&ix,n_buf,self_closing);
+
 					if(terminator != 0)
 					{
 						if(end_clause_after_tag)
@@ -2291,7 +2452,7 @@ f_input = f_in;  // for GetC etc
 
 						buf[ix] = ' ';
 						buf[ix++] = 0;
-		
+
 						if(terminator & CLAUSE_BIT_VOICE)
 						{
 							strcpy(voice_change, current_voice_id);
@@ -2374,6 +2535,16 @@ f_input = f_in;  // for GetC etc
 
 		linelength++;
 
+		if((j = lookupwchar2(tr->chars_ignore,c1)) != 0)
+		{
+			if(j == 1)
+			{
+				// ignore this character (eg. zero-width-non-joiner U+200C)
+				continue;
+			}
+			c1 = j;   // replace the character
+		}
+
 		if(iswalnum(c1))
 			any_alnum = 1;
 		else
@@ -2386,23 +2557,13 @@ f_input = f_in;  // for GetC etc
 				c2 = ' ';
 			}
 
-			if((j = lookupwchar2(tr->chars_ignore,c1)) != 0)
-			{
-				if(j == 1)
-				{
-					// ignore this character (eg. zero-width-non-joiner U+200C)
-					continue;
-				}
-				c1 = j;   // replace the character
-			}
-
 			if(c1 == 0xf0b)
 				c1 = ' ';    // Tibet inter-syllabic mark, ?? replace by space ??
 
 			if(iswspace(c1))
 			{
 				char *p_word;
-	
+
 				if(tr->translator_name == 0x6a626f)
 				{
 					// language jbo : lojban
@@ -2433,10 +2594,10 @@ f_input = f_in;  // for GetC etc
 			}
 		}
 
-		if(iswupper(c1))
+		if(iswupper2(c1))
 		{
 			tr->clause_upper_count++;
-			if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev))
+			if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev))
 			{
 				char text_buf[40];
 				char text_buf2[30];
@@ -2453,7 +2614,7 @@ f_input = f_in;  // for GetC etc
 			}
 		}
 		else
-		if(iswalpha(c1))
+		if(iswalpha2(c1))
 			tr->clause_lower_count++;
 
 		if(option_phoneme_input)
@@ -2519,11 +2680,11 @@ if(option_ssml) parag=1;
 				// Because of an xml tag, we are waiting for the
 				// next non-blank character to decide whether to end the clause
 				// i.e. is dot followed by an upper-case letter?
-				
+
 				if(!iswspace(c1))
 				{
-					if(!IsAlpha(c1) || !iswlower(c1))
-//					if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1)))
+					if(!IsAlpha(c1) || !iswlower2(c1))
+//					if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1)))
 					{
 						UngetC(c2);
 						ungot_char2 = c1;
@@ -2553,7 +2714,7 @@ if(option_ssml) parag=1;
 			if((punct = lookupwchar(punct_chars,c1)) != 0)
 			{
 				punct_data = punct_attributes[punct];
-	
+
 				if(punct_data & PUNCT_IN_WORD)
 				{
 					// Armenian punctuation inside a word
@@ -2584,7 +2745,7 @@ if(option_ssml) parag=1;
 					announced_punctuation = c1;
 				}
 			}
-	
+
 			if((punct_data & PUNCT_SAY_NAME) && (announced_punctuation == 0))
 			{
 				// used for elipsis (and 3 dots) if a pronunciation for elipsis is given in *_list
@@ -2622,7 +2783,7 @@ if(option_ssml) parag=1;
 
 				if(nl_count==0)
 				{
-					if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next))))
+					if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next))))
 					{
 						// lang=hu, fix for ordinal numbers, eg:  "december 2., szerda", ignore ',' after ordinal number
 						c1 = CHAR_COMMA_BREAK;
@@ -2631,7 +2792,7 @@ if(option_ssml) parag=1;
 
 					if(c1 == '.')
 					{
-						if((tr->langopts.numbers & NUM_ORDINAL_DOT) && 
+						if((tr->langopts.numbers & NUM_ORDINAL_DOT) &&
 							(iswdigit(cprev) || (IsRomanU(cprev) && (IsRomanU(cprev2) || iswspace(cprev2)))))  // lang=hu
 						{
 							// dot after a number indicates an ordinal number
@@ -2641,16 +2802,16 @@ if(option_ssml) parag=1;
 							}
 							else
 							{
-								if (iswlower(c_next) || (c_next=='-'))     // hyphen is needed for lang-hu (eg. 2.-kal)
+								if (iswlower2(c_next) || (c_next=='-'))     // hyphen is needed for lang-hu (eg. 2.-kal)
 									is_end_clause = 0;      // only if followed by lower-case, (or if there is a XML tag)
 							}
 						}
 						else
 						if(c_next == '\'')
 						{
-							is_end_clause = 0;    // eg. u.s.a.'s 
+							is_end_clause = 0;    // eg. u.s.a.'s
 						}
-						if(iswlower(c_next))
+						if(iswlower2(c_next))
 						{
 							// next word has no capital letter, this dot is probably from an abbreviation
 //							c1 = ' ';
diff --git a/external/espeak/setlengths.cpp b/external/espeak/setlengths.cpp
old mode 100644
new mode 100755
index fdc7ebc..c91a2bd
--- a/external/espeak/setlengths.cpp
+++ b/external/espeak/setlengths.cpp
@@ -30,8 +30,6 @@
 #include "voice.h"
 #include "translate.h"
 
-extern int GetAmplitude(void);
-extern void DoSonicSpeed(int value);
 extern int saved_parameters[];
 
 
@@ -104,7 +102,7 @@ static unsigned char pause_factor_350[] = {
 15,15,15,15,15};                // 370
 
 // wav_factor adjustments for speeds 350 to 450
-// Use this to calibrate speed for wpm 350-450 
+// Use this to calibrate speed for wpm 350-450
 static unsigned char wav_factor_350[] = {
  120, 121, 120, 119, 119,   // 350
  118, 118, 117, 116, 116,   // 355
@@ -275,6 +273,9 @@ void SetSpeed(int control)
 				speed.min_sample_len = 420 - (wpm - 440);
 		}
 
+// adjust for different sample rates
+speed.min_sample_len = (speed.min_sample_len * samplerate_native) / 22050;
+
 		speed.pause_factor = (256 * s1)/115;      // full speed adjustment, used for pause length
 		speed.clause_pause_factor = 0;
 
@@ -463,7 +464,7 @@ void SetAmplitude(int amp)
 
 	if((amp >= 0) && (amp <= 20))
 	{
-		option_amplitude = (amplitude_factor[amp] * 480)/256; 
+		option_amplitude = (amplitude_factor[amp] * 480)/256;
 	}
 }
 #endif
@@ -572,6 +573,7 @@ void CalcLengths(Translator *tr)
 	int  last_pitch = 0;
 	int  pitch_start;
 	int  length_mod;
+	int  next2type;
 	int  len;
 	int  env2;
 	int  end_of_clause;
@@ -606,7 +608,7 @@ void CalcLengths(Translator *tr)
 		case phPAUSE:
 			last_pitch = 0;
 			break;
-			
+
 		case phSTOP:
 			last_pitch = 0;
 			if(prev->type == phFRICATIVE)
@@ -686,8 +688,19 @@ void CalcLengths(Translator *tr)
 
 				p->prepause = 40;
 
-				if((prev->type == phPAUSE) || (prev->type == phVOWEL)) // || (prev->ph->mnemonic == ('/'*256+'r')))
-					p->prepause = 0;
+				if(prev->type == phVOWEL)
+				{
+					p->prepause = 0;   // use murmur instead to link from the preceding vowel
+				}
+				else
+				if(prev->type == phPAUSE)
+				{
+					// reduce by the length of the preceding pause
+					if(prev->length < p->prepause)
+						p->prepause -= prev->length;
+					else
+						p->prepause = 0;
+				}
 				else
 				if(p->newword==0)
 				{
@@ -710,7 +723,7 @@ void CalcLengths(Translator *tr)
 			p->amp = tr->stress_amps[0];  // unless changed later
 			p->length = 256;  //  TEMPORARY
 			min_drop = 0;
-			
+
 			if(p->newword)
 			{
 				if(prev->type==phLIQUID)
@@ -733,12 +746,12 @@ void CalcLengths(Translator *tr)
 				if((prev->type==phVOWEL) || (prev->type == phLIQUID))
 				{
 					p->length = prev->length;
-					
+
 					if(p->type == phLIQUID)
 					{
 						p->length = speed1;
 					}
-	
+
 					if(next->type == phVSTOP)
 					{
 						p->length = (p->length * 160)/100;
@@ -824,9 +837,17 @@ if(stress <= 1)
 				next3 = &phoneme_list[ix+4];
 			}
 
+			next2type = next2->ph->length_mod;
 			if(more_syllables==0)
 			{
-				len = tr->langopts.length_mods0[next2->ph->length_mod *10+ next->ph->length_mod];
+				if(next->newword || next2->newword)
+				{
+					// don't use 2nd phoneme over a word boundary, unless it's a pause
+					if(next2type != 1)
+						next2type = 0;
+				}
+
+				len = tr->langopts.length_mods0[next2type *10+ next->ph->length_mod];
 
 				if((next->newword) && (tr->langopts.word_gap & 0x20))
 				{
@@ -838,7 +859,7 @@ if(stress <= 1)
 			}
 			else
 			{
-				length_mod = tr->langopts.length_mods[next2->ph->length_mod *10+ next->ph->length_mod];
+				length_mod = tr->langopts.length_mods[next2type *10+ next->ph->length_mod];
 
 				if((next->type == phNASAL) && (next2->type == phSTOP || next2->type == phVSTOP) && (next3->ph->phflags & phFORTIS))
 					length_mod -= 15;
@@ -889,7 +910,7 @@ if(stress <= 1)
 			{
 				// this is the last syllable in the clause, lengthen it - more for short vowels
 				len = (p->ph->std_length * 2);
-				if(tr->langopts.stress_flags & 0x40000)
+				if(tr->langopts.stress_flags & S_EO_CLAUSE1)
 					len=200;  // don't lengthen short vowels more than long vowels at end-of-clause
 				length_mod = length_mod * (256 + (280 - len)/3)/256;
 			}
@@ -963,11 +984,11 @@ if(p->type != phVOWEL)
 			next->synthflags &= ~SFLAG_SEQCONTINUE;
 			if(next->type == phNASAL && next2->type != phVOWEL)
 				next->synthflags |= SFLAG_SEQCONTINUE;
-				
+
 			if(next->type == phLIQUID)
 			{
 				next->synthflags |= SFLAG_SEQCONTINUE;
-					
+
 				if(next2->type == phVOWEL)
 				{
 					next->synthflags &= ~SFLAG_SEQCONTINUE;
diff --git a/external/espeak/sintab.h b/external/espeak/sintab.h
old mode 100644
new mode 100755
diff --git a/external/espeak/sonic.cpp b/external/espeak/sonic.cpp
old mode 100644
new mode 100755
diff --git a/external/espeak/sonic.h b/external/espeak/sonic.h
old mode 100644
new mode 100755
diff --git a/external/espeak/speak_lib.cpp b/external/espeak/speak_lib.cpp
old mode 100644
new mode 100755
index bced70a..9db9de1
--- a/external/espeak/speak_lib.cpp
+++ b/external/espeak/speak_lib.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2013 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -60,6 +60,7 @@ static espeak_AUDIO_OUTPUT my_mode=AUDIO_OUTPUT_SYNCHRONOUS;
 static int synchronous_mode = 1;
 static int out_samplerate = 0;
 static int voice_samplerate = 22050;
+static espeak_ERROR err = EE_OK;
 
 t_espeak_callback* synth_callback = NULL;
 int (* uri_callback)(int, const char *, const char *) = NULL;
@@ -114,7 +115,11 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
 				//	sleep(1);
 				}
 				out_samplerate = voice_samplerate;
-				wave_init(voice_samplerate);
+				if(!wave_init(voice_samplerate))
+				{
+					err = EE_INTERNAL_ERROR;
+					return(-1);
+				}
 				wave_set_callback_is_output_enabled( fifo_is_command_enabled);
 				my_audio = wave_open("alsa");
 				event_init();
@@ -167,7 +172,7 @@ static int dispatch_audio(short* outbuf, int length, espeak_EVENT* event)
 
 	SHOW_TIME("LEAVE dispatch_audio\n");
 
-	return (a_wave_can_be_played==0); // 1 = stop synthesis
+	return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error
 }
 
 
@@ -377,10 +382,12 @@ static int initialise(int control)
 {//===============================
 	int param;
 	int result;
+	int srate = 22050;  // default sample rate 22050 Hz
 
+	err = EE_OK;
 	LoadConfig();
-	WavegenInit(22050,0);   // 22050
-	if((result = LoadPhData()) != 1)
+
+	if((result = LoadPhData(&srate)) != 1)  // reads sample rate from espeak-data/phontab
 	{
 		if(result == -1)
 		{
@@ -393,6 +400,7 @@ static int initialise(int control)
 		else
 			fprintf(stderr,"Wrong version of espeak-data 0x%x (expects 0x%x) at %s\n",result,version_phdata,path_home);
 	}
+	WavegenInit(srate,0);
 
 	memset(&current_voice_selected,0,sizeof(current_voice_selected));
 	SetVoiceStack(NULL, "");
@@ -492,6 +500,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text,
 		{
 #ifdef USE_ASYNC
 			finished = create_events((short *)outbuf, length, event_list, a_write_pos);
+			if(finished < 0)
+				return EE_INTERNAL_ERROR;
 			length = 0; // the wave data are played once.
 #endif
 		}
@@ -521,7 +531,8 @@ static espeak_ERROR Synthesize(unsigned int unique_identifier, const void *text,
 #ifdef USE_ASYNC
 					if (my_mode==AUDIO_OUTPUT_PLAYBACK)
 					{
-						dispatch_audio(NULL, 0, NULL); // TBD: test case
+						if(dispatch_audio(NULL, 0, NULL) < 0) // TBD: test case
+							return err = EE_INTERNAL_ERROR;
 					}
 					else
 					{
@@ -545,7 +556,11 @@ static const char* label[] = {
   "SENTENCE",
   "MARK",
   "PLAY",
-  "END"};
+  "END",
+  "MSG_TERMINATED",
+  "PHONEME",
+  "SAMPLERATE",
+  "??" };
 #endif
 
 
@@ -717,8 +732,12 @@ void sync_espeak_SetPunctuationList(const wchar_t *punctlist)
 	my_unique_identifier = 0;
 	my_user_data = NULL;
 
-	wcsncpy(option_punctlist, punctlist, N_PUNCTLIST);
-	option_punctlist[N_PUNCTLIST-1] = 0;
+	option_punctlist[0] = 0;
+	if(punctlist != NULL)
+	{
+		wcsncpy(option_punctlist, punctlist, N_PUNCTLIST);
+		option_punctlist[N_PUNCTLIST-1] = 0;
+	}
 }  //  end of sync_espeak_SetPunctuationList
 
 
@@ -743,11 +762,6 @@ ESPEAK_API void espeak_SetUriCallback(int (* UriCallback)(int, const char*, cons
 }
 
 
-ESPEAK_API void espeak_SetPhonemeCallback(int (* PhonemeCallback)(const char*))
-{//===========================================================================
-	phoneme_callback = PhonemeCallback;
-}
-
 ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options)
 {//=============================================================================================================
 ENTER("espeak_Initialize");
@@ -761,10 +775,11 @@ ENTER("espeak_Initialize");
 #ifdef PLATFORM_RISCOS
 	setlocale(LC_CTYPE,"ISO8859-1");
 #else
-	if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
+	if(setlocale(LC_CTYPE,"C.UTF-8") == NULL)
 	{
 		if(setlocale(LC_CTYPE,"UTF-8") == NULL)
-			setlocale(LC_CTYPE,"");
+			if(setlocale(LC_CTYPE,"en_US.UTF-8") == NULL)
+				setlocale(LC_CTYPE,"");
 	}
 #endif
 */
@@ -778,8 +793,9 @@ ENTER("espeak_Initialize");
 	}
 
 	// buflength is in mS, allocate 2 bytes per sample
-	if(buf_length == 0)
+	if((buf_length == 0) || (output_type == AUDIO_OUTPUT_PLAYBACK) || (output_type == AUDIO_OUTPUT_SYNCH_PLAYBACK))
 		buf_length = 200;
+
 	outbuf_size = (buf_length * samplerate)/500;
 	outbuf = (unsigned char*)realloc(outbuf,outbuf_size);
 	if((out_start = outbuf) == NULL)
@@ -1151,7 +1167,7 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
 		 value=3  as (1), but produces IPA phoneme names rather than ascii
 		bit 4:   produce mbrola pho data
 	*/
-	option_phonemes = value & 3;
+	option_phonemes = value & 7;
 	option_mbrola_phonemes = value & 16;
 	f_trans = stream;
 	if(stream == NULL)
@@ -1160,6 +1176,18 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
 }   //  end of espeak_SetPhonemes
 
 
+ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode)
+{//=================================================================================================
+	/* phoneme_mode  bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+	                 bits 4-7:   0=eSpeak phoneme names, 1=IPA
+	*/
+
+	option_multibyte = textmode & 7;
+	*textptr = TranslateClause(translator, NULL, *textptr, NULL, NULL);
+	return(GetTranslatedPhonemeString(phonememode));
+}
+
+
 ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags)
 {//=============================================================================
 	ENTER("espeak_CompileDictionary");
@@ -1205,6 +1233,7 @@ ESPEAK_API int espeak_IsPlaying(void)
 
 ESPEAK_API espeak_ERROR espeak_Synchronize(void)
 {//=============================================
+	espeak_ERROR berr = err;
 #ifdef USE_ASYNC
 	SHOW_TIME("espeak_Synchronize > ENTER");
 	while (espeak_IsPlaying())
@@ -1212,14 +1241,12 @@ ESPEAK_API espeak_ERROR espeak_Synchronize(void)
 		usleep(20000);
 	}
 #endif
+	err = EE_OK;
 	SHOW_TIME("espeak_Synchronize > LEAVE");
-	return EE_OK;
+	return berr;
 }   //  end of espeak_Synchronize
 
 
-extern void FreePhData(void);
-extern void FreeVoiceList(void);
-
 ESPEAK_API espeak_ERROR espeak_Terminate(void)
 {//===========================================
 	ENTER("espeak_Terminate");
diff --git a/external/espeak/speak_lib.h b/external/espeak/speak_lib.h
old mode 100644
new mode 100755
index 1cc15bc..f33e031
--- a/external/espeak/speak_lib.h
+++ b/external/espeak/speak_lib.h
@@ -34,7 +34,7 @@
 #define ESPEAK_API
 #endif
 
-#define ESPEAK_API_REVISION  7
+#define ESPEAK_API_REVISION  9
 /*
 Revision 2
    Added parameter "options" to eSpeakInitialize()
@@ -55,6 +55,12 @@ Revision 7  24.Dec.2011
   Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
   Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
 
+Revision 8  26.Apr.2013
+  Added function espeak_TextToPhonemes().
+
+Revision 9  30.May.2013
+  Changed function espeak_TextToPhonemes().
+
 */
          /********************/
          /*  Initialization  */
@@ -94,7 +100,7 @@ typedef struct {
 		char string[8];    // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
 	} id;
 } espeak_EVENT;
-/* 
+/*
    When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
 
 
@@ -102,16 +108,16 @@ typedef struct {
 
    In PLAYBACK mode, the callback function is called as soon as an event happens.
 
-   For example suppose that the following message is supplied to espeak_Synth: 
+   For example suppose that the following message is supplied to espeak_Synth:
    "hello, hello."
 
 
    * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
 
    ** Block 1:
-   <audio data> + 
+   <audio data> +
    List of events: SENTENCE + WORD + LIST_TERMINATED
- 
+
    ** Block 2:
    <audio data> +
    List of events: WORD + END + LIST_TERMINATED
@@ -148,11 +154,11 @@ typedef enum {
 
 typedef enum {
 	/* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
-	AUDIO_OUTPUT_PLAYBACK, 
+	AUDIO_OUTPUT_PLAYBACK,
 
 	/* RETRIEVAL mode: supplies audio data and events to the calling program */
 	AUDIO_OUTPUT_RETRIEVAL,
- 
+
 	/* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
 	AUDIO_OUTPUT_SYNCHRONOUS,
 
@@ -181,6 +187,8 @@ ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, cons
    output: the audio data can either be played by eSpeak or passed back by the SynthCallback function.
 
    buflength:  The length in mS of sound buffers passed to the SynthCallback function.
+            Value=0 gives a default of 200mS.
+            This paramater is only used for AUDIO_OUTPUT_RETRIEVAL and AUDIO_OUTPUT_SYNCHRONOUS modes.
 
    path: The directory which contains the espeak-data directory, or NULL for the default location.
 
@@ -199,7 +207,7 @@ extern "C"
 ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
 /* Must be called before any synthesis functions are called.
    This specifies a function in the calling program which is called when a buffer of
-   speech sound data has been produced. 
+   speech sound data has been produced.
 
 
    The callback function is of the form:
@@ -288,7 +296,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       start of the text.
 
    position_type:  Determines whether "position" is a number of characters, words, or sentences.
-      Values: 
+      Values:
 
    end_position:  If set, this gives a character position at which speaking will stop.  A value
       of zero indicates no end position.
@@ -299,6 +307,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
          espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
          espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
          espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
 
       espeakSSML   Elements within < > are treated as SSML elements, or if not recognised are ignored.
 
@@ -307,13 +316,16 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       espeakENDPAUSE  If set then a sentence pause is added at the end of the text.  If not set then
          this pause is suppressed.
 
-   unique_identifier: message identifier; helpful for identifying later 
-     data supplied to the callback.
+   unique_identifier: This must be either NULL, or point to an integer variable to
+       which eSpeak writes a message identifier number.
+       eSpeak includes this number in espeak_EVENT messages which are the result of
+       this call of espeak_Synth().
 
-   user_data: pointer which will be passed to the callback function.
+   user_data: a pointer (or NULL) which will be passed to the callback function in
+       espeak_EVENT messages.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -336,8 +348,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text,
 
    For the other parameters, see espeak_Synth()
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -350,8 +362,8 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
    If key_name is a single character, it speaks the name of the character.
    Otherwise, it speaks key_name as a text string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -360,10 +372,10 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
 extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character 
+/* Speak the name of the given character
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -420,7 +432,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
       espeakRANGE:   pitch range, range 0-100. 0-monotone, 50=normal
 
       espeakPUNCTUATION:  which punctuation characters to announce:
-         value in espeak_PUNCT_TYPE (none, all, some), 
+         value in espeak_PUNCT_TYPE (none, all, some),
          see espeak_GetParameter() to specify which characters are announced.
 
       espeakCAPITALS: announce capital letters by:
@@ -432,8 +444,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
 
       espeakWORDGAP:  pause between words, units of 10mS (at the default speed)
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -455,8 +467,8 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
 
    punctlist:  A list of character codes, terminated by a zero character.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -477,6 +489,37 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
 #ifdef __cplusplus
 extern "C"
 #endif
+ESPEAK_API const char *espeak_TextToPhonemes(const void **textptr, int textmode, int phonememode);
+/* Translates text into phonemes.  Call espeak_SetVoiceByName() first, to select a language.
+
+   It returns a pointer to a character string which contains the phonemes for the text up to
+   end of a sentence, or comma, semicolon, colon, or similar punctuation.
+
+   textptr: The address of a pointer to the input text which is terminated by a zero character.
+      On return, the pointer has been advanced past the text which has been translated, or else set
+      to NULL to indicate that the end of the text has been reached.
+
+   textmode: Type of character codes, one of:
+         espeakCHARS_UTF8     UTF8 encoding
+         espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
+         espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
+         espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
+
+   phonememode: bits0-3:
+      0= just phonemes.
+      1= include ties (U+361) for phoneme names of more than one letter.
+      2= include zero-width-joiner for phoneme names of more than one letter.
+      3= separate phonemes with underscore characters.
+
+	 bits 4-7:
+      0= eSpeak's ascii phoneme names.
+      1= International Phonetic Alphabet (as UTF-8 characters).
+*/
+
+#ifdef __cplusplus
+extern "C"
+#endif
 ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags);
 /* Compile pronunciation dictionary for a language which corresponds to the currently
    selected voice.  The required voice should be selected before calling this function.
@@ -501,7 +544,7 @@ typedef struct {
 	unsigned char gender;  // 0=none 1=male, 2=female,
 	unsigned char age;     // 0=not specified, or age in years
 	unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
-	unsigned char xx1;     // for internal use 
+	unsigned char xx1;     // for internal use
 	int score;       // for internal use
 	void *spare;     // for internal use
 } espeak_VOICE;
@@ -546,8 +589,8 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name);
 /* Searches for a voice with a matching "name" field.  Language is not considered.
    "name" is a UTF8 string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
 	   EE_INTERNAL_ERROR.
 */
@@ -588,7 +631,7 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void);
    function returns, the audio output is fully stopped and the synthesizer is ready to
    synthesize a new message.
 
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
 	   EE_INTERNAL_ERROR.
 */
 
@@ -605,7 +648,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Synchronize(void);
 /* This function returns when all data have been spoken.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
 	   EE_INTERNAL_ERROR.
 */
 
@@ -614,7 +657,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Terminate(void);
 /* last function to be called.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
 	   EE_INTERNAL_ERROR.
 */
 
diff --git a/external/espeak/speech.h b/external/espeak/speech.h
old mode 100644
new mode 100755
index 07dc553..0f20086
--- a/external/espeak/speech.h
+++ b/external/espeak/speech.h
@@ -43,21 +43,19 @@
 #undef PLATFORM_WINDOWS
 
 #define PATHSEP  '/'
-// USE_PORTAUDIO or USE_PULSEAUDIO are now defined in the makefile
-//#define USE_PORTAUDIO
-//#define USE_PULSEAUDIO
+
 /* ppgb, 23 December 2011 */
 #undef USE_NANOSLEEP
 //#define ESPEAK_API  extern "C"
 
 #ifdef LIBRARY
-	#define USE_ASYNC
+#define USE_ASYNC
 #endif
 
 #ifdef _ESPEAKEDIT
-	#define USE_PORTAUDIO
-	#define USE_ASYNC
-	#define LOG_FRAMES      // write keyframe info to log-espeakedit
+#define USE_PORTAUDIO
+#define USE_ASYNC
+#define LOG_FRAMES      // write keyframe info to log-espeakedit
 #endif
 
 // will look for espeak_data directory here, and also in user's home directory
@@ -92,9 +90,9 @@ int LookupMnem(MNEM_TAB *table, const char *string);
 
 
 #ifdef PLATFORM_WINDOWS
-	#define N_PATH_HOME  220
+	#define N_PATH_HOME  230
 #else
-	#define N_PATH_HOME  150
+	#define N_PATH_HOME  160
 #endif
 
 extern char path_home[N_PATH_HOME];    // this is the espeak-data directory
diff --git a/external/espeak/synth_mbrola.cpp b/external/espeak/synth_mbrola.cpp
old mode 100644
new mode 100755
index 0abda43..585a481
--- a/external/espeak/synth_mbrola.cpp
+++ b/external/espeak/synth_mbrola.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2007 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2013 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -40,7 +40,6 @@ int option_mbrola_phonemes;
 #ifdef INCLUDE_MBROLA
 
 extern int Read4Bytes(FILE *f);
-extern void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range);
 extern unsigned char *outbuf;
 
 #ifndef PLATFORM_WINDOWS
@@ -490,7 +489,7 @@ int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbr
 		if(ph->code != phonEND_WORD)
 		{
 			char phoneme_name[16];
-			WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA);
+			WritePhMnemonic(phoneme_name, p->ph, p, option_phoneme_events & espeakINITIALIZE_PHONEME_IPA, NULL);
 			DoPhonemeMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, phoneme_name);
 		}
 
diff --git a/external/espeak/synthdata.cpp b/external/espeak/synthdata.cpp
old mode 100644
new mode 100755
index 4135002..ea5d887
--- a/external/espeak/synthdata.cpp
+++ b/external/espeak/synthdata.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2013 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -35,8 +35,8 @@
 #include "translate.h"
 #include "wave.h"
 
-const char *version_string = "1.46.27  21.Oct.12";
-const int version_phdata  = 0x014624;
+const char *version_string = "1.48.03  04.Mar.14";
+const int version_phdata  = 0x014801;
 
 int option_device_number = -1;
 FILE *f_logespeak = NULL;
@@ -67,9 +67,6 @@ int vowel_transition[4];
 int vowel_transition0;
 int vowel_transition1;
 
-int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);
-
-
 
 static char *ReadPhFile(void *ptr, const char *fname, int *size)
 {//=============================================================
@@ -108,22 +105,23 @@ static char *ReadPhFile(void *ptr, const char *fname, int *size)
 }  //  end of ReadPhFile
 
 
-int LoadPhData()
-{//=============
+int LoadPhData(int *srate)
+{//========================
 	int ix;
 	int n_phonemes;
 	int version;
 	int result = 1;
 	int length;
+	int rate;
 	unsigned char *p;
 	int *pw;
 
 #ifdef DATA_FROM_SOURCECODE_FILES
 	long llength;
-	phoneme_tab_data = (unsigned char *) FilesInMemory_getData (espeakdata_phons, U"phontab", &llength);
-	phoneme_index = (USHORT *) FilesInMemory_getData (espeakdata_phons, U"phonindex", &llength);
-	phondata_ptr = (char *) FilesInMemory_getData (espeakdata_phons, U"phondata", &llength);
-	tunes = (TUNE *) FilesInMemory_getData (espeakdata_phons, U"intonations", &llength);
+	phoneme_tab_data = (unsigned char *) FileInMemorySet_getData (espeakdata_phons.get(), U"phontab", &llength);
+	phoneme_index = (USHORT *) FileInMemorySet_getData (espeakdata_phons.get(), U"phonindex", &llength);
+	phondata_ptr = (char *) FileInMemorySet_getData (espeakdata_phons.get(), U"phondata", &llength);
+	tunes = (TUNE *) FileInMemorySet_getData (espeakdata_phons.get(), U"intonations", &llength);
 	length = llength;
 #else
 	if((phoneme_tab_data = (unsigned char *)ReadPhFile((void *)(phoneme_tab_data),"phontab",NULL)) == NULL)
@@ -136,14 +134,16 @@ int LoadPhData()
 		return(-1);
 #endif
 
-   wavefile_data = (unsigned char *)phondata_ptr;
+    wavefile_data = (unsigned char *)phondata_ptr;
 	n_tunes = length / sizeof(TUNE);
 
-	// read the version number from the first 4 bytes of phondata
-	version = 0;
+	// read the version number and sample rate from the first 8 bytes of phondata
+	version = 0;  // bytes 0-3, version number
+	rate = 0;     // bytes 4-7, sample rate
 	for(ix=0; ix<4; ix++)
 	{
 		version += (wavefile_data[ix] << (ix*8));
+		rate += (wavefile_data[ix+4] << (ix*8));
 	}
 
 	if(version != version_phdata)
@@ -173,6 +173,8 @@ int LoadPhData()
 	if(phoneme_tab_number >= n_phoneme_tables)
 		phoneme_tab_number = 0;
 
+    if(srate != NULL)
+        *srate = rate;
 	return(result);
 }  //  end of LoadPhData
 
@@ -284,7 +286,7 @@ frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,
 	// do we need to modify a frame for blending with a consonant?
 	if((this_ph->type == phVOWEL) && (fmt_params->fmt2_addr == 0) && (fmt_params->use_vowelin))
 	{
-		seq_len_adjust += FormantTransition2(frames,nf,fmt_params->transition0,fmt_params->transition1,NULL,which);
+		seq_len_adjust += FormantTransition2(frames,&nf,fmt_params->transition0,fmt_params->transition1,NULL,which);
 	}
 
 	length1 = 0;
@@ -622,6 +624,7 @@ static int CountVowelPosition(PHONEME_LIST *plist)
 static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist, USHORT *p_prog, WORD_PH_DATA *worddata)
 {//========================================================================================================================
 	int which;
+	int ix;
 	unsigned int data;
 	int instn;
 	int instn2;
@@ -712,6 +715,21 @@ static bool InterpretCondition(Translator *tr, int control, PHONEME_LIST *plist,
                 return(false);   // no previous vowel
 				plist = &(worddata->prev_vowel);
             break;
+
+		case 9:  // next3PhW
+			for(ix=1; ix<=3; ix++)
+			{
+				if(plist[ix].sourceix)
+					return(false);
+			}
+			plist = &plist[3];
+			break;
+
+		case 10: // prev2PhW
+			if((plist[0].sourceix) || (plist[-1].sourceix))
+				return(false);
+			plist-=2;
+			break;
         }
 
 		if((which == 0) || (which == 5))
@@ -982,7 +1000,9 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
 	phdata->pd_param[i_LENGTH_MOD] = ph->length_mod;
 
 	if(ph->program == 0)
+	{
 		return;
+	}
 
 	end_flag = 0;
 
@@ -1021,6 +1041,16 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
 					phdata->pd_param[i_APPEND_PHONEME] = data;
 			}
 			else
+			if(instn2 == i_ADD_LENGTH)
+			{
+				if(data & 0x80)
+				{
+					// a negative value, do sign extension
+					data = -(0x100 - data);
+				}
+				phdata->pd_param[i_SET_LENGTH] += data;
+			}
+			else
 			if(instn2 == i_IPA_NAME)
 			{
 				// followed by utf-8 characters, 2 per instn word
@@ -1227,6 +1257,19 @@ void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_
         memcpy(&worddata->prev_vowel, &plist[0], sizeof(PHONEME_LIST));
     }
 
+#ifdef _ESPEAKEDIT
+    plist->std_length = phdata->pd_param[i_SET_LENGTH];
+    if(phdata->sound_addr[0] != 0)
+    {
+        plist->phontab_addr = phdata->sound_addr[0];  // FMT address
+        plist->sound_param = phdata->sound_param[0];
+    }
+    else
+    {
+        plist->phontab_addr = phdata->sound_addr[1];  // WAV address
+        plist->sound_param = phdata->sound_param[1];
+	}
+#endif
 }  // end of InterpretPhoneme
 
 
diff --git a/external/espeak/synthesize.cpp b/external/espeak/synthesize.cpp
old mode 100644
new mode 100755
index d4e6a76..0026e58
--- a/external/espeak/synthesize.cpp
+++ b/external/espeak/synthesize.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2010 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -40,7 +40,7 @@ static void SmoothSpect(void);
 
 // list of phonemes in a clause
 int n_phoneme_list=0;
-PHONEME_LIST phoneme_list[N_PHONEME_LIST];
+PHONEME_LIST phoneme_list[N_PHONEME_LIST+1];
 
 int mbrola_delay;
 char mbrola_name[20];
@@ -82,7 +82,7 @@ const char *WordToString(unsigned int word)
 	int  ix;
 	static char buf[5];
 
-	for(ix=0; ix<3; ix++)
+	for(ix=0; ix<4; ix++)
 		buf[ix] = word >> (ix*8);
 	buf[4] = 0;
 	return(buf);
@@ -188,7 +188,7 @@ static void DoPitch(unsigned char *env, int pitch1, int pitch2)
 
 int PauseLength(int pause, int control)
 {//====================================
-	int len;
+	unsigned int len;
 
 	if(control == 0)
 	{
@@ -210,8 +210,10 @@ int PauseLength(int pause, int control)
 
 static void DoPause(int length, int control)
 {//=========================================
+// length in nominal mS
 // control = 1, less shortening at fast speeds
-	int len;
+	unsigned int len;
+	int srate2;
 
 	if(length == 0)
 		len = 0;
@@ -219,7 +221,15 @@ static void DoPause(int length, int control)
 	{
 		len = PauseLength(length, control);
 
-		len = (len * samplerate) / 1000;  // convert from mS to number of samples
+		if(len < 90000)
+		{
+			len = (len * samplerate) / 1000;  // convert from mS to number of samples
+		}
+		else
+		{
+			srate2 = samplerate / 25;  // avoid overflow
+			len = (len * srate2) / 40;
+		}
 	}
 
 	EndPitch(1);
@@ -336,7 +346,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
 		q = wcmdq[wcmdq_tail];
 		q[0] = WCMD_WAVE2;
 		q[1] = length | (wav_length << 16);   // length in samples
-		q[2] = long64(&wavefile_data[index]);
+		q[2] = (long64)(&wavefile_data[index]);
 		q[3] = wav_scale + (amp << 8);
 		WcmdqInc();
 		return(length);
@@ -357,7 +367,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
 	q = wcmdq[wcmdq_tail];
 	q[0] = WCMD_WAVE;
 	q[1] = x;   // length in samples
-	q[2] = long64(&wavefile_data[index]);
+	q[2] = (long64)(&wavefile_data[index]);
 	q[3] = wav_scale + (amp << 8);
 	WcmdqInc();
 
@@ -372,7 +382,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
 		q = wcmdq[wcmdq_tail];
 		q[0] = WCMD_WAVE;
 		q[1] = len4*2;   // length in samples
-		q[2] = long64(&wavefile_data[index+x]);
+		q[2] = (long64)(&wavefile_data[index+x]);
 		q[3] = wav_scale + (amp << 8);
 		WcmdqInc();
 
@@ -388,7 +398,7 @@ static int DoSample2(int index, int which, int std_length, int control, int leng
 		q = wcmdq[wcmdq_tail];
 		q[0] = WCMD_WAVE;
 		q[1] = length;   // length in samples
-		q[2] = long64(&wavefile_data[index+x]);
+		q[2] = (long64)(&wavefile_data[index+x]);
 		q[3] = wav_scale + (amp << 8);
 		WcmdqInc();
 	}
@@ -613,7 +623,7 @@ static int VowelCloseness(frame_t *fr)
 }
 
 
-int FormantTransition2(frameref_t *seq, int &n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
+int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which)
 {//==============================================================================================================================
 	int ix;
 	int formant;
@@ -639,7 +649,7 @@ static short vcolouring[N_VCOLOUR][5] = {
 
 	frame_t *fr = NULL;
 
-	if(n_frames < 2)
+	if(*n_frames < 2)
 		return(0);
 
 	len = (data1 & 0x3f) * 2;
@@ -714,8 +724,8 @@ if(voice->klattv[0])
 
 			if(flags & 8)
 			{
-				fr = CopyFrame(seq[n_frames-1].frame,0);
-				seq[n_frames-1].frame = fr;
+				fr = CopyFrame(seq[*n_frames-1].frame,0);
+				seq[*n_frames-1].frame = fr;
 				rms = RMS_GLOTTAL1;
 
 				// degree of glottal-stop effect depends on closeness of vowel (indicated by f1 freq)
@@ -723,7 +733,7 @@ if(voice->klattv[0])
 			}
 			else
 			{
-				fr = DuplicateLastFrame(seq,n_frames++,len);
+				fr = DuplicateLastFrame(seq,(*n_frames)++,len);
 				if(len > 36)
 					seq_len_adjust += (len - 36);
 
@@ -737,7 +747,7 @@ if(voice->klattv[0])
 
 			if((vcolour > 0) && (vcolour <= N_VCOLOUR))
 			{
-				for(ix=0; ix<n_frames; ix++)
+				for(ix=0; ix < *n_frames; ix++)
 				{
 					fr = CopyFrame(seq[ix].frame,0);
 					seq[ix].frame = fr;
@@ -1258,6 +1268,7 @@ void DoVoiceChange(voice_t *v)
 	wcmdq[wcmdq_tail][0] = WCMD_VOICE;
 	wcmdq[wcmdq_tail][2] = (long64)v2;
 	WcmdqInc();
+	trace (U"", sizeof(voice_t), U" bytes");
 }
 
 
@@ -1377,7 +1388,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 		DoPause(0,0);    // isolate from the previous clause
 	}
 
-	while(ix < (*n_ph))
+	while((ix < (*n_ph)) && (ix < N_PHONEME_LIST-2))
 	{
 		p = &phoneme_list[ix];
 
@@ -1426,7 +1437,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 
 		EndAmplitude();
 
-		if(p->prepause > 0)
+		if((p->prepause > 0) && !(p->ph->phflags & phPREVOICE))
 			DoPause(p->prepause,1);
 
 		done_phoneme_marker = 0;
@@ -1438,7 +1449,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 			}
 			else
 			{
-				WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
+				WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL);
 				DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
 				done_phoneme_marker = 1;
 			}
@@ -1448,10 +1459,14 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 		{
 		case phPAUSE:
 			DoPause(p->length,0);
+#ifdef _ESPEAKEDIT
+            p->std_length = p->ph->std_length;
+#endif
 			break;
 
 		case phSTOP:
 			released = 0;
+			ph = p->ph;
 			if(next->type==phVOWEL)
 			{
 				 released = 1;
@@ -1465,6 +1480,23 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 			if(released == 0)
 				p->synthflags |= SFLAG_NEXT_PAUSE;
 
+			if(ph->phflags & phPREVOICE)
+			{
+				// a period of voicing before the release
+				memset(&fmtp, 0, sizeof(fmtp));
+				InterpretPhoneme(NULL, 0x01, p, &phdata, &worddata);
+				fmtp.fmt_addr = phdata.sound_addr[pd_FMT];
+				fmtp.fmt_amp = phdata.sound_param[pd_FMT];
+
+				if(last_pitch_cmd < 0)
+				{
+					DoAmplitude(next->amp,NULL);
+					DoPitch(envelope_data[p->env],next->pitch1,next->pitch2);
+				}
+
+				DoSpect2(ph, 0, &fmtp, p, 0);
+			}
+
 			InterpretPhoneme(NULL, 0, p, &phdata, &worddata);
 			phdata.pd_control |= pd_DONTLENGTHEN;
 			DoSample3(&phdata, 0, 0);
@@ -1748,7 +1780,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
 
 			if((option_phoneme_events) && (done_phoneme_marker == 0))
 			{
-				WritePhMnemonic(phoneme_name, p->ph, p, use_ipa);
+				WritePhMnemonic(phoneme_name, p->ph, p, use_ipa, NULL);
 				DoPhonemeMarker(espeakEVENT_PHONEME, sourceix, 0, phoneme_name);
 			}
 
@@ -1844,6 +1876,7 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
 	char *voice_change;
 	static FILE *f_text=NULL;
 	static const void *p_text=NULL;
+	const char *phon_out;
 
 	if(control == 4)
 	{
@@ -1866,7 +1899,6 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
 		n_phoneme_list = 0;
 		WcmdqStop();
 
-		embedded_value[EMBED_T] = 0;
 		return(0);
 	}
 
@@ -1933,24 +1965,18 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
 
 	if((option_phonemes > 0) || (phoneme_callback != NULL))
 	{
-		int use_ipa = 0;
-		if(option_phonemes == 3)
-			use_ipa = 1;
+		int phoneme_mode = 0;
+		if(option_phonemes >= 3)
+			phoneme_mode = 0x10 + option_phonemes-3;   // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators
 
-		GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
+		phon_out = GetTranslatedPhonemeString(phoneme_mode);
 		if(option_phonemes > 0)
 		{
-			fprintf(f_trans,"%s\n",translator->phon_out);
-
-			if(!iswalpha(0x010d))
-			{
-				// check that c-caron is recognized as an alphabetic character
-				fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n");
-			}
+			fprintf(f_trans,"%s\n",phon_out);
 		}
 		if(phoneme_callback != NULL)
 		{
-			phoneme_callback(translator->phon_out);
+			phoneme_callback(phon_out);
 		}
 	}
 
diff --git a/external/espeak/synthesize.h b/external/espeak/synthesize.h
old mode 100644
new mode 100755
index fb9c7e7..bbb571a
--- a/external/espeak/synthesize.h
+++ b/external/espeak/synthesize.h
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2007 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -56,7 +56,7 @@
 #define EMBED_A     3   // amplitude/volume
 #define EMBED_R     4   // pitch range/expression
 #define EMBED_H     5   // echo/reverberation
-#define EMBED_T     6   // different tone for announcing punctuation
+#define EMBED_T     6   // different tone for announcing punctuation (not used)
 #define EMBED_I     7   // sound icon
 #define EMBED_S2    8   // speed (used in synthesize)
 #define EMBED_Y     9   // say-as commands
@@ -72,6 +72,7 @@ extern int embedded_default[N_EMBEDDED_VALUES];
 
 
 #define N_PEAKS   9
+#define N_PEAKS2  9     // plus Notch and Fill (not yet implemented)
 #define N_MARKERS 8
 
 #define N_KLATTP   10   // this affects the phoneme data file format
@@ -192,26 +193,26 @@ typedef struct {
 
 // a clause translated into phoneme codes (first stage)
 typedef struct {
+	unsigned short synthflags;  // NOTE Put shorts on 32bit boundaries, because of RISC OS compiler bug?
 	unsigned char phcode;
 	unsigned char stresslevel;
-	unsigned char wordstress;
-	unsigned char tone_ph;    // tone phoneme to use with this vowel
-	unsigned short synthflags;
 	unsigned short sourceix;  // ix into the original source text string, only set at the start of a word
+	unsigned char wordstress;  // the highest level stress in this word
+	unsigned char tone_ph;    // tone phoneme to use with this vowel
 } PHONEME_LIST2;
 
 
 typedef struct {
 // The first section is a copy of PHONEME_LIST2
+	unsigned short synthflags;
 	unsigned char phcode;
 	unsigned char stresslevel;
+	unsigned short sourceix;  // ix into the original source text string, only set at the start of a word
 	unsigned char wordstress;  // the highest level stress in this word
 	unsigned char tone_ph;    // tone phoneme to use with this vowel
-	unsigned short synthflags;
-	unsigned short sourceix;  // ix into the original source text string, only set at the start of a word
 
 	PHONEME_TAB *ph;
-	short length;  // length_mod
+	unsigned int length;  // length_mod
 	unsigned char env;    // pitch envelope number
 	unsigned char type;
 	unsigned char prepause;
@@ -220,6 +221,11 @@ typedef struct {
 	unsigned char newword;   // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence
 	unsigned char pitch1;
 	unsigned char pitch2;
+#ifdef _ESPEAKEDIT
+	unsigned char std_length;
+	unsigned int phontab_addr;
+	int sound_param;
+#endif
 } PHONEME_LIST;
 
 
@@ -233,6 +239,7 @@ typedef struct {
 #define pd_INSERTPHONEME   i_INSERT_PHONEME
 #define pd_APPENDPHONEME   i_APPEND_PHONEME
 #define pd_CHANGEPHONEME   i_CHANGE_PHONEME
+#define pd_CHANGE_NEXTPHONEME  i_REPLACE_NEXT_PHONEME
 #define pd_LENGTHMOD       i_SET_LENGTH
 
 #define pd_FORNEXTPH     0x2
@@ -344,6 +351,7 @@ typedef struct {
 // phflags
 #define i_isSibilant   0x45    // bit 5 in phflags
 #define i_isPalatal    0x49    // bit 9 in phflags
+#define i_isLong       0x55    // bit 21 in phflags
 #define i_isRhotic     0x57    // bit 23 in phflags
 #define i_isFlag1      0x5c
 #define i_isFlag2      0x5d
@@ -372,7 +380,7 @@ typedef struct {
 typedef struct {
 	int pause_factor;
 	int clause_pause_factor;
-	int min_pause;
+	unsigned int min_pause;
 	int wav_factor;
 	int lenmod_factor;
 	int lenmod2_factor;
@@ -434,7 +442,7 @@ extern PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
 
 // list of phonemes in a clause
 extern int n_phoneme_list;
-extern PHONEME_LIST phoneme_list[N_PHONEME_LIST];
+extern PHONEME_LIST phoneme_list[N_PHONEME_LIST+1];
 extern unsigned int embedded_list[];
 
 extern unsigned char env_fall[128];
@@ -509,7 +517,8 @@ unsigned int LookupSound(PHONEME_TAB *ph1, PHONEME_TAB *ph2, int which, int *mat
 frameref_t *LookupSpect(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,  int *n_frames, PHONEME_LIST *plist);
 
 unsigned char *LookupEnvelope(int ix);
-int LoadPhData();
+int LoadPhData(int *srate);
+void FreePhData(void);
 
 void SynthesizeInit(void);
 int  Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume);
@@ -525,6 +534,8 @@ int  SelectPhonemeTableName(const char *name);
 void Write4Bytes(FILE *f, int value);
 int Read4Bytes(FILE *f);
 int Reverse4Bytes(int word);
+void print_dictionary_flags(unsigned int *flags, char *buf, int buf_len);
+char *DecodeRule(const char *group_chars, int group_length, char *rule, int control);
 int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, char *err_name,int flags);
 
 
@@ -566,8 +577,10 @@ void MbrolaReset(void);
 void DoEmbedded(int *embix, int sourceix);
 void DoMarker(int type, int char_posn, int length, int value);
 void DoPhonemeMarker(int type, int char_posn, int length, char *name);
+void DoSonicSpeed(int value);
 int DoSample3(PHONEME_DATA *phdata, int length_mod, int amp);
 int DoSpect2(PHONEME_TAB *this_ph, int which, FMT_PARAMS *fmt_params,  PHONEME_LIST *plist, int modulation);
+int FormantTransition2(frameref_t *seq, int *n_frames, unsigned int data1, unsigned int data2, PHONEME_TAB *other_ph, int which);
 int PauseLength(int pause, int control);
 int LookupPhonemeTable(const char *name);
 unsigned char *GetEnvelope(int index);
diff --git a/external/espeak/tr_languages.cpp b/external/espeak/tr_languages.cpp
index 4132d62..41b87ee 100644
--- a/external/espeak/tr_languages.cpp
+++ b/external/espeak/tr_languages.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -39,6 +39,7 @@
 #define L_qa   0x716100
 #define L_grc  0x677263   // grc  Ancient Greek
 #define L_jbo  0x6a626f   // jbo  Lojban
+#define L_mni  0x6d6e69   // mni  Manipuri
 #define L_pap  0x706170   // pap  Papiamento]
 #define L_qvi  0x717669   // qvi  Kichwa
 #define L_shs  0x736873   // shs  Shuswap / Secwepemctsin
@@ -48,6 +49,7 @@
 #define OFFSET_GREEK    0x380
 #define OFFSET_CYRILLIC 0x420
 #define OFFSET_ARMENIAN 0x530
+#define OFFSET_HEBREW   0x590
 #define OFFSET_ARABIC   0x600
 #define OFFSET_THAANA   0x780      // Divehi/Maldives
 #define OFFSET_DEVANAGARI  0x900
@@ -60,12 +62,82 @@
 #define OFFSET_KANNADA  0xc80
 #define OFFSET_MALAYALAM 0xd00
 #define OFFSET_SINHALA  0x0d80
+#define OFFSET_THAI     0x0e00
+#define OFFSET_LAO      0x0e80
 #define OFFSET_TIBET    0x0f00
-#define OFFSET_GEORGIAN 0x1080
+#define OFFSET_MYANMAR  0x1000
+#define OFFSET_GEORGIAN 0x10a0
 #define OFFSET_KOREAN   0x1100
 #define OFFSET_ETHIOPIC 0x1200
 
 
+// character ranges must be listed in ascending order
+ALPHABET alphabets [] = {
+    {"_el",    OFFSET_GREEK,    0x380, 0x3ff,  L('e','l'), AL_DONT_NAME | AL_NOT_LETTERS},
+    {"_cyr",   OFFSET_CYRILLIC, 0x400, 0x52f,  0, 0},
+    {"_hy",    OFFSET_ARMENIAN, 0x530, 0x58f,  L('h','y'), AL_WORDS},
+    {"_he",    OFFSET_HEBREW,   0x590, 0x5ff,  0, 0},
+    {"_ar",    OFFSET_ARABIC,   0x600, 0x6ff,  0, 0},
+    {"_dv",    OFFSET_THAANA,   0x780, 0x7bf,  0, 0},
+    {"_hi",    OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
+    {"_bn",    OFFSET_BENGALI,  0x0980, 0x9ff, L('b','n'), AL_WORDS},
+    {"_gur",   OFFSET_GURMUKHI, 0xa00, 0xa7f,  L('p','a'), AL_WORDS},
+    {"_gu",    OFFSET_GUJARATI, 0xa80, 0xaff,  L('g','u'), AL_WORDS},
+    {"_or",    OFFSET_ORIYA,    0xb00, 0xb7f,  0, 0},
+    {"_ta",    OFFSET_TAMIL,    0xb80, 0xbff,  L('t','a'), AL_WORDS},
+    {"_te",    OFFSET_TELUGU,   0xc00, 0xc7f,  L('t','e'), 0},
+    {"_kn",    OFFSET_KANNADA,  0xc80, 0xcff,  L('k','n'), AL_WORDS},
+    {"_ml",    OFFSET_MALAYALAM,0xd00, 0xd7f,  L('m','l'), AL_WORDS},
+    {"_si",    OFFSET_SINHALA,  0xd80, 0xdff,  L('s','i'), AL_WORDS},
+    {"_th",    OFFSET_THAI,     0xe00, 0xe7f,  0, 0},
+    {"_lo",    OFFSET_LAO,      0xe80, 0xeff,  0, 0},
+    {"_ti",    OFFSET_TIBET,    0xf00, 0xfff,  0, 0},
+    {"_my",    OFFSET_MYANMAR,  0x1000,0x109f, 0, 0},
+    {"_ka",    OFFSET_GEORGIAN, 0x10a0,0x10ff, L('k','a'), AL_WORDS},
+    {"_ko",    OFFSET_KOREAN,   0x1100,0x11ff, L('k','o'), AL_WORDS},
+    {"_eth",   OFFSET_ETHIOPIC, 0x1200,0x139f, 0, 0},
+    {"_braille", 0x2800,        0x2800,0x28ff, 0, AL_NO_SYMBOL},
+    {"_ja",    0x3040,          0x3040,0x30ff, 0, AL_NOT_CODE},
+    {"_zh",    0x3100,          0x3100,0x9fff, 0, AL_NOT_CODE},
+    {"_ko",    0xa700,          0xa700,0xd7ff, L('k','o'), AL_NOT_CODE | AL_WORDS},
+    {NULL, 0, 0, 0, 0, 0}
+};
+
+
+ALPHABET *AlphabetFromName(const char *name)
+{//==========================================
+	ALPHABET *alphabet;
+
+	for(alphabet=alphabets; alphabet->name != NULL; alphabet++)
+	{
+		if(strcmp(name, &alphabet->name[1]) == 0)
+			return(alphabet);
+	}
+	return(NULL);
+}
+
+
+ALPHABET *AlphabetFromChar(int c)
+{//===============================
+	// Find the alphabet from a character.
+	ALPHABET *alphabet = alphabets;
+
+	while(alphabet->name != NULL)
+	{
+		if(c <= alphabet->range_max)
+		{
+			if(c >= alphabet->range_min)
+				return(alphabet);
+			else
+				break;
+		}
+		alphabet++;
+	}
+	return(NULL);
+}
+
+
+
 static void Translator_Russian(Translator *tr);
 
 
@@ -93,7 +165,7 @@ static void SetLetterBits(Translator *tr, int group, const char *string)
 {//=====================================================================
 	int bits;
 	unsigned char c;
-	
+
 	bits = (1L << group);
 	while((c = *string++) != 0)
 		tr->letter_bits[c] |= bits;
@@ -113,16 +185,21 @@ static void SetLetterBitsRange(Translator *tr, int group, int first, int last)
 
 // ignore these characters
 static const unsigned short chars_ignore_default[] = {
+	0xad,    1, // soft hyphen
 	0x200c,  1, // zero width non-joiner
 	0x200d,  1, // zero width joiner
 	0, 0 };
 
 // alternatively, ignore characters but allow zero-width-non-joiner (lang-fa)
 static const unsigned short chars_ignore_zwnj_hyphen[] = {
+	0xad,    1, // soft hyphen
+	0x640,   1, // igniore Arabic Tatweel (lang=FA)
 	0x200c,  '-', // zero width non-joiner, replace with hyphen
 	0x200d,  1, // zero width joiner
 	0, 0 };
 
+const char string_ordinal[] = {static_cast<char>(0xc2),static_cast<char>(0xba),0};  // masculine ordinal character, UTF-8
+
 
 static Translator* NewTranslator(void)
 {//===================================
@@ -134,6 +211,29 @@ static Translator* NewTranslator(void)
 	static const wchar_t punct_in_word[2] = {'\'', 0};  // allow hyphen within words
 	static const unsigned char default_tunes[6] = {0, 1, 2, 3, 0, 0};
 
+// Translates character codes in the range transpose_min to transpose_max to
+// a number in the range 1 to 63.  0 indicates there is no translation.
+// Used up to 57 (max of 63)
+static const char transpose_map_latin[] = {
+ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,  // 0x60
+16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,  0,  0,  0,  0,  0,  // 0x70
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x80
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x90
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0xa0
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0xb0
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0xc0
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0xd0
+27, 28, 29,  0,  0, 30, 31, 32, 33, 34, 35, 36,  0, 37, 38,  0,  // 0xe0
+ 0,  0,  0, 39,  0,  0, 40,  0, 41,  0, 42,  0, 43,  0,  0,  0,  // 0xf0
+ 0,  0,  0, 44,  0, 45,  0, 46,  0,  0,  0,  0,  0, 47,  0,  0,  // 0x100
+ 0, 48,  0,  0,  0,  0,  0,  0,  0, 49,  0,  0,  0,  0,  0,  0,  // 0x110
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x120
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x130
+ 0,  0, 50,  0, 51,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x140
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 52,  0,  0,  0,  0,  // 0x150
+ 0, 53,  0, 54,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x160
+ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 55,  0, 56,  0, 57,  0,  // 0x170
+};
 
 	tr = (Translator *)Alloc(sizeof(Translator));
 	if(tr == NULL)
@@ -141,12 +241,15 @@ static Translator* NewTranslator(void)
 
 	tr->charset_a0 = charsets[1];   // ISO-8859-1, this is for when the input is not utf8
 	dictionary_name[0] = 0;
+	tr->dictionary_name[0] = 0;
 	tr->dict_condition=0;
+	tr->dict_min_size = 0;
 	tr->data_dictrules = NULL;     // language_1   translation rules file
 	tr->data_dictlist = NULL;      // language_2   dictionary lookup file
 
-	tr->transpose_min = 'a';
-	tr->transpose_max = 'z';
+	tr->transpose_min = 0x60;
+	tr->transpose_max = 0x17f;
+	tr->transpose_map = transpose_map_latin;
 	tr->frequent_pairs = NULL;
 
 	// only need lower case
@@ -191,8 +294,9 @@ static Translator* NewTranslator(void)
 	tr->langopts.param2[LOPT_BRACKET_PAUSE] = 2;    // pauses when announcing bracket names
 	tr->langopts.max_initial_consonants = 3;
 	tr->langopts.replace_chars = NULL;
-	tr->langopts.ascii_language = "";    // Non-Latin alphabet languages, use this language to speak Latin words, default is English
-
+	tr->langopts.ascii_language[0] = 0;    // Non-Latin alphabet languages, use this language to speak Latin words, default is English
+	tr->langopts.alt_alphabet_lang = L('e','n');
+	tr->langopts.roman_suffix = "";
 
 	SetLengthMods(tr,201);
 //	tr->langopts.length_mods = length_mods_en;
@@ -216,7 +320,7 @@ static Translator* NewTranslator(void)
 
 // common letter pairs, encode these as a single byte
 //  2 bytes, using the transposed character codes
-static const short pairs_ru[] = { 
+static const short pairs_ru[] = {
 0x010c, //  ла   21052  0x23
 0x010e, //  на   18400
 0x0113, //  та   14254
@@ -253,7 +357,7 @@ static const short pairs_ru[] = {
 
 
 
-static const unsigned int replace_cyrillic_latin[] = 
+static const unsigned int replace_cyrillic_latin[] =
 	{0x430,'a',
 	0x431,'b',
 	0x446,'c',
@@ -304,6 +408,7 @@ static void SetCyrillicLetters(Translator *tr)
 	tr->charset_a0 = charsets[18];   // KOI8-R
 	tr->transpose_min = 0x430;  // convert cyrillic from unicode into range 0x01 to 0x22
 	tr->transpose_max = 0x451;
+	tr->transpose_map = NULL;
 	tr->frequent_pairs = pairs_ru;
 
 	tr->letter_bits_offset = OFFSET_CYRILLIC;
@@ -319,7 +424,7 @@ static void SetCyrillicLetters(Translator *tr)
 }  // end of SetCyrillicLetters
 
 
-void SetIndicLetters(Translator *tr)
+static void SetIndicLetters(Translator *tr)
 {//=================================
 	// Set letter types for Indic scripts, Devanagari, Tamill, etc
 	static const char dev_consonants2[] = {0x02,0x03,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x7b,0x7c,0x7e,0x7f,0};
@@ -345,7 +450,7 @@ void SetIndicLetters(Translator *tr)
 }
 
 
-void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps)
+static void SetupTranslator(Translator *tr, const short *lengths, const unsigned char *amps)
 {//==================================================================================
 	if(lengths != NULL)
 		memcpy(tr->stress_lengths,lengths,sizeof(tr->stress_lengths));
@@ -359,6 +464,9 @@ Translator *SelectTranslator(const char *name)
 	int name2 = 0;
 	Translator *tr;
 
+	static const short stress_lengths_equal[8] = {230, 230,  230, 230,  0, 0,  230, 230};
+	static const unsigned char stress_amps_equal[8] = {19,19, 19,19, 19,19, 19,19 };
+
 	static const short stress_lengths_fr[8] = {190, 170,  190, 200,  0, 0,  190, 240};
 	static const unsigned char stress_amps_fr[8] = {18,16, 18,18, 18,18, 18,18 };
 
@@ -366,14 +474,16 @@ Translator *SelectTranslator(const char *name)
 	static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};
 
 	static const short stress_lengths_ta[8] = {200, 200,  210, 210,  0, 0,  230, 230};
+	static const short stress_lengths_ta2[8] = {230, 230,  240, 240,  0, 0,  260, 260};
 	static const unsigned char stress_amps_ta[8] = {18,18, 18,18, 20,20, 22,22 };
 
+	tr = NewTranslator();
+	strcpy(tr->dictionary_name, name);
+
 	// convert name string into a word of up to 4 characters, for the switch()
 	while(*name != 0)
 		name2 = (name2 << 8) + *name++;
 
-	tr = NewTranslator();
-
 	switch(name2)
 	{
 	case L('a','f'):
@@ -386,7 +496,7 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.param[LOPT_DIERESES] = 1;
 			tr->langopts.param[LOPT_PREFIXES] = 1;
 			SetLetterVowel(tr,'y');  // add 'y' to vowels
-		
+
 			tr->langopts.numbers = NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_ROMAN | NUM_1900;
 			tr->langopts.accents = 1;
 		}
@@ -397,7 +507,7 @@ Translator *SelectTranslator(const char *name)
 			SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
 			tr->letter_bits_offset = OFFSET_ETHIOPIC;
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x0024;  // don't use secondary stress
+			tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM;  // don't use secondary stress
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 			tr->langopts.numbers = NUM_OMIT_1_HUNDRED;
@@ -415,6 +525,7 @@ Translator *SelectTranslator(const char *name)
 		{
 			SetCyrillicLetters(tr);
 			SetLetterVowel(tr,0x2a);
+			tr->charset_a0 = charsets[5];   // ISO-8859-5
 			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x432;    // [v]  don't count this character at start of word
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x107;  // devoice at end of word, and change voicing to match a following consonant (except v)
 			tr->langopts.param[LOPT_REDUCE] = 2;
@@ -425,6 +536,8 @@ Translator *SelectTranslator(const char *name)
 		break;
 
 	case L('b','n'):  // Bengali
+	case L('a','s'):  // Assamese
+	case L_mni:  // Manipuri  (temporary placement - it's not indo-european)
 		{
 			static const short stress_lengths_bn[8] = {180, 180,  210, 210,  0, 0,  230, 240};
 			static const unsigned char stress_amps_bn[8] = {18,18, 18,18, 20,20, 22,22 };
@@ -433,12 +546,13 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags =  0x10004;   // use 'diminished' for unstressed final syllable
+			tr->langopts.stress_flags =  S_MID_DIM | S_FINAL_DIM;   // use 'diminished' for unstressed final syllable
 			tr->letter_bits_offset = OFFSET_BENGALI;
 			SetIndicLetters(tr);   // call this after setting OFFSET_BENGALI
+			SetLetterBitsRange(tr,LETTERGP_B,0x01,0x01);   // candranindu
 			SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c);   // vowel signs, but not virama
 
-			tr->langopts.numbers = 0x1;
+			tr->langopts.numbers = NUM_SWAP_TENS;
 			tr->langopts.break_numbers = 0x24924aa8;  // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
 		}
 		break;
@@ -469,7 +583,7 @@ Translator *SelectTranslator(const char *name)
 //			tr->langopts.intonation_group = 4;
 
 			// 'diminished' is an unstressed final syllable
-			tr->langopts.stress_flags =  0x6 | 0x10; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.unstressed_wd1 = 0;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_SONORANT_MIN] = 120;  // limit the shortening of sonorants before short vowels
@@ -505,7 +619,7 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.param[LOPT_PREFIXES] = 1;
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x100;  // devoice at end of word
 			tr->langopts.param[LOPT_LONG_VOWEL_THRESHOLD] = 175/2;
-		
+
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN;
 //			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ALLOW_SPACE | NUM_ORDINAL_DOT | NUM_ROMAN;
 			SetLetterVowel(tr,'y');
@@ -520,9 +634,9 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->letter_bits_offset = OFFSET_THAANA;
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags =  0x10004;   // use 'diminished' for unstressed final syllable
+			tr->langopts.stress_flags =  S_MID_DIM | S_FINAL_DIM;   // use 'diminished' for unstressed final syllable
 			SetLetterBitsRange(tr,LETTERGP_B,0x26,0x30);   // vowel signs, and virama
-			tr->langopts.break_numbers = 0x14a8;  // 1000, 100,000  10,000,000 
+			tr->langopts.break_numbers = 0x14a8;  // 1000, 100,000  10,000,000
 			tr->langopts.numbers = 1;
 		}
 		break;
@@ -550,10 +664,10 @@ Translator *SelectTranslator(const char *name)
 
 			// character codes offset by 0x380
 			static const char el_vowels[] = {0x10,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x35,0x37,0x39,0x3f,0x45,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0};
-			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ  έ ή ί ύ
-			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};  // θ κ ξ π ς σ τ φ χ 
+			static const char el_fvowels[] = {0x2d,0x2e,0x2f,0x35,0x37,0x39,0x45,0x4d,0}; // ε η ι υ  έ ή ί ύ _
+			static const char el_voiceless[]= {0x38,0x3a,0x3e,0x40,0x42,0x43,0x44,0x46,0x47,0};  // θ κ ξ π ς σ τ φ χ _
 			static const char el_consonants[]={0x32,0x33,0x34,0x36,0x38,0x3a,0x3b,0x3c,0x3d,0x3e,0x40,0x41,0x42,0x43,0x44,0x46,0x47,0x48,0};
-			static const wchar_t el_char_apostrophe[] = {0x3c3,0};  // σ
+			static const wchar_t el_char_apostrophe[] = {0x3c3,0};  // σ _
 
 			SetupTranslator(tr,stress_lengths_el,stress_amps_el);
 
@@ -566,17 +680,17 @@ Translator *SelectTranslator(const char *name)
 			SetLetterBits(tr,LETTERGP_VOWEL2,el_vowels);
 			SetLetterBits(tr,LETTERGP_B,el_voiceless);
 			SetLetterBits(tr,LETTERGP_C,el_consonants);
-			SetLetterBits(tr,LETTERGP_Y,el_fvowels);    // front vowels: ε η ι υ
+			SetLetterBits(tr,LETTERGP_Y,el_fvowels);    // front vowels: ε η ι υ _
 
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x6;  // mark unstressed final syllables as diminished
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY;  // mark unstressed final syllables as diminished
 			tr->langopts.unstressed_wd1 = 0;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_SONORANT_MIN] = 130;  // limit the shortening of sonorants before short vowels
 
-			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; 
-			tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL;   // variant form of numbers before thousands
+			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA;
+			tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND;   // variant form of numbers before thousands
 
 			if(name2 == L_grc)
 			{
@@ -591,7 +705,7 @@ Translator *SelectTranslator(const char *name)
 			static const short stress_lengths_eo[8] = {150, 150,  230, 180,    0,   0,  300, 320};
 			static const unsigned char stress_amps_eo[] = {16,14, 20,20, 20,22, 22,21 };
 			static const wchar_t eo_char_apostrophe[2] = {'l',0};
-		
+
 			SetupTranslator(tr,stress_lengths_eo,stress_amps_eo);
 
 			tr->charset_a0 = charsets[3];  // ISO-8859-3
@@ -600,7 +714,7 @@ Translator *SelectTranslator(const char *name)
 //			tr->langopts.word_gap = 1;
 			tr->langopts.vowel_pause = 2;
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags =  0x6 | 0x10; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 //			tr->langopts.unstressed_wd1 = 3;
 			tr->langopts.unstressed_wd2 = 2;
 
@@ -609,6 +723,7 @@ Translator *SelectTranslator(const char *name)
 		break;
 
 	case L('e','s'):   // Spanish
+	case L('a','n'):   // Aragonese
 	case L('c','a'):   // Catalan
 	case L_pap:        // Papiamento
 		{
@@ -623,23 +738,33 @@ Translator *SelectTranslator(const char *name)
 
 			// stress last syllable if it doesn't end in vowel or "s" or "n"
 			// 'diminished' is an unstressed final syllable
-			tr->langopts.stress_flags = 0x200 | 0x6 | 0x10; 
+			tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.unstressed_wd1 = 0;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_SONORANT_MIN] = 120;  // limit the shortening of sonorants before short vowels
 
 			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER;
-			tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; 
+			tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND;
 
 			if(name2 == L('c','a'))
 			{
+				// stress last syllable unless word ends with a vowel
 				tr->punct_within_word = ca_punct_within_word;
-				tr->langopts.stress_flags = 0x200 | 0x6 | 0x30;  // stress last syllable unless word ends with a vowel
+				tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
+			}
+			else
+			if(name2 == L('a','n'))
+			{
+				tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2;
+				tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_ORDINAL;
+				tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND;
+				tr->langopts.roman_suffix = string_ordinal;
 			}
 			else
 			if(name2 == L_pap)
 			{
-				tr->langopts.stress_flags = 0x100 | 0x6 | 0x30;  // stress last syllable unless word ends with a vowel
+				// stress last syllable unless word ends with a vowel
+				tr->langopts.stress_flags = S_FINAL_STRESS_C | S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2;
 			}
 			else
 			{
@@ -654,14 +779,32 @@ Translator *SelectTranslator(const char *name)
 			static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 };
 			SetupTranslator(tr,stress_lengths_eu,stress_amps_eu);
 			tr->langopts.stress_rule = STRESSPOSN_2L;  // ?? second syllable ??
-			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_VIGESIMAL;
+			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL;
 		}
 		break;
 
 
 	case L('f','a'):   // Farsi
 		{
+ 			// Convert characters in the range 0x620 to 0x6cc to the range 1 to 63.
+			// 0 indicates no translation for this character
+			static const char transpose_map_fa[] = {
+			 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,  // 0x620
+			16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,  0,  0,  0,  0,  0,  // 0x630
+			 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,  // 0x640
+			42, 43,  0,  0, 44,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x650
+			 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x660
+			 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 45,  0,  // 0x670
+			 0,  0,  0,  0,  0,  0, 46,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x680
+			 0,  0,  0,  0,  0,  0,  0,  0, 47,  0,  0,  0,  0,  0,  0,  0,  // 0x690
+			 0,  0,  0,  0,  0,  0,  0,  0,  0, 48,  0,  0,  0,  0,  0, 49,  // 0x6a0
+			 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  // 0x6b0
+			50,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 51  };           // 0x6c0
+			tr->transpose_min = 0x620;
+			tr->transpose_max = 0x6cc;
+			tr->transpose_map = transpose_map_fa;
 			tr->letter_bits_offset = OFFSET_ARABIC;
+
 			tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND;
 			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 
@@ -681,7 +824,7 @@ Translator *SelectTranslator(const char *name)
 			SetupTranslator(tr,stress_lengths_fi,stress_amps_fi);
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x56;  // move secondary stress from light to a following heavy syllable
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_2_TO_HEAVY;  // move secondary stress from light to a following heavy syllable
 			tr->langopts.param[LOPT_IT_DOUBLING] = 1;
 			tr->langopts.long_stop = 130;
 
@@ -697,7 +840,7 @@ Translator *SelectTranslator(const char *name)
 		{
 			SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
 			tr->langopts.stress_rule = STRESSPOSN_1R;      // stress on final syllable
-			tr->langopts.stress_flags = 0x0024;  // don't use secondary stress
+			tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM;  // don't use secondary stress
 			tr->langopts.param[LOPT_IT_LENGTHEN] = 1;    // remove lengthen indicator from unstressed syllables
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->langopts.accents = 2;   // Say "Capital" after the letter.
@@ -707,9 +850,23 @@ Translator *SelectTranslator(const char *name)
 		}
 		break;
 
+	case L('g','a'):   // irish
+	case L('g','d'):   // scots gaelic
+		{
+			tr->langopts.stress_rule = STRESSPOSN_1L;
+			tr->langopts.stress_flags = S_NO_AUTO_2;  // don't use secondary stress
+			tr->langopts.numbers = NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND;
+			tr->langopts.accents = 2;  // 'capital' after letter name
+			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3;  // don't count apostrophe
+			tr->langopts.param[LOPT_IT_LENGTHEN] = 1;    // remove [:] phoneme from non-stressed syllables (Lang=gd)
+		}
+		break;
+
 	case L('h','i'):    // Hindi
 	case L('n','e'):    // Nepali
+	case L('o','r'):    // Oriya
 	case L('p','a'):    // Punjabi
+	case L('g','u'):    // Gujarati
 		{
 			static const short stress_lengths_hi[8] = {190, 190,  210, 210,  0, 0,  230, 250};
 			static const unsigned char stress_amps_hi[8] = {17,14, 20,19, 20,22, 22,21 };
@@ -719,7 +876,7 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 
 			tr->langopts.stress_rule = 6;      // stress on last heaviest syllable, excluding final syllable
-			tr->langopts.stress_flags =  0x10004;   // use 'diminished' for unstressed final syllable
+			tr->langopts.stress_flags =  S_MID_DIM | S_FINAL_DIM;   // use 'diminished' for unstressed final syllable
 			tr->langopts.numbers = NUM_SWAP_TENS;
 			tr->langopts.break_numbers = 0x14aa8;  // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
 			tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -728,12 +885,26 @@ Translator *SelectTranslator(const char *name)
 			{
 				tr->letter_bits_offset = OFFSET_GURMUKHI;
 			}
+			else
+			if(name2 == L('g','u'))
+			{
+SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
+			    tr->letter_bits_offset = OFFSET_GUJARATI;
+			    tr->langopts.stress_rule = STRESSPOSN_2R;
+			}
+			else
 			if(name2 == L('n','e'))
 			{
+SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
 				tr->langopts.break_numbers = 0x2aaaa8;
 				tr->langopts.max_digits = 22;
 				tr->langopts.numbers2 |= NUM2_ENGLISH_NUMERALS;
 			}
+			else
+			if(name2 == L('o','r'))
+			{
+				tr->letter_bits_offset = OFFSET_ORIYA;
+			}
 			SetIndicLetters(tr);
 		}
 		break;
@@ -747,6 +918,8 @@ Translator *SelectTranslator(const char *name)
 			static const short stress_lengths_hr[8] = {180,160, 200,200, 0,0, 220,230};
 			static const short stress_lengths_sr[8] = {160,150, 200,200, 0,0, 250,260};
 
+			strcpy(tr->dictionary_name, "hbs");
+
 			if(name2 == L('s','r'))
 				SetupTranslator(tr,stress_lengths_sr,stress_amps_hr);
 			else
@@ -754,7 +927,7 @@ Translator *SelectTranslator(const char *name)
 			tr->charset_a0 = charsets[2];   // ISO-8859-2
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x10;  
+			tr->langopts.stress_flags = S_FINAL_NO_2;
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
  			tr->langopts.max_initial_consonants = 5;
 			tr->langopts.spelling_stress = 1;
@@ -763,6 +936,7 @@ Translator *SelectTranslator(const char *name)
 			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_DECIMAL_COMMA | NUM_THOUS_SPACE | NUM_DFRACTION_2 | NUM_ROMAN_CAPITALS;
 			tr->langopts.numbers2 = 0xa + NUM2_THOUSANDS_VAR5;  // variant numbers before thousands,milliards
 			tr->langopts.replace_chars = replace_cyrillic_latin;
+			tr->langopts.our_alphabet = OFFSET_CYRILLIC;   // don't say "cyrillic" before letter names
 
 			SetLetterVowel(tr,'y');
 			SetLetterVowel(tr,'r');
@@ -773,7 +947,7 @@ Translator *SelectTranslator(const char *name)
 	case L('h','t'):  // Haitian Creole
 //			memcpy(tr->stress_lengths,stress_lengths_fr,sizeof(tr->stress_lengths));
 			tr->langopts.stress_rule = STRESSPOSN_1R;      // stress on final syllable
-			tr->langopts.stress_flags = 0x0024;  // don't use secondary stress
+			tr->langopts.stress_flags = S_NO_AUTO_2 | S_FINAL_DIM;  // don't use secondary stress
 			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_OMIT_1_HUNDRED | NUM_NOPAUSE | NUM_ROMAN | NUM_VIGESIMAL | NUM_DFRACTION_4;
 		break;
 
@@ -788,7 +962,7 @@ Translator *SelectTranslator(const char *name)
 
 			tr->langopts.vowel_pause = 0x20;
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x8036 | S_HYPEN_UNSTRESS;
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_NO_AUTO_2 | 0x8000 | S_HYPEN_UNSTRESS;
 			tr->langopts.unstressed_wd1 = 2;
 			tr->langopts.param[LOPT_IT_DOUBLING] = 1;
 			tr->langopts.param[LOPT_ANNOUNCE_PUNCT] = 2;  // don't break clause before announcing . ? !
@@ -809,7 +983,8 @@ SetLengthMods(tr,3);  // all equal
 			static const short stress_lengths_hy[8] = {250, 200,  250, 250,  0, 0,  250, 250};
 			static const char hy_vowels[] = {0x31, 0x35, 0x37, 0x38, 0x3b, 0x48, 0x55, 0};
 			static const char hy_consonants[] = {0x32,0x33,0x34,0x36,0x39,0x3a,0x3c,0x3d,0x3e,0x3f,
-				0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
+				0x40,0x41,0x42,0x43,0x44,   0x46,0x47,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
+			static const char hy_consonants2[] = {0x45,0};
 
 			SetupTranslator(tr,stress_lengths_hy,NULL);
 			tr->langopts.stress_rule = STRESSPOSN_1R;  // default stress on final syllable
@@ -818,14 +993,17 @@ SetLengthMods(tr,3);  // all equal
 			memset(tr->letter_bits,0,sizeof(tr->letter_bits));
 			SetLetterBits(tr,LETTERGP_A,hy_vowels);
 			SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels);
+			SetLetterBits(tr,LETTERGP_B,hy_consonants);    // not including 'j'
 			SetLetterBits(tr,LETTERGP_C,hy_consonants);
+			SetLetterBits(tr,LETTERGP_C,hy_consonants2);   // add 'j'
 			tr->langopts.max_initial_consonants = 6;
-			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
-//	tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
+			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED;
+		//	tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 		}
 		break;
 
 	case L('i','d'):   // Indonesian
+	case L('m','s'):   // Malay
 		{
 			static const short stress_lengths_id[8] = {160, 200,  180, 180,  0, 0,  220, 240};
 			static const unsigned char stress_amps_id[8] = {16,18, 18,18, 20,22, 22,21 };
@@ -833,7 +1011,7 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_id,stress_amps_id);
 			tr->langopts.stress_rule = STRESSPOSN_2R;
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_ROMAN;
-			tr->langopts.stress_flags =  0x6 | 0x10; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.accents = 2;  // "capital" after letter name
 		}
 		break;
@@ -845,7 +1023,7 @@ SetLengthMods(tr,3);  // all equal
 
 			SetupTranslator(tr,stress_lengths_is,NULL);
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x10;
+			tr->langopts.stress_flags = S_FINAL_NO_2;
 			tr->langopts.param[LOPT_IT_LENGTHEN] = 0x11;    // remove lengthen indicator from unstressed vowels
 			tr->langopts.param[LOPT_REDUCE] = 2;
 
@@ -868,16 +1046,16 @@ SetLengthMods(tr,3);  // all equal
 
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x10 | 0x20000; 
+			tr->langopts.stress_flags = S_FINAL_NO_2 | S_PRIORITY_STRESS;
 			tr->langopts.vowel_pause = 1;
 			tr->langopts.unstressed_wd1 = 2;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_IT_LENGTHEN] = 2;    // remove lengthen indicator from unstressed or non-penultimate syllables
-			tr->langopts.param[LOPT_IT_DOUBLING] = 2;    // double the first consonant if the previous word ends in a stressed vowel
+			tr->langopts.param[LOPT_IT_DOUBLING] = 1;    // double the first consonant if the previous word ends in a stressed vowel (changed to =1, 23.01.2014 - only use if prev.word has $double)
 			tr->langopts.param[LOPT_SONORANT_MIN] = 130;  // limit the shortening of sonorants before short vowels
 			tr->langopts.param[LOPT_REDUCE] = 1;        // reduce vowels even if phonemes are specified in it_list
 			tr->langopts.param[LOPT_ALT] = 2;      // call ApplySpecialAttributes2() if a word has $alt or $alt2
-			tr->langopts.numbers = NUM_SINGLE_VOWEL | NUM_OMIT_1_HUNDRED |NUM_DECIMAL_COMMA | NUM_ROMAN | NUM_DFRACTION_1;
+			tr->langopts.numbers = NUM_SINGLE_VOWEL | NUM_OMIT_1_HUNDRED |NUM_DECIMAL_COMMA | NUM_ROMAN | NUM_DFRACTION_1 | NUM_ROMAN_CAPITALS | NUM_ROMAN_AFTER;
 			tr->langopts.accents = 2;   // Say "Capital" after the letter.
 			SetLetterVowel(tr,'y');
 		}
@@ -902,8 +1080,10 @@ SetLengthMods(tr,3);  // all equal
 	case L('k','a'):   // Georgian
 		{
 			// character codes offset by 0x1080
-			static const char ka_vowels[] = {0x50,0x54,0x58,0x5d,0x63,0x75,0x77,0};
-			static const char ka_consonants[] = {0x51,0x52,0x53,0x55,0x56,0x57,0x59,0x5a,0x5b,0x5c,0x5e,0x5f,0x60,0x61,0x62,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x76,0};
+			static const char ka_vowels[] = {0x30,0x34,0x38,0x3d,0x43,0x55,0x57,0};
+			static const char ka_consonants[] =
+				{0x31,0x32,0x33,0x35,0x36,0x37,0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x41,0x42,0x44,
+				0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x56,0};
 			SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
 			memset(tr->letter_bits,0,sizeof(tr->letter_bits));
 			SetLetterBits(tr,LETTERGP_A,ka_vowels);
@@ -916,6 +1096,9 @@ SetLengthMods(tr,3);  // all equal
 //			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 			tr->langopts.max_initial_consonants = 7;
 			tr->langopts.numbers = NUM_VIGESIMAL | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED |NUM_OMIT_1_THOUSAND | NUM_DFRACTION_5 | NUM_ROMAN;
+
+			tr->langopts.alt_alphabet = OFFSET_CYRILLIC;
+			tr->langopts.alt_alphabet_lang = L('r','u');
 		}
 		break;
 
@@ -923,7 +1106,7 @@ SetLengthMods(tr,3);  // all equal
 		{
 			static const unsigned char stress_amps_tr[8] = {18,16, 20,21, 20,21, 21,20 };
 			static const short stress_lengths_tr[8] = {190,180, 230,230, 0,0, 250,250};
- 
+
 			tr->letter_bits_offset = OFFSET_CYRILLIC;
 			memset(tr->letter_bits,0,sizeof(tr->letter_bits));
 			SetLetterBits(tr,LETTERGP_A,(char *)ru_vowels);
@@ -943,12 +1126,22 @@ SetLengthMods(tr,3);  // all equal
 		}
 		break;
 
+	case L('k','l'):   // Greenlandic
+		{
+			SetupTranslator(tr,stress_lengths_equal,stress_amps_equal);
+			tr->langopts.stress_rule = 12;
+			tr->langopts.stress_flags = S_NO_AUTO_2;
+			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_SWAP_TENS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_ORDINAL_DOT | NUM_1900 | NUM_ROMAN | NUM_ROMAN_CAPITALS | NUM_ROMAN_ORDINAL;
+		}
+		break;
+
 	case L('k','o'):   // Korean, TEST
 		{
 			static const char ko_ivowels[] = {0x63,0x64,0x67,0x68,0x6d,0x72,0x74,0x75,0};  // y and i vowels
 			static const unsigned char ko_voiced[] = {0x02,0x05,0x06,0xab,0xaf,0xb7,0xbc,0};  // voiced consonants, l,m,n,N
 
 			tr->letter_bits_offset = OFFSET_KOREAN;
+			tr->langopts.our_alphabet = 0xa700;
 			memset(tr->letter_bits,0,sizeof(tr->letter_bits));
 			SetLetterBitsRange(tr,LETTERGP_A,0x61,0x75);
 			SetLetterBits(tr,LETTERGP_Y,ko_ivowels);
@@ -982,7 +1175,7 @@ SetLengthMods(tr,3);  // all equal
 		{
 			tr->charset_a0 = charsets[4];   // ISO-8859-4, includes a,e,i,o,u-macron
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x20;
+			tr->langopts.stress_flags = S_NO_AUTO_2;
 			tr->langopts.unstressed_wd1 = 0;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_DIERESES] = 1;
@@ -995,7 +1188,7 @@ SetLengthMods(tr,3);  // all equal
 		{
 			tr->charset_a0 = charsets[4]; // ISO-8859-4
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x20;
+			tr->langopts.stress_flags = S_NO_AUTO_2;
 			tr->langopts.unstressed_wd1 = 0;
 			tr->langopts.unstressed_wd2 = 2;
 			tr->langopts.param[LOPT_DIERESES] = 1;
@@ -1016,7 +1209,7 @@ SetLengthMods(tr,3);  // all equal
 			tr->langopts.spelling_stress = 1;
 			tr->charset_a0 = charsets[4];   // ISO-8859-4
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_4 | NUM_ORDINAL_DOT;
-			tr->langopts.stress_flags = 0x16 + 0x40000;
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_EO_CLAUSE1;
 		}
 		break;
 
@@ -1030,6 +1223,7 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_mk,stress_amps_mk);
 			tr->charset_a0 = charsets[5];   // ISO-8859-5
 			tr->letter_groups[0] = tr->letter_groups[7] = vowels_cyrillic;
+			tr->letter_bits_offset = OFFSET_CYRILLIC;
 
 			tr->langopts.stress_rule = STRESSPOSN_3R;   // antipenultimate
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
@@ -1082,7 +1276,7 @@ SetLengthMods(tr,3);  // all equal
 
 			SetupTranslator(tr,stress_lengths_om,stress_amps_om);
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x16 + 0x80000;
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | 0x80000;
 		}
 		break;
 
@@ -1095,7 +1289,7 @@ SetLengthMods(tr,3);  // all equal
 
 			tr->charset_a0 = charsets[2];   // ISO-8859-2
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x6;  // mark unstressed final syllables as diminished
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY;  // mark unstressed final syllables as diminished
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x9;
  			tr->langopts.max_initial_consonants = 7; // for example: wchrzczony :)
  			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_2;
@@ -1114,13 +1308,15 @@ SetLengthMods(tr,3);  // all equal
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 
 			tr->langopts.stress_rule = STRESSPOSN_1R;        // stress on final syllable
-			tr->langopts.stress_flags =  0x6 | 0x10 | 0x2000 | 0x20000; 
-			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN;
-			tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS;
+			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN_CAPITALS;
+			tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND;
+			tr->langopts.max_roman = 5000;
 			SetLetterVowel(tr,'y');
 			ResetLetterBits(tr,0x2);
 			SetLetterBits(tr,1,"bcdfgjkmnpqstvxz");      // B  hard consonants, excluding h,l,r,w,y
 			tr->langopts.param[LOPT_ALT] = 2;      // call ApplySpecialAttributes2() if a word has $alt or $alt2
+			tr->langopts.accents = 2;  // 'capital' after letter name
 		}
 		break;
 
@@ -1132,7 +1328,7 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_ro,stress_amps_ro);
 
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x100 + 0x6;
+			tr->langopts.stress_flags = S_FINAL_STRESS_C + S_FINAL_DIM_ONLY;
 
 			tr->charset_a0 = charsets[2];   // ISO-8859-2
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_DFRACTION_3 | NUM_AND_UNITS | NUM_ROMAN;
@@ -1147,9 +1343,9 @@ SetLengthMods(tr,3);  // all equal
 	case L('r','w'):   // Kiryarwanda
 		{
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags = 0x16;
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
-
+			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words.  Need to allow "bw'" prefix
 			tr->langopts.numbers = NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_2 | NUM_AND_HUNDRED;
 			tr->langopts.numbers2 = 0x200;  // say "thousands" before its number
 		}
@@ -1164,7 +1360,7 @@ SetLengthMods(tr,3);  // all equal
 			tr->charset_a0 = charsets[2];   // ISO-8859-2
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags = 0x16;  
+			tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x3;
  			tr->langopts.max_initial_consonants = 5;
 			tr->langopts.spelling_stress = 1;
@@ -1193,21 +1389,21 @@ SetLengthMods(tr,3);  // all equal
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags =  S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2;
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;
 			tr->langopts.spelling_stress = 1;
 
 			tr->letter_bits_offset = OFFSET_SINHALA;
 			memset(tr->letter_bits,0,sizeof(tr->letter_bits));
 			SetLetterBitsRange(tr,LETTERGP_A,0x05,0x16);   // vowel letters
 			SetLetterBitsRange(tr,LETTERGP_A,0x4a,0x73);   // + vowel signs, and virama
-		
+
 			SetLetterBitsRange(tr,LETTERGP_B,0x4a,0x73);   // vowel signs, and virama
-		
+
 			SetLetterBitsRange(tr,LETTERGP_C,0x1a,0x46);   // the main consonant range
-		
+
 			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 			tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4a;   //virama
-			tr->langopts.numbers =  NUM_OMIT_1_THOUSAND;
+			tr->langopts.numbers =  NUM_OMIT_1_THOUSAND | NUM_SINGLE_STRESS_L | NUM_DFRACTION_7;
 			tr->langopts.numbers2 =  NUM2_PERCENT_BEFORE;
 			tr->langopts.break_numbers = 0x14aa8;  // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
 		}
@@ -1216,12 +1412,16 @@ SetLengthMods(tr,3);  // all equal
 	case L('s','l'):  // Slovenian
 			tr->charset_a0 = charsets[2];   // ISO-8859-2
 			tr->langopts.stress_rule = STRESSPOSN_2R;   // Temporary
-			tr->langopts.stress_flags = 0x20;
+			tr->langopts.stress_flags = S_NO_AUTO_2;
 			tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 0x103;
+			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76;    // [v]  don't count this character at start of word
+			tr->langopts.param[LOPT_ALT] = 2;      // call ApplySpecialAttributes2() if a word has $alt or $alt2
+			tr->langopts.param[LOPT_IT_LENGTHEN] = 1;    // remove lengthen indicator from unstressed syllables
+			tr->letter_bits['r'] |= 0x80;    // add 'r' to letter group 7, vowels for Unpronouncable test
 			tr->langopts.numbers =  NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN;
 			tr->langopts.numbers2 = 0x100;   // plural forms of millions etc
 			tr->langopts.thousands_sep = ' ';   // don't allow dot as thousands separator
-			SetLetterVowel(tr,'r');
+			tr->langopts.replace_chars = replace_cyrillic_latin;
 		break;
 
 	case L('s','q'):  // Albanian
@@ -1232,7 +1432,7 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_sq,stress_amps_sq);
 
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags =  0x16 + 0x100; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_FINAL_STRESS_C;
 			SetLetterVowel(tr,'y');
 			tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_DFRACTION_4;
 			tr->langopts.accents = 2;  // "capital" after letter name
@@ -1264,7 +1464,9 @@ SetLengthMods(tr,3);  // all equal
 
 			tr->langopts.vowel_pause = 1;
 			tr->langopts.stress_rule = STRESSPOSN_2R;
-			tr->langopts.stress_flags =  0x6 | 0x10; 
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;
+ 			tr->langopts.max_initial_consonants = 4; // for example: mwngi
+
 
 			tr->langopts.numbers = NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_SINGLE_AND | NUM_OMIT_1_HUNDRED;
 			tr->langopts.break_numbers = 0x49249268;  // for languages which have numbers for 100,000 and 1,000,000
@@ -1272,24 +1474,28 @@ SetLengthMods(tr,3);  // all equal
 		break;
 
 	case L('t','a'):  // Tamil
-	case L('m','l'):  // Malayalam
 	case L('k','n'):  // Kannada
+	case L('m','l'):  // Malayalam
 	case L('m','r'):  // Marathi
 	case L('t','e'):  // Telugu
 		{
-			SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
+			SetupTranslator(tr,stress_lengths_ta2, stress_amps_ta);
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 
 			tr->langopts.stress_rule = STRESSPOSN_1L;
-			tr->langopts.stress_flags =  0x10004;   // use 'diminished' for unstressed final syllable
+			tr->langopts.stress_flags =  S_FINAL_DIM_ONLY | S_FINAL_NO_2;   // use 'diminished' for unstressed final syllable
 			tr->langopts.spelling_stress = 1;
-			tr->langopts.break_numbers = 0x14a8;  // 1000, 100,000  10,000,000 
+			tr->langopts.break_numbers = 0x14a8;  // 1000, 100,000  10,000,000
 
 			if(name2 == L('t','a'))
 			{
+				SetupTranslator(tr,stress_lengths_ta, NULL);
 				tr->letter_bits_offset = OFFSET_TAMIL;
 				tr->langopts.numbers =  NUM_OMIT_1_THOUSAND ;
+				tr->langopts.numbers2 = NUM2_ORDINAL_AND_THOUSANDS;
+				tr->langopts.param[LOPT_WORD_MERGE] = 1;   // don't break vowels betwen words
 			}
+			else
 			if(name2 == L('m','r'))
 			{
 				tr->letter_bits_offset = OFFSET_DEVANAGARI;
@@ -1297,8 +1503,12 @@ SetLengthMods(tr,3);  // all equal
 			else
 			if(name2 == L('m','l'))
 			{
+				static const short stress_lengths_ml[8] = {180, 160,  240, 240,  0, 0,  260, 260};
+				SetupTranslator(tr,stress_lengths_ml, stress_amps_equal);
 				tr->letter_bits_offset = OFFSET_MALAYALAM;
-				tr->langopts.numbers = NUM_OMIT_1_THOUSAND;
+				tr->langopts.numbers = NUM_OMIT_1_THOUSAND | NUM_OMIT_1_HUNDRED;
+				tr->langopts.numbers2 = NUM2_OMIT_1_HUNDRED_ONLY;
+				tr->langopts.stress_rule = 13;   // 1st syllable, unless 1st vowel is short and 2nd is long
 			}
 			else
 			if(name2 == L('k','n'))
@@ -1312,9 +1522,8 @@ SetLengthMods(tr,3);  // all equal
 				tr->letter_bits_offset = OFFSET_TELUGU;
 				tr->langopts.numbers = 0x1;
 			}
-			tr->langopts.param[LOPT_WORD_MERGE] = 1;   // don't break vowels betwen words
 			SetIndicLetters(tr);   // call this after setting OFFSET_
-				SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e);   // chillu-virama (unofficial)
+			SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e);   // chillu-virama (unofficial)
 		}
 		break;
 
@@ -1327,7 +1536,7 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_th,stress_amps_th);
 
 			tr->langopts.stress_rule = 0;   // stress on final syllable of a "word"
-			tr->langopts.stress_flags = 2;          // don't automatically set diminished stress (may be set in the intonation module)
+			tr->langopts.stress_flags = S_NO_DIM;          // don't automatically set diminished stress (may be set in the intonation module)
 			tr->langopts.tone_language = 1;   // Tone language, use  CalcPitches_Tone() rather than CalcPitches()
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 //			tr->langopts.tone_numbers = 1;   // a number after letters indicates a tone number (eg. pinyin or jyutping)
@@ -1346,7 +1555,8 @@ SetLengthMods(tr,3);  // all equal
 			tr->charset_a0 = charsets[9];   // ISO-8859-9 - Latin5
 
 			tr->langopts.stress_rule = 7;   // stress on the last syllable, before any explicitly unstressed syllable
-			tr->langopts.stress_flags = 0x20;  //no automatic secondary stress
+			tr->langopts.stress_flags = S_NO_AUTO_2;  //no automatic secondary stress
+			tr->langopts.dotless_i = 1;
 			tr->langopts.param[LOPT_SUFFIX] = 1;
 
 			if(name2 == L('a','z'))
@@ -1362,14 +1572,14 @@ SetLengthMods(tr,3);  // all equal
 		break;
 
 	case L('t','t'):   // Tatar
-      {
+		{
 			SetCyrillicLetters(tr);
 			SetupTranslator(tr,stress_lengths_fr,stress_amps_fr);
 			tr->langopts.stress_rule = STRESSPOSN_1R;      // stress on final syllable
-			tr->langopts.stress_flags = 0x20;  //no automatic secondary stress
+			tr->langopts.stress_flags = S_NO_AUTO_2;  //no automatic secondary stress
 			tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_4;
-      }
-      break;
+		}
+		break;
 
 	case L('u','k'):   // Ukrainian
 		{
@@ -1379,10 +1589,13 @@ SetLengthMods(tr,3);  // all equal
 		break;
 
 	case L('u','r'):   // Urdu
+	case L('s','d'):   // Sindhi
+		{
 			tr->letter_bits_offset = OFFSET_ARABIC;
 			tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
 			tr->langopts.numbers = NUM_SWAP_TENS;
 			tr->langopts.break_numbers = 0x52a8;  // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
+		}
 		break;
 
 	case L('v','i'):  // Vietnamese
@@ -1401,7 +1614,7 @@ SetLengthMods(tr,3);  // all equal
 				0x1a1, 0x1edd, 0x1edb, 0x1edf, 0x1ee1, 0x1ee3,	// ơ
 				0x75, 0xf9, 0xfa, 0x1ee7, 0x169, 0x1ee5,			// u
 				0x1b0, 0x1eeb, 0x1ee9, 0x1eed, 0x1eef, 0x1ef1,	// ư
-				0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1e, 0 };	// y
+				0x79, 0x1ef3, 0xfd, 0x1ef7, 0x1ef9, 0x1ef5, 0 };	// y
 
 			SetupTranslator(tr,stress_lengths_vi,stress_amps_vi);
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
@@ -1431,12 +1644,13 @@ SetLengthMods(tr,3);  // all equal
 			SetupTranslator(tr,stress_lengths_zh,stress_amps_zh);
 
 			tr->langopts.stress_rule = STRESSPOSN_1R;   // stress on final syllable of a "word"
-			tr->langopts.stress_flags = 2;          // don't automatically set diminished stress (may be set in the intonation module)
+			tr->langopts.stress_flags = S_NO_DIM;          // don't automatically set diminished stress (may be set in the intonation module)
 			tr->langopts.vowel_pause = 0;
 			tr->langopts.tone_language = 1;   // Tone language, use  CalcPitches_Tone() rather than CalcPitches()
 			tr->langopts.length_mods0 = tr->langopts.length_mods;  // don't lengthen vowels in the last syllable
 			tr->langopts.tone_numbers = 1;   // a number after letters indicates a tone number (eg. pinyin or jyutping)
 			tr->langopts.ideographs = 1;
+			tr->langopts.our_alphabet = 0x3100;
 			tr->langopts.word_gap = 0x21;   // length of a final vowel is less dependent on the next consonant, don't merge consonant with next word
 			if(name2 == L('z','h'))
 			{
@@ -1453,21 +1667,24 @@ SetLengthMods(tr,3);  // all equal
 
 	tr->translator_name = name2;
 
-	if(tr->langopts.numbers & NUM_DECIMAL_COMMA)
+	ProcessLanguageOptions(&tr->langopts);
+	return(tr);
+}  // end of SelectTranslator
+
+
+void ProcessLanguageOptions(LANGUAGE_OPTIONS *langopts)
+{//=====================================================
+	if(langopts->numbers & NUM_DECIMAL_COMMA)
 	{
 		// use . and ; for thousands and decimal separators
-		tr->langopts.thousands_sep = '.';
-		tr->langopts.decimal_sep = ',';
+		langopts->thousands_sep = '.';
+		langopts->decimal_sep = ',';
 	}
-	if(tr->langopts.numbers & NUM_THOUS_SPACE)
+	if(langopts->numbers & NUM_THOUS_SPACE)
 	{
-		tr->langopts.thousands_sep = 0;   // don't allow thousands separator, except space
+		langopts->thousands_sep = 0;   // don't allow thousands separator, except space
 	}
-
-	return(tr);
-}  // end of SelectTranslator
-
-
+}
 
 //**********************************************************************************************************
 
@@ -1488,7 +1705,7 @@ static void Translator_Russian(Translator *tr)
 	tr->langopts.param[LOPT_REGRESSIVE_VOICING] = 1;
 	tr->langopts.param[LOPT_REDUCE] = 2;
 	tr->langopts.stress_rule = 5;
-	tr->langopts.stress_flags = 0x0020;  // waas 0x1010
+	tr->langopts.stress_flags = S_NO_AUTO_2;
 
 	tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
 	tr->langopts.numbers2 = 0x2 + NUM2_THOUSANDS_VAR1;  // variant numbers before thousands
@@ -1544,7 +1761,7 @@ PH('V','#'),PH('I','3'),PH('I','2'),PH('E','3')};
                 /*2*/        {'o', '8', '8',                 'o', '8', '8'},                // O
                 /*3*/        {'i', 'I', 'i',                 'a', 'I', 'a'},                // I  Uses 3,4,5 columns.
                 /*4*/        {'i', PH('I','#'), 'i',         'i', PH('I','#'), 'i'},        // I#
-                /*5*/        {'E', PH('E','#'), 'E',         'e', PH('E','#'), 'e'},        // E# 
+                /*5*/        {'E', PH('E','#'), 'E',         'e', PH('E','#'), 'e'},        // E#
                 /*6*/        {'E', PH('E','2'), 'E',         'e', PH('E','2'), 'e'},        // E2  Uses 3,4,5 columns.
                 /*7*/        {PH('j','a'), 'V', PH('j','a'), 'A', 'V', 'A'},                // V#
                 /*8*/        {PH('j','a'), 'I', PH('j','a'), 'e', 'I', 'e'},                // I3 Uses 3,4,5 columns.
diff --git a/external/espeak/translate.cpp b/external/espeak/translate.cpp
old mode 100644
new mode 100755
index fdc7e40..4da0b0f
--- a/external/espeak/translate.cpp
+++ b/external/espeak/translate.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -77,6 +77,7 @@ static int prev_clause_pause=0;
 static int max_clause_pause = 0;
 static int any_stressed_words;
 int pre_pause;
+ALPHABET *current_alphabet;
 
 
 // these were previously in translator class
@@ -90,7 +91,7 @@ PHONEME_LIST2 ph_list2[N_PHONEME_LIST];	// first stage of text->phonemes
 
 
 
-wchar_t option_punctlist[N_PUNCTLIST]={0};
+wchar_t option_punctlist[N_PUNCTLIST]= {0};
 char ctrl_embedded = '\001';    // to allow an alternative CTRL for embedded commands
 int option_multibyte=espeakCHARS_AUTO;   // 0=auto, 1=utf8, 2=8bit, 3=wchar, 4=16bit
 
@@ -103,7 +104,6 @@ static int embedded_read;
 unsigned int embedded_list[N_EMBEDDED_LIST];
 
 // the source text of a single clause (UTF8 bytes)
-#define N_TR_SOURCE    800
 static char source[N_TR_SOURCE+40];     // extra space for embedded command & voice change info at end
 
 int n_replace_phonemes;
@@ -112,11 +112,12 @@ REPLACE_PHONEMES replace_phonemes[N_REPLACE_PHONEMES];
 
 // brackets, also 0x2014 to 0x021f which don't need to be in this list
 static const unsigned short brackets[] = {
-'(',')','[',']','{','}','<','>','"','\'','`',
-0xab,0xbb,  // double angle brackets
-0x300a,0x300b,  // double angle brackets (ideograph)
-0xe000+'<',  // private usage area
-0};
+	'(',')','[',']','{','}','<','>','"','\'','`',
+	0xab,0xbb,  // double angle brackets
+	0x300a,0x300b,  // double angle brackets (ideograph)
+	0xe000+'<',  // private usage area
+	0
+};
 
 // other characters which break a word, but don't produce a pause
 static const unsigned short breaks[] = {'_', 0};
@@ -128,153 +129,153 @@ static const unsigned short breaks[] = {'_', 0};
 // Translate character codes 0xA0 to 0xFF into their unicode values
 // ISO_8859_1 is set as default
 static const unsigned short ISO_8859_1[0x60] = {
-   0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
-   0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
-   0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
-   0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
-   0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
-   0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
-   0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
-   0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, // d8
-   0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
-   0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
-   0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
-   0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, // f8
+	0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
+	0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
+	0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
+	0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
+	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
+	0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
+	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, // d8
+	0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
+	0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
+	0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, // f8
 };
 
 static const unsigned short ISO_8859_2[0x60] = {
-   0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, // a0
-   0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, // a8
-   0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, // b0
-   0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, // b8
-   0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, // c0
-   0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, // c8
-   0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, // d0
-   0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, // d8
-   0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, // e0
-   0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, // e8
-   0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, // f0
-   0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, // f8
+	0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, // a0
+	0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, // a8
+	0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, // b0
+	0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, // b8
+	0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, // c0
+	0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, // c8
+	0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, // d0
+	0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, // d8
+	0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, // e0
+	0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, // e8
+	0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, // f0
+	0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9, // f8
 };
 
 static const unsigned short ISO_8859_3[0x60] = {
-   0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, // a0
-   0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, // a8
-   0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, // b0
-   0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, // b8
-   0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, // c0
-   0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
-   0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, // d0
-   0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, // d8
-   0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, // e0
-   0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
-   0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, // f0
-   0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, // f8
+	0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, // a0
+	0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, // a8
+	0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, // b0
+	0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, // b8
+	0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, // c0
+	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
+	0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, // d0
+	0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, // d8
+	0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, // e0
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
+	0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, // f0
+	0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9, // f8
 };
 
 static const unsigned short ISO_8859_4[0x60] = {
-   0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, // a0
-   0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, // a8
-   0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, // b0
-   0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, // b8
-   0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, // c0
-   0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, // c8
-   0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
-   0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, // d8
-   0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, // e0
-   0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, // e8
-   0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
-   0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, // f8
+	0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, // a0
+	0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, // a8
+	0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, // b0
+	0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, // b8
+	0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, // c0
+	0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, // c8
+	0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
+	0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, // d8
+	0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, // e0
+	0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, // e8
+	0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
+	0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9, // f8
 };
 
 static const unsigned short ISO_8859_5[0x60] = {
-   0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, // a0  Cyrillic
-   0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, // a8
-   0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, // b0
-   0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, // b8
-   0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, // c0
-   0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, // c8
-   0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, // d0
-   0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, // d8
-   0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, // e0
-   0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, // e8
-   0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, // f0
-   0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, // f8
+	0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, // a0  Cyrillic
+	0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, // a8
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, // b0
+	0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, // b8
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, // c0
+	0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, // c8
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, // d0
+	0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, // d8
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, // e0
+	0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, // e8
+	0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, // f0
+	0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f, // f8
 };
 
 static const unsigned short ISO_8859_7[0x60] = {
-   0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7, // a0  Greek
-   0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, // a8
-   0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, // b0
-   0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, // b8
-   0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, // c0
-   0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, // c8
-   0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, // d0
-   0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, // d8
-   0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, // e0
-   0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, // e8
-   0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, // f0
-   0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, // f8
+	0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7, // a0  Greek
+	0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, // a8
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, // b0
+	0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, // b8
+	0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, // c0
+	0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, // c8
+	0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, // d0
+	0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, // d8
+	0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, // e0
+	0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, // e8
+	0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, // f0
+	0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000, // f8
 };
 
 static const unsigned short ISO_8859_9[0x60] = {
-   0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
-   0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
-   0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
-   0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
-   0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
-   0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
-   0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
-   0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, // d8
-   0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
-   0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
-   0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
-   0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, // f8
+	0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, // a0
+	0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, // a8
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, // b0
+	0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, // b8
+	0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
+	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
+	0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, // d0
+	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, // d8
+	0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
+	0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, // f0
+	0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff, // f8
 };
 
 static const unsigned short ISO_8859_14[0x60] = {
-   0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, // a0  Welsh
-   0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, // a8
-   0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, // b0
-   0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, // b8
-   0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
-   0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
-   0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, // d0
-   0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, // d8
-   0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
-   0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
-   0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, // f0
-   0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, // f8
+	0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, // a0  Welsh
+	0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, // a8
+	0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, // b0
+	0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, // b8
+	0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, // c0
+	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, // c8
+	0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, // d0
+	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, // d8
+	0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, // e0
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, // e8
+	0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, // f0
+	0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff, // f8
 };
 
 static const unsigned short KOI8_R[0x60] = {
-   0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, // a0  Russian
-   0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, // a8
-   0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, // b0
-   0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, // b8
-   0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, // c0
-   0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, // c8
-   0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, // d0
-   0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, // d8
-   0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, // e0
-   0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, // e8
-   0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, // f0
-   0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, // f8
+	0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, // a0  Russian
+	0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, // a8
+	0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, // b0
+	0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, // b8
+	0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, // c0
+	0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, // c8
+	0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, // d0
+	0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, // d8
+	0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, // e0
+	0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, // e8
+	0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, // f0
+	0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a, // f8
 };
 
 static const unsigned short ISCII[0x60] = {
-   0x0020, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, // a0
-   0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, // a8
-   0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, // b0
-   0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, // b8
-   0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, // c0
-   0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, // c8
-   0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, // d0
-   0x0939, 0x0020, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, // d8
-   0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, // e0
-   0x094d, 0x093c, 0x0964, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, // e8
-   0x0020, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, // f0
-   0x0037, 0x0038, 0x0039, 0x20,   0x20,   0x20,   0x20,   0x20,   // f8
+	0x0020, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, // a0
+	0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, // a8
+	0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, // b0
+	0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, // b8
+	0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, // c0
+	0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, // c8
+	0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, // d0
+	0x0939, 0x0020, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, // d8
+	0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, // e0
+	0x094d, 0x093c, 0x0964, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, // e8
+	0x0020, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, // f0
+	0x0037, 0x0038, 0x0039, 0x20,   0x20,   0x20,   0x20,   0x20,   // f8
 };
 
 const unsigned short *charsets[N_CHARSETS] = {
@@ -297,7 +298,8 @@ const unsigned short *charsets[N_CHARSETS] = {
 	ISO_8859_1,
 	ISO_8859_1,
 	KOI8_R,          // 18
-	ISCII };
+	ISCII
+};
 
 // Tables of the relative lengths of vowels, depending on the
 // type of the two phonemes that follow
@@ -305,7 +307,7 @@ const unsigned short *charsets[N_CHARSETS] = {
 
 // use this table if vowel is not the last in the word
 static unsigned char length_mods_en[100] = {
-/*  a   ,   t   s   n   d   z   r   N   <- next */
+	/*  a   ,   t   s   n   d   z   r   N   <- next */
 	100,120,100,105,100,110,110,100, 95, 100,  /* a  <- next2 */
 	105,120,105,110,125,130,135,115,125, 100,  /* , */
 	105,120, 75,100, 75,105,120, 85, 75, 100,  /* t */
@@ -315,11 +317,12 @@ static unsigned char length_mods_en[100] = {
 	105,120,100,105,105,122,125,110,105, 100,  /* z */
 	105,120,100,105,105,122,125,110,105, 100,  /* r */
 	105,120, 95,105,100,115,120,110,100, 100,  /* N */
-	100,120,100,100,100,100,100,100,100, 100 }; // SPARE
+	100,120,100,100,100,100,100,100,100, 100
+}; // SPARE
 
 // as above, but for the last syllable in a word
 static unsigned char length_mods_en0[100] = {
-/*  a   ,   t   s   n   d   z   r    N  <- next */
+	/*  a   ,   t   s   n   d   z   r    N  <- next */
 	100,150,100,105,110,115,110,110,110, 100,  /* a  <- next2 */
 	105,150,105,110,125,135,140,115,135, 100,  /* , */
 	105,150, 90,105, 90,122,135,100, 90, 100,  /* t */
@@ -329,11 +332,12 @@ static unsigned char length_mods_en0[100] = {
 	105,150,100,105,110,122,125,115,110, 100,  /* z */
 	105,150,100,105,105,122,135,120,105, 100,  /* r */
 	105,150,100,105,105,115,135,110,105, 100,  /* N */
-	100,100,100,100,100,100,100,100,100, 100 }; // SPARE
+	100,100,100,100,100,100,100,100,100, 100
+}; // SPARE
 
 
 static unsigned char length_mods_equal[100] = {
-/*  a   ,   t   s   n   d   z   r   N   <- next */
+	/*  a   ,   t   s   n   d   z   r   N   <- next */
 	110,120,100,110,110,110,110,110,110, 110,  /* a  <- next2 */
 	110,120,100,110,110,110,110,110,110, 110,  /* , */
 	110,120,100,110,100,110,110,110,100, 110,  /* t */
@@ -343,17 +347,18 @@ static unsigned char length_mods_equal[100] = {
 	110,120,100,110,110,110,110,110,110, 110,  /* z */
 	110,120,100,110,110,110,110,110,110, 110,  /* r */
 	110,120,100,110,110,110,110,110,110, 110,  /* N */
-	110,120,100,110,110,110,110,110,110, 110 }; // SPARE
+	110,120,100,110,110,110,110,110,110, 110
+}; // SPARE
 
 
 static unsigned char *length_mod_tabs[6] = {
-  length_mods_en,
-  length_mods_en,     // 1
-  length_mods_en0,    // 2
-  length_mods_equal,  // 3
-  length_mods_equal,  // 4
-  length_mods_equal   // 5
- };
+	length_mods_en,
+	length_mods_en,     // 1
+	length_mods_en0,    // 2
+	length_mods_equal,  // 3
+	length_mods_equal,  // 4
+	length_mods_equal   // 5
+};
 
 
 void SetLengthMods(Translator *tr, int value)
@@ -368,17 +373,22 @@ void SetLengthMods(Translator *tr, int value)
 }
 
 
+
 int IsAlpha(unsigned int c)
 {//========================
 // Replacement for iswalph() which also checks for some in-word symbols
 
 	static const unsigned short extra_indic_alphas[] = {
-	0xa70,0xa71,	// Gurmukhi: tippi, addak
-	0 };
+		0xa70,0xa71,	// Gurmukhi: tippi, addak
+		0
+	};
 
-	if(iswalpha(c))
+	if(iswalpha2(c))
 		return(1);
 
+	if(c < 0x300)
+		return(0);
+
 	if((c >= 0x901) && (c <= 0xdf7))
 	{
 		// Indic scripts: Devanagari, Tamil, etc
@@ -392,10 +402,13 @@ int IsAlpha(unsigned int c)
 		return(0);
 	}
 
+	if((c >= 0x5b0) && (c <= 0x5c2))
+		return(1);  // Hebrew vowel marks
+
 	if(c == 0x0605)
 		return(1);
 
-	if((c >= 0x64b)  && (c <= 0x65e))
+	if((c == 0x670) || ((c >= 0x64b) && (c <= 0x65e)))
 		return(1);   // arabic vowel marks
 
 	if((c >= 0x300) && (c <= 0x36f))
@@ -419,8 +432,8 @@ int IsAlpha(unsigned int c)
 	return(0);
 }
 
-static int IsDigit09(unsigned int c)
-{//=========================
+int IsDigit09(unsigned int c)
+{//============================
 	if((c >= '0') && (c <= '9'))
 		return(1);
 	return(0);
@@ -437,12 +450,14 @@ int IsDigit(unsigned int c)
 	return(0);
 }
 
-int IsSpace(unsigned int c)
+static int IsSpace(unsigned int c)
 {//========================
 	if(c == 0)
 		return(0);
 	if((c >= 0x2500) && (c < 0x25a0))
 		return(1);  // box drawing characters
+	if((c >= 0xfff9) && (c <= 0xffff))
+		return(1);  // unicode specials
 //	if(wcschr(chars_space,c))
 //		return(1);
 	return(iswspace(c));
@@ -515,8 +530,7 @@ int utf8_out(unsigned int c, char *buf)
 	}
 	if(c < 0x0800)
 		n_bytes = 1;
-	else
-	if(c < 0x10000)
+	else if(c < 0x10000)
 		n_bytes = 2;
 	else
 		n_bytes = 3;
@@ -548,7 +562,7 @@ int utf8_nbytes(const char *buf)
 
 int utf8_in2(int *c, const char *buf, int backwards)
 {//=================================================
-// Read a unicode characater from a UTF8 string 
+// Read a unicode characater from a UTF8 string
 // Returns the number of UTF8 bytes used.
 // backwards: set if we are moving backwards through the UTF8 string
 	int c1;
@@ -572,11 +586,9 @@ int utf8_in2(int *c, const char *buf, int backwards)
 	{
 		if((c1 & 0xe0) == 0xc0)
 			n_bytes = 1;
-		else
-		if((c1 & 0xf0) == 0xe0)
+		else if((c1 & 0xf0) == 0xe0)
 			n_bytes = 2;
-		else
-		if((c1 & 0xf8) == 0xf0)
+		else if((c1 & 0xf8) == 0xf0)
 			n_bytes = 3;
 
 		c1 &= mask[n_bytes];
@@ -592,7 +604,7 @@ int utf8_in2(int *c, const char *buf, int backwards)
 
 int utf8_in(int *c, const char *buf)
 {//=================================
-// Read a unicode characater from a UTF8 string 
+// Read a unicode characater from a UTF8 string
 // Returns the number of UTF8 bytes used.
 	return(utf8_in2(c,buf,0));
 }
@@ -606,14 +618,13 @@ char *strchr_w(const char *s, int c)
 	return(strchr((char *)s,c));    // (char *) is needed for Borland compiler
 }
 
-
-int IsAllUpper(const char *word)
+static int IsAllUpper(const char *word)
 {//=============================
 	int c;
 	while((*word != 0) && !isspace2(*word))
 	{
 		word += utf8_in(&c, word);
-		if(!iswupper(c))
+		if(!iswupper2(c))
 			return(0);
 	}
 	return(1);
@@ -626,8 +637,10 @@ static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes,
 	int capitals = 0;
 	int non_initial = 0;
 
-	if (spell_word > 2)
-		capitals = 2;
+	if(spell_word > 2)
+		capitals = 2;  // speak 'capital'
+	if(spell_word > 1)
+		capitals |= 4; // speak charater code for unknown letters
 
 	while((*word != ' ') && (*word != 0))
 	{
@@ -668,19 +681,17 @@ static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab)
 		nbytes = utf8_in(&wc, word);
 		if((word[nbytes] == ' ') && IsAlpha(wc))
 		{
-		 	if(word[nbytes+1] == '.')
+			if(word[nbytes+1] == '.')
 			{
 				if(word[nbytes+2] == ' ')
 					ok = 1;
-				else
-				if(word[nbytes+2] =='\'')
+				else if(word[nbytes+2] =='\'')
 				{
 					nbytes += 2;   // delete the final dot (eg. u.s.a.'s)
 					ok = 2;
 				}
 			}
-			else
-			if((count > 0) && (word[nbytes] == ' '))
+			else if((count > 0) && (word[nbytes] == ' '))
 				ok = 2;
 		}
 
@@ -715,7 +726,7 @@ static int CheckDottedAbbrev(char *word1, WORD_TAB *wtab)
 
 extern char *phondata_ptr;
 
-int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes)
+static int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes)
 {//====================================================================
 // tr:  the original language
 // lang2:  phoneme table number for the temporary language
@@ -806,8 +817,8 @@ int ChangeEquivalentPhonemes(Translator *tr, int lang2, char *phonemes)
 
 
 
-int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab)
-{//===========================================================================
+int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wtab, char *word_out)
+{//==================================================================================================
 // word1 is terminated by space (0x20) character
 
 	char *word1;
@@ -819,24 +830,28 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 	unsigned int dictionary_flags[2];
 	unsigned int dictionary_flags2[2];
 	int end_type=0;
+	int end_type1=0;
 	int prefix_type=0;
 	int prefix_stress;
 	char *wordx;
 	char phonemes[N_WORD_PHONEMES];
+	char phonemes2[N_WORD_PHONEMES];
 	char prefix_phonemes[N_WORD_PHONEMES];
 	char unpron_phonemes[N_WORD_PHONEMES];
 	char end_phonemes[N_WORD_PHONEMES];
+	char end_phonemes2[N_WORD_PHONEMES];
 	char word_copy[N_WORD_BYTES];
 	char word_copy2[N_WORD_BYTES];
 	int word_copy_length;
-	char prefix_chars[0x3f + 2];  
+	char prefix_chars[0x3f + 2];
 	int found=0;
-   int end_flags;
-	char c_temp;   // save a character byte while we temporarily replace it with space
+	int end_flags;
+	int c_temp;   // save a character byte while we temporarily replace it with space
 	int first_char;
 	int last_char = 0;
 	int add_plural_suffix = 0;
 	int prefix_flags = 0;
+	int more_suffixes;
 	int confirm_prefix;
 	int spell_word;
 	int stress_bits;
@@ -844,6 +859,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 	int wflags;
 	int wmark;
 	int was_unpronouncable = 0;
+	int loopcount;
 	WORD_TAB wtab_null[8];
 
 	// translate these to get pronunciations of plural 's' suffix (different forms depending on
@@ -898,6 +914,14 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 
 	spell_word = 0;
 
+	if((word_length == 1) && (wflags & FLAG_TRANSLATOR2))
+	{
+		// retranslating a 1-character word using a different language, say its name
+		utf8_in(&c_temp, wordx+1);  // the next character
+		if(!IsAlpha(c_temp) || (AlphabetFromChar(last_char) != AlphabetFromChar(c_temp)))
+			spell_word = 1;
+	}
+
 	if(option_sayas == SAYAS_KEY)
 	{
 		if(word_length == 1)
@@ -931,6 +955,9 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 
 		if(dictionary_flags[0] & FLAG_TEXTMODE)
 		{
+			if(word_out != NULL)
+				strcpy(word_out, word1);
+
 			first_char = word1[0];
 			stress_bits = dictionary_flags[0] & 0x7f;
 			found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab);   // the text replacement
@@ -945,8 +972,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 				}
 			}
 		}
-		else
-		if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS))
+		else if((found==0) && (dictionary_flags[0] & FLAG_SKIPWORDS) && !(dictionary_flags[0] & FLAG_ABBREV))
 		{
 			// grouped words, but no translation.  Join the words with hyphens.
 			wordx = word1;
@@ -985,18 +1011,18 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
 			return(0);
 		}
 
-if((wmark > 0) && (wmark < 8))
-{
-	// the stressed syllable has been specified in the text  (TESTING)
-	dictionary_flags[0] = (dictionary_flags[0] & ~0xf) | wmark;
-}
+		if((wmark > 0) && (wmark < 8))
+		{
+			// the stressed syllable has been specified in the text  (TESTING)
+			dictionary_flags[0] = (dictionary_flags[0] & ~0xf) | wmark;
+		}
 
 		if(!found && (dictionary_flags[0] & FLAG_ABBREV))
 		{
 			// the word has $abbrev flag, but no pronunciation specified.  Speak as individual letters
 			spell_word = 1;
 		}
- 
+
 		if(!found && iswdigit(first_char))
 		{
 			Lookup(tr,"_0lang",word_phonemes);
@@ -1028,16 +1054,15 @@ if((wmark > 0) && (wmark < 8))
 			}
 		}
 
-		if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char))
+		if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char))
 		{
 			if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV))
 			{
 				// emphasize words which are in capitals
 				emphasize_allcaps = FLAG_EMPHASIZED;
 			}
-			else
-			if(!found && !(dictionary_flags[0] &  FLAG_SKIPWORDS) && (word_length<4) && (tr->clause_lower_count > 3)
-				&& (tr->clause_upper_count <= tr->clause_lower_count))
+			else if(!found && !(dictionary_flags[0] &  FLAG_SKIPWORDS) && (word_length<4) && (tr->clause_lower_count > 3)
+					&& (tr->clause_upper_count <= tr->clause_lower_count))
 			{
 				// An upper case word in a lower case clause. This could be an abbreviation.
 				spell_word = 1;
@@ -1055,11 +1080,18 @@ if((wmark > 0) && (wmark < 8))
 		{
 			if(word_length > 1)
 				return(FLAG_SPELLWORD);  // a mixture of languages, retranslate as individual letters, separated by spaces
+			if(phonemes[0] == phonSWITCH)
+			{
+// problem with espeak -vbg "b.c.d.e.f"
+			}
 			return(0);
 		}
+		strcpy(word_phonemes, phonemes);
+		if(wflags & FLAG_TRANSLATOR2)
+			return(0);
+		return(dictionary_flags[0] & FLAG_SKIPWORDS);  // for "b.c.d"
 	}
-	else
-	if(found == 0)
+	else if(found == 0)
 	{
 		int posn;
 		int non_initial;
@@ -1092,7 +1124,7 @@ if((wmark > 0) && (wmark < 8))
 				// change to another language in order to translate this word
 				strcpy(word_phonemes,unpron_phonemes);
 				if(strcmp(&unpron_phonemes[1],"en")==0)
-					return(FLAG_SPELLWORD);   // _^_en must have been set in TranslateLetter(), not *_rules
+					return(FLAG_SPELLWORD);   // _^_en must have been set in TranslateLetter(), not *_rules which uses only _^_
 				return(0);
 			}
 
@@ -1131,18 +1163,31 @@ if((wmark > 0) && (wmark < 8))
 				return(0);
 			}
 
+#ifdef deleted
+// ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST
+if(end_type & SUFX_UNPRON)
+{
+	phonemes[0] = 0;  // discard and retranslate as individual letters
+	SpeakIndividualLetters(tr, wordx, phonemes, 0);
+	strcpy(word_phonemes, phonemes);
+	return(0);
+}
+#endif
+
 			if((phonemes[0] == 0) && (end_phonemes[0] == 0))
 			{
 				int wc;
 				// characters not recognised, speak them individually
-
+				// ?? should we say super/sub-script numbers and letters here?
 				utf8_in(&wc, wordx);
-				if((word_length == 1) && IsAlpha(wc))
+				if((word_length == 1) && (IsAlpha(wc) || IsSuperscript(wc)))
 				{
 					if((wordx = SpeakIndividualLetters(tr, wordx, phonemes, spell_word)) == NULL)
 					{
 						return(0);
 					}
+					strcpy(word_phonemes, phonemes);
+					return(0);
 				}
 			}
 
@@ -1150,14 +1195,13 @@ if((wmark > 0) && (wmark < 8))
 
 			found = 0;
 			confirm_prefix = 1;
-			for (int loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++)
+			for (loopcount = 0; (loopcount < 50) && (end_type & SUFX_P); loopcount++)
 			{
 				// Found a standard prefix, remove it and retranslate
 				// loopcount guards against an endless loop
 				if(confirm_prefix && !(end_type & SUFX_B))
 				{
 					int end2;
-					char phonemes2[N_WORD_PHONEMES];
 					char end_phonemes2[N_WORD_PHONEMES];
 
 					// remove any standard suffix and confirm that the prefix is still recognised
@@ -1212,7 +1256,7 @@ if((wmark > 0) && (wmark < 8))
 					for(ix=0; ix < n_chars; ix++)    // num. of bytes to remove
 					{
 						prefix_chars[pfix++] = *wordx++;
-	
+
 						if((prefix_type & SUFX_B) && (ix == (n_chars-1)))
 						{
 							prefix_chars[pfix-1] = 0;  // discard the last character of the prefix, this is the separator character
@@ -1223,6 +1267,7 @@ if((wmark > 0) && (wmark < 8))
 				c_temp = wordx[-1];
 				wordx[-1] = ' ';
 				confirm_prefix = 1;
+				wflags |= FLAG_PREFIX_REMOVED;
 
 				if(prefix_type & SUFX_B)
 				{
@@ -1264,7 +1309,7 @@ if((wmark > 0) && (wmark < 8))
 					prefix_flags = 1;
 				if(found == 0)
 				{
-					end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags);
+					end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags & (FLAG_HYPHEN_AFTER | FLAG_PREFIX_REMOVED), dictionary_flags);
 
 					if(phonemes[0] == phonSWITCH)
 					{
@@ -1276,93 +1321,118 @@ if((wmark > 0) && (wmark < 8))
 				}
 			}
 
+
+
+
 			if((end_type != 0) && !(end_type & SUFX_P))
 			{
-char phonemes2[N_WORD_PHONEMES];
-strcpy(phonemes2,phonemes);
+				end_type1 = end_type;
+				strcpy(phonemes2,phonemes);
 
 				// The word has a standard ending, re-translate without this ending
 				end_flags = RemoveEnding(tr, wordx, end_type, word_copy);
+				more_suffixes = 1;
 
-				phonemes[0] = 0;
-
-				if(prefix_phonemes[0] != 0)
+				while(more_suffixes)
 				{
-					// lookup the stem without the prefix removed
-					wordx[-1] = c_temp;
-					found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, end_flags, wtab);  // include prefix, but not suffix
-					wordx[-1] = ' ';
-					if(phonemes[0] == phonSWITCH)
-					{
-						// change to another language in order to translate this word
-						memcpy(wordx,word_copy,strlen(word_copy));
-						strcpy(word_phonemes,phonemes);
-						return(0);
-					}
-					if(dictionary_flags[0]==0)
-					{
-						dictionary_flags[0] = dictionary_flags2[0];
-						dictionary_flags[1] = dictionary_flags2[1];
-					}
-					if(found)
-						prefix_phonemes[0] = 0;  // matched whole word, don't need prefix now
+					more_suffixes = 0;
+					phonemes[0] = 0;
 
-					if((found==0) && (dictionary_flags2[0] != 0))
-						prefix_flags = 1;
-				}
-				if(found == 0)
-				{
-					found = LookupDictList(tr, &wordx, phonemes, dictionary_flags2, end_flags, wtab);  // without prefix and suffix
-					if(phonemes[0] == phonSWITCH)
+					if(prefix_phonemes[0] != 0)
 					{
-						// change to another language in order to translate this word
-						memcpy(wordx,word_copy,strlen(word_copy));
-						strcpy(word_phonemes,phonemes);
-						return(0);
-					}
-
-if(dictionary_flags2[0] & FLAG_ABBREV)
-{
-	// Removing the suffix leaves a word which should be spoken as individual letters
-	// Not yet implemented
-}
-					if(dictionary_flags[0]==0)
-					{
-						dictionary_flags[0] = dictionary_flags2[0];
-						dictionary_flags[1] = dictionary_flags2[1];
-					}
-				}
-				if(found == 0)
-				{
-					if(end_type & SUFX_Q)
-					{
-						// don't retranslate, use the original lookup result
-						strcpy(phonemes,phonemes2);
+						// lookup the stem without the prefix removed
+						wordx[-1] = c_temp;
+						found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, end_flags, wtab);  // include prefix, but not suffix
+						wordx[-1] = ' ';
+						if(phonemes[0] == phonSWITCH)
+						{
+							// change to another language in order to translate this word
+							memcpy(wordx,word_copy,strlen(word_copy));
+							strcpy(word_phonemes,phonemes);
+							return(0);
+						}
+						if(dictionary_flags[0]==0)
+						{
+							dictionary_flags[0] = dictionary_flags2[0];
+							dictionary_flags[1] = dictionary_flags2[1];
+						}
+						if(found)
+							prefix_phonemes[0] = 0;  // matched whole word, don't need prefix now
 
-						// language specific changes
-						ApplySpecialAttribute(tr,phonemes,dictionary_flags[0]);
+						if((found==0) && (dictionary_flags2[0] != 0))
+							prefix_flags = 1;
 					}
-					else
+					if(found == 0)
 					{
-						if(end_flags & FLAG_SUFX)
-							wflags |= FLAG_SUFFIX_REMOVED;
-						if(end_type & SUFX_A)
-							wflags |= FLAG_SUFFIX_VOWEL;
-
-						TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL, wflags, dictionary_flags);
-
+						found = LookupDictList(tr, &wordx, phonemes, dictionary_flags2, end_flags, wtab);  // without prefix and suffix
 						if(phonemes[0] == phonSWITCH)
 						{
 							// change to another language in order to translate this word
-							strcpy(word_phonemes,phonemes);
 							memcpy(wordx,word_copy,strlen(word_copy));
-							wordx[-1] = c_temp;
+							strcpy(word_phonemes,phonemes);
 							return(0);
 						}
+
+						if(dictionary_flags2[0] & FLAG_ABBREV)
+						{
+							// Removing the suffix leaves a word which should be spoken as individual letters
+							// Not yet implemented
+						}
+						if(dictionary_flags[0]==0)
+						{
+							dictionary_flags[0] = dictionary_flags2[0];
+							dictionary_flags[1] = dictionary_flags2[1];
+						}
+					}
+					if(found == 0)
+					{
+						if(end_type & SUFX_Q)
+						{
+							// don't retranslate, use the original lookup result
+							strcpy(phonemes,phonemes2);
+						}
+						else
+						{
+							if(end_flags & FLAG_SUFX)
+								wflags |= FLAG_SUFFIX_REMOVED;
+							if(end_type & SUFX_A)
+								wflags |= FLAG_SUFFIX_VOWEL;
+
+							if(end_type & SUFX_M)
+							{
+								// allow more suffixes before this suffix
+								strcpy(end_phonemes2, end_phonemes);
+								end_type = TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, end_phonemes, wflags, dictionary_flags);
+								strcat(end_phonemes, end_phonemes2);   // add the phonemes for the previous suffixes after this one
+
+								if((end_type != 0) && !(end_type & SUFX_P))
+								{
+									// there is another suffix
+									end_flags = RemoveEnding(tr, wordx, end_type, NULL);
+									more_suffixes = 1;
+								}
+							}
+							else
+							{
+								// don't remove any previous suffix
+								TranslateRules(tr, wordx, phonemes, N_WORD_PHONEMES, NULL, wflags, dictionary_flags);
+								end_type = 0;
+							}
+
+							if(phonemes[0] == phonSWITCH)
+							{
+								// change to another language in order to translate this word
+								strcpy(word_phonemes,phonemes);
+								memcpy(wordx,word_copy,strlen(word_copy));
+								wordx[-1] = c_temp;
+								return(0);
+							}
+						}
 					}
 				}
 
-				if((end_type & SUFX_T) == 0)
+
+				if((end_type1 & SUFX_T) == 0)
 				{
 					// the default is to add the suffix and then determine the word's stress pattern
 					AppendPhonemes(tr,phonemes, N_WORD_PHONEMES, end_phonemes);
@@ -1370,6 +1440,10 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 				}
 				memcpy(wordx,word_copy,strlen(word_copy));
 			}
+
+
+
+
 			wordx[-1] = c_temp;
 		}
 	}
@@ -1379,8 +1453,7 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 		// s or 's suffix, append [s], [z] or [Iz] depending on previous letter
 		if(last_char == 'f')
 			TranslateRules(tr, &word_ss[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
-		else
-		if((last_char==0) || (strchr_w("hsx",last_char)==NULL))
+		else if((last_char==0) || (strchr_w("hsx",last_char)==NULL))
 			TranslateRules(tr, &word_zz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
 		else
 			TranslateRules(tr, &word_iz[1], phonemes, N_WORD_PHONEMES, NULL, 0, NULL);
@@ -1487,8 +1560,7 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 	{
 		ChangeWordStress(tr,word_phonemes,3);
 	}
-	else
-	if(wflags & FLAG_EMPHASIZED2)
+	else if(wflags & FLAG_EMPHASIZED2)
 	{
 		// A word is indicated in the source text as stressed
 		// Give it stress level 6 (for the intonation module)
@@ -1497,21 +1569,19 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 		if(wflags & FLAG_EMPHASIZED)
 			dictionary_flags[0] |= FLAG_PAUSE1;   // precede by short pause
 	}
-	else
-	if(wtab[dictionary_skipwords].flags & FLAG_LAST_WORD)
+	else if(wtab[dictionary_skipwords].flags & FLAG_LAST_WORD)
 	{
 		// the word has attribute to stress or unstress when at end of clause
 		if(dictionary_flags[0] & (FLAG_STRESS_END | FLAG_STRESS_END2))
 			ChangeWordStress(tr,word_phonemes,4);
-		else
-		if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words))
+		else if((dictionary_flags[0] & FLAG_UNSTRESS_END) && (any_stressed_words))
 			ChangeWordStress(tr,word_phonemes,3);
 	}
 
 
 	// dictionary flags for this word give a clue about which alternative pronunciations of
 	// following words to use.
-	if(end_type & SUFX_F)
+	if(end_type1 & SUFX_F)
 	{
 		// expect a verb form, with or without -s suffix
 		tr->expect_verb = 2;
@@ -1525,16 +1595,14 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 		tr->expect_verb = 0;
 		tr->expect_noun = 0;
 	}
-	else
-	if(dictionary_flags[1] & FLAG_VERBF)
+	else if(dictionary_flags[1] & FLAG_VERBF)
 	{
 		/* expect a verb in the next word */
 		tr->expect_verb = 2;
 		tr->expect_verb_s = 0;   /* verb won't have -s suffix */
 		tr->expect_noun = 0;
 	}
-	else
-	if(dictionary_flags[1] & FLAG_VERBSF)
+	else if(dictionary_flags[1] & FLAG_VERBSF)
 	{
 		// expect a verb, must have a -s suffix
 		tr->expect_verb = 0;
@@ -1542,8 +1610,7 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 		tr->expect_past = 0;
 		tr->expect_noun = 0;
 	}
-	else
-	if(dictionary_flags[1] & FLAG_NOUNF)
+	else if(dictionary_flags[1] & FLAG_NOUNF)
 	{
 		/* not expecting a verb next */
 		tr->expect_noun = 2;
@@ -1567,7 +1634,7 @@ if(dictionary_flags2[0] & FLAG_ABBREV)
 			tr->expect_past--;
 	}
 
-	if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i'))
+	if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i'))
 	{
 // English Specific !!!!
 		// any single letter before a dot is an abbreviation, except 'I'
@@ -1608,8 +1675,7 @@ static int CountSyllables(unsigned char *phonemes)
 	return(count);
 }
 
-
-void Word_EmbeddedCmd()
+static void Word_EmbeddedCmd()
 {//====================
 // Process embedded commands for emphasis, sayas, and break
 	int embedded_cmd;
@@ -1646,8 +1712,26 @@ int SetTranslator2(const char *new_language)
 {//=========================================
 // Set translator2 to a second language
 	int new_phoneme_tab;
+	const char *new_phtab_name;
+	int bitmap;
+	int dialect = 0;
 
-	if((new_phoneme_tab = SelectPhonemeTableName(new_language)) >= 0)
+	new_phtab_name = new_language;
+	if((bitmap = translator->langopts.dict_dialect) != 0)
+	{
+		if((bitmap & (1 << DICTDIALECT_EN_US)) && (strcmp(new_language, "en") == 0))
+		{
+			new_phtab_name = "en-us";
+			dialect = DICTDIALECT_EN_US;
+		}
+		if((bitmap & (1 << DICTDIALECT_ES_LA)) && (strcmp(new_language, "es") == 0))
+		{
+			new_phtab_name = "es-la";
+			dialect = DICTDIALECT_ES_LA;
+		}
+	}
+
+	if((new_phoneme_tab = SelectPhonemeTableName(new_phtab_name)) >= 0)
 	{
 		if((translator2 != NULL) && (strcmp(new_language,translator2_language) != 0))
 		{
@@ -1661,14 +1745,30 @@ int SetTranslator2(const char *new_language)
 			translator2 = SelectTranslator(new_language);
 			strcpy(translator2_language,new_language);
 
-			if(LoadDictionary(translator2, new_language, 0) != 0)
+			if(LoadDictionary(translator2, translator2->dictionary_name, 0) != 0)
 			{
 				SelectPhonemeTable(voice->phoneme_tab_ix);  // revert to original phoneme table
 				new_phoneme_tab = -1;
 				translator2_language[0] = 0;
 			}
+			else
+			{
+				if(dialect == DICTDIALECT_EN_US)
+				{
+					// en-us
+					translator2->dict_condition = 0x48;  // bits 3, 6
+					translator2->langopts.param[LOPT_REDUCE_T] = 1;
+				}
+				if(dialect == DICTDIALECT_ES_LA)
+				{
+					translator2->dict_condition = 0x04;  // bit 2
+				}
+			}
+			translator2->phoneme_tab_ix = new_phoneme_tab;
 		}
 	}
+	if(translator2 != NULL)
+		translator2->phonemes_repeat[0] = 0;
 	return(new_phoneme_tab);
 }  // end of SetTranslator2
 
@@ -1697,10 +1797,11 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 	int ix;
 	int sylimit;        // max. number of syllables in a word to be combined with a preceding preposition
 	const char *new_language;
-	unsigned char bad_phoneme[4];
+	int bad_phoneme;
 	int word_flags;
 	int word_copy_len;
 	char word_copy[N_WORD_BYTES+1];
+	char word_replaced[N_WORD_BYTES+1];
 	char old_dictionary_name[40];
 
 	if((f_logespeak != NULL) && (logging_type & 8))
@@ -1721,6 +1822,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 	word_flags = wtab[0].flags;
 	if(word_flags & FLAG_EMBEDDED)
 	{
+		wtab[0].flags &= ~FLAG_EMBEDDED;  // clear it in case we call TranslateWord2() again for the same word
 		embedded_flag = SFLAG_EMBEDDED;
 
 		Word_EmbeddedCmd();
@@ -1801,7 +1903,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 		}
 		else
 		{
-			EncodePhonemes(word,word_phonemes,bad_phoneme);
+			EncodePhonemes(word,word_phonemes,&bad_phoneme);
 		}
 		flags = FLAG_FOUND;
 	}
@@ -1812,7 +1914,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 		while(((c2 = word_copy[ix] = word[ix]) != ' ') && (c2 != 0) && (ix < N_WORD_BYTES)) ix++;
 		word_copy_len = ix;
 
-		flags = TranslateWord(translator, word, next_pause, wtab);
+		word_replaced[2] = 0;
+		flags = TranslateWord(translator, word, next_pause, wtab, &word_replaced[2]);
 
 		if(flags & FLAG_SPELLWORD)
 		{
@@ -1838,7 +1941,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			while(*p2 != ' ') p2++;
 
 			utf8_in(&c_word2, p2+1);   // first character of the next word;
-			if(!iswalpha(c_word2))
+			if(!iswalpha2(c_word2))
 			{
 				ok =0;
 			}
@@ -1847,7 +1950,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			{
 				strcpy(ph_buf,word_phonemes);
 
-				flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1);
+				flags2[0] = TranslateWord(translator, p2+1, 0, wtab+1, NULL);
 				if((flags2[0] & FLAG_WAS_UNPRONOUNCABLE) || (word_phonemes[0] == phonSWITCH))
 					ok = 0;
 
@@ -1859,7 +1962,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 						ok = 0;
 					}
 				}
-	
+
 				if((sylimit & 0x200) && ((wtab+1)->flags & FLAG_LAST_WORD))
 				{
 					// not if the next word is end-of-sentence
@@ -1875,12 +1978,13 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			if(ok)
 			{
 				*p2 = '-'; // replace next space by hyphen
-				flags = TranslateWord(translator, word, next_pause, wtab);  // translate the combined word
+				wtab[0].flags &= ~FLAG_ALL_UPPER;  // prevent it being considered an abbreviation
+				flags = TranslateWord(translator, word, next_pause, wtab, NULL);  // translate the combined word
 				if((sylimit > 0) && (CountSyllables(p) > (sylimit & 0x1f)))
 				{
 					// revert to separate words
 					*p2 = ' ';
-					flags = TranslateWord(translator, word, next_pause, wtab);
+					flags = TranslateWord(translator, word, next_pause, wtab, NULL);
 				}
 				else
 				{
@@ -1892,29 +1996,44 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			}
 		}
 
-		if(p[0] == phonSWITCH)
+		if(p[0]==phonSWITCH)
 		{
-			// this word uses a different language
-			memcpy(word, word_copy, word_copy_len);
+			int switch_attempt;
+			strcpy(old_dictionary_name, dictionary_name);
+			for(switch_attempt=0; switch_attempt < 2; switch_attempt++)
+			{
+				// this word uses a different language
+				memcpy(word, word_copy, word_copy_len);
 
-			new_language = (char *)(&p[1]);
-			if(new_language[0]==0)
-				new_language = "en";
+				new_language = (char *)(&p[1]);
+				if(new_language[0]==0)
+					new_language = "en";
 
-			strcpy(old_dictionary_name, dictionary_name);
-			switch_phonemes = SetTranslator2(new_language);
+				switch_phonemes = SetTranslator2(new_language);
 
-			if(switch_phonemes >= 0)
-			{
-				// re-translate the word using the new translator
-				flags = TranslateWord(translator2, word, next_pause, wtab);
-//				strcpy((char *)p,translator2->word_phonemes);
-				if(p[0] == phonSWITCH)
+				if(switch_phonemes >= 0)
 				{
-					// the second translator doesn't want to process this word
-					switch_phonemes = -1;
+					// re-translate the word using the new translator
+					wtab[0].flags |= FLAG_TRANSLATOR2;
+					if(word_replaced[2] != 0)
+					{
+						word_replaced[0] = 0;   // byte before the start of the word
+						word_replaced[1] = ' ';
+						flags = TranslateWord(translator2, &word_replaced[1], next_pause, wtab, NULL);
+					}
+					else
+						flags = TranslateWord(translator2, word, next_pause, wtab, &word_replaced[2]);
 				}
+
+				if(p[0] != phonSWITCH)
+					break;
 			}
+
+			//				strcpy((char *)p,translator2->word_phonemes);
+
+			if(p[0] == phonSWITCH)
+				return(FLAG_SPELLWORD);
+
 			if(switch_phonemes < 0)
 			{
 				// language code is not recognised or 2nd translator won't translate it
@@ -1961,7 +2080,6 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			pre_pause = 1;
 	}
 
-	plist2 = &ph_list2[n_ph_list2];
 	stress = 0;
 	next_stress = 1;
 	srcix = 0;
@@ -1986,8 +2104,10 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			pre_pause--;
 		}
 		tr->end_stressed_vowel = 0;   // forget about the previous word
-		tr->prev_dict_flags = 0;
+		tr->prev_dict_flags[0] = 0;
+		tr->prev_dict_flags[1] = 0;
 	}
+	plist2 = &ph_list2[n_ph_list2];
 
 	if((option_capitals==1) && (word_flags & FLAG_FIRST_UPPER))
 	{
@@ -2003,9 +2123,29 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 
 	if(switch_phonemes >= 0)
 	{
-		// this word uses a different phoneme table
-		SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
-		ph_list2[n_ph_list2++].tone_ph = switch_phonemes;  // temporary phoneme table number
+		if((p[0] == phonPAUSE) && (p[1] == phonSWITCH))
+		{
+			// the new word starts with a phoneme table switch, so there's no need to switch before it.
+			if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
+			{
+				//previous phoneme is also a phonSWITCH, delete it
+				n_ph_list2--;
+			}
+		}
+		else
+		{
+			// this word uses a different phoneme table
+			if(ph_list2[n_ph_list2-1].phcode == phonSWITCH)
+			{
+				//previous phoneme is also a phonSWITCH, just change its phoneme table number
+				n_ph_list2--;
+			}
+			else
+			{
+				SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
+			}
+			ph_list2[n_ph_list2++].tone_ph = switch_phonemes;  // temporary phoneme table number
+		}
 	}
 
 	// remove initial pause from a word if it follows a hyphen
@@ -2031,11 +2171,12 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 		{
 			ph_list2[n_ph_list2].phcode = ph_code;
 			ph_list2[n_ph_list2].sourceix = 0;
-			ph_list2[n_ph_list2].synthflags = embedded_flag;
-			ph_list2[n_ph_list2++].tone_ph = *p++;
+			ph_list2[n_ph_list2].synthflags = 0;
+			ph_list2[n_ph_list2++].tone_ph = *p;
+			SelectPhonemeTable(*p);
+			p++;
 		}
-		else
-		if(ph->type == phSTRESS)
+		else if(ph->type == phSTRESS)
 		{
 			// don't add stress phonemes codes to the list, but give their stress
 			// value to the next vowel phoneme
@@ -2055,31 +2196,27 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 				}
 			}
 		}
-		else
-		if(ph_code == phonSYLLABIC)
+		else if(ph_code == phonSYLLABIC)
 		{
 			// mark the previous phoneme as a syllabic consonant
 			prev_vowel = n_ph_list2-1;
 			ph_list2[prev_vowel].synthflags |= SFLAG_SYLLABLE;
 			ph_list2[prev_vowel].stresslevel = next_stress;
 		}
-		else
-		if(ph_code == phonLENGTHEN)
+		else if(ph_code == phonLENGTHEN)
 		{
 			ph_list2[n_ph_list2-1].synthflags |= SFLAG_LENGTHEN;
 		}
-		else
-		if(ph_code == phonEND_WORD)
+		else if(ph_code == phonEND_WORD)
 		{
 			// a || symbol in a phoneme string was used to indicate a word boundary
 			// Don't add this phoneme to the list, but make sure the next phoneme has
 			// a newword indication
 			srcix = source_ix+1;
 		}
-		else
-		if(ph_code == phonX1)
+		else if(ph_code == phonX1)
 		{
-			// a language specific action 
+			// a language specific action
 			if(tr->langopts.param[LOPT_IT_DOUBLING])
 			{
 				flags |= FLAG_DOUBLING;
@@ -2125,8 +2262,8 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 			{
 				if(first_phoneme && tr->langopts.param[LOPT_IT_DOUBLING])
 				{
-					if(((tr->prev_dict_flags & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) || 
-						(tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2)))
+					if(((tr->prev_dict_flags[0] & FLAG_DOUBLING) && (tr->langopts.param[LOPT_IT_DOUBLING] & 1)) ||
+							(tr->end_stressed_vowel && (tr->langopts.param[LOPT_IT_DOUBLING] & 2)))
 					{
 						// italian, double the initial consonant if the previous word ends with a
 						// stressed vowel, or is marked with a flag
@@ -2181,14 +2318,14 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
 		ph_list2[max_stress_ix].synthflags |= SFLAG_PROMOTE_STRESS;
 	}
 
-	tr->prev_dict_flags = flags;
+	tr->prev_dict_flags[0] = flags;
 	return(flags);
 }  //  end of TranslateWord2
 
 
 
-static int EmbeddedCommand(unsigned int &source_index)
-{//===================================================
+static int EmbeddedCommand(unsigned int *source_index_out)
+{//=======================================================
 	// An embedded command to change the pitch, volume, etc.
 	// returns number of commands added to embedded_list
 
@@ -2199,6 +2336,7 @@ static int EmbeddedCommand(unsigned int &source_index)
 	unsigned char c;
 	char *p;
 	int cmd;
+	int source_index = *source_index_out;
 
 	c = source[source_index];
 	if(c == '+')
@@ -2206,17 +2344,16 @@ static int EmbeddedCommand(unsigned int &source_index)
 		sign = 0x40;
 		source_index++;
 	}
-	else
-	if(c == '-')
+	else if(c == '-')
 	{
 		sign = 0x60;
 		source_index++;
 	}
 
-	if(isdigit(source[source_index]))
+	if(IsDigit09(source[source_index]))
 	{
 		value = atoi(&source[source_index]);
-		while(isdigit(source[source_index]))
+		while(IsDigit09(source[source_index]))
 			source_index++;
 	}
 
@@ -2247,6 +2384,7 @@ static int EmbeddedCommand(unsigned int &source_index)
 	}
 
 	embedded_list[embedded_ix++] = cmd + sign + (value << 8);
+	*source_index_out = source_index;
 	return(1);
 }  //  end of EmbeddedCommand
 
@@ -2273,9 +2411,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
 
 	// there is a list of character codes to be substituted with alternative codes
 
-	if(iswupper(c_lower = c))
+	if(iswupper2(c_lower = c))
 	{
-		c_lower = towlower(c);
+		c_lower = towlower2(c);
 		upper_case = 1;
 	}
 
@@ -2289,7 +2427,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
 				new_c = replace_chars[ix+1];
 				break;
 			}
-			if((word >> 16) == (unsigned int)towlower(next_in))
+			if((word >> 16) == (unsigned int)towlower2(next_in))
 			{
 				new_c = replace_chars[ix+1];
 				ignore_next = 1;
@@ -2306,14 +2444,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
 		// there is a second character to be inserted
 		// don't convert the case of the second character unless the next letter is also upper case
 		c2 = new_c >> 16;
-		if(upper_case && iswupper(next_in))
-			c2 = towupper(c2);
+		if(upper_case && iswupper2(next_in))
+			c2 = towupper2(c2);
 		*insert = c2;
 		new_c &= 0xffff;
 	}
 
 	if(upper_case)
-		new_c = towupper(new_c);
+		new_c = towupper2(new_c);
 
 	*wordflags |= FLAG_CHAR_REPLACED;
 	return(new_c);
@@ -2332,22 +2470,52 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c,
 	int next2;
 
 	static const unsigned char hangul_compatibility[0x34] = {
-	 0,  0x00,0x01,0xaa,0x02,0xac,0xad,0x03,
-	0x04,0x05,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4,
-	0xb6,0x06,0x07,0x08,0xb9,0x09,0x0a,0xbc,
-	0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x61,
-	0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
-	0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,
-	0x72,0x73,0x74,0x75 };
+		0,  0x00,0x01,0xaa,0x02,0xac,0xad,0x03,
+		0x04,0x05,0xb0,0xb1,0xb2,0xb3,0xb4,0xb4,
+		0xb6,0x06,0x07,0x08,0xb9,0x09,0x0a,0xbc,
+		0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x61,
+		0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,
+		0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,
+		0x72,0x73,0x74,0x75
+	};
+
+	// check for Korean Hangul letters
+	if(((code = c - 0xac00) >= 0) && (c <= 0xd7af))
+	{
+		// break a syllable hangul into 2 or 3 individual jamo
+		initial = (code/28)/21;
+		medial = (code/28) % 21;
+		final = code % 28;
+
+		if(initial == 11)
+		{
+			// null initial
+			c = medial + 0x1161;
+			if(final > 0)
+				*insert = final + 0x11a7;
+		}
+		else
+		{
+			// extact the initial and insert the remainder with a null initial
+			c = initial + 0x1100;
+			*insert = (11*28*21) + (medial*28) + final + 0xac00;
+		}
+		return(c);
+	}
+	else if(((code = c - 0x3130) >= 0) && (code < 0x34))
+	{
+		// Hangul compatibility jamo
+		return(hangul_compatibility[code] + 0x1100);
+	}
 
 	switch(tr->translator_name)
 	{
 	case L('a','f'):
 	case L('n','l'):
-	// look for 'n  and replace by a special character (unicode: schwa)
+		// look for 'n  and replace by a special character (unicode: schwa)
 
 
-		if(!iswalpha(prev_in))
+		if(!iswalpha2(prev_in))
 		{
 			utf8_in(&next2, &ptr[1]);
 
@@ -2367,39 +2535,36 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c,
 			}
 		}
 		break;
+	}
+	return(SubstituteChar(tr, c, next_in, insert, wordflags));
+}
+
+
+static const char *UCase_ga[] = {"bp","bhf","dt","gc","hA","mb","nd","ng","ts","tA","nA",NULL};
+
+static int UpperCaseInWord(Translator *tr, char *word, int c)
+{//=====================================================
+	int ix;
+	int len;
+	const char *p;
 
-	case L('k','o'):
-		if(((code = c - 0xac00) >= 0) && (c <= 0xd7af))
+	if(tr->translator_name == L('g','a'))
+	{
+		// Irish
+		for(ix=0; ; ix++)
 		{
-			// break a syllable hangul into 2 or 3 individual jamo
-			initial = (code/28)/21;
-			medial = (code/28) % 21;
-			final = code % 28;
+			if((p = UCase_ga[ix]) == NULL)
+				break;
 
-			if(initial == 11)
+			len = strlen(p);
+			if((word[-len]==' ') && (memcmp(&word[-len+1], p, len-1) == 0))
 			{
-				// null initial
-				c = medial + 0x1161;
-				if(final > 0)
-					*insert = final + 0x11a7;
+				if((c == p[len-1]) || ((p[len-1]=='A') && IsVowel(tr, c)))
+					return(1);
 			}
-			else
-			{
-				// extact the initial and insert the remainder with a null initial
-				c = initial + 0x1100;
-				*insert = (11*28*21) + (medial*28) + final + 0xac00;
-			}
-			return(c);
-		}
-		else
-		if(((code = c - 0x3130) >= 0) && (code < 0x34))
-		{
-			// Hangul compatibility jamo
-			return(hangul_compatibility[code] + 0x1100);
 		}
-		break;
 	}
-	return(SubstituteChar(tr, c, next_in, insert, wordflags));
+	return(0);
 }
 
 
@@ -2428,6 +2593,7 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
 	int dict_flags = 0;        // returned from dictionary lookup
 	int word_flags;        // set here
 	int next_word_flags;
+	int new_sentence2;
 	int embedded_count = 0;
 	int letter_count = 0;
 	int space_inserted = 0;
@@ -2479,13 +2645,16 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
 		fprintf(f_logespeak,"ENDCLAUSE\n");
 		fflush(f_logespeak);
 	}
-p = source;
+	p = source;
 
 	charix[charix_top+1] = 0;
 	charix[charix_top+2] = 0x7fff;
 	charix[charix_top+3] = 0;
 
 	clause_pause = (terminator & 0xfff) * 10;  // mS
+	if(terminator & CLAUSE_PAUSE_LONG)
+	  clause_pause = clause_pause * 32 ;  // pause value is *320mS not *10mS
+
 	tone = (terminator >> 12) & 0x7;
 	if(tone2 != 0)
 	{
@@ -2508,16 +2677,19 @@ p = source;
 		if(clause_pause < 0)
 			clause_pause = 0;
 
-		terminator &= ~CLAUSE_BIT_SENTENCE;  // clear sentence bit
+		if(new_sentence)
+			terminator |= CLAUSE_BIT_SENTENCE;  // carry forward an end-of-sentence indicator
 		max_clause_pause += clause_pause;
+		new_sentence2 = 0;
 	}
 	else
 	{
 		max_clause_pause = clause_pause;
+		new_sentence2 = new_sentence;
 	}
 	tr->clause_terminator = terminator;
 
-	if(new_sentence)
+	if(new_sentence2)
 	{
 		count_sentences++;
 		if(skip_sentences > 0)
@@ -2540,7 +2712,8 @@ p = source;
 	tr->expect_verb_s=0;
 	tr->phonemes_repeat_count = 0;
 	tr->end_stressed_vowel=0;
-	tr->prev_dict_flags = 0;
+	tr->prev_dict_flags[0] = 0;
+	tr->prev_dict_flags[1] = 0;
 
 	word_count = 0;
 	single_quoted = 0;
@@ -2584,8 +2757,7 @@ p = source;
 			prev_in = prev_in_save;
 			prev_in_save = 0;
 		}
-		else
-		if(source_index > 0)
+		else if(source_index > 0)
 		{
 			utf8_in2(&prev_in,&source[source_index-1],1);  //  prev_in = source[source_index-1];
 		}
@@ -2623,7 +2795,7 @@ p = source;
 			}
 			else
 			{
-				embedded_count += EmbeddedCommand(source_index);
+				embedded_count += EmbeddedCommand(&source_index);
 				prev_in_save = prev_in;
 				// replace the embedded command by spaces
 				memset(&source[srcix],' ',source_index-srcix);
@@ -2651,8 +2823,7 @@ p = source;
 				c = ' ';
 			}
 		}
-		else
-		if((option_sayas2 & 0xf0) == SAYAS_DIGITS)
+		else if((option_sayas2 & 0xf0) == SAYAS_DIGITS)
 		{
 			if(iswdigit(c))
 			{
@@ -2675,8 +2846,7 @@ p = source;
 				}
 			}
 		}
-		else
-		if((option_sayas2 & 0x10) == 0)
+		else if((option_sayas2 & 0x10) == 0)
 		{
 			// speak as words
 
@@ -2690,7 +2860,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 }
 #endif
 			if((c == 0x92) || (c == 0xb4) || (c == 0x2019) || (c == 0x2032))
-				c = '\'';    // 'microsoft' quote or sexed closing single quote, or prime - possibly used as apostrophe 
+				c = '\'';    // 'microsoft' quote or sexed closing single quote, or prime - possibly used as apostrophe
 
 			if(((c == 0x2018) || (c == '?')) && IsAlpha(prev_out) && IsAlpha(next_in))
 			{
@@ -2755,7 +2925,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 			{
 				if((next_in == '\002') || ((next_in == '[') && option_phoneme_input))
 				{
-					//  "[\002" is used internally to start phoneme mode  
+					//  "[\002" is used internally to start phoneme mode
 					phoneme_mode = FLAG_PHONEMES;
 					source_index++;
 					continue;
@@ -2782,7 +2952,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 					}
 					else
 					{
-						if(iswupper(c))
+						if(iswupper2(c))
 							word_flags |= FLAG_FIRST_UPPER;
 
 						if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in))
@@ -2795,23 +2965,29 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 					}
 				}
 
-				letter_count++;
-
-				if(tr->letter_bits_offset > 0)
+				if(c != ' ')
 				{
-					if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) ||
-						((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250)))
+					letter_count++;
+
+					if(tr->letter_bits_offset > 0)
 					{
-						// Don't mix native and Latin characters in the same word
-						// Break into separate words
-						c = ' ';
-						space_inserted = 1;
-						word_flags |= FLAG_HYPHEN_AFTER;
-						next_word_flags |= FLAG_HYPHEN;
+						if(((c < 0x250) && (prev_out >= tr->letter_bits_offset)) ||
+								((c >= tr->letter_bits_offset) && (letter_count > 1) && (prev_out < 0x250)))
+						{
+							// Don't mix native and Latin characters in the same word
+							// Break into separate words
+							if(IsAlpha(prev_out))
+							{
+								c = ' ';
+								space_inserted = 1;
+								word_flags |= FLAG_HYPHEN_AFTER;
+								next_word_flags |= FLAG_HYPHEN;
+							}
+						}
 					}
 				}
 
-				if(iswupper(c))
+				if(iswupper2(c))
 				{
 					c = towlower2(c);
 
@@ -2826,18 +3002,32 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 					}
 					else
 					{
-						if(iswlower(prev_in))
+						if(iswlower2(prev_in))
 						{
-							c = ' ';      // lower case followed by upper case, treat as new word
-							space_inserted = 1;
-							prev_in_save = c;
-//							next_word_flags |= FLAG_NOSPACE;  // problem: prevents FLAG_HAS_DOT being set
+							// lower case followed by upper case in a word
+							if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
+							{
+								// convert to lower case and continue
+								c = towlower2(c);
+							}
+							else
+							{
+								c = ' ';      // lower case followed by upper case, treat as new word
+								space_inserted = 1;
+								prev_in_save = c;
+								//							next_word_flags |= FLAG_NOSPACE;  // problem: prevents FLAG_HAS_DOT being set
+							}
 						}
-						else
-						if((c != ' ') && iswupper(prev_in) && iswlower(next_in))
+						else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in))
 						{
 							int next2_in;
 							utf8_in(&next2_in,&source[source_index + next_in_nbytes]);
+
+							if((tr->translator_name == L('n','l')) && (letter_count==2) && (c == 'j') && (prev_in == 'I'))
+							{
+								// Dutch words may capitalise initial IJ, don't split
+							}
+							else
 							if(IsAlpha(next2_in))
 							{
 								// changing from upper to lower case, start new word at the last uppercase, if 3 or more letters
@@ -2868,13 +3058,12 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 						all_upper_case = 0;
 				}
 			}
-			else
-			if(c=='-')
+			else if(c=='-')
 			{
 				if(!IsSpace(prev_in) && IsAlpha(next_in))
 				{
 					if(prev_out != ' ')
-					{	
+					{
 						// previous 'word' not yet ended (not alpha or numeric), start new word now.
 						c = ' ';
 						space_inserted = 1;
@@ -2888,31 +3077,27 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 						c = ' ';
 					}
 				}
-				else
-				if((prev_in==' ') && (next_in==' '))
+				else if((prev_in==' ') && (next_in==' '))
 				{
 					// ' - ' dash between two spaces, treat as pause
 					c = ' ';
 					pre_pause_add = 4;
 				}
-				else
-				if(next_in=='-')
+				else if(next_in=='-')
 				{
 					// double hyphen, treat as pause
 					source_index++;
 					c = ' ';
 					pre_pause_add = 4;
 				}
-				else
-				if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in))
+				else if((prev_out == ' ') && IsAlpha(prev_out2) && !IsAlpha(prev_in))
 				{
 					// insert extra space between a word + space + hyphen, to distinguish 'a -2' from 'a-2'
 					sbuf[ix++] = ' ';
 					words[word_count].start++;
 				}
 			}
-			else
-			if(c == '.')
+			else if(c == '.')
 			{
 				if(prev_out == '.')
 				{
@@ -2920,8 +3105,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 					c = ' ';
 					space_inserted = 1;
 				}
-				else
-				if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in))
+				else if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in))
 				{
 					// dot after a word, with space following, probably an abbreviation
 					words[word_count-1].flags |= FLAG_HAS_DOT;
@@ -2930,16 +3114,22 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 						c = ' ';   // remove the dot if it's followed by a space or hyphen, so that it's not pronounced
 				}
 			}
-			else
-			if(c == '\'')
+			else if(c == '\'')
 			{
 				if(((prev_in == '.') || iswalnum(prev_in)) && IsAlpha(next_in))
 				{
 					// between two letters, or in an abbreviation (eg. u.s.a.'s). Consider the apostrophe as part of the word
 					single_quoted = 0;
 				}
-				else
-				if((wcschr(tr->char_plus_apostrophe,prev_in) != 0) && (prev_out2 == ' '))
+				else if((tr->langopts.param[LOPT_APOSTROPHE] & 1) && IsAlpha(next_in))
+				{
+					single_quoted = 0;   // apostrophe at start of word is part of the word
+				}
+				else if((tr->langopts.param[LOPT_APOSTROPHE] & 2) && IsAlpha(prev_in))
+				{
+					single_quoted = 0;   // apostrophe at end of word is part of the word
+				}
+				else if((wcschr(tr->char_plus_apostrophe,prev_in) != 0) && (prev_out2 == ' '))
 				{
 					// consider single character plus apostrophe as a word
 					single_quoted = 0;
@@ -2970,44 +3160,41 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 			else
 #ifdef deleted
 // Brackets are now recognised in TranslateRules()
-			if(IsBracket(c))
-			{
-				pre_pause_add = 4;
-				c = ' ';
-			}
-			else
-#endif
-			if(lookupwchar(breaks,c) != 0)
-			{
-				c = ' ';  // various characters to treat as space
-			}
-			else
-			if(iswdigit(c))
-			{
-				if(tr->langopts.tone_numbers && IsAlpha(prev_out) && !IsDigit(next_in))
+				if(IsBracket(c))
 				{
+					pre_pause_add = 4;
+					c = ' ';
 				}
 				else
-				if((prev_out != ' ') && !iswdigit(prev_out))
-				{
-					if((prev_out != tr->langopts.decimal_sep) || ((decimal_sep_count > 0) && (tr->langopts.decimal_sep == ',')))
+#endif
+					if(lookupwchar(breaks,c) != 0)
 					{
-						c = ' ';
-						space_inserted = 1;
+						c = ' ';  // various characters to treat as space
 					}
-					else
+					else if(iswdigit(c))
 					{
-						decimal_sep_count = 1;
+						if(tr->langopts.tone_numbers && IsAlpha(prev_out) && !IsDigit(next_in))
+						{
+						}
+						else if((prev_out != ' ') && !iswdigit(prev_out))
+						{
+							if((prev_out != tr->langopts.decimal_sep) || ((decimal_sep_count > 0) && (tr->langopts.decimal_sep == ',')))
+							{
+								c = ' ';
+								space_inserted = 1;
+							}
+							else
+							{
+								decimal_sep_count = 1;
+							}
+						}
+						else if((prev_out == ' ') && IsAlpha(prev_out2) && !IsAlpha(prev_in))
+						{
+							// insert extra space between a word and a number, to distinguish 'a 2' from 'a2'
+							sbuf[ix++] = ' ';
+							words[word_count].start++;
+						}
 					}
-				}
-				else
-				if((prev_out == ' ') && IsAlpha(sbuf[ix-2]) && !IsAlpha(prev_in))
-				{
-					// insert extra space between a word and a number, to distinguish 'a 2' from 'a2'
-					sbuf[ix++] = ' ';
-					words[word_count].start++;
-				}
-			}
 		}
 
 		if(IsSpace(c))
@@ -3110,7 +3297,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 	if((word_count==0) && (embedded_count > 0))
 	{
 		// add a null 'word' to carry the embedded command flag
-		embedded_list[embedded_ix-1] |= 0x80; 
+		embedded_list[embedded_ix-1] |= 0x80;
 		words[word_count].flags |= FLAG_EMBEDDED;
 		word_count = 1;
 	}
@@ -3126,7 +3313,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 			ix--;  // the last word is a bracket, mark the previous word as last
 		words[ix].flags |= FLAG_LAST_WORD;
 
-		// FLAG_NOSPACE check to avoid recognizing  .mr  -mr 
+		// FLAG_NOSPACE check to avoid recognizing  .mr  -mr
 		if((terminator & CLAUSE_DOT) && !(words[word_count-1].flags & FLAG_NOSPACE))
 			words[word_count-1].flags |= FLAG_HAS_DOT;
 	}
@@ -3154,6 +3341,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 		if(skipping_text)
 			continue;
 
+		current_alphabet = NULL;
 
 		// digits should have been converted to Latin alphabet ('0' to '9')
 		word = pw = &sbuf[words[ix].start];
@@ -3168,9 +3356,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 				{
 					*pn++ = *pw++;
 				}
-				else
-				if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ')
-					&& iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' '))  // don't allow only 1 or 2 digits in the final part
+				else if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ')
+						&& iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' '))  // don't allow only 1 or 2 digits in the final part
 				{
 					pw += 2;
 					ix++;  // skip "word"
@@ -3202,7 +3389,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 
 			while(pn < &number_buf[sizeof(number_buf)-20])
 			{
-				if(!isdigit(c = *pw++) && (c != tr->langopts.decimal_sep))
+				if(!IsDigit09(c = *pw++) && (c != tr->langopts.decimal_sep))
 					break;
 
 				*pn++ = c;
@@ -3216,16 +3403,20 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 						*pn++ = tr->langopts.thousands_sep;
 					}
 					*pn++ = ' ';
-					if(tr->langopts.break_numbers & (1 << (nx-1)))
-					{
-						// the next group only has 1 digits (i.e. NUM2_10000), make it three
-						*pn++ = '0';
-						*pn++ = '0';
-					}
-					if(tr->langopts.break_numbers & (1 << (nx-2)))
+
+					if((words[ix].flags & FLAG_INDIVIDUAL_DIGITS) == 0)
 					{
-						// the next group only has 2 digits (i.e. NUM2_10000), make it three
-						*pn++ = '0';
+						if(tr->langopts.break_numbers & (1 << (nx-1)))
+						{
+							// the next group only has 1 digits, make it three
+							*pn++ = '0';
+							*pn++ = '0';
+						}
+						if(tr->langopts.break_numbers & (1 << (nx-2)))
+						{
+							// the next group only has 2 digits (eg. Indian languages), make it three
+							*pn++ = '0';
+						}
 					}
 				}
 			}
@@ -3234,7 +3425,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 
 			for(j=1; j<=nw; j++)
 			{
-					num_wtab[j].flags &= ~(FLAG_MULTIPLE_SPACES | FLAG_EMBEDDED);     // don't use these flags for subsequent parts when splitting a number
+				num_wtab[j].flags &= ~(FLAG_MULTIPLE_SPACES | FLAG_EMBEDDED);     // don't use these flags for subsequent parts when splitting a number
 			}
 
 			// include the next few characters, in case there are an ordinal indicator or other suffix
@@ -3321,7 +3512,9 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 		clause_pause = 10;
 	}
 
-	MakePhonemeList(tr, clause_pause, new_sentence);
+	MakePhonemeList(tr, clause_pause, new_sentence2);
+	phoneme_list[N_PHONEME_LIST].ph = NULL;   // recognize end of phoneme_list array, in Generate()
+	phoneme_list[N_PHONEME_LIST].sourceix = 1;
 
 	if(embedded_count)   // ???? is this needed
 	{
@@ -3333,7 +3526,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
 
 	prev_clause_pause = clause_pause;
 
-	*tone_out = tone;
+	if(tone_out != NULL)
+		*tone_out = tone;
 
 	new_sentence = 0;
 	if(terminator & CLAUSE_BIT_SENTENCE)
diff --git a/external/espeak/translate.h b/external/espeak/translate.h
old mode 100644
new mode 100755
index 76075f6..4750aff
--- a/external/espeak/translate.h
+++ b/external/espeak/translate.h
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2011 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -23,9 +23,12 @@
 #define CTRL_EMBEDDED    0x01         // control character at the start of an embedded command
 #define REPLACED_E       'E'          // 'e' replaced by silent e
 
-#define N_WORD_PHONEMES  160          // max phonemes in a word
+#define N_WORD_PHONEMES  200          // max phonemes in a word
 #define N_WORD_BYTES     160          // max bytes for the UTF8 characters in a word
 #define N_CLAUSE_WORDS   300          // max words in a clause
+#define N_TR_SOURCE    800            // the source text of a single clause (UTF8 bytes)
+
+
 #define N_RULE_GROUP2    120          // max num of two-letter rule chains
 #define N_HASH_DICT     1024
 #define N_CHARSETS        20
@@ -37,27 +40,22 @@
 #define FLAG_SKIPWORDS        0x80
 #define FLAG_PREPAUSE        0x100
 
-#define FLAG_ONLY            0x200
-#define FLAG_ONLY_S          0x400
-#define BITNUM_FLAG_ONLY         9  // bit 9 is set
-#define BITNUM_FLAG_ONLY_S      10  // bit 10 is set
-
-#define FLAG_STRESS_END      0x800  /* full stress if at end of clause */
-#define FLAG_STRESS_END2    0x1000  /* full stress if at end of clause, or only followed by unstressed */
-#define FLAG_UNSTRESS_END   0x2000  /* reduce stress at end of clause */
-#define FLAG_ATEND          0x4000  /* use this pronunciation if at end of clause */
-#define FLAG_ATSTART        0x8000  // use this pronunciation if at start of clause
-#define FLAG_SPELLWORD     0x10000  // re-translate the word as individual letters, separated by spaces
-#define FLAG_ABBREV        0x20000  // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
-#define FLAG_STEM          0x40000  // must have a suffix
-
-#define FLAG_DOUBLING      0x80000  // doubles the following consonant
-#define BITNUM_FLAG_ALT         19  // bit number of FLAG_ALT_TRANS - 1
-#define FLAG_ALT_TRANS    0x100000  // language specific
-#define FLAG_ALT2_TRANS   0x200000  // language specific
-#define FLAG_ALT3_TRANS   0x400000  // language specific
-#define FLAG_COMBINE      0x800000  // combine with the next word
+#define FLAG_STRESS_END      0x200  // full stress if at end of clause
+#define FLAG_STRESS_END2     0x400  // full stress if at end of clause, or only followed by unstressed
+#define FLAG_UNSTRESS_END    0x800  // reduce stress at end of clause
+#define FLAG_SPELLWORD      0x1000  // re-translate the word as individual letters, separated by spaces
+#define FLAG_ABBREV         0x2000  // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
+#define FLAG_DOUBLING       0x4000  // doubles the following consonant
+
+#define BITNUM_FLAG_ALT         14  // bit number of FLAG_ALT_TRANS - 1
+#define FLAG_ALT_TRANS      0x8000  // language specific
+#define FLAG_ALT2_TRANS    0x10000  // language specific
+#define FLAG_ALT3_TRANS    0x20000  // language specific
+#define FLAG_ALT4_TRANS    0x40000  // language specific
+#define FLAG_ALT5_TRANS    0x80000  // language specific
+#define FLAG_ALT6_TRANS   0x100000  // language specific
 
+#define FLAG_COMBINE      0x800000  // combine with the next word
 #define FLAG_ALLOW_DOT  0x01000000  // ignore '.' after word (abbreviation)
 #define FLAG_NEEDS_DOT  0x02000000  // only if the word is followed by a dot
 #define FLAG_WAS_UNPRONOUNCABLE  0x04000000  // the unpronounceable routine was used
@@ -83,8 +81,18 @@
 #define FLAG_ACCENT          0x800  // character name is base-character name + accent name
 #define FLAG_HYPHENATED     0x1000  // multiple-words, but needs hyphen between parts 1 and 2
 #define FLAG_SENTENCE       0x2000  // only if the clause is a sentence
+#define FLAG_ONLY           0x4000
+#define FLAG_ONLY_S         0x8000
+#define FLAG_STEM          0x10000  // must have a suffix
+#define FLAG_ATEND         0x20000  // use this pronunciation if at end of clause
+#define FLAG_ATSTART       0x40000  // use this pronunciation if at start of clause
+#define FLAG_NATIVE        0x80000  // not if we've switched translators
+#define FLAG_LOOKUP_SYMBOL 0x40000000  // to indicate called from Lookup()
+
 #define BITNUM_FLAG_ALLCAPS   0x2a
 #define BITNUM_FLAG_HYPHENATED  0x2c
+#define BITNUM_FLAG_ONLY      0x2e
+#define BITNUM_FLAG_ONLY_S    0x2f
 
 
 // wordflags, flags in source word
@@ -111,6 +119,8 @@
 #define FLAG_INDIVIDUAL_DIGITS 0x80000  // speak number as individual digits
 #define FLAG_DELETE_WORD     0x100000   // don't speak this word, it has been spoken as part of the previous word
 #define FLAG_CHAR_REPLACED   0x200000   // characters have been replaced by .replace in the *_rules
+#define FLAG_TRANSLATOR2     0x400000   // retranslating using a different language
+#define FLAG_PREFIX_REMOVED  0x800000   // a prefix has been removed from this word
 
 #define FLAG_SUFFIX_VOWEL  0x08000000   // remember an initial vowel from the suffix
 #define FLAG_NO_TRACE      0x10000000   // passed to TranslateRules() to suppress dictionary lookup printout
@@ -129,6 +139,7 @@
 #define SUFX_T        0x10000   // don't affect the stress position in the stem
 #define SUFX_B        0x20000  // break, this character breaks the word into stem and suffix (used with SUFX_P)
 #define SUFX_A        0x40000  // remember that the suffix starts with a vowel
+#define SUFX_M        0x80000  // bit 19, allow multiple suffixes
 
 #define SUFX_UNPRON     0x8000   // used to return $unpron flag from *_rules
 
@@ -172,6 +183,11 @@
 #define RULE_SPELLING   31   // W while spelling letter-by-letter
 #define RULE_LAST_RULE   31
 
+#define DOLLAR_UNPR     0x01
+#define DOLLAR_NOPREFIX 0x02
+#define DOLLAR_LIST     0x03
+
+
 #define LETTERGP_A	0
 #define LETTERGP_B	1
 #define LETTERGP_C	2
@@ -183,7 +199,7 @@
 
 
 // Punctuation types  returned by ReadClause()
-// bits 0-7 pause x 10mS, bits 12-14 intonation type,
+// bits 0-11 pause x 10mS
 // bits12-14 intonation type
 // bit 15- don't need space after the punctuation
 // bit 19=sentence, bit 18=clause,  bits 17=voice change
@@ -191,6 +207,8 @@
 // bit 20= punctuation character can be inside a word (Armenian)
 // bit 21= speak the name of the punctuation character
 // bit 22= dot after the last word
+// bit 23= pause is x 320mS (not x 10mS)
+
 #define CLAUSE_BIT_SENTENCE  0x80000
 #define CLAUSE_BIT_CLAUSE    0x40000
 #define CLAUSE_BIT_VOICE     0x20000
@@ -198,6 +216,7 @@
 #define PUNCT_IN_WORD        0x100000
 #define PUNCT_SAY_NAME       0x200000
 #define CLAUSE_DOT           0x400000
+#define CLAUSE_PAUSE_LONG 0x800000
 
 #define CLAUSE_NONE        ( 0 + 0x04000)
 #define CLAUSE_PARAGRAPH   (70 + 0x80000)
@@ -241,9 +260,9 @@ typedef struct {
 typedef struct{
 	unsigned int flags;
 	unsigned short start;
-	unsigned short sourceix;
 	unsigned char pre_pause;
 	unsigned char wmark;
+	unsigned short sourceix;
 	unsigned char length;
 } WORD_TAB;
 
@@ -257,8 +276,25 @@ extern PARAM_STACK param_stack[];
 extern const int param_defaults[N_SPEECH_PARAM];
 
 
-
-#define N_LOPTS      20
+typedef struct {
+    const char *name;
+    int offset;
+    unsigned short range_min, range_max;
+    int language;
+    int flags;
+} ALPHABET;
+
+extern ALPHABET alphabets[];
+extern ALPHABET *current_alphabet;
+// alphabet flags
+#define AL_DONT_NAME  0x01    // don't speak the alphabet name
+#define AL_NOT_LETTERS  0x02  // don't use the language for speaking letters
+#define AL_WORDS      0x04    // use the language to speak words
+#define AL_NOT_CODE   0x08    // don't speak the character code
+#define AL_NO_SYMBOL  0x10    // don't repeat "symbol" or "character"
+
+
+#define N_LOPTS      21
 #define LOPT_DIERESES        1
  // 1=remove [:] from unstressed syllables, 2= remove from unstressed or non-penultimate syllables
  // bit 4=0, if stress < 4,  bit 4=1, if not the highest stress in the word
@@ -328,6 +364,10 @@ extern const int param_defaults[N_SPEECH_PARAM];
 	// bit 0:  Don't allow suffices if there is no previous syllable
 #define LOPT_SUFFIX  19
 
+	// bit 0  Apostrophe at start of word is part of the word
+	// bit 1  Apostrophe at end of word is part of the word
+#define LOPT_APOSTROPHE  20
+
 
 // stress_rule
 #define STRESSPOSN_1L	0	// 1st syllable
@@ -348,35 +388,58 @@ typedef struct {
 
 #define S_NO_DIM            0x02
 #define S_FINAL_DIM         0x04
-#define S_FINAL_NO_2        0x10
-#define S_NO_AUTO_2         0x20
-#define S_2_TO_HEAVY        0x40
-#define S_FIRST_PRIMARY     0x80
-#define S_2_SYL_2           0x1000
-#define S_INITIAL_2         0x2000
-#define S_NO_AUTO_DIM       0x10000
-#define S_HYPEN_UNSTRESS    0x100000
-#define S_NO_EOC_LENGTHEN   0x200000
-// bit0=don't stress monosyllables, except at end of clause
+#define S_FINAL_DIM_ONLY    0x06
 // bit1=don't set diminished stress,
 // bit2=mark unstressed final syllables as diminished
+
 // bit3=set consecutive unstressed syllables in unstressed words to diminished, but not in stressed words
+
+#define S_FINAL_NO_2        0x10
 // bit4=don't allow secondary stress on last syllable
+
+#define S_NO_AUTO_2         0x20
 // bit5-don't use automatic secondary stress
+
+#define S_2_TO_HEAVY        0x40
 // bit6=light syllable followed by heavy, move secondary stress to the heavy syllable. LANG=Finnish
+
+#define S_FIRST_PRIMARY     0x80
 // bit7=if more than one primary stress, make the subsequent primaries to secondary stress
+
+#define S_FINAL_STRESS_C    0x100
 // bit8=stress last syllable if it doesn't end in a vowel
+
+#define S_FINAL_SPANISH     0x200
 // bit9=stress last syllable if it doesn't end in vowel or "s" or "n"  LANG=Spanish
+
+#define S_2_SYL_2           0x1000
 // bit12= In a 2-syllable word, if one has primary stress then give the other secondary stress
+
+#define S_INITIAL_2         0x2000
 // bit13= If there is only one syllable before the primary stress, give it a secondary stress
-// bit15= Give stress to the first unstressed syllable
-// bit16= Don't diminish consecutive syllables within a word.
+
+#define S_MID_DIM           0x10000
+// bit 16= Set (not first or last) syllables to diminished stress
+
+#define S_PRIORITY_STRESS   0x20000
 // bit17= "priority" stress reduces other primary stress to "unstressed" not "secondary"
+
+#define S_EO_CLAUSE1        0x40000
 // bit18= don't lengthen short vowels more than long vowels at end-of-clause
+
+#define S_FINAL_LONG         0x80000
 // bit19=stress on final syllable if it has a long vowel, but previous syllable has a short vowel
+
+
+#define S_HYPEN_UNSTRESS    0x100000
 // bit20= hyphenated words, 2nd part is unstressed
+
+#define S_NO_EOC_LENGTHEN   0x200000
 // bit21= don't lengthen vowels at end-of-clause
 
+// bit15= Give stress to the first unstressed syllable
+
+
 	int stress_flags;
 	int unstressed_wd1; // stress for $u word of 1 syllable
 	int unstressed_wd2; // stress for $u word of >1 syllable
@@ -402,6 +465,7 @@ typedef struct {
 #define NUM_DFRACTION_4  0x8000
 #define NUM_DFRACTION_5  0xa000
 #define NUM_DFRACTION_6  0xc000
+#define NUM_DFRACTION_7  0xe000    // lang=si, alternative form of number for decimal fraction digits (except the last)
 #define NUM_ORDINAL_DOT   0x10000
 #define NUM_NOPAUSE       0x20000
 #define NUM_AND_HUNDRED   0x40000
@@ -414,6 +478,7 @@ typedef struct {
 #define NUM_ROMAN_CAPITALS 0x2000000
 #define NUM_ROMAN_AFTER    0x4000000
 #define NUM_ROMAN_ORDINAL  0x8000000
+#define NUM_SINGLE_STRESS_L  0x10000000
 
 	// bits0-1=which numbers routine to use.
 	// bit2=  thousands separator must be space
@@ -442,6 +507,7 @@ typedef struct {
 	// bit25= Roman numbers only if upper case
 	// bit26= say "roman" after the number, not before
 	// bit27= Roman numbers are ordinal numbers
+   // bit28= only one primary stress in tens+units (on the tens)
 	int numbers;
 
 #define NUM2_THOUSANDS_VAR1     0x40
@@ -450,19 +516,25 @@ typedef struct {
 #define NUM2_THOUSANDS_VAR4     0x100
 #define NUM2_THOUSANDS_VAR5     0x140
 
+#define NUM2_ORDINAL_NO_AND     0x800
 #define NUM2_MULTIPLE_ORDINAL   0x1000
 #define NUM2_NO_TEEN_ORDINALS   0x2000
 #define NUM2_MYRIADS            0x4000
 #define NUM2_ENGLISH_NUMERALS   0x8000
 #define NUM2_PERCENT_BEFORE     0x10000
+#define NUM2_OMIT_1_HUNDRED_ONLY 0x20000
+#define NUM2_ORDINAL_AND_THOUSANDS 0x40000
 	// bits 1-4  use variant form of numbers before thousands,millions,etc.
 	// bits 6-8  use different forms of thousand, million, etc (M MA MB)
 	// bit9=(LANG=rw) say "thousand" and "million" before its number, not after
+	// bit11=(LANG=es,an) don't say 'and' between tens and units for ordinal numbers
 	// bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units
 	// bit13=(LANG=pt) don't use 11-19 numbers to make ordinals
 	// bit14=(LANG=ko)  use myriads (groups of 4 digits) not thousands (groups of 3)
 	// bit15=(LANG=ne)  speak (non-replaced) English numerals in English
 	// bit16=(LANG=si)  say "%" before the number
+	// bit17=(LANG=ml)  omit "one" before hundred only if there are no previous digits
+	// bit18=(LANG=ta)  same variant for ordinals and thousands (#o = #a)
 	int numbers2;
 
 #define BREAK_THOUSANDS   0x49249248
@@ -473,6 +545,7 @@ typedef struct {
 	int decimal_sep;
 	int max_digits;    // max number of digits which can be spoken as an integer number (rather than individual digits)
 	const char *ordinal_indicator;   // UTF-8 string
+	const char *roman_suffix;    // add this (ordinal) suffix to Roman numbers (LANG=an)
 
 	// bit 0, accent name before the letter name, bit 1 "capital" after letter name
 	int accents;
@@ -487,13 +560,21 @@ typedef struct {
 	char tone_numbers;
 	char ideographs;      // treat as separate words
 	char textmode;          // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled)
+	char dotless_i;         // uses letter U+0131
 	int testing;            // testing options: bit 1= specify stressed syllable in the form:  "outdoor/2"
 	int listx;    // compile *_listx after *list
 	const unsigned int *replace_chars;      // characters to be substitutes
-	const char *ascii_language;  // switch to this language for Latin characters
+	char ascii_language[8];  // switch to this language for Latin characters
+	int our_alphabet;           // offset for main alphabet (if not set in letter_bits_offset)
+	int alt_alphabet;       // offset for another language to recognize
+	int alt_alphabet_lang;  // language for the alt_alphabet
 	int max_lengthmod;
 	int lengthen_tonic;   // lengthen the tonic syllable
 	int suffix_add_e;      // replace a suffix (which has the SUFX_E flag) with this character
+
+#define DICTDIALECT_EN_US  1  // bit number
+#define DICTDIALECT_ES_LA  2
+	int dict_dialect;         // bitmap, use a dialect for foreign words
 } LANGUAGE_OPTIONS;
 
 
@@ -516,9 +597,9 @@ typedef struct
 	int translator_name;
 	int transpose_max;
 	int transpose_min;
+	const char *transpose_map;
 	char dictionary_name[40];
 
-	char phon_out[400];
 	char phonemes_repeat[20];
 	int  phonemes_repeat_count;
 	int  phoneme_tab_ix;
@@ -527,6 +608,7 @@ typedef struct
 	unsigned char stress_amps_r[8];
 	short stress_lengths[8];
 	int dict_condition;    // conditional apply some pronunciation rules and dict.lookups
+	int dict_min_size;
 	const unsigned short *charset_a0;   // unicodes for characters 0xa0 to oxff
 	const wchar_t *char_plus_apostrophe;  // single chars + apostrophe treated as words
 	const wchar_t *punct_within_word;   // allow these punctuation characters within words
@@ -560,7 +642,6 @@ typedef struct
 	unsigned char groups2_start[256];    // index into groups2
 	const short *frequent_pairs;   // list of frequent pairs of letters, for use in compressed *_list
 
-
 	int expect_verb;
 	int expect_past;    // expect past tense
 	int expect_verb_s;
@@ -576,7 +657,7 @@ typedef struct
 
 	int prepause_timeout;
 	int end_stressed_vowel;  // word ends with stressed vowel
-	int prev_dict_flags;     // dictionary flags from previous word
+	int prev_dict_flags[2];     // dictionary flags from previous word
 	int clause_terminator;
 } Translator;
 
@@ -651,16 +732,27 @@ void InitNamedata(void);
 void InitText(int flags);
 void InitText2(void);
 int IsDigit(unsigned int c);
+int IsDigit09(unsigned int c);
 int IsAlpha(unsigned int c);
+int IsVowel(Translator *tr, int c);
+int IsSuperscript(int letter);
+int iswalpha2(int c);
 int isspace2(unsigned int c);
+int iswlower2(int c);
+int iswupper2(int c);
 int towlower2(unsigned int c);
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);
+int towupper2(unsigned int c);
+const char *GetTranslatedPhonemeString(int phoneme_mode);
+const char *WordToString2(unsigned int word);
+ALPHABET *AlphabetFromChar(int c);
+ALPHABET *AlphabetFromName(const char *name);
 
 Translator *SelectTranslator(const char *name);
 int SetTranslator2(const char *name);
 void DeleteTranslator(Translator *tr);
+void ProcessLanguageOptions(LANGUAGE_OPTIONS *langopts);
 int Lookup(Translator *tr, const char *word, char *ph_out);
-int LookupFlags(Translator *tr, const char *word);
+int LookupFlags(Translator *tr, const char *word, unsigned int **flags_out);
 
 int TranslateNumber(Translator *tr, char *word1, char *ph_out, unsigned int *flags, WORD_TAB *wtab, int control);
 int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab);
@@ -673,10 +765,10 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf);
 
 int LoadDictionary(Translator *tr, const char *name, int no_error);
 int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *flags, int end_flags, WORD_TAB *wtab);
+int HashDictionary(const char *string);
 
 void MakePhonemeList(Translator *tr, int post_pause, int new_sentence);
 int ChangePhonemes_ru(Translator *tr, PHONEME_LIST2 *phlist, int n_ph, int index, PHONEME_TAB *ph, CHANGEPH *ch);
-void ApplySpecialAttribute(Translator *tr, char *phonemes, int dict_flags);
 void ApplySpecialAttribute2(Translator *tr, char *phonemes, int dict_flags);
 void AppendPhonemes(Translator *tr, char *string, int size, const char *ph);
 
@@ -687,14 +779,14 @@ int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
 int Unpronouncable(Translator *tr, char *word, int posn);
 void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
 int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
-int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);
+int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab, char *word_out);
 void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *tone, char **voice_change);
 int ReadClause(Translator *tr, FILE *f_in, char *buf, short *charix, int *charix_top, int n_buf, int *tone_type, char *voice_change);
 
 void SetVoiceStack(espeak_VOICE *v, const char *variant_name);
 void InterpretPhoneme(Translator *tr, int control, PHONEME_LIST *plist, PHONEME_DATA *phdata, WORD_PH_DATA *worddata);
 void InterpretPhoneme2(int phcode, PHONEME_DATA *phdata);
-char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa);
+char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int use_ipa, int *flags);
 
 extern FILE *f_trans;		// for logging
 extern FILE *f_logespeak;
diff --git a/external/espeak/voice.h b/external/espeak/voice.h
old mode 100644
new mode 100755
index 1007f5b..8b2ddc8
--- a/external/espeak/voice.h
+++ b/external/espeak/voice.h
@@ -21,11 +21,12 @@
 
 typedef struct {
 	char v_name[40];
+	char language_name[20];
 
 	int phoneme_tab_ix;  // phoneme table number
 	int pitch_base;    // Hz<<12
 	int pitch_range;   // standard = 0x1000
-	
+
 	int speedf1;
 	int speedf2;
 	int speedf3;
@@ -84,3 +85,6 @@ void WavegenSetVoice(voice_t *v);
 void ReadTonePoints(char *string, int *tone_pts);
 void VoiceReset(int control);
 
+void FreeVoiceList(void);
+int GetAmplitude(void);
+void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pitch_range);
diff --git a/external/espeak/voices.cpp b/external/espeak/voices.cpp
old mode 100644
new mode 100755
index d5b34c5..4f77d34
--- a/external/espeak/voices.cpp
+++ b/external/espeak/voices.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2010 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2014 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -47,7 +47,8 @@ MNEM_TAB genders [] = {
 	{"unknown", 0},
 	{"male", 1},
 	{"female", 2},
-	{NULL, 0 }};
+	{NULL, 0 }
+};
 
 int tone_points[12] = {600,170, 1200,135, 2000,110, 3000,110, -1,0};
 //int tone_points[12] = {250,200,  400,170, 600,170, 1200,135, 2000,110, -1,0};
@@ -61,7 +62,7 @@ int formant_rate[9];         // values adjusted for actual sample rate
 
 
 #define DEFAULT_LANGUAGE_PRIORITY  5
-#define N_VOICES_LIST  150
+#define N_VOICES_LIST  250
 static int n_voices_list = 0;
 static espeak_VOICE *voices_list[N_VOICES_LIST];
 static int len_path_voices;
@@ -98,6 +99,7 @@ enum {
 	V_STRESSADD,
 	V_DICTRULES,
 	V_STRESSRULE,
+	V_STRESSOPT,
 	V_CHARSET,
 	V_NUMBERS,
 	V_OPTION,
@@ -106,6 +108,9 @@ enum {
 	V_KLATT,
 	V_FAST,
 	V_SPEED,
+	V_DICTMIN,
+	V_ALPHABET2,
+	V_DICTDIALECT,
 
 // these need a phoneme table to have been specified
 	V_REPLACE,
@@ -117,7 +122,8 @@ enum {
 static MNEM_TAB options_tab[] = {
 	{"reduce_t",  LOPT_REDUCE_T},
 	{"bracket", LOPT_BRACKET_PAUSE},
-	{NULL,   -1} };
+	{NULL,   -1}
+};
 
 static MNEM_TAB keyword_tab[] = {
 	{"name",       V_NAME},
@@ -127,7 +133,7 @@ static MNEM_TAB keyword_tab[] = {
 	{"formant",    V_FORMANT},
 	{"pitch",      V_PITCH},
 	{"phonemes",   V_PHONEMES},
-   {"translator", V_TRANSLATOR},
+	{"translator", V_TRANSLATOR},
 	{"dictionary", V_DICTIONARY},
 	{"stressLength", V_STRESSLENGTH},
 	{"stressAmp",  V_STRESSAMP},
@@ -136,6 +142,7 @@ static MNEM_TAB keyword_tab[] = {
 	{"tunes",      V_TUNES},
 	{"dictrules",	V_DICTRULES},
 	{"stressrule", V_STRESSRULE},
+	{"stressopt",  V_STRESSOPT},
 	{"charset",    V_CHARSET},
 	{"replace",    V_REPLACE},
 	{"words",      V_WORDGAP},
@@ -154,6 +161,9 @@ static MNEM_TAB keyword_tab[] = {
 	{"klatt",      V_KLATT},
 	{"fast_test2",  V_FAST},
 	{"speed",      V_SPEED},
+	{"dict_min",   V_DICTMIN},
+	{"alphabet2",  V_ALPHABET2},
+	{"dictdialect",   V_DICTDIALECT},
 
 	// these just set a value in langopts.param[]
 	{"l_dieresis", 0x100+LOPT_DIERESES},
@@ -163,11 +173,20 @@ static MNEM_TAB keyword_tab[] = {
 	{"l_unpronouncable", 0x100+LOPT_UNPRONOUNCABLE},
 	{"l_sonorant_min", 0x100+LOPT_SONORANT_MIN},
 	{"l_length_mods", 0x100+LOPT_LENGTH_MODS},
-	{NULL,   0} };
+	{"apostrophe", 0x100+LOPT_APOSTROPHE},
+	{NULL,   0}
+};
+
+static MNEM_TAB dict_dialects[] = {
+	{"en-us",   DICTDIALECT_EN_US},
+	{"es-la",   DICTDIALECT_ES_LA},
+	{NULL,   0}
+};
+
 
 #define N_VOICE_VARIANTS   12
 const char variants_either[N_VOICE_VARIANTS] = {1,2,12,3,13,4,14,5,11,0};
-const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,0};
+const char variants_male[N_VOICE_VARIANTS] = {1,2,3,4,5,6,0};
 const char variants_female[N_VOICE_VARIANTS] = {11,12,13,14,0};
 const char *variant_lists[3] = {variants_either, variants_male, variants_female};
 
@@ -184,6 +203,12 @@ static char *fgets_strip(char *buf, int size, FILE *f_in)
 	if(fgets(buf,size,f_in) == NULL)
 		return(NULL);
 
+	if(buf[0] == '#')
+	{
+		buf[0] = 0;
+		return(buf);
+	}
+
 	len = strlen(buf);
 	while((--len > 0) && isspace(buf[len]))
 		buf[len] = 0;
@@ -232,11 +257,11 @@ static void SetToneAdjust(voice_t *voice, int *tone_pts)
 		height2 = tone_pts[pt+1];
 		if((freq2 - freq1) > 0)
 		{
-			rate = double(height2-height1)/(freq2-freq1);
+			rate = (double)(height2-height1)/(freq2-freq1);
 
 			for(ix=freq1; ix<freq2; ix++)
 			{
-				y = height1 + int(rate * (ix-freq1));
+				y = height1 + (int)(rate * (ix-freq1));
 				if(y > 255)
 					y = 255;
 				voice->tone_adjust[ix] = y;
@@ -257,9 +282,9 @@ void ReadTonePoints(char *string, int *tone_pts)
 		tone_pts[ix] = -1;
 
 	sscanf(string,"%d %d %d %d %d %d %d %d %d %d",
-		&tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
-		&tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
-		&tone_pts[8],&tone_pts[9]);
+		   &tone_pts[0],&tone_pts[1],&tone_pts[2],&tone_pts[3],
+		   &tone_pts[4],&tone_pts[5],&tone_pts[6],&tone_pts[7],
+		   &tone_pts[8],&tone_pts[9]);
 }
 
 
@@ -284,7 +309,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
 	espeak_VOICE *voice_data;
 	int priority;
 	int age;
-	int n_variants = 3;    // default, number of variants of this voice before using another voice
+	int n_variants = 4;    // default, number of variants of this voice before using another voice
 	int gender;
 
 #ifdef PLATFORM_WINDOWS
@@ -313,8 +338,7 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
 			while(isspace(*p)) p++;
 			strncpy0(vname,p,sizeof(vname));
 		}
-		else
-		if(memcmp(linebuf,"language",8)==0)
+		else if(memcmp(linebuf,"language",8)==0)
 		{
 			priority = DEFAULT_LANGUAGE_PRIORITY;
 			vlanguage[0] = 0;
@@ -331,13 +355,11 @@ static espeak_VOICE *ReadVoiceFile(FILE *f_in, const char *fname, const char*lea
 				n_languages++;
 			}
 		}
-		else
-		if(memcmp(linebuf,"gender",6)==0)
+		else if(memcmp(linebuf,"gender",6)==0)
 		{
 			sscanf(&linebuf[6],"%s %d",vgender,&age);
 		}
-		else
-		if(memcmp(linebuf,"variants",8)==0)
+		else if(memcmp(linebuf,"variants",8)==0)
 		{
 			sscanf(&linebuf[8],"%d",&n_variants);
 		}
@@ -384,8 +406,10 @@ void VoiceReset(int tone_only)
 // Set voice to the default values
 
 	int  pk;
-	static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128};
-	static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128};
+	static unsigned char default_heights[N_PEAKS] = {130,128,120,116,100,100,128,128,128};  // changed for v.1.47
+	static unsigned char default_widths[N_PEAKS] = {140,128,128,160,171,171,128,128,128};
+//	static unsigned char default_heights[N_PEAKS] = {128,128,120,120,110,110,128,128,128};  // previous version
+//	static unsigned char default_widths[N_PEAKS] = {128,128,128,160,171,171,128,128,128};
 
 	static int breath_widths[N_PEAKS] = {0,200,200,400,400,400,600,600,600};
 
@@ -406,9 +430,9 @@ void VoiceReset(int tone_only)
 	voice->n_harmonic_peaks = 5;
 	voice->peak_shape = 0;
 	voice->voicing = 64;
-	voice->consonant_amp = 100;
+	voice->consonant_amp = 90;  // change from 100 to 90 for v.1.47
 	voice->consonant_ampv = 100;
-	voice->samplerate = 22050;
+	voice->samplerate = samplerate_native;
 	memset(voice->klattv,0,sizeof(voice->klattv));
 
 	speed.fast_settings[0] = 450;
@@ -434,13 +458,12 @@ void VoiceReset(int tone_only)
 		// adjust formant smoothing depending on sample rate
 		formant_rate[pk] = (formant_rate_22050[pk] * 22050)/samplerate;
 	}
-	voice->height[2] = 240;  // reduce F2 slightly
 
 	// This table provides the opportunity for tone control.
 	// Adjustment of harmonic amplitudes, steps of 8Hz
 	// value of 128 means no change
 //	memset(voice->tone_adjust,128,sizeof(voice->tone_adjust));
-SetToneAdjust(voice,tone_points);
+	SetToneAdjust(voice,tone_points);
 
 	// default values of speed factors
 	voice->speedf1 = 256;
@@ -474,11 +497,11 @@ static void VoiceFormant(char *p)
 		return;
 
 	if(freq >= 0)
-		voice->freq[formant] = int(freq * 2.56001);
+		voice->freq[formant] = (int)(freq * 2.56001);
 	if(height >= 0)
-		voice->height[formant] = int(height * 2.56001);
+		voice->height[formant] = (int)(height * 2.56001);
 	if(width >= 0)
-		voice->width[formant] = int(width * 2.56001);
+		voice->width[formant] = (int)(width * 2.56001);
 	voice->freqadd[formant] = freqadd;
 }
 
@@ -514,7 +537,22 @@ static int Read8Numbers(char *data_in,int *data)
 // Read 8 integer numbers
 	memset(data, 0, 8+sizeof(int));
 	return(sscanf(data_in,"%d %d %d %d %d %d %d %d",
-		&data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
+				  &data[0],&data[1],&data[2],&data[3],&data[4],&data[5],&data[6],&data[7]));
+}
+
+
+static unsigned int StringToWord2(const char *string)
+{//======================================================
+// Convert a language name string to a word such as L('e','n')
+	int ix;
+	int c;
+	unsigned int value = 0;
+
+	for(ix=0; (ix<4) && ((c = string[ix]) != 0); ix++)
+	{
+		value = (value << 8) | (c & 0xff);
+	}
+	return(value);
 }
 
 
@@ -551,14 +589,17 @@ voice_t *LoadVoice(const char *vname, int control)
 	char phonemes_name[40];
 	char option_name[40];
 	const char *language_type;
-	char buf[200];
+	char buf[sizeof(path_home)+30];
 	char path_voices[sizeof(path_home)+12];
-	char langname[4];
 
+	int dict_min = 0;
 	int stress_amps[8];
 	int stress_lengths[8];
 	int stress_add[8];
 	char names[8][40];
+	char name1[40];
+	char name2[80];
+	const char *voice_dir;
 
 	int pitch1;
 	int pitch2;
@@ -567,9 +608,12 @@ voice_t *LoadVoice(const char *vname, int control)
 	static char voice_name[40];        // voice name for current_voice_selected
 	static char voice_languages[100];  // list of languages and priorities for current_voice_selected
 
-	strcpy(voicename,vname);
-	if(voicename[0]==0)
-		strcpy(voicename,"default");
+	// which directory to look for a named voice. List of voice names, must end in a space.
+	static const char *voices_asia =
+		"az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
+	static const char *voices_europe =
+		"an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";
+	strncpy0 (voicename, vname, sizeof(voicename));
 
 #ifdef DATA_FROM_SOURCECODE_FILES
 	long numberOfBytes;
@@ -595,25 +639,34 @@ voice_t *LoadVoice(const char *vname, int control)
 	}
 	else
 	{
+		if(voicename[0]==0)
+			strcpy(voicename,"default");
+
 		sprintf(path_voices,"%s%cvoices%c",path_home,PATHSEP,PATHSEP);
-		sprintf(buf,"%s%s",path_voices,voicename);
+		sprintf(buf,"%s%s",path_voices,voicename);  // first, look in the main voices directory
 
 		if(GetFileLength(buf) <= 0)
 		{
-			// look for the voice in a sub-directory of the language name
-			langname[0] = voicename[0];
-			langname[1] = voicename[1];
-			langname[2] = 0;
-			sprintf(buf,"%s%s%c%s",path_voices,langname,PATHSEP,voicename);
-
-			if(GetFileLength(buf) <= 0)
+			// then look in the appropriate subdirectory
+			if((voicename[0]=='m') && (voicename[1]=='b'))
 			{
-				// look in "extra" sub-directory
-				sprintf(buf,"%sextra%c%s",path_voices,PATHSEP,voicename);
+				voice_dir = "mb";   // mbrola voices
+			}
+			else
+			{
+				sprintf(name2, "%s ", voicename);
+				if(strstr(voices_europe, voicename) != NULL)
+					voice_dir = "europe";
+				else if(strstr(voices_asia, voicename) != NULL)
+					voice_dir = "asia";
+				else
+					voice_dir = "other";
+
+				sprintf(buf,"%s%s%c%s", path_voices,voice_dir,PATHSEP,voicename);
 
 				if(GetFileLength(buf) <= 0)
 				{
-					// look in "test" sub-directory
+					// if not found, look in "test" sub-directory
 					sprintf(buf,"%stest%c%s",path_voices,PATHSEP,voicename);
 				}
 			}
@@ -660,7 +713,7 @@ voice_t *LoadVoice(const char *vname, int control)
 		// append the variant file name to the voice identifier
 		if((p = strchr(voice_identifier,'+')) != NULL)
 			*p = 0;    // remove previous variant name
-		sprintf(buf,"+%s",&vname[0]);    // djmw was vname[3] omit  !v/  from the variant filename
+		sprintf(buf,"+%s",&vname[3]);    // TODO was vname[0], omit  !v/  from the variant filename
 		strcat(voice_identifier,buf);
 		langopts = &translator->langopts;
 	}
@@ -672,7 +725,7 @@ voice_t *LoadVoice(const char *vname, int control)
 #ifdef DATA_FROM_SOURCECODE_FILES
 	long index = 0;
 	const char *start = data;
-	while (start = espeakdata_get_voicedata (start, numberOfBytes, buf, sizeof(buf), &index)) {
+	while (!! (start = espeakdata_get_voicedata (start, numberOfBytes, buf, sizeof(buf), &index))) {
 #else
 	while((f_voice != NULL) && (fgets_strip(buf,sizeof(buf),f_voice) != NULL)) {
 #endif
@@ -687,48 +740,49 @@ voice_t *LoadVoice(const char *vname, int control)
 		switch(key)
 		{
 		case V_LANGUAGE:
-			{
-				unsigned int len;
-				int priority;
+		{
+			unsigned int len;
+			int priority;
 
-				if(tone_only)
-					break;
+			if(tone_only)
+				break;
 
-				priority = DEFAULT_LANGUAGE_PRIORITY;
-				language_name[0] = 0;
+			priority = DEFAULT_LANGUAGE_PRIORITY;
+			language_name[0] = 0;
 
-				sscanf(p,"%s %d",language_name,&priority);
-				if(strcmp(language_name,"variant") == 0)
-					break;
+			sscanf(p,"%s %d",language_name,&priority);
+			if(strcmp(language_name,"variant") == 0)
+				break;
 
-				len = strlen(language_name) + 2;
-				// check for space in languages[]
-				if(len < (sizeof(voice_languages)-langix-1))
-				{
-					voice_languages[langix] = priority;
+			len = strlen(language_name) + 2;
+			// check for space in languages[]
+			if(len < (sizeof(voice_languages)-langix-1))
+			{
+				voice_languages[langix] = priority;
 
-					strcpy(&voice_languages[langix+1],language_name);
-					langix += len;
-				}
+				strcpy(&voice_languages[langix+1],language_name);
+				langix += len;
+			}
 
-				// only act on the first language line
-				if(language_set == 0)
-				{
-					language_type = strtok(language_name,"-");
-					language_set = 1;
-					strcpy(translator_name,language_type);
-					strcpy(new_dictionary,language_type);
-					strcpy(phonemes_name,language_type);
-					SelectPhonemeTableName(phonemes_name);
-
-					if(new_translator != NULL)
-							DeleteTranslator(new_translator);
-
-					new_translator = SelectTranslator(translator_name);
-					langopts = &new_translator->langopts;
-				}
+			// only act on the first language line
+			if(language_set == 0)
+			{
+				language_type = strtok(language_name,"-");
+				language_set = 1;
+				strcpy(translator_name,language_type);
+				strcpy(new_dictionary,language_type);
+				strcpy(phonemes_name,language_type);
+				SelectPhonemeTableName(phonemes_name);
+
+				if(new_translator != NULL)
+					DeleteTranslator(new_translator);
+
+				new_translator = SelectTranslator(translator_name);
+				langopts = &new_translator->langopts;
+				strncpy0(voice->language_name, language_name, sizeof(voice->language_name));
 			}
-			break;
+		}
+		break;
 
 		case V_NAME:
 			if(tone_only == 0)
@@ -739,14 +793,14 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_GENDER:
-			{
-				int age = 0;
-				char vgender[80];
-				sscanf(p,"%s %d",vgender,&age);
-				current_voice_selected.gender = LookupMnem(genders,vgender);
-				current_voice_selected.age = age;
-			}
-			break;
+		{
+			int age = 0;
+			char vgender[80];
+			sscanf(p,"%s %d",vgender,&age);
+			current_voice_selected.gender = LookupMnem(genders,vgender);
+			current_voice_selected.age = age;
+		}
+		break;
 
 		case V_TRANSLATOR:
 			if(tone_only) break;
@@ -754,7 +808,7 @@ voice_t *LoadVoice(const char *vname, int control)
 			sscanf(p,"%s",translator_name);
 
 			if(new_translator != NULL)
-					DeleteTranslator(new_translator);
+				DeleteTranslator(new_translator);
 
 			new_translator = SelectTranslator(translator_name);
 			langopts = &new_translator->langopts;
@@ -773,16 +827,16 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_PITCH:
-			{
-				double factor;
-				// default is  pitch 82 118
-				n = sscanf(p,"%d %d",&pitch1,&pitch2);
-				voice->pitch_base = (pitch1 - 9) << 12;
-				voice->pitch_range = (pitch2 - pitch1) * 108;
-				factor = double(pitch1 - 82)/82;
-				voice->formant_factor = (int)((1+factor/4) * 256);  // nominal formant shift for a different voice pitch
-			}
-			break;
+		{
+			double factor;
+			// default is  pitch 82 118
+			n = sscanf(p,"%d %d",&pitch1,&pitch2);
+			voice->pitch_base = (pitch1 - 9) << 12;
+			voice->pitch_range = (pitch2 - pitch1) * 108;
+			factor = (double)(pitch1 - 82)/82;
+			voice->formant_factor = (int)((1+factor/4) * 256);  // nominal formant shift for a different voice pitch
+		}
+		break;
 
 		case V_STRESSLENGTH:   // stressLength
 			stress_lengths_set = Read8Numbers(p,stress_lengths);
@@ -818,17 +872,36 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_DICTRULES:   // conditional dictionary rules and list entries
+		case V_NUMBERS:
+		case V_STRESSOPT:
+			// expect a list of numbers
 			while(*p != 0)
 			{
 				while(isspace(*p)) p++;
 				n = -1;
-				if(((n = atoi(p)) > 0) && (n < 32))
+				if((n = atoi(p)) > 0)
 				{
 					p++;
-					conditional_rules |= (1 << n);
+					if(n < 32)
+					{
+						if(key==V_DICTRULES)
+							conditional_rules |= (1 << n);
+						else if(key==V_NUMBERS)
+							langopts->numbers |= (1 << n);
+						else if(key==V_STRESSOPT)
+							langopts->stress_flags |= (1 << n);
+					}
+					else
+					{
+						if((key==V_NUMBERS) && (n < 64))
+							langopts->numbers |= (1 << (n-32));
+						else
+							fprintf(stderr,"Bad option number %d\n", n);
+					}
 				}
 				while(isalnum(*p)) p++;
 			}
+			ProcessLanguageOptions(langopts);
 			break;
 
 		case V_REPLACE:
@@ -847,9 +920,9 @@ voice_t *LoadVoice(const char *vname, int control)
 
 		case V_STRESSRULE:
 			sscanf(p,"%d %d %d %d",&langopts->stress_rule,
-				&langopts->stress_flags,
-				&langopts->unstressed_wd1,
-				&langopts->unstressed_wd2);
+				   &langopts->stress_flags,
+				   &langopts->unstressed_wd1,
+				   &langopts->unstressed_wd2);
 			break;
 
 		case V_CHARSET:
@@ -857,13 +930,10 @@ voice_t *LoadVoice(const char *vname, int control)
 				new_translator->charset_a0 = charsets[value];
 			break;
 
-		case V_NUMBERS:
-			sscanf(p,"%d %d",&langopts->numbers,&langopts->numbers2);
-			break;
-
 		case V_OPTION:
 			value2 = 0;
-			if((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0))
+			if(((sscanf(p,"%s %d %d",option_name,&value,&value2) >= 2) && ((ix = LookupMnem(options_tab, option_name)) >= 0)) ||
+				((sscanf(p,"%d %d %d",&ix,&value,&value2) >= 2) && (ix < N_LOPTS)))
 			{
 				langopts->param[ix] = value;
 				langopts->param2[ix] = value2;
@@ -904,12 +974,12 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_TONE:
-			{
-				int tone_data[12];
-				ReadTonePoints(p,tone_data);
-				SetToneAdjust(voice,tone_data);
-			}
-			break;
+		{
+			int tone_data[12];
+			ReadTonePoints(p,tone_data);
+			SetToneAdjust(voice,tone_data);
+		}
+		break;
 
 		case V_VOICING:
 			if(sscanf(p,"%d",&value)==1)
@@ -917,16 +987,16 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_BREATH:
-				voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
-				for(ix=1; ix<8; ix++)
-				{
-					if(ix % 2)
-						voice->breath[ix] = -voice->breath[ix];
-				}
+			voice->breath[0] = Read8Numbers(p,&voice->breath[1]);
+			for(ix=1; ix<8; ix++)
+			{
+				if(ix % 2)
+					voice->breath[ix] = -voice->breath[ix];
+			}
 			break;
 
 		case V_BREATHW:
-				voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
+			voice->breathw[0] = Read8Numbers(p,&voice->breathw[1]);
 			break;
 
 		case V_CONSONANTS:
@@ -938,20 +1008,18 @@ voice_t *LoadVoice(const char *vname, int control)
 			break;
 
 		case V_MBROLA:
-			{
-				int srate = 16000;
-				char name[40];
-				char phtrans[40];
+		{
+			int srate = 16000;
 
-				phtrans[0] = 0;
-				sscanf(p,"%s %s %d",name,phtrans,&srate);
-				if(LoadMbrolaTable(name,phtrans,srate) != EE_OK)
-				{
-					fprintf(stderr,"mbrola voice not found\n");
-				}
-				voice->samplerate = srate;
+			name2[0] = 0;
+			sscanf(p,"%s %s %d",name1,name2,&srate);
+			if(LoadMbrolaTable(name1,name2,srate) != EE_OK)
+			{
+				fprintf(stderr,"mbrola voice not found\n");
 			}
-			break;
+			voice->samplerate = srate;
+		}
+		break;
 
 		case V_KLATT:
 			voice->klattv[0] = 1;  // default source: IMPULSIVE
@@ -964,6 +1032,47 @@ voice_t *LoadVoice(const char *vname, int control)
 			SetSpeed(3);
 			break;
 
+		case V_DICTMIN:
+			sscanf(p,"%d",&dict_min);
+			break;
+
+		case V_ALPHABET2:
+			{
+				ALPHABET *alphabet;
+				name1[0] = name2[0] = 0;
+				sscanf(p, "%s %s", name1, name2);
+
+				if(strcmp(name1, "latin") == 0)
+				{
+					strncpy0(langopts->ascii_language,name2,sizeof(langopts->ascii_language));
+				}
+				else if((alphabet = AlphabetFromName(name1)) != 0)
+				{
+					langopts->alt_alphabet = alphabet->offset;
+					langopts->alt_alphabet_lang = StringToWord2(name2);
+				}
+				else
+				{
+					fprintf(stderr,"alphabet name '%s' not found\n", name1);
+				}
+			}
+			break;
+
+		case V_DICTDIALECT:
+			// specify a dialect to use for foreign words, eg, en-us for _^_EN
+			if(sscanf(p, "%s", name1) == 1)
+			{
+				if((ix = LookupMnem(dict_dialects, name1)) > 0)
+				{
+					langopts->dict_dialect |= (1 << ix);
+				}
+				else
+				{
+					fprintf(stderr, "dictdialect name '%s' not recognized\n", name1);
+				}
+			}
+			break;
+
 		default:
 			if((key & 0xff00) == 0x100)
 			{
@@ -1006,6 +1115,7 @@ voice_t *LoadVoice(const char *vname, int control)
 		}
 		voice->phoneme_tab_ix = ix;
 		new_translator->phoneme_tab_ix = ix;
+		new_translator->dict_min_size = dict_min;
 		LoadDictionary(new_translator, new_dictionary, control & 4);
 		if(dictionary_name[0]==0)
 			return(NULL);   // no dictionary loaded
@@ -1030,6 +1140,7 @@ voice_t *LoadVoice(const char *vname, int control)
 		translator = new_translator;
 	}
 
+
 	// relative lengths of different stress syllables
 	for(ix=0; ix<stress_lengths_set; ix++)
 	{
@@ -1070,7 +1181,7 @@ static char *ExtractVoiceVariantName(char *vname, int variant_num, int add_dir)
 			// The voice name has a +variant suffix
 			variant_num = 0;
 			*p++ = 0;   // delete the suffix from the voice name
-			if(isdigit(*p))
+			if(IsDigit09(*p))
 			{
 				variant_num = atoi(p);  // variant number
 			}
@@ -1163,10 +1274,10 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
 
 	p = voice->languages;  // list of languages+dialects for which this voice is suitable
 
-	if(strcmp(spec_language,"mbrola")==0)
+	if(spec_n_parts < 0)
 	{
-		// only list mbrola voices
-		if(memcmp(voice->identifier,"mb/",3) == 0)
+		// match on the subdirectory
+		if(memcmp(voice->identifier, spec_language, spec_lang_len) == 0)
 			return(100);
 		return(0);
 	}
@@ -1244,15 +1355,14 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s
 			// match on voice name
 			score += 500;
 		}
-		else
-		if(strcmp(voice_spec->name,voice->identifier)==0)
+		else if(strcmp(voice_spec->name,voice->identifier)==0)
 		{
 			score += 400;
 		}
 	}
 
 	if(((voice_spec->gender == 1) || (voice_spec->gender == 2)) &&
-		((voice->gender == 1) || (voice->gender == 2)))
+			((voice->gender == 1) || (voice->gender == 2)))
 	{
 		if(voice_spec->gender == voice->gender)
 			score += 50;
@@ -1300,6 +1410,7 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int
 	int lang_len=0;
 	espeak_VOICE *vp;
 	char language[80];
+	char buf[sizeof(path_home)+80];
 
 	// count number of parts in the specified language
 	if((voice_select->languages != NULL) && (voice_select->languages[0] != 0))
@@ -1312,6 +1423,26 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int
 				n_parts++;
 		}
 	}
+
+	if((n_parts == 1) && (control & 1))
+	{
+		if(strcmp(language, "mbrola") == 0)
+		{
+			language[2] = 0;  // truncate to "mb"
+			lang_len = 2;
+		}
+
+		sprintf(buf, "%s/voices/%s", path_home, language);
+		if(GetFileLength(buf) == -2)
+		{
+			// A subdirectory name has been specified.  List all the voices in that subdirectory
+			language[lang_len++] = PATHSEP;
+			language[lang_len] = 0;
+			n_parts = -1;
+		}
+
+	}
+
 	// select those voices which match the specified language
 	nv = 0;
 	for(ix=0; ix<n_voices_list; ix++)
@@ -1384,8 +1515,7 @@ espeak_VOICE *SelectVoiceByName(espeak_VOICE **voices, const char *name2)
 			{
 				match_fname = ix;  // matching identifier, use this if no matching name
 			}
-			else
-			if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
+			else if(strcmp(last_part,&id[strlen(id)-last_part_len])==0)
 			{
 				match_fname2 = ix;
 			}
@@ -1482,8 +1612,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
 	gender = 0;
 	if((voice_select2.gender == 2) || ((voice_select2.age > 0) && (voice_select2.age < 13)))
 		gender = 2;
-	else
-	if(voice_select2.gender == 1)
+	else if(voice_select2.gender == 1)
 		gender = 1;
 
 #define AGE_OLD  60
@@ -1501,6 +1630,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
 		vp = voices[ix];
 		// is the main voice the required gender?
 		skip=0;
+
 		if((gender != 0) && (vp->gender != gender))
 		{
 			skip=1;
@@ -1509,6 +1639,7 @@ char const *SelectVoice(espeak_VOICE *voice_select, int *found)
 		{
 			skip=1;
 		}
+
 		if(skip==0)
 		{
 			voices2[ix2++] = vp;
@@ -1614,8 +1745,8 @@ static void GetVoices(const char *path)
 	}
 #else
 #ifdef PLATFORM_WINDOWS
-   WIN32_FIND_DATAA FindFileData;
-   HANDLE hFind = INVALID_HANDLE_VALUE;
+	WIN32_FIND_DATAA FindFileData;
+	HANDLE hFind = INVALID_HANDLE_VALUE;
 
 #undef UNICODE         // we need FindFirstFileA() which takes an 8-bit c-string
 	sprintf(fname,"%s\\*",path);
@@ -1624,29 +1755,33 @@ static void GetVoices(const char *path)
 		return;
 
 	do {
-		sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
-
-		ftype = GetFileLength(fname);
+		if(n_voices_list >= (N_VOICES_LIST-2))
+			break;   // voices list is full
 
-		if((ftype == -2) && (FindFileData.cFileName[0] != '.'))
-		{
-			// a sub-sirectory
-			GetVoices(fname);
-		}
-		else
-		if(ftype > 0)
+		if(FindFileData.cFileName[0] != '.')
 		{
-			// a regular line, add it to the voices list
-			if((f_voice = fopen(fname,"r")) == NULL)
-				continue;
+			sprintf(fname,"%s%c%s",path,PATHSEP,FindFileData.cFileName);
+			ftype = GetFileLength(fname);
 
-			// pass voice file name within the voices directory
-			voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
-			fclose(f_voice);
-
-			if(voice_data != NULL)
+			if(ftype == -2)
 			{
-				voices_list[n_voices_list++] = voice_data;
+				// a sub-sirectory
+				GetVoices(fname);
+			}
+			else if(ftype > 0)
+			{
+				// a regular line, add it to the voices list
+				if((f_voice = fopen(fname,"r")) == NULL)
+					continue;
+
+				// pass voice file name within the voices directory
+				voice_data = ReadVoiceFile(f_voice, fname+len_path_voices, FindFileData.cFileName);
+				fclose(f_voice);
+
+				if(voice_data != NULL)
+				{
+					voices_list[n_voices_list++] = voice_data;
+				}
 			}
 		}
 	} while(FindNextFileA(hFind, &FindFileData) != 0);
@@ -1664,17 +1799,19 @@ static void GetVoices(const char *path)
 		if(n_voices_list >= (N_VOICES_LIST-2))
 			break;   // voices list is full
 
+		if(ent->d_name[0] == '.')
+			continue;
+
 		sprintf(fname,"%s%c%s",path,PATHSEP,ent->d_name);
 
 		ftype = GetFileLength(fname);
 
-		if((ftype == -2) && (ent->d_name[0] != '.'))
+		if(ftype == -2)
 		{
 			// a sub-sirectory
 			GetVoices(fname);
 		}
-		else
-		if(ftype > 0)
+		else if(ftype > 0)
 		{
 			// a regular line, add it to the voices list
 			if((f_voice = fopen(fname,"r")) == NULL)
@@ -1700,15 +1837,23 @@ static void GetVoices(const char *path)
 espeak_ERROR SetVoiceByName(const char *name)
 {//=========================================
 	espeak_VOICE *v;
+	int ix;
 	espeak_VOICE voice_selector;
 	char *variant_name;
 	static char buf[60];
 
 	strncpy0(buf,name,sizeof(buf));
+
 	variant_name = ExtractVoiceVariantName(buf, 0, 1);
 
+	for(ix=0; ; ix++)
+	{
+		// convert voice name to lower case  (ascii)
+		if((buf[ix] = tolower(buf[ix])) == 0)
+			break;
+	}
+
 	memset(&voice_selector,0,sizeof(voice_selector));
-//	voice_selector.name = buf;
 	voice_selector.name = (char *)name;  // include variant name in voice stack ??
 
 	// first check for a voice with this filename
@@ -1722,6 +1867,7 @@ espeak_ERROR SetVoiceByName(const char *name)
 		}
 
 		DoVoiceChange(voice);
+		voice_selector.languages = voice->language_name;
 		SetVoiceStack(&voice_selector, variant_name);
 		return(EE_OK);
 	}
@@ -1738,6 +1884,7 @@ espeak_ERROR SetVoiceByName(const char *name)
 				LoadVoice(variant_name,2);
 			}
 			DoVoiceChange(voice);
+			voice_selector.languages = voice->language_name;
 			SetVoiceStack(&voice_selector, variant_name);
 			return(EE_OK);
 		}
@@ -1765,9 +1912,11 @@ espeak_ERROR SetVoiceByProperties(espeak_VOICE *voice_selector)
 }  //  end of SetVoiceByProperties
 
 
+void FreeVoiceList();
 void FreeVoiceList()
 {//=================
-	for(int ix=0; ix<n_voices_list; ix++)
+	int ix;
+	for(ix=0; ix<n_voices_list; ix++)
 	{
 		if(voices_list[ix] != NULL)
 		{
@@ -1787,12 +1936,24 @@ void FreeVoiceList()
 
 ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
 {//========================================================================
-#ifndef PLATFORM_RISCOS
+	char path_voices[sizeof(path_home)+12];
+
+
+#ifdef PLATFORM_RISCOS
+	if(n_voices_list == 0)
+	{
+		sprintf(path_voices,"%s%cvoices",path_home,PATHSEP);
+		len_path_voices = strlen(path_voices)+1;
+		GetVoices(path_voices);
+		voices_list[n_voices_list] = NULL;  // voices list terminator
+	}
+	return((const espeak_VOICE **)voices_list);
+
+#else
 	int ix;
 	int j;
 	espeak_VOICE *v;
-	static espeak_VOICE *voices[N_VOICES_LIST];
-	char path_voices[sizeof(path_home)+12];
+	static espeak_VOICE **voices = NULL;
 
 	// free previous voice list data
 	FreeVoiceList();
@@ -1802,10 +1963,11 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
 
 	GetVoices(path_voices);
 	voices_list[n_voices_list] = NULL;  // voices list terminator
+	voices = (espeak_VOICE **)realloc(voices, sizeof(espeak_VOICE *)*(n_voices_list+1));
 
 	// sort the voices list
 	qsort(voices_list,n_voices_list,sizeof(espeak_VOICE *),
-		(int (*)(const void *,const void *))VoiceNameSorter);
+		  (int (*)(const void *,const void *))VoiceNameSorter);
 
 
 	if(voice_spec)
@@ -1815,11 +1977,12 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
 	}
 	else
 	{
-		// list all: omit variant voices and mbrola voices
+		// list all: omit variant voices and mbrola voices and test voices
 		j = 0;
 		for(ix=0; (v = voices_list[ix]) != NULL; ix++)
 		{
-			if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) && (memcmp(v->identifier,"mb/",3) != 0))
+			if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0)
+				&& (memcmp(v->identifier,"mb/",3) != 0) && (memcmp(v->identifier,"test/",5) != 0))
 			{
 				voices[j++] = v;
 			}
@@ -1828,7 +1991,7 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec)
 	}
 	return((const espeak_VOICE **)voices);
 #endif
-	return((const espeak_VOICE **)voices_list);
+	//return((const espeak_VOICE **)voices_list
 }  //  end of espeak_ListVoices
 
 
diff --git a/external/espeak/wave.h b/external/espeak/wave.h
old mode 100644
new mode 100755
index 337c8a1..aac2a8d
--- a/external/espeak/wave.h
+++ b/external/espeak/wave.h
@@ -7,7 +7,7 @@
 
 extern int option_device_number;
 
-extern void wave_init(int samplerate);
+extern int wave_init(int samplerate);
 // TBD: the arg could be "alsa", "oss",...
 extern void* wave_open(const char* the_api);
 
diff --git a/external/espeak/wavegen.cpp b/external/espeak/wavegen.cpp
old mode 100644
new mode 100755
index 1f34cd2..c52fcbf
--- a/external/espeak/wavegen.cpp
+++ b/external/espeak/wavegen.cpp
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005 to 2007 by Jonathan Duddington                     *
+ *   Copyright (C) 2005 to 2013 by Jonathan Duddington                     *
  *   email: jonsd at users.sourceforge.net                                    *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -244,7 +244,7 @@ static unsigned char wavemult[N_WAVEMULT] = {
    105, 98, 90, 83, 76, 69, 62, 55, 49, 43, 37, 32, 27, 22, 18, 14,
     11,  8,  5,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
      0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 };
- 
+
 
 // set from y = pow(2,x) * 128,  x=-1 to 1
 unsigned char pitch_adjust_tab[MAX_PITCH_VALUE+1] = {
@@ -592,7 +592,7 @@ static PaError Pa_OpenDefaultStream2( PaStream** stream,
 		hostApiOutputParameters.device = Pa_GetDefaultOutputDevice();
 
 	if( hostApiOutputParameters.device == paNoDevice )
-		return paDeviceUnavailable; 
+		return paDeviceUnavailable;
 
 	hostApiOutputParameters.channelCount = outputChannelCount;
 	hostApiOutputParameters.sampleFormat = sampleFormat;
@@ -798,6 +798,7 @@ remove("log-klatt");
 }  // end of WavegenInit
 
 
+int GetAmplitude(void);
 int GetAmplitude(void)
 {//===================
 	int amp;
@@ -834,15 +835,6 @@ static void WavegenSetEcho(void)
 		amp = embedded_value[EMBED_H];
 		delay = 130;
 	}
-#ifdef deleted
-	if(embedded_value[EMBED_T] > 0)
-	{
-		// announcing punctuation, add a small echo
-// This seems unpopular
-		amp = embedded_value[EMBED_T] * 8;
-		delay = 60;
-	}
-#endif
 
 	if(delay == 0)
 		amp = 0;
@@ -854,7 +846,7 @@ static void WavegenSetEcho(void)
 	if(amp > 20)
 		echo_length = echo_head * 2;    // perhaps allow 2 echo periods if the echo is loud.
 
-	// echo_amp units are 1/256ths of the amplitude of the original sound. 
+	// echo_amp units are 1/256ths of the amplitude of the original sound.
 	echo_amp = amp;
 	// compensate (partially) for increase in amplitude due to echo
 	general_amplitude = GetAmplitude();
@@ -862,8 +854,7 @@ static void WavegenSetEcho(void)
 }  // end of WavegenSetEcho
 
 
-
-int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control)
+static int PeaksToHarmspect(wavegen_peaks_t *peaks, int pitch, int *htab, int control)
 {//============================================================================
 // Calculate the amplitude of each  harmonics from the formants
 // Only for formants 0 to 5
@@ -1025,16 +1016,16 @@ static void AdvanceParameters()
 	for(ix=0; ix <= wvoice->n_harmonic_peaks; ix++)
 	{
 		peaks[ix].freq1 += peaks[ix].freq_inc;
-		peaks[ix].freq = int(peaks[ix].freq1);
+		peaks[ix].freq = (int)peaks[ix].freq1;
 		peaks[ix].height1 += peaks[ix].height_inc;
-		if((peaks[ix].height = int(peaks[ix].height1)) < 0)
+		if((peaks[ix].height = (int)peaks[ix].height1) < 0)
 			peaks[ix].height = 0;
 		peaks[ix].left1 += peaks[ix].left_inc;
-		peaks[ix].left = int(peaks[ix].left1);
+		peaks[ix].left = (int)peaks[ix].left1;
 		if(ix < 3)
 		{
 			peaks[ix].right1 += peaks[ix].right_inc;
-			peaks[ix].right = int(peaks[ix].right1);
+			peaks[ix].right = (int)peaks[ix].right1;
 		}
 		else
 		{
@@ -1047,10 +1038,10 @@ static void AdvanceParameters()
 		if(ix < 7)
 		{
 			peaks[ix].freq1 += peaks[ix].freq_inc;
-			peaks[ix].freq = int(peaks[ix].freq1);
+			peaks[ix].freq = (int)peaks[ix].freq1;
 		}
 		peaks[ix].height1 += peaks[ix].height_inc;
-		if((peaks[ix].height = int(peaks[ix].height1)) < 0)
+		if((peaks[ix].height = (int)peaks[ix].height1) < 0)
 			peaks[ix].height = 0;
 	}
 
@@ -1166,7 +1157,7 @@ static int ApplyBreath(void)
 		if((amp = wvoice->breath[ix]) != 0)
 		{
 			amp *= (peaks[ix].height >> 14);
-			value += int(resonator(&rbreath[ix],noise) * amp);
+			value += (int)resonator(&rbreath[ix],noise) * amp;
 		}
 	}
 #endif
@@ -1175,6 +1166,7 @@ static int ApplyBreath(void)
 
 
 
+int Wavegen();
 int Wavegen()
 {//==========
 	unsigned short waveph;
@@ -1264,7 +1256,7 @@ int Wavegen()
 				for(pk=wvoice->n_harmonic_peaks+1; pk<N_PEAKS; pk++)
 				{
 					// find the nearest harmonic for HF peaks where we don't use shape
-					peak_harmonic[pk] = peaks[pk].freq / (wdata.pitch*16);
+					peak_harmonic[pk] = ((peaks[pk].freq / (wdata.pitch*8)) + 1) / 2;
 				}
 
 				// adjust amplitude to compensate for fewer harmonics at higher pitch
@@ -1366,12 +1358,12 @@ int Wavegen()
 
 		for(h=1; h<=h_switch_sign; h++)
 		{
-			total += (int(sin_tab[theta >> 5]) * harmspect[h]);
+			total += ((int)sin_tab[theta >> 5] * harmspect[h]);
 			theta += waveph;
 		}
 		while(h<=maxh)
 		{
-			total -= (int(sin_tab[theta >> 5]) * harmspect[h]);
+			total -= ((int)sin_tab[theta >> 5] * harmspect[h]);
 			theta += waveph;
 			h++;
 		}
@@ -1559,7 +1551,7 @@ static int SetWithRange0(int value, int max)
 static void SetPitchFormants()
 {//===========================
 	int ix;
-	int factor;
+	int factor = 256;
 	int pitch_value;
 
 	// adjust formants to give better results for a different voice pitch
@@ -1570,11 +1562,13 @@ static void SetPitchFormants()
 	{
 		// only adjust if the pitch is higher than normal
 		factor = 256 + (25 * (pitch_value - 50))/50;
-		for(ix=0; ix<=5; ix++)
-		{
-			wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256;
-		}
 	}
+
+	for(ix=0; ix<=5; ix++)
+	{
+		wvoice->freq[ix] = (wvoice->freq2[ix] * factor)/256;
+	}
+
 	factor = embedded_value[EMBED_T]*3;
 	wvoice->height[0] = (wvoice->height2[0] * (256 - factor*2))/256;
 	wvoice->height[1] = (wvoice->height2[1] * (256 - factor))/256;
@@ -1697,7 +1691,7 @@ void SetPitch2(voice_t *voice, int pitch1, int pitch2, int *pitch_base, int *pit
 }
 
 
-void SetPitch(int length, unsigned char *env, int pitch1, int pitch2)
+static void SetPitch(int length, unsigned char *env, int pitch1, int pitch2)
 {//==================================================================
 // length in samples
 
@@ -1733,8 +1727,7 @@ if(option_log_frames)
 
 
 
-
-void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v)
+static void SetSynth(int length, int modn, frame_t *fr1, frame_t *fr2, voice_t *v)
 {//========================================================================
 	int ix;
 	DOUBLEX next;
@@ -1755,7 +1748,7 @@ if(option_log_frames)
 		fprintf(f_log,"%3dmS  %3d %3d %4d %4d (%3d %3d %3d %3d)  to  %3d %3d %4d %4d (%3d %3d %3d %3d)\n",length*1000/samplerate,
 			fr1->ffreq[0],fr1->ffreq[1],fr1->ffreq[2],fr1->ffreq[3], fr1->fheight[0],fr1->fheight[1],fr1->fheight[2],fr1->fheight[3],
 			fr2->ffreq[0],fr2->ffreq[1],fr2->ffreq[2],fr2->ffreq[3], fr2->fheight[0],fr2->fheight[1],fr2->fheight[2],fr2->fheight[3] );
-	
+
 	fclose(f_log);
 	f_log=NULL;
 	}
@@ -1814,27 +1807,27 @@ if(option_log_frames)
 		if(ix < 7)
 		{
 			peaks[ix].freq1 = (fr1->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
-			peaks[ix].freq = int(peaks[ix].freq1);
+			peaks[ix].freq = (int)peaks[ix].freq1;
 			next = (fr2->ffreq[ix] * v->freq[ix] + v->freqadd[ix]*256) << 8;
 			peaks[ix].freq_inc =  ((next - peaks[ix].freq1) * (STEPSIZE/4)) / length4;  // lower headroom for fixed point math
 		}
 
 		peaks[ix].height1 = (fr1->fheight[ix] * v->height[ix]) << 6;
-		peaks[ix].height = int(peaks[ix].height1);
+		peaks[ix].height = (int)peaks[ix].height1;
 		next = (fr2->fheight[ix] * v->height[ix]) << 6;
 		peaks[ix].height_inc =  ((next - peaks[ix].height1) * STEPSIZE) / length2;
 
 		if((ix <= 5) && (ix <= wvoice->n_harmonic_peaks))
 		{
 			peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10;
-			peaks[ix].left = int(peaks[ix].left1);
+			peaks[ix].left = (int)peaks[ix].left1;
 			next = (fr2->fwidth[ix] * v->width[ix]) << 10;
 			peaks[ix].left_inc =  ((next - peaks[ix].left1) * STEPSIZE) / length2;
 
 			if(ix < 3)
 			{
 				peaks[ix].right1 = (fr1->fright[ix] * v->width[ix]) << 10;
-				peaks[ix].right = int(peaks[ix].right1);
+				peaks[ix].right = (int)peaks[ix].right1;
 				next = (fr2->fright[ix] * v->width[ix]) << 10;
 				peaks[ix].right_inc = ((next - peaks[ix].right1) * STEPSIZE) / length2;
 			}
@@ -1867,9 +1860,7 @@ void Write4Bytes(FILE *f, int value)
 	}
 }
 
-
-
-int WavegenFill2(int fill_zeros)
+static int WavegenFill2(int fill_zeros)
 {//============================
 // Pick up next wavegen commands from the queue
 // return: 0  output buffer has been filled
@@ -2036,7 +2027,7 @@ static int SpeedUp(short *outbuf, int length_in, int length_out, int end_of_text
 		{
 		        sonicSetSpeed(sonicSpeedupStream, sonicSpeed);
 		}
-	
+
 		sonicWriteShortToStream(sonicSpeedupStream, outbuf, length_in);
 	}
 
diff --git a/external/flac/flac_FLAC_format.h b/external/flac/flac_FLAC_format.h
index 93dee80..d93ed27 100644
--- a/external/flac/flac_FLAC_format.h
+++ b/external/flac/flac_FLAC_format.h
@@ -1004,7 +1004,7 @@ FLAC_API FLAC__bool FLAC__format_picture_is_legal(const FLAC__StreamMetadata_Pic
 /* \} */
 
 // pb 20080502
-#ifdef _WIN32
+#if defined (_WIN32) && ! defined (__CYGWIN__)
 	#ifndef __cplusplus
 		uint32_t * Melder_peek8to32 (const char *string);
 		const uint16_t * Melder_peek32to16 (const uint32_t *string);
diff --git a/external/flac/flac_stream_decoder.c b/external/flac/flac_stream_decoder.c
index ef053fc..54f4470 100644
--- a/external/flac/flac_stream_decoder.c
+++ b/external/flac/flac_stream_decoder.c
@@ -33,7 +33,7 @@
 #  include <config.h>
 #endif
 
-#if defined _WIN32
+#if defined (_WIN32)
 #include <io.h> /* for _setmode() */
 #include <fcntl.h> /* for _O_BINARY */
 #endif
@@ -1279,9 +1279,9 @@ FILE *get_binary_stdin_(void)
 	 */
 #if defined _MSC_VER || defined __MINGW32__
 	_setmode(_fileno(stdin), _O_BINARY);
-#elif defined __CYGWIN__ 
+#elif defined __CYGWIN__
 	/* almost certainly not needed for any modern Cygwin, but let's be safe... */
-	setmode(_fileno(stdin), _O_BINARY);
+	setmode(fileno(stdin), O_BINARY);
 #elif defined __EMX__
 	setmode(fileno(stdin), O_BINARY);
 #endif
diff --git a/external/flac/flac_stream_encoder.c b/external/flac/flac_stream_encoder.c
index 65f18a9..8f6cd3f 100644
--- a/external/flac/flac_stream_encoder.c
+++ b/external/flac/flac_stream_encoder.c
@@ -33,7 +33,7 @@
 #  include <config.h>
 #endif
 
-#if defined _WIN32
+#if defined (_WIN32)
 #include <io.h> /* for _setmode() */
 #include <fcntl.h> /* for _O_BINARY */
 #endif
@@ -4286,7 +4286,7 @@ FILE *get_binary_stdout_(void)
 	_setmode(_fileno(stdout), _O_BINARY);
 #elif defined __CYGWIN__
 	/* almost certainly not needed for any modern Cygwin, but let's be safe... */
-	setmode(_fileno(stdout), _O_BINARY);
+	setmode(fileno(stdout), O_BINARY);
 #elif defined __EMX__
 	setmode(fileno(stdout), O_BINARY);
 #endif
diff --git a/external/mp3/mp3.cpp b/external/mp3/mp3.cpp
index 7afb682..26d6838 100644
--- a/external/mp3/mp3.cpp
+++ b/external/mp3/mp3.cpp
@@ -1,19 +1,18 @@
 /*
  * Praat wrappers for libMAD (MPEG Audio Decoder) Copyright 2007 Erez Volk
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  *
  *
  *
@@ -107,6 +106,7 @@ struct _MP3_FILE
 	MP3F_OFFSET first_offset;
 	unsigned skip_amount;
 	int need_seek;
+	MP3F_OFFSET id3TagSize_bytes; /* David Weenink */
 };
 
 static enum mad_flow mp3f_mad_error (void *context, struct mad_stream *stream, struct mad_frame *frame);
@@ -145,7 +145,7 @@ int mp3_recognize (int nread, const char *data)
 		((bytes [1] & 0xFE) == 0xE2);   /* MPEG ADTS, layer III, v2.5 */
 }
 
-MP3_FILE mp3f_new (void)
+MP3_FILE mp3f_new ()
 {
 	try {
 		return Melder_calloc (struct _MP3_FILE, 1);
@@ -165,6 +165,70 @@ void mp3f_set_file (MP3_FILE mp3f, FILE *f)
 	if (! f)
 		return;
 	fseek (f, 0, SEEK_SET);
+	/* David Weenink 20151005
+		Check if an ID3 header version 2 or newer is present at the START of the file (older header types are always at the END of the file). We calculate the size of the header (in bytes), store it in the mp3f -> id3TagSize_bytes field and simply skip this amount of bytes before analyzing/decoding starts.
+		
+		According to http://id3.org/id3v2-00:
+		The ID3v2 tag header, which should be the FIRST information in the file, is 10 bytes as follows:
+
+		ID3/file identifier      "ID3"
+		ID3 version              $02 00
+		ID3 flags                %xx000000
+		ID3 size             4 * %0xxxxxxx
+
+		The first three bytes of the tag are always "ID3" to indicate that
+		this is an ID3 tag, directly followed by the two version bytes. The
+		first byte of ID3 version is it's major version, while the second byte
+		is its revision number. All revisions are backwards compatible while
+		major versions are not. If software with ID3v2 and below support
+		should encounter version three or higher it should simply ignore the
+		whole tag. Version and revision will never be $FF.
+
+		The first bit (bit 7) in the 'ID3 flags' is indicating whether or not
+		unsynchronisation is used (see section 5 for details); a set bit
+		indicates usage.
+
+		The second bit (bit 6) is indicating whether or not compression is
+		used; a set bit indicates usage. Since no compression scheme has been
+		decided yet, the ID3 decoder (for now) should just ignore the entire
+		tag if the compression bit is set.
+
+		The ID3 tag size is encoded with four bytes where the first bit (bit
+		7) is set to zero in every byte, making a total of 28 bits. The zeroed
+		bits are ignored, so a 257 bytes long tag is represented as $00 00 02 01.
+
+		The ID3 tag size is the size of the complete tag after
+		unsychronisation, including padding, excluding the header (total tag
+		size - 10). The reason to use 28 bits (representing up to 256MB) for
+		size description is that we don't want to run out of space here.
+
+		A ID3v2 tag can be detected with the following pattern:
+		$49 44 33 yy yy xx zz zz zz zz
+		Where yy is less than $FF, xx is the 'flags' byte and zz is less than$80.
+	*/
+	{
+		unsigned char bytes [10];
+		(void) fread (& bytes, 1, 10, mp3f -> f);
+		mp3f -> id3TagSize_bytes = 0;
+		if (bytes[0] == 'I' && bytes[1] == 'D' && bytes[2] == '3') {
+			if (bytes[3] < 0xFF && bytes[4] < 0xFF &&
+				bytes[6] < 0x80 && bytes[7] < 0x80 && bytes[8] < 0x80 && bytes[9] < 0x80 ) {
+				/* 
+				Ignore version: bytes[3] & bytes[4] 
+				Ignore flags: bytes[5]
+					The only purpose of the 'unsychronisation scheme' is to make the ID3v2
+					tag as compatible as possible with existing software. There is no use
+					in 'unsynchronising' tags if the file is only to be processed by new
+					software. Unsynchronisation may only be made with MPEG 2 layer I, II
+					and III and MPEG 2.5 files.
+				 */
+				mp3f -> id3TagSize_bytes = (bytes[6] << 21 | bytes[7] << 14 | bytes[8] << 7 | bytes[9]) + 10;
+			}
+		}
+	}
+	
+	fseek (f, mp3f -> id3TagSize_bytes, SEEK_SET); // David Weenink
+
 	mp3f -> next_read_position = 0;
 	mp3f -> need_seek = 0;
 	mp3f -> delay = MP3F_DECODER_DELAY + MP3F_ENCODER_DELAY;
@@ -183,7 +247,7 @@ int mp3f_analyze (MP3_FILE mp3f)
 	if (! mp3f || ! mp3f -> f)
 		return 0;
 
-	fseek (mp3f -> f, 0, SEEK_SET);
+	fseek (mp3f -> f, mp3f -> id3TagSize_bytes, SEEK_SET); // David Weenink
 
 	mp3f -> xing = 0;
 	mp3f -> channels = 0;
@@ -199,9 +263,9 @@ int mp3f_analyze (MP3_FILE mp3f)
 			mp3f_mad_input,
 			mp3f_mad_first_header,
 			mp3f_mad_first_filter,
-			NULL /* Output: Don't actually decode for now */,
+			nullptr /* Output: Don't actually decode for now */,
 			mp3f_mad_error,
-			NULL /* Message */);
+			nullptr /* Message */);
 
 	status = mad_decoder_run (decoder, MAD_DECODER_MODE_SYNC);
 	if (status != 0)
@@ -219,7 +283,7 @@ int mp3f_analyze (MP3_FILE mp3f)
 		frame_size = mp3f -> locations [1] - mp3f -> locations[0];
 
 		/* For file size, seek to end */
-		fseek (mp3f -> f, 0, SEEK_END);
+		fseek (mp3f -> f, mp3f -> id3TagSize_bytes, SEEK_END); // David Weenink
 		file_size = ftell (mp3f -> f);
 
 		/* This estimate will be pretty accurate for CBR */
@@ -249,15 +313,15 @@ int mp3f_analyze (MP3_FILE mp3f)
 	mp3f -> frames = 0;
 	mp3f -> samples = 0;
 
-	fseek (mp3f -> f, 0, SEEK_SET);
+	fseek (mp3f -> f, mp3f -> id3TagSize_bytes, SEEK_SET); // David Weenink
 	mad_decoder_init (decoder, 
 			mp3f,
 			mp3f_mad_input,
 			mp3f_mad_scan_header,
-			NULL /* Filter */,
-			NULL /* Output */,
+			nullptr /* Filter */,
+			nullptr /* Output */,
 			mp3f_mad_error,
-			NULL /* Message */);
+			nullptr /* Message */);
 
 	status = mad_decoder_run (decoder, MAD_DECODER_MODE_SYNC);
 
@@ -370,11 +434,11 @@ int mp3f_read (MP3_FILE mp3f, MP3F_OFFSET num_samples)
 	mad_decoder_init (decoder, 
 			mp3f,
 			mp3f_mad_input,
-			NULL /* Header */,
-			NULL /* Filter */,
+			nullptr /* Header */,
+			nullptr /* Filter */,
 			mp3f_mad_report_samples,
 			mp3f_mad_error,
-			NULL /* Message */);
+			nullptr /* Message */);
 
 	mp3f -> read_amount = num_samples;
 	status = mad_decoder_run (decoder, MAD_DECODER_MODE_SYNC);
@@ -456,7 +520,7 @@ static enum mad_flow mp3f_mad_input(void *context, struct mad_stream *stream)
 {
 	MP3_FILE mp3f = (MP3_FILE) context;
 	FILE *f = mp3f -> f;
-	unsigned char *buffer = NULL;
+	unsigned char *buffer = nullptr;
 	unsigned nthrown = 0, ncopied = 0, size = 0;
 	size_t nread = 0;
 	MP3F_OFFSET offset;
diff --git a/external/mp3/mp3.h b/external/mp3/mp3.h
index 0759cb2..2e56ead 100644
--- a/external/mp3/mp3.h
+++ b/external/mp3/mp3.h
@@ -5,19 +5,18 @@
  * Praat wrappers for libMAD (MPEG Audio Decoder)
  * Copyright 2007 Erez Volk
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <sys/types.h>
@@ -44,7 +43,7 @@ typedef void (*MP3F_CALLBACK) (
 		long num_samples,
 		void *context);
 
-MP3_FILE mp3f_new (void);
+MP3_FILE mp3f_new ();
 void mp3f_delete (MP3_FILE mp3f);
 
 void mp3f_set_file (MP3_FILE mp3f, FILE *f);
diff --git a/external/portaudio2007/Makefile b/external/portaudio2007/Makefile
deleted file mode 100644
index 7e2bc03..0000000
--- a/external/portaudio2007/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Makefile of the library "external/portaudio"
-# Paul Boersma, 14 January 2012
-
-include ../../makefile.defs
-
-OBJECTS = pa_skeleton.o \
-	pa_unix_hostapis.o pa_unix_util.o pa_linux_alsa.o \
-	pa_win_hostapis.o pa_win_util.o pa_win_wmme.o pa_win_waveformat.o \
-	pa_front.o pa_debugprint.o pa_cpuload.o \
-	pa_allocation.o pa_process.o pa_converters.o pa_dither.o \
-	pa_stream.o
-
-.PHONY: all clean
-
-all: libportaudio.a
-
-clean:
-	$(RM) $(OBJECTS)
-	$(RM) libportaudio.a
-
-libportaudio.a: $(OBJECTS)
-	touch libportaudio.a
-	rm libportaudio.a
-	ar cq libportaudio.a $(OBJECTS)
-	$(RANLIB) libportaudio.a
-
-$(OBJECTS): *.h
diff --git a/external/portaudio2007/READ_ME.TXT b/external/portaudio2007/READ_ME.TXT
deleted file mode 100644
index 14c6705..0000000
--- a/external/portaudio2007/READ_ME.TXT
+++ /dev/null
@@ -1,22 +0,0 @@
-Praats/external/portaudio/READ_ME.TXT
-Paul Boersma, 1 September 2013
-This file describes the adaptations to the PortAudio v19 sources (2007/11)
-that are needed to make them compatible with Praat.
-
-Deleted lines in pa_***_hostapis.c.
-
-At the top of pa_win_*.c:
-#undef UNICODE
-
-In pa_win_mme.c, remove the #ifndef/endif from:
-#ifndef __MWERKS__
-#include <malloc.h>
-#include <memory.h>
-#endif /* __MWERKS__ */
-
-In pa_mac_core.c:
-#include <Components.h>
-
-Duplicate pa_unix_util.c to pa_mac_util.c, but only for allocation and time routines.
-
-Remove the hard-coded definition of SIZEOF_LONG from pa_types.h and instead use <stdint.h> to define PaInt32 and the like. Correct the associated error in pa_dither.c: SIZEOF_LONG -> sizeof(long).
\ No newline at end of file
diff --git a/external/portaudio2007/pa_allocation.c b/external/portaudio2007/pa_allocation.c
deleted file mode 100644
index c78c2cf..0000000
--- a/external/portaudio2007/pa_allocation.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * $Id: pa_allocation.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library allocation group implementation
- * memory allocation group for tracking allocation groups
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Allocation Group implementation.
-*/
-
-
-#include "pa_allocation.h"
-#include "pa_util.h"
-
-
-/*
-    Maintain 3 singly linked lists...
-    linkBlocks: the buffers used to allocate the links
-    spareLinks: links available for use in the allocations list
-    allocations: the buffers currently allocated using PaUtil_ContextAllocateMemory()
-
-    Link block size is doubled every time new links are allocated.
-*/
-
-
-#define PA_INITIAL_LINK_COUNT_    16
-
-struct PaUtilAllocationGroupLink
-{
-    struct PaUtilAllocationGroupLink *next;
-    void *buffer;
-};
-
-/*
-    Allocate a block of links. The first link will have it's buffer member
-    pointing to the block, and it's next member set to <nextBlock>. The remaining
-    links will have NULL buffer members, and each link will point to
-    the next link except the last, which will point to <nextSpare>
-*/
-static struct PaUtilAllocationGroupLink *AllocateLinks( long count,
-        struct PaUtilAllocationGroupLink *nextBlock,
-        struct PaUtilAllocationGroupLink *nextSpare )
-{
-    struct PaUtilAllocationGroupLink *result;
-    int i;
-    
-    result = (struct PaUtilAllocationGroupLink *)PaUtil_AllocateMemory(
-            sizeof(struct PaUtilAllocationGroupLink) * count );
-    if( result )
-    {
-        /* the block link */
-        result[0].buffer = result;
-        result[0].next = nextBlock;
-
-        /* the spare links */
-        for( i=1; i<count; ++i )
-        {
-            result[i].buffer = 0;
-            result[i].next = &result[i+1];
-        }
-        result[count-1].next = nextSpare;
-    }
-    
-    return result;
-}
-
-
-PaUtilAllocationGroup* PaUtil_CreateAllocationGroup( void )
-{
-    PaUtilAllocationGroup* result = 0;
-    struct PaUtilAllocationGroupLink *links;
-
-
-    links = AllocateLinks( PA_INITIAL_LINK_COUNT_, 0, 0 );
-    if( links != 0 )
-    {
-        result = (PaUtilAllocationGroup*)PaUtil_AllocateMemory( sizeof(PaUtilAllocationGroup) );
-        if( result )
-        {
-            result->linkCount = PA_INITIAL_LINK_COUNT_;
-            result->linkBlocks = &links[0];
-            result->spareLinks = &links[1];
-            result->allocations = 0;
-        }
-        else
-        {
-            PaUtil_FreeMemory( links );
-        }
-    }
-
-    return result;
-}
-
-
-void PaUtil_DestroyAllocationGroup( PaUtilAllocationGroup* group )
-{
-    struct PaUtilAllocationGroupLink *current = group->linkBlocks;
-    struct PaUtilAllocationGroupLink *next;
-
-    while( current )
-    {
-        next = current->next;
-        PaUtil_FreeMemory( current->buffer );
-        current = next;
-    }
-
-    PaUtil_FreeMemory( group );
-}
-
-
-void* PaUtil_GroupAllocateMemory( PaUtilAllocationGroup* group, long size )
-{
-    struct PaUtilAllocationGroupLink *links, *link;
-    void *result = 0;
-    
-    /* allocate more links if necessary */
-    if( !group->spareLinks )
-    {
-        /* double the link count on each block allocation */
-        links = AllocateLinks( group->linkCount, group->linkBlocks, group->spareLinks );
-        if( links )
-        {
-            group->linkCount += group->linkCount;
-            group->linkBlocks = &links[0];
-            group->spareLinks = &links[1];
-        }
-    }
-
-    if( group->spareLinks )
-    {
-        result = PaUtil_AllocateMemory( size );
-        if( result )
-        {
-            link = group->spareLinks;
-            group->spareLinks = link->next;
-
-            link->buffer = result;
-            link->next = group->allocations;
-
-            group->allocations = link;
-        }
-    }
-
-    return result;    
-}
-
-
-void PaUtil_GroupFreeMemory( PaUtilAllocationGroup* group, void *buffer )
-{
-    struct PaUtilAllocationGroupLink *current = group->allocations;
-    struct PaUtilAllocationGroupLink *previous = 0;
-
-    if( buffer == 0 )
-        return;
-
-    /* find the right link and remove it */
-    while( current )
-    {
-        if( current->buffer == buffer )
-        {
-            if( previous )
-            {
-                previous->next = current->next;
-            }
-            else
-            {
-                group->allocations = current->next;
-            }
-
-            current->buffer = 0;
-            current->next = group->spareLinks;
-            group->spareLinks = current;
-
-            break;
-        }
-        
-        previous = current;
-        current = current->next;
-    }
-
-    PaUtil_FreeMemory( buffer ); /* free the memory whether we found it in the list or not */
-}
-
-
-void PaUtil_FreeAllAllocations( PaUtilAllocationGroup* group )
-{
-    struct PaUtilAllocationGroupLink *current = group->allocations;
-    struct PaUtilAllocationGroupLink *previous = 0;
-
-    /* free all buffers in the allocations list */
-    while( current )
-    {
-        PaUtil_FreeMemory( current->buffer );
-        current->buffer = 0;
-
-        previous = current;
-        current = current->next;
-    }
-
-    /* link the former allocations list onto the front of the spareLinks list */
-    if( previous )
-    {
-        previous->next = group->spareLinks;
-        group->spareLinks = group->allocations;
-        group->allocations = 0;
-    }
-}
-
diff --git a/external/portaudio2007/pa_allocation.h b/external/portaudio2007/pa_allocation.h
deleted file mode 100644
index b265b01..0000000
--- a/external/portaudio2007/pa_allocation.h
+++ /dev/null
@@ -1,104 +0,0 @@
-#ifndef PA_ALLOCATION_H
-#define PA_ALLOCATION_H
-/*
- * $Id: pa_allocation.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library allocation context header
- * memory allocation context for tracking allocation groups
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Allocation Group prototypes. An Allocation Group makes it easy to
- allocate multiple blocks of memory and free them all simultanously.
- 
- An allocation group is useful for keeping track of multiple blocks
- of memory which are allocated at the same time (such as during initialization)
- and need to be deallocated at the same time. The allocation group maintains
- a list of allocated blocks, and can deallocate them all simultaneously which
- can be usefull for cleaning up after a partially initialized object fails.
-
- The allocation group implementation is built on top of the lower
- level allocation functions defined in pa_util.h
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-typedef struct
-{
-    long linkCount;
-    struct PaUtilAllocationGroupLink *linkBlocks;
-    struct PaUtilAllocationGroupLink *spareLinks;
-    struct PaUtilAllocationGroupLink *allocations;
-}PaUtilAllocationGroup;
-
-
-
-/** Create an allocation group.
-*/
-PaUtilAllocationGroup* PaUtil_CreateAllocationGroup( void );
-
-/** Destroy an allocation group, but not the memory allocated through the group.
-*/
-void PaUtil_DestroyAllocationGroup( PaUtilAllocationGroup* group );
-
-/** Allocate a block of memory though an allocation group.
-*/
-void* PaUtil_GroupAllocateMemory( PaUtilAllocationGroup* group, long size );
-
-/** Free a block of memory that was previously allocated though an allocation
- group. Calling this function is a relatively time consuming operation.
- Under normal circumstances clients should call PaUtil_FreeAllAllocations to
- free all allocated blocks simultaneously.
- @see PaUtil_FreeAllAllocations
-*/
-void PaUtil_GroupFreeMemory( PaUtilAllocationGroup* group, void *buffer );
-
-/** Free all blocks of memory which have been allocated through the allocation
- group. This function doesn't destroy the group itself.
-*/
-void PaUtil_FreeAllAllocations( PaUtilAllocationGroup* group );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_ALLOCATION_H */
diff --git a/external/portaudio2007/pa_converters.c b/external/portaudio2007/pa_converters.c
deleted file mode 100644
index 3b98c85..0000000
--- a/external/portaudio2007/pa_converters.c
+++ /dev/null
@@ -1,1935 +0,0 @@
-/*
- * $Id: pa_converters.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library sample conversion mechanism
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Conversion functions implementations.
- 
- If the C9x function lrintf() is available, define PA_USE_C99_LRINTF to use it
-
- @todo Consider whether functions which dither but don't clip should exist,
- V18 automatically enabled clipping whenever dithering was selected. Perhaps
- we should do the same.
-
- @todo implement the converters marked IMPLEMENT ME: Float32_To_UInt8_Dither,
- Float32_To_UInt8_Clip, Float32_To_UInt8_DitherClip, Int32_To_Int24_Dither,
- Int32_To_UInt8_Dither, Int24_To_Int16_Dither, Int24_To_Int8_Dither, 
- Int24_To_UInt8_Dither, Int16_To_Int8_Dither, Int16_To_UInt8_Dither,
-
- @todo review the converters marked REVIEW: Float32_To_Int32,
- Float32_To_Int32_Dither, Float32_To_Int32_Clip, Float32_To_Int32_DitherClip,
- Int32_To_Int16_Dither, Int32_To_Int8_Dither, Int16_To_Int32
-*/
-
-
-#include "pa_converters.h"
-#include "pa_dither.h"
-#include "pa_endianness.h"
-#include "pa_types.h"
-
-
-PaSampleFormat PaUtil_SelectClosestAvailableFormat(
-        PaSampleFormat availableFormats, PaSampleFormat format )
-{
-    PaSampleFormat result;
-
-    format &= ~paNonInterleaved;
-    availableFormats &= ~paNonInterleaved;
-    
-    if( (format & availableFormats) == 0 )
-    {
-        /* NOTE: this code depends on the sample format constants being in
-            descending order of quality - ie best quality is 0
-            FIXME: should write an assert which checks that all of the
-            known constants conform to that requirement.
-        */
-
-        if( format != 0x01 )
-        {
-            /* scan for better formats */
-            result = format;
-            do
-            {
-                result >>= 1;
-            }
-            while( (result & availableFormats) == 0 && result != 0 );
-        }
-        else
-        {
-            result = 0;
-        }
-        
-        if( result == 0 ){
-            /* scan for worse formats */
-            result = format;
-            do
-            {
-                result <<= 1;
-            }
-            while( (result & availableFormats) == 0 && result != paCustomFormat );
-
-            if( (result & availableFormats) == 0 )
-                result = paSampleFormatNotSupported;
-        }
-        
-    }else{
-        result = format;
-    }
-
-    return result;
-}
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_SELECT_FORMAT_( format, float32, int32, int24, int16, int8, uint8 ) \
-    switch( format & ~paNonInterleaved ){                                      \
-    case paFloat32:                                                            \
-        float32                                                                \
-    case paInt32:                                                              \
-        int32                                                                  \
-    case paInt24:                                                              \
-        int24                                                                  \
-    case paInt16:                                                              \
-        int16                                                                  \
-    case paInt8:                                                               \
-        int8                                                                   \
-    case paUInt8:                                                              \
-        uint8                                                                  \
-    default: return 0;                                                         \
-    }
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_SELECT_CONVERTER_DITHER_CLIP_( flags, source, destination )         \
-    if( flags & paClipOff ){ /* no clip */                                     \
-        if( flags & paDitherOff ){ /* no dither */                             \
-            return paConverters. source ## _To_ ## destination;                \
-        }else{ /* dither */                                                    \
-            return paConverters. source ## _To_ ## destination ## _Dither;     \
-        }                                                                      \
-    }else{ /* clip */                                                          \
-        if( flags & paDitherOff ){ /* no dither */                             \
-            return paConverters. source ## _To_ ## destination ## _Clip;       \
-        }else{ /* dither */                                                    \
-            return paConverters. source ## _To_ ## destination ## _DitherClip; \
-        }                                                                      \
-    }
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_SELECT_CONVERTER_DITHER_( flags, source, destination )              \
-    if( flags & paDitherOff ){ /* no dither */                                 \
-        return paConverters. source ## _To_ ## destination;                    \
-    }else{ /* dither */                                                        \
-        return paConverters. source ## _To_ ## destination ## _Dither;         \
-    }
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_USE_CONVERTER_( source, destination )\
-    return paConverters. source ## _To_ ## destination;
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_UNITY_CONVERSION_( wordlength )\
-    return paConverters. Copy_ ## wordlength ## _To_ ## wordlength;
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilConverter* PaUtil_SelectConverter( PaSampleFormat sourceFormat,
-        PaSampleFormat destinationFormat, PaStreamFlags flags )
-{
-    PA_SELECT_FORMAT_( sourceFormat,
-                       /* paFloat32: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_UNITY_CONVERSION_( 32 ),
-                                          /* paInt32: */          PA_SELECT_CONVERTER_DITHER_CLIP_( flags, Float32, Int32 ),
-                                          /* paInt24: */          PA_SELECT_CONVERTER_DITHER_CLIP_( flags, Float32, Int24 ),
-                                          /* paInt16: */          PA_SELECT_CONVERTER_DITHER_CLIP_( flags, Float32, Int16 ),
-                                          /* paInt8: */           PA_SELECT_CONVERTER_DITHER_CLIP_( flags, Float32, Int8 ),
-                                          /* paUInt8: */          PA_SELECT_CONVERTER_DITHER_CLIP_( flags, Float32, UInt8 )
-                                        ),
-                       /* paInt32: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_USE_CONVERTER_( Int32, Float32 ),
-                                          /* paInt32: */          PA_UNITY_CONVERSION_( 32 ),
-                                          /* paInt24: */          PA_SELECT_CONVERTER_DITHER_( flags, Int32, Int24 ),
-                                          /* paInt16: */          PA_SELECT_CONVERTER_DITHER_( flags, Int32, Int16 ),
-                                          /* paInt8: */           PA_SELECT_CONVERTER_DITHER_( flags, Int32, Int8 ),
-                                          /* paUInt8: */          PA_SELECT_CONVERTER_DITHER_( flags, Int32, UInt8 )
-                                        ),
-                       /* paInt24: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_USE_CONVERTER_( Int24, Float32 ),
-                                          /* paInt32: */          PA_USE_CONVERTER_( Int24, Int32 ),
-                                          /* paInt24: */          PA_UNITY_CONVERSION_( 24 ),
-                                          /* paInt16: */          PA_SELECT_CONVERTER_DITHER_( flags, Int24, Int16 ),
-                                          /* paInt8: */           PA_SELECT_CONVERTER_DITHER_( flags, Int24, Int8 ),
-                                          /* paUInt8: */          PA_SELECT_CONVERTER_DITHER_( flags, Int24, UInt8 )
-                                        ),
-                       /* paInt16: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_USE_CONVERTER_( Int16, Float32 ),
-                                          /* paInt32: */          PA_USE_CONVERTER_( Int16, Int32 ),
-                                          /* paInt24: */          PA_USE_CONVERTER_( Int16, Int24 ),
-                                          /* paInt16: */          PA_UNITY_CONVERSION_( 16 ),
-                                          /* paInt8: */           PA_SELECT_CONVERTER_DITHER_( flags, Int16, Int8 ),
-                                          /* paUInt8: */          PA_SELECT_CONVERTER_DITHER_( flags, Int16, UInt8 )
-                                        ),
-                       /* paInt8: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_USE_CONVERTER_( Int8, Float32 ),
-                                          /* paInt32: */          PA_USE_CONVERTER_( Int8, Int32 ),
-                                          /* paInt24: */          PA_USE_CONVERTER_( Int8, Int24 ),
-                                          /* paInt16: */          PA_USE_CONVERTER_( Int8, Int16 ),
-                                          /* paInt8: */           PA_UNITY_CONVERSION_( 8 ),
-                                          /* paUInt8: */          PA_USE_CONVERTER_( Int8, UInt8 )
-                                        ),
-                       /* paUInt8: */
-                       PA_SELECT_FORMAT_( destinationFormat,
-                                          /* paFloat32: */        PA_USE_CONVERTER_( UInt8, Float32 ),
-                                          /* paInt32: */          PA_USE_CONVERTER_( UInt8, Int32 ),
-                                          /* paInt24: */          PA_USE_CONVERTER_( UInt8, Int24 ),
-                                          /* paInt16: */          PA_USE_CONVERTER_( UInt8, Int16 ),
-                                          /* paInt8: */           PA_USE_CONVERTER_( UInt8, Int8 ),
-                                          /* paUInt8: */          PA_UNITY_CONVERSION_( 8 )
-                                        )
-                     )
-}
-
-/* -------------------------------------------------------------------------- */
-
-#ifdef PA_NO_STANDARD_CONVERTERS
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilConverterTable paConverters = {
-    0, /* PaUtilConverter *Float32_To_Int32; */
-    0, /* PaUtilConverter *Float32_To_Int32_Dither; */
-    0, /* PaUtilConverter *Float32_To_Int32_Clip; */
-    0, /* PaUtilConverter *Float32_To_Int32_DitherClip; */
-
-    0, /* PaUtilConverter *Float32_To_Int24; */
-    0, /* PaUtilConverter *Float32_To_Int24_Dither; */
-    0, /* PaUtilConverter *Float32_To_Int24_Clip; */
-    0, /* PaUtilConverter *Float32_To_Int24_DitherClip; */
-
-    0, /* PaUtilConverter *Float32_To_Int16; */
-    0, /* PaUtilConverter *Float32_To_Int16_Dither; */
-    0, /* PaUtilConverter *Float32_To_Int16_Clip; */
-    0, /* PaUtilConverter *Float32_To_Int16_DitherClip; */
-
-    0, /* PaUtilConverter *Float32_To_Int8; */
-    0, /* PaUtilConverter *Float32_To_Int8_Dither; */
-    0, /* PaUtilConverter *Float32_To_Int8_Clip; */
-    0, /* PaUtilConverter *Float32_To_Int8_DitherClip; */
-
-    0, /* PaUtilConverter *Float32_To_UInt8; */
-    0, /* PaUtilConverter *Float32_To_UInt8_Dither; */
-    0, /* PaUtilConverter *Float32_To_UInt8_Clip; */
-    0, /* PaUtilConverter *Float32_To_UInt8_DitherClip; */
-
-    0, /* PaUtilConverter *Int32_To_Float32; */
-    0, /* PaUtilConverter *Int32_To_Int24; */
-    0, /* PaUtilConverter *Int32_To_Int24_Dither; */
-    0, /* PaUtilConverter *Int32_To_Int16; */
-    0, /* PaUtilConverter *Int32_To_Int16_Dither; */
-    0, /* PaUtilConverter *Int32_To_Int8; */
-    0, /* PaUtilConverter *Int32_To_Int8_Dither; */
-    0, /* PaUtilConverter *Int32_To_UInt8; */
-    0, /* PaUtilConverter *Int32_To_UInt8_Dither; */
-
-    0, /* PaUtilConverter *Int24_To_Float32; */
-    0, /* PaUtilConverter *Int24_To_Int32; */
-    0, /* PaUtilConverter *Int24_To_Int16; */
-    0, /* PaUtilConverter *Int24_To_Int16_Dither; */
-    0, /* PaUtilConverter *Int24_To_Int8; */
-    0, /* PaUtilConverter *Int24_To_Int8_Dither; */
-    0, /* PaUtilConverter *Int24_To_UInt8; */
-    0, /* PaUtilConverter *Int24_To_UInt8_Dither; */
-    
-    0, /* PaUtilConverter *Int16_To_Float32; */
-    0, /* PaUtilConverter *Int16_To_Int32; */
-    0, /* PaUtilConverter *Int16_To_Int24; */
-    0, /* PaUtilConverter *Int16_To_Int8; */
-    0, /* PaUtilConverter *Int16_To_Int8_Dither; */
-    0, /* PaUtilConverter *Int16_To_UInt8; */
-    0, /* PaUtilConverter *Int16_To_UInt8_Dither; */
-
-    0, /* PaUtilConverter *Int8_To_Float32; */
-    0, /* PaUtilConverter *Int8_To_Int32; */
-    0, /* PaUtilConverter *Int8_To_Int24 */
-    0, /* PaUtilConverter *Int8_To_Int16; */
-    0, /* PaUtilConverter *Int8_To_UInt8; */
-
-    0, /* PaUtilConverter *UInt8_To_Float32; */
-    0, /* PaUtilConverter *UInt8_To_Int32; */
-    0, /* PaUtilConverter *UInt8_To_Int24; */
-    0, /* PaUtilConverter *UInt8_To_Int16; */
-    0, /* PaUtilConverter *UInt8_To_Int8; */
-
-    0, /* PaUtilConverter *Copy_8_To_8; */
-    0, /* PaUtilConverter *Copy_16_To_16; */
-    0, /* PaUtilConverter *Copy_24_To_24; */
-    0  /* PaUtilConverter *Copy_32_To_32; */
-};
-
-/* -------------------------------------------------------------------------- */
-
-#else /* PA_NO_STANDARD_CONVERTERS is not defined */
-
-/* -------------------------------------------------------------------------- */
-
-#define PA_CLIP_( val, min, max )\
-    { val = ((val) < (min)) ? (min) : (((val) > (max)) ? (max) : (val)); }
-
-
-static const float const_1_div_128_ = 1.0f / 128.0f;  /* 8 bit multiplier */
-
-static const float const_1_div_32768_ = 1.0f / 32768.f; /* 16 bit multiplier */
-
-static const double const_1_div_2147483648_ = 1.0 / 2147483648.0; /* 32 bit multiplier */
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* REVIEW */
-#ifdef PA_USE_C99_LRINTF
-        float scaled = *src * 0x7FFFFFFF;
-        *dest = lrintf(scaled-0.5f);
-#else
-        double scaled = *src * 0x7FFFFFFF;
-        *dest = (PaInt32) scaled;        
-#endif
-        
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int32_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-
-    while( count-- )
-    {
-        /* REVIEW */
-#ifdef PA_USE_C99_LRINTF
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = ((float)*src * (2147483646.0f)) + dither;
-        *dest = lrintf(dithered - 0.5f);
-#else
-        double dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        double dithered = ((double)*src * (2147483646.0)) + dither;
-        *dest = (PaInt32) dithered;
-#endif
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int32_Clip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        /* REVIEW */
-#ifdef PA_USE_C99_LRINTF
-        float scaled = *src * 0x7FFFFFFF;
-        PA_CLIP_( scaled, -2147483648.f, 2147483647.f  );
-        *dest = lrintf(scaled-0.5f);
-#else
-        double scaled = *src * 0x7FFFFFFF;
-        PA_CLIP_( scaled, -2147483648., 2147483647.  );
-        *dest = (PaInt32) scaled;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int32_DitherClip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-
-    while( count-- )
-    {
-        /* REVIEW */
-#ifdef PA_USE_C99_LRINTF
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = ((float)*src * (2147483646.0f)) + dither;
-        PA_CLIP_( dithered, -2147483648.f, 2147483647.f  );
-        *dest = lrintf(dithered-0.5f);
-#else
-        double dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        double dithered = ((double)*src * (2147483646.0)) + dither;
-        PA_CLIP_( dithered, -2147483648., 2147483647.  );
-        *dest = (PaInt32) dithered;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    PaInt32 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        /* convert to 32 bit and drop the low 8 bits */
-        double scaled = *src * 0x7FFFFFFF;
-        temp = (PaInt32) scaled;
-        
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 8);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 24);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 24);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 8);
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int24_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    PaInt32 temp;
-
-    while( count-- )
-    {
-        /* convert to 32 bit and drop the low 8 bits */
-
-        double dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        double dithered = ((double)*src * (2147483646.0)) + dither;
-        
-        temp = (PaInt32) dithered;
-
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 8);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 24);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 24);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 8);
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int24_Clip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    PaInt32 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        /* convert to 32 bit and drop the low 8 bits */
-        double scaled = *src * 0x7FFFFFFF;
-        PA_CLIP_( scaled, -2147483648., 2147483647.  );
-        temp = (PaInt32) scaled;
-
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 8);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 24);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 24);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 8);
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int24_DitherClip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    PaInt32 temp;
-    
-    while( count-- )
-    {
-        /* convert to 32 bit and drop the low 8 bits */
-        
-        double dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        double dithered = ((double)*src * (2147483646.0)) + dither;
-        PA_CLIP_( dithered, -2147483648., 2147483647.  );
-        
-        temp = (PaInt32) dithered;
-
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 8);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 24);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 24);
-        dest[1] = (unsigned char)(temp >> 16);
-        dest[2] = (unsigned char)(temp >> 8);
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-#ifdef PA_USE_C99_LRINTF
-        float tempf = (*src * (32767.0f)) ;
-        *dest = lrintf(tempf-0.5f);
-#else
-        short samp = (short) (*src * (32767.0f));
-        *dest = samp;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int16_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt16 *dest = (PaInt16*)destinationBuffer;
-
-    while( count-- )
-    {
-
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = (*src * (32766.0f)) + dither;
-
-#ifdef PA_USE_C99_LRINTF
-        *dest = lrintf(dithered-0.5f);
-#else
-        *dest = (PaInt16) dithered;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int16_Clip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-#ifdef PA_USE_C99_LRINTF
-        long samp = lrintf((*src * (32767.0f)) -0.5f);
-#else
-        long samp = (PaInt32) (*src * (32767.0f));
-#endif
-        PA_CLIP_( samp, -0x8000, 0x7FFF );
-        *dest = (PaInt16) samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int16_DitherClip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = (*src * (32766.0f)) + dither;
-        PaInt32 samp = (PaInt32) dithered;
-        PA_CLIP_( samp, -0x8000, 0x7FFF );
-#ifdef PA_USE_C99_LRINTF
-        *dest = lrintf(samp-0.5f);
-#else
-        *dest = (PaInt16) samp;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        signed char samp = (signed char) (*src * (127.0f));
-        *dest = samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = (*src * (126.0f)) + dither;
-        PaInt32 samp = (PaInt32) dithered;
-        *dest = (signed char) samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int8_Clip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        PaInt32 samp = (PaInt32)(*src * (127.0f));
-        PA_CLIP_( samp, -0x80, 0x7F );
-        *dest = (signed char) samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_Int8_DitherClip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        float dither  = PaUtil_GenerateFloatTriangularDither( ditherGenerator );
-        /* use smaller scaler to prevent overflow when we add the dither */
-        float dithered = (*src * (126.0f)) + dither;
-        PaInt32 samp = (PaInt32) dithered;
-        PA_CLIP_( samp, -0x80, 0x7F );
-        *dest = (signed char) samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_UInt8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        unsigned char samp = (unsigned char)(128 + ((unsigned char) (*src * (127.0f))));
-        *dest = samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_UInt8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_UInt8_Clip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Float32_To_UInt8_DitherClip(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    float *src = (float*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Float32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    float *dest =  (float*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        *dest = (float) ((double)*src * const_1_div_2147483648_);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src    = (PaInt32*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    (void) ditherGenerator; /* unused parameter */
-    
-	while( count-- )
-    {
-		/* REVIEW */
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = (unsigned char)(*src >> 8);
-        dest[1] = (unsigned char)(*src >> 16);
-        dest[2] = (unsigned char)(*src >> 24);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(*src >> 24);
-        dest[1] = (unsigned char)(*src >> 16);
-        dest[2] = (unsigned char)(*src >> 8);
-#endif
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int24_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    (void) destinationBuffer; /* unused parameters */
-    (void) destinationStride; /* unused parameters */
-    (void) sourceBuffer; /* unused parameters */
-    (void) sourceStride; /* unused parameters */
-    (void) count; /* unused parameters */
-    (void) ditherGenerator; /* unused parameters */
-    /* IMPLEMENT ME */
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        *dest = (PaInt16) ((*src) >> 16);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int16_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    PaInt32 dither;
-
-    while( count-- )
-    {
-        /* REVIEW */
-        dither = PaUtil_Generate16BitTriangularDither( ditherGenerator );
-        *dest = (PaInt16) ((((*src)>>1) + dither) >> 15);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        *dest = (signed char) ((*src) >> 24);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_Int8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    PaInt32 dither;
-
-    while( count-- )
-    {
-        /* REVIEW */
-        dither = PaUtil_Generate16BitTriangularDither( ditherGenerator );
-        *dest = (signed char) ((((*src)>>1) + dither) >> 23);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_UInt8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-		(*dest) = (unsigned char)(((*src) >> 24) + 128); 
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int32_To_UInt8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt32 *src = (PaInt32*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Float32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    float *dest = (float*)destinationBuffer;
-    PaInt32 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-
-#if defined(PA_LITTLE_ENDIAN)
-        temp = (((long)src[0]) << 8);  
-        temp = temp | (((long)src[1]) << 16);
-        temp = temp | (((long)src[2]) << 24);
-#elif defined(PA_BIG_ENDIAN)
-        temp = (((long)src[0]) << 24);
-        temp = temp | (((long)src[1]) << 16);
-        temp = temp | (((long)src[2]) << 8);
-#endif
-
-        *dest = (float) ((double)temp * const_1_div_2147483648_);
-
-        src += sourceStride * 3;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Int32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src  = (unsigned char*)sourceBuffer;
-    PaInt32 *dest = (PaInt32*)  destinationBuffer;
-    PaInt32 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-
-#if defined(PA_LITTLE_ENDIAN)
-        temp = (((long)src[0]) << 8);  
-        temp = temp | (((long)src[1]) << 16);
-        temp = temp | (((long)src[2]) << 24);
-#elif defined(PA_BIG_ENDIAN)
-        temp = (((long)src[0]) << 24);
-        temp = temp | (((long)src[1]) << 16);
-        temp = temp | (((long)src[2]) << 8);
-#endif
-
-        *dest = temp;
-
-        src += sourceStride * 3;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Int16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    PaInt16 *dest = (PaInt16*)destinationBuffer;
-    
-    PaInt16 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-        
-    while( count-- )
-    {
-		
-#if defined(PA_LITTLE_ENDIAN)
-		/* src[0] is discarded */
-        temp = (((PaInt16)src[1]));
-        temp = temp | (PaInt16)(((PaInt16)src[2]) << 8);
-#elif defined(PA_BIG_ENDIAN)
-		/* src[2] is discarded */
-        temp = (PaInt16)(((PaInt16)src[0]) << 8);
-        temp = temp | (((PaInt16)src[1]));
-#endif
-
-        *dest = temp;
-
-        src += sourceStride * 3;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Int16_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    (void) destinationBuffer; /* unused parameters */
-    (void) destinationStride; /* unused parameters */
-    (void) sourceBuffer; /* unused parameters */
-    (void) sourceStride; /* unused parameters */
-    (void) count; /* unused parameters */
-    (void) ditherGenerator; /* unused parameters */
-    /* IMPLEMENT ME */
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Int8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    signed char  *dest = (signed char*)destinationBuffer;
-    
-    (void) ditherGenerator; /* unused parameter */
-        
-    while( count-- )
-    {	
-	
-#if defined(PA_LITTLE_ENDIAN)
-		/* src[0] is discarded */
-		/* src[1] is discarded */
-        *dest = src[2];
-#elif defined(PA_BIG_ENDIAN)
-		/* src[2] is discarded */
-		/* src[1] is discarded */
-		*dest = src[0];
-#endif
-
-        src += sourceStride * 3;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_Int8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    (void) destinationBuffer; /* unused parameters */
-    (void) destinationStride; /* unused parameters */
-    (void) sourceBuffer; /* unused parameters */
-    (void) sourceStride; /* unused parameters */
-    (void) count; /* unused parameters */
-    (void) ditherGenerator; /* unused parameters */
-    /* IMPLEMENT ME */
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_UInt8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    
-    (void) ditherGenerator; /* unused parameter */
-        
-    while( count-- )
-    {
-		
-#if defined(PA_LITTLE_ENDIAN)
-		/* src[0] is discarded */
-		/* src[1] is discarded */
-        *dest = (unsigned char)(src[2] + 128);
-#elif defined(PA_BIG_ENDIAN)
-        *dest = (unsigned char)(src[0] + 128);
-		/* src[1] is discarded */
-		/* src[2] is discarded */		
-#endif
-
-        src += sourceStride * 3;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int24_To_UInt8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    (void) destinationBuffer; /* unused parameters */
-    (void) destinationStride; /* unused parameters */
-    (void) sourceBuffer; /* unused parameters */
-    (void) sourceStride; /* unused parameters */
-    (void) count; /* unused parameters */
-    (void) ditherGenerator; /* unused parameters */
-    /* IMPLEMENT ME */
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_Float32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    float *dest =  (float*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        float samp = *src * const_1_div_32768_; /* FIXME: i'm concerned about this being asymetrical with float->int16 -rb */
-        *dest = samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_Int32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* REVIEW: we should consider something like
-            (*src << 16) | (*src & 0xFFFF)
-        */
-        
-        *dest = *src << 16;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_Int24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src   = (PaInt16*) sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    PaInt16 temp;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        temp = *src;
-        
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = 0;
-        dest[1] = (unsigned char)(temp);
-        dest[2] = (unsigned char)(temp >> 8);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(temp >> 8);
-        dest[1] = (unsigned char)(temp);
-        dest[2] = 0;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_Int8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        (*dest) = (signed char)((*src) >> 8);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_Int8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    signed char *dest =  (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_UInt8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-		(*dest) = (unsigned char)(((*src) >> 8) + 128); 
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int16_To_UInt8_Dither(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaInt16 *src = (PaInt16*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        /* IMPLEMENT ME */
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int8_To_Float32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    signed char *src = (signed char*)sourceBuffer;
-    float *dest =  (float*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        float samp = *src * const_1_div_128_;
-        *dest = samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int8_To_Int32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    signed char *src = (signed char*)sourceBuffer;
-    PaInt32 *dest =  (PaInt32*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-		(*dest) = (*src) << 24;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int8_To_Int24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    signed char *src = (signed char*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = 0;
-        dest[1] = 0;
-        dest[2] = (*src);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (*src);
-        dest[1] = 0;
-        dest[2] = 0;
-#endif
-
-        src += sourceStride;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int8_To_Int16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    signed char *src = (signed char*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        (*dest) = (PaInt16)((*src) << 8);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Int8_To_UInt8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    signed char *src = (signed char*)sourceBuffer;
-    unsigned char *dest =  (unsigned char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        (*dest) = (unsigned char)(*src + 128);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void UInt8_To_Float32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    float *dest =  (float*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        float samp = (*src - 128) * const_1_div_128_;
-        *dest = samp;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void UInt8_To_Int32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    PaInt32 *dest = (PaInt32*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-		(*dest) = (*src - 128) << 24;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void UInt8_To_Int24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-	unsigned char *src  = (unsigned char*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-    (void) ditherGenerator; /* unused parameters */
-    
-	while( count-- )
-    {
-
-#if defined(PA_LITTLE_ENDIAN)
-        dest[0] = 0;
-        dest[1] = 0;
-        dest[2] = (unsigned char)(*src - 128);
-#elif defined(PA_BIG_ENDIAN)
-        dest[0] = (unsigned char)(*src - 128);
-        dest[1] = 0;
-        dest[2] = 0;
-#endif
-		
-        src += sourceStride;
-        dest += destinationStride * 3;    
-	}
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void UInt8_To_Int16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    PaInt16 *dest =  (PaInt16*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        (*dest) = (PaInt16)((*src - 128) << 8);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void UInt8_To_Int8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    signed char  *dest = (signed char*)destinationBuffer;
-    (void)ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        (*dest) = (signed char)(*src - 128);
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Copy_8_To_8(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-                                                      
-    (void) ditherGenerator; /* unused parameter */
-
-    while( count-- )
-    {
-        *dest = *src;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Copy_16_To_16(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaUint16 *src = (PaUint16 *)sourceBuffer;
-    PaUint16 *dest = (PaUint16 *)destinationBuffer;
-                                                        
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        *dest = *src;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Copy_24_To_24(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    unsigned char *src = (unsigned char*)sourceBuffer;
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        dest[0] = src[0];
-        dest[1] = src[1];
-        dest[2] = src[2];
-
-        src += sourceStride * 3;
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Copy_32_To_32(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator )
-{
-    PaUint32 *dest = (PaUint32 *)destinationBuffer;
-    PaUint32 *src = (PaUint32 *)sourceBuffer;
-
-    (void) ditherGenerator; /* unused parameter */
-    
-    while( count-- )
-    {
-        *dest = *src;
-
-        src += sourceStride;
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilConverterTable paConverters = {
-    Float32_To_Int32,              /* PaUtilConverter *Float32_To_Int32; */
-    Float32_To_Int32_Dither,       /* PaUtilConverter *Float32_To_Int32_Dither; */
-    Float32_To_Int32_Clip,         /* PaUtilConverter *Float32_To_Int32_Clip; */
-    Float32_To_Int32_DitherClip,   /* PaUtilConverter *Float32_To_Int32_DitherClip; */
-
-    Float32_To_Int24,              /* PaUtilConverter *Float32_To_Int24; */
-    Float32_To_Int24_Dither,       /* PaUtilConverter *Float32_To_Int24_Dither; */
-    Float32_To_Int24_Clip,         /* PaUtilConverter *Float32_To_Int24_Clip; */
-    Float32_To_Int24_DitherClip,   /* PaUtilConverter *Float32_To_Int24_DitherClip; */
-    
-    Float32_To_Int16,              /* PaUtilConverter *Float32_To_Int16; */
-    Float32_To_Int16_Dither,       /* PaUtilConverter *Float32_To_Int16_Dither; */
-    Float32_To_Int16_Clip,         /* PaUtilConverter *Float32_To_Int16_Clip; */
-    Float32_To_Int16_DitherClip,   /* PaUtilConverter *Float32_To_Int16_DitherClip; */
-
-    Float32_To_Int8,               /* PaUtilConverter *Float32_To_Int8; */
-    Float32_To_Int8_Dither,        /* PaUtilConverter *Float32_To_Int8_Dither; */
-    Float32_To_Int8_Clip,          /* PaUtilConverter *Float32_To_Int8_Clip; */
-    Float32_To_Int8_DitherClip,    /* PaUtilConverter *Float32_To_Int8_DitherClip; */
-
-    Float32_To_UInt8,              /* PaUtilConverter *Float32_To_UInt8; */
-    Float32_To_UInt8_Dither,       /* PaUtilConverter *Float32_To_UInt8_Dither; */
-    Float32_To_UInt8_Clip,         /* PaUtilConverter *Float32_To_UInt8_Clip; */
-    Float32_To_UInt8_DitherClip,   /* PaUtilConverter *Float32_To_UInt8_DitherClip; */
-
-    Int32_To_Float32,              /* PaUtilConverter *Int32_To_Float32; */
-    Int32_To_Int24,                /* PaUtilConverter *Int32_To_Int24; */
-    Int32_To_Int24_Dither,         /* PaUtilConverter *Int32_To_Int24_Dither; */
-    Int32_To_Int16,                /* PaUtilConverter *Int32_To_Int16; */
-    Int32_To_Int16_Dither,         /* PaUtilConverter *Int32_To_Int16_Dither; */
-    Int32_To_Int8,                 /* PaUtilConverter *Int32_To_Int8; */
-    Int32_To_Int8_Dither,          /* PaUtilConverter *Int32_To_Int8_Dither; */
-    Int32_To_UInt8,                /* PaUtilConverter *Int32_To_UInt8; */
-    Int32_To_UInt8_Dither,         /* PaUtilConverter *Int32_To_UInt8_Dither; */
-
-    Int24_To_Float32,              /* PaUtilConverter *Int24_To_Float32; */
-    Int24_To_Int32,                /* PaUtilConverter *Int24_To_Int32; */
-    Int24_To_Int16,                /* PaUtilConverter *Int24_To_Int16; */
-    Int24_To_Int16_Dither,         /* PaUtilConverter *Int24_To_Int16_Dither; */
-    Int24_To_Int8,                 /* PaUtilConverter *Int24_To_Int8; */
-    Int24_To_Int8_Dither,          /* PaUtilConverter *Int24_To_Int8_Dither; */
-    Int24_To_UInt8,                /* PaUtilConverter *Int24_To_UInt8; */
-    Int24_To_UInt8_Dither,         /* PaUtilConverter *Int24_To_UInt8_Dither; */
-
-    Int16_To_Float32,              /* PaUtilConverter *Int16_To_Float32; */
-    Int16_To_Int32,                /* PaUtilConverter *Int16_To_Int32; */
-    Int16_To_Int24,                /* PaUtilConverter *Int16_To_Int24; */
-    Int16_To_Int8,                 /* PaUtilConverter *Int16_To_Int8; */
-    Int16_To_Int8_Dither,          /* PaUtilConverter *Int16_To_Int8_Dither; */
-    Int16_To_UInt8,                /* PaUtilConverter *Int16_To_UInt8; */
-    Int16_To_UInt8_Dither,         /* PaUtilConverter *Int16_To_UInt8_Dither; */
-
-    Int8_To_Float32,               /* PaUtilConverter *Int8_To_Float32; */
-    Int8_To_Int32,                 /* PaUtilConverter *Int8_To_Int32; */
-    Int8_To_Int24,                 /* PaUtilConverter *Int8_To_Int24 */
-    Int8_To_Int16,                 /* PaUtilConverter *Int8_To_Int16; */
-    Int8_To_UInt8,                 /* PaUtilConverter *Int8_To_UInt8; */
-
-    UInt8_To_Float32,              /* PaUtilConverter *UInt8_To_Float32; */
-    UInt8_To_Int32,                /* PaUtilConverter *UInt8_To_Int32; */
-    UInt8_To_Int24,                /* PaUtilConverter *UInt8_To_Int24; */
-    UInt8_To_Int16,                /* PaUtilConverter *UInt8_To_Int16; */
-    UInt8_To_Int8,                 /* PaUtilConverter *UInt8_To_Int8; */
-
-    Copy_8_To_8,                   /* PaUtilConverter *Copy_8_To_8; */
-    Copy_16_To_16,                 /* PaUtilConverter *Copy_16_To_16; */
-    Copy_24_To_24,                 /* PaUtilConverter *Copy_24_To_24; */
-    Copy_32_To_32                  /* PaUtilConverter *Copy_32_To_32; */
-};
-
-/* -------------------------------------------------------------------------- */
-
-#endif /* PA_NO_STANDARD_CONVERTERS */
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilZeroer* PaUtil_SelectZeroer( PaSampleFormat destinationFormat )
-{
-    switch( destinationFormat & ~paNonInterleaved ){
-    case paFloat32:
-        return paZeroers.Zero32;
-    case paInt32:
-        return paZeroers.Zero32;
-    case paInt24:
-        return paZeroers.Zero24;
-    case paInt16:
-        return paZeroers.Zero16;
-    case paInt8:
-        return paZeroers.Zero8;
-    case paUInt8:
-        return paZeroers.ZeroU8;
-    default: return 0;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-#ifdef PA_NO_STANDARD_ZEROERS
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilZeroerTable paZeroers = {
-    0,  /* PaUtilZeroer *ZeroU8; */
-    0,  /* PaUtilZeroer *Zero8; */
-    0,  /* PaUtilZeroer *Zero16; */
-    0,  /* PaUtilZeroer *Zero24; */
-    0,  /* PaUtilZeroer *Zero32; */
-};
-
-/* -------------------------------------------------------------------------- */
-
-#else /* PA_NO_STANDARD_ZEROERS is not defined */
-
-/* -------------------------------------------------------------------------- */
-
-static void ZeroU8( void *destinationBuffer, signed int destinationStride,
-        unsigned int count )
-{
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-
-    while( count-- )
-    {
-        *dest = 128;
-
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Zero8( void *destinationBuffer, signed int destinationStride,
-        unsigned int count )
-{
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-
-    while( count-- )
-    {
-        *dest = 0;
-
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Zero16( void *destinationBuffer, signed int destinationStride,
-        unsigned int count )
-{
-    PaUint16 *dest = (PaUint16 *)destinationBuffer;
-
-    while( count-- )
-    {
-        *dest = 0;
-
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Zero24( void *destinationBuffer, signed int destinationStride,
-        unsigned int count )
-{
-    unsigned char *dest = (unsigned char*)destinationBuffer;
-
-    while( count-- )
-    {
-        dest[0] = 0;
-        dest[1] = 0;
-        dest[2] = 0;
-
-        dest += destinationStride * 3;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-static void Zero32( void *destinationBuffer, signed int destinationStride,
-        unsigned int count )
-{
-    PaUint32 *dest = (PaUint32 *)destinationBuffer;
-
-    while( count-- )
-    {
-        *dest = 0;
-
-        dest += destinationStride;
-    }
-}
-
-/* -------------------------------------------------------------------------- */
-
-PaUtilZeroerTable paZeroers = {
-    ZeroU8,  /* PaUtilZeroer *ZeroU8; */
-    Zero8,  /* PaUtilZeroer *Zero8; */
-    Zero16,  /* PaUtilZeroer *Zero16; */
-    Zero24,  /* PaUtilZeroer *Zero24; */
-    Zero32,  /* PaUtilZeroer *Zero32; */
-};
-
-/* -------------------------------------------------------------------------- */
-
-#endif /* PA_NO_STANDARD_ZEROERS */
diff --git a/external/portaudio2007/pa_converters.h b/external/portaudio2007/pa_converters.h
deleted file mode 100644
index 7ddfcaa..0000000
--- a/external/portaudio2007/pa_converters.h
+++ /dev/null
@@ -1,263 +0,0 @@
-#ifndef PA_CONVERTERS_H
-#define PA_CONVERTERS_H
-/*
- * $Id: pa_converters.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library sample conversion mechanism
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Conversion functions used to convert buffers of samples from one
- format to another.
-*/
-
-
-#include "portaudio.h"  /* for PaSampleFormat */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-struct PaUtilTriangularDitherGenerator;
-
-
-/** Choose an available sample format which is most appropriate for
- representing the requested format. If the requested format is not available
- higher quality formats are considered before lower quality formates.
- @param availableFormats A variable containing the logical OR of all available
- formats.
- @param format The desired format.
- @return The most appropriate available format for representing the requested
- format.
-*/
-PaSampleFormat PaUtil_SelectClosestAvailableFormat(
-        PaSampleFormat availableFormats, PaSampleFormat format );
-
-
-/* high level conversions functions for use by implementations */
-
-
-/** The generic sample converter prototype. Sample converters convert count
-    samples from sourceBuffer to destinationBuffer. The actual type of the data
-    pointed to by these parameters varys for different converter functions.
-    @param destinationBuffer A pointer to the first sample of the destination.
-    @param destinationStride An offset between successive destination samples
-    expressed in samples (not bytes.) It may be negative.
-    @param sourceBuffer A pointer to the first sample of the source.
-    @param sourceStride An offset between successive source samples
-    expressed in samples (not bytes.) It may be negative.
-    @param count The number of samples to convert.
-    @param ditherState State information used to calculate dither. Converters
-    that do not perform dithering will ignore this parameter, in which case
-    NULL or invalid dither state may be passed.
-*/
-typedef void PaUtilConverter(
-    void *destinationBuffer, signed int destinationStride,
-    void *sourceBuffer, signed int sourceStride,
-    unsigned int count, struct PaUtilTriangularDitherGenerator *ditherGenerator );
-
-
-/** Find a sample converter function for the given source and destinations
-    formats and flags (clip and dither.)
-    @return
-    A pointer to a PaUtilConverter which will perform the requested
-    conversion, or NULL if the given format conversion is not supported.
-    For conversions where clipping or dithering is not necessary, the
-    clip and dither flags are ignored and a non-clipping or dithering
-    version is returned.
-    If the source and destination formats are the same, a function which
-    copies data of the appropriate size will be returned.
-*/
-PaUtilConverter* PaUtil_SelectConverter( PaSampleFormat sourceFormat,
-        PaSampleFormat destinationFormat, PaStreamFlags flags );
-
-
-/** The generic buffer zeroer prototype. Buffer zeroers copy count zeros to
-    destinationBuffer. The actual type of the data pointed to varys for
-    different zeroer functions.
-    @param destinationBuffer A pointer to the first sample of the destination.
-    @param destinationStride An offset between successive destination samples
-    expressed in samples (not bytes.) It may be negative.
-    @param count The number of samples to zero.
-*/
-typedef void PaUtilZeroer(
-    void *destinationBuffer, signed int destinationStride, unsigned int count );
-
-    
-/** Find a buffer zeroer function for the given destination format.
-    @return
-    A pointer to a PaUtilZeroer which will perform the requested
-    zeroing.
-*/
-PaUtilZeroer* PaUtil_SelectZeroer( PaSampleFormat destinationFormat );
-
-/*----------------------------------------------------------------------------*/
-/* low level functions and data structures which may be used for
-    substituting conversion functions */
-
-
-/** The type used to store all sample conversion functions.
-    @see paConverters;
-*/
-typedef struct{
-    PaUtilConverter *Float32_To_Int32;
-    PaUtilConverter *Float32_To_Int32_Dither;
-    PaUtilConverter *Float32_To_Int32_Clip;
-    PaUtilConverter *Float32_To_Int32_DitherClip;
-
-    PaUtilConverter *Float32_To_Int24;
-    PaUtilConverter *Float32_To_Int24_Dither;
-    PaUtilConverter *Float32_To_Int24_Clip;
-    PaUtilConverter *Float32_To_Int24_DitherClip;
-    
-    PaUtilConverter *Float32_To_Int16;
-    PaUtilConverter *Float32_To_Int16_Dither;
-    PaUtilConverter *Float32_To_Int16_Clip;
-    PaUtilConverter *Float32_To_Int16_DitherClip;
-
-    PaUtilConverter *Float32_To_Int8;
-    PaUtilConverter *Float32_To_Int8_Dither;
-    PaUtilConverter *Float32_To_Int8_Clip;
-    PaUtilConverter *Float32_To_Int8_DitherClip;
-
-    PaUtilConverter *Float32_To_UInt8;
-    PaUtilConverter *Float32_To_UInt8_Dither;
-    PaUtilConverter *Float32_To_UInt8_Clip;
-    PaUtilConverter *Float32_To_UInt8_DitherClip;
-
-    PaUtilConverter *Int32_To_Float32;
-    PaUtilConverter *Int32_To_Int24;
-    PaUtilConverter *Int32_To_Int24_Dither;
-    PaUtilConverter *Int32_To_Int16;
-    PaUtilConverter *Int32_To_Int16_Dither;
-    PaUtilConverter *Int32_To_Int8;
-    PaUtilConverter *Int32_To_Int8_Dither;
-    PaUtilConverter *Int32_To_UInt8;
-    PaUtilConverter *Int32_To_UInt8_Dither;
-
-    PaUtilConverter *Int24_To_Float32;
-    PaUtilConverter *Int24_To_Int32;
-    PaUtilConverter *Int24_To_Int16;
-    PaUtilConverter *Int24_To_Int16_Dither;
-    PaUtilConverter *Int24_To_Int8;
-    PaUtilConverter *Int24_To_Int8_Dither;
-    PaUtilConverter *Int24_To_UInt8;
-    PaUtilConverter *Int24_To_UInt8_Dither;
-
-    PaUtilConverter *Int16_To_Float32;
-    PaUtilConverter *Int16_To_Int32;
-    PaUtilConverter *Int16_To_Int24;
-    PaUtilConverter *Int16_To_Int8;
-    PaUtilConverter *Int16_To_Int8_Dither;
-    PaUtilConverter *Int16_To_UInt8;
-    PaUtilConverter *Int16_To_UInt8_Dither;
-
-    PaUtilConverter *Int8_To_Float32;
-    PaUtilConverter *Int8_To_Int32;
-    PaUtilConverter *Int8_To_Int24;
-    PaUtilConverter *Int8_To_Int16;
-    PaUtilConverter *Int8_To_UInt8;
-    
-    PaUtilConverter *UInt8_To_Float32;
-    PaUtilConverter *UInt8_To_Int32;
-    PaUtilConverter *UInt8_To_Int24;
-    PaUtilConverter *UInt8_To_Int16;
-    PaUtilConverter *UInt8_To_Int8;
-
-    PaUtilConverter *Copy_8_To_8;       /* copy without any conversion */
-    PaUtilConverter *Copy_16_To_16;     /* copy without any conversion */
-    PaUtilConverter *Copy_24_To_24;     /* copy without any conversion */
-    PaUtilConverter *Copy_32_To_32;     /* copy without any conversion */
-} PaUtilConverterTable;
-
-
-/** A table of pointers to all required converter functions.
-    PaUtil_SelectConverter() uses this table to lookup the appropriate
-    conversion functions. The fields of this structure are initialized
-    with default conversion functions. Fields may be NULL, indicating that
-    no conversion function is available. User code may substitue optimised
-    conversion functions by assigning different function pointers to
-    these fields.
-
-    @note
-    If the PA_NO_STANDARD_CONVERTERS preprocessor variable is defined,
-    PortAudio's standard converters will not be compiled, and all fields
-    of this structure will be initialized to NULL. In such cases, users
-    should supply their own conversion functions if the require PortAudio
-    to open a stream that requires sample conversion.
-
-    @see PaUtilConverterTable, PaUtilConverter, PaUtil_SelectConverter
-*/
-extern PaUtilConverterTable paConverters;
-
-
-/** The type used to store all buffer zeroing functions.
-    @see paZeroers;
-*/
-typedef struct{
-    PaUtilZeroer *ZeroU8; /* unsigned 8 bit, zero == 128 */
-    PaUtilZeroer *Zero8;
-    PaUtilZeroer *Zero16;
-    PaUtilZeroer *Zero24;
-    PaUtilZeroer *Zero32;
-} PaUtilZeroerTable;
-
-
-/** A table of pointers to all required zeroer functions.
-    PaUtil_SelectZeroer() uses this table to lookup the appropriate
-    conversion functions. The fields of this structure are initialized
-    with default conversion functions. User code may substitue optimised
-    conversion functions by assigning different function pointers to
-    these fields.
-
-    @note
-    If the PA_NO_STANDARD_ZEROERS preprocessor variable is defined,
-    PortAudio's standard zeroers will not be compiled, and all fields
-    of this structure will be initialized to NULL. In such cases, users
-    should supply their own zeroing functions for the sample sizes which
-    they intend to use.
-
-    @see PaUtilZeroerTable, PaUtilZeroer, PaUtil_SelectZeroer
-*/
-extern PaUtilZeroerTable paZeroers;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_CONVERTERS_H */
diff --git a/external/portaudio2007/pa_cpuload.c b/external/portaudio2007/pa_cpuload.c
deleted file mode 100644
index 445503c..0000000
--- a/external/portaudio2007/pa_cpuload.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * $Id: pa_cpuload.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library CPU Load measurement functions
- * Portable CPU load measurement facility.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 2002 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Functions to assist in measuring the CPU utilization of a callback
- stream. Used to implement the Pa_GetStreamCpuLoad() function.
-
- @todo Dynamically calculate the coefficients used to smooth the CPU Load
- Measurements over time to provide a uniform characterisation of CPU Load
- independent of rate at which PaUtil_BeginCpuLoadMeasurement /
- PaUtil_EndCpuLoadMeasurement are called.
-*/
-
-
-#include "pa_cpuload.h"
-
-#include <assert.h>
-
-#include "pa_util.h"   /* for PaUtil_GetTime() */
-
-
-void PaUtil_InitializeCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer, double sampleRate )
-{
-    assert( sampleRate > 0 );
-
-    measurer->samplingPeriod = 1. / sampleRate;
-    measurer->averageLoad = 0.;
-}
-
-void PaUtil_ResetCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer )
-{
-    measurer->averageLoad = 0.;
-}
-
-void PaUtil_BeginCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer )
-{
-    measurer->measurementStartTime = PaUtil_GetTime();
-}
-
-
-void PaUtil_EndCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer, unsigned long framesProcessed )
-{
-    double measurementEndTime, secondsFor100Percent, measuredLoad;
-
-    if( framesProcessed > 0 ){
-        measurementEndTime = PaUtil_GetTime();
-
-        assert( framesProcessed > 0 );
-        secondsFor100Percent = framesProcessed * measurer->samplingPeriod;
-
-        measuredLoad = (measurementEndTime - measurer->measurementStartTime) / secondsFor100Percent;
-
-        /* Low pass filter the calculated CPU load to reduce jitter using a simple IIR low pass filter. */
-        /** FIXME @todo these coefficients shouldn't be hardwired */
-#define LOWPASS_COEFFICIENT_0   (0.9)
-#define LOWPASS_COEFFICIENT_1   (0.99999 - LOWPASS_COEFFICIENT_0)
-
-        measurer->averageLoad = (LOWPASS_COEFFICIENT_0 * measurer->averageLoad) +
-                               (LOWPASS_COEFFICIENT_1 * measuredLoad);
-    }
-}
-
-
-double PaUtil_GetCpuLoad( PaUtilCpuLoadMeasurer* measurer )
-{
-    return measurer->averageLoad;
-}
diff --git a/external/portaudio2007/pa_cpuload.h b/external/portaudio2007/pa_cpuload.h
deleted file mode 100644
index 4a59443..0000000
--- a/external/portaudio2007/pa_cpuload.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef PA_CPULOAD_H
-#define PA_CPULOAD_H
-/*
- * $Id: pa_cpuload.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library CPU Load measurement functions
- * Portable CPU load measurement facility.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 2002 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Functions to assist in measuring the CPU utilization of a callback
- stream. Used to implement the Pa_GetStreamCpuLoad() function.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-typedef struct {
-    double samplingPeriod;
-    double measurementStartTime;
-    double averageLoad;
-} PaUtilCpuLoadMeasurer; /**< @todo need better name than measurer */
-
-void PaUtil_InitializeCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer, double sampleRate );
-void PaUtil_BeginCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer );
-void PaUtil_EndCpuLoadMeasurement( PaUtilCpuLoadMeasurer* measurer, unsigned long framesProcessed );
-void PaUtil_ResetCpuLoadMeasurer( PaUtilCpuLoadMeasurer* measurer );
-double PaUtil_GetCpuLoad( PaUtilCpuLoadMeasurer* measurer );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */     
-#endif /* PA_CPULOAD_H */
diff --git a/external/portaudio2007/pa_debugprint.c b/external/portaudio2007/pa_debugprint.c
deleted file mode 100644
index b788151..0000000
--- a/external/portaudio2007/pa_debugprint.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * $Id: pa_log.c $
- * Portable Audio I/O Library Multi-Host API front end
- * Validate function parameters and manage multiple host APIs.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2006 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however,
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also
- * requested that these non-binding requests be included along with the
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Implements log function.
-
-    PaUtil_SetLogPrintFunction can be user called to replace the provided
-	DefaultLogPrint function, which writes to stderr.
-	One can NOT pass var_args across compiler/dll boundaries as it is not
-	"byte code/abi portable". So the technique used here is to allocate a local
-	a static array, write in it, then callback the user with a pointer to its
-	start.
-
-    @todo Consider allocating strdump using dynamic allocation.
-    @todo Consider reentrancy and possibly corrupted strdump buffer.
-*/
-
-
-#include <stdio.h>
-#include <stdarg.h>
-
-#include "pa_debugprint.h"
-
-
-
-static PaUtilLogCallback userCB=0;
-
-
-void PaUtil_SetDebugPrintFunction(PaUtilLogCallback cb)
-{
-    userCB = cb;
-}
-
-/*
- If your platform doesn�t have vsnprintf, you are stuck with a
- VERY dangerous alternative, vsprintf (with no n)
- */
-
-#if (_MSC_VER) && (_MSC_VER <= 1400)
-#define VSNPRINTF  _vsnprintf
-#else
-#define VSNPRINTF  vsnprintf
-#endif
-
-#define SIZEDUMP 1024
-
-static char strdump[SIZEDUMP];
-
-void PaUtil_DebugPrint( const char *format, ... )
-{
-
-    if (userCB)
-    {
-        va_list ap;
-        va_start( ap, format );
-        VSNPRINTF( strdump, SIZEDUMP, format, ap );
-        userCB(strdump);
-        va_end( ap ); 
-    }
-    else
-    {
-        va_list ap;
-        va_start( ap, format );
-        vfprintf( stderr, format, ap );
-        va_end( ap );
-        fflush( stderr );
-    }
-
-}
diff --git a/external/portaudio2007/pa_debugprint.h b/external/portaudio2007/pa_debugprint.h
deleted file mode 100644
index f333add..0000000
--- a/external/portaudio2007/pa_debugprint.h
+++ /dev/null
@@ -1,149 +0,0 @@
-#ifndef PA_LOG_H
-#define PA_LOG_H
-/*
- * Log file redirector function
- * Copyright (c) 1999-2006 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however,
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also
- * requested that these non-binding requests be included along with the
- * license above.
- */
-
-/** @file
- @ingroup common_src
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-
-void PaUtil_DebugPrint( const char *format, ... );
-
-
-/*
-    The basic format for log messages is described below. If you need to
-    add any log messages, please follow this format.
-
-    Function entry (void function):
-
-        "FunctionName called.\n"
-
-    Function entry (non void function):
-
-        "FunctionName called:\n"
-        "\tParam1Type param1: param1Value\n"
-        "\tParam2Type param2: param2Value\n"      (etc...)
-
-
-    Function exit (no return value):
-
-        "FunctionName returned.\n"
-
-    Function exit (simple return value):
-
-        "FunctionName returned:\n"
-        "\tReturnType: returnValue\n"
-
-    If the return type is an error code, the error text is displayed in ()
-
-    If the return type is not an error code, but has taken a special value
-    because an error occurred, then the reason for the error is shown in []
-
-    If the return type is a struct ptr, the struct is dumped.
-
-    See the code below for examples
-*/
-
-/** PA_DEBUG() provides a simple debug message printing facility. The macro
- passes it's argument to a printf-like function called PaUtil_DebugPrint()
- which prints to stderr and always flushes the stream after printing.
- Because preprocessor macros cannot directly accept variable length argument
- lists, calls to the macro must include an additional set of parenthesis, eg:
- PA_DEBUG(("errorno: %d", 1001 ));
-*/
-
-
-#ifdef PA_ENABLE_DEBUG_OUTPUT
-#define PA_DEBUG(x) PaUtil_DebugPrint x ;
-#else
-#define PA_DEBUG(x)
-#endif
-
-
-#ifdef PA_LOG_API_CALLS
-#define PA_LOGAPI(x) PaUtil_DebugPrint x 
-
-#define PA_LOGAPI_ENTER(functionName) PaUtil_DebugPrint( functionName " called.\n" )
-
-#define PA_LOGAPI_ENTER_PARAMS(functionName) PaUtil_DebugPrint( functionName " called:\n" )
-
-#define PA_LOGAPI_EXIT(functionName) PaUtil_DebugPrint( functionName " returned.\n" )
-
-#define PA_LOGAPI_EXIT_PAERROR( functionName, result ) \
-	PaUtil_DebugPrint( functionName " returned:\n" ); \
-	PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) )
-
-#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result ) \
-	PaUtil_DebugPrint( functionName " returned:\n" ); \
-	PaUtil_DebugPrint("\t" resultFormatString "\n", result )
-
-#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result ) \
-	PaUtil_DebugPrint( functionName " returned:\n" ); \
-	if( result > 0 ) \
-        PaUtil_DebugPrint("\t" positiveResultFormatString "\n", result ); \
-    else \
-        PaUtil_DebugPrint("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) )
-#else
-#define PA_LOGAPI(x)
-#define PA_LOGAPI_ENTER(functionName)
-#define PA_LOGAPI_ENTER_PARAMS(functionName)
-#define PA_LOGAPI_EXIT(functionName)
-#define PA_LOGAPI_EXIT_PAERROR( functionName, result )
-#define PA_LOGAPI_EXIT_T( functionName, resultFormatString, result )
-#define PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( functionName, positiveResultFormatString, result )
-#endif
-
-    
-typedef void (*PaUtilLogCallback ) (const char *log);
-
-/**
-    Install user provided log function
-*/
-void PaUtil_SetDebugPrintFunction(PaUtilLogCallback  cb);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_LOG_H */
diff --git a/external/portaudio2007/pa_dither.c b/external/portaudio2007/pa_dither.c
deleted file mode 100644
index f5bdcb6..0000000
--- a/external/portaudio2007/pa_dither.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * $Id: pa_dither.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library triangular dither generator
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Functions for generating dither noise
- 
- Paul Boersma 2013: corrected for sizeof(long)
-*/
-
-
-#include "pa_dither.h"
-#include "pa_types.h"
-
-#define PA_DITHER_BITS_   (15)
-
-
-void PaUtil_InitializeTriangularDitherState( PaUtilTriangularDitherGenerator *state )
-{
-    state->previous = 0;
-    state->randSeed1 = 22222;
-    state->randSeed2 = 5555555;
-}
-
-
-signed long PaUtil_Generate16BitTriangularDither( PaUtilTriangularDitherGenerator *state )
-{
-    signed long current, highPass;
-
-    /* Generate two random numbers. */
-    state->randSeed1 = (state->randSeed1 * 196314165) + 907633515;
-    state->randSeed2 = (state->randSeed2 * 196314165) + 907633515;
-
-    /* Generate triangular distribution about 0.
-     * Shift before adding to prevent overflow which would skew the distribution.
-     * Also shift an extra bit for the high pass filter. 
-     */
-#define DITHER_SHIFT_  ((sizeof(long)*8 - PA_DITHER_BITS_) + 1)
-    current = (((signed long)state->randSeed1)>>DITHER_SHIFT_) +
-              (((signed long)state->randSeed2)>>DITHER_SHIFT_);
-
-    /* High pass filter to reduce audibility. */
-    highPass = current - state->previous;
-    state->previous = current;
-    return highPass;
-}
-
-
-/* Multiply by PA_FLOAT_DITHER_SCALE_ to get a float between -2.0 and +1.99999 */
-#define PA_FLOAT_DITHER_SCALE_  (1.0f / ((1<<PA_DITHER_BITS_)-1))
-static const float const_float_dither_scale_ = PA_FLOAT_DITHER_SCALE_;
-
-float PaUtil_GenerateFloatTriangularDither( PaUtilTriangularDitherGenerator *state )
-{
-    signed long current, highPass;
-
-    /* Generate two random numbers. */
-    state->randSeed1 = (state->randSeed1 * 196314165) + 907633515;
-    state->randSeed2 = (state->randSeed2 * 196314165) + 907633515;
-
-    /* Generate triangular distribution about 0.
-     * Shift before adding to prevent overflow which would skew the distribution.
-     * Also shift an extra bit for the high pass filter. 
-     */
-#define DITHER_SHIFT_  ((sizeof(long)*8 - PA_DITHER_BITS_) + 1)
-    current = (((signed long)state->randSeed1)>>DITHER_SHIFT_) +
-              (((signed long)state->randSeed2)>>DITHER_SHIFT_);
-
-    /* High pass filter to reduce audibility. */
-    highPass = current - state->previous;
-    state->previous = current;
-    return ((float)highPass) * const_float_dither_scale_;
-}
-
-
-/*
-The following alternate dither algorithms (from musicdsp.org) could be
-considered
-*/
-
-/*Noise shaped dither  (March 2000)
--------------------
-
-This is a simple implementation of highpass triangular-PDF dither with
-2nd-order noise shaping, for use when truncating floating point audio
-data to fixed point.
-
-The noise shaping lowers the noise floor by 11dB below 5kHz (@ 44100Hz
-sample rate) compared to triangular-PDF dither. The code below assumes
-input data is in the range +1 to -1 and doesn't check for overloads!
-
-To save time when generating dither for multiple channels you can do
-things like this:  r3=(r1 & 0x7F)<<8; instead of calling rand() again.
-
-
-
-  int   r1, r2;                //rectangular-PDF random numbers
-  float s1, s2;                //error feedback buffers
-  float s = 0.5f;              //set to 0.0f for no noise shaping
-  float w = pow(2.0,bits-1);   //word length (usually bits=16)
-  float wi= 1.0f/w;            
-  float d = wi / RAND_MAX;     //dither amplitude (2 lsb)
-  float o = wi * 0.5f;         //remove dc offset
-  float in, tmp;
-  int   out;
-
-
-//for each sample...
-
-  r2=r1;                               //can make HP-TRI dither by
-  r1=rand();                           //subtracting previous rand()
-    
-  in += s * (s1 + s1 - s2);            //error feedback
-  tmp = in + o + d * (float)(r1 - r2); //dc offset and dither 
-  
-  out = (int)(w * tmp);                //truncate downwards
-  if(tmp<0.0f) out--;                  //this is faster than floor()
-
-  s2 = s1;                            
-  s1 = in - wi * (float)out;           //error
-
-
-
--- 
-paul.kellett at maxim.abel.co.uk
-http://www.maxim.abel.co.uk
-*/
-
-
-/*
-16-to-8-bit first-order dither
-
-Type : First order error feedforward dithering code
-References : Posted by Jon Watte
-
-Notes : 
-This is about as simple a dithering algorithm as you can implement, but it's
-likely to sound better than just truncating to N bits.
-
-Note that you might not want to carry forward the full difference for infinity.
-It's probably likely that the worst performance hit comes from the saturation
-conditionals, which can be avoided with appropriate instructions on many DSPs
-and integer SIMD type instructions, or CMOV.
-
-Last, if sound quality is paramount (such as when going from > 16 bits to 16
-bits) you probably want to use a higher-order dither function found elsewhere
-on this site. 
-
-
-Code : 
-// This code will down-convert and dither a 16-bit signed short 
-// mono signal into an 8-bit unsigned char signal, using a first 
-// order forward-feeding error term dither. 
-
-#define uchar unsigned char 
-
-void dither_one_channel_16_to_8( short * input, uchar * output, int count, int * memory ) 
-{ 
-  int m = *memory; 
-  while( count-- > 0 ) { 
-    int i = *input++; 
-    i += m; 
-    int j = i + 32768 - 128; 
-    uchar o; 
-    if( j < 0 ) { 
-      o = 0; 
-    } 
-    else if( j > 65535 ) { 
-      o = 255; 
-    } 
-    else { 
-      o = (uchar)((j>>8)&0xff); 
-    } 
-    m = ((j-32768+128)-i); 
-    *output++ = o; 
-  } 
-  *memory = m; 
-} 
-*/
diff --git a/external/portaudio2007/pa_dither.h b/external/portaudio2007/pa_dither.h
deleted file mode 100644
index e77ce47..0000000
--- a/external/portaudio2007/pa_dither.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef PA_DITHER_H
-#define PA_DITHER_H
-/*
- * $Id: pa_dither.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library triangular dither generator
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Functions for generating dither noise
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/** @brief State needed to generate a dither signal */
-typedef struct PaUtilTriangularDitherGenerator{
-    unsigned long previous;
-    unsigned long randSeed1;
-    unsigned long randSeed2;
-} PaUtilTriangularDitherGenerator;
-
-
-/** @brief Initialize dither state */
-void PaUtil_InitializeTriangularDitherState( PaUtilTriangularDitherGenerator *ditherState );
-
-
-/**
- @brief Calculate 2 LSB dither signal with a triangular distribution.
- Ranged for adding to a 1 bit right-shifted 32 bit integer
- prior to >>15. eg:
-<pre>
-    signed long in = *
-    signed long dither = PaUtil_Generate16BitTriangularDither( ditherState );
-    signed short out = (signed short)(((in>>1) + dither) >> 15);
-</pre>
- @return
- A signed long with a range of +32767 to -32768
-*/
-signed long PaUtil_Generate16BitTriangularDither( PaUtilTriangularDitherGenerator *ditherState );
-
-
-/**
- @brief Calculate 2 LSB dither signal with a triangular distribution.
- Ranged for adding to a pre-scaled float.
-<pre>
-    float in = *
-    float dither = PaUtil_GenerateFloatTriangularDither( ditherState );
-    // use smaller scaler to prevent overflow when we add the dither
-    signed short out = (signed short)(in*(32766.0f) + dither );
-</pre>
- @return
- A float with a range of -2.0 to +1.99999.
-*/
-float PaUtil_GenerateFloatTriangularDither( PaUtilTriangularDitherGenerator *ditherState );
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_DITHER_H */
diff --git a/external/portaudio2007/pa_endianness.h b/external/portaudio2007/pa_endianness.h
deleted file mode 100644
index bdcc74f..0000000
--- a/external/portaudio2007/pa_endianness.h
+++ /dev/null
@@ -1,141 +0,0 @@
-#ifndef PA_ENDIANNESS_H
-#define PA_ENDIANNESS_H
-/*
- * $Id: pa_endianness.h 1216 2007-06-10 09:26:00Z aknudsen $
- * Portable Audio I/O Library current platform endianness macros
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Configure endianness symbols for the target processor.
-
- Arrange for either the PA_LITTLE_ENDIAN or PA_BIG_ENDIAN preprocessor symbols
- to be defined. The one that is defined reflects the endianness of the target
- platform and may be used to implement conditional compilation of byte-order
- dependent code.
-
- If either PA_LITTLE_ENDIAN or PA_BIG_ENDIAN is defined already, then no attempt
- is made to override that setting. This may be useful if you have a better way
- of determining the platform's endianness. The autoconf mechanism uses this for
- example.
-
- A PA_VALIDATE_ENDIANNESS macro is provided to compare the compile time
- and runtime endiannes and raise an assertion if they don't match.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* If this is an apple, we need to do detect endianness this way */
-#if defined(__APPLE__)
-    /* we need to do some endian detection that is sensitive to harware arch */
-    #if defined(__LITTLE_ENDIAN__)
-       #if !defined( PA_LITTLE_ENDIAN )
-          #define PA_LITTLE_ENDIAN
-       #endif
-       #if defined( PA_BIG_ENDIAN )
-          #undef PA_BIG_ENDIAN
-       #endif
-    #else
-       #if !defined( PA_BIG_ENDIAN )
-          #define PA_BIG_ENDIAN
-       #endif
-       #if defined( PA_LITTLE_ENDIAN )
-          #undef PA_LITTLE_ENDIAN
-       #endif
-    #endif
-#else
-    /* this is not an apple, so first check the existing defines, and, failing that,
-       detect well-known architechtures. */
-
-    #if defined(PA_LITTLE_ENDIAN) || defined(PA_BIG_ENDIAN)
-        /* endianness define has been set externally, such as by autoconf */
-
-        #if defined(PA_LITTLE_ENDIAN) && defined(PA_BIG_ENDIAN)
-        #error both PA_LITTLE_ENDIAN and PA_BIG_ENDIAN have been defined externally to pa_endianness.h - only one endianness at a time please
-        #endif
-
-    #else
-        /* endianness define has not been set externally */
-
-        /* set PA_LITTLE_ENDIAN or PA_BIG_ENDIAN by testing well known platform specific defines */
-
-        #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__) || defined(LITTLE_ENDIAN) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__)
-            #define PA_LITTLE_ENDIAN /* win32, assume intel byte order */
-        #else
-            #define PA_BIG_ENDIAN
-        #endif
-    #endif
-
-    #if !defined(PA_LITTLE_ENDIAN) && !defined(PA_BIG_ENDIAN)
-        /*
-         If the following error is raised, you either need to modify the code above
-         to automatically determine the endianness from other symbols defined on your
-         platform, or define either PA_LITTLE_ENDIAN or PA_BIG_ENDIAN externally.
-        */
-        #error pa_endianness.h was unable to automatically determine the endianness of the target platform
-    #endif
-
-#endif
-
-
-/* PA_VALIDATE_ENDIANNESS compares the compile time and runtime endianness,
- and raises an assertion if they don't match. <assert.h> must be included in
- the context in which this macro is used.
-*/
-#if defined(PA_LITTLE_ENDIAN)
-    #define PA_VALIDATE_ENDIANNESS \
-    { \
-        const long nativeOne = 1; \
-        assert( "PortAudio: compile time and runtime endianness don't match" && (((char *)&nativeOne)[0]) == 1 ); \
-    }
-#elif defined(PA_BIG_ENDIAN)
-    #define PA_VALIDATE_ENDIANNESS \
-    { \
-        const long nativeOne = 1; \
-        assert( "PortAudio: compile time and runtime endianness don't match" && (((char *)&nativeOne)[0]) == 0 ); \
-    }
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_ENDIANNESS_H */
diff --git a/external/portaudio2007/pa_front.c b/external/portaudio2007/pa_front.c
deleted file mode 100644
index 5af90d4..0000000
--- a/external/portaudio2007/pa_front.c
+++ /dev/null
@@ -1,1760 +0,0 @@
-/*
- * $Id: pa_front.c 1229 2007-06-15 16:11:11Z rossb $
- * Portable Audio I/O Library Multi-Host API front end
- * Validate function parameters and manage multiple host APIs.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Implements public PortAudio API, checks some errors, forwards to
- host API implementations.
- 
- Implements the functions defined in the PortAudio API, checks for
- some parameter and state inconsistencies and forwards API requests to
- specific Host API implementations (via the interface declared in
- pa_hostapi.h), and Streams (via the interface declared in pa_stream.h).
-
- This file handles initialization and termination of Host API
- implementations via initializers stored in the paHostApiInitializers
- global variable.
-
- Some utility functions declared in pa_util.h are implemented in this file.
-
- All PortAudio API functions can be conditionally compiled with logging code.
- To compile with logging, define the PA_LOG_API_CALLS precompiler symbol.
-
-    @todo Consider adding host API specific error text in Pa_GetErrorText() for
-    paUnanticipatedHostError
-
-    @todo Consider adding a new error code for when (inputParameters == NULL)
-    && (outputParameters == NULL)
-
-    @todo review whether Pa_CloseStream() should call the interface's
-    CloseStream function if aborting the stream returns an error code.
-
-    @todo Create new error codes if a NULL buffer pointer, or a
-    zero frame count is passed to Pa_ReadStream or Pa_WriteStream.
-*/
-
-
-#include <stdio.h>
-#include <memory.h>
-#include <string.h>
-#include <assert.h> /* needed by PA_VALIDATE_ENDIANNESS */
-
-#include "portaudio.h"
-#include "pa_util.h"
-#include "pa_endianness.h"
-#include "pa_types.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_trace.h" /* still usefull?*/
-#include "pa_debugprint.h"
-
-
-#define PA_VERSION_  1899
-#define PA_VERSION_TEXT_ "PortAudio V19-devel (built " __DATE__  ")"
-
-
-
-
-int Pa_GetVersion( void )
-{
-    return PA_VERSION_;
-}
-
-
-const char* Pa_GetVersionText( void )
-{
-    return PA_VERSION_TEXT_;
-}
-
-
-
-#define PA_LAST_HOST_ERROR_TEXT_LENGTH_  1024
-
-static char lastHostErrorText_[ PA_LAST_HOST_ERROR_TEXT_LENGTH_ + 1 ] = {0};
-
-static PaHostErrorInfo lastHostErrorInfo_ = { (PaHostApiTypeId)-1, 0, lastHostErrorText_ };
-
-
-void PaUtil_SetLastHostErrorInfo( PaHostApiTypeId hostApiType, long errorCode,
-        const char *errorText )
-{
-    lastHostErrorInfo_.hostApiType = hostApiType;
-    lastHostErrorInfo_.errorCode = errorCode;
-
-    strncpy( lastHostErrorText_, errorText, PA_LAST_HOST_ERROR_TEXT_LENGTH_ );
-}
-
-
-
-static PaUtilHostApiRepresentation **hostApis_ = 0;
-static int hostApisCount_ = 0;
-static int initializationCount_ = 0;
-static int deviceCount_ = 0;
-
-PaUtilStreamRepresentation *firstOpenStream_ = NULL;
-
-
-#define PA_IS_INITIALISED_ (initializationCount_ != 0)
-
-
-static int CountHostApiInitializers( void )
-{
-    int result = 0;
-
-    while( paHostApiInitializers[ result ] != 0 )
-        ++result;
-    return result;
-}
-
-
-static void TerminateHostApis( void )
-{
-    /* terminate in reverse order from initialization */
-    PA_DEBUG(("TerminateHostApis in \n"));
-
-    while( hostApisCount_ > 0 )
-    {
-        --hostApisCount_;
-        hostApis_[hostApisCount_]->Terminate( hostApis_[hostApisCount_] );
-    }
-    hostApisCount_ = 0;
-    deviceCount_ = 0;
-
-    if( hostApis_ != 0 )
-        PaUtil_FreeMemory( hostApis_ );
-    hostApis_ = 0;
-
-    PA_DEBUG(("TerminateHostApis out\n"));
-}
-
-
-static PaError InitializeHostApis( void )
-{
-    PaError result = paNoError;
-    int i, initializerCount, baseDeviceIndex;
-
-    initializerCount = CountHostApiInitializers();
-
-    hostApis_ = (PaUtilHostApiRepresentation**)PaUtil_AllocateMemory(
-            sizeof(PaUtilHostApiRepresentation*) * initializerCount );
-    if( !hostApis_ )
-    {
-        result = paInsufficientMemory;
-        goto error; 
-    }
-
-    hostApisCount_ = 0;
-    deviceCount_ = 0;
-    baseDeviceIndex = 0;
-
-    for( i=0; i< initializerCount; ++i )
-    {
-        hostApis_[hostApisCount_] = NULL;
-
-        PA_DEBUG(( "before paHostApiInitializers[%d].\n",i));
-
-        result = paHostApiInitializers[i]( &hostApis_[hostApisCount_], hostApisCount_ );
-        if( result != paNoError )
-            goto error;
-
-        PA_DEBUG(( "after paHostApiInitializers[%d].\n",i));
-
-        if( hostApis_[hostApisCount_] )
-        {
-            PaUtilHostApiRepresentation* hostApi = hostApis_[hostApisCount_];
-            assert( hostApi->info.defaultInputDevice < hostApi->info.deviceCount );
-            assert( hostApi->info.defaultOutputDevice < hostApi->info.deviceCount );
-
-            hostApi->privatePaFrontInfo.baseDeviceIndex = baseDeviceIndex;
-
-            if( hostApi->info.defaultInputDevice != paNoDevice )
-                hostApi->info.defaultInputDevice += baseDeviceIndex;
-
-            if( hostApi->info.defaultOutputDevice != paNoDevice )
-                hostApi->info.defaultOutputDevice += baseDeviceIndex;
-
-            baseDeviceIndex += hostApi->info.deviceCount;
-            deviceCount_ += hostApi->info.deviceCount;
-
-            ++hostApisCount_;
-        }
-    }
-
-    return result;
-
-error:
-    TerminateHostApis();
-    return result;
-}
-
-
-/*
-    FindHostApi() finds the index of the host api to which
-    <device> belongs and returns it. if <hostSpecificDeviceIndex> is
-    non-null, the host specific device index is returned in it.
-    returns -1 if <device> is out of range.
- 
-*/
-static int FindHostApi( PaDeviceIndex device, int *hostSpecificDeviceIndex )
-{
-    int i=0;
-
-    if( !PA_IS_INITIALISED_ )
-        return -1;
-
-    if( device < 0 )
-        return -1;
-
-    while( i < hostApisCount_
-            && device >= hostApis_[i]->info.deviceCount )
-    {
-
-        device -= hostApis_[i]->info.deviceCount;
-        ++i;
-    }
-
-    if( i >= hostApisCount_ )
-        return -1;
-
-    if( hostSpecificDeviceIndex )
-        *hostSpecificDeviceIndex = device;
-
-    return i;
-}
-
-
-static void AddOpenStream( PaStream* stream )
-{
-    ((PaUtilStreamRepresentation*)stream)->nextOpenStream = firstOpenStream_;
-    firstOpenStream_ = (PaUtilStreamRepresentation*)stream;
-}
-
-
-static void RemoveOpenStream( PaStream* stream )
-{
-    PaUtilStreamRepresentation *previous = NULL;
-    PaUtilStreamRepresentation *current = firstOpenStream_;
-
-    while( current != NULL )
-    {
-        if( ((PaStream*)current) == stream )
-        {
-            if( previous == NULL )
-            {
-                firstOpenStream_ = current->nextOpenStream;
-            }
-            else
-            {
-                previous->nextOpenStream = current->nextOpenStream;
-            }
-            return;
-        }
-        else
-        {
-            previous = current;
-            current = current->nextOpenStream;
-        }
-    }
-}
-
-
-static void CloseOpenStreams( void )
-{
-    /* we call Pa_CloseStream() here to ensure that the same destruction
-        logic is used for automatically closed streams */
-
-    while( firstOpenStream_ != NULL )
-        Pa_CloseStream( firstOpenStream_ );
-}
-
-
-PaError Pa_Initialize( void )
-{
-    PaError result;
-
-    PA_LOGAPI_ENTER( "Pa_Initialize" );
-
-    if( PA_IS_INITIALISED_ )
-    {
-        ++initializationCount_;
-        result = paNoError;
-    }
-    else
-    {
-        PA_VALIDATE_TYPE_SIZES;
-        PA_VALIDATE_ENDIANNESS;
-        
-        PaUtil_InitializeClock();
-        PaUtil_ResetTraceMessages();
-
-        result = InitializeHostApis();
-        if( result == paNoError )
-            ++initializationCount_;
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_Initialize", result );
-
-    return result;
-}
-
-
-PaError Pa_Terminate( void )
-{
-    PaError result;
-
-    PA_LOGAPI_ENTER( "Pa_Terminate" );
-
-    if( PA_IS_INITIALISED_ )
-    {
-        if( --initializationCount_ == 0 )
-        {
-            CloseOpenStreams();
-
-            TerminateHostApis();
-
-            PaUtil_DumpTraceMessages();
-        }
-        result = paNoError;
-    }
-    else
-    {
-        result=  paNotInitialized;
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_Terminate", result );
-
-    return result;
-}
-
-
-const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void )
-{
-    return &lastHostErrorInfo_;
-}
-
-
-const char *Pa_GetErrorText( PaError errorCode )
-{
-    const char *result;
-
-    switch( errorCode )
-    {
-    case paNoError:                  result = "Success"; break;
-    case paNotInitialized:           result = "PortAudio not initialized"; break;
-    /** @todo could catenate the last host error text to result in the case of paUnanticipatedHostError */
-    case paUnanticipatedHostError:   result = "Unanticipated host error"; break;
-    case paInvalidChannelCount:      result = "Invalid number of channels"; break;
-    case paInvalidSampleRate:        result = "Invalid sample rate"; break;
-    case paInvalidDevice:            result = "Invalid device"; break;
-    case paInvalidFlag:              result = "Invalid flag"; break;
-    case paSampleFormatNotSupported: result = "Sample format not supported"; break;
-    case paBadIODeviceCombination:   result = "Illegal combination of I/O devices"; break;
-    case paInsufficientMemory:       result = "Insufficient memory"; break;
-    case paBufferTooBig:             result = "Buffer too big"; break;
-    case paBufferTooSmall:           result = "Buffer too small"; break;
-    case paNullCallback:             result = "No callback routine specified"; break;
-    case paBadStreamPtr:             result = "Invalid stream pointer"; break;
-    case paTimedOut:                 result = "Wait timed out"; break;
-    case paInternalError:            result = "Internal PortAudio error"; break;
-    case paDeviceUnavailable:        result = "Device unavailable"; break;
-    case paIncompatibleHostApiSpecificStreamInfo:   result = "Incompatible host API specific stream info"; break;
-    case paStreamIsStopped:          result = "Stream is stopped"; break;
-    case paStreamIsNotStopped:       result = "Stream is not stopped"; break;
-    case paInputOverflowed:          result = "Input overflowed"; break;
-    case paOutputUnderflowed:        result = "Output underflowed"; break;
-    case paHostApiNotFound:          result = "Host API not found"; break;
-    case paInvalidHostApi:           result = "Invalid host API"; break;
-    case paCanNotReadFromACallbackStream:       result = "Can't read from a callback stream"; break;
-    case paCanNotWriteToACallbackStream:        result = "Can't write to a callback stream"; break;
-    case paCanNotReadFromAnOutputOnlyStream:    result = "Can't read from an output only stream"; break;
-    case paCanNotWriteToAnInputOnlyStream:      result = "Can't write to an input only stream"; break;
-    default:                         
-		if( errorCode > 0 )
-			result = "Invalid error code (value greater than zero)"; 
-        else
-			result = "Invalid error code"; 
-        break;
-    }
-    return result;
-}
-
-
-PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type )
-{
-    PaHostApiIndex result;
-    int i;
-    
-    PA_LOGAPI_ENTER_PARAMS( "Pa_HostApiTypeIdToHostApiIndex" );
-    PA_LOGAPI(("\tPaHostApiTypeId type: %d\n", type ));
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        result = paHostApiNotFound;
-        
-        for( i=0; i < hostApisCount_; ++i )
-        {
-            if( hostApis_[i]->info.type == type )
-            {
-                result = i;
-                break;
-            }         
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_HostApiTypeIdToHostApiIndex", "PaHostApiIndex: %d", result );
-
-    return result;
-}
-
-
-PaError PaUtil_GetHostApiRepresentation( struct PaUtilHostApiRepresentation **hostApi,
-        PaHostApiTypeId type )
-{
-    PaError result;
-    int i;
-    
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        result = paHostApiNotFound;
-                
-        for( i=0; i < hostApisCount_; ++i )
-        {
-            if( hostApis_[i]->info.type == type )
-            {
-                *hostApi = hostApis_[i];
-                result = paNoError;
-                break;
-            }
-        }
-    }
-
-    return result;
-}
-
-
-PaError PaUtil_DeviceIndexToHostApiDeviceIndex(
-        PaDeviceIndex *hostApiDevice, PaDeviceIndex device, struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaError result;
-    PaDeviceIndex x;
-    
-    x = device - hostApi->privatePaFrontInfo.baseDeviceIndex;
-
-    if( x < 0 || x >= hostApi->info.deviceCount )
-    {
-        result = paInvalidDevice;
-    }
-    else
-    {
-        *hostApiDevice = x;
-        result = paNoError;
-    }
-
-    return result;
-}
-
-
-PaHostApiIndex Pa_GetHostApiCount( void )
-{
-    int result;
-
-    PA_LOGAPI_ENTER( "Pa_GetHostApiCount" );
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        result = hostApisCount_;
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_GetHostApiCount", "PaHostApiIndex: %d", result );
-
-    return result;
-}
-
-
-PaHostApiIndex Pa_GetDefaultHostApi( void )
-{
-    int result;
-
-    PA_LOGAPI_ENTER( "Pa_GetDefaultHostApi" );
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        result = paDefaultHostApiIndex;
-
-        /* internal consistency check: make sure that the default host api
-         index is within range */
-
-        if( result < 0 || result >= hostApisCount_ )
-        {
-            result = paInternalError;
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_GetDefaultHostApi", "PaHostApiIndex: %d", result );
-
-    return result;
-}
-
-
-const PaHostApiInfo* Pa_GetHostApiInfo( PaHostApiIndex hostApi )
-{
-    PaHostApiInfo *info;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetHostApiInfo" );
-    PA_LOGAPI(("\tPaHostApiIndex hostApi: %d\n", hostApi ));
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        info = NULL;
-
-        PA_LOGAPI(("Pa_GetHostApiInfo returned:\n" ));
-        PA_LOGAPI(("\tPaHostApiInfo*: NULL [ PortAudio not initialized ]\n" ));
-
-    }
-    else if( hostApi < 0 || hostApi >= hostApisCount_ )
-    {
-        info = NULL;
-        
-        PA_LOGAPI(("Pa_GetHostApiInfo returned:\n" ));
-        PA_LOGAPI(("\tPaHostApiInfo*: NULL [ hostApi out of range ]\n" ));
-
-    }
-    else
-    {
-        info = &hostApis_[hostApi]->info;
-
-        PA_LOGAPI(("Pa_GetHostApiInfo returned:\n" ));
-        PA_LOGAPI(("\tPaHostApiInfo*: 0x%p\n", info ));
-        PA_LOGAPI(("\t{\n" ));
-        PA_LOGAPI(("\t\tint structVersion: %d\n", info->structVersion ));
-        PA_LOGAPI(("\t\tPaHostApiTypeId type: %d\n", info->type ));
-        PA_LOGAPI(("\t\tconst char *name: %s\n", info->name ));
-        PA_LOGAPI(("\t}\n" ));
-
-    }
-
-     return info;
-}
-
-
-PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi, int hostApiDeviceIndex )
-{
-    PaDeviceIndex result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_HostApiDeviceIndexToPaDeviceIndex" );
-    PA_LOGAPI(("\tPaHostApiIndex hostApi: %d\n", hostApi ));
-    PA_LOGAPI(("\tint hostApiDeviceIndex: %d\n", hostApiDeviceIndex ));
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        if( hostApi < 0 || hostApi >= hostApisCount_ )
-        {
-            result = paInvalidHostApi;
-        }
-        else
-        {
-            if( hostApiDeviceIndex < 0 ||
-                    hostApiDeviceIndex >= hostApis_[hostApi]->info.deviceCount )
-            {
-                result = paInvalidDevice;
-            }
-            else
-            {
-                result = hostApis_[hostApi]->privatePaFrontInfo.baseDeviceIndex + hostApiDeviceIndex;
-            }
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_HostApiDeviceIndexToPaDeviceIndex", "PaDeviceIndex: %d", result );
-
-    return result;
-}
-
-
-PaDeviceIndex Pa_GetDeviceCount( void )
-{
-    PaDeviceIndex result;
-
-    PA_LOGAPI_ENTER( "Pa_GetDeviceCount" );
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-    }
-    else
-    {
-        result = deviceCount_;
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_GetDeviceCount", "PaDeviceIndex: %d", result );
-
-    return result;
-}
-
-
-PaDeviceIndex Pa_GetDefaultInputDevice( void )
-{
-    PaHostApiIndex hostApi;
-    PaDeviceIndex result;
-
-    PA_LOGAPI_ENTER( "Pa_GetDefaultInputDevice" );
-
-    hostApi = Pa_GetDefaultHostApi();
-    if( hostApi < 0 )
-    {
-        result = paNoDevice;
-    }
-    else
-    {
-        result = hostApis_[hostApi]->info.defaultInputDevice;
-    }
-
-    PA_LOGAPI_EXIT_T( "Pa_GetDefaultInputDevice", "PaDeviceIndex: %d", result );
-
-    return result;
-}
-
-
-PaDeviceIndex Pa_GetDefaultOutputDevice( void )
-{
-    PaHostApiIndex hostApi;
-    PaDeviceIndex result;
-    
-    PA_LOGAPI_ENTER( "Pa_GetDefaultOutputDevice" );
-
-    hostApi = Pa_GetDefaultHostApi();
-    if( hostApi < 0 )
-    {
-        result = paNoDevice;
-    }
-    else
-    {
-        result = hostApis_[hostApi]->info.defaultOutputDevice;
-    }
-
-    PA_LOGAPI_EXIT_T( "Pa_GetDefaultOutputDevice", "PaDeviceIndex: %d", result );
-
-    return result;
-}
-
-
-const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device )
-{
-    int hostSpecificDeviceIndex;
-    int hostApiIndex = FindHostApi( device, &hostSpecificDeviceIndex );
-    PaDeviceInfo *result;
-
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetDeviceInfo" );
-    PA_LOGAPI(("\tPaDeviceIndex device: %d\n", device ));
-
-    if( hostApiIndex < 0 )
-    {
-        result = NULL;
-
-        PA_LOGAPI(("Pa_GetDeviceInfo returned:\n" ));
-        PA_LOGAPI(("\tPaDeviceInfo* NULL [ invalid device index ]\n" ));
-
-    }
-    else
-    {
-        result = hostApis_[hostApiIndex]->deviceInfos[ hostSpecificDeviceIndex ];
-
-        PA_LOGAPI(("Pa_GetDeviceInfo returned:\n" ));
-        PA_LOGAPI(("\tPaDeviceInfo*: 0x%p:\n", result ));
-        PA_LOGAPI(("\t{\n" ));
-
-        PA_LOGAPI(("\t\tint structVersion: %d\n", result->structVersion ));
-        PA_LOGAPI(("\t\tconst char *name: %s\n", result->name ));
-        PA_LOGAPI(("\t\tPaHostApiIndex hostApi: %d\n", result->hostApi ));
-        PA_LOGAPI(("\t\tint maxInputChannels: %d\n", result->maxInputChannels ));
-        PA_LOGAPI(("\t\tint maxOutputChannels: %d\n", result->maxOutputChannels ));
-        PA_LOGAPI(("\t}\n" ));
-
-    }
-
-    return result;
-}
-
-
-/*
-    SampleFormatIsValid() returns 1 if sampleFormat is a sample format
-    defined in portaudio.h, or 0 otherwise.
-*/
-static int SampleFormatIsValid( PaSampleFormat format )
-{
-    switch( format & ~paNonInterleaved )
-    {
-    case paFloat32: return 1;
-    case paInt16: return 1;
-    case paInt32: return 1;
-    case paInt24: return 1;
-    case paInt8: return 1;
-    case paUInt8: return 1;
-    case paCustomFormat: return 1;
-    default: return 0;
-    }
-}
-
-/*
-    NOTE: make sure this validation list is kept syncronised with the one in
-            pa_hostapi.h
-
-    ValidateOpenStreamParameters() checks that parameters to Pa_OpenStream()
-    conform to the expected values as described below. This function is
-    also designed to be used with the proposed Pa_IsFormatSupported() function.
-    
-    There are basically two types of validation that could be performed:
-    Generic conformance validation, and device capability mismatch
-    validation. This function performs only generic conformance validation.
-    Validation that would require knowledge of device capabilities is
-    not performed because of potentially complex relationships between
-    combinations of parameters - for example, even if the sampleRate
-    seems ok, it might not be for a duplex stream - we have no way of
-    checking this in an API-neutral way, so we don't try.
- 
-    On success the function returns PaNoError and fills in hostApi,
-    hostApiInputDeviceID, and hostApiOutputDeviceID fields. On failure
-    the function returns an error code indicating the first encountered
-    parameter error.
- 
- 
-    If ValidateOpenStreamParameters() returns paNoError, the following
-    assertions are guaranteed to be true.
- 
-    - at least one of inputParameters & outputParmeters is valid (not NULL)
-
-    - if inputParameters & outputParameters are both valid, that
-        inputParameters->device & outputParameters->device  both use the same host api
- 
-    PaDeviceIndex inputParameters->device
-        - is within range (0 to Pa_GetDeviceCount-1) Or:
-        - is paUseHostApiSpecificDeviceSpecification and
-            inputParameters->hostApiSpecificStreamInfo is non-NULL and refers
-            to a valid host api
-
-    int inputParameters->channelCount
-        - if inputParameters->device is not paUseHostApiSpecificDeviceSpecification, channelCount is > 0
-        - upper bound is NOT validated against device capabilities
- 
-    PaSampleFormat inputParameters->sampleFormat
-        - is one of the sample formats defined in portaudio.h
-
-    void *inputParameters->hostApiSpecificStreamInfo
-        - if supplied its hostApi field matches the input device's host Api
- 
-    PaDeviceIndex outputParmeters->device
-        - is within range (0 to Pa_GetDeviceCount-1)
- 
-    int outputParmeters->channelCount
-        - if inputDevice is valid, channelCount is > 0
-        - upper bound is NOT validated against device capabilities
- 
-    PaSampleFormat outputParmeters->sampleFormat
-        - is one of the sample formats defined in portaudio.h
-        
-    void *outputParmeters->hostApiSpecificStreamInfo
-        - if supplied its hostApi field matches the output device's host Api
- 
-    double sampleRate
-        - is not an 'absurd' rate (less than 1000. or greater than 200000.)
-        - sampleRate is NOT validated against device capabilities
- 
-    PaStreamFlags streamFlags
-        - unused platform neutral flags are zero
-        - paNeverDropInput is only used for full-duplex callback streams with
-            variable buffer size (paFramesPerBufferUnspecified)
-*/
-static PaError ValidateOpenStreamParameters(
-    const PaStreamParameters *inputParameters,
-    const PaStreamParameters *outputParameters,
-    double sampleRate,
-    unsigned long framesPerBuffer,
-    PaStreamFlags streamFlags,
-    PaStreamCallback *streamCallback,
-    PaUtilHostApiRepresentation **hostApi,
-    PaDeviceIndex *hostApiInputDevice,
-    PaDeviceIndex *hostApiOutputDevice )
-{
-    int inputHostApiIndex  = -1, /* Surpress uninitialised var warnings: compiler does */
-        outputHostApiIndex = -1; /* not see that if inputParameters and outputParame-  */
-                                 /* ters are both nonzero, these indices are set.      */
-
-    if( (inputParameters == NULL) && (outputParameters == NULL) )
-    {
-        return paInvalidDevice; /** @todo should be a new error code "invalid device parameters" or something */
-    }
-    else
-    {
-        if( inputParameters == NULL )
-        {
-            *hostApiInputDevice = paNoDevice;
-        }
-        else if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-        {
-            if( inputParameters->hostApiSpecificStreamInfo )
-            {
-                inputHostApiIndex = Pa_HostApiTypeIdToHostApiIndex(
-                        ((PaUtilHostApiSpecificStreamInfoHeader*)inputParameters->hostApiSpecificStreamInfo)->hostApiType );
-
-                if( inputHostApiIndex != -1 )
-                {
-                    *hostApiInputDevice = paUseHostApiSpecificDeviceSpecification;
-                    *hostApi = hostApis_[inputHostApiIndex];
-                }
-                else
-                {
-                    return paInvalidDevice;
-                }
-            }
-            else
-            {
-                return paInvalidDevice;
-            }
-        }
-        else
-        {
-            if( inputParameters->device < 0 || inputParameters->device >= deviceCount_ )
-                return paInvalidDevice;
-
-            inputHostApiIndex = FindHostApi( inputParameters->device, hostApiInputDevice );
-            if( inputHostApiIndex < 0 )
-                return paInternalError;
-
-            *hostApi = hostApis_[inputHostApiIndex];
-
-            if( inputParameters->channelCount <= 0 )
-                return paInvalidChannelCount;
-
-            if( !SampleFormatIsValid( inputParameters->sampleFormat ) )
-                return paSampleFormatNotSupported;
-
-            if( inputParameters->hostApiSpecificStreamInfo != NULL )
-            {
-                if( ((PaUtilHostApiSpecificStreamInfoHeader*)inputParameters->hostApiSpecificStreamInfo)->hostApiType
-                        != (*hostApi)->info.type )
-                    return paIncompatibleHostApiSpecificStreamInfo;
-            }
-        }
-
-        if( outputParameters == NULL )
-        {
-            *hostApiOutputDevice = paNoDevice;
-        }
-        else if( outputParameters->device == paUseHostApiSpecificDeviceSpecification  )
-        {
-            if( outputParameters->hostApiSpecificStreamInfo )
-            {
-                outputHostApiIndex = Pa_HostApiTypeIdToHostApiIndex(
-                        ((PaUtilHostApiSpecificStreamInfoHeader*)outputParameters->hostApiSpecificStreamInfo)->hostApiType );
-
-                if( outputHostApiIndex != -1 )
-                {
-                    *hostApiOutputDevice = paUseHostApiSpecificDeviceSpecification;
-                    *hostApi = hostApis_[outputHostApiIndex];
-                }
-                else
-                {
-                    return paInvalidDevice;
-                }
-            }
-            else
-            {
-                return paInvalidDevice;
-            }
-        }
-        else
-        {
-            if( outputParameters->device < 0 || outputParameters->device >= deviceCount_ )
-                return paInvalidDevice;
-
-            outputHostApiIndex = FindHostApi( outputParameters->device, hostApiOutputDevice );
-            if( outputHostApiIndex < 0 )
-                return paInternalError;
-
-            *hostApi = hostApis_[outputHostApiIndex];
-
-            if( outputParameters->channelCount <= 0 )
-                return paInvalidChannelCount;
-
-            if( !SampleFormatIsValid( outputParameters->sampleFormat ) )
-                return paSampleFormatNotSupported;
-
-            if( outputParameters->hostApiSpecificStreamInfo != NULL )
-            {
-                if( ((PaUtilHostApiSpecificStreamInfoHeader*)outputParameters->hostApiSpecificStreamInfo)->hostApiType
-                        != (*hostApi)->info.type )
-                    return paIncompatibleHostApiSpecificStreamInfo;
-            }
-        }   
-
-        if( (inputParameters != NULL) && (outputParameters != NULL) )
-        {
-            /* ensure that both devices use the same API */
-            if( inputHostApiIndex != outputHostApiIndex )
-                return paBadIODeviceCombination;
-        }
-    }
-    
-    
-    /* Check for absurd sample rates. */
-    if( (sampleRate < 1000.0) || (sampleRate > 200000.0) )
-        return paInvalidSampleRate;
-
-    if( ((streamFlags & ~paPlatformSpecificFlags) & ~(paClipOff | paDitherOff | paNeverDropInput | paPrimeOutputBuffersUsingStreamCallback ) ) != 0 )
-        return paInvalidFlag;
-
-    if( streamFlags & paNeverDropInput )
-    {
-        /* must be a callback stream */
-        if( !streamCallback )
-             return paInvalidFlag;
-
-        /* must be a full duplex stream */
-        if( (inputParameters == NULL) || (outputParameters == NULL) )
-            return paInvalidFlag;
-
-        /* must use paFramesPerBufferUnspecified */
-        if( framesPerBuffer != paFramesPerBufferUnspecified )
-            return paInvalidFlag;
-    }
-    
-    return paNoError;
-}
-
-
-PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters,
-                              const PaStreamParameters *outputParameters,
-                              double sampleRate )
-{
-    PaError result;
-    PaUtilHostApiRepresentation *hostApi = 0;
-    PaDeviceIndex hostApiInputDevice = paNoDevice, hostApiOutputDevice = paNoDevice;
-    PaStreamParameters hostApiInputParameters, hostApiOutputParameters;
-    PaStreamParameters *hostApiInputParametersPtr, *hostApiOutputParametersPtr;
-
-
-#ifdef PA_LOG_API_CALLS
-    PA_LOGAPI_ENTER_PARAMS( "Pa_IsFormatSupported" );
-
-    if( inputParameters == NULL ){
-        PA_LOGAPI(("\tPaStreamParameters *inputParameters: NULL\n" ));
-    }else{
-        PA_LOGAPI(("\tPaStreamParameters *inputParameters: 0x%p\n", inputParameters ));
-        PA_LOGAPI(("\tPaDeviceIndex inputParameters->device: %d\n", inputParameters->device ));
-        PA_LOGAPI(("\tint inputParameters->channelCount: %d\n", inputParameters->channelCount ));
-        PA_LOGAPI(("\tPaSampleFormat inputParameters->sampleFormat: %d\n", inputParameters->sampleFormat ));
-        PA_LOGAPI(("\tPaTime inputParameters->suggestedLatency: %f\n", inputParameters->suggestedLatency ));
-        PA_LOGAPI(("\tvoid *inputParameters->hostApiSpecificStreamInfo: 0x%p\n", inputParameters->hostApiSpecificStreamInfo ));
-    }
-
-    if( outputParameters == NULL ){
-        PA_LOGAPI(("\tPaStreamParameters *outputParameters: NULL\n" ));
-    }else{
-        PA_LOGAPI(("\tPaStreamParameters *outputParameters: 0x%p\n", outputParameters ));
-        PA_LOGAPI(("\tPaDeviceIndex outputParameters->device: %d\n", outputParameters->device ));
-        PA_LOGAPI(("\tint outputParameters->channelCount: %d\n", outputParameters->channelCount ));
-        PA_LOGAPI(("\tPaSampleFormat outputParameters->sampleFormat: %d\n", outputParameters->sampleFormat ));
-        PA_LOGAPI(("\tPaTime outputParameters->suggestedLatency: %f\n", outputParameters->suggestedLatency ));
-        PA_LOGAPI(("\tvoid *outputParameters->hostApiSpecificStreamInfo: 0x%p\n", outputParameters->hostApiSpecificStreamInfo ));
-    }
-    
-    PA_LOGAPI(("\tdouble sampleRate: %g\n", sampleRate ));
-#endif
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-
-        PA_LOGAPI_EXIT_PAERROR( "Pa_IsFormatSupported", result );
-        return result;
-    }
-
-    result = ValidateOpenStreamParameters( inputParameters,
-                                           outputParameters,
-                                           sampleRate, 0, paNoFlag, 0,
-                                           &hostApi,
-                                           &hostApiInputDevice,
-                                           &hostApiOutputDevice );
-    if( result != paNoError )
-    {
-        PA_LOGAPI_EXIT_PAERROR( "Pa_IsFormatSupported", result );
-        return result;
-    }
-    
-
-    if( inputParameters )
-    {
-        hostApiInputParameters.device = hostApiInputDevice;
-        hostApiInputParameters.channelCount = inputParameters->channelCount;
-        hostApiInputParameters.sampleFormat = inputParameters->sampleFormat;
-        hostApiInputParameters.suggestedLatency = inputParameters->suggestedLatency;
-        hostApiInputParameters.hostApiSpecificStreamInfo = inputParameters->hostApiSpecificStreamInfo;
-        hostApiInputParametersPtr = &hostApiInputParameters;
-    }
-    else
-    {
-        hostApiInputParametersPtr = NULL;
-    }
-
-    if( outputParameters )
-    {
-        hostApiOutputParameters.device = hostApiOutputDevice;
-        hostApiOutputParameters.channelCount = outputParameters->channelCount;
-        hostApiOutputParameters.sampleFormat = outputParameters->sampleFormat;
-        hostApiOutputParameters.suggestedLatency = outputParameters->suggestedLatency;
-        hostApiOutputParameters.hostApiSpecificStreamInfo = outputParameters->hostApiSpecificStreamInfo;
-        hostApiOutputParametersPtr = &hostApiOutputParameters;
-    }
-    else
-    {
-        hostApiOutputParametersPtr = NULL;
-    }
-
-    result = hostApi->IsFormatSupported( hostApi,
-                                  hostApiInputParametersPtr, hostApiOutputParametersPtr,
-                                  sampleRate );
-
-#ifdef PA_LOG_API_CALLS
-    PA_LOGAPI(("Pa_OpenStream returned:\n" ));
-    if( result == paFormatIsSupported )
-        PA_LOGAPI(("\tPaError: 0 [ paFormatIsSupported ]\n" ));
-    else
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-#endif
-
-    return result;
-}
-
-
-PaError Pa_OpenStream( PaStream** stream,
-                       const PaStreamParameters *inputParameters,
-                       const PaStreamParameters *outputParameters,
-                       double sampleRate,
-                       unsigned long framesPerBuffer,
-                       PaStreamFlags streamFlags,
-                       PaStreamCallback *streamCallback,
-                       void *userData )
-{
-    PaError result;
-    PaUtilHostApiRepresentation *hostApi = 0;
-    PaDeviceIndex hostApiInputDevice = paNoDevice, hostApiOutputDevice = paNoDevice;
-    PaStreamParameters hostApiInputParameters, hostApiOutputParameters;
-    PaStreamParameters *hostApiInputParametersPtr, *hostApiOutputParametersPtr;
-
-
-#ifdef PA_LOG_API_CALLS
-    PA_LOGAPI_ENTER_PARAMS( "Pa_OpenStream" );
-    PA_LOGAPI(("\tPaStream** stream: 0x%p\n", stream ));
-
-    if( inputParameters == NULL ){
-        PA_LOGAPI(("\tPaStreamParameters *inputParameters: NULL\n" ));
-    }else{
-        PA_LOGAPI(("\tPaStreamParameters *inputParameters: 0x%p\n", inputParameters ));
-        PA_LOGAPI(("\tPaDeviceIndex inputParameters->device: %d\n", inputParameters->device ));
-        PA_LOGAPI(("\tint inputParameters->channelCount: %d\n", inputParameters->channelCount ));
-        PA_LOGAPI(("\tPaSampleFormat inputParameters->sampleFormat: %d\n", inputParameters->sampleFormat ));
-        PA_LOGAPI(("\tPaTime inputParameters->suggestedLatency: %f\n", inputParameters->suggestedLatency ));
-        PA_LOGAPI(("\tvoid *inputParameters->hostApiSpecificStreamInfo: 0x%p\n", inputParameters->hostApiSpecificStreamInfo ));
-    }
-
-    if( outputParameters == NULL ){
-        PA_LOGAPI(("\tPaStreamParameters *outputParameters: NULL\n" ));
-    }else{
-        PA_LOGAPI(("\tPaStreamParameters *outputParameters: 0x%p\n", outputParameters ));
-        PA_LOGAPI(("\tPaDeviceIndex outputParameters->device: %d\n", outputParameters->device ));
-        PA_LOGAPI(("\tint outputParameters->channelCount: %d\n", outputParameters->channelCount ));
-        PA_LOGAPI(("\tPaSampleFormat outputParameters->sampleFormat: %d\n", outputParameters->sampleFormat ));
-        PA_LOGAPI(("\tPaTime outputParameters->suggestedLatency: %f\n", outputParameters->suggestedLatency ));
-        PA_LOGAPI(("\tvoid *outputParameters->hostApiSpecificStreamInfo: 0x%p\n", outputParameters->hostApiSpecificStreamInfo ));
-    }
-    
-    PA_LOGAPI(("\tdouble sampleRate: %g\n", sampleRate ));
-    PA_LOGAPI(("\tunsigned long framesPerBuffer: %d\n", framesPerBuffer ));
-    PA_LOGAPI(("\tPaStreamFlags streamFlags: 0x%x\n", streamFlags ));
-    PA_LOGAPI(("\tPaStreamCallback *streamCallback: 0x%p\n", streamCallback ));
-    PA_LOGAPI(("\tvoid *userData: 0x%p\n", userData ));
-#endif
-
-    if( !PA_IS_INITIALISED_ )
-    {
-        result = paNotInitialized;
-
-        PA_LOGAPI(("Pa_OpenStream returned:\n" ));
-        PA_LOGAPI(("\t*(PaStream** stream): undefined\n" ));
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-        return result;
-    }
-
-    /* Check for parameter errors.
-        NOTE: make sure this validation list is kept syncronised with the one
-        in pa_hostapi.h
-    */
-
-    if( stream == NULL )
-    {
-        result = paBadStreamPtr;
-
-        PA_LOGAPI(("Pa_OpenStream returned:\n" ));
-        PA_LOGAPI(("\t*(PaStream** stream): undefined\n" ));
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-        return result;
-    }
-
-    result = ValidateOpenStreamParameters( inputParameters,
-                                           outputParameters,
-                                           sampleRate, framesPerBuffer,
-                                           streamFlags, streamCallback,
-                                           &hostApi,
-                                           &hostApiInputDevice,
-                                           &hostApiOutputDevice );
-    if( result != paNoError )
-    {
-        PA_LOGAPI(("Pa_OpenStream returned:\n" ));
-        PA_LOGAPI(("\t*(PaStream** stream): undefined\n" ));
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-        return result;
-    }
-    
-
-    if( inputParameters )
-    {
-        hostApiInputParameters.device = hostApiInputDevice;
-        hostApiInputParameters.channelCount = inputParameters->channelCount;
-        hostApiInputParameters.sampleFormat = inputParameters->sampleFormat;
-        hostApiInputParameters.suggestedLatency = inputParameters->suggestedLatency;
-        hostApiInputParameters.hostApiSpecificStreamInfo = inputParameters->hostApiSpecificStreamInfo;
-        hostApiInputParametersPtr = &hostApiInputParameters;
-    }
-    else
-    {
-        hostApiInputParametersPtr = NULL;
-    }
-
-    if( outputParameters )
-    {
-        hostApiOutputParameters.device = hostApiOutputDevice;
-        hostApiOutputParameters.channelCount = outputParameters->channelCount;
-        hostApiOutputParameters.sampleFormat = outputParameters->sampleFormat;
-        hostApiOutputParameters.suggestedLatency = outputParameters->suggestedLatency;
-        hostApiOutputParameters.hostApiSpecificStreamInfo = outputParameters->hostApiSpecificStreamInfo;
-        hostApiOutputParametersPtr = &hostApiOutputParameters;
-    }
-    else
-    {
-        hostApiOutputParametersPtr = NULL;
-    }
-
-    result = hostApi->OpenStream( hostApi, stream,
-                                  hostApiInputParametersPtr, hostApiOutputParametersPtr,
-                                  sampleRate, framesPerBuffer, streamFlags, streamCallback, userData );
-
-    if( result == paNoError )
-        AddOpenStream( *stream );
-
-
-    PA_LOGAPI(("Pa_OpenStream returned:\n" ));
-    PA_LOGAPI(("\t*(PaStream** stream): 0x%p\n", *stream ));
-    PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-
-    return result;
-}
-
-
-PaError Pa_OpenDefaultStream( PaStream** stream,
-                              int inputChannelCount,
-                              int outputChannelCount,
-                              PaSampleFormat sampleFormat,
-                              double sampleRate,
-                              unsigned long framesPerBuffer,
-                              PaStreamCallback *streamCallback,
-                              void *userData )
-{
-    PaError result;
-    PaStreamParameters hostApiInputParameters, hostApiOutputParameters;
-    PaStreamParameters *hostApiInputParametersPtr, *hostApiOutputParametersPtr;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_OpenDefaultStream" );
-    PA_LOGAPI(("\tPaStream** stream: 0x%p\n", stream ));
-    PA_LOGAPI(("\tint inputChannelCount: %d\n", inputChannelCount ));
-    PA_LOGAPI(("\tint outputChannelCount: %d\n", outputChannelCount ));
-    PA_LOGAPI(("\tPaSampleFormat sampleFormat: %d\n", sampleFormat ));
-    PA_LOGAPI(("\tdouble sampleRate: %g\n", sampleRate ));
-    PA_LOGAPI(("\tunsigned long framesPerBuffer: %d\n", framesPerBuffer ));
-    PA_LOGAPI(("\tPaStreamCallback *streamCallback: 0x%p\n", streamCallback ));
-    PA_LOGAPI(("\tvoid *userData: 0x%p\n", userData ));
-
-
-    if( inputChannelCount > 0 )
-    {
-        hostApiInputParameters.device = Pa_GetDefaultInputDevice();
-		if( hostApiInputParameters.device == paNoDevice )
-			return paDeviceUnavailable; 
-	
-        hostApiInputParameters.channelCount = inputChannelCount;
-        hostApiInputParameters.sampleFormat = sampleFormat;
-        /* defaultHighInputLatency is used below instead of
-           defaultLowInputLatency because it is more important for the default
-           stream to work reliably than it is for it to work with the lowest
-           latency.
-         */
-        hostApiInputParameters.suggestedLatency = 
-             Pa_GetDeviceInfo( hostApiInputParameters.device )->defaultHighInputLatency;
-        hostApiInputParameters.hostApiSpecificStreamInfo = NULL;
-        hostApiInputParametersPtr = &hostApiInputParameters;
-    }
-    else
-    {
-        hostApiInputParametersPtr = NULL;
-    }
-
-    if( outputChannelCount > 0 )
-    {
-        hostApiOutputParameters.device = Pa_GetDefaultOutputDevice();
-		if( hostApiOutputParameters.device == paNoDevice )
-			return paDeviceUnavailable; 
-
-        hostApiOutputParameters.channelCount = outputChannelCount;
-        hostApiOutputParameters.sampleFormat = sampleFormat;
-        /* defaultHighOutputLatency is used below instead of
-           defaultLowOutputLatency because it is more important for the default
-           stream to work reliably than it is for it to work with the lowest
-           latency.
-         */
-        hostApiOutputParameters.suggestedLatency =
-             Pa_GetDeviceInfo( hostApiOutputParameters.device )->defaultHighOutputLatency;
-        hostApiOutputParameters.hostApiSpecificStreamInfo = NULL;
-        hostApiOutputParametersPtr = &hostApiOutputParameters;
-    }
-    else
-    {
-        hostApiOutputParametersPtr = NULL;
-    }
-
-
-    result = Pa_OpenStream(
-                 stream, hostApiInputParametersPtr, hostApiOutputParametersPtr,
-                 sampleRate, framesPerBuffer, paNoFlag, streamCallback, userData );
-
-    PA_LOGAPI(("Pa_OpenDefaultStream returned:\n" ));
-    PA_LOGAPI(("\t*(PaStream** stream): 0x%p", *stream ));
-    PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-
-    return result;
-}
-
-
-PaError PaUtil_ValidateStreamPointer( PaStream* stream )
-{
-    if( !PA_IS_INITIALISED_ ) return paNotInitialized;
-
-    if( stream == NULL ) return paBadStreamPtr;
-
-    if( ((PaUtilStreamRepresentation*)stream)->magic != PA_STREAM_MAGIC )
-        return paBadStreamPtr;
-
-    return paNoError;
-}
-
-
-PaError Pa_CloseStream( PaStream* stream )
-{
-    PaUtilStreamInterface *interface;
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_CloseStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    /* always remove the open stream from our list, even if this function
-        eventually returns an error. Otherwise CloseOpenStreams() will
-        get stuck in an infinite loop */
-    RemoveOpenStream( stream ); /* be sure to call this _before_ closing the stream */
-
-    if( result == paNoError )
-    {
-        interface = PA_STREAM_INTERFACE(stream);
-
-        /* abort the stream if it isn't stopped */
-        result = interface->IsStopped( stream );
-        if( result == 1 )
-            result = paNoError;
-        else if( result == 0 )
-            result = interface->Abort( stream );
-
-        if( result == paNoError )                 /** @todo REVIEW: shouldn't we close anyway? */
-            result = interface->Close( stream );
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_CloseStream", result );
-
-    return result;
-}
-
-
-PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_SetStreamFinishedCallback" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-    PA_LOGAPI(("\tPaStreamFinishedCallback* streamFinishedCallback: 0x%p\n", streamFinishedCallback ));
-
-    if( result == paNoError )
-    {
-        result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-        if( result == 0 )
-        {
-            result = paStreamIsNotStopped ;
-        }
-        if( result == 1 )
-        {
-            PA_STREAM_REP( stream )->streamFinishedCallback = streamFinishedCallback;
-            result = paNoError;
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_SetStreamFinishedCallback", result );
-
-    return result;
-
-}
-
-
-PaError Pa_StartStream( PaStream *stream )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_StartStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-    {
-        result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-        if( result == 0 )
-        {
-            result = paStreamIsNotStopped ;
-        }
-        else if( result == 1 )
-        {
-            result = PA_STREAM_INTERFACE(stream)->Start( stream );
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_StartStream", result );
-
-    return result;
-}
-
-
-PaError Pa_StopStream( PaStream *stream )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_StopStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-    {
-        result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-        if( result == 0 )
-        {
-            result = PA_STREAM_INTERFACE(stream)->Stop( stream );
-        }
-        else if( result == 1 )
-        {
-            result = paStreamIsStopped;
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_StopStream", result );
-
-    return result;
-}
-
-
-PaError Pa_AbortStream( PaStream *stream )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_AbortStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-    {
-        result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-        if( result == 0 )
-        {
-            result = PA_STREAM_INTERFACE(stream)->Abort( stream );
-        }
-        else if( result == 1 )
-        {
-            result = paStreamIsStopped;
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_AbortStream", result );
-
-    return result;
-}
-
-
-PaError Pa_IsStreamStopped( PaStream *stream )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_IsStreamStopped" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-        result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_IsStreamStopped", result );
-
-    return result;
-}
-
-
-PaError Pa_IsStreamActive( PaStream *stream )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_IsStreamActive" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-        result = PA_STREAM_INTERFACE(stream)->IsActive( stream );
-
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_IsStreamActive", result );
-
-    return result;
-}
-
-
-const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream )
-{
-    PaError error = PaUtil_ValidateStreamPointer( stream );
-    const PaStreamInfo *result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetStreamInfo" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( error != paNoError )
-    {
-        result = 0;
-
-        PA_LOGAPI(("Pa_GetStreamInfo returned:\n" ));
-        PA_LOGAPI(("\tconst PaStreamInfo*: 0 [PaError error:%d ( %s )]\n", result, error, Pa_GetErrorText( error ) ));
-
-    }
-    else
-    {
-        result = &PA_STREAM_REP( stream )->streamInfo;
-
-        PA_LOGAPI(("Pa_GetStreamInfo returned:\n" ));
-        PA_LOGAPI(("\tconst PaStreamInfo*: 0x%p:\n", result ));
-        PA_LOGAPI(("\t{" ));
-
-        PA_LOGAPI(("\t\tint structVersion: %d\n", result->structVersion ));
-        PA_LOGAPI(("\t\tPaTime inputLatency: %f\n", result->inputLatency ));
-        PA_LOGAPI(("\t\tPaTime outputLatency: %f\n", result->outputLatency ));
-        PA_LOGAPI(("\t\tdouble sampleRate: %f\n", result->sampleRate ));
-        PA_LOGAPI(("\t}\n" ));
-
-    }
-
-    return result;
-}
-
-
-PaTime Pa_GetStreamTime( PaStream *stream )
-{
-    PaError error = PaUtil_ValidateStreamPointer( stream );
-    PaTime result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetStreamTime" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( error != paNoError )
-    {
-        result = 0;
-
-        PA_LOGAPI(("Pa_GetStreamTime returned:\n" ));
-        PA_LOGAPI(("\tPaTime: 0 [PaError error:%d ( %s )]\n", result, error, Pa_GetErrorText( error ) ));
-
-    }
-    else
-    {
-        result = PA_STREAM_INTERFACE(stream)->GetTime( stream );
-
-        PA_LOGAPI(("Pa_GetStreamTime returned:\n" ));
-        PA_LOGAPI(("\tPaTime: %g\n", result ));
-
-    }
-
-    return result;
-}
-
-
-double Pa_GetStreamCpuLoad( PaStream* stream )
-{
-    PaError error = PaUtil_ValidateStreamPointer( stream );
-    double result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetStreamCpuLoad" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( error != paNoError )
-    {
-
-        result = 0.0;
-
-        PA_LOGAPI(("Pa_GetStreamCpuLoad returned:\n" ));
-        PA_LOGAPI(("\tdouble: 0.0 [PaError error: %d ( %s )]\n", error, Pa_GetErrorText( error ) ));
-
-    }
-    else
-    {
-        result = PA_STREAM_INTERFACE(stream)->GetCpuLoad( stream );
-
-        PA_LOGAPI(("Pa_GetStreamCpuLoad returned:\n" ));
-        PA_LOGAPI(("\tdouble: %g\n", result ));
-
-    }
-
-    return result;
-}
-
-
-PaError Pa_ReadStream( PaStream* stream,
-                       void *buffer,
-                       unsigned long frames )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_ReadStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-    {
-        if( frames == 0 )
-        {
-            /* XXX: Should we not allow the implementation to signal any overflow condition? */
-            result = paNoError;
-        }
-        else if( buffer == 0 )
-        {
-            result = paBadBufferPtr;
-        }
-        else
-        {
-            result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-            if( result == 0 )
-            {
-                result = PA_STREAM_INTERFACE(stream)->Read( stream, buffer, frames );
-            }
-            else if( result == 1 )
-            {
-                result = paStreamIsStopped;
-            }
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_ReadStream", result );
-
-    return result;
-}
-
-
-PaError Pa_WriteStream( PaStream* stream,
-                        const void *buffer,
-                        unsigned long frames )
-{
-    PaError result = PaUtil_ValidateStreamPointer( stream );
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_WriteStream" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( result == paNoError )
-    {
-        if( frames == 0 )
-        {
-            /* XXX: Should we not allow the implementation to signal any underflow condition? */
-            result = paNoError;
-        }
-        else if( buffer == 0 )
-        {
-            result = paBadBufferPtr;
-        }
-        else
-        {
-            result = PA_STREAM_INTERFACE(stream)->IsStopped( stream );
-            if( result == 0 )
-            {
-                result = PA_STREAM_INTERFACE(stream)->Write( stream, buffer, frames );
-            }
-            else if( result == 1 )
-            {
-                result = paStreamIsStopped;
-            }  
-        }
-    }
-
-    PA_LOGAPI_EXIT_PAERROR( "Pa_WriteStream", result );
-
-    return result;
-}
-
-signed long Pa_GetStreamReadAvailable( PaStream* stream )
-{
-    PaError error = PaUtil_ValidateStreamPointer( stream );
-    signed long result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetStreamReadAvailable" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( error != paNoError )
-    {
-        result = 0;
-
-        PA_LOGAPI(("Pa_GetStreamReadAvailable returned:\n" ));
-        PA_LOGAPI(("\tunsigned long: 0 [ PaError error: %d ( %s ) ]\n", error, Pa_GetErrorText( error ) ));
-
-    }
-    else
-    {
-        result = PA_STREAM_INTERFACE(stream)->GetReadAvailable( stream );
-
-        PA_LOGAPI(("Pa_GetStreamReadAvailable returned:\n" ));
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-
-    }
-
-    return result;
-}
-
-
-signed long Pa_GetStreamWriteAvailable( PaStream* stream )
-{
-    PaError error = PaUtil_ValidateStreamPointer( stream );
-    signed long result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetStreamWriteAvailable" );
-    PA_LOGAPI(("\tPaStream* stream: 0x%p\n", stream ));
-
-    if( error != paNoError )
-    {
-        result = 0;
-
-        PA_LOGAPI(("Pa_GetStreamWriteAvailable returned:\n" ));
-        PA_LOGAPI(("\tunsigned long: 0 [ PaError error: %d ( %s ) ]\n", error, Pa_GetErrorText( error ) ));
-
-    }
-    else
-    {
-        result = PA_STREAM_INTERFACE(stream)->GetWriteAvailable( stream );
-
-        PA_LOGAPI(("Pa_GetStreamWriteAvailable returned:\n" ));
-        PA_LOGAPI(("\tPaError: %d ( %s )\n", result, Pa_GetErrorText( result ) ));
-
-    }
-
-    return result;
-}
-
-
-PaError Pa_GetSampleSize( PaSampleFormat format )
-{
-    int result;
-
-    PA_LOGAPI_ENTER_PARAMS( "Pa_GetSampleSize" );
-    PA_LOGAPI(("\tPaSampleFormat format: %d\n", format ));
-
-    switch( format & ~paNonInterleaved )
-    {
-
-    case paUInt8:
-    case paInt8:
-        result = 1;
-        break;
-
-    case paInt16:
-        result = 2;
-        break;
-
-    case paInt24:
-        result = 3;
-        break;
-
-    case paFloat32:
-    case paInt32:
-        result = 4;
-        break;
-
-    default:
-        result = paSampleFormatNotSupported;
-        break;
-    }
-
-    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT( "Pa_GetSampleSize", "int: %d", result );
-
-    return (PaError) result;
-}
-
diff --git a/external/portaudio2007/pa_hostapi.h b/external/portaudio2007/pa_hostapi.h
deleted file mode 100644
index 5a86d4e..0000000
--- a/external/portaudio2007/pa_hostapi.h
+++ /dev/null
@@ -1,253 +0,0 @@
-#ifndef PA_HOSTAPI_H
-#define PA_HOSTAPI_H
-/*
- * $Id: pa_hostapi.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * host api representation
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Interface used by pa_front to virtualize functions which operate on
- host APIs.
-*/
-
-
-#include "portaudio.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/** **FOR THE USE OF pa_front.c ONLY**
-    Do NOT use fields in this structure, they my change at any time.
-    Use functions defined in pa_util.h if you think you need functionality
-    which can be derived from here.
-*/
-typedef struct PaUtilPrivatePaFrontHostApiInfo {
-
-
-    unsigned long baseDeviceIndex;
-}PaUtilPrivatePaFrontHostApiInfo;
-
-
-/** The common header for all data structures whose pointers are passed through
- the hostApiSpecificStreamInfo field of the PaStreamParameters structure.
- Note that in order to keep the public PortAudio interface clean, this structure
- is not used explicitly when declaring hostApiSpecificStreamInfo data structures.
- However, some code in pa_front depends on the first 3 members being equivalent
- with this structure.
- @see PaStreamParameters
-*/
-typedef struct PaUtilHostApiSpecificStreamInfoHeader
-{
-    unsigned long size;             /**< size of whole structure including this header */
-    PaHostApiTypeId hostApiType;    /**< host API for which this data is intended */
-    unsigned long version;          /**< structure version */
-} PaUtilHostApiSpecificStreamInfoHeader;
-
-
-
-/** A structure representing the interface to a host API. Contains both
- concrete data and pointers to functions which implement the interface.
-*/
-typedef struct PaUtilHostApiRepresentation {
-    PaUtilPrivatePaFrontHostApiInfo privatePaFrontInfo;
-
-    /** The host api implementation should populate the info field. In the
-        case of info.defaultInputDevice and info.defaultOutputDevice the
-        values stored should be 0 based indices within the host api's own
-        device index range (0 to deviceCount). These values will be converted
-        to global device indices by pa_front after PaUtilHostApiInitializer()
-        returns.
-    */
-    PaHostApiInfo info;
-
-    PaDeviceInfo** deviceInfos;
-
-    /**
-        (*Terminate)() is guaranteed to be called with a valid <hostApi>
-        parameter, which was previously returned from the same implementation's
-        initializer.
-    */
-    void (*Terminate)( struct PaUtilHostApiRepresentation *hostApi );
-
-    /**
-        The inputParameters and outputParameters pointers should not be saved
-        as they will not remain valid after OpenStream is called.
-
-        
-        The following guarantees are made about parameters to (*OpenStream)():
-
-            [NOTE: the following list up to *END PA FRONT VALIDATIONS* should be
-                kept in sync with the one for ValidateOpenStreamParameters and
-                Pa_OpenStream in pa_front.c]
-                
-            PaHostApiRepresentation *hostApi
-                - is valid for this implementation
-
-            PaStream** stream
-                - is non-null
-
-            - at least one of inputParameters & outputParmeters is valid (not NULL)
-
-            - if inputParameters & outputParmeters are both valid, that
-                inputParameters->device & outputParmeters->device  both use the same host api
- 
-            PaDeviceIndex inputParameters->device
-                - is within range (0 to Pa_CountDevices-1) Or:
-                - is paUseHostApiSpecificDeviceSpecification and
-                    inputParameters->hostApiSpecificStreamInfo is non-NULL and refers
-                    to a valid host api
-
-            int inputParameters->numChannels
-                - if inputParameters->device is not paUseHostApiSpecificDeviceSpecification, numInputChannels is > 0
-                - upper bound is NOT validated against device capabilities
- 
-            PaSampleFormat inputParameters->sampleFormat
-                - is one of the sample formats defined in portaudio.h
-
-            void *inputParameters->hostApiSpecificStreamInfo
-                - if supplied its hostApi field matches the input device's host Api
- 
-            PaDeviceIndex outputParmeters->device
-                - is within range (0 to Pa_CountDevices-1)
- 
-            int outputParmeters->numChannels
-                - if inputDevice is valid, numInputChannels is > 0
-                - upper bound is NOT validated against device capabilities
- 
-            PaSampleFormat outputParmeters->sampleFormat
-                - is one of the sample formats defined in portaudio.h
-        
-            void *outputParmeters->hostApiSpecificStreamInfo
-                - if supplied its hostApi field matches the output device's host Api
- 
-            double sampleRate
-                - is not an 'absurd' rate (less than 1000. or greater than 200000.)
-                - sampleRate is NOT validated against device capabilities
- 
-            PaStreamFlags streamFlags
-                - unused platform neutral flags are zero
-                - paNeverDropInput is only used for full-duplex callback streams
-                    with variable buffer size (paFramesPerBufferUnspecified)
-
-            [*END PA FRONT VALIDATIONS*]
-
-
-        The following validations MUST be performed by (*OpenStream)():
-
-            - check that input device can support numInputChannels
-            
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - if inputStreamInfo is supplied, validate its contents,
-                or return an error if no inputStreamInfo is expected
-
-            - check that output device can support numOutputChannels
-            
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - if outputStreamInfo is supplied, validate its contents,
-                or return an error if no outputStreamInfo is expected
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported
-
-            - check that the device supports sampleRate
-
-            - alter sampleRate to a close allowable rate if necessary
-
-            - validate inputLatency and outputLatency
-
-            - validate any platform specific flags, if flags are supplied they
-                must be valid.
-    */
-    PaError (*OpenStream)( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** stream,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerCallback,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-
-
-    PaError (*IsFormatSupported)( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-} PaUtilHostApiRepresentation;
-
-
-/** Prototype for the initialization function which must be implemented by every
- host API.
- 
- @see paHostApiInitializers
-*/
-typedef PaError PaUtilHostApiInitializer( PaUtilHostApiRepresentation**, PaHostApiIndex );
-
-
-/** paHostApiInitializers is a NULL-terminated array of host API initialization
- functions. These functions are called by pa_front to initialize the host APIs
- when the client calls Pa_Initialize().
-
- There is a platform specific file which defines paHostApiInitializers for that
- platform, pa_win/pa_win_hostapis.c contains the Win32 definitions for example.
-*/
-extern PaUtilHostApiInitializer *paHostApiInitializers[];
-
-
-/** The index of the default host API in the paHostApiInitializers array.
- 
- There is a platform specific file which defines paDefaultHostApiIndex for that
- platform, see pa_win/pa_win_hostapis.c for example.
-*/
-extern int paDefaultHostApiIndex;
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_HOSTAPI_H */
diff --git a/external/portaudio2007/pa_linux_alsa.c b/external/portaudio2007/pa_linux_alsa.c
deleted file mode 100644
index 3bbcd19..0000000
--- a/external/portaudio2007/pa_linux_alsa.c
+++ /dev/null
@@ -1,3565 +0,0 @@
-#if defined (UNIX) && defined (ALSA)
-/*
- * $Id: pa_linux_alsa.c 1278 2007-09-12 17:39:48Z aknudsen $
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- * ALSA implementation by Joshua Haberman and Arve Knudsen
- *
- * Copyright (c) 2002 Joshua Haberman <joshua at haberman.com>
- * Copyright (c) 2005-2007 Arve Knudsen <aknuds-1 at broadpark.no>
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostapi_src
-*/
-
-#define ALSA_PCM_NEW_HW_PARAMS_API
-#define ALSA_PCM_NEW_SW_PARAMS_API
-#include <alsa/asoundlib.h>
-#undef ALSA_PCM_NEW_HW_PARAMS_API
-#undef ALSA_PCM_NEW_SW_PARAMS_API
-
-#include <sys/poll.h>
-#include <string.h> /* strlen() */
-#include <limits.h>
-#include <math.h>
-#include <pthread.h>
-#include <signal.h>
-#include <time.h>
-#include <sys/mman.h>
-#include <signal.h> /* For sig_atomic_t */
-
-#include "portaudio.h"
-#include "pa_util.h"
-#include "pa_unix_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "pa_endianness.h"
-#include "pa_debugprint.h"
-
-#include "pa_linux_alsa.h"
-
-/* Check return value of ALSA function, and map it to PaError */
-#define ENSURE_(expr, code) \
-    do { \
-        if( UNLIKELY( (aErr_ = (expr)) < 0 ) ) \
-        { \
-            /* PaUtil_SetLastHostErrorInfo should only be used in the main thread */ \
-            if( (code) == paUnanticipatedHostError && pthread_equal( pthread_self(), paUnixMainThread) ) \
-            { \
-                PaUtil_SetLastHostErrorInfo( paALSA, aErr_, snd_strerror( aErr_ ) ); \
-            } \
-            PaUtil_DebugPrint( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" ); \
-            if( (code) == paUnanticipatedHostError ) \
-                PA_DEBUG(( "Host error description: %s\n", snd_strerror( aErr_ ) )); \
-            result = (code); \
-            goto error; \
-        } \
-    } while( 0 );
-
-#define ASSERT_CALL_(expr, success) \
-    aErr_ = (expr); \
-    assert( success == aErr_ );
-
-static int aErr_;               /* Used with ENSURE_ */
-static int numPeriods_ = 4;
-
-int PaAlsa_SetNumPeriods( int numPeriods )
-{
-    numPeriods_ = numPeriods;
-    return paNoError;
-}
-
-typedef enum
-{
-    StreamDirection_In,
-    StreamDirection_Out
-} StreamDirection;
-
-typedef struct
-{
-    PaSampleFormat hostSampleFormat;
-    unsigned long framesPerBuffer;
-    int numUserChannels, numHostChannels;
-    int userInterleaved, hostInterleaved;
-    PaDeviceIndex device;     /* Keep the device index */
-
-    snd_pcm_t *pcm;
-    snd_pcm_uframes_t bufferSize;
-    snd_pcm_format_t nativeFormat;
-    unsigned int nfds;
-    int ready;  /* Marked ready from poll */
-    void **userBuffers;
-    snd_pcm_uframes_t offset;
-    StreamDirection streamDir;
-
-    snd_pcm_channel_area_t *channelAreas;  /* Needed for channel adaption */
-} PaAlsaStreamComponent;
-
-/* Implementation specific stream structure */
-typedef struct PaAlsaStream
-{
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-    PaUnixThread thread;
-
-    unsigned long framesPerUserBuffer, maxFramesPerHostBuffer;
-
-    int primeBuffers;
-    int callbackMode;              /* bool: are we running in callback mode? */
-    int pcmsSynced;	            /* Have we successfully synced pcms */
-    int rtSched;
-
-    /* the callback thread uses these to poll the sound device(s), waiting
-     * for data to be ready/available */
-    struct pollfd* pfds;
-    int pollTimeout;
-
-    /* Used in communication between threads */
-    volatile sig_atomic_t callback_finished; /* bool: are we in the "callback finished" state? */
-    volatile sig_atomic_t callbackAbort;    /* Drop frames? */
-    volatile sig_atomic_t isActive;         /* Is stream in active state? (Between StartStream and StopStream || !paContinue) */
-    PaUnixMutex stateMtx;                   /* Used to synchronize access to stream state */
-
-    int neverDropInput;
-
-    PaTime underrun;
-    PaTime overrun;
-
-    PaAlsaStreamComponent capture, playback;
-}
-PaAlsaStream;
-
-/* PaAlsaHostApiRepresentation - host api datastructure specific to this implementation */
-
-typedef struct PaAlsaHostApiRepresentation
-{
-    PaUtilHostApiRepresentation baseHostApiRep;
-    PaUtilStreamInterface callbackStreamInterface;
-    PaUtilStreamInterface blockingStreamInterface;
-
-    PaUtilAllocationGroup *allocations;
-
-    PaHostApiIndex hostApiIndex;
-}
-PaAlsaHostApiRepresentation;
-
-typedef struct PaAlsaDeviceInfo
-{
-    PaDeviceInfo baseDeviceInfo;
-    char *alsaName;
-    int isPlug;
-    int minInputChannels;
-    int minOutputChannels;
-}
-PaAlsaDeviceInfo;
-
-/* prototypes for functions declared in this file */
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *callback,
-                           void *userData );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError BuildDeviceList( PaAlsaHostApiRepresentation *hostApi );
-static int SetApproximateSampleRate( snd_pcm_t *pcm, snd_pcm_hw_params_t *hwParams, double sampleRate );
-static int GetExactSampleRate( snd_pcm_hw_params_t *hwParams, double *sampleRate );
-
-/* Callback prototypes */
-static void *CallbackThreadFunc( void *userData );
-
-/* Blocking prototypes */
-static signed long GetStreamReadAvailable( PaStream* s );
-static signed long GetStreamWriteAvailable( PaStream* s );
-static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-
-
-static const PaAlsaDeviceInfo *GetDeviceInfo( const PaUtilHostApiRepresentation *hostApi, int device )
-{
-    return (const PaAlsaDeviceInfo *)hostApi->deviceInfos[device];
-}
-
-static void AlsaErrorHandler(const char *file, int line, const char *function, int err, const char *fmt, ...)
-{
-}
-
-PaError PaAlsa_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    PaAlsaHostApiRepresentation *alsaHostApi = NULL;
-
-    PA_UNLESS( alsaHostApi = (PaAlsaHostApiRepresentation*) PaUtil_AllocateMemory(
-                sizeof(PaAlsaHostApiRepresentation) ), paInsufficientMemory );
-    PA_UNLESS( alsaHostApi->allocations = PaUtil_CreateAllocationGroup(), paInsufficientMemory );
-    alsaHostApi->hostApiIndex = hostApiIndex;
-
-    *hostApi = (PaUtilHostApiRepresentation*)alsaHostApi;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paALSA;
-    (*hostApi)->info.name = "ALSA";
-
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    ENSURE_( snd_lib_error_set_handler(AlsaErrorHandler), paUnanticipatedHostError );
-
-    PA_ENSURE( BuildDeviceList( alsaHostApi ) );
-
-    PaUtil_InitializeStreamInterface( &alsaHostApi->callbackStreamInterface,
-                                      CloseStream, StartStream,
-                                      StopStream, AbortStream,
-                                      IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable,
-                                      PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &alsaHostApi->blockingStreamInterface,
-                                      CloseStream, StartStream,
-                                      StopStream, AbortStream,
-                                      IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream,
-                                      GetStreamReadAvailable,
-                                      GetStreamWriteAvailable );
-
-    PA_ENSURE( PaUnixThreading_Initialize() );
-
-    return result;
-
-error:
-    if( alsaHostApi )
-    {
-        if( alsaHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( alsaHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( alsaHostApi->allocations );
-        }
-
-        PaUtil_FreeMemory( alsaHostApi );
-    }
-
-    return result;
-}
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaAlsaHostApiRepresentation *alsaHostApi = (PaAlsaHostApiRepresentation*)hostApi;
-
-    assert( hostApi );
-
-    if( alsaHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( alsaHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( alsaHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( alsaHostApi );
-    snd_config_update_free_global();
-}
-
-/** Determine max channels and default latencies.
- *
- * This function provides functionality to grope an opened (might be opened for capture or playback) pcm device for 
- * traits like max channels, suitable default latencies and default sample rate. Upon error, max channels is set to zero,
- * and a suitable result returned. The device is closed before returning.
- */
-static PaError GropeDevice( snd_pcm_t* pcm, int isPlug, StreamDirection mode, int openBlocking,
-        PaAlsaDeviceInfo* devInfo, int* canMmap )
-{
-    PaError result = paNoError;
-    snd_pcm_hw_params_t *hwParams;
-    snd_pcm_uframes_t lowLatency = 512, highLatency = 2048;
-    unsigned int minChans, maxChans;
-    int* minChannels, * maxChannels;
-    double * defaultLowLatency, * defaultHighLatency, * defaultSampleRate =
-        &devInfo->baseDeviceInfo.defaultSampleRate;
-    double defaultSr = *defaultSampleRate;
-
-    assert( pcm );
-
-    if( StreamDirection_In == mode )
-    {
-        minChannels = &devInfo->minInputChannels;
-        maxChannels = &devInfo->baseDeviceInfo.maxInputChannels;
-        defaultLowLatency = &devInfo->baseDeviceInfo.defaultLowInputLatency;
-        defaultHighLatency = &devInfo->baseDeviceInfo.defaultHighInputLatency;
-    }
-    else
-    {
-        minChannels = &devInfo->minOutputChannels;
-        maxChannels = &devInfo->baseDeviceInfo.maxOutputChannels;
-        defaultLowLatency = &devInfo->baseDeviceInfo.defaultLowOutputLatency;
-        defaultHighLatency = &devInfo->baseDeviceInfo.defaultHighOutputLatency;
-    }
-
-    ENSURE_( snd_pcm_nonblock( pcm, 0 ), paUnanticipatedHostError );
-
-    snd_pcm_hw_params_alloca( &hwParams );
-    snd_pcm_hw_params_any( pcm, hwParams );
-
-    *canMmap = snd_pcm_hw_params_test_access( pcm, hwParams, SND_PCM_ACCESS_MMAP_INTERLEAVED ) >= 0 ||
-            snd_pcm_hw_params_test_access( pcm, hwParams, SND_PCM_ACCESS_MMAP_NONINTERLEAVED ) >= 0;
-
-    if( defaultSr >= 0 )
-    {
-        /* Could be that the device opened in one mode supports samplerates that the other mode wont have,
-         * so try again .. */
-        if( SetApproximateSampleRate( pcm, hwParams, defaultSr ) < 0 )
-        {
-            defaultSr = -1.;
-            PA_DEBUG(( "%s: Original default samplerate failed, trying again ..\n", __FUNCTION__ ));
-        }
-    }
-
-    if( defaultSr < 0. )           /* Default sample rate not set */
-    {
-        unsigned int sampleRate = 44100;        /* Will contain approximate rate returned by alsa-lib */
-        if( snd_pcm_hw_params_set_rate_near( pcm, hwParams, &sampleRate, NULL ) < 0)
-        {
-            result = paUnanticipatedHostError;
-            goto error;
-        }
-        ENSURE_( GetExactSampleRate( hwParams, &defaultSr ), paUnanticipatedHostError );
-    }
-    
-    ENSURE_( snd_pcm_hw_params_get_channels_min( hwParams, &minChans ), paUnanticipatedHostError );
-    ENSURE_( snd_pcm_hw_params_get_channels_max( hwParams, &maxChans ), paUnanticipatedHostError );
-    assert( maxChans <= INT_MAX );
-    assert( maxChans > 0 );    /* Weird linking issue could cause wrong version of ALSA symbols to be called,
-                                   resulting in zeroed values */
-
-    /* XXX: Limit to sensible number (ALSA plugins accept a crazy amount of channels)? */
-    if( isPlug && maxChans > 128 )
-    {
-        maxChans = 128;
-        PA_DEBUG(( "%s: Limiting number of plugin channels to %u\n", __FUNCTION__, maxChans ));
-    }
-
-    /* TWEAKME:
-     *
-     * Giving values for default min and max latency is not
-     * straightforward.  Here are our objectives:
-     *
-     *         * for low latency, we want to give the lowest value
-     *         that will work reliably.  This varies based on the
-     *         sound card, kernel, CPU, etc.  I think it is better
-     *         to give sub-optimal latency than to give a number
-     *         too low and cause dropouts.  My conservative
-     *         estimate at this point is to base it on 4096-sample
-     *         latency at 44.1 kHz, which gives a latency of 23ms.
-     *         * for high latency we want to give a large enough
-     *         value that dropouts are basically impossible.  This
-     *         doesn't really require as much tweaking, since
-     *         providing too large a number will just cause us to
-     *         select the nearest setting that will work at stream
-     *         config time.
-     */
-    ENSURE_( snd_pcm_hw_params_set_buffer_size_near( pcm, hwParams, &lowLatency ), paUnanticipatedHostError );
-
-    /* Have to reset hwParams, to set new buffer size */
-    ENSURE_( snd_pcm_hw_params_any( pcm, hwParams ), paUnanticipatedHostError ); 
-    ENSURE_( snd_pcm_hw_params_set_buffer_size_near( pcm, hwParams, &highLatency ), paUnanticipatedHostError );
-
-    *minChannels = (int)minChans;
-    *maxChannels = (int)maxChans;
-    *defaultSampleRate = defaultSr;
-    *defaultLowLatency = (double) lowLatency / *defaultSampleRate;
-    *defaultHighLatency = (double) highLatency / *defaultSampleRate;
-
-end:
-    snd_pcm_close( pcm );
-    return result;
-
-error:
-    goto end;
-}
-
-/* Initialize device info with invalid values (maxInputChannels and maxOutputChannels are set to zero since these indicate
- * wether input/output is available) */
-static void InitializeDeviceInfo( PaDeviceInfo *deviceInfo )
-{
-    deviceInfo->structVersion = -1;
-    deviceInfo->name = NULL;
-    deviceInfo->hostApi = -1;
-    deviceInfo->maxInputChannels = 0;
-    deviceInfo->maxOutputChannels = 0;
-    deviceInfo->defaultLowInputLatency = -1.;
-    deviceInfo->defaultLowOutputLatency = -1.;
-    deviceInfo->defaultHighInputLatency = -1.;
-    deviceInfo->defaultHighOutputLatency = -1.;
-    deviceInfo->defaultSampleRate = -1.;
-}
-
-/* Helper struct */
-typedef struct
-{
-    char *alsaName;
-    char *name;
-    int isPlug;
-    int hasPlayback;
-    int hasCapture;
-} HwDevInfo;
-
-
-HwDevInfo predefinedNames[] = {
-    { "center_lfe", NULL, 0, 1, 0 },
-/* { "default", NULL, 0, 1, 0 }, */
-/* { "dmix", NULL, 0, 1, 0 }, */
-/* { "dpl", NULL, 0, 1, 0 }, */
-/* { "dsnoop", NULL, 0, 1, 0 }, */
-    { "front", NULL, 0, 1, 0 },
-    { "iec958", NULL, 0, 1, 0 },
-/* { "modem", NULL, 0, 1, 0 }, */
-    { "rear", NULL, 0, 1, 0 },
-    { "side", NULL, 0, 1, 0 },
-/*     { "spdif", NULL, 0, 0, 0 }, */
-    { "surround40", NULL, 0, 1, 0 },
-    { "surround41", NULL, 0, 1, 0 },
-    { "surround50", NULL, 0, 1, 0 },
-    { "surround51", NULL, 0, 1, 0 },
-    { "surround71", NULL, 0, 1, 0 },
-    { NULL, NULL, 0, 1, 0 }
-};
-
-static const HwDevInfo *FindDeviceName( const char *name )
-{
-    int i;
-
-    for( i = 0; predefinedNames[i].alsaName; i++ )
-    {
-	if( strcmp( name, predefinedNames[i].alsaName ) == 0 )
-	{
-	    return &predefinedNames[i];
-	}
-    }
-
-    return NULL;
-}
-
-static PaError PaAlsa_StrDup( PaAlsaHostApiRepresentation *alsaApi,
-        char **dst,
-        const char *src)
-{
-    PaError result = paNoError;
-    int len = strlen( src ) + 1;
-
-    /* PA_DEBUG(("PaStrDup %s %d\n", src, len)); */
-
-    PA_UNLESS( *dst = (char *)PaUtil_GroupAllocateMemory( alsaApi->allocations, len ),
-            paInsufficientMemory );
-    strncpy( *dst, src, len );
-
-error:
-    return result;
-}
-
-/* Disregard some standard plugins
- */
-static int IgnorePlugin( const char *pluginId )
-{
-    static const char *ignoredPlugins[] = {"hw", "plughw", "plug", "dsnoop", "tee",
-        "file", "null", "shm", "cards", "rate_convert", NULL};
-    int i = 0;
-    while( ignoredPlugins[i] )
-    {
-        if( !strcmp( pluginId, ignoredPlugins[i] ) )
-        {
-            return 1;
-        }
-        ++i;
-    }
-
-    return 0;
-}
-
-/** Open PCM device.
- *
- * Wrapper around snd_pcm_open which may repeatedly retry opening a device if it is busy, for
- * a certain time. This is because dmix may temporarily hold on to a device after it (dmix)
- * has been opened and closed.
- * @param mode: Open mode (e.g., SND_PCM_BLOCKING).
- * @param waitOnBusy: Retry opening busy device for up to one second?
- **/
-static int OpenPcm( snd_pcm_t **pcmp, const char *name, snd_pcm_stream_t stream, int mode, int waitOnBusy )
-{
-    int tries = 0, maxTries = waitOnBusy ? 100 : 0;
-    int ret = snd_pcm_open( pcmp, name, stream, mode );
-    for( tries = 0; tries < maxTries && -EBUSY == ret; ++tries )
-    {
-        Pa_Sleep( 10 );
-        ret = snd_pcm_open( pcmp, name, stream, mode );
-        if( -EBUSY != ret )
-        {
-            PA_DEBUG(( "%s: Successfully opened initially busy device after %d tries\n",
-                        __FUNCTION__, tries ));
-        }
-    }
-    if( -EBUSY == ret )
-    {
-        PA_DEBUG(( "%s: Failed to open busy device '%s'\n",
-                    __FUNCTION__, name ));
-    }
-
-    return ret;
-}
-
-static PaError FillInDevInfo( PaAlsaHostApiRepresentation *alsaApi, HwDevInfo* deviceName, int blocking,
-        PaAlsaDeviceInfo* devInfo, int* devIdx )
-{
-    PaError result = 0;
-    PaDeviceInfo *baseDeviceInfo = &devInfo->baseDeviceInfo;
-    snd_pcm_t *pcm;
-    int canMmap = -1;
-    PaUtilHostApiRepresentation *baseApi = &alsaApi->baseHostApiRep;
-
-    /* Zero fields */
-    InitializeDeviceInfo( baseDeviceInfo );
-
-    /* to determine device capabilities, we must open the device and query the
-     * hardware parameter configuration space */
-
-    /* Query capture */
-    if( deviceName->hasCapture &&
-            OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_CAPTURE, blocking, 0 )
-            >= 0 )
-    {
-        if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_In, blocking, devInfo,
-                    &canMmap ) != paNoError )
-        {
-            /* Error */
-            PA_DEBUG(("%s: Failed groping %s for capture\n", __FUNCTION__, deviceName->alsaName));
-            goto end;
-        }
-    }
-
-    /* Query playback */
-    if( deviceName->hasPlayback &&
-            OpenPcm( &pcm, deviceName->alsaName, SND_PCM_STREAM_PLAYBACK, blocking, 0 )
-            >= 0 )
-    {
-        if( GropeDevice( pcm, deviceName->isPlug, StreamDirection_Out, blocking, devInfo,
-                    &canMmap ) != paNoError )
-        {
-            /* Error */
-            PA_DEBUG(("%s: Failed groping %s for playback\n", __FUNCTION__, deviceName->alsaName));
-            goto end;
-        }
-    }
-
-    if( 0 == canMmap )
-    {
-        PA_DEBUG(("%s: Device %s doesn't support mmap\n", __FUNCTION__, deviceName->alsaName));
-        goto end;
-    }
-
-    baseDeviceInfo->structVersion = 2;
-    baseDeviceInfo->hostApi = alsaApi->hostApiIndex;
-    baseDeviceInfo->name = deviceName->name;
-    devInfo->alsaName = deviceName->alsaName;
-    devInfo->isPlug = deviceName->isPlug;
-
-    /* A: Storing pointer to PaAlsaDeviceInfo object as pointer to PaDeviceInfo object.
-     * Should now be safe to add device info, unless the device supports neither capture nor playback
-     */
-    if( baseDeviceInfo->maxInputChannels > 0 || baseDeviceInfo->maxOutputChannels > 0 )
-    {
-        /* Make device default if there isn't already one or it is the ALSA "default" device */
-        if( (baseApi->info.defaultInputDevice == paNoDevice || !strcmp(deviceName->alsaName,
-                        "default" )) && baseDeviceInfo->maxInputChannels > 0 )
-        {
-            baseApi->info.defaultInputDevice = *devIdx;
-            PA_DEBUG(("Default input device: %s\n", deviceName->name));
-        }
-        if( (baseApi->info.defaultOutputDevice == paNoDevice || !strcmp(deviceName->alsaName,
-                        "default" )) && baseDeviceInfo->maxOutputChannels > 0 )
-        {
-            baseApi->info.defaultOutputDevice = *devIdx;
-            PA_DEBUG(("Default output device: %s\n", deviceName->name));
-        }
-        PA_DEBUG(("%s: Adding device %s: %d\n", __FUNCTION__, deviceName->name, *devIdx));
-        baseApi->deviceInfos[*devIdx] = (PaDeviceInfo *) devInfo;
-        (*devIdx) += 1;
-    }
-
-end:
-    return result;
-}
-
-/* Build PaDeviceInfo list, ignore devices for which we cannot determine capabilities (possibly busy, sigh) */
-static PaError BuildDeviceList( PaAlsaHostApiRepresentation *alsaApi )
-{
-    PaUtilHostApiRepresentation *baseApi = &alsaApi->baseHostApiRep;
-    PaAlsaDeviceInfo *deviceInfoArray;
-    int cardIdx = -1, devIdx = 0;
-    snd_ctl_card_info_t *cardInfo;
-    PaError result = paNoError;
-    size_t numDeviceNames = 0, maxDeviceNames = 1, i;
-    HwDevInfo *hwDevInfos = NULL;
-    snd_config_t *topNode = NULL;
-    snd_pcm_info_t *pcmInfo;
-    int res;
-    int blocking = SND_PCM_NONBLOCK;
-    char alsaCardName[50];
-#ifdef PA_ENABLE_DEBUG_OUTPUT
-    PaTime startTime = PaUtil_GetTime();
-#endif
-
-    if( getenv( "PA_ALSA_INITIALIZE_BLOCK" ) && atoi( getenv( "PA_ALSA_INITIALIZE_BLOCK" ) ) )
-        blocking = 0;
-
-    /* These two will be set to the first working input and output device, respectively */
-    baseApi->info.defaultInputDevice = paNoDevice;
-    baseApi->info.defaultOutputDevice = paNoDevice;
-
-    /* Gather info about hw devices
-
-     * snd_card_next() modifies the integer passed to it to be:
-     *      the index of the first card if the parameter is -1
-     *      the index of the next card if the parameter is the index of a card
-     *      -1 if there are no more cards
-     *
-     * The function itself returns 0 if it succeeded. */
-    cardIdx = -1;
-    snd_ctl_card_info_alloca( &cardInfo );
-    snd_pcm_info_alloca( &pcmInfo );
-    while( snd_card_next( &cardIdx ) == 0 && cardIdx >= 0 )
-    {
-        char *cardName;
-        int devIdx = -1;
-        snd_ctl_t *ctl;
-        char buf[50];
-
-        snprintf( alsaCardName, sizeof (alsaCardName), "hw:%d", cardIdx );
-
-        /* Acquire name of card */
-        if( snd_ctl_open( &ctl, alsaCardName, 0 ) < 0 )
-        {
-            /* Unable to open card :( */
-            PA_DEBUG(( "%s: Unable to open device %s\n", __FUNCTION__, alsaCardName ));
-            continue;
-        }
-        snd_ctl_card_info( ctl, cardInfo );
-
-        PA_ENSURE( PaAlsa_StrDup( alsaApi, &cardName, snd_ctl_card_info_get_name( cardInfo )) );
-
-        while( snd_ctl_pcm_next_device( ctl, &devIdx ) == 0 && devIdx >= 0 )
-        {
-            char *alsaDeviceName, *deviceName;
-            size_t len;
-            int hasPlayback = 0, hasCapture = 0;
-            snprintf( buf, sizeof (buf), "hw:%d,%d", cardIdx, devIdx );
-
-            /* Obtain info about this particular device */
-            snd_pcm_info_set_device( pcmInfo, devIdx );
-            snd_pcm_info_set_subdevice( pcmInfo, 0 );
-            snd_pcm_info_set_stream( pcmInfo, SND_PCM_STREAM_CAPTURE );
-            if( snd_ctl_pcm_info( ctl, pcmInfo ) >= 0 )
-            {
-                hasCapture = 1;
-            }
-            
-            snd_pcm_info_set_stream( pcmInfo, SND_PCM_STREAM_PLAYBACK );
-            if( snd_ctl_pcm_info( ctl, pcmInfo ) >= 0 )
-            {
-                hasPlayback = 1;
-            }
-
-            if( !hasPlayback && !hasCapture )
-            {
-                /* Error */
-                continue;
-            }
-
-            /* The length of the string written by snprintf plus terminating 0 */
-            len = snprintf( NULL, 0, "%s: %s (%s)", cardName, snd_pcm_info_get_name( pcmInfo ), buf ) + 1;
-            PA_UNLESS( deviceName = (char *)PaUtil_GroupAllocateMemory( alsaApi->allocations, len ),
-                    paInsufficientMemory );
-            snprintf( deviceName, len, "%s: %s (%s)", cardName,
-                    snd_pcm_info_get_name( pcmInfo ), buf );
-
-            ++numDeviceNames;
-            if( !hwDevInfos || numDeviceNames > maxDeviceNames )
-            {
-                maxDeviceNames *= 2;
-                PA_UNLESS( hwDevInfos = (HwDevInfo *) realloc( hwDevInfos, maxDeviceNames * sizeof (HwDevInfo) ),
-                        paInsufficientMemory );
-            }
-
-            PA_ENSURE( PaAlsa_StrDup( alsaApi, &alsaDeviceName, buf ) );
-
-            hwDevInfos[ numDeviceNames - 1 ].alsaName = alsaDeviceName;
-            hwDevInfos[ numDeviceNames - 1 ].name = deviceName;
-            hwDevInfos[ numDeviceNames - 1 ].isPlug = 0;
-            hwDevInfos[ numDeviceNames - 1 ].hasPlayback = hasPlayback;
-            hwDevInfos[ numDeviceNames - 1 ].hasCapture = hasCapture;
-        }
-        snd_ctl_close( ctl );
-    }
-
-    /* Iterate over plugin devices */
-
-    if( NULL == snd_config )
-    {
-        /* snd_config_update is called implicitly by some functions, if this hasn't happened snd_config will be NULL (bleh) */
-        ENSURE_( snd_config_update(), paUnanticipatedHostError );
-        PA_DEBUG(( "Updating snd_config\n" ));
-    }
-    assert( snd_config );
-    if( (res = snd_config_search( snd_config, "pcm", &topNode )) >= 0 )
-    {
-        snd_config_iterator_t i, next;
-
-        snd_config_for_each( i, next, topNode )
-        {
-            const char *tpStr = "unknown", *idStr = NULL;
-            int err = 0;
-
-            char *alsaDeviceName, *deviceName;
-	    const HwDevInfo *predefined = NULL;
-            snd_config_t *n = snd_config_iterator_entry( i ), * tp = NULL;;
-
-            if( (err = snd_config_search( n, "type", &tp )) < 0 )
-            {
-                if( -ENOENT != err )
-                {
-                    ENSURE_(err, paUnanticipatedHostError);
-                }
-            }
-            else 
-            {
-                ENSURE_( snd_config_get_string( tp, &tpStr ), paUnanticipatedHostError );
-            }
-            ENSURE_( snd_config_get_id( n, &idStr ), paUnanticipatedHostError );
-            if( IgnorePlugin( idStr ) )
-            {
-                PA_DEBUG(( "%s: Ignoring ALSA plugin device %s of type %s\n", __FUNCTION__, idStr, tpStr ));
-                continue;
-            }
-            PA_DEBUG(( "%s: Found plugin %s of type %s\n", __FUNCTION__, idStr, tpStr ));
-
-            PA_UNLESS( alsaDeviceName = (char*)PaUtil_GroupAllocateMemory( alsaApi->allocations,
-                                                            strlen(idStr) + 6 ), paInsufficientMemory );
-            strcpy( alsaDeviceName, idStr );
-            PA_UNLESS( deviceName = (char*)PaUtil_GroupAllocateMemory( alsaApi->allocations,
-                                                            strlen(idStr) + 1 ), paInsufficientMemory );
-            strcpy( deviceName, idStr );
-
-            ++numDeviceNames;
-            if( !hwDevInfos || numDeviceNames > maxDeviceNames )
-            {
-                maxDeviceNames *= 2;
-                PA_UNLESS( hwDevInfos = (HwDevInfo *) realloc( hwDevInfos, maxDeviceNames * sizeof (HwDevInfo) ),
-                        paInsufficientMemory );
-            }
-
-	    predefined = FindDeviceName( alsaDeviceName );
-
-            hwDevInfos[numDeviceNames - 1].alsaName = alsaDeviceName;
-            hwDevInfos[numDeviceNames - 1].name = deviceName;
-            hwDevInfos[numDeviceNames - 1].isPlug = 1;
-
-	    if( predefined )
-	    {
-		hwDevInfos[numDeviceNames - 1].hasPlayback =
-		    predefined->hasPlayback;
-		hwDevInfos[numDeviceNames - 1].hasCapture =
-		    predefined->hasCapture;
-	    }
-	    else
-	    {
-		hwDevInfos[numDeviceNames - 1].hasPlayback = 1;
-		hwDevInfos[numDeviceNames - 1].hasCapture = 1;
-	    }
-        }
-    }
-    else
-        PA_DEBUG(( "%s: Iterating over ALSA plugins failed: %s\n", __FUNCTION__, snd_strerror( res ) ));
-
-    /* allocate deviceInfo memory based on the number of devices */
-    PA_UNLESS( baseApi->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-            alsaApi->allocations, sizeof(PaDeviceInfo*) * (numDeviceNames) ), paInsufficientMemory );
-
-    /* allocate all device info structs in a contiguous block */
-    PA_UNLESS( deviceInfoArray = (PaAlsaDeviceInfo*)PaUtil_GroupAllocateMemory(
-            alsaApi->allocations, sizeof(PaAlsaDeviceInfo) * numDeviceNames ), paInsufficientMemory );
-
-    /* Loop over list of cards, filling in info. If a device is deemed unavailable (can't get name),
-     * it's ignored.
-     *
-     * Note that we do this in two stages. This is a workaround owing to the fact that the 'dmix'
-     * plugin may cause the underlying hardware device to be busy for a short while even after it
-     * (dmix) is closed. The 'default' plugin may also point to the dmix plugin, so the same goes
-     * for this.
-     */
-
-    for( i = 0, devIdx = 0; i < numDeviceNames; ++i )
-    {
-        PaAlsaDeviceInfo* devInfo = &deviceInfoArray[i];
-        HwDevInfo* hwInfo = &hwDevInfos[i];
-        if( !strcmp( hwInfo->name, "dmix" ) || !strcmp( hwInfo->name, "default" ) )
-        {
-            continue;
-        }
-
-        PA_ENSURE( FillInDevInfo( alsaApi, hwInfo, blocking, devInfo, &devIdx ) );
-    }
-    assert( devIdx < numDeviceNames );
-    /* Now inspect 'dmix' and 'default' plugins */
-    for( i = 0; i < numDeviceNames; ++i )
-    {
-        PaAlsaDeviceInfo* devInfo = &deviceInfoArray[i];
-        HwDevInfo* hwInfo = &hwDevInfos[i];
-        if( strcmp( hwInfo->name, "dmix" ) && strcmp( hwInfo->name, "default" ) )
-        {
-            continue;
-        }
-
-        PA_ENSURE( FillInDevInfo( alsaApi, hwInfo, blocking, devInfo,
-                    &devIdx ) );
-    }
-    free( hwDevInfos );
-
-    baseApi->info.deviceCount = devIdx;   /* Number of successfully queried devices */
-
-#ifdef PA_ENABLE_DEBUG_OUTPUT
-    PA_DEBUG(( "%s: Building device list took %f seconds\n", __FUNCTION__, PaUtil_GetTime() - startTime ));
-#endif
-
-end:
-    return result;
-
-error:
-    /* No particular action */
-    goto end;
-}
-
-/* Check against known device capabilities */
-static PaError ValidateParameters( const PaStreamParameters *parameters, PaUtilHostApiRepresentation *hostApi, StreamDirection mode )
-{
-    PaError result = paNoError;
-    int maxChans;
-    const PaAlsaDeviceInfo *deviceInfo = NULL;
-    assert( parameters );
-
-    if( parameters->device != paUseHostApiSpecificDeviceSpecification )
-    {
-        assert( parameters->device < hostApi->info.deviceCount );
-        PA_UNLESS( parameters->hostApiSpecificStreamInfo == NULL, paBadIODeviceCombination );
-        deviceInfo = GetDeviceInfo( hostApi, parameters->device );
-    }
-    else
-    {
-        const PaAlsaStreamInfo *streamInfo = parameters->hostApiSpecificStreamInfo;
-
-        PA_UNLESS( parameters->device == paUseHostApiSpecificDeviceSpecification, paInvalidDevice );
-        PA_UNLESS( streamInfo->size == sizeof (PaAlsaStreamInfo) && streamInfo->version == 1,
-                paIncompatibleHostApiSpecificStreamInfo );
-        PA_UNLESS( streamInfo->deviceString != NULL, paInvalidDevice );
-
-        /* Skip further checking */
-        return paNoError;
-    }
-
-    assert( deviceInfo );
-    assert( parameters->hostApiSpecificStreamInfo == NULL );
-    maxChans = (StreamDirection_In == mode ? deviceInfo->baseDeviceInfo.maxInputChannels :
-        deviceInfo->baseDeviceInfo.maxOutputChannels);
-    PA_UNLESS( parameters->channelCount <= maxChans, paInvalidChannelCount );
-
-error:
-    return result;
-}
-
-/* Given an open stream, what sample formats are available? */
-static PaSampleFormat GetAvailableFormats( snd_pcm_t *pcm )
-{
-    PaSampleFormat available = 0;
-    snd_pcm_hw_params_t *hwParams;
-    snd_pcm_hw_params_alloca( &hwParams );
-
-    snd_pcm_hw_params_any( pcm, hwParams );
-
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_FLOAT ) >= 0)
-        available |= paFloat32;
-
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_S32 ) >= 0)
-        available |= paInt32;
-
-#ifdef PA_LITTLE_ENDIAN
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_S24_3LE ) >= 0)
-        available |= paInt24;
-#elif defined PA_BIG_ENDIAN
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_S24_3BE ) >= 0)
-        available |= paInt24;
-#endif
-
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_S16 ) >= 0)
-        available |= paInt16;
-
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_U8 ) >= 0)
-        available |= paUInt8;
-
-    if( snd_pcm_hw_params_test_format( pcm, hwParams, SND_PCM_FORMAT_S8 ) >= 0)
-        available |= paInt8;
-
-    return available;
-}
-
-static snd_pcm_format_t Pa2AlsaFormat( PaSampleFormat paFormat )
-{
-    switch( paFormat )
-    {
-        case paFloat32:
-            return SND_PCM_FORMAT_FLOAT;
-
-        case paInt16:
-            return SND_PCM_FORMAT_S16;
-
-        case paInt24:
-#ifdef PA_LITTLE_ENDIAN
-            return SND_PCM_FORMAT_S24_3LE;
-#elif defined PA_BIG_ENDIAN
-            return SND_PCM_FORMAT_S24_3BE;
-#endif
-
-        case paInt32:
-            return SND_PCM_FORMAT_S32;
-
-        case paInt8:
-            return SND_PCM_FORMAT_S8;
-
-        case paUInt8:
-            return SND_PCM_FORMAT_U8;
-
-        default:
-            return SND_PCM_FORMAT_UNKNOWN;
-    }
-}
-
-/** Open an ALSA pcm handle.
- * 
- * The device to be open can be specified in a custom PaAlsaStreamInfo struct, or it will be a device number. In case of a
- * device number, it maybe specified through an env variable (PA_ALSA_PLUGHW) that we should open the corresponding plugin
- * device.
- */
-static PaError AlsaOpen( const PaUtilHostApiRepresentation *hostApi, const PaStreamParameters *params, StreamDirection
-        streamDir, snd_pcm_t **pcm )
-{
-    PaError result = paNoError;
-    int ret;
-    char dnameArray[50];
-    const char* deviceName = dnameArray;
-    const PaAlsaDeviceInfo *deviceInfo = NULL;
-    PaAlsaStreamInfo *streamInfo = (PaAlsaStreamInfo *)params->hostApiSpecificStreamInfo;
-
-    if( !streamInfo )
-    {
-        int usePlug = 0;
-        deviceInfo = GetDeviceInfo( hostApi, params->device );
-        
-        /* If device name starts with hw: and PA_ALSA_PLUGHW is 1, we open the plughw device instead */
-        if( !strncmp( "hw:", deviceInfo->alsaName, 3 ) && getenv( "PA_ALSA_PLUGHW" ) )
-            usePlug = atoi( getenv( "PA_ALSA_PLUGHW" ) );
-        if( usePlug )
-            snprintf( dnameArray, 50, "plug%s", deviceInfo->alsaName );
-        else
-            deviceName = deviceInfo->alsaName;
-    }
-    else
-        deviceName = streamInfo->deviceString;
-
-    PA_DEBUG(( "%s: Opening device %s\n", __FUNCTION__, deviceName ));
-    if( (ret = OpenPcm( pcm, deviceName, streamDir == StreamDirection_In ? SND_PCM_STREAM_CAPTURE : SND_PCM_STREAM_PLAYBACK,
-                    SND_PCM_NONBLOCK, 1 )) < 0 )
-    {
-        /* Not to be closed */
-        *pcm = NULL;
-        ENSURE_( ret, -EBUSY == ret ? paDeviceUnavailable : paBadIODeviceCombination );
-    }
-    ENSURE_( snd_pcm_nonblock( *pcm, 0 ), paUnanticipatedHostError );
-
-end:
-    return result;
-
-error:
-    goto end;
-}
-
-static PaError TestParameters( const PaUtilHostApiRepresentation *hostApi, const PaStreamParameters *parameters,
-        double sampleRate, StreamDirection streamDir )
-{
-    PaError result = paNoError;
-    snd_pcm_t *pcm = NULL;
-    PaSampleFormat availableFormats;
-    /* We are able to adapt to a number of channels less than what the device supports */
-    unsigned int numHostChannels;
-    PaSampleFormat hostFormat;
-    snd_pcm_hw_params_t *hwParams;
-    snd_pcm_hw_params_alloca( &hwParams );
-    
-    if( !parameters->hostApiSpecificStreamInfo )
-    {
-        const PaAlsaDeviceInfo *devInfo = GetDeviceInfo( hostApi, parameters->device );
-        numHostChannels = PA_MAX( parameters->channelCount, StreamDirection_In == streamDir ?
-                devInfo->minInputChannels : devInfo->minOutputChannels );
-    }
-    else
-        numHostChannels = parameters->channelCount;
-
-    PA_ENSURE( AlsaOpen( hostApi, parameters, streamDir, &pcm ) );
-
-    snd_pcm_hw_params_any( pcm, hwParams );
-
-    if( SetApproximateSampleRate( pcm, hwParams, sampleRate ) < 0 )
-    {
-        result = paInvalidSampleRate;
-        goto error;
-    }
-
-    if( snd_pcm_hw_params_set_channels( pcm, hwParams, numHostChannels ) < 0 )
-    {
-        result = paInvalidChannelCount;
-        goto error;
-    }
-
-    /* See if we can find a best possible match */
-    availableFormats = GetAvailableFormats( pcm );
-    PA_ENSURE( hostFormat = PaUtil_SelectClosestAvailableFormat( availableFormats, parameters->sampleFormat ) );
-    ENSURE_( snd_pcm_hw_params_set_format( pcm, hwParams, Pa2AlsaFormat( hostFormat ) ), paUnanticipatedHostError );
-
-    {
-        /* It happens that this call fails because the device is busy */
-        int ret = 0;
-        if( (ret = snd_pcm_hw_params( pcm, hwParams )) < 0)
-        {
-            if( -EINVAL == ret )
-            {
-                /* Don't know what to return here */
-                result = paBadIODeviceCombination;
-                goto error;
-            }
-            else if( -EBUSY == ret )
-            {
-                result = paDeviceUnavailable;
-                PA_DEBUG(( "%s: Device is busy\n", __FUNCTION__ ));
-            }
-            else
-            {
-                result = paUnanticipatedHostError;
-            }
-
-            ENSURE_( ret, result );
-        }
-    }
-
-end:
-    if( pcm )
-    {
-        snd_pcm_close( pcm );
-    }
-    return result;
-
-error:
-    goto end;
-}
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    int inputChannelCount = 0, outputChannelCount = 0;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaError result = paFormatIsSupported;
-
-    if( inputParameters )
-    {
-        PA_ENSURE( ValidateParameters( inputParameters, hostApi, StreamDirection_In ) );
-
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-    }
-
-    if( outputParameters )
-    {
-        PA_ENSURE( ValidateParameters( outputParameters, hostApi, StreamDirection_Out ) );
-
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-    }
-
-    if( inputChannelCount )
-    {
-        if( (result = TestParameters( hostApi, inputParameters, sampleRate, StreamDirection_In ))
-                != paNoError )
-            goto error;
-    }
-    if ( outputChannelCount )
-    {
-        if( (result = TestParameters( hostApi, outputParameters, sampleRate, StreamDirection_Out ))
-                != paNoError )
-            goto error;
-    }
-
-    return paFormatIsSupported;
-
-error:
-    return result;
-}
-
-static PaError PaAlsaStreamComponent_Initialize( PaAlsaStreamComponent *self, PaAlsaHostApiRepresentation *alsaApi,
-        const PaStreamParameters *params, StreamDirection streamDir, int callbackMode )
-{
-    PaError result = paNoError;
-    PaSampleFormat userSampleFormat = params->sampleFormat, hostSampleFormat;
-    assert( params->channelCount > 0 );
-
-    /* Make sure things have an initial value */
-    memset( self, 0, sizeof (PaAlsaStreamComponent) );
-
-    if( NULL == params->hostApiSpecificStreamInfo )
-    {
-        const PaAlsaDeviceInfo *devInfo = GetDeviceInfo( &alsaApi->baseHostApiRep, params->device );
-        self->numHostChannels = PA_MAX( params->channelCount, StreamDirection_In == streamDir ? devInfo->minInputChannels
-                : devInfo->minOutputChannels );
-    }
-    else
-    {
-        /* We're blissfully unaware of the minimum channelCount */
-        self->numHostChannels = params->channelCount;
-    }
-
-    self->device = params->device;
-
-    PA_ENSURE( AlsaOpen( &alsaApi->baseHostApiRep, params, streamDir, &self->pcm ) );
-    self->nfds = snd_pcm_poll_descriptors_count( self->pcm );
-    hostSampleFormat = PaUtil_SelectClosestAvailableFormat( GetAvailableFormats( self->pcm ), userSampleFormat );
-
-    self->hostSampleFormat = hostSampleFormat;
-    self->nativeFormat = Pa2AlsaFormat( hostSampleFormat );
-    self->hostInterleaved = self->userInterleaved = !(userSampleFormat & paNonInterleaved);
-    self->numUserChannels = params->channelCount;
-    self->streamDir = streamDir;
-
-    if( !callbackMode && !self->userInterleaved )
-    {
-        /* Pre-allocate non-interleaved user provided buffers */
-        PA_UNLESS( self->userBuffers = PaUtil_AllocateMemory( sizeof (void *) * self->numUserChannels ),
-                paInsufficientMemory );
-    }
-
-error:
-    return result;
-}
-
-static void PaAlsaStreamComponent_Terminate( PaAlsaStreamComponent *self )
-{
-    snd_pcm_close( self->pcm );
-    if( self->userBuffers )
-        PaUtil_FreeMemory( self->userBuffers );
-}
-
-/*
-static int nearbyint_(float value) {
-    if(  value - (int)value > .5 )
-        return (int)ceil( value );
-    return (int)floor( value );
-}
-*/
-
-/** Initiate configuration, preparing for determining a period size suitable for both capture and playback components.
- *
- */
-static PaError PaAlsaStreamComponent_InitialConfigure( PaAlsaStreamComponent *self, const PaStreamParameters *params,
-        int primeBuffers, snd_pcm_hw_params_t *hwParams, double *sampleRate )
-{
-    /* Configuration consists of setting all of ALSA's parameters.
-     * These parameters come in two flavors: hardware parameters
-     * and software paramters.  Hardware parameters will affect
-     * the way the device is initialized, software parameters
-     * affect the way ALSA interacts with me, the user-level client.
-     */
-
-    PaError result = paNoError;
-    snd_pcm_access_t accessMode, alternateAccessMode;
-    int dir = 0;
-    snd_pcm_t *pcm = self->pcm;
-    double sr = *sampleRate;
-    unsigned int minPeriods = 2;
-
-    /* self->framesPerBuffer = framesPerHostBuffer; */
-
-    /* ... fill up the configuration space with all possibile
-     * combinations of parameters this device will accept */
-    ENSURE_( snd_pcm_hw_params_any( pcm, hwParams ), paUnanticipatedHostError );
-
-    ENSURE_( snd_pcm_hw_params_set_periods_integer( pcm, hwParams ), paUnanticipatedHostError );
-    /* I think there should be at least 2 periods (even though ALSA doesn't appear to enforce this) */
-    dir = 0;
-    ENSURE_( snd_pcm_hw_params_set_periods_min( pcm, hwParams, &minPeriods, &dir ), paUnanticipatedHostError );
-
-    if( self->userInterleaved )
-    {
-        accessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED;
-        alternateAccessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
-    }
-    else
-    {
-        accessMode = SND_PCM_ACCESS_MMAP_NONINTERLEAVED;
-        alternateAccessMode = SND_PCM_ACCESS_MMAP_INTERLEAVED;
-    }
-    /* If requested access mode fails, try alternate mode */
-    if( snd_pcm_hw_params_set_access( pcm, hwParams, accessMode ) < 0 )
-    {
-        int err = 0;
-        if( (err = snd_pcm_hw_params_set_access( pcm, hwParams, alternateAccessMode )) < 0)
-        {
-            result = paUnanticipatedHostError;
-            if( -EINVAL == err )
-            {
-                PaUtil_SetLastHostErrorInfo( paALSA, err, "PA ALSA requires that a device supports mmap access" );
-            }
-            else
-            {
-                PaUtil_SetLastHostErrorInfo( paALSA, err, snd_strerror( err ) );
-            }
-            goto error;
-        }
-        /* Flip mode */
-        self->hostInterleaved = !self->userInterleaved;
-    }
-
-    ENSURE_( snd_pcm_hw_params_set_format( pcm, hwParams, self->nativeFormat ), paUnanticipatedHostError );
-
-    ENSURE_( SetApproximateSampleRate( pcm, hwParams, sr ), paInvalidSampleRate );
-    ENSURE_( GetExactSampleRate( hwParams, &sr ), paUnanticipatedHostError );
-    /* reject if there's no sample rate within 1% of the one requested */
-    if( (fabs( *sampleRate - sr ) / *sampleRate) > 0.01 )
-    {
-        PA_DEBUG(("%s: Wanted %f, closest sample rate was %d\n", __FUNCTION__, sampleRate, sr ));                 
-        PA_ENSURE( paInvalidSampleRate );
-    }
-
-    ENSURE_( snd_pcm_hw_params_set_channels( pcm, hwParams, self->numHostChannels ), paInvalidChannelCount );
-
-    *sampleRate = sr;
-
-end:
-    return result;
-
-error:
-    /* No particular action */
-    goto end;
-}
-
-/** Finish the configuration of the component's ALSA device.
- *
- * As part of this method, the component's bufferSize attribute will be set.
- * @param latency: The latency for this component.
- */
-static PaError PaAlsaStreamComponent_FinishConfigure( PaAlsaStreamComponent *self, snd_pcm_hw_params_t* hwParams,
-        const PaStreamParameters *params, int primeBuffers, double sampleRate, PaTime* latency )
-{
-    PaError result = paNoError;
-    snd_pcm_sw_params_t* swParams;
-    snd_pcm_uframes_t bufSz = 0;
-    *latency = -1.;
-
-    snd_pcm_sw_params_alloca( &swParams );
-
-    bufSz = params->suggestedLatency * sampleRate;
-    ENSURE_( snd_pcm_hw_params_set_buffer_size_near( self->pcm, hwParams, &bufSz ), paUnanticipatedHostError );
-
-    /* Set the parameters! */
-    {
-        int r = snd_pcm_hw_params( self->pcm, hwParams );
-#ifdef PA_ENABLE_DEBUG_OUTPUT
-        if( r < 0 )
-        {
-            snd_output_t *output = NULL;
-            snd_output_stdio_attach( &output, stderr, 0 );
-            snd_pcm_hw_params_dump( hwParams, output );
-        }
-#endif
-        ENSURE_(r, paUnanticipatedHostError );
-    }
-    ENSURE_( snd_pcm_hw_params_get_buffer_size( hwParams, &self->bufferSize ), paUnanticipatedHostError );
-    /* Latency in seconds */
-    *latency = self->bufferSize / sampleRate;
-
-    /* Now software parameters... */
-    ENSURE_( snd_pcm_sw_params_current( self->pcm, swParams ), paUnanticipatedHostError );
-
-    ENSURE_( snd_pcm_sw_params_set_start_threshold( self->pcm, swParams, self->framesPerBuffer ), paUnanticipatedHostError );
-    ENSURE_( snd_pcm_sw_params_set_stop_threshold( self->pcm, swParams, self->bufferSize ), paUnanticipatedHostError );
-
-    /* Silence buffer in the case of underrun */
-    if( !primeBuffers ) /* XXX: Make sense? */
-    {
-        snd_pcm_uframes_t boundary;
-        ENSURE_( snd_pcm_sw_params_get_boundary( swParams, &boundary ), paUnanticipatedHostError );
-        ENSURE_( snd_pcm_sw_params_set_silence_threshold( self->pcm, swParams, 0 ), paUnanticipatedHostError );
-        ENSURE_( snd_pcm_sw_params_set_silence_size( self->pcm, swParams, boundary ), paUnanticipatedHostError );
-    }
-        
-    ENSURE_( snd_pcm_sw_params_set_avail_min( self->pcm, swParams, self->framesPerBuffer ), paUnanticipatedHostError );
-    ENSURE_( snd_pcm_sw_params_set_xfer_align( self->pcm, swParams, 1 ), paUnanticipatedHostError );
-    ENSURE_( snd_pcm_sw_params_set_tstamp_mode( self->pcm, swParams, SND_PCM_TSTAMP_MMAP ), paUnanticipatedHostError );
-
-    /* Set the parameters! */
-    ENSURE_( snd_pcm_sw_params( self->pcm, swParams ), paUnanticipatedHostError );
-
-error:
-    return result;
-}
-
-static PaError PaAlsaStream_Initialize( PaAlsaStream *self, PaAlsaHostApiRepresentation *alsaApi, const PaStreamParameters *inParams,
-        const PaStreamParameters *outParams, double sampleRate, unsigned long framesPerUserBuffer, PaStreamCallback callback,
-        PaStreamFlags streamFlags, void *userData )
-{
-    PaError result = paNoError;
-    assert( self );
-
-    memset( self, 0, sizeof (PaAlsaStream) );
-
-    if( NULL != callback )
-    {
-        PaUtil_InitializeStreamRepresentation( &self->streamRepresentation,
-                                               &alsaApi->callbackStreamInterface,
-                                               callback, userData );
-        self->callbackMode = 1;
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &self->streamRepresentation,
-                                               &alsaApi->blockingStreamInterface,
-                                               NULL, userData );
-    }
-
-    self->framesPerUserBuffer = framesPerUserBuffer;
-    self->neverDropInput = streamFlags & paNeverDropInput;
-    /* XXX: Ignore paPrimeOutputBuffersUsingStreamCallback untill buffer priming is fully supported in pa_process.c */
-    /*
-    if( outParams & streamFlags & paPrimeOutputBuffersUsingStreamCallback )
-        self->primeBuffers = 1;
-        */
-    memset( &self->capture, 0, sizeof (PaAlsaStreamComponent) );
-    memset( &self->playback, 0, sizeof (PaAlsaStreamComponent) );
-    if( inParams )
-    {
-        PA_ENSURE( PaAlsaStreamComponent_Initialize( &self->capture, alsaApi, inParams, StreamDirection_In, NULL != callback ) );
-    }
-    if( outParams )
-    {
-        PA_ENSURE( PaAlsaStreamComponent_Initialize( &self->playback, alsaApi, outParams, StreamDirection_Out, NULL != callback ) );
-    }
-
-    assert( self->capture.nfds || self->playback.nfds );
-
-    PA_UNLESS( self->pfds = (struct pollfd*)PaUtil_AllocateMemory( (self->capture.nfds +
-                    self->playback.nfds) * sizeof (struct pollfd) ), paInsufficientMemory );
-
-    PaUtil_InitializeCpuLoadMeasurer( &self->cpuLoadMeasurer, sampleRate );
-    ASSERT_CALL_( PaUnixMutex_Initialize( &self->stateMtx ), paNoError );
-
-error:
-    return result;
-}
-
-/** Free resources associated with stream, and eventually stream itself.
- *
- * Frees allocated memory, and terminates individual StreamComponents.
- */
-static void PaAlsaStream_Terminate( PaAlsaStream *self )
-{
-    assert( self );
-
-    if( self->capture.pcm )
-    {
-        PaAlsaStreamComponent_Terminate( &self->capture );
-    }
-    if( self->playback.pcm )
-    {
-        PaAlsaStreamComponent_Terminate( &self->playback );
-    }
-
-    PaUtil_FreeMemory( self->pfds );
-    ASSERT_CALL_( PaUnixMutex_Terminate( &self->stateMtx ), paNoError );
-
-    PaUtil_FreeMemory( self );
-}
-
-/** Calculate polling timeout
- *
- * @param frames Time to wait
- * @return Polling timeout in milliseconds
- */
-static int CalculatePollTimeout( const PaAlsaStream *stream, unsigned long frames )
-{
-    assert( stream->streamRepresentation.streamInfo.sampleRate > 0.0 );
-    /* Period in msecs, rounded up */
-    return (int)ceil( 1000 * frames / stream->streamRepresentation.streamInfo.sampleRate );
-}
-
-/** Determine size per host buffer.
- *
- * During this method call, the component's framesPerBuffer attribute gets computed, and the corresponding period size
- * gets configured for the device.
- * @param accurate: If the configured period size is non-integer, this will be set to 0.
- */
-static PaError PaAlsaStreamComponent_DetermineFramesPerBuffer( PaAlsaStreamComponent* self, const PaStreamParameters* params,
-        unsigned long framesPerUserBuffer, double sampleRate, snd_pcm_hw_params_t* hwParams, int* accurate )
-{
-    PaError result = paNoError;
-    unsigned long bufferSize = params->suggestedLatency * sampleRate, framesPerHostBuffer;
-    int dir = 0;
-    
-    {
-        snd_pcm_uframes_t tmp;
-        snd_pcm_hw_params_get_buffer_size_min( hwParams, &tmp );
-        bufferSize = PA_MAX( bufferSize, tmp );
-        snd_pcm_hw_params_get_buffer_size_max( hwParams, &tmp );
-        bufferSize = PA_MIN( bufferSize, tmp );
-    }
-
-    assert( bufferSize > 0 );
-
-    if( framesPerUserBuffer != paFramesPerBufferUnspecified )
-    {
-        /* Preferably the host buffer size should be a multiple of the user buffer size */
-
-        if( bufferSize > framesPerUserBuffer )
-        {
-            snd_pcm_uframes_t remainder = bufferSize % framesPerUserBuffer;
-            if( remainder > framesPerUserBuffer / 2. )
-                bufferSize += framesPerUserBuffer - remainder;
-            else
-                bufferSize -= remainder;
-
-            assert( bufferSize % framesPerUserBuffer == 0 );
-        }
-        else if( framesPerUserBuffer % bufferSize != 0 )
-        {
-            /*  Find a good compromise between user specified latency and buffer size */
-            if( bufferSize > framesPerUserBuffer * .75 )
-            {
-                bufferSize = framesPerUserBuffer;
-            }
-            else
-            {
-                snd_pcm_uframes_t newSz = framesPerUserBuffer;
-                while( newSz / 2 >= bufferSize )
-                {
-                    if( framesPerUserBuffer % (newSz / 2) != 0 )
-                    {
-                        /* No use dividing any further */
-                        break;
-                    }
-                    newSz /= 2;
-                }
-                bufferSize = newSz;
-            }
-
-            assert( framesPerUserBuffer % bufferSize == 0 );
-        }
-    }
-
-    /* Using the base number of periods, we try to approximate the suggested latency (+1 period),
-       finding a combination of period/buffer size which best fits these constraints */
-    {
-        unsigned numPeriods = numPeriods_, maxPeriods = 0;
-        /* It may be that the device only supports 2 periods for instance */
-        dir = 0;
-        ENSURE_( snd_pcm_hw_params_get_periods_max( hwParams, &maxPeriods, &dir ), paUnanticipatedHostError );
-        assert( maxPeriods > 1 );
-        numPeriods = PA_MIN( maxPeriods, numPeriods );
-
-        if( framesPerUserBuffer != paFramesPerBufferUnspecified )
-        {
-            /* Try to get a power-of-two of the user buffer size. */
-            framesPerHostBuffer = framesPerUserBuffer;
-            if( framesPerHostBuffer < bufferSize )
-            {
-                while( bufferSize / framesPerHostBuffer > numPeriods )
-                {
-                    framesPerHostBuffer *= 2;
-                }
-                /* One extra period is preferrable to one less (should be more robust) */
-                if( bufferSize / framesPerHostBuffer < numPeriods )
-                {
-                    framesPerHostBuffer /= 2;
-                }
-            }
-            else
-            {
-                while( bufferSize / framesPerHostBuffer < numPeriods )
-                {
-                    if( framesPerUserBuffer % (framesPerHostBuffer / 2) != 0 )
-                    {
-                        /* Can't be divided any further */
-                        break;
-                    }
-                    framesPerHostBuffer /= 2;
-                }
-            }
-
-            if( framesPerHostBuffer < framesPerUserBuffer )
-            {
-                assert( framesPerUserBuffer % framesPerHostBuffer == 0 );
-                if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer, 0 ) < 0 )
-                {
-                    if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer * 2, 0 ) == 0 )
-                        framesPerHostBuffer *= 2;
-                    else if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer / 2, 0 ) == 0 )
-                        framesPerHostBuffer /= 2;
-                }
-            }
-            else
-            {
-                assert( framesPerHostBuffer % framesPerUserBuffer == 0 );
-                if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer, 0 ) < 0 )
-                {
-                    if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer + framesPerUserBuffer, 0 ) == 0 )
-                        framesPerHostBuffer += framesPerUserBuffer;
-                    else if( snd_pcm_hw_params_test_period_size( self->pcm, hwParams, framesPerHostBuffer - framesPerUserBuffer, 0 ) == 0 )
-                        framesPerHostBuffer -= framesPerUserBuffer;
-                }
-            }
-        }
-        else
-        {
-            framesPerHostBuffer = bufferSize / numPeriods;
-        }
-    }
-
-    assert( framesPerHostBuffer > 0 );
-    {
-        snd_pcm_uframes_t min = 0, max = 0;
-        ENSURE_( snd_pcm_hw_params_get_period_size_min( hwParams, &min, NULL ), paUnanticipatedHostError );
-        ENSURE_( snd_pcm_hw_params_get_period_size_max( hwParams, &max, NULL ), paUnanticipatedHostError );
-
-        if( framesPerHostBuffer < min )
-        {
-            PA_DEBUG(( "%s: The determined period size (%lu) is less than minimum (%lu)\n", __FUNCTION__,
-                        framesPerHostBuffer, min ));
-            framesPerHostBuffer = min;
-        }
-        else if( framesPerHostBuffer > max )
-        {
-            PA_DEBUG(( "%s: The determined period size (%lu) is greater than maximum (%lu)\n", __FUNCTION__,
-                        framesPerHostBuffer, max ));
-            framesPerHostBuffer = max;
-        }
-
-        assert( framesPerHostBuffer >= min && framesPerHostBuffer <= max );
-        dir = 0;
-        ENSURE_( snd_pcm_hw_params_set_period_size_near( self->pcm, hwParams, &framesPerHostBuffer, &dir ),
-                paUnanticipatedHostError );
-        if( dir != 0 )
-        {
-            PA_DEBUG(( "%s: The configured period size is non-integer.\n", __FUNCTION__, dir ));
-            *accurate = 0;
-        }
-    }
-    self->framesPerBuffer = framesPerHostBuffer;
-
-error:
-    return result;
-}
-
-/* We need to determine how many frames per host buffer (period) to use.  Our
- * goals are to provide the best possible performance, but also to
- * honor the requested latency settings as closely as we can. Therefore this
- * decision is based on:
- *
- *   - the period sizes that playback and/or capture support.  The
- *     host buffer size has to be one of these.
- *   - the number of periods that playback and/or capture support.
- *
- * We want to make period_size*(num_periods-1) to be as close as possible
- * to latency*rate for both playback and capture.
- *
- * This method will determine suitable period sizes for capture and playback handles, and report the maximum number of
- * frames per host buffer. The latter is relevant, in case we should be so unfortunate that the period size differs
- * between capture and playback. If this should happen, the stream's hostBufferSizeMode attribute will be set to
- * paUtilBoundedHostBufferSize, because the best we can do is limit the size of individual host buffers to the upper
- * bound. The size of host buffers scheduled for processing should only matter if the user has specified a buffer size,
- * but when he/she does we must strive for an optimal configuration. By default we'll opt for a fixed host buffer size,
- * which should be fine if the period size is the same for capture and playback. In general, if there is a specified user
- * buffer size, this method tries it best to determine a period size which is a multiple of the user buffer size.
- *
- * The framesPerBuffer attributes of the individual capture and playback components of the stream are set to corresponding
- * values determined here. Since these should be reported as 
- *
- * This is one of those blocks of code that will just take a lot of
- * refinement to be any good.
- *
- * In the full-duplex case it is possible that the routine was unable
- * to find a number of frames per buffer acceptable to both devices
- * TODO: Implement an algorithm to find the value closest to acceptance
- * by both devices, to minimize difference between period sizes?
- *
- * @param determinedFramesPerHostBuffer: The determined host buffer size.
- */
-static PaError PaAlsaStream_DetermineFramesPerBuffer( PaAlsaStream* self, double sampleRate, const PaStreamParameters* inputParameters,
-        const PaStreamParameters* outputParameters, unsigned long framesPerUserBuffer, snd_pcm_hw_params_t* hwParamsCapture,
-        snd_pcm_hw_params_t* hwParamsPlayback, PaUtilHostBufferSizeMode* hostBufferSizeMode )
-{
-    PaError result = paNoError;
-    unsigned long framesPerHostBuffer = 0;
-    int dir = 0;
-    int accurate = 1;
-    unsigned numPeriods = numPeriods_;
-
-    if( self->capture.pcm && self->playback.pcm )
-    {
-        if( framesPerUserBuffer == paFramesPerBufferUnspecified )
-        {
-            /* Come up with a common desired latency */
-            snd_pcm_uframes_t desiredBufSz, e, minPeriodSize, maxPeriodSize, optimalPeriodSize, periodSize,
-                              minCapture, minPlayback, maxCapture, maxPlayback;
-
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_get_period_size_min( hwParamsCapture, &minCapture, &dir ), paUnanticipatedHostError );
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_get_period_size_min( hwParamsPlayback, &minPlayback, &dir ), paUnanticipatedHostError );
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_get_period_size_max( hwParamsCapture, &maxCapture, &dir ), paUnanticipatedHostError );
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_get_period_size_max( hwParamsPlayback, &maxPlayback, &dir ), paUnanticipatedHostError );
-            minPeriodSize = PA_MAX( minPlayback, minCapture );
-            maxPeriodSize = PA_MIN( maxPlayback, maxCapture );
-            PA_UNLESS( minPeriodSize <= maxPeriodSize, paBadIODeviceCombination );
-
-            desiredBufSz = (snd_pcm_uframes_t)(PA_MIN( outputParameters->suggestedLatency, inputParameters->suggestedLatency )
-                    * sampleRate);
-            /* Clamp desiredBufSz */
-            {
-                snd_pcm_uframes_t maxBufferSize;
-                snd_pcm_uframes_t maxBufferSizeCapture, maxBufferSizePlayback;
-                ENSURE_( snd_pcm_hw_params_get_buffer_size_max( hwParamsCapture, &maxBufferSizeCapture ), paUnanticipatedHostError );
-                ENSURE_( snd_pcm_hw_params_get_buffer_size_max( hwParamsPlayback, &maxBufferSizePlayback ), paUnanticipatedHostError );
-                maxBufferSize = PA_MIN( maxBufferSizeCapture, maxBufferSizePlayback );
-
-                desiredBufSz = PA_MIN( desiredBufSz, maxBufferSize );
-            }
-
-            /* Find the closest power of 2 */
-            e = ilogb( minPeriodSize );
-            if( minPeriodSize & (minPeriodSize - 1) )
-                e += 1;
-            periodSize = (snd_pcm_uframes_t)pow( 2, e );
-
-            while( periodSize <= maxPeriodSize )
-            {
-                if( snd_pcm_hw_params_test_period_size( self->playback.pcm, hwParamsPlayback, periodSize, 0 ) >= 0 &&
-                        snd_pcm_hw_params_test_period_size( self->capture.pcm, hwParamsCapture, periodSize, 0 ) >= 0 )
-                {
-                    /* OK! */
-                    break;
-                }
-
-                periodSize *= 2;
-            }
-
-            optimalPeriodSize = PA_MAX( desiredBufSz / numPeriods, minPeriodSize );
-            optimalPeriodSize = PA_MIN( optimalPeriodSize, maxPeriodSize );
-
-            /* Find the closest power of 2 */
-            e = ilogb( optimalPeriodSize );
-            if( optimalPeriodSize & (optimalPeriodSize - 1) )
-                e += 1;
-            optimalPeriodSize = (snd_pcm_uframes_t)pow( 2, e );
-
-            while( optimalPeriodSize >= periodSize )
-            {
-                if( snd_pcm_hw_params_test_period_size( self->capture.pcm, hwParamsCapture, optimalPeriodSize, 0 )
-                        >= 0 && snd_pcm_hw_params_test_period_size( self->playback.pcm, hwParamsPlayback,
-                            optimalPeriodSize, 0 ) >= 0 )
-                {
-                    break;
-                }
-                optimalPeriodSize /= 2;
-            }
-        
-            if( optimalPeriodSize > periodSize )
-                periodSize = optimalPeriodSize;
-
-            if( periodSize <= maxPeriodSize )
-            {
-                /* Looks good, the periodSize _should_ be acceptable by both devices */
-                ENSURE_( snd_pcm_hw_params_set_period_size( self->capture.pcm, hwParamsCapture, periodSize, 0 ),
-                        paUnanticipatedHostError );
-                ENSURE_( snd_pcm_hw_params_set_period_size( self->playback.pcm, hwParamsPlayback, periodSize, 0 ),
-                        paUnanticipatedHostError );
-                self->capture.framesPerBuffer = self->playback.framesPerBuffer = periodSize;
-                framesPerHostBuffer = periodSize;
-            }
-            else
-            {
-                /* Unable to find a common period size, oh well */
-                optimalPeriodSize = PA_MAX( desiredBufSz / numPeriods, minPeriodSize );
-                optimalPeriodSize = PA_MIN( optimalPeriodSize, maxPeriodSize );
-
-                self->capture.framesPerBuffer = optimalPeriodSize;
-                dir = 0;
-                ENSURE_( snd_pcm_hw_params_set_period_size_near( self->capture.pcm, hwParamsCapture, &self->capture.framesPerBuffer, &dir ),
-                        paUnanticipatedHostError );
-                self->playback.framesPerBuffer = optimalPeriodSize;
-                dir = 0;
-                ENSURE_( snd_pcm_hw_params_set_period_size_near( self->playback.pcm, hwParamsPlayback, &self->playback.framesPerBuffer, &dir ),
-                        paUnanticipatedHostError );
-                framesPerHostBuffer = PA_MAX( self->capture.framesPerBuffer, self->playback.framesPerBuffer );
-                *hostBufferSizeMode = paUtilBoundedHostBufferSize;
-            }
-        }
-        else
-        {
-            /* We choose the simple route and determine a suitable number of frames per buffer for one component of
-             * the stream, then we hope that this will work for the other component too (it should!).
-             */
-
-            unsigned maxPeriods = 0;
-            PaAlsaStreamComponent* first = &self->capture, * second = &self->playback;
-            const PaStreamParameters* firstStreamParams = inputParameters;
-            snd_pcm_hw_params_t* firstHwParams = hwParamsCapture, * secondHwParams = hwParamsPlayback;
-
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_get_periods_max( hwParamsPlayback, &maxPeriods, &dir ), paUnanticipatedHostError );
-            if( maxPeriods < numPeriods )
-            {
-                /* The playback component is trickier to get right, try that first */
-                first = &self->playback;
-                second = &self->capture;
-                firstStreamParams = outputParameters;
-                firstHwParams = hwParamsPlayback;
-                secondHwParams = hwParamsCapture;
-            }
-
-            PA_ENSURE( PaAlsaStreamComponent_DetermineFramesPerBuffer( first, firstStreamParams, framesPerUserBuffer,
-                        sampleRate, firstHwParams, &accurate ) );
-
-            second->framesPerBuffer = first->framesPerBuffer;
-            dir = 0;
-            ENSURE_( snd_pcm_hw_params_set_period_size_near( second->pcm, secondHwParams, &second->framesPerBuffer, &dir ),
-                    paUnanticipatedHostError );
-            if( self->capture.framesPerBuffer == self->playback.framesPerBuffer )
-            {
-                framesPerHostBuffer = self->capture.framesPerBuffer;
-            }
-            else
-            {
-                framesPerHostBuffer = PA_MAX( self->capture.framesPerBuffer, self->playback.framesPerBuffer );
-                *hostBufferSizeMode = paUtilBoundedHostBufferSize;
-            }
-        }
-    }
-    else    /* half-duplex is a slightly simpler case */
-    {
-        if( self->capture.pcm )
-        {
-            PA_ENSURE( PaAlsaStreamComponent_DetermineFramesPerBuffer( &self->capture, inputParameters, framesPerUserBuffer,
-                        sampleRate, hwParamsCapture, &accurate) );
-            framesPerHostBuffer = self->capture.framesPerBuffer;
-        }
-        else
-        {
-            assert( self->playback.pcm );
-            PA_ENSURE( PaAlsaStreamComponent_DetermineFramesPerBuffer( &self->playback, outputParameters, framesPerUserBuffer,
-                        sampleRate, hwParamsPlayback, &accurate ) );
-            framesPerHostBuffer = self->playback.framesPerBuffer;
-        }
-    }
-
-    PA_UNLESS( framesPerHostBuffer != 0, paInternalError );
-    self->maxFramesPerHostBuffer = framesPerHostBuffer;
-
-    if( !accurate )
-    {
-        /* Don't know the exact size per host buffer */
-        *hostBufferSizeMode = paUtilBoundedHostBufferSize;
-        /* Raise upper bound */
-        ++self->maxFramesPerHostBuffer;
-    }
-
-error:
-    return result;
-}
-
-/** Set up ALSA stream parameters.
- *
- */
-static PaError PaAlsaStream_Configure( PaAlsaStream *self, const PaStreamParameters *inParams, const PaStreamParameters*
-        outParams, double sampleRate, unsigned long framesPerUserBuffer, double* inputLatency, double* outputLatency,
-        PaUtilHostBufferSizeMode* hostBufferSizeMode )
-{
-    PaError result = paNoError;
-    double realSr = sampleRate;
-    snd_pcm_hw_params_t* hwParamsCapture, * hwParamsPlayback;
-
-    snd_pcm_hw_params_alloca( &hwParamsCapture );
-    snd_pcm_hw_params_alloca( &hwParamsPlayback );
-
-    if( self->capture.pcm )
-        PA_ENSURE( PaAlsaStreamComponent_InitialConfigure( &self->capture, inParams, self->primeBuffers, hwParamsCapture,
-                    &realSr ) );
-    if( self->playback.pcm )
-        PA_ENSURE( PaAlsaStreamComponent_InitialConfigure( &self->playback, outParams, self->primeBuffers, hwParamsPlayback,
-                    &realSr ) );
-
-    PA_ENSURE( PaAlsaStream_DetermineFramesPerBuffer( self, realSr, inParams, outParams, framesPerUserBuffer,
-                hwParamsCapture, hwParamsPlayback, hostBufferSizeMode ) );
-
-    if( self->capture.pcm )
-    {
-        assert( self->capture.framesPerBuffer != 0 );
-        PA_ENSURE( PaAlsaStreamComponent_FinishConfigure( &self->capture, hwParamsCapture, inParams, self->primeBuffers, realSr,
-                    inputLatency ) );
-        PA_DEBUG(( "%s: Capture period size: %lu, latency: %f\n", __FUNCTION__, self->capture.framesPerBuffer, *inputLatency ));
-    }
-    if( self->playback.pcm )
-    {
-        assert( self->playback.framesPerBuffer != 0 );
-        PA_ENSURE( PaAlsaStreamComponent_FinishConfigure( &self->playback, hwParamsPlayback, outParams, self->primeBuffers, realSr,
-                    outputLatency ) );
-        PA_DEBUG(( "%s: Playback period size: %lu, latency: %f\n", __FUNCTION__, self->playback.framesPerBuffer, *outputLatency ));
-    }
-
-    /* Should be exact now */
-    self->streamRepresentation.streamInfo.sampleRate = realSr;
-
-    /* this will cause the two streams to automatically start/stop/prepare in sync.
-     * We only need to execute these operations on one of the pair.
-     * A: We don't want to do this on a blocking stream.
-     */
-    if( self->callbackMode && self->capture.pcm && self->playback.pcm )
-    {
-        int err = snd_pcm_link( self->capture.pcm, self->playback.pcm );
-        if( err == 0 )
-            self->pcmsSynced = 1;
-        else
-            PA_DEBUG(( "%s: Unable to sync pcms: %s\n", __FUNCTION__, snd_strerror( err ) ));
-    }
-
-    {
-        unsigned long minFramesPerHostBuffer = PA_MIN( self->capture.pcm ? self->capture.framesPerBuffer : ULONG_MAX,
-            self->playback.pcm ? self->playback.framesPerBuffer : ULONG_MAX );
-        self->pollTimeout = CalculatePollTimeout( self, minFramesPerHostBuffer );    /* Period in msecs, rounded up */
-
-        /* Time before watchdog unthrottles realtime thread == 1/4 of period time in msecs */
-        /* self->threading.throttledSleepTime = (unsigned long) (minFramesPerHostBuffer / sampleRate / 4 * 1000); */
-    }
-
-    if( self->callbackMode )
-    {
-        /* If the user expects a certain number of frames per callback we will either have to rely on block adaption
-         * (framesPerHostBuffer is not an integer multiple of framesPerBuffer) or we can simply align the number
-         * of host buffer frames with what the user specified */
-        if( self->framesPerUserBuffer != paFramesPerBufferUnspecified )
-        {
-            /* self->alignFrames = 1; */
-
-            /* Unless the ratio between number of host and user buffer frames is an integer we will have to rely
-             * on block adaption */
-        /*
-            if( framesPerHostBuffer % framesPerBuffer != 0 || (self->capture.pcm && self->playback.pcm &&
-                        self->capture.framesPerBuffer != self->playback.framesPerBuffer) )
-                self->useBlockAdaption = 1;
-            else
-                self->alignFrames = 1;
-        */
-        }
-    }
-
-error:
-    return result;
-}
-
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback* callback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaAlsaHostApiRepresentation *alsaHostApi = (PaAlsaHostApiRepresentation*)hostApi;
-    PaAlsaStream *stream = NULL;
-    PaSampleFormat hostInputSampleFormat = 0, hostOutputSampleFormat = 0;
-    PaSampleFormat inputSampleFormat = 0, outputSampleFormat = 0;
-    int numInputChannels = 0, numOutputChannels = 0;
-    PaTime inputLatency, outputLatency;
-    /* Operate with fixed host buffer size by default, since other modes will invariably lead to block adaption */
-    /* XXX: Use Bounded by default? Output tends to get stuttery with Fixed ... */
-    PaUtilHostBufferSizeMode hostBufferSizeMode = paUtilFixedHostBufferSize;
-
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag;
-
-    if( inputParameters )
-    {
-        PA_ENSURE( ValidateParameters( inputParameters, hostApi, StreamDirection_In ) );
-
-        numInputChannels = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-    }
-    if( outputParameters )
-    {
-        PA_ENSURE( ValidateParameters( outputParameters, hostApi, StreamDirection_Out ) );
-
-        numOutputChannels = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-    }
-
-    /* XXX: Why do we support this anyway? */
-    if( framesPerBuffer == paFramesPerBufferUnspecified && getenv( "PA_ALSA_PERIODSIZE" ) != NULL )
-    {
-        PA_DEBUG(( "%s: Getting framesPerBuffer from environment\n", __FUNCTION__ ));
-        framesPerBuffer = atoi( getenv("PA_ALSA_PERIODSIZE") );
-    }
-
-    PA_UNLESS( stream = (PaAlsaStream*)PaUtil_AllocateMemory( sizeof(PaAlsaStream) ), paInsufficientMemory );
-    PA_ENSURE( PaAlsaStream_Initialize( stream, alsaHostApi, inputParameters, outputParameters, sampleRate,
-                framesPerBuffer, callback, streamFlags, userData ) );
-
-    PA_ENSURE( PaAlsaStream_Configure( stream, inputParameters, outputParameters, sampleRate, framesPerBuffer,
-                &inputLatency, &outputLatency, &hostBufferSizeMode ) );
-    hostInputSampleFormat = stream->capture.hostSampleFormat;
-    hostOutputSampleFormat = stream->playback.hostSampleFormat;
-
-    PA_ENSURE( PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-                    numInputChannels, inputSampleFormat, hostInputSampleFormat,
-                    numOutputChannels, outputSampleFormat, hostOutputSampleFormat,
-                    sampleRate, streamFlags, framesPerBuffer, stream->maxFramesPerHostBuffer,
-                    hostBufferSizeMode, callback, userData ) );
-
-    /* Ok, buffer processor is initialized, now we can deduce it's latency */
-    if( numInputChannels > 0 )
-        stream->streamRepresentation.streamInfo.inputLatency = inputLatency + PaUtil_GetBufferProcessorInputLatency(
-                &stream->bufferProcessor );
-    if( numOutputChannels > 0 )
-        stream->streamRepresentation.streamInfo.outputLatency = outputLatency + PaUtil_GetBufferProcessorOutputLatency(
-                &stream->bufferProcessor );
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-    if( stream )
-    {
-        PA_DEBUG(( "%s: Stream in error, terminating\n", __FUNCTION__ ));
-        PaAlsaStream_Terminate( stream );
-    }
-
-    return result;
-}
-
-static PaError CloseStream( PaStream* s )
-{
-    PaError result = paNoError;
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-
-    PaAlsaStream_Terminate( stream );
-
-    return result;
-}
-
-static void SilenceBuffer( PaAlsaStream *stream )
-{
-    const snd_pcm_channel_area_t *areas;
-    snd_pcm_uframes_t frames = (snd_pcm_uframes_t)snd_pcm_avail_update( stream->playback.pcm ), offset;
-
-    snd_pcm_mmap_begin( stream->playback.pcm, &areas, &offset, &frames );
-    snd_pcm_areas_silence( areas, offset, stream->playback.numHostChannels, frames, stream->playback.nativeFormat );
-    snd_pcm_mmap_commit( stream->playback.pcm, offset, frames );
-}
-
-/** Start/prepare pcm(s) for streaming.
- *
- * Depending on wether the stream is in callback or blocking mode, we will respectively start or simply
- * prepare the playback pcm. If the buffer has _not_ been primed, we will in callback mode prepare and
- * silence the buffer before starting playback. In blocking mode we simply prepare, as the playback will
- * be started automatically as the user writes to output. 
- *
- * The capture pcm, however, will simply be prepared and started.
- */
-static PaError AlsaStart( PaAlsaStream *stream, int priming )
-{
-    PaError result = paNoError;
-
-    if( stream->playback.pcm )
-    {
-        if( stream->callbackMode )
-        {
-            if( !priming )
-            {
-                /* Buffer isn't primed, so prepare and silence */
-                ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError );
-                SilenceBuffer( stream );
-            }
-            ENSURE_( snd_pcm_start( stream->playback.pcm ), paUnanticipatedHostError );
-        }
-        else
-            ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError );
-    }
-    if( stream->capture.pcm && !stream->pcmsSynced )
-    {
-        ENSURE_( snd_pcm_prepare( stream->capture.pcm ), paUnanticipatedHostError );
-        /* For a blocking stream we want to start capture as well, since nothing will happen otherwise */
-        ENSURE_( snd_pcm_start( stream->capture.pcm ), paUnanticipatedHostError );
-    }
-
-end:
-    return result;
-error:
-    goto end;
-}
-
-/** Utility function for determining if pcms are in running state.
- *
- */
-#if 0
-static int IsRunning( PaAlsaStream *stream )
-{
-    int result = 0;
-
-    PA_ENSURE( PaUnixMutex_Lock( &stream->stateMtx ) );
-    if( stream->capture.pcm )
-    {
-        snd_pcm_state_t capture_state = snd_pcm_state( stream->capture.pcm );
-
-        if( capture_state == SND_PCM_STATE_RUNNING || capture_state == SND_PCM_STATE_XRUN
-                || capture_state == SND_PCM_STATE_DRAINING )
-        {
-            result = 1;
-            goto end;
-        }
-    }
-
-    if( stream->playback.pcm )
-    {
-        snd_pcm_state_t playback_state = snd_pcm_state( stream->playback.pcm );
-
-        if( playback_state == SND_PCM_STATE_RUNNING || playback_state == SND_PCM_STATE_XRUN
-                || playback_state == SND_PCM_STATE_DRAINING )
-        {
-            result = 1;
-            goto end;
-        }
-    }
-
-end:
-    ASSERT_CALL_( PaUnixMutex_Unlock( &stream->stateMtx ), paNoError );
-    return result;
-error:
-    goto error;
-}
-#endif
-
-static PaError StartStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaAlsaStream* stream = (PaAlsaStream*)s;
-    int streamStarted = 0;  /* So we can know wether we need to take the stream down */
-
-    /* Ready the processor */
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-
-    /* Set now, so we can test for activity further down */
-    stream->isActive = 1;
-
-    if( stream->callbackMode )
-    {
-        PA_ENSURE( PaUnixThread_New( &stream->thread, &CallbackThreadFunc, stream, 1., stream->rtSched ) );
-    }
-    else
-    {
-        PA_ENSURE( AlsaStart( stream, 0 ) );
-        streamStarted = 1;
-    }
-
-end:
-    return result;
-error:
-    if( streamStarted )
-    {
-        AbortStream( stream );
-    }
-    stream->isActive = 0;
-    
-    goto end;
-}
-
-/** Stop PCM handle, either softly or abruptly.
- */
-static PaError AlsaStop( PaAlsaStream *stream, int abort )
-{
-    PaError result = paNoError;
-    /* XXX: snd_pcm_drain tends to lock up, avoid it until we find out more */
-    abort = 1;
-    /*
-    if( stream->capture.pcm && !strcmp( Pa_GetDeviceInfo( stream->capture.device )->name,
-                "dmix" ) )
-    {
-        abort = 1;
-    }
-    else if( stream->playback.pcm && !strcmp( Pa_GetDeviceInfo( stream->playback.device )->name,
-                "dmix" ) )
-    {
-        abort = 1;
-    }
-    */
-
-    if( abort )
-    {
-        if( stream->playback.pcm )
-        {
-            ENSURE_( snd_pcm_drop( stream->playback.pcm ), paUnanticipatedHostError );
-        }
-        if( stream->capture.pcm && !stream->pcmsSynced )
-        {
-            ENSURE_( snd_pcm_drop( stream->capture.pcm ), paUnanticipatedHostError );
-        }
-
-        PA_DEBUG(( "%s: Dropped frames\n", __FUNCTION__ ));
-    }
-    else
-    {
-        if( stream->playback.pcm )
-        {
-            ENSURE_( snd_pcm_nonblock( stream->playback.pcm, 0 ), paUnanticipatedHostError );
-            if( snd_pcm_drain( stream->playback.pcm ) < 0 )
-            {
-                PA_DEBUG(( "%s: Draining playback handle failed!\n", __FUNCTION__ ));
-            }
-        }
-        if( stream->capture.pcm && !stream->pcmsSynced )
-        {
-            /* We don't need to retrieve any remaining frames */
-            if( snd_pcm_drain( stream->capture.pcm ) < 0 )
-            {
-                PA_DEBUG(( "%s: Draining capture handle failed!\n", __FUNCTION__ ));
-            }
-        }
-    }
-
-end:
-    return result;
-error:
-    goto end;
-}
-
-/** Stop or abort stream.
- *
- * If a stream is in callback mode we will have to inspect wether the background thread has
- * finished, or we will have to take it out. In either case we join the thread before
- * returning. In blocking mode, we simply tell ALSA to stop abruptly (abort) or finish
- * buffers (drain)
- *
- * Stream will be considered inactive (!PaAlsaStream::isActive) after a call to this function
- */
-static PaError RealStop( PaAlsaStream *stream, int abort )
-{
-    PaError result = paNoError;
-
-    /* First deal with the callback thread, cancelling and/or joining
-     * it if necessary
-     */
-    if( stream->callbackMode )
-    {
-        PaError threadRes;
-        stream->callbackAbort = abort;
-
-        if( !abort )
-        {
-            PA_DEBUG(( "Stopping callback\n" ));
-        }
-        PA_ENSURE( PaUnixThread_Terminate( &stream->thread, !abort, &threadRes ) );
-        if( threadRes != paNoError )
-        {
-            PA_DEBUG(( "Callback thread returned: %d\n", threadRes ));
-        }
-#if 0
-        if( watchdogRes != paNoError )
-            PA_DEBUG(( "Watchdog thread returned: %d\n", watchdogRes ));
-#endif
-
-        stream->callback_finished = 0;
-    }
-    else
-    {
-        PA_ENSURE( AlsaStop( stream, abort ) );
-    }
-
-    stream->isActive = 0;
-
-end:
-    return result;
-
-error:
-    goto end;
-}
-
-static PaError StopStream( PaStream *s )
-{
-    return RealStop( (PaAlsaStream *) s, 0 );
-}
-
-static PaError AbortStream( PaStream *s )
-{
-    return RealStop( (PaAlsaStream * ) s, 1 );
-}
-
-/** The stream is considered stopped before StartStream, or AFTER a call to Abort/StopStream (callback
- * returning !paContinue is not considered)
- *
- */
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaAlsaStream *stream = (PaAlsaStream *)s;
-
-    /* callback_finished indicates we need to join callback thread (ie. in Abort/StopStream) */
-    return !IsStreamActive( s ) && !stream->callback_finished;
-}
-
-static PaError IsStreamActive( PaStream *s )
-{
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-    return stream->isActive;
-}
-
-static PaTime GetStreamTime( PaStream *s )
-{
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-
-    snd_timestamp_t timestamp;
-    snd_pcm_status_t* status;
-    snd_pcm_status_alloca( &status );
-
-    /* TODO: what if we have both?  does it really matter? */
-
-    /* TODO: if running in callback mode, this will mean
-     * libasound routines are being called from multiple threads.
-     * need to verify that libasound is thread-safe. */
-
-    if( stream->capture.pcm )
-    {
-        snd_pcm_status( stream->capture.pcm, status );
-    }
-    else if( stream->playback.pcm )
-    {
-        snd_pcm_status( stream->playback.pcm, status );
-    }
-
-    snd_pcm_status_get_tstamp( status, &timestamp );
-    return timestamp.tv_sec + (PaTime)timestamp.tv_usec / 1e6;
-}
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
-
-static int SetApproximateSampleRate( snd_pcm_t *pcm, snd_pcm_hw_params_t *hwParams, double sampleRate )
-{
-    unsigned long approx = (unsigned long) sampleRate;
-    int dir = 0;
-    double fraction = sampleRate - approx;
-
-    assert( pcm && hwParams );
-
-    if( fraction > 0.0 )
-    {
-        if( fraction > 0.5 )
-        {
-            ++approx;
-            dir = -1;
-        }
-        else
-            dir = 1;
-    }
-
-    return snd_pcm_hw_params_set_rate( pcm, hwParams, approx, dir );
-}
-
-/* Return exact sample rate in param sampleRate */
-static int GetExactSampleRate( snd_pcm_hw_params_t *hwParams, double *sampleRate )
-{
-    unsigned int num, den;
-    int err; 
-
-    assert( hwParams );
-
-    err = snd_pcm_hw_params_get_rate_numden( hwParams, &num, &den );
-    *sampleRate = (double) num / den;
-
-    return err;
-}
-
-/* Utility functions for blocking/callback interfaces */
-
-/* Atomic restart of stream (we don't want the intermediate state visible) */
-static PaError AlsaRestart( PaAlsaStream *stream )
-{
-    PaError result = paNoError;
-
-    PA_ENSURE( PaUnixMutex_Lock( &stream->stateMtx ) );
-    PA_ENSURE( AlsaStop( stream, 0 ) );
-    PA_ENSURE( AlsaStart( stream, 0 ) );
-
-    PA_DEBUG(( "%s: Restarted audio\n", __FUNCTION__ ));
-
-error:
-    PA_ENSURE( PaUnixMutex_Unlock( &stream->stateMtx ) );
-
-    return result;
-}
-
-/** Recover from xrun state.
- *
- */
-static PaError PaAlsaStream_HandleXrun( PaAlsaStream *self )
-{
-    PaError result = paNoError;
-    snd_pcm_status_t *st;
-    PaTime now = PaUtil_GetTime();
-    snd_timestamp_t t;
-
-    snd_pcm_status_alloca( &st );
-
-    if( self->playback.pcm )
-    {
-        snd_pcm_status( self->playback.pcm, st );
-        if( snd_pcm_status_get_state( st ) == SND_PCM_STATE_XRUN )
-        {
-            snd_pcm_status_get_trigger_tstamp( st, &t );
-            self->underrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime) t.tv_usec / 1000);
-        }
-    }
-    if( self->capture.pcm )
-    {
-        snd_pcm_status( self->capture.pcm, st );
-        if( snd_pcm_status_get_state( st ) == SND_PCM_STATE_XRUN )
-        {
-            snd_pcm_status_get_trigger_tstamp( st, &t );
-            self->overrun = now * 1000 - ((PaTime) t.tv_sec * 1000 + (PaTime) t.tv_usec / 1000);
-        }
-    }
-
-    PA_ENSURE( AlsaRestart( self ) );
-
-end:
-    return result;
-error:
-    goto end;
-}
-
-/** Decide if we should continue polling for specified direction, eventually adjust the poll timeout.
- * 
- */
-static PaError ContinuePoll( const PaAlsaStream *stream, StreamDirection streamDir, int *pollTimeout, int *continuePoll )
-{
-    PaError result = paNoError;
-    snd_pcm_sframes_t delay, margin;
-    int err;
-    const PaAlsaStreamComponent *component = NULL, *otherComponent = NULL;
-
-    *continuePoll = 1;
-
-    if( StreamDirection_In == streamDir )
-    {
-        component = &stream->capture;
-        otherComponent = &stream->playback;
-    }
-    else
-    {
-        component = &stream->playback;
-        otherComponent = &stream->capture;
-    }
-
-    /* ALSA docs say that negative delay should indicate xrun, but in my experience snd_pcm_delay returns -EPIPE */
-    if( (err = snd_pcm_delay( otherComponent->pcm, &delay )) < 0 )
-    {
-        if( err == -EPIPE )
-        {
-            /* Xrun */
-            *continuePoll = 0;
-            goto error;
-        }
-
-        ENSURE_( err, paUnanticipatedHostError );
-    }
-
-    if( StreamDirection_Out == streamDir )
-    {
-        /* Number of eligible frames before capture overrun */
-        delay = otherComponent->bufferSize - delay;
-    }
-    margin = delay - otherComponent->framesPerBuffer / 2;
-
-    if( margin < 0 )
-    {
-        PA_DEBUG(( "%s: Stopping poll for %s\n", __FUNCTION__, StreamDirection_In == streamDir ? "capture" : "playback" ));
-        *continuePoll = 0;
-    }
-    else if( margin < otherComponent->framesPerBuffer )
-    {
-        *pollTimeout = CalculatePollTimeout( stream, margin );
-        PA_DEBUG(( "%s: Trying to poll again for %s frames, pollTimeout: %d\n",
-                    __FUNCTION__, StreamDirection_In == streamDir ? "capture" : "playback", *pollTimeout ));
-    }
-
-error:
-    return result;
-}
-
-/* Callback interface */
-
-static void OnExit( void *data )
-{
-    PaAlsaStream *stream = (PaAlsaStream *) data;
-
-    assert( data );
-
-    PaUtil_ResetCpuLoadMeasurer( &stream->cpuLoadMeasurer );
-
-    stream->callback_finished = 1;  /* Let the outside world know stream was stopped in callback */
-    PA_DEBUG(( "%s: Stopping ALSA handles\n", __FUNCTION__ ));
-    AlsaStop( stream, stream->callbackAbort );
-    
-    PA_DEBUG(( "%s: Stoppage\n", __FUNCTION__ ));
-
-    /* Eventually notify user all buffers have played */
-    if( stream->streamRepresentation.streamFinishedCallback )
-    {
-        stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-    stream->isActive = 0;
-}
-
-static void CalculateTimeInfo( PaAlsaStream *stream, PaStreamCallbackTimeInfo *timeInfo )
-{
-    snd_pcm_status_t *capture_status, *playback_status;
-    snd_timestamp_t capture_timestamp, playback_timestamp;
-    PaTime capture_time = 0., playback_time = 0.;
-
-    snd_pcm_status_alloca( &capture_status );
-    snd_pcm_status_alloca( &playback_status );
-
-    if( stream->capture.pcm )
-    {
-        snd_pcm_sframes_t capture_delay;
-
-        snd_pcm_status( stream->capture.pcm, capture_status );
-        snd_pcm_status_get_tstamp( capture_status, &capture_timestamp );
-
-        capture_time = capture_timestamp.tv_sec +
-            ((PaTime)capture_timestamp.tv_usec / 1000000.0);
-        timeInfo->currentTime = capture_time;
-
-        capture_delay = snd_pcm_status_get_delay( capture_status );
-        timeInfo->inputBufferAdcTime = timeInfo->currentTime -
-            (PaTime)capture_delay / stream->streamRepresentation.streamInfo.sampleRate;
-    }
-    if( stream->playback.pcm )
-    {
-        snd_pcm_sframes_t playback_delay;
-
-        snd_pcm_status( stream->playback.pcm, playback_status );
-        snd_pcm_status_get_tstamp( playback_status, &playback_timestamp );
-
-        playback_time = playback_timestamp.tv_sec +
-            ((PaTime)playback_timestamp.tv_usec / 1000000.0);
-
-        if( stream->capture.pcm ) /* Full duplex */
-        {
-            /* Hmm, we have both a playback and a capture timestamp.
-             * Hopefully they are the same... */
-            if( fabs( capture_time - playback_time ) > 0.01 )
-                PA_DEBUG(("Capture time and playback time differ by %f\n", fabs(capture_time-playback_time)));
-        }
-        else
-            timeInfo->currentTime = playback_time;
-
-        playback_delay = snd_pcm_status_get_delay( playback_status );
-        timeInfo->outputBufferDacTime = timeInfo->currentTime +
-            (PaTime)playback_delay / stream->streamRepresentation.streamInfo.sampleRate;
-    }
-}
-
-/** Called after buffer processing is finished.
- *
- * A number of mmapped frames is committed, it is possible that an xrun has occurred in the meantime.
- *
- * @param numFrames The number of frames that has been processed
- * @param xrun Return whether an xrun has occurred
- */
-static PaError PaAlsaStreamComponent_EndProcessing( PaAlsaStreamComponent *self, unsigned long numFrames, int *xrun )
-{
-    PaError result = paNoError;
-    int res;
-
-    /* @concern FullDuplex It is possible that only one direction is marked ready after polling, and processed
-     * afterwards
-     */
-    if( !self->ready )
-        goto end;
-
-    res = snd_pcm_mmap_commit( self->pcm, self->offset, numFrames );
-    if( res == -EPIPE || res == -ESTRPIPE )
-    {
-        *xrun = 1;
-    }
-    else
-    {
-        ENSURE_( res, paUnanticipatedHostError );
-    }
-
-end:
-error:
-    return result;
-}
-
-/* Extract buffer from channel area */
-static unsigned char *ExtractAddress( const snd_pcm_channel_area_t *area, snd_pcm_uframes_t offset )
-{
-    return (unsigned char *) area->addr + (area->first + offset * area->step) / 8;
-}
-
-/** Do necessary adaption between user and host channels.
- *
-    @concern ChannelAdaption Adapting between user and host channels can involve silencing unused channels and
-    duplicating mono information if host outputs come in pairs.
- */
-static PaError PaAlsaStreamComponent_DoChannelAdaption( PaAlsaStreamComponent *self, PaUtilBufferProcessor *bp, int numFrames )
-{
-    PaError result = paNoError;
-    unsigned char *p;
-    int i;
-    int unusedChans = self->numHostChannels - self->numUserChannels;
-    unsigned char *src, *dst;
-    int convertMono = (self->numHostChannels % 2) == 0 && (self->numUserChannels % 2) != 0;
-
-    assert( StreamDirection_Out == self->streamDir );
-
-    if( self->hostInterleaved )
-    {
-        int swidth = snd_pcm_format_size( self->nativeFormat, 1 );
-        unsigned char *buffer = ExtractAddress( self->channelAreas, self->offset );
-
-        /* Start after the last user channel */
-        p = buffer + self->numUserChannels * swidth;
-
-        if( convertMono )
-        {
-            /* Convert the last user channel into stereo pair */
-            src = buffer + (self->numUserChannels - 1) * swidth;
-            for( i = 0; i < numFrames; ++i )
-            {
-                dst = src + swidth;
-                memcpy( dst, src, swidth );
-                src += self->numHostChannels * swidth;
-            }
-
-            /* Don't touch the channel we just wrote to */
-            p += swidth;
-            --unusedChans;
-        }
-
-        if( unusedChans > 0 )
-        {
-            /* Silence unused output channels */
-            for( i = 0; i < numFrames; ++i )
-            {
-                memset( p, 0, swidth * unusedChans );
-                p += self->numHostChannels * swidth;
-            }
-        }
-    }
-    else
-    {
-        /* We extract the last user channel */
-        if( convertMono )
-        {
-            ENSURE_( snd_pcm_area_copy( self->channelAreas + self->numUserChannels, self->offset, self->channelAreas +
-                    (self->numUserChannels - 1), self->offset, numFrames, self->nativeFormat ), paUnanticipatedHostError );
-            --unusedChans;
-        }
-        if( unusedChans > 0 )
-        {
-            snd_pcm_areas_silence( self->channelAreas + (self->numHostChannels - unusedChans), self->offset, unusedChans, numFrames,
-                    self->nativeFormat );
-        }
-    }
-
-error:
-    return result;
-}
-
-static PaError PaAlsaStream_EndProcessing( PaAlsaStream *self, unsigned long numFrames, int *xrunOccurred )
-{
-    PaError result = paNoError;
-    int xrun = 0;
-
-    if( self->capture.pcm )
-    {
-        PA_ENSURE( PaAlsaStreamComponent_EndProcessing( &self->capture, numFrames, &xrun ) );
-    }
-    if( self->playback.pcm )
-    {
-        if( self->playback.numHostChannels > self->playback.numUserChannels )
-        {
-            PA_ENSURE( PaAlsaStreamComponent_DoChannelAdaption( &self->playback, &self->bufferProcessor, numFrames ) );
-        }
-        PA_ENSURE( PaAlsaStreamComponent_EndProcessing( &self->playback, numFrames, &xrun ) );
-    }
-
-error:
-    *xrunOccurred = xrun;
-    return result;
-}
-
-/** Update the number of available frames.
- *
- */
-static PaError PaAlsaStreamComponent_GetAvailableFrames( PaAlsaStreamComponent *self, unsigned long *numFrames, int *xrunOccurred )
-{
-    PaError result = paNoError;
-    snd_pcm_sframes_t framesAvail = snd_pcm_avail_update( self->pcm );
-    *xrunOccurred = 0;
-
-    if( -EPIPE == framesAvail )
-    {
-        *xrunOccurred = 1;
-        framesAvail = 0;
-    }
-    else
-    {
-        ENSURE_( framesAvail, paUnanticipatedHostError );
-    }
-
-    *numFrames = framesAvail;
-
-error:
-    return result;
-}
-
-/** Fill in pollfd objects.
- */
-static PaError PaAlsaStreamComponent_BeginPolling( PaAlsaStreamComponent* self, struct pollfd* pfds )
-{
-    PaError result = paNoError;
-    int ret = snd_pcm_poll_descriptors( self->pcm, pfds, self->nfds );
-    (void)ret;  /* Prevent unused variable warning if asserts are turned off */
-    assert( ret == self->nfds );
-
-    self->ready = 0;
-
-    return result;
-}
-
-/** Examine results from poll().
- *
- * @param pfds pollfds to inspect
- * @param shouldPoll Should we continue to poll
- * @param xrun Has an xrun occurred
- */
-static PaError PaAlsaStreamComponent_EndPolling( PaAlsaStreamComponent* self, struct pollfd* pfds, int* shouldPoll, int* xrun )
-{
-    PaError result = paNoError;
-    unsigned short revents;
-
-    ENSURE_( snd_pcm_poll_descriptors_revents( self->pcm, pfds, self->nfds, &revents ), paUnanticipatedHostError );
-    if( revents != 0 )
-    {
-        if( revents & POLLERR )
-        {
-            *xrun = 1;
-        }
-        else
-            self->ready = 1;
-
-        *shouldPoll = 0;
-    }
-
-error:
-    return result;
-}
-
-/** Return the number of available frames for this stream.
- *
- * @concern FullDuplex The minimum available for the two directions is calculated, it might be desirable to ignore
- * one direction however (not marked ready from poll), so this is controlled by queryCapture and queryPlayback.
- *
- * @param queryCapture Check available for capture
- * @param queryPlayback Check available for playback
- * @param available The returned number of frames
- * @param xrunOccurred Return whether an xrun has occurred
- */
-static PaError PaAlsaStream_GetAvailableFrames( PaAlsaStream *self, int queryCapture, int queryPlayback, unsigned long
-        *available, int *xrunOccurred )
-{
-    PaError result = paNoError;
-    unsigned long captureFrames, playbackFrames;
-    *xrunOccurred = 0;
-
-    assert( queryCapture || queryPlayback );
-
-    if( queryCapture )
-    {
-        assert( self->capture.pcm );
-        PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( &self->capture, &captureFrames, xrunOccurred ) );
-        if( *xrunOccurred )
-        {
-            goto end;
-        }
-    }
-    if( queryPlayback )
-    {
-        assert( self->playback.pcm );
-        PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( &self->playback, &playbackFrames, xrunOccurred ) );
-        if( *xrunOccurred )
-        {
-            goto end;
-        }
-    }
-
-    if( queryCapture && queryPlayback )
-    {
-        *available = PA_MIN( captureFrames, playbackFrames );
-        /*PA_DEBUG(("capture: %lu, playback: %lu, combined: %lu\n", captureFrames, playbackFrames, *available));*/
-    }
-    else if( queryCapture )
-    {
-        *available = captureFrames;
-    }
-    else
-    {
-        *available = playbackFrames;
-    }
-
-end:
-error:
-    return result;
-}
-
-/** Wait for and report available buffer space from ALSA.
- *
- * Unless ALSA reports a minimum of frames available for I/O, we poll the ALSA filedescriptors for more.
- * Both of these operations can uncover xrun conditions.
- *
- * @concern Xruns Both polling and querying available frames can report an xrun condition.
- *
- * @param framesAvail Return the number of available frames
- * @param xrunOccurred Return whether an xrun has occurred
- */ 
-static PaError PaAlsaStream_WaitForFrames( PaAlsaStream *self, unsigned long *framesAvail, int *xrunOccurred )
-{
-    PaError result = paNoError;
-    int pollPlayback = self->playback.pcm != NULL, pollCapture = self->capture.pcm != NULL;
-    int pollTimeout = self->pollTimeout;
-    int xrun = 0;
-
-    assert( self );
-    assert( framesAvail );
-
-    if( !self->callbackMode )
-    {
-        /* In blocking mode we will only wait if necessary */
-        PA_ENSURE( PaAlsaStream_GetAvailableFrames( self, self->capture.pcm != NULL, self->playback.pcm != NULL,
-                    framesAvail, &xrun ) );
-        if( xrun )
-        {
-            goto end;
-        }
-
-        if( *framesAvail > 0 )
-        {
-            /* Mark pcms ready from poll */
-            if( self->capture.pcm )
-                self->capture.ready = 1;
-            if( self->playback.pcm )
-                self->playback.ready = 1;
-
-            goto end;
-        }
-    }
-
-    while( pollPlayback || pollCapture )
-    {
-        int totalFds = 0;
-        struct pollfd *capturePfds = NULL, *playbackPfds = NULL;
-
-        pthread_testcancel();
-
-        if( pollCapture )
-        {
-            capturePfds = self->pfds;
-            PA_ENSURE( PaAlsaStreamComponent_BeginPolling( &self->capture, capturePfds ) );
-            totalFds += self->capture.nfds;
-        }
-        if( pollPlayback )
-        {
-            playbackPfds = self->pfds + (self->capture.pcm ? self->capture.nfds : 0);
-            PA_ENSURE( PaAlsaStreamComponent_BeginPolling( &self->playback, playbackPfds ) );
-            totalFds += self->playback.nfds;
-        }
-        
-        if( poll( self->pfds, totalFds, pollTimeout ) < 0 )
-        {
-            /*  XXX: Depend on preprocessor condition? */
-            if( errno == EINTR )
-            {
-                /* gdb */
-                continue;
-            }
-
-            /* TODO: Add macro for checking system calls */
-            PA_ENSURE( paInternalError );
-        }
-
-        /* check the return status of our pfds */
-        if( pollCapture )
-        {
-            PA_ENSURE( PaAlsaStreamComponent_EndPolling( &self->capture, capturePfds, &pollCapture, &xrun ) );
-        }
-        if( pollPlayback )
-        {
-            PA_ENSURE( PaAlsaStreamComponent_EndPolling( &self->playback, playbackPfds, &pollPlayback, &xrun ) );
-        }
-        if( xrun )
-        {
-            break;
-        }
-
-        /* @concern FullDuplex If only one of two pcms is ready we may want to compromise between the two.
-         * If there is less than half a period's worth of samples left of frames in the other pcm's buffer we will
-         * stop polling.
-         */
-        if( self->capture.pcm && self->playback.pcm )
-        {
-            if( pollCapture && !pollPlayback )
-            {
-                PA_ENSURE( ContinuePoll( self, StreamDirection_In, &pollTimeout, &pollCapture ) );
-            }
-            else if( pollPlayback && !pollCapture )
-            {
-                PA_ENSURE( ContinuePoll( self, StreamDirection_Out, &pollTimeout, &pollPlayback ) );
-            }
-        }
-    }
-
-    if( !xrun )
-    {
-        /* Get the number of available frames for the pcms that are marked ready.
-         * @concern FullDuplex If only one direction is marked ready (from poll), the number of frames available for
-         * the other direction is returned. Output is normally preferred over capture however, so capture frames may be
-         * discarded to avoid overrun unless paNeverDropInput is specified.
-         */
-        int captureReady = self->capture.pcm ? self->capture.ready : 0,
-            playbackReady = self->playback.pcm ? self->playback.ready : 0;
-        PA_ENSURE( PaAlsaStream_GetAvailableFrames( self, captureReady, playbackReady, framesAvail, &xrun ) );
-
-        if( self->capture.pcm && self->playback.pcm )
-        {
-            if( !self->playback.ready && !self->neverDropInput )
-            {
-                /* Drop input, a period's worth */
-                assert( self->capture.ready );
-                PaAlsaStreamComponent_EndProcessing( &self->capture, PA_MIN( self->capture.framesPerBuffer,
-                            *framesAvail ), &xrun );
-                *framesAvail = 0;
-                self->capture.ready = 0;
-            }
-        }
-        else if( self->capture.pcm )
-            assert( self->capture.ready );
-        else
-            assert( self->playback.ready );
-    }
-
-end:
-error:
-    if( xrun )
-    {
-        /* Recover from the xrun state */
-        PA_ENSURE( PaAlsaStream_HandleXrun( self ) );
-        *framesAvail = 0;
-    }
-    else
-    {
-        if( 0 != *framesAvail )
-        {
-            /* If we're reporting frames eligible for processing, one of the handles better be ready */
-            PA_UNLESS( self->capture.ready || self->playback.ready, paInternalError );
-        }
-    }
-    *xrunOccurred = xrun;
-
-    return result;
-}
-
-/** Register per-channel ALSA buffer information with buffer processor.
- *
- * Mmapped buffer space is acquired from ALSA, and registered with the buffer processor. Differences between the
- * number of host and user channels is taken into account.
- * 
- * @param numFrames On entrance the number of requested frames, on exit the number of contiguously accessible frames.
- */
-static PaError PaAlsaStreamComponent_RegisterChannels( PaAlsaStreamComponent* self, PaUtilBufferProcessor* bp,
-        unsigned long* numFrames, int* xrun )
-{
-    PaError result = paNoError;
-    const snd_pcm_channel_area_t *areas, *area;
-    void (*setChannel)(PaUtilBufferProcessor *, unsigned int, void *, unsigned int) =
-        StreamDirection_In == self->streamDir ? PaUtil_SetInputChannel : PaUtil_SetOutputChannel;
-    unsigned char *buffer, *p;
-    int i;
-    unsigned long framesAvail;
-
-    /* This _must_ be called before mmap_begin */
-    PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( self, &framesAvail, xrun ) );
-    if( *xrun )
-    {
-        *numFrames = 0;
-        goto end;
-    }
-
-    ENSURE_( snd_pcm_mmap_begin( self->pcm, &areas, &self->offset, numFrames ), paUnanticipatedHostError );
-
-    if( self->hostInterleaved )
-    {
-        int swidth = snd_pcm_format_size( self->nativeFormat, 1 );
-
-        p = buffer = ExtractAddress( areas, self->offset );
-        for( i = 0; i < self->numUserChannels; ++i )
-        {
-            /* We're setting the channels up to userChannels, but the stride will be hostChannels samples */
-            setChannel( bp, i, p, self->numHostChannels );
-            p += swidth;
-        }
-    }
-    else
-    {
-        for( i = 0; i < self->numUserChannels; ++i )
-        {
-            area = areas + i;
-            buffer = ExtractAddress( area, self->offset );
-            setChannel( bp, i, buffer, 1 );
-        }
-    }
-
-    /* @concern ChannelAdaption Buffer address is recorded so we can do some channel adaption later */
-    self->channelAreas = (snd_pcm_channel_area_t *)areas;
-
-end:
-error:
-    return result;
-}
-
-/** Initiate buffer processing.
- *
- * ALSA buffers are registered with the PA buffer processor and the buffer size (in frames) set.
- *
- * @concern FullDuplex If both directions are being processed, the minimum amount of frames for the two directions is
- * calculated.
- *
- * @param numFrames On entrance the number of available frames, on exit the number of received frames
- * @param xrunOccurred Return whether an xrun has occurred
- */
-static PaError PaAlsaStream_SetUpBuffers( PaAlsaStream* self, unsigned long* numFrames, int* xrunOccurred )
-{
-    PaError result = paNoError;
-    unsigned long captureFrames = ULONG_MAX, playbackFrames = ULONG_MAX, commonFrames = 0;
-    int xrun = 0;
-
-    if( *xrunOccurred )
-    {
-        *numFrames = 0;
-        return result;
-    }
-    /* If we got here at least one of the pcm's should be marked ready */
-    PA_UNLESS( self->capture.ready || self->playback.ready, paInternalError );
-
-    /* Extract per-channel ALSA buffer pointers and register them with the buffer processor.
-     * It is possible that a direction is not marked ready however, because it is out of sync with the other.
-     */
-    if( self->capture.pcm && self->capture.ready )
-    {
-        captureFrames = *numFrames;
-        PA_ENSURE( PaAlsaStreamComponent_RegisterChannels( &self->capture, &self->bufferProcessor, &captureFrames, 
-                    &xrun ) );
-    }
-    if( self->playback.pcm && self->playback.ready )
-    {
-        playbackFrames = *numFrames;
-        PA_ENSURE( PaAlsaStreamComponent_RegisterChannels( &self->playback, &self->bufferProcessor, &playbackFrames, 
-                    &xrun ) );
-    }
-    if( xrun )
-    {
-        /* Nothing more to do */
-        assert( 0 == commonFrames );
-        goto end;
-    }
-
-    commonFrames = PA_MIN( captureFrames, playbackFrames );
-    /* assert( commonFrames <= *numFrames ); */
-    if( commonFrames > *numFrames )
-    {
-        /* Hmmm ... how come there are more frames available than we requested!? Blah. */
-        PA_DEBUG(( "%s: Common available frames are reported to be more than number requested: %lu, %lu, callbackMode: %d\n", __FUNCTION__,
-                    commonFrames, *numFrames, self->callbackMode ));
-        if( self->capture.pcm )
-        {
-            PA_DEBUG(( "%s: captureFrames: %lu, capture.ready: %d\n", __FUNCTION__, captureFrames, self->capture.ready ));
-        }
-        if( self->playback.pcm )
-        {
-            PA_DEBUG(( "%s: playbackFrames: %lu, playback.ready: %d\n", __FUNCTION__, playbackFrames, self->playback.ready ));
-        }
-        
-        commonFrames = 0;
-        goto end;
-    }
-
-    /* Inform PortAudio of the number of frames we got.
-     * @concern FullDuplex We might be experiencing underflow in either end; if its an input underflow, we go on
-     * with output. If its output underflow however, depending on the paNeverDropInput flag, we may want to simply
-     * discard the excess input or call the callback with paOutputOverflow flagged.
-     */
-    if( self->capture.pcm )
-    {
-        if( self->capture.ready )
-        {
-            PaUtil_SetInputFrameCount( &self->bufferProcessor, commonFrames );
-        }
-        else
-        {
-            /* We have input underflow */
-            PaUtil_SetNoInput( &self->bufferProcessor );
-        }
-    }
-    if( self->playback.pcm )
-    {
-        if( self->playback.ready )
-        {
-            PaUtil_SetOutputFrameCount( &self->bufferProcessor, commonFrames );
-        }
-        else
-        {
-            /* We have output underflow, but keeping input data (paNeverDropInput) */
-            assert( self->neverDropInput );
-            assert( self->capture.pcm != NULL );
-            PA_DEBUG(( "%s: Setting output buffers to NULL\n", __FUNCTION__ ));
-            PaUtil_SetNoOutput( &self->bufferProcessor );
-        }
-    }
-    
-end:
-    *numFrames = commonFrames;
-error:
-    if( xrun )
-    {
-        PA_ENSURE( PaAlsaStream_HandleXrun( self ) );
-        *numFrames = 0;
-    }
-    *xrunOccurred = xrun;
-
-    return result;
-}
-
-/** Callback thread's function.
- *
- * Roughly, the workflow can be described in the following way: The number of available frames that can be processed
- * directly is obtained from ALSA, we then request as much directly accessible memory as possible within this amount
- * from ALSA. The buffer memory is registered with the PA buffer processor and processing is carried out with
- * PaUtil_EndBufferProcessing. Finally, the number of processed frames is reported to ALSA. The processing can
- * happen in several iterations untill we have consumed the known number of available frames (or an xrun is detected).
- */
-static void *CallbackThreadFunc( void *userData )
-{
-    PaError result = paNoError;
-    PaAlsaStream *stream = (PaAlsaStream*) userData;
-    PaStreamCallbackTimeInfo timeInfo = {0, 0, 0};
-    snd_pcm_sframes_t startThreshold = 0;
-    int callbackResult = paContinue;
-    PaStreamCallbackFlags cbFlags = 0;  /* We might want to keep state across iterations */
-    int streamStarted = 0;
-
-    assert( stream );
-
-    /* Execute OnExit when exiting */
-    pthread_cleanup_push( &OnExit, stream );
-
-    /* Not implemented */
-    assert( !stream->primeBuffers );
-
-    /* @concern StreamStart If the output is being primed the output pcm needs to be prepared, otherwise the
-     * stream is started immediately. The latter involves signaling the waiting main thread.
-     */
-    if( stream->primeBuffers )
-    {
-        snd_pcm_sframes_t avail;
-        
-        if( stream->playback.pcm )
-            ENSURE_( snd_pcm_prepare( stream->playback.pcm ), paUnanticipatedHostError );
-        if( stream->capture.pcm && !stream->pcmsSynced )
-            ENSURE_( snd_pcm_prepare( stream->capture.pcm ), paUnanticipatedHostError );
-
-        /* We can't be certain that the whole ring buffer is available for priming, but there should be
-         * at least one period */
-        avail = snd_pcm_avail_update( stream->playback.pcm );
-        startThreshold = avail - (avail % stream->playback.framesPerBuffer);
-        assert( startThreshold >= stream->playback.framesPerBuffer );
-    }
-    else
-    {
-        PA_ENSURE( PaUnixThread_PrepareNotify( &stream->thread ) );
-        /* Buffer will be zeroed */
-        PA_ENSURE( AlsaStart( stream, 0 ) );
-        PA_ENSURE( PaUnixThread_NotifyParent( &stream->thread ) );
-
-        streamStarted = 1;
-    }
-
-    while( 1 )
-    {
-        unsigned long framesAvail, framesGot;
-        int xrun = 0;
-
-        pthread_testcancel();
-
-        /* @concern StreamStop if the main thread has requested a stop and the stream has not been effectively
-         * stopped we signal this condition by modifying callbackResult (we'll want to flush buffered output).
-         */
-        if( PaUnixThread_StopRequested( &stream->thread ) && paContinue == callbackResult )
-        {
-            PA_DEBUG(( "Setting callbackResult to paComplete\n" ));
-            callbackResult = paComplete;
-        }
-
-        if( paContinue != callbackResult )
-        {
-            stream->callbackAbort = (paAbort == callbackResult);
-            if( stream->callbackAbort ||
-                    /** @concern BlockAdaption: Go on if adaption buffers are empty */
-                    PaUtil_IsBufferProcessorOutputEmpty( &stream->bufferProcessor ) ) 
-            {
-                goto end;
-            }
-
-            PA_DEBUG(( "%s: Flushing buffer processor\n", __FUNCTION__ ));
-            /* There is still buffered output that needs to be processed */
-        }
-
-        /* Wait for data to become available, this comes down to polling the ALSA file descriptors untill we have
-         * a number of available frames.
-         */
-        PA_ENSURE( PaAlsaStream_WaitForFrames( stream, &framesAvail, &xrun ) );
-        if( xrun )
-        {
-            assert( 0 == framesAvail );
-            continue;
-
-            /* XXX: Report xruns to the user? A situation is conceivable where the callback is never invoked due
-             * to constant xruns, it might be desirable to notify the user of this.
-             */
-        }
-
-        /* Consume buffer space. Once we have a number of frames available for consumption we must retrieve the
-         * mmapped buffers from ALSA, this is contiguously accessible memory however, so we may receive smaller
-         * portions at a time than is available as a whole. Therefore we should be prepared to process several
-         * chunks successively. The buffers are passed to the PA buffer processor.
-         */
-        while( framesAvail > 0 )
-        {
-            xrun = 0;
-
-            pthread_testcancel();
-
-            /** @concern Xruns Under/overflows are to be reported to the callback */
-            if( stream->underrun > 0.0 )
-            {
-                cbFlags |= paOutputUnderflow;
-                stream->underrun = 0.0;
-            }
-            if( stream->overrun > 0.0 )
-            {
-                cbFlags |= paInputOverflow;
-                stream->overrun = 0.0;
-            }
-            if( stream->capture.pcm && stream->playback.pcm )
-            {
-                /** @concern FullDuplex It's possible that only one direction is being processed to avoid an
-                 * under- or overflow, this should be reported correspondingly */
-                if( !stream->capture.ready )
-                {
-                    cbFlags |= paInputUnderflow;
-                    PA_DEBUG(( "%s: Input underflow\n", __FUNCTION__ ));
-                }
-                else if( !stream->playback.ready )
-                {
-                    cbFlags |= paOutputOverflow;
-                    PA_DEBUG(( "%s: Output overflow\n", __FUNCTION__ ));
-                }
-            }
-
-#if 0
-            CallbackUpdate( &stream->threading );
-#endif
-            CalculateTimeInfo( stream, &timeInfo );
-            PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, cbFlags );
-            cbFlags = 0;
-
-            /* CPU load measurement should include processing activivity external to the stream callback */
-            PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-
-            framesGot = framesAvail;
-            if( paUtilFixedHostBufferSize == stream->bufferProcessor.hostBufferSizeMode )
-            {
-                /* We've committed to a fixed host buffer size, stick to that */
-                framesGot = framesGot >= stream->maxFramesPerHostBuffer ? stream->maxFramesPerHostBuffer : 0;
-            }
-            else
-            {
-                /* We've committed to an upper bound on the size of host buffers */
-                assert( paUtilBoundedHostBufferSize == stream->bufferProcessor.hostBufferSizeMode );
-                framesGot = PA_MIN( framesGot, stream->maxFramesPerHostBuffer );
-            }
-            PA_ENSURE( PaAlsaStream_SetUpBuffers( stream, &framesGot, &xrun ) );
-            /* Check the host buffer size against the buffer processor configuration */
-            framesAvail -= framesGot;
-
-            if( framesGot > 0 )
-            {
-                assert( !xrun );
-                PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult );
-                PA_ENSURE( PaAlsaStream_EndProcessing( stream, framesGot, &xrun ) );
-            }
-            PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesGot );
-
-            if( 0 == framesGot )
-            {
-                /* Go back to polling for more frames */
-                break;
-
-            }
-
-            if( paContinue != callbackResult )
-                break;
-        }
-    }
-
-    /* Match pthread_cleanup_push */
-    pthread_cleanup_pop( 1 );
-
-end:
-    PA_DEBUG(( "%s: Thread %d exiting\n ", __FUNCTION__, pthread_self() ));
-    PaUnixThreading_EXIT( result );
-error:
-    goto end;
-}
-
-/* Blocking interface */
-
-static PaError ReadStream( PaStream* s, void *buffer, unsigned long frames )
-{
-    PaError result = paNoError;
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-    unsigned long framesGot, framesAvail;
-    void *userBuffer;
-    snd_pcm_t *save = stream->playback.pcm;
-
-    assert( stream );
-
-    PA_UNLESS( stream->capture.pcm, paCanNotReadFromAnOutputOnlyStream );
-
-    /* Disregard playback */
-    stream->playback.pcm = NULL;
-
-    if( stream->overrun > 0. )
-    {
-        result = paInputOverflowed;
-        stream->overrun = 0.0;
-    }
-
-    if( stream->capture.userInterleaved )
-    {
-        userBuffer = buffer;
-    }
-    else
-    {
-        /* Copy channels into local array */
-        userBuffer = stream->capture.userBuffers;
-        memcpy( userBuffer, buffer, sizeof (void *) * stream->capture.numUserChannels );
-    }
-
-    /* Start stream if in prepared state */
-    if( snd_pcm_state( stream->capture.pcm ) == SND_PCM_STATE_PREPARED )
-    {
-        ENSURE_( snd_pcm_start( stream->capture.pcm ), paUnanticipatedHostError );
-    }
-
-    while( frames > 0 )
-    {
-        int xrun = 0;
-        PA_ENSURE( PaAlsaStream_WaitForFrames( stream, &framesAvail, &xrun ) );
-        framesGot = PA_MIN( framesAvail, frames );
-
-        PA_ENSURE( PaAlsaStream_SetUpBuffers( stream, &framesGot, &xrun ) );
-        if( framesGot > 0 )
-        {
-            framesGot = PaUtil_CopyInput( &stream->bufferProcessor, &userBuffer, framesGot );
-            PA_ENSURE( PaAlsaStream_EndProcessing( stream, framesGot, &xrun ) );
-            frames -= framesGot;
-        }
-    }
-
-end:
-    stream->playback.pcm = save;
-    return result;
-error:
-    goto end;
-}
-
-static PaError WriteStream( PaStream* s, const void *buffer, unsigned long frames )
-{
-    PaError result = paNoError;
-    signed long err;
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-    snd_pcm_uframes_t framesGot, framesAvail;
-    const void *userBuffer;
-    snd_pcm_t *save = stream->capture.pcm;
-    
-    assert( stream );
-
-    PA_UNLESS( stream->playback.pcm, paCanNotWriteToAnInputOnlyStream );
-
-    /* Disregard capture */
-    stream->capture.pcm = NULL;
-
-    if( stream->underrun > 0. )
-    {
-        result = paOutputUnderflowed;
-        stream->underrun = 0.0;
-    }
-
-    if( stream->playback.userInterleaved )
-        userBuffer = buffer;
-    else /* Copy channels into local array */
-    {
-        userBuffer = stream->playback.userBuffers;
-        memcpy( (void *)userBuffer, buffer, sizeof (void *) * stream->playback.numUserChannels );
-    }
-
-    while( frames > 0 )
-    {
-        int xrun = 0;
-        snd_pcm_uframes_t hwAvail;
-
-        PA_ENSURE( PaAlsaStream_WaitForFrames( stream, &framesAvail, &xrun ) );
-        framesGot = PA_MIN( framesAvail, frames );
-
-        PA_ENSURE( PaAlsaStream_SetUpBuffers( stream, &framesGot, &xrun ) );
-        if( framesGot > 0 )
-        {
-            framesGot = PaUtil_CopyOutput( &stream->bufferProcessor, &userBuffer, framesGot );
-            PA_ENSURE( PaAlsaStream_EndProcessing( stream, framesGot, &xrun ) );
-            frames -= framesGot;
-        }
-
-        /* Start stream after one period of samples worth */
-
-        /* Frames residing in buffer */
-        PA_ENSURE( err = GetStreamWriteAvailable( stream ) );
-        framesAvail = err;
-        hwAvail = stream->playback.bufferSize - framesAvail;
-
-        if( snd_pcm_state( stream->playback.pcm ) == SND_PCM_STATE_PREPARED &&
-                hwAvail >= stream->playback.framesPerBuffer )
-        {
-            ENSURE_( snd_pcm_start( stream->playback.pcm ), paUnanticipatedHostError );
-        }
-    }
-
-end:
-    stream->capture.pcm = save;
-    return result;
-error:
-    goto end;
-}
-
-/* Return frames available for reading. In the event of an overflow, the capture pcm will be restarted */
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaError result = paNoError;
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-    unsigned long avail;
-    int xrun;
-
-    PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( &stream->capture, &avail, &xrun ) );
-    if( xrun )
-    {
-        PA_ENSURE( PaAlsaStream_HandleXrun( stream ) );
-        PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( &stream->capture, &avail, &xrun ) );
-        if( xrun )
-            PA_ENSURE( paInputOverflowed );
-    }
-
-    return (signed long)avail;
-
-error:
-    return result;
-}
-
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaError result = paNoError;
-    PaAlsaStream *stream = (PaAlsaStream*)s;
-    unsigned long avail;
-    int xrun;
-
-    PA_ENSURE( PaAlsaStreamComponent_GetAvailableFrames( &stream->playback, &avail, &xrun ) );
-    if( xrun )
-    {
-        snd_pcm_sframes_t savail;
-
-        PA_ENSURE( PaAlsaStream_HandleXrun( stream ) );
-        savail = snd_pcm_avail_update( stream->playback.pcm );
-
-        /* savail should not contain -EPIPE now, since PaAlsaStream_HandleXrun will only prepare the pcm */
-        ENSURE_( savail, paUnanticipatedHostError );
-
-        avail = (unsigned long) savail;
-    }
-
-    return (signed long)avail;
-
-error:
-    return result;
-}
-
-/* Extensions */
-
-void PaAlsa_InitializeStreamInfo( PaAlsaStreamInfo *info )
-{
-    info->size = sizeof (PaAlsaStreamInfo);
-    info->hostApiType = paALSA;
-    info->version = 1;
-    info->deviceString = NULL;
-}
-
-void PaAlsa_EnableRealtimeScheduling( PaStream *s, int enable )
-{
-    PaAlsaStream *stream = (PaAlsaStream *) s;
-    stream->rtSched = enable;
-}
-
-#if 0
-void PaAlsa_EnableWatchdog( PaStream *s, int enable )
-{
-    PaAlsaStream *stream = (PaAlsaStream *) s;
-    stream->thread.useWatchdog = enable;
-}
-#endif
-
-PaError PaAlsa_GetStreamInputCard(PaStream* s, int* card) {
-    PaAlsaStream *stream = (PaAlsaStream *) s;
-    snd_pcm_info_t* pcmInfo;
-    PaError result = paNoError;
-
-    /* XXX: More descriptive error? */
-    PA_UNLESS( stream->capture.pcm, paDeviceUnavailable );
-
-    snd_pcm_info_alloca( &pcmInfo );
-    PA_ENSURE( snd_pcm_info( stream->capture.pcm, pcmInfo ) );
-    *card = snd_pcm_info_get_card( pcmInfo );
-
-error:
-    return result;
-}
-
-PaError PaAlsa_GetStreamOutputCard(PaStream* s, int* card) {
-    PaAlsaStream *stream = (PaAlsaStream *) s;
-    snd_pcm_info_t* pcmInfo;
-    PaError result = paNoError;
-
-    /* XXX: More descriptive error? */
-    PA_UNLESS( stream->playback.pcm, paDeviceUnavailable );
-
-    snd_pcm_info_alloca( &pcmInfo );
-    PA_ENSURE( snd_pcm_info( stream->playback.pcm, pcmInfo ) );
-    *card = snd_pcm_info_get_card( pcmInfo );
-
-error:
-    return result;
-}
-#endif
\ No newline at end of file
diff --git a/external/portaudio2007/pa_linux_alsa.h b/external/portaudio2007/pa_linux_alsa.h
deleted file mode 100644
index 5e7e8d4..0000000
--- a/external/portaudio2007/pa_linux_alsa.h
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef PA_LINUX_ALSA_H
-#define PA_LINUX_ALSA_H
-
-/*
- * $Id: pa_linux_alsa.h 1236 2007-06-24 20:39:26Z aknudsen $
- * PortAudio Portable Real-Time Audio Library
- * ALSA-specific extensions
- *
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- * ALSA-specific PortAudio API extension header file.
- */
-#include "portaudio.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct PaAlsaStreamInfo
-{
-    unsigned long size;
-    PaHostApiTypeId hostApiType;
-    unsigned long version;
-
-    const char *deviceString;
-}
-PaAlsaStreamInfo;
-
-/** Initialize host API specific structure, call this before setting relevant attributes. */
-void PaAlsa_InitializeStreamInfo( PaAlsaStreamInfo *info );
-
-/** Instruct whether to enable real-time priority when starting the audio thread.
- *
- * If this is turned on by the stream is started, the audio callback thread will be created
- * with the FIFO scheduling policy, which is suitable for realtime operation.
- **/
-void PaAlsa_EnableRealtimeScheduling( PaStream *s, int enable );
-
-#if 0
-void PaAlsa_EnableWatchdog( PaStream *s, int enable );
-#endif
-
-/** Get the ALSA-lib card index of this stream's input device. */
-PaError PaAlsa_GetStreamInputCard( PaStream *s, int *card );
-
-/** Get the ALSA-lib card index of this stream's output device. */
-PaError PaAlsa_GetStreamOutputCard( PaStream *s, int *card );
-
-/** Set the number of periods (buffer fragments) to configure devices with.
- *
- * By default the number of periods is 4, this is the lowest number of periods that works well on
- * the author's soundcard.
- * @param numPeriods The number of periods.
- */
-PaError PaAlsa_SetNumPeriods( int numPeriods );
-
-PaError PaAlsa_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/external/portaudio2007/pa_mac_core.c b/external/portaudio2007/pa_mac_core.c
deleted file mode 100644
index cc273a6..0000000
--- a/external/portaudio2007/pa_mac_core.c
+++ /dev/null
@@ -1,2328 +0,0 @@
-/*
- * Implementation of the PortAudio API for Apple AUHAL
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file pa_mac_core
- @ingroup hostapi_src
- @author Bjorn Roche
- @brief AUHAL implementation of PortAudio
-*/
-
-/* FIXME: not all error conditions call PaUtil_SetLastHostErrorInfo()
- * PaMacCore_SetError() will do this.
- */
-
-#include "pa_mac_core_internal.h"
-
-#include <string.h> /* strlen(), memcmp() etc. */
-#include <libkern/OSAtomic.h>
-#include <CoreServices/CoreServices.h>
-
-#include "pa_mac_core.h"
-#include "pa_mac_core_utilities.h"
-#include "pa_mac_core_blocking.h"
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* prototypes for functions declared in this file */
-
-PaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-/*
- * Function declared in pa_mac_core.h. Sets up a PaMacCoreStreamInfoStruct
- * with the requested flags and initializes channel map.
- */
-void PaMacCore_SetupStreamInfo(  PaMacCoreStreamInfo *data, const unsigned long flags )
-{
-   bzero( data, sizeof( PaMacCoreStreamInfo ) );
-   data->size = sizeof( PaMacCoreStreamInfo );
-   data->hostApiType = paCoreAudio;
-   data->version = 0x01;
-   data->flags = flags;
-   data->channelMap = NULL;
-   data->channelMapSize = 0;
-}
-
-/*
- * Function declared in pa_mac_core.h. Adds channel mapping to a PaMacCoreStreamInfoStruct
- */
-void PaMacCore_SetupChannelMap( PaMacCoreStreamInfo *data, const SInt32 * const channelMap, const unsigned long channelMapSize )
-{
-   data->channelMap = channelMap;
-   data->channelMapSize = channelMapSize;
-}
-static char *channelName = NULL;
-static int channelNameSize = 0;
-static bool ensureChannelNameSize( int size )
-{
-   if( size >= channelNameSize ) {
-      free( channelName );
-      channelName = (char *) malloc( ( channelNameSize = size ) + 1 );
-      if( !channelName ) {
-         channelNameSize = 0;
-         return false;
-      }
-   }
-   return true;
-}
-/*
- * Function declared in pa_mac_core.h. retrives channel names.
- */
-const char *PaMacCore_GetChannelName( int device, int channelIndex, bool input )
-{
-   struct PaUtilHostApiRepresentation *hostApi;
-   PaError err;
-   OSStatus error;
-   err = PaUtil_GetHostApiRepresentation( &hostApi, paCoreAudio );
-   assert(err == paNoError);
-   PaMacAUHAL *macCoreHostApi = (PaMacAUHAL*)hostApi;
-   AudioDeviceID hostApiDevice = macCoreHostApi->devIds[device];
-
-   UInt32 size = 0;
-
-   error = AudioDeviceGetPropertyInfo( hostApiDevice,
-                                       channelIndex + 1,
-                                       input,
-                                       kAudioDevicePropertyChannelName,
-                                       &size,
-                                       NULL );
-   if( error ) {
-      //try the CFString
-      CFStringRef name;
-      bool isDeviceName = false;
-      size = sizeof( name );
-      error = AudioDeviceGetProperty( hostApiDevice,
-                                      channelIndex + 1,
-                                      input,
-                                      kAudioDevicePropertyChannelNameCFString,
-                                      &size,
-                                      &name );
-      if( error ) { //as a last-ditch effort, get the device name. Later we'll append the channel number.
-         size = sizeof( name );
-         error = AudioDeviceGetProperty( hostApiDevice,
-                                      channelIndex + 1,
-                                      input,
-                                      kAudioDevicePropertyDeviceNameCFString,
-                                      &size,
-                                      &name );
-         if( error )
-            return NULL;
-         isDeviceName = true;
-      }
-      if( isDeviceName ) {
-         name = CFStringCreateWithFormat( NULL, NULL, CFSTR( "%@: %d"), name, channelIndex + 1 );
-      }
-
-      CFIndex length = CFStringGetLength(name);
-      while( ensureChannelNameSize( length * sizeof(UniChar) + 1 ) ) {
-         if( CFStringGetCString( name, channelName, channelNameSize, kCFStringEncodingUTF8 ) ) {
-            if( isDeviceName )
-               CFRelease( name );
-            return channelName;
-         }
-         if( length == 0 )
-            ++length;
-         length *= 2;
-      }
-      if( isDeviceName )
-         CFRelease( name );
-      return NULL;
-   }
-
-   //continue with C string:
-   if( !ensureChannelNameSize( size ) )
-      return NULL;
-
-   error = AudioDeviceGetProperty( hostApiDevice,
-                                   channelIndex + 1,
-                                   input,
-                                   kAudioDevicePropertyChannelName,
-                                   &size,
-                                   channelName );
-
-   if( error ) {
-      ERR( error );
-      return NULL;
-   }
-   return channelName;
-}
-
-
-
-
-
-AudioDeviceID PaMacCore_GetStreamInputDevice( PaStream* s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    VVDBUG(("PaMacCore_GetStreamInputHandle()\n"));
-
-    return ( stream->inputDevice );
-}
-
-AudioDeviceID PaMacCore_GetStreamOutputDevice( PaStream* s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    VVDBUG(("PaMacCore_GetStreamOutputHandle()\n"));
-
-    return ( stream->outputDevice );
-}
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RING_BUFFER_ADVANCE_DENOMINATOR (4)
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static void setStreamStartTime( PaStream *stream );
-static OSStatus AudioIOProc( void *inRefCon,
-                               AudioUnitRenderActionFlags *ioActionFlags,
-                               const AudioTimeStamp *inTimeStamp,
-                               UInt32 inBusNumber,
-                               UInt32 inNumberFrames,
-                               AudioBufferList *ioData );
-static double GetStreamCpuLoad( PaStream* stream );
-
-static PaError GetChannelInfo( PaMacAUHAL *auhalHostApi,
-                               PaDeviceInfo *deviceInfo,
-                               AudioDeviceID macCoreDeviceId,
-                               int isInput);
-
-static PaError OpenAndSetupOneAudioUnit(
-                                   const PaMacCoreStream *stream,
-                                   const PaStreamParameters *inStreamParams,
-                                   const PaStreamParameters *outStreamParams,
-                                   const UInt32 requestedFramesPerBuffer,
-                                   UInt32 *actualInputFramesPerBuffer,
-                                   UInt32 *actualOutputFramesPerBuffer,
-                                   const PaMacAUHAL *auhalHostApi,
-                                   AudioUnit *audioUnit,
-                                   AudioConverterRef *srConverter,
-                                   AudioDeviceID *audioDevice,
-                                   const double sampleRate,
-                                   void *refCon );
-
-/* for setting errors. */
-#define PA_AUHAL_SET_LAST_HOST_ERROR( errorCode, errorText ) \
-    PaUtil_SetLastHostErrorInfo( paInDevelopment, errorCode, errorText )
-
-/*
- * Callback for setting over/underrun flags.
- *
- */
-static OSStatus xrunCallback(
-    AudioDeviceID inDevice, 
-    UInt32 inChannel, 
-    Boolean isInput, 
-    AudioDevicePropertyID inPropertyID, 
-    void* inClientData)
-{
-   PaMacCoreStream *stream = (PaMacCoreStream *) inClientData;
-   if( stream->state != ACTIVE )
-      return 0; //if the stream isn't active, we don't care if the device is dropping
-   if( isInput )
-      OSAtomicOr32( paInputUnderflow, (uint32_t *)&(stream->xrunFlags) );
-   else
-      OSAtomicOr32( paOutputOverflow, (uint32_t *)&(stream->xrunFlags) );
-
-   return 0;
-}
-
-/*
- * Callback called when starting or stopping a stream.
- */
-static void startStopCallback(
-   void *               inRefCon,
-   AudioUnit            ci,
-   AudioUnitPropertyID  inID,
-   AudioUnitScope       inScope,
-   AudioUnitElement     inElement )
-{
-   PaMacCoreStream *stream = (PaMacCoreStream *) inRefCon;
-   UInt32 isRunning;
-   UInt32 size = sizeof( isRunning );
-   assert( !AudioUnitGetProperty( ci, kAudioOutputUnitProperty_IsRunning, inScope, inElement, &isRunning, &size ) );
-   if( isRunning )
-      return; //We are only interested in when we are stopping
-   // -- if we are using 2 I/O units, we only need one notification!
-   if( stream->inputUnit && stream->outputUnit && stream->inputUnit != stream->outputUnit && ci == stream->inputUnit )
-      return;
-   PaStreamFinishedCallback *sfc = stream->streamRepresentation.streamFinishedCallback;
-   if( stream->state == STOPPING )
-      stream->state = STOPPED ;
-   if( sfc )
-      sfc( stream->streamRepresentation.userData );
-}
-
-
-/*currently, this is only used in initialization, but it might be modified
-  to be used when the list of devices changes.*/
-static PaError gatherDeviceInfo(PaMacAUHAL *auhalHostApi)
-{
-    UInt32 size;
-    UInt32 propsize;
-    VVDBUG(("gatherDeviceInfo()\n"));
-    /* -- free any previous allocations -- */
-    if( auhalHostApi->devIds )
-        PaUtil_GroupFreeMemory(auhalHostApi->allocations, auhalHostApi->devIds);
-    auhalHostApi->devIds = NULL;
-
-    /* -- figure out how many devices there are -- */
-    AudioHardwareGetPropertyInfo( kAudioHardwarePropertyDevices,
-                                  &propsize,
-                                  NULL );
-    auhalHostApi->devCount = propsize / sizeof( AudioDeviceID );
-
-    VDBUG( ( "Found %ld device(s).\n", auhalHostApi->devCount ) );
-
-    /* -- copy the device IDs -- */
-    auhalHostApi->devIds = (AudioDeviceID *)PaUtil_GroupAllocateMemory(
-                             auhalHostApi->allocations,
-                             propsize );
-    if( !auhalHostApi->devIds )
-        return paInsufficientMemory;
-    AudioHardwareGetProperty( kAudioHardwarePropertyDevices,
-                                  &propsize,
-                                  auhalHostApi->devIds );
-#ifdef MAC_CORE_VERBOSE_DEBUG
-    {
-       int i;
-       for( i=0; i<auhalHostApi->devCount; ++i )
-          printf( "Device %d\t: %ld\n", i, auhalHostApi->devIds[i] );
-    }
-#endif
-
-    size = sizeof(AudioDeviceID);
-    auhalHostApi->defaultIn  = kAudioDeviceUnknown;
-    auhalHostApi->defaultOut = kAudioDeviceUnknown;
-
-    /* determine the default device. */
-    /* I am not sure how these calls to AudioHardwareGetProperty()
-       could fail, but in case they do, we use the first available
-       device as the default. */
-    if( 0 != AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice,
-                     &size,
-                     &auhalHostApi->defaultIn) ) {
-       int i;
-       auhalHostApi->defaultIn  = kAudioDeviceUnknown;
-       VDBUG(("Failed to get default input device from OS."));
-       VDBUG((" I will substitute the first available input Device."));
-       for( i=0; i<auhalHostApi->devCount; ++i ) {
-          PaDeviceInfo devInfo;
-          if( 0 != GetChannelInfo( auhalHostApi, &devInfo,
-                                   auhalHostApi->devIds[i], TRUE ) )
-             if( devInfo.maxInputChannels ) {
-                auhalHostApi->defaultIn = auhalHostApi->devIds[i];
-                break;
-             }
-       }
-    }   
-    if( 0 != AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,
-                     &size,
-                     &auhalHostApi->defaultOut) ) {
-       int i;
-       auhalHostApi->defaultIn  = kAudioDeviceUnknown;
-       VDBUG(("Failed to get default output device from OS."));
-       VDBUG((" I will substitute the first available output Device."));
-       for( i=0; i<auhalHostApi->devCount; ++i ) {
-          PaDeviceInfo devInfo;
-          if( 0 != GetChannelInfo( auhalHostApi, &devInfo,
-                                   auhalHostApi->devIds[i], FALSE ) )
-             if( devInfo.maxOutputChannels ) {
-                auhalHostApi->defaultOut = auhalHostApi->devIds[i];
-                break;
-             }
-       }
-    }   
-
-    VDBUG( ( "Default in : %ld\n", auhalHostApi->defaultIn  ) );
-    VDBUG( ( "Default out: %ld\n", auhalHostApi->defaultOut ) );
-
-    return paNoError;
-}
-
-static PaError GetChannelInfo( PaMacAUHAL *auhalHostApi,
-                               PaDeviceInfo *deviceInfo,
-                               AudioDeviceID macCoreDeviceId,
-                               int isInput)
-{
-    UInt32 propSize;
-    PaError err = paNoError;
-    UInt32 i;
-    int numChannels = 0;
-    AudioBufferList *buflist = NULL;
-    UInt32 frameLatency;
-
-    VVDBUG(("GetChannelInfo()\n"));
-
-    /* Get the number of channels from the stream configuration.
-       Fail if we can't get this. */
-
-    err = ERR(AudioDeviceGetPropertyInfo(macCoreDeviceId, 0, isInput, kAudioDevicePropertyStreamConfiguration, &propSize, NULL));
-    if (err)
-        return err;
-
-    buflist = PaUtil_AllocateMemory(propSize);
-    if( !buflist )
-       return paInsufficientMemory;
-    err = ERR(AudioDeviceGetProperty(macCoreDeviceId, 0, isInput, kAudioDevicePropertyStreamConfiguration, &propSize, buflist));
-    if (err)
-        goto error;
-
-    for (i = 0; i < buflist->mNumberBuffers; ++i)
-        numChannels += buflist->mBuffers[i].mNumberChannels;
-
-    if (isInput)
-        deviceInfo->maxInputChannels = numChannels;
-    else
-        deviceInfo->maxOutputChannels = numChannels;
-      
-    if (numChannels > 0) /* do not try to retrieve the latency if there is no channels. */
-    {
-       /* Get the latency.  Don't fail if we can't get this. */
-       /* default to something reasonable */
-       deviceInfo->defaultLowInputLatency = .01;
-       deviceInfo->defaultHighInputLatency = .10;
-       deviceInfo->defaultLowOutputLatency = .01;
-       deviceInfo->defaultHighOutputLatency = .10;
-       propSize = sizeof(UInt32);
-       err = WARNING(AudioDeviceGetProperty(macCoreDeviceId, 0, isInput, kAudioDevicePropertyLatency, &propSize, &frameLatency));
-       if (!err)
-       {
-          /** FEEDBACK:
-           * This code was arrived at by trial and error, and some extentive, but not exhaustive
-           * testing. Sebastien Beaulieu <seb at plogue.com> has suggested using
-           * kAudioDevicePropertyLatency + kAudioDevicePropertySafetyOffset + buffer size instead.
-           * At the time this code was written, many users were reporting dropouts with audio
-           * programs that probably used this formula. This was probably
-           * around 10.4.4, and the problem is probably fixed now. So perhaps
-           * his formula should be reviewed and used.
-           * */
-          double secondLatency = frameLatency / deviceInfo->defaultSampleRate;
-          if (isInput)
-          {
-             deviceInfo->defaultLowInputLatency = 3 * secondLatency;
-             deviceInfo->defaultHighInputLatency = 3 * 10 * secondLatency;
-          }
-          else
-          {
-             deviceInfo->defaultLowOutputLatency = 3 * secondLatency;
-             deviceInfo->defaultHighOutputLatency = 3 * 10 * secondLatency;
-          }
-       }
-    }
-    PaUtil_FreeMemory( buflist );
-    return paNoError;
- error:
-    PaUtil_FreeMemory( buflist );
-    return err;
-}
-
-static PaError InitializeDeviceInfo( PaMacAUHAL *auhalHostApi,
-                                     PaDeviceInfo *deviceInfo,
-                                     AudioDeviceID macCoreDeviceId,
-                                     PaHostApiIndex hostApiIndex )
-{
-    Float64 sampleRate;
-    char *name;
-    PaError err = paNoError;
-    UInt32 propSize;
-
-    VVDBUG(("InitializeDeviceInfo(): macCoreDeviceId=%ld\n", macCoreDeviceId));
-
-    memset(deviceInfo, 0, sizeof(deviceInfo));
-
-    deviceInfo->structVersion = 2;
-    deviceInfo->hostApi = hostApiIndex;
-
-    /* Get the device name.  Fail if we can't get it. */
-    err = ERR(AudioDeviceGetPropertyInfo(macCoreDeviceId, 0, 0, kAudioDevicePropertyDeviceName, &propSize, NULL));
-    if (err)
-        return err;
-
-    name = PaUtil_GroupAllocateMemory(auhalHostApi->allocations,propSize);
-    if ( !name )
-        return paInsufficientMemory;
-    err = ERR(AudioDeviceGetProperty(macCoreDeviceId, 0, 0, kAudioDevicePropertyDeviceName, &propSize, name));
-    if (err)
-        return err;
-    deviceInfo->name = name;
-
-    /* Try to get the default sample rate.  Don't fail if we can't get this. */
-    propSize = sizeof(Float64);
-    err = ERR(AudioDeviceGetProperty(macCoreDeviceId, 0, 0, kAudioDevicePropertyNominalSampleRate, &propSize, &sampleRate));
-    if (err)
-        deviceInfo->defaultSampleRate = 0.0;
-    else
-        deviceInfo->defaultSampleRate = sampleRate;
-
-    /* Get the maximum number of input and output channels.  Fail if we can't get this. */
-
-    err = GetChannelInfo(auhalHostApi, deviceInfo, macCoreDeviceId, 1);
-    if (err)
-        return err;
-
-    err = GetChannelInfo(auhalHostApi, deviceInfo, macCoreDeviceId, 0);
-    if (err)
-        return err;
-
-    return paNoError;
-}
-
-PaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    int i;
-    PaMacAUHAL *auhalHostApi;
-    PaDeviceInfo *deviceInfoArray;
-
-    VVDBUG(("PaMacCore_Initialize(): hostApiIndex=%d\n", hostApiIndex));
-
-    auhalHostApi = (PaMacAUHAL*)PaUtil_AllocateMemory( sizeof(PaMacAUHAL) );
-    if( !auhalHostApi )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    auhalHostApi->allocations = PaUtil_CreateAllocationGroup();
-    if( !auhalHostApi->allocations )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    auhalHostApi->devIds = NULL;
-    auhalHostApi->devCount = 0;
-
-    /* get the info we need about the devices */
-    result = gatherDeviceInfo( auhalHostApi );
-    if( result != paNoError )
-       goto error;
-
-    *hostApi = &auhalHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paCoreAudio;
-    (*hostApi)->info.name = "Core Audio";
-
-    (*hostApi)->info.defaultInputDevice = paNoDevice;
-    (*hostApi)->info.defaultOutputDevice = paNoDevice;
-
-    (*hostApi)->info.deviceCount = 0;  
-
-    if( auhalHostApi->devCount > 0 )
-    {
-        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-                auhalHostApi->allocations, sizeof(PaDeviceInfo*) * auhalHostApi->devCount);
-        if( !(*hostApi)->deviceInfos )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        /* allocate all device info structs in a contiguous block */
-        deviceInfoArray = (PaDeviceInfo*)PaUtil_GroupAllocateMemory(
-                auhalHostApi->allocations, sizeof(PaDeviceInfo) * auhalHostApi->devCount );
-        if( !deviceInfoArray )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        for( i=0; i < auhalHostApi->devCount; ++i )
-        {
-            int err;
-            err = InitializeDeviceInfo( auhalHostApi, &deviceInfoArray[i],
-                                      auhalHostApi->devIds[i],
-                                      hostApiIndex );
-            if (err == paNoError)
-            { /* copy some info and set the defaults */
-                (*hostApi)->deviceInfos[(*hostApi)->info.deviceCount] = &deviceInfoArray[i];
-                if (auhalHostApi->devIds[i] == auhalHostApi->defaultIn)
-                    (*hostApi)->info.defaultInputDevice = (*hostApi)->info.deviceCount;
-                if (auhalHostApi->devIds[i] == auhalHostApi->defaultOut)
-                    (*hostApi)->info.defaultOutputDevice = (*hostApi)->info.deviceCount;
-                (*hostApi)->info.deviceCount++;
-            }
-            else
-            { /* there was an error. we need to shift the devices down, so we ignore this one */
-                int j;
-                auhalHostApi->devCount--;
-                for( j=i; j<auhalHostApi->devCount; ++j )
-                   auhalHostApi->devIds[j] = auhalHostApi->devIds[j+1];
-                i--;
-            }
-        }
-    }
-
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PaUtil_InitializeStreamInterface( &auhalHostApi->callbackStreamInterface,
-                                      CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped,
-                                      IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable,
-                                      PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &auhalHostApi->blockingStreamInterface,
-                                      CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped,
-                                      IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream,
-                                      GetStreamReadAvailable,
-                                      GetStreamWriteAvailable );
-
-    return result;
-
-error:
-    if( auhalHostApi )
-    {
-        if( auhalHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( auhalHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( auhalHostApi->allocations );
-        }
-                
-        PaUtil_FreeMemory( auhalHostApi );
-    }
-    return result;
-}
-
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaMacAUHAL *auhalHostApi = (PaMacAUHAL*)hostApi;
-
-    VVDBUG(("Terminate()\n"));
-
-    /*
-        IMPLEMENT ME:
-            - clean up any resources not handled by the allocation group
-        TODO: Double check that everything is handled by alloc group
-    */
-
-    if( auhalHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( auhalHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( auhalHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( auhalHostApi );
-}
-
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-
-    VVDBUG(("IsFormatSupported(): in chan=%d, in fmt=%ld, out chan=%d, out fmt=%ld sampleRate=%g\n",
-                inputParameters  ? inputParameters->channelCount  : -1,
-                inputParameters  ? inputParameters->sampleFormat  : -1,
-                outputParameters ? outputParameters->channelCount : -1,
-                outputParameters ? outputParameters->sampleFormat : -1,
-                (float) sampleRate ));
- 
-    /** These first checks are standard PA checks. We do some fancier checks
-        later. */
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( inputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-            
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-    }
-    else
-    {
-        inputChannelCount = 0;
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( outputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-            
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support outputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-    }
-    else
-    {
-        outputChannelCount = 0;
-    }
- 
-    /* FEEDBACK */
-    /*        I think the only way to check a given format SR combo is     */
-    /*        to try opening it. This could be disruptive, is that Okay?   */
-    /*        The alternative is to just read off available sample rates,  */
-    /*        but this will not work %100 of the time (eg, a device that   */
-    /*        supports N output at one rate but only N/2 at a higher rate.)*/
-
-    /* The following code opens the device with the requested parameters to
-       see if it works. */
-    {
-       PaError err;
-       PaStream *s;
-       err = OpenStream( hostApi, &s, inputParameters, outputParameters,
-                           sampleRate, 1024, 0, (PaStreamCallback *)1, NULL );
-       if( err != paNoError && err != paInvalidSampleRate )
-          DBUG( ( "OpenStream @ %g returned: %d: %s\n",
-                  (float) sampleRate, err, Pa_GetErrorText( err ) ) );
-       if( err ) 
-          return err;
-       err = CloseStream( s );
-       if( err ) {
-          /* FEEDBACK: is this more serious? should we assert? */
-          DBUG( ( "WARNING: could not close Stream. %d: %s\n",
-                  err, Pa_GetErrorText( err ) ) );
-       }
-    }
-
-    return paFormatIsSupported;
-}
-
-static PaError OpenAndSetupOneAudioUnit(
-                                   const PaMacCoreStream *stream,
-                                   const PaStreamParameters *inStreamParams,
-                                   const PaStreamParameters *outStreamParams,
-                                   const UInt32 requestedFramesPerBuffer,
-                                   UInt32 *actualInputFramesPerBuffer,
-                                   UInt32 *actualOutputFramesPerBuffer,
-                                   const PaMacAUHAL *auhalHostApi,
-                                   AudioUnit *audioUnit,
-                                   AudioConverterRef *srConverter,
-                                   AudioDeviceID *audioDevice,
-                                   const double sampleRate,
-                                   void *refCon )
-{
-    ComponentDescription desc;
-    Component comp;
-    /*An Apple TN suggests using CAStreamBasicDescription, but that is C++*/
-    AudioStreamBasicDescription desiredFormat;
-    OSStatus result = noErr;
-    PaError paResult = paNoError;
-    int line = 0;
-    UInt32 callbackKey;
-    AURenderCallbackStruct rcbs;
-    unsigned long macInputStreamFlags  = paMacCorePlayNice;
-    unsigned long macOutputStreamFlags = paMacCorePlayNice;
-    SInt32 const *inChannelMap = NULL;
-    SInt32 const *outChannelMap = NULL;
-    unsigned long inChannelMapSize = 0;
-    unsigned long outChannelMapSize = 0;
-
-    VVDBUG(("OpenAndSetupOneAudioUnit(): in chan=%d, in fmt=%ld, out chan=%d, out fmt=%ld, requestedFramesPerBuffer=%ld\n",
-                inStreamParams  ? inStreamParams->channelCount  : -1,
-                inStreamParams  ? inStreamParams->sampleFormat  : -1,
-                outStreamParams ? outStreamParams->channelCount : -1,
-                outStreamParams ? outStreamParams->sampleFormat : -1,
-                requestedFramesPerBuffer ));
-
-    /* -- handle the degenerate case  -- */
-    if( !inStreamParams && !outStreamParams ) {
-       *audioUnit = NULL;
-       *audioDevice = kAudioDeviceUnknown;
-       return paNoError;
-    }
-
-    /* -- get the user's api specific info, if they set any -- */
-    if( inStreamParams && inStreamParams->hostApiSpecificStreamInfo )
-    {
-       macInputStreamFlags=
-            ((PaMacCoreStreamInfo*)inStreamParams->hostApiSpecificStreamInfo)
-                  ->flags;
-       inChannelMap = ((PaMacCoreStreamInfo*)inStreamParams->hostApiSpecificStreamInfo)
-                  ->channelMap;
-       inChannelMapSize = ((PaMacCoreStreamInfo*)inStreamParams->hostApiSpecificStreamInfo)
-                  ->channelMapSize;
-    }
-    if( outStreamParams && outStreamParams->hostApiSpecificStreamInfo )
-    {
-       macOutputStreamFlags=
-            ((PaMacCoreStreamInfo*)outStreamParams->hostApiSpecificStreamInfo)
-                  ->flags;
-       outChannelMap = ((PaMacCoreStreamInfo*)outStreamParams->hostApiSpecificStreamInfo)
-                  ->channelMap;
-       outChannelMapSize = ((PaMacCoreStreamInfo*)outStreamParams->hostApiSpecificStreamInfo)
-                  ->channelMapSize; 
-    }
-    /* Override user's flags here, if desired for testing. */
-
-    /*
-     * The HAL AU is a Mac OS style "component".
-     * the first few steps deal with that.
-     * Later steps work on a combination of Mac OS
-     * components and the slightly lower level
-     * HAL.
-     */
-
-    /* -- describe the output type AudioUnit -- */
-    /*  Note: for the default AudioUnit, we could use the
-     *  componentSubType value kAudioUnitSubType_DefaultOutput;
-     *  but I don't think that's relevant here.
-     */
-    desc.componentType         = kAudioUnitType_Output;
-    desc.componentSubType      = kAudioUnitSubType_HALOutput;
-    desc.componentManufacturer = kAudioUnitManufacturer_Apple;
-    desc.componentFlags        = 0;
-    desc.componentFlagsMask    = 0;
-    /* -- find the component -- */
-    comp = FindNextComponent( NULL, &desc );
-    if( !comp )
-    {
-       DBUG( ( "AUHAL component not found." ) );
-       *audioUnit = NULL;
-       *audioDevice = kAudioDeviceUnknown;
-       return paUnanticipatedHostError;
-    }
-    /* -- open it -- */
-    result = OpenAComponent( comp, audioUnit );
-    if( result )
-    {
-       DBUG( ( "Failed to open AUHAL component." ) );
-       *audioUnit = NULL;
-       *audioDevice = kAudioDeviceUnknown;
-       return ERR( result );
-    }
-    /* -- prepare a little error handling logic / hackery -- */
-#define ERR_WRAP(mac_err) do { result = mac_err ; line = __LINE__ ; if ( result != noErr ) goto error ; } while(0)
-
-    /* -- if there is input, we have to explicitly enable input -- */
-    if( inStreamParams )
-    {
-       UInt32 enableIO = 1;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                 kAudioOutputUnitProperty_EnableIO,
-                 kAudioUnitScope_Input,
-                 INPUT_ELEMENT,
-                 &enableIO,
-                 sizeof(enableIO) ) );
-    }
-    /* -- if there is no output, we must explicitly disable output -- */
-    if( !outStreamParams )
-    {
-       UInt32 enableIO = 0;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                 kAudioOutputUnitProperty_EnableIO,
-                 kAudioUnitScope_Output,
-                 OUTPUT_ELEMENT,
-                 &enableIO,
-                 sizeof(enableIO) ) );
-    }
-
-    /* -- set the devices -- */
-    /* make sure input and output are the same device if we are doing input and
-       output. */
-    if( inStreamParams && outStreamParams )
-    {
-       assert( outStreamParams->device == inStreamParams->device );
-    }
-    if( inStreamParams )
-    {
-       *audioDevice = auhalHostApi->devIds[inStreamParams->device] ;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                    kAudioOutputUnitProperty_CurrentDevice,
-                    kAudioUnitScope_Global,
-                    INPUT_ELEMENT,
-                    audioDevice,
-                    sizeof(AudioDeviceID) ) );
-    }
-    if( outStreamParams && outStreamParams != inStreamParams )
-    {
-       *audioDevice = auhalHostApi->devIds[outStreamParams->device] ;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                    kAudioOutputUnitProperty_CurrentDevice,
-                    kAudioUnitScope_Global,
-                    OUTPUT_ELEMENT,
-                    audioDevice,
-                    sizeof(AudioDeviceID) ) );
-    }
-    /* -- add listener for dropouts -- */
-    ERR_WRAP( AudioDeviceAddPropertyListener( *audioDevice,
-                                              0,
-                                              outStreamParams ? false : true,
-                                              kAudioDeviceProcessorOverload,
-                                              xrunCallback,
-                                              (void *)stream) );
-
-    /* -- listen for stream start and stop -- */
-    ERR_WRAP( AudioUnitAddPropertyListener( *audioUnit,
-                                            kAudioOutputUnitProperty_IsRunning,
-                                            startStopCallback,
-                                            (void *)stream ) );
-
-    /* -- set format -- */
-    bzero( &desiredFormat, sizeof(desiredFormat) );
-    desiredFormat.mFormatID         = kAudioFormatLinearPCM ;
-    desiredFormat.mFormatFlags      = kAudioFormatFlagsNativeFloatPacked;
-    desiredFormat.mFramesPerPacket  = 1;
-    desiredFormat.mBitsPerChannel   = sizeof( float ) * 8;
-
-    result = 0;
-    /*  set device format first, but only touch the device if the user asked */
-    if( inStreamParams ) {
-       /*The callback never calls back if we don't set the FPB */
-       /*This seems wierd, because I would think setting anything on the device
-         would be disruptive.*/
-       paResult = setBestFramesPerBuffer( *audioDevice, FALSE,
-                                          requestedFramesPerBuffer,
-                                          actualInputFramesPerBuffer );
-       if( paResult ) goto error;
-       if( macInputStreamFlags & paMacCoreChangeDeviceParameters ) {
-          bool requireExact;
-          requireExact=macInputStreamFlags & paMacCoreFailIfConversionRequired;
-          paResult = setBestSampleRateForDevice( *audioDevice, FALSE,
-                                                 requireExact, sampleRate );
-          if( paResult ) goto error;
-       }
-       if( actualInputFramesPerBuffer && actualOutputFramesPerBuffer )
-          *actualOutputFramesPerBuffer = *actualInputFramesPerBuffer ;
-    }
-    if( outStreamParams && !inStreamParams ) {
-       /*The callback never calls back if we don't set the FPB */
-       /*This seems wierd, because I would think setting anything on the device
-         would be disruptive.*/
-       paResult = setBestFramesPerBuffer( *audioDevice, TRUE,
-                                          requestedFramesPerBuffer,
-                                          actualOutputFramesPerBuffer );
-       if( paResult ) goto error;
-       if( macOutputStreamFlags & paMacCoreChangeDeviceParameters ) {
-          bool requireExact;
-          requireExact=macOutputStreamFlags & paMacCoreFailIfConversionRequired;
-          paResult = setBestSampleRateForDevice( *audioDevice, TRUE,
-                                                 requireExact, sampleRate );
-          if( paResult ) goto error;
-       }
-    }
-
-    /* -- set the quality of the output converter -- */
-    if( outStreamParams ) {
-       UInt32 value = kAudioConverterQuality_Max;
-       switch( macOutputStreamFlags & 0x0700 ) {
-       case 0x0100: /*paMacCore_ConversionQualityMin:*/
-          value=kRenderQuality_Min;
-          break;
-       case 0x0200: /*paMacCore_ConversionQualityLow:*/
-          value=kRenderQuality_Low;
-          break;
-       case 0x0300: /*paMacCore_ConversionQualityMedium:*/
-          value=kRenderQuality_Medium;
-          break;
-       case 0x0400: /*paMacCore_ConversionQualityHigh:*/
-          value=kRenderQuality_High;
-          break;
-       }
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                    kAudioUnitProperty_RenderQuality,
-                    kAudioUnitScope_Global,
-                    OUTPUT_ELEMENT,
-                    &value,
-                    sizeof(value) ) );
-    }
-    /* now set the format on the Audio Units. */
-    if( outStreamParams )
-    {
-       desiredFormat.mSampleRate    =sampleRate;
-       desiredFormat.mBytesPerPacket=sizeof(float)*outStreamParams->channelCount;
-       desiredFormat.mBytesPerFrame =sizeof(float)*outStreamParams->channelCount;
-       desiredFormat.mChannelsPerFrame = outStreamParams->channelCount;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                            kAudioUnitProperty_StreamFormat,
-                            kAudioUnitScope_Input,
-                            OUTPUT_ELEMENT,
-                            &desiredFormat,
-                            sizeof(AudioStreamBasicDescription) ) );
-    }
-    if( inStreamParams )
-    {
-       AudioStreamBasicDescription sourceFormat;
-       UInt32 size = sizeof( AudioStreamBasicDescription );
-
-       /* keep the sample rate of the device, or we confuse AUHAL */
-       ERR_WRAP( AudioUnitGetProperty( *audioUnit,
-                            kAudioUnitProperty_StreamFormat,
-                            kAudioUnitScope_Input,
-                            INPUT_ELEMENT,
-                            &sourceFormat,
-                            &size ) );
-       desiredFormat.mSampleRate = sourceFormat.mSampleRate;
-       desiredFormat.mBytesPerPacket=sizeof(float)*inStreamParams->channelCount;
-       desiredFormat.mBytesPerFrame =sizeof(float)*inStreamParams->channelCount;
-       desiredFormat.mChannelsPerFrame = inStreamParams->channelCount;
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                            kAudioUnitProperty_StreamFormat,
-                            kAudioUnitScope_Output,
-                            INPUT_ELEMENT,
-                            &desiredFormat,
-                            sizeof(AudioStreamBasicDescription) ) );
-    }
-    /* set the maximumFramesPerSlice */
-    /* not doing this causes real problems
-       (eg. the callback might not be called). The idea of setting both this
-       and the frames per buffer on the device is that we'll be most likely
-       to actually get the frame size we requested in the callback with the
-       minimum latency. */
-    if( outStreamParams ) {
-       UInt32 size = sizeof( *actualOutputFramesPerBuffer );
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                            kAudioUnitProperty_MaximumFramesPerSlice,
-                            kAudioUnitScope_Input,
-                            OUTPUT_ELEMENT,
-                            actualOutputFramesPerBuffer,
-                            sizeof(*actualOutputFramesPerBuffer) ) );
-       ERR_WRAP( AudioUnitGetProperty( *audioUnit,
-                            kAudioUnitProperty_MaximumFramesPerSlice,
-                            kAudioUnitScope_Global,
-                            OUTPUT_ELEMENT,
-                            actualOutputFramesPerBuffer,
-                            &size ) );
-    }
-    if( inStreamParams ) {
-       /*UInt32 size = sizeof( *actualInputFramesPerBuffer );*/
-       ERR_WRAP( AudioUnitSetProperty( *audioUnit,
-                            kAudioUnitProperty_MaximumFramesPerSlice,
-                            kAudioUnitScope_Output,
-                            INPUT_ELEMENT,
-                            actualInputFramesPerBuffer,
-                            sizeof(*actualInputFramesPerBuffer) ) );
-/* Don't know why this causes problems
-       ERR_WRAP( AudioUnitGetProperty( *audioUnit,
-                            kAudioUnitProperty_MaximumFramesPerSlice,
-                            kAudioUnitScope_Global, //Output,
-                            INPUT_ELEMENT,
-                            actualInputFramesPerBuffer,
-                            &size ) );
-*/
-    }
-
-    /* -- if we have input, we may need to setup an SR converter -- */
-    /* even if we got the sample rate we asked for, we need to do
-       the conversion in case another program changes the underlying SR. */
-    /* FIXME: I think we need to monitor stream and change the converter if the incoming format changes. */
-    if( inStreamParams ) {
-       AudioStreamBasicDescription desiredFormat;
-       AudioStreamBasicDescription sourceFormat;
-       UInt32 sourceSize = sizeof( sourceFormat );
-       bzero( &desiredFormat, sizeof(desiredFormat) );
-       desiredFormat.mSampleRate       = sampleRate;
-       desiredFormat.mFormatID         = kAudioFormatLinearPCM ;
-       desiredFormat.mFormatFlags      = kAudioFormatFlagsNativeFloatPacked;
-       desiredFormat.mFramesPerPacket  = 1;
-       desiredFormat.mBitsPerChannel   = sizeof( float ) * 8;
-       desiredFormat.mBytesPerPacket=sizeof(float)*inStreamParams->channelCount;
-       desiredFormat.mBytesPerFrame =sizeof(float)*inStreamParams->channelCount;
-       desiredFormat.mChannelsPerFrame = inStreamParams->channelCount;
-
-       /* get the source format */
-       ERR_WRAP( AudioUnitGetProperty(
-                         *audioUnit,
-                         kAudioUnitProperty_StreamFormat,
-                         kAudioUnitScope_Output,
-                         INPUT_ELEMENT,
-                         &sourceFormat,
-                         &sourceSize ) );
-
-       if( desiredFormat.mSampleRate != sourceFormat.mSampleRate )
-       {
-          UInt32 value = kAudioConverterQuality_Max;
-          switch( macInputStreamFlags & 0x0700 ) {
-          case 0x0100: /*paMacCore_ConversionQualityMin:*/
-             value=kAudioConverterQuality_Min;
-             break;
-          case 0x0200: /*paMacCore_ConversionQualityLow:*/
-             value=kAudioConverterQuality_Low;
-             break;
-          case 0x0300: /*paMacCore_ConversionQualityMedium:*/
-             value=kAudioConverterQuality_Medium;
-             break;
-          case 0x0400: /*paMacCore_ConversionQualityHigh:*/
-             value=kAudioConverterQuality_High;
-             break;
-          }
-          VDBUG(( "Creating sample rate converter for input"
-                  " to convert from %g to %g\n",
-                  (float)sourceFormat.mSampleRate,
-                  (float)desiredFormat.mSampleRate ) );
-          /* create our converter */
-          ERR_WRAP( AudioConverterNew( 
-                             &sourceFormat,
-                             &desiredFormat,
-                             srConverter ) );
-          /* Set quality */
-          ERR_WRAP( AudioConverterSetProperty(
-                             *srConverter,
-                             kAudioConverterSampleRateConverterQuality,
-                             sizeof( value ),
-                             &value ) );
-       }
-    }
-    /* -- set IOProc (callback) -- */
-    callbackKey = outStreamParams ? kAudioUnitProperty_SetRenderCallback
-                                  : kAudioOutputUnitProperty_SetInputCallback ;
-    rcbs.inputProc = AudioIOProc;
-    rcbs.inputProcRefCon = refCon;
-    ERR_WRAP( AudioUnitSetProperty(
-                               *audioUnit,
-                               callbackKey,
-                               kAudioUnitScope_Output,
-                               outStreamParams ? OUTPUT_ELEMENT : INPUT_ELEMENT,
-                               &rcbs,
-                               sizeof(rcbs)) );
-
-    if( inStreamParams && outStreamParams && *srConverter )
-           ERR_WRAP( AudioUnitSetProperty(
-                               *audioUnit,
-                               kAudioOutputUnitProperty_SetInputCallback,
-                               kAudioUnitScope_Output,
-                               INPUT_ELEMENT,
-                               &rcbs,
-                               sizeof(rcbs)) );
-
-    /* channel mapping. */
-    if(inChannelMap)
-    {
-        UInt32 mapSize = inChannelMapSize *sizeof(SInt32);
-
-        //for each channel of desired input, map the channel from
-        //the device's output channel.
-        ERR_WRAP( AudioUnitSetProperty(*audioUnit,
-                                kAudioOutputUnitProperty_ChannelMap,
-                                kAudioUnitScope_Output,
-                                INPUT_ELEMENT,
-                                inChannelMap,
-                                mapSize));
-    }
-    if(outChannelMap)
-    {
-        UInt32 mapSize = outChannelMapSize *sizeof(SInt32);
-
-        //for each channel of desired output, map the channel from
-        //the device's output channel.
-        ERR_WRAP(AudioUnitSetProperty(*audioUnit,
-                                kAudioOutputUnitProperty_ChannelMap,
-                                kAudioUnitScope_Output,
-                                OUTPUT_ELEMENT,
-                                outChannelMap,
-                                mapSize));
-    }
-    /* initialize the audio unit */
-    ERR_WRAP( AudioUnitInitialize(*audioUnit) );
-
-    if( inStreamParams && outStreamParams )
-       VDBUG( ("Opened device %ld for input and output.\n", *audioDevice ) );
-    else if( inStreamParams )
-       VDBUG( ("Opened device %ld for input.\n", *audioDevice ) );
-    else if( outStreamParams )
-       VDBUG( ("Opened device %ld for output.\n", *audioDevice ) );
-    return paNoError;
-#undef ERR_WRAP
-
-    error:
-       CloseComponent( *audioUnit );
-       *audioUnit = NULL;
-       if( result )
-          return PaMacCore_SetError( result, line, 1 );
-       return paResult;
-}
-
-/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaMacAUHAL *auhalHostApi = (PaMacAUHAL*)hostApi;
-    PaMacCoreStream *stream = 0;
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
-    VVDBUG(("OpenStream(): in chan=%d, in fmt=%ld, out chan=%d, out fmt=%ld SR=%g, FPB=%ld\n",
-                inputParameters  ? inputParameters->channelCount  : -1,
-                inputParameters  ? inputParameters->sampleFormat  : -1,
-                outputParameters ? outputParameters->channelCount : -1,
-                outputParameters ? outputParameters->sampleFormat : -1,
-                (float) sampleRate,
-                framesPerBuffer ));
-    VDBUG( ("Opening Stream.\n") );
-
-    /*These first few bits of code are from paSkeleton with few modifications.*/
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* Host supports interleaved float32 */
-        hostInputSampleFormat = paFloat32;
-    }
-    else
-    {
-        inputChannelCount = 0;
-        inputSampleFormat = hostInputSampleFormat = paFloat32; /* Surpress 'uninitialised var' warnings. */
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support inputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* Host supports interleaved float32 */
-        hostOutputSampleFormat = paFloat32;
-    }
-    else
-    {
-        outputChannelCount = 0;
-        outputSampleFormat = hostOutputSampleFormat = paFloat32; /* Surpress 'uninitialized var' warnings. */
-    }
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-    stream = (PaMacCoreStream*)PaUtil_AllocateMemory( sizeof(PaMacCoreStream) );
-    if( !stream )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    /* If we fail after this point, we my be left in a bad state, with
-       some data structures setup and others not. So, first thing we
-       do is initialize everything so that if we fail, we know what hasn't
-       been touched.
-     */
-
-    stream->inputAudioBufferList.mBuffers[0].mData = NULL;
-    stream->inputRingBuffer.buffer = NULL;
-    bzero( &stream->blio, sizeof( PaMacBlio ) );
-/*
-    stream->blio.inputRingBuffer.buffer = NULL;
-    stream->blio.outputRingBuffer.buffer = NULL;
-    stream->blio.inputSampleFormat = inputParameters?inputParameters->sampleFormat:0;
-    stream->blio.inputSampleSize = computeSampleSizeFromFormat(stream->blio.inputSampleFormat);
-    stream->blio.outputSampleFormat=outputParameters?outputParameters->sampleFormat:0;
-    stream->blio.outputSampleSize = computeSampleSizeFromFormat(stream->blio.outputSampleFormat);
-*/
-    stream->inputSRConverter = NULL;
-    stream->inputUnit = NULL;
-    stream->outputUnit = NULL;
-    stream->inputFramesPerBuffer = 0;
-    stream->outputFramesPerBuffer = 0;
-    stream->bufferProcessorIsInitialized = FALSE;
-
-    /* assert( streamCallback ) ; */ /* only callback mode is implemented */
-    if( streamCallback )
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                        &auhalHostApi->callbackStreamInterface,
-                                        streamCallback, userData );
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                        &auhalHostApi->blockingStreamInterface,
-                                        BlioCallback, &stream->blio );
-    }
-
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-    /* -- handle paFramesPerBufferUnspecified -- */
-    if( framesPerBuffer == paFramesPerBufferUnspecified ) {
-       long requested = 64;
-       if( inputParameters )
-          requested = MAX( requested, inputParameters->suggestedLatency * sampleRate / 2 );
-       if( outputParameters )
-          requested = MAX( requested, outputParameters->suggestedLatency *sampleRate / 2 );
-       VDBUG( ("Block Size unspecified. Based on Latency, the user wants a Block Size near: %ld.\n",
-              requested ) );
-       if( requested <= 64 ) {
-          /*requested a realtively low latency. make sure this is in range of devices */
-          /*try to get the device's min natural buffer size and use that (but no smaller than 64).*/
-          AudioValueRange audioRange;
-          UInt32 size = sizeof( audioRange );
-          if( inputParameters ) {
-             WARNING( result = AudioDeviceGetProperty( auhalHostApi->devIds[inputParameters->device],
-                                          0,
-                                          false,
-                                          kAudioDevicePropertyBufferFrameSizeRange,
-                                          &size, &audioRange ) );
-             if( result )
-                requested = MAX( requested, audioRange.mMinimum );
-          }
-          size = sizeof( audioRange );
-          if( outputParameters ) {
-             WARNING( result = AudioDeviceGetProperty( auhalHostApi->devIds[outputParameters->device],
-                                          0,
-                                          false,
-                                          kAudioDevicePropertyBufferFrameSizeRange,
-                                          &size, &audioRange ) );
-             if( result )
-                requested = MAX( requested, audioRange.mMinimum );
-          }
-       } else {
-          /* requested a realtively high latency. make sure this is in range of devices */
-          /*try to get the device's max natural buffer size and use that (but no larger than 1024).*/
-          AudioValueRange audioRange;
-          UInt32 size = sizeof( audioRange );
-          requested = MIN( requested, 1024 );
-          if( inputParameters ) {
-             WARNING( result = AudioDeviceGetProperty( auhalHostApi->devIds[inputParameters->device],
-                                          0,
-                                          false,
-                                          kAudioDevicePropertyBufferFrameSizeRange,
-                                          &size, &audioRange ) );
-             if( result )
-                requested = MIN( requested, audioRange.mMaximum );
-          }
-          size = sizeof( audioRange );
-          if( outputParameters ) {
-             WARNING( result = AudioDeviceGetProperty( auhalHostApi->devIds[outputParameters->device],
-                                          0,
-                                          false,
-                                          kAudioDevicePropertyBufferFrameSizeRange,
-                                          &size, &audioRange ) );
-             if( result )
-                requested = MIN( requested, audioRange.mMaximum );
-          }
-       }
-       /* -- double check ranges -- */
-       if( requested > 1024 ) requested = 1024;
-       if( requested < 64 ) requested = 64;
-       VDBUG(("After querying hardware, setting block size to %ld.\n", requested));
-       framesPerBuffer = requested;
-    }
-
-    /* -- Now we actually open and setup streams. -- */
-    if( inputParameters && outputParameters && outputParameters->device == inputParameters->device )
-    { /* full duplex. One device. */
-       UInt32 inputFramesPerBuffer  = (UInt32) stream->inputFramesPerBuffer;
-       UInt32 outputFramesPerBuffer = (UInt32) stream->outputFramesPerBuffer;
-       result = OpenAndSetupOneAudioUnit( stream,
-                                          inputParameters,
-                                          outputParameters,
-                                          framesPerBuffer,
-                                          &inputFramesPerBuffer,
-                                          &outputFramesPerBuffer,
-                                          auhalHostApi,
-                                          &(stream->inputUnit),
-                                          &(stream->inputSRConverter),
-                                          &(stream->inputDevice),
-                                          sampleRate,
-                                          stream );
-       stream->inputFramesPerBuffer = inputFramesPerBuffer;
-       stream->outputFramesPerBuffer = outputFramesPerBuffer;
-       stream->outputUnit = stream->inputUnit;
-       stream->outputDevice = stream->inputDevice;
-       if( result != paNoError )
-           goto error;
-    }
-    else
-    { /* full duplex, different devices OR simplex */
-       UInt32 outputFramesPerBuffer = (UInt32) stream->outputFramesPerBuffer;
-       UInt32 inputFramesPerBuffer  = (UInt32) stream->inputFramesPerBuffer;
-       result = OpenAndSetupOneAudioUnit( stream,
-                                          NULL,
-                                          outputParameters,
-                                          framesPerBuffer,
-                                          NULL,
-                                          &outputFramesPerBuffer,
-                                          auhalHostApi,
-                                          &(stream->outputUnit),
-                                          NULL,
-                                          &(stream->outputDevice),
-                                          sampleRate,
-                                          stream );
-       if( result != paNoError )
-           goto error;
-       result = OpenAndSetupOneAudioUnit( stream,
-                                          inputParameters,
-                                          NULL,
-                                          framesPerBuffer,
-                                          &inputFramesPerBuffer,
-                                          NULL,
-                                          auhalHostApi,
-                                          &(stream->inputUnit),
-                                          &(stream->inputSRConverter),
-                                          &(stream->inputDevice),
-                                          sampleRate,
-                                          stream );
-       if( result != paNoError )
-           goto error;
-       stream->inputFramesPerBuffer = inputFramesPerBuffer;
-       stream->outputFramesPerBuffer = outputFramesPerBuffer;
-    }
-
-    if( stream->inputUnit ) {
-       const size_t szfl = sizeof(float);
-       /* setup the AudioBufferList used for input */
-       bzero( &stream->inputAudioBufferList, sizeof( AudioBufferList ) );
-       stream->inputAudioBufferList.mNumberBuffers = 1;
-       stream->inputAudioBufferList.mBuffers[0].mNumberChannels
-                 = inputChannelCount;
-       stream->inputAudioBufferList.mBuffers[0].mDataByteSize
-                 = stream->inputFramesPerBuffer*inputChannelCount*szfl;
-       stream->inputAudioBufferList.mBuffers[0].mData
-                 = (float *) calloc(
-                               stream->inputFramesPerBuffer*inputChannelCount,
-                               szfl );
-       if( !stream->inputAudioBufferList.mBuffers[0].mData )
-       {
-          result = paInsufficientMemory;
-          goto error;
-       }
-        
-       /*
-        * If input and output devs are different or we are doing SR conversion,
-        * we also need a
-        * ring buffer to store inpt data while waiting for output
-        * data.
-        */
-       if( (stream->outputUnit && stream->inputUnit != stream->outputUnit)
-           || stream->inputSRConverter )
-       {
-          /* May want the ringSize ot initial position in
-             ring buffer to depend somewhat on sample rate change */
-
-          void *data;
-          long ringSize;
-
-          ringSize = computeRingBufferSize( inputParameters,
-                                            outputParameters,
-                                            stream->inputFramesPerBuffer,
-                                            stream->outputFramesPerBuffer,
-                                            sampleRate );
-          /*ringSize <<= 4; *//*16x bigger, for testing */
-
-
-          /*now, we need to allocate memory for the ring buffer*/
-          data = calloc( ringSize, szfl );
-          if( !data )
-          {
-             result = paInsufficientMemory;
-             goto error;
-          }
-
-          /* now we can initialize the ring buffer */
-          PaUtil_InitializeRingBuffer( &stream->inputRingBuffer,
-                                   ringSize*szfl, data ) ;
-          /* advance the read point a little, so we are reading from the
-             middle of the buffer */
-          if( stream->outputUnit )
-             PaUtil_AdvanceRingBufferWriteIndex( &stream->inputRingBuffer, ringSize*szfl / RING_BUFFER_ADVANCE_DENOMINATOR );
-       }
-    }
-
-    /* -- initialize Blio Buffer Processors -- */
-    if( !streamCallback )
-    {
-       long ringSize;
-
-       ringSize = computeRingBufferSize( inputParameters,
-                                         outputParameters,
-                                         stream->inputFramesPerBuffer,
-                                         stream->outputFramesPerBuffer,
-                                         sampleRate );
-       result = initializeBlioRingBuffers( &stream->blio,
-              inputParameters?inputParameters->sampleFormat:0 ,
-              outputParameters?outputParameters->sampleFormat:0 ,
-              MAX(stream->inputFramesPerBuffer,stream->outputFramesPerBuffer),
-              ringSize,
-              inputParameters?inputChannelCount:0 ,
-              outputParameters?outputChannelCount:0 ) ;
-       if( result != paNoError )
-          goto error;
-    }
-
-    /* -- initialize Buffer Processor -- */
-    {
-       unsigned long maxHostFrames = stream->inputFramesPerBuffer;
-       if( stream->outputFramesPerBuffer > maxHostFrames )
-          maxHostFrames = stream->outputFramesPerBuffer;
-       result = PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-                 inputChannelCount, inputSampleFormat,
-                 hostInputSampleFormat,
-                 outputChannelCount, outputSampleFormat,
-                 hostOutputSampleFormat,
-                 sampleRate,
-                 streamFlags,
-                 framesPerBuffer,
-                 /* If sample rate conversion takes place, the buffer size
-                    will not be known. */
-                 maxHostFrames,
-                 stream->inputSRConverter
-                              ? paUtilUnknownHostBufferSize
-                              : paUtilBoundedHostBufferSize,
-                 streamCallback ? streamCallback : BlioCallback,
-                 streamCallback ? userData : &stream->blio );
-       if( result != paNoError )
-           goto error;
-    }
-    stream->bufferProcessorIsInitialized = TRUE;
-
-    /*
-        IMPLEMENT ME: initialise the following fields with estimated or actual
-        values.
-        I think this is okay the way it is br 12/1/05
-        maybe need to change input latency estimate if IO devs differ
-    */
-    stream->streamRepresentation.streamInfo.inputLatency =
-            PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor)/sampleRate;
-    stream->streamRepresentation.streamInfo.outputLatency =
-            PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor)/sampleRate;
-    stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-    stream->sampleRate  = sampleRate;
-    stream->outDeviceSampleRate = 0;
-    if( stream->outputUnit ) {
-       Float64 rate;
-       UInt32 size = sizeof( rate );
-       result = ERR( AudioDeviceGetProperty( stream->outputDevice,
-                                    0,
-                                    FALSE,
-                                    kAudioDevicePropertyNominalSampleRate,
-                                    &size, &rate ) );
-       if( result )
-          goto error;
-       stream->outDeviceSampleRate = rate;
-    }
-    stream->inDeviceSampleRate = 0;
-    if( stream->inputUnit ) {
-       Float64 rate;
-       UInt32 size = sizeof( rate );
-       result = ERR( AudioDeviceGetProperty( stream->inputDevice,
-                                    0,
-                                    TRUE,
-                                    kAudioDevicePropertyNominalSampleRate,
-                                    &size, &rate ) );
-       if( result )
-          goto error;
-       stream->inDeviceSampleRate = rate;
-    }
-    stream->userInChan  = inputChannelCount;
-    stream->userOutChan = outputChannelCount;
-
-    stream->isTimeSet   = FALSE;
-    stream->state = STOPPED;
-    stream->xrunFlags = 0;
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-    CloseStream( stream );
-    return result;
-}
-
-PaTime GetStreamTime( PaStream *s )
-{
-   /* FIXME: I am not at all sure this timing info stuff is right.
-             patest_sine_time reports negative latencies, which is wierd.*/
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    AudioTimeStamp timeStamp;
-
-    VVDBUG(("GetStreamTime()\n"));
-
-    if ( !stream->isTimeSet )
-        return (PaTime)0;
-
-    if ( stream->outputDevice ) {
-        AudioDeviceGetCurrentTime( stream->outputDevice, &timeStamp);
-        return (PaTime)(timeStamp.mSampleTime - stream->startTime.mSampleTime)/stream->outDeviceSampleRate;
-    } else if ( stream->inputDevice ) {
-        AudioDeviceGetCurrentTime( stream->inputDevice, &timeStamp);
-    return (PaTime)(timeStamp.mSampleTime - stream->startTime.mSampleTime)/stream->inDeviceSampleRate;
-    } else {
-        return (PaTime)0;
-    }
-}
-
-static void setStreamStartTime( PaStream *stream )
-{
-   /* FIXME: I am not at all sure this timing info stuff is right.
-             patest_sine_time reports negative latencies, which is wierd.*/
-   PaMacCoreStream *s = (PaMacCoreStream *) stream;
-   VVDBUG(("setStreamStartTime()\n"));
-   if( s->outputDevice )
-      AudioDeviceGetCurrentTime( s->outputDevice, &s->startTime);
-   else if( s->inputDevice )
-      AudioDeviceGetCurrentTime( s->inputDevice, &s->startTime);
-   else
-      bzero( &s->startTime, sizeof( s->startTime ) );
-
-   //FIXME: we need a memory barier here
-
-   s->isTimeSet = TRUE;
-}
-
-
-static PaTime TimeStampToSecs(PaMacCoreStream *stream, const AudioTimeStamp* timeStamp)
-{
-    VVDBUG(("TimeStampToSecs()\n"));
-    //printf( "ATS: %lu, %g, %g\n", timeStamp->mFlags, timeStamp->mSampleTime, timeStamp->mRateScalar );
-    if (timeStamp->mFlags & kAudioTimeStampSampleTimeValid)
-        return (timeStamp->mSampleTime / stream->sampleRate);
-    else
-        return 0;
-}
-
-#define RING_BUFFER_EMPTY (1000)
-
-static OSStatus ringBufferIOProc( AudioConverterRef inAudioConverter, 
-                             UInt32*ioDataSize, 
-                             void** outData, 
-                             void*inUserData )
-{
-   void *dummyData;
-   long dummySize;
-   PaUtilRingBuffer *rb = (PaUtilRingBuffer *) inUserData;
-
-   VVDBUG(("ringBufferIOProc()\n"));
-
-   assert( sizeof( UInt32 ) == sizeof( long ) );
-   if( PaUtil_GetRingBufferReadAvailable( rb ) == 0 ) {
-      *outData = NULL;
-      *ioDataSize = 0;
-      return RING_BUFFER_EMPTY;
-   }
-   PaUtil_GetRingBufferReadRegions( rb, *ioDataSize,
-                                    outData, (long *)ioDataSize, 
-                                    &dummyData, &dummySize );
-      
-   assert( *ioDataSize );
-   PaUtil_AdvanceRingBufferReadIndex( rb, *ioDataSize );
-
-   return noErr;
-}
-
-/*
- * Called by the AudioUnit API to process audio from the sound card.
- * This is where the magic happens.
- */
-/* FEEDBACK: there is a lot of redundant code here because of how all the cases differ. This makes it hard to maintain, so if there are suggestinos for cleaning it up, I'm all ears. */
-static OSStatus AudioIOProc( void *inRefCon,
-                               AudioUnitRenderActionFlags *ioActionFlags,
-                               const AudioTimeStamp *inTimeStamp,
-                               UInt32 inBusNumber,
-                               UInt32 inNumberFrames,
-                               AudioBufferList *ioData )
-{
-   unsigned long framesProcessed     = 0;
-   PaStreamCallbackTimeInfo timeInfo = {0,0,0};
-   PaMacCoreStream *stream           = (PaMacCoreStream*)inRefCon;
-   const bool isRender               = inBusNumber == OUTPUT_ELEMENT;
-   int callbackResult                = paContinue ;
-
-   VVDBUG(("AudioIOProc()\n"));
-
-   PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-
-   /* -----------------------------------------------------------------*\
-      This output may be useful for debugging,
-      But printing durring the callback is a bad enough idea that
-      this is not enabled by enableing the usual debugging calls.
-   \* -----------------------------------------------------------------*/
-   /*
-   static int renderCount = 0;
-   static int inputCount = 0;
-   printf( "-------------------  starting reder/input\n" );
-   if( isRender )
-      printf("Render callback (%d):\t", ++renderCount);
-   else
-      printf("Input callback  (%d):\t", ++inputCount);
-   printf( "Call totals: %d (input), %d (render)\n", inputCount, renderCount );
-
-   printf( "--- inBusNumber: %lu\n", inBusNumber );
-   printf( "--- inNumberFrames: %lu\n", inNumberFrames );
-   printf( "--- %x ioData\n", (unsigned) ioData );
-   if( ioData )
-   {
-      int i=0;
-      printf( "--- ioData.mNumBuffers %lu: \n", ioData->mNumberBuffers );
-      for( i=0; i<ioData->mNumberBuffers; ++i )
-         printf( "--- ioData buffer %d size: %lu.\n", i, ioData->mBuffers[i].mDataByteSize );
-   }
-      ----------------------------------------------------------------- */
-
-   if( !stream->isTimeSet )
-      setStreamStartTime( stream );
-
-   if( isRender ) {
-      AudioTimeStamp currentTime;
-      timeInfo.outputBufferDacTime = TimeStampToSecs(stream, inTimeStamp);
-      AudioDeviceGetCurrentTime(stream->outputDevice, &currentTime);
-      timeInfo.currentTime = TimeStampToSecs(stream, &currentTime);
-   }
-   if( isRender && stream->inputUnit == stream->outputUnit )
-      timeInfo.inputBufferAdcTime = TimeStampToSecs(stream, inTimeStamp);
-   if( !isRender ) {
-      AudioTimeStamp currentTime;
-      timeInfo.inputBufferAdcTime = TimeStampToSecs(stream, inTimeStamp);
-      AudioDeviceGetCurrentTime(stream->inputDevice, &currentTime);
-      timeInfo.currentTime = TimeStampToSecs(stream, &currentTime);
-   }
-
-   //printf( "---%g, %g, %g\n", timeInfo.inputBufferAdcTime, timeInfo.currentTime, timeInfo.outputBufferDacTime );
-
-   if( isRender && stream->inputUnit == stream->outputUnit
-                && !stream->inputSRConverter )
-   {
-      /* --------- Full Duplex, One Device, no SR Conversion -------
-       *
-       * This is the lowest latency case, and also the simplest.
-       * Input data and output data are available at the same time.
-       * we do not use the input SR converter or the input ring buffer.
-       *
-       */
-      OSStatus err = 0;
-      unsigned long frames;
-
-      /* -- start processing -- */
-      PaUtil_BeginBufferProcessing( &(stream->bufferProcessor),
-                                    &timeInfo,
-                                    stream->xrunFlags );
-      stream->xrunFlags = 0; //FIXME: this flag also gets set outside by a callback, which calls the xrunCallback function. It should be in the same thread as the main audio callback, but the apple docs just use the word "usually" so it may be possible to loose an xrun notification, if that callback happens here.
-
-      /* -- compute frames. do some checks -- */
-      assert( ioData->mNumberBuffers == 1 );
-      assert( ioData->mBuffers[0].mNumberChannels == stream->userOutChan );
-      frames = ioData->mBuffers[0].mDataByteSize;
-      frames /= sizeof( float ) * ioData->mBuffers[0].mNumberChannels;
-      /* -- copy and process input data -- */
-      err= AudioUnitRender(stream->inputUnit,
-                    ioActionFlags,
-                    inTimeStamp,
-                    INPUT_ELEMENT,
-                    inNumberFrames,
-                    &stream->inputAudioBufferList );
-      /* FEEDBACK: I'm not sure what to do when this call fails */
-      assert( !err );
-
-      PaUtil_SetInputFrameCount( &(stream->bufferProcessor), frames );
-      PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                          0,
-                          stream->inputAudioBufferList.mBuffers[0].mData,
-                          stream->inputAudioBufferList.mBuffers[0].mNumberChannels);
-      /* -- Copy and process output data -- */
-      PaUtil_SetOutputFrameCount( &(stream->bufferProcessor), frames );
-      PaUtil_SetInterleavedOutputChannels( &(stream->bufferProcessor),
-                                        0,
-                                        ioData->mBuffers[0].mData,
-                                        ioData->mBuffers[0].mNumberChannels);
-      /* -- complete processing -- */
-      framesProcessed =
-                 PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                             &callbackResult );
-   }
-   else if( isRender )
-   {
-      /* -------- Output Side of Full Duplex (Separate Devices or SR Conversion)
-       *       -- OR Simplex Output
-       *
-       * This case handles output data as in the full duplex case,
-       * and, if there is input data, reads it off the ring buffer 
-       * and into the PA buffer processor. If sample rate conversion
-       * is required on input, that is done here as well.
-       */
-      unsigned long frames;
-
-      /* Sometimes, when stopping a duplex stream we get erroneous
-         xrun flags, so if this is our last run, clear the flags. */
-      int xrunFlags = stream->xrunFlags;
-/*
-      if( xrunFlags & paInputUnderflow )
-         printf( "input underflow.\n" );
-      if( xrunFlags & paInputOverflow )
-         printf( "input overflow.\n" );
-*/
-      if( stream->state == STOPPING || stream->state == CALLBACK_STOPPED )
-         xrunFlags = 0;
-
-      /* -- start processing -- */
-      PaUtil_BeginBufferProcessing( &(stream->bufferProcessor),
-                                    &timeInfo,
-                                    xrunFlags );
-      stream->xrunFlags = 0; /* FEEDBACK: we only send flags to Buf Proc once */
-
-      /* -- Copy and process output data -- */
-      assert( ioData->mNumberBuffers == 1 );
-      frames = ioData->mBuffers[0].mDataByteSize;
-      frames /= sizeof( float ) * ioData->mBuffers[0].mNumberChannels;
-      assert( ioData->mBuffers[0].mNumberChannels == stream->userOutChan );
-      PaUtil_SetOutputFrameCount( &(stream->bufferProcessor), frames );
-      PaUtil_SetInterleavedOutputChannels( &(stream->bufferProcessor),
-                                     0,
-                                     ioData->mBuffers[0].mData,
-                                     ioData->mBuffers[0].mNumberChannels);
-
-      /* -- copy and process input data, and complete processing -- */
-      if( stream->inputUnit ) {
-         const int flsz = sizeof( float );
-         /* Here, we read the data out of the ring buffer, through the
-            audio converter. */
-         int inChan = stream->inputAudioBufferList.mBuffers[0].mNumberChannels;
-         if( stream->inputSRConverter )
-         {
-               OSStatus err;
-               UInt32 size;
-               float data[ inChan * frames ];
-               size = sizeof( data );
-               err = AudioConverterFillBuffer( 
-                             stream->inputSRConverter,
-                             ringBufferIOProc,
-                             &stream->inputRingBuffer,
-                             &size,
-                             (void *)&data );
-               if( err == RING_BUFFER_EMPTY )
-               { /*the ring buffer callback underflowed */
-                  err = 0;
-                  bzero( ((char *)data) + size, sizeof(data)-size );
-                  stream->xrunFlags |= paInputUnderflow;
-               }
-               ERR( err );
-               assert( !err );
-               
-               PaUtil_SetInputFrameCount( &(stream->bufferProcessor), frames );
-               PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                                   0,
-                                   data,
-                                   inChan );
-               framesProcessed =
-                    PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                                &callbackResult );
-         }
-         else
-         {
-            /* Without the AudioConverter is actually a bit more complex
-               because we have to do a little buffer processing that the
-               AudioConverter would otherwise handle for us. */
-            void *data1, *data2;
-            long size1, size2;
-            PaUtil_GetRingBufferReadRegions( &stream->inputRingBuffer,
-                                             inChan*frames*flsz,
-                                             &data1, &size1,
-                                             &data2, &size2 );
-            if( size1 / ( flsz * inChan ) == frames ) {
-               /* simplest case: all in first buffer */
-               PaUtil_SetInputFrameCount( &(stream->bufferProcessor), frames );
-               PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                                   0,
-                                   data1,
-                                   inChan );
-               framesProcessed =
-                    PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                                &callbackResult );
-               PaUtil_AdvanceRingBufferReadIndex(&stream->inputRingBuffer, size1 );
-            } else if( ( size1 + size2 ) / ( flsz * inChan ) < frames ) {
-               /*we underflowed. take what data we can, zero the rest.*/
-               unsigned char data[frames*inChan*flsz];
-               if( size1 )
-                  memcpy( data, data1, size1 );
-               if( size2 )
-                  memcpy( data+size1, data2, size2 );
-               bzero( data+size1+size2, frames*flsz*inChan - size1 - size2 );
-
-               PaUtil_SetInputFrameCount( &(stream->bufferProcessor), frames );
-               PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                                   0,
-                                   data,
-                                   inChan );
-               framesProcessed =
-                    PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                                &callbackResult );
-               PaUtil_AdvanceRingBufferReadIndex( &stream->inputRingBuffer,
-                                                  size1+size2 );
-               /* flag underflow */
-               stream->xrunFlags |= paInputUnderflow;
-            } else {
-               /*we got all the data, but split between buffers*/
-               PaUtil_SetInputFrameCount( &(stream->bufferProcessor),
-                                          size1 / ( flsz * inChan ) );
-               PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                                   0,
-                                   data1,
-                                   inChan );
-               PaUtil_Set2ndInputFrameCount( &(stream->bufferProcessor),
-                                             size2 / ( flsz * inChan ) );
-               PaUtil_Set2ndInterleavedInputChannels( &(stream->bufferProcessor),
-                                   0,
-                                   data2,
-                                   inChan );
-               framesProcessed =
-                    PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                                &callbackResult );
-               PaUtil_AdvanceRingBufferReadIndex(&stream->inputRingBuffer, size1+size2 );
-            }
-         }
-      } else {
-         framesProcessed =
-                 PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                             &callbackResult );
-      }
-
-   }
-   else
-   {
-      /* ------------------ Input
-       *
-       * First, we read off the audio data and put it in the ring buffer.
-       * if this is an input-only stream, we need to process it more,
-       * otherwise, we let the output case deal with it.
-       */
-      OSStatus err = 0;
-      int chan = stream->inputAudioBufferList.mBuffers[0].mNumberChannels ;
-      /* FIXME: looping here may not actually be necessary, but it was something I tried in testing. */
-      do {
-         err= AudioUnitRender(stream->inputUnit,
-                 ioActionFlags,
-                 inTimeStamp,
-                 INPUT_ELEMENT,
-                 inNumberFrames,
-                 &stream->inputAudioBufferList );
-         if( err == -10874 )
-            inNumberFrames /= 2;
-      } while( err == -10874 && inNumberFrames > 1 );
-      /* FEEDBACK: I'm not sure what to do when this call fails */
-      ERR( err );
-      assert( !err );
-      if( stream->inputSRConverter || stream->outputUnit )
-      {
-         /* If this is duplex or we use a converter, put the data
-            into the ring buffer. */
-         long bytesIn, bytesOut;
-         bytesIn = sizeof( float ) * inNumberFrames * chan;
-         bytesOut = PaUtil_WriteRingBuffer( &stream->inputRingBuffer,
-                                            stream->inputAudioBufferList.mBuffers[0].mData,
-                                            bytesIn );
-         if( bytesIn != bytesOut )
-            stream->xrunFlags |= paInputOverflow ;
-      }
-      else
-      {
-         /* for simplex input w/o SR conversion,
-            just pop the data into the buffer processor.*/
-         PaUtil_BeginBufferProcessing( &(stream->bufferProcessor),
-                              &timeInfo,
-                              stream->xrunFlags );
-         stream->xrunFlags = 0;
-
-         PaUtil_SetInputFrameCount( &(stream->bufferProcessor), inNumberFrames);
-         PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                             0,
-                             stream->inputAudioBufferList.mBuffers[0].mData,
-                             chan );
-         framesProcessed =
-              PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                          &callbackResult );
-      }
-      if( !stream->outputUnit && stream->inputSRConverter )
-      {
-         /* ------------------ Simplex Input w/ SR Conversion
-          *
-          * if this is a simplex input stream, we need to read off the buffer,
-          * do our sample rate conversion and pass the results to the buffer
-          * processor.
-          * The logic here is complicated somewhat by the fact that we don't
-          * know how much data is available, so we loop on reasonably sized
-          * chunks, and let the BufferProcessor deal with the rest.
-          *
-          */
-         /*This might be too big or small depending on SR conversion*/
-         float data[ chan * inNumberFrames ];
-         OSStatus err;
-         do
-         { /*Run the buffer processor until we are out of data*/
-            UInt32 size;
-            long f;
-
-            size = sizeof( data );
-            err = AudioConverterFillBuffer( 
-                          stream->inputSRConverter,
-                          ringBufferIOProc,
-                          &stream->inputRingBuffer,
-                          &size,
-                          (void *)data );
-            if( err != RING_BUFFER_EMPTY )
-               ERR( err );
-            assert( err == 0 || err == RING_BUFFER_EMPTY );
-
-            f = size / ( chan * sizeof(float) );
-            PaUtil_SetInputFrameCount( &(stream->bufferProcessor), f );
-            if( f )
-            {
-               PaUtil_BeginBufferProcessing( &(stream->bufferProcessor),
-                                             &timeInfo,
-                                             stream->xrunFlags );
-               stream->xrunFlags = 0;
-
-               PaUtil_SetInterleavedInputChannels( &(stream->bufferProcessor),
-                                0,
-                                data,
-                                chan );
-               framesProcessed =
-                    PaUtil_EndBufferProcessing( &(stream->bufferProcessor),
-                                                &callbackResult );
-            }
-         } while( callbackResult == paContinue && !err );
-      }
-   }
-
-   switch( callbackResult )
-   {
-   case paContinue: break;
-   case paComplete:
-   case paAbort:
-      stream->isTimeSet = FALSE;
-      stream->state = CALLBACK_STOPPED ;
-      if( stream->outputUnit )
-         AudioOutputUnitStop(stream->outputUnit);
-      if( stream->inputUnit )
-         AudioOutputUnitStop(stream->inputUnit);
-      break;
-   }
-
-   PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed );
-   return noErr;
-}
-
-
-/*
-    When CloseStream() is called, the multi-api layer ensures that
-    the stream has already been stopped or aborted.
-*/
-static PaError CloseStream( PaStream* s )
-{
-    /* This may be called from a failed OpenStream.
-       Therefore, each piece of info is treated seperately. */
-    PaError result = paNoError;
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-
-    VVDBUG(("CloseStream()\n"));
-    VDBUG( ( "Closing stream.\n" ) );
-
-    if( stream ) {
-       if( stream->outputUnit )
-          AudioDeviceRemovePropertyListener( stream->outputDevice,
-                                             0,
-                                             false,
-                                             kAudioDeviceProcessorOverload,
-                                             xrunCallback );
-       if( stream->inputUnit && stream->outputUnit != stream->inputUnit )
-          AudioDeviceRemovePropertyListener( stream->inputDevice,
-                                             0,
-                                             true,
-                                             kAudioDeviceProcessorOverload,
-                                             xrunCallback );
-       if( stream->outputUnit && stream->outputUnit != stream->inputUnit ) {
-          AudioUnitUninitialize( stream->outputUnit );
-          CloseComponent( stream->outputUnit );
-       }
-       stream->outputUnit = NULL;
-       if( stream->inputUnit )
-       {
-          AudioUnitUninitialize( stream->inputUnit );
-          CloseComponent( stream->inputUnit );
-          stream->inputUnit = NULL;
-       }
-       if( stream->inputRingBuffer.buffer )
-          free( (void *) stream->inputRingBuffer.buffer );
-       stream->inputRingBuffer.buffer = NULL;
-       /*TODO: is there more that needs to be done on error
-               from AudioConverterDispose?*/
-       if( stream->inputSRConverter )
-          ERR( AudioConverterDispose( stream->inputSRConverter ) );
-       stream->inputSRConverter = NULL;
-       if( stream->inputAudioBufferList.mBuffers[0].mData )
-          free( stream->inputAudioBufferList.mBuffers[0].mData );
-       stream->inputAudioBufferList.mBuffers[0].mData = NULL;
-
-       result = destroyBlioRingBuffers( &stream->blio );
-       if( result )
-          return result;
-       if( stream->bufferProcessorIsInitialized )
-          PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-       PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-       PaUtil_FreeMemory( stream );
-    }
-
-    return result;
-}
-
-static PaError StartStream( PaStream *s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    OSStatus result = noErr;
-    VVDBUG(("StartStream()\n"));
-    VDBUG( ( "Starting stream.\n" ) );
-
-#define ERR_WRAP(mac_err) do { result = mac_err ; if ( result != noErr ) return ERR(result) ; } while(0)
-
-    /*FIXME: maybe want to do this on close/abort for faster start? */
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-    if(  stream->inputSRConverter )
-       ERR_WRAP( AudioConverterReset( stream->inputSRConverter ) );
-
-    /* -- start -- */
-    stream->state = ACTIVE;
-    if( stream->inputUnit ) {
-       ERR_WRAP( AudioOutputUnitStart(stream->inputUnit) );
-    }
-    if( stream->outputUnit && stream->outputUnit != stream->inputUnit ) {
-       ERR_WRAP( AudioOutputUnitStart(stream->outputUnit) );
-    }
-
-    //setStreamStartTime( stream );
-    //stream->isTimeSet = TRUE;
-
-    return paNoError;
-#undef ERR_WRAP
-}
-
-// it's not clear from appl's docs that this really waits
-// until all data is flushed.
-static ComponentResult BlockWhileAudioUnitIsRunning( AudioUnit audioUnit, AudioUnitElement element )
-{
-    Boolean isRunning = 1;
-    while( isRunning ) {
-       UInt32 s = sizeof( isRunning );
-       ComponentResult err = AudioUnitGetProperty( audioUnit, kAudioOutputUnitProperty_IsRunning, kAudioUnitScope_Global, element,  &isRunning, &s );
-       if( err )
-          return err;
-       Pa_Sleep( 100 );
-    }
-    return noErr;
-}
-
-static PaError StopStream( PaStream *s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    OSStatus result = noErr;
-    PaError paErr;
-    VVDBUG(("StopStream()\n"));
-
-    VDBUG( ("Waiting for BLIO.\n") );
-    waitUntilBlioWriteBufferIsFlushed( &stream->blio );
-    VDBUG( ( "Stopping stream.\n" ) );
-
-    stream->isTimeSet = FALSE;
-    stream->state = STOPPING;
-
-#define ERR_WRAP(mac_err) do { result = mac_err ; if ( result != noErr ) return ERR(result) ; } while(0)
-    /* -- stop and reset -- */
-    if( stream->inputUnit == stream->outputUnit && stream->inputUnit )
-    {
-       ERR_WRAP( AudioOutputUnitStop(stream->inputUnit) );
-       ERR_WRAP( BlockWhileAudioUnitIsRunning(stream->inputUnit,0) );
-       ERR_WRAP( BlockWhileAudioUnitIsRunning(stream->inputUnit,1) );
-       ERR_WRAP( AudioUnitReset(stream->inputUnit, kAudioUnitScope_Global, 1) );
-       ERR_WRAP( AudioUnitReset(stream->inputUnit, kAudioUnitScope_Global, 0) );
-    }
-    else
-    {
-       if( stream->inputUnit )
-       {
-          ERR_WRAP(AudioOutputUnitStop(stream->inputUnit) );
-          ERR_WRAP( BlockWhileAudioUnitIsRunning(stream->inputUnit,1) );
-          ERR_WRAP(AudioUnitReset(stream->inputUnit,kAudioUnitScope_Global,1));
-       }
-       if( stream->outputUnit )
-       {
-          ERR_WRAP(AudioOutputUnitStop(stream->outputUnit));
-          ERR_WRAP( BlockWhileAudioUnitIsRunning(stream->outputUnit,0) );
-          ERR_WRAP(AudioUnitReset(stream->outputUnit,kAudioUnitScope_Global,0));
-       }
-    }
-    if( stream->inputRingBuffer.buffer ) {
-       PaUtil_FlushRingBuffer( &stream->inputRingBuffer );
-       bzero( (void *)stream->inputRingBuffer.buffer,
-              stream->inputRingBuffer.bufferSize );
-       /* advance the write point a little, so we are reading from the
-          middle of the buffer. We'll need extra at the end because
-          testing has shown that this helps. */
-       if( stream->outputUnit )
-          PaUtil_AdvanceRingBufferWriteIndex( &stream->inputRingBuffer,
-                                              stream->inputRingBuffer.bufferSize
-                                              / RING_BUFFER_ADVANCE_DENOMINATOR );
-    }
-
-    stream->xrunFlags = 0;
-    stream->state = STOPPED;
-
-    paErr = resetBlioRingBuffers( &stream->blio );
-    if( paErr )
-       return paErr;
-
-/*
-    //stream->isTimeSet = FALSE;
-*/
-
-    VDBUG( ( "Stream Stopped.\n" ) );
-    return paNoError;
-#undef ERR_WRAP
-}
-
-static PaError AbortStream( PaStream *s )
-{
-    VVDBUG(("AbortStream()->StopStream()\n"));
-    VDBUG( ( "Aborting stream.\n" ) );
-    /* We have nothing faster than StopStream. */
-    return StopStream(s);
-}
-
-
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    VVDBUG(("IsStreamStopped()\n"));
-
-    return stream->state == STOPPED ? 1 : 0;
-}
-
-
-static PaError IsStreamActive( PaStream *s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    VVDBUG(("IsStreamActive()\n"));
-    return ( stream->state == ACTIVE || stream->state == STOPPING );
-}
-
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaMacCoreStream *stream = (PaMacCoreStream*)s;
-    VVDBUG(("GetStreamCpuLoad()\n"));
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
diff --git a/external/portaudio2007/pa_mac_core.h b/external/portaudio2007/pa_mac_core.h
deleted file mode 100644
index d7ff4a2..0000000
--- a/external/portaudio2007/pa_mac_core.h
+++ /dev/null
@@ -1,171 +0,0 @@
-#ifndef PA_MAC_CORE_H
-#define PA_MAC_CORE_H
-/*
- * PortAudio Portable Real-Time Audio Library
- * Macintosh Core Audio specific extensions
- * portaudio.h should be included before this file.
- *
- * Copyright (c) 2005-2006 Bjorn Roche
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-#include <AudioUnit/AudioUnit.h>
-#include <AudioToolbox/AudioToolbox.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*
- * A pointer to a paMacCoreStreamInfo may be passed as
- * the hostApiSpecificStreamInfo in the PaStreamParameters struct
- * when opening a stream or querying the format. Use NULL, for the
- * defaults. Note that for duplex streams, flags for input and output
- * should be the same or behaviour is undefined.
- */
-typedef struct
-{
-    unsigned long size;           /**size of whole structure including this header */
-    PaHostApiTypeId hostApiType;  /**host API for which this data is intended */
-    unsigned long version;        /**structure version */
-    unsigned long flags;          /* flags to modify behaviour */
-    SInt32 const * channelMap;    /* Channel map for HAL channel mapping , if not needed, use NULL;*/ 
-    unsigned long channelMapSize; /* Channel map size for HAL channel mapping , if not needed, use 0;*/ 
-} PaMacCoreStreamInfo;
-
-/*
- * Functions
- */
-
-
-/* Use this function to initialize a paMacCoreStreamInfo struct
- * using the requested flags. Note that channel mapping is turned
- * off after a call to this function.
- * @param data The datastructure to initialize
- * @param flags The flags to initialize the datastructure with.
-*/
-void PaMacCore_SetupStreamInfo( PaMacCoreStreamInfo *data, unsigned long flags );
-
-/* call this after pa_SetupMacCoreStreamInfo to use channel mapping as described in notes.txt.
- * @param data The stream info structure to assign a channel mapping to
- * @param channelMap The channel map array, as described in notes.txt. This array pointer will be used directly (ie the underlying data will not be copied), so the caller should not free the array until after the stream has been opened.
- * @param channelMapSize The size of the channel map array.
- */
-void PaMacCore_SetupChannelMap( PaMacCoreStreamInfo *data, const SInt32 * const channelMap, unsigned long channelMapSize );
-
-/*
- * Retrieve the AudioDeviceID of the input device assigned to an open stream
- *
- * @param s The stream to query.
- *
- * @return A valid AudioDeviceID, or NULL if an error occurred.
- */
-AudioDeviceID PaMacCore_GetStreamInputDevice( PaStream* s );
- 
-/*
- * Retrieve the AudioDeviceID of the output device assigned to an open stream
- *
- * @param s The stream to query.
- *
- * @return A valid AudioDeviceID, or NULL if an error occurred.
- */
-AudioDeviceID PaMacCore_GetStreamOutputDevice( PaStream* s );
-
-/*
- * Returns a statically allocated string with the device's name
- * for the given channel. NULL will be returned on failure.
- *
- * This function's implemenation is not complete!
- *
- * @param device The PortAudio device index.
- * @param channel The channel number who's name is requested.
- * @return a statically allocated string with the name of the device.
- *         Because this string is statically allocated, it must be
- *         coppied if it is to be saved and used by the user after
- *         another call to this function.
- *
- */
-const char *PaMacCore_GetChannelName( int device, int channelIndex, bool input );
-
-/*
- * Flags
- */
-
-/*
- * The following flags alter the behaviour of PA on the mac platform.
- * they can be ORed together. These should work both for opening and
- * checking a device.
- */
-
-/* Allows PortAudio to change things like the device's frame size,
- * which allows for much lower latency, but might disrupt the device
- * if other programs are using it, even when you are just Querying
- * the device. */
-#define paMacCoreChangeDeviceParameters (0x01)
-
-/* In combination with the above flag,
- * causes the stream opening to fail, unless the exact sample rates
- * are supported by the device. */
-#define paMacCoreFailIfConversionRequired (0x02)
-
-/* These flags set the SR conversion quality, if required. The wierd ordering
- * allows Maximum Quality to be the default.*/
-#define paMacCoreConversionQualityMin    (0x0100)
-#define paMacCoreConversionQualityMedium (0x0200)
-#define paMacCoreConversionQualityLow    (0x0300)
-#define paMacCoreConversionQualityHigh   (0x0400)
-#define paMacCoreConversionQualityMax    (0x0000)
-
-/*
- * Here are some "preset" combinations of flags (above) to get to some
- * common configurations. THIS IS OVERKILL, but if more flags are added
- * it won't be.
- */
-
-/*This is the default setting: do as much sample rate conversion as possible
- * and as little mucking with the device as possible. */
-#define paMacCorePlayNice                    (0x00)
-/*This setting is tuned for pro audio apps. It allows SR conversion on input
-  and output, but it tries to set the appropriate SR on the device.*/
-#define paMacCorePro                         (0x01)
-/*This is a setting to minimize CPU usage and still play nice.*/
-#define paMacCoreMinimizeCPUButPlayNice      (0x0100)
-/*This is a setting to minimize CPU usage, even if that means interrupting the device. */
-#define paMacCoreMinimizeCPU                 (0x0101)
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_MAC_CORE_H */
diff --git a/external/portaudio2007/pa_mac_core_blocking.c b/external/portaudio2007/pa_mac_core_blocking.c
deleted file mode 100644
index 51478fa..0000000
--- a/external/portaudio2007/pa_mac_core_blocking.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * Implementation of the PortAudio API for Apple AUHAL
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostaip_src
-
- This file contains the implementation
- required for blocking I/O. It is separated from pa_mac_core.c simply to ease
- development.
-*/
-
-#include "pa_mac_core_blocking.h"
-#include "pa_mac_core_internal.h"
-#include <assert.h>
-#ifdef MOSX_USE_NON_ATOMIC_FLAG_BITS
-# define OSAtomicOr32( a, b ) ( (*(b)) |= (a) )
-# define OSAtomicAnd32( a, b ) ( (*(b)) &= (a) )
-#else
-# include <libkern/OSAtomic.h>
-#endif
-
-/*
- * This fnuction determines the size of a particular sample format.
- * if the format is not recognized, this returns zero.
- */
-static size_t computeSampleSizeFromFormat( PaSampleFormat format )
-{
-   switch( format ) {
-   case paFloat32: return 4;
-   case paInt32: return 4;
-   case paInt24: return 3;
-   case paInt16: return 2;
-   case paInt8: case paUInt8: return 1;
-   default: return 0;
-   }
-}
-/*
- * Same as computeSampleSizeFromFormat, except that if
- * the size is not a power of two, it returns the next power of two up
- */
-static size_t computeSampleSizeFromFormatPow2( PaSampleFormat format )
-{
-   switch( format ) {
-   case paFloat32: return 4;
-   case paInt32: return 4;
-   case paInt24: return 4;
-   case paInt16: return 2;
-   case paInt8: case paUInt8: return 1;
-   default: return 0;
-   }
-}
-
-
-
-/*
- * Functions for initializing, resetting, and destroying BLIO structures.
- *
- */
-
-/* This should be called with the relevant info when initializing a stream for
-   callback. */
-PaError initializeBlioRingBuffers(
-                                       PaMacBlio *blio,
-                                       PaSampleFormat inputSampleFormat,
-                                       PaSampleFormat outputSampleFormat,
-                                       size_t framesPerBuffer,
-                                       long ringBufferSize,
-                                       int inChan,
-                                       int outChan )
-{
-   void *data;
-   int result;
-
-   /* zeroify things */
-   bzero( blio, sizeof( PaMacBlio ) );
-   /* this is redundant, but the buffers are used to check
-      if the bufffers have been initialized, so we do it explicitly. */
-   blio->inputRingBuffer.buffer = NULL;
-   blio->outputRingBuffer.buffer = NULL;
-
-   /* initialize simple data */
-   blio->ringBufferFrames = ringBufferSize;
-   blio->inputSampleFormat = inputSampleFormat;
-   blio->inputSampleSizeActual = computeSampleSizeFromFormat(inputSampleFormat);
-   blio->inputSampleSizePow2 = computeSampleSizeFromFormatPow2(inputSampleFormat);
-   blio->outputSampleFormat = outputSampleFormat;
-   blio->outputSampleSizeActual = computeSampleSizeFromFormat(outputSampleFormat);
-   blio->outputSampleSizePow2 = computeSampleSizeFromFormatPow2(outputSampleFormat);
-
-   blio->framesPerBuffer = framesPerBuffer;
-   blio->inChan = inChan;
-   blio->outChan = outChan;
-   blio->statusFlags = 0;
-   blio->errors = paNoError;
-#ifdef PA_MAC_BLIO_MUTEX
-   blio->isInputEmpty = false;
-   blio->isOutputFull = false;
-#endif
-
-   /* setup ring buffers */
-#ifdef PA_MAC_BLIO_MUTEX
-   result = PaMacCore_SetUnixError( pthread_mutex_init(&(blio->inputMutex),NULL), 0 );
-   if( result )
-      goto error;
-   result = UNIX_ERR( pthread_cond_init( &(blio->inputCond), NULL ) );
-   if( result )
-      goto error;
-   result = UNIX_ERR( pthread_mutex_init(&(blio->outputMutex),NULL) );
-   if( result )
-      goto error;
-   result = UNIX_ERR( pthread_cond_init( &(blio->outputCond), NULL ) );
-#endif
-   if( inChan ) {
-      data = calloc( ringBufferSize, blio->inputSampleSizePow2*inChan );
-      if( !data )
-      {
-         result = paInsufficientMemory;
-         goto error;
-      }
-
-      assert( 0 == PaUtil_InitializeRingBuffer(
-            &blio->inputRingBuffer,
-            ringBufferSize*blio->inputSampleSizePow2*inChan,
-            data ) );
-   }
-   if( outChan ) {
-      data = calloc( ringBufferSize, blio->outputSampleSizePow2*outChan );
-      if( !data )
-      {
-         result = paInsufficientMemory;
-         goto error;
-      }
-
-      assert( 0 == PaUtil_InitializeRingBuffer(
-            &blio->outputRingBuffer,
-            ringBufferSize*blio->outputSampleSizePow2*outChan,
-            data ) );
-   }
-
-   result = resetBlioRingBuffers( blio );
-   if( result )
-      goto error;
-
-   return 0;
-
- error:
-   destroyBlioRingBuffers( blio );
-   return result;
-}
-
-#ifdef PA_MAC_BLIO_MUTEX
-PaError blioSetIsInputEmpty( PaMacBlio *blio, bool isEmpty )
-{
-   PaError result = paNoError;
-   if( isEmpty == blio->isInputEmpty )
-      goto done;
-
-   /* we need to update the value. Here's what we do:
-    * - Lock the mutex, so noone else can write.
-    * - update the value.
-    * - unlock.
-    * - broadcast to all listeners.
-    */
-   result = UNIX_ERR( pthread_mutex_lock( &blio->inputMutex ) );
-   if( result )
-      goto done;
-   blio->isInputEmpty = isEmpty;
-   result = UNIX_ERR( pthread_mutex_unlock( &blio->inputMutex ) );
-   if( result )
-      goto done;
-   result = UNIX_ERR( pthread_cond_broadcast( &blio->inputCond ) );
-   if( result )
-      goto done;
-
- done:
-   return result;
-}
-PaError blioSetIsOutputFull( PaMacBlio *blio, bool isFull )
-{
-   PaError result = paNoError;
-   if( isFull == blio->isOutputFull )
-      goto done;
-
-   /* we need to update the value. Here's what we do:
-    * - Lock the mutex, so noone else can write.
-    * - update the value.
-    * - unlock.
-    * - broadcast to all listeners.
-    */
-   result = UNIX_ERR( pthread_mutex_lock( &blio->outputMutex ) );
-   if( result )
-      goto done;
-   blio->isOutputFull = isFull;
-   result = UNIX_ERR( pthread_mutex_unlock( &blio->outputMutex ) );
-   if( result )
-      goto done;
-   result = UNIX_ERR( pthread_cond_broadcast( &blio->outputCond ) );
-   if( result )
-      goto done;
-
- done:
-   return result;
-}
-#endif
-
-/* This should be called after stopping or aborting the stream, so that on next
-   start, the buffers will be ready. */
-PaError resetBlioRingBuffers( PaMacBlio *blio )
-{
-#ifdef PA_MAC__BLIO_MUTEX
-   int result;
-#endif
-   blio->statusFlags = 0;
-   if( blio->outputRingBuffer.buffer ) {
-      PaUtil_FlushRingBuffer( &blio->outputRingBuffer );
-      bzero( blio->outputRingBuffer.buffer,
-             blio->outputRingBuffer.bufferSize );
-      /* Advance buffer */
-      PaUtil_AdvanceRingBufferWriteIndex( &blio->outputRingBuffer, blio->ringBufferFrames*blio->outputSampleSizeActual*blio->outChan );
-      //PaUtil_AdvanceRingBufferWriteIndex( &blio->outputRingBuffer, blio->outputRingBuffer.bufferSize );
-
-      /* Update isOutputFull. */
-#ifdef PA_MAC__BLIO_MUTEX
-      result = blioSetIsOutputFull( blio, toAdvance == blio->outputRingBuffer.bufferSize );
-      if( result )
-         goto error;
-#endif
-/*
-      printf( "------%d\n" ,  blio->framesPerBuffer );
-      printf( "------%d\n" ,  blio->outChan );
-      printf( "------%d\n" ,  blio->outputSampleSize );
-      printf( "------%d\n" ,  blio->framesPerBuffer*blio->outChan*blio->outputSampleSize );
-*/
-   }
-   if( blio->inputRingBuffer.buffer ) {
-      PaUtil_FlushRingBuffer( &blio->inputRingBuffer );
-      bzero( blio->inputRingBuffer.buffer,
-             blio->inputRingBuffer.bufferSize );
-      /* Update isInputEmpty. */
-#ifdef PA_MAC__BLIO_MUTEX
-      result = blioSetIsInputEmpty( blio, true );
-      if( result )
-         goto error;
-#endif
-   }
-   return paNoError;
-#ifdef PA_MAC__BLIO_MUTEX
- error:
-   return result;
-#endif
-}
-
-/*This should be called when you are done with the blio. It can safely be called
-  multiple times if there are no exceptions. */
-PaError destroyBlioRingBuffers( PaMacBlio *blio )
-{
-   PaError result = paNoError;
-   if( blio->inputRingBuffer.buffer ) {
-      free( blio->inputRingBuffer.buffer );
-#ifdef PA_MAC__BLIO_MUTEX
-      result = UNIX_ERR( pthread_mutex_destroy( & blio->inputMutex ) );
-      if( result ) return result;
-      result = UNIX_ERR( pthread_cond_destroy( & blio->inputCond ) );
-      if( result ) return result;
-#endif
-   }
-   blio->inputRingBuffer.buffer = NULL;
-   if( blio->outputRingBuffer.buffer ) {
-      free( blio->outputRingBuffer.buffer );
-#ifdef PA_MAC__BLIO_MUTEX
-      result = UNIX_ERR( pthread_mutex_destroy( & blio->outputMutex ) );
-      if( result ) return result;
-      result = UNIX_ERR( pthread_cond_destroy( & blio->outputCond ) );
-      if( result ) return result;
-#endif
-   }
-   blio->outputRingBuffer.buffer = NULL;
-
-   return result;
-}
-
-/*
- * this is the BlioCallback function. It expects to recieve a PaMacBlio Object
- * pointer as userData.
- *
- */
-int BlioCallback( const void *input, void *output, unsigned long frameCount,
-	const PaStreamCallbackTimeInfo* timeInfo,
-        PaStreamCallbackFlags statusFlags,
-        void *userData )
-{
-   PaMacBlio *blio = (PaMacBlio*)userData;
-   long avail;
-   long toRead;
-   long toWrite;
-
-   /* set flags returned by OS: */
-   OSAtomicOr32( statusFlags, &blio->statusFlags ) ;
-
-   /* --- Handle Input Buffer --- */
-   if( blio->inChan ) {
-      avail = PaUtil_GetRingBufferWriteAvailable( &blio->inputRingBuffer );
-
-      /* check for underflow */
-      if( avail < frameCount * blio->inputSampleSizeActual * blio->inChan )
-         OSAtomicOr32( paInputOverflow, &blio->statusFlags );
-
-      toRead = MIN( avail, frameCount * blio->inputSampleSizeActual * blio->inChan );
-
-      /* copy the data */
-      /*printf( "reading %d\n", toRead );*/
-      assert( toRead == PaUtil_WriteRingBuffer( &blio->inputRingBuffer, input, toRead ) );
-#ifdef PA_MAC__BLIO_MUTEX
-      /* Priority inversion. See notes below. */
-      blioSetIsInputEmpty( blio, false );
-#endif
-   }
-
-
-   /* --- Handle Output Buffer --- */
-   if( blio->outChan ) {
-      avail = PaUtil_GetRingBufferReadAvailable( &blio->outputRingBuffer );
-
-      /* check for underflow */
-      if( avail < frameCount * blio->outputSampleSizeActual * blio->outChan )
-         OSAtomicOr32( paOutputUnderflow, &blio->statusFlags );
-
-      toWrite = MIN( avail, frameCount * blio->outputSampleSizeActual * blio->outChan );
-
-      if( toWrite != frameCount * blio->outputSampleSizeActual * blio->outChan )
-         bzero( ((char *)output)+toWrite,
-                frameCount * blio->outputSampleSizeActual * blio->outChan - toWrite );
-      /* copy the data */
-      /*printf( "writing %d\n", toWrite );*/
-      assert( toWrite == PaUtil_ReadRingBuffer( &blio->outputRingBuffer, output, toWrite ) );
-#ifdef PA_MAC__BLIO_MUTEX
-      /* We have a priority inversion here. However, we will only have to
-         wait if this was true and is now false, which means we've got
-         some room in the buffer.
-         Hopefully problems will be minimized. */
-      blioSetIsOutputFull( blio, false );
-#endif
-   }
-
-   return paContinue;
-}
-
-PaError ReadStream( PaStream* stream,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaMacBlio *blio = & ((PaMacCoreStream*)stream) -> blio;
-    char *cbuf = (char *) buffer;
-    PaError ret = paNoError;
-    VVDBUG(("ReadStream()\n"));
-
-    while( frames > 0 ) {
-       long avail;
-       long toRead;
-       do {
-          avail = PaUtil_GetRingBufferReadAvailable( &blio->inputRingBuffer );
-/*
-          printf( "Read Buffer is %%%g full: %ld of %ld.\n",
-                  100 * (float)avail / (float) blio->inputRingBuffer.bufferSize,
-                  avail, blio->inputRingBuffer.bufferSize );
-*/
-          if( avail == 0 ) {
-#ifdef PA_MAC_BLIO_MUTEX
-             /**block when empty*/
-             ret = UNIX_ERR( pthread_mutex_lock( &blio->inputMutex ) );
-             if( ret )
-                return ret;
-             while( blio->isInputEmpty ) {
-                ret = UNIX_ERR( pthread_cond_wait( &blio->inputCond, &blio->inputMutex ) );
-                if( ret )
-                   return ret;
-             }
-             ret = UNIX_ERR( pthread_mutex_unlock( &blio->inputMutex ) );
-             if( ret )
-                return ret;
-#else
-             Pa_Sleep( PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL );
-#endif
-          }
-       } while( avail == 0 );
-       toRead = MIN( avail, frames * blio->inputSampleSizeActual * blio->inChan );
-       toRead -= toRead % blio->inputSampleSizeActual * blio->inChan ;
-       PaUtil_ReadRingBuffer( &blio->inputRingBuffer, (void *)cbuf, toRead );
-       cbuf += toRead;
-       frames -= toRead / ( blio->inputSampleSizeActual * blio->inChan );
-
-       if( toRead == avail ) {
-#ifdef PA_MAC_BLIO_MUTEX
-          /* we just emptied the buffer, so we need to mark it as empty. */
-          ret = blioSetIsInputEmpty( blio, true );
-          if( ret )
-             return ret;
-          /* of course, in the meantime, the callback may have put some sats
-             in, so
-             so check for that, too, to avoid a race condition. */
-          if( PaUtil_GetRingBufferReadAvailable( &blio->inputRingBuffer ) ) {
-             blioSetIsInputEmpty( blio, false );
-             if( ret )
-                return ret;
-          }
-#endif
-       }
-    }
-
-    /*   Report either paNoError or paInputOverflowed. */
-    /*   may also want to report other errors, but this is non-standard. */
-    ret = blio->statusFlags & paInputOverflow;
-
-    /* report underflow only once: */
-    if( ret ) {
-       OSAtomicAnd32( (uint32_t)(~paInputOverflow), &blio->statusFlags );
-       ret = paInputOverflowed;
-    }
-
-    return ret;
-}
-
-
-PaError WriteStream( PaStream* stream,
-                            const void *buffer,
-                            unsigned long frames )
-{
-    PaMacBlio *blio = & ((PaMacCoreStream*)stream) -> blio;
-    char *cbuf = (char *) buffer;
-    PaError ret = paNoError;
-    VVDBUG(("WriteStream()\n"));
-
-    while( frames > 0 ) {
-       long avail = 0;
-       long toWrite;
-
-       do {
-          avail = PaUtil_GetRingBufferWriteAvailable( &blio->outputRingBuffer );
-/*
-          printf( "Write Buffer is %%%g full: %ld of %ld.\n",
-                  100 - 100 * (float)avail / (float) blio->outputRingBuffer.bufferSize,
-                  avail, blio->outputRingBuffer.bufferSize );
-*/
-          if( avail == 0 ) {
-#ifdef PA_MAC_BLIO_MUTEX
-             /*block while full*/
-             ret = UNIX_ERR( pthread_mutex_lock( &blio->outputMutex ) );
-             if( ret )
-                return ret;
-             while( blio->isOutputFull ) {
-                ret = UNIX_ERR( pthread_cond_wait( &blio->outputCond, &blio->outputMutex ) );
-                if( ret )
-                   return ret;
-             }
-             ret = UNIX_ERR( pthread_mutex_unlock( &blio->outputMutex ) );
-             if( ret )
-                return ret;
-#else
-             Pa_Sleep( PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL );
-#endif
-          }
-       } while( avail == 0 );
-
-       toWrite = MIN( avail, frames * blio->outputSampleSizeActual * blio->outChan );
-       toWrite -= toWrite % blio->outputSampleSizeActual * blio->outChan ;
-       PaUtil_WriteRingBuffer( &blio->outputRingBuffer, (void *)cbuf, toWrite );
-       cbuf += toWrite;
-       frames -= toWrite / ( blio->outputSampleSizeActual * blio->outChan );
-
-#ifdef PA_MAC_BLIO_MUTEX
-       if( toWrite == avail ) {
-          /* we just filled up the buffer, so we need to mark it as filled. */
-          ret = blioSetIsOutputFull( blio, true );
-          if( ret )
-             return ret;
-          /* of course, in the meantime, we may have emptied the buffer, so
-             so check for that, too, to avoid a race condition. */
-          if( PaUtil_GetRingBufferWriteAvailable( &blio->outputRingBuffer ) ) {
-             blioSetIsOutputFull( blio, false );
-             if( ret )
-                return ret;
-          }
-       }
-#endif
-    }
-
-    /*   Report either paNoError or paOutputUnderflowed. */
-    /*   may also want to report other errors, but this is non-standard. */
-    ret = blio->statusFlags & paOutputUnderflow;
-
-    /* report underflow only once: */
-    if( ret ) {
-      OSAtomicAnd32( (uint32_t)(~paOutputUnderflow), &blio->statusFlags );
-      ret = paOutputUnderflowed;
-    }
-
-    return ret;
-}
-
-/*
- *
- */
-void waitUntilBlioWriteBufferIsFlushed( PaMacBlio *blio )
-{
-    if( blio->outputRingBuffer.buffer ) {
-       long avail = PaUtil_GetRingBufferWriteAvailable( &blio->outputRingBuffer );
-       while( avail != blio->outputRingBuffer.bufferSize ) {
-          if( avail == 0 )
-             Pa_Sleep( PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL );
-          avail = PaUtil_GetRingBufferWriteAvailable( &blio->outputRingBuffer );
-       }
-    }
-}
-
-
-signed long GetStreamReadAvailable( PaStream* stream )
-{
-    PaMacBlio *blio = & ((PaMacCoreStream*)stream) -> blio;
-    VVDBUG(("GetStreamReadAvailable()\n"));
-
-    return PaUtil_GetRingBufferReadAvailable( &blio->inputRingBuffer )
-                         / ( blio->outputSampleSizeActual * blio->outChan );
-}
-
-
-signed long GetStreamWriteAvailable( PaStream* stream )
-{
-    PaMacBlio *blio = & ((PaMacCoreStream*)stream) -> blio;
-    VVDBUG(("GetStreamWriteAvailable()\n"));
-
-    return PaUtil_GetRingBufferWriteAvailable( &blio->outputRingBuffer )
-                         / ( blio->outputSampleSizeActual * blio->outChan );
-}
-
diff --git a/external/portaudio2007/pa_mac_core_blocking.h b/external/portaudio2007/pa_mac_core_blocking.h
deleted file mode 100644
index c24531d..0000000
--- a/external/portaudio2007/pa_mac_core_blocking.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Internal blocking interfaces for PortAudio Apple AUHAL implementation
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostaip_src
-*/
-
-#ifndef PA_MAC_CORE_BLOCKING_H_
-#define PA_MAC_CORE_BLOCKING_H_
-
-#include "pa_ringbuffer.h"
-#include "portaudio.h"
-#include "pa_mac_core_utilities.h"
-
-/*
- * Number of miliseconds to busy wait whil waiting for data in blocking calls.
- */
-#define PA_MAC_BLIO_BUSY_WAIT_SLEEP_INTERVAL (5)
-/*
- * Define exactly one of these blocking methods
- * PA_MAC_BLIO_MUTEX is not actively maintained.
- */
-#define PA_MAC_BLIO_BUSY_WAIT
-/*
-#define PA_MAC_BLIO_MUTEX
-*/
-
-typedef struct {
-    PaUtilRingBuffer inputRingBuffer;
-    PaUtilRingBuffer outputRingBuffer;
-    size_t ringBufferFrames;
-    PaSampleFormat inputSampleFormat;
-    size_t inputSampleSizeActual;
-    size_t inputSampleSizePow2;
-    PaSampleFormat outputSampleFormat;
-    size_t outputSampleSizeActual;
-    size_t outputSampleSizePow2;
-
-    size_t framesPerBuffer;
-
-    int inChan;
-    int outChan;
-
-    //PaStreamCallbackFlags statusFlags;
-    uint32_t statusFlags;
-    PaError errors;
-
-    /* Here we handle blocking, using condition variables. */
-#ifdef  PA_MAC_BLIO_MUTEX
-    volatile bool isInputEmpty;
-    pthread_mutex_t inputMutex;
-    pthread_cond_t inputCond;
-
-    volatile bool isOutputFull;
-    pthread_mutex_t outputMutex;
-    pthread_cond_t outputCond;
-#endif
-}
-PaMacBlio;
-
-/*
- * These functions operate on condition and related variables.
- */
-
-PaError initializeBlioRingBuffers(
-                                       PaMacBlio *blio,
-                                       PaSampleFormat inputSampleFormat,
-                                       PaSampleFormat outputSampleFormat,
-                                       size_t framesPerBuffer,
-                                       long ringBufferSize,
-                                       int inChan,
-                                       int outChan );
-PaError destroyBlioRingBuffers( PaMacBlio *blio );
-PaError resetBlioRingBuffers( PaMacBlio *blio );
-
-int BlioCallback(
-        const void *input, void *output,
-        unsigned long frameCount,
-        const PaStreamCallbackTimeInfo* timeInfo,
-        PaStreamCallbackFlags statusFlags,
-        void *userData );
-
-void waitUntilBlioWriteBufferIsFlushed( PaMacBlio *blio );
-
-#endif /*PA_MAC_CORE_BLOCKING_H_*/
diff --git a/external/portaudio2007/pa_mac_core_internal.h b/external/portaudio2007/pa_mac_core_internal.h
deleted file mode 100644
index 291304c..0000000
--- a/external/portaudio2007/pa_mac_core_internal.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Internal interfaces for PortAudio Apple AUHAL implementation
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file pa_mac_core
- @ingroup hostapi_src
- @author Bjorn Roche
- @brief AUHAL implementation of PortAudio
-*/
-
-#ifndef PA_MAC_CORE_INTERNAL_H__
-#define PA_MAC_CORE_INTERNAL_H__
-
-#include <AudioUnit/AudioUnit.h>
-#include <AudioToolbox/AudioToolbox.h>
-
-
-#include "portaudio.h"
-#include "pa_util.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_allocation.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "pa_ringbuffer.h"
-
-#include "pa_mac_core_blocking.h"
-
-/* function prototypes */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RING_BUFFER_ADVANCE_DENOMINATOR (4)
-
-PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-signed long GetStreamReadAvailable( PaStream* stream );
-signed long GetStreamWriteAvailable( PaStream* stream );
-/* PaMacAUHAL - host api datastructure specific to this implementation */
-typedef struct
-{
-    PaUtilHostApiRepresentation inheritedHostApiRep;
-    PaUtilStreamInterface callbackStreamInterface;
-    PaUtilStreamInterface blockingStreamInterface;
-
-    PaUtilAllocationGroup *allocations;
-
-    /* implementation specific data goes here */
-    long devCount;
-    AudioDeviceID *devIds; /*array of all audio devices*/
-    AudioDeviceID defaultIn;
-    AudioDeviceID defaultOut;
-}
-PaMacAUHAL;
-
-
-
-/* stream data structure specifically for this implementation */
-typedef struct PaMacCoreStream
-{
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-
-    /* implementation specific data goes here */
-    bool bufferProcessorIsInitialized;
-    AudioUnit inputUnit;
-    AudioUnit outputUnit;
-    AudioDeviceID inputDevice;
-    AudioDeviceID outputDevice;
-    size_t userInChan;
-    size_t userOutChan;
-    size_t inputFramesPerBuffer;
-    size_t outputFramesPerBuffer;
-    PaMacBlio blio;
-    /* We use this ring buffer when input and out devs are different. */
-    PaUtilRingBuffer inputRingBuffer;
-    /* We may need to do SR conversion on input. */
-    AudioConverterRef inputSRConverter;
-    /* We need to preallocate an inputBuffer for reading data. */
-    AudioBufferList inputAudioBufferList;
-    AudioTimeStamp startTime;
-    /* FIXME: instead of volatile, these should be properly memory barriered */
-    volatile PaStreamCallbackFlags xrunFlags;
-    volatile bool isTimeSet;
-    volatile enum {
-       STOPPED          = 0, /* playback is completely stopped,
-                                and the user has called StopStream(). */
-       CALLBACK_STOPPED = 1, /* callback has requested stop,
-                                but user has not yet called StopStream(). */
-       STOPPING         = 2, /* The stream is in the process of closing
-                                because the user has called StopStream.
-                                This state is just used internally;
-                                externally it is indistinguishable from
-                                ACTIVE.*/
-       ACTIVE           = 3  /* The stream is active and running. */
-    } state;
-    double sampleRate;
-    //these may be different from the stream sample rate due to SR conversion:
-    double outDeviceSampleRate;
-    double inDeviceSampleRate;
-}
-PaMacCoreStream;
-
-#endif /* PA_MAC_CORE_INTERNAL_H__ */
diff --git a/external/portaudio2007/pa_mac_core_utilities.c b/external/portaudio2007/pa_mac_core_utilities.c
deleted file mode 100644
index e96b78b..0000000
--- a/external/portaudio2007/pa_mac_core_utilities.c
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * Helper and utility functions for pa_mac_core.c (Apple AUHAL implementation)
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostapi_src
-*/
-
-#include "pa_mac_core_utilities.h"
-
-PaError PaMacCore_SetUnixError( int err, int line )
-{
-   PaError ret;
-   const char *errorText;
-
-   if( err == 0 )
-   {
-      return paNoError;
-   }
-
-   ret = paNoError;
-   errorText = strerror( err );
-
-   /** Map Unix error to PaError. Pretty much the only one that maps
-       is ENOMEM. */
-   if( err == ENOMEM )
-      ret = paInsufficientMemory;
-   else
-      ret = paInternalError;
-
-   DBUG(("%d on line %d: msg='%s'\n", err, line, errorText));
-   PaUtil_SetLastHostErrorInfo( paCoreAudio, err, errorText );
-
-   return ret;
-}
-
-/*
- * Translates MacOS generated errors into PaErrors
- */
-PaError PaMacCore_SetError(OSStatus error, int line, int isError)
-{
-    /*FIXME: still need to handle possible ComponentResult values.*/
-    /*       unfortunately, they don't seem to be documented anywhere.*/
-    PaError result;
-    const char *errorType; 
-    const char *errorText;
-    
-    switch (error) {
-    case kAudioHardwareNoError:
-        return paNoError;
-    case kAudioHardwareNotRunningError:
-        errorText = "Audio Hardware Not Running";
-        result = paInternalError; break;
-    case kAudioHardwareUnspecifiedError: 
-        errorText = "Unspecified Audio Hardware Error";
-        result = paInternalError; break;
-    case kAudioHardwareUnknownPropertyError:
-        errorText = "Audio Hardware: Unknown Property";
-        result = paInternalError; break;
-    case kAudioHardwareBadPropertySizeError:
-        errorText = "Audio Hardware: Bad Property Size";
-        result = paInternalError; break;
-    case kAudioHardwareIllegalOperationError: 
-        errorText = "Audio Hardware: Illegal Operation";
-        result = paInternalError; break;
-    case kAudioHardwareBadDeviceError:
-        errorText = "Audio Hardware: Bad Device";
-        result = paInvalidDevice; break;
-    case kAudioHardwareBadStreamError:
-        errorText = "Audio Hardware: BadStream";
-        result = paBadStreamPtr; break;
-    case kAudioHardwareUnsupportedOperationError:
-        errorText = "Audio Hardware: Unsupported Operation";
-        result = paInternalError; break;
-    case kAudioDeviceUnsupportedFormatError:
-        errorText = "Audio Device: Unsupported Format";
-        result = paSampleFormatNotSupported; break;
-    case kAudioDevicePermissionsError:
-        errorText = "Audio Device: Permissions Error";
-        result = paDeviceUnavailable; break;
-    /* Audio Unit Errors: http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudio/audio_units/chapter_5_section_3.html */
-    case kAudioUnitErr_InvalidProperty:
-        errorText = "Audio Unit: Invalid Property";
-        result = paInternalError; break;
-    case kAudioUnitErr_InvalidParameter:
-        errorText = "Audio Unit: Invalid Parameter";
-        result = paInternalError; break;
-    case kAudioUnitErr_NoConnection:
-        errorText = "Audio Unit: No Connection";
-        result = paInternalError; break;
-    case kAudioUnitErr_FailedInitialization:
-        errorText = "Audio Unit: Initialization Failed";
-        result = paInternalError; break;
-    case kAudioUnitErr_TooManyFramesToProcess:
-        errorText = "Audio Unit: Too Many Frames";
-        result = paInternalError; break;
-    case kAudioUnitErr_IllegalInstrument:
-        errorText = "Audio Unit: Illegal Instrument";
-        result = paInternalError; break;
-    case kAudioUnitErr_InstrumentTypeNotFound:
-        errorText = "Audio Unit: Instrument Type Not Found";
-        result = paInternalError; break;
-    case kAudioUnitErr_InvalidFile:
-        errorText = "Audio Unit: Invalid File";
-        result = paInternalError; break;
-    case kAudioUnitErr_UnknownFileType:
-        errorText = "Audio Unit: Unknown File Type";
-        result = paInternalError; break;
-    case kAudioUnitErr_FileNotSpecified:
-        errorText = "Audio Unit: File Not Specified";
-        result = paInternalError; break;
-    case kAudioUnitErr_FormatNotSupported:
-        errorText = "Audio Unit: Format Not Supported";
-        result = paInternalError; break;
-    case kAudioUnitErr_Uninitialized:
-        errorText = "Audio Unit: Unitialized";
-        result = paInternalError; break;
-    case kAudioUnitErr_InvalidScope:
-        errorText = "Audio Unit: Invalid Scope";
-        result = paInternalError; break;
-    case kAudioUnitErr_PropertyNotWritable:
-        errorText = "Audio Unit: PropertyNotWritable";
-        result = paInternalError; break;
-    case kAudioUnitErr_InvalidPropertyValue:
-        errorText = "Audio Unit: Invalid Property Value";
-        result = paInternalError; break;
-    case kAudioUnitErr_PropertyNotInUse:
-        errorText = "Audio Unit: Property Not In Use";
-        result = paInternalError; break;
-    case kAudioUnitErr_Initialized:
-        errorText = "Audio Unit: Initialized";
-        result = paInternalError; break;
-    case kAudioUnitErr_InvalidOfflineRender:
-        errorText = "Audio Unit: Invalid Offline Render";
-        result = paInternalError; break;
-    case kAudioUnitErr_Unauthorized:
-        errorText = "Audio Unit: Unauthorized";
-        result = paInternalError; break;
-    case kAudioUnitErr_CannotDoInCurrentContext:
-        errorText = "Audio Unit: cannot do in current context";
-        result = paInternalError; break;
-    default:
-        errorText = "Unknown Error";
-        result = paInternalError;
-    }
-
-    if (isError)
-        errorType = "Error";
-    else
-        errorType = "Warning";
-
-    char str[20];
-    // see if it appears to be a 4-char-code
-    *(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
-    if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4]))
-    {
-        str[0] = str[5] = '\'';
-        str[6] = '\0';
-    } else {
-        // no, format it as an integer
-        sprintf(str, "%d", (int)error);
-    }
-
-    DBUG(("%s on line %d: err='%s', msg=%s\n", errorType, line, str, errorText));
-
-    PaUtil_SetLastHostErrorInfo( paCoreAudio, error, errorText );
-
-    return result;
-}
-
-/*
- * This function computes an appropriate ring buffer size given
- * a requested latency (in seconds), sample rate and framesPerBuffer.
- *
- * The returned ringBufferSize is computed using the following
- * constraints:
- *   - it must be at least 4.
- *   - it must be at least 3x framesPerBuffer.
- *   - it must be at least 2x the suggestedLatency.
- *   - it must be a power of 2.
- * This function attempts to compute the minimum such size.
- *
- * FEEDBACK: too liberal/conservative/another way?
- */
-long computeRingBufferSize( const PaStreamParameters *inputParameters,
-                                   const PaStreamParameters *outputParameters,
-                                   long inputFramesPerBuffer,
-                                   long outputFramesPerBuffer,
-                                   double sampleRate )
-{
-   long ringSize;
-   int index;
-   int i;
-   double latencyTimesChannelCount ;
-   long framesPerBufferTimesChannelCount ;
-
-   VVDBUG(( "computeRingBufferSize()\n" ));
-
-   assert( inputParameters || outputParameters );
-
-   if( outputParameters && inputParameters )
-   {
-      latencyTimesChannelCount = MAX(
-           inputParameters->suggestedLatency * inputParameters->channelCount,
-           outputParameters->suggestedLatency * outputParameters->channelCount );
-      framesPerBufferTimesChannelCount = MAX(
-           inputFramesPerBuffer * inputParameters->channelCount,
-           outputFramesPerBuffer * outputParameters->channelCount );
-   } 
-   else if( outputParameters )
-   {
-      latencyTimesChannelCount
-                = outputParameters->suggestedLatency * outputParameters->channelCount;
-      framesPerBufferTimesChannelCount
-                = outputFramesPerBuffer * outputParameters->channelCount;
-   }
-   else /* we have inputParameters  */
-   {
-      latencyTimesChannelCount
-                = inputParameters->suggestedLatency * inputParameters->channelCount;
-      framesPerBufferTimesChannelCount
-                = inputFramesPerBuffer * inputParameters->channelCount;
-   }
-
-   ringSize = (long) ( latencyTimesChannelCount * sampleRate * 2 + .5);
-   VDBUG( ( "suggested latency * channelCount: %d\n", (int) (latencyTimesChannelCount*sampleRate) ) );
-   if( ringSize < framesPerBufferTimesChannelCount * 3 )
-      ringSize = framesPerBufferTimesChannelCount * 3 ;
-   VDBUG(("framesPerBuffer*channelCount:%d\n",(int)framesPerBufferTimesChannelCount));
-   VDBUG(("Ringbuffer size (1): %d\n", (int)ringSize ));
-
-   /* make sure it's at least 4 */
-   ringSize = MAX( ringSize, 4 );
-
-   /* round up to the next power of 2 */
-   index = -1;
-   for( i=0; i<sizeof(long)*8; ++i )
-      if( ringSize >> i & 0x01 )
-         index = i;
-   assert( index > 0 );
-   if( ringSize <= ( 0x01 << index ) )
-      ringSize = 0x01 << index ;
-   else
-      ringSize = 0x01 << ( index + 1 );
-
-   VDBUG(( "Final Ringbuffer size (2): %d\n", (int)ringSize ));
-   return ringSize;
-}
-
-
-/*
- * Durring testing of core audio, I found that serious crashes could occur
- * if properties such as sample rate were changed multiple times in rapid
- * succession. The function below has some fancy logic to make sure that changes
- * are acknowledged before another is requested. That seems to help a lot.
- */
-
-OSStatus propertyProc(
-    AudioDeviceID inDevice, 
-    UInt32 inChannel, 
-    Boolean isInput, 
-    AudioDevicePropertyID inPropertyID, 
-    void* inClientData )
-{
-   MutexAndBool *mab = (MutexAndBool *) inClientData;
-   mab->once = TRUE;
-   pthread_mutex_unlock( &(mab->mutex) );
-   return noErr;
-}
-
-/* sets the value of the given property and waits for the change to 
-   be acknowledged, and returns the final value, which is not guaranteed
-   by this function to be the same as the desired value. Obviously, this
-   function can only be used for data whose input and output are the
-   same size and format, and their size and format are known in advance.*/
-PaError AudioDeviceSetPropertyNowAndWaitForChange(
-    AudioDeviceID inDevice,
-    UInt32 inChannel, 
-    Boolean isInput, 
-    AudioDevicePropertyID inPropertyID,
-    UInt32 inPropertyDataSize, 
-    const void *inPropertyData,
-    void *outPropertyData )
-{
-   OSStatus macErr;
-   int unixErr;
-   MutexAndBool mab;
-   UInt32 outPropertyDataSize = inPropertyDataSize;
-
-   /* First, see if it already has that value. If so, return. */
-   macErr = AudioDeviceGetProperty( inDevice, inChannel,
-                                 isInput, inPropertyID, 
-                                 &outPropertyDataSize, outPropertyData );
-   if( macErr )
-      goto failMac2;
-   if( inPropertyDataSize!=outPropertyDataSize )
-      return paInternalError;
-   if( 0==memcmp( outPropertyData, inPropertyData, outPropertyDataSize ) )
-      return paNoError;
-
-   /* setup and lock mutex */
-   mab.once = FALSE;
-   unixErr = pthread_mutex_init( &mab.mutex, NULL );
-   if( unixErr )
-      goto failUnix2;
-   unixErr = pthread_mutex_lock( &mab.mutex );
-   if( unixErr )
-      goto failUnix;
-
-   /* add property listener */
-   macErr = AudioDeviceAddPropertyListener( inDevice, inChannel, isInput,
-                                   inPropertyID, propertyProc,
-                                   &mab ); 
-   if( macErr )
-      goto failMac;
-   /* set property */
-   macErr  = AudioDeviceSetProperty( inDevice, NULL, inChannel,
-                                 isInput, inPropertyID,
-                                 inPropertyDataSize, inPropertyData );
-   if( macErr ) {
-      /* we couldn't set the property, so we'll just unlock the mutex
-         and move on. */
-      pthread_mutex_unlock( &mab.mutex );
-   }
-
-   /* wait for property to change */                      
-   unixErr = pthread_mutex_lock( &mab.mutex );
-   if( unixErr )
-      goto failUnix;
-
-   /* now read the property back out */
-   macErr = AudioDeviceGetProperty( inDevice, inChannel,
-                                 isInput, inPropertyID, 
-                                 &outPropertyDataSize, outPropertyData );
-   if( macErr )
-      goto failMac;
-   /* cleanup */
-   AudioDeviceRemovePropertyListener( inDevice, inChannel, isInput,
-                                      inPropertyID, propertyProc );
-   unixErr = pthread_mutex_unlock( &mab.mutex );
-   if( unixErr )
-      goto failUnix2;
-   unixErr = pthread_mutex_destroy( &mab.mutex );
-   if( unixErr )
-      goto failUnix2;
-
-   return paNoError;
-
- failUnix:
-   pthread_mutex_destroy( &mab.mutex );
-   AudioDeviceRemovePropertyListener( inDevice, inChannel, isInput,
-                                      inPropertyID, propertyProc );
-
- failUnix2:
-   DBUG( ("Error #%d while setting a device property: %s\n", unixErr, strerror( unixErr ) ) );
-   return paUnanticipatedHostError;
-
- failMac:
-   pthread_mutex_destroy( &mab.mutex );
-   AudioDeviceRemovePropertyListener( inDevice, inChannel, isInput,
-                                      inPropertyID, propertyProc );
- failMac2:
-   return ERR( macErr );
-}
-
-/*
- * Sets the sample rate the HAL device.
- * if requireExact: set the sample rate or fail.
- *
- * otherwise      : set the exact sample rate.
- *             If that fails, check for available sample rates, and choose one
- *             higher than the requested rate. If there isn't a higher one,
- *             just use the highest available.
- */
-PaError setBestSampleRateForDevice( const AudioDeviceID device,
-                                    const bool isOutput,
-                                    const bool requireExact,
-                                    const Float64 desiredSrate )
-{
-   /*FIXME: changing the sample rate is disruptive to other programs using the
-            device, so it might be good to offer a custom flag to not change the
-            sample rate and just do conversion. (in my casual tests, there is
-            no disruption unless the sample rate really does need to change) */
-   const bool isInput = isOutput ? 0 : 1;
-   Float64 srate;
-   UInt32 propsize = sizeof( Float64 );
-   OSErr err;
-   AudioValueRange *ranges;
-   int i=0;
-   Float64 max  = -1; /*the maximum rate available*/
-   Float64 best = -1; /*the lowest sample rate still greater than desired rate*/
-   VDBUG(("Setting sample rate for device %ld to %g.\n",device,(float)desiredSrate));
-
-   /* -- try setting the sample rate -- */
-   err = AudioDeviceSetPropertyNowAndWaitForChange(
-                                 device, 0, isInput,
-                                 kAudioDevicePropertyNominalSampleRate,
-                                 propsize, &desiredSrate, &srate );
-   if( err )
-      return err;
-
-   /* -- if the rate agrees, and we got no errors, we are done -- */
-   if( !err && srate == desiredSrate )
-      return paNoError;
-   /* -- we've failed if the rates disagree and we are setting input -- */
-   if( requireExact )
-      return paInvalidSampleRate;
-
-   /* -- generate a list of available sample rates -- */
-   err = AudioDeviceGetPropertyInfo( device, 0, isInput,
-                                kAudioDevicePropertyAvailableNominalSampleRates,
-                                &propsize, NULL );
-   if( err )
-      return ERR( err );
-   ranges = (AudioValueRange *)calloc( 1, propsize );
-   if( !ranges )
-      return paInsufficientMemory;
-   err = AudioDeviceGetProperty( device, 0, isInput,
-                                kAudioDevicePropertyAvailableNominalSampleRates,
-                                &propsize, ranges );
-   if( err )
-   {
-      free( ranges );
-      return ERR( err );
-   }
-   VDBUG(("Requested sample rate of %g was not available.\n", (float)desiredSrate));
-   VDBUG(("%lu Available Sample Rates are:\n",propsize/sizeof(AudioValueRange)));
-#ifdef MAC_CORE_VERBOSE_DEBUG
-   for( i=0; i<propsize/sizeof(AudioValueRange); ++i )
-      VDBUG( ("\t%g-%g\n",
-              (float) ranges[i].mMinimum,
-              (float) ranges[i].mMaximum ) );
-#endif
-   VDBUG(("-----\n"));
-   
-   /* -- now pick the best available sample rate -- */
-   for( i=0; i<propsize/sizeof(AudioValueRange); ++i )
-   {
-      if( ranges[i].mMaximum > max ) max = ranges[i].mMaximum;
-      if( ranges[i].mMinimum > desiredSrate ) {
-         if( best < 0 )
-            best = ranges[i].mMinimum;
-         else if( ranges[i].mMinimum < best )
-            best = ranges[i].mMinimum;
-      }
-   }
-   if( best < 0 )
-      best = max;
-   VDBUG( ("Maximum Rate %g. best is %g.\n", max, best ) );
-   free( ranges );
-
-   /* -- set the sample rate -- */
-   propsize = sizeof( best );
-   err = AudioDeviceSetPropertyNowAndWaitForChange(
-                                 device, 0, isInput,
-                                 kAudioDevicePropertyNominalSampleRate,
-                                 propsize, &best, &srate );
-   if( err )
-      return err;
-
-   if( err )
-      return ERR( err );
-   /* -- if the set rate matches, we are done -- */
-   if( srate == best )
-      return paNoError;
-
-   /* -- otherwise, something wierd happened: we didn't set the rate, and we got no errors. Just bail. */
-   return paInternalError;
-}
-
-
-/*
-   Attempts to set the requestedFramesPerBuffer. If it can't set the exact
-   value, it settles for something smaller if available. If nothing smaller
-   is available, it uses the smallest available size.
-   actualFramesPerBuffer will be set to the actual value on successful return.
-   OK to pass NULL to actualFramesPerBuffer.
-   The logic is very simmilar too setBestSampleRate only failure here is
-   not usually catastrophic.
-*/
-PaError setBestFramesPerBuffer( const AudioDeviceID device,
-                                const bool isOutput,
-                                UInt32 requestedFramesPerBuffer, 
-                                UInt32 *actualFramesPerBuffer )
-{
-   UInt32 afpb;
-   const bool isInput = !isOutput;
-   UInt32 propsize = sizeof(UInt32);
-   OSErr err;
-   Float64 min  = -1; /*the min blocksize*/
-   Float64 best = -1; /*the best blocksize*/
-   int i=0;
-   AudioValueRange *ranges;
-
-   if( actualFramesPerBuffer == NULL )
-      actualFramesPerBuffer = &afpb;
-
-
-   /* -- try and set exact FPB -- */
-   err = AudioDeviceSetProperty( device, NULL, 0, isInput,
-                                 kAudioDevicePropertyBufferFrameSize,
-                                 propsize, &requestedFramesPerBuffer);
-   err = AudioDeviceGetProperty( device, 0, isInput,
-                           kAudioDevicePropertyBufferFrameSize,
-                           &propsize, actualFramesPerBuffer);
-   if( err )
-      return ERR( err );
-   if( *actualFramesPerBuffer == requestedFramesPerBuffer )
-      return paNoError; /* we are done */
-
-   /* -- fetch available block sizes -- */
-   err = AudioDeviceGetPropertyInfo( device, 0, isInput,
-                           kAudioDevicePropertyBufferSizeRange,
-                           &propsize, NULL );
-   if( err )
-      return ERR( err );
-   ranges = (AudioValueRange *)calloc( 1, propsize );
-   if( !ranges )
-      return paInsufficientMemory;
-   err = AudioDeviceGetProperty( device, 0, isInput,
-                                kAudioDevicePropertyBufferSizeRange,
-                                &propsize, ranges );
-   if( err )
-   {
-      free( ranges );
-      return ERR( err );
-   }
-   VDBUG(("Requested block size of %lu was not available.\n",
-          requestedFramesPerBuffer ));
-   VDBUG(("%lu Available block sizes are:\n",propsize/sizeof(AudioValueRange)));
-#ifdef MAC_CORE_VERBOSE_DEBUG
-   for( i=0; i<propsize/sizeof(AudioValueRange); ++i )
-      VDBUG( ("\t%g-%g\n",
-              (float) ranges[i].mMinimum,
-              (float) ranges[i].mMaximum ) );
-#endif
-   VDBUG(("-----\n"));
-   
-   /* --- now pick the best available framesPerBuffer -- */
-   for( i=0; i<propsize/sizeof(AudioValueRange); ++i )
-   {
-      if( min == -1 || ranges[i].mMinimum < min ) min = ranges[i].mMinimum;
-      if( ranges[i].mMaximum < requestedFramesPerBuffer ) {
-         if( best < 0 )
-            best = ranges[i].mMaximum;
-         else if( ranges[i].mMaximum > best )
-            best = ranges[i].mMaximum;
-      }
-   }
-   if( best == -1 )
-      best = min;
-   VDBUG( ("Minimum FPB  %g. best is %g.\n", min, best ) );
-   free( ranges );
-
-   /* --- set the buffer size (ignore errors) -- */
-   requestedFramesPerBuffer = (UInt32) best ;
-   propsize = sizeof( UInt32 );
-   err = AudioDeviceSetProperty( device, NULL, 0, isInput,
-                                 kAudioDevicePropertyBufferSize,
-                                 propsize, &requestedFramesPerBuffer );
-   /* --- read the property to check that it was set -- */
-   err = AudioDeviceGetProperty( device, 0, isInput,
-                                 kAudioDevicePropertyBufferSize,
-                                 &propsize, actualFramesPerBuffer );
-
-   if( err )
-      return ERR( err );
-
-   return paNoError;
-}
diff --git a/external/portaudio2007/pa_mac_core_utilities.h b/external/portaudio2007/pa_mac_core_utilities.h
deleted file mode 100644
index 0b72b26..0000000
--- a/external/portaudio2007/pa_mac_core_utilities.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Helper and utility functions for pa_mac_core.c (Apple AUHAL implementation)
- *
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Written by Bjorn Roche of XO Audio LLC, from PA skeleton code.
- * Portions copied from code by Dominic Mazzoni (who wrote a HAL implementation)
- *
- * Dominic's code was based on code by Phil Burk, Darren Gibbs,
- * Gord Peters, Stephane Letz, and Greg Pfiel.
- *
- * The following people also deserve acknowledgements:
- *
- * Olivier Tristan for feedback and testing
- * Glenn Zelniker and Z-Systems engineering for sponsoring the Blocking I/O
- * interface.
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostapi_src
-*/
-
-#ifndef PA_MAC_CORE_UTILITIES_H__
-#define PA_MAC_CORE_UTILITIES_H__
-
-#include <pthread.h>
-#include "portaudio.h"
-#include "pa_util.h"
-#include <AudioUnit/AudioUnit.h>
-#include <AudioToolbox/AudioToolbox.h>
-
-#ifndef MIN
-#define MIN(a, b)  (((a)<(b))?(a):(b))
-#endif
-
-#ifndef MAX
-#define MAX(a, b)  (((a)<(b))?(b):(a))
-#endif
-
-#define ERR(mac_error) PaMacCore_SetError(mac_error, __LINE__, 1 ) 
-#define WARNING(mac_error) PaMacCore_SetError(mac_error, __LINE__, 0 )
-
-
-/* Help keep track of AUHAL element numbers */
-#define INPUT_ELEMENT  (1)
-#define OUTPUT_ELEMENT (0)
-
-/* Normal level of debugging: fine for most apps that don't mind the occational warning being printf'ed */
-/*
- */
-#define MAC_CORE_DEBUG
-#ifdef MAC_CORE_DEBUG
-# define DBUG(MSG) do { printf("||PaMacCore (AUHAL)|| "); printf MSG ; fflush(stdout); } while(0)
-#else
-# define DBUG(MSG)
-#endif
-
-/* Verbose Debugging: useful for developement */
-/*
-#define MAC_CORE_VERBOSE_DEBUG
-*/
-#ifdef MAC_CORE_VERBOSE_DEBUG
-# define VDBUG(MSG) do { printf("||PaMacCore (v )|| "); printf MSG ; fflush(stdout); } while(0)
-#else
-# define VDBUG(MSG)
-#endif
-
-/* Very Verbose Debugging: Traces every call. */
-/*
-#define MAC_CORE_VERY_VERBOSE_DEBUG
- */
-#ifdef MAC_CORE_VERY_VERBOSE_DEBUG
-# define VVDBUG(MSG) do { printf("||PaMacCore (vv)|| "); printf MSG ; fflush(stdout); } while(0)
-#else
-# define VVDBUG(MSG)
-#endif
-
-
-
-
-
-#define UNIX_ERR(err) PaMacCore_SetUnixError( err, __LINE__ )
-
-PaError PaMacCore_SetUnixError( int err, int line );
-
-/*
- * Translates MacOS generated errors into PaErrors
- */
-PaError PaMacCore_SetError(OSStatus error, int line, int isError);
-
-/*
- * This function computes an appropriate ring buffer size given
- * a requested latency (in seconds), sample rate and framesPerBuffer.
- *
- * The returned ringBufferSize is computed using the following
- * constraints:
- *   - it must be at least 4.
- *   - it must be at least 3x framesPerBuffer.
- *   - it must be at least 2x the suggestedLatency.
- *   - it must be a power of 2.
- * This function attempts to compute the minimum such size.
- *
- */
-long computeRingBufferSize( const PaStreamParameters *inputParameters,
-                                   const PaStreamParameters *outputParameters,
-                                   long inputFramesPerBuffer,
-                                   long outputFramesPerBuffer,
-                                   double sampleRate );
-
-/*
- * Durring testing of core audio, I found that serious crashes could occur
- * if properties such as sample rate were changed multiple times in rapid
- * succession. The function below has some fancy logic to make sure that changes
- * are acknowledged before another is requested. That seems to help a lot.
- */
-
-typedef struct {
-   bool once; /* I didn't end up using this. bdr */
-   pthread_mutex_t mutex;
-} MutexAndBool ;
-
-OSStatus propertyProc(
-    AudioDeviceID inDevice, 
-    UInt32 inChannel, 
-    Boolean isInput, 
-    AudioDevicePropertyID inPropertyID, 
-    void* inClientData );
-
-/* sets the value of the given property and waits for the change to 
-   be acknowledged, and returns the final value, which is not guaranteed
-   by this function to be the same as the desired value. Obviously, this
-   function can only be used for data whose input and output are the
-   same size and format, and their size and format are known in advance.*/
-PaError AudioDeviceSetPropertyNowAndWaitForChange(
-    AudioDeviceID inDevice,
-    UInt32 inChannel, 
-    Boolean isInput, 
-    AudioDevicePropertyID inPropertyID,
-    UInt32 inPropertyDataSize, 
-    const void *inPropertyData,
-    void *outPropertyData );
-
-/*
- * Sets the sample rate the HAL device.
- * if requireExact: set the sample rate or fail.
- *
- * otherwise      : set the exact sample rate.
- *             If that fails, check for available sample rates, and choose one
- *             higher than the requested rate. If there isn't a higher one,
- *             just use the highest available.
- */
-PaError setBestSampleRateForDevice( const AudioDeviceID device,
-                                    const bool isOutput,
-                                    const bool requireExact,
-                                    const Float64 desiredSrate );
-/*
-   Attempts to set the requestedFramesPerBuffer. If it can't set the exact
-   value, it settles for something smaller if available. If nothing smaller
-   is available, it uses the smallest available size.
-   actualFramesPerBuffer will be set to the actual value on successful return.
-   OK to pass NULL to actualFramesPerBuffer.
-   The logic is very simmilar too setBestSampleRate only failure here is
-   not usually catastrophic.
-*/
-PaError setBestFramesPerBuffer( const AudioDeviceID device,
-                                const bool isOutput,
-                                UInt32 requestedFramesPerBuffer, 
-                                UInt32 *actualFramesPerBuffer );
-#endif /* PA_MAC_CORE_UTILITIES_H__*/
diff --git a/external/portaudio2007/pa_mac_hostapis.c b/external/portaudio2007/pa_mac_hostapis.c
deleted file mode 100644
index 23e231b..0000000
--- a/external/portaudio2007/pa_mac_hostapis.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * $Id: pa_mac_hostapis.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library Macintosh initialization table
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup macosx_src
-Mac OS host API initialization function table.
-*/
-
-
-#include "pa_hostapi.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-    
-    PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-    PaError PaMacCore_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-    PaError PaMacSm_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-    PaError PaJack_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-    PaError PaMacAsio_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-    
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-PaUtilHostApiInitializer *paHostApiInitializers[] =
-{
-    PaMacCore_Initialize,
-    
-    0   /* NULL terminated array */
-};
-
-
-int paDefaultHostApiIndex = 0;
diff --git a/external/portaudio2007/pa_mac_util.c b/external/portaudio2007/pa_mac_util.c
deleted file mode 100644
index 4542323..0000000
--- a/external/portaudio2007/pa_mac_util.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * $Id: pa_unix_util.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * UNIX platform-specific support functions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup unix_src
-*/
- 
-#include <pthread.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/time.h>
-#include <assert.h>
-#include <string.h> /* For memset */
-#include <math.h>
-#include <errno.h>
-
-#include "pa_util.h"
-//#include "pa_mac_util.h"
-
-/*
-   Track memory allocations to avoid leaks.
- */
-
-#if PA_TRACK_MEMORY
-static int numAllocations_ = 0;
-#endif
-
-
-void *PaUtil_AllocateMemory( long size )
-{
-    void *result = malloc( size );
-
-#if PA_TRACK_MEMORY
-    if( result != NULL ) numAllocations_ += 1;
-#endif
-    return result;
-}
-
-
-void PaUtil_FreeMemory( void *block )
-{
-    if( block != NULL )
-    {
-        free( block );
-#if PA_TRACK_MEMORY
-        numAllocations_ -= 1;
-#endif
-
-    }
-}
-
-
-int PaUtil_CountCurrentlyAllocatedBlocks( void )
-{
-#if PA_TRACK_MEMORY
-    return numAllocations_;
-#else
-    return 0;
-#endif
-}
-
-
-void Pa_Sleep( long msec )
-{
-#ifdef HAVE_NANOSLEEP
-    struct timespec req = {0}, rem = {0};
-    PaTime time = msec / 1.e3;
-    req.tv_sec = (time_t)time;
-    assert(time - req.tv_sec < 1.0);
-    req.tv_nsec = (long)((time - req.tv_sec) * 1.e9);
-    nanosleep(&req, &rem);
-    /* XXX: Try sleeping the remaining time (contained in rem) if interrupted by a signal? */
-#else
-    while( msec > 999 )     /* For OpenBSD and IRIX, argument */
-        {                   /* to usleep must be < 1000000.   */
-        usleep( 999000 );
-        msec -= 999;
-        }
-    usleep( msec * 1000 );
-#endif
-}
-
-/*            *** NOT USED YET: ***
-static int usePerformanceCounter_;
-static double microsecondsPerTick_;
-*/
-
-void PaUtil_InitializeClock( void )
-{
-    /* TODO */
-}
-
-
-PaTime PaUtil_GetTime( void )
-{
-#ifdef HAVE_CLOCK_GETTIME
-    struct timespec tp;
-    clock_gettime(CLOCK_REALTIME, &tp);
-    return (PaTime)(tp.tv_sec + tp.tv_nsec / 1.e9);
-#else
-    struct timeval tv;
-    gettimeofday( &tv, NULL );
-    return (PaTime) tv.tv_usec / 1000000. + tv.tv_sec;
-#endif
-}
diff --git a/external/portaudio2007/pa_mac_util.h b/external/portaudio2007/pa_mac_util.h
deleted file mode 100644
index cd78a9d..0000000
--- a/external/portaudio2007/pa_mac_util.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * $Id: pa_unix_util.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * UNIX platform-specific support functions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup unix_src
-*/
-
-#ifndef PA_UNIX_UTIL_H
-#define PA_UNIX_UTIL_H
-
-#include "pa_cpuload.h"
-#include <assert.h>
-#include <pthread.h>
-#include <signal.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#define PA_MIN(x,y) ( (x) < (y) ? (x) : (y) )
-#define PA_MAX(x,y) ( (x) > (y) ? (x) : (y) )
-
-/* Utilize GCC branch prediction for error tests */
-#if defined __GNUC__ && __GNUC__ >= 3
-#define UNLIKELY(expr) __builtin_expect( (expr), 0 )
-#else
-#define UNLIKELY(expr) (expr)
-#endif
-
-#define STRINGIZE_HELPER(expr) #expr
-#define STRINGIZE(expr) STRINGIZE_HELPER(expr)
-
-#define PA_UNLESS(expr, code) \
-    do { \
-        if( UNLIKELY( (expr) == 0 ) ) \
-        { \
-            PaUtil_DebugPrint(( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" )); \
-            result = (code); \
-            goto error; \
-        } \
-    } while (0);
-
-static PaError paUtilErr_;          /* Used with PA_ENSURE */
-
-/* Check PaError */
-#define PA_ENSURE(expr) \
-    do { \
-        if( UNLIKELY( (paUtilErr_ = (expr)) < paNoError ) ) \
-        { \
-            PaUtil_DebugPrint(( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" )); \
-            result = paUtilErr_; \
-            goto error; \
-        } \
-    } while (0);
-
-#define PA_ASSERT_CALL(expr, success) \
-    paUtilErr_ = (expr); \
-    assert( success == paUtilErr_ );
-
-#define PA_ENSURE_SYSTEM(expr, success) \
-    do { \
-        if( UNLIKELY( (paUtilErr_ = (expr)) != success ) ) \
-        { \
-            /* PaUtil_SetLastHostErrorInfo should only be used in the main thread */ \
-            if( pthread_equal(pthread_self(), paUnixMainThread) ) \
-            { \
-                PaUtil_SetLastHostErrorInfo( paALSA, paUtilErr_, strerror( paUtilErr_ ) ); \
-            } \
-            PaUtil_DebugPrint( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" ); \
-            result = paUnanticipatedHostError; \
-            goto error; \
-        } \
-    } while( 0 );
-
-typedef struct {
-    pthread_t callbackThread;
-} PaUtilThreading;
-
-PaError PaUtil_InitializeThreading( PaUtilThreading *threading );
-void PaUtil_TerminateThreading( PaUtilThreading *threading );
-PaError PaUtil_StartThreading( PaUtilThreading *threading, void *(*threadRoutine)(void *), void *data );
-PaError PaUtil_CancelThreading( PaUtilThreading *threading, int wait, PaError *exitResult );
-
-/* State accessed by utility functions */
-
-/*
-void PaUnix_SetRealtimeScheduling( int rt );
-
-void PaUtil_InitializeThreading( PaUtilThreading *th, PaUtilCpuLoadMeasurer *clm );
-
-PaError PaUtil_CreateCallbackThread( PaUtilThreading *th, void *(*CallbackThreadFunc)( void * ), PaStream *s );
-
-PaError PaUtil_KillCallbackThread( PaUtilThreading *th, PaError *exitResult );
-
-void PaUtil_CallbackUpdate( PaUtilThreading *th );
-*/
-
-extern pthread_t paUnixMainThread;
-
-typedef struct
-{
-    pthread_mutex_t mtx;
-} PaUnixMutex;
-
-PaError PaUnixMutex_Initialize( PaUnixMutex* self );
-PaError PaUnixMutex_Terminate( PaUnixMutex* self );
-PaError PaUnixMutex_Lock( PaUnixMutex* self );
-PaError PaUnixMutex_Unlock( PaUnixMutex* self );
-
-typedef struct
-{
-    pthread_t thread;
-    int parentWaiting;
-    int stopRequested;
-    int locked;
-    PaUnixMutex mtx;
-    pthread_cond_t cond;
-    volatile sig_atomic_t stopRequest;
-} PaUnixThread;
-
-/** Initialize global threading state.
- */
-PaError PaUnixThreading_Initialize();
-
-/** Perish, passing on eventual error code.
- *
- * A thin wrapper around pthread_exit, will automatically pass on any error code to the joining thread.
- * If the result indicates an error, i.e. it is not equal to paNoError, this function will automatically
- * allocate a pointer so the error is passed on with pthread_exit. If the result indicates that all is
- * well however, only a NULL pointer will be handed to pthread_exit. Thus, the joining thread should
- * check whether a non-NULL result pointer is obtained from pthread_join and make sure to free it.
- * @param result: The error code to pass on to the joining thread.
- */
-#define PaUnixThreading_EXIT(result) \
-    do { \
-        PaError* pres = NULL; \
-        if( paNoError != (result) ) \
-        { \
-            pres = malloc( sizeof (PaError) ); \
-            *pres = (result); \
-        } \
-        pthread_exit( pres ); \
-    } while (0);
-
-/** Spawn a thread.
- *
- * Intended for spawning the callback thread from the main thread. This function can even block (for a certain
- * time or indefinitely) untill notified by the callback thread (using PaUnixThread_NotifyParent), which can be
- * useful in order to make sure that callback has commenced before returning from Pa_StartStream.
- * @param threadFunc: The function to be executed in the child thread.
- * @param waitForChild: If not 0, wait for child thread to call PaUnixThread_NotifyParent. Less than 0 means
- * wait for ever, greater than 0 wait for the specified time.
- * @return: If timed out waiting on child, paTimedOut.
- */
-PaError PaUnixThread_New( PaUnixThread* self, void* (*threadFunc)( void* ), void* threadArg, PaTime waitForChild );
-
-/** Terminate thread.
- *
- * @param wait: If true, request that background thread stop and wait untill it does, else cancel it.
- * @param exitResult: If non-null this will upon return contain the exit status of the thread.
- */
-PaError PaUnixThread_Terminate( PaUnixThread* self, int wait, PaError* exitResult );
-
-/** Prepare to notify waiting parent thread.
- *
- * An internal lock must be held before the parent is notified in PaUnixThread_NotifyParent, call this to
- * acquire it beforehand.
- * @return: If parent is not waiting, paInternalError.
- */
-PaError PaUnixThread_PrepareNotify( PaUnixThread* self );
-
-/** Notify waiting parent thread.
- *
- * @return: If parent timed out waiting, paTimedOut. If parent was never waiting, paInternalError.
- */
-PaError PaUnixThread_NotifyParent( PaUnixThread* self );
-
-/** Has the parent thread requested this thread to stop?
- */
-int PaUnixThread_StopRequested( PaUnixThread* self );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif
diff --git a/external/portaudio2007/pa_process.c b/external/portaudio2007/pa_process.c
deleted file mode 100644
index 59bf434..0000000
--- a/external/portaudio2007/pa_process.c
+++ /dev/null
@@ -1,1772 +0,0 @@
-/*
- * $Id: pa_process.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * streamCallback <-> host buffer processing adapter
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Buffer Processor implementation.
-    
- The code in this file is not optimised yet - although it's not clear that
- it needs to be. there may appear to be redundancies
- that could be factored into common functions, but the redundanceis are left
- intentionally as each appearance may have different optimisation possibilities.
-
- The optimisations which are planned involve only converting data in-place
- where possible, rather than copying to the temp buffer(s).
-
- Note that in the extreme case of being able to convert in-place, and there
- being no conversion necessary there should be some code which short-circuits
- the operation.
-
-    @todo Consider cache tilings for intereave<->deinterleave.
-
-    @todo implement timeInfo->currentTime int PaUtil_BeginBufferProcessing()
-
-    @todo specify and implement some kind of logical policy for handling the
-        underflow and overflow stream flags when the underflow/overflow overlaps
-        multiple user buffers/callbacks.
-
-	@todo provide support for priming the buffers with data from the callback.
-        The client interface is now implemented through PaUtil_SetNoInput()
-        which sets bp->hostInputChannels[0][0].data to zero. However this is
-        currently only implemented in NonAdaptingProcess(). It shouldn't be
-        needed for AdaptingInputOnlyProcess() (no priming should ever be
-        requested for AdaptingInputOnlyProcess()).
-        Not sure if additional work should be required to make it work with
-        AdaptingOutputOnlyProcess, but it definitely is required for
-        AdaptingProcess.
-
-    @todo implement PaUtil_SetNoOutput for AdaptingProcess
-
-    @todo don't allocate temp buffers for blocking streams unless they are
-        needed. At the moment they are needed, but perhaps for host APIs
-        where the implementation passes a buffer to the host they could be
-        used.
-*/
-
-
-#include <assert.h>
-#include <string.h> /* memset() */
-
-#include "pa_process.h"
-#include "pa_util.h"
-
-
-#define PA_FRAMES_PER_TEMP_BUFFER_WHEN_HOST_BUFFER_SIZE_IS_UNKNOWN_    1024
-
-#define PA_MIN_( a, b ) ( ((a)<(b)) ? (a) : (b) )
-
-
-/* greatest common divisor - PGCD in French */
-static unsigned long GCD( unsigned long a, unsigned long b )
-{
-    return (b==0) ? a : GCD( b, a%b);
-}
-
-/* least common multiple - PPCM in French */
-static unsigned long LCM( unsigned long a, unsigned long b )
-{
-    return (a*b) / GCD(a,b);
-}
-
-#define PA_MAX_( a, b ) (((a) > (b)) ? (a) : (b))
-
-static unsigned long CalculateFrameShift( unsigned long M, unsigned long N )
-{
-    unsigned long result = 0;
-    unsigned long i;
-    unsigned long lcm;
-
-    assert( M > 0 );
-    assert( N > 0 );
-
-    lcm = LCM( M, N );
-    for( i = M; i < lcm; i += M )
-        result = PA_MAX_( result, i % N );
-
-    return result;
-}
-
-
-PaError PaUtil_InitializeBufferProcessor( PaUtilBufferProcessor* bp,
-        int inputChannelCount, PaSampleFormat userInputSampleFormat,
-        PaSampleFormat hostInputSampleFormat,
-        int outputChannelCount, PaSampleFormat userOutputSampleFormat,
-        PaSampleFormat hostOutputSampleFormat,
-        double sampleRate,
-        PaStreamFlags streamFlags,
-        unsigned long framesPerUserBuffer,
-        unsigned long framesPerHostBuffer,
-        PaUtilHostBufferSizeMode hostBufferSizeMode,
-        PaStreamCallback *streamCallback, void *userData )
-{
-    PaError result = paNoError;
-    PaError bytesPerSample;
-    unsigned long tempInputBufferSize, tempOutputBufferSize;
-
-    if( streamFlags & paNeverDropInput )
-    {
-        /* paNeverDropInput is only valid for full-duplex callback streams, with an unspecified number of frames per buffer. */
-        if( !streamCallback || !(inputChannelCount > 0 && outputChannelCount > 0) ||
-                framesPerUserBuffer != paFramesPerBufferUnspecified )
-            return paInvalidFlag;
-    }
-
-    /* initialize buffer ptrs to zero so they can be freed if necessary in error */
-    bp->tempInputBuffer = 0;
-    bp->tempInputBufferPtrs = 0;
-    bp->tempOutputBuffer = 0;
-    bp->tempOutputBufferPtrs = 0;
-
-    bp->framesPerUserBuffer = framesPerUserBuffer;
-    bp->framesPerHostBuffer = framesPerHostBuffer;
-
-    bp->inputChannelCount = inputChannelCount;
-    bp->outputChannelCount = outputChannelCount;
-
-    bp->hostBufferSizeMode = hostBufferSizeMode;
-
-    bp->hostInputChannels[0] = bp->hostInputChannels[1] = 0;
-    bp->hostOutputChannels[0] = bp->hostOutputChannels[1] = 0;
-
-    if( framesPerUserBuffer == 0 ) /* streamCallback will accept any buffer size */
-    {
-        bp->useNonAdaptingProcess = 1;
-        bp->initialFramesInTempInputBuffer = 0;
-        bp->initialFramesInTempOutputBuffer = 0;
-
-        if( hostBufferSizeMode == paUtilFixedHostBufferSize
-                || hostBufferSizeMode == paUtilBoundedHostBufferSize )
-        {
-            bp->framesPerTempBuffer = framesPerHostBuffer;
-        }
-        else /* unknown host buffer size */
-        {
-             bp->framesPerTempBuffer = PA_FRAMES_PER_TEMP_BUFFER_WHEN_HOST_BUFFER_SIZE_IS_UNKNOWN_;
-        }
-    }
-    else
-    {
-        bp->framesPerTempBuffer = framesPerUserBuffer;
-
-        if( hostBufferSizeMode == paUtilFixedHostBufferSize
-                && framesPerHostBuffer % framesPerUserBuffer == 0 )
-        {
-            bp->useNonAdaptingProcess = 1;
-            bp->initialFramesInTempInputBuffer = 0;
-            bp->initialFramesInTempOutputBuffer = 0;
-        }
-        else
-        {
-            bp->useNonAdaptingProcess = 0;
-
-            if( inputChannelCount > 0 && outputChannelCount > 0 )
-            {
-                /* full duplex */
-                if( hostBufferSizeMode == paUtilFixedHostBufferSize )
-                {
-                    unsigned long frameShift =
-                        CalculateFrameShift( framesPerHostBuffer, framesPerUserBuffer );
-
-                    if( framesPerUserBuffer > framesPerHostBuffer )
-                    {
-                        bp->initialFramesInTempInputBuffer = frameShift;
-                        bp->initialFramesInTempOutputBuffer = 0;
-                    }
-                    else
-                    {
-                        bp->initialFramesInTempInputBuffer = 0;
-                        bp->initialFramesInTempOutputBuffer = frameShift;
-                    }
-                }
-                else /* variable host buffer size, add framesPerUserBuffer latency */
-                {
-                    bp->initialFramesInTempInputBuffer = 0;
-                    bp->initialFramesInTempOutputBuffer = framesPerUserBuffer;
-                }
-            }
-            else
-            {
-                /* half duplex */
-                bp->initialFramesInTempInputBuffer = 0;
-                bp->initialFramesInTempOutputBuffer = 0;
-            }
-        }
-    }
-
-
-    bp->framesInTempInputBuffer = bp->initialFramesInTempInputBuffer;
-    bp->framesInTempOutputBuffer = bp->initialFramesInTempOutputBuffer;
-
-    
-    if( inputChannelCount > 0 )
-    {
-        bytesPerSample = Pa_GetSampleSize( hostInputSampleFormat );
-        if( bytesPerSample > 0 )
-        {
-            bp->bytesPerHostInputSample = bytesPerSample;
-        }
-        else
-        {
-            result = bytesPerSample;
-            goto error;
-        }
-
-        bytesPerSample = Pa_GetSampleSize( userInputSampleFormat );
-        if( bytesPerSample > 0 )
-        {
-            bp->bytesPerUserInputSample = bytesPerSample;
-        }
-        else
-        {
-            result = bytesPerSample;
-            goto error;
-        }
-
-        bp->inputConverter =
-            PaUtil_SelectConverter( hostInputSampleFormat, userInputSampleFormat, streamFlags );
-
-        bp->inputZeroer = PaUtil_SelectZeroer( hostInputSampleFormat );
-            
-        bp->userInputIsInterleaved = (userInputSampleFormat & paNonInterleaved)?0:1;
-
-
-        tempInputBufferSize =
-            bp->framesPerTempBuffer * bp->bytesPerUserInputSample * inputChannelCount;
-         
-        bp->tempInputBuffer = PaUtil_AllocateMemory( tempInputBufferSize );
-        if( bp->tempInputBuffer == 0 )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-        
-        if( bp->framesInTempInputBuffer > 0 )
-            memset( bp->tempInputBuffer, 0, tempInputBufferSize );
-
-        if( userInputSampleFormat & paNonInterleaved )
-        {
-            bp->tempInputBufferPtrs =
-                (void **)PaUtil_AllocateMemory( sizeof(void*)*inputChannelCount );
-            if( bp->tempInputBufferPtrs == 0 )
-            {
-                result = paInsufficientMemory;
-                goto error;
-            }
-        }
-
-        bp->hostInputChannels[0] = (PaUtilChannelDescriptor*)
-                PaUtil_AllocateMemory( sizeof(PaUtilChannelDescriptor) * inputChannelCount * 2);
-        if( bp->hostInputChannels[0] == 0 )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        bp->hostInputChannels[1] = &bp->hostInputChannels[0][inputChannelCount];
-    }
-
-    if( outputChannelCount > 0 )
-    {
-        bytesPerSample = Pa_GetSampleSize( hostOutputSampleFormat );
-        if( bytesPerSample > 0 )
-        {
-            bp->bytesPerHostOutputSample = bytesPerSample;
-        }
-        else
-        {
-            result = bytesPerSample;
-            goto error;
-        }
-
-        bytesPerSample = Pa_GetSampleSize( userOutputSampleFormat );
-        if( bytesPerSample > 0 )
-        {
-            bp->bytesPerUserOutputSample = bytesPerSample;
-        }
-        else
-        {
-            result = bytesPerSample;
-            goto error;
-        }
-
-        bp->outputConverter =
-            PaUtil_SelectConverter( userOutputSampleFormat, hostOutputSampleFormat, streamFlags );
-
-        bp->outputZeroer = PaUtil_SelectZeroer( hostOutputSampleFormat );
-
-        bp->userOutputIsInterleaved = (userOutputSampleFormat & paNonInterleaved)?0:1;
-
-        tempOutputBufferSize =
-                bp->framesPerTempBuffer * bp->bytesPerUserOutputSample * outputChannelCount;
-
-        bp->tempOutputBuffer = PaUtil_AllocateMemory( tempOutputBufferSize );
-        if( bp->tempOutputBuffer == 0 )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        if( bp->framesInTempOutputBuffer > 0 )
-            memset( bp->tempOutputBuffer, 0, tempOutputBufferSize );
-        
-        if( userOutputSampleFormat & paNonInterleaved )
-        {
-            bp->tempOutputBufferPtrs =
-                (void **)PaUtil_AllocateMemory( sizeof(void*)*outputChannelCount );
-            if( bp->tempOutputBufferPtrs == 0 )
-            {
-                result = paInsufficientMemory;
-                goto error;
-            }
-        }
-
-        bp->hostOutputChannels[0] = (PaUtilChannelDescriptor*)
-                PaUtil_AllocateMemory( sizeof(PaUtilChannelDescriptor)*outputChannelCount * 2 );
-        if( bp->hostOutputChannels[0] == 0 )
-        {                                                                     
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        bp->hostOutputChannels[1] = &bp->hostOutputChannels[0][outputChannelCount];
-    }
-
-    PaUtil_InitializeTriangularDitherState( &bp->ditherGenerator );
-
-    bp->samplePeriod = 1. / sampleRate;
-
-    bp->streamCallback = streamCallback;
-    bp->userData = userData;
-
-    return result;
-
-error:
-    if( bp->tempInputBuffer )
-        PaUtil_FreeMemory( bp->tempInputBuffer );
-
-    if( bp->tempInputBufferPtrs )
-        PaUtil_FreeMemory( bp->tempInputBufferPtrs );
-
-    if( bp->hostInputChannels[0] )
-        PaUtil_FreeMemory( bp->hostInputChannels[0] );
-
-    if( bp->tempOutputBuffer )
-        PaUtil_FreeMemory( bp->tempOutputBuffer );
-
-    if( bp->tempOutputBufferPtrs )
-        PaUtil_FreeMemory( bp->tempOutputBufferPtrs );
-
-    if( bp->hostOutputChannels[0] )
-        PaUtil_FreeMemory( bp->hostOutputChannels[0] );
-
-    return result;
-}
-
-
-void PaUtil_TerminateBufferProcessor( PaUtilBufferProcessor* bp )
-{
-    if( bp->tempInputBuffer )
-        PaUtil_FreeMemory( bp->tempInputBuffer );
-
-    if( bp->tempInputBufferPtrs )
-        PaUtil_FreeMemory( bp->tempInputBufferPtrs );
-
-    if( bp->hostInputChannels[0] )
-        PaUtil_FreeMemory( bp->hostInputChannels[0] );
-        
-    if( bp->tempOutputBuffer )
-        PaUtil_FreeMemory( bp->tempOutputBuffer );
-
-    if( bp->tempOutputBufferPtrs )
-        PaUtil_FreeMemory( bp->tempOutputBufferPtrs );
-
-    if( bp->hostOutputChannels[0] )
-        PaUtil_FreeMemory( bp->hostOutputChannels[0] );
-}
-
-
-void PaUtil_ResetBufferProcessor( PaUtilBufferProcessor* bp )
-{
-    unsigned long tempInputBufferSize, tempOutputBufferSize;
-
-    bp->framesInTempInputBuffer = bp->initialFramesInTempInputBuffer;
-    bp->framesInTempOutputBuffer = bp->initialFramesInTempOutputBuffer;
-
-    if( bp->framesInTempInputBuffer > 0 )
-    {
-        tempInputBufferSize =
-            bp->framesPerTempBuffer * bp->bytesPerUserInputSample * bp->inputChannelCount;
-        memset( bp->tempInputBuffer, 0, tempInputBufferSize );
-    }
-
-    if( bp->framesInTempOutputBuffer > 0 )
-    {      
-        tempOutputBufferSize =
-            bp->framesPerTempBuffer * bp->bytesPerUserOutputSample * bp->outputChannelCount;
-        memset( bp->tempOutputBuffer, 0, tempOutputBufferSize );
-    }
-}
-
-
-unsigned long PaUtil_GetBufferProcessorInputLatency( PaUtilBufferProcessor* bp )
-{
-    return bp->initialFramesInTempInputBuffer;
-}
-
-
-unsigned long PaUtil_GetBufferProcessorOutputLatency( PaUtilBufferProcessor* bp )
-{
-    return bp->initialFramesInTempOutputBuffer;
-}
-
-
-void PaUtil_SetInputFrameCount( PaUtilBufferProcessor* bp,
-        unsigned long frameCount )
-{
-    if( frameCount == 0 )
-        bp->hostInputFrameCount[0] = bp->framesPerHostBuffer;
-    else
-        bp->hostInputFrameCount[0] = frameCount;
-}
-        
-
-void PaUtil_SetNoInput( PaUtilBufferProcessor* bp )
-{
-    assert( bp->inputChannelCount > 0 );
-
-    bp->hostInputChannels[0][0].data = 0;
-}
-
-
-void PaUtil_SetInputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data, unsigned int stride )
-{
-    assert( channel < bp->inputChannelCount );
-    
-    bp->hostInputChannels[0][channel].data = data;
-    bp->hostInputChannels[0][channel].stride = stride;
-}
-
-
-void PaUtil_SetInterleavedInputChannels( PaUtilBufferProcessor* bp,
-        unsigned int firstChannel, void *data, unsigned int channelCount )
-{
-    unsigned int i;
-    unsigned int channel = firstChannel;
-    unsigned char *p = (unsigned char*)data;
-
-    if( channelCount == 0 )
-        channelCount = bp->inputChannelCount;
-
-    assert( firstChannel < bp->inputChannelCount );
-    assert( firstChannel + channelCount <= bp->inputChannelCount );
-
-    for( i=0; i< channelCount; ++i )
-    {
-        bp->hostInputChannels[0][channel+i].data = p;
-        p += bp->bytesPerHostInputSample;
-        bp->hostInputChannels[0][channel+i].stride = channelCount;
-    }
-}
-
-
-void PaUtil_SetNonInterleavedInputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data )
-{
-    assert( channel < bp->inputChannelCount );
-    
-    bp->hostInputChannels[0][channel].data = data;
-    bp->hostInputChannels[0][channel].stride = 1;
-}
-
-
-void PaUtil_Set2ndInputFrameCount( PaUtilBufferProcessor* bp,
-        unsigned long frameCount )
-{
-    bp->hostInputFrameCount[1] = frameCount;
-}
-
-
-void PaUtil_Set2ndInputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data, unsigned int stride )
-{
-    assert( channel < bp->inputChannelCount );
-
-    bp->hostInputChannels[1][channel].data = data;
-    bp->hostInputChannels[1][channel].stride = stride;
-}
-
-
-void PaUtil_Set2ndInterleavedInputChannels( PaUtilBufferProcessor* bp,
-        unsigned int firstChannel, void *data, unsigned int channelCount )
-{
-    unsigned int i;
-    unsigned int channel = firstChannel;
-    unsigned char *p = (unsigned char*)data;
-
-    if( channelCount == 0 )
-        channelCount = bp->inputChannelCount;
-
-    assert( firstChannel < bp->inputChannelCount );
-    assert( firstChannel + channelCount <= bp->inputChannelCount );
-    
-    for( i=0; i< channelCount; ++i )
-    {
-        bp->hostInputChannels[1][channel+i].data = p;
-        p += bp->bytesPerHostInputSample;
-        bp->hostInputChannels[1][channel+i].stride = channelCount;
-    }
-}
-
-        
-void PaUtil_Set2ndNonInterleavedInputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data )
-{
-    assert( channel < bp->inputChannelCount );
-    
-    bp->hostInputChannels[1][channel].data = data;
-    bp->hostInputChannels[1][channel].stride = 1;
-}
-
-
-void PaUtil_SetOutputFrameCount( PaUtilBufferProcessor* bp,
-        unsigned long frameCount )
-{
-    if( frameCount == 0 )
-        bp->hostOutputFrameCount[0] = bp->framesPerHostBuffer;
-    else
-        bp->hostOutputFrameCount[0] = frameCount;
-}
-
-
-void PaUtil_SetNoOutput( PaUtilBufferProcessor* bp )
-{
-    assert( bp->outputChannelCount > 0 );
-
-    bp->hostOutputChannels[0][0].data = 0;
-}
-
-
-void PaUtil_SetOutputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data, unsigned int stride )
-{
-    assert( channel < bp->outputChannelCount );
-    assert( data != NULL );
-
-    bp->hostOutputChannels[0][channel].data = data;
-    bp->hostOutputChannels[0][channel].stride = stride;
-}
-
-
-void PaUtil_SetInterleavedOutputChannels( PaUtilBufferProcessor* bp,
-        unsigned int firstChannel, void *data, unsigned int channelCount )
-{
-    unsigned int i;
-    unsigned int channel = firstChannel;
-    unsigned char *p = (unsigned char*)data;
-
-    if( channelCount == 0 )
-        channelCount = bp->outputChannelCount;
-
-    assert( firstChannel < bp->outputChannelCount );
-    assert( firstChannel + channelCount <= bp->outputChannelCount );
-    
-    for( i=0; i< channelCount; ++i )
-    {
-        PaUtil_SetOutputChannel( bp, channel + i, p, channelCount );
-        p += bp->bytesPerHostOutputSample;
-    }
-}
-
-
-void PaUtil_SetNonInterleavedOutputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data )
-{
-    assert( channel < bp->outputChannelCount );
-
-    PaUtil_SetOutputChannel( bp, channel, data, 1 );
-}
-
-
-void PaUtil_Set2ndOutputFrameCount( PaUtilBufferProcessor* bp,
-        unsigned long frameCount )
-{
-    bp->hostOutputFrameCount[1] = frameCount;
-}
-
-
-void PaUtil_Set2ndOutputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data, unsigned int stride )
-{
-    assert( channel < bp->outputChannelCount );
-    assert( data != NULL );
-
-    bp->hostOutputChannels[1][channel].data = data;
-    bp->hostOutputChannels[1][channel].stride = stride;
-}
-
-
-void PaUtil_Set2ndInterleavedOutputChannels( PaUtilBufferProcessor* bp,
-        unsigned int firstChannel, void *data, unsigned int channelCount )
-{
-    unsigned int i;
-    unsigned int channel = firstChannel;
-    unsigned char *p = (unsigned char*)data;
-
-    if( channelCount == 0 )
-        channelCount = bp->outputChannelCount;
-
-    assert( firstChannel < bp->outputChannelCount );
-    assert( firstChannel + channelCount <= bp->outputChannelCount );
-    
-    for( i=0; i< channelCount; ++i )
-    {
-        PaUtil_Set2ndOutputChannel( bp, channel + i, p, channelCount );
-        p += bp->bytesPerHostOutputSample;
-    }
-}
-
-        
-void PaUtil_Set2ndNonInterleavedOutputChannel( PaUtilBufferProcessor* bp,
-        unsigned int channel, void *data )
-{
-    assert( channel < bp->outputChannelCount );
-    
-    PaUtil_Set2ndOutputChannel( bp, channel, data, 1 );
-}
-
-
-void PaUtil_BeginBufferProcessing( PaUtilBufferProcessor* bp,
-        PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags callbackStatusFlags )
-{
-    bp->timeInfo = timeInfo;
-
-    /* the first streamCallback will be called to process samples which are
-        currently in the input buffer before the ones starting at the timeInfo time */
-        
-    bp->timeInfo->inputBufferAdcTime -= bp->framesInTempInputBuffer * bp->samplePeriod;
-    
-    bp->timeInfo->currentTime = 0; /** FIXME: @todo time info currentTime not implemented */
-
-    /* the first streamCallback will be called to generate samples which will be
-        outputted after the frames currently in the output buffer have been
-        outputted. */
-    bp->timeInfo->outputBufferDacTime += bp->framesInTempOutputBuffer * bp->samplePeriod;
-
-    bp->callbackStatusFlags = callbackStatusFlags;
-
-    bp->hostInputFrameCount[1] = 0;
-    bp->hostOutputFrameCount[1] = 0;
-}
-
-
-/*
-    NonAdaptingProcess() is a simple buffer copying adaptor that can handle
-    both full and half duplex copies. It processes framesToProcess frames,
-    broken into blocks bp->framesPerTempBuffer long.
-    This routine can be used when the streamCallback doesn't care what length
-    the buffers are, or when framesToProcess is an integer multiple of
-    bp->framesPerTempBuffer, in which case streamCallback will always be called
-    with bp->framesPerTempBuffer samples.
-*/
-static unsigned long NonAdaptingProcess( PaUtilBufferProcessor *bp,
-        int *streamCallbackResult,
-        PaUtilChannelDescriptor *hostInputChannels,
-        PaUtilChannelDescriptor *hostOutputChannels,
-        unsigned long framesToProcess )
-{
-    void *userInput, *userOutput;
-    unsigned char *srcBytePtr, *destBytePtr;
-    unsigned int srcSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int srcChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int destSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int destChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i;
-    unsigned long frameCount;
-    unsigned long framesToGo = framesToProcess;
-    unsigned long framesProcessed = 0;
-
-
-    if( *streamCallbackResult == paContinue )
-    {
-        do
-        {
-            frameCount = PA_MIN_( bp->framesPerTempBuffer, framesToGo );
-
-            /* configure user input buffer and convert input data (host -> user) */
-            if( bp->inputChannelCount == 0 )
-            {
-                /* no input */
-                userInput = 0;
-            }
-            else /* there are input channels */
-            {
-                /*
-                    could use more elaborate logic here and sometimes process
-                    buffers in-place.
-                */
-            
-                destBytePtr = (unsigned char *)bp->tempInputBuffer;
-
-                if( bp->userInputIsInterleaved )
-                {
-                    destSampleStrideSamples = bp->inputChannelCount;
-                    destChannelStrideBytes = bp->bytesPerUserInputSample;
-                    userInput = bp->tempInputBuffer;
-                }
-                else /* user input is not interleaved */
-                {
-                    destSampleStrideSamples = 1;
-                    destChannelStrideBytes = frameCount * bp->bytesPerUserInputSample;
-
-                    /* setup non-interleaved ptrs */
-                    for( i=0; i<bp->inputChannelCount; ++i )
-                    {
-                        bp->tempInputBufferPtrs[i] = ((unsigned char*)bp->tempInputBuffer) +
-                            i * bp->bytesPerUserInputSample * frameCount;
-                    }
-                
-                    userInput = bp->tempInputBufferPtrs;
-                }
-
-                if( !bp->hostInputChannels[0][0].data )
-                {
-                    /* no input was supplied (see PaUtil_SetNoInput), so
-                        zero the input buffer */
-
-                    for( i=0; i<bp->inputChannelCount; ++i )
-                    {
-                        bp->inputZeroer( destBytePtr, destSampleStrideSamples, frameCount );
-                        destBytePtr += destChannelStrideBytes;  /* skip to next destination channel */
-                    }
-                }
-                else
-                {
-                    for( i=0; i<bp->inputChannelCount; ++i )
-                    {
-                        bp->inputConverter( destBytePtr, destSampleStrideSamples,
-                                                hostInputChannels[i].data,
-                                                hostInputChannels[i].stride,
-                                                frameCount, &bp->ditherGenerator );
-
-                        destBytePtr += destChannelStrideBytes;  /* skip to next destination channel */
-
-                        /* advance src ptr for next iteration */
-                        hostInputChannels[i].data = ((unsigned char*)hostInputChannels[i].data) +
-                                frameCount * hostInputChannels[i].stride * bp->bytesPerHostInputSample;
-                    }
-                }
-            }
-
-            /* configure user output buffer */
-            if( bp->outputChannelCount == 0 )
-            {
-                /* no output */
-                userOutput = 0;
-            }
-            else /* there are output channels */
-            {
-                if( bp->userOutputIsInterleaved )
-                {
-                    userOutput = bp->tempOutputBuffer;
-                }
-                else /* user output is not interleaved */
-                {
-                    for( i = 0; i < bp->outputChannelCount; ++i )
-                    {
-                        bp->tempOutputBufferPtrs[i] = ((unsigned char*)bp->tempOutputBuffer) +
-                            i * bp->bytesPerUserOutputSample * frameCount;
-                    }
-
-                    userOutput = bp->tempOutputBufferPtrs;
-                }
-            }
- 
-			           *streamCallbackResult = bp->streamCallback( userInput, userOutput,
-                    frameCount, bp->timeInfo, bp->callbackStatusFlags, bp->userData );
-
-            if( *streamCallbackResult == paAbort )
-            {
-                /* callback returned paAbort, don't advance framesProcessed
-                        and framesToGo, they will be handled below */
-            }
-            else
-            {
-                bp->timeInfo->inputBufferAdcTime += frameCount * bp->samplePeriod;
-                bp->timeInfo->outputBufferDacTime += frameCount * bp->samplePeriod;
-
-                /* convert output data (user -> host) */
-                
-                if( bp->outputChannelCount != 0 && bp->hostOutputChannels[0][0].data )
-                {
-                    /*
-                        could use more elaborate logic here and sometimes process
-                        buffers in-place.
-                    */
-            
-                    srcBytePtr = (unsigned char *)bp->tempOutputBuffer;
-
-                    if( bp->userOutputIsInterleaved )
-                    {
-                        srcSampleStrideSamples = bp->outputChannelCount;
-                        srcChannelStrideBytes = bp->bytesPerUserOutputSample;
-                    }
-                    else /* user output is not interleaved */
-                    {
-                        srcSampleStrideSamples = 1;
-                        srcChannelStrideBytes = frameCount * bp->bytesPerUserOutputSample;
-                    }
-
-                    for( i=0; i<bp->outputChannelCount; ++i )
-                    {
-                        bp->outputConverter(    hostOutputChannels[i].data,
-                                                hostOutputChannels[i].stride,
-                                                srcBytePtr, srcSampleStrideSamples,
-                                                frameCount, &bp->ditherGenerator );
-
-                        srcBytePtr += srcChannelStrideBytes;  /* skip to next source channel */
-
-                        /* advance dest ptr for next iteration */
-                        hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                                frameCount * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-                    }
-                }
-             
-                framesProcessed += frameCount;
-
-                framesToGo -= frameCount;
-            }
-        }
-        while( framesToGo > 0  && *streamCallbackResult == paContinue );
-    }
-
-    if( framesToGo > 0 )
-    {
-        /* zero any remaining frames output. There will only be remaining frames
-            if the callback has returned paComplete or paAbort */
-
-        frameCount = framesToGo;
-
-        if( bp->outputChannelCount != 0 && bp->hostOutputChannels[0][0].data )
-        {
-            for( i=0; i<bp->outputChannelCount; ++i )
-            {
-                bp->outputZeroer(   hostOutputChannels[i].data,
-                                    hostOutputChannels[i].stride,
-                                    frameCount );
-
-                /* advance dest ptr for next iteration */
-                hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                        frameCount * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-            }
-        }
-
-        framesProcessed += frameCount;
-    }
-
-    return framesProcessed;
-}
-
-
-/*
-    AdaptingInputOnlyProcess() is a half duplex input buffer processor. It
-    converts data from the input buffers into the temporary input buffer,
-    when the temporary input buffer is full, it calls the streamCallback.
-*/
-static unsigned long AdaptingInputOnlyProcess( PaUtilBufferProcessor *bp,
-        int *streamCallbackResult,
-        PaUtilChannelDescriptor *hostInputChannels,
-        unsigned long framesToProcess )
-{
-    void *userInput, *userOutput;
-    unsigned char *destBytePtr;
-    unsigned int destSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int destChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i;
-    unsigned long frameCount;
-    unsigned long framesToGo = framesToProcess;
-    unsigned long framesProcessed = 0;
-    
-    userOutput = 0;
-
-    do
-    {
-        frameCount = ( bp->framesInTempInputBuffer + framesToGo > bp->framesPerUserBuffer )
-                ? ( bp->framesPerUserBuffer - bp->framesInTempInputBuffer )
-                : framesToGo;
-
-        /* convert frameCount samples into temp buffer */
-
-        if( bp->userInputIsInterleaved )
-        {
-            destBytePtr = ((unsigned char*)bp->tempInputBuffer) +
-                    bp->bytesPerUserInputSample * bp->inputChannelCount *
-                    bp->framesInTempInputBuffer;
-                      
-            destSampleStrideSamples = bp->inputChannelCount;
-            destChannelStrideBytes = bp->bytesPerUserInputSample;
-
-            userInput = bp->tempInputBuffer;
-        }
-        else /* user input is not interleaved */
-        {
-            destBytePtr = ((unsigned char*)bp->tempInputBuffer) +
-                    bp->bytesPerUserInputSample * bp->framesInTempInputBuffer;
-
-            destSampleStrideSamples = 1;
-            destChannelStrideBytes = bp->framesPerUserBuffer * bp->bytesPerUserInputSample;
-
-            /* setup non-interleaved ptrs */
-            for( i=0; i<bp->inputChannelCount; ++i )
-            {
-                bp->tempInputBufferPtrs[i] = ((unsigned char*)bp->tempInputBuffer) +
-                    i * bp->bytesPerUserInputSample * bp->framesPerUserBuffer;
-            }
-                    
-            userInput = bp->tempInputBufferPtrs;
-        }
-
-        for( i=0; i<bp->inputChannelCount; ++i )
-        {
-            bp->inputConverter( destBytePtr, destSampleStrideSamples,
-                                    hostInputChannels[i].data,
-                                    hostInputChannels[i].stride,
-                                    frameCount, &bp->ditherGenerator );
-
-            destBytePtr += destChannelStrideBytes;  /* skip to next destination channel */
-
-            /* advance src ptr for next iteration */
-            hostInputChannels[i].data = ((unsigned char*)hostInputChannels[i].data) +
-                    frameCount * hostInputChannels[i].stride * bp->bytesPerHostInputSample;
-        }
-
-        bp->framesInTempInputBuffer += frameCount;
-
-        if( bp->framesInTempInputBuffer == bp->framesPerUserBuffer )
-        {
-            /**
-            @todo (non-critical optimisation)
-            The conditional below implements the continue/complete/abort mechanism
-            simply by continuing on iterating through the input buffer, but not
-            passing the data to the callback. With care, the outer loop could be
-            terminated earlier, thus some unneeded conversion cycles would be
-            saved.
-            */
-            if( *streamCallbackResult == paContinue )
-            {
-                bp->timeInfo->outputBufferDacTime = 0;
-
-                *streamCallbackResult = bp->streamCallback( userInput, userOutput,
-                        bp->framesPerUserBuffer, bp->timeInfo,
-                        bp->callbackStatusFlags, bp->userData );
-
-                bp->timeInfo->inputBufferAdcTime += frameCount * bp->samplePeriod;
-            }
-            
-            bp->framesInTempInputBuffer = 0;
-        }
-
-        framesProcessed += frameCount;
-
-        framesToGo -= frameCount;
-    }while( framesToGo > 0 );
-
-    return framesProcessed;
-}
-
-
-/*
-    AdaptingOutputOnlyProcess() is a half duplex output buffer processor.
-    It converts data from the temporary output buffer, to the output buffers,
-    when the temporary output buffer is empty, it calls the streamCallback.
-*/
-static unsigned long AdaptingOutputOnlyProcess( PaUtilBufferProcessor *bp,
-        int *streamCallbackResult,
-        PaUtilChannelDescriptor *hostOutputChannels,
-        unsigned long framesToProcess )
-{
-    void *userInput, *userOutput;
-    unsigned char *srcBytePtr;
-    unsigned int srcSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int srcChannelStrideBytes;  /* stride from one channel to the next, in bytes */
-    unsigned int i;
-    unsigned long frameCount;
-    unsigned long framesToGo = framesToProcess;
-    unsigned long framesProcessed = 0;
-
-    do
-    {
-        if( bp->framesInTempOutputBuffer == 0 && *streamCallbackResult == paContinue )
-        {
-            userInput = 0;
-
-            /* setup userOutput */
-            if( bp->userOutputIsInterleaved )
-            {
-                userOutput = bp->tempOutputBuffer;
-            }
-            else /* user output is not interleaved */
-            {
-                for( i = 0; i < bp->outputChannelCount; ++i )
-                {
-                    bp->tempOutputBufferPtrs[i] = ((unsigned char*)bp->tempOutputBuffer) +
-                            i * bp->framesPerUserBuffer * bp->bytesPerUserOutputSample;
-                }
-
-                userOutput = bp->tempOutputBufferPtrs;
-            }
-
-            bp->timeInfo->inputBufferAdcTime = 0;
-            
-            *streamCallbackResult = bp->streamCallback( userInput, userOutput,
-                    bp->framesPerUserBuffer, bp->timeInfo,
-                    bp->callbackStatusFlags, bp->userData );
-
-            if( *streamCallbackResult == paAbort )
-            {
-                /* if the callback returned paAbort, we disregard its output */
-            }
-            else
-            {
-                bp->timeInfo->outputBufferDacTime += bp->framesPerUserBuffer * bp->samplePeriod;
-
-                bp->framesInTempOutputBuffer = bp->framesPerUserBuffer;
-            }
-        }
-
-        if( bp->framesInTempOutputBuffer > 0 )
-        {
-            /* convert frameCount frames from user buffer to host buffer */
-
-            frameCount = PA_MIN_( bp->framesInTempOutputBuffer, framesToGo );
-
-            if( bp->userOutputIsInterleaved )
-            {
-                srcBytePtr = ((unsigned char*)bp->tempOutputBuffer) +
-                        bp->bytesPerUserOutputSample * bp->outputChannelCount *
-                        (bp->framesPerUserBuffer - bp->framesInTempOutputBuffer);
-
-                srcSampleStrideSamples = bp->outputChannelCount;
-                srcChannelStrideBytes = bp->bytesPerUserOutputSample;
-            }
-            else /* user output is not interleaved */
-            {
-                srcBytePtr = ((unsigned char*)bp->tempOutputBuffer) +
-                        bp->bytesPerUserOutputSample *
-                        (bp->framesPerUserBuffer - bp->framesInTempOutputBuffer);
-                            
-                srcSampleStrideSamples = 1;
-                srcChannelStrideBytes = bp->framesPerUserBuffer * bp->bytesPerUserOutputSample;
-            }
-
-            for( i=0; i<bp->outputChannelCount; ++i )
-            {
-                bp->outputConverter(    hostOutputChannels[i].data,
-                                        hostOutputChannels[i].stride,
-                                        srcBytePtr, srcSampleStrideSamples,
-                                        frameCount, &bp->ditherGenerator );
-
-                srcBytePtr += srcChannelStrideBytes;  /* skip to next source channel */
-
-                /* advance dest ptr for next iteration */
-                hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                        frameCount * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-            }
-
-            bp->framesInTempOutputBuffer -= frameCount;
-        }
-        else
-        {
-            /* no more user data is available because the callback has returned
-                paComplete or paAbort. Fill the remainder of the host buffer
-                with zeros.
-            */
-
-            frameCount = framesToGo;
-
-            for( i=0; i<bp->outputChannelCount; ++i )
-            {
-                bp->outputZeroer(   hostOutputChannels[i].data,
-                                    hostOutputChannels[i].stride,
-                                    frameCount );
-
-                /* advance dest ptr for next iteration */
-                hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                        frameCount * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-            }
-        }
-        
-        framesProcessed += frameCount;
-        
-        framesToGo -= frameCount;
-
-    }while( framesToGo > 0 );
-
-    return framesProcessed;
-}
-
-/* CopyTempOutputBuffersToHostOutputBuffers is called from AdaptingProcess to copy frames from
-	tempOutputBuffer to hostOutputChannels. This includes data conversion
-	and interleaving. 
-*/
-static void CopyTempOutputBuffersToHostOutputBuffers( PaUtilBufferProcessor *bp)
-{
-    unsigned long maxFramesToCopy;
-    PaUtilChannelDescriptor *hostOutputChannels;
-    unsigned int frameCount;
-    unsigned char *srcBytePtr;
-    unsigned int srcSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int srcChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i;
-
-     /* copy frames from user to host output buffers */
-     while( bp->framesInTempOutputBuffer > 0 &&
-             ((bp->hostOutputFrameCount[0] + bp->hostOutputFrameCount[1]) > 0) )
-     {
-         maxFramesToCopy = bp->framesInTempOutputBuffer;
-
-         /* select the output buffer set (1st or 2nd) */
-         if( bp->hostOutputFrameCount[0] > 0 )
-         {
-             hostOutputChannels = bp->hostOutputChannels[0];
-             frameCount = PA_MIN_( bp->hostOutputFrameCount[0], maxFramesToCopy );
-         }
-         else
-         {
-             hostOutputChannels = bp->hostOutputChannels[1];
-             frameCount = PA_MIN_( bp->hostOutputFrameCount[1], maxFramesToCopy );
-         }
-
-         if( bp->userOutputIsInterleaved )
-         {
-             srcBytePtr = ((unsigned char*)bp->tempOutputBuffer) +
-                     bp->bytesPerUserOutputSample * bp->outputChannelCount *
-                     (bp->framesPerUserBuffer - bp->framesInTempOutputBuffer);
-                         
-             srcSampleStrideSamples = bp->outputChannelCount;
-             srcChannelStrideBytes = bp->bytesPerUserOutputSample;
-         }
-         else /* user output is not interleaved */
-         {
-             srcBytePtr = ((unsigned char*)bp->tempOutputBuffer) +
-                     bp->bytesPerUserOutputSample *
-                     (bp->framesPerUserBuffer - bp->framesInTempOutputBuffer);
-
-             srcSampleStrideSamples = 1;
-             srcChannelStrideBytes = bp->framesPerUserBuffer * bp->bytesPerUserOutputSample;
-         }
-
-         for( i=0; i<bp->outputChannelCount; ++i )
-         {
-             assert( hostOutputChannels[i].data != NULL );
-             bp->outputConverter(    hostOutputChannels[i].data,
-                                     hostOutputChannels[i].stride,
-                                     srcBytePtr, srcSampleStrideSamples,
-                                     frameCount, &bp->ditherGenerator );
-
-             srcBytePtr += srcChannelStrideBytes;  /* skip to next source channel */
-
-             /* advance dest ptr for next iteration */
-             hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                     frameCount * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-         }
-
-         if( bp->hostOutputFrameCount[0] > 0 )
-             bp->hostOutputFrameCount[0] -= frameCount;
-         else
-             bp->hostOutputFrameCount[1] -= frameCount;
-
-         bp->framesInTempOutputBuffer -= frameCount;
-     }
-}
-
-/*
-    AdaptingProcess is a full duplex adapting buffer processor. It converts
-    data from the temporary output buffer into the host output buffers, then
-    from the host input buffers into the temporary input buffers. Calling the
-    streamCallback when necessary.
-    When processPartialUserBuffers is 0, all available input data will be
-    consumed and all available output space will be filled. When
-    processPartialUserBuffers is non-zero, as many full user buffers
-    as possible will be processed, but partial buffers will not be consumed.
-*/
-static unsigned long AdaptingProcess( PaUtilBufferProcessor *bp,
-        int *streamCallbackResult, int processPartialUserBuffers )
-{
-    void *userInput, *userOutput;
-    unsigned long framesProcessed = 0;
-    unsigned long framesAvailable;
-    unsigned long endProcessingMinFrameCount;
-    unsigned long maxFramesToCopy;
-    PaUtilChannelDescriptor *hostInputChannels, *hostOutputChannels;
-    unsigned int frameCount;
-    unsigned char *destBytePtr;
-    unsigned int destSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int destChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i, j;
- 
-
-    framesAvailable = bp->hostInputFrameCount[0] + bp->hostInputFrameCount[1];/* this is assumed to be the same as the output buffer's frame count */
-
-    if( processPartialUserBuffers )
-        endProcessingMinFrameCount = 0;
-    else
-        endProcessingMinFrameCount = (bp->framesPerUserBuffer - 1);
-
-    /* Fill host output with remaining frames in user output (tempOutputBuffer) */
-    CopyTempOutputBuffersToHostOutputBuffers( bp );		  	
-
-    while( framesAvailable > endProcessingMinFrameCount ) 
-    {
-
-        if( bp->framesInTempOutputBuffer == 0 && *streamCallbackResult != paContinue )
-        {
-            /* the callback will not be called any more, so zero what remains
-                of the host output buffers */
-
-            for( i=0; i<2; ++i )
-            {
-                frameCount = bp->hostOutputFrameCount[i];
-                if( frameCount > 0 )
-                {
-                    hostOutputChannels = bp->hostOutputChannels[i];
-                    
-                    for( j=0; j<bp->outputChannelCount; ++j )
-                    {
-                        bp->outputZeroer(   hostOutputChannels[j].data,
-                                            hostOutputChannels[j].stride,
-                                            frameCount );
-
-                        /* advance dest ptr for next iteration  */
-                        hostOutputChannels[j].data = ((unsigned char*)hostOutputChannels[j].data) +
-                                frameCount * hostOutputChannels[j].stride * bp->bytesPerHostOutputSample;
-                    }
-                    bp->hostOutputFrameCount[i] = 0;
-                }
-            }
-        }          
-
-
-        /* copy frames from host to user input buffers */
-        while( bp->framesInTempInputBuffer < bp->framesPerUserBuffer &&
-                ((bp->hostInputFrameCount[0] + bp->hostInputFrameCount[1]) > 0) )
-        {
-            maxFramesToCopy = bp->framesPerUserBuffer - bp->framesInTempInputBuffer;
-
-            /* select the input buffer set (1st or 2nd) */
-            if( bp->hostInputFrameCount[0] > 0 )
-            {
-                hostInputChannels = bp->hostInputChannels[0];
-                frameCount = PA_MIN_( bp->hostInputFrameCount[0], maxFramesToCopy );
-            }
-            else
-            {
-                hostInputChannels = bp->hostInputChannels[1];
-                frameCount = PA_MIN_( bp->hostInputFrameCount[1], maxFramesToCopy );
-            }
-
-            /* configure conversion destination pointers */
-            if( bp->userInputIsInterleaved )
-            {
-                destBytePtr = ((unsigned char*)bp->tempInputBuffer) +
-                        bp->bytesPerUserInputSample * bp->inputChannelCount *
-                        bp->framesInTempInputBuffer;
-
-                destSampleStrideSamples = bp->inputChannelCount;
-                destChannelStrideBytes = bp->bytesPerUserInputSample;
-            }
-            else /* user input is not interleaved */
-            {
-                destBytePtr = ((unsigned char*)bp->tempInputBuffer) +
-                        bp->bytesPerUserInputSample * bp->framesInTempInputBuffer;
-
-                destSampleStrideSamples = 1;
-                destChannelStrideBytes = bp->framesPerUserBuffer * bp->bytesPerUserInputSample;
-            }
-
-            for( i=0; i<bp->inputChannelCount; ++i )
-            {
-                bp->inputConverter( destBytePtr, destSampleStrideSamples,
-                                        hostInputChannels[i].data,
-                                        hostInputChannels[i].stride,
-                                        frameCount, &bp->ditherGenerator );
-
-                destBytePtr += destChannelStrideBytes;  /* skip to next destination channel */
-
-                /* advance src ptr for next iteration */
-                hostInputChannels[i].data = ((unsigned char*)hostInputChannels[i].data) +
-                        frameCount * hostInputChannels[i].stride * bp->bytesPerHostInputSample;
-            }
-
-            if( bp->hostInputFrameCount[0] > 0 )
-                bp->hostInputFrameCount[0] -= frameCount;
-            else
-                bp->hostInputFrameCount[1] -= frameCount;
-                
-            bp->framesInTempInputBuffer += frameCount;
-
-            /* update framesAvailable and framesProcessed based on input consumed
-                unless something is very wrong this will also correspond to the
-                amount of output generated */
-            framesAvailable -= frameCount;
-            framesProcessed += frameCount;
-        }
-
-        /* call streamCallback */
-        if( bp->framesInTempInputBuffer == bp->framesPerUserBuffer &&
-            bp->framesInTempOutputBuffer == 0 )
-        {
-            if( *streamCallbackResult == paContinue )
-            {
-                /* setup userInput */
-                if( bp->userInputIsInterleaved )
-                {
-                    userInput = bp->tempInputBuffer;
-                }
-                else /* user input is not interleaved */
-                {
-                    for( i = 0; i < bp->inputChannelCount; ++i )
-                    {
-                        bp->tempInputBufferPtrs[i] = ((unsigned char*)bp->tempInputBuffer) +
-                                i * bp->framesPerUserBuffer * bp->bytesPerUserInputSample;
-                    }
-
-                    userInput = bp->tempInputBufferPtrs;
-                }
-
-                /* setup userOutput */
-                if( bp->userOutputIsInterleaved )
-                {
-                    userOutput = bp->tempOutputBuffer;
-                }
-                else /* user output is not interleaved */
-                {
-                    for( i = 0; i < bp->outputChannelCount; ++i )
-                    {
-                        bp->tempOutputBufferPtrs[i] = ((unsigned char*)bp->tempOutputBuffer) +
-                                i * bp->framesPerUserBuffer * bp->bytesPerUserOutputSample;
-                    }
-
-                    userOutput = bp->tempOutputBufferPtrs;
-                }
-
-                /* call streamCallback */
-
-                *streamCallbackResult = bp->streamCallback( userInput, userOutput,
-                        bp->framesPerUserBuffer, bp->timeInfo,
-                        bp->callbackStatusFlags, bp->userData );
-
-                bp->timeInfo->inputBufferAdcTime += bp->framesPerUserBuffer * bp->samplePeriod;
-                bp->timeInfo->outputBufferDacTime += bp->framesPerUserBuffer * bp->samplePeriod;
-
-                bp->framesInTempInputBuffer = 0;
-
-                if( *streamCallbackResult == paAbort )
-                    bp->framesInTempOutputBuffer = 0;
-                else
-                    bp->framesInTempOutputBuffer = bp->framesPerUserBuffer;
-            }
-            else
-            {
-                /* paComplete or paAbort has already been called. */
-
-                bp->framesInTempInputBuffer = 0;
-            }
-        }
-
-        /* copy frames from user (tempOutputBuffer) to host output buffers (hostOutputChannels) 
-           Means to process the user output provided by the callback. Has to be called after
-            each callback. */
-        CopyTempOutputBuffersToHostOutputBuffers( bp );		  	
-
-    }
-    
-    return framesProcessed;
-}
-
-
-unsigned long PaUtil_EndBufferProcessing( PaUtilBufferProcessor* bp, int *streamCallbackResult )
-{
-    unsigned long framesToProcess, framesToGo;
-    unsigned long framesProcessed = 0;
-    
-    if( bp->inputChannelCount != 0 && bp->outputChannelCount != 0
-            && bp->hostInputChannels[0][0].data /* input was supplied (see PaUtil_SetNoInput) */
-            && bp->hostOutputChannels[0][0].data /* output was supplied (see PaUtil_SetNoOutput) */ )
-    {
-        assert( (bp->hostInputFrameCount[0] + bp->hostInputFrameCount[1]) ==
-                (bp->hostOutputFrameCount[0] + bp->hostOutputFrameCount[1]) );
-    }
-
-    assert( *streamCallbackResult == paContinue
-            || *streamCallbackResult == paComplete
-            || *streamCallbackResult == paAbort ); /* don't forget to pass in a valid callback result value */
-
-    if( bp->useNonAdaptingProcess )
-    {
-        if( bp->inputChannelCount != 0 && bp->outputChannelCount != 0 )
-        {
-            /* full duplex non-adapting process, splice buffers if they are
-                different lengths */
-
-            framesToGo = bp->hostOutputFrameCount[0] + bp->hostOutputFrameCount[1]; /* relies on assert above for input/output equivalence */
-
-            do{
-                unsigned long noInputInputFrameCount;
-                unsigned long *hostInputFrameCount;
-                PaUtilChannelDescriptor *hostInputChannels;
-                unsigned long noOutputOutputFrameCount;
-                unsigned long *hostOutputFrameCount;
-                PaUtilChannelDescriptor *hostOutputChannels;
-                unsigned long framesProcessedThisIteration;
-
-                if( !bp->hostInputChannels[0][0].data )
-                {
-                    /* no input was supplied (see PaUtil_SetNoInput)
-                        NonAdaptingProcess knows how to deal with this
-                    */
-                    noInputInputFrameCount = framesToGo;
-                    hostInputFrameCount = &noInputInputFrameCount;
-                    hostInputChannels = 0;
-                }
-                else if( bp->hostInputFrameCount[0] != 0 )
-                {
-                    hostInputFrameCount = &bp->hostInputFrameCount[0];
-                    hostInputChannels = bp->hostInputChannels[0];
-                }
-                else
-                {
-                    hostInputFrameCount = &bp->hostInputFrameCount[1];
-                    hostInputChannels = bp->hostInputChannels[1];
-                }
-
-                if( !bp->hostOutputChannels[0][0].data )
-                {
-                    /* no output was supplied (see PaUtil_SetNoOutput)
-                        NonAdaptingProcess knows how to deal with this
-                    */
-                    noOutputOutputFrameCount = framesToGo;
-                    hostOutputFrameCount = &noOutputOutputFrameCount;
-                    hostOutputChannels = 0;
-                }
-                if( bp->hostOutputFrameCount[0] != 0 )
-                {
-                    hostOutputFrameCount = &bp->hostOutputFrameCount[0];
-                    hostOutputChannels = bp->hostOutputChannels[0];
-                }
-                else
-                {
-                    hostOutputFrameCount = &bp->hostOutputFrameCount[1];
-                    hostOutputChannels = bp->hostOutputChannels[1];
-                }
-
-                framesToProcess = PA_MIN_( *hostInputFrameCount,
-                                       *hostOutputFrameCount );
-
-                assert( framesToProcess != 0 );
-                
-                framesProcessedThisIteration = NonAdaptingProcess( bp, streamCallbackResult,
-                        hostInputChannels, hostOutputChannels,
-                        framesToProcess );                                       
-
-                *hostInputFrameCount -= framesProcessedThisIteration;
-                *hostOutputFrameCount -= framesProcessedThisIteration;
-
-                framesProcessed += framesProcessedThisIteration;
-                framesToGo -= framesProcessedThisIteration;
-                
-            }while( framesToGo > 0 );
-        }
-        else
-        {
-            /* half duplex non-adapting process, just process 1st and 2nd buffer */
-            /* process first buffer */
-
-            framesToProcess = (bp->inputChannelCount != 0)
-                            ? bp->hostInputFrameCount[0]
-                            : bp->hostOutputFrameCount[0];
-
-            framesProcessed = NonAdaptingProcess( bp, streamCallbackResult,
-                        bp->hostInputChannels[0], bp->hostOutputChannels[0],
-                        framesToProcess );
-
-            /* process second buffer if provided */
-    
-            framesToProcess = (bp->inputChannelCount != 0)
-                            ? bp->hostInputFrameCount[1]
-                            : bp->hostOutputFrameCount[1];
-            if( framesToProcess > 0 )
-            {
-                framesProcessed += NonAdaptingProcess( bp, streamCallbackResult,
-                    bp->hostInputChannels[1], bp->hostOutputChannels[1],
-                    framesToProcess );
-            }
-        }
-    }
-    else /* block adaption necessary*/
-    {
-
-        if( bp->inputChannelCount != 0 && bp->outputChannelCount != 0 )
-        {
-            /* full duplex */
-            
-            if( bp->hostBufferSizeMode == paUtilVariableHostBufferSizePartialUsageAllowed  )
-            {
-                framesProcessed = AdaptingProcess( bp, streamCallbackResult,
-                        0 /* dont process partial user buffers */ );
-            }
-            else
-            {
-                framesProcessed = AdaptingProcess( bp, streamCallbackResult,
-                        1 /* process partial user buffers */ );
-            }
-        }
-        else if( bp->inputChannelCount != 0 )
-        {
-            /* input only */
-            framesToProcess = bp->hostInputFrameCount[0];
-
-            framesProcessed = AdaptingInputOnlyProcess( bp, streamCallbackResult,
-                        bp->hostInputChannels[0], framesToProcess );
-
-            framesToProcess = bp->hostInputFrameCount[1];
-            if( framesToProcess > 0 )
-            {
-                framesProcessed += AdaptingInputOnlyProcess( bp, streamCallbackResult,
-                        bp->hostInputChannels[1], framesToProcess );
-            }
-        }
-        else
-        {
-            /* output only */
-            framesToProcess = bp->hostOutputFrameCount[0];
-
-            framesProcessed = AdaptingOutputOnlyProcess( bp, streamCallbackResult,
-                        bp->hostOutputChannels[0], framesToProcess );
-
-            framesToProcess = bp->hostOutputFrameCount[1];
-            if( framesToProcess > 0 )
-            {
-                framesProcessed += AdaptingOutputOnlyProcess( bp, streamCallbackResult,
-                        bp->hostOutputChannels[1], framesToProcess );
-            }
-        }
-    }
-
-    return framesProcessed;
-}
-
-
-int PaUtil_IsBufferProcessorOutputEmpty( PaUtilBufferProcessor* bp )
-{
-    return (bp->framesInTempOutputBuffer) ? 0 : 1;
-} 
-
-
-unsigned long PaUtil_CopyInput( PaUtilBufferProcessor* bp,
-        void **buffer, unsigned long frameCount )
-{
-    PaUtilChannelDescriptor *hostInputChannels;
-    unsigned int framesToCopy;
-    unsigned char *destBytePtr;
-    void **nonInterleavedDestPtrs;
-    unsigned int destSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int destChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i;
-
-    hostInputChannels = bp->hostInputChannels[0];
-    framesToCopy = PA_MIN_( bp->hostInputFrameCount[0], frameCount );
-
-    if( bp->userInputIsInterleaved )
-    {
-        destBytePtr = (unsigned char*)*buffer;
-        
-        destSampleStrideSamples = bp->inputChannelCount;
-        destChannelStrideBytes = bp->bytesPerUserInputSample;
-
-        for( i=0; i<bp->inputChannelCount; ++i )
-        {
-            bp->inputConverter( destBytePtr, destSampleStrideSamples,
-                                hostInputChannels[i].data,
-                                hostInputChannels[i].stride,
-                                framesToCopy, &bp->ditherGenerator );
-
-            destBytePtr += destChannelStrideBytes;  /* skip to next source channel */
-
-            /* advance dest ptr for next iteration */
-            hostInputChannels[i].data = ((unsigned char*)hostInputChannels[i].data) +
-                    framesToCopy * hostInputChannels[i].stride * bp->bytesPerHostInputSample;
-        }
-
-        /* advance callers dest pointer (buffer) */
-        *buffer = ((unsigned char *)*buffer) +
-                framesToCopy * bp->inputChannelCount * bp->bytesPerUserInputSample;
-    }
-    else
-    {
-        /* user input is not interleaved */
-        
-        nonInterleavedDestPtrs = (void**)*buffer;
-
-        destSampleStrideSamples = 1;
-        
-        for( i=0; i<bp->inputChannelCount; ++i )
-        {
-            destBytePtr = (unsigned char*)nonInterleavedDestPtrs[i];
-
-            bp->inputConverter( destBytePtr, destSampleStrideSamples,
-                                hostInputChannels[i].data,
-                                hostInputChannels[i].stride,
-                                framesToCopy, &bp->ditherGenerator );
-
-            /* advance callers dest pointer (nonInterleavedDestPtrs[i]) */
-            destBytePtr += bp->bytesPerUserInputSample * framesToCopy;
-            nonInterleavedDestPtrs[i] = destBytePtr;
-            
-            /* advance dest ptr for next iteration */
-            hostInputChannels[i].data = ((unsigned char*)hostInputChannels[i].data) +
-                    framesToCopy * hostInputChannels[i].stride * bp->bytesPerHostInputSample;
-        }
-    }
-
-    bp->hostInputFrameCount[0] -= framesToCopy;
-    
-    return framesToCopy;
-}
-
-unsigned long PaUtil_CopyOutput( PaUtilBufferProcessor* bp,
-        const void ** buffer, unsigned long frameCount )
-{
-    PaUtilChannelDescriptor *hostOutputChannels;
-    unsigned int framesToCopy;
-    unsigned char *srcBytePtr;
-    void **nonInterleavedSrcPtrs;
-    unsigned int srcSampleStrideSamples; /* stride from one sample to the next within a channel, in samples */
-    unsigned int srcChannelStrideBytes; /* stride from one channel to the next, in bytes */
-    unsigned int i;
-
-    hostOutputChannels = bp->hostOutputChannels[0];
-    framesToCopy = PA_MIN_( bp->hostOutputFrameCount[0], frameCount );
-
-    if( bp->userOutputIsInterleaved )
-    {
-        srcBytePtr = (unsigned char*)*buffer;
-        
-        srcSampleStrideSamples = bp->outputChannelCount;
-        srcChannelStrideBytes = bp->bytesPerUserOutputSample;
-
-        for( i=0; i<bp->outputChannelCount; ++i )
-        {
-            bp->outputConverter(    hostOutputChannels[i].data,
-                                    hostOutputChannels[i].stride,
-                                    srcBytePtr, srcSampleStrideSamples,
-                                    framesToCopy, &bp->ditherGenerator );
-
-            srcBytePtr += srcChannelStrideBytes;  /* skip to next source channel */
-
-            /* advance dest ptr for next iteration */
-            hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                    framesToCopy * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-        }
-
-        /* advance callers source pointer (buffer) */
-        *buffer = ((unsigned char *)*buffer) +
-                framesToCopy * bp->outputChannelCount * bp->bytesPerUserOutputSample;
-
-    }
-    else
-    {
-        /* user output is not interleaved */
-        
-        nonInterleavedSrcPtrs = (void**)*buffer;
-
-        srcSampleStrideSamples = 1;
-        
-        for( i=0; i<bp->outputChannelCount; ++i )
-        {
-            srcBytePtr = (unsigned char*)nonInterleavedSrcPtrs[i];
-            
-            bp->outputConverter(    hostOutputChannels[i].data,
-                                    hostOutputChannels[i].stride,
-                                    srcBytePtr, srcSampleStrideSamples,
-                                    framesToCopy, &bp->ditherGenerator );
-
-
-            /* advance callers source pointer (nonInterleavedSrcPtrs[i]) */
-            srcBytePtr += bp->bytesPerUserOutputSample * framesToCopy;
-            nonInterleavedSrcPtrs[i] = srcBytePtr;
-            
-            /* advance dest ptr for next iteration */
-            hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                    framesToCopy * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-        }
-    }
-
-    bp->hostOutputFrameCount[0] += framesToCopy;
-    
-    return framesToCopy;
-}
-
-
-unsigned long PaUtil_ZeroOutput( PaUtilBufferProcessor* bp, unsigned long frameCount )
-{
-    PaUtilChannelDescriptor *hostOutputChannels;
-    unsigned int framesToZero;
-    unsigned int i;
-
-    hostOutputChannels = bp->hostOutputChannels[0];
-    framesToZero = PA_MIN_( bp->hostOutputFrameCount[0], frameCount );
-
-    for( i=0; i<bp->outputChannelCount; ++i )
-    {
-        bp->outputZeroer(   hostOutputChannels[i].data,
-                            hostOutputChannels[i].stride,
-                            framesToZero );
-
-
-        /* advance dest ptr for next iteration */
-        hostOutputChannels[i].data = ((unsigned char*)hostOutputChannels[i].data) +
-                framesToZero * hostOutputChannels[i].stride * bp->bytesPerHostOutputSample;
-    }
-
-    bp->hostOutputFrameCount[0] += framesToZero;
-    
-    return framesToZero;
-}
diff --git a/external/portaudio2007/pa_process.h b/external/portaudio2007/pa_process.h
deleted file mode 100644
index 89584bc..0000000
--- a/external/portaudio2007/pa_process.h
+++ /dev/null
@@ -1,750 +0,0 @@
-#ifndef PA_PROCESS_H
-#define PA_PROCESS_H
-/*
- * $Id: pa_process.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library callback buffer processing adapters
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Phil Burk, Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
- 
-/** @file
- @ingroup common_src
-
- @brief Buffer Processor prototypes. A Buffer Processor performs buffer length
- adaption, coordinates sample format conversion, and interleaves/deinterleaves
- channels.
-
- <h3>Overview</h3>
-
- The "Buffer Processor" (PaUtilBufferProcessor) manages conversion of audio
- data from host buffers to user buffers and back again. Where required, the
- buffer processor takes care of converting between host and user sample formats,
- interleaving and deinterleaving multichannel buffers, and adapting between host
- and user buffers with different lengths. The buffer processor may be used with
- full and half duplex streams, for both callback streams and blocking read/write
- streams.
-
- One of the important capabilities provided by the buffer processor is
- the ability to adapt between user and host buffer sizes of different lengths
- with minimum latency. Although this task is relatively easy to perform when
- the host buffer size is an integer multiple of the user buffer size, the
- problem is more complicated when this is not the case - especially for
- full-duplex callback streams. Where necessary the adaption is implemented by
- internally buffering some input and/or output data. The buffer adation
- algorithm used by the buffer processor was originally implemented by
- Stephan Letz for the ASIO version of PortAudio, and is described in his
- Callback_adaption_.pdf which is included in the distribution.
-
- The buffer processor performs sample conversion using the functions provided
- by pa_converters.c.
-
- The following sections provide an overview of how to use the buffer processor.
- Interested readers are advised to consult the host API implementations for
- examples of buffer processor usage.
- 
-
- <h4>Initialization, resetting and termination</h4>
-
- When a stream is opened, the buffer processor should be initialized using
- PaUtil_InitializeBufferProcessor. This function initializes internal state
- and allocates temporary buffers as neccesary according to the supplied
- configuration parameters. Some of the parameters correspond to those requested
- by the user in their call to Pa_OpenStream(), others reflect the requirements
- of the host API implementation - they indicate host buffer sizes, formats,
- and the type of buffering which the Host API uses. The buffer processor should
- be initialized for callback streams and blocking read/write streams.
-
- Call PaUtil_ResetBufferProcessor to clear any sample data which is present
- in the buffer processor before starting to use it (for example when
- Pa_StartStream is called).
-
- When the buffer processor is no longer used call
- PaUtil_TerminateBufferProcessor.
-
- 
- <h4>Using the buffer processor for a callback stream</h4>
-
- The buffer processor's role in a callback stream is to take host input buffers
- process them with the stream callback, and fill host output buffers. For a
- full duplex stream, the buffer processor handles input and output simultaneously
- due to the requirements of the minimum-latency buffer adation algorithm.
-
- When a host buffer becomes available, the implementation should call
- the buffer processor to process the buffer. The buffer processor calls the
- stream callback to consume and/or produce audio data as necessary. The buffer
- processor will convert sample formats, interleave/deinterleave channels,
- and slice or chunk the data to the appropriate buffer lengths according to
- the requirements of the stream callback and the host API.
-
- To process a host buffer (or a pair of host buffers for a full-duplex stream)
- use the following calling sequence:
-
- -# Call PaUtil_BeginBufferProcessing
- -# For a stream which takes input:
-    - Call PaUtil_SetInputFrameCount with the number of frames in the host input
-        buffer.
-    - Call one of the following functions one or more times to tell the
-        buffer processor about the host input buffer(s): PaUtil_SetInputChannel,
-        PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel.
-        Which function you call will depend on whether the host buffer(s) are
-        interleaved or not.
-    - If the available host data is split accross two buffers (for example a
-        data range at the end of a circular buffer and another range at the
-        beginning of the circular buffer), also call
-        PaUtil_Set2ndInputFrameCount, PaUtil_Set2ndInputChannel,
-        PaUtil_Set2ndInterleavedInputChannels,
-        PaUtil_Set2ndNonInterleavedInputChannel as necessary to tell the buffer
-        processor about the second buffer.
- -# For a stream which generates output:
-    - Call PaUtil_SetOutputFrameCount with the number of frames in the host
-        output buffer.
-    - Call one of the following functions one or more times to tell the
-        buffer processor about the host output buffer(s): PaUtil_SetOutputChannel,
-        PaUtil_SetInterleavedOutputChannels, PaUtil_SetNonInterleavedOutputChannel.
-        Which function you call will depend on whether the host buffer(s) are
-        interleaved or not.
-    - If the available host output buffer space is split accross two buffers
-        (for example a data range at the end of a circular buffer and another
-        range at the beginning of the circular buffer), call
-        PaUtil_Set2ndOutputFrameCount, PaUtil_Set2ndOutputChannel,
-        PaUtil_Set2ndInterleavedOutputChannels,
-        PaUtil_Set2ndNonInterleavedOutputChannel as necessary to tell the buffer
-        processor about the second buffer.
- -# Call PaUtil_EndBufferProcessing, this function performs the actual data
-    conversion and processing.
-
-
- <h4>Using the buffer processor for a blocking read/write stream</h4>
-
- Blocking read/write streams use the buffer processor to convert and copy user
- output data to a host buffer, and to convert and copy host input data to
- the user's buffer. The buffer processor does not perform any buffer adaption.
- When using the buffer processor in a blocking read/write stream the input and
- output conversion are performed separately by the PaUtil_CopyInput and
- PaUtil_CopyOutput functions.
-
- To copy data from a host input buffer to the buffer(s) which the user supplies
- to Pa_ReadStream, use the following calling sequence.
-
- - Repeat the following three steps until the user buffer(s) have been filled
-    with samples from the host input buffers:
-     -# Call PaUtil_SetInputFrameCount with the number of frames in the host
-        input buffer.
-     -# Call one of the following functions one or more times to tell the
-        buffer processor about the host input buffer(s): PaUtil_SetInputChannel,
-        PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel.
-        Which function you call will depend on whether the host buffer(s) are
-        interleaved or not.
-     -# Call PaUtil_CopyInput with the user buffer pointer (or a copy of the
-        array of buffer pointers for a non-interleaved stream) passed to
-        Pa_ReadStream, along with the number of frames in the user buffer(s).
-        Be careful to pass a <i>copy</i> of the user buffer pointers to
-        PaUtil_CopyInput because PaUtil_CopyInput advances the pointers to
-        the start of the next region to copy.
- - PaUtil_CopyInput will not copy more data than is available in the
-    host buffer(s), so the above steps need to be repeated until the user
-    buffer(s) are full.
-
- 
- To copy data to the host output buffer from the user buffers(s) supplied
- to Pa_WriteStream use the following calling sequence.
-
- - Repeat the following three steps until all frames from the user buffer(s)
-    have been copied to the host API:
-     -# Call PaUtil_SetOutputFrameCount with the number of frames in the host
-        output buffer.
-     -# Call one of the following functions one or more times to tell the
-        buffer processor about the host output buffer(s): PaUtil_SetOutputChannel,
-        PaUtil_SetInterleavedOutputChannels, PaUtil_SetNonInterleavedOutputChannel.
-        Which function you call will depend on whether the host buffer(s) are
-        interleaved or not.
-     -# Call PaUtil_CopyOutput with the user buffer pointer (or a copy of the
-        array of buffer pointers for a non-interleaved stream) passed to
-        Pa_WriteStream, along with the number of frames in the user buffer(s).
-        Be careful to pass a <i>copy</i> of the user buffer pointers to 
-        PaUtil_CopyOutput because PaUtil_CopyOutput advances the pointers to
-        the start of the next region to copy.
- - PaUtil_CopyOutput will not copy more data than fits in the host buffer(s),
-    so the above steps need to be repeated until all user data is copied.
-*/
-
-
-#include "portaudio.h"
-#include "pa_converters.h"
-#include "pa_dither.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/** @brief Mode flag passed to PaUtil_InitializeBufferProcessor indicating the type
- of buffering that the host API uses.
-
- The mode used depends on whether the host API or the implementation manages
- the buffers, and how these buffers are used (scatter gather, circular buffer).
-*/
-typedef enum {
-/** The host buffer size is a fixed known size. */
-    paUtilFixedHostBufferSize,
-
-/** The host buffer size may vary, but has a known maximum size. */
-    paUtilBoundedHostBufferSize,
-
-/** Nothing is known about the host buffer size. */
-    paUtilUnknownHostBufferSize,
-
-/** The host buffer size varies, and the client does not require the buffer
- processor to consume all of the input and fill all of the output buffer. This
- is useful when the implementation has access to the host API's circular buffer
- and only needs to consume/fill some of it, not necessarily all of it, with each
- call to the buffer processor. This is the only mode where
- PaUtil_EndBufferProcessing() may not consume the whole buffer.
-*/
-    paUtilVariableHostBufferSizePartialUsageAllowed
-}PaUtilHostBufferSizeMode;
-
-
-/** @brief An auxilliary data structure used internally by the buffer processor
- to represent host input and output buffers. */
-typedef struct PaUtilChannelDescriptor{
-    void *data;
-    unsigned int stride;  /**< stride in samples, not bytes */
-}PaUtilChannelDescriptor;
-
-
-/** @brief The main buffer processor data structure.
-
- Allocate one of these, initialize it with PaUtil_InitializeBufferProcessor
- and terminate it with PaUtil_TerminateBufferProcessor.
-*/
-typedef struct {
-    unsigned long framesPerUserBuffer;
-    unsigned long framesPerHostBuffer;
-
-    PaUtilHostBufferSizeMode hostBufferSizeMode;
-    int useNonAdaptingProcess;
-    unsigned long framesPerTempBuffer;
-
-    unsigned int inputChannelCount;
-    unsigned int bytesPerHostInputSample;
-    unsigned int bytesPerUserInputSample;
-    int userInputIsInterleaved;
-    PaUtilConverter *inputConverter;
-    PaUtilZeroer *inputZeroer;
-    
-    unsigned int outputChannelCount;
-    unsigned int bytesPerHostOutputSample;
-    unsigned int bytesPerUserOutputSample;
-    int userOutputIsInterleaved;
-    PaUtilConverter *outputConverter;
-    PaUtilZeroer *outputZeroer;
-
-    unsigned long initialFramesInTempInputBuffer;
-    unsigned long initialFramesInTempOutputBuffer;
-
-    void *tempInputBuffer;          /**< used for slips, block adaption, and conversion. */
-    void **tempInputBufferPtrs;     /**< storage for non-interleaved buffer pointers, NULL for interleaved user input */
-    unsigned long framesInTempInputBuffer; /**< frames remaining in input buffer from previous adaption iteration */
-
-    void *tempOutputBuffer;         /**< used for slips, block adaption, and conversion. */
-    void **tempOutputBufferPtrs;    /**< storage for non-interleaved buffer pointers, NULL for interleaved user output */
-    unsigned long framesInTempOutputBuffer; /**< frames remaining in input buffer from previous adaption iteration */
-
-    PaStreamCallbackTimeInfo *timeInfo;
-
-    PaStreamCallbackFlags callbackStatusFlags;
-
-    unsigned long hostInputFrameCount[2];
-    PaUtilChannelDescriptor *hostInputChannels[2]; /**< pointers to arrays of channel descriptors.
-                                                        pointers are NULL for half-duplex output processing.
-                                                        hostInputChannels[i].data is NULL when the caller
-                                                        calls PaUtil_SetNoInput()
-                                                        */
-    unsigned long hostOutputFrameCount[2];
-    PaUtilChannelDescriptor *hostOutputChannels[2]; /**< pointers to arrays of channel descriptors.
-                                                         pointers are NULL for half-duplex input processing.
-                                                         hostOutputChannels[i].data is NULL when the caller
-                                                         calls PaUtil_SetNoOutput()
-                                                         */
-
-    PaUtilTriangularDitherGenerator ditherGenerator;
-
-    double samplePeriod;
-
-    PaStreamCallback *streamCallback;
-    void *userData;
-} PaUtilBufferProcessor;
-
-
-/** @name Initialization, termination, resetting and info */
-/*@{*/
-
-/** Initialize a buffer processor's representation stored in a
- PaUtilBufferProcessor structure. Be sure to call
- PaUtil_TerminateBufferProcessor after finishing with a buffer processor.
-
- @param bufferProcessor The buffer processor structure to initialize.
-
- @param inputChannelCount The number of input channels as passed to
- Pa_OpenStream or 0 for an output-only stream.
-
- @param userInputSampleFormat Format of user input samples, as passed to
- Pa_OpenStream. This parameter is ignored for ouput-only streams.
- 
- @param hostInputSampleFormat Format of host input samples. This parameter is
- ignored for output-only streams. See note about host buffer interleave below.
-
- @param outputChannelCount The number of output channels as passed to
- Pa_OpenStream or 0 for an input-only stream.
-
- @param userOutputSampleFormat Format of user output samples, as passed to
- Pa_OpenStream. This parameter is ignored for input-only streams.
- 
- @param hostOutputSampleFormat Format of host output samples. This parameter is
- ignored for input-only streams. See note about host buffer interleave below.
-
- @param sampleRate Sample rate of the stream. The more accurate this is the
- better - it is used for updating time stamps when adapting buffers.
- 
- @param streamFlags Stream flags as passed to Pa_OpenStream, this parameter is
- used for selecting special sample conversion options such as clipping and
- dithering.
- 
- @param framesPerUserBuffer Number of frames per user buffer, as requested
- by the framesPerBuffer parameter to Pa_OpenStream. This parameter may be
- zero to indicate that the user will accept any (and varying) buffer sizes.
-
- @param framesPerHostBuffer Specifies the number of frames per host buffer
- for the fixed buffer size mode, and the maximum number of frames
- per host buffer for the bounded host buffer size mode. It is ignored for
- the other modes.
-
- @param hostBufferSizeMode A mode flag indicating the size variability of
- host buffers that will be passed to the buffer processor. See
- PaUtilHostBufferSizeMode for further details.
- 
- @param streamCallback The user stream callback passed to Pa_OpenStream.
-
- @param userData The user data field passed to Pa_OpenStream.
-    
- @note The interleave flag is ignored for host buffer formats. Host
- interleave is determined by the use of different SetInput and SetOutput
- functions.
-
- @return An error code indicating whether the initialization was successful.
- If the error code is not PaNoError, the buffer processor was not initialized
- and should not be used.
- 
- @see Pa_OpenStream, PaUtilHostBufferSizeMode, PaUtil_TerminateBufferProcessor
-*/
-PaError PaUtil_InitializeBufferProcessor( PaUtilBufferProcessor* bufferProcessor,
-            int inputChannelCount, PaSampleFormat userInputSampleFormat,
-            PaSampleFormat hostInputSampleFormat,
-            int outputChannelCount, PaSampleFormat userOutputSampleFormat,
-            PaSampleFormat hostOutputSampleFormat,
-            double sampleRate,
-            PaStreamFlags streamFlags,
-            unsigned long framesPerUserBuffer, /* 0 indicates don't care */
-            unsigned long framesPerHostBuffer,
-            PaUtilHostBufferSizeMode hostBufferSizeMode,
-            PaStreamCallback *streamCallback, void *userData );
-
-
-/** Terminate a buffer processor's representation. Deallocates any temporary
- buffers allocated by PaUtil_InitializeBufferProcessor.
- 
- @param bufferProcessor The buffer processor structure to terminate.
-
- @see PaUtil_InitializeBufferProcessor.
-*/
-void PaUtil_TerminateBufferProcessor( PaUtilBufferProcessor* bufferProcessor );
-
-
-/** Clear any internally buffered data. If you call
- PaUtil_InitializeBufferProcessor in your OpenStream routine, make sure you
- call PaUtil_ResetBufferProcessor in your StartStream call.
-
- @param bufferProcessor The buffer processor to reset.
-*/
-void PaUtil_ResetBufferProcessor( PaUtilBufferProcessor* bufferProcessor );
-
-
-/** Retrieve the input latency of a buffer processor.
-
- @param bufferProcessor The buffer processor examine.
-
- @return The input latency introduced by the buffer processor, in frames.
-
- @see PaUtil_GetBufferProcessorOutputLatency
-*/
-unsigned long PaUtil_GetBufferProcessorInputLatency( PaUtilBufferProcessor* bufferProcessor );
-
-/** Retrieve the output latency of a buffer processor.
-
- @param bufferProcessor The buffer processor examine.
-
- @return The output latency introduced by the buffer processor, in frames.
-
- @see PaUtil_GetBufferProcessorInputLatency
-*/
-unsigned long PaUtil_GetBufferProcessorOutputLatency( PaUtilBufferProcessor* bufferProcessor );
-
-/*@}*/
-
-
-/** @name Host buffer pointer configuration
-
- Functions to set host input and output buffers, used by both callback streams
- and blocking read/write streams.
-*/
-/*@{*/ 
-
-
-/** Set the number of frames in the input host buffer(s) specified by the
- PaUtil_Set*InputChannel functions.
-
- @param bufferProcessor The buffer processor.
-
- @param frameCount The number of host input frames. A 0 frameCount indicates to
- use the framesPerHostBuffer value passed to PaUtil_InitializeBufferProcessor.
-
- @see PaUtil_SetNoInput, PaUtil_SetInputChannel,
- PaUtil_SetInterleavedInputChannels, PaUtil_SetNonInterleavedInputChannel
-*/
-void PaUtil_SetInputFrameCount( PaUtilBufferProcessor* bufferProcessor,
-        unsigned long frameCount );
-
-        
-/** Indicate that no input is avalable. This function should be used when
- priming the output of a full-duplex stream opened with the
- paPrimeOutputBuffersUsingStreamCallback flag. Note that it is not necessary
- to call this or any othe PaUtil_Set*Input* functions for ouput-only streams.
-
- @param bufferProcessor The buffer processor.
-*/
-void PaUtil_SetNoInput( PaUtilBufferProcessor* bufferProcessor );
-
-
-/** Provide the buffer processor with a pointer to a host input channel.
-
- @param bufferProcessor The buffer processor.
- @param channel The channel number.
- @param data The buffer.
- @param stride The stride from one sample to the next, in samples. For
- interleaved host buffers, the stride will usually be the same as the number of
- channels in the buffer.
-*/
-void PaUtil_SetInputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data, unsigned int stride );
-
-
-/** Provide the buffer processor with a pointer to an number of interleaved
- host input channels.
-
- @param bufferProcessor The buffer processor.
- @param firstChannel The first channel number.
- @param data The buffer.
- @param channelCount The number of interleaved channels in the buffer. If
- channelCount is zero, the number of channels specified to
- PaUtil_InitializeBufferProcessor will be used.
-*/
-void PaUtil_SetInterleavedInputChannels( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int firstChannel, void *data, unsigned int channelCount );
-
-
-/** Provide the buffer processor with a pointer to one non-interleaved host
- output channel.
-
- @param bufferProcessor The buffer processor.
- @param channel The channel number.
- @param data The buffer.
-*/
-void PaUtil_SetNonInterleavedInputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data );
-
-
-/** Use for the second buffer half when the input buffer is split in two halves.
- @see PaUtil_SetInputFrameCount
-*/
-void PaUtil_Set2ndInputFrameCount( PaUtilBufferProcessor* bufferProcessor,
-        unsigned long frameCount );
-
-/** Use for the second buffer half when the input buffer is split in two halves.
- @see PaUtil_SetInputChannel
-*/
-void PaUtil_Set2ndInputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data, unsigned int stride );
-
-/** Use for the second buffer half when the input buffer is split in two halves.
- @see PaUtil_SetInterleavedInputChannels
-*/
-void PaUtil_Set2ndInterleavedInputChannels( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int firstChannel, void *data, unsigned int channelCount );
-
-/** Use for the second buffer half when the input buffer is split in two halves.
- @see PaUtil_SetNonInterleavedInputChannel
-*/
-void PaUtil_Set2ndNonInterleavedInputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data );
-
-        
-/** Set the number of frames in the output host buffer(s) specified by the
- PaUtil_Set*OutputChannel functions.
-
- @param bufferProcessor The buffer processor.
-
- @param frameCount The number of host output frames. A 0 frameCount indicates to
- use the framesPerHostBuffer value passed to PaUtil_InitializeBufferProcessor.
-
- @see PaUtil_SetOutputChannel, PaUtil_SetInterleavedOutputChannels,
- PaUtil_SetNonInterleavedOutputChannel
-*/
-void PaUtil_SetOutputFrameCount( PaUtilBufferProcessor* bufferProcessor,
-        unsigned long frameCount );
-
-
-/** Indicate that the output will be discarded. This function should be used
- when implementing the paNeverDropInput mode for full duplex streams.
-
- @param bufferProcessor The buffer processor.
-*/
-void PaUtil_SetNoOutput( PaUtilBufferProcessor* bufferProcessor );
-
-
-/** Provide the buffer processor with a pointer to a host output channel.
-
- @param bufferProcessor The buffer processor.
- @param channel The channel number.
- @param data The buffer.
- @param stride The stride from one sample to the next, in samples. For
- interleaved host buffers, the stride will usually be the same as the number of
- channels in the buffer.
-*/
-void PaUtil_SetOutputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data, unsigned int stride );
-
-
-/** Provide the buffer processor with a pointer to a number of interleaved
- host output channels.
-
- @param bufferProcessor The buffer processor.
- @param firstChannel The first channel number.
- @param data The buffer.
- @param channelCount The number of interleaved channels in the buffer. If
- channelCount is zero, the number of channels specified to
- PaUtil_InitializeBufferProcessor will be used.
-*/
-void PaUtil_SetInterleavedOutputChannels( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int firstChannel, void *data, unsigned int channelCount );
-
-        
-/** Provide the buffer processor with a pointer to one non-interleaved host
- output channel.
-
- @param bufferProcessor The buffer processor.
- @param channel The channel number.
- @param data The buffer.
-*/
-void PaUtil_SetNonInterleavedOutputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data );
-
-
-/** Use for the second buffer half when the output buffer is split in two halves.
- @see PaUtil_SetOutputFrameCount
-*/
-void PaUtil_Set2ndOutputFrameCount( PaUtilBufferProcessor* bufferProcessor,
-        unsigned long frameCount );
-
-/** Use for the second buffer half when the output buffer is split in two halves.
- @see PaUtil_SetOutputChannel
-*/
-void PaUtil_Set2ndOutputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data, unsigned int stride );
-
-/** Use for the second buffer half when the output buffer is split in two halves.
- @see PaUtil_SetInterleavedOutputChannels
-*/
-void PaUtil_Set2ndInterleavedOutputChannels( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int firstChannel, void *data, unsigned int channelCount );
-
-/** Use for the second buffer half when the output buffer is split in two halves.
- @see PaUtil_SetNonInterleavedOutputChannel
-*/
-void PaUtil_Set2ndNonInterleavedOutputChannel( PaUtilBufferProcessor* bufferProcessor,
-        unsigned int channel, void *data );
-
-/*@}*/
-
-
-/** @name Buffer processing functions for callback streams
-*/
-/*@{*/
-
-/** Commence processing a host buffer (or a pair of host buffers in the
- full-duplex case) for a callback stream.
-
- @param bufferProcessor The buffer processor.
-
- @param timeInfo Timing information for the first sample of the host
- buffer(s). This information may be adjusted when buffer adaption is being
- performed.
-
- @param callbackStatusFlags Flags indicating whether underruns and overruns
- have occurred since the last time the buffer processor was called.
-*/
-void PaUtil_BeginBufferProcessing( PaUtilBufferProcessor* bufferProcessor,
-        PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags callbackStatusFlags );
-
-        
-/** Finish processing a host buffer (or a pair of host buffers in the
- full-duplex case) for a callback stream.
-
- @param bufferProcessor The buffer processor.
- 
- @param callbackResult On input, indicates a previous callback result, and on
- exit, the result of the user stream callback, if it is called.
- On entry callbackResult should contain one of { paContinue, paComplete, or
- paAbort}. If paComplete is passed, the stream callback will not be called
- but any audio that was generated by previous stream callbacks will be copied
- to the output buffer(s). You can check whether the buffer processor's internal
- buffer is empty by calling PaUtil_IsBufferProcessorOutputEmpty.
-
- If the stream callback is called its result is stored in *callbackResult. If
- the stream callback returns paComplete or paAbort, all output buffers will be
- full of valid data - some of which may be zeros to acount for data that
- wasn't generated by the terminating callback.
-
- @return The number of frames processed. This usually corresponds to the
- number of frames specified by the PaUtil_Set*FrameCount functions, exept in
- the paUtilVariableHostBufferSizePartialUsageAllowed buffer size mode when a
- smaller value may be returned.
-*/
-unsigned long PaUtil_EndBufferProcessing( PaUtilBufferProcessor* bufferProcessor,
-        int *callbackResult );
-
-
-/** Determine whether any callback generated output remains in the bufffer
- processor's internal buffers. This method may be used to determine when to
- continue calling PaUtil_EndBufferProcessing() after the callback has returned
- a callbackResult of paComplete.
-
- @param bufferProcessor The buffer processor.
- 
- @return Returns non-zero when callback generated output remains in the internal
- buffer and zero (0) when there internal buffer contains no callback generated
- data.
-*/
-int PaUtil_IsBufferProcessorOutputEmpty( PaUtilBufferProcessor* bufferProcessor );
-
-/*@}*/
-
-
-/** @name Buffer processing functions for blocking read/write streams
-*/
-/*@{*/
-
-/** Copy samples from host input channels set up by the PaUtil_Set*InputChannels
- functions to a user supplied buffer. This function is intended for use with
- blocking read/write streams. Copies the minimum of the number of
- user frames (specified by the frameCount parameter) and the number of available
- host frames (specified in a previous call to SetInputFrameCount()).
-
- @param bufferProcessor The buffer processor.
-
- @param buffer A pointer to the user buffer pointer, or a pointer to a pointer
- to an array of user buffer pointers for a non-interleaved stream. It is
- important that this parameter points to a copy of the user buffer pointers,
- not to the actual user buffer pointers, because this function updates the
- pointers before returning.
-
- @param frameCount The number of frames of data in the buffer(s) pointed to by
- the buffer parameter.
-
- @return The number of frames copied. The buffer pointer(s) pointed to by the
- buffer parameter are advanced to point to the frame(s) following the last one
- filled.
-*/
-unsigned long PaUtil_CopyInput( PaUtilBufferProcessor* bufferProcessor,
-        void **buffer, unsigned long frameCount );
-
-
-/* Copy samples from a user supplied buffer to host output channels set up by
- the PaUtil_Set*OutputChannels functions. This function is intended for use with
- blocking read/write streams. Copies the minimum of the number of
- user frames (specified by the frameCount parameter) and the number of
- host frames (specified in a previous call to SetOutputFrameCount()).
-
- @param bufferProcessor The buffer processor.
-
- @param buffer A pointer to the user buffer pointer, or a pointer to a pointer
- to an array of user buffer pointers for a non-interleaved stream. It is
- important that this parameter points to a copy of the user buffer pointers,
- not to the actual user buffer pointers, because this function updates the
- pointers before returning.
-
- @param frameCount The number of frames of data in the buffer(s) pointed to by
- the buffer parameter.
-
- @return The number of frames copied. The buffer pointer(s) pointed to by the
- buffer parameter are advanced to point to the frame(s) following the last one
- copied.
-*/
-unsigned long PaUtil_CopyOutput( PaUtilBufferProcessor* bufferProcessor,
-        const void ** buffer, unsigned long frameCount );
-
-
-/* Zero samples in host output channels set up by the PaUtil_Set*OutputChannels
- functions. This function is useful for flushing streams.
- Zeros the minimum of frameCount and the number of host frames specified in a
- previous call to SetOutputFrameCount().
-
- @param bufferProcessor The buffer processor.
-
- @param frameCount The maximum number of frames to zero.
- 
- @return The number of frames zeroed.
-*/
-unsigned long PaUtil_ZeroOutput( PaUtilBufferProcessor* bufferProcessor,
-        unsigned long frameCount );
-
-
-/*@}*/
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_PROCESS_H */
diff --git a/external/portaudio2007/pa_ringbuffer.c b/external/portaudio2007/pa_ringbuffer.c
deleted file mode 100644
index f4e1201..0000000
--- a/external/portaudio2007/pa_ringbuffer.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * $Id: pa_ringbuffer.c 1240 2007-07-17 13:05:07Z bjornroche $
- * Portable Audio I/O Library
- * Ring Buffer utility.
- *
- * Author: Phil Burk, http://www.softsynth.com
- * modified for SMP safety on Mac OS X by Bjorn Roche
- * modified for SMP safety on Linux by Leland Lucius
- * also, allowed for const where possible
- * Note that this is safe only for a single-thread reader and a
- * single-thread writer.
- *
- * This program uses the PortAudio Portable Audio Library.
- * For more information see: http://www.portaudio.com
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup common_src
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include "pa_ringbuffer.h"
-#include <string.h>
-
-/****************
- * First, we'll define some memory barrier primitives based on the system.
- * right now only OS X, FreeBSD, and Linux are supported. In addition to providing
- * memory barriers, these functions should ensure that data cached in registers
- * is written out to cache where it can be snooped by other CPUs. (ie, the volatile
- * keyword should not be required)
- *
- * the primitives that must be defined are:
- *
- * PaUtil_FullMemoryBarrier()
- * PaUtil_ReadMemoryBarrier()
- * PaUtil_WriteMemoryBarrier()
- *
- ****************/
-
-#if defined(__APPLE__)
-#   include <libkern/OSAtomic.h>
-    /* Here are the memory barrier functions. Mac OS X only provides
-       full memory barriers, so the three types of barriers are the same,
-       however, these barriers are superior to compiler-based ones. */
-#   define PaUtil_FullMemoryBarrier()  OSMemoryBarrier()
-#   define PaUtil_ReadMemoryBarrier()  OSMemoryBarrier()
-#   define PaUtil_WriteMemoryBarrier() OSMemoryBarrier()
-#elif defined(__GNUC__)
-    /* GCC >= 4.1 has built-in intrinsics. We'll use those */
-#   if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
-#      define PaUtil_FullMemoryBarrier()  __sync_synchronize()
-#      define PaUtil_ReadMemoryBarrier()  __sync_synchronize()
-#      define PaUtil_WriteMemoryBarrier() __sync_synchronize()
-    /* as a fallback, GCC understands volatile asm and "memory" to mean it
-     * should not reorder memory read/writes */
-#   elif defined( __PPC__ )
-#      define PaUtil_FullMemoryBarrier()  asm volatile("sync":::"memory")
-#      define PaUtil_ReadMemoryBarrier()  asm volatile("sync":::"memory")
-#      define PaUtil_WriteMemoryBarrier() asm volatile("sync":::"memory")
-#   elif defined( __i386__ ) || defined( __i486__ ) || defined( __i586__ ) || defined( __i686__ ) || defined( __x86_64__ )
-#      define PaUtil_FullMemoryBarrier()  asm volatile("mfence":::"memory")
-#      define PaUtil_ReadMemoryBarrier()  asm volatile("lfence":::"memory")
-#      define PaUtil_WriteMemoryBarrier() asm volatile("sfence":::"memory")
-#   else
-#      ifdef ALLOW_SMP_DANGERS
-#         warning Memory barriers not defined on this system or system unknown
-#         warning For SMP safety, you should fix this.
-#         define PaUtil_FullMemoryBarrier()
-#         define PaUtil_ReadMemoryBarrier()
-#         define PaUtil_WriteMemoryBarrier()
-#      else
-#         error Memory barriers are not defined on this system. You can still compile by defining ALLOW_SMP_DANGERS, but SMP safety will not be guaranteed.
-#      endif
-#   endif
-#else
-#   ifdef ALLOW_SMP_DANGERS
-#      warning Memory barriers not defined on this system or system unknown
-#      warning For SMP safety, you should fix this.
-#      define PaUtil_FullMemoryBarrier()
-#      define PaUtil_ReadMemoryBarrier()
-#      define PaUtil_WriteMemoryBarrier()
-#   else
-#      error Memory barriers are not defined on this system. You can still compile by defining ALLOW_SMP_DANGERS, but SMP safety will not be guaranteed.
-#   endif
-#endif
-
-/***************************************************************************
- * Initialize FIFO.
- * numBytes must be power of 2, returns -1 if not.
- */
-long PaUtil_InitializeRingBuffer( PaUtilRingBuffer *rbuf, long numBytes, void *dataPtr )
-{
-    if( ((numBytes-1) & numBytes) != 0) return -1; /* Not Power of two. */
-    rbuf->bufferSize = numBytes;
-    rbuf->buffer = (char *)dataPtr;
-    PaUtil_FlushRingBuffer( rbuf );
-    rbuf->bigMask = (numBytes*2)-1;
-    rbuf->smallMask = (numBytes)-1;
-    return 0;
-}
-
-/***************************************************************************
-** Return number of bytes available for reading. */
-long PaUtil_GetRingBufferReadAvailable( PaUtilRingBuffer *rbuf )
-{
-    PaUtil_ReadMemoryBarrier();
-    return ( (rbuf->writeIndex - rbuf->readIndex) & rbuf->bigMask );
-}
-/***************************************************************************
-** Return number of bytes available for writing. */
-long PaUtil_GetRingBufferWriteAvailable( PaUtilRingBuffer *rbuf )
-{
-    /* Since we are calling PaUtil_GetRingBufferReadAvailable, we don't need an aditional MB */
-    return ( rbuf->bufferSize - PaUtil_GetRingBufferReadAvailable(rbuf));
-}
-
-/***************************************************************************
-** Clear buffer. Should only be called when buffer is NOT being read. */
-void PaUtil_FlushRingBuffer( PaUtilRingBuffer *rbuf )
-{
-    rbuf->writeIndex = rbuf->readIndex = 0;
-}
-
-/***************************************************************************
-** Get address of region(s) to which we can write data.
-** If the region is contiguous, size2 will be zero.
-** If non-contiguous, size2 will be the size of second region.
-** Returns room available to be written or numBytes, whichever is smaller.
-*/
-long PaUtil_GetRingBufferWriteRegions( PaUtilRingBuffer *rbuf, long numBytes,
-                                       void **dataPtr1, long *sizePtr1,
-                                       void **dataPtr2, long *sizePtr2 )
-{
-    long   index;
-    long   available = PaUtil_GetRingBufferWriteAvailable( rbuf );
-    if( numBytes > available ) numBytes = available;
-    /* Check to see if write is not contiguous. */
-    index = rbuf->writeIndex & rbuf->smallMask;
-    if( (index + numBytes) > rbuf->bufferSize )
-    {
-        /* Write data in two blocks that wrap the buffer. */
-        long   firstHalf = rbuf->bufferSize - index;
-        *dataPtr1 = &rbuf->buffer[index];
-        *sizePtr1 = firstHalf;
-        *dataPtr2 = &rbuf->buffer[0];
-        *sizePtr2 = numBytes - firstHalf;
-    }
-    else
-    {
-        *dataPtr1 = &rbuf->buffer[index];
-        *sizePtr1 = numBytes;
-        *dataPtr2 = NULL;
-        *sizePtr2 = 0;
-    }
-    return numBytes;
-}
-
-
-/***************************************************************************
-*/
-long PaUtil_AdvanceRingBufferWriteIndex( PaUtilRingBuffer *rbuf, long numBytes )
-{
-    /* we need to ensure that previous writes are seen before we update the write index */
-    PaUtil_WriteMemoryBarrier();
-    return rbuf->writeIndex = (rbuf->writeIndex + numBytes) & rbuf->bigMask;
-}
-
-/***************************************************************************
-** Get address of region(s) from which we can read data.
-** If the region is contiguous, size2 will be zero.
-** If non-contiguous, size2 will be the size of second region.
-** Returns room available to be written or numBytes, whichever is smaller.
-*/
-long PaUtil_GetRingBufferReadRegions( PaUtilRingBuffer *rbuf, long numBytes,
-                                void **dataPtr1, long *sizePtr1,
-                                void **dataPtr2, long *sizePtr2 )
-{
-    long   index;
-    long   available = PaUtil_GetRingBufferReadAvailable( rbuf );
-    if( numBytes > available ) numBytes = available;
-    /* Check to see if read is not contiguous. */
-    index = rbuf->readIndex & rbuf->smallMask;
-    if( (index + numBytes) > rbuf->bufferSize )
-    {
-        /* Write data in two blocks that wrap the buffer. */
-        long firstHalf = rbuf->bufferSize - index;
-        *dataPtr1 = &rbuf->buffer[index];
-        *sizePtr1 = firstHalf;
-        *dataPtr2 = &rbuf->buffer[0];
-        *sizePtr2 = numBytes - firstHalf;
-    }
-    else
-    {
-        *dataPtr1 = &rbuf->buffer[index];
-        *sizePtr1 = numBytes;
-        *dataPtr2 = NULL;
-        *sizePtr2 = 0;
-    }
-    return numBytes;
-}
-/***************************************************************************
-*/
-long PaUtil_AdvanceRingBufferReadIndex( PaUtilRingBuffer *rbuf, long numBytes )
-{
-    /* we need to ensure that previous writes are always seen before updating the index. */
-    PaUtil_WriteMemoryBarrier();
-    return rbuf->readIndex = (rbuf->readIndex + numBytes) & rbuf->bigMask;
-}
-
-/***************************************************************************
-** Return bytes written. */
-long PaUtil_WriteRingBuffer( PaUtilRingBuffer *rbuf, const void *data, long numBytes )
-{
-    long size1, size2, numWritten;
-    void *data1, *data2;
-    numWritten = PaUtil_GetRingBufferWriteRegions( rbuf, numBytes, &data1, &size1, &data2, &size2 );
-    if( size2 > 0 )
-    {
-
-        memcpy( data1, data, size1 );
-        data = ((char *)data) + size1;
-        memcpy( data2, data, size2 );
-    }
-    else
-    {
-        memcpy( data1, data, size1 );
-    }
-    PaUtil_AdvanceRingBufferWriteIndex( rbuf, numWritten );
-    return numWritten;
-}
-
-/***************************************************************************
-** Return bytes read. */
-long PaUtil_ReadRingBuffer( PaUtilRingBuffer *rbuf, void *data, long numBytes )
-{
-    long size1, size2, numRead;
-    void *data1, *data2;
-    numRead = PaUtil_GetRingBufferReadRegions( rbuf, numBytes, &data1, &size1, &data2, &size2 );
-    if( size2 > 0 )
-    {
-        memcpy( data, data1, size1 );
-        data = ((char *)data) + size1;
-        memcpy( data, data2, size2 );
-    }
-    else
-    {
-        memcpy( data, data1, size1 );
-    }
-    PaUtil_AdvanceRingBufferReadIndex( rbuf, numRead );
-    return numRead;
-}
diff --git a/external/portaudio2007/pa_ringbuffer.h b/external/portaudio2007/pa_ringbuffer.h
deleted file mode 100644
index b380889..0000000
--- a/external/portaudio2007/pa_ringbuffer.h
+++ /dev/null
@@ -1,198 +0,0 @@
-#ifndef PA_RINGBUFFER_H
-#define PA_RINGBUFFER_H
-/*
- * $Id: pa_ringbuffer.h 1151 2006-11-29 02:11:16Z leland_lucius $
- * Portable Audio I/O Library
- * Ring Buffer utility.
- *
- * Author: Phil Burk, http://www.softsynth.com
- * modified for SMP safety on OS X by Bjorn Roche.
- * also allowed for const where possible.
- * Note that this is safe only for a single-thread reader
- * and a single-thread writer.
- *
- * This program is distributed with the PortAudio Portable Audio Library.
- * For more information see: http://www.portaudio.com
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-typedef struct PaUtilRingBuffer
-{
-    long   bufferSize; /* Number of bytes in FIFO. Power of 2. Set by PaUtil_InitRingBuffer. */
-    long   writeIndex; /* Index of next writable byte. Set by PaUtil_AdvanceRingBufferWriteIndex. */
-    long   readIndex;  /* Index of next readable byte. Set by PaUtil_AdvanceRingBufferReadIndex. */
-    long   bigMask;    /* Used for wrapping indices with extra bit to distinguish full/empty. */
-    long   smallMask;  /* Used for fitting indices to buffer. */
-    char  *buffer;
-}PaUtilRingBuffer;
-
-/** Initialize Ring Buffer.
-
- @param rbuf The ring buffer.
-
- @param numBytes The number of bytes in the buffer and must be power of 2.
-
- @param dataPtr A pointer to a previously allocated area where the data
- will be maintained.  It must be numBytes long.
-
- @return -1 if numBytes is not a power of 2, otherwise 0.
-*/
-long PaUtil_InitializeRingBuffer( PaUtilRingBuffer *rbuf, long numBytes, void *dataPtr );
-
-/** Clear buffer. Should only be called when buffer is NOT being read.
-
- @param rbuf The ring buffer.
-*/
-void PaUtil_FlushRingBuffer( PaUtilRingBuffer *rbuf );
-
-/** Retrieve the number of bytes available in the ring buffer for writing.
-
- @param rbuf The ring buffer.
-
- @return The number of bytes available for writing.
-*/
-long PaUtil_GetRingBufferWriteAvailable( PaUtilRingBuffer *rbuf );
-
-/** Retrieve the number of bytes available in the ring buffer for reading.
-
- @param rbuf The ring buffer.
-
- @return The number of bytes available for reading.
-*/
-long PaUtil_GetRingBufferReadAvailable( PaUtilRingBuffer *rbuf );
-
-/** Write data to the ring buffer.
-
- @param rbuf The ring buffer.
-
- @param data The address of new data to write to the buffer.
-
- @param numBytes The number of bytes to be written.
-
- @return The number of bytes written.
-*/
-long PaUtil_WriteRingBuffer( PaUtilRingBuffer *rbuf, const void *data, long numBytes );
-
-/** Read data from the ring buffer.
-
- @param rbuf The ring buffer.
-
- @param data The address where the data should be stored.
-
- @param numBytes The number of bytes to be read.
-
- @return The number of bytes read.
-*/
-long PaUtil_ReadRingBuffer( PaUtilRingBuffer *rbuf, void *data, long numBytes );
-
-/** Get address of region(s) to which we can write data.
-
- @param rbuf The ring buffer.
-
- @param numBytes The number of bytes desired.
-
- @param dataPtr1 The address where the first (or only) region pointer will be
- stored.
-
- @param sizePtr1 The address where the first (or only) region length will be
- stored.
-
- @param dataPtr2 The address where the second region pointer will be stored if
- the first region is too small to satisfy numBytes.
-
- @param sizePtr2 The address where the second region length will be stored if
- the first region is too small to satisfy numBytes.
-
- @return The room available to be written or numBytes, whichever is smaller.
-*/
-long PaUtil_GetRingBufferWriteRegions( PaUtilRingBuffer *rbuf, long numBytes,
-                                       void **dataPtr1, long *sizePtr1,
-                                       void **dataPtr2, long *sizePtr2 );
-
-/** Advance the write index to the next location to be written.
-
- @param rbuf The ring buffer.
-
- @param numBytes The number of bytes to advance.
-
- @return The new position.
-*/
-long PaUtil_AdvanceRingBufferWriteIndex( PaUtilRingBuffer *rbuf, long numBytes );
-
-/** Get address of region(s) from which we can write data.
-
- @param rbuf The ring buffer.
-
- @param numBytes The number of bytes desired.
-
- @param dataPtr1 The address where the first (or only) region pointer will be
- stored.
-
- @param sizePtr1 The address where the first (or only) region length will be
- stored.
-
- @param dataPtr2 The address where the second region pointer will be stored if
- the first region is too small to satisfy numBytes.
-
- @param sizePtr2 The address where the second region length will be stored if
- the first region is too small to satisfy numBytes.
-
- @return The number of bytes available for reading.
-*/
-long PaUtil_GetRingBufferReadRegions( PaUtilRingBuffer *rbuf, long numBytes,
-                                      void **dataPtr1, long *sizePtr1,
-                                      void **dataPtr2, long *sizePtr2 );
-
-/** Advance the read index to the next location to be read.
-
- @param rbuf The ring buffer.
-
- @param numBytes The number of bytes to advance.
-
- @return The new position.
-*/
-long PaUtil_AdvanceRingBufferReadIndex( PaUtilRingBuffer *rbuf, long numBytes );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_RINGBUFFER_H */
diff --git a/external/portaudio2007/pa_skeleton.c b/external/portaudio2007/pa_skeleton.c
deleted file mode 100644
index e229b07..0000000
--- a/external/portaudio2007/pa_skeleton.c
+++ /dev/null
@@ -1,816 +0,0 @@
-/*
- * $Id: pa_skeleton.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library skeleton implementation
- * demonstrates how to use the common functions to implement support
- * for a host API
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Skeleton implementation of support for a host API.
-
- @note This file is provided as a starting point for implementing support for
- a new host API. IMPLEMENT ME comments are used to indicate functionality
- which much be customised for each implementation.
-*/
-
-
-#include <string.h> /* strlen() */
-
-#include "pa_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-
-
-/* prototypes for functions declared in this file */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-static signed long GetStreamReadAvailable( PaStream* stream );
-static signed long GetStreamWriteAvailable( PaStream* stream );
-
-
-/* IMPLEMENT ME: a macro like the following one should be used for reporting
- host errors */
-#define PA_SKELETON_SET_LAST_HOST_ERROR( errorCode, errorText ) \
-    PaUtil_SetLastHostErrorInfo( paInDevelopment, errorCode, errorText )
-
-/* PaSkeletonHostApiRepresentation - host api datastructure specific to this implementation */
-
-typedef struct
-{
-    PaUtilHostApiRepresentation inheritedHostApiRep;
-    PaUtilStreamInterface callbackStreamInterface;
-    PaUtilStreamInterface blockingStreamInterface;
-
-    PaUtilAllocationGroup *allocations;
-
-    /* implementation specific data goes here */
-}
-PaSkeletonHostApiRepresentation;  /* IMPLEMENT ME: rename this */
-
-
-PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    int i, deviceCount;
-    PaSkeletonHostApiRepresentation *skeletonHostApi;
-    PaDeviceInfo *deviceInfoArray;
-
-    skeletonHostApi = (PaSkeletonHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaSkeletonHostApiRepresentation) );
-    if( !skeletonHostApi )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    skeletonHostApi->allocations = PaUtil_CreateAllocationGroup();
-    if( !skeletonHostApi->allocations )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    *hostApi = &skeletonHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paInDevelopment;            /* IMPLEMENT ME: change to correct type id */
-    (*hostApi)->info.name = "skeleton implementation";  /* IMPLEMENT ME: change to correct name */
-
-    (*hostApi)->info.defaultInputDevice = paNoDevice;  /* IMPLEMENT ME */
-    (*hostApi)->info.defaultOutputDevice = paNoDevice; /* IMPLEMENT ME */
-
-    (*hostApi)->info.deviceCount = 0;  
-
-    deviceCount = 0; /* IMPLEMENT ME */
-    
-    if( deviceCount > 0 )
-    {
-        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-                skeletonHostApi->allocations, sizeof(PaDeviceInfo*) * deviceCount );
-        if( !(*hostApi)->deviceInfos )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        /* allocate all device info structs in a contiguous block */
-        deviceInfoArray = (PaDeviceInfo*)PaUtil_GroupAllocateMemory(
-                skeletonHostApi->allocations, sizeof(PaDeviceInfo) * deviceCount );
-        if( !deviceInfoArray )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        for( i=0; i < deviceCount; ++i )
-        {
-            PaDeviceInfo *deviceInfo = &deviceInfoArray[i];
-            deviceInfo->structVersion = 2;
-            deviceInfo->hostApi = hostApiIndex;
-            deviceInfo->name = 0; /* IMPLEMENT ME: allocate block and copy name eg:
-                deviceName = (char*)PaUtil_GroupAllocateMemory( skeletonHostApi->allocations, strlen(srcName) + 1 );
-                if( !deviceName )
-                {
-                    result = paInsufficientMemory;
-                    goto error;
-                }
-                strcpy( deviceName, srcName );
-                deviceInfo->name = deviceName;
-            */
-
-            deviceInfo->maxInputChannels = 0;  /* IMPLEMENT ME */
-            deviceInfo->maxOutputChannels = 0;  /* IMPLEMENT ME */
-            
-            deviceInfo->defaultLowInputLatency = 0.;  /* IMPLEMENT ME */
-            deviceInfo->defaultLowOutputLatency = 0.;  /* IMPLEMENT ME */
-            deviceInfo->defaultHighInputLatency = 0.;  /* IMPLEMENT ME */
-            deviceInfo->defaultHighOutputLatency = 0.;  /* IMPLEMENT ME */  
-
-            deviceInfo->defaultSampleRate = 0.; /* IMPLEMENT ME */
-            
-            (*hostApi)->deviceInfos[i] = deviceInfo;
-            ++(*hostApi)->info.deviceCount;
-        }
-    }
-
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PaUtil_InitializeStreamInterface( &skeletonHostApi->callbackStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &skeletonHostApi->blockingStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );
-
-    return result;
-
-error:
-    if( skeletonHostApi )
-    {
-        if( skeletonHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( skeletonHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations );
-        }
-                
-        PaUtil_FreeMemory( skeletonHostApi );
-    }
-    return result;
-}
-
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi;
-
-    /*
-        IMPLEMENT ME:
-            - clean up any resources not handled by the allocation group
-    */
-
-    if( skeletonHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( skeletonHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( skeletonHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( skeletonHostApi );
-}
-
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( inputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-            
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        if( inputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-    }
-    else
-    {
-        inputChannelCount = 0;
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( outputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-            
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support outputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        if( outputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-    }
-    else
-    {
-        outputChannelCount = 0;
-    }
-    
-    /*
-        IMPLEMENT ME:
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported if necessary
-
-            - check that the device supports sampleRate
-
-        Because the buffer adapter handles conversion between all standard
-        sample formats, the following checks are only required if paCustomFormat
-        is implemented, or under some other unusual conditions.
-
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from inputSampleFormat to
-                a native format
-
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-    */
-
-
-    /* suppress unused variable warnings */
-    (void) sampleRate;
-
-    return paFormatIsSupported;
-}
-
-/* PaSkeletonStream - a stream data structure specifically for this implementation */
-
-typedef struct PaSkeletonStream
-{ /* IMPLEMENT ME: rename this */
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-
-    /* IMPLEMENT ME:
-            - implementation specific data goes here
-    */
-    unsigned long framesPerHostCallback; /* just an example */
-}
-PaSkeletonStream;
-
-/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */
-
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaSkeletonHostApiRepresentation *skeletonHostApi = (PaSkeletonHostApiRepresentation*)hostApi;
-    PaSkeletonStream *stream = 0;
-    unsigned long framesPerHostBuffer = framesPerBuffer; /* these may not be equivalent for all implementations */
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
-
-
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        if( inputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-        /* IMPLEMENT ME - establish which  host formats are available */
-        hostInputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, inputSampleFormat );
-    }
-    else
-    {
-        inputChannelCount = 0;
-        inputSampleFormat = hostInputSampleFormat = paInt16; /* Surpress 'uninitialised var' warnings. */
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support inputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        if( outputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-        /* IMPLEMENT ME - establish which  host formats are available */
-        hostOutputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, outputSampleFormat );
-    }
-    else
-    {
-        outputChannelCount = 0;
-        outputSampleFormat = hostOutputSampleFormat = paInt16; /* Surpress 'uninitialized var' warnings. */
-    }
-
-    /*
-        IMPLEMENT ME:
-
-        ( the following two checks are taken care of by PaUtil_InitializeBufferProcessor() FIXME - checks needed? )
-
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported
-
-            - check that the device supports sampleRate
-
-            - alter sampleRate to a close allowable rate if possible / necessary
-
-            - validate suggestedInputLatency and suggestedOutputLatency parameters,
-                use default values where necessary
-    */
-
-
-
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-
-    stream = (PaSkeletonStream*)PaUtil_AllocateMemory( sizeof(PaSkeletonStream) );
-    if( !stream )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    if( streamCallback )
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &skeletonHostApi->callbackStreamInterface, streamCallback, userData );
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &skeletonHostApi->blockingStreamInterface, streamCallback, userData );
-    }
-
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-
-    /* we assume a fixed host buffer size in this example, but the buffer processor
-        can also support bounded and unknown host buffer sizes by passing 
-        paUtilBoundedHostBufferSize or paUtilUnknownHostBufferSize instead of
-        paUtilFixedHostBufferSize below. */
-        
-    result =  PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-              inputChannelCount, inputSampleFormat, hostInputSampleFormat,
-              outputChannelCount, outputSampleFormat, hostOutputSampleFormat,
-              sampleRate, streamFlags, framesPerBuffer,
-              framesPerHostBuffer, paUtilFixedHostBufferSize,
-              streamCallback, userData );
-    if( result != paNoError )
-        goto error;
-
-
-    /*
-        IMPLEMENT ME: initialise the following fields with estimated or actual
-        values.
-    */
-    stream->streamRepresentation.streamInfo.inputLatency =
-            PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor);
-    stream->streamRepresentation.streamInfo.outputLatency =
-            PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor);
-    stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-    
-    /*
-        IMPLEMENT ME:
-            - additional stream setup + opening
-    */
-
-    stream->framesPerHostCallback = framesPerHostBuffer;
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-    if( stream )
-        PaUtil_FreeMemory( stream );
-
-    return result;
-}
-
-/*
-    ExampleHostProcessingLoop() illustrates the kind of processing which may
-    occur in a host implementation.
- 
-*/
-static void ExampleHostProcessingLoop( void *inputBuffer, void *outputBuffer, void *userData )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)userData;
-    PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /* IMPLEMENT ME */
-    int callbackResult;
-    unsigned long framesProcessed;
-    
-    PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-    
-    /*
-        IMPLEMENT ME:
-            - generate timing information
-            - handle buffer slips
-    */
-
-    /*
-        If you need to byte swap or shift inputBuffer to convert it into a
-        portaudio format, do it here.
-    */
-
-
-
-    PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, 0 /* IMPLEMENT ME: pass underflow/overflow flags when necessary */ );
-
-    /*
-        depending on whether the host buffers are interleaved, non-interleaved
-        or a mixture, you will want to call PaUtil_SetInterleaved*Channels(),
-        PaUtil_SetNonInterleaved*Channel() or PaUtil_Set*Channel() here.
-    */
-    
-    PaUtil_SetInputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ );
-    PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor,
-            0, /* first channel of inputBuffer is channel 0 */
-            inputBuffer,
-            0 ); /* 0 - use inputChannelCount passed to init buffer processor */
-
-    PaUtil_SetOutputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ );
-    PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor,
-            0, /* first channel of outputBuffer is channel 0 */
-            outputBuffer,
-            0 ); /* 0 - use outputChannelCount passed to init buffer processor */
-
-    /* you must pass a valid value of callback result to PaUtil_EndBufferProcessing()
-        in general you would pass paContinue for normal operation, and
-        paComplete to drain the buffer processor's internal output buffer.
-        You can check whether the buffer processor's output buffer is empty
-        using PaUtil_IsBufferProcessorOuputEmpty( bufferProcessor )
-    */
-    callbackResult = paContinue;
-    framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult );
-
-    
-    /*
-        If you need to byte swap or shift outputBuffer to convert it to
-        host format, do it here.
-    */
-
-    PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed );
-
-
-    if( callbackResult == paContinue )
-    {
-        /* nothing special to do */
-    }
-    else if( callbackResult == paAbort )
-    {
-        /* IMPLEMENT ME - finish playback immediately  */
-
-        /* once finished, call the finished callback */
-        if( stream->streamRepresentation.streamFinishedCallback != 0 )
-            stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-    else
-    {
-        /* User callback has asked us to stop with paComplete or other non-zero value */
-
-        /* IMPLEMENT ME - finish playback once currently queued audio has completed  */
-
-        /* once finished, call the finished callback */
-        if( stream->streamRepresentation.streamFinishedCallback != 0 )
-            stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-}
-
-
-/*
-    When CloseStream() is called, the multi-api layer ensures that
-    the stream has already been stopped or aborted.
-*/
-static PaError CloseStream( PaStream* s )
-{
-    PaError result = paNoError;
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /*
-        IMPLEMENT ME:
-            - additional stream closing + cleanup
-    */
-
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-    PaUtil_FreeMemory( stream );
-
-    return result;
-}
-
-
-static PaError StartStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior */
-
-    /* suppress unused function warning. the code in ExampleHostProcessingLoop or
-       something similar should be implemented to feed samples to and from the
-       host after StartStream() is called.
-    */
-    (void) ExampleHostProcessingLoop;
-
-    return result;
-}
-
-
-static PaError StopStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior */
-
-    return result;
-}
-
-
-static PaError AbortStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior */
-
-    return result;
-}
-
-
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior */
-
-    return 0;
-}
-
-
-static PaError IsStreamActive( PaStream *s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior */
-
-    return 0;
-}
-
-
-static PaTime GetStreamTime( PaStream *s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return 0;
-}
-
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
-
-
-/*
-    As separate stream interfaces are used for blocking and callback
-    streams, the following functions can be guaranteed to only be called
-    for blocking streams.
-*/
-
-static PaError ReadStream( PaStream* s,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return paNoError;
-}
-
-
-static PaError WriteStream( PaStream* s,
-                            const void *buffer,
-                            unsigned long frames )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return paNoError;
-}
-
-
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return 0;
-}
-
-
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaSkeletonStream *stream = (PaSkeletonStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return 0;
-}
-
-
-
-
diff --git a/external/portaudio2007/pa_stream.c b/external/portaudio2007/pa_stream.c
deleted file mode 100644
index 172e7d2..0000000
--- a/external/portaudio2007/pa_stream.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * $Id: pa_stream.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * 
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 2002 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Interface used by pa_front to virtualize functions which operate on
- streams.
-*/
-
-
-#include "pa_stream.h"
-
-
-void PaUtil_InitializeStreamInterface( PaUtilStreamInterface *streamInterface,
-                                       PaError (*Close)( PaStream* ),
-                                       PaError (*Start)( PaStream* ),
-                                       PaError (*Stop)( PaStream* ),
-                                       PaError (*Abort)( PaStream* ),
-                                       PaError (*IsStopped)( PaStream* ),
-                                       PaError (*IsActive)( PaStream* ),
-                                       PaTime (*GetTime)( PaStream* ),
-                                       double (*GetCpuLoad)( PaStream* ),
-                                       PaError (*Read)( PaStream*, void *, unsigned long ),
-                                       PaError (*Write)( PaStream*, const void *, unsigned long ),
-                                       signed long (*GetReadAvailable)( PaStream* ),
-                                       signed long (*GetWriteAvailable)( PaStream* )  )
-{
-    streamInterface->Close = Close;
-    streamInterface->Start = Start;
-    streamInterface->Stop = Stop;
-    streamInterface->Abort = Abort;
-    streamInterface->IsStopped = IsStopped;
-    streamInterface->IsActive = IsActive;
-    streamInterface->GetTime = GetTime;
-    streamInterface->GetCpuLoad = GetCpuLoad;
-    streamInterface->Read = Read;
-    streamInterface->Write = Write;
-    streamInterface->GetReadAvailable = GetReadAvailable;
-    streamInterface->GetWriteAvailable = GetWriteAvailable;
-}
-
-
-void PaUtil_InitializeStreamRepresentation( PaUtilStreamRepresentation *streamRepresentation,
-        PaUtilStreamInterface *streamInterface,
-        PaStreamCallback *streamCallback,
-        void *userData )
-{
-    streamRepresentation->magic = PA_STREAM_MAGIC;
-    streamRepresentation->nextOpenStream = 0;
-    streamRepresentation->streamInterface = streamInterface;
-    streamRepresentation->streamCallback = streamCallback;
-    streamRepresentation->streamFinishedCallback = 0;
-
-    streamRepresentation->userData = userData;
-
-    streamRepresentation->streamInfo.inputLatency = 0.;
-    streamRepresentation->streamInfo.outputLatency = 0.;
-    streamRepresentation->streamInfo.sampleRate = 0.;
-}
-
-
-void PaUtil_TerminateStreamRepresentation( PaUtilStreamRepresentation *streamRepresentation )
-{
-    streamRepresentation->magic = 0;
-}
-
-
-PaError PaUtil_DummyRead( PaStream* stream,
-                               void *buffer,
-                               unsigned long frames )
-{
-    (void)stream; /* unused parameter */
-    (void)buffer; /* unused parameter */
-    (void)frames; /* unused parameter */
-
-    return paCanNotReadFromACallbackStream;
-}
-
-
-PaError PaUtil_DummyWrite( PaStream* stream,
-                               const void *buffer,
-                               unsigned long frames )
-{
-    (void)stream; /* unused parameter */
-    (void)buffer; /* unused parameter */
-    (void)frames; /* unused parameter */
-
-    return paCanNotWriteToACallbackStream;
-}
-
-
-signed long PaUtil_DummyGetReadAvailable( PaStream* stream )
-{
-    (void)stream; /* unused parameter */
-
-    return paCanNotReadFromACallbackStream;
-}
-
-
-signed long PaUtil_DummyGetWriteAvailable( PaStream* stream )
-{
-    (void)stream; /* unused parameter */
-
-    return paCanNotWriteToACallbackStream;
-}
-
-
-double PaUtil_DummyGetCpuLoad( PaStream* stream )
-{
-    (void)stream; /* unused parameter */
-
-    return 0.0;
-}
diff --git a/external/portaudio2007/pa_stream.h b/external/portaudio2007/pa_stream.h
deleted file mode 100644
index f5363b3..0000000
--- a/external/portaudio2007/pa_stream.h
+++ /dev/null
@@ -1,205 +0,0 @@
-#ifndef PA_STREAM_H
-#define PA_STREAM_H
-/*
- * $Id: pa_stream.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library
- * stream interface
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Interface used by pa_front to virtualize functions which operate on
- streams.
-*/
-
-
-#include "portaudio.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#define PA_STREAM_MAGIC (0x18273645)
-
-
-/** A structure representing an (abstract) interface to a host API. Contains
- pointers to functions which implement the interface.
-
- All PaStreamInterface functions are guaranteed to be called with a non-null,
- valid stream parameter.
-*/
-typedef struct {
-    PaError (*Close)( PaStream* stream );
-    PaError (*Start)( PaStream *stream );
-    PaError (*Stop)( PaStream *stream );
-    PaError (*Abort)( PaStream *stream );
-    PaError (*IsStopped)( PaStream *stream );
-    PaError (*IsActive)( PaStream *stream );
-    PaTime (*GetTime)( PaStream *stream );
-    double (*GetCpuLoad)( PaStream* stream );
-    PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames );
-    PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames );
-    signed long (*GetReadAvailable)( PaStream* stream );
-    signed long (*GetWriteAvailable)( PaStream* stream );
-} PaUtilStreamInterface;
-
-
-/** Initialize the fields of a PaUtilStreamInterface structure.
-*/
-void PaUtil_InitializeStreamInterface( PaUtilStreamInterface *streamInterface,
-    PaError (*Close)( PaStream* ),
-    PaError (*Start)( PaStream* ),
-    PaError (*Stop)( PaStream* ),
-    PaError (*Abort)( PaStream* ),
-    PaError (*IsStopped)( PaStream* ),
-    PaError (*IsActive)( PaStream* ),
-    PaTime (*GetTime)( PaStream* ),
-    double (*GetCpuLoad)( PaStream* ),
-    PaError (*Read)( PaStream* stream, void *buffer, unsigned long frames ),
-    PaError (*Write)( PaStream* stream, const void *buffer, unsigned long frames ),
-    signed long (*GetReadAvailable)( PaStream* stream ),
-    signed long (*GetWriteAvailable)( PaStream* stream ) );
-
-
-/** Dummy Read function for use in interfaces to a callback based streams.
- Pass to the Read parameter of PaUtil_InitializeStreamInterface.
- @return An error code indicating that the function has no effect
- because the stream is a callback stream.
-*/
-PaError PaUtil_DummyRead( PaStream* stream,
-                       void *buffer,
-                       unsigned long frames );
-
-
-/** Dummy Write function for use in an interfaces to callback based streams.
- Pass to the Write parameter of PaUtil_InitializeStreamInterface.
- @return An error code indicating that the function has no effect
- because the stream is a callback stream.
-*/
-PaError PaUtil_DummyWrite( PaStream* stream,
-                       const void *buffer,
-                       unsigned long frames );
-
-
-/** Dummy GetReadAvailable function for use in interfaces to callback based
- streams. Pass to the GetReadAvailable parameter of PaUtil_InitializeStreamInterface.
- @return An error code indicating that the function has no effect
- because the stream is a callback stream.
-*/
-signed long PaUtil_DummyGetReadAvailable( PaStream* stream );
-
-
-/** Dummy GetWriteAvailable function for use in interfaces to callback based
- streams. Pass to the GetWriteAvailable parameter of PaUtil_InitializeStreamInterface.
- @return An error code indicating that the function has no effect
- because the stream is a callback stream.
-*/
-signed long PaUtil_DummyGetWriteAvailable( PaStream* stream );
-
-
-
-/** Dummy GetCpuLoad function for use in an interface to a read/write stream.
- Pass to the GetCpuLoad parameter of PaUtil_InitializeStreamInterface.
- @return Returns 0.
-*/
-double PaUtil_DummyGetCpuLoad( PaStream* stream );
-
-
-/** Non host specific data for a stream. This data is used by pa_front to
- forward to the appropriate functions in the streamInterface structure.
-*/
-typedef struct PaUtilStreamRepresentation {
-    unsigned long magic;    /**< set to PA_STREAM_MAGIC */
-    struct PaUtilStreamRepresentation *nextOpenStream; /**< field used by multi-api code */
-    PaUtilStreamInterface *streamInterface;
-    PaStreamCallback *streamCallback;
-    PaStreamFinishedCallback *streamFinishedCallback;
-    void *userData;
-    PaStreamInfo streamInfo;
-} PaUtilStreamRepresentation;
-
-
-/** Initialize a PaUtilStreamRepresentation structure.
-
- @see PaUtil_InitializeStreamRepresentation
-*/
-void PaUtil_InitializeStreamRepresentation(
-        PaUtilStreamRepresentation *streamRepresentation,
-        PaUtilStreamInterface *streamInterface,
-        PaStreamCallback *streamCallback,
-        void *userData );
-        
-
-/** Clean up a PaUtilStreamRepresentation structure previously initialized
- by a call to PaUtil_InitializeStreamRepresentation.
-
- @see PaUtil_InitializeStreamRepresentation
-*/
-void PaUtil_TerminateStreamRepresentation( PaUtilStreamRepresentation *streamRepresentation );
-
-
-/** Check that the stream pointer is valid.
-
- @return Returns paNoError if the stream pointer appears to be OK, otherwise
- returns an error indicating the cause of failure.
-*/
-PaError PaUtil_ValidateStreamPointer( PaStream *stream );
-
-
-/** Cast an opaque stream pointer into a pointer to a PaUtilStreamRepresentation.
-
- @see PaUtilStreamRepresentation
-*/
-#define PA_STREAM_REP( stream )\
-    ((PaUtilStreamRepresentation*) (stream) )
-
-
-/** Cast an opaque stream pointer into a pointer to a PaUtilStreamInterface.
-
- @see PaUtilStreamRepresentation, PaUtilStreamInterface
-*/
-#define PA_STREAM_INTERFACE( stream )\
-    PA_STREAM_REP( (stream) )->streamInterface
-
-
-    
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_STREAM_H */
diff --git a/external/portaudio2007/pa_trace.c b/external/portaudio2007/pa_trace.c
deleted file mode 100644
index 583d3ae..0000000
--- a/external/portaudio2007/pa_trace.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $Id: pa_trace.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library Trace Facility
- * Store trace information in real-time for later printing.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Event trace mechanism for debugging.
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "pa_trace.h"
-
-#if PA_TRACE_REALTIME_EVENTS
-
-static char *traceTextArray[PA_MAX_TRACE_RECORDS];
-static int traceIntArray[PA_MAX_TRACE_RECORDS];
-static int traceIndex = 0;
-static int traceBlock = 0;
-
-/*********************************************************************/
-void PaUtil_ResetTraceMessages()
-{
-    traceIndex = 0;
-}
-
-/*********************************************************************/
-void PaUtil_DumpTraceMessages()
-{
-    int i;
-    int messageCount = (traceIndex < PA_MAX_TRACE_RECORDS) ? traceIndex : PA_MAX_TRACE_RECORDS;
-
-    printf("DumpTraceMessages: traceIndex = %d\n", traceIndex );
-    for( i=0; i<messageCount; i++ )
-    {
-        printf("%3d: %s = 0x%08X\n",
-               i, traceTextArray[i], traceIntArray[i] );
-    }
-    PaUtil_ResetTraceMessages();
-    fflush(stdout);
-}
-
-/*********************************************************************/
-void PaUtil_AddTraceMessage( const char *msg, int data )
-{
-    if( (traceIndex == PA_MAX_TRACE_RECORDS) && (traceBlock == 0) )
-    {
-        traceBlock = 1;
-        /*  PaUtil_DumpTraceMessages(); */
-    }
-    else if( traceIndex < PA_MAX_TRACE_RECORDS )
-    {
-        traceTextArray[traceIndex] = msg;
-        traceIntArray[traceIndex] = data;
-        traceIndex++;
-    }
-}
-
-#endif /* TRACE_REALTIME_EVENTS */
diff --git a/external/portaudio2007/pa_trace.h b/external/portaudio2007/pa_trace.h
deleted file mode 100644
index a4d2a33..0000000
--- a/external/portaudio2007/pa_trace.h
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef PA_TRACE_H
-#define PA_TRACE_H
-/*
- * $Id: pa_trace.h 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library Trace Facility
- * Store trace information in real-time for later printing.
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Event trace mechanism for debugging.
-
- Allows data to be written to the buffer at interrupt time and dumped later.
-*/
-
-
-#define PA_TRACE_REALTIME_EVENTS     (0)   /* Keep log of various real-time events. */
-#define PA_MAX_TRACE_RECORDS      (2048)
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#if PA_TRACE_REALTIME_EVENTS
-
-void PaUtil_ResetTraceMessages();
-void PaUtil_AddTraceMessage( const char *msg, int data );
-void PaUtil_DumpTraceMessages();
-    
-#else
-
-#define PaUtil_ResetTraceMessages() /* noop */
-#define PaUtil_AddTraceMessage(msg,data) /* noop */
-#define PaUtil_DumpTraceMessages() /* noop */
-
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_TRACE_H */
diff --git a/external/portaudio2007/pa_types.h b/external/portaudio2007/pa_types.h
deleted file mode 100644
index fd9bfe3..0000000
--- a/external/portaudio2007/pa_types.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef PA_TYPES_H
-#define PA_TYPES_H
-
-/* 
- * Portable Audio I/O Library
- * integer type definitions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2006 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
- @brief Definition of 16 and 32 bit integer types (PaInt16, PaInt32 etc)
-
- SIZEOF_SHORT, SIZEOF_INT and SIZEOF_LONG are set by the configure script
- when it is used. Otherwise we default to the common 32 bit values, if your
- platform doesn't use configure, and doesn't use the default values below
- you will need to explicitly define these symbols in your make file.
-
- A PA_VALIDATE_SIZES macro is provided to assert that the values set in this
- file are correct.
-
- Paul Boersma 2013: the sizes should not be handcoded if this header file is to be included in both 32-bit and 64-bit applications;
- instead, we use int32_t and the like from <stdint.h>.
-*/
-
-#include <stdint.h>
-
-typedef int16_t PaInt16;
-typedef uint16_t PaUint16;
-
-typedef int32_t PaInt32;
-typedef uint32_t PaUint32;
-
-
-/* PA_VALIDATE_TYPE_SIZES compares the size of the integer types at runtime to
- ensure that PortAudio was configured correctly, and raises an assertion if
- they don't match the expected values. <assert.h> must be included in the
- context in which this macro is used.
-*/
-#define PA_VALIDATE_TYPE_SIZES \
-    { \
-        assert( "PortAudio: type sizes are not correct in pa_types.h" && sizeof( PaUint16 ) == 2 ); \
-        assert( "PortAudio: type sizes are not correct in pa_types.h" && sizeof( PaInt16 ) == 2 ); \
-        assert( "PortAudio: type sizes are not correct in pa_types.h" && sizeof( PaUint32 ) == 4 ); \
-        assert( "PortAudio: type sizes are not correct in pa_types.h" && sizeof( PaInt32 ) == 4 ); \
-    }
-
-
-#endif /* PA_TYPES_H */
diff --git a/external/portaudio2007/pa_unix_hostapis.c b/external/portaudio2007/pa_unix_hostapis.c
deleted file mode 100644
index 8a32707..0000000
--- a/external/portaudio2007/pa_unix_hostapis.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifdef UNIX
-/*
- * $Id: pa_unix_hostapis.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library UNIX initialization table
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup unix_src
-*/
-
-#include "pa_hostapi.h"
-
-PaError PaJack_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaAlsa_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaOSS_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-/* Added for IRIX, Pieter, oct 2, 2003: */
-PaError PaSGI_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-/* Linux AudioScience HPI */
-PaError PaAsiHpi_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-
-PaUtilHostApiInitializer *paHostApiInitializers[] =
-    {
-		#if defined (linux) && defined (ALSA)
-			PaAlsa_Initialize,
-		#elif defined (sgi)
-			PaSGI_Initialize,
-		#else
-			//PaOSS_Initialize,
-		#endif
-        0   /* NULL terminated array */
-    };
-
-int paDefaultHostApiIndex = 0;
-#endif
diff --git a/external/portaudio2007/pa_unix_oss.c b/external/portaudio2007/pa_unix_oss.c
deleted file mode 100644
index 942f15c..0000000
--- a/external/portaudio2007/pa_unix_oss.c
+++ /dev/null
@@ -1,1955 +0,0 @@
-/*
- * $Id: pa_unix_oss.c 1296 2007-10-28 22:43:50Z aknudsen $
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- * OSS implementation by:
- *   Douglas Repetto
- *   Phil Burk
- *   Dominic Mazzoni
- *   Arve Knudsen
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however,
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also
- * requested that these non-binding requests be included along with the
- * license above.
- */
-
-/**
- @file
- @ingroup hostapi_src
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/poll.h>
-#include <limits.h>
-#include <semaphore.h>
-
-#ifdef HAVE_SYS_SOUNDCARD_H
-# include <sys/soundcard.h>
-# define DEVICE_NAME_BASE            "/dev/dsp"
-#elif defined(HAVE_LINUX_SOUNDCARD_H)
-# include <linux/soundcard.h>
-# define DEVICE_NAME_BASE            "/dev/dsp"
-#elif defined(HAVE_MACHINE_SOUNDCARD_H)
-# include <machine/soundcard.h> /* JH20010905 */
-# define DEVICE_NAME_BASE            "/dev/audio"
-#else
-# error No sound card header file
-#endif
-
-#include "portaudio.h"
-#include "pa_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "pa_unix_util.h"
-#include "pa_debugprint.h"
-
-static int sysErr_;
-static pthread_t mainThread_;
-
-/* Check return value of system call, and map it to PaError */
-#define ENSURE_(expr, code) \
-    do { \
-        if( UNLIKELY( (sysErr_ = (expr)) < 0 ) ) \
-        { \
-            /* PaUtil_SetLastHostErrorInfo should only be used in the main thread */ \
-            if( (code) == paUnanticipatedHostError && pthread_self() == mainThread_ ) \
-            { \
-                PaUtil_SetLastHostErrorInfo( paALSA, sysErr_, strerror( errno ) ); \
-            } \
-            \
-            PaUtil_DebugPrint(( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" )); \
-            result = (code); \
-            goto error; \
-        } \
-    } while( 0 );
-
-#ifndef AFMT_S16_NE
-#define AFMT_S16_NE  Get_AFMT_S16_NE()
-/*********************************************************************
- * Some versions of OSS do not define AFMT_S16_NE. So check CPU.
- * PowerPC is Big Endian. X86 is Little Endian.
- */
-static int Get_AFMT_S16_NE( void )
-{
-    long testData = 1;
-    char *ptr = (char *) &testData;
-    int isLittle = ( *ptr == 1 ); /* Does address point to least significant byte? */
-    return isLittle ? AFMT_S16_LE : AFMT_S16_BE;
-}
-#endif
-
-/* PaOSSHostApiRepresentation - host api datastructure specific to this implementation */
-
-typedef struct
-{
-    PaUtilHostApiRepresentation inheritedHostApiRep;
-    PaUtilStreamInterface callbackStreamInterface;
-    PaUtilStreamInterface blockingStreamInterface;
-
-    PaUtilAllocationGroup *allocations;
-
-    PaHostApiIndex hostApiIndex;
-}
-PaOSSHostApiRepresentation;
-
-/** Per-direction structure for PaOssStream.
- *
- * Aspect StreamChannels: In case the user requests to open the same device for both capture and playback,
- * but with different number of channels we will have to adapt between the number of user and host
- * channels for at least one direction, since the configuration space is the same for both directions
- * of an OSS device.
- */
-typedef struct
-{
-    int fd;
-    const char *devName;
-    int userChannelCount, hostChannelCount;
-    int userInterleaved;
-    void *buffer;
-    PaSampleFormat userFormat, hostFormat;
-    double latency;
-    unsigned long hostFrames, numBufs;
-    void **userBuffers; /* For non-interleaved blocking */
-} PaOssStreamComponent;
-
-/** Implementation specific representation of a PaStream.
- *
- */
-typedef struct PaOssStream
-{
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-
-    PaUtilThreading threading;
-
-    int sharedDevice;
-    unsigned long framesPerHostBuffer;
-    int triggered;  /* Have the devices been triggered yet (first start) */
-
-    int isActive;
-    int isStopped;
-
-    int lastPosPtr;
-    double lastStreamBytes;
-
-    int framesProcessed;
-
-    double sampleRate;
-
-    int callbackMode;
-    int callbackStop, callbackAbort;
-
-    PaOssStreamComponent *capture, *playback;
-    unsigned long pollTimeout;
-    sem_t semaphore;
-}
-PaOssStream;
-
-typedef enum {
-    StreamMode_In,
-    StreamMode_Out
-} StreamMode;
-
-/* prototypes for functions declared in this file */
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-static signed long GetStreamReadAvailable( PaStream* stream );
-static signed long GetStreamWriteAvailable( PaStream* stream );
-static PaError BuildDeviceList( PaOSSHostApiRepresentation *hostApi );
-
-
-/** Initialize the OSS API implementation.
- *
- * This function will initialize host API datastructures and query host devices for information.
- *
- * Aspect DeviceCapabilities: Enumeration of host API devices is initiated from here
- *
- * Aspect FreeResources: If an error is encountered under way we have to free each resource allocated in this function,
- * this happens with the usual "error" label.
- */
-PaError PaOSS_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    PaOSSHostApiRepresentation *ossHostApi = NULL;
-
-    PA_UNLESS( ossHostApi = (PaOSSHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaOSSHostApiRepresentation) ),
-            paInsufficientMemory );
-    PA_UNLESS( ossHostApi->allocations = PaUtil_CreateAllocationGroup(), paInsufficientMemory );
-    ossHostApi->hostApiIndex = hostApiIndex;
-
-    /* Initialize host API structure */
-    *hostApi = &ossHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paOSS;
-    (*hostApi)->info.name = "OSS";
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PA_ENSURE( BuildDeviceList( ossHostApi ) );
-
-    PaUtil_InitializeStreamInterface( &ossHostApi->callbackStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable,
-                                      PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &ossHostApi->blockingStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );
-
-    mainThread_ = pthread_self();
-
-    return result;
-
-error:
-    if( ossHostApi )
-    {
-        if( ossHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( ossHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( ossHostApi->allocations );
-        }
-
-        PaUtil_FreeMemory( ossHostApi );
-    }
-    return result;
-}
-
-PaError PaUtil_InitializeDeviceInfo( PaDeviceInfo *deviceInfo, const char *name, PaHostApiIndex hostApiIndex, int maxInputChannels,
-        int maxOutputChannels, PaTime defaultLowInputLatency, PaTime defaultLowOutputLatency, PaTime defaultHighInputLatency,
-        PaTime defaultHighOutputLatency, double defaultSampleRate, PaUtilAllocationGroup *allocations  )
-{
-    PaError result = paNoError;
-
-    deviceInfo->structVersion = 2;
-    if( allocations )
-    {
-        size_t len = strlen( name ) + 1;
-        PA_UNLESS( deviceInfo->name = PaUtil_GroupAllocateMemory( allocations, len ), paInsufficientMemory );
-        strncpy( (char *)deviceInfo->name, name, len );
-    }
-    else
-        deviceInfo->name = name;
-
-    deviceInfo->hostApi = hostApiIndex;
-    deviceInfo->maxInputChannels = maxInputChannels;
-    deviceInfo->maxOutputChannels = maxOutputChannels;
-    deviceInfo->defaultLowInputLatency = defaultLowInputLatency;
-    deviceInfo->defaultLowOutputLatency = defaultLowOutputLatency;
-    deviceInfo->defaultHighInputLatency = defaultHighInputLatency;
-    deviceInfo->defaultHighOutputLatency = defaultHighOutputLatency;
-    deviceInfo->defaultSampleRate = defaultSampleRate;
-
-error:
-    return result;
-}
-
-static PaError QueryDirection( const char *deviceName, StreamMode mode, double *defaultSampleRate, int *maxChannelCount,
-        double *defaultLowLatency, double *defaultHighLatency )
-{
-    PaError result = paNoError;
-    int numChannels, maxNumChannels;
-    int busy = 0;
-    int devHandle = -1;
-    int sr;
-    *maxChannelCount = 0;  /* Default value in case this fails */
-
-    if ( (devHandle = open( deviceName, (mode == StreamMode_In ? O_RDONLY : O_WRONLY) | O_NONBLOCK ))  < 0 )
-    {
-        if( errno == EBUSY || errno == EAGAIN )
-        {
-            PA_DEBUG(( "%s: Device %s busy\n", __FUNCTION__, deviceName ));
-        }
-        else
-        {
-            PA_DEBUG(( "%s: Can't access device: %s\n", __FUNCTION__, strerror( errno ) ));
-        }
-
-        return paDeviceUnavailable;
-    }
-
-    /* Negotiate for the maximum number of channels for this device. PLB20010927
-     * Consider up to 16 as the upper number of channels.
-     * Variable maxNumChannels should contain the actual upper limit after the call.
-     * Thanks to John Lazzaro and Heiko Purnhagen for suggestions.
-     */
-    maxNumChannels = 0;
-    for( numChannels = 1; numChannels <= 16; numChannels++ )
-    {
-        int temp = numChannels;
-        if( ioctl( devHandle, SNDCTL_DSP_CHANNELS, &temp ) < 0 )
-        {
-            busy = EAGAIN == errno || EBUSY == errno;
-            /* ioctl() failed so bail out if we already have stereo */
-            if( maxNumChannels >= 2 )
-                break;
-        }
-        else
-        {
-            /* ioctl() worked but bail out if it does not support numChannels.
-             * We don't want to leave gaps in the numChannels supported.
-             */
-            if( (numChannels > 2) && (temp != numChannels) )
-                break;
-            if( temp > maxNumChannels )
-                maxNumChannels = temp; /* Save maximum. */
-        }
-    }
-    /* A: We're able to open a device for capture if it's busy playing back and vice versa,
-     * but we can't configure anything */
-    if( 0 == maxNumChannels && busy )
-    {
-        result = paDeviceUnavailable;
-        goto error;
-    }
-
-    /* The above negotiation may fail for an old driver so try this older technique. */
-    if( maxNumChannels < 1 )
-    {
-        int stereo = 1;
-        if( ioctl( devHandle, SNDCTL_DSP_STEREO, &stereo ) < 0 )
-        {
-            maxNumChannels = 1;
-        }
-        else
-        {
-            maxNumChannels = (stereo) ? 2 : 1;
-        }
-        PA_DEBUG(( "%s: use SNDCTL_DSP_STEREO, maxNumChannels = %d\n", __FUNCTION__, maxNumChannels ));
-    }
-
-    /* During channel negotiation, the last ioctl() may have failed. This can
-     * also cause sample rate negotiation to fail. Hence the following, to return
-     * to a supported number of channels. SG20011005 */
-    {
-        /* use most reasonable default value */
-        int temp = PA_MIN( maxNumChannels, 2 );
-        ENSURE_( ioctl( devHandle, SNDCTL_DSP_CHANNELS, &temp ), paUnanticipatedHostError );
-    }
-
-    /* Get supported sample rate closest to 44100 Hz */
-    if( *defaultSampleRate < 0 )
-    {
-        sr = 44100;
-        if( ioctl( devHandle, SNDCTL_DSP_SPEED, &sr ) < 0 )
-        {
-            result = paUnanticipatedHostError;
-            goto error;
-        }
-
-        *defaultSampleRate = sr;
-    }
-
-    *maxChannelCount = maxNumChannels;
-    /* TODO */
-    *defaultLowLatency = 512. / *defaultSampleRate;
-    *defaultHighLatency = 2048. / *defaultSampleRate;
-
-error:
-    if( devHandle >= 0 )
-        close( devHandle );
-
-    return result;
-}
-
-/** Query OSS device.
- *
- * This is where PaDeviceInfo objects are constructed and filled in with relevant information.
- *
- * Aspect DeviceCapabilities: The inferred device capabilities are recorded in a PaDeviceInfo object that is constructed
- * in place.
- */
-static PaError QueryDevice( char *deviceName, PaOSSHostApiRepresentation *ossApi, PaDeviceInfo **deviceInfo )
-{
-    PaError result = paNoError;
-    double sampleRate = -1.;
-    int maxInputChannels, maxOutputChannels;
-    PaTime defaultLowInputLatency, defaultLowOutputLatency, defaultHighInputLatency, defaultHighOutputLatency;
-    PaError tmpRes = paNoError;
-    int busy = 0;
-    *deviceInfo = NULL;
-
-    /* douglas:
-       we have to do this querying in a slightly different order. apparently
-       some sound cards will give you different info based on their settins.
-       e.g. a card might give you stereo at 22kHz but only mono at 44kHz.
-       the correct order for OSS is: format, channels, sample rate
-    */
-
-    /* Aspect StreamChannels: The number of channels supported for a device may depend on the mode it is
-     * opened in, it may have more channels available for capture than playback and vice versa. Therefore
-     * we will open the device in both read- and write-only mode to determine the supported number.
-     */
-    if( (tmpRes = QueryDirection( deviceName, StreamMode_In, &sampleRate, &maxInputChannels, &defaultLowInputLatency,
-                &defaultHighInputLatency )) != paNoError )
-    {
-        if( tmpRes != paDeviceUnavailable )
-        {
-            PA_DEBUG(( "%s: Querying device %s for capture failed!\n", __FUNCTION__, deviceName ));
-            /* PA_ENSURE( tmpRes ); */
-        }
-        ++busy;
-    }
-    if( (tmpRes = QueryDirection( deviceName, StreamMode_Out, &sampleRate, &maxOutputChannels, &defaultLowOutputLatency,
-                &defaultHighOutputLatency )) != paNoError )
-    {
-        if( tmpRes != paDeviceUnavailable )
-        {
-            PA_DEBUG(( "%s: Querying device %s for playback failed!\n", __FUNCTION__, deviceName ));
-            /* PA_ENSURE( tmpRes ); */
-        }
-        ++busy;
-    }
-    assert( 0 <= busy && busy <= 2 );
-    if( 2 == busy )     /* Both directions are unavailable to us */
-    {
-        result = paDeviceUnavailable;
-        goto error;
-    }
-
-    PA_UNLESS( *deviceInfo = PaUtil_GroupAllocateMemory( ossApi->allocations, sizeof (PaDeviceInfo) ), paInsufficientMemory );
-    PA_ENSURE( PaUtil_InitializeDeviceInfo( *deviceInfo, deviceName, ossApi->hostApiIndex, maxInputChannels, maxOutputChannels,
-                defaultLowInputLatency, defaultLowOutputLatency, defaultHighInputLatency, defaultHighOutputLatency, sampleRate,
-                ossApi->allocations ) );
-
-error:
-    return result;
-}
-
-/** Query host devices.
- *
- * Loop over host devices and query their capabilitiesu
- *
- * Aspect DeviceCapabilities: This function calls QueryDevice on each device entry and receives a filled in PaDeviceInfo object
- * per device, these are placed in the host api representation's deviceInfos array.
- */
-static PaError BuildDeviceList( PaOSSHostApiRepresentation *ossApi )
-{
-    PaError result = paNoError;
-    PaUtilHostApiRepresentation *commonApi = &ossApi->inheritedHostApiRep;
-    int i;
-    int numDevices = 0, maxDeviceInfos = 1;
-    PaDeviceInfo **deviceInfos = NULL;
-
-    /* These two will be set to the first working input and output device, respectively */
-    commonApi->info.defaultInputDevice = paNoDevice;
-    commonApi->info.defaultOutputDevice = paNoDevice;
-
-    /* Find devices by calling QueryDevice on each
-     * potential device names.  When we find a valid one,
-     * add it to a linked list.
-     * A: Set an arbitrary of 100 devices, should probably be a smarter way. */
-
-    for( i = 0; i < 100; i++ )
-    {
-       char deviceName[32];
-       PaDeviceInfo *deviceInfo;
-       int testResult;
-       struct stat stbuf;
-
-       if( i == 0 )
-          snprintf(deviceName, sizeof (deviceName), "%s", DEVICE_NAME_BASE);
-       else
-          snprintf(deviceName, sizeof (deviceName), "%s%d", DEVICE_NAME_BASE, i);
-
-       /* PA_DEBUG(("PaOSS BuildDeviceList: trying device %s\n", deviceName )); */
-       if( stat( deviceName, &stbuf ) < 0 )
-       {
-           if( ENOENT != errno )
-               PA_DEBUG(( "%s: Error stat'ing %s: %s\n", __FUNCTION__, deviceName, strerror( errno ) ));
-           continue;
-       }
-       if( (testResult = QueryDevice( deviceName, ossApi, &deviceInfo )) != paNoError )
-       {
-           if( testResult != paDeviceUnavailable )
-               PA_ENSURE( testResult );
-
-           continue;
-       }
-
-       ++numDevices;
-       if( !deviceInfos || numDevices > maxDeviceInfos )
-       {
-           maxDeviceInfos *= 2;
-           PA_UNLESS( deviceInfos = (PaDeviceInfo **) realloc( deviceInfos, maxDeviceInfos * sizeof (PaDeviceInfo *) ),
-                   paInsufficientMemory );
-       }
-       {
-           int devIdx = numDevices - 1;
-           deviceInfos[devIdx] = deviceInfo;
-
-           if( commonApi->info.defaultInputDevice == paNoDevice && deviceInfo->maxInputChannels > 0 )
-               commonApi->info.defaultInputDevice = devIdx;
-           if( commonApi->info.defaultOutputDevice == paNoDevice && deviceInfo->maxOutputChannels > 0 )
-               commonApi->info.defaultOutputDevice = devIdx;
-       }
-    }
-
-    /* Make an array of PaDeviceInfo pointers out of the linked list */
-
-    PA_DEBUG(("PaOSS %s: Total number of devices found: %d\n", __FUNCTION__, numDevices));
-
-    commonApi->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-        ossApi->allocations, sizeof(PaDeviceInfo*) * numDevices );
-    memcpy( commonApi->deviceInfos, deviceInfos, numDevices * sizeof (PaDeviceInfo *) );
-
-    commonApi->info.deviceCount = numDevices;
-
-error:
-    free( deviceInfos );
-
-    return result;
-}
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaOSSHostApiRepresentation *ossHostApi = (PaOSSHostApiRepresentation*)hostApi;
-
-    if( ossHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( ossHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( ossHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( ossHostApi );
-}
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    PaError result = paNoError;
-    PaDeviceIndex device;
-    PaDeviceInfo *deviceInfo;
-    char *deviceName;
-    int inputChannelCount, outputChannelCount;
-    int tempDevHandle = -1;
-    int flags;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        if( inputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-    }
-    else
-    {
-        inputChannelCount = 0;
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support inputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        if( outputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-    }
-    else
-    {
-        outputChannelCount = 0;
-    }
-
-    if (inputChannelCount == 0 && outputChannelCount == 0)
-        return paInvalidChannelCount;
-
-    /* if full duplex, make sure that they're the same device */
-
-    if (inputChannelCount > 0 && outputChannelCount > 0 &&
-        inputParameters->device != outputParameters->device)
-        return paInvalidDevice;
-
-    /* if full duplex, also make sure that they're the same number of channels */
-
-    if (inputChannelCount > 0 && outputChannelCount > 0 &&
-        inputChannelCount != outputChannelCount)
-       return paInvalidChannelCount;
-
-    /* open the device so we can do more tests */
-
-    if( inputChannelCount > 0 )
-    {
-        result = PaUtil_DeviceIndexToHostApiDeviceIndex(&device, inputParameters->device, hostApi);
-        if (result != paNoError)
-            return result;
-    }
-    else
-    {
-        result = PaUtil_DeviceIndexToHostApiDeviceIndex(&device, outputParameters->device, hostApi);
-        if (result != paNoError)
-            return result;
-    }
-
-    deviceInfo = hostApi->deviceInfos[device];
-    deviceName = (char *)deviceInfo->name;
-
-    flags = O_NONBLOCK;
-    if (inputChannelCount > 0 && outputChannelCount > 0)
-       flags |= O_RDWR;
-    else if (inputChannelCount > 0)
-       flags |= O_RDONLY;
-    else
-       flags |= O_WRONLY;
-
-    ENSURE_( tempDevHandle = open( deviceInfo->name, flags ), paDeviceUnavailable );
-
-    /* PaOssStream_Configure will do the rest of the checking for us */
-    /* PA_ENSURE( PaOssStream_Configure( tempDevHandle, deviceName, outputChannelCount, &sampleRate ) ); */
-
-    /* everything succeeded! */
-
- error:
-    if( tempDevHandle >= 0 )
-        close( tempDevHandle );
-
-    return result;
-}
-
-/** Validate stream parameters.
- *
- * Aspect StreamChannels: We verify that the number of channels is within the allowed range for the device
- */
-static PaError ValidateParameters( const PaStreamParameters *parameters, const PaDeviceInfo *deviceInfo, StreamMode mode )
-{
-    int maxChans;
-
-    assert( parameters );
-
-    if( parameters->device == paUseHostApiSpecificDeviceSpecification )
-    {
-        return paInvalidDevice;
-    }
-
-    maxChans = (mode == StreamMode_In ? deviceInfo->maxInputChannels :
-        deviceInfo->maxOutputChannels);
-    if( parameters->channelCount > maxChans )
-    {
-        return paInvalidChannelCount;
-    }
-
-    return paNoError;
-}
-
-static PaError PaOssStreamComponent_Initialize( PaOssStreamComponent *component, const PaStreamParameters *parameters,
-        int callbackMode, int fd, const char *deviceName )
-{
-    PaError result = paNoError;
-    assert( component );
-
-    memset( component, 0, sizeof (PaOssStreamComponent) );
-
-    component->fd = fd;
-    component->devName = deviceName;
-    component->userChannelCount = parameters->channelCount;
-    component->userFormat = parameters->sampleFormat;
-    component->latency = parameters->suggestedLatency;
-    component->userInterleaved = !(parameters->sampleFormat & paNonInterleaved);
-
-    if( !callbackMode && !component->userInterleaved )
-    {
-        /* Pre-allocate non-interleaved user provided buffers */
-        PA_UNLESS( component->userBuffers = PaUtil_AllocateMemory( sizeof (void *) * component->userChannelCount ),
-                paInsufficientMemory );
-    }
-
-error:
-    return result;
-}
-
-static void PaOssStreamComponent_Terminate( PaOssStreamComponent *component )
-{
-    assert( component );
-
-    if( component->fd >= 0 )
-        close( component->fd );
-    if( component->buffer )
-        PaUtil_FreeMemory( component->buffer );
-
-    if( component->userBuffers )
-        PaUtil_FreeMemory( component->userBuffers );
-
-    PaUtil_FreeMemory( component );
-}
-
-static PaError ModifyBlocking( int fd, int blocking )
-{
-    PaError result = paNoError;
-    int fflags;
-
-    ENSURE_( fflags = fcntl( fd, F_GETFL ), paUnanticipatedHostError );
-
-    if( blocking )
-        fflags &= ~O_NONBLOCK;
-    else
-        fflags |= O_NONBLOCK;
-
-    ENSURE_( fcntl( fd, F_SETFL, fflags ), paUnanticipatedHostError );
-
-error:
-    return result;
-}
-
-static PaError OpenDevices( const char *idevName, const char *odevName, int *idev, int *odev )
-{
-    PaError result = paNoError;
-    int flags = O_NONBLOCK, duplex = 0;
-    int enableBits = 0;
-    *idev = *odev = -1;
-
-    if( idevName && odevName )
-    {
-        duplex = 1;
-        flags |= O_RDWR;
-    }
-    else if( idevName )
-        flags |= O_RDONLY;
-    else
-        flags |= O_WRONLY;
-
-    /* open first in nonblocking mode, in case it's busy...
-     * A: then unset the non-blocking attribute */
-    assert( flags & O_NONBLOCK );
-    if( idevName )
-    {
-        ENSURE_( *idev = open( idevName, flags ), paDeviceUnavailable );
-        PA_ENSURE( ModifyBlocking( *idev, 1 ) ); /* Blocking */
-
-        /* Initially disable */
-        enableBits = ~PCM_ENABLE_INPUT;
-        ENSURE_( ioctl( *idev, SNDCTL_DSP_SETTRIGGER, &enableBits ), paUnanticipatedHostError );
-    }
-    if( odevName )
-    {
-        if( !idevName )
-        {
-            ENSURE_( *odev = open( odevName, flags ), paDeviceUnavailable );
-            PA_ENSURE( ModifyBlocking( *odev, 1 ) ); /* Blocking */
-
-            /* Initially disable */
-            enableBits = ~PCM_ENABLE_OUTPUT;
-            ENSURE_( ioctl( *odev, SNDCTL_DSP_SETTRIGGER, &enableBits ), paUnanticipatedHostError );
-        }
-        else
-        {
-            ENSURE_( *odev = dup( *idev ), paUnanticipatedHostError );
-        }
-    }
-
-error:
-    return result;
-}
-
-static PaError PaOssStream_Initialize( PaOssStream *stream, const PaStreamParameters *inputParameters, const PaStreamParameters *outputParameters,
-        PaStreamCallback callback, void *userData, PaStreamFlags streamFlags,
-        PaOSSHostApiRepresentation *ossApi )
-{
-    PaError result = paNoError;
-    int idev, odev;
-    PaUtilHostApiRepresentation *hostApi = &ossApi->inheritedHostApiRep;
-    const char *idevName = NULL, *odevName = NULL;
-
-    assert( stream );
-
-    memset( stream, 0, sizeof (PaOssStream) );
-    stream->isStopped = 1;
-
-    PA_ENSURE( PaUtil_InitializeThreading( &stream->threading ) );
-
-    if( inputParameters && outputParameters )
-    {
-        if( inputParameters->device == outputParameters->device )
-            stream->sharedDevice = 1;
-    }
-
-    if( inputParameters )
-        idevName = hostApi->deviceInfos[inputParameters->device]->name;
-    if( outputParameters )
-        odevName = hostApi->deviceInfos[outputParameters->device]->name;
-    PA_ENSURE( OpenDevices( idevName, odevName, &idev, &odev ) );
-    if( inputParameters )
-    {
-        PA_UNLESS( stream->capture = PaUtil_AllocateMemory( sizeof (PaOssStreamComponent) ), paInsufficientMemory );
-        PA_ENSURE( PaOssStreamComponent_Initialize( stream->capture, inputParameters, callback != NULL, idev, idevName ) );
-    }
-    if( outputParameters )
-    {
-        PA_UNLESS( stream->playback = PaUtil_AllocateMemory( sizeof (PaOssStreamComponent) ), paInsufficientMemory );
-        PA_ENSURE( PaOssStreamComponent_Initialize( stream->playback, outputParameters, callback != NULL, odev, odevName ) );
-    }
-
-    if( callback != NULL )
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &ossApi->callbackStreamInterface, callback, userData );
-        stream->callbackMode = 1;
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &ossApi->blockingStreamInterface, callback, userData );
-    }
-
-    ENSURE_( sem_init( &stream->semaphore, 0, 0 ), paInternalError );
-
-error:
-    return result;
-}
-
-static void PaOssStream_Terminate( PaOssStream *stream )
-{
-    assert( stream );
-
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-    PaUtil_TerminateThreading( &stream->threading );
-
-    if( stream->capture )
-        PaOssStreamComponent_Terminate( stream->capture );
-    if( stream->playback )
-        PaOssStreamComponent_Terminate( stream->playback );
-
-    sem_destroy( &stream->semaphore );
-
-    PaUtil_FreeMemory( stream );
-}
-
-/** Translate from PA format to OSS native.
- *
- */
-static PaError Pa2OssFormat( PaSampleFormat paFormat, int *ossFormat )
-{
-    switch( paFormat )
-    {
-        case paUInt8:
-            *ossFormat = AFMT_U8;
-            break;
-        case paInt8:
-            *ossFormat = AFMT_S8;
-            break;
-        case paInt16:
-            *ossFormat = AFMT_S16_NE;
-            break;
-        default:
-            return paInternalError;     /* This shouldn't happen */
-    }
-
-    return paNoError;
-}
-
-/** Return the PA-compatible formats that this device can support.
- *
- */
-static PaError GetAvailableFormats( PaOssStreamComponent *component, PaSampleFormat *availableFormats )
-{
-    PaError result = paNoError;
-    int mask = 0;
-    PaSampleFormat frmts = 0;
-
-    ENSURE_( ioctl( component->fd, SNDCTL_DSP_GETFMTS, &mask ), paUnanticipatedHostError );
-    if( mask & AFMT_U8 )
-        frmts |= paUInt8;
-    if( mask & AFMT_S8 )
-        frmts |= paInt8;
-    if( mask & AFMT_S16_NE )
-        frmts |= paInt16;
-    else
-        result = paSampleFormatNotSupported;
-
-    *availableFormats = frmts;
-
-error:
-    return result;
-}
-
-static unsigned int PaOssStreamComponent_FrameSize( PaOssStreamComponent *component )
-{
-    return Pa_GetSampleSize( component->hostFormat ) * component->hostChannelCount;
-}
-
-/** Buffer size in bytes.
- *
- */
-static unsigned long PaOssStreamComponent_BufferSize( PaOssStreamComponent *component )
-{
-    return PaOssStreamComponent_FrameSize( component ) * component->hostFrames * component->numBufs;
-}
-
-static int CalcHigherLogTwo( int n )
-{
-    int log2 = 0;
-    while( (1<<log2) < n ) log2++;
-    return log2;
-}
-
-static PaError PaOssStreamComponent_Configure( PaOssStreamComponent *component, double sampleRate, unsigned long
-        framesPerBuffer, StreamMode streamMode, PaOssStreamComponent *master )
-{
-    PaError result = paNoError;
-    int temp, nativeFormat;
-    int sr = (int)sampleRate;
-    PaSampleFormat availableFormats = 0, hostFormat = 0;
-    int chans = component->userChannelCount;
-    int frgmt;
-    int numBufs;
-    int bytesPerBuf;
-    unsigned long bufSz;
-    unsigned long fragSz;
-    audio_buf_info bufInfo;
-
-    /* We may have a situation where only one component (the master) is configured, if both point to the same device.
-     * In that case, the second component will copy settings from the other */
-    if( !master )
-    {
-        /* Aspect BufferSettings: If framesPerBuffer is unspecified we have to infer a suitable fragment size.
-         * The hardware need not respect the requested fragment size, so we may have to adapt.
-         */
-        if( framesPerBuffer == paFramesPerBufferUnspecified )
-        {
-            bufSz = (unsigned long)(component->latency * sampleRate);
-            fragSz = bufSz / 4;
-        }
-        else
-        {
-            fragSz = framesPerBuffer;
-            bufSz = (unsigned long)(component->latency * sampleRate) + fragSz; /* Latency + 1 buffer */
-        }
-
-        PA_ENSURE( GetAvailableFormats( component, &availableFormats ) );
-        hostFormat = PaUtil_SelectClosestAvailableFormat( availableFormats, component->userFormat );
-
-        /* OSS demands at least 2 buffers, and 16 bytes per buffer */
-        numBufs = (int)PA_MAX( bufSz / fragSz, 2 );
-        bytesPerBuf = PA_MAX( fragSz * Pa_GetSampleSize( hostFormat ) * chans, 16 );
-
-        /* The fragment parameters are encoded like this:
-         * Most significant byte: number of fragments
-         * Least significant byte: exponent of fragment size (i.e., for 256, 8)
-         */
-        frgmt = (numBufs << 16) + (CalcHigherLogTwo( bytesPerBuf ) & 0xffff);
-        ENSURE_( ioctl( component->fd, SNDCTL_DSP_SETFRAGMENT, &frgmt ), paUnanticipatedHostError );
-
-        /* A: according to the OSS programmer's guide parameters should be set in this order:
-         * format, channels, rate */
-
-        /* This format should be deemed good before we get this far */
-        PA_ENSURE( Pa2OssFormat( hostFormat, &temp ) );
-        nativeFormat = temp;
-        ENSURE_( ioctl( component->fd, SNDCTL_DSP_SETFMT, &temp ), paUnanticipatedHostError );
-        PA_UNLESS( temp == nativeFormat, paInternalError );
-
-        /* try to set the number of channels */
-        ENSURE_( ioctl( component->fd, SNDCTL_DSP_CHANNELS, &chans ), paSampleFormatNotSupported );   /* XXX: Should be paInvalidChannelCount? */
-        /* It's possible that the minimum number of host channels is greater than what the user requested */
-        PA_UNLESS( chans >= component->userChannelCount, paInvalidChannelCount );
-
-        /* try to set the sample rate */
-        ENSURE_( ioctl( component->fd, SNDCTL_DSP_SPEED, &sr ), paInvalidSampleRate );
-
-        /* reject if there's no sample rate within 1% of the one requested */
-        if( (fabs( sampleRate - sr ) / sampleRate) > 0.01 )
-        {
-            PA_DEBUG(("%s: Wanted %f, closest sample rate was %d\n", __FUNCTION__, sampleRate, sr ));
-            PA_ENSURE( paInvalidSampleRate );
-        }
-
-        ENSURE_( ioctl( component->fd, streamMode == StreamMode_In ? SNDCTL_DSP_GETISPACE : SNDCTL_DSP_GETOSPACE, &bufInfo ),
-                paUnanticipatedHostError );
-        component->numBufs = bufInfo.fragstotal;
-
-        /* This needs to be the last ioctl call before the first read/write, according to the OSS programmer's guide */
-        ENSURE_( ioctl( component->fd, SNDCTL_DSP_GETBLKSIZE, &bytesPerBuf ), paUnanticipatedHostError );
-
-        component->hostFrames = bytesPerBuf / Pa_GetSampleSize( hostFormat ) / chans;
-        component->hostChannelCount = chans;
-        component->hostFormat = hostFormat;
-    }
-    else
-    {
-        component->hostFormat = master->hostFormat;
-        component->hostFrames = master->hostFrames;
-        component->hostChannelCount = master->hostChannelCount;
-        component->numBufs = master->numBufs;
-    }
-
-    PA_UNLESS( component->buffer = PaUtil_AllocateMemory( PaOssStreamComponent_BufferSize( component ) ),
-            paInsufficientMemory );
-
-error:
-    return result;
-}
-
-static PaError PaOssStreamComponent_Read( PaOssStreamComponent *component, unsigned long *frames )
-{
-    PaError result = paNoError;
-    size_t len = *frames * PaOssStreamComponent_FrameSize( component );
-    ssize_t bytesRead;
-
-    ENSURE_( bytesRead = read( component->fd, component->buffer, len ), paUnanticipatedHostError );
-    *frames = bytesRead / PaOssStreamComponent_FrameSize( component );
-    /* TODO: Handle condition where number of frames read doesn't equal number of frames requested */
-
-error:
-    return result;
-}
-
-static PaError PaOssStreamComponent_Write( PaOssStreamComponent *component, unsigned long *frames )
-{
-    PaError result = paNoError;
-    size_t len = *frames * PaOssStreamComponent_FrameSize( component );
-    ssize_t bytesWritten;
-
-    ENSURE_( bytesWritten = write( component->fd, component->buffer, len ), paUnanticipatedHostError );
-    *frames = bytesWritten / PaOssStreamComponent_FrameSize( component );
-    /* TODO: Handle condition where number of frames written doesn't equal number of frames requested */
-
-error:
-    return result;
-}
-
-/** Configure the stream according to input/output parameters.
- *
- * Aspect StreamChannels: The minimum number of channels supported by the device may exceed that requested by
- * the user, if so we'll record the actual number of host channels and adapt later.
- */
-static PaError PaOssStream_Configure( PaOssStream *stream, double sampleRate, unsigned long framesPerBuffer,
-        double *inputLatency, double *outputLatency )
-{
-    PaError result = paNoError;
-    int duplex = stream->capture && stream->playback;
-    unsigned long framesPerHostBuffer = 0;
-
-    /* We should request full duplex first thing after opening the device */
-    if( duplex && stream->sharedDevice )
-        ENSURE_( ioctl( stream->capture->fd, SNDCTL_DSP_SETDUPLEX, 0 ), paUnanticipatedHostError );
-
-    if( stream->capture )
-    {
-        PaOssStreamComponent *component = stream->capture;
-        PA_ENSURE( PaOssStreamComponent_Configure( component, sampleRate, framesPerBuffer, StreamMode_In,
-                    NULL ) );
-
-        assert( component->hostChannelCount > 0 );
-        assert( component->hostFrames > 0 );
-
-        *inputLatency = component->hostFrames * (component->numBufs - 1) / sampleRate;
-    }
-    if( stream->playback )
-    {
-        PaOssStreamComponent *component = stream->playback, *master = stream->sharedDevice ? stream->capture : NULL;
-        PA_ENSURE( PaOssStreamComponent_Configure( component, sampleRate, framesPerBuffer, StreamMode_Out,
-                    master ) );
-
-        assert( component->hostChannelCount > 0 );
-        assert( component->hostFrames > 0 );
-
-        *outputLatency = component->hostFrames * (component->numBufs - 1) / sampleRate;
-    }
-
-    if( duplex )
-        framesPerHostBuffer = PA_MIN( stream->capture->hostFrames, stream->playback->hostFrames );
-    else if( stream->capture )
-        framesPerHostBuffer = stream->capture->hostFrames;
-    else if( stream->playback )
-        framesPerHostBuffer = stream->playback->hostFrames;
-
-    stream->framesPerHostBuffer = framesPerHostBuffer;
-    stream->pollTimeout = (int) ceil( 1e6 * framesPerHostBuffer / sampleRate );    /* Period in usecs, rounded up */
-
-    stream->sampleRate = stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-error:
-    return result;
-}
-
-/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */
-
-/** Open a PA OSS stream.
- *
- * Aspect StreamChannels: The number of channels is specified per direction (in/out), and can differ between the
- * two. However, OSS doesn't support separate configuration spaces for capture and playback so if both
- * directions are the same device we will demand the same number of channels. The number of channels can range
- * from 1 to the maximum supported by the device.
- *
- * Aspect BufferSettings: If framesPerBuffer != paFramesPerBufferUnspecified the number of frames per callback
- * must reflect this, in addition the host latency per device should approximate the corresponding
- * suggestedLatency. Based on these constraints we need to determine a number of frames per host buffer that
- * both capture and playback can agree on (they can be different devices), the buffer processor can adapt
- * between host and user buffer size, but the ratio should preferably be integral.
- */
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaOSSHostApiRepresentation *ossHostApi = (PaOSSHostApiRepresentation*)hostApi;
-    PaOssStream *stream = NULL;
-    int inputChannelCount = 0, outputChannelCount = 0;
-    PaSampleFormat inputSampleFormat = 0, outputSampleFormat = 0, inputHostFormat = 0, outputHostFormat = 0;
-    const PaDeviceInfo *inputDeviceInfo = 0, *outputDeviceInfo = 0;
-    int bpInitialized = 0;
-    double inLatency = 0., outLatency = 0.;
-    int i = 0;
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-    if( inputParameters )
-    {
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-        inputDeviceInfo = hostApi->deviceInfos[inputParameters->device];
-        PA_ENSURE( ValidateParameters( inputParameters, inputDeviceInfo, StreamMode_In ) );
-
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-    }
-    if( outputParameters )
-    {
-        outputDeviceInfo = hostApi->deviceInfos[outputParameters->device];
-        PA_ENSURE( ValidateParameters( outputParameters, outputDeviceInfo, StreamMode_Out ) );
-
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-    }
-
-    /* Aspect StreamChannels: We currently demand that number of input and output channels are the same, if the same
-     * device is opened for both directions
-     */
-    if( inputChannelCount > 0 && outputChannelCount > 0 )
-    {
-        if( inputParameters->device == outputParameters->device )
-        {
-            if( inputParameters->channelCount != outputParameters->channelCount )
-                return paInvalidChannelCount;
-        }
-    }
-
-    /* Round framesPerBuffer to the next power-of-two to make OSS happy. */
-    if( framesPerBuffer != paFramesPerBufferUnspecified )
-    {
-        framesPerBuffer &= INT_MAX;
-        for (i = 1; framesPerBuffer > i; i <<= 1) ;
-        framesPerBuffer = i;
-    }
-
-    /* allocate and do basic initialization of the stream structure */
-    PA_UNLESS( stream = (PaOssStream*)PaUtil_AllocateMemory( sizeof(PaOssStream) ), paInsufficientMemory );
-    PA_ENSURE( PaOssStream_Initialize( stream, inputParameters, outputParameters, streamCallback, userData, streamFlags, ossHostApi ) );
-
-    PA_ENSURE( PaOssStream_Configure( stream, sampleRate, framesPerBuffer, &inLatency, &outLatency ) );
-
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-    if( inputParameters )
-    {
-        inputHostFormat = stream->capture->hostFormat;
-        stream->streamRepresentation.streamInfo.inputLatency = inLatency +
-            PaUtil_GetBufferProcessorInputLatency( &stream->bufferProcessor ) / sampleRate;
-    }
-    if( outputParameters )
-    {
-        outputHostFormat = stream->playback->hostFormat;
-        stream->streamRepresentation.streamInfo.outputLatency = outLatency +
-            PaUtil_GetBufferProcessorOutputLatency( &stream->bufferProcessor ) / sampleRate;
-    }
-
-    /* Initialize buffer processor with fixed host buffer size.
-     * Aspect StreamSampleFormat: Here we commit the user and host sample formats, PA infrastructure will
-     * convert between the two.
-     */
-    PA_ENSURE( PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-              inputChannelCount, inputSampleFormat, inputHostFormat, outputChannelCount, outputSampleFormat,
-              outputHostFormat, sampleRate, streamFlags, framesPerBuffer, stream->framesPerHostBuffer,
-              paUtilFixedHostBufferSize, streamCallback, userData ) );
-    bpInitialized = 1;
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-    if( bpInitialized )
-        PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    if( stream )
-        PaOssStream_Terminate( stream );
-
-    return result;
-}
-
-/*! Poll on I/O filedescriptors.
-
-  Poll till we've determined there's data for read or write. In the full-duplex case,
-  we don't want to hang around forever waiting for either input or output frames, so
-  whenever we have a timed out filedescriptor we check if we're nearing under/overrun
-  for the other direction (critical limit set at one buffer). If so, we exit the waiting
-  state, and go on with what we got. We align the number of frames on a host buffer
-  boundary because it is possible that the buffer size differs for the two directions and
-  the host buffer size is a compromise between the two.
-  */
-static PaError PaOssStream_WaitForFrames( PaOssStream *stream, unsigned long *frames )
-{
-    PaError result = paNoError;
-    int pollPlayback = 0, pollCapture = 0;
-    int captureAvail = INT_MAX, playbackAvail = INT_MAX, commonAvail;
-    audio_buf_info bufInfo;
-    /* int ofs = 0, nfds = stream->nfds; */
-    fd_set readFds, writeFds;
-    int nfds = 0;
-    struct timeval selectTimeval = {0, 0};
-    unsigned long timeout = stream->pollTimeout;    /* In usecs */
-    int captureFd = -1, playbackFd = -1;
-
-    assert( stream );
-    assert( frames );
-
-    if( stream->capture )
-    {
-        pollCapture = 1;
-        captureFd = stream->capture->fd;
-        /* stream->capture->pfd->events = POLLIN; */
-    }
-    if( stream->playback )
-    {
-        pollPlayback = 1;
-        playbackFd = stream->playback->fd;
-        /* stream->playback->pfd->events = POLLOUT; */
-    }
-
-    FD_ZERO( &readFds );
-    FD_ZERO( &writeFds );
-
-    while( pollPlayback || pollCapture )
-    {
-        pthread_testcancel();
-
-        /* select may modify the timeout parameter */
-        selectTimeval.tv_usec = timeout;
-        nfds = 0;
-
-        if( pollCapture )
-        {
-            FD_SET( captureFd, &readFds );
-            nfds = captureFd + 1;
-        }
-        if( pollPlayback )
-        {
-            FD_SET( playbackFd, &writeFds );
-            nfds = PA_MAX( nfds, playbackFd + 1 );
-        }
-        ENSURE_( select( nfds, &readFds, &writeFds, NULL, &selectTimeval ), paUnanticipatedHostError );
-        /*
-        if( poll( stream->pfds + ofs, nfds, stream->pollTimeout ) < 0 )
-        {
-
-            ENSURE_( -1, paUnanticipatedHostError );
-        }
-        */
-        pthread_testcancel();
-
-        if( pollCapture )
-        {
-            if( FD_ISSET( captureFd, &readFds ) )
-            {
-                FD_CLR( captureFd, &readFds );
-                pollCapture = 0;
-            }
-            /*
-            if( stream->capture->pfd->revents & POLLIN )
-            {
-                --nfds;
-                ++ofs;
-                pollCapture = 0;
-            }
-            */
-            else if( stream->playback ) /* Timed out, go on with playback? */
-            {
-                /*PA_DEBUG(( "%s: Trying to poll again for capture frames, pollTimeout: %d\n",
-                            __FUNCTION__, stream->pollTimeout ));*/
-            }
-        }
-        if( pollPlayback )
-        {
-            if( FD_ISSET( playbackFd, &writeFds ) )
-            {
-                FD_CLR( playbackFd, &writeFds );
-                pollPlayback = 0;
-            }
-            /*
-            if( stream->playback->pfd->revents & POLLOUT )
-            {
-                --nfds;
-                pollPlayback = 0;
-            }
-            */
-            else if( stream->capture )  /* Timed out, go on with capture? */
-            {
-                /*PA_DEBUG(( "%s: Trying to poll again for playback frames, pollTimeout: %d\n\n",
-                            __FUNCTION__, stream->pollTimeout ));*/
-            }
-        }
-    }
-
-    if( stream->capture )
-    {
-        ENSURE_( ioctl( captureFd, SNDCTL_DSP_GETISPACE, &bufInfo ), paUnanticipatedHostError );
-        captureAvail = bufInfo.fragments * stream->capture->hostFrames;
-        if( !captureAvail )
-            PA_DEBUG(( "%s: captureAvail: 0\n", __FUNCTION__ ));
-
-        captureAvail = captureAvail == 0 ? INT_MAX : captureAvail;      /* Disregard if zero */
-    }
-    if( stream->playback )
-    {
-        ENSURE_( ioctl( playbackFd, SNDCTL_DSP_GETOSPACE, &bufInfo ), paUnanticipatedHostError );
-        playbackAvail = bufInfo.fragments * stream->playback->hostFrames;
-        if( !playbackAvail )
-        {
-            PA_DEBUG(( "%s: playbackAvail: 0\n", __FUNCTION__ ));
-        }
-
-        playbackAvail = playbackAvail == 0 ? INT_MAX : playbackAvail;      /* Disregard if zero */
-    }
-
-    commonAvail = PA_MIN( captureAvail, playbackAvail );
-    if( commonAvail == INT_MAX )
-        commonAvail = 0;
-    commonAvail -= commonAvail % stream->framesPerHostBuffer;
-
-    assert( commonAvail != INT_MAX );
-    assert( commonAvail >= 0 );
-    *frames = commonAvail;
-
-error:
-    return result;
-}
-
-/** Prepare stream for capture/playback.
- *
- * In order to synchronize capture and playback properly we use the SETTRIGGER command.
- */
-static PaError PaOssStream_Prepare( PaOssStream *stream )
-{
-    PaError result = paNoError;
-    int enableBits = 0;
-
-    if( stream->triggered )
-        return result;
-
-    if( stream->playback )
-    {
-        size_t bufSz = PaOssStreamComponent_BufferSize( stream->playback );
-        memset( stream->playback->buffer, 0, bufSz );
-
-        /* Looks like we have to turn off blocking before we try this, but if we don't fill the buffer
-         * OSS will complain. */
-        PA_ENSURE( ModifyBlocking( stream->playback->fd, 0 ) );
-        while (1)
-        {
-            if( write( stream->playback->fd, stream->playback->buffer, bufSz ) < 0 )
-                break;
-        }
-        PA_ENSURE( ModifyBlocking( stream->playback->fd, 1 ) );
-    }
-
-    if( stream->sharedDevice )
-    {
-        enableBits = PCM_ENABLE_INPUT | PCM_ENABLE_OUTPUT;
-        ENSURE_( ioctl( stream->capture->fd, SNDCTL_DSP_SETTRIGGER, &enableBits ), paUnanticipatedHostError );
-    }
-    else
-    {
-        if( stream->capture )
-        {
-            enableBits = PCM_ENABLE_INPUT;
-            ENSURE_( ioctl( stream->capture->fd, SNDCTL_DSP_SETTRIGGER, &enableBits ), paUnanticipatedHostError );
-        }
-        if( stream->playback )
-        {
-            enableBits = PCM_ENABLE_OUTPUT;
-            ENSURE_( ioctl( stream->playback->fd, SNDCTL_DSP_SETTRIGGER, &enableBits ), paUnanticipatedHostError );
-        }
-    }
-
-    /* Ok, we have triggered the stream */
-    stream->triggered = 1;
-
-error:
-    return result;
-}
-
-/** Stop audio processing
- *
- */
-static PaError PaOssStream_Stop( PaOssStream *stream, int abort )
-{
-    PaError result = paNoError;
-
-    /* Looks like the only safe way to stop audio without reopening the device is SNDCTL_DSP_POST.
-     * Also disable capture/playback till the stream is started again */
-    if( stream->capture )
-    {
-        ENSURE_( ioctl( stream->capture->fd, SNDCTL_DSP_POST, 0 ), paUnanticipatedHostError );
-    }
-    if( stream->playback && !stream->sharedDevice )
-    {
-        ENSURE_( ioctl( stream->playback->fd, SNDCTL_DSP_POST, 0 ), paUnanticipatedHostError );
-    }
-
-error:
-    return result;
-}
-
-/** Clean up after thread exit.
- *
- * Aspect StreamState: If the user has registered a streamFinishedCallback it will be called here
- */
-static void OnExit( void *data )
-{
-    PaOssStream *stream = (PaOssStream *) data;
-    assert( data );
-
-    PaUtil_ResetCpuLoadMeasurer( &stream->cpuLoadMeasurer );
-
-    PaOssStream_Stop( stream, stream->callbackAbort );
-
-    PA_DEBUG(( "OnExit: Stoppage\n" ));
-
-    /* Eventually notify user all buffers have played */
-    if( stream->streamRepresentation.streamFinishedCallback )
-        stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-
-    stream->callbackAbort = 0;      /* Clear state */
-    stream->isActive = 0;
-}
-
-static PaError SetUpBuffers( PaOssStream *stream, unsigned long framesAvail )
-{
-    PaError result = paNoError;
-
-    if( stream->capture )
-    {
-        PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, 0, stream->capture->buffer,
-                stream->capture->hostChannelCount );
-        PaUtil_SetInputFrameCount( &stream->bufferProcessor, framesAvail );
-    }
-    if( stream->playback )
-    {
-        PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, 0, stream->playback->buffer,
-                stream->playback->hostChannelCount );
-        PaUtil_SetOutputFrameCount( &stream->bufferProcessor, framesAvail );
-    }
-
-    return result;
-}
-
-/** Thread procedure for callback processing.
- *
- * Aspect StreamState: StartStream will wait on this to initiate audio processing, useful in case the
- * callback should be used for buffer priming. When the stream is cancelled a separate function will
- * take care of the transition to the Callback Finished state (the stream isn't considered Stopped
- * before StopStream() or AbortStream() are called).
- */
-static void *PaOSS_AudioThreadProc( void *userData )
-{
-    PaError result = paNoError;
-    PaOssStream *stream = (PaOssStream*)userData;
-    unsigned long framesAvail = 0, framesProcessed = 0;
-    int callbackResult = paContinue;
-    int triggered = stream->triggered;  /* See if SNDCTL_DSP_TRIGGER has been issued already */
-    int initiateProcessing = triggered;    /* Already triggered? */
-    PaStreamCallbackFlags cbFlags = 0;  /* We might want to keep state across iterations */
-    PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /* TODO: IMPLEMENT ME */
-
-    /*
-#if ( SOUND_VERSION > 0x030904 )
-        audio_errinfo errinfo;
-#endif
-*/
-
-    assert( stream );
-
-    pthread_cleanup_push( &OnExit, stream );	/* Execute OnExit when exiting */
-
-    /* The first time the stream is started we use SNDCTL_DSP_TRIGGER to accurately start capture and
-     * playback in sync, when the stream is restarted after being stopped we simply start by reading/
-     * writing.
-     */
-    PA_ENSURE( PaOssStream_Prepare( stream ) );
-
-    /* If we are to initiate processing implicitly by reading/writing data, we start off in blocking mode */
-    if( initiateProcessing )
-    {
-        /* Make sure devices are in blocking mode */
-        if( stream->capture )
-            ModifyBlocking( stream->capture->fd, 1 );
-        if( stream->playback )
-            ModifyBlocking( stream->playback->fd, 1 );
-    }
-
-    while( 1 )
-    {
-        pthread_testcancel();
-
-        if( stream->callbackStop && callbackResult == paContinue )
-        {
-            PA_DEBUG(( "Setting callbackResult to paComplete\n" ));
-            callbackResult = paComplete;
-        }
-
-        /* Aspect StreamState: Because of the messy OSS scheme we can't explicitly trigger device start unless
-         * the stream has been recently started, we will have to go right ahead and read/write in blocking
-         * fashion to trigger operation. Therefore we begin with processing one host buffer before we switch
-         * to non-blocking mode.
-         */
-        if( !initiateProcessing )
-        {
-            /* Wait on available frames */
-            PA_ENSURE( PaOssStream_WaitForFrames( stream, &framesAvail ) );
-            assert( framesAvail % stream->framesPerHostBuffer == 0 );
-        }
-        else
-        {
-            framesAvail = stream->framesPerHostBuffer;
-        }
-
-        while( framesAvail > 0 )
-        {
-            unsigned long frames = framesAvail;
-
-            pthread_testcancel();
-
-            PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-
-            /* Read data */
-            if ( stream->capture )
-            {
-                PA_ENSURE( PaOssStreamComponent_Read( stream->capture, &frames ) );
-                if( frames < framesAvail )
-                {
-                    PA_DEBUG(( "Read %lu less frames than requested\n", framesAvail - frames ));
-                    framesAvail = frames;
-                }
-            }
-
-#if ( SOUND_VERSION >= 0x030904 )
-            /*
-               Check with OSS to see if there have been any under/overruns
-               since last time we checked.
-               */
-            /*
-            if( ioctl( stream->deviceHandle, SNDCTL_DSP_GETERROR, &errinfo ) >= 0 )
-            {
-                if( errinfo.play_underruns )
-                    cbFlags |= paOutputUnderflow ;
-                if( errinfo.record_underruns )
-                    cbFlags |= paInputUnderflow ;
-            }
-            else
-                PA_DEBUG(( "SNDCTL_DSP_GETERROR command failed: %s\n", strerror( errno ) ));
-                */
-#endif
-
-            PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo,
-                    cbFlags );
-            cbFlags = 0;
-            PA_ENSURE( SetUpBuffers( stream, framesAvail ) );
-
-            framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor,
-                    &callbackResult );
-            assert( framesProcessed == framesAvail );
-            PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed );
-
-            if ( stream->playback )
-            {
-                frames = framesAvail;
-
-                PA_ENSURE( PaOssStreamComponent_Write( stream->playback, &frames ) );
-                if( frames < framesAvail )
-                {
-                    /* TODO: handle bytesWritten != bytesRequested (slippage?) */
-                    PA_DEBUG(( "Wrote %lu less frames than requested\n", framesAvail - frames ));
-                }
-            }
-
-            framesAvail -= framesProcessed;
-            stream->framesProcessed += framesProcessed;
-
-            if( callbackResult != paContinue )
-                break;
-        }
-
-        if( initiateProcessing || !triggered )
-        {
-            /* Non-blocking */
-            if( stream->capture )
-                PA_ENSURE( ModifyBlocking( stream->capture->fd, 0 ) );
-            if( stream->playback && !stream->sharedDevice )
-                PA_ENSURE( ModifyBlocking( stream->playback->fd, 0 ) );
-
-            initiateProcessing = 0;
-            sem_post( &stream->semaphore );
-        }
-
-        if( callbackResult != paContinue )
-        {
-            stream->callbackAbort = callbackResult == paAbort;
-            if( stream->callbackAbort || PaUtil_IsBufferProcessorOutputEmpty( &stream->bufferProcessor ) )
-                break;
-        }
-    }
-
-    pthread_cleanup_pop( 1 );
-
-error:
-    pthread_exit( NULL );
-}
-
-/** Close the stream.
- *
- */
-static PaError CloseStream( PaStream* s )
-{
-    PaError result = paNoError;
-    PaOssStream *stream = (PaOssStream*)s;
-
-    assert( stream );
-
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaOssStream_Terminate( stream );
-
-    return result;
-}
-
-/** Start the stream.
- *
- * Aspect StreamState: After returning, the stream shall be in the Active state, implying that an eventual
- * callback will be repeatedly called in a separate thread. If a separate thread is started this function
- * will block untill it has started processing audio, otherwise audio processing is started directly.
- */
-static PaError StartStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaOssStream *stream = (PaOssStream*)s;
-
-    stream->isActive = 1;
-    stream->isStopped = 0;
-    stream->lastPosPtr = 0;
-    stream->lastStreamBytes = 0;
-    stream->framesProcessed = 0;
-
-    /* only use the thread for callback streams */
-    if( stream->bufferProcessor.streamCallback )
-    {
-        PA_ENSURE( PaUtil_StartThreading( &stream->threading, &PaOSS_AudioThreadProc, stream ) );
-        sem_wait( &stream->semaphore );
-    }
-    else
-        PA_ENSURE( PaOssStream_Prepare( stream ) );
-
-error:
-    return result;
-}
-
-static PaError RealStop( PaOssStream *stream, int abort )
-{
-    PaError result = paNoError;
-
-    if( stream->callbackMode )
-    {
-        if( abort )
-            stream->callbackAbort = 1;
-        else
-            stream->callbackStop = 1;
-
-        PA_ENSURE( PaUtil_CancelThreading( &stream->threading, !abort, NULL ) );
-
-        stream->callbackStop = stream->callbackAbort = 0;
-    }
-    else
-        PA_ENSURE( PaOssStream_Stop( stream, abort ) );
-
-    stream->isStopped = 1;
-
-error:
-    return result;
-}
-
-/** Stop the stream.
- *
- * Aspect StreamState: This will cause the stream to transition to the Stopped state, playing all enqueued
- * buffers.
- */
-static PaError StopStream( PaStream *s )
-{
-    return RealStop( (PaOssStream *)s, 0 );
-}
-
-/** Abort the stream.
- *
- * Aspect StreamState: This will cause the stream to transition to the Stopped state, discarding all enqueued
- * buffers. Note that the buffers are not currently correctly discarded, this is difficult without closing
- * the OSS device.
- */
-static PaError AbortStream( PaStream *s )
-{
-    return RealStop( (PaOssStream *)s, 1 );
-}
-
-/** Is the stream in the Stopped state.
- *
- */
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-
-    return (stream->isStopped);
-}
-
-/** Is the stream in the Active state.
- *
- */
-static PaError IsStreamActive( PaStream *s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-
-    return (stream->isActive);
-}
-
-static PaTime GetStreamTime( PaStream *s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-    count_info info;
-    int delta;
-
-    if( stream->playback ) {
-        if( ioctl( stream->playback->fd, SNDCTL_DSP_GETOPTR, &info) == 0 ) {
-            delta = ( info.bytes - stream->lastPosPtr ) /* & 0x000FFFFF*/;
-            return (float)(stream->lastStreamBytes + delta) / PaOssStreamComponent_FrameSize( stream->playback ) / stream->sampleRate;
-        }
-    }
-    else {
-        if (ioctl( stream->capture->fd, SNDCTL_DSP_GETIPTR, &info) == 0) {
-            delta = (info.bytes - stream->lastPosPtr) /*& 0x000FFFFF*/;
-            return (float)(stream->lastStreamBytes + delta) / PaOssStreamComponent_FrameSize( stream->capture ) / stream->sampleRate;
-        }
-    }
-
-    /* the ioctl failed, but we can still give a coarse estimate */
-
-    return stream->framesProcessed / stream->sampleRate;
-}
-
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
-
-
-/*
-    As separate stream interfaces are used for blocking and callback
-    streams, the following functions can be guaranteed to only be called
-    for blocking streams.
-*/
-
-
-static PaError ReadStream( PaStream* s,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-    int bytesRequested, bytesRead;
-    unsigned long framesRequested;
-    void *userBuffer;
-
-    /* If user input is non-interleaved, PaUtil_CopyInput will manipulate the channel pointers,
-     * so we copy the user provided pointers */
-    if( stream->bufferProcessor.userInputIsInterleaved )
-        userBuffer = buffer;
-    else /* Copy channels into local array */
-    {
-        userBuffer = stream->capture->userBuffers;
-        memcpy( (void *)userBuffer, buffer, sizeof (void *) * stream->capture->userChannelCount );
-    }
-
-    while( frames )
-    {
-        framesRequested = PA_MIN( frames, stream->capture->hostFrames );
-
-	bytesRequested = framesRequested * PaOssStreamComponent_FrameSize( stream->capture );
-	bytesRead = read( stream->capture->fd, stream->capture->buffer, bytesRequested );
-	if ( bytesRequested != bytesRead )
-	    return paUnanticipatedHostError;
-
-	PaUtil_SetInputFrameCount( &stream->bufferProcessor, stream->capture->hostFrames );
-	PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, 0, stream->capture->buffer, stream->capture->hostChannelCount );
-        PaUtil_CopyInput( &stream->bufferProcessor, &userBuffer, framesRequested );
-	frames -= framesRequested;
-    }
-    return paNoError;
-}
-
-
-static PaError WriteStream( PaStream *s, const void *buffer, unsigned long frames )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-    int bytesRequested, bytesWritten;
-    unsigned long framesConverted;
-    const void *userBuffer;
-
-    /* If user output is non-interleaved, PaUtil_CopyOutput will manipulate the channel pointers,
-     * so we copy the user provided pointers */
-    if( stream->bufferProcessor.userOutputIsInterleaved )
-        userBuffer = buffer;
-    else
-    {
-        /* Copy channels into local array */
-        userBuffer = stream->playback->userBuffers;
-        memcpy( (void *)userBuffer, buffer, sizeof (void *) * stream->playback->userChannelCount );
-    }
-
-    while( frames )
-    {
-	PaUtil_SetOutputFrameCount( &stream->bufferProcessor, stream->playback->hostFrames );
-	PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, 0, stream->playback->buffer, stream->playback->hostChannelCount );
-
-	framesConverted = PaUtil_CopyOutput( &stream->bufferProcessor, &userBuffer, frames );
-	frames -= framesConverted;
-
-	bytesRequested = framesConverted * PaOssStreamComponent_FrameSize( stream->playback );
-	bytesWritten = write( stream->playback->fd, stream->playback->buffer, bytesRequested );
-
-	if ( bytesRequested != bytesWritten )
-	    return paUnanticipatedHostError;
-    }
-    return paNoError;
-}
-
-
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-    audio_buf_info info;
-
-    if( ioctl( stream->capture->fd, SNDCTL_DSP_GETISPACE, &info ) < 0 )
-        return paUnanticipatedHostError;
-    return info.fragments * stream->capture->hostFrames;
-}
-
-
-/* TODO: Compute number of allocated bytes somewhere else, can we use ODELAY with capture */
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaOssStream *stream = (PaOssStream*)s;
-    int delay = 0;
-
-    if( ioctl( stream->playback->fd, SNDCTL_DSP_GETODELAY, &delay ) < 0 )
-        return paUnanticipatedHostError;
-
-    return (PaOssStreamComponent_BufferSize( stream->playback ) - delay) / PaOssStreamComponent_FrameSize( stream->playback );
-}
-
diff --git a/external/portaudio2007/pa_unix_util.c b/external/portaudio2007/pa_unix_util.c
deleted file mode 100644
index 54e1d7b..0000000
--- a/external/portaudio2007/pa_unix_util.c
+++ /dev/null
@@ -1,668 +0,0 @@
-#ifdef UNIX
-/*
- * $Id: pa_unix_util.c 1232 2007-06-16 14:49:43Z rossb $
- * Portable Audio I/O Library
- * UNIX platform-specific support functions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup unix_src
-*/
- 
-#include <pthread.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/time.h>
-#include <assert.h>
-#include <string.h> /* For memset */
-#include <math.h>
-#include <errno.h>
-
-#include "pa_util.h"
-#include "pa_unix_util.h"
-#include "pa_debugprint.h"
-
-/*
-   Track memory allocations to avoid leaks.
- */
-
-#if PA_TRACK_MEMORY
-static int numAllocations_ = 0;
-#endif
-
-
-void *PaUtil_AllocateMemory( long size )
-{
-    void *result = malloc( size );
-
-#if PA_TRACK_MEMORY
-    if( result != NULL ) numAllocations_ += 1;
-#endif
-    return result;
-}
-
-
-void PaUtil_FreeMemory( void *block )
-{
-    if( block != NULL )
-    {
-        free( block );
-#if PA_TRACK_MEMORY
-        numAllocations_ -= 1;
-#endif
-
-    }
-}
-
-
-int PaUtil_CountCurrentlyAllocatedBlocks( void )
-{
-#if PA_TRACK_MEMORY
-    return numAllocations_;
-#else
-    return 0;
-#endif
-}
-
-
-void Pa_Sleep( long msec )
-{
-#ifdef HAVE_NANOSLEEP
-    struct timespec req = {0}, rem = {0};
-    PaTime time = msec / 1.e3;
-    req.tv_sec = (time_t)time;
-    assert(time - req.tv_sec < 1.0);
-    req.tv_nsec = (long)((time - req.tv_sec) * 1.e9);
-    nanosleep(&req, &rem);
-    /* XXX: Try sleeping the remaining time (contained in rem) if interrupted by a signal? */
-#else
-    while( msec > 999 )     /* For OpenBSD and IRIX, argument */
-        {                   /* to usleep must be < 1000000.   */
-        usleep( 999000 );
-        msec -= 999;
-        }
-    usleep( msec * 1000 );
-#endif
-}
-
-/*            *** NOT USED YET: ***
-static int usePerformanceCounter_;
-static double microsecondsPerTick_;
-*/
-
-void PaUtil_InitializeClock( void )
-{
-    /* TODO */
-}
-
-
-PaTime PaUtil_GetTime( void )
-{
-#ifdef HAVE_CLOCK_GETTIME
-    struct timespec tp;
-    clock_gettime(CLOCK_REALTIME, &tp);
-    return (PaTime)(tp.tv_sec + tp.tv_nsec / 1.e9);
-#else
-    struct timeval tv;
-    gettimeofday( &tv, NULL );
-    return (PaTime) tv.tv_usec / 1000000. + tv.tv_sec;
-#endif
-}
-
-PaError PaUtil_InitializeThreading( PaUtilThreading *threading )
-{
-    (void) paUtilErr_;
-    return paNoError;
-}
-
-void PaUtil_TerminateThreading( PaUtilThreading *threading )
-{
-}
-
-PaError PaUtil_StartThreading( PaUtilThreading *threading, void *(*threadRoutine)(void *), void *data )
-{
-    pthread_create( &threading->callbackThread, NULL, threadRoutine, data );
-    return paNoError;
-}
-
-PaError PaUtil_CancelThreading( PaUtilThreading *threading, int wait, PaError *exitResult )
-{
-    PaError result = paNoError;
-    void *pret;
-
-    if( exitResult )
-        *exitResult = paNoError;
-
-    /* Only kill the thread if it isn't in the process of stopping (flushing adaptation buffers) */
-    if( !wait )
-        pthread_cancel( threading->callbackThread );   /* XXX: Safe to call this if the thread has exited on its own? */
-    pthread_join( threading->callbackThread, &pret );
-
-#ifdef PTHREAD_CANCELED
-    if( pret && PTHREAD_CANCELED != pret )
-#else
-    /* !wait means the thread may have been canceled */
-    if( pret && wait )
-#endif
-    {
-        if( exitResult )
-            *exitResult = *(PaError *) pret;
-        free( pret );
-    }
-
-    return result;
-}
-
-/* Threading */
-/* paUnixMainThread 
- * We have to be a bit careful with defining this global variable,
- * as explained below. */
-#ifdef __apple__
-/* apple/gcc has a "problem" with global vars and dynamic libs.
-   Initializing it seems to fix the problem.
-   Described a bit in this thread:
-   http://gcc.gnu.org/ml/gcc/2005-06/msg00179.html
-*/
-pthread_t paUnixMainThread = 0;
-#else
-/*pthreads are opaque. We don't know that asigning it an int value
-  always makes sense, so we don't initialize it unless we have to.*/
-pthread_t paUnixMainThread = 0;
-#endif
-
-PaError PaUnixThreading_Initialize()
-{
-    paUnixMainThread = pthread_self();
-    return paNoError;
-}
-
-static PaError BoostPriority( PaUnixThread* self )
-{
-    PaError result = paNoError;
-    struct sched_param spm = { 0 };
-    /* Priority should only matter between contending FIFO threads? */
-    spm.sched_priority = 1;
-
-    assert( self );
-
-    if( pthread_setschedparam( self->thread, SCHED_FIFO, &spm ) != 0 )
-    {
-        PA_UNLESS( errno == EPERM, paInternalError );  /* Lack permission to raise priority */
-        PA_DEBUG(( "Failed bumping priority\n" ));
-        result = 0;
-    }
-    else
-    {
-        result = 1; /* Success */
-    }
-error:
-    return result;
-}
-
-PaError PaUnixThread_New( PaUnixThread* self, void* (*threadFunc)( void* ), void* threadArg, PaTime waitForChild,
-        int rtSched )
-{
-    PaError result = paNoError;
-    pthread_attr_t attr;
-    int started = 0;
-
-    memset( self, 0, sizeof (PaUnixThread) );
-    PaUnixMutex_Initialize( &self->mtx );
-    PA_ASSERT_CALL( pthread_cond_init( &self->cond, NULL ), 0 );
-
-    self->parentWaiting = 0 != waitForChild;
-
-    /* Spawn thread */
-
-/* Temporarily disabled since we should test during configuration for presence of required mman.h header */
-#if 0
-#if defined _POSIX_MEMLOCK && (_POSIX_MEMLOCK != -1)
-    if( rtSched )
-    {
-        if( mlockall( MCL_CURRENT | MCL_FUTURE ) < 0 )
-        {
-            int savedErrno = errno;             /* In case errno gets overwritten */
-            assert( savedErrno != EINVAL );     /* Most likely a programmer error */
-            PA_UNLESS( (savedErrno == EPERM), paInternalError );
-            PA_DEBUG(( "%s: Failed locking memory\n", __FUNCTION__ ));
-        }
-        else
-            PA_DEBUG(( "%s: Successfully locked memory\n", __FUNCTION__ ));
-    }
-#endif
-#endif
-
-    PA_UNLESS( !pthread_attr_init( &attr ), paInternalError );
-    /* Priority relative to other processes */
-    PA_UNLESS( !pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM ), paInternalError );   
-
-    PA_UNLESS( !pthread_create( &self->thread, &attr, threadFunc, threadArg ), paInternalError );
-    started = 1;
-
-    if( rtSched )
-    {
-#if 0
-        if( self->useWatchdog )
-        {
-            int err;
-            struct sched_param wdSpm = { 0 };
-            /* Launch watchdog, watchdog sets callback thread priority */
-            int prio = PA_MIN( self->rtPrio + 4, sched_get_priority_max( SCHED_FIFO ) );
-            wdSpm.sched_priority = prio;
-
-            PA_UNLESS( !pthread_attr_init( &attr ), paInternalError );
-            PA_UNLESS( !pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED ), paInternalError );
-            PA_UNLESS( !pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM ), paInternalError );
-            PA_UNLESS( !pthread_attr_setschedpolicy( &attr, SCHED_FIFO ), paInternalError );
-            PA_UNLESS( !pthread_attr_setschedparam( &attr, &wdSpm ), paInternalError );
-            if( (err = pthread_create( &self->watchdogThread, &attr, &WatchdogFunc, self )) )
-            {
-                PA_UNLESS( err == EPERM, paInternalError );
-                /* Permission error, go on without realtime privileges */
-                PA_DEBUG(( "Failed bumping priority\n" ));
-            }
-            else
-            {
-                int policy;
-                self->watchdogRunning = 1;
-                PA_ENSURE_SYSTEM( pthread_getschedparam( self->watchdogThread, &policy, &wdSpm ), 0 );
-                /* Check if priority is right, policy could potentially differ from SCHED_FIFO (but that's alright) */
-                if( wdSpm.sched_priority != prio )
-                {
-                    PA_DEBUG(( "Watchdog priority not set correctly (%d)\n", wdSpm.sched_priority ));
-                    PA_ENSURE( paInternalError );
-                }
-            }
-        }
-        else
-#endif
-            PA_ENSURE( BoostPriority( self ) );
-
-        {
-            int policy;
-            struct sched_param spm;
-            pthread_getschedparam(self->thread, &policy, &spm);
-        }
-    }
-    
-    if( self->parentWaiting )
-    {
-        PaTime till;
-        struct timespec ts;
-        int res = 0;
-        PaTime now;
-
-        PA_ENSURE( PaUnixMutex_Lock( &self->mtx ) );
-
-        /* Wait for stream to be started */
-        now = PaUtil_GetTime();
-        till = now + waitForChild;
-
-        while( self->parentWaiting && !res )
-        {
-            if( waitForChild > 0 )
-            {
-                ts.tv_sec = (time_t) floor( till );
-                ts.tv_nsec = (long) ((till - floor( till )) * 1e9);
-                res = pthread_cond_timedwait( &self->cond, &self->mtx.mtx, &ts );
-            }
-            else
-            {
-                res = pthread_cond_wait( &self->cond, &self->mtx.mtx );
-            }
-        }
-
-        PA_ENSURE( PaUnixMutex_Unlock( &self->mtx ) );
-
-        PA_UNLESS( !res || ETIMEDOUT == res, paInternalError );
-        PA_DEBUG(( "%s: Waited for %g seconds for stream to start\n", __FUNCTION__, PaUtil_GetTime() - now ));
-        if( ETIMEDOUT == res )
-        {
-            PA_ENSURE( paTimedOut );
-        }
-    }
-
-end:
-    return result;
-error:
-    if( started )
-    {
-        PaUnixThread_Terminate( self, 0, NULL );
-    }
-
-    goto end;
-}
-
-PaError PaUnixThread_Terminate( PaUnixThread* self, int wait, PaError* exitResult )
-{
-    PaError result = paNoError;
-    void* pret;
-
-    if( exitResult )
-    {
-        *exitResult = paNoError;
-    }
-#if 0
-    if( watchdogExitResult )
-        *watchdogExitResult = paNoError;
-
-    if( th->watchdogRunning )
-    {
-        pthread_cancel( th->watchdogThread );
-        PA_ENSURE_SYSTEM( pthread_join( th->watchdogThread, &pret ), 0 );
-
-        if( pret && pret != PTHREAD_CANCELED )
-        {
-            if( watchdogExitResult )
-                *watchdogExitResult = *(PaError *) pret;
-            free( pret );
-        }
-    }
-#endif
-
-    /* Only kill the thread if it isn't in the process of stopping (flushing adaptation buffers) */
-    /* TODO: Make join time out */
-    self->stopRequested = wait;
-    if( !wait )
-    {
-        PA_DEBUG(( "%s: Canceling thread %d\n", __FUNCTION__, self->thread ));
-        /* XXX: Safe to call this if the thread has exited on its own? */
-        pthread_cancel( self->thread );
-    }
-    PA_DEBUG(( "%s: Joining thread %d\n", __FUNCTION__, self->thread ));
-    PA_ENSURE_SYSTEM( pthread_join( self->thread, &pret ), 0 );
-
-    if( pret && PTHREAD_CANCELED != pret )
-    {
-        if( exitResult )
-        {
-            *exitResult = *(PaError*)pret;
-        }
-        free( pret );
-    }
-
-error:
-    PA_ASSERT_CALL( PaUnixMutex_Terminate( &self->mtx ), paNoError );
-    PA_ASSERT_CALL( pthread_cond_destroy( &self->cond ), 0 );
-
-    return result;
-}
-
-PaError PaUnixThread_PrepareNotify( PaUnixThread* self )
-{
-    PaError result = paNoError;
-    PA_UNLESS( self->parentWaiting, paInternalError );
-
-    PA_ENSURE( PaUnixMutex_Lock( &self->mtx ) );
-    self->locked = 1;
-
-error:
-    return result;
-}
-
-PaError PaUnixThread_NotifyParent( PaUnixThread* self )
-{
-    PaError result = paNoError;
-    PA_UNLESS( self->parentWaiting, paInternalError );
-
-    if( !self->locked )
-    {
-        PA_ENSURE( PaUnixMutex_Lock( &self->mtx ) );
-        self->locked = 1;
-    }
-    self->parentWaiting = 0;
-    pthread_cond_signal( &self->cond );
-    PA_ENSURE( PaUnixMutex_Unlock( &self->mtx ) );
-    self->locked = 0;
-
-error:
-    return result;
-}
-
-int PaUnixThread_StopRequested( PaUnixThread* self )
-{
-    return self->stopRequested;
-}
-
-PaError PaUnixMutex_Initialize( PaUnixMutex* self )
-{
-    PaError result = paNoError;
-    PA_ASSERT_CALL( pthread_mutex_init( &self->mtx, NULL ), 0 );
-    return result;
-}
-
-PaError PaUnixMutex_Terminate( PaUnixMutex* self )
-{
-    PaError result = paNoError;
-    PA_ASSERT_CALL( pthread_mutex_destroy( &self->mtx ), 0 );
-    return result;
-}
-
-/** Lock mutex.
- *
- * We're disabling thread cancellation while the thread is holding a lock, so mutexes are 
- * properly unlocked at termination time.
- */
-PaError PaUnixMutex_Lock( PaUnixMutex* self )
-{
-    PaError result = paNoError;
-    int oldState;
-    
-    PA_ENSURE_SYSTEM( pthread_setcancelstate( PTHREAD_CANCEL_DISABLE, &oldState ), 0 );
-    PA_ENSURE_SYSTEM( pthread_mutex_lock( &self->mtx ), 0 );
-
-error:
-    return result;
-}
-
-/** Unlock mutex.
- *
- * Thread cancellation is enabled again after the mutex is properly unlocked.
- */
-PaError PaUnixMutex_Unlock( PaUnixMutex* self )
-{
-    PaError result = paNoError;
-    int oldState;
-
-    PA_ENSURE_SYSTEM( pthread_mutex_unlock( &self->mtx ), 0 );
-    PA_ENSURE_SYSTEM( pthread_setcancelstate( PTHREAD_CANCEL_ENABLE, &oldState ), 0 );
-
-error:
-    return result;
-}
-
-
-#if 0
-static void OnWatchdogExit( void *userData )
-{
-    PaAlsaThreading *th = (PaAlsaThreading *) userData;
-    struct sched_param spm = { 0 };
-    assert( th );
-
-    PA_ASSERT_CALL( pthread_setschedparam( th->callbackThread, SCHED_OTHER, &spm ), 0 );    /* Lower before exiting */
-    PA_DEBUG(( "Watchdog exiting\n" ));
-}
-
-static void *WatchdogFunc( void *userData )
-{
-    PaError result = paNoError, *pres = NULL;
-    int err;
-    PaAlsaThreading *th = (PaAlsaThreading *) userData;
-    unsigned intervalMsec = 500;
-    const PaTime maxSeconds = 3.;   /* Max seconds between callbacks */
-    PaTime timeThen = PaUtil_GetTime(), timeNow, timeElapsed, cpuTimeThen, cpuTimeNow, cpuTimeElapsed;
-    double cpuLoad, avgCpuLoad = 0.;
-    int throttled = 0;
-
-    assert( th );
-
-    /* Execute OnWatchdogExit when exiting */
-    pthread_cleanup_push( &OnWatchdogExit, th );
-
-    /* Boost priority of callback thread */
-    PA_ENSURE( result = BoostPriority( th ) );
-    if( !result )
-    {
-        /* Boost failed, might as well exit */
-        pthread_exit( NULL );
-    }
-
-    cpuTimeThen = th->callbackCpuTime;
-    {
-        int policy;
-        struct sched_param spm = { 0 };
-        pthread_getschedparam( pthread_self(), &policy, &spm );
-        PA_DEBUG(( "%s: Watchdog priority is %d\n", __FUNCTION__, spm.sched_priority ));
-    }
-
-    while( 1 )
-    {
-        double lowpassCoeff = 0.9, lowpassCoeff1 = 0.99999 - lowpassCoeff;
-        
-        /* Test before and after in case whatever underlying sleep call isn't interrupted by pthread_cancel */
-        pthread_testcancel();
-        Pa_Sleep( intervalMsec );
-        pthread_testcancel();
-
-        if( PaUtil_GetTime() - th->callbackTime > maxSeconds )
-        {
-            PA_DEBUG(( "Watchdog: Terminating callback thread\n" ));
-            /* Tell thread to terminate */
-            err = pthread_kill( th->callbackThread, SIGKILL );
-            pthread_exit( NULL );
-        }
-
-        PA_DEBUG(( "%s: PortAudio reports CPU load: %g\n", __FUNCTION__, PaUtil_GetCpuLoad( th->cpuLoadMeasurer ) ));
-
-        /* Check if we should throttle, or unthrottle :P */
-        cpuTimeNow = th->callbackCpuTime;
-        cpuTimeElapsed = cpuTimeNow - cpuTimeThen;
-        cpuTimeThen = cpuTimeNow;
-
-        timeNow = PaUtil_GetTime();
-        timeElapsed = timeNow - timeThen;
-        timeThen = timeNow;
-        cpuLoad = cpuTimeElapsed / timeElapsed;
-        avgCpuLoad = avgCpuLoad * lowpassCoeff + cpuLoad * lowpassCoeff1;
-        /*
-        if( throttled )
-            PA_DEBUG(( "Watchdog: CPU load: %g, %g\n", avgCpuLoad, cpuTimeElapsed ));
-            */
-        if( PaUtil_GetCpuLoad( th->cpuLoadMeasurer ) > .925 )
-        {
-            static int policy;
-            static struct sched_param spm = { 0 };
-            static const struct sched_param defaultSpm = { 0 };
-            PA_DEBUG(( "%s: Throttling audio thread, priority %d\n", __FUNCTION__, spm.sched_priority ));
-
-            pthread_getschedparam( th->callbackThread, &policy, &spm );
-            if( !pthread_setschedparam( th->callbackThread, SCHED_OTHER, &defaultSpm ) )
-            {
-                throttled = 1;
-            }
-            else
-                PA_DEBUG(( "Watchdog: Couldn't lower priority of audio thread: %s\n", strerror( errno ) ));
-
-            /* Give other processes a go, before raising priority again */
-            PA_DEBUG(( "%s: Watchdog sleeping for %lu msecs before unthrottling\n", __FUNCTION__, th->throttledSleepTime ));
-            Pa_Sleep( th->throttledSleepTime );
-
-            /* Reset callback priority */
-            if( pthread_setschedparam( th->callbackThread, SCHED_FIFO, &spm ) != 0 )
-            {
-                PA_DEBUG(( "%s: Couldn't raise priority of audio thread: %s\n", __FUNCTION__, strerror( errno ) ));
-            }
-
-            if( PaUtil_GetCpuLoad( th->cpuLoadMeasurer ) >= .99 )
-                intervalMsec = 50;
-            else
-                intervalMsec = 100;
-
-            /*
-            lowpassCoeff = .97;
-            lowpassCoeff1 = .99999 - lowpassCoeff;
-            */
-        }
-        else if( throttled && avgCpuLoad < .8 )
-        {
-            intervalMsec = 500;
-            throttled = 0;
-
-            /*
-            lowpassCoeff = .9;
-            lowpassCoeff1 = .99999 - lowpassCoeff;
-            */
-        }
-    }
-
-    pthread_cleanup_pop( 1 );   /* Execute cleanup on exit */
-
-error:
-    /* Shouldn't get here in the normal case */
-
-    /* Pass on error code */
-    pres = malloc( sizeof (PaError) );
-    *pres = result;
-    
-    pthread_exit( pres );
-}
-
-static void CallbackUpdate( PaAlsaThreading *th )
-{
-    th->callbackTime = PaUtil_GetTime();
-    th->callbackCpuTime = PaUtil_GetCpuLoad( th->cpuLoadMeasurer );
-}
-
-/*
-static void *CanaryFunc( void *userData )
-{
-    const unsigned intervalMsec = 1000;
-    PaUtilThreading *th = (PaUtilThreading *) userData;
-
-    while( 1 )
-    {
-        th->canaryTime = PaUtil_GetTime();
-
-        pthread_testcancel();
-        Pa_Sleep( intervalMsec );
-    }
-
-    pthread_exit( NULL );
-}
-*/
-#endif
-#endif
\ No newline at end of file
diff --git a/external/portaudio2007/pa_unix_util.h b/external/portaudio2007/pa_unix_util.h
deleted file mode 100644
index ffa5ac6..0000000
--- a/external/portaudio2007/pa_unix_util.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * $Id: pa_unix_util.h 1241 2007-07-23 20:08:31Z aknudsen $
- * Portable Audio I/O Library
- * UNIX platform-specific support functions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup unix_src
-*/
-
-#ifndef PA_UNIX_UTIL_H
-#define PA_UNIX_UTIL_H
-
-#include "pa_cpuload.h"
-#include <assert.h>
-#include <pthread.h>
-#include <signal.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#define PA_MIN(x,y) ( (x) < (y) ? (x) : (y) )
-#define PA_MAX(x,y) ( (x) > (y) ? (x) : (y) )
-
-/* Utilize GCC branch prediction for error tests */
-#if defined __GNUC__ && __GNUC__ >= 3
-#define UNLIKELY(expr) __builtin_expect( (expr), 0 )
-#else
-#define UNLIKELY(expr) (expr)
-#endif
-
-#define STRINGIZE_HELPER(expr) #expr
-#define STRINGIZE(expr) STRINGIZE_HELPER(expr)
-
-#define PA_UNLESS(expr, code) \
-    do { \
-        if( UNLIKELY( (expr) == 0 ) ) \
-        { \
-            PaUtil_DebugPrint(( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" )); \
-            result = (code); \
-            goto error; \
-        } \
-    } while (0);
-
-static PaError paUtilErr_;          /* Used with PA_ENSURE */
-
-/* Check PaError */
-#define PA_ENSURE(expr) \
-    do { \
-        if( UNLIKELY( (paUtilErr_ = (expr)) < paNoError ) ) \
-        { \
-            PaUtil_DebugPrint(( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" )); \
-            result = paUtilErr_; \
-            goto error; \
-        } \
-    } while (0);
-
-#define PA_ASSERT_CALL(expr, success) \
-    paUtilErr_ = (expr); \
-    assert( success == paUtilErr_ );
-
-#define PA_ENSURE_SYSTEM(expr, success) \
-    do { \
-        if( UNLIKELY( (paUtilErr_ = (expr)) != success ) ) \
-        { \
-            /* PaUtil_SetLastHostErrorInfo should only be used in the main thread */ \
-            if( pthread_equal(pthread_self(), paUnixMainThread) ) \
-            { \
-                PaUtil_SetLastHostErrorInfo( paALSA, paUtilErr_, strerror( paUtilErr_ ) ); \
-            } \
-            PaUtil_DebugPrint( "Expression '" #expr "' failed in '" __FILE__ "', line: " STRINGIZE( __LINE__ ) "\n" ); \
-            result = paUnanticipatedHostError; \
-            goto error; \
-        } \
-    } while( 0 );
-
-typedef struct {
-    pthread_t callbackThread;
-} PaUtilThreading;
-
-PaError PaUtil_InitializeThreading( PaUtilThreading *threading );
-void PaUtil_TerminateThreading( PaUtilThreading *threading );
-PaError PaUtil_StartThreading( PaUtilThreading *threading, void *(*threadRoutine)(void *), void *data );
-PaError PaUtil_CancelThreading( PaUtilThreading *threading, int wait, PaError *exitResult );
-
-/* State accessed by utility functions */
-
-/*
-void PaUnix_SetRealtimeScheduling( int rt );
-
-void PaUtil_InitializeThreading( PaUtilThreading *th, PaUtilCpuLoadMeasurer *clm );
-
-PaError PaUtil_CreateCallbackThread( PaUtilThreading *th, void *(*CallbackThreadFunc)( void * ), PaStream *s );
-
-PaError PaUtil_KillCallbackThread( PaUtilThreading *th, PaError *exitResult );
-
-void PaUtil_CallbackUpdate( PaUtilThreading *th );
-*/
-
-extern pthread_t paUnixMainThread;
-
-typedef struct
-{
-    pthread_mutex_t mtx;
-} PaUnixMutex;
-
-PaError PaUnixMutex_Initialize( PaUnixMutex* self );
-PaError PaUnixMutex_Terminate( PaUnixMutex* self );
-PaError PaUnixMutex_Lock( PaUnixMutex* self );
-PaError PaUnixMutex_Unlock( PaUnixMutex* self );
-
-typedef struct
-{
-    pthread_t thread;
-    int parentWaiting;
-    int stopRequested;
-    int locked;
-    PaUnixMutex mtx;
-    pthread_cond_t cond;
-    volatile sig_atomic_t stopRequest;
-} PaUnixThread;
-
-/** Initialize global threading state.
- */
-PaError PaUnixThreading_Initialize( void );
-
-/** Perish, passing on eventual error code.
- *
- * A thin wrapper around pthread_exit, will automatically pass on any error code to the joining thread.
- * If the result indicates an error, i.e. it is not equal to paNoError, this function will automatically
- * allocate a pointer so the error is passed on with pthread_exit. If the result indicates that all is
- * well however, only a NULL pointer will be handed to pthread_exit. Thus, the joining thread should
- * check whether a non-NULL result pointer is obtained from pthread_join and make sure to free it.
- * @param result: The error code to pass on to the joining thread.
- */
-#define PaUnixThreading_EXIT(result) \
-    do { \
-        PaError* pres = NULL; \
-        if( paNoError != (result) ) \
-        { \
-            pres = malloc( sizeof (PaError) ); \
-            *pres = (result); \
-        } \
-        pthread_exit( pres ); \
-    } while (0);
-
-/** Spawn a thread.
- *
- * Intended for spawning the callback thread from the main thread. This function can even block (for a certain
- * time or indefinitely) untill notified by the callback thread (using PaUnixThread_NotifyParent), which can be
- * useful in order to make sure that callback has commenced before returning from Pa_StartStream.
- * @param threadFunc: The function to be executed in the child thread.
- * @param waitForChild: If not 0, wait for child thread to call PaUnixThread_NotifyParent. Less than 0 means
- * wait for ever, greater than 0 wait for the specified time.
- * @param rtSched: Enable realtime scheduling?
- * @return: If timed out waiting on child, paTimedOut.
- */
-PaError PaUnixThread_New( PaUnixThread* self, void* (*threadFunc)( void* ), void* threadArg, PaTime waitForChild,
-        int rtSched );
-
-/** Terminate thread.
- *
- * @param wait: If true, request that background thread stop and wait untill it does, else cancel it.
- * @param exitResult: If non-null this will upon return contain the exit status of the thread.
- */
-PaError PaUnixThread_Terminate( PaUnixThread* self, int wait, PaError* exitResult );
-
-/** Prepare to notify waiting parent thread.
- *
- * An internal lock must be held before the parent is notified in PaUnixThread_NotifyParent, call this to
- * acquire it beforehand.
- * @return: If parent is not waiting, paInternalError.
- */
-PaError PaUnixThread_PrepareNotify( PaUnixThread* self );
-
-/** Notify waiting parent thread.
- *
- * @return: If parent timed out waiting, paTimedOut. If parent was never waiting, paInternalError.
- */
-PaError PaUnixThread_NotifyParent( PaUnixThread* self );
-
-/** Has the parent thread requested this thread to stop?
- */
-int PaUnixThread_StopRequested( PaUnixThread* self );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif
diff --git a/external/portaudio2007/pa_util.h b/external/portaudio2007/pa_util.h
deleted file mode 100644
index 55eaa13..0000000
--- a/external/portaudio2007/pa_util.h
+++ /dev/null
@@ -1,159 +0,0 @@
-#ifndef PA_UTIL_H
-#define PA_UTIL_H
-/*
- * $Id: pa_util.h 1229 2007-06-15 16:11:11Z rossb $
- * Portable Audio I/O Library implementation utilities header
- * common implementation utilities and interfaces
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup common_src
-
-    @brief Prototypes for utility functions used by PortAudio implementations.
-
-    @todo Document and adhere to the alignment guarantees provided by
-    PaUtil_AllocateMemory().
-*/
-
-
-#include "portaudio.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-struct PaUtilHostApiRepresentation;
-
-
-/** Retrieve a specific host API representation. This function can be used
- by implementations to retrieve a pointer to their representation in
- host api specific extension functions which aren't passed a rep pointer
- by pa_front.c.
-
- @param hostApi A pointer to a host API represenation pointer. Apon success
- this will receive the requested representation pointer.
-
- @param type A valid host API type identifier.
-
- @returns An error code. If the result is PaNoError then a pointer to the
- requested host API representation will be stored in *hostApi. If the host API
- specified by type is not found, this function returns paHostApiNotFound.
-*/
-PaError PaUtil_GetHostApiRepresentation( struct PaUtilHostApiRepresentation **hostApi,
-        PaHostApiTypeId type );
-
-
-/** Convert a PortAudio device index into a host API specific device index.
- @param hostApiDevice Pointer to a device index, on success this will recieve the
- converted device index value.
- @param device The PortAudio device index to convert.
- @param hostApi The host api which the index should be converted for.
-
- @returns On success returns PaNoError and places the converted index in the
- hostApiDevice parameter.
-*/
-PaError PaUtil_DeviceIndexToHostApiDeviceIndex(
-        PaDeviceIndex *hostApiDevice, PaDeviceIndex device,
-        struct PaUtilHostApiRepresentation *hostApi );
-
-
-/** Set the host error information returned by Pa_GetLastHostErrorInfo. This
- function and the paUnanticipatedHostError error code should be used as a
- last resort.  Implementors should use existing PA error codes where possible,
- or nominate new ones. Note that at it is always better to use
- PaUtil_SetLastHostErrorInfo() and paUnanticipatedHostError than to return an
- ambiguous or inaccurate PaError code.
-
- @param hostApiType  The host API which encountered the error (ie of the caller)
-
- @param errorCode The error code returned by the native API function.
-
- @param errorText A string describing the error. PaUtil_SetLastHostErrorInfo
- makes a copy of the string, so it is not necessary for the pointer to remain
- valid after the call to PaUtil_SetLastHostErrorInfo() returns.
-
-*/
-void PaUtil_SetLastHostErrorInfo( PaHostApiTypeId hostApiType, long errorCode,
-        const char *errorText );
-
-
-        
-/* the following functions are implemented in a platform platform specific
- .c file
-*/
-
-/** Allocate size bytes, guaranteed to be aligned to a FIXME byte boundary */
-void *PaUtil_AllocateMemory( long size );
-
-
-/** Realease block if non-NULL. block may be NULL */
-void PaUtil_FreeMemory( void *block );
-
-
-/** Return the number of currently allocated blocks. This function can be
- used for detecting memory leaks.
-
- @note Allocations will only be tracked if PA_TRACK_MEMORY is #defined. If
- it isn't, this function will always return 0.
-*/
-int PaUtil_CountCurrentlyAllocatedBlocks( void );
-
-
-/** Initialize the clock used by PaUtil_GetTime(). Call this before calling
- PaUtil_GetTime.
-
- @see PaUtil_GetTime
-*/
-void PaUtil_InitializeClock( void );
-
-
-/** Return the system time in seconds. Used to implement CPU load functions
-
- @see PaUtil_InitializeClock
-*/
-double PaUtil_GetTime( void );
-
-
-/* void Pa_Sleep( long msec );  must also be implemented in per-platform .c file */
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PA_UTIL_H */
diff --git a/external/portaudio2007/pa_win_ds.c b/external/portaudio2007/pa_win_ds.c
deleted file mode 100644
index 6bc6be9..0000000
--- a/external/portaudio2007/pa_win_ds.c
+++ /dev/null
@@ -1,2512 +0,0 @@
-#ifdef _WIN32
-/*
- * $Id: pa_win_ds.c 1286 2007-09-26 21:34:23Z rossb $
- * Portable Audio I/O Library DirectSound implementation
- *
- * Authors: Phil Burk, Robert Marsanyi & Ross Bencina
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2007 Ross Bencina, Phil Burk, Robert Marsanyi
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup hostaip_src
-
-    @todo implement paInputOverflow callback status flag
-    
-    @todo implement paNeverDropInput.
-
-    @todo implement host api specific extension to set i/o buffer sizes in frames
-
-    @todo implement initialisation of PaDeviceInfo default*Latency fields (currently set to 0.)
-
-    @todo implement ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable
-
-    @todo audit handling of DirectSound result codes - in many cases we could convert a HRESULT into
-        a native portaudio error code. Standard DirectSound result codes are documented at msdn.
-
-    @todo implement IsFormatSupported
-
-    @todo call PaUtil_SetLastHostErrorInfo with a specific error string (currently just "DSound error").
-
-    @todo make sure all buffers have been played before stopping the stream
-        when the stream callback returns paComplete
-
-    @todo retrieve default devices using the DRVM_MAPPER_PREFERRED_GET functions used in the wmme api
-        these wave device ids can be aligned with the directsound devices either by retrieving
-        the system interface device name using DRV_QUERYDEVICEINTERFACE or by using the wave device
-        id retrieved in KsPropertySetEnumerateCallback.
-
-    old TODOs from phil, need to work out if these have been done:
-        O- fix "patest_stop.c"
-*/
-
-#undef UNICODE
-#include <stdio.h>
-#include <string.h> /* strlen() */
-#include <windows.h>
-#include <objbase.h>
-
-/*
-  We are only using DX3 in here, no need to polute the namespace - davidv
-*/
-#define DIRECTSOUND_VERSION 0x0300
-#include <dsound.h>
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-#include <dsconf.h>
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-#include "pa_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "pa_debugprint.h"
-
-#include "pa_win_ds.h"
-#include "pa_win_ds_dynlink.h"
-#include "pa_win_waveformat.h"
-#include "pa_win_wdmks_utils.h"
-
-
-#if (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) /* MSC version 6 and above */
-#pragma comment( lib, "dsound.lib" )
-#pragma comment( lib, "winmm.lib" )
-#endif
-
-/*
- provided in newer platform sdks and x64
- */
-#ifndef DWORD_PTR
-#define DWORD_PTR DWORD
-#endif
-
-#define PRINT(x) PA_DEBUG(x);
-#define ERR_RPT(x) PRINT(x)
-#define DBUG(x)   PRINT(x)
-#define DBUGX(x)  PRINT(x)
-
-#define PA_USE_HIGH_LATENCY   (0)
-#if PA_USE_HIGH_LATENCY
-#define PA_WIN_9X_LATENCY     (500)
-#define PA_WIN_NT_LATENCY     (600)
-#else
-#define PA_WIN_9X_LATENCY     (140)
-#define PA_WIN_NT_LATENCY     (280)
-#endif
-
-#define PA_WIN_WDM_LATENCY       (120)
-
-#define SECONDS_PER_MSEC      (0.001)
-#define MSEC_PER_SECOND       (1000)
-
-/* prototypes for functions declared in this file */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaWinDs_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-static signed long GetStreamReadAvailable( PaStream* stream );
-static signed long GetStreamWriteAvailable( PaStream* stream );
-
-
-/* FIXME: should convert hr to a string */
-#define PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr ) \
-    PaUtil_SetLastHostErrorInfo( paDirectSound, hr, "DirectSound error" )
-
-/************************************************* DX Prototypes **********/
-static BOOL CALLBACK CollectGUIDsProc(LPGUID lpGUID,
-                                     LPCTSTR lpszDesc,
-                                     LPCTSTR lpszDrvName,
-                                     LPVOID lpContext );
-
-/************************************************************************************/
-/********************** Structures **************************************************/
-/************************************************************************************/
-/* PaWinDsHostApiRepresentation - host api datastructure specific to this implementation */
-
-typedef struct PaWinDsDeviceInfo
-{
-    PaDeviceInfo        inheritedDeviceInfo;
-    GUID                guid;
-    GUID                *lpGUID;
-    double              sampleRates[3];
-    char deviceInputChannelCountIsKnown; /**<< if the system returns 0xFFFF then we don't really know the number of supported channels (1=>known, 0=>unknown)*/
-    char deviceOutputChannelCountIsKnown; /**<< if the system returns 0xFFFF then we don't really know the number of supported channels (1=>known, 0=>unknown)*/
-} PaWinDsDeviceInfo;
-
-typedef struct
-{
-    PaUtilHostApiRepresentation inheritedHostApiRep;
-    PaUtilStreamInterface    callbackStreamInterface;
-    PaUtilStreamInterface    blockingStreamInterface;
-
-    PaUtilAllocationGroup   *allocations;
-
-    /* implementation specific data goes here */
-
-    char                    comWasInitialized;
-
-} PaWinDsHostApiRepresentation;
-
-
-/* PaWinDsStream - a stream data structure specifically for this implementation */
-
-typedef struct PaWinDsStream
-{
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-
-/* DirectSound specific data. */
-
-/* Output */
-    LPDIRECTSOUND        pDirectSound;
-    LPDIRECTSOUNDBUFFER  pDirectSoundOutputBuffer;
-    DWORD                outputBufferWriteOffsetBytes;     /* last write position */
-    INT                  outputBufferSizeBytes;
-    INT                  bytesPerOutputFrame;
-    /* Try to detect play buffer underflows. */
-    LARGE_INTEGER        perfCounterTicksPerBuffer; /* counter ticks it should take to play a full buffer */
-    LARGE_INTEGER        previousPlayTime;
-    UINT                 previousPlayCursor;
-    UINT                 outputUnderflowCount;
-    BOOL                 outputIsRunning;
-    /* use double which lets us can play for several thousand years with enough precision */
-    double               dsw_framesWritten;
-    double               framesPlayed;
-/* Input */
-    LPDIRECTSOUNDCAPTURE pDirectSoundCapture;
-    LPDIRECTSOUNDCAPTUREBUFFER   pDirectSoundInputBuffer;
-    INT                  bytesPerInputFrame;
-    UINT                 readOffset;      /* last read position */
-    UINT                 inputSize;
-
-    
-    MMRESULT         timerID;
-    int              framesPerDSBuffer;
-    double           framesWritten;
-    double           secondsPerHostByte; /* Used to optimize latency calculation for outTime */
-
-    PaStreamCallbackFlags callbackFlags;
-    
-/* FIXME - move all below to PaUtilStreamRepresentation */
-    volatile int     isStarted;
-    volatile int     isActive;
-    volatile int     stopProcessing; /* stop thread once existing buffers have been returned */
-    volatile int     abortProcessing; /* stop thread immediately */
-} PaWinDsStream;
-
-
-/************************************************************************************
-** Duplicate the input string using the allocations allocator.
-** A NULL string is converted to a zero length string.
-** If memory cannot be allocated, NULL is returned.
-**/
-static char *DuplicateDeviceNameString( PaUtilAllocationGroup *allocations, const char* src )
-{
-    char *result = 0;
-    
-    if( src != NULL )
-    {
-        size_t len = strlen(src);
-        result = (char*)PaUtil_GroupAllocateMemory( allocations, (long)(len + 1) );
-        if( result )
-            memcpy( (void *) result, src, len+1 );
-    }
-    else
-    {
-        result = (char*)PaUtil_GroupAllocateMemory( allocations, 1 );
-        if( result )
-            result[0] = '\0';
-    }
-
-    return result;
-}
-
-/************************************************************************************
-** DSDeviceNameAndGUID, DSDeviceNameAndGUIDVector used for collecting preliminary
-** information during device enumeration.
-*/
-typedef struct DSDeviceNameAndGUID{
-    char *name; // allocated from parent's allocations, never deleted by this structure
-    GUID guid;
-    LPGUID lpGUID;
-    void *pnpInterface;  // wchar_t* interface path, allocated using the DS host api's allocation group
-} DSDeviceNameAndGUID;
-
-typedef struct DSDeviceNameAndGUIDVector{
-    PaUtilAllocationGroup *allocations;
-    PaError enumerationError;
-
-    int count;
-    int free;
-    DSDeviceNameAndGUID *items; // Allocated using LocalAlloc()
-} DSDeviceNameAndGUIDVector;
-
-typedef struct DSDeviceNamesAndGUIDs{
-    PaWinDsHostApiRepresentation *winDsHostApi;
-    DSDeviceNameAndGUIDVector inputNamesAndGUIDs;
-    DSDeviceNameAndGUIDVector outputNamesAndGUIDs;
-} DSDeviceNamesAndGUIDs;
-
-static PaError InitializeDSDeviceNameAndGUIDVector(
-        DSDeviceNameAndGUIDVector *guidVector, PaUtilAllocationGroup *allocations )
-{
-    PaError result = paNoError;
-
-    guidVector->allocations = allocations;
-    guidVector->enumerationError = paNoError;
-
-    guidVector->count = 0;
-    guidVector->free = 8;
-    guidVector->items = (DSDeviceNameAndGUID*)LocalAlloc( LMEM_FIXED, sizeof(DSDeviceNameAndGUID) * guidVector->free );
-    if( guidVector->items == NULL )
-        result = paInsufficientMemory;
-    
-    return result;
-}
-
-static PaError ExpandDSDeviceNameAndGUIDVector( DSDeviceNameAndGUIDVector *guidVector )
-{
-    PaError result = paNoError;
-    DSDeviceNameAndGUID *newItems;
-    int i;
-    
-    /* double size of vector */
-    int size = guidVector->count + guidVector->free;
-    guidVector->free += size;
-
-    newItems = (DSDeviceNameAndGUID*)LocalAlloc( LMEM_FIXED, sizeof(DSDeviceNameAndGUID) * size * 2 );
-    if( newItems == NULL )
-    {
-        result = paInsufficientMemory;
-    }
-    else
-    {
-        for( i=0; i < guidVector->count; ++i )
-        {
-            newItems[i].name = guidVector->items[i].name;
-            if( guidVector->items[i].lpGUID == NULL )
-            {
-                newItems[i].lpGUID = NULL;
-            }
-            else
-            {
-                newItems[i].lpGUID = &newItems[i].guid;
-                memcpy( &newItems[i].guid, guidVector->items[i].lpGUID, sizeof(GUID) );;
-            }
-            newItems[i].pnpInterface = guidVector->items[i].pnpInterface;
-        }
-
-        LocalFree( guidVector->items );
-        guidVector->items = newItems;
-    }                                
-
-    return result;
-}
-
-/*
-    it's safe to call DSDeviceNameAndGUIDVector multiple times
-*/
-static PaError TerminateDSDeviceNameAndGUIDVector( DSDeviceNameAndGUIDVector *guidVector )
-{
-    PaError result = paNoError;
-
-    if( guidVector->items != NULL )
-    {
-        if( LocalFree( guidVector->items ) != NULL )
-            result = paInsufficientMemory;              /** @todo this isn't the correct error to return from a deallocation failure */
-
-        guidVector->items = NULL;
-    }
-
-    return result;
-}
-
-/************************************************************************************
-** Collect preliminary device information during DirectSound enumeration 
-*/
-static BOOL CALLBACK CollectGUIDsProc(LPGUID lpGUID,
-                                     LPCTSTR lpszDesc,
-                                     LPCTSTR lpszDrvName,
-                                     LPVOID lpContext )
-{
-    DSDeviceNameAndGUIDVector *namesAndGUIDs = (DSDeviceNameAndGUIDVector*)lpContext;
-    PaError error;
-
-    (void) lpszDrvName; /* unused variable */
-
-    if( namesAndGUIDs->free == 0 )
-    {
-        error = ExpandDSDeviceNameAndGUIDVector( namesAndGUIDs );
-        if( error != paNoError )
-        {
-            namesAndGUIDs->enumerationError = error;
-            return FALSE;
-        }
-    }
-    
-    /* Set GUID pointer, copy GUID to storage in DSDeviceNameAndGUIDVector. */
-    if( lpGUID == NULL )
-    {
-        namesAndGUIDs->items[namesAndGUIDs->count].lpGUID = NULL;
-    }
-    else
-    {
-        namesAndGUIDs->items[namesAndGUIDs->count].lpGUID =
-                &namesAndGUIDs->items[namesAndGUIDs->count].guid;
-      
-        memcpy( &namesAndGUIDs->items[namesAndGUIDs->count].guid, lpGUID, sizeof(GUID) );
-    }
-
-    namesAndGUIDs->items[namesAndGUIDs->count].name =
-            DuplicateDeviceNameString( namesAndGUIDs->allocations, lpszDesc );
-    if( namesAndGUIDs->items[namesAndGUIDs->count].name == NULL )
-    {
-        namesAndGUIDs->enumerationError = paInsufficientMemory;
-        return FALSE;
-    }
-
-    namesAndGUIDs->items[namesAndGUIDs->count].pnpInterface = 0;
-
-    ++namesAndGUIDs->count;
-    --namesAndGUIDs->free;
-    
-    return TRUE;
-}
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-
-static void *DuplicateWCharString( PaUtilAllocationGroup *allocations, wchar_t *source )
-{
-    size_t len;
-    wchar_t *result;
-
-    len = wcslen( source );
-    result = (wchar_t*)PaUtil_GroupAllocateMemory( allocations, (long) ((len+1) * sizeof(wchar_t)) );
-    wcscpy( result, source );
-    return result;
-}
-
-static BOOL CALLBACK KsPropertySetEnumerateCallback( PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA data, LPVOID context )
-{
-    int i;
-    DSDeviceNamesAndGUIDs *deviceNamesAndGUIDs = (DSDeviceNamesAndGUIDs*)context;
-
-    if( data->DataFlow == DIRECTSOUNDDEVICE_DATAFLOW_RENDER )
-    {
-        for( i=0; i < deviceNamesAndGUIDs->outputNamesAndGUIDs.count; ++i )
-        {
-            if( deviceNamesAndGUIDs->outputNamesAndGUIDs.items[i].lpGUID
-                && memcmp( &data->DeviceId, deviceNamesAndGUIDs->outputNamesAndGUIDs.items[i].lpGUID, sizeof(GUID) ) == 0 )
-            {
-                deviceNamesAndGUIDs->outputNamesAndGUIDs.items[i].pnpInterface = 
-                        (char*)DuplicateWCharString( deviceNamesAndGUIDs->winDsHostApi->allocations, data->Interface );
-                break;
-            }
-        }
-    }
-    else if( data->DataFlow == DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE )
-    {
-        for( i=0; i < deviceNamesAndGUIDs->inputNamesAndGUIDs.count; ++i )
-        {
-            if( deviceNamesAndGUIDs->inputNamesAndGUIDs.items[i].lpGUID
-                && memcmp( &data->DeviceId, deviceNamesAndGUIDs->inputNamesAndGUIDs.items[i].lpGUID, sizeof(GUID) ) == 0 )
-            {
-                deviceNamesAndGUIDs->inputNamesAndGUIDs.items[i].pnpInterface = 
-                        (char*)DuplicateWCharString( deviceNamesAndGUIDs->winDsHostApi->allocations, data->Interface );
-                break;
-            }
-        }
-    }
-
-    return TRUE;
-}
-
-
-static GUID pawin_CLSID_DirectSoundPrivate = 
-{ 0x11ab3ec0, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x00, 0xc0, 0x4f, 0xc2, 0x8a, 0xca };
-
-static GUID pawin_DSPROPSETID_DirectSoundDevice = 
-{ 0x84624f82, 0x25ec, 0x11d1, 0xa4, 0xd8, 0x00, 0xc0, 0x4f, 0xc2, 0x8a, 0xca };
-
-static GUID pawin_IID_IKsPropertySet = 
-{ 0x31efac30, 0x515c, 0x11d0, 0xa9, 0xaa, 0x00, 0xaa, 0x00, 0x61, 0xbe, 0x93 };
-
-
-/*
-    FindDevicePnpInterfaces fills in the pnpInterface fields in deviceNamesAndGUIDs
-    with UNICODE file paths to the devices. The DS documentation mentions
-    at least two techniques by which these Interface paths can be found using IKsPropertySet on
-    the DirectSound class object. One is using the DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION 
-    property, and the other is using DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE.
-    I tried both methods and only the second worked. I found two postings on the
-    net from people who had the same problem with the first method, so I think the method used here is 
-    more common/likely to work. The probem is that IKsPropertySet_Get returns S_OK
-    but the fields of the device description are not filled in.
-
-    The mechanism we use works by registering an enumeration callback which is called for 
-    every DSound device. Our callback searches for a device in our deviceNamesAndGUIDs list
-    with the matching GUID and copies the pointer to the Interface path.
-    Note that we could have used this enumeration callback to perform the original 
-    device enumeration, however we choose not to so we can disable this step easily.
-
-    Apparently the IKsPropertySet mechanism was added in DirectSound 9c 2004
-    http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.mmedia/2004-12/0099.html
-
-        -- rossb
-*/
-static void FindDevicePnpInterfaces( DSDeviceNamesAndGUIDs *deviceNamesAndGUIDs )
-{
-    IClassFactory *pClassFactory;
-   
-    if( paWinDsDSoundEntryPoints.DllGetClassObject(&pawin_CLSID_DirectSoundPrivate, &IID_IClassFactory, (PVOID *) &pClassFactory) == S_OK ){
-        IKsPropertySet *pPropertySet;
-        if( pClassFactory->lpVtbl->CreateInstance( pClassFactory, NULL, &pawin_IID_IKsPropertySet, (PVOID *) &pPropertySet) == S_OK ){
-            
-            DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA data;
-            ULONG bytesReturned;
-
-            data.Callback = KsPropertySetEnumerateCallback;
-            data.Context = deviceNamesAndGUIDs;
-
-            IKsPropertySet_Get( pPropertySet,
-                &pawin_DSPROPSETID_DirectSoundDevice,
-                DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W,
-                NULL,
-                0,
-                &data,
-                sizeof(data),
-                &bytesReturned
-            );
-            
-            IKsPropertySet_Release( pPropertySet );
-        }
-        pClassFactory->lpVtbl->Release( pClassFactory );
-    }
-
-    /*
-        The following code fragment, which I chose not to use, queries for the 
-        device interface for a device with a specific GUID:
-
-        ULONG BytesReturned;
-        DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA Property;
-
-        memset (&Property, 0, sizeof(Property));
-        Property.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
-        Property.DeviceId = *lpGUID;  
-
-        hr = IKsPropertySet_Get( pPropertySet,
-            &pawin_DSPROPSETID_DirectSoundDevice,
-            DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W,
-            NULL,
-            0,
-            &Property,
-            sizeof(Property),
-            &BytesReturned
-        );
-
-        if( hr == S_OK )
-        {
-            //pnpInterface = Property.Interface;
-        }
-    */
-}
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-
-/* 
-    GUIDs for emulated devices which we blacklist below.
-    are there more than two of them??
-*/
-
-GUID IID_IRolandVSCEmulated1 = {0xc2ad1800, 0xb243, 0x11ce, 0xa8, 0xa4, 0x00, 0xaa, 0x00, 0x6c, 0x45, 0x01};
-GUID IID_IRolandVSCEmulated2 = {0xc2ad1800, 0xb243, 0x11ce, 0xa8, 0xa4, 0x00, 0xaa, 0x00, 0x6c, 0x45, 0x02};
-
-
-#define PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_  (13) /* must match array length below */
-static double defaultSampleRateSearchOrder_[] =
-    { 44100.0, 48000.0, 32000.0, 24000.0, 22050.0, 88200.0, 96000.0, 192000.0,
-        16000.0, 12000.0, 11025.0, 9600.0, 8000.0 };
-
-/************************************************************************************
-** Extract capabilities from an output device, and add it to the device info list
-** if successful. This function assumes that there is enough room in the
-** device info list to accomodate all entries.
-**
-** The device will not be added to the device list if any errors are encountered.
-*/
-static PaError AddOutputDeviceInfoFromDirectSound(
-        PaWinDsHostApiRepresentation *winDsHostApi, char *name, LPGUID lpGUID, char *pnpInterface )
-{
-    PaUtilHostApiRepresentation  *hostApi = &winDsHostApi->inheritedHostApiRep;
-    PaWinDsDeviceInfo            *winDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[hostApi->info.deviceCount];
-    PaDeviceInfo                 *deviceInfo = &winDsDeviceInfo->inheritedDeviceInfo;
-    HRESULT                       hr;
-    LPDIRECTSOUND                 lpDirectSound;
-    DSCAPS                        caps;
-    int                           deviceOK = TRUE;
-    PaError                       result = paNoError;
-    int                           i;
-
-    /* Copy GUID to the device info structure. Set pointer. */
-    if( lpGUID == NULL )
-    {
-        winDsDeviceInfo->lpGUID = NULL;
-    }
-    else
-    {
-        memcpy( &winDsDeviceInfo->guid, lpGUID, sizeof(GUID) );
-        winDsDeviceInfo->lpGUID = &winDsDeviceInfo->guid;
-    }
-    
-    if( lpGUID )
-    {
-        if (IsEqualGUID (&IID_IRolandVSCEmulated1,lpGUID) ||
-            IsEqualGUID (&IID_IRolandVSCEmulated2,lpGUID) )
-        {
-            PA_DEBUG(("BLACKLISTED: %s \n",name));
-            return paNoError;
-        }
-    }
-
-    /* Create a DirectSound object for the specified GUID
-        Note that using CoCreateInstance doesn't work on windows CE.
-    */
-    hr = paWinDsDSoundEntryPoints.DirectSoundCreate( lpGUID, &lpDirectSound, NULL );
-
-    /** try using CoCreateInstance because DirectSoundCreate was hanging under
-        some circumstances - note this was probably related to the
-        #define BOOL short bug which has now been fixed
-        @todo delete this comment and the following code once we've ensured
-        there is no bug.
-    */
-    /*
-    hr = CoCreateInstance( &CLSID_DirectSound, NULL, CLSCTX_INPROC_SERVER,
-            &IID_IDirectSound, (void**)&lpDirectSound );
-
-    if( hr == S_OK )
-    {
-        hr = IDirectSound_Initialize( lpDirectSound, lpGUID );
-    }
-    */
-    
-    if( hr != DS_OK )
-    {
-        if (hr == DSERR_ALLOCATED)
-            PA_DEBUG(("AddOutputDeviceInfoFromDirectSound %s DSERR_ALLOCATED\n",name));
-        DBUG(("Cannot create DirectSound for %s. Result = 0x%x\n", name, hr ));
-        if (lpGUID)
-            DBUG(("%s's GUID: {0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x,0x%x, 0x%x} \n",
-                 name,
-                 lpGUID->Data1,
-                 lpGUID->Data2,
-                 lpGUID->Data3,
-                 lpGUID->Data4[0],
-                 lpGUID->Data4[1],
-                 lpGUID->Data4[2],
-                 lpGUID->Data4[3],
-                 lpGUID->Data4[4],
-                 lpGUID->Data4[5],
-                 lpGUID->Data4[6],
-                 lpGUID->Data4[7]));
-
-        deviceOK = FALSE;
-    }
-    else
-    {
-        /* Query device characteristics. */
-        memset( &caps, 0, sizeof(caps) ); 
-        caps.dwSize = sizeof(caps);
-        hr = IDirectSound_GetCaps( lpDirectSound, &caps );
-        if( hr != DS_OK )
-        {
-            DBUG(("Cannot GetCaps() for DirectSound device %s. Result = 0x%x\n", name, hr ));
-            deviceOK = FALSE;
-        }
-        else
-        {
-
-#ifndef PA_NO_WMME
-            if( caps.dwFlags & DSCAPS_EMULDRIVER )
-            {
-                /* If WMME supported, then reject Emulated drivers because they are lousy. */
-                deviceOK = FALSE;
-            }
-#endif
-
-            if( deviceOK )
-            {
-                deviceInfo->maxInputChannels = 0;
-                winDsDeviceInfo->deviceInputChannelCountIsKnown = 1;
-
-                /* DS output capabilities only indicate supported number of channels
-                   using two flags which indicate mono and/or stereo.
-                   We assume that stereo devices may support more than 2 channels
-                   (as is the case with 5.1 devices for example) and so
-                   set deviceOutputChannelCountIsKnown to 0 (unknown).
-                   In this case OpenStream will try to open the device
-                   when the user requests more than 2 channels, rather than
-                   returning an error. 
-                */
-                if( caps.dwFlags & DSCAPS_PRIMARYSTEREO )
-                {
-                    deviceInfo->maxOutputChannels = 2;
-                    winDsDeviceInfo->deviceOutputChannelCountIsKnown = 0;
-                }
-                else
-                {
-                    deviceInfo->maxOutputChannels = 1;
-                    winDsDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-                }
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-                if( pnpInterface )
-                {
-                    int count = PaWin_WDMKS_QueryFilterMaximumChannelCount( pnpInterface, /* isInput= */ 0  );
-                    if( count > 0 )
-                    {
-                        deviceInfo->maxOutputChannels = count;
-                        winDsDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-                    }
-                }
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-                deviceInfo->defaultLowInputLatency = 0.;    /** @todo IMPLEMENT ME */
-                deviceInfo->defaultLowOutputLatency = 0.;   /** @todo IMPLEMENT ME */
-                deviceInfo->defaultHighInputLatency = 0.;   /** @todo IMPLEMENT ME */
-                deviceInfo->defaultHighOutputLatency = 0.;  /** @todo IMPLEMENT ME */
-                
-                /* initialize defaultSampleRate */
-                
-                if( caps.dwFlags & DSCAPS_CONTINUOUSRATE )
-                {
-                    /* initialize to caps.dwMaxSecondarySampleRate incase none of the standard rates match */
-                    deviceInfo->defaultSampleRate = caps.dwMaxSecondarySampleRate;
-
-                    for( i = 0; i < PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_; ++i )
-                    {
-                        if( defaultSampleRateSearchOrder_[i] >= caps.dwMinSecondarySampleRate
-                                && defaultSampleRateSearchOrder_[i] <= caps.dwMaxSecondarySampleRate )
-                        {
-                            deviceInfo->defaultSampleRate = defaultSampleRateSearchOrder_[i];
-                            break;
-                        }
-                    }
-                }
-                else if( caps.dwMinSecondarySampleRate == caps.dwMaxSecondarySampleRate )
-                {
-                    if( caps.dwMinSecondarySampleRate == 0 )
-                    {
-                        /*
-                        ** On my Thinkpad 380Z, DirectSoundV6 returns min-max=0 !!
-                        ** But it supports continuous sampling.
-                        ** So fake range of rates, and hope it really supports it.
-                        */
-                        deviceInfo->defaultSampleRate = 44100.0f;
-
-                        DBUG(("PA - Reported rates both zero. Setting to fake values for device #%s\n", name ));
-                    }
-                    else
-                    {
-	                    deviceInfo->defaultSampleRate = caps.dwMaxSecondarySampleRate;
-                    }
-                }
-                else if( (caps.dwMinSecondarySampleRate < 1000.0) && (caps.dwMaxSecondarySampleRate > 50000.0) )
-                {
-                    /* The EWS88MT drivers lie, lie, lie. The say they only support two rates, 100 & 100000.
-                    ** But we know that they really support a range of rates!
-                    ** So when we see a ridiculous set of rates, assume it is a range.
-                    */
-                  deviceInfo->defaultSampleRate = 44100.0f;
-                  DBUG(("PA - Sample rate range used instead of two odd values for device #%s\n", name ));
-                }
-                else deviceInfo->defaultSampleRate = caps.dwMaxSecondarySampleRate;
-
-
-                //printf( "min %d max %d\n", caps.dwMinSecondarySampleRate, caps.dwMaxSecondarySampleRate );
-                // dwFlags | DSCAPS_CONTINUOUSRATE 
-            }
-        }
-
-        IDirectSound_Release( lpDirectSound );
-    }
-
-    if( deviceOK )
-    {
-        deviceInfo->name = name;
-
-        if( lpGUID == NULL )
-            hostApi->info.defaultOutputDevice = hostApi->info.deviceCount;
-            
-        hostApi->info.deviceCount++;
-    }
-
-    return result;
-}
-
-
-/************************************************************************************
-** Extract capabilities from an input device, and add it to the device info list
-** if successful. This function assumes that there is enough room in the
-** device info list to accomodate all entries.
-**
-** The device will not be added to the device list if any errors are encountered.
-*/
-static PaError AddInputDeviceInfoFromDirectSoundCapture(
-        PaWinDsHostApiRepresentation *winDsHostApi, char *name, LPGUID lpGUID, char *pnpInterface )
-{
-    PaUtilHostApiRepresentation  *hostApi = &winDsHostApi->inheritedHostApiRep;
-    PaWinDsDeviceInfo            *winDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[hostApi->info.deviceCount];
-    PaDeviceInfo                 *deviceInfo = &winDsDeviceInfo->inheritedDeviceInfo;
-    HRESULT                       hr;
-    LPDIRECTSOUNDCAPTURE          lpDirectSoundCapture;
-    DSCCAPS                       caps;
-    int                           deviceOK = TRUE;
-    PaError                       result = paNoError;
-    
-    /* Copy GUID to the device info structure. Set pointer. */
-    if( lpGUID == NULL )
-    {
-        winDsDeviceInfo->lpGUID = NULL;
-    }
-    else
-    {
-        winDsDeviceInfo->lpGUID = &winDsDeviceInfo->guid;
-        memcpy( &winDsDeviceInfo->guid, lpGUID, sizeof(GUID) );
-    }
-
-    hr = paWinDsDSoundEntryPoints.DirectSoundCaptureCreate( lpGUID, &lpDirectSoundCapture, NULL );
-
-    /** try using CoCreateInstance because DirectSoundCreate was hanging under
-        some circumstances - note this was probably related to the
-        #define BOOL short bug which has now been fixed
-        @todo delete this comment and the following code once we've ensured
-        there is no bug.
-    */
-    /*
-    hr = CoCreateInstance( &CLSID_DirectSoundCapture, NULL, CLSCTX_INPROC_SERVER,
-            &IID_IDirectSoundCapture, (void**)&lpDirectSoundCapture );
-    */
-    if( hr != DS_OK )
-    {
-        DBUG(("Cannot create Capture for %s. Result = 0x%x\n", name, hr ));
-        deviceOK = FALSE;
-    }
-    else
-    {
-        /* Query device characteristics. */
-        memset( &caps, 0, sizeof(caps) );
-        caps.dwSize = sizeof(caps);
-        hr = IDirectSoundCapture_GetCaps( lpDirectSoundCapture, &caps );
-        if( hr != DS_OK )
-        {
-            DBUG(("Cannot GetCaps() for Capture device %s. Result = 0x%x\n", name, hr ));
-            deviceOK = FALSE;
-        }
-        else
-        {
-#ifndef PA_NO_WMME
-            if( caps.dwFlags & DSCAPS_EMULDRIVER )
-            {
-                /* If WMME supported, then reject Emulated drivers because they are lousy. */
-                deviceOK = FALSE;
-            }
-#endif
-
-            if( deviceOK )
-            {
-                deviceInfo->maxInputChannels = caps.dwChannels;
-                winDsDeviceInfo->deviceInputChannelCountIsKnown = 1;
-
-                deviceInfo->maxOutputChannels = 0;
-                winDsDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-                if( pnpInterface )
-                {
-                    int count = PaWin_WDMKS_QueryFilterMaximumChannelCount( pnpInterface, /* isInput= */ 1  );
-                    if( count > 0 )
-                    {
-                        deviceInfo->maxInputChannels = count;
-                        winDsDeviceInfo->deviceInputChannelCountIsKnown = 1;
-                    }
-                }
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-                deviceInfo->defaultLowInputLatency = 0.;    /** @todo IMPLEMENT ME */
-                deviceInfo->defaultLowOutputLatency = 0.;   /** @todo IMPLEMENT ME */
-                deviceInfo->defaultHighInputLatency = 0.;   /** @todo IMPLEMENT ME */
-                deviceInfo->defaultHighOutputLatency = 0.;  /** @todo IMPLEMENT ME */
-
-/*  constants from a WINE patch by Francois Gouget, see:
-    http://www.winehq.com/hypermail/wine-patches/2003/01/0290.html
-
-    ---
-    Date: Fri, 14 May 2004 10:38:12 +0200 (CEST)
-    From: Francois Gouget <fgouget@ ... .fr>
-    To: Ross Bencina <rbencina@ ... .au>
-    Subject: Re: Permission to use wine 48/96 wave patch in BSD licensed library
-
-    [snip]
-
-    I give you permission to use the patch below under the BSD license.
-    http://www.winehq.com/hypermail/wine-patches/2003/01/0290.html
-
-    [snip]
-*/
-#ifndef WAVE_FORMAT_48M08
-#define WAVE_FORMAT_48M08      0x00001000    /* 48     kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_48S08      0x00002000    /* 48     kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_48M16      0x00004000    /* 48     kHz, Mono,   16-bit */
-#define WAVE_FORMAT_48S16      0x00008000    /* 48     kHz, Stereo, 16-bit */
-#define WAVE_FORMAT_96M08      0x00010000    /* 96     kHz, Mono,   8-bit  */
-#define WAVE_FORMAT_96S08      0x00020000    /* 96     kHz, Stereo, 8-bit  */
-#define WAVE_FORMAT_96M16      0x00040000    /* 96     kHz, Mono,   16-bit */
-#define WAVE_FORMAT_96S16      0x00080000    /* 96     kHz, Stereo, 16-bit */
-#endif
-
-                /* defaultSampleRate */
-                if( caps.dwChannels == 2 )
-                {
-                    if( caps.dwFormats & WAVE_FORMAT_4S16 )
-                        deviceInfo->defaultSampleRate = 44100.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_48S16 )
-                        deviceInfo->defaultSampleRate = 48000.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_2S16 )
-                        deviceInfo->defaultSampleRate = 22050.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_1S16 )
-                        deviceInfo->defaultSampleRate = 11025.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_96S16 )
-                        deviceInfo->defaultSampleRate = 96000.0;
-                    else
-                        deviceInfo->defaultSampleRate = 0.;
-                }
-                else if( caps.dwChannels == 1 )
-                {
-                    if( caps.dwFormats & WAVE_FORMAT_4M16 )
-                        deviceInfo->defaultSampleRate = 44100.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_48M16 )
-                        deviceInfo->defaultSampleRate = 48000.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_2M16 )
-                        deviceInfo->defaultSampleRate = 22050.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_1M16 )
-                        deviceInfo->defaultSampleRate = 11025.0;
-                    else if( caps.dwFormats & WAVE_FORMAT_96M16 )
-                        deviceInfo->defaultSampleRate = 96000.0;
-                    else
-                        deviceInfo->defaultSampleRate = 0.;
-                }
-                else deviceInfo->defaultSampleRate = 0.;
-            }
-        }
-        
-        IDirectSoundCapture_Release( lpDirectSoundCapture );
-    }
-
-    if( deviceOK )
-    {
-        deviceInfo->name = name;
-
-        if( lpGUID == NULL )
-            hostApi->info.defaultInputDevice = hostApi->info.deviceCount;
-
-        hostApi->info.deviceCount++;
-    }
-
-    return result;
-}
-
-
-/***********************************************************************************/
-PaError PaWinDs_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    int i, deviceCount;
-    PaWinDsHostApiRepresentation *winDsHostApi;
-    DSDeviceNamesAndGUIDs deviceNamesAndGUIDs;
-
-    PaWinDsDeviceInfo *deviceInfoArray;
-    char comWasInitialized = 0;
-
-    /*
-        If COM is already initialized CoInitialize will either return
-        FALSE, or RPC_E_CHANGED_MODE if it was initialised in a different
-        threading mode. In either case we shouldn't consider it an error
-        but we need to be careful to not call CoUninitialize() if 
-        RPC_E_CHANGED_MODE was returned.
-    */
-
-    HRESULT hr = CoInitialize(NULL);
-    if( FAILED(hr) && hr != RPC_E_CHANGED_MODE )
-        return paUnanticipatedHostError;
-
-    if( hr != RPC_E_CHANGED_MODE )
-        comWasInitialized = 1;
-
-    /* initialise guid vectors so they can be safely deleted on error */
-    deviceNamesAndGUIDs.winDsHostApi = NULL;
-    deviceNamesAndGUIDs.inputNamesAndGUIDs.items = NULL;
-    deviceNamesAndGUIDs.outputNamesAndGUIDs.items = NULL;
-
-    PaWinDs_InitializeDSoundEntryPoints();
-
-    winDsHostApi = (PaWinDsHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaWinDsHostApiRepresentation) );
-    if( !winDsHostApi )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    winDsHostApi->comWasInitialized = comWasInitialized;
-
-    winDsHostApi->allocations = PaUtil_CreateAllocationGroup();
-    if( !winDsHostApi->allocations )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    *hostApi = &winDsHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paDirectSound;
-    (*hostApi)->info.name = "Windows DirectSound";
-    
-    (*hostApi)->info.deviceCount = 0;
-    (*hostApi)->info.defaultInputDevice = paNoDevice;
-    (*hostApi)->info.defaultOutputDevice = paNoDevice;
-
-    
-/* DSound - enumerate devices to count them and to gather their GUIDs */
-
-    result = InitializeDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.inputNamesAndGUIDs, winDsHostApi->allocations );
-    if( result != paNoError )
-        goto error;
-
-    result = InitializeDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.outputNamesAndGUIDs, winDsHostApi->allocations );
-    if( result != paNoError )
-        goto error;
-
-    paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerate( (LPDSENUMCALLBACK)CollectGUIDsProc, (void *)&deviceNamesAndGUIDs.inputNamesAndGUIDs );
-
-    paWinDsDSoundEntryPoints.DirectSoundEnumerate( (LPDSENUMCALLBACK)CollectGUIDsProc, (void *)&deviceNamesAndGUIDs.outputNamesAndGUIDs );
-
-    if( deviceNamesAndGUIDs.inputNamesAndGUIDs.enumerationError != paNoError )
-    {
-        result = deviceNamesAndGUIDs.inputNamesAndGUIDs.enumerationError;
-        goto error;
-    }
-
-    if( deviceNamesAndGUIDs.outputNamesAndGUIDs.enumerationError != paNoError )
-    {
-        result = deviceNamesAndGUIDs.outputNamesAndGUIDs.enumerationError;
-        goto error;
-    }
-
-    deviceCount = deviceNamesAndGUIDs.inputNamesAndGUIDs.count + deviceNamesAndGUIDs.outputNamesAndGUIDs.count;
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-    if( deviceCount > 0 )
-    {
-        deviceNamesAndGUIDs.winDsHostApi = winDsHostApi;
-        FindDevicePnpInterfaces( &deviceNamesAndGUIDs );
-    }
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-    if( deviceCount > 0 )
-    {
-        /* allocate array for pointers to PaDeviceInfo structs */
-        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-                winDsHostApi->allocations, sizeof(PaDeviceInfo*) * deviceCount );
-        if( !(*hostApi)->deviceInfos )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        /* allocate all PaDeviceInfo structs in a contiguous block */
-        deviceInfoArray = (PaWinDsDeviceInfo*)PaUtil_GroupAllocateMemory(
-                winDsHostApi->allocations, sizeof(PaWinDsDeviceInfo) * deviceCount );
-        if( !deviceInfoArray )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        for( i=0; i < deviceCount; ++i )
-        {
-            PaDeviceInfo *deviceInfo = &deviceInfoArray[i].inheritedDeviceInfo;
-            deviceInfo->structVersion = 2;
-            deviceInfo->hostApi = hostApiIndex;
-            deviceInfo->name = 0;
-            (*hostApi)->deviceInfos[i] = deviceInfo;
-        }
-
-        for( i=0; i < deviceNamesAndGUIDs.inputNamesAndGUIDs.count; ++i )
-        {
-            result = AddInputDeviceInfoFromDirectSoundCapture( winDsHostApi,
-                    deviceNamesAndGUIDs.inputNamesAndGUIDs.items[i].name,
-                    deviceNamesAndGUIDs.inputNamesAndGUIDs.items[i].lpGUID,
-                    deviceNamesAndGUIDs.inputNamesAndGUIDs.items[i].pnpInterface );
-            if( result != paNoError )
-                goto error;
-        }
-
-        for( i=0; i < deviceNamesAndGUIDs.outputNamesAndGUIDs.count; ++i )
-        {
-            result = AddOutputDeviceInfoFromDirectSound( winDsHostApi,
-                    deviceNamesAndGUIDs.outputNamesAndGUIDs.items[i].name,
-                    deviceNamesAndGUIDs.outputNamesAndGUIDs.items[i].lpGUID,
-                    deviceNamesAndGUIDs.outputNamesAndGUIDs.items[i].pnpInterface );
-            if( result != paNoError )
-                goto error;
-        }
-    }    
-
-    result = TerminateDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.inputNamesAndGUIDs );
-    if( result != paNoError )
-        goto error;
-
-    result = TerminateDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.outputNamesAndGUIDs );
-    if( result != paNoError )
-        goto error;
-
-    
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PaUtil_InitializeStreamInterface( &winDsHostApi->callbackStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &winDsHostApi->blockingStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );
-
-    return result;
-
-error:
-    if( winDsHostApi )
-    {
-        if( winDsHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( winDsHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( winDsHostApi->allocations );
-        }
-                
-        PaUtil_FreeMemory( winDsHostApi );
-    }
-
-    TerminateDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.inputNamesAndGUIDs );
-    TerminateDSDeviceNameAndGUIDVector( &deviceNamesAndGUIDs.outputNamesAndGUIDs );
-
-    if( comWasInitialized )
-        CoUninitialize();
-
-    return result;
-}
-
-
-/***********************************************************************************/
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaWinDsHostApiRepresentation *winDsHostApi = (PaWinDsHostApiRepresentation*)hostApi;
-    char comWasInitialized = winDsHostApi->comWasInitialized;
-
-    /*
-        IMPLEMENT ME:
-            - clean up any resources not handled by the allocation group
-    */
-
-    if( winDsHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( winDsHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( winDsHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( winDsHostApi );
-
-    PaWinDs_TerminateDSoundEntryPoints();
-
-    if( comWasInitialized )
-        CoUninitialize();
-}
-
-
-/* Set minimal latency based on whether NT or Win95.
- * NT has higher latency.
- */
-static int PaWinDS_GetMinSystemLatency( void )
-{
-    int minLatencyMsec;
-    /* Set minimal latency based on whether NT or other OS.
-     * NT has higher latency.
-     */
-    OSVERSIONINFO osvi;
-	osvi.dwOSVersionInfoSize = sizeof( osvi );
-	GetVersionEx( &osvi );
-    DBUG(("PA - PlatformId = 0x%x\n", osvi.dwPlatformId ));
-    DBUG(("PA - MajorVersion = 0x%x\n", osvi.dwMajorVersion ));
-    DBUG(("PA - MinorVersion = 0x%x\n", osvi.dwMinorVersion ));
-    /* Check for NT */
-	if( (osvi.dwMajorVersion == 4) && (osvi.dwPlatformId == 2) )
-	{
-		minLatencyMsec = PA_WIN_NT_LATENCY;
-	}
-	else if(osvi.dwMajorVersion >= 5)
-	{
-		minLatencyMsec = PA_WIN_WDM_LATENCY;
-	}
-	else
-	{
-		minLatencyMsec = PA_WIN_9X_LATENCY;
-	}
-    return minLatencyMsec;
-}
-
-static PaError ValidateWinDirectSoundSpecificStreamInfo(
-        const PaStreamParameters *streamParameters,
-        const PaWinDirectSoundStreamInfo *streamInfo )
-{
-	if( streamInfo )
-	{
-	    if( streamInfo->size != sizeof( PaWinDirectSoundStreamInfo )
-	            || streamInfo->version != 1 )
-	    {
-	        return paIncompatibleHostApiSpecificStreamInfo;
-	    }
-	}
-
-	return paNoError;
-}
-
-/***********************************************************************************/
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    PaError result;
-    PaWinDsDeviceInfo *inputWinDsDeviceInfo, *outputWinDsDeviceInfo;
-    PaDeviceInfo *inputDeviceInfo, *outputDeviceInfo;
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaWinDirectSoundStreamInfo *inputStreamInfo, *outputStreamInfo;
-
-    if( inputParameters )
-    {
-        inputWinDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[ inputParameters->device ];
-        inputDeviceInfo = &inputWinDsDeviceInfo->inheritedDeviceInfo;
-
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputWinDsDeviceInfo->deviceInputChannelCountIsKnown
-                && inputChannelCount > inputDeviceInfo->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        inputStreamInfo = (PaWinDirectSoundStreamInfo*)inputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinDirectSoundSpecificStreamInfo( inputParameters, inputStreamInfo );
-		if( result != paNoError ) return result;
-    }
-    else
-    {
-        inputChannelCount = 0;
-    }
-
-    if( outputParameters )
-    {
-        outputWinDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[ outputParameters->device ];
-        outputDeviceInfo = &outputWinDsDeviceInfo->inheritedDeviceInfo;
-
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support inputChannelCount */
-        if( outputWinDsDeviceInfo->deviceOutputChannelCountIsKnown
-                && outputChannelCount > outputDeviceInfo->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        outputStreamInfo = (PaWinDirectSoundStreamInfo*)outputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinDirectSoundSpecificStreamInfo( outputParameters, outputStreamInfo );
-		if( result != paNoError ) return result;
-    }
-    else
-    {
-        outputChannelCount = 0;
-    }
-    
-    /*
-        IMPLEMENT ME:
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported if necessary
-
-            - check that the device supports sampleRate
-
-        Because the buffer adapter handles conversion between all standard
-        sample formats, the following checks are only required if paCustomFormat
-        is implemented, or under some other unusual conditions.
-
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-    */
-
-    return paFormatIsSupported;
-}
-
-
-/*************************************************************************
-** Determine minimum number of buffers required for this host based
-** on minimum latency. Latency can be optionally set by user by setting
-** an environment variable. For example, to set latency to 200 msec, put:
-**
-**    set PA_MIN_LATENCY_MSEC=200
-**
-** in the AUTOEXEC.BAT file and reboot.
-** If the environment variable is not set, then the latency will be determined
-** based on the OS. Windows NT has higher latency than Win95.
-*/
-#define PA_LATENCY_ENV_NAME  ("PA_MIN_LATENCY_MSEC")
-#define PA_ENV_BUF_SIZE  (32)
-
-static int PaWinDs_GetMinLatencyFrames( double sampleRate )
-{
-    char      envbuf[PA_ENV_BUF_SIZE];
-    DWORD     hresult;
-    int       minLatencyMsec = 0;
-
-    /* Let user determine minimal latency by setting environment variable. */
-    hresult = GetEnvironmentVariableA( PA_LATENCY_ENV_NAME, envbuf, PA_ENV_BUF_SIZE );
-    if( (hresult > 0) && (hresult < PA_ENV_BUF_SIZE) )
-    {
-        minLatencyMsec = atoi( envbuf );
-    }
-    else
-    {
-        minLatencyMsec = PaWinDS_GetMinSystemLatency();
-#if PA_USE_HIGH_LATENCY
-        PRINT(("PA - Minimum Latency set to %d msec!\n", minLatencyMsec ));
-#endif
-
-    }
-
-    return (int) (minLatencyMsec * sampleRate * SECONDS_PER_MSEC);
-}
-
-
-static HRESULT InitInputBuffer( PaWinDsStream *stream, PaSampleFormat sampleFormat, unsigned long nFrameRate, WORD nChannels, int bytesPerBuffer, PaWinWaveFormatChannelMask channelMask )
-{
-    DSCBUFFERDESC  captureDesc;
-    PaWinWaveFormat waveFormat;
-    HRESULT        result;
-    
-    stream->bytesPerInputFrame = nChannels * Pa_GetSampleSize(sampleFormat);
-
-    stream->inputSize = bytesPerBuffer;
-    // ----------------------------------------------------------------------
-    // Setup the secondary buffer description
-    ZeroMemory(&captureDesc, sizeof(DSCBUFFERDESC));
-    captureDesc.dwSize = sizeof(DSCBUFFERDESC);
-    captureDesc.dwFlags =  0;
-    captureDesc.dwBufferBytes = bytesPerBuffer;
-    captureDesc.lpwfxFormat = (WAVEFORMATEX*)&waveFormat;
-    
-    // Create the capture buffer
-
-    // first try WAVEFORMATEXTENSIBLE. if this fails, fall back to WAVEFORMATEX
-    PaWin_InitializeWaveFormatExtensible( &waveFormat, nChannels, 
-                sampleFormat, nFrameRate, channelMask );
-
-    if( IDirectSoundCapture_CreateCaptureBuffer( stream->pDirectSoundCapture,
-                  &captureDesc, &stream->pDirectSoundInputBuffer, NULL) != DS_OK )
-    {
-        PaWin_InitializeWaveFormatEx( &waveFormat, nChannels, sampleFormat, nFrameRate );
-
-        if ((result = IDirectSoundCapture_CreateCaptureBuffer( stream->pDirectSoundCapture,
-                    &captureDesc, &stream->pDirectSoundInputBuffer, NULL)) != DS_OK) return result;
-    }
-
-    stream->readOffset = 0;  // reset last read position to start of buffer
-    return DS_OK;
-}
-
-
-static HRESULT InitOutputBuffer( PaWinDsStream *stream, PaSampleFormat sampleFormat, unsigned long nFrameRate, WORD nChannels, int bytesPerBuffer, PaWinWaveFormatChannelMask channelMask )
-{
-    /** @todo FIXME: if InitOutputBuffer returns an error I'm not sure it frees all resources cleanly */
-
-    DWORD          dwDataLen;
-    DWORD          playCursor;
-    HRESULT        result;
-    LPDIRECTSOUNDBUFFER pPrimaryBuffer;
-    HWND           hWnd;
-    HRESULT        hr;
-    PaWinWaveFormat waveFormat;
-    DSBUFFERDESC   primaryDesc;
-    DSBUFFERDESC   secondaryDesc;
-    unsigned char* pDSBuffData;
-    LARGE_INTEGER  counterFrequency;
-    int bytesPerSample = Pa_GetSampleSize(sampleFormat);
-
-    stream->outputBufferSizeBytes = bytesPerBuffer;
-    stream->outputIsRunning = FALSE;
-    stream->outputUnderflowCount = 0;
-    stream->dsw_framesWritten = 0;
-    stream->bytesPerOutputFrame = nChannels * bytesPerSample;
-
-    // We were using getForegroundWindow() but sometimes the ForegroundWindow may not be the
-    // applications's window. Also if that window is closed before the Buffer is closed
-    // then DirectSound can crash. (Thanks for Scott Patterson for reporting this.)
-    // So we will use GetDesktopWindow() which was suggested by Miller Puckette.
-    // hWnd = GetForegroundWindow();
-    //
-    //  FIXME: The example code I have on the net creates a hidden window that
-    //      is managed by our code - I think we should do that - one hidden
-    //      window for the whole of Pa_DS
-    //
-    hWnd = GetDesktopWindow();
-
-    // Set cooperative level to DSSCL_EXCLUSIVE so that we can get 16 bit output, 44.1 KHz.
-    // Exclusize also prevents unexpected sounds from other apps during a performance.
-    if ((hr = IDirectSound_SetCooperativeLevel( stream->pDirectSound,
-              hWnd, DSSCL_EXCLUSIVE)) != DS_OK)
-    {
-        return hr;
-    }
-
-    // -----------------------------------------------------------------------
-    // Create primary buffer and set format just so we can specify our custom format.
-    // Otherwise we would be stuck with the default which might be 8 bit or 22050 Hz.
-    // Setup the primary buffer description
-    ZeroMemory(&primaryDesc, sizeof(DSBUFFERDESC));
-    primaryDesc.dwSize        = sizeof(DSBUFFERDESC);
-    primaryDesc.dwFlags       = DSBCAPS_PRIMARYBUFFER; // all panning, mixing, etc done by synth
-    primaryDesc.dwBufferBytes = 0;
-    primaryDesc.lpwfxFormat   = NULL;
-    // Create the buffer
-    if ((result = IDirectSound_CreateSoundBuffer( stream->pDirectSound,
-                  &primaryDesc, &pPrimaryBuffer, NULL)) != DS_OK) return result;
-
-    // Set the primary buffer's format
-
-    // first try WAVEFORMATEXTENSIBLE. if this fails, fall back to WAVEFORMATEX
-    PaWin_InitializeWaveFormatExtensible( &waveFormat, nChannels, 
-                sampleFormat, nFrameRate, channelMask );
-
-    if( IDirectSoundBuffer_SetFormat( pPrimaryBuffer, (WAVEFORMATEX*)&waveFormat) != DS_OK )
-    {
-        PaWin_InitializeWaveFormatEx( &waveFormat, nChannels, sampleFormat, nFrameRate );
-
-        if((result = IDirectSoundBuffer_SetFormat( pPrimaryBuffer, (WAVEFORMATEX*)&waveFormat)) != DS_OK) return result;
-    }
-
-    // ----------------------------------------------------------------------
-    // Setup the secondary buffer description
-    ZeroMemory(&secondaryDesc, sizeof(DSBUFFERDESC));
-    secondaryDesc.dwSize = sizeof(DSBUFFERDESC);
-    secondaryDesc.dwFlags =  DSBCAPS_GLOBALFOCUS | DSBCAPS_GETCURRENTPOSITION2;
-    secondaryDesc.dwBufferBytes = bytesPerBuffer;
-    secondaryDesc.lpwfxFormat = (WAVEFORMATEX*)&waveFormat;
-    // Create the secondary buffer
-    if ((result = IDirectSound_CreateSoundBuffer( stream->pDirectSound,
-                  &secondaryDesc, &stream->pDirectSoundOutputBuffer, NULL)) != DS_OK) return result;
-    // Lock the DS buffer
-    if ((result = IDirectSoundBuffer_Lock( stream->pDirectSoundOutputBuffer, 0, stream->outputBufferSizeBytes, (LPVOID*)&pDSBuffData,
-                                           &dwDataLen, NULL, 0, 0)) != DS_OK) return result;
-    // Zero the DS buffer
-    ZeroMemory(pDSBuffData, dwDataLen);
-    // Unlock the DS buffer
-    if ((result = IDirectSoundBuffer_Unlock( stream->pDirectSoundOutputBuffer, pDSBuffData, dwDataLen, NULL, 0)) != DS_OK) return result;
-    if( QueryPerformanceFrequency( &counterFrequency ) )
-    {
-        int framesInBuffer = bytesPerBuffer / (nChannels * bytesPerSample);
-        stream->perfCounterTicksPerBuffer.QuadPart = (counterFrequency.QuadPart * framesInBuffer) / nFrameRate;
-    }
-    else
-    {
-        stream->perfCounterTicksPerBuffer.QuadPart = 0;
-    }
-    // Let DSound set the starting write position because if we set it to zero, it looks like the
-    // buffer is full to begin with. This causes a long pause before sound starts when using large buffers.
-    hr = IDirectSoundBuffer_GetCurrentPosition( stream->pDirectSoundOutputBuffer,
-            &playCursor, &stream->outputBufferWriteOffsetBytes );
-    if( hr != DS_OK )
-    {
-        return hr;
-    }
-    stream->dsw_framesWritten = stream->outputBufferWriteOffsetBytes / stream->bytesPerOutputFrame;
-    /* printf("DSW_InitOutputBuffer: playCursor = %d, writeCursor = %d\n", playCursor, dsw->dsw_WriteOffset ); */
-    return DS_OK;
-}
-
-/***********************************************************************************/
-/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */
-
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaWinDsHostApiRepresentation *winDsHostApi = (PaWinDsHostApiRepresentation*)hostApi;
-    PaWinDsStream *stream = 0;
-    PaWinDsDeviceInfo *inputWinDsDeviceInfo, *outputWinDsDeviceInfo;
-    PaDeviceInfo *inputDeviceInfo, *outputDeviceInfo;
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
-    unsigned long suggestedInputLatencyFrames, suggestedOutputLatencyFrames;
-    PaWinDirectSoundStreamInfo *inputStreamInfo, *outputStreamInfo;
-    PaWinWaveFormatChannelMask inputChannelMask, outputChannelMask;
-
-    if( inputParameters )
-    {
-        inputWinDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[ inputParameters->device ];
-        inputDeviceInfo = &inputWinDsDeviceInfo->inheritedDeviceInfo;
-
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-        suggestedInputLatencyFrames = (unsigned long)(inputParameters->suggestedLatency * sampleRate);
-
-        /* IDEA: the following 3 checks could be performed by default by pa_front
-            unless some flag indicated otherwise */
-            
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputWinDsDeviceInfo->deviceInputChannelCountIsKnown
-                && inputChannelCount > inputDeviceInfo->maxInputChannels )
-            return paInvalidChannelCount;
-            
-        /* validate hostApiSpecificStreamInfo */
-        inputStreamInfo = (PaWinDirectSoundStreamInfo*)inputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinDirectSoundSpecificStreamInfo( inputParameters, inputStreamInfo );
-		if( result != paNoError ) return result;
-
-        if( inputStreamInfo && inputStreamInfo->flags & paWinDirectSoundUseChannelMask )
-            inputChannelMask = inputStreamInfo->channelMask;
-        else
-            inputChannelMask = PaWin_DefaultChannelMask( inputChannelCount );
-    }
-    else
-    {
-        inputChannelCount = 0;
-		inputSampleFormat = 0;
-        suggestedInputLatencyFrames = 0;
-    }
-
-
-    if( outputParameters )
-    {
-        outputWinDsDeviceInfo = (PaWinDsDeviceInfo*) hostApi->deviceInfos[ outputParameters->device ];
-        outputDeviceInfo = &outputWinDsDeviceInfo->inheritedDeviceInfo;
-
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        suggestedOutputLatencyFrames = (unsigned long)(outputParameters->suggestedLatency * sampleRate);
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support outputChannelCount */
-        if( outputWinDsDeviceInfo->deviceOutputChannelCountIsKnown
-                && outputChannelCount > outputDeviceInfo->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate hostApiSpecificStreamInfo */
-        outputStreamInfo = (PaWinDirectSoundStreamInfo*)outputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinDirectSoundSpecificStreamInfo( outputParameters, outputStreamInfo );
-		if( result != paNoError ) return result;   
-
-        if( outputStreamInfo && outputStreamInfo->flags & paWinDirectSoundUseChannelMask )
-            outputChannelMask = outputStreamInfo->channelMask;
-        else
-            outputChannelMask = PaWin_DefaultChannelMask( outputChannelCount );
-    }
-    else
-    {
-        outputChannelCount = 0;
-		outputSampleFormat = 0;
-        suggestedOutputLatencyFrames = 0;
-    }
-
-
-    /*
-        IMPLEMENT ME:
-
-        ( the following two checks are taken care of by PaUtil_InitializeBufferProcessor() )
-
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported
-
-            - check that the device supports sampleRate
-
-            - alter sampleRate to a close allowable rate if possible / necessary
-
-            - validate suggestedInputLatency and suggestedOutputLatency parameters,
-                use default values where necessary
-    */
-
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-
-    stream = (PaWinDsStream*)PaUtil_AllocateMemory( sizeof(PaWinDsStream) );
-    if( !stream )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    memset( stream, 0, sizeof(PaWinDsStream) ); /* initialize all stream variables to 0 */
-
-    if( streamCallback )
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &winDsHostApi->callbackStreamInterface, streamCallback, userData );
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &winDsHostApi->blockingStreamInterface, streamCallback, userData );
-    }
-    
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-
-    if( inputParameters )
-    {
-        /* IMPLEMENT ME - establish which  host formats are available */
-        PaSampleFormat nativeInputFormats = paInt16;
-        //PaSampleFormat nativeFormats = paUInt8 | paInt16 | paInt24 | paInt32 | paFloat32;
-
-        hostInputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( nativeInputFormats, inputParameters->sampleFormat );
-    }
-	else
-	{
-		hostInputSampleFormat = 0;
-	}
-
-    if( outputParameters )
-    {
-        /* IMPLEMENT ME - establish which  host formats are available */
-        PaSampleFormat nativeOutputFormats = paInt16;
-        //PaSampleFormat nativeOutputFormats = paUInt8 | paInt16 | paInt24 | paInt32 | paFloat32;
-
-        hostOutputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( nativeOutputFormats, outputParameters->sampleFormat );
-    }
-    else
-	{
-		hostOutputSampleFormat = 0;
-	}
-
-    result =  PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-                    inputChannelCount, inputSampleFormat, hostInputSampleFormat,
-                    outputChannelCount, outputSampleFormat, hostOutputSampleFormat,
-                    sampleRate, streamFlags, framesPerBuffer,
-                    framesPerBuffer, /* ignored in paUtilVariableHostBufferSizePartialUsageAllowed mode. */
-                /* This next mode is required because DS can split the host buffer when it wraps around. */
-                    paUtilVariableHostBufferSizePartialUsageAllowed,
-                    streamCallback, userData );
-    if( result != paNoError )
-        goto error;
-
-
-    stream->streamRepresentation.streamInfo.inputLatency =
-            PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor);   /* FIXME: not initialised anywhere else */
-    stream->streamRepresentation.streamInfo.outputLatency =
-            PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor);    /* FIXME: not initialised anywhere else */
-    stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-    
-/* DirectSound specific initialization */ 
-    {
-        HRESULT          hr;
-        int              bytesPerDirectSoundBuffer;
-        int              userLatencyFrames;
-        int              minLatencyFrames;
-
-        stream->timerID = 0;
-
-    /* Get system minimum latency. */
-        minLatencyFrames = PaWinDs_GetMinLatencyFrames( sampleRate );
-
-    /* Let user override latency by passing latency parameter. */
-        userLatencyFrames = (suggestedInputLatencyFrames > suggestedOutputLatencyFrames)
-                    ? suggestedInputLatencyFrames
-                    : suggestedOutputLatencyFrames;
-        if( userLatencyFrames > 0 ) minLatencyFrames = userLatencyFrames;
-
-    /* Calculate stream->framesPerDSBuffer depending on framesPerBuffer */
-        if( framesPerBuffer == paFramesPerBufferUnspecified )
-        {
-        /* App support variable framesPerBuffer */
-            stream->framesPerDSBuffer = minLatencyFrames;
-
-            stream->streamRepresentation.streamInfo.outputLatency = (double)(minLatencyFrames - 1) / sampleRate;
-        }
-        else
-        {
-        /* Round up to number of buffers needed to guarantee that latency. */
-            int numUserBuffers = (minLatencyFrames + framesPerBuffer - 1) / framesPerBuffer;
-            if( numUserBuffers < 1 ) numUserBuffers = 1;
-            numUserBuffers += 1; /* So we have latency worth of buffers ahead of current buffer. */
-            stream->framesPerDSBuffer = framesPerBuffer * numUserBuffers;
-
-            stream->streamRepresentation.streamInfo.outputLatency = (double)(framesPerBuffer * (numUserBuffers-1)) / sampleRate;
-        }
-
-        {
-            /** @todo REVIEW: this calculation seems incorrect to me - rossb. */
-            int msecLatency = (int) ((stream->framesPerDSBuffer * MSEC_PER_SECOND) / sampleRate);
-            PRINT(("PortAudio on DirectSound - Latency = %d frames, %d msec\n", stream->framesPerDSBuffer, msecLatency ));
-        }
-
-
-        /* ------------------ OUTPUT */
-        if( outputParameters )
-        {
-            /*
-            PaDeviceInfo *deviceInfo = hostApi->deviceInfos[ outputParameters->device ];
-            DBUG(("PaHost_OpenStream: deviceID = 0x%x\n", outputParameters->device));
-            */
-            
-            int bytesPerSample = Pa_GetSampleSize(hostOutputSampleFormat);
-            bytesPerDirectSoundBuffer = stream->framesPerDSBuffer * outputParameters->channelCount * bytesPerSample;
-            if( bytesPerDirectSoundBuffer < DSBSIZE_MIN )
-            {
-                result = paBufferTooSmall;
-                goto error;
-            }
-            else if( bytesPerDirectSoundBuffer > DSBSIZE_MAX )
-            {
-                result = paBufferTooBig;
-                goto error;
-            }
-
-            hr = paWinDsDSoundEntryPoints.DirectSoundCreate( 
-                ((PaWinDsDeviceInfo*)hostApi->deviceInfos[outputParameters->device])->lpGUID,
-                &stream->pDirectSound, NULL );
-
-            if( hr != DS_OK )
-            {
-                ERR_RPT(("PortAudio: DirectSoundCreate() failed!\n"));
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-                goto error;
-            }
-            hr = InitOutputBuffer( stream,
-                                       hostOutputSampleFormat,
-                                       (unsigned long) (sampleRate + 0.5),
-                                       (WORD)outputParameters->channelCount, bytesPerDirectSoundBuffer,
-                                       outputChannelMask );
-            DBUG(("InitOutputBuffer() returns %x\n", hr));
-            if( hr != DS_OK )
-            {
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-                goto error;
-            }
-            /* Calculate value used in latency calculation to avoid real-time divides. */
-            stream->secondsPerHostByte = 1.0 /
-                (stream->bufferProcessor.bytesPerHostOutputSample *
-                outputChannelCount * sampleRate);
-        }
-
-        /* ------------------ INPUT */
-        if( inputParameters )
-        {
-            /*
-            PaDeviceInfo *deviceInfo = hostApi->deviceInfos[ inputParameters->device ];
-            DBUG(("PaHost_OpenStream: deviceID = 0x%x\n", inputParameters->device));
-            */
-            
-            int bytesPerSample = Pa_GetSampleSize(hostInputSampleFormat);
-            bytesPerDirectSoundBuffer = stream->framesPerDSBuffer * inputParameters->channelCount * bytesPerSample;
-            if( bytesPerDirectSoundBuffer < DSBSIZE_MIN )
-            {
-                result = paBufferTooSmall;
-                goto error;
-            }
-            else if( bytesPerDirectSoundBuffer > DSBSIZE_MAX )
-            {
-                result = paBufferTooBig;
-                goto error;
-            }
-
-            hr = paWinDsDSoundEntryPoints.DirectSoundCaptureCreate( 
-                    ((PaWinDsDeviceInfo*)hostApi->deviceInfos[inputParameters->device])->lpGUID,
-                    &stream->pDirectSoundCapture, NULL );
-            if( hr != DS_OK )
-            {
-                ERR_RPT(("PortAudio: DirectSoundCaptureCreate() failed!\n"));
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-                goto error;
-            }
-            hr = InitInputBuffer( stream,
-                                      hostInputSampleFormat,
-                                      (unsigned long) (sampleRate + 0.5),
-                                      (WORD)inputParameters->channelCount, bytesPerDirectSoundBuffer,
-                                      inputChannelMask );
-            DBUG(("InitInputBuffer() returns %x\n", hr));
-            if( hr != DS_OK )
-            {
-                ERR_RPT(("PortAudio: DSW_InitInputBuffer() returns %x\n", hr));
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-                goto error;
-            }
-        }
-
-    }
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-    if( stream )
-        PaUtil_FreeMemory( stream );
-
-    return result;
-}
-
-
-/************************************************************************************
- * Determine how much space can be safely written to in DS buffer.
- * Detect underflows and overflows.
- * Does not allow writing into safety gap maintained by DirectSound.
- */
-static HRESULT QueryOutputSpace( PaWinDsStream *stream, long *bytesEmpty )
-{
-    HRESULT hr;
-    DWORD   playCursor;
-    DWORD   writeCursor;
-    long    numBytesEmpty;
-    long    playWriteGap;
-    // Query to see how much room is in buffer.
-    hr = IDirectSoundBuffer_GetCurrentPosition( stream->pDirectSoundOutputBuffer,
-            &playCursor, &writeCursor );
-    if( hr != DS_OK )
-    {
-        return hr;
-    }
-    // Determine size of gap between playIndex and WriteIndex that we cannot write into.
-    playWriteGap = writeCursor - playCursor;
-    if( playWriteGap < 0 ) playWriteGap += stream->outputBufferSizeBytes; // unwrap
-    /* DirectSound doesn't have a large enough playCursor so we cannot detect wrap-around. */
-    /* Attempt to detect playCursor wrap-around and correct it. */
-    if( stream->outputIsRunning && (stream->perfCounterTicksPerBuffer.QuadPart != 0) )
-    {
-        /* How much time has elapsed since last check. */
-        LARGE_INTEGER   currentTime;
-        LARGE_INTEGER   elapsedTime;
-        long            bytesPlayed;
-        long            bytesExpected;
-        long            buffersWrapped;
-        QueryPerformanceCounter( &currentTime );
-        elapsedTime.QuadPart = currentTime.QuadPart - stream->previousPlayTime.QuadPart;
-        stream->previousPlayTime = currentTime;
-        /* How many bytes does DirectSound say have been played. */
-        bytesPlayed = playCursor - stream->previousPlayCursor;
-        if( bytesPlayed < 0 ) bytesPlayed += stream->outputBufferSizeBytes; // unwrap
-        stream->previousPlayCursor = playCursor;
-        /* Calculate how many bytes we would have expected to been played by now. */
-        bytesExpected = (long) ((elapsedTime.QuadPart * stream->outputBufferSizeBytes) / stream->perfCounterTicksPerBuffer.QuadPart);
-        buffersWrapped = (bytesExpected - bytesPlayed) / stream->outputBufferSizeBytes;
-        if( buffersWrapped > 0 )
-        {
-            playCursor += (buffersWrapped * stream->outputBufferSizeBytes);
-            bytesPlayed += (buffersWrapped * stream->outputBufferSizeBytes);
-        }
-        /* Maintain frame output cursor. */
-        stream->framesPlayed += (bytesPlayed / stream->bytesPerOutputFrame);
-    }
-    numBytesEmpty = playCursor - stream->outputBufferWriteOffsetBytes;
-    if( numBytesEmpty < 0 ) numBytesEmpty += stream->outputBufferSizeBytes; // unwrap offset
-    /* Have we underflowed? */
-    if( numBytesEmpty > (stream->outputBufferSizeBytes - playWriteGap) )
-    {
-        if( stream->outputIsRunning )
-        {
-            stream->outputUnderflowCount += 1;
-        }
-        stream->outputBufferWriteOffsetBytes = writeCursor;
-        numBytesEmpty = stream->outputBufferSizeBytes - playWriteGap;
-    }
-    *bytesEmpty = numBytesEmpty;
-    return hr;
-}
-
-/***********************************************************************************/
-static PaError Pa_TimeSlice( PaWinDsStream *stream )
-{
-    PaError           result = 0;   /* FIXME: this should be declared int and this function should also return that type (same as stream callback return type)*/
-    long              numFrames = 0;
-    long              bytesEmpty = 0;
-    long              bytesFilled = 0;
-    long              bytesToXfer = 0;
-    long              framesToXfer = 0;
-    long              numInFramesReady = 0;
-    long              numOutFramesReady = 0;
-    long              bytesProcessed;
-    HRESULT           hresult;
-    double            outputLatency = 0;
-    PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /** @todo implement inputBufferAdcTime */
-    
-/* Input */
-    LPBYTE            lpInBuf1 = NULL;
-    LPBYTE            lpInBuf2 = NULL;
-    DWORD             dwInSize1 = 0;
-    DWORD             dwInSize2 = 0;
-/* Output */
-    LPBYTE            lpOutBuf1 = NULL;
-    LPBYTE            lpOutBuf2 = NULL;
-    DWORD             dwOutSize1 = 0;
-    DWORD             dwOutSize2 = 0;
-
-    /* How much input data is available? */
-    if( stream->bufferProcessor.inputChannelCount > 0 )
-    {
-        HRESULT hr;
-        DWORD capturePos;
-        DWORD readPos;
-        long  filled = 0;
-        // Query to see how much data is in buffer.
-        // We don't need the capture position but sometimes DirectSound doesn't handle NULLS correctly
-        // so let's pass a pointer just to be safe.
-        hr = IDirectSoundCaptureBuffer_GetCurrentPosition( stream->pDirectSoundInputBuffer, &capturePos, &readPos );
-        if( hr == DS_OK )
-        {
-            filled = readPos - stream->readOffset;
-            if( filled < 0 ) filled += stream->inputSize; // unwrap offset
-            bytesFilled = filled;
-        }
-            // FIXME: what happens if IDirectSoundCaptureBuffer_GetCurrentPosition fails?
-
-        framesToXfer = numInFramesReady = bytesFilled / stream->bytesPerInputFrame;
-        outputLatency = ((double)bytesFilled) * stream->secondsPerHostByte;
-
-        /** @todo Check for overflow */
-    }
-
-    /* How much output room is available? */
-    if( stream->bufferProcessor.outputChannelCount > 0 )
-    {
-        UINT previousUnderflowCount = stream->outputUnderflowCount;
-        QueryOutputSpace( stream, &bytesEmpty );
-        framesToXfer = numOutFramesReady = bytesEmpty / stream->bytesPerOutputFrame;
-
-        /* Check for underflow */
-        if( stream->outputUnderflowCount != previousUnderflowCount )
-            stream->callbackFlags |= paOutputUnderflow;
-    }
-
-    if( (numInFramesReady > 0) && (numOutFramesReady > 0) )
-    {
-        framesToXfer = (numOutFramesReady < numInFramesReady) ? numOutFramesReady : numInFramesReady;
-    }
-
-    if( framesToXfer > 0 )
-    {
-
-        PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-
-    /* The outputBufferDacTime parameter should indicates the time at which
-        the first sample of the output buffer is heard at the DACs. */
-        timeInfo.currentTime = PaUtil_GetTime();
-        timeInfo.outputBufferDacTime = timeInfo.currentTime + outputLatency;
-
-
-        PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, stream->callbackFlags );
-        stream->callbackFlags = 0;
-        
-    /* Input */
-        if( stream->bufferProcessor.inputChannelCount > 0 )
-        {
-            bytesToXfer = framesToXfer * stream->bytesPerInputFrame;
-            hresult = IDirectSoundCaptureBuffer_Lock ( stream->pDirectSoundInputBuffer,
-                stream->readOffset, bytesToXfer,
-                (void **) &lpInBuf1, &dwInSize1,
-                (void **) &lpInBuf2, &dwInSize2, 0);
-            if (hresult != DS_OK)
-            {
-                ERR_RPT(("DirectSound IDirectSoundCaptureBuffer_Lock failed, hresult = 0x%x\n",hresult));
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hresult );
-                goto error2;
-            }
-
-            numFrames = dwInSize1 / stream->bytesPerInputFrame;
-            PaUtil_SetInputFrameCount( &stream->bufferProcessor, numFrames );
-            PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, 0, lpInBuf1, 0 );
-        /* Is input split into two regions. */
-            if( dwInSize2 > 0 )
-            {
-                numFrames = dwInSize2 / stream->bytesPerInputFrame;
-                PaUtil_Set2ndInputFrameCount( &stream->bufferProcessor, numFrames );
-                PaUtil_Set2ndInterleavedInputChannels( &stream->bufferProcessor, 0, lpInBuf2, 0 );
-            }
-        }
-
-    /* Output */
-        if( stream->bufferProcessor.outputChannelCount > 0 )
-        {
-            bytesToXfer = framesToXfer * stream->bytesPerOutputFrame;
-            hresult = IDirectSoundBuffer_Lock ( stream->pDirectSoundOutputBuffer,
-                stream->outputBufferWriteOffsetBytes, bytesToXfer,
-                (void **) &lpOutBuf1, &dwOutSize1,
-                (void **) &lpOutBuf2, &dwOutSize2, 0);
-            if (hresult != DS_OK)
-            {
-                ERR_RPT(("DirectSound IDirectSoundBuffer_Lock failed, hresult = 0x%x\n",hresult));
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hresult );
-                goto error1;
-            }
-
-            numFrames = dwOutSize1 / stream->bytesPerOutputFrame;
-            PaUtil_SetOutputFrameCount( &stream->bufferProcessor, numFrames );
-            PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, 0, lpOutBuf1, 0 );
-
-        /* Is output split into two regions. */
-            if( dwOutSize2 > 0 )
-            {
-                numFrames = dwOutSize2 / stream->bytesPerOutputFrame;
-                PaUtil_Set2ndOutputFrameCount( &stream->bufferProcessor, numFrames );
-                PaUtil_Set2ndInterleavedOutputChannels( &stream->bufferProcessor, 0, lpOutBuf2, 0 );
-            }
-        }
-
-        result = paContinue;
-        numFrames = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &result );
-        stream->framesWritten += numFrames;
-        
-        if( stream->bufferProcessor.outputChannelCount > 0 )
-        {
-        /* FIXME: an underflow could happen here */
-
-        /* Update our buffer offset and unlock sound buffer */
-            bytesProcessed = numFrames * stream->bytesPerOutputFrame;
-            stream->outputBufferWriteOffsetBytes = (stream->outputBufferWriteOffsetBytes + bytesProcessed) % stream->outputBufferSizeBytes;
-            IDirectSoundBuffer_Unlock( stream->pDirectSoundOutputBuffer, lpOutBuf1, dwOutSize1, lpOutBuf2, dwOutSize2);
-            stream->dsw_framesWritten += numFrames;
-        }
-
-error1:
-        if( stream->bufferProcessor.inputChannelCount > 0 )
-        {
-        /* FIXME: an overflow could happen here */
-
-        /* Update our buffer offset and unlock sound buffer */
-            bytesProcessed = numFrames * stream->bytesPerInputFrame;
-            stream->readOffset = (stream->readOffset + bytesProcessed) % stream->inputSize;
-            IDirectSoundCaptureBuffer_Unlock( stream->pDirectSoundInputBuffer, lpInBuf1, dwInSize1, lpInBuf2, dwInSize2);
-        }
-error2:
-
-        PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, numFrames );
-
-    }
-    
-    return result;
-}
-/*******************************************************************/
-
-static HRESULT ZeroAvailableOutputSpace( PaWinDsStream *stream )
-{
-    HRESULT hr;
-    LPBYTE lpbuf1 = NULL;
-    LPBYTE lpbuf2 = NULL;
-    DWORD dwsize1 = 0;
-    DWORD dwsize2 = 0;
-    long  bytesEmpty;
-    hr = QueryOutputSpace( stream, &bytesEmpty ); // updates framesPlayed
-    if (hr != DS_OK) return hr;
-    if( bytesEmpty == 0 ) return DS_OK;
-    // Lock free space in the DS
-    hr = IDirectSoundBuffer_Lock( stream->pDirectSoundOutputBuffer, stream->outputBufferWriteOffsetBytes,
-                                    bytesEmpty, (void **) &lpbuf1, &dwsize1,
-                                    (void **) &lpbuf2, &dwsize2, 0);
-    if (hr == DS_OK)
-    {
-        // Copy the buffer into the DS
-        ZeroMemory(lpbuf1, dwsize1);
-        if(lpbuf2 != NULL)
-        {
-            ZeroMemory(lpbuf2, dwsize2);
-        }
-        // Update our buffer offset and unlock sound buffer
-        stream->outputBufferWriteOffsetBytes = (stream->outputBufferWriteOffsetBytes + dwsize1 + dwsize2) % stream->outputBufferSizeBytes;
-        IDirectSoundBuffer_Unlock( stream->pDirectSoundOutputBuffer, lpbuf1, dwsize1, lpbuf2, dwsize2);
-        stream->dsw_framesWritten += bytesEmpty / stream->bytesPerOutputFrame;
-    }
-    return hr;
-}
-
-
-static void CALLBACK Pa_TimerCallback(UINT uID, UINT uMsg, DWORD_PTR dwUser, DWORD dw1, DWORD dw2)
-{
-    PaWinDsStream *stream;
-
-    /* suppress unused variable warnings */
-    (void) uID;
-    (void) uMsg;
-    (void) dw1;
-    (void) dw2;
-    
-    stream = (PaWinDsStream *) dwUser;
-    if( stream == NULL ) return;
-
-    if( stream->isActive )
-    {
-        if( stream->abortProcessing )
-        {
-            stream->isActive = 0;
-        }
-        else if( stream->stopProcessing )
-        {
-            if( stream->bufferProcessor.outputChannelCount > 0 )
-            {
-                ZeroAvailableOutputSpace( stream );
-                /* clear isActive when all sound played */
-                if( stream->framesPlayed >= stream->framesWritten )
-                {
-                    stream->isActive = 0;
-                }
-            }
-            else
-            {
-                stream->isActive = 0;
-            }
-        }
-        else
-        {
-            if( Pa_TimeSlice( stream ) != 0)  /* Call time slice independant of timing method. */
-            {
-                /* FIXME implement handling of paComplete and paAbort if possible */
-                stream->stopProcessing = 1;
-            }
-        }
-
-        if( !stream->isActive )
-        {
-            if( stream->streamRepresentation.streamFinishedCallback != 0 )
-                stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-        }
-    }
-}
-
-/***********************************************************************************
-    When CloseStream() is called, the multi-api layer ensures that
-    the stream has already been stopped or aborted.
-*/
-static PaError CloseStream( PaStream* s )
-{
-    PaError result = paNoError;
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    // Cleanup the sound buffers
-    if( stream->pDirectSoundOutputBuffer )
-    {
-        IDirectSoundBuffer_Stop( stream->pDirectSoundOutputBuffer );
-        IDirectSoundBuffer_Release( stream->pDirectSoundOutputBuffer );
-        stream->pDirectSoundOutputBuffer = NULL;
-    }
-
-    if( stream->pDirectSoundInputBuffer )
-    {
-        IDirectSoundCaptureBuffer_Stop( stream->pDirectSoundInputBuffer );
-        IDirectSoundCaptureBuffer_Release( stream->pDirectSoundInputBuffer );
-        stream->pDirectSoundInputBuffer = NULL;
-    }
-
-    if( stream->pDirectSoundCapture )
-    {
-        IDirectSoundCapture_Release( stream->pDirectSoundCapture );
-        stream->pDirectSoundCapture = NULL;
-    }
-
-    if( stream->pDirectSound )
-    {
-        IDirectSound_Release( stream->pDirectSound );
-        stream->pDirectSound = NULL;
-    }
-
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-    PaUtil_FreeMemory( stream );
-
-    return result;
-}
-
-/***********************************************************************************/
-static PaError StartStream( PaStream *s )
-{
-    PaError          result = paNoError;
-    PaWinDsStream   *stream = (PaWinDsStream*)s;
-    HRESULT          hr;
-
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-    
-    if( stream->bufferProcessor.inputChannelCount > 0 )
-    {
-        // Start the buffer playback
-        if( stream->pDirectSoundInputBuffer != NULL ) // FIXME: not sure this check is necessary
-        {
-            hr = IDirectSoundCaptureBuffer_Start( stream->pDirectSoundInputBuffer, DSCBSTART_LOOPING );
-        }
-
-        DBUG(("StartStream: DSW_StartInput returned = 0x%X.\n", hr));
-        if( hr != DS_OK )
-        {
-            result = paUnanticipatedHostError;
-            PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-            goto error;
-        }
-    }
-
-    stream->framesWritten = 0;
-    stream->callbackFlags = 0;
-
-    stream->abortProcessing = 0;
-    stream->stopProcessing = 0;
-    stream->isActive = 1;
-
-    if( stream->bufferProcessor.outputChannelCount > 0 )
-    {
-        /* Give user callback a chance to pre-fill buffer. REVIEW - i thought we weren't pre-filling, rb. */
-        result = Pa_TimeSlice( stream );
-        if( result != paNoError ) return result; // FIXME - what if finished?
-
-        QueryPerformanceCounter( &stream->previousPlayTime );
-        stream->previousPlayCursor = 0;
-        stream->framesPlayed = 0;
-        hr = IDirectSoundBuffer_SetCurrentPosition( stream->pDirectSoundOutputBuffer, 0 );
-        DBUG(("PaHost_StartOutput: IDirectSoundBuffer_SetCurrentPosition returned = 0x%X.\n", hr));
-        if( hr != DS_OK )
-        {
-            result = paUnanticipatedHostError;
-            PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-            goto error;
-        }
-
-        // Start the buffer playback in a loop.
-        if( stream->pDirectSoundOutputBuffer != NULL ) // FIXME: not sure this needs to be checked here
-        {
-            hr = IDirectSoundBuffer_Play( stream->pDirectSoundOutputBuffer, 0, 0, DSBPLAY_LOOPING );
-            DBUG(("PaHost_StartOutput: IDirectSoundBuffer_Play returned = 0x%X.\n", hr));
-            if( hr != DS_OK )
-            {
-                result = paUnanticipatedHostError;
-                PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-                goto error;
-            }
-            stream->outputIsRunning = TRUE;
-        }
-    }
-
-
-    /* Create timer that will wake us up so we can fill the DSound buffer. */
-    {
-        int resolution;
-        int framesPerWakeup = stream->framesPerDSBuffer / 4;
-        int msecPerWakeup = MSEC_PER_SECOND * framesPerWakeup / (int) stream->streamRepresentation.streamInfo.sampleRate;
-        if( msecPerWakeup < 10 ) msecPerWakeup = 10;
-        else if( msecPerWakeup > 100 ) msecPerWakeup = 100;
-        resolution = msecPerWakeup/4;
-        stream->timerID = timeSetEvent( msecPerWakeup, resolution, (LPTIMECALLBACK) Pa_TimerCallback,
-                                             (DWORD_PTR) stream, TIME_PERIODIC );
-    }
-    if( stream->timerID == 0 )
-    {
-        stream->isActive = 0;
-        result = paUnanticipatedHostError;
-        PA_DS_SET_LAST_DIRECTSOUND_ERROR( hr );
-        goto error;
-    }
-
-    stream->isStarted = TRUE;
-
-error:
-    return result;
-}
-
-
-/***********************************************************************************/
-static PaError StopStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-    HRESULT          hr;
-    int timeoutMsec;
-
-    stream->stopProcessing = 1;
-    /* Set timeout at 20% beyond maximum time we might wait. */
-    timeoutMsec = (int) (1200.0 * stream->framesPerDSBuffer / stream->streamRepresentation.streamInfo.sampleRate);
-    while( stream->isActive && (timeoutMsec > 0)  )
-    {
-        Sleep(10);
-        timeoutMsec -= 10;
-    }
-    if( stream->timerID != 0 )
-    {
-        timeKillEvent(stream->timerID);  /* Stop callback timer. */
-        stream->timerID = 0;
-    }
-
-
-    if( stream->bufferProcessor.outputChannelCount > 0 )
-    {
-        // Stop the buffer playback
-        if( stream->pDirectSoundOutputBuffer != NULL )
-        {
-            stream->outputIsRunning = FALSE;
-            // FIXME: what happens if IDirectSoundBuffer_Stop returns an error?
-            hr = IDirectSoundBuffer_Stop( stream->pDirectSoundOutputBuffer );
-        }
-    }
-
-    if( stream->bufferProcessor.inputChannelCount > 0 )
-    {
-        // Stop the buffer capture
-        if( stream->pDirectSoundInputBuffer != NULL )
-        {
-            // FIXME: what happens if IDirectSoundCaptureBuffer_Stop returns an error?
-            hr = IDirectSoundCaptureBuffer_Stop( stream->pDirectSoundInputBuffer );
-        }
-    }
-
-    stream->isStarted = FALSE;
-
-    return result;
-}
-
-
-/***********************************************************************************/
-static PaError AbortStream( PaStream *s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    stream->abortProcessing = 1;
-    return StopStream( s );
-}
-
-
-/***********************************************************************************/
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    return !stream->isStarted;
-}
-
-
-/***********************************************************************************/
-static PaError IsStreamActive( PaStream *s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    return stream->isActive;
-}
-
-/***********************************************************************************/
-static PaTime GetStreamTime( PaStream *s )
-{
-    /* suppress unused variable warnings */
-    (void) s;
-
-    return PaUtil_GetTime();
-}
-
-
-/***********************************************************************************/
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
-
-
-/***********************************************************************************
-    As separate stream interfaces are used for blocking and callback
-    streams, the following functions can be guaranteed to only be called
-    for blocking streams.
-*/
-
-static PaError ReadStream( PaStream* s,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return paNoError;
-}
-
-
-/***********************************************************************************/
-static PaError WriteStream( PaStream* s,
-                            const void *buffer,
-                            unsigned long frames )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return paNoError;
-}
-
-
-/***********************************************************************************/
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return 0;
-}
-
-
-/***********************************************************************************/
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaWinDsStream *stream = (PaWinDsStream*)s;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-    
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-
-    return 0;
-}
-
-#endif
-
-
diff --git a/external/portaudio2007/pa_win_ds.h b/external/portaudio2007/pa_win_ds.h
deleted file mode 100644
index e658ee6..0000000
--- a/external/portaudio2007/pa_win_ds.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#ifndef PA_WIN_DS_H
-#define PA_WIN_DS_H
-/*
- * $Id:  $
- * PortAudio Portable Real-Time Audio Library
- * DirectSound specific extensions
- *
- * Copyright (c) 1999-2007 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @brief DirectSound-specific PortAudio API extension header file.
-*/
-
-
-#include "portaudio.h"
-#include "pa_win_waveformat.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#define paWinDirectSoundUseLowLevelLatencyParameters            (0x01)
-#define paWinDirectSoundUseChannelMask                          (0x04)
-
-
-typedef struct PaWinDirectSoundStreamInfo{
-    unsigned long size;             /**< sizeof(PaWinDirectSoundStreamInfo) */
-    PaHostApiTypeId hostApiType;    /**< paDirectSound */
-    unsigned long version;          /**< 1 */
-
-    unsigned long flags;
-
-    /* low-level latency setting support
-        TODO ** NOT IMPLEMENTED **
-        These settings control the number and size of host buffers in order
-        to set latency. They will be used instead of the generic parameters
-        to Pa_OpenStream() if flags contains the paWinDirectSoundUseLowLevelLatencyParameters
-        flag.
-
-        If PaWinDirectSoundStreamInfo structures with paWinDirectSoundUseLowLevelLatencyParameters
-        are supplied for both input and output in a full duplex stream, then the
-        input and output framesPerBuffer must be the same, or the larger of the
-        two must be a multiple of the smaller, otherwise a
-        paIncompatibleHostApiSpecificStreamInfo error will be returned from
-        Pa_OpenStream().
-
-    unsigned long framesPerBuffer;
-    */
-
-    /*
-        support for WAVEFORMATEXTENSIBLE channel masks. If flags contains
-        paWinDirectSoundUseChannelMask this allows you to specify which speakers 
-        to address in a multichannel stream. Constants for channelMask
-        are specified in pa_win_waveformat.h
-
-    */
-    PaWinWaveFormatChannelMask channelMask;
-
-}PaWinDirectSoundStreamInfo;
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_WIN_DS_H */                                  
diff --git a/external/portaudio2007/pa_win_ds_dynlink.c b/external/portaudio2007/pa_win_ds_dynlink.c
deleted file mode 100644
index f968653..0000000
--- a/external/portaudio2007/pa_win_ds_dynlink.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Interface for dynamically loading directsound and providing a dummy
- * implementation if it isn't present.
- *
- * Author: Ross Bencina (some portions Phil Burk & Robert Marsanyi)
- *
- * For PortAudio Portable Real-Time Audio Library
- * For more information see: http://www.portaudio.com
- * Copyright (c) 1999-2006 Phil Burk, Robert Marsanyi and Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostaip_src
-*/
-
-#undef UNICODE
-#include "pa_win_ds_dynlink.h"
-
-PaWinDsDSoundEntryPoints paWinDsDSoundEntryPoints = { 0, 0, 0, 0, 0, 0, 0 };
-
-
-static HRESULT WINAPI DummyDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
-{
-    (void)rclsid; /* unused parameter */
-    (void)riid; /* unused parameter */
-    (void)ppv; /* unused parameter */
-    return CLASS_E_CLASSNOTAVAILABLE;
-}
-
-static HRESULT WINAPI DummyDirectSoundCreate(LPGUID lpcGuidDevice, LPDIRECTSOUND *ppDS, LPUNKNOWN pUnkOuter)
-{
-    (void)lpcGuidDevice; /* unused parameter */
-    (void)ppDS; /* unused parameter */
-    (void)pUnkOuter; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DummyDirectSoundEnumerateW(LPDSENUMCALLBACKW lpDSEnumCallback, LPVOID lpContext)
-{
-    (void)lpDSEnumCallback; /* unused parameter */
-    (void)lpContext; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DummyDirectSoundEnumerateA(LPDSENUMCALLBACKA lpDSEnumCallback, LPVOID lpContext)
-{
-    (void)lpDSEnumCallback; /* unused parameter */
-    (void)lpContext; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DummyDirectSoundCaptureCreate(LPGUID lpcGUID, LPDIRECTSOUNDCAPTURE *lplpDSC, LPUNKNOWN pUnkOuter)
-{
-    (void)lpcGUID; /* unused parameter */
-    (void)lplpDSC; /* unused parameter */
-    (void)pUnkOuter; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DummyDirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW lpDSCEnumCallback, LPVOID lpContext)
-{
-    (void)lpDSCEnumCallback; /* unused parameter */
-    (void)lpContext; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI DummyDirectSoundCaptureEnumerateA(LPDSENUMCALLBACKA lpDSCEnumCallback, LPVOID lpContext)
-{
-    (void)lpDSCEnumCallback; /* unused parameter */
-    (void)lpContext; /* unused parameter */
-    return E_NOTIMPL;
-}
-
-
-void PaWinDs_InitializeDSoundEntryPoints(void)
-{
-    paWinDsDSoundEntryPoints.hInstance_ = LoadLibraryA("dsound.dll");
-    if( paWinDsDSoundEntryPoints.hInstance_ != NULL )
-    {
-        paWinDsDSoundEntryPoints.DllGetClassObject =
-                (HRESULT (WINAPI *)(REFCLSID, REFIID , LPVOID *))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DllGetClassObject" );
-        if( paWinDsDSoundEntryPoints.DllGetClassObject == NULL )
-            paWinDsDSoundEntryPoints.DllGetClassObject = DummyDllGetClassObject;
-
-        paWinDsDSoundEntryPoints.DirectSoundCreate =
-                (HRESULT (WINAPI *)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundCreate" );
-        if( paWinDsDSoundEntryPoints.DirectSoundCreate == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundCreate = DummyDirectSoundCreate;
-
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateW =
-                (HRESULT (WINAPI *)(LPDSENUMCALLBACKW, LPVOID))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundEnumerateW" );
-        if( paWinDsDSoundEntryPoints.DirectSoundEnumerateW == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundEnumerateW = DummyDirectSoundEnumerateW;
-
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateA =
-                (HRESULT (WINAPI *)(LPDSENUMCALLBACKA, LPVOID))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundEnumerateA" );
-        if( paWinDsDSoundEntryPoints.DirectSoundEnumerateA == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundEnumerateA = DummyDirectSoundEnumerateA;
-
-        paWinDsDSoundEntryPoints.DirectSoundCaptureCreate =
-                (HRESULT (WINAPI *)(LPGUID, LPDIRECTSOUNDCAPTURE *, LPUNKNOWN))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundCaptureCreate" );
-        if( paWinDsDSoundEntryPoints.DirectSoundCaptureCreate == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundCaptureCreate = DummyDirectSoundCaptureCreate;
-
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateW =
-                (HRESULT (WINAPI *)(LPDSENUMCALLBACKW, LPVOID))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundCaptureEnumerateW" );
-        if( paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateW == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateW = DummyDirectSoundCaptureEnumerateW;
-
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateA =
-                (HRESULT (WINAPI *)(LPDSENUMCALLBACKA, LPVOID))
-                GetProcAddress( paWinDsDSoundEntryPoints.hInstance_, "DirectSoundCaptureEnumerateA" );
-        if( paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateA == NULL )
-            paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateA = DummyDirectSoundCaptureEnumerateA;
-    }
-    else
-    {
-        /* initialize with dummy entry points to make live easy when ds isn't present */
-        paWinDsDSoundEntryPoints.DirectSoundCreate = DummyDirectSoundCreate;
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateW = DummyDirectSoundEnumerateW;
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateA = DummyDirectSoundEnumerateA;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureCreate = DummyDirectSoundCaptureCreate;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateW = DummyDirectSoundCaptureEnumerateW;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateA = DummyDirectSoundCaptureEnumerateA;
-    }
-}
-
-
-void PaWinDs_TerminateDSoundEntryPoints(void)
-{
-    if( paWinDsDSoundEntryPoints.hInstance_ != NULL )
-    {
-        /* ensure that we crash reliably if the entry points arent initialised */
-        paWinDsDSoundEntryPoints.DirectSoundCreate = 0;
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateW = 0;
-        paWinDsDSoundEntryPoints.DirectSoundEnumerateA = 0;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureCreate = 0;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateW = 0;
-        paWinDsDSoundEntryPoints.DirectSoundCaptureEnumerateA = 0;
-
-        FreeLibrary( paWinDsDSoundEntryPoints.hInstance_ );
-        paWinDsDSoundEntryPoints.hInstance_ = NULL;
-    }
-}
\ No newline at end of file
diff --git a/external/portaudio2007/pa_win_ds_dynlink.h b/external/portaudio2007/pa_win_ds_dynlink.h
deleted file mode 100644
index 11d35da..0000000
--- a/external/portaudio2007/pa_win_ds_dynlink.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Interface for dynamically loading directsound and providing a dummy
- * implementation if it isn't present.
- *
- * Author: Ross Bencina (some portions Phil Burk & Robert Marsanyi)
- *
- * For PortAudio Portable Real-Time Audio Library
- * For more information see: http://www.portaudio.com
- * Copyright (c) 1999-2006 Phil Burk, Robert Marsanyi and Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/**
- @file
- @ingroup hostaip_src
-*/
-
-#ifndef INCLUDED_PA_DSOUND_DYNLINK_H
-#define INCLUDED_PA_DSOUND_DYNLINK_H
-
-/* on Borland compilers, WIN32 doesn't seem to be defined by default, which
-    breaks dsound.h. Adding the define here fixes the problem. - rossb. */
-#ifdef __BORLANDC__
-#if !defined(WIN32)
-#define WIN32
-#endif
-#endif
-
-/*
-  We are only using DX3 in here, no need to polute the namespace - davidv
-*/
-#define DIRECTSOUND_VERSION 0x0300
-#include <dsound.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-typedef struct
-{
-    HINSTANCE hInstance_;
-    
-    HRESULT (WINAPI *DllGetClassObject)(REFCLSID , REFIID , LPVOID *);
-
-    HRESULT (WINAPI *DirectSoundCreate)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN);
-    HRESULT (WINAPI *DirectSoundEnumerateW)(LPDSENUMCALLBACKW, LPVOID);
-    HRESULT (WINAPI *DirectSoundEnumerateA)(LPDSENUMCALLBACKA, LPVOID);
-
-    HRESULT (WINAPI *DirectSoundCaptureCreate)(LPGUID, LPDIRECTSOUNDCAPTURE *, LPUNKNOWN);
-    HRESULT (WINAPI *DirectSoundCaptureEnumerateW)(LPDSENUMCALLBACKW, LPVOID);
-    HRESULT (WINAPI *DirectSoundCaptureEnumerateA)(LPDSENUMCALLBACKA, LPVOID);
-}PaWinDsDSoundEntryPoints;
-
-extern PaWinDsDSoundEntryPoints paWinDsDSoundEntryPoints;
-
-void PaWinDs_InitializeDSoundEntryPoints(void);
-void PaWinDs_TerminateDSoundEntryPoints(void);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* INCLUDED_PA_DSOUND_DYNLINK_H */
diff --git a/external/portaudio2007/pa_win_hostapis.c b/external/portaudio2007/pa_win_hostapis.c
deleted file mode 100644
index e7524f7..0000000
--- a/external/portaudio2007/pa_win_hostapis.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifdef _WIN32
-/*
- * $Id: pa_win_hostapis.c 1097 2006-08-26 08:27:53Z rossb $
- * Portable Audio I/O Library Windows initialization table
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2002 Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup win_src
-
-    Win32 host API initialization function table.
-
-    @todo Consider using PA_USE_WMME etc instead of PA_NO_WMME. This is what
-    the Unix version does, we should consider being consistent.
-*/
-
-
-#include "pa_hostapi.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaSkeleton_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaWinMme_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaWinDs_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaAsio_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaWinWdm_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-PaError PaWinWasapi_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-PaUtilHostApiInitializer *paHostApiInitializers[] =
-    {
-        PaSkeleton_Initialize,   // 0; just for testing
-        PaWinMme_Initialize,   // 1
-        //PaWinDs_Initialize,   // 2
-        //PaWinWdm_Initialize,   // 3
-        //PaAsio_Initialize,
-		//PaWinWasapi_Initialize,
-        0   /* NULL terminated array */
-    };
-
-int paDefaultHostApiIndex = 1;
-#endif
diff --git a/external/portaudio2007/pa_win_util.c b/external/portaudio2007/pa_win_util.c
deleted file mode 100644
index 1de8073..0000000
--- a/external/portaudio2007/pa_win_util.c
+++ /dev/null
@@ -1,150 +0,0 @@
-#ifdef _WIN32
-/*
- * $Id: pa_win_util.c 1197 2007-05-04 13:07:10Z gordon_gidluck $
- * Portable Audio I/O Library
- * Win32 platform-specific support functions
- *
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2000 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup win_src
-
- Win32 platform-specific support functions.
-
-    @todo Implement workaround for QueryPerformanceCounter() skipping forward
-    bug. (see msdn kb Q274323).
-*/
-
-#undef UNICODE
-#include <windows.h>
-#include <mmsystem.h> /* for timeGetTime() */
-
-#include "pa_util.h"
-
-
-/*
-   Track memory allocations to avoid leaks.
- */
-
-#if PA_TRACK_MEMORY
-static int numAllocations_ = 0;
-#endif
-
-
-void *PaUtil_AllocateMemory( long size )
-{
-    void *result = GlobalAlloc( GPTR, size );
-
-#if PA_TRACK_MEMORY
-    if( result != NULL ) numAllocations_ += 1;
-#endif
-    return result;
-}
-
-
-void PaUtil_FreeMemory( void *block )
-{
-    if( block != NULL )
-    {
-        GlobalFree( block );
-#if PA_TRACK_MEMORY
-        numAllocations_ -= 1;
-#endif
-
-    }
-}
-
-
-int PaUtil_CountCurrentlyAllocatedBlocks( void )
-{
-#if PA_TRACK_MEMORY
-    return numAllocations_;
-#else
-    return 0;
-#endif
-}
-
-
-void Pa_Sleep( long msec )
-{
-    Sleep( msec );
-}
-
-static int usePerformanceCounter_;
-static double secondsPerTick_;
-
-void PaUtil_InitializeClock( void )
-{
-    LARGE_INTEGER ticksPerSecond;
-
-    if( QueryPerformanceFrequency( &ticksPerSecond ) != 0 )
-    {
-        usePerformanceCounter_ = 1;
-        secondsPerTick_ = 1.0 / (double)ticksPerSecond.QuadPart;
-    }
-    else
-    {
-        usePerformanceCounter_ = 0;
-    }
-}
-
-
-double PaUtil_GetTime( void )
-{
-    LARGE_INTEGER time;
-
-    if( usePerformanceCounter_ )
-    {
-        /* FIXME:
-            according to this knowledge-base article, QueryPerformanceCounter
-            can skip forward by seconds!
-            http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q274323&
-
-            it may be better to use the rtdsc instruction using inline asm,
-            however then a method is needed to calculate a ticks/seconds ratio.
-        */
-        QueryPerformanceCounter( &time );
-        return time.QuadPart * secondsPerTick_;
-    }
-    else
-    {
-#ifndef UNDER_CE    	
-        return timeGetTime() * .001;
-#else
-        return GetTickCount() * .001;
-#endif                
-    }
-}
-#endif
diff --git a/external/portaudio2007/pa_win_waveformat.c b/external/portaudio2007/pa_win_waveformat.c
deleted file mode 100644
index 375ee04..0000000
--- a/external/portaudio2007/pa_win_waveformat.c
+++ /dev/null
@@ -1,162 +0,0 @@
-#ifdef _WIN32
-/*
- * PortAudio Portable Real-Time Audio Library
- * Windows WAVEFORMAT* data structure utilities
- * portaudio.h should be included before this file.
- *
- * Copyright (c) 2007 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-#undef UNICODE
-#include <windows.h>
-#include <mmsystem.h>
-
-#include "portaudio.h"
-#include "pa_win_waveformat.h"
-
-
-#if !defined(WAVE_FORMAT_EXTENSIBLE)
-#define  WAVE_FORMAT_EXTENSIBLE         0xFFFE
-#endif
-
-#if !defined(WAVE_FORMAT_IEEE_FLOAT)
-#define  WAVE_FORMAT_IEEE_FLOAT         0x0003
-#endif
-
-static GUID pawin_ksDataFormatSubtypePcm = 
-	{ (USHORT)(WAVE_FORMAT_PCM), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 };
-
-static GUID pawin_ksDataFormatSubtypeIeeeFloat = 
-	{ (USHORT)(WAVE_FORMAT_IEEE_FLOAT), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 };
-
-
-
-void PaWin_InitializeWaveFormatEx( PaWinWaveFormat *waveFormat, 
-		int numChannels, PaSampleFormat sampleFormat, double sampleRate )
-{
-	WAVEFORMATEX *waveFormatEx = (WAVEFORMATEX*)waveFormat;
-    int bytesPerSample = Pa_GetSampleSize(sampleFormat);
-	unsigned long bytesPerFrame = numChannels * bytesPerSample;
-
-    if( sampleFormat == paFloat32 )
-        waveFormatEx->wFormatTag = WAVE_FORMAT_IEEE_FLOAT;
-    else
-        waveFormatEx->wFormatTag = WAVE_FORMAT_PCM;
-	
-	waveFormatEx->nChannels = (WORD)numChannels;
-	waveFormatEx->nSamplesPerSec = (DWORD)sampleRate;
-	waveFormatEx->nAvgBytesPerSec = waveFormatEx->nSamplesPerSec * bytesPerFrame;
-	waveFormatEx->nBlockAlign = (WORD)bytesPerFrame;
-	waveFormatEx->wBitsPerSample = bytesPerSample * 8;
-	waveFormatEx->cbSize = 0;
-}
-
-
-void PaWin_InitializeWaveFormatExtensible( PaWinWaveFormat *waveFormat, 
-		int numChannels, PaSampleFormat sampleFormat, double sampleRate,
-		PaWinWaveFormatChannelMask channelMask )
-{
-	WAVEFORMATEX *waveFormatEx = (WAVEFORMATEX*)waveFormat;
-    int bytesPerSample = Pa_GetSampleSize(sampleFormat);
-	unsigned long bytesPerFrame = numChannels * bytesPerSample;
-
-	waveFormatEx->wFormatTag = WAVE_FORMAT_EXTENSIBLE;
-	waveFormatEx->nChannels = (WORD)numChannels;
-	waveFormatEx->nSamplesPerSec = (DWORD)sampleRate;
-	waveFormatEx->nAvgBytesPerSec = waveFormatEx->nSamplesPerSec * bytesPerFrame;
-	waveFormatEx->nBlockAlign = (WORD)bytesPerFrame;
-	waveFormatEx->wBitsPerSample = bytesPerSample * 8;
-	waveFormatEx->cbSize = 22;
-
-	*((WORD*)&waveFormat->fields[PAWIN_INDEXOF_WVALIDBITSPERSAMPLE]) =
-			waveFormatEx->wBitsPerSample;
-
-	*((DWORD*)&waveFormat->fields[PAWIN_INDEXOF_DWCHANNELMASK]) = channelMask;
-			
-    if( sampleFormat == paFloat32 )
-        *((GUID*)&waveFormat->fields[PAWIN_INDEXOF_SUBFORMAT]) =
-            pawin_ksDataFormatSubtypeIeeeFloat;
-    else
-        *((GUID*)&waveFormat->fields[PAWIN_INDEXOF_SUBFORMAT]) =
-            pawin_ksDataFormatSubtypePcm;
-}
-
-
-PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels )
-{
-	switch( numChannels ){
-		case 1:
-			return PAWIN_SPEAKER_MONO;
-		case 2:
-			return PAWIN_SPEAKER_STEREO; 
-		case 3:
-            return PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_FRONT_RIGHT;
-		case 4:
-			return PAWIN_SPEAKER_QUAD;
-		case 5:
-            return PAWIN_SPEAKER_QUAD | PAWIN_SPEAKER_FRONT_CENTER;
-		case 6:
-            /* The meaning of the PAWIN_SPEAKER_5POINT1 flag has changed over time:
-                http://msdn2.microsoft.com/en-us/library/aa474707.aspx
-               We use PAWIN_SPEAKER_5POINT1 (not PAWIN_SPEAKER_5POINT1_SURROUND)
-               because on some cards (eg Audigy) PAWIN_SPEAKER_5POINT1_SURROUND 
-               results in a virtual mixdown placing the rear output in the 
-               front _and_ rear speakers.
-            */
-			return PAWIN_SPEAKER_5POINT1; 
-        /* case 7: */
-		case 8:
-			return PAWIN_SPEAKER_7POINT1;
-	}
-
-    /* Apparently some Audigy drivers will output silence 
-       if the direct-out constant (0) is used. So this is not ideal.    
-    */
-	return  PAWIN_SPEAKER_DIRECTOUT;
-
-    /* Note that Alec Rogers proposed the following as an alternate method to 
-        generate the default channel mask, however it doesn't seem to be an improvement
-        over the above, since some drivers will matrix outputs mapping to non-present
-        speakers accross multiple physical speakers.
-
-        if(nChannels==1) {
-            pwfFormat->dwChannelMask = SPEAKER_FRONT_CENTER;
-        }
-        else {
-            pwfFormat->dwChannelMask = 0;
-            for(i=0; i<nChannels; i++)
-                pwfFormat->dwChannelMask = (pwfFormat->dwChannelMask << 1) | 0x1;
-        }
-    */
-}
-#endif
diff --git a/external/portaudio2007/pa_win_waveformat.h b/external/portaudio2007/pa_win_waveformat.h
deleted file mode 100644
index 46ce9cc..0000000
--- a/external/portaudio2007/pa_win_waveformat.h
+++ /dev/null
@@ -1,180 +0,0 @@
-#ifndef PA_WIN_WAVEFORMAT_H
-#define PA_WIN_WAVEFORMAT_H
-
-/*
- * PortAudio Portable Real-Time Audio Library
- * Windows WAVEFORMAT* data structure utilities
- * portaudio.h should be included before this file.
- *
- * Copyright (c) 2007 Ross Bencina
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @brief Windows specific PortAudio API extension and utilities header file.
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-	The following #defines for speaker channel masks are the same
-	as those in ksmedia.h, except with PAWIN_ prepended, KSAUDIO_ removed
-	in some cases, and casts to PaWinWaveFormatChannelMask added.
-*/
-
-typedef unsigned long PaWinWaveFormatChannelMask;
-
-/* Speaker Positions: */
-#define PAWIN_SPEAKER_FRONT_LEFT				((PaWinWaveFormatChannelMask)0x1)
-#define PAWIN_SPEAKER_FRONT_RIGHT				((PaWinWaveFormatChannelMask)0x2)
-#define PAWIN_SPEAKER_FRONT_CENTER				((PaWinWaveFormatChannelMask)0x4)
-#define PAWIN_SPEAKER_LOW_FREQUENCY				((PaWinWaveFormatChannelMask)0x8)
-#define PAWIN_SPEAKER_BACK_LEFT					((PaWinWaveFormatChannelMask)0x10)
-#define PAWIN_SPEAKER_BACK_RIGHT				((PaWinWaveFormatChannelMask)0x20)
-#define PAWIN_SPEAKER_FRONT_LEFT_OF_CENTER		((PaWinWaveFormatChannelMask)0x40)
-#define PAWIN_SPEAKER_FRONT_RIGHT_OF_CENTER		((PaWinWaveFormatChannelMask)0x80)
-#define PAWIN_SPEAKER_BACK_CENTER				((PaWinWaveFormatChannelMask)0x100)
-#define PAWIN_SPEAKER_SIDE_LEFT					((PaWinWaveFormatChannelMask)0x200)
-#define PAWIN_SPEAKER_SIDE_RIGHT				((PaWinWaveFormatChannelMask)0x400)
-#define PAWIN_SPEAKER_TOP_CENTER				((PaWinWaveFormatChannelMask)0x800)
-#define PAWIN_SPEAKER_TOP_FRONT_LEFT			((PaWinWaveFormatChannelMask)0x1000)
-#define PAWIN_SPEAKER_TOP_FRONT_CENTER			((PaWinWaveFormatChannelMask)0x2000)
-#define PAWIN_SPEAKER_TOP_FRONT_RIGHT			((PaWinWaveFormatChannelMask)0x4000)
-#define PAWIN_SPEAKER_TOP_BACK_LEFT				((PaWinWaveFormatChannelMask)0x8000)
-#define PAWIN_SPEAKER_TOP_BACK_CENTER			((PaWinWaveFormatChannelMask)0x10000)
-#define PAWIN_SPEAKER_TOP_BACK_RIGHT			((PaWinWaveFormatChannelMask)0x20000)
-
-/* Bit mask locations reserved for future use */
-#define PAWIN_SPEAKER_RESERVED					((PaWinWaveFormatChannelMask)0x7FFC0000)
-
-/* Used to specify that any possible permutation of speaker configurations */
-#define PAWIN_SPEAKER_ALL						((PaWinWaveFormatChannelMask)0x80000000)
-
-/* DirectSound Speaker Config */
-#define PAWIN_SPEAKER_DIRECTOUT					0
-#define PAWIN_SPEAKER_MONO						(PAWIN_SPEAKER_FRONT_CENTER)
-#define PAWIN_SPEAKER_STEREO					(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT)
-#define PAWIN_SPEAKER_QUAD						(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_BACK_LEFT  | PAWIN_SPEAKER_BACK_RIGHT)
-#define PAWIN_SPEAKER_SURROUND					(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_BACK_CENTER)
-#define PAWIN_SPEAKER_5POINT1					(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \
-												PAWIN_SPEAKER_BACK_LEFT  | PAWIN_SPEAKER_BACK_RIGHT)
-#define PAWIN_SPEAKER_7POINT1					(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \
-												PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT | \
-												PAWIN_SPEAKER_FRONT_LEFT_OF_CENTER | PAWIN_SPEAKER_FRONT_RIGHT_OF_CENTER)
-#define PAWIN_SPEAKER_5POINT1_SURROUND			(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \
-												PAWIN_SPEAKER_SIDE_LEFT  | PAWIN_SPEAKER_SIDE_RIGHT)
-#define PAWIN_SPEAKER_7POINT1_SURROUND			(PAWIN_SPEAKER_FRONT_LEFT | PAWIN_SPEAKER_FRONT_RIGHT | \
-												PAWIN_SPEAKER_FRONT_CENTER | PAWIN_SPEAKER_LOW_FREQUENCY | \
-												PAWIN_SPEAKER_BACK_LEFT | PAWIN_SPEAKER_BACK_RIGHT | \
-												PAWIN_SPEAKER_SIDE_LEFT | PAWIN_SPEAKER_SIDE_RIGHT)
-/*
- According to the Microsoft documentation:
- The following are obsolete 5.1 and 7.1 settings (they lack side speakers).  Note this means
- that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are
- similarly obsolete but are unchanged for compatibility reasons).
-*/
-#define PAWIN_SPEAKER_5POINT1_BACK				PAWIN_SPEAKER_5POINT1
-#define PAWIN_SPEAKER_7POINT1_WIDE				PAWIN_SPEAKER_7POINT1
-
-/* DVD Speaker Positions */
-#define PAWIN_SPEAKER_GROUND_FRONT_LEFT			PAWIN_SPEAKER_FRONT_LEFT
-#define PAWIN_SPEAKER_GROUND_FRONT_CENTER		PAWIN_SPEAKER_FRONT_CENTER
-#define PAWIN_SPEAKER_GROUND_FRONT_RIGHT		PAWIN_SPEAKER_FRONT_RIGHT
-#define PAWIN_SPEAKER_GROUND_REAR_LEFT			PAWIN_SPEAKER_BACK_LEFT
-#define PAWIN_SPEAKER_GROUND_REAR_RIGHT			PAWIN_SPEAKER_BACK_RIGHT
-#define PAWIN_SPEAKER_TOP_MIDDLE				PAWIN_SPEAKER_TOP_CENTER
-#define PAWIN_SPEAKER_SUPER_WOOFER				PAWIN_SPEAKER_LOW_FREQUENCY
-
-
-/*
-	PaWinWaveFormat is defined here to provide compatibility with
-	compilation environments which don't have headers defining 
-	WAVEFORMATEXTENSIBLE (e.g. older versions of MSVC, Borland C++ etc.
-
-	The fields for WAVEFORMATEX and WAVEFORMATEXTENSIBLE are declared as an
-    unsigned char array here to avoid clients who include this file having 
-    a dependency on windows.h and mmsystem.h, and also to to avoid having
-    to write separate packing pragmas for each compiler.
-*/
-#define PAWIN_SIZEOF_WAVEFORMATEX   18
-#define PAWIN_SIZEOF_WAVEFORMATEXTENSIBLE (PAWIN_SIZEOF_WAVEFORMATEX + 22)
-
-typedef struct{
-    unsigned char fields[ PAWIN_SIZEOF_WAVEFORMATEXTENSIBLE ];
-    unsigned long extraLongForAlignment; /* ensure that compiler aligns struct to DWORD */ 
-} PaWinWaveFormat;
-
-/*
-    WAVEFORMATEXTENSIBLE fields:
-    
-    union  {
-	    WORD  wValidBitsPerSample;    
-	    WORD  wSamplesPerBlock;    
-	    WORD  wReserved;  
-    } Samples;
-    DWORD  dwChannelMask;  
-    GUID  SubFormat;
-*/
-
-#define PAWIN_INDEXOF_WVALIDBITSPERSAMPLE	(PAWIN_SIZEOF_WAVEFORMATEX+0)
-#define PAWIN_INDEXOF_DWCHANNELMASK			(PAWIN_SIZEOF_WAVEFORMATEX+2)
-#define PAWIN_INDEXOF_SUBFORMAT				(PAWIN_SIZEOF_WAVEFORMATEX+6)
-
-/*
-	Use the following two functions to initialize the waveformat structure.
-*/
-
-void PaWin_InitializeWaveFormatEx( PaWinWaveFormat *waveFormat, 
-		int numChannels, PaSampleFormat sampleFormat, double sampleRate );
-
-
-void PaWin_InitializeWaveFormatExtensible( PaWinWaveFormat *waveFormat, 
-		int numChannels, PaSampleFormat sampleFormat, double sampleRate,
-	    PaWinWaveFormatChannelMask channelMask );
-
-
-/* Map a channel count to a speaker channel mask */
-PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_WIN_WAVEFORMAT_H */
\ No newline at end of file
diff --git a/external/portaudio2007/pa_win_wdmks.c b/external/portaudio2007/pa_win_wdmks.c
deleted file mode 100644
index b72daa3..0000000
--- a/external/portaudio2007/pa_win_wdmks.c
+++ /dev/null
@@ -1,3300 +0,0 @@
-/*
- * $Id: pa_win_wdmks.c 1263 2007-08-27 22:59:09Z rossb $
- * PortAudio Windows WDM-KS interface
- *
- * Author: Andrew Baldwin
- * Based on the Open Source API proposed by Ross Bencina
- * Copyright (c) 1999-2004 Andrew Baldwin, Ross Bencina, Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @ingroup hostaip_src
- @brief Portaudio WDM-KS host API.
-
- @note This is the implementation of the Portaudio host API using the
- Windows WDM/Kernel Streaming API in order to enable very low latency
- playback and recording on all modern Windows platforms (e.g. 2K, XP)
- Note: This API accesses the device drivers below the usual KMIXER
- component which is normally used to enable multi-client mixing and
- format conversion. That means that it will lock out all other users
- of a device for the duration of active stream using those devices
-*/
-
-#include <stdio.h>
-
-/* Debugging/tracing support */
-
-#define PA_LOGE_
-#define PA_LOGL_
-
-#ifdef __GNUC__
-    #include <initguid.h>
-    #define _WIN32_WINNT 0x0501
-    #define WINVER 0x0501
-#endif
-
-#include <string.h> /* strlen() */
-#include <assert.h>
-
-#include "pa_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "portaudio.h"
-#include "pa_debugprint.h"
-
-#include <windows.h>
-#include <winioctl.h>
-
-// ppgb 20080707:
-    #define _INC_MMSYSTEM
-#define _INC_MMREG
-    #define DYNAMIC_GUID_THUNK(l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-    #define DYNAMIC_GUID(data) DYNAMIC_GUID_THUNK(data)
-    #define _NTRTL_ /* Turn off default definition of DEFINE_GUIDEX */
-    #define DEFINE_GUID_THUNK(name,guid) DEFINE_GUID(name,guid)
-    #define DEFINE_GUIDEX(n) DEFINE_GUID_THUNK( n, STATIC_##n )
-    #if !defined( DEFINE_WAVEFORMATEX_GUID )
-        #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
-    #endif
-    #define  WAVE_FORMAT_ADPCM      0x0002
-    #define  WAVE_FORMAT_IEEE_FLOAT 0x0003
-    #define  WAVE_FORMAT_ALAW       0x0006
-    #define  WAVE_FORMAT_MULAW      0x0007
-    #define  WAVE_FORMAT_MPEG       0x0050
-    #define  WAVE_FORMAT_DRM        0x0009
-
-#ifdef __GNUC__
-    #undef PA_LOGE_
-    #define PA_LOGE_ PA_DEBUG(("%s {\n",__FUNCTION__))
-    #undef PA_LOGL_
-    #define PA_LOGL_ PA_DEBUG(("} %s\n",__FUNCTION__))
-    /* These defines are set in order to allow the WIndows DirectX
-     * headers to compile with a GCC compiler such as MinGW
-     * NOTE: The headers may generate a few warning in GCC, but
-     * they should compile */
-    #define _INC_MMSYSTEM
-    #define _INC_MMREG
-    #define _NTRTL_ /* Turn off default definition of DEFINE_GUIDEX */
-    #define DEFINE_GUID_THUNK(name,guid) DEFINE_GUID(name,guid)
-    #define DEFINE_GUIDEX(n) DEFINE_GUID_THUNK( n, STATIC_##n )
-    #if !defined( DEFINE_WAVEFORMATEX_GUID )
-        #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
-    #endif
-    #define  WAVE_FORMAT_ADPCM      0x0002
-    #define  WAVE_FORMAT_IEEE_FLOAT 0x0003
-    #define  WAVE_FORMAT_ALAW       0x0006
-    #define  WAVE_FORMAT_MULAW      0x0007
-    #define  WAVE_FORMAT_MPEG       0x0050
-    #define  WAVE_FORMAT_DRM        0x0009
-    #define DYNAMIC_GUID_THUNK(l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-    #define DYNAMIC_GUID(data) DYNAMIC_GUID_THUNK(data)
-#endif
-
-#ifdef _MSC_VER
-    #define DYNAMIC_GUID(data) {data}
-    #define _INC_MMREG
-    #define _NTRTL_ /* Turn off default definition of DEFINE_GUIDEX */
-    #undef DEFINE_GUID
-    #define DEFINE_GUID(n,data) EXTERN_C const GUID n = {data}
-    #define DEFINE_GUID_THUNK(n,data) DEFINE_GUID(n,data)
-    #define DEFINE_GUIDEX(n) DEFINE_GUID_THUNK(n, STATIC_##n)
-    #if !defined( DEFINE_WAVEFORMATEX_GUID )
-        #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
-    #endif
-    #define  WAVE_FORMAT_ADPCM      0x0002
-    #define  WAVE_FORMAT_IEEE_FLOAT 0x0003
-    #define  WAVE_FORMAT_ALAW       0x0006
-    #define  WAVE_FORMAT_MULAW      0x0007
-    #define  WAVE_FORMAT_MPEG       0x0050
-    #define  WAVE_FORMAT_DRM        0x0009
-#endif
-
-#include <ks.h>
-#include <ksmedia.h>
-#include <tchar.h>
-#include <assert.h>
-#include <stdio.h>
-
-/* These next definitions allow the use of the KSUSER DLL */
-typedef /*KSDDKAPI ppgb 20080707*/ DWORD WINAPI KSCREATEPIN(HANDLE, PKSPIN_CONNECT, ACCESS_MASK, PHANDLE);
-extern HMODULE      DllKsUser;
-extern KSCREATEPIN* FunctionKsCreatePin;
-
-/* Forward definition to break circular type reference between pin and filter */
-struct __PaWinWdmFilter;
-typedef struct __PaWinWdmFilter PaWinWdmFilter;
-
-/* The Pin structure
- * A pin is an input or output node, e.g. for audio flow */
-typedef struct __PaWinWdmPin
-{
-    HANDLE                      handle;
-    PaWinWdmFilter*             parentFilter;
-    unsigned long               pinId;
-    KSPIN_CONNECT*              pinConnect;
-    unsigned long               pinConnectSize;
-    KSDATAFORMAT_WAVEFORMATEX*  ksDataFormatWfx;
-    KSPIN_COMMUNICATION         communication;
-    KSDATARANGE*                dataRanges;
-    KSMULTIPLE_ITEM*            dataRangesItem;
-    KSPIN_DATAFLOW              dataFlow;
-    KSPIN_CINSTANCES            instances;
-    unsigned long               frameSize;
-    int                         maxChannels;
-    unsigned long               formats;
-    int                         bestSampleRate;
-}
-PaWinWdmPin;
-
-/* The Filter structure
- * A filter has a number of pins and a "friendly name" */
-struct __PaWinWdmFilter
-{
-    HANDLE         handle;
-    int            pinCount;
-    PaWinWdmPin**  pins;
-    TCHAR          filterName[MAX_PATH];
-    TCHAR          friendlyName[MAX_PATH];
-    int            maxInputChannels;
-    int            maxOutputChannels;
-    unsigned long  formats;
-    int            usageCount;
-    int            bestSampleRate;
-};
-
-/* PaWinWdmHostApiRepresentation - host api datastructure specific to this implementation */
-typedef struct __PaWinWdmHostApiRepresentation
-{
-    PaUtilHostApiRepresentation  inheritedHostApiRep;
-    PaUtilStreamInterface        callbackStreamInterface;
-    PaUtilStreamInterface        blockingStreamInterface;
-
-    PaUtilAllocationGroup*       allocations;
-    PaWinWdmFilter**             filters;
-    int                          filterCount;
-}
-PaWinWdmHostApiRepresentation;
-
-typedef struct __PaWinWdmDeviceInfo
-{
-    PaDeviceInfo     inheritedDeviceInfo;
-    PaWinWdmFilter*  filter;
-}
-PaWinWdmDeviceInfo;
-
-typedef struct __DATAPACKET
-{
-    KSSTREAM_HEADER  Header;
-    OVERLAPPED       Signal;
-} DATAPACKET;
-
-/* PaWinWdmStream - a stream data structure specifically for this implementation */
-typedef struct __PaWinWdmStream
-{
-    PaUtilStreamRepresentation  streamRepresentation;
-    PaUtilCpuLoadMeasurer       cpuLoadMeasurer;
-    PaUtilBufferProcessor       bufferProcessor;
-
-    PaWinWdmPin*                recordingPin;
-    PaWinWdmPin*                playbackPin;
-    char*                       hostBuffer;
-    unsigned long               framesPerHostIBuffer;
-    unsigned long               framesPerHostOBuffer;
-    int                         bytesPerInputFrame;
-    int                         bytesPerOutputFrame;
-    int                         streamStarted;
-    int                         streamActive;
-    int                         streamStop;
-    int                         streamAbort;
-    int                         oldProcessPriority;
-    HANDLE                      streamThread;
-    HANDLE                      events[5];  /* 2 play + 2 record packets + abort events */
-    DATAPACKET                  packets[4]; /* 2 play + 2 record */
-    PaStreamFlags               streamFlags;
-    /* These values handle the case where the user wants to use fewer
-     * channels than the device has */
-    int                         userInputChannels;
-    int                         deviceInputChannels;
-    int                         userOutputChannels;
-    int                         deviceOutputChannels;
-    int                         inputSampleSize;
-    int                         outputSampleSize;
-}
-PaWinWdmStream;
-
-#include <setupapi.h>
-
-HMODULE      DllKsUser = NULL;
-KSCREATEPIN* FunctionKsCreatePin = NULL;
-
-/* prototypes for functions declared in this file */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaWinWdm_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Low level I/O functions */
-static PaError WdmSyncIoctl(HANDLE handle,
-    unsigned long ioctlNumber,
-    void* inBuffer,
-    unsigned long inBufferCount,
-    void* outBuffer,
-    unsigned long outBufferCount,
-    unsigned long* bytesReturned);
-static PaError WdmGetPropertySimple(HANDLE handle,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount,
-    void* instance,
-    unsigned long instanceCount);
-static PaError WdmSetPropertySimple(HANDLE handle,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount,
-    void* instance,
-    unsigned long instanceCount);
-static PaError WdmGetPinPropertySimple(HANDLE  handle,
-    unsigned long pinId,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount);
-static PaError WdmGetPinPropertyMulti(HANDLE  handle,
-    unsigned long pinId,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    KSMULTIPLE_ITEM** ksMultipleItem);
-
-/** Pin management functions */
-static PaWinWdmPin* PinNew(PaWinWdmFilter* parentFilter, unsigned long pinId, PaError* error);
-static void PinFree(PaWinWdmPin* pin);
-static void PinClose(PaWinWdmPin* pin);
-static PaError PinInstantiate(PaWinWdmPin* pin);
-/*static PaError PinGetState(PaWinWdmPin* pin, KSSTATE* state); NOT USED */
-static PaError PinSetState(PaWinWdmPin* pin, KSSTATE state);
-static PaError PinSetFormat(PaWinWdmPin* pin, const WAVEFORMATEX* format);
-static PaError PinIsFormatSupported(PaWinWdmPin* pin, const WAVEFORMATEX* format);
-
-/* Filter management functions */
-static PaWinWdmFilter* FilterNew(
-    TCHAR* filterName,
-    TCHAR* friendlyName,
-    PaError* error);
-static void FilterFree(PaWinWdmFilter* filter);
-static PaWinWdmPin* FilterCreateRenderPin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error);
-static PaWinWdmPin* FilterFindViableRenderPin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error);
-static PaError FilterCanCreateRenderPin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex);
-static PaWinWdmPin* FilterCreateCapturePin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error);
-static PaWinWdmPin* FilterFindViableCapturePin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error);
-static PaError FilterCanCreateCapturePin(
-    PaWinWdmFilter* filter,
-    const WAVEFORMATEX* pwfx);
-static PaError FilterUse(
-    PaWinWdmFilter* filter);
-static void FilterRelease(
-    PaWinWdmFilter* filter);
-
-/* Interface functions */
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError IsFormatSupported(
-    struct PaUtilHostApiRepresentation *hostApi,
-    const PaStreamParameters *inputParameters,
-    const PaStreamParameters *outputParameters,
-    double sampleRate );
-static PaError OpenStream(
-    struct PaUtilHostApiRepresentation *hostApi,
-    PaStream** s,
-    const PaStreamParameters *inputParameters,
-    const PaStreamParameters *outputParameters,
-    double sampleRate,
-    unsigned long framesPerBuffer,
-    PaStreamFlags streamFlags,
-    PaStreamCallback *streamCallback,
-    void *userData );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError ReadStream(
-    PaStream* stream,
-    void *buffer,
-    unsigned long frames );
-static PaError WriteStream(
-    PaStream* stream,
-    const void *buffer,
-    unsigned long frames );
-static signed long GetStreamReadAvailable( PaStream* stream );
-static signed long GetStreamWriteAvailable( PaStream* stream );
-
-/* Utility functions */
-static unsigned long GetWfexSize(const WAVEFORMATEX* wfex);
-static PaError BuildFilterList(PaWinWdmHostApiRepresentation* wdmHostApi);
-static BOOL PinWrite(HANDLE h, DATAPACKET* p);
-static BOOL PinRead(HANDLE h, DATAPACKET* p);
-static void DuplicateFirstChannelInt16(void* buffer, int channels, int samples);
-static void DuplicateFirstChannelInt24(void* buffer, int channels, int samples);
-static DWORD WINAPI ProcessingThread(LPVOID pParam);
-
-/* Function bodies */
-
-static unsigned long GetWfexSize(const WAVEFORMATEX* wfex)
-{
-    if( wfex->wFormatTag == WAVE_FORMAT_PCM )
-    {
-        return sizeof( WAVEFORMATEX );
-    }
-    else
-    {
-        return (sizeof( WAVEFORMATEX ) + wfex->cbSize);
-    }
-}
-
-/*
-Low level pin/filter access functions
-*/
-static PaError WdmSyncIoctl(
-    HANDLE handle,
-    unsigned long ioctlNumber,
-    void* inBuffer,
-    unsigned long inBufferCount,
-    void* outBuffer,
-    unsigned long outBufferCount,
-    unsigned long* bytesReturned)
-{
-    PaError result = paNoError;
-    OVERLAPPED overlapped;
-    int boolResult;
-    unsigned long dummyBytesReturned;
-    unsigned long error;
-
-    if( !bytesReturned )
-    {
-        /* User a dummy as the caller hasn't supplied one */
-        bytesReturned = &dummyBytesReturned;
-    }
-
-    FillMemory((void *)&overlapped,sizeof(overlapped),0);
-    overlapped.hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
-    if( !overlapped.hEvent )
-    {
-          result = paInsufficientMemory;
-        goto error;
-    }
-    overlapped.hEvent = (HANDLE)((DWORD_PTR)overlapped.hEvent | 0x1);
-
-    boolResult = DeviceIoControl(handle, ioctlNumber, inBuffer, inBufferCount,
-        outBuffer, outBufferCount, bytesReturned, &overlapped);
-    if( !boolResult )
-    {
-        error = GetLastError();
-        if( error == ERROR_IO_PENDING )
-        {
-            error = WaitForSingleObject(overlapped.hEvent,INFINITE);
-            if( error != WAIT_OBJECT_0 )
-            {
-                result = paUnanticipatedHostError;
-                goto error;
-            }
-        }
-        else if((( error == ERROR_INSUFFICIENT_BUFFER ) ||
-                  ( error == ERROR_MORE_DATA )) &&
-                  ( ioctlNumber == IOCTL_KS_PROPERTY ) &&
-                  ( outBufferCount == 0 ))
-        {
-            boolResult = TRUE;
-        }
-        else
-        {
-            result = paUnanticipatedHostError;
-        }
-    }
-    if( !boolResult )
-        *bytesReturned = 0;
-
-error:
-    if( overlapped.hEvent )
-    {
-            CloseHandle( overlapped.hEvent );
-    }
-    return result;
-}
-
-static PaError WdmGetPropertySimple(HANDLE handle,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount,
-    void* instance,
-    unsigned long instanceCount)
-{
-    PaError result;
-    KSPROPERTY* ksProperty;
-    unsigned long propertyCount;
-
-    propertyCount = sizeof(KSPROPERTY) + instanceCount;
-    ksProperty = (KSPROPERTY*)PaUtil_AllocateMemory( propertyCount );
-    if( !ksProperty )
-    {
-        return paInsufficientMemory;
-    }
-
-    FillMemory((void*)ksProperty,sizeof(ksProperty),0);
-    ksProperty->Set = *guidPropertySet;
-    ksProperty->Id = property;
-    ksProperty->Flags = KSPROPERTY_TYPE_GET;
-
-    if( instance )
-    {
-        memcpy( (void*)(((char*)ksProperty)+sizeof(KSPROPERTY)), instance, instanceCount );
-    }
-
-    result = WdmSyncIoctl(
-                handle,
-                IOCTL_KS_PROPERTY,
-                ksProperty,
-                propertyCount,
-                value,
-                valueCount,
-                NULL);
-
-    PaUtil_FreeMemory( ksProperty );
-    return result;
-}
-
-static PaError WdmSetPropertySimple(
-    HANDLE handle,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount,
-    void* instance,
-    unsigned long instanceCount)
-{
-    PaError result;
-    KSPROPERTY* ksProperty;
-    unsigned long propertyCount  = 0;
-
-    propertyCount = sizeof(KSPROPERTY) + instanceCount;
-    ksProperty = (KSPROPERTY*)PaUtil_AllocateMemory( propertyCount );
-    if( !ksProperty )
-    {
-        return paInsufficientMemory;
-    }
-
-    ksProperty->Set = *guidPropertySet;
-    ksProperty->Id = property;
-    ksProperty->Flags = KSPROPERTY_TYPE_SET;
-
-    if( instance )
-    {
-        memcpy((void*)((char*)ksProperty + sizeof(KSPROPERTY)), instance, instanceCount);
-    }
-
-    result = WdmSyncIoctl(
-                handle,
-                IOCTL_KS_PROPERTY,
-                ksProperty,
-                propertyCount,
-                value,
-                valueCount,
-                NULL);
-
-    PaUtil_FreeMemory( ksProperty );
-    return result;
-}
-
-static PaError WdmGetPinPropertySimple(
-    HANDLE  handle,
-    unsigned long pinId,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    void* value,
-    unsigned long valueCount)
-{
-    PaError result;
-
-    KSP_PIN ksPProp;
-    ksPProp.Property.Set = *guidPropertySet;
-    ksPProp.Property.Id = property;
-    ksPProp.Property.Flags = KSPROPERTY_TYPE_GET;
-    ksPProp.PinId = pinId;
-    ksPProp.Reserved = 0;
-
-    result = WdmSyncIoctl(
-                handle,
-                IOCTL_KS_PROPERTY,
-                &ksPProp,
-                sizeof(KSP_PIN),
-                value,
-                valueCount,
-                NULL);
-
-    return result;
-}
-
-static PaError WdmGetPinPropertyMulti(
-    HANDLE handle,
-    unsigned long pinId,
-    const GUID* const guidPropertySet,
-    unsigned long property,
-    KSMULTIPLE_ITEM** ksMultipleItem)
-{
-    PaError result;
-    unsigned long multipleItemSize = 0;
-    KSP_PIN ksPProp;
-
-    ksPProp.Property.Set = *guidPropertySet;
-    ksPProp.Property.Id = property;
-    ksPProp.Property.Flags = KSPROPERTY_TYPE_GET;
-    ksPProp.PinId = pinId;
-    ksPProp.Reserved = 0;
-
-    result = WdmSyncIoctl(
-                handle,
-                IOCTL_KS_PROPERTY,
-                &ksPProp.Property,
-                sizeof(KSP_PIN),
-                NULL,
-                0,
-                &multipleItemSize);
-    if( result != paNoError )
-    {
-        return result;
-    }
-
-    *ksMultipleItem = (KSMULTIPLE_ITEM*)PaUtil_AllocateMemory( multipleItemSize );
-    if( !*ksMultipleItem )
-    {
-        return paInsufficientMemory;
-    }
-
-    result = WdmSyncIoctl(
-                handle,
-                IOCTL_KS_PROPERTY,
-                &ksPProp,
-                sizeof(KSP_PIN),
-                (void*)*ksMultipleItem,
-                multipleItemSize,
-                NULL);
-
-    if( result != paNoError )
-    {
-        PaUtil_FreeMemory( ksMultipleItem );
-    }
-
-    return result;
-}
-
-
-/*
-Create a new pin object belonging to a filter
-The pin object holds all the configuration information about the pin
-before it is opened, and then the handle of the pin after is opened
-*/
-static PaWinWdmPin* PinNew(PaWinWdmFilter* parentFilter, unsigned long pinId, PaError* error)
-{
-    PaWinWdmPin* pin;
-    PaError result;
-    unsigned long i;
-    KSMULTIPLE_ITEM* item = NULL;
-    KSIDENTIFIER* identifier;
-    KSDATARANGE* dataRange;
-
-    PA_LOGE_;
-    PA_DEBUG(("Creating pin %d:\n",pinId));
-
-    /* Allocate the new PIN object */
-    pin = (PaWinWdmPin*)PaUtil_AllocateMemory( sizeof(PaWinWdmPin) );
-    if( !pin )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    /* Zero the pin object */
-    /* memset( (void*)pin, 0, sizeof(PaWinWdmPin) ); */
-
-    pin->parentFilter = parentFilter;
-    pin->pinId = pinId;
-
-    /* Allocate a connect structure */
-    pin->pinConnectSize = sizeof(KSPIN_CONNECT) + sizeof(KSDATAFORMAT_WAVEFORMATEX);
-    pin->pinConnect = (KSPIN_CONNECT*)PaUtil_AllocateMemory( pin->pinConnectSize );
-    if( !pin->pinConnect )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    /* Configure the connect structure with default values */
-    pin->pinConnect->Interface.Set               = KSINTERFACESETID_Standard;
-    pin->pinConnect->Interface.Id                = KSINTERFACE_STANDARD_STREAMING;
-    pin->pinConnect->Interface.Flags             = 0;
-    pin->pinConnect->Medium.Set                  = KSMEDIUMSETID_Standard;
-    pin->pinConnect->Medium.Id                   = KSMEDIUM_TYPE_ANYINSTANCE;
-    pin->pinConnect->Medium.Flags                = 0;
-    pin->pinConnect->PinId                       = pinId;
-    pin->pinConnect->PinToHandle                 = NULL;
-    pin->pinConnect->Priority.PriorityClass      = KSPRIORITY_NORMAL;
-    pin->pinConnect->Priority.PrioritySubClass   = 1;
-    pin->ksDataFormatWfx = (KSDATAFORMAT_WAVEFORMATEX*)(pin->pinConnect + 1);
-    pin->ksDataFormatWfx->DataFormat.FormatSize  = sizeof(KSDATAFORMAT_WAVEFORMATEX);
-    pin->ksDataFormatWfx->DataFormat.Flags       = 0;
-    pin->ksDataFormatWfx->DataFormat.Reserved    = 0;
-    pin->ksDataFormatWfx->DataFormat.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
-    pin->ksDataFormatWfx->DataFormat.SubFormat   = KSDATAFORMAT_SUBTYPE_PCM;
-    pin->ksDataFormatWfx->DataFormat.Specifier   = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
-
-    pin->frameSize = 0; /* Unknown until we instantiate pin */
-
-    /* Get the COMMUNICATION property */
-    result = WdmGetPinPropertySimple(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_COMMUNICATION,
-        &pin->communication,
-        sizeof(KSPIN_COMMUNICATION));
-    if( result != paNoError )
-        goto error;
-
-    if( /*(pin->communication != KSPIN_COMMUNICATION_SOURCE) &&*/
-         (pin->communication != KSPIN_COMMUNICATION_SINK) &&
-         (pin->communication != KSPIN_COMMUNICATION_BOTH) )
-    {
-        PA_DEBUG(("Not source/sink\n"));
-        result = paInvalidDevice;
-        goto error;
-    }
-
-    /* Get dataflow information */
-    result = WdmGetPinPropertySimple(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_DATAFLOW,
-        &pin->dataFlow,
-        sizeof(KSPIN_DATAFLOW));
-
-    if( result != paNoError )
-        goto error;
-
-    /* Get the INTERFACE property list */
-    result = WdmGetPinPropertyMulti(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_INTERFACES,
-        &item);
-
-    if( result != paNoError )
-        goto error;
-
-    identifier = (KSIDENTIFIER*)(item+1);
-
-    /* Check that at least one interface is STANDARD_STREAMING */
-    result = paUnanticipatedHostError;
-    for( i = 0; i < item->Count; i++ )
-    {
-        if( !memcmp( (void*)&identifier[i].Set, (void*)&KSINTERFACESETID_Standard, sizeof( GUID ) ) &&
-            ( identifier[i].Id == KSINTERFACE_STANDARD_STREAMING ) )
-        {
-            result = paNoError;
-            break;
-        }
-    }
-
-    if( result != paNoError )
-    {
-        PA_DEBUG(("No standard streaming\n"));
-        goto error;
-    }
-
-    /* Don't need interfaces any more */
-    PaUtil_FreeMemory( item );
-    item = NULL;
-
-    /* Get the MEDIUM properties list */
-    result = WdmGetPinPropertyMulti(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_MEDIUMS,
-        &item);
-
-    if( result != paNoError )
-        goto error;
-
-    identifier = (KSIDENTIFIER*)(item+1); /* Not actually necessary... */
-
-    /* Check that at least one medium is STANDARD_DEVIO */
-    result = paUnanticipatedHostError;
-    for( i = 0; i < item->Count; i++ )
-    {
-        if( !memcmp( (void*)&identifier[i].Set, (void*)&KSMEDIUMSETID_Standard, sizeof( GUID ) ) &&
-           ( identifier[i].Id == KSMEDIUM_STANDARD_DEVIO ) )
-        {
-            result = paNoError;
-            break;
-        }
-    }
-
-    if( result != paNoError )
-    {
-        PA_DEBUG(("No standard devio\n"));
-        goto error;
-    }
-    /* Don't need mediums any more */
-    PaUtil_FreeMemory( item );
-    item = NULL;
-
-    /* Get DATARANGES */
-    result = WdmGetPinPropertyMulti(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_DATARANGES,
-        &pin->dataRangesItem);
-
-    if( result != paNoError )
-        goto error;
-
-    pin->dataRanges = (KSDATARANGE*)(pin->dataRangesItem +1);
-
-    /* Check that at least one datarange supports audio */
-    result = paUnanticipatedHostError;
-    dataRange = pin->dataRanges;
-    pin->maxChannels = 0;
-    pin->bestSampleRate = 0;
-    pin->formats = 0;
-    for( i = 0; i <pin->dataRangesItem->Count; i++)
-    {
-        PA_DEBUG(("DR major format %x\n",*(unsigned long*)(&(dataRange->MajorFormat))));
-        /* Check that subformat is WAVEFORMATEX, PCM or WILDCARD */
-        if( IS_VALID_WAVEFORMATEX_GUID(&dataRange->SubFormat) ||
-            !memcmp((void*)&dataRange->SubFormat, (void*)&KSDATAFORMAT_SUBTYPE_PCM, sizeof ( GUID ) ) ||
-            ( !memcmp((void*)&dataRange->SubFormat, (void*)&KSDATAFORMAT_SUBTYPE_WILDCARD, sizeof ( GUID ) ) &&
-            ( !memcmp((void*)&dataRange->MajorFormat, (void*)&KSDATAFORMAT_TYPE_AUDIO, sizeof ( GUID ) ) ) ) )
-        {
-            result = paNoError;
-            /* Record the maximum possible channels with this pin */
-            PA_DEBUG(("MaxChannel: %d\n",pin->maxChannels));
-            if( (int)((KSDATARANGE_AUDIO*)dataRange)->MaximumChannels > pin->maxChannels )
-            {
-                pin->maxChannels = ((KSDATARANGE_AUDIO*)dataRange)->MaximumChannels;
-                /*PA_DEBUG(("MaxChannel: %d\n",pin->maxChannels));*/
-            }
-            /* Record the formats (bit depths) that are supported */
-            if( ((KSDATARANGE_AUDIO*)dataRange)->MinimumBitsPerSample <= 16 )
-            {
-                pin->formats |= paInt16;
-                PA_DEBUG(("Format 16 bit supported\n"));
-            }
-            if( ((KSDATARANGE_AUDIO*)dataRange)->MaximumBitsPerSample >= 24 )
-            {
-                pin->formats |= paInt24;
-                PA_DEBUG(("Format 24 bit supported\n"));
-            }
-            if( ( pin->bestSampleRate != 48000) &&
-                (((KSDATARANGE_AUDIO*)dataRange)->MaximumSampleFrequency >= 48000) &&
-                (((KSDATARANGE_AUDIO*)dataRange)->MinimumSampleFrequency <= 48000) )
-            {
-                pin->bestSampleRate = 48000;
-                PA_DEBUG(("48kHz supported\n"));
-            }
-            else if(( pin->bestSampleRate != 48000) && ( pin->bestSampleRate != 44100 ) &&
-                (((KSDATARANGE_AUDIO*)dataRange)->MaximumSampleFrequency >= 44100) &&
-                (((KSDATARANGE_AUDIO*)dataRange)->MinimumSampleFrequency <= 44100) )
-            {
-                pin->bestSampleRate = 44100;
-                PA_DEBUG(("44.1kHz supported\n"));
-            }
-            else
-            {
-                pin->bestSampleRate = ((KSDATARANGE_AUDIO*)dataRange)->MaximumSampleFrequency;
-            }
-        }
-        dataRange = (KSDATARANGE*)( ((char*)dataRange) + dataRange->FormatSize);
-    }
-
-    if( result != paNoError )
-        goto error;
-
-    /* Get instance information */
-    result = WdmGetPinPropertySimple(
-        parentFilter->handle,
-        pinId,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_CINSTANCES,
-        &pin->instances,
-        sizeof(KSPIN_CINSTANCES));
-
-    if( result != paNoError )
-        goto error;
-
-    /* Success */
-    *error = paNoError;
-    PA_DEBUG(("Pin created successfully\n"));
-    PA_LOGL_;
-    return pin;
-
-error:
-    /*
-    Error cleanup
-    */
-    PaUtil_FreeMemory( item );
-    if( pin )
-    {
-        PaUtil_FreeMemory( pin->pinConnect );
-        PaUtil_FreeMemory( pin->dataRangesItem );
-        PaUtil_FreeMemory( pin );
-    }
-    *error = result;
-    PA_LOGL_;
-    return NULL;
-}
-
-/*
-Safely free all resources associated with the pin
-*/
-static void PinFree(PaWinWdmPin* pin)
-{
-    PA_LOGE_;
-    if( pin )
-    {
-        PinClose(pin);
-        if( pin->pinConnect )
-        {
-            PaUtil_FreeMemory( pin->pinConnect );
-        }
-        if( pin->dataRangesItem )
-        {
-            PaUtil_FreeMemory( pin->dataRangesItem );
-        }
-        PaUtil_FreeMemory( pin );
-    }
-    PA_LOGL_;
-}
-
-/*
-If the pin handle is open, close it
-*/
-static void PinClose(PaWinWdmPin* pin)
-{
-    PA_LOGE_;
-    if( pin == NULL )
-    {
-        PA_DEBUG(("Closing NULL pin!"));
-        PA_LOGL_;
-        return;
-    }
-    if( pin->handle != NULL )
-    {
-        PinSetState( pin, KSSTATE_PAUSE );
-        PinSetState( pin, KSSTATE_STOP );
-        CloseHandle( pin->handle );
-        pin->handle = NULL;
-        FilterRelease(pin->parentFilter);
-    }
-    PA_LOGL_;
-}
-
-/*
-Set the state of this (instantiated) pin
-*/
-static PaError PinSetState(PaWinWdmPin* pin, KSSTATE state)
-{
-    PaError result;
-
-    PA_LOGE_;
-    if( pin == NULL )
-        return paInternalError;
-    if( pin->handle == NULL )
-        return paInternalError;
-
-    result = WdmSetPropertySimple(
-        pin->handle,
-        &KSPROPSETID_Connection,
-        KSPROPERTY_CONNECTION_STATE,
-        &state,
-        sizeof(state),
-        NULL,
-        0);
-    PA_LOGL_;
-    return result;
-}
-
-static PaError PinInstantiate(PaWinWdmPin* pin)
-{
-    PaError result;
-    unsigned long createResult;
-    KSALLOCATOR_FRAMING ksaf;
-    KSALLOCATOR_FRAMING_EX ksafex;
-
-    PA_LOGE_;
-
-    if( pin == NULL )
-        return paInternalError;
-    if(!pin->pinConnect)
-        return paInternalError;
-
-    FilterUse(pin->parentFilter);
-
-    createResult = FunctionKsCreatePin(
-        pin->parentFilter->handle,
-        pin->pinConnect,
-        GENERIC_WRITE | GENERIC_READ,
-        &pin->handle
-        );
-
-    PA_DEBUG(("Pin create result = %x\n",createResult));
-    if( createResult != ERROR_SUCCESS )
-    {
-        FilterRelease(pin->parentFilter);
-        pin->handle = NULL;
-        return paInvalidDevice;
-    }
-
-    result = WdmGetPropertySimple(
-        pin->handle,
-        &KSPROPSETID_Connection,
-        KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
-        &ksaf,
-        sizeof(ksaf),
-        NULL,
-        0);
-
-    if( result != paNoError )
-    {
-        result = WdmGetPropertySimple(
-            pin->handle,
-            &KSPROPSETID_Connection,
-            KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
-            &ksafex,
-            sizeof(ksafex),
-            NULL,
-            0);
-        if( result == paNoError )
-        {
-            pin->frameSize = ksafex.FramingItem[0].FramingRange.Range.MinFrameSize;
-        }
-    }
-    else
-    {
-        pin->frameSize = ksaf.FrameSize;
-    }
-
-    PA_LOGL_;
-
-    return paNoError;
-}
-
-/* NOT USED
-static PaError PinGetState(PaWinWdmPin* pin, KSSTATE* state)
-{
-    PaError result;
-
-    if( state == NULL )
-        return paInternalError;
-    if( pin == NULL )
-        return paInternalError;
-    if( pin->handle == NULL )
-        return paInternalError;
-
-    result = WdmGetPropertySimple(
-        pin->handle,
-        KSPROPSETID_Connection,
-        KSPROPERTY_CONNECTION_STATE,
-        state,
-        sizeof(KSSTATE),
-        NULL,
-        0);
-
-    return result;
-}
-*/
-static PaError PinSetFormat(PaWinWdmPin* pin, const WAVEFORMATEX* format)
-{
-    unsigned long size;
-    void* newConnect;
-
-    PA_LOGE_;
-
-    if( pin == NULL )
-        return paInternalError;
-    if( format == NULL )
-        return paInternalError;
-
-    size = GetWfexSize(format) + sizeof(KSPIN_CONNECT) + sizeof(KSDATAFORMAT_WAVEFORMATEX) - sizeof(WAVEFORMATEX);
-
-    if( pin->pinConnectSize != size )
-    {
-        newConnect = PaUtil_AllocateMemory( size );
-        if( newConnect == NULL )
-            return paInsufficientMemory;
-        memcpy( newConnect, (void*)pin->pinConnect, min(pin->pinConnectSize,size) );
-        PaUtil_FreeMemory( pin->pinConnect );
-        pin->pinConnect = (KSPIN_CONNECT*)newConnect;
-        pin->pinConnectSize = size;
-        pin->ksDataFormatWfx = (KSDATAFORMAT_WAVEFORMATEX*)((KSPIN_CONNECT*)newConnect + 1);
-        pin->ksDataFormatWfx->DataFormat.FormatSize = size - sizeof(KSPIN_CONNECT);
-    }
-
-    memcpy( (void*)&(pin->ksDataFormatWfx->WaveFormatEx), format, GetWfexSize(format) );
-    pin->ksDataFormatWfx->DataFormat.SampleSize = (unsigned short)(format->nChannels * (format->wBitsPerSample / 8));
-
-    PA_LOGL_;
-
-    return paNoError;
-}
-
-static PaError PinIsFormatSupported(PaWinWdmPin* pin, const WAVEFORMATEX* format)
-{
-    KSDATARANGE_AUDIO* dataRange;
-    unsigned long count;
-    GUID guid = DYNAMIC_GUID( DEFINE_WAVEFORMATEX_GUID(format->wFormatTag) );
-    PaError result = paInvalidDevice;
-
-    PA_LOGE_;
-
-    if( format->wFormatTag == WAVE_FORMAT_EXTENSIBLE )
-    {
-        guid = ((WAVEFORMATEXTENSIBLE*)format)->SubFormat;
-    }
-    dataRange = (KSDATARANGE_AUDIO*)pin->dataRanges;
-    for(count = 0; count<pin->dataRangesItem->Count; count++)
-    {
-        if(( !memcmp(&(dataRange->DataRange.MajorFormat),&KSDATAFORMAT_TYPE_AUDIO,sizeof(GUID)) ) ||
-           ( !memcmp(&(dataRange->DataRange.MajorFormat),&KSDATAFORMAT_TYPE_WILDCARD,sizeof(GUID)) ))
-        {
-            /* This is an audio or wildcard datarange... */
-            if(( !memcmp(&(dataRange->DataRange.SubFormat),&KSDATAFORMAT_SUBTYPE_WILDCARD,sizeof(GUID)) ) ||
-                ( !memcmp(&(dataRange->DataRange.SubFormat),&guid,sizeof(GUID)) ))
-            {
-                if(( !memcmp(&(dataRange->DataRange.Specifier),&KSDATAFORMAT_SPECIFIER_WILDCARD,sizeof(GUID)) ) ||
-                  ( !memcmp(&(dataRange->DataRange.Specifier),&KSDATAFORMAT_SPECIFIER_WAVEFORMATEX,sizeof(GUID) )))
-                {
-
-                    PA_DEBUG(("Pin:%x, DataRange:%d\n",(void*)pin,count));
-                    PA_DEBUG(("\tFormatSize:%d, SampleSize:%d\n",dataRange->DataRange.FormatSize,dataRange->DataRange.SampleSize));
-                    PA_DEBUG(("\tMaxChannels:%d\n",dataRange->MaximumChannels));
-                    PA_DEBUG(("\tBits:%d-%d\n",dataRange->MinimumBitsPerSample,dataRange->MaximumBitsPerSample));
-                    PA_DEBUG(("\tSampleRate:%d-%d\n",dataRange->MinimumSampleFrequency,dataRange->MaximumSampleFrequency));
-
-                    if( dataRange->MaximumChannels < format->nChannels )
-                    {
-                        result = paInvalidChannelCount;
-                        continue;
-                    }
-                    if( dataRange->MinimumBitsPerSample > format->wBitsPerSample )
-                    {
-                        result = paSampleFormatNotSupported;
-                        continue;
-                    }
-                    if( dataRange->MaximumBitsPerSample < format->wBitsPerSample )
-                    {
-                        result = paSampleFormatNotSupported;
-                        continue;
-                    }
-                    if( dataRange->MinimumSampleFrequency > format->nSamplesPerSec )
-                    {
-                        result = paInvalidSampleRate;
-                        continue;
-                    }
-                    if( dataRange->MaximumSampleFrequency < format->nSamplesPerSec )
-                    {
-                        result = paInvalidSampleRate;
-                        continue;
-                    }
-                    /* Success! */
-                    PA_LOGL_;
-                    return paNoError;
-                }
-            }
-        }
-        dataRange = (KSDATARANGE_AUDIO*)( ((char*)dataRange) + dataRange->DataRange.FormatSize);
-    }
-
-    PA_LOGL_;
-
-    return result;
-}
-
-/**
- * Create a new filter object
- */
-static PaWinWdmFilter* FilterNew(TCHAR* filterName, TCHAR* friendlyName, PaError* error)
-{
-    PaWinWdmFilter* filter;
-    PaError result;
-    int pinId;
-    int valid;
-
-
-    /* Allocate the new filter object */
-    filter = (PaWinWdmFilter*)PaUtil_AllocateMemory( sizeof(PaWinWdmFilter) );
-    if( !filter )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    /* Zero the filter object - done by AllocateMemory */
-    /* memset( (void*)filter, 0, sizeof(PaWinWdmFilter) ); */
-
-    /* Copy the filter name */
-    _tcsncpy(filter->filterName, filterName, MAX_PATH);
-
-    /* Copy the friendly name */
-    _tcsncpy(filter->friendlyName, friendlyName, MAX_PATH);
-
-    /* Open the filter handle */
-    result = FilterUse(filter);
-    if( result != paNoError )
-    {
-        goto error;
-    }
-
-    /* Get pin count */
-    result = WdmGetPinPropertySimple
-        (
-        filter->handle,
-        0,
-        &KSPROPSETID_Pin,
-        KSPROPERTY_PIN_CTYPES,
-        &filter->pinCount,
-        sizeof(filter->pinCount)
-        );
-
-    if( result != paNoError)
-    {
-        goto error;
-    }
-
-    /* Allocate pointer array to hold the pins */
-    filter->pins = (PaWinWdmPin**)PaUtil_AllocateMemory( sizeof(PaWinWdmPin*) * filter->pinCount );
-    if( !filter->pins )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    /* Create all the pins we can */
-    filter->maxInputChannels = 0;
-    filter->maxOutputChannels = 0;
-    filter->bestSampleRate = 0;
-
-    valid = 0;
-    for(pinId = 0; pinId < filter->pinCount; pinId++)
-    {
-        /* Create the pin with this Id */
-        PaWinWdmPin* newPin;
-        newPin = PinNew(filter, pinId, &result);
-        if( result == paInsufficientMemory )
-            goto error;
-        if( newPin != NULL )
-        {
-            filter->pins[pinId] = newPin;
-            valid = 1;
-
-            /* Get the max output channel count */
-            if(( newPin->dataFlow == KSPIN_DATAFLOW_IN ) &&
-                (( newPin->communication == KSPIN_COMMUNICATION_SINK) ||
-                 ( newPin->communication == KSPIN_COMMUNICATION_BOTH)))
-            {
-                if(newPin->maxChannels > filter->maxOutputChannels)
-                    filter->maxOutputChannels = newPin->maxChannels;
-                filter->formats |= newPin->formats;
-            }
-            /* Get the max input channel count */
-            if(( newPin->dataFlow == KSPIN_DATAFLOW_OUT ) &&
-                (( newPin->communication == KSPIN_COMMUNICATION_SINK) ||
-                 ( newPin->communication == KSPIN_COMMUNICATION_BOTH)))
-            {
-                if(newPin->maxChannels > filter->maxInputChannels)
-                    filter->maxInputChannels = newPin->maxChannels;
-                filter->formats |= newPin->formats;
-            }
-
-            if(newPin->bestSampleRate > filter->bestSampleRate)
-            {
-                filter->bestSampleRate = newPin->bestSampleRate;
-            }
-        }
-    }
-
-    if(( filter->maxInputChannels == 0) && ( filter->maxOutputChannels == 0))
-    {
-        /* No input or output... not valid */
-        valid = 0;
-    }
-
-    if( !valid )
-    {
-        /* No valid pin was found on this filter so we destroy it */
-        result = paDeviceUnavailable;
-        goto error;
-    }
-
-    /* Close the filter handle for now
-     * It will be opened later when needed */
-    FilterRelease(filter);
-
-    *error = paNoError;
-    return filter;
-
-error:
-    /*
-    Error cleanup
-    */
-    if( filter )
-    {
-        for( pinId = 0; pinId < filter->pinCount; pinId++ )
-            PinFree(filter->pins[pinId]);
-        PaUtil_FreeMemory( filter->pins );
-        if( filter->handle )
-            CloseHandle( filter->handle );
-        PaUtil_FreeMemory( filter );
-    }
-    *error = result;
-    return NULL;
-}
-
-/**
- * Free a previously created filter
- */
-static void FilterFree(PaWinWdmFilter* filter)
-{
-    int pinId;
-    PA_LOGL_;
-    if( filter )
-    {
-        for( pinId = 0; pinId < filter->pinCount; pinId++ )
-            PinFree(filter->pins[pinId]);
-        PaUtil_FreeMemory( filter->pins );
-        if( filter->handle )
-            CloseHandle( filter->handle );
-        PaUtil_FreeMemory( filter );
-    }
-    PA_LOGE_;
-}
-
-/**
- * Reopen the filter handle if necessary so it can be used
- **/
-static PaError FilterUse(PaWinWdmFilter* filter)
-{
-    assert( filter );
-
-    PA_LOGE_;
-    if( filter->handle == NULL )
-    {
-        /* Open the filter */
-        filter->handle = CreateFile(
-            filter->filterName,
-            GENERIC_READ | GENERIC_WRITE,
-            0,
-            NULL,
-            OPEN_EXISTING,
-            FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
-            NULL);
-
-        if( filter->handle == NULL )
-        {
-            return paDeviceUnavailable;
-        }
-    }
-    filter->usageCount++;
-    PA_LOGL_;
-    return paNoError;
-}
-
-/**
- * Release the filter handle if nobody is using it
- **/
-static void FilterRelease(PaWinWdmFilter* filter)
-{
-    assert( filter );
-    assert( filter->usageCount > 0 );
-
-    PA_LOGE_;
-    filter->usageCount--;
-    if( filter->usageCount == 0 )
-    {
-        if( filter->handle != NULL )
-        {
-            CloseHandle( filter->handle );
-            filter->handle = NULL;
-        }
-    }
-    PA_LOGL_;
-}
-
-/**
- * Create a render (playback) Pin using the supplied format
- **/
-static PaWinWdmPin* FilterCreateRenderPin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error)
-{
-    PaError result;
-    PaWinWdmPin* pin;
-
-    assert( filter );
-
-    pin = FilterFindViableRenderPin(filter,wfex,&result);
-    if(!pin)
-    {
-        goto error;
-    }
-    result = PinSetFormat(pin,wfex);
-    if( result != paNoError )
-    {
-        goto error;
-    }
-    result = PinInstantiate(pin);
-    if( result != paNoError )
-    {
-        goto error;
-    }
-
-    *error = paNoError;
-    return pin;
-
-error:
-    *error = result;
-    return NULL;
-}
-
-/**
- * Find a pin that supports the given format
- **/
-static PaWinWdmPin* FilterFindViableRenderPin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error)
-{
-    int pinId;
-    PaWinWdmPin*  pin;
-    PaError result = paDeviceUnavailable;
-    *error = paNoError;
-
-    assert( filter );
-
-    for( pinId = 0; pinId<filter->pinCount; pinId++ )
-    {
-        pin = filter->pins[pinId];
-        if( pin != NULL )
-        {
-            if(( pin->dataFlow == KSPIN_DATAFLOW_IN ) &&
-                (( pin->communication == KSPIN_COMMUNICATION_SINK) ||
-                 ( pin->communication == KSPIN_COMMUNICATION_BOTH)))
-            {
-                result = PinIsFormatSupported( pin, wfex );
-                if( result == paNoError )
-                {
-                    return pin;
-                }
-            }
-        }
-    }
-
-    *error = result;
-    return NULL;
-}
-
-/**
- * Check if there is a pin that should playback
- * with the supplied format
- **/
-static PaError FilterCanCreateRenderPin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex)
-{
-    PaWinWdmPin* pin;
-    PaError result;
-
-    assert ( filter );
-
-    pin = FilterFindViableRenderPin(filter,wfex,&result);
-    /* result will be paNoError if pin found
-     * or else an error code indicating what is wrong with the format
-     **/
-    return result;
-}
-
-/**
- * Create a capture (record) Pin using the supplied format
- **/
-static PaWinWdmPin* FilterCreateCapturePin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error)
-{
-    PaError result;
-    PaWinWdmPin* pin;
-
-    assert( filter );
-
-    pin = FilterFindViableCapturePin(filter,wfex,&result);
-    if(!pin)
-    {
-        goto error;
-    }
-
-    result = PinSetFormat(pin,wfex);
-    if( result != paNoError )
-    {
-        goto error;
-    }
-
-    result = PinInstantiate(pin);
-    if( result != paNoError )
-    {
-        goto error;
-    }
-
-    *error = paNoError;
-    return pin;
-
-error:
-    *error = result;
-    return NULL;
-}
-
-/**
- * Find a capture pin that supports the given format
- **/
-static PaWinWdmPin* FilterFindViableCapturePin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex,
-    PaError* error)
-{
-    int pinId;
-    PaWinWdmPin*  pin;
-    PaError result = paDeviceUnavailable;
-    *error = paNoError;
-
-    assert( filter );
-
-    for( pinId = 0; pinId<filter->pinCount; pinId++ )
-    {
-        pin = filter->pins[pinId];
-        if( pin != NULL )
-        {
-            if(( pin->dataFlow == KSPIN_DATAFLOW_OUT ) &&
-                (( pin->communication == KSPIN_COMMUNICATION_SINK) ||
-                 ( pin->communication == KSPIN_COMMUNICATION_BOTH)))
-            {
-                result = PinIsFormatSupported( pin, wfex );
-                if( result == paNoError )
-                {
-                    return pin;
-                }
-            }
-        }
-    }
-
-    *error = result;
-    return NULL;
-}
-
-/**
- * Check if there is a pin that should playback
- * with the supplied format
- **/
-static PaError FilterCanCreateCapturePin(PaWinWdmFilter* filter,
-    const WAVEFORMATEX* wfex)
-{
-    PaWinWdmPin* pin;
-    PaError result;
-
-    assert ( filter );
-
-    pin = FilterFindViableCapturePin(filter,wfex,&result);
-    /* result will be paNoError if pin found
-     * or else an error code indicating what is wrong with the format
-     **/
-    return result;
-}
-
-/**
- * Build the list of available filters
- * Use the SetupDi API to enumerate all devices in the KSCATEGORY_AUDIO which 
- * have a KSCATEGORY_RENDER or KSCATEGORY_CAPTURE alias. For each of these 
- * devices initialise a PaWinWdmFilter structure by calling our NewFilter() 
- * function. We enumerate devices twice, once to count how many there are, 
- * and once to initialize the PaWinWdmFilter structures.
- */
-static PaError BuildFilterList(PaWinWdmHostApiRepresentation* wdmHostApi)
-{
-    PaError result = paNoError;
-    HDEVINFO handle = NULL;
-    int device;
-    int invalidDevices;
-    int slot;
-    SP_DEVICE_INTERFACE_DATA interfaceData;
-    SP_DEVICE_INTERFACE_DATA aliasData;
-    SP_DEVINFO_DATA devInfoData;
-    int noError;
-    const int sizeInterface = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) + (MAX_PATH * sizeof(WCHAR));
-    unsigned char interfaceDetailsArray[sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) + (MAX_PATH * sizeof(WCHAR))];
-    SP_DEVICE_INTERFACE_DETAIL_DATA* devInterfaceDetails = (SP_DEVICE_INTERFACE_DETAIL_DATA*)interfaceDetailsArray;
-    TCHAR friendlyName[MAX_PATH];
-    HKEY hkey;
-    DWORD sizeFriendlyName;
-    DWORD type;
-    PaWinWdmFilter* newFilter;
-    GUID* category = (GUID*)&KSCATEGORY_AUDIO;
-    GUID* alias_render = (GUID*)&KSCATEGORY_RENDER;
-    GUID* alias_capture = (GUID*)&KSCATEGORY_CAPTURE;
-    DWORD hasAlias;
-
-    PA_LOGE_;
-
-    devInterfaceDetails->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
-
-    /* Open a handle to search for devices (filters) */
-    handle = SetupDiGetClassDevs(category,NULL,NULL,DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
-    if( handle == NULL )
-    {
-        return paUnanticipatedHostError;
-    }
-    PA_DEBUG(("Setup called\n"));
-
-    /* First let's count the number of devices so we can allocate a list */
-    invalidDevices = 0;
-    for( device = 0;;device++ )
-    {
-        interfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
-        interfaceData.Reserved = 0;
-        aliasData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
-        aliasData.Reserved = 0;
-        noError = SetupDiEnumDeviceInterfaces(handle,NULL,category,device,&interfaceData);
-        PA_DEBUG(("Enum called\n"));
-        if( !noError )
-            break; /* No more devices */
-
-        /* Check this one has the render or capture alias */
-        hasAlias = 0;
-        noError = SetupDiGetDeviceInterfaceAlias(handle,&interfaceData,alias_render,&aliasData);
-        PA_DEBUG(("noError = %d\n",noError));
-        if(noError)
-        {
-            if(aliasData.Flags && (!(aliasData.Flags & SPINT_REMOVED)))
-            {
-                PA_DEBUG(("Device %d has render alias\n",device));
-                hasAlias |= 1; /* Has render alias */
-            }
-            else
-            {
-                PA_DEBUG(("Device %d has no render alias\n",device));
-            }
-        }
-        noError = SetupDiGetDeviceInterfaceAlias(handle,&interfaceData,alias_capture,&aliasData);
-        if(noError)
-        {
-            if(aliasData.Flags && (!(aliasData.Flags & SPINT_REMOVED)))
-            {
-                PA_DEBUG(("Device %d has capture alias\n",device));
-                hasAlias |= 2; /* Has capture alias */
-            }
-            else
-            {
-                PA_DEBUG(("Device %d has no capture alias\n",device));
-            }
-        }
-        if(!hasAlias)
-            invalidDevices++; /* This was not a valid capture or render audio device */
-
-    }
-    /* Remember how many there are */
-    wdmHostApi->filterCount = device-invalidDevices;
-
-    PA_DEBUG(("Interfaces found: %d\n",device-invalidDevices));
-
-    /* Now allocate the list of pointers to devices */
-    wdmHostApi->filters  = (PaWinWdmFilter**)PaUtil_AllocateMemory( sizeof(PaWinWdmFilter*) * device );
-    if( !wdmHostApi->filters )
-    {
-        if(handle != NULL)
-            SetupDiDestroyDeviceInfoList(handle);
-        return paInsufficientMemory;
-    }
-
-    /* Now create filter objects for each interface found */
-    slot = 0;
-    for( device = 0;;device++ )
-    {
-        interfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
-        interfaceData.Reserved = 0;
-        aliasData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
-        aliasData.Reserved = 0;
-        devInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
-        devInfoData.Reserved = 0;
-
-        noError = SetupDiEnumDeviceInterfaces(handle,NULL,category,device,&interfaceData);
-        if( !noError )
-            break; /* No more devices */
-
-        /* Check this one has the render or capture alias */
-        hasAlias = 0;
-        noError = SetupDiGetDeviceInterfaceAlias(handle,&interfaceData,alias_render,&aliasData);
-        if(noError)
-        {
-            if(aliasData.Flags && (!(aliasData.Flags & SPINT_REMOVED)))
-            {
-                PA_DEBUG(("Device %d has render alias\n",device));
-                hasAlias |= 1; /* Has render alias */
-            }
-        }
-        noError = SetupDiGetDeviceInterfaceAlias(handle,&interfaceData,alias_capture,&aliasData);
-        if(noError)
-        {
-            if(aliasData.Flags && (!(aliasData.Flags & SPINT_REMOVED)))
-            {
-                PA_DEBUG(("Device %d has capture alias\n",device));
-                hasAlias |= 2; /* Has capture alias */
-            }
-        }
-        if(!hasAlias)
-            continue; /* This was not a valid capture or render audio device */
-
-        noError = SetupDiGetDeviceInterfaceDetail(handle,&interfaceData,devInterfaceDetails,sizeInterface,NULL,&devInfoData);
-        if( noError )
-        {
-            /* Try to get the "friendly name" for this interface */
-            sizeFriendlyName = sizeof(friendlyName);
-            /* Fix contributed by Ben Allison
-             * Removed KEY_SET_VALUE from flags on following call
-             * as its causes failure when running without admin rights
-             * and it was not required */
-            hkey=SetupDiOpenDeviceInterfaceRegKey(handle,&interfaceData,0,KEY_QUERY_VALUE);
-            if(hkey!=INVALID_HANDLE_VALUE)
-            {
-                noError = RegQueryValueEx(hkey,TEXT("FriendlyName"),0,&type,(BYTE*)friendlyName,&sizeFriendlyName);
-                if( noError == ERROR_SUCCESS )
-                {
-                    PA_DEBUG(("Interface %d, Name: %s\n",device,friendlyName));
-                    RegCloseKey(hkey);
-                }
-                else
-                {
-                    friendlyName[0] = 0;
-                }
-            }
-            newFilter = FilterNew(devInterfaceDetails->DevicePath,friendlyName,&result);
-            if( result == paNoError )
-            {
-                PA_DEBUG(("Filter created\n"));
-                wdmHostApi->filters[slot] = newFilter;
-                slot++;
-            }
-            else
-            {
-                PA_DEBUG(("Filter NOT created\n"));
-                /* As there are now less filters than we initially thought
-                 * we must reduce the count by one */
-                wdmHostApi->filterCount--;
-            }
-        }
-    }
-
-    /* Clean up */
-    if(handle != NULL)
-        SetupDiDestroyDeviceInfoList(handle);
-
-    return paNoError;
-}
-
-PaError PaWinWdm_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    int i, deviceCount;
-    PaWinWdmHostApiRepresentation *wdmHostApi;
-    PaWinWdmDeviceInfo *deviceInfoArray;
-    PaWinWdmFilter* pFilter;
-    PaWinWdmDeviceInfo *wdmDeviceInfo;
-    PaDeviceInfo *deviceInfo;
-
-    PA_LOGE_;
-
-    /*
-    Attempt to load the KSUSER.DLL without which we cannot create pins
-    We will unload this on termination
-    */
-    if(DllKsUser == NULL)
-    {
-        DllKsUser = LoadLibrary(TEXT("ksuser.dll"));
-        if(DllKsUser == NULL)
-            goto error;
-    }
-
-    FunctionKsCreatePin = (KSCREATEPIN*)GetProcAddress(DllKsUser, "KsCreatePin");
-    if(FunctionKsCreatePin == NULL)
-        goto error;
-
-    wdmHostApi = (PaWinWdmHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaWinWdmHostApiRepresentation) );
-    if( !wdmHostApi )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    wdmHostApi->allocations = PaUtil_CreateAllocationGroup();
-    if( !wdmHostApi->allocations )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    result = BuildFilterList( wdmHostApi );
-    if( result != paNoError )
-    {
-        goto error;
-    }
-    deviceCount = wdmHostApi->filterCount;
-
-    *hostApi = &wdmHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paWDMKS;
-    (*hostApi)->info.name = "Windows WDM-KS";
-    (*hostApi)->info.defaultInputDevice = paNoDevice;
-    (*hostApi)->info.defaultOutputDevice = paNoDevice;
-
-    if( deviceCount > 0 )
-    {
-        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-               wdmHostApi->allocations, sizeof(PaWinWdmDeviceInfo*) * deviceCount );
-        if( !(*hostApi)->deviceInfos )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        /* allocate all device info structs in a contiguous block */
-        deviceInfoArray = (PaWinWdmDeviceInfo*)PaUtil_GroupAllocateMemory(
-                wdmHostApi->allocations, sizeof(PaWinWdmDeviceInfo) * deviceCount );
-        if( !deviceInfoArray )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        for( i=0; i < deviceCount; ++i )
-        {
-            wdmDeviceInfo = &deviceInfoArray[i];
-            deviceInfo = &wdmDeviceInfo->inheritedDeviceInfo;
-            pFilter = wdmHostApi->filters[i];
-            if( pFilter == NULL )
-                continue;
-            wdmDeviceInfo->filter = pFilter;
-            deviceInfo->structVersion = 2;
-            deviceInfo->hostApi = hostApiIndex;
-            deviceInfo->name = (char*)pFilter->friendlyName;
-            PA_DEBUG(("Device found name: %s\n",(char*)pFilter->friendlyName));
-            deviceInfo->maxInputChannels = pFilter->maxInputChannels;
-            if(deviceInfo->maxInputChannels > 0)
-            {
-                /* Set the default input device to the first device we find with
-                 * more than zero input channels
-                 **/
-                if((*hostApi)->info.defaultInputDevice == paNoDevice)
-                {
-                    (*hostApi)->info.defaultInputDevice = i;
-                }
-            }
-
-            deviceInfo->maxOutputChannels = pFilter->maxOutputChannels;
-            if(deviceInfo->maxOutputChannels > 0)
-            {
-                /* Set the default output device to the first device we find with
-                 * more than zero output channels
-                 **/
-                if((*hostApi)->info.defaultOutputDevice == paNoDevice)
-                {
-                    (*hostApi)->info.defaultOutputDevice = i;
-                }
-            }
-
-            /* These low values are not very useful because
-             * a) The lowest latency we end up with can depend on many factors such
-             *    as the device buffer sizes/granularities, sample rate, channels and format
-             * b) We cannot know the device buffer sizes until we try to open/use it at
-             *    a particular setting
-             * So: we give 512x48000Hz frames as the default low input latency
-             **/
-            deviceInfo->defaultLowInputLatency = (512.0/48000.0);
-            deviceInfo->defaultLowOutputLatency = (512.0/48000.0);
-            deviceInfo->defaultHighInputLatency = (4096.0/48000.0);
-            deviceInfo->defaultHighOutputLatency = (4096.0/48000.0);
-            deviceInfo->defaultSampleRate = (double)(pFilter->bestSampleRate);
-
-            (*hostApi)->deviceInfos[i] = deviceInfo;
-        }
-    }
-
-    (*hostApi)->info.deviceCount = deviceCount;
-
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PaUtil_InitializeStreamInterface( &wdmHostApi->callbackStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &wdmHostApi->blockingStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );
-
-    PA_LOGL_;
-    return result;
-
-error:
-    if( DllKsUser != NULL )
-    {
-        FreeLibrary( DllKsUser );
-        DllKsUser = NULL;
-    }
-
-    if( wdmHostApi )
-    {
-        PaUtil_FreeMemory( wdmHostApi->filters );
-        if( wdmHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( wdmHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( wdmHostApi->allocations );
-        }
-        PaUtil_FreeMemory( wdmHostApi );
-    }
-    PA_LOGL_;
-    return result;
-}
-
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
-    int i;
-    PA_LOGE_;
-
-    if( wdmHostApi->filters )
-    {
-        for( i=0; i<wdmHostApi->filterCount; i++)
-        {
-            if( wdmHostApi->filters[i] != NULL )
-            {
-                FilterFree( wdmHostApi->filters[i] );
-                wdmHostApi->filters[i] = NULL;
-            }
-        }
-    }
-    PaUtil_FreeMemory( wdmHostApi->filters );
-    if( wdmHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( wdmHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( wdmHostApi->allocations );
-    }
-    PaUtil_FreeMemory( wdmHostApi );
-    PA_LOGL_;
-}
-
-static void FillWFEXT( WAVEFORMATEXTENSIBLE* pwfext, PaSampleFormat sampleFormat, double sampleRate, int channelCount)
-{
-    PA_LOGE_;
-    PA_DEBUG(( "sampleFormat = %lx\n" , sampleFormat ));
-    PA_DEBUG(( "sampleRate = %f\n" , sampleRate ));
-    PA_DEBUG(( "chanelCount = %d\n", channelCount ));
-
-    pwfext->Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
-    pwfext->Format.nChannels = channelCount;
-    pwfext->Format.nSamplesPerSec = (int)sampleRate;
-    if(channelCount == 1)
-        pwfext->dwChannelMask = KSAUDIO_SPEAKER_DIRECTOUT;
-    else
-        pwfext->dwChannelMask = KSAUDIO_SPEAKER_STEREO;
-    if(sampleFormat == paFloat32)
-    {
-        pwfext->Format.nBlockAlign = channelCount * 4;
-        pwfext->Format.wBitsPerSample = 32;
-        pwfext->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX);
-        pwfext->Samples.wValidBitsPerSample = 32;
-        pwfext->SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
-    }
-    else if(sampleFormat == paInt32)
-    {
-        pwfext->Format.nBlockAlign = channelCount * 4;
-        pwfext->Format.wBitsPerSample = 32;
-        pwfext->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX);
-        pwfext->Samples.wValidBitsPerSample = 32;
-        pwfext->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
-    }
-    else if(sampleFormat == paInt24)
-    {
-        pwfext->Format.nBlockAlign = channelCount * 3;
-        pwfext->Format.wBitsPerSample = 24;
-        pwfext->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX);
-        pwfext->Samples.wValidBitsPerSample = 24;
-        pwfext->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
-    }
-    else if(sampleFormat == paInt16)
-    {
-        pwfext->Format.nBlockAlign = channelCount * 2;
-        pwfext->Format.wBitsPerSample = 16;
-        pwfext->Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE)-sizeof(WAVEFORMATEX);
-        pwfext->Samples.wValidBitsPerSample = 16;
-        pwfext->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
-    }
-    pwfext->Format.nAvgBytesPerSec = pwfext->Format.nSamplesPerSec * pwfext->Format.nBlockAlign;
-
-    PA_LOGL_;
-}
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
-    PaWinWdmFilter* pFilter;
-    int result = paFormatIsSupported;
-    WAVEFORMATEXTENSIBLE wfx;
-
-    PA_LOGE_;
-
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( inputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support inputChannelCount */
-        if( inputChannelCount > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        if( inputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-        /* Check that the input format is supported */
-        FillWFEXT(&wfx,paInt16,sampleRate,inputChannelCount);
-
-        pFilter = wdmHostApi->filters[inputParameters->device];
-        result = FilterCanCreateCapturePin(pFilter,(const WAVEFORMATEX*)&wfx);
-        if( result != paNoError )
-        {
-            /* Try a WAVE_FORMAT_PCM instead */
-            wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-            wfx.Format.cbSize = 0;
-            wfx.Samples.wValidBitsPerSample = 0;
-            wfx.dwChannelMask = 0;
-            wfx.SubFormat = GUID_NULL;
-            result = FilterCanCreateCapturePin(pFilter,(const WAVEFORMATEX*)&wfx);
-            if( result != paNoError )
-                 return result;
-        }
-    }
-    else
-    {
-        inputChannelCount = 0;
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( outputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support outputChannelCount */
-        if( outputChannelCount > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        if( outputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-        /* Check that the output format is supported */
-        FillWFEXT(&wfx,paInt16,sampleRate,outputChannelCount);
-
-        pFilter = wdmHostApi->filters[outputParameters->device];
-        result = FilterCanCreateRenderPin(pFilter,(const WAVEFORMATEX*)&wfx);
-        if( result != paNoError )
-        {
-            /* Try a WAVE_FORMAT_PCM instead */
-            wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-            wfx.Format.cbSize = 0;
-            wfx.Samples.wValidBitsPerSample = 0;
-            wfx.dwChannelMask = 0;
-            wfx.SubFormat = GUID_NULL;
-            result = FilterCanCreateRenderPin(pFilter,(const WAVEFORMATEX*)&wfx);
-            if( result != paNoError )
-                 return result;
-        }
-
-    }
-    else
-    {
-        outputChannelCount = 0;
-    }
-
-    /*
-        IMPLEMENT ME:
-
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported if necessary
-
-            - check that the device supports sampleRate
-
-        Because the buffer adapter handles conversion between all standard
-        sample formats, the following checks are only required if paCustomFormat
-        is implemented, or under some other unusual conditions.
-
-            - check that input device can support inputSampleFormat, or that
-                we have the capability to convert from inputSampleFormat to
-                a native format
-
-            - check that output device can support outputSampleFormat, or that
-                we have the capability to convert from outputSampleFormat to
-                a native format
-    */
-    if((inputChannelCount == 0)&&(outputChannelCount == 0))
-            result = paSampleFormatNotSupported; /* Not right error */
-
-    PA_LOGL_;
-    return result;
-}
-
-/* see pa_hostapi.h for a list of validity guarantees made about OpenStream parameters */
-
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result = paNoError;
-    PaWinWdmHostApiRepresentation *wdmHostApi = (PaWinWdmHostApiRepresentation*)hostApi;
-    PaWinWdmStream *stream = 0;
-    /* unsigned long framesPerHostBuffer; these may not be equivalent for all implementations */
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
-    int userInputChannels,userOutputChannels;
-    int size;
-    PaWinWdmFilter* pFilter;
-    WAVEFORMATEXTENSIBLE wfx;
-
-    PA_LOGE_;
-    PA_DEBUG(("OpenStream:sampleRate = %f\n",sampleRate));
-    PA_DEBUG(("OpenStream:framesPerBuffer = %lu\n",framesPerBuffer));
-
-    if( inputParameters )
-    {
-        userInputChannels = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that input device can support stream->userInputChannels */
-        if( userInputChannels > hostApi->deviceInfos[ inputParameters->device ]->maxInputChannels )
-            return paInvalidChannelCount;
-
-        /* validate inputStreamInfo */
-        if( inputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-    }
-    else
-    {
-        userInputChannels = 0;
-        inputSampleFormat = hostInputSampleFormat = paInt16; /* Surpress 'uninitialised var' warnings. */
-    }
-
-    if( outputParameters )
-    {
-        userOutputChannels = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-
-        /* unless alternate device specification is supported, reject the use of
-            paUseHostApiSpecificDeviceSpecification */
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification )
-            return paInvalidDevice;
-
-        /* check that output device can support stream->userInputChannels */
-        if( userOutputChannels > hostApi->deviceInfos[ outputParameters->device ]->maxOutputChannels )
-            return paInvalidChannelCount;
-
-        /* validate outputStreamInfo */
-        if( outputParameters->hostApiSpecificStreamInfo )
-            return paIncompatibleHostApiSpecificStreamInfo; /* this implementation doesn't use custom stream info */
-
-    }
-    else
-    {
-        userOutputChannels = 0;
-        outputSampleFormat = hostOutputSampleFormat = paInt16; /* Surpress 'uninitialized var' warnings. */
-    }
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-    stream = (PaWinWdmStream*)PaUtil_AllocateMemory( sizeof(PaWinWdmStream) );
-    if( !stream )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-    /* Zero the stream object */
-    /* memset((void*)stream,0,sizeof(PaWinWdmStream)); */
-
-    if( streamCallback )
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &wdmHostApi->callbackStreamInterface, streamCallback, userData );
-    }
-    else
-    {
-        PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                               &wdmHostApi->blockingStreamInterface, streamCallback, userData );
-    }
-
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-    /* Instantiate the input pin if necessary */
-    if(userInputChannels > 0)
-    {
-        result = paSampleFormatNotSupported;
-        pFilter = wdmHostApi->filters[inputParameters->device];
-        stream->userInputChannels = userInputChannels;
-
-        if(((inputSampleFormat & ~paNonInterleaved) & pFilter->formats) != 0)
-        {   /* inputSampleFormat is supported, so try to use it */
-            hostInputSampleFormat = inputSampleFormat;
-            FillWFEXT(&wfx, hostInputSampleFormat, sampleRate, stream->userInputChannels);
-            stream->bytesPerInputFrame = wfx.Format.nBlockAlign;
-            stream->recordingPin = FilterCreateCapturePin(pFilter, (const WAVEFORMATEX*)&wfx, &result);
-            stream->deviceInputChannels = stream->userInputChannels;
-        }
-        
-        if(result != paNoError)
-        {   /* Search through all PaSampleFormats to find one that works */
-            hostInputSampleFormat = paFloat32;
-
-            do {
-                FillWFEXT(&wfx, hostInputSampleFormat, sampleRate, stream->userInputChannels);
-                stream->bytesPerInputFrame = wfx.Format.nBlockAlign;
-                stream->recordingPin = FilterCreateCapturePin(pFilter, (const WAVEFORMATEX*)&wfx, &result);
-                stream->deviceInputChannels = stream->userInputChannels;
-                
-                if(stream->recordingPin == NULL) result = paSampleFormatNotSupported;
-                if(result != paNoError)    hostInputSampleFormat <<= 1;
-            }
-            while(result != paNoError && hostInputSampleFormat <= paUInt8);
-        }
-
-        if(result != paNoError)
-        {    /* None of the PaSampleFormats worked.  Set the hostInputSampleFormat to the best fit
-             * and try a PCM format.
-             **/
-            hostInputSampleFormat =
-                PaUtil_SelectClosestAvailableFormat( pFilter->formats, inputSampleFormat );
-
-            /* Try a WAVE_FORMAT_PCM instead */
-            wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-            wfx.Format.cbSize = 0;
-            wfx.Samples.wValidBitsPerSample = 0;
-            wfx.dwChannelMask = 0;
-            wfx.SubFormat = GUID_NULL;
-            stream->recordingPin = FilterCreateCapturePin(pFilter,(const WAVEFORMATEX*)&wfx,&result);
-            if(stream->recordingPin == NULL) result = paSampleFormatNotSupported;
-        }
-
-        if( result != paNoError )
-        {
-            /* Some or all KS devices can only handle the exact number of channels
-             * they specify. But PortAudio clients expect to be able to
-             * at least specify mono I/O on a multi-channel device
-             * If this is the case, then we will do the channel mapping internally
-             **/
-            if( stream->userInputChannels < pFilter->maxInputChannels )
-            {
-                FillWFEXT(&wfx,hostInputSampleFormat,sampleRate,pFilter->maxInputChannels);
-                stream->bytesPerInputFrame = wfx.Format.nBlockAlign;
-                stream->recordingPin = FilterCreateCapturePin(pFilter,(const WAVEFORMATEX*)&wfx,&result);
-                stream->deviceInputChannels = pFilter->maxInputChannels;
-
-                if( result != paNoError )
-                {
-                    /* Try a WAVE_FORMAT_PCM instead */
-                    wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-                    wfx.Format.cbSize = 0;
-                    wfx.Samples.wValidBitsPerSample = 0;
-                    wfx.dwChannelMask = 0;
-                    wfx.SubFormat = GUID_NULL;
-                    stream->recordingPin = FilterCreateCapturePin(pFilter,(const WAVEFORMATEX*)&wfx,&result);
-                }
-            }
-        }
-
-        if(stream->recordingPin == NULL)
-        {
-            goto error;
-        }
-
-        switch(hostInputSampleFormat)
-        {
-            case paInt16: stream->inputSampleSize = 2; break;
-            case paInt24: stream->inputSampleSize = 3; break;
-            case paInt32:
-            case paFloat32:    stream->inputSampleSize = 4; break;
-        }
-
-        stream->recordingPin->frameSize /= stream->bytesPerInputFrame;
-        PA_DEBUG(("Pin output frames: %d\n",stream->recordingPin->frameSize));
-    }
-    else
-    {
-        stream->recordingPin = NULL;
-        stream->bytesPerInputFrame = 0;
-    }
-
-    /* Instantiate the output pin if necessary */
-    if(userOutputChannels > 0)
-    {
-        result = paSampleFormatNotSupported;
-        pFilter = wdmHostApi->filters[outputParameters->device];
-        stream->userOutputChannels = userOutputChannels;
-
-        if(((outputSampleFormat & ~paNonInterleaved) & pFilter->formats) != 0)
-        {
-            hostOutputSampleFormat = outputSampleFormat;
-            FillWFEXT(&wfx,hostOutputSampleFormat,sampleRate,stream->userOutputChannels);
-            stream->bytesPerOutputFrame = wfx.Format.nBlockAlign;
-            stream->playbackPin = FilterCreateRenderPin(pFilter,(WAVEFORMATEX*)&wfx,&result);
-            stream->deviceOutputChannels = stream->userOutputChannels;
-        }
-
-        if(result != paNoError)
-        {
-            hostOutputSampleFormat = paFloat32;
-
-            do {
-                FillWFEXT(&wfx,hostOutputSampleFormat,sampleRate,stream->userOutputChannels);
-                stream->bytesPerOutputFrame = wfx.Format.nBlockAlign;
-                stream->playbackPin = FilterCreateRenderPin(pFilter,(WAVEFORMATEX*)&wfx,&result);
-                stream->deviceOutputChannels = stream->userOutputChannels;
-
-                if(stream->playbackPin == NULL) result = paSampleFormatNotSupported;
-                if(result != paNoError)    hostOutputSampleFormat <<= 1;
-            }
-            while(result != paNoError && hostOutputSampleFormat <= paUInt8);
-        }
-
-        if(result != paNoError)
-        {
-            hostOutputSampleFormat =
-                PaUtil_SelectClosestAvailableFormat( pFilter->formats, outputSampleFormat );
-       
-            /* Try a WAVE_FORMAT_PCM instead */
-            wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-            wfx.Format.cbSize = 0;
-            wfx.Samples.wValidBitsPerSample = 0;
-            wfx.dwChannelMask = 0;
-            wfx.SubFormat = GUID_NULL;
-            stream->playbackPin = FilterCreateRenderPin(pFilter,(WAVEFORMATEX*)&wfx,&result);
-            if(stream->playbackPin == NULL) result = paSampleFormatNotSupported;
-        }
-            
-        if( result != paNoError )
-        {
-            /* Some or all KS devices can only handle the exact number of channels
-             * they specify. But PortAudio clients expect to be able to
-             * at least specify mono I/O on a multi-channel device
-             * If this is the case, then we will do the channel mapping internally
-             **/
-            if( stream->userOutputChannels < pFilter->maxOutputChannels )
-            {
-                FillWFEXT(&wfx,hostOutputSampleFormat,sampleRate,pFilter->maxOutputChannels);
-                stream->bytesPerOutputFrame = wfx.Format.nBlockAlign;
-                stream->playbackPin = FilterCreateRenderPin(pFilter,(const WAVEFORMATEX*)&wfx,&result);
-                stream->deviceOutputChannels = pFilter->maxOutputChannels;
-                if( result != paNoError )
-                {
-                    /* Try a WAVE_FORMAT_PCM instead */
-                    wfx.Format.wFormatTag = WAVE_FORMAT_PCM;
-                    wfx.Format.cbSize = 0;
-                    wfx.Samples.wValidBitsPerSample = 0;
-                    wfx.dwChannelMask = 0;
-                    wfx.SubFormat = GUID_NULL;
-                    stream->playbackPin = FilterCreateRenderPin(pFilter,(const WAVEFORMATEX*)&wfx,&result);
-                }
-            }
-        }
-
-        if(stream->playbackPin == NULL)
-        {
-            goto error;
-        }
-
-        switch(hostOutputSampleFormat)
-        {
-            case paInt16: stream->outputSampleSize = 2; break;
-            case paInt24: stream->outputSampleSize = 3; break;
-            case paInt32:
-            case paFloat32: stream->outputSampleSize = 4; break;
-        }
-
-        stream->playbackPin->frameSize /= stream->bytesPerOutputFrame;
-        PA_DEBUG(("Pin output frames: %d\n",stream->playbackPin->frameSize));
-    }
-    else
-    {
-        stream->playbackPin = NULL;
-        stream->bytesPerOutputFrame = 0;
-    }
-
-    /* Calculate the framesPerHostXxxxBuffer size based upon the suggested latency values */
-
-    /* Record the buffer length */
-    if(inputParameters)
-    {
-        /* Calculate the frames from the user's value - add a bit to round up */
-            stream->framesPerHostIBuffer = (unsigned long)((inputParameters->suggestedLatency*sampleRate)+0.0001);
-        if(stream->framesPerHostIBuffer > (unsigned long)sampleRate)
-        { /* Upper limit is 1 second */
-              stream->framesPerHostIBuffer = (unsigned long)sampleRate;
-        }
-        else if(stream->framesPerHostIBuffer < stream->recordingPin->frameSize)
-        {
-              stream->framesPerHostIBuffer = stream->recordingPin->frameSize;
-        }
-        PA_DEBUG(("Input frames chosen:%ld\n",stream->framesPerHostIBuffer));
-    }
-
-    if(outputParameters)
-    {
-        /* Calculate the frames from the user's value - add a bit to round up */
-        stream->framesPerHostOBuffer = (unsigned long)((outputParameters->suggestedLatency*sampleRate)+0.0001);
-        if(stream->framesPerHostOBuffer > (unsigned long)sampleRate)
-        { /* Upper limit is 1 second */
-                  stream->framesPerHostOBuffer = (unsigned long)sampleRate;
-        }
-        else if(stream->framesPerHostOBuffer < stream->playbackPin->frameSize)
-        {
-              stream->framesPerHostOBuffer = stream->playbackPin->frameSize;
-        }
-        PA_DEBUG(("Output frames chosen:%ld\n",stream->framesPerHostOBuffer));
-    }
-
-    /* Host buffer size is bounded to the largest of the input and output
-    frame sizes */
-
-    result =  PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-              stream->userInputChannels, inputSampleFormat, hostInputSampleFormat,
-              stream->userOutputChannels, outputSampleFormat, hostOutputSampleFormat,
-              sampleRate, streamFlags, framesPerBuffer,
-              max(stream->framesPerHostOBuffer,stream->framesPerHostIBuffer),
-              paUtilBoundedHostBufferSize,
-              streamCallback, userData );
-    if( result != paNoError )
-        goto error;
-
-    stream->streamRepresentation.streamInfo.inputLatency =
-            ((double)stream->framesPerHostIBuffer) / sampleRate;
-    stream->streamRepresentation.streamInfo.outputLatency =
-            ((double)stream->framesPerHostOBuffer) / sampleRate;
-    stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-      PA_DEBUG(("BytesPerInputFrame = %d\n",stream->bytesPerInputFrame));
-      PA_DEBUG(("BytesPerOutputFrame = %d\n",stream->bytesPerOutputFrame));
-
-    /* Allocate all the buffers for host I/O */
-    size = 2 * (stream->framesPerHostIBuffer*stream->bytesPerInputFrame +  stream->framesPerHostOBuffer*stream->bytesPerOutputFrame);
-    PA_DEBUG(("Buffer size = %d\n",size));
-    stream->hostBuffer = (char*)PaUtil_AllocateMemory(size);
-    PA_DEBUG(("Buffer allocated\n"));
-    if( !stream->hostBuffer )
-    {
-        PA_DEBUG(("Cannot allocate host buffer!\n"));
-        result = paInsufficientMemory;
-        goto error;
-    }
-    PA_DEBUG(("Buffer start = %p\n",stream->hostBuffer));
-    /* memset(stream->hostBuffer,0,size); */
-
-    /* Set up the packets */
-    stream->events[0] = CreateEvent(NULL, FALSE, FALSE, NULL);
-    ResetEvent(stream->events[0]); /* Record buffer 1 */
-    stream->events[1] = CreateEvent(NULL, FALSE, FALSE, NULL);
-    ResetEvent(stream->events[1]); /* Record buffer 2 */
-    stream->events[2] = CreateEvent(NULL, FALSE, FALSE, NULL);
-    ResetEvent(stream->events[2]); /* Play buffer 1 */
-    stream->events[3] = CreateEvent(NULL, FALSE, FALSE, NULL);
-    ResetEvent(stream->events[3]); /* Play buffer 2 */
-    stream->events[4] = CreateEvent(NULL, FALSE, FALSE, NULL);
-    ResetEvent(stream->events[4]); /* Abort event */
-    if(stream->userInputChannels > 0)
-    {
-        DATAPACKET *p = &(stream->packets[0]);
-        p->Signal.hEvent = stream->events[0];
-        p->Header.Data = stream->hostBuffer;
-        p->Header.FrameExtent = stream->framesPerHostIBuffer*stream->bytesPerInputFrame;
-        p->Header.DataUsed = 0;
-        p->Header.Size = sizeof(p->Header);
-        p->Header.PresentationTime.Numerator = 1;
-        p->Header.PresentationTime.Denominator = 1;
-
-        p = &(stream->packets[1]);
-        p->Signal.hEvent = stream->events[1];
-        p->Header.Data = stream->hostBuffer + stream->framesPerHostIBuffer*stream->bytesPerInputFrame;
-        p->Header.FrameExtent = stream->framesPerHostIBuffer*stream->bytesPerInputFrame;
-        p->Header.DataUsed = 0;
-        p->Header.Size = sizeof(p->Header);
-        p->Header.PresentationTime.Numerator = 1;
-        p->Header.PresentationTime.Denominator = 1;
-    }
-    if(stream->userOutputChannels > 0)
-    {
-        DATAPACKET *p = &(stream->packets[2]);
-        p->Signal.hEvent = stream->events[2];
-        p->Header.Data = stream->hostBuffer + 2*stream->framesPerHostIBuffer*stream->bytesPerInputFrame;
-        p->Header.FrameExtent = stream->framesPerHostOBuffer*stream->bytesPerOutputFrame;
-        p->Header.DataUsed = stream->framesPerHostOBuffer*stream->bytesPerOutputFrame;
-        p->Header.Size = sizeof(p->Header);
-        p->Header.PresentationTime.Numerator = 1;
-        p->Header.PresentationTime.Denominator = 1;
-    
-        p = &(stream->packets[3]);
-        p->Signal.hEvent = stream->events[3];
-        p->Header.Data = stream->hostBuffer + 2*stream->framesPerHostIBuffer*stream->bytesPerInputFrame + stream->framesPerHostOBuffer*stream->bytesPerOutputFrame;
-        p->Header.FrameExtent = stream->framesPerHostOBuffer*stream->bytesPerOutputFrame;
-        p->Header.DataUsed = stream->framesPerHostOBuffer*stream->bytesPerOutputFrame;
-        p->Header.Size = sizeof(p->Header);
-        p->Header.PresentationTime.Numerator = 1;
-        p->Header.PresentationTime.Denominator = 1;
-    }
-
-    stream->streamStarted = 0;
-    stream->streamActive = 0;
-    stream->streamStop = 0;
-    stream->streamAbort = 0;
-    stream->streamFlags = streamFlags;
-    stream->oldProcessPriority = REALTIME_PRIORITY_CLASS;
-
-    *s = (PaStream*)stream;
-
-    PA_LOGL_;
-    return result;
-
-error:
-    size = 5;
-    while(size--)
-    {
-        if(stream->events[size] != NULL)
-        {
-            CloseHandle(stream->events[size]);
-            stream->events[size] = NULL;
-        }
-    }
-    if(stream->hostBuffer)
-        PaUtil_FreeMemory( stream->hostBuffer );
-
-    if(stream->playbackPin)
-        PinClose(stream->playbackPin);
-    if(stream->recordingPin)
-        PinClose(stream->recordingPin);
-
-    if( stream )
-        PaUtil_FreeMemory( stream );
-
-    PA_LOGL_;
-    return result;
-}
-
-/*
-    When CloseStream() is called, the multi-api layer ensures that
-    the stream has already been stopped or aborted.
-*/
-static PaError CloseStream( PaStream* s )
-{
-    PaError result = paNoError;
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    int size;
-
-    PA_LOGE_;
-
-    assert(!stream->streamStarted);
-    assert(!stream->streamActive);
-
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-    size = 5;
-    while(size--)
-    {
-        if(stream->events[size] != NULL)
-        {
-            CloseHandle(stream->events[size]);
-            stream->events[size] = NULL;
-        }
-    }
-    if(stream->hostBuffer)
-        PaUtil_FreeMemory( stream->hostBuffer );
-
-    if(stream->playbackPin)
-        PinClose(stream->playbackPin);
-    if(stream->recordingPin)
-        PinClose(stream->recordingPin);
-
-    PaUtil_FreeMemory( stream );
-
-    PA_LOGL_;
-    return result;
-}
-
-/*
-Write the supplied packet to the pin
-Asynchronous
-Should return false on success
-*/
-static BOOL PinWrite(HANDLE h, DATAPACKET* p)
-{
-    unsigned long cbReturned = 0;
-    return DeviceIoControl(h,IOCTL_KS_WRITE_STREAM,NULL,0,
-                            &p->Header,p->Header.Size,&cbReturned,&p->Signal);
-}
-
-/*
-Read to the supplied packet from the pin
-Asynchronous
-Should return false on success
-*/
-static BOOL PinRead(HANDLE h, DATAPACKET* p)
-{
-    unsigned long cbReturned = 0;
-    return DeviceIoControl(h,IOCTL_KS_READ_STREAM,NULL,0,
-                            &p->Header,p->Header.Size,&cbReturned,&p->Signal);
-}
-
-/*
-Copy the first interleaved channel of 16 bit data to the other channels
-*/
-static void DuplicateFirstChannelInt16(void* buffer, int channels, int samples)
-{
-    unsigned short* data = (unsigned short*)buffer;
-    int channel;
-    unsigned short sourceSample;
-    while( samples-- )
-    {
-        sourceSample = *data++;
-        channel = channels-1;
-        while( channel-- )
-        {
-            *data++ = sourceSample;
-        }
-    }
-}
-
-/*
-Copy the first interleaved channel of 24 bit data to the other channels
-*/
-static void DuplicateFirstChannelInt24(void* buffer, int channels, int samples)
-{
-    unsigned char* data = (unsigned char*)buffer;
-    int channel;
-    unsigned char sourceSample[3];
-    while( samples-- )
-    {
-        sourceSample[0] = data[0];
-        sourceSample[1] = data[1];
-        sourceSample[2] = data[2];
-        data += 3;
-        channel = channels-1;
-        while( channel-- )
-        {
-            data[0] = sourceSample[0];
-            data[1] = sourceSample[1];
-            data[2] = sourceSample[2];
-            data += 3;
-        }
-    }
-}
-
-/*
-Copy the first interleaved channel of 32 bit data to the other channels
-*/
-static void DuplicateFirstChannelInt32(void* buffer, int channels, int samples)
-{
-    unsigned long* data = (unsigned long*)buffer;
-    int channel;
-    unsigned long sourceSample;
-    while( samples-- )
-    {
-        sourceSample = *data++;
-        channel = channels-1;
-        while( channel-- )
-        {
-            *data++ = sourceSample;
-        }
-    }
-}
-
-static DWORD WINAPI ProcessingThread(LPVOID pParam)
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)pParam;
-    PaStreamCallbackTimeInfo ti;
-    int cbResult = paContinue;
-    int inbuf = 0;
-    int outbuf = 0;
-    int pending = 0;
-    PaError result;
-    unsigned long wait;
-    unsigned long eventSignaled;
-    int fillPlaybuf = 0;
-    int emptyRecordbuf = 0;
-    int framesProcessed;
-    unsigned long timeout;
-    int i;
-    int doChannelCopy;
-    int priming = 0;
-    PaStreamCallbackFlags underover = 0;
-
-    PA_LOGE_;
-
-    ti.inputBufferAdcTime = 0.0;
-    ti.currentTime = 0.0;
-    ti.outputBufferDacTime = 0.0;
-
-    /* Get double buffering going */
-
-    /* Submit buffers */
-    if(stream->playbackPin)
-    {
-        result = PinSetState(stream->playbackPin, KSSTATE_RUN);
-
-        PA_DEBUG(("play state run = %d;",(int)result));
-        SetEvent(stream->events[outbuf+2]);
-        outbuf = (outbuf+1)&1;
-        SetEvent(stream->events[outbuf+2]);
-        outbuf = (outbuf+1)&1;
-        pending += 2;
-        priming += 4;
-    }
-    if(stream->recordingPin)
-    {
-        result = PinSetState(stream->recordingPin, KSSTATE_RUN);
-
-        PA_DEBUG(("recording state run = %d;",(int)result));
-        PinRead(stream->recordingPin->handle,&stream->packets[inbuf]);
-        inbuf = (inbuf+1)&1; /* Increment and wrap */
-        PinRead(stream->recordingPin->handle,&stream->packets[inbuf]);
-        inbuf = (inbuf+1)&1; /* Increment and wrap */
-        /* FIXME - do error checking */
-        pending += 2;
-    }
-    PA_DEBUG(("Out buffer len:%f\n",(2000*stream->framesPerHostOBuffer) / stream->streamRepresentation.streamInfo.sampleRate));
-    PA_DEBUG(("In buffer len:%f\n",(2000*stream->framesPerHostIBuffer) / stream->streamRepresentation.streamInfo.sampleRate));
-    timeout = max(
-       ((2000*(DWORD)stream->framesPerHostOBuffer) / (DWORD)stream->streamRepresentation.streamInfo.sampleRate),
-       ((2000*(DWORD)stream->framesPerHostIBuffer) / (DWORD)stream->streamRepresentation.streamInfo.sampleRate));
-    timeout = max(timeout,1);
-    PA_DEBUG(("Timeout = %ld\n",timeout));
-
-    while(!stream->streamAbort)
-    {
-        fillPlaybuf = 0;
-        emptyRecordbuf = 0;
-
-        /* Wait for next input or output buffer to be finished with*/
-        assert(pending>0);
-
-        if(stream->streamStop)
-        {
-            PA_DEBUG(("ss1:pending=%d ",pending));
-        }
-        wait = WaitForMultipleObjects(5, stream->events, FALSE, 0);
-        if( wait == WAIT_TIMEOUT )
-        {
-            /* No (under|over)flow has ocurred */
-            wait = WaitForMultipleObjects(5, stream->events, FALSE, timeout);
-            eventSignaled = wait - WAIT_OBJECT_0;
-        }
-        else
-        {
-            eventSignaled = wait - WAIT_OBJECT_0;
-            if( eventSignaled < 2 )
-            {
-                underover |= paInputOverflow;
-                PA_DEBUG(("Input overflow\n"));
-            }
-            else if(( eventSignaled < 4 )&&(!priming))
-            {
-                underover |= paOutputUnderflow;
-                PA_DEBUG(("Output underflow\n"));
-            }
-        }
-
-        if(stream->streamStop)
-        {
-            PA_DEBUG(("ss2:wait=%ld",wait));
-        }
-        if(wait == WAIT_FAILED)
-        {
-            PA_DEBUG(("Wait fail = %ld! ",wait));
-            break;
-        }
-        if(wait == WAIT_TIMEOUT)
-        {
-            continue;
-        }
-
-        if(eventSignaled < 2)
-        { /* Recording input buffer has been filled */
-            if(stream->playbackPin)
-            {
-                /* First check if also the next playback buffer has been signaled */
-                wait = WaitForSingleObject(stream->events[outbuf+2],0);
-                if(wait == WAIT_OBJECT_0)
-                {
-                    /* Yes, so do both buffers at same time */
-                    fillPlaybuf = 1;
-                    pending--;
-                    /* Was this an underflow situation? */
-                    if( underover )
-                        underover |= paOutputUnderflow; /* Yes! */
-                }
-            }
-            emptyRecordbuf = 1;
-            pending--;
-        }
-        else if(eventSignaled < 4)
-        { /* Playback output buffer has been emptied */
-            if(stream->recordingPin)
-            {
-                /* First check if also the next recording buffer has been signaled */
-                wait = WaitForSingleObject(stream->events[inbuf],0);
-                if(wait == WAIT_OBJECT_0)
-                { /* Yes, so do both buffers at same time */
-                    emptyRecordbuf = 1;
-                    pending--;
-                    /* Was this an overflow situation? */
-                    if( underover )
-                        underover |= paInputOverflow; /* Yes! */
-                }
-            }
-            fillPlaybuf = 1;
-            pending--;
-        }
-        else
-        {
-            /* Abort event! */
-            assert(stream->streamAbort); /* Should have been set */
-            PA_DEBUG(("ABORTING "));
-            break;
-        }
-        ResetEvent(stream->events[eventSignaled]);
-
-        if(stream->streamStop)
-        {
-            PA_DEBUG(("Stream stop! pending=%d",pending));
-            cbResult = paComplete; /* Stop, but play remaining buffers */
-        }
-
-        /* Do necessary buffer processing (which will invoke user callback if necessary */
-        doChannelCopy = 0;
-        if(cbResult==paContinue)
-        {
-            PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-            if((stream->bufferProcessor.hostInputFrameCount[0] + stream->bufferProcessor.hostInputFrameCount[1]) ==
-                (stream->bufferProcessor.hostOutputFrameCount[0] + stream->bufferProcessor.hostOutputFrameCount[1]) )
-                PaUtil_BeginBufferProcessing(&stream->bufferProcessor,&ti,underover);
-            underover = 0; /* Reset the (under|over)flow status */
-            if(fillPlaybuf)
-            {
-                PaUtil_SetOutputFrameCount(&stream->bufferProcessor,0);
-                if( stream->userOutputChannels == 1 )
-                {
-                    /* Write the single user channel to the first interleaved block */
-                    PaUtil_SetOutputChannel(&stream->bufferProcessor,0,stream->packets[outbuf+2].Header.Data,stream->deviceOutputChannels);
-                    /* We will do a copy to the other channels after the data has been written */
-                    doChannelCopy = 1;
-                }
-                else
-                {
-                    for(i=0;i<stream->userOutputChannels;i++)
-                    {
-                        /* Only write the user output channels. Leave the rest blank */
-                        PaUtil_SetOutputChannel(&stream->bufferProcessor,i,((unsigned char*)(stream->packets[outbuf+2].Header.Data))+(i*stream->outputSampleSize),stream->deviceOutputChannels);
-                    }
-                }
-            }
-            if(emptyRecordbuf)
-            {
-                PaUtil_SetInputFrameCount(&stream->bufferProcessor,stream->packets[inbuf].Header.DataUsed/stream->bytesPerInputFrame);
-                for(i=0;i<stream->userInputChannels;i++)
-                {
-                    /* Only read as many channels as the user wants */
-                    PaUtil_SetInputChannel(&stream->bufferProcessor,i,((unsigned char*)(stream->packets[inbuf].Header.Data))+(i*stream->inputSampleSize),stream->deviceInputChannels);
-                }
-            }
-            /* Only call the EndBufferProcessing function is the total input frames == total output frames */
-            if((stream->bufferProcessor.hostInputFrameCount[0] + stream->bufferProcessor.hostInputFrameCount[1]) ==
-                (stream->bufferProcessor.hostOutputFrameCount[0] + stream->bufferProcessor.hostOutputFrameCount[1]) )
-                framesProcessed = PaUtil_EndBufferProcessing(&stream->bufferProcessor,&cbResult);
-            else framesProcessed = 0;
-            if( doChannelCopy )
-            {
-                /* Copy the first output channel to the other channels */
-                switch(stream->outputSampleSize)
-                {
-                    case 2:
-                        DuplicateFirstChannelInt16(stream->packets[outbuf+2].Header.Data,stream->deviceOutputChannels,stream->framesPerHostOBuffer);
-                        break;
-                    case 3:
-                        DuplicateFirstChannelInt24(stream->packets[outbuf+2].Header.Data,stream->deviceOutputChannels,stream->framesPerHostOBuffer);
-                        break;
-                    case 4:
-                        DuplicateFirstChannelInt32(stream->packets[outbuf+2].Header.Data,stream->deviceOutputChannels,stream->framesPerHostOBuffer);
-                        break;
-                    default:
-                        assert(0); /* Unsupported format! */
-                        break;
-                }
-            }
-            PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed );
-        }
-        else
-        {
-            fillPlaybuf = 0;
-            emptyRecordbuf = 0;
-        }
-            
-        /*
-        if(cbResult != paContinue)
-        {
-            PA_DEBUG(("cbResult=%d, pending=%d:",cbResult,pending));
-        }
-        */
-        /* Submit buffers */
-        if((fillPlaybuf)&&(cbResult!=paAbort))
-        {
-            if(!PinWrite(stream->playbackPin->handle,&stream->packets[outbuf+2]))
-                outbuf = (outbuf+1)&1; /* Increment and wrap */
-            pending++;
-            if( priming )
-                priming--; /* Have to prime twice */
-        }
-        if((emptyRecordbuf)&&(cbResult==paContinue))
-        {
-            stream->packets[inbuf].Header.DataUsed = 0; /* Reset for reuse */
-            PinRead(stream->recordingPin->handle,&stream->packets[inbuf]);
-            inbuf = (inbuf+1)&1; /* Increment and wrap */
-            pending++;
-        }
-        if(pending==0)
-        {
-            PA_DEBUG(("pending==0 finished...;"));
-            break;
-        }
-        if((!stream->playbackPin)&&(cbResult!=paContinue))
-        {
-            PA_DEBUG(("record only cbResult=%d...;",cbResult));
-            break;
-        }
-    }
-
-    PA_DEBUG(("Finished thread"));
-
-    /* Finished, either normally or aborted */
-    if(stream->playbackPin)
-    {
-        result = PinSetState(stream->playbackPin, KSSTATE_PAUSE);
-        result = PinSetState(stream->playbackPin, KSSTATE_STOP);
-    }
-    if(stream->recordingPin)
-    {
-        result = PinSetState(stream->recordingPin, KSSTATE_PAUSE);
-        result = PinSetState(stream->recordingPin, KSSTATE_STOP);
-    }
-
-    stream->streamActive = 0;
-
-    if((!stream->streamStop)&&(!stream->streamAbort))
-    {
-          /* Invoke the user stream finished callback */
-          /* Only do it from here if not being stopped/aborted by user */
-          if( stream->streamRepresentation.streamFinishedCallback != 0 )
-              stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-    stream->streamStop = 0;
-    stream->streamAbort = 0;
-
-    /* Reset process priority if necessary */
-    if(stream->oldProcessPriority != REALTIME_PRIORITY_CLASS)
-    {
-        SetPriorityClass(GetCurrentProcess(),stream->oldProcessPriority);
-        stream->oldProcessPriority = REALTIME_PRIORITY_CLASS;
-    }
-
-    PA_LOGL_;
-    ExitThread(0);
-    return 0;
-}
-
-static PaError StartStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    DWORD dwID;
-    BOOL ret;
-    int size;
-
-    PA_LOGE_;
-
-    stream->streamStop = 0;
-    stream->streamAbort = 0;
-    size = 5;
-    while(size--)
-    {
-        if(stream->events[size] != NULL)
-        {
-            ResetEvent(stream->events[size]);
-        }
-    }
-
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-
-    stream->oldProcessPriority = GetPriorityClass(GetCurrentProcess());
-    /* Uncomment the following line to enable dynamic boosting of the process
-     * priority to real time for best low latency support
-     * Disabled by default because RT processes can easily block the OS */
-    /*ret = SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
-      PA_DEBUG(("Class ret = %d;",ret));*/
-
-    stream->streamStarted = 1;
-    stream->streamThread = CreateThread(NULL, 0, ProcessingThread, stream, 0, &dwID);
-    if(stream->streamThread == NULL)
-    {
-        stream->streamStarted = 0;
-        result = paInsufficientMemory;
-        goto end;
-    }
-    ret = SetThreadPriority(stream->streamThread,THREAD_PRIORITY_TIME_CRITICAL);
-    PA_DEBUG(("Priority ret = %d;",ret));
-    /* Make the stream active */
-    stream->streamActive = 1;
-
-end:
-    PA_LOGL_;
-    return result;
-}
-
-
-static PaError StopStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    int doCb = 0;
-
-    PA_LOGE_;
-
-    if(stream->streamActive)
-    {
-        doCb = 1;
-        stream->streamStop = 1;
-        while(stream->streamActive)
-        {
-            PA_DEBUG(("W."));
-            Sleep(10); /* Let thread sleep for 10 msec */
-        }
-    }
-
-    PA_DEBUG(("Terminating thread"));
-    if(stream->streamStarted && stream->streamThread)
-    {
-        TerminateThread(stream->streamThread,0);
-        stream->streamThread = NULL;
-    }
-
-    stream->streamStarted = 0;
-
-    if(stream->oldProcessPriority != REALTIME_PRIORITY_CLASS)
-    {
-        SetPriorityClass(GetCurrentProcess(),stream->oldProcessPriority);
-        stream->oldProcessPriority = REALTIME_PRIORITY_CLASS;
-    }
-
-    if(doCb)
-    {
-        /* Do user callback now after all state has been reset */
-        /* This means it should be safe for the called function */
-        /* to invoke e.g. StartStream */
-        if( stream->streamRepresentation.streamFinishedCallback != 0 )
-             stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-
-    PA_LOGL_;
-    return result;
-}
-
-static PaError AbortStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    int doCb = 0;
-
-    PA_LOGE_;
-
-    if(stream->streamActive)
-    {
-        doCb = 1;
-        stream->streamAbort = 1;
-        SetEvent(stream->events[4]); /* Signal immediately */
-        while(stream->streamActive)
-        {
-            Sleep(10);
-        }
-    }
-
-    if(stream->streamStarted && stream->streamThread)
-    {
-        TerminateThread(stream->streamThread,0);
-        stream->streamThread = NULL;
-    }
-
-    stream->streamStarted = 0;
-
-    if(stream->oldProcessPriority != REALTIME_PRIORITY_CLASS)
-    {
-        SetPriorityClass(GetCurrentProcess(),stream->oldProcessPriority);
-        stream->oldProcessPriority = REALTIME_PRIORITY_CLASS;
-    }
-
-    if(doCb)
-    {
-        /* Do user callback now after all state has been reset */
-        /* This means it should be safe for the called function */
-        /* to invoke e.g. StartStream */
-        if( stream->streamRepresentation.streamFinishedCallback != 0 )
-            stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-    }
-
-    stream->streamActive = 0;
-    stream->streamStarted = 0;
-
-    PA_LOGL_;
-    return result;
-}
-
-
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    int result = 0;
-
-    PA_LOGE_;
-
-    if(!stream->streamStarted)
-        result = 1;
-
-    PA_LOGL_;
-    return result;
-}
-
-
-static PaError IsStreamActive( PaStream *s )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    int result = 0;
-
-    PA_LOGE_;
-
-    if(stream->streamActive)
-        result = 1;
-
-    PA_LOGL_;
-    return result;
-}
-
-
-static PaTime GetStreamTime( PaStream* s )
-{
-    PA_LOGE_;
-    PA_LOGL_;
-    (void)s;
-    return PaUtil_GetTime();
-}
-
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-    double result;
-    PA_LOGE_;
-    result = PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-    PA_LOGL_;
-    return result;
-}
-
-
-/*
-    As separate stream interfaces are used for blocking and callback
-    streams, the following functions can be guaranteed to only be called
-    for blocking streams.
-*/
-
-static PaError ReadStream( PaStream* s,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-
-    PA_LOGE_;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-    PA_LOGL_;
-    return paNoError;
-}
-
-
-static PaError WriteStream( PaStream* s,
-                            const void *buffer,
-                            unsigned long frames )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-
-    PA_LOGE_;
-
-    /* suppress unused variable warnings */
-    (void) buffer;
-    (void) frames;
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-    PA_LOGL_;
-    return paNoError;
-}
-
-
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-
-    PA_LOGE_;
-
-    /* suppress unused variable warnings */
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-    PA_LOGL_;
-    return 0;
-}
-
-
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaWinWdmStream *stream = (PaWinWdmStream*)s;
-
-    PA_LOGE_;
-    /* suppress unused variable warnings */
-    (void) stream;
-
-    /* IMPLEMENT ME, see portaudio.h for required behavior*/
-    PA_LOGL_;
-    return 0;
-}
\ No newline at end of file
diff --git a/external/portaudio2007/pa_win_wdmks_utils.h b/external/portaudio2007/pa_win_wdmks_utils.h
deleted file mode 100644
index f54035f..0000000
--- a/external/portaudio2007/pa_win_wdmks_utils.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef PA_WIN_WDMKS_UTILS_H
-#define PA_WIN_WDMKS_UTILS_H
-
-/*
- * PortAudio Portable Real-Time Audio Library
- * Windows WDM KS utilities
- *
- * Copyright (c) 1999 - 2007 Ross Bencina, Andrew Baldwin
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @brief Utilities for working with the Windows WDM KS API
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
-    Query for the maximum number of channels supported by any pin of the
-    specified device. Returns 0 if the query fails for any reason.
-
-    @param wcharDevicePath A system level PnP interface path, supplied as a WCHAR unicode string.
-    Declard as void* to avoid introducing a dependency on wchar_t here.
-
-    @param isInput A flag specifying whether to query for input (non-zero) or output (zero) channels.
-*/
-int PaWin_WDMKS_QueryFilterMaximumChannelCount( void *wcharDevicePath, int isInput );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_WIN_WDMKS_UTILS_H */
\ No newline at end of file
diff --git a/external/portaudio2007/pa_win_wmme.c b/external/portaudio2007/pa_win_wmme.c
deleted file mode 100644
index a77bbdd..0000000
--- a/external/portaudio2007/pa_win_wmme.c
+++ /dev/null
@@ -1,3903 +0,0 @@
-#ifdef _WIN32
-/*
- * $Id: pa_win_wmme.c 1286 2007-09-26 21:34:23Z rossb $
- * pa_win_wmme.c
- * Implementation of PortAudio for Windows MultiMedia Extensions (WMME)       
- *                                                                                         
- * PortAudio Portable Real-Time Audio Library
- * Latest Version at: http://www.portaudio.com
- *
- * Authors: Ross Bencina and Phil Burk
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/* Modification History:
- PLB = Phil Burk
- JM = Julien Maillard
- RDB = Ross Bencina
- PLB20010402 - sDevicePtrs now allocates based on sizeof(pointer)
- PLB20010413 - check for excessive numbers of channels
- PLB20010422 - apply Mike Berry's changes for CodeWarrior on PC
-               including conditional inclusion of memory.h,
-               and explicit typecasting on memory allocation
- PLB20010802 - use GlobalAlloc for sDevicesPtr instead of PaHost_AllocFastMemory
- PLB20010816 - pass process instead of thread to SetPriorityClass()
- PLB20010927 - use number of frames instead of real-time for CPULoad calculation.
- JM20020118 - prevent hung thread when buffers underflow.
- PLB20020321 - detect Win XP versus NT, 9x; fix DBUG typo; removed init of CurrentCount
- RDB20020411 - various renaming cleanups, factored streamData alloc and cpu usage init
- RDB20020417 - stopped counting WAVE_MAPPER when there were no real devices
-               refactoring, renaming and fixed a few edge case bugs
- RDB20020531 - converted to V19 framework
- ** NOTE  maintanance history is now stored in CVS **
-*/
-
-/** @file
-	@ingroup hostaip_src
-
-	@todo Fix buffer catch up code, can sometimes get stuck (perhaps fixed now,
-            needs to be reviewed and tested.)
-
-    @todo implement paInputUnderflow, paOutputOverflow streamCallback statusFlags, paNeverDropInput.
-
-    @todo BUG: PA_MME_SET_LAST_WAVEIN/OUT_ERROR is used in functions which may
-                be called asynchronously from the callback thread. this is bad.
-
-    @todo implement inputBufferAdcTime in callback thread
-
-    @todo review/fix error recovery and cleanup in marked functions
-
-    @todo implement timeInfo for stream priming
-
-    @todo handle the case where the callback returns paAbort or paComplete during stream priming.
-
-    @todo review input overflow and output underflow handling in ReadStream and WriteStream
-
-Non-critical stuff for the future:
-
-    @todo Investigate supporting host buffer formats > 16 bits
-    
-    @todo define UNICODE and _UNICODE in the project settings and see what breaks
-
-    @todo refactor conversion of MMSYSTEM errors into PA arrors into a single function.
-
-    @todo cleanup WAVEFORMATEXTENSIBLE retry in InitializeWaveHandles to not use a for loop
-
-*/
-
-/*
-    How it works:
-
-    For both callback and blocking read/write streams we open the MME devices
-    in CALLBACK_EVENT mode. In this mode, MME signals an Event object whenever
-    it has finished with a buffer (either filled it for input, or played it
-    for output). Where necessary we block waiting for Event objects using
-    WaitMultipleObjects().
-
-    When implementing a PA callback stream, we set up a high priority thread
-    which waits on the MME buffer Events and drains/fills the buffers when
-    they are ready.
-
-    When implementing a PA blocking read/write stream, we simply wait on these
-    Events (when necessary) inside the ReadStream() and WriteStream() functions.
-*/
-
-#undef UNICODE
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <windows.h>
-#include <mmsystem.h>
-#ifndef UNDER_CE
-#include <process.h>
-#endif
-#include <assert.h>
-/* PLB20010422 - "memory.h" doesn't work on CodeWarrior for PC. Thanks Mike Berry for the mod. */
-#ifndef __MWERKS__XXX
-#include <malloc.h>
-#include <memory.h>
-#endif /* __MWERKS__ */
-
-#include "portaudio.h"
-#include "pa_trace.h"
-#include "pa_util.h"
-#include "pa_allocation.h"
-#include "pa_hostapi.h"
-#include "pa_stream.h"
-#include "pa_cpuload.h"
-#include "pa_process.h"
-#include "pa_debugprint.h"
-
-#include "pa_win_wmme.h"
-#include "pa_win_waveformat.h"
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-#include "pa_win_wdmks_utils.h"
-#ifndef DRV_QUERYDEVICEINTERFACE
-#define DRV_QUERYDEVICEINTERFACE     (DRV_RESERVED + 12)
-#endif
-#ifndef DRV_QUERYDEVICEINTERFACESIZE
-#define DRV_QUERYDEVICEINTERFACESIZE (DRV_RESERVED + 13)
-#endif
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-#if (defined(UNDER_CE))
-#pragma comment(lib, "Coredll.lib")
-#elif (defined(WIN32) && (defined(_MSC_VER) && (_MSC_VER >= 1200))) /* MSC version 6 and above */
-#pragma comment(lib, "winmm.lib")
-#endif
-
-/*
- provided in newer platform sdks
- */
-#ifndef DWORD_PTR
-#define DWORD_PTR DWORD
-#endif
-
-/************************************************* Constants ********/
-
-#define PA_MME_USE_HIGH_DEFAULT_LATENCY_    (0)  /* For debugging glitches. */
-
-#if PA_MME_USE_HIGH_DEFAULT_LATENCY_
- #define PA_MME_WIN_9X_DEFAULT_LATENCY_                     (0.4)
- #define PA_MME_MIN_HOST_OUTPUT_BUFFER_COUNT_               (4)
- #define PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_	(4)
- #define PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_HALF_DUPLEX_	(4)
- #define PA_MME_MIN_HOST_BUFFER_FRAMES_WHEN_UNSPECIFIED_	(16)
- #define PA_MME_MAX_HOST_BUFFER_SECS_				        (0.3)       /* Do not exceed unless user buffer exceeds */
- #define PA_MME_MAX_HOST_BUFFER_BYTES_				        (32 * 1024) /* Has precedence over PA_MME_MAX_HOST_BUFFER_SECS_, some drivers are known to crash with buffer sizes > 32k */
-#else
- #define PA_MME_WIN_9X_DEFAULT_LATENCY_                     (0.2)
- #define PA_MME_MIN_HOST_OUTPUT_BUFFER_COUNT_               (2)
- #define PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_	(3)
- #define PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_HALF_DUPLEX_	(2)
- #define PA_MME_MIN_HOST_BUFFER_FRAMES_WHEN_UNSPECIFIED_	(16)
- #define PA_MME_MAX_HOST_BUFFER_SECS_				        (0.1)       /* Do not exceed unless user buffer exceeds */
- #define PA_MME_MAX_HOST_BUFFER_BYTES_				        (32 * 1024) /* Has precedence over PA_MME_MAX_HOST_BUFFER_SECS_, some drivers are known to crash with buffer sizes > 32k */
-#endif
-
-/* Use higher latency for NT because it is even worse at real-time
-   operation than Win9x.
-*/
-#define PA_MME_WIN_NT_DEFAULT_LATENCY_      (PA_MME_WIN_9X_DEFAULT_LATENCY_ * 2)
-#define PA_MME_WIN_WDM_DEFAULT_LATENCY_     (PA_MME_WIN_9X_DEFAULT_LATENCY_)
-
-
-#define PA_MME_MIN_TIMEOUT_MSEC_        (1000)
-
-static const char constInputMapperSuffix_[] = " - Input";
-static const char constOutputMapperSuffix_[] = " - Output";
-
-/********************************************************************/
-
-typedef struct PaWinMmeStream PaWinMmeStream;     /* forward declaration */
-
-/* prototypes for functions declared in this file */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-PaError PaWinMme_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex index );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi );
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** stream,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData );
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate );
-static PaError CloseStream( PaStream* stream );
-static PaError StartStream( PaStream *stream );
-static PaError StopStream( PaStream *stream );
-static PaError AbortStream( PaStream *stream );
-static PaError IsStreamStopped( PaStream *s );
-static PaError IsStreamActive( PaStream *stream );
-static PaTime GetStreamTime( PaStream *stream );
-static double GetStreamCpuLoad( PaStream* stream );
-static PaError ReadStream( PaStream* stream, void *buffer, unsigned long frames );
-static PaError WriteStream( PaStream* stream, const void *buffer, unsigned long frames );
-static signed long GetStreamReadAvailable( PaStream* stream );
-static signed long GetStreamWriteAvailable( PaStream* stream );
-
-
-/* macros for setting last host error information */
-
-#ifdef UNICODE
-
-#define PA_MME_SET_LAST_WAVEIN_ERROR( mmresult ) \
-    {                                                                   \
-        wchar_t mmeErrorTextWide[ MAXERRORLENGTH ];                     \
-        char mmeErrorText[ MAXERRORLENGTH ];                            \
-        waveInGetErrorText( mmresult, mmeErrorTextWide, MAXERRORLENGTH );   \
-        WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR,\
-            mmeErrorTextWide, -1, mmeErrorText, MAXERRORLENGTH, NULL, NULL );  \
-        PaUtil_SetLastHostErrorInfo( paMME, mmresult, mmeErrorText );   \
-    }
-
-#define PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult ) \
-    {                                                                   \
-        wchar_t mmeErrorTextWide[ MAXERRORLENGTH ];                     \
-        char mmeErrorText[ MAXERRORLENGTH ];                            \
-        waveOutGetErrorText( mmresult, mmeErrorTextWide, MAXERRORLENGTH );  \
-        WideCharToMultiByte( CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR,\
-            mmeErrorTextWide, -1, mmeErrorText, MAXERRORLENGTH, NULL, NULL );  \
-        PaUtil_SetLastHostErrorInfo( paMME, mmresult, mmeErrorText );   \
-    }
-    
-#else /* !UNICODE */
-
-#define PA_MME_SET_LAST_WAVEIN_ERROR( mmresult ) \
-    {                                                                   \
-        char mmeErrorText[ MAXERRORLENGTH ];                            \
-        waveInGetErrorText( mmresult, mmeErrorText, MAXERRORLENGTH );   \
-        PaUtil_SetLastHostErrorInfo( paMME, mmresult, mmeErrorText );   \
-    }
-
-#define PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult ) \
-    {                                                                   \
-        char mmeErrorText[ MAXERRORLENGTH ];                            \
-        waveOutGetErrorText( mmresult, mmeErrorText, MAXERRORLENGTH );  \
-        PaUtil_SetLastHostErrorInfo( paMME, mmresult, mmeErrorText );   \
-    }
-
-#endif /* UNICODE */
-
-
-static void PaMme_SetLastSystemError( DWORD errorCode )
-{
-    char *lpMsgBuf;
-    FormatMessage(
-        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
-        NULL,
-        errorCode,
-        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
-        (LPTSTR) &lpMsgBuf,
-        0,
-        NULL
-    );
-    PaUtil_SetLastHostErrorInfo( paMME, errorCode, lpMsgBuf );
-    LocalFree( lpMsgBuf );
-}
-
-#define PA_MME_SET_LAST_SYSTEM_ERROR( errorCode ) \
-    PaMme_SetLastSystemError( errorCode )
-
-
-/* PaError returning wrappers for some commonly used win32 functions
-    note that we allow passing a null ptr to have no effect.
-*/
-
-static PaError CreateEventWithPaError( HANDLE *handle,
-        LPSECURITY_ATTRIBUTES lpEventAttributes,
-        BOOL bManualReset,
-        BOOL bInitialState,
-        LPCTSTR lpName )
-{
-    PaError result = paNoError;
-
-    *handle = NULL;
-    
-    *handle = CreateEvent( lpEventAttributes, bManualReset, bInitialState, lpName );
-    if( *handle == NULL )
-    {
-        result = paUnanticipatedHostError;
-        PA_MME_SET_LAST_SYSTEM_ERROR( GetLastError() );
-    }
-
-    return result;
-}
-
-
-static PaError ResetEventWithPaError( HANDLE handle )
-{
-    PaError result = paNoError;
-
-    if( handle )
-    {
-        if( ResetEvent( handle ) == 0 )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_SYSTEM_ERROR( GetLastError() );
-        }
-    }
-
-    return result;
-}
-
-
-static PaError CloseHandleWithPaError( HANDLE handle )
-{
-    PaError result = paNoError;
-    
-    if( handle )
-    {
-        if( CloseHandle( handle ) == 0 )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_SYSTEM_ERROR( GetLastError() );
-        }
-    }
-    
-    return result;
-}
-
-
-/* PaWinMmeHostApiRepresentation - host api datastructure specific to this implementation */
-
-typedef struct
-{
-    PaUtilHostApiRepresentation inheritedHostApiRep;
-    PaUtilStreamInterface callbackStreamInterface;
-    PaUtilStreamInterface blockingStreamInterface;
-
-    PaUtilAllocationGroup *allocations;
-    
-    int inputDeviceCount, outputDeviceCount;
-
-    /** winMmeDeviceIds is an array of WinMme device ids.
-        fields in the range [0, inputDeviceCount) are input device ids,
-        and [inputDeviceCount, inputDeviceCount + outputDeviceCount) are output
-        device ids.
-     */ 
-    UINT *winMmeDeviceIds;
-}
-PaWinMmeHostApiRepresentation;
-
-
-typedef struct
-{
-    PaDeviceInfo inheritedDeviceInfo;
-    DWORD dwFormats; /**<< standard formats bitmask from the WAVEINCAPS and WAVEOUTCAPS structures */
-    char deviceInputChannelCountIsKnown; /**<< if the system returns 0xFFFF then we don't really know the number of supported channels (1=>known, 0=>unknown)*/
-    char deviceOutputChannelCountIsKnown; /**<< if the system returns 0xFFFF then we don't really know the number of supported channels (1=>known, 0=>unknown)*/
-}
-PaWinMmeDeviceInfo;
-
-
-/*************************************************************************
- * Returns recommended device ID.
- * On the PC, the recommended device can be specified by the user by
- * setting an environment variable. For example, to use device #1.
- *
- *    set PA_RECOMMENDED_OUTPUT_DEVICE=1
- *
- * The user should first determine the available device ID by using
- * the supplied application "pa_devs".
- */
-#define PA_ENV_BUF_SIZE_  (32)
-#define PA_REC_IN_DEV_ENV_NAME_  ("PA_RECOMMENDED_INPUT_DEVICE")
-#define PA_REC_OUT_DEV_ENV_NAME_  ("PA_RECOMMENDED_OUTPUT_DEVICE")
-static PaDeviceIndex GetEnvDefaultDeviceID( char *envName )
-{
-    PaDeviceIndex recommendedIndex = paNoDevice;
-    DWORD   hresult;
-    char    envbuf[PA_ENV_BUF_SIZE_];
-
-#ifndef WIN32_PLATFORM_PSPC /* no GetEnvironmentVariable on PocketPC */
-
-    /* Let user determine default device by setting environment variable. */
-    hresult = GetEnvironmentVariableA( envName, envbuf, PA_ENV_BUF_SIZE_ );
-    if( (hresult > 0) && (hresult < PA_ENV_BUF_SIZE_) )
-    {
-        recommendedIndex = atoi( envbuf );
-    }
-#endif
-
-    return recommendedIndex;
-}
-
-
-static void InitializeDefaultDeviceIdsFromEnv( PaWinMmeHostApiRepresentation *hostApi )
-{
-    PaDeviceIndex device;
-
-    /* input */
-    device = GetEnvDefaultDeviceID( PA_REC_IN_DEV_ENV_NAME_ );
-    if( device != paNoDevice &&
-            ( device >= 0 && device < hostApi->inheritedHostApiRep.info.deviceCount ) &&
-            hostApi->inheritedHostApiRep.deviceInfos[ device ]->maxInputChannels > 0 )
-    {
-        hostApi->inheritedHostApiRep.info.defaultInputDevice = device;
-    }
-
-    /* output */
-    device = GetEnvDefaultDeviceID( PA_REC_OUT_DEV_ENV_NAME_ );
-    if( device != paNoDevice &&
-            ( device >= 0 && device < hostApi->inheritedHostApiRep.info.deviceCount ) &&
-            hostApi->inheritedHostApiRep.deviceInfos[ device ]->maxOutputChannels > 0 )
-    {
-        hostApi->inheritedHostApiRep.info.defaultOutputDevice = device;
-    }
-}
-
-
-/** Convert external PA ID to a windows multimedia device ID
-*/
-static UINT LocalDeviceIndexToWinMmeDeviceId( PaWinMmeHostApiRepresentation *hostApi, PaDeviceIndex device )
-{
-    assert( device >= 0 && device < hostApi->inputDeviceCount + hostApi->outputDeviceCount );
-
-	return hostApi->winMmeDeviceIds[ device ];
-}
-
-
-static PaError QueryInputWaveFormatEx( int deviceId, WAVEFORMATEX *waveFormatEx )
-{
-    MMRESULT mmresult;
-    
-    switch( mmresult = waveInOpen( NULL, deviceId, waveFormatEx, 0, 0, WAVE_FORMAT_QUERY ) )
-    {
-        case MMSYSERR_NOERROR:
-            return paNoError;
-        case MMSYSERR_ALLOCATED:    /* Specified resource is already allocated. */
-            return paDeviceUnavailable;
-        case MMSYSERR_NODRIVER:	    /* No device driver is present. */
-            return paDeviceUnavailable;
-        case MMSYSERR_NOMEM:	    /* Unable to allocate or lock memory. */
-            return paInsufficientMemory;
-        case WAVERR_BADFORMAT:      /* Attempted to open with an unsupported waveform-audio format. */
-            return paSampleFormatNotSupported;
-                    
-        case MMSYSERR_BADDEVICEID:	/* Specified device identifier is out of range. */
-            /* falls through */
-        default:
-            PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-            return paUnanticipatedHostError;
-    }
-}
-
-
-static PaError QueryOutputWaveFormatEx( int deviceId, WAVEFORMATEX *waveFormatEx )
-{
-    MMRESULT mmresult;
-    
-    switch( mmresult = waveOutOpen( NULL, deviceId, waveFormatEx, 0, 0, WAVE_FORMAT_QUERY ) )
-    {
-        case MMSYSERR_NOERROR:
-            return paNoError;
-        case MMSYSERR_ALLOCATED:    /* Specified resource is already allocated. */
-            return paDeviceUnavailable;
-        case MMSYSERR_NODRIVER:	    /* No device driver is present. */
-            return paDeviceUnavailable;
-        case MMSYSERR_NOMEM:	    /* Unable to allocate or lock memory. */
-            return paInsufficientMemory;
-        case WAVERR_BADFORMAT:      /* Attempted to open with an unsupported waveform-audio format. */
-            return paSampleFormatNotSupported;
-                    
-        case MMSYSERR_BADDEVICEID:	/* Specified device identifier is out of range. */
-            /* falls through */
-        default:
-            PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-            return paUnanticipatedHostError;
-    }
-}
-
-
-static PaError QueryFormatSupported( PaDeviceInfo *deviceInfo,
-        PaError (*waveFormatExQueryFunction)(int, WAVEFORMATEX*),
-        int winMmeDeviceId, int channels, double sampleRate )
-{
-    PaWinMmeDeviceInfo *winMmeDeviceInfo = (PaWinMmeDeviceInfo*)deviceInfo;
-    PaWinWaveFormat waveFormat;
-    
-    if( sampleRate == 11025.0
-        && ( (channels == 1 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_1M16))
-            || (channels == 2 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_1S16)) ) ){
-
-        return paNoError;
-    }
-
-    if( sampleRate == 22050.0
-        && ( (channels == 1 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_2M16))
-            || (channels == 2 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_2S16)) ) ){
-
-        return paNoError;
-    }
-
-    if( sampleRate == 44100.0
-        && ( (channels == 1 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_4M16))
-            || (channels == 2 && (winMmeDeviceInfo->dwFormats & WAVE_FORMAT_4S16)) ) ){
-
-        return paNoError;
-    }
-
-    /* first, attempt to query the device using WAVEFORMATEXTENSIBLE, 
-       if this fails we fall back to WAVEFORMATEX */
-
-    /* @todo at the moment we only query with 16 bit sample format and directout speaker config*/
-    PaWin_InitializeWaveFormatExtensible( &waveFormat, channels, 
-            paInt16, sampleRate, PAWIN_SPEAKER_DIRECTOUT );
-
-    if( waveFormatExQueryFunction( winMmeDeviceId, (WAVEFORMATEX*)&waveFormat ) == paNoError )
-        return paNoError;
-
-    PaWin_InitializeWaveFormatEx( &waveFormat, channels, paInt16, sampleRate );
-
-    return waveFormatExQueryFunction( winMmeDeviceId, (WAVEFORMATEX*)&waveFormat );
-}
-
-
-#define PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_  (13) /* must match array length below */
-static double defaultSampleRateSearchOrder_[] =
-    { 44100.0, 48000.0, 32000.0, 24000.0, 22050.0, 88200.0, 96000.0, 192000.0,
-        16000.0, 12000.0, 11025.0, 9600.0, 8000.0 };
-
-static void DetectDefaultSampleRate( PaWinMmeDeviceInfo *winMmeDeviceInfo, int winMmeDeviceId,
-        PaError (*waveFormatExQueryFunction)(int, WAVEFORMATEX*), int maxChannels )
-{
-    PaDeviceInfo *deviceInfo = &winMmeDeviceInfo->inheritedDeviceInfo;
-    int i;
-    
-    deviceInfo->defaultSampleRate = 0.;
-
-    for( i=0; i < PA_DEFAULTSAMPLERATESEARCHORDER_COUNT_; ++i )
-    {
-        double sampleRate = defaultSampleRateSearchOrder_[ i ]; 
-        PaError paerror = QueryFormatSupported( deviceInfo, waveFormatExQueryFunction, winMmeDeviceId, maxChannels, sampleRate );
-        if( paerror == paNoError )
-        {
-            deviceInfo->defaultSampleRate = sampleRate;
-            break;
-        }
-    }
-}
-
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-static int QueryWaveInKSFilterMaxChannels( int waveInDeviceId, int *maxChannels )
-{
-    void *devicePath;
-    DWORD devicePathSize;
-    int result = 0;
-
-    if( waveInMessage((HWAVEIN)waveInDeviceId, DRV_QUERYDEVICEINTERFACESIZE,
-            (DWORD_PTR)&devicePathSize, 0 ) != MMSYSERR_NOERROR )
-        return 0;
-
-    devicePath = PaUtil_AllocateMemory( devicePathSize );
-    if( !devicePath )
-        return 0;
-
-    /* apparently DRV_QUERYDEVICEINTERFACE returns a unicode interface path, although this is undocumented */
-    if( waveInMessage((HWAVEIN)waveInDeviceId, DRV_QUERYDEVICEINTERFACE,
-            (DWORD_PTR)devicePath, devicePathSize ) == MMSYSERR_NOERROR )
-    {
-        int count = PaWin_WDMKS_QueryFilterMaximumChannelCount( devicePath, /* isInput= */ 1  );
-        if( count > 0 )
-        {
-            *maxChannels = count;
-            result = 1;
-        }
-    }
-
-    PaUtil_FreeMemory( devicePath );
-
-    return result;
-}
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-
-static PaError InitializeInputDeviceInfo( PaWinMmeHostApiRepresentation *winMmeHostApi,
-        PaWinMmeDeviceInfo *winMmeDeviceInfo, UINT winMmeInputDeviceId, int *success )
-{
-    PaError result = paNoError;
-    char *deviceName; /* non-const ptr */
-    MMRESULT mmresult;
-    WAVEINCAPSA wic;
-    PaDeviceInfo *deviceInfo = &winMmeDeviceInfo->inheritedDeviceInfo;
-    
-    *success = 0;
-
-    mmresult = waveInGetDevCapsA( winMmeInputDeviceId, &wic, sizeof( WAVEINCAPSA ) );
-    if( mmresult == MMSYSERR_NOMEM )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-    else if( mmresult != MMSYSERR_NOERROR )
-    {
-        /* instead of returning paUnanticipatedHostError we return
-            paNoError, but leave success set as 0. This allows
-            Pa_Initialize to just ignore this device, without failing
-            the entire initialisation process.
-        */
-        return paNoError;
-    }           
-
-    if( winMmeInputDeviceId == WAVE_MAPPER )
-    {
-        /* Append I/O suffix to WAVE_MAPPER device. */
-        deviceName = (char *)PaUtil_GroupAllocateMemory(
-                    winMmeHostApi->allocations, strlen( wic.szPname ) + 1 + sizeof(constInputMapperSuffix_) );
-        if( !deviceName )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-        strcpy( deviceName, wic.szPname );
-        strcat( deviceName, constInputMapperSuffix_ );
-    }
-    else
-    {
-        deviceName = (char*)PaUtil_GroupAllocateMemory(
-                    winMmeHostApi->allocations, strlen( wic.szPname ) + 1 );
-        if( !deviceName )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-        strcpy( deviceName, wic.szPname  );
-    }
-    deviceInfo->name = deviceName;
-
-    if( wic.wChannels == 0xFFFF || wic.wChannels < 1 || wic.wChannels > 255 ){
-        /* For Windows versions using WDM (possibly Windows 98 ME and later)
-         * the kernel mixer sits between the application and the driver. As a result,
-         * wave*GetDevCaps often kernel mixer channel counts, which are unlimited.
-         * When this happens we assume the device is stereo and set a flag
-         * so that other channel counts can be tried with OpenStream -- i.e. when
-         * device*ChannelCountIsKnown is false, OpenStream will try whatever
-         * channel count you supply.
-         * see also InitializeOutputDeviceInfo() below.
-     */
-
-        PA_DEBUG(("Pa_GetDeviceInfo: Num input channels reported as %d! Changed to 2.\n", wic.wChannels ));
-        deviceInfo->maxInputChannels = 2;
-        winMmeDeviceInfo->deviceInputChannelCountIsKnown = 0;
-    }else{
-        deviceInfo->maxInputChannels = wic.wChannels;
-        winMmeDeviceInfo->deviceInputChannelCountIsKnown = 1;
-    }
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-    winMmeDeviceInfo->deviceInputChannelCountIsKnown = 
-            QueryWaveInKSFilterMaxChannels( winMmeInputDeviceId, &deviceInfo->maxInputChannels );
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-    winMmeDeviceInfo->dwFormats = wic.dwFormats;
-
-    DetectDefaultSampleRate( winMmeDeviceInfo, winMmeInputDeviceId,
-            QueryInputWaveFormatEx, deviceInfo->maxInputChannels );
-
-    *success = 1;
-    
-error:
-    return result;
-}
-
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-static int QueryWaveOutKSFilterMaxChannels( int waveOutDeviceId, int *maxChannels )
-{
-    void *devicePath;
-    DWORD devicePathSize;
-    int result = 0;
-
-    if( waveOutMessage((HWAVEOUT)waveOutDeviceId, DRV_QUERYDEVICEINTERFACESIZE,
-            (DWORD_PTR)&devicePathSize, 0 ) != MMSYSERR_NOERROR )
-        return 0;
-
-    devicePath = PaUtil_AllocateMemory( devicePathSize );
-    if( !devicePath )
-        return 0;
-
-    /* apparently DRV_QUERYDEVICEINTERFACE returns a unicode interface path, although this is undocumented */
-    if( waveOutMessage((HWAVEOUT)waveOutDeviceId, DRV_QUERYDEVICEINTERFACE,
-            (DWORD_PTR)devicePath, devicePathSize ) == MMSYSERR_NOERROR )
-    {
-        int count = PaWin_WDMKS_QueryFilterMaximumChannelCount( devicePath, /* isInput= */ 0  );
-        if( count > 0 )
-        {
-            *maxChannels = count;
-            result = 1;
-        }
-    }
-
-    PaUtil_FreeMemory( devicePath );
-
-    return result;
-}
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-
-static PaError InitializeOutputDeviceInfo( PaWinMmeHostApiRepresentation *winMmeHostApi,
-        PaWinMmeDeviceInfo *winMmeDeviceInfo, UINT winMmeOutputDeviceId, int *success )
-{
-    PaError result = paNoError;
-    char *deviceName; /* non-const ptr */
-    MMRESULT mmresult;
-    WAVEOUTCAPSA woc;
-    PaDeviceInfo *deviceInfo = &winMmeDeviceInfo->inheritedDeviceInfo;
-
-    *success = 0;
-
-    mmresult = waveOutGetDevCapsA( winMmeOutputDeviceId, &woc, sizeof( WAVEOUTCAPSA ) );
-    if( mmresult == MMSYSERR_NOMEM )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-    else if( mmresult != MMSYSERR_NOERROR )
-    {
-        /* instead of returning paUnanticipatedHostError we return
-            paNoError, but leave success set as 0. This allows
-            Pa_Initialize to just ignore this device, without failing
-            the entire initialisation process.
-        */
-        return paNoError;
-    }
-
-    if( winMmeOutputDeviceId == WAVE_MAPPER )
-    {
-        /* Append I/O suffix to WAVE_MAPPER device. */
-        deviceName = (char *)PaUtil_GroupAllocateMemory(
-                    winMmeHostApi->allocations, strlen( woc.szPname ) + 1 + sizeof(constOutputMapperSuffix_) );
-        if( !deviceName )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-        strcpy( deviceName, woc.szPname );
-        strcat( deviceName, constOutputMapperSuffix_ );
-    }
-    else
-    {
-        deviceName = (char*)PaUtil_GroupAllocateMemory(
-                    winMmeHostApi->allocations, strlen( woc.szPname ) + 1 );
-        if( !deviceName )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-        strcpy( deviceName, woc.szPname  );
-    }
-    deviceInfo->name = deviceName;
-
-    if( woc.wChannels == 0xFFFF || woc.wChannels < 1 || woc.wChannels > 255 ){
-        /* For Windows versions using WDM (possibly Windows 98 ME and later)
-         * the kernel mixer sits between the application and the driver. As a result,
-         * wave*GetDevCaps often kernel mixer channel counts, which are unlimited.
-         * When this happens we assume the device is stereo and set a flag
-         * so that other channel counts can be tried with OpenStream -- i.e. when
-         * device*ChannelCountIsKnown is false, OpenStream will try whatever
-         * channel count you supply.
-         * see also InitializeInputDeviceInfo() above.
-     */
-
-        PA_DEBUG(("Pa_GetDeviceInfo: Num output channels reported as %d! Changed to 2.\n", woc.wChannels ));
-        deviceInfo->maxOutputChannels = 2;
-        winMmeDeviceInfo->deviceOutputChannelCountIsKnown = 0;
-    }else{
-        deviceInfo->maxOutputChannels = woc.wChannels;
-        winMmeDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-    }
-
-#ifdef PAWIN_USE_WDMKS_DEVICE_INFO
-    winMmeDeviceInfo->deviceOutputChannelCountIsKnown = 
-            QueryWaveOutKSFilterMaxChannels( winMmeOutputDeviceId, &deviceInfo->maxOutputChannels );
-#endif /* PAWIN_USE_WDMKS_DEVICE_INFO */
-
-    winMmeDeviceInfo->dwFormats = woc.dwFormats;
-
-    DetectDefaultSampleRate( winMmeDeviceInfo, winMmeOutputDeviceId,
-            QueryOutputWaveFormatEx, deviceInfo->maxOutputChannels );
-
-    *success = 1;
-    
-error:
-    return result;
-}
-
-
-static void GetDefaultLatencies( PaTime *defaultLowLatency, PaTime *defaultHighLatency )
-{
-    OSVERSIONINFO osvi;
-    osvi.dwOSVersionInfoSize = sizeof( osvi );
-	GetVersionEx( &osvi );
-
-    /* Check for NT */
-    if( (osvi.dwMajorVersion == 4) && (osvi.dwPlatformId == 2) )
-    {
-        *defaultLowLatency = PA_MME_WIN_NT_DEFAULT_LATENCY_;
-    }
-    else if(osvi.dwMajorVersion >= 5)
-    {
-        *defaultLowLatency  = PA_MME_WIN_WDM_DEFAULT_LATENCY_;
-    }
-    else
-    {
-        *defaultLowLatency  = PA_MME_WIN_9X_DEFAULT_LATENCY_;
-    }     
-
-    *defaultHighLatency = *defaultLowLatency * 2;
-}
-
-
-PaError PaWinMme_Initialize( PaUtilHostApiRepresentation **hostApi, PaHostApiIndex hostApiIndex )
-{
-    PaError result = paNoError;
-    int i;
-    PaWinMmeHostApiRepresentation *winMmeHostApi;
-    int inputDeviceCount, outputDeviceCount, maximumPossibleDeviceCount;
-    PaWinMmeDeviceInfo *deviceInfoArray;
-    int deviceInfoInitializationSucceeded;
-    PaTime defaultLowLatency, defaultHighLatency;
-    DWORD waveInPreferredDevice, waveOutPreferredDevice;
-    DWORD preferredDeviceStatusFlags;
-
-    winMmeHostApi = (PaWinMmeHostApiRepresentation*)PaUtil_AllocateMemory( sizeof(PaWinMmeHostApiRepresentation) );
-    if( !winMmeHostApi )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    winMmeHostApi->allocations = PaUtil_CreateAllocationGroup();
-    if( !winMmeHostApi->allocations )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    *hostApi = &winMmeHostApi->inheritedHostApiRep;
-    (*hostApi)->info.structVersion = 1;
-    (*hostApi)->info.type = paMME;
-    (*hostApi)->info.name = "MME";
-
-    
-    /* initialise device counts and default devices under the assumption that
-        there are no devices. These values are incremented below if and when
-        devices are successfully initialized.
-    */
-    (*hostApi)->info.deviceCount = 0;
-    (*hostApi)->info.defaultInputDevice = paNoDevice;
-    (*hostApi)->info.defaultOutputDevice = paNoDevice;
-    winMmeHostApi->inputDeviceCount = 0;
-    winMmeHostApi->outputDeviceCount = 0;
-
-#if !defined(DRVM_MAPPER_PREFERRED_GET)
-/* DRVM_MAPPER_PREFERRED_GET is defined in mmddk.h but we avoid a dependency on the DDK by defining it here */
-#define DRVM_MAPPER_PREFERRED_GET    (0x2000+21)
-#endif
-
-    /* the following calls assume that if wave*Message fails the preferred device parameter won't be modified */
-    preferredDeviceStatusFlags = 0;
-    waveInPreferredDevice = -1;
-    waveInMessage( (HWAVEIN)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET, (DWORD)&waveInPreferredDevice, (DWORD)&preferredDeviceStatusFlags );
-
-    preferredDeviceStatusFlags = 0;
-    waveOutPreferredDevice = -1;
-    waveOutMessage( (HWAVEOUT)WAVE_MAPPER, DRVM_MAPPER_PREFERRED_GET, (DWORD)&waveOutPreferredDevice, (DWORD)&preferredDeviceStatusFlags );
-
-    maximumPossibleDeviceCount = 0;
-
-    inputDeviceCount = waveInGetNumDevs();
-    if( inputDeviceCount > 0 )
-    	maximumPossibleDeviceCount += inputDeviceCount + 1;	/* assume there is a WAVE_MAPPER */
-
-    outputDeviceCount = waveOutGetNumDevs();
-    if( outputDeviceCount > 0 )
-	    maximumPossibleDeviceCount += outputDeviceCount + 1;	/* assume there is a WAVE_MAPPER */
-
-
-    if( maximumPossibleDeviceCount > 0 ){
-
-        (*hostApi)->deviceInfos = (PaDeviceInfo**)PaUtil_GroupAllocateMemory(
-                winMmeHostApi->allocations, sizeof(PaDeviceInfo*) * maximumPossibleDeviceCount );
-        if( !(*hostApi)->deviceInfos )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        /* allocate all device info structs in a contiguous block */
-        deviceInfoArray = (PaWinMmeDeviceInfo*)PaUtil_GroupAllocateMemory(
-                winMmeHostApi->allocations, sizeof(PaWinMmeDeviceInfo) * maximumPossibleDeviceCount );
-        if( !deviceInfoArray )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        winMmeHostApi->winMmeDeviceIds = (UINT*)PaUtil_GroupAllocateMemory(
-                winMmeHostApi->allocations, sizeof(int) * maximumPossibleDeviceCount );
-        if( !winMmeHostApi->winMmeDeviceIds )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        GetDefaultLatencies( &defaultLowLatency, &defaultHighLatency );
-
-        if( inputDeviceCount > 0 ){
-            /* -1 is the WAVE_MAPPER */
-            for( i = -1; i < inputDeviceCount; ++i ){
-                UINT winMmeDeviceId = (UINT)((i==-1) ? WAVE_MAPPER : i);
-                PaWinMmeDeviceInfo *wmmeDeviceInfo = &deviceInfoArray[ (*hostApi)->info.deviceCount ];
-                PaDeviceInfo *deviceInfo = &wmmeDeviceInfo->inheritedDeviceInfo;
-                deviceInfo->structVersion = 2;
-                deviceInfo->hostApi = hostApiIndex;
-
-                deviceInfo->maxInputChannels = 0;
-                wmmeDeviceInfo->deviceInputChannelCountIsKnown = 1;
-                deviceInfo->maxOutputChannels = 0;
-                wmmeDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-
-                deviceInfo->defaultLowInputLatency = defaultLowLatency;
-                deviceInfo->defaultLowOutputLatency = defaultLowLatency;
-                deviceInfo->defaultHighInputLatency = defaultHighLatency;
-                deviceInfo->defaultHighOutputLatency = defaultHighLatency;
-
-                result = InitializeInputDeviceInfo( winMmeHostApi, wmmeDeviceInfo,
-                        winMmeDeviceId, &deviceInfoInitializationSucceeded );
-                if( result != paNoError )
-                    goto error;
-
-                if( deviceInfoInitializationSucceeded ){
-                    if( (*hostApi)->info.defaultInputDevice == paNoDevice ){
-                        /* if there is currently no default device, use the first one available */
-                        (*hostApi)->info.defaultInputDevice = (*hostApi)->info.deviceCount;
-                    
-                    }else if( winMmeDeviceId == waveInPreferredDevice ){
-                        /* set the default device to the system preferred device */
-                        (*hostApi)->info.defaultInputDevice = (*hostApi)->info.deviceCount;
-                    }
-
-                    winMmeHostApi->winMmeDeviceIds[ (*hostApi)->info.deviceCount ] = winMmeDeviceId;
-                    (*hostApi)->deviceInfos[ (*hostApi)->info.deviceCount ] = deviceInfo;
-
-                    winMmeHostApi->inputDeviceCount++;
-                    (*hostApi)->info.deviceCount++;
-                }
-            }
-        }
-
-        if( outputDeviceCount > 0 ){
-            /* -1 is the WAVE_MAPPER */
-            for( i = -1; i < outputDeviceCount; ++i ){
-                UINT winMmeDeviceId = (UINT)((i==-1) ? WAVE_MAPPER : i);
-                PaWinMmeDeviceInfo *wmmeDeviceInfo = &deviceInfoArray[ (*hostApi)->info.deviceCount ];
-                PaDeviceInfo *deviceInfo = &wmmeDeviceInfo->inheritedDeviceInfo;
-                deviceInfo->structVersion = 2;
-                deviceInfo->hostApi = hostApiIndex;
-
-                deviceInfo->maxInputChannels = 0;
-                wmmeDeviceInfo->deviceInputChannelCountIsKnown = 1;
-                deviceInfo->maxOutputChannels = 0;
-                wmmeDeviceInfo->deviceOutputChannelCountIsKnown = 1;
-
-                deviceInfo->defaultLowInputLatency = defaultLowLatency;
-                deviceInfo->defaultLowOutputLatency = defaultLowLatency;
-                deviceInfo->defaultHighInputLatency = defaultHighLatency;
-                deviceInfo->defaultHighOutputLatency = defaultHighLatency; 
-
-                result = InitializeOutputDeviceInfo( winMmeHostApi, wmmeDeviceInfo,
-                        winMmeDeviceId, &deviceInfoInitializationSucceeded );
-                if( result != paNoError )
-                    goto error;
-
-                if( deviceInfoInitializationSucceeded ){
-                    if( (*hostApi)->info.defaultOutputDevice == paNoDevice ){
-                        /* if there is currently no default device, use the first one available */
-                        (*hostApi)->info.defaultOutputDevice = (*hostApi)->info.deviceCount;
-
-                    }else if( winMmeDeviceId == waveOutPreferredDevice ){
-                        /* set the default device to the system preferred device */
-                        (*hostApi)->info.defaultOutputDevice = (*hostApi)->info.deviceCount;
-                    }
-
-                    winMmeHostApi->winMmeDeviceIds[ (*hostApi)->info.deviceCount ] = winMmeDeviceId;
-                    (*hostApi)->deviceInfos[ (*hostApi)->info.deviceCount ] = deviceInfo;
-
-                    winMmeHostApi->outputDeviceCount++;
-                    (*hostApi)->info.deviceCount++;
-                }
-            }
-        }
-    }
-    
-    InitializeDefaultDeviceIdsFromEnv( winMmeHostApi );
-
-    (*hostApi)->Terminate = Terminate;
-    (*hostApi)->OpenStream = OpenStream;
-    (*hostApi)->IsFormatSupported = IsFormatSupported;
-
-    PaUtil_InitializeStreamInterface( &winMmeHostApi->callbackStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, GetStreamCpuLoad,
-                                      PaUtil_DummyRead, PaUtil_DummyWrite,
-                                      PaUtil_DummyGetReadAvailable, PaUtil_DummyGetWriteAvailable );
-
-    PaUtil_InitializeStreamInterface( &winMmeHostApi->blockingStreamInterface, CloseStream, StartStream,
-                                      StopStream, AbortStream, IsStreamStopped, IsStreamActive,
-                                      GetStreamTime, PaUtil_DummyGetCpuLoad,
-                                      ReadStream, WriteStream, GetStreamReadAvailable, GetStreamWriteAvailable );
-
-    return result;
-
-error:
-    if( winMmeHostApi )
-    {
-        if( winMmeHostApi->allocations )
-        {
-            PaUtil_FreeAllAllocations( winMmeHostApi->allocations );
-            PaUtil_DestroyAllocationGroup( winMmeHostApi->allocations );
-        }
-        
-        PaUtil_FreeMemory( winMmeHostApi );
-    }
-
-    return result;
-}
-
-
-static void Terminate( struct PaUtilHostApiRepresentation *hostApi )
-{
-    PaWinMmeHostApiRepresentation *winMmeHostApi = (PaWinMmeHostApiRepresentation*)hostApi;
-
-    if( winMmeHostApi->allocations )
-    {
-        PaUtil_FreeAllAllocations( winMmeHostApi->allocations );
-        PaUtil_DestroyAllocationGroup( winMmeHostApi->allocations );
-    }
-
-    PaUtil_FreeMemory( winMmeHostApi );
-}
-
-
-static PaError IsInputChannelCountSupported( PaWinMmeDeviceInfo* deviceInfo, int channelCount )
-{
-    PaError result = paNoError;
-
-    if( channelCount > 0
-            && deviceInfo->deviceInputChannelCountIsKnown
-            && channelCount > deviceInfo->inheritedDeviceInfo.maxInputChannels ){
-
-        result = paInvalidChannelCount; 
-    }
-
-    return result;
-}
-
-static PaError IsOutputChannelCountSupported( PaWinMmeDeviceInfo* deviceInfo, int channelCount )
-{
-    PaError result = paNoError;
-
-    if( channelCount > 0
-            && deviceInfo->deviceOutputChannelCountIsKnown
-            && channelCount > deviceInfo->inheritedDeviceInfo.maxOutputChannels ){
-
-        result = paInvalidChannelCount; 
-    }
-
-    return result;
-}
-
-static PaError IsFormatSupported( struct PaUtilHostApiRepresentation *hostApi,
-                                  const PaStreamParameters *inputParameters,
-                                  const PaStreamParameters *outputParameters,
-                                  double sampleRate )
-{
-    PaWinMmeHostApiRepresentation *winMmeHostApi = (PaWinMmeHostApiRepresentation*)hostApi;
-    PaDeviceInfo *inputDeviceInfo, *outputDeviceInfo;
-    int inputChannelCount, outputChannelCount;
-    int inputMultipleDeviceChannelCount, outputMultipleDeviceChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    PaWinMmeStreamInfo *inputStreamInfo, *outputStreamInfo;
-    UINT winMmeInputDeviceId, winMmeOutputDeviceId;
-    unsigned int i;
-    PaError paerror;
-
-    /* The calls to QueryFormatSupported below are intended to detect invalid
-        sample rates. If we assume that the channel count and format are OK,
-        then the only thing that could fail is the sample rate. This isn't
-        strictly true, but I can't think of a better way to test that the
-        sample rate is valid.
-    */  
-    
-    if( inputParameters )
-    {
-        inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-        inputStreamInfo = inputParameters->hostApiSpecificStreamInfo;
-        
-        /* all standard sample formats are supported by the buffer adapter,
-             this implementation doesn't support any custom sample formats */
-        if( inputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-
-        if( inputParameters->device == paUseHostApiSpecificDeviceSpecification
-                && inputStreamInfo && (inputStreamInfo->flags & paWinMmeUseMultipleDevices) )
-        {
-            inputMultipleDeviceChannelCount = 0;
-            for( i=0; i< inputStreamInfo->deviceCount; ++i )
-            {
-                inputMultipleDeviceChannelCount += inputStreamInfo->devices[i].channelCount;
-                    
-                inputDeviceInfo = hostApi->deviceInfos[ inputStreamInfo->devices[i].device ];
-
-                /* check that input device can support inputChannelCount */
-                if( inputStreamInfo->devices[i].channelCount < 1 )
-                    return paInvalidChannelCount;
-
-                paerror = IsInputChannelCountSupported( (PaWinMmeDeviceInfo*)inputDeviceInfo, 
-                        inputStreamInfo->devices[i].channelCount );
-                if( paerror != paNoError )
-                    return paerror;
-
-                /* test for valid sample rate, see comment above */
-                winMmeInputDeviceId = LocalDeviceIndexToWinMmeDeviceId( winMmeHostApi, inputStreamInfo->devices[i].device );
-                paerror = QueryFormatSupported( inputDeviceInfo, QueryInputWaveFormatEx, winMmeInputDeviceId, inputStreamInfo->devices[i].channelCount, sampleRate );
-                if( paerror != paNoError )
-                    return paInvalidSampleRate;
-            }
-                
-            if( inputMultipleDeviceChannelCount != inputChannelCount )
-                return paIncompatibleHostApiSpecificStreamInfo;                  
-        }
-        else
-        {
-            if( inputStreamInfo && (inputStreamInfo->flags & paWinMmeUseMultipleDevices) )
-                return paIncompatibleHostApiSpecificStreamInfo; /* paUseHostApiSpecificDeviceSpecification was not supplied as the input device */
-
-            inputDeviceInfo = hostApi->deviceInfos[ inputParameters->device ];
-
-            /* check that input device can support inputChannelCount */
-            paerror = IsInputChannelCountSupported( (PaWinMmeDeviceInfo*)inputDeviceInfo, inputChannelCount );
-            if( paerror != paNoError )
-                return paerror;
-
-            /* test for valid sample rate, see comment above */
-            winMmeInputDeviceId = LocalDeviceIndexToWinMmeDeviceId( winMmeHostApi, inputParameters->device );
-            paerror = QueryFormatSupported( inputDeviceInfo, QueryInputWaveFormatEx, winMmeInputDeviceId, inputChannelCount, sampleRate );
-            if( paerror != paNoError )
-                return paInvalidSampleRate;
-        }
-    }
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        outputStreamInfo = outputParameters->hostApiSpecificStreamInfo;
-
-        /* all standard sample formats are supported by the buffer adapter,
-            this implementation doesn't support any custom sample formats */
-        if( outputSampleFormat & paCustomFormat )
-            return paSampleFormatNotSupported;
-
-        if( outputParameters->device == paUseHostApiSpecificDeviceSpecification
-                && outputStreamInfo && (outputStreamInfo->flags & paWinMmeUseMultipleDevices) )
-        {
-            outputMultipleDeviceChannelCount = 0;
-            for( i=0; i< outputStreamInfo->deviceCount; ++i )
-            {
-                outputMultipleDeviceChannelCount += outputStreamInfo->devices[i].channelCount;
-                    
-                outputDeviceInfo = hostApi->deviceInfos[ outputStreamInfo->devices[i].device ];
-
-                /* check that output device can support outputChannelCount */
-                if( outputStreamInfo->devices[i].channelCount < 1 )
-                    return paInvalidChannelCount;
-
-                paerror = IsOutputChannelCountSupported( (PaWinMmeDeviceInfo*)outputDeviceInfo, 
-                        outputStreamInfo->devices[i].channelCount );
-                if( paerror != paNoError )
-                    return paerror;
-
-                /* test for valid sample rate, see comment above */
-                winMmeOutputDeviceId = LocalDeviceIndexToWinMmeDeviceId( winMmeHostApi, outputStreamInfo->devices[i].device );
-                paerror = QueryFormatSupported( outputDeviceInfo, QueryOutputWaveFormatEx, winMmeOutputDeviceId, outputStreamInfo->devices[i].channelCount, sampleRate );
-                if( paerror != paNoError )
-                    return paInvalidSampleRate;
-            }
-                
-            if( outputMultipleDeviceChannelCount != outputChannelCount )
-                return paIncompatibleHostApiSpecificStreamInfo;            
-        }
-        else
-        {
-            if( outputStreamInfo && (outputStreamInfo->flags & paWinMmeUseMultipleDevices) )
-                return paIncompatibleHostApiSpecificStreamInfo; /* paUseHostApiSpecificDeviceSpecification was not supplied as the output device */
-
-            outputDeviceInfo = hostApi->deviceInfos[ outputParameters->device ];
-
-            /* check that output device can support outputChannelCount */
-            paerror = IsOutputChannelCountSupported( (PaWinMmeDeviceInfo*)outputDeviceInfo, outputChannelCount );
-            if( paerror != paNoError )
-                return paerror;
-
-            /* test for valid sample rate, see comment above */
-            winMmeOutputDeviceId = LocalDeviceIndexToWinMmeDeviceId( winMmeHostApi, outputParameters->device );
-            paerror = QueryFormatSupported( outputDeviceInfo, QueryOutputWaveFormatEx, winMmeOutputDeviceId, outputChannelCount, sampleRate );
-            if( paerror != paNoError )
-                return paInvalidSampleRate;
-        }
-    }
-    
-    /*
-            - if a full duplex stream is requested, check that the combination
-                of input and output parameters is supported
-
-            - check that the device supports sampleRate
-
-            for mme all we can do is test that the input and output devices
-            support the requested sample rate and number of channels. we
-            cannot test for full duplex compatibility.
-    */                                             
-
-    return paFormatIsSupported;
-}
-
-
-
-static void SelectBufferSizeAndCount( unsigned long baseBufferSize,
-    unsigned long requestedLatency,
-    unsigned long baseBufferCount, unsigned long minimumBufferCount,
-    unsigned long maximumBufferSize, unsigned long *hostBufferSize,
-    unsigned long *hostBufferCount )
-{
-    unsigned long sizeMultiplier, bufferCount, latency;
-    unsigned long nextLatency, nextBufferSize;
-    int baseBufferSizeIsPowerOfTwo;
-    
-    sizeMultiplier = 1;
-    bufferCount = baseBufferCount;
-
-    /* count-1 below because latency is always determined by one less
-        than the total number of buffers.
-    */
-    latency = (baseBufferSize * sizeMultiplier) * (bufferCount-1);
-
-    if( latency > requestedLatency )
-    {
-
-        /* reduce number of buffers without falling below suggested latency */
-
-        nextLatency = (baseBufferSize * sizeMultiplier) * (bufferCount-2);
-        while( bufferCount > minimumBufferCount && nextLatency >= requestedLatency )
-        {
-            --bufferCount;
-            nextLatency = (baseBufferSize * sizeMultiplier) * (bufferCount-2);
-        }
-
-    }else if( latency < requestedLatency ){
-
-        baseBufferSizeIsPowerOfTwo = (! (baseBufferSize & (baseBufferSize - 1)));
-        if( baseBufferSizeIsPowerOfTwo ){
-
-            /* double size of buffers without exceeding requestedLatency */
-
-            nextBufferSize = (baseBufferSize * (sizeMultiplier*2));
-            nextLatency = nextBufferSize * (bufferCount-1);
-            while( nextBufferSize <= maximumBufferSize
-                    && nextLatency < requestedLatency )
-            {
-                sizeMultiplier *= 2;
-                nextBufferSize = (baseBufferSize * (sizeMultiplier*2));
-                nextLatency = nextBufferSize * (bufferCount-1);
-            }   
-
-        }else{
-
-            /* increase size of buffers upto first excess of requestedLatency */
-
-            nextBufferSize = (baseBufferSize * (sizeMultiplier+1));
-            nextLatency = nextBufferSize * (bufferCount-1);
-            while( nextBufferSize <= maximumBufferSize
-                    && nextLatency < requestedLatency )
-            {
-                ++sizeMultiplier;
-                nextBufferSize = (baseBufferSize * (sizeMultiplier+1));
-                nextLatency = nextBufferSize * (bufferCount-1);
-            }
-
-            if( nextLatency < requestedLatency )
-                ++sizeMultiplier;            
-        }
-
-        /* increase number of buffers until requestedLatency is reached */
-
-        latency = (baseBufferSize * sizeMultiplier) * (bufferCount-1);
-        while( latency < requestedLatency )
-        {
-            ++bufferCount;
-            latency = (baseBufferSize * sizeMultiplier) * (bufferCount-1);
-        }
-    }
-
-    *hostBufferSize = baseBufferSize * sizeMultiplier;
-    *hostBufferCount = bufferCount;
-}
-
-
-static void ReselectBufferCount( unsigned long bufferSize,
-    unsigned long requestedLatency,
-    unsigned long baseBufferCount, unsigned long minimumBufferCount,
-    unsigned long *hostBufferCount )
-{
-    unsigned long bufferCount, latency;
-    unsigned long nextLatency;
-
-    bufferCount = baseBufferCount;
-
-    /* count-1 below because latency is always determined by one less
-        than the total number of buffers.
-    */
-    latency = bufferSize * (bufferCount-1);
-
-    if( latency > requestedLatency )
-    {
-        /* reduce number of buffers without falling below suggested latency */
-
-        nextLatency = bufferSize * (bufferCount-2);
-        while( bufferCount > minimumBufferCount && nextLatency >= requestedLatency )
-        {
-            --bufferCount;
-            nextLatency = bufferSize * (bufferCount-2);
-        }
-
-    }else if( latency < requestedLatency ){
-
-        /* increase number of buffers until requestedLatency is reached */
-
-        latency = bufferSize * (bufferCount-1);
-        while( latency < requestedLatency )
-        {
-            ++bufferCount;
-            latency = bufferSize * (bufferCount-1);
-        }                                                         
-    }
-
-    *hostBufferCount = bufferCount;
-}
-
-
-/* CalculateBufferSettings() fills the framesPerHostInputBuffer, hostInputBufferCount,
-   framesPerHostOutputBuffer and hostOutputBufferCount parameters based on the values
-   of the other parameters.
-*/
-
-static PaError CalculateBufferSettings(
-        unsigned long *framesPerHostInputBuffer, unsigned long *hostInputBufferCount,
-        unsigned long *framesPerHostOutputBuffer, unsigned long *hostOutputBufferCount,
-        int inputChannelCount, PaSampleFormat hostInputSampleFormat,
-        PaTime suggestedInputLatency, PaWinMmeStreamInfo *inputStreamInfo,
-        int outputChannelCount, PaSampleFormat hostOutputSampleFormat,
-        PaTime suggestedOutputLatency, PaWinMmeStreamInfo *outputStreamInfo,
-        double sampleRate, unsigned long framesPerBuffer )
-{
-    PaError result = paNoError;
-    int effectiveInputChannelCount, effectiveOutputChannelCount;
-    int hostInputFrameSize = 0;
-    unsigned int i;
-    
-    if( inputChannelCount > 0 )
-    {
-        int hostInputSampleSize = Pa_GetSampleSize( hostInputSampleFormat );
-        if( hostInputSampleSize < 0 )
-        {
-            result = hostInputSampleSize;
-            goto error;
-        }
-
-        if( inputStreamInfo
-                && ( inputStreamInfo->flags & paWinMmeUseMultipleDevices ) )
-        {
-            /* set effectiveInputChannelCount to the largest number of
-                channels on any one device.
-            */
-            effectiveInputChannelCount = 0;
-            for( i=0; i< inputStreamInfo->deviceCount; ++i )
-            {
-                if( inputStreamInfo->devices[i].channelCount > effectiveInputChannelCount )
-                    effectiveInputChannelCount = inputStreamInfo->devices[i].channelCount;
-            }
-        }
-        else
-        {
-            effectiveInputChannelCount = inputChannelCount;
-        }
-
-        hostInputFrameSize = hostInputSampleSize * effectiveInputChannelCount;
-
-        if( inputStreamInfo
-                && ( inputStreamInfo->flags & paWinMmeUseLowLevelLatencyParameters ) )
-        {
-            if( inputStreamInfo->bufferCount <= 0
-                    || inputStreamInfo->framesPerBuffer <= 0 )
-            {
-                result = paIncompatibleHostApiSpecificStreamInfo;
-                goto error;
-            }
-
-            *framesPerHostInputBuffer = inputStreamInfo->framesPerBuffer;
-            *hostInputBufferCount = inputStreamInfo->bufferCount;
-        }
-        else
-        {
-            unsigned long hostBufferSizeBytes, hostBufferCount;
-            unsigned long minimumBufferCount = (outputChannelCount > 0)
-                    ? PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_
-                    : PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_HALF_DUPLEX_;
-
-            unsigned long maximumBufferSize = (long) ((PA_MME_MAX_HOST_BUFFER_SECS_ * sampleRate) * hostInputFrameSize);
-            if( maximumBufferSize > PA_MME_MAX_HOST_BUFFER_BYTES_ )
-                maximumBufferSize = PA_MME_MAX_HOST_BUFFER_BYTES_;
-
-            /* compute the following in bytes, then convert back to frames */
-
-            SelectBufferSizeAndCount(
-                ((framesPerBuffer == paFramesPerBufferUnspecified)
-                    ? PA_MME_MIN_HOST_BUFFER_FRAMES_WHEN_UNSPECIFIED_
-                    : framesPerBuffer ) * hostInputFrameSize, /* baseBufferSize */
-                ((unsigned long)(suggestedInputLatency * sampleRate)) * hostInputFrameSize, /* suggestedLatency */
-                4, /* baseBufferCount */
-                minimumBufferCount, maximumBufferSize,
-                &hostBufferSizeBytes, &hostBufferCount );
-
-            *framesPerHostInputBuffer = hostBufferSizeBytes / hostInputFrameSize;
-            *hostInputBufferCount = hostBufferCount;
-        }
-    }
-    else
-    {
-        *framesPerHostInputBuffer = 0;
-        *hostInputBufferCount = 0;
-    }
-
-    if( outputChannelCount > 0 )
-    {
-        if( outputStreamInfo
-                && ( outputStreamInfo->flags & paWinMmeUseLowLevelLatencyParameters ) )
-        {
-            if( outputStreamInfo->bufferCount <= 0
-                    || outputStreamInfo->framesPerBuffer <= 0 )
-            {
-                result = paIncompatibleHostApiSpecificStreamInfo;
-                goto error;
-            }
-
-            *framesPerHostOutputBuffer = outputStreamInfo->framesPerBuffer;
-            *hostOutputBufferCount = outputStreamInfo->bufferCount;
-
-            
-            if( inputChannelCount > 0 ) /* full duplex */
-            {
-                if( *framesPerHostInputBuffer != *framesPerHostOutputBuffer )
-                {
-                    if( inputStreamInfo
-                            && ( inputStreamInfo->flags & paWinMmeUseLowLevelLatencyParameters ) )
-                    { 
-                        /* a custom StreamInfo was used for specifying both input
-                            and output buffer sizes, the larger buffer size
-                            must be a multiple of the smaller buffer size */
-
-                        if( *framesPerHostInputBuffer < *framesPerHostOutputBuffer )
-                        {
-                            if( *framesPerHostOutputBuffer % *framesPerHostInputBuffer != 0 )
-                            {
-                                result = paIncompatibleHostApiSpecificStreamInfo;
-                                goto error;
-                            }
-                        }
-                        else
-                        {
-                            assert( *framesPerHostInputBuffer > *framesPerHostOutputBuffer );
-                            if( *framesPerHostInputBuffer % *framesPerHostOutputBuffer != 0 )
-                            {
-                                result = paIncompatibleHostApiSpecificStreamInfo;
-                                goto error;
-                            }
-                        }                        
-                    }
-                    else
-                    {
-                        /* a custom StreamInfo was not used for specifying the input buffer size,
-                            so use the output buffer size, and approximately the same latency. */
-
-                        *framesPerHostInputBuffer = *framesPerHostOutputBuffer;
-                        *hostInputBufferCount = (((unsigned long)(suggestedInputLatency * sampleRate)) / *framesPerHostInputBuffer) + 1;
-
-                        if( *hostInputBufferCount < PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_ )
-                            *hostInputBufferCount = PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_;
-                    }
-                }
-            }
-        }
-        else
-        {
-            unsigned long hostBufferSizeBytes, hostBufferCount;
-            unsigned long minimumBufferCount = PA_MME_MIN_HOST_OUTPUT_BUFFER_COUNT_;
-            unsigned long maximumBufferSize;
-            int hostOutputFrameSize;
-            int hostOutputSampleSize;
-
-            hostOutputSampleSize = Pa_GetSampleSize( hostOutputSampleFormat );
-            if( hostOutputSampleSize < 0 )
-            {
-                result = hostOutputSampleSize;
-                goto error;
-            }
-
-            if( outputStreamInfo
-                && ( outputStreamInfo->flags & paWinMmeUseMultipleDevices ) )
-            {
-                /* set effectiveOutputChannelCount to the largest number of
-                    channels on any one device.
-                */
-                effectiveOutputChannelCount = 0;
-                for( i=0; i< outputStreamInfo->deviceCount; ++i )
-                {
-                    if( outputStreamInfo->devices[i].channelCount > effectiveOutputChannelCount )
-                        effectiveOutputChannelCount = outputStreamInfo->devices[i].channelCount;
-                }
-            }
-            else
-            {
-                effectiveOutputChannelCount = outputChannelCount;
-            }
-
-            hostOutputFrameSize = hostOutputSampleSize * effectiveOutputChannelCount;
-            
-            maximumBufferSize = (long) ((PA_MME_MAX_HOST_BUFFER_SECS_ * sampleRate) * hostOutputFrameSize);
-            if( maximumBufferSize > PA_MME_MAX_HOST_BUFFER_BYTES_ )
-                maximumBufferSize = PA_MME_MAX_HOST_BUFFER_BYTES_;
-
-
-            /* compute the following in bytes, then convert back to frames */
-
-            SelectBufferSizeAndCount(
-                ((framesPerBuffer == paFramesPerBufferUnspecified)
-                    ? PA_MME_MIN_HOST_BUFFER_FRAMES_WHEN_UNSPECIFIED_
-                    : framesPerBuffer ) * hostOutputFrameSize, /* baseBufferSize */
-                ((unsigned long)(suggestedOutputLatency * sampleRate)) * hostOutputFrameSize, /* suggestedLatency */
-                4, /* baseBufferCount */
-                minimumBufferCount,
-                maximumBufferSize,
-                &hostBufferSizeBytes, &hostBufferCount );
-
-            *framesPerHostOutputBuffer = hostBufferSizeBytes / hostOutputFrameSize;
-            *hostOutputBufferCount = hostBufferCount;
-
-
-            if( inputChannelCount > 0 )
-            {
-                /* ensure that both input and output buffer sizes are the same.
-                    if they don't match at this stage, choose the smallest one
-                    and use that for input and output
-                */
-
-                if( *framesPerHostOutputBuffer != *framesPerHostInputBuffer )
-                {
-                    if( framesPerHostInputBuffer < framesPerHostOutputBuffer )
-                    {
-                        unsigned long framesPerHostBuffer = *framesPerHostInputBuffer;
-                        
-                        minimumBufferCount = PA_MME_MIN_HOST_OUTPUT_BUFFER_COUNT_;
-                        ReselectBufferCount(
-                            framesPerHostBuffer * hostOutputFrameSize, /* bufferSize */
-                            ((unsigned long)(suggestedOutputLatency * sampleRate)) * hostOutputFrameSize, /* suggestedLatency */
-                            4, /* baseBufferCount */
-                            minimumBufferCount,
-                            &hostBufferCount );
-
-                        *framesPerHostOutputBuffer = framesPerHostBuffer;
-                        *hostOutputBufferCount = hostBufferCount;
-                    }
-                    else
-                    {
-                        unsigned long framesPerHostBuffer = *framesPerHostOutputBuffer;
-                        
-                        minimumBufferCount = PA_MME_MIN_HOST_INPUT_BUFFER_COUNT_FULL_DUPLEX_;
-                        ReselectBufferCount(
-                            framesPerHostBuffer * hostInputFrameSize, /* bufferSize */
-                            ((unsigned long)(suggestedInputLatency * sampleRate)) * hostInputFrameSize, /* suggestedLatency */
-                            4, /* baseBufferCount */
-                            minimumBufferCount,
-                            &hostBufferCount );
-
-                        *framesPerHostInputBuffer = framesPerHostBuffer;
-                        *hostInputBufferCount = hostBufferCount;
-                    }
-                }   
-            }
-        }
-    }
-    else
-    {
-        *framesPerHostOutputBuffer = 0;
-        *hostOutputBufferCount = 0;
-    }
-
-error:
-    return result;
-}
-
-
-typedef struct
-{
-    HANDLE bufferEvent;
-    void *waveHandles;
-    unsigned int deviceCount;
-    /* unsigned int channelCount; */
-    WAVEHDR **waveHeaders;                  /* waveHeaders[device][buffer] */
-    unsigned int bufferCount;
-    unsigned int currentBufferIndex;
-    unsigned int framesPerBuffer;
-    unsigned int framesUsedInCurrentBuffer;
-}PaWinMmeSingleDirectionHandlesAndBuffers;
-
-/* prototypes for functions operating on PaWinMmeSingleDirectionHandlesAndBuffers */
-
-static void InitializeSingleDirectionHandlesAndBuffers( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers );
-static PaError InitializeWaveHandles( PaWinMmeHostApiRepresentation *winMmeHostApi,
-        PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers,
-        unsigned long bytesPerHostSample,
-        double sampleRate, PaWinMmeDeviceAndChannelCount *devices,
-        unsigned int deviceCount, PaWinWaveFormatChannelMask channelMask, int isInput );
-static PaError TerminateWaveHandles( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers, int isInput, int currentlyProcessingAnError );
-static PaError InitializeWaveHeaders( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers,
-        unsigned long hostBufferCount,
-        PaSampleFormat hostSampleFormat,
-        unsigned long framesPerHostBuffer,
-        PaWinMmeDeviceAndChannelCount *devices,
-        int isInput );
-static void TerminateWaveHeaders( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers, int isInput );
-
-
-static void InitializeSingleDirectionHandlesAndBuffers( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers )
-{
-    handlesAndBuffers->bufferEvent = 0;
-    handlesAndBuffers->waveHandles = 0;
-    handlesAndBuffers->deviceCount = 0;
-    handlesAndBuffers->waveHeaders = 0;
-    handlesAndBuffers->bufferCount = 0;
-}    
-
-static PaError InitializeWaveHandles( PaWinMmeHostApiRepresentation *winMmeHostApi,
-        PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers,
-        unsigned long bytesPerHostSample,
-        double sampleRate, PaWinMmeDeviceAndChannelCount *devices,
-        unsigned int deviceCount, PaWinWaveFormatChannelMask channelMask, int isInput )
-{
-    PaError result;
-    MMRESULT mmresult;
-    signed int i, j;
-
-    /* for error cleanup we expect that InitializeSingleDirectionHandlesAndBuffers()
-        has already been called to zero some fields */       
-
-    result = CreateEventWithPaError( &handlesAndBuffers->bufferEvent, NULL, FALSE, FALSE, NULL );
-    if( result != paNoError ) goto error;
-
-    if( isInput )
-        handlesAndBuffers->waveHandles = (void*)PaUtil_AllocateMemory( sizeof(HWAVEIN) * deviceCount );
-    else
-        handlesAndBuffers->waveHandles = (void*)PaUtil_AllocateMemory( sizeof(HWAVEOUT) * deviceCount );
-    if( !handlesAndBuffers->waveHandles )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    handlesAndBuffers->deviceCount = deviceCount;
-
-    for( i = 0; i < (signed int)deviceCount; ++i )
-    {
-        if( isInput )
-            ((HWAVEIN*)handlesAndBuffers->waveHandles)[i] = 0;
-        else
-            ((HWAVEOUT*)handlesAndBuffers->waveHandles)[i] = 0;
-    }
-
-    for( i = 0; i < (signed int)deviceCount; ++i )
-    {
-        PaWinWaveFormat waveFormat;
-        UINT winMmeDeviceId = LocalDeviceIndexToWinMmeDeviceId( winMmeHostApi, devices[i].device );
-    
-        /* @todo: consider providing a flag or #define to not try waveformat extensible 
-           this could just initialize j to 1 the first time round. */
-
-        for( j = 0; j < 2; ++j )
-        {
-            if( j == 0 )
-            { 
-                /* first, attempt to open the device using WAVEFORMATEXTENSIBLE, 
-                    if this fails we fall back to WAVEFORMATEX */
-
-                /* @todo at the moment we only use 16 bit sample format */
-                PaWin_InitializeWaveFormatExtensible( &waveFormat, devices[i].channelCount, 
-                        paInt16, sampleRate, channelMask );
-
-            }
-            else
-            {
-                /* retry with WAVEFORMATEX */
-
-                PaWin_InitializeWaveFormatEx( &waveFormat, devices[i].channelCount, paInt16, sampleRate );
-            }
-
-            /* REVIEW: consider not firing an event for input when a full duplex
-                stream is being used. this would probably depend on the
-                neverDropInput flag. */
-
-            if( isInput )
-            {
-                mmresult = waveInOpen( &((HWAVEIN*)handlesAndBuffers->waveHandles)[i], winMmeDeviceId, 
-                                    (WAVEFORMATEX*)&waveFormat,
-                               (DWORD_PTR)handlesAndBuffers->bufferEvent, (DWORD_PTR)0, CALLBACK_EVENT );
-            }
-            else
-            {
-                mmresult = waveOutOpen( &((HWAVEOUT*)handlesAndBuffers->waveHandles)[i], winMmeDeviceId, 
-                                    (WAVEFORMATEX*)&waveFormat,
-                                (DWORD_PTR)handlesAndBuffers->bufferEvent, (DWORD_PTR)0, CALLBACK_EVENT );
-            }
-
-            if( mmresult == MMSYSERR_NOERROR )
-            {
-                break; /* success */
-            }
-            else if( j == 0 )
-            {
-                continue; /* try again with WAVEFORMATEX */
-            }
-            else
-            {
-                switch( mmresult )
-                {
-                    case MMSYSERR_ALLOCATED:    /* Specified resource is already allocated. */
-                        result = paDeviceUnavailable;
-                        break;
-                    case MMSYSERR_NODRIVER:	    /* No device driver is present. */
-                        result = paDeviceUnavailable;
-                        break;
-                    case MMSYSERR_NOMEM:	    /* Unable to allocate or lock memory. */
-                        result = paInsufficientMemory;
-                        break;
-
-                    case MMSYSERR_BADDEVICEID:	/* Specified device identifier is out of range. */
-                        /* falls through */
-
-                    case WAVERR_BADFORMAT:      /* Attempted to open with an unsupported waveform-audio format. */
-                                                    /* This can also occur if we try to open the device with an unsupported
-                                                     * number of channels. This is attempted when device*ChannelCountIsKnown is
-                                                     * set to 0. 
-                                                     */
-                        /* falls through */
-                    default:
-                        result = paUnanticipatedHostError;
-                        if( isInput )
-                        {
-                            PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                        }
-                        else
-                        {
-                            PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                        }
-                }
-                goto error;
-            }
-        }
-    }
-
-    return result;
-
-error:
-    TerminateWaveHandles( handlesAndBuffers, isInput, 1 /* currentlyProcessingAnError */ );
-
-    return result;
-}
-
-
-static PaError TerminateWaveHandles( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers, int isInput, int currentlyProcessingAnError )
-{
-    PaError result = paNoError;
-    MMRESULT mmresult;
-    signed int i;
-    
-    if( handlesAndBuffers->waveHandles )
-    {
-        for( i = handlesAndBuffers->deviceCount-1; i >= 0; --i )
-        {
-            if( isInput )
-            {
-                if( ((HWAVEIN*)handlesAndBuffers->waveHandles)[i] )
-                    mmresult = waveInClose( ((HWAVEIN*)handlesAndBuffers->waveHandles)[i] );
-                else
-                    mmresult = MMSYSERR_NOERROR;
-            }
-            else
-            {
-                if( ((HWAVEOUT*)handlesAndBuffers->waveHandles)[i] )
-                    mmresult = waveOutClose( ((HWAVEOUT*)handlesAndBuffers->waveHandles)[i] );
-                else
-                    mmresult = MMSYSERR_NOERROR;
-            }
-
-            if( mmresult != MMSYSERR_NOERROR &&
-                !currentlyProcessingAnError ) /* don't update the error state if we're already processing an error */
-            {
-                result = paUnanticipatedHostError;
-                if( isInput )
-                {
-                    PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                }
-                else
-                {
-                    PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                }
-                /* note that we don't break here, we try to continue closing devices */
-            }
-        }
-
-        PaUtil_FreeMemory( handlesAndBuffers->waveHandles );
-        handlesAndBuffers->waveHandles = 0;
-    }
-
-    if( handlesAndBuffers->bufferEvent )
-    {
-        result = CloseHandleWithPaError( handlesAndBuffers->bufferEvent );
-        handlesAndBuffers->bufferEvent = 0;
-    }
-    
-    return result;
-}
-
-
-static PaError InitializeWaveHeaders( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers,
-        unsigned long hostBufferCount,
-        PaSampleFormat hostSampleFormat,
-        unsigned long framesPerHostBuffer,
-        PaWinMmeDeviceAndChannelCount *devices,
-        int isInput )
-{
-    PaError result = paNoError;
-    MMRESULT mmresult;
-    WAVEHDR *deviceWaveHeaders;
-    signed int i, j;
-
-    /* for error cleanup we expect that InitializeSingleDirectionHandlesAndBuffers()
-        has already been called to zero some fields */
-        
-
-    /* allocate an array of pointers to arrays of wave headers, one array of
-        wave headers per device */
-    handlesAndBuffers->waveHeaders = (WAVEHDR**)PaUtil_AllocateMemory( sizeof(WAVEHDR*) * handlesAndBuffers->deviceCount );
-    if( !handlesAndBuffers->waveHeaders )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-    
-    for( i = 0; i < (signed int)handlesAndBuffers->deviceCount; ++i )
-        handlesAndBuffers->waveHeaders[i] = 0;
-
-    handlesAndBuffers->bufferCount = hostBufferCount;
-
-    for( i = 0; i < (signed int)handlesAndBuffers->deviceCount; ++i )
-    {
-        int bufferBytes = Pa_GetSampleSize( hostSampleFormat ) *
-                framesPerHostBuffer * devices[i].channelCount;
-        if( bufferBytes < 0 )
-        {
-            result = paInternalError;
-            goto error;
-        }
-
-        /* Allocate an array of wave headers for device i */
-        deviceWaveHeaders = (WAVEHDR *) PaUtil_AllocateMemory( sizeof(WAVEHDR)*hostBufferCount );
-        if( !deviceWaveHeaders )
-        {
-            result = paInsufficientMemory;
-            goto error;
-        }
-
-        for( j=0; j < (signed int)hostBufferCount; ++j )
-            deviceWaveHeaders[j].lpData = 0;
-
-        handlesAndBuffers->waveHeaders[i] = deviceWaveHeaders;
-
-        /* Allocate a buffer for each wave header */
-        for( j=0; j < (signed int)hostBufferCount; ++j )
-        {
-            deviceWaveHeaders[j].lpData = (char *)PaUtil_AllocateMemory( bufferBytes );
-            if( !deviceWaveHeaders[j].lpData )
-            {
-                result = paInsufficientMemory;
-                goto error;
-            }
-            deviceWaveHeaders[j].dwBufferLength = bufferBytes;
-            deviceWaveHeaders[j].dwUser = 0xFFFFFFFF; /* indicates that *PrepareHeader() has not yet been called, for error clean up code */
-
-            if( isInput )
-            {
-                mmresult = waveInPrepareHeader( ((HWAVEIN*)handlesAndBuffers->waveHandles)[i], &deviceWaveHeaders[j], sizeof(WAVEHDR) );
-                if( mmresult != MMSYSERR_NOERROR )
-                {
-                    result = paUnanticipatedHostError;
-                    PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                    goto error;
-                }
-            }
-            else /* output */
-            {
-                mmresult = waveOutPrepareHeader( ((HWAVEOUT*)handlesAndBuffers->waveHandles)[i], &deviceWaveHeaders[j], sizeof(WAVEHDR) );
-                if( mmresult != MMSYSERR_NOERROR )
-                {
-                    result = paUnanticipatedHostError;
-                    PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                    goto error;
-                }
-            }
-            deviceWaveHeaders[j].dwUser = devices[i].channelCount;
-        }
-    }
-
-    return result;
-
-error:
-    TerminateWaveHeaders( handlesAndBuffers, isInput );
-    
-    return result;
-}
-
-
-static void TerminateWaveHeaders( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers, int isInput )
-{
-    signed int i, j;
-    WAVEHDR *deviceWaveHeaders;
-    
-    if( handlesAndBuffers->waveHeaders )
-    {
-        for( i = handlesAndBuffers->deviceCount-1; i >= 0 ; --i )
-        {
-            deviceWaveHeaders = handlesAndBuffers->waveHeaders[i];  /* wave headers for device i */
-            if( deviceWaveHeaders )
-            {
-                for( j = handlesAndBuffers->bufferCount-1; j >= 0; --j )
-                {
-                    if( deviceWaveHeaders[j].lpData )
-                    {
-                        if( deviceWaveHeaders[j].dwUser != 0xFFFFFFFF )
-                        {
-                            if( isInput )
-                                waveInUnprepareHeader( ((HWAVEIN*)handlesAndBuffers->waveHandles)[i], &deviceWaveHeaders[j], sizeof(WAVEHDR) );
-                            else
-                                waveOutUnprepareHeader( ((HWAVEOUT*)handlesAndBuffers->waveHandles)[i], &deviceWaveHeaders[j], sizeof(WAVEHDR) );
-                        }
-
-                        PaUtil_FreeMemory( deviceWaveHeaders[j].lpData );
-                    }
-                }
-
-                PaUtil_FreeMemory( deviceWaveHeaders );
-            }
-        }
-
-        PaUtil_FreeMemory( handlesAndBuffers->waveHeaders );
-        handlesAndBuffers->waveHeaders = 0;
-    }
-}
-
-
-
-/* PaWinMmeStream - a stream data structure specifically for this implementation */
-/* note that struct PaWinMmeStream is typedeffed to PaWinMmeStream above. */
-struct PaWinMmeStream
-{
-    PaUtilStreamRepresentation streamRepresentation;
-    PaUtilCpuLoadMeasurer cpuLoadMeasurer;
-    PaUtilBufferProcessor bufferProcessor;
-
-    int primeStreamUsingCallback;
-
-    PaWinMmeSingleDirectionHandlesAndBuffers input;
-    PaWinMmeSingleDirectionHandlesAndBuffers output;
-
-    /* Processing thread management -------------- */
-    HANDLE abortEvent;
-    HANDLE processingThread;
-    DWORD processingThreadId;
-
-    char throttleProcessingThreadOnOverload; /* 0 -> don't throtte, non-0 -> throttle */
-    int processingThreadPriority;
-    int highThreadPriority;
-    int throttledThreadPriority;
-    unsigned long throttledSleepMsecs;
-
-    int isStopped;
-    volatile int isActive;
-    volatile int stopProcessing; /* stop thread once existing buffers have been returned */
-    volatile int abortProcessing; /* stop thread immediately */
-
-    DWORD allBuffersDurationMs; /* used to calculate timeouts */
-};
-
-/* updates deviceCount if PaWinMmeUseMultipleDevices is used */
-
-static PaError ValidateWinMmeSpecificStreamInfo(
-        const PaStreamParameters *streamParameters,
-        const PaWinMmeStreamInfo *streamInfo,
-        char *throttleProcessingThreadOnOverload,
-        unsigned long *deviceCount )
-{
-	if( streamInfo )
-	{
-	    if( streamInfo->size != sizeof( PaWinMmeStreamInfo )
-	            || streamInfo->version != 1 )
-	    {
-	        return paIncompatibleHostApiSpecificStreamInfo;
-	    }
-
-	    if( streamInfo->flags & paWinMmeDontThrottleOverloadedProcessingThread )
-	        *throttleProcessingThreadOnOverload = 0;
-            
-	    if( streamInfo->flags & paWinMmeUseMultipleDevices )
-	    {
-	        if( streamParameters->device != paUseHostApiSpecificDeviceSpecification )
-	            return paInvalidDevice;
-	
-			*deviceCount = streamInfo->deviceCount;
-		}	
-	}
-
-	return paNoError;
-}
-
-static PaError RetrieveDevicesFromStreamParameters(
-        struct PaUtilHostApiRepresentation *hostApi,
-        const PaStreamParameters *streamParameters,
-        const PaWinMmeStreamInfo *streamInfo,
-        PaWinMmeDeviceAndChannelCount *devices,
-        unsigned long deviceCount )
-{
-    PaError result = paNoError;
-    unsigned int i;
-    int totalChannelCount;
-    PaDeviceIndex hostApiDevice;
-    
-	if( streamInfo && streamInfo->flags & paWinMmeUseMultipleDevices )
-	{
-		totalChannelCount = 0;
-	    for( i=0; i < deviceCount; ++i )
-	    {
-	        /* validate that the device number is within range */
-	        result = PaUtil_DeviceIndexToHostApiDeviceIndex( &hostApiDevice,
-	                        streamInfo->devices[i].device, hostApi );
-	        if( result != paNoError )
-	            return result;
-	        
-	        devices[i].device = hostApiDevice;
-	        devices[i].channelCount = streamInfo->devices[i].channelCount;
-	
-	        totalChannelCount += devices[i].channelCount;
-	    }
-	
-	    if( totalChannelCount != streamParameters->channelCount )
-	    {
-	        /* channelCount must match total channels specified by multiple devices */
-	        return paInvalidChannelCount; /* REVIEW use of this error code */
-	    }
-	}	
-	else
-	{		
-	    devices[0].device = streamParameters->device;
-	    devices[0].channelCount = streamParameters->channelCount;
-	}
-
-    return result;
-}
-
-static PaError ValidateInputChannelCounts(
-        struct PaUtilHostApiRepresentation *hostApi,
-        PaWinMmeDeviceAndChannelCount *devices,
-        unsigned long deviceCount )
-{
-    unsigned int i;
-    PaWinMmeDeviceInfo *inputDeviceInfo;
-    PaError paerror;
-
-	for( i=0; i < deviceCount; ++i )
-	{
-        if( devices[i].channelCount < 1 )
-        	return paInvalidChannelCount;
-
-        inputDeviceInfo = 
-                (PaWinMmeDeviceInfo*)hostApi->deviceInfos[ devices[i].device ];
-
-        paerror = IsInputChannelCountSupported( inputDeviceInfo, devices[i].channelCount );
-        if( paerror != paNoError )
-            return paerror;
-	}
-
-    return paNoError;
-}
-
-static PaError ValidateOutputChannelCounts(
-        struct PaUtilHostApiRepresentation *hostApi,
-        PaWinMmeDeviceAndChannelCount *devices,
-        unsigned long deviceCount )
-{
-    unsigned int i;
-    PaWinMmeDeviceInfo *outputDeviceInfo;
-    PaError paerror;
-
-	for( i=0; i < deviceCount; ++i )
-	{
-        if( devices[i].channelCount < 1 )
-        	return paInvalidChannelCount;
-
-        outputDeviceInfo = 
-                (PaWinMmeDeviceInfo*)hostApi->deviceInfos[ devices[i].device ];
-
-        paerror = IsOutputChannelCountSupported( outputDeviceInfo, devices[i].channelCount );
-        if( paerror != paNoError )
-            return paerror;
-	}
-
-    return paNoError;
-}
-
-
-/* the following macros are intended to improve the readability of the following code */
-#define PA_IS_INPUT_STREAM_( stream ) ( stream ->input.waveHandles )
-#define PA_IS_OUTPUT_STREAM_( stream ) ( stream ->output.waveHandles )
-#define PA_IS_FULL_DUPLEX_STREAM_( stream ) ( stream ->input.waveHandles && stream ->output.waveHandles )
-#define PA_IS_HALF_DUPLEX_STREAM_( stream ) ( !(stream ->input.waveHandles && stream ->output.waveHandles) )
-
-static PaError OpenStream( struct PaUtilHostApiRepresentation *hostApi,
-                           PaStream** s,
-                           const PaStreamParameters *inputParameters,
-                           const PaStreamParameters *outputParameters,
-                           double sampleRate,
-                           unsigned long framesPerBuffer,
-                           PaStreamFlags streamFlags,
-                           PaStreamCallback *streamCallback,
-                           void *userData )
-{
-    PaError result;
-    PaWinMmeHostApiRepresentation *winMmeHostApi = (PaWinMmeHostApiRepresentation*)hostApi;
-    PaWinMmeStream *stream = 0;
-    int bufferProcessorIsInitialized = 0;
-    int streamRepresentationIsInitialized = 0;
-    PaSampleFormat hostInputSampleFormat, hostOutputSampleFormat;
-    int inputChannelCount, outputChannelCount;
-    PaSampleFormat inputSampleFormat, outputSampleFormat;
-    double suggestedInputLatency, suggestedOutputLatency;
-    PaWinMmeStreamInfo *inputStreamInfo, *outputStreamInfo;
-    PaWinWaveFormatChannelMask inputChannelMask, outputChannelMask;
-    unsigned long framesPerHostInputBuffer;
-    unsigned long hostInputBufferCount;
-    unsigned long framesPerHostOutputBuffer;
-    unsigned long hostOutputBufferCount;
-    unsigned long framesPerBufferProcessorCall;
-    PaWinMmeDeviceAndChannelCount *inputDevices = 0;  /* contains all devices and channel counts as local host api ids, even when PaWinMmeUseMultipleDevices is not used */
-    unsigned long inputDeviceCount = 0;            
-    PaWinMmeDeviceAndChannelCount *outputDevices = 0;
-    unsigned long outputDeviceCount = 0;                /* contains all devices and channel counts as local host api ids, even when PaWinMmeUseMultipleDevices is not used */
-    char throttleProcessingThreadOnOverload = 1;
-
-    
-    if( inputParameters )
-    {
-		inputChannelCount = inputParameters->channelCount;
-        inputSampleFormat = inputParameters->sampleFormat;
-        suggestedInputLatency = inputParameters->suggestedLatency;
-
-      	inputDeviceCount = 1;
-
-		/* validate input hostApiSpecificStreamInfo */
-        inputStreamInfo = (PaWinMmeStreamInfo*)inputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinMmeSpecificStreamInfo( inputParameters, inputStreamInfo,
-				&throttleProcessingThreadOnOverload,
-				&inputDeviceCount );
-		if( result != paNoError ) return result;
-
-		inputDevices = (PaWinMmeDeviceAndChannelCount*)alloca( sizeof(PaWinMmeDeviceAndChannelCount) * inputDeviceCount );
-        if( !inputDevices ) return paInsufficientMemory;
-
-		result = RetrieveDevicesFromStreamParameters( hostApi, inputParameters, inputStreamInfo, inputDevices, inputDeviceCount );
-		if( result != paNoError ) return result;
-
-		result = ValidateInputChannelCounts( hostApi, inputDevices, inputDeviceCount );
-		if( result != paNoError ) return result;
-
-        hostInputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, inputSampleFormat );
-
-        if( inputDeviceCount != 1 ){
-            /* always use direct speakers when using multi-device multichannel mode */
-            inputChannelMask = PAWIN_SPEAKER_DIRECTOUT;           
-        }
-        else
-        {
-            if( inputStreamInfo && inputStreamInfo->flags & paWinMmeUseChannelMask )
-                inputChannelMask = inputStreamInfo->channelMask;
-            else
-                inputChannelMask = PaWin_DefaultChannelMask( inputDevices[0].channelCount );
-        }
-	}
-    else
-    {
-        inputChannelCount = 0;
-        inputSampleFormat = 0;
-        suggestedInputLatency = 0.;
-        inputStreamInfo = 0;
-        hostInputSampleFormat = 0;
-    }
-
-
-    if( outputParameters )
-    {
-        outputChannelCount = outputParameters->channelCount;
-        outputSampleFormat = outputParameters->sampleFormat;
-        suggestedOutputLatency = outputParameters->suggestedLatency;
-
-        outputDeviceCount = 1;
-
-		/* validate output hostApiSpecificStreamInfo */
-        outputStreamInfo = (PaWinMmeStreamInfo*)outputParameters->hostApiSpecificStreamInfo;
-		result = ValidateWinMmeSpecificStreamInfo( outputParameters, outputStreamInfo,
-				&throttleProcessingThreadOnOverload,
-				&outputDeviceCount );
-		if( result != paNoError ) return result;
-
-		outputDevices = (PaWinMmeDeviceAndChannelCount*)alloca( sizeof(PaWinMmeDeviceAndChannelCount) * outputDeviceCount );
-        if( !outputDevices ) return paInsufficientMemory;
-
-		result = RetrieveDevicesFromStreamParameters( hostApi, outputParameters, outputStreamInfo, outputDevices, outputDeviceCount );
-		if( result != paNoError ) return result;
-
-		result = ValidateOutputChannelCounts( hostApi, outputDevices, outputDeviceCount );
-		if( result != paNoError ) return result;
-
-        hostOutputSampleFormat =
-            PaUtil_SelectClosestAvailableFormat( paInt16 /* native formats */, outputSampleFormat );
-
-        if( outputDeviceCount != 1 ){
-            /* always use direct speakers when using multi-device multichannel mode */
-            outputChannelMask = PAWIN_SPEAKER_DIRECTOUT;           
-        }
-        else
-        {
-            if( outputStreamInfo && outputStreamInfo->flags & paWinMmeUseChannelMask )
-                outputChannelMask = outputStreamInfo->channelMask;
-            else
-                outputChannelMask = PaWin_DefaultChannelMask( outputDevices[0].channelCount );
-        }
-    }
-    else
-    {
-        outputChannelCount = 0;
-        outputSampleFormat = 0;
-        outputStreamInfo = 0;
-        hostOutputSampleFormat = 0;
-        suggestedOutputLatency = 0.;
-    }
-
-
-    /*
-        IMPLEMENT ME:
-            - alter sampleRate to a close allowable rate if possible / necessary
-    */
-
-
-    /* validate platform specific flags */
-    if( (streamFlags & paPlatformSpecificFlags) != 0 )
-        return paInvalidFlag; /* unexpected platform specific flag */
-
-
-    result = CalculateBufferSettings( &framesPerHostInputBuffer, &hostInputBufferCount,
-                &framesPerHostOutputBuffer, &hostOutputBufferCount,
-                inputChannelCount, hostInputSampleFormat, suggestedInputLatency, inputStreamInfo,
-                outputChannelCount, hostOutputSampleFormat, suggestedOutputLatency, outputStreamInfo,
-                sampleRate, framesPerBuffer );
-    if( result != paNoError ) goto error;
-
-
-    stream = (PaWinMmeStream*)PaUtil_AllocateMemory( sizeof(PaWinMmeStream) );
-    if( !stream )
-    {
-        result = paInsufficientMemory;
-        goto error;
-    }
-
-    InitializeSingleDirectionHandlesAndBuffers( &stream->input );
-    InitializeSingleDirectionHandlesAndBuffers( &stream->output );
-
-    stream->abortEvent = 0;
-    stream->processingThread = 0;
-
-    stream->throttleProcessingThreadOnOverload = throttleProcessingThreadOnOverload;
-
-    PaUtil_InitializeStreamRepresentation( &stream->streamRepresentation,
-                                           ( (streamCallback)
-                                            ? &winMmeHostApi->callbackStreamInterface
-                                            : &winMmeHostApi->blockingStreamInterface ),
-                                           streamCallback, userData );
-    streamRepresentationIsInitialized = 1;
-
-    PaUtil_InitializeCpuLoadMeasurer( &stream->cpuLoadMeasurer, sampleRate );
-
-
-    if( inputParameters && outputParameters ) /* full duplex */
-    {
-        if( framesPerHostInputBuffer < framesPerHostOutputBuffer )
-        {
-            assert( (framesPerHostOutputBuffer % framesPerHostInputBuffer) == 0 ); /* CalculateBufferSettings() should guarantee this condition */
-
-            framesPerBufferProcessorCall = framesPerHostInputBuffer;
-        }
-        else
-        {
-            assert( (framesPerHostInputBuffer % framesPerHostOutputBuffer) == 0 ); /* CalculateBufferSettings() should guarantee this condition */
-            
-            framesPerBufferProcessorCall = framesPerHostOutputBuffer;
-        }
-    }
-    else if( inputParameters )
-    {
-        framesPerBufferProcessorCall = framesPerHostInputBuffer;
-    }
-    else if( outputParameters )
-    {
-        framesPerBufferProcessorCall = framesPerHostOutputBuffer;
-    }
-
-    stream->input.framesPerBuffer = framesPerHostInputBuffer;
-    stream->output.framesPerBuffer = framesPerHostOutputBuffer;
-
-    result =  PaUtil_InitializeBufferProcessor( &stream->bufferProcessor,
-                    inputChannelCount, inputSampleFormat, hostInputSampleFormat,
-                    outputChannelCount, outputSampleFormat, hostOutputSampleFormat,
-                    sampleRate, streamFlags, framesPerBuffer,
-                    framesPerBufferProcessorCall, paUtilFixedHostBufferSize,
-                    streamCallback, userData );
-    if( result != paNoError ) goto error;
-    
-    bufferProcessorIsInitialized = 1;
-
-    stream->streamRepresentation.streamInfo.inputLatency =
-            (double)(PaUtil_GetBufferProcessorInputLatency(&stream->bufferProcessor)
-                +(framesPerHostInputBuffer * (hostInputBufferCount-1))) / sampleRate;
-    stream->streamRepresentation.streamInfo.outputLatency =
-            (double)(PaUtil_GetBufferProcessorOutputLatency(&stream->bufferProcessor)
-                +(framesPerHostOutputBuffer * (hostOutputBufferCount-1))) / sampleRate;
-    stream->streamRepresentation.streamInfo.sampleRate = sampleRate;
-
-    stream->primeStreamUsingCallback = ( (streamFlags&paPrimeOutputBuffersUsingStreamCallback) && streamCallback ) ? 1 : 0;
-
-    /* time to sleep when throttling due to >100% cpu usage.
-        -a quater of a buffer's duration */
-    stream->throttledSleepMsecs =
-            (unsigned long)(stream->bufferProcessor.framesPerHostBuffer *
-             stream->bufferProcessor.samplePeriod * .25 * 1000);
-
-    stream->isStopped = 1;
-    stream->isActive = 0;
-
-
-    /* for maximum compatibility with multi-device multichannel drivers,
-        we first open all devices, then we prepare all buffers, finally
-        we start all devices ( in StartStream() ). teardown in reverse order.
-    */
-
-    if( inputParameters )
-    {
-        result = InitializeWaveHandles( winMmeHostApi, &stream->input,
-                stream->bufferProcessor.bytesPerHostInputSample, sampleRate,
-                inputDevices, inputDeviceCount, inputChannelMask, 1 /* isInput */ );
-        if( result != paNoError ) goto error;
-    }
-    
-    if( outputParameters )
-    {
-        result = InitializeWaveHandles( winMmeHostApi, &stream->output,
-                stream->bufferProcessor.bytesPerHostOutputSample, sampleRate,
-                outputDevices, outputDeviceCount, outputChannelMask, 0 /* isInput */ );
-        if( result != paNoError ) goto error;
-    }
-
-    if( inputParameters )
-    {
-        result = InitializeWaveHeaders( &stream->input, hostInputBufferCount,
-                hostInputSampleFormat, framesPerHostInputBuffer, inputDevices, 1 /* isInput */ );
-        if( result != paNoError ) goto error;
-    }
-
-    if( outputParameters )
-    {
-        result = InitializeWaveHeaders( &stream->output, hostOutputBufferCount,
-                hostOutputSampleFormat, framesPerHostOutputBuffer, outputDevices, 0 /* not isInput */ );
-        if( result != paNoError ) goto error;
-
-        stream->allBuffersDurationMs = (DWORD) (1000.0 * (framesPerHostOutputBuffer * stream->output.bufferCount) / sampleRate);
-    }
-    else
-    {
-        stream->allBuffersDurationMs = (DWORD) (1000.0 * (framesPerHostInputBuffer * stream->input.bufferCount) / sampleRate);
-    }
-
-    
-    if( streamCallback )
-    {
-        /* abort event is only needed for callback streams */
-        result = CreateEventWithPaError( &stream->abortEvent, NULL, TRUE, FALSE, NULL );
-        if( result != paNoError ) goto error;
-    }
-
-    *s = (PaStream*)stream;
-
-    return result;
-
-error:
-
-    if( stream )
-    {
-        if( stream->abortEvent )
-            CloseHandle( stream->abortEvent );
-            
-        TerminateWaveHeaders( &stream->output, 0 /* not isInput */ );
-        TerminateWaveHeaders( &stream->input, 1 /* isInput */ );
-
-        TerminateWaveHandles( &stream->output, 0 /* not isInput */, 1 /* currentlyProcessingAnError */ );
-        TerminateWaveHandles( &stream->input, 1 /* isInput */, 1 /* currentlyProcessingAnError */ );
-
-        if( bufferProcessorIsInitialized )
-            PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-
-        if( streamRepresentationIsInitialized )
-            PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-
-        PaUtil_FreeMemory( stream );
-    }
-
-    return result;
-}
-
-
-/* return non-zero if all current buffers are done */
-static int BuffersAreDone( WAVEHDR **waveHeaders, unsigned int deviceCount, int bufferIndex )
-{
-    unsigned int i;
-    
-    for( i=0; i < deviceCount; ++i )
-    {
-        if( !(waveHeaders[i][ bufferIndex ].dwFlags & WHDR_DONE) )
-        {
-            return 0;
-        }         
-    }
-
-    return 1;
-}
-
-static int CurrentInputBuffersAreDone( PaWinMmeStream *stream )
-{
-    return BuffersAreDone( stream->input.waveHeaders, stream->input.deviceCount, stream->input.currentBufferIndex );
-}
-
-static int CurrentOutputBuffersAreDone( PaWinMmeStream *stream )
-{
-    return BuffersAreDone( stream->output.waveHeaders, stream->output.deviceCount, stream->output.currentBufferIndex );
-}
-
-
-/* return non-zero if any buffers are queued */
-static int NoBuffersAreQueued( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers )
-{
-    unsigned int i, j;
-
-    if( handlesAndBuffers->waveHandles )
-    {
-        for( i=0; i < handlesAndBuffers->bufferCount; ++i )
-        {
-            for( j=0; j < handlesAndBuffers->deviceCount; ++j )
-            {
-                if( !( handlesAndBuffers->waveHeaders[ j ][ i ].dwFlags & WHDR_DONE) )
-                {
-                    return 0;
-                }
-            }
-        }
-    }
-
-    return 1;
-}
-
-
-#define PA_CIRCULAR_INCREMENT_( current, max )\
-    ( (((current) + 1) >= (max)) ? (0) : (current+1) )
-
-#define PA_CIRCULAR_DECREMENT_( current, max )\
-    ( ((current) == 0) ? ((max)-1) : (current-1) )
-    
-
-static signed long GetAvailableFrames( PaWinMmeSingleDirectionHandlesAndBuffers *handlesAndBuffers )
-{
-    signed long result = 0;
-    unsigned int i;
-    
-    if( BuffersAreDone( handlesAndBuffers->waveHeaders, handlesAndBuffers->deviceCount, handlesAndBuffers->currentBufferIndex ) )
-    {
-        /* we could calculate the following in O(1) if we kept track of the
-            last done buffer */
-        result = handlesAndBuffers->framesPerBuffer - handlesAndBuffers->framesUsedInCurrentBuffer;
-
-        i = PA_CIRCULAR_INCREMENT_( handlesAndBuffers->currentBufferIndex, handlesAndBuffers->bufferCount );
-        while( i != handlesAndBuffers->currentBufferIndex )
-        {
-            if( BuffersAreDone( handlesAndBuffers->waveHeaders, handlesAndBuffers->deviceCount, i ) )
-            {
-                result += handlesAndBuffers->framesPerBuffer;
-                i = PA_CIRCULAR_INCREMENT_( i, handlesAndBuffers->bufferCount );
-            }
-            else
-                break;
-        }
-    }
-
-    return result;
-}
-
-
-static PaError AdvanceToNextInputBuffer( PaWinMmeStream *stream )
-{
-    PaError result = paNoError;
-    MMRESULT mmresult;
-    unsigned int i;
-
-    for( i=0; i < stream->input.deviceCount; ++i )
-    {
-        stream->input.waveHeaders[i][ stream->input.currentBufferIndex ].dwFlags &= ~WHDR_DONE;
-        mmresult = waveInAddBuffer( ((HWAVEIN*)stream->input.waveHandles)[i],
-                                    &stream->input.waveHeaders[i][ stream->input.currentBufferIndex ],
-                                    sizeof(WAVEHDR) );
-        if( mmresult != MMSYSERR_NOERROR )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-        }
-    }
-
-    stream->input.currentBufferIndex =
-            PA_CIRCULAR_INCREMENT_( stream->input.currentBufferIndex, stream->input.bufferCount );
-
-    stream->input.framesUsedInCurrentBuffer = 0;
-
-    return result;
-}
-
-
-static PaError AdvanceToNextOutputBuffer( PaWinMmeStream *stream )
-{
-    PaError result = paNoError;
-    MMRESULT mmresult;
-    unsigned int i;
-
-    for( i=0; i < stream->output.deviceCount; ++i )
-    {
-        mmresult = waveOutWrite( ((HWAVEOUT*)stream->output.waveHandles)[i],
-                                 &stream->output.waveHeaders[i][ stream->output.currentBufferIndex ],
-                                 sizeof(WAVEHDR) );
-        if( mmresult != MMSYSERR_NOERROR )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-        }
-    }
-
-    stream->output.currentBufferIndex =
-            PA_CIRCULAR_INCREMENT_( stream->output.currentBufferIndex, stream->output.bufferCount );
-
-    stream->output.framesUsedInCurrentBuffer = 0;
-    
-    return result;
-}
-
-
-/* requeue all but the most recent input with the driver. Used for catching
-    up after a total input buffer underrun */
-static PaError CatchUpInputBuffers( PaWinMmeStream *stream )
-{
-    PaError result = paNoError;
-    unsigned int i;
-    
-    for( i=0; i < stream->input.bufferCount - 1; ++i )
-    {
-        result = AdvanceToNextInputBuffer( stream );
-        if( result != paNoError )
-            break;
-    }
-
-    return result;
-}
-
-
-/* take the most recent output and duplicate it to all other output buffers
-    and requeue them. Used for catching up after a total output buffer underrun.
-*/
-static PaError CatchUpOutputBuffers( PaWinMmeStream *stream )
-{
-    PaError result = paNoError;
-    unsigned int i, j;
-    unsigned int previousBufferIndex =
-            PA_CIRCULAR_DECREMENT_( stream->output.currentBufferIndex, stream->output.bufferCount );
-
-    for( i=0; i < stream->output.bufferCount - 1; ++i )
-    {
-        for( j=0; j < stream->output.deviceCount; ++j )
-        {
-            if( stream->output.waveHeaders[j][ stream->output.currentBufferIndex ].lpData
-                    != stream->output.waveHeaders[j][ previousBufferIndex ].lpData )
-            {
-                CopyMemory( stream->output.waveHeaders[j][ stream->output.currentBufferIndex ].lpData,
-                            stream->output.waveHeaders[j][ previousBufferIndex ].lpData,
-                            stream->output.waveHeaders[j][ stream->output.currentBufferIndex ].dwBufferLength );
-            }
-        }
-
-        result = AdvanceToNextOutputBuffer( stream );
-        if( result != paNoError )
-            break;
-    }
-
-    return result;
-}
-
-
-static DWORD WINAPI ProcessingThreadProc( void *pArg )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream *)pArg;
-    HANDLE events[3];
-    int eventCount = 0;
-    DWORD result = paNoError;
-    DWORD waitResult;
-    DWORD timeout = (unsigned long)(stream->allBuffersDurationMs * 0.5);
-    int hostBuffersAvailable;
-    signed int hostInputBufferIndex, hostOutputBufferIndex;
-    PaStreamCallbackFlags statusFlags;
-    int callbackResult;
-    int done = 0;
-    unsigned int channel, i;
-    unsigned long framesProcessed;
-    
-    /* prepare event array for call to WaitForMultipleObjects() */
-    if( stream->input.bufferEvent )
-        events[eventCount++] = stream->input.bufferEvent;
-    if( stream->output.bufferEvent )
-        events[eventCount++] = stream->output.bufferEvent;
-    events[eventCount++] = stream->abortEvent;
-
-    statusFlags = 0; /** @todo support paInputUnderflow, paOutputOverflow and paNeverDropInput */
-    
-    /* loop until something causes us to stop */
-    do{
-        /* wait for MME to signal that a buffer is available, or for
-            the PA abort event to be signaled.
-
-          When this indicates that one or more buffers are available
-          NoBuffersAreQueued() and Current*BuffersAreDone are used below to
-          poll for additional done buffers. NoBuffersAreQueued() will fail
-          to identify an underrun/overflow if the driver doesn't mark all done
-          buffers prior to signalling the event. Some drivers do this
-          (eg RME Digi96, and others don't eg VIA PC 97 input). This isn't a
-          huge problem, it just means that we won't always be able to detect
-          underflow/overflow.
-        */
-        waitResult = WaitForMultipleObjects( eventCount, events, FALSE /* wait all = FALSE */, timeout );
-        if( waitResult == WAIT_FAILED )
-        {
-            result = paUnanticipatedHostError;
-            /** @todo FIXME/REVIEW: can't return host error info from an asyncronous thread */
-            done = 1;
-        }
-        else if( waitResult == WAIT_TIMEOUT )
-        {
-            /* if a timeout is encountered, continue */
-        }
-
-        if( stream->abortProcessing )
-        {
-            /* Pa_AbortStream() has been called, stop processing immediately */
-            done = 1;
-        }
-        else if( stream->stopProcessing )
-        {
-            /* Pa_StopStream() has been called or the user callback returned
-                non-zero, processing will continue until all output buffers
-                are marked as done. The stream will stop immediately if it
-                is input-only.
-            */
-
-            if( PA_IS_OUTPUT_STREAM_(stream) )
-            {
-                if( NoBuffersAreQueued( &stream->output ) )
-                    done = 1; /* Will cause thread to return. */
-            }
-            else
-            {
-                /* input only stream */
-                done = 1; /* Will cause thread to return. */
-            }
-        }
-        else
-        {
-            hostBuffersAvailable = 1;
-
-            /* process all available host buffers */
-            do
-            {
-                hostInputBufferIndex = -1;
-                hostOutputBufferIndex = -1;
-                
-                if( PA_IS_INPUT_STREAM_(stream) )
-                {
-                    if( CurrentInputBuffersAreDone( stream ) )
-                    {
-                        if( NoBuffersAreQueued( &stream->input ) )
-                        {
-                            /** @todo
-                               if all of the other buffers are also ready then
-                               we discard all but the most recent. This is an
-                               input buffer overflow. FIXME: these buffers should
-                               be passed to the callback in a paNeverDropInput
-                               stream.
-
-                               note that it is also possible for an input overflow
-                               to happen while the callback is processing a buffer.
-                               that is handled further down.
-                            */
-                            result = CatchUpInputBuffers( stream );
-                            if( result != paNoError )
-                                done = 1;
-
-                            statusFlags |= paInputOverflow;
-                        }
-
-                        hostInputBufferIndex = stream->input.currentBufferIndex;
-                    }
-                }
-
-                if( PA_IS_OUTPUT_STREAM_(stream) )
-                {
-                    if( CurrentOutputBuffersAreDone( stream ) )
-                    {
-                        /* ok, we have an output buffer */
-                        
-                        if( NoBuffersAreQueued( &stream->output ) )
-                        {
-                            /*
-                            if all of the other buffers are also ready, catch up by copying
-                            the most recently generated buffer into all but one of the output
-                            buffers.
-
-                            note that this catch up code only handles the case where all
-                            buffers have been played out due to this thread not having
-                            woken up at all. a more common case occurs when this thread
-                            is woken up, processes one buffer, but takes too long, and as
-                            a result all the other buffers have become un-queued. that
-                            case is handled further down.
-                            */
-
-                            result = CatchUpOutputBuffers( stream );
-                            if( result != paNoError )
-                                done = 1;
-
-                            statusFlags |= paOutputUnderflow;
-                        }
-
-                        hostOutputBufferIndex = stream->output.currentBufferIndex;
-                    }
-                }
-
-               
-                if( (PA_IS_FULL_DUPLEX_STREAM_(stream) && hostInputBufferIndex != -1 && hostOutputBufferIndex != -1) ||
-                        (PA_IS_HALF_DUPLEX_STREAM_(stream) && ( hostInputBufferIndex != -1 || hostOutputBufferIndex != -1 ) ) )
-                {
-                    PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /** @todo implement inputBufferAdcTime */
-
-
-                    if( PA_IS_OUTPUT_STREAM_(stream) )
-                    {
-                        /* set timeInfo.currentTime and calculate timeInfo.outputBufferDacTime
-                            from the current wave out position */
-                        MMTIME mmtime;
-                        double timeBeforeGetPosition, timeAfterGetPosition;
-                        double time;
-                        long framesInBufferRing; 		
-                        long writePosition;
-                        long playbackPosition;
-                        HWAVEOUT firstWaveOutDevice = ((HWAVEOUT*)stream->output.waveHandles)[0];
-                        
-                        mmtime.wType = TIME_SAMPLES;
-                        timeBeforeGetPosition = PaUtil_GetTime();
-                        waveOutGetPosition( firstWaveOutDevice, &mmtime, sizeof(MMTIME) );
-                        timeAfterGetPosition = PaUtil_GetTime();
-
-                        timeInfo.currentTime = timeAfterGetPosition;
-
-                        /* approximate time at which wave out position was measured
-                            as half way between timeBeforeGetPosition and timeAfterGetPosition */
-                        time = timeBeforeGetPosition + (timeAfterGetPosition - timeBeforeGetPosition) * .5;
-                        
-                        framesInBufferRing = stream->output.bufferCount * stream->bufferProcessor.framesPerHostBuffer;
-                        playbackPosition = mmtime.u.sample % framesInBufferRing;
-
-                        writePosition = stream->output.currentBufferIndex * stream->bufferProcessor.framesPerHostBuffer
-                                + stream->output.framesUsedInCurrentBuffer;
-                       
-                        if( playbackPosition >= writePosition ){
-                            timeInfo.outputBufferDacTime =
-                                    time + ((double)( writePosition + (framesInBufferRing - playbackPosition) ) * stream->bufferProcessor.samplePeriod );
-                        }else{
-                            timeInfo.outputBufferDacTime =
-                                    time + ((double)( writePosition - playbackPosition ) * stream->bufferProcessor.samplePeriod );
-                        }
-                    }
-
-
-                    PaUtil_BeginCpuLoadMeasurement( &stream->cpuLoadMeasurer );
-
-                    PaUtil_BeginBufferProcessing( &stream->bufferProcessor, &timeInfo, statusFlags  );
-
-                    /* reset status flags once they have been passed to the buffer processor */
-                    statusFlags = 0;
-
-                    if( PA_IS_INPUT_STREAM_(stream) )
-                    {
-                        PaUtil_SetInputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ );
-
-                        channel = 0;
-                        for( i=0; i<stream->input.deviceCount; ++i )
-                        {
-                             /* we have stored the number of channels in the buffer in dwUser */
-                            int channelCount = (int)stream->input.waveHeaders[i][ hostInputBufferIndex ].dwUser;
-                            
-                            PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, channel,
-                                    stream->input.waveHeaders[i][ hostInputBufferIndex ].lpData +
-                                        stream->input.framesUsedInCurrentBuffer * channelCount *
-                                        stream->bufferProcessor.bytesPerHostInputSample,
-                                    channelCount );
-                                    
-
-                            channel += channelCount;
-                        }
-                    }
-
-                    if( PA_IS_OUTPUT_STREAM_(stream) )
-                    {
-                        PaUtil_SetOutputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ );
-                        
-                        channel = 0;
-                        for( i=0; i<stream->output.deviceCount; ++i )
-                        {
-                            /* we have stored the number of channels in the buffer in dwUser */
-                            int channelCount = (int)stream->output.waveHeaders[i][ hostOutputBufferIndex ].dwUser;
-
-                            PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, channel,
-                                    stream->output.waveHeaders[i][ hostOutputBufferIndex ].lpData +
-                                        stream->output.framesUsedInCurrentBuffer * channelCount *
-                                        stream->bufferProcessor.bytesPerHostOutputSample,
-                                    channelCount );
-
-                            channel += channelCount;
-                        }
-                    }
-
-                    callbackResult = paContinue;
-                    framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult );
-
-                    stream->input.framesUsedInCurrentBuffer += framesProcessed;
-                    stream->output.framesUsedInCurrentBuffer += framesProcessed;
-
-                    PaUtil_EndCpuLoadMeasurement( &stream->cpuLoadMeasurer, framesProcessed );
-
-                    if( callbackResult == paContinue )
-                    {
-                        /* nothing special to do */
-                    }
-                    else if( callbackResult == paAbort )
-                    {
-                        stream->abortProcessing = 1;
-                        done = 1;
-                        /** @todo FIXME: should probably reset the output device immediately once the callback returns paAbort */
-                        result = paNoError;
-                    }
-                    else
-                    {
-                        /* User callback has asked us to stop with paComplete or other non-zero value */
-                        stream->stopProcessing = 1; /* stop once currently queued audio has finished */
-                        result = paNoError;
-                    }
-
-
-                    if( PA_IS_INPUT_STREAM_(stream)
-                            && stream->stopProcessing == 0 && stream->abortProcessing == 0
-                            && stream->input.framesUsedInCurrentBuffer == stream->input.framesPerBuffer )
-                    {
-                        if( NoBuffersAreQueued( &stream->input ) )
-                        {
-                            /** @todo need to handle PaNeverDropInput here where necessary */
-                            result = CatchUpInputBuffers( stream );
-                            if( result != paNoError )
-                                done = 1;
-
-                            statusFlags |= paInputOverflow;
-                        }
-
-                        result = AdvanceToNextInputBuffer( stream );
-                        if( result != paNoError )
-                            done = 1;
-                    }
-
-                    
-                    if( PA_IS_OUTPUT_STREAM_(stream) && !stream->abortProcessing )
-                    {
-                        if( stream->stopProcessing &&
-                                stream->output.framesUsedInCurrentBuffer < stream->output.framesPerBuffer )
-                        {
-                            /* zero remaining samples in output output buffer and flush */
-
-                            stream->output.framesUsedInCurrentBuffer += PaUtil_ZeroOutput( &stream->bufferProcessor,
-                                    stream->output.framesPerBuffer - stream->output.framesUsedInCurrentBuffer );
-
-                            /* we send the entire buffer to the output devices, but we could
-                                just send a partial buffer, rather than zeroing the unused
-                                samples.
-                            */
-                        }
-
-                        if( stream->output.framesUsedInCurrentBuffer == stream->output.framesPerBuffer )
-                        {
-                            /* check for underflow before enquing the just-generated buffer,
-                                but recover from underflow after enquing it. This ensures
-                                that the most recent audio segment is repeated */
-                            int outputUnderflow = NoBuffersAreQueued( &stream->output );
-
-                            result = AdvanceToNextOutputBuffer( stream );
-                            if( result != paNoError )
-                                done = 1;
-
-                            if( outputUnderflow && !done && !stream->stopProcessing )
-                            {
-                                /* Recover from underflow in the case where the
-                                    underflow occured while processing the buffer
-                                    we just finished */
-
-                                result = CatchUpOutputBuffers( stream );
-                                if( result != paNoError )
-                                    done = 1;
-
-                                statusFlags |= paOutputUnderflow;
-                            }
-                        }
-                    }
-                    
-                    if( stream->throttleProcessingThreadOnOverload != 0 )
-                    {
-                        if( stream->stopProcessing || stream->abortProcessing )
-                        {
-                            if( stream->processingThreadPriority != stream->highThreadPriority )
-                            {
-                                SetThreadPriority( stream->processingThread, stream->highThreadPriority );
-                                stream->processingThreadPriority = stream->highThreadPriority;
-                            }
-                        }
-                        else if( PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer ) > 1. )
-                        {
-                            if( stream->processingThreadPriority != stream->throttledThreadPriority )
-                            {
-                                SetThreadPriority( stream->processingThread, stream->throttledThreadPriority );
-                                stream->processingThreadPriority = stream->throttledThreadPriority;
-                            }
-
-                            /* sleep to give other processes a go */
-                            Sleep( stream->throttledSleepMsecs );
-                        }
-                        else
-                        {
-                            if( stream->processingThreadPriority != stream->highThreadPriority )
-                            {
-                                SetThreadPriority( stream->processingThread, stream->highThreadPriority );
-                                stream->processingThreadPriority = stream->highThreadPriority;
-                            }
-                        }
-                    }
-                }
-                else
-                {
-                    hostBuffersAvailable = 0;
-                }
-            }
-            while( hostBuffersAvailable &&
-                    stream->stopProcessing == 0 &&
-                    stream->abortProcessing == 0 &&
-                    !done );
-        }
-    }
-    while( !done );
-
-    stream->isActive = 0;
-
-    if( stream->streamRepresentation.streamFinishedCallback != 0 )
-        stream->streamRepresentation.streamFinishedCallback( stream->streamRepresentation.userData );
-
-    PaUtil_ResetCpuLoadMeasurer( &stream->cpuLoadMeasurer );
-    
-    return result;
-}
-
-
-/*
-    When CloseStream() is called, the multi-api layer ensures that
-    the stream has already been stopped or aborted.
-*/
-static PaError CloseStream( PaStream* s )
-{
-    PaError result;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-
-    result = CloseHandleWithPaError( stream->abortEvent );
-    if( result != paNoError ) goto error;
-    
-    TerminateWaveHeaders( &stream->output, 0 /* not isInput */ );
-    TerminateWaveHeaders( &stream->input, 1 /* isInput */ );
-
-    TerminateWaveHandles( &stream->output, 0 /* not isInput */, 0 /* not currentlyProcessingAnError */ );
-    TerminateWaveHandles( &stream->input, 1 /* isInput */, 0 /* not currentlyProcessingAnError */ );
-    
-    PaUtil_TerminateBufferProcessor( &stream->bufferProcessor );
-    PaUtil_TerminateStreamRepresentation( &stream->streamRepresentation );
-    PaUtil_FreeMemory( stream );
-
-error:
-    /** @todo REVIEW: what is the best way to clean up a stream if an error is detected? */
-    return result;
-}
-
-
-static PaError StartStream( PaStream *s )
-{
-    PaError result;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    MMRESULT mmresult;
-    unsigned int i, j;
-    int callbackResult;
-	unsigned int channel;
- 	unsigned long framesProcessed;
-	PaStreamCallbackTimeInfo timeInfo = {0,0,0}; /** @todo implement this for stream priming */
-    
-    PaUtil_ResetBufferProcessor( &stream->bufferProcessor );
-    
-    if( PA_IS_INPUT_STREAM_(stream) )
-    {
-        for( i=0; i<stream->input.bufferCount; ++i )
-        {
-            for( j=0; j<stream->input.deviceCount; ++j )
-            {
-                stream->input.waveHeaders[j][i].dwFlags &= ~WHDR_DONE;
-                mmresult = waveInAddBuffer( ((HWAVEIN*)stream->input.waveHandles)[j], &stream->input.waveHeaders[j][i], sizeof(WAVEHDR) );
-                if( mmresult != MMSYSERR_NOERROR )
-                {
-                    result = paUnanticipatedHostError;
-                    PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                    goto error;
-                }
-            }
-        }
-        stream->input.currentBufferIndex = 0;
-        stream->input.framesUsedInCurrentBuffer = 0;
-    }
-
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-    {
-        for( i=0; i<stream->output.deviceCount; ++i )
-        {
-            if( (mmresult = waveOutPause( ((HWAVEOUT*)stream->output.waveHandles)[i] )) != MMSYSERR_NOERROR )
-            {
-                result = paUnanticipatedHostError;
-                PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                goto error;
-            }
-        }
-
-        for( i=0; i<stream->output.bufferCount; ++i )
-        {
-            if( stream->primeStreamUsingCallback )
-            {
-
-                stream->output.framesUsedInCurrentBuffer = 0;
-                do{
-
-                    PaUtil_BeginBufferProcessing( &stream->bufferProcessor,
-                            &timeInfo,
-                            paPrimingOutput | ((stream->input.bufferCount > 0 ) ? paInputUnderflow : 0));
-
-                    if( stream->input.bufferCount > 0 )
-                        PaUtil_SetNoInput( &stream->bufferProcessor );
-
-                    PaUtil_SetOutputFrameCount( &stream->bufferProcessor, 0 /* default to host buffer size */ );
-
-                    channel = 0;
-                    for( j=0; j<stream->output.deviceCount; ++j )
-                    {
-                        /* we have stored the number of channels in the buffer in dwUser */
-                        int channelCount = (int)stream->output.waveHeaders[j][i].dwUser;
-
-                        PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, channel,
-                                stream->output.waveHeaders[j][i].lpData +
-                                stream->output.framesUsedInCurrentBuffer * channelCount *
-                                stream->bufferProcessor.bytesPerHostOutputSample,
-                                channelCount );
-
-                        /* we have stored the number of channels in the buffer in dwUser */
-                        channel += channelCount;
-                    }
-
-                    callbackResult = paContinue;
-                    framesProcessed = PaUtil_EndBufferProcessing( &stream->bufferProcessor, &callbackResult );
-                    stream->output.framesUsedInCurrentBuffer += framesProcessed;
-
-                    if( callbackResult != paContinue )
-                    {
-                        /** @todo fix this, what do we do if callback result is non-zero during stream
-                            priming?
-
-                            for complete: play out primed waveHeaders as usual
-                            for abort: clean up immediately.
-                       */
-                    }
-
-                }while( stream->output.framesUsedInCurrentBuffer != stream->output.framesPerBuffer );
-
-            }
-            else
-            {
-                for( j=0; j<stream->output.deviceCount; ++j )
-                {
-                    ZeroMemory( stream->output.waveHeaders[j][i].lpData, stream->output.waveHeaders[j][i].dwBufferLength );
-                }
-            }   
-
-            /* we queue all channels of a single buffer frame (accross all
-                devices, because some multidevice multichannel drivers work
-                better this way */
-            for( j=0; j<stream->output.deviceCount; ++j )
-            {
-                mmresult = waveOutWrite( ((HWAVEOUT*)stream->output.waveHandles)[j], &stream->output.waveHeaders[j][i], sizeof(WAVEHDR) );
-                if( mmresult != MMSYSERR_NOERROR )
-                {
-                    result = paUnanticipatedHostError;
-                    PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                    goto error;
-                }
-            }
-        }
-        stream->output.currentBufferIndex = 0;
-        stream->output.framesUsedInCurrentBuffer = 0;
-    }
-
-
-    stream->isStopped = 0;
-    stream->isActive = 1;
-    stream->stopProcessing = 0;
-    stream->abortProcessing = 0;
-
-    result = ResetEventWithPaError( stream->input.bufferEvent );
-    if( result != paNoError ) goto error;
-
-    result = ResetEventWithPaError( stream->output.bufferEvent );
-    if( result != paNoError ) goto error;
-    
-    
-    if( stream->streamRepresentation.streamCallback )
-    {
-        /* callback stream */
-
-        result = ResetEventWithPaError( stream->abortEvent );
-        if( result != paNoError ) goto error;
-
-        /* Create thread that waits for audio buffers to be ready for processing. */
-        stream->processingThread = CreateThread( 0, 0, ProcessingThreadProc, stream, 0, &stream->processingThreadId );
-        if( !stream->processingThread )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_SYSTEM_ERROR( GetLastError() );
-            goto error;
-        }
-
-        /** @todo could have mme specific stream parameters to allow the user
-            to set the callback thread priorities */
-        stream->highThreadPriority = THREAD_PRIORITY_TIME_CRITICAL;
-        stream->throttledThreadPriority = THREAD_PRIORITY_NORMAL;
-
-        if( !SetThreadPriority( stream->processingThread, stream->highThreadPriority ) )
-        {
-            result = paUnanticipatedHostError;
-            PA_MME_SET_LAST_SYSTEM_ERROR( GetLastError() );
-            goto error;
-        }
-        stream->processingThreadPriority = stream->highThreadPriority;
-    }
-    else
-    {
-        /* blocking read/write stream */
-
-    }
-
-    if( PA_IS_INPUT_STREAM_(stream) )
-    {
-        for( i=0; i < stream->input.deviceCount; ++i )
-        {
-            mmresult = waveInStart( ((HWAVEIN*)stream->input.waveHandles)[i] );
-            PA_DEBUG(("Pa_StartStream: waveInStart returned = 0x%X.\n", mmresult));
-            if( mmresult != MMSYSERR_NOERROR )
-            {
-                result = paUnanticipatedHostError;
-                PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                goto error;
-            }
-        }
-    }
-
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-    {
-        for( i=0; i < stream->output.deviceCount; ++i )
-        {
-            if( (mmresult = waveOutRestart( ((HWAVEOUT*)stream->output.waveHandles)[i] )) != MMSYSERR_NOERROR )
-            {
-                result = paUnanticipatedHostError;
-                PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                goto error;
-            }
-        }
-    }
-
-    return result;
-
-error:
-    /** @todo FIXME: implement recovery as best we can
-    This should involve rolling back to a state as-if this function had never been called
-    */
-    return result;
-}
-
-
-static PaError StopStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    int timeout;
-    DWORD waitResult;
-    MMRESULT mmresult;
-    signed int hostOutputBufferIndex;
-    unsigned int channel, waitCount, i;                  
-    
-    /** @todo
-        REVIEW: the error checking in this function needs review. the basic
-        idea is to return from this function in a known state - for example
-        there is no point avoiding calling waveInReset just because
-        the thread times out.
-    */
-
-    if( stream->processingThread )
-    {
-        /* callback stream */
-
-        /* Tell processing thread to stop generating more data and to let current data play out. */
-        stream->stopProcessing = 1;
-
-        /* Calculate timeOut longer than longest time it could take to return all buffers. */
-        timeout = (int)(stream->allBuffersDurationMs * 1.5);
-        if( timeout < PA_MME_MIN_TIMEOUT_MSEC_ )
-            timeout = PA_MME_MIN_TIMEOUT_MSEC_;
-
-        PA_DEBUG(("WinMME StopStream: waiting for background thread.\n"));
-
-        waitResult = WaitForSingleObject( stream->processingThread, timeout );
-        if( waitResult == WAIT_TIMEOUT )
-        {
-            /* try to abort */
-            stream->abortProcessing = 1;
-            SetEvent( stream->abortEvent );
-            waitResult = WaitForSingleObject( stream->processingThread, timeout );
-            if( waitResult == WAIT_TIMEOUT )
-            {
-                PA_DEBUG(("WinMME StopStream: timed out while waiting for background thread to finish.\n"));
-                result = paTimedOut;
-            }
-        }
-
-        CloseHandle( stream->processingThread );
-        stream->processingThread = NULL;
-    }
-    else
-    {
-        /* blocking read / write stream */
-
-        if( PA_IS_OUTPUT_STREAM_(stream) )
-        {
-            if( stream->output.framesUsedInCurrentBuffer > 0 )
-            {
-                /* there are still unqueued frames in the current buffer, so flush them */
-
-                hostOutputBufferIndex = stream->output.currentBufferIndex;
-
-                PaUtil_SetOutputFrameCount( &stream->bufferProcessor,
-                        stream->output.framesPerBuffer - stream->output.framesUsedInCurrentBuffer );
-                
-                channel = 0;
-                for( i=0; i<stream->output.deviceCount; ++i )
-                {
-                    /* we have stored the number of channels in the buffer in dwUser */
-                    int channelCount = (int)stream->output.waveHeaders[i][ hostOutputBufferIndex ].dwUser;
-
-                    PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, channel,
-                            stream->output.waveHeaders[i][ hostOutputBufferIndex ].lpData +
-                                stream->output.framesUsedInCurrentBuffer * channelCount *
-                                stream->bufferProcessor.bytesPerHostOutputSample,
-                            channelCount );
-
-                    channel += channelCount;
-                }
-
-                PaUtil_ZeroOutput( &stream->bufferProcessor,
-                        stream->output.framesPerBuffer - stream->output.framesUsedInCurrentBuffer );
-
-                /* we send the entire buffer to the output devices, but we could
-                    just send a partial buffer, rather than zeroing the unused
-                    samples.
-                */
-                AdvanceToNextOutputBuffer( stream );
-            }
-            
-
-            timeout = (stream->allBuffersDurationMs / stream->output.bufferCount) + 1;
-            if( timeout < PA_MME_MIN_TIMEOUT_MSEC_ )
-                timeout = PA_MME_MIN_TIMEOUT_MSEC_;
-
-            waitCount = 0;
-            while( !NoBuffersAreQueued( &stream->output ) && waitCount <= stream->output.bufferCount )
-            {
-                /* wait for MME to signal that a buffer is available */
-                waitResult = WaitForSingleObject( stream->output.bufferEvent, timeout );
-                if( waitResult == WAIT_FAILED )
-                {
-                    break;
-                }
-                else if( waitResult == WAIT_TIMEOUT )
-                {
-                    /* keep waiting */
-                }
-
-                ++waitCount;
-            }
-        }
-    }
-
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-    {
-        for( i =0; i < stream->output.deviceCount; ++i )
-        {
-            mmresult = waveOutReset( ((HWAVEOUT*)stream->output.waveHandles)[i] );
-            if( mmresult != MMSYSERR_NOERROR )
-            {
-                result = paUnanticipatedHostError;
-                PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-            }
-        }
-    }
-
-    if( PA_IS_INPUT_STREAM_(stream) )
-    {
-        for( i=0; i < stream->input.deviceCount; ++i )
-        {
-            mmresult = waveInReset( ((HWAVEIN*)stream->input.waveHandles)[i] );
-            if( mmresult != MMSYSERR_NOERROR )
-            {
-                result = paUnanticipatedHostError;
-                PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-            }
-        }
-    }
-
-    stream->isStopped = 1;
-    stream->isActive = 0;
-
-    return result;
-}
-
-
-static PaError AbortStream( PaStream *s )
-{
-    PaError result = paNoError;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    int timeout;
-    DWORD waitResult;
-    MMRESULT mmresult;
-    unsigned int i;
-    
-    /** @todo
-        REVIEW: the error checking in this function needs review. the basic
-        idea is to return from this function in a known state - for example
-        there is no point avoiding calling waveInReset just because
-        the thread times out.
-    */
-
-    if( stream->processingThread )
-    {
-        /* callback stream */
-        
-        /* Tell processing thread to abort immediately */
-        stream->abortProcessing = 1;
-        SetEvent( stream->abortEvent );
-    }
-
-
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-    {
-        for( i =0; i < stream->output.deviceCount; ++i )
-        {
-            mmresult = waveOutReset( ((HWAVEOUT*)stream->output.waveHandles)[i] );
-            if( mmresult != MMSYSERR_NOERROR )
-            {
-                PA_MME_SET_LAST_WAVEOUT_ERROR( mmresult );
-                return paUnanticipatedHostError;
-            }
-        }
-    }
-
-    if( PA_IS_INPUT_STREAM_(stream) )
-    {
-        for( i=0; i < stream->input.deviceCount; ++i )
-        {
-            mmresult = waveInReset( ((HWAVEIN*)stream->input.waveHandles)[i] );
-            if( mmresult != MMSYSERR_NOERROR )
-            {
-                PA_MME_SET_LAST_WAVEIN_ERROR( mmresult );
-                return paUnanticipatedHostError;
-            }
-        }
-    }
-
-
-    if( stream->processingThread )
-    {
-        /* callback stream */
-        
-        PA_DEBUG(("WinMME AbortStream: waiting for background thread.\n"));
-
-        /* Calculate timeOut longer than longest time it could take to return all buffers. */
-        timeout = (int)(stream->allBuffersDurationMs * 1.5);
-        if( timeout < PA_MME_MIN_TIMEOUT_MSEC_ )
-            timeout = PA_MME_MIN_TIMEOUT_MSEC_;
-            
-        waitResult = WaitForSingleObject( stream->processingThread, timeout );
-        if( waitResult == WAIT_TIMEOUT )
-        {
-            PA_DEBUG(("WinMME AbortStream: timed out while waiting for background thread to finish.\n"));
-            return paTimedOut;
-        }
-
-        CloseHandle( stream->processingThread );
-        stream->processingThread = NULL;
-    }
-
-    stream->isStopped = 1;
-    stream->isActive = 0;
-
-    return result;
-}
-
-
-static PaError IsStreamStopped( PaStream *s )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-
-    return stream->isStopped;
-}
-
-
-static PaError IsStreamActive( PaStream *s )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-
-    return stream->isActive;
-}
-
-
-static PaTime GetStreamTime( PaStream *s )
-{
-    (void) s; /* unused parameter */
-    
-    return PaUtil_GetTime();
-}
-
-
-static double GetStreamCpuLoad( PaStream* s )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-
-    return PaUtil_GetCpuLoad( &stream->cpuLoadMeasurer );
-}
-
-
-/*
-    As separate stream interfaces are used for blocking and callback
-    streams, the following functions can be guaranteed to only be called
-    for blocking streams.
-*/
-
-static PaError ReadStream( PaStream* s,
-                           void *buffer,
-                           unsigned long frames )
-{
-    PaError result = paNoError;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    void *userBuffer;
-    unsigned long framesRead = 0;
-    unsigned long framesProcessed;
-    signed int hostInputBufferIndex;
-    DWORD waitResult;
-    DWORD timeout = (unsigned long)(stream->allBuffersDurationMs * 0.5);
-    unsigned int channel, i;
-    
-    if( PA_IS_INPUT_STREAM_(stream) )
-    {
-        /* make a local copy of the user buffer pointer(s). this is necessary
-            because PaUtil_CopyInput() advances these pointers every time
-            it is called.
-        */
-        if( stream->bufferProcessor.userInputIsInterleaved )
-        {
-            userBuffer = buffer;
-        }
-        else
-        {
-            userBuffer = alloca( sizeof(void*) * stream->bufferProcessor.inputChannelCount );
-            if( !userBuffer )
-                return paInsufficientMemory;
-            for( i = 0; i<stream->bufferProcessor.inputChannelCount; ++i )
-                ((void**)userBuffer)[i] = ((void**)buffer)[i];
-        }
-        
-        do{
-            if( CurrentInputBuffersAreDone( stream ) )
-            {
-                if( NoBuffersAreQueued( &stream->input ) )
-                {
-                    /** @todo REVIEW: consider what to do if the input overflows.
-                        do we requeue all of the buffers? should we be running
-                        a thread to make sure they are always queued? */
-
-                    result = paInputOverflowed;
-                }
-
-                hostInputBufferIndex = stream->input.currentBufferIndex;
-
-                PaUtil_SetInputFrameCount( &stream->bufferProcessor,
-                        stream->input.framesPerBuffer - stream->input.framesUsedInCurrentBuffer );
-                
-                channel = 0;
-                for( i=0; i<stream->input.deviceCount; ++i )
-                {
-                    /* we have stored the number of channels in the buffer in dwUser */
-                    int channelCount = (int)stream->input.waveHeaders[i][ hostInputBufferIndex ].dwUser;
-
-                    PaUtil_SetInterleavedInputChannels( &stream->bufferProcessor, channel,
-                            stream->input.waveHeaders[i][ hostInputBufferIndex ].lpData +
-                                stream->input.framesUsedInCurrentBuffer * channelCount *
-                                stream->bufferProcessor.bytesPerHostInputSample,
-                            channelCount );
-
-                    channel += channelCount;
-                }
-                
-                framesProcessed = PaUtil_CopyInput( &stream->bufferProcessor, &userBuffer, frames - framesRead );
-
-                stream->input.framesUsedInCurrentBuffer += framesProcessed;
-                if( stream->input.framesUsedInCurrentBuffer == stream->input.framesPerBuffer )
-                {
-                    result = AdvanceToNextInputBuffer( stream );
-                    if( result != paNoError )
-                        break;
-                }
-
-                framesRead += framesProcessed;      
-
-            }else{
-                /* wait for MME to signal that a buffer is available */
-                waitResult = WaitForSingleObject( stream->input.bufferEvent, timeout );
-                if( waitResult == WAIT_FAILED )
-                {
-                    result = paUnanticipatedHostError;
-                    break;
-                }
-                else if( waitResult == WAIT_TIMEOUT )
-                {
-                    /* if a timeout is encountered, continue,
-                        perhaps we should give up eventually
-                    */
-                }         
-            }
-        }while( framesRead < frames );
-    }
-    else
-    {
-        result = paCanNotReadFromAnOutputOnlyStream;
-    }
-
-    return result;
-}
-
-
-static PaError WriteStream( PaStream* s,
-                            const void *buffer,
-                            unsigned long frames )
-{
-    PaError result = paNoError;
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    const void *userBuffer;
-    unsigned long framesWritten = 0;
-    unsigned long framesProcessed;
-    signed int hostOutputBufferIndex;
-    DWORD waitResult;
-    DWORD timeout = (unsigned long)(stream->allBuffersDurationMs * 0.5);
-    unsigned int channel, i;
-
-        
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-    {
-        /* make a local copy of the user buffer pointer(s). this is necessary
-            because PaUtil_CopyOutput() advances these pointers every time
-            it is called.
-        */
-        if( stream->bufferProcessor.userOutputIsInterleaved )
-        {
-            userBuffer = buffer;
-        }
-        else
-        {
-            userBuffer = alloca( sizeof(void*) * stream->bufferProcessor.outputChannelCount );
-            if( !userBuffer )
-                return paInsufficientMemory;
-            for( i = 0; i<stream->bufferProcessor.outputChannelCount; ++i )
-                ((const void**)userBuffer)[i] = ((const void**)buffer)[i];
-        }
-
-        do{
-            if( CurrentOutputBuffersAreDone( stream ) )
-            {
-                if( NoBuffersAreQueued( &stream->output ) )
-                {
-                    /** @todo REVIEW: consider what to do if the output
-                    underflows. do we requeue all the existing buffers with
-                    zeros? should we run a separate thread to keep the buffers
-                    enqueued at all times? */
-
-                    result = paOutputUnderflowed;
-                }
-
-                hostOutputBufferIndex = stream->output.currentBufferIndex;
-
-                PaUtil_SetOutputFrameCount( &stream->bufferProcessor,
-                        stream->output.framesPerBuffer - stream->output.framesUsedInCurrentBuffer );
-                
-                channel = 0;
-                for( i=0; i<stream->output.deviceCount; ++i )
-                {
-                    /* we have stored the number of channels in the buffer in dwUser */
-                    int channelCount = (int)stream->output.waveHeaders[i][ hostOutputBufferIndex ].dwUser;
-
-                    PaUtil_SetInterleavedOutputChannels( &stream->bufferProcessor, channel,
-                            stream->output.waveHeaders[i][ hostOutputBufferIndex ].lpData +
-                                stream->output.framesUsedInCurrentBuffer * channelCount *
-                                stream->bufferProcessor.bytesPerHostOutputSample,
-                            channelCount );
-
-                    channel += channelCount;
-                }
-                
-                framesProcessed = PaUtil_CopyOutput( &stream->bufferProcessor, &userBuffer, frames - framesWritten );
-
-                stream->output.framesUsedInCurrentBuffer += framesProcessed;
-                if( stream->output.framesUsedInCurrentBuffer == stream->output.framesPerBuffer )
-                {
-                    result = AdvanceToNextOutputBuffer( stream );
-                    if( result != paNoError )
-                        break;
-                }
-
-                framesWritten += framesProcessed;
-            }
-            else
-            {
-                /* wait for MME to signal that a buffer is available */
-                waitResult = WaitForSingleObject( stream->output.bufferEvent, timeout );
-                if( waitResult == WAIT_FAILED )
-                {
-                    result = paUnanticipatedHostError;
-                    break;
-                }
-                else if( waitResult == WAIT_TIMEOUT )
-                {
-                    /* if a timeout is encountered, continue,
-                        perhaps we should give up eventually
-                    */
-                }             
-            }        
-        }while( framesWritten < frames );
-    }
-    else
-    {
-        result = paCanNotWriteToAnInputOnlyStream;
-    }
-    
-    return result;
-}
-
-
-static signed long GetStreamReadAvailable( PaStream* s )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    
-    if( PA_IS_INPUT_STREAM_(stream) )
-        return GetAvailableFrames( &stream->input );
-    else
-        return paCanNotReadFromAnOutputOnlyStream;
-}
-
-
-static signed long GetStreamWriteAvailable( PaStream* s )
-{
-    PaWinMmeStream *stream = (PaWinMmeStream*)s;
-    
-    if( PA_IS_OUTPUT_STREAM_(stream) )
-        return GetAvailableFrames( &stream->output );
-    else
-        return paCanNotWriteToAnInputOnlyStream;
-}
-
-
-/* NOTE: the following functions are MME-stream specific, and are called directly
-    by client code. We need to check for many more error conditions here because
-    we don't have the benefit of pa_front.c's parameter checking.
-*/
-
-static PaError GetWinMMEStreamPointer( PaWinMmeStream **stream, PaStream *s )
-{
-    PaError result;
-    PaUtilHostApiRepresentation *hostApi;
-    PaWinMmeHostApiRepresentation *winMmeHostApi;
-    
-    result = PaUtil_ValidateStreamPointer( s );
-    if( result != paNoError )
-        return result;
-
-    result = PaUtil_GetHostApiRepresentation( &hostApi, paMME );
-    if( result != paNoError )
-        return result;
-
-    winMmeHostApi = (PaWinMmeHostApiRepresentation*)hostApi;
-    
-    /* note, the following would be easier if there was a generic way of testing
-        that a stream belongs to a specific host API */
-    
-    if( PA_STREAM_REP( s )->streamInterface == &winMmeHostApi->callbackStreamInterface
-            || PA_STREAM_REP( s )->streamInterface == &winMmeHostApi->blockingStreamInterface )
-    {
-        /* s is a WinMME stream */
-        *stream = (PaWinMmeStream *)s;
-        return paNoError;
-    }
-    else
-    {
-        return paIncompatibleStreamHostApi;
-    }
-}
-
-
-int PaWinMME_GetStreamInputHandleCount( PaStream* s )
-{
-    PaWinMmeStream *stream;
-    PaError result = GetWinMMEStreamPointer( &stream, s );
-
-    if( result == paNoError )
-        return (PA_IS_INPUT_STREAM_(stream)) ? stream->input.deviceCount : 0;
-    else
-        return result;
-}
-
-
-HWAVEIN PaWinMME_GetStreamInputHandle( PaStream* s, int handleIndex )
-{
-    PaWinMmeStream *stream;
-    PaError result = GetWinMMEStreamPointer( &stream, s );
-
-    if( result == paNoError
-            && PA_IS_INPUT_STREAM_(stream)
-            && handleIndex >= 0
-            && (unsigned int)handleIndex < stream->input.deviceCount )
-        return ((HWAVEIN*)stream->input.waveHandles)[handleIndex];
-    else
-        return 0;
-}
-
-
-int PaWinMME_GetStreamOutputHandleCount( PaStream* s)
-{
-    PaWinMmeStream *stream;
-    PaError result = GetWinMMEStreamPointer( &stream, s );
-
-    if( result == paNoError )
-        return (PA_IS_OUTPUT_STREAM_(stream)) ? stream->output.deviceCount : 0;
-    else
-        return result;
-}
-
-
-HWAVEOUT PaWinMME_GetStreamOutputHandle( PaStream* s, int handleIndex )
-{
-    PaWinMmeStream *stream;
-    PaError result = GetWinMMEStreamPointer( &stream, s );
-
-    if( result == paNoError
-            && PA_IS_OUTPUT_STREAM_(stream)
-            && handleIndex >= 0
-            && (unsigned int)handleIndex < stream->output.deviceCount )
-        return ((HWAVEOUT*)stream->output.waveHandles)[handleIndex];
-    else
-        return 0;
-}
-
-
-
-#endif
-
-
diff --git a/external/portaudio2007/pa_win_wmme.h b/external/portaudio2007/pa_win_wmme.h
deleted file mode 100644
index 2e61a52..0000000
--- a/external/portaudio2007/pa_win_wmme.h
+++ /dev/null
@@ -1,176 +0,0 @@
-#ifndef PA_WIN_WMME_H
-#define PA_WIN_WMME_H
-/*
- * $Id: pa_win_wmme.h 1247 2007-08-11 16:29:09Z rossb $
- * PortAudio Portable Real-Time Audio Library
- * MME specific extensions
- *
- * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @brief WMME-specific PortAudio API extension header file.
-*/
-
-
-#include "portaudio.h"
-#include "pa_win_waveformat.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#define paWinMmeUseLowLevelLatencyParameters            (0x01)
-#define paWinMmeUseMultipleDevices                      (0x02)  /* use mme specific multiple device feature */
-#define paWinMmeUseChannelMask                          (0x04)
-
-/* By default, the mme implementation drops the processing thread's priority
-    to THREAD_PRIORITY_NORMAL and sleeps the thread if the CPU load exceeds 100%
-    This flag disables any priority throttling. The processing thread will always
-    run at THREAD_PRIORITY_TIME_CRITICAL.
-*/
-#define paWinMmeDontThrottleOverloadedProcessingThread  (0x08)
-
-
-typedef struct PaWinMmeDeviceAndChannelCount{
-    PaDeviceIndex device;
-    int channelCount;
-}PaWinMmeDeviceAndChannelCount;
-
-
-typedef struct PaWinMmeStreamInfo{
-    unsigned long size;             /**< sizeof(PaWinMmeStreamInfo) */
-    PaHostApiTypeId hostApiType;    /**< paMME */
-    unsigned long version;          /**< 1 */
-
-    unsigned long flags;
-
-    /* low-level latency setting support
-        These settings control the number and size of host buffers in order
-        to set latency. They will be used instead of the generic parameters
-        to Pa_OpenStream() if flags contains the PaWinMmeUseLowLevelLatencyParameters
-        flag.
-
-        If PaWinMmeStreamInfo structures with PaWinMmeUseLowLevelLatencyParameters
-        are supplied for both input and output in a full duplex stream, then the
-        input and output framesPerBuffer must be the same, or the larger of the
-        two must be a multiple of the smaller, otherwise a
-        paIncompatibleHostApiSpecificStreamInfo error will be returned from
-        Pa_OpenStream().
-    */
-    unsigned long framesPerBuffer;
-    unsigned long bufferCount;  /* formerly numBuffers */ 
-
-    /* multiple devices per direction support
-        If flags contains the PaWinMmeUseMultipleDevices flag,
-        this functionality will be used, otherwise the device parameter to
-        Pa_OpenStream() will be used instead.
-        If devices are specified here, the corresponding device parameter
-        to Pa_OpenStream() should be set to paUseHostApiSpecificDeviceSpecification,
-        otherwise an paInvalidDevice error will result.
-        The total number of channels accross all specified devices
-        must agree with the corresponding channelCount parameter to
-        Pa_OpenStream() otherwise a paInvalidChannelCount error will result.
-    */
-    PaWinMmeDeviceAndChannelCount *devices;
-    unsigned long deviceCount;
-
-    /*
-        support for WAVEFORMATEXTENSIBLE channel masks. If flags contains
-        paWinMmeUseChannelMask this allows you to specify which speakers 
-        to address in a multichannel stream. Constants for channelMask
-        are specified in pa_win_waveformat.h
-
-    */
-    PaWinWaveFormatChannelMask channelMask;
-
-}PaWinMmeStreamInfo;
-
-
-/** Retrieve the number of wave in handles used by a PortAudio WinMME stream.
- Returns zero if the stream is output only.
-
- @return A non-negative value indicating the number of wave in handles
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- @see PaWinMME_GetStreamInputHandle
-*/
-int PaWinMME_GetStreamInputHandleCount( PaStream* stream );
-
-
-/** Retrieve a wave in handle used by a PortAudio WinMME stream.
-
- @param stream The stream to query.
- @param handleIndex The zero based index of the wave in handle to retrieve. This
-    should be in the range [0, PaWinMME_GetStreamInputHandleCount(stream)-1].
-
- @return A valid wave in handle, or NULL if an error occurred.
-
- @see PaWinMME_GetStreamInputHandle
-*/
-HWAVEIN PaWinMME_GetStreamInputHandle( PaStream* stream, int handleIndex );
-
-
-/** Retrieve the number of wave out handles used by a PortAudio WinMME stream.
- Returns zero if the stream is input only.
- 
- @return A non-negative value indicating the number of wave out handles
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- @see PaWinMME_GetStreamOutputHandle
-*/
-int PaWinMME_GetStreamOutputHandleCount( PaStream* stream );
-
-
-/** Retrieve a wave out handle used by a PortAudio WinMME stream.
-
- @param stream The stream to query.
- @param handleIndex The zero based index of the wave out handle to retrieve.
-    This should be in the range [0, PaWinMME_GetStreamOutputHandleCount(stream)-1].
-
- @return A valid wave out handle, or NULL if an error occurred.
-
- @see PaWinMME_GetStreamOutputHandleCount
-*/
-HWAVEOUT PaWinMME_GetStreamOutputHandle( PaStream* stream, int handleIndex );
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* PA_WIN_WMME_H */                                  
diff --git a/external/portaudio2007/portaudio.h b/external/portaudio2007/portaudio.h
deleted file mode 100644
index a8385ad..0000000
--- a/external/portaudio2007/portaudio.h
+++ /dev/null
@@ -1,1133 +0,0 @@
-#ifndef PORTAUDIO_H
-#define PORTAUDIO_H
-/*
- * $Id: portaudio.h 1247 2007-08-11 16:29:09Z rossb $
- * PortAudio Portable Real-Time Audio Library
- * PortAudio API Header File
- * Latest version available at: http://www.portaudio.com/
- *
- * Copyright (c) 1999-2002 Ross Bencina and Phil Burk
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * The text above constitutes the entire PortAudio license; however, 
- * the PortAudio community also makes the following non-binding requests:
- *
- * Any person wishing to distribute modifications to the Software is
- * requested to send the modifications to the original developer so that
- * they can be incorporated into the canonical version. It is also 
- * requested that these non-binding requests be included along with the 
- * license above.
- */
-
-/** @file
- @brief The PortAudio API.
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- 
-/** Retrieve the release number of the currently running PortAudio build,
- eg 1900.
-*/
-int Pa_GetVersion( void );
-
-
-/** Retrieve a textual description of the current PortAudio build,
- eg "PortAudio V19-devel 13 October 2002".
-*/
-const char* Pa_GetVersionText( void );
-
-
-/** Error codes returned by PortAudio functions.
- Note that with the exception of paNoError, all PaErrorCodes are negative.
-*/
-
-typedef int PaError;
-typedef enum PaErrorCode
-{
-    paNoError = 0,
-
-    paNotInitialized = -10000,
-    paUnanticipatedHostError,
-    paInvalidChannelCount,
-    paInvalidSampleRate,
-    paInvalidDevice,
-    paInvalidFlag,
-    paSampleFormatNotSupported,
-    paBadIODeviceCombination,
-    paInsufficientMemory,
-    paBufferTooBig,
-    paBufferTooSmall,
-    paNullCallback,
-    paBadStreamPtr,
-    paTimedOut,
-    paInternalError,
-    paDeviceUnavailable,
-    paIncompatibleHostApiSpecificStreamInfo,
-    paStreamIsStopped,
-    paStreamIsNotStopped,
-    paInputOverflowed,
-    paOutputUnderflowed,
-    paHostApiNotFound,
-    paInvalidHostApi,
-    paCanNotReadFromACallbackStream,      /**< @todo review error code name */
-    paCanNotWriteToACallbackStream,       /**< @todo review error code name */
-    paCanNotReadFromAnOutputOnlyStream,   /**< @todo review error code name */
-    paCanNotWriteToAnInputOnlyStream,     /**< @todo review error code name */
-    paIncompatibleStreamHostApi,
-    paBadBufferPtr
-} PaErrorCode;
-
-
-/** Translate the supplied PortAudio error code into a human readable
- message.
-*/
-const char *Pa_GetErrorText( PaError errorCode );
-
-
-/** Library initialization function - call this before using PortAudio.
- This function initialises internal data structures and prepares underlying
- host APIs for use.  With the exception of Pa_GetVersion(), Pa_GetVersionText(),
- and Pa_GetErrorText(), this function MUST be called before using any other
- PortAudio API functions.
-
- If Pa_Initialize() is called multiple times, each successful 
- call must be matched with a corresponding call to Pa_Terminate(). 
- Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not 
- required to be fully nested.
-
- Note that if Pa_Initialize() returns an error code, Pa_Terminate() should
- NOT be called.
-
- @return paNoError if successful, otherwise an error code indicating the cause
- of failure.
-
- @see Pa_Terminate
-*/
-PaError Pa_Initialize( void );
-
-
-/** Library termination function - call this when finished using PortAudio.
- This function deallocates all resources allocated by PortAudio since it was
- initializied by a call to Pa_Initialize(). In cases where Pa_Initialise() has
- been called multiple times, each call must be matched with a corresponding call
- to Pa_Terminate(). The final matching call to Pa_Terminate() will automatically
- close any PortAudio streams that are still open.
-
- Pa_Terminate() MUST be called before exiting a program which uses PortAudio.
- Failure to do so may result in serious resource leaks, such as audio devices
- not being available until the next reboot.
-
- @return paNoError if successful, otherwise an error code indicating the cause
- of failure.
- 
- @see Pa_Initialize
-*/
-PaError Pa_Terminate( void );
-
-
-
-/** The type used to refer to audio devices. Values of this type usually
- range from 0 to (Pa_GetDeviceCount()-1), and may also take on the PaNoDevice
- and paUseHostApiSpecificDeviceSpecification values.
-
- @see Pa_GetDeviceCount, paNoDevice, paUseHostApiSpecificDeviceSpecification
-*/
-typedef int PaDeviceIndex;
-
-
-/** A special PaDeviceIndex value indicating that no device is available,
- or should be used.
-
- @see PaDeviceIndex
-*/
-#define paNoDevice ((PaDeviceIndex)-1)
-
-
-/** A special PaDeviceIndex value indicating that the device(s) to be used
- are specified in the host api specific stream info structure.
-
- @see PaDeviceIndex
-*/
-#define paUseHostApiSpecificDeviceSpecification ((PaDeviceIndex)-2)
-
-
-/* Host API enumeration mechanism */
-
-/** The type used to enumerate to host APIs at runtime. Values of this type
- range from 0 to (Pa_GetHostApiCount()-1).
-
- @see Pa_GetHostApiCount
-*/
-typedef int PaHostApiIndex;
-
-
-/** Retrieve the number of available host APIs. Even if a host API is
- available it may have no devices available.
-
- @return A non-negative value indicating the number of available host APIs
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- @see PaHostApiIndex
-*/
-PaHostApiIndex Pa_GetHostApiCount( void );
-
-
-/** Retrieve the index of the default host API. The default host API will be
- the lowest common denominator host API on the current platform and is
- unlikely to provide the best performance.
-
- @return A non-negative value ranging from 0 to (Pa_GetHostApiCount()-1)
- indicating the default host API index or, a PaErrorCode (which are always
- negative) if PortAudio is not initialized or an error is encountered.
-*/
-PaHostApiIndex Pa_GetDefaultHostApi( void );
-
-
-/** Unchanging unique identifiers for each supported host API. This type
- is used in the PaHostApiInfo structure. The values are guaranteed to be
- unique and to never change, thus allowing code to be written that
- conditionally uses host API specific extensions.
-
- New type ids will be allocated when support for a host API reaches
- "public alpha" status, prior to that developers should use the
- paInDevelopment type id.
-
- @see PaHostApiInfo
-*/
-typedef enum PaHostApiTypeId
-{
-    paInDevelopment=0, /* use while developing support for a new host API */
-    paDirectSound=1,
-    paMME=2,
-    paASIO=3,
-    paSoundManager=4,
-    paCoreAudio=5,
-    paOSS=7,
-    paALSA=8,
-    paAL=9,
-    paBeOS=10,
-    paWDMKS=11,
-    paJACK=12,
-    paWASAPI=13,
-    paAudioScienceHPI=14
-} PaHostApiTypeId;
-
-
-/** A structure containing information about a particular host API. */
-
-typedef struct PaHostApiInfo
-{
-    /** this is struct version 1 */
-    int structVersion;
-    /** The well known unique identifier of this host API @see PaHostApiTypeId */
-    PaHostApiTypeId type;
-    /** A textual description of the host API for display on user interfaces. */
-    const char *name;
-
-    /**  The number of devices belonging to this host API. This field may be
-     used in conjunction with Pa_HostApiDeviceIndexToDeviceIndex() to enumerate
-     all devices for this host API.
-     @see Pa_HostApiDeviceIndexToDeviceIndex
-    */
-    int deviceCount;
-
-    /** The default input device for this host API. The value will be a
-     device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice
-     if no default input device is available.
-    */
-    PaDeviceIndex defaultInputDevice;
-
-    /** The default output device for this host API. The value will be a
-     device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice
-     if no default output device is available.
-    */
-    PaDeviceIndex defaultOutputDevice;
-    
-} PaHostApiInfo;
-
-
-/** Retrieve a pointer to a structure containing information about a specific
- host Api.
-
- @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)
-
- @return A pointer to an immutable PaHostApiInfo structure describing
- a specific host API. If the hostApi parameter is out of range or an error
- is encountered, the function returns NULL.
-
- The returned structure is owned by the PortAudio implementation and must not
- be manipulated or freed. The pointer is only guaranteed to be valid between
- calls to Pa_Initialize() and Pa_Terminate().
-*/
-const PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi );
-
-
-/** Convert a static host API unique identifier, into a runtime
- host API index.
-
- @param type A unique host API identifier belonging to the PaHostApiTypeId
- enumeration.
-
- @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or,
- a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
- 
- The paHostApiNotFound error code indicates that the host API specified by the
- type parameter is not available.
-
- @see PaHostApiTypeId
-*/
-PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type );
-
-
-/** Convert a host-API-specific device index to standard PortAudio device index.
- This function may be used in conjunction with the deviceCount field of
- PaHostApiInfo to enumerate all devices for the specified host API.
-
- @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)
-
- @param hostApiDeviceIndex A valid per-host device index in the range
- 0 to (Pa_GetHostApiInfo(hostApi)->deviceCount-1)
-
- @return A non-negative PaDeviceIndex ranging from 0 to (Pa_GetDeviceCount()-1)
- or, a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-
- A paInvalidHostApi error code indicates that the host API index specified by
- the hostApi parameter is out of range.
-
- A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter
- is out of range.
- 
- @see PaHostApiInfo
-*/
-PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi,
-        int hostApiDeviceIndex );
-
-
-
-/** Structure used to return information about a host error condition.
-*/
-typedef struct PaHostErrorInfo{
-    PaHostApiTypeId hostApiType;    /**< the host API which returned the error code */
-    long errorCode;                 /**< the error code returned */
-    const char *errorText;          /**< a textual description of the error if available, otherwise a zero-length string */
-}PaHostErrorInfo;
-
-
-/** Return information about the last host error encountered. The error
- information returned by Pa_GetLastHostErrorInfo() will never be modified
- asyncronously by errors occurring in other PortAudio owned threads
- (such as the thread that manages the stream callback.)
-
- This function is provided as a last resort, primarily to enhance debugging
- by providing clients with access to all available error information.
-
- @return A pointer to an immutable structure constaining information about
- the host error. The values in this structure will only be valid if a
- PortAudio function has previously returned the paUnanticipatedHostError
- error code.
-*/
-const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void );
-
-
-
-/* Device enumeration and capabilities */
-
-/** Retrieve the number of available devices. The number of available devices
- may be zero.
-
- @return A non-negative value indicating the number of available devices or,
- a PaErrorCode (which are always negative) if PortAudio is not initialized
- or an error is encountered.
-*/
-PaDeviceIndex Pa_GetDeviceCount( void );
-
-
-/** Retrieve the index of the default input device. The result can be
- used in the inputDevice parameter to Pa_OpenStream().
-
- @return The default input device index for the default host API, or paNoDevice
- if no default input device is available or an error was encountered.
-*/
-PaDeviceIndex Pa_GetDefaultInputDevice( void );
-
-
-/** Retrieve the index of the default output device. The result can be
- used in the outputDevice parameter to Pa_OpenStream().
-
- @return The default output device index for the default host API, or paNoDevice
- if no default output device is available or an error was encountered.
-
- @note
- On the PC, the user can specify a default device by
- setting an environment variable. For example, to use device #1.
-<pre>
- set PA_RECOMMENDED_OUTPUT_DEVICE=1
-</pre>
- The user should first determine the available device ids by using
- the supplied application "pa_devs".
-*/
-PaDeviceIndex Pa_GetDefaultOutputDevice( void );
-
-
-/** The type used to represent monotonic time in seconds that can be used
- for syncronisation. The type is used for the outTime argument to the
- PaStreamCallback and as the result of Pa_GetStreamTime().
-     
- @see PaStreamCallback, Pa_GetStreamTime
-*/
-typedef double PaTime;
-
-
-/** A type used to specify one or more sample formats. Each value indicates
- a possible format for sound data passed to and from the stream callback,
- Pa_ReadStream and Pa_WriteStream.
-
- The standard formats paFloat32, paInt16, paInt32, paInt24, paInt8
- and aUInt8 are usually implemented by all implementations.
-
- The floating point representation (paFloat32) uses +1.0 and -1.0 as the
- maximum and minimum respectively.
-
- paUInt8 is an unsigned 8 bit format where 128 is considered "ground"
-
- The paNonInterleaved flag indicates that a multichannel buffer is passed
- as a set of non-interleaved pointers.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream, PaDeviceInfo
- @see paFloat32, paInt16, paInt32, paInt24, paInt8
- @see paUInt8, paCustomFormat, paNonInterleaved
-*/
-typedef unsigned long PaSampleFormat;
-
-
-#define paFloat32        ((PaSampleFormat) 0x00000001) /**< @see PaSampleFormat */
-#define paInt32          ((PaSampleFormat) 0x00000002) /**< @see PaSampleFormat */
-#define paInt24          ((PaSampleFormat) 0x00000004) /**< Packed 24 bit format. @see PaSampleFormat */
-#define paInt16          ((PaSampleFormat) 0x00000008) /**< @see PaSampleFormat */
-#define paInt8           ((PaSampleFormat) 0x00000010) /**< @see PaSampleFormat */
-#define paUInt8          ((PaSampleFormat) 0x00000020) /**< @see PaSampleFormat */
-#define paCustomFormat   ((PaSampleFormat) 0x00010000)/**< @see PaSampleFormat */
-
-#define paNonInterleaved ((PaSampleFormat) 0x80000000)
-
-/** A structure providing information and capabilities of PortAudio devices.
- Devices may support input, output or both input and output.
-*/
-typedef struct PaDeviceInfo
-{
-    int structVersion;  /* this is struct version 2 */
-    const char *name;
-    PaHostApiIndex hostApi; /* note this is a host API index, not a type id*/
-    
-    int maxInputChannels;
-    int maxOutputChannels;
-
-    /* Default latency values for interactive performance. */
-    PaTime defaultLowInputLatency;
-    PaTime defaultLowOutputLatency;
-    /* Default latency values for robust non-interactive applications (eg. playing sound files). */
-    PaTime defaultHighInputLatency;
-    PaTime defaultHighOutputLatency;
-
-    double defaultSampleRate;
-} PaDeviceInfo;
-
-
-/** Retrieve a pointer to a PaDeviceInfo structure containing information
- about the specified device.
- @return A pointer to an immutable PaDeviceInfo structure. If the device
- parameter is out of range the function returns NULL.
-
- @param device A valid device index in the range 0 to (Pa_GetDeviceCount()-1)
-
- @note PortAudio manages the memory referenced by the returned pointer,
- the client must not manipulate or free the memory. The pointer is only
- guaranteed to be valid between calls to Pa_Initialize() and Pa_Terminate().
-
- @see PaDeviceInfo, PaDeviceIndex
-*/
-const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device );
-
-
-/** Parameters for one direction (input or output) of a stream.
-*/
-typedef struct PaStreamParameters
-{
-    /** A valid device index in the range 0 to (Pa_GetDeviceCount()-1)
-     specifying the device to be used or the special constant
-     paUseHostApiSpecificDeviceSpecification which indicates that the actual
-     device(s) to use are specified in hostApiSpecificStreamInfo.
-     This field must not be set to paNoDevice.
-    */
-    PaDeviceIndex device;
-    
-    /** The number of channels of sound to be delivered to the
-     stream callback or accessed by Pa_ReadStream() or Pa_WriteStream().
-     It can range from 1 to the value of maxInputChannels in the
-     PaDeviceInfo record for the device specified by the device parameter.
-    */
-    int channelCount;
-
-    /** The sample format of the buffer provided to the stream callback,
-     a_ReadStream() or Pa_WriteStream(). It may be any of the formats described
-     by the PaSampleFormat enumeration.
-    */
-    PaSampleFormat sampleFormat;
-
-    /** The desired latency in seconds. Where practical, implementations should
-     configure their latency based on these parameters, otherwise they may
-     choose the closest viable latency instead. Unless the suggested latency
-     is greater than the absolute upper limit for the device implementations
-     should round the suggestedLatency up to the next practial value - ie to
-     provide an equal or higher latency than suggestedLatency wherever possibe.
-     Actual latency values for an open stream may be retrieved using the
-     inputLatency and outputLatency fields of the PaStreamInfo structure
-     returned by Pa_GetStreamInfo().
-     @see default*Latency in PaDeviceInfo, *Latency in PaStreamInfo
-    */
-    PaTime suggestedLatency;
-
-    /** An optional pointer to a host api specific data structure
-     containing additional information for device setup and/or stream processing.
-     hostApiSpecificStreamInfo is never required for correct operation,
-     if not used it should be set to NULL.
-    */
-    void *hostApiSpecificStreamInfo;
-
-} PaStreamParameters;
-
-
-/** Return code for Pa_IsFormatSupported indicating success. */
-#define paFormatIsSupported (0)
-
-/** Determine whether it would be possible to open a stream with the specified
- parameters.
-
- @param inputParameters A structure that describes the input parameters used to
- open a stream. The suggestedLatency field is ignored. See PaStreamParameters
- for a description of these parameters. inputParameters must be NULL for
- output-only streams.
-
- @param outputParameters A structure that describes the output parameters used
- to open a stream. The suggestedLatency field is ignored. See PaStreamParameters
- for a description of these parameters. outputParameters must be NULL for
- input-only streams.
-
- @param sampleRate The required sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-
- @return Returns 0 if the format is supported, and an error code indicating why
- the format is not supported otherwise. The constant paFormatIsSupported is
- provided to compare with the return value for success.
-
- @see paFormatIsSupported, PaStreamParameters
-*/
-PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters,
-                              const PaStreamParameters *outputParameters,
-                              double sampleRate );
-
-
-
-/* Streaming types and functions */
-
-
-/**
- A single PaStream can provide multiple channels of real-time
- streaming audio input and output to a client application. A stream
- provides access to audio hardware represented by one or more
- PaDevices. Depending on the underlying Host API, it may be possible 
- to open multiple streams using the same device, however this behavior 
- is implementation defined. Portable applications should assume that 
- a PaDevice may be simultaneously used by at most one PaStream.
-
- Pointers to PaStream objects are passed between PortAudio functions that
- operate on streams.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream, Pa_OpenDefaultStream, Pa_CloseStream,
- Pa_StartStream, Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive,
- Pa_GetStreamTime, Pa_GetStreamCpuLoad
-
-*/
-typedef void PaStream;
-
-
-/** Can be passed as the framesPerBuffer parameter to Pa_OpenStream()
- or Pa_OpenDefaultStream() to indicate that the stream callback will
- accept buffers of any size.
-*/
-#define paFramesPerBufferUnspecified  (0)
-
-
-/** Flags used to control the behavior of a stream. They are passed as
- parameters to Pa_OpenStream or Pa_OpenDefaultStream. Multiple flags may be
- ORed together.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream
- @see paNoFlag, paClipOff, paDitherOff, paNeverDropInput,
-  paPrimeOutputBuffersUsingStreamCallback, paPlatformSpecificFlags
-*/
-typedef unsigned long PaStreamFlags;
-
-/** @see PaStreamFlags */
-#define   paNoFlag          ((PaStreamFlags) 0)
-
-/** Disable default clipping of out of range samples.
- @see PaStreamFlags
-*/
-#define   paClipOff         ((PaStreamFlags) 0x00000001)
-
-/** Disable default dithering.
- @see PaStreamFlags
-*/
-#define   paDitherOff       ((PaStreamFlags) 0x00000002)
-
-/** Flag requests that where possible a full duplex stream will not discard
- overflowed input samples without calling the stream callback. This flag is
- only valid for full duplex callback streams and only when used in combination
- with the paFramesPerBufferUnspecified (0) framesPerBuffer parameter. Using
- this flag incorrectly results in a paInvalidFlag error being returned from
- Pa_OpenStream and Pa_OpenDefaultStream.
-
- @see PaStreamFlags, paFramesPerBufferUnspecified
-*/
-#define   paNeverDropInput  ((PaStreamFlags) 0x00000004)
-
-/** Call the stream callback to fill initial output buffers, rather than the
- default behavior of priming the buffers with zeros (silence). This flag has
- no effect for input-only and blocking read/write streams.
- 
- @see PaStreamFlags
-*/
-#define   paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008)
-
-/** A mask specifying the platform specific bits.
- @see PaStreamFlags
-*/
-#define   paPlatformSpecificFlags ((PaStreamFlags)0xFFFF0000)
-
-/**
- Timing information for the buffers passed to the stream callback.
-*/
-typedef struct PaStreamCallbackTimeInfo{
-    PaTime inputBufferAdcTime;
-    PaTime currentTime;
-    PaTime outputBufferDacTime;
-} PaStreamCallbackTimeInfo;
-
-
-/**
- Flag bit constants for the statusFlags to PaStreamCallback.
-
- @see paInputUnderflow, paInputOverflow, paOutputUnderflow, paOutputOverflow,
- paPrimingOutput
-*/
-typedef unsigned long PaStreamCallbackFlags;
-
-/** In a stream opened with paFramesPerBufferUnspecified, indicates that
- input data is all silence (zeros) because no real data is available. In a
- stream opened without paFramesPerBufferUnspecified, it indicates that one or
- more zero samples have been inserted into the input buffer to compensate
- for an input underflow.
- @see PaStreamCallbackFlags
-*/
-#define paInputUnderflow   ((PaStreamCallbackFlags) 0x00000001)
-
-/** In a stream opened with paFramesPerBufferUnspecified, indicates that data
- prior to the first sample of the input buffer was discarded due to an
- overflow, possibly because the stream callback is using too much CPU time.
- Otherwise indicates that data prior to one or more samples in the
- input buffer was discarded.
- @see PaStreamCallbackFlags
-*/
-#define paInputOverflow    ((PaStreamCallbackFlags) 0x00000002)
-
-/** Indicates that output data (or a gap) was inserted, possibly because the
- stream callback is using too much CPU time.
- @see PaStreamCallbackFlags
-*/
-#define paOutputUnderflow  ((PaStreamCallbackFlags) 0x00000004)
-
-/** Indicates that output data will be discarded because no room is available.
- @see PaStreamCallbackFlags
-*/
-#define paOutputOverflow   ((PaStreamCallbackFlags) 0x00000008)
-
-/** Some of all of the output data will be used to prime the stream, input
- data may be zero.
- @see PaStreamCallbackFlags
-*/
-#define paPrimingOutput    ((PaStreamCallbackFlags) 0x00000010)
-
-/**
- Allowable return values for the PaStreamCallback.
- @see PaStreamCallback
-*/
-typedef enum PaStreamCallbackResult
-{
-    paContinue=0,
-    paComplete=1,
-    paAbort=2
-} PaStreamCallbackResult;
-
-
-/**
- Functions of type PaStreamCallback are implemented by PortAudio clients.
- They consume, process or generate audio in response to requests from an
- active PortAudio stream.
-     
- @param input and @param output are arrays of interleaved samples,
- the format, packing and number of channels used by the buffers are
- determined by parameters to Pa_OpenStream().
-     
- @param frameCount The number of sample frames to be processed by
- the stream callback.
-
- @param timeInfo The time in seconds when the first sample of the input
- buffer was received at the audio input, the time in seconds when the first
- sample of the output buffer will begin being played at the audio output, and
- the time in seconds when the stream callback was called.
- See also Pa_GetStreamTime()
-
- @param statusFlags Flags indicating whether input and/or output buffers
- have been inserted or will be dropped to overcome underflow or overflow
- conditions.
-
- @param userData The value of a user supplied pointer passed to
- Pa_OpenStream() intended for storing synthesis data etc.
-
- @return
- The stream callback should return one of the values in the
- PaStreamCallbackResult enumeration. To ensure that the callback continues
- to be called, it should return paContinue (0). Either paComplete or paAbort
- can be returned to finish stream processing, after either of these values is
- returned the callback will not be called again. If paAbort is returned the
- stream will finish as soon as possible. If paComplete is returned, the stream
- will continue until all buffers generated by the callback have been played.
- This may be useful in applications such as soundfile players where a specific
- duration of output is required. However, it is not necessary to utilise this
- mechanism as Pa_StopStream(), Pa_AbortStream() or Pa_CloseStream() can also
- be used to stop the stream. The callback must always fill the entire output
- buffer irrespective of its return value.
-
- @see Pa_OpenStream, Pa_OpenDefaultStream
-
- @note With the exception of Pa_GetStreamCpuLoad() it is not permissable to call
- PortAudio API functions from within the stream callback.
-*/
-typedef int PaStreamCallback(
-    const void *input, void *output,
-    unsigned long frameCount,
-    const PaStreamCallbackTimeInfo* timeInfo,
-    PaStreamCallbackFlags statusFlags,
-    void *userData );
-
-
-/** Opens a stream for either input, output or both.
-     
- @param stream The address of a PaStream pointer which will receive
- a pointer to the newly opened stream.
-     
- @param inputParameters A structure that describes the input parameters used by
- the opened stream. See PaStreamParameters for a description of these parameters.
- inputParameters must be NULL for output-only streams.
-
- @param outputParameters A structure that describes the output parameters used by
- the opened stream. See PaStreamParameters for a description of these parameters.
- outputParameters must be NULL for input-only streams.
- 
- @param sampleRate The desired sampleRate. For full-duplex streams it is the
- sample rate for both input and output
-     
- @param framesPerBuffer The number of frames passed to the stream callback
- function, or the preferred block granularity for a blocking read/write stream.
- The special value paFramesPerBufferUnspecified (0) may be used to request that
- the stream callback will recieve an optimal (and possibly varying) number of
- frames based on host requirements and the requested latency settings.
- Note: With some host APIs, the use of non-zero framesPerBuffer for a callback
- stream may introduce an additional layer of buffering which could introduce
- additional latency. PortAudio guarantees that the additional latency
- will be kept to the theoretical minimum however, it is strongly recommended
- that a non-zero framesPerBuffer value only be used when your algorithm
- requires a fixed number of frames per stream callback.
- 
- @param streamFlags Flags which modify the behaviour of the streaming process.
- This parameter may contain a combination of flags ORed together. Some flags may
- only be relevant to certain buffer formats.
-     
- @param streamCallback A pointer to a client supplied function that is responsible
- for processing and filling input and output buffers. If this parameter is NULL
- the stream will be opened in 'blocking read/write' mode. In blocking mode,
- the client can receive sample data using Pa_ReadStream and write sample data
- using Pa_WriteStream, the number of samples that may be read or written
- without blocking is returned by Pa_GetStreamReadAvailable and
- Pa_GetStreamWriteAvailable respectively.
-
- @param userData A client supplied pointer which is passed to the stream callback
- function. It could for example, contain a pointer to instance data necessary
- for processing the audio buffers. This parameter is ignored if streamCallback
- is NULL.
-     
- @return
- Upon success Pa_OpenStream() returns paNoError and places a pointer to a
- valid PaStream in the stream argument. The stream is inactive (stopped).
- If a call to Pa_OpenStream() fails, a non-zero error code is returned (see
- PaError for possible error codes) and the value of stream is invalid.
-
- @see PaStreamParameters, PaStreamCallback, Pa_ReadStream, Pa_WriteStream,
- Pa_GetStreamReadAvailable, Pa_GetStreamWriteAvailable
-*/
-PaError Pa_OpenStream( PaStream** stream,
-                       const PaStreamParameters *inputParameters,
-                       const PaStreamParameters *outputParameters,
-                       double sampleRate,
-                       unsigned long framesPerBuffer,
-                       PaStreamFlags streamFlags,
-                       PaStreamCallback *streamCallback,
-                       void *userData );
-
-
-/** A simplified version of Pa_OpenStream() that opens the default input
- and/or output devices.
-
- @param stream The address of a PaStream pointer which will receive
- a pointer to the newly opened stream.
- 
- @param numInputChannels  The number of channels of sound that will be supplied
- to the stream callback or returned by Pa_ReadStream. It can range from 1 to
- the value of maxInputChannels in the PaDeviceInfo record for the default input
- device. If 0 the stream is opened as an output-only stream.
-
- @param numOutputChannels The number of channels of sound to be delivered to the
- stream callback or passed to Pa_WriteStream. It can range from 1 to the value
- of maxOutputChannels in the PaDeviceInfo record for the default output dvice.
- If 0 the stream is opened as an output-only stream.
-
- @param sampleFormat The sample format of both the input and output buffers
- provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream.
- sampleFormat may be any of the formats described by the PaSampleFormat
- enumeration.
- 
- @param sampleRate Same as Pa_OpenStream parameter of the same name.
- @param framesPerBuffer Same as Pa_OpenStream parameter of the same name.
- @param streamCallback Same as Pa_OpenStream parameter of the same name.
- @param userData Same as Pa_OpenStream parameter of the same name.
-
- @return As for Pa_OpenStream
-
- @see Pa_OpenStream, PaStreamCallback
-*/
-PaError Pa_OpenDefaultStream( PaStream** stream,
-                              int numInputChannels,
-                              int numOutputChannels,
-                              PaSampleFormat sampleFormat,
-                              double sampleRate,
-                              unsigned long framesPerBuffer,
-                              PaStreamCallback *streamCallback,
-                              void *userData );
-
-
-/** Closes an audio stream. If the audio stream is active it
- discards any pending buffers as if Pa_AbortStream() had been called.
-*/
-PaError Pa_CloseStream( PaStream *stream );
-
-
-/** Functions of type PaStreamFinishedCallback are implemented by PortAudio 
- clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback
- function. Once registered they are called when the stream becomes inactive
- (ie once a call to Pa_StopStream() will not block).
- A stream will become inactive after the stream callback returns non-zero,
- or when Pa_StopStream or Pa_AbortStream is called. For a stream providing audio
- output, if the stream callback returns paComplete, or Pa_StopStream is called,
- the stream finished callback will not be called until all generated sample data
- has been played.
- 
- @param userData The userData parameter supplied to Pa_OpenStream()
-
- @see Pa_SetStreamFinishedCallback
-*/
-typedef void PaStreamFinishedCallback( void *userData );
-
-
-/** Register a stream finished callback function which will be called when the 
- stream becomes inactive. See the description of PaStreamFinishedCallback for 
- further details about when the callback will be called.
-
- @param stream a pointer to a PaStream that is in the stopped state - if the
- stream is not stopped, the stream's finished callback will remain unchanged 
- and an error code will be returned.
-
- @param streamFinishedCallback a pointer to a function with the same signature
- as PaStreamFinishedCallback, that will be called when the stream becomes
- inactive. Passing NULL for this parameter will un-register a previously
- registered stream finished callback function.
-
- @return on success returns paNoError, otherwise an error code indicating the cause
- of the error.
-
- @see PaStreamFinishedCallback
-*/
-PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback ); 
-
-
-/** Commences audio processing.
-*/
-PaError Pa_StartStream( PaStream *stream );
-
-
-/** Terminates audio processing. It waits until all pending
- audio buffers have been played before it returns.
-*/
-PaError Pa_StopStream( PaStream *stream );
-
-
-/** Terminates audio processing immediately without waiting for pending
- buffers to complete.
-*/
-PaError Pa_AbortStream( PaStream *stream );
-
-
-/** Determine whether the stream is stopped.
- A stream is considered to be stopped prior to a successful call to
- Pa_StartStream and after a successful call to Pa_StopStream or Pa_AbortStream.
- If a stream callback returns a value other than paContinue the stream is NOT
- considered to be stopped.
-
- @return Returns one (1) when the stream is stopped, zero (0) when
- the stream is running or, a PaErrorCode (which are always negative) if
- PortAudio is not initialized or an error is encountered.
-
- @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive
-*/
-PaError Pa_IsStreamStopped( PaStream *stream );
-
-
-/** Determine whether the stream is active.
- A stream is active after a successful call to Pa_StartStream(), until it
- becomes inactive either as a result of a call to Pa_StopStream() or
- Pa_AbortStream(), or as a result of a return value other than paContinue from
- the stream callback. In the latter case, the stream is considered inactive
- after the last buffer has finished playing.
-
- @return Returns one (1) when the stream is active (ie playing or recording
- audio), zero (0) when not playing or, a PaErrorCode (which are always negative)
- if PortAudio is not initialized or an error is encountered.
-
- @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamStopped
-*/
-PaError Pa_IsStreamActive( PaStream *stream );
-
-
-
-/** A structure containing unchanging information about an open stream.
- @see Pa_GetStreamInfo
-*/
-
-typedef struct PaStreamInfo
-{
-    /** this is struct version 1 */
-    int structVersion;
-
-    /** The input latency of the stream in seconds. This value provides the most
-     accurate estimate of input latency available to the implementation. It may
-     differ significantly from the suggestedLatency value passed to Pa_OpenStream().
-     The value of this field will be zero (0.) for output-only streams.
-     @see PaTime
-    */
-    PaTime inputLatency;
-
-    /** The output latency of the stream in seconds. This value provides the most
-     accurate estimate of output latency available to the implementation. It may
-     differ significantly from the suggestedLatency value passed to Pa_OpenStream().
-     The value of this field will be zero (0.) for input-only streams.
-     @see PaTime
-    */
-    PaTime outputLatency;
-
-    /** The sample rate of the stream in Hertz (samples per second). In cases
-     where the hardware sample rate is inaccurate and PortAudio is aware of it,
-     the value of this field may be different from the sampleRate parameter
-     passed to Pa_OpenStream(). If information about the actual hardware sample
-     rate is not available, this field will have the same value as the sampleRate
-     parameter passed to Pa_OpenStream().
-    */
-    double sampleRate;
-    
-} PaStreamInfo;
-
-
-/** Retrieve a pointer to a PaStreamInfo structure containing information
- about the specified stream.
- @return A pointer to an immutable PaStreamInfo structure. If the stream
- parameter invalid, or an error is encountered, the function returns NULL.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
-
- @note PortAudio manages the memory referenced by the returned pointer,
- the client must not manipulate or free the memory. The pointer is only
- guaranteed to be valid until the specified stream is closed.
-
- @see PaStreamInfo
-*/
-const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream );
-
-
-/** Determine the current time for the stream according to the same clock used
- to generate buffer timestamps. This time may be used for syncronising other
- events to the audio stream, for example synchronizing audio to MIDI.
-                                        
- @return The stream's current time in seconds, or 0 if an error occurred.
-
- @see PaTime, PaStreamCallback
-*/
-PaTime Pa_GetStreamTime( PaStream *stream );
-
-
-/** Retrieve CPU usage information for the specified stream.
- The "CPU Load" is a fraction of total CPU time consumed by a callback stream's
- audio processing routines including, but not limited to the client supplied
- stream callback. This function does not work with blocking read/write streams.
-
- This function may be called from the stream callback function or the
- application.
-     
- @return
- A floating point value, typically between 0.0 and 1.0, where 1.0 indicates
- that the stream callback is consuming the maximum number of CPU cycles possible
- to maintain real-time operation. A value of 0.5 would imply that PortAudio and
- the stream callback was consuming roughly 50% of the available CPU time. The
- return value may exceed 1.0. A value of 0.0 will always be returned for a
- blocking read/write stream, or if an error occurrs.
-*/
-double Pa_GetStreamCpuLoad( PaStream* stream );
-
-
-/** Read samples from an input stream. The function doesn't return until
- the entire buffer has been filled - this may involve waiting for the operating
- system to supply the data.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
- 
- @param buffer A pointer to a buffer of sample frames. The buffer contains
- samples in the format specified by the inputParameters->sampleFormat field
- used to open the stream, and the number of channels specified by
- inputParameters->numChannels. If non-interleaved samples were requested,
- buffer is a pointer to the first element of an array of non-interleaved
- buffer pointers, one for each channel.
-
- @param frames The number of frames to be read into buffer. This parameter
- is not constrained to a specific range, however high performance applications
- will want to match this parameter to the framesPerBuffer parameter used
- when opening the stream.
-
- @return On success PaNoError will be returned, or PaInputOverflowed if input
- data was discarded by PortAudio after the previous call and before this call.
-*/
-PaError Pa_ReadStream( PaStream* stream,
-                       void *buffer,
-                       unsigned long frames );
-
-
-/** Write samples to an output stream. This function doesn't return until the
- entire buffer has been consumed - this may involve waiting for the operating
- system to consume the data.
-
- @param stream A pointer to an open stream previously created with Pa_OpenStream.
-
- @param buffer A pointer to a buffer of sample frames. The buffer contains
- samples in the format specified by the outputParameters->sampleFormat field
- used to open the stream, and the number of channels specified by
- outputParameters->numChannels. If non-interleaved samples were requested,
- buffer is a pointer to the first element of an array of non-interleaved
- buffer pointers, one for each channel.
-
- @param frames The number of frames to be written from buffer. This parameter
- is not constrained to a specific range, however high performance applications
- will want to match this parameter to the framesPerBuffer parameter used
- when opening the stream.
-
- @return On success PaNoError will be returned, or paOutputUnderflowed if
- additional output data was inserted after the previous call and before this
- call.
-*/
-PaError Pa_WriteStream( PaStream* stream,
-                        const void *buffer,
-                        unsigned long frames );
-
-
-/** Retrieve the number of frames that can be read from the stream without
- waiting.
-
- @return Returns a non-negative value representing the maximum number of frames
- that can be read from the stream without blocking or busy waiting or, a
- PaErrorCode (which are always negative) if PortAudio is not initialized or an
- error is encountered.
-*/
-signed long Pa_GetStreamReadAvailable( PaStream* stream );
-
-
-/** Retrieve the number of frames that can be written to the stream without
- waiting.
-
- @return Returns a non-negative value representing the maximum number of frames
- that can be written to the stream without blocking or busy waiting or, a
- PaErrorCode (which are always negative) if PortAudio is not initialized or an
- error is encountered.
-*/
-signed long Pa_GetStreamWriteAvailable( PaStream* stream );
-
-
-/* Miscellaneous utilities */
-
-
-/** Retrieve the size of a given sample format in bytes.
-
- @return The size in bytes of a single sample in the specified format,
- or paSampleFormatNotSupported if the format is not supported.
-*/
-PaError Pa_GetSampleSize( PaSampleFormat format );
-
-
-/** Put the caller to sleep for at least 'msec' milliseconds. This function is
- provided only as a convenience for authors of portable code (such as the tests
- and examples in the PortAudio distribution.)
-
- The function may sleep longer than requested so don't rely on this for accurate
- musical timing.
-*/
-void Pa_Sleep( long msec );
-
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* PORTAUDIO_H */
diff --git a/fon/AmplitudeTier.cpp b/fon/AmplitudeTier.cpp
index 9371fbf..a42f3ca 100644
--- a/fon/AmplitudeTier.cpp
+++ b/fon/AmplitudeTier.cpp
@@ -1,31 +1,30 @@
 /* AmplitudeTier.cpp
  *
- * Copyright (C) 2003-2011,2014,2015 Paul Boersma
+ * Copyright (C) 2003-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AmplitudeTier.h"
 
 Thing_implement (AmplitudeTier, RealTier, 0);
 
-AmplitudeTier AmplitudeTier_create (double tmin, double tmax) {
+autoAmplitudeTier AmplitudeTier_create (double tmin, double tmax) {
 	try {
 		autoAmplitudeTier me = Thing_new (AmplitudeTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"AmplitudeTier not created.");
 	}
@@ -37,50 +36,51 @@ void AmplitudeTier_draw (AmplitudeTier me, Graphics g, double tmin, double tmax,
 	RealTier_draw (me, g, tmin, tmax, ymin, ymax, garnish, method, U"Sound pressure (Pa)");
 }
 
-AmplitudeTier PointProcess_upto_AmplitudeTier (PointProcess me, double soundPressure) {
+autoAmplitudeTier PointProcess_upto_AmplitudeTier (PointProcess me, double soundPressure) {
 	try {
-		return (AmplitudeTier) PointProcess_upto_RealTier (me, soundPressure, classAmplitudeTier);
+		autoAmplitudeTier thee = PointProcess_upto_RealTier (me, soundPressure, classAmplitudeTier).static_cast_move<structAmplitudeTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to AmplitudeTier.");
 	}
 }
 
-AmplitudeTier IntensityTier_to_AmplitudeTier (IntensityTier me) {
+autoAmplitudeTier IntensityTier_to_AmplitudeTier (IntensityTier me) {
 	try {
 		autoAmplitudeTier thee = Thing_new (AmplitudeTier);
-		my structRealTier :: v_copy (thee.peek());
-		for (long i = 1; i <= thy numberOfPoints(); i ++) {
-			RealPoint point = thy point (i);
+		my structRealTier :: v_copy (thee.get());
+		for (long i = 1; i <= thy points.size; i ++) {
+			RealPoint point = thy points.at [i];
 			point -> value = pow (10.0, point -> value / 20.0) * 2.0e-5;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to AmplitudeTier.");
 	}
 }
 
-IntensityTier AmplitudeTier_to_IntensityTier (AmplitudeTier me, double threshold_dB) {
+autoIntensityTier AmplitudeTier_to_IntensityTier (AmplitudeTier me, double threshold_dB) {
 	try {
 		double threshold_Pa = pow (10.0, threshold_dB / 20.0) * 2.0e-5;   // often zero!
 		autoIntensityTier thee = Thing_new (IntensityTier);
-		my structRealTier :: v_copy (thee.peek());
-		for (long i = 1; i <= thy numberOfPoints(); i ++) {
-			RealPoint point = thy point (i);
+		my structRealTier :: v_copy (thee.get());
+		for (long i = 1; i <= thy points.size; i ++) {
+			RealPoint point = thy points.at [i];
 			double absoluteValue = fabs (point -> value);
 			point -> value = absoluteValue <= threshold_Pa ? threshold_dB : 20.0 * log10 (absoluteValue / 2.0e-5);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to IntensityTier.");
 	}
 }
 
-TableOfReal AmplitudeTier_downto_TableOfReal (AmplitudeTier me) {
+autoTableOfReal AmplitudeTier_downto_TableOfReal (AmplitudeTier me) {
 	return RealTier_downto_TableOfReal (me, U"Time (s)", U"Sound pressure (Pa)");
 }
 
 void Sound_AmplitudeTier_multiply_inline (Sound me, AmplitudeTier amplitude) {
-	if (amplitude -> numberOfPoints() == 0) return;
+	if (amplitude -> points.size == 0) return;
 	for (long isamp = 1; isamp <= my nx; isamp ++) {
 		double t = my x1 + (isamp - 1) * my dx;
 		double factor = RealTier_getValueAtTime (amplitude, t);
@@ -90,27 +90,27 @@ void Sound_AmplitudeTier_multiply_inline (Sound me, AmplitudeTier amplitude) {
 	}
 }
 
-Sound Sound_AmplitudeTier_multiply (Sound me, AmplitudeTier amplitude) {
+autoSound Sound_AmplitudeTier_multiply (Sound me, AmplitudeTier amplitude) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_AmplitudeTier_multiply_inline (thee.peek(), amplitude);
-		Vector_scale (thee.peek(), 0.9);
-		return thee.transfer();
+		Sound_AmplitudeTier_multiply_inline (thee.get(), amplitude);
+		Vector_scale (thee.get(), 0.9);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not multiplied by ", amplitude, U".");
 	}
 }
 
-AmplitudeTier PointProcess_Sound_to_AmplitudeTier_point (PointProcess me, Sound thee) {
+autoAmplitudeTier PointProcess_Sound_to_AmplitudeTier_point (PointProcess me, Sound thee) {
 	try {
 		long imin, imax, numberOfPeaks = PointProcess_getWindowPoints (me, my xmin, my xmax, & imin, & imax);
-		if (numberOfPeaks < 3) return NULL;
+		if (numberOfPeaks < 3) return autoAmplitudeTier();
 		autoAmplitudeTier him = AmplitudeTier_create (my xmin, my xmax);
 		for (long i = imin; i <= imax; i ++) {
 			double value = Vector_getValueAtX (thee, my t [i], Vector_CHANNEL_AVERAGE, Vector_VALUE_INTERPOLATION_SINC700);
-			if (NUMdefined (value)) RealTier_addPoint (him.peek(), my t [i], value);
+			if (NUMdefined (value)) RealTier_addPoint (him.get(), my t [i], value);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not converted to AmplitudeTier.");
 	}
@@ -149,7 +149,7 @@ static double Sound_getHannWindowedRms (Sound me, double tmid, double widthLeft,
 	}
 	return sqrt (sumOfSquares / windowSumOfSquares);
 }
-AmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound thee, double tmin, double tmax,
+autoAmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound thee, double tmin, double tmax,
 	double pmin, double pmax, double maximumPeriodFactor)
 {
 	try {
@@ -164,10 +164,10 @@ AmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound
 			if (pmin == pmax || (p1 >= pmin && p1 <= pmax && p2 >= pmin && p2 <= pmax && intervalFactor <= maximumPeriodFactor)) {
 				double peak = Sound_getHannWindowedRms (thee, my t [i], 0.2 * p1, 0.2 * p2);
 				if (NUMdefined (peak) && peak > 0.0)
-					RealTier_addPoint (him.peek(), my t [i], peak);
+					RealTier_addPoint (him.get(), my t [i], peak);
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not converted to AmplitudeTier.");
 	}
@@ -175,8 +175,8 @@ AmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound
 double AmplitudeTier_getShimmer_local (AmplitudeTier me, double pmin, double pmax, double maximumAmplitudeFactor) {
 	long numberOfPeaks = 0;
 	double numerator = 0.0, denominator = 0.0;
-	RealPoint *points = (RealPoint *) my points -> item;
-	for (long i = 2; i <= my points -> size; i ++) {
+	RealPoint *points = & my points.at [0];
+	for (long i = 2; i <= my points.size; i ++) {
 		double p = points [i] -> number - points [i - 1] -> number;
 		if (pmin == pmax || (p >= pmin && p <= pmax)) {
 			double a1 = points [i - 1] -> value, a2 = points [i] -> value;
@@ -190,7 +190,7 @@ double AmplitudeTier_getShimmer_local (AmplitudeTier me, double pmin, double pma
 	if (numberOfPeaks < 1) return NUMundefined;
 	numerator /= numberOfPeaks;
 	numberOfPeaks = 0;
-	for (long i = 1; i < my points -> size; i ++) {
+	for (long i = 1; i < my points.size; i ++) {
 		denominator += points [i] -> value;
 		numberOfPeaks ++;
 	}
@@ -201,8 +201,8 @@ double AmplitudeTier_getShimmer_local (AmplitudeTier me, double pmin, double pma
 double AmplitudeTier_getShimmer_local_dB (AmplitudeTier me, double pmin, double pmax, double maximumAmplitudeFactor) {
 	long numberOfPeaks = 0;
 	double result = 0.0;
-	RealPoint *points = (RealPoint *) my points -> item;
-	for (long i = 2; i <= my points -> size; i ++) {
+	RealPoint *points = & my points.at [0];
+	for (long i = 2; i <= my points.size; i ++) {
 		double p = points [i] -> number - points [i - 1] -> number;
 		if (pmin == pmax || (p >= pmin && p <= pmax)) {
 			double a1 = points [i - 1] -> value, a2 = points [i] -> value;
@@ -220,8 +220,8 @@ double AmplitudeTier_getShimmer_local_dB (AmplitudeTier me, double pmin, double
 double AmplitudeTier_getShimmer_apq3 (AmplitudeTier me, double pmin, double pmax, double maximumAmplitudeFactor) {
 	long numberOfPeaks = 0;
 	double numerator = 0.0, denominator = 0.0;
-	RealPoint *points = (RealPoint *) my points -> item;
-	for (long i = 2; i <= my points -> size - 1; i ++) {
+	RealPoint *points = & my points.at [0];
+	for (long i = 2; i <= my points.size - 1; i ++) {
 		double
 			p1 = points [i] -> number - points [i - 1] -> number,
 			p2 = points [i + 1] -> number - points [i] -> number;
@@ -238,7 +238,7 @@ double AmplitudeTier_getShimmer_apq3 (AmplitudeTier me, double pmin, double pmax
 	if (numberOfPeaks < 1) return NUMundefined;
 	numerator /= numberOfPeaks;
 	numberOfPeaks = 0;
-	for (long i = 1; i < my points -> size; i ++) {
+	for (long i = 1; i < my points.size; i ++) {
 		denominator += points [i] -> value;
 		numberOfPeaks ++;
 	}
@@ -249,8 +249,8 @@ double AmplitudeTier_getShimmer_apq3 (AmplitudeTier me, double pmin, double pmax
 double AmplitudeTier_getShimmer_apq5 (AmplitudeTier me, double pmin, double pmax, double maximumAmplitudeFactor) {
 	long numberOfPeaks = 0;
 	double numerator = 0.0, denominator = 0.0;
-	RealPoint *points = (RealPoint *) my points -> item;
-	for (long i = 3; i <= my points -> size - 2; i ++) {
+	RealPoint *points = & my points.at [0];
+	for (long i = 3; i <= my points.size - 2; i ++) {
 		double
 			p1 = points [i - 1] -> number - points [i - 2] -> number,
 			p2 = points [i] -> number - points [i - 1] -> number,
@@ -275,7 +275,7 @@ double AmplitudeTier_getShimmer_apq5 (AmplitudeTier me, double pmin, double pmax
 	if (numberOfPeaks < 1) return NUMundefined;
 	numerator /= numberOfPeaks;
 	numberOfPeaks = 0;
-	for (long i = 1; i < my points -> size; i ++) {
+	for (long i = 1; i < my points.size; i ++) {
 		denominator += points [i] -> value;
 		numberOfPeaks ++;
 	}
@@ -286,8 +286,8 @@ double AmplitudeTier_getShimmer_apq5 (AmplitudeTier me, double pmin, double pmax
 double AmplitudeTier_getShimmer_apq11 (AmplitudeTier me, double pmin, double pmax, double maximumAmplitudeFactor) {
 	long numberOfPeaks = 0;
 	double numerator = 0.0, denominator = 0.0;
-	RealPoint *points = (RealPoint *) my points -> item;
-	for (long i = 6; i <= my points -> size - 5; i ++) {
+	RealPoint *points = & my points.at [0];
+	for (long i = 6; i <= my points.size - 5; i ++) {
 		double
 			p1 = points [i - 4] -> number - points [i - 5] -> number,
 			p2 = points [i - 3] -> number - points [i - 4] -> number,
@@ -328,7 +328,7 @@ double AmplitudeTier_getShimmer_apq11 (AmplitudeTier me, double pmin, double pma
 	if (numberOfPeaks < 1) return NUMundefined;
 	numerator /= numberOfPeaks;
 	numberOfPeaks = 0;
-	for (long i = 1; i < my points -> size; i ++) {
+	for (long i = 1; i < my points.size; i ++) {
 		denominator += points [i] -> value;
 		numberOfPeaks ++;
 	}
@@ -341,7 +341,7 @@ double AmplitudeTier_getShimmer_dda (AmplitudeTier me, double pmin, double pmax,
 	return NUMdefined (apq3) ? 3.0 * apq3 : NUMundefined;
 }
 
-Sound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long interpolationDepth) {
+autoSound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long interpolationDepth) {
 	try {
 		long sound_nt = 1 + (long) floor ((my xmax - my xmin) * samplingFrequency);   // >= 1
 		double dt = 1.0 / samplingFrequency;
@@ -350,14 +350,14 @@ Sound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long i
 		double *sound;
 		autoSound thee = Sound_create (1, my xmin, my xmax, sound_nt, dt, t1);
 		sound = thy z [1];
-		for (long it = 1; it <= my points -> size; it ++) {
-			RealPoint point = (RealPoint) my points -> item [it];
+		for (long it = 1; it <= my points.size; it ++) {
+			RealPoint point = my points.at [it];
 			double t = point -> number, amplitude = point -> value, angle, halfampsinangle;
-			long mid = Sampled_xToNearestIndex (thee.peek(), t), j;
+			long mid = Sampled_xToNearestIndex (thee.get(), t), j;
 			long begin = mid - interpolationDepth, end = mid + interpolationDepth;
 			if (begin < 1) begin = 1;
 			if (end > thy nx) end = thy nx;
-			angle = NUMpi * (Sampled_indexToX (thee.peek(), begin) - t) / thy dx;
+			angle = NUMpi * (Sampled_indexToX (thee.get(), begin) - t) / thy dx;
 			halfampsinangle = 0.5 * amplitude * sin (angle);
 			for (j = begin; j <= end; j ++) {
 				if (fabs (angle) < 1e-6)
@@ -372,7 +372,7 @@ Sound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long i
 				halfampsinangle = - halfampsinangle;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
diff --git a/fon/AmplitudeTier.h b/fon/AmplitudeTier.h
index 69040cd..ff362da 100644
--- a/fon/AmplitudeTier.h
+++ b/fon/AmplitudeTier.h
@@ -2,21 +2,20 @@
 #define _AmplitudeTier_h_
 /* AmplitudeTier.h
  *
- * Copyright (C) 2003-2011 Paul Boersma
+ * Copyright (C) 2003-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "IntensityTier.h"
@@ -30,20 +29,20 @@ Thing_define (AmplitudeTier, RealTier) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-AmplitudeTier AmplitudeTier_create (double tmin, double tmax);
+autoAmplitudeTier AmplitudeTier_create (double tmin, double tmax);
 
 void AmplitudeTier_draw (AmplitudeTier me, Graphics g, double tmin, double tmax,
 	double ymin, double ymax, const char32 *method, int garnish);
 
-AmplitudeTier PointProcess_upto_AmplitudeTier (PointProcess me, double soundPressure);
-AmplitudeTier IntensityTier_to_AmplitudeTier (IntensityTier me);
-IntensityTier AmplitudeTier_to_IntensityTier (AmplitudeTier me, double threshold_dB);
-TableOfReal AmplitudeTier_downto_TableOfReal (AmplitudeTier me);
+autoAmplitudeTier PointProcess_upto_AmplitudeTier (PointProcess me, double soundPressure);
+autoAmplitudeTier IntensityTier_to_AmplitudeTier (IntensityTier me);
+autoIntensityTier AmplitudeTier_to_IntensityTier (AmplitudeTier me, double threshold_dB);
+autoTableOfReal AmplitudeTier_downto_TableOfReal (AmplitudeTier me);
 void Sound_AmplitudeTier_multiply_inline (Sound me, AmplitudeTier intensity);
-Sound Sound_AmplitudeTier_multiply (Sound me, AmplitudeTier intensity);
+autoSound Sound_AmplitudeTier_multiply (Sound me, AmplitudeTier intensity);
 
-AmplitudeTier PointProcess_Sound_to_AmplitudeTier_point (PointProcess me, Sound thee);
-AmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound thee,
+autoAmplitudeTier PointProcess_Sound_to_AmplitudeTier_point (PointProcess me, Sound thee);
+autoAmplitudeTier PointProcess_Sound_to_AmplitudeTier_period (PointProcess me, Sound thee,
 	double tmin, double tmax, double shortestPeriod, double longestPeriod, double maximumPeriodFactor);
 double AmplitudeTier_getShimmer_local (AmplitudeTier me, double shortestPeriod, double longestPeriod, double maximumAmplitudeFactor);
 double AmplitudeTier_getShimmer_local_dB (AmplitudeTier me, double shortestPeriod, double longestPeriod, double maximumAmplitudeFactor);
@@ -52,7 +51,7 @@ double AmplitudeTier_getShimmer_apq5 (AmplitudeTier me, double shortestPeriod, d
 double AmplitudeTier_getShimmer_apq11 (AmplitudeTier me, double shortestPeriod, double longestPeriod, double maximumAmplitudeFactor);
 double AmplitudeTier_getShimmer_dda (AmplitudeTier me, double shortestPeriod, double longestPeriod, double maximumAmplitudeFactor);
 
-Sound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long interpolationDepth);
+autoSound AmplitudeTier_to_Sound (AmplitudeTier me, double samplingFrequency, long interpolationDepth);
 
 /* End of file AmplitudeTier.h */
 #endif
diff --git a/fon/AmplitudeTierEditor.cpp b/fon/AmplitudeTierEditor.cpp
index 81fe2bf..ced2db7 100644
--- a/fon/AmplitudeTierEditor.cpp
+++ b/fon/AmplitudeTierEditor.cpp
@@ -1,20 +1,19 @@
 /* AmplitudeTierEditor.cpp
  *
- * Copyright (C) 2003-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 2003-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AmplitudeTierEditor.h"
@@ -22,7 +21,9 @@
 
 Thing_implement (AmplitudeTierEditor, RealTierEditor, 0);
 
-static void menu_cb_AmplitudeTierHelp (EDITOR_ARGS) { EDITOR_IAM (AmplitudeTierEditor); Melder_help (U"AmplitudeTier"); }
+static void menu_cb_AmplitudeTierHelp (AmplitudeTierEditor /* me */, EDITOR_ARGS_DIRECT) {
+	Melder_help (U"AmplitudeTier");
+}
 
 void structAmplitudeTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	AmplitudeTierEditor_Parent :: v_createHelpMenuItems (menu);
@@ -33,15 +34,15 @@ void structAmplitudeTierEditor :: v_play (double fromTime, double toTime) {
 	if (our d_sound.data) {
 		Sound_playPart (our d_sound.data, fromTime, toTime, theFunctionEditor_playCallback, this);
 	} else {
-		//AmplitudeTier_playPart (data, fromTime, toTime, FALSE);
+		//AmplitudeTier_playPart (data, fromTime, toTime, false);
 	}
 }
 
-AmplitudeTierEditor AmplitudeTierEditor_create (const char32 *title, AmplitudeTier amplitude, Sound sound, bool ownSound) {
+autoAmplitudeTierEditor AmplitudeTierEditor_create (const char32 *title, AmplitudeTier amplitude, Sound sound, bool ownSound) {
 	try {
 		autoAmplitudeTierEditor me = Thing_new (AmplitudeTierEditor);
-		RealTierEditor_init (me.peek(), title, (RealTier) amplitude, sound, ownSound);
-		return me.transfer();
+		RealTierEditor_init (me.get(), title, (RealTier) amplitude, sound, ownSound);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"AmplitudeTier window not created.");
 	}
diff --git a/fon/AmplitudeTierEditor.h b/fon/AmplitudeTierEditor.h
index eb8747a..6848224 100644
--- a/fon/AmplitudeTierEditor.h
+++ b/fon/AmplitudeTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2003-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -54,9 +53,9 @@ Thing_define (AmplitudeTierEditor, RealTierEditor) {
 		override { return U"Maximum amplitude"; }
 };
 
-AmplitudeTierEditor AmplitudeTierEditor_create (const char32 *title,
+autoAmplitudeTierEditor AmplitudeTierEditor_create (const char32 *title,
 	AmplitudeTier amplitude,
-	Sound sound,   // may be NULL
+	Sound sound,   // may be null
 	bool ownSound);
 
 /* End of file AmplitudeTierEditor.h */
diff --git a/fon/AnyTier.cpp b/fon/AnyTier.cpp
index 84263f5..92b81e9 100644
--- a/fon/AnyTier.cpp
+++ b/fon/AnyTier.cpp
@@ -2,23 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AnyTier.h"
 
+/*
 #include "oo_DESTROY.h"
 #include "AnyTier_def.h"
 #include "oo_COPY.h"
@@ -37,6 +37,7 @@
 #include "AnyTier_def.h"
 #include "oo_DESCRIPTION.h"
 #include "AnyTier_def.h"
+*/
 
 Thing_implement (AnyPoint, SimpleDouble, 0);
 
@@ -44,34 +45,32 @@ Thing_implement (AnyTier, Function, 0);
 
 void structAnyTier :: v_shiftX (double xfrom, double xto) {
 	AnyTier_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= points -> size; i ++) {
-		AnyPoint point = (AnyPoint) points -> item [i];
+	for (long i = 1; i <= our points.size; i ++) {
+		AnyPoint point = our points.at [i];
 		NUMshift (& point -> number, xfrom, xto);
 	}
 }
 
 void structAnyTier :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	AnyTier_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= points -> size; i ++) {
-		AnyPoint point = (AnyPoint) points -> item [i];
+	for (long i = 1; i <= our points.size; i ++) {
+		AnyPoint point = our points.at [i];
 		NUMscale (& point -> number, xminfrom, xmaxfrom, xminto, xmaxto);
 	}
 }
 
-long AnyTier_timeToLowIndex (I, double time) {
-	iam (AnyTier);
-	if (my points -> size == 0) return 0;   // undefined
-	long ileft = 1, iright = my points -> size;
-	AnyPoint *points = (AnyPoint *) my points -> item;
-	double tleft = points [ileft] -> number;
+long AnyTier_timeToLowIndex (AnyTier me, double time) {
+	if (my points.size == 0) return 0;   // undefined
+	long ileft = 1, iright = my points.size;
+	double tleft = my points.at [ileft] -> number;
 	if (time < tleft) return 0;   // offleft
-	double tright = points [iright] -> number;
+	double tright = my points.at [iright] -> number;
 	if (time >= tright) return iright;
 	Melder_assert (time >= tleft && time < tright);
 	Melder_assert (iright > ileft);
 	while (iright > ileft + 1) {
 		long imid = (ileft + iright) / 2;
-		double tmid = points [imid] -> number;
+		double tmid = my points.at [imid] -> number;
 		if (time < tmid) {
 			iright = imid;
 			tright = tmid;
@@ -82,26 +81,24 @@ long AnyTier_timeToLowIndex (I, double time) {
 	}
 	Melder_assert (iright == ileft + 1);
 	Melder_assert (ileft >= 1);
-	Melder_assert (iright <= my points -> size);
-	Melder_assert (time >= points [ileft] -> number);
-	Melder_assert (time <= points [iright] -> number);
+	Melder_assert (iright <= my points.size);
+	Melder_assert (time >= my points.at [ileft] -> number);
+	Melder_assert (time <= my points.at [iright] -> number);
 	return ileft;
 }
 
-long AnyTier_timeToHighIndex (I, double time) {
-	iam (AnyTier);
-	if (my points -> size == 0) return 0;   // undefined; is this right?
-	long ileft = 1, iright = my points -> size;
-	AnyPoint *points = (AnyPoint *) my points -> item;
-	double tleft = points [ileft] -> number;
+long AnyTier_timeToHighIndex (AnyTier me, double time) {
+	if (my points.size == 0) return 0;   // undefined; is this right?
+	long ileft = 1, iright = my points.size;
+	double tleft = my points.at [ileft] -> number;
 	if (time <= tleft) return 1;
-	double tright = points [iright] -> number;
+	double tright = my points.at [iright] -> number;
 	if (time > tright) return iright + 1;   // offright
 	Melder_assert (time > tleft && time <= tright);
 	Melder_assert (iright > ileft);
 	while (iright > ileft + 1) {
 		long imid = (ileft + iright) / 2;
-		double tmid = points [imid] -> number;
+		double tmid = my points.at [imid] -> number;
 		if (time <= tmid) {
 			iright = imid;
 			tright = tmid;
@@ -112,35 +109,32 @@ long AnyTier_timeToHighIndex (I, double time) {
 	}
 	Melder_assert (iright == ileft + 1);
 	Melder_assert (ileft >= 1);
-	Melder_assert (iright <= my points -> size);
-	Melder_assert (time >= points [ileft] -> number);
-	Melder_assert (time <= points [iright] -> number);
+	Melder_assert (iright <= my points.size);
+	Melder_assert (time >= my points.at [ileft] -> number);
+	Melder_assert (time <= my points.at [iright] -> number);
 	return iright;
 }
 
-long AnyTier_getWindowPoints (I, double tmin, double tmax, long *imin, long *imax) {
-	iam (AnyTier);
-	if (my points -> size == 0) return 0;
+long AnyTier_getWindowPoints (AnyTier me, double tmin, double tmax, long *imin, long *imax) {
+	if (my points.size == 0) return 0;
 	*imin = AnyTier_timeToHighIndex (me, tmin);
 	*imax = AnyTier_timeToLowIndex (me, tmax);
 	if (*imax < *imin) return 0;
 	return *imax - *imin + 1;
 }
 	
-long AnyTier_timeToNearestIndex (I, double time) {
-	iam (AnyTier);
-	if (my points -> size == 0) return 0;   // undefined
-	long ileft = 1, iright = my points -> size;
-	AnyPoint *points = (AnyPoint *) my points -> item;
-	double tleft = points [ileft] -> number;
+long AnyTier_timeToNearestIndex (AnyTier me, double time) {
+	if (my points.size == 0) return 0;   // undefined
+	long ileft = 1, iright = my points.size;
+	double tleft = my points.at [ileft] -> number;
 	if (time <= tleft) return 1;
-	double tright = points [iright] -> number;
+	double tright = my points.at [iright] -> number;
 	if (time >= tright) return iright;
 	Melder_assert (time > tleft && time < tright);
 	Melder_assert (iright > ileft);
 	while (iright > ileft + 1) {
 		long imid = (ileft + iright) / 2;
-		double tmid = points [imid] -> number;
+		double tmid = my points.at [imid] -> number;
 		if (time < tmid) {
 			iright = imid;
 			tright = tmid;
@@ -151,20 +145,18 @@ long AnyTier_timeToNearestIndex (I, double time) {
 	}
 	Melder_assert (iright == ileft + 1);
 	Melder_assert (ileft >= 1);
-	Melder_assert (iright <= my points -> size);
-	Melder_assert (time >= points [ileft] -> number);
-	Melder_assert (time <= points [iright] -> number);
+	Melder_assert (iright <= my points.size);
+	Melder_assert (time >= my points.at [ileft] -> number);
+	Melder_assert (time <= my points.at [iright] -> number);
 	return time - tleft <= tright - time ? ileft : iright;
 }
 
-long AnyTier_hasPoint (I, double t) {
-	iam (AnyTier);
-	if (my points -> size == 0) return 0;   // point not found
-	long ileft = 1, iright = my points -> size;
-	AnyPoint *points = (AnyPoint *) my points -> item;
-	double tleft = points [ileft] -> number;
+long AnyTier_hasPoint (AnyTier me, double t) {
+	if (my points.size == 0) return 0;   // point not found
+	long ileft = 1, iright = my points.size;
+	double tleft = my points.at [ileft] -> number;
 	if (t < tleft) return 0;   // offleft
-	double tright = points [iright] -> number;
+	double tright = my points.at [iright] -> number;
 	if (t > tright) return 0;   // offright
 	if (t == tleft) return 1;
 	if (t == tright) return iright;
@@ -172,7 +164,7 @@ long AnyTier_hasPoint (I, double t) {
 	Melder_assert (iright > ileft);
 	while (iright > ileft + 1) {
 		long imid = (ileft + iright) / 2;
-		double tmid = points [imid] -> number;
+		double tmid = my points.at [imid] -> number;
 		if (t < tmid) {
 			iright = imid;
 			tright = tmid;
@@ -185,52 +177,46 @@ long AnyTier_hasPoint (I, double t) {
 	}
 	Melder_assert (iright == ileft + 1);
 	Melder_assert (ileft >= 1);
-	Melder_assert (iright <= my points -> size);
-	Melder_assert (t > points [ileft] -> number);
-	Melder_assert (t < points [iright] -> number);
-	return 0;   /* Point not found. */
+	Melder_assert (iright <= my points.size);
+	Melder_assert (t > my points.at [ileft] -> number);
+	Melder_assert (t < my points.at [iright] -> number);
+	return 0;   // point not found
 }
 
-void AnyTier_addPoint (I, Data point) {
-	iam (AnyTier);
+void AnyTier_addPoint_move (AnyTier me, autoAnyPoint point) {
 	try {
-		Collection_addItem (my points, point);
+		my points. addItem_move (point.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": point not added.");
 	}
 }
 
-void AnyTier_removePoint (I, long i) {
-	iam (AnyTier);
-	if (i >= 1 && i <= my points -> size) Collection_removeItem (my points, i);
+void AnyTier_removePoint (AnyTier me, long i) {
+	if (i >= 1 && i <= my points.size) my points. removeItem (i);
 }
 
-void AnyTier_removePointNear (I, double time) {
-	iam (AnyTier);
+void AnyTier_removePointNear (AnyTier me, double time) {
 	long ipoint = AnyTier_timeToNearestIndex (me, time);
-	if (ipoint) Collection_removeItem (my points, ipoint);
+	if (ipoint) my points.removeItem (ipoint);
 }
 
-void AnyTier_removePointsBetween (I, double tmin, double tmax) {
-	iam (AnyTier);
-	if (my points -> size == 0) return;
+void AnyTier_removePointsBetween (AnyTier me, double tmin, double tmax) {
+	if (my points.size == 0) return;
 	long ileft = AnyTier_timeToHighIndex (me, tmin);
 	long iright = AnyTier_timeToLowIndex (me, tmax);
 	for (long i = iright; i >= ileft; i --)
-		Collection_removeItem (my points, i);
+		my points. removeItem (i);
 }
 
-PointProcess AnyTier_downto_PointProcess (I) {
-	iam (AnyTier);
+autoPointProcess AnyTier_downto_PointProcess (AnyTier me) {
 	try {
-		long numberOfPoints = my points -> size;
-		AnyPoint *points = (AnyPoint *) my points -> item;
+		long numberOfPoints = my points.size;
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, numberOfPoints);
 		/* OPTIMIZATION, bypassing PointProcess_addTime: */
 		for (long i = 1; i <= numberOfPoints; i ++)
-			thy t [i] = points [i] -> number;
+			thy t [i] = my points.at [i] -> number;
 		thy nt = numberOfPoints;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PointProcess.");
 	}
diff --git a/fon/AnyTier.h b/fon/AnyTier.h
index 3ab2feb..70504f9 100644
--- a/fon/AnyTier.h
+++ b/fon/AnyTier.h
@@ -2,40 +2,63 @@
 #define _AnyTier_h_
 /* AnyTier.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 #include "PointProcess.h"
 
-#include "AnyTier_def.h"
-oo_CLASS_CREATE (AnyPoint, SimpleDouble);
-oo_CLASS_CREATE (AnyTier, Function);
-
-long AnyTier_timeToLowIndex (I, double time);
-long AnyTier_timeToHighIndex (I, double time);
-long AnyTier_getWindowPoints (I, double tmin, double tmax, long *imin, long *imax);
-long AnyTier_timeToNearestIndex (I, double time);
-long AnyTier_hasPoint (I, double t);
-void AnyTier_addPoint (I, Data point);
-void AnyTier_removePoint (I, long i);
-void AnyTier_removePointNear (I, double time);
-void AnyTier_removePointsBetween (I, double tmin, double tmax);
-PointProcess AnyTier_downto_PointProcess (I);
+Thing_define (AnyPoint, SimpleDouble) {
+};
+
+Thing_define (AnyTier, Function) {
+	SortedSetOfDoubleOf <structAnyPoint> points;
+
+	void v_shiftX (double xfrom, double xto)
+		override;
+	void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
+		override;
+};
+
+long AnyTier_timeToLowIndex (AnyTier me, double time);
+
+long AnyTier_timeToHighIndex (AnyTier me, double time);
+
+long AnyTier_getWindowPoints (AnyTier me, double tmin, double tmax, long *imin, long *imax);
+
+long AnyTier_timeToNearestIndex (AnyTier me, double time);
+
+long AnyTier_hasPoint (AnyTier me, double t);
+
+void AnyTier_addPoint_move (AnyTier me, autoAnyPoint point);
+
+void AnyTier_removePoint (AnyTier me, long i);
+
+void AnyTier_removePointNear (AnyTier me, double time);
+
+void AnyTier_removePointsBetween (AnyTier me, double tmin, double tmax);
+
+autoPointProcess AnyTier_downto_PointProcess (AnyTier me);
+
+#define AnyTier_METHODS \
+	AnyTier asAnyTier () { return reinterpret_cast <AnyTier> (this); } \
+	void v_shiftX (double xfrom, double xto) \
+		override { ((AnyTier) this) -> structAnyTier::v_shiftX (xfrom, xto); } \
+	void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) \
+		override { ((AnyTier) this) -> structAnyTier::v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto); };
 
 #endif
 /* End of file AnyTier.h */
diff --git a/fon/AnyTier_def.h b/fon/AnyTier_def.h
deleted file mode 100644
index 1b37125..0000000
--- a/fon/AnyTier_def.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* AnyTier_def.h
- *
- * Copyright (C) 1992-2011,2015 Paul Boersma
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#define ooSTRUCT AnyPoint
-oo_DEFINE_CLASS (AnyPoint, SimpleDouble)
-
-oo_END_CLASS (AnyPoint)
-#undef ooSTRUCT
-
-
-#define ooSTRUCT AnyTier
-oo_DEFINE_CLASS (AnyTier, Function)
-
-	oo_COLLECTION (SortedSetOfDouble, points, AnyPoint, 0)
-
-	#if oo_DECLARING
-		void v_shiftX (double xfrom, double xto)
-			override;
-		void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
-			override;
-	#endif
-
-oo_END_CLASS (AnyTier)
-#undef ooSTRUCT
-
-
-/* End of file AnyTier_def.h */
diff --git a/fon/Cochleagram.cpp b/fon/Cochleagram.cpp
index d766994..ef97ade 100644
--- a/fon/Cochleagram.cpp
+++ b/fon/Cochleagram.cpp
@@ -1,20 +1,19 @@
 /* Cochleagram.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -22,19 +21,19 @@
 
 Thing_implement (Cochleagram, Matrix, 2);
 
-Cochleagram Cochleagram_create (double tmin, double tmax, long nt, double dt, double t1, double df, long nf) {
+autoCochleagram Cochleagram_create (double tmin, double tmax, long nt, double dt, double t1, double df, long nf) {
 	try {
 		autoCochleagram me = Thing_new (Cochleagram);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, 0.0, nf * df, nf, df, 0.5 * df);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, 0.0, nf * df, nf, df, 0.5 * df);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Cochleagram with ", nt, U" times and ", nf, U" frequencies not created.");
 	}
 }
 
 void Cochleagram_paint (Cochleagram me, Graphics g, double tmin, double tmax, int garnish) {
-	static double border [1 + 12] =
-		{ 0, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80 };
+	static double border [1 + 12]
+		{ 0.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0 };
 	try {
 		autoCochleagram copy = Data_copy (me);
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
@@ -45,12 +44,12 @@ void Cochleagram_paint (Cochleagram me, Graphics g, double tmin, double tmax, in
 				if (my z [iy] [ix] > my z [iy - 1] [ix] &&
 					my z [iy] [ix] > my z [iy + 1] [ix])
 				{
-					copy -> z [iy - 1] [ix] += 10;
-					copy -> z [iy] [ix] += 10;
-					copy -> z [iy + 1] [ix] += 10;
+					copy -> z [iy - 1] [ix] += 10.0;
+					copy -> z [iy] [ix] += 10.0;
+					copy -> z [iy + 1] [ix] += 10.0;
 				}
 		Graphics_setInner (g);
-		Graphics_setWindow (g, tmin, tmax, 0, my ny * my dy);
+		Graphics_setWindow (g, tmin, tmax, 0.0, my ny * my dy);
 		Graphics_grey (g, copy -> z,
 			itmin, itmax, Matrix_columnToX (me, itmin), Matrix_columnToX (me, itmax),
 			1, my ny, 0.5 * my dy, (my ny - 0.5) * my dy,
@@ -58,13 +57,13 @@ void Cochleagram_paint (Cochleagram me, Graphics g, double tmin, double tmax, in
 		Graphics_unsetInner (g);
 		if (garnish) {
 			Graphics_drawInnerBox (g);
-			Graphics_textBottom (g, 1, U"Time (s)");
-			Graphics_marksBottom (g, 2, 1, 1, 0);
-			Graphics_textLeft (g, 1, U"Place (Bark)");
-			Graphics_marksLeftEvery (g, 1.0, 5.0, 1, 1, 0);
+			Graphics_textBottom (g, true, U"Time (s)");
+			Graphics_marksBottom (g, 2, true, true, false);
+			Graphics_textLeft (g, true, U"Place (Bark)");
+			Graphics_marksLeftEvery (g, 1.0, 5.0, true, true, false);
 		}
 	} catch (MelderError) {
-		Melder_clearError ();   // BUG
+		Melder_clearError ();
 	}
 }
 
@@ -93,21 +92,21 @@ double Cochleagram_difference (Cochleagram me, Cochleagram thee, double tmin, do
 	}
 }
 
-Cochleagram Matrix_to_Cochleagram (Matrix me) {
+autoCochleagram Matrix_to_Cochleagram (Matrix me) {
 	try {
 		autoCochleagram thee = Cochleagram_create (my xmin, my xmax, my nx, my dx, my x1, my dy, my ny);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Cochleagram.");
 	}
 }
 
-Matrix Cochleagram_to_Matrix (Cochleagram me) {
+autoMatrix Cochleagram_to_Matrix (Cochleagram me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/fon/Cochleagram.h b/fon/Cochleagram.h
index 7a11efe..8624560 100644
--- a/fon/Cochleagram.h
+++ b/fon/Cochleagram.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
@@ -32,7 +31,7 @@ Thing_define (Cochleagram, Matrix) {
 	nx;				// Number of time slices.
 	dx;				// Time step (seconds).
 	x1;				// Centre of first time sample (seconds).
-	ymin = 0;			// Minimum frequency (Bark).
+	ymin = 0.0;			// Minimum frequency (Bark).
 	ymax = 25.6;		// Maximum frequency (Bark).
 	ny;				// Number of frequencies.
 	dy = 25.6 / ny;		// Frequency step (Bark).
@@ -40,11 +39,11 @@ Thing_define (Cochleagram, Matrix) {
 	z;				// Basilar filter output (milliVolt), or firing rate (Hz), or intensity (phon).
 */
 
-Cochleagram Cochleagram_create (double tmin, double tmax, long nt, double dt, double t1,
+autoCochleagram Cochleagram_create (double tmin, double tmax, long nt, double dt, double t1,
 	double df, long nf);
 /*
 	Function:
-		return a new instance of Cochleagram, or NULL if out of memory.
+		return a new instance of Cochleagram.
 	Preconditions:
 		dt > 0.0;						df > 0.0;
 		nt >= 1;						nf >= 1;
@@ -61,20 +60,20 @@ void Cochleagram_paint (Cochleagram me, Graphics g, double tmin, double tmax, in
 
 double Cochleagram_difference (Cochleagram me, Cochleagram thee, double tmin, double tmax);
 
-Cochleagram Matrix_to_Cochleagram (Matrix me);
+autoCochleagram Matrix_to_Cochleagram (Matrix me);
 /*
 	Function:
 		create a Cochleagram from a Matrix,
 		with deep copy of all its attributes, except class information and methods.
-	Return NULL if out of memory.  
+	Fail if out of memory.
 */
 
-Matrix Cochleagram_to_Matrix (Cochleagram me);
+autoMatrix Cochleagram_to_Matrix (Cochleagram me);
 /*
 	Function:
 		create a Matrix from a Cochleagram,
 		with deep copy of all its attributes, except class information and methods.
-	Return NULL if out of memory.  
+	Fail if out of memory.
 */
 
 /* End of file Cochleagram.h */
diff --git a/fon/Cochleagram_and_Excitation.cpp b/fon/Cochleagram_and_Excitation.cpp
index 0c6572d..2574da8 100644
--- a/fon/Cochleagram_and_Excitation.cpp
+++ b/fon/Cochleagram_and_Excitation.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,7 +25,7 @@
 
 #include "Cochleagram_and_Excitation.h"
 
-Excitation Cochleagram_to_Excitation (Cochleagram me, double t) {
+autoExcitation Cochleagram_to_Excitation (Cochleagram me, double t) {
 	try {
 		long column = Matrix_xToNearestColumn (me, t);
 		if (column < 1) column = 1;
@@ -34,7 +33,7 @@ Excitation Cochleagram_to_Excitation (Cochleagram me, double t) {
 		autoExcitation thee = Excitation_create (my dy, my ny);
 		for (long ifreq = 1; ifreq <= my ny; ifreq ++)
 			thy z [1] [ifreq] = my z [ifreq] [column];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": slice at time ", t, U" seconds not extracted to Excitation.");
 	}
diff --git a/fon/Cochleagram_and_Excitation.h b/fon/Cochleagram_and_Excitation.h
index 13f276e..85d634c 100644
--- a/fon/Cochleagram_and_Excitation.h
+++ b/fon/Cochleagram_and_Excitation.h
@@ -1,25 +1,24 @@
 /* Cochleagram_and_Excitation.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Cochleagram.h"
 #include "Excitation.h"
 
-Excitation Cochleagram_to_Excitation (Cochleagram me, double t);
+autoExcitation Cochleagram_to_Excitation (Cochleagram me, double t);
 
 /* End of file Cochleagram_and_Excitation.h */
diff --git a/fon/Corpus.cpp b/fon/Corpus.cpp
index ba7686b..b510f06 100644
--- a/fon/Corpus.cpp
+++ b/fon/Corpus.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Corpus.h"
diff --git a/fon/Corpus.h b/fon/Corpus.h
index 03c338a..2f33b82 100644
--- a/fon/Corpus.h
+++ b/fon/Corpus.h
@@ -4,25 +4,23 @@
  *
  * Copyright (C) 2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Table.h"
 
 #include "Corpus_def.h"
-oo_CLASS_CREATE (Corpus, Table);
 
 #endif
 /* End of file Corpus.h */
diff --git a/fon/Corpus_def.h b/fon/Corpus_def.h
index c83986d..7daeb5d 100644
--- a/fon/Corpus_def.h
+++ b/fon/Corpus_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/Distributions_and_Transition.cpp b/fon/Distributions_and_Transition.cpp
index 415c1a1..c191095 100644
--- a/fon/Distributions_and_Transition.cpp
+++ b/fon/Distributions_and_Transition.cpp
@@ -1,36 +1,28 @@
 /* Distributions_and_Transition.cpp
  *
- * Copyright (C) 1997-2011,2015 Paul Boersma
+ * Copyright (C) 1997-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1997/03/02 created
- * pb 2002/07/16 GPL
- * pb 2007/08/12 wchar
- * pb 2011/05/09 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Distributions_and_Transition.h"
 
-Transition Distributions_to_Transition (Distributions underlying, Distributions surface, long environment,
-	Transition adjacency, int greedy)
+autoTransition Distributions_to_Transition (Distributions underlying, Distributions surface, long environment,
+	Transition adjacency, bool greedy)
 {
 	try {
-		if (underlying == NULL) return NULL;
+		if (! underlying) return autoTransition();
 
 		/*
 		 * Preconditions: range check and matrix matching.
@@ -46,7 +38,7 @@ Transition Distributions_to_Transition (Distributions underlying, Distributions
 		/*
 		 * Defaults.
 		 */
-		if (surface == NULL) surface = underlying;
+		if (! surface) surface = underlying;
 
 		/*
 		 * Create the output object.
@@ -59,7 +51,7 @@ Transition Distributions_to_Transition (Distributions underlying, Distributions
 		for (long i = 1; i <= thy numberOfStates; i ++) {
 			thy stateLabels [i] = Melder_dup (underlying -> columnLabels [i]);
 		}
-		Thing_setName (thee.peek(), underlying -> columnLabels [environment]);
+		Thing_setName (thee.get(), underlying -> columnLabels [environment]);
 
 		/*
 		 * Compute the off-diagonal elements of the transition matrix in environment 'environment'.
@@ -123,13 +115,13 @@ Transition Distributions_to_Transition (Distributions underlying, Distributions
 			thy data [i] [i] = sum > 1.0 ? 0.0 : 1.0 - sum;   // guard against rounding errors
 		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (underlying, U": Transition not computed.");
 	}
 }
 
-Distributions Distributions_Transition_map (Distributions me, Transition map) {
+autoDistributions Distributions_Transition_map (Distributions me, Transition map) {
 	try {
 		/*
 		 * Preconditions: matrix matching.
@@ -152,13 +144,13 @@ Distributions Distributions_Transition_map (Distributions me, Transition map) {
 				thy data [row] [col] += my data [m] [col] * map -> data [m] [row];
 		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not mapped to Transition.");
 	}
 }
 
-Distributions Transition_to_Distributions_conflate (Transition me) {
+autoDistributions Transition_to_Distributions_conflate (Transition me) {
 	try {
 		autoDistributions thee = Distributions_create (my numberOfStates, 1);
 
@@ -178,7 +170,7 @@ Distributions Transition_to_Distributions_conflate (Transition me) {
 			thy data [i] [1] /= my numberOfStates;
 		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not conflated to Distributions.");
 	}
diff --git a/fon/Distributions_and_Transition.h b/fon/Distributions_and_Transition.h
index 4d0c4b0..797d538 100644
--- a/fon/Distributions_and_Transition.h
+++ b/fon/Distributions_and_Transition.h
@@ -1,30 +1,29 @@
 /* Distributions_and_Transition.h
  *
- * Copyright (C) 1997-2011 Paul Boersma
+ * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Distributions.h"
 #include "Transition.h"
 
-Transition Distributions_to_Transition (Distributions underlying, Distributions surface,
-	long environment, Transition adjacency, int greedy);
+autoTransition Distributions_to_Transition (Distributions underlying, Distributions surface,
+	long environment, Transition adjacency, bool greedy);
 
-Distributions Distributions_Transition_map (Distributions me, Transition map);
+autoDistributions Distributions_Transition_map (Distributions me, Transition map);
 
-Distributions Transition_to_Distributions_conflate (Transition me);
+autoDistributions Transition_to_Distributions_conflate (Transition me);
 
 /* End of file Distributions_and_Transition.h */
diff --git a/fon/DurationTier.cpp b/fon/DurationTier.cpp
index b08d0d1..4d212c6 100644
--- a/fon/DurationTier.cpp
+++ b/fon/DurationTier.cpp
@@ -1,20 +1,19 @@
 /* DurationTier.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "DurationTier.h"
@@ -22,21 +21,21 @@
 Thing_implement (DurationTier, RealTier, 0);
 
 void structDurationTier :: v_info () {
-	structData :: v_info ();
+	our structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
-	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
-	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
-	MelderInfo_writeLine (U"   Total original duration: ", xmax - xmin, U" seconds");
-	MelderInfo_writeLine (U"Number of points: ", points -> size);
+	MelderInfo_writeLine (U"   Start time: ", our xmin, U" seconds");
+	MelderInfo_writeLine (U"   End time: ", our xmax, U" seconds");
+	MelderInfo_writeLine (U"   Total original duration: ", our xmax - our xmin, U" seconds");
+	MelderInfo_writeLine (U"Number of points: ", our points.size);
 	MelderInfo_writeLine (U"Minimum relative duration value: ", RealTier_getMinimumValue (this));
 	MelderInfo_writeLine (U"Maximum relative duration value: ", RealTier_getMaximumValue (this));
 }
 
-DurationTier DurationTier_create (double tmin, double tmax) {
+autoDurationTier DurationTier_create (double tmin, double tmax) {
 	try {
 		autoDurationTier me = Thing_new (DurationTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"DurationTier not created.");
 	}
@@ -48,13 +47,13 @@ void DurationTier_draw (DurationTier me, Graphics g, double tmin, double tmax,
 	RealTier_draw (me, g, tmin, tmax, ymin, ymax, garnish, method, U"Relative duration");
 }
 
-DurationTier PointProcess_upto_DurationTier (PointProcess me) {
+autoDurationTier PointProcess_upto_DurationTier (PointProcess me) {
 	try {
 		autoDurationTier thee = DurationTier_create (my xmin, my xmax);
 		for (long i = 1; i <= my nt; i ++) {
-			RealTier_addPoint (thee.peek(), my t [i], 1.0);
+			RealTier_addPoint (thee.get(), my t [i], 1.0);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to DurationTier.");
 	}
diff --git a/fon/DurationTier.h b/fon/DurationTier.h
index 72ffb76..f3fa935 100644
--- a/fon/DurationTier.h
+++ b/fon/DurationTier.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -31,12 +30,12 @@ Thing_define (DurationTier, RealTier) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-DurationTier DurationTier_create (double tmin, double tmax);
+autoDurationTier DurationTier_create (double tmin, double tmax);
 
 void DurationTier_draw (DurationTier me, Graphics g, double tmin, double tmax,
 	double ymin, double ymax, const char32 *method, int garnish);
 
-DurationTier PointProcess_upto_DurationTier (PointProcess me);
+autoDurationTier PointProcess_upto_DurationTier (PointProcess me);
 
 /* End of file DurationTier.h */
 #endif
diff --git a/fon/DurationTierEditor.cpp b/fon/DurationTierEditor.cpp
index 12fd57a..0689a26 100644
--- a/fon/DurationTierEditor.cpp
+++ b/fon/DurationTierEditor.cpp
@@ -1,20 +1,19 @@
 /* DurationTierEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "DurationTierEditor.h"
@@ -22,7 +21,7 @@
 
 Thing_implement (DurationTierEditor, RealTierEditor, 0);
 
-static void menu_cb_DurationTierHelp (EDITOR_ARGS) { EDITOR_IAM (DurationTierEditor); Melder_help (U"DurationTier"); }
+static void menu_cb_DurationTierHelp (DurationTierEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"DurationTier"); }
 
 void structDurationTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	DurationTierEditor_Parent :: v_createHelpMenuItems (menu);
@@ -31,17 +30,17 @@ void structDurationTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 
 void structDurationTierEditor :: v_play (double fromTime, double toTime) {
 	if (our d_sound.data) {
-		Sound_playPart (our d_sound.data, fromTime, toTime, NULL, NULL);
+		Sound_playPart (our d_sound.data, fromTime, toTime, nullptr, nullptr);
 	} else {
-		//DurationTier_playPart (data, fromTime, toTime, FALSE);
+		//DurationTier_playPart (data, fromTime, toTime, false);
 	}
 }
 
-DurationTierEditor DurationTierEditor_create (const char32 *title, DurationTier duration, Sound sound, bool ownSound) {
+autoDurationTierEditor DurationTierEditor_create (const char32 *title, DurationTier duration, Sound sound, bool ownSound) {
 	try {
 		autoDurationTierEditor me = Thing_new (DurationTierEditor);
-		RealTierEditor_init (me.peek(), title, (RealTier) duration, sound, ownSound);
-		return me.transfer();
+		RealTierEditor_init (me.get(), title, (RealTier) duration, sound, ownSound);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"DurationTier window not created.");
 	}
diff --git a/fon/DurationTierEditor.h b/fon/DurationTierEditor.h
index 6c9c2df..b575dff 100644
--- a/fon/DurationTierEditor.h
+++ b/fon/DurationTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -56,10 +55,10 @@ Thing_define (DurationTierEditor, RealTierEditor) {
 		override { return U"Maximum duration"; }
 };
 
-DurationTierEditor DurationTierEditor_create (const char32 *title,
+autoDurationTierEditor DurationTierEditor_create (const char32 *title,
 	DurationTier duration, Sound sound, bool ownSound);
 /*
-	'sound' may be NULL.
+	'sound' may be null.
 */
 
 /* End of file DurationTierEditor.h */
diff --git a/fon/Excitation.cpp b/fon/Excitation.cpp
index 0fe24e7..63a5b8e 100644
--- a/fon/Excitation.cpp
+++ b/fon/Excitation.cpp
@@ -1,20 +1,19 @@
 /* Excitation.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Excitation.h"
@@ -23,7 +22,7 @@ Thing_implement (Excitation, Vector, 2);
 
 double Excitation_hertzToBark (double hertz) {
 	double h650 = hertz / 650;
-	return 7.0 * log (h650 + sqrt (1 + h650 * h650));
+	return 7.0 * log (h650 + sqrt (1.0 + h650 * h650));
 }
 
 double Excitation_barkToHertz (double bark) {
@@ -31,11 +30,11 @@ double Excitation_barkToHertz (double bark) {
 }
 
 double Excitation_phonToDifferenceLimens (double phon) {
-	return 30 * (pow (61.0 / 60, phon) - 1);
+	return 30.0 * (pow (61.0 / 60.0, phon) - 1);
 }
 
 double Excitation_differenceLimensToPhon (double ndli) {
-	return log (1 + ndli / 30) / log (61.0 / 60);
+	return log (1 + ndli / 30.0) / log (61.0 / 60.0);
 }
 
 double Excitation_soundPressureToPhon (double soundPressure, double bark) {
@@ -44,42 +43,42 @@ double Excitation_soundPressureToPhon (double soundPressure, double bark) {
 	if (soundPressure <= 0.0) return 0.0;
 
 	/*  dB = 20 * log10 (soundPressure / threshold)  */
-	result = 20 * log10 (soundPressure / 2.0e-5);   /* First approximation: phon = dB */
+	result = 20.0 * log10 (soundPressure / 2.0e-5);   /* First approximation: phon = dB */
 
 	/*  Phones from dB  */
-	if (result < 90 && bark < 8.0)
+	if (result < 90.0 && bark < 8.0)
 	{
-		dum = (90 - result) * (8.0 - bark);
+		dum = (90.0 - result) * (8.0 - bark);
 		result -= dum * dum / 2500;
 	}
-	dum = bark / 3.6 - 5;
-	result += 5 * exp (- dum * dum);
-	if (bark > 20.0) { dum = bark - 20; result -= 0.5 * dum * dum; }
-	if (result < 0) result = 0;
+	dum = bark / 3.6 - 5.0;
+	result += 5.0 * exp (- dum * dum);
+	if (bark > 20.0) { dum = bark - 20.0; result -= 0.5 * dum * dum; }
+	if (result < 0.0) result = 0.0;
 	return result;
 }
 
 void structExcitation :: v_info () {
 	double *y = z [1];
 	long numberOfMaxima = 0;
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Loudness: ", Melder_half (Excitation_getLoudness (this)), U" sones");
 	for (long i = 2; i < nx; i ++) if (y [i] > y [i - 1] && y [i] >= y [i + 1]) {
-		double i_real, formant_bark, strength;
 		if (++ numberOfMaxima > 15) break;
-		strength = NUMimproveMaximum (z [1], nx, i, NUM_PEAK_INTERPOLATE_SINC70, & i_real);
-		formant_bark = x1 + (i_real - 1) * dx;
+		double i_real;
+		double strength = NUMimproveMaximum (z [1], nx, i, NUM_PEAK_INTERPOLATE_SINC70, & i_real);
+		double formant_bark = x1 + (i_real - 1.0) * dx;
 		MelderInfo_write (U"Peak at ", Melder_single (formant_bark), U" Bark");
 		MelderInfo_write (U", ", (long) NUMbarkToHertz (formant_bark), U" Hz");
 		MelderInfo_writeLine (U", ", Melder_half (strength), U" phon.");
 	}
 }
 
-Excitation Excitation_create (double df, long nf) {
+autoExcitation Excitation_create (double df, long nf) {
 	try {
 		autoExcitation me = Thing_new (Excitation);
-		Matrix_init (me.peek(), 0.0, nf * df, nf, df, 0.5 * df, 1, 1, 1, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, nf * df, nf, df, 0.5 * df, 1.0, 1.0, 1, 1.0, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Excitation not created.");
 	}
@@ -103,7 +102,7 @@ double Excitation_getLoudness (Excitation me) {
 	double loudness = 0.0;
 	for (int i = 1; i <= my nx; i ++)
 		/*  Sones = 2 ** ((Phones - 40) / 10)  */
-		loudness += pow (2, (my z [1] [i] - 40) / 10);
+		loudness += pow (2.0, (my z [1] [i] - 40.0) / 10.0);
 	return my dx * loudness;
 }
 
@@ -115,7 +114,7 @@ void Excitation_draw (Excitation me, Graphics g,
 	Matrix_getWindowSamplesX (me, fmin, fmax, & ifmin, & ifmax);
 	if (maximum <= minimum)
 		Matrix_getWindowExtrema (me, ifmin, ifmax, 1, 1, & minimum, & maximum);
-	if (maximum <= minimum) { minimum -= 20; maximum += 20; }
+	if (maximum <= minimum) { minimum -= 20.0; maximum += 20.0; }
 	Graphics_setInner (g);
 	Graphics_setWindow (g, fmin, fmax, minimum, maximum);
 	Graphics_function (g, my z [1], ifmin, ifmax,
@@ -123,28 +122,28 @@ void Excitation_draw (Excitation me, Graphics g,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Frequency (Bark)");
-		Graphics_textLeft (g, 1, U"Excitation (phon)");
-		Graphics_marksBottomEvery (g, 1, 5, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1, 20, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Frequency (Bark)");
+		Graphics_textLeft (g, true, U"Excitation (phon)");
+		Graphics_marksBottomEvery (g, 1.0, 5.0, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 20.0, true, true, false);
 	}
 }
 
-Matrix Excitation_to_Matrix (Excitation me) {
+autoMatrix Excitation_to_Matrix (Excitation me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());   // BUG: safe, but compiler should be able to check
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());   // BUG: safe, but compiler should be able to check
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Excitation Matrix_to_Excitation (Matrix me) {
+autoExcitation Matrix_to_Excitation (Matrix me) {
 	try {
 		autoExcitation thee = Thing_new (Excitation);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Excitation.");
 	}
diff --git a/fon/Excitation.h b/fon/Excitation.h
index e734990..b49896c 100644
--- a/fon/Excitation.h
+++ b/fon/Excitation.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Vector.h"
@@ -35,12 +34,12 @@ double Excitation_phonToDifferenceLimens (double phon);
 double Excitation_differenceLimensToPhon (double ndli);
 double Excitation_soundPressureToPhon (double soundPressure, double bark);
 
-Excitation Excitation_create (double df, long nf);
+autoExcitation Excitation_create (double df, long nf);
 double Excitation_getDistance (Excitation me, Excitation thee);
 double Excitation_getLoudness (Excitation me);
 void Excitation_draw (Excitation me, Graphics g, double fmin, double fmax, double minimum, double maximum, int garnish);
-Matrix Excitation_to_Matrix (Excitation me);
-Excitation Matrix_to_Excitation (Matrix me);
+autoMatrix Excitation_to_Matrix (Excitation me);
+autoExcitation Matrix_to_Excitation (Matrix me);
 
 /* End of file Excitation.h */
 #endif
diff --git a/fon/Excitation_to_Formant.cpp b/fon/Excitation_to_Formant.cpp
index ce34029..58be15f 100644
--- a/fon/Excitation_to_Formant.cpp
+++ b/fon/Excitation_to_Formant.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,7 +25,7 @@
 
 #include "Excitation_to_Formant.h"
 
-Formant Excitation_to_Formant (Excitation me, int maxnFormants) {
+autoFormant Excitation_to_Formant (Excitation me, int maxnFormants) {
 	try {
 		long nfreq = my nx, nform = 0;
 		double *p = my z [1];
@@ -54,7 +53,7 @@ Formant Excitation_to_Formant (Excitation me, int maxnFormants) {
 				if (nform == thy maxnFormants) break;
 			}
 		thy d_frames [1]. nFormants = nform;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Formant.");
 	}
diff --git a/fon/Excitation_to_Formant.h b/fon/Excitation_to_Formant.h
index 3430d1d..22bd282 100644
--- a/fon/Excitation_to_Formant.h
+++ b/fon/Excitation_to_Formant.h
@@ -1,25 +1,24 @@
 /* Excitation_to_Formant.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Excitation.h"
 #include "Formant.h"
 
-Formant Excitation_to_Formant (Excitation, int maxnFormants);
+autoFormant Excitation_to_Formant (Excitation, int maxnFormants);
 
 /* End of file Excitation_to_Formant.h */
diff --git a/fon/ExperimentMFC.cpp b/fon/ExperimentMFC.cpp
index 6bdcf80..5626c12 100644
--- a/fon/ExperimentMFC.cpp
+++ b/fon/ExperimentMFC.cpp
@@ -1,20 +1,19 @@
 /* ExperimentMFC.cpp
  *
- * Copyright (C) 2001-2011,2013 Paul Boersma
+ * Copyright (C) 2001-2011,2013,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -63,15 +62,18 @@
 #include "oo_DESCRIPTION.h"
 #include "ExperimentMFC_def.h"
 
-Thing_implement (ExperimentMFC, Data, 6);
-
 #include "enums_getText.h"
 #include "Experiment_enums.h"
 #include "enums_getValue.h"
 #include "Experiment_enums.h"
 
+
+#pragma mark - class ExperimentMFC
+
+Thing_implement (ExperimentMFC, Daata, 6);
+
 static void readSound (ExperimentMFC me, const char32 *fileNameHead, const char32 *fileNameTail,
-	double medialSilenceDuration, char32 **name, Sound *sound)
+	double medialSilenceDuration, char32 **name, autoSound *sound)
 {
 	char32 fileNameBuffer [256], *fileNames = & fileNameBuffer [0];
 	Melder_sprint (fileNameBuffer,256, *name);
@@ -84,7 +86,7 @@ static void readSound (ExperimentMFC me, const char32 *fileNameHead, const char3
 	#if defined (_WIN32)
 		for (;;) { char32 *slash = str32chr (fileNames, U'/'); if (! slash) break; *slash = U'\\'; }
 	#endif
-	forget (*sound);
+	sound->reset();
 	char32 pathName [kMelder_MAXPATH+1];
 	/*
 	 * 'fileNames' can contain commas, which separate partial file names.
@@ -124,9 +126,9 @@ static void readSound (ExperimentMFC me, const char32 *fileNameHead, const char3
 		/*
 		 * Read the substimulus.
 		 */
-		autoSound substimulus = (Sound) Data_readFromFile (& file);   // Sound_readFromSoundFile (& file);
+		autoSound substimulus = Data_readFromFile (& file). static_cast_move<structSound>();
 		if (substimulus -> classInfo != classSound)
-			Melder_throw (U"File ", & file, U" contains a ", Thing_className (substimulus.peek()), U" instead of a sound.");
+			Melder_throw (U"File ", & file, U" contains a ", Thing_className (substimulus.get()), U" instead of a sound.");
 		/*
 		 * Check whether all sounds have the same number of channels.
 		 */
@@ -146,18 +148,15 @@ static void readSound (ExperimentMFC me, const char32 *fileNameHead, const char3
 		/*
 		 * Append the substimuli, perhaps with silent intervals.
 		 */
-		if (*sound == NULL) {
-			*sound = substimulus.transfer();
+		if (*sound) {
+			*sound = Sounds_append (sound->get(), medialSilenceDuration, substimulus.get());
 		} else {
-			autoSound newStimulus = Sounds_append (*sound, medialSilenceDuration, substimulus.peek());
-			Melder_assert (sound == & (*sound));
-			forget (*sound);
-			*sound = newStimulus.transfer();
+			*sound = substimulus.move();
 		}
 		/*
 		 * Cycle.
 		 */
-		if (comma == NULL) break;
+		if (! comma) break;
 		fileNames = & comma [1];
 	}
 }
@@ -182,8 +181,8 @@ void ExperimentMFC_start (ExperimentMFC me) {
 		NUMvector_free <long> (my responses, 1);
 		NUMvector_free <double> (my goodnesses, 1);
 		NUMvector_free <double> (my reactionTimes, 1);
-		forget (my playBuffer);
-		my pausing = FALSE;
+		my playBuffer.reset();
+		my pausing = false;
 		my numberOfTrials = my numberOfDifferentStimuli * my numberOfReplicationsPerStimulus;
 		my stimuli = NUMvector <long> (1, my numberOfTrials);
 		my responses = NUMvector <long> (1, my numberOfTrials);
@@ -278,7 +277,7 @@ void ExperimentMFC_start (ExperimentMFC me) {
 	} catch (MelderError) {
 		Melder_warningOn ();
 		my numberOfTrials = 0;
-		NUMvector_free (my stimuli, 1); my stimuli = NULL;
+		NUMvector_free (my stimuli, 1); my stimuli = nullptr;
 		Melder_throw (me, U": not started.");
 	}
 }
@@ -330,55 +329,65 @@ static void playSound (ExperimentMFC me, Sound sound, Sound carrierBefore, Sound
 
 	if (! my blankWhilePlaying)
 		my startingTime = Melder_clock ();
-	Sound_playPart (my playBuffer, 0.0, numberOfSamplesWritten * my samplePeriod, 0, NULL);
+	Sound_playPart (my playBuffer.get(), 0.0, numberOfSamplesWritten * my samplePeriod, 0, nullptr);
 	if (my blankWhilePlaying)
 		my startingTime = Melder_clock ();
 }
 
 void ExperimentMFC_playStimulus (ExperimentMFC me, long istim) {
-	playSound (me, my stimulus [istim]. sound,
-		my stimulusCarrierBefore. sound, my stimulusCarrierAfter. sound, my stimulusInitialSilenceDuration, my stimulusFinalSilenceDuration);
+	playSound (me, my stimulus [istim]. sound.get(),
+		my stimulusCarrierBefore. sound.get(), my stimulusCarrierAfter. sound.get(),
+		my stimulusInitialSilenceDuration, my stimulusFinalSilenceDuration);
 }
 
 void ExperimentMFC_playResponse (ExperimentMFC me, long iresp) {
-	playSound (me, my response [iresp]. sound,
-		my responseCarrierBefore. sound, my responseCarrierAfter. sound, my responseInitialSilenceDuration, my responseFinalSilenceDuration);
+	playSound (me, my response [iresp]. sound.get(),
+		my responseCarrierBefore. sound.get(), my responseCarrierAfter. sound.get(),
+		my responseInitialSilenceDuration, my responseFinalSilenceDuration);
 }
 
-Thing_implement (ResultsMFC, Data, 2);
 
-ResultsMFC ResultsMFC_create (long numberOfTrials) {
+#pragma mark - class ExperimentMFCList
+
+Thing_implement (ExperimentMFCList, Ordered, 0);
+
+
+#pragma mark - class ResultsMFC
+
+Thing_implement (ResultsMFC, Daata, 2);
+
+autoResultsMFC ResultsMFC_create (long numberOfTrials) {
 	try {
 		autoResultsMFC me = Thing_new (ResultsMFC);
 		my numberOfTrials = numberOfTrials;
 		my result = NUMvector <structTrialMFC> (1, my numberOfTrials);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ResultsMFC not created.");
 	}
 }
 
-ResultsMFC ExperimentMFC_extractResults (ExperimentMFC me) {
+autoResultsMFC ExperimentMFC_extractResults (ExperimentMFC me) {
 	try {
 		if (my trial == 0 || my trial <= my numberOfTrials)
 			Melder_warning (U"The experiment was not finished. Only the first ", my trial - 1 + my pausing, U" responses are valid.");
 		autoResultsMFC thee = ResultsMFC_create (my numberOfTrials);
 		for (long trial = 1; trial <= my numberOfTrials; trial ++) {
 			char32 *pipe = my stimulus [my stimuli [trial]]. visibleText ?
-				str32chr (my stimulus [my stimuli [trial]]. visibleText, U'|') : NULL;
+				str32chr (my stimulus [my stimuli [trial]]. visibleText, U'|') : nullptr;
 			thy result [trial]. stimulus = Melder_dup (Melder_cat (my stimulus [my stimuli [trial]]. name, pipe));
 			//if (my responses [trial] < 1) Melder_throw (U"No response for trial ", trial, U".")
 			thy result [trial]. response = Melder_dup (my responses [trial] ? my response [my responses [trial]]. name : U"");
 			thy result [trial]. goodness = my goodnesses [trial];
 			thy result [trial]. reactionTime = my reactionTimes [trial];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": results not extracted.");
 	}
 }
 
-ResultsMFC ResultsMFC_removeUnsharedStimuli (ResultsMFC me, ResultsMFC thee) {
+autoResultsMFC ResultsMFC_removeUnsharedStimuli (ResultsMFC me, ResultsMFC thee) {
 	try {
 		autoResultsMFC him = ResultsMFC_create (thy numberOfTrials);
 		his numberOfTrials = 0;
@@ -398,18 +407,18 @@ ResultsMFC ResultsMFC_removeUnsharedStimuli (ResultsMFC me, ResultsMFC thee) {
 		}
 		if (his numberOfTrials == 0)
 			Melder_throw (U"No shared stimuli.");
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": unshared stimuli not removed.");
 	}
 }
 
-Table ResultsMFCs_to_Table (Collection me) {
+autoTable ResultsMFCs_to_Table (OrderedOf<structResultsMFC>* me) {
 	try {
 		long irow = 0;
 		bool hasGoodnesses = false, hasReactionTimes = false;
 		for (long iresults = 1; iresults <= my size; iresults ++) {
-			ResultsMFC results = (ResultsMFC) my item [iresults];
+			ResultsMFC results = my at [iresults];
 			for (long itrial = 1; itrial <= results -> numberOfTrials; itrial ++) {
 				irow ++;
 				if (results -> result [itrial]. goodness != 0)
@@ -419,78 +428,78 @@ Table ResultsMFCs_to_Table (Collection me) {
 			}
 		}
 		autoTable thee = Table_create (irow, 3 + hasGoodnesses + hasReactionTimes);
-		Table_setColumnLabel (thee.peek(), 1, U"subject");
-		Table_setColumnLabel (thee.peek(), 2, U"stimulus");
-		Table_setColumnLabel (thee.peek(), 3, U"response");
+		Table_setColumnLabel (thee.get(), 1, U"subject");
+		Table_setColumnLabel (thee.get(), 2, U"stimulus");
+		Table_setColumnLabel (thee.get(), 3, U"response");
 		if (hasGoodnesses)
-			Table_setColumnLabel (thee.peek(), 4, U"goodness");
+			Table_setColumnLabel (thee.get(), 4, U"goodness");
 		if (hasReactionTimes)
-			Table_setColumnLabel (thee.peek(), 4 + hasGoodnesses, U"reactionTime");
+			Table_setColumnLabel (thee.get(), 4 + hasGoodnesses, U"reactionTime");
 		irow = 0;
 		for (long iresults = 1; iresults <= my size; iresults ++) {
-			ResultsMFC results = (ResultsMFC) my item [iresults];
+			ResultsMFC results = my at [iresults];
 			for (long itrial = 1; itrial <= results -> numberOfTrials; itrial ++) {
 				irow ++;
-				Table_setStringValue (thee.peek(), irow, 1, results -> name);
-				Table_setStringValue (thee.peek(), irow, 2, results -> result [itrial]. stimulus);
-				Table_setStringValue (thee.peek(), irow, 3, results -> result [itrial]. response);
+				Table_setStringValue (thee.get(), irow, 1, results -> name);
+				Table_setStringValue (thee.get(), irow, 2, results -> result [itrial]. stimulus);
+				Table_setStringValue (thee.get(), irow, 3, results -> result [itrial]. response);
 				if (hasGoodnesses) {
-					Table_setNumericValue (thee.peek(), irow, 4, results -> result [itrial]. goodness);
+					Table_setNumericValue (thee.get(), irow, 4, results -> result [itrial]. goodness);
 				}
 				if (hasReactionTimes) {
-					Table_setNumericValue (thee.peek(), irow, 4 + hasGoodnesses, results -> result [itrial]. reactionTime);
+					Table_setNumericValue (thee.get(), irow, 4 + hasGoodnesses, results -> result [itrial]. reactionTime);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"ResultsMFC objects not collected to Table.");
 	}
 }
 
-Categories ResultsMFC_to_Categories_stimuli (ResultsMFC me) {
+autoCategories ResultsMFC_to_Categories_stimuli (ResultsMFC me) {
 	try {
 		autoCategories thee = Categories_create ();
 		for (long trial = 1; trial <= my numberOfTrials; trial ++) {
 			autoSimpleString category = SimpleString_create (my result [trial]. stimulus);
-			Collection_addItem (thee.peek(), category.transfer());
+			thy addItem_move (category.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": stimuli not converted to Categories.");
 	}
 }
 
-Categories ResultsMFC_to_Categories_responses (ResultsMFC me) {
+autoCategories ResultsMFC_to_Categories_responses (ResultsMFC me) {
 	try {
 		autoCategories thee = Categories_create ();
 		for (long trial = 1; trial <= my numberOfTrials; trial ++) {
 			autoSimpleString category = SimpleString_create (my result [trial]. response);
-			Collection_addItem (thee.peek(), category.transfer());
+			thy addItem_move (category.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": responses not converted to Categories.");
 	}
 }
 
-static int compare (SimpleString me, SimpleString thee) {
-	return str32cmp (my string, thy string);
-}
+
+#pragma mark - class Categories extensions
+
 void Categories_sort (Categories me) {
-	NUMsort_p (my size, my item, (int (*) (const void *, const void *)) compare);
+	my sort (SimpleString_compare);
 }
 
 double Categories_getEntropy (Categories me) {
 	long numberOfTokens = 0;
-	char32 *previousString = NULL;
+	char32 *previousString = nullptr;
 	double entropy = 0.0;
 	autoCategories thee = Data_copy (me);
-	Categories_sort (thee.peek());
+	Categories_sort (thee.get());
 	for (long i = 1; i <= thy size; i ++) {
-		SimpleString s = (SimpleString) thy item [i];
+		SimpleString s = thy at [i];
 		char32 *string = s -> string;
-		if (previousString != NULL && ! str32equ (string, previousString)) {
+		if (previousString && ! str32equ (string, previousString)) {
 			double p = (double) numberOfTokens / thy size;
 			entropy -= p * NUMlog2 (p);
 			numberOfTokens = 1;
diff --git a/fon/ExperimentMFC.h b/fon/ExperimentMFC.h
index 56a18f4..f7d4e6e 100644
--- a/fon/ExperimentMFC.h
+++ b/fon/ExperimentMFC.h
@@ -2,21 +2,20 @@
 #define _ExperimentMFC_h_
 /* ExperimentMFC.h
  *
- * Copyright (C) 2001-2011 Paul Boersma
+ * Copyright (C) 2001-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -26,23 +25,27 @@
 #include "Experiment_enums.h"
 
 #include "ExperimentMFC_def.h"
-oo_CLASS_CREATE (ExperimentMFC, Data);
-oo_CLASS_CREATE (ResultsMFC, Data);
 
 void ExperimentMFC_start (ExperimentMFC me);
 void ExperimentMFC_playStimulus (ExperimentMFC me, long istim);
 void ExperimentMFC_playResponse (ExperimentMFC me, long iresp);
 
-ResultsMFC ResultsMFC_create (long numberOfResults);
-ResultsMFC ExperimentMFC_extractResults (ExperimentMFC me);
-ResultsMFC ResultsMFC_removeUnsharedStimuli (ResultsMFC me, ResultsMFC thee);
+autoResultsMFC ResultsMFC_create (long numberOfResults);
+autoResultsMFC ExperimentMFC_extractResults (ExperimentMFC me);
+autoResultsMFC ResultsMFC_removeUnsharedStimuli (ResultsMFC me, ResultsMFC thee);
 
-Table ResultsMFCs_to_Table (Collection me);
+autoTable ResultsMFCs_to_Table (OrderedOf<structResultsMFC>* me);
 
-Categories ResultsMFC_to_Categories_stimuli (ResultsMFC me);
-Categories ResultsMFC_to_Categories_responses (ResultsMFC me);
+autoCategories ResultsMFC_to_Categories_stimuli (ResultsMFC me);
+autoCategories ResultsMFC_to_Categories_responses (ResultsMFC me);
 void Categories_sort (Categories me);
 double Categories_getEntropy (Categories me);
 
+Collection_define (ExperimentMFCList, OrderedOf, ExperimentMFC) {
+	DaataList asDaataList () {
+		return reinterpret_cast<DaataList> (this);
+	}
+};
+
 /* End of file ExperimentMFC.h */
 #endif
diff --git a/fon/ExperimentMFC_def.h b/fon/ExperimentMFC_def.h
index 46262c6..4fbc6d6 100644
--- a/fon/ExperimentMFC_def.h
+++ b/fon/ExperimentMFC_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2001-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,9 +37,13 @@ oo_DEFINE_STRUCT (SoundMFC)
 
 	oo_STRING (name)
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (Sound, 0, sound)
+		oo_AUTO_OBJECT (Sound, 0, sound)
 	#endif
 		
+	#if oo_DESTROYING
+		sound.reset();
+	#endif
+
 oo_END_STRUCT (SoundMFC)
 #undef ooSTRUCT
 
@@ -53,9 +56,13 @@ oo_DEFINE_STRUCT (StimulusMFC)
 		oo_STRING (visibleText)
 	oo_ENDFROM
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (Sound, 0, sound)
+		oo_AUTO_OBJECT (Sound, 0, sound)
 	#endif
-		
+
+	#if oo_DESTROYING
+		sound.reset();
+	#endif
+
 oo_END_STRUCT (StimulusMFC)
 #undef ooSTRUCT
 
@@ -76,7 +83,11 @@ oo_DEFINE_STRUCT (ResponseMFC)
 	oo_ENDFROM
 	oo_STRING (name)
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (Sound, 0, sound)
+		oo_AUTO_OBJECT (Sound, 0, sound)
+	#endif
+
+	#if oo_DESTROYING
+		sound.reset();
 	#endif
 
 oo_END_STRUCT (ResponseMFC)
@@ -97,7 +108,7 @@ oo_END_STRUCT (GoodnessMFC)
 
 
 #define ooSTRUCT ExperimentMFC
-oo_DEFINE_CLASS (ExperimentMFC, Data)
+oo_DEFINE_CLASS (ExperimentMFC, Daata)
 
 	oo_FROM (6)
 		oo_QUESTION (blankWhilePlaying)
@@ -175,12 +186,12 @@ oo_DEFINE_CLASS (ExperimentMFC, Data)
 		oo_DOUBLE_VECTOR (goodnesses, numberOfTrials)
 		oo_DOUBLE (startingTime)
 		oo_DOUBLE_VECTOR (reactionTimes, numberOfTrials)
-		oo_OBJECT (Sound, 0, playBuffer)
+		oo_AUTO_OBJECT (Sound, 0, playBuffer)
 	#endif
 	oo_DIR (rootDirectory)
 	#if oo_READING
 		MelderDir_copy (& Data_directoryBeingRead, & rootDirectory);
-		if (formatVersion < 4) stimuliAreSounds = TRUE;
+		if (formatVersion < 4) stimuliAreSounds = true;
 	#endif
 
 oo_END_CLASS (ExperimentMFC)
@@ -206,7 +217,7 @@ oo_END_STRUCT (TrialMFC)
 
 
 #define ooSTRUCT ResultsMFC
-oo_DEFINE_CLASS (ResultsMFC, Data)
+oo_DEFINE_CLASS (ResultsMFC, Daata)
 
 	oo_LONG (numberOfTrials)
 	oo_STRUCT_VECTOR (TrialMFC, result, numberOfTrials)
diff --git a/fon/Experiment_enums.h b/fon/Experiment_enums.h
index 857bf5a..622bd32 100644
--- a/fon/Experiment_enums.h
+++ b/fon/Experiment_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2001-2009,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kExperiment_randomize, 0)
diff --git a/fon/Formant.cpp b/fon/Formant.cpp
index f6eed4b..865f584 100644
--- a/fon/Formant.cpp
+++ b/fon/Formant.cpp
@@ -1,20 +1,19 @@
 /* Formant.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -54,7 +53,7 @@
 Thing_implement (Formant, Sampled, 2);   // version 1 = with intensity, 2 = double
 
 void structFormant :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -85,15 +84,15 @@ double structFormant :: v_getValueAtSample (long iframe, long which, int units)
 	return NUMundefined;
 }
 
-Formant Formant_create (double tmin, double tmax, long nt, double dt, double t1,
+autoFormant Formant_create (double tmin, double tmax, long nt, double dt, double t1,
 	int maxnFormants)
 {
 	try {
 		autoFormant me = Thing_new (Formant);
-		Sampled_init (me.peek(), tmin, tmax, nt, dt, t1);
+		Sampled_init (me.get(), tmin, tmax, nt, dt, t1);
 		my d_frames = NUMvector <structFormant_Frame> (1, nt);
 		my maxnFormants = maxnFormants;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Formant object not created.");
 	}
@@ -134,10 +133,10 @@ void Formant_drawTracks (Formant me, Graphics g, double tmin, double tmax, doubl
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Formant frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 1000.0, true, true, true);
 	}
 }
 
@@ -156,7 +155,7 @@ void Formant_drawSpeckles_inside (Formant me, Graphics g, double tmin, double tm
 			maximumIntensity = frame -> intensity;
 	}
 	if (maximumIntensity == 0.0 || suppress_dB <= 0.0)
-		minimumIntensity = 0.0;   /* Ignore. */
+		minimumIntensity = 0.0;   // ignore
 	else
 		minimumIntensity = maximumIntensity / pow (10.0, suppress_dB / 10.0);
 
@@ -180,10 +179,10 @@ void Formant_drawSpeckles (Formant me, Graphics g, double tmin, double tmax, dou
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_textLeft (g, true, U"Formant frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeftEvery (g, 1.0, 1000.0, true, true, true);
 	}
 }
 
@@ -192,13 +191,13 @@ void Formant_formula_bandwidths (Formant me, const char32 *formula, Interpreter
 		long nrow = Formant_getMaxNumFormants (me);
 		if (nrow < 1)
 			Melder_throw (U"No formants available.");
-		autoMatrix mat = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, nrow + 0.5, nrow, 1, 1);
+		autoMatrix mat = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, nrow + 0.5, nrow, 1.0, 1.0);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Formant_Frame frame = & my d_frames [iframe];
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++)
 				mat -> z [iformant] [iframe] = frame -> formant [iformant]. bandwidth;
 		}
-		Matrix_formula (mat.peek(), formula, interpreter, NULL);
+		Matrix_formula (mat.get(), formula, interpreter, nullptr);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Formant_Frame frame = & my d_frames [iframe];
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++)
@@ -214,13 +213,13 @@ void Formant_formula_frequencies (Formant me, const char32 *formula, Interpreter
 		long nrow = Formant_getMaxNumFormants (me);
 		if (nrow < 1)
 			Melder_throw (U"No formants available.");
-		autoMatrix mat = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, nrow + 0.5, nrow, 1, 1);
+		autoMatrix mat = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 0.5, nrow + 0.5, nrow, 1.0, 1.0);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Formant_Frame frame = & my d_frames [iframe];
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++)
 				mat -> z [iformant] [iframe] = frame -> formant [iformant]. frequency;
 		}
-		Matrix_formula (mat.peek(), formula, interpreter, NULL);
+		Matrix_formula (mat.get(), formula, interpreter, nullptr);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Formant_Frame frame = & my d_frames [iframe];
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++)
@@ -258,13 +257,13 @@ void Formant_getMinimumAndTime (Formant me, int iformant, double tmin, double tm
 
 double Formant_getMinimum (Formant me, int iformant, double tmin, double tmax, int bark, int interpolate) {
 	double minimum;
-	Formant_getMinimumAndTime (me, iformant, tmin, tmax, bark, interpolate, & minimum, NULL);
+	Formant_getMinimumAndTime (me, iformant, tmin, tmax, bark, interpolate, & minimum, nullptr);
 	return minimum;
 }
 
 double Formant_getTimeOfMinimum (Formant me, int iformant, double tmin, double tmax, int bark, int interpolate) {
 	double time;
-	Formant_getMinimumAndTime (me, iformant, tmin, tmax, bark, interpolate, NULL, & time);
+	Formant_getMinimumAndTime (me, iformant, tmin, tmax, bark, interpolate, nullptr, & time);
 	return time;
 }
 
@@ -272,18 +271,18 @@ void Formant_getMaximumAndTime (Formant me, int iformant, double tmin, double tm
 	double *return_maximum, double *return_timeOfMaximum)
 {
 	Sampled_getMaximumAndX (me, tmin, tmax, iformant << 1, bark, interpolate, return_maximum, return_timeOfMaximum);
-	if (return_maximum && *return_maximum <= 0.0) *return_maximum = NUMundefined;   /* Unlikely. */
+	if (return_maximum && *return_maximum <= 0.0) *return_maximum = NUMundefined;   // unlikely
 }
 
 double Formant_getMaximum (Formant me, int iformant, double tmin, double tmax, int bark, int interpolate) {
 	double maximum;
-	Formant_getMaximumAndTime (me, iformant, tmin, tmax, bark, interpolate, & maximum, NULL);
+	Formant_getMaximumAndTime (me, iformant, tmin, tmax, bark, interpolate, & maximum, nullptr);
 	return maximum;
 }
 
 double Formant_getTimeOfMaximum (Formant me, int iformant, double tmin, double tmax, int bark, int interpolate) {
 	double time;
-	Formant_getMaximumAndTime (me, iformant, tmin, tmax, bark, interpolate, NULL, & time);
+	Formant_getMaximumAndTime (me, iformant, tmin, tmax, bark, interpolate, nullptr, & time);
 	return time;
 }
 
@@ -292,7 +291,7 @@ double Formant_getQuantile (Formant me, int iformant, double quantile, double tm
 }
 
 double Formant_getMean (Formant me, int iformant, double tmin, double tmax, int bark) {
-	return Sampled_getMean (me, tmin, tmax, iformant << 1, bark, TRUE);
+	return Sampled_getMean (me, tmin, tmax, iformant << 1, bark, true);
 }
 
 double Formant_getStandardDeviation (Formant me, int iformant, double tmin, double tmax, int bark) {
@@ -317,11 +316,11 @@ double Formant_getStandardDeviation (Formant me, int iformant, double tmin, doub
 }
 
 double Formant_getValueAtTime (Formant me, int iformant, double time, int bark) {
-	return Sampled_getValueAtX (me, time, iformant << 1, bark, TRUE);
+	return Sampled_getValueAtX (me, time, iformant << 1, bark, true);
 }
 
 double Formant_getBandwidthAtTime (Formant me, int iformant, double time, int bark) {
-	return Sampled_getValueAtX (me, time, (iformant << 1) + 1, bark, TRUE);
+	return Sampled_getValueAtX (me, time, (iformant << 1) + 1, bark, true);
 }
 
 double Formant_getQuantileOfBandwidth (Formant me, int iformant, double quantile, double tmin, double tmax, int bark) {
@@ -355,14 +354,14 @@ void Formant_scatterPlot (Formant me, Graphics g, double tmin, double tmax,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, Melder_cat (U"%%F_", iformant1, U" (Hz)"));
-		Graphics_textLeft (g, 1, Melder_cat (U"%%F_", iformant2, U" (Hz)"));
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, Melder_cat (U"%%F_", iformant1, U" (Hz)"));
+		Graphics_textLeft (g, true, Melder_cat (U"%%F_", iformant2, U" (Hz)"));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
-Matrix Formant_to_Matrix (Formant me, int iformant) {
+autoMatrix Formant_to_Matrix (Formant me, int iformant) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
@@ -370,13 +369,13 @@ Matrix Formant_to_Matrix (Formant me, int iformant) {
 			thy z [1] [iframe] = iformant <= frame -> nFormants ?
 				frame -> formant [iformant]. frequency : 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": frequencies of formant ", iformant, U" not converted to Matrix.");
 	}
 }
 
-Matrix Formant_to_Matrix_bandwidths (Formant me, int iformant) {
+autoMatrix Formant_to_Matrix_bandwidths (Formant me, int iformant) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
@@ -384,7 +383,7 @@ Matrix Formant_to_Matrix_bandwidths (Formant me, int iformant) {
 			thy z [1] [iframe] = iformant <= frame -> nFormants ?
 				frame -> formant [iformant]. bandwidth : 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": bandwidths of formant ", iformant, U" not converted to Matrix.");
 	}
@@ -428,7 +427,7 @@ static void putResult (long iframe, long place, int itrack, void *closure) {
 	my thy d_frames [iframe]. formant [itrack] = my my d_frames [iframe]. formant [place];
 }
 
-Formant Formant_tracker (Formant me, int ntrack,
+autoFormant Formant_tracker (Formant me, int ntrack,
 	double refF1, double refF2, double refF3, double refF4, double refF5,
 	double dfCost,   /* Per kHz. */
 	double bfCost, double octaveJumpCost)
@@ -445,7 +444,7 @@ Formant Formant_tracker (Formant me, int ntrack,
 		}
 		/* BUG: limit costs to 1e10 or so */
 		parm.me = me;
-		parm.thee = thee.peek();
+		parm.thee = thee.get();
 		parm.dfCost = dfCost / 1000.0;   // per Hz
 		parm.bfCost = bfCost;
 		parm.octaveJumpCost = octaveJumpCost;
@@ -456,13 +455,13 @@ Formant Formant_tracker (Formant me, int ntrack,
 		parm.refF [5] = refF5;
 		NUM_viterbi_multi (my nx, my maxnFormants, ntrack,
 			getLocalCost, getTransitionCost, putResult, & parm);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not tracked.");
 	}
 }
 
-Table Formant_downto_Table (Formant me, bool includeFrameNumbers,
+autoTable Formant_downto_Table (Formant me, bool includeFrameNumbers,
 	bool includeTimes, int timeDecimals,
 	bool includeIntensity, int intensityDecimals,
 	bool includeNumberOfFormants, int frequencyDecimals,
@@ -472,38 +471,38 @@ Table Formant_downto_Table (Formant me, bool includeFrameNumbers,
 		autoTable thee = Table_createWithoutColumnNames (my nx, includeFrameNumbers + includeTimes + includeIntensity +
 			includeNumberOfFormants + my maxnFormants * (1 + includeBandwidths));
 		long icol = 0;
-		if (includeFrameNumbers)     Table_setColumnLabel (thee.peek(), ++ icol, U"frame");
-		if (includeTimes)            Table_setColumnLabel (thee.peek(), ++ icol, U"time(s)");
-		if (includeIntensity)        Table_setColumnLabel (thee.peek(), ++ icol, U"intensity");
-		if (includeNumberOfFormants) Table_setColumnLabel (thee.peek(), ++ icol, U"nformants");
+		if (includeFrameNumbers)     Table_setColumnLabel (thee.get(), ++ icol, U"frame");
+		if (includeTimes)            Table_setColumnLabel (thee.get(), ++ icol, U"time(s)");
+		if (includeIntensity)        Table_setColumnLabel (thee.get(), ++ icol, U"intensity");
+		if (includeNumberOfFormants) Table_setColumnLabel (thee.get(), ++ icol, U"nformants");
 		for (long iformant = 1; iformant <= my maxnFormants; iformant ++) {
-			Table_setColumnLabel (thee.peek(), ++ icol, Melder_cat (U"F", iformant, U"(Hz)"));
-			if (includeBandwidths) { Table_setColumnLabel (thee.peek(), ++ icol, Melder_cat (U"B", iformant, U"(Hz)")); }
+			Table_setColumnLabel (thee.get(), ++ icol, Melder_cat (U"F", iformant, U"(Hz)"));
+			if (includeBandwidths) { Table_setColumnLabel (thee.get(), ++ icol, Melder_cat (U"B", iformant, U"(Hz)")); }
 		}
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			icol = 0;
 			if (includeFrameNumbers)
-				Table_setNumericValue (thee.peek(), iframe, ++ icol, iframe);
+				Table_setNumericValue (thee.get(), iframe, ++ icol, iframe);
 			if (includeTimes)
-				Table_setStringValue (thee.peek(), iframe, ++ icol, Melder_fixed (my x1 + (iframe - 1) * my dx, timeDecimals));
+				Table_setStringValue (thee.get(), iframe, ++ icol, Melder_fixed (my x1 + (iframe - 1) * my dx, timeDecimals));
 			Formant_Frame frame = & my d_frames [iframe];
 			if (includeIntensity)
-				Table_setStringValue (thee.peek(), iframe, ++ icol, Melder_fixed (frame -> intensity, intensityDecimals));
+				Table_setStringValue (thee.get(), iframe, ++ icol, Melder_fixed (frame -> intensity, intensityDecimals));
 			if (includeNumberOfFormants)
-				Table_setNumericValue (thee.peek(), iframe, ++ icol, frame -> nFormants);
+				Table_setNumericValue (thee.get(), iframe, ++ icol, frame -> nFormants);
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++) {
 				Formant_Formant formant = & frame -> formant [iformant];
-				Table_setStringValue (thee.peek(), iframe, ++ icol, Melder_fixed (formant -> frequency, frequencyDecimals));
+				Table_setStringValue (thee.get(), iframe, ++ icol, Melder_fixed (formant -> frequency, frequencyDecimals));
 				if (includeBandwidths)
-					Table_setStringValue (thee.peek(), iframe, ++ icol, Melder_fixed (formant -> bandwidth, frequencyDecimals));
+					Table_setStringValue (thee.get(), iframe, ++ icol, Melder_fixed (formant -> bandwidth, frequencyDecimals));
 			}
 			for (long iformant = frame -> nFormants + 1; iformant <= my maxnFormants; iformant ++) {
-				Table_setNumericValue (thee.peek(), iframe, ++ icol, NUMundefined);
+				Table_setNumericValue (thee.get(), iframe, ++ icol, NUMundefined);
 				if (includeBandwidths)
-					Table_setNumericValue (thee.peek(), iframe, ++ icol, NUMundefined);
+					Table_setNumericValue (thee.get(), iframe, ++ icol, NUMundefined);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
@@ -519,7 +518,7 @@ void Formant_list (Formant me, bool includeFrameNumbers,
 		autoTable table = Formant_downto_Table (me, includeFrameNumbers, includeTimes, timeDecimals,
 			includeIntensity, intensityDecimals,
 			includeNumberOfFormants, frequencyDecimals, includeBandwidths);
-		Table_list (table.peek(), false);
+		Table_list (table.get(), false);
 	} catch (MelderError) {
 		Melder_throw (me, U": not listed.");
 	}
diff --git a/fon/Formant.h b/fon/Formant.h
index b380c01..cf19739 100644
--- a/fon/Formant.h
+++ b/fon/Formant.h
@@ -4,32 +4,30 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 #include "Table.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "Formant_def.h"
-oo_CLASS_CREATE (Formant, Sampled);
 
-Formant Formant_create (double tmin, double tmax, long nt, double dt, double t1, int maxnFormants);
+autoFormant Formant_create (double tmin, double tmax, long nt, double dt, double t1, int maxnFormants);
 /*
 	Function:
-		return a new instance of Formant, or NULL if out of memory.
+		return a new instance of Formant.
 	Preconditions:
 		nt >= 1;
 		dt > 0.0;
@@ -78,17 +76,17 @@ void Formant_scatterPlot (Formant me, Graphics g, double tmin, double tmax,
 	int iformant1, double fmin1, double fmax1, int iformant2, double fmin2, double fmax2,
 	double size_mm, const char32 *mark, int garnish);
 
-Matrix Formant_to_Matrix (Formant me, int iformant);
-Matrix Formant_to_Matrix_bandwidths (Formant me, int iformant);
+autoMatrix Formant_to_Matrix (Formant me, int iformant);
+autoMatrix Formant_to_Matrix_bandwidths (Formant me, int iformant);
 void Formant_formula_frequencies (Formant me, const char32 *formula, Interpreter interpreter);
 void Formant_formula_bandwidths (Formant me, const char32 *formula, Interpreter interpreter);
 
-Formant Formant_tracker (Formant me, int numberOfTracks,
+autoFormant Formant_tracker (Formant me, int numberOfTracks,
 	double refF1, double refF2, double refF3, double refF4, double refF5,
 	double dfCost,   // per kHz
 	double bfCost, double octaveJumpCost);
 
-Table Formant_downto_Table (Formant me, bool includeFrameNumbers,
+autoTable Formant_downto_Table (Formant me, bool includeFrameNumbers,
 	bool includeTimes, int timeDecimals,
 	bool includeIntensity, int intensityDecimals,
 	bool includeNumberOfFormants, int frequencyDecimals,
diff --git a/fon/FormantGrid.cpp b/fon/FormantGrid.cpp
index a0a3a3e..b6f7334 100644
--- a/fon/FormantGrid.cpp
+++ b/fon/FormantGrid.cpp
@@ -1,20 +1,19 @@
 /* FormantGrid.cpp
  *
- * Copyright (C) 2008-2011,2014,2015 Paul Boersma & David Weenink
+ * Copyright (C) 2008-2011,2014,2015,2016 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FormantGrid.h"
@@ -43,75 +42,73 @@
 Thing_implement (FormantGrid, Function, 0);
 
 double structFormantGrid :: v_getVector (long irow, long icol) {
-	RealTier tier = (RealTier) formants -> item [irow];
+	RealTier tier = our formants.at [irow];
 	return RealTier_getValueAtIndex (tier, icol);
 }
 
 double structFormantGrid :: v_getFunction1 (long irow, double x) {
-	RealTier tier = (RealTier) formants -> item [irow];
+	RealTier tier = our formants.at [irow];
 	return RealTier_getValueAtTime (tier, x);
 }
 
 void structFormantGrid :: v_shiftX (double xfrom, double xto) {
 	FormantGrid_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= formants -> size; i ++) {
-		RealTier tier = (RealTier) formants -> item [i];
+	for (long i = 1; i <= our formants.size; i ++) {
+		RealTier tier = our formants.at [i];
 		tier -> v_shiftX (xfrom, xto);
 	}
-	for (long i = 1; i <= bandwidths -> size; i ++) {
-		RealTier tier = (RealTier) bandwidths -> item [i];
+	for (long i = 1; i <= our bandwidths.size; i ++) {
+		RealTier tier = our bandwidths.at [i];
 		tier -> v_shiftX (xfrom, xto);
 	}
 }
 
 void structFormantGrid :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	FormantGrid_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= formants -> size; i ++) {
-		RealTier tier = (RealTier) formants -> item [i];
+	for (long i = 1; i <= our formants.size; i ++) {
+		RealTier tier = our formants.at [i];
 		tier -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 	}
-	for (long i = 1; i <= bandwidths -> size; i ++) {
-		RealTier tier = (RealTier) bandwidths -> item [i];
+	for (long i = 1; i <= our bandwidths.size; i ++) {
+		RealTier tier = our bandwidths.at [i];
 		tier -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 	}
 }
 
 void FormantGrid_init (FormantGrid me, double tmin, double tmax, long numberOfFormants) {
-	my formants = Ordered_create ();
-	my bandwidths = Ordered_create ();
 	for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
-		RealTier formant = RealTier_create (tmin, tmax);
-		Collection_addItem (my formants, formant);
-		RealTier bandwidth = RealTier_create (tmin, tmax);
-		Collection_addItem (my bandwidths, bandwidth);
+		autoRealTier formant = RealTier_create (tmin, tmax);
+		my formants. addItem_move (formant.move());
+		autoRealTier bandwidth = RealTier_create (tmin, tmax);
+		my bandwidths. addItem_move (bandwidth.move());
 	}
 	my xmin = tmin;
 	my xmax = tmax;
 }
 
-FormantGrid FormantGrid_createEmpty (double tmin, double tmax, long numberOfFormants) {
+autoFormantGrid FormantGrid_createEmpty (double tmin, double tmax, long numberOfFormants) {
 	try {
 		autoFormantGrid me = Thing_new (FormantGrid);
-		FormantGrid_init (me.peek(), tmin, tmax, numberOfFormants);
-		return me.transfer();
+		FormantGrid_init (me.get(), tmin, tmax, numberOfFormants);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Empty FormantGrid not created.");
 	}
 }
 
-FormantGrid FormantGrid_create (double tmin, double tmax, long numberOfFormants,
+autoFormantGrid FormantGrid_create (double tmin, double tmax, long numberOfFormants,
 	double initialFirstFormant, double initialFormantSpacing,
 	double initialFirstBandwidth, double initialBandwidthSpacing)
 {
 	try {
 		autoFormantGrid me = FormantGrid_createEmpty (tmin, tmax, numberOfFormants);
 		for (long iformant = 1; iformant <= numberOfFormants; iformant ++) {
-			FormantGrid_addFormantPoint (me.peek(), iformant, 0.5 * (tmin + tmax),
+			FormantGrid_addFormantPoint (me.get(), iformant, 0.5 * (tmin + tmax),
 				initialFirstFormant + (iformant - 1) * initialFormantSpacing);
-			FormantGrid_addBandwidthPoint (me.peek(), iformant, 0.5 * (tmin + tmax),
+			FormantGrid_addBandwidthPoint (me.get(), iformant, 0.5 * (tmin + tmax),
 				initialFirstBandwidth + (iformant - 1) * initialBandwidthSpacing);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FormantGrid not created.");
 	}
@@ -119,9 +116,9 @@ FormantGrid FormantGrid_create (double tmin, double tmax, long numberOfFormants,
 
 void FormantGrid_addFormantPoint (FormantGrid me, long iformant, double t, double value) {
 	try {
-		if (iformant < 1 || iformant > my formants -> size)
+		if (iformant < 1 || iformant > my formants.size)
 			Melder_throw (U"No such formant number.");
-		RealTier formantTier = (RealTier) my formants -> item [iformant];
+		RealTier formantTier = my formants.at [iformant];
 		RealTier_addPoint (formantTier, t, value);
 	} catch (MelderError) {
 		Melder_throw (me, U": formant point not added.");
@@ -130,9 +127,9 @@ void FormantGrid_addFormantPoint (FormantGrid me, long iformant, double t, doubl
 
 void FormantGrid_addBandwidthPoint (FormantGrid me, long iformant, double t, double value) {
 	try {
-		if (iformant < 1 || iformant > my formants -> size)
+		if (iformant < 1 || iformant > my formants.size)
 			Melder_throw (U"No such formant number.");
-		RealTier bandwidthTier = (RealTier) my bandwidths -> item [iformant];
+		RealTier bandwidthTier = my bandwidths.at [iformant];
 		RealTier_addPoint (bandwidthTier, t, value);
 	} catch (MelderError) {
 		Melder_throw (me, U": bandwidth point not added.");
@@ -140,55 +137,56 @@ void FormantGrid_addBandwidthPoint (FormantGrid me, long iformant, double t, dou
 }
 
 double FormantGrid_getFormantAtTime (FormantGrid me, long iformant, double t) {
-	if (iformant < 1 || iformant > my formants -> size) return NUMundefined;
-	return RealTier_getValueAtTime ((RealTier) my formants -> item [iformant], t);
+	if (iformant < 1 || iformant > my formants.size) return NUMundefined;
+	return RealTier_getValueAtTime (my formants.at [iformant], t);
 }
 
 double FormantGrid_getBandwidthAtTime (FormantGrid me, long iformant, double t) {
-	if (iformant < 1 || iformant > my bandwidths -> size) return NUMundefined;
-	return RealTier_getValueAtTime ((RealTier) my bandwidths -> item [iformant], t);
+	if (iformant < 1 || iformant > my bandwidths.size) return NUMundefined;
+	return RealTier_getValueAtTime (my bandwidths.at [iformant], t);
 }
 
 void FormantGrid_removeFormantPointsBetween (FormantGrid me, long iformant, double tmin, double tmax) {
-	if (iformant < 1 || iformant > my formants -> size) return;
-	AnyTier_removePointsBetween (my formants -> item [iformant], tmin, tmax);
+	if (iformant < 1 || iformant > my formants.size) return;
+	AnyTier_removePointsBetween (my formants.at [iformant]->asAnyTier(), tmin, tmax);
 }
 
 void FormantGrid_removeBandwidthPointsBetween (FormantGrid me, long iformant, double tmin, double tmax) {
-	if (iformant < 1 || iformant > my bandwidths -> size) return;
-	AnyTier_removePointsBetween (my bandwidths -> item [iformant], tmin, tmax);
+	if (iformant < 1 || iformant > my bandwidths.size) return;
+	AnyTier_removePointsBetween (my bandwidths.at [iformant]->asAnyTier(), tmin, tmax);
 }
 
 void Sound_FormantGrid_filter_inline (Sound me, FormantGrid formantGrid) {
 	double dt = my dx;
-	if (formantGrid -> formants -> size && formantGrid -> bandwidths -> size)
-	for (long iformant = 1; iformant <= formantGrid -> formants -> size; iformant ++) {
-		RealTier formantTier = (RealTier) formantGrid -> formants -> item [iformant];
-		RealTier bandwidthTier = (RealTier) formantGrid -> bandwidths -> item [iformant];
-		for (long isamp = 1; isamp <= my nx; isamp ++) {
-			double t = my x1 + (isamp - 1) * my dx;
-			/*
-			 * Compute LP coefficients.
-			 */
-			double formant, bandwidth;
-			formant = RealTier_getValueAtTime (formantTier, t);
-			bandwidth = RealTier_getValueAtTime (bandwidthTier, t);
-			if (NUMdefined (formant) && NUMdefined (bandwidth)) {
-				double cosomdt = cos (2 * NUMpi * formant * dt);
-				double r = exp (- NUMpi * bandwidth * dt);
-				/* Formants at 0 Hz or the Nyquist are single poles, others are double poles. */
-				if (fabs (cosomdt) > 0.999999) {   /* Allow for round-off errors. */
-					/* single pole: D(z) = 1 - r z^-1 */
-					for (long channel = 1; channel <= my ny; channel ++) {
-						if (isamp > 1) my z [channel] [isamp] += r * my z [channel] [isamp - 1];
-					}
-				} else {
-					/* double pole: D(z) = 1 + p z^-1 + q z^-2 */
-					double p = - 2 * r * cosomdt;
-					double q = r * r;
-					for (long channel = 1; channel <= my ny; channel ++) {
-						if (isamp > 1) my z [channel] [isamp] -= p * my z [channel] [isamp - 1];
-						if (isamp > 2) my z [channel] [isamp] -= q * my z [channel] [isamp - 2];
+	if (formantGrid -> formants.size > 0 && formantGrid -> bandwidths.size > 0) {
+		for (long iformant = 1; iformant <= formantGrid -> formants.size; iformant ++) {
+			RealTier formantTier = formantGrid -> formants.at [iformant];
+			RealTier bandwidthTier = formantGrid -> bandwidths.at [iformant];
+			for (long isamp = 1; isamp <= my nx; isamp ++) {
+				double t = my x1 + (isamp - 1) * my dx;
+				/*
+				 * Compute LP coefficients.
+				 */
+				double formant, bandwidth;
+				formant = RealTier_getValueAtTime (formantTier, t);
+				bandwidth = RealTier_getValueAtTime (bandwidthTier, t);
+				if (NUMdefined (formant) && NUMdefined (bandwidth)) {
+					double cosomdt = cos (2 * NUMpi * formant * dt);
+					double r = exp (- NUMpi * bandwidth * dt);
+					/* Formants at 0 Hz or the Nyquist are single poles, others are double poles. */
+					if (fabs (cosomdt) > 0.999999) {   /* Allow for round-off errors. */
+						/* single pole: D(z) = 1 - r z^-1 */
+						for (long channel = 1; channel <= my ny; channel ++) {
+							if (isamp > 1) my z [channel] [isamp] += r * my z [channel] [isamp - 1];
+						}
+					} else {
+						/* double pole: D(z) = 1 + p z^-1 + q z^-2 */
+						double p = - 2 * r * cosomdt;
+						double q = r * r;
+						for (long channel = 1; channel <= my ny; channel ++) {
+							if (isamp > 1) my z [channel] [isamp] -= p * my z [channel] [isamp - 1];
+							if (isamp > 2) my z [channel] [isamp] -= q * my z [channel] [isamp - 2];
+						}
 					}
 				}
 			}
@@ -196,40 +194,40 @@ void Sound_FormantGrid_filter_inline (Sound me, FormantGrid formantGrid) {
 	}
 }
 
-Sound Sound_FormantGrid_filter (Sound me, FormantGrid formantGrid) {
+autoSound Sound_FormantGrid_filter (Sound me, FormantGrid formantGrid) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_FormantGrid_filter_inline (thee.peek(), formantGrid);
-		Vector_scale (thee.peek(), 0.99);
-		return thee.transfer();
+		Sound_FormantGrid_filter_inline (thee.get(), formantGrid);
+		Vector_scale (thee.get(), 0.99);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formantGrid, U".");
 	}
 }
 
-Sound Sound_FormantGrid_filter_noscale (Sound me, FormantGrid formantGrid) {
+autoSound Sound_FormantGrid_filter_noscale (Sound me, FormantGrid formantGrid) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_FormantGrid_filter_inline (thee.peek(), formantGrid);
-		return thee.transfer();
+		Sound_FormantGrid_filter_inline (thee.get(), formantGrid);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formantGrid, U".");
 	}
 }
 
-Sound FormantGrid_to_Sound (FormantGrid me, double samplingFrequency,
+autoSound FormantGrid_to_Sound (FormantGrid me, double samplingFrequency,
 	double tStart, double f0Start, double tMid, double f0Mid, double tEnd, double f0End,
 	double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2)
 {
 	try {
 		autoPitchTier pitch = PitchTier_create (my xmin, my xmax);
-		RealTier_addPoint (pitch.peek(), my xmin + tStart * (my xmax - my xmin), f0Start);
-		RealTier_addPoint (pitch.peek(), my xmin + tMid * (my xmax - my xmin), f0Mid);
-		RealTier_addPoint (pitch.peek(), my xmax - (1.0 - tEnd) * (my xmax - my xmin), f0End);
-		autoSound thee = PitchTier_to_Sound_phonation (pitch.peek(), samplingFrequency,
+		RealTier_addPoint (pitch.get(), my xmin + tStart * (my xmax - my xmin), f0Start);
+		RealTier_addPoint (pitch.get(), my xmin + tMid * (my xmax - my xmin), f0Mid);
+		RealTier_addPoint (pitch.get(), my xmax - (1.0 - tEnd) * (my xmax - my xmin), f0End);
+		autoSound thee = PitchTier_to_Sound_phonation (pitch.get(), samplingFrequency,
 			adaptFactor, maximumPeriod, openPhase, collisionPhase, power1, power2, false);
-		Sound_FormantGrid_filter_inline (thee.peek(), me);
-		return thee.transfer();
+		Sound_FormantGrid_filter_inline (thee.get(), me);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
@@ -238,14 +236,14 @@ Sound FormantGrid_to_Sound (FormantGrid me, double samplingFrequency,
 void FormantGrid_playPart (FormantGrid me, double tmin, double tmax, double samplingFrequency,
 	double tStart, double f0Start, double tMid, double f0Mid, double tEnd, double f0End,
 	double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2,
-	int (*playCallback) (void *playClosure, int phase, double tmin, double tmax, double t), void *playClosure)
+	Sound_PlayCallback playCallback, Thing playBoss)
 {
 	try {
 		autoSound sound = FormantGrid_to_Sound (me, samplingFrequency,
 			tStart, f0Start, tMid, f0Mid, tEnd, f0End,
 			adaptFactor, maximumPeriod, openPhase, collisionPhase, power1, power2);
-		Vector_scale (sound.peek(), 0.99);
-		Sound_playPart (sound.peek(), tmin, tmax, playCallback, playClosure);
+		Vector_scale (sound.get(), 0.99);
+		Sound_playPart (sound.get(), tmin, tmax, playCallback, playBoss);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
@@ -253,16 +251,16 @@ void FormantGrid_playPart (FormantGrid me, double tmin, double tmax, double samp
 
 void FormantGrid_formula_bandwidths (FormantGrid me, const char32 *expression, Interpreter interpreter, FormantGrid thee) {
 	try {
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (thee == NULL) thee = me;
-		for (long irow = 1; irow <= my formants -> size; irow ++) {
-			RealTier bandwidth = (RealTier) thy bandwidths -> item [irow];
-			for (long icol = 1; icol <= bandwidth -> points -> size; icol ++) {
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! thee) thee = me;
+		for (long irow = 1; irow <= my formants.size; irow ++) {
+			RealTier bandwidth = thy bandwidths.at [irow];
+			for (long icol = 1; icol <= bandwidth -> points.size; icol ++) {
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
 				if (result. result.numericResult == NUMundefined)
 					Melder_throw (U"Cannot put an undefined value into the tier.\nFormula not finished.");
-				((RealPoint) bandwidth -> points -> item [icol]) -> value = result. result.numericResult;
+				bandwidth -> points.at [icol] -> value = result. result.numericResult;
 			}
 		}
 	} catch (MelderError) {
@@ -272,16 +270,16 @@ void FormantGrid_formula_bandwidths (FormantGrid me, const char32 *expression, I
 
 void FormantGrid_formula_frequencies (FormantGrid me, const char32 *expression, Interpreter interpreter, FormantGrid thee) {
 	try {
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (thee == NULL) thee = me;
-		for (long irow = 1; irow <= my formants -> size; irow ++) {
-			RealTier formant = (RealTier) thy formants -> item [irow];
-			for (long icol = 1; icol <= formant -> points -> size; icol ++) {
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! thee) thee = me;
+		for (long irow = 1; irow <= my formants.size; irow ++) {
+			RealTier formant = thy formants.at [irow];
+			for (long icol = 1; icol <= formant -> points.size; icol ++) {
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
 				if (result. result.numericResult == NUMundefined)
 					Melder_throw (U"Cannot put an undefined value into the tier.\nFormula not finished.");
-				((RealPoint) formant -> points -> item [icol]) -> value = result. result.numericResult;
+				formant -> points.at [icol] -> value = result. result.numericResult;
 			}
 		}
 	} catch (MelderError) {
@@ -289,7 +287,7 @@ void FormantGrid_formula_frequencies (FormantGrid me, const char32 *expression,
 	}
 }
 
-FormantGrid Formant_downto_FormantGrid (Formant me) {
+autoFormantGrid Formant_downto_FormantGrid (Formant me) {
 	try {
 		autoFormantGrid thee = FormantGrid_createEmpty (my xmin, my xmax, my maxnFormants);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
@@ -297,56 +295,56 @@ FormantGrid Formant_downto_FormantGrid (Formant me) {
 			double t = Sampled_indexToX (me, iframe);
 			for (long iformant = 1; iformant <= frame -> nFormants; iformant ++) {
 				Formant_Formant pair = & frame -> formant [iformant];
-				FormantGrid_addFormantPoint (thee.peek(), iformant, t, pair -> frequency);
-				FormantGrid_addBandwidthPoint (thee.peek(), iformant, t, pair -> bandwidth);
+				FormantGrid_addFormantPoint (thee.get(), iformant, t, pair -> frequency);
+				FormantGrid_addBandwidthPoint (thee.get(), iformant, t, pair -> bandwidth);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to FormantGrid.");
 	}
 }
 
-Formant FormantGrid_to_Formant (FormantGrid me, double dt, double intensity) {
+autoFormant FormantGrid_to_Formant (FormantGrid me, double dt, double intensity) {
 	try {
 		Melder_assert (dt > 0.0);
 		Melder_assert (intensity >= 0.0);
 		long nt = (long) floor ((my xmax - my xmin) / dt) + 1;
 		double t1 = 0.5 * (my xmin + my xmax - (nt - 1) * dt);
-		autoFormant thee = Formant_create (my xmin, my xmax, nt, dt, t1, my formants -> size);
+		autoFormant thee = Formant_create (my xmin, my xmax, nt, dt, t1, my formants.size);
 		for (long iframe = 1; iframe <= nt; iframe ++) {
 			Formant_Frame frame = & thy d_frames [iframe];
 			frame -> intensity = intensity;
-			frame -> nFormants = my formants -> size;
-			frame -> formant = NUMvector <structFormant_Formant> (1, my formants -> size);
+			frame -> nFormants = my formants.size;
+			frame -> formant = NUMvector <structFormant_Formant> (1, my formants.size);
 			double t = t1 + (iframe - 1) * dt;
-			for (long iformant = 1; iformant <= my formants -> size; iformant ++) {
+			for (long iformant = 1; iformant <= my formants.size; iformant ++) {
 				Formant_Formant formant = & frame -> formant [iformant];
-				formant -> frequency = RealTier_getValueAtTime ((RealTier) my formants -> item [iformant], t);
-				formant -> bandwidth = RealTier_getValueAtTime ((RealTier) my bandwidths -> item [iformant], t);
+				formant -> frequency = RealTier_getValueAtTime (my formants.at [iformant], t);
+				formant -> bandwidth = RealTier_getValueAtTime (my bandwidths.at [iformant], t);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Formant.");
 	}
 }
 
-Sound Sound_Formant_filter (Sound me, Formant formant) {
+autoSound Sound_Formant_filter (Sound me, Formant formant) {
 	try {
 		autoFormantGrid grid = Formant_downto_FormantGrid (formant);
-		autoSound thee = Sound_FormantGrid_filter (me, grid.peek());
-		return thee.transfer();
+		autoSound thee = Sound_FormantGrid_filter (me, grid.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formant, U".");
 	}
 }
 
-Sound Sound_Formant_filter_noscale (Sound me, Formant formant) {
+autoSound Sound_Formant_filter_noscale (Sound me, Formant formant) {
 	try {
 		autoFormantGrid grid = Formant_downto_FormantGrid (formant);
-		autoSound thee = Sound_FormantGrid_filter_noscale (me, grid.peek());
-		return thee.transfer();
+		autoSound thee = Sound_FormantGrid_filter_noscale (me, grid.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formant, U".");
 	}
diff --git a/fon/FormantGrid.h b/fon/FormantGrid.h
index 365c538..b3941c0 100644
--- a/fon/FormantGrid.h
+++ b/fon/FormantGrid.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2008-2011,2014,2015 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -26,43 +25,42 @@
 Thing_declare (Interpreter);
 
 #include "FormantGrid_def.h"
-oo_CLASS_CREATE (FormantGrid, Function);
 
 void FormantGrid_init (FormantGrid me, double tmin, double tmax, long numberOfFormants);
-FormantGrid FormantGrid_createEmpty (double tmin, double tmax, long numberOfFormants);
+autoFormantGrid FormantGrid_createEmpty (double tmin, double tmax, long numberOfFormants);
 
-FormantGrid FormantGrid_create (double tmin, double tmax, long numberOfFormants,
+autoFormantGrid FormantGrid_create (double tmin, double tmax, long numberOfFormants,
 	double initialFirstFormant, double initialFormantSpacing,
 	double initialFirstBandwidth, double initialBandwidthSpacing);
 
-double FormantGrid_getFormantAtTime (FormantGrid me, long iformant, double t);
-double FormantGrid_getBandwidthAtTime (FormantGrid me, long iformant, double t);
+double FormantGrid_getFormantAtTime (FormantGrid me, long formantNumber, double time);
+double FormantGrid_getBandwidthAtTime (FormantGrid me, long formantNumber, double time);
 
-void FormantGrid_addFormantPoint (FormantGrid me, long iformant, double t, double value);
-void FormantGrid_addBandwidthPoint (FormantGrid me, long iformant, double t, double value);
-void FormantGrid_removeFormantPointsBetween (FormantGrid me, long iformant, double tmin, double tmax);
-void FormantGrid_removeBandwidthPointsBetween (FormantGrid me, long iformant, double tmin, double tmax);
+void FormantGrid_addFormantPoint (FormantGrid me, long formantNumber, double time, double value);
+void FormantGrid_addBandwidthPoint (FormantGrid me, long formantNumber, double time, double value);
+void FormantGrid_removeFormantPointsBetween (FormantGrid me, long formantNumber, double tmin, double tmax);
+void FormantGrid_removeBandwidthPointsBetween (FormantGrid me, long formantNumber, double tmin, double tmax);
 
 void Sound_FormantGrid_filter_inline (Sound me, FormantGrid formantGrid);
-Sound Sound_FormantGrid_filter (Sound me, FormantGrid formantGrid);
-Sound Sound_FormantGrid_filter_noscale (Sound me, FormantGrid formantGrid);
+autoSound Sound_FormantGrid_filter (Sound me, FormantGrid formantGrid);
+autoSound Sound_FormantGrid_filter_noscale (Sound me, FormantGrid formantGrid);
 
-Sound FormantGrid_to_Sound (FormantGrid me, double samplingFrequency,
+autoSound FormantGrid_to_Sound (FormantGrid me, double samplingFrequency,
 	double tStart, double f0Start, double tMid, double f0Mid, double tEnd, double f0End,
 	double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2);
 void FormantGrid_playPart (FormantGrid me, double tmin, double tmax, double samplingFrequency,
 	double tStart, double f0Start, double tMid, double f0Mid, double tEnd, double f0End,
 	double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2,
-	int (*playCallback) (void *playClosure, int phase, double tmin, double tmax, double t), void *playClosure);
+	Sound_PlayCallback playCallback, Thing playBoss);
 
 void FormantGrid_formula_frequencies (FormantGrid me, const char32 *expression, Interpreter interpreter, FormantGrid thee);
 void FormantGrid_formula_bandwidths (FormantGrid me, const char32 *expression, Interpreter interpreter, FormantGrid thee);
 
-FormantGrid Formant_downto_FormantGrid (Formant me);
-Formant FormantGrid_to_Formant (FormantGrid me, double dt, double intensity);
+autoFormantGrid Formant_downto_FormantGrid (Formant me);
+autoFormant FormantGrid_to_Formant (FormantGrid me, double dt, double intensity);
 
-Sound Sound_Formant_filter (Sound me, Formant formant);
-Sound Sound_Formant_filter_noscale (Sound me, Formant formant);
+autoSound Sound_Formant_filter (Sound me, Formant formant);
+autoSound Sound_Formant_filter_noscale (Sound me, Formant formant);
 
 /* End of file FormantGrid.h */
 #endif
diff --git a/fon/FormantGridEditor.cpp b/fon/FormantGridEditor.cpp
index abcaaed..8d03fad 100644
--- a/fon/FormantGridEditor.cpp
+++ b/fon/FormantGridEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2008-2011,2012,2013,2014,2015 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FormantGridEditor.h"
@@ -32,34 +31,31 @@ Thing_implement (FormantGridEditor, FunctionEditor, 0);
 
 /********** MENU COMMANDS **********/
 
-static void menu_cb_removePoints (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
+static void menu_cb_removePoints (FormantGridEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Remove point(s)");
 	FormantGrid grid = (FormantGrid) my data;
-	Ordered tiers = my editingBandwidths ? grid -> bandwidths : grid -> formants;
-	RealTier tier = (RealTier) tiers -> item [my selectedFormant];
+	OrderedOf<structRealTier>* tiers = ( my editingBandwidths ? & grid -> bandwidths : & grid -> formants );
+	RealTier tier = tiers->at [my selectedFormant];
 	if (my d_startSelection == my d_endSelection)
-		AnyTier_removePointNear (tier, my d_startSelection);
+		AnyTier_removePointNear (tier->asAnyTier(), my d_startSelection);
 	else
-		AnyTier_removePointsBetween (tier, my d_startSelection, my d_endSelection);
+		AnyTier_removePointsBetween (tier->asAnyTier(), my d_startSelection, my d_endSelection);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
+static void menu_cb_addPointAtCursor (FormantGridEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Add point");
 	FormantGrid grid = (FormantGrid) my data;
-	Ordered tiers = my editingBandwidths ? grid -> bandwidths : grid -> formants;
-	RealTier tier = (RealTier) tiers -> item [my selectedFormant];
+	OrderedOf<structRealTier>* tiers = ( my editingBandwidths ? & grid -> bandwidths : & grid -> formants );
+	RealTier tier = tiers->at [my selectedFormant];
 	RealTier_addPoint (tier, 0.5 * (my d_startSelection + my d_endSelection), my ycursor);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAt (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
-	EDITOR_FORM (U"Add point", 0)
+static void menu_cb_addPointAt (FormantGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add point", nullptr)
 		REAL (U"Time (s)", U"0.0")
 		POSITIVE (U"Frequency (Hz)", U"200.0")
 	EDITOR_OK
@@ -68,17 +64,16 @@ static void menu_cb_addPointAt (EDITOR_ARGS) {
 	EDITOR_DO
 		Editor_save (me, U"Add point");
 		FormantGrid grid = (FormantGrid) my data;
-		Ordered tiers = my editingBandwidths ? grid -> bandwidths : grid -> formants;
-		RealTier tier = (RealTier) tiers -> item [my selectedFormant];
+		OrderedOf<structRealTier>* tiers = ( my editingBandwidths ? & grid -> bandwidths : & grid -> formants );
+		RealTier tier = tiers->at [my selectedFormant];
 		RealTier_addPoint (tier, GET_REAL (U"Time"), GET_REAL (U"Frequency"));
 		FunctionEditor_redraw (me);
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_setFormantRange (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
-	EDITOR_FORM (U"Set formant range", 0)
+static void menu_cb_setFormantRange (FormantGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Set formant range", nullptr)
 		REAL (U"Minimum formant (Hz)", my default_formantFloor   ())
 		REAL (U"Maximum formant (Hz)", my default_formantCeiling ())
 	EDITOR_OK
@@ -91,9 +86,8 @@ static void menu_cb_setFormantRange (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_setBandwidthRange (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
-	EDITOR_FORM (U"Set bandwidth range", 0)
+static void menu_cb_setBandwidthRange (FormantGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Set bandwidth range", nullptr)
 		REAL (U"Minimum bandwidth (Hz)", my default_bandwidthFloor   ())
 		REAL (U"Maximum bandwidth (Hz)", my default_bandwidthCeiling ())
 	EDITOR_OK
@@ -106,8 +100,7 @@ static void menu_cb_setBandwidthRange (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_showBandwidths (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
+static void menu_cb_showBandwidths (FormantGridEditor me, EDITOR_ARGS_DIRECT) {
 	my editingBandwidths = ! my editingBandwidths;
 	GuiMenuItem_check (my d_bandwidthsToggle, my editingBandwidths);
 	FunctionEditor_redraw (me);
@@ -115,25 +108,24 @@ static void menu_cb_showBandwidths (EDITOR_ARGS) {
 
 static void selectFormantOrBandwidth (FormantGridEditor me, long iformant) {
 	FormantGrid grid = (FormantGrid) my data;
-	long numberOfFormants = grid -> formants -> size;
+	long numberOfFormants = grid -> formants.size;
 	if (iformant > numberOfFormants)
 		Melder_throw (U"Cannot select formant ", iformant, U", because the FormantGrid has only ", numberOfFormants, U" formants.");
 	my selectedFormant = iformant;
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_selectFirst   (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 1); }
-static void menu_cb_selectSecond  (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 2); }
-static void menu_cb_selectThird   (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 3); }
-static void menu_cb_selectFourth  (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 4); }
-static void menu_cb_selectFifth   (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 5); }
-static void menu_cb_selectSixth   (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 6); }
-static void menu_cb_selectSeventh (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 7); }
-static void menu_cb_selectEighth  (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 8); }
-static void menu_cb_selectNinth   (EDITOR_ARGS) { EDITOR_IAM (FormantGridEditor); selectFormantOrBandwidth (me, 9); }
-static void menu_cb_selectFormantOrBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
-	EDITOR_FORM (U"Select formant or bandwidth", 0)
+static void menu_cb_selectFirst   (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 1); }
+static void menu_cb_selectSecond  (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 2); }
+static void menu_cb_selectThird   (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 3); }
+static void menu_cb_selectFourth  (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 4); }
+static void menu_cb_selectFifth   (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 5); }
+static void menu_cb_selectSixth   (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 6); }
+static void menu_cb_selectSeventh (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 7); }
+static void menu_cb_selectEighth  (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 8); }
+static void menu_cb_selectNinth   (FormantGridEditor me, EDITOR_ARGS_DIRECT) { selectFormantOrBandwidth (me, 9); }
+static void menu_cb_selectFormantOrBandwidth (FormantGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Select formant or bandwidth", nullptr)
 		NATURAL (U"Formant number", U"1")
 	EDITOR_OK
 		SET_INTEGER (U"Formant number", my selectedFormant)
@@ -143,9 +135,8 @@ static void menu_cb_selectFormantOrBandwidth (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_pitchSettings (EDITOR_ARGS) {
-	EDITOR_IAM (FormantGridEditor);
-	EDITOR_FORM (U"Source pitch settings", 0)
+static void menu_cb_pitchSettings (FormantGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Source pitch settings", nullptr)
 		LABEL (U"", U"These settings apply to the pitch curve")
 		LABEL (U"", U"that you hear when playing the FormantGrid.")
 		REAL     (U"Starting time",       my default_source_pitch_tStart  ())
@@ -177,7 +168,7 @@ void structFormantGridEditor :: v_createMenus () {
 	our d_bandwidthsToggle = EditorMenu_addCommand (menu, U"Show bandwidths", GuiMenu_CHECKBUTTON, menu_cb_showBandwidths);
 	EditorMenu_addCommand (menu, U"Set formant range...", 0, menu_cb_setFormantRange);
 	EditorMenu_addCommand (menu, U"Set bandwidth range...", 0, menu_cb_setBandwidthRange);
-	EditorMenu_addCommand (menu, U"-- select formant --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- select formant --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Select first", '1', menu_cb_selectFirst);
 	EditorMenu_addCommand (menu, U"Select second", '2', menu_cb_selectSecond);
 	EditorMenu_addCommand (menu, U"Select third", '3', menu_cb_selectThird);
@@ -191,7 +182,7 @@ void structFormantGridEditor :: v_createMenus () {
 	menu = Editor_addMenu (this, U"Point", 0);
 	EditorMenu_addCommand (menu, U"Add point at cursor", 'T', menu_cb_addPointAtCursor);
 	EditorMenu_addCommand (menu, U"Add point at...", 0, menu_cb_addPointAt);
-	EditorMenu_addCommand (menu, U"-- remove point --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- remove point --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Remove point(s)", GuiMenu_OPTION + 'T', menu_cb_removePoints);
 	if (our v_hasSourceMenu ()) {
 		menu = Editor_addMenu (this, U"Source", 0);
@@ -204,130 +195,128 @@ void structFormantGridEditor :: v_createMenus () {
 
 void structFormantGridEditor :: v_draw () {
 	FormantGrid grid = (FormantGrid) our data;
-	Ordered tiers = our editingBandwidths ? grid -> bandwidths : grid -> formants;
-	RealTier selectedTier = (RealTier) tiers -> item [selectedFormant];
+	OrderedOf<structRealTier>* tiers = ( our editingBandwidths ? & grid -> bandwidths : & grid -> formants );
+	RealTier selectedTier = tiers->at [our selectedFormant];
 	double ymin = our editingBandwidths ? our p_bandwidthFloor   : our p_formantFloor;
 	double ymax = our editingBandwidths ? our p_bandwidthCeiling : our p_formantCeiling;
-	Graphics_setColour (our d_graphics, Graphics_WHITE);
-	Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, ymin, ymax);
-	Graphics_setColour (our d_graphics, Graphics_RED);
-	Graphics_line (our d_graphics, our d_startWindow, our ycursor, our d_endWindow, our ycursor);
-	Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-	Graphics_text (our d_graphics, our d_startWindow, our ycursor, Melder_float (Melder_half (our ycursor)));
-	Graphics_setColour (our d_graphics, Graphics_BLUE);
-	Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_TOP);
-	Graphics_text (our d_graphics, our d_endWindow, ymax, Melder_float (Melder_half (ymax)), U" Hz");
-	Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_HALF);
-	Graphics_text (our d_graphics, our d_endWindow, ymin, Melder_float (Melder_half (ymin)), U" Hz");
-	Graphics_setLineWidth (our d_graphics, 1);
-	Graphics_setColour (our d_graphics, Graphics_GREY);
-	for (long iformant = 1; iformant <= grid -> formants -> size; iformant ++) if (iformant != our selectedFormant) {
-		RealTier tier = (RealTier) tiers -> item [iformant];
-		long imin = AnyTier_timeToHighIndex (tier, our d_startWindow);
-		long imax = AnyTier_timeToLowIndex (tier, our d_endWindow);
-		long n = tier -> points -> size;
+	Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, ymin, ymax);
+	Graphics_setColour (our d_graphics.get(), Graphics_RED);
+	Graphics_line (our d_graphics.get(), our d_startWindow, our ycursor, our d_endWindow, our ycursor);
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+	Graphics_text (our d_graphics.get(), our d_startWindow, our ycursor, Melder_float (Melder_half (our ycursor)));
+	Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_TOP);
+	Graphics_text (our d_graphics.get(), our d_endWindow, ymax, Melder_float (Melder_half (ymax)), U" Hz");
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+	Graphics_text (our d_graphics.get(), our d_endWindow, ymin, Melder_float (Melder_half (ymin)), U" Hz");
+	Graphics_setLineWidth (our d_graphics.get(), 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_GREY);
+	for (long iformant = 1; iformant <= grid -> formants.size; iformant ++) if (iformant != our selectedFormant) {
+		RealTier tier = tiers->at [iformant];
+		long imin = AnyTier_timeToHighIndex (tier->asAnyTier(), our d_startWindow);
+		long imax = AnyTier_timeToLowIndex (tier->asAnyTier(), our d_endWindow);
+		long n = tier -> points.size;
 		if (n == 0) {
 		} else if (imax < imin) {
 			double yleft = RealTier_getValueAtTime (tier, our d_startWindow);
 			double yright = RealTier_getValueAtTime (tier, our d_endWindow);
-			Graphics_line (our d_graphics, our d_startWindow, yleft, our d_endWindow, yright);
+			Graphics_line (our d_graphics.get(), our d_startWindow, yleft, our d_endWindow, yright);
 		} else for (long i = imin; i <= imax; i ++) {
-			RealPoint point = (RealPoint) tier -> points -> item [i];
+			RealPoint point = tier -> points.at [i];
 			double t = point -> number, y = point -> value;
-			Graphics_fillCircle_mm (our d_graphics, t, y, 2);
+			Graphics_fillCircle_mm (our d_graphics.get(), t, y, 2.0);
 			if (i == 1)
-				Graphics_line (our d_graphics, our d_startWindow, y, t, y);
+				Graphics_line (our d_graphics.get(), our d_startWindow, y, t, y);
 			else if (i == imin)
-				Graphics_line (our d_graphics, t, y, our d_startWindow, RealTier_getValueAtTime (tier, our d_startWindow));
+				Graphics_line (our d_graphics.get(), t, y, our d_startWindow, RealTier_getValueAtTime (tier, our d_startWindow));
 			if (i == n)
-				Graphics_line (our d_graphics, t, y, our d_endWindow, y);
+				Graphics_line (our d_graphics.get(), t, y, our d_endWindow, y);
 			else if (i == imax)
-				Graphics_line (our d_graphics, t, y, our d_endWindow, RealTier_getValueAtTime (tier, our d_endWindow));
+				Graphics_line (our d_graphics.get(), t, y, our d_endWindow, RealTier_getValueAtTime (tier, our d_endWindow));
 			else {
-				RealPoint pointRight = (RealPoint) tier -> points -> item [i + 1];
-				Graphics_line (our d_graphics, t, y, pointRight -> number, pointRight -> value);
+				RealPoint pointRight = tier -> points.at [i + 1];
+				Graphics_line (our d_graphics.get(), t, y, pointRight -> number, pointRight -> value);
 			}
 		}
 	}
-	Graphics_setColour (our d_graphics, Graphics_BLUE);
-	long ifirstSelected = AnyTier_timeToHighIndex (selectedTier, our d_startSelection);
-	long ilastSelected = AnyTier_timeToLowIndex (selectedTier, our d_endSelection);
-	long n = selectedTier -> points -> size;
-	long imin = AnyTier_timeToHighIndex (selectedTier, our d_startWindow);
-	long imax = AnyTier_timeToLowIndex (selectedTier, our d_endWindow);
-	Graphics_setLineWidth (our d_graphics, 2);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
+	long ifirstSelected = AnyTier_timeToHighIndex (selectedTier->asAnyTier(), our d_startSelection);
+	long ilastSelected = AnyTier_timeToLowIndex (selectedTier->asAnyTier(), our d_endSelection);
+	long n = selectedTier -> points.size;
+	long imin = AnyTier_timeToHighIndex (selectedTier->asAnyTier(), our d_startWindow);
+	long imax = AnyTier_timeToLowIndex (selectedTier->asAnyTier(), our d_endWindow);
+	Graphics_setLineWidth (our d_graphics.get(), 2.0);
 	if (n == 0) {
-		Graphics_setTextAlignment (our d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (our d_graphics, 0.5 * (our d_startWindow + our d_endWindow),
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), 0.5 * (our d_startWindow + our d_endWindow),
 			0.5 * (ymin + ymax), U"(no points in selected formant tier)");
 	} else if (imax < imin) {
 		double yleft = RealTier_getValueAtTime (selectedTier, our d_startWindow);
 		double yright = RealTier_getValueAtTime (selectedTier, our d_endWindow);
-		Graphics_line (our d_graphics, our d_startWindow, yleft, our d_endWindow, yright);
+		Graphics_line (our d_graphics.get(), our d_startWindow, yleft, our d_endWindow, yright);
 	} else for (long i = imin; i <= imax; i ++) {
-		RealPoint point = (RealPoint) selectedTier -> points -> item [i];
+		RealPoint point = selectedTier -> points.at [i];
 		double t = point -> number, y = point -> value;
 		if (i >= ifirstSelected && i <= ilastSelected)
-			Graphics_setColour (our d_graphics, Graphics_RED);
-		Graphics_fillCircle_mm (our d_graphics, t, y, 3);
-		Graphics_setColour (our d_graphics, Graphics_BLUE);
+			Graphics_setColour (our d_graphics.get(), Graphics_RED);
+		Graphics_fillCircle_mm (our d_graphics.get(), t, y, 3);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
 		if (i == 1)
-			Graphics_line (our d_graphics, our d_startWindow, y, t, y);
+			Graphics_line (our d_graphics.get(), our d_startWindow, y, t, y);
 		else if (i == imin)
-			Graphics_line (our d_graphics, t, y, our d_startWindow, RealTier_getValueAtTime (selectedTier, our d_startWindow));
+			Graphics_line (our d_graphics.get(), t, y, our d_startWindow, RealTier_getValueAtTime (selectedTier, our d_startWindow));
 		if (i == n)
-			Graphics_line (our d_graphics, t, y, our d_endWindow, y);
+			Graphics_line (our d_graphics.get(), t, y, our d_endWindow, y);
 		else if (i == imax)
-			Graphics_line (our d_graphics, t, y, our d_endWindow, RealTier_getValueAtTime (selectedTier, our d_endWindow));
+			Graphics_line (our d_graphics.get(), t, y, our d_endWindow, RealTier_getValueAtTime (selectedTier, our d_endWindow));
 		else {
-			RealPoint pointRight = (RealPoint) selectedTier -> points -> item [i + 1];
-			Graphics_line (our d_graphics, t, y, pointRight -> number, pointRight -> value);
+			RealPoint pointRight = selectedTier -> points.at [i + 1];
+			Graphics_line (our d_graphics.get(), t, y, pointRight -> number, pointRight -> value);
 		}
 	}
-	Graphics_setLineWidth (our d_graphics, 1);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
+	Graphics_setLineWidth (our d_graphics.get(), 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
 }
 
-static void drawWhileDragging (FormantGridEditor me, double xWC, double yWC, long first, long last, double dt, double dy) {
+static void drawWhileDragging (FormantGridEditor me, double /* xWC */, double /* yWC */, long first, long last, double dt, double dy) {
 	FormantGrid grid = (FormantGrid) my data;
-	Ordered tiers = my editingBandwidths ? grid -> bandwidths : grid -> formants;
-	RealTier tier = (RealTier) tiers -> item [my selectedFormant];
+	OrderedOf<structRealTier>* tiers = my editingBandwidths ? & grid -> bandwidths : & grid -> formants;
+	RealTier tier = tiers->at [my selectedFormant];
 	double ymin = my editingBandwidths ? my p_bandwidthFloor   : my p_formantFloor;
 	double ymax = my editingBandwidths ? my p_bandwidthCeiling : my p_formantCeiling;
-	(void) xWC;
-	(void) yWC;
 
 	/*
 	 * Draw all selected points as magenta empty circles, if inside the window.
 	 */
 	for (long i = first; i <= last; i ++) {
-		RealPoint point = (RealPoint) tier -> points -> item [i];
+		RealPoint point = tier -> points.at [i];
 		double t = point -> number + dt, y = point -> value + dy;
 		if (t >= my d_startWindow && t <= my d_endWindow)
-			Graphics_circle_mm (my d_graphics, t, y, 3);
+			Graphics_circle_mm (my d_graphics.get(), t, y, 3.0);
 	}
 
 	if (last == first) {
 		/*
 		 * Draw a crosshair with time and y.
 		 */
-		RealPoint point = (RealPoint) tier -> points -> item [first];
+		RealPoint point = tier -> points.at [first];
 		double t = point -> number + dt, y = point -> value + dy;
-		Graphics_line (my d_graphics, t, ymin, t, ymax - Graphics_dyMMtoWC (my d_graphics, 4.0));
-		Graphics_setTextAlignment (my d_graphics, kGraphics_horizontalAlignment_CENTRE, Graphics_TOP);
-		Graphics_text (my d_graphics, t, ymax, Melder_fixed (t, 6));
-		Graphics_line (my d_graphics, my d_startWindow, y, my d_endWindow, y);
-		Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-		Graphics_text (my d_graphics, my d_startWindow, y, Melder_fixed (y, 6));
+		Graphics_line (my d_graphics.get(), t, ymin, t, ymax - Graphics_dyMMtoWC (my d_graphics.get(), 4.0));
+		Graphics_setTextAlignment (my d_graphics.get(), kGraphics_horizontalAlignment_CENTRE, Graphics_TOP);
+		Graphics_text (my d_graphics.get(), t, ymax, Melder_fixed (t, 6));
+		Graphics_line (my d_graphics.get(), my d_startWindow, y, my d_endWindow, y);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_text (my d_graphics.get(), my d_startWindow, y, Melder_fixed (y, 6));
 	}
 }
 
-int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	FormantGrid grid = (FormantGrid) our data;
-	Ordered tiers = editingBandwidths ? grid -> bandwidths : grid -> formants;
-	RealTier tier = (RealTier) tiers -> item [selectedFormant];
+	OrderedOf<structRealTier>* tiers = our editingBandwidths ? & grid -> bandwidths : & grid -> formants;
+	RealTier tier = tiers->at [selectedFormant];
 	double ymin = our editingBandwidths ? our p_bandwidthFloor   : our p_formantFloor;
 	double ymax = our editingBandwidths ? our p_bandwidthCeiling : our p_formantCeiling;
 	long inearestPoint, ifirstSelected, ilastSelected;
@@ -340,18 +329,18 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	 */
 	//d_startSelection = d_endSelection = xWC;
 	our ycursor = (1.0 - yWC) * ymin + yWC * ymax;
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, ymin, ymax);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, ymin, ymax);
 	yWC = our ycursor;
 
 	/*
 	 * Clicked on a point?
 	 */
-	inearestPoint = AnyTier_timeToNearestIndex (tier, xWC);
+	inearestPoint = AnyTier_timeToNearestIndex (tier->asAnyTier(), xWC);
 	if (inearestPoint == 0) {
 		return FormantGridEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
-	nearestPoint = (RealPoint) tier -> points -> item [inearestPoint];
-	if (Graphics_distanceWCtoMM (our d_graphics, xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
+	nearestPoint = tier -> points.at [inearestPoint];
+	if (Graphics_distanceWCtoMM (our d_graphics.get(), xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
 		return our FormantGridEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
 
@@ -361,8 +350,8 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	draggingSelection = shiftKeyPressed &&
 		nearestPoint -> number > our d_startSelection && nearestPoint -> number < our d_endSelection;
 	if (draggingSelection) {
-		ifirstSelected = AnyTier_timeToHighIndex (tier, our d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (tier, our d_endSelection);
+		ifirstSelected = AnyTier_timeToHighIndex (tier->asAnyTier(), our d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (tier->asAnyTier(), our d_endSelection);
 		Editor_save (this, U"Drag points");
 	} else {
 		ifirstSelected = ilastSelected = inearestPoint;
@@ -372,11 +361,11 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	/*
 	 * Drag.
 	 */
-	Graphics_xorOn (our d_graphics, Graphics_MAROON);
+	Graphics_xorOn (our d_graphics.get(), Graphics_MAROON);
 	drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
-	while (Graphics_mouseStillDown (our d_graphics)) {
+	while (Graphics_mouseStillDown (our d_graphics.get())) {
 		double xWC_new, yWC_new;
-		Graphics_getMouseLocation (our d_graphics, & xWC_new, & yWC_new);
+		Graphics_getMouseLocation (our d_graphics.get(), & xWC_new, & yWC_new);
 		if (xWC_new != xWC || yWC_new != yWC) {
 			drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 			dt += xWC_new - xWC, df += yWC_new - yWC;
@@ -384,7 +373,7 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 			drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 		}
 	}
-	Graphics_xorOff (our d_graphics);
+	Graphics_xorOff (our d_graphics.get());
 
 	/*
 	 * Dragged inside window?
@@ -394,21 +383,20 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	/*
 	 * Points not dragged past neighbours?
 	 */
-	RealPoint *points = (RealPoint *) tier -> points -> item;
-	double newTime = points [ifirstSelected] -> number + dt;
+	double newTime = tier -> points.at [ifirstSelected] -> number + dt;
 	if (newTime < our tmin) return 1;   // outside domain
-	if (ifirstSelected > 1 && newTime <= points [ifirstSelected - 1] -> number)
+	if (ifirstSelected > 1 && newTime <= tier -> points.at [ifirstSelected - 1] -> number)
 		return 1;   // past left neighbour
-	newTime = points [ilastSelected] -> number + dt;
+	newTime = tier -> points.at [ilastSelected] -> number + dt;
 	if (newTime > our tmax) return 1;   // outside domain
-	if (ilastSelected < tier -> points -> size && newTime >= points [ilastSelected + 1] -> number)
-		return 1;   // past right neighbour
+	if (ilastSelected < tier -> points.size && newTime >= tier -> points.at [ilastSelected + 1] -> number)
+		return FunctionEditor_UPDATE_NEEDED;   // past right neighbour
 
 	/*
 	 * Drop.
 	 */
 	for (long i = ifirstSelected; i <= ilastSelected; i ++) {
-		RealPoint point = (RealPoint) tier -> points -> item [i];
+		RealPoint point = tier -> points.at [i];
 		point -> number += dt;
 		point -> value += df;
 	}
@@ -422,7 +410,7 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 		/*
 		 * Move crosshair to only selected formant point.
 		 */
-		RealPoint point = (RealPoint) tier -> points -> item [ifirstSelected];
+		RealPoint point = tier -> points.at [ifirstSelected];
 		our d_startSelection = our d_endSelection = point -> number;
 		our ycursor = point -> value;
 	} else {
@@ -434,7 +422,7 @@ int structFormantGridEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	}
 
 	Editor_broadcastDataChanged (this);
-	return 1;   // update needed
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
 void structFormantGridEditor :: v_play (double tmin, double tmax) {
@@ -449,18 +437,18 @@ void structFormantGridEditor :: v_play (double tmin, double tmax) {
 }
 
 void FormantGridEditor_init (FormantGridEditor me, const char32 *title, FormantGrid data) {
-	Melder_assert (data != NULL);
+	Melder_assert (data);
 	Melder_assert (Thing_isa (data, classFormantGrid));
 	FunctionEditor_init (me, title, data);
 	my ycursor = 0.382 * my p_formantFloor + 0.618 * my p_formantCeiling;
 	my selectedFormant = 1;
 }
 
-FormantGridEditor FormantGridEditor_create (const char32 *title, FormantGrid data) {
+autoFormantGridEditor FormantGridEditor_create (const char32 *title, FormantGrid data) {
 	try {
 		autoFormantGridEditor me = Thing_new (FormantGridEditor);
-		FormantGridEditor_init (me.peek(), title, data);
-		return me.transfer();
+		FormantGridEditor_init (me.get(), title, data);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FormantGrid window not created.");
 	}
diff --git a/fon/FormantGridEditor.h b/fon/FormantGridEditor.h
index 4d2cbb9..16d6a55 100644
--- a/fon/FormantGridEditor.h
+++ b/fon/FormantGridEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2008-2011,2012,2013,2015 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -32,7 +31,7 @@ Thing_define (FormantGridEditor, FunctionEditor) {
 		override;
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -44,7 +43,7 @@ Thing_define (FormantGridEditor, FunctionEditor) {
 
 void FormantGridEditor_init (FormantGridEditor me, const char32 *title, FormantGrid data);
 
-FormantGridEditor FormantGridEditor_create (const char32 *title, FormantGrid data);
+autoFormantGridEditor FormantGridEditor_create (const char32 *title, FormantGrid data);
 
 /* End of file FormantGridEditor.h */
 #endif
diff --git a/fon/FormantGridEditor_prefs.h b/fon/FormantGridEditor_prefs.h
index 6805d92..999add3 100644
--- a/fon/FormantGridEditor_prefs.h
+++ b/fon/FormantGridEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (FormantGridEditor)
diff --git a/fon/FormantGrid_def.h b/fon/FormantGrid_def.h
index 398b004..e12a39e 100644
--- a/fon/FormantGrid_def.h
+++ b/fon/FormantGrid_def.h
@@ -2,26 +2,25 @@
  *
  * Copyright (C) 2008-2011,2015 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT FormantGrid
 oo_DEFINE_CLASS (FormantGrid, Function)
 
-	oo_COLLECTION (Ordered, formants, RealTier, 0)
-	oo_COLLECTION (Ordered, bandwidths, RealTier, 0)
+	oo_COLLECTION_OF (OrderedOf, formants, RealTier, 0)
+	oo_COLLECTION_OF (OrderedOf, bandwidths, RealTier, 0)
 
 	#if oo_DECLARING
 		bool v_hasGetVector ()
diff --git a/fon/FormantTier.cpp b/fon/FormantTier.cpp
index 700e34c..017de43 100644
--- a/fon/FormantTier.cpp
+++ b/fon/FormantTier.cpp
@@ -1,20 +1,19 @@
 /* FormantTier.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,99 +48,98 @@
 #include "oo_DESCRIPTION.h"
 #include "FormantTier_def.h"
 
-Thing_implement (FormantPoint, Data, 0);
+Thing_implement (FormantPoint, Daata, 0);
 
-FormantPoint FormantPoint_create (double time) {
+autoFormantPoint FormantPoint_create (double time) {
 	try {
 		autoFormantPoint me = Thing_new (FormantPoint);
-		my time = time;
-		return me.transfer();
+		my number = time;
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Formant point not created.");
 	}
 }
 
-Thing_implement (FormantTier, Function, 0);
+Thing_implement (FormantTier, AnyTier, 0);
 
-FormantTier FormantTier_create (double tmin, double tmax) {
+autoFormantTier FormantTier_create (double tmin, double tmax) {
 	try {
 		autoFormantTier me = Thing_new (FormantTier);
-		my points = SortedSetOfDouble_create ();
 		my xmin = tmin;
 		my xmax = tmax;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FormantTier not created.");
 	}
 }
 
 double FormantTier_getValueAtTime (FormantTier me, int iformant, double t) {
-	long n = my points -> size;
+	long n = my points.size;
 	if (n == 0 || iformant < 1) return NUMundefined;
-	FormantPoint pointRight = (FormantPoint) my points -> item [1];
-	if (t <= pointRight -> time) {
+	FormantPoint pointRight = my points.at [1];
+	if (t <= pointRight -> number) {
 		if (iformant > pointRight -> numberOfFormants) return NUMundefined;
-		return pointRight -> formant [iformant-1];   /* Constant extrapolation. */
+		return pointRight -> formant [iformant-1];   // constant extrapolation
 	}
-	FormantPoint pointLeft = (FormantPoint) my points -> item [n];
-	if (t >= pointLeft -> time) {
+	FormantPoint pointLeft = my points.at [n];
+	if (t >= pointLeft -> number) {
 		if (iformant > pointLeft -> numberOfFormants) return NUMundefined;
-		return pointLeft -> formant [iformant-1];   /* Constant extrapolation. */
+		return pointLeft -> formant [iformant-1];   // constant extrapolation
 	}
 	Melder_assert (n >= 2);
-	long ileft = AnyTier_timeToLowIndex (me, t), iright = ileft + 1;
+	long ileft = AnyTier_timeToLowIndex (me->asAnyTier(), t), iright = ileft + 1;
 	Melder_assert (ileft >= 1 && iright <= n);
-	pointLeft = (FormantPoint) my points -> item [ileft];
-	pointRight = (FormantPoint) my points -> item [iright];
-	double tleft = pointLeft -> time;
+	pointLeft = my points.at [ileft];
+	pointRight = my points.at [iright];
+	double tleft = pointLeft -> number;
 	double fleft = iformant > pointLeft -> numberOfFormants ? NUMundefined : pointLeft -> formant [iformant-1];
-	double tright = pointRight -> time;
+	double tright = pointRight -> number;
 	double fright = iformant > pointRight -> numberOfFormants ? NUMundefined : pointRight -> formant [iformant-1];
 	return fleft == NUMundefined ? fright == NUMundefined ? NUMundefined : fright
 		: fright == NUMundefined ? fleft
-		: t == tright ? fright   /* Be very accurate. */
-		: tleft == tright ? 0.5 * (fleft + fright)   /* Unusual, but possible; no preference. */
-		: fleft + (t - tleft) * (fright - fleft) / (tright - tleft);   /* Linear interpolation. */
+		: t == tright ? fright   // be very accurate
+		: tleft == tright ? 0.5 * (fleft + fright)   // unusual, but possible; no preference
+		: fleft + (t - tleft) * (fright - fleft) / (tright - tleft);   // linear interpolation
 }
 
 double FormantTier_getBandwidthAtTime (FormantTier me, int iformant, double t) {
-	long n = my points -> size;
+	long n = my points.size;
 	if (n == 0) return 0.0;
-	FormantPoint pointRight = (FormantPoint) my points -> item [1];
-	if (t <= pointRight -> time) {
+	FormantPoint pointRight = my points.at [1];
+	if (t <= pointRight -> number) {
 		if (iformant > pointRight -> numberOfFormants) return NUMundefined;
-		return pointRight -> bandwidth [iformant-1];   /* Constant extrapolation. */
+		return pointRight -> bandwidth [iformant-1];   // constant extrapolation
 	}
-	FormantPoint pointLeft = (FormantPoint) my points -> item [n];
-	if (t >= pointLeft -> time) {
+	FormantPoint pointLeft = my points.at [n];
+	if (t >= pointLeft -> number) {
 		if (iformant > pointLeft -> numberOfFormants) return NUMundefined;
-		return pointLeft -> bandwidth [iformant-1];   /* Constant extrapolation. */
+		return pointLeft -> bandwidth [iformant-1];   // constant extrapolation
 	}
 	Melder_assert (n >= 2);
-	long ileft = AnyTier_timeToLowIndex (me, t), iright = ileft + 1;
+	long ileft = AnyTier_timeToLowIndex (me->asAnyTier(), t), iright = ileft + 1;
 	Melder_assert (ileft >= 1 && iright <= n);
-	pointLeft = (FormantPoint) my points -> item [ileft];
-	pointRight = (FormantPoint) my points -> item [iright];
-	double tleft = pointLeft -> time;
+	pointLeft = my points.at [ileft];
+	pointRight = my points.at [iright];
+	double tleft = pointLeft -> number;
 	double fleft = iformant > pointLeft -> numberOfFormants ? NUMundefined : pointLeft -> bandwidth [iformant-1];
-	double tright = pointRight -> time;
+	double tright = pointRight -> number;
 	double fright = iformant > pointRight -> numberOfFormants ? NUMundefined : pointRight -> bandwidth [iformant-1];
 	return fleft == NUMundefined ? fright == NUMundefined ? NUMundefined : fright
 		: fright == NUMundefined ? fleft
-		: t == tright ? fright   /* Be very accurate. */
-		: tleft == tright ? 0.5 * (fleft + fright)   /* Unusual, but possible; no preference. */
-		: fleft + (t - tleft) * (fright - fleft) / (tright - tleft);   /* Linear interpolation. */
+		: t == tright ? fright   // be very accurate
+		: tleft == tright ? 0.5 * (fleft + fright)   // unusual, but possible; no preference
+		: fleft + (t - tleft) * (fright - fleft) / (tright - tleft);   // linear interpolation
 }
 
 void FormantTier_speckle (FormantTier me, Graphics g, double tmin, double tmax, double fmax, int garnish) {
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
 	Graphics_setWindow (g, tmin, tmax, 0.0, fmax);
 	Graphics_setInner (g);
-	long imin = AnyTier_timeToHighIndex (me, tmin);
-	long imax = AnyTier_timeToLowIndex (me, tmax);
+	long imin = AnyTier_timeToHighIndex (me->asAnyTier(), tmin);
+	long imax = AnyTier_timeToLowIndex (me->asAnyTier(), tmax);
 	if (imin > 0) for (long i = imin; i <= imax; i ++) {
-		FormantPoint point = (FormantPoint) my points -> item [i];
-		double t = point -> time;
+		FormantPoint point = my points.at [i];
+		double t = point -> number;
 		for (long j = 1; j <= point -> numberOfFormants; j ++) {
 			double f = point -> formant [j-1];
 			if (f <= fmax) Graphics_speckle (g, t, f);
@@ -150,14 +148,14 @@ void FormantTier_speckle (FormantTier me, Graphics g, double tmin, double tmax,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, TRUE, U"Time (s)");
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-		Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
-		Graphics_textLeft (g, TRUE, U"Frequency (Hz)");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Frequency (Hz)");
 	}
 }
 
-FormantTier Formant_downto_FormantTier (Formant me) {
+autoFormantTier Formant_downto_FormantTier (Formant me) {
 	try {
 		autoFormantTier thee = FormantTier_create (my xmin, my xmax);
 		for (long i = 1; i <= my nx; i ++) {
@@ -169,15 +167,15 @@ FormantTier Formant_downto_FormantTier (Formant me) {
 				point -> formant [j-1] = pair -> frequency;
 				point -> bandwidth [j-1] = pair -> bandwidth;
 			}
-			Collection_addItem (thy points, point.transfer());
+			thy points. addItem_move (point.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to FormantTier.");
 	}
 }
 
-FormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp) {
+autoFormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp) {
 	try {
 		autoFormantTier temp = Formant_downto_FormantTier (me);
 		autoFormantTier thee = FormantTier_create (pp -> xmin, pp -> xmax);
@@ -186,17 +184,17 @@ FormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp) {
 			autoFormantPoint point = FormantPoint_create (time);
 			long iformant = 1;
 			for (; iformant <= 10; iformant ++) {
-				double value = FormantTier_getValueAtTime (temp.peek(), iformant, time);
+				double value = FormantTier_getValueAtTime (temp.get(), iformant, time);
 				if (value == NUMundefined) break;
 				point -> formant [iformant-1] = value;
-				value = FormantTier_getBandwidthAtTime (temp.peek(), iformant, time);
+				value = FormantTier_getBandwidthAtTime (temp.get(), iformant, time);
 				Melder_assert (value != NUMundefined);
 				point -> bandwidth [iformant-1] = value;
 			}
 			point -> numberOfFormants = iformant - 1;
-			Collection_addItem (thy points, point.transfer());
+			thy points. addItem_move (point.move());
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", pp, U": not converted to FormantTier.");
 	}
@@ -204,8 +202,8 @@ FormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp) {
 
 int FormantTier_getMinNumFormants (FormantTier me) {
 	int minNumFormants = 10;
-	for (long ipoint = 1; ipoint <= my points -> size; ipoint ++) {
-		FormantPoint point = (FormantPoint) my points -> item [ipoint];
+	for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+		FormantPoint point = my points.at [ipoint];
 		if (point -> numberOfFormants < minNumFormants)
 			minNumFormants = point -> numberOfFormants;
 	}
@@ -214,41 +212,41 @@ int FormantTier_getMinNumFormants (FormantTier me) {
 
 int FormantTier_getMaxNumFormants (FormantTier me) {
 	int maxNumFormants = 0;
-	for (long ipoint = 1; ipoint <= my points -> size; ipoint ++) {
-		FormantPoint point = (FormantPoint) my points -> item [ipoint];
+	for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+		FormantPoint point = my points.at [ipoint];
 		if (point -> numberOfFormants > maxNumFormants)
 			maxNumFormants = point -> numberOfFormants;
 	}
 	return maxNumFormants;
 }
 	
-TableOfReal FormantTier_downto_TableOfReal (FormantTier me, int includeFormants, int includeBandwidths) {
+autoTableOfReal FormantTier_downto_TableOfReal (FormantTier me, int includeFormants, int includeBandwidths) {
 	try {
 		int maximumNumberOfFormants = FormantTier_getMaxNumFormants (me);
-		autoTableOfReal thee = TableOfReal_create (my points -> size, 1 +
+		autoTableOfReal thee = TableOfReal_create (my points.size, 1 +
 			( includeFormants ? maximumNumberOfFormants : 0 ) +
 			( includeBandwidths ? maximumNumberOfFormants : 0 ));
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"Time");
+		TableOfReal_setColumnLabel (thee.get(), 1, U"Time");
 		for (long icol = 1, iformant = 1; iformant <= maximumNumberOfFormants; iformant ++) {
 			char32 label [4];
 			if (includeFormants) {
 				Melder_sprint (label,4, U"F", iformant);
-				TableOfReal_setColumnLabel (thee.peek(), ++ icol, label);
+				TableOfReal_setColumnLabel (thee.get(), ++ icol, label);
 			}
 			if (includeBandwidths) {
 				Melder_sprint (label,4, U"B", iformant);
-				TableOfReal_setColumnLabel (thee.peek(), ++ icol, label);
+				TableOfReal_setColumnLabel (thee.get(), ++ icol, label);
 			}
 		}
-		for (long ipoint = 1; ipoint <= my points -> size; ipoint ++) {
-			FormantPoint point = (FormantPoint) my points -> item [ipoint];
-			thy data [ipoint] [1] = point -> time;
+		for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+			FormantPoint point = my points.at [ipoint];
+			thy data [ipoint] [1] = point -> number;
 			for (long icol = 1, iformant = 1; iformant <= maximumNumberOfFormants; iformant ++) {
 				if (includeFormants) thy data [ipoint] [++ icol] = point -> formant [iformant-1];
 				if (includeBandwidths) thy data [ipoint] [++ icol] = point -> bandwidth [iformant-1];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
@@ -256,7 +254,7 @@ TableOfReal FormantTier_downto_TableOfReal (FormantTier me, int includeFormants,
 
 void Sound_FormantTier_filter_inline (Sound me, FormantTier formantTier) {
 	double dt = my dx;
-	if (formantTier -> points -> size) for (long iformant = 1; iformant <= 10; iformant ++) {
+	if (formantTier -> points.size) for (long iformant = 1; iformant <= 10; iformant ++) {
 		for (long isamp = 1; isamp <= my nx; isamp ++) {
 			double t = my x1 + (isamp - 1) * my dx;
 			/*
@@ -269,7 +267,7 @@ void Sound_FormantTier_filter_inline (Sound me, FormantTier formantTier) {
 				double cosomdt = cos (2 * NUMpi * formant * dt);
 				double r = exp (- NUMpi * bandwidth * dt);
 				/* Formants at 0 Hz or the Nyquist are single poles, others are double poles. */
-				if (fabs (cosomdt) > 0.999999) {   /* Allow for round-off errors. */
+				if (fabs (cosomdt) > 0.999999) {   // allow for round-off errors
 					/* single pole: D(z) = 1 - r z^-1 */
 					for (long channel = 1; channel <= my ny; channel ++) {
 						if (isamp > 1) my z [channel] [isamp] += r * my z [channel] [isamp - 1];
@@ -288,22 +286,22 @@ void Sound_FormantTier_filter_inline (Sound me, FormantTier formantTier) {
 	}
 }
 
-Sound Sound_FormantTier_filter (Sound me, FormantTier formantTier) {
+autoSound Sound_FormantTier_filter (Sound me, FormantTier formantTier) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_FormantTier_filter_inline (thee.peek(), formantTier);
-		Vector_scale (thee.peek(), 0.99);
-		return thee.transfer();
+		Sound_FormantTier_filter_inline (thee.get(), formantTier);
+		Vector_scale (thee.get(), 0.99);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formantTier, U".");
 	}
 }
 
-Sound Sound_FormantTier_filter_noscale (Sound me, FormantTier formantTier) {
+autoSound Sound_FormantTier_filter_noscale (Sound me, FormantTier formantTier) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_FormantTier_filter_inline (thee.peek(), formantTier);
-		return thee.transfer();
+		Sound_FormantTier_filter_inline (thee.get(), formantTier);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered with ", formantTier, U".");
 	}
diff --git a/fon/FormantTier.h b/fon/FormantTier.h
index 354997d..c197d47 100644
--- a/fon/FormantTier.h
+++ b/fon/FormantTier.h
@@ -2,46 +2,44 @@
 #define _FormantTier_h_
 /* FormantTier.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointProcess.h"
 #include "Formant.h"
 #include "TableOfReal.h"
 #include "Sound.h"
+#include "AnyTier.h"
 
 #include "FormantTier_def.h"
-oo_CLASS_CREATE (FormantPoint, Data);
-oo_CLASS_CREATE (FormantTier, Function);
 
-FormantPoint FormantPoint_create (double time);
-FormantTier FormantTier_create (double tmin, double tmax);
+autoFormantPoint FormantPoint_create (double time);
+autoFormantTier FormantTier_create (double tmin, double tmax);
 double FormantTier_getValueAtTime (FormantTier me, int iformant, double t);
 double FormantTier_getBandwidthAtTime (FormantTier me, int iformant, double t);
 int FormantTier_getMinNumFormants (FormantTier me);
 int FormantTier_getMaxNumFormants (FormantTier me);
 void FormantTier_speckle (FormantTier me, Graphics g, double tmin, double tmax, double fmax, int garnish);
-FormantTier Formant_downto_FormantTier (Formant me);
-FormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp);
-TableOfReal FormantTier_downto_TableOfReal (FormantTier me, int includeFormants, int includeBandwidths);
+autoFormantTier Formant_downto_FormantTier (Formant me);
+autoFormantTier Formant_PointProcess_to_FormantTier (Formant me, PointProcess pp);
+autoTableOfReal FormantTier_downto_TableOfReal (FormantTier me, int includeFormants, int includeBandwidths);
 
 void Sound_FormantTier_filter_inline (Sound me, FormantTier formantTier);
-Sound Sound_FormantTier_filter (Sound me, FormantTier formantTier);
-Sound Sound_FormantTier_filter_noscale (Sound me, FormantTier formantTier);
+autoSound Sound_FormantTier_filter (Sound me, FormantTier formantTier);
+autoSound Sound_FormantTier_filter_noscale (Sound me, FormantTier formantTier);
 
 /* End of file FormantTier.h */
 #endif
diff --git a/fon/FormantTier_def.h b/fon/FormantTier_def.h
index 364e42d..5ccc252 100644
--- a/fon/FormantTier_def.h
+++ b/fon/FormantTier_def.h
@@ -1,27 +1,25 @@
 /* FormantTier_def.h
  *
- * Copyright (C) 1992-2002 Paul Boersma
+ * Copyright (C) 1992-2002,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT FormantPoint
-oo_DEFINE_CLASS (FormantPoint, Data)
+oo_DEFINE_CLASS (FormantPoint, AnyPoint)
 
-	oo_DOUBLE (time)   /* AnyPoint */
 	oo_INT (numberOfFormants)
 	oo_DOUBLE_ARRAY (formant, 10, numberOfFormants)
 	oo_DOUBLE_ARRAY (bandwidth, 10, numberOfFormants)
@@ -31,9 +29,13 @@ oo_END_CLASS (FormantPoint)
 
 
 #define ooSTRUCT FormantTier
-oo_DEFINE_CLASS (FormantTier, Function)
+oo_DEFINE_CLASS (FormantTier, Function)   // a kind of AnyTier though
 
-	oo_COLLECTION (SortedSetOfDouble, points, FormantPoint, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, points, FormantPoint, 0)
+
+	#if oo_DECLARING
+		AnyTier_METHODS
+	#endif
 
 oo_END_CLASS (FormantTier)
 #undef ooSTRUCT
diff --git a/fon/Formant_def.h b/fon/Formant_def.h
index 4f2b7b1..756cbbe 100644
--- a/fon/Formant_def.h
+++ b/fon/Formant_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2002,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/FujisakiPitch.cpp b/fon/FujisakiPitch.cpp
index a4bd13d..9e07c37 100644
--- a/fon/FujisakiPitch.cpp
+++ b/fon/FujisakiPitch.cpp
@@ -1,26 +1,19 @@
 /* FujisakiPitch.cpp
  *
- * Copyright (C) 2002-2011,2015 Paul Boersma
+ * Copyright (C) 2002-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2007/10/01 can write as encoding
- * pb 2011/05/27 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FujisakiPitch.h"
@@ -46,12 +39,12 @@
 
 Thing_implement (FujisakiCommand, Function, 0);
 
-FujisakiCommand FujisakiCommand_create (double tmin, double tmax, double amplitude) {
+autoFujisakiCommand FujisakiCommand_create (double tmin, double tmax, double amplitude) {
 	try {
 		autoFujisakiCommand me = Thing_new (FujisakiCommand);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my amplitude = amplitude;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Fujisaki command not created.");
 	}
@@ -59,30 +52,26 @@ FujisakiCommand FujisakiCommand_create (double tmin, double tmax, double amplitu
 
 Thing_implement (FujisakiPitch, Function, 0);
 
-FujisakiPitch FujisakiPitch_create (double tmin, double tmax,
+autoFujisakiPitch FujisakiPitch_create (double tmin, double tmax,
 	double baseFrequency, double alpha, double beta, double gamma)
 {
 	try {
 		autoFujisakiPitch me = Thing_new (FujisakiPitch);
-		Function_init (me.peek(), tmin, tmax);
+		Function_init (me.get(), tmin, tmax);
 		my baseFrequency = baseFrequency;
 		my alpha = alpha;
 		my beta = beta;
 		my gamma = gamma;
-		my phraseCommands = SortedSetOfDouble_create ();
-		my accentCommands = SortedSetOfDouble_create ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"FujisakiPitch not created.");
 	}
 }
 
-FujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double timeResolution,
-	FujisakiPitch *intermediate1, FujisakiPitch *intermediate2, FujisakiPitch *intermediate3)
+autoFujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double /* timeResolution */,
+	autoFujisakiPitch *intermediate1, autoFujisakiPitch *intermediate2, autoFujisakiPitch *intermediate3)
 {
-	(void) timeResolution;
 	try {
-
 		autoFujisakiPitch thee = FujisakiPitch_create (my xmin, my xmax, 0, 0, 0, gamma);
 		/*
 		 * Get phrase commands.
@@ -92,9 +81,9 @@ FujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double timeResolut
 			double offsetTime = /* ... */ 3.0;
 			double amplitude = /* ... */ 1.0;
 			autoFujisakiCommand phraseCommand = FujisakiCommand_create (onsetTime, offsetTime, amplitude);
-			Collection_addItem (thy phraseCommands, phraseCommand.transfer());
+			thy phraseCommands. addItem_move (phraseCommand.move());
 		}
-		if (intermediate1) *intermediate1 = Data_copy (thee.peek());
+		if (intermediate1) *intermediate1 = Data_copy (thee.get());
 		/*
 		 * Get accent commands.
 		 */
@@ -103,26 +92,26 @@ FujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double timeResolut
 			double offsetTime = /* ... */ 3.0;
 			double amplitude = /* ... */ 1.0;
 			autoFujisakiCommand accentCommand = FujisakiCommand_create (onsetTime, offsetTime, amplitude);
-			Collection_addItem (thy accentCommands, accentCommand.transfer());
+			thy accentCommands. addItem_move (accentCommand.move());
 		}
-		if (intermediate2) *intermediate2 = Data_copy (thee.peek());
+		if (intermediate2) *intermediate2 = Data_copy (thee.get());
 		/*
 		 * Do some extra processing.
 		 */
 		/* ... */
-		if (intermediate3) *intermediate3 = Data_copy (thee.peek());
+		if (intermediate3) *intermediate3 = Data_copy (thee.get());
 		/*
 		 * Tidy up.
 		 */
-		for (long i = 1; i <= thy phraseCommands -> size; i ++) {
-			FujisakiCommand phraseCommand = (FujisakiCommand) thy phraseCommands -> item [i];
+		for (long i = 1; i <= thy phraseCommands.size; i ++) {
+			FujisakiCommand phraseCommand = thy phraseCommands.at [i];
 			/* ... */
 		}
-		for (long i = 1; i <= thy accentCommands -> size; i ++) {
-			FujisakiCommand accentCommand = (FujisakiCommand) thy accentCommands -> item [i];
+		for (long i = 1; i <= thy accentCommands.size; i ++) {
+			FujisakiCommand accentCommand = thy accentCommands.at [i];
 			/* ... */
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to FujisakiPitch.");
 	}
diff --git a/fon/FujisakiPitch.h b/fon/FujisakiPitch.h
index 2df4681..9191db8 100644
--- a/fon/FujisakiPitch.h
+++ b/fon/FujisakiPitch.h
@@ -2,37 +2,34 @@
 #define _FujisakiPitch_h_
 /* FujisakiPitch.h
  *
- * Copyright (C) 2002-2011 Paul Boersma
+ * Copyright (C) 2002-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
 #include "Collection.h"
 
 #include "FujisakiPitch_def.h"
-oo_CLASS_CREATE (FujisakiCommand, Function);
-oo_CLASS_CREATE (FujisakiPitch, Function);
 
-FujisakiCommand FujisakiCommand_create (double tmin, double tmax, double amplitude);
+autoFujisakiCommand FujisakiCommand_create (double tmin, double tmax, double amplitude);
 
-FujisakiPitch FujisakiPitch_create (double tmin, double tmax,
+autoFujisakiPitch FujisakiPitch_create (double tmin, double tmax,
 	double baseFrequency, double alpha, double beta, double gamma);
 
-FujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double timeResolution,
-	FujisakiPitch *intermediate1, FujisakiPitch *intermediate2, FujisakiPitch *intermediate3);
+autoFujisakiPitch Pitch_to_FujisakiPitch (Pitch me, double gamma, double timeResolution,
+	autoFujisakiPitch *intermediate1, autoFujisakiPitch *intermediate2, autoFujisakiPitch *intermediate3);
 
 /* End of file FujisakiPitch.h */
 #endif
diff --git a/fon/FujisakiPitch_def.h b/fon/FujisakiPitch_def.h
index 8409571..773f87e 100644
--- a/fon/FujisakiPitch_def.h
+++ b/fon/FujisakiPitch_def.h
@@ -2,24 +2,18 @@
  *
  * Copyright (C) 2002 Paul Boersma & Hansjoerg Mixdorff
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/05/18
- * pb 2002/07/16 GPL
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -39,8 +33,8 @@ oo_DEFINE_CLASS (FujisakiPitch, Function)
 	oo_DOUBLE (alpha)
 	oo_DOUBLE (beta)
 	oo_DOUBLE (gamma)
-	oo_COLLECTION (SortedSetOfDouble, phraseCommands, FujisakiCommand, 0)
-	oo_COLLECTION (SortedSetOfDouble, accentCommands, FujisakiCommand, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, phraseCommands, FujisakiCommand, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, accentCommands, FujisakiCommand, 0)
 
 oo_END_CLASS (FujisakiPitch)
 #undef ooSTRUCT
diff --git a/fon/Function.cpp b/fon/Function.cpp
index 14e5b33..818e6a0 100644
--- a/fon/Function.cpp
+++ b/fon/Function.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Function.h"
@@ -38,7 +37,7 @@
 #include "oo_DESCRIPTION.h"
 #include "Function_def.h"
 
-Thing_implement (Function, Data, 0);
+Thing_implement (Function, Daata, 0);
 
 void structFunction :: v_info () {
 	Function_Parent :: v_info ();
diff --git a/fon/Function.h b/fon/Function.h
index bf65991..ef02122 100644
--- a/fon/Function.h
+++ b/fon/Function.h
@@ -4,25 +4,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
 #include "Function_def.h"
-oo_CLASS_CREATE (Function, Data);
 
 /*
 	An object of type Function represents a function f (x, ...) on the domain [xmin, xmax] * ....
diff --git a/fon/FunctionEditor.cpp b/fon/FunctionEditor.cpp
index d9245d5..7ae96a7 100644
--- a/fon/FunctionEditor.cpp
+++ b/fon/FunctionEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -61,15 +60,14 @@ static int group_equalDomain (double tmin, double tmax) {
 
 static void updateScrollBar (FunctionEditor me) {
 /* We cannot call this immediately after creation. */
-	double slider_size = (my d_endWindow - my d_startWindow) / (my tmax - my tmin) * maximumScrollBarValue - 1;
-	double increment, page_increment;
-	double value = (my d_startWindow - my tmin) / (my tmax - my tmin) * maximumScrollBarValue + 1;
-	if (slider_size < 1) slider_size = 1;
+	double slider_size = (my d_endWindow - my d_startWindow) / (my tmax - my tmin) * maximumScrollBarValue - 1.0;
+	double value = (my d_startWindow - my tmin) / (my tmax - my tmin) * maximumScrollBarValue + 1.0;
+	if (slider_size < 1.0) slider_size = 1.0;
 	if (value > maximumScrollBarValue - slider_size)
 		value = maximumScrollBarValue - slider_size;
-	if (value < 1) value = 1;
-	increment = slider_size / SCROLL_INCREMENT_FRACTION + 1;
-	page_increment = RELATIVE_PAGE_INCREMENT * slider_size + 1;
+	if (value < 1.0) value = 1.0;
+	double increment = slider_size / SCROLL_INCREMENT_FRACTION + 1.0;
+	double page_increment = RELATIVE_PAGE_INCREMENT * slider_size + 1.0;
 	GuiScrollBar_set (my scrollBar, NUMundefined, maximumScrollBarValue, value, slider_size, increment, page_increment);
 }
 
@@ -85,7 +83,7 @@ static void updateGroup (FunctionEditor me) {
 		thy d_endSelection = my d_endSelection;
 		FunctionEditor_updateText (thee);
 		updateScrollBar (thee);
-		Graphics_updateWs (thy d_graphics);
+		Graphics_updateWs (thy d_graphics.get());
 	}
 }
 
@@ -186,34 +184,34 @@ static void drawNow (FunctionEditor me) {
 	/*
 	 * Be responsive: update the markers now.
 	 */
-	Graphics_setViewport (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
-	Graphics_setWindow (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
-	Graphics_setColour (my d_graphics, Graphics_WINDOW_BACKGROUND_COLOUR);
-	Graphics_fillRectangle (my d_graphics, my functionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, my height - (TOP_MARGIN + space), my height);
-	Graphics_fillRectangle (my d_graphics, my functionViewerLeft, my functionViewerLeft + MARGIN, BOTTOM_MARGIN + ( leftFromWindow ? space * 2 : 0 ), my height);
-	Graphics_fillRectangle (my d_graphics, my functionViewerRight - MARGIN, my functionViewerRight, BOTTOM_MARGIN + ( rightFromWindow ? space * 2 : 0 ), my height);
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0.0, my height);
+	Graphics_setWindow (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0.0, my height);
+	Graphics_setColour (my d_graphics.get(), Graphics_WINDOW_BACKGROUND_COLOUR);
+	Graphics_fillRectangle (my d_graphics.get(), my functionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, my height - (TOP_MARGIN + space), my height);
+	Graphics_fillRectangle (my d_graphics.get(), my functionViewerLeft, my functionViewerLeft + MARGIN, BOTTOM_MARGIN + ( leftFromWindow ? space * 2 : 0 ), my height);
+	Graphics_fillRectangle (my d_graphics.get(), my functionViewerRight - MARGIN, my functionViewerRight, BOTTOM_MARGIN + ( rightFromWindow ? space * 2 : 0 ), my height);
 	if (my p_showSelectionViewer) {
-		Graphics_setViewport (my d_graphics, my selectionViewerLeft, my selectionViewerRight, 0, my height);
-		Graphics_setWindow (my d_graphics, my selectionViewerLeft, my selectionViewerRight, 0, my height);
-		Graphics_fillRectangle (my d_graphics, my selectionViewerLeft, my selectionViewerLeft + MARGIN, BOTTOM_MARGIN, my height);
-		Graphics_fillRectangle (my d_graphics, my selectionViewerRight - MARGIN, my selectionViewerRight, BOTTOM_MARGIN, my height);
-		Graphics_fillRectangle (my d_graphics, my selectionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, 0, BOTTOM_MARGIN + space * 3);
+		Graphics_setViewport (my d_graphics.get(), my selectionViewerLeft, my selectionViewerRight, 0.0, my height);
+		Graphics_setWindow (my d_graphics.get(), my selectionViewerLeft, my selectionViewerRight, 0.0, my height);
+		Graphics_fillRectangle (my d_graphics.get(), my selectionViewerLeft, my selectionViewerLeft + MARGIN, BOTTOM_MARGIN, my height);
+		Graphics_fillRectangle (my d_graphics.get(), my selectionViewerRight - MARGIN, my selectionViewerRight, BOTTOM_MARGIN, my height);
+		Graphics_fillRectangle (my d_graphics.get(), my selectionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, 0, BOTTOM_MARGIN + space * 3);
 	}
-	Graphics_setGrey (my d_graphics, 0.0);
+	Graphics_setGrey (my d_graphics.get(), 0.0);
 	#if defined (macintosh)
-		Graphics_line (my d_graphics, my functionViewerLeft, 2, my selectionViewerRight, 2);
-		Graphics_line (my d_graphics, my functionViewerLeft, my height - 2, my selectionViewerRight, my height - 2);
+		Graphics_line (my d_graphics.get(), my functionViewerLeft, 2.0, my selectionViewerRight, 2.0);
+		Graphics_line (my d_graphics.get(), my functionViewerLeft, my height - 2.0, my selectionViewerRight, my height - 2.0);
 	#endif
 
-	Graphics_setViewport (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
-	Graphics_setWindow (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
-	Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0.0, my height);
+	Graphics_setWindow (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0.0, my height);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
 	for (int i = 0; i < 8; i ++) {
 		double left = my rect [i]. left, right = my rect [i]. right;
 		if (left < right)
-			Graphics_button (my d_graphics, left, right, my rect [i]. bottom, my rect [i]. top);
+			Graphics_button (my d_graphics.get(), left, right, my rect [i]. bottom, my rect [i]. top);
 	}
-	verticalCorrection = my height / (my height - 111 + 11.0);
+	verticalCorrection = my height / (my height - 111.0 + 11.0);
 	#ifdef _WIN32
 		verticalCorrection *= 1.5;
 	#endif
@@ -229,70 +227,70 @@ static void drawNow (FunctionEditor me) {
 					/*
 					 * Window domain text.
 					 */	
-					Graphics_setColour (my d_graphics, Graphics_BLUE);
-					Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_HALF);
-					Graphics_text (my d_graphics, left, 0.5 * (bottom + top) - verticalCorrection, Melder_fixed (my d_startWindow, my v_fixedPrecision_long ()));
-					Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-					Graphics_text (my d_graphics, right, 0.5 * (bottom + top) - verticalCorrection, Melder_fixed (my d_endWindow, my v_fixedPrecision_long ()));
-					Graphics_setColour (my d_graphics, Graphics_BLACK);
-					Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
+					Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+					Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+					Graphics_text (my d_graphics.get(), left, 0.5 * (bottom + top) - verticalCorrection, Melder_fixed (my d_startWindow, my v_fixedPrecision_long ()));
+					Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+					Graphics_text (my d_graphics.get(), right, 0.5 * (bottom + top) - verticalCorrection, Melder_fixed (my d_endWindow, my v_fixedPrecision_long ()));
+					Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+					Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
 				break;
 				case 2: value = my d_startWindow - my tmin; break;
 				case 3: value = my tmax - my d_endWindow; break;
 				case 4: value = my marker [1] - my d_startWindow; break;
 				case 5: value = my marker [2] - my marker [1]; break;
 				case 6: value = my marker [3] - my marker [2]; break;
-				case 7: format = my v_format_selection (), value = my d_endSelection - my d_startSelection, inverseValue = 1 / value; break;
+				case 7: format = my v_format_selection (), value = my d_endSelection - my d_startSelection, inverseValue = 1.0 / value; break;
 			}
 			char text8 [100];
 			snprintf (text8, 100, format, value, inverseValue);
 			autostring32 text = Melder_8to32 (text8);
-			if (Graphics_textWidth (my d_graphics, text.peek()) < right - left) {
-				Graphics_text (my d_graphics, 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
+			if (Graphics_textWidth (my d_graphics.get(), text.peek()) < right - left) {
+				Graphics_text (my d_graphics.get(), 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
 			} else if (format == my v_format_long ()) {
 				snprintf (text8, 100, my v_format_short (), value);
 				text.reset (Melder_8to32 (text8));
-				if (Graphics_textWidth (my d_graphics, text.peek()) < right - left)
-					Graphics_text (my d_graphics, 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
+				if (Graphics_textWidth (my d_graphics.get(), text.peek()) < right - left)
+					Graphics_text (my d_graphics.get(), 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
 			} else {
 				snprintf (text8, 100, my v_format_long (), value);
 				text.reset (Melder_8to32 (text8));
-				if (Graphics_textWidth (my d_graphics, text.peek()) < right - left) {
-						Graphics_text (my d_graphics, 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
+				if (Graphics_textWidth (my d_graphics.get(), text.peek()) < right - left) {
+						Graphics_text (my d_graphics.get(), 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
 				} else {
 					snprintf (text8, 100, my v_format_short (), my d_endSelection - my d_startSelection);
 					text.reset (Melder_8to32 (text8));
-					if (Graphics_textWidth (my d_graphics, text.peek()) < right - left)
-						Graphics_text (my d_graphics, 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
+					if (Graphics_textWidth (my d_graphics.get(), text.peek()) < right - left)
+						Graphics_text (my d_graphics.get(), 0.5 * (left + right), 0.5 * (bottom + top) - verticalCorrection, text.peek());
 				}
 			}
 		}
 	}
 
-	Graphics_setViewport (my d_graphics, my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, 0, my height);
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, 0, my height);
-	/*Graphics_setColour (my d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my d_graphics, my d_startWindow, my d_endWindow, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));*/
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_rectangle (my d_graphics, my d_startWindow, my d_endWindow, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, 0.0, my height);
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, 0.0, my height);
+	/*Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my d_graphics.get(), my d_startWindow, my d_endWindow, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));*/
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (my d_graphics.get(), my d_startWindow, my d_endWindow, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
 
 	/*
 	 * Red marker text.
 	 */
-	Graphics_setColour (my d_graphics, Graphics_RED);
+	Graphics_setColour (my d_graphics.get(), Graphics_RED);
 	if (cursorVisible) {
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (my d_graphics, my d_startSelection, my height - (TOP_MARGIN + space) - verticalCorrection, Melder_fixed (my d_startSelection, my v_fixedPrecision_long ()));
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_BOTTOM);
+		Graphics_text (my d_graphics.get(), my d_startSelection, my height - (TOP_MARGIN + space) - verticalCorrection, Melder_fixed (my d_startSelection, my v_fixedPrecision_long ()));
 	}
 	if (beginVisible && selection) {
-		Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-		Graphics_text (my d_graphics, my d_startSelection, my height - (TOP_MARGIN + space/2) - verticalCorrection, Melder_fixed (my d_startSelection, my v_fixedPrecision_long ()));
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), my d_startSelection, my height - (TOP_MARGIN + space/2) - verticalCorrection, Melder_fixed (my d_startSelection, my v_fixedPrecision_long ()));
 	}
 	if (endVisible && selection) {
-		Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_HALF);
-		Graphics_text (my d_graphics, my d_endSelection, my height - (TOP_MARGIN + space/2) - verticalCorrection, Melder_fixed (my d_endSelection, my v_fixedPrecision_long ()));
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), my d_endSelection, my height - (TOP_MARGIN + space/2) - verticalCorrection, Melder_fixed (my d_endSelection, my v_fixedPrecision_long ()));
 	}
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 
 	/*
 	 * To reduce flashing, give our descendants the opportunity to prepare their data.
@@ -302,26 +300,26 @@ static void drawNow (FunctionEditor me) {
 	/*
 	 * Start of inner drawing.
 	 */
-	Graphics_setViewport (my d_graphics, my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
 
 	my v_draw ();
-	Graphics_setViewport (my d_graphics, my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
 
 	/*
 	 * Red dotted marker lines.
 	 */
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, 0.0, 1.0);
-	Graphics_setColour (my d_graphics, Graphics_RED);
-	Graphics_setLineType (my d_graphics, Graphics_DOTTED);
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_RED);
+	Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
 	double bottom = my v_getBottomOfSoundAndAnalysisArea ();
 	if (cursorVisible)
-		Graphics_line (my d_graphics, my d_startSelection, bottom, my d_startSelection, 1.0);
+		Graphics_line (my d_graphics.get(), my d_startSelection, bottom, my d_startSelection, 1.0);
 	if (beginVisible)
-		Graphics_line (my d_graphics, my d_startSelection, bottom, my d_startSelection, 1.0);
+		Graphics_line (my d_graphics.get(), my d_startSelection, bottom, my d_startSelection, 1.0);
 	if (endVisible)
-		Graphics_line (my d_graphics, my d_endSelection, bottom, my d_endSelection, 1.0);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_setLineType (my d_graphics, Graphics_DRAWN);
+		Graphics_line (my d_graphics.get(), my d_endSelection, bottom, my d_endSelection, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
 
 	/*
 	 * Highlight selection.
@@ -337,20 +335,20 @@ static void drawNow (FunctionEditor me) {
 	 * Draw the selection part.
 	 */
 	if (my p_showSelectionViewer) {
-		Graphics_setViewport (my d_graphics, my selectionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
+		Graphics_setViewport (my d_graphics.get(), my selectionViewerLeft + MARGIN, my selectionViewerRight - MARGIN, BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
 		my v_drawSelectionViewer ();
 	}
 
 	/*
 	 * End of inner drawing.
 	 */
-	Graphics_flushWs (my d_graphics);
-	Graphics_setViewport (my d_graphics, my functionViewerLeft, my selectionViewerRight, 0, my height);
+	Graphics_flushWs (my d_graphics.get());
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft, my selectionViewerRight, 0.0, my height);
 }
 
 /********** METHODS **********/
 
-void structFunctionEditor :: v_destroy () {
+void structFunctionEditor :: v_destroy () noexcept {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	if (our group) {   // undangle
 		int i = 1;
@@ -358,10 +356,9 @@ void structFunctionEditor :: v_destroy () {
 			Melder_assert (i < maxGroup);
 			i ++;
 		}
-		theGroup [i] = NULL;
+		theGroup [i] = nullptr;
 		nGroup --;
 	}
-	forget (our d_graphics);
 	FunctionEditor_Parent :: v_destroy ();
 }
 
@@ -379,22 +376,21 @@ void structFunctionEditor :: v_info () {
 
 /********** FILE MENU **********/
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (FunctionEditor);
-	if (my d_graphics == NULL) return;   // Could be the case in the very beginning.
-	Graphics_setWsViewport (my d_graphics, 0, event -> width, 0, event -> height);
+static void gui_drawingarea_cb_resize (FunctionEditor me, GuiDrawingArea_ResizeEvent event) {
+	if (! my d_graphics) return;   // could be the case in the very beginning
+	Graphics_setWsViewport (my d_graphics.get(), 0, event -> width, 0, event -> height);
 	int width = event -> width + 21;
 	/*
 	 * Put the function viewer at the left and the selection viewer at the right.
 	 */
 	my functionViewerLeft = 0;
-	my functionViewerRight = my p_showSelectionViewer ? (short) floor (width * (2.0/3)) : width;
+	my functionViewerRight = my p_showSelectionViewer ? (short) floor (width * (2.0/3.0)) : width;
 	my selectionViewerLeft = my functionViewerRight;
 	my selectionViewerRight = width;
 	my height = event -> height + 111;
-	Graphics_setWsWindow (my d_graphics, 0, width, 0, my height);
-	Graphics_setViewport (my d_graphics, 0, width, 0, my height);
-	Graphics_updateWs (my d_graphics);
+	Graphics_setWsWindow (my d_graphics.get(), 0.0, width, 0.0, my height);
+	Graphics_setViewport (my d_graphics.get(), 0.0, width, 0.0, my height);
+	Graphics_updateWs (my d_graphics.get());
 
 	/* Save the current shell size as the user's preference for a new FunctionEditor. */
 
@@ -402,9 +398,8 @@ static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
 	my pref_shellHeight () = GuiShell_getShellHeight (my d_windowForm);
 }
 
-static void menu_cb_preferences (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Preferences", 0)
+static void menu_cb_preferences (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Preferences", nullptr)
 		BOOLEAN (U"Synchronize zoom and scroll", my default_synchronizedZoomAndScroll ())
 		BOOLEAN (U"Show selection viewer", my default_showSelectionViewer ())
 		POSITIVE (Melder_cat (U"Arrow scroll step (", my v_format_units (), U")"), my default_arrowScrollStep ())
@@ -421,7 +416,7 @@ static void menu_cb_preferences (EDITOR_ARGS) {
 		my pref_showSelectionViewer () = my p_showSelectionViewer = GET_INTEGER (U"Show selection viewer");
 		my pref_arrowScrollStep () = my p_arrowScrollStep = GET_REAL (U"Arrow scroll step");
 		if (my p_showSelectionViewer != oldShowSelectionViewer) {
-			struct structGuiDrawingAreaResizeEvent event = { my drawingArea, 0 };
+			struct structGuiDrawingArea_ResizeEvent event { my drawingArea, 0 };
 			event. width  = GuiControl_getWidth  (my drawingArea);
 			event. height = GuiControl_getHeight (my drawingArea);
 			gui_drawingarea_cb_resize (me, & event);
@@ -434,8 +429,8 @@ static void menu_cb_preferences (EDITOR_ARGS) {
 }
 
 void structFunctionEditor :: v_form_pictureSelection (EditorCommand cmd) {
-	BOOLEAN (U"Draw selection times", 1);
-	BOOLEAN (U"Draw selection hairs", 1);
+	BOOLEAN (U"Draw selection times", true);
+	BOOLEAN (U"Draw selection hairs", true);
 }
 void structFunctionEditor :: v_ok_pictureSelection (EditorCommand cmd) {
 	FunctionEditor me = (FunctionEditor) cmd -> d_editor;
@@ -450,28 +445,23 @@ void structFunctionEditor :: v_do_pictureSelection (EditorCommand cmd) {
 
 /********** QUERY MENU **********/
 
-static void menu_cb_getB (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_getB (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	Melder_informationReal (my d_startSelection, my v_format_units ());
 }
-static void menu_cb_getCursor (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_getCursor (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	Melder_informationReal (0.5 * (my d_startSelection + my d_endSelection), my v_format_units ());
 }
-static void menu_cb_getE (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_getE (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	Melder_informationReal (my d_endSelection, my v_format_units ());
 }
-static void menu_cb_getSelectionDuration (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_getSelectionDuration (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	Melder_informationReal (my d_endSelection - my d_startSelection, my v_format_units ());
 }
 
 /********** VIEW MENU **********/
 
-static void menu_cb_zoom (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Zoom", 0)
+static void menu_cb_zoom (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Zoom", nullptr)
 		REAL (U"From", U"0.0")
 		REAL (U"To", U"1.0")
 	EDITOR_OK
@@ -502,9 +492,7 @@ static void do_showAll (FunctionEditor me) {
 	}
 }
 
-static void gui_button_cb_showAll (I, GuiButtonEvent event) {
-	(void) event;
-	iam (FunctionEditor);
+static void gui_button_cb_showAll (FunctionEditor me, GuiButtonEvent /* event */) {
 	do_showAll (me);
 }
 
@@ -520,15 +508,13 @@ static void do_zoomIn (FunctionEditor me) {
 	}
 }
 
-static void gui_button_cb_zoomIn (I, GuiButtonEvent event) {
-	(void) event;
-	iam (FunctionEditor);
+static void gui_button_cb_zoomIn (FunctionEditor me, GuiButtonEvent /* event */) {
 	do_zoomIn (me);
 }
 
 static void do_zoomOut (FunctionEditor me) {
 	double shift = (my d_endWindow - my d_startWindow) / 2;
-	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);   /* Quickly, before window changes. */
+	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);   // quickly, before window changes
 	my d_startWindow -= shift;
 	if (my d_startWindow < my tmin + 1e-12)
 		my d_startWindow = my tmin;
@@ -543,9 +529,7 @@ static void do_zoomOut (FunctionEditor me) {
 	}
 }
 
-static void gui_button_cb_zoomOut (I, GuiButtonEvent event) {
-	(void) event;
-	iam (FunctionEditor);
+static void gui_button_cb_zoomOut (FunctionEditor me, GuiButtonEvent /*event*/) {
 	do_zoomOut (me);
 }
 
@@ -569,9 +553,7 @@ static void do_zoomToSelection (FunctionEditor me) {
 	}
 }
 
-static void gui_button_cb_zoomToSelection (I, GuiButtonEvent event) {
-	(void) event;
-	iam (FunctionEditor);
+static void gui_button_cb_zoomToSelection (FunctionEditor me, GuiButtonEvent /* event */) {
 	do_zoomToSelection (me);
 }
 
@@ -588,40 +570,32 @@ static void do_zoomBack (FunctionEditor me) {
 	}
 }
 
-static void gui_button_cb_zoomBack (I, GuiButtonEvent event) {
-	(void) event;
-	iam (FunctionEditor);
+static void gui_button_cb_zoomBack (FunctionEditor me, GuiButtonEvent /* event */) {
 	do_zoomBack (me);
 }
 
-static void menu_cb_showAll (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_showAll (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	do_showAll (me);
 }
 
-static void menu_cb_zoomIn (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_zoomIn (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	do_zoomIn (me);
 }
 
-static void menu_cb_zoomOut (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_zoomOut (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	do_zoomOut (me);
 }
 
-static void menu_cb_zoomToSelection (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_zoomToSelection (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	do_zoomToSelection (me);
 }
 
-static void menu_cb_zoomBack (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_zoomBack (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	do_zoomBack (me);
 }
 
-static void menu_cb_play (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Play", 0)
+static void menu_cb_play (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Play", nullptr)
 		REAL (U"From", U"0.0")
 		REAL (U"To", U"1.0")
 	EDITOR_OK
@@ -633,8 +607,7 @@ static void menu_cb_play (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_playOrStop (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_playOrStop (FunctionEditor me, EDITOR_ARGS_FORM) {
 	if (MelderAudio_isPlaying) {
 		MelderAudio_stopPlaying (MelderAudio_EXPLICIT);
 	} else if (my d_startSelection < my d_endSelection) {
@@ -649,23 +622,20 @@ static void menu_cb_playOrStop (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_playWindow (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_playWindow (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	my playingCursor = true;
 	my v_play (my d_startWindow, my d_endWindow);
 }
 
-static void menu_cb_interruptPlaying (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_interruptPlaying (FunctionEditor /* me */, EDITOR_ARGS_DIRECT) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 }
 
 /********** SELECT MENU **********/
 
-static void menu_cb_select (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Select", 0)
+static void menu_cb_select (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Select", nullptr)
 		REAL (U"Start of selection", U"0.0")
 		REAL (U"End of selection", U"1.0")
 	EDITOR_OK
@@ -689,25 +659,22 @@ static void menu_cb_select (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_moveCursorToB (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveCursorToB (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_endSelection = my d_startSelection;
 	my v_updateText ();
 	/*Graphics_updateWs (my d_graphics);*/ drawNow (me);
 	updateGroup (me);
 }
 
-static void menu_cb_moveCursorToE (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveCursorToE (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_startSelection = my d_endSelection;
 	my v_updateText ();
 	/*Graphics_updateWs (my d_graphics);*/ drawNow (me);
 	updateGroup (me);
 }
 
-static void menu_cb_moveCursorTo (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Move cursor to", 0)
+static void menu_cb_moveCursorTo (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Move cursor to", nullptr)
 		REAL (U"Position", U"0.0")
 	EDITOR_OK
 		SET_REAL (U"Position", 0.5 * (my d_startSelection + my d_endSelection))
@@ -722,9 +689,8 @@ static void menu_cb_moveCursorTo (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_moveCursorBy (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Move cursor by", 0)
+static void menu_cb_moveCursorBy (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Move cursor by", nullptr)
 		REAL (U"Distance", U"0.05")
 	EDITOR_OK
 	EDITOR_DO
@@ -738,9 +704,8 @@ static void menu_cb_moveCursorBy (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_moveBby (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Move start of selection by", 0)
+static void menu_cb_moveBby (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Move start of selection by", nullptr)
 		REAL (U"Distance", U"0.05")
 	EDITOR_OK
 	EDITOR_DO
@@ -759,9 +724,8 @@ static void menu_cb_moveBby (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_moveEby (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
-	EDITOR_FORM (U"Move end of selection by", 0)
+static void menu_cb_moveEby (FunctionEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Move end of selection by", nullptr)
 		REAL (U"Distance", U"0.05")
 	EDITOR_OK
 	EDITOR_DO
@@ -802,13 +766,11 @@ void FunctionEditor_shift (FunctionEditor me, double shift, bool needsUpdateGrou
 	FunctionEditor_marksChanged (me, needsUpdateGroup);
 }
 
-static void menu_cb_pageUp (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_pageUp (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	FunctionEditor_shift (me, -RELATIVE_PAGE_INCREMENT * (my d_endWindow - my d_startWindow), true);
 }
 
-static void menu_cb_pageDown (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_pageDown (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	FunctionEditor_shift (me, +RELATIVE_PAGE_INCREMENT * (my d_endWindow - my d_startWindow), true);
 }
 
@@ -822,8 +784,7 @@ static void scrollToView (FunctionEditor me, double t) {
 	}
 }
 
-static void menu_cb_selectEarlier (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_selectEarlier (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_startSelection -= my p_arrowScrollStep;
 	if (my d_startSelection < my tmin + 1e-12)
 		my d_startSelection = my tmin;
@@ -833,8 +794,7 @@ static void menu_cb_selectEarlier (EDITOR_ARGS) {
 	scrollToView (me, 0.5 * (my d_startSelection + my d_endSelection));
 }
 
-static void menu_cb_selectLater (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_selectLater (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_startSelection += my p_arrowScrollStep;
 	if (my d_startSelection > my tmax - 1e-12)
 		my d_startSelection = my tmax;
@@ -844,16 +804,14 @@ static void menu_cb_selectLater (EDITOR_ARGS) {
 	scrollToView (me, 0.5 * (my d_startSelection + my d_endSelection));
 }
 
-static void menu_cb_moveBleft (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveBleft (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_startSelection -= my p_arrowScrollStep;
 	if (my d_startSelection < my tmin + 1e-12)
 		my d_startSelection = my tmin;
 	scrollToView (me, 0.5 * (my d_startSelection + my d_endSelection));
 }
 
-static void menu_cb_moveBright (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveBright (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_startSelection += my p_arrowScrollStep;
 	if (my d_startSelection > my tmax - 1e-12)
 		my d_startSelection = my tmax;
@@ -865,8 +823,7 @@ static void menu_cb_moveBright (EDITOR_ARGS) {
 	scrollToView (me, 0.5 * (my d_startSelection + my d_endSelection));
 }
 
-static void menu_cb_moveEleft (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveEleft (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_endSelection -= my p_arrowScrollStep;
 	if (my d_endSelection < my tmin + 1e-12)
 		my d_endSelection = my tmin;
@@ -878,8 +835,7 @@ static void menu_cb_moveEleft (EDITOR_ARGS) {
 	scrollToView (me, 0.5 * (my d_startSelection + my d_endSelection));
 }
 
-static void menu_cb_moveEright (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_moveEright (FunctionEditor me, EDITOR_ARGS_DIRECT) {
 	my d_endSelection += my p_arrowScrollStep;
 	if (my d_endSelection > my tmax - 1e-12)
 		my d_endSelection = my tmax;
@@ -888,13 +844,12 @@ static void menu_cb_moveEright (EDITOR_ARGS) {
 
 /********** GUI CALLBACKS **********/
 
-static void gui_cb_scroll (I, GuiScrollBarEvent event) {
-	iam (FunctionEditor);
-	if (my d_graphics == NULL) return;   // ignore events during creation
+static void gui_cb_scroll (FunctionEditor me, GuiScrollBarEvent event) {
+	if (! my d_graphics) return;   // ignore events during creation
 	double value = GuiScrollBar_getValue (event -> scrollBar);
 	double shift = my tmin + (value - 1) * (my tmax - my tmin) / maximumScrollBarValue - my d_startWindow;
 	bool shifted = shift != 0.0;
-	double oldSliderSize = (my d_endWindow - my d_startWindow) / (my tmax - my tmin) * maximumScrollBarValue - 1;
+	double oldSliderSize = (my d_endWindow - my d_startWindow) / (my tmax - my tmin) * maximumScrollBarValue - 1.0;
 	double newSliderSize = GuiScrollBar_getSliderSize (event -> scrollBar);
 	bool zoomed = newSliderSize != oldSliderSize;
 	#if ! cocoa
@@ -915,10 +870,10 @@ static void gui_cb_scroll (I, GuiScrollBarEvent event) {
 		my v_updateText ();
 		updateScrollBar (me);
 		#if cocoa
-			Graphics_updateWs (my d_graphics);
+			Graphics_updateWs (my d_graphics.get());
 		#else
-			/*Graphics_clearWs (my d_graphics);*/
-			drawNow (me);   /* Do not wait for expose event. */
+			/*Graphics_clearWs (my d_graphics.get());*/
+			drawNow (me);   // do not wait for expose event
 		#endif
 		if (! my group || ! my pref_synchronizedZoomAndScroll ()) return;
 		for (int i = 1; i <= maxGroup; i ++) if (theGroup [i] && theGroup [i] != me) {
@@ -927,25 +882,23 @@ static void gui_cb_scroll (I, GuiScrollBarEvent event) {
 			FunctionEditor_updateText (theGroup [i]);
 			updateScrollBar (theGroup [i]);
 			#if cocoa
-				Graphics_updateWs (theGroup [i] -> d_graphics);
+				Graphics_updateWs (theGroup [i] -> d_graphics.get());
 			#else
-				Graphics_clearWs (theGroup [i] -> d_graphics);
+				Graphics_clearWs (theGroup [i] -> d_graphics.get());
 				drawNow (theGroup [i]);
 			#endif
 		}
 	}
 }
 
-static void gui_checkbutton_cb_group (I, GuiCheckButtonEvent event) {
-	iam (FunctionEditor);
-	(void) event;
+static void gui_checkbutton_cb_group (FunctionEditor me, GuiCheckButtonEvent /* event */) {
 	int i;
 	my group = ! my group;
 	if (my group) {
 		FunctionEditor thee;
 		i = 1; while (theGroup [i]) i ++; theGroup [i] = me;
-		if (++ nGroup == 1) { Graphics_updateWs (my d_graphics); return; }
-		i = 1; while (theGroup [i] == NULL || theGroup [i] == me) i ++; thee = theGroup [i];
+		if (++ nGroup == 1) { Graphics_updateWs (my d_graphics.get()); return; }
+		i = 1; while (! theGroup [i] || theGroup [i] == me) i ++; thee = theGroup [i];
 		if (my pref_synchronizedZoomAndScroll ()) {
 			my d_startWindow = thy d_startWindow;
 			my d_endWindow = thy d_endWindow;
@@ -957,11 +910,11 @@ static void gui_checkbutton_cb_group (I, GuiCheckButtonEvent event) {
 			if (my tmax < thy tmax) my tmax = thy tmax;
 			my v_updateText ();
 			updateScrollBar (me);
-			Graphics_updateWs (my d_graphics);
+			Graphics_updateWs (my d_graphics.get());
 		} else {
 			my v_updateText ();
 			updateScrollBar (me);
-			Graphics_updateWs (my d_graphics);
+			Graphics_updateWs (my d_graphics.get());
 			if (my tmin < thy tmin || my tmax > thy tmax)
 				for (i = 1; i <= maxGroup; i ++) if (theGroup [i] && theGroup [i] != me) {
 					if (my tmin < thy tmin)
@@ -970,27 +923,26 @@ static void gui_checkbutton_cb_group (I, GuiCheckButtonEvent event) {
 						theGroup [i] -> tmax = my tmax;
 					FunctionEditor_updateText (theGroup [i]);
 					updateScrollBar (theGroup [i]);
-					Graphics_updateWs (theGroup [i] -> d_graphics);
+					Graphics_updateWs (theGroup [i] -> d_graphics.get());
 				}
 		}
 	} else {
-		i = 1; while (theGroup [i] != me) i ++; theGroup [i] = NULL;
+		i = 1; while (theGroup [i] != me) i ++; theGroup [i] = nullptr;
 		nGroup --;
 		my v_updateText ();
-		Graphics_updateWs (my d_graphics);   // for setting buttons in draw method
+		Graphics_updateWs (my d_graphics.get());   // for setting buttons in draw method
 	}
 	if (my group) updateGroup (me);
 }
 
-static void menu_cb_intro (EDITOR_ARGS) {
-	EDITOR_IAM (FunctionEditor);
+static void menu_cb_intro (FunctionEditor /* me */, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"Intro");
 }
 
 void structFunctionEditor :: v_createMenuItems_file (EditorMenu menu) {
 	FunctionEditor_Parent :: v_createMenuItems_file (menu);
 	EditorMenu_addCommand (menu, U"Preferences...", 0, menu_cb_preferences);
-	EditorMenu_addCommand (menu, U"-- after preferences --", 0, 0);
+	EditorMenu_addCommand (menu, U"-- after preferences --", 0, nullptr);
 }
 
 void structFunctionEditor :: v_createMenuItems_view_timeDomain (EditorMenu menu) {
@@ -1006,7 +958,7 @@ void structFunctionEditor :: v_createMenuItems_view_timeDomain (EditorMenu menu)
 }
 
 void structFunctionEditor :: v_createMenuItems_view_audio (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- play --", 0, 0);
+	EditorMenu_addCommand (menu, U"-- play --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Audio:", GuiMenu_INSENSITIVE, menu_cb_play /* dummy */);
 	EditorMenu_addCommand (menu, U"Play...", 0, menu_cb_play);
 	EditorMenu_addCommand (menu, U"Play or stop", GuiMenu_TAB, menu_cb_playOrStop);
@@ -1021,7 +973,7 @@ void structFunctionEditor :: v_createMenuItems_view (EditorMenu menu) {
 
 void structFunctionEditor :: v_createMenuItems_query (EditorMenu menu) {
 	FunctionEditor_Parent :: v_createMenuItems_query (menu);
-	EditorMenu_addCommand (menu, U"-- query selection --", 0, 0);
+	EditorMenu_addCommand (menu, U"-- query selection --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Get start of selection", 0, menu_cb_getB);
 	EditorMenu_addCommand (menu, U"Get begin of selection", Editor_HIDDEN, menu_cb_getB);
 	EditorMenu_addCommand (menu, U"Get cursor", GuiMenu_F6, menu_cb_getCursor);
@@ -1062,28 +1014,25 @@ void structFunctionEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"Intro", 0, menu_cb_intro);
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (FunctionEditor);
-	(void) event;
-	if (my d_graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_expose (FunctionEditor me, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! my d_graphics) return;   // could be the case in the very beginning
 	if (my enableUpdates)
 		drawNow (me);
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (FunctionEditor);
-	if (my d_graphics == NULL) return;   // Could be the case in the very beginning.
-	double xWC, yWC;
+static void gui_drawingarea_cb_click (FunctionEditor me, GuiDrawingArea_ClickEvent event) {
+	if (! my d_graphics) return;   // could be the case in the very beginning
 	my shiftKeyPressed = event -> shiftKeyPressed;
-	Graphics_setWindow (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
-	Graphics_DCtoWC (my d_graphics, event -> x, event -> y, & xWC, & yWC);
+	Graphics_setWindow (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0.0, my height);
+	double xWC, yWC;
+	Graphics_DCtoWC (my d_graphics.get(), event -> x, event -> y, & xWC, & yWC);
 
-	if (yWC > BOTTOM_MARGIN + space * 3 && yWC < my height - (TOP_MARGIN + space)) {   /* In signal region? */
+	if (yWC > BOTTOM_MARGIN + space * 3 && yWC < my height - (TOP_MARGIN + space)) {   // in signal region?
 		int needsUpdate;
-		Graphics_setViewport (my d_graphics, my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN,
+		Graphics_setViewport (my d_graphics.get(), my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN,
 			BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, 0.0, 1.0);
-		Graphics_DCtoWC (my d_graphics, event -> x, event -> y, & xWC, & yWC);
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, 0.0, 1.0);
+		Graphics_DCtoWC (my d_graphics.get(), event -> x, event -> y, & xWC, & yWC);
 		if (xWC < my d_startWindow) xWC = my d_startWindow;
 		if (xWC > my d_endWindow) xWC = my d_endWindow;
 		if (Melder_debug == 24) {
@@ -1112,13 +1061,13 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 			event -> button == 2 ? my v_clickB (xWC, yWC) : my v_clickE (xWC, yWC);
 #endif
 		if (needsUpdate) my v_updateText ();
-		Graphics_setViewport (my d_graphics, my functionViewerLeft, my functionViewerRight, 0, my height);
+		Graphics_setViewport (my d_graphics.get(), my functionViewerLeft, my functionViewerRight, 0, my height);
 		if (needsUpdate) {
 			drawNow (me);
 		}
 		if (needsUpdate) updateGroup (me);
 	}
-	else   /* Clicked outside signal region? Let us hear it. */
+	else   // clicked outside signal region? Let us hear it
 	{
 		try {
 			for (int i = 0; i < 8; i ++) {
@@ -1199,8 +1148,8 @@ void structFunctionEditor :: v_createChildren () {
 	our drawingArea = GuiDrawingArea_createShown (our d_windowForm,
 		0, 0,
 		Machine_getMenuBarHeight () + ( our v_hasText () ? TEXT_HEIGHT + marginBetweenTextAndDrawingAreaToEnsureCorrectUnhighlighting : 0), -8 - Gui_PUSHBUTTON_HEIGHT,
-		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, gui_drawingarea_cb_resize, this, 0);
-	GuiDrawingArea_setSwipable (our drawingArea, our scrollBar, NULL);
+		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, gui_drawingarea_cb_resize, this, 0);
+	GuiDrawingArea_setSwipable (our drawingArea, our scrollBar, nullptr);
 }
 
 void structFunctionEditor :: v_dataChanged () {
@@ -1226,23 +1175,23 @@ static void drawWhileDragging (FunctionEditor me, double x1, double x2) {
 	 */
 	double xleft, xright;
 	if (x1 > x2) xleft = x2, xright = x1; else xleft = x1, xright = x2;
-	Graphics_xorOn (my d_graphics, Graphics_MAROON);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-	Graphics_text (my d_graphics, xleft, 1.0, Melder_fixed (xleft, 6));
-	Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_TOP);
-	Graphics_text (my d_graphics, xright, 1.0, Melder_fixed (xright, 6));
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_BOTTOM);
-	Graphics_text (my d_graphics, xleft, 0.0, Melder_fixed (xleft, 6));
-	Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-	Graphics_text (my d_graphics, xright, 0.0, Melder_fixed (xright, 6));
-	Graphics_setLineType (my d_graphics, Graphics_DOTTED);
-	Graphics_line (my d_graphics, xleft, 0.0, xleft, 1.0);
-	Graphics_line (my d_graphics, xright, 0.0, xright, 1.0);
-	Graphics_setLineType (my d_graphics, Graphics_DRAWN);
-	Graphics_xorOff (my d_graphics);
-}
-
-int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftKeyPressed) {
+	Graphics_xorOn (my d_graphics.get(), Graphics_MAROON);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+	Graphics_text (my d_graphics.get(), xleft, 1.0, Melder_fixed (xleft, 6));
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_TOP);
+	Graphics_text (my d_graphics.get(), xright, 1.0, Melder_fixed (xright, 6));
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_BOTTOM);
+	Graphics_text (my d_graphics.get(), xleft, 0.0, Melder_fixed (xleft, 6));
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+	Graphics_text (my d_graphics.get(), xright, 0.0, Melder_fixed (xright, 6));
+	Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
+	Graphics_line (my d_graphics.get(), xleft, 0.0, xleft, 1.0);
+	Graphics_line (my d_graphics.get(), xright, 0.0, xright, 1.0);
+	Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
+	Graphics_xorOff (my d_graphics.get());
+}
+
+bool structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftKeyPressed) {
 	bool drag = false;
 	double x = xbegin, y = ybegin;
 
@@ -1254,7 +1203,7 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 	 * Another example: if she shift-clicks near E, B will become (and stay) the anchor.
 	 */
 
-	Graphics_setWindow (d_graphics, d_startWindow, d_endWindow, 0, 1);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0, 1);
 
 	double anchorForDragging = xbegin;   // the default (for if the shift key isn't pressed)
 	if (a_shiftKeyPressed) {
@@ -1263,38 +1212,38 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 		 * We should always end up with a real selection (B < E),
 		 * even if we start with the reversed temporal order (E < B).
 		 */
-		bool reversed = d_startSelection > d_endSelection;
-		double firstMark = reversed ? d_endSelection : d_startSelection;
-		double secondMark = reversed ? d_startSelection : d_endSelection;
+		bool reversed = our d_startSelection > our d_endSelection;
+		double firstMark = reversed ? our d_endSelection : our d_startSelection;
+		double secondMark = reversed ? our d_startSelection : our d_endSelection;
 		/*
 		 * Undraw the old selection.
 		 */
-		if (d_endSelection > d_startSelection) {
+		if (our d_endSelection > our d_startSelection) {
 			/*
 			 * Determine the visible part of the old selection.
 			 */
-			double startVisible = d_startSelection > d_startWindow ? d_startSelection : d_startWindow;
-			double endVisible = d_endSelection < d_endWindow ? d_endSelection : d_endWindow;
+			double startVisible = our d_startSelection > our d_startWindow ? our d_startSelection : our d_startWindow;
+			double endVisible = our d_endSelection < our d_endWindow ? our d_endSelection : our d_endWindow;
 			/*
 			 * Undraw the visible part of the old selection.
 			 */
 			if (endVisible > startVisible) {
 				v_unhighlightSelection (startVisible, endVisible, 0, 1);
-				//Graphics_flushWs (d_graphics);
+				//Graphics_flushWs (our d_graphics.get());
 			}
 		}
 		if (xbegin >= secondMark) {
 		 	/*
 			 * She clicked right from the second mark (usually E). We move E.
 			 */
-			d_endSelection = xbegin;
-			anchorForDragging = d_startSelection;
+			our d_endSelection = xbegin;
+			anchorForDragging = our d_startSelection;
 		} else if (xbegin <= firstMark) {
 		 	/*
 			 * She clicked left from the first mark (usually B). We move B.
 			 */
-			d_startSelection = xbegin;
-			anchorForDragging = d_endSelection;
+			our d_startSelection = xbegin;
+			anchorForDragging = our d_endSelection;
 		} else {
 			/*
 			 * She clicked in between the two marks. We move the nearest mark.
@@ -1308,45 +1257,45 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 				/*
 				 * Swap B and E.
 				 */
-				d_startSelection = firstMark;
-				d_endSelection = secondMark;
+				our d_startSelection = firstMark;
+				our d_endSelection = secondMark;
 			}
 			/*
 			 * Move the nearest mark.
 			 */
 			if (distanceOfClickToFirstMark < distanceOfClickToSecondMark) {
-				d_startSelection = xbegin;
-				anchorForDragging = d_endSelection;
+				our d_startSelection = xbegin;
+				anchorForDragging = our d_endSelection;
 			} else {
-				d_endSelection = xbegin;
-				anchorForDragging = d_startSelection;
+				our d_endSelection = xbegin;
+				anchorForDragging = our d_startSelection;
 			}
 		}
 		/*
 		 * Draw the new selection.
 		 */
-		if (d_endSelection > d_startSelection) {
+		if (our d_endSelection > our d_startSelection) {
 			/*
 			 * Determine the visible part of the new selection.
 			 */
-			double startVisible = d_startSelection > d_startWindow ? d_startSelection : d_startWindow;
-			double endVisible = d_endSelection < d_endWindow ? d_endSelection : d_endWindow;
+			double startVisible = our d_startSelection > our d_startWindow ? our d_startSelection : our d_startWindow;
+			double endVisible = our d_endSelection < our d_endWindow ? our d_endSelection : our d_endWindow;
 			/*
 			 * Draw the visible part of the new selection.
 			 */
 			if (endVisible > startVisible)
-				v_highlightSelection (startVisible, endVisible, 0, 1);
+				v_highlightSelection (startVisible, endVisible, 0.0, 1.0);
 		}
 	}
 	/*
 	 * Find out whether this is a click or a drag.
 	 */
     
-	while (Graphics_mouseStillDown (d_graphics)) {
-		Graphics_getMouseLocation (d_graphics, & x, & y);
-		if (x < d_startWindow) x = d_startWindow;
-		if (x > d_endWindow) x = d_endWindow;
-		if (fabs (Graphics_dxWCtoMM (d_graphics, x - xbegin)) > 1.5) {
+	while (Graphics_mouseStillDown (our d_graphics.get())) {
+		Graphics_getMouseLocation (our d_graphics.get(), & x, & y);
+		if (x < our d_startWindow) x = our d_startWindow;
+		if (x > our d_endWindow) x = our d_endWindow;
+		if (fabs (Graphics_dxWCtoMM (our d_graphics.get(), x - xbegin)) > 1.5) {
 			drag = true;
 			break;
 		}
@@ -1356,22 +1305,22 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 		/*
 		 * First undraw the old selection.
 		 */
-		if (d_endSelection > d_startSelection) {
+		if (our d_endSelection > our d_startSelection) {
 			/*
 			 * Determine the visible part of the old selection.
 			 */
-			double startVisible = d_startSelection > d_startWindow ? d_startSelection : d_startWindow;
-			double endVisible = d_endSelection < d_endWindow ? d_endSelection : d_endWindow;
+			double startVisible = our d_startSelection > our d_startWindow ? our d_startSelection : our d_startWindow;
+			double endVisible = our d_endSelection < our d_endWindow ? our d_endSelection : our d_endWindow;
 			/*
 			 * Undraw the visible part of the old selection.
 			 */
 			if (endVisible > startVisible)
-				v_unhighlightSelection (startVisible, endVisible, 0, 1);
+				v_unhighlightSelection (startVisible, endVisible, 0.0, 1.0);
 		}
 		/*
 		 * Draw the text at least once.
 		 */
-		/*if (x < d_startWindow) x = d_startWindow; else if (x > d_endWindow) x = d_endWindow;*/
+		/*if (x < our d_startWindow) x = our d_startWindow; else if (x > our d_endWindow) x = our d_endWindow;*/
         drawWhileDragging (this, anchorForDragging, x);
 		/*
 		 * Draw the dragged selection at least once.
@@ -1379,20 +1328,20 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 		{
 			double x1, x2;
 			if (x > anchorForDragging) x1 = anchorForDragging, x2 = x; else x1 = x, x2 = anchorForDragging;
-			v_highlightSelection (x1, x2, 0, 1);
+			v_highlightSelection (x1, x2, 0.0, 1.0);
 		}
 		/*
 		 * Drag for the new selection.
 		 */
         
-		while (Graphics_mouseStillDown (d_graphics))
+		while (Graphics_mouseStillDown (d_graphics.get()))
 		{
 			double xold = x, x1, x2;
-			Graphics_getMouseLocation (d_graphics, & x, & y);
+			Graphics_getMouseLocation (our d_graphics.get(), & x, & y);
 			/*
 			 * Clip to the visible window. Ideally, we should perform autoscrolling instead, though...
 			 */
-			if (x < d_startWindow) x = d_startWindow; else if (x > d_endWindow) x = d_endWindow;
+			if (x < our d_startWindow) x = our d_startWindow; else if (x > our d_endWindow) x = our d_endWindow;
             
 			if (x == xold)
 				continue;
@@ -1401,7 +1350,7 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 			 * Undraw previous dragged selection.
 			 */
 			if (xold > anchorForDragging) x1 = anchorForDragging, x2 = xold; else x1 = xold, x2 = anchorForDragging;
-			if (x1 != x2) v_unhighlightSelection (x1, x2, 0, 1);
+			if (x1 != x2) v_unhighlightSelection (x1, x2, 0.0, 1.0);
 			/*
 			 * Undraw the text.
 			 */
@@ -1414,51 +1363,49 @@ int structFunctionEditor :: v_click (double xbegin, double ybegin, bool a_shiftK
 			 * Draw new dragged selection.
 			 */
 			if (x > anchorForDragging) x1 = anchorForDragging, x2 = x; else x1 = x, x2 = anchorForDragging;
-			if (x1 != x2) v_highlightSelection (x1, x2, 0, 1);
+			if (x1 != x2) v_highlightSelection (x1, x2, 0.0, 1.0);
         } ;
 		/*
 		 * Set the new selection.
 		 */
-		if (x > anchorForDragging) d_startSelection = anchorForDragging, d_endSelection = x;
-		else d_startSelection = x, d_endSelection = anchorForDragging;
+		if (x > anchorForDragging) our d_startSelection = anchorForDragging, our d_endSelection = x;
+		else our d_startSelection = x, our d_endSelection = anchorForDragging;
 	} else if (! a_shiftKeyPressed) {
 		/*
 		 * Move the cursor to the clicked position.
 		 */
-		d_startSelection = d_endSelection = xbegin;
+		our d_startSelection = our d_endSelection = xbegin;
 	}
 	return FunctionEditor_UPDATE_NEEDED;
 }
 
-int structFunctionEditor :: v_clickB (double xWC, double yWC) {
-	(void) yWC;
-	d_startSelection = xWC;
-	if (d_startSelection > d_endSelection) {
-		double dummy = d_startSelection;
-		d_startSelection = d_endSelection;
-		d_endSelection = dummy;
+bool structFunctionEditor :: v_clickB (double xWC, double /* yWC */) {
+	our d_startSelection = xWC;
+	if (our d_startSelection > our d_endSelection) {
+		double dummy = our d_startSelection;
+		our d_startSelection = our d_endSelection;
+		our d_endSelection = dummy;
 	}
-	return 1;
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
-int structFunctionEditor :: v_clickE (double xWC, double yWC) {
-	d_endSelection = xWC;
-	(void) yWC;
-	if (d_startSelection > d_endSelection) {
-		double dummy = d_startSelection;
-		d_startSelection = d_endSelection;
-		d_endSelection = dummy;
+bool structFunctionEditor :: v_clickE (double xWC, double /* yWC */) {
+	our d_endSelection = xWC;
+	if (our d_startSelection > our d_endSelection) {
+		double dummy = our d_startSelection;
+		our d_startSelection = our d_endSelection;
+		our d_endSelection = dummy;
 	}
-	return 1;
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
 void FunctionEditor_insetViewport (FunctionEditor me) {
-	Graphics_setViewport (my d_graphics, my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN,
+	Graphics_setViewport (my d_graphics.get(), my functionViewerLeft + MARGIN, my functionViewerRight - MARGIN,
 		BOTTOM_MARGIN + space * 3, my height - (TOP_MARGIN + space));
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, 0, 1);
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, 0.0, 1.0);
 }
 
-int structFunctionEditor :: v_playCallback (int phase, double a_tmin, double a_tmax, double t) {
+int structFunctionEditor :: v_playCallback (int phase, double /* a_tmin */, double a_tmax, double t) {
 	/*
 	 * This callback will often be called by the Melder workproc during playback.
 	 * However, it will sometimes be called by Melder_stopPlaying with phase=3.
@@ -1466,28 +1413,27 @@ int structFunctionEditor :: v_playCallback (int phase, double a_tmin, double a_t
 	 * So we had better make no assumptions about the current viewport.
 	 */
 	double x1NDC, x2NDC, y1NDC, y2NDC;
-	(void) a_tmin;
-	Graphics_inqViewport (d_graphics, & x1NDC, & x2NDC, & y1NDC, & y2NDC);
+	Graphics_inqViewport (our d_graphics.get(), & x1NDC, & x2NDC, & y1NDC, & y2NDC);
 	FunctionEditor_insetViewport (this);
-	Graphics_xorOn (d_graphics, Graphics_MAROON);
+	Graphics_xorOn (our d_graphics.get(), Graphics_MAROON);
 	/*
 	 * Undraw the play cursor at its old location.
 	 * BUG: during scrolling, zooming, and exposure, an ugly line may remain.
 	 */
-	if (phase != 1 && playCursor >= d_startWindow && playCursor <= d_endWindow) {
-		Graphics_setLineWidth (d_graphics, 3.0);
-		Graphics_line (d_graphics, playCursor, 0, playCursor, 1);
-		Graphics_setLineWidth (d_graphics, 1.0);
+	if (phase != 1 && playCursor >= our d_startWindow && playCursor <= our d_endWindow) {
+		Graphics_setLineWidth (our d_graphics.get(), 3.0);
+		Graphics_line (our d_graphics.get(), playCursor, 0.0, playCursor, 1.0);
+		Graphics_setLineWidth (our d_graphics.get(), 1.0);
 	}
 	/*
 	 * Draw the play cursor at its new location.
 	 */
-	if (phase != 3 && t >= d_startWindow && t <= d_endWindow) {
-		Graphics_setLineWidth (d_graphics, 3.0);
-		Graphics_line (d_graphics, t, 0, t, 1);
-		Graphics_setLineWidth (d_graphics, 1.0);
+	if (phase != 3 && t >= our d_startWindow && t <= our d_endWindow) {
+		Graphics_setLineWidth (our d_graphics.get(), 3.0);
+		Graphics_line (our d_graphics.get(), t, 0.0, t, 1.0);
+		Graphics_setLineWidth (our d_graphics.get(), 1.0);
 	}
-	Graphics_xorOff (d_graphics);
+	Graphics_xorOff (our d_graphics.get());
 	/*
 	 * Usually, there will be an event test after each invocation of this callback,
 	 * because the asynchronicity is kMelder_asynchronicityLevel_INTERRUPTABLE or kMelder_asynchronicityLevel_ASYNCHRONOUS.
@@ -1495,16 +1441,18 @@ int structFunctionEditor :: v_playCallback (int phase, double a_tmin, double a_t
 	 * there is no event test. Which means: no server round trip.
 	 * Which means: no automatic flushing of graphics output.
 	 * So: we force the flushing ourselves, lest we see too few moving cursors.
+	 *
+	 * At the moment, Cocoa seems to require this flushing even if the asynchronicity is kMelder_asynchronicityLevel_ASYNCHRONOUS.
 	 */
-	Graphics_flushWs (d_graphics);
-	Graphics_setViewport (d_graphics, x1NDC, x2NDC, y1NDC, y2NDC);
+	Graphics_flushWs (our d_graphics.get());
+	Graphics_setViewport (our d_graphics.get(), x1NDC, x2NDC, y1NDC, y2NDC);
 	playCursor = t;
 	if (phase == 3) {
 		if (t < a_tmax && MelderAudio_stopWasExplicit ()) {
-			if (t > d_startSelection && t < d_endSelection)
-				d_startSelection = t;
+			if (t > our d_startSelection && t < our d_endSelection)
+				our d_startSelection = t;
 			else
-				d_startSelection = d_endSelection = t;
+				our d_startSelection = our d_endSelection = t;
 			v_updateText ();
 			/*Graphics_updateWs (d_graphics);*/ drawNow (this);
 			updateGroup (this);
@@ -1515,17 +1463,16 @@ int structFunctionEditor :: v_playCallback (int phase, double a_tmin, double a_t
 	return 1;
 }
 
-int theFunctionEditor_playCallback (void *void_me, int phase, double a_tmin, double a_tmax, double t) {
-	iam (FunctionEditor);
+int theFunctionEditor_playCallback (FunctionEditor me, int phase, double a_tmin, double a_tmax, double t) {
 	return my v_playCallback (phase, a_tmin, a_tmax, t);
 }
 
 void structFunctionEditor :: v_highlightSelection (double left, double right, double bottom, double top) {
-	Graphics_highlight (d_graphics, left, right, bottom, top);
+	Graphics_highlight (d_graphics.get(), left, right, bottom, top);
 }
 
 void structFunctionEditor :: v_unhighlightSelection (double left, double right, double bottom, double top) {
-	Graphics_unhighlight (d_graphics, left, right, bottom, top);
+	Graphics_unhighlight (d_graphics.get(), left, right, bottom, top);
 }
 
 void FunctionEditor_init (FunctionEditor me, const char32 *title, Function data) {
@@ -1540,17 +1487,17 @@ void FunctionEditor_init (FunctionEditor me, const char32 *title, Function data)
 		Melder_assert (XtWindow (my drawingArea -> d_widget));
 	#endif
 	my d_graphics = Graphics_create_xmdrawingarea (my drawingArea);
-	Graphics_setFontSize (my d_graphics, 12);
+	Graphics_setFontSize (my d_graphics.get(), 12);
 
 // This exdents because it's a hack:
-struct structGuiDrawingAreaResizeEvent event = { my drawingArea, 0 };
+struct structGuiDrawingArea_ResizeEvent event { my drawingArea, 0 };
 event. width  = GuiControl_getWidth  (my drawingArea);
 event. height = GuiControl_getHeight (my drawingArea);
 gui_drawingarea_cb_resize (me, & event);
 
 	my v_updateText ();
 	if (group_equalDomain (my tmin, my tmax))
-		gui_checkbutton_cb_group (me, NULL);   // BUG: NULL
+		gui_checkbutton_cb_group (me, nullptr);   // BUG: nullptr
 	my enableUpdates = true;
 }
 
@@ -1567,7 +1514,8 @@ void FunctionEditor_updateText (FunctionEditor me) {
 }
 
 void FunctionEditor_redraw (FunctionEditor me) {
-	/*Graphics_updateWs (my d_graphics);*/ drawNow (me);
+	//Graphics_updateWs (my d_graphics);
+	drawNow (me);
 }
 
 void FunctionEditor_enableUpdates (FunctionEditor me, bool enable) {
@@ -1580,81 +1528,81 @@ void FunctionEditor_ungroup (FunctionEditor me) {
 	GuiCheckButton_setValue (my groupButton, false);
 	int i = 1;
 	while (theGroup [i] != me) i ++;
-	theGroup [i] = NULL;
+	theGroup [i] = nullptr;
 	nGroup --;
 	my v_updateText ();
-	Graphics_updateWs (my d_graphics);   // for setting buttons in v_draw() method
+	Graphics_updateWs (my d_graphics.get());   // for setting buttons in v_draw() method
 }
 
 void FunctionEditor_drawRangeMark (FunctionEditor me, double yWC, const char32 *yWC_string, const char32 *units, int verticalAlignment) {
 	static MelderString text { 0 };
 	MelderString_copy (& text, yWC_string, units);
-	double textWidth = Graphics_textWidth (my d_graphics, text.string) + Graphics_dxMMtoWC (my d_graphics, 0.5);
-	Graphics_setColour (my d_graphics, Graphics_BLUE);
-	Graphics_line (my d_graphics, my d_endWindow, yWC, my d_endWindow + textWidth, yWC);
-	Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, verticalAlignment);
-	if (verticalAlignment == Graphics_BOTTOM) yWC -= Graphics_dyMMtoWC (my d_graphics, 0.5);
-	Graphics_text (my d_graphics, my d_endWindow, yWC, text.string);
+	double textWidth = Graphics_textWidth (my d_graphics.get(), text.string) + Graphics_dxMMtoWC (my d_graphics.get(), 0.5);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+	Graphics_line (my d_graphics.get(), my d_endWindow, yWC, my d_endWindow + textWidth, yWC);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, verticalAlignment);
+	if (verticalAlignment == Graphics_BOTTOM) yWC -= Graphics_dyMMtoWC (my d_graphics.get(), 0.5);
+	Graphics_text (my d_graphics.get(), my d_endWindow, yWC, text.string);
 }
 
 void FunctionEditor_drawCursorFunctionValue (FunctionEditor me, double yWC, const char32 *yWC_string, const char32 *units) {
-	Graphics_setColour (my d_graphics, Graphics_CYAN);
-	Graphics_line (my d_graphics, my d_startWindow, yWC, 0.99 * my d_startWindow + 0.01 * my d_endWindow, yWC);
-	Graphics_fillCircle_mm (my d_graphics, 0.5 * (my d_startSelection + my d_endSelection), yWC, 1.5);
-	Graphics_setColour (my d_graphics, Graphics_BLUE);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-	Graphics_text (my d_graphics, my d_startWindow, yWC,   yWC_string, units);
+	Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+	Graphics_line (my d_graphics.get(), my d_startWindow, yWC, 0.99 * my d_startWindow + 0.01 * my d_endWindow, yWC);
+	Graphics_fillCircle_mm (my d_graphics.get(), 0.5 * (my d_startSelection + my d_endSelection), yWC, 1.5);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+	Graphics_text (my d_graphics.get(), my d_startWindow, yWC,   yWC_string, units);
 }
 
 void FunctionEditor_insertCursorFunctionValue (FunctionEditor me, double yWC, const char32 *yWC_string, const char32 *units, double minimum, double maximum) {
 	double textX = my d_endWindow, textY = yWC;
-	int tooHigh = Graphics_dyWCtoMM (my d_graphics, maximum - textY) < 5.0;
-	int tooLow = Graphics_dyWCtoMM (my d_graphics, textY - minimum) < 5.0;
+	int tooHigh = Graphics_dyWCtoMM (my d_graphics.get(), maximum - textY) < 5.0;
+	int tooLow = Graphics_dyWCtoMM (my d_graphics.get(), textY - minimum) < 5.0;
 	if (yWC < minimum || yWC > maximum) return;
-	Graphics_setColour (my d_graphics, Graphics_CYAN);
-	Graphics_line (my d_graphics, 0.99 * my d_endWindow + 0.01 * my d_startWindow, yWC, my d_endWindow, yWC);
-	Graphics_fillCircle_mm (my d_graphics, 0.5 * (my d_startSelection + my d_endSelection), yWC, 1.5);
+	Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+	Graphics_line (my d_graphics.get(), 0.99 * my d_endWindow + 0.01 * my d_startWindow, yWC, my d_endWindow, yWC);
+	Graphics_fillCircle_mm (my d_graphics.get(), 0.5 * (my d_startSelection + my d_endSelection), yWC, 1.5);
 	if (tooHigh) {
 		if (tooLow) textY = 0.5 * (minimum + maximum);
-		else textY = maximum - Graphics_dyMMtoWC (my d_graphics, 5.0);
+		else textY = maximum - Graphics_dyMMtoWC (my d_graphics.get(), 5.0);
 	} else if (tooLow) {
-		textY = minimum + Graphics_dyMMtoWC (my d_graphics, 5.0);
+		textY = minimum + Graphics_dyMMtoWC (my d_graphics.get(), 5.0);
 	}
 	static MelderString text { 0 };
 	MelderString_copy (& text, yWC_string, units);
-	double textWidth = Graphics_textWidth (my d_graphics, text.string);
-	Graphics_fillCircle_mm (my d_graphics, my d_endWindow + textWidth + Graphics_dxMMtoWC (my d_graphics, 1.5), textY, 1.5);
-	Graphics_setColour (my d_graphics, Graphics_RED);
-	Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_HALF);
-	Graphics_text (my d_graphics, textX, textY, text.string);
+	double textWidth = Graphics_textWidth (my d_graphics.get(), text.string);
+	Graphics_fillCircle_mm (my d_graphics.get(), my d_endWindow + textWidth + Graphics_dxMMtoWC (my d_graphics.get(), 1.5), textY, 1.5);
+	Graphics_setColour (my d_graphics.get(), Graphics_RED);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+	Graphics_text (my d_graphics.get(), textX, textY, text.string);
 }
 
 void FunctionEditor_drawHorizontalHair (FunctionEditor me, double yWC, const char32 *yWC_string, const char32 *units) {
-	Graphics_setColour (my d_graphics, Graphics_RED);
-	Graphics_line (my d_graphics, my d_startWindow, yWC, my d_endWindow, yWC);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-	Graphics_text (my d_graphics, my d_startWindow, yWC,   yWC_string, units);
+	Graphics_setColour (my d_graphics.get(), Graphics_RED);
+	Graphics_line (my d_graphics.get(), my d_startWindow, yWC, my d_endWindow, yWC);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+	Graphics_text (my d_graphics.get(), my d_startWindow, yWC,   yWC_string, units);
 }
 
 void FunctionEditor_drawGridLine (FunctionEditor me, double yWC) {
-	Graphics_setColour (my d_graphics, Graphics_CYAN);
-	Graphics_setLineType (my d_graphics, Graphics_DOTTED);
-	Graphics_line (my d_graphics, my d_startWindow, yWC, my d_endWindow, yWC);
-	Graphics_setLineType (my d_graphics, Graphics_DRAWN);
+	Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+	Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
+	Graphics_line (my d_graphics.get(), my d_startWindow, yWC, my d_endWindow, yWC);
+	Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
 }
 
 void FunctionEditor_garnish (FunctionEditor me) {
 	if (my pref_picture_drawSelectionTimes ()) {
 		if (my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow)
-			Graphics_markTop (my pictureGraphics, my d_startSelection, true, true, false, NULL);
+			Graphics_markTop (my pictureGraphics, my d_startSelection, true, true, false, nullptr);
 		if (my d_endSelection != my d_startSelection && my d_endSelection >= my d_startWindow && my d_endSelection <= my d_endWindow)
-			Graphics_markTop (my pictureGraphics, my d_endSelection, true, true, false, NULL);
+			Graphics_markTop (my pictureGraphics, my d_endSelection, true, true, false, nullptr);
 	}
 	if (my pref_picture_drawSelectionHairs ()) {
 		if (my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow)
-			Graphics_markTop (my pictureGraphics, my d_startSelection, false, false, true, NULL);
+			Graphics_markTop (my pictureGraphics, my d_startSelection, false, false, true, nullptr);
 		if (my d_endSelection != my d_startSelection && my d_endSelection >= my d_startWindow && my d_endSelection <= my d_endWindow)
-			Graphics_markTop (my pictureGraphics, my d_endSelection, false, false, true, NULL);
+			Graphics_markTop (my pictureGraphics, my d_endSelection, false, false, true, nullptr);
 	}
 }
 
diff --git a/fon/FunctionEditor.h b/fon/FunctionEditor.h
index 2f64a94..06b8001 100644
--- a/fon/FunctionEditor.h
+++ b/fon/FunctionEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -39,7 +38,7 @@ Thing_define (FunctionEditor, Editor) {
 		/*    tmin <= startWindow < endWindow <= tmax; */
 		/*    tmin <= (startSelection, endSelection) <= tmax; */
 
-	Graphics d_graphics;   // used in the 'draw' method
+	autoGraphics d_graphics;   // used in the 'draw' method
 	short functionViewerLeft, functionViewerRight;   // size of drawing areas in pixels
 	short selectionViewerLeft, selectionViewerRight;   // size of drawing areas in pixels
 	short height;   // size of drawing areas in pixels
@@ -59,7 +58,7 @@ Thing_define (FunctionEditor, Editor) {
 	double marker [1 + 3], playCursor, startZoomHistory, endZoomHistory;
 	int numberOfMarkers;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
@@ -95,7 +94,7 @@ Thing_define (FunctionEditor, Editor) {
 		/*
 		 * Message: "the user clicked in one of the rectangles above or below the data window."
 		 */
-	virtual int v_click (double xWC, double yWC, bool shiftKeyPressed);
+	virtual bool v_click (double xWC, double yWC, bool shiftKeyPressed);
 		/*
 		 * Message: "the user clicked in data window with the left mouse button."
 		 * 'xWC' is the time;
@@ -111,8 +110,8 @@ Thing_define (FunctionEditor, Editor) {
 		 * Behaviour of FunctionEditor::click ():
 		 *    moves the cursor to 'xWC', drags to create a selection, or extends the selection.
 		 */
-	virtual int v_clickB (double xWC, double yWC);
-	virtual int v_clickE (double xWC, double yWC);
+	virtual bool v_clickB (double xWC, double yWC);
+	virtual bool v_clickE (double xWC, double yWC);
 	virtual int v_playCallback (int phase, double tmin, double tmax, double t);
 	virtual void v_updateText () { }
 	virtual void v_prefs_addFields (EditorCommand) { }
@@ -135,7 +134,7 @@ Thing_define (FunctionEditor, Editor) {
     #include "FunctionEditor_prefs.h"
 };
 
-int theFunctionEditor_playCallback (void *void_me, int phase, double tmin, double tmax, double t);
+int theFunctionEditor_playCallback (FunctionEditor me, int phase, double tmin, double tmax, double t);
 
 /*
 	Attributes:
@@ -161,8 +160,8 @@ int theFunctionEditor_playCallback (void *void_me, int phase, double tmin, doubl
 */
 
 
-#define FunctionEditor_UPDATE_NEEDED  1
-#define FunctionEditor_NO_UPDATE_NEEDED  0
+#define FunctionEditor_UPDATE_NEEDED  true
+#define FunctionEditor_NO_UPDATE_NEEDED  false
 
 void FunctionEditor_init (FunctionEditor me, const char32 *title, Function data);
 /*
diff --git a/fon/FunctionEditor_prefs.h b/fon/FunctionEditor_prefs.h
index ba1ab39..42c0fed 100644
--- a/fon/FunctionEditor_prefs.h
+++ b/fon/FunctionEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (FunctionEditor)
diff --git a/fon/Function_def.h b/fon/Function_def.h
index b913f78..a40daf4 100644
--- a/fon/Function_def.h
+++ b/fon/Function_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Function
-oo_DEFINE_CLASS (Function, Data)
+oo_DEFINE_CLASS (Function, Daata)
 
 	oo_DOUBLE (xmin)
 	oo_DOUBLE (xmax)
diff --git a/fon/Harmonicity.cpp b/fon/Harmonicity.cpp
index 920edfd..28d88da 100644
--- a/fon/Harmonicity.cpp
+++ b/fon/Harmonicity.cpp
@@ -1,20 +1,19 @@
 /* Harmonicity.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -79,7 +78,7 @@ double Harmonicity_getQuantile (Harmonicity me, double quantile) {
 }
 
 void structHarmonicity :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -119,31 +118,31 @@ void structHarmonicity :: v_info () {
 	}
 }
 
-Harmonicity Harmonicity_create (double tmin, double tmax, long nt, double dt, double t1) {
+autoHarmonicity Harmonicity_create (double tmin, double tmax, long nt, double dt, double t1) {
 	try {
 		autoHarmonicity me = Thing_new (Harmonicity);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, 1, 1, 1, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, 1, 1, 1, 1, 1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Harmonicity not created.");
 	}
 }
 
-Matrix Harmonicity_to_Matrix (Harmonicity me) {
+autoMatrix Harmonicity_to_Matrix (Harmonicity me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMvector_copyElements (my z [1], thy z [1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"not converted to Matrix.");
 	}
 }
 
-Harmonicity Matrix_to_Harmonicity (Matrix me) {
+autoHarmonicity Matrix_to_Harmonicity (Matrix me) {
 	try {
 		autoHarmonicity thee = Harmonicity_create (my xmin, my xmax, my nx, my dx, my x1);
 		NUMvector_copyElements (my z [1], thy z [1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U"not converted to Harmonicity.");
 	}
diff --git a/fon/Harmonicity.h b/fon/Harmonicity.h
index 07a70f3..12fb2bf 100644
--- a/fon/Harmonicity.h
+++ b/fon/Harmonicity.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Vector.h"
@@ -34,7 +33,8 @@ Thing_define (Harmonicity, Vector) {
 		nx >= 1			// Number of time slices.
 		dx > 0.0			// Time step (seconds).
 		x1				// Centre of first time slice (seconds).
-		ymin, ymax, ny, dy, y1 = 1
+		ymin, ymax, dy, y1 = 1.0
+		ny = 1
 		z [1] [1..nt]
 			// The harmonic strength, a real number between -150 dB and +150 dB:
 			// -150 dB means not periodic at all, +150 dB means perfectly periodic.
@@ -42,7 +42,7 @@ Thing_define (Harmonicity, Vector) {
 			// -200 means silence.
 */
 
-Harmonicity Harmonicity_create (double tmin, double tmax, long nt, double dt, double t1);
+autoHarmonicity Harmonicity_create (double tmin, double tmax, long nt, double dt, double t1);
 
 void Harmonicity_draw (Harmonicity me, double tmin, double tmax, double min, double max);
 /*
@@ -55,8 +55,8 @@ double Harmonicity_getMean (Harmonicity me, double tmin, double tmax);
 double Harmonicity_getStandardDeviation (Harmonicity me, double tmin, double tmax);
 double Harmonicity_getQuantile (Harmonicity me, double quantile);
 
-Matrix Harmonicity_to_Matrix (Harmonicity me);
-Harmonicity Matrix_to_Harmonicity (Matrix me);
+autoMatrix Harmonicity_to_Matrix (Harmonicity me);
+autoHarmonicity Matrix_to_Harmonicity (Matrix me);
 
 /* End of file Harmonicity.h */
 #endif
diff --git a/fon/Harmonics.h b/fon/Harmonics.h
index e634bbd..84910a8 100644
--- a/fon/Harmonics.h
+++ b/fon/Harmonics.h
@@ -4,44 +4,42 @@
  *
  * Copyright (C) 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointProcess.h"
 #include "Sound.h"
 
 #include "Harmonics_def.h"
-oo_CLASS_CREATE (Harmonics, Data);
 
-Harmonics Harmonics_create (long numberOfHarmonics);
+autoHarmonics Harmonics_create (long numberOfHarmonics);
 
 void Harmonics_draw (Harmonics me, Graphics g, double fmin, double fmax,
 	double minimum, double maximum, int garnish, const char32 *method);
 
-Matrix Harmonics_to_Matrix (Harmonics me);
-Harmonics Matrix_to_Harmonics (Matrix me);
+autoMatrix Harmonics_to_Matrix (Harmonics me);
+autoHarmonics Matrix_to_Harmonics (Matrix me);
 
 /* Direct computation. */
 
-Harmonics PointProcess_Sound_to_Harmonics (PointProcess pulses, Sound sound,
+autoHarmonics PointProcess_Sound_to_Harmonics (PointProcess pulses, Sound sound,
 	long maximumHarmonic,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor);
 
 /* Shortcut. */
 
-Harmonics Sound_to_Harmonics (Sound me, double bandwidth);
+autoHarmonics Sound_to_Harmonics (Sound me, double bandwidth);
 
 /* End of file Harmonics.h */
 #endif
diff --git a/fon/Harmonics_def.h b/fon/Harmonics_def.h
index d218081..df8ceb6 100644
--- a/fon/Harmonics_def.h
+++ b/fon/Harmonics_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Harmonics
-oo_DEFINE_CLASS (Harmonics, Data)
+oo_DEFINE_CLASS (Harmonics, Daata)
 
 	oo_LONG (numberOfHarmonics)
 
diff --git a/fon/Image.cpp b/fon/Image.cpp
index 9516c64..381f4db 100644
--- a/fon/Image.cpp
+++ b/fon/Image.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/fon/Image.h b/fon/Image.h
index 7fd51b8..42e1128 100644
--- a/fon/Image.h
+++ b/fon/Image.h
@@ -4,26 +4,24 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sampled.h"
 #include "Graphics.h"
 
 #include "Image_def.h"
-oo_CLASS_CREATE (Image, Sampled);
 
 /*
 	An object of type Image represents a quantized function z (x, y)
@@ -43,7 +41,7 @@ oo_CLASS_CREATE (Image, Sampled);
 //	 double ymin, double ymax, long ny, double dy, double y1);
 /*
 	Function:
-		return a new empty Image, or NULL if out of memory.
+		return a new empty Image.
 	Preconditions:
 		xmin <= xmax;   ymin <= ymax;
 		nx >= 1;  ny >= 1;
diff --git a/fon/Image_def.h b/fon/Image_def.h
index 9ea3678..90649e2 100644
--- a/fon/Image_def.h
+++ b/fon/Image_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/Intensity.cpp b/fon/Intensity.cpp
index fa4727b..6ba7db8 100644
--- a/fon/Intensity.cpp
+++ b/fon/Intensity.cpp
@@ -1,20 +1,19 @@
 /* Intensity.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Intensity.h"
@@ -22,7 +21,7 @@
 Thing_implement (Intensity, Vector, 2);
 
 void structIntensity :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -57,38 +56,41 @@ void Intensity_init (Intensity me, double tmin, double tmax, long nt, double dt,
 	Matrix_init (me, tmin, tmax, nt, dt, t1, 1.0, 1.0, 1, 1.0, 1.0);
 }
 
-Intensity Intensity_create (double tmin, double tmax, long nt, double dt, double t1) {
+autoIntensity Intensity_create (double tmin, double tmax, long nt, double dt, double t1) {
 	try {
 		autoIntensity me = Thing_new (Intensity);
-		Intensity_init (me.peek(), tmin, tmax, nt, dt, t1);
-		return me.transfer();
+		Intensity_init (me.get(), tmin, tmax, nt, dt, t1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Intensity not created.");
 	}
 }
 
-Matrix Intensity_to_Matrix (Intensity me) {
+autoMatrix Intensity_to_Matrix (Intensity me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": not converted to Intensity.");
+		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Intensity Matrix_to_Intensity (Matrix me) {
+autoIntensity Matrix_to_Intensity (Matrix me) {
 	try {
 		autoIntensity thee = Thing_new (Intensity);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
-		Melder_throw (me, U": not converted to Matrix.");
+		Melder_throw (me, U": not converted to Intensity.");
 	}
 }
 
 void Intensity_drawInside (Intensity me, Graphics g, double tmin, double tmax, double minimum, double maximum) {
-	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindow
+	if (tmax <= tmin) {
+		tmin = my xmin;   // autowindow
+		tmax = my xmax;
+	}
 	long itmin, itmax;
 	Matrix_getWindowSamplesX (me, tmin, tmax, & itmin, & itmax);
 	if (maximum <= minimum)
@@ -106,10 +108,10 @@ void Intensity_draw (Intensity me, Graphics g, double tmin, double tmax,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Intensity (dB)");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Intensity (dB)");
 	}
 }
 
@@ -121,7 +123,7 @@ double Intensity_getAverage (Intensity me, double tmin, double tmax, int averagi
 	return
 		averagingMethod == Intensity_averaging_MEDIAN ?
 			Intensity_getQuantile (me, tmin, tmax, 0.50) :
-			Sampled_getMean_standardUnit (me, tmin, tmax, 0, averagingMethod, TRUE);
+			Sampled_getMean_standardUnit (me, tmin, tmax, 0, averagingMethod, true);
 }
 
 /* End of file Intensity.cpp */
diff --git a/fon/Intensity.h b/fon/Intensity.h
index c0f522b..a0d429e 100644
--- a/fon/Intensity.h
+++ b/fon/Intensity.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -42,13 +41,13 @@ Thing_define (Intensity, Vector) {
 		override;
 };
 
-Intensity Intensity_create (double tmin, double tmax, long nt, double dt, double t1);
+autoIntensity Intensity_create (double tmin, double tmax, long nt, double dt, double t1);
 
 void Intensity_init (Intensity me, double tmin, double tmax, long nt, double dt, double t1);
 
-Matrix Intensity_to_Matrix (Intensity me);
+autoMatrix Intensity_to_Matrix (Intensity me);
 
-Intensity Matrix_to_Intensity (Matrix me);
+autoIntensity Matrix_to_Intensity (Matrix me);
 
 void Intensity_drawInside (Intensity me, Graphics g, double tmin, double tmax,
 	double minimum, double maximum);
diff --git a/fon/IntensityTier.cpp b/fon/IntensityTier.cpp
index 920bc6f..1e0c69a 100644
--- a/fon/IntensityTier.cpp
+++ b/fon/IntensityTier.cpp
@@ -1,31 +1,30 @@
 /* IntensityTier.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "IntensityTier.h"
 
 Thing_implement (IntensityTier, RealTier, 0);
 
-IntensityTier IntensityTier_create (double tmin, double tmax) {
+autoIntensityTier IntensityTier_create (double tmin, double tmax) {
 	try {
 		autoIntensityTier me = Thing_new (IntensityTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"IntensityTier not created.");
 	}
@@ -37,69 +36,73 @@ void IntensityTier_draw (IntensityTier me, Graphics g, double tmin, double tmax,
 	RealTier_draw (me, g, tmin, tmax, ymin, ymax, garnish, method, U"Intensity (dB)");
 }
 
-IntensityTier PointProcess_upto_IntensityTier (PointProcess me, double intensity) {
+autoIntensityTier PointProcess_upto_IntensityTier (PointProcess me, double intensity) {
 	try {
-		return (IntensityTier) PointProcess_upto_RealTier (me, intensity, classIntensityTier);
+		autoIntensityTier thee = PointProcess_upto_RealTier (me, intensity, classIntensityTier).static_cast_move<structIntensityTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to IntensityTier.");
 	}
 }
 
-IntensityTier Intensity_downto_IntensityTier (Intensity me) {
+autoIntensityTier Intensity_downto_IntensityTier (Intensity me) {
 	try {
-		return (IntensityTier) Vector_to_RealTier (me, 1, classIntensityTier);
+		autoIntensityTier thee = Vector_to_RealTier (me, 1, classIntensityTier).static_cast_move<structIntensityTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to IntensityTier.");
 	}
 }
 
-IntensityTier Intensity_to_IntensityTier_peaks (Intensity me) {
+autoIntensityTier Intensity_to_IntensityTier_peaks (Intensity me) {
 	try {
-		return (IntensityTier) Vector_to_RealTier_peaks (me, 1, classIntensityTier);
+		autoIntensityTier thee = Vector_to_RealTier_peaks (me, 1, classIntensityTier).static_cast_move<structIntensityTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": peaks not converted to IntensityTier.");
 	}
 }
 
-IntensityTier Intensity_to_IntensityTier_valleys (Intensity me) {
+autoIntensityTier Intensity_to_IntensityTier_valleys (Intensity me) {
 	try {
-		return (IntensityTier) Vector_to_RealTier_valleys (me, 1, classIntensityTier);
+		autoIntensityTier thee = Vector_to_RealTier_valleys (me, 1, classIntensityTier).static_cast_move<structIntensityTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": valleys not converted to IntensityTier.");
 	}
 }
 
-IntensityTier Intensity_PointProcess_to_IntensityTier (Intensity me, PointProcess pp) {
+autoIntensityTier Intensity_PointProcess_to_IntensityTier (Intensity me, PointProcess pp) {
 	try {
 		autoIntensityTier temp = Intensity_downto_IntensityTier (me);
-		autoIntensityTier thee = IntensityTier_PointProcess_to_IntensityTier (temp.peek(), pp);
-		return thee.transfer();
+		autoIntensityTier thee = IntensityTier_PointProcess_to_IntensityTier (temp.get(), pp);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", pp, U": not converted to IntensityTier.");
 	}
 }
 
-IntensityTier IntensityTier_PointProcess_to_IntensityTier (IntensityTier me, PointProcess pp) {
+autoIntensityTier IntensityTier_PointProcess_to_IntensityTier (IntensityTier me, PointProcess pp) {
 	try {
-		if (my points -> size == 0) Melder_throw (U"No intensity points.");
+		if (my points.size == 0) Melder_throw (U"No intensity points.");
 		autoIntensityTier thee = IntensityTier_create (pp -> xmin, pp -> xmax);
 		for (long i = 1; i <= pp -> nt; i ++) {
 			double time = pp -> t [i];
 			double value = RealTier_getValueAtTime (me, time);
-			RealTier_addPoint (thee.peek(), time, value);
+			RealTier_addPoint (thee.get(), time, value);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", pp, U": not converted to IntensityTier.");
 	}
 }
 
-TableOfReal IntensityTier_downto_TableOfReal (IntensityTier me) {
+autoTableOfReal IntensityTier_downto_TableOfReal (IntensityTier me) {
 	return RealTier_downto_TableOfReal (me, U"Time (s)", U"Intensity (dB)");
 }
 
 void Sound_IntensityTier_multiply_inline (Sound me, IntensityTier intensity) {
-	if (intensity -> points -> size == 0) return;
+	if (intensity -> points.size == 0) return;
 	for (long isamp = 1; isamp <= my nx; isamp ++) {
 		double t = my x1 + (isamp - 1) * my dx;
 		double factor = pow (10, RealTier_getValueAtTime (intensity, t) / 20);
@@ -109,12 +112,12 @@ void Sound_IntensityTier_multiply_inline (Sound me, IntensityTier intensity) {
 	}
 }
 
-Sound Sound_IntensityTier_multiply (Sound me, IntensityTier intensity, int scale) {
+autoSound Sound_IntensityTier_multiply (Sound me, IntensityTier intensity, int scale) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_IntensityTier_multiply_inline (thee.peek(), intensity);
-		if (scale) Vector_scale (thee.peek(), 0.9);
-		return thee.transfer();
+		Sound_IntensityTier_multiply_inline (thee.get(), intensity);
+		if (scale) Vector_scale (thee.get(), 0.9);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not multiplied with ", intensity, U".");
 	}
diff --git a/fon/IntensityTier.h b/fon/IntensityTier.h
index 45277bf..7dc36c9 100644
--- a/fon/IntensityTier.h
+++ b/fon/IntensityTier.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -29,20 +28,20 @@ Thing_define (IntensityTier, RealTier) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-IntensityTier IntensityTier_create (double tmin, double tmax);
+autoIntensityTier IntensityTier_create (double tmin, double tmax);
 
 void IntensityTier_draw (IntensityTier me, Graphics g, double tmin, double tmax,
 	double ymin, double ymax, const char32 *method, int garnish);
 
-IntensityTier PointProcess_upto_IntensityTier (PointProcess me, double intensity);
-IntensityTier Intensity_downto_IntensityTier (Intensity me);
-IntensityTier Intensity_to_IntensityTier_peaks (Intensity me);
-IntensityTier Intensity_to_IntensityTier_valleys (Intensity me);
-IntensityTier Intensity_PointProcess_to_IntensityTier (Intensity me, PointProcess pp);
-IntensityTier IntensityTier_PointProcess_to_IntensityTier (IntensityTier me, PointProcess pp);
-TableOfReal IntensityTier_downto_TableOfReal (IntensityTier me);
+autoIntensityTier PointProcess_upto_IntensityTier (PointProcess me, double intensity);
+autoIntensityTier Intensity_downto_IntensityTier (Intensity me);
+autoIntensityTier Intensity_to_IntensityTier_peaks (Intensity me);
+autoIntensityTier Intensity_to_IntensityTier_valleys (Intensity me);
+autoIntensityTier Intensity_PointProcess_to_IntensityTier (Intensity me, PointProcess pp);
+autoIntensityTier IntensityTier_PointProcess_to_IntensityTier (IntensityTier me, PointProcess pp);
+autoTableOfReal IntensityTier_downto_TableOfReal (IntensityTier me);
 void Sound_IntensityTier_multiply_inline (Sound me, IntensityTier intensity);
-Sound Sound_IntensityTier_multiply (Sound me, IntensityTier intensity, int scale);
+autoSound Sound_IntensityTier_multiply (Sound me, IntensityTier intensity, int scale);
 
 /* End of file IntensityTier.h */
 #endif
diff --git a/fon/IntensityTierEditor.cpp b/fon/IntensityTierEditor.cpp
index 43e2978..76dbb6d 100644
--- a/fon/IntensityTierEditor.cpp
+++ b/fon/IntensityTierEditor.cpp
@@ -1,20 +1,19 @@
 /* IntensityTierEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "IntensityTierEditor.h"
@@ -22,7 +21,7 @@
 
 Thing_implement (IntensityTierEditor, RealTierEditor, 0);
 
-static void menu_cb_IntensityTierHelp (EDITOR_ARGS) { EDITOR_IAM (IntensityTierEditor); Melder_help (U"IntensityTier"); }
+static void menu_cb_IntensityTierHelp (IntensityTierEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"IntensityTier"); }
 
 void structIntensityTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	IntensityTierEditor_Parent :: v_createHelpMenuItems (menu);
@@ -33,15 +32,15 @@ void structIntensityTierEditor :: v_play (double a_tmin, double a_tmax) {
 	if (our d_sound.data) {
 		Sound_playPart (our d_sound.data, a_tmin, a_tmax, theFunctionEditor_playCallback, this);
 	} else {
-		//IntensityTier_playPart (our data, a_tmin, a_tmax, FALSE);
+		//IntensityTier_playPart (our data, a_tmin, a_tmax, false);
 	}
 }
 
-IntensityTierEditor IntensityTierEditor_create (const char32 *title, IntensityTier intensity, Sound sound, bool ownSound) {
+autoIntensityTierEditor IntensityTierEditor_create (const char32 *title, IntensityTier intensity, Sound sound, bool ownSound) {
 	try {
 		autoIntensityTierEditor me = Thing_new (IntensityTierEditor);
-		RealTierEditor_init (me.peek(), title, (RealTier) intensity, sound, ownSound);
-		return me.transfer();
+		RealTierEditor_init (me.get(), title, (RealTier) intensity, sound, ownSound);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"IntensityTier window not created.");
 	}
diff --git a/fon/IntensityTierEditor.h b/fon/IntensityTierEditor.h
index 8d500e2..dd2b01c 100644
--- a/fon/IntensityTierEditor.h
+++ b/fon/IntensityTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -54,10 +53,10 @@ Thing_define (IntensityTierEditor, RealTierEditor) {
 		override { return U"Maximum intensity"; }
 };
 
-IntensityTierEditor IntensityTierEditor_create (const char32 *title,
+autoIntensityTierEditor IntensityTierEditor_create (const char32 *title,
 	IntensityTier intensity, Sound sound, bool ownSound);
 /*
-	'sound' may be NULL.
+	'sound' may be null.
 */
 
 /* End of file IntensityTierEditor.h */
diff --git a/fon/Label.cpp b/fon/Label.cpp
index 20bf76a..edafc88 100644
--- a/fon/Label.cpp
+++ b/fon/Label.cpp
@@ -1,37 +1,36 @@
 /* Label.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Label.h"
 
 Thing_implement (Autosegment, Function, 0);
 
-void structAutosegment :: v_copy (thou) {
-	thouart (Autosegment);
+void structAutosegment :: v_copy (Daata thee_Daata) {
+	Autosegment thee = static_cast <Autosegment> (thee_Daata);
 	Autosegment_Parent :: v_copy (thee);
 	if (name) Thing_setName (thee, name);
 }
 
-bool structAutosegment :: v_equal (thou) {
-	thouart (Autosegment);
+bool structAutosegment :: v_equal (Daata thee_Daata) {
+	Autosegment thee = static_cast <Autosegment> (thee_Daata);
 	if (! Autosegment_Parent :: v_equal (thee)) return false;
-	if (name == NULL && thy name == NULL) return true;   // shortcut: no names
-	if (name == NULL || thy name == NULL) return false;
+	if (! our name && ! thy name) return true;   // shortcut: no names
+	if (! our name || ! thy name) return false;
 	return str32equ (name, thy name);
 }
 
@@ -41,93 +40,53 @@ static struct structData_Description theAutosegment_description [] = {
 	{ 0 } };
 Data_Description structAutosegment :: s_description = & theAutosegment_description [0];
 
-Autosegment Autosegment_create (double tmin, double tmax, const char32 *label) {
+autoAutosegment Autosegment_create (double tmin, double tmax, const char32 *label) {
 	try {
 		autoAutosegment me = Thing_new (Autosegment);
-		Function_init (me.peek(), tmin, tmax);
-		if (label != NULL) {
-			Thing_setName (me.peek(), label);
+		Function_init (me.get(), tmin, tmax);
+		if (label) {
+			Thing_setName (me.get(), label);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Autosegment not created.");
 	}
 }
 
-int structTier :: compare (I, thou) {
-	iam (Function); thouart (Function);
-	if (my xmin < thy xmin) return -1;
-	if (my xmin > thy xmin) return 1;
-	if (my xmax < thy xmax) return -1;
-	if (my xmax > thy xmax) return 1;
-	return 0;
-}
+/********** class Tier **********/
 
 Thing_implement (Tier, Sorted, 0);
 
-void Tier_init (I, long initialCapacity) {
-	iam (Tier);
-	Sorted_init (me, classAutosegment, initialCapacity);
-	Collection_addItem (me, Autosegment_create (-1e30, 1e30, NULL));
-}
-
-Tier Tier_create (long initialCapacity) {
-	try {
-		autoTier me = Thing_new (Tier);
-		Tier_init (me.peek(), initialCapacity);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Tier not created.");
-	}
-}
-
-long Tier_timeToIndex (Tier me, double t) {
+long Tier_timeToIndex (Tier me, double time) {
 	for (long i = 1; i <= my size; i ++) {
-		Autosegment interval = (Autosegment) my item [i];
-		if (t >= interval -> xmin && t < interval -> xmax)
+		Autosegment interval = my at [i];
+		if (time >= interval -> xmin && time < interval -> xmax)
 			return i;
 	}
-	return 0;   /* Empty tier or very large t. */
+	return 0;   // empty tier or very large time
 }
 
 Thing_implement (Label, Ordered, 0);
 
-void Label_init (I, long initialNumberOfTiers) {
-	iam (Label);
-	Ordered_init (me, classTier, initialNumberOfTiers);
-	for (long i = 1; i <= initialNumberOfTiers; i ++) {
-		Collection_addItem (me, Tier_create (10));
-	}
-}
-
-Label Label_create (long initialNumberOfTiers) {
-	try {
-		autoLabel me = Thing_new (Label);
-		Label_init (me.peek(), initialNumberOfTiers);
-		return me.transfer();
-	} catch (MelderError) {
-		Melder_throw (U"Label not created.");
-	}
-}
-
 void Label_addTier (Label me) {
-	Collection_addItem (me, Tier_create (10));
+	autoTier tier = Tier_create ();
+	my addItem_move (tier.move());
 }
 
 void Label_suggestDomain (Label me, double *tmin, double *tmax) {
 	*tmin = 0.0;
 	*tmax = 0.0;
 	for (int itier = 1; itier <= my size; itier ++) {
-		Tier tier = (Tier) my item [itier];
-		if (tier -> size) {
-			Autosegment seg = (Autosegment) tier -> item [1];
+		Tier tier = my at [itier];
+		if (tier->size > 0) {
+			Autosegment seg = tier->at [1];
 			if (seg -> xmin <= *tmin) {
 				if (seg -> name && seg -> name [0])
 					*tmin = seg -> xmin - 1.0;
 				else
 					*tmin = seg -> xmin;
 			}
-			seg = (Autosegment) tier -> item [tier -> size];
+			seg = tier->at [tier->size];
 			if (seg -> xmax >= *tmax)
 				*tmax = seg -> xmax;
 		}
diff --git a/fon/Label.h b/fon/Label.h
index bb31557..3388212 100644
--- a/fon/Label.h
+++ b/fon/Label.h
@@ -4,94 +4,101 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 #include "Function.h"
 
+
+#pragma mark - class Autosegment
+
 Thing_define (Autosegment, Function) {
-	void v_copy (Any data_to)
+	void v_copy (Daata data_to)
 		override;
-	bool v_equal (Any otherData)
+	bool v_equal (Daata otherData)
 		override;
 	static Data_Description s_description;
 	Data_Description v_description ()
 		override { return s_description; }
 };
 
-Autosegment Autosegment_create (double tmin, double tmax, const char32 *label);
+autoAutosegment Autosegment_create (double tmin, double tmax, const char32 *label);
 /*
 	Function:
 		create a new instance of Autosegment.
 	Return value:
-		the new Autosegment, or NULL if out of memory.
+		the new Autosegment.
 	Preconditions:
 		tmax > tmin;
-		label may be NULL;
+		label may be null;
 	Postconditions:
 		result -> tmin == tmin;
 		result -> tmax == tmax;
-		if (label != NULL)
-			result -> name == NULL;
+		if (label)
+			result -> name == nullptr;
 		else
 			result -> name [] == label [];   // 'label' copied into 'name'
 */
 
-Thing_define (Tier, Sorted) {
-	static int compare (Any data1, Any data2);
-	int (*v_getCompareFunction ()) (Any data1, Any data2)
-		override { return compare; }
-};
 
-void Tier_init (I, long initialCapacity);
+#pragma mark - class Tier
 
-Tier Tier_create (long initialCapacity);
-/*
-	Function:
-		create a new Tier containing one Autosegment from -1e30 to 1e30.
-	Return value:
-		the new Tier, or NULL if out of memory.
-	Postconditions:
-		my size == 1;
-		my item [1] -> methods == classAutosegment;
-		my item [1] -> xmin == -1e30;
-		my item [1] -> xmax == 1e30;
-		my item [1] -> name == NULL;
-*/
+Collection_define (Tier, SortedOf, Autosegment) {
 
-long Tier_timeToIndex (Tier me, double t);
-/*
-	Return value:
+	/**
+		Initialize a new Tier containing one Autosegment from -1e30 to 1e30.
+		@post
+			this->size == 1;
+			this->at [1] -> classInfo == classAutosegment;
+			this->at [1] -> xmin == -1e30;
+			this->at [1] -> xmax == 1e30;
+			this->at [1] -> name == nullptr;
+	*/
+	structTier () {
+		our classInfo = classTier;
+		our addItem_move (Autosegment_create (-1e30, 1e30, nullptr));
+	}
+
+	static int compareHook (Autosegment me, Autosegment thee) {
+		if (my xmin < thy xmin) return -1;
+		if (my xmin > thy xmin) return 1;
+		if (my xmax < thy xmax) return -1;
+		if (my xmax > thy xmax) return 1;
+		return 0;
+	}
+	SortedOf<structAutosegment>::CompareHook v_getCompareHook () override { return compareHook; }
+};
+
+/**
+	@return
 		index, or 0 if the tier is empty or t is very large.
-	Postconditions:
+	@post
 		result == 0 || my item [i] -> xmin <= result < my item [i] -> xmax;
 */
+long Tier_timeToIndex (Tier me, double t);
 
-void Tier_init (I, long initialCapacity);
 
-Thing_define (Label, Ordered) {
-};
+#pragma mark - class Label
 
-Label Label_create (long initialNumberOfTiers);
-
-void Label_init (I, long initialNumberOfTiers);
+Collection_define (Label, OrderedOf, Tier) {
+};
 
 void Label_addTier (Label me);
 
 void Label_suggestDomain (Label me, double *tmin, double *tmax);
 
-#endif
+
 /* End of file Label.h */
+#endif
diff --git a/fon/LongSound.cpp b/fon/LongSound.cpp
index b588894..d9c1c6a 100644
--- a/fon/LongSound.cpp
+++ b/fon/LongSound.cpp
@@ -1,20 +1,19 @@
 /* LongSound.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma, 2007 Erez Volk (for FLAC and MP3)
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma, 2007 Erez Volk (for FLAC and MP3)
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -48,20 +47,21 @@
 #include "mp3.h"
 
 Thing_implement (LongSound, Sampled, 0);
+Thing_implement (SoundAndLongSoundList, Ordered, 0);
 
 #define MARGIN  0.01
 #define USE_MEMMOVE  1
 
 static long prefs_bufferLength;
 
-void LongSound_preferences (void) {
+void LongSound_preferences () {
 	Preferences_addLong (U"LongSound.bufferLength", & prefs_bufferLength, 60);   // seconds
 }
 
-long LongSound_getBufferSizePref_seconds (void) { return prefs_bufferLength; }
+long LongSound_getBufferSizePref_seconds () { return prefs_bufferLength; }
 void LongSound_setBufferSizePref_seconds (long size) { prefs_bufferLength = size < 10 ? 10 : size > 10000 ? 10000: size; }
 
-void structLongSound :: v_destroy () {
+void structLongSound :: v_destroy () noexcept {
 	/*
 	 * The play callback may contain a pointer to my buffer.
 	 * That pointer is about to dangle, so kill the playback.
@@ -74,7 +74,7 @@ void structLongSound :: v_destroy () {
 		FLAC__stream_decoder_delete (flacDecoder);
 	}
 	else if (f) fclose (f);
-	NUMvector_free <short> (buffer, 0);
+	NUMvector_free <int16> (buffer, 0);
 	LongSound_Parent :: v_destroy ();
 }
 
@@ -87,7 +87,7 @@ void structLongSound :: v_info () {
 		U"mu-law", U"A-law", U"shorten", U"polyphone",
 		U"IEEE float 32 bit big-endian", U"IEEE float 32 bit little-endian",
 		U"FLAC", U"FLAC", U"FLAC", U"MP3", U"MP3", U"MP3" };
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Duration: ", xmax - xmin, U" seconds");
 	MelderInfo_writeLine (U"File name: ", Melder_fileToPath (& file));
 	MelderInfo_writeLine (U"File type: ", audioFileType > Melder_NUMBER_OF_AUDIO_FILE_TYPES ? U"unknown" : Melder_audioFileTypeString (audioFileType));
@@ -98,31 +98,31 @@ void structLongSound :: v_info () {
 	MelderInfo_writeLine (U"Start of sample data: ", startOfData, U" bytes from the start of the file");
 }
 
-static void _LongSound_FLAC_convertFloats (LongSound me, const FLAC__int32 * const samples[], long bitsPerSample, long numberOfSamples) {
+static void _LongSound_FLAC_convertFloats (LongSound me, const int32 * const samples[], long bitsPerSample, long numberOfSamples) {
 	double multiplier;
 	switch (bitsPerSample) {
-		case 8: multiplier = (1.0f / 128); break;
-		case 16: multiplier = (1.0f / 32768); break;
-		case 24: multiplier = (1.0f / 8388608); break;
-		case 32: multiplier = (1.0f / 32768 / 65536); break;
+		case 8: multiplier = (1.0 / 128.0); break;
+		case 16: multiplier = (1.0 / 32768.0); break;
+		case 24: multiplier = (1.0 / 8388608.0); break;
+		case 32: multiplier = (1.0 / 32768.0 / 65536.0); break;
 		default: multiplier = 0.0;
 	}
 	for (long i = 0; i < 2; ++i) {
-		const FLAC__int32 *input = samples [i];
+		const int32 *input = samples [i];
 		double *output = my compressedFloats [i];
 		if (! output ) continue;
 		for (long j = 0; j < numberOfSamples; ++j)
-			output [j] = (long)input [j] * multiplier;
+			output [j] = (double) input [j] * multiplier;
 		my compressedFloats [i] += numberOfSamples;
 	}
 }
 
-static void _LongSound_FLAC_convertShorts (LongSound me, const FLAC__int32 * const samples[], long bitsPerSample, long numberOfSamples) {
+static void _LongSound_FLAC_convertShorts (LongSound me, const int32 * const samples[], long bitsPerSample, long numberOfSamples) {
 	for (long channel = 0; channel < my numberOfChannels; ++ channel) {
-		short *output = my compressedShorts + channel;
-		const FLAC__int32 *input = samples [channel];
+		int16 *output = my compressedShorts + channel;
+		const int32 *input = samples [channel];
 		for (long j = 0; j < numberOfSamples; ++ j, output += my numberOfChannels) {
-			FLAC__int32 sample = * (input ++);
+			int32 sample = * (input ++);
 			switch (bitsPerSample) {
 				case 8: sample *= 256; break;
 				case 16: break;
@@ -130,13 +130,13 @@ static void _LongSound_FLAC_convertShorts (LongSound me, const FLAC__int32 * con
 				case 32: sample /= 65536; break;
 				default: sample = 0; break;
 			}
-			*output = (short) sample;
+			*output = (int16) sample;
 		}
 	}
 	my compressedShorts += numberOfSamples * my numberOfChannels;
 }
 
-static FLAC__StreamDecoderWriteStatus _LongSound_FLAC_write (const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], I) {
+static FLAC__StreamDecoderWriteStatus _LongSound_FLAC_write (const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *void_me) {
 	iam (LongSound);
 	const FLAC__FrameHeader *header = & frame -> header;
 	long numberOfSamples = header -> blocksize;
@@ -154,14 +154,10 @@ static FLAC__StreamDecoderWriteStatus _LongSound_FLAC_write (const FLAC__StreamD
 	return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
 }
 
-static void _LongSound_FLAC_error (const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, I) {
-	iam (LongSound);
-	(void) me;
-	(void) decoder;
-	(void) status;
+static void _LongSound_FLAC_error (const FLAC__StreamDecoder * /* decoder */, FLAC__StreamDecoderErrorStatus /* status */, void * /* longSound */) {
 }
 
-static void _LongSound_MP3_convertFloats (LongSound me, const MP3F_SAMPLE *channels[MP3F_MAX_CHANNELS], long numberOfSamples) {
+static void _LongSound_MP3_convertFloats (LongSound me, const MP3F_SAMPLE *channels [MP3F_MAX_CHANNELS], long numberOfSamples) {
 	for (long i = 0; i < 2; ++i) {
 		const MP3F_SAMPLE *input = channels [i];
 		double *output = my compressedFloats [i];
@@ -172,10 +168,10 @@ static void _LongSound_MP3_convertFloats (LongSound me, const MP3F_SAMPLE *chann
 	}
 }
 
-static void _LongSound_MP3_convertShorts (LongSound me, const MP3F_SAMPLE *channels[MP3F_MAX_CHANNELS], long numberOfSamples) {
+static void _LongSound_MP3_convertShorts (LongSound me, const MP3F_SAMPLE *channels [MP3F_MAX_CHANNELS], long numberOfSamples) {
 	for (long i = 0; i < my numberOfChannels; ++ i) {
 		const MP3F_SAMPLE *input = channels [i];
-		short *output = my compressedShorts + i;
+		int16 *output = my compressedShorts + i;
 		for (long j = 0; j < numberOfSamples; ++j, output += my numberOfChannels) {
 			int sample = *input++;
 			*output = mp3f_sample_to_short (sample);
@@ -184,7 +180,7 @@ static void _LongSound_MP3_convertShorts (LongSound me, const MP3F_SAMPLE *chann
 	my compressedShorts += numberOfSamples * my numberOfChannels;
 }
 
-static void _LongSound_MP3_convert (const MP3F_SAMPLE *channels[MP3F_MAX_CHANNELS], long numberOfSamples, I) {
+static void _LongSound_MP3_convert (const MP3F_SAMPLE *channels [MP3F_MAX_CHANNELS], long numberOfSamples, void *void_me) {
 	iam (LongSound);
 	if (numberOfSamples > my compressedSamplesLeft)
 		numberOfSamples = my compressedSamplesLeft;
@@ -217,7 +213,7 @@ static void LongSound_init (LongSound me, MelderFile file) {
 	for (;;) {
 		my nmax = my bufferLength * my numberOfChannels * my sampleRate * (1 + 3 * MARGIN);
 		try {
-			my buffer = NUMvector <short> (0, my nmax * my numberOfChannels);
+			my buffer = NUMvector <int16> (0, my nmax * my numberOfChannels);
 			break;
 		} catch (MelderError) {
 			my bufferLength *= 0.5;   // try 30, 15, or 7.5 seconds
@@ -228,12 +224,12 @@ static void LongSound_init (LongSound me, MelderFile file) {
 	}
 	my imin = 1;
 	my imax = 0;
-	my flacDecoder = NULL;
+	my flacDecoder = nullptr;
 	if (my audioFileType == Melder_FLAC) {
 		my flacDecoder = FLAC__stream_decoder_new ();
-		FLAC__stream_decoder_init_FILE (my flacDecoder, my f, _LongSound_FLAC_write, NULL, _LongSound_FLAC_error, me);
+		FLAC__stream_decoder_init_FILE (my flacDecoder, my f, _LongSound_FLAC_write, nullptr, _LongSound_FLAC_error, me);
 	}
-	my mp3f = NULL;
+	my mp3f = nullptr;
 	if (my audioFileType == Melder_MP3) {
 		my mp3f = mp3f_new ();
 		mp3f_set_file (my mp3f, my f);
@@ -245,18 +241,18 @@ static void LongSound_init (LongSound me, MelderFile file) {
 	}
 }
 
-void structLongSound :: v_copy (thou) {
-	thouart (LongSound);
-	thy f = NULL;
-	thy buffer = NULL;
+void structLongSound :: v_copy (Daata thee_Daata) {
+	LongSound thee = static_cast <LongSound> (thee_Daata);
+	thy f = nullptr;
+	thy buffer = nullptr;
 	LongSound_init (thee, & file);
 }
 
-LongSound LongSound_open (MelderFile file) {
+autoLongSound LongSound_open (MelderFile file) {
 	try {
 		autoLongSound me = Thing_new (LongSound);
-		LongSound_init (me.peek(), file);
-		return me.transfer();
+		LongSound_init (me.get(), file);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LongSound not created.");
 	}
@@ -279,7 +275,7 @@ static void _LongSound_FILE_seekSample (LongSound me, long firstSample) {
 		Melder_throw (U"Cannot seek in file ", & my file, U".");
 }
 
-static void _LongSound_FLAC_readAudioToShort (LongSound me, short *buffer, long firstSample, long numberOfSamples) {
+static void _LongSound_FLAC_readAudioToShort (LongSound me, int16 *buffer, long firstSample, long numberOfSamples) {
 	my compressedMode = COMPRESSED_MODE_READ_SHORT;
 	my compressedShorts = buffer + 1;
 	_LongSound_FLAC_process (me, firstSample, numberOfSamples);
@@ -293,7 +289,7 @@ static void _LongSound_MP3_process (LongSound me, long firstSample, long numberO
 		Melder_throw (U"Error decoding MP3 file ", & my file, U".");
 }
 
-static void _LongSound_MP3_readAudioToShort (LongSound me, short *buffer, long firstSample, long numberOfSamples) {
+static void _LongSound_MP3_readAudioToShort (LongSound me, int16 *buffer, long firstSample, long numberOfSamples) {
 	my compressedMode = COMPRESSED_MODE_READ_SHORT;
 	my compressedShorts = buffer + 1;
 	_LongSound_MP3_process (me, firstSample, numberOfSamples - 1);
@@ -318,7 +314,7 @@ void LongSound_readAudioToFloat (LongSound me, double **buffer, long firstSample
 	}
 }
 
-void LongSound_readAudioToShort (LongSound me, short *buffer, long firstSample, long numberOfSamples) {
+void LongSound_readAudioToShort (LongSound me, int16 *buffer, long firstSample, long numberOfSamples) {
 	if (my encoding == Melder_FLAC_COMPRESSION_16) {
 		_LongSound_FLAC_readAudioToShort (me, buffer, firstSample, numberOfSamples);
 	} else if (my encoding == Melder_MPEG_COMPRESSION_16) {
@@ -329,7 +325,7 @@ void LongSound_readAudioToShort (LongSound me, short *buffer, long firstSample,
 	}
 }
 
-Sound LongSound_extractPart (LongSound me, double tmin, double tmax, int preserveTimes) {
+autoSound LongSound_extractPart (LongSound me, double tmin, double tmax, int preserveTimes) {
 	try {
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
 		if (tmin < my xmin) tmin = my xmin;
@@ -340,13 +336,13 @@ Sound LongSound_extractPart (LongSound me, double tmin, double tmax, int preserv
 		autoSound thee = Sound_create (my numberOfChannels, tmin, tmax, n, my dx, my x1 + (imin - 1) * my dx);
 		if (! preserveTimes) thy xmin = 0.0, thy xmax -= tmin, thy x1 -= tmin;
 		LongSound_readAudioToFloat (me, thy z, imin, n);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Sound not extracted.");
 	}
 }
 
-static void _LongSound_readSamples (LongSound me, short *buffer, long imin, long imax) {
+static void _LongSound_readSamples (LongSound me, int16 *buffer, long imin, long imax) {
 	LongSound_readAudioToShort (me, buffer, imin, imax - imin + 1);
 }
 
@@ -368,7 +364,7 @@ static void writePartToOpenFile (LongSound me, int audioFileType, long imin, lon
 	my imax = 0;
 }
 
-void LongSound_writePartToAudioFile (LongSound me, int audioFileType, double tmin, double tmax, MelderFile file) {
+void LongSound_writePartToAudioFile (LongSound me, int audioFileType, double tmin, double tmax, MelderFile file, int numberOfBitsPerSamplePoint) {
 	try {
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
 		if (tmin < my xmin) tmin = my xmin;
@@ -377,9 +373,9 @@ void LongSound_writePartToAudioFile (LongSound me, int audioFileType, double tmi
 		long n = Sampled_getWindowSamples (me, tmin, tmax, & imin, & imax);
 		if (n < 1) Melder_throw (U"Less than 1 sample selected.");
 		autoMelderFile mfile = MelderFile_create (file);
-		MelderFile_writeAudioFileHeader (file, audioFileType, my sampleRate, n, my numberOfChannels, 8 * my numberOfBytesPerSamplePoint);
-		writePartToOpenFile (me, audioFileType, imin, n, file, 0, 8 * my numberOfBytesPerSamplePoint);
-		MelderFile_writeAudioFileTrailer (file, audioFileType, my sampleRate, n, my numberOfChannels, 8 * my numberOfBytesPerSamplePoint);
+		MelderFile_writeAudioFileHeader (file, audioFileType, my sampleRate, n, my numberOfChannels, numberOfBitsPerSamplePoint);
+		writePartToOpenFile (me, audioFileType, imin, n, file, 0, numberOfBitsPerSamplePoint);
+		MelderFile_writeAudioFileTrailer (file, audioFileType, my sampleRate, n, my numberOfChannels, numberOfBitsPerSamplePoint);
 		mfile.close ();
 	} catch (MelderError) {
 		Melder_throw (me, U": not written to sound file ", file, U".");
@@ -423,9 +419,9 @@ static void _LongSound_haveSamples (LongSound me, long imin, long imax) {
 	 */
 	imin -= MARGIN * n;
 	if (imin < 1) imin = 1;
-	imax = imin + (1.0 + 2 * MARGIN) * n;
+	imax = imin + (long) floor ((1.0 + 2.0 * MARGIN) * n);
 	if (imax > my nx) imax = my nx;
-	imin = imax - (1.0 + 2 * MARGIN) * n;
+	imin = imax - (long) floor ((1.0 + 2.0 * MARGIN) * n);
 	if (imin < 1) imin = 1;
 	Melder_assert (imax - imin + 1 <= my nmax);
 	/*
@@ -446,7 +442,7 @@ static void _LongSound_haveSamples (LongSound me, long imin, long imax) {
 			 */
 			long nshift = (imax - my imin + 1) * my numberOfChannels, shift = (my imin - imin) * my numberOfChannels;
 			#if USE_MEMMOVE
-				memmove (my buffer + shift, my buffer, nshift * sizeof (short));
+				memmove (my buffer + shift, my buffer, nshift * sizeof (int16));
 			#else
 				for (i = nshift - 1; i >= 0; i --)
 					my buffer [i + shift] = my buffer [i];
@@ -458,7 +454,7 @@ static void _LongSound_haveSamples (LongSound me, long imin, long imax) {
 			 */
 			long nshift = (my imax - my imin + 1) * my numberOfChannels, shift = (my imin - imin) * my numberOfChannels;
 			#if USE_MEMMOVE
-				memmove (my buffer + shift, my buffer, nshift * sizeof (short));
+				memmove (my buffer + shift, my buffer, nshift * sizeof (int16));
 			#else
 				for (i = nshift - 1; i >= 0; i --)
 					my buffer [i + shift] = my buffer [i];
@@ -472,7 +468,7 @@ static void _LongSound_haveSamples (LongSound me, long imin, long imax) {
 		 */
 		long nshift = (my imax - imin + 1) * my numberOfChannels, shift = (imin - my imin) * my numberOfChannels;
 		#if USE_MEMMOVE
-			memmove (my buffer, my buffer + shift, nshift * sizeof (short));
+			memmove (my buffer, my buffer + shift, nshift * sizeof (int16));
 		#else
 			for (i = 0; i < nshift; i ++)
 				my buffer [i] = my buffer [i + shift];
@@ -492,7 +488,6 @@ bool LongSound_haveWindow (LongSound me, double tmin, double tmax) {
 
 void LongSound_getWindowExtrema (LongSound me, double tmin, double tmax, int channel, double *minimum, double *maximum) {
 	long imin, imax;
-	long i, minimum_int = 32767, maximum_int = -32768;
 	(void) Sampled_getWindowSamples (me, tmin, tmax, & imin, & imax);
 	*minimum = 1.0;
 	*maximum = -1.0;
@@ -502,7 +497,8 @@ void LongSound_getWindowExtrema (LongSound me, double tmin, double tmax, int cha
 		Melder_clearError ();
 		return;
 	}
-	for (i = imin; i <= imax; i ++) {
+	long minimum_int = 32767, maximum_int = -32768;
+	for (long i = imin; i <= imax; i ++) {
 		long value = my buffer [(i - my imin) * my numberOfChannels + channel - 1];
 		if (value < minimum_int) minimum_int = value;
 		if (value > maximum_int) maximum_int = value;
@@ -514,9 +510,9 @@ void LongSound_getWindowExtrema (LongSound me, double tmin, double tmax, int cha
 static struct LongSoundPlay {
 	long numberOfSamples, i1, i2, silenceBefore, silenceAfter;
 	double tmin, tmax, dt, t1;
-	short *resampledBuffer;
-	int (*callback) (void *closure, int phase, double tmin, double tmax, double t);
-	void *closure;
+	int16 *resampledBuffer;
+	Sound_PlayCallback callback;
+	Thing boss;
 } thePlayingLongSound;
 
 static bool melderPlayCallback (void *closure, long samplesPlayed) {
@@ -530,12 +526,12 @@ static bool melderPlayCallback (void *closure, long samplesPlayed) {
 		Melder_free (my resampledBuffer);
 	}
 	if (my callback)
-		return my callback (my closure, phase, my tmin, my tmax, t);
+		return my callback (my boss, phase, my tmin, my tmax, t);
 	return true;
 }
 
 void LongSound_playPart (LongSound me, double tmin, double tmax,
-	int (*callback) (void *closure, int phase, double tmin, double tmax, double t), void *closure)
+	Sound_PlayCallback callback, Thing boss)
 {
 	struct LongSoundPlay *thee = (struct LongSoundPlay *) & thePlayingLongSound;
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
@@ -551,7 +547,7 @@ void LongSound_playPart (LongSound me, double tmin, double tmax,
 		thy tmin = tmin;
 		thy tmax = tmax;
 		thy callback = callback;
-		thy closure = closure;
+		thy boss = boss;
 		if ((n = Sampled_getWindowSamples (me, tmin, tmax, & i1, & i2)) < 2) return;
 		if (bestSampleRate == my sampleRate) {
 			thy numberOfSamples = n;
@@ -561,11 +557,11 @@ void LongSound_playPart (LongSound me, double tmin, double tmax,
 			thy i2 = i2;
 			thy silenceBefore = (long) (my sampleRate * MelderAudio_getOutputSilenceBefore ());
 			thy silenceAfter = (long) (my sampleRate * MelderAudio_getOutputSilenceAfter ());
-			if (thy callback) thy callback (thy closure, 1, tmin, tmax, tmin);
+			if (thy callback) thy callback (thy boss, 1, tmin, tmax, tmin);
 			if (thy silenceBefore > 0 || thy silenceAfter > 0 || 1) {
-				thy resampledBuffer = Melder_calloc (short, (thy silenceBefore + thy numberOfSamples + thy silenceAfter) * my numberOfChannels);
+				thy resampledBuffer = Melder_calloc (int16, (thy silenceBefore + thy numberOfSamples + thy silenceAfter) * my numberOfChannels);
 				memcpy (& thy resampledBuffer [thy silenceBefore * my numberOfChannels], & my buffer [(i1 - my imin) * my numberOfChannels],
-					thy numberOfSamples * sizeof (short) * my numberOfChannels);
+					thy numberOfSamples * sizeof (int16) * my numberOfChannels);
 				MelderAudio_play16 (thy resampledBuffer, my sampleRate, thy silenceBefore + thy numberOfSamples + thy silenceAfter,
 					my numberOfChannels, melderPlayCallback, thee);
 			} else {
@@ -574,11 +570,11 @@ void LongSound_playPart (LongSound me, double tmin, double tmax,
 			}
 		} else {
 			long newSampleRate = bestSampleRate;
-			long newN = ((double) n * newSampleRate) / my sampleRate - 1, i;
+			long newN = ((double) n * newSampleRate) / my sampleRate - 1;
 			long silenceBefore = (long) (newSampleRate * MelderAudio_getOutputSilenceBefore ());
 			long silenceAfter = (long) (newSampleRate * MelderAudio_getOutputSilenceAfter ());
-			short *resampledBuffer = Melder_calloc (short, (silenceBefore + newN + silenceAfter) * my numberOfChannels);
-			short *from = my buffer + (i1 - my imin) * my numberOfChannels;   /* Guaranteed: from [0 .. (my imax - my imin + 1) * nchan] */
+			int16 *resampledBuffer = Melder_calloc (int16, (silenceBefore + newN + silenceAfter) * my numberOfChannels);
+			int16 *from = my buffer + (i1 - my imin) * my numberOfChannels;   // guaranteed: from [0 .. (my imax - my imin + 1) * nchan]
 			double t1 = my x1, dt = 1.0 / newSampleRate;
 			thy numberOfSamples = newN;
 			thy dt = dt;
@@ -589,36 +585,38 @@ void LongSound_playPart (LongSound me, double tmin, double tmax,
 			thy silenceAfter = silenceAfter;
 			thy resampledBuffer = resampledBuffer;
 			if (my numberOfChannels == 1) {
-				for (i = 0; i < newN; i ++) {
-					double t = t1 + i * dt;   /* From t1 to t1 + (newN-1) * dt */
-					double index = (t - t1) * my sampleRate;   /* From 0. */
-					long flore = index;   /* DANGEROUS: Implicitly rounding down... */
+				for (long i = 0; i < newN; i ++) {
+					double t = t1 + i * dt;   // from t1 to t1 + (newN-1) * dt
+					double index = (t - t1) * my sampleRate;   // from 0
+					long flore = index;   // DANGEROUS: Implicitly rounding down...
 					double fraction = index - flore;
-					resampledBuffer [i + silenceBefore] = (1 - fraction) * from [flore] + fraction * from [flore + 1];
+					resampledBuffer [i + silenceBefore] = (1.0 - fraction) * from [flore] + fraction * from [flore + 1];
 				}
 			} else if (my numberOfChannels == 2) {
-				for (i = 0; i < newN; i ++) {
+				for (long i = 0; i < newN; i ++) {
 					double t = t1 + i * dt;
 					double index = (t - t1) * my sampleRate;
 					long flore = index;
 					double fraction = index - flore;
 					long ii = i + silenceBefore;
-					resampledBuffer [ii + ii] = (1 - fraction) * from [flore + flore] + fraction * from [flore + flore + 2];
-					resampledBuffer [ii + ii + 1] = (1 - fraction) * from [flore + flore + 1] + fraction * from [flore + flore + 3];
+					resampledBuffer [ii + ii] = (1.0 - fraction) * from [flore + flore] + fraction * from [flore + flore + 2];
+					resampledBuffer [ii + ii + 1] = (1.0 - fraction) * from [flore + flore + 1] + fraction * from [flore + flore + 3];
 				}
 			} else {
-				for (i = 0; i < newN; i ++) {
+				for (long i = 0; i < newN; i ++) {
 					double t = t1 + i * dt;
 					double index = (t - t1) * my sampleRate;
 					long flore = index;
 					double fraction = index - flore;
 					long ii = (i + silenceBefore) * my numberOfChannels;
 					for (long chan = 0; chan < my numberOfChannels; chan ++) {
-						resampledBuffer [ii + chan] = (1 - fraction) * from [flore + flore + chan] + fraction * from [flore + flore + chan + my numberOfChannels];
+						resampledBuffer [ii + chan] =
+							(1.0 - fraction) * from [flore * my numberOfChannels + chan] +
+							fraction * from [(flore + 1) * my numberOfChannels + chan];
 					}
 				}
 			}
-			if (thy callback) thy callback (thy closure, 1, tmin, tmax, tmin);
+			if (thy callback) thy callback (thy boss, 1, tmin, tmax, tmin);
 			MelderAudio_play16 (resampledBuffer, newSampleRate, silenceBefore + newN + silenceAfter, my numberOfChannels, melderPlayCallback, thee);
 		}
 		//Melder_free (thy resampledBuffer);   // cannot do that, because MelderAudio_play16 isn't necessarily synchronous
@@ -628,7 +626,7 @@ void LongSound_playPart (LongSound me, double tmin, double tmax,
 	}
 }
 
-void LongSound_concatenate (Collection me, MelderFile file, int audioFileType, int numberOfBitsPerSamplePoint) {
+void LongSound_concatenate (SoundAndLongSoundList me, MelderFile file, int audioFileType, int numberOfBitsPerSamplePoint) {
 	try {
 		long sampleRate, n;   /* Integer sampling frequencies only, because of possible rounding errors. */
 		int numberOfChannels;
@@ -636,10 +634,10 @@ void LongSound_concatenate (Collection me, MelderFile file, int audioFileType, i
 		/*
 		 * The sampling frequencies and numbers of channels must be equal for all (long)sounds.
 		 */
-		Sampled data = (Sampled) my item [1];
+		Sampled data = my at [1];
 		if (data -> classInfo == classSound) {
 			Sound sound = (Sound) data;
-			sampleRate = floor (1.0 / sound -> dx + 0.5);
+			sampleRate = lround (1.0 / sound -> dx);
 			numberOfChannels = sound -> ny;
 			n = sound -> nx;
 		} else {
@@ -653,7 +651,7 @@ void LongSound_concatenate (Collection me, MelderFile file, int audioFileType, i
 		 */
 		for (long i = 2; i <= my size; i ++) {
 			int sampleRatesMatch, numbersOfChannelsMatch;
-			data = (Sampled) my item [i];
+			data = my at [i];
 			if (data -> classInfo == classSound) {
 				Sound sound = (Sound) data;
 				sampleRatesMatch = round (1.0 / sound -> dx) == sampleRate;
@@ -678,12 +676,12 @@ void LongSound_concatenate (Collection me, MelderFile file, int audioFileType, i
 			MelderFile_writeAudioFileHeader (file, audioFileType, sampleRate, n, numberOfChannels, numberOfBitsPerSamplePoint);
 		}
 		for (long i = 1; i <= my size; i ++) {
-			data = (Sampled) my item [i];
+			data = my at [i];
 			if (data -> classInfo == classSound) {
 				Sound sound = (Sound) data;
 				if (file -> filePointer) {
 					MelderFile_writeFloatToAudio (file, sound -> ny, Melder_defaultAudioFileEncoding (audioFileType, numberOfBitsPerSamplePoint),
-						sound -> z, sound -> nx, TRUE);
+						sound -> z, sound -> nx, true);
 				}
 			} else {
 				LongSound longSound = (LongSound) data;
diff --git a/fon/LongSound.h b/fon/LongSound.h
index 061d98e..d4e5606 100644
--- a/fon/LongSound.h
+++ b/fon/LongSound.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma, 2007 Erez Volk (for FLAC, MP3)
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -36,20 +35,20 @@ Thing_define (LongSound, Sampled) {
 	double sampleRate;
 	long startOfData;
 	double bufferLength;
-	short *buffer;
+	int16 *buffer;   // this is always 16-bit, because will always play sounds in 16-bit, even those from 24-bit files
 	long imin, imax, nmax;
 	struct FLAC__StreamDecoder *flacDecoder;
 	struct _MP3_FILE *mp3f;
 	int compressedMode;
 	long compressedSamplesLeft;
 	double *compressedFloats [2];
-	short *compressedShorts;
+	int16 *compressedShorts;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
-	void v_copy (Any data_to)
+	void v_copy (Daata data_to)
 		override;
 	bool v_writable ()
 		override { return false; }
@@ -57,9 +56,9 @@ Thing_define (LongSound, Sampled) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-LongSound LongSound_open (MelderFile fs);
+autoLongSound LongSound_open (MelderFile file);
 
-Sound LongSound_extractPart (LongSound me, double tmin, double tmax, int preserveTimes);
+autoSound LongSound_extractPart (LongSound me, double tmin, double tmax, int preserveTimes);
 
 bool LongSound_haveWindow (LongSound me, double tmin, double tmax);
 /*
@@ -69,19 +68,21 @@ bool LongSound_haveWindow (LongSound me, double tmin, double tmax);
 void LongSound_getWindowExtrema (LongSound me, double tmin, double tmax, int channel, double *minimum, double *maximum);
 
 void LongSound_playPart (LongSound me, double tmin, double tmax,
-	int (*callback) (void *closure, int phase, double tmin, double tmax, double t), void *closure);
+	Sound_PlayCallback callback, Thing boss);
 
-void LongSound_writePartToAudioFile (LongSound me, int audioFileType, double tmin, double tmax, MelderFile file);
+void LongSound_writePartToAudioFile (LongSound me, int audioFileType, double tmin, double tmax, MelderFile file, int numberOfBitsPerSamplePoint);
 void LongSound_writeChannelToAudioFile (LongSound me, int audioFileType, int channel, MelderFile file);
 
 void LongSound_readAudioToFloat (LongSound me, double **buffer, long firstSample, long numberOfSamples);
-void LongSound_readAudioToShort (LongSound me, short *buffer, long firstSample, long numberOfSamples);
+void LongSound_readAudioToShort (LongSound me, int16 *buffer, long firstSample, long numberOfSamples);
 
-void LongSound_concatenate (Collection collection, MelderFile file, int audioFileType, int numberOfBitsPerSamplePoint);
-/* Concatenate a collection of Sound and LongSound objects. */
+Collection_define (SoundAndLongSoundList, OrderedOf, Sampled) {
+};
+
+void LongSound_concatenate (SoundAndLongSoundList collection, MelderFile file, int audioFileType, int numberOfBitsPerSamplePoint);
 
-void LongSound_preferences (void);
-long LongSound_getBufferSizePref_seconds (void);
+void LongSound_preferences ();
+long LongSound_getBufferSizePref_seconds ();
 void LongSound_setBufferSizePref_seconds (long size);
 
 /* End of file LongSound.h */
diff --git a/fon/Ltas.cpp b/fon/Ltas.cpp
index d699756..69b40be 100644
--- a/fon/Ltas.cpp
+++ b/fon/Ltas.cpp
@@ -1,20 +1,19 @@
 /* Ltas.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,7 +29,7 @@ Thing_implement (Ltas, Vector, 2);
 
 void structLtas :: v_info () {
 	double meanPowerDensity;
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Frequency domain:");
 	MelderInfo_writeLine (U"   Lowest frequency: ", xmin, U" Hz");
 	MelderInfo_writeLine (U"   Highest frequency: ", xmax, U" Hz");
@@ -39,7 +38,7 @@ void structLtas :: v_info () {
 	MelderInfo_writeLine (U"   Number of frequency bands: ", nx);
 	MelderInfo_writeLine (U"   Width of each band: ", dx, U" Hz");
 	MelderInfo_writeLine (U"   First band centred at: ", x1, U" Hz");
-	meanPowerDensity = Sampled_getMean (this, xmin, xmax, 0, 1, FALSE);
+	meanPowerDensity = Sampled_getMean (this, xmin, xmax, 0, 1, false);
 	MelderInfo_writeLine (U"Total SPL: ", Melder_single (10.0 * log10 (meanPowerDensity * (xmax - xmin))), U" dB");
 }
 
@@ -63,11 +62,11 @@ double structLtas :: v_convertSpecialToStandardUnit (double value, long ilevel,
 		value;   // value = dB
 }
 
-Ltas Ltas_create (long nx, double dx) {
+autoLtas Ltas_create (long nx, double dx) {
 	try {
 		autoLtas me = Thing_new (Ltas);
-		Matrix_init (me.peek(), 0.0, nx * dx, nx, dx, 0.5 * dx, 1.0, 1.0, 1, 1.0, 1.0);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, nx * dx, nx, dx, 0.5 * dx, 1.0, 1.0, 1, 1.0, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Ltas not created.");
 	}
@@ -77,54 +76,54 @@ void Ltas_draw (Ltas me, Graphics g, double fmin, double fmax, double minimum, d
 	Vector_draw (me, g, & fmin, & fmax, & minimum, & maximum, 1.0, method);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Sound pressure level (dB/Hz)");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Sound pressure level (dB/Hz)");
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
 double Ltas_getSlope (Ltas me, double f1min, double f1max, double f2min, double f2max, int averagingUnits) {
-	double low = Sampled_getMean (me, f1min, f1max, 0, averagingUnits, FALSE);
-	double high = Sampled_getMean (me, f2min, f2max, 0, averagingUnits, FALSE);
+	double low = Sampled_getMean (me, f1min, f1max, 0, averagingUnits, false);
+	double high = Sampled_getMean (me, f2min, f2max, 0, averagingUnits, false);
 	if (low == NUMundefined || high == NUMundefined) return NUMundefined;
 	return averagingUnits == 3 ? high - low : Function_convertSpecialToStandardUnit (me, high / low, 0, averagingUnits);
 }
 
 double Ltas_getLocalPeakHeight (Ltas me, double environmentMin, double environmentMax, double peakMin, double peakMax, int averagingUnits) {
-	double environmentLow = Sampled_getMean (me, environmentMin, peakMin, 0, averagingUnits, FALSE);
-	double environmentHigh = Sampled_getMean (me, peakMax, environmentMax, 0, averagingUnits, FALSE);
-	double peak = Sampled_getMean (me, peakMin, peakMax, 0, averagingUnits, FALSE);
+	double environmentLow = Sampled_getMean (me, environmentMin, peakMin, 0, averagingUnits, false);
+	double environmentHigh = Sampled_getMean (me, peakMax, environmentMax, 0, averagingUnits, false);
+	double peak = Sampled_getMean (me, peakMin, peakMax, 0, averagingUnits, false);
 	if (environmentLow == NUMundefined || environmentHigh == NUMundefined || peak == NUMundefined) return NUMundefined;
 	return averagingUnits == 3 ? peak - 0.5 * (environmentLow + environmentHigh) :
 		Function_convertSpecialToStandardUnit (me, peak / (0.5 * (environmentLow + environmentHigh)), 0, averagingUnits);
 }
 
-Matrix Ltas_to_Matrix (Ltas me) {
+autoMatrix Ltas_to_Matrix (Ltas me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Ltas Matrix_to_Ltas (Matrix me) {
+autoLtas Matrix_to_Ltas (Matrix me) {
 	try {
 		autoLtas thee = Thing_new (Ltas);
-		my structMatrix :: v_copy (thee.peek());   // because copying a descendant of Matrix with additional members should not crash
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());   // because copying to a descendant of Matrix with additional members should not crash
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Ltas.");
 	}
 }
 
-Ltas Ltases_merge (Collection ltases) {
+autoLtas Ltases_merge (LtasBag ltases) {
 	try {
-		if (ltases -> size < 1)
+		if (ltases->size < 1)
 			Melder_throw (U"Cannot merge zero Ltas objects.");
-		Ltas me = (Ltas) ltases -> item [1];
+		Ltas me = ltases->at [1];
 		autoLtas thee = Data_copy (me);
 		/*
 		 * Convert to energy.
@@ -132,8 +131,8 @@ Ltas Ltases_merge (Collection ltases) {
 		for (long iband = 1; iband <= thy nx; iband ++) {
 			thy z [1] [iband] = pow (10.0, thy z [1] [iband] / 10.0);
 		}
-		for (long ispec = 2; ispec <= ltases -> size; ispec ++) {
-			Ltas him = (Ltas) ltases -> item [ispec];
+		for (long ispec = 2; ispec <= ltases->size; ispec ++) {
+			Ltas him = ltases->at [ispec];
 			if (his xmin != thy xmin || his xmax != thy xmax)
 				Melder_throw (U"Frequency domains do not match.");
 			if (his dx != thy dx)
@@ -153,26 +152,28 @@ Ltas Ltases_merge (Collection ltases) {
 		for (long iband = 1; iband <= thy nx; iband ++) {
 			thy z [1] [iband] = 10.0 * log10 (thy z [1] [iband]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Ltas objects not merged.");
 	}
 }
 
-Ltas Ltases_average (Collection ltases) {
+Thing_implement (LtasBag, Collection, 0);
+
+autoLtas Ltases_average (LtasBag ltases) {
 	try {
-		double factor = -10.0 * log10 (ltases -> size);
+		double factor = -10.0 * log10 (ltases->size);
 		autoLtas thee = Ltases_merge (ltases);
 		for (long iband = 1; iband <= thy nx; iband ++) {
 			thy z [1] [iband] += factor;
 		}	
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Ltas objects not averaged.");
 	}
 }
 
-Ltas Ltas_computeTrendLine (Ltas me, double fmin, double fmax) {
+autoLtas Ltas_computeTrendLine (Ltas me, double fmin, double fmax) {
 	try {
 		/*
 		 * Find the first and last bin.
@@ -206,13 +207,13 @@ Ltas Ltas_computeTrendLine (Ltas me, double fmin, double fmax) {
 			double df = thy x1 + (i - 1) * thy dx - fmean;
 			thy z [1] [i] = amean + slope * df;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": trend line not computed.");
 	}
 }
 
-Ltas Ltas_subtractTrendLine (Ltas me, double fmin, double fmax) {
+autoLtas Ltas_subtractTrendLine (Ltas me, double fmin, double fmax) {
 	try {
 		/*
 		 * Find the first and last bin.
@@ -252,59 +253,59 @@ Ltas Ltas_subtractTrendLine (Ltas me, double fmin, double fmax) {
 		for (long i = imax + 1; i <= thy nx; i ++) {
 			thy z [1] [i] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": trend line not subtracted.");
 	}
 }
 
-Ltas Spectrum_to_Ltas (Spectrum me, double bandWidth) {
+autoLtas Spectrum_to_Ltas (Spectrum me, double bandWidth) {
 	try {
 		long numberOfBands = ceil ((my xmax - my xmin) / bandWidth);
 		if (bandWidth <= my dx)
 			Melder_throw (U"Bandwidth must be greater than ", my dx, U".");
 		autoLtas thee = Thing_new (Ltas);
-		Matrix_init (thee.peek(), my xmin, my xmax, numberOfBands, bandWidth, my xmin + 0.5 * bandWidth, 1, 1, 1, 1, 1);
+		Matrix_init (thee.get(), my xmin, my xmax, numberOfBands, bandWidth, my xmin + 0.5 * bandWidth, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long iband = 1; iband <= numberOfBands; iband ++) {
 			double fmin = thy xmin + (iband - 1) * bandWidth;
-			double meanEnergyDensity = Sampled_getMean (me, fmin, fmin + bandWidth, 0, 1, FALSE);
+			double meanEnergyDensity = Sampled_getMean (me, fmin, fmin + bandWidth, 0, 1, false);
 			double meanPowerDensity = meanEnergyDensity * my dx;   // as an approximation for a division by the original duration
 			thy z [1] [iband] = meanPowerDensity == 0.0 ? -300.0 : 10.0 * log10 (meanPowerDensity / 4.0e-10);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Ltas.");
 	}
 }
 
-Ltas Spectrum_to_Ltas_1to1 (Spectrum me) {
+autoLtas Spectrum_to_Ltas_1to1 (Spectrum me) {
 	try {
 		autoLtas thee = Thing_new (Ltas);
-		Matrix_init (thee.peek(), my xmin, my xmax, my nx, my dx, my x1, 1.0, 1.0, 1, 1.0, 1.0);
+		Matrix_init (thee.get(), my xmin, my xmax, my nx, my dx, my x1, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long iband = 1; iband <= my nx; iband ++) {
 			thy z [1] [iband] = Sampled_getValueAtSample (me, iband, 0, 2);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Ltas.");
 	}
 }
 
-Ltas Sound_to_Ltas (Sound me, double bandwidth) {
+autoLtas Sound_to_Ltas (Sound me, double bandwidth) {
 	try {
-		autoSpectrum thee = Sound_to_Spectrum (me, TRUE);
-		autoLtas him = Spectrum_to_Ltas (thee.peek(), bandwidth);
+		autoSpectrum thee = Sound_to_Spectrum (me, true);
+		autoLtas him = Spectrum_to_Ltas (thee.get(), bandwidth);
 		double correction = -10.0 * log10 (thy dx * my nx * my dx);
 		for (long iband = 1; iband <= his nx; iband ++) {
 			his z [1] [iband] += correction;
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": LTAS analysis not performed.");
 	}
 }
 
-Ltas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
+autoLtas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
 	double maximumFrequency, double bandWidth,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor)
 {
@@ -312,7 +313,7 @@ Ltas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
 		long numberOfPeriods = pulses -> nt - 2, totalNumberOfEnergies = 0;
 		autoLtas ltas = Ltas_create (maximumFrequency / bandWidth, bandWidth);
 		ltas -> xmax = maximumFrequency;
-		autoLtas numbers = Data_copy (ltas.peek());
+		autoLtas numbers = Data_copy (ltas.get());
 		if (numberOfPeriods < 1)
 			Melder_throw (U"Cannot compute an Ltas if there are no periods in the point process.");
 		autoMelderProgress progress (U"Ltas analysis...");
@@ -330,8 +331,8 @@ Ltas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
 				 */
 				autoSound period = Sound_extractPart (sound,
 					pulses -> t [ipulse] - 0.5 * leftInterval, pulses -> t [ipulse] + 0.5 * rightInterval,
-					kSound_windowShape_RECTANGULAR, 1.0, FALSE);
-				autoSpectrum spectrum = Sound_to_Spectrum (period.peek(), FALSE);
+					kSound_windowShape_RECTANGULAR, 1.0, false);
+				autoSpectrum spectrum = Sound_to_Spectrum (period.get(), false);
 				for (long ifreq = 1; ifreq <= spectrum -> nx; ifreq ++) {
 					double frequency = spectrum -> xmin + (ifreq - 1) * spectrum -> dx;
 					double realPart = spectrum -> z [1] [ifreq];
@@ -397,27 +398,27 @@ Ltas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
 				}
 			}
 		}
-		return ltas.transfer();
+		return ltas;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", pulses, U": LTAS analysis not performed.");
 	}
 }
 
-Ltas Sound_to_Ltas_pitchCorrected (Sound sound, double minimumPitch, double maximumPitch,
+autoLtas Sound_to_Ltas_pitchCorrected (Sound sound, double minimumPitch, double maximumPitch,
 	double maximumFrequency, double bandWidth,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor)
 {
 	try {
 		autoPointProcess pulses = Sound_to_PointProcess_periodic_cc (sound, minimumPitch, maximumPitch);
-		autoLtas ltas = PointProcess_Sound_to_Ltas (pulses.peek(), sound, maximumFrequency, bandWidth,
+		autoLtas ltas = PointProcess_Sound_to_Ltas (pulses.get(), sound, maximumFrequency, bandWidth,
 			shortestPeriod, longestPeriod, maximumPeriodFactor);
-		return ltas.transfer();
+		return ltas;
 	} catch (MelderError) {
 		Melder_throw (sound, U": pitch-corrected LTAS analysis not performed.");
 	}
 }
 
-Ltas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
+autoLtas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
 	long maximumHarmonic,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor)
 {
@@ -443,8 +444,8 @@ Ltas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
 				long localMaximumHarmonic;
 				autoSound period = Sound_extractPart (sound,
 					pulses -> t [ipulse] - 0.5 * leftInterval, pulses -> t [ipulse] + 0.5 * rightInterval,
-					kSound_windowShape_RECTANGULAR, 1.0, FALSE);
-				autoSpectrum spectrum = Sound_to_Spectrum (period.peek(), FALSE);
+					kSound_windowShape_RECTANGULAR, 1.0, false);
+				autoSpectrum spectrum = Sound_to_Spectrum (period.get(), false);
 				localMaximumHarmonic = maximumHarmonic < spectrum -> nx ? maximumHarmonic : spectrum -> nx;
 				for (long iharm = 1; iharm <= localMaximumHarmonic; iharm ++) {
 					double realPart = spectrum -> z [1] [iharm];
@@ -467,7 +468,7 @@ Ltas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
 				ltas -> z [1] [iharm] = 10.0 * log10 (powerInThisBand / 4.0e-10);
 			}
 		}
-		return ltas.transfer();
+		return ltas;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", pulses, U": LTAS analysis (harmonics) not performed.");
 	}
diff --git a/fon/Ltas.h b/fon/Ltas.h
index 64efbf2..81583cf 100644
--- a/fon/Ltas.h
+++ b/fon/Ltas.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum.h"
@@ -42,19 +41,20 @@ Thing_define (Ltas, Vector) {
 		nx >= 1			// Number of bands.
 		dx > 0.0			// Band width (Hz).
 		x1				// Centre of first band (Hz).
-		ymin, ymax, ny, dy, y1 = 1
+		ymin, ymax, dy, y1 = 1.0
+		ny = 1
 		z [1] [1..nx]		// The intensity per band, in db/Hz.
 */
 
-Ltas Ltas_create (long nx, double dx);
+autoLtas Ltas_create (long nx, double dx);
 /*
 	Function:
-		create an Ltas, or NULL if out of memory.
+		create an Ltas.
 	Preconditions:
 		nx >= 1;
 		dx > 0.0;
 	Postconditions:
-		my xmin == 0;              my ymin == 1;
+		my xmin == 0.0;              my ymin == 1;
 		my xmax == nx * dx;        my ymax == 1;
 		my nx == nx;               my ny == 1;
 		my dx == dx;               my dy == 1;
@@ -65,30 +65,33 @@ Ltas Ltas_create (long nx, double dx);
 void Ltas_draw (Ltas me, Graphics g, double fmin, double fmax,
 	double minimum, double maximum, int garnish, const char32 *method);
 
-Matrix Ltas_to_Matrix (Ltas me);
-Ltas Matrix_to_Ltas (Matrix me);
+autoMatrix Ltas_to_Matrix (Ltas me);
+autoLtas Matrix_to_Ltas (Matrix me);
 
-Ltas Ltases_merge (Collection ltases);
-Ltas Ltases_average (Collection ltases);
+Collection_define (LtasBag, CollectionOf, Ltas) {
+};
+
+autoLtas Ltases_merge (LtasBag ltases);
+autoLtas Ltases_average (LtasBag ltases);
 
-Ltas Ltas_computeTrendLine (Ltas me, double fmin, double fmax);
-Ltas Ltas_subtractTrendLine (Ltas me, double fmin, double fmax);
+autoLtas Ltas_computeTrendLine (Ltas me, double fmin, double fmax);
+autoLtas Ltas_subtractTrendLine (Ltas me, double fmin, double fmax);
 
 /* Direct computations. */
 
-Ltas Spectrum_to_Ltas (Spectrum me, double bandwidth);
-Ltas Spectrum_to_Ltas_1to1 (Spectrum me);
-Ltas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
+autoLtas Spectrum_to_Ltas (Spectrum me, double bandwidth);
+autoLtas Spectrum_to_Ltas_1to1 (Spectrum me);
+autoLtas PointProcess_Sound_to_Ltas (PointProcess pulses, Sound sound,
 	double maximumFrequency, double bandWidth,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor);
-Ltas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
+autoLtas PointProcess_Sound_to_Ltas_harmonics (PointProcess pulses, Sound sound,
 	long maximumHarmonic,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor);
 
 /* Shortcuts. */
 
-Ltas Sound_to_Ltas (Sound me, double bandwidth);
-Ltas Sound_to_Ltas_pitchCorrected (Sound sound, double minimumPitch, double maximumPitch,
+autoLtas Sound_to_Ltas (Sound me, double bandwidth);
+autoLtas Sound_to_Ltas_pitchCorrected (Sound sound, double minimumPitch, double maximumPitch,
 	double maximumFrequency, double bandWidth,
 	double shortestPeriod, double longestPeriod, double maximumPeriodFactor);
 
diff --git a/fon/Ltas_to_SpectrumTier.cpp b/fon/Ltas_to_SpectrumTier.cpp
index b9953ff..7c24378 100644
--- a/fon/Ltas_to_SpectrumTier.cpp
+++ b/fon/Ltas_to_SpectrumTier.cpp
@@ -1,27 +1,27 @@
 /* Ltas_to_SpectrumTier.cpp
  *
- * Copyright (C) 2007-2011 Paul Boersma
+ * Copyright (C) 2007-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Ltas_to_SpectrumTier.h"
 
-SpectrumTier Ltas_to_SpectrumTier_peaks (Ltas me) {
+autoSpectrumTier Ltas_to_SpectrumTier_peaks (Ltas me) {
 	try {
-		return (SpectrumTier) Vector_to_RealTier_peaks (me, 1, classSpectrumTier);
+		autoSpectrumTier thee = Vector_to_RealTier_peaks (me, 1, classSpectrumTier).static_cast_move<structSpectrumTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": peaks not analyzed as SpectrumTier.");
 	}
diff --git a/fon/Ltas_to_SpectrumTier.h b/fon/Ltas_to_SpectrumTier.h
index 2393543..9dd20ba 100644
--- a/fon/Ltas_to_SpectrumTier.h
+++ b/fon/Ltas_to_SpectrumTier.h
@@ -1,25 +1,24 @@
 /* Ltas_to_SpectrumTier.h
  *
- * Copyright (C) 2007-2011 Paul Boersma
+ * Copyright (C) 2007-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Ltas.h"
 #include "SpectrumTier.h"
 
-SpectrumTier Ltas_to_SpectrumTier_peaks (Ltas me);
+autoSpectrumTier Ltas_to_SpectrumTier_peaks (Ltas me);
 
 /* End of file Ltas_to_SpectrumTier.h */
diff --git a/fon/Manipulation.cpp b/fon/Manipulation.cpp
index aac1efc..1faa268 100644
--- a/fon/Manipulation.cpp
+++ b/fon/Manipulation.cpp
@@ -1,20 +1,19 @@
 /* Manipulation.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Manipulation.h"
@@ -51,115 +50,103 @@ Thing_implement (Manipulation, Function, 5);
 
 void structManipulation :: v_shiftX (double xfrom, double xto) {
 	Manipulation_Parent :: v_shiftX (xfrom, xto);
-	if (sound    != NULL)  Function_shiftXTo (sound,    xfrom, xto);
-	if (pulses   != NULL)  Function_shiftXTo (pulses,   xfrom, xto);
-	if (pitch    != NULL)  Function_shiftXTo (pitch,    xfrom, xto);
-	if (duration != NULL)  Function_shiftXTo (duration, xfrom, xto);
-	if (lpc      != NULL)  Function_shiftXTo (lpc,      xfrom, xto);
+	if (our sound   )  Function_shiftXTo (our sound.get(),    xfrom, xto);
+	if (our pulses  )  Function_shiftXTo (our pulses.get(),   xfrom, xto);
+	if (our pitch   )  Function_shiftXTo (our pitch.get(),    xfrom, xto);
+	if (our duration)  Function_shiftXTo (our duration.get(), xfrom, xto);
+	if (our lpc     )  Function_shiftXTo (our lpc.get(),      xfrom, xto);
 }
 
 void structManipulation :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	Manipulation_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (sound    != NULL)  sound    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (pulses   != NULL)  pulses   -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (pitch    != NULL)  pitch    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (duration != NULL)  duration -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	if (lpc      != NULL)  lpc      -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our sound   )  our sound    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our pulses  )  our pulses   -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our pitch   )  our pitch    -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our duration)  our duration -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
+	if (our lpc     )  our lpc      -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 }
 
-Manipulation Manipulation_create (double tmin, double tmax) {
+autoManipulation Manipulation_create (double tmin, double tmax) {
 	try {
 		autoManipulation me = Thing_new (Manipulation);
 		my xmin = tmin, my xmax = tmax;
 		my duration = DurationTier_create (tmin, tmax);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Manipulation object not created.");
 	}
 }
 
-int Manipulation_replaceOriginalSound (Manipulation me, Sound sound) {
+void Manipulation_replaceOriginalSound (Manipulation me, Sound sound) {
 	try {
-		autoSound sound2 = Sound_convertToMono (sound);
-		Vector_subtractMean (sound2.peek());
-		forget (my sound);
-		forget (my lpc);
-		my sound = sound2.transfer();
-		return 1;
+		my sound = Sound_convertToMono (sound);
+		Vector_subtractMean (my sound.get());
+		my lpc = autoLPC();
 	} catch (MelderError) {
 		Melder_throw (me, U": original Sound not replaced with ", sound, U".");
 	}
 }
 
-int Manipulation_replacePulses (Manipulation me, PointProcess pulses) {
+void Manipulation_replacePulses (Manipulation me, PointProcess pulses) {
 	try {
-		autoPointProcess pulses2 = Data_copy (pulses);
-		forget (my pulses);
-		my pulses = pulses2.transfer();
-		return 1;
+		my pulses = Data_copy (pulses);
 	} catch (MelderError) {
 		Melder_throw (me, U": pulses not replaced with ", pulses, U".");
 	}
 }
 
-int Manipulation_replacePitchTier (Manipulation me, PitchTier pitch) {
+void Manipulation_replacePitchTier (Manipulation me, PitchTier pitch) {
 	try {
-		autoPitchTier pitch2 = Data_copy (pitch);
-		forget (my pitch);
-		my pitch = pitch2.transfer();
-		return 1;
+		my pitch = Data_copy (pitch);
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch tier not replaced with ", pitch, U".");
 	}
 }
 
-int Manipulation_replaceDurationTier (Manipulation me, DurationTier duration) {
+void Manipulation_replaceDurationTier (Manipulation me, DurationTier duration) {
 	try {
-		autoDurationTier duration2 = Data_copy (duration);
-		forget (my duration);
-		my duration = duration2.transfer();
-		return 1;
+		my duration = Data_copy (duration);
 	} catch (MelderError) {
 		Melder_throw (me, U": duration tier not replaced with ", duration, U".");
 	}
 }
 
-Manipulation Sound_to_Manipulation (Sound me, double timeStep, double minimumPitch, double maximumPitch) {
+autoManipulation Sound_to_Manipulation (Sound me, double timeStep, double minimumPitch, double maximumPitch) {
 	try {
 		autoManipulation thee = Manipulation_create (my xmin, my xmax);
 		thy sound = Sound_convertToMono (me);
-		Vector_subtractMean (thy sound);
-		autoPitch pitch = Sound_to_Pitch (thy sound, timeStep, minimumPitch, maximumPitch);
-		thy pulses = Sound_Pitch_to_PointProcess_cc (thy sound, pitch.peek());
-		thy pitch = Pitch_to_PitchTier (pitch.peek());
+		Vector_subtractMean (thy sound.get());
+		autoPitch pitch = Sound_to_Pitch (thy sound.get(), timeStep, minimumPitch, maximumPitch);
+		thy pulses = Sound_Pitch_to_PointProcess_cc (thy sound.get(), pitch.get());
+		thy pitch = Pitch_to_PitchTier (pitch.get());
 		/* (DurationTier has been done at creation time) */
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Manipulation.");
 	}
 }
 
-Manipulation Sound_Pitch_to_Manipulation (Sound sound, Pitch pitch) {
+autoManipulation Sound_Pitch_to_Manipulation (Sound sound, Pitch pitch) {
 	try {
 		autoManipulation me = Manipulation_create (sound -> xmin, sound -> xmax);
 		my sound = Sound_convertToMono (sound);
-		Vector_subtractMean (my sound);
-		my pulses = Sound_Pitch_to_PointProcess_cc (my sound, pitch);
+		Vector_subtractMean (my sound.get());
+		my pulses = Sound_Pitch_to_PointProcess_cc (my sound.get(), pitch);
 		my pitch = Pitch_to_PitchTier (pitch);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", pitch, U": not converted to Manipulation.");
 	}
 }
 
-Manipulation Sound_PointProcess_to_Manipulation (Sound sound, PointProcess point) {
+autoManipulation Sound_PointProcess_to_Manipulation (Sound sound, PointProcess point) {
 	try {
 		autoManipulation me = Manipulation_create (sound -> xmin, sound -> xmax);
 		my sound = Sound_convertToMono (sound);
-		Vector_subtractMean (my sound);
+		Vector_subtractMean (my sound.get());
 		my pulses = Data_copy (point);
 		my pitch = PointProcess_to_PitchTier (point, MAX_T);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", point, U": not converted to Manipulation.");
 	}
@@ -168,31 +155,31 @@ Manipulation Sound_PointProcess_to_Manipulation (Sound sound, PointProcess point
 int Manipulation_playPart (Manipulation me, double tmin, double tmax, int method) {
 	try {
 		if (method == Manipulation_OVERLAPADD) {
-			Sound saved = my sound;
 			if (! my sound)
 				Melder_throw (U"Cannot synthesize overlap-add without a sound.");
-			autoSound part = Data_copy (my sound);
-			long imin = Sampled_xToLowIndex (part.peek(), tmin), imax = Sampled_xToHighIndex (part.peek(), tmax);
+			autoSound part = Data_copy (my sound.get());
+			long imin = Sampled_xToLowIndex (part.get(), tmin), imax = Sampled_xToHighIndex (part.get(), tmax);
 			double *amp = part -> z [1];
 			for (long i = 1; i <= imin; i ++) amp [i] = 0.0;
 			for (long i = imax; i <= part -> nx; i ++) amp [i] = 0.0;
-			my sound = part.peek();
+			autoSound saved = my sound.move();
+			my sound = part.move();
 			try {
 				autoSound played = Manipulation_to_Sound (me, Manipulation_OVERLAPADD);
-				my sound = saved;
+				my sound = saved.move();
 				amp = played -> z [1];
 				for (imin = 1; imin <= played -> nx; imin ++)
 					if (amp [imin] != 0.0) break;
 				for (imax = played -> nx; imax >= 1; imax --)
 					if (amp [imax] != 0.0) break;
-				Sound_playPart (played.peek(), played -> x1 + (imin - 1.5) * played -> dx, played -> x1 + (imax - 0.5) * played -> dx, NULL, 0);
+				Sound_playPart (played.get(), played -> x1 + (imin - 1.5) * played -> dx, played -> x1 + (imax - 0.5) * played -> dx, nullptr, nullptr);
 			} catch (MelderError) {
-				my sound = saved;
+				my sound = saved.move();
 				throw;
 			}
 		} else {
 			autoSound sound = Manipulation_to_Sound (me, method);
-			Sound_playPart (sound.peek(), tmin, tmax, NULL, 0);
+			Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 		}
 		return 1;
 	} catch (MelderError) {
@@ -203,7 +190,7 @@ int Manipulation_playPart (Manipulation me, double tmin, double tmax, int method
 int Manipulation_play (Manipulation me, int method) {
 	try {
 		autoSound sound = Manipulation_to_Sound (me, method);
-		Sound_play (sound.peek(), NULL, NULL);
+		Sound_play (sound.get(), nullptr, nullptr);
 		return 1;
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
@@ -216,38 +203,34 @@ static long PointProcess_getFirstVoicedPoint (PointProcess me, double maxT) {
 }
 
 static void copyRise (Sound me, double tmin, double tmax, Sound thee, double tmaxTarget) {
-	long imin, imax, imaxTarget, distance, i;
-	double dphase;
-	imin = Sampled_xToHighIndex (me, tmin);
+	long imin = Sampled_xToHighIndex (me, tmin);
 	if (imin < 1) imin = 1;
-	imax = Sampled_xToHighIndex (me, tmax) - 1;   /* Not xToLowIndex: ensure separation of subsequent calls. */
+	long imax = Sampled_xToHighIndex (me, tmax) - 1;   // not xToLowIndex: ensure separation of subsequent calls
 	if (imax > my nx) imax = my nx;
 	if (imax < imin) return;
-	imaxTarget = Sampled_xToHighIndex (thee, tmaxTarget) - 1;
-	distance = imaxTarget - imax;
-	dphase = NUMpi / (imax - imin + 1);
-	for (i = imin; i <= imax; i ++) {
+	long imaxTarget = Sampled_xToHighIndex (thee, tmaxTarget) - 1;
+	long distance = imaxTarget - imax;
+	double dphase = NUMpi / (imax - imin + 1);
+	for (long i = imin; i <= imax; i ++) {
 		long iTarget = i + distance;
 		if (iTarget >= 1 && iTarget <= thy nx)
-			thy z [1] [iTarget] += my z [1] [i] * 0.5 * (1 - cos (dphase * (i - imin + 0.5)));
+			thy z [1] [iTarget] += my z [1] [i] * 0.5 * (1.0 - cos (dphase * (i - imin + 0.5)));
 	}
 }
 
 static void copyFall (Sound me, double tmin, double tmax, Sound thee, double tminTarget) {
-	long imin, imax, iminTarget, distance, i;
-	double dphase;
-	imin = Sampled_xToHighIndex (me, tmin);
+	long imin = Sampled_xToHighIndex (me, tmin);
 	if (imin < 1) imin = 1;
-	imax = Sampled_xToHighIndex (me, tmax) - 1;   /* Not xToLowIndex: ensure separation of subsequent calls. */
+	long imax = Sampled_xToHighIndex (me, tmax) - 1;   // not xToLowIndex: ensure separation of subsequent calls
 	if (imax > my nx) imax = my nx;
 	if (imax < imin) return;
-	iminTarget = Sampled_xToHighIndex (thee, tminTarget);
-	distance = iminTarget - imin;
-	dphase = NUMpi / (imax - imin + 1);
-	for (i = imin; i <= imax; i ++) {
+	long iminTarget = Sampled_xToHighIndex (thee, tminTarget);
+	long distance = iminTarget - imin;
+	double dphase = NUMpi / (imax - imin + 1);
+	for (long i = imin; i <= imax; i ++) {
 		long iTarget = i + distance;
 		if (iTarget >= 1 && iTarget <= thy nx)
-			thy z [1] [iTarget] += my z [1] [i] * 0.5 * (1 + cos (dphase * (i - imin + 0.5)));
+			thy z [1] [iTarget] += my z [1] [i] * 0.5 * (1.0 + cos (dphase * (i - imin + 0.5)));
 	}
 }
 
@@ -278,7 +261,7 @@ static void copyBell2 (Sound me, PointProcess source, long isource, double leftW
 static void copyFlat (Sound me, double tmin, double tmax, Sound thee, double tminTarget) {
 	long imin = Sampled_xToHighIndex (me, tmin);
 	if (imin < 1) imin = 1;
-	long imax = Sampled_xToHighIndex (me, tmax) - 1;   /* Not xToLowIndex: ensure separation of subsequent calls. */
+	long imax = Sampled_xToHighIndex (me, tmax) - 1;   // not xToLowIndex: ensure separation of subsequent calls
 	if (imax > my nx) imax = my nx;
 	if (imax < imin) return;
 	long iminTarget = Sampled_xToHighIndex (thee, tminTarget);
@@ -288,12 +271,12 @@ static void copyFlat (Sound me, double tmin, double tmax, Sound thee, double tmi
 	NUMvector_copyElements (my z [1] + imin, thy z [1] + iminTarget, 0, imax - imin);
 }
 
-Sound Sound_Point_Point_to_Sound (Sound me, PointProcess source, PointProcess target, double maxT) {
+autoSound Sound_Point_Point_to_Sound (Sound me, PointProcess source, PointProcess target, double maxT) {
 	try {
 		autoSound thee = Sound_create (1, my xmin, my xmax, my nx, my dx, my x1);
-		if (source -> nt < 2 || target -> nt < 2) {   /* Almost completely voiceless? */
+		if (source -> nt < 2 || target -> nt < 2) {   // almost completely voiceless?
 			NUMvector_copyElements (my z [1], thy z [1], 1, my nx);
-			return thee.transfer();
+			return thee;
 		}
 		for (long i = 1; i <= target -> nt; i ++) {
 			double tmid = target -> t [i];
@@ -303,34 +286,34 @@ Sound Sound_Point_Point_to_Sound (Sound me, PointProcess source, PointProcess ta
 			int leftVoiced = i > 1 && leftWidth <= maxT;
 			int rightVoiced = i < target -> nt && rightWidth <= maxT;
 			long isource = PointProcess_getNearestIndex (source, tmid);
-			if (! leftVoiced) leftWidth = rightWidth;   /* Symmetric bell. */
-			if (! rightVoiced) rightWidth = leftWidth;   /* Symmetric bell. */
+			if (! leftVoiced) leftWidth = rightWidth;   // symmetric bell
+			if (! rightVoiced) rightWidth = leftWidth;   // symmetric bell
 			if (leftVoiced || rightVoiced) {
-				copyBell2 (me, source, isource, leftWidth, rightWidth, thee.peek(), tmid, maxT);
+				copyBell2 (me, source, isource, leftWidth, rightWidth, thee.get(), tmid, maxT);
 				if (! leftVoiced) {
-					double startOfFlat = i == 1 ? tleft : (tleft + tmid) / 2;
+					double startOfFlat = ( i == 1 ? tleft : (tleft + tmid) / 2.0 );
 					double endOfFlat = tmid - leftWidth;
-					copyFlat (me, startOfFlat, endOfFlat, thee.peek(), startOfFlat);
-					copyFall (me, endOfFlat, tmid, thee.peek(), endOfFlat);
+					copyFlat (me, startOfFlat, endOfFlat, thee.get(), startOfFlat);
+					copyFall (me, endOfFlat, tmid, thee.get(), endOfFlat);
 				} else if (! rightVoiced) {
 					double startOfFlat = tmid + rightWidth;
-					double endOfFlat = i == target -> nt ? tright : (tmid + tright) / 2;
-					copyRise (me, tmid, startOfFlat, thee.peek(), startOfFlat);
-					copyFlat (me, startOfFlat, endOfFlat, thee.peek(), startOfFlat);
+					double endOfFlat = ( i == target -> nt ? tright : (tmid + tright) / 2.0 );
+					copyRise (me, tmid, startOfFlat, thee.get(), startOfFlat);
+					copyFlat (me, startOfFlat, endOfFlat, thee.get(), startOfFlat);
 				}
 			} else {
-				double startOfFlat = i == 1 ? tleft : (tleft + tmid) / 2;
-				double endOfFlat = i == target -> nt ? tright : (tmid + tright) / 2;
-				copyFlat (me, startOfFlat, endOfFlat, thee.peek(), startOfFlat);
+				double startOfFlat = ( i == 1 ? tleft : (tleft + tmid) / 2.0 );
+				double endOfFlat = ( i == target -> nt ? tright : (tmid + tright) / 2.0 );
+				copyFlat (me, startOfFlat, endOfFlat, thee.get(), startOfFlat);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not manipulated.");
 	}
 }
 
-Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
+autoSound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 	PitchTier pitch, DurationTier duration, double maxT)
 {
 	try {
@@ -341,7 +324,7 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 		double startOfSourceVoice, endOfSourceVoice, startOfTargetVoice, endOfTargetVoice;
 		double durationOfSourceVoice, durationOfTargetVoice;
 		double startingPeriod, finishingPeriod, ttarget, voicelessPeriod;
-		if (duration -> points -> size == 0)
+		if (duration -> points.size == 0)
 			Melder_throw (U"No duration points.");
 
 		/*
@@ -352,13 +335,13 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 		/*
 		 * Below, I'll abbreviate the voiced interval as "voice" and the voiceless interval as "noise".
 		 */
-		if (pitch && pitch -> points -> size) for (ipointleft = 1; ipointleft <= pulses -> nt; ipointleft = ipointright + 1) {
+		if (pitch && pitch -> points.size) for (ipointleft = 1; ipointleft <= pulses -> nt; ipointleft = ipointright + 1) {
 			/*
 			 * Find the beginning of the voice.
 			 */
-			startOfSourceVoice = pulses -> t [ipointleft];   /* The first pulse of the voice. */
+			startOfSourceVoice = pulses -> t [ipointleft];   // the first pulse of the voice
 			startingPeriod = 1.0 / RealTier_getValueAtTime (pitch, startOfSourceVoice);
-			startOfSourceVoice -= 0.5 * startingPeriod;   /* The first pulse is in the middle of a period. */
+			startOfSourceVoice -= 0.5 * startingPeriod;   // the first pulse is in the middle of a period
 
 			/*
 			 * Measure one noise.
@@ -386,7 +369,7 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 					if (ttargetmid < ttarget) tleft = tsourcemid; else tright = tsourcemid;
 				}
 				tsource = 0.5 * (tleft + tright);
-				copyBell (me, tsource, voicelessPeriod, voicelessPeriod, thee.peek(), ttarget);
+				copyBell (me, tsource, voicelessPeriod, voicelessPeriod, thee.get(), ttarget);
 				voicelessPeriod = NUMrandomUniform (0.008, 0.012);
 				ttarget += voicelessPeriod;
 			}
@@ -399,9 +382,9 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 				if (pulses -> t [ipointright] - pulses -> t [ipointright - 1] > maxT)
 					break;
 			ipointright --;
-			endOfSourceVoice = pulses -> t [ipointright];   /* The last pulse of the voice. */
+			endOfSourceVoice = pulses -> t [ipointright];   // the last pulse of the voice
 			finishingPeriod = 1.0 / RealTier_getValueAtTime (pitch, endOfSourceVoice);
-			endOfSourceVoice += 0.5 * finishingPeriod;   /* The last pulse is in the middle of a period. */
+			endOfSourceVoice += 0.5 * finishingPeriod;   // the last pulse is in the middle of a period
 			/*
 			 * Measure one voice.
 			 */
@@ -433,7 +416,7 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 				tsource = 0.5 * (tleft + tright);
 				period = 1.0 / RealTier_getValueAtTime (pitch, tsource);
 				isourcepulse = PointProcess_getNearestIndex (pulses, tsource);
-				copyBell2 (me, pulses, isourcepulse, period, period, thee.peek(), ttarget, maxT);
+				copyBell2 (me, pulses, isourcepulse, period, period, thee.get(), ttarget, maxT);
 				ttarget += period;
 			}
 			deltat += durationOfTargetVoice - durationOfSourceVoice;
@@ -461,7 +444,7 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 				if (ttargetmid < ttarget) tleft = tsourcemid; else tright = tsourcemid;
 			}
 			tsource = 0.5 * (tleft + tright);
-			copyBell (me, tsource, voicelessPeriod, voicelessPeriod, thee.peek(), ttarget);
+			copyBell (me, tsource, voicelessPeriod, voicelessPeriod, thee.get(), ttarget);
 			voicelessPeriod = NUMrandomUniform (0.008, 0.012);
 			ttarget += voicelessPeriod;
 		}
@@ -470,101 +453,95 @@ Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 		 * Find the number of trailing zeroes and hack the sound's time domain.
 		 */
 		thy xmax = thy xmin + RealTier_getArea (duration, my xmin, my xmax);
-		if (fabs (thy xmax - my xmax) < 1e-12) thy xmax = my xmax;   /* Common situation. */
-		thy nx = Sampled_xToLowIndex (thee.peek(), thy xmax);
+		if (fabs (thy xmax - my xmax) < 1e-12) thy xmax = my xmax;   // common situation
+		thy nx = Sampled_xToLowIndex (thee.get(), thy xmax);
 		if (thy nx > 3 * my nx) thy nx = 3 * my nx;
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not manipulated.");
 	}
 }
 
-static Sound synthesize_overlapAdd_nodur (Manipulation me) {
+static autoSound synthesize_overlapAdd_nodur (Manipulation me) {
 	try {
 		if (! my sound)  Melder_throw (U"Missing original sound.");
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
 		if (! my pitch)  Melder_throw (U"Missing pitch manipulation.");
-		autoPointProcess targetPulses = PitchTier_Point_to_PointProcess (my pitch, my pulses, MAX_T);
-		autoSound thee = Sound_Point_Point_to_Sound (my sound, my pulses, targetPulses.peek(), MAX_T);
-		return thee.transfer();
+		autoPointProcess targetPulses = PitchTier_Point_to_PointProcess (my pitch.get(), my pulses.get(), MAX_T);
+		return Sound_Point_Point_to_Sound (my sound.get(), my pulses.get(), targetPulses.get(), MAX_T);
 	} catch (MelderError) {
 		Melder_throw (me, U": overlap-add synthesis (without duration) not performed.");
 	}
 }
 
-static Sound synthesize_overlapAdd (Manipulation me) {
-	if (! my duration || my duration -> points -> size == 0) return synthesize_overlapAdd_nodur (me);
+static autoSound synthesize_overlapAdd (Manipulation me) {
+	if (! my duration || my duration -> points.size == 0) return synthesize_overlapAdd_nodur (me);
 	try {
 		if (! my sound)  Melder_throw (U"Missing original sound.");
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
 		if (! my pitch)  Melder_throw (U"Missing pitch manipulation.");
-		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (my sound, my pulses, my pitch, my duration, MAX_T);
-		return thee.transfer();
+		return Sound_Point_Pitch_Duration_to_Sound (my sound.get(), my pulses.get(), my pitch.get(), my duration.get(), MAX_T);
 	} catch (MelderError) {
 		Melder_throw (me, U": overlap-add synthesis not performed.");
 	}
 }
 
-static Sound synthesize_pulses (Manipulation me) {
+static autoSound synthesize_pulses (Manipulation me) {
 	try {
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
-		return PointProcess_to_Sound_pulseTrain (my pulses, 44100, 0.7, 0.05, 30);
+		return PointProcess_to_Sound_pulseTrain (my pulses.get(), 44100.0, 0.7, 0.05, 30);
 	} catch (MelderError) {
 		Melder_throw (me, U": pulses synthesis not performed.");
 	}
 }
 
-static Sound synthesize_pulses_hum (Manipulation me) {
+static autoSound synthesize_pulses_hum (Manipulation me) {
 	try {
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
-		return PointProcess_to_Sound_hum (my pulses);
+		return PointProcess_to_Sound_hum (my pulses.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": pulses hum synthesis not performed.");
 	}
 }
 
-static Sound synthesize_pitch (Manipulation me) {
+static autoSound synthesize_pitch (Manipulation me) {
 	try {
 		if (! my pitch) Melder_throw (U"Missing pitch tier.");
-		autoPointProcess pulses = PitchTier_to_PointProcess (my pitch);
-		autoSound thee = PointProcess_to_Sound_pulseTrain (pulses.peek(), 44100, 0.7, 0.05, 30);
-		return thee.transfer();
+		autoPointProcess pulses = PitchTier_to_PointProcess (my pitch.get());
+		return PointProcess_to_Sound_pulseTrain (pulses.get(), 44100.0, 0.7, 0.05, 30);
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch manipulation not synthesized.");
 	}
 }
 
-static Sound synthesize_pitch_hum (Manipulation me) {
+static autoSound synthesize_pitch_hum (Manipulation me) {
 	try {
 		if (! my pitch) Melder_throw (U"Missing pitch tier.");
-		autoPointProcess pulses = PitchTier_to_PointProcess (my pitch);
-		autoSound thee = PointProcess_to_Sound_hum (pulses.peek());
-		return thee.transfer();
+		autoPointProcess pulses = PitchTier_to_PointProcess (my pitch.get());
+		return PointProcess_to_Sound_hum (pulses.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch hum manipulation not synthesized.");
 	}
 }
 
-static Sound synthesize_pulses_pitch (Manipulation me) {
+static autoSound synthesize_pulses_pitch (Manipulation me) {
 	try {
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
 		if (! my pitch)  Melder_throw (U"Missing pitch tier.");
-		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch, my pulses, MAX_T);
-		autoSound thee = PointProcess_to_Sound_pulseTrain (pulses.peek(), 44100, 0.7, 0.05, 30);
-		return thee.transfer();
+		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch.get(), my pulses.get(), MAX_T);
+		return PointProcess_to_Sound_pulseTrain (pulses.get(), 44100.0, 0.7, 0.05, 30);
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch pulses manipulation not synthesized.");
 	}
 }
 
-static Sound synthesize_pulses_pitch_hum (Manipulation me) {
+static autoSound synthesize_pulses_pitch_hum (Manipulation me) {
 	try {
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
 		if (! my pitch)  Melder_throw (U"Missing pitch tier.");
-		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch, my pulses, MAX_T);
-		autoSound thee = PointProcess_to_Sound_hum (pulses.peek());
-		return thee.transfer();
+		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch.get(), my pulses.get(), MAX_T);
+		return PointProcess_to_Sound_hum (pulses.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch pulses hum manipulation not synthesized.");
 	}
@@ -583,8 +560,8 @@ static Sound synthesize_pulses_formant (Manipulation me, int useIntensity) {
 		if (! my pulses)  Melder_throw (U"Missing pulses analysis.");
 		if (! my formant) Melder_throw (U"Missing formant information.");
 		autoSound thee = PointProcess_to_Sound (my pulses, 44100, 0.7, 0.05, 30);
-		Sound_Formant_Intensity_filter (thee.peek(), my formant, useIntensity ? my intensity : NULL);
-		return thee.transfer();
+		Sound_Formant_Intensity_filter (get(), my formant, useIntensity ? my intensity : nullptr);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": formant and pulses manipulation not synthesized.");
 	}
@@ -621,49 +598,49 @@ static void Sound_PointProcess_fillVoiceless (Sound me, PointProcess pulses) {
 	}
 }
 
-static Sound synthesize_pulses_lpc (Manipulation me) {
+static autoSound synthesize_pulses_lpc (Manipulation me) {
 	try {
 		if (! my lpc) {
 			if (! my sound) Melder_throw (U"Missing original sound.");
-			autoSound sound10k = Sound_resample (my sound, 10000, 50);
-			my lpc = Sound_to_LPC_burg (sound10k.peek(), 20, 0.025, 0.01, 50.0);
+			autoSound sound10k = Sound_resample (my sound.get(), 10000.0, 50);
+			my lpc = Sound_to_LPC_burg (sound10k.get(), 20, 0.025, 0.01, 50.0);
 		}
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
-		autoSound train = PointProcess_to_Sound_pulseTrain (my pulses, 1 / my lpc -> samplingPeriod, 0.7, 0.05, 30);
+		autoSound train = PointProcess_to_Sound_pulseTrain (my pulses.get(), 1.0 / my lpc -> samplingPeriod, 0.7, 0.05, 30);
 		train -> dx = my lpc -> samplingPeriod;   // to be exact
-		Sound_PointProcess_fillVoiceless (train.peek(), my pulses);
-		autoSound result = LPC_and_Sound_filter (my lpc, train.peek(), TRUE);
+		Sound_PointProcess_fillVoiceless (train.get(), my pulses.get());
+		autoSound result = LPC_and_Sound_filter (my lpc.get(), train.get(), true);
 		NUMdeemphasize_f (result -> z [1], result -> nx, result -> dx, 50.0);
-		Vector_scale (result.peek(), 0.99);
-		return result.transfer();
+		Vector_scale (result.get(), 0.99);
+		return result;
 	} catch (MelderError) {
 		Melder_throw (me, U": LPC synthesis not performed.");
 	}
 }
 
-static Sound synthesize_pitch_lpc (Manipulation me) {
+static autoSound synthesize_pitch_lpc (Manipulation me) {
 	try {
 		if (! my lpc) {
 			if (! my sound) Melder_throw (U"Missing original sound.");
-			autoSound sound10k = Sound_resample (my sound, 10000, 50);
-			my lpc = Sound_to_LPC_burg (sound10k.peek(), 20, 0.025, 0.01, 50.0);
+			autoSound sound10k = Sound_resample (my sound.get(), 10000.0, 50);
+			my lpc = Sound_to_LPC_burg (sound10k.get(), 20, 0.025, 0.01, 50.0);
 		}
 		if (! my pitch)  Melder_throw (U"Missing pitch manipulation.");
 		if (! my pulses) Melder_throw (U"Missing pulses analysis.");
-		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch, my pulses, MAX_T);
-		autoSound train = PointProcess_to_Sound_pulseTrain (pulses.peek(), 1 / my lpc -> samplingPeriod, 0.7, 0.05, 30);
+		autoPointProcess pulses = PitchTier_Point_to_PointProcess (my pitch.get(), my pulses.get(), MAX_T);
+		autoSound train = PointProcess_to_Sound_pulseTrain (pulses.get(), 1 / my lpc -> samplingPeriod, 0.7, 0.05, 30);
 		train -> dx = my lpc -> samplingPeriod;   // to be exact
-		Sound_PointProcess_fillVoiceless (train.peek(), my pulses);
-		autoSound result = LPC_and_Sound_filter (my lpc, train.peek(), TRUE);
+		Sound_PointProcess_fillVoiceless (train.get(), my pulses.get());
+		autoSound result = LPC_and_Sound_filter (my lpc.get(), train.get(), true);
 		NUMdeemphasize_f (result -> z [1], result -> nx, result -> dx, 50.0);
-		Vector_scale (result.peek(), 0.99);
-		return result.transfer();
+		Vector_scale (result.get(), 0.99);
+		return result;
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch LPC synthesis not performed.");
 	}
 }
 
-Sound Manipulation_to_Sound (Manipulation me, int method) {
+autoSound Manipulation_to_Sound (Manipulation me, int method) {
 	switch (method) {
 		case Manipulation_OVERLAPADD: return synthesize_overlapAdd (me);
 		case Manipulation_PULSES: return synthesize_pulses (me);
@@ -673,59 +650,45 @@ Sound Manipulation_to_Sound (Manipulation me, int method) {
 		case Manipulation_PULSES_PITCH: return synthesize_pulses_pitch (me);
 		case Manipulation_PULSES_PITCH_HUM: return synthesize_pulses_pitch_hum (me);
 		case Manipulation_OVERLAPADD_NODUR: return synthesize_overlapAdd_nodur (me);
-		case Manipulation_PULSES_FORMANT: return 0;
-		case Manipulation_PULSES_FORMANT_INTENSITY: return 0;
+		case Manipulation_PULSES_FORMANT: return autoSound();
+		case Manipulation_PULSES_FORMANT_INTENSITY: return autoSound();
 		case Manipulation_PULSES_LPC: return synthesize_pulses_lpc (me);
-		case Manipulation_PULSES_LPC_INTENSITY: return 0;
+		case Manipulation_PULSES_LPC_INTENSITY: return autoSound();
 		case Manipulation_PITCH_LPC: return synthesize_pitch_lpc (me);
-		case Manipulation_PITCH_LPC_INTENSITY: return 0;
+		case Manipulation_PITCH_LPC_INTENSITY: return autoSound();
 		default: return synthesize_overlapAdd (me);
 	}
 }
 
-Manipulation Manipulation_AnyTier_to_Manipulation (Manipulation me, AnyTier tier) {
+autoManipulation Manipulation_AnyTier_to_Manipulation (Manipulation me, AnyTier tier) {
 	try {
 		if (! my pitch) Melder_throw (U"Missing pitch manipulation.");
 		autoManipulation result = Data_copy (me);
-		/*
-		 * Create without change.
-		 */
-		autoPitchTier pitch = PitchTier_AnyTier_to_PitchTier (my pitch, tier);
-		/*
-		 * Change without error.
-		 */
-		forget (result -> pitch);
-		result -> pitch = pitch.transfer();
-		/*
-		 */
-		return result.transfer();
+		result -> pitch = PitchTier_AnyTier_to_PitchTier (my pitch.get(), tier);
+		return result;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted.");
 	}
 }
 
-int Manipulation_writeToTextFileWithoutSound (Manipulation me, MelderFile file) {
-	Sound saved = my sound;
+void Manipulation_writeToTextFileWithoutSound (Manipulation me, MelderFile file) {
+	autoSound saved = my sound.move();
 	try {
-		my sound = NULL;
 		Data_writeToTextFile (me, file);
-		my sound = saved;
-		return 1;
+		my sound = saved.move();
 	} catch (MelderError) {
-		my sound = saved;
+		my sound = saved.move();
 		Melder_throw (me, U": not saved to text file.");
 	}
 }
 
-int Manipulation_writeToBinaryFileWithoutSound (Manipulation me, MelderFile file) {
-	Sound saved = my sound;
+void Manipulation_writeToBinaryFileWithoutSound (Manipulation me, MelderFile file) {
+	autoSound saved = my sound.move();
 	try {
-		my sound = NULL;
 		Data_writeToBinaryFile (me, file);
-		my sound = saved;
-		return 1;
+		my sound = saved.move();
 	} catch (MelderError) {
-		my sound = saved;
+		my sound = saved.move();
 		Melder_throw (me, U": not saved to binary file.");
 	}
 }
diff --git a/fon/Manipulation.h b/fon/Manipulation.h
index df8938a..81c281f 100644
--- a/fon/Manipulation.h
+++ b/fon/Manipulation.h
@@ -2,21 +2,20 @@
 #define _Manipulation_h_
 /* Manipulation.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -34,21 +33,20 @@
 #include "Image.h"
 
 #include "Manipulation_def.h"
-oo_CLASS_CREATE (Manipulation, Function);
 
 /* How to create an Manipulation. */
 
-Manipulation Manipulation_create (double tmin, double tmax);
-int Manipulation_replaceOriginalSound (Manipulation me, Sound sound);
-int Manipulation_replacePulses (Manipulation me, PointProcess pulses);
-int Manipulation_replaceIntensityTier (Manipulation me, IntensityTier intensity);
-int Manipulation_replacePitchTier (Manipulation me, PitchTier pitch);
-int Manipulation_replaceDurationTier (Manipulation me, DurationTier duration);
+autoManipulation Manipulation_create (double tmin, double tmax);
+void Manipulation_replaceOriginalSound (Manipulation me, Sound sound);
+void Manipulation_replacePulses (Manipulation me, PointProcess pulses);
+void Manipulation_replaceIntensityTier (Manipulation me, IntensityTier intensity);
+void Manipulation_replacePitchTier (Manipulation me, PitchTier pitch);
+void Manipulation_replaceDurationTier (Manipulation me, DurationTier duration);
 
-Manipulation Sound_to_Manipulation (Sound me, double timeStep, double minimumPitch, double maximumPitch);
-Manipulation Sound_Pitch_to_Manipulation (Sound sound, Pitch pitch);
-Manipulation Sound_PointProcess_to_Manipulation (Sound sound, PointProcess point);
-Manipulation Manipulation_AnyTier_to_Manipulation (Manipulation manip, AnyTier tier);
+autoManipulation Sound_to_Manipulation (Sound me, double timeStep, double minimumPitch, double maximumPitch);
+autoManipulation Sound_Pitch_to_Manipulation (Sound sound, Pitch pitch);
+autoManipulation Sound_PointProcess_to_Manipulation (Sound sound, PointProcess point);
+autoManipulation Manipulation_AnyTier_to_Manipulation (Manipulation manip, AnyTier tier);
 
 /* Resynthesis. */
 
@@ -67,18 +65,18 @@ Manipulation Manipulation_AnyTier_to_Manipulation (Manipulation manip, AnyTier t
 #define Manipulation_PITCH_LPC  13
 #define Manipulation_PITCH_LPC_INTENSITY  14
 #define Manipulation_PITCH_LPC_INT_DUR  15
-Sound Sound_Point_Point_to_Sound (Sound me, PointProcess source, PointProcess target, double maxT);
+autoSound Sound_Point_Point_to_Sound (Sound me, PointProcess source, PointProcess target, double maxT);
 /*void Sound_Formant_Intensity_filter (Sound me, FormantTier formant, IntensityTier intensity);*/
 
-Sound Manipulation_to_Sound (Manipulation me, int method);
+autoSound Manipulation_to_Sound (Manipulation me, int method);
 int Manipulation_playPart (Manipulation me, double tmin, double tmax, int method);
 int Manipulation_play (Manipulation me, int method);
-int Manipulation_writeToTextFileWithoutSound (Manipulation me, MelderFile fs);
-int Manipulation_writeToBinaryFileWithoutSound (Manipulation me, MelderFile fs);
+void Manipulation_writeToTextFileWithoutSound (Manipulation me, MelderFile file);
+void Manipulation_writeToBinaryFileWithoutSound (Manipulation me, MelderFile file);
 
 /* The low-level synthesis routines. */
 
-Sound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
+autoSound Sound_Point_Pitch_Duration_to_Sound (Sound me, PointProcess pulses,
 	PitchTier pitch, DurationTier duration, double maxT);
 
 /* End of file Manipulation.h */
diff --git a/fon/ManipulationEditor.cpp b/fon/ManipulationEditor.cpp
index 6ce33c9..5c092e0 100644
--- a/fon/ManipulationEditor.cpp
+++ b/fon/ManipulationEditor.cpp
@@ -1,20 +1,19 @@
 /* ManipulationEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManipulationEditor.h"
@@ -57,152 +56,131 @@ static int prefs_synthesisMethod = Manipulation_OVERLAPADD;   /* Remembered acro
 #define YLININV(freq)  (my p_pitch_units == kManipulationEditor_pitchUnits_HERTZ ? (freq) : NUMsemitonesToHertz (freq))
 
 static void updateMenus (ManipulationEditor me) {
-	Melder_assert (my synthPulsesButton != NULL);
+	Melder_assert (my synthPulsesButton);
 	GuiMenuItem_check (my synthPulsesButton, my synthesisMethod == Manipulation_PULSES);
-	Melder_assert (my synthPulsesHumButton != NULL);
+	Melder_assert (my synthPulsesHumButton);
 	GuiMenuItem_check (my synthPulsesHumButton, my synthesisMethod == Manipulation_PULSES_HUM);
-	Melder_assert (my synthPulsesLpcButton != NULL);
+	Melder_assert (my synthPulsesLpcButton);
 	GuiMenuItem_check (my synthPulsesLpcButton, my synthesisMethod == Manipulation_PULSES_LPC);
-	Melder_assert (my synthPitchButton != NULL);
+	Melder_assert (my synthPitchButton);
 	GuiMenuItem_check (my synthPitchButton, my synthesisMethod == Manipulation_PITCH);
-	Melder_assert (my synthPitchHumButton != NULL);
+	Melder_assert (my synthPitchHumButton);
 	GuiMenuItem_check (my synthPitchHumButton, my synthesisMethod == Manipulation_PITCH_HUM);
-	Melder_assert (my synthPulsesPitchButton != NULL);
+	Melder_assert (my synthPulsesPitchButton);
 	GuiMenuItem_check (my synthPulsesPitchButton, my synthesisMethod == Manipulation_PULSES_PITCH);
-	Melder_assert (my synthPulsesPitchHumButton != NULL);
+	Melder_assert (my synthPulsesPitchHumButton);
 	GuiMenuItem_check (my synthPulsesPitchHumButton, my synthesisMethod == Manipulation_PULSES_PITCH_HUM);
-	Melder_assert (my synthOverlapAddButton != NULL);
+	Melder_assert (my synthOverlapAddButton);
 	GuiMenuItem_check (my synthOverlapAddButton, my synthesisMethod == Manipulation_OVERLAPADD);
-	Melder_assert (my synthPitchLpcButton != NULL);
+	Melder_assert (my synthPitchLpcButton);
 	GuiMenuItem_check (my synthPitchLpcButton, my synthesisMethod == Manipulation_PITCH_LPC);
 }
 
 /*
  * The "sound area" contains the original sound and the pulses.
  */
-static int getSoundArea (ManipulationEditor me, double *ymin, double *ymax) {
+static bool getSoundArea (ManipulationEditor me, double *ymin, double *ymax) {
 	Manipulation ana = (Manipulation) my data;
 	*ymin = 0.66;
 	*ymax = 1.00;
-	return ana -> sound != NULL || ana -> pulses != NULL;
+	return ana -> sound || ana -> pulses;
 }
 /*
  * The "pitch area" contains the grey pitch analysis based on the pulses, and the blue pitch tier.
  */
-static int getPitchArea (ManipulationEditor me, double *ymin, double *ymax) {
+static bool getPitchArea (ManipulationEditor me, double *ymin, double *ymax) {
 	Manipulation ana = (Manipulation) my data;
 	*ymin = ana -> duration ? 0.16 : 0.00;
 	*ymax = 0.65;
-	return ana -> pulses != NULL || ana -> pitch != NULL;
+	return ana -> pulses || ana -> pitch;
 }
-static int getDurationArea (ManipulationEditor me, double *ymin, double *ymax) {
+static bool getDurationArea (ManipulationEditor me, double *ymin, double *ymax) {
 	Manipulation ana = (Manipulation) my data;
-	if (! ana -> duration) return FALSE;
+	if (! ana -> duration) return false;
 	*ymin = 0.00;
 	*ymax = 0.15;
-	return TRUE;
-}
-
-/********** DESTRUCTION **********/
-
-void structManipulationEditor :: v_destroy () {
-	forget (our previousPulses);
-	forget (our previousPitch);
-	forget (our previousDuration);
-	ManipulationEditor_Parent :: v_destroy ();
+	return true;
 }
 
 /********** MENU COMMANDS **********/
 
 /***** FILE MENU *****/
 
-static void menu_cb_extractOriginalSound (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_extractOriginalSound (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> sound) return;
-	autoSound publish = Data_copy (ana -> sound);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoSound publish = Data_copy (ana -> sound.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extractPulses (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_extractPulses (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pulses) return;
-	autoPointProcess publish = Data_copy (ana -> pulses);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoPointProcess publish = Data_copy (ana -> pulses.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extractPitchTier (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_extractPitchTier (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pitch) return;
-	autoPitchTier publish = Data_copy (ana -> pitch);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoPitchTier publish = Data_copy (ana -> pitch.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extractDurationTier (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_extractDurationTier (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> duration) return;
-	autoDurationTier publish = Data_copy (ana -> duration);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoDurationTier publish = Data_copy (ana -> duration.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_extractManipulatedSound (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_extractManipulatedSound (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	autoSound publish = Manipulation_to_Sound (ana, my synthesisMethod);
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
 /***** EDIT MENU *****/
 
 void structManipulationEditor :: v_saveData () {
 	Manipulation ana = (Manipulation) our data;
-	forget (our previousPulses);
-	forget (our previousPitch);
-	forget (our previousDuration);
-	if (ana -> pulses)   our previousPulses   = Data_copy (ana -> pulses);
-	if (ana -> pitch)    our previousPitch    = Data_copy (ana -> pitch);
-	if (ana -> duration) our previousDuration = Data_copy (ana -> duration);
+	if (ana -> pulses)   our previousPulses   = Data_copy (ana -> pulses.get());
+	if (ana -> pitch)    our previousPitch    = Data_copy (ana -> pitch.get());
+	if (ana -> duration) our previousDuration = Data_copy (ana -> duration.get());
 }
 
 void structManipulationEditor :: v_restoreData () {
 	Manipulation ana = (Manipulation) our data;
-	Any dummy;
-	dummy = ana -> pulses;   ana -> pulses   = our previousPulses;   our previousPulses   = (PointProcess) dummy;
-	dummy = ana -> pitch;    ana -> pitch    = our previousPitch;    our previousPitch    = (PitchTier)    dummy;
-	dummy = ana -> duration; ana -> duration = our previousDuration; our previousDuration = (DurationTier) dummy;
+	autoPointProcess dummy1 = ana -> pulses.move();   ana -> pulses   = our previousPulses.move();   our previousPulses   = dummy1.move();
+	autoPitchTier    dummy2 = ana -> pitch.move();    ana -> pitch    = our previousPitch.move();    our previousPitch    = dummy2.move();
+	autoDurationTier dummy3 = ana -> duration.move(); ana -> duration = our previousDuration.move(); our previousDuration = dummy3.move();
 }
 
 /***** PULSES MENU *****/
 
-static void menu_cb_removePulses (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);	
+static void menu_cb_removePulses (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pulses) return;
 	Editor_save (me, U"Remove pulse(s)");
 	if (my d_startSelection == my d_endSelection)
-		PointProcess_removePointNear (ana -> pulses, my d_startSelection);
+		PointProcess_removePointNear (ana -> pulses.get(), my d_startSelection);
 	else
-		PointProcess_removePointsBetween (ana -> pulses, my d_startSelection, my d_endSelection);
+		PointProcess_removePointsBetween (ana -> pulses.get(), my d_startSelection, my d_endSelection);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPulseAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_addPulseAtCursor (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pulses) return;
 	Editor_save (me, U"Add pulse");
-	PointProcess_addPoint (ana -> pulses, 0.5 * (my d_startSelection + my d_endSelection));
+	PointProcess_addPoint (ana -> pulses.get(), 0.5 * (my d_startSelection + my d_endSelection));
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPulseAt (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
-	EDITOR_FORM (U"Add pulse", 0)
+static void menu_cb_addPulseAt (ManipulationEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add pulse", nullptr)
 		REAL (U"Position (s)", U"0.0")
 	EDITOR_OK
 		SET_REAL (U"Position", 0.5 * (my d_startSelection + my d_endSelection))
@@ -210,7 +188,7 @@ static void menu_cb_addPulseAt (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> pulses) return;
 		Editor_save (me, U"Add pulse");
-		PointProcess_addPoint (ana -> pulses, GET_REAL (U"Position"));
+		PointProcess_addPoint (ana -> pulses.get(), GET_REAL (U"Position"));
 		FunctionEditor_redraw (me);
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
@@ -218,33 +196,30 @@ static void menu_cb_addPulseAt (EDITOR_ARGS) {
 
 /***** PITCH MENU *****/
 
-static void menu_cb_removePitchPoints (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_removePitchPoints (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pitch) return;
 	Editor_save (me, U"Remove pitch point(s)");
 	if (my d_startSelection == my d_endSelection)
-		AnyTier_removePointNear (ana -> pitch, my d_startSelection);
+		AnyTier_removePointNear (ana -> pitch.get()->asAnyTier(), my d_startSelection);
 	else
-		AnyTier_removePointsBetween (ana -> pitch, my d_startSelection, my d_endSelection);
+		AnyTier_removePointsBetween (ana -> pitch.get()->asAnyTier(), my d_startSelection, my d_endSelection);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPitchPointAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_addPitchPointAtCursor (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pitch) return;
 	Editor_save (me, U"Add pitch point");
-	RealTier_addPoint (ana -> pitch, 0.5 * (my d_startSelection + my d_endSelection), YLININV (my pitchTier.cursor));
+	RealTier_addPoint (ana -> pitch.get(), 0.5 * (my d_startSelection + my d_endSelection), YLININV (my pitchTier.cursor));
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPitchPointAtSlice (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_addPitchPointAtSlice (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
-	PointProcess pulses = ana -> pulses;
+	PointProcess pulses = ana -> pulses.get();
 	if (! pulses) Melder_throw (U"There are no pulses.");
 	if (! ana -> pitch) return;
 	long ileft = PointProcess_getLowIndex (pulses, 0.5 * (my d_startSelection + my d_endSelection)), iright = ileft + 1, nt = pulses -> nt;
@@ -274,13 +249,12 @@ static void menu_cb_addPitchPointAtSlice (EDITOR_ARGS) {
 		else if (tmid != 0.0) f = YLIN (2 / (tmid + tright));   // median of 2
 		else if (tright != 0.0) f = YLIN (1 / tright);   // median of 1
 	}
-	RealTier_addPoint (ana -> pitch, 0.5 * (my d_startSelection + my d_endSelection), YLININV (f));
+	RealTier_addPoint (ana -> pitch.get(), 0.5 * (my d_startSelection + my d_endSelection), YLININV (f));
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }	
 
-static void menu_cb_addPitchPointAt (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_addPitchPointAt (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Add pitch point", 0)
 		REAL (U"Time (s)", U"0.0")
 		REAL (U"Frequency (Hz or st)", U"100.0")
@@ -291,14 +265,13 @@ static void menu_cb_addPitchPointAt (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> pitch) return;
 		Editor_save (me, U"Add pitch point");
-		RealTier_addPoint (ana -> pitch, GET_REAL (U"Time"), YLININV (GET_REAL (U"Frequency")));
+		RealTier_addPoint (ana -> pitch.get(), GET_REAL (U"Time"), YLININV (GET_REAL (U"Frequency")));
 		FunctionEditor_redraw (me);
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_stylizePitch (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_stylizePitch (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Stylize pitch", U"PitchTier: Stylize...")
 		REAL (U"Frequency resolution", my default_pitch_stylize_frequencyResolution ())
 		RADIO (U"Units", my default_pitch_stylize_useSemitones () + 1)
@@ -311,7 +284,7 @@ static void menu_cb_stylizePitch (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> pitch) return;
 		Editor_save (me, U"Stylize pitch");
-		PitchTier_stylize (ana -> pitch,
+		PitchTier_stylize (ana -> pitch.get(),
 			my pref_pitch_stylize_frequencyResolution () = my p_pitch_stylize_frequencyResolution = GET_REAL (U"Frequency resolution"),
 			my pref_pitch_stylize_useSemitones        () = my p_pitch_stylize_useSemitones        = GET_INTEGER (U"Units") - 1);
 		FunctionEditor_redraw (me);
@@ -319,18 +292,16 @@ static void menu_cb_stylizePitch (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_stylizePitch_2st (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_stylizePitch_2st (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pitch) return;
 	Editor_save (me, U"Stylize pitch");
-	PitchTier_stylize (ana -> pitch, 2.0, TRUE);
+	PitchTier_stylize (ana -> pitch.get(), 2.0, true);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_interpolateQuadratically (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_interpolateQuadratically (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Interpolate quadratically", 0)
 		NATURAL (U"Number of points per parabola", my default_pitch_interpolateQuadratically_numberOfPointsPerParabola ())
 	EDITOR_OK
@@ -339,7 +310,7 @@ static void menu_cb_interpolateQuadratically (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> pitch) return;
 		Editor_save (me, U"Interpolate quadratically");
-		RealTier_interpolateQuadratically (ana -> pitch,
+		RealTier_interpolateQuadratically (ana -> pitch.get(),
 			my pref_pitch_interpolateQuadratically_numberOfPointsPerParabola () = my p_pitch_interpolateQuadratically_numberOfPointsPerParabola = GET_INTEGER (U"Number of points per parabola"),
 			my p_pitch_units == kManipulationEditor_pitchUnits_SEMITONES);
 		FunctionEditor_redraw (me);
@@ -347,18 +318,16 @@ static void menu_cb_interpolateQuadratically (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_interpolateQuadratically_4pts (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_interpolateQuadratically_4pts (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> pitch) return;
 	Editor_save (me, U"Interpolate quadratically");
-	RealTier_interpolateQuadratically (ana -> pitch, 4, my p_pitch_units == kManipulationEditor_pitchUnits_SEMITONES);
+	RealTier_interpolateQuadratically (ana -> pitch.get(), 4, my p_pitch_units == kManipulationEditor_pitchUnits_SEMITONES);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_shiftPitchFrequencies (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_shiftPitchFrequencies (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Shift pitch frequencies", 0)
 		REAL (U"Frequency shift", U"-20.0")
 		OPTIONMENU (U"Unit", 1)
@@ -380,7 +349,7 @@ static void menu_cb_shiftPitchFrequencies (EDITOR_ARGS) {
 		if (! ana -> pitch) return;
 		Editor_save (me, U"Shift pitch frequencies");
 		try {
-			PitchTier_shiftFrequencies (ana -> pitch, my d_startSelection, my d_endSelection, GET_REAL (U"Frequency shift"), unit);
+			PitchTier_shiftFrequencies (ana -> pitch.get(), my d_startSelection, my d_endSelection, GET_REAL (U"Frequency shift"), unit);
 			FunctionEditor_redraw (me);
 			Editor_broadcastDataChanged (me);
 		} catch (MelderError) {
@@ -392,8 +361,7 @@ static void menu_cb_shiftPitchFrequencies (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_multiplyPitchFrequencies (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_multiplyPitchFrequencies (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Multiply pitch frequencies", 0)
 		POSITIVE (U"Factor", U"1.2")
 		LABEL (U"", U"The multiplication is always done in hertz.")
@@ -402,14 +370,13 @@ static void menu_cb_multiplyPitchFrequencies (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> pitch) return;
 		Editor_save (me, U"Multiply pitch frequencies");
-		PitchTier_multiplyFrequencies (ana -> pitch, my d_startSelection, my d_endSelection, GET_REAL (U"Factor"));
+		PitchTier_multiplyFrequencies (ana -> pitch.get(), my d_startSelection, my d_endSelection, GET_REAL (U"Factor"));
 		FunctionEditor_redraw (me);
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_setPitchRange (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_setPitchRange (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Set pitch range", 0)
 		/* BUG: should include Minimum */
 		REAL (U"Maximum (Hz or st)", my default_pitch_maximum ())
@@ -424,8 +391,7 @@ static void menu_cb_setPitchRange (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_setPitchUnits (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_setPitchUnits (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Set pitch units", 0)
 		RADIO_ENUM (U"Pitch units", kManipulationEditor_pitchUnits, my default_pitch_units ())
 	EDITOR_OK
@@ -451,8 +417,7 @@ static void menu_cb_setPitchUnits (EDITOR_ARGS) {
 
 /***** DURATION MENU *****/
 
-static void menu_cb_setDurationRange (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_setDurationRange (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Set duration range", 0)
 		REAL (U"Minimum", my default_duration_minimum ())
 		REAL (U"Maximum", my default_duration_maximum ())
@@ -462,8 +427,8 @@ static void menu_cb_setDurationRange (EDITOR_ARGS) {
 	EDITOR_DO
 		Manipulation ana = (Manipulation) my data;
 		double minimum = GET_REAL (U"Minimum"), maximum = GET_REAL (U"Maximum");
-		double minimumValue = ana -> duration ? RealTier_getMinimumValue (ana -> duration) : NUMundefined;
-		double maximumValue = ana -> duration ? RealTier_getMaximumValue (ana -> duration) : NUMundefined;
+		double minimumValue = ana -> duration ? RealTier_getMinimumValue (ana -> duration.get()) : NUMundefined;
+		double maximumValue = ana -> duration ? RealTier_getMaximumValue (ana -> duration.get()) : NUMundefined;
 		if (minimum > 1) Melder_throw (U"Minimum relative duration must not be greater than 1.");
 		if (maximum < 1) Melder_throw (U"Maximum relative duration must not be less than 1.");
 		if (minimum >= maximum) Melder_throw (U"Maximum relative duration must be greater than minimum.");
@@ -479,8 +444,7 @@ static void menu_cb_setDurationRange (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_setDraggingStrategy (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_setDraggingStrategy (ManipulationEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Set dragging strategy", U"ManipulationEditor")
 		RADIO_ENUM (U"Dragging strategy", kManipulationEditor_draggingStrategy, my default_pitch_draggingStrategy ())
 	EDITOR_OK
@@ -490,32 +454,29 @@ static void menu_cb_setDraggingStrategy (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_removeDurationPoints (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_removeDurationPoints (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> duration) return;
 	Editor_save (me, U"Remove duration point(s)");
 	if (my d_startSelection == my d_endSelection)
-		AnyTier_removePointNear (ana -> duration, 0.5 * (my d_startSelection + my d_endSelection));
+		AnyTier_removePointNear (ana -> duration.get()->asAnyTier(), 0.5 * (my d_startSelection + my d_endSelection));
 	else
-		AnyTier_removePointsBetween (ana -> duration, my d_startSelection, my d_endSelection);
+		AnyTier_removePointsBetween (ana -> duration.get()->asAnyTier(), my d_startSelection, my d_endSelection);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addDurationPointAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_addDurationPointAtCursor (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	if (! ana -> duration) return;
 	Editor_save (me, U"Add duration point");
-	RealTier_addPoint (ana -> duration, 0.5 * (my d_startSelection + my d_endSelection), my duration.cursor);
+	RealTier_addPoint (ana -> duration.get(), 0.5 * (my d_startSelection + my d_endSelection), my duration.cursor);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addDurationPointAt (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
-	EDITOR_FORM (U"Add duration point", 0)
+static void menu_cb_addDurationPointAt (ManipulationEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add duration point", nullptr)
 		REAL (U"Time (s)", U"0.0");
 		REAL (U"Relative duration", U"1.0");
 	EDITOR_OK
@@ -524,36 +485,32 @@ static void menu_cb_addDurationPointAt (EDITOR_ARGS) {
 		Manipulation ana = (Manipulation) my data;
 		if (! ana -> duration) return;
 		Editor_save (me, U"Add duration point");
-		RealTier_addPoint (ana -> duration, GET_REAL (U"Time"), GET_REAL (U"Relative duration"));
+		RealTier_addPoint (ana -> duration.get(), GET_REAL (U"Time"), GET_REAL (U"Relative duration"));
 		FunctionEditor_redraw (me);
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_newDuration (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_newDuration (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
 	Editor_save (me, U"New duration");
-	forget (ana -> duration);
 	ana -> duration = DurationTier_create (ana -> xmin, ana -> xmax);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_forgetDuration (EDITOR_ARGS) {
-	EDITOR_IAM (ManipulationEditor);
+static void menu_cb_forgetDuration (ManipulationEditor me, EDITOR_ARGS_DIRECT) {
 	Manipulation ana = (Manipulation) my data;
-	forget (ana -> duration);
+	ana -> duration = autoDurationTier();
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 	
-static void menu_cb_ManipulationEditorHelp (EDITOR_ARGS) { EDITOR_IAM (ManipulationEditor); Melder_help (U"ManipulationEditor"); }
-static void menu_cb_ManipulationHelp (EDITOR_ARGS) { EDITOR_IAM (ManipulationEditor); Melder_help (U"Manipulation"); }
+static void menu_cb_ManipulationEditorHelp (ManipulationEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"ManipulationEditor"); }
+static void menu_cb_ManipulationHelp (ManipulationEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Manipulation"); }
 
 #define menu_cb_Synth_common(menu_cb,meth) \
-static void menu_cb (EDITOR_ARGS) { \
-	EDITOR_IAM (ManipulationEditor); \
+static void menu_cb (ManipulationEditor me, EDITOR_ARGS_DIRECT) { \
 	prefs_synthesisMethod = my synthesisMethod = meth; \
 	updateMenus (me); \
 }
@@ -576,25 +533,25 @@ void structManipulationEditor :: v_createMenus () {
 	Editor_addCommand (this, U"File", U"Extract pitch tier", 0, menu_cb_extractPitchTier);
 	Editor_addCommand (this, U"File", U"Extract duration tier", 0, menu_cb_extractDurationTier);
 	Editor_addCommand (this, U"File", U"Publish resynthesis", 0, menu_cb_extractManipulatedSound);
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
 
 	Editor_addMenu (this, U"Pulse", 0);
 	Editor_addCommand (this, U"Pulse", U"Add pulse at cursor", 'P', menu_cb_addPulseAtCursor);
 	Editor_addCommand (this, U"Pulse", U"Add pulse at...", 0, menu_cb_addPulseAt);
-	Editor_addCommand (this, U"Pulse", U"-- remove pulses --", 0, NULL);
+	Editor_addCommand (this, U"Pulse", U"-- remove pulses --", 0, nullptr);
 	Editor_addCommand (this, U"Pulse", U"Remove pulse(s)", GuiMenu_OPTION + 'P', menu_cb_removePulses);
 
 	Editor_addMenu (this, U"Pitch", 0);
 	Editor_addCommand (this, U"Pitch", U"Add pitch point at cursor", 'T', menu_cb_addPitchPointAtCursor);
 	Editor_addCommand (this, U"Pitch", U"Add pitch point at time slice", 0, menu_cb_addPitchPointAtSlice);
 	Editor_addCommand (this, U"Pitch", U"Add pitch point at...", 0, menu_cb_addPitchPointAt);
-	Editor_addCommand (this, U"Pitch", U"-- remove pitch --", 0, NULL);
+	Editor_addCommand (this, U"Pitch", U"-- remove pitch --", 0, nullptr);
 	Editor_addCommand (this, U"Pitch", U"Remove pitch point(s)", GuiMenu_OPTION + 'T', menu_cb_removePitchPoints);
-	Editor_addCommand (this, U"Pitch", U"-- pitch prefs --", 0, NULL);
+	Editor_addCommand (this, U"Pitch", U"-- pitch prefs --", 0, nullptr);
 	Editor_addCommand (this, U"Pitch", U"Set pitch range...", 0, menu_cb_setPitchRange);
 	Editor_addCommand (this, U"Pitch", U"Set pitch units...", 0, menu_cb_setPitchUnits);
 	Editor_addCommand (this, U"Pitch", U"Set pitch dragging strategy...", 0, menu_cb_setDraggingStrategy);
-	Editor_addCommand (this, U"Pitch", U"-- modify pitch --", 0, NULL);
+	Editor_addCommand (this, U"Pitch", U"-- modify pitch --", 0, nullptr);
 	Editor_addCommand (this, U"Pitch", U"Shift pitch frequencies...", 0, menu_cb_shiftPitchFrequencies);
 	Editor_addCommand (this, U"Pitch", U"Multiply pitch frequencies...", 0, menu_cb_multiplyPitchFrequencies);
 	Editor_addCommand (this, U"Pitch", U"All:", GuiMenu_INSENSITIVE, menu_cb_stylizePitch);
@@ -606,11 +563,11 @@ void structManipulationEditor :: v_createMenus () {
 	Editor_addMenu (this, U"Dur", 0);
 	Editor_addCommand (this, U"Dur", U"Add duration point at cursor", 'D', menu_cb_addDurationPointAtCursor);
 	Editor_addCommand (this, U"Dur", U"Add duration point at...", 0, menu_cb_addDurationPointAt);
-	Editor_addCommand (this, U"Dur", U"-- remove duration --", 0, NULL);
+	Editor_addCommand (this, U"Dur", U"-- remove duration --", 0, nullptr);
 	Editor_addCommand (this, U"Dur", U"Remove duration point(s)", GuiMenu_OPTION + 'D', menu_cb_removeDurationPoints);
-	Editor_addCommand (this, U"Dur", U"-- duration prefs --", 0, NULL);
+	Editor_addCommand (this, U"Dur", U"-- duration prefs --", 0, nullptr);
 	Editor_addCommand (this, U"Dur", U"Set duration range...", 0, menu_cb_setDurationRange);
-	Editor_addCommand (this, U"Dur", U"-- refresh duration --", 0, NULL);
+	Editor_addCommand (this, U"Dur", U"-- refresh duration --", 0, nullptr);
 	Editor_addCommand (this, U"Dur", U"New duration", 0, menu_cb_newDuration);
 	Editor_addCommand (this, U"Dur", U"Forget duration", 0, menu_cb_forgetDuration);
 
@@ -619,12 +576,12 @@ void structManipulationEditor :: v_createMenus () {
 	our synthPulsesHumButton = Editor_addCommand (this, U"Synth", U"Pulses (hum) --", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pulses_hum);
 
 	our synthPulsesLpcButton = Editor_addCommand (this, U"Synth", U"Pulses & LPC -- (\"LPC resynthesis\")", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pulses_Lpc);
-	Editor_addCommand (this, U"Synth", U"-- pitch resynth --", 0, NULL);
+	Editor_addCommand (this, U"Synth", U"-- pitch resynth --", 0, nullptr);
 	our synthPitchButton = Editor_addCommand (this, U"Synth", U" -- Pitch", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pitch);
 	our synthPitchHumButton = Editor_addCommand (this, U"Synth", U" -- Pitch (hum)", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pitch_hum);
 	our synthPulsesPitchButton = Editor_addCommand (this, U"Synth", U"Pulses -- Pitch", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pulses_Pitch);
 	our synthPulsesPitchHumButton = Editor_addCommand (this, U"Synth", U"Pulses -- Pitch (hum)", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pulses_Pitch_hum);
-	Editor_addCommand (this, U"Synth", U"-- full resynth --", 0, NULL);
+	Editor_addCommand (this, U"Synth", U"-- full resynth --", 0, nullptr);
 	our synthOverlapAddButton = Editor_addCommand (this, U"Synth", U"Sound & Pulses -- Pitch & Duration  (\"Overlap-add manipulation\")", GuiMenu_RADIO_NEXT | GuiMenu_TOGGLE_ON, menu_cb_Synth_OverlapAdd);
 	our synthPitchLpcButton = Editor_addCommand (this, U"Synth", U"LPC -- Pitch  (\"LPC pitch manipulation\")", GuiMenu_RADIO_NEXT, menu_cb_Synth_Pitch_Lpc);
 }
@@ -639,32 +596,32 @@ void structManipulationEditor :: v_createHelpMenuItems (EditorMenu menu) {
 
 static void drawSoundArea (ManipulationEditor me, double ymin, double ymax) {
 	Manipulation ana = (Manipulation) my data;
-	Sound sound = ana -> sound;
-	PointProcess pulses = ana -> pulses;
+	Sound sound = ana -> sound.get();
+	PointProcess pulses = ana -> pulses.get();
 	long first, last, i;
-	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics, 0, 1, ymin, ymax);
-	Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_rectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-	Graphics_setFont (my d_graphics, kGraphics_font_TIMES);
-	Graphics_text (my d_graphics, 1, 1, U"%%Sound");
-	Graphics_setColour (my d_graphics, Graphics_BLUE);
-	Graphics_text (my d_graphics, 1, 1 - Graphics_dyMMtoWC (my d_graphics, 3), U"%%Pulses");
-	Graphics_setFont (my d_graphics, kGraphics_font_HELVETICA);
+	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics.get(), 0.0, 1.0, ymin, ymax);
+	Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_TIMES);
+	Graphics_text (my d_graphics.get(), 1.0, 1.0, U"%%Sound");
+	Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+	Graphics_text (my d_graphics.get(), 1.0, 1.0 - Graphics_dyMMtoWC (my d_graphics.get(), 3), U"%%Pulses");
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_HELVETICA);
 
 	/*
 	 * Draw blue pulses.
 	 */
 	if (pulses) {
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, 0.0, 1.0);
-		Graphics_setColour (my d_graphics, Graphics_BLUE);
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, 0.0, 1.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
 		for (i = 1; i <= pulses -> nt; i ++) {
 			double t = pulses -> t [i];
 			if (t >= my d_startWindow && t <= my d_endWindow)
-				Graphics_line (my d_graphics, t, 0.05, t, 0.95);
+				Graphics_line (my d_graphics.get(), t, 0.05, t, 0.95);
 		}
 	}
 
@@ -681,7 +638,7 @@ static void drawSoundArea (ManipulationEditor me, double ymin, double ymax) {
 		 */
 		scaleMin = 0.83 * minimum + 0.17 * my soundmin;
 		scaleMax = 0.83 * maximum + 0.17 * my soundmax;
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, scaleMin, scaleMax);
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, scaleMin, scaleMax);
 		FunctionEditor_drawRangeMark (me, scaleMin, Melder_float (Melder_half (scaleMin)), U"", Graphics_BOTTOM);
 		FunctionEditor_drawRangeMark (me, scaleMax, Melder_float (Melder_half (scaleMax)), U"", Graphics_TOP);
 
@@ -689,28 +646,28 @@ static void drawSoundArea (ManipulationEditor me, double ymin, double ymax) {
 		 * Draw dotted zero line.
 		 */
 		if (minimum < 0.0 && maximum > 0.0) {
-			Graphics_setColour (my d_graphics, Graphics_CYAN);
-			Graphics_setLineType (my d_graphics, Graphics_DOTTED);
-			Graphics_line (my d_graphics, my d_startWindow, 0.0, my d_endWindow, 0.0);
-			Graphics_setLineType (my d_graphics, Graphics_DRAWN);
+			Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+			Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
+			Graphics_line (my d_graphics.get(), my d_startWindow, 0.0, my d_endWindow, 0.0);
+			Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
 		} 
 
 		/*
 		 * Draw samples.
 		 */    
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
-		Graphics_function (my d_graphics, sound -> z [1], first, last,
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+		Graphics_function (my d_graphics.get(), sound -> z [1], first, last,
 			Sampled_indexToX (sound, first), Sampled_indexToX (sound, last));
 	}
 
-	Graphics_resetViewport (my d_graphics, viewport);
+	Graphics_resetViewport (my d_graphics.get(), viewport);
 }
 
 static void drawPitchArea (ManipulationEditor me, double ymin, double ymax) {
 	Manipulation ana = (Manipulation) my data;
-	PointProcess pulses = ana -> pulses;
-	PitchTier pitch = ana -> pitch;
-	long ifirstSelected, ilastSelected, n = pitch ? pitch -> points -> size : 0, imin, imax, i;
+	PointProcess pulses = ana -> pulses.get();
+	PitchTier pitch = ana -> pitch.get();
+	long ifirstSelected, ilastSelected, n = pitch ? pitch -> points.size : 0, imin, imax, i;
 	int cursorVisible = my d_startSelection == my d_endSelection && my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow;
 	double minimumFrequency = YLIN (50);
 	int rangePrecisions [] = { 0, 1, 2 };
@@ -719,38 +676,38 @@ static void drawPitchArea (ManipulationEditor me, double ymin, double ymax) {
 	/*
 	 * Pitch contours.
 	 */
-	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics, 0, 1, ymin, ymax);
-	Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_rectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_GREEN);
-	Graphics_setFont (my d_graphics, kGraphics_font_TIMES);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-	Graphics_text (my d_graphics, 1, 1, U"%%Pitch manip");
-	Graphics_setGrey (my d_graphics, 0.7);
-	Graphics_text (my d_graphics, 1, 1 - Graphics_dyMMtoWC (my d_graphics, 3), U"%%Pitch from pulses");
-	Graphics_setFont (my d_graphics, kGraphics_font_HELVETICA);
-
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_pitch_minimum, my p_pitch_maximum);
+	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics.get(), 0, 1, ymin, ymax);
+	Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_TIMES);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+	Graphics_text (my d_graphics.get(), 1.0, 1.0, U"%%Pitch manip");
+	Graphics_setGrey (my d_graphics.get(), 0.7);
+	Graphics_text (my d_graphics.get(), 1.0, 1.0 - Graphics_dyMMtoWC (my d_graphics.get(), 3), U"%%Pitch from pulses");
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_HELVETICA);
+
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_pitch_minimum, my p_pitch_maximum);
 
 	/*
 	 * Draw pitch contour based on pulses.
 	 */
-	Graphics_setGrey (my d_graphics, 0.7);
+	Graphics_setGrey (my d_graphics.get(), 0.7);
 	if (pulses) for (i = 1; i < pulses -> nt; i ++) {
 		double tleft = pulses -> t [i], tright = pulses -> t [i + 1], t = 0.5 * (tleft + tright);
 		if (t >= my d_startWindow && t <= my d_endWindow) {
 			if (tleft != tright) {
 				double f = YLIN (1 / (tright - tleft));
 				if (f >= my pitchTier.minPeriodic && f <= my p_pitch_maximum) {
-					Graphics_fillCircle_mm (my d_graphics, t, f, 1);
+					Graphics_fillCircle_mm (my d_graphics.get(), t, f, 1);
 				}
 			}
 		}
 	}
-	Graphics_setGrey (my d_graphics, 0.0);
+	Graphics_setGrey (my d_graphics.get(), 0.0);
 
 	FunctionEditor_drawGridLine (me, minimumFrequency);
 	FunctionEditor_drawRangeMark (me, my p_pitch_maximum,
@@ -767,77 +724,77 @@ static void drawPitchArea (ManipulationEditor me, double ymin, double ymax) {
 			my p_pitch_minimum, my p_pitch_maximum);
 	}
 	if (pitch) {
-		ifirstSelected = AnyTier_timeToHighIndex (pitch, my d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (pitch, my d_endSelection);
-		imin = AnyTier_timeToHighIndex (pitch, my d_startWindow);
-		imax = AnyTier_timeToLowIndex (pitch, my d_endWindow);
+		ifirstSelected = AnyTier_timeToHighIndex (pitch->asAnyTier(), my d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (pitch->asAnyTier(), my d_endSelection);
+		imin = AnyTier_timeToHighIndex (pitch->asAnyTier(), my d_startWindow);
+		imax = AnyTier_timeToLowIndex (pitch->asAnyTier(), my d_endWindow);
 	}
-	Graphics_setLineWidth (my d_graphics, 2);
+	Graphics_setLineWidth (my d_graphics.get(), 2.0);
 	if (n == 0) {
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
-		Graphics_text (my d_graphics, 0.5 * (my d_startWindow + my d_endWindow), 0.5 * (my p_pitch_minimum + my p_pitch_maximum), U"(no pitch points)");
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+		Graphics_text (my d_graphics.get(), 0.5 * (my d_startWindow + my d_endWindow), 0.5 * (my p_pitch_minimum + my p_pitch_maximum), U"(no pitch points)");
 	} else if (imax < imin) {
 		double fleft = YLIN (RealTier_getValueAtTime (pitch, my d_startWindow));
 		double fright = YLIN (RealTier_getValueAtTime (pitch, my d_endWindow));
-		Graphics_setColour (my d_graphics, Graphics_GREEN);
-		Graphics_line (my d_graphics, my d_startWindow, fleft, my d_endWindow, fright);
+		Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+		Graphics_line (my d_graphics.get(), my d_startWindow, fleft, my d_endWindow, fright);
 	} else {
 		for (i = imin; i <= imax; i ++) {
-			RealPoint point = (RealPoint) pitch -> points -> item [i];
+			RealPoint point = pitch -> points.at [i];
 			double t = point -> number, f = YLIN (point -> value);
-			Graphics_setColour (my d_graphics, Graphics_GREEN);
+			Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
 			if (i == 1)
-				Graphics_line (my d_graphics, my d_startWindow, f, t, f);
+				Graphics_line (my d_graphics.get(), my d_startWindow, f, t, f);
 			else if (i == imin)
-				Graphics_line (my d_graphics, t, f, my d_startWindow, YLIN (RealTier_getValueAtTime (pitch, my d_startWindow)));
+				Graphics_line (my d_graphics.get(), t, f, my d_startWindow, YLIN (RealTier_getValueAtTime (pitch, my d_startWindow)));
 			if (i == n)
-				Graphics_line (my d_graphics, t, f, my d_endWindow, f);
+				Graphics_line (my d_graphics.get(), t, f, my d_endWindow, f);
 			else if (i == imax)
-				Graphics_line (my d_graphics, t, f, my d_endWindow, YLIN (RealTier_getValueAtTime (pitch, my d_endWindow)));
+				Graphics_line (my d_graphics.get(), t, f, my d_endWindow, YLIN (RealTier_getValueAtTime (pitch, my d_endWindow)));
 			else {
-				RealPoint pointRight = (RealPoint) pitch -> points -> item [i + 1];
-				Graphics_line (my d_graphics, t, f, pointRight -> number, YLIN (pointRight -> value));
+				RealPoint pointRight = pitch -> points.at [i + 1];
+				Graphics_line (my d_graphics.get(), t, f, pointRight -> number, YLIN (pointRight -> value));
 			}
 		}
 		for (i = imin; i <= imax; i ++) {
-			RealPoint point = (RealPoint) pitch -> points -> item [i];
+			RealPoint point = pitch -> points.at [i];
 			double t = point -> number, f = YLIN (point -> value);
 			if (i >= ifirstSelected && i <= ilastSelected)
-				Graphics_setColour (my d_graphics, Graphics_RED);	
+				Graphics_setColour (my d_graphics.get(), Graphics_RED);
 			else
-				Graphics_setColour (my d_graphics, Graphics_GREEN);
-			Graphics_fillCircle_mm (my d_graphics, t, f, 3);
+				Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+			Graphics_fillCircle_mm (my d_graphics.get(), t, f, 3.0);
 		}
 	}
-	Graphics_setLineWidth (my d_graphics, 1);
+	Graphics_setLineWidth (my d_graphics.get(), 1.0);
 
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_resetViewport (my d_graphics, viewport);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_resetViewport (my d_graphics.get(), viewport);
 }
 
 static void drawDurationArea (ManipulationEditor me, double ymin, double ymax) {
 	Manipulation ana = (Manipulation) my data;
-	DurationTier duration = ana -> duration;
-	long ifirstSelected, ilastSelected, n = duration ? duration -> points -> size : 0, imin, imax, i;
+	DurationTier duration = ana -> duration.get();
+	long ifirstSelected, ilastSelected, n = duration ? duration -> points.size : 0, imin, imax, i;
 	int cursorVisible = my d_startSelection == my d_endSelection && my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow;
 
 	/*
 	 * Duration contours.
 	 */
-	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics, 0, 1, ymin, ymax);
-	Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_rectangle (my d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (my d_graphics, Graphics_GREEN);
-	Graphics_setFont (my d_graphics, kGraphics_font_TIMES);
-	Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-	Graphics_text (my d_graphics, 1, 1, U"%%Duration manip");
-	Graphics_setFont (my d_graphics, kGraphics_font_HELVETICA);
-
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_duration_minimum, my p_duration_maximum);
+	Graphics_Viewport viewport = Graphics_insetViewport (my d_graphics.get(), 0.0, 1.0, ymin, ymax);
+	Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_TIMES);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+	Graphics_text (my d_graphics.get(), 1.0, 1.0, U"%%Duration manip");
+	Graphics_setFont (my d_graphics.get(), kGraphics_font_HELVETICA);
+
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_duration_minimum, my p_duration_maximum);
 	FunctionEditor_drawGridLine (me, 1.0);
 	FunctionEditor_drawRangeMark (me, my p_duration_maximum, Melder_fixed (my p_duration_maximum, 3), U"", Graphics_TOP);
 	FunctionEditor_drawRangeMark (me, my p_duration_minimum, Melder_fixed (my p_duration_minimum, 3), U"", Graphics_BOTTOM);
@@ -852,54 +809,54 @@ static void drawDurationArea (ManipulationEditor me, double ymin, double ymax) {
 	 * Draw duration tier.
 	 */
 	if (duration) {
-		ifirstSelected = AnyTier_timeToHighIndex (duration, my d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (duration, my d_endSelection);
-		imin = AnyTier_timeToHighIndex (duration, my d_startWindow);
-		imax = AnyTier_timeToLowIndex (duration, my d_endWindow);
+		ifirstSelected = AnyTier_timeToHighIndex (duration->asAnyTier(), my d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (duration->asAnyTier(), my d_endSelection);
+		imin = AnyTier_timeToHighIndex (duration->asAnyTier(), my d_startWindow);
+		imax = AnyTier_timeToLowIndex (duration->asAnyTier(), my d_endWindow);
 	}
-	Graphics_setLineWidth (my d_graphics, 2);
+	Graphics_setLineWidth (my d_graphics.get(), 2.0);
 	if (n == 0) {
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (my d_graphics, 0.5 * (my d_startWindow + my d_endWindow),
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), 0.5 * (my d_startWindow + my d_endWindow),
 			0.5 * (my p_duration_minimum + my p_duration_maximum), U"(no duration points)");
 	} else if (imax < imin) {
 		double fleft = RealTier_getValueAtTime (duration, my d_startWindow);
 		double fright = RealTier_getValueAtTime (duration, my d_endWindow);
-		Graphics_setColour (my d_graphics, Graphics_GREEN);
-		Graphics_line (my d_graphics, my d_startWindow, fleft, my d_endWindow, fright);
+		Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+		Graphics_line (my d_graphics.get(), my d_startWindow, fleft, my d_endWindow, fright);
 	} else {
 		for (i = imin; i <= imax; i ++) {
-			RealPoint point = (RealPoint) duration -> points -> item [i];
+			RealPoint point = duration -> points.at [i];
 			double t = point -> number, dur = point -> value;
-			Graphics_setColour (my d_graphics, Graphics_GREEN);
+			Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
 			if (i == 1)
-				Graphics_line (my d_graphics, my d_startWindow, dur, t, dur);
+				Graphics_line (my d_graphics.get(), my d_startWindow, dur, t, dur);
 			else if (i == imin)
-				Graphics_line (my d_graphics, t, dur, my d_startWindow, RealTier_getValueAtTime (duration, my d_startWindow));
+				Graphics_line (my d_graphics.get(), t, dur, my d_startWindow, RealTier_getValueAtTime (duration, my d_startWindow));
 			if (i == n)
-				Graphics_line (my d_graphics, t, dur, my d_endWindow, dur);
+				Graphics_line (my d_graphics.get(), t, dur, my d_endWindow, dur);
 			else if (i == imax)
-				Graphics_line (my d_graphics, t, dur, my d_endWindow, RealTier_getValueAtTime (duration, my d_endWindow));
+				Graphics_line (my d_graphics.get(), t, dur, my d_endWindow, RealTier_getValueAtTime (duration, my d_endWindow));
 			else {
-				RealPoint pointRight = (RealPoint) duration -> points -> item [i + 1];
-				Graphics_line (my d_graphics, t, dur, pointRight -> number, pointRight -> value);
+				RealPoint pointRight = duration -> points.at [i + 1];
+				Graphics_line (my d_graphics.get(), t, dur, pointRight -> number, pointRight -> value);
 			}
 		}
 		for (i = imin; i <= imax; i ++) {
-			RealPoint point = (RealPoint) duration -> points -> item [i];
+			RealPoint point = duration -> points.at [i];
 			double t = point -> number, dur = point -> value;
 			if (i >= ifirstSelected && i <= ilastSelected)
-				Graphics_setColour (my d_graphics, Graphics_RED);	
+				Graphics_setColour (my d_graphics.get(), Graphics_RED);
 			else
-				Graphics_setColour (my d_graphics, Graphics_GREEN);	
-			Graphics_fillCircle_mm (my d_graphics, t, dur, 3);
+				Graphics_setColour (my d_graphics.get(), Graphics_GREEN);
+			Graphics_fillCircle_mm (my d_graphics.get(), t, dur, 3.0);
 		}
 	}
 
-	Graphics_setLineWidth (my d_graphics, 1);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_resetViewport (my d_graphics, viewport);
+	Graphics_setLineWidth (my d_graphics.get(), 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_resetViewport (my d_graphics.get(), viewport);
 }
 
 void structManipulationEditor :: v_draw () {
@@ -913,25 +870,25 @@ void structManipulationEditor :: v_draw () {
 	if (hasPitchArea) drawPitchArea (this, ypitchmin, ypitchmax);
 	if (hasDurationArea) drawDurationArea (this, ydurationmin, ydurationmax);
 
-	Graphics_setWindow (our d_graphics, 0.0, 1.0, 0.0, 1.0);
-	Graphics_setGrey (our d_graphics, 0.85);
-	Graphics_fillRectangle (our d_graphics, -0.001, 1.001, ypitchmax, ysoundmin);
-	Graphics_setGrey (our d_graphics, 0.00);
-	Graphics_line (our d_graphics, 0, ysoundmin, 1, ysoundmin);
-	Graphics_line (our d_graphics, 0, ypitchmax, 1, ypitchmax);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setGrey (our d_graphics.get(), 0.85);
+	Graphics_fillRectangle (our d_graphics.get(), -0.001, 1.001, ypitchmax, ysoundmin);
+	Graphics_setGrey (our d_graphics.get(), 0.00);
+	Graphics_line (our d_graphics.get(), 0.0, ysoundmin, 1.0, ysoundmin);
+	Graphics_line (our d_graphics.get(), 0.0, ypitchmax, 1.0, ypitchmax);
 	if (hasDurationArea) {
-		Graphics_setGrey (our d_graphics, 0.85);
-		Graphics_fillRectangle (our d_graphics, -0.001, 1.001, ydurationmax, ypitchmin);
-		Graphics_setGrey (our d_graphics, 0.00);
-		Graphics_line (our d_graphics, 0, ypitchmin, 1, ypitchmin);
-		Graphics_line (our d_graphics, 0, ydurationmax, 1, ydurationmax);
+		Graphics_setGrey (our d_graphics.get(), 0.85);
+		Graphics_fillRectangle (our d_graphics.get(), -0.001, 1.001, ydurationmax, ypitchmin);
+		Graphics_setGrey (our d_graphics.get(), 0.00);
+		Graphics_line (our d_graphics.get(), 0, ypitchmin, 1, ypitchmin);
+		Graphics_line (our d_graphics.get(), 0, ydurationmax, 1, ydurationmax);
 	}
 	updateMenus (this);
 }
 
 static void drawWhileDragging (ManipulationEditor me, double xWC, double yWC, long first, long last, double dt, double df) {
 	Manipulation ana = (Manipulation) my data;
-	PitchTier pitch = ana -> pitch;
+	PitchTier pitch = ana -> pitch.get();
 	(void) xWC;
 	(void) yWC;
 
@@ -939,31 +896,31 @@ static void drawWhileDragging (ManipulationEditor me, double xWC, double yWC, lo
 	 * Draw all selected pitch points as magenta empty circles, if inside the window.
 	 */
 	for (long i = first; i <= last; i ++) {
-		RealPoint point = pitch -> point (i);
+		RealPoint point = pitch -> points.at [i];
 		double t = point -> number + dt, f = YLIN (point -> value) + df;
 		if (t >= my d_startWindow && t <= my d_endWindow)
-			Graphics_circle_mm (my d_graphics, t,
-				f < my pitchTier.minPeriodic ? my pitchTier.minPeriodic : f > my p_pitch_maximum ? my p_pitch_maximum : f, 3);
+			Graphics_circle_mm (my d_graphics.get(), t,
+				f < my pitchTier.minPeriodic ? my pitchTier.minPeriodic : f > my p_pitch_maximum ? my p_pitch_maximum : f, 3.0);
 	}
 
 	if (last == first) {
 		/*
 		 * Draw a crosshair with time and frequency.
 		 */
-		RealPoint point = pitch -> point (first);
+		RealPoint point = pitch -> points.at [first];
 		double t = point -> number + dt, fWC = YLIN (point -> value) + df;
-		Graphics_line (my d_graphics, t, my p_pitch_minimum, t, my p_pitch_maximum - Graphics_dyMMtoWC (my d_graphics, 4.0));
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_TOP);
-		Graphics_text (my d_graphics, t, my p_pitch_maximum, Melder_fixed (t, 6));
-		Graphics_line (my d_graphics, my d_startWindow, fWC, my d_endWindow, fWC);
-		Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-		Graphics_text (my d_graphics, my d_startWindow, fWC, Melder_fixed (fWC, 5));
+		Graphics_line (my d_graphics.get(), t, my p_pitch_minimum, t, my p_pitch_maximum - Graphics_dyMMtoWC (my d_graphics.get(), 4.0));
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_TOP);
+		Graphics_text (my d_graphics.get(), t, my p_pitch_maximum, Melder_fixed (t, 6));
+		Graphics_line (my d_graphics.get(), my d_startWindow, fWC, my d_endWindow, fWC);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_text (my d_graphics.get(), my d_startWindow, fWC, Melder_fixed (fWC, 5));
 	}
 }
 
-static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shiftKeyPressed) {
+static bool clickPitch (ManipulationEditor me, double xWC, double yWC, bool shiftKeyPressed) {
 	Manipulation ana = (Manipulation) my data;
-	PitchTier pitch = ana -> pitch;
+	PitchTier pitch = ana -> pitch.get();
 	long inearestPoint, ifirstSelected, ilastSelected, i;
 	RealPoint nearestPoint;
 	double dt = 0, df = 0;
@@ -971,23 +928,23 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 
 	my pitchTier.cursor = my p_pitch_minimum + yWC * (my p_pitch_maximum - my p_pitch_minimum);
 	if (! pitch) {
-		Graphics_resetViewport (my d_graphics, my inset);
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_pitch_minimum, my p_pitch_maximum);
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_pitch_minimum, my p_pitch_maximum);
 	yWC = my pitchTier.cursor;
 
 	/*
 	 * Clicked on a pitch point?
 	 */
-	inearestPoint = AnyTier_timeToNearestIndex (pitch, xWC);
+	inearestPoint = AnyTier_timeToNearestIndex (pitch->asAnyTier(), xWC);
 	if (inearestPoint == 0) {
-		Graphics_resetViewport (my d_graphics, my inset);
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
-	nearestPoint = (RealPoint) pitch -> points -> item [inearestPoint];
-	if (Graphics_distanceWCtoMM (my d_graphics, xWC, yWC, nearestPoint -> number, YLIN (nearestPoint -> value)) > 1.5) {
-		Graphics_resetViewport (my d_graphics, my inset);
+	nearestPoint = pitch -> points.at [inearestPoint];
+	if (Graphics_distanceWCtoMM (my d_graphics.get(), xWC, yWC, nearestPoint -> number, YLIN (nearestPoint -> value)) > 1.5) {
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
 
@@ -997,8 +954,8 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 	draggingSelection = shiftKeyPressed &&
 		nearestPoint -> number > my d_startSelection && nearestPoint -> number < my d_endSelection;
 	if (draggingSelection) {
-		ifirstSelected = AnyTier_timeToHighIndex (pitch, my d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (pitch, my d_endSelection);
+		ifirstSelected = AnyTier_timeToHighIndex (pitch->asAnyTier(), my d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (pitch->asAnyTier(), my d_endSelection);
 		Editor_save (me, U"Drag pitch points");
 	} else {
 		ifirstSelected = ilastSelected = inearestPoint;
@@ -1013,14 +970,14 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 	  * Since some systems do double buffering,
 	  * the undrawing at the old position and redrawing at the new have to be bracketed by Graphics_mouseStillDown ().
 	  */
-	Graphics_xorOn (my d_graphics, Graphics_MAROON);
+	Graphics_xorOn (my d_graphics.get(), Graphics_MAROON);
 	drawWhileDragging (me, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 	dragHorizontal = my p_pitch_draggingStrategy != kManipulationEditor_draggingStrategy_VERTICAL &&
 		(! shiftKeyPressed || my p_pitch_draggingStrategy != kManipulationEditor_draggingStrategy_HYBRID);
 	dragVertical = my p_pitch_draggingStrategy != kManipulationEditor_draggingStrategy_HORIZONTAL;
-	while (Graphics_mouseStillDown (my d_graphics)) {
+	while (Graphics_mouseStillDown (my d_graphics.get())) {
 		double xWC_new, yWC_new;
-		Graphics_getMouseLocation (my d_graphics, & xWC_new, & yWC_new);
+		Graphics_getMouseLocation (my d_graphics.get(), & xWC_new, & yWC_new);
 		if (xWC_new != xWC || yWC_new != yWC) {
 			drawWhileDragging (me, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 			if (dragHorizontal) dt += xWC_new - xWC;
@@ -1029,7 +986,7 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 			drawWhileDragging (me, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 		}
 	}
-	Graphics_xorOff (my d_graphics);
+	Graphics_xorOff (my d_graphics.get());
 
 	/*
 	 * Dragged inside window?
@@ -1040,22 +997,21 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 	 * Points not dragged past neighbours?
 	 */
 	{
-		RealPoint *points = (RealPoint *) pitch -> points -> item;
-		double newTime = points [ifirstSelected] -> number + dt;
+		double newTime = pitch -> points.at [ifirstSelected] -> number + dt;
 		if (newTime < my tmin) return 1;   // outside domain
-		if (ifirstSelected > 1 && newTime <= points [ifirstSelected - 1] -> number)
+		if (ifirstSelected > 1 && newTime <= pitch -> points.at [ifirstSelected - 1] -> number)
 			return 1;   /* Past left neighbour. */
-		newTime = points [ilastSelected] -> number + dt;
+		newTime = pitch -> points.at [ilastSelected] -> number + dt;
 		if (newTime > my tmax) return 1;   // outside domain
-		if (ilastSelected < pitch -> points -> size && newTime >= points [ilastSelected + 1] -> number)
-			return 1;   // past right neighbour
+		if (ilastSelected < pitch -> points.size && newTime >= pitch -> points.at [ilastSelected + 1] -> number)
+			return FunctionEditor_UPDATE_NEEDED;   // past right neighbour
 	}
 
 	/*
 	 * Drop.
 	 */
 	for (i = ifirstSelected; i <= ilastSelected; i ++) {
-		RealPoint point = (RealPoint) pitch -> points -> item [i];
+		RealPoint point = pitch -> points.at [i];
 		point -> number += dt;
 		point -> value = YLININV (YLIN (point -> value) + df);
 		if (point -> value < 50.0) point -> value = 50.0;
@@ -1068,52 +1024,49 @@ static int clickPitch (ManipulationEditor me, double xWC, double yWC, bool shift
 
 	if (draggingSelection) my d_startSelection += dt, my d_endSelection += dt;
 	if (my d_startSelection == my d_endSelection) {
-		RealPoint point = (RealPoint) pitch -> points -> item [ifirstSelected];
+		RealPoint point = pitch -> points.at [ifirstSelected];
 		my d_startSelection = my d_endSelection = point -> number;
 		my pitchTier.cursor = YLIN (point -> value);
 	}
 
 	Editor_broadcastDataChanged (me);
-	return 1;   /* Update needed. */
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
-static void drawDurationWhileDragging (ManipulationEditor me, double xWC, double yWC, long first, long last, double dt, double df) {
+static void drawDurationWhileDragging (ManipulationEditor me, double /* xWC */, double /* yWC */, long first, long last, double dt, double df) {
 	Manipulation ana = (Manipulation) my data;
-	DurationTier duration = ana -> duration;
-	long i;
-	(void) xWC;
-	(void) yWC;
+	DurationTier duration = ana -> duration.get();
 
 	/*
 	 * Draw all selected duration points as magenta empty circles, if inside the window.
 	 */
-	for (i = first; i <= last; i ++) {
-		RealPoint point = (RealPoint) duration -> points -> item [i];
+	for (long i = first; i <= last; i ++) {
+		RealPoint point = duration -> points.at [i];
 		double t = point -> number + dt, dur = point -> value + df;
 		if (t >= my d_startWindow && t <= my d_endWindow)
-			Graphics_circle_mm (my d_graphics, t, dur < my p_duration_minimum ? my p_duration_minimum :
-				dur > my p_duration_maximum ? my p_duration_maximum : dur, 3);
+			Graphics_circle_mm (my d_graphics.get(), t, dur < my p_duration_minimum ? my p_duration_minimum :
+				dur > my p_duration_maximum ? my p_duration_maximum : dur, 3.0);
 	}
 
 	if (last == first) {
 		/*
 		 * Draw a crosshair with time and duration.
 		 */
-		RealPoint point = (RealPoint) duration -> points -> item [first];
+		RealPoint point = duration -> points.at [first];
 		double t = point -> number + dt, durWC = point -> value + df;
-		Graphics_line (my d_graphics, t, my p_duration_minimum, t, my p_duration_maximum - Graphics_dyMMtoWC (my d_graphics, 4.0));
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_TOP);
-		Graphics_text (my d_graphics, t, my p_duration_maximum, Melder_fixed (t, 6));
-		Graphics_line (my d_graphics, my d_startWindow, durWC, my d_endWindow, durWC);
-		Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-		Graphics_text (my d_graphics, my d_startWindow, durWC, Melder_fixed (durWC, 2));
+		Graphics_line (my d_graphics.get(), t, my p_duration_minimum, t, my p_duration_maximum - Graphics_dyMMtoWC (my d_graphics.get(), 4.0));
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_TOP);
+		Graphics_text (my d_graphics.get(), t, my p_duration_maximum, Melder_fixed (t, 6));
+		Graphics_line (my d_graphics.get(), my d_startWindow, durWC, my d_endWindow, durWC);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_text (my d_graphics.get(), my d_startWindow, durWC, Melder_fixed (durWC, 2));
 	}
 }
 
-static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shiftKeyPressed) {
+static bool clickDuration (ManipulationEditor me, double xWC, double yWC, int shiftKeyPressed) {
 	Manipulation ana = (Manipulation) my data;
-	DurationTier duration = ana -> duration;
-	long inearestPoint, ifirstSelected, ilastSelected, i;
+	DurationTier duration = ana -> duration.get();
+	long inearestPoint, ifirstSelected, ilastSelected;
 	RealPoint nearestPoint;
 	double dt = 0, df = 0;
 	int draggingSelection;
@@ -1129,22 +1082,22 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 	my duration.cursor = yWC;
 
 	if (! duration) {
-		Graphics_resetViewport (my d_graphics, my inset);
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
-	Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_duration_minimum, my p_duration_maximum);
+	Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_duration_minimum, my p_duration_maximum);
 
 	/*
 	 * Clicked on a duration point?
 	 */
-	inearestPoint = AnyTier_timeToNearestIndex (duration, xWC);
+	inearestPoint = AnyTier_timeToNearestIndex (duration->asAnyTier(), xWC);
 	if (inearestPoint == 0) {
-		Graphics_resetViewport (my d_graphics, my inset);
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
-	nearestPoint = (RealPoint) duration -> points -> item [inearestPoint];
-	if (Graphics_distanceWCtoMM (my d_graphics, xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
-		Graphics_resetViewport (my d_graphics, my inset);
+	nearestPoint = duration -> points.at [inearestPoint];
+	if (Graphics_distanceWCtoMM (my d_graphics.get(), xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
+		Graphics_resetViewport (my d_graphics.get(), my inset);
 		return my ManipulationEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
 
@@ -1154,8 +1107,8 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 	draggingSelection = shiftKeyPressed &&
 		nearestPoint -> number > my d_startSelection && nearestPoint -> number < my d_endSelection;
 	if (draggingSelection) {
-		ifirstSelected = AnyTier_timeToHighIndex (duration, my d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (duration, my d_endSelection);
+		ifirstSelected = AnyTier_timeToHighIndex (duration->asAnyTier(), my d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (duration->asAnyTier(), my d_endSelection);
 		Editor_save (me, U"Drag duration points");
 	} else {
 		ifirstSelected = ilastSelected = inearestPoint;
@@ -1165,11 +1118,11 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 	/*
 	 * Drag.
 	 */
-	Graphics_xorOn (my d_graphics, Graphics_MAROON);
+	Graphics_xorOn (my d_graphics.get(), Graphics_MAROON);
 	drawDurationWhileDragging (me, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
-	while (Graphics_mouseStillDown (my d_graphics)) {
+	while (Graphics_mouseStillDown (my d_graphics.get())) {
 		double xWC_new, yWC_new;
-		Graphics_getMouseLocation (my d_graphics, & xWC_new, & yWC_new);
+		Graphics_getMouseLocation (my d_graphics.get(), & xWC_new, & yWC_new);
 		if (xWC_new != xWC || yWC_new != yWC) {
 			drawDurationWhileDragging (me, xWC, yWC, ifirstSelected, ilastSelected, dt, df);
 			dt += xWC_new - xWC, xWC = xWC_new;
@@ -1177,7 +1130,7 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 			drawDurationWhileDragging (me, xWC_new, yWC_new, ifirstSelected, ilastSelected, dt, df);
 		}
 	}
-	Graphics_xorOff (my d_graphics);
+	Graphics_xorOff (my d_graphics.get());
 
 	/*
 	 * Dragged inside window?
@@ -1188,22 +1141,21 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 	 * Points not dragged past neighbours?
 	 */
 	{
-		RealPoint *points = (RealPoint *) duration -> points -> item;
-		double newTime = points [ifirstSelected] -> number + dt;
+		double newTime = duration -> points.at [ifirstSelected] -> number + dt;
 		if (newTime < my tmin) return 1;   // outside domain
-		if (ifirstSelected > 1 && newTime <= points [ifirstSelected - 1] -> number)
+		if (ifirstSelected > 1 && newTime <= duration -> points.at [ifirstSelected - 1] -> number)
 			return 1;   /* Past left neighbour. */
-		newTime = points [ilastSelected] -> number + dt;
+		newTime = duration -> points.at [ilastSelected] -> number + dt;
 		if (newTime > my tmax) return 1;   // outside domain
-		if (ilastSelected < duration -> points -> size && newTime >= points [ilastSelected + 1] -> number)
+		if (ilastSelected < duration -> points.size && newTime >= duration -> points.at [ilastSelected + 1] -> number)
 			return 1;   // past right neighbour
 	}
 
 	/*
 	 * Drop.
 	 */
-	for (i = ifirstSelected; i <= ilastSelected; i ++) {
-		RealPoint point = (RealPoint) duration -> points -> item [i];
+	for (long i = ifirstSelected; i <= ilastSelected; i ++) {
+		RealPoint point = duration -> points.at [i];
 		point -> number += dt;
 		point -> value += df;
 		if (point -> value < my p_duration_minimum) point -> value = my p_duration_minimum;
@@ -1216,16 +1168,16 @@ static int clickDuration (ManipulationEditor me, double xWC, double yWC, int shi
 
 	if (draggingSelection) my d_startSelection += dt, my d_endSelection += dt;
 	if (my d_startSelection == my d_endSelection) {
-		RealPoint point = (RealPoint) duration -> points -> item [ifirstSelected];
+		RealPoint point = duration -> points.at [ifirstSelected];
 		my d_startSelection = my d_endSelection = point -> number;
 		my duration.cursor = point -> value;
 	}
 
 	Editor_broadcastDataChanged (me);
-	return 1;   /* Update needed. */
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
-int structManipulationEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structManipulationEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	double ypitchmin, ypitchmax, ydurationmin, ydurationmax;
 	int hasPitchArea = getPitchArea (this, & ypitchmin, & ypitchmax);
 	int hasDurationArea = getDurationArea (this, & ydurationmin, & ydurationmax);
@@ -1234,10 +1186,10 @@ int structManipulationEditor :: v_click (double xWC, double yWC, bool shiftKeyPr
 	 * Dispatch click to clicked area.
 	 */
 	if (hasPitchArea && yWC > ypitchmin && yWC < ypitchmax) {   // clicked in pitch area?
-		inset = Graphics_insetViewport (our d_graphics, 0, 1, ypitchmin, ypitchmax);
+		inset = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, ypitchmin, ypitchmax);
 		return clickPitch (this, xWC, (yWC - ypitchmin) / (ypitchmax - ypitchmin), shiftKeyPressed);
 	} else if (hasDurationArea && yWC > ydurationmin && yWC < ydurationmax) {   // clicked in duration area?
-		inset = Graphics_insetViewport (our d_graphics, 0, 1, ydurationmin, ydurationmax);
+		inset = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, ydurationmin, ydurationmax);
 		return clickDuration (this, xWC, (yWC - ydurationmin) / (ydurationmax - ydurationmin), shiftKeyPressed);
 	}
 	/*
@@ -1250,18 +1202,18 @@ void structManipulationEditor :: v_play (double a_tmin, double a_tmax) {
 	Manipulation ana = (Manipulation) our data;
 	if (our shiftKeyPressed) {
 		if (ana -> sound)
-			Sound_playPart (ana -> sound, a_tmin, a_tmax, theFunctionEditor_playCallback, this);
+			Sound_playPart (ana -> sound.get(), a_tmin, a_tmax, theFunctionEditor_playCallback, this);
 	} else {
 		Manipulation_playPart (ana, a_tmin, a_tmax, our synthesisMethod);
 	}
 }
 
-ManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation ana) {
+autoManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation ana) {
 	try {
 		autoManipulationEditor me = Thing_new (ManipulationEditor);
-		FunctionEditor_init (me.peek(), title, ana);
+		FunctionEditor_init (me.get(), title, ana);
 
-		double maximumPitchValue = RealTier_getMaximumValue (ana -> pitch);
+		double maximumPitchValue = RealTier_getMaximumValue (ana -> pitch.get());
 		if (my p_pitch_units == kManipulationEditor_pitchUnits_HERTZ) {
 			my p_pitch_minimum = 25.0;
 			my pitchTier.minPeriodic = 50.0;
@@ -1278,13 +1230,13 @@ ManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation
 		if (my p_pitch_maximum == NUMundefined || my p_pitch_maximum < my pref_pitch_maximum ())
 			my p_pitch_maximum = my pref_pitch_maximum ();
 
-		double minimumDurationValue = ana -> duration ? RealTier_getMinimumValue (ana -> duration) : NUMundefined;
+		double minimumDurationValue = ana -> duration ? RealTier_getMinimumValue (ana -> duration.get()) : NUMundefined;
 		my p_duration_minimum = NUMdefined (minimumDurationValue) ? minimumDurationValue : 1.0;
 		if (my pref_duration_minimum () > 1)
 			my pref_duration_minimum () = Melder_atof (my default_duration_minimum ());
 		if (my p_duration_minimum > my pref_duration_minimum ())
 			my p_duration_minimum = my pref_duration_minimum ();
-		double maximumDurationValue = ana -> duration ? RealTier_getMaximumValue (ana -> duration) : NUMundefined;
+		double maximumDurationValue = ana -> duration ? RealTier_getMaximumValue (ana -> duration.get()) : NUMundefined;
 		my p_duration_maximum = NUMdefined (maximumDurationValue) ? maximumDurationValue : 1.0;
 		if (my pref_duration_maximum () < 1)
 			my pref_duration_maximum () = Melder_atof (my default_duration_maximum ());
@@ -1298,10 +1250,10 @@ ManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation
 
 		my synthesisMethod = prefs_synthesisMethod;
 		if (ana -> sound)
-			Matrix_getWindowExtrema (ana -> sound, 0, 0, 0, 0, & my soundmin, & my soundmax);
+			Matrix_getWindowExtrema (ana -> sound.get(), 0, 0, 0, 0, & my soundmin, & my soundmax);
 		if (my soundmin == my soundmax) my soundmin = -1.0, my soundmax = +1.0;
-		updateMenus (me.peek());
-		return me.transfer();
+		updateMenus (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Manipulation window not created.");
 	}
diff --git a/fon/ManipulationEditor.h b/fon/ManipulationEditor.h
index 2d8159e..eae765f 100644
--- a/fon/ManipulationEditor.h
+++ b/fon/ManipulationEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -25,9 +24,9 @@
 #include "ManipulationEditor_enums.h"
 
 Thing_define (ManipulationEditor, FunctionEditor) {
-	PointProcess previousPulses;
-	PitchTier previousPitch;
-	DurationTier previousDuration;
+	autoPointProcess previousPulses;
+	autoPitchTier previousPitch;
+	autoDurationTier previousDuration;
 	double soundmin, soundmax;
 	int synthesisMethod;
 	GuiMenuItem synthPulsesButton, synthPulsesHumButton;
@@ -40,8 +39,6 @@ Thing_define (ManipulationEditor, FunctionEditor) {
 	struct { double cursor;  } duration;
 	Graphics_Viewport inset;
 
-	void v_destroy ()
-		override;
 	void v_createMenus ()
 		override;
 	void v_createHelpMenuItems (EditorMenu menu)
@@ -52,7 +49,7 @@ Thing_define (ManipulationEditor, FunctionEditor) {
 		override;
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -60,7 +57,7 @@ Thing_define (ManipulationEditor, FunctionEditor) {
 	#include "ManipulationEditor_prefs.h"
 };
 
-ManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation ana);
+autoManipulationEditor ManipulationEditor_create (const char32 *title, Manipulation ana);
 
 /* End of file ManipulationEditor.h */
 #endif
diff --git a/fon/ManipulationEditor_enums.h b/fon/ManipulationEditor_enums.h
index 737be41..414b086 100644
--- a/fon/ManipulationEditor_enums.h
+++ b/fon/ManipulationEditor_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kManipulationEditor_draggingStrategy, 1)
diff --git a/fon/ManipulationEditor_prefs.h b/fon/ManipulationEditor_prefs.h
index f9a7a8a..4422149 100644
--- a/fon/ManipulationEditor_prefs.h
+++ b/fon/ManipulationEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (ManipulationEditor)
diff --git a/fon/Manipulation_def.h b/fon/Manipulation_def.h
index 4b2e835..a01f716 100644
--- a/fon/Manipulation_def.h
+++ b/fon/Manipulation_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2008,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -23,22 +22,22 @@ oo_DEFINE_CLASS (Manipulation, Function)
 
 	#if oo_READING
 		if (formatVersion >= 5 || (Melder_debug == 25 && formatVersion == 4)) {
-			oo_OBJECT (Sound, 2, sound)
+			oo_AUTO_OBJECT (Sound, 2, sound)
 		} else {
-			oo_OBJECT (Sound, 0, sound)
+			oo_AUTO_OBJECT (Sound, 0, sound)
 		}
 	#else
-		oo_OBJECT (Sound, 0, sound)
+		oo_AUTO_OBJECT (Sound, 0, sound)
 	#endif
-	oo_OBJECT (PointProcess, 0, pulses)
-	oo_OBJECT (PitchTier, 0, pitch)
+	oo_AUTO_OBJECT (PointProcess, 0, pulses)
+	oo_AUTO_OBJECT (PitchTier, 0, pitch)
 
 	oo_FROM (1)
-		oo_OBJECT (IntensityTier, 0, dummyIntensity)
+		oo_AUTO_OBJECT (IntensityTier, 0, dummyIntensity)
 	oo_ENDFROM
 
 	oo_FROM (2)
-		oo_OBJECT (DurationTier, 0, duration)
+		oo_AUTO_OBJECT (DurationTier, 0, duration)
 	oo_ENDFROM
 
 	oo_FROM (3)
@@ -47,25 +46,25 @@ oo_DEFINE_CLASS (Manipulation, Function)
 		 * but allow it to be read (a legacy of writing but not reading the version 3 stuff).
 		 */
 		#if oo_WRITING
-			{ Image save = dummySpectrogram; dummySpectrogram = NULL;
+			{ autoImage save = dummySpectrogram.move();
 		#endif
-		oo_OBJECT (Image, 0, dummySpectrogram)
+		oo_AUTO_OBJECT (Image, 0, dummySpectrogram)
 		#if oo_WRITING
-			dummySpectrogram = save; }
+			dummySpectrogram = save.move(); }
 		#endif
-		oo_OBJECT (FormantTier, 0, dummyFormantTier)
-		oo_OBJECT (Data, 0, dummy1)
-		oo_OBJECT (Data, 0, dummy2)
-		oo_OBJECT (Data, 0, dummy3)
+		oo_AUTO_OBJECT (FormantTier, 0, dummyFormantTier)
+		oo_AUTO_OBJECT (Daata, 0, dummy1)
+		oo_AUTO_OBJECT (Daata, 0, dummy2)
+		oo_AUTO_OBJECT (Daata, 0, dummy3)
 	oo_ENDFROM
 
 	oo_FROM (4)
 		oo_DOUBLE (dummy10)
-		oo_OBJECT (Pitch, 0, dummyPitchAnalysis)
+		oo_AUTO_OBJECT (Pitch, 0, dummyPitchAnalysis)
 		oo_DOUBLE (dummy11)
 		oo_DOUBLE (dummy12)
-		oo_OBJECT (Intensity, 0, dummyIntensityAnalysis)
-		oo_OBJECT (Formant, 1, dummyFormantAnalysis)
+		oo_AUTO_OBJECT (Intensity, 0, dummyIntensityAnalysis)
+		oo_AUTO_OBJECT (Formant, 1, dummyFormantAnalysis)
 		oo_INT (dummy4)
 		oo_DOUBLE (dummy5)
 		oo_DOUBLE (dummy6)
@@ -75,7 +74,7 @@ oo_DEFINE_CLASS (Manipulation, Function)
 	oo_ENDFROM
 
 	#if !oo_READING && !oo_WRITING
-		oo_OBJECT (LPC, 0, lpc)
+		oo_AUTO_OBJECT (LPC, 0, lpc)
 	#endif
 
 	#if oo_DECLARING
@@ -90,4 +89,5 @@ oo_DEFINE_CLASS (Manipulation, Function)
 oo_END_CLASS (Manipulation)
 #undef ooSTRUCT
 
+
 /* End of file Manipulation_def.h */
diff --git a/fon/Matrix.cpp b/fon/Matrix.cpp
index 2c3d95b..5476c6a 100644
--- a/fon/Matrix.cpp
+++ b/fon/Matrix.cpp
@@ -1,20 +1,19 @@
 /* Matrix.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
@@ -42,7 +41,7 @@
 Thing_implement (Matrix, SampledXY, 2);
 
 void structMatrix :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	double minimum = 0.0, maximum = 0.0;
 	Matrix_getWindowExtrema (this, 1, our nx, 1, our ny, & minimum, & maximum);
 	MelderInfo_writeLine (U"xmin: ", our xmin);
@@ -125,35 +124,35 @@ void Matrix_init
 	my z = NUMmatrix <double> (1, my ny, 1, my nx);
 }
 
-Matrix Matrix_create
+autoMatrix Matrix_create
 	(double xmin, double xmax, long nx, double dx, double x1,
 	 double ymin, double ymax, long ny, double dy, double y1)
 {
 	try {
 		autoMatrix me = Thing_new (Matrix);
-		Matrix_init (me.peek(), xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
-		return me.transfer();
+		Matrix_init (me.get(), xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix object not created.");
 	}
 }
 
-Matrix Matrix_createSimple (long numberOfRows, long numberOfColumns) {
+autoMatrix Matrix_createSimple (long numberOfRows, long numberOfColumns) {
 	try {
 		autoMatrix me = Thing_new (Matrix);
-		Matrix_init (me.peek(), 0.5, numberOfColumns + 0.5, numberOfColumns, 1, 1,
+		Matrix_init (me.get(), 0.5, numberOfColumns + 0.5, numberOfColumns, 1, 1,
 			0.5, numberOfRows + 0.5, numberOfRows, 1, 1);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix object not created.");
 	}
 }
 
-double Matrix_columnToX (Matrix me, double column) { return my x1 + (column - 1) * my dx; }
+double Matrix_columnToX (Matrix me, double column) { return my x1 + (column - 1.0) * my dx; }   // FIXME inline and use Sampled
 
-double Matrix_rowToY (Matrix me, double row) { return my y1 + (row - 1) * my dy; }
+double Matrix_rowToY (Matrix me, double row) { return my y1 + (row - 1.0) * my dy; }
 
-double Matrix_xToColumn (Matrix me, double x) { return (x - my x1) / my dx + 1; }
+double Matrix_xToColumn (Matrix me, double x) { return (x - my x1) / my dx + 1.0; }
 
 long Matrix_xToLowColumn (Matrix me, double x) { return (long) floor (Matrix_xToColumn (me, x)); }
 
@@ -161,7 +160,7 @@ long Matrix_xToHighColumn (Matrix me, double x) { return (long) ceil (Matrix_xTo
 
 long Matrix_xToNearestColumn (Matrix me, double x) { return (long) floor (Matrix_xToColumn (me, x) + 0.5); }
 
-double Matrix_yToRow (Matrix me, double y) { return (y - my y1) / my dy + 1; }
+double Matrix_yToRow (Matrix me, double y) { return (y - my y1) / my dy + 1.0; }
 
 long Matrix_yToLowRow (Matrix me, double y) { return (long) floor (Matrix_yToRow (me, y)); }
 
@@ -357,7 +356,7 @@ void Matrix_paintContours (Matrix me, Graphics g, double xmin, double xmax, doub
 }
 
 static void cellArrayOrImage (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax,
-	double minimum, double maximum, int interpolate)
+	double minimum, double maximum, bool interpolate)
 {
 	if (xmax <= xmin) { xmin = my xmin; xmax = my xmax; }
 	if (ymax <= ymin) { ymin = my ymin; ymax = my ymax; }
@@ -389,13 +388,13 @@ static void cellArrayOrImage (Matrix me, Graphics g, double xmin, double xmax, d
 void Matrix_paintImage (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax,
 	double minimum, double maximum)
 {
-	cellArrayOrImage (me, g, xmin, xmax, ymin, ymax, minimum, maximum, TRUE);
+	cellArrayOrImage (me, g, xmin, xmax, ymin, ymax, minimum, maximum, true);
 }
 
 void Matrix_paintCells (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax,
 	double minimum, double maximum)
 {
-	cellArrayOrImage (me, g, xmin, xmax, ymin, ymax, minimum, maximum, FALSE);
+	cellArrayOrImage (me, g, xmin, xmax, ymin, ymax, minimum, maximum, false);
 }
 
 void Matrix_paintSurface (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax,
@@ -410,7 +409,7 @@ void Matrix_paintSurface (Matrix me, Graphics g, double xmin, double xmax, doubl
 		(void) Matrix_getWindowExtrema (me, ixmin, ixmax, iymin, iymax, & minimum, & maximum);
 	if (maximum <= minimum) { minimum -= 1.0; maximum += 1.0; }
 	Graphics_setInner (g);
-	Graphics_setWindow (g, -1, 1, minimum, maximum);
+	Graphics_setWindow (g, -1.0, 1.0, minimum, maximum);
 	Graphics_surface (g, my z,
 		ixmin, ixmax, Matrix_columnToX (me, ixmin), Matrix_columnToX (me, ixmax),
 		iymin, iymax, Matrix_rowToY (me, iymin), Matrix_rowToY (me, iymax),
@@ -422,18 +421,18 @@ void Matrix_movie (Matrix me, Graphics g) {
 	autoNUMvector <double> column (1, my ny);
 	double minimum = 0.0, maximum = 1.0;
 	Matrix_getWindowExtrema (me, 1, my nx, 1, my ny, & minimum, & maximum);
-	Graphics_setViewport (g, 0, 1, 0, 1);
-	Graphics_setWindow (g, my ymin, my ymax, minimum, maximum);
 	for (long icol = 1; icol <= my nx; icol ++) {
-		for (long irow = 1; irow <= my ny; irow ++)
+		for (long irow = 1; irow <= my ny; irow ++) {
 			column [irow] = my z [irow] [icol];
-		Graphics_clearWs (g);
+		}
+		Graphics_beginMovieFrame (g, & Graphics_WHITE);
+		Graphics_setWindow (g, my ymin, my ymax, minimum, maximum);
 		Graphics_function (g, column.peek(), 1, my ny, my ymin, my ymax);
-		Graphics_flushWs (g);
+		Graphics_endMovieFrame (g, 0.03);
 	}
 }
 
-Matrix Matrix_readAP (MelderFile file) {
+autoMatrix Matrix_readAP (MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 		int16_t header [256];
@@ -441,8 +440,8 @@ Matrix Matrix_readAP (MelderFile file) {
 			header [i] = bingeti2LE (f);
 		double samplingFrequency = header [100];   // converting up (from 16 to 54 bytes)
 		Melder_casual (U"Sampling frequency ", samplingFrequency);
-		autoMatrix me = Matrix_create (0, header [34], header [34] /* Number of frames. */, 1, 0.5,
-			0, header [35], header [35] /* Number of words per frame. */, 1, 0.5);
+		autoMatrix me = Matrix_create (0.0, (double) header [34], header [34] /* Number of frames. */, 1.0, 0.5,
+			0.0, (double) header [35], header [35] /* Number of words per frame. */, 1.0, 0.5);
 			/*Mat := MATRIX_create (Buffer.I2 [36], (* Number of words per frame. *)
 							   Buffer.I2 [35], (* Number of frames. *)
 							   1.0,
@@ -462,16 +461,16 @@ Matrix Matrix_readAP (MelderFile file) {
 				my z [1] [i] = - samplingFrequency / my z [1] [i];
 
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix object not read from AP file ", file);
 	}
 }
 
-Matrix Matrix_appendRows (Matrix me, Matrix thee, ClassInfo klas) {
+autoMatrix Matrix_appendRows (Matrix me, Matrix thee, ClassInfo klas) {
 	try {
-		autoMatrix him = static_cast <Matrix> (Thing_newFromClass (klas));
-		Matrix_init (him.peek(), my xmin < thy xmin ? my xmin : thy xmin,
+		autoMatrix him = Thing_newFromClass (klas).static_cast_move<structMatrix>();
+		Matrix_init (him.get(), my xmin < thy xmin ? my xmin : thy xmin,
 			my xmax > thy xmax ? my xmax : thy xmax,
 			my nx > thy nx ? my nx : thy nx, my dx, my x1 < thy x1 ? my x1 : thy x1,
 			my ymin, my ymax + (thy ymax - thy ymin), my ny + thy ny, my dy, my y1);
@@ -481,13 +480,13 @@ Matrix Matrix_appendRows (Matrix me, Matrix thee, ClassInfo klas) {
 		for (long irow = 1; irow <= thy ny; irow ++)
 			for (long icol = 1; icol <= thy nx; icol ++)
 				his z [irow + my ny] [icol] = thy z [irow] [icol];
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": rows not appended.");
 	}
 }
 
-Matrix Matrix_readFromRawTextFile (MelderFile file) {   // BUG: not Unicode-compatible
+autoMatrix Matrix_readFromRawTextFile (MelderFile file) {   // BUG: not Unicode-compatible
 	try {
 		autofile f = Melder_fopen (file, "rb");
 
@@ -540,36 +539,34 @@ Matrix Matrix_readFromRawTextFile (MelderFile file) {   // BUG: not Unicode-comp
 				fscanf (f, "%lf", & my z [irow] [icol]);
 
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Matrix object not read from raw text file ", file, U".");
 	}
 }
 
-void Matrix_eigen (Matrix me, Matrix *out_eigenvectors, Matrix *out_eigenvalues) {
-	*out_eigenvectors = NULL;
-	*out_eigenvalues = NULL;
+void Matrix_eigen (Matrix me, autoMatrix *out_eigenvectors, autoMatrix *out_eigenvalues) {
 	try {
 		if (my nx != my ny)
 			Melder_throw (U"(Matrix not square.");
 
 		autoEigen eigen = Thing_new (Eigen);
-		Eigen_initFromSymmetricMatrix (eigen.peek(), my z, my nx);
+		Eigen_initFromSymmetricMatrix (eigen.get(), my z, my nx);
 		autoMatrix eigenvectors = Data_copy (me);
-		autoMatrix eigenvalues = Matrix_create (1, 1, 1, 1, 1, my ymin, my ymax, my ny, my dy, my y1);
+		autoMatrix eigenvalues = Matrix_create (1.0, 1.0, 1, 1.0, 1.0, my ymin, my ymax, my ny, my dy, my y1);
 		for (long i = 1; i <= my nx; i ++) {
 			eigenvalues -> z [i] [1] = eigen -> eigenvalues [i];
 			for (long j = 1; j <= my nx; j ++)
 				eigenvectors -> z [i] [j] = eigen -> eigenvectors [j] [i];
 		}
-		*out_eigenvectors = eigenvectors.transfer();
-		*out_eigenvalues = eigenvalues.transfer();
+		*out_eigenvectors = eigenvectors.move();
+		*out_eigenvalues = eigenvalues.move();
 	} catch (MelderError) {
 		Melder_throw (me, U": eigenstructure not computed.");
 	}
 }
 
-Matrix Matrix_power (Matrix me, long power) {
+autoMatrix Matrix_power (Matrix me, long power) {
 	try {
 		if (my nx != my ny)
 			Melder_throw (U"Matrix not square.");
@@ -586,7 +583,7 @@ Matrix Matrix_power (Matrix me, long power) {
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": power not computed.");
 	}
@@ -629,8 +626,8 @@ void Matrix_writeToHeaderlessSpreadsheetFile (Matrix me, MelderFile file) {
 void Matrix_formula (Matrix me, const char32 *expression, Interpreter interpreter, Matrix target) {
 	try {
 		struct Formula_Result result;
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (target == NULL) target = me;
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! target) target = me;
 		for (long irow = 1; irow <= my ny; irow ++) {
 			for (long icol = 1; icol <= my nx; icol ++) {
 				Formula_run (irow, icol, & result);
@@ -652,8 +649,8 @@ void Matrix_formula_part (Matrix me, double xmin, double xmax, double ymin, doub
 		(void) Matrix_getWindowSamplesX (me, xmin, xmax, & ixmin, & ixmax);
 		(void) Matrix_getWindowSamplesY (me, ymin, ymax, & iymin, & iymax);
 		struct Formula_Result result;
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (target == NULL) target = me;
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! target) target = me;
 		for (long irow = iymin; irow <= iymax; irow ++) {
 			for (long icol = ixmin; icol <= ixmax; icol ++) {
 				Formula_run (irow, icol, & result);
@@ -684,43 +681,43 @@ void Matrix_scaleAbsoluteExtremum (Matrix me, double scale) {
 	}
 }
 
-Matrix TableOfReal_to_Matrix (TableOfReal me) {
+autoMatrix TableOfReal_to_Matrix (TableOfReal me) {
 	try {
 		autoMatrix thee = Matrix_createSimple (my numberOfRows, my numberOfColumns);
 		for (long i = 1; i <= my numberOfRows; i ++)
 			for (long j = 1; j <= my numberOfColumns; j ++)
 				thy z [i] [j] = my data [i] [j];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-TableOfReal Matrix_to_TableOfReal (Matrix me) {
+autoTableOfReal Matrix_to_TableOfReal (Matrix me) {
 	try {
 		autoTableOfReal thee = TableOfReal_create (my ny, my nx);
 		for (long i = 1; i <= my ny; i ++)
 			for (long j = 1; j <= my nx; j ++)
 				thy data [i] [j] = my z [i] [j];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
 }
 
-Matrix Table_to_Matrix (Table me) {
+autoMatrix Table_to_Matrix (Table me) {
 	try {
-		autoMatrix thee = Matrix_createSimple (my rows -> size, my numberOfColumns);
+		autoMatrix thee = Matrix_createSimple (my rows.size, my numberOfColumns);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			Table_numericize_Assert (me, icol);
 		}
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 				thy z [irow] [icol] = row -> cells [icol]. number;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/fon/Matrix.h b/fon/Matrix.h
index 9533872..c0cb55f 100644
--- a/fon/Matrix.h
+++ b/fon/Matrix.h
@@ -2,46 +2,56 @@
 #define _Matrix_h_
 /* Matrix.h
  *
- * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SampledXY.h"
 #include "Graphics.h"
 #include "../stat/Table.h"
 #include "../stat/TableOfReal.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "Matrix_def.h"
-oo_CLASS_CREATE (Matrix, SampledXY);
+
+#if 1
+template <typename T, typename... Args>
+	_Thing_auto <T> Thing_create (Args ... args) {
+		_Thing_auto <T> me (new T);   // this `new` has to set classInfo
+		my T::init (args...);
+		return me;
+	}
+#endif
 
 void Matrix_init
 	(Matrix me, double xmin, double xmax, long nx, double dx, double x1,
 	            double ymin, double ymax, long ny, double dy, double y1);
 
-Matrix Matrix_create
+autoMatrix Matrix_create
 	(double xmin, double xmax, long nx, double dx, double x1,
 	 double ymin, double ymax, long ny, double dy, double y1);
 /*
 	Function:
-		return a new empty Matrix, or NULL if out of memory.
+		return a new empty Matrix.
 	Preconditions:
-		xmin <= xmax;   ymin <= ymax;
-		nx >= 1;  ny >= 1;
-		dx > 0.0;   dy > 0.0;
+		xmin <= xmax;
+		ymin <= ymax;
+		nx >= 1;
+		ny >= 1;
+		dx > 0.0;
+		dy > 0.0;
 	Postconditions:
 		result -> xmin == xmin;
 		result -> xmax == xmax;
@@ -56,12 +66,13 @@ Matrix Matrix_create
 		result -> z [1..ny] [1..nx] == 0.0;
 */
 
-Matrix Matrix_createSimple (long numberOfRows, long numberOfColumns);
+autoMatrix Matrix_createSimple (long numberOfRows, long numberOfColumns);
 /*
 	Function:
-		return a new empty Matrix, or NULL if out of memory.
+		return a new empty Matrix.
 	Preconditions:
-		numberOfRows >= 1;  numberOfColumns >= 1;
+		numberOfRows >= 1;
+		numberOfColumns >= 1;
 	Postconditions:
 		result -> xmin == 0.5;
 		result -> xmax == numberOfColumns + 0.5;
@@ -69,18 +80,18 @@ Matrix Matrix_createSimple (long numberOfRows, long numberOfColumns);
 		result -> ymax == numberOfRows + 0.5;
 		result -> nx == numberOfColumns;
 		result -> ny == numberOfRows;
-		result -> dx == 1;
-		result -> dy == 1;
-		result -> x1 == 1;
-		result -> y1 == 1;
+		result -> dx == 1.0;
+		result -> dy == 1.0;
+		result -> x1 == 1.0;
+		result -> y1 == 1.0;
 		result -> z [1..ny] [1..nx] == 0.0;
 */
 
-/* Implemented methods
+/* An implemented method
 
-	int Matrix::writeText (I, FILE *f);
-		writes a Matrix as text to the stream f.
-		A sample of the format follows (see example 3 above):
+	void structMatrix :: v_writeText (MelderFile file);
+		writes a Matrix as text to `file`.
+		A sample of the format follows:
 			0 5000 1 2   ! xmin xmax ymin ymax
 			8193 2   ! nx ny
 			0.61035156 1   ! dx dy
@@ -95,27 +106,6 @@ Matrix Matrix_createSimple (long numberOfRows, long numberOfColumns);
 			The data lines (all lines after the fourth) contain: my z [iy, ix], x, y.
 			things written after the "!" are mere comments:
 			you cannot use them to change the meaning or order of the data.
-
-	int Matrix::readText (I, FILE *f)
-		reads a Matrix as text from the stream f.
-		The requested format is the same as the format produced by
-		Matrix::writeText, though any comments may be left out.
-		Failures:
-			Wrong text input: this line should start with xmin, xmax, ymin, and ymax.
-			Wrong text input: this line should start with nx >= 1 and ny >= 1.
-			Wrong text input: this line should start with dx > 0.0 and dy > 0.0.
-			Wrong text input: this line should start with x1 and y1.
-			Out of text input: there should be 'nx * ny' lines with z values.
-
-	int Matrix::writeBinary (I, FILE *f)
-		writes a Matrix to the stream f, in IEEE floating-point format.
-
-	int Matrix::readBinary (I, FILE *f)
-		reads a Matrix from the stream f, in IEEE floating-point format.
-		Failures:
-			Wrong binary input.
-			Not enough memory to read this Matrix.
-			Out of input.
 */
 
 long Matrix_getWindowSamplesX (Matrix me, double xmin, double xmax, long *ixmin, long *ixmax);
@@ -141,25 +131,25 @@ double Matrix_getValueAtXY (Matrix me, double x, double y);
 double Matrix_getSum (Matrix me);
 double Matrix_getNorm (Matrix me);
 
-double Matrix_columnToX (Matrix me, double column);   /* Return my x1 + (column - 1) * my dx.	 */
+double Matrix_columnToX (Matrix me, double column);   // return my x1 + (column - 1) * my dx
 
-double Matrix_rowToY (Matrix me, double row);   /* Return my y1 + (row - 1) * my dy. */
+double Matrix_rowToY (Matrix me, double row);   // return my y1 + (row - 1) * my dy
 
-double Matrix_xToColumn (Matrix me, double x);   /* Return (x - xmin) / my dx + 1. */
+double Matrix_xToColumn (Matrix me, double x);   // return (x - xmin) / my dx + 1
 
-long Matrix_xToLowColumn (Matrix me, double x);   /* Return floor (Matrix_xToColumn (me, x)). */
+long Matrix_xToLowColumn (Matrix me, double x);   // return floor (Matrix_xToColumn (me, x))
 
-long Matrix_xToHighColumn (Matrix me, double x);   /* Return ceil (Matrix_xToColumn (me, x)). */
+long Matrix_xToHighColumn (Matrix me, double x);   // return ceil (Matrix_xToColumn (me, x))
 
-long Matrix_xToNearestColumn (Matrix me, double x);   /* Return floor (Matrix_xToColumn (me, x) + 0.5). */
+long Matrix_xToNearestColumn (Matrix me, double x);   // return floor (Matrix_xToColumn (me, x) + 0.5)
 
-double Matrix_yToRow (Matrix me, double y);   /* Return (y - ymin) / my dy + 1. */
+double Matrix_yToRow (Matrix me, double y);   // return (y - ymin) / my dy + 1
 
-long Matrix_yToLowRow (Matrix me, double y);   /* Return floor (Matrix_yToRow (me, y)). */
+long Matrix_yToLowRow (Matrix me, double y);   // return floor (Matrix_yToRow (me, y))
 
-long Matrix_yToHighRow (Matrix me, double x);   /* Return ceil (Matrix_yToRow (me, y)). */
+long Matrix_yToHighRow (Matrix me, double x);   // return ceil (Matrix_yToRow (me, y))
 
-long Matrix_yToNearestRow (Matrix me, double y);   /* Return floor (Matrix_yToRow (me, y) + 0.5). */
+long Matrix_yToNearestRow (Matrix me, double y);   // return floor (Matrix_yToRow (me, y) + 0.5)
 
 long Matrix_getWindowSamplesY (Matrix me, double ymin, double ymax, long *iymin, long *iymax);
 
@@ -187,7 +177,7 @@ void Matrix_formula (Matrix me, const char32 *expression, Interpreter interprete
 				ENDFOR
 			ENDFOR
 		"expression" is the text to be compiled and interpreted.
-		If "target" is NULL, the result will go to "me"; otherwise, to "target".
+		If "target" is null, the result will go to "me"; otherwise, to "target".
 	Return value:
 		0 in case of failure, otherwise 1.
 */
@@ -248,21 +238,21 @@ void Matrix_paintSurface (Matrix me, Graphics g, double xmin, double xmax, doubl
 
 void Matrix_movie (Matrix me, Graphics g);
 
-Matrix Matrix_readFromRawTextFile (MelderFile file);
-Matrix Matrix_readAP (MelderFile file);
-Matrix Matrix_appendRows (Matrix me, Matrix thee, ClassInfo klas);
+autoMatrix Matrix_readFromRawTextFile (MelderFile file);
+autoMatrix Matrix_readAP (MelderFile file);
+autoMatrix Matrix_appendRows (Matrix me, Matrix thee, ClassInfo klas);
 
-void Matrix_eigen (Matrix me, Matrix *eigenvectors, Matrix *eigenvalues);
-Matrix Matrix_power (Matrix me, long power);
+void Matrix_eigen (Matrix me, autoMatrix *eigenvectors, autoMatrix *eigenvalues);
+autoMatrix Matrix_power (Matrix me, long power);
 
 void Matrix_scaleAbsoluteExtremum (Matrix me, double scale);
 
-Matrix Table_to_Matrix (Table me);
+autoMatrix Table_to_Matrix (Table me);
 void Matrix_writeToMatrixTextFile (Matrix me, MelderFile file);
 void Matrix_writeToHeaderlessSpreadsheetFile (Matrix me, MelderFile file);
 
-Matrix TableOfReal_to_Matrix (TableOfReal me);
-TableOfReal Matrix_to_TableOfReal (Matrix me);
+autoMatrix TableOfReal_to_Matrix (TableOfReal me);
+autoTableOfReal Matrix_to_TableOfReal (Matrix me);
 
 /* End of file Matrix.h */
 #endif
diff --git a/fon/Matrix_and_Pitch.cpp b/fon/Matrix_and_Pitch.cpp
index 670b937..4736253 100644
--- a/fon/Matrix_and_Pitch.cpp
+++ b/fon/Matrix_and_Pitch.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -27,20 +26,20 @@
 
 #include "Matrix_and_Pitch.h"
 
-Matrix Pitch_to_Matrix (Pitch me) {
+autoMatrix Pitch_to_Matrix (Pitch me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1, 1, 1, 1, 1);
 		for (long i = 1; i <= my nx; i ++) {
 			double value = my frame [i]. candidate [1]. frequency;
 			thy z [1] [i] = value > 0.0 && value < my ceiling ? my frame [i]. candidate [1]. frequency : 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Pitch Matrix_to_Pitch (Matrix me) {
+autoPitch Matrix_to_Pitch (Matrix me) {
 	try {
 		autoPitch thee = Pitch_create (my xmin, my xmax, my nx, my dx, my x1, 5000, 2);
 		for (long i = 1; i <= my nx; i ++) {
@@ -58,7 +57,7 @@ Pitch Matrix_to_Pitch (Matrix me) {
 				frame->candidate[2].strength = 0.4;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Pitch.");
 	}
@@ -72,7 +71,7 @@ void Pitch_formula (Pitch me, const char32 *formula, Interpreter interpreter) {
 			for (long icand = 1; icand <= frame -> nCandidates; icand ++)
 				m -> z [icand] [iframe] = frame -> candidate [icand]. frequency;
 		}
-		Matrix_formula (m.peek(), formula, interpreter, NULL);
+		Matrix_formula (m.get(), formula, interpreter, nullptr);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Pitch_Frame frame = & my frame [iframe];
 			for (long icand = 1; icand <= frame -> nCandidates; icand ++)
diff --git a/fon/Matrix_and_Pitch.h b/fon/Matrix_and_Pitch.h
index 456190e..2518559 100644
--- a/fon/Matrix_and_Pitch.h
+++ b/fon/Matrix_and_Pitch.h
@@ -1,27 +1,26 @@
 /* Matrix_and_Pitch.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 #include "Pitch.h"
 
-Matrix Pitch_to_Matrix (Pitch me);
+autoMatrix Pitch_to_Matrix (Pitch me);
 
-Pitch Matrix_to_Pitch (Matrix me);
+autoPitch Matrix_to_Pitch (Matrix me);
 
 /* End of file Matrix_and_Pitch.h */
diff --git a/fon/Matrix_and_PointProcess.cpp b/fon/Matrix_and_PointProcess.cpp
index eced2aa..993df9d 100644
--- a/fon/Matrix_and_PointProcess.cpp
+++ b/fon/Matrix_and_PointProcess.cpp
@@ -1,50 +1,43 @@
 /* Matrix_and_PointProcess.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1997/03/29
- * pb 2002/07/16 GPL
- * pb 2011/06/04 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix_and_PointProcess.h"
 
-Matrix PointProcess_to_Matrix (PointProcess me) {
+autoMatrix PointProcess_to_Matrix (PointProcess me) {
 	try {
 		if (my nt == 0)
 			Melder_throw (U"No times in PointProcess.");
-		autoMatrix thee = Matrix_create (1, my nt, my nt, 1, 1, 1, 1, 1, 1, 1);
+		autoMatrix thee = Matrix_create (1.0, my nt, my nt, 1.0, 1.0, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long i = 1; i <= my nt; i ++)
 			thy z [1] [i] = my t [i];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-PointProcess Matrix_to_PointProcess (Matrix me) {
+autoPointProcess Matrix_to_PointProcess (Matrix me) {
 	try {
 		autoPointProcess thee = PointProcess_create (my z [1] [1], my z [1] [my nx], my nx);
 		for (long i = 1; i <= my nx; i ++) {
-			PointProcess_addPoint (thee.peek(), my z [1] [i]);
+			PointProcess_addPoint (thee.get(), my z [1] [i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PointProcess.");
 	}
diff --git a/fon/Matrix_and_PointProcess.h b/fon/Matrix_and_PointProcess.h
index f7f12b6..adf3af0 100644
--- a/fon/Matrix_and_PointProcess.h
+++ b/fon/Matrix_and_PointProcess.h
@@ -1,29 +1,28 @@
 /* Matrix_and_PointProcess.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 #include "PointProcess.h"
 
-Matrix PointProcess_to_Matrix (PointProcess me);
+autoMatrix PointProcess_to_Matrix (PointProcess me);
 /*
 	Function:
-		create a Matrix from a PointProcess; return NULL if out of memory.
+		create a Matrix from a PointProcess.
 	Postconditions:
 		thy xmin == 1;
 		thy xmax == my numberOfEvents;
@@ -34,10 +33,10 @@ Matrix PointProcess_to_Matrix (PointProcess me);
 		for (ievent in 1..my numberOfEvents) thy z [1] [ievent] == my event [ievent];
 */
 
-PointProcess Matrix_to_PointProcess (Matrix me);
+autoPointProcess Matrix_to_PointProcess (Matrix me);
 /*
 	Function:
-		create a PointProcess from a Matrix; return NULL if out of memory.
+		create a PointProcess from a Matrix.
 	Postconditions:
 		thy maximumNumberOfEvents == my nx;
 		thy numberOfEvents == my nx;
diff --git a/fon/Matrix_and_Polygon.cpp b/fon/Matrix_and_Polygon.cpp
index 3c8e21e..b762c34 100644
--- a/fon/Matrix_and_Polygon.cpp
+++ b/fon/Matrix_and_Polygon.cpp
@@ -1,20 +1,19 @@
 /* Matrix_and_Polygon.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -26,34 +25,34 @@
 
 #include "Matrix_and_Polygon.h"
 
-Polygon Matrix_to_Polygon (Matrix me) {
+autoPolygon Matrix_to_Polygon (Matrix me) {
 	try {
 		if (my nx != 2 && my ny != 2)
-			Melder_throw (U"Matrix must have exactly 2 rows or columns.");
-		autoPolygon thee = NULL;
+			Melder_throw (U"The Matrix should have exactly 2 rows or columns.");
+		autoPolygon thee;
 		if (my ny == 2) {
-			thee.reset (Polygon_create (my nx));
+			thee = Polygon_create (my nx);
 			NUMvector_copyElements (my z [1], thy x, 1, my nx);
 			NUMvector_copyElements (my z [2], thy y, 1, my nx);
 		} else {
-			thee.reset (Polygon_create (my ny));
+			thee = Polygon_create (my ny);
 			for (long i = 1; i <= my ny; i ++) {
 				thy x [i] = my z [i] [1];
 				thy y [i] = my z [i] [2];
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Polygon.");
 	}
 }
 
-Matrix Polygon_to_Matrix (Polygon me) {
+autoMatrix Polygon_to_Matrix (Polygon me) {
 	try {
-		autoMatrix thee = Matrix_create (1, my numberOfPoints, my numberOfPoints, 1, 1, 1, 2, 2, 1, 1);
+		autoMatrix thee = Matrix_create (1.0, my numberOfPoints, my numberOfPoints, 1.0, 1.0, 1.0, 2.0, 2, 1.0, 1.0);
 		NUMvector_copyElements (my x, thy z [1], 1, my numberOfPoints);
 		NUMvector_copyElements (my y, thy z [2], 1, my numberOfPoints);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/fon/Matrix_and_Polygon.h b/fon/Matrix_and_Polygon.h
index 2007e1f..2621e2a 100644
--- a/fon/Matrix_and_Polygon.h
+++ b/fon/Matrix_and_Polygon.h
@@ -1,29 +1,28 @@
 /* Matrix_and_Polygon.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 #include "Polygon.h"
 
-Polygon Matrix_to_Polygon (Matrix me);
+autoPolygon Matrix_to_Polygon (Matrix me);
 /*
 	Function:
-		create a Polygon from a Matrix; return NULL in case of failure.
+		create a Polygon from a Matrix.
 	Failures:
 		my ny != 2 && my nx != 2;   //  Matrix must have exactly 2 rows or columns.
 		Out of memory.
@@ -38,10 +37,10 @@ Polygon Matrix_to_Polygon (Matrix me);
 		}
 */
 
-Matrix Polygon_to_Matrix (Polygon me);
+autoMatrix Polygon_to_Matrix (Polygon me);
 /*
 	Function:
-		create a Matrix from a Polygon; return NULL if out of memory.
+		create a Matrix from a Polygon.
 	Postconditions:
 		thy xmin xmax nx dx x1 == 1 my numberOfPoints my numberOfPoints 1 1;
 		thy ymin ymax ny dy y1 == 1 2 2 1 1;
diff --git a/fon/Matrix_def.h b/fon/Matrix_def.h
index 4777849..a6b238d 100644
--- a/fon/Matrix_def.h
+++ b/fon/Matrix_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/Movie.cpp b/fon/Movie.cpp
index 90879a8..0abdd2e 100644
--- a/fon/Movie.cpp
+++ b/fon/Movie.cpp
@@ -1,20 +1,19 @@
 /* Movie.cpp
  *
- * Copyright (C) 2011-2012 Paul Boersma
+ * Copyright (C) 2011-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Movie.h"
@@ -42,7 +41,7 @@ Thing_implement (Movie, Sampled, 0);
 
 void structMovie :: v_info ()
 {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"End time: ", xmax, U" seconds");
 	MelderInfo_writeLine (U"Total duration: ", xmax - xmin, U" seconds");
@@ -53,15 +52,15 @@ void structMovie :: v_info ()
 	MelderInfo_writeLine (U"   First frame centred at: ", x1, U" seconds");
 }
 
-void Movie_init (Movie me, Sound sound, const char32 *folderName, Strings fileNames)
+void Movie_init (Movie me, autoSound sound, const char32 *folderName, autoStrings fileNames)
 {
 	Sampled_init (me, sound -> xmin, sound -> xmax, fileNames ? fileNames -> numberOfStrings : 0, 0.04, 0.0);
-	my d_sound = sound;
+	my d_sound = sound.move();
 	my d_folderName = Melder_dup (folderName);
-	my d_fileNames = fileNames;
+	my d_fileNames = fileNames.move();
 }
 
-Movie Movie_openFromSoundFile (MelderFile file)
+autoMovie Movie_openFromSoundFile (MelderFile file)
 {
 	try {
 		autoMovie me = Thing_new (Movie);
@@ -69,15 +68,15 @@ Movie Movie_openFromSoundFile (MelderFile file)
 		autoMelderString fileNameHead;
 		MelderString_copy (& fileNameHead, Melder_fileToPath (file));
 		char32 *extensionLocation = str32rchr (fileNameHead.string, U'.');
-		if (extensionLocation == NULL)
+		if (! extensionLocation)
 			extensionLocation = & fileNameHead.string [fileNameHead.length];
 		*extensionLocation = U'\0';
 		fileNameHead.length = extensionLocation - fileNameHead.string;
 		autoStrings strings = Strings_createAsFileList (Melder_cat (fileNameHead.string, U"*.png"));
 		struct structMelderDir folder;
 		MelderFile_getParentDir (file, & folder);
-		Movie_init (me.peek(), sound.transfer(), Melder_dirToPath (& folder), strings.transfer());
-		return me.transfer();
+		Movie_init (me.get(), sound.move(), Melder_dirToPath (& folder), strings.move());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Movie object not read from file ", file, U".");
 	}
@@ -88,7 +87,7 @@ void Movie_paintOneImageInside (Movie me, Graphics graphics, long frameNumber, d
 	try {
 		if (frameNumber < 1) Melder_throw (U"Specified frame number is ", frameNumber, U" but should be at least 1.");
 		if (frameNumber > my nx) Melder_throw (U"Specified frame number is ", frameNumber, U" but there are only ", my nx, U"frames.");
-		Melder_assert (my d_fileNames != 0);
+		Melder_assert (my d_fileNames);
 		Melder_assert (my d_fileNames -> numberOfStrings == my nx);
 		struct structMelderDir folder;
 		Melder_pathToDir (my d_folderName, & folder);
@@ -112,10 +111,9 @@ void Movie_paintOneImage (Movie me, Graphics graphics, long frameNumber, double
 	}
 }
 
-void Movie_play (Movie me, Graphics g, double tmin, double tmax, int (*callback) (void *closure, int phase, double tmin, double tmax, double t), void *closure)
+void Movie_play (Movie me, Graphics /* g */, double tmin, double tmax, Sound_PlayCallback callback, Thing boss)
 {
-	(void) g;
-	Sound_playPart (my d_sound, tmin, tmax, callback, closure);
+	Sound_playPart (my d_sound.get(), tmin, tmax, callback, boss);
 }
 
 /* End of file Movie.cpp */
diff --git a/fon/Movie.h b/fon/Movie.h
index e0ae21c..4e16886 100644
--- a/fon/Movie.h
+++ b/fon/Movie.h
@@ -2,21 +2,20 @@
 #define _Movie_h_
 /* Movie.h
  *
- * Copyright (C) 2011,2014 Paul Boersma
+ * Copyright (C) 2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sampled.h"
@@ -25,17 +24,16 @@
 #include "Strings_.h"
 
 #include "Movie_def.h"
-oo_CLASS_CREATE (Movie, Sampled);
 
-Movie Movie_openFromSoundFile (MelderFile file);
+autoMovie Movie_openFromSoundFile (MelderFile file);
 
-void Movie_init (Movie me, Sound sound, const char32 *folderName, Strings fileNames);
+void Movie_init (Movie me, autoSound sound, const char32 *folderName, autoStrings fileNames);
 
 void Movie_paintOneImageInside (Movie me, Graphics graphics, long frameNumber, double xmin, double xmax, double ymin, double ymax);
 
 void Movie_paintOneImage (Movie me, Graphics graphics, long frameNumber, double xmin, double xmax, double ymin, double ymax);
 
-void Movie_play (Movie me, Graphics graphics, double tmin, double tmax, int (*callback) (void *closure, int phase, double tmin, double tmax, double t), void *closure);
+void Movie_play (Movie me, Graphics graphics, double tmin, double tmax, Sound_PlayCallback callback, Thing boss);
 
 /* End of file Movie.h */
 #endif
diff --git a/fon/MovieWindow.cpp b/fon/MovieWindow.cpp
index de590d1..0001f4a 100644
--- a/fon/MovieWindow.cpp
+++ b/fon/MovieWindow.cpp
@@ -1,20 +1,19 @@
 /* MovieWindow.cpp
  *
- * Copyright (C) 2011-2012,2013,2014 Paul Boersma
+ * Copyright (C) 2011-2012,2013,2014,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "MovieWindow.h"
@@ -53,21 +52,21 @@ void structMovieWindow :: v_draw () {
 	bool showAnalysis = (our p_spectrogram_show || our p_pitch_show || our p_intensity_show || our p_formant_show) && movie -> d_sound;
 	double soundY = _MovieWindow_getSoundBottomPosition (this);
 	if (movie -> d_sound) {
-		Graphics_Viewport viewport = Graphics_insetViewport (our d_graphics, 0, 1, soundY, 1.0);
-		Graphics_setColour (our d_graphics, Graphics_WHITE);
-		Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-		Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
+		Graphics_Viewport viewport = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, soundY, 1.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+		Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 		TimeSoundEditor_drawSound (this, -1.0, 1.0);
-		Graphics_flushWs (our d_graphics);
-		Graphics_resetViewport (our d_graphics, viewport);
+		Graphics_flushWs (our d_graphics.get());
+		Graphics_resetViewport (our d_graphics.get(), viewport);
 	}
 	if (true) {
-		Graphics_Viewport viewport = Graphics_insetViewport (d_graphics, 0.0, 1.0, 0.0, 0.3);
-		Graphics_setColour (our d_graphics, Graphics_WHITE);
-		Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-		Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-		Graphics_setColour (our d_graphics, Graphics_BLACK);
-		Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, 0.0, 1.0);
+		Graphics_Viewport viewport = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, 0.0, 0.3);
+		Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+		Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+		Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0.0, 1.0);
 		long firstFrame = Sampled_xToNearestIndex (movie, our d_startWindow);
 		long lastFrame = Sampled_xToNearestIndex (movie, our d_endWindow);
 		if (firstFrame < 1) firstFrame = 1;
@@ -77,23 +76,23 @@ void structMovieWindow :: v_draw () {
 			double timeLeft = time - 0.5 * movie -> dx, timeRight = time + 0.5 * movie -> dx;
 			if (timeLeft < our d_startWindow) timeLeft = our d_startWindow;
 			if (timeRight > our d_endWindow) timeRight = our d_endWindow;
-			Movie_paintOneImageInside (movie, our d_graphics, iframe, timeLeft, timeRight, 0.0, 1.0);
+			Movie_paintOneImageInside (movie, our d_graphics.get(), iframe, timeLeft, timeRight, 0.0, 1.0);
 		}
-		Graphics_flushWs (our d_graphics);
-		Graphics_resetViewport (our d_graphics, viewport);
+		Graphics_flushWs (our d_graphics.get());
+		Graphics_resetViewport (our d_graphics.get(), viewport);
 	}
 	if (showAnalysis) {
-		Graphics_Viewport viewport = Graphics_insetViewport (our d_graphics, 0.0, 1.0, 0.3, soundY);
+		Graphics_Viewport viewport = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 0.3, soundY);
 		our v_draw_analysis ();
-		Graphics_flushWs (our d_graphics);
-		Graphics_resetViewport (our d_graphics, viewport);
+		Graphics_flushWs (our d_graphics.get());
+		Graphics_resetViewport (our d_graphics.get(), viewport);
 		/* Draw pulses. */
 		if (our p_pulses_show) {
-			viewport = Graphics_insetViewport (our d_graphics, 0.0, 1.0, soundY, 1.0);
+			viewport = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, soundY, 1.0);
 			our v_draw_analysis_pulses ();
 			TimeSoundEditor_drawSound (this, -1.0, 1.0);   // second time, partially across the pulses
-			Graphics_flushWs (our d_graphics);
-			Graphics_resetViewport (our d_graphics, viewport);
+			Graphics_flushWs (our d_graphics.get());
+			Graphics_resetViewport (our d_graphics.get(), viewport);
 		}
 	}
 	our v_updateMenuItems_file ();
@@ -101,37 +100,37 @@ void structMovieWindow :: v_draw () {
 
 void structMovieWindow :: v_highlightSelection (double left, double right, double bottom, double top) {
 	if (our p_spectrogram_show)
-		Graphics_highlight (our d_graphics, left, right, 0.3 * bottom + 0.7 * top, top);
+		Graphics_highlight (our d_graphics.get(), left, right, 0.3 * bottom + 0.7 * top, top);
 	else
-		Graphics_highlight (our d_graphics, left, right, 0.7 * bottom + 0.3 * top, top);
+		Graphics_highlight (our d_graphics.get(), left, right, 0.7 * bottom + 0.3 * top, top);
 }
 
 void structMovieWindow :: v_unhighlightSelection (double left, double right, double bottom, double top) {
 	if (our p_spectrogram_show)
-		Graphics_highlight (our d_graphics, left, right, 0.3 * bottom + 0.7 * top, top);
+		Graphics_highlight (our d_graphics.get(), left, right, 0.3 * bottom + 0.7 * top, top);
 	else
-		Graphics_highlight (our d_graphics, left, right, 0.7 * bottom + 0.3 * top, top);
+		Graphics_highlight (our d_graphics.get(), left, right, 0.7 * bottom + 0.3 * top, top);
 }
 
-int structMovieWindow :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structMovieWindow :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	return our MovieWindow_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 }
 
 void structMovieWindow :: v_play (double tmin, double tmax) {
 	Movie movie = (Movie) data;
-	Movie_play (movie, our d_graphics, tmin, tmax, theFunctionEditor_playCallback, this);
+	Movie_play (movie, our d_graphics.get(), tmin, tmax, theFunctionEditor_playCallback, this);
 }
 
 void MovieWindow_init (MovieWindow me, const char32 *title, Movie movie) {
-	Melder_assert (movie != NULL);
-	TimeSoundAnalysisEditor_init (me, title, movie, movie -> d_sound, false);
+	Melder_assert (movie);
+	TimeSoundAnalysisEditor_init (me, title, movie, movie -> d_sound.get(), false);
 }
 
-MovieWindow MovieWindow_create (const char32 *title, Movie movie) {
+autoMovieWindow MovieWindow_create (const char32 *title, Movie movie) {
 	try {
 		autoMovieWindow me = Thing_new (MovieWindow);
-		MovieWindow_init (me.peek(), title, movie);
-		return me.transfer();
+		MovieWindow_init (me.get(), title, movie);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Movie window not created.");
 	}
diff --git a/fon/MovieWindow.h b/fon/MovieWindow.h
index 5ed20f5..6f869a4 100644
--- a/fon/MovieWindow.h
+++ b/fon/MovieWindow.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundAnalysisEditor.h"
@@ -27,7 +26,7 @@ Thing_define (MovieWindow, TimeSoundAnalysisEditor) {
 		override;
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -41,7 +40,7 @@ Thing_define (MovieWindow, TimeSoundAnalysisEditor) {
 
 void MovieWindow_init (MovieWindow me, const char32 *title, Movie movie);
 
-MovieWindow MovieWindow_create (const char32 *title, Movie movie);
+autoMovieWindow MovieWindow_create (const char32 *title, Movie movie);
 
 /* End of file MovieWindow.h */
 #endif
diff --git a/fon/Movie_def.h b/fon/Movie_def.h
index a42e907..177e5d6 100644
--- a/fon/Movie_def.h
+++ b/fon/Movie_def.h
@@ -2,28 +2,27 @@
  *
  * Copyright (C) 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Movie
 oo_DEFINE_CLASS (Movie, Sampled)
 
-	oo_OBJECT (Sound, 2, d_sound)
+	oo_AUTO_OBJECT (Sound, 2, d_sound)
 	oo_STRING (d_folderName)
-	oo_OBJECT (Strings, 0, d_fileNames)
+	oo_AUTO_OBJECT (Strings, 0, d_fileNames)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/fon/ParamCurve.cpp b/fon/ParamCurve.cpp
index 6f17517..d9ace97 100644
--- a/fon/ParamCurve.cpp
+++ b/fon/ParamCurve.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ParamCurve.h"
@@ -33,63 +32,63 @@
 Thing_implement (ParamCurve, Function, 2);
 
 void structParamCurve :: v_info () {
-	double xmin = 1e300, xmax = -1e300, ymin = 1e300, ymax = -1e300;
-	for (long i = 1; i <= x -> nx; i ++) {
-		double value = x -> z [1] [i];
+	double xmin = 1e308, xmax = -1e308, ymin = 1e308, ymax = -1e308;
+	for (long i = 1; i <= our x -> nx; i ++) {
+		double value = our x -> z [1] [i];
 		if (value < xmin) xmin = value;
 		if (value > xmax) xmax = value;
 	}
 	for (long i = 1; i <= y -> nx; i ++) {
-		double value = y -> z [1] [i];
+		double value = our y -> z [1] [i];
 		if (value < ymin) ymin = value;
 		if (value > ymax) ymax = value;
 	}
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Domain:");
 	MelderInfo_writeLine (U"   tmin: ", xmin);
 	MelderInfo_writeLine (U"   tmax: ", xmax);
 	MelderInfo_writeLine (U"x sampling:");
-	MelderInfo_writeLine (U"   Number of values of t in x: ", x -> nx);
-	MelderInfo_writeLine (U"   t step in x: ", x -> dx, U" (sampling rate ", 1.0 / x -> dx, U")");
-	MelderInfo_writeLine (U"   First t in x: ", x -> x1);
+	MelderInfo_writeLine (U"   Number of values of t in x: ", our x -> nx);
+	MelderInfo_writeLine (U"   t step in x: ", our x -> dx, U" (sampling rate ", 1.0 / our x -> dx, U")");
+	MelderInfo_writeLine (U"   First t in x: ", our x -> x1);
 	MelderInfo_writeLine (U"x values:");
 	MelderInfo_writeLine (U"   Minimum x: ", xmin);
 	MelderInfo_writeLine (U"   Maximum x: ", xmax);
 	MelderInfo_writeLine (U"y sampling:");
-	MelderInfo_writeLine (U"   Number of values of t in y: ", y -> nx);
-	MelderInfo_writeLine (U"   t step in y: ", y -> dx, U" (sampling rate ", 1.0 / y -> dx, U")");
-	MelderInfo_writeLine (U"   First t in y: ", y -> x1);
+	MelderInfo_writeLine (U"   Number of values of t in y: ", our y -> nx);
+	MelderInfo_writeLine (U"   t step in y: ", our y -> dx, U" (sampling rate ", 1.0 / our y -> dx, U")");
+	MelderInfo_writeLine (U"   First t in y: ", our y -> x1);
 	MelderInfo_writeLine (U"y values:");
 	MelderInfo_writeLine (U"   Minimum y: ", ymin);
 	MelderInfo_writeLine (U"   Maximum y: ", ymax);
 }
 
 void structParamCurve :: v_writeText (MelderFile file) {
-	Data_writeText (x, file);
-	Data_writeText (y, file);
+	Data_writeText (our x.get(), file);
+	Data_writeText (our y.get(), file);
 }
 
 void structParamCurve :: v_readText (MelderReadText text, int formatVersion) {
-	x = Thing_new (Sound);
-	y = Thing_new (Sound);
-	Data_readText (x, text, formatVersion);
-	Data_readText (y, text, formatVersion);
-	xmin = x -> xmin > y -> xmin ? x -> xmin : y -> xmin;
-	xmax = x -> xmax < y -> xmax ? x -> xmax : y -> xmax;
+	our x = Thing_new (Sound);
+	our y = Thing_new (Sound);
+	Data_readText (our x.get(), text, formatVersion);
+	Data_readText (our y.get(), text, formatVersion);
+	our xmin = our x -> xmin > our y -> xmin ? our x -> xmin : our y -> xmin;
+	our xmax = our x -> xmax < our y -> xmax ? our x -> xmax : our y -> xmax;
 }
 
 void structParamCurve :: v_writeBinary (FILE *f) {
-	Data_writeBinary (x, f);
-	Data_writeBinary (y, f);
+	Data_writeBinary (x.get(), f);
+	Data_writeBinary (y.get(), f);
 }
 
 void structParamCurve :: v_readBinary (FILE *f, int /*formatVersion*/) {
-	x = Thing_new (Sound);
-	y = Thing_new (Sound);
-	Data_readBinary (x, f, 2);
-	Data_readBinary (y, f, 2);
-	xmin = x -> xmin > y -> xmin ? x -> xmin : y -> xmin;
-	xmax = x -> xmax < y -> xmax ? x -> xmax : y -> xmax;
+	our x = Thing_new (Sound);
+	our y = Thing_new (Sound);
+	Data_readBinary (our x.get(), f, 2);
+	Data_readBinary (our y.get(), f, 2);
+	our xmin = our x -> xmin > our y -> xmin ? our x -> xmin : our y -> xmin;
+	our xmax = our x -> xmax < our y -> xmax ? our x -> xmax : our y -> xmax;
 }
 
 void ParamCurve_init (ParamCurve me, Sound x, Sound y) {
@@ -101,11 +100,11 @@ void ParamCurve_init (ParamCurve me, Sound x, Sound y) {
 	my xmax = x -> xmax < y -> xmax ? x -> xmax : y -> xmax;
 }
 
-ParamCurve ParamCurve_create (Sound x, Sound y) {
+autoParamCurve ParamCurve_create (Sound x, Sound y) {
 	try {
 		autoParamCurve me = Thing_new (ParamCurve);
-		ParamCurve_init (me.peek(), x, y);
-		return me.transfer();
+		ParamCurve_init (me.get(), x, y);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"ParamCurve not created.");
 	}
@@ -122,9 +121,9 @@ void ParamCurve_draw (ParamCurve me, Graphics g, double t1, double t2, double dt
 		t1 = tx1 > ty1 ? tx1 : ty1;
 		t2 = tx2 < ty2 ? tx2 : ty2;
 	}
-	if (x2 <= x1) Matrix_getWindowExtrema (my x, 0, 0, 1, 1, & x1, & x2);
+	if (x2 <= x1) Matrix_getWindowExtrema (my x.get(), 0, 0, 1, 1, & x1, & x2);
 	if (x1 == x2) { x1 -= 1.0; x2 += 1.0; }
-	if (y2 <= y1) Matrix_getWindowExtrema (my y, 0, 0, 1, 1, & y1, & y2);
+	if (y2 <= y1) Matrix_getWindowExtrema (my y.get(), 0, 0, 1, 1, & y1, & y2);
 	if (y1 == y2) { y1 -= 1.0; y2 += 1.0; }
 	if (dt <= 0.0)
 		dt = my x -> dx < my y -> dx ? my x -> dx : my y -> dx;
@@ -134,9 +133,9 @@ void ParamCurve_draw (ParamCurve me, Graphics g, double t1, double t2, double dt
 		autoNUMvector <double> y (1, numberOfPoints);
 		for (long i = 1; i <= numberOfPoints; i ++) {
 			double t = i == numberOfPoints ? t2 : t1 + (i - 1) * dt;
-			double index = Sampled_xToIndex (my x, t);
+			double index = Sampled_xToIndex (my x.get(), t);
 			x [i] = NUM_interpolate_sinc (my x -> z [1], my x -> nx, index, 50);
-			index = Sampled_xToIndex (my y, t);
+			index = Sampled_xToIndex (my y.get(), t);
 			y [i] = NUM_interpolate_sinc (my y -> z [1], my y -> nx, index, 50);
 		}
 		Graphics_setWindow (g, x1, x2, y1, y2);
@@ -146,15 +145,15 @@ void ParamCurve_draw (ParamCurve me, Graphics g, double t1, double t2, double dt
 	}
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
 	}
 }
 
 void ParamCurve_swapXY (ParamCurve me) {
-	Sound help = my x;
-	my x = my y;
-	my y = help;
+	autoSound help = my x.move();
+	my x = my y.move();
+	my y = help.move();
 }
 
 /* End of file ParamCurve.cpp */
diff --git a/fon/ParamCurve.h b/fon/ParamCurve.h
index bcf9788..f064ae5 100644
--- a/fon/ParamCurve.h
+++ b/fon/ParamCurve.h
@@ -2,21 +2,20 @@
 #define _ParamCurve_h_
 /* ParamCurve.h
  *
- * Copyright (C) 1992-2011,2012 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,15 +30,13 @@
 #include "Graphics.h"
 
 #include "ParamCurve_def.h"
-oo_CLASS_CREATE (ParamCurve, Function);
 
 void ParamCurve_init (ParamCurve me, Sound x, Sound y);
 
-ParamCurve ParamCurve_create (Sound x, Sound y);
+autoParamCurve ParamCurve_create (Sound x, Sound y);
 /*
 	Return value:
-		a newly created ParamCurve object,
-		or NULL in case of failure.
+		a newly created ParamCurve object.
 	Failures:
 		Out of memory.
 		Domains do not overlap:
@@ -62,8 +59,6 @@ void ParamCurve_draw (ParamCurve me, Graphics g, double t1, double t2, double dt
 		dt <= 0.0: time step is the smaller of my x -> dx and my y -> dx.
 		x2 <= x1: autoscaling along horizontal axis.
 		y2 <= y1: autoscaling along vertical axis.
-	Return value:
-		1 if OK, 0 if out of memory.
 */
 
 void ParamCurve_swapXY (ParamCurve me);
diff --git a/fon/ParamCurve_def.h b/fon/ParamCurve_def.h
index 75a8666..3671668 100644
--- a/fon/ParamCurve_def.h
+++ b/fon/ParamCurve_def.h
@@ -2,27 +2,26 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT ParamCurve
 oo_DEFINE_CLASS (ParamCurve, Function)
 
-	oo_OBJECT (Sound, 2, x)
-	oo_OBJECT (Sound, 2, y)
+	oo_AUTO_OBJECT (Sound, 2, x)
+	oo_AUTO_OBJECT (Sound, 2, y)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/fon/Photo.cpp b/fon/Photo.cpp
index 3e2246e..4f96f53 100644
--- a/fon/Photo.cpp
+++ b/fon/Photo.cpp
@@ -1,20 +1,19 @@
 /* Photo.cpp
  *
- * Copyright (C) 2013,2014 Paul Boersma
+ * Copyright (C) 2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Photo.h"
@@ -52,7 +51,7 @@
 Thing_implement (Photo, SampledXY, 0);
 
 void structPhoto :: v_info () {
-	our structData :: v_info ();
+	our structDaata :: v_info ();
 	MelderInfo_writeLine (U"xmin: ", our xmin);
 	MelderInfo_writeLine (U"xmax: ", our xmax);
 	MelderInfo_writeLine (U"Number of columns: ", our nx);
@@ -76,31 +75,31 @@ void Photo_init (Photo me,
 	my d_transparency = Matrix_create (xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
 }
 
-Photo Photo_create
+autoPhoto Photo_create
 	(double xmin, double xmax, long nx, double dx, double x1,
 	 double ymin, double ymax, long ny, double dy, double y1)
 {
 	try {
 		autoPhoto me = Thing_new (Photo);
-		Photo_init (me.peek(), xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
-		return me.transfer();
+		Photo_init (me.get(), xmin, xmax, nx, dx, x1, ymin, ymax, ny, dy, y1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Photo object not created.");
 	}
 }
 
-Photo Photo_createSimple (long numberOfRows, long numberOfColumns) {
+autoPhoto Photo_createSimple (long numberOfRows, long numberOfColumns) {
 	try {
 		autoPhoto me = Thing_new (Photo);
-		Photo_init (me.peek(), 0.5, numberOfColumns + 0.5, numberOfColumns, 1, 1,
-		                       0.5, numberOfRows    + 0.5, numberOfRows,    1, 1);
-		return me.transfer();
+		Photo_init (me.get(), 0.5, numberOfColumns + 0.5, numberOfColumns, 1, 1,
+							  0.5, numberOfRows    + 0.5, numberOfRows,    1, 1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Photo object not created.");
 	}
 }
 
-Photo Photo_readFromImageFile (MelderFile file) {
+autoPhoto Photo_readFromImageFile (MelderFile file) {
 	try {
 		#if defined (linux)
 			cairo_surface_t *surface = cairo_image_surface_create_from_png (Melder_peek32to8 (file -> path));
@@ -141,7 +140,7 @@ Photo Photo_readFromImageFile (MelderFile file) {
 				Melder_throw (U"Unsupported PNG format ", format, U".");
 			}
 			cairo_surface_destroy (surface);
-			return me.transfer();
+			return me;
 		#elif defined (_WIN32)
 			Gdiplus::Bitmap gdiplusBitmap (Melder_peek32toW (file -> path));
 			long width = gdiplusBitmap. GetWidth ();
@@ -159,24 +158,24 @@ Photo Photo_readFromImageFile (MelderFile file) {
 					my d_transparency -> z [irow] [icol] = 1.0 - (gdiplusColour. GetAlpha ()) / 255.0;
 				}
 			}
-			return me.transfer();
+			return me;
 		#elif defined (macintosh)
-			autoPhoto me = NULL;
+			autoPhoto me;
 			char utf8 [500];
 			Melder_str32To8bitFileRepresentation_inline (file -> path, utf8);
-			CFStringRef path = CFStringCreateWithCString (NULL, utf8, kCFStringEncodingUTF8);
-			CFURLRef url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, false);
+			CFStringRef path = CFStringCreateWithCString (nullptr, utf8, kCFStringEncodingUTF8);
+			CFURLRef url = CFURLCreateWithFileSystemPath (nullptr, path, kCFURLPOSIXPathStyle, false);
 			CFRelease (path);
-			CGImageSourceRef imageSource = CGImageSourceCreateWithURL (url, NULL);
+			CGImageSourceRef imageSource = CGImageSourceCreateWithURL (url, nullptr);
 			CFRelease (url);
-			if (imageSource == NULL)
+			if (! imageSource)
 				Melder_throw (U"Cannot open picture file ", file, U".");
-			CGImageRef image = CGImageSourceCreateImageAtIndex (imageSource, 0, NULL);
+			CGImageRef image = CGImageSourceCreateImageAtIndex (imageSource, 0, nullptr);
 			CFRelease (imageSource);
-			if (image != NULL) {
+			if (image) {
 				long width = CGImageGetWidth (image);
 				long height = CGImageGetHeight (image);
-				me.reset (Photo_createSimple (height, width));
+				me = Photo_createSimple (height, width);
 				long bitsPerPixel = CGImageGetBitsPerPixel (image);
 				long bitsPerComponent = CGImageGetBitsPerComponent (image);
 				long bytesPerRow = CGImageGetBytesPerRow (image);
@@ -205,7 +204,9 @@ Photo Photo_readFromImageFile (MelderFile file) {
 				CFRelease (data);
 				CGImageRelease (image);
 			}
-			return me.transfer();
+			return me;
+		#else
+			return autoPhoto();
 		#endif
 	} catch (MelderError) {
 		Melder_throw (U"Picture file ", file, U" not opened as Photo.");
@@ -215,9 +216,7 @@ Photo Photo_readFromImageFile (MelderFile file) {
 #if defined (macintosh)
 	#include <time.h>
 	#include "macport_on.h"
-	static void _mac_releaseDataCallback (void *info, const void *data, size_t size) {
-		(void) info;
-		(void) size;
+	static void _mac_releaseDataCallback (void * /* info */, const void *data, size_t /* size */) {
 		Melder_free (data);
 	}
 #endif
@@ -269,7 +268,7 @@ Photo Photo_readFromImageFile (MelderFile file) {
 		for (int iencoder = 0; iencoder < numberOfImageEncoders; iencoder ++) {
 			trace (U"Supported MIME type: ", Melder_peekWto32 (imageEncoderInfos [iencoder]. MimeType));
 			if (str32equ (Melder_peekWto32 (imageEncoderInfos [iencoder]. MimeType), mimeType)) {
-				Gdiplus::EncoderParameters *p = NULL;
+				Gdiplus::EncoderParameters *p = nullptr;
 				Gdiplus::EncoderParameters encoderParameters;
 				if (str32equ (mimeType, U"image/jpeg")) {
 					encoderParameters. Count = 1;
@@ -304,24 +303,24 @@ Photo Photo_readFromImageFile (MelderFile file) {
 				* rowAddress ++ = 255 - (uint8) lround (my d_transparency -> z [irow] [icol] * 255.0);
 			}
 		}
-		static CGColorSpaceRef colourSpace = NULL;
-		if (colourSpace == NULL) {
+		static CGColorSpaceRef colourSpace = nullptr;
+		if (! colourSpace) {
 			colourSpace = CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB);   // used to be kCGColorSpaceUserRGB
-			Melder_assert (colourSpace != NULL);
+			Melder_assert (colourSpace);
 		}
-		CGDataProviderRef dataProvider = CGDataProviderCreateWithData (NULL,
+		CGDataProviderRef dataProvider = CGDataProviderCreateWithData (nullptr,
 			imageData,
 			bytesPerRow * numberOfRows,
 			_mac_releaseDataCallback   // needed?
 		);
-		Melder_assert (dataProvider != NULL);
+		Melder_assert (dataProvider);
 		CGImageRef image = CGImageCreate (my nx, numberOfRows,
-			8, 32, bytesPerRow, colourSpace, kCGImageAlphaNone, dataProvider, NULL, false, kCGRenderingIntentDefault);
+			8, 32, bytesPerRow, colourSpace, kCGImageAlphaNone, dataProvider, nullptr, false, kCGRenderingIntentDefault);
 		CGDataProviderRelease (dataProvider);
-		Melder_assert (image != NULL);
+		Melder_assert (image);
 		NSString *path = (NSString *) Melder_peek32toCfstring (Melder_fileToPath (file));
 		CFURLRef url = (CFURLRef) [NSURL   fileURLWithPath: path   isDirectory: NO];
-		CGImageDestinationRef destination = CGImageDestinationCreateWithURL (url, (CFStringRef) which, 1, NULL);
+		CGImageDestinationRef destination = CGImageDestinationCreateWithURL (url, (CFStringRef) which, 1, nullptr);
 		CGImageDestinationAddImage (destination, image, nil);
 
 		if (! CGImageDestinationFinalize (destination)) {
@@ -422,27 +421,19 @@ void Photo_saveAsWindowsIconFile (Photo me, MelderFile file) {
 }
 
 void Photo_replaceRed (Photo me, Matrix red) {
-	autoMatrix copy = Data_copy (red);
-	forget (my d_red);
-	my d_red = copy.transfer();
+	my d_red = Data_copy (red);
 }
 
 void Photo_replaceGreen (Photo me, Matrix green) {
-	autoMatrix copy = Data_copy (green);
-	forget (my d_green);
-	my d_green = copy.transfer();
+	my d_green = Data_copy (green);
 }
 
 void Photo_replaceBlue (Photo me, Matrix blue) {
-	autoMatrix copy = Data_copy (blue);
-	forget (my d_blue);
-	my d_blue = copy.transfer();
+	my d_blue = Data_copy (blue);
 }
 
 void Photo_replaceTransparency (Photo me, Matrix transparency) {
-	autoMatrix copy = Data_copy (transparency);
-	forget (my d_transparency);
-	my d_transparency = copy.transfer();
+	my d_transparency = Data_copy (transparency);
 }
 
 static void _Photo_cellArrayOrImage (Photo me, Graphics g, double xmin, double xmax, double ymin, double ymax, bool interpolate) {
diff --git a/fon/Photo.h b/fon/Photo.h
index cabb569..b011975 100644
--- a/fon/Photo.h
+++ b/fon/Photo.h
@@ -2,38 +2,36 @@
 #define _Photo_h_
 /* Photo.h
  *
- * Copyright (C) 2013,2014 Paul Boersma
+ * Copyright (C) 2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
 
 #include "Photo_def.h"
-oo_CLASS_CREATE (Photo, SampledXY);
 
 void Photo_init (Photo me,
 	double xmin, double xmax, long nx, double dx, double x1,
 	double ymin, double ymax, long ny, double dy, double y1);
 
-Photo Photo_create
+autoPhoto Photo_create
 	(double xmin, double xmax, long nx, double dx, double x1,
 	 double ymin, double ymax, long ny, double dy, double y1);
 /*
 	Function:
-		return a new opaque black Photo, or NULL if out of memory.
+		return a new opaque black Photo.
 	Preconditions:
 		xmin <= xmax;   ymin <= ymax;
 		nx >= 1;  ny >= 1;
@@ -55,10 +53,10 @@ Photo Photo_create
 		result -> d_transparency -> z [1..ny] [1..nx] == 0.0;
 */
 
-Photo Photo_createSimple (long numberOfRows, long numberOfColumns);
+autoPhoto Photo_createSimple (long numberOfRows, long numberOfColumns);
 /*
 	Function:
-		return a new opaque black Photo, or NULL if out of memory.
+		return a new opaque black Photo.
 	Preconditions:
 		numberOfRows >= 1;  numberOfColumns >= 1;
 	Postconditions:
@@ -78,7 +76,7 @@ Photo Photo_createSimple (long numberOfRows, long numberOfColumns);
 		result -> d_transparency -> z [1..ny] [1..nx] == 0.0;
 */
 
-Photo Photo_readFromImageFile (MelderFile file);
+autoPhoto Photo_readFromImageFile (MelderFile file);
 
 double_rgbt Photo_getValueAtXY (Photo me, double x, double y);
 /*
diff --git a/fon/Photo_def.h b/fon/Photo_def.h
index 7eb763a..c6b2126 100644
--- a/fon/Photo_def.h
+++ b/fon/Photo_def.h
@@ -2,29 +2,28 @@
  *
  * Copyright (C) 2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Photo
 oo_DEFINE_CLASS (Photo, SampledXY)
 
-	oo_OBJECT (Matrix, 2, d_red)
-	oo_OBJECT (Matrix, 2, d_green)
-	oo_OBJECT (Matrix, 2, d_blue)
-	oo_OBJECT (Matrix, 2, d_transparency)
+	oo_AUTO_OBJECT (Matrix, 2, d_red)
+	oo_AUTO_OBJECT (Matrix, 2, d_green)
+	oo_AUTO_OBJECT (Matrix, 2, d_blue)
+	oo_AUTO_OBJECT (Matrix, 2, d_transparency)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/fon/Pitch.cpp b/fon/Pitch.cpp
index ab88907..072f82d 100644
--- a/fon/Pitch.cpp
+++ b/fon/Pitch.cpp
@@ -1,20 +1,19 @@
 /* Pitch.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
@@ -153,14 +152,14 @@ bool Pitch_isVoiced_i (Pitch me, long iframe) {
 }
 
 bool Pitch_isVoiced_t (Pitch me, double time) {
-	return NUMdefined (Sampled_getValueAtX (me, time, Pitch_LEVEL_FREQUENCY, kPitch_unit_HERTZ, FALSE));
+	return NUMdefined (Sampled_getValueAtX (me, time, Pitch_LEVEL_FREQUENCY, kPitch_unit_HERTZ, false));
 }
 
-double Pitch_getValueAtTime (Pitch me, double time, int unit, int interpolate) {
+double Pitch_getValueAtTime (Pitch me, double time, int unit, bool interpolate) {
 	return Sampled_getValueAtX (me, time, Pitch_LEVEL_FREQUENCY, unit, interpolate);
 }
 
-double Pitch_getStrengthAtTime (Pitch me, double time, int unit, int interpolate) {
+double Pitch_getStrengthAtTime (Pitch me, double time, int unit, bool interpolate) {
 	return Sampled_getValueAtX (me, time, Pitch_LEVEL_STRENGTH, unit, interpolate);
 }
 
@@ -169,11 +168,11 @@ long Pitch_countVoicedFrames (Pitch me) {
 }
 
 double Pitch_getMean (Pitch me, double tmin, double tmax, int unit) {
-	return Sampled_getMean (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, TRUE);
+	return Sampled_getMean (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, true);
 }
 
 double Pitch_getMeanStrength (Pitch me, double tmin, double tmax, int unit) {
-	return Sampled_getMean (me, tmin, tmax, Pitch_LEVEL_STRENGTH, unit, TRUE);
+	return Sampled_getMean (me, tmin, tmax, Pitch_LEVEL_STRENGTH, unit, true);
 }
 
 double Pitch_getQuantile (Pitch me, double tmin, double tmax, double quantile, int unit) {
@@ -185,76 +184,76 @@ double Pitch_getQuantile (Pitch me, double tmin, double tmax, double quantile, i
 }
 
 double Pitch_getStandardDeviation (Pitch me, double tmin, double tmax, int unit) {
-	return Sampled_getStandardDeviation (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, TRUE);
+	return Sampled_getStandardDeviation (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, true);
 }
 
 #define MEL(f)  NUMhertzToMel (f)
 #define SEMITONES(f)  NUMhertzToSemitones (f)
 #define ERB(f)  NUMhertzToErb (f)
 
-void Pitch_getMaximumAndTime (Pitch me, double tmin, double tmax, int unit, int interpolate,
+void Pitch_getMaximumAndTime (Pitch me, double tmin, double tmax, int unit, bool interpolate,
 	double *return_maximum, double *return_timeOfMaximum)
 {
 	Sampled_getMaximumAndX (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, interpolate, return_maximum, return_timeOfMaximum);
 	if (! doesUnitAllowNegativeValues (unit) && return_maximum && *return_maximum <= 0.0)
 	{
-		*return_maximum = NUMundefined;   /* Unlikely. */
+		*return_maximum = NUMundefined;   // unlikely
 	}
 }
 
-double Pitch_getMaximum (Pitch me, double tmin, double tmax, int unit, int interpolate) {
+double Pitch_getMaximum (Pitch me, double tmin, double tmax, int unit, bool interpolate) {
 	double maximum;
-	Pitch_getMaximumAndTime (me, tmin, tmax, unit, interpolate, & maximum, NULL);
+	Pitch_getMaximumAndTime (me, tmin, tmax, unit, interpolate, & maximum, nullptr);
 	return maximum;
 }
 
-double Pitch_getTimeOfMaximum (Pitch me, double tmin, double tmax, int unit, int interpolate) {
+double Pitch_getTimeOfMaximum (Pitch me, double tmin, double tmax, int unit, bool interpolate) {
 	double time;
-	Pitch_getMaximumAndTime (me, tmin, tmax, unit, interpolate, NULL, & time);
+	Pitch_getMaximumAndTime (me, tmin, tmax, unit, interpolate, nullptr, & time);
 	return time;
 }
 
-void Pitch_getMinimumAndTime (Pitch me, double tmin, double tmax, int unit, int interpolate,
+void Pitch_getMinimumAndTime (Pitch me, double tmin, double tmax, int unit, bool interpolate,
 	double *return_minimum, double *return_timeOfMinimum)
 {
 	Sampled_getMinimumAndX (me, tmin, tmax, Pitch_LEVEL_FREQUENCY, unit, interpolate, return_minimum, return_timeOfMinimum);
 	if (! doesUnitAllowNegativeValues (unit) && return_minimum && *return_minimum <= 0.0)
 	{
-		*return_minimum = NUMundefined;   /* Not so unlikely. */
+		*return_minimum = NUMundefined;   // not so unlikely
 	}
 }
 
-double Pitch_getMinimum (Pitch me, double tmin, double tmax, int unit, int interpolate) {
+double Pitch_getMinimum (Pitch me, double tmin, double tmax, int unit, bool interpolate) {
 	double minimum;
-	Pitch_getMinimumAndTime (me, tmin, tmax, unit, interpolate, & minimum, NULL);
+	Pitch_getMinimumAndTime (me, tmin, tmax, unit, interpolate, & minimum, nullptr);
 	return minimum;
 }
 
-double Pitch_getTimeOfMinimum (Pitch me, double tmin, double tmax, int unit, int interpolate) {
+double Pitch_getTimeOfMinimum (Pitch me, double tmin, double tmax, int unit, bool interpolate) {
 	double time;
-	Pitch_getMinimumAndTime (me, tmin, tmax, unit, interpolate, NULL, & time);
+	Pitch_getMinimumAndTime (me, tmin, tmax, unit, interpolate, nullptr, & time);
 	return time;
 }
 
 static long Pitch_getMeanAbsoluteSlope (Pitch me,
 	double *out_hertz, double *out_mel, double *out_semitones, double *out_erb, double *out_withoutOctaveJumps)
 {
-	long firstVoicedFrame = 0, lastVoicedFrame = 0, nVoiced = 0, i;
+	long firstVoicedFrame = 0, lastVoicedFrame = 0, nVoiced = 0;
 	autoNUMvector <double> frequencies (1, my nx);
-	for (i = 1; i <= my nx; i ++) {
+	for (long i = 1; i <= my nx; i ++) {
 		double frequency = my frame [i]. candidate [1]. frequency;
 		frequencies [i] = frequency > 0.0 && frequency < my ceiling ? frequency : 0.0;
 		if (frequencies [i] != 0.0) nVoiced ++;
 	}
-	for (i = 1; i <= my nx; i ++)   // look for first voiced frame
+	for (long i = 1; i <= my nx; i ++)   // look for first voiced frame
 		if (frequencies [i] != 0.0) { firstVoicedFrame = i; break; }
-	for (i = my nx; i >= 1; i --)   // look for last voiced frame
+	for (long i = my nx; i >= 1; i --)   // look for last voiced frame
 		if (frequencies [i] != 0.0) { lastVoicedFrame = i; break; }
 	if (nVoiced > 1) {
 		int ilast = firstVoicedFrame;
 		double span = (lastVoicedFrame - firstVoicedFrame) * my dx, flast = frequencies [ilast];
-		double slopeHz = 0, slopeMel = 0, slopeSemitones = 0, slopeErb = 0, slopeRobust = 0;
-		for (i = firstVoicedFrame + 1; i <= lastVoicedFrame; i ++) if (frequencies [i] != 0.0) {
+		double slopeHz = 0.0, slopeMel = 0.0, slopeSemitones = 0.0, slopeErb = 0.0, slopeRobust = 0.0;
+		for (long i = firstVoicedFrame + 1; i <= lastVoicedFrame; i ++) if (frequencies [i] != 0.0) {
 			double localStepSemitones = fabs (SEMITONES (frequencies [i]) - SEMITONES (flast));
 			slopeHz += fabs (frequencies [i] - flast);
 			slopeMel += fabs (MEL (frequencies [i]) - MEL (flast));
@@ -282,29 +281,29 @@ static long Pitch_getMeanAbsoluteSlope (Pitch me,
 }
 
 long Pitch_getMeanAbsSlope_hertz (Pitch me, double *slope) {
-	return Pitch_getMeanAbsoluteSlope (me, slope, NULL, NULL, NULL, NULL);
+	return Pitch_getMeanAbsoluteSlope (me, slope, nullptr, nullptr, nullptr, nullptr);
 }
 
 long Pitch_getMeanAbsSlope_mel (Pitch me, double *slope) {
-	return Pitch_getMeanAbsoluteSlope (me, NULL, slope, NULL, NULL, NULL);
+	return Pitch_getMeanAbsoluteSlope (me, nullptr, slope, nullptr, nullptr, nullptr);
 }
 
 long Pitch_getMeanAbsSlope_semitones (Pitch me, double *slope) {
-	return Pitch_getMeanAbsoluteSlope (me, NULL, NULL, slope, NULL, NULL);
+	return Pitch_getMeanAbsoluteSlope (me, nullptr, nullptr, slope, nullptr, nullptr);
 }
 
 long Pitch_getMeanAbsSlope_erb (Pitch me, double *slope) {
-	return Pitch_getMeanAbsoluteSlope (me, NULL, NULL, NULL, slope, NULL);
+	return Pitch_getMeanAbsoluteSlope (me, nullptr, nullptr, nullptr, slope, nullptr);
 }
 
 long Pitch_getMeanAbsSlope_noOctave (Pitch me, double *slope) {
-	return Pitch_getMeanAbsoluteSlope (me, NULL, NULL, NULL, NULL, slope);
+	return Pitch_getMeanAbsoluteSlope (me, nullptr, nullptr, nullptr, nullptr, slope);
 }
 
 void structPitch :: v_info () {
 	long nVoiced;
 	autoNUMvector <double> frequencies (Sampled_getSortedValues (this, Pitch_LEVEL_FREQUENCY, kPitch_unit_HERTZ, & nVoiced), 1);
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -345,8 +344,8 @@ void structPitch :: v_info () {
 		}
 	}
 	if (nVoiced >= 1) {   // extrema, range, mean and standard deviation
-		double minimum = Pitch_getMinimum (this, xmin, xmax, kPitch_unit_HERTZ, FALSE);
-		double maximum = Pitch_getMaximum (this, xmin, xmax, kPitch_unit_HERTZ, FALSE);
+		double minimum = Pitch_getMinimum (this, xmin, xmax, kPitch_unit_HERTZ, false);
+		double maximum = Pitch_getMaximum (this, xmin, xmax, kPitch_unit_HERTZ, false);
 		double meanHertz, meanMel, meanSemitones, meanErb;
 		MelderInfo_write (U"\nMinimum ", Melder_single (minimum), U" Hz = ", Melder_single (MEL (minimum)), U" Mel = ");
 		MelderInfo_writeLine (Melder_single (SEMITONES (minimum)), U" semitones above 100 Hz = ", Melder_single (ERB (minimum)), U" ERB");
@@ -391,12 +390,12 @@ void Pitch_Frame_init (Pitch_Frame me, int nCandidates) {
 	my nCandidates = nCandidates;
 }
 
-Pitch Pitch_create (double tmin, double tmax, long nt, double dt, double t1,
+autoPitch Pitch_create (double tmin, double tmax, long nt, double dt, double t1,
 	double ceiling, int maxnCandidates)
 {
 	try {
 		autoPitch me = Thing_new (Pitch);
-		Sampled_init (me.peek(), tmin, tmax, nt, dt, t1);
+		Sampled_init (me.get(), tmin, tmax, nt, dt, t1);
 		my ceiling = ceiling;
 		my maxnCandidates = maxnCandidates;
 		my frame = NUMvector <structPitch_Frame> (1, nt);
@@ -406,7 +405,7 @@ Pitch Pitch_create (double tmin, double tmax, long nt, double dt, double t1,
 			Pitch_Frame_init (& my frame [it], 1);
 		}
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Pitch not created.");
 	}
@@ -594,7 +593,7 @@ void Pitch_draw (Pitch me, Graphics g, double tmin, double tmax, double fmin, do
 		Graphics_drawInnerBox (g);
 		Graphics_textBottom (g, true, U"Time (s)");
 		Graphics_marksBottom (g, 2, true, true, false);
-		Graphics_textLeft (g, TRUE, Melder_cat (U"Pitch (", Function_getUnitText (me, Pitch_LEVEL_FREQUENCY, unit, Function_UNIT_TEXT_GRAPHICAL), U")"));
+		Graphics_textLeft (g, true, Melder_cat (U"Pitch (", Function_getUnitText (me, Pitch_LEVEL_FREQUENCY, unit, Function_UNIT_TEXT_GRAPHICAL), U")"));
 		if (Function_isUnitLogarithmic (me, Pitch_LEVEL_FREQUENCY, unit)) {
 			Graphics_marksLeftLogarithmic (g, 6, true, true, false);
 		} else {
@@ -647,7 +646,7 @@ void Pitch_difference (Pitch me, Pitch thee) {
 	MelderInfo_close ();
 }
 
-Pitch Pitch_killOctaveJumps (Pitch me) {
+autoPitch Pitch_killOctaveJumps (Pitch me) {
 	try {
 		autoPitch thee = Pitch_create (my xmin, my xmax, my nx, my dx, my x1, my ceiling, 2);
 		long nVoiced = 0, nUp = 0;
@@ -665,7 +664,7 @@ Pitch Pitch_killOctaveJumps (Pitch me) {
 				lastFrequency = thy frame [i]. candidate [1]. frequency = f;
 			}
 		}
-		thy ceiling *= 2;   /* Make room for some octave jumps. */
+		thy ceiling *= 2.0;   // make room for some octave jumps
 		while (nUp > nVoiced / 2) {
 			for (long i = 1; i <= thy nx; i ++)
 				thy frame [i]. candidate [1]. frequency *= 0.5;
@@ -676,13 +675,13 @@ Pitch Pitch_killOctaveJumps (Pitch me) {
 				thy frame [i]. candidate [1]. frequency *= 2.0;
 			nUp += nVoiced;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": octave jumps not killed.");
 	}
 }
 
-Pitch Pitch_interpolate (Pitch me) {
+autoPitch Pitch_interpolate (Pitch me) {
 	try {
 		autoPitch thee = Pitch_create (my xmin, my xmax, my nx, my dx, my x1, my ceiling, 2);
 		for (long i = 1; i <= my nx; i ++) {
@@ -706,13 +705,13 @@ Pitch Pitch_interpolate (Pitch me) {
 						((i - left) * fright + (right - i) * fleft) / (right - left);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not interpolated.");
 	}
 }
 
-Pitch Pitch_subtractLinearFit (Pitch me, int unit) {
+autoPitch Pitch_subtractLinearFit (Pitch me, int unit) {
 	try {
 		autoPitch thee = Pitch_interpolate (me);
 		/*
@@ -720,17 +719,17 @@ Pitch Pitch_subtractLinearFit (Pitch me, int unit) {
 		 */
 		long imin = thy nx + 1, imax = 0;
 		for (long i = 1; i <= my nx; i ++)
-			if (Pitch_isVoiced_i (thee.peek(), i)) { imin = i; break; }
+			if (Pitch_isVoiced_i (thee.get(), i)) { imin = i; break; }
 		for (long i = imin + 1; i <= my nx; i ++)
-			if (! Pitch_isVoiced_i (thee.peek(), i)) { imax = i - 1; break; }
+			if (! Pitch_isVoiced_i (thee.get(), i)) { imax = i - 1; break; }
 		long n = imax - imin + 1;
-		if (n < 3) return thee.transfer();
+		if (n < 3) return thee;
 		/*
 		 * Compute average pitch and time.
 		 */
 		double sum = 0.0;
 		for (long i = imin; i <= imax; i ++) {
-			sum += Sampled_getValueAtSample (thee.peek(), i, Pitch_LEVEL_FREQUENCY, unit);
+			sum += Sampled_getValueAtSample (thee.get(), i, Pitch_LEVEL_FREQUENCY, unit);
 		}
 		double fmean = sum / n;
 		double tmean = thy x1 + (0.5 * (imin + imax) - 1) * thy dx;
@@ -740,7 +739,7 @@ Pitch Pitch_subtractLinearFit (Pitch me, int unit) {
 		double numerator = 0.0, denominator = 0.0;
 		for (long i = imin; i <= imax; i ++) {
 			double t = thy x1 + (i - 1) * thy dx - tmean;
-			double f = Sampled_getValueAtSample (thee.peek(), i, Pitch_LEVEL_FREQUENCY, unit) - fmean;
+			double f = Sampled_getValueAtSample (thee.get(), i, Pitch_LEVEL_FREQUENCY, unit) - fmean;
 			numerator += f * t;
 			denominator += t * t;
 		}
@@ -751,23 +750,23 @@ Pitch Pitch_subtractLinearFit (Pitch me, int unit) {
 		for (long i = imin; i <= imax; i ++) {
 			Pitch_Frame myFrame = & my frame [i], thyFrame = & thy frame [i];
 			double t = thy x1 + (i - 1) * thy dx - tmean, myFreq = FREQUENCY (myFrame);
-			double f = Sampled_getValueAtSample (thee.peek(), i, Pitch_LEVEL_FREQUENCY, unit);
+			double f = Sampled_getValueAtSample (thee.get(), i, Pitch_LEVEL_FREQUENCY, unit);
 			f -= slope * t;
 			if (NOT_VOICED (myFreq))
 				FREQUENCY (thyFrame) = 0.0;
 			else
 				FREQUENCY (thyFrame) = Function_convertSpecialToStandardUnit (me, f, Pitch_LEVEL_FREQUENCY, unit);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": linear fit not subtracted.");
 	}
 }
 
-Pitch Pitch_smooth (Pitch me, double bandWidth) {
+autoPitch Pitch_smooth (Pitch me, double bandWidth) {
 	try {
 		autoPitch interp = Pitch_interpolate (me);
-		autoMatrix matrix1 = Pitch_to_Matrix (interp.peek());
+		autoMatrix matrix1 = Pitch_to_Matrix (interp.get());
 		autoSound sound1 = Sound_create (1, 2 * matrix1->xmin - matrix1->xmax, 2 * matrix1->xmax - matrix1->xmin,
 			3 * matrix1->nx, matrix1->dx, matrix1->x1 - 2 * matrix1->nx * matrix1->dx);
 
@@ -792,23 +791,23 @@ Pitch Pitch_smooth (Pitch me, double bandWidth) {
 			sound1 -> z [1] [i] = fextrap;
 
 		/* Smooth. */
-		autoSpectrum spectrum = Sound_to_Spectrum (sound1.peek(), TRUE);
+		autoSpectrum spectrum = Sound_to_Spectrum (sound1.get(), true);
 		for (long i = 1; i <= spectrum -> nx; i ++) {
 			double f = (i - 1) * spectrum -> dx, fT = f / bandWidth, factor = exp (- fT * fT);
 			spectrum -> z [1] [i] *= factor;
 			spectrum -> z [2] [i] *= factor;
 		}
-		autoSound sound2 = Spectrum_to_Sound (spectrum.peek());
+		autoSound sound2 = Spectrum_to_Sound (spectrum.get());
 
-		autoMatrix matrix2 = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1, 1, 1, 1, 1);
+		autoMatrix matrix2 = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, 1.0, 1.0, 1, 1.0, 1.0);
 		for (long i = 1; i <= my nx; i ++) {
 			double originalF0 = my frame [i]. candidate [1]. frequency;
 			matrix2 -> z [1] [i] = originalF0 > 0.0 && originalF0 < my ceiling ?
 				sound2 -> z [1] [i + matrix2 -> nx] : 0.0;
 		}
-		autoPitch thee = Matrix_to_Pitch (matrix2.peek());
+		autoPitch thee = Matrix_to_Pitch (matrix2.get());
 		thy ceiling = my ceiling;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not smoothed.");
 	}
diff --git a/fon/Pitch.h b/fon/Pitch.h
index 44a3d97..8caa8a8 100644
--- a/fon/Pitch.h
+++ b/fon/Pitch.h
@@ -2,37 +2,35 @@
 #define _Pitch_h_
 /* Pitch.h
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sampled.h"
 #include "Graphics.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "Pitch_enums.h"
 
 #include "Pitch_def.h"
-oo_CLASS_CREATE (Pitch, Sampled);
 
-Pitch Pitch_create (double tmin, double tmax, long nt, double dt, double t1,
+autoPitch Pitch_create (double tmin, double tmax, long nt, double dt, double t1,
 	double ceiling, int maxnCandidates);
 /*
 	Function:
-		create an empty pitch contour (voiceless), or NULL if out of memory.
+		create an empty pitch contour (voiceless).
 	Preconditions:
 		tmax > tmin;
 		nt >= 1;
@@ -76,8 +74,8 @@ bool Pitch_isVoiced_i (Pitch me, long index);
 
 bool Pitch_isVoiced_t (Pitch me, double t);
 /*
-	Are you voiced at time 't'?
-	The answer is TRUE iff 't' lies within a voiced frame.
+	Are you voiced at time `t`?
+	The answer is `true` iff `t` lies within a voiced frame.
 */
 
 #define Pitch_LEVEL_FREQUENCY  1
@@ -92,8 +90,8 @@ bool Pitch_isVoiced_t (Pitch me, double t);
 #define Pitch_NEAREST  0
 #define Pitch_LINEAR  1
 
-double Pitch_getValueAtTime (Pitch me, double time, int unit, int interpolate);
-double Pitch_getStrengthAtTime (Pitch me, double time, int unit, int interpolate);
+double Pitch_getValueAtTime (Pitch me, double time, int unit, bool interpolate);
+double Pitch_getStrengthAtTime (Pitch me, double time, int unit, bool interpolate);
 
 long Pitch_countVoicedFrames (Pitch me);
 
@@ -101,14 +99,14 @@ double Pitch_getMean (Pitch me, double tmin, double tmax, int unit);
 double Pitch_getMeanStrength (Pitch me, double tmin, double tmax, int unit);
 double Pitch_getQuantile (Pitch me, double tmin, double tmax, double quantile, int unit);
 double Pitch_getStandardDeviation (Pitch me, double tmin, double tmax, int unit);
-void Pitch_getMaximumAndTime (Pitch me, double tmin, double tmax, int unit, int interpolate,
+void Pitch_getMaximumAndTime (Pitch me, double tmin, double tmax, int unit, bool interpolate,
 	double *return_maximum, double *return_timeOfMaximum);
-double Pitch_getMaximum (Pitch me, double tmin, double tmax, int unit, int interpolate);
-double Pitch_getTimeOfMaximum (Pitch me, double tmin, double tmax, int unit, int interpolate);
-void Pitch_getMinimumAndTime (Pitch me, double tmin, double tmax, int unit, int interpolate,
+double Pitch_getMaximum (Pitch me, double tmin, double tmax, int unit, bool interpolate);
+double Pitch_getTimeOfMaximum (Pitch me, double tmin, double tmax, int unit, bool interpolate);
+void Pitch_getMinimumAndTime (Pitch me, double tmin, double tmax, int unit, bool interpolate,
 	double *return_minimum, double *return_timeOfMinimum);
-double Pitch_getMinimum (Pitch me, double tmin, double tmax, int unit, int interpolate);
-double Pitch_getTimeOfMinimum (Pitch me, double tmin, double tmax, int unit, int interpolate);
+double Pitch_getMinimum (Pitch me, double tmin, double tmax, int unit, bool interpolate);
+double Pitch_getTimeOfMinimum (Pitch me, double tmin, double tmax, int unit, bool interpolate);
 
 int Pitch_getMaxnCandidates (Pitch me);
 /*
@@ -151,10 +149,10 @@ long Pitch_getMeanAbsSlope_noOctave (Pitch me, double *slope);
    'value', 'minimum', 'maximum', and 'mean' are valid if nVoiced >= 1;
    'variance' and 'slope' are valid if nVoiced >= 2.
    Invalid variables are always set to 0.0.
-   'minimum', 'maximum', 'mean', and 'variance' may be NULL.
+   'minimum', 'maximum', 'mean', and 'variance' may be null.
 */
 
-Pitch Pitch_killOctaveJumps (Pitch me);
+autoPitch Pitch_killOctaveJumps (Pitch me);
 /* Add octave jumps so that every pitch step,
    including those across unvoiced frames,
    does not exceed 1/2 octave.
@@ -162,13 +160,13 @@ Pitch Pitch_killOctaveJumps (Pitch me);
       result -> ceiling = my ceiling * 2;
 */
 
-Pitch Pitch_interpolate (Pitch me);
+autoPitch Pitch_interpolate (Pitch me);
 /* Interpolate the pitch values of unvoiced frames. */
 /* No extrapolation beyond first and last voiced frames. */
 
-Pitch Pitch_subtractLinearFit (Pitch me, int unit);
+autoPitch Pitch_subtractLinearFit (Pitch me, int unit);
 
-Pitch Pitch_smooth (Pitch me, double bandWidth);
+autoPitch Pitch_smooth (Pitch me, double bandWidth);
 /* Smoothing by convolution with Gaussian curve.
    Time domain: exp (- (pi t bandWidth) ^ 2)
       down to 8.5 % for t = +- 0.5/bandWidth
diff --git a/fon/PitchEditor.cpp b/fon/PitchEditor.cpp
index ba584d5..d4964d1 100644
--- a/fon/PitchEditor.cpp
+++ b/fon/PitchEditor.cpp
@@ -1,20 +1,19 @@
 /* PitchEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch_to_Sound.h"
@@ -29,10 +28,9 @@ Thing_implement (PitchEditor, FunctionEditor, 0);
 
 /********** MENU COMMANDS **********/
 
-static void menu_cb_setCeiling (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
-	EDITOR_FORM (U"Change ceiling", 0)
-		POSITIVE (U"Ceiling (Hz)", U"600")
+static void menu_cb_setCeiling (PitchEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Change ceiling", nullptr)
+		POSITIVE (U"Ceiling (Hz)", U"600.0")
 	EDITOR_OK
 		Pitch pitch = (Pitch) my data;
 		SET_REAL (U"Ceiling", pitch -> ceiling)
@@ -45,16 +43,15 @@ static void menu_cb_setCeiling (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_pathFinder (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
-	EDITOR_FORM (U"Path finder", 0)
+static void menu_cb_pathFinder (PitchEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Path finder", nullptr)
 		REAL (U"Silence threshold", U"0.03")
 		REAL (U"Voicing threshold", U"0.45")
 		REAL (U"Octave cost", U"0.01")
 		REAL (U"Octave-jump cost", U"0.35")
 		REAL (U"Voiced/unvoiced cost", U"0.14")
-		POSITIVE (U"Ceiling (Hz)", U"600")
-		BOOLEAN (U"Pull formants", 0)
+		POSITIVE (U"Ceiling (Hz)", U"600.0")
+		BOOLEAN (U"Pull formants", false)
 	EDITOR_OK
 		Pitch pitch = (Pitch) my data;
 		SET_REAL (U"Ceiling", pitch -> ceiling)
@@ -70,8 +67,7 @@ static void menu_cb_pathFinder (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_getPitch (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_getPitch (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) {
 		Melder_informationReal (Pitch_getValueAtTime ((Pitch) my data, my d_startSelection, kPitch_unit_HERTZ, 1), U"Hz");
 	} else {
@@ -79,8 +75,7 @@ static void menu_cb_getPitch (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_octaveUp (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_octaveUp (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	Pitch pitch = (Pitch) my data;
 	Editor_save (me, U"Octave up");
 	Pitch_step (pitch, 2.0, 0.1, my d_startSelection, my d_endSelection);
@@ -88,8 +83,7 @@ static void menu_cb_octaveUp (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_fifthUp (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_fifthUp (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	Pitch pitch = (Pitch) my data;
 	Editor_save (me, U"Fifth up");
 	Pitch_step (pitch, 1.5, 0.1, my d_startSelection, my d_endSelection);
@@ -97,8 +91,7 @@ static void menu_cb_fifthUp (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_fifthDown (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_fifthDown (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	Pitch pitch = (Pitch) my data;
 	Editor_save (me, U"Fifth down");
 	Pitch_step (pitch, 1 / 1.5, 0.1, my d_startSelection, my d_endSelection);
@@ -106,8 +99,7 @@ static void menu_cb_fifthDown (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_octaveDown (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_octaveDown (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	Pitch pitch = (Pitch) my data;
 	Editor_save (me, U"Octave down");
 	Pitch_step (pitch, 0.5, 0.1, my d_startSelection, my d_endSelection);
@@ -115,8 +107,7 @@ static void menu_cb_octaveDown (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_voiceless (EDITOR_ARGS) {
-	EDITOR_IAM (PitchEditor);
+static void menu_cb_voiceless (PitchEditor me, EDITOR_ARGS_DIRECT) {
 	Pitch pitch = (Pitch) my data;
 	long ileft = Sampled_xToHighIndex (pitch, my d_startSelection);
 	long iright = Sampled_xToLowIndex (pitch, my d_endSelection);
@@ -137,8 +128,8 @@ static void menu_cb_voiceless (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_PitchEditorHelp (EDITOR_ARGS) { EDITOR_IAM (PitchEditor); Melder_help (U"PitchEditor"); }
-static void menu_cb_PitchHelp (EDITOR_ARGS) { EDITOR_IAM (PitchEditor); Melder_help (U"Pitch"); }
+static void menu_cb_PitchEditorHelp (PitchEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"PitchEditor"); }
+static void menu_cb_PitchHelp (PitchEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Pitch"); }
 
 void structPitchEditor :: v_createMenus () {
 	PitchEditor_Parent :: v_createMenus ();
@@ -146,12 +137,12 @@ void structPitchEditor :: v_createMenus () {
 	Editor_addCommand (this, U"Edit", U"Change ceiling...", 0, menu_cb_setCeiling);
 	Editor_addCommand (this, U"Edit", U"Path finder...", 0, menu_cb_pathFinder);
 
-	Editor_addCommand (this, U"Query", U"-- pitch --", 0, NULL);
+	Editor_addCommand (this, U"Query", U"-- pitch --", 0, nullptr);
 	Editor_addCommand (this, U"Query", U"Get pitch", GuiMenu_F5, menu_cb_getPitch);
 
 	Editor_addMenu (this, U"Selection", 0);
 	Editor_addCommand (this, U"Selection", U"Unvoice", 0, menu_cb_voiceless);
-	Editor_addCommand (this, U"Selection", U"-- up and down --", 0, NULL);
+	Editor_addCommand (this, U"Selection", U"-- up and down --", 0, nullptr);
 	Editor_addCommand (this, U"Selection", U"Octave up", 0, menu_cb_octaveUp);
 	Editor_addCommand (this, U"Selection", U"Fifth up", 0, menu_cb_fifthUp);
 	Editor_addCommand (this, U"Selection", U"Fifth down", 0, menu_cb_fifthDown);
@@ -171,14 +162,14 @@ void structPitchEditor :: v_draw () {
 	long it, it1, it2;
 	double dyUnv, dyIntens;
 
-	Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
-	Graphics_rectangle (our d_graphics, 0, 1, 0, 1);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 
-	dyUnv = Graphics_dyMMtoWC (our d_graphics, HEIGHT_UNV);
-	dyIntens = Graphics_dyMMtoWC (our d_graphics, HEIGHT_INTENS);
+	dyUnv = Graphics_dyMMtoWC (our d_graphics.get(), HEIGHT_UNV);
+	dyIntens = Graphics_dyMMtoWC (our d_graphics.get(), HEIGHT_INTENS);
 
 	Sampled_getWindowSamples (pitch, our d_startWindow, our d_endWindow, & it1, & it2);
 
@@ -195,32 +186,32 @@ void structPitchEditor :: v_draw () {
 			50;
 		double radius;
 		Graphics_Viewport previous;
-		previous = Graphics_insetViewport (our d_graphics, 0, 1, dyUnv, 1 - dyIntens);
-		Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, 0, pitch -> ceiling);
-		radius = Graphics_dxMMtoWC (our d_graphics, RADIUS);
+		previous = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, dyUnv, 1.0 - dyIntens);
+		Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0.0, pitch -> ceiling);
+		radius = Graphics_dxMMtoWC (our d_graphics.get(), RADIUS);
 
 		/* Horizontal hair at current pitch. */
 
 		if (our d_startSelection == our d_endSelection && our d_startSelection >= our d_startWindow && our d_startSelection <= our d_endWindow) {
 			double f = Pitch_getValueAtTime (pitch, our d_startSelection, kPitch_unit_HERTZ, Pitch_LINEAR);
 			if (NUMdefined (f)) {
-				Graphics_setColour (our d_graphics, Graphics_RED);
-				Graphics_line (our d_graphics, our d_startWindow - radius, f, our d_endWindow, f);
-				Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-				Graphics_text (our d_graphics, our d_startWindow - radius, f, Melder_fixed (f, 2));
+				Graphics_setColour (our d_graphics.get(), Graphics_RED);
+				Graphics_line (our d_graphics.get(), our d_startWindow - radius, f, our d_endWindow, f);
+				Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+				Graphics_text (our d_graphics.get(), our d_startWindow - radius, f, Melder_fixed (f, 2));
 			}
 		}
 
 		/* Horizontal scaling lines. */
 
-		Graphics_setColour (our d_graphics, Graphics_BLUE);
-		Graphics_setLineType (our d_graphics, Graphics_DOTTED);
-		Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_HALF);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
+		Graphics_setLineType (our d_graphics.get(), Graphics_DOTTED);
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_HALF);
 		for (long f = df; f <= pitch -> ceiling; f += df) {
-			Graphics_line (our d_graphics, our d_startWindow, f, our d_endWindow, f);
-			Graphics_text (our d_graphics, our d_endWindow + radius/2, f,   f, U" Hz");
+			Graphics_line (our d_graphics.get(), our d_startWindow, f, our d_endWindow, f);
+			Graphics_text (our d_graphics.get(), our d_endWindow + 0.5 * radius, f,   f, U" Hz");
 		}
-		Graphics_setLineType (our d_graphics, Graphics_DRAWN);
+		Graphics_setLineType (our d_graphics.get(), Graphics_DRAWN);
 
 		/* Show candidates. */
 
@@ -229,41 +220,41 @@ void structPitchEditor :: v_draw () {
 			double t = Sampled_indexToX (pitch, it);
 			double f = frame -> candidate [1]. frequency;
 			if (f > 0.0 && f < pitch -> ceiling) {
-				Graphics_setColour (our d_graphics, Graphics_MAGENTA);
-				Graphics_fillCircle_mm (our d_graphics, t, f, RADIUS * 2);
+				Graphics_setColour (our d_graphics.get(), Graphics_MAGENTA);
+				Graphics_fillCircle_mm (our d_graphics.get(), t, f, RADIUS * 2.0);
 			}
-			Graphics_setColour (our d_graphics, Graphics_BLACK);
-			Graphics_setTextAlignment (our d_graphics, Graphics_CENTRE, Graphics_HALF);
+			Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+			Graphics_setTextAlignment (our d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
 			for (int icand = 1; icand <= frame -> nCandidates; icand ++) {
 				int strength = (int) floor (10 * frame -> candidate [icand]. strength + 0.5);
 				f = frame -> candidate [icand]. frequency;
 				if (strength > 9) strength = 9;
-				if (f > 0 && f <= pitch -> ceiling) Graphics_text (our d_graphics, t, f, strength);
+				if (f > 0 && f <= pitch -> ceiling) Graphics_text (our d_graphics.get(), t, f, strength);
 			}
 		}
-		Graphics_resetViewport (our d_graphics, previous);
+		Graphics_resetViewport (our d_graphics.get(), previous);
 	}
 
 	/*
 	 * Show intensity.
 	 */
 	{
-		Graphics_Viewport previous = Graphics_insetViewport (our d_graphics, 0, 1, 1 - dyIntens, 1);
-		Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, 0, 1);
-		Graphics_setColour (our d_graphics, Graphics_BLACK);
-		Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-		Graphics_text (our d_graphics, our d_startWindow, 0.5, U"intens");
-		Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_HALF);
-		Graphics_text (our d_graphics, our d_endWindow, 0.5, U"intens");
-		Graphics_setTextAlignment (our d_graphics, Graphics_CENTRE, Graphics_HALF);
+		Graphics_Viewport previous = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 1.0 - dyIntens, 1.0);
+		Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0.0, 1.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), our d_startWindow, 0.5, U"intens");
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), our d_endWindow, 0.5, U"intens");
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
 		for (it = it1; it <= it2; it ++) {
 			Pitch_Frame frame = & pitch -> frame [it];
 			double t = Sampled_indexToX (pitch, it);
-			int strength = (int) floor (10 * frame -> intensity + 0.5);   // map 0.0-1.0 to 0-9
+			long strength = lround (10 * frame -> intensity + 0.5);   // map 0.0-1.0 to 0-9
 			if (strength > 9) strength = 9;
-			Graphics_text (our d_graphics, t, 0.5, strength);
+			Graphics_text (our d_graphics.get(), t, 0.5,   strength);
 		}
-		Graphics_resetViewport (our d_graphics, previous);
+		Graphics_resetViewport (our d_graphics.get(), previous);
 	}
 
 	if (it1 > 1) it1 -= 1;
@@ -273,13 +264,13 @@ void structPitchEditor :: v_draw () {
 	 * Show voicelessness.
 	 */
 	{
-		Graphics_Viewport previous = Graphics_insetViewport (our d_graphics, 0, 1, 0, dyUnv);
-		Graphics_setColour (our d_graphics, Graphics_BLUE);
-		Graphics_line (our d_graphics, our d_startWindow, 1, our d_endWindow, 1);
-		Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-		Graphics_text (our d_graphics, our d_startWindow, 0.5, U"Unv");
-		Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_HALF);
-		Graphics_text (our d_graphics, our d_endWindow, 0.5, U"Unv");
+		Graphics_Viewport previous = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 0.0, dyUnv);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
+		Graphics_line (our d_graphics.get(), our d_startWindow, 1.0, our d_endWindow, 1.0);
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), our d_startWindow, 0.5, U"Unv");
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), our d_endWindow, 0.5, U"Unv");
 		for (it = it1; it <= it2; it ++) {
 			Pitch_Frame frame = & pitch -> frame [it];
 			double t = Sampled_indexToX (pitch, it), tleft = t - 0.5 * pitch -> dx, tright = t + 0.5 * pitch -> dx;
@@ -287,10 +278,10 @@ void structPitchEditor :: v_draw () {
 			if ((f > 0.0 && f < pitch -> ceiling) || tright <= our d_startWindow || tleft >= our d_endWindow) continue;
 			if (tleft < our d_startWindow) tleft = our d_startWindow;
 			if (tright > our d_endWindow) tright = our d_endWindow;
-			Graphics_fillRectangle (our d_graphics, tleft, tright, 0, 1);
+			Graphics_fillRectangle (our d_graphics.get(), tleft, tright, 0.0, 1.0);
 		}
-		Graphics_setColour (our d_graphics, Graphics_BLACK);
-		Graphics_resetViewport (our d_graphics, previous);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+		Graphics_resetViewport (our d_graphics.get(), previous);
 	}
 }
 
@@ -298,10 +289,10 @@ void structPitchEditor :: v_play (double a_tmin, double a_tmax) {
 	Pitch_hum ((Pitch) our data, a_tmin, a_tmax);
 }
 
-int structPitchEditor :: v_click (double xWC, double yWC, bool dummy) {
+bool structPitchEditor :: v_click (double xWC, double yWC, bool dummy) {
 	Pitch pitch = (Pitch) our data;
-	double dyUnv = Graphics_dyMMtoWC (d_graphics, HEIGHT_UNV);
-	double dyIntens = Graphics_dyMMtoWC (d_graphics, HEIGHT_INTENS);
+	double dyUnv = Graphics_dyMMtoWC (d_graphics.get(), HEIGHT_UNV);
+	double dyIntens = Graphics_dyMMtoWC (d_graphics.get(), HEIGHT_INTENS);
 	double frequency = (yWC - dyUnv) / (1 - dyIntens - dyUnv) * pitch -> ceiling, tmid;
 	double minimumDf = 1e30;
 	int cand, bestCandidate = -1;
@@ -324,7 +315,7 @@ int structPitchEditor :: v_click (double xWC, double yWC, bool dummy) {
 	if (bestCandidate != -1) {
 		double bestFrequency = bestFrame -> candidate [bestCandidate]. frequency;
 		double distanceWC = (frequency - bestFrequency) / pitch -> ceiling * (1 - dyIntens - dyUnv);
-		double dx_mm = Graphics_dxWCtoMM (our d_graphics, xWC - tmid), dy_mm = Graphics_dyWCtoMM (our d_graphics, distanceWC);
+		double dx_mm = Graphics_dxWCtoMM (our d_graphics.get(), xWC - tmid), dy_mm = Graphics_dyWCtoMM (our d_graphics.get(), distanceWC);
 		if (bestFrequency < pitch -> ceiling &&   // above ceiling: ignore
 		    ((bestFrequency <= 0.0 && fabs (xWC - tmid) <= 0.5 * pitch -> dx && frequency <= 0.0) ||   // voiceless: click within frame
 		     (bestFrequency > 0.0 && dx_mm * dx_mm + dy_mm * dy_mm <= RADIUS * RADIUS)))   // voiced: click within circle
@@ -336,7 +327,7 @@ int structPitchEditor :: v_click (double xWC, double yWC, bool dummy) {
 			FunctionEditor_redraw (this);
 			Editor_broadcastDataChanged (this);
 			our d_startSelection = our d_endSelection = tmid;   // cursor will snap to candidate
-			return 1;
+			return FunctionEditor_UPDATE_NEEDED;
 		} else {
 			return PitchEditor_Parent :: v_click (xWC, yWC, dummy);   // move cursor or drag selection
 		}
@@ -344,11 +335,11 @@ int structPitchEditor :: v_click (double xWC, double yWC, bool dummy) {
 	return PitchEditor_Parent :: v_click (xWC, yWC, dummy);   // move cursor or drag selection
 }
 
-PitchEditor PitchEditor_create (const char32 *title, Pitch pitch) {
+autoPitchEditor PitchEditor_create (const char32 *title, Pitch pitch) {
 	try {
 		autoPitchEditor me = Thing_new (PitchEditor);
-		FunctionEditor_init (me.peek(), title, pitch);
-		return me.transfer();
+		FunctionEditor_init (me.get(), title, pitch);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Pitch window not created.");
 	}
diff --git a/fon/PitchEditor.h b/fon/PitchEditor.h
index 32da594..5173134 100644
--- a/fon/PitchEditor.h
+++ b/fon/PitchEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -31,11 +30,11 @@ Thing_define (PitchEditor, FunctionEditor) {
 		override;
 	void v_play (double tmin, double tmax)
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 };
 
-PitchEditor PitchEditor_create (const char32 *title, Pitch pitch);
+autoPitchEditor PitchEditor_create (const char32 *title, Pitch pitch);
 
 /* End of file PitchEditor.h */
 #endif
diff --git a/fon/PitchTier.cpp b/fon/PitchTier.cpp
index 0f530c8..24b22fc 100644
--- a/fon/PitchTier.cpp
+++ b/fon/PitchTier.cpp
@@ -1,20 +1,19 @@
 /* PitchTier.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTier.h"
@@ -23,21 +22,21 @@
 Thing_implement (PitchTier, RealTier, 0);
 
 void structPitchTier :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
 	MelderInfo_writeLine (U"   Total duration: ", xmax - xmin, U" seconds");
-	MelderInfo_writeLine (U"Number of points: ", points -> size);
+	MelderInfo_writeLine (U"Number of points: ", points.size);
 	MelderInfo_writeLine (U"Minimum pitch value: ", RealTier_getMinimumValue (this), U" Hz");
 	MelderInfo_writeLine (U"Maximum pitch value: ", RealTier_getMaximumValue (this), U" Hz");
 }
 
-PitchTier PitchTier_create (double tmin, double tmax) {
+autoPitchTier PitchTier_create (double tmin, double tmax) {
 	try {
 		autoPitchTier me = Thing_new (PitchTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PitchTier not created.");
 	}
@@ -49,9 +48,10 @@ void PitchTier_draw (PitchTier me, Graphics g, double tmin, double tmax,
 	RealTier_draw (me, g, tmin, tmax, fmin, fmax, garnish, method, U"Frequency (Hz)");
 }
 
-PitchTier PointProcess_upto_PitchTier (PointProcess me, double frequency) {
+autoPitchTier PointProcess_upto_PitchTier (PointProcess me, double frequency) {
 	try {
-		return (PitchTier) PointProcess_upto_RealTier (me, frequency, classPitchTier);
+		autoPitchTier thee = PointProcess_upto_RealTier (me, frequency, classPitchTier).static_cast_move<structPitchTier>();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PitchTier.");
 	}
@@ -61,11 +61,11 @@ void PitchTier_stylize (PitchTier me, double frequencyResolution, int useSemiton
 	double dfmin;
 	for (;;) {
 		long i, imin = 0;
-		dfmin = 1e300;
-		for (i = 2; i <= my points -> size - 1; i ++) {
-			RealPoint pm = (RealPoint) my points -> item [i];
-			RealPoint pl = (RealPoint) my points -> item [i - 1];
-			RealPoint pr = (RealPoint) my points -> item [i + 1];
+		dfmin = 1e308;
+		for (i = 2; i <= my points.size - 1; i ++) {
+			RealPoint pm = my points.at [i];
+			RealPoint pl = my points.at [i - 1];
+			RealPoint pr = my points.at [i + 1];
 			double expectedFrequency = pl -> value + (pr -> value - pl -> value) /
 				 (pr -> number - pl -> number) * (pm -> number - pl -> number);
 			double df = useSemitones ?
@@ -77,16 +77,16 @@ void PitchTier_stylize (PitchTier me, double frequencyResolution, int useSemiton
 			}
 		}
 		if (imin == 0 || dfmin > frequencyResolution) break;
-		Collection_removeItem (my points, imin);
+		my points. removeItem (imin);
 	}
 }
 
-static void PitchTier_writeToSpreadsheetFile (PitchTier me, MelderFile file, int hasHeader) {
+static void PitchTier_writeToSpreadsheetFile (PitchTier me, MelderFile file, bool hasHeader) {
 	autofile f = Melder_fopen (file, "w");
 	if (hasHeader)
-		fprintf (f, "\"ooTextFile\"\n\"PitchTier\"\n%.17g %.17g %ld\n", my xmin, my xmax, my points -> size);
-	for (long i = 1; i <= my points -> size; i ++) {
-		RealPoint point = (RealPoint) my points -> item [i];
+		fprintf (f, "\"ooTextFile\"\n\"PitchTier\"\n%.17g %.17g %ld\n", my xmin, my xmax, my points.size);
+	for (long i = 1; i <= my points.size; i ++) {
+		RealPoint point = my points.at [i];
 		fprintf (f, "%.17g\t%.17g\n", point -> number, point -> value);
 	}
 	f.close (file);
@@ -94,7 +94,7 @@ static void PitchTier_writeToSpreadsheetFile (PitchTier me, MelderFile file, int
 
 void PitchTier_writeToPitchTierSpreadsheetFile (PitchTier me, MelderFile file) {
 	try {
-		PitchTier_writeToSpreadsheetFile (me, file, TRUE);
+		PitchTier_writeToSpreadsheetFile (me, file, true);
 	} catch (MelderError) {
 		Melder_throw (me, U" not written to tab-separated PitchTier file.");
 	}
@@ -102,7 +102,7 @@ void PitchTier_writeToPitchTierSpreadsheetFile (PitchTier me, MelderFile file) {
 
 void PitchTier_writeToHeaderlessSpreadsheetFile (PitchTier me, MelderFile file) {
 	try {
-		PitchTier_writeToSpreadsheetFile (me, file, FALSE);
+		PitchTier_writeToSpreadsheetFile (me, file, false);
 	} catch (MelderError) {
 		Melder_throw (me, U" not written to tab-separated table file.");
 	}
@@ -110,8 +110,8 @@ void PitchTier_writeToHeaderlessSpreadsheetFile (PitchTier me, MelderFile file)
 
 void PitchTier_shiftFrequencies (PitchTier me, double tmin, double tmax, double shift, int unit) {
 	try {
-		for (long i = 1; i <= my points -> size; i ++) {
-			RealPoint point = (RealPoint) my points -> item [i];
+		for (long i = 1; i <= my points.size; i ++) {
+			RealPoint point = my points.at [i];
 			double frequency = point -> value;
 			if (point -> number < tmin || point -> number > tmax) continue;
 			switch (unit) {
@@ -144,8 +144,8 @@ void PitchTier_shiftFrequencies (PitchTier me, double tmin, double tmax, double
 
 void PitchTier_multiplyFrequencies (PitchTier me, double tmin, double tmax, double factor) {
 	Melder_assert (factor > 0.0);
-	for (long i = 1; i <= my points -> size; i ++) {
-		RealPoint point = (RealPoint) my points -> item [i];
+	for (long i = 1; i <= my points.size; i ++) {
+		RealPoint point = my points.at [i];
 		if (point -> number < tmin || point -> number > tmax) continue;
 		point -> value *= factor;
 	}
diff --git a/fon/PitchTier.h b/fon/PitchTier.h
index eae4df2..10db8d5 100644
--- a/fon/PitchTier.h
+++ b/fon/PitchTier.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -32,12 +31,12 @@ Thing_define (PitchTier, RealTier) {
 		override { return MelderQuantity_TIME_SECONDS; }
 };
 
-PitchTier PitchTier_create (double tmin, double tmax);
+autoPitchTier PitchTier_create (double tmin, double tmax);
 /*
 	Postconditions:
 		result -> xmin == tmin;
 		result -> xmax == tmax;
-		result -> points -> size == 0;
+		result -> points.size == 0;
 */
 
 void PitchTier_shiftFrequencies (PitchTier me, double tmin, double tmax, double shift, int units);
@@ -46,7 +45,7 @@ void PitchTier_multiplyFrequencies (PitchTier me, double tmin, double tmax, doub
 void PitchTier_draw (PitchTier me, Graphics g, double tmin, double tmax,
 	double fmin, double fmax, int garnish, const char32 *method);
 
-PitchTier PointProcess_upto_PitchTier (PointProcess me, double frequency);
+autoPitchTier PointProcess_upto_PitchTier (PointProcess me, double frequency);
 void PitchTier_stylize (PitchTier me, double frequencyResolution, int useSemitones);
 
 void PitchTier_writeToPitchTierSpreadsheetFile (PitchTier me, MelderFile file);
diff --git a/fon/PitchTierEditor.cpp b/fon/PitchTierEditor.cpp
index 6ac7460..c469d39 100644
--- a/fon/PitchTierEditor.cpp
+++ b/fon/PitchTierEditor.cpp
@@ -1,20 +1,19 @@
 /* PitchTierEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,20152016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTierEditor.h"
@@ -23,8 +22,8 @@
 
 Thing_implement (PitchTierEditor, RealTierEditor, 0);
 
-static void menu_cb_PitchTierEditorHelp (EDITOR_ARGS) { EDITOR_IAM (PitchTierEditor); Melder_help (U"PitchTierEditor"); }
-static void menu_cb_PitchTierHelp (EDITOR_ARGS) { EDITOR_IAM (PitchTierEditor); Melder_help (U"PitchTier"); }
+static void menu_cb_PitchTierEditorHelp (PitchTierEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"PitchTierEditor"); }
+static void menu_cb_PitchTierHelp (PitchTierEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"PitchTier"); }
 
 void structPitchTierEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	PitchTierEditor_Parent :: v_createHelpMenuItems (menu);
@@ -36,15 +35,15 @@ void structPitchTierEditor :: v_play (double a_tmin, double a_tmax) {
 	if (d_sound.data) {
 		Sound_playPart (d_sound.data, a_tmin, a_tmax, theFunctionEditor_playCallback, this);
 	} else {
-		PitchTier_playPart ((PitchTier) data, a_tmin, a_tmax, FALSE);
+		PitchTier_playPart ((PitchTier) data, a_tmin, a_tmax, false);
 	}
 }
 
-PitchTierEditor PitchTierEditor_create (const char32 *title, PitchTier pitch, Sound sound, bool ownSound) {
+autoPitchTierEditor PitchTierEditor_create (const char32 *title, PitchTier pitch, Sound sound, bool ownSound) {
 	try {
 		autoPitchTierEditor me = Thing_new (PitchTierEditor);
-		RealTierEditor_init (me.peek(), title, (RealTier) pitch, sound, ownSound);
-		return me.transfer();
+		RealTierEditor_init (me.get(), title, pitch, sound, ownSound);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PitchTier window not created.");
 	}
diff --git a/fon/PitchTierEditor.h b/fon/PitchTierEditor.h
index c81bb57..74fedfe 100644
--- a/fon/PitchTierEditor.h
+++ b/fon/PitchTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -56,9 +55,9 @@ Thing_define (PitchTierEditor, RealTierEditor) {
 		override { return U"Maximum frequency"; }
 };
 
-PitchTierEditor PitchTierEditor_create (const char32 *title,
+autoPitchTierEditor PitchTierEditor_create (const char32 *title,
 	PitchTier pitch,
-	Sound sound,   // may be NULL
+	Sound sound,   // may be null
 	bool ownSound);
 
 /* End of file PitchTierEditor.h */
diff --git a/fon/PitchTier_to_PointProcess.cpp b/fon/PitchTier_to_PointProcess.cpp
index 2bf7caf..025f327 100644
--- a/fon/PitchTier_to_PointProcess.cpp
+++ b/fon/PitchTier_to_PointProcess.cpp
@@ -1,45 +1,38 @@
 /* PitchTier_to_PointProcess.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2007/08/12 wchar
- * pb 2011/06/05
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTier_to_PointProcess.h"
 #include "Pitch_to_PitchTier.h"
 
-PointProcess PitchTier_to_PointProcess (PitchTier me) {
+autoPointProcess PitchTier_to_PointProcess (PitchTier me) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 1000);
 		double area = 0.5;   // imagine an event half a period before the beginning
-		long size = my points -> size;
-		if (size == 0) return thee.transfer();
+		long size = my points.size;
+		if (size == 0) return thee;
 		for (long interval = 0; interval <= size; interval ++) {
-			double t1 = interval == 0 ? my xmin : ((RealPoint) my points -> item [interval]) -> number;
+			double t1 = ( interval == 0 ? my xmin : my points.at [interval] -> number );
 			Melder_assert (NUMdefined (t1));
-			double t2 = interval == size ? my xmax : ((RealPoint) my points -> item [interval + 1]) -> number;
+			double t2 = ( interval == size ? my xmax : my points.at [interval + 1] -> number );
 			Melder_assert (NUMdefined (t2));
-			double f1 = ((RealPoint) my points -> item [interval == 0 ? 1 : interval]) -> value;
+			double f1 = my points.at [interval == 0 ? 1 : interval] -> value;
 			Melder_assert (NUMdefined (f1));
-			double f2 = ((RealPoint) my points -> item [interval == size ? size : interval + 1]) -> value;
+			double f2 = my points.at [interval == size ? size : interval + 1] -> value;
 			Melder_assert (NUMdefined (f2));
 			area += (t2 - t1) * 0.5 * (f1 + f2);
 			while (area >= 1.0) {
@@ -47,16 +40,16 @@ PointProcess PitchTier_to_PointProcess (PitchTier me) {
 				area -= 1.0;
 				discriminant = f2 * f2 - 2.0 * area * slope;
 				if (discriminant < 0.0) discriminant = 0.0;   // catch rounding errors
-				PointProcess_addPoint (thee.peek(), t2 - 2.0 * area / (f2 + sqrt (discriminant)));
+				PointProcess_addPoint (thee.get(), t2 - 2.0 * area / (f2 + sqrt (discriminant)));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PointProcess.");
 	}
 }
 
-PointProcess PitchTier_Pitch_to_PointProcess (PitchTier me, Pitch vuv) {
+autoPointProcess PitchTier_Pitch_to_PointProcess (PitchTier me, Pitch vuv) {
 	try {
 		autoPointProcess fullPoint = PitchTier_to_PointProcess (me);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, fullPoint -> maxnt);
@@ -66,10 +59,10 @@ PointProcess PitchTier_Pitch_to_PointProcess (PitchTier me, Pitch vuv) {
 		for (long i = 1; i <= fullPoint -> nt; i ++) {
 			double t = fullPoint -> t [i];
 			if (Pitch_isVoiced_t (vuv, t)) {
-				PointProcess_addPoint (thee.peek(), t);
+				PointProcess_addPoint (thee.get(), t);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", vuv, U": not converted to PointProcess.");
 	}
@@ -87,7 +80,7 @@ static int PointProcess_isVoiced_t (PointProcess me, double t, double maxT) {
 	return 0;
 }
 
-PointProcess PitchTier_Point_to_PointProcess (PitchTier me, PointProcess vuv, double maxT) {
+autoPointProcess PitchTier_Point_to_PointProcess (PitchTier me, PointProcess vuv, double maxT) {
 	try {
 		autoPointProcess fullPoint = PitchTier_to_PointProcess (me);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, fullPoint -> maxnt);
@@ -97,62 +90,62 @@ PointProcess PitchTier_Point_to_PointProcess (PitchTier me, PointProcess vuv, do
 		for (long i = 1; i <= fullPoint -> nt; i ++) {
 			double t = fullPoint -> t [i];
 			if (PointProcess_isVoiced_t (vuv, t, maxT)) {
-				PointProcess_addPoint (thee.peek(), t);
+				PointProcess_addPoint (thee.get(), t);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", vuv, U": not converted to PointProcess.");
 	}
 }
 
-PitchTier PointProcess_to_PitchTier (PointProcess me, double maximumInterval) {
+autoPitchTier PointProcess_to_PitchTier (PointProcess me, double maximumInterval) {
 	try {
 		autoPitchTier thee = PitchTier_create (my xmin, my xmax);
 		for (long i = 1; i < my nt; i ++) {
 			double interval = my t [i + 1] - my t [i];
 			if (interval <= maximumInterval) {
-				RealTier_addPoint (thee.peek(), my t [i] + 0.5 * interval, 1.0 / interval);
+				RealTier_addPoint (thee.get(), my t [i] + 0.5 * interval, 1.0 / interval);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PitchTier.");
 	}
 }
 
-PitchTier Pitch_PointProcess_to_PitchTier (Pitch me, PointProcess pp) {
+autoPitchTier Pitch_PointProcess_to_PitchTier (Pitch me, PointProcess pp) {
 	try {
 		autoPitchTier temp = Pitch_to_PitchTier (me);
-		autoPitchTier thee = PitchTier_PointProcess_to_PitchTier (temp.peek(), pp);
-		return thee.transfer();
+		autoPitchTier thee = PitchTier_PointProcess_to_PitchTier (temp.get(), pp);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", pp, U": not converted to PitchTier.");
 	}
 }
 
-PitchTier PitchTier_PointProcess_to_PitchTier (PitchTier me, PointProcess pp) {
+autoPitchTier PitchTier_PointProcess_to_PitchTier (PitchTier me, PointProcess pp) {
 	try {
-		if (my points -> size == 0) Melder_throw (U"No pitch points.");
+		if (my points.size == 0) Melder_throw (U"No pitch points.");
 		autoPitchTier thee = PitchTier_create (pp -> xmin, pp -> xmax);
 		for (long i = 1; i <= pp -> nt; i ++) {
 			double time = pp -> t [i];
 			double value = RealTier_getValueAtTime (me, time);
-			RealTier_addPoint (thee.peek(), time, value);
+			RealTier_addPoint (thee.get(), time, value);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", pp, U": not converted to PitchTier.");
 	}
 }
 
-TableOfReal PitchTier_downto_TableOfReal (PitchTier me, int useSemitones) {
+autoTableOfReal PitchTier_downto_TableOfReal (PitchTier me, int useSemitones) {
 	try {
 		autoTableOfReal thee = RealTier_downto_TableOfReal (me, U"Time", U"F0");
 		if (useSemitones)
 			for (long i = 1; i <= thy numberOfRows; i ++)
 				thy data [i] [2] = NUMhertzToSemitones (thy data [i] [2]);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
diff --git a/fon/PitchTier_to_PointProcess.h b/fon/PitchTier_to_PointProcess.h
index d1a4c91..c29cb27 100644
--- a/fon/PitchTier_to_PointProcess.h
+++ b/fon/PitchTier_to_PointProcess.h
@@ -1,40 +1,39 @@
 /* PitchTier_to_PointProcess.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTier.h"
 #include "PointProcess.h"
 #include "Pitch.h"
 
-PointProcess PitchTier_to_PointProcess (PitchTier me);
+autoPointProcess PitchTier_to_PointProcess (PitchTier me);
 
-PointProcess PitchTier_Pitch_to_PointProcess (PitchTier me, Pitch vuv);
+autoPointProcess PitchTier_Pitch_to_PointProcess (PitchTier me, Pitch vuv);
 /* Keeps only the parts that are voiced according to 'vuv'. */
 /* Voiced means: inside voiced frame of 'pitch'. */
 
-PointProcess PitchTier_Point_to_PointProcess (PitchTier me, PointProcess vuv, double maxT);
+autoPointProcess PitchTier_Point_to_PointProcess (PitchTier me, PointProcess vuv, double maxT);
 /* Keeps only the parts that are voiced according to 'vuv'. */
 /* Voiced means: within an interval no longer than 'maxT', */
 /* or within half an adjacent short-enough interval from any pulse. */
 
-PitchTier PointProcess_to_PitchTier (PointProcess me, double maximumInterval);
-PitchTier Pitch_PointProcess_to_PitchTier (Pitch me, PointProcess pp);
-PitchTier PitchTier_PointProcess_to_PitchTier (PitchTier me, PointProcess pp);
-TableOfReal PitchTier_downto_TableOfReal (PitchTier me, int useSemitones);
+autoPitchTier PointProcess_to_PitchTier (PointProcess me, double maximumInterval);
+autoPitchTier Pitch_PointProcess_to_PitchTier (Pitch me, PointProcess pp);
+autoPitchTier PitchTier_PointProcess_to_PitchTier (PitchTier me, PointProcess pp);
+autoTableOfReal PitchTier_downto_TableOfReal (PitchTier me, int useSemitones);
 
 /* End of file PitchTier_to_PointProcess.h */
diff --git a/fon/PitchTier_to_Sound.cpp b/fon/PitchTier_to_Sound.cpp
index cf2db95..5324d80 100644
--- a/fon/PitchTier_to_Sound.cpp
+++ b/fon/PitchTier_to_Sound.cpp
@@ -1,93 +1,83 @@
 /* PitchTier_to_Sound.cpp
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2004/10/03 sine wave generation
- * pb 2005/07/08 PitchTier_to_Sound_phonation
- * pb 2006/12/30 new Sound_create API
- * pb 2007/02/25 changed default sampling frequency to 44100 Hz
- * pb 2008/01/19 double
- * pb 2011/06/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTier_to_Sound.h"
 #include "PitchTier_to_PointProcess.h"
 #include "PointProcess_and_Sound.h"
 
-Sound PitchTier_to_Sound_pulseTrain (PitchTier me, double samplingFrequency,
-	 double adaptFactor, double adaptTime, long interpolationDepth, int hum)
+autoSound PitchTier_to_Sound_pulseTrain (PitchTier me, double samplingFrequency,
+	 double adaptFactor, double adaptTime, long interpolationDepth, bool hum)
 {
-	static double formant [1 + 6] = { 0, 600, 1400, 2400, 3400, 4500, 5500 };
-	static double bandwidth [1 + 6] = { 0, 50, 100, 200, 300, 400, 500 };
+	static double formant [1 + 6] = { 0.0, 600.0, 1400.0, 2400.0, 3400.0, 4500.0, 5500.0 };
+	static double bandwidth [1 + 6] = { 0.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 };
 	try {
 		autoPointProcess point = PitchTier_to_PointProcess (me);
-		autoSound sound = PointProcess_to_Sound_pulseTrain (point.peek(), samplingFrequency, adaptFactor, adaptTime, interpolationDepth);
+		autoSound sound = PointProcess_to_Sound_pulseTrain (point.get(), samplingFrequency, adaptFactor, adaptTime, interpolationDepth);
 		if (hum) {
-			Sound_filterWithFormants (sound.peek(), 0, 0, 6, formant, bandwidth);
+			Sound_filterWithFormants (sound.get(), 0.0, 0.0, 6, formant, bandwidth);
 		}
-		return sound.transfer();
+		return sound;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (pulse train).");
 	}
 }
 
-Sound PitchTier_to_Sound_phonation (PitchTier me, double samplingFrequency,
-	 double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2, int hum)
+autoSound PitchTier_to_Sound_phonation (PitchTier me, double samplingFrequency,
+	 double adaptFactor, double maximumPeriod, double openPhase, double collisionPhase, double power1, double power2, bool hum)
 {
-	static double formant [1 + 6] = { 0, 600, 1400, 2400, 3400, 4500, 5500 };
-	static double bandwidth [1 + 6] = { 0, 50, 100, 200, 300, 400, 500 };
+	static double formant [1 + 6] = { 0.0, 600.0, 1400.0, 2400.0, 3400.0, 4500.0, 5500.0 };
+	static double bandwidth [1 + 6] = { 0.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 };
 	try {
 		autoPointProcess point = PitchTier_to_PointProcess (me);
-		autoSound sound = PointProcess_to_Sound_phonation (point.peek(), samplingFrequency, adaptFactor,
+		autoSound sound = PointProcess_to_Sound_phonation (point.get(), samplingFrequency, adaptFactor,
 			maximumPeriod, openPhase, collisionPhase, power1, power2);
 		if (hum) {
-			Sound_filterWithFormants (sound.peek(), 0, 0, 6, formant, bandwidth);
+			Sound_filterWithFormants (sound.get(), 0.0, 0.0, 6, formant, bandwidth);
 		}
-		return sound.transfer();
+		return sound;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (phonation).");
 	}
 }
 
-void PitchTier_playPart (PitchTier me, double tmin, double tmax, int hum) {
+void PitchTier_playPart (PitchTier me, double tmin, double tmax, bool hum) {
 	try {
 		autoSound sound = PitchTier_to_Sound_pulseTrain (me, 44100.0, 0.7, 0.05, 30, hum);
-		Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+		Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
 }
 
 void PitchTier_play (PitchTier me) {
-	PitchTier_playPart (me, my xmin, my xmax, FALSE);
+	PitchTier_playPart (me, my xmin, my xmax, false);
 }
 
 void PitchTier_hum (PitchTier me) {
-	PitchTier_playPart (me, my xmin, my xmax, TRUE);
+	PitchTier_playPart (me, my xmin, my xmax, true);
 }
 
-Sound PitchTier_to_Sound_sine (PitchTier me, double tmin, double tmax, double samplingFrequency) {
+autoSound PitchTier_to_Sound_sine (PitchTier me, double tmin, double tmax, double samplingFrequency) {
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;
 		long numberOfSamples = 1 + (long) floor ((my xmax - my xmin) * samplingFrequency);   // >= 1
 		double samplingPeriod = 1.0 / samplingFrequency;
-		double tmid = (tmin + tmax) / 2;
+		double tmid = (tmin + tmax) / 2.0;
 		double t1 = tmid - 0.5 * (numberOfSamples - 1) * samplingPeriod;
 		autoSound thee = Sound_create (1, tmin, tmax, numberOfSamples, samplingPeriod, t1);
 		double phase = 0.0;
@@ -97,7 +87,7 @@ Sound PitchTier_to_Sound_sine (PitchTier me, double tmin, double tmax, double sa
 			phase += fleft * thy dx;
 			thy z [1] [isamp] = 0.5 * sin (2.0 * NUMpi * phase);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (sine).");
 	}
@@ -107,7 +97,7 @@ void PitchTier_playPart_sine (PitchTier me, double tmin, double tmax) {
 	try {
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindowing
 		autoSound sound = PitchTier_to_Sound_sine (me, tmin, tmax, 44100.0);
-		Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+		Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
diff --git a/fon/PitchTier_to_Sound.h b/fon/PitchTier_to_Sound.h
index 9c17bab..56e665f 100644
--- a/fon/PitchTier_to_Sound.h
+++ b/fon/PitchTier_to_Sound.h
@@ -1,37 +1,36 @@
 /* PitchTier_to_Sound.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PitchTier.h"
 #include "Sound.h"
 
-Sound PitchTier_to_Sound_pulseTrain (PitchTier me, double samplingFrequency,
+autoSound PitchTier_to_Sound_pulseTrain (PitchTier me, double samplingFrequency,
 	 double adaptFactor, double adaptTime, long interpolationDepth,
-	 int hum);
-Sound PitchTier_to_Sound_phonation (PitchTier me, double samplingFrequency,
+	 bool hum);
+autoSound PitchTier_to_Sound_phonation (PitchTier me, double samplingFrequency,
 	 double adaptFactor, double maximumPeriod,
 	 double openPhase, double collisionPhase, double power1, double power2,
-	 int hum);
-void PitchTier_playPart (PitchTier me, double tmin, double tmax, int hum);
+	 bool hum);
+void PitchTier_playPart (PitchTier me, double tmin, double tmax, bool hum);
 void PitchTier_play (PitchTier me);
 void PitchTier_hum (PitchTier me);
 
-Sound PitchTier_to_Sound_sine (PitchTier me, double tmin, double tmax, double samplingFrequency);
+autoSound PitchTier_to_Sound_sine (PitchTier me, double tmin, double tmax, double samplingFrequency);
 void PitchTier_playPart_sine (PitchTier me, double tmin, double tmax);
 
 /* End of file PitchTier_to_Sound.h */
diff --git a/fon/Pitch_AnyTier_to_PitchTier.cpp b/fon/Pitch_AnyTier_to_PitchTier.cpp
index 1eb2a96..6280520 100644
--- a/fon/Pitch_AnyTier_to_PitchTier.cpp
+++ b/fon/Pitch_AnyTier_to_PitchTier.cpp
@@ -1,35 +1,27 @@
 /* Pitch_AnyTier_to_PitchTier.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2005/06/16 units
- * pb 2011/06/04 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch_AnyTier_to_PitchTier.h"
 #include "Pitch_to_PitchTier.h"
 
-PitchTier PitchTier_AnyTier_to_PitchTier (PitchTier pitch, AnyTier tier) {
+autoPitchTier PitchTier_AnyTier_to_PitchTier (PitchTier pitch, AnyTier tier) {
 	try {
-		SortedSetOfDouble points = tier -> points;
-		if (pitch -> points -> size == 0) Melder_throw (U"No pitch points.");
+		if (pitch -> points.size == 0) Melder_throw (U"No pitch points.");
 
 		/*
 		 * Result's domain is a union of both domains.
@@ -41,26 +33,24 @@ PitchTier PitchTier_AnyTier_to_PitchTier (PitchTier pitch, AnyTier tier) {
 		/*
 		 * Copy pitch's frequencies at tier's points to the resulting PitchTier.
 		 */
-		for (long ipoint = 1; ipoint <= points -> size; ipoint ++) {
-			AnyPoint point = (AnyPoint) points -> item [ipoint];
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			AnyPoint point = tier -> points.at [ipoint];
 			double time = point -> number;
 			double frequency = RealTier_getValueAtTime (pitch, time);
-			RealTier_addPoint (thee.peek(), time, frequency);
+			RealTier_addPoint (thee.get(), time, frequency);
 		}
 
-		return thee.peek();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (pitch, U" & ", tier, U": not converted to PitchTier.");
 	}
 }
 
-PitchTier Pitch_AnyTier_to_PitchTier (Pitch pitch, AnyTier tier, int checkMethod) {
+autoPitchTier Pitch_AnyTier_to_PitchTier (Pitch pitch, AnyTier tier, int checkMethod) {
 	try {
-		SortedSetOfDouble points = tier -> points;
 		if (checkMethod == 2) {
 			autoPitchTier temp = Pitch_to_PitchTier (pitch);
-			autoPitchTier thee = PitchTier_AnyTier_to_PitchTier (temp.peek(), tier);
-			return thee.transfer();
+			return PitchTier_AnyTier_to_PitchTier (temp.get(), tier);
 		}
 
 		/*
@@ -73,16 +63,16 @@ PitchTier Pitch_AnyTier_to_PitchTier (Pitch pitch, AnyTier tier, int checkMethod
 		/*
 		 * Copy pitch's frequencies at tier's points to the resulting PitchTier.
 		 */
-		for (long ipoint = 1; ipoint <= points -> size; ipoint ++) {
-			AnyPoint point = (AnyPoint) points -> item [ipoint];
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			AnyPoint point = tier -> points.at [ipoint];
 			double time = point -> number;
 			double frequency = Pitch_getValueAtTime (pitch, time, kPitch_unit_HERTZ, Pitch_LINEAR);
 			if (frequency == NUMundefined && checkMethod)
 				Melder_throw (U"No periodicity at time ", time, U" seconds.");
-			RealTier_addPoint (thee.peek(), time, frequency);
+			RealTier_addPoint (thee.get(), time, frequency);
 		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (pitch, U" & ", tier, U": not converted to PitchTier.");
 	}
diff --git a/fon/Pitch_AnyTier_to_PitchTier.h b/fon/Pitch_AnyTier_to_PitchTier.h
index 529347c..8060a6b 100644
--- a/fon/Pitch_AnyTier_to_PitchTier.h
+++ b/fon/Pitch_AnyTier_to_PitchTier.h
@@ -1,27 +1,26 @@
 /* Pitch_AnyTier_to_PitchTier.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
 #include "AnyTier.h"
 #include "PitchTier.h"
 
-PitchTier Pitch_AnyTier_to_PitchTier (Pitch pitch, AnyTier tier, int checkMethod);
-PitchTier PitchTier_AnyTier_to_PitchTier (PitchTier pitch, AnyTier tier);
+autoPitchTier Pitch_AnyTier_to_PitchTier (Pitch pitch, AnyTier tier, int checkMethod);
+autoPitchTier PitchTier_AnyTier_to_PitchTier (PitchTier pitch, AnyTier tier);
 
 /* End of file Pitch_AnyTier_to_PitchTier.h */
diff --git a/fon/Pitch_Intensity.cpp b/fon/Pitch_Intensity.cpp
index cfb6488..971d8dc 100644
--- a/fon/Pitch_Intensity.cpp
+++ b/fon/Pitch_Intensity.cpp
@@ -1,61 +1,54 @@
 /* Pitch_Intensity.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2005/03/08 connect
- * pb 2005/06/17 units
- * pb 2011/06/04 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch_Intensity.h"
 
 static void Pitch_getExtrema (Pitch me, double *minimum, double *maximum) {
-	*minimum = 1e30, *maximum = -1e30;
+	*minimum = 1e308, *maximum = -1e308;
 	for (long i = 1; i <= my nx; i ++) {
 		double frequency = my frame [i]. candidate [1]. frequency;
-		if (frequency == 0.0) continue;   /* Voiceless. */
+		if (frequency == 0.0) continue;   // voiceless
 		if (frequency < *minimum) *minimum = frequency;
 		if (frequency > *maximum) *maximum = frequency;
 	}
-	if (*maximum == -1e30) *maximum = 0.0;
-	if (*minimum == 1e30) *minimum = 0.0;
+	if (*maximum == -1e308) *maximum = 0.0;
+	if (*minimum == 1e308) *minimum = 0.0;
 }
 
 void Pitch_Intensity_draw (Pitch pitch, Intensity intensity, Graphics g,
-	double f1, double f2, double s1, double s2, int garnish, int connect)
+	double f1, double f2, double s1, double s2, bool garnish, int connect)
 {
 	if (f2 <= f1) Pitch_getExtrema (pitch, & f1, & f2);
-	if (f1 == 0.0) return;   /* All voiceless. */
+	if (f1 == 0.0) return;   // all voiceless
 	if (f1 == f2) { f1 -= 1.0; f2 += 1.0; }
 	if (s2 <= s1) Matrix_getWindowExtrema (intensity, 0, 0, 1, 1, & s1, & s2);
 	if (s1 == s2) { s1 -= 1.0; s2 += 1.0; }
 	Graphics_setWindow (g, f1, f2, s1, s2);
 	Graphics_setInner (g);
+	double previousX = NUMundefined;
+	double previousY = NUMundefined;
 	long previousI = 0;
-	double previousX = NUMundefined, previousY = NUMundefined;
 	for (long i = 1; i <= pitch -> nx; i ++) {
 		double t = Sampled_indexToX (pitch, i);
 		double x = pitch -> frame [i]. candidate [1]. frequency;
-		double y = Sampled_getValueAtX (intensity, t, Pitch_LEVEL_FREQUENCY, kPitch_unit_HERTZ, TRUE);
+		double y = Sampled_getValueAtX (intensity, t, Pitch_LEVEL_FREQUENCY, kPitch_unit_HERTZ, true);
 		if (x == 0) {
-			continue;   /* Voiceless. */
+			continue;   // voiceless
 		}
 		if (connect & 1) Graphics_speckle (g, x, y);
 		if ((connect & 2) && NUMdefined (previousX)) {
@@ -72,11 +65,43 @@ void Pitch_Intensity_draw (Pitch pitch, Intensity intensity, Graphics g,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Fundamental frequency (Hz)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Intensity (dB)");
-		Graphics_marksLeft (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Fundamental frequency (Hz)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Intensity (dB)");
+		Graphics_marksLeft (g, 2, true, true, false);
+	}
+}
+
+double Pitch_Intensity_getMean (Pitch thee, Intensity me) {
+	long numberOfValidLocalMeasurements = 0;
+	double sumOfLocalValues = 0.0;
+	for (long iframe = 1; iframe <= my nx; iframe ++) {
+		double t = Sampled_indexToX (me, iframe);
+		bool localMeasurentIsValid = Pitch_isVoiced_t (thee, t);
+		if (localMeasurentIsValid) {
+			double localValue = my z [1] [iframe];
+			sumOfLocalValues += localValue;
+			numberOfValidLocalMeasurements += 1;
+		}
+	}
+	return numberOfValidLocalMeasurements > 0 ? sumOfLocalValues / numberOfValidLocalMeasurements : NUMundefined;
+}
+
+double Pitch_Intensity_getMeanAbsoluteSlope (Pitch thee, Intensity me) {
+	long numberOfValidLocalMeasurements = 0;
+	double sumOfLocalAbsoluteSlopes = 0.0;
+	for (long iframe = 1; iframe < my nx; iframe ++) {
+		double t1 = Sampled_indexToX (me, iframe);
+		double t2 = t1 + my dx;
+		bool localMeasurentIsValid = ( Pitch_isVoiced_t (thee, t1) && Pitch_isVoiced_t (thee, t2) );
+		if (localMeasurentIsValid) {
+			double absoluteLocalSlope = fabs (my z [1] [iframe + 1] -  my z [1] [iframe]);
+			sumOfLocalAbsoluteSlopes += absoluteLocalSlope;
+			numberOfValidLocalMeasurements += 1;
+		}
 	}
+	sumOfLocalAbsoluteSlopes /= my dx;   // convert to dB per second
+	return numberOfValidLocalMeasurements > 0 ? sumOfLocalAbsoluteSlopes / numberOfValidLocalMeasurements : NUMundefined;
 }
 
 /* End of file Pitch_Intensity.cpp */
diff --git a/fon/Pitch_Intensity.h b/fon/Pitch_Intensity.h
index bf338f1..187aa80 100644
--- a/fon/Pitch_Intensity.h
+++ b/fon/Pitch_Intensity.h
@@ -1,20 +1,19 @@
 /* Pitch_Intensity.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
@@ -22,6 +21,10 @@
 #include "Graphics.h"
 
 void Pitch_Intensity_draw (Pitch pitch, Intensity intensity, Graphics g,
-	double f1, double f2, double s1, double s2, int garnish, int connect);
+	double f1, double f2, double s1, double s2, bool garnish, int connect);
+
+double Pitch_Intensity_getMean (Pitch thee, Intensity me);
+
+double Pitch_Intensity_getMeanAbsoluteSlope (Pitch pitch, Intensity intensity);
 
 /* End of file Pitch_Intensity.h */
diff --git a/fon/Pitch_def.h b/fon/Pitch_def.h
index 8adf968..6b98623 100644
--- a/fon/Pitch_def.h
+++ b/fon/Pitch_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Attributes:
@@ -69,6 +68,7 @@ oo_DEFINE_STRUCT (Pitch_Frame)
 		oo_DOUBLE (intensity)
 		oo_LONG (nCandidates)
 	#endif
+
 	oo_STRUCT_VECTOR (Pitch_Candidate, candidate, nCandidates)
 
 oo_END_STRUCT (Pitch_Frame)
diff --git a/fon/Pitch_enums.h b/fon/Pitch_enums.h
index 5aa6d5d..0d86417 100644
--- a/fon/Pitch_enums.h
+++ b/fon/Pitch_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kPitch_unit, 0)
diff --git a/fon/Pitch_to_PitchTier.cpp b/fon/Pitch_to_PitchTier.cpp
index 22995e5..ebb9b0e 100644
--- a/fon/Pitch_to_PitchTier.cpp
+++ b/fon/Pitch_to_PitchTier.cpp
@@ -1,32 +1,24 @@
 /* Pitch_to_PitchTier.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1998/03/19
- * pb 2002/07/16 GPL
- * pb 2010/10/19 allow drawing without speckles
- * pb 2011/06/04 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch_to_PitchTier.h"
 
-PitchTier Pitch_to_PitchTier (Pitch me) {
+autoPitchTier Pitch_to_PitchTier (Pitch me) {
 	try {
 		autoPitchTier thee = PitchTier_create (my xmin, my xmax);
 		for (long i = 1; i <= my nx; i ++) {
@@ -37,10 +29,10 @@ PitchTier Pitch_to_PitchTier (Pitch me) {
 			 */
 			if (frequency > 0.0 && frequency < my ceiling) {
 				double time = Sampled_indexToX (me, i);
-				RealTier_addPoint (thee.peek(), time, frequency);
+				RealTier_addPoint (thee.get(), time, frequency);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to PitchTier.");
 	}
@@ -81,7 +73,7 @@ static void Pitch_line (Pitch me, Graphics g, double tmin, double fleft, double
 void PitchTier_Pitch_draw (PitchTier me, Pitch uv, Graphics g,
 	double tmin, double tmax, double fmin, double fmax, int nonPeriodicLineType, int garnish, const char32 *method)
 {
-	long n = my points -> size, imin, imax, i;
+	long n = my points.size, imin, imax, i;
 	if (nonPeriodicLineType == 0) {
 		PitchTier_draw (me, g, tmin, tmax, fmin, fmax, garnish, method);
 		return;
@@ -89,15 +81,15 @@ void PitchTier_Pitch_draw (PitchTier me, Pitch uv, Graphics g,
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
 	Graphics_setWindow (g, tmin, tmax, fmin, fmax);
 	Graphics_setInner (g);
-	imin = AnyTier_timeToHighIndex (me, tmin);
-	imax = AnyTier_timeToLowIndex (me, tmax);
+	imin = AnyTier_timeToHighIndex (me->asAnyTier(), tmin);
+	imax = AnyTier_timeToLowIndex (me->asAnyTier(), tmax);
 	if (n == 0) {
 	} else if (imax < imin) {
 		double fleft = RealTier_getValueAtTime (me, tmin);
 		double fright = RealTier_getValueAtTime (me, tmax);
 		Pitch_line (uv, g, tmin, fleft, tmax, fright, nonPeriodicLineType);
 	} else for (i = imin; i <= imax; i ++) {
-		RealPoint point = (RealPoint) my points -> item [i];
+		RealPoint point = my points.at [i];
 		double t = point -> number, f = point -> value;
 		Graphics_speckle (g, t, f);
 		if (i == 1)
@@ -109,23 +101,23 @@ void PitchTier_Pitch_draw (PitchTier me, Pitch uv, Graphics g,
 		else if (i == imax)
 			Pitch_line (uv, g, t, f, tmax, RealTier_getValueAtTime (me, tmax), nonPeriodicLineType);
 		else {
-			RealPoint pointRight = (RealPoint) my points -> item [i + 1];
+			RealPoint pointRight = my points.at [i + 1];
 			Pitch_line (uv, g, t, f, pointRight -> number, pointRight -> value, nonPeriodicLineType);
 		}
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Frequency (Hz)");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Frequency (Hz)");
 	}
 }
 
-Pitch Pitch_PitchTier_to_Pitch (Pitch me, PitchTier tier) {
+autoPitch Pitch_PitchTier_to_Pitch (Pitch me, PitchTier tier) {
 	try {
-		if (tier -> points -> size == 0) Melder_throw (U"No pitch points.");
+		if (tier -> points.size == 0) Melder_throw (U"No pitch points.");
 		autoPitch thee = Data_copy (me);
 		for (long iframe = 1; iframe <= my nx; iframe ++) {
 			Pitch_Frame frame = & thy frame [iframe];
@@ -135,7 +127,7 @@ Pitch Pitch_PitchTier_to_Pitch (Pitch me, PitchTier tier) {
 			cand -> strength = 0.9;
 			frame -> nCandidates = 1;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", tier, U": not converted to Pitch.");
 	}
diff --git a/fon/Pitch_to_PitchTier.h b/fon/Pitch_to_PitchTier.h
index 3fb5506..501d0c8 100644
--- a/fon/Pitch_to_PitchTier.h
+++ b/fon/Pitch_to_PitchTier.h
@@ -2,25 +2,24 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
 #include "PitchTier.h"
 
-PitchTier Pitch_to_PitchTier (Pitch me);
+autoPitchTier Pitch_to_PitchTier (Pitch me);
 /*
 	Creates a PitchTier from an existing Pitch contour.
 	The best candidate in each frame becomes a target in the result.
@@ -31,6 +30,6 @@ void PitchTier_Pitch_draw (PitchTier me, Pitch uv, Graphics g,
 	double tmin, double tmax, double fmin, double fmax,
 	int nonPeriodicLineType, int garnish, const char32 *method);
 
-Pitch Pitch_PitchTier_to_Pitch (Pitch me, PitchTier tier);
+autoPitch Pitch_PitchTier_to_Pitch (Pitch me, PitchTier tier);
 
 /* End of file Pitch_to_PitchTier.h */
diff --git a/fon/Pitch_to_PointProcess.cpp b/fon/Pitch_to_PointProcess.cpp
index 9a866cf..3ee733a 100644
--- a/fon/Pitch_to_PointProcess.cpp
+++ b/fon/Pitch_to_PointProcess.cpp
@@ -1,20 +1,19 @@
 /* Pitch_to_PointProcess.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -38,11 +37,11 @@
 #include "Pitch_to_PitchTier.h"
 #include <ctype.h>
 
-PointProcess Pitch_to_PointProcess (Pitch pitch) {
+autoPointProcess Pitch_to_PointProcess (Pitch pitch) {
 	try {
 		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch);
-		autoPointProcess point = PitchTier_Pitch_to_PointProcess (pitchTier.peek(), pitch);
-		return point.transfer();
+		autoPointProcess point = PitchTier_Pitch_to_PointProcess (pitchTier.get(), pitch);
+		return point;
 	} catch (MelderError) {
 		Melder_throw (pitch, U": not converted to PointProcess.");
 	}
@@ -50,13 +49,13 @@ PointProcess Pitch_to_PointProcess (Pitch pitch) {
 
 static int Pitch_getVoicedIntervalAfter (Pitch me, double after, double *tleft, double *tright) {
 	long ileft = Sampled_xToHighIndex (me, after), iright;
-	if (ileft > my nx) return 0;   /* Offright. */
-	if (ileft < 1) ileft = 1;   /* Offleft. */
+	if (ileft > my nx) return 0;   // offright
+	if (ileft < 1) ileft = 1;   // offleft
 
 	/* Search for first voiced frame. */
 	for (; ileft <= my nx; ileft ++)
 		if (Pitch_isVoiced_i (me, ileft)) break;
-	if (ileft > my nx) return 0;   /* Offright. */
+	if (ileft > my nx) return 0;   // offright
 
 	/* Search for last voiced frame. */
 	for (iright = ileft; iright <= my nx; iright ++)
@@ -68,18 +67,19 @@ static int Pitch_getVoicedIntervalAfter (Pitch me, double after, double *tleft,
 	if (*tleft >= my xmax - 0.5 * my dx) return 0;
 	if (*tleft < my xmin) *tleft = my xmin;
 	if (*tright > my xmax) *tright = my xmax;
+	if (*tright <= after) return 0;
 	return 1;
 }
 
 static double findExtremum_3 (double *channel1_base, double *channel2_base, long d, long n, int includeMaxima, int includeMinima) {
-	double *channel1 = channel1_base + d, *channel2 = channel2_base ? channel2_base + d : NULL;
+	double *channel1 = channel1_base + d, *channel2 = channel2_base ? channel2_base + d : nullptr;
 	int includeAll = includeMaxima == includeMinima;
 	long imin = 1, imax = 1, i, iextr;
 	double minimum, maximum;
 	if (n < 3) {
-		if (n <= 0) return 0.0;   /* Outside. */
+		if (n <= 0) return 0.0;   // outside
 		else if (n == 1) return 1.0;
-		else {   /* n == 2 */
+		else {   // n == 2
 			double x1 = channel2 ? 0.5 * (channel1 [1] + channel2 [1]) : channel1 [1];
 			double x2 = channel2 ? 0.5 * (channel1 [2] + channel2 [2]) : channel1 [2];
 			double xleft = includeAll ? fabs (x1) : includeMaxima ? x1 : - x1;
@@ -96,7 +96,7 @@ static double findExtremum_3 (double *channel1_base, double *channel2_base, long
 		if (value > maximum) { maximum = value; imax = i; }
 	}
 	if (minimum == maximum) {
-		return 0.5 * (n + 1.0);   /* All equal. */
+		return 0.5 * (n + 1.0);   // all equal
 	}
 	iextr = includeAll ? ( fabs (minimum) > fabs (maximum) ? imin : imax ) : includeMaxima ? imax : imin;
 	if (iextr == 1) return 1.0;
@@ -115,7 +115,7 @@ static double Sound_findExtremum (Sound me, double tmin, double tmax, int includ
 	Melder_assert (NUMdefined (tmax));
 	if (imin < 1) imin = 1;
 	if (imax > my nx) imax = my nx;
-	double iextremum = findExtremum_3 (my z [1], my ny > 1 ? my z [2] : NULL, imin - 1, imax - imin + 1, includeMaxima, includeMinima);
+	double iextremum = findExtremum_3 (my z [1], my ny > 1 ? my z [2] : nullptr, imin - 1, imax - imin + 1, includeMaxima, includeMinima);
 	if (iextremum != 0.0)
 		return my x1 + (imin - 1 + iextremum - 1) * my dx;
 	else
@@ -174,11 +174,11 @@ static double Sound_findMaximumCorrelation (Sound me, double t1, double windowLe
 	return maximumCorrelation;
 }
 
-PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
+autoPointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
 	try {
 		autoPointProcess point = PointProcess_create (sound -> xmin, sound -> xmax, 10);
 		double t = pitch -> xmin;
-		double addedRight = -1e300;
+		double addedRight = -1e308;
 		double globalPeak = Vector_getAbsoluteExtremum (sound, sound -> xmin, sound -> xmax, 0), peak;
 		
 		/*
@@ -188,6 +188,8 @@ PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
 		for (;;) {
 			double tleft, tright;
 			if (! Pitch_getVoicedIntervalAfter (pitch, t, & tleft, & tright)) break;
+			Melder_assert (tright > t);
+
 			/*
 			 * Go to the middle of the voice stretch.
 			 */
@@ -205,9 +207,9 @@ PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
 					U", f0middle ", f0middle
 				);
 			}
-			double tmax = Sound_findExtremum (sound, tmiddle - 0.5 / f0middle, tmiddle + 0.5 / f0middle, TRUE, TRUE);
+			double tmax = Sound_findExtremum (sound, tmiddle - 0.5 / f0middle, tmiddle + 0.5 / f0middle, true, true);
 			Melder_assert (NUMdefined (tmax));
-			PointProcess_addPoint (point.peek(), tmax);
+			PointProcess_addPoint (point.get(), tmax);
 
 			double tsave = tmax;
 			for (;;) {
@@ -217,13 +219,13 @@ PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
 				if (correlation == -1) /*break*/ tmax -= 1.0 / f0;   // this one period will drop out
 				if (tmax < tleft) {
 					if (correlation > 0.7 && peak > 0.023333 * globalPeak && tmax - addedRight > 0.8 / f0) {
-						PointProcess_addPoint (point.peek(), tmax);
+						PointProcess_addPoint (point.get(), tmax);
 					}
 					break;
 				}
 				if (correlation > 0.3 && (peak == 0.0 || peak > 0.01 * globalPeak)) {
 					if (tmax - addedRight > 0.8 / f0) {   // do not fill in a short originally unvoiced interval twice
-						PointProcess_addPoint (point.peek(), tmax);
+						PointProcess_addPoint (point.get(), tmax);
 					}
 				}
 			}
@@ -235,30 +237,30 @@ PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch) {
 				if (correlation == -1) /*break*/ tmax += 1.0 / f0;
 				if (tmax > tright) {
 					if (correlation > 0.7 && peak > 0.023333 * globalPeak) {
-						PointProcess_addPoint (point.peek(), tmax);
+						PointProcess_addPoint (point.get(), tmax);
 						addedRight = tmax;
 					}
 					break;
 				}
 				if (correlation > 0.3 && (peak == 0.0 || peak > 0.01 * globalPeak)) {
-					PointProcess_addPoint (point.peek(), tmax);
+					PointProcess_addPoint (point.get(), tmax);
 					addedRight = tmax;
 				}
 			}
 			t = tright;
 		}
-		return point.transfer();
+		return point;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", pitch, U": not converted to PointProcess (cc).");
 	}
 }
 	
 
-PointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int includeMaxima, int includeMinima) {
+autoPointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int includeMaxima, int includeMinima) {
 	try {
 		autoPointProcess point = PointProcess_create (sound -> xmin, sound -> xmax, 10);
 		double t = pitch -> xmin;
-		double addedRight = -1e300;
+		double addedRight = -1e308;
 		/*
 		 * Cycle over all voiced intervals.
 		 */
@@ -280,7 +282,7 @@ PointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int in
 			Melder_assert (NUMdefined (f0middle));
 			double tmax = Sound_findExtremum (sound, tmiddle - 0.5 / f0middle, tmiddle + 0.5 / f0middle, includeMaxima, includeMinima);
 			Melder_assert (NUMdefined (tmax));
-			PointProcess_addPoint (point.peek(), tmax);
+			PointProcess_addPoint (point.get(), tmax);
 
 			double tsave = tmax;
 			for (;;) {
@@ -289,12 +291,12 @@ PointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int in
 				tmax = Sound_findExtremum (sound, tmax - 1.25 / f0, tmax - 0.8 / f0, includeMaxima, includeMinima);
 				if (tmax < tleft) {
 					if (tmax - addedRight > 0.8 / f0) {
-						PointProcess_addPoint (point.peek(), tmax);
+						PointProcess_addPoint (point.get(), tmax);
 					}
 					break;
 				}
 				if (tmax - addedRight > 0.8 / f0) {   // do not fill in a short originally unvoiced interval twice
-					PointProcess_addPoint (point.peek(), tmax);
+					PointProcess_addPoint (point.get(), tmax);
 				}
 			}
 			tmax = tsave;
@@ -303,16 +305,16 @@ PointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int in
 				if (f0 == NUMundefined) break;
 				tmax = Sound_findExtremum (sound, tmax + 0.8 / f0, tmax + 1.25 / f0, includeMaxima, includeMinima);
 				if (tmax > tright) {
-					PointProcess_addPoint (point.peek(), tmax);
+					PointProcess_addPoint (point.get(), tmax);
 					addedRight = tmax;
 					break;
 				}
-				PointProcess_addPoint (point.peek(), tmax);
+				PointProcess_addPoint (point.get(), tmax);
 				addedRight = tmax;
 			}
 			t = tright;
 		}
-		return point.transfer();
+		return point;
 	} catch (MelderError) {
 		Melder_throw (sound, U" & ", pitch, U": not converted to PointProcess (peaks).");
 	}
diff --git a/fon/Pitch_to_PointProcess.h b/fon/Pitch_to_PointProcess.h
index 67bd95c..50cd8be 100644
--- a/fon/Pitch_to_PointProcess.h
+++ b/fon/Pitch_to_PointProcess.h
@@ -2,29 +2,28 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
 #include "PointProcess.h"
 #include "Sound.h"
 
-PointProcess Pitch_to_PointProcess (Pitch pitch);
+autoPointProcess Pitch_to_PointProcess (Pitch pitch);
 
-PointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch);
+autoPointProcess Sound_Pitch_to_PointProcess_cc (Sound sound, Pitch pitch);
 
-PointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int includeMaxima, int includeMinima);
+autoPointProcess Sound_Pitch_to_PointProcess_peaks (Sound sound, Pitch pitch, int includeMaxima, int includeMinima);
 
 /* End of file Pitch_to_PointProcess.h */
diff --git a/fon/Pitch_to_Sound.cpp b/fon/Pitch_to_Sound.cpp
index 1d2ba5b..98e4b5d 100644
--- a/fon/Pitch_to_Sound.cpp
+++ b/fon/Pitch_to_Sound.cpp
@@ -1,20 +1,19 @@
 /* Pitch_to_Sound.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -31,16 +30,16 @@
 #include "PitchTier_to_Sound.h"
 #include "Pitch_to_PitchTier.h"
 
-Sound Pitch_to_Sound (Pitch me, double tmin, double tmax, int hum) {
-	static double formant [1 + 6] = { 0, 600, 1400, 2400, 3400, 4500, 5500 };
-	static double bandwidth [1 + 6] = { 0, 50, 100, 200, 300, 400, 500 };
+autoSound Pitch_to_Sound (Pitch me, double tmin, double tmax, bool hum) {
+	static double formant [1 + 6] { 0.0, 600.0, 1400.0, 2400.0, 3400.0, 4500.0, 5500.0 };
+	static double bandwidth [1 + 6] { 0.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 };
 	try {
 		autoPointProcess point = Pitch_to_PointProcess (me);
-		autoSound sound = PointProcess_to_Sound_pulseTrain (point.peek(), 44100, 0.7, 0.05, 30);
+		autoSound sound = PointProcess_to_Sound_pulseTrain (point.get(), 44100.0, 0.7, 0.05, 30);
 		if (hum) {
-			Sound_filterWithFormants (sound.peek(), tmin, tmax, 6, formant, bandwidth);
+			Sound_filterWithFormants (sound.get(), tmin, tmax, 6, formant, bandwidth);
 		}
-		return sound.transfer();
+		return sound;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
@@ -48,9 +47,9 @@ Sound Pitch_to_Sound (Pitch me, double tmin, double tmax, int hum) {
 
 void Pitch_play (Pitch me, double tmin, double tmax) {
 	try {
-		autoSound sound = Pitch_to_Sound (me, tmin, tmax, FALSE);
+		autoSound sound = Pitch_to_Sound (me, tmin, tmax, false);
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindowing
-		Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+		Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
@@ -58,18 +57,18 @@ void Pitch_play (Pitch me, double tmin, double tmax) {
 
 void Pitch_hum (Pitch me, double tmin, double tmax) {
 	try {
-		autoSound sound = Pitch_to_Sound (me, tmin, tmax, TRUE);
+		autoSound sound = Pitch_to_Sound (me, tmin, tmax, true);
 		if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindowing
-		Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+		Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
 }
 
-Sound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFrequency, int roundToNearestZeroCrossings) {
+autoSound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFrequency, bool roundToNearestZeroCrossings) {
 	try {
 		autoPitchTier tier = Pitch_to_PitchTier (me);
-		autoSound sound = PitchTier_to_Sound_sine (tier.peek(), tmin, tmax, samplingFrequency);
+		autoSound sound = PitchTier_to_Sound_sine (tier.get(), tmin, tmax, samplingFrequency);
 		long iframe = 1;
 		double unvoicedMin = my xmin;
 		double unvoicedMax = my x1 + (iframe - 1.5) * my dx;
@@ -79,7 +78,7 @@ Sound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFr
 				if (++ iframe > my nx) break;
 			}
 			if (unvoicedMax > unvoicedMin) {
-				Sound_setZero (sound.peek(), unvoicedMin, unvoicedMax, roundToNearestZeroCrossings);
+				Sound_setZero (sound.get(), unvoicedMin, unvoicedMax, roundToNearestZeroCrossings);
 			}
 			if (iframe > my nx) break;
 			while (Pitch_isVoiced_i (me, iframe)) {
@@ -90,9 +89,9 @@ Sound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFr
 		}
 		unvoicedMax = my xmax;
 		if (unvoicedMax > unvoicedMin) {
-			Sound_setZero (sound.peek(), unvoicedMin, unvoicedMax, roundToNearestZeroCrossings);
+			Sound_setZero (sound.get(), unvoicedMin, unvoicedMax, roundToNearestZeroCrossings);
 		}
-		return sound.transfer();
+		return sound;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (sine).");
 	}
diff --git a/fon/Pitch_to_Sound.h b/fon/Pitch_to_Sound.h
index 0b30e5b..f937066 100644
--- a/fon/Pitch_to_Sound.h
+++ b/fon/Pitch_to_Sound.h
@@ -1,20 +1,19 @@
 /* Pitch_to_Sound.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Pitch.h"
@@ -24,7 +23,7 @@
 /* then this PointProcess into a Sound (pulse train), */
 /* and then optionally filter this with 6 formants. */
 
-Sound Pitch_to_Sound (Pitch me, double tmin, double tmax, int hum);
+autoSound Pitch_to_Sound (Pitch me, double tmin, double tmax, bool hum);
 void Pitch_play (Pitch me, double tmin, double tmax);
 void Pitch_hum (Pitch me, double tmin, double tmax);
 
@@ -32,7 +31,7 @@ void Pitch_hum (Pitch me, double tmin, double tmax);
 /* then this PitchTier into a Sound (sine wave), */
 /* and then cuts away the unvoiced stretches. */
 
-Sound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFrequency,
-	int roundToNearestZeroCrossings);
+autoSound Pitch_to_Sound_sine (Pitch me, double tmin, double tmax, double samplingFrequency,
+	bool roundToNearestZeroCrossings);
 
 /* End of file Pitch_to_Sound.h */
diff --git a/fon/PointEditor.cpp b/fon/PointEditor.cpp
index 2066820..5c3afba 100644
--- a/fon/PointEditor.cpp
+++ b/fon/PointEditor.cpp
@@ -1,20 +1,19 @@
 /* PointEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointEditor.h"
@@ -26,81 +25,68 @@ Thing_implement (PointEditor, TimeSoundEditor, 0);
 
 /********** DESTRUCTION **********/
 
-void structPointEditor :: v_destroy () {
-	forget (monoSound);
+void structPointEditor :: v_destroy () noexcept {
 	PointEditor_Parent :: v_destroy ();
 }
 
 /********** MENU COMMANDS **********/
 
-static void menu_cb_getJitter_local (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getJitter_local (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure jitter, make a selection first.");
-	Melder_informationReal (PointProcess_getJitter_local ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), NULL);
+	Melder_informationReal (PointProcess_getJitter_local ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), nullptr);
 }
 
-static void menu_cb_getJitter_local_absolute (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getJitter_local_absolute (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure jitter, make a selection first.");
 	Melder_informationReal (PointProcess_getJitter_local_absolute ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), U"seconds");
 }
 
-static void menu_cb_getJitter_rap (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getJitter_rap (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure jitter, make a selection first.");
-	Melder_informationReal (PointProcess_getJitter_rap ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), NULL);
+	Melder_informationReal (PointProcess_getJitter_rap ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), nullptr);
 }
 
-static void menu_cb_getJitter_ppq5 (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getJitter_ppq5 (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure jitter, make a selection first.");
-	Melder_informationReal (PointProcess_getJitter_ppq5 ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), NULL);
+	Melder_informationReal (PointProcess_getJitter_ppq5 ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), nullptr);
 }
 
-static void menu_cb_getJitter_ddp (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getJitter_ddp (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure jitter, make a selection first.");
-	Melder_informationReal (PointProcess_getJitter_ddp ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), NULL);
+	Melder_informationReal (PointProcess_getJitter_ddp ((PointProcess) my data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3), nullptr);
 }
 
-static void menu_cb_getShimmer_local (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_local (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_local ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_local ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_getShimmer_local_dB (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_local_dB (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_local_dB ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_local_dB ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_getShimmer_apq3 (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_apq3 (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_apq3 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_apq3 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_getShimmer_apq5 (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_apq5 (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_apq5 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_apq5 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_getShimmer_apq11 (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_apq11 (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_apq11 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_apq11 ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_getShimmer_dda (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_getShimmer_dda (PointEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_startSelection == my d_endSelection) Melder_throw (U"To measure shimmer, make a selection first.");
-	Melder_informationReal (PointProcess_Sound_getShimmer_dda ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), NULL);
+	Melder_informationReal (PointProcess_Sound_getShimmer_dda ((PointProcess) my data, my d_sound.data, my d_startSelection, my d_endSelection, 1e-4, 0.02, 1.3, 1.6), nullptr);
 }
 
-static void menu_cb_removePoints (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_removePoints (PointEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Remove point(s)");
 	if (my d_startSelection == my d_endSelection)
 		PointProcess_removePointNear ((PointProcess) my data, my d_startSelection);
@@ -110,17 +96,15 @@ static void menu_cb_removePoints (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
+static void menu_cb_addPointAtCursor (PointEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Add point");
 	PointProcess_addPoint ((PointProcess) my data, 0.5 * (my d_startSelection + my d_endSelection));
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAt (EDITOR_ARGS) {
-	EDITOR_IAM (PointEditor);
-	EDITOR_FORM (U"Add point", 0)
+static void menu_cb_addPointAt (PointEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add point", nullptr)
 		REAL (U"Position", U"0.0");
 	EDITOR_OK
 		SET_REAL (U"Position", 0.5 * (my d_startSelection + my d_endSelection));
@@ -132,19 +116,19 @@ static void menu_cb_addPointAt (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_PointEditorHelp (EDITOR_ARGS) { EDITOR_IAM (PointEditor); Melder_help (U"PointEditor"); }
+static void menu_cb_PointEditorHelp (PointEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"PointEditor"); }
 
 void structPointEditor :: v_createMenus () {
 	PointEditor_Parent :: v_createMenus ();
 
-	Editor_addCommand (this, U"Query", U"-- query jitter --", 0, NULL);
+	Editor_addCommand (this, U"Query", U"-- query jitter --", 0, nullptr);
 	Editor_addCommand (this, U"Query", U"Get jitter (local)", 0, menu_cb_getJitter_local);
 	Editor_addCommand (this, U"Query", U"Get jitter (local, absolute)", 0, menu_cb_getJitter_local_absolute);
 	Editor_addCommand (this, U"Query", U"Get jitter (rap)", 0, menu_cb_getJitter_rap);
 	Editor_addCommand (this, U"Query", U"Get jitter (ppq5)", 0, menu_cb_getJitter_ppq5);
 	Editor_addCommand (this, U"Query", U"Get jitter (ddp)", 0, menu_cb_getJitter_ddp);
 	if (d_sound.data) {
-		Editor_addCommand (this, U"Query", U"-- query shimmer --", 0, NULL);
+		Editor_addCommand (this, U"Query", U"-- query shimmer --", 0, nullptr);
 		Editor_addCommand (this, U"Query", U"Get shimmer (local)", 0, menu_cb_getShimmer_local);
 		Editor_addCommand (this, U"Query", U"Get shimmer (local, dB)", 0, menu_cb_getShimmer_local_dB);
 		Editor_addCommand (this, U"Query", U"Get shimmer (apq3)", 0, menu_cb_getShimmer_apq3);
@@ -156,7 +140,7 @@ void structPointEditor :: v_createMenus () {
 	Editor_addMenu (this, U"Point", 0);
 	Editor_addCommand (this, U"Point", U"Add point at cursor", 'P', menu_cb_addPointAtCursor);
 	Editor_addCommand (this, U"Point", U"Add point at...", 0, menu_cb_addPointAt);
-	Editor_addCommand (this, U"Point", U"-- remove point --", 0, NULL);
+	Editor_addCommand (this, U"Point", U"-- remove point --", 0, nullptr);
 	Editor_addCommand (this, U"Point", U"Remove point(s)", GuiMenu_OPTION + 'P', menu_cb_removePoints);
 }
 
@@ -168,39 +152,39 @@ void structPointEditor :: v_createHelpMenuItems (EditorMenu menu) {
 /********** DRAWING AREA **********/
 
 void structPointEditor :: v_draw () {
-	PointProcess point = (PointProcess) data;
+	PointProcess point = static_cast <PointProcess> (our data);
 	Sound sound = d_sound.data;
-	Graphics_setColour (d_graphics, Graphics_WHITE);
-	Graphics_setWindow (d_graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (d_graphics, 0, 1, 0, 1);
+	Graphics_setColour (d_graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 	double minimum = -1.0, maximum = +1.0;
-	if (sound != NULL && (p_sound_scalingStrategy == kTimeSoundEditor_scalingStrategy_BY_WINDOW || p_sound_scalingStrategy == kTimeSoundEditor_scalingStrategy_BY_WINDOW_AND_CHANNEL)) {
+	if (sound && (p_sound_scalingStrategy == kTimeSoundEditor_scalingStrategy_BY_WINDOW || p_sound_scalingStrategy == kTimeSoundEditor_scalingStrategy_BY_WINDOW_AND_CHANNEL)) {
 		long first, last;
 		if (Sampled_getWindowSamples (sound, d_startWindow, d_endWindow, & first, & last) >= 1) {
 			Matrix_getWindowExtrema (sound, first, last, 1, 1, & minimum, & maximum);
 			if (minimum == maximum) minimum -= 1.0, maximum += 1.0;
 		}
 	}
-	Graphics_setWindow (d_graphics, d_startWindow, d_endWindow, minimum, maximum);
-	Graphics_setColour (d_graphics, Graphics_BLACK);
-	if (sound != NULL) {
+	Graphics_setWindow (d_graphics.get(), d_startWindow, d_endWindow, minimum, maximum);
+	Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+	if (sound) {
 		long first, last;
 		if (Sampled_getWindowSamples (sound, d_startWindow, d_endWindow, & first, & last) > 1) {
-			Graphics_setLineType (d_graphics, Graphics_DOTTED);
-			Graphics_line (d_graphics, d_startWindow, 0.0, d_endWindow, 0.0);
-			Graphics_setLineType (d_graphics, Graphics_DRAWN);      
-			Graphics_function (d_graphics, sound -> z [1], first, last,
+			Graphics_setLineType (d_graphics.get(), Graphics_DOTTED);
+			Graphics_line (d_graphics.get(), d_startWindow, 0.0, d_endWindow, 0.0);
+			Graphics_setLineType (d_graphics.get(), Graphics_DRAWN);
+			Graphics_function (d_graphics.get(), sound -> z [1], first, last,
 				Sampled_indexToX (sound, first), Sampled_indexToX (sound, last));
 		}
 	}
-	Graphics_setColour (d_graphics, Graphics_BLUE);
-	Graphics_setWindow (d_graphics, d_startWindow, d_endWindow, -1.0, +1.0);
+	Graphics_setColour (d_graphics.get(), Graphics_BLUE);
+	Graphics_setWindow (d_graphics.get(), d_startWindow, d_endWindow, -1.0, +1.0);
 	for (long i = 1; i <= point -> nt; i ++) {
 		double t = point -> t [i];
 		if (t >= d_startWindow && t <= d_endWindow)
-			Graphics_line (d_graphics, t, -0.9, t, +0.9);
+			Graphics_line (d_graphics.get(), t, -0.9, t, +0.9);
 	}
-	Graphics_setColour (d_graphics, Graphics_BLACK);
+	Graphics_setColour (d_graphics.get(), Graphics_BLACK);
 	v_updateMenuItems_file ();
 }
 
@@ -212,14 +196,14 @@ void structPointEditor :: v_play (double a_tmin, double a_tmax) {
 	}
 }
 
-PointEditor PointEditor_create (const char32 *title, PointProcess point, Sound sound) {
+autoPointEditor PointEditor_create (const char32 *title, PointProcess point, Sound sound) {
 	try {
 		autoPointEditor me = Thing_new (PointEditor);
 		if (sound) {
 			my monoSound = Sound_convertToMono (sound);
 		}
-		TimeSoundEditor_init (me.peek(), title, point, my monoSound, false);
-		return me.transfer();
+		TimeSoundEditor_init (me.get(), title, point, my monoSound.get(), false);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PointProcess window not created.");
 	}
diff --git a/fon/PointEditor.h b/fon/PointEditor.h
index 2d87b3d..b30687c 100644
--- a/fon/PointEditor.h
+++ b/fon/PointEditor.h
@@ -4,29 +4,28 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundEditor.h"
 #include "PointProcess.h"
 
 Thing_define (PointEditor, TimeSoundEditor) {
-	Sound monoSound;
+	autoSound monoSound;
 	GuiObject addPointAtDialog;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_createMenus ()
 		override;
@@ -38,9 +37,9 @@ Thing_define (PointEditor, TimeSoundEditor) {
 		override;
 };
 
-PointEditor PointEditor_create (const char32 *title,
+autoPointEditor PointEditor_create (const char32 *title,
 	PointProcess point,
-	Sound sound   // may be NULL
+	Sound sound   // may be null
 );
 
 /* End of file PointEditor.h */
diff --git a/fon/PointProcess.cpp b/fon/PointProcess.cpp
index 5cd40e2..ef79eea 100644
--- a/fon/PointProcess.cpp
+++ b/fon/PointProcess.cpp
@@ -1,20 +1,19 @@
 /* PointProcess.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointProcess.h"
@@ -61,7 +60,7 @@ static void infoPeriods (PointProcess me, double shortestPeriod, double longestP
 }
 
 void structPointProcess :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -75,7 +74,7 @@ void structPointProcess :: v_info () {
 	MelderInfo_writeLine (U"with a maximum \"period factor\" of 1.3:");
 	infoPeriods (this, 1e-4, 20e-3, 1.3, 3);
 	MelderInfo_writeLine (U"All periods:");
-	infoPeriods (this, 0.0, 0.0, 1e300, 6);
+	infoPeriods (this, 0.0, 0.0, 1e308, 6);
 }
 
 void structPointProcess :: v_shiftX (double xfrom, double xto) {
@@ -92,8 +91,7 @@ void structPointProcess :: v_scaleX (double xminfrom, double xmaxfrom, double xm
 	}
 }
 
-void PointProcess_init (I, double tmin, double tmax, long initialMaxnt) {
-	iam (PointProcess);
+void PointProcess_init (PointProcess me, double tmin, double tmax, long initialMaxnt) {
 	Function_init (me, tmin, tmax);
 	if (initialMaxnt < 1) initialMaxnt = 1;
 	my maxnt = initialMaxnt;
@@ -101,17 +99,17 @@ void PointProcess_init (I, double tmin, double tmax, long initialMaxnt) {
 	my t = NUMvector <double> (1, my maxnt);
 }
 
-PointProcess PointProcess_create (double tmin, double tmax, long initialMaxnt) {
+autoPointProcess PointProcess_create (double tmin, double tmax, long initialMaxnt) {
 	try {
 		autoPointProcess me = Thing_new (PointProcess);
-		PointProcess_init (me.peek(), tmin, tmax, initialMaxnt);
-		return me.transfer();
+		PointProcess_init (me.get(), tmin, tmax, initialMaxnt);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PointProcess not created.");
 	}
 }
 
-PointProcess PointProcess_createPoissonProcess (double startingTime, double finishingTime, double density) {
+autoPointProcess PointProcess_createPoissonProcess (double startingTime, double finishingTime, double density) {
 	try {
 		long nt = NUMrandomPoisson ((finishingTime - startingTime) * density);
 		autoPointProcess me = PointProcess_create (startingTime, finishingTime, nt);
@@ -119,7 +117,7 @@ PointProcess PointProcess_createPoissonProcess (double startingTime, double fini
 		for (long i = 1; i <= nt; i ++)
 			my t [i] = NUMrandomUniform (startingTime, finishingTime);
 		NUMsort_d (my nt, my t);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PointProcess (Poisson process) not created.");
 	}
@@ -128,9 +126,9 @@ PointProcess PointProcess_createPoissonProcess (double startingTime, double fini
 long PointProcess_getLowIndex (PointProcess me, double t) {
 	if (my nt == 0 || t < my t [1])
 		return 0;
-	if (t >= my t [my nt])   /* Special case that often occurs in practice. */
+	if (t >= my t [my nt])   // special case that often occurs in practice
 		return my nt;
-	Melder_assert (my nt != 1);   /* May fail if t or my t [1] is NaN. */
+	Melder_assert (my nt != 1);   // may fail if t or my t [1] is NaN
 	/* Start binary search. */
 	long left = 1, right = my nt;
 	while (left < right - 1) {
@@ -232,24 +230,25 @@ void PointProcess_removePointsBetween (PointProcess me, double tmin, double tmax
 	PointProcess_removePoints (me, PointProcess_getHighIndex (me, tmin), PointProcess_getLowIndex (me, tmax));
 }
 
-void PointProcess_draw (PointProcess me, Graphics g, double tmin, double tmax, int garnish) {
+void PointProcess_draw (PointProcess me, Graphics g, double tmin, double tmax, bool garnish) {
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
-	Graphics_setWindow (g, tmin, tmax, -1, 1);
+	Graphics_setWindow (g, tmin, tmax, -1.0, 1.0);
 	if (my nt) {
-		long imin = PointProcess_getHighIndex (me, tmin), imax = PointProcess_getLowIndex (me, tmax), i;
+		long imin = PointProcess_getHighIndex (me, tmin);
+		long imax = PointProcess_getLowIndex  (me, tmax);
 		int lineType = Graphics_inqLineType (g);
 		Graphics_setLineType (g, Graphics_DOTTED);
 		Graphics_setInner (g);
-		for (i = imin; i <= imax; i ++) {
-			Graphics_line (g, my t [i], -1, my t [i], 1);
+		for (long i = imin; i <= imax; i ++) {
+			Graphics_line (g, my t [i], -1.0, my t [i], 1.0);
 		}
 		Graphics_setLineType (g, lineType);
 		Graphics_unsetInner (g);
 	}
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
@@ -259,15 +258,15 @@ double PointProcess_getInterval (PointProcess me, double t) {
 	return my t [ileft + 1] - my t [ileft];
 }
 
-PointProcess PointProcesses_union (PointProcess me, PointProcess thee) {
+autoPointProcess PointProcesses_union (PointProcess me, PointProcess thee) {
 	try {
 		autoPointProcess him = Data_copy (me);
 		if (thy xmin < my xmin) his xmin = thy xmin;
 		if (thy xmax > my xmax) his xmax = thy xmax;
 		for (long i = 1; i <= thy nt; i ++) {
-			PointProcess_addPoint (him.peek(), thy t [i]);
+			PointProcess_addPoint (him.get(), thy t [i]);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": union not computed.");
 	}
@@ -278,7 +277,7 @@ long PointProcess_findPoint (PointProcess me, double t) {
 	if (my nt == 0) return 0;
 	if (t < my t [left] || t > my t [right]) return 0;
 	while (left < right - 1) {
-		long mid = (left + right) / 2;   /* tleft <= t <= tright */
+		long mid = (left + right) / 2;   // tleft <= t <= tright
 		if (t == my t [mid]) return mid;
 		if (t > my t [mid])
 			left = mid;
@@ -290,27 +289,27 @@ long PointProcess_findPoint (PointProcess me, double t) {
 	return 0;
 }
 
-PointProcess PointProcesses_intersection (PointProcess me, PointProcess thee) {
+autoPointProcess PointProcesses_intersection (PointProcess me, PointProcess thee) {
 	try {
 		autoPointProcess him = Data_copy (me);
 		if (thy xmin > my xmin) his xmin = thy xmin;
 		if (thy xmax < my xmax) his xmax = thy xmax;
 		for (long i = my nt; i >= 1; i --)
 			if (! PointProcess_findPoint (thee, my t [i]))
-				PointProcess_removePoint (him.peek(), i);
-		return him.transfer();
+				PointProcess_removePoint (him.get(), i);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": intersection not computed.");
 	}
 }
 
-PointProcess PointProcesses_difference (PointProcess me, PointProcess thee) {
+autoPointProcess PointProcesses_difference (PointProcess me, PointProcess thee) {
 	try {
 		autoPointProcess him = Data_copy (me);
 		for (long i = my nt; i >= 1; i --)
 			if (PointProcess_findPoint (thee, my t [i]))
-				PointProcess_removePoint (him.peek(), i);
-		return him.transfer();
+				PointProcess_removePoint (him.get(), i);
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": difference not computed.");
 	}
@@ -349,15 +348,15 @@ void PointProcess_voice (PointProcess me, double period, double maxT) {
 	}
 }
 
-long PointProcess_getWindowPoints (PointProcess me, double tmin, double tmax, long *pimin, long *pimax) {
+long PointProcess_getWindowPoints (PointProcess me, double tmin, double tmax, long *p_imin, long *p_imax) {
 	long imin = PointProcess_getHighIndex (me, tmin);
 	long imax = PointProcess_getLowIndex (me, tmax);
-	if (pimin) *pimin = imin;
-	if (pimax) *pimax = imax;
+	if (p_imin) *p_imin = imin;
+	if (p_imax) *p_imax = imax;
 	return imax - imin + 1;
 }
 
-static int PointProcess_isPeriod (PointProcess me, long ileft, double minimumPeriod, double maximumPeriod, double maximumPeriodFactor) {
+static bool PointProcess_isPeriod (PointProcess me, long ileft, double minimumPeriod, double maximumPeriod, double maximumPeriodFactor) {
 	/*
 	 * This function answers the question: is the interval from point 'ileft' to point 'ileft+1' a period?
 	 */
@@ -366,19 +365,19 @@ static int PointProcess_isPeriod (PointProcess me, long ileft, double minimumPer
 	 * Period condition 1: both 'ileft' and 'iright' have to be within the point process.
 	 */
 	if (ileft < 1 || iright > my nt) {
-		return FALSE;
+		return false;
 	} else {
 		/*
 		 * Period condition 2: the interval has to be within the boundaries, if specified.
 		 */
 		if (minimumPeriod == maximumPeriod) {
-			return TRUE;   /* All intervals count as periods, irrespective of absolute size and relative size. */
+			return true;   // all intervals count as periods, irrespective of absolute size and relative size
 		} else {
 			double interval = my t [iright] - my t [ileft];
 			if (interval <= 0.0 || interval < minimumPeriod || interval > maximumPeriod) {
-				return FALSE;
+				return false;
 			} else if (! NUMdefined (maximumPeriodFactor) || maximumPeriodFactor < 1.0) {
-				return TRUE;
+				return true;
 			} else {
 				/*
 				 * Period condition 3: the interval cannot be too different from both of its neigbours, if any.
@@ -388,7 +387,7 @@ static int PointProcess_isPeriod (PointProcess me, long ileft, double minimumPer
 				double previousIntervalFactor = NUMdefined (previousInterval) && previousInterval > 0.0 ? interval / previousInterval : NUMundefined;
 				double nextIntervalFactor = NUMdefined (nextInterval) && nextInterval > 0.0 ? interval / nextInterval : NUMundefined;
 				if (! NUMdefined (previousIntervalFactor) && ! NUMdefined (nextIntervalFactor)) {
-					return TRUE;   /* No neighbours: this is a period. */
+					return true;   // no neighbours: this is a period
 				}
 				if (NUMdefined (previousIntervalFactor) && previousIntervalFactor > 0.0 && previousIntervalFactor < 1.0) {
 					previousIntervalFactor = 1.0 / previousIntervalFactor;
@@ -399,26 +398,26 @@ static int PointProcess_isPeriod (PointProcess me, long ileft, double minimumPer
 				if (NUMdefined (previousIntervalFactor) && previousIntervalFactor > maximumPeriodFactor &&
 					NUMdefined (nextIntervalFactor) && nextIntervalFactor > maximumPeriodFactor)
 				{
-					return FALSE;
+					return false;
 				}
 			}
 		}
 	}
-	return TRUE;
+	return true;
 }
 
 long PointProcess_getNumberOfPeriods (PointProcess me, double tmin, double tmax,
 	double minimumPeriod, double maximumPeriod, double maximumPeriodFactor)
 {
-	long imin, imax, numberOfPeriods, i;
-	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   /* Autowindowing. */
-	numberOfPeriods = PointProcess_getWindowPoints (me, tmin, tmax, & imin, & imax) - 1;
+	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
+	long imin, imax;
+	long numberOfPeriods = PointProcess_getWindowPoints (me, tmin, tmax, & imin, & imax) - 1;
 	if (numberOfPeriods < 1) return 0;
-	for (i = imin; i < imax; i ++) {
+	for (long i = imin; i < imax; i ++) {
 		if (PointProcess_isPeriod (me, i, minimumPeriod, maximumPeriod, maximumPeriodFactor)) {
-			(void) 0;   /* This interval counts as a period. */
+			(void) 0;   // this interval counts as a period
 		} else {
-			numberOfPeriods --;   /* This interval does not count as a period. */
+			numberOfPeriods --;   // this interval does not count as a period
 		}
 	}
 	return numberOfPeriods;
@@ -427,16 +426,16 @@ long PointProcess_getNumberOfPeriods (PointProcess me, double tmin, double tmax,
 double PointProcess_getMeanPeriod (PointProcess me, double tmin, double tmax,
 	double minimumPeriod, double maximumPeriod, double maximumPeriodFactor)
 {
-	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   /* Autowindowing. */
+	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 	long imin, imax;
 	long numberOfPeriods = PointProcess_getWindowPoints (me, tmin, tmax, & imin, & imax) - 1;
 	if (numberOfPeriods < 1) return NUMundefined;
 	double sum = 0.0;
 	for (long i = imin; i < imax; i ++) {
 		if (PointProcess_isPeriod (me, i, minimumPeriod, maximumPeriod, maximumPeriodFactor)) {
-			sum += my t [i + 1] - my t [i];   /* This interval counts as a period. */
+			sum += my t [i + 1] - my t [i];   // this interval counts as a period
 		} else {
-			numberOfPeriods --;   /* This interval does not count as a period. */
+			numberOfPeriods --;   // this interval does not count as a period
 		}
 	}
 	return numberOfPeriods > 0 ? sum / numberOfPeriods : NUMundefined;
@@ -445,7 +444,7 @@ double PointProcess_getMeanPeriod (PointProcess me, double tmin, double tmax,
 double PointProcess_getStdevPeriod (PointProcess me, double tmin, double tmax,
 	double minimumPeriod, double maximumPeriod, double maximumPeriodFactor)
 {
-	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   /* Autowindowing. */
+	if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 	long imin, imax;
 	long numberOfPeriods = PointProcess_getWindowPoints (me, tmin, tmax, & imin, & imax) - 1;
 	if (numberOfPeriods < 2) return NUMundefined;
@@ -455,9 +454,9 @@ double PointProcess_getStdevPeriod (PointProcess me, double tmin, double tmax,
 	double sum = 0.0;
 	for (long i = imin; i < imax; i ++) {
 		if (PointProcess_isPeriod (me, i, minimumPeriod, maximumPeriod, maximumPeriodFactor)) {
-			sum += my t [i + 1] - my t [i];   /* This interval counts as a period. */
+			sum += my t [i + 1] - my t [i];   // this interval counts as a period
 		} else {
-			numberOfPeriods --;   /* This interval does not count as a period. */
+			numberOfPeriods --;   // this interval does not count as a period
 		}
 	}
 	if (numberOfPeriods < 2) return NUMundefined;
diff --git a/fon/PointProcess.h b/fon/PointProcess.h
index 89165a7..850cef5 100644
--- a/fon/PointProcess.h
+++ b/fon/PointProcess.h
@@ -2,47 +2,45 @@
 #define _PointProcess_h_
 /* PointProcess.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Function.h"
 #include "Graphics.h"
 
 #include "PointProcess_def.h"
-oo_CLASS_CREATE (PointProcess, Function);
 
-PointProcess PointProcess_create (double startingTime, double finishingTime, long initialMaxnt);
-PointProcess PointProcess_createPoissonProcess (double startingTime, double finishingTime, double density);
-void PointProcess_init (I, double startingTime, double finishingTime, long initialMaxnt);
+autoPointProcess PointProcess_create (double startingTime, double finishingTime, long initialMaxnt);
+autoPointProcess PointProcess_createPoissonProcess (double startingTime, double finishingTime, double density);
+void PointProcess_init (PointProcess me, double startingTime, double finishingTime, long initialMaxnt);
 long PointProcess_getLowIndex (PointProcess me, double t);
 long PointProcess_getHighIndex (PointProcess me, double t);
 long PointProcess_getNearestIndex (PointProcess me, double t);
-long PointProcess_getWindowPoints (PointProcess me, double tmin, double tmax, long *imin, long *imax);
+long PointProcess_getWindowPoints (PointProcess me, double tmin, double tmax, long *p_imin, long *p_imax);
 void PointProcess_addPoint (PointProcess me, double t);
 long PointProcess_findPoint (PointProcess me, double t);
 void PointProcess_removePoint (PointProcess me, long index);
 void PointProcess_removePointNear (PointProcess me, double t);
 void PointProcess_removePoints (PointProcess me, long first, long last);
 void PointProcess_removePointsBetween (PointProcess me, double fromTime, double toTime);
-void PointProcess_draw (PointProcess me, Graphics g, double fromTime, double toTime, int garnish);
+void PointProcess_draw (PointProcess me, Graphics g, double fromTime, double toTime, bool garnish);
 double PointProcess_getInterval (PointProcess me, double t);
-PointProcess PointProcesses_union (PointProcess me, PointProcess thee);
-PointProcess PointProcesses_intersection (PointProcess me, PointProcess thee);
-PointProcess PointProcesses_difference (PointProcess me, PointProcess thee);
+autoPointProcess PointProcesses_union (PointProcess me, PointProcess thee);
+autoPointProcess PointProcesses_intersection (PointProcess me, PointProcess thee);
+autoPointProcess PointProcesses_difference (PointProcess me, PointProcess thee);
 void PointProcess_fill (PointProcess me, double tmin, double tmax, double period);
 void PointProcess_voice (PointProcess me, double period, double maxT);
 
diff --git a/fon/PointProcess_and_Sound.cpp b/fon/PointProcess_and_Sound.cpp
index 196469b..e986755 100644
--- a/fon/PointProcess_and_Sound.cpp
+++ b/fon/PointProcess_and_Sound.cpp
@@ -1,37 +1,24 @@
 /* PointProcess_and_Sound.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2003/04/15 improved handling of edges in Sound_getRms
- * pb 2003/07/20 moved shimmer measurements to VoiceAnalysis.c
- * pb 2005/07/07 glottal source signals
- * pb 2006/12/30 new Sound_create API
- * pb 2007/02/25 changed default sampling frequency to 44100 Hz
- * pb 2008/01/19 double
- * pb 2011/06/06 C++
- * pb 2011/06/19 removed a bug in PointProcess_to_Sound_phonation that caused a crash if a pulse came after the time domain
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointProcess_and_Sound.h"
 
-Sound PointProcess_to_Sound_pulseTrain
+autoSound PointProcess_to_Sound_pulseTrain
 	(PointProcess me, double samplingFrequency,
 	 double adaptFactor, double adaptTime, long interpolationDepth)
 {
@@ -44,7 +31,7 @@ Sound PointProcess_to_Sound_pulseTrain
 		double *sound = thy z [1];
 		for (long it = 1; it <= my nt; it ++) {
 			double t = my t [it], amplitude = 0.9, angle, halfampsinangle;
-			long mid = Sampled_xToNearestIndex (thee.peek(), t);
+			long mid = Sampled_xToNearestIndex (thee.get(), t);
 			if (it <= 2 || my t [it - 2] < my t [it] - adaptTime) {
 				amplitude *= adaptFactor;
 				if (it == 1 || my t [it - 1] < my t [it] - adaptTime)
@@ -53,35 +40,35 @@ Sound PointProcess_to_Sound_pulseTrain
 			long begin = mid - interpolationDepth, end = mid + interpolationDepth;
 			if (begin < 1) begin = 1;
 			if (end > thy nx) end = thy nx;
-			angle = NUMpi * (Sampled_indexToX (thee.peek(), begin) - t) / thy dx;
+			angle = NUMpi * (Sampled_indexToX (thee.get(), begin) - t) / thy dx;
 			halfampsinangle = 0.5 * amplitude * sin (angle);
 			for (long j = begin; j <= end; j ++) {
 				if (fabs (angle) < 1e-6)
 					sound [j] += amplitude;
 				else if (angle < 0.0)
 					sound [j] += halfampsinangle *
-						(1 + cos (angle / (mid - begin + 1))) / angle;
+						(1.0 + cos (angle / (mid - begin + 1))) / angle;
 				else
 					sound [j] += halfampsinangle *
-						(1 + cos (angle / (end - mid + 1))) / angle;
+						(1.0 + cos (angle / (end - mid + 1))) / angle;
 				angle += NUMpi;
 				halfampsinangle = - halfampsinangle;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": pulse train not synthesized.");
 	}
 }
 
-Sound PointProcess_to_Sound_phonation
+autoSound PointProcess_to_Sound_phonation
 	(PointProcess me, double samplingFrequency, double adaptFactor, double maximumPeriod,
 	 double openPhase, double collisionPhase, double power1, double power2)
 {
 	try {
 		long sound_nt = 1 + (long) floor ((my xmax - my xmin) * samplingFrequency);   // >= 1
 		double dt = 1.0 / samplingFrequency;
-		double tmid = (my xmin + my xmax) / 2;
+		double tmid = (my xmin + my xmax) / 2.0;
 		double t1 = tmid - 0.5 * (sound_nt - 1) * dt;
 		double a = (power1 + power2 + 1.0) / (power2 - power1);
 		double re = openPhase - collisionPhase;
@@ -115,7 +102,7 @@ Sound PointProcess_to_Sound_phonation
 		for (long it = 1; it <= my nt; it ++) {
 			double t = my t [it], amplitude = a;
 			double period = NUMundefined, te, phase, flow;
-			long midSample = Sampled_xToNearestIndex (thee.peek(), t);
+			long midSample = Sampled_xToNearestIndex (thee.get(), t);
 			/*
 			 * Determine the period: first look left (because that's where the open phase is),
 			 * then right.
@@ -126,15 +113,15 @@ Sound PointProcess_to_Sound_phonation
 					period = NUMundefined;
 				}
 			}
-			if (period == NUMundefined) {
+			if (! NUMdefined (period)) {
 				if (it < my nt) {
 					period = my t [it + 1] - my t [it];
 					if (period > maximumPeriod) {
 						period = NUMundefined;
 					}
 				}
-				if (period == NUMundefined) {
-					period = 0.5 * maximumPeriod;   /* Some default value. */
+				if (! NUMdefined (period)) {
+					period = 0.5 * maximumPeriod;   // some default value
 				}
 			}
 			te = re * period;
@@ -177,7 +164,7 @@ Sound PointProcess_to_Sound_phonation
 				double value = flowDerivative * factorPerSample;
 				long beginSample = midSample + 1;
 				if (beginSample < 1) beginSample = 1;
-				long endSample = midSample + (long) floor (20 * ta / thy dx);
+				long endSample = midSample + (long) floor (20.0 * ta / thy dx);
 				if (endSample > thy nx) endSample = thy nx;
 				for (long isamp = beginSample; isamp <= endSample; isamp ++) {
 					sound [isamp] += value;
@@ -185,8 +172,8 @@ Sound PointProcess_to_Sound_phonation
 				}
 			}
 		}
-		Vector_scale (thee.peek(), 0.9);
-		return thee.transfer();
+		Vector_scale (thee.get(), 0.9);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (phonation).");
 	}
@@ -194,8 +181,8 @@ Sound PointProcess_to_Sound_phonation
 
 void PointProcess_playPart (PointProcess me, double tmin, double tmax) {
 	try {
-		autoSound sound = PointProcess_to_Sound_pulseTrain (me, 44100, 0.7, 0.05, 30);
-		Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+		autoSound sound = PointProcess_to_Sound_pulseTrain (me, 44100.0, 0.7, 0.05, 30);
+		Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
@@ -206,20 +193,20 @@ void PointProcess_play (PointProcess me) {
 }
 
 void PointProcess_hum (PointProcess me, double tmin, double tmax) {
-	static double formant [1 + 6] = { 0, 600, 1400, 2400, 3400, 4500, 5500 };
-	static double bandwidth [1 + 6] = { 0, 50, 100, 200, 300, 400, 500 };
+	static double formant [1 + 6] = { 0, 600.0, 1400.0, 2400.0, 3400.0, 4500.0, 5500.0 };
+	static double bandwidth [1 + 6] = { 0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 };
 	autoSound sound = PointProcess_to_Sound_pulseTrain (me, 44100, 0.7, 0.05, 30);
-	Sound_filterWithFormants (sound.peek(), tmin, tmax, 6, formant, bandwidth);
-	Sound_playPart (sound.peek(), tmin, tmax, NULL, NULL);
+	Sound_filterWithFormants (sound.get(), tmin, tmax, 6, formant, bandwidth);
+	Sound_playPart (sound.get(), tmin, tmax, nullptr, nullptr);
 }
 
-Sound PointProcess_to_Sound_hum (PointProcess me) {
-	static double formant [1 + 6] = { 0, 600, 1400, 2400, 3400, 4500, 5500 };
-	static double bandwidth [1 + 6] = { 0, 50, 100, 200, 300, 400, 500 };
+autoSound PointProcess_to_Sound_hum (PointProcess me) {
+	static double formant [1 + 6] = { 0, 600.0, 1400.0, 2400.0, 3400.0, 4500.0, 5500.0 };
+	static double bandwidth [1 + 6] = { 0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0 };
 	try {
-		autoSound sound = PointProcess_to_Sound_pulseTrain (me, 44100, 0.7, 0.05, 30);
-		Sound_filterWithFormants (sound.peek(), my xmin, my xmax, 6, formant, bandwidth);
-		return sound.transfer();
+		autoSound sound = PointProcess_to_Sound_pulseTrain (me, 44100.0, 0.7, 0.05, 30);
+		Sound_filterWithFormants (sound.get(), my xmin, my xmax, 6, formant, bandwidth);
+		return sound;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound (hum).");
 	}
diff --git a/fon/PointProcess_and_Sound.h b/fon/PointProcess_and_Sound.h
index bd4045d..1b1e190 100644
--- a/fon/PointProcess_and_Sound.h
+++ b/fon/PointProcess_and_Sound.h
@@ -1,31 +1,29 @@
 /* PointProcess_and_Sound.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PointProcess.h"
 #include "Sound.h"
 
-Sound PointProcess_to_Sound_pulseTrain (PointProcess me, double samplingFrequency,
+autoSound PointProcess_to_Sound_pulseTrain (PointProcess me, double samplingFrequency,
 	double adaptFactor, double adaptTime, long interpolationDepth);
 /*
 	Function:
-		create a time signal out of a point process;
-		return NULL if out of memory.
+		create a time signal out of a point process.
 	Preconditions:
 		samplingFrequency > 0.0;
 	Arguments:
@@ -34,7 +32,7 @@ Sound PointProcess_to_Sound_pulseTrain (PointProcess me, double samplingFrequenc
 		"interpolationDepth" is the number of samples for sinxx interpolation in each direction.
 */
 
-Sound PointProcess_to_Sound_phonation
+autoSound PointProcess_to_Sound_phonation
 	(PointProcess me, double samplingFrequency, double adaptFactor, double maximumPeriod,
 	 double openPhase, double collisionPhase, double power1, double power2);
 #define PointProcess_to_Sound_phonation_DEFAULT_ADAPT_FACTOR  1.0
@@ -47,6 +45,6 @@ Sound PointProcess_to_Sound_phonation
 void PointProcess_playPart (PointProcess me, double tmin, double tmax);
 void PointProcess_play (PointProcess me);
 void PointProcess_hum (PointProcess me, double tmin, double tmax);
-Sound PointProcess_to_Sound_hum (PointProcess me);
+autoSound PointProcess_to_Sound_hum (PointProcess me);
 
 /* End of file PointProcess_and_Sound.h */
diff --git a/fon/PointProcess_def.h b/fon/PointProcess_def.h
index 35c6f92..083ce99 100644
--- a/fon/PointProcess_def.h
+++ b/fon/PointProcess_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/Polygon.cpp b/fon/Polygon.cpp
index 7c40c22..00a9cbf 100644
--- a/fon/Polygon.cpp
+++ b/fon/Polygon.cpp
@@ -1,20 +1,19 @@
 /* Polygon.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Polygon.h"
@@ -34,10 +33,10 @@
 #include "oo_DESCRIPTION.h"
 #include "Polygon_def.h"
 
-Thing_implement (Polygon, Data, 1);
+Thing_implement (Polygon, Daata, 1);
 
 void structPolygon :: v_info () {
-	our structData :: v_info ();
+	our structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of points: ", our numberOfPoints);
 	MelderInfo_writeLine (U"Perimeter: ", Melder_single (Polygon_perimeter (this)));
 }
@@ -62,13 +61,13 @@ void structPolygon :: v_readText (MelderReadText text, int /*formatVersion*/) {
 	}
 }
 
-Polygon Polygon_create (long numberOfPoints) {
+autoPolygon Polygon_create (long numberOfPoints) {
 	try {
 		autoPolygon me = Thing_new (Polygon);
 		my numberOfPoints = numberOfPoints;
 		my x = NUMvector <double> (1, numberOfPoints);
 		my y = NUMvector <double> (1, numberOfPoints);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Polygon not created.");
 	}
diff --git a/fon/Polygon.h b/fon/Polygon.h
index e6d6927..6faabbc 100644
--- a/fon/Polygon.h
+++ b/fon/Polygon.h
@@ -2,35 +2,33 @@
 #define _Polygon_h_
 /* Polygon.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 #include "Graphics.h"
 
 #include "Polygon_def.h"
-oo_CLASS_CREATE (Polygon, Data);
 
-Polygon Polygon_create (long numberOfPoints);
+autoPolygon Polygon_create (long numberOfPoints);
 /*
 	Function:
 		create a new instance of Polygon.
 	Return value:
-		a pointer to the newly created object, or NULL in case of failure.
+		the newly created object.
 	Precondition:
 		numberOfPoints >= 1;
 	Failure:
@@ -50,7 +48,7 @@ void Polygon_salesperson (Polygon me, long numberOfIterations);
 	Function:
 		change the order of the points in such a way that it defines the shortest closed path.
 	Preconditions:
-		me != NULL;
+		!! me;
 		numberOfIterations >= 1;
 	Postconditions:
 		my numberOfPoints == my old numberOfPoints;
diff --git a/fon/Polygon_def.h b/fon/Polygon_def.h
index 6b4e9d0..906bd65 100644
--- a/fon/Polygon_def.h
+++ b/fon/Polygon_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Polygon
-oo_DEFINE_CLASS (Polygon, Data)
+oo_DEFINE_CLASS (Polygon, Daata)
 
 	oo_LONG (numberOfPoints)
 
diff --git a/fon/Praat_tests.cpp b/fon/Praat_tests.cpp
index d10d524..fe9db69 100644
--- a/fon/Praat_tests.cpp
+++ b/fon/Praat_tests.cpp
@@ -1,5 +1,21 @@
-/* Praat_tests.cpp */
-/* Paul Boersma, August 2, 2001 */
+/* Praat_tests.cpp
+ *
+ * Copyright (C) 2001-2012,2015,2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
 /* December 10, 2006: MelderInfo */
 /* November 5, 2007: wchar */
 /* 21 March 2009: modern enums */
@@ -17,9 +33,23 @@
 #include "Praat_tests_enums.h"
 #include <string>
 
+static void testAutoData (autoDaata data) {
+	fprintf (stderr, "testAutoData: %p %p\n", data.get(), data -> name);
+}
+static void testAutoDataRef (autoDaata& data) {
+	fprintf (stderr, "testAutoDataRef: %p %p\n", data.get(), data -> name);
+}
+static void testData (Daata data) {
+	fprintf (stderr, "testData: %p %s\n", data, Melder_peek32to8 (data -> name));
+}
+static autoDaata newAutoData () {
+	autoDaata data (Thing_new (Daata));
+	return data;
+}
+
 int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *arg4) {
 	int64 n = Melder_atoi (arg1);
-	double t;
+	double t = 0.0;
 	(void) arg1;
 	(void) arg2;
 	(void) arg3;
@@ -49,7 +79,7 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			NUMvector_free (array, 1);
 		} break;
 		case kPraatTests_TIME_INTEGER: {
-			double sum = 0;
+			int64 sum = 0;
 			for (int64 i = 1; i <= n; i ++)
 				sum += i * (i - 1) * (i - 2);
 			t = Melder_stopwatch ();
@@ -66,7 +96,7 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			uint64_t sum = 0;
 			double fn = n;
 			for (double fi = 1.0; fi <= fn; fi = fi + 1.0)
-				sum += (uint32_t) fi;
+				sum += (uint32) fi;
 			t = Melder_stopwatch ();   // 2.59   // 1.60
 			MelderInfo_writeLine (sum);
 		} break;
@@ -74,23 +104,23 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			uint64_t sum = 0;
 			double fn = n;
 			for (double fi = 1.0; fi <= fn; fi = fi + 1.0)
-				sum += (uint32_t) ((int32_t) (fi - 2147483648.0) + 2147483647L + 1);
+				sum += (uint32) ((int32) (fi - 2147483648.0) + 2147483647L + 1);
 			t = Melder_stopwatch ();   // 1.60
 			MelderInfo_writeLine (sum);
 		} break;
 		case kPraatTests_TIME_UNSIGNED_TO_FLOAT_BUILTIN: {
 			double sum = 0.0;
-			uint32_t nu = (uint32_t) n;
-			for (uint32_t iu = 1; iu <= nu; iu ++)
+			uint32 nu = (uint32) n;
+			for (uint32 iu = 1; iu <= nu; iu ++)
 				sum += (double) iu;
 			t = Melder_stopwatch ();   // 1.35
 			MelderInfo_writeLine (sum);
 		} break;
 		case kPraatTests_TIME_UNSIGNED_TO_FLOAT_EXTERN: {
 			double sum = 0.0;
-			uint32_t nu = (uint32_t) n;
-			for (uint32_t iu = 1; iu <= nu; iu ++)
-				sum += (double) (int32_t) (iu - 2147483647L - 1) + 2147483648.0;
+			uint32 nu = (uint32) n;
+			for (uint32 iu = 1; iu <= nu; iu ++)
+				sum += (double) (int32) (iu - 2147483647L - 1) + 2147483648.0;
 			t = Melder_stopwatch ();   // 0.96
 			MelderInfo_writeLine (sum);
 		} break;
@@ -105,6 +135,17 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			}
 			t = Melder_stopwatch ();
 		} break;
+		case kPraatTests_TIME_STRING_MELDER_32_ALLOC: {
+			char32 word [] { U"abc" };
+			word [2] = NUMrandomInteger ('a', 'z');
+			for (int64 i = 1; i <= n; i ++) {
+				autoMelderString string;
+				MelderString_copy (& string, word);
+				for (int j = 1; j <= 30; j ++)
+					MelderString_append (& string, word);
+			}
+			t = Melder_stopwatch ();
+		} break;
 		case kPraatTests_TIME_STRING_CPP_S: {
 			std::string s = "";
 			char word [] { "abc" };
@@ -161,7 +202,6 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			t = Melder_stopwatch ();
 		} break;
 		case kPraatTests_TIME_STRING_CPP_U32STRING: {
-			#if ! defined (macintosh) || ! useCarbon
 			std::u32string s = U"";
 			char32 word [] { U"abc" };
 			word [2] = NUMrandomInteger ('a', 'z');
@@ -170,7 +210,6 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 				for (int j = 1; j <= 30; j ++)
 					s += word;
 			}
-			#endif
 			t = Melder_stopwatch ();
 		} break;
 		case kPraatTests_TIME_STRCPY: {
@@ -215,6 +254,79 @@ int Praat_tests (int itest, char32 *arg1, char32 *arg2, char32 *arg3, char32 *ar
 			}
 			t = Melder_stopwatch ();
 		} break;
+		case kPraatTests_THING_AUTO: {
+			int numberOfThingsBefore = theTotalNumberOfThings;
+			{
+				Melder_casual (U"1\n");
+				autoDaata data = Thing_new (Daata);
+				Thing_setName (data.get(), U"hello");
+				Melder_casual (U"2\n");
+				testData (data.get());
+				testAutoData (data.move());
+				autoDaata data18 = Thing_new (Daata);
+				testAutoData (data18.move());
+				fprintf (stderr, "3\n");
+				autoDaata data2 = newAutoData ();
+				fprintf (stderr, "4\n");
+				autoDaata data3 = newAutoData ();
+				fprintf (stderr, "5\n");
+				//data2 = data;   // disabled l-value copy assignment from same class
+				fprintf (stderr, "6\n");
+				autoOrdered ordered = Thing_new (Ordered);
+				fprintf (stderr, "7\n");
+				//data = ordered;   // disabled l-value copy assignment from subclass
+				data = ordered.move();
+				//ordered = data;   // disabled l-value copy assignment from superclass
+				//ordered = data.move();   // assignment from superclass to subclass is rightfully refused by compiler
+				fprintf (stderr, "8\n");
+				data2 = newAutoData ();
+				fprintf (stderr, "8a\n");
+				autoDaata data5 = newAutoData ();
+				fprintf (stderr, "8b\n");
+				data2 = data5.move();
+				fprintf (stderr, "9\n");
+				//ordered = data;   // rightfully refused by compiler
+				fprintf (stderr, "10\n");
+				//autoOrdered ordered2 = Thing_new (Daata);   // rightfully refused by compiler
+				fprintf (stderr, "11\n");
+				autoDaata data4 = Thing_new (Ordered);   // constructor
+				fprintf (stderr, "12\n");
+				//autoDaata data6 = data4;   // disabled l-value copy constructor from same class
+				fprintf (stderr, "13\n");
+				autoDaata data7 = data4.move();
+				fprintf (stderr, "14\n");
+				autoOrdered ordered3 = Thing_new (Ordered);
+				autoDaata data8 = ordered3.move();
+				fprintf (stderr, "15\n");
+				//autoDaata data9 = ordered;   // disabled l-value copy constructor from subclass
+				fprintf (stderr, "16\n");
+				autoDaata data10 = data7.move();
+				fprintf (stderr, "17\n");
+				autoDaata data11 = Thing_new (Daata);   // constructor, move assignment, null destructor
+				fprintf (stderr, "18\n");
+				data11 = Thing_new (Ordered);
+				fprintf (stderr, "19\n");
+				testAutoDataRef (data11);
+				fprintf (stderr, "20\n");
+				//data11 = nullptr;   // disabled implicit assignment of pointer to autopointer
+				fprintf (stderr, "21\n");
+			}
+			int numberOfThingsAfter = theTotalNumberOfThings;
+			fprintf (stderr, "Number of things: before %d, after %d\n", numberOfThingsBefore, numberOfThingsAfter);
+			#if 1
+				MelderCallback<void,structDaata>::FunctionType f;
+				typedef void (*DataFunc) (Daata);
+				typedef void (*OrderedFunc) (Ordered);
+				DataFunc dataFun;
+				OrderedFunc orderedFun;
+				MelderCallback<void,structDaata> dataFun2 (dataFun);
+				MelderCallback<void,structOrdered> orderedFun2 (orderedFun);
+				MelderCallback<void,structDaata> dataFun3 (orderedFun);
+				//MelderCallback<void,structOrdered> orderedFun3 (dataFun);   // rightfully refused by compiler
+				autoDaata data = Thing_new (Daata);
+				dataFun3 (data.get());
+			#endif
+		} break;
 	}
 	MelderInfo_writeLine (Melder_single (t / n * 1e9), U" nanoseconds");
 	MelderInfo_close ();
diff --git a/fon/Praat_tests.h b/fon/Praat_tests.h
index 9117bd9..9ec3799 100644
--- a/fon/Praat_tests.h
+++ b/fon/Praat_tests.h
@@ -1,6 +1,22 @@
 #ifndef _Praat_tests_h_
 #define _Praat_tests_h_
-/* Paul Boersma, 5 June 2015 */
+/* Praat_tests.h
+ *
+ * Copyright (C) 2001,2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 #include "Thing.h"
 
diff --git a/fon/Praat_tests_enums.h b/fon/Praat_tests_enums.h
index fd429d0..8ea9b1c 100644
--- a/fon/Praat_tests_enums.h
+++ b/fon/Praat_tests_enums.h
@@ -1,5 +1,20 @@
-/* Praat_tests_enums.h */
-/* Paul Boersma, 29 June 2015 */
+/* Praat_tests_enums.h
+ *
+ * Copyright (C) 2001-2012,2015,2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 enums_begin (kPraatTests, 0)
 	enums_add (kPraatTests, 0, _, U"_")
@@ -14,16 +29,18 @@ enums_begin (kPraatTests, 0)
 	enums_add (kPraatTests, 9, TIME_UNSIGNED_TO_FLOAT_BUILTIN, U"TimeUnsignedToFloat_builtin")
 	enums_add (kPraatTests, 10, TIME_UNSIGNED_TO_FLOAT_EXTERN, U"TimeUnsignedToFloat_extern")
 	enums_add (kPraatTests, 11, TIME_STRING_MELDER_32, U"TimeStringMelder32")
-	enums_add (kPraatTests, 12, TIME_STRING_CPP_S, U"TimeStringC++S")
-	enums_add (kPraatTests, 13, TIME_STRING_CPP_C, U"TimeStringC++C")
-	enums_add (kPraatTests, 14, TIME_STRING_CPP_WS, U"TimeStringC++WS")
-	enums_add (kPraatTests, 15, TIME_STRING_CPP_WC, U"TimeStringC++WC")
-	enums_add (kPraatTests, 16, TIME_STRING_CPP_32, U"TimeStringC++32")
-	enums_add (kPraatTests, 17, TIME_STRING_CPP_U32STRING, U"TimeStringC++U32STRING")
-	enums_add (kPraatTests, 18, TIME_STRCPY, U"TimeStrcpy")
-	enums_add (kPraatTests, 19, TIME_WCSCPY, U"TimeWcscpy")
-	enums_add (kPraatTests, 20, TIME_STR32CPY, U"TimeStr32cpy")
-	enums_add (kPraatTests, 21, TIME_GRAPHICS_TEXT_TOP, U"TimeGraphicsTextTop")
-enums_end (kPraatTests, 21, CHECK_RANDOM_1009_2009)
+	enums_add (kPraatTests, 12, TIME_STRING_MELDER_32_ALLOC, U"TimeStringMelder32_alloc")
+	enums_add (kPraatTests, 13, TIME_STRING_CPP_S, U"TimeStringC++S")
+	enums_add (kPraatTests, 14, TIME_STRING_CPP_C, U"TimeStringC++C")
+	enums_add (kPraatTests, 15, TIME_STRING_CPP_WS, U"TimeStringC++WS")
+	enums_add (kPraatTests, 16, TIME_STRING_CPP_WC, U"TimeStringC++WC")
+	enums_add (kPraatTests, 17, TIME_STRING_CPP_32, U"TimeStringC++32")
+	enums_add (kPraatTests, 18, TIME_STRING_CPP_U32STRING, U"TimeStringC++U32STRING")
+	enums_add (kPraatTests, 19, TIME_STRCPY, U"TimeStrcpy")
+	enums_add (kPraatTests, 20, TIME_WCSCPY, U"TimeWcscpy")
+	enums_add (kPraatTests, 21, TIME_STR32CPY, U"TimeStr32cpy")
+	enums_add (kPraatTests, 22, TIME_GRAPHICS_TEXT_TOP, U"TimeGraphicsTextTop")
+	enums_add (kPraatTests, 23, THING_AUTO, U"ThingAuto")
+enums_end (kPraatTests, 23, CHECK_RANDOM_1009_2009)
 
 /* End of file Praat_tests_enums.h */
diff --git a/fon/RealTier.cpp b/fon/RealTier.cpp
index 5005a76..1e7b50c 100644
--- a/fon/RealTier.cpp
+++ b/fon/RealTier.cpp
@@ -1,20 +1,19 @@
 /* RealTier.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -43,18 +42,18 @@
 
 Thing_implement (RealPoint, AnyPoint, 0);
 
-RealPoint RealPoint_create (double time, double value) {
+autoRealPoint RealPoint_create (double time, double value) {
 	autoRealPoint me = Thing_new (RealPoint);
 	my number = time;
 	my value = value;
-	return me.transfer();
+	return me;
 }
 
 /********** class RealTier **********/
 
 void structRealTier :: v_info () {
 	structFunction :: v_info ();
-	MelderInfo_writeLine (U"Number of points: ", our numberOfPoints ());
+	MelderInfo_writeLine (U"Number of points: ", our points.size);
 	MelderInfo_writeLine (U"Minimum value: ", RealTier_getMinimumValue (this));
 	MelderInfo_writeLine (U"Maximum value: ", RealTier_getMaximumValue (this));
 }
@@ -69,45 +68,28 @@ double structRealTier :: v_getFunction1 (long irow, double x) {
 	return RealTier_getValueAtTime (this, x);
 }
 
-void structRealTier :: v_shiftX (double xfrom, double xto) {
-	RealTier_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= our numberOfPoints (); i ++) {
-		RealPoint point = our point (i);
-		NUMshift (& point -> number, xfrom, xto);
-	}
-}
-
-void structRealTier :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
-	RealTier_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= our numberOfPoints (); i ++) {
-		RealPoint point = our point (i);
-		NUMscale (& point -> number, xminfrom, xmaxfrom, xminto, xmaxto);
-	}
-}
-
-Thing_implement (RealTier, Function, 0);
+Thing_implement (RealTier, AnyTier, 0);
 
 void RealTier_init (RealTier me, double tmin, double tmax) {
 	my xmin = tmin;
 	my xmax = tmax;
-	my points = SortedSetOfDouble_create ();
 }
 
-RealTier RealTier_create (double tmin, double tmax) {
+autoRealTier RealTier_create (double tmin, double tmax) {
 	try {
 		autoRealTier me = Thing_new (RealTier);
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"RealTier not created.");
 	}
 }
 
-RealTier RealTier_createWithClass (double tmin, double tmax, ClassInfo klas) {
+autoRealTier RealTier_createWithClass (double tmin, double tmax, ClassInfo klas) {
 	try {
-		autoRealTier me = static_cast <RealTier> (Thing_newFromClass (klas));
-		RealTier_init (me.peek(), tmin, tmax);
-		return me.transfer();
+		autoRealTier me = Thing_newFromClass (klas).static_cast_move <structRealTier> ();
+		RealTier_init (me.get(), tmin, tmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (klas -> className, U" not created.");
 	}
@@ -116,29 +98,29 @@ RealTier RealTier_createWithClass (double tmin, double tmax, ClassInfo klas) {
 void RealTier_addPoint (RealTier me, double t, double value) {
 	try {
 		autoRealPoint point = RealPoint_create (t, value);
-		Collection_addItem (my points, point.transfer());
+		my points. addItem_move (point.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": point not added.");
 	}
 }
 
 double RealTier_getValueAtIndex (RealTier me, long i) {
-	if (i < 1 || i > my numberOfPoints ()) return NUMundefined;
-	return my point (i) -> value;
+	if (i < 1 || i > my points.size) return NUMundefined;
+	return my points.at [i] -> value;
 }
 
 double RealTier_getValueAtTime (RealTier me, double t) {
-	long n = my numberOfPoints ();
+	long n = my points.size;
 	if (n == 0) return NUMundefined;
-	RealPoint pointRight = my point (1);
+	RealPoint pointRight = my points.at [1];
 	if (t <= pointRight -> number) return pointRight -> value;   // constant extrapolation
-	RealPoint pointLeft = my point (n);
+	RealPoint pointLeft = my points.at [n];
 	if (t >= pointLeft -> number) return pointLeft -> value;   // constant extrapolation
 	Melder_assert (n >= 2);
-	long ileft = AnyTier_timeToLowIndex (me, t), iright = ileft + 1;
+	long ileft = AnyTier_timeToLowIndex (me->asAnyTier(), t), iright = ileft + 1;
 	Melder_assert (ileft >= 1 && iright <= n);
-	pointLeft = my point (ileft);
-	pointRight = my point (iright);
+	pointLeft = my points.at [ileft];
+	pointRight = my points.at [iright];
 	double tleft = pointLeft -> number, fleft = pointLeft -> value;
 	double tright = pointRight -> number, fright = pointRight -> value;
 	return t == tright ? fright   // be very accurate
@@ -148,9 +130,9 @@ double RealTier_getValueAtTime (RealTier me, double t) {
 
 double RealTier_getMaximumValue (RealTier me) {
 	double result = NUMundefined;
-	long n = my numberOfPoints ();
+	long n = my points.size;
 	for (long i = 1; i <= n; i ++) {
-		RealPoint point = my point (i);
+		RealPoint point = my points.at [i];
 		if (result == NUMundefined || point -> value > result)
 			result = point -> value;
 	}
@@ -159,9 +141,9 @@ double RealTier_getMaximumValue (RealTier me) {
 
 double RealTier_getMinimumValue (RealTier me) {
 	double result = NUMundefined;
-	long n = my numberOfPoints ();
+	long n = my points.size;
 	for (long i = 1; i <= n; i ++) {
-		RealPoint point = my point (i);
+		RealPoint point = my points.at [i];
 		if (result == NUMundefined || point -> value < result)
 			result = point -> value;
 	}
@@ -169,14 +151,14 @@ double RealTier_getMinimumValue (RealTier me) {
 }
 
 double RealTier_getArea (RealTier me, double tmin, double tmax) {
-	long n = my numberOfPoints (), imin, imax;
-	RealPoint *points = my peekPoints ();
+	long n = my points.size, imin, imax;
+	//RealPoint *points = & my points [0];
 	if (n == 0) return NUMundefined;
-	if (n == 1) return (tmax - tmin) * points [1] -> value;
-	imin = AnyTier_timeToLowIndex (me, tmin);
-	if (imin == n) return (tmax - tmin) * points [n] -> value;
-	imax = AnyTier_timeToHighIndex (me, tmax);
-	if (imax == 1) return (tmax - tmin) * points [1] -> value;
+	if (n == 1) return (tmax - tmin) * my points.at [1] -> value;
+	imin = AnyTier_timeToLowIndex (me->asAnyTier(), tmin);
+	if (imin == n) return (tmax - tmin) * my points.at [n] -> value;
+	imax = AnyTier_timeToHighIndex (me->asAnyTier(), tmax);
+	if (imax == 1) return (tmax - tmin) * my points.at [1] -> value;
 	Melder_assert (imin < n);
 	Melder_assert (imax > 1);
 	/*
@@ -186,10 +168,20 @@ double RealTier_getArea (RealTier me, double tmin, double tmax) {
 	double area = 0.0;
 	for (long i = imin; i < imax; i ++) {
 		double tleft, fleft, tright, fright;
-		if (i == imin) tleft = tmin, fleft = RealTier_getValueAtTime (me, tmin);
-		else tleft = points [i] -> number, fleft = points [i] -> value;
-		if (i + 1 == imax) tright = tmax, fright = RealTier_getValueAtTime (me, tmax);
-		else tright = points [i + 1] -> number, fright = points [i + 1] -> value;
+		if (i == imin) {
+			tleft = tmin;
+			fleft = RealTier_getValueAtTime (me, tmin);
+		} else {
+			tleft = my points.at [i] -> number;
+			fleft = my points.at [i] -> value;
+		}
+		if (i + 1 == imax) {
+			tright = tmax;
+			fright = RealTier_getValueAtTime (me, tmax);
+		} else {
+			tright = my points.at [i + 1] -> number;
+			fright = my points.at [i + 1] -> value;
+		}
 		area += 0.5 * (fleft + fright) * (tright - tleft);
 	}
 	return area;
@@ -203,15 +195,14 @@ double RealTier_getMean_curve (RealTier me, double tmin, double tmax) {
 }
 
 double RealTier_getStandardDeviation_curve (RealTier me, double tmin, double tmax) {
-	long n = my numberOfPoints (), imin, imax;
-	RealPoint *points = my peekPoints ();
+	long n = my points.size, imin, imax;
 	double mean, integral = 0.0;
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindow
 	if (n == 0) return NUMundefined;
 	if (n == 1) return 0.0;
-	imin = AnyTier_timeToLowIndex (me, tmin);
+	imin = AnyTier_timeToLowIndex (me->asAnyTier(), tmin);
 	if (imin == n) return 0.0;
-	imax = AnyTier_timeToHighIndex (me, tmax);
+	imax = AnyTier_timeToHighIndex (me->asAnyTier(), tmax);
 	if (imax == 1) return 0.0;
 	Melder_assert (imin < n);
 	Melder_assert (imax > 1);
@@ -222,10 +213,20 @@ double RealTier_getStandardDeviation_curve (RealTier me, double tmin, double tma
 	mean = RealTier_getMean_curve (me, tmin, tmax);
 	for (long i = imin; i < imax; i ++) {
 		double tleft, fleft, tright, fright, sum, diff;
-		if (i == imin) tleft = tmin, fleft = RealTier_getValueAtTime (me, tmin);
-		else tleft = points [i] -> number, fleft = points [i] -> value - mean;
-		if (i + 1 == imax) tright = tmax, fright = RealTier_getValueAtTime (me, tmax);
-		else tright = points [i + 1] -> number, fright = points [i + 1] -> value - mean;
+		if (i == imin) {
+			tleft = tmin;
+			fleft = RealTier_getValueAtTime (me, tmin);
+		} else {
+			tleft = my points.at [i] -> number;
+			fleft = my points.at [i] -> value - mean;
+		}
+		if (i + 1 == imax) {
+			tright = tmax;
+			fright = RealTier_getValueAtTime (me, tmax);
+		} else {
+			tright = my points.at [i + 1] -> number;
+			fright = my points.at [i + 1] -> value - mean;
+		}
 		/*
 		 * The area is integral dt f^2
 		 *   = integral dt [f1 + (f2-f1)/(t2-t1) (t-t1)]^2
@@ -244,35 +245,33 @@ double RealTier_getStandardDeviation_curve (RealTier me, double tmin, double tma
 }
 
 double RealTier_getMean_points (RealTier me, double tmin, double tmax) {
-	long n = my numberOfPoints (), imin, imax;
+	long n = my points.size, imin, imax;
 	double sum = 0.0;
-	RealPoint *points = my peekPoints ();
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindow
-	n = AnyTier_getWindowPoints (me, tmin, tmax, & imin, & imax);
+	n = AnyTier_getWindowPoints (me->asAnyTier(), tmin, tmax, & imin, & imax);
 	if (n == 0) return NUMundefined;
 	for (long i = imin; i <= imax; i ++)
-		sum += points [i] -> value;
+		sum += my points.at [i] -> value;
 	return sum / n;
 }
 
 double RealTier_getStandardDeviation_points (RealTier me, double tmin, double tmax) {
-	long n = my numberOfPoints (), imin, imax;
+	long n = my points.size, imin, imax;
 	double mean, sum = 0.0;
-	RealPoint *points = my peekPoints ();
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }   // autowindow
-	n = AnyTier_getWindowPoints (me, tmin, tmax, & imin, & imax);
+	n = AnyTier_getWindowPoints (me->asAnyTier(), tmin, tmax, & imin, & imax);
 	if (n < 2) return NUMundefined;
 	mean = RealTier_getMean_points (me, tmin, tmax);
 	for (long i = imin; i <= imax; i ++) {
-		double diff = points [i] -> value - mean;
+		double diff = my points.at [i] -> value - mean;
 		sum += diff * diff;
 	}
 	return sqrt (sum / (n - 1));
 }
 
 void RealTier_multiplyPart (RealTier me, double tmin, double tmax, double factor) {
-	for (long ipoint = 1; ipoint <= my numberOfPoints (); ipoint ++) {
-		RealPoint point = my point (ipoint);
+	for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+		RealPoint point = my points.at [ipoint];
 		double t = point -> number;
 		if (t >= tmin && t <= tmax) {
 			point -> value *= factor;
@@ -285,19 +284,19 @@ void RealTier_draw (RealTier me, Graphics g, double tmin, double tmax, double fm
 {
 	bool drawLines = str32str (method, U"lines") || str32str (method, U"Lines");
 	bool drawSpeckles = str32str (method, U"speckles") || str32str (method, U"Speckles");
-	long n = my numberOfPoints (), imin, imax, i;
+	long n = my points.size, imin, imax, i;
 	if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
 	Graphics_setWindow (g, tmin, tmax, fmin, fmax);
 	Graphics_setInner (g);
-	imin = AnyTier_timeToHighIndex (me, tmin);
-	imax = AnyTier_timeToLowIndex (me, tmax);
+	imin = AnyTier_timeToHighIndex (me->asAnyTier(), tmin);
+	imax = AnyTier_timeToLowIndex (me->asAnyTier(), tmax);
 	if (n == 0) {
 	} else if (imax < imin) {
 		double fleft = RealTier_getValueAtTime (me, tmin);
 		double fright = RealTier_getValueAtTime (me, tmax);
 		if (drawLines) Graphics_line (g, tmin, fleft, tmax, fright);
 	} else for (i = imin; i <= imax; i ++) {
-		RealPoint point = my point (i);
+		RealPoint point = my points.at [i];
 		double t = point -> number, f = point -> value;
 		if (drawSpeckles) Graphics_speckle (g, t, f);
 		if (drawLines) {
@@ -310,7 +309,7 @@ void RealTier_draw (RealTier me, Graphics g, double tmin, double tmax, double fm
 			else if (i == imax)
 				Graphics_line (g, t, f, tmax, RealTier_getValueAtTime (me, tmax));
 			else {
-				RealPoint pointRight = my point (i + 1);
+				RealPoint pointRight = my points.at [i + 1];
 				Graphics_line (g, t, f, pointRight -> number, pointRight -> value);
 			}
 		}
@@ -318,24 +317,24 @@ void RealTier_draw (RealTier me, Graphics g, double tmin, double tmax, double fm
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, TRUE, my v_getUnitText (0, 0, 0));
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
-		Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
-		if (quantity) Graphics_textLeft (g, TRUE, quantity);
+		Graphics_textBottom (g, true, my v_getUnitText (0, 0, 0));
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		if (quantity) Graphics_textLeft (g, true, quantity);
 	}
 }
 
-TableOfReal RealTier_downto_TableOfReal (RealTier me, const char32 *timeLabel, const char32 *valueLabel) {
+autoTableOfReal RealTier_downto_TableOfReal (RealTier me, const char32 *timeLabel, const char32 *valueLabel) {
 	try {
-		autoTableOfReal thee = TableOfReal_create (my numberOfPoints (), 2);
-		TableOfReal_setColumnLabel (thee.peek(), 1, timeLabel);
-		TableOfReal_setColumnLabel (thee.peek(), 2, valueLabel);
-		for (long i = 1; i <= my numberOfPoints (); i ++) {
-			RealPoint point = my point (i);
+		autoTableOfReal thee = TableOfReal_create (my points.size, 2);
+		TableOfReal_setColumnLabel (thee.get(), 1, timeLabel);
+		TableOfReal_setColumnLabel (thee.get(), 2, valueLabel);
+		for (long i = 1; i <= my points.size; i ++) {
+			RealPoint point = my points.at [i];
 			thy data [i] [1] = point -> number;
 			thy data [i] [2] = point -> value;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
@@ -344,8 +343,8 @@ TableOfReal RealTier_downto_TableOfReal (RealTier me, const char32 *timeLabel, c
 void RealTier_interpolateQuadratically (RealTier me, long numberOfPointsPerParabola, int logarithmically) {
 	try {
 		autoRealTier thee = Data_copy (me);
-		for (long ipoint = 1; ipoint < my numberOfPoints (); ipoint ++) {
-			RealPoint point1 = my point (ipoint), point2 = my point (ipoint + 1);
+		for (long ipoint = 1; ipoint < my points.size; ipoint ++) {
+			RealPoint point1 = my points.at [ipoint], point2 = my points.at [ipoint + 1];
 			double time1 = point1 -> number, time2 = point2 -> number, tmid = 0.5 * (time1 + time2);
 			double value1 = point1 -> value, value2 = point2 -> value, valuemid;
 			double timeStep = (tmid - time1) / (numberOfPointsPerParabola + 1);
@@ -359,12 +358,12 @@ void RealTier_interpolateQuadratically (RealTier me, long numberOfPointsPerParab
 				double phase = (newTime - time1) / (tmid - time1);
 				double newValue = value1 + (valuemid - value1) * phase * phase;
 				if (logarithmically) newValue = exp (newValue);
-				RealTier_addPoint (thee.peek(), newTime, newValue);
+				RealTier_addPoint (thee.get(), newTime, newValue);
 			}
 			/*
 			 * The midpoint.
 			 */
-			RealTier_addPoint (thee.peek(), tmid, logarithmically ? exp (valuemid) : valuemid);
+			RealTier_addPoint (thee.get(), tmid, logarithmically ? exp (valuemid) : valuemid);
 			/*
 			 * Right from the midpoint.
 			 */
@@ -373,49 +372,49 @@ void RealTier_interpolateQuadratically (RealTier me, long numberOfPointsPerParab
 				double phase = (time2 - newTime) / (time2 - tmid);
 				double newValue = value2 + (valuemid - value2) * phase * phase;
 				if (logarithmically) newValue = exp (newValue);
-				RealTier_addPoint (thee.peek(), newTime, newValue);
+				RealTier_addPoint (thee.get(), newTime, newValue);
 			}
 		}
-		Thing_swap (me, thee.peek());
+		Thing_swap (me, thee.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": not interpolated quadratically.");
 	}
 }
 
-Table RealTier_downto_Table (RealTier me, const char32 *indexText, const char32 *timeText, const char32 *valueText) {
+autoTable RealTier_downto_Table (RealTier me, const char32 *indexText, const char32 *timeText, const char32 *valueText) {
 	try {
-		autoTable thee = Table_createWithoutColumnNames (my numberOfPoints (),
-			(indexText != NULL) + (timeText != NULL) + (valueText != NULL));
+		autoTable thee = Table_createWithoutColumnNames (my points.size,
+			(!! indexText) + (!! timeText) + (!! valueText));
 		long icol = 0;
-		if (indexText != NULL) Table_setColumnLabel (thee.peek(), ++ icol, indexText);
-		if (timeText  != NULL) Table_setColumnLabel (thee.peek(), ++ icol, timeText);
-		if (valueText != NULL) Table_setColumnLabel (thee.peek(), ++ icol, valueText);
-		for (long ipoint = 1; ipoint <= my numberOfPoints (); ipoint ++) {
-			RealPoint point = my point (ipoint);
+		if (indexText) Table_setColumnLabel (thee.get(), ++ icol, indexText);
+		if (timeText ) Table_setColumnLabel (thee.get(), ++ icol, timeText);
+		if (valueText) Table_setColumnLabel (thee.get(), ++ icol, valueText);
+		for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+			RealPoint point = my points.at [ipoint];
 			icol = 0;
-			if (indexText != NULL) Table_setNumericValue (thee.peek(), ipoint, ++ icol, ipoint);
-			if (timeText != NULL)  Table_setNumericValue (thee.peek(), ipoint, ++ icol, point -> number);
-			if (valueText != NULL) Table_setNumericValue (thee.peek(), ipoint, ++ icol, point -> value);
+			if (indexText) Table_setNumericValue (thee.get(), ipoint, ++ icol, ipoint);
+			if (timeText)  Table_setNumericValue (thee.get(), ipoint, ++ icol, point -> number);
+			if (valueText) Table_setNumericValue (thee.get(), ipoint, ++ icol, point -> value);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
 }
 
-RealTier Vector_to_RealTier (Vector me, long channel, ClassInfo klas) {
+autoRealTier Vector_to_RealTier (Vector me, long channel, ClassInfo klas) {
 	try {
 		autoRealTier thee = RealTier_createWithClass (my xmin, my xmax, klas);
 		for (long i = 1; i <= my nx; i ++) {
-			RealTier_addPoint (thee.peek(), Sampled_indexToX (me, i), my z [channel] [i]);
+			RealTier_addPoint (thee.get(), Sampled_indexToX (me, i), my z [channel] [i]);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ", klas -> className, U".");
 	}
 }
 
-RealTier Vector_to_RealTier_peaks (Vector me, long channel, ClassInfo klas) {
+autoRealTier Vector_to_RealTier_peaks (Vector me, long channel, ClassInfo klas) {
 	try {
 		autoRealTier thee = RealTier_createWithClass (my xmin, my xmax, klas);
 		for (long i = 2; i < my nx; i ++) {
@@ -424,16 +423,16 @@ RealTier Vector_to_RealTier_peaks (Vector me, long channel, ClassInfo klas) {
 				double x, maximum;
 				Vector_getMaximumAndX (me, my x1 + (i - 2.5) * my dx, my x1 + (i + 0.5) * my dx,
 					channel, NUM_PEAK_INTERPOLATE_PARABOLIC, & maximum, & x);
-				RealTier_addPoint (thee.peek(), x, maximum);
+				RealTier_addPoint (thee.get(), x, maximum);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ", klas -> className, U" (peaks).");
 	}
 }
 
-RealTier Vector_to_RealTier_valleys (Vector me, long channel, ClassInfo klas) {
+autoRealTier Vector_to_RealTier_valleys (Vector me, long channel, ClassInfo klas) {
 	try {
 		autoRealTier thee = RealTier_createWithClass (my xmin, my xmax, klas);
 		for (long i = 2; i < my nx; i ++) {
@@ -442,22 +441,22 @@ RealTier Vector_to_RealTier_valleys (Vector me, long channel, ClassInfo klas) {
 				double x, minimum;
 				Vector_getMinimumAndX (me, my x1 + (i - 2.5) * my dx, my x1 + (i + 0.5) * my dx,
 					channel, NUM_PEAK_INTERPOLATE_PARABOLIC, & minimum, & x);
-				RealTier_addPoint (thee.peek(), x, minimum);
+				RealTier_addPoint (thee.get(), x, minimum);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to ", klas -> className, U" (valleys).");
 	}
 }
 
-RealTier PointProcess_upto_RealTier (PointProcess me, double value, ClassInfo klas) {
+autoRealTier PointProcess_upto_RealTier (PointProcess me, double value, ClassInfo klas) {
 	try {
 		autoRealTier thee = RealTier_createWithClass (my xmin, my xmax, klas);
 		for (long i = 1; i <= my nt; i ++) {
-			RealTier_addPoint (thee.peek(), my t [i], value);
+			RealTier_addPoint (thee.get(), my t [i], value);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to RealTier.");
 	}
@@ -465,14 +464,14 @@ RealTier PointProcess_upto_RealTier (PointProcess me, double value, ClassInfo kl
 
 void RealTier_formula (RealTier me, const char32 *expression, Interpreter interpreter, RealTier thee) {
 	try {
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (thee == NULL) thee = me;
-		for (long icol = 1; icol <= my numberOfPoints (); icol ++) {
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! thee) thee = me;
+		for (long icol = 1; icol <= my points.size; icol ++) {
 			struct Formula_Result result;
 			Formula_run (0, icol, & result);
 			if (result. result.numericResult == NUMundefined)
 				Melder_throw (U"Cannot put an undefined value into the tier.");
-			thy point (icol) -> value = result. result.numericResult;
+			thy points.at [icol] -> value = result. result.numericResult;
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": formula not completed.");
@@ -480,10 +479,10 @@ void RealTier_formula (RealTier me, const char32 *expression, Interpreter interp
 }
 
 void RealTier_removePointsBelow (RealTier me, double level) {
-	for (long ipoint = my numberOfPoints (); ipoint > 0; ipoint --) {
-		RealPoint point = my point (ipoint);
+	for (long ipoint = my points.size; ipoint > 0; ipoint --) {
+		RealPoint point = my points.at [ipoint];
 		if (point -> value < level) {
-			AnyTier_removePoint (me, ipoint);
+			AnyTier_removePoint (me->asAnyTier(), ipoint);
 		}
 	}
 }
diff --git a/fon/RealTier.h b/fon/RealTier.h
index 3f6da29..207bd01 100644
--- a/fon/RealTier.h
+++ b/fon/RealTier.h
@@ -4,33 +4,31 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AnyTier.h"
 #include "Graphics.h"
 #include "TableOfReal.h"
 #include "Vector.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 /********** class RealPoint **********/
 
 #include "RealTier_def.h"
-oo_CLASS_CREATE (RealPoint, AnyPoint);
 
-RealPoint RealPoint_create (double time, double value);
+autoRealPoint RealPoint_create (double time, double value);
 /*
 	Postconditions:
 		result -> time == time;
@@ -39,16 +37,16 @@ RealPoint RealPoint_create (double time, double value);
 
 /********** class RealTier **********/
 
-oo_CLASS_CREATE (RealTier, Function);
+//oo_CLASS_CREATE (RealTier);
 
 void RealTier_init (RealTier me, double tmin, double tmax);
-RealTier RealTier_create (double tmin, double tmax);
-RealTier RealTier_createWithClass (double tmin, double tmax, ClassInfo klas);
+autoRealTier RealTier_create (double tmin, double tmax);
+autoRealTier RealTier_createWithClass (double tmin, double tmax, ClassInfo klas);
 /*
 	Postconditions:
 		result -> xmin == tmin;
 		result -> xmax == tmax;
-		result -> points -> size == 0;
+		result -> points.size == 0;
 */
 
 double RealTier_getValueAtIndex (RealTier me, long point);
@@ -70,15 +68,15 @@ double RealTier_getStandardDeviation_points (RealTier me, double tmin, double tm
 void RealTier_addPoint (RealTier me, double t, double value);
 void RealTier_draw (RealTier me, Graphics g, double tmin, double tmax,
 	double ymin, double ymax, int garnish, const char32 *method, const char32 *quantity);
-TableOfReal RealTier_downto_TableOfReal (RealTier me, const char32 *timeLabel, const char32 *valueLabel);
+autoTableOfReal RealTier_downto_TableOfReal (RealTier me, const char32 *timeLabel, const char32 *valueLabel);
 
 void RealTier_interpolateQuadratically (RealTier me, long numberOfPointsPerParabola, int logarithmically);
 
-Table RealTier_downto_Table (RealTier me, const char32 *indexText, const char32 *timeText, const char32 *valueText);
-RealTier Vector_to_RealTier (Vector me, long channel, ClassInfo klas);
-RealTier Vector_to_RealTier_peaks (Vector me, long channel, ClassInfo klas);
-RealTier Vector_to_RealTier_valleys (Vector me, long channel, ClassInfo klas);
-RealTier PointProcess_upto_RealTier (PointProcess me, double value, ClassInfo klas);
+autoTable RealTier_downto_Table (RealTier me, const char32 *indexText, const char32 *timeText, const char32 *valueText);
+autoRealTier Vector_to_RealTier (Vector me, long channel, ClassInfo klas);
+autoRealTier Vector_to_RealTier_peaks (Vector me, long channel, ClassInfo klas);
+autoRealTier Vector_to_RealTier_valleys (Vector me, long channel, ClassInfo klas);
+autoRealTier PointProcess_upto_RealTier (PointProcess me, double value, ClassInfo klas);
 
 void RealTier_formula (RealTier me, const char32 *expression, Interpreter interpreter, RealTier thee);
 void RealTier_multiplyPart (RealTier me, double tmin, double tmax, double factor);
diff --git a/fon/RealTierEditor.cpp b/fon/RealTierEditor.cpp
index 2331e4e..2145525 100644
--- a/fon/RealTierEditor.cpp
+++ b/fon/RealTierEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTierEditor.h"
@@ -26,20 +25,19 @@ Thing_implement (RealTierEditor, TimeSoundEditor, 0);
 
 /********** MENU COMMANDS **********/
 
-static void menu_cb_removePoints (EDITOR_ARGS) {
-	EDITOR_IAM (RealTierEditor);
+static void menu_cb_removePoints (RealTierEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Remove point(s)");
+	RealTier tier = (RealTier) my data;
 	if (my d_startSelection == my d_endSelection)
-		AnyTier_removePointNear (my data, my d_startSelection);
+		AnyTier_removePointNear (tier->asAnyTier(), my d_startSelection);
 	else
-		AnyTier_removePointsBetween (my data, my d_startSelection, my d_endSelection);
+		AnyTier_removePointsBetween (tier->asAnyTier(), my d_startSelection, my d_endSelection);
 	RealTierEditor_updateScaling (me);
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAtCursor (EDITOR_ARGS) {
-	EDITOR_IAM (RealTierEditor);
+static void menu_cb_addPointAtCursor (RealTierEditor me, EDITOR_ARGS_DIRECT) {
 	if (NUMdefined (my v_minimumLegalValue ()) && my ycursor < my v_minimumLegalValue ())
 		Melder_throw (U"Cannot add a point below ", my v_minimumLegalValue (), my v_rightTickUnits (), U".");
 	if (NUMdefined (my v_maximumLegalValue ()) && my ycursor > my v_maximumLegalValue ())
@@ -51,8 +49,7 @@ static void menu_cb_addPointAtCursor (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_addPointAt (EDITOR_ARGS) {
-	EDITOR_IAM (RealTierEditor);
+static void menu_cb_addPointAt (RealTierEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Add point", 0)
 		REAL (U"Time (s)", U"0.0")
 		REAL (my v_quantityText (), U"0.0")
@@ -73,8 +70,7 @@ static void menu_cb_addPointAt (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_setRange (EDITOR_ARGS) {
-	EDITOR_IAM (RealTierEditor);
+static void menu_cb_setRange (RealTierEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (my v_setRangeTitle (), 0)
 		REAL (my v_yminText (), my v_defaultYminText ())
 		REAL (my v_ymaxText (), my v_defaultYmaxText ())
@@ -100,13 +96,13 @@ void structRealTierEditor :: v_createMenus () {
 	EditorMenu menu = Editor_addMenu (this, U"Point", 0);
 	EditorMenu_addCommand (menu, U"Add point at cursor", 'T', menu_cb_addPointAtCursor);
 	EditorMenu_addCommand (menu, U"Add point at...", 0, menu_cb_addPointAt);
-	EditorMenu_addCommand (menu, U"-- remove point --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- remove point --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Remove point(s)", GuiMenu_OPTION + 'T', menu_cb_removePoints);
 }
 
 void RealTierEditor_updateScaling (RealTierEditor me) {
 	RealTier data = (RealTier) my data;
-	if (data -> points -> size == 0) {
+	if (data -> points.size == 0) {
 		my ymin = my v_defaultYmin ();
 		my ymax = my v_defaultYmax ();
 	} else {
@@ -152,104 +148,102 @@ void structRealTierEditor :: v_dataChanged () {
 
 void structRealTierEditor :: v_draw () {
 	RealTier data = (RealTier) our data;
-	long ifirstSelected, ilastSelected, n = data -> points -> size, imin, imax, i;
+	long n = data -> points.size;
+	Melder_casual (U"structRealTierEditor :: v_draw ", n);
 	Graphics_Viewport viewport;
 	if (our d_sound.data) {
-		viewport = Graphics_insetViewport (our d_graphics, 0, 1, 1 - SOUND_HEIGHT, 1.0);
-		Graphics_setColour (our d_graphics, Graphics_WHITE);
-		Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-		Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
+		viewport = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 1.0 - SOUND_HEIGHT, 1.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+		Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 		TimeSoundEditor_drawSound (this, -1.0, 1.0);
-		Graphics_resetViewport (our d_graphics, viewport);
-		Graphics_insetViewport (our d_graphics, 0, 1, 0.0, 1 - SOUND_HEIGHT);
+		Graphics_resetViewport (our d_graphics.get(), viewport);
+		Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0 - SOUND_HEIGHT);
 	}
-	Graphics_setColour (our d_graphics, Graphics_WHITE);
-	Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, our ymin, our ymax);
-	Graphics_setColour (our d_graphics, Graphics_RED);
-	Graphics_line (our d_graphics, our d_startWindow, ycursor, our d_endWindow, our ycursor);
-	Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-	Graphics_text (our d_graphics, our d_startWindow, our ycursor, Melder_float (Melder_half (our ycursor)));
-	Graphics_setColour (our d_graphics, Graphics_BLUE);
-	Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_TOP);
-	Graphics_text (our d_graphics, our d_endWindow, our ymax,   Melder_float (Melder_half (ymax)), our v_rightTickUnits ());
-	Graphics_setTextAlignment (our d_graphics, Graphics_LEFT, Graphics_HALF);
-	Graphics_text (our d_graphics, our d_endWindow, our ymin,   Melder_float (Melder_half (our ymin)), our v_rightTickUnits ());
-	ifirstSelected = AnyTier_timeToHighIndex (data, our d_startSelection);
-	ilastSelected = AnyTier_timeToLowIndex (data, our d_endSelection);
-	imin = AnyTier_timeToHighIndex (data, our d_startWindow);
-	imax = AnyTier_timeToLowIndex (data, our d_endWindow);
-	Graphics_setLineWidth (our d_graphics, 2);
+	Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, our ymin, our ymax);
+	Graphics_setColour (our d_graphics.get(), Graphics_RED);
+	Graphics_line (our d_graphics.get(), our d_startWindow, ycursor, our d_endWindow, our ycursor);
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+	Graphics_text (our d_graphics.get(), our d_startWindow, our ycursor, Melder_float (Melder_half (our ycursor)));
+	Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_TOP);
+	Graphics_text (our d_graphics.get(), our d_endWindow, our ymax,   Melder_float (Melder_half (ymax)), our v_rightTickUnits ());
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+	Graphics_text (our d_graphics.get(), our d_endWindow, our ymin,   Melder_float (Melder_half (our ymin)), our v_rightTickUnits ());
+	long ifirstSelected = AnyTier_timeToHighIndex (data->asAnyTier(), our d_startSelection);
+	long ilastSelected = AnyTier_timeToLowIndex (data->asAnyTier(), our d_endSelection);
+	Melder_casual (U"structRealTierEditor :: v_draw: selected from ", our d_startSelection, U" ",
+		ifirstSelected, U" to ", our d_endSelection, U" ", ilastSelected);
+	long imin = AnyTier_timeToHighIndex (data->asAnyTier(), our d_startWindow);
+	long imax = AnyTier_timeToLowIndex (data->asAnyTier(), our d_endWindow);
+	Graphics_setLineWidth (our d_graphics.get(), 2.0);
 	if (n == 0) {
-		Graphics_setTextAlignment (our d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (our d_graphics, 0.5 * (our d_startWindow + our d_endWindow),
+		Graphics_setTextAlignment (our d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (our d_graphics.get(), 0.5 * (our d_startWindow + our d_endWindow),
 			0.5 * (our ymin + our ymax), U"(no points)");
 	} else if (imax < imin) {
 		double yleft = RealTier_getValueAtTime (data, our d_startWindow);
 		double yright = RealTier_getValueAtTime (data, our d_endWindow);
-		Graphics_line (our d_graphics, our d_startWindow, yleft, our d_endWindow, yright);
-	} else for (i = imin; i <= imax; i ++) {
-		RealPoint point = data -> point (i);
+		Graphics_line (our d_graphics.get(), our d_startWindow, yleft, our d_endWindow, yright);
+	} else for (long i = imin; i <= imax; i ++) {
+		RealPoint point = data -> points.at [i];
 		double t = point -> number, y = point -> value;
 		if (i >= ifirstSelected && i <= ilastSelected)
-			Graphics_setColour (our d_graphics, Graphics_RED);
-		Graphics_fillCircle_mm (our d_graphics, t, y, 3);
-		Graphics_setColour (our d_graphics, Graphics_BLUE);
+			Graphics_setColour (our d_graphics.get(), Graphics_RED);
+		Graphics_fillCircle_mm (our d_graphics.get(), t, y, 3.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
 		if (i == 1)
-			Graphics_line (our d_graphics, our d_startWindow, y, t, y);
+			Graphics_line (our d_graphics.get(), our d_startWindow, y, t, y);
 		else if (i == imin)
-			Graphics_line (our d_graphics, t, y, our d_startWindow, RealTier_getValueAtTime (data, our d_startWindow));
+			Graphics_line (our d_graphics.get(), t, y, our d_startWindow, RealTier_getValueAtTime (data, our d_startWindow));
 		if (i == n)
-			Graphics_line (our d_graphics, t, y, our d_endWindow, y);
+			Graphics_line (our d_graphics.get(), t, y, our d_endWindow, y);
 		else if (i == imax)
-			Graphics_line (our d_graphics, t, y, our d_endWindow, RealTier_getValueAtTime (data, our d_endWindow));
+			Graphics_line (our d_graphics.get(), t, y, our d_endWindow, RealTier_getValueAtTime (data, our d_endWindow));
 		else {
-			RealPoint pointRight = data -> point (i + 1);
-			Graphics_line (our d_graphics, t, y, pointRight -> number, pointRight -> value);
+			RealPoint pointRight = data -> points.at [i + 1];
+			Graphics_line (our d_graphics.get(), t, y, pointRight -> number, pointRight -> value);
 		}
 	}
-	Graphics_setLineWidth (our d_graphics, 1);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
+	Graphics_setLineWidth (our d_graphics.get(), 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
 	our v_updateMenuItems_file ();
 }
 
-static void drawWhileDragging (RealTierEditor me, double xWC, double yWC, long first, long last, double dt, double dy) {
+static void drawWhileDragging (RealTierEditor me, double /* xWC */, double /* yWC */, long first, long last, double dt, double dy) {
 	RealTier data = (RealTier) my data;
-	(void) xWC;
-	(void) yWC;
 
 	/*
 	 * Draw all selected points as magenta empty circles, if inside the window.
 	 */
 	for (long i = first; i <= last; i ++) {
-		RealPoint point = data -> point (i);
+		RealPoint point = data -> points.at [i];
 		double t = point -> number + dt, y = point -> value + dy;
 		if (t >= my d_startWindow && t <= my d_endWindow)
-			Graphics_circle_mm (my d_graphics, t, y, 3);
+			Graphics_circle_mm (my d_graphics.get(), t, y, 3);
 	}
 
 	if (last == first) {
 		/*
 		 * Draw a crosshair with time and y.
 		 */
-		RealPoint point = data -> point (first);
+		RealPoint point = data -> points.at [first];
 		double t = point -> number + dt, y = point -> value + dy;
-		Graphics_line (my d_graphics, t, my ymin, t, my ymax - Graphics_dyMMtoWC (my d_graphics, 4.0));
-		Graphics_setTextAlignment (my d_graphics, kGraphics_horizontalAlignment_CENTRE, Graphics_TOP);
-		Graphics_text (my d_graphics, t, my ymax, Melder_fixed (t, 6));
-		Graphics_line (my d_graphics, my d_startWindow, y, my d_endWindow, y);
-		Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-		Graphics_text (my d_graphics, my d_startWindow, y, Melder_fixed (y, 6));
+		Graphics_line (my d_graphics.get(), t, my ymin, t, my ymax - Graphics_dyMMtoWC (my d_graphics.get(), 4.0));
+		Graphics_setTextAlignment (my d_graphics.get(), kGraphics_horizontalAlignment_CENTRE, Graphics_TOP);
+		Graphics_text (my d_graphics.get(), t, my ymax, Melder_fixed (t, 6));
+		Graphics_line (my d_graphics.get(), my d_startWindow, y, my d_endWindow, y);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_text (my d_graphics.get(), my d_startWindow, y, Melder_fixed (y, 6));
 	}
 }
 
-int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	RealTier pitch = (RealTier) our data;
-	long inearestPoint, ifirstSelected, ilastSelected;
-	RealPoint nearestPoint;
-	double dt = 0, df = 0;
-	bool draggingSelection;
+	double dt = 0.0, df = 0.0;
 	Graphics_Viewport viewport;
 
 	/*
@@ -257,38 +251,39 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 	 */
 	//our d_startSelection = our d_endSelection = xWC;
 	if (our d_sound.data) {
-		if (yWC < 1 - SOUND_HEIGHT) {   /* Clicked in tier area? */
-			yWC /= 1 - SOUND_HEIGHT;
+		if (yWC < 1.0 - SOUND_HEIGHT) {   /* Clicked in tier area? */
+			yWC /= 1.0 - SOUND_HEIGHT;
 			our ycursor = (1.0 - yWC) * our ymin + yWC * our ymax;
-			viewport = Graphics_insetViewport (our d_graphics, 0, 1, 0, 1 - SOUND_HEIGHT);
+			viewport = Graphics_insetViewport (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0 - SOUND_HEIGHT);
 		} else {
 			return our RealTierEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 		}
 	} else {
 		our ycursor = (1.0 - yWC) * our ymin + yWC * our ymax;
 	}
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, our ymin, our ymax);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, our ymin, our ymax);
 	yWC = our ycursor;
 
 	/*
 	 * Clicked on a point?
 	 */
-	inearestPoint = AnyTier_timeToNearestIndex (pitch, xWC);
+	long inearestPoint = AnyTier_timeToNearestIndex (pitch->asAnyTier(), xWC);
 	if (inearestPoint == 0) return RealTierEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
-	nearestPoint = (RealPoint) pitch -> points -> item [inearestPoint];
-	if (Graphics_distanceWCtoMM (d_graphics, xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
-		if (d_sound.data) Graphics_resetViewport (our d_graphics, viewport);
+	RealPoint nearestPoint = pitch -> points.at [inearestPoint];
+	if (Graphics_distanceWCtoMM (d_graphics.get(), xWC, yWC, nearestPoint -> number, nearestPoint -> value) > 1.5) {
+		if (d_sound.data) Graphics_resetViewport (our d_graphics.get(), viewport);
 		return our RealTierEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 	}
 
 	/*
 	 * Clicked on a selected point?
 	 */
-	draggingSelection = shiftKeyPressed &&
+	bool draggingSelection = shiftKeyPressed &&
 		nearestPoint -> number > d_startSelection && nearestPoint -> number < d_endSelection;
+	long ifirstSelected, ilastSelected;
 	if (draggingSelection) {
-		ifirstSelected = AnyTier_timeToHighIndex (pitch, d_startSelection);
-		ilastSelected = AnyTier_timeToLowIndex (pitch, d_endSelection);
+		ifirstSelected = AnyTier_timeToHighIndex (pitch->asAnyTier(), d_startSelection);
+		ilastSelected = AnyTier_timeToLowIndex (pitch->asAnyTier(), d_endSelection);
 		Editor_save (this, U"Drag points");
 	} else {
 		ifirstSelected = ilastSelected = inearestPoint;
@@ -298,11 +293,11 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 	/*
 	 * Drag.
 	 */
-	Graphics_xorOn (our d_graphics, Graphics_MAROON);
+	Graphics_xorOn (our d_graphics.get(), Graphics_MAROON);
 	drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);   // draw at old position
-	while (Graphics_mouseStillDown (our d_graphics)) {
+	while (Graphics_mouseStillDown (our d_graphics.get())) {
 		double xWC_new, yWC_new;
-		Graphics_getMouseLocation (our d_graphics, & xWC_new, & yWC_new);
+		Graphics_getMouseLocation (our d_graphics.get(), & xWC_new, & yWC_new);
 		if (xWC_new != xWC || yWC_new != yWC) {
 			drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);   // undraw at old position
 			dt += xWC_new - xWC, df += yWC_new - yWC;
@@ -310,7 +305,7 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 			drawWhileDragging (this, xWC, yWC, ifirstSelected, ilastSelected, dt, df);   // draw at new position
 		}
 	}
-	Graphics_xorOff (d_graphics);
+	Graphics_xorOff (d_graphics.get());
 
 	/*
 	 * Dragged inside window?
@@ -321,22 +316,21 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 	 * Points not dragged past neighbours?
 	 */
 	{
-		RealPoint *points = pitch -> peekPoints ();
-		double newTime = points [ifirstSelected] -> number + dt;
+		double newTime = pitch -> points.at [ifirstSelected] -> number + dt;
 		if (newTime < our tmin) return 1;   // outside domain
-		if (ifirstSelected > 1 && newTime <= points [ifirstSelected - 1] -> number)
+		if (ifirstSelected > 1 && newTime <= pitch -> points.at [ifirstSelected - 1] -> number)
 			return 1;   // past left neighbour
-		newTime = points [ilastSelected] -> number + dt;
+		newTime = pitch -> points.at [ilastSelected] -> number + dt;
 		if (newTime > our tmax) return 1;   // outside domain
-		if (ilastSelected < pitch -> numberOfPoints() && newTime >= points [ilastSelected + 1] -> number)
-			return 1;   // past right neighbour
+		if (ilastSelected < pitch -> points.size && newTime >= pitch -> points.at [ilastSelected + 1] -> number)
+			return FunctionEditor_UPDATE_NEEDED;   // past right neighbour
 	}
 
 	/*
 	 * Drop.
 	 */
 	for (int i = ifirstSelected; i <= ilastSelected; i ++) {
-		RealPoint point = pitch -> point (i);
+		RealPoint point = pitch -> points.at [i];
 		point -> number += dt;
 		point -> value += df;
 		if (NUMdefined (v_minimumLegalValue ()) && point -> value < v_minimumLegalValue ())
@@ -354,7 +348,7 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 		/*
 		 * Move crosshair to only selected pitch point.
 		 */
-		RealPoint point = (RealPoint) pitch -> points -> item [ifirstSelected];
+		RealPoint point = pitch -> points.at [ifirstSelected];
 		our d_startSelection = our d_endSelection = point -> number;
 		our ycursor = point -> value;
 	} else {
@@ -371,7 +365,7 @@ int structRealTierEditor :: v_click (double xWC, double yWC, bool shiftKeyPresse
 
 	Editor_broadcastDataChanged (this);
 	RealTierEditor_updateScaling (this);
-	return 1;   // update needed
+	return FunctionEditor_UPDATE_NEEDED;
 }
 
 void structRealTierEditor :: v_play (double a_tmin, double a_tmax) {
@@ -380,7 +374,7 @@ void structRealTierEditor :: v_play (double a_tmin, double a_tmax) {
 }
 
 void RealTierEditor_init (RealTierEditor me, const char32 *title, RealTier data, Sound sound, bool ownSound) {
-	Melder_assert (data != NULL);
+	Melder_assert (data);
 	Melder_assert (Thing_isa (data, classRealTier));
 	TimeSoundEditor_init (me, title, data, sound, ownSound);
 	my ymin = -1.0;
diff --git a/fon/RealTierEditor.h b/fon/RealTierEditor.h
index d6efceb..970a626 100644
--- a/fon/RealTierEditor.h
+++ b/fon/RealTierEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundEditor.h"
@@ -31,7 +30,7 @@ Thing_define (RealTierEditor, TimeSoundEditor) {
 		override;
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -62,8 +61,8 @@ void RealTierEditor_updateScaling (RealTierEditor me);
 
 void RealTierEditor_init (RealTierEditor me, const char32 *title, RealTier data, Sound sound, bool ownSound);
 /*
-	'Sound' may be NULL;
-	if 'ownSound' is TRUE, the editor will contain a deep copy of the Sound,
+	`sound` may be null;
+	if `ownSound` is `true`, the editor will contain a deep copy of the Sound,
 	which the editor will destroy when the editor is destroyed.
 */
 
diff --git a/fon/RealTier_def.h b/fon/RealTier_def.h
index 4dc9a90..f5a27ab 100644
--- a/fon/RealTier_def.h
+++ b/fon/RealTier_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -30,30 +29,25 @@ oo_END_CLASS (RealPoint)
 #define ooSTRUCT RealTier
 oo_DEFINE_CLASS (RealTier, Function)
 
-	oo_COLLECTION (SortedSetOfDouble, points, RealPoint, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, points, RealPoint, 0)   // a kind of AnyTier though
 
 	#if oo_DECLARING
-		long numberOfPoints () // accessor
-			{ return points -> size; }
-		RealPoint * peekPoints () // accessor
-			{ return reinterpret_cast <RealPoint *> (points -> item); }
-		RealPoint point (long ipoint) // accessor
-			{ return static_cast <RealPoint> (points -> item [ipoint]); }
+		AnyTier_METHODS
 
 		void v_info ()
 			override;
 		bool v_hasGetNx ()
 			override { return true; }
 		double v_getNx ()
-			override { return numberOfPoints (); }
+			override { return points.size; }
 		bool v_hasGetX ()
 			override { return true; }
 		double v_getX (long ix)
-			override { return point (ix) -> number; }
+			override { return points.at [ix] -> number; }
 		bool v_hasGetNcol ()
 			override { return true; }
 		double v_getNcol ()
-			override { return numberOfPoints (); }
+			override { return points.size; }
 		bool v_hasGetVector ()
 			override { return true; }
 		double v_getVector (long irow, long icol)
@@ -64,10 +58,6 @@ oo_DEFINE_CLASS (RealTier, Function)
 			override;
 		const char32 * v_getUnitText (long /* ilevel */, int /* unit */, unsigned long /* flags */)
 			override { return U"Time (s)"; }
-		void v_shiftX (double xfrom, double xto)
-			override;
-		void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
-			override;
 	#endif
 
 oo_END_CLASS (RealTier)
diff --git a/fon/RunnerMFC.cpp b/fon/RunnerMFC.cpp
index 43ca42b..48b6b3e 100644
--- a/fon/RunnerMFC.cpp
+++ b/fon/RunnerMFC.cpp
@@ -1,20 +1,19 @@
 /* RunnerMFC.cpp
  *
- * Copyright (C) 2001-2011,2013,2015 Paul Boersma
+ * Copyright (C) 2001-2011,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,56 +33,50 @@
 
 Thing_implement (RunnerMFC, Editor, 0);
 
-void structRunnerMFC :: v_destroy () {
-	if (our experiments) {
-		our experiments -> size = 0;   // give ownership back to whoever thinks they own the experiments. BUG: can be dontOwnItems
-		forget (our experiments);
-	}
-	forget (our graphics);
+void structRunnerMFC :: v_destroy () noexcept {
 	our RunnerMFC_Parent :: v_destroy ();
 }
 
 void structRunnerMFC :: v_dataChanged () {
-	Graphics_updateWs (our graphics);
+	Graphics_updateWs (our graphics.get());
 }
 
 static int RunnerMFC_startExperiment (RunnerMFC me) {
-	my data = (Data) my experiments -> item [my iexperiment];
+	my data = my experiments->at [my iexperiment];
 	Melder_assert (my data -> classInfo == classExperimentMFC);
 	ExperimentMFC_start ((ExperimentMFC) my data);
 	Thing_setName (me, ((ExperimentMFC) my data) -> name);
 	Editor_broadcastDataChanged (me);
-	Graphics_updateWs (my graphics);
+	Graphics_updateWs (my graphics.get());
 	return 1;
 }
 
 static void drawControlButton (RunnerMFC me, double left, double right, double bottom, double top, const char32 *visibleText) {
-	Graphics_setColour (my graphics, Graphics_MAROON);
-	Graphics_setLineWidth (my graphics, 3.0);
-	Graphics_fillRectangle (my graphics, left, right, bottom, top);
-	Graphics_setColour (my graphics, Graphics_YELLOW);
-	Graphics_rectangle (my graphics, left, right, bottom, top);
-	Graphics_text (my graphics, 0.5 * (left + right), 0.5 * (bottom + top), visibleText);
+	Graphics_setColour (my graphics.get(), Graphics_MAROON);
+	Graphics_setLineWidth (my graphics.get(), 3.0);
+	Graphics_fillRectangle (my graphics.get(), left, right, bottom, top);
+	Graphics_setColour (my graphics.get(), Graphics_YELLOW);
+	Graphics_rectangle (my graphics.get(), left, right, bottom, top);
+	Graphics_text (my graphics.get(), 0.5 * (left + right), 0.5 * (bottom + top), visibleText);
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (RunnerMFC);
+static void gui_drawingarea_cb_expose (RunnerMFC me, GuiDrawingArea_ExposeEvent event) {
 	Melder_assert (event -> widget == my d_drawingArea);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+	if (! my graphics) return;   // could be the case in the very beginning
 	ExperimentMFC experiment = (ExperimentMFC) my data;
 	long iresponse;
-	if (my data == NULL) return;
-	Graphics_setGrey (my graphics, 0.8);
-	Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-	Graphics_setGrey (my graphics, 0.0);
+	if (! my data) return;
+	Graphics_setGrey (my graphics.get(), 0.8);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setGrey (my graphics.get(), 0.0);
 	if (experiment -> trial == 0) {
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_setFontSize (my graphics, 24);
-		Graphics_text (my graphics, 0.5, 0.5, experiment -> startText);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_setFontSize (my graphics.get(), 24);
+		Graphics_text (my graphics.get(), 0.5, 0.5, experiment -> startText);
 	} else if (experiment -> pausing) {
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_setFontSize (my graphics, 24);
-		Graphics_text (my graphics, 0.5, 0.5, experiment -> pauseText);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_setFontSize (my graphics.get(), 24);
+		Graphics_text (my graphics.get(), 0.5, 0.5, experiment -> pauseText);
 		if (experiment -> oops_right > experiment -> oops_left && experiment -> trial > 1) {
 			drawControlButton (me,
 				experiment -> oops_left, experiment -> oops_right, experiment -> oops_bottom, experiment -> oops_top,
@@ -93,25 +86,25 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 		const char32 *visibleText = experiment -> stimulus [experiment -> stimuli [experiment -> trial]]. visibleText;
 		autostring32 visibleText_dup = Melder_dup_f (visibleText ? visibleText : U"");
 		char32 *visibleText_p = visibleText_dup.peek();
-		Graphics_setFont (my graphics, kGraphics_font_TIMES);
-		Graphics_setFontSize (my graphics, 10);
-		Graphics_setColour (my graphics, Graphics_BLACK);
-		Graphics_setTextAlignment (my graphics, Graphics_LEFT, Graphics_TOP);
-		Graphics_text (my graphics, 0, 1,   experiment -> trial, U" / ", experiment -> numberOfTrials);
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_TOP);
-		Graphics_setFontSize (my graphics, 24);
+		Graphics_setFont (my graphics.get(), kGraphics_font_TIMES);
+		Graphics_setFontSize (my graphics.get(), 10);
+		Graphics_setColour (my graphics.get(), Graphics_BLACK);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_LEFT, Graphics_TOP);
+		Graphics_text (my graphics.get(), 0.0, 1.0,   experiment -> trial, U" / ", experiment -> numberOfTrials);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_TOP);
+		Graphics_setFontSize (my graphics.get(), 24);
 		/*
 		 * The run text.
 		 */
 		if (visibleText_p [0] != U'\0') {
 			char32 *visibleText_q = str32chr (visibleText_p, U'|');
 			if (visibleText_q) *visibleText_q = '\0';
-			Graphics_text (my graphics, 0.5, 1.0, visibleText_p [0] != '\0' ? visibleText_p : experiment -> runText);
+			Graphics_text (my graphics.get(), 0.5, 1.0, visibleText_p [0] != '\0' ? visibleText_p : experiment -> runText);
 			if (visibleText_q) visibleText_p = visibleText_q + 1; else visibleText_p += str32len (visibleText_p);
 		} else {
-			Graphics_text (my graphics, 0.5, 1.0, experiment -> runText);
+			Graphics_text (my graphics.get(), 0.5, 1.0, experiment -> runText);
 		}
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_HALF);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_HALF);
 		for (iresponse = 1; iresponse <= experiment -> numberOfDifferentResponses; iresponse ++) {
 			ResponseMFC response = & experiment -> response [iresponse];
 			char32 *textToDraw = response -> label;   // can be overridden
@@ -124,32 +117,32 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 			if (str32nequ (textToDraw, U"\\FI", 3)) {
 				structMelderFile file = { 0 };
 				MelderDir_relativePathToFile (& experiment -> rootDirectory, textToDraw + 3, & file);
-				Graphics_imageFromFile (my graphics, Melder_fileToPath (& file), response -> left, response -> right, response -> bottom, response -> top);
+				Graphics_imageFromFile (my graphics.get(), Melder_fileToPath (& file), response -> left, response -> right, response -> bottom, response -> top);
 			} else {
-				Graphics_setColour (my graphics,
+				Graphics_setColour (my graphics.get(),
 					response -> name [0] == U'\0' ? Graphics_SILVER :
 					experiment -> responses [experiment -> trial] == iresponse ? Graphics_RED :
 					experiment -> ok_right > experiment -> ok_left || experiment -> responses [experiment -> trial] == 0 ?
 					Graphics_YELLOW : Graphics_SILVER);
-				Graphics_setLineWidth (my graphics, 3.0);
-				Graphics_fillRectangle (my graphics, response -> left, response -> right, response -> bottom, response -> top);
-				Graphics_setColour (my graphics, Graphics_MAROON);
-				Graphics_rectangle (my graphics, response -> left, response -> right, response -> bottom, response -> top);
-				Graphics_setFontSize (my graphics, response -> fontSize ? response -> fontSize : 24);
-				Graphics_text (my graphics, 0.5 * (response -> left + response -> right),
+				Graphics_setLineWidth (my graphics.get(), 3.0);
+				Graphics_fillRectangle (my graphics.get(), response -> left, response -> right, response -> bottom, response -> top);
+				Graphics_setColour (my graphics.get(), Graphics_MAROON);
+				Graphics_rectangle (my graphics.get(), response -> left, response -> right, response -> bottom, response -> top);
+				Graphics_setFontSize (my graphics.get(), response -> fontSize ? response -> fontSize : 24);
+				Graphics_text (my graphics.get(), 0.5 * (response -> left + response -> right),
 					0.5 * (response -> bottom + response -> top), textToDraw);
 			}
-			Graphics_setFontSize (my graphics, 24);
+			Graphics_setFontSize (my graphics.get(), 24);
 		}
 		for (iresponse = 1; iresponse <= experiment -> numberOfGoodnessCategories; iresponse ++) {
 			GoodnessMFC goodness = & experiment -> goodness [iresponse];
-			Graphics_setColour (my graphics, experiment -> responses [experiment -> trial] == 0 ? Graphics_SILVER :
+			Graphics_setColour (my graphics.get(), experiment -> responses [experiment -> trial] == 0 ? Graphics_SILVER :
 				experiment -> goodnesses [experiment -> trial] == iresponse ? Graphics_RED : Graphics_YELLOW);
-			Graphics_setLineWidth (my graphics, 3.0);
-			Graphics_fillRectangle (my graphics, goodness -> left, goodness -> right, goodness -> bottom, goodness -> top);
-			Graphics_setColour (my graphics, Graphics_MAROON);
-			Graphics_rectangle (my graphics, goodness -> left, goodness -> right, goodness -> bottom, goodness -> top);
-			Graphics_text (my graphics, 0.5 * (goodness -> left + goodness -> right), 0.5 * (goodness -> bottom + goodness -> top), goodness -> label);
+			Graphics_setLineWidth (my graphics.get(), 3.0);
+			Graphics_fillRectangle (my graphics.get(), goodness -> left, goodness -> right, goodness -> bottom, goodness -> top);
+			Graphics_setColour (my graphics.get(), Graphics_MAROON);
+			Graphics_rectangle (my graphics.get(), goodness -> left, goodness -> right, goodness -> bottom, goodness -> top);
+			Graphics_text (my graphics.get(), 0.5 * (goodness -> left + goodness -> right), 0.5 * (goodness -> bottom + goodness -> top), goodness -> label);
 		}
 		if (experiment -> replay_right > experiment -> replay_left && my numberOfReplays < experiment -> maximumNumberOfReplays) {
 			drawControlButton (me,
@@ -170,9 +163,9 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 				experiment -> oops_label);
 		}
 	} else {
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_setFontSize (my graphics, 24);
-		Graphics_text (my graphics, 0.5, 0.5, experiment -> endText);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_setFontSize (my graphics.get(), 24);
+		Graphics_text (my graphics.get(), 0.5, 0.5, experiment -> endText);
 		if (experiment -> oops_right > experiment -> oops_left && experiment -> trial > 1) {
 			drawControlButton (me,
 				experiment -> oops_left, experiment -> oops_right, experiment -> oops_bottom, experiment -> oops_top,
@@ -181,13 +174,12 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 	}
 }
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (RunnerMFC);
-	if (my graphics == NULL) return;
-	Graphics_setWsViewport (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_setWsWindow (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_setViewport (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_updateWs (my graphics);
+static void gui_drawingarea_cb_resize (RunnerMFC me, GuiDrawingArea_ResizeEvent event) {
+	if (! my graphics) return;
+	Graphics_setWsViewport (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
+	Graphics_setWsWindow (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
+	Graphics_setViewport (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
+	Graphics_updateWs (my graphics.get());
 }
 
 static void do_ok (RunnerMFC me) {
@@ -197,21 +189,21 @@ static void do_ok (RunnerMFC me) {
 	if (experiment -> trial == experiment -> numberOfTrials) {
 		experiment -> trial ++;
 		Editor_broadcastDataChanged (me);
-		Graphics_updateWs (my graphics);
+		Graphics_updateWs (my graphics.get());
 	} else if (experiment -> breakAfterEvery != 0 && experiment -> trial % experiment -> breakAfterEvery == 0) {
-		experiment -> pausing = TRUE;
+		experiment -> pausing = true;
 		Editor_broadcastDataChanged (me);
-		Graphics_updateWs (my graphics);
+		Graphics_updateWs (my graphics.get());
 	} else {
 		experiment -> trial ++;
 		Editor_broadcastDataChanged (me);
 		if (experiment -> blankWhilePlaying) {
-			Graphics_setGrey (my graphics, 0.8);
-			Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-			Graphics_setGrey (my graphics, 0.0);
-			Graphics_flushWs (my graphics);
+			Graphics_setGrey (my graphics.get(), 0.8);
+			Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+			Graphics_setGrey (my graphics.get(), 0.0);
+			Graphics_flushWs (my graphics.get());
 		}
-		Graphics_updateWs (my graphics);
+		Graphics_updateWs (my graphics.get());
 		if (experiment -> stimuliAreSounds) {
 			autoMelderAudioSaveMaximumAsynchronicity saveMaximumAsynchronicity;
 			if (experiment -> blankWhilePlaying)
@@ -231,16 +223,16 @@ static void do_oops (RunnerMFC me) {
 	experiment -> trial --;
 	experiment -> responses [experiment -> trial] = 0;
 	experiment -> goodnesses [experiment -> trial] = 0;
-	experiment -> pausing = FALSE;
+	experiment -> pausing = false;
 	my numberOfReplays = 0;
 	Editor_broadcastDataChanged (me);
 	if (experiment -> blankWhilePlaying) {
-		Graphics_setGrey (my graphics, 0.8);
-		Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-		Graphics_setGrey (my graphics, 0.0);
-		Graphics_flushWs (my graphics);
+		Graphics_setGrey (my graphics.get(), 0.8);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setGrey (my graphics.get(), 0.0);
+		Graphics_flushWs (my graphics.get());
 	}
-	Graphics_updateWs (my graphics);
+	Graphics_updateWs (my graphics.get());
 	if (experiment -> stimuliAreSounds) {
 		autoMelderAudioSaveMaximumAsynchronicity saveMaximumAsynchronicity;
 		if (experiment -> blankWhilePlaying)
@@ -255,12 +247,12 @@ static void do_replay (RunnerMFC me) {
 	my numberOfReplays ++;
 	Editor_broadcastDataChanged (me);
 	if (experiment -> blankWhilePlaying) {
-		Graphics_setGrey (my graphics, 0.8);
-		Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-		Graphics_setGrey (my graphics, 0.0);
-		Graphics_flushWs (my graphics);
+		Graphics_setGrey (my graphics.get(), 0.8);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setGrey (my graphics.get(), 0.0);
+		Graphics_flushWs (my graphics.get());
 	}
-	Graphics_updateWs (my graphics);
+	Graphics_updateWs (my graphics.get());
 	if (experiment -> stimuliAreSounds) {
 		autoMelderAudioSaveMaximumAsynchronicity saveMaximumAsynchronicity;
 		if (experiment -> blankWhilePlaying)
@@ -269,26 +261,25 @@ static void do_replay (RunnerMFC me) {
 	}
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (RunnerMFC);
-	if (my graphics == NULL) return;   // could be the case in the very beginning
+static void gui_drawingarea_cb_click (RunnerMFC me, GuiDrawingArea_ClickEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	ExperimentMFC experiment = (ExperimentMFC) my data;
-	if (my data == NULL) return;
+	if (! my data) return;
 	double reactionTime = Melder_clock () - experiment -> startingTime;
 	if (! experiment -> blankWhilePlaying)
 		reactionTime -= experiment -> stimulusInitialSilenceDuration;
 	double x, y;
-	Graphics_DCtoWC (my graphics, event -> x, event -> y, & x, & y);
+	Graphics_DCtoWC (my graphics.get(), event -> x, event -> y, & x, & y);
 	if (experiment -> trial == 0) {   // the first click of the experiment
 		experiment -> trial ++;
 		Editor_broadcastDataChanged (me);
 		if (experiment -> blankWhilePlaying) {
-			Graphics_setGrey (my graphics, 0.8);
-			Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-			Graphics_setGrey (my graphics, 0.0);
-			Graphics_flushWs (my graphics);
+			Graphics_setGrey (my graphics.get(), 0.8);
+			Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+			Graphics_setGrey (my graphics.get(), 0.0);
+			Graphics_flushWs (my graphics.get());
 		}
-		Graphics_updateWs (my graphics);
+		Graphics_updateWs (my graphics.get());
 		if (experiment -> stimuliAreSounds) {
 			if (experiment -> numberOfTrials < 1) {
 				Melder_flushError (U"There are zero trials in this experiment.");
@@ -306,16 +297,16 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 		{
 			do_oops (me);
 		} else {
-			experiment -> pausing = FALSE;
+			experiment -> pausing = false;
 			experiment -> trial ++;
 			Editor_broadcastDataChanged (me);
 			if (experiment -> blankWhilePlaying) {
-				Graphics_setGrey (my graphics, 0.8);
-				Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-				Graphics_setGrey (my graphics, 0.0);
-				Graphics_flushWs (my graphics);
+				Graphics_setGrey (my graphics.get(), 0.8);
+				Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+				Graphics_setGrey (my graphics.get(), 0.0);
+				Graphics_flushWs (my graphics.get());
 			}
-			Graphics_updateWs (my graphics);
+			Graphics_updateWs (my graphics.get());
 			if (experiment -> stimuliAreSounds) {
 				autoMelderAudioSaveMaximumAsynchronicity saveMaximumAsynchronicity;
 				if (experiment -> blankWhilePlaying)
@@ -352,7 +343,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 						do_ok (me);
 					} else {
 						Editor_broadcastDataChanged (me);
-						Graphics_updateWs (my graphics);
+						Graphics_updateWs (my graphics.get());
 					}
 				}
 			}
@@ -362,7 +353,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 					if (x > cat -> left && x < cat -> right && y > cat -> bottom && y < cat -> top) {
 						experiment -> goodnesses [experiment -> trial] = iresponse;
 						Editor_broadcastDataChanged (me);
-						Graphics_updateWs (my graphics);
+						Graphics_updateWs (my graphics.get());
 					}
 				}
 			}
@@ -383,7 +374,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 			do_oops (me);
 			return;
 		}
-		if (my iexperiment < my experiments -> size) {
+		if (my iexperiment < my experiments->size) {
 			my iexperiment ++;
 			if (! RunnerMFC_startExperiment (me)) {
 				Melder_flushError ();
@@ -394,11 +385,10 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	}
 }
 
-static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
-	iam (RunnerMFC);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_key (RunnerMFC me, GuiDrawingArea_KeyEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	ExperimentMFC experiment = (ExperimentMFC) my data;
-	if (my data == NULL) return;
+	if (! my data) return;
 	double reactionTime = Melder_clock () - experiment -> startingTime;
 	if (! experiment -> blankWhilePlaying)
 		reactionTime -= experiment -> stimulusInitialSilenceDuration;
@@ -406,23 +396,23 @@ static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
 	} else if (experiment -> pausing) {
 	} else if (experiment -> trial <= experiment -> numberOfTrials) {
 		long iresponse;
-		if (experiment -> ok_key != NULL && experiment -> ok_key [0] == event -> key &&
+		if (experiment -> ok_key && experiment -> ok_key [0] == event -> key &&
 			experiment -> responses [experiment -> trial] != 0 &&
 			(experiment -> numberOfGoodnessCategories == 0 || experiment -> goodnesses [experiment -> trial] != 0))
 		{
 			do_ok (me);
-		} else if (experiment -> replay_key != NULL && experiment -> replay_key [0] == event -> key &&
+		} else if (experiment -> replay_key && experiment -> replay_key [0] == event -> key &&
 			my numberOfReplays < experiment -> maximumNumberOfReplays)
 		{
 			do_replay (me);
-		} else if (experiment -> oops_key != NULL && experiment -> oops_key [0] == event -> key) {
+		} else if (experiment -> oops_key && experiment -> oops_key [0] == event -> key) {
 			if (experiment -> trial > 1) {
 				do_oops (me);
 			}
 		} else if (experiment -> responses [experiment -> trial] == 0) {
 			for (iresponse = 1; iresponse <= experiment -> numberOfDifferentResponses; iresponse ++) {
 				ResponseMFC response = & experiment -> response [iresponse];
-				if (response -> key != NULL && response -> key [0] == event -> key) {
+				if (response -> key && response -> key [0] == event -> key) {
 					experiment -> responses [experiment -> trial] = iresponse;
 					experiment -> reactionTimes [experiment -> trial] = reactionTime;
 					if (experiment -> responsesAreSounds) {
@@ -432,7 +422,7 @@ static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
 						do_ok (me);
 					} else {
 						Editor_broadcastDataChanged (me);
-						Graphics_updateWs (my graphics);
+						Graphics_updateWs (my graphics.get());
 					}
 				}
 			}
@@ -445,21 +435,21 @@ void structRunnerMFC :: v_createChildren () {
 		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, gui_drawingarea_cb_key, gui_drawingarea_cb_resize, this, 0);
 }
 
-RunnerMFC RunnerMFC_create (const char32 *title, Ordered experiments) {
+autoRunnerMFC RunnerMFC_create (const char32 *title, autoExperimentMFCList experiments) {
 	try {
 		autoRunnerMFC me = Thing_new (RunnerMFC);
-		Editor_init (me.peek(), 0, 0, 2000, 2000, title, NULL);
-		my experiments = experiments;
+		Editor_init (me.get(), 0, 0, 2000, 2000, title, nullptr);
+		my experiments = experiments.move();
 		my graphics = Graphics_create_xmdrawingarea (my d_drawingArea);
 
-struct structGuiDrawingAreaResizeEvent event = { my d_drawingArea, 0 };
+struct structGuiDrawingArea_ResizeEvent event { my d_drawingArea, 0 };
 event. width  = GuiControl_getWidth  (my d_drawingArea);
 event. height = GuiControl_getHeight (my d_drawingArea);
-gui_drawingarea_cb_resize (me.peek(), & event);
+gui_drawingarea_cb_resize (me.get(), & event);
 
 		my iexperiment = 1;
-		RunnerMFC_startExperiment (me.peek());
-		return me.transfer();
+		RunnerMFC_startExperiment (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Experiment window not created.");
 	}
diff --git a/fon/RunnerMFC.h b/fon/RunnerMFC.h
index e3d62cf..67ed313 100644
--- a/fon/RunnerMFC.h
+++ b/fon/RunnerMFC.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2001-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -24,12 +23,12 @@
 
 Thing_define (RunnerMFC, Editor) {
 	GuiDrawingArea d_drawingArea;
-	Ordered experiments;
+	autoExperimentMFCList experiments;
 	long iexperiment;
-	Graphics graphics;
+	autoGraphics graphics;
 	long numberOfReplays;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	bool v_editable ()
 		override { return false; }
@@ -41,7 +40,7 @@ Thing_define (RunnerMFC, Editor) {
 		override;
 };
 
-RunnerMFC RunnerMFC_create (const char32 *title, Ordered experiments);
+autoRunnerMFC RunnerMFC_create (const char32 *title, autoExperimentMFCList experiments);
 
 /* End of file RunnerMFC.h */
 #endif
diff --git a/fon/Sampled.cpp b/fon/Sampled.cpp
index 422de13..8a32e24 100644
--- a/fon/Sampled.cpp
+++ b/fon/Sampled.cpp
@@ -1,20 +1,19 @@
 /* Sampled.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <math.h>
@@ -320,14 +319,14 @@ static void Sampled_getSum2AndDefinitionRange
 		Outside [x1-dx/2, xN+dx/2], the curve is undefined and neither times nor values are counted.
 		In [x1-dx/2,x1] and [xN,xN+dx/2], the curve is linearly extrapolated.
 	*/
-	long imin, imax, isamp;
+	long imin, imax;
 	double sum2 = 0.0, definitionRange = 0.0;
 	Function_unidirectionalAutowindow (me, & xmin, & xmax);
 	if (Function_intersectRangeWithDomain (me, & xmin, & xmax)) {
 		if (interpolate) {
 			if (Sampled_getWindowSamples (me, xmin, xmax, & imin, & imax)) {
 				double leftEdge = my x1 - 0.5 * my dx, rightEdge = leftEdge + my nx * my dx;
-				for (isamp = imin; isamp <= imax; isamp ++) {
+				for (long isamp = imin; isamp <= imax; isamp ++) {
 					double value = my v_getValueAtSample (isamp, ilevel, unit);   // a fast way to integrate a linearly interpolated curve; works everywhere except at the edges
 					if (NUMdefined (value)) {
 						value -= mean;
@@ -426,9 +425,9 @@ static void Sampled_getSum2AndDefinitionRange
 		} else {   // no interpolation
 			double rimin = Sampled_xToIndex (me, xmin), rimax = Sampled_xToIndex (me, xmax);
 			if (rimax >= 0.5 && rimin < my nx + 0.5) {
-				imin = rimin < 0.5 ? 0 : (long) floor (rimin + 0.5);
-				imax = rimax >= my nx + 0.5 ? my nx + 1 : (long) floor (rimax + 0.5);
-				for (isamp = imin + 1; isamp < imax; isamp ++) {
+				imin = rimin < 0.5 ? 0 : lround (rimin);
+				imax = rimax >= my nx + 0.5 ? my nx + 1 : lround (rimax);
+				for (long isamp = imin + 1; isamp < imax; isamp ++) {
 					double value = my v_getValueAtSample (isamp, ilevel, unit);
 					if (NUMdefined (value)) {
 						value -= mean;
@@ -490,7 +489,6 @@ double Sampled_getStandardDeviation_standardUnit (Sampled me, double xmin, doubl
 void Sampled_getMinimumAndX (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate,
 	double *return_minimum, double *return_xOfMinimum)
 {
-	long imin, imax, i;
 	double minimum = 1e301, xOfMinimum = 0.0;
 	if (xmin == NUMundefined || xmax == NUMundefined) {
 		minimum = xOfMinimum = NUMundefined;
@@ -501,6 +499,7 @@ void Sampled_getMinimumAndX (Sampled me, double xmin, double xmax, long ilevel,
 		minimum = xOfMinimum = NUMundefined;   // requested range and logical domain do not intersect
 		goto end;
 	}
+	long imin, imax;
 	if (! Sampled_getWindowSamples (me, xmin, xmax, & imin, & imax)) {
 		/*
 		 * No sample centres between xmin and xmax.
@@ -511,10 +510,10 @@ void Sampled_getMinimumAndX (Sampled me, double xmin, double xmax, long ilevel,
 		if (NUMdefined (fleft) && fleft < minimum) minimum = fleft, xOfMinimum = xmin;
 		if (NUMdefined (fright) && fright < minimum) minimum = fright, xOfMinimum = xmax;
 	} else {
-		for (i = imin; i <= imax; i ++) {
+		for (long i = imin; i <= imax; i ++) {
 			double fmid = my v_getValueAtSample (i, ilevel, unit);
 			if (fmid == NUMundefined) continue;
-			if (interpolate == FALSE) {
+			if (! interpolate) {
 				if (fmid < minimum) minimum = fmid, xOfMinimum = i;
 			} else {
 				/*
@@ -533,11 +532,11 @@ void Sampled_getMinimumAndX (Sampled me, double xmin, double xmax, long ilevel,
 				}
 			}
 		}
-		xOfMinimum = my x1 + (xOfMinimum - 1) * my dx;   /* From index plus phase to time. */
+		xOfMinimum = my x1 + (xOfMinimum - 1) * my dx;   // from index plus phase to time
 		/* Check boundary values. */
 		if (interpolate) {
-			double fleft = Sampled_getValueAtX (me, xmin, ilevel, unit, TRUE);
-			double fright = Sampled_getValueAtX (me, xmax, ilevel, unit, TRUE);
+			double fleft = Sampled_getValueAtX (me, xmin, ilevel, unit, true);
+			double fright = Sampled_getValueAtX (me, xmax, ilevel, unit, true);
 			if (NUMdefined (fleft) && fleft < minimum) minimum = fleft, xOfMinimum = xmin;
 			if (NUMdefined (fright) && fright < minimum) minimum = fright, xOfMinimum = xmax;
 		}
@@ -552,20 +551,19 @@ end:
 
 double Sampled_getMinimum (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate) {
 	double minimum;
-	Sampled_getMinimumAndX (me, xmin, xmax, ilevel, unit, interpolate, & minimum, NULL);
+	Sampled_getMinimumAndX (me, xmin, xmax, ilevel, unit, interpolate, & minimum, nullptr);
 	return minimum;
 }
 
 double Sampled_getXOfMinimum (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate) {
 	double time;
-	Sampled_getMinimumAndX (me, xmin, xmax, ilevel, unit, interpolate, NULL, & time);
+	Sampled_getMinimumAndX (me, xmin, xmax, ilevel, unit, interpolate, nullptr, & time);
 	return time;
 }
 
 void Sampled_getMaximumAndX (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate,
 	double *return_maximum, double *return_xOfMaximum)
 {
-	long imin, imax, i;
 	double maximum = -1e301, xOfMaximum = 0.0;
 	if (xmin == NUMundefined || xmax == NUMundefined) {
 		maximum = xOfMaximum = NUMundefined;
@@ -576,6 +574,7 @@ void Sampled_getMaximumAndX (Sampled me, double xmin, double xmax, long ilevel,
 		maximum = xOfMaximum = NUMundefined;   // requested range and logical domain do not intersect
 		goto end;
 	}
+	long imin, imax;
 	if (! Sampled_getWindowSamples (me, xmin, xmax, & imin, & imax)) {
 		/*
 		 * No sample centres between tmin and tmax.
@@ -586,10 +585,10 @@ void Sampled_getMaximumAndX (Sampled me, double xmin, double xmax, long ilevel,
 		if (NUMdefined (fleft) && fleft > maximum) maximum = fleft, xOfMaximum = xmin;
 		if (NUMdefined (fright) && fright > maximum) maximum = fright, xOfMaximum = xmax;
 	} else {
-		for (i = imin; i <= imax; i ++) {
+		for (long i = imin; i <= imax; i ++) {
 			double fmid = my v_getValueAtSample (i, ilevel, unit);
 			if (fmid == NUMundefined) continue;
-			if (interpolate == FALSE) {
+			if (! interpolate) {
 				if (fmid > maximum) maximum = fmid, xOfMaximum = i;
 			} else {
 				/*
@@ -611,8 +610,8 @@ void Sampled_getMaximumAndX (Sampled me, double xmin, double xmax, long ilevel,
 		xOfMaximum = my x1 + (xOfMaximum - 1) * my dx;   // from index plus phase to time
 		/* Check boundary values. */
 		if (interpolate) {
-			double fleft = Sampled_getValueAtX (me, xmin, ilevel, unit, TRUE);
-			double fright = Sampled_getValueAtX (me, xmax, ilevel, unit, TRUE);
+			double fleft = Sampled_getValueAtX (me, xmin, ilevel, unit, true);
+			double fright = Sampled_getValueAtX (me, xmax, ilevel, unit, true);
 			if (NUMdefined (fleft) && fleft > maximum) maximum = fleft, xOfMaximum = xmin;
 			if (NUMdefined (fright) && fright > maximum) maximum = fright, xOfMaximum = xmax;
 		}
@@ -627,13 +626,13 @@ end:
 
 double Sampled_getMaximum (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate) {
 	double maximum;
-	Sampled_getMaximumAndX (me, xmin, xmax, ilevel, unit, interpolate, & maximum, NULL);
+	Sampled_getMaximumAndX (me, xmin, xmax, ilevel, unit, interpolate, & maximum, nullptr);
 	return maximum;
 }
 
 double Sampled_getXOfMaximum (Sampled me, double xmin, double xmax, long ilevel, int unit, bool interpolate) {
 	double time;
-	Sampled_getMaximumAndX (me, xmin, xmax, ilevel, unit, interpolate, NULL, & time);
+	Sampled_getMaximumAndX (me, xmin, xmax, ilevel, unit, interpolate, nullptr, & time);
 	return time;
 }
 
diff --git a/fon/Sampled.h b/fon/Sampled.h
index df62c21..361fd2b 100644
--- a/fon/Sampled.h
+++ b/fon/Sampled.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Sampled inherits from Function */
@@ -24,7 +23,6 @@
 #include "Graphics.h"
 
 #include "Sampled_def.h"
-oo_CLASS_CREATE (Sampled, Function);
 
 /* A Sampled is a Function that is sampled at nx points [1..nx], */
 /* which are spaced apart by a constant distance dx. */
diff --git a/fon/SampledXY.cpp b/fon/SampledXY.cpp
index bb8155b..ce9829d 100644
--- a/fon/SampledXY.cpp
+++ b/fon/SampledXY.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SampledXY.h"
@@ -40,6 +39,20 @@
 
 Thing_implement (SampledXY, Sampled, 0);
 
+/*
+ * CHECK
+	if (xmin > xmax || ymin > ymax) {
+		Melder_throw (U"xmax should be greater than xmax and ymax should be greater than ymin.");
+	}
+	if (nx < 1 || ny < 1) {
+		Melder_throw (U"nx and ny should be at least 1.");
+	}
+	if (dx <= 0 || dy <= 0) {
+		Melder_throw (U"dx and dy should be positive.");
+	}
+}
+*/
+
 void SampledXY_init (SampledXY me,
 	double xmin, double xmax, long nx, double dx, double x1,
 	double ymin, double ymax, long ny, double dy, double y1)
diff --git a/fon/SampledXY.h b/fon/SampledXY.h
index b343d57..d8c0ab2 100644
--- a/fon/SampledXY.h
+++ b/fon/SampledXY.h
@@ -4,25 +4,23 @@
  *
  * Copyright (C) 1992-2011,2013,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sampled.h"
 
 #include "SampledXY_def.h"
-oo_CLASS_CREATE (SampledXY, Sampled);
 
 void SampledXY_init (SampledXY me, double xmin, double xmax, long nx, double dx, double x1,
                                    double ymin, double ymax, long ny, double dy, double y1);
diff --git a/fon/SampledXY_def.h b/fon/SampledXY_def.h
index 4488f20..f0cc1fd 100644
--- a/fon/SampledXY_def.h
+++ b/fon/SampledXY_def.h
@@ -2,24 +2,20 @@
  *
  * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- * pb 20131022 split off from Matrix
- */
 
 #define ooSTRUCT SampledXY
 oo_DEFINE_CLASS (SampledXY, Sampled)
@@ -30,6 +26,18 @@ oo_DEFINE_CLASS (SampledXY, Sampled)
 	oo_DOUBLE (dy)
 	oo_DOUBLE (y1)
 
+	#if oo_READING
+		if (ymin > ymax) {
+			Melder_throw (U"ymax should be greater than ymin.");
+		}
+		if (ny < 1) {
+			Melder_throw (U"ny should be at least 1.");
+		}
+		if (dy <= 0.0) {
+			Melder_throw (U"dy should be positive.");
+		}
+	#endif
+
 	#if oo_DECLARING
 		bool v_hasGetYmin ()
 			override { return true; }
@@ -56,4 +64,5 @@ oo_DEFINE_CLASS (SampledXY, Sampled)
 oo_END_CLASS (SampledXY)
 #undef ooSTRUCT
 
+
 /* End of file SampledXY_def.h */
diff --git a/fon/Sampled_def.h b/fon/Sampled_def.h
index 3c8950f..a726b6c 100644
--- a/fon/Sampled_def.h
+++ b/fon/Sampled_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -25,6 +24,18 @@ oo_DEFINE_CLASS (Sampled, Function)
 	oo_DOUBLE (dx)
 	oo_DOUBLE (x1)
 
+	#if oo_READING
+		if (xmin > xmax) {
+			Melder_throw (U"xmax should be greater than xmin.");
+		}
+		if (nx < 1) {
+			Melder_throw (U"nx should be at least 1.");
+		}
+		if (dx <= 0.0) {
+			Melder_throw (U"dx should be positive.");
+		}
+	#endif
+
 	#if oo_DECLARING
 		bool v_hasGetNx ()
 			override { return true; }
diff --git a/fon/Sound.cpp b/fon/Sound.cpp
index 63c907e..67596c3 100644
--- a/fon/Sound.cpp
+++ b/fon/Sound.cpp
@@ -1,20 +1,19 @@
 /* Sound.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,10 +33,10 @@
 
 Thing_implement (Sound, Vector, 2);
 
-Sound Sound_clipboard;
+autoSound Sound_clipboard;
 
 void structSound :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	const double rho_c = 400;   /* rho = 1.14 kg m-3; c = 353 m s-1; [rho c] = kg m-2 s-1 */
 	double minimum = z [1] [1], maximum = minimum;
 	MelderInfo_writeLine (U"Number of channels: ", ny, ny == 1 ? U" (mono)" : ny == 2 ? U" (stereo)" : U"");
@@ -123,27 +122,27 @@ double structSound :: v_getFunction2 (double x, double y) {
 	return v_getFunction1 (channel, x);
 }
 
-Sound Sound_create (long numberOfChannels, double xmin, double xmax, long nx, double dx, double x1) {
+autoSound Sound_create (long numberOfChannels, double xmin, double xmax, long nx, double dx, double x1) {
 	try {
 		autoSound me = Thing_new (Sound);
-		Matrix_init (me.peek(), xmin, xmax, nx, dx, x1, 1, numberOfChannels, numberOfChannels, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), xmin, xmax, nx, dx, x1, 1, numberOfChannels, numberOfChannels, 1, 1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created.");
 	}
 }
 
-Sound Sound_createSimple (long numberOfChannels, double duration, double samplingFrequency) {
+autoSound Sound_createSimple (long numberOfChannels, double duration, double samplingFrequency) {
 	Melder_assert (duration >= 0.0);
 	Melder_assert (samplingFrequency > 0.0);
 	double numberOfSamples_f = round (duration * samplingFrequency);
 	if (numberOfSamples_f > (double) INT32_MAX)
 		Melder_throw (U"Cannot create sounds with more than ", Melder_bigInteger (INT32_MAX), U" samples, because they cannot be saved to disk.");
 	return Sound_create (numberOfChannels, 0.0, duration, (long) (int32_t) numberOfSamples_f,
-		1 / samplingFrequency, 0.5 / samplingFrequency);
+		1.0 / samplingFrequency, 0.5 / samplingFrequency);
 }
 
-Sound Sound_convertToMono (Sound me) {
+autoSound Sound_convertToMono (Sound me) {
 	if (my ny == 1) return Data_copy (me);   // optimization
 	try {
 		autoSound thee = Sound_create (1, my xmin, my xmax, my nx, my dx, my x1);
@@ -160,13 +159,13 @@ Sound Sound_convertToMono (Sound me) {
 				thy z [1] [i] = sum / my ny;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to mono.");
 	}
 }
 
-Sound Sound_convertToStereo (Sound me) {
+autoSound Sound_convertToStereo (Sound me) {
 	if (my ny == 2) return Data_copy (me);
 	try {
 		if (my ny > 2) {
@@ -177,18 +176,18 @@ Sound Sound_convertToStereo (Sound me) {
 		for (long i = 1; i <= my nx; i ++) {
 			thy z [1] [i] = thy z [2] [i] = my z [1] [i];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to stereo.");
 	}
 }
 
-Sound Sounds_combineToStereo (Collection me) {
+autoSound Sounds_combineToStereo (OrderedOf<structSound>* me) {
 	try {
 		long totalNumberOfChannels = 0;
 		double sharedSamplingPeriod = 0.0;
 		for (long isound = 1; isound <= my size; isound ++) {
-			Sound sound = (Sound) my item [isound];
+			Sound sound = my at [isound];
 			totalNumberOfChannels += sound -> ny;
 			if (sharedSamplingPeriod == 0.0) {
 				sharedSamplingPeriod = sound -> dx;
@@ -199,7 +198,7 @@ Sound Sounds_combineToStereo (Collection me) {
 		}
 		double sharedMinimumTime = NUMundefined, sharedMaximumTime = NUMundefined;
 		for (long isound = 1; isound <= my size; isound ++) {
-			Sound sound = (Sound) my item [isound];
+			Sound sound = my at [isound];
 			if (isound == 1) {
 				sharedMinimumTime = sound -> xmin;
 				sharedMaximumTime = sound -> xmax;
@@ -212,7 +211,7 @@ Sound Sounds_combineToStereo (Collection me) {
 		long sharedNumberOfSamples = 0;
 		double sumOfFirstTimes = 0.0;
 		for (long isound = 1; isound <= my size; isound ++) {
-			Sound sound = (Sound) my item [isound];
+			Sound sound = my at [isound];
 			numberOfInitialZeroes [isound] = floor ((sound -> xmin - sharedMinimumTime) / sharedSamplingPeriod);
 			double newFirstTime = sound -> x1 - sound -> dx * numberOfInitialZeroes [isound];
 			sumOfFirstTimes += newFirstTime;
@@ -224,7 +223,7 @@ Sound Sounds_combineToStereo (Collection me) {
 			sharedNumberOfSamples, sharedSamplingPeriod, sharedTimeOfFirstSample);
 		long channelNumber = 0;
 		for (long isound = 1; isound <= my size; isound ++) {
-			Sound sound = (Sound) my item [isound];
+			Sound sound = my at [isound];
 			long offset = (long) floor (numberOfInitialZeroes [isound]);
 			for (long ichan = 1; ichan <= sound -> ny; ichan ++) {
 				channelNumber ++;
@@ -233,13 +232,13 @@ Sound Sounds_combineToStereo (Collection me) {
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sounds not combined to stereo.");
 	}
 }
 
-Sound Sound_extractChannel (Sound me, long ichan) {
+autoSound Sound_extractChannel (Sound me, long ichan) {
 	try {
 		if (ichan <= 0 || ichan > my ny)
 			Melder_throw (U"There is no channel ", ichan, U".");
@@ -247,7 +246,7 @@ Sound Sound_extractChannel (Sound me, long ichan) {
 		for (long isamp = 1; isamp <= my nx; isamp ++) {
 			thy z [1] [isamp] = my z [ichan] [isamp];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": channel ", ichan, U" not extracted.");
 	}
@@ -305,46 +304,46 @@ double Sound_getPowerInAir (Sound me) {
 	return NUMdefined (sum2) ? sum2 / (n * my ny) / 400 : NUMundefined;
 }
 
-Sound Matrix_to_Sound_mono (Matrix me, long row) {
+autoSound Matrix_to_Sound_mono (Matrix me, long row) {
 	try {
 		autoSound thee = Sound_create (1, my xmin, my xmax, my nx, my dx, my x1);
 		if (row < 0) row = my ny + 1 + row;
 		if (row < 1) row = 1;
 		if (row > my ny) row = my ny;
 		NUMvector_copyElements (my z [row], thy z [1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
 }
 
-Sound Matrix_to_Sound (Matrix me) {
+autoSound Matrix_to_Sound (Matrix me) {
 	try {
 		autoSound thee = Thing_new (Sound);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
 }
 
-Matrix Sound_to_Matrix (Sound me) {
+autoMatrix Sound_to_Matrix (Sound me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Sound Sound_upsample (Sound me) {
+autoSound Sound_upsample (Sound me) {
 	try {
 		long nfft = 1;
 		while (nfft < my nx + 2000) nfft *= 2;
 		autoSound thee = Sound_create (my ny, my xmin, my xmax, my nx * 2, my dx / 2, my x1 - my dx / 4);
 		for (long channel = 1; channel <= my ny; channel ++) {
-			autoNUMvector <double> data (1, 2 * nfft);   // zeroing is important...
+			autoNUMvector<double> data (1, 2 * nfft);   // zeroing is important...
 			NUMvector_copyElements (my z [channel], & data [1000], 1, my nx);   // ...because this fills only part of the sound
 			NUMrealft (data.peek(), nfft, 1);
 			long imin = (long) (nfft * 0.95);
@@ -358,13 +357,13 @@ Sound Sound_upsample (Sound me) {
 				thy z [channel] [i] = data [i + 2000] * factor;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not upsampled.");
 	}
 }
 
-Sound Sound_resample (Sound me, double samplingFrequency, long precision) {
+autoSound Sound_resample (Sound me, double samplingFrequency, long precision) {
 	double upfactor = samplingFrequency * my dx;
 	if (fabs (upfactor - 2) < 1e-6) return Sound_upsample (me);
 	if (fabs (upfactor - 1) < 1e-6) return Data_copy (me);
@@ -372,20 +371,20 @@ Sound Sound_resample (Sound me, double samplingFrequency, long precision) {
 		long numberOfSamples = lround ((my xmax - my xmin) * samplingFrequency);
 		if (numberOfSamples < 1)
 			Melder_throw (U"The resampled Sound would have no samples.");
-		autoSound filtered = NULL;
+		autoSound filtered;
 		if (upfactor < 1.0) {   // need anti-aliasing filter?
 			long nfft = 1, antiTurnAround = 1000;
 			while (nfft < my nx + antiTurnAround * 2) nfft *= 2;
-			autoNUMvector <double> data (1, nfft);
-			filtered.reset (Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1));
+			autoNUMvector<double> data (1, nfft);
+			filtered = Sound_create (my ny, my xmin, my xmax, my nx, my dx, my x1);
 			for (long channel = 1; channel <= my ny; channel ++) {
 				for (long i = 1; i <= nfft; i ++) {
-					data [i] = 0;
+					data [i] = 0.0;
 				}
 				NUMvector_copyElements (my z [channel], & data [antiTurnAround], 1, my nx);
 				NUMrealft (data.peek(), nfft, 1);   // go to the frequency domain
 				for (long i = (long) floor (upfactor * nfft); i <= nfft; i ++) {
-					data [i] = 0;   // filter away high frequencies
+					data [i] = 0.0;   // filter away high frequencies
 				}
 				data [2] = 0.0;
 				NUMrealft (data.peek(), nfft, -1);   // return to the time domain
@@ -395,7 +394,7 @@ Sound Sound_resample (Sound me, double samplingFrequency, long precision) {
 					to [i] = data [i + antiTurnAround] * factor;
 				}
 			}
-			me = filtered.peek();   // reference copy; remove at end
+			me = filtered.get();   // reference copy; remove at end
 		}
 		autoSound thee = Sound_create (my ny, my xmin, my xmax, numberOfSamples, 1.0 / samplingFrequency,
 			0.5 * (my xmin + my xmax - (numberOfSamples - 1) / samplingFrequency));
@@ -404,7 +403,7 @@ Sound Sound_resample (Sound me, double samplingFrequency, long precision) {
 			double *to = thy z [channel];
 			if (precision <= 1) {
 				for (long i = 1; i <= numberOfSamples; i ++) {
-					double x = Sampled_indexToX (thee.peek(), i);
+					double x = Sampled_indexToX (thee.get(), i);
 					double index = Sampled_xToIndex (me, x);
 					long leftSample = (long) floor (index);
 					double fraction = index - leftSample;
@@ -413,42 +412,42 @@ Sound Sound_resample (Sound me, double samplingFrequency, long precision) {
 				}
 			} else {
 				for (long i = 1; i <= numberOfSamples; i ++) {
-					double x = Sampled_indexToX (thee.peek(), i);
+					double x = Sampled_indexToX (thee.get(), i);
 					double index = Sampled_xToIndex (me, x);
 					to [i] = NUM_interpolate_sinc (my z [channel], my nx, index, precision);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not resampled.");
 	}
 }
 
-Sound Sounds_append (Sound me, double silenceDuration, Sound thee) {
+autoSound Sounds_append (Sound me, double silenceDuration, Sound thee) {
 	try {
 		long nx_silence = lround (silenceDuration / my dx), nx = my nx + nx_silence + thy nx;
 		if (my ny != thy ny)
 			Melder_throw (U"The numbers of channels are not equal (e.g. one is mono, the other stereo).");
 		if (my dx != thy dx)
 			Melder_throw (U"The sampling frequencies are not equal.");
-		autoSound him = Sound_create (my ny, 0, nx * my dx, nx, my dx, 0.5 * my dx);
+		autoSound him = Sound_create (my ny, 0.0, nx * my dx, nx, my dx, 0.5 * my dx);
 		for (long channel = 1; channel <= my ny; channel ++) {
 			NUMvector_copyElements (my z [channel], his z [channel], 1, my nx);
 			NUMvector_copyElements (thy z [channel], his z [channel] + my nx + nx_silence, 1, thy nx);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not appended.");
 	}
 }
 
-Sound Sounds_concatenate_e (Collection me, double overlapTime) {
+autoSound Sounds_concatenate (OrderedOf<structSound>& list, double overlapTime) {
 	try {
 		long numberOfChannels = 0, nx = 0, numberOfSmoothingSamples;
 		double dx = 0.0;
-		for (long i = 1; i <= my size; i ++) {
-			Sound sound = (Sound) my item [i];
+		for (long i = 1; i <= list.size; i ++) {
+			Sound sound = list.at [i];
 			if (numberOfChannels == 0) {
 				numberOfChannels = sound -> ny;
 			} else if (sound -> ny != numberOfChannels) {
@@ -473,12 +472,12 @@ Sound Sounds_concatenate_e (Collection me, double overlapTime) {
 			}
 		}
 		nx = 0;
-		for (long i = 1; i <= my size; i ++) {
-			Sound sound = (Sound) my item [i];
+		for (long i = 1; i <= list.size; i ++) {
+			Sound sound = list.at [i];
 			if (numberOfSmoothingSamples > 2 * sound -> nx)
 				Melder_throw (U"At least one of the sounds is shorter than twice the overlap time.\nChoose a shorter overlap time.");
 			bool thisIsTheFirstSound = ( i == 1 );
-			bool thisIsTheLastSound = ( i == my size );
+			bool thisIsTheLastSound = ( i == list.size );
 			bool weNeedSmoothingAtTheStartOfThisSound = ! thisIsTheFirstSound;
 			bool weNeedSmoothingAtTheEndOfThisSound = ! thisIsTheLastSound;
 			long numberOfSmoothingSamplesAtTheStartOfThisSound = weNeedSmoothingAtTheStartOfThisSound ? numberOfSmoothingSamples : 0;
@@ -501,16 +500,16 @@ Sound Sounds_concatenate_e (Collection me, double overlapTime) {
 			}
 			nx += sound -> nx - numberOfSmoothingSamplesAtTheEndOfThisSound;
 		}
-		thy nx -= numberOfSmoothingSamples * (my size - 1);
+		thy nx -= numberOfSmoothingSamples * (list.size - 1);
 		Melder_assert (thy nx == nx);
 		thy xmax = thy nx * dx;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Sounds not concatenated.");
 	}
 }
 
-Sound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		if (my ny > 1 && thy ny > 1 && my ny != thy ny)
 			Melder_throw (U"The numbers of channels of the two sounds have to be equal or 1.");
@@ -567,29 +566,29 @@ Sound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scali
 		}
 		switch (scaling) {
 			case kSounds_convolve_scaling_INTEGRAL: {
-				Vector_multiplyByScalar (him.peek(), my dx / nfft);
+				Vector_multiplyByScalar (him.get(), my dx / nfft);
 			} break;
 			case kSounds_convolve_scaling_SUM: {
-				Vector_multiplyByScalar (him.peek(), 1.0 / nfft);
+				Vector_multiplyByScalar (him.get(), 1.0 / nfft);
 			} break;
 			case kSounds_convolve_scaling_NORMALIZE: {
 				double normalizationFactor = Matrix_getNorm (me) * Matrix_getNorm (thee);
 				if (normalizationFactor != 0.0) {
-					Vector_multiplyByScalar (him.peek(), 1.0 / nfft / normalizationFactor);
+					Vector_multiplyByScalar (him.get(), 1.0 / nfft / normalizationFactor);
 				}
 			} break;
 			case kSounds_convolve_scaling_PEAK_099: {
-				Vector_scale (him.peek(), 0.99);
+				Vector_scale (him.get(), 0.99);
 			} break;
 			default: Melder_fatal (U"Sounds_convolve: unimplemented scaling ", scaling);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not convolved.");
 	}
 }
 
-Sound Sounds_crossCorrelate (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound Sounds_crossCorrelate (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		if (my ny > 1 && thy ny > 1 && my ny != thy ny)
 			Melder_throw (U"The numbers of channels of the two sounds have to be equal or 1.");
@@ -650,29 +649,29 @@ Sound Sounds_crossCorrelate (Sound me, Sound thee, enum kSounds_convolve_scaling
 		}
 		switch (scaling) {
 			case kSounds_convolve_scaling_INTEGRAL: {
-				Vector_multiplyByScalar (him.peek(), my dx / nfft);
+				Vector_multiplyByScalar (him.get(), my dx / nfft);
 			} break;
 			case kSounds_convolve_scaling_SUM: {
-				Vector_multiplyByScalar (him.peek(), 1.0 / nfft);
+				Vector_multiplyByScalar (him.get(), 1.0 / nfft);
 			} break;
 			case kSounds_convolve_scaling_NORMALIZE: {
 				double normalizationFactor = Matrix_getNorm (me) * Matrix_getNorm (thee);
 				if (normalizationFactor != 0.0) {
-					Vector_multiplyByScalar (him.peek(), 1.0 / nfft / normalizationFactor);
+					Vector_multiplyByScalar (him.get(), 1.0 / nfft / normalizationFactor);
 				}
 			} break;
 			case kSounds_convolve_scaling_PEAK_099: {
-				Vector_scale (him.peek(), 0.99);
+				Vector_scale (him.get(), 0.99);
 			} break;
 			default: Melder_fatal (U"Sounds_crossCorrelate: unimplemented scaling ", scaling);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not cross-correlated.");
 	}
 }
 
-Sound Sound_autoCorrelate (Sound me, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
+autoSound Sound_autoCorrelate (Sound me, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain) {
 	try {
 		long numberOfChannels = my ny, n1 = my nx, n2 = n1 + n1 - 1, nfft = 1;
 		while (nfft < n2) nfft *= 2;
@@ -721,23 +720,23 @@ Sound Sound_autoCorrelate (Sound me, enum kSounds_convolve_scaling scaling, enum
 		}
 		switch (scaling) {
 			case kSounds_convolve_scaling_INTEGRAL: {
-				Vector_multiplyByScalar (thee.peek(), my dx / nfft);
+				Vector_multiplyByScalar (thee.get(), my dx / nfft);
 			} break;
 			case kSounds_convolve_scaling_SUM: {
-				Vector_multiplyByScalar (thee.peek(), 1.0 / nfft);
+				Vector_multiplyByScalar (thee.get(), 1.0 / nfft);
 			} break;
 			case kSounds_convolve_scaling_NORMALIZE: {
 				double normalizationFactor = Matrix_getNorm (me) * Matrix_getNorm (me);
 				if (normalizationFactor != 0.0) {
-					Vector_multiplyByScalar (thee.peek(), 1.0 / nfft / normalizationFactor);
+					Vector_multiplyByScalar (thee.get(), 1.0 / nfft / normalizationFactor);
 				}
 			} break;
 			case kSounds_convolve_scaling_PEAK_099: {
-				Vector_scale (thee.peek(), 0.99);
+				Vector_scale (thee.get(), 0.99);
 			} break;
 			default: Melder_fatal (U"Sounds_autoCorrelate: unimplemented scaling ", scaling);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": autocorrelation not computed.");
 	}
@@ -813,20 +812,20 @@ void Sound_draw (Sound me, Graphics g,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
 		Graphics_setWindow (g, tmin, tmax, minimum - (my ny - 1) * (maximum - minimum), maximum);
-		Graphics_markLeft (g, minimum, 1, 1, 0, NULL);
-		Graphics_markLeft (g, maximum, 1, 1, 0, NULL);
+		Graphics_markLeft (g, minimum, true, true, false, nullptr);
+		Graphics_markLeft (g, maximum, true, true, false, nullptr);
 		if (minimum != 0.0 && maximum != 0.0 && (minimum > 0.0) != (maximum > 0.0)) {
-			Graphics_markLeft (g, 0.0, 1, 1, 1, NULL);
+			Graphics_markLeft (g, 0.0, true, true, true, nullptr);
 		}
 		if (my ny == 2) {
 			Graphics_setWindow (g, treversed ? tmax : tmin, treversed ? tmin : tmax, minimum, maximum + (my ny - 1) * (maximum - minimum));
-			Graphics_markRight (g, minimum, 1, 1, 0, NULL);
-			Graphics_markRight (g, maximum, 1, 1, 0, NULL);
+			Graphics_markRight (g, minimum, true, true, false, nullptr);
+			Graphics_markRight (g, maximum, true, true, false, nullptr);
 			if (minimum != 0.0 && maximum != 0.0 && (minimum > 0.0) != (maximum > 0.0)) {
-				Graphics_markRight (g, 0.0, 1, 1, 1, NULL);
+				Graphics_markRight (g, 0.0, true, true, true, nullptr);
 			}
 		}
 	}
@@ -838,7 +837,7 @@ static double interpolate (Sound me, long i1, long channel)
 	long i2 = i1 + 1;
 	double x1 = Sampled_indexToX (me, i1), x2 = Sampled_indexToX (me, i2);
 	double y1 = my z [channel] [i1], y2 = my z [channel] [i2];
-	return x1 + (x2 - x1) * y1 / (y1 - y2);   /* Linear. */
+	return x1 + (x2 - x1) * y1 / (y1 - y2);   // linear
 }
 double Sound_getNearestZeroCrossing (Sound me, double position, long channel) {
 	double *amplitude = my z [channel];
@@ -873,7 +872,7 @@ double Sound_getNearestZeroCrossing (Sound me, double position, long channel) {
 		position - leftZero < rightZero - position ? leftZero : rightZero;
 }
 
-void Sound_setZero (Sound me, double tmin_in, double tmax_in, int roundTimesToNearestZeroCrossing) {
+void Sound_setZero (Sound me, double tmin_in, double tmax_in, bool roundTimesToNearestZeroCrossing) {
 	Function_unidirectionalAutowindow (me, & tmin_in, & tmax_in);
 	Function_intersectRangeWithDomain (me, & tmin_in, & tmax_in);
 	for (long channel = 1; channel <= my ny; channel ++) {
@@ -892,7 +891,7 @@ void Sound_setZero (Sound me, double tmin_in, double tmax_in, int roundTimesToNe
 	}
 }
 
-Sound Sound_createAsPureTone (long numberOfChannels, double startingTime, double endTime,
+autoSound Sound_createAsPureTone (long numberOfChannels, double startingTime, double endTime,
 	double sampleRate, double frequency, double amplitude, double fadeInDuration, double fadeOutDuration)
 {
 	try {
@@ -900,7 +899,7 @@ Sound Sound_createAsPureTone (long numberOfChannels, double startingTime, double
 		if (numberOfSamples_f > (double) INT32_MAX)
 			Melder_throw (U"Cannot create sounds with more than ", Melder_bigInteger (INT32_MAX), U" samples, because they cannot be saved to disk.");
 		autoSound me = Sound_create (numberOfChannels, startingTime, endTime, (long) numberOfSamples_f,
-			1 / sampleRate, startingTime + 0.5 / sampleRate);
+			1.0 / sampleRate, startingTime + 0.5 / sampleRate);
 		for (long isamp = 1; isamp <= my nx; isamp ++) {
 			double time = my x1 + (isamp - 1) * my dx;
 			double value = amplitude * sin (NUM2pi * frequency * time);
@@ -914,13 +913,13 @@ Sound Sound_createAsPureTone (long numberOfChannels, double startingTime, double
 				my z [ichan] [isamp] = value;
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from tone complex.");
 	}
 }
 
-Sound Sound_createFromToneComplex (double startingTime, double endTime, double sampleRate,
+autoSound Sound_createFromToneComplex (double startingTime, double endTime, double sampleRate,
 	int phase, double frequencyStep, double firstFrequency, double ceiling, long numberOfComponents)
 {
 	try {
@@ -949,10 +948,10 @@ Sound Sound_createFromToneComplex (double startingTime, double endTime, double s
 		 */
 		double factor = 0.99 / numberOfComponents;
 		autoSound me = Sound_create (1, startingTime, endTime, lround ((endTime - startingTime) * sampleRate),
-			1 / sampleRate, startingTime + 0.5 / sampleRate);
+			1.0 / sampleRate, startingTime + 0.5 / sampleRate);
 		double *amplitude = my z [1];
 		for (long isamp = 1; isamp <= my nx; isamp ++) {
-			double value = 0.0, t = Sampled_indexToX (me.peek(), isamp);
+			double value = 0.0, t = Sampled_indexToX (me.get(), isamp);
 			double omegaStepT = omegaStep * t, firstOmegaT = firstOmega * t;
 			if (phase == Sound_TONE_COMPLEX_SINE)
 				for (long icomp = 1; icomp <= numberOfComponents; icomp ++)
@@ -962,7 +961,7 @@ Sound Sound_createFromToneComplex (double startingTime, double endTime, double s
 					value += cos (firstOmegaT + (icomp - 1) * omegaStepT);
 			amplitude [isamp] = value * factor;
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not created from tone complex.");
 	}
@@ -1055,7 +1054,7 @@ void Sound_overrideSamplingFrequency (Sound me, double rate) {
 	my xmax = my xmin + my nx * my dx;
 }
 
-Sound Sound_extractPart (Sound me, double t1, double t2, enum kSound_windowShape windowShape, double relativeWidth, bool preserveTimes) {
+autoSound Sound_extractPart (Sound me, double t1, double t2, enum kSound_windowShape windowShape, double relativeWidth, bool preserveTimes) {
 	try {
 		/*
 		 * We do not clip to the Sound's time domain.
@@ -1096,14 +1095,14 @@ Sound Sound_extractPart (Sound me, double t1, double t2, enum kSound_windowShape
 		/*
 		 * Multiply by a window that extends throughout the target domain.
 		 */
-		Sound_multiplyByWindow (thee.peek(), windowShape);
-		return thee.transfer();
+		Sound_multiplyByWindow (thee.get(), windowShape);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": part not extracted.");
 	}
 }
 
-Sound Sound_extractPartForOverlap (Sound me, double t1, double t2, double overlap) {
+autoSound Sound_extractPartForOverlap (Sound me, double t1, double t2, double overlap) {
 	try {
 		if (t1 == t2) { t1 = my xmin; t2 = my xmax; };   // autowindow
 		if (overlap > 0.0) {
@@ -1134,7 +1133,7 @@ Sound Sound_extractPartForOverlap (Sound me, double t1, double t2, double overla
 			NUMvector_copyElements (my z [channel], thy z [channel] + 1 - ix1,
 					( ix1 < 1 ? 1 : ix1 ), ( ix2 > my nx ? my nx : ix2 ));
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": part not extracted.");
 	}
@@ -1162,11 +1161,11 @@ void Sound_filterWithFormants (Sound me, double tmin, double tmax,
 	}
 }
 
-Sound Sound_filter_oneFormant (Sound me, double frequency, double bandwidth) {
+autoSound Sound_filter_oneFormant (Sound me, double frequency, double bandwidth) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_filterWithOneFormantInline (thee.peek(), frequency, bandwidth);
-		return thee.transfer();
+		Sound_filterWithOneFormantInline (thee.get(), frequency, bandwidth);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (one formant).");
 	}
@@ -1179,23 +1178,23 @@ void Sound_filterWithOneFormantInline (Sound me, double frequency, double bandwi
 	Matrix_scaleAbsoluteExtremum (me, 0.99);
 }
 
-Sound Sound_filter_preemphasis (Sound me, double frequency) {
+autoSound Sound_filter_preemphasis (Sound me, double frequency) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_preEmphasis (thee.peek(), frequency);
-		Matrix_scaleAbsoluteExtremum (thee.peek(), 0.99);
-		return thee.transfer();
+		Sound_preEmphasis (thee.get(), frequency);
+		Matrix_scaleAbsoluteExtremum (thee.get(), 0.99);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (pre-emphasis).");
 	}
 }
 
-Sound Sound_filter_deemphasis (Sound me, double frequency) {
+autoSound Sound_filter_deemphasis (Sound me, double frequency) {
 	try {
 		autoSound thee = Data_copy (me);
-		Sound_deEmphasis (thee.peek(), frequency);
-		Matrix_scaleAbsoluteExtremum (thee.peek(), 0.99);
-		return thee.transfer();
+		Sound_deEmphasis (thee.get(), frequency);
+		Matrix_scaleAbsoluteExtremum (thee.get(), 0.99);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (de-emphasis).");
 	}
@@ -1215,7 +1214,7 @@ void Sound_reverse (Sound me, double tmin, double tmax) {
 	}
 }
 
-Sound Sounds_crossCorrelate_short (Sound me, Sound thee, double tmin, double tmax, int normalize) {
+autoSound Sounds_crossCorrelate_short (Sound me, Sound thee, double tmin, double tmax, int normalize) {
 	try {
 		if (my dx != thy dx)
 			Melder_throw (U"Sampling frequencies are not equal.");
@@ -1265,7 +1264,7 @@ Sound Sounds_crossCorrelate_short (Sound me, Sound thee, double tmin, double tma
 				his z [1] [i] *= factor;
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": not cross-correlated.");
 	}
diff --git a/fon/Sound.h b/fon/Sound.h
index e86d416..ae315e0 100644
--- a/fon/Sound.h
+++ b/fon/Sound.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Sound inherits from Vector */
@@ -55,10 +54,10 @@ Thing_define (Sound, Vector) {
 	z may be replaced (e.g., in pasting).
 */
 
-Sound Sound_create (long numberOfChannels, double xmin, double xmax, long nx, double dx, double x1);
+autoSound Sound_create (long numberOfChannels, double xmin, double xmax, long nx, double dx, double x1);
 /*
 	Function:
-		return a new silent Sound, or NULL if out of memory.
+		return a new silent Sound.
 	Preconditions:
 		xmax > xmin;
 		nx >= 1;
@@ -77,10 +76,10 @@ Sound Sound_create (long numberOfChannels, double xmin, double xmax, long nx, do
 		thy z [i] [1..nx] == 0.0;
 */
 
-Sound Sound_createSimple (long numberOfChannels, double duration, double samplingFrequency);
+autoSound Sound_createSimple (long numberOfChannels, double duration, double samplingFrequency);
 /*
 	Function:
-		return a new silent Sound, or NULL if out of memory.
+		return a new silent Sound.
 	Preconditions:
 		duration > 0.0;
 		samplingFrequency > 0.0;
@@ -98,26 +97,26 @@ Sound Sound_createSimple (long numberOfChannels, double duration, double samplin
 		thy z [i] [1..nx] == 0.0;
 */
 
-Sound Sound_convertToMono (Sound me);
-Sound Sound_convertToStereo (Sound me);
-Sound Sound_extractChannel (Sound me, long ichannel);
-Sound Sounds_combineToStereo (Collection me);
+autoSound Sound_convertToMono (Sound me);
+autoSound Sound_convertToStereo (Sound me);
+autoSound Sound_extractChannel (Sound me, long ichannel);
+autoSound Sounds_combineToStereo (OrderedOf<structSound>* me);
 
 /* Levels for Sampled_getValueAtSample (me, index, level, unit) */
 #define Sound_LEVEL_MONO  0
 #define Sound_LEVEL_LEFT  1
 #define Sound_LEVEL_RIGHT  2
 
-Sound Sound_upsample (Sound me);   /* By a factor 2. */
+autoSound Sound_upsample (Sound me);   /* By a factor 2. */
 
-Sound Sound_resample (Sound me, double samplingFrequency, long precision);
+autoSound Sound_resample (Sound me, double samplingFrequency, long precision);
 /*
 	Method:
 		precision <= 1: linear interpolation.
 		precision >= 2: sinx/x interpolation with maximum depth equal to 'precision'.
 */
 
-Sound Sounds_append (Sound me, double silenceDuration, Sound thee);
+autoSound Sounds_append (Sound me, double silenceDuration, Sound thee);
 /*
 	Function:
 		append two Sounds.
@@ -135,7 +134,7 @@ Sound Sounds_append (Sound me, double silenceDuration, Sound thee);
 		result -> z [1] [i + my nx + round (silenceDuration / my dx)] == thy z [1] [i]
 */
  
-Sound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
 /*
 	Function:
 		convolve two Sounds.
@@ -151,9 +150,9 @@ Sound Sounds_convolve (Sound me, Sound thee, enum kSounds_convolve_scaling scali
 			result -> z [1] [i] == result -> dx *
 				sum (j = 1..i, my z [1] [j] * thy z [1] [i - j + 1])
 */
-Sound Sounds_crossCorrelate (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
-Sound Sounds_crossCorrelate_short (Sound me, Sound thee, double tmin, double tmax, int normalize);
-Sound Sound_autoCorrelate (Sound me, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound Sounds_crossCorrelate (Sound me, Sound thee, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
+autoSound Sounds_crossCorrelate_short (Sound me, Sound thee, double tmin, double tmax, int normalize);
+autoSound Sound_autoCorrelate (Sound me, enum kSounds_convolve_scaling scaling, enum kSounds_convolve_signalOutsideTimeDomain signalOutsideTimeDomain);
 
 double Sound_getRootMeanSquare (Sound me, double xmin, double xmax);
 double Sound_getEnergy (Sound me, double xmin, double xmax);
@@ -163,29 +162,29 @@ double Sound_getPowerInAir (Sound me);
 double Sound_getIntensity_dB (Sound me);
 
 double Sound_getNearestZeroCrossing (Sound me, double position, long ichannel);
-void Sound_setZero (Sound me, double tmin, double tmax, int roundTimesToNearestZeroCrossing);
+void Sound_setZero (Sound me, double tmin, double tmax, bool roundTimesToNearestZeroCrossing);
 
-Sound Sound_createAsPureTone (long numberOfChannels, double startingTime, double endTime,
+autoSound Sound_createAsPureTone (long numberOfChannels, double startingTime, double endTime,
 	double sampleRate, double frequency, double amplitude, double fadeInDuration, double fadeOutDuration);
-Sound Sound_createFromToneComplex (double startingTime, double endTime,
+autoSound Sound_createFromToneComplex (double startingTime, double endTime,
 	double sampleRate, int phase, double frequencyStep,
 	double firstFrequency, double ceiling, long numberOfComponents);
 /* Values for `phase' parameter: */
 #define Sound_TONE_COMPLEX_SINE  0
 #define Sound_TONE_COMPLEX_COSINE  1
 
-Sound Sounds_concatenate_e (Collection me, double overlapTime);
+autoSound Sounds_concatenate (OrderedOf<structSound>& list, double overlapTime);
 void Sound_multiplyByWindow (Sound me, enum kSound_windowShape windowShape);
 void Sound_scaleIntensity (Sound me, double newAverageIntensity);
 void Sound_overrideSamplingFrequency (Sound me, double newSamplingFrequency);
-Sound Sound_extractPart (Sound me, double t1, double t2, enum kSound_windowShape windowShape, double relativeWidth, bool preserveTimes);
-Sound Sound_extractPartForOverlap (Sound me, double t1, double t2, double overlap);
+autoSound Sound_extractPart (Sound me, double t1, double t2, enum kSound_windowShape windowShape, double relativeWidth, bool preserveTimes);
+autoSound Sound_extractPartForOverlap (Sound me, double t1, double t2, double overlap);
 void Sound_filterWithFormants (Sound me, double tmin, double tmax,
 	int numberOfFormants, double formant [], double bandwidth []);
-Sound Sound_filter_oneFormant (Sound me, double frequency, double bandwidth);
+autoSound Sound_filter_oneFormant (Sound me, double frequency, double bandwidth);
 void Sound_filterWithOneFormantInline (Sound me, double frequency, double bandwidth);
-Sound Sound_filter_preemphasis (Sound me, double frequency);
-Sound Sound_filter_deemphasis (Sound me, double frequency);
+autoSound Sound_filter_preemphasis (Sound me, double frequency);
+autoSound Sound_filter_deemphasis (Sound me, double frequency);
 
 void Sound_reverse (Sound me, double tmin, double tmax);
 
@@ -193,23 +192,21 @@ void Sound_draw (Sound me, Graphics g,
 	double tmin, double tmax, double minimum, double maximum, bool garnish, const char32 *method);
 /* For method, see Vector_draw. */
 
-Matrix Sound_to_Matrix (Sound me);
+autoMatrix Sound_to_Matrix (Sound me);
 /*
 	Create a Matrix from a Sound,
 	with deep copy of all its Matrix attributes, except class information and methods.
-	Return NULL if out of memory.  
 */
 
-Sound Matrix_to_Sound (Matrix me);
+autoSound Matrix_to_Sound (Matrix me);
 
-Sound Matrix_to_Sound_mono (Matrix me, long row);
+autoSound Matrix_to_Sound_mono (Matrix me, long row);
 /*
 	Function:
 		create a Sound from one row of a Matrix.
 		"row" is forced inside the segment [1, my ny];
 		negative values count from the last row;
 		e.g., if "row" is -1, the last row is taken.
-		Return NULL if out of memory.
 	Postconditions:
 		thy xmin == my xmin;
 		thy xmax == my xmax;
@@ -220,11 +217,11 @@ Sound Matrix_to_Sound_mono (Matrix me, long row);
 		thy z [1] [...] == my z [row] [...];
 */
 
-extern Sound Sound_clipboard;
+extern autoSound Sound_clipboard;
 
 /********** Sound_audio.cpp **********/
 
-Sound Sound_recordFixedTime (int inputSource,
+autoSound Sound_recordFixedTime (int inputSource,
 	double gain, double balance, double samplingFrequency, double duration);
 	/*
 		Function:
@@ -251,7 +248,7 @@ Sound Sound_recordFixedTime (int inputSource,
 			duration:
 				positive time in seconds.
 		Return value:
-			the resulting Sound; NULL in case of failure.
+			the resulting Sound.
 		Failures:
 			Hardware does not support sampling frequency.
 			Duration must be positive.
@@ -261,12 +258,13 @@ Sound Sound_recordFixedTime (int inputSource,
 			and wait for broadcastPublication().
 	*/
 
-void Sound_playPart (Sound me, double tmin, double tmax,
-	int (*playCallback) (void *playClosure, int phase, double tmin, double tmax, double t), void *playClosure);
+typedef MelderCallback <int, structThing /* boss */, int /* phase */, double /* tmin */, double /* tmax */, double /* t */> Sound_PlayCallback;
+
+void Sound_playPart (Sound me, double tmin, double tmax, Sound_PlayCallback playCallback, Thing playBoss);
 /*
  * Play a sound. The playing can be interrupted with the Escape key (also Command-period on the Mac).
- * If playCallback is not NULL, Sound_play will call it repeatedly, with five parameters:
- *    1. playClosure: the same value as was supplied as the last argument to Sound_playPart.
+ * If playCallback is not null, Sound_play will call it repeatedly, with five parameters:
+ *    1. playBoss: the same value as was supplied as the last argument to Sound_playPart.
  *    2. phase: 1 at the start, 2 while playing, 3 at the end.
  *    3. tmin: the same tmin that was supplied as the second argument to Sound_playPart.
  *    4. tmax: the same tmax that was supplied as the second argument to Sound_playPart.
@@ -275,8 +273,7 @@ void Sound_playPart (Sound me, double tmin, double tmax,
  * cursor while we play a sound:
  *    Sound_playPart (my sound, my startSelection, my endSelection, thePlayCallback, me);
  * We gave ourselves as the playClosure, so that the message will arrive with us:
- *    int thePlayCallback (void *playClosure, int phase, double tmin, double tmax, double t) {
- *       SoundEditor me = (SoundEditor) playClosure;
+ *    int thePlayCallback (SoundEditor me, int phase, double tmin, double tmax, double t) {
  *       if (phase == 1) {
  *          Melder_assert (t == tmin);
  *          drawPlayCursor (me, my playCursor = t);
@@ -296,26 +293,25 @@ void Sound_playPart (Sound me, double tmin, double tmax,
  *
  * Sound_playPart () usually runs asynchronously, and kills an already playing sound.
  */
-void Sound_play (Sound me,
-	int (*playCallback) (void *playClosure, int phase, double tmin, double tmax, double t), void *playClosure);
-	/* The same as Sound_playPart (me, my xmin, my xmax, playCallback, playClosure); */
+void Sound_play (Sound me, Sound_PlayCallback playCallback, Thing playBoss);
+	/* The same as Sound_playPart (me, my xmin, my xmax, playCallback, playBoss); */
 
 /********** Sound_files.cpp **********/
 
 /* To avoid clipping, keep the absolute amplitude below 1.000. */
 /* All are mono or stereo PCM. */
 void Sound_writeToAudioFile (Sound me, MelderFile file, int audioFileType, int numberOfBitsPerSamplePoint);
-void Sound_writeToKayFile (Sound me, MelderFile file);   /* 16 bit */
-void Sound_writeToSesamFile (Sound me, MelderFile file);   /* 12-bit SESAM/LVS */
+void Sound_writeToKayFile (Sound me, MelderFile file);   // 16-bit
+void Sound_writeToSesamFile (Sound me, MelderFile file);   // 12-bit SESAM/LVS
 
-Sound Sound_readFromSoundFile (MelderFile file);   /* AIFF, WAV, NeXT/Sun, or NIST */
-Sound Sound_readFromKayFile (MelderFile file);   /* 16 bit */
-Sound Sound_readFromSesamFile (MelderFile file);   /* 12 bit SESAM/LVS */
-Sound Sound_readFromBellLabsFile (MelderFile file);   /* 16 bit */
-Sound Sound_readFromRawAlawFile (MelderFile file);
-Sound Sound_readFromMovieFile (MelderFile file);
+autoSound Sound_readFromSoundFile (MelderFile file);   // AIFF, WAV, NeXT/Sun, or NIST
+autoSound Sound_readFromKayFile (MelderFile file);   // 16-bit
+autoSound Sound_readFromSesamFile (MelderFile file);   // 12-bit SESAM/LVS
+autoSound Sound_readFromBellLabsFile (MelderFile file);   // 16-bit
+autoSound Sound_readFromRawAlawFile (MelderFile file);
+autoSound Sound_readFromMovieFile (MelderFile file);
 
-Sound Sound_readFromRawSoundFile (MelderFile file, int encoding, int numberOfChannels, double sampleRate);
+autoSound Sound_readFromRawSoundFile (MelderFile file, int encoding, int numberOfChannels, double sampleRate);
 /*
 	'encoding' is any of the following:
 		Melder_LINEAR_8_SIGNED
@@ -339,8 +335,8 @@ void Sound_writeToRawSoundFile (Sound me, MelderFile file, int encoding);
 
 /********** Sound_enhance.cpp **********/
 
-Sound Sound_lengthen_overlapAdd (Sound me, double fmin, double fmax, double factor);
-Sound Sound_deepenBandModulation (Sound me, double enhancement_dB,
+autoSound Sound_lengthen_overlapAdd (Sound me, double fmin, double fmax, double factor);
+autoSound Sound_deepenBandModulation (Sound me, double enhancement_dB,
 	double flow, double fhigh, double slowModulation, double fastModulation, double bandSmoothing);
 
 /* End of file Sound.h */
diff --git a/fon/SoundEditor.cpp b/fon/SoundEditor.cpp
index e15cf6a..e2392e1 100644
--- a/fon/SoundEditor.cpp
+++ b/fon/SoundEditor.cpp
@@ -1,20 +1,19 @@
 /* SoundEditor.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma, 2007 Erez Volk (FLAC support)
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma, 2007 Erez Volk (FLAC support)
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SoundEditor.h"
@@ -29,34 +28,24 @@ Thing_implement (SoundEditor, TimeSoundAnalysisEditor, 0);
 
 void structSoundEditor :: v_dataChanged () {
 	Sound sound = (Sound) data;
-	Melder_assert (sound != NULL);   // LongSound objects should not get v_dataChanged messages
+	Melder_assert (sound);   // LongSound objects should not get v_dataChanged messages
 	Matrix_getWindowExtrema (sound, 1, sound -> nx, 1, sound -> ny, & d_sound.minimum, & d_sound.maximum);   // BUG unreadable
-	v_destroy_analysis ();
+	v_reset_analysis ();
 	SoundEditor_Parent :: v_dataChanged ();
 }
 
 /***** EDIT MENU *****/
 
-static void menu_cb_Copy (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_Copy (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	try {
-		/*
-		 * Create without change.
-		 */
-		autoSound publish = my d_longSound.data ? LongSound_extractPart ((LongSound) my data, my d_startSelection, my d_endSelection, FALSE) :
-			Sound_extractPart ((Sound) my data, my d_startSelection, my d_endSelection, kSound_windowShape_RECTANGULAR, 1.0, FALSE);
-		/*
-		 * Change without error.
-		 */
-		forget (Sound_clipboard);
-		Sound_clipboard = publish.transfer();
+		Sound_clipboard = my d_longSound.data ? LongSound_extractPart ((LongSound) my data, my d_startSelection, my d_endSelection, false) :
+			Sound_extractPart ((Sound) my data, my d_startSelection, my d_endSelection, kSound_windowShape_RECTANGULAR, 1.0, false);
 	} catch (MelderError) {
 		Melder_throw (U"Sound selection not copied to clipboard.");
 	}
 }
 
-static void menu_cb_Cut (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_Cut (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	try {
 		Sound sound = (Sound) my data;
 		long first, last, selectionNumberOfSamples = Sampled_getWindowSamples (sound,
@@ -100,8 +89,7 @@ static void menu_cb_Cut (EDITOR_ARGS) {
 			sound -> nx = newNumberOfSamples;
 			sound -> x1 = 0.5 * sound -> dx;
 			sound -> z = newData.transfer();
-			forget (Sound_clipboard);
-			Sound_clipboard = publish.transfer();
+			Sound_clipboard = publish.move();
 
 			/* Start updating the markers of the FunctionEditor, respecting the invariants. */
 
@@ -145,7 +133,7 @@ static void menu_cb_Cut (EDITOR_ARGS) {
 			/* Force FunctionEditor to show changes. */
 
 			Matrix_getWindowExtrema (sound, 1, sound -> nx, 1, sound -> ny, & my d_sound.minimum, & my d_sound.maximum);
-			my v_destroy_analysis ();
+			my v_reset_analysis ();
 			FunctionEditor_ungroup (me);
 			FunctionEditor_marksChanged (me, false);
 			Editor_broadcastDataChanged (me);
@@ -157,8 +145,7 @@ static void menu_cb_Cut (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_Paste (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_Paste (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	Sound sound = (Sound) my data;
 	long leftSample = Sampled_xToLowIndex (sound, my d_endSelection);
 	long oldNumberOfSamples = sound -> nx, newNumberOfSamples;
@@ -215,14 +202,13 @@ static void menu_cb_Paste (EDITOR_ARGS) {
 	/* Force FunctionEditor to show changes. */
 
 	Matrix_getWindowExtrema (sound, 1, sound -> nx, 1, sound -> ny, & my d_sound.minimum, & my d_sound.maximum);
-	my v_destroy_analysis ();
+	my v_reset_analysis ();
 	FunctionEditor_ungroup (me);
 	FunctionEditor_marksChanged (me, false);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_SetSelectionToZero (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_SetSelectionToZero (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	Sound sound = (Sound) my data;
 	long first, last;
 	Sampled_getWindowSamples (sound, my d_startSelection, my d_endSelection, & first, & last);
@@ -232,24 +218,22 @@ static void menu_cb_SetSelectionToZero (EDITOR_ARGS) {
 			sound -> z [channel] [i] = 0.0;
 		}
 	}
-	my v_destroy_analysis ();
+	my v_reset_analysis ();
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_ReverseSelection (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_ReverseSelection (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Reverse selection");
 	Sound_reverse ((Sound) my data, my d_startSelection, my d_endSelection);
-	my v_destroy_analysis ();
+	my v_reset_analysis ();
 	FunctionEditor_redraw (me);
 	Editor_broadcastDataChanged (me);
 }
 
 /***** SELECT MENU *****/
 
-static void menu_cb_MoveCursorToZero (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_MoveCursorToZero (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing ((Sound) my data, 0.5 * (my d_startSelection + my d_endSelection), 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_startSelection = my d_endSelection = zero;
@@ -257,8 +241,7 @@ static void menu_cb_MoveCursorToZero (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_MoveBtoZero (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_MoveBtoZero (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing ((Sound) my data, my d_startSelection, 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_startSelection = zero;
@@ -271,8 +254,7 @@ static void menu_cb_MoveBtoZero (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_MoveEtoZero (EDITOR_ARGS) {
-	EDITOR_IAM (SoundEditor);
+static void menu_cb_MoveEtoZero (SoundEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing ((Sound) my data, my d_endSelection, 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_endSelection = zero;
@@ -287,20 +269,20 @@ static void menu_cb_MoveEtoZero (EDITOR_ARGS) {
 
 /***** HELP MENU *****/
 
-static void menu_cb_SoundEditorHelp (EDITOR_ARGS) { EDITOR_IAM (SoundEditor); Melder_help (U"SoundEditor"); }
-static void menu_cb_LongSoundEditorHelp (EDITOR_ARGS) { EDITOR_IAM (SoundEditor); Melder_help (U"LongSoundEditor"); }
+static void menu_cb_SoundEditorHelp (SoundEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"SoundEditor"); }
+static void menu_cb_LongSoundEditorHelp (SoundEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"LongSoundEditor"); }
 
 void structSoundEditor :: v_createMenus () {
 	SoundEditor_Parent :: v_createMenus ();
-	Melder_assert (data != NULL);
-	Melder_assert (d_sound.data != NULL || d_longSound.data != NULL);
+	Melder_assert (data);
+	Melder_assert (d_sound.data || d_longSound.data);
 
-	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, nullptr);
 	if (d_sound.data) cutButton = Editor_addCommand (this, U"Edit", U"Cut", 'X', menu_cb_Cut);
 	copyButton = Editor_addCommand (this, U"Edit", U"Copy selection to Sound clipboard", 'C', menu_cb_Copy);
 	if (d_sound.data) pasteButton = Editor_addCommand (this, U"Edit", U"Paste after selection", 'V', menu_cb_Paste);
 	if (d_sound.data) {
-		Editor_addCommand (this, U"Edit", U"-- zero --", 0, NULL);
+		Editor_addCommand (this, U"Edit", U"-- zero --", 0, nullptr);
 		zeroButton = Editor_addCommand (this, U"Edit", U"Set selection to zero", 0, menu_cb_SetSelectionToZero);
 		reverseButton = Editor_addCommand (this, U"Edit", U"Reverse selection", 'R', menu_cb_ReverseSelection);
 	}
@@ -338,56 +320,56 @@ void structSoundEditor :: v_draw () {
 	Sampled data = (Sampled) this -> data;
 	Graphics_Viewport viewport;
 	bool showAnalysis = p_spectrogram_show || p_pitch_show || p_intensity_show || p_formant_show;
-	Melder_assert (data != NULL);
-	Melder_assert (d_sound.data != NULL || d_longSound.data != NULL);
+	Melder_assert (data);
+	Melder_assert (d_sound.data || d_longSound.data);
 
 	/*
 	 * We check beforehand whether the window fits the LongSound buffer.
 	 */
 	if (d_longSound.data && d_endWindow - d_startWindow > d_longSound.data -> bufferLength) {
-		Graphics_setColour (d_graphics, Graphics_WHITE);
-		Graphics_setWindow (d_graphics, 0, 1, 0, 1);
-		Graphics_fillRectangle (d_graphics, 0, 1, 0, 1);
-		Graphics_setColour (d_graphics, Graphics_BLACK);
-		Graphics_setTextAlignment (d_graphics, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (d_graphics, 0.5, 0.5,   U"(window longer than ", Melder_float (Melder_single (d_longSound.data -> bufferLength)), U" seconds)");
-		Graphics_setTextAlignment (d_graphics, Graphics_CENTRE, Graphics_TOP);
-		Graphics_text (d_graphics, 0.5, 0.5, U"(zoom in to see the samples)");
+		Graphics_setColour (d_graphics.get(), Graphics_WHITE);
+		Graphics_setWindow (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_fillRectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+		Graphics_setTextAlignment (d_graphics.get(), Graphics_CENTRE, Graphics_BOTTOM);
+		Graphics_text (d_graphics.get(), 0.5, 0.5,   U"(window longer than ", Melder_float (Melder_single (d_longSound.data -> bufferLength)), U" seconds)");
+		Graphics_setTextAlignment (d_graphics.get(), Graphics_CENTRE, Graphics_TOP);
+		Graphics_text (d_graphics.get(), 0.5, 0.5, U"(zoom in to see the samples)");
 		return;
 	}
 
 	/* Draw sound. */
 
 	if (showAnalysis)
-		viewport = Graphics_insetViewport (d_graphics, 0, 1, 0.5, 1);
-	Graphics_setColour (d_graphics, Graphics_WHITE);
-	Graphics_setWindow (d_graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (d_graphics, 0, 1, 0, 1);
+		viewport = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, 0.5, 1.0);
+	Graphics_setColour (d_graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 	TimeSoundEditor_drawSound (this, d_sound.minimum, d_sound.maximum);
-	Graphics_flushWs (d_graphics);
+	//Graphics_flushWs (d_graphics.get());
 	if (showAnalysis)
-		Graphics_resetViewport (d_graphics, viewport);
+		Graphics_resetViewport (d_graphics.get(), viewport);
 
 	/* Draw analyses. */
 
 	if (showAnalysis) {
 		/* Draw spectrogram, pitch, formants. */
-		viewport = Graphics_insetViewport (d_graphics, 0, 1, 0, 0.5);
+		viewport = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, 0.0, 0.5);
 		v_draw_analysis ();
-		Graphics_flushWs (d_graphics);
-		Graphics_resetViewport (d_graphics, viewport);
+		//Graphics_flushWs (d_graphics.get());
+		Graphics_resetViewport (d_graphics.get(), viewport);
 	}
 
 	/* Draw pulses. */
 
 	if (p_pulses_show) {
 		if (showAnalysis)
-			viewport = Graphics_insetViewport (d_graphics, 0, 1, 0.5, 1);
+			viewport = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, 0.5, 1.0);
 		v_draw_analysis_pulses ();
 		TimeSoundEditor_drawSound (this, d_sound.minimum, d_sound.maximum);   // second time, partially across the pulses
-		Graphics_flushWs (d_graphics);
+		//Graphics_flushWs (d_graphics.get());
 		if (showAnalysis)
-			Graphics_resetViewport (d_graphics, viewport);
+			Graphics_resetViewport (d_graphics.get(), viewport);
 	}
 
 	/* Update buttons. */
@@ -410,32 +392,32 @@ void structSoundEditor :: v_play (double a_tmin, double a_tmax) {
 		Sound_playPart ((Sound) data, a_tmin, a_tmax, theFunctionEditor_playCallback, this);
 }
 
-int structSoundEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structSoundEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	if ((p_spectrogram_show || p_formant_show) && yWC < 0.5 && xWC > d_startWindow && xWC < d_endWindow) {
 		d_spectrogram_cursor = p_spectrogram_viewFrom +
-			2 * yWC * (p_spectrogram_viewTo - p_spectrogram_viewFrom);
+			2.0 * yWC * (p_spectrogram_viewTo - p_spectrogram_viewFrom);
 	}
 	return SoundEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);   // drag & update
 }
 
 void structSoundEditor :: v_highlightSelection (double left, double right, double bottom, double top) {
 	if (p_spectrogram_show)
-		Graphics_highlight (d_graphics, left, right, 0.5 * (bottom + top), top);
+		Graphics_highlight (d_graphics.get(), left, right, 0.5 * (bottom + top), top);
 	else
-		Graphics_highlight (d_graphics, left, right, bottom, top);
+		Graphics_highlight (d_graphics.get(), left, right, bottom, top);
 }
 
 void structSoundEditor :: v_unhighlightSelection (double left, double right, double bottom, double top) {
 	if (p_spectrogram_show)
-		Graphics_unhighlight (d_graphics, left, right, 0.5 * (bottom + top), top);
+		Graphics_unhighlight (d_graphics.get(), left, right, 0.5 * (bottom + top), top);
 	else
-		Graphics_unhighlight (d_graphics, left, right, bottom, top);
+		Graphics_unhighlight (d_graphics.get(), left, right, bottom, top);
 }
 
 void SoundEditor_init (SoundEditor me, const char32 *title, Sampled data) {
 	/*
 	 * my longSound.data or my sound.data have to be set before we call FunctionEditor_init,
-	 * because createMenus expects that one of them is not NULL.
+	 * because createMenus expects that one of them is not null.
 	 */
 	TimeSoundAnalysisEditor_init (me, title, data, data, false);
 	if (my d_longSound.data && my d_endWindow - my d_startWindow > 30.0) {
@@ -446,12 +428,12 @@ void SoundEditor_init (SoundEditor me, const char32 *title, Sampled data) {
 	}
 }
 
-SoundEditor SoundEditor_create (const char32 *title, Sampled data) {
-	Melder_assert (data != NULL);
+autoSoundEditor SoundEditor_create (const char32 *title, Sampled data) {
+	Melder_assert (data);
 	try {
 		autoSoundEditor me = Thing_new (SoundEditor);
-		SoundEditor_init (me.peek(), title, data);
-		return me.transfer();
+		SoundEditor_init (me.get(), title, data);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound window not created.");
 	}
diff --git a/fon/SoundEditor.h b/fon/SoundEditor.h
index 5c5e8e7..1891b79 100644
--- a/fon/SoundEditor.h
+++ b/fon/SoundEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundAnalysisEditor.h"
@@ -37,7 +36,7 @@ Thing_define (SoundEditor, TimeSoundAnalysisEditor) {
 		override;
 	void v_play (double tmin, double tmax)
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_highlightSelection (double left, double right, double bottom, double top)
 		override;
@@ -50,7 +49,7 @@ void SoundEditor_init (SoundEditor me,
 	Sampled data
 );
 
-SoundEditor SoundEditor_create (
+autoSoundEditor SoundEditor_create (
 	const char32 *title,
 	Sampled data   // either a Sound or a LongSound
 );
diff --git a/fon/SoundRecorder.cpp b/fon/SoundRecorder.cpp
index a700f55..ff78a8d 100644
--- a/fon/SoundRecorder.cpp
+++ b/fon/SoundRecorder.cpp
@@ -1,20 +1,19 @@
 /* SoundRecorder.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 /* Linux code originally by Darryl Purnell, Pretoria */
 /* GTK conversion includes work by Franz Brauße */
@@ -27,7 +26,7 @@
  * this would seem a good candidate for object-oriented programming
  * (one audio manager and several audio drivers).
  * However, the places where sound recorders are similar and where they are different,
- * are hard to predict. For this reason, everything is done with system #ifdefs.
+ * are hard to predict. For this reason, everything is done with platform #ifdefs.
  */
 
 #include <errno.h>
@@ -101,7 +100,7 @@ static void win_fillHeader (SoundRecorder me, int which) {
 	my waveHeader [which]. lpData = which == 0 ? (char *) my buffer : which == 1 ? (char *) my buffertje1: (char *) my buffertje2;
 	my waveHeader [which]. dwBufferLength = which == 0 ? my nmax * my waveFormat. nChannels * 2 : 1000 * my waveFormat. nChannels * 2;
 	my waveHeader [which]. dwLoops = 0;
-	my waveHeader [which]. lpNext = NULL;
+	my waveHeader [which]. lpNext = nullptr;
 	my waveHeader [which]. reserved = 0;
 }
 static void win_waveInCheck (SoundRecorder me) {
@@ -191,7 +190,7 @@ static void stopRecording (SoundRecorder me) {
 			if (my inputUsesPortAudio) {
 				Pa_StopStream (my portaudioStream);
 				Pa_CloseStream (my portaudioStream);
-				my portaudioStream = NULL;
+				my portaudioStream = nullptr;
 			} else {
 				#if defined (_WIN32)
 					/*
@@ -220,12 +219,12 @@ static void stopRecording (SoundRecorder me) {
 	} catch (MelderError) {
 		Melder_flushError (U"Cannot stop recording.");
 	}
-	Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
-	Graphics_setColour (my graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 }
 
-void structSoundRecorder :: v_destroy () {
+void structSoundRecorder :: v_destroy () noexcept {
 	stopRecording (this);   // must occur before freeing my buffer
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);   // must also occur before freeing my buffer
 	#if cocoa
@@ -252,57 +251,56 @@ void structSoundRecorder :: v_destroy () {
 			if (our fd != -1) close (our fd);
 		#endif
 	}
-	forget (our graphics);
 	SoundRecorder_Parent :: v_destroy ();
 }
 
 static void showMaximum (SoundRecorder me, int channel, double maximum) {
 	maximum /= 32768.0;
-	Graphics_setWindow (my graphics,
+	Graphics_setWindow (my graphics.get(),
 		my numberOfChannels == 1 || channel == 1 ? 0.0 : -1.0,
 		my numberOfChannels == 1 || channel == 2 ? 1.0 : 2.0,
 		-0.1, 1.1);
-	Graphics_setGrey (my graphics, 0.9);
-	Graphics_fillRectangle (my graphics, 0.0, 1.0, maximum, 1.0);
-	Graphics_setColour (my graphics, Graphics_GREEN);
+	Graphics_setGrey (my graphics.get(), 0.9);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, maximum, 1.0);
+	Graphics_setColour (my graphics.get(), Graphics_GREEN);
 	if (maximum < 0.75) {
-		Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, maximum);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, maximum);
 	} else {
-		Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, 0.75);
-		Graphics_setColour (my graphics, Graphics_YELLOW);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 0.75);
+		Graphics_setColour (my graphics.get(), Graphics_YELLOW);
 		if (maximum < 0.92) {
-			Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.75, maximum);
+			Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.75, maximum);
 		} else {
-			Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.75, 0.92);
-			Graphics_setColour (my graphics, Graphics_RED);
-			Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.92, maximum);
+			Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.75, 0.92);
+			Graphics_setColour (my graphics.get(), Graphics_RED);
+			Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.92, maximum);
 		}
 	}
 }
 
 static void showMeter (SoundRecorder me, short *buffer, long nsamp) {
-	Melder_assert (my graphics != NULL);
+	Melder_assert (my graphics);
 	if (nsamp < 1) {
-		Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 		#if defined (macintosh)
-			Graphics_setColour (my graphics, Graphics_WHITE);
-			Graphics_fillRectangle (my graphics, 0.2, 0.8, 0.3, 0.7);
+			Graphics_setColour (my graphics.get(), Graphics_WHITE);
+			Graphics_fillRectangle (my graphics.get(), 0.2, 0.8, 0.3, 0.7);
 		#endif
-		Graphics_setTextAlignment (my graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_setColour (my graphics, Graphics_BLACK);
-		Graphics_text (my graphics, 0.5, 0.5, U"Not recording.");
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_setColour (my graphics.get(), Graphics_BLACK);
+		Graphics_text (my graphics.get(), 0.5, 0.5, U"Not recording.");
 		return;
 	}
 	if (my p_meter_which == kSoundRecorder_meter_INTENSITY) {
-		short leftMaximum = 0, rightMaximum = 0;
+		int leftMaximum = 0, rightMaximum = 0;
 		if (my numberOfChannels == 1) {
 			for (long i = 0; i < nsamp; i ++) {
-				short value = buffer [i];
+				int value = buffer [i];
 				if (abs (value) > leftMaximum) leftMaximum = abs (value);
 			}
 		} else {
 			for (long i = 0; i < nsamp; i ++) {
-				long left = buffer [i+i], right = buffer [i+i+1];
+				int left = buffer [i+i], right = buffer [i+i+1];
 				if (abs (left) > leftMaximum) leftMaximum = abs (left);
 				if (abs (right) > rightMaximum) rightMaximum = abs (right);
 			}
@@ -331,22 +329,22 @@ static void showMeter (SoundRecorder me, short *buffer, long nsamp) {
 				sound -> z [ichan] [isamp] = * (p ++) / 32768.0;
 			}
 		}
-		Sound_multiplyByWindow (sound.peek(), kSound_windowShape_KAISER_2);
-		double intensity = Sound_getIntensity_dB (sound.peek());
-		autoSpectrum spectrum = Sound_to_Spectrum (sound.peek(), true);
-		double centreOfGravity = Spectrum_getCentreOfGravity (spectrum.peek(), 1.0);
+		Sound_multiplyByWindow (sound.get(), kSound_windowShape_KAISER_2);
+		double intensity = Sound_getIntensity_dB (sound.get());
+		autoSpectrum spectrum = Sound_to_Spectrum (sound.get(), true);
+		double centreOfGravity = Spectrum_getCentreOfGravity (spectrum.get(), 1.0);
 		trace (nsamp, U" samples, intensity ", intensity, U" dB, centre of gravity ", centreOfGravity, U" Hz");
-		Graphics_setWindow (my graphics,
+		Graphics_setWindow (my graphics.get(),
 			my p_meter_centreOfGravity_minimum, my p_meter_centreOfGravity_maximum,
 			my p_meter_intensity_minimum, my p_meter_intensity_maximum);
-		Graphics_setColour (my graphics, Graphics_WHITE);
-		Graphics_fillRectangle (my graphics,
+		Graphics_setColour (my graphics.get(), Graphics_WHITE);
+		Graphics_fillRectangle (my graphics.get(),
 			my p_meter_centreOfGravity_minimum, my p_meter_centreOfGravity_maximum,
 			my p_meter_intensity_minimum, my p_meter_intensity_maximum);
-		Graphics_setColour (my graphics, Graphics_BLACK);
-		Graphics_fillCircle_mm (my graphics, centreOfGravity, intensity, 3.0);
+		Graphics_setColour (my graphics.get(), Graphics_BLACK);
+		Graphics_fillCircle_mm (my graphics.get(), centreOfGravity, intensity, 3.0);
 	}
-	Graphics_flushWs (my graphics);
+	Graphics_flushWs (my graphics.get());
 }
 
 static bool tooManySamplesInBufferToReturnToGui (SoundRecorder me) {
@@ -360,14 +358,18 @@ static long getMyNsamp (SoundRecorder me) {
 }
 
 #if cocoa
-static void workProc (CFRunLoopTimerRef timer, void *void_me) {
-	(void) timer;
+	#define WORKPROC_RETURN  void
+	#define WORKPROC_ARGS  CFRunLoopTimerRef /*timer*/, void *void_SoundRecorder
 #elif gtk
-static gboolean workProc (void *void_me) {
+	#define WORKPROC_RETURN  gboolean
+	#define WORKPROC_ARGS  void *void_SoundRecorder
 #else
-static bool workProc (void *void_me) {
+	#define WORKPROC_RETURN  bool
+	#define WORKPROC_ARGS  void *void_SoundRecorder
 #endif
-	iam (SoundRecorder);
+
+static WORKPROC_RETURN workProc (WORKPROC_ARGS) {
+	SoundRecorder me = static_cast <SoundRecorder> (void_SoundRecorder);
 	try {
 		short buffertje [step*2];
 		int stepje = 0;
@@ -476,7 +478,7 @@ static bool workProc (void *void_me) {
 				showMeter (me, my buffer + firstSample * my numberOfChannels, lastSample - firstSample);
 				GuiScale_setValue (my progressScale, 1000.0 * ((double) lastSample / (double) my nmax));
 			} else {
-				showMeter (me, NULL, 0);
+				showMeter (me, nullptr, 0);
 			}
 		}
 	} catch (MelderError) {
@@ -492,11 +494,11 @@ static bool workProc (void *void_me) {
 }
 
 static int portaudioStreamCallback (
-    const void *input, void *output,
+    const void *input, void * /* output */,
     unsigned long frameCount,
-    const PaStreamCallbackTimeInfo* timeInfo,
-    PaStreamCallbackFlags statusFlags,
-    void *void_me)
+    const PaStreamCallbackTimeInfo* /* timeInfo */,
+    PaStreamCallbackFlags /* statusFlags */,
+    void *void_SoundRecorder)
 {
 	/*
 	 * This procedure may be called at interrupt time.
@@ -505,10 +507,7 @@ static int portaudioStreamCallback (
 	 * The only thing it changes is my nsamp;
 	 * the workProc will therefore have to take some care in accessing my nsamp (see there).
 	 */
-	iam (SoundRecorder);
-	(void) output;
-	(void) timeInfo;
-	(void) statusFlags;
+	SoundRecorder me = static_cast <SoundRecorder> (void_SoundRecorder);
 	if (Melder_debug == 20)
 		Melder_casual (U"The PortAudio stream callback receives ", frameCount, U" frames.");
 	Melder_assert (my nsamp <= my nmax);
@@ -527,9 +526,7 @@ static int portaudioStreamCallback (
 	return paContinue;
 }
 
-static void gui_button_cb_record (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_record (SoundRecorder me, GuiButtonEvent /* event */) {
 	try {
 		if (my recording) return;
 		my nsamp = 0;
@@ -553,7 +550,7 @@ static void gui_button_cb_record (I, GuiButtonEvent event) {
 				#endif
 				if (Melder_debug == 20)
 					Melder_casual (U"Before Pa_OpenStream");
-				PaError err = Pa_OpenStream (& my portaudioStream, & streamParameters, NULL,
+				PaError err = Pa_OpenStream (& my portaudioStream, & streamParameters, nullptr,
 					theControlPanel. sampleRate, 0, paNoFlag, portaudioStreamCallback, (void *) me);
 				if (Melder_debug == 20)
 					Melder_casual (U"Pa_OpenStream returns ", (int) err);
@@ -576,29 +573,25 @@ static void gui_button_cb_record (I, GuiButtonEvent event) {
 				#endif
 			}
 		}
-		Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
-		Graphics_setColour (my graphics, Graphics_WHITE);
-		Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (my graphics.get(), Graphics_WHITE);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 	} catch (MelderError) {
-		Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
-		Graphics_setColour (my graphics, Graphics_WHITE);
-		Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (my graphics.get(), Graphics_WHITE);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 		my recording = false;
 		Melder_flushError (U"Cannot record.");
 	}
 }
 
-static void gui_button_cb_stop (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_stop (SoundRecorder me, GuiButtonEvent /* event */) {
 	stopRecording (me);
 }
 
-static void gui_button_cb_play (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_play (SoundRecorder me, GuiButtonEvent /* event */) {
 	if (my recording || my nsamp == 0) return;
-	MelderAudio_play16 (my buffer, theControlPanel. sampleRate, my fakeMono ? my nsamp / 2 : my nsamp, my fakeMono ? 2 : my numberOfChannels, NULL, NULL);
+	MelderAudio_play16 (my buffer, theControlPanel. sampleRate, my fakeMono ? my nsamp / 2 : my nsamp, my fakeMono ? 2 : my numberOfChannels, nullptr, nullptr);
 }
 
 static void publish (SoundRecorder me) {
@@ -608,7 +601,7 @@ static void publish (SoundRecorder me) {
 	double fsamp = theControlPanel. sampleRate;
 	if (fsamp <= 0.0) fsamp = 44100.0;   // safe
 	try {
-		sound.reset (Sound_createSimple (my numberOfChannels, (double) nsamp / fsamp, fsamp));
+		sound = Sound_createSimple (my numberOfChannels, (double) nsamp / fsamp, fsamp);
 	} catch (MelderError) {
 		Melder_flushError (U"You can still save to file.");
 		return;
@@ -627,28 +620,22 @@ static void publish (SoundRecorder me) {
 	}
 	if (my soundName) {
 		autostring32 name = GuiText_getString (my soundName);
-		Thing_setName (sound.peek(), name.peek());
+		Thing_setName (sound.get(), name.peek());
 	}
-	Editor_broadcastPublication (me, sound.transfer());
+	Editor_broadcastPublication (me, sound.move());
 }
 
-static void gui_button_cb_cancel (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_cancel (SoundRecorder me, GuiButtonEvent /* event */) {
 	stopRecording (me);
 	forget (me);
 }
 
-static void gui_button_cb_apply (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_apply (SoundRecorder me, GuiButtonEvent /* event */) {
 	stopRecording (me);
 	publish (me);
 }
 
-static void gui_button_cb_ok (I, GuiButtonEvent event) {
-	(void) event;
-	iam (SoundRecorder);
+static void gui_button_cb_ok (SoundRecorder me, GuiButtonEvent /* event */) {
 	stopRecording (me);
 	publish (me);
 	forget (me);
@@ -691,7 +678,7 @@ static void initialize (SoundRecorder me) {
 						Melder_throw (U"Cannot open audio device.\n"
 							U"Please switch on PortAudio in the Sound Recording Preferences.");
 				}
-				ioctl (my fd, SNDCTL_DSP_RESET, NULL);
+				ioctl (my fd, SNDCTL_DSP_RESET, nullptr);
 				ioctl (my fd, SNDCTL_DSP_SPEED, & sampleRate);
 				ioctl (my fd, SNDCTL_DSP_SAMPLESIZE, & sampleSize);
 				ioctl (my fd, SNDCTL_DSP_CHANNELS, (val = channels, & val));
@@ -719,8 +706,7 @@ static void initialize (SoundRecorder me) {
 	}
 }
 
-static void gui_radiobutton_cb_input (I, GuiRadioButtonEvent event) {
-	iam (SoundRecorder);
+static void gui_radiobutton_cb_input (SoundRecorder me, GuiRadioButtonEvent event) {
 	Melder_casual (U"SoundRecorder:"
 		U" setting the input source from ", theControlPanel. inputSource,
 		U" to ", event -> position, U".");
@@ -752,8 +738,7 @@ static void gui_radiobutton_cb_input (I, GuiRadioButtonEvent event) {
 	}
 }
 
-static void gui_radiobutton_cb_fsamp (I, GuiRadioButtonEvent event) {
-	iam (SoundRecorder);
+static void gui_radiobutton_cb_fsamp (SoundRecorder me, GuiRadioButtonEvent event) {
 	if (my recording) return;
 	try {
 		double fsamp = NUMundefined;
@@ -799,13 +784,12 @@ static void gui_radiobutton_cb_fsamp (I, GuiRadioButtonEvent event) {
 	}
 }
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (SoundRecorder);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
-	Graphics_setWsViewport (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_setWsWindow (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_setViewport (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_updateWs (my graphics);
+static void gui_drawingarea_cb_resize (SoundRecorder me, GuiDrawingArea_ResizeEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
+	Graphics_setWsViewport (my graphics.get(), 0, event -> width, 0, event -> height);
+	Graphics_setWsWindow (my graphics.get(), 0, event -> width, 0, event -> height);
+	Graphics_setViewport (my graphics.get(), 0, event -> width, 0, event -> height);
+	Graphics_updateWs (my graphics.get());
 }
 
 void structSoundRecorder :: v_createChildren ()
@@ -818,10 +802,10 @@ void structSoundRecorder :: v_createChildren ()
 	GuiRadioGroup_begin ();
 	y += Gui_RADIOBUTTON_HEIGHT + Gui_RADIOBUTTON_SPACING;
 	monoButton = GuiRadioButton_createShown (d_windowForm, 20, 170, y, y + Gui_RADIOBUTTON_HEIGHT,
-		U"Mono", NULL, NULL, 0);
+		U"Mono", nullptr, nullptr, 0);
 	y += Gui_RADIOBUTTON_HEIGHT + Gui_RADIOBUTTON_SPACING;
 	stereoButton = GuiRadioButton_createShown (d_windowForm, 20, 170, y, y + Gui_RADIOBUTTON_HEIGHT,
-		U"Stereo", NULL, NULL, 0);
+		U"Stereo", nullptr, nullptr, 0);
 	GuiRadioGroup_end ();
 
 	/* Input source */
@@ -850,7 +834,7 @@ void structSoundRecorder :: v_createChildren ()
 	GuiLabel_createShown (d_windowForm, 170, -170, y, y + Gui_LABEL_HEIGHT, U"Meter", GuiLabel_CENTRE);
 	y += Gui_LABEL_HEIGHT;
 	meter = GuiDrawingArea_createShown (d_windowForm, 170, -170, y, -150,
-		NULL, NULL, NULL, gui_drawingarea_cb_resize, this, GuiDrawingArea_BORDER);
+		nullptr, nullptr, nullptr, gui_drawingarea_cb_resize, this, GuiDrawingArea_BORDER);
 
 	/* Sampling frequency */
 
@@ -928,9 +912,8 @@ static void writeAudioFile (SoundRecorder me, MelderFile file, int audioFileType
 	}
 }
 
-static void menu_cb_writeWav (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
-	EDITOR_FORM_WRITE (U"Save as WAV file", 0)
+static void menu_cb_writeWav (SoundRecorder me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as WAV file", nullptr)
 		char32 *name = GuiText_getString (my soundName);
 		Melder_sprint (defaultName,300, name, U".wav");
 		Melder_free (name);
@@ -939,9 +922,8 @@ static void menu_cb_writeWav (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_writeAifc (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
-	EDITOR_FORM_WRITE (U"Save as AIFC file", 0)
+static void menu_cb_writeAifc (SoundRecorder me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as AIFC file", nullptr)
 		char32 *name = GuiText_getString (my soundName);
 		Melder_sprint (defaultName,300, name, U".aifc");
 		Melder_free (name);
@@ -950,9 +932,8 @@ static void menu_cb_writeAifc (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_writeNextSun (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
-	EDITOR_FORM_WRITE (U"Save as NeXT/Sun file", 0)
+static void menu_cb_writeNextSun (SoundRecorder me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as NeXT/Sun file", nullptr)
 		char32 *name = GuiText_getString (my soundName);
 		Melder_sprint (defaultName,300, name, U".au");
 		Melder_free (name);
@@ -961,9 +942,8 @@ static void menu_cb_writeNextSun (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_writeNist (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
-	EDITOR_FORM_WRITE (U"Save as NIST file", 0)
+static void menu_cb_writeNist (SoundRecorder me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as NIST file", nullptr)
 		char32 *name = GuiText_getString (my soundName);
 		Melder_sprint (defaultName,300, name, U".nist");
 		Melder_free (name);
@@ -979,18 +959,16 @@ static void updateMenus (SoundRecorder me) {
 		my p_meter_which == kSoundRecorder_meter_CENTRE_OF_GRAVITY_VERSUS_INTENSITY);
 }
 
-static void menu_cb_intensity (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
+static void menu_cb_intensity (SoundRecorder me, EDITOR_ARGS_DIRECT) {
 	my pref_meter_which () = my p_meter_which = kSoundRecorder_meter_INTENSITY;
 	updateMenus (me);
 }
-static void menu_cb_centreOfGravityVersusIntensity (EDITOR_ARGS) {
-	EDITOR_IAM (SoundRecorder);
+static void menu_cb_centreOfGravityVersusIntensity (SoundRecorder me, EDITOR_ARGS_DIRECT) {
 	my pref_meter_which () = my p_meter_which = kSoundRecorder_meter_CENTRE_OF_GRAVITY_VERSUS_INTENSITY;
 	updateMenus (me);
 }
 
-static void menu_cb_SoundRecorder_help (EDITOR_ARGS) { EDITOR_IAM (SoundRecorder); Melder_help (U"SoundRecorder"); }
+static void menu_cb_SoundRecorder_help (SoundRecorder, EDITOR_ARGS_DIRECT) { Melder_help (U"SoundRecorder"); }
 
 void structSoundRecorder :: v_createMenus () {
 	SoundRecorder_Parent :: v_createMenus ();
@@ -1011,10 +989,17 @@ void structSoundRecorder :: v_createHelpMenuItems (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"SoundRecorder help", '?', menu_cb_SoundRecorder_help);
 }
 
-SoundRecorder SoundRecorder_create (int numberOfChannels) {
+autoSoundRecorder SoundRecorder_create (int numberOfChannels) {
 	try {
 		autoSoundRecorder me = Thing_new (SoundRecorder);
-		my inputUsesPortAudio = MelderAudio_getInputUsesPortAudio ();
+		my inputUsesPortAudio =
+			#if defined (_WIN32)
+				MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_MME_VIA_PORTAUDIO;
+			#elif defined (macintosh)
+				MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_COREAUDIO_VIA_PORTAUDIO;
+			#else
+				MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_ALSA_VIA_PORTAUDIO;
+			#endif
 
 		if (my inputUsesPortAudio) {
 		} else {
@@ -1062,7 +1047,7 @@ SoundRecorder SoundRecorder_create (int numberOfChannels) {
 		 */
 		if (preferences.bufferSizeInMegabytes < 1) preferences.bufferSizeInMegabytes = 1;   // validate preferences
 		if (preferences.bufferSizeInMegabytes > 1000) preferences.bufferSizeInMegabytes = 1000;
-		if (my buffer == NULL) {
+		if (! my buffer) {
 			long nmax_bytes_pref = preferences.bufferSizeInMegabytes * 1000000;
 			long nmax_bytes = my inputUsesPortAudio ? nmax_bytes_pref :
 				#if defined (_WIN32)
@@ -1085,7 +1070,7 @@ SoundRecorder SoundRecorder_create (int numberOfChannels) {
 				}
 			}
 		}
-		Melder_assert (my buffer != NULL);
+		Melder_assert (my buffer);
 
 		/*
 		 * Count the number of input devices and sources.
@@ -1174,32 +1159,32 @@ SoundRecorder SoundRecorder_create (int numberOfChannels) {
 		 * Some systems take initial values from the system control panel
 		 * (automatically in the workProc), other systems from theControlPanel.
 		 */
-		initialize (me.peek());
+		initialize (me.get());
 
-		Editor_init (me.peek(), 100, 100, 600, 500, U"SoundRecorder", NULL);
+		Editor_init (me.get(), 100, 100, 600, 500, U"SoundRecorder", nullptr);
 		my graphics = Graphics_create_xmdrawingarea (my meter);
 		Melder_assert (my graphics);
-		Graphics_setWindow (my graphics, 0.0, 1.0, 0.0, 1.0);
-		Graphics_setColour (my graphics, Graphics_WHITE);
-		Graphics_fillRectangle (my graphics, 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (my graphics.get(), Graphics_WHITE);
+		Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 
-struct structGuiDrawingAreaResizeEvent event = { my meter, 0 };
+struct structGuiDrawingArea_ResizeEvent event { my meter, 0 };
 event. width  = GuiControl_getWidth  (my meter);
 event. height = GuiControl_getHeight (my meter);
-gui_drawingarea_cb_resize (me.peek(), & event);
+gui_drawingarea_cb_resize (me.get(), & event);
 
 		#if cocoa
-			CFRunLoopTimerContext context = { 0, me.peek(), NULL, NULL, NULL };
-			my d_cocoaTimer = CFRunLoopTimerCreate (NULL, CFAbsoluteTimeGetCurrent () + 0.02,
+			CFRunLoopTimerContext context = { 0, me.get(), nullptr, nullptr, nullptr };
+			my d_cocoaTimer = CFRunLoopTimerCreate (nullptr, CFAbsoluteTimeGetCurrent () + 0.02,
 				0.02, 0, 0, workProc, & context);
 			CFRunLoopAddTimer (CFRunLoopGetCurrent (), my d_cocoaTimer, kCFRunLoopCommonModes);
 		#elif gtk
-			g_idle_add (workProc, me.peek());
+			g_idle_add (workProc, me.get());
 		#elif motif
-			my workProcId = GuiAddWorkProc (workProc, me.peek());
+			my workProcId = GuiAddWorkProc (workProc, me.get());
 		#endif
-		updateMenus (me.peek());
-		return me.transfer();
+		updateMenus (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SoundRecorder not created.");
 	}
diff --git a/fon/SoundRecorder.h b/fon/SoundRecorder.h
index f082146..431282e 100644
--- a/fon/SoundRecorder.h
+++ b/fon/SoundRecorder.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* An editor-like object that allows the user to record sounds. */
@@ -88,7 +87,7 @@ Thing_define (SoundRecorder, Editor) {
 	GuiText soundName;
 	GuiButton cancelButton, applyButton, okButton;
 	GuiMenuItem d_meterIntensityButton, d_meterCentreOfGravityVersusIntensityButton;
-	Graphics graphics;
+	autoGraphics graphics;
 	bool inputUsesPortAudio;
 	const PaDeviceInfo *deviceInfos [1+SoundRecorder_IDEVICE_MAX];
 	PaDeviceIndex deviceIndices [1+SoundRecorder_IDEVICE_MAX];
@@ -114,7 +113,7 @@ Thing_define (SoundRecorder, Editor) {
 		int fd;
 	#endif
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	bool v_editable ()
 		override { return false; }
@@ -130,7 +129,7 @@ Thing_define (SoundRecorder, Editor) {
 	#include "SoundRecorder_prefs.h"
 };
 
-SoundRecorder SoundRecorder_create (int numberOfChannels);
+autoSoundRecorder SoundRecorder_create (int numberOfChannels);
 /*
 	Function:
 		create a SoundRecorder, which is an interactive window
diff --git a/fon/SoundRecorder_enums.h b/fon/SoundRecorder_enums.h
index b49b201..d6d0768 100644
--- a/fon/SoundRecorder_enums.h
+++ b/fon/SoundRecorder_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kSoundRecorder_meter, 1)
diff --git a/fon/SoundRecorder_prefs.h b/fon/SoundRecorder_prefs.h
index 41bc9ed..d02b2be 100644
--- a/fon/SoundRecorder_prefs.h
+++ b/fon/SoundRecorder_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (SoundRecorder)
diff --git a/fon/Sound_PointProcess.cpp b/fon/Sound_PointProcess.cpp
index ee0305d..0afe589 100644
--- a/fon/Sound_PointProcess.cpp
+++ b/fon/Sound_PointProcess.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2010-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -24,7 +23,7 @@
 
 #include "Sound_PointProcess.h"
 
-Sound Sound_PointProcess_to_SoundEnsemble_correlate (Sound me, PointProcess thee, double fromLag, double toLag) {
+autoSound Sound_PointProcess_to_SoundEnsemble_correlate (Sound me, PointProcess thee, double fromLag, double toLag) {
 	try {
 		if (my ny > 1)
 			Melder_throw (U"Sound has to be mono.");
@@ -48,7 +47,7 @@ Sound Sound_PointProcess_to_SoundEnsemble_correlate (Sound me, PointProcess thee
 				his z [ipoint] [isample] = jsample < 1 || jsample > my nx ? 0.0 : my z [1] [jsample];
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": Sound ensemble not created.");
 	}
diff --git a/fon/Sound_PointProcess.h b/fon/Sound_PointProcess.h
index f8b4160..eac97fb 100644
--- a/fon/Sound_PointProcess.h
+++ b/fon/Sound_PointProcess.h
@@ -1,25 +1,24 @@
 /* Sound_PointProcess.h
  *
- * Copyright (C) 2010-2011 Paul Boersma
+ * Copyright (C) 2010-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "PointProcess.h"
 
-Sound Sound_PointProcess_to_SoundEnsemble_correlate (Sound me, PointProcess thee, double tmin, double tmax);
+autoSound Sound_PointProcess_to_SoundEnsemble_correlate (Sound me, PointProcess thee, double tmin, double tmax);
 
 /* End of file Sound_PointProcess.h */
diff --git a/fon/Sound_and_Spectrogram.cpp b/fon/Sound_and_Spectrogram.cpp
index 5e29eff..574e54a 100644
--- a/fon/Sound_and_Spectrogram.cpp
+++ b/fon/Sound_and_Spectrogram.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -41,7 +40,7 @@
 #include "enums_getValue.h"
 #include "Sound_and_Spectrogram_enums.h"
 
-Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, double fmax,
+autoSpectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, double fmax,
 	double minimumTimeStep1, double minimumFreqStep1, enum kSound_to_Spectrogram_windowShape windowType,
 	double maximumTimeOversampling, double maximumFreqOversampling)
 {
@@ -78,7 +77,7 @@ Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, doubl
 		 */
 		if (fmax <= 0.0 || fmax > nyquist) fmax = nyquist;
 		long numberOfFreqs = (long) floor (fmax / freqStep);
-		if (numberOfFreqs < 1) return NULL;
+		if (numberOfFreqs < 1) return autoSpectrogram ();
 		long nsampFFT = 1;
 		while (nsampFFT < nsamp_window || nsampFFT < 2 * numberOfFreqs * (nyquist / fmax))
 			nsampFFT *= 2;
@@ -92,7 +91,7 @@ Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, doubl
 		double binWidth_hertz = 1.0 / (my dx * nsampFFT);
 		freqStep = binWidth_samples * binWidth_hertz;
 		numberOfFreqs = (long) floor (fmax / freqStep);
-		if (numberOfFreqs < 1) return NULL;
+		if (numberOfFreqs < 1) return autoSpectrogram ();
 
 		autoSpectrogram thee = Spectrogram_create (my xmin, my xmax, numberOfTimes, timeStep, t1,
 				0.0, fmax, numberOfFreqs, freqStep, 0.5 * (freqStep - binWidth_hertz));
@@ -135,7 +134,7 @@ Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, doubl
 		double oneByBinWidth = 1.0 / windowssq / binWidth_samples;
 
 		for (long iframe = 1; iframe <= numberOfTimes; iframe ++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
+			double t = Sampled_indexToX (thee.get(), iframe);
 			long leftSample = Sampled_xToLowIndex (me, t), rightSample = leftSample + 1;
 			long startSample = rightSample - halfnsamp_window;
 			long endSample = leftSample + halfnsamp_window;
@@ -176,20 +175,20 @@ Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, doubl
 				thy z [iband] [iframe] = power * oneByBinWidth;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": spectrogram analysis not performed.");
 	}
 }
 
-Sound Spectrogram_to_Sound (Spectrogram me, double fsamp) {
+autoSound Spectrogram_to_Sound (Spectrogram me, double fsamp) {
 	try {
 		double dt = 1 / fsamp;
 		long n = (long) floor ((my xmax - my xmin) / dt);
-		if (n < 0) return NULL;
+		if (n < 0) return autoSound ();
 		autoSound thee = Sound_create (1, my xmin, my xmax, n, dt, 0.5 * dt);
 		for (long i = 1; i <= n; i ++) {
-			double t = Sampled_indexToX (thee.peek(), i);
+			double t = Sampled_indexToX (thee.get(), i);
 			double rframe = Sampled_xToIndex (me, t), phase, value = 0.0;
 			long leftFrame, rightFrame;
 			if (rframe < 1 || rframe >= my nx) continue;
@@ -201,7 +200,7 @@ Sound Spectrogram_to_Sound (Spectrogram me, double fsamp) {
 			}
 			thy z [1] [i] = value;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
diff --git a/fon/Sound_and_Spectrogram.h b/fon/Sound_and_Spectrogram.h
index 5b23991..f076e92 100644
--- a/fon/Sound_and_Spectrogram.h
+++ b/fon/Sound_and_Spectrogram.h
@@ -2,21 +2,20 @@
 #define _Sound_and_Spectrogram_h_
 /* Sound_and_Spectrogram.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
@@ -24,11 +23,11 @@
 
 #include "Sound_and_Spectrogram_enums.h"
 
-Spectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, double fmax,
+autoSpectrogram Sound_to_Spectrogram (Sound me, double effectiveAnalysisWidth, double fmax,
 	double minimumTimeStep1, double minimumFreqStep1, enum kSound_to_Spectrogram_windowShape windowShape,
 	double maximumTimeOversampling, double maximumFreqOversampling);
 
-Sound Spectrogram_to_Sound (Spectrogram me, double fsamp);
+autoSound Spectrogram_to_Sound (Spectrogram me, double fsamp);
 
 /* End of Sound_and_Spectrogram.h */
 #endif
diff --git a/fon/Sound_and_Spectrogram_enums.h b/fon/Sound_and_Spectrogram_enums.h
index 133176c..77e84db 100644
--- a/fon/Sound_and_Spectrogram_enums.h
+++ b/fon/Sound_and_Spectrogram_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kSound_to_Spectrogram_method, 1)
diff --git a/fon/Sound_and_Spectrum.cpp b/fon/Sound_and_Spectrum.cpp
index 24167f3..8dcc20f 100644
--- a/fon/Sound_and_Spectrum.cpp
+++ b/fon/Sound_and_Spectrum.cpp
@@ -1,20 +1,19 @@
 /* Sound_and_Spectrum.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,7 +33,7 @@
 #include "Sound_and_Spectrum.h"
 #include "NUM2.h"
 
-Spectrum Sound_to_Spectrum (Sound me, int fast) {
+autoSpectrum Sound_to_Spectrum (Sound me, int fast) {
 	try {
 		long numberOfSamples = my nx;
 		if (fast) {
@@ -57,8 +56,8 @@ Spectrum Sound_to_Spectrum (Sound me, int fast) {
 		re [1] = data [1] * scaling;
 		im [1] = 0.0;
 		for (long i = 2; i < numberOfFrequencies; i ++) {
-			re [i] = data [i + i - 2] * scaling;
-			im [i] = data [i + i - 1] * scaling;
+			re [i] = data [i + i - 2] * scaling;   // data [2], data [4], ...
+			im [i] = data [i + i - 1] * scaling;   // data [3], data [5], ...
 		}
 		if ((numberOfSamples & 1) != 0) {
 			if (numberOfSamples > 1) {
@@ -69,13 +68,13 @@ Spectrum Sound_to_Spectrum (Sound me, int fast) {
 			re [numberOfFrequencies] = data [numberOfSamples] * scaling;
 			im [numberOfFrequencies] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrum.");
 	}
 }
 
-Sound Spectrum_to_Sound (Spectrum me) {
+autoSound Spectrum_to_Sound (Spectrum me) {
 	try {
 		double *re = my z [1], *im = my z [2];
 		double lastFrequency = my x1 + (my nx - 1) * my dx;
@@ -98,13 +97,13 @@ Sound Spectrum_to_Sound (Spectrum me) {
 			amp [2] = re [my nx] * scaling;
 		}
 		NUMrealft (amp, numberOfSamples, -1);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Sound.");
 	}
 }
 
-Spectrum Spectrum_lpcSmoothing (Spectrum me, int numberOfPeaks, double preemphasisFrequency) {
+autoSpectrum Spectrum_lpcSmoothing (Spectrum me, int numberOfPeaks, double preemphasisFrequency) {
 	try {
 		double gain, a [100];
 		long numberOfCoefficients = 2 * numberOfPeaks;
@@ -136,76 +135,76 @@ Spectrum Spectrum_lpcSmoothing (Spectrum me, int numberOfPeaks, double preemphas
 		}
 		re [halfnfft + 1] = scale / data [2] / (1 + thy dx * halfnfft / preemphasisFrequency);
 		im [halfnfft + 1] = 0.0;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not smoothed.");
 	}
 }
 
-Sound Sound_filter_formula (Sound me, const char32 *formula, Interpreter interpreter) {
+autoSound Sound_filter_formula (Sound me, const char32 *formula, Interpreter interpreter) {
 	try {
 		autoSound thee = Data_copy (me);
 		if (my ny == 1) {
-			autoSpectrum spec = Sound_to_Spectrum (me, TRUE);
-			Matrix_formula ((Matrix) spec.peek(), formula, interpreter, NULL);
-			autoSound him = Spectrum_to_Sound (spec.peek());
+			autoSpectrum spec = Sound_to_Spectrum (me, true);
+			Matrix_formula (spec.get(), formula, interpreter, nullptr);
+			autoSound him = Spectrum_to_Sound (spec.get());
 			NUMvector_copyElements (his z [1], thy z [1], 1, thy nx);
 		} else {
 			for (long ichan = 1; ichan <= my ny; ichan ++) {
 				autoSound channel = Sound_extractChannel (me, ichan);
-				autoSpectrum spec = Sound_to_Spectrum (channel.peek(), TRUE);
-				Matrix_formula ((Matrix) spec.peek(), formula, interpreter, NULL);
-				autoSound him = Spectrum_to_Sound (spec.peek());
+				autoSpectrum spec = Sound_to_Spectrum (channel.get(), true);
+				Matrix_formula (spec.get(), formula, interpreter, nullptr);
+				autoSound him = Spectrum_to_Sound (spec.get());
 				NUMvector_copyElements (his z [1], thy z [ichan], 1, thy nx);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (with formula).");
 	}
 }
 
-Sound Sound_filter_passHannBand (Sound me, double fmin, double fmax, double smooth) {
+autoSound Sound_filter_passHannBand (Sound me, double fmin, double fmax, double smooth) {
 	try {
 		autoSound thee = Data_copy (me);
 		if (my ny == 1) {
-			autoSpectrum spec = Sound_to_Spectrum (me, TRUE);
-			Spectrum_passHannBand (spec.peek(), fmin, fmax, smooth);
-			autoSound him = Spectrum_to_Sound (spec.peek());
+			autoSpectrum spec = Sound_to_Spectrum (me, true);
+			Spectrum_passHannBand (spec.get(), fmin, fmax, smooth);
+			autoSound him = Spectrum_to_Sound (spec.get());
 			NUMvector_copyElements (his z [1], thy z [1], 1, thy nx);
 		} else {
 			for (long ichan = 1; ichan <= my ny; ichan ++) {
 				autoSound channel = Sound_extractChannel (me, ichan);
-				autoSpectrum spec = Sound_to_Spectrum (channel.peek(), TRUE);
-				Spectrum_passHannBand (spec.peek(), fmin, fmax, smooth);
-				autoSound him = Spectrum_to_Sound (spec.peek());
+				autoSpectrum spec = Sound_to_Spectrum (channel.get(), true);
+				Spectrum_passHannBand (spec.get(), fmin, fmax, smooth);
+				autoSound him = Spectrum_to_Sound (spec.get());
 				NUMvector_copyElements (his z [1], thy z [ichan], 1, thy nx);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (pass Hann band).");
 	}
 }
 
-Sound Sound_filter_stopHannBand (Sound me, double fmin, double fmax, double smooth) {
+autoSound Sound_filter_stopHannBand (Sound me, double fmin, double fmax, double smooth) {
 	try {
 		autoSound thee = Data_copy (me);
 		if (my ny == 1) {
-			autoSpectrum spec = Sound_to_Spectrum (me, TRUE);
-			Spectrum_stopHannBand (spec.peek(), fmin, fmax, smooth);
-			autoSound him = Spectrum_to_Sound (spec.peek());
+			autoSpectrum spec = Sound_to_Spectrum (me, true);
+			Spectrum_stopHannBand (spec.get(), fmin, fmax, smooth);
+			autoSound him = Spectrum_to_Sound (spec.get());
 			NUMvector_copyElements (his z [1], thy z [1], 1, thy nx);
 		} else {
 			for (long ichan = 1; ichan <= my ny; ichan ++) {
 				autoSound channel = Sound_extractChannel (me, ichan);
-				autoSpectrum spec = Sound_to_Spectrum (channel.peek(), TRUE);
-				Spectrum_stopHannBand (spec.peek(), fmin, fmax, smooth);
-				autoSound him = Spectrum_to_Sound (spec.peek());
+				autoSpectrum spec = Sound_to_Spectrum (channel.get(), true);
+				Spectrum_stopHannBand (spec.get(), fmin, fmax, smooth);
+				autoSound him = Spectrum_to_Sound (spec.get());
 				NUMvector_copyElements (his z [1], thy z [ichan], 1, thy nx);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not filtered (stop Hann band).");
 	}
diff --git a/fon/Sound_and_Spectrum.h b/fon/Sound_and_Spectrum.h
index 24c966e..80088e2 100644
--- a/fon/Sound_and_Spectrum.h
+++ b/fon/Sound_and_Spectrum.h
@@ -2,34 +2,33 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Spectrum.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
-Spectrum Sound_to_Spectrum_at (Sound me, double tim, double windowDuration, int windowType);
+autoSpectrum Sound_to_Spectrum_at (Sound me, double tim, double windowDuration, int windowType);
 
-Spectrum Sound_to_Spectrum (Sound me, int fast);
-Sound Spectrum_to_Sound (Spectrum me);
+autoSpectrum Sound_to_Spectrum (Sound me, int fast);
+autoSound Spectrum_to_Sound (Spectrum me);
 
-Spectrum Spectrum_lpcSmoothing (Spectrum me, int numberOfPeaks, double preemphasisFrequency);
+autoSpectrum Spectrum_lpcSmoothing (Spectrum me, int numberOfPeaks, double preemphasisFrequency);
 
-Sound Sound_filter_passHannBand (Sound me, double fmin, double fmax, double smooth);
-Sound Sound_filter_stopHannBand (Sound me, double fmin, double fmax, double smooth);
-Sound Sound_filter_formula (Sound me, const char32 *formula, Interpreter interpreter);
+autoSound Sound_filter_passHannBand (Sound me, double fmin, double fmax, double smooth);
+autoSound Sound_filter_stopHannBand (Sound me, double fmin, double fmax, double smooth);
+autoSound Sound_filter_formula (Sound me, const char32 *formula, Interpreter interpreter);
 
 /* End of file Sound_and_Spectrum.h */
diff --git a/fon/Sound_audio.cpp b/fon/Sound_audio.cpp
index ff1c911..157af61 100644
--- a/fon/Sound_audio.cpp
+++ b/fon/Sound_audio.cpp
@@ -1,40 +1,19 @@
 /* Sound_audio.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2003/09/14 Sound_recordFixedTime records in stereo if mono is not available
- * pb 2003/12/06 use sys/soundcard.h instead of linux/soundcard.h for FreeBSD compatibility
- * pb 2005/04/24 Sound_recordFixedTime: Firewire Solo 1264
- * pb 2005/06/16 removed previous change (System Preferences handles this)
- * pb 2005/10/13 edition for OpenBSD
- * pb 2006/10/28 erased MacOS 9 stuff
- * pb 2006/12/20 Sound_playPart and Sound_play allow stereo
- * pb 2006/12/30 Sound_playPart and Sound_play allow better stereo
- * pb 2007/01/07 PortAudio
- * Stefan de Konink 2007/12/02 big-endian Linux
- * pb 2008/01/19 double
- * pb 2008/07/07 split zero padding between silenceBefore and silenceAfter
- * fb 2010/02/26 fix resource leak fd_mixer in case of error during init
- * pb 2010/04/20 Sound_recordFixedTime for Linux: repair
- * pb 2010/11/02 Sound_recordFixedTime for Linux: repair bug from 1998
- * pb 2011/06/07 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <errno.h>
@@ -51,9 +30,6 @@
 
 #if defined (macintosh)
 	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
 	#include "pa_mac_core.h"
 	#include "macport_off.h"
 #elif defined (_WIN32)
@@ -143,21 +119,28 @@ static int portaudioStreamCallback (
 	return paContinue;
 }
 
-Sound Sound_recordFixedTime (int inputSource, double gain, double balance, double sampleRate, double duration) {
-	bool inputUsesPortAudio = MelderAudio_getInputUsesPortAudio ();
-	PaStream *portaudioStream = NULL;
+autoSound Sound_recordFixedTime (int inputSource, double gain, double balance, double sampleRate, double duration) {
+	bool inputUsesPortAudio =
+		#if defined (_WIN32)
+			MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_MME_VIA_PORTAUDIO;
+		#elif defined (macintosh)
+			MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_COREAUDIO_VIA_PORTAUDIO;
+		#else
+			MelderAudio_getInputSoundSystem () == kMelder_inputSoundSystem_ALSA_VIA_PORTAUDIO;
+		#endif
+	PaStream *portaudioStream = nullptr;
 	#if defined (macintosh)
 	#elif defined (_WIN32)
 		HWAVEIN hWaveIn = 0;
 	#else
-		int fd = -1;   /* Other systems use stream I/O with a file descriptor. */
+		int fd = -1;   // other systems use stream I/O with a file descriptor
 		int fd_mixer = -1;
 	#endif
 	try {
 		long numberOfSamples, i;
-		int mulaw = FALSE;
-		int can16bit = TRUE;
-		int fakeMonoByStereo = FALSE;   /* Will be set to TRUE for systems (like MacOS X) that do not allow direct mono recording. */
+		bool mulaw = false;
+		bool can16bit = true;
+		bool fakeMonoByStereo = false;   // will be set to `true` for systems (like MacOS X) that do not allow direct mono recording
 
 		/* Declare system-dependent data structures. */
 
@@ -242,7 +225,7 @@ Sound Sound_recordFixedTime (int inputSource, double gain, double balance, doubl
 				/* The device immediately started recording into its buffer, but probably at the wrong rate etc. */
 				/* Pause and flush this rubbish. */
 				#if defined (linux)
-					ioctl (fd, SNDCTL_DSP_RESET, NULL);
+					ioctl (fd, SNDCTL_DSP_RESET, nullptr);
 				#endif
 			#endif
 		}
@@ -374,7 +357,7 @@ Sound Sound_recordFixedTime (int inputSource, double gain, double balance, doubl
 			info. numberOfSamples = numberOfSamples;
 			info. numberOfSamplesRead = 0;
 			info. buffer = buffer.peek();
-			PaError err = Pa_OpenStream (& portaudioStream, & streamParameters, NULL,
+			PaError err = Pa_OpenStream (& portaudioStream, & streamParameters, nullptr,
 				sampleRate, 0, paNoFlag, portaudioStreamCallback, (void *) & info);
 			if (err)
 				Melder_throw (U"open ", Melder_peek8to32 (Pa_GetErrorText (err)));
@@ -408,7 +391,7 @@ for (i = 1; i <= numberOfSamples; i ++) trace (U"Recorded ", buffer [i]);
 				waveHeader. lpData = (char *) & buffer [1];
 				waveHeader. dwBufferLength = numberOfSamples * 2;
 				waveHeader. dwLoops = 0;
-				waveHeader. lpNext = NULL;
+				waveHeader. lpNext = nullptr;
 				waveHeader. reserved = 0;
 				err = waveInPrepareHeader (hWaveIn, & waveHeader, sizeof (WAVEHDR));
 				if (err != MMSYSERR_NOERROR)
@@ -473,7 +456,7 @@ for (i = 1; i <= numberOfSamples; i ++) trace (U"Recorded ", buffer [i]);
 
 		/* Hand the resulting sound to the caller. */
 
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		if (inputUsesPortAudio) {
 			if (portaudioStream) Pa_StopStream (portaudioStream);
@@ -496,9 +479,9 @@ for (i = 1; i <= numberOfSamples; i ++) trace (U"Recorded ", buffer [i]);
 static struct SoundPlay {
 	long numberOfSamples, i1, i2, silenceBefore, silenceAfter;
 	double tmin, tmax, dt, t1;
-	int (*callback) (void *closure, int phase, double tmin, double tmax, double t);
-	void *closure;
-	short *buffer;
+	Sound_PlayCallback callback;
+	Thing boss;
+	int16 *buffer;
 } thePlayingSound;
 
 static bool melderPlayCallback (void *closure, long samplesPlayed) {
@@ -508,22 +491,21 @@ static bool melderPlayCallback (void *closure, long samplesPlayed) {
 		samplesPlayed >= my silenceBefore + my numberOfSamples ? my tmax :
 		my t1 + (my i1 - 1.5 + samplesPlayed - my silenceBefore) * my dt;
 	if (! MelderAudio_isPlaying) {
-		NUMvector_free (my buffer, 1), my buffer = NULL;
+		NUMvector_free (my buffer, 1), my buffer = nullptr;
 		phase = 3;
 	}
 	if (my callback)
-		return my callback (my closure, phase, my tmin, my tmax, t);
+		return my callback (my boss, phase, my tmin, my tmax, t);
 	return true;
 }
 
-void Sound_playPart (Sound me, double tmin, double tmax,
-	int (*callback) (void *closure, int phase, double tmin, double tmax, double t), void *closure)
+void Sound_playPart (Sound me, double tmin, double tmax, Sound_PlayCallback callback, Thing boss)
 {
 	try {
 		long ifsamp = lround (1.0 / my dx), bestSampleRate = MelderAudio_getOutputBestSampleRate (ifsamp);
 		if (ifsamp == bestSampleRate) {
 			struct SoundPlay *thee = (struct SoundPlay *) & thePlayingSound;
-			double *fromLeft = my z [1], *fromRight = my ny > 1 ? my z [2] : NULL;
+			double *fromLeft = my z [1], *fromRight = my ny > 1 ? my z [2] : nullptr;
 			MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 			long i1, i2;
 			if ((thy numberOfSamples = Matrix_getWindowSamplesX (me, tmin, tmax, & i1, & i2)) < 1) return;
@@ -532,7 +514,7 @@ void Sound_playPart (Sound me, double tmin, double tmax,
 			thy dt = my dx;
 			thy t1 = my x1;
 			thy callback = callback;
-			thy closure = closure;
+			thy boss = boss;
 			thy silenceBefore = (long) (ifsamp * MelderAudio_getOutputSilenceBefore ());
 			thy silenceAfter = (long) (ifsamp * MelderAudio_getOutputSilenceAfter ());
 			int numberOfChannels = my ny;
@@ -561,20 +543,19 @@ void Sound_playPart (Sound me, double tmin, double tmax,
 					* ++ to = value < -32768 ? -32768 : value > 32767 ? 32767 : value;
 				}
 			}
-			if (thy callback) thy callback (thy closure, 1, tmin, tmax, tmin);
+			if (thy callback) thy callback (thy boss, 1, tmin, tmax, tmin);
 			MelderAudio_play16 (thy buffer + 1, ifsamp,
 				thy silenceBefore + thy numberOfSamples + thy silenceAfter, numberOfChannels, melderPlayCallback, thee);
 		} else {
 			autoSound resampled = Sound_resample (me, bestSampleRate, 1);
-			Sound_playPart (resampled.peek(), tmin, tmax, callback, closure);   // recursively
+			Sound_playPart (resampled.get(), tmin, tmax, callback, boss);   // recursively
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": not played.");
 	}
 }
 
-void Sound_play (Sound me,
-	int (*playCallback) (void *playClosure, int phase, double tmin, double tmax, double t), void *playClosure)
+void Sound_play (Sound me, Sound_PlayCallback playCallback, Thing playClosure)
 {
 	Sound_playPart (me, my xmin, my xmax, playCallback, playClosure);
 }
diff --git a/fon/Sound_enhance.cpp b/fon/Sound_enhance.cpp
index 270793b..78dbd18 100644
--- a/fon/Sound_enhance.cpp
+++ b/fon/Sound_enhance.cpp
@@ -1,20 +1,19 @@
 /* Sound_enhance.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -32,45 +31,47 @@
 #include "Pitch_to_PointProcess.h"
 #include "Sound_and_Spectrum.h"
 
-Sound Sound_lengthen_overlapAdd (Sound me, double fmin, double fmax, double factor) {
+autoSound Sound_lengthen_overlapAdd (Sound me, double fmin, double fmax, double factor) {
 	try {
 		if (my ny > 1)
 			Melder_throw (U"Overlap-add works only on mono sounds.");
 		autoSound sound = Data_copy (me);
-		Vector_subtractMean (sound.peek());
-		autoPitch pitch = Sound_to_Pitch (sound.peek(), 0.8 / fmin, fmin, fmax);
-		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.peek(), pitch.peek());
-		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.peek());
+		Vector_subtractMean (sound.get());
+		autoPitch pitch = Sound_to_Pitch (sound.get(), 0.8 / fmin, fmin, fmax);
+		autoPointProcess pulses = Sound_Pitch_to_PointProcess_cc (sound.get(), pitch.get());
+		autoPitchTier pitchTier = Pitch_to_PitchTier (pitch.get());
 		autoDurationTier duration = DurationTier_create (my xmin, my xmax);
-		RealTier_addPoint (duration.peek(), 0.5 * (my xmin + my xmax), factor);
-		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.peek(), pulses.peek(), pitchTier.peek(), duration.peek(), 1.5 / fmin);
-		return thee.transfer();
+		RealTier_addPoint (duration.get(), 0.5 * (my xmin + my xmax), factor);
+		autoSound thee = Sound_Point_Pitch_Duration_to_Sound (sound.get(), pulses.get(), pitchTier.get(), duration.get(), 1.5 / fmin);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not lengthened.");
 	}
 }
 
-Sound Sound_deepenBandModulation (Sound me, double enhancement_dB,
+autoSound Sound_deepenBandModulation (Sound me, double enhancement_dB,
 	double flow, double fhigh, double slowModulation, double fastModulation, double bandSmoothing)
 {
 	try {
 		autoSound thee = Data_copy (me);
-		double maximumFactor = pow (10, enhancement_dB / 20), alpha = sqrt (log (2.0));
+		double maximumFactor = pow (10.0, enhancement_dB / 20.0), alpha = sqrt (log (2.0));
 		double alphaslow = alpha / slowModulation, alphafast = alpha / fastModulation;
 
 		for (long channel = 1; channel <= my ny; channel ++) {
 			autoSound channelSound = Sound_extractChannel (me, channel);
-			autoSpectrum orgspec = Sound_to_Spectrum (channelSound.peek(), TRUE);
+			autoSpectrum orgspec = Sound_to_Spectrum (channelSound.get(), true);
 
 			/*
 			 * Keep the part of the sound that is outside the filter bank.
 			 */
-			autoSpectrum spec = Data_copy (orgspec.peek());
-			Spectrum_stopHannBand (spec.peek(), flow, fhigh, bandSmoothing);
-			autoSound filtered = Spectrum_to_Sound (spec.peek());
+			autoSpectrum spec = Data_copy (orgspec.get());
+			Spectrum_stopHannBand (spec.get(), flow, fhigh, bandSmoothing);
+			autoSound filtered = Spectrum_to_Sound (spec.get());
 			long n = thy nx;
 			double *amp = thy z [channel];
-			for (long i = 1; i <= n; i ++) amp [i] = filtered -> z [1] [i];
+			for (long i = 1; i <= n; i ++) {
+				amp [i] = filtered -> z [1] [i];
+			}
 
 			autoMelderProgress progress (U"Deepen band modulation...");
 			double fmin = flow;
@@ -79,20 +80,22 @@ Sound Sound_deepenBandModulation (Sound me, double enhancement_dB,
 				 * Take a one-bark frequency band.
 				 */
 				double fmid_bark = NUMhertzToBark (fmin) + 0.5, ceiling;
-				double fmax = NUMbarkToHertz (NUMhertzToBark (fmin) + 1);
+				double fmax = NUMbarkToHertz (NUMhertzToBark (fmin) + 1.0);
 				if (fmax > fhigh) fmax = fhigh;
 				Melder_progress (fmin / fhigh, U"Band: ", Melder_fixed (fmin, 0), U" ... ", Melder_fixed (fmax, 0), U" Hz");
 				NUMmatrix_copyElements (orgspec -> z, spec -> z, 1, 2, 1, spec -> nx);
-				Spectrum_passHannBand (spec.peek(), fmin, fmax, bandSmoothing);
-				autoSound band = Spectrum_to_Sound (spec.peek());
+				Spectrum_passHannBand (spec.get(), fmin, fmax, bandSmoothing);
+				autoSound band = Spectrum_to_Sound (spec.get());
 				/*
 				 * Compute a relative intensity contour.
 				 */		
-				autoSound intensity = Data_copy (band.peek());
+				autoSound intensity = Data_copy (band.get());
 				n = intensity -> nx;
 				amp = intensity -> z [1];
-				for (long i = 1; i <= n; i ++) amp [i] = 10 * log10 (amp [i] * amp [i] + 1e-6);
-				autoSpectrum intensityFilter = Sound_to_Spectrum (intensity.peek(), TRUE);
+				for (long i = 1; i <= n; i ++) {
+					amp [i] = 10.0 * log10 (amp [i] * amp [i] + 1e-6);
+				}
+				autoSpectrum intensityFilter = Sound_to_Spectrum (intensity.get(), true);
 				n = intensityFilter -> nx;
 				for (long i = 1; i <= n; i ++) {
 					double frequency = intensityFilter -> x1 + (i - 1) * intensityFilter -> dx;
@@ -101,15 +104,19 @@ Sound Sound_deepenBandModulation (Sound me, double enhancement_dB,
 					intensityFilter -> z [1] [i] *= factor;
 					intensityFilter -> z [2] [i] *= factor;
 				}
-				intensity.reset (Spectrum_to_Sound (intensityFilter.peek()));
+				intensity = Spectrum_to_Sound (intensityFilter.get());
 				n = intensity -> nx;
 				amp = intensity -> z [1];
-				for (long i = 1; i <= n; i ++) amp [i] = pow (10, amp [i] / 2);
+				for (long i = 1; i <= n; i ++) {
+					amp [i] = pow (10.0, amp [i] / 2.0);
+				}
 				/*
 				 * Clip to maximum enhancement.
 				 */
-				ceiling = 1 + (maximumFactor - 1.0) * (0.5 - 0.5 * cos (NUMpi * fmid_bark / 13));
-				for (long i = 1; i <= n; i ++) amp [i] = 1 / (1 / amp [i] + 1 / ceiling);
+				ceiling = 1 + (maximumFactor - 1.0) * (0.5 - 0.5 * cos (NUMpi * fmid_bark / 13.0));
+				for (long i = 1; i <= n; i ++) {
+					amp [i] = 1.0 / (1.0 / amp [i] + 1.0 / ceiling);
+				}
 
 				n = thy nx;
 				amp = thy z [channel];
@@ -118,13 +125,13 @@ Sound Sound_deepenBandModulation (Sound me, double enhancement_dB,
 				fmin = fmax;
 			}
 		}
-		Vector_scale (thee.peek(), 0.99);
+		Vector_scale (thee.get(), 0.99);
 		/* Truncate. */
 		thy xmin = my xmin;
 		thy xmax = my xmax;
 		thy nx = my nx;
 		thy x1 = my x1;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": band modulation not deepened.");
 	}
diff --git a/fon/Sound_enums.h b/fon/Sound_enums.h
index dcbf8c5..ec9596e 100644
--- a/fon/Sound_enums.h
+++ b/fon/Sound_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kSound_windowShape, 0)
diff --git a/fon/Sound_files.cpp b/fon/Sound_files.cpp
index 43ac849..622b8a8 100644
--- a/fon/Sound_files.cpp
+++ b/fon/Sound_files.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma & David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -66,7 +65,7 @@ static void Sound_alawDecode (Sound me) {
 #include <time.h>
 #include "Sound.h"
 
-Sound Sound_readFromSoundFile (MelderFile file) {
+autoSound Sound_readFromSoundFile (MelderFile file) {
 	try {
 		autoMelderFile mfile = MelderFile_open (file);
 		int numberOfChannels, encoding;
@@ -85,13 +84,13 @@ Sound Sound_readFromSoundFile (MelderFile file) {
 			Melder_throw (U"Cannot unshorten. Write to paul.boersma at uva.nl for more information.");
 		Melder_readAudioToFloat (file -> filePointer, numberOfChannels, encoding, my z, numberOfSamples);
 		mfile.close ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from sound file ", file, U".");
 	}
 }
 
-Sound Sound_readFromSesamFile (MelderFile file) {
+autoSound Sound_readFromSesamFile (MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 		int32_t header [1 + 128];
@@ -116,13 +115,13 @@ Sound Sound_readFromSesamFile (MelderFile file) {
 			my z [1] [i] = (double) bingeti2LE (f) * (1.0 / 2048);   // 12 bits
 		}
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from Sesam file ", file, U".");
 	}
 }
 
-Sound Sound_readFromBellLabsFile (MelderFile file) {
+autoSound Sound_readFromBellLabsFile (MelderFile file) {
 	try {
 		/*
 		 * Check existence and permissions of file.
@@ -136,7 +135,7 @@ Sound Sound_readFromBellLabsFile (MelderFile file) {
 		if (fread (tag, 1, 16, f) < 16 || ! strnequ (tag, "SIG\n", 4))
 			Melder_throw (U"Not a Bell-Labs sound file.");
 		char *endOfTag = strchr (tag + 4, '\n');
-		if (endOfTag == NULL)
+		if (! endOfTag)
 			Melder_throw (U"Second line missing or too long.");
 		unsigned long tagLength = (endOfTag - tag) + 1;   // probably 12
 		unsigned long headerLength = atol (tag + 4);
@@ -152,7 +151,7 @@ Sound Sound_readFromBellLabsFile (MelderFile file) {
 			Melder_throw (U"Header too short.");
 		unsigned long numberOfSamples = 0;
 		char *psamples = & lines [-1];
-		while ((psamples = strstr (psamples + 1, "samples ")) != NULL)   // take last occurrence
+		while (!! (psamples = strstr (psamples + 1, "samples ")))   // take last occurrence
 			numberOfSamples = atol (psamples + 8);
 		if (numberOfSamples < 1) {
 			/* Use file length. */
@@ -163,7 +162,7 @@ Sound Sound_readFromBellLabsFile (MelderFile file) {
 			Melder_throw (U"No samples found.");
 		double samplingFrequency = 0.0;
 		char *pfrequency = & lines [-1];
-		while ((pfrequency = strstr (pfrequency + 1, "frequency ")) != NULL)   // take last occurrence
+		while (!! (pfrequency = strstr (pfrequency + 1, "frequency ")))   // take last occurrence
 			samplingFrequency = atof (pfrequency + 10);
 		if (samplingFrequency <= 0.0)
 			samplingFrequency = 16000.0;
@@ -181,7 +180,7 @@ Sound Sound_readFromBellLabsFile (MelderFile file) {
 			my z [1] [i] = (double) bingeti2 (f) * (1.0 / 32768);   // 16-bits big-endian
 
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from Bell Labs sound file ", file, U".");
 	}
@@ -191,7 +190,7 @@ static void readError () {
 	Melder_throw (U"Error reading bytes from file.");
 }
 
-Sound Sound_readFromKayFile (MelderFile file) {
+autoSound Sound_readFromKayFile (MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 
@@ -226,7 +225,7 @@ Sound Sound_readFromKayFile (MelderFile file) {
 
 		if (fread (data, 1, 4, f) < 4) readError ();
 		while (! strnequ (data, "SDA_", 4) && ! strnequ (data, "SD_B", 4)) {
-			if (feof (f))
+			if (feof ((FILE *) f))
 				Melder_throw (U"Missing or unreadable SD chunk. Please report to paul.boersma at uva.nl.");
 			chunkSize = bingetu4LE (f);
 			if (chunkSize & 1) ++ chunkSize;
@@ -244,13 +243,13 @@ Sound Sound_readFromKayFile (MelderFile file) {
 			}
 		}
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from Kay file ", file, U".");
 	}
 }
 
-Sound Sound_readFromRawAlawFile (MelderFile file) {
+autoSound Sound_readFromRawAlawFile (MelderFile file) {
 	try {
 		double sampleRate = 8000.0;
 		autofile f = Melder_fopen (file, "rb");
@@ -260,7 +259,7 @@ Sound Sound_readFromRawAlawFile (MelderFile file) {
 		autoSound me = Sound_createSimple (1, numberOfSamples / sampleRate, sampleRate); 
 		Melder_readAudioToFloat (f, 1, Melder_ALAW, my z, numberOfSamples);
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Sound not read from raw A-law file ", file, U".");
 	}
@@ -270,7 +269,7 @@ void Sound_writeToAudioFile (Sound me, MelderFile file, int audioFileType, int n
 	try {
 		autoMelderFile mfile = MelderFile_create (file);
 		MelderFile_writeAudioFileHeader (file, audioFileType, lround (1.0 / my dx), my nx, my ny, numberOfBitsPerSamplePoint);
-		MelderFile_writeFloatToAudio (file, my ny, Melder_defaultAudioFileEncoding (audioFileType, numberOfBitsPerSamplePoint), my z, my nx, TRUE);
+		MelderFile_writeFloatToAudio (file, my ny, Melder_defaultAudioFileEncoding (audioFileType, numberOfBitsPerSamplePoint), my z, my nx, true);
 		MelderFile_writeAudioFileTrailer (file, audioFileType, lround (1.0 / my dx), my nx, my ny, numberOfBitsPerSamplePoint);
 		mfile.close ();
 	} catch (MelderError) {
@@ -318,7 +317,7 @@ void Sound_writeToKayFile (Sound me, MelderFile file) {
 		binputi4LE (32, file -> filePointer);
 
 		char date [100];
-		time_t today = time (NULL);
+		time_t today = time (nullptr);
 		strcpy (date, ctime (& today));	
 		fwrite (date+4, 1, 20, file -> filePointer);   // skip weekday
 
@@ -345,9 +344,9 @@ void Sound_writeToKayFile (Sound me, MelderFile file) {
 		fwrite ("SDA_", 1, 4, file -> filePointer);
 		binputi4LE (my nx * 2, file -> filePointer);   // chunk size
 
-		MelderFile_writeFloatToAudio (file, 1, Melder_LINEAR_16_LITTLE_ENDIAN, my z, my nx, TRUE);
+		MelderFile_writeFloatToAudio (file, 1, Melder_LINEAR_16_LITTLE_ENDIAN, my z, my nx, true);
 		if (my ny > 1)
-			MelderFile_writeFloatToAudio (file, 1, Melder_LINEAR_16_LITTLE_ENDIAN, my z + 1, my nx, TRUE);
+			MelderFile_writeFloatToAudio (file, 1, Melder_LINEAR_16_LITTLE_ENDIAN, my z + 1, my nx, true);
 		mfile.close ();
 	} catch (MelderError) {
 		Melder_throw (me, U": not written to Kay sound file ", file, U".");
@@ -357,7 +356,7 @@ void Sound_writeToKayFile (Sound me, MelderFile file) {
 void Sound_writeToRawSoundFile (Sound me, MelderFile file, int encoding) {
 	try {
 		autoMelderFile mfile = MelderFile_create (file);
-		MelderFile_writeFloatToAudio (file, my ny, encoding, my z, my nx, TRUE);
+		MelderFile_writeFloatToAudio (file, my ny, encoding, my z, my nx, true);
 		mfile.close ();
 	} catch (MelderError) {
 		Melder_throw (me, U": not written to raw sound file ", file, U".");
diff --git a/fon/Sound_to_Cochleagram.cpp b/fon/Sound_to_Cochleagram.cpp
index c20a50e..5f51572 100644
--- a/fon/Sound_to_Cochleagram.cpp
+++ b/fon/Sound_to_Cochleagram.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_Cochleagram.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -33,7 +32,7 @@
 #include "Sound_and_Spectrum.h"
 #include "Spectrum_to_Excitation.h"
 
-Cochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double dt_window, double forwardMaskingTime) {
+autoCochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double dt_window, double forwardMaskingTime) {
 	try {
 		double duration = my nx * my dx;
 		long nFrames = 1 + (long) floor ((duration - dt_window) / dt);
@@ -43,12 +42,12 @@ Cochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double dt_wind
 		double integrationCorrection = 1.0 - dampingFactor;
 
 		nsamp_window = halfnsamp_window * 2;
-		if (nFrames < 2) return NULL;
+		if (nFrames < 2) return autoCochleagram ();
 		double t1 = my x1 + 0.5 * (duration - my dx - (nFrames - 1) * dt);   // centre of first frame
 		autoCochleagram thee = Cochleagram_create (my xmin, my xmax, nFrames, dt, t1, df, nf);
 		autoSound window = Sound_createSimple (1, nsamp_window * my dx, 1.0 / my dx);
 		for (long iframe = 1; iframe <= nFrames; iframe ++) {
-			double t = Sampled_indexToX (thee.peek(), iframe);
+			double t = Sampled_indexToX (thee.get(), iframe);
 			long leftSample = Sampled_xToLowIndex (me, t);
 			long rightSample = leftSample + 1;
 			long startSample = rightSample - halfnsamp_window;
@@ -69,22 +68,22 @@ Cochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double dt_wind
 			for (long i = 1; i <= nsamp_window; i ++)
 				window -> z [1] [i] =
 					( my ny == 1 ? my z[1][i+startSample-1] : 0.5 * (my z[1][i+startSample-1] + my z[2][i+startSample-1]) ) *
-					(0.5 - 0.5 * cos (2 * NUMpi * i / (nsamp_window + 1)));
-			autoSpectrum spec = Sound_to_Spectrum (window.peek(), TRUE);
-			autoExcitation excitation = Spectrum_to_Excitation (spec.peek(), df);
+					(0.5 - 0.5 * cos (2.0 * NUMpi * i / (nsamp_window + 1)));
+			autoSpectrum spec = Sound_to_Spectrum (window.get(), true);
+			autoExcitation excitation = Spectrum_to_Excitation (spec.get(), df);
 			for (long ifreq = 1; ifreq <= nf; ifreq ++)
 				thy z [ifreq] [iframe] = excitation -> z [1] [ifreq] + ( iframe > 1 ? dampingFactor * thy z [ifreq] [iframe - 1] : 0 );
 		}
 		for (long iframe = 1; iframe <= nFrames; iframe ++)
 			for (long ifreq = 1; ifreq <= nf; ifreq ++)
 				thy z [ifreq] [iframe] *= integrationCorrection;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Cochleagram.");
 	}
 }
 
-static Sound createGammatone (double midFrequency_Hertz, double samplingFrequency) {
+static autoSound createGammatone (double midFrequency_Hertz, double samplingFrequency) {
 	double lengthOfGammatone_seconds = 50.0 / midFrequency_Hertz;   // 50 periods
 	long lengthOfGammatone_samples;
 	/* EdB's alfa1: */
@@ -102,10 +101,10 @@ static Sound createGammatone (double midFrequency_Hertz, double samplingFrequenc
 		if (time_seconds > latency) gammatone -> z [1] [itime] =
 			x * x * x * exp (- x) * cos (midFrequency_radPerSecond * timeAfterLatency);
 	}
-	return gammatone.transfer();
+	return gammatone;
 }
 
-Cochleagram Sound_to_Cochleagram_edb
+autoCochleagram Sound_to_Cochleagram_edb
 	(Sound me, double dtime, double dfreq, int hasSynapse, double replenishmentRate,
 	 double lossRate, double returnRate, double reprocessingRate)
 {
@@ -113,7 +112,7 @@ Cochleagram Sound_to_Cochleagram_edb
 		double duration_seconds = my xmax;
 		if (dtime < my dx) dtime = my dx;
 		long ntime = lround (duration_seconds / dtime);
-		if (ntime < 2) return NULL;
+		if (ntime < 2) return autoCochleagram ();
 		long nfreq = lround (25.6 / dfreq);   // 25.6 Bark = highest frequency
 
 		autoCochleagram thee = Cochleagram_create (my xmin, my xmax, ntime, dtime, 0.5 * dtime, dfreq, nfreq);
@@ -129,37 +128,37 @@ Cochleagram Sound_to_Cochleagram_edb
 
 			double midFrequency_Bark = (ifreq - 0.5) * dfreq;
 			double midFrequency_Hertz = Excitation_barkToHertz (midFrequency_Bark);
-			autoSound gammatone = createGammatone (midFrequency_Hertz, 1 / my dx);
-			autoSound basil = Sounds_convolve (me, gammatone.peek(), kSounds_convolve_scaling_SUM, kSounds_convolve_signalOutsideTimeDomain_ZERO);
+			autoSound gammatone = createGammatone (midFrequency_Hertz, 1.0 / my dx);
+			autoSound basil = Sounds_convolve (me, gammatone.get(), kSounds_convolve_scaling_SUM, kSounds_convolve_signalOutsideTimeDomain_ZERO);
 
 			/* Stage 4: detection = rectify + integrate + low-pass 500 Hz. */
 			/* From basilar membrane response to firing rate. */
 
 			if (hasSynapse) {
 				double dt = my dx;
-				double M = 1;   /* Maximum free transmitter. */
-				double A = 5, B = 300, g = 2000;   /* Determine permeability. */
-				double y = replenishmentRate;          /* Meddis: 5.05 */
-				double l = lossRate, r = returnRate;   /* Meddis: 2500, 6580 */
-				double x = reprocessingRate;           /* Meddis: 66.31 */
-				double h = 50000;   /* Convert cleft contents to firing rate. */
-				double gdt = 1 - exp (- g * dt), ydt = 1 - exp (- y * dt),
-						 ldt = (1 - exp (- (l + r) * dt)) * l / (l + r),
-						 rdt = (1 - exp (- (l + r) * dt)) * r / (l + r),
-						 xdt = 1 - exp (- x * dt);
-				double kt = g * A / (A + B);   /* Membrane permeability. */
-				double c = M * y * kt / (l * kt + y * (l + r));   /* Cleft contents. */
-				double q = c * (l + r) / kt;   /* Free transmitter. */
-				double w = c * r / x;   /* Reprocessing store. */
+				double M = 1.0;   // maximum free transmitter
+				double A = 5.0, B = 300.0, g = 2000.0;   // determine permeability
+				double y = replenishmentRate;            // Meddis: 5.05
+				double l = lossRate, r = returnRate;     // Meddis: 2500, 6580
+				double x = reprocessingRate;             // Meddis: 66.31
+				double h = 50000;   // convert cleft contents to firing rate
+				double gdt = 1.0 - exp (- g * dt);
+				double ydt = 1.0 - exp (- y * dt);
+				double ldt = (1.0 - exp (- (l + r) * dt)) * l / (l + r);
+				double rdt = (1.0 - exp (- (l + r) * dt)) * r / (l + r);
+				double xdt = 1.0 - exp (- x * dt);
+				double kt = g * A / (A + B);   // membrane permeability
+				double c = M * y * kt / (l * kt + y * (l + r));   // cleft contents
+				double q = c * (l + r) / kt;   // free transmitter
+				double w = c * r / x;   // reprocessing store
 				for (long itime = 1; itime <= basil -> nx; itime ++) {
-					double splusA = basil -> z [1] [itime] * 10 + A;
-					double replenish = M > q ? ydt * (M - q) : 0;
-					double eject, loss, reuptake, reprocess;
-					kt = splusA > 0 ? gdt * splusA / (splusA + B) : 0;
-					eject = kt * q;
-					loss = ldt * c;
-					reuptake = rdt * c;
-					reprocess = xdt * w;
+					double splusA = basil -> z [1] [itime] * 10.0 + A;
+					double replenish = ( M > q ? ydt * (M - q) : 0.0 );
+					kt = ( splusA > 0.0 ? gdt * splusA / (splusA + B) : 0.0 );
+					double eject = kt * q;
+					double loss = ldt * c;
+					double reuptake = rdt * c;
+					double reprocess = xdt * w;
 					q = q + replenish - eject + reprocess;
 					c = c + eject - loss - reuptake;
 					w = w + reuptake - reprocess;
@@ -176,9 +175,11 @@ Cochleagram Sound_to_Cochleagram_edb
 				double area = d * sqrt (NUMpi / 6);
 				double expmin6 = exp (-6), onebyoneminexpmin6 = 1 / (1 - expmin6);
 				for (long itime = 1; itime <= ntime; itime ++) {
-					double t1 = (itime - 1) * dtime, t2 = t1 + dtime, mean = 0;
+					double t1 = (itime - 1) * dtime;
+					double t2 = t1 + dtime;
+					double mean = 0.0;
 					long i1, i2;
-					long n = Matrix_getWindowSamplesX (basil.peek(), t1, t2, & i1, & i2);
+					long n = Matrix_getWindowSamplesX (basil.get(), t1, t2, & i1, & i2);
 					Melder_assert (n >= 1);
 					if (n <= 2) {
 						for (long isamp = i1; isamp <= i2; isamp ++)
@@ -202,7 +203,7 @@ Cochleagram Sound_to_Cochleagram_edb
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Cochleagram (edb).");
 	}
diff --git a/fon/Sound_to_Cochleagram.h b/fon/Sound_to_Cochleagram.h
index bb5237e..ddb3a4a 100644
--- a/fon/Sound_to_Cochleagram.h
+++ b/fon/Sound_to_Cochleagram.h
@@ -1,28 +1,27 @@
 /* Sound_to_Cochleagram.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Cochleagram.h"
 
-Cochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double windowLength, double forwardMaskingTime);
+autoCochleagram Sound_to_Cochleagram (Sound me, double dt, double df, double windowLength, double forwardMaskingTime);
 
-Cochleagram Sound_to_Cochleagram_edb
+autoCochleagram Sound_to_Cochleagram_edb
 	(Sound me, double dtime, double dfreq, int hasSynapse, double replenishmentRate,
 	 double lossRate, double returnRate, double reprocessingRate);
 
diff --git a/fon/Sound_to_Formant.cpp b/fon/Sound_to_Formant.cpp
index 4f218eb..8c80fea 100644
--- a/fon/Sound_to_Formant.cpp
+++ b/fon/Sound_to_Formant.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_Formant.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -50,10 +49,10 @@ static void burg (double sample [], long nsamp_window, double cof [], int nPoles
 	/*
 	 * Find the roots of the polynomial.
 	 */
-	autoRoots roots = Polynomial_to_Roots (polynomial.peek());
-	Roots_fixIntoUnitCircle (roots.peek());
+	autoRoots roots = Polynomial_to_Roots (polynomial.get());
+	Roots_fixIntoUnitCircle (roots.get());
 
-	Melder_assert (frame -> nFormants == 0 && frame -> formant == NULL);
+	Melder_assert (frame -> nFormants == 0 && ! frame -> formant);
 
 	/*
 	 * First pass: count the formants.
@@ -75,7 +74,7 @@ static void burg (double sample [], long nsamp_window, double cof [], int nPoles
 	 * Second pass: fill in the formants.
 	 */
 	int iformant = 0;
-	for (int i = roots -> min; i <= roots -> max; i ++) if (roots -> v [i]. im >= 0) {
+	for (int i = roots -> min; i <= roots -> max; i ++) if (roots -> v [i]. im >= 0.0) {
 		double f = fabs (atan2 (roots -> v [i].im, roots -> v [i].re)) * nyquistFrequency / NUMpi;
 		if (f >= safetyMargin && f <= nyquistFrequency - safetyMargin) {
 			Formant_Formant formant = & frame -> formant [++ iformant];
@@ -265,7 +264,7 @@ void Formant_sort (Formant me) {
 	}
 }
 
-static Formant Sound_to_Formant_any_inline (Sound me, double dt_in, int numberOfPoles,
+static autoFormant Sound_to_Formant_any_inline (Sound me, double dt_in, int numberOfPoles,
 	double halfdt_window, int which, double preemphasisFrequency, double safetyMargin)
 {
 	double dt = dt_in > 0.0 ? dt_in : halfdt_window / 4.0;
@@ -296,11 +295,11 @@ static Formant Sound_to_Formant_any_inline (Sound me, double dt_in, int numberOf
 	/* Gaussian window. */
 	for (long i = 1; i <= nsamp_window; i ++) {
 		double imid = 0.5 * (nsamp_window + 1), edge = exp (-12.0);
-		window [i] = (exp (-48.0 * (i - imid) * (i - imid) / (nsamp_window + 1) / (nsamp_window + 1)) - edge) / (1 - edge);
+		window [i] = (exp (-48.0 * (i - imid) * (i - imid) / (nsamp_window + 1) / (nsamp_window + 1)) - edge) / (1.0 - edge);
 	}
 
 	for (long iframe = 1; iframe <= nFrames; iframe ++) {
-		double t = Sampled_indexToX (thee.peek(), iframe);
+		double t = Sampled_indexToX (thee.get(), iframe);
 		long leftSample = Sampled_xToLowIndex (me, t);
 		long rightSample = leftSample + 1;
 		long startSample = rightSample - halfnsamp_window;
@@ -336,25 +335,24 @@ static Formant Sound_to_Formant_any_inline (Sound me, double dt_in, int numberOf
 		}
 		Melder_progress ((double) iframe / (double) nFrames, U"Formant analysis: frame ", iframe);
 	}
-	Formant_sort (thee.peek());
-	return thee.transfer();
+	Formant_sort (thee.get());
+	return thee;
 }
 
-Formant Sound_to_Formant_any (Sound me, double dt, int numberOfPoles, double maximumFrequency,
+autoFormant Sound_to_Formant_any (Sound me, double dt, int numberOfPoles, double maximumFrequency,
 	double halfdt_window, int which, double preemphasisFrequency, double safetyMargin)
 {
 	double nyquist = 0.5 / my dx;
-	autoSound sound = NULL;
+	autoSound sound;
 	if (maximumFrequency <= 0.0 || fabs (maximumFrequency / nyquist - 1) < 1.0e-12) {
-		sound.reset (Data_copy (me));   // will be modified
+		sound = Data_copy (me);   // will be modified
 	} else {
-		sound.reset (Sound_resample (me, maximumFrequency * 2, 50));
+		sound = Sound_resample (me, maximumFrequency * 2, 50);
 	}
-	autoFormant thee = Sound_to_Formant_any_inline (sound.peek(), dt, numberOfPoles, halfdt_window, which, preemphasisFrequency, safetyMargin);
-	return thee.transfer();
+	return Sound_to_Formant_any_inline (sound.get(), dt, numberOfPoles, halfdt_window, which, preemphasisFrequency, safetyMargin);
 }
 
-Formant Sound_to_Formant_burg (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
+autoFormant Sound_to_Formant_burg (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
 	try {
 		return Sound_to_Formant_any (me, dt, (int) (2 * nFormants), maximumFrequency, halfdt_window, 1, preemphasisFrequency, 50.0);
 	} catch (MelderError) {
@@ -362,7 +360,7 @@ Formant Sound_to_Formant_burg (Sound me, double dt, double nFormants, double max
 	}
 }
 
-Formant Sound_to_Formant_keepAll (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
+autoFormant Sound_to_Formant_keepAll (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
 	try {
 		return Sound_to_Formant_any (me, dt, (int) (2 * nFormants), maximumFrequency, halfdt_window, 1, preemphasisFrequency, 0.0);
 	} catch (MelderError) {
@@ -370,7 +368,7 @@ Formant Sound_to_Formant_keepAll (Sound me, double dt, double nFormants, double
 	}
 }
 
-Formant Sound_to_Formant_willems (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
+autoFormant Sound_to_Formant_willems (Sound me, double dt, double nFormants, double maximumFrequency, double halfdt_window, double preemphasisFrequency) {
 	try {
 		return Sound_to_Formant_any (me, dt, (int) (2 * nFormants), maximumFrequency, halfdt_window, 2, preemphasisFrequency, 50.0);
 	} catch (MelderError) {
diff --git a/fon/Sound_to_Formant.h b/fon/Sound_to_Formant.h
index 66de4c8..4933664 100644
--- a/fon/Sound_to_Formant.h
+++ b/fon/Sound_to_Formant.h
@@ -1,41 +1,40 @@
 /* Sound_to_Formant.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Formant.h"
 
-Formant Sound_to_Formant_any (Sound me, double timeStep, int numberOfPoles, double maximumFrequency,
+autoFormant Sound_to_Formant_any (Sound me, double timeStep, int numberOfPoles, double maximumFrequency,
 	double halfdt_window, int which, double preemphasisFrequency, double safetyMargin);
 /*
 	Which = 1: Burg.
 	Which = 2: Split-Levinson
 */
 
-Formant Sound_to_Formant_burg (Sound me, double timeStep, double maximumNumberOfFormants,
+autoFormant Sound_to_Formant_burg (Sound me, double timeStep, double maximumNumberOfFormants,
 	double maximumFormantFrequency, double windowLength, double preemphasisFrequency);
 /* Throws away all formants below 50 Hz and above Nyquist minus 50 Hz. */
 
-Formant Sound_to_Formant_keepAll (Sound me, double timeStep, double maximumNumberOfFormants,
+autoFormant Sound_to_Formant_keepAll (Sound me, double timeStep, double maximumNumberOfFormants,
 	double maximumFormantFrequency, double windowLength, double preemphasisFrequency);
 /* Same as previous, but keeps all formants. Good for resynthesis. */
 
-Formant Sound_to_Formant_willems (Sound me, double timeStep, double numberOfFormants,
+autoFormant Sound_to_Formant_willems (Sound me, double timeStep, double numberOfFormants,
 	double maximumFormantFrequency, double windowLength, double preemphasisFrequency);
 
 /* End of file Sound_to_Formant.h */
diff --git a/fon/Sound_to_Harmonicity.cpp b/fon/Sound_to_Harmonicity.cpp
index 5fab19b..d066e95 100644
--- a/fon/Sound_to_Harmonicity.cpp
+++ b/fon/Sound_to_Harmonicity.cpp
@@ -1,70 +1,63 @@
 /* Sound_to_Harmonicity.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2004/10/29 corrected
- * pb 2011/03/09 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound_to_Pitch.h"
 #include "Sound_to_Harmonicity.h"
 
-Harmonicity Sound_to_Harmonicity_ac (Sound me, double dt, double minimumPitch,
+autoHarmonicity Sound_to_Harmonicity_ac (Sound me, double dt, double minimumPitch,
 	double silenceThreshold, double periodsPerWindow)
 {
 	try {
 		autoPitch pitch = Sound_to_Pitch_any (me, dt, minimumPitch, periodsPerWindow, 15, 1,
-			silenceThreshold, 0, 0, 0, 0, 0.5 / my dx);
+			silenceThreshold, 0.0, 0.0, 0.0, 0.0, 0.5 / my dx);
 		autoHarmonicity thee = Harmonicity_create (my xmin, my xmax, pitch -> nx,
 			pitch -> dx, pitch -> x1);
 		for (long i = 1; i <= thy nx; i ++) {
-			if (pitch -> frame [i]. candidate [1]. frequency == 0) {
-				thy z [1] [i] = -200;
+			if (pitch -> frame [i]. candidate [1]. frequency == 0.0) {
+				thy z [1] [i] = -200.0;
 			} else {
 				double r = pitch -> frame [i]. candidate [1]. strength;
-				thy z [1] [i] = r <= 1e-15 ? -150 : r > 1 - 1e-15 ? 150 : 10 * log10 (r / (1 - r));
+				thy z [1] [i] = ( r <= 1e-15 ? -150.0 : r > 1.0 - 1e-15 ? 150.0 : 10.0 * log10 (r / (1.0 - r)) );
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": harmonicity analysis (ac) not performed.");
 	}
 }
 
-Harmonicity Sound_to_Harmonicity_cc (Sound me, double dt, double minimumPitch,
+autoHarmonicity Sound_to_Harmonicity_cc (Sound me, double dt, double minimumPitch,
 	double silenceThreshold, double periodsPerWindow)
 {
 	try {
 		autoPitch pitch = Sound_to_Pitch_any (me, dt, minimumPitch, periodsPerWindow, 15, 3,
-			silenceThreshold, 0, 0, 0, 0, 0.5 / my dx);
+			silenceThreshold, 0.0, 0.0, 0.0, 0.0, 0.5 / my dx);
 		autoHarmonicity thee = Harmonicity_create (my xmin, my xmax, pitch -> nx,
 			pitch -> dx, pitch -> x1);
 		for (long i = 1; i <= thy nx; i ++) {
-			if (pitch -> frame [i]. candidate [1]. frequency == 0) {
-				thy z [1] [i] = -200;
+			if (pitch -> frame [i]. candidate [1]. frequency == 0.0) {
+				thy z [1] [i] = -200.0;
 			} else {
 				double r = pitch -> frame [i]. candidate [1]. strength;
-				thy z [1] [i] = r <= 1e-15 ? -150 : r > 1 - 1e-15 ? 150 : 10 * log10 (r / (1 - r));
+				thy z [1] [i] = ( r <= 1e-15 ? -150.0 : r > 1.0 - 1e-15 ? 150.0 : 10.0 * log10 (r / (1.0 - r)) );
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": harmonicity analysis (cc) not performed.");
 	}
diff --git a/fon/Sound_to_Harmonicity.h b/fon/Sound_to_Harmonicity.h
index 5cbf5db..960a8e4 100644
--- a/fon/Sound_to_Harmonicity.h
+++ b/fon/Sound_to_Harmonicity.h
@@ -1,32 +1,31 @@
 /* Sound_to_Harmonicity.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Harmonicity.h"
 
-Harmonicity Sound_to_Harmonicity_ac (Sound me, double dt, double minimumPitch,
+autoHarmonicity Sound_to_Harmonicity_ac (Sound me, double dt, double minimumPitch,
 	double silenceThreshold, double periodsPerWindow);
 
-Harmonicity Sound_to_Harmonicity_cc (Sound me, double dt, double minimumPitch,
+autoHarmonicity Sound_to_Harmonicity_cc (Sound me, double dt, double minimumPitch,
 	double silenceThreshold, double periodsPerWindow);
 
-Matrix Sound_to_Harmonicity_GNE (Sound me,
+autoMatrix Sound_to_Harmonicity_GNE (Sound me,
 	double fmin,   /* 500 Hz */
 	double fmax,   /* 4500 Hz */
 	double bandwidth,  /* 1000 Hz */
diff --git a/fon/Sound_to_Harmonicity_GNE.cpp b/fon/Sound_to_Harmonicity_GNE.cpp
index c62c721..e621004 100644
--- a/fon/Sound_to_Harmonicity_GNE.cpp
+++ b/fon/Sound_to_Harmonicity_GNE.cpp
@@ -1,27 +1,19 @@
 /* Sound_to_Harmonicity_GNE.cpp
  *
- * Copyright (C) 1999-2011,2015 Paul Boersma
+ * Copyright (C) 1999-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2004/11/22 simplified Sound_to_Spectrum ()
- * pb 2008/01/19 double
- * pb 2011/06/13 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* a replication of:
@@ -38,8 +30,8 @@
 
 static void bandFilter (Spectrum me, double fmid, double bandwidth) {
 	double *re = my z [1], *im = my z [2];
-	double fmin = fmid - bandwidth / 2, fmax = fmid + bandwidth / 2;
-	double twopibybandwidth = 2 * NUMpi / bandwidth;
+	double fmin = fmid - bandwidth / 2.0, fmax = fmid + bandwidth / 2.0;
+	double twopibybandwidth = 2.0 * NUMpi / bandwidth;
 	for (long col = 1; col <= my nx; col ++) {
 		double x = my x1 + (col - 1) * my dx;
 		if (x < fmin || x > fmax) {
@@ -53,17 +45,17 @@ static void bandFilter (Spectrum me, double fmid, double bandwidth) {
 	}
 }
 
-Matrix Sound_to_Harmonicity_GNE (Sound me,
-	double fmin,   /* 500 Hz */
-	double fmax,   /* 4500 Hz */
-	double bandwidth,  /* 1000 Hz */
-	double step)   /* 80 Hz */
+autoMatrix Sound_to_Harmonicity_GNE (Sound me,
+	double fmin,   // 500 Hz
+	double fmax,   // 4500 Hz
+	double bandwidth,  // 1000 Hz
+	double step)   // 80 Hz
 {
 	try {
 		autoSound envelope [1+100];
 		long nenvelopes = (long) floor ((fmax - fmin) / step);
 		for (long ienvelope = 1; ienvelope <= 100; ienvelope ++)
-			Melder_assert (envelope [ienvelope].peek() == NULL);
+			Melder_assert (! envelope [ienvelope].get());
 
 		/*
 		 * Step 1: down-sampling to 10 kHz,
@@ -71,7 +63,7 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 		 * (since the human voice does not contain much above 5 kHz).
 		 */
 		autoSound original10k = Sound_resample (me, 10000, 500);
-		Vector_subtractMean (original10k.peek());
+		Vector_subtractMean (original10k.get());
 		double duration = my xmax - my xmin;
 
 		/*
@@ -86,10 +78,10 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 		 * in the LPC object of the high frequencies, so that inverse
 		 * filtering would yield weakened high frequencies.
 		 */
-		autoLPC lpc = Sound_to_LPC_auto (original10k.peek(), 13, 30e-3, 10e-3, 1e9);
-		autoSound flat = LPC_and_Sound_filterInverse (lpc.peek(), original10k.peek());
-		autoSpectrum flatSpectrum = Sound_to_Spectrum (flat.peek(), TRUE);
-		autoSpectrum hilbertSpectrum = Data_copy (flatSpectrum.peek());
+		autoLPC lpc = Sound_to_LPC_auto (original10k.get(), 13, 30e-3, 10e-3, 1e9);
+		autoSound flat = LPC_and_Sound_filterInverse (lpc.get(), original10k.get());
+		autoSpectrum flatSpectrum = Sound_to_Spectrum (flat.get(), true);
+		autoSpectrum hilbertSpectrum = Data_copy (flatSpectrum.get());
 		for (long col = 1; col <= hilbertSpectrum -> nx; col ++) {
 			hilbertSpectrum -> z [1] [col] = flatSpectrum -> z [2] [col];
 			hilbertSpectrum -> z [2] [col] = - flatSpectrum -> z [1] [col];
@@ -101,24 +93,25 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 			/*
 			 * Step 3: calculate Hilbert envelopes of bands.
 			 */
-			autoSpectrum bandSpectrum = Data_copy (flatSpectrum.peek());
-			autoSpectrum hilbertBandSpectrum = Data_copy (hilbertSpectrum.peek());
+			autoSpectrum bandSpectrum = Data_copy (flatSpectrum.get());
+			autoSpectrum hilbertBandSpectrum = Data_copy (hilbertSpectrum.get());
 			/*
 			 * 3a: Filter both the spectrum of the original flat sound and its Hilbert transform.
 			 */
-			bandFilter (bandSpectrum.peek(), fmid, bandwidth);
-			bandFilter (hilbertBandSpectrum.peek(), fmid, bandwidth);
+			bandFilter (bandSpectrum.get(), fmid, bandwidth);
+			bandFilter (hilbertBandSpectrum.get(), fmid, bandwidth);
 			/*
 			 * 3b: Create both the band-filtered flat sound and its Hilbert transform.
 			 */
-			autoSound band = Spectrum_to_Sound (bandSpectrum.peek());
+			autoSound band = Spectrum_to_Sound (bandSpectrum.get());
 			/*if (graphics) {
-				Graphics_clearWs (graphics);
-				Spectrum_draw (bandSpectrum, graphics, 0, 5000, 0, 0, TRUE);
+				Graphics_beginMovieFrame (graphics, & Graphics_WHITE);
+				Spectrum_draw (bandSpectrum, graphics, 0, 5000, 0, 0, true);
+				Graphics_endMovieFrame (graphics, 0.0);
 			}*/
 			Melder_monitor (ienvelope / (nenvelopes + 1.0), U"Computing Hilbert envelope ", ienvelope, U"...");
-			autoSound hilbertBand = Spectrum_to_Sound (hilbertBandSpectrum.peek());
-			envelope [ienvelope].reset (Sound_extractPart (band.peek(), 0, duration, kSound_windowShape_RECTANGULAR, 1.0, TRUE));
+			autoSound hilbertBand = Spectrum_to_Sound (hilbertBandSpectrum.get());
+			envelope [ienvelope] = Sound_extractPart (band.get(), 0, duration, kSound_windowShape_RECTANGULAR, 1.0, true);
 			/*
 			 * 3c: Compute the Hilbert envelope of the band-passed flat signal.
 			 */
@@ -126,7 +119,7 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 				double self = envelope [ienvelope] -> z [1] [col], other = hilbertBand -> z [1] [col];
 				envelope [ienvelope] -> z [1] [col] = sqrt (self * self + other * other);
 			}
-			Vector_subtractMean (envelope [ienvelope].peek());
+			Vector_subtractMean (envelope [ienvelope].get());
 			/*
 			 * Next band.
 			 */
@@ -141,11 +134,11 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 		autoMatrix cc = Matrix_createSimple (nenvelopes, nenvelopes);
 		for (long row = 2; row <= nenvelopes; row ++) {
 			for (long col = 1; col <= row - 1; col ++) {
-				autoSound crossCorrelation = Sounds_crossCorrelate_short (envelope [row].peek(), envelope [col].peek(), -3.1e-4, 3.1e-4, TRUE);
+				autoSound crossCorrelation = Sounds_crossCorrelate_short (envelope [row].get(), envelope [col].get(), -3.1e-4, 3.1e-4, true);
 				/*
 				 * Step 5: the maximum of each correlation function
 				 */
-				double ccmax = Vector_getMaximum (crossCorrelation.peek(), 0, 0, 0);
+				double ccmax = Vector_getMaximum (crossCorrelation.get(), 0.0, 0.0, 0);
 				cc -> z [row] [col] = ccmax;
 			}
 		}
@@ -155,13 +148,13 @@ Matrix Sound_to_Harmonicity_GNE (Sound me,
 		 */	
 		for (long row = 2; row <= nenvelopes; row ++) {
 			for (long col = 1; col <= row - 1; col ++) {
-				if (labs (row - col) < bandwidth / 2 / step) {
+				if (labs (row - col) < bandwidth / 2.0 / step) {
 					cc -> z [row] [col] = 0.0;
 				}
 			}
 		}
 
-		return cc.transfer();
+		return cc;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Harmonicity (GNE).");
 	}
diff --git a/fon/Sound_to_Intensity.cpp b/fon/Sound_to_Intensity.cpp
index 0372457..40421c0 100644
--- a/fon/Sound_to_Intensity.cpp
+++ b/fon/Sound_to_Intensity.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_Intensity.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -34,7 +33,7 @@
 
 #include "Sound_to_Intensity.h"
 
-static Intensity Sound_to_Intensity_ (Sound me, double minimumPitch, double timeStep, int subtractMeanPressure) {
+static autoIntensity Sound_to_Intensity_ (Sound me, double minimumPitch, double timeStep, int subtractMeanPressure) {
 	try {
 		/*
 		 * Preconditions.
@@ -71,7 +70,7 @@ static Intensity Sound_to_Intensity_ (Sound me, double minimumPitch, double time
 		}
 		autoIntensity thee = Intensity_create (my xmin, my xmax, numberOfFrames, timeStep, thyFirstTime);
 		for (long iframe = 1; iframe <= numberOfFrames; iframe ++) {
-			double midTime = Sampled_indexToX (thee.peek(), iframe);
+			double midTime = Sampled_indexToX (thee.get(), iframe);
 			long midSample = Sampled_xToNearestIndex (me, midTime);
 			long leftSample = midSample - halfWindowSamples, rightSample = midSample + halfWindowSamples;
 			double sumxw = 0.0, sumw = 0.0, intensity;
@@ -101,29 +100,26 @@ static Intensity Sound_to_Intensity_ (Sound me, double minimumPitch, double time
 			intensity /= 4e-10;
 			thy z [1] [iframe] = intensity < 1e-30 ? -300 : 10 * log10 (intensity);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": intensity analysis not performed.");
 	}
 }
 
-Intensity Sound_to_Intensity (Sound me, double minimumPitch, double timeStep, int subtractMeanPressure) {
+autoIntensity Sound_to_Intensity (Sound me, double minimumPitch, double timeStep, int subtractMeanPressure) {
 	bool veryAccurate = false;
 	if (veryAccurate) {
 		autoSound up = Sound_upsample (me);   // because squaring doubles the frequency content, i.e. you get super-Nyquist components
-		autoIntensity thee = Sound_to_Intensity_ (up.peek(), minimumPitch, timeStep, subtractMeanPressure);
-		return thee.transfer();
+		return Sound_to_Intensity_ (up.get(), minimumPitch, timeStep, subtractMeanPressure);
 	} else {
-		autoIntensity thee = Sound_to_Intensity_ (me, minimumPitch, timeStep, subtractMeanPressure);
-		return thee.transfer();
+		return Sound_to_Intensity_ (me, minimumPitch, timeStep, subtractMeanPressure);
 	}
 }
 
-IntensityTier Sound_to_IntensityTier (Sound me, double minimumPitch, double timeStep, int subtractMean) {
+autoIntensityTier Sound_to_IntensityTier (Sound me, double minimumPitch, double timeStep, int subtractMean) {
 	try {
 		autoIntensity intensity = Sound_to_Intensity (me, minimumPitch, timeStep, subtractMean);
-		autoIntensityTier thee = Intensity_downto_IntensityTier (intensity.peek());
-		return thee.transfer();
+		return Intensity_downto_IntensityTier (intensity.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": no IntensityTier created.");
 	}
diff --git a/fon/Sound_to_Intensity.h b/fon/Sound_to_Intensity.h
index 1cbdda4..d00bdf3 100644
--- a/fon/Sound_to_Intensity.h
+++ b/fon/Sound_to_Intensity.h
@@ -1,27 +1,26 @@
 /* Sound_to_Intensity.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Intensity.h"
 #include "IntensityTier.h"
 
-Intensity Sound_to_Intensity (Sound me, double minimumPitch, double timeStep, int subtractMean);
+autoIntensity Sound_to_Intensity (Sound me, double minimumPitch, double timeStep, int subtractMean);
 /*
 	Function:
 		smooth away the periodic part of a signal,
@@ -46,6 +45,6 @@ Intensity Sound_to_Intensity (Sound me, double minimumPitch, double timeStep, in
 		actual window duration = 64 ms;
 */
 
-IntensityTier Sound_to_IntensityTier (Sound me, double minimumPitch, double timeStep, int subtractMean);
+autoIntensityTier Sound_to_IntensityTier (Sound me, double minimumPitch, double timeStep, int subtractMean);
 
 /* End of file Sound_to_Intensity.h */
diff --git a/fon/Sound_to_Pitch.cpp b/fon/Sound_to_Pitch.cpp
index 3d98c48..bda78fb 100644
--- a/fon/Sound_to_Pitch.cpp
+++ b/fon/Sound_to_Pitch.cpp
@@ -1,20 +1,19 @@
 /* Sound_to_Pitch.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -258,7 +257,7 @@ Thing_define (Sound_into_Pitch_Args, Thing) { public:
 
 Thing_implement (Sound_into_Pitch_Args, Thing, 0);
 
-static Sound_into_Pitch_Args Sound_into_Pitch_Args_create (Sound sound, Pitch pitch,
+static autoSound_into_Pitch_Args Sound_into_Pitch_Args_create (Sound sound, Pitch pitch,
 	long firstFrame, long lastFrame, double minimumPitch, int maxnCandidates, int method,
 	double voicingThreshold, double octaveCost,
 	double dt_window, long nsamp_window, long halfnsamp_window, long maximumLag, long nsampFFT,
@@ -290,7 +289,7 @@ static Sound_into_Pitch_Args Sound_into_Pitch_Args_create (Sound sound, Pitch pi
 	my windowR = windowR;
 	my isMainThread = isMainThread;
 	my cancelled = cancelled;
-	return me.transfer();
+	return me;
 }
 
 MelderThread_MUTEX (mutex);
@@ -341,7 +340,7 @@ static MelderThread_RETURN_TYPE Sound_into_Pitch (Sound_into_Pitch_Args me)
 	MelderThread_RETURN;
 }
 
-Pitch Sound_to_Pitch_any (Sound me,
+autoPitch Sound_to_Pitch_any (Sound me,
 	double dt, double minimumPitch, double periodsPerWindow, int maxnCandidates,
 	int method,
 	double silenceThreshold, double voicingThreshold,
@@ -458,7 +457,7 @@ Pitch Sound_to_Pitch_any (Sound me,
 			}
 		}
 		if (globalPeak == 0.0) {
-			return thee.transfer();
+			return thee;
 		}
 
 		autoNUMvector <double> window;
@@ -535,34 +534,34 @@ Pitch Sound_to_Pitch_any (Sound me,
 		volatile int cancelled = 0;
 		for (int ithread = 1; ithread <= numberOfThreads; ithread ++) {
 			if (ithread == numberOfThreads) lastFrame = nFrames;
-			args [ithread - 1].reset (Sound_into_Pitch_Args_create (me, thee.peek(),
+			args [ithread - 1] = Sound_into_Pitch_Args_create (me, thee.get(),
 				firstFrame, lastFrame, minimumPitch, maxnCandidates, method,
 				voicingThreshold, octaveCost,
 				dt_window, nsamp_window, halfnsamp_window, maximumLag,
 				nsampFFT, nsamp_period, halfnsamp_period, brent_ixmax, brent_depth,
 				globalPeak, window.peek(), windowR.peek(),
-				ithread == numberOfThreads, & cancelled));
+				ithread == numberOfThreads, & cancelled);
 			firstFrame = lastFrame + 1;
 			lastFrame += numberOfFramesPerThread;
 		}
 		MelderThread_run (Sound_into_Pitch, args, numberOfThreads);
 
 		Melder_progress (0.95, U"Sound to Pitch: path finder");
-		Pitch_pathFinder (thee.peek(), silenceThreshold, voicingThreshold,
+		Pitch_pathFinder (thee.get(), silenceThreshold, voicingThreshold,
 			octaveCost, octaveJumpCost, voicedUnvoicedCost, ceiling, Melder_debug == 31 ? true : false);
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": pitch analysis not performed.");
 	}
 }
 
-Pitch Sound_to_Pitch (Sound me, double timeStep, double minimumPitch, double maximumPitch) {
+autoPitch Sound_to_Pitch (Sound me, double timeStep, double minimumPitch, double maximumPitch) {
 	return Sound_to_Pitch_ac (me, timeStep, minimumPitch,
-		3.0, 15, FALSE, 0.03, 0.45, 0.01, 0.35, 0.14, maximumPitch);
+		3.0, 15, false, 0.03, 0.45, 0.01, 0.35, 0.14, maximumPitch);
 }
 
-Pitch Sound_to_Pitch_ac (Sound me,
+autoPitch Sound_to_Pitch_ac (Sound me,
 	double dt, double minimumPitch, double periodsPerWindow, int maxnCandidates, int accurate,
 	double silenceThreshold, double voicingThreshold,
 	double octaveCost, double octaveJumpCost, double voicedUnvoicedCost, double ceiling)
@@ -571,7 +570,7 @@ Pitch Sound_to_Pitch_ac (Sound me,
 		silenceThreshold, voicingThreshold, octaveCost, octaveJumpCost, voicedUnvoicedCost, ceiling);
 }
 
-Pitch Sound_to_Pitch_cc (Sound me,
+autoPitch Sound_to_Pitch_cc (Sound me,
 	double dt, double minimumPitch, double periodsPerWindow, int maxnCandidates, int accurate,
 	double silenceThreshold, double voicingThreshold,
 	double octaveCost, double octaveJumpCost, double voicedUnvoicedCost, double ceiling)
diff --git a/fon/Sound_to_Pitch.h b/fon/Sound_to_Pitch.h
index 2132353..aff7e5c 100644
--- a/fon/Sound_to_Pitch.h
+++ b/fon/Sound_to_Pitch.h
@@ -1,42 +1,41 @@
 /* Sound_to_Pitch.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Pitch.h"
 
-Pitch Sound_to_Pitch (Sound me, double timeStep,
+autoPitch Sound_to_Pitch (Sound me, double timeStep,
 	double minimumPitch, double maximumPitch);
 /* Calls Sound_to_Pitch_ac with default arguments. */
 
-Pitch Sound_to_Pitch_ac (Sound me, double timeStep, double minimumPitch,
+autoPitch Sound_to_Pitch_ac (Sound me, double timeStep, double minimumPitch,
 	double periodsPerWindow, int maxnCandidates, int accurate,
 	double silenceThreshold, double voicingThreshold, double octaveCost,
 	double octaveJumpCost, double voicedUnvoicedCost, double maximumPitch);
 /* Calls Sound_to_Pitch_any with AC method. */
 
-Pitch Sound_to_Pitch_cc (Sound me, double timeStep, double minimumPitch,
+autoPitch Sound_to_Pitch_cc (Sound me, double timeStep, double minimumPitch,
 	double periodsPerWindow, int maxnCandidates, int accurate,
 	double silenceThreshold, double voicingThreshold, double octaveCost,
 	double octaveJumpCost, double voicedUnvoicedCost, double maximumPitch);
 /* Calls Sound_to_Pitch_any with FCC method. */
 
-Pitch Sound_to_Pitch_any (Sound me,
+autoPitch Sound_to_Pitch_any (Sound me,
 
 	double dt,                 /* time step (seconds); 0.0 = automatic = periodsPerWindow / minimumPitch / 4 */
 	double minimumPitch,       /* (Hz) */
@@ -57,7 +56,7 @@ Pitch Sound_to_Pitch_any (Sound me,
 		minimumPitch > 0.0;
 		maxnCandidates >= 2;
 	Return value:
-		the resulting pitch contour, or NULL in case of failure.
+		the resulting pitch contour.
 	Failures:
 		Out of memory.
 		Minimum frequency too low.
diff --git a/fon/Sound_to_PointProcess.cpp b/fon/Sound_to_PointProcess.cpp
index d79c229..4b74acd 100644
--- a/fon/Sound_to_PointProcess.cpp
+++ b/fon/Sound_to_PointProcess.cpp
@@ -1,36 +1,26 @@
 /* Sound_to_PointProcess.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2003/02/26 Sound_to_PointProcess_peaks
- * pb 2004/07/11 default time steps in Sound_to_Pitch
- * pb 2007/01/28 made compatible with stereo sounds
- * pb 2008/01/19 double
- * pb 2011/03/09 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound_to_PointProcess.h"
 #include "Sound_to_Pitch.h"
 #include "Pitch_to_PointProcess.h"
 
-PointProcess Sound_to_PointProcess_extrema (Sound me, long channel, int interpolation, bool includeMaxima, bool includeMinima) {
+autoPointProcess Sound_to_PointProcess_extrema (Sound me, long channel, int interpolation, bool includeMaxima, bool includeMinima) {
 	try {
 		/*
 		 * Pass 1: count the extrema. There may be a maximum and minimum in the same interval!
@@ -54,28 +44,28 @@ PointProcess Sound_to_PointProcess_extrema (Sound me, long channel, int interpol
 			if (includeMaxima && y [i] > y [i - 1] && y [i] >= y [i + 1]) {
 				(void) NUMimproveMaximum (y, my nx, i, interpolation, & i_real);
 				time = my x1 + (i_real - 1.0) * my dx;
-				PointProcess_addPoint (thee.peek(), time);
+				PointProcess_addPoint (thee.get(), time);
 			}
 			if (includeMinima && y [i] <= y [i - 1] && y [i] < y [i + 1]) {
 				(void) NUMimproveMinimum (y, my nx, i, interpolation, & i_real);
 				time = my x1 + (i_real - 1.0) * my dx;
-				PointProcess_addPoint (thee.peek(), time);
+				PointProcess_addPoint (thee.get(), time);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": extrema not computed.");
 	}
 }
 
-PointProcess Sound_to_PointProcess_maxima (Sound me, long channel, int interpolation)
+autoPointProcess Sound_to_PointProcess_maxima (Sound me, long channel, int interpolation)
 	{ return Sound_to_PointProcess_extrema (me, channel, interpolation, true, false); }
-PointProcess Sound_to_PointProcess_minima (Sound me, long channel, int interpolation)
+autoPointProcess Sound_to_PointProcess_minima (Sound me, long channel, int interpolation)
 	{ return Sound_to_PointProcess_extrema (me, channel, interpolation, false, true); }
-PointProcess Sound_to_PointProcess_allExtrema (Sound me, long channel, int interpolation)
+autoPointProcess Sound_to_PointProcess_allExtrema (Sound me, long channel, int interpolation)
 	{ return Sound_to_PointProcess_extrema (me, channel, interpolation, true, true); }
 
-PointProcess Sound_to_PointProcess_zeroes (Sound me, long channel, bool includeRaisers, bool includeFallers) {
+autoPointProcess Sound_to_PointProcess_zeroes (Sound me, long channel, bool includeRaisers, bool includeFallers) {
 	try {
 		/*
 		 * Pass 1: count the zeroes.
@@ -99,30 +89,30 @@ PointProcess Sound_to_PointProcess_zeroes (Sound me, long channel, bool includeR
 				(includeFallers && y [i - 1] >= 0.0 && y [i] < 0.0))
 			{
 				double time = Sampled_indexToX (me, i - 1) + my dx * y [i - 1] / (y [i - 1] - y [i]);   // linear
-				PointProcess_addPoint (thee.peek(), time);
+				PointProcess_addPoint (thee.get(), time);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": zeroes not computed.");
 	}
 }
 
-PointProcess Sound_to_PointProcess_periodic_cc (Sound me, double fmin, double fmax) {
+autoPointProcess Sound_to_PointProcess_periodic_cc (Sound me, double fmin, double fmax) {
 	try {
 		autoPitch pitch = Sound_to_Pitch (me, 0.0, fmin, fmax);
-		autoPointProcess thee = Sound_Pitch_to_PointProcess_cc (me, pitch.peek());
-		return thee.transfer();
+		autoPointProcess thee = Sound_Pitch_to_PointProcess_cc (me, pitch.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": periodic pulses (cc) not computed.");
 	}
 }
 
-PointProcess Sound_to_PointProcess_periodic_peaks (Sound me, double fmin, double fmax, bool includeMaxima, bool includeMinima) {
+autoPointProcess Sound_to_PointProcess_periodic_peaks (Sound me, double fmin, double fmax, bool includeMaxima, bool includeMinima) {
 	try {
 		autoPitch pitch = Sound_to_Pitch (me, 0.0, fmin, fmax);
-		autoPointProcess thee = Sound_Pitch_to_PointProcess_peaks (me, pitch.peek(), includeMaxima, includeMinima);
-		return thee.transfer();
+		autoPointProcess thee = Sound_Pitch_to_PointProcess_peaks (me, pitch.get(), includeMaxima, includeMinima);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": periodic pulses (peaks) not computed.");
 	}
diff --git a/fon/Sound_to_PointProcess.h b/fon/Sound_to_PointProcess.h
index 847103d..ce56102 100644
--- a/fon/Sound_to_PointProcess.h
+++ b/fon/Sound_to_PointProcess.h
@@ -1,34 +1,33 @@
 /* Sound_to_PointProcess.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "PointProcess.h"
 
-PointProcess Sound_to_PointProcess_extrema (Sound me, long channel, int interpolation, bool includeMaxima, bool includeMinima);
-PointProcess Sound_to_PointProcess_maxima (Sound me, long channel, int interpolation);
-PointProcess Sound_to_PointProcess_minima (Sound me, long channel, int interpolation);
-PointProcess Sound_to_PointProcess_allExtrema (Sound me, long channel, int interpolation);
+autoPointProcess Sound_to_PointProcess_extrema (Sound me, long channel, int interpolation, bool includeMaxima, bool includeMinima);
+autoPointProcess Sound_to_PointProcess_maxima (Sound me, long channel, int interpolation);
+autoPointProcess Sound_to_PointProcess_minima (Sound me, long channel, int interpolation);
+autoPointProcess Sound_to_PointProcess_allExtrema (Sound me, long channel, int interpolation);
 
-PointProcess Sound_to_PointProcess_zeroes (Sound me, long channel, bool includeRaisers, bool includeFallers);
+autoPointProcess Sound_to_PointProcess_zeroes (Sound me, long channel, bool includeRaisers, bool includeFallers);
 
-PointProcess Sound_to_PointProcess_periodic_cc (Sound me, double fmin, double fmax);
+autoPointProcess Sound_to_PointProcess_periodic_cc (Sound me, double fmin, double fmax);
 
-PointProcess Sound_to_PointProcess_periodic_peaks (Sound me, double fmin, double fmax, bool includeMaxima, bool includeMinima);
+autoPointProcess Sound_to_PointProcess_periodic_peaks (Sound me, double fmin, double fmax, bool includeMaxima, bool includeMinima);
 
 /* End of file Sound_to_PointProcess.h */
diff --git a/fon/Spectrogram.cpp b/fon/Spectrogram.cpp
index a78bea8..33f2c34 100644
--- a/fon/Spectrogram.cpp
+++ b/fon/Spectrogram.cpp
@@ -1,20 +1,19 @@
 /* Spectrogram.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrogram.h"
@@ -22,7 +21,7 @@
 Thing_implement (Spectrogram, Matrix, 2);
 
 void structSpectrogram :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Time domain:");
 	MelderInfo_writeLine (U"   Start time: ", xmin, U" seconds");
 	MelderInfo_writeLine (U"   End time: ", xmax, U" seconds");
@@ -41,13 +40,13 @@ void structSpectrogram :: v_info () {
 	MelderInfo_writeLine (U"   First frequency band around (bin centre at): ", y1, U" Hz");
 }
 
-Spectrogram Spectrogram_create (double tmin, double tmax, long nt, double dt, double t1,
+autoSpectrogram Spectrogram_create (double tmin, double tmax, long nt, double dt, double t1,
 	double fmin, double fmax, long nf, double df, double f1)
 {
 	try {
 		autoSpectrogram me = Thing_new (Spectrogram);
-		Matrix_init (me.peek(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
-		return me.transfer();
+		Matrix_init (me.get(), tmin, tmax, nt, dt, t1, fmin, fmax, nf, df, f1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Spectrogram not created.");
 	}
@@ -69,9 +68,9 @@ void Spectrogram_paintInside (Spectrogram me, Graphics g, double tmin, double tm
 	for (long ifreq = ifmin; ifreq <= ifmax; ifreq ++) {
 		preemphasisFactor [ifreq] = (preemphasis / NUMln2) * log (ifreq * my dy / 1000.0);
 		for (long itime = itmin; itime <= itmax; itime ++) {
-			double value = my z [ifreq] [itime];   /* Power. */
-			value = (10.0/NUMln10) * log ((value + 1e-30) / 4.0e-10) + preemphasisFactor [ifreq];   /* dB */
-			if (value > dynamicFactor [itime]) dynamicFactor [itime] = value;   /* Local maximum. */
+			double value = my z [ifreq] [itime];   // power
+			value = (10.0/NUMln10) * log ((value + 1e-30) / 4.0e-10) + preemphasisFactor [ifreq];   // dB
+			if (value > dynamicFactor [itime]) dynamicFactor [itime] = value;   // local maximum
 			my z [ifreq] [itime] = value;
 		}
 	}
@@ -113,28 +112,28 @@ void Spectrogram_paint (Spectrogram me, Graphics g,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 0);
-		Graphics_marksLeft (g, 2, 1, 1, 0);
-		Graphics_textLeft (g, 1, U"Frequency (Hz)");
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
+		Graphics_marksLeft (g, 2, true, true, false);
+		Graphics_textLeft (g, true, U"Frequency (Hz)");
 	}
 }
 
-Spectrogram Matrix_to_Spectrogram (Matrix me) {
+autoSpectrogram Matrix_to_Spectrogram (Matrix me) {
 	try {
 		autoSpectrogram thee = Spectrogram_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrogram.");
 	}
 }
 
-Matrix Spectrogram_to_Matrix (Spectrogram me) {
+autoMatrix Spectrogram_to_Matrix (Spectrogram me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMmatrix_copyElements (my z, thy z, 1, my ny, 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
diff --git a/fon/Spectrogram.h b/fon/Spectrogram.h
index 9dd4edb..59f83b6 100644
--- a/fon/Spectrogram.h
+++ b/fon/Spectrogram.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 David Weenink & Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Matrix.h"
@@ -42,7 +41,7 @@ Thing_define (Spectrogram, Matrix) {
 	z [iy] [ix]		// Power spectrum density.
 */
 
-Spectrogram Spectrogram_create (double tmin, double tmax, long nt, double dt, double t1,
+autoSpectrogram Spectrogram_create (double tmin, double tmax, long nt, double dt, double t1,
 					double fmin, double fmax, long nf, double df, double f1);
 /*
 	Function:
@@ -83,18 +82,16 @@ void Spectrogram_paint (Spectrogram me, Graphics g,
 			a boolean that determines if a box, ticks, numbers, and text are written in the margins.
 */
 
-Spectrogram Matrix_to_Spectrogram (Matrix me);
+autoSpectrogram Matrix_to_Spectrogram (Matrix me);
 /*
 	Create a Spectrogram from a Matrix,
 	with deep copy of all its attributes, except class information and methods.
-	Return NULL if out of memory.  
 */
 
-Matrix Spectrogram_to_Matrix (Spectrogram me);
+autoMatrix Spectrogram_to_Matrix (Spectrogram me);
 /*
 	Create a Matrix from a Spectrogram,
 	with deep copy of all its attributes, except class information and methods.
-	Return NULL if out of memory.  
 */
 
 /* End of file Spectrogram.h */
diff --git a/fon/SpectrogramEditor.cpp b/fon/SpectrogramEditor.cpp
index 5a5f1d4..b58497b 100644
--- a/fon/SpectrogramEditor.cpp
+++ b/fon/SpectrogramEditor.cpp
@@ -1,20 +1,19 @@
 /* SpectrogramEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SpectrogramEditor.h"
@@ -24,11 +23,11 @@ Thing_implement (SpectrogramEditor, FunctionEditor, 0);
 void structSpectrogramEditor :: v_draw () {
 	Spectrogram spectrogram = (Spectrogram) our data;
 
-	Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
-	Graphics_rectangle (our d_graphics, 0, 1, 0, 1);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 
 	long itmin, itmax;
 	Sampled_getWindowSamples (spectrogram, our d_startWindow, our d_endWindow, & itmin, & itmax);
@@ -38,34 +37,34 @@ void structSpectrogramEditor :: v_draw () {
 	 */
 	our maximum = spectrogram -> ymax;
 
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, 0.0, our maximum);
-	Spectrogram_paintInside (spectrogram, our d_graphics, our d_startWindow, our d_endWindow, 0, 0, 0.0, TRUE,
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0.0, our maximum);
+	Spectrogram_paintInside (spectrogram, our d_graphics.get(), our d_startWindow, our d_endWindow, 0, 0, 0.0, true,
 		 60, 6.0, 0);
 
 	/*
 	 * Horizontal scaling lines.
 	 */
-	Graphics_setWindow (our d_graphics, 0.0, 1.0, 0.0, our maximum);
-	Graphics_setTextAlignment (our d_graphics, Graphics_RIGHT, Graphics_HALF);
-	Graphics_setColour (our d_graphics, Graphics_RED);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, our maximum);
+	Graphics_setTextAlignment (our d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+	Graphics_setColour (our d_graphics.get(), Graphics_RED);
 	long df = 1000;
 	for (long f = df; f <= our maximum; f += df) {
-		Graphics_line (our d_graphics, 0.0, f, 1.0, f);
-		Graphics_text (our d_graphics, -0.01, f,   f, U" Hz");
+		Graphics_line (our d_graphics.get(), 0.0, f, 1.0, f);
+		Graphics_text (our d_graphics.get(), -0.01, f,   f, U" Hz");
 	}
 
 	/*
 	 * Vertical cursor lines.
 	 */
-	Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, 0.0, our maximum);
+	Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, 0.0, our maximum);
 	if (our d_startSelection > our d_startWindow && our d_startSelection < our d_endWindow)
-		Graphics_line (our d_graphics, our d_startSelection, 0, our d_startSelection, our maximum);
+		Graphics_line (our d_graphics.get(), our d_startSelection, 0, our d_startSelection, our maximum);
 	if (our d_endSelection > our d_startWindow && d_endSelection < d_endWindow)
-		Graphics_line (our d_graphics, our d_endSelection, 0, our d_endSelection, our maximum);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
+		Graphics_line (our d_graphics.get(), our d_endSelection, 0, our d_endSelection, our maximum);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
 }
 
-int structSpectrogramEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structSpectrogramEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	Spectrogram spectrogram = (Spectrogram) our data;
 	/*double frequency = yWC * our maximum;*/
 	long bestFrame;
@@ -77,12 +76,12 @@ int structSpectrogramEditor :: v_click (double xWC, double yWC, bool shiftKeyPre
 	return our SpectrogramEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);
 }
 
-SpectrogramEditor SpectrogramEditor_create (const char32 *title, Spectrogram data) {
+autoSpectrogramEditor SpectrogramEditor_create (const char32 *title, Spectrogram data) {
 	try {
 		autoSpectrogramEditor me = Thing_new (SpectrogramEditor);
-		FunctionEditor_init (me.peek(), title, data);
+		FunctionEditor_init (me.get(), title, data);
 		my maximum = 10000.0;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Spectrogram window not created.");
 	}
diff --git a/fon/SpectrogramEditor.h b/fon/SpectrogramEditor.h
index 70039ba..6b822e7 100644
--- a/fon/SpectrogramEditor.h
+++ b/fon/SpectrogramEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -27,11 +26,11 @@ Thing_define (SpectrogramEditor, FunctionEditor) {
 
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 };
 
-SpectrogramEditor SpectrogramEditor_create (const char32 *title, Spectrogram data);
+autoSpectrogramEditor SpectrogramEditor_create (const char32 *title, Spectrogram data);
 
 /* End of file SpectrogramEditor.h */
 #endif
diff --git a/fon/Spectrum.cpp b/fon/Spectrum.cpp
index 19a37a3..e22bf30 100644
--- a/fon/Spectrum.cpp
+++ b/fon/Spectrum.cpp
@@ -1,20 +1,19 @@
 /* Spectrum.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -49,7 +48,7 @@
 Thing_implement (Spectrum, Matrix, 2);
 
 void structSpectrum :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Frequency domain:");
 	MelderInfo_writeLine (U"   Lowest frequency: ", xmin, U" Hz");
 	MelderInfo_writeLine (U"   Highest frequency: ", xmax, U" Hz");
@@ -76,31 +75,31 @@ double structSpectrum :: v_getValueAtSample (long isamp, long which, int units)
 		if (units == 1) {
 			return energyDensity;
 		} else {
-			double powerDensity = energyDensity * dx;   /* Pa^2 Hz-2 s-1, after division by approximate duration */
+			double powerDensity = energyDensity * dx;   // Pa^2 Hz-2 s-1, after division by approximate duration
 			if (units == 2) {
 				/* "dB/Hz" */
-				return powerDensity == 0.0 ? -300.0 : 10 * log10 (powerDensity / 4.0e-10);
+				return powerDensity == 0.0 ? -300.0 : 10.0 * log10 (powerDensity / 4.0e-10);
 			}
 		}
 	}
 	return NUMundefined;
 }
 
-Spectrum Spectrum_create (double fmax, long nf) {
+autoSpectrum Spectrum_create (double fmax, long nf) {
 	try {
 		autoSpectrum me = Thing_new (Spectrum);
-		Matrix_init (me.peek(), 0.0, fmax, nf, fmax / (nf - 1), 0.0, 1, 2, 2, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, fmax, nf, fmax / (nf - 1), 0.0, 1.0, 2.0, 2, 1.0, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Spectrum not created.");
 	}
 }
 
 int Spectrum_getPowerDensityRange (Spectrum me, double *minimum, double *maximum) {
-	*minimum = 1e300, *maximum = 0;
+	*minimum = 1e308, *maximum = 0.0;
 	for (long ifreq = 1; ifreq <= my nx; ifreq ++) {
-		double oneSidedPowerSpectralDensity =   /* Pa2 Hz-2 s-1 */
-			2 * (my z [1] [ifreq] * my z [1] [ifreq] + my z [2] [ifreq] * my z [2] [ifreq]) * my dx;
+		double oneSidedPowerSpectralDensity =   // Pa2 Hz-2 s-1
+			2.0 * (my z [1] [ifreq] * my z [1] [ifreq] + my z [2] [ifreq] * my z [2] [ifreq]) * my dx;
 		if (oneSidedPowerSpectralDensity < *minimum) *minimum = oneSidedPowerSpectralDensity;
 		if (oneSidedPowerSpectralDensity > *maximum) *maximum = oneSidedPowerSpectralDensity;
 	}
@@ -111,7 +110,7 @@ int Spectrum_getPowerDensityRange (Spectrum me, double *minimum, double *maximum
 }
 
 void Spectrum_drawInside (Spectrum me, Graphics g, double fmin, double fmax, double minimum, double maximum) {
-	int autoscaling = minimum >= maximum;
+	bool autoscaling = ( minimum >= maximum );
 
 	if (fmax <= fmin) { fmin = my xmin; fmax = my xmax; }
 	long ifmin, ifmax;
@@ -122,13 +121,22 @@ void Spectrum_drawInside (Spectrum me, Graphics g, double fmin, double fmax, dou
 	/*
 	 * First pass: compute power density.
 	 */
-	if (autoscaling) maximum = -1e30;
+	if (autoscaling) maximum = -1e308;
 	for (long ifreq = ifmin; ifreq <= ifmax; ifreq ++) {
 		double y = my v_getValueAtSample (ifreq, 0, 2);
 		if (autoscaling && y > maximum) maximum = y;
 		yWC [ifreq] = y;
 	}
-	if (autoscaling) minimum = maximum - 60;   /* Default dynamic range is 60 dB. */
+	if (autoscaling) {
+		constexpr double defaultDynamicRange_dB { 60.0 };
+		minimum = maximum - defaultDynamicRange_dB;
+		if (minimum == maximum) {   // because infinity minus something is still infinity
+			Graphics_setWindow (g, 0.0, 1.0, 0.0, 1.0);
+			Graphics_setTextAlignment (g, kGraphics_horizontalAlignment_CENTRE, Graphics_HALF);
+			Graphics_text (g, 0.5, 0.5, U"(undefined spectrum values cannot be drawn)");
+			return;
+		}
+	}
 
 	/*
 	 * Second pass: clip.
@@ -148,15 +156,15 @@ void Spectrum_draw (Spectrum me, Graphics g, double fmin, double fmax, double mi
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Frequency (Hz)");
+		Graphics_textBottom (g, true, U"Frequency (Hz)");
 		Graphics_marksBottom (g, 2, true, true, false);
-		Graphics_textLeft (g, 1, U"Sound pressure level (dB/Hz)");
+		Graphics_textLeft (g, true, U"Sound pressure level (dB/Hz)");
 		Graphics_marksLeftEvery (g, 1.0, 20.0, true, true, false);
 	}
 }
 
 void Spectrum_drawLogFreq (Spectrum me, Graphics g, double fmin, double fmax, double minimum, double maximum, int garnish) {
-	int autoscaling = minimum >= maximum;
+	bool autoscaling = ( minimum >= maximum );
 	if (fmax <= fmin) { fmin = my xmin; fmax = my xmax; }
 	long ifmin, ifmax;
 	if (! Matrix_getWindowSamplesX (me, fmin, fmax, & ifmin, & ifmax)) return;
@@ -189,36 +197,36 @@ if(ifmin==1)ifmin=2;  /* BUG */
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Frequency (Hz)");
-		Graphics_marksBottomLogarithmic (g, 3, TRUE, TRUE, FALSE);
-		Graphics_textLeft (g, 1, U"Sound pressure level (dB/Hz)");
-		Graphics_marksLeftEvery (g, 1.0, 20.0, TRUE, TRUE, FALSE);
+		Graphics_textBottom (g, true, U"Frequency (Hz)");
+		Graphics_marksBottomLogarithmic (g, 3, true, true, false);
+		Graphics_textLeft (g, true, U"Sound pressure level (dB/Hz)");
+		Graphics_marksLeftEvery (g, 1.0, 20.0, true, true, false);
 	}
 }
 
-Table Spectrum_downto_Table (Spectrum me, bool includeBinNumbers, bool includeFrequency,
+autoTable Spectrum_downto_Table (Spectrum me, bool includeBinNumbers, bool includeFrequency,
 	bool includeRealPart, bool includeImaginaryPart, bool includeEnergyDensity, bool includePowerDensity)
 {
 	try {
 		autoTable thee = Table_createWithoutColumnNames (my nx,
 			includeBinNumbers + includeFrequency + includeRealPart + includeImaginaryPart + includeEnergyDensity + includePowerDensity);
 		long icol = 0;
-		if (includeBinNumbers) Table_setColumnLabel (thee.peek(), ++ icol, U"bin");
-		if (includeFrequency) Table_setColumnLabel (thee.peek(), ++ icol, U"freq(Hz)");
-		if (includeRealPart) Table_setColumnLabel (thee.peek(), ++ icol, U"re(Pa/Hz)");
-		if (includeImaginaryPart) Table_setColumnLabel (thee.peek(), ++ icol, U"im(Pa/Hz)");
-		if (includeEnergyDensity) Table_setColumnLabel (thee.peek(), ++ icol, U"energy(Pa^2/Hz^2)");
-		if (includePowerDensity) Table_setColumnLabel (thee.peek(), ++ icol, U"pow(dB/Hz)");
+		if (includeBinNumbers) Table_setColumnLabel (thee.get(), ++ icol, U"bin");
+		if (includeFrequency) Table_setColumnLabel (thee.get(), ++ icol, U"freq(Hz)");
+		if (includeRealPart) Table_setColumnLabel (thee.get(), ++ icol, U"re(Pa/Hz)");
+		if (includeImaginaryPart) Table_setColumnLabel (thee.get(), ++ icol, U"im(Pa/Hz)");
+		if (includeEnergyDensity) Table_setColumnLabel (thee.get(), ++ icol, U"energy(Pa^2/Hz^2)");
+		if (includePowerDensity) Table_setColumnLabel (thee.get(), ++ icol, U"pow(dB/Hz)");
 		for (long ibin = 1; ibin <= my nx; ibin ++) {
 			icol = 0;
-			if (includeBinNumbers) Table_setNumericValue (thee.peek(), ibin, ++ icol, ibin);
-			if (includeFrequency) Table_setNumericValue (thee.peek(), ibin, ++ icol, my x1 + (ibin - 1) * my dx);
-			if (includeRealPart) Table_setNumericValue (thee.peek(), ibin, ++ icol, my z [1] [ibin]);
-			if (includeImaginaryPart) Table_setNumericValue (thee.peek(), ibin, ++ icol, my z [2] [ibin]);
-			if (includeEnergyDensity) Table_setNumericValue (thee.peek(), ibin, ++ icol, Sampled_getValueAtSample (me, ibin, 0, 1));
-			if (includePowerDensity) Table_setNumericValue (thee.peek(), ibin, ++ icol, Sampled_getValueAtSample (me, ibin, 0, 2));
+			if (includeBinNumbers) Table_setNumericValue (thee.get(), ibin, ++ icol, ibin);
+			if (includeFrequency) Table_setNumericValue (thee.get(), ibin, ++ icol, my x1 + (ibin - 1) * my dx);
+			if (includeRealPart) Table_setNumericValue (thee.get(), ibin, ++ icol, my z [1] [ibin]);
+			if (includeImaginaryPart) Table_setNumericValue (thee.get(), ibin, ++ icol, my z [2] [ibin]);
+			if (includeEnergyDensity) Table_setNumericValue (thee.get(), ibin, ++ icol, Sampled_getValueAtSample (me, ibin, 0, 1));
+			if (includePowerDensity) Table_setNumericValue (thee.get(), ibin, ++ icol, Sampled_getValueAtSample (me, ibin, 0, 2));
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
@@ -230,35 +238,35 @@ void Spectrum_list (Spectrum me, bool includeBinNumbers, bool includeFrequency,
 	try {
 		autoTable table = Spectrum_downto_Table (me, includeBinNumbers, includeFrequency,
 			includeRealPart, includeImaginaryPart, includeEnergyDensity, includePowerDensity);
-		Table_list (table.peek(), false);
+		Table_list (table.get(), false);
 	} catch (MelderError) {
 		Melder_throw (me, U": not listed.");
 	}
 }
 
-Spectrum Matrix_to_Spectrum (Matrix me) {
+autoSpectrum Matrix_to_Spectrum (Matrix me) {
 	try {
 		if (my ny != 2)
-			Melder_throw (U"Matrix must have exactly 2 rows.");
+			Melder_throw (U"The Matrix should have exactly 2 rows.");
 		autoSpectrum thee = Thing_new (Spectrum);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrum.");
 	}
 }
 
-Matrix Spectrum_to_Matrix (Spectrum me) {
+autoMatrix Spectrum_to_Matrix (Spectrum me) {
 	try {
 		autoMatrix thee = Thing_new (Matrix);
-		my structMatrix :: v_copy (thee.peek());
-		return thee.transfer();
+		my structMatrix :: v_copy (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
+autoSpectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
 	try {
 		/*
 		 * dB-spectrum is log (power).
@@ -266,14 +274,14 @@ Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
 		autoSpectrum dBspectrum = Data_copy (me);
 		double *re = dBspectrum -> z [1], *im = dBspectrum -> z [2];
 		for (long i = 1; i <= dBspectrum -> nx; i ++) {
-			re [i] = log (re [i] * re [i] + im [i] * im [i] + 1e-300);
+			re [i] = log (re [i] * re [i] + im [i] * im [i] + 1e-308);
 			im [i] = 0.0;
 		}
 
 		/*
 		 * Cepstrum is Fourier transform of dB-spectrum.
 		 */
-		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.peek());
+		autoSound cepstrum = Spectrum_to_Sound (dBspectrum.get());
 
 		/*
 		 * Multiply cepstrum by a Gaussian.
@@ -281,13 +289,13 @@ Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
 		double factor = - bandWidth * bandWidth;
 		for (long i = 1; i <= cepstrum -> nx; i ++) {
 			double t = (i - 1) * cepstrum -> dx;
-			cepstrum -> z [1] [i] *= exp (factor * t * t) * ( i == 1 ? 1 : 2 );
+			cepstrum -> z [1] [i] *= exp (factor * t * t) * ( i == 1 ? 1.0 : 2.0 );
 		}
 
 		/*
 		 * Smoothed power spectrum is original power spectrum convolved with a Gaussian.
 		 */
-		autoSpectrum thee = Sound_to_Spectrum (cepstrum.peek(), TRUE);
+		autoSpectrum thee = Sound_to_Spectrum (cepstrum.get(), true);
 
 		/*
 		 * Convert power spectrum back into a "complex" spectrum without phase information.
@@ -297,7 +305,7 @@ Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
 			re [i] = exp (0.5 * re [i]);   // i.e., sqrt (exp (re [i]))
 			im [i] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": cepstral smoothing not computed.");
 	}
@@ -306,7 +314,7 @@ Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth) {
 void Spectrum_passHannBand (Spectrum me, double fmin, double fmax0, double smooth) {
 	double fmax = fmax0 == 0.0 ? my xmax : fmax0;
 	double f1 = fmin - smooth, f2 = fmin + smooth, f3 = fmax - smooth, f4 = fmax + smooth;
-	double halfpibysmooth = smooth != 0.0 ? NUMpi / (2 * smooth) : 0.0;
+	double halfpibysmooth = smooth != 0.0 ? NUMpi / (2.0 * smooth) : 0.0;
 	double *re = my z [1], *im = my z [2];
 	for (long i = 1; i <= my nx; i ++) {
 		double frequency = my x1 + (i - 1) * my dx;
@@ -326,7 +334,7 @@ void Spectrum_passHannBand (Spectrum me, double fmin, double fmax0, double smoot
 void Spectrum_stopHannBand (Spectrum me, double fmin, double fmax0, double smooth) {
 	double fmax = fmax0 == 0.0 ? my xmax : fmax0;
 	double f1 = fmin - smooth, f2 = fmin + smooth, f3 = fmax - smooth, f4 = fmax + smooth;
-	double halfpibysmooth = smooth != 0.0 ? NUMpi / (2 * smooth) : 0.0;
+	double halfpibysmooth = smooth != 0.0 ? NUMpi / (2.0 * smooth) : 0.0;
 	double *re = my z [1], *im = my z [2];
 	for (long i = 1; i <= my nx; i ++) {
 		double frequency = my x1 + (i - 1) * my dx;
@@ -366,12 +374,12 @@ double Spectrum_getBandEnergy (Spectrum me, double fmin, double fmax) {
 	 *
 	 * All this truncation is automatically performed by Sampled_getMean ().
 	 */
-	return Sampled_getIntegral (me, fmin, fmax, 0, 1, FALSE);
+	return Sampled_getIntegral (me, fmin, fmax, 0, 1, false);
 }
 
 double Spectrum_getBandDensity (Spectrum me, double fmin, double fmax) {
-	if (my xmin < 0.0) return NUMundefined;   /* No negative frequencies allowed in one-sided spectral density. */
-	return Sampled_getMean (me, fmin, fmax, 0, 1, FALSE);
+	if (my xmin < 0.0) return NUMundefined;   // no negative frequencies allowed in one-sided spectral density
+	return Sampled_getMean (me, fmin, fmax, 0, 1, false);
 }
 
 double Spectrum_getBandDensityDifference (Spectrum me, double lowBandMin, double lowBandMax, double highBandMin, double highBandMax) {
@@ -387,7 +395,7 @@ double Spectrum_getBandEnergyDifference (Spectrum me, double lowBandMin, double
 	double highBandEnergy = Spectrum_getBandEnergy (me, highBandMin, highBandMax);
 	if (lowBandEnergy == NUMundefined || highBandEnergy == NUMundefined) return NUMundefined;
 	if (lowBandEnergy == 0.0 || highBandEnergy == 0.0) return NUMundefined;
-	return 10 * log10 (highBandEnergy / lowBandEnergy);
+	return 10.0 * log10 (highBandEnergy / lowBandEnergy);
 }
 
 double Spectrum_getCentreOfGravity (Spectrum me, double power) {
@@ -423,24 +431,24 @@ double Spectrum_getStandardDeviation (Spectrum me, double power) {
 double Spectrum_getSkewness (Spectrum me, double power) {
 	double m2 = Spectrum_getCentralMoment (me, 2.0, power);
 	double m3 = Spectrum_getCentralMoment (me, 3.0, power);
-	if (m2 == NUMundefined || m3 == NUMundefined || m2 == 0) return NUMundefined;
+	if (m2 == NUMundefined || m3 == NUMundefined || m2 == 0.0) return NUMundefined;
 	return m3 / (m2 * sqrt (m2));
 }
 
 double Spectrum_getKurtosis (Spectrum me, double power) {
 	double m2 = Spectrum_getCentralMoment (me, 2.0, power);
 	double m4 = Spectrum_getCentralMoment (me, 4.0, power);
-	if (m2 == NUMundefined || m4 == NUMundefined || m2 == 0) return NUMundefined;
+	if (m2 == NUMundefined || m4 == NUMundefined || m2 == 0.0) return NUMundefined;
 	return m4 / (m2 * m2) - 3;
 }
 
 void Spectrum_getNearestMaximum (Spectrum me, double frequency, double *frequencyOfMaximum, double *heightOfMaximum) {
 	try {
 		autoSpectrumTier thee = Spectrum_to_SpectrumTier_peaks (me);
-		long index = AnyTier_timeToNearestIndex (thee.peek(), frequency);
+		long index = AnyTier_timeToNearestIndex (thee.get()->asAnyTier(), frequency);
 		if (index == 0)
 			Melder_throw (U"No peak.");
-		RealPoint point = (RealPoint) thy points -> item [index];
+		RealPoint point = thy points.at [index];
 		*frequencyOfMaximum = point -> number;
 		*heightOfMaximum = point -> value;
 	} catch (MelderError) {
diff --git a/fon/Spectrum.h b/fon/Spectrum.h
index b542391..895e9ad 100644
--- a/fon/Spectrum.h
+++ b/fon/Spectrum.h
@@ -2,21 +2,20 @@
 #define _Spectrum_h_
 /* Spectrum.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Complex spectrum. */
@@ -26,7 +25,6 @@
 #include "Graphics.h"
 
 #include "Spectrum_def.h"
-oo_CLASS_CREATE (Spectrum, Matrix);
 
 /*
 	xmin            // lowest frequency (Hz)
@@ -34,13 +32,13 @@ oo_CLASS_CREATE (Spectrum, Matrix);
 	nx              // number of frequencies
 	dx              // frequency step (Hz)
 	x1              // first frequency (Hz)
-	ymin = 1        // first row: real part
-	ymax = 2        // second row: imaginary part
+	ymin = 1.0      // first row: real part
+	ymax = 2.0      // second row: imaginary part
 	ny = 2          // two rows
-	dy = 1; y1 = 1  // y is row number
+	dy = y1 = 1.0   // y is row number
 */
 
-Spectrum Spectrum_create (double fmax, long nf);
+autoSpectrum Spectrum_create (double fmax, long nf);
 /* Preconditions:
 		fmax > 0.0;
 		nf >= 2;
@@ -58,9 +56,9 @@ Spectrum Spectrum_create (double fmax, long nf);
 		my z [1..ny] [1..nx] == 0.0;
 */
 		
-int Spectrum_getPowerDensityRange (Spectrum me, double *minimum, double *maximum);   /* Return 0 if all zeroes. */
-double Spectrum_getBandDensity (Spectrum me, double fmin, double fmax);   /* Pa2 / Hz2 */
-double Spectrum_getBandEnergy (Spectrum me, double fmin, double fmax);   /* Pa2 sec */
+int Spectrum_getPowerDensityRange (Spectrum me, double *minimum, double *maximum);   // return 0 if all zeroes
+double Spectrum_getBandDensity (Spectrum me, double fmin, double fmax);   // Pa2 / Hz2
+double Spectrum_getBandEnergy (Spectrum me, double fmin, double fmax);   // Pa2 sec
 double Spectrum_getBandDensityDifference (Spectrum me,
 	double lowBandMin, double lowBandMax, double highBandMin, double HighBandMax);
 double Spectrum_getBandEnergyDifference (Spectrum me,
@@ -89,16 +87,16 @@ void Spectrum_draw (Spectrum me, Graphics g, double fmin, double fmax, double mi
 */
 void Spectrum_drawLogFreq (Spectrum me, Graphics g, double fmin, double fmax, double minimum, double maximum, int garnish);
 
-Table Spectrum_downto_Table (Spectrum me, bool includeBinNumbers, bool includeFrequency,
+autoTable Spectrum_downto_Table (Spectrum me, bool includeBinNumbers, bool includeFrequency,
 	bool includeRealPart, bool includeImaginaryPart, bool includeEnergyDensity, bool includePowerDensity);
 void Spectrum_list (Spectrum me, bool includeBinNumbers, bool includeFrequency,
 	bool includeRealPart, bool includeImaginaryPart, bool includeEnergyDensity, bool includePowerDensity);
 
-Spectrum Matrix_to_Spectrum (Matrix me);
+autoSpectrum Matrix_to_Spectrum (Matrix me);
 
-Matrix Spectrum_to_Matrix (Spectrum me);
+autoMatrix Spectrum_to_Matrix (Spectrum me);
 
-Spectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth);
+autoSpectrum Spectrum_cepstralSmoothing (Spectrum me, double bandWidth);
 
 void Spectrum_passHannBand (Spectrum me, double fmin, double fmax, double smooth);
 void Spectrum_stopHannBand (Spectrum me, double fmin, double fmax, double smooth);
diff --git a/fon/SpectrumEditor.cpp b/fon/SpectrumEditor.cpp
index 89e8cf0..9235891 100644
--- a/fon/SpectrumEditor.cpp
+++ b/fon/SpectrumEditor.cpp
@@ -1,20 +1,19 @@
 /* SpectrumEditor.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SpectrumEditor.h"
@@ -34,7 +33,7 @@ static void updateRange (SpectrumEditor me) {
 	if (Spectrum_getPowerDensityRange ((Spectrum) my data, & my minimum, & my maximum)) {
 		my minimum = my maximum - my p_dynamicRange;
 	} else {
-		my minimum = -1000, my maximum = 1000;
+		my minimum = -1000.0, my maximum = 1000.0;
 	}
 }
 
@@ -46,17 +45,17 @@ void structSpectrumEditor :: v_dataChanged () {
 void structSpectrumEditor :: v_draw () {
 	Spectrum spectrum = (Spectrum) our data;
 
-	Graphics_setWindow (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (our d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
-	Graphics_rectangle (our d_graphics, 0, 1, 0, 1);
-	Spectrum_drawInside (spectrum, our d_graphics, our d_startWindow, our d_endWindow, our minimum, our maximum);
+	Graphics_setWindow (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (our d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Spectrum_drawInside (spectrum, our d_graphics.get(), our d_startWindow, our d_endWindow, our minimum, our maximum);
 	FunctionEditor_drawRangeMark (this, our maximum, Melder_fixed (maximum, 1), U" dB", Graphics_TOP);
 	FunctionEditor_drawRangeMark (this, our minimum, Melder_fixed (minimum, 1), U" dB", Graphics_BOTTOM);
 	if (our cursorHeight > our minimum && our cursorHeight < our maximum)
 		FunctionEditor_drawHorizontalHair (this, our cursorHeight, Melder_fixed (our cursorHeight, 1), U" dB");
-	Graphics_setColour (our d_graphics, Graphics_BLACK);
+	Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
 
 	/* Update buttons. */
 
@@ -66,45 +65,43 @@ void structSpectrumEditor :: v_draw () {
 	GuiThing_setSensitive (our publishSoundButton, selectedSamples != 0);
 }
 
-int structSpectrumEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
+bool structSpectrumEditor :: v_click (double xWC, double yWC, bool shiftKeyPressed) {
 	our cursorHeight = our minimum + yWC * (our maximum - our minimum);
 	return our SpectrumEditor_Parent :: v_click (xWC, yWC, shiftKeyPressed);   // move cursor or drag selection
 }
 
-static Spectrum Spectrum_band (Spectrum me, double fmin, double fmax) {
+static autoSpectrum Spectrum_band (Spectrum me, double fmin, double fmax) {
 	autoSpectrum band = Data_copy (me);
 	double *re = band -> z [1], *im = band -> z [2];
-	long imin = Sampled_xToLowIndex (band.peek(), fmin), imax = Sampled_xToHighIndex (band.peek(), fmax);
+	long imin = Sampled_xToLowIndex (band.get(), fmin);
+	long imax = Sampled_xToHighIndex (band.get(), fmax);
 	for (long i = 1; i <= imin; i ++) re [i] = 0.0, im [i] = 0.0;
 	for (long i = imax; i <= band -> nx; i ++) re [i] = 0.0, im [i] = 0.0;
-	return band.transfer();
+	return band;
 }
 
-static Sound Spectrum_to_Sound_part (Spectrum me, double fmin, double fmax) {
+static autoSound Spectrum_to_Sound_part (Spectrum me, double fmin, double fmax) {
 	autoSpectrum band = Spectrum_band (me, fmin, fmax);
-	autoSound sound = Spectrum_to_Sound (band.peek());
-	return sound.transfer();
+	autoSound sound = Spectrum_to_Sound (band.get());
+	return sound;
 }
 
 void structSpectrumEditor :: v_play (double fmin, double fmax) {
 	autoSound sound = Spectrum_to_Sound_part ((Spectrum) our data, fmin, fmax);
-	Sound_play (sound.peek(), NULL, NULL);
+	Sound_play (sound.get(), nullptr, nullptr);
 }
 
-static void menu_cb_publishBand (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
+static void menu_cb_publishBand (SpectrumEditor me, EDITOR_ARGS_DIRECT) {
 	autoSpectrum publish = Spectrum_band ((Spectrum) my data, my d_startSelection, my d_endSelection);
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_publishSound (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
+static void menu_cb_publishSound (SpectrumEditor me, EDITOR_ARGS_DIRECT) {
 	autoSound publish = Spectrum_to_Sound_part ((Spectrum) my data, my d_startSelection, my d_endSelection);
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_passBand (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
+static void menu_cb_passBand (SpectrumEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Filter (pass Hann band)", U"Spectrum: Filter (pass Hann band)...");
 		REAL (U"Band smoothing (Hz)", my default_bandSmoothing ())
 	EDITOR_OK
@@ -119,9 +116,8 @@ static void menu_cb_passBand (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_stopBand (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
-	EDITOR_FORM (U"Filter (stop Hann band)", 0)
+static void menu_cb_stopBand (SpectrumEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Filter (stop Hann band)", nullptr)
 		REAL (U"Band smoothing (Hz)", my default_bandSmoothing ())
 	EDITOR_OK
 		SET_REAL (U"Band smoothing", my p_bandSmoothing)
@@ -135,8 +131,7 @@ static void menu_cb_stopBand (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_moveCursorToPeak (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
+static void menu_cb_moveCursorToPeak (SpectrumEditor me, EDITOR_ARGS_DIRECT) {
 	double frequencyOfMaximum, heightOfMaximum;
 	Spectrum_getNearestMaximum ((Spectrum) my data, 0.5 * (my d_startSelection + my d_endSelection), & frequencyOfMaximum, & heightOfMaximum);
 	my d_startSelection = my d_endSelection = frequencyOfMaximum;
@@ -144,9 +139,8 @@ static void menu_cb_moveCursorToPeak (EDITOR_ARGS) {
 	FunctionEditor_marksChanged (me, true);
 }
 
-static void menu_cb_setDynamicRange (EDITOR_ARGS) {
-	EDITOR_IAM (SpectrumEditor);
-	EDITOR_FORM (U"Set dynamic range", 0)
+static void menu_cb_setDynamicRange (SpectrumEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Set dynamic range", nullptr)
 		POSITIVE (U"Dynamic range (dB)", my default_dynamicRange ())
 	EDITOR_OK
 		SET_REAL (U"Dynamic range", my p_dynamicRange)
@@ -157,18 +151,18 @@ static void menu_cb_setDynamicRange (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_help_SpectrumEditor (EDITOR_ARGS) { EDITOR_IAM (SpectrumEditor); Melder_help (U"SpectrumEditor"); }
-static void menu_cb_help_Spectrum (EDITOR_ARGS) { EDITOR_IAM (SpectrumEditor); Melder_help (U"Spectrum"); }
+static void menu_cb_help_SpectrumEditor (SpectrumEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"SpectrumEditor"); }
+static void menu_cb_help_Spectrum (SpectrumEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Spectrum"); }
 
 void structSpectrumEditor :: v_createMenus () {
 	SpectrumEditor_Parent :: v_createMenus ();
 	our publishBandButton = Editor_addCommand (this, U"File", U"Publish band", 0, menu_cb_publishBand);
 	our publishSoundButton = Editor_addCommand (this, U"File", U"Publish band-filtered sound", 0, menu_cb_publishSound);
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
-	Editor_addCommand (this, U"Edit", U"-- edit band --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
+	Editor_addCommand (this, U"Edit", U"-- edit band --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Pass band...", 0, menu_cb_passBand);
 	Editor_addCommand (this, U"Edit", U"Stop band...", 0, menu_cb_stopBand);
-	Editor_addCommand (this, U"Select", U"-- move to peak --", 0, 0);
+	Editor_addCommand (this, U"Select", U"-- move to peak --", 0, nullptr);
 	Editor_addCommand (this, U"Select", U"Move cursor to nearest peak", 'K', menu_cb_moveCursorToPeak);
 }
 
@@ -184,13 +178,13 @@ void structSpectrumEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"Spectrum help", 0, menu_cb_help_Spectrum);
 }
 
-SpectrumEditor SpectrumEditor_create (const char32 *title, Spectrum data) {
+autoSpectrumEditor SpectrumEditor_create (const char32 *title, Spectrum data) {
 	try {
 		autoSpectrumEditor me = Thing_new (SpectrumEditor);
-		FunctionEditor_init (me.peek(), title, data);
+		FunctionEditor_init (me.get(), title, data);
 		my cursorHeight = -1000;
-		updateRange (me.peek());
-		return me.transfer();
+		updateRange (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Spectrum window not created.");
 	}
diff --git a/fon/SpectrumEditor.h b/fon/SpectrumEditor.h
index a8d6e7b..1f79d54 100644
--- a/fon/SpectrumEditor.h
+++ b/fon/SpectrumEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -34,7 +33,7 @@ Thing_define (SpectrumEditor, FunctionEditor) {
 		override;
 	void v_draw ()
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -60,7 +59,7 @@ Thing_define (SpectrumEditor, FunctionEditor) {
 	#include "SpectrumEditor_prefs.h"
 };
 
-SpectrumEditor SpectrumEditor_create (const char32 *title, Spectrum data);
+autoSpectrumEditor SpectrumEditor_create (const char32 *title, Spectrum data);
 
 /* End of file SpectrumEditor.h */
 #endif
diff --git a/fon/SpectrumTier.cpp b/fon/SpectrumTier.cpp
index 9c9b7b0..159ccaf 100644
--- a/fon/SpectrumTier.cpp
+++ b/fon/SpectrumTier.cpp
@@ -1,20 +1,19 @@
 /* SpectrumTier.cpp
  *
- * Copyright (C) 2007-2012,2015 Paul Boersma
+ * Copyright (C) 2007-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Ltas_to_SpectrumTier.h"
@@ -22,21 +21,21 @@
 Thing_implement (SpectrumTier, RealTier, 0);
 
 void structSpectrumTier :: v_info () {
-	structData :: v_info ();
+	our structDaata :: v_info ();
 	MelderInfo_writeLine (U"Frequency domain:");
-	MelderInfo_writeLine (U"   Lowest frequency: ", xmin, U" Hz");
-	MelderInfo_writeLine (U"   Highest frequency: ", xmax, U" Hz");
-	MelderInfo_writeLine (U"   Total bandwidth: ", xmax - xmin, U" Hz");
-	MelderInfo_writeLine (U"Number of points: ", points -> size);
+	MelderInfo_writeLine (U"   Lowest frequency: ", our xmin, U" Hz");
+	MelderInfo_writeLine (U"   Highest frequency: ", our xmax, U" Hz");
+	MelderInfo_writeLine (U"   Total bandwidth: ", our xmax - our xmin, U" Hz");
+	MelderInfo_writeLine (U"Number of points: ", our points.size);
 	MelderInfo_writeLine (U"Minimum power value: ", RealTier_getMinimumValue (this), U" dB/Hz");
 	MelderInfo_writeLine (U"Maximum power value: ", RealTier_getMaximumValue (this), U" dB/Hz");
 }
 
-SpectrumTier SpectrumTier_create (double fmin, double fmax) {
+autoSpectrumTier SpectrumTier_create (double fmin, double fmax) {
 	try {
 		autoSpectrumTier me = Thing_new (SpectrumTier);
-		RealTier_init (me.peek(), fmin, fmax);
-		return me.transfer();
+		RealTier_init (me.get(), fmin, fmax);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"SpectrumTier not created.");
 	}
@@ -51,24 +50,24 @@ void SpectrumTier_draw (SpectrumTier me, Graphics g, double fmin, double fmax,
 void SpectrumTier_list (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity) {
 	try {
 		autoTable table = SpectrumTier_downto_Table (me, includeIndexes, includeFrequency, includePowerDensity);
-		Table_list (table.peek(), false);
+		Table_list (table.get(), false);
 	} catch (MelderError) {
 		Melder_throw (me, U": not listed.");
 	}
 }
 
-Table SpectrumTier_downto_Table (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity) {
+autoTable SpectrumTier_downto_Table (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity) {
 	return RealTier_downto_Table (me,
-		includeIndexes ? U"index" : NULL,
-		includeFrequency ? U"freq(Hz)" : NULL,
-		includePowerDensity ? U"pow(dB/Hz)" : NULL);
+		includeIndexes ? U"index" : nullptr,
+		includeFrequency ? U"freq(Hz)" : nullptr,
+		includePowerDensity ? U"pow(dB/Hz)" : nullptr);
 }
 
-SpectrumTier Spectrum_to_SpectrumTier_peaks (Spectrum me) {
+autoSpectrumTier Spectrum_to_SpectrumTier_peaks (Spectrum me) {
 	try {
 		autoLtas ltas = Spectrum_to_Ltas_1to1 (me);
-		autoSpectrumTier thee = Ltas_to_SpectrumTier_peaks (ltas.peek());
-		return thee.transfer();
+		autoSpectrumTier thee = Ltas_to_SpectrumTier_peaks (ltas.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": peaks not converted to SpectrumTier.");
 	}
diff --git a/fon/SpectrumTier.h b/fon/SpectrumTier.h
index c47294e..a9e0335 100644
--- a/fon/SpectrumTier.h
+++ b/fon/SpectrumTier.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2007-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "RealTier.h"
@@ -34,12 +33,12 @@ Thing_define (SpectrumTier, RealTier) {
 		override { return U"Frequency (Hz)"; }
 };
 
-SpectrumTier SpectrumTier_create (double fmin, double fmax);
+autoSpectrumTier SpectrumTier_create (double fmin, double fmax);
 /*
 	Postconditions:
 		result -> xmin == fmin;
 		result -> xmax == fmax;
-		result -> points -> size == 0;
+		result -> points.size == 0;
 */
 
 void SpectrumTier_draw (SpectrumTier me, Graphics g, double fmin, double fmax,
@@ -47,9 +46,9 @@ void SpectrumTier_draw (SpectrumTier me, Graphics g, double fmin, double fmax,
 
 void SpectrumTier_list (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity);
 
-Table SpectrumTier_downto_Table (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity);
+autoTable SpectrumTier_downto_Table (SpectrumTier me, bool includeIndexes, bool includeFrequency, bool includePowerDensity);
 
-SpectrumTier Spectrum_to_SpectrumTier_peaks (Spectrum me);
+autoSpectrumTier Spectrum_to_SpectrumTier_peaks (Spectrum me);
 
 /* End of file SpectrumTier.h */
 #endif
diff --git a/fon/Spectrum_and_Spectrogram.cpp b/fon/Spectrum_and_Spectrogram.cpp
index 1a8fb6d..5098e80 100644
--- a/fon/Spectrum_and_Spectrogram.cpp
+++ b/fon/Spectrum_and_Spectrogram.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 David Weenink & Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,8 +24,7 @@
 
 #include "Spectrum_and_Spectrogram.h"
 
-Spectrum Spectrogram_to_Spectrum (I, double tim) {
-	iam (Spectrogram);
+autoSpectrum Spectrogram_to_Spectrum (Spectrogram me, double tim) {
 	try {
 		autoSpectrum thee = Spectrum_create (my ymax, my ny);
 		/* Override stupid Spectrum values. */
@@ -44,19 +42,18 @@ Spectrum Spectrogram_to_Spectrum (I, double tim) {
 			thy z [1] [ifreq] = sqrt (value);
 			thy z [2] [ifreq] = 0.0;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": spectral slice not extracted.");
 	}
 }
 
-Spectrogram Spectrum_to_Spectrogram (I) {
-	iam (Spectrum);
+autoSpectrogram Spectrum_to_Spectrogram (Spectrum me) {
 	try {
 		autoSpectrogram thee = Spectrogram_create (0, 1, 1, 1, 0.5, my xmin, my xmax, my nx, my dx, my x1);
 		for (long i = 1; i <= my nx; i ++)
 			thy z [i] [1] = my z [1] [i] * my z [1] [i] + my z [2] [i] * my z [2] [i];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrogram.");
 	}
diff --git a/fon/Spectrum_and_Spectrogram.h b/fon/Spectrum_and_Spectrogram.h
index 25bfae8..4490ed7 100644
--- a/fon/Spectrum_and_Spectrogram.h
+++ b/fon/Spectrum_and_Spectrogram.h
@@ -1,30 +1,28 @@
 /* Spectrum_and_Spectrogram.h
  *
- * Copyright (C) 1992-2011 David Weenink & Paul Boersma
+ * Copyright (C) 1992-2011,2015 David Weenink & Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum.h"
 #include "Spectrogram.h"
 
-Spectrum Spectrogram_to_Spectrum (I, double time);
+autoSpectrum Spectrogram_to_Spectrum (Spectrogram me, double time);
 /*
 	Function:
 		Create a time slice from the Spectrogram at the time nearest to 'time'.
-		Return NULL in case of failure (no memory).
 	Postconditions:
 		result -> xmin == my ymin;   // Lowest frequency; often 0.
 		result -> xmax == my ymax;   // Highest frequency.
@@ -37,11 +35,10 @@ Spectrum Spectrogram_to_Spectrum (I, double time);
 		}
 */
  
-Spectrogram Spectrum_to_Spectrogram (I);
+autoSpectrogram Spectrum_to_Spectrogram (Spectrum me);
 /*
 	Function:
 		Create a Spectrogram with one time slice from the Spectrum.
-		Return NULL in case of failure (no memory).
 	Postconditions:
 		thy xmin = 0.0;			thy ymin == my xmin;
 		thy xmax = 1.0;		thy ymax == my xmax;
diff --git a/fon/Spectrum_def.h b/fon/Spectrum_def.h
index f06b3ca..ec14967 100644
--- a/fon/Spectrum_def.h
+++ b/fon/Spectrum_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2002-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/fon/Spectrum_to_Excitation.cpp b/fon/Spectrum_to_Excitation.cpp
index 2b0ffbb..5e6c8b4 100644
--- a/fon/Spectrum_to_Excitation.cpp
+++ b/fon/Spectrum_to_Excitation.cpp
@@ -1,31 +1,24 @@
 /* Spectrum_to_Excitation.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1995/05/20
- * pb 2002/07/16 GPL
- * pb 2011/06/10 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum_to_Excitation.h"
 
-Excitation Spectrum_to_Excitation (Spectrum me, double dbark) {
+autoExcitation Spectrum_to_Excitation (Spectrum me, double dbark) {
 	try {
 		long nbark = (int) floor (25.6 / dbark + 0.5);
 		double *re = my z [1], *im = my z [2]; 
@@ -49,26 +42,30 @@ Excitation Spectrum_to_Excitation (Spectrum me, double dbark) {
 			long low = iFreqs [i], high = iFreqs [i + 1] - 1;
 			if (low < 1) low = 1;
 			if (high > my nx) high = my nx;
-			for (long j = low; j <= high; j ++)
+			for (long j = low; j <= high; j ++) {
 				inSig [i] += re [j] * re [j] + im [j] * im [j];   // Pa2 s2
+			}
 
 			/* An anti-undersampling correction. */
 			if (high >= low)
-				inSig [i] *= 2 * (rFreqs [i + 1] - rFreqs [i]) / (high - low + 1) * my dx;   // Pa2: power density in this band
+				inSig [i] *= 2.0 * (rFreqs [i + 1] - rFreqs [i]) / (high - low + 1) * my dx;   // Pa2: power density in this band
 		}
 
 		/* Convolution with auditory (masking) filter. */
 
 		autoNUMvector <double> outSig (1, 2 * nbark);
-		for (long i = 1; i <= nbark; i ++)
-			for (long j = 1; j <= nbark; j ++)
+		for (long i = 1; i <= nbark; i ++) {
+			for (long j = 1; j <= nbark; j ++) {
 				outSig [i + j] += inSig [i] * auditoryFilter [j];
+			}
+		}
 
 		autoExcitation thee = Excitation_create (dbark, nbark);
-		for (long i = 1; i <= nbark; i ++)
-			thy z [1] [i] = Excitation_soundPressureToPhon (sqrt (outSig [i + nbark/2]), Sampled_indexToX (thee.peek(), i));
+		for (long i = 1; i <= nbark; i ++) {
+			thy z [1] [i] = Excitation_soundPressureToPhon (sqrt (outSig [i + nbark/2]), Sampled_indexToX (thee.get(), i));
+		}
 
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Excitation.");
 	}
diff --git a/fon/Spectrum_to_Excitation.h b/fon/Spectrum_to_Excitation.h
index 6b1b182..c047e93 100644
--- a/fon/Spectrum_to_Excitation.h
+++ b/fon/Spectrum_to_Excitation.h
@@ -1,26 +1,25 @@
 /* Spectrum_to_Excitation.h
  *
- * Copyright (C) 1992-2011,2014 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum.h"
 #include "Excitation.h"
 
-Excitation Spectrum_to_Excitation (Spectrum me, double df);
+autoExcitation Spectrum_to_Excitation (Spectrum me, double df);
 /*
 	Postcondition:
 		filtered with 10 ^ (1.581 + 0.75 * bark - 1.75 * sqrt (1 + bark * bark)))
diff --git a/fon/Spectrum_to_Formant.cpp b/fon/Spectrum_to_Formant.cpp
index 19dbd9e..b131b17 100644
--- a/fon/Spectrum_to_Formant.cpp
+++ b/fon/Spectrum_to_Formant.cpp
@@ -2,30 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1999/09/09
- * pb 2002/07/16 GPL
- * pb 2011/06/10 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum_to_Formant.h"
 
-Formant Spectrum_to_Formant (Spectrum me, int maxnFormants) {
+autoFormant Spectrum_to_Formant (Spectrum me, int maxnFormants) {
 	try {
 		long nfreq = my nx, nform = 0;
 		autoNUMvector <double> p (1, nfreq);   // power
@@ -54,7 +47,7 @@ Formant Spectrum_to_Formant (Spectrum me, int maxnFormants) {
 				if (nform == maxnFormants) break;
 			}
 		thy d_frames [1]. nFormants = nform;
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Formant.");
 	}
diff --git a/fon/Spectrum_to_Formant.h b/fon/Spectrum_to_Formant.h
index 27fd747..47e92da 100644
--- a/fon/Spectrum_to_Formant.h
+++ b/fon/Spectrum_to_Formant.h
@@ -1,25 +1,24 @@
 /* Spectrum_to_Formant.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Spectrum.h"
 #include "Formant.h"
 
-Formant Spectrum_to_Formant (Spectrum me, int maxnFormants);
+autoFormant Spectrum_to_Formant (Spectrum me, int maxnFormants);
 
 /* End of file Spectrum_to_Formant.h */
diff --git a/fon/SpellingChecker.cpp b/fon/SpellingChecker.cpp
index a5de4cd..188c7de 100644
--- a/fon/SpellingChecker.cpp
+++ b/fon/SpellingChecker.cpp
@@ -2,28 +2,18 @@
  *
  * Copyright (C) 1999-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2007/06/21 tex
- * pb 2007/08/12 wchar
- * pb 2007/10/01 can write as encoding
- * pb 2011/03/03 wide-character WordList
- * pb 2011/06/10 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "SpellingChecker.h"
@@ -50,60 +40,45 @@
 
 #include "longchar.h"
 
-Thing_implement (SpellingChecker, Data, 0);
+Thing_implement (SpellingChecker, Daata, 0);
 
-SpellingChecker WordList_upto_SpellingChecker (WordList me) {
+autoSpellingChecker WordList_upto_SpellingChecker (WordList me) {
 	try {
 		autoSpellingChecker thee = Thing_new (SpellingChecker);
 		thy wordList = Data_copy (me);
+		thy userDictionary = StringSet_create ();
 		thy separatingCharacters = Melder_dup (U".,;:()\"");
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to SpellingChecker.");
 	}
 }
 
-WordList SpellingChecker_extractWordList (SpellingChecker me) {
-	return Data_copy (my wordList);
+autoWordList SpellingChecker_extractWordList (SpellingChecker me) {
+	return Data_copy (my wordList.get());
 }
 
 void SpellingChecker_replaceWordList (SpellingChecker me, WordList list) {
 	try {
-		/*
-		 * Create without change.
-		 */
-		autoWordList newList = Data_copy (list);
-		/*
-		 * Change without error.
-		 */
-		forget (my wordList);
-		my wordList = newList.transfer();
+		my wordList = Data_copy (list);
 	} catch (MelderError) {
 		Melder_throw (me, U": word list not replaced.");
 	}
 }
 
-SortedSetOfString SpellingChecker_extractUserDictionary (SpellingChecker me) {
+autoStringSet SpellingChecker_extractUserDictionary (SpellingChecker me) {
 	try {
-		if (! my userDictionary)
+		if (my userDictionary->size == 0)
 			Melder_throw (U"This spelling checker does not contain a user dictionary.");
-		return Data_copy (my userDictionary);
+		return Data_copy (my userDictionary.get());
 	} catch (MelderError) {
 		Melder_throw (me, U": user dictionary not extracted.");
 	}
 }
 
-void SpellingChecker_replaceUserDictionary (SpellingChecker me, SortedSetOfString userDictionary) {
+void SpellingChecker_replaceUserDictionary (SpellingChecker me, StringSet userDictionary) {
 	try {
-		/*
-		 * Create without change.
-		 */
-		autoSortedSetOfString newDict = Data_copy (userDictionary);
-		/*
-		 * Change without error.
-		 */
-		forget (my userDictionary);
-		my userDictionary = newDict.transfer();
+		my userDictionary = Data_copy (userDictionary);
 	} catch (MelderError) {
 		Melder_throw (me, U": user dictionary not replaced.");
 	}
@@ -136,7 +111,7 @@ bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word) {
 			/*
 			 * Allow word if it contains this token.
 			 */
-			if (str32str (word, token)) return TRUE;
+			if (str32str (word, token)) return true;
 		}
 	}
 	if (my allowAllNames) {
@@ -144,7 +119,7 @@ bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word) {
 		 * Allow word if it starts with a capital.
 		 */
 		if (startsWithCapital (word)) {
-			return TRUE;
+			return true;
 		}
 		if (my namePrefixes && my namePrefixes [0]) {
 			char32 *p = & my namePrefixes [0];
@@ -158,14 +133,14 @@ bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word) {
 				 * and this prefix is followed by a capital.
 				 */
 				if (str32str (word, token) == word && startsWithCapital (word + str32len (token))) {
-					return TRUE;
+					return true;
 				}
 			}
 		}
 	} else if (my allowAllAbbreviations && startsWithCapital (word)) {
 		const char32 *p = & word [0];
 		for (;;) {
-			if (*p == '\0') return TRUE;
+			if (*p == '\0') return true;
 			if (iswlower ((int) *p)) break;
 			p ++;
 		}
@@ -180,7 +155,7 @@ bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word) {
 			*q = U'\0';   // trailing null character
 			tokenLength = str32len (token);
 			if (wordLength >= tokenLength && str32nequ (token, word, tokenLength)) {
-				return TRUE;
+				return true;
 			}
 		}
 	}
@@ -194,29 +169,27 @@ bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word) {
 			*q = U'\0';   // trailing null character
 			tokenLength = str32len (token);
 			if (wordLength >= tokenLength && str32nequ (token, word + wordLength - tokenLength, tokenLength)) {
-				return TRUE;
+				return true;
 			}
 		}
 	}
-	if (WordList_hasWord (my wordList, word))
-		return TRUE;
-	if (my userDictionary != NULL) {
-		if (str32len (word) > 3333) return FALSE;   // superfluous, because WordList_hasWord already checked; but safe
+	if (WordList_hasWord (my wordList.get(), word))
+		return true;
+	if (my userDictionary->size > 0) {
+		if (str32len (word) > 3333) return false;   // superfluous, because WordList_hasWord already checked; but safe
 		static char32 buffer [3*3333+1];
 		Longchar_genericize32 (word, buffer);
-		if (SortedSetOfString_lookUp (my userDictionary, buffer) != 0)
-			return TRUE;
+		if (my userDictionary -> lookUp (buffer) != 0)
+			return true;
 	}
-	return FALSE;
+	return false;
 }
 
 void SpellingChecker_addNewWord (SpellingChecker me, const char32 *word) {
 	try {
-		if (! my userDictionary)
-			my userDictionary = SortedSetOfString_create ();
 		autostring32 generic = Melder_calloc (char32, 3 * str32len (word) + 1);
 		Longchar_genericize32 (word, generic.peek());
-		SortedSetOfString_addString (my userDictionary, generic.transfer());
+		my userDictionary -> addString_copy (generic.transfer());
 	} catch (MelderError) {
 		Melder_throw (me, U": word \"", word, U"\" not added.");
 	}
@@ -226,12 +199,12 @@ char32 * SpellingChecker_nextNotAllowedWord (SpellingChecker me, const char32 *s
 	const char32 *p = sentence + *start;
 	for (;;) {
 		if (*p == U'\0') {
-			return NULL;   // all words allowed
+			return nullptr;   // all words allowed
 		} else if (*p == U'(' && my allowAllParenthesized) {
 			p ++;
 			for (;;) {
 				if (*p == U'\0') {
-					return NULL;   // everything is parenthesized...
+					return nullptr;   // everything is parenthesized...
 				} else if (*p == U')') {
 					p ++;
 					break;
@@ -260,7 +233,7 @@ char32 * SpellingChecker_nextNotAllowedWord (SpellingChecker me, const char32 *s
 			}
 		}
 	}
-	return NULL;   // all words allowed
+	return nullptr;   // all words allowed
 }
 
 /* End of file SpellingChecker.cpp */
diff --git a/fon/SpellingChecker.h b/fon/SpellingChecker.h
index f42ec3e..25880fb 100644
--- a/fon/SpellingChecker.h
+++ b/fon/SpellingChecker.h
@@ -4,32 +4,30 @@
  *
  * Copyright (C) 1999-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "WordList.h"
 #include "Collection.h"
 
 #include "SpellingChecker_def.h"
-oo_CLASS_CREATE (SpellingChecker, Data);
 
-SpellingChecker WordList_upto_SpellingChecker (WordList me);
-WordList SpellingChecker_extractWordList (SpellingChecker me);
+autoSpellingChecker WordList_upto_SpellingChecker (WordList me);
+autoWordList SpellingChecker_extractWordList (SpellingChecker me);
 void SpellingChecker_replaceWordList (SpellingChecker me, WordList list);
-SortedSetOfString SpellingChecker_extractUserDictionary (SpellingChecker me);
-void SpellingChecker_replaceUserDictionary (SpellingChecker me, SortedSetOfString userDictionary);
+autoStringSet SpellingChecker_extractUserDictionary (SpellingChecker me);
+void SpellingChecker_replaceUserDictionary (SpellingChecker me, StringSet userDictionary);
 
 bool SpellingChecker_isWordAllowed (SpellingChecker me, const char32 *word);
 char32 * SpellingChecker_nextNotAllowedWord (SpellingChecker me, const char32 *sentence, long *start);
diff --git a/fon/SpellingChecker_def.h b/fon/SpellingChecker_def.h
index 1f4b711..51f4063 100644
--- a/fon/SpellingChecker_def.h
+++ b/fon/SpellingChecker_def.h
@@ -2,27 +2,24 @@
  *
  * Copyright (C) 1999-2007,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- * pb 2007/08/12
- */
 
 #define ooSTRUCT SpellingChecker
-oo_DEFINE_CLASS (SpellingChecker, Data)           // CGN:
+oo_DEFINE_CLASS (SpellingChecker, Daata)           // CGN:
+
 	oo_STRING (forbiddenStrings)              // : ; "
 	oo_BOOLEAN (checkMatchingParentheses)     // true
 	oo_STRING (separatingCharacters)          // .,:;()!?
@@ -35,9 +32,11 @@ oo_DEFINE_CLASS (SpellingChecker, Data)           // CGN:
 	oo_STRING (allowAllWordsContaining)       // * xxx
 	oo_STRING (allowAllWordsStartingWith)
 	oo_STRING (allowAllWordsEndingIn)         // -
-	oo_OBJECT (WordList, 0, wordList)
-	oo_COLLECTION (SortedSetOfString, userDictionary, SimpleString, 0)
+	oo_AUTO_OBJECT (WordList, 0, wordList)
+	oo_AUTO_COLLECTION (StringSet, userDictionary, SimpleString, 0)
+
 oo_END_CLASS (SpellingChecker)
 #undef ooSTRUCT
 
+
 /* End of file SpellingChecker_def.h */
diff --git a/fon/TextGrid.cpp b/fon/TextGrid.cpp
index d67801d..6f96fb2 100644
--- a/fon/TextGrid.cpp
+++ b/fon/TextGrid.cpp
@@ -1,20 +1,19 @@
 /* TextGrid.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextGrid.h"
@@ -43,12 +42,12 @@
 
 Thing_implement (TextPoint, AnyPoint, 0);
 
-TextPoint TextPoint_create (double time, const char32 *mark) {
+autoTextPoint TextPoint_create (double time, const char32 *mark) {
 	try {
 		autoTextPoint me = Thing_new (TextPoint);
 		my number = time;
 		my mark = Melder_dup (mark);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Text point not created.");
 	}
@@ -74,13 +73,13 @@ void TextPoint_setText (TextPoint me, const char32 *text) {
 
 Thing_implement (TextInterval, Function, 0);
 
-TextInterval TextInterval_create (double tmin, double tmax, const char32 *text) {
+autoTextInterval TextInterval_create (double tmin, double tmax, const char32 *text) {
 	try {
 		autoTextInterval me = Thing_new (TextInterval);
 		my xmin = tmin;
 		my xmax = tmax;
 		my text = Melder_dup (text);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Text interval not created.");
 	}
@@ -106,31 +105,14 @@ void TextInterval_setText (TextInterval me, const char32 *text) {
 	}
 }
 
-Thing_implement (TextTier, Function, 0);
+Thing_implement (TextTier, AnyTier, 0);
 
-void structTextTier :: v_shiftX (double xfrom, double xto) {
-	TextTier_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= our numberOfPoints(); i ++) {
-		TextPoint point = our point (i);
-		NUMshift (& point -> number, xfrom, xto);
-	}
-}
-
-void structTextTier :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
-	TextTier_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= our numberOfPoints(); i ++) {
-		TextPoint point = our point (i);
-		NUMscale (& point -> number, xminfrom, xmaxfrom, xminto, xmaxto);
-	}
-}
-
-TextTier TextTier_create (double tmin, double tmax) {
+autoTextTier TextTier_create (double tmin, double tmax) {
 	try {
 		autoTextTier me = Thing_new (TextTier);
-		my points = SortedSetOfDouble_create ();
 		my xmin = tmin;
 		my xmax = tmax;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Point tier not created.");
 	}
@@ -138,7 +120,8 @@ TextTier TextTier_create (double tmin, double tmax) {
 
 void TextTier_addPoint (TextTier me, double time, const char32 *mark) {
 	try {
-		Collection_addItem (my points, TextPoint_create (time, mark));
+		autoTextPoint point = TextPoint_create (time, mark);
+		my points. addItem_move (point.move());
 	} catch (MelderError) {
 		Melder_throw (U"Point tier: point not added.");
 	}
@@ -148,44 +131,43 @@ Thing_implement (IntervalTier, Function, 0);
 
 void structIntervalTier :: v_shiftX (double xfrom, double xto) {
 	IntervalTier_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= our numberOfIntervals(); i ++) {
-		TextInterval interval = our interval (i);
+	for (long i = 1; i <= our intervals.size; i ++) {
+		TextInterval interval = our intervals.at [i];
 		interval -> v_shiftX (xfrom, xto);
 	}
 }
 
 void structIntervalTier :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	IntervalTier_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= our numberOfIntervals(); i ++) {
-		TextInterval interval = our interval (i);
+	for (long i = 1; i <= our intervals.size; i ++) {
+		TextInterval interval = our intervals.at [i];
 		interval -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 	}
 }
 
-IntervalTier IntervalTier_create (double tmin, double tmax) {
+autoIntervalTier IntervalTier_create (double tmin, double tmax) {
 	try {
 		autoIntervalTier me = Thing_new (IntervalTier);
-		my intervals = SortedSetOfDouble_create ();
 		my xmin = tmin;
 		my xmax = tmax;
-		autoTextInterval interval = TextInterval_create (tmin, tmax, NULL);
-		Collection_addItem (my intervals, interval.transfer());
-		return me.transfer();
+		autoTextInterval interval = TextInterval_create (tmin, tmax, nullptr);
+		my intervals. addItem_move (interval.move());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Interval tier not created.");
 	}
 }
 
 long IntervalTier_timeToLowIndex (IntervalTier me, double t) {
-	long ileft = 1, iright = my numberOfIntervals();
+	long ileft = 1, iright = my intervals.size;
 	if (iright < 1) return 0;   // empty tier
-	TextInterval leftInterval = my interval (ileft);
+	TextInterval leftInterval = my intervals.at [ileft];
 	if (t < leftInterval -> xmin) return 0;   // very small t
-	TextInterval rightInterval = my interval (iright);
+	TextInterval rightInterval = my intervals.at [iright];
 	if (t >= rightInterval -> xmax) return 0;   // very large t
 	while (ileft < iright) {
 		long imid = (ileft + iright) / 2;
-		TextInterval midInterval = my interval (imid);
+		TextInterval midInterval = my intervals.at [imid];
 		if (t >= midInterval -> xmax) {
 			ileft = imid + 1;
 		} else {
@@ -196,15 +178,15 @@ long IntervalTier_timeToLowIndex (IntervalTier me, double t) {
 }
 
 long IntervalTier_timeToIndex (IntervalTier me, double t) {
-	long ileft = 1, iright = my numberOfIntervals();
+	long ileft = 1, iright = my intervals.size;
 	if (iright < 1) return 0;   // empty tier
-	TextInterval leftInterval = my interval (ileft);
+	TextInterval leftInterval = my intervals.at [ileft];
 	if (t < leftInterval -> xmin) return 0;   // very small t
-	TextInterval rightInterval = my interval (iright);
+	TextInterval rightInterval = my intervals.at [iright];
 	if (t > rightInterval -> xmax) return 0;   // very large t
 	while (ileft < iright) {
 		long imid = (ileft + iright) / 2;
-		TextInterval midInterval = my interval (imid);
+		TextInterval midInterval = my intervals.at [imid];
 		if (t >= midInterval -> xmax) {
 			ileft = imid + 1;
 		} else {
@@ -215,15 +197,15 @@ long IntervalTier_timeToIndex (IntervalTier me, double t) {
 }
 
 long IntervalTier_timeToHighIndex (IntervalTier me, double t) {
-	long ileft = 1, iright = my numberOfIntervals();
+	long ileft = 1, iright = my intervals.size;
 	if (iright < 1) return 0;   // empty tier
-	TextInterval leftInterval = my interval (ileft);
+	TextInterval leftInterval = my intervals.at [ileft];
 	if (t <= leftInterval -> xmin) return 0;   // very small t
-	TextInterval rightInterval = my interval (iright);
+	TextInterval rightInterval = my intervals.at [iright];
 	if (t > rightInterval -> xmax) return 0;   // very large t
 	while (ileft < iright) {
 		long imid = (ileft + iright) / 2;
-		TextInterval midInterval = my interval (imid);
+		TextInterval midInterval = my intervals.at [imid];
 		if (t > midInterval -> xmax) {
 			ileft = imid + 1;
 		} else {
@@ -234,15 +216,15 @@ long IntervalTier_timeToHighIndex (IntervalTier me, double t) {
 }
 
 long IntervalTier_hasTime (IntervalTier me, double t) {
-	long ileft = 1, iright = my numberOfIntervals();
+	long ileft = 1, iright = my intervals.size;
 	if (iright < 1) return 0;   // empty tier
-	TextInterval leftInterval = my interval (ileft);
+	TextInterval leftInterval = my intervals.at [ileft];
 	if (t < leftInterval -> xmin) return 0;   // very small t
-	TextInterval rightInterval = my interval (iright);
+	TextInterval rightInterval = my intervals.at [iright];
 	if (t > rightInterval -> xmax) return 0;   // very large t
 	while (ileft < iright) {
 		long imid = (ileft + iright) / 2;
-		TextInterval midInterval = my interval (imid);
+		TextInterval midInterval = my intervals.at [imid];
 		if (t >= midInterval -> xmax) {
 			ileft = imid + 1;
 		} else {
@@ -252,46 +234,46 @@ long IntervalTier_hasTime (IntervalTier me, double t) {
 	/*
 	 * We now know that t is within interval ileft.
 	 */
-	leftInterval = my interval (ileft);
+	leftInterval = my intervals.at [ileft];
 	if (t == leftInterval -> xmin || t == leftInterval -> xmax) return ileft;
 	return 0;   // not found
 }
 
 long IntervalTier_hasBoundary (IntervalTier me, double t) {
-	long ileft = 2, iright = my numberOfIntervals();
+	long ileft = 2, iright = my intervals.size;
 	if (iright < 2) return 0;   // tier without inner boundaries
-	TextInterval leftInterval = my interval (ileft);
+	TextInterval leftInterval = my intervals.at [ileft];
 	if (t < leftInterval -> xmin) return 0;   // very small t
-	TextInterval rightInterval = my interval (iright);
+	TextInterval rightInterval = my intervals.at [iright];
 	if (t >= rightInterval -> xmax) return 0;   // very large t
 	while (ileft < iright) {
 		long imid = (ileft + iright) / 2;
-		TextInterval midInterval = my interval (imid);
+		TextInterval midInterval = my intervals.at [imid];
 		if (t >= midInterval -> xmax) {
 			ileft = imid + 1;
 		} else {
 			iright = imid;
 		}
 	}
-	leftInterval = my interval (ileft);
+	leftInterval = my intervals.at [ileft];
 	if (t == leftInterval -> xmin) return ileft;
 	return 0;   // not found
 }
 
 void structTextGrid :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 
 	long intervalTierCount = 0, pointTierCount = 0, intervalCount = 0, pointCount = 0;
-	for (long itier = 1; itier <= our numberOfTiers(); itier ++) {
-		Function anyTier = our tier (itier);
+	for (long itier = 1; itier <= our tiers->size; itier ++) {
+		Function anyTier = our tiers->at [itier];
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier intervalTier = static_cast <IntervalTier> (anyTier);
 			intervalTierCount += 1;
-			intervalCount += intervalTier -> numberOfIntervals();
+			intervalCount += intervalTier -> intervals.size;
 		} else {
 			TextTier textTier = static_cast <TextTier> (anyTier);
 			pointTierCount += 1;
-			pointCount += textTier -> numberOfPoints();
+			pointCount += textTier -> points.size;
 		}
 	}
 	MelderInfo_writeLine (U"Number of interval tiers: ", intervalTierCount);
@@ -302,15 +284,15 @@ void structTextGrid :: v_info () {
 
 static void IntervalTier_addInterval_unsafe (IntervalTier me, double tmin, double tmax, const char32 *label) {
 	autoTextInterval interval = TextInterval_create (tmin, tmax, label);
-	Collection_addItem (my intervals, interval.transfer());
+	my intervals.addItem_move (interval.move());
 }
 
 void structTextGrid :: v_repair () {
-	for (long itier = 1; itier <= our numberOfTiers(); itier ++) {
-		Function anyTier = our tier (itier);
+	for (long itier = 1; itier <= our tiers->size; itier ++) {
+		Function anyTier = our tiers->at [itier];   // it's a triple indirection: * ((* (* us). tiers). at + itier)
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			if (tier -> numberOfIntervals() == 0) {
+			if (tier -> intervals.size == 0) {
 				IntervalTier_addInterval_unsafe (tier, tier -> xmin, tier -> xmax, U"");
 			}
 		}
@@ -319,35 +301,37 @@ void structTextGrid :: v_repair () {
 
 void structTextGrid :: v_shiftX (double xfrom, double xto) {
 	TextGrid_Parent :: v_shiftX (xfrom, xto);
-	for (long i = 1; i <= our numberOfTiers(); i ++) {
-		Function tier = our tier (i);
+	for (long i = 1; i <= our tiers->size; i ++) {
+		Function tier = our tiers->at [i];
 		tier -> v_shiftX (xfrom, xto);
 	}
 }
 
 void structTextGrid :: v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto) {
 	TextGrid_Parent :: v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
-	for (long i = 1; i <= our numberOfTiers(); i ++) {
-		Function tier = our tier (i);
+	for (long i = 1; i <= our tiers->size; i ++) {
+		Function tier = our tiers->at [i];
 		tier -> v_scaleX (xminfrom, xmaxfrom, xminto, xmaxto);
 	}
 }
 
+Thing_implement (FunctionList, Ordered, 0);
+
 Thing_implement (TextGrid, Function, 0);
 
-TextGrid TextGrid_createWithoutTiers (double tmin, double tmax) {
+autoTextGrid TextGrid_createWithoutTiers (double tmin, double tmax) {
 	try {
 		autoTextGrid me = Thing_new (TextGrid);
-		my tiers = Ordered_create ();
+		my tiers = FunctionList_create ();
 		my xmin = tmin;
 		my xmax = tmax;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not created.");
 	}
 }
 
-TextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, const char32 *pointTiers) {
+autoTextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, const char32 *pointTiers) {
 	try {
 		autoTextGrid me = TextGrid_createWithoutTiers (tmin, tmax);
 		char32 nameBuffer [400];
@@ -357,10 +341,10 @@ TextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, con
 		 */
 		if (tierNames && tierNames [0]) {
 			str32cpy (nameBuffer, tierNames);
-			for (char32 *tierName = Melder_tok (nameBuffer, U" "); tierName != NULL; tierName = Melder_tok (NULL, U" ")) {
+			for (char32 *tierName = Melder_tok (nameBuffer, U" "); tierName; tierName = Melder_tok (nullptr, U" ")) {
 				autoIntervalTier tier = IntervalTier_create (tmin, tmax);
-				Thing_setName (tier.peek(), tierName);
-				Collection_addItem (my tiers, tier.transfer());
+				Thing_setName (tier.get(), tierName);
+				my tiers -> addItem_move (tier.move());
 			}
 		}
 
@@ -369,26 +353,25 @@ TextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, con
 		 */
 		if (pointTiers && pointTiers [0]) {
 			str32cpy (nameBuffer, pointTiers);
-			for (char32 *tierName = Melder_tok (nameBuffer, U" "); tierName != NULL; tierName = Melder_tok (NULL, U" ")) {
-				for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-					if (str32equ (tierName, Thing_getName (my tier (itier)))) {
+			for (char32 *tierName = Melder_tok (nameBuffer, U" "); tierName; tierName = Melder_tok (nullptr, U" ")) {
+				for (long itier = 1; itier <= my tiers->size; itier ++) {
+					if (str32equ (tierName, Thing_getName (my tiers->at [itier]))) {
 						autoTextTier tier = TextTier_create (tmin, tmax);
-						Thing_setName (tier.peek(), tierName);
-						forget (my tier (itier));
-						my tier (itier) = tier.transfer();
+						Thing_setName (tier.get(), tierName);
+						my tiers -> replaceItem_move (tier.move(), itier);
 					}
 				}
 			}
 		}
-		if (my numberOfTiers() == 0)
+		if (my tiers->size == 0)
 			Melder_throw (U"Cannot create a TextGrid without tiers. Supply at least one tier name.");
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not created.");
 	}
 }
 
-TextTier TextTier_readFromXwaves (MelderFile file) {
+autoTextTier TextTier_readFromXwaves (MelderFile file) {
 	try {
 		char *line;
 
@@ -400,7 +383,7 @@ TextTier TextTier_readFromXwaves (MelderFile file) {
 		 */
 		for (;;) {
 			line = MelderFile_readLine (file);
-			if (line == NULL)
+			if (! line)
 				Melder_throw (U"Missing '#' line.");
 			if (line [0] == '#') break;
 		}
@@ -410,26 +393,26 @@ TextTier TextTier_readFromXwaves (MelderFile file) {
 		 */
 		for (;;) {
 			line = MelderFile_readLine (file);
-			if (line == NULL) break;   // normal end-of-file
+			if (! line) break;   // normal end-of-file
 			double time;
 			long colour;
 			char mark [300];
 			if (sscanf (line, "%lf%ld%s", & time, & colour, mark) < 3)   // BUG: buffer overflow
 				Melder_throw (U"Line too short: \"", Melder_peek8to32 (line), U"\".");
-			TextTier_addPoint (me.peek(), time, Melder_peek8to32 (mark));
+			TextTier_addPoint (me.get(), time, Melder_peek8to32 (mark));
 		}
 
 		/*
 		 * Fix domain.
 		 */
-		if (my numberOfPoints() > 0) {
-			TextPoint point = my point (1);
+		if (my points.size > 0) {
+			TextPoint point = my points.at [1];
 			if (point -> number < 0.0) my xmin = point -> number - 1.0;
-			point = my point (my numberOfPoints());
+			point = my points.at [my points.size];
 			my xmax = point -> number + 1.0;
 		}
 		mfile.close ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextTier not read from Xwaves file.");
 	}
@@ -438,9 +421,9 @@ TextTier TextTier_readFromXwaves (MelderFile file) {
 Function TextGrid_checkSpecifiedTierNumberWithinRange (TextGrid me, long tierNumber) {
 	if (tierNumber < 1)
 		Melder_throw (me, U": the specified tier number is ", tierNumber, U", but should be at least 1.");
-	if (tierNumber > my numberOfTiers())
-		Melder_throw (me, U": the specified tier number (", tierNumber, U") exceeds my number of tiers (", my numberOfTiers(), U").");
-	return my tier (tierNumber);
+	if (tierNumber > my tiers->size)
+		Melder_throw (me, U": the specified tier number (", tierNumber, U") exceeds my number of tiers (", my tiers->size, U").");
+	return my tiers->at [tierNumber];
 }
 
 IntervalTier TextGrid_checkSpecifiedTierIsIntervalTier (TextGrid me, long tierNumber) {
@@ -463,15 +446,15 @@ long TextGrid_countLabels (TextGrid me, long tierNumber, const char32 *text) {
 		long count = 0;
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			for (long i = 1; i <= tier -> numberOfIntervals(); i ++) {
-				TextInterval segment = tier -> interval (i);
+			for (long i = 1; i <= tier -> intervals.size; i ++) {
+				TextInterval segment = tier -> intervals.at [i];
 				if (segment -> text && str32equ (segment -> text, text))
 					count ++;
 			}
 		} else {
 			TextTier tier = static_cast <TextTier> (anyTier);
-			for (long i = 1; i <= tier -> numberOfPoints(); i ++) {
-				TextPoint point = tier -> point (i);
+			for (long i = 1; i <= tier -> points.size; i ++) {
+				TextPoint point = tier -> points.at [i];
 				if (point -> mark && str32equ (point -> mark, text))
 					count ++;
 			}
@@ -486,8 +469,8 @@ long TextGrid_countIntervalsWhere (TextGrid me, long tierNumber, int which_Melde
 	try {
 		long count = 0;
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-			TextInterval interval = tier -> interval (iinterval);
+		for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			if (Melder_stringMatchesCriterion (interval -> text, which_Melder_STRING, criterion)) {
 				count ++;
 			}
@@ -502,8 +485,8 @@ long TextGrid_countPointsWhere (TextGrid me, long tierNumber, int which_Melder_S
 	try {
 		long count = 0;
 		TextTier tier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
-		for (long ipoint = 1; ipoint <= tier -> numberOfPoints(); ipoint ++) {
-			TextPoint point = tier -> point (ipoint);
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			TextPoint point = tier -> points.at [ipoint];
 			if (Melder_stringMatchesCriterion (point -> mark, which_Melder_STRING, criterion)) {
 				count ++;
 			}
@@ -514,47 +497,47 @@ long TextGrid_countPointsWhere (TextGrid me, long tierNumber, int which_Melder_S
 	}
 }
 
-void TextGrid_addTier (TextGrid me, Function anyTier) {
+void TextGrid_addTier_copy (TextGrid me, Function anyTier) {
 	try {
 		autoFunction tier = Data_copy (anyTier);
 		if (tier -> xmin < my xmin) my xmin = tier -> xmin;
 		if (tier -> xmax > my xmax) my xmax = tier -> xmax;
-		Collection_addItem (my tiers, tier.transfer());
+		my tiers -> addItem_move (tier.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": tier not added.");
 	}
 }
 
-TextGrid TextGrid_merge (Collection textGrids) {
+autoTextGrid TextGrids_merge (OrderedOf<structTextGrid>* textGrids) {
 	try {
-		if (textGrids -> size < 1)
+		if (textGrids->size < 1)
 			Melder_throw (U"Cannot merge zero TextGrid objects.");
-		autoTextGrid thee = Data_copy ((TextGrid) textGrids -> item [1]);
-		for (long igrid = 2; igrid <= textGrids -> size; igrid ++) {
-			TextGrid textGrid = (TextGrid) textGrids -> item [igrid];
-			for (long itier = 1; itier <= textGrid -> numberOfTiers(); itier ++) {
-				TextGrid_addTier (thee.peek(), textGrid -> tier (itier));
+		autoTextGrid thee = Data_copy (textGrids->at [1]);
+		for (long igrid = 2; igrid <= textGrids->size; igrid ++) {
+			TextGrid textGrid = textGrids->at [igrid];
+			for (long itier = 1; itier <= textGrid -> tiers->size; itier ++) {
+				TextGrid_addTier_copy (thee.get(), textGrid -> tiers->at [itier]);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrids not merged.");
 	}
 }
 
-TextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preserveTimes) {
+autoTextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preserveTimes) {
 	try {
 		autoTextGrid thee = Data_copy (me);
-		if (tmax <= tmin) return thee.transfer();
+		if (tmax <= tmin) return thee;
 
-		for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-			Function anyTier = thy tier (itier);
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			Function anyTier = thy tiers->at [itier];
 			if (anyTier -> classInfo == classIntervalTier) {
 				IntervalTier tier = static_cast <IntervalTier> (anyTier);
-				for (long iinterval = tier -> numberOfIntervals(); iinterval >= 1; iinterval --) {
-					TextInterval interval = tier -> interval (iinterval);
+				for (long iinterval = tier -> intervals.size; iinterval >= 1; iinterval --) {
+					TextInterval interval = tier -> intervals.at [iinterval];
 					if (interval -> xmin >= tmax || interval -> xmax <= tmin) {
-						Collection_removeItem (tier -> intervals, iinterval);
+						tier -> intervals.removeItem (iinterval);
 					} else {
 						if (interval -> xmin < tmin) interval -> xmin = tmin;
 						if (interval -> xmax > tmax) interval -> xmax = tmax;
@@ -562,10 +545,10 @@ TextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preser
 				}
 			} else {
 				TextTier textTier = static_cast <TextTier> (anyTier);
-				for (long ipoint = textTier -> numberOfPoints(); ipoint >= 1; ipoint --) {
-					TextPoint point = textTier -> point (ipoint);
+				for (long ipoint = textTier -> points.size; ipoint >= 1; ipoint --) {
+					TextPoint point = textTier -> points.at [ipoint];
 					if (point -> number < tmin || point -> number > tmax) {
-						Collection_removeItem (textTier -> points, ipoint);
+						textTier -> points. removeItem (ipoint);
 					}
 				}
 			}
@@ -574,33 +557,33 @@ TextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preser
 		}
 		thy xmin = tmin;
 		thy xmax = tmax;
-		if (! preserveTimes) Function_shiftXTo (thee.peek(), thy xmin, 0.0);
-		return thee.transfer();
+		if (! preserveTimes) Function_shiftXTo (thee.get(), thy xmin, 0.0);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": part not extracted.");
 	}
 }
 
-static TextGrid _Label_to_TextGrid (Label me, double tmin, double tmax) {
+static autoTextGrid _Label_to_TextGrid (Label me, double tmin, double tmax) {
 	autoTextGrid thee = TextGrid_createWithoutTiers (tmin, tmax);
 	for (long itier = 1; itier <= my size; itier ++) {
-		Tier tier = (Tier) my item [itier];
+		Tier tier = my at [itier];
 		autoIntervalTier intervalTier = IntervalTier_create (tmin, tmax);
-		Collection_addItem (thy tiers, intervalTier.transfer());
-		Collection_removeItem (intervalTier -> intervals, 1);
-		for (long iinterval = 1; iinterval <= tier -> size; iinterval ++) {
-			Autosegment autosegment = (Autosegment) tier -> item [iinterval];
+		thy tiers -> addItem_move (intervalTier.move());
+		intervalTier -> intervals.removeItem (1);
+		for (long iinterval = 1; iinterval <= tier->size; iinterval ++) {
+			Autosegment autosegment = tier->at [iinterval];
 			autoTextInterval textInterval = TextInterval_create (
 				iinterval == 1 ? tmin : autosegment -> xmin,
-				iinterval == tier -> size ? tmax : autosegment -> xmax,
+				iinterval == tier->size ? tmax : autosegment -> xmax,
 				autosegment -> name);
-			Collection_addItem (intervalTier -> intervals, textInterval.transfer());
+			intervalTier -> intervals. addItem_move (textInterval.move());
 		}
 	}
-	return thee.transfer();
+	return thee;
 }
 
-TextGrid Label_to_TextGrid (Label me, double duration) {
+autoTextGrid Label_to_TextGrid (Label me, double duration) {
 	try {
 		double tmin = 0.0, tmax = duration;
 		if (duration == 0.0) Label_suggestDomain (me, & tmin, & tmax);
@@ -611,309 +594,309 @@ TextGrid Label_to_TextGrid (Label me, double duration) {
 	}
 }
 
-TextGrid Label_Function_to_TextGrid (Label me, Any function) {
+autoTextGrid Label_Function_to_TextGrid (Label me, Function function) {
 	try {
-		return _Label_to_TextGrid (me, ((Function) function) -> xmin, ((Function) function) -> xmax);
+		return _Label_to_TextGrid (me, function -> xmin, function -> xmax);
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TextGrid.");
 	}
 }
 
-TextTier PointProcess_upto_TextTier (PointProcess me, const char32 *text) {
+autoTextTier PointProcess_upto_TextTier (PointProcess me, const char32 *text) {
 	try {
 		autoTextTier thee = TextTier_create (my xmin, my xmax);
 		for (long i = 1; i <= my nt; i ++) {
-			TextTier_addPoint (thee.peek(), my t [i], text);
+			TextTier_addPoint (thee.get(), my t [i], text);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TextTier.");
 	}
 }
 
-PointProcess TextTier_getPoints (TextTier me, const char32 *text) {
+autoPointProcess TextTier_getPoints (TextTier me, const char32 *text) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long i = 1; i <= my numberOfPoints(); i ++) {
-			TextPoint point = my point (i);
+		for (long i = 1; i <= my points.size; i ++) {
+			TextPoint point = my points.at [i];
 			if (text && text [0]) {
 				if (point -> mark && str32equ (text, point -> mark))
-					PointProcess_addPoint (thee.peek(), point -> number);
+					PointProcess_addPoint (thee.get(), point -> number);
 			} else {
 				if (! point -> mark || ! point -> mark [0])
-					PointProcess_addPoint (thee.peek(), point -> number);
+					PointProcess_addPoint (thee.get(), point -> number);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": points not converted to PointProcess.");
 	}
 }
 
-PointProcess IntervalTier_getStartingPoints (IntervalTier me, const char32 *text) {
+autoPointProcess IntervalTier_getStartingPoints (IntervalTier me, const char32 *text) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long i = 1; i <= my numberOfIntervals(); i ++) {
-			TextInterval interval = my interval (i);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval interval = my intervals.at [i];
 			if (text && text [0]) {
 				if (interval -> text && str32equ (text, interval -> text))
-					PointProcess_addPoint (thee.peek(), interval -> xmin);
+					PointProcess_addPoint (thee.get(), interval -> xmin);
 			} else {
 				if (! interval -> text || ! interval -> text [0])
-					PointProcess_addPoint (thee.peek(), interval -> xmin);
+					PointProcess_addPoint (thee.get(), interval -> xmin);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": starting points not gotten.");
 	}
 }
 
-PointProcess IntervalTier_getEndPoints (IntervalTier me, const char32 *text) {
+autoPointProcess IntervalTier_getEndPoints (IntervalTier me, const char32 *text) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long i = 1; i <= my numberOfIntervals(); i ++) {
-			TextInterval interval = my interval (i);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval interval = my intervals.at [i];
 			if (text && text [0]) {
 				if (interval -> text && str32equ (text, interval -> text))
-					PointProcess_addPoint (thee.peek(), interval -> xmax);
+					PointProcess_addPoint (thee.get(), interval -> xmax);
 			} else {
 				if (! interval -> text || ! interval -> text [0])
-					PointProcess_addPoint (thee.peek(), interval -> xmax);
+					PointProcess_addPoint (thee.get(), interval -> xmax);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": end points not gotten.");
 	}
 }
 
-PointProcess IntervalTier_getCentrePoints (IntervalTier me, const char32 *text) {
+autoPointProcess IntervalTier_getCentrePoints (IntervalTier me, const char32 *text) {
 	try {
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long i = 1; i <= my numberOfIntervals(); i ++) {
-			TextInterval interval = my interval (i);
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval interval = my intervals.at [i];
 			if (text && text [0]) {
 				if (interval -> text && str32equ (text, interval -> text))
-					PointProcess_addPoint (thee.peek(), 0.5 * (interval -> xmin + interval -> xmax));
+					PointProcess_addPoint (thee.get(), 0.5 * (interval -> xmin + interval -> xmax));
 			} else {
 				if (! interval -> text || ! interval -> text [0])
-					PointProcess_addPoint (thee.peek(), 0.5 * (interval -> xmin + interval -> xmax));
+					PointProcess_addPoint (thee.get(), 0.5 * (interval -> xmin + interval -> xmax));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": centre points not gotten.");
 	}
 }
 
-PointProcess TextGrid_getStartingPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
+autoPointProcess TextGrid_getStartingPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-			TextInterval interval = tier -> interval (iinterval);
+		for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			if (Melder_stringMatchesCriterion (interval -> text, which_Melder_STRING, criterion)) {
-				PointProcess_addPoint (thee.peek(), interval -> xmin);
+				PointProcess_addPoint (thee.get(), interval -> xmin);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": starting points not converted to PointProcess.");
 	}
 }
 
-PointProcess TextGrid_getEndPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
+autoPointProcess TextGrid_getEndPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-			TextInterval interval = tier -> interval (iinterval);
+		for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			if (Melder_stringMatchesCriterion (interval -> text, which_Melder_STRING, criterion)) {
-				PointProcess_addPoint (thee.peek(), interval -> xmax);
+				PointProcess_addPoint (thee.get(), interval -> xmax);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": end points not converted to PointProcess.");
 	}
 }
 
-PointProcess TextGrid_getCentrePoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
+autoPointProcess TextGrid_getCentrePoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-			TextInterval interval = tier -> interval (iinterval);
+		for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			if (Melder_stringMatchesCriterion (interval -> text, which_Melder_STRING, criterion)) {
-				PointProcess_addPoint (thee.peek(), 0.5 * (interval -> xmin + interval -> xmax));
+				PointProcess_addPoint (thee.get(), 0.5 * (interval -> xmin + interval -> xmax));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": centre points not converted to PointProcess.");
 	}
 }
 
-PointProcess TextGrid_getPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
+autoPointProcess TextGrid_getPoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		TextTier tier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long ipoint = 1; ipoint <= tier -> numberOfPoints(); ipoint ++) {
-			TextPoint point = tier -> point (ipoint);
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			TextPoint point = tier -> points.at [ipoint];
 			if (Melder_stringMatchesCriterion (point -> mark, which_Melder_STRING, criterion)) {
-				PointProcess_addPoint (thee.peek(), point -> number);
+				PointProcess_addPoint (thee.get(), point -> number);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": points not converted to PointProcess.");
 	}
 }
 
-PointProcess TextGrid_getPoints_preceded (TextGrid me, long tierNumber,
+autoPointProcess TextGrid_getPoints_preceded (TextGrid me, long tierNumber,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_precededBy, const char32 *criterion_precededBy)
 {
 	try {
 		TextTier tier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long ipoint = 1; ipoint <= tier -> numberOfPoints(); ipoint ++) {
-			TextPoint point = tier -> point (ipoint);
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			TextPoint point = tier -> points.at [ipoint];
 			if (Melder_stringMatchesCriterion (point -> mark, which_Melder_STRING, criterion)) {
-				TextPoint preceding = ipoint <= 1 ? NULL : tier -> point (ipoint - 1);
+				TextPoint preceding = ( ipoint <= 1 ? nullptr : tier -> points.at [ipoint - 1] );
 				if (Melder_stringMatchesCriterion (preceding -> mark, which_Melder_STRING_precededBy, criterion_precededBy)) {
-					PointProcess_addPoint (thee.peek(), point -> number);
+					PointProcess_addPoint (thee.get(), point -> number);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": points not converted to PointProcess.");
 	}
 }
 
-PointProcess TextGrid_getPoints_followed (TextGrid me, long tierNumber,
+autoPointProcess TextGrid_getPoints_followed (TextGrid me, long tierNumber,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_followedBy, const char32 *criterion_followedBy)
 {
 	try {
 		TextTier tier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
 		autoPointProcess thee = PointProcess_create (my xmin, my xmax, 10);
-		for (long ipoint = 1; ipoint <= tier -> numberOfPoints(); ipoint ++) {
-			TextPoint point = tier -> point (ipoint);
+		for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+			TextPoint point = tier -> points.at [ipoint];
 			if (Melder_stringMatchesCriterion (point -> mark, which_Melder_STRING, criterion)) {
-				TextPoint following = ipoint >= tier -> numberOfPoints() ? NULL : tier -> point (ipoint + 1);
+				TextPoint following = ( ipoint >= tier -> points.size ? nullptr : tier -> points.at [ipoint + 1] );
 				if (Melder_stringMatchesCriterion (following -> mark, which_Melder_STRING_followedBy, criterion_followedBy)) {
-					PointProcess_addPoint (thee.peek(), point -> number);
+					PointProcess_addPoint (thee.get(), point -> number);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": points not converted to PointProcess.");
 	}
 }
 
-PointProcess IntervalTier_PointProcess_startToCentre (IntervalTier tier, PointProcess point, double phase) {
+autoPointProcess IntervalTier_PointProcess_startToCentre (IntervalTier tier, PointProcess point, double phase) {
 	try {
 		autoPointProcess thee = PointProcess_create (tier -> xmin, tier -> xmax, 10);
 		for (long i = 1; i <= point -> nt; i ++) {
 			double t = point -> t [i];
 			long index = IntervalTier_timeToLowIndex (tier, t);
 			if (index) {
-				TextInterval interval = tier -> interval (index);
+				TextInterval interval = tier -> intervals.at [index];
 				if (interval -> xmin == t)
-					PointProcess_addPoint (thee.peek(), (1 - phase) * interval -> xmin + phase * interval -> xmax);
+					PointProcess_addPoint (thee.get(), (1 - phase) * interval -> xmin + phase * interval -> xmax);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (tier, U" & ", point, U": starts of intervals not converted to PointProcess.");
 	}
 }
 
-PointProcess IntervalTier_PointProcess_endToCentre (IntervalTier tier, PointProcess point, double phase) {
+autoPointProcess IntervalTier_PointProcess_endToCentre (IntervalTier tier, PointProcess point, double phase) {
 	try {
 		autoPointProcess thee = PointProcess_create (tier -> xmin, tier -> xmax, 10);
 		for (long i = 1; i <= point -> nt; i ++) {
 			double t = point -> t [i];
 			long index = IntervalTier_timeToHighIndex (tier, t);
 			if (index) {
-				TextInterval interval = tier -> interval (index);
+				TextInterval interval = tier -> intervals.at [index];
 				if (interval -> xmax == t)
-					PointProcess_addPoint (thee.peek(), (1 - phase) * interval -> xmin + phase * interval -> xmax);
+					PointProcess_addPoint (thee.get(), (1 - phase) * interval -> xmin + phase * interval -> xmax);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (tier, U" & ", point, U": ends of intervals not converted to PointProcess.");
 	}
 }
 
-TableOfReal IntervalTier_downto_TableOfReal (IntervalTier me, const char32 *label) {
+autoTableOfReal IntervalTier_downto_TableOfReal (IntervalTier me, const char32 *label) {
 	try {
 		long n = 0;
-		for (long i = 1; i <= my numberOfIntervals(); i ++) {
-			TextInterval interval = my interval (i);
-			if (label == NULL || (label [0] == U'\0' && ! interval -> text) || (interval -> text && str32equ (interval -> text, label)))
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval interval = my intervals.at [i];
+			if (! label || (label [0] == U'\0' && ! interval -> text) || (interval -> text && str32equ (interval -> text, label)))
 				n ++;
 		}
 		autoTableOfReal thee = TableOfReal_create (n, 3);
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"Start");
-		TableOfReal_setColumnLabel (thee.peek(), 2, U"End");
-		TableOfReal_setColumnLabel (thee.peek(), 3, U"Duration");
+		TableOfReal_setColumnLabel (thee.get(), 1, U"Start");
+		TableOfReal_setColumnLabel (thee.get(), 2, U"End");
+		TableOfReal_setColumnLabel (thee.get(), 3, U"Duration");
 		n = 0;
-		for (long i = 1; i <= my numberOfIntervals(); i ++) {
-			TextInterval interval = my interval (i);
-			if (label == NULL || (label [0] == U'\0' && ! interval -> text) || (interval -> text && str32equ (interval -> text, label))) {
+		for (long i = 1; i <= my intervals.size; i ++) {
+			TextInterval interval = my intervals.at [i];
+			if (! label || (label [0] == U'\0' && ! interval -> text) || (interval -> text && str32equ (interval -> text, label))) {
 				n ++;
-				TableOfReal_setRowLabel (thee.peek(), n, interval -> text ? interval -> text : U"");
+				TableOfReal_setRowLabel (thee.get(), n, interval -> text ? interval -> text : U"");
 				thy data [n] [1] = interval -> xmin;
 				thy data [n] [2] = interval -> xmax;
 				thy data [n] [3] = interval -> xmax - interval -> xmin;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
 }
 
-TableOfReal IntervalTier_downto_TableOfReal_any (IntervalTier me) {
-	return IntervalTier_downto_TableOfReal (me, NULL);
+autoTableOfReal IntervalTier_downto_TableOfReal_any (IntervalTier me) {
+	return IntervalTier_downto_TableOfReal (me, nullptr);
 }
 
-TableOfReal TextTier_downto_TableOfReal (TextTier me, const char32 *label) {
+autoTableOfReal TextTier_downto_TableOfReal (TextTier me, const char32 *label) {
 	try {
 		long n = 0;
-		for (long i = 1; i <= my numberOfPoints(); i ++) {
-			TextPoint point = my point (i);
-			if (label == NULL || (label [0] == U'\0' && ! point -> mark) || (point -> mark && str32equ (point -> mark, label)))
+		for (long i = 1; i <= my points.size; i ++) {
+			TextPoint point = my points.at [i];
+			if (! label || (label [0] == U'\0' && ! point -> mark) || (point -> mark && str32equ (point -> mark, label)))
 				n ++;
 		}
 		autoTableOfReal thee = TableOfReal_create (n, 1);
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"Time");
+		TableOfReal_setColumnLabel (thee.get(), 1, U"Time");
 		n = 0;
-		for (long i = 1; i <= my numberOfPoints(); i ++) {
-			TextPoint point = my point (i);
-			if (label == NULL || (label [0] == U'\0' && ! point -> mark) || (point -> mark && str32equ (point -> mark, label))) {
+		for (long i = 1; i <= my points.size; i ++) {
+			TextPoint point = my points.at [i];
+			if (! label || (label [0] == U'\0' && ! point -> mark) || (point -> mark && str32equ (point -> mark, label))) {
 				n ++;
-				TableOfReal_setRowLabel (thee.peek(), n, point -> mark ? point -> mark : U"");
+				TableOfReal_setRowLabel (thee.get(), n, point -> mark ? point -> mark : U"");
 				thy data [n] [1] = point -> number;
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
 }
 
-TableOfReal TextTier_downto_TableOfReal_any (TextTier me) {
-	return TextTier_downto_TableOfReal (me, NULL);
+autoTableOfReal TextTier_downto_TableOfReal_any (TextTier me) {
+	return TextTier_downto_TableOfReal (me, nullptr);
 }
 
-IntervalTier IntervalTier_readFromXwaves (MelderFile file) {
+autoIntervalTier IntervalTier_readFromXwaves (MelderFile file) {
 	try {
 		char *line;
 		double lastTime = 0.0;
@@ -926,7 +909,7 @@ IntervalTier IntervalTier_readFromXwaves (MelderFile file) {
 		 */
 		for (;;) {
 			line = MelderFile_readLine (file);
-			if (line == NULL)
+			if (! line)
 				Melder_throw (U"Missing '#' line.");
 			if (line [0] == '#') break;
 		}
@@ -940,7 +923,7 @@ IntervalTier IntervalTier_readFromXwaves (MelderFile file) {
 			char mark [300];
 
 			line = MelderFile_readLine (file);
-			if (line == NULL) break;   // normal end-of-file
+			if (! line) break;   // normal end-of-file
 			numberOfElements = sscanf (line, "%lf%ld%s", & time, & colour, mark);
 			if (numberOfElements == 0) {
 				break;   // an empty line, hopefully at the end
@@ -950,11 +933,11 @@ IntervalTier IntervalTier_readFromXwaves (MelderFile file) {
 			if (numberOfElements == 2)
 				mark [0] = '\0';
 			if (lastTime == 0.0) {
-				TextInterval interval = my interval (1);
+				TextInterval interval = my intervals.at [1];
 				interval -> xmax = time;
 				TextInterval_setText (interval, Melder_peek8to32 (mark));
 			} else {
-				IntervalTier_addInterval_unsafe (me.peek(), lastTime, time, Melder_peek8to32 (mark));
+				IntervalTier_addInterval_unsafe (me.get(), lastTime, time, Melder_peek8to32 (mark));
 			}
 			lastTime = time;
 		}
@@ -963,12 +946,12 @@ IntervalTier IntervalTier_readFromXwaves (MelderFile file) {
 		 * Fix domain.
 		 */
 		if (lastTime > 0.0) {
-			TextInterval lastInterval = my interval (my numberOfIntervals());
+			TextInterval lastInterval = my intervals.at [my intervals.size];
 			my xmax = lastInterval -> xmax = lastTime;
 		}
 
 		mfile.close ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"IntervalTier not read from file ", file, U".");
 	}
@@ -978,8 +961,8 @@ void IntervalTier_writeToXwaves (IntervalTier me, MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "w");
 		fprintf (f, "separator ;\nnfields 1\n#\n");
-		for (long iinterval = 1; iinterval <= my numberOfIntervals(); iinterval ++) {
-			TextInterval interval = my interval (iinterval);
+		for (long iinterval = 1; iinterval <= my intervals.size; iinterval ++) {
+			TextInterval interval = my intervals.at [iinterval];
 			fprintf (f, "\t%.6f 26\t%s\n", interval -> xmax, Melder_peek32to8 (interval -> text));
 		}
 		f.close (file);
@@ -988,11 +971,11 @@ void IntervalTier_writeToXwaves (IntervalTier me, MelderFile file) {
 	}
 }
 
-TextGrid PointProcess_to_TextGrid_vuv (PointProcess me, double maxT, double meanT) {
+autoTextGrid PointProcess_to_TextGrid_vuv (PointProcess me, double maxT, double meanT) {
 	try {
-		autoTextGrid thee = TextGrid_create (my xmin, my xmax, U"vuv", NULL);
-		IntervalTier tier = static_cast <IntervalTier> (thy tier (1));
-		Collection_removeItem (tier -> intervals, 1);
+		autoTextGrid thee = TextGrid_create (my xmin, my xmax, U"vuv", nullptr);
+		IntervalTier tier = static_cast <IntervalTier> (thy tiers->at [1]);
+		tier -> intervals. removeItem (1);
 		long ipointright;
 		double beginVoiceless = my xmin, endVoiceless, halfMeanT = 0.5 * meanT;
 		for (long ipointleft = 1; ipointleft <= my nt; ipointleft = ipointright + 1) {
@@ -1015,7 +998,7 @@ TextGrid PointProcess_to_TextGrid_vuv (PointProcess me, double maxT, double mean
 		if (endVoiceless > beginVoiceless) {
 			IntervalTier_addInterval_unsafe (tier, beginVoiceless, endVoiceless, U"U");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TextGrid (vuv).");
 	}
@@ -1031,8 +1014,8 @@ long TextPoint_labelLength (TextPoint me) {
 
 long IntervalTier_maximumLabelLength (IntervalTier me) {
 	long maximum = 0;
-	for (long iinterval = 1; iinterval <= my numberOfIntervals(); iinterval ++) {
-		long length = TextInterval_labelLength (my interval (iinterval));
+	for (long iinterval = 1; iinterval <= my intervals.size; iinterval ++) {
+		long length = TextInterval_labelLength (my intervals.at [iinterval]);
 		if (length > maximum) {
 			maximum = length;
 		}
@@ -1042,8 +1025,8 @@ long IntervalTier_maximumLabelLength (IntervalTier me) {
 
 long TextTier_maximumLabelLength (TextTier me) {
 	long maximum = 0;
-	for (long ipoint = 1; ipoint <= my numberOfPoints(); ipoint ++) {
-		long length = TextPoint_labelLength (my point (ipoint));
+	for (long ipoint = 1; ipoint <= my points.size; ipoint ++) {
+		long length = TextPoint_labelLength (my points.at [ipoint]);
 		if (length > maximum) {
 			maximum = length;
 		}
@@ -1053,8 +1036,8 @@ long TextTier_maximumLabelLength (TextTier me) {
 
 long TextGrid_maximumLabelLength (TextGrid me) {
 	long maximum = 0;
-	for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-		Function anyTier = my tier (itier);
+	for (long itier = 1; itier <= my tiers->size; itier ++) {
+		Function anyTier = my tiers->at [itier];
 		long length = anyTier -> classInfo == classIntervalTier ?
 			IntervalTier_maximumLabelLength ((IntervalTier) anyTier) :
 			TextTier_maximumLabelLength ((TextTier) anyTier);
@@ -1088,18 +1071,18 @@ static void genericize (char32 **pstring, char32 *buffer) {
 void TextGrid_genericize (TextGrid me) {
 	try {
 		autostring32 buffer = Melder_calloc (char32, TextGrid_maximumLabelLength (me) * 3 + 1);
-		for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-			Function anyTier = my tier (itier);
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			Function anyTier = my tiers->at [itier];
 			if (anyTier -> classInfo == classIntervalTier) {
 				IntervalTier tier = static_cast <IntervalTier> (anyTier);
-				for (long i = 1; i <= tier -> numberOfIntervals(); i ++) {
-					TextInterval interval = tier -> interval (i);
+				for (long i = 1; i <= tier -> intervals.size; i ++) {
+					TextInterval interval = tier -> intervals.at [i];
 					genericize (& interval -> text, buffer.peek());
 				}
 			} else {
 				TextTier tier = static_cast <TextTier> (anyTier);
-				for (long i = 1; i <= tier -> numberOfPoints(); i ++) {
-					TextPoint point = tier -> point (i);
+				for (long i = 1; i <= tier -> points.size; i ++) {
+					TextPoint point = tier -> points.at [i];
 					genericize (& point -> mark, buffer.peek());
 				}
 			}
@@ -1112,23 +1095,23 @@ void TextGrid_genericize (TextGrid me) {
 void TextGrid_nativize (TextGrid me) {
 	try {
 		autostring32 buffer = Melder_calloc (char32, TextGrid_maximumLabelLength (me) + 1);
-		for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-			Function anyTier = my tier (itier);
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			Function anyTier = my tiers->at [itier];
 			if (anyTier -> classInfo == classIntervalTier) {
 				IntervalTier tier = static_cast <IntervalTier> (anyTier);
-				for (long i = 1; i <= tier -> numberOfIntervals(); i ++) {
-					TextInterval interval = tier -> interval (i);
+				for (long i = 1; i <= tier -> intervals.size; i ++) {
+					TextInterval interval = tier -> intervals.at [i];
 					if (interval -> text) {
-						Longchar_nativize32 (interval -> text, buffer.peek(), FALSE);
+						Longchar_nativize32 (interval -> text, buffer.peek(), false);
 						str32cpy (interval -> text, buffer.peek());
 					}
 				}
 			} else {
 				TextTier tier = static_cast <TextTier> (anyTier);
-				for (long i = 1; i <= tier -> numberOfPoints(); i ++) {
-					TextPoint point = tier -> point (i);
+				for (long i = 1; i <= tier -> points.size; i ++) {
+					TextPoint point = tier -> points.at [i];
 					if (point -> mark) {
-						Longchar_nativize32 (point -> mark, buffer.peek(), FALSE);
+						Longchar_nativize32 (point -> mark, buffer.peek(), false);
 						str32cpy (point -> mark, buffer.peek());
 					}
 				}
@@ -1148,15 +1131,15 @@ void TextPoint_removeText (TextPoint me) {
 }
 
 void IntervalTier_removeText (IntervalTier me) {
-	long ninterval = my numberOfIntervals ();
+	long ninterval = my intervals.size;
 	for (long iinterval = 1; iinterval <= ninterval; iinterval ++)
-		TextInterval_removeText (my interval (iinterval));
+		TextInterval_removeText (my intervals.at [iinterval]);
 }
 
 void TextTier_removeText (TextTier me) {
-	long npoint = my numberOfPoints ();
+	long npoint = my points.size;
 	for (long ipoint = 1; ipoint <= npoint; ipoint ++)
-		TextPoint_removeText (my point (ipoint));
+		TextPoint_removeText (my points.at [ipoint]);
 }
 
 void TextGrid_insertBoundary (TextGrid me, int tierNumber, double t) {
@@ -1170,13 +1153,13 @@ void TextGrid_insertBoundary (TextGrid me, int tierNumber, double t) {
 		long intervalNumber = IntervalTier_timeToIndex (intervalTier, t);
 		if (intervalNumber == 0)
 			Melder_throw (U"Cannot add a boundary at ", Melder_fixed (t, 6), U" seconds, because this is outside the time domain of the intervals.");
-		TextInterval interval = intervalTier -> interval (intervalNumber);
+		TextInterval interval = intervalTier -> intervals.at [intervalNumber];
 		/*
 		 * Move the text to the left of the boundary.
 		 */
 		autoTextInterval newInterval = TextInterval_create (t, interval -> xmax, U"");
 		interval -> xmax = t;
-		Collection_addItem (intervalTier -> intervals, newInterval.transfer());
+		intervalTier -> intervals. addItem_move (newInterval.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": boundary not inserted.");
 	}
@@ -1185,21 +1168,21 @@ void TextGrid_insertBoundary (TextGrid me, int tierNumber, double t) {
 void IntervalTier_removeLeftBoundary (IntervalTier me, long intervalNumber) {
 	try {
 		Melder_assert (intervalNumber > 1);
-		Melder_assert (intervalNumber <= my numberOfIntervals ());
-		TextInterval left = my interval (intervalNumber - 1);
-		TextInterval right = my interval (intervalNumber);
+		Melder_assert (intervalNumber <= my intervals.size);
+		TextInterval left = my intervals.at [intervalNumber - 1];
+		TextInterval right = my intervals.at [intervalNumber];
 		/*
 		 * Move the text to the left of the boundary.
 		 */
 		left -> xmax = right -> xmax;   // collapse left and right intervals into left interval
-		if (right -> text == NULL) {
+		if (! right -> text) {
 			;
-		} else if (left -> text == NULL) {
+		} else if (! left -> text) {
 			TextInterval_setText (left, right -> text);
 		} else {
 			TextInterval_setText (left, Melder_cat (left -> text, right -> text));
 		}
-		Collection_removeItem (my intervals, intervalNumber);   // remove right interval
+		my intervals. removeItem (intervalNumber);   // remove right interval
 	} catch (MelderError) {
 		Melder_throw (me, U": left boundary not removed.");
 	}
@@ -1224,9 +1207,9 @@ void TextGrid_removeBoundaryAtTime (TextGrid me, int tierNumber, double t) {
 void TextGrid_setIntervalText (TextGrid me, int tierNumber, long intervalNumber, const char32 *text) {
 	try {
 		IntervalTier intervalTier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		if (intervalNumber < 1 || intervalNumber > intervalTier -> numberOfIntervals ())
+		if (intervalNumber < 1 || intervalNumber > intervalTier -> intervals.size)
 			Melder_throw (U"Interval ", intervalNumber, U" does not exist on tier ", tierNumber, U".");
-		TextInterval interval = intervalTier -> interval (intervalNumber);
+		TextInterval interval = intervalTier -> intervals.at [intervalNumber];
 		TextInterval_setText (interval, text);
 	} catch (MelderError) {
 		Melder_throw (me, U": interval text not set.");
@@ -1236,24 +1219,24 @@ void TextGrid_setIntervalText (TextGrid me, int tierNumber, long intervalNumber,
 void TextGrid_insertPoint (TextGrid me, int tierNumber, double t, const char32 *mark) {
 	try {
 		TextTier textTier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
-		if (AnyTier_hasPoint (textTier, t))
+		if (AnyTier_hasPoint (textTier->asAnyTier(), t))
 			Melder_throw (U"There is already a point at ", t, U" seconds.");
 		autoTextPoint newPoint = TextPoint_create (t, mark);
-		Collection_addItem (textTier -> points, newPoint.transfer());
+		textTier -> points. addItem_move (newPoint.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": point not inserted.");
 	}
 }
 
 void TextTier_removePoint (TextTier me, long ipoint) {
-	Melder_assert (ipoint <= my numberOfPoints());
-	Collection_removeItem (my points, ipoint);
+	Melder_assert (ipoint <= my points.size);
+	my points. removeItem (ipoint);
 }
 
 void TextTier_removePoints (TextTier me, int which_Melder_STRING, const char32 *criterion) {
-	for (long i = my numberOfPoints (); i > 0; i --)
-		if (Melder_stringMatchesCriterion (my point (i) -> mark, which_Melder_STRING, criterion))
-			Collection_removeItem (my points, i);
+	for (long i = my points.size; i > 0; i --)
+		if (Melder_stringMatchesCriterion (my points.at [i] -> mark, which_Melder_STRING, criterion))
+			my points. removeItem (i);
 }
 
 void TextGrid_removePoints (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion) {
@@ -1268,9 +1251,9 @@ void TextGrid_removePoints (TextGrid me, long tierNumber, int which_Melder_STRIN
 void TextGrid_setPointText (TextGrid me, int tierNumber, long pointNumber, const char32 *text) {
 	try {
 		TextTier textTier = TextGrid_checkSpecifiedTierIsPointTier (me, tierNumber);
-		if (pointNumber < 1 || pointNumber > textTier -> numberOfPoints ())
+		if (pointNumber < 1 || pointNumber > textTier -> points.size)
 			Melder_throw (U"Point ", pointNumber, U" does not exist on tier ", tierNumber, U".");
-		TextPoint point = textTier -> point (pointNumber);
+		TextPoint point = textTier -> points.at [pointNumber];
 		TextPoint_setText (point, text);
 	} catch (MelderError) {
 		Melder_throw (me, U": point text not set.");
@@ -1299,7 +1282,7 @@ static void sgmlToPraat (char *text) {
 				{ "ocirc", "\\o^" }, { "ocirc", "\\o^" },
 				{ "Acirc", "\\A^" }, { "Ecirc", "\\E^" }, { "Icirc", "\\I^" },
 				{ "Ocirc", "\\O^" }, { "Ucirc", "\\U^" },
-				{ NULL, NULL } };
+				{ nullptr, nullptr } };
 			char sgmlCode [201];
 			int i = 0;
 			++ sgml;
@@ -1314,14 +1297,14 @@ static void sgmlToPraat (char *text) {
 			}
 			if (i >= 200) Melder_throw (U"Unfinished SGML code.");
 			sgmlCode [i] = '\0';
-			for (i = 0; translations [i]. sgml != NULL; i ++) {
+			for (i = 0; translations [i]. sgml; i ++) {
 				if (strequ (sgmlCode, translations [i]. sgml)) {
 					memcpy (praat, translations [i]. praat, strlen (translations [i]. praat));
 					praat += strlen (translations [i]. praat);
 					break;
 				}
 			}
-			if (translations [i]. sgml == NULL) Melder_throw (U"Unknown SGML code &", Melder_peek8to32 (sgmlCode), U";.");
+			if (! translations [i]. sgml) Melder_throw (U"Unknown SGML code &", Melder_peek8to32 (sgmlCode), U";.");
 		} else {
 			* praat ++ = * sgml ++;
 		}
@@ -1329,7 +1312,7 @@ static void sgmlToPraat (char *text) {
 	*praat = '\0';
 }
 
-TextGrid TextGrid_readFromChronologicalTextFile (MelderFile file) {
+autoTextGrid TextGrid_readFromChronologicalTextFile (MelderFile file) {
 	try {
 		int formatVersion = 0;
 		autoMelderReadText text = MelderReadText_createFromFile (file);
@@ -1338,7 +1321,7 @@ TextGrid TextGrid_readFromChronologicalTextFile (MelderFile file) {
 			Melder_throw (U"This is not a chronological TextGrid text file.");
 		autoTextGrid me = Thing_new (TextGrid);
 		my structFunction :: v_readText (text.peek(), formatVersion);
-		my tiers = Ordered_create ();
+		my tiers = FunctionList_create ();
 		long numberOfTiers = texgeti4 (text.peek());
 		for (long itier = 1; itier <= numberOfTiers; itier ++) {
 			autostring32 klas = texgetw2 (text.peek());
@@ -1346,14 +1329,12 @@ TextGrid TextGrid_readFromChronologicalTextFile (MelderFile file) {
 				autoIntervalTier tier = Thing_new (IntervalTier);
 				tier -> name = texgetw2 (text.peek());
 				tier -> structFunction :: v_readText (text.peek(), formatVersion);
-				tier -> intervals = SortedSetOfDouble_create ();
-				Collection_addItem (my tiers, tier.transfer());
+				my tiers -> addItem_move (tier.move());
 			} else if (str32equ (klas.peek(), U"TextTier")) {
 				autoTextTier tier = Thing_new (TextTier);
 				tier -> name = texgetw2 (text.peek());
 				tier -> structFunction :: v_readText (text.peek(), formatVersion);
-				tier -> points = SortedSetOfDouble_create ();
-				Collection_addItem (my tiers, tier.transfer());
+				my tiers -> addItem_move (tier.move());
 			} else {
 				Melder_throw (U"Unknown tier class \"", klas.peek(), U"\".");
 			}
@@ -1370,20 +1351,20 @@ TextGrid TextGrid_readFromChronologicalTextFile (MelderFile file) {
 					throw;
 				}
 			}
-			Function anyTier = TextGrid_checkSpecifiedTierNumberWithinRange (me.peek(), tierNumber);
+			Function anyTier = TextGrid_checkSpecifiedTierNumberWithinRange (me.get(), tierNumber);
 			if (anyTier -> classInfo == classIntervalTier) {
 				IntervalTier tier = static_cast <IntervalTier> (anyTier);
 				autoTextInterval interval = Thing_new (TextInterval);
 				interval -> v_readText (text.peek(), formatVersion);
-				Collection_addItem (tier -> intervals, interval.transfer());   // not earlier: sorting depends on contents of interval
+				tier -> intervals. addItem_move (interval.move());   // not earlier: sorting depends on contents of interval
 			} else {
 				TextTier tier = static_cast <TextTier> (anyTier);
 				autoTextPoint point = Thing_new (TextPoint);
 				point -> v_readText (text.peek(), formatVersion);
-				Collection_addItem (tier -> points, point.transfer());   // not earlier: sorting depends on contents of point
+				tier -> points. addItem_move (point.move());   // not earlier: sorting depends on contents of point
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not read from chronological text file ", file, U".");
 	}
@@ -1413,9 +1394,9 @@ void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file) {
 		file -> verbose = false;
 		texindent (file);
 		MelderFile_write (file, U"\"Praat chronological TextGrid text file\"\n", my xmin, U" ", my xmax,
-			U"   ! Time domain.\n", my numberOfTiers(), U"   ! Number of tiers.");
-		for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-			Function anyTier = my tier (itier);
+			U"   ! Time domain.\n", my tiers->size, U"   ! Number of tiers.");
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			Function anyTier = my tiers->at [itier];
 			MelderFile_write (file, U"\n");
 			writeQuotedString (file, Thing_className (anyTier));
 			MelderFile_write (file, U" ");
@@ -1425,12 +1406,12 @@ void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file) {
 		for (;;) {
 			double firstRemainingTime = +1e308;
 			long firstRemainingTier = 2000000000, firstRemainingElement = 0;
-			for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-				Function anyTier = my tier (itier);
+			for (long itier = 1; itier <= my tiers->size; itier ++) {
+				Function anyTier = my tiers->at [itier];
 				if (anyTier -> classInfo == classIntervalTier) {
 					IntervalTier tier = static_cast <IntervalTier> (anyTier);
-					for (long ielement = 1; ielement <= tier -> numberOfIntervals(); ielement ++) {
-						TextInterval interval = tier -> interval (ielement);
+					for (long ielement = 1; ielement <= tier -> intervals.size; ielement ++) {
+						TextInterval interval = tier -> intervals.at [ielement];
 						if ((interval -> xmin > sortingTime ||   // sort primarily by time
 							 (interval -> xmin == sortingTime && itier > sortingTier)) &&   // sort secondarily by tier number
 							(interval -> xmin < firstRemainingTime ||   // sort primarily by time
@@ -1443,8 +1424,8 @@ void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file) {
 					}
 				} else {
 					TextTier tier = static_cast <TextTier> (anyTier);
-					for (long ielement = 1; ielement <= tier -> numberOfPoints(); ielement ++) {
-						TextPoint point = tier -> point (ielement);
+					for (long ielement = 1; ielement <= tier -> points.size; ielement ++) {
+						TextPoint point = tier -> points.at [ielement];
 						if ((point -> number > sortingTime ||   // sort primarily by time
 							 (point -> number == sortingTime && itier > sortingTier)) &&   // sort secondarily by tier number
 							(point -> number < firstRemainingTime ||   // sort primarily by time
@@ -1460,16 +1441,16 @@ void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file) {
 			if (firstRemainingElement == 0) {
 				break;
 			} else {
-				Function anyTier = my tier (firstRemainingTier);
+				Function anyTier = my tiers->at [firstRemainingTier];
 				if (anyTier -> classInfo == classIntervalTier) {
 					IntervalTier tier = static_cast <IntervalTier> (anyTier);
-					TextInterval interval = tier -> interval (firstRemainingElement);
+					TextInterval interval = tier -> intervals.at [firstRemainingElement];
 					if (tier -> name) MelderFile_write (file, U"\n\n! ", tier -> name, U":");
 					MelderFile_write (file, U"\n", firstRemainingTier, U" ", interval -> xmin, U" ", interval -> xmax);
 					texputw4 (file, interval -> text, U"", 0,0,0,0,0);
 				} else {
 					TextTier tier = static_cast <TextTier> (anyTier);
-					TextPoint point = tier -> point (firstRemainingElement);
+					TextPoint point = tier -> points.at [firstRemainingElement];
 					if (tier -> name) MelderFile_write (file, U"\n\n! ", tier -> name, U":");
 					MelderFile_write (file, U"\n", firstRemainingTier, U" ", point -> number, U" ");
 					texputw4 (file, point -> mark, U"", 0,0,0,0,0);
@@ -1485,15 +1466,15 @@ void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file) {
 	}
 }
 
-TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
+autoTextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 	try {
 		autoTextGrid me = Thing_new (TextGrid);
 		long sentenceNumber = 0;
 		double phraseBegin = 0.0, phraseEnd = 0.0;
-		IntervalTier sentenceTier = NULL, phraseTier = NULL;
-		TextInterval lastInterval = NULL;
+		IntervalTier sentenceTier = nullptr, phraseTier = nullptr;
+		TextInterval lastInterval = nullptr;
 		static char phrase [1000];
-		my tiers = Ordered_create ();
+		my tiers = FunctionList_create ();
 		autoMelderFile mfile = MelderFile_open (file);
 		char *line = MelderFile_readLine (file);
 		if (! strequ (line, "<?xml version=\"1.0\"?>"))
@@ -1539,8 +1520,8 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 				/*
 				 * Does this speaker name occur in the tiers?
 				 */
-				for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-					IntervalTier tier = static_cast <IntervalTier> (my tier (itier));
+				for (long itier = 1; itier <= my tiers->size; itier ++) {
+					IntervalTier tier = static_cast <IntervalTier> (my tiers->at [itier]);
 					if (str32equ (tier -> name, Melder_peek8to32 (speakerName))) {
 						speakerTier = itier;
 						break;
@@ -1551,22 +1532,18 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 					 * Create two new tiers.
 					 */
 					autoIntervalTier newSentenceTier = Thing_new (IntervalTier);
-					newSentenceTier -> intervals = SortedSetOfDouble_create ();
 					newSentenceTier -> xmin = 0.0;
 					newSentenceTier -> xmax = my xmax;
-					Thing_setName (newSentenceTier.peek(), Melder_peek8to32 (speakerName));
-					sentenceTier = newSentenceTier.peek();   // for later use; this seems safe
-					Collection_addItem (my tiers, newSentenceTier.transfer());
+					Thing_setName (newSentenceTier.get(), Melder_peek8to32 (speakerName));
+					sentenceTier = (IntervalTier) my tiers -> addItem_move (newSentenceTier.move());
 					autoIntervalTier newPhraseTier = Thing_new (IntervalTier);
-					newPhraseTier -> intervals = SortedSetOfDouble_create ();
 					newPhraseTier -> xmin = 0.0;
 					newPhraseTier -> xmax = my xmax;
-					Thing_setName (newPhraseTier.peek(), Melder_peek8to32 (speakerName));
-					phraseTier = newPhraseTier.peek();
-					Collection_addItem (my tiers, newPhraseTier.transfer());
+					Thing_setName (newPhraseTier.get(), Melder_peek8to32 (speakerName));
+					phraseTier = (IntervalTier) my tiers -> addItem_move (newPhraseTier.move());
 				} else {
-					sentenceTier = (IntervalTier) my tier (speakerTier);
-					phraseTier = (IntervalTier) my tier (speakerTier + 1);
+					sentenceTier = (IntervalTier) my tiers->at [speakerTier];
+					phraseTier = (IntervalTier) my tiers->at [speakerTier + 1];
 				}
 				tb = atof (arg4 + 4), te = atof (arg5 + 4);
 				if (te <= tb)
@@ -1574,24 +1551,24 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 				/*
 				 * We are going to add one or two intervals to the sentence tier.
 				 */
-				if (sentenceTier -> numberOfIntervals() > 0) {
-					TextInterval latestInterval = sentenceTier -> interval (sentenceTier -> numberOfIntervals());
+				if (sentenceTier -> intervals.size > 0) {
+					TextInterval latestInterval = sentenceTier -> intervals.at [sentenceTier -> intervals.size];
 					if (tb > latestInterval -> xmax) {
 						autoTextInterval interval = TextInterval_create (latestInterval -> xmax, tb, U"");
-						Collection_addItem (sentenceTier -> intervals, interval.transfer());
+						sentenceTier -> intervals.addItem_move (interval.move());
 					} else if (tb < latestInterval -> xmax) {
 						Melder_throw (U"Overlap on tier not allowed.");
 					}
 				} else {
 					if (tb > 0.0) {
-						TextInterval interval = TextInterval_create (0.0, tb, U"");
-						Collection_addItem (sentenceTier -> intervals, interval);
+						autoTextInterval interval = TextInterval_create (0.0, tb, U"");
+						sentenceTier -> intervals.addItem_move (interval.move());
 					} else if (tb < 0.0) {
 						Melder_throw (U"Negative times not allowed.");
 					}
 				}
 				autoTextInterval interval = TextInterval_create (tb, te, Melder_integer (++ sentenceNumber));
-				Collection_addItem (sentenceTier -> intervals, interval.transfer());
+				sentenceTier -> intervals.addItem_move (interval.move());
 			} else if (strnequ (line, "    <tw ref=\"", 13)) {
 				int length;
 				double tb, te;
@@ -1627,18 +1604,18 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 						Melder_throw (U"Missing word.");
 					arg7 [length - 3] = '\0';   // truncate "/>
 					strcat (phrase, arg7 + 3);
-					if (phraseTier -> numberOfIntervals() > 0) {
-						TextInterval latestInterval = phraseTier -> interval (phraseTier -> numberOfIntervals());
+					if (phraseTier -> intervals.size > 0) {
+						TextInterval latestInterval = phraseTier -> intervals.at [phraseTier -> intervals.size];
 						if (tb > latestInterval -> xmax) {
 							autoTextInterval interval = TextInterval_create (latestInterval -> xmax, tb, U"");
-							Collection_addItem (phraseTier -> intervals, interval.transfer());
+							phraseTier -> intervals. addItem_move (interval.move());
 						} else if (tb < latestInterval -> xmax) {
 							Melder_throw (U"Overlap on tier not allowed.");
 						}
 					} else {
 						if (tb > 0.0) {
 							autoTextInterval interval = TextInterval_create (0.0, tb, U"");
-							Collection_addItem (phraseTier -> intervals, interval.transfer());
+							phraseTier -> intervals. addItem_move (interval.move());
 						} else if (tb < 0.0) {
 							Melder_throw (U"Negative times not allowed.");
 						}
@@ -1646,8 +1623,8 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 					if (! phraseTier)
 						Melder_throw (U"Phrase outside sentence.");
 					autoTextInterval newLastInterval = TextInterval_create (tb, te, U"");
-					lastInterval = newLastInterval.peek();
-					Collection_addItem (phraseTier -> intervals, newLastInterval.transfer());
+					lastInterval = newLastInterval.get();
+					phraseTier -> intervals.addItem_move (newLastInterval.move());
 					phraseBegin = tb;
 					phraseEnd = te;
 				}
@@ -1657,122 +1634,123 @@ TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file) {
 			sgmlToPraat (phrase);
 			TextInterval_setText (lastInterval, Melder_peek8to32 (phrase));
 		}
-		for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-			IntervalTier tier = static_cast <IntervalTier> (my tier (itier));
-			if (tier -> numberOfIntervals() > 0) {
-				TextInterval latestInterval = tier -> interval (tier -> numberOfIntervals());
+		for (long itier = 1; itier <= my tiers->size; itier ++) {
+			IntervalTier tier = static_cast <IntervalTier> (my tiers->at [itier]);
+			if (tier -> intervals.size > 0) {
+				TextInterval latestInterval = tier -> intervals.at [tier -> intervals.size];
 				if (my xmax > latestInterval -> xmax) {
 					autoTextInterval interval = TextInterval_create (latestInterval -> xmax, my xmax, U"");
-					Collection_addItem (tier -> intervals, interval.transfer());
+					tier -> intervals. addItem_move (interval.move());
 				}
 			} else {
 				autoTextInterval interval = TextInterval_create (my xmin, my xmax, U"");
-				Collection_addItem (tier -> intervals, interval.transfer());
+				tier -> intervals. addItem_move (interval.move());
 			}
 		}
 		mfile.close ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid not read from CGN syntax file ", file, U".");
 	}
 }
 
-Table TextGrid_downto_Table (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals) {
+autoTable TextGrid_downto_Table (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals) {
 	long numberOfRows = 0;
-	for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-		Function anyTier = my tier (itier);
+	for (long itier = 1; itier <= my tiers->size; itier ++) {
+		Function anyTier = my tiers->at [itier];
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
 			if (includeEmptyIntervals) {
-				numberOfRows += tier -> numberOfIntervals();
+				numberOfRows += tier -> intervals.size;
 			} else {
-				for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-					TextInterval interval = tier -> interval (iinterval);
-					if (interval -> text != NULL && interval -> text [0] != U'\0') {
+				for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+					TextInterval interval = tier -> intervals.at [iinterval];
+					if (interval -> text && interval -> text [0] != U'\0') {
 						numberOfRows ++;
 					}
 				}
 			}
 		} else {
 			TextTier tier = static_cast <TextTier> (anyTier);
-			numberOfRows += tier -> numberOfPoints();
+			numberOfRows += tier -> points.size;
 		}
 	}
 	autoTable thee = Table_createWithoutColumnNames (numberOfRows, 3 + includeLineNumbers + includeTierNames);
 	long icol = 0;
 	if (includeLineNumbers)
-		Table_setColumnLabel (thee.peek(), ++ icol, U"line");
-	Table_setColumnLabel (thee.peek(), ++ icol, U"tmin");
+		Table_setColumnLabel (thee.get(), ++ icol, U"line");
+	Table_setColumnLabel (thee.get(), ++ icol, U"tmin");
 	if (includeTierNames)
-		Table_setColumnLabel (thee.peek(), ++ icol, U"tier");
-	Table_setColumnLabel (thee.peek(), ++ icol, U"text");
-	Table_setColumnLabel (thee.peek(), ++ icol, U"tmax");
+		Table_setColumnLabel (thee.get(), ++ icol, U"tier");
+	Table_setColumnLabel (thee.get(), ++ icol, U"text");
+	Table_setColumnLabel (thee.get(), ++ icol, U"tmax");
 	long irow = 0;
-	for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-		Function anyTier = my tier (itier);
+	for (long itier = 1; itier <= my tiers->size; itier ++) {
+		Function anyTier = my tiers->at [itier];
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			for (long iinterval = 1; iinterval <= tier -> numberOfIntervals(); iinterval ++) {
-				TextInterval interval = tier -> interval (iinterval);
-				if (includeEmptyIntervals || (interval -> text != NULL && interval -> text [0] != U'\0')) {
+			for (long iinterval = 1; iinterval <= tier -> intervals.size; iinterval ++) {
+				TextInterval interval = tier -> intervals.at [iinterval];
+				if (includeEmptyIntervals || (interval -> text && interval -> text [0] != U'\0')) {
 					++ irow;
 					icol = 0;
 					if (includeLineNumbers)
-						Table_setNumericValue (thee.peek(), irow, ++ icol, irow);
-					Table_setStringValue (thee.peek(), irow, ++ icol, Melder_fixed (interval -> xmin, timeDecimals));
+						Table_setNumericValue (thee.get(), irow, ++ icol, irow);
+					Table_setStringValue (thee.get(), irow, ++ icol, Melder_fixed (interval -> xmin, timeDecimals));
 					if (includeTierNames)
-						Table_setStringValue (thee.peek(), irow, ++ icol, tier -> name);
-					Table_setStringValue (thee.peek(), irow, ++ icol, interval -> text);
-					Table_setStringValue (thee.peek(), irow, ++ icol, Melder_fixed (interval -> xmax, timeDecimals));
+						Table_setStringValue (thee.get(), irow, ++ icol, tier -> name);
+					Table_setStringValue (thee.get(), irow, ++ icol, interval -> text);
+					Table_setStringValue (thee.get(), irow, ++ icol, Melder_fixed (interval -> xmax, timeDecimals));
 				}
 			}
 		} else {
 			TextTier tier = static_cast <TextTier> (anyTier);
-			for (long ipoint = 1; ipoint <= tier -> numberOfPoints(); ipoint ++) {
-				TextPoint point = tier -> point (ipoint);
+			for (long ipoint = 1; ipoint <= tier -> points.size; ipoint ++) {
+				TextPoint point = tier -> points.at [ipoint];
 				++ irow;
 				icol = 0;
 				if (includeLineNumbers)
-					Table_setNumericValue (thee.peek(), irow, ++ icol, irow);
-				Table_setStringValue (thee.peek(), irow, ++ icol, Melder_fixed (point -> number, timeDecimals));
+					Table_setNumericValue (thee.get(), irow, ++ icol, irow);
+				Table_setStringValue (thee.get(), irow, ++ icol, Melder_fixed (point -> number, timeDecimals));
 				if (includeTierNames)
-					Table_setStringValue (thee.peek(), irow, ++ icol, tier -> name);
-				Table_setStringValue (thee.peek(), irow, ++ icol, point -> mark);
-				Table_setStringValue (thee.peek(), irow, ++ icol, Melder_fixed (point -> number, timeDecimals));
+					Table_setStringValue (thee.get(), irow, ++ icol, tier -> name);
+				Table_setStringValue (thee.get(), irow, ++ icol, point -> mark);
+				Table_setStringValue (thee.get(), irow, ++ icol, Melder_fixed (point -> number, timeDecimals));
 			}
 		}
 	}
 	long columns [1+2] = { 0, 1 + includeLineNumbers, 3 + includeLineNumbers + includeTierNames };   // sort by tmin and tmax
-	Table_sortRows_Assert (thee.peek(), columns, 2);
-	return thee.transfer();
+	Table_sortRows_Assert (thee.get(), columns, 2);
+	return thee;
 }
 
 void TextGrid_list (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals) {
 	try {
 		autoTable table = TextGrid_downto_Table (me, includeLineNumbers, timeDecimals, includeTierNames, includeEmptyIntervals);
-		Table_list (table.peek(), false);
+		Table_list (table.get(), false);
 	} catch (MelderError) {
 		Melder_throw (me, U": not listed.");
 	}
 }
 
 void TextGrid_correctRoundingErrors (TextGrid me) {
-	for (long itier = 1; itier <= my numberOfTiers(); itier ++) {
-		Function anyTier = my tier (itier);
+	for (long itier = 1; itier <= my tiers->size; itier ++) {
+		Function anyTier = my tiers->at [itier];
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			TextInterval first = tier -> interval (1);
+			Melder_assert (tier -> intervals.size > 0);
+			TextInterval first = tier -> intervals.at [1];
 			first -> xmin = my xmin;
 			Melder_assert (first -> xmin < first -> xmax);
-			for (long iinterval = 1; iinterval < tier -> numberOfIntervals(); iinterval ++) {
-				TextInterval left = tier -> interval (iinterval);
-				TextInterval right = tier -> interval (iinterval + 1);
+			for (long iinterval = 1; iinterval < tier -> intervals.size; iinterval ++) {
+				TextInterval left = tier -> intervals.at [iinterval];
+				TextInterval right = tier -> intervals.at [iinterval + 1];
 				right -> xmin = left -> xmax;
 				trace (U"tier ", itier, U", interval ", iinterval, U", ", right -> xmin, U" ", right -> xmax);
 				Melder_assert (right -> xmin < right -> xmax);
 			}
-			TextInterval last = tier -> interval (tier -> numberOfIntervals());
-			trace (tier -> numberOfIntervals(), U" ", last -> xmax, U" ", my xmax);
+			TextInterval last = tier -> intervals.at [tier -> intervals.size];
+			trace (tier -> intervals.size, U" ", last -> xmax, U" ", my xmax);
 			last -> xmax = my xmax;
 			Melder_assert (last -> xmax > last -> xmin);
 		}
@@ -1781,11 +1759,11 @@ void TextGrid_correctRoundingErrors (TextGrid me) {
 	}
 }
 
-TextGrid TextGrids_concatenate (Collection me) {
+autoTextGrid TextGrids_concatenate (OrderedOf<structTextGrid>* me) {
 	try {
 		autoTextGrid thee = TextGrids_to_TextGrid_appendContinuous (me, false);
-		TextGrid_correctRoundingErrors (thee.peek());
-		return thee.transfer();
+		TextGrid_correctRoundingErrors (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrids not concatenated.");
 	}
diff --git a/fon/TextGrid.h b/fon/TextGrid.h
index 8f11f9e..91e4fba 100644
--- a/fon/TextGrid.h
+++ b/fon/TextGrid.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "AnyTier.h"
@@ -25,28 +24,27 @@
 #include "TableOfReal.h"
 #include "Table.h"
 
+Collection_define (FunctionList, OrderedOf, Function) {
+};
+
 #include "TextGrid_def.h"
 
-oo_CLASS_CREATE (TextPoint, AnyPoint);
-TextPoint TextPoint_create (double time, const char32 *mark);
+autoTextPoint TextPoint_create (double time, const char32 *mark);
 
 void TextPoint_setText (TextPoint me, const char32 *text);
 
-oo_CLASS_CREATE (TextInterval, Function);
-TextInterval TextInterval_create (double tmin, double tmax, const char32 *text);
+autoTextInterval TextInterval_create (double tmin, double tmax, const char32 *text);
 
 void TextInterval_setText (TextInterval me, const char32 *text);
 
-oo_CLASS_CREATE (TextTier, Function);
-TextTier TextTier_create (double tmin, double tmax);
+autoTextTier TextTier_create (double tmin, double tmax);
 
 void TextTier_addPoint (TextTier me, double time, const char32 *mark);
-TextTier TextTier_readFromXwaves (MelderFile file);
-PointProcess TextTier_getPoints (TextTier me, const char32 *text);
+autoTextTier TextTier_readFromXwaves (MelderFile file);
+autoPointProcess TextTier_getPoints (TextTier me, const char32 *text);
 
-oo_CLASS_CREATE (IntervalTier, Function);
-IntervalTier IntervalTier_create (double tmin, double tmax);
-IntervalTier IntervalTier_readFromXwaves (MelderFile file);
+autoIntervalTier IntervalTier_create (double tmin, double tmax);
+autoIntervalTier IntervalTier_readFromXwaves (MelderFile file);
 void IntervalTier_writeToXwaves (IntervalTier me, MelderFile file);
 
 long IntervalTier_timeToLowIndex (IntervalTier me, double t);
@@ -54,30 +52,29 @@ long IntervalTier_timeToIndex (IntervalTier me, double t);   // obsolete
 long IntervalTier_timeToHighIndex (IntervalTier me, double t);
 long IntervalTier_hasTime (IntervalTier me, double t);
 long IntervalTier_hasBoundary (IntervalTier me, double t);
-PointProcess IntervalTier_getStartingPoints (IntervalTier me, const char32 *text);
-PointProcess IntervalTier_getEndPoints (IntervalTier me, const char32 *text);
-PointProcess IntervalTier_getCentrePoints (IntervalTier me, const char32 *text);
-PointProcess IntervalTier_PointProcess_startToCentre (IntervalTier tier, PointProcess point, double phase);
-PointProcess IntervalTier_PointProcess_endToCentre (IntervalTier tier, PointProcess point, double phase);
+autoPointProcess IntervalTier_getStartingPoints (IntervalTier me, const char32 *text);
+autoPointProcess IntervalTier_getEndPoints (IntervalTier me, const char32 *text);
+autoPointProcess IntervalTier_getCentrePoints (IntervalTier me, const char32 *text);
+autoPointProcess IntervalTier_PointProcess_startToCentre (IntervalTier tier, PointProcess point, double phase);
+autoPointProcess IntervalTier_PointProcess_endToCentre (IntervalTier tier, PointProcess point, double phase);
 void IntervalTier_removeLeftBoundary (IntervalTier me, long iinterval);
 
 void TextTier_removePoint (TextTier me, long ipoint);
 
-oo_CLASS_CREATE (TextGrid, Function);
-TextGrid TextGrid_createWithoutTiers (double tmin, double tmax);
-TextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, const char32 *pointTiers);
+autoTextGrid TextGrid_createWithoutTiers (double tmin, double tmax);
+autoTextGrid TextGrid_create (double tmin, double tmax, const char32 *tierNames, const char32 *pointTiers);
 
 long TextGrid_countLabels (TextGrid me, long itier, const char32 *text);
 long TextGrid_countIntervalsWhere (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion);
 long TextGrid_countPointsWhere (TextGrid me, long tierNumber, int which_Melder_STRING, const char32 *criterion);
-PointProcess TextGrid_getStartingPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
-PointProcess TextGrid_getEndPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
-PointProcess TextGrid_getCentrePoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
-PointProcess TextGrid_getPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
-PointProcess TextGrid_getPoints_preceded (TextGrid me, long tierNumber,
+autoPointProcess TextGrid_getStartingPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
+autoPointProcess TextGrid_getEndPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
+autoPointProcess TextGrid_getCentrePoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
+autoPointProcess TextGrid_getPoints (TextGrid me, long itier, int which_Melder_STRING, const char32 *criterion);
+autoPointProcess TextGrid_getPoints_preceded (TextGrid me, long tierNumber,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_precededBy, const char32 *criterion_precededBy);
-PointProcess TextGrid_getPoints_followed (TextGrid me, long tierNumber,
+autoPointProcess TextGrid_getPoints_followed (TextGrid me, long tierNumber,
 	int which_Melder_STRING, const char32 *criterion,
 	int which_Melder_STRING_followedBy, const char32 *criterion_followedBy);
 
@@ -85,20 +82,20 @@ Function TextGrid_checkSpecifiedTierNumberWithinRange (TextGrid me, long tierNum
 IntervalTier TextGrid_checkSpecifiedTierIsIntervalTier (TextGrid me, long tierNumber);
 TextTier TextGrid_checkSpecifiedTierIsPointTier (TextGrid me, long tierNumber);
 
-void TextGrid_addTier (TextGrid me, Function tier);
-TextGrid TextGrid_merge (Collection textGrids);
-TextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preserveTimes);
+void TextGrid_addTier_copy (TextGrid me, Function tier);
+autoTextGrid TextGrids_merge (OrderedOf<structTextGrid>* textGrids);
+autoTextGrid TextGrid_extractPart (TextGrid me, double tmin, double tmax, int preserveTimes);
 
-TextGrid Label_to_TextGrid (Label me, double duration);
-TextGrid Label_Function_to_TextGrid (Label me, Any function);
+autoTextGrid Label_to_TextGrid (Label me, double duration);
+autoTextGrid Label_Function_to_TextGrid (Label me, Function function);
 
-TextTier PointProcess_upto_TextTier (PointProcess me, const char32 *text);
-TableOfReal IntervalTier_downto_TableOfReal (IntervalTier me, const char32 *label);
-TableOfReal IntervalTier_downto_TableOfReal_any (IntervalTier me);
-TableOfReal TextTier_downto_TableOfReal (TextTier me, const char32 *label);
-TableOfReal TextTier_downto_TableOfReal_any (TextTier me);
+autoTextTier PointProcess_upto_TextTier (PointProcess me, const char32 *text);
+autoTableOfReal IntervalTier_downto_TableOfReal (IntervalTier me, const char32 *label);
+autoTableOfReal IntervalTier_downto_TableOfReal_any (IntervalTier me);
+autoTableOfReal TextTier_downto_TableOfReal (TextTier me, const char32 *label);
+autoTableOfReal TextTier_downto_TableOfReal_any (TextTier me);
 
-TextGrid PointProcess_to_TextGrid_vuv (PointProcess me, double maxT, double meanT);
+autoTextGrid PointProcess_to_TextGrid_vuv (PointProcess me, double maxT, double meanT);
 
 long TextInterval_labelLength (TextInterval me);
 long TextPoint_labelLength (TextPoint me);
@@ -123,14 +120,14 @@ void TextGrid_insertPoint (TextGrid me, int itier, double t, const char32 *mark)
 void TextGrid_setPointText (TextGrid me, int itier, long ipoint, const char32 *text);
 
 void TextGrid_writeToChronologicalTextFile (TextGrid me, MelderFile file);
-TextGrid TextGrid_readFromChronologicalTextFile (MelderFile file);
-TextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file);
+autoTextGrid TextGrid_readFromChronologicalTextFile (MelderFile file);
+autoTextGrid TextGrid_readFromCgnSyntaxFile (MelderFile file);
 
-Table TextGrid_downto_Table (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals);
+autoTable TextGrid_downto_Table (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals);
 void TextGrid_list (TextGrid me, bool includeLineNumbers, int timeDecimals, bool includeTierNames, bool includeEmptyIntervals);
 
 void TextGrid_correctRoundingErrors (TextGrid me);
-TextGrid TextGrids_concatenate (Collection me);
+autoTextGrid TextGrids_concatenate (OrderedOf<structTextGrid>* me);
 
 /* End of file TextGrid.h */
 #endif
diff --git a/fon/TextGridEditor.cpp b/fon/TextGridEditor.cpp
index 157238f..0417e57 100644
--- a/fon/TextGridEditor.cpp
+++ b/fon/TextGridEditor.cpp
@@ -1,20 +1,19 @@
 /* TextGridEditor.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 /* Erez Volk added FLAC support in 2007 */
 
@@ -51,7 +50,7 @@ void structTextGridEditor :: v_info () {
 
 static double _TextGridEditor_computeSoundY (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
-	int numberOfTiers = grid -> tiers -> size;
+	int numberOfTiers = grid -> tiers->size;
 	bool showAnalysis = my v_hasAnalysis () && (my p_spectrogram_show || my p_pitch_show || my p_intensity_show || my p_formant_show) && (my d_longSound.data || my d_sound.data);
 	int numberOfVisibleChannels = my d_sound.data ? (my d_sound.data -> ny > 8 ? 8 : my d_sound.data -> ny) :
 		my d_longSound.data ? (my d_longSound.data -> numberOfChannels > 8 ? 8 : my d_longSound.data -> numberOfChannels) : 1;
@@ -61,16 +60,16 @@ static double _TextGridEditor_computeSoundY (TextGridEditor me) {
 static void _AnyTier_identifyClass (Function anyTier, IntervalTier *intervalTier, TextTier *textTier) {
 	if (anyTier -> classInfo == classIntervalTier) {
 		*intervalTier = (IntervalTier) anyTier;
-		*textTier = NULL;
+		*textTier = nullptr;
 	} else {
-		*intervalTier = NULL;
+		*intervalTier = nullptr;
 		*textTier = (TextTier) anyTier;
 	}
 }
 
 static int _TextGridEditor_yWCtoTier (TextGridEditor me, double yWC) {
 	TextGrid grid = (TextGrid) my data;
-	int ntier = grid -> tiers -> size;
+	int ntier = grid -> tiers->size;
 	double soundY = _TextGridEditor_computeSoundY (me);
 	int itier = ntier - (int) floor (yWC / soundY * (double) ntier);
 	if (itier < 1) itier = 1; if (itier > ntier) itier = ntier;
@@ -79,9 +78,10 @@ static int _TextGridEditor_yWCtoTier (TextGridEditor me, double yWC) {
 
 static void _TextGridEditor_timeToInterval (TextGridEditor me, double t, int itier, double *tmin, double *tmax) {
 	TextGrid grid = (TextGrid) my data;
+	Function tier = grid -> tiers->at [itier];
 	IntervalTier intervalTier;
 	TextTier textTier;
-	_AnyTier_identifyClass ((Function) grid -> tiers -> item [itier], & intervalTier, & textTier);
+	_AnyTier_identifyClass (tier, & intervalTier, & textTier);
 	if (intervalTier) {
 		long iinterval = IntervalTier_timeToIndex (intervalTier, t);
 		TextInterval interval;
@@ -89,23 +89,23 @@ static void _TextGridEditor_timeToInterval (TextGridEditor me, double t, int iti
 			if (t < my tmin) {
 				iinterval = 1;
 			} else {
-				iinterval = intervalTier -> intervals -> size;
+				iinterval = intervalTier -> intervals.size;
 			}
 		}
 		Melder_assert (iinterval >= 1);
-		Melder_assert (iinterval <= intervalTier -> intervals -> size);
-		interval = (TextInterval) intervalTier -> intervals -> item [iinterval];
+		Melder_assert (iinterval <= intervalTier -> intervals.size);
+		interval = intervalTier -> intervals.at [iinterval];
 		*tmin = interval -> xmin;
 		*tmax = interval -> xmax;
 	} else {
-		long n = textTier -> points -> size;
+		long n = textTier -> points.size;
 		if (n == 0) {
 			*tmin = my tmin;
 			*tmax = my tmax;
 		} else {
-			long ipointleft = AnyTier_timeToLowIndex (textTier, t);
-			*tmin = ipointleft == 0 ? my tmin : ((TextPoint) textTier -> points -> item [ipointleft]) -> number;
-			*tmax = ipointleft == n ? my tmax : ((TextPoint) textTier -> points -> item [ipointleft + 1]) -> number;
+			long ipointleft = AnyTier_timeToLowIndex (textTier->asAnyTier(), t);
+			*tmin = ipointleft == 0 ? my tmin : textTier -> points.at [ipointleft] -> number;
+			*tmax = ipointleft == n ? my tmax : textTier -> points.at [ipointleft + 1] -> number;
 		}
 	}
 	if (*tmin < my tmin) *tmin = my tmin;   // clip by FunctionEditor's time domain
@@ -114,32 +114,32 @@ static void _TextGridEditor_timeToInterval (TextGridEditor me, double t, int iti
 
 static void checkTierSelection (TextGridEditor me, const char32 *verbPhrase) {
 	TextGrid grid = (TextGrid) my data;
-	if (my selectedTier < 1 || my selectedTier > grid -> tiers -> size)
+	if (my selectedTier < 1 || my selectedTier > grid -> tiers->size)
 		Melder_throw (U"To ", verbPhrase, U", first select a tier by clicking anywhere inside it.");
 }
 
 static long getSelectedInterval (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
-	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers -> size);
-	IntervalTier tier = (IntervalTier) grid -> tiers -> item [my selectedTier];
+	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers->size);
+	IntervalTier tier = (IntervalTier) grid -> tiers->at [my selectedTier];
 	Melder_assert (tier -> classInfo == classIntervalTier);
 	return IntervalTier_timeToIndex (tier, my d_startSelection);
 }
 
 static long getSelectedLeftBoundary (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
-	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers -> size);
-	IntervalTier tier = (IntervalTier) grid -> tiers -> item [my selectedTier];
+	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers->size);
+	IntervalTier tier = (IntervalTier) grid -> tiers->at [my selectedTier];
 	Melder_assert (tier -> classInfo == classIntervalTier);
 	return IntervalTier_hasBoundary (tier, my d_startSelection);
 }
 
 static long getSelectedPoint (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
-	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers -> size);
-	TextTier tier = (TextTier) grid -> tiers -> item [my selectedTier];
+	Melder_assert (my selectedTier >= 1 || my selectedTier <= grid -> tiers->size);
+	TextTier tier = (TextTier) grid -> tiers->at [my selectedTier];
 	Melder_assert (tier -> classInfo == classTextTier);
-	return AnyTier_hasPoint (tier, my d_startSelection);
+	return AnyTier_hasPoint (tier->asAnyTier(), my d_startSelection);
 }
 
 static void scrollToView (TextGridEditor me, double t) {
@@ -162,18 +162,16 @@ static void scrollToView (TextGridEditor me, double t) {
 
 /***** FILE MENU *****/
 
-static void menu_cb_ExtractSelectedTextGrid_preserveTimes (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_ExtractSelectedTextGrid_preserveTimes (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_endSelection <= my d_startSelection) Melder_throw (U"No selection.");
 	autoTextGrid extract = TextGrid_extractPart ((TextGrid) my data, my d_startSelection, my d_endSelection, true);
-	Editor_broadcastPublication (me, extract.transfer());
+	Editor_broadcastPublication (me, extract.move());
 }
 
-static void menu_cb_ExtractSelectedTextGrid_timeFromZero (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_ExtractSelectedTextGrid_timeFromZero (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	if (my d_endSelection <= my d_startSelection) Melder_throw (U"No selection.");
 	autoTextGrid extract = TextGrid_extractPart ((TextGrid) my data, my d_startSelection, my d_endSelection, false);
-	Editor_broadcastPublication (me, extract.transfer());
+	Editor_broadcastPublication (me, extract.move());
 }
 
 void structTextGridEditor :: v_createMenuItems_file_extract (EditorMenu menu) {
@@ -184,10 +182,9 @@ void structTextGridEditor :: v_createMenuItems_file_extract (EditorMenu menu) {
 		EditorMenu_addCommand (menu, U"Extract selected TextGrid (time from 0)", 0, menu_cb_ExtractSelectedTextGrid_timeFromZero);
 }
 
-static void menu_cb_WriteToTextFile (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM_WRITE (U"Save as TextGrid text file", 0)
-		Melder_sprint (defaultName,300, ((Thing) my data) -> name, U".TextGrid");
+static void menu_cb_WriteToTextFile (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as TextGrid text file", nullptr)
+		Melder_sprint (defaultName,300, my data -> name, U".TextGrid");
 	EDITOR_DO_WRITE
 		Data_writeToTextFile (my data, file);
 	EDITOR_END
@@ -198,9 +195,8 @@ void structTextGridEditor :: v_createMenuItems_file_write (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"Save TextGrid as text file...", 'S', menu_cb_WriteToTextFile);
 }
 
-static void menu_cb_DrawVisibleTextGrid (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Draw visible TextGrid", 0)
+static void menu_cb_DrawVisibleTextGrid (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible TextGrid", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
@@ -216,16 +212,15 @@ static void menu_cb_DrawVisibleTextGrid (EDITOR_ARGS) {
 		my v_do_pictureSelection (cmd);
 		my pref_picture_garnish () = GET_INTEGER (U"Garnish");
 		Editor_openPraatPicture (me);
-		TextGrid_Sound_draw ((TextGrid) my data, NULL, my pictureGraphics, my d_startWindow, my d_endWindow, true, my p_useTextStyles,
+		TextGrid_Sound_draw ((TextGrid) my data, nullptr, my pictureGraphics, my d_startWindow, my d_endWindow, true, my p_useTextStyles,
 			my pref_picture_garnish ());
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
-static void menu_cb_DrawVisibleSoundAndTextGrid (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Draw visible sound and TextGrid", 0)
+static void menu_cb_DrawVisibleSoundAndTextGrid (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible sound and TextGrid", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
@@ -241,11 +236,14 @@ static void menu_cb_DrawVisibleSoundAndTextGrid (EDITOR_ARGS) {
 		my v_do_pictureSelection (cmd);
 		my pref_picture_garnish () = GET_INTEGER (U"Garnish");
 		Editor_openPraatPicture (me);
-		Sound publish = my d_longSound.data ?
-			LongSound_extractPart (my d_longSound.data, my d_startWindow, my d_endWindow, true) :
-			Sound_extractPart (my d_sound.data, my d_startWindow, my d_endWindow, kSound_windowShape_RECTANGULAR, 1.0, true);
-		TextGrid_Sound_draw ((TextGrid) my data, publish, my pictureGraphics, my d_startWindow, my d_endWindow, true, my p_useTextStyles, my pref_picture_garnish ());
-		forget (publish);
+		{// scope
+			autoSound sound = my d_longSound.data ?
+				LongSound_extractPart (my d_longSound.data, my d_startWindow, my d_endWindow, true) :
+				Sound_extractPart (my d_sound.data, my d_startWindow, my d_endWindow,
+					kSound_windowShape_RECTANGULAR, 1.0, true);
+			TextGrid_Sound_draw ((TextGrid) my data, sound.get(), my pictureGraphics,
+				my d_startWindow, my d_endWindow, true, my p_useTextStyles, my pref_picture_garnish ());
+		}
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
 	EDITOR_END
@@ -261,26 +259,21 @@ void structTextGridEditor :: v_createMenuItems_file_draw (EditorMenu menu) {
 /***** EDIT MENU *****/
 
 #ifndef macintosh
-static void menu_cb_Cut (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Cut (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_cut (my text);
 }
-static void menu_cb_Copy (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Copy (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_copy (my text);
 }
-static void menu_cb_Paste (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Paste (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_paste (my text);
 }
-static void menu_cb_Erase (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Erase (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_remove (my text);
 }
 #endif
 
-static void menu_cb_Genericize (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Genericize (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Convert to Backslash Trigraphs");
 	TextGrid_genericize ((TextGrid) my data);
 	FunctionEditor_updateText (me);
@@ -288,8 +281,7 @@ static void menu_cb_Genericize (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_Nativize (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_Nativize (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Convert to Unicode");
 	TextGrid_nativize ((TextGrid) my data);
 	FunctionEditor_updateText (me);
@@ -299,48 +291,45 @@ static void menu_cb_Nativize (EDITOR_ARGS) {
 
 /***** QUERY MENU *****/
 
-static void menu_cb_GetStartingPointOfInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_GetStartingPointOfInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"query the starting point of an interval");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long iinterval = IntervalTier_timeToIndex (tier, my d_startSelection);
-		double time = iinterval < 1 || iinterval > tier -> intervals -> size ? NUMundefined :
-			((TextInterval) tier -> intervals -> item [iinterval]) -> xmin;
+		double time = iinterval < 1 || iinterval > tier -> intervals.size ? NUMundefined :
+			tier -> intervals.at [iinterval] -> xmin;
 		Melder_informationReal (time, U"seconds");
 	} else {
 		Melder_throw (U"The selected tier is not an interval tier.");
 	}
 }
 
-static void menu_cb_GetEndPointOfInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_GetEndPointOfInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"query the end point of an interval");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long iinterval = IntervalTier_timeToIndex (tier, my d_startSelection);
-		double time = iinterval < 1 || iinterval > tier -> intervals -> size ? NUMundefined :
-			((TextInterval) tier -> intervals -> item [iinterval]) -> xmax;
+		double time = iinterval < 1 || iinterval > tier -> intervals.size ? NUMundefined :
+			tier -> intervals.at [iinterval] -> xmax;
 		Melder_informationReal (time, U"seconds");
 	} else {
 		Melder_throw (U"The selected tier is not an interval tier.");
 	}
 }
 
-static void menu_cb_GetLabelOfInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_GetLabelOfInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"query the label of an interval");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long iinterval = IntervalTier_timeToIndex (tier, my d_startSelection);
-		const char32 *label = iinterval < 1 || iinterval > tier -> intervals -> size ? U"" :
-			((TextInterval) tier -> intervals -> item [iinterval]) -> text;
+		const char32 *label = iinterval < 1 || iinterval > tier -> intervals.size ? U"" :
+			tier -> intervals.at [iinterval] -> text;
 		Melder_information (label);
 	} else {
 		Melder_throw (U"The selected tier is not an interval tier.");
@@ -351,7 +340,7 @@ static void menu_cb_GetLabelOfInterval (EDITOR_ARGS) {
 
 static void do_selectAdjacentTier (TextGridEditor me, bool previous) {
 	TextGrid grid = (TextGrid) my data;
-	long n = grid -> tiers -> size;
+	long n = grid -> tiers->size;
 	if (n >= 2) {
 		my selectedTier = previous ?
 			my selectedTier > 1 ? my selectedTier - 1 : n :
@@ -361,13 +350,11 @@ static void do_selectAdjacentTier (TextGridEditor me, bool previous) {
 	}
 }
 
-static void menu_cb_SelectPreviousTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_SelectPreviousTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentTier (me, true);
 }
 
-static void menu_cb_SelectNextTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_SelectNextTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentTier (me, false);
 }
 
@@ -375,10 +362,10 @@ static void do_selectAdjacentInterval (TextGridEditor me, bool previous, bool sh
 	TextGrid grid = (TextGrid) my data;
 	IntervalTier intervalTier;
 	TextTier textTier;
-	if (my selectedTier < 1 || my selectedTier > grid -> tiers -> size) return;
-	_AnyTier_identifyClass ((Function) grid -> tiers -> item [my selectedTier], & intervalTier, & textTier);
+	if (my selectedTier < 1 || my selectedTier > grid -> tiers->size) return;
+	_AnyTier_identifyClass (grid -> tiers->at [my selectedTier], & intervalTier, & textTier);
 	if (intervalTier) {
-		long n = intervalTier -> intervals -> size;
+		long n = intervalTier -> intervals.size;
 		if (n >= 2) {
 			TextInterval interval;
 			long iinterval = IntervalTier_timeToIndex (intervalTier, my d_startSelection);
@@ -387,27 +374,27 @@ static void do_selectAdjacentInterval (TextGridEditor me, bool previous, bool sh
 				long einterval = IntervalTier_timeToIndex (intervalTier, my d_endSelection);
 				if (my d_endSelection == intervalTier -> xmax) einterval ++;
 				if (binterval < iinterval && einterval > iinterval + 1) {
-					interval = (TextInterval) intervalTier -> intervals -> item [iinterval];
+					interval = intervalTier -> intervals.at [iinterval];
 					my d_startSelection = interval -> xmin;
 					my d_endSelection = interval -> xmax;
 				} else if (previous) {
 					if (einterval > iinterval + 1) {
 						if (einterval <= n + 1) {
-							interval = (TextInterval) intervalTier -> intervals -> item [einterval - 1];
+							interval = intervalTier -> intervals.at [einterval - 1];
 							my d_endSelection = interval -> xmin;
 						}
 					} else if (binterval > 1) {
-						interval = (TextInterval) intervalTier -> intervals -> item [binterval - 1];
+						interval = intervalTier -> intervals.at [binterval - 1];
 						my d_startSelection = interval -> xmin;
 					}
 				} else {
 					if (binterval < iinterval) {
 						if (binterval > 0) {
-							interval = (TextInterval) intervalTier -> intervals -> item [binterval];
+							interval = intervalTier -> intervals.at [binterval];
 							my d_startSelection = interval -> xmax;
 						}
 					} else if (einterval <= n) {
-						interval = (TextInterval) intervalTier -> intervals -> item [einterval];
+						interval = intervalTier -> intervals.at [einterval];
 						my d_endSelection = interval -> xmax;
 					}
 				}
@@ -415,49 +402,44 @@ static void do_selectAdjacentInterval (TextGridEditor me, bool previous, bool sh
 				iinterval = previous ?
 					iinterval > 1 ? iinterval - 1 : n :
 					iinterval < n ? iinterval + 1 : 1;
-				interval = (TextInterval) intervalTier -> intervals -> item [iinterval];
+				interval = intervalTier -> intervals.at [iinterval];
 				my d_startSelection = interval -> xmin;
 				my d_endSelection = interval -> xmax;
 			}
 			scrollToView (me, iinterval == n ? my d_startSelection : iinterval == 1 ? my d_endSelection : (my d_startSelection + my d_endSelection) / 2);
 		}
 	} else {
-		long n = textTier -> points -> size;
+		long n = textTier -> points.size;
 		if (n >= 2) {
 			TextPoint point;
-			long ipoint = AnyTier_timeToHighIndex (textTier, my d_startSelection);
+			long ipoint = AnyTier_timeToHighIndex (textTier->asAnyTier(), my d_startSelection);
 			ipoint = previous ?
 				ipoint > 1 ? ipoint - 1 : n :
 				ipoint < n ? ipoint + 1 : 1;
-			point = (TextPoint) textTier -> points -> item [ipoint];
+			point = textTier -> points.at [ipoint];
 			my d_startSelection = my d_endSelection = point -> number;
 			scrollToView (me, my d_startSelection);
 		}
 	}
 }
 
-static void menu_cb_SelectPreviousInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_SelectPreviousInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentInterval (me, true, false);
 }
 
-static void menu_cb_SelectNextInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_SelectNextInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentInterval (me, false, false);
 }
 
-static void menu_cb_ExtendSelectPreviousInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_ExtendSelectPreviousInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentInterval (me, true, true);
 }
 
-static void menu_cb_ExtendSelectNextInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_ExtendSelectNextInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_selectAdjacentInterval (me, false, true);
 }
 
-static void menu_cb_MoveBtoZero (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveBtoZero (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing (my d_sound.data, my d_startSelection, 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_startSelection = zero;
@@ -470,8 +452,7 @@ static void menu_cb_MoveBtoZero (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_MoveCursorToZero (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveCursorToZero (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing (my d_sound.data, 0.5 * (my d_startSelection + my d_endSelection), 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_startSelection = my d_endSelection = zero;
@@ -479,8 +460,7 @@ static void menu_cb_MoveCursorToZero (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_MoveEtoZero (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveEtoZero (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	double zero = Sound_getNearestZeroCrossing (my d_sound.data, my d_endSelection, 1);   // STEREO BUG
 	if (NUMdefined (zero)) {
 		my d_endSelection = zero;
@@ -495,9 +475,8 @@ static void menu_cb_MoveEtoZero (EDITOR_ARGS) {
 
 /***** PITCH MENU *****/
 
-static void menu_cb_DrawTextGridAndPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Draw TextGrid and Pitch separately", 0)
+static void menu_cb_DrawTextGridAndPitch (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw TextGrid and Pitch separately", nullptr)
 		my v_form_pictureWindow (cmd);
 		LABEL (U"", U"TextGrid:")
 		BOOLEAN (U"Show boundaries and points", my default_picture_showBoundaries ());
@@ -527,13 +506,13 @@ static void menu_cb_DrawTextGridAndPitch (EDITOR_ARGS) {
 			if (! my d_pitch) Melder_throw (U"Cannot compute pitch.");
 		}
 		Editor_openPraatPicture (me);
-		double pitchFloor_hidden = Function_convertStandardToSpecialUnit (my d_pitch, my p_pitch_floor, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchCeiling_hidden = Function_convertStandardToSpecialUnit (my d_pitch, my p_pitch_ceiling, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchFloor_overt = Function_convertToNonlogarithmic (my d_pitch, pitchFloor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchCeiling_overt = Function_convertToNonlogarithmic (my d_pitch, pitchCeiling_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchViewFrom_overt = my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewFrom : pitchFloor_overt;
-		double pitchViewTo_overt = my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewTo : pitchCeiling_overt;
-		TextGrid_Pitch_drawSeparately ((TextGrid) my data, my d_pitch, my pictureGraphics, my d_startWindow, my d_endWindow,
+		double pitchFloor_hidden = Function_convertStandardToSpecialUnit (my d_pitch.get(), my p_pitch_floor, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchCeiling_hidden = Function_convertStandardToSpecialUnit (my d_pitch.get(), my p_pitch_ceiling, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchFloor_overt = Function_convertToNonlogarithmic (my d_pitch.get(), pitchFloor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchCeiling_overt = Function_convertToNonlogarithmic (my d_pitch.get(), pitchCeiling_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchViewFrom_overt = ( my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewFrom : pitchFloor_overt );
+		double pitchViewTo_overt = ( my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewTo : pitchCeiling_overt );
+		TextGrid_Pitch_drawSeparately ((TextGrid) my data, my d_pitch.get(), my pictureGraphics, my d_startWindow, my d_endWindow,
 			pitchViewFrom_overt, pitchViewTo_overt, GET_INTEGER (U"Show boundaries and points"), my p_useTextStyles, GET_INTEGER (U"Garnish"),
 			GET_INTEGER (U"Speckle"), my p_pitch_unit);
 		FunctionEditor_garnish (me);
@@ -547,14 +526,14 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 	TextGrid grid = (TextGrid) my data;
 	IntervalTier intervalTier;
 	TextTier textTier;
-	int ntiers = grid -> tiers -> size;
+	int ntiers = grid -> tiers->size;
 	if (itier < 1 || itier > ntiers)
 		Melder_throw (U"No tier ", itier, U".");
-	_AnyTier_identifyClass ((Function) grid -> tiers -> item [itier], & intervalTier, & textTier);
+	_AnyTier_identifyClass (grid -> tiers->at [itier], & intervalTier, & textTier);
 	Melder_assert (t1 <= t2);
 
 	if (intervalTier) {
-		TextInterval rightNewInterval = NULL, midNewInterval = NULL;
+		autoTextInterval rightNewInterval, midNewInterval;
 		bool t1IsABoundary = IntervalTier_hasTime (intervalTier, t1);
 		bool t2IsABoundary = IntervalTier_hasTime (intervalTier, t2);
 		if (t1 == t2 && t1IsABoundary)
@@ -567,10 +546,10 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 		//Melder_casual ("iinterval2 %ld, t = %f", iinterval2, t2);
 		if (iinterval == 0 || iinterval2 == 0)
 			Melder_throw (U"The selection is outside the time domain of the intervals.");
-		long correctedIinterval2 = t2IsABoundary && iinterval2 == intervalTier -> intervals -> size ? iinterval2 + 1 : iinterval2;
+		long correctedIinterval2 = t2IsABoundary && iinterval2 == intervalTier -> intervals.size ? iinterval2 + 1 : iinterval2;
 		if (correctedIinterval2 > iinterval + 1 || (correctedIinterval2 > iinterval && ! t2IsABoundary))
 			Melder_throw (U"The selection straddles a boundary.");
-		TextInterval interval = (TextInterval) intervalTier -> intervals -> item [iinterval];
+		TextInterval interval = intervalTier -> intervals.at [iinterval];
 
 		if (t1 == t2) {
 			Editor_save (me, U"Add boundary");
@@ -588,7 +567,7 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 			rightNewInterval = TextInterval_create (t2, interval -> xmax, text + right);
 			text [right] = '\0';
 			midNewInterval = TextInterval_create (t1, t2, text + left);
-			if (! wholeTextIsSelected || t1 != t2) text [left] = '\0';
+			if (! wholeTextIsSelected || t1 != t2) text [left] = U'\0';
 			TextInterval_setText (interval, text);
 			Melder_free (text);
 		} else {
@@ -606,7 +585,6 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 				Melder_fatal (U"Boundary unequal: ", interval -> xmin, U" versus ", t1, U".");
 			interval -> xmax = t2;
 			TextInterval_setText (interval, Melder_cat (interval -> text, midNewInterval -> text));
-			forget (midNewInterval);
 		} else if (t2IsABoundary) {
 			/*
 			 * Merge mid and right interval.
@@ -617,13 +595,12 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 			Melder_assert (rightNewInterval -> xmin == t2);
 			Melder_assert (rightNewInterval -> xmax == t2);
 			rightNewInterval -> xmin = t1;
-			TextInterval_setText (rightNewInterval, Melder_cat (midNewInterval -> text, rightNewInterval -> text));
-			forget (midNewInterval);
+			TextInterval_setText (rightNewInterval.get(), Melder_cat (midNewInterval -> text, rightNewInterval -> text));
 		} else {
 			interval -> xmax = t1;
-			if (t1 != t2) Collection_addItem (intervalTier -> intervals, midNewInterval);
+			if (t1 != t2) intervalTier -> intervals.addItem_move (midNewInterval.move());
 		}
-		Collection_addItem (intervalTier -> intervals, rightNewInterval);
+		intervalTier -> intervals.addItem_move (rightNewInterval.move());
 		if (insertSecond && ntiers >= 2 && t1 == t2) {
 			/*
 			 * Find the last time before t on another tier.
@@ -636,20 +613,19 @@ static void insertBoundaryOrPoint (TextGridEditor me, int itier, double t1, doub
 				}
 			}
 			if (tlast > interval -> xmin && tlast < t1) {
-				TextInterval newInterval = TextInterval_create (tlast, t1, U"");
+				autoTextInterval newInterval = TextInterval_create (tlast, t1, U"");
 				interval -> xmax = tlast;
-				Collection_addItem (intervalTier -> intervals, newInterval);
+				intervalTier -> intervals.addItem_move (newInterval.move());
 			}
 		}
 	} else {
-		TextPoint newPoint;
-		if (AnyTier_hasPoint (textTier, t1))
+		if (AnyTier_hasPoint (textTier->asAnyTier(), t1))
 			Melder_throw (U"Cannot add a point at ", Melder_fixed (t1, 6), U" seconds, because there is already a point there.");
 
 		Editor_save (me, U"Add point");
 
-		newPoint = TextPoint_create (t1, U"");
-		Collection_addItem (textTier -> points, newPoint);
+		autoTextPoint newPoint = TextPoint_create (t1, U"");
+		textTier -> points. addItem_move (newPoint.move());
 	}
 	my d_startSelection = my d_endSelection = t1;
 }
@@ -668,20 +644,19 @@ static void do_insertIntervalOnTier (TextGridEditor me, int itier) {
 	}
 }
 
-static void menu_cb_InsertIntervalOnTier1 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 1); }
-static void menu_cb_InsertIntervalOnTier2 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 2); }
-static void menu_cb_InsertIntervalOnTier3 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 3); }
-static void menu_cb_InsertIntervalOnTier4 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 4); }
-static void menu_cb_InsertIntervalOnTier5 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 5); }
-static void menu_cb_InsertIntervalOnTier6 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 6); }
-static void menu_cb_InsertIntervalOnTier7 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 7); }
-static void menu_cb_InsertIntervalOnTier8 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertIntervalOnTier (me, 8); }
+static void menu_cb_InsertIntervalOnTier1 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 1); }
+static void menu_cb_InsertIntervalOnTier2 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 2); }
+static void menu_cb_InsertIntervalOnTier3 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 3); }
+static void menu_cb_InsertIntervalOnTier4 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 4); }
+static void menu_cb_InsertIntervalOnTier5 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 5); }
+static void menu_cb_InsertIntervalOnTier6 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 6); }
+static void menu_cb_InsertIntervalOnTier7 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 7); }
+static void menu_cb_InsertIntervalOnTier8 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertIntervalOnTier (me, 8); }
 
-static void menu_cb_AlignInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_AlignInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"align words");
-	AnyTier tier = static_cast <AnyTier> (grid -> tiers -> item [my selectedTier]);
+	AnyTier tier = static_cast <AnyTier> (grid -> tiers->at [my selectedTier]);
 	if (tier -> classInfo != classIntervalTier)
 		Melder_throw (U"Alignment works only for interval tiers, whereas tier ", my selectedTier, U" is a point tier.\nSelect an interval tier instead.");
 	long intervalNumber = getSelectedInterval (me);
@@ -701,10 +676,9 @@ static void menu_cb_AlignInterval (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_AlignmentSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Alignment settings", 0)
-		OPTIONMENU (U"Language", Strings_findString (espeakdata_voices_names, U"English"))
+static void menu_cb_AlignmentSettings (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Alignment settings", nullptr)
+		OPTIONMENU (U"Language", Strings_findString (espeakdata_voices_names.get(), U"English"))
 		for (long i = 1; i <= espeakdata_voices_names -> numberOfStrings; i ++) {
 			OPTION ((const char32 *) espeakdata_voices_names -> strings [i]);
 		}
@@ -712,8 +686,8 @@ static void menu_cb_AlignmentSettings (EDITOR_ARGS) {
 		BOOLEAN (U"Include phonemes", my default_align_includePhonemes ())
 		BOOLEAN (U"Allow silences", my default_align_allowSilences ())
 	EDITOR_OK
-		long prefVoice = Strings_findString (espeakdata_voices_names, my p_align_language);
-		if (prefVoice == 0) prefVoice = Strings_findString (espeakdata_voices_names, U"English");
+		long prefVoice = Strings_findString (espeakdata_voices_names.get(), my p_align_language);
+		if (prefVoice == 0) prefVoice = Strings_findString (espeakdata_voices_names.get(), U"English");
 		SET_INTEGER (U"Language", prefVoice);
 		SET_INTEGER (U"Include words", my p_align_includeWords)
 		SET_INTEGER (U"Include phonemes", my p_align_includePhonemes)
@@ -729,11 +703,10 @@ static void menu_cb_AlignmentSettings (EDITOR_ARGS) {
 
 /***** BOUNDARY/POINT MENU *****/
 
-static void menu_cb_RemovePointOrBoundary (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_RemovePointOrBoundary (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"remove a point or boundary");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long selectedLeftBoundary = getSelectedLeftBoundary (me);
@@ -747,7 +720,7 @@ static void menu_cb_RemovePointOrBoundary (EDITOR_ARGS) {
 		if (! selectedPoint) Melder_throw (U"To remove a point, first click on it.");
 
 		Editor_save (me, U"Remove point");
-		Collection_removeItem (tier -> points, selectedPoint);
+		tier -> points. removeItem (selectedPoint);
 	}
 	FunctionEditor_updateText (me);
 	FunctionEditor_redraw (me);
@@ -757,9 +730,9 @@ static void menu_cb_RemovePointOrBoundary (EDITOR_ARGS) {
 static void do_movePointOrBoundary (TextGridEditor me, int where) {
 	double position;
 	TextGrid grid = (TextGrid) my data;
-	if (where == 0 && my d_sound.data == NULL) return;
+	if (where == 0 && ! my d_sound.data) return;
 	checkTierSelection (me, U"move a point or boundary");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		static const char32 *boundarySaveText [3] { U"Move boundary to zero crossing", U"Move boundary to B", U"Move boundary to E" };
@@ -767,8 +740,8 @@ static void do_movePointOrBoundary (TextGridEditor me, int where) {
 		long selectedLeftBoundary = getSelectedLeftBoundary (me);
 		if (! selectedLeftBoundary)
 			Melder_throw (U"To move a boundary, first click on it.");
-		left = (TextInterval) tier -> intervals -> item [selectedLeftBoundary - 1];
-		right = (TextInterval) tier -> intervals -> item [selectedLeftBoundary];
+		left = tier -> intervals.at [selectedLeftBoundary - 1];
+		right = tier -> intervals.at [selectedLeftBoundary];
 		position = where == 1 ? my d_startSelection : where == 2 ? my d_endSelection :
 			Sound_getNearestZeroCrossing (my d_sound.data, left -> xmax, 1);   // STEREO BUG
 		if (position == NUMundefined)
@@ -786,7 +759,7 @@ static void do_movePointOrBoundary (TextGridEditor me, int where) {
 		long selectedPoint = getSelectedPoint (me);
 		if (! selectedPoint)
 			Melder_throw (U"To move a point, first click on it.");
-		point = (TextPoint) tier -> points -> item [selectedPoint];
+		point = tier -> points.at [selectedPoint];
 		position = where == 1 ? my d_startSelection : where == 2 ? my d_endSelection :
 			Sound_getNearestZeroCrossing (my d_sound.data, point -> number, 1);   // STEREO BUG
 		if (position == NUMundefined)
@@ -800,18 +773,15 @@ static void do_movePointOrBoundary (TextGridEditor me, int where) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_MoveToB (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveToB (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_movePointOrBoundary (me, 1);
 }
 
-static void menu_cb_MoveToE (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveToE (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_movePointOrBoundary (me, 2);
 }
 
-static void menu_cb_MoveToZero (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_MoveToZero (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_movePointOrBoundary (me, 0);
 }
 
@@ -829,25 +799,23 @@ static void do_insertOnTier (TextGridEditor me, int itier) {
 	}
 }
 
-static void menu_cb_InsertOnSelectedTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_InsertOnSelectedTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_insertOnTier (me, my selectedTier);
 }
 
-static void menu_cb_InsertOnTier1 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 1); }
-static void menu_cb_InsertOnTier2 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 2); }
-static void menu_cb_InsertOnTier3 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 3); }
-static void menu_cb_InsertOnTier4 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 4); }
-static void menu_cb_InsertOnTier5 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 5); }
-static void menu_cb_InsertOnTier6 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 6); }
-static void menu_cb_InsertOnTier7 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 7); }
-static void menu_cb_InsertOnTier8 (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); do_insertOnTier (me, 8); }
+static void menu_cb_InsertOnTier1 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 1); }
+static void menu_cb_InsertOnTier2 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 2); }
+static void menu_cb_InsertOnTier3 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 3); }
+static void menu_cb_InsertOnTier4 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 4); }
+static void menu_cb_InsertOnTier5 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 5); }
+static void menu_cb_InsertOnTier6 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 6); }
+static void menu_cb_InsertOnTier7 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 7); }
+static void menu_cb_InsertOnTier8 (TextGridEditor me, EDITOR_ARGS_DIRECT) { do_insertOnTier (me, 8); }
 
-static void menu_cb_InsertOnAllTiers (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_InsertOnAllTiers (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	int saveTier = my selectedTier;
-	for (int itier = 1; itier <= grid -> tiers -> size; itier ++) {
+	for (int itier = 1; itier <= grid -> tiers->size; itier ++) {
 		do_insertOnTier (me, itier);
 	}
 	my selectedTier = saveTier;   // only if everything went right; otherwise, the tier where something went wrong will stand selected
@@ -858,12 +826,12 @@ static void menu_cb_InsertOnAllTiers (EDITOR_ARGS) {
 static void findInTier (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"find a text");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long iinterval = IntervalTier_timeToIndex (tier, my d_startSelection) + 1;
-		while (iinterval <= tier -> intervals -> size) {
-			TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
+		while (iinterval <= tier -> intervals.size) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			char32 *text = interval -> text;
 			if (text) {
 				char32 *position = str32str (text, my findString);
@@ -877,13 +845,13 @@ static void findInTier (TextGridEditor me) {
 			}
 			iinterval ++;
 		}
-		if (iinterval > tier -> intervals -> size)
+		if (iinterval > tier -> intervals.size)
 			Melder_beep ();
 	} else {
 		TextTier tier = (TextTier) anyTier;
-		long ipoint = AnyTier_timeToLowIndex (tier, my d_startSelection) + 1;
-		while (ipoint <= tier -> points -> size) {
-			TextPoint point = (TextPoint) tier -> points -> item [ipoint];
+		long ipoint = AnyTier_timeToLowIndex (tier->asAnyTier(), my d_startSelection) + 1;
+		while (ipoint <= tier -> points.size) {
+			TextPoint point = tier->points.at [ipoint];
 			char32 *text = point -> mark;
 			if (text) {
 				char32 *position = str32str (text, my findString);
@@ -896,7 +864,7 @@ static void findInTier (TextGridEditor me) {
 			}
 			ipoint ++;
 		}
-		if (ipoint > tier -> points -> size)
+		if (ipoint > tier -> points.size)
 			Melder_beep ();
 	}
 }
@@ -914,9 +882,8 @@ static void do_find (TextGridEditor me) {
 	}
 }
 
-static void menu_cb_Find (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Find text", 0)
+static void menu_cb_Find (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Find text", nullptr)
 		LABEL (U"", U"Text:")
 		TEXTFIELD (U"string", U"")
 	EDITOR_OK
@@ -927,20 +894,19 @@ static void menu_cb_Find (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_FindAgain (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_FindAgain (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	do_find (me);
 }
 
 static void checkSpellingInTier (TextGridEditor me) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"check spelling");
-	Function anyTier = (Function) grid -> tiers -> item [my selectedTier];
+	Function anyTier = grid -> tiers->at [my selectedTier];
 	if (anyTier -> classInfo == classIntervalTier) {
 		IntervalTier tier = (IntervalTier) anyTier;
 		long iinterval = IntervalTier_timeToIndex (tier, my d_startSelection) + 1;
-		while (iinterval <= tier -> intervals -> size) {
-			TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
+		while (iinterval <= tier -> intervals.size) {
+			TextInterval interval = tier -> intervals.at [iinterval];
 			char32 *text = interval -> text;
 			if (text) {
 				long position = 0;
@@ -955,13 +921,13 @@ static void checkSpellingInTier (TextGridEditor me) {
 			}
 			iinterval ++;
 		}
-		if (iinterval > tier -> intervals -> size)
+		if (iinterval > tier -> intervals.size)
 			Melder_beep ();
 	} else {
 		TextTier tier = (TextTier) anyTier;
-		long ipoint = AnyTier_timeToLowIndex (tier, my d_startSelection) + 1;
-		while (ipoint <= tier -> points -> size) {
-			TextPoint point = (TextPoint) tier -> points -> item [ipoint];
+		long ipoint = AnyTier_timeToLowIndex (tier->asAnyTier(), my d_startSelection) + 1;
+		while (ipoint <= tier -> points.size) {
+			TextPoint point = tier -> points.at [ipoint];
 			char32 *text = point -> mark;
 			if (text) {
 				long position = 0;
@@ -975,13 +941,12 @@ static void checkSpellingInTier (TextGridEditor me) {
 			}
 			ipoint ++;
 		}
-		if (ipoint > tier -> points -> size)
+		if (ipoint > tier -> points.size)
 			Melder_beep ();
 	}
 }
 
-static void menu_cb_CheckSpelling (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_CheckSpelling (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	if (my spellingChecker) {
 		long left, right;
 		autostring32 label = GuiText_getStringAndSelectionPosition (my text, & left, & right);
@@ -995,8 +960,7 @@ static void menu_cb_CheckSpelling (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_CheckSpellingInInterval (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_CheckSpellingInInterval (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	if (my spellingChecker) {
 		long left, right;
 		autostring32 label = GuiText_getStringAndSelectionPosition (my text, & left, & right);
@@ -1008,8 +972,7 @@ static void menu_cb_CheckSpellingInInterval (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_AddToUserDictionary (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_AddToUserDictionary (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	if (my spellingChecker) {
 		autostring32 word = GuiText_getSelection (my text);
 		SpellingChecker_addNewWord (my spellingChecker, word.peek());
@@ -1019,19 +982,18 @@ static void menu_cb_AddToUserDictionary (EDITOR_ARGS) {
 
 /***** TIER MENU *****/
 
-static void menu_cb_RenameTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Rename tier", 0)
+static void menu_cb_RenameTier (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Rename tier", nullptr)
 		SENTENCE (U"Name", U"");
 	EDITOR_OK
 		TextGrid grid = (TextGrid) my data;
 		checkTierSelection (me, U"rename a tier");
-		Data tier = (Data) grid -> tiers -> item [my selectedTier];
+		Daata tier = grid -> tiers->at [my selectedTier];
 		SET_STRING (U"Name", tier -> name ? tier -> name : U"")
 	EDITOR_DO
 		TextGrid grid = (TextGrid) my data;
 		checkTierSelection (me, U"rename a tier");
-		Function tier = (Function) grid -> tiers -> item [my selectedTier];
+		Function tier = grid -> tiers->at [my selectedTier];
 
 		Editor_save (me, U"Rename tier");
 
@@ -1043,24 +1005,22 @@ static void menu_cb_RenameTier (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_PublishTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_PublishTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"publish a tier");
-	Function tier = (Function) grid -> tiers -> item [my selectedTier];
+	Function tier = grid -> tiers->at [my selectedTier];
 	autoTextGrid publish = TextGrid_createWithoutTiers (1e30, -1e30);
-	TextGrid_addTier (publish.peek(), tier);
-	Thing_setName (publish.peek(), tier -> name);
-	Editor_broadcastPublication (me, publish.transfer());
+	TextGrid_addTier_copy (publish.get(), tier);
+	Thing_setName (publish.get(), tier -> name);
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_RemoveAllTextFromTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_RemoveAllTextFromTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
 	checkTierSelection (me, U"remove all text from a tier");
 	IntervalTier intervalTier;
 	TextTier textTier;
-	_AnyTier_identifyClass ((Function) grid -> tiers -> item [my selectedTier], & intervalTier, & textTier);
+	_AnyTier_identifyClass (grid -> tiers->at [my selectedTier], & intervalTier, & textTier);
 
 	Editor_save (me, U"Remove text from tier");
 	if (intervalTier) {
@@ -1074,16 +1034,15 @@ static void menu_cb_RemoveAllTextFromTier (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_RemoveTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
+static void menu_cb_RemoveTier (TextGridEditor me, EDITOR_ARGS_DIRECT) {
 	TextGrid grid = (TextGrid) my data;
-	if (grid -> tiers -> size <= 1) {
+	if (grid -> tiers->size <= 1) {
 		Melder_throw (U"Sorry, I refuse to remove the last tier.");
 	}
 	checkTierSelection (me, U"remove a tier");
 
 	Editor_save (me, U"Remove tier");
-	Collection_removeItem (grid -> tiers, my selectedTier);
+	grid -> tiers-> removeItem (my selectedTier);
 
 	my selectedTier = 1;
 	FunctionEditor_updateText (me);
@@ -1091,25 +1050,26 @@ static void menu_cb_RemoveTier (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_AddIntervalTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Add interval tier", 0)
+static void menu_cb_AddIntervalTier (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add interval tier", nullptr)
 		NATURAL (U"Position", U"1 (= at top)")
 		SENTENCE (U"Name", U"")
 	EDITOR_OK
 		TextGrid grid = (TextGrid) my data;
-		SET_STRING (U"Position", Melder_cat (grid -> tiers -> size + 1, U" (= at bottom)"))
+		SET_STRING (U"Position", Melder_cat (grid -> tiers->size + 1, U" (= at bottom)"))
 		SET_STRING (U"Name", U"")
 	EDITOR_DO
 		TextGrid grid = (TextGrid) my data;
 		int position = GET_INTEGER (U"Position");
 		char32 *name = GET_STRING (U"Name");
-		autoIntervalTier tier = IntervalTier_create (grid -> xmin, grid -> xmax);
-		if (position > grid -> tiers -> size) position = grid -> tiers -> size + 1;
-		Thing_setName (tier.peek(), name);
+		{// scope
+			autoIntervalTier tier = IntervalTier_create (grid -> xmin, grid -> xmax);
+			if (position > grid -> tiers->size) position = grid -> tiers->size + 1;
+			Thing_setName (tier.get(), name);
 
-		Editor_save (me, U"Add interval tier");
-		Ordered_addItemPos (grid -> tiers, tier.transfer(), position);
+			Editor_save (me, U"Add interval tier");
+			grid -> tiers -> addItemAtPosition_move (tier.move(), position);
+		}
 
 		my selectedTier = position;
 		FunctionEditor_updateText (me);
@@ -1118,25 +1078,26 @@ static void menu_cb_AddIntervalTier (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_AddPointTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Add point tier", 0)
+static void menu_cb_AddPointTier (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Add point tier", nullptr)
 		NATURAL (U"Position", U"1 (= at top)")
 		SENTENCE (U"Name", U"");
 	EDITOR_OK
 		TextGrid grid = (TextGrid) my data;
-		SET_STRING (U"Position", Melder_cat (grid -> tiers -> size + 1, U" (= at bottom)"))
+		SET_STRING (U"Position", Melder_cat (grid -> tiers->size + 1, U" (= at bottom)"))
 		SET_STRING (U"Name", U"")
 	EDITOR_DO
 		TextGrid grid = (TextGrid) my data;
 		int position = GET_INTEGER (U"Position");
 		char32 *name = GET_STRING (U"Name");
-		autoTextTier tier = TextTier_create (grid -> xmin, grid -> xmax);
-		if (position > grid -> tiers -> size) position = grid -> tiers -> size + 1;
-		Thing_setName (tier.peek(), name);
+		{// scope
+			autoTextTier tier = TextTier_create (grid -> xmin, grid -> xmax);
+			if (position > grid -> tiers->size) position = grid -> tiers->size + 1;
+			Thing_setName (tier.get(), name);
 
-		Editor_save (me, U"Add point tier");
-		Ordered_addItemPos (grid -> tiers, tier.transfer(), position);
+			Editor_save (me, U"Add point tier");
+			grid -> tiers -> addItemAtPosition_move (tier.move(), position);
+		}
 
 		my selectedTier = position;
 		FunctionEditor_updateText (me);
@@ -1145,30 +1106,31 @@ static void menu_cb_AddPointTier (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_DuplicateTier (EDITOR_ARGS) {
-	EDITOR_IAM (TextGridEditor);
-	EDITOR_FORM (U"Duplicate tier", 0)
+static void menu_cb_DuplicateTier (TextGridEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Duplicate tier", nullptr)
 		NATURAL (U"Position", U"1 (= at top)")
 		SENTENCE (U"Name", U"")
 	EDITOR_OK
 		TextGrid grid = (TextGrid) my data;
 		if (my selectedTier) {
 			SET_STRING (U"Position", Melder_integer (my selectedTier + 1))
-			SET_STRING (U"Name", ((AnyTier) grid -> tiers -> item [my selectedTier]) -> name)
+			SET_STRING (U"Name", grid -> tiers->at [my selectedTier] -> name)
 		}
 	EDITOR_DO
 		TextGrid grid = (TextGrid) my data;
 		int position = GET_INTEGER (U"Position");
 		char32 *name = GET_STRING (U"Name");
 		checkTierSelection (me, U"duplicate a tier");
-		AnyTier tier = (AnyTier) grid -> tiers -> item [my selectedTier];
-		autoAnyTier newTier = Data_copy (tier);
-		if (position > grid -> tiers -> size)
-			position = grid -> tiers -> size + 1;
-		Thing_setName (newTier.peek(), name);
-
-		Editor_save (me, U"Duplicate tier");
-		Ordered_addItemPos (grid -> tiers, newTier.transfer(), position);
+		Function tier = grid -> tiers->at [my selectedTier];
+		{// scope
+			autoFunction newTier = Data_copy (tier);
+			if (position > grid -> tiers->size)
+				position = grid -> tiers->size + 1;
+			Thing_setName (newTier.get(), name);
+
+			Editor_save (me, U"Duplicate tier");
+			grid -> tiers -> addItemAtPosition_move (newTier.move(), position);
+		}
 
 		my selectedTier = position;
 		FunctionEditor_updateText (me);
@@ -1179,17 +1141,17 @@ static void menu_cb_DuplicateTier (EDITOR_ARGS) {
 
 /***** HELP MENU *****/
 
-static void menu_cb_TextGridEditorHelp (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); Melder_help (U"TextGridEditor"); }
-static void menu_cb_AboutSpecialSymbols (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); Melder_help (U"Special symbols"); }
-static void menu_cb_PhoneticSymbols (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); Melder_help (U"Phonetic symbols"); }
-static void menu_cb_AboutTextStyles (EDITOR_ARGS) { EDITOR_IAM (TextGridEditor); Melder_help (U"Text styles"); }
+static void menu_cb_TextGridEditorHelp (TextGridEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"TextGridEditor"); }
+static void menu_cb_AboutSpecialSymbols (TextGridEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Special symbols"); }
+static void menu_cb_PhoneticSymbols (TextGridEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Phonetic symbols"); }
+static void menu_cb_AboutTextStyles (TextGridEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Text styles"); }
 
 void structTextGridEditor :: v_createMenus () {
 	TextGridEditor_Parent :: v_createMenus ();
 	EditorMenu menu;
 
 	#ifndef macintosh
-		Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, NULL);
+		Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, nullptr);
 		Editor_addCommand (this, U"Edit", U"Cut text", 'X', menu_cb_Cut);
 		Editor_addCommand (this, U"Edit", U"Cut", Editor_HIDDEN, menu_cb_Cut);
 		Editor_addCommand (this, U"Edit", U"Copy text", 'C', menu_cb_Copy);
@@ -1199,14 +1161,14 @@ void structTextGridEditor :: v_createMenus () {
 		Editor_addCommand (this, U"Edit", U"Erase text", 0, menu_cb_Erase);
 		Editor_addCommand (this, U"Edit", U"Erase", Editor_HIDDEN, menu_cb_Erase);
 	#endif
-	Editor_addCommand (this, U"Edit", U"-- encoding --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- encoding --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Convert entire TextGrid to backslash trigraphs", 0, menu_cb_Genericize);
 	Editor_addCommand (this, U"Edit", U"Genericize entire TextGrid", Editor_HIDDEN, menu_cb_Genericize);
 	Editor_addCommand (this, U"Edit", U"Genericize", Editor_HIDDEN, menu_cb_Genericize);
 	Editor_addCommand (this, U"Edit", U"Convert entire TextGrid to Unicode", 0, menu_cb_Nativize);
 	Editor_addCommand (this, U"Edit", U"Nativize entire TextGrid", Editor_HIDDEN, menu_cb_Nativize);
 	Editor_addCommand (this, U"Edit", U"Nativize", Editor_HIDDEN, menu_cb_Nativize);
-	Editor_addCommand (this, U"Edit", U"-- search --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- search --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Find...", 'F', menu_cb_Find);
 	Editor_addCommand (this, U"Edit", U"Find again", 'G', menu_cb_FindAgain);
 
@@ -1218,7 +1180,7 @@ void structTextGridEditor :: v_createMenus () {
 		Editor_addCommand (this, U"Select", U"Move end of selection to nearest zero crossing", '.', menu_cb_MoveEtoZero);
 	}
 
-	Editor_addCommand (this, U"Query", U"-- query interval --", 0, NULL);
+	Editor_addCommand (this, U"Query", U"-- query interval --", 0, nullptr);
 	Editor_addCommand (this, U"Query", U"Get starting point of interval", 0, menu_cb_GetStartingPointOfInterval);
 	Editor_addCommand (this, U"Query", U"Get end point of interval", 0, menu_cb_GetEndPointOfInterval);
 	Editor_addCommand (this, U"Query", U"Get label of interval", 0, menu_cb_GetLabelOfInterval);
@@ -1227,7 +1189,7 @@ void structTextGridEditor :: v_createMenus () {
 	if (d_sound.data || d_longSound.data) {
 		EditorMenu_addCommand (menu, U"Align interval", 'D', menu_cb_AlignInterval);
 		EditorMenu_addCommand (menu, U"Alignment settings...", 0, menu_cb_AlignmentSettings);
-		EditorMenu_addCommand (menu, U"-- add interval --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- add interval --", 0, nullptr);
 	}
 	EditorMenu_addCommand (menu, U"Add interval on tier 1", GuiMenu_COMMAND | '1', menu_cb_InsertIntervalOnTier1);
 	EditorMenu_addCommand (menu, U"Add interval on tier 2", GuiMenu_COMMAND | '2', menu_cb_InsertIntervalOnTier2);
@@ -1243,7 +1205,7 @@ void structTextGridEditor :: v_createMenus () {
 	EditorMenu_addCommand (menu, U"Move to E", 0, menu_cb_MoveToE);*/
 	if (d_sound.data) {
 		EditorMenu_addCommand (menu, U"Move to nearest zero crossing", 0, menu_cb_MoveToZero);
-		EditorMenu_addCommand (menu, U"-- insert boundary --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- insert boundary --", 0, nullptr);
 	}
 	EditorMenu_addCommand (menu, U"Add on selected tier", GuiMenu_ENTER, menu_cb_InsertOnSelectedTier);
 	EditorMenu_addCommand (menu, U"Add on tier 1", GuiMenu_COMMAND | GuiMenu_F1, menu_cb_InsertOnTier1);
@@ -1255,7 +1217,7 @@ void structTextGridEditor :: v_createMenus () {
 	EditorMenu_addCommand (menu, U"Add on tier 7", GuiMenu_COMMAND | GuiMenu_F7, menu_cb_InsertOnTier7);
 	EditorMenu_addCommand (menu, U"Add on tier 8", GuiMenu_COMMAND | GuiMenu_F8, menu_cb_InsertOnTier8);
 	EditorMenu_addCommand (menu, U"Add on all tiers", GuiMenu_COMMAND | GuiMenu_F9, menu_cb_InsertOnAllTiers);
-	EditorMenu_addCommand (menu, U"-- remove mark --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- remove mark --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Remove", GuiMenu_OPTION | GuiMenu_BACKSPACE, menu_cb_RemovePointOrBoundary);
 
 	menu = Editor_addMenu (this, U"Tier", 0);
@@ -1263,10 +1225,10 @@ void structTextGridEditor :: v_createMenus () {
 	EditorMenu_addCommand (menu, U"Add point tier...", 0, menu_cb_AddPointTier);
 	EditorMenu_addCommand (menu, U"Duplicate tier...", 0, menu_cb_DuplicateTier);
 	EditorMenu_addCommand (menu, U"Rename tier...", 0, menu_cb_RenameTier);
-	EditorMenu_addCommand (menu, U"-- remove tier --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- remove tier --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Remove all text from tier", 0, menu_cb_RemoveAllTextFromTier);
 	EditorMenu_addCommand (menu, U"Remove entire tier", 0, menu_cb_RemoveTier);
-	EditorMenu_addCommand (menu, U"-- extract tier --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- extract tier --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Extract to list of objects:", GuiMenu_INSENSITIVE, menu_cb_PublishTier /* dummy */);
 	EditorMenu_addCommand (menu, U"Extract entire selected tier", 0, menu_cb_PublishTier);
 
@@ -1274,7 +1236,7 @@ void structTextGridEditor :: v_createMenus () {
 		menu = Editor_addMenu (this, U"Spell", 0);
 		EditorMenu_addCommand (menu, U"Check spelling in tier", GuiMenu_COMMAND | GuiMenu_OPTION | 'L', menu_cb_CheckSpelling);
 		EditorMenu_addCommand (menu, U"Check spelling in interval", 0, menu_cb_CheckSpellingInInterval);
-		EditorMenu_addCommand (menu, U"-- edit lexicon --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- edit lexicon --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Add selected word to user dictionary", 0, menu_cb_AddToUserDictionary);
 	}
 
@@ -1295,9 +1257,7 @@ void structTextGridEditor :: v_createHelpMenuItems (EditorMenu menu) {
 
 /***** CHILDREN *****/
 
-static void gui_text_cb_change (I, GuiTextEvent event) {
-	iam (TextGridEditor);
-	(void) event;
+static void gui_text_cb_changed (TextGridEditor me, GuiTextEvent /* event */) {
 	TextGrid grid = (TextGrid) my data;
 	//Melder_casual (U"gui_text_cb_change 1 in editor ", Melder_pointer (me));
 	if (my suppressRedraw) return;   /* Prevent infinite loop if 'draw' method or Editor_broadcastChange calls GuiText_setString. */
@@ -1306,11 +1266,11 @@ static void gui_text_cb_change (I, GuiTextEvent event) {
 		char32 *text = GuiText_getString (my text);
 		IntervalTier intervalTier;
 		TextTier textTier;
-		_AnyTier_identifyClass ((Function) grid -> tiers -> item [my selectedTier], & intervalTier, & textTier);
+		_AnyTier_identifyClass (grid -> tiers->at [my selectedTier], & intervalTier, & textTier);
 		if (intervalTier) {
 			long selectedInterval = getSelectedInterval (me);
 			if (selectedInterval) {
-				TextInterval interval = (TextInterval) intervalTier -> intervals -> item [selectedInterval];
+				TextInterval interval = intervalTier -> intervals.at [selectedInterval];
 				//Melder_casual (U"gui_text_cb_change 3 in editor ", Melder_pointer (me));
 				TextInterval_setText (interval, text);
 				//Melder_casual (U"gui_text_cb_change 4 in editor ", Melder_pointer (me));
@@ -1322,7 +1282,7 @@ static void gui_text_cb_change (I, GuiTextEvent event) {
 		} else {
 			long selectedPoint = getSelectedPoint (me);
 			if (selectedPoint) {
-				TextPoint point = (TextPoint) textTier -> points -> item [selectedPoint];
+				TextPoint point = textTier -> points.at [selectedPoint];
 				Melder_free (point -> mark);
 				if (str32spn (text, U" \n\t") != str32len (text))   // any visible characters?
 				point -> mark = Melder_dup_f (text);
@@ -1336,7 +1296,7 @@ static void gui_text_cb_change (I, GuiTextEvent event) {
 
 void structTextGridEditor :: v_createChildren () {
 	TextGridEditor_Parent :: v_createChildren ();
-	if (text) GuiText_setChangeCallback (text, gui_text_cb_change, this);
+	if (text) GuiText_setChangedCallback (text, gui_text_cb_changed, this);
 }
 
 void structTextGridEditor :: v_dataChanged () {
@@ -1346,8 +1306,8 @@ void structTextGridEditor :: v_dataChanged () {
 	 * Most changes will involve intervals and boundaries; however, there may also be tier removals.
 	 * Do a simple guess.
 	 */
-	if (selectedTier > grid -> tiers -> size) {
-		selectedTier = grid -> tiers -> size;
+	if (selectedTier > grid -> tiers->size) {
+		selectedTier = grid -> tiers->size;
 	}
 	TextGridEditor_Parent :: v_dataChanged ();   // does all the updating
 }
@@ -1371,20 +1331,20 @@ static void do_drawIntervalTier (TextGridEditor me, IntervalTier tier, int itier
 		bool platformUsesAntiAliasing = false;
 	#endif
 	long x1DC, x2DC, yDC;
-	int selectedInterval = itier == my selectedTier ? getSelectedInterval (me) : 0, iinterval, ninterval = tier -> intervals -> size;
-	Graphics_WCtoDC (my d_graphics, my d_startWindow, 0.0, & x1DC, & yDC);
-	Graphics_WCtoDC (my d_graphics, my d_endWindow, 0.0, & x2DC, & yDC);
-	Graphics_setPercentSignIsItalic (my d_graphics, my p_useTextStyles);
-	Graphics_setNumberSignIsBold (my d_graphics, my p_useTextStyles);
-	Graphics_setCircumflexIsSuperscript (my d_graphics, my p_useTextStyles);
-	Graphics_setUnderscoreIsSubscript (my d_graphics, my p_useTextStyles);
+	int selectedInterval = itier == my selectedTier ? getSelectedInterval (me) : 0, iinterval, ninterval = tier -> intervals.size;
+	Graphics_WCtoDC (my d_graphics.get(), my d_startWindow, 0.0, & x1DC, & yDC);
+	Graphics_WCtoDC (my d_graphics.get(), my d_endWindow, 0.0, & x2DC, & yDC);
+	Graphics_setPercentSignIsItalic (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setNumberSignIsBold (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setCircumflexIsSuperscript (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setUnderscoreIsSubscript (my d_graphics.get(), my p_useTextStyles);
 
 	/*
 	 * Highlight interval: yellow (selected) or green (matching label).
 	 */
 	
 	for (iinterval = 1; iinterval <= ninterval; iinterval ++) {
-		TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
+		TextInterval interval = tier -> intervals.at [iinterval];
 		double tmin = interval -> xmin, tmax = interval -> xmax;
 		if (tmax > my d_startWindow && tmin < my d_endWindow) {   // interval visible?
 			int intervalIsSelected = iinterval == selectedInterval;
@@ -1392,45 +1352,45 @@ static void do_drawIntervalTier (TextGridEditor me, IntervalTier tier, int itier
 			if (tmin < my d_startWindow) tmin = my d_startWindow;
 			if (tmax > my d_endWindow) tmax = my d_endWindow;
 			if (labelMatches) {
-				Graphics_setColour (my d_graphics, Graphics_LIME);
-				Graphics_fillRectangle (my d_graphics, tmin, tmax, 0.0, 1.0);
+				Graphics_setColour (my d_graphics.get(), Graphics_LIME);
+				Graphics_fillRectangle (my d_graphics.get(), tmin, tmax, 0.0, 1.0);
 			}
 			if (intervalIsSelected) {
 				if (labelMatches) {
 					tmin = 0.85 * tmin + 0.15 * tmax;
 					tmax = 0.15 * tmin + 0.85 * tmax;
 				}
-				Graphics_setColour (my d_graphics, Graphics_YELLOW);
-				Graphics_fillRectangle (my d_graphics, tmin, tmax, labelMatches ? 0.15 : 0.0, labelMatches? 0.85: 1.0);
+				Graphics_setColour (my d_graphics.get(), Graphics_YELLOW);
+				Graphics_fillRectangle (my d_graphics.get(), tmin, tmax, labelMatches ? 0.15 : 0.0, labelMatches? 0.85: 1.0);
 			}
 		}
 	}
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_line (my d_graphics, my d_endWindow, 0.0, my d_endWindow, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_line (my d_graphics.get(), my d_endWindow, 0.0, my d_endWindow, 1.0);
 
 	/*
 	 * Draw a grey bar and a selection button at the cursor position.
 	 */
 	if (my d_startSelection == my d_endSelection && my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow) {
-		int cursorAtBoundary = FALSE;
+		bool cursorAtBoundary = false;
 		for (iinterval = 2; iinterval <= ninterval; iinterval ++) {
-			TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
-			if (interval -> xmin == my d_startSelection) cursorAtBoundary = TRUE;
+			TextInterval interval = tier -> intervals.at [iinterval];
+			if (interval -> xmin == my d_startSelection) cursorAtBoundary = true;
 		}
 		if (! cursorAtBoundary) {
-			double dy = Graphics_dyMMtoWC (my d_graphics, 1.5);
-			Graphics_setGrey (my d_graphics, 0.8);
-			Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 6.0 : 5.0);
-			Graphics_line (my d_graphics, my d_startSelection, 0.0, my d_startSelection, 1.0);
-			Graphics_setLineWidth (my d_graphics, 1.0);
-			Graphics_setColour (my d_graphics, Graphics_BLUE);
-			Graphics_circle_mm (my d_graphics, my d_startSelection, 1.0 - dy, 3.0);
+			double dy = Graphics_dyMMtoWC (my d_graphics.get(), 1.5);
+			Graphics_setGrey (my d_graphics.get(), 0.8);
+			Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 6.0 : 5.0);
+			Graphics_line (my d_graphics.get(), my d_startSelection, 0.0, my d_startSelection, 1.0);
+			Graphics_setLineWidth (my d_graphics.get(), 1.0);
+			Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+			Graphics_circle_mm (my d_graphics.get(), my d_startSelection, 1.0 - dy, 3.0);
 		}
 	}
 
-	Graphics_setTextAlignment (my d_graphics, my p_alignment, Graphics_HALF);
+	Graphics_setTextAlignment (my d_graphics.get(), my p_alignment, Graphics_HALF);
 	for (iinterval = 1; iinterval <= ninterval; iinterval ++) {
-		TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
+		TextInterval interval = tier -> intervals.at [iinterval];
 		double tmin = interval -> xmin, tmax = interval -> xmax;
 		if (tmin < my tmin) tmin = my tmin; if (tmax > my tmax) tmax = my tmax;
 		if (tmin >= tmax) continue;
@@ -1441,20 +1401,20 @@ static void do_drawIntervalTier (TextGridEditor me, IntervalTier tier, int itier
 		 */
 		if (tmin >= my d_startWindow && tmin <= my d_endWindow && iinterval > 1) {
 			bool boundaryIsSelected = ( my selectedTier == itier && tmin == my d_startSelection );
-			Graphics_setColour (my d_graphics, boundaryIsSelected ? Graphics_RED : Graphics_BLUE);
-			Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 6.0 : 5.0);
-			Graphics_line (my d_graphics, tmin, 0.0, tmin, 1.0);
+			Graphics_setColour (my d_graphics.get(), boundaryIsSelected ? Graphics_RED : Graphics_BLUE);
+			Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 6.0 : 5.0);
+			Graphics_line (my d_graphics.get(), tmin, 0.0, tmin, 1.0);
 
 			/*
 			 * Show alignment with cursor.
 			 */
 			if (tmin == my d_startSelection) {
-				Graphics_setColour (my d_graphics, Graphics_YELLOW);
-				Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 2.0 : 1.0);
-				Graphics_line (my d_graphics, tmin, 0.0, tmin, 1.0);
+				Graphics_setColour (my d_graphics.get(), Graphics_YELLOW);
+				Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 2.0 : 1.0);
+				Graphics_line (my d_graphics.get(), tmin, 0.0, tmin, 1.0);
 			}
 		}
-		Graphics_setLineWidth (my d_graphics, 1.0);
+		Graphics_setLineWidth (my d_graphics.get(), 1.0);
 
 		/*
 		 * Draw label text.
@@ -1462,16 +1422,16 @@ static void do_drawIntervalTier (TextGridEditor me, IntervalTier tier, int itier
 		if (interval -> text && tmax >= my d_startWindow && tmin <= my d_endWindow) {
 			double t1 = my d_startWindow > tmin ? my d_startWindow : tmin;
 			double t2 = my d_endWindow < tmax ? my d_endWindow : tmax;
-			Graphics_setColour (my d_graphics, intervalIsSelected ? Graphics_RED : Graphics_BLACK);
-			Graphics_textRect (my d_graphics, t1, t2, 0.0, 1.0, interval -> text);
-			Graphics_setColour (my d_graphics, Graphics_BLACK);
+			Graphics_setColour (my d_graphics.get(), intervalIsSelected ? Graphics_RED : Graphics_BLACK);
+			Graphics_textRect (my d_graphics.get(), t1, t2, 0.0, 1.0, interval -> text);
+			Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 		}
 
 	}
-	Graphics_setPercentSignIsItalic (my d_graphics, TRUE);
-	Graphics_setNumberSignIsBold (my d_graphics, TRUE);
-	Graphics_setCircumflexIsSuperscript (my d_graphics, TRUE);
-	Graphics_setUnderscoreIsSubscript (my d_graphics, TRUE);
+	Graphics_setPercentSignIsItalic (my d_graphics.get(), true);
+	Graphics_setNumberSignIsBold (my d_graphics.get(), true);
+	Graphics_setCircumflexIsSuperscript (my d_graphics.get(), true);
+	Graphics_setUnderscoreIsSubscript (my d_graphics.get(), true);
 }
 
 static void do_drawTextTier (TextGridEditor me, TextTier tier, int itier) {
@@ -1480,75 +1440,75 @@ static void do_drawTextTier (TextGridEditor me, TextTier tier, int itier) {
 	#else
 		bool platformUsesAntiAliasing = false;
 	#endif
-	int ipoint, npoint = tier -> points -> size;
-	Graphics_setPercentSignIsItalic (my d_graphics, my p_useTextStyles);
-	Graphics_setNumberSignIsBold (my d_graphics, my p_useTextStyles);
-	Graphics_setCircumflexIsSuperscript (my d_graphics, my p_useTextStyles);
-	Graphics_setUnderscoreIsSubscript (my d_graphics, my p_useTextStyles);
+	int ipoint, npoint = tier -> points.size;
+	Graphics_setPercentSignIsItalic (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setNumberSignIsBold (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setCircumflexIsSuperscript (my d_graphics.get(), my p_useTextStyles);
+	Graphics_setUnderscoreIsSubscript (my d_graphics.get(), my p_useTextStyles);
 
 	/*
 	 * Draw a grey bar and a selection button at the cursor position.
 	 */
 	if (my d_startSelection == my d_endSelection && my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow) {
-		int cursorAtPoint = FALSE;
+		bool cursorAtPoint = false;
 		for (ipoint = 1; ipoint <= npoint; ipoint ++) {
-			TextPoint point = (TextPoint) tier -> points -> item [ipoint];
-			if (point -> number == my d_startSelection) cursorAtPoint = TRUE;
+			TextPoint point = tier -> points.at [ipoint];
+			if (point -> number == my d_startSelection) cursorAtPoint = true;
 		}
 		if (! cursorAtPoint) {
-			double dy = Graphics_dyMMtoWC (my d_graphics, 1.5);
-			Graphics_setGrey (my d_graphics, 0.8);
-			Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 6.0 : 5.0);
-			Graphics_line (my d_graphics, my d_startSelection, 0.0, my d_startSelection, 1.0);
-			Graphics_setLineWidth (my d_graphics, 1.0);
-			Graphics_setColour (my d_graphics, Graphics_BLUE);
-			Graphics_circle_mm (my d_graphics, my d_startSelection, 1.0 - dy, 3.0);
+			double dy = Graphics_dyMMtoWC (my d_graphics.get(), 1.5);
+			Graphics_setGrey (my d_graphics.get(), 0.8);
+			Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 6.0 : 5.0);
+			Graphics_line (my d_graphics.get(), my d_startSelection, 0.0, my d_startSelection, 1.0);
+			Graphics_setLineWidth (my d_graphics.get(), 1.0);
+			Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+			Graphics_circle_mm (my d_graphics.get(), my d_startSelection, 1.0 - dy, 3.0);
 		}
 	}
 
-	Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
 	for (ipoint = 1; ipoint <= npoint; ipoint ++) {
-		TextPoint point = (TextPoint) tier -> points -> item [ipoint];
+		TextPoint point = tier -> points.at [ipoint];
 		double t = point -> number;
 		if (t >= my d_startWindow && t <= my d_endWindow) {
 			bool pointIsSelected = ( itier == my selectedTier && t == my d_startSelection );
-			Graphics_setColour (my d_graphics, pointIsSelected ? Graphics_RED : Graphics_BLUE);
-			Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 6.0 : 5.0);
-			Graphics_line (my d_graphics, t, 0.0, t, 0.2);
-			Graphics_line (my d_graphics, t, 0.8, t, 1);
-			Graphics_setLineWidth (my d_graphics, 1.0);
+			Graphics_setColour (my d_graphics.get(), pointIsSelected ? Graphics_RED : Graphics_BLUE);
+			Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 6.0 : 5.0);
+			Graphics_line (my d_graphics.get(), t, 0.0, t, 0.2);
+			Graphics_line (my d_graphics.get(), t, 0.8, t, 1);
+			Graphics_setLineWidth (my d_graphics.get(), 1.0);
 
 			/*
 			 * Wipe out the cursor where the text is going to be.
 			 */
-			Graphics_setColour (my d_graphics, Graphics_WHITE);
-			Graphics_line (my d_graphics, t, 0.2, t, 0.8);
+			Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+			Graphics_line (my d_graphics.get(), t, 0.2, t, 0.8);
 
 			/*
 			 * Show alignment with cursor.
 			 */
 			if (my d_startSelection == my d_endSelection && t == my d_startSelection) {
-				Graphics_setColour (my d_graphics, Graphics_YELLOW);
-				Graphics_setLineWidth (my d_graphics, platformUsesAntiAliasing ? 2.0 : 1.0);
-				Graphics_line (my d_graphics, t, 0.0, t, 0.2);
-				Graphics_line (my d_graphics, t, 0.8, t, 1.0);
+				Graphics_setColour (my d_graphics.get(), Graphics_YELLOW);
+				Graphics_setLineWidth (my d_graphics.get(), platformUsesAntiAliasing ? 2.0 : 1.0);
+				Graphics_line (my d_graphics.get(), t, 0.0, t, 0.2);
+				Graphics_line (my d_graphics.get(), t, 0.8, t, 1.0);
 			}
-			Graphics_setColour (my d_graphics, pointIsSelected ? Graphics_RED : Graphics_BLUE);
-			if (point -> mark) Graphics_text (my d_graphics, t, 0.5, point -> mark);
+			Graphics_setColour (my d_graphics.get(), pointIsSelected ? Graphics_RED : Graphics_BLUE);
+			if (point -> mark) Graphics_text (my d_graphics.get(), t, 0.5, point -> mark);
 		}
 	}
-	Graphics_setPercentSignIsItalic (my d_graphics, TRUE);
-	Graphics_setNumberSignIsBold (my d_graphics, TRUE);
-	Graphics_setCircumflexIsSuperscript (my d_graphics, TRUE);
-	Graphics_setUnderscoreIsSubscript (my d_graphics, TRUE);
+	Graphics_setPercentSignIsItalic (my d_graphics.get(), true);
+	Graphics_setNumberSignIsBold (my d_graphics.get(), true);
+	Graphics_setCircumflexIsSuperscript (my d_graphics.get(), true);
+	Graphics_setUnderscoreIsSubscript (my d_graphics.get(), true);
 }
 
 void structTextGridEditor :: v_draw () {
 	TextGrid grid = (TextGrid) data;
 	Graphics_Viewport vp1, vp2;
-	long itier, ntier = grid -> tiers -> size;
-	enum kGraphics_font oldFont = Graphics_inqFont (d_graphics);
-	int oldFontSize = Graphics_inqFontSize (d_graphics);
+	long itier, ntier = grid -> tiers->size;
+	enum kGraphics_font oldFont = Graphics_inqFont (d_graphics.get());
+	int oldFontSize = Graphics_inqFontSize (d_graphics.get());
 	bool showAnalysis = v_hasAnalysis () && (p_spectrogram_show || p_pitch_show || p_intensity_show || p_formant_show) && (d_longSound.data || d_sound.data);
 	double soundY = _TextGridEditor_computeSoundY (this), soundY2 = showAnalysis ? 0.5 * (1.0 + soundY) : soundY;
 
@@ -1556,121 +1516,121 @@ void structTextGridEditor :: v_draw () {
 	 * Draw optional sound.
 	 */
 	if (d_longSound.data || d_sound.data) {
-		vp1 = Graphics_insetViewport (d_graphics, 0.0, 1.0, soundY2, 1.0);
-		Graphics_setColour (d_graphics, Graphics_WHITE);
-		Graphics_setWindow (d_graphics, 0, 1, 0, 1);
-		Graphics_fillRectangle (d_graphics, 0, 1, 0, 1);
+		vp1 = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, soundY2, 1.0);
+		Graphics_setColour (d_graphics.get(), Graphics_WHITE);
+		Graphics_setWindow (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_fillRectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 		TimeSoundEditor_drawSound (this, -1.0, 1.0);
-		Graphics_flushWs (d_graphics);
-		Graphics_resetViewport (d_graphics, vp1);
+		//Graphics_flushWs (d_graphics.get());
+		Graphics_resetViewport (d_graphics.get(), vp1);
 	}
 
 	/*
 	 * Draw tiers.
 	 */
-	if (d_longSound.data || d_sound.data) vp1 = Graphics_insetViewport (d_graphics, 0.0, 1.0, 0.0, soundY);
-	Graphics_setColour (d_graphics, Graphics_WHITE);
-	Graphics_setWindow (d_graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (d_graphics, 0, 1, 0, 1);
-	Graphics_setColour (d_graphics, Graphics_BLACK);
-	Graphics_rectangle (d_graphics, 0, 1, 0, 1);
-	Graphics_setWindow (d_graphics, d_startWindow, d_endWindow, 0.0, 1.0);
+	if (d_longSound.data || d_sound.data) vp1 = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, 0.0, soundY);
+	Graphics_setColour (d_graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setWindow (d_graphics.get(), d_startWindow, d_endWindow, 0.0, 1.0);
 	for (itier = 1; itier <= ntier; itier ++) {
-		Function anyTier = (Function) grid -> tiers -> item [itier];
+		Function anyTier = grid -> tiers->at [itier];
 		bool tierIsSelected = itier == selectedTier;
 		bool isIntervalTier = anyTier -> classInfo == classIntervalTier;
-		vp2 = Graphics_insetViewport (d_graphics, 0.0, 1.0,
+		vp2 = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0,
 			1.0 - (double) itier / (double) ntier,
 			1.0 - (double) (itier - 1) / (double) ntier);
-		Graphics_setColour (d_graphics, Graphics_BLACK);
-		if (itier != 1) Graphics_line (d_graphics, d_startWindow, 1.0, d_endWindow, 1.0);
+		Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+		if (itier != 1) Graphics_line (d_graphics.get(), d_startWindow, 1.0, d_endWindow, 1.0);
 
 		/*
 		 * Show the number and the name of the tier.
 		 */
-		Graphics_setColour (d_graphics, tierIsSelected ? Graphics_RED : Graphics_BLACK);
-		Graphics_setFont (d_graphics, oldFont);
-		Graphics_setFontSize (d_graphics, 14);
-		Graphics_setTextAlignment (d_graphics, Graphics_RIGHT, Graphics_HALF);
-		Graphics_text (d_graphics, d_startWindow, 0.5,   tierIsSelected ? U"☞ " : U"", itier);
-		Graphics_setFontSize (d_graphics, oldFontSize);
+		Graphics_setColour (d_graphics.get(), tierIsSelected ? Graphics_RED : Graphics_BLACK);
+		Graphics_setFont (d_graphics.get(), oldFont);
+		Graphics_setFontSize (d_graphics.get(), 14);
+		Graphics_setTextAlignment (d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+		Graphics_text (d_graphics.get(), d_startWindow, 0.5,   tierIsSelected ? U"☞ " : U"", itier);
+		Graphics_setFontSize (d_graphics.get(), oldFontSize);
 		if (anyTier -> name && anyTier -> name [0]) {
-			Graphics_setTextAlignment (d_graphics, Graphics_LEFT,
+			Graphics_setTextAlignment (d_graphics.get(), Graphics_LEFT,
 				p_showNumberOf == kTextGridEditor_showNumberOf_NOTHING ? Graphics_HALF : Graphics_BOTTOM);
-			Graphics_text (d_graphics, d_endWindow, 0.5, anyTier -> name);
+			Graphics_text (d_graphics.get(), d_endWindow, 0.5, anyTier -> name);
 		}
 		if (p_showNumberOf != kTextGridEditor_showNumberOf_NOTHING) {
-			Graphics_setTextAlignment (d_graphics, Graphics_LEFT, Graphics_TOP);
+			Graphics_setTextAlignment (d_graphics.get(), Graphics_LEFT, Graphics_TOP);
 			if (p_showNumberOf == kTextGridEditor_showNumberOf_INTERVALS_OR_POINTS) {
-				long count = isIntervalTier ? ((IntervalTier) anyTier) -> intervals -> size : ((TextTier) anyTier) -> points -> size;
+				long count = isIntervalTier ? ((IntervalTier) anyTier) -> intervals.size : ((TextTier) anyTier) -> points.size;
 				long position = itier == selectedTier ? ( isIntervalTier ? getSelectedInterval (this) : getSelectedPoint (this) ) : 0;
 				if (position) {
-					Graphics_text (d_graphics, d_endWindow, 0.5,   U"(", position, U"/", count, U")");
+					Graphics_text (d_graphics.get(), d_endWindow, 0.5,   U"(", position, U"/", count, U")");
 				} else {
-					Graphics_text (d_graphics, d_endWindow, 0.5,   U"(", count, U")");
+					Graphics_text (d_graphics.get(), d_endWindow, 0.5,   U"(", count, U")");
 				}
 			} else {
 				Melder_assert (kTextGridEditor_showNumberOf_NONEMPTY_INTERVALS_OR_POINTS);
 				long count = 0;
 				if (isIntervalTier) {
 					IntervalTier tier = (IntervalTier) anyTier;
-					long ninterval = tier -> intervals -> size, iinterval;
+					long ninterval = tier -> intervals.size, iinterval;
 					for (iinterval = 1; iinterval <= ninterval; iinterval ++) {
-						TextInterval interval = (TextInterval) tier -> intervals -> item [iinterval];
-						if (interval -> text != NULL && interval -> text [0] != '\0') {
+						TextInterval interval = tier -> intervals.at [iinterval];
+						if (interval -> text && interval -> text [0] != U'\0') {
 							count ++;
 						}
 					}
 				} else {
 					TextTier tier = (TextTier) anyTier;
-					long npoint = tier -> points -> size, ipoint;
+					long npoint = tier -> points.size, ipoint;
 					for (ipoint = 1; ipoint <= npoint; ipoint ++) {
-						TextPoint point = (TextPoint) tier -> points -> item [ipoint];
-						if (point -> mark != NULL && point -> mark [0] != '\0') {
+						TextPoint point = tier -> points.at [ipoint];
+						if (point -> mark && point -> mark [0] != U'\0') {
 							count ++;
 						}
 					}
 				}
-				Graphics_text (d_graphics, d_endWindow, 0.5,   U"(##", count, U"#)");
+				Graphics_text (d_graphics.get(), d_endWindow, 0.5,   U"(##", count, U"#)");
 			}
 		}
 
-		Graphics_setColour (d_graphics, Graphics_BLACK);
-		Graphics_setFont (d_graphics, kGraphics_font_TIMES);
-		Graphics_setFontSize (d_graphics, p_fontSize);
+		Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+		Graphics_setFont (d_graphics.get(), kGraphics_font_TIMES);
+		Graphics_setFontSize (d_graphics.get(), p_fontSize);
 		if (isIntervalTier)
 			do_drawIntervalTier (this, (IntervalTier) anyTier, itier);
 		else
 			do_drawTextTier (this, (TextTier) anyTier, itier);
-		Graphics_resetViewport (d_graphics, vp2);
+		Graphics_resetViewport (d_graphics.get(), vp2);
 	}
-	Graphics_setColour (d_graphics, Graphics_BLACK);
-	Graphics_setFont (d_graphics, oldFont);
-	Graphics_setFontSize (d_graphics, oldFontSize);
-	if (d_longSound.data || d_sound.data) Graphics_resetViewport (d_graphics, vp1);
-	Graphics_flushWs (d_graphics);
+	Graphics_setColour (d_graphics.get(), Graphics_BLACK);
+	Graphics_setFont (d_graphics.get(), oldFont);
+	Graphics_setFontSize (d_graphics.get(), oldFontSize);
+	if (d_longSound.data || d_sound.data) Graphics_resetViewport (d_graphics.get(), vp1);
+	//Graphics_flushWs (d_graphics.get());
 
 	if (showAnalysis) {
-		vp1 = Graphics_insetViewport (d_graphics, 0.0, 1.0, soundY, soundY2);
+		vp1 = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, soundY, soundY2);
 		v_draw_analysis ();
-		Graphics_flushWs (d_graphics);
-		Graphics_resetViewport (d_graphics, vp1);
+		//Graphics_flushWs (d_graphics.get());
+		Graphics_resetViewport (d_graphics.get(), vp1);
 		/* Draw pulses. */
 		if (p_pulses_show) {
-			vp1 = Graphics_insetViewport (d_graphics, 0.0, 1.0, soundY2, 1.0);
+			vp1 = Graphics_insetViewport (d_graphics.get(), 0.0, 1.0, soundY2, 1.0);
 			v_draw_analysis_pulses ();
 			TimeSoundEditor_drawSound (this, -1.0, 1.0);   // second time, partially across the pulses
-			Graphics_flushWs (d_graphics);
-			Graphics_resetViewport (d_graphics, vp1);
+			//Graphics_flushWs (d_graphics.get());
+			Graphics_resetViewport (d_graphics.get(), vp1);
 		}
 	}
-	Graphics_setWindow (d_graphics, d_startWindow, d_endWindow, 0.0, 1.0);
+	Graphics_setWindow (d_graphics.get(), d_startWindow, d_endWindow, 0.0, 1.0);
 	if (d_longSound.data || d_sound.data) {
-		Graphics_line (d_graphics, d_startWindow, soundY, d_endWindow, soundY);
+		Graphics_line (d_graphics.get(), d_startWindow, soundY, d_endWindow, soundY);
 		if (showAnalysis) {
-			Graphics_line (d_graphics, d_startWindow, soundY2, d_endWindow, soundY2);
-			Graphics_line (d_graphics, d_startWindow, soundY, d_startWindow, soundY2);
-			Graphics_line (d_graphics, d_endWindow, soundY, d_endWindow, soundY2);
+			Graphics_line (d_graphics.get(), d_startWindow, soundY2, d_endWindow, soundY2);
+			Graphics_line (d_graphics.get(), d_startWindow, soundY, d_startWindow, soundY2);
+			Graphics_line (d_graphics.get(), d_endWindow, soundY, d_endWindow, soundY2);
 		}
 	}
 
@@ -1680,32 +1640,32 @@ void structTextGridEditor :: v_draw () {
 	v_updateMenuItems_file ();
 }
 
-static void do_drawWhileDragging (TextGridEditor me, double numberOfTiers, int *selectedTier, double x, double soundY) {
+static void do_drawWhileDragging (TextGridEditor me, double numberOfTiers, bool selectedTier [], double x, double soundY) {
 	long itier;
 	for (itier = 1; itier <= numberOfTiers; itier ++) if (selectedTier [itier]) {
 		double ymin = soundY * (1.0 - (double) itier / numberOfTiers);
 		double ymax = soundY * (1.0 - (double) (itier - 1) / numberOfTiers);
-		Graphics_setLineWidth (my d_graphics, 7);
-		Graphics_line (my d_graphics, x, ymin, x, ymax);
+		Graphics_setLineWidth (my d_graphics.get(), 7.0);
+		Graphics_line (my d_graphics.get(), x, ymin, x, ymax);
 	}
-	Graphics_setLineWidth (my d_graphics, 1);
-	Graphics_line (my d_graphics, x, 0, x, 1.01);
-	Graphics_text (my d_graphics, x, 1.01, Melder_fixed (x, 6));
+	Graphics_setLineWidth (my d_graphics.get(), 1);
+	Graphics_line (my d_graphics.get(), x, 0.0, x, 1.01);
+	Graphics_text (my d_graphics.get(), x, 1.01, Melder_fixed (x, 6));
 }
 
 static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier, int shiftKeyPressed) {
 	TextGrid grid = (TextGrid) my data;
-	int itier, numberOfTiers = grid -> tiers -> size, itierDrop;
+	int numberOfTiers = grid -> tiers->size, itierDrop;
 	double xWC = xbegin, yWC;
 	double leftDraggingBoundary = my tmin, rightDraggingBoundary = my tmax;   // initial dragging range
-	int selectedTier [100];
+	bool selectedTier [1000];
 	double soundY = _TextGridEditor_computeSoundY (me);
 
 	/*
 	 * Determine the set of selected boundaries and points, and the dragging range.
 	 */
-	for (itier = 1; itier <= numberOfTiers; itier ++) {
-		selectedTier [itier] = FALSE;   /* The default. */
+	for (int itier = 1; itier <= numberOfTiers; itier ++) {
+		selectedTier [itier] = false;   // the default
 		/*
 		 * If she has pressed the shift key, let her drag all the boundaries and points at this time.
 		 * Otherwise, let her only drag the boundary or point on the clicked tier.
@@ -1713,13 +1673,13 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 		if (itier == iClickedTier || shiftKeyPressed == my p_shiftDragMultiple) {
 			IntervalTier intervalTier;
 			TextTier textTier;
-			_AnyTier_identifyClass ((Function) grid -> tiers -> item [itier], & intervalTier, & textTier);
+			_AnyTier_identifyClass (grid -> tiers->at [itier], & intervalTier, & textTier);
 			if (intervalTier) {
 				long ibound = IntervalTier_hasBoundary (intervalTier, xbegin);
 				if (ibound) {
-					TextInterval leftInterval = (TextInterval) intervalTier -> intervals -> item [ibound - 1];
-					TextInterval rightInterval = (TextInterval) intervalTier -> intervals -> item [ibound];
-					selectedTier [itier] = TRUE;
+					TextInterval leftInterval = intervalTier -> intervals.at [ibound - 1];
+					TextInterval rightInterval = intervalTier -> intervals.at [ibound];
+					selectedTier [itier] = true;
 					/*
 					 * Prevent her to drag the boundary past its left or right neighbours on the same tier.
 					 */
@@ -1731,23 +1691,23 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 					}
 				}
 			} else {
-				if (AnyTier_hasPoint (textTier, xbegin)) {
+				if (AnyTier_hasPoint (textTier->asAnyTier(), xbegin)) {
 					/*
 					 * Other than with boundaries on interval tiers,
 					 * points on text tiers can be dragged past their neighbours.
 					 */
-					selectedTier [itier] = TRUE;
+					selectedTier [itier] = true;
 				}
 			}
 		}
 	}
 
-	Graphics_xorOn (my d_graphics, Graphics_MAROON);
-	Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_BOTTOM);
+	Graphics_xorOn (my d_graphics.get(), Graphics_MAROON);
+	Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_BOTTOM);
 	do_drawWhileDragging (me, numberOfTiers, selectedTier, xWC, soundY);   // draw at old position
-	while (Graphics_mouseStillDown (my d_graphics)) {
+	while (Graphics_mouseStillDown (my d_graphics.get())) {
 		double xWC_new;
-		Graphics_getMouseLocation (my d_graphics, & xWC_new, & yWC);
+		Graphics_getMouseLocation (my d_graphics.get(), & xWC_new, & yWC);
 		if (xWC_new != xWC) {
 			do_drawWhileDragging (me, numberOfTiers, selectedTier, xWC, soundY);   // undraw at old position
 			xWC = xWC_new;
@@ -1755,7 +1715,7 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 		}
 	}
 	do_drawWhileDragging (me, numberOfTiers, selectedTier, xWC, soundY);   // undraw at new position
-	Graphics_xorOff (my d_graphics);
+	Graphics_xorOff (my d_graphics.get());
 
 	/*
 	 * The simplest way to cancel the dragging operation, is to drag outside the window.
@@ -1769,13 +1729,13 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 	 */
 	itierDrop = _TextGridEditor_yWCtoTier (me, yWC);
 	if (yWC > 0.0 && yWC < soundY && ! selectedTier [itierDrop]) {   // dropped inside an unselected tier?
-		Function anyTierDrop = (Function) grid -> tiers -> item [itierDrop];
+		Function anyTierDrop = grid -> tiers->at [itierDrop];
 		if (anyTierDrop -> classInfo == classIntervalTier) {
 			IntervalTier tierDrop = (IntervalTier) anyTierDrop;
 			long ibound;
-			for (ibound = 1; ibound < tierDrop -> intervals -> size; ibound ++) {
-				TextInterval left = (TextInterval) tierDrop -> intervals -> item [ibound];
-				if (fabs (Graphics_dxWCtoMM (my d_graphics, xWC - left -> xmax)) < 1.5) {   // near a boundary?
+			for (ibound = 1; ibound < tierDrop -> intervals.size; ibound ++) {
+				TextInterval left = tierDrop -> intervals.at [ibound];
+				if (fabs (Graphics_dxWCtoMM (my d_graphics.get(), xWC - left -> xmax)) < 1.5) {   // near a boundary?
 					/*
 					 * Snap to boundary.
 					 */
@@ -1785,9 +1745,9 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 		} else {
 			TextTier tierDrop = (TextTier) anyTierDrop;
 			long ipoint;
-			for (ipoint = 1; ipoint <= tierDrop -> points -> size; ipoint ++) {
-				TextPoint point = (TextPoint) tierDrop -> points -> item [ipoint];
-				if (fabs (Graphics_dxWCtoMM (my d_graphics, xWC - point -> number)) < 1.5) {   // near a point?
+			for (ipoint = 1; ipoint <= tierDrop -> points.size; ipoint ++) {
+				TextPoint point = tierDrop -> points.at [ipoint];
+				if (fabs (Graphics_dxWCtoMM (my d_graphics.get(), xWC - point -> number)) < 1.5) {   // near a point?
 					/*
 					 * Snap to point.
 					 */
@@ -1795,12 +1755,12 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 				}
 			}
 		}
-	} else if (xbegin != my d_startSelection && fabs (Graphics_dxWCtoMM (my d_graphics, xWC - my d_startSelection)) < 1.5) {   // near the cursor?
+	} else if (xbegin != my d_startSelection && fabs (Graphics_dxWCtoMM (my d_graphics.get(), xWC - my d_startSelection)) < 1.5) {   // near the cursor?
 		/*
 		 * Snap to cursor.
 		 */
 		xWC = my d_startSelection;
-	} else if (xbegin != my d_endSelection && fabs (Graphics_dxWCtoMM (my d_graphics, xWC - my d_endSelection)) < 1.5) {   // near the cursor?
+	} else if (xbegin != my d_endSelection && fabs (Graphics_dxWCtoMM (my d_graphics.get(), xWC - my d_endSelection)) < 1.5) {   // near the cursor?
 		/*
 		 * Snap to cursor.
 		 */
@@ -1817,35 +1777,34 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 
 	Editor_save (me, U"Drag");
 
-	for (itier = 1; itier <= numberOfTiers; itier ++) if (selectedTier [itier]) {
+	for (int itier = 1; itier <= numberOfTiers; itier ++) if (selectedTier [itier]) {
 		IntervalTier intervalTier;
 		TextTier textTier;
-		_AnyTier_identifyClass ((Function) grid -> tiers -> item [itier], & intervalTier, & textTier);
+		_AnyTier_identifyClass (grid -> tiers->at [itier], & intervalTier, & textTier);
 		if (intervalTier) {
-			long ibound, numberOfIntervals = intervalTier -> intervals -> size;
-			Any *intervals = intervalTier -> intervals -> item;
+			long ibound, numberOfIntervals = intervalTier -> intervals.size;
 			for (ibound = 2; ibound <= numberOfIntervals; ibound ++) {
-				TextInterval left = (TextInterval) intervals [ibound - 1], right = (TextInterval) intervals [ibound];
+				TextInterval left = intervalTier -> intervals.at [ibound - 1], right = intervalTier -> intervals.at [ibound];
 				if (left -> xmax == xbegin) {   // boundary dragged?
 					left -> xmax = right -> xmin = xWC;   // move boundary to drop site
 					break;
 				}
 			}
 		} else {
-			long iDraggedPoint = AnyTier_hasPoint (textTier, xbegin);
+			long iDraggedPoint = AnyTier_hasPoint (textTier->asAnyTier(), xbegin);
 			if (iDraggedPoint) {
-				long dropSiteHasPoint = AnyTier_hasPoint (textTier, xWC);
+				long dropSiteHasPoint = AnyTier_hasPoint (textTier->asAnyTier(), xWC);
 				if (dropSiteHasPoint) {
 					Melder_warning (U"Cannot drop point on an existing point.");
 				} else {
-					TextPoint point = (TextPoint) textTier -> points -> item [iDraggedPoint];
+					TextPoint point = textTier -> points.at [iDraggedPoint];
 					/*
 					 * Move point to drop site. May have passed another point.
 					 */
-					TextPoint newPoint = Data_copy (point);
+					autoTextPoint newPoint = Data_copy (point);
 					newPoint -> number = xWC;   // move point to drop site
-					Collection_removeItem (textTier -> points, iDraggedPoint);
-					Collection_addItem (textTier -> points, newPoint);
+					textTier -> points. removeItem (iDraggedPoint);
+					textTier -> points. addItem_move (newPoint.move());
 				}
 			}
 		}
@@ -1867,15 +1826,16 @@ static void do_dragBoundary (TextGridEditor me, double xbegin, int iClickedTier,
 	Editor_broadcastDataChanged (me);
 }
 
-int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPressed) {
+bool structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPressed) {
 	TextGrid grid = (TextGrid) our data;
 	double tmin, tmax, x, y;
-	long ntiers = grid -> tiers -> size, iClickedTier, iClickedInterval, iClickedPoint;
-	int clickedLeftBoundary = 0, nearBoundaryOrPoint, nearCursorCircle, drag = FALSE;
+	long ntiers = grid -> tiers->size, iClickedTier, iClickedInterval, iClickedPoint;
+	int clickedLeftBoundary = 0;
+	bool nearBoundaryOrPoint, nearCursorCircle, drag = false;
 	IntervalTier intervalTier;
 	TextTier textTier;
-	TextInterval interval = NULL;
-	TextPoint point = NULL;
+	TextInterval interval = nullptr;
+	TextPoint point = nullptr;
 	double soundY = _TextGridEditor_computeSoundY (this);
 	double tnear;
 
@@ -1904,7 +1864,7 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 	}
 
 	_TextGridEditor_timeToInterval (this, xclick, iClickedTier, & tmin, & tmax);
-	_AnyTier_identifyClass ((Function) grid -> tiers -> item [iClickedTier], & intervalTier, & textTier);
+	_AnyTier_identifyClass (grid -> tiers->at [iClickedTier], & intervalTier, & textTier);
 
 	/*
 	 * Get the time of the nearest boundary or point.
@@ -1913,7 +1873,7 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 	if (intervalTier) {
 		iClickedInterval = IntervalTier_timeToIndex (intervalTier, xclick);
 		if (iClickedInterval) {
-			interval = (TextInterval) intervalTier -> intervals -> item [iClickedInterval];
+			interval = intervalTier -> intervals.at [iClickedInterval];
 			if (xclick > 0.5 * (interval -> xmin + interval -> xmax)) {
 				tnear = interval -> xmax;
 				clickedLeftBoundary = iClickedInterval + 1;
@@ -1930,9 +1890,9 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 			return FunctionEditor_UPDATE_NEEDED;
 		}
 	} else {
-		iClickedPoint = AnyTier_timeToNearestIndex (textTier, xclick);
+		iClickedPoint = AnyTier_timeToNearestIndex (textTier->asAnyTier(), xclick);
 		if (iClickedPoint) {
-			point = (TextPoint) textTier -> points -> item [iClickedPoint];
+			point = textTier -> points.at [iClickedPoint];
 			tnear = point -> number;
 		}
 	}
@@ -1941,19 +1901,19 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 	/*
 	 * Where did she click?
 	 */
-	nearBoundaryOrPoint = tnear != NUMundefined && fabs (Graphics_dxWCtoMM (our d_graphics, xclick - tnear)) < 1.5;
-	nearCursorCircle = our d_startSelection == our d_endSelection && Graphics_distanceWCtoMM (our d_graphics, xclick, yWC,
-		our d_startSelection, (ntiers + 1 - iClickedTier) * soundY / ntiers - Graphics_dyMMtoWC (our d_graphics, 1.5)) < 1.5;
+	nearBoundaryOrPoint = ( tnear != NUMundefined && fabs (Graphics_dxWCtoMM (our d_graphics.get(), xclick - tnear)) < 1.5 );
+	nearCursorCircle = ( our d_startSelection == our d_endSelection && Graphics_distanceWCtoMM (our d_graphics.get(), xclick, yWC,
+		our d_startSelection, (ntiers + 1 - iClickedTier) * soundY / ntiers - Graphics_dyMMtoWC (our d_graphics.get(), 1.5)) < 1.5 );
 
 	/*
 	 * Find out whether this is a click or a drag.
 	 */
-	while (Graphics_mouseStillDown (our d_graphics)) {
-		Graphics_getMouseLocation (our d_graphics, & x, & y);
+	while (Graphics_mouseStillDown (our d_graphics.get())) {
+		Graphics_getMouseLocation (our d_graphics.get(), & x, & y);
 		if (x < our d_startWindow) x = our d_startWindow;
 		if (x > our d_endWindow) x = our d_endWindow;
-		if (fabs (Graphics_dxWCtoMM (our d_graphics, x - xclick)) > 1.5) {
-			drag = TRUE;
+		if (fabs (Graphics_dxWCtoMM (our d_graphics.get(), x - xclick)) > 1.5) {
+			drag = true;
 			break;
 		}
 	}
@@ -1963,7 +1923,7 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 		 * Possibility 1: she clicked near a boundary or point.
 		 * Select or drag it.
 		 */
-		if (intervalTier && (clickedLeftBoundary < 2 || clickedLeftBoundary > intervalTier -> intervals -> size)) {		
+		if (intervalTier && (clickedLeftBoundary < 2 || clickedLeftBoundary > intervalTier -> intervals.size)) {
 			/*
 			 * Ignore click on left edge of first interval or right edge of last interval.
 			 */
@@ -2000,7 +1960,7 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 		our selectedTier = iClickedTier;
 		FunctionEditor_marksChanged (this, true);
 		Editor_broadcastDataChanged (this);
-		if (drag) Graphics_waitMouseUp (our d_graphics);
+		if (drag) Graphics_waitMouseUp (our d_graphics.get());
 		return FunctionEditor_NO_UPDATE_NEEDED;
 	} else {
 		/*
@@ -2012,11 +1972,11 @@ int structTextGridEditor :: v_click (double xclick, double yWC, bool shiftKeyPre
 		}
 		selectedTier = iClickedTier;
 	}
-	if (drag) Graphics_waitMouseUp (our d_graphics);
+	if (drag) Graphics_waitMouseUp (our d_graphics.get());
 	return FunctionEditor_UPDATE_NEEDED;
 }
 
-int structTextGridEditor :: v_clickB (double t, double yWC) {
+bool structTextGridEditor :: v_clickB (double t, double yWC) {
 	double soundY = _TextGridEditor_computeSoundY (this);
 
 	if (yWC > soundY) {   // clicked in sound part?
@@ -2040,7 +2000,7 @@ int structTextGridEditor :: v_clickB (double t, double yWC) {
 	return FunctionEditor_UPDATE_NEEDED;
 }
 
-int structTextGridEditor :: v_clickE (double t, double yWC) {
+bool structTextGridEditor :: v_clickE (double t, double yWC) {
 	double soundY = _TextGridEditor_computeSoundY (this);
 
 	if (yWC > soundY) {   // clicked in sound part?
@@ -2079,19 +2039,19 @@ void structTextGridEditor :: v_updateText () {
 	if (our selectedTier) {
 		IntervalTier intervalTier;
 		TextTier textTier;
-		_AnyTier_identifyClass ((Function) grid -> tiers -> item [selectedTier], & intervalTier, & textTier);
+		_AnyTier_identifyClass (grid -> tiers->at [selectedTier], & intervalTier, & textTier);
 		if (intervalTier) {
 			long iinterval = IntervalTier_timeToIndex (intervalTier, d_startSelection);
 			if (iinterval) {
-				TextInterval interval = (TextInterval) intervalTier -> intervals -> item [iinterval];
+				TextInterval interval = intervalTier -> intervals.at [iinterval];
 				if (interval -> text) {
 					newText = interval -> text;
 				}
 			}
 		} else {
-			long ipoint = AnyTier_hasPoint (textTier, d_startSelection);
+			long ipoint = AnyTier_hasPoint (textTier->asAnyTier(), d_startSelection);
 			if (ipoint) {
-				TextPoint point = (TextPoint) textTier -> points -> item [ipoint];
+				TextPoint point = textTier -> points.at [ipoint];
 				if (point -> mark) {
 					newText = point -> mark;
 				}
@@ -2100,17 +2060,17 @@ void structTextGridEditor :: v_updateText () {
 	}
 	//Melder_casual ("v_updateText in editor %ld %ls %d", this, name, (int) suppressRedraw);
 	if (our text) {
-		our suppressRedraw = TRUE;   // prevent valueChangedCallback from redrawing
+		our suppressRedraw = true;   // prevent valueChangedCallback from redrawing
 		trace (U"setting new text ", newText);
 		GuiText_setString (text, newText);
 		long cursor = str32len (newText);   // at end
 		GuiText_setSelection (text, cursor, cursor);
-		our suppressRedraw = FALSE;
+		our suppressRedraw = false;
 	}
 }
 
 void structTextGridEditor :: v_prefs_addFields (EditorCommand cmd) {
-	Any radio;
+	UiField radio;
 	NATURAL (U"Font size (points)", default_fontSize ())
 	OPTIONMENU_ENUM (U"Text alignment in intervals", kGraphics_horizontalAlignment, kGraphics_horizontalAlignment_DEFAULT)
 	OPTIONMENU (U"The symbols %#_^ in labels", default_useTextStyles () + 1)
@@ -2156,20 +2116,20 @@ void structTextGridEditor :: v_createMenuItems_view_timeDomain (EditorMenu menu)
 void structTextGridEditor :: v_highlightSelection (double left, double right, double bottom, double top) {
 	if (our v_hasAnalysis () && our p_spectrogram_show && (our d_longSound.data || our d_sound.data)) {
 		double soundY = _TextGridEditor_computeSoundY (this), soundY2 = 0.5 * (1.0 + soundY);
-		//Graphics_highlight (our d_graphics, left, right, bottom, soundY * top + (1 - soundY) * bottom);
-		Graphics_highlight (our d_graphics, left, right, soundY2 * top + (1 - soundY2) * bottom, top);
+		//Graphics_highlight (our d_graphics.get(), left, right, bottom, soundY * top + (1 - soundY) * bottom);
+		Graphics_highlight (our d_graphics.get(), left, right, soundY2 * top + (1 - soundY2) * bottom, top);
 	} else {
-		Graphics_highlight (our d_graphics, left, right, bottom, top);
+		Graphics_highlight (our d_graphics.get(), left, right, bottom, top);
 	}
 }
 
 void structTextGridEditor :: v_unhighlightSelection (double left, double right, double bottom, double top) {
 	if (our v_hasAnalysis () && our p_spectrogram_show && (our d_longSound.data || our d_sound.data)) {
 		double soundY = _TextGridEditor_computeSoundY (this), soundY2 = 0.5 * (1.0 + soundY);
-		//Graphics_unhighlight (our d_graphics, left, right, bottom, soundY * top + (1 - soundY) * bottom);
-		Graphics_unhighlight (our d_graphics, left, right, soundY2 * top + (1 - soundY2) * bottom, top);
+		//Graphics_unhighlight (our d_graphics.get(), left, right, bottom, soundY * top + (1 - soundY) * bottom);
+		Graphics_unhighlight (our d_graphics.get(), left, right, soundY2 * top + (1 - soundY2) * bottom, top);
 	} else {
-		Graphics_unhighlight (our d_graphics, left, right, bottom, top);
+		Graphics_unhighlight (our d_graphics.get(), left, right, bottom, top);
 	}
 }
 
@@ -2209,7 +2169,7 @@ void TextGridEditor_init (TextGridEditor me, const char32 *title, TextGrid grid,
 			my d_startSelection = my d_endSelection = 0.5 * (my d_startWindow + my d_endWindow);
 		FunctionEditor_marksChanged (me, false);
 	}
-	if (spellingChecker != NULL)
+	if (spellingChecker)
 		GuiText_setSelection (my text, 0, 0);
 	if (sound && sound -> xmin == 0.0 && grid -> xmin != 0.0 && grid -> xmax > sound -> xmax)
 		Melder_warning (U"The time domain of the TextGrid (starting at ",
@@ -2219,11 +2179,11 @@ void TextGridEditor_init (TextGridEditor me, const char32 *title, TextGrid grid,
 			U"to shift the starting time of the TextGrid to zero.");
 }
 
-TextGridEditor TextGridEditor_create (const char32 *title, TextGrid grid, Sampled sound, bool ownSound, SpellingChecker spellingChecker, const char *callbackSocket) {
+autoTextGridEditor TextGridEditor_create (const char32 *title, TextGrid grid, Sampled sound, bool ownSound, SpellingChecker spellingChecker, const char *callbackSocket) {
 	try {
 		autoTextGridEditor me = Thing_new (TextGridEditor);
-		TextGridEditor_init (me.peek(), title, grid, sound, ownSound, spellingChecker, callbackSocket);
-		return me.transfer();
+		TextGridEditor_init (me.get(), title, grid, sound, ownSound, spellingChecker, callbackSocket);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TextGrid window not created.");
 	}
diff --git a/fon/TextGridEditor.h b/fon/TextGridEditor.h
index 1bf0eab..6231a8e 100644
--- a/fon/TextGridEditor.h
+++ b/fon/TextGridEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundAnalysisEditor.h"
@@ -55,11 +54,11 @@ Thing_define (TextGridEditor, TimeSoundAnalysisEditor) {
 		override;
 	bool v_hasText ()
 		override { return true; }
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
-	int v_clickB (double xWC, double yWC)
+	bool v_clickB (double xWC, double yWC)
 		override;
-	int v_clickE (double xWC, double yWC)
+	bool v_clickE (double xWC, double yWC)
 		override;
 	void v_play (double tmin, double tmax)
 		override;
@@ -91,7 +90,7 @@ Thing_define (TextGridEditor, TimeSoundAnalysisEditor) {
 
 void TextGridEditor_init (TextGridEditor me, const char32 *title, TextGrid grid, Sampled sound, bool ownSound, SpellingChecker spellingChecker, const char *callbackSocket);
 
-TextGridEditor TextGridEditor_create (const char32 *title, TextGrid grid,
+autoTextGridEditor TextGridEditor_create (const char32 *title, TextGrid grid,
 	Sampled sound,   // either a Sound or a LongSound, or null
 	bool ownSound,
 	SpellingChecker spellingChecker,
diff --git a/fon/TextGridEditor_enums.h b/fon/TextGridEditor_enums.h
index 03fb3c1..2d2b2d8 100644
--- a/fon/TextGridEditor_enums.h
+++ b/fon/TextGridEditor_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kTextGridEditor_showNumberOf, 1)
diff --git a/fon/TextGridEditor_prefs.h b/fon/TextGridEditor_prefs.h
index 898abd1..0f40790 100644
--- a/fon/TextGridEditor_prefs.h
+++ b/fon/TextGridEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (TextGridEditor)
diff --git a/fon/TextGrid_Sound.cpp b/fon/TextGrid_Sound.cpp
index 260d560..9b39c78 100644
--- a/fon/TextGrid_Sound.cpp
+++ b/fon/TextGrid_Sound.cpp
@@ -1,26 +1,19 @@
 /* TextGrid_Sound.cpp
  *
- * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2010/12/06 BDF/EDF files (for EEG)
- * pb 2010/12/08 split off from TextGrid.c and Sound.c
- * pb 2011/06/11 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextGrid_Sound.h"
@@ -29,16 +22,23 @@
 #include "LongSound.h"
 
 static bool IntervalTier_check (IntervalTier me) {
-	for (long iinterval = 1; iinterval <= my numberOfIntervals (); iinterval ++) {
-		TextInterval interval = my interval (iinterval);
-		if (interval -> xmin >= interval -> xmax)
+	for (long iinterval = 1; iinterval <= my intervals.size; iinterval ++) {
+		TextInterval interval = my intervals.at [iinterval];
+		if (interval -> xmin >= interval -> xmax) {
+			Melder_casual (U"Interval ", iinterval, U" starts at ", interval -> xmin,
+				U" but ends at ", interval -> xmax, U" seconds.");
 			return false;
+		}
 	}
-	if (my numberOfIntervals () < 2) return true;
-	for (long iinterval = 1; iinterval < my numberOfIntervals (); iinterval ++) {
-		TextInterval interval = my interval (iinterval), nextInterval = my interval (iinterval + 1);
-		if (interval -> xmax != nextInterval -> xmin)
+	if (my intervals.size < 2) return true;
+	for (long iinterval = 1; iinterval < my intervals.size; iinterval ++) {
+		TextInterval thisInterval = my intervals.at [iinterval];
+		TextInterval nextInterval = my intervals.at [iinterval + 1];
+		if (thisInterval -> xmax != nextInterval -> xmin) {
+			Melder_casual (U"Interval ", iinterval, U" ends at ", thisInterval -> xmax,
+				U" but the next interval starts at ", nextInterval -> xmin, U" seconds.");
 			return false;
+		}
 	}
 	return true;
 }
@@ -55,43 +55,43 @@ static void IntervalTier_insertIntervalDestructively (IntervalTier me, double tm
 		long intervalNumber = IntervalTier_timeToIndex (me, tmin);
 		if (intervalNumber == 0)
 			Melder_throw (U"Cannot add a boundary at ", Melder_fixed (tmin, 6), U" seconds, because this is outside the time domain of the intervals.");
-		TextInterval interval = my interval (intervalNumber);
+		TextInterval interval = my intervals.at [intervalNumber];
 		/*
 		 * Move the text to the left of the boundary.
 		 */
 		autoTextInterval newInterval = TextInterval_create (tmin, interval -> xmax, U"");
 		interval -> xmax = tmin;
-		Collection_addItem (my intervals, newInterval.transfer());
+		my intervals. addItem_move (newInterval.move());
 		firstIntervalNumber = IntervalTier_hasTime (me, interval -> xmin);
 	}
-	Melder_assert (firstIntervalNumber >= 1 && firstIntervalNumber <= my intervals -> size);
+	Melder_assert (firstIntervalNumber >= 1 && firstIntervalNumber <= my intervals.size);
 	long lastIntervalNumber = IntervalTier_hasTime (me, tmax);
 	if (! lastIntervalNumber) {
 		long intervalNumber = IntervalTier_timeToIndex (me, tmax);
 		if (intervalNumber == 0)
 			Melder_throw (U"Cannot add a boundary at ", Melder_fixed (tmin, 6), U" seconds, because this is outside the time domain of the intervals.");
-		TextInterval interval = my interval (intervalNumber);
+		TextInterval interval = my intervals.at [intervalNumber];
 		/*
 		 * Move the text to the right of the boundary.
 		 */
 		autoTextInterval newInterval = TextInterval_create (interval -> xmin, tmax, U"");
 		interval -> xmin = tmax;
-		Collection_addItem (my intervals, newInterval.transfer());
+		my intervals. addItem_move (newInterval.move());
 		lastIntervalNumber = IntervalTier_hasTime (me, interval -> xmax);
 	}
-	Melder_assert (lastIntervalNumber >= 1 && lastIntervalNumber <= my intervals -> size);
+	Melder_assert (lastIntervalNumber >= 1 && lastIntervalNumber <= my intervals.size);
 	/*
 	 * Empty the interval in the word tier.
 	 */
 	trace (U"Empty interval %ld down to ", lastIntervalNumber, U".", firstIntervalNumber);
 	for (long iinterval = lastIntervalNumber; iinterval >= firstIntervalNumber; iinterval --) {
-		TextInterval interval = my interval (iinterval);
+		TextInterval interval = my intervals.at [iinterval];
 		if (interval -> xmin > tmin && interval -> xmin < tmax) {
 			Melder_assert (iinterval > 1);
-			TextInterval previous = (TextInterval) my intervals -> item [iinterval - 1];
+			TextInterval previous = my intervals.at [iinterval - 1];
 			previous -> xmax = tmax;   // collapse left and right intervals into left interval
 			TextInterval_setText (previous, U"");
-			Collection_removeItem (my intervals, iinterval);   // remove right interval
+			my intervals. removeItem (iinterval);   // remove right interval
 		}
 		if (interval -> xmax == tmax) {
 			TextInterval_setText (interval, U"");
@@ -102,7 +102,7 @@ static void IntervalTier_insertIntervalDestructively (IntervalTier me, double tm
 static double IntervalTier_boundaryTimeClosestTo (IntervalTier me, double tmin, double tmax) {
 	long intervalNumber = IntervalTier_timeToLowIndex (me, tmax);
 	if (intervalNumber != 0) {
-		TextInterval interval = my interval (intervalNumber);
+		TextInterval interval = my intervals.at [intervalNumber];
 		if (interval -> xmin > tmin && interval -> xmin < tmax) {
 			return interval -> xmin;
 		}
@@ -112,19 +112,19 @@ static double IntervalTier_boundaryTimeClosestTo (IntervalTier me, double tmin,
 
 static void IntervalTier_removeEmptyIntervals (IntervalTier me, IntervalTier boss) {
 	IntervalTier_removeBoundariesBetweenIdenticallyLabeledIntervals (me, U"");
-	if (my intervals -> size < 2) return;
-	TextInterval firstInterval = my interval (1);
+	if (my intervals.size < 2) return;
+	TextInterval firstInterval = my intervals.at [1];
 	if (Melder_equ (firstInterval -> text, U"")) {
 		IntervalTier_removeLeftBoundary (me, 2);
 	}
-	if (my numberOfIntervals () < 2) return;
-	TextInterval lastInterval = my interval (my numberOfIntervals ());
+	if (my intervals.size < 2) return;
+	TextInterval lastInterval = my intervals.at [my intervals.size];
 	if (Melder_equ (lastInterval -> text, U"")) {
-		IntervalTier_removeLeftBoundary (me, my numberOfIntervals ());
+		IntervalTier_removeLeftBoundary (me, my intervals.size);
 	}
-	if (my numberOfIntervals () < 3) return;
-	for (long iinterval = my numberOfIntervals () - 1; iinterval >= 2; iinterval --) {
-		TextInterval interval = my interval (iinterval);
+	if (my intervals.size < 3) return;
+	for (long iinterval = my intervals.size - 1; iinterval >= 2; iinterval --) {
+		TextInterval interval = my intervals.at [iinterval];
 		if (Melder_equ (interval -> text, U"")) {
 			/*
 			 * Distribute the empty interval between its neigbours.
@@ -133,11 +133,11 @@ static void IntervalTier_removeEmptyIntervals (IntervalTier me, IntervalTier bos
 				boss ?
 				IntervalTier_boundaryTimeClosestTo (boss, interval -> xmin, interval -> xmax) :
 				0.5 * (interval -> xmin + interval -> xmax);
-			TextInterval previous = my interval (iinterval - 1);
-			TextInterval next = my interval (iinterval + 1);
+			TextInterval previous = my intervals.at [iinterval - 1];
+			TextInterval next = my intervals.at [iinterval + 1];
 			previous -> xmax = newBoundaryTime;
 			next -> xmin = newBoundaryTime;
-			Collection_removeItem (my intervals, iinterval);
+			my intervals. removeItem (iinterval);
 		}
 	}
 }
@@ -145,9 +145,9 @@ static void IntervalTier_removeEmptyIntervals (IntervalTier me, IntervalTier bos
 void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierNumber, long intervalNumber, const char32 *languageName, bool includeWords, bool includePhonemes) {
 	try {
 		IntervalTier headTier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		if (intervalNumber < 1 || intervalNumber > headTier -> numberOfIntervals ())
+		if (intervalNumber < 1 || intervalNumber > headTier -> intervals.size)
 			Melder_throw (U"Interval ", intervalNumber, U" does not exist.");
-		TextInterval interval = headTier -> interval (intervalNumber);
+		TextInterval interval = headTier -> intervals.at [intervalNumber];
 		if (! includeWords && ! includePhonemes)
 			Melder_throw (U"Nothing to be done, because you asked neither for word alignment nor for phoneme alignment.");
 		if (str32str (headTier -> name, U"/") )
@@ -157,45 +157,57 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 				LongSound_extractPart (static_cast <LongSound> (anySound), interval -> xmin, interval -> xmax, true) :
 				Sound_extractPart (static_cast <Sound> (anySound), interval -> xmin, interval -> xmax, kSound_windowShape_RECTANGULAR, 1.0, true);
 		autoSpeechSynthesizer synthesizer = SpeechSynthesizer_create (languageName, U"default");
-		double silenceThreshold = -35, minSilenceDuration = 0.1, minSoundingDuration = 0.1;
-		autoTextGrid analysis = NULL;
+		synthesizer -> d_samplingFrequency = round (
+			anySound -> classInfo == classLongSound ?
+				static_cast <LongSound> (anySound) -> sampleRate :
+				1.0 / static_cast <Sound> (anySound) -> dx
+		);
+		double silenceThreshold = -30.0, minSilenceDuration = 0.1, minSoundingDuration = 0.1;
+		autoTextGrid analysis;
 		if (! Melder_equ (interval -> text, U"")) {
-			try {
-				analysis.reset (SpeechSynthesizer_and_Sound_and_TextInterval_align
-					(synthesizer.peek(), part.peek(), interval, silenceThreshold, minSilenceDuration, minSoundingDuration));
-			} catch (MelderError) {
-				Melder_clearError ();   // ignore all error messages from DTW and the like
-			}
+			analysis = SpeechSynthesizer_and_Sound_and_TextInterval_align
+				(synthesizer.get(), part.get(), interval, silenceThreshold, minSilenceDuration, minSoundingDuration);
 		}
-		if (analysis.peek()) {
+		if (analysis) {
 			/*
 			 * Clean up the analysis.
 			 */
-			Melder_assert (analysis -> xmin == interval -> xmin);
-			Melder_assert (analysis -> xmax == interval -> xmax);
-			Melder_assert (analysis -> numberOfTiers () == 4);
-			Thing_cast (IntervalTier, analysisWordTier, analysis -> tier (3));
+			Melder_assert (fabs (analysis -> xmin - interval -> xmin) < 1e-12);
+			if (analysis -> xmax != interval -> xmax) {
+				//Melder_fatal (U"Analysis ends at ", analysis -> xmax, U" but interval at ", interval -> xmax, U"seconds.");
+				analysis -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (1) -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (2) -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (3) -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (4) -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (1) -> intervals.at [analysis -> intervalTier_cast (1) -> intervals.size] -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (2) -> intervals.at [analysis -> intervalTier_cast (2) -> intervals.size] -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (3) -> intervals.at [analysis -> intervalTier_cast (3) -> intervals.size] -> xmax = interval -> xmax;
+				analysis -> intervalTier_cast (4) -> intervals.at [analysis -> intervalTier_cast (4) -> intervals.size] -> xmax = interval -> xmax;
+			}
+			Melder_assert (analysis -> tiers->size == 4);
+			IntervalTier analysisWordTier = analysis -> intervalTier_cast (3);
 			if (! IntervalTier_check (analysisWordTier))
 				Melder_throw (U"Analysis word tier out of order.");
-			IntervalTier_removeEmptyIntervals (analysisWordTier, NULL);
+			IntervalTier_removeEmptyIntervals (analysisWordTier, nullptr);
 			Melder_assert (analysisWordTier -> xmax == analysis -> xmax);
-			Melder_assert (analysisWordTier -> numberOfIntervals () >= 1);
-			TextInterval firstInterval = analysisWordTier -> interval (1);
-			TextInterval lastInterval = analysisWordTier -> interval (analysisWordTier -> numberOfIntervals ());
+			Melder_assert (analysisWordTier -> intervals.size >= 1);
+			TextInterval firstInterval = analysisWordTier -> intervals.at [1];
+			TextInterval lastInterval = analysisWordTier -> intervals.at [analysisWordTier -> intervals.size];
 			firstInterval -> xmin = analysis -> xmin;
 			lastInterval  -> xmax = analysis -> xmax;
 			if (lastInterval -> xmax != analysis -> xmax)
 				Melder_fatal (U"analysis ends at ", analysis -> xmax, U", but last interval at ", lastInterval -> xmax, U" seconds");
 			if (! IntervalTier_check (analysisWordTier))
 				Melder_throw (U"Analysis word tier out of order (2).");
-			Thing_cast (IntervalTier, analysisPhonemeTier, analysis -> tier (4));
+			IntervalTier analysisPhonemeTier = analysis -> intervalTier_cast (4);
 			if (! IntervalTier_check (analysisPhonemeTier))
 				Melder_throw (U"Analysis phoneme tier out of order.");
 			IntervalTier_removeEmptyIntervals (analysisPhonemeTier, analysisWordTier);
 			Melder_assert (analysisPhonemeTier -> xmax == analysis -> xmax);
-			Melder_assert (analysisPhonemeTier -> numberOfIntervals () >= 1);
-			firstInterval = analysisPhonemeTier -> interval (1);
-			lastInterval  = analysisPhonemeTier -> interval (analysisPhonemeTier -> numberOfIntervals ());
+			Melder_assert (analysisPhonemeTier -> intervals.size >= 1);
+			firstInterval = analysisPhonemeTier -> intervals.at [1];
+			lastInterval  = analysisPhonemeTier -> intervals.at [analysisPhonemeTier -> intervals.size];
 			firstInterval -> xmin = analysis -> xmin;
 			lastInterval  -> xmax = analysis -> xmax;
 			Melder_assert (lastInterval -> xmax == analysis -> xmax);
@@ -203,7 +215,7 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 				Melder_throw (U"Analysis phoneme tier out of order (2).");
 		}
 		long wordTierNumber = 0, phonemeTierNumber = 0;
-		IntervalTier wordTier = NULL, phonemeTier = NULL;
+		IntervalTier wordTier = nullptr, phonemeTier = nullptr;
 		/*
 		 * Include a word tier.
 		 */
@@ -213,8 +225,8 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			 */
 			autoMelderString newWordTierName;
 			MelderString_copy (& newWordTierName, headTier -> name, U"/word");
-			for (long itier = 1; itier <= my numberOfTiers (); itier ++) {
-				IntervalTier tier = static_cast <IntervalTier> (my tier (itier));
+			for (long itier = 1; itier <= my tiers->size; itier ++) {
+				Function tier = my tiers->at [itier];
 				if (Melder_equ (newWordTierName.string, tier -> name)) {
 					if (tier -> classInfo != classIntervalTier)
 						Melder_throw (U"A tier with the prospective word tier name (", tier -> name, U") already exists, but it is not an interval tier."
@@ -225,11 +237,11 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			}
 			if (! wordTierNumber) {
 				autoIntervalTier newWordTier = IntervalTier_create (my xmin, my xmax);
-				Thing_setName (newWordTier.peek(), newWordTierName.string);
-				Ordered_addItemPos (my tiers, newWordTier.transfer(), wordTierNumber = tierNumber + 1);
+				Thing_setName (newWordTier.get(), newWordTierName.string);
+				my tiers -> addItemAtPosition_move (newWordTier.move(), wordTierNumber = tierNumber + 1);
 			}
-			Melder_assert (wordTierNumber >= 1 && wordTierNumber <= my tiers -> size);
-			wordTier = static_cast <IntervalTier> (my tier (wordTierNumber));
+			Melder_assert (wordTierNumber >= 1 && wordTierNumber <= my tiers->size);
+			wordTier = static_cast <IntervalTier> (my tiers->at [wordTierNumber]);
 			/*
 			 * Make sure that the word tier has boundaries at the edges of the interval.
 			 */
@@ -239,24 +251,24 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			 */
 			long wordIntervalNumber = IntervalTier_hasTime (wordTier, interval -> xmin);
 			Melder_assert (wordIntervalNumber != 0);
-			if (analysis.peek()) {
-				Thing_cast (IntervalTier, analysisWordTier, analysis -> tier (3));
+			if (analysis) {
+				IntervalTier analysisWordTier = analysis -> intervalTier_cast (3);
 				if (! IntervalTier_check (analysisWordTier))
 					Melder_throw (U"Analysis word tier out of order (3).");
 				if (! IntervalTier_check (wordTier))
 					Melder_throw (U"Word tier out of order (3).");
-				for (long ianalysisInterval = 1; ianalysisInterval <= analysisWordTier -> numberOfIntervals (); ianalysisInterval ++) {
-					TextInterval analysisInterval = analysisWordTier -> interval (ianalysisInterval);
-					TextInterval wordInterval = NULL;
+				for (long ianalysisInterval = 1; ianalysisInterval <= analysisWordTier -> intervals.size; ianalysisInterval ++) {
+					TextInterval analysisInterval = analysisWordTier -> intervals.at [ianalysisInterval];
+					TextInterval wordInterval = nullptr;
 					double tmin = analysisInterval -> xmin, tmax = analysisInterval -> xmax;
 					if (tmax == analysis -> xmax) {
-						wordInterval = wordTier -> interval (wordIntervalNumber);
+						wordInterval = wordTier -> intervals.at [wordIntervalNumber];
 						TextInterval_setText (wordInterval, analysisInterval -> text);
 					} else {
-						wordInterval = wordTier -> interval (wordIntervalNumber);
+						wordInterval = wordTier -> intervals.at [wordIntervalNumber];
 						autoTextInterval newInterval = TextInterval_create (tmin, tmax, analysisInterval -> text);
 						wordInterval -> xmin = tmax;
-						Collection_addItem (wordTier -> intervals, newInterval.transfer());
+						wordTier -> intervals. addItem_move (newInterval.move());
 						wordIntervalNumber ++;
 					}
 				}
@@ -275,8 +287,8 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			 */
 			autoMelderString newPhonemeTierName;
 			MelderString_copy (& newPhonemeTierName, headTier -> name, U"/phon");
-			for (long itier = 1; itier <= my numberOfTiers (); itier ++) {
-				IntervalTier tier = static_cast <IntervalTier> (my tier (itier));
+			for (long itier = 1; itier <= my tiers->size; itier ++) {
+				Function tier = my tiers->at [itier];
 				if (Melder_equ (newPhonemeTierName.string, tier -> name)) {
 					if (tier -> classInfo != classIntervalTier)
 						Melder_throw (U"A tier with the prospective phoneme tier name (", tier -> name, U") already exists, but it is not an interval tier."
@@ -287,11 +299,12 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			}
 			if (! phonemeTierNumber) {
 				autoIntervalTier newPhonemeTier = IntervalTier_create (my xmin, my xmax);
-				Thing_setName (newPhonemeTier.peek(), newPhonemeTierName.string);
-				Ordered_addItemPos (my tiers, newPhonemeTier.transfer(), phonemeTierNumber = wordTierNumber ? wordTierNumber + 1 : tierNumber + 1);
+				Thing_setName (newPhonemeTier.get(), newPhonemeTierName.string);
+				my tiers -> addItemAtPosition_move (newPhonemeTier.move(),
+					phonemeTierNumber = wordTierNumber ? wordTierNumber + 1 : tierNumber + 1);
 			}
-			Melder_assert (phonemeTierNumber >= 1 && phonemeTierNumber <= my tiers -> size);
-			phonemeTier = static_cast <IntervalTier> (my tiers -> item [phonemeTierNumber]);
+			Melder_assert (phonemeTierNumber >= 1 && phonemeTierNumber <= my tiers->size);
+			phonemeTier = my intervalTier_cast (phonemeTierNumber);
 			/*
 			 * Make sure that the phoneme tier has boundaries at the edges of the interval.
 			 */
@@ -301,20 +314,20 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 			 */
 			long phonemeIntervalNumber = IntervalTier_hasTime (phonemeTier, interval -> xmin);
 			Melder_assert (phonemeIntervalNumber != 0);
-			if (analysis.peek()) {
-				Thing_cast (IntervalTier, analysisPhonemeTier, analysis -> tiers -> item [4]);
-				for (long ianalysisInterval = 1; ianalysisInterval <= analysisPhonemeTier -> numberOfIntervals (); ianalysisInterval ++) {
-					TextInterval analysisInterval = analysisPhonemeTier -> interval (ianalysisInterval);
-					TextInterval phonemeInterval = NULL;
+			if (analysis.get()) {
+				IntervalTier analysisPhonemeTier = analysis -> intervalTier_cast (4);
+				for (long ianalysisInterval = 1; ianalysisInterval <= analysisPhonemeTier -> intervals.size; ianalysisInterval ++) {
+					TextInterval analysisInterval = analysisPhonemeTier -> intervals.at [ianalysisInterval];
+					TextInterval phonemeInterval = nullptr;
 					double tmin = analysisInterval -> xmin, tmax = analysisInterval -> xmax;
 					if (tmax == analysis -> xmax) {
-						phonemeInterval = phonemeTier -> interval (phonemeIntervalNumber);
+						phonemeInterval = phonemeTier -> intervals.at [phonemeIntervalNumber];
 						TextInterval_setText (phonemeInterval, analysisInterval -> text);
 					} else {
-						phonemeInterval = phonemeTier -> interval (phonemeIntervalNumber);
+						phonemeInterval = phonemeTier -> intervals.at [phonemeIntervalNumber];
 						autoTextInterval newInterval = TextInterval_create (tmin, tmax, analysisInterval -> text);
 						phonemeInterval -> xmin = tmax;
-						Collection_addItem (phonemeTier -> intervals, newInterval.transfer());
+						phonemeTier -> intervals. addItem_move (newInterval.move());
 						phonemeIntervalNumber ++;
 					}
 				}
@@ -334,7 +347,7 @@ void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierN
 void TextGrid_Sound_draw (TextGrid me, Sound sound, Graphics g, double tmin, double tmax,
 	bool showBoundaries, bool useTextStyles, bool garnish)   // STEREO BUG
 {
-	long numberOfTiers = my numberOfTiers ();
+	long numberOfTiers = my tiers->size;
 
 	/*
 	 * Automatic windowing:
@@ -365,21 +378,21 @@ void TextGrid_Sound_draw (TextGrid me, Sound sound, Graphics g, double tmin, dou
 	Graphics_setCircumflexIsSuperscript (g, useTextStyles);
 	Graphics_setUnderscoreIsSubscript (g, useTextStyles);
 	for (long itier = 1; itier <= numberOfTiers; itier ++) {
-		Function anyTier = my tier (itier);
+		Function anyTier = my tiers->at [itier];
 		double ymin = -1.0 - 0.5 * itier, ymax = ymin + 0.5;
 		Graphics_rectangle (g, tmin, tmax, ymin, ymax);
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			long ninterval = tier -> numberOfIntervals ();
+			long ninterval = tier -> intervals.size;
 			for (long iinterval = 1; iinterval <= ninterval; iinterval ++) {
-				TextInterval interval = tier -> interval (iinterval);
+				TextInterval interval = tier -> intervals.at [iinterval];
 				double intmin = interval -> xmin, intmax = interval -> xmax;
 				if (intmin < tmin) intmin = tmin;
 				if (intmax > tmax) intmax = tmax;
 				if (intmin >= intmax) continue;
 				if (showBoundaries && intmin > tmin && intmin < tmax) {
 					Graphics_setLineType (g, Graphics_DOTTED);
-					Graphics_line (g, intmin, -1.0, intmin, 1.0);   /* In sound part. */
+					Graphics_line (g, intmin, -1.0, intmin, 1.0);   // in sound part
 					Graphics_setLineType (g, Graphics_DRAWN);
 				}      
 				/* Draw left boundary. */
@@ -393,14 +406,14 @@ void TextGrid_Sound_draw (TextGrid me, Sound sound, Graphics g, double tmin, dou
 			}
 		} else {
 			TextTier tier = static_cast <TextTier> (anyTier);
-			long numberOfPoints = tier -> numberOfPoints ();
+			long numberOfPoints = tier -> points.size;
 			for (long ipoint = 1; ipoint <= numberOfPoints; ipoint ++) {
-				TextPoint point = tier -> point (ipoint);
+				TextPoint point = tier -> points.at [ipoint];
 				double t = point -> number;
 				if (t > tmin && t < tmax) {
 					if (showBoundaries) {
 						Graphics_setLineType (g, Graphics_DOTTED);
-						Graphics_line (g, t, -1.0, t, 1.0);   /* In sound part. */
+						Graphics_line (g, t, -1.0, t, 1.0);   // in sound part
 						Graphics_setLineType (g, Graphics_DRAWN);
 					}
 					Graphics_line (g, t, ymin, t, 0.8 * ymin + 0.2 * ymax);
@@ -411,71 +424,73 @@ void TextGrid_Sound_draw (TextGrid me, Sound sound, Graphics g, double tmin, dou
 			}
 		}
 	}
-	Graphics_setPercentSignIsItalic (g, TRUE);
-	Graphics_setNumberSignIsBold (g, TRUE);
-	Graphics_setCircumflexIsSuperscript (g, TRUE);
-	Graphics_setUnderscoreIsSubscript (g, TRUE);
+	Graphics_setPercentSignIsItalic (g, true);
+	Graphics_setNumberSignIsBold (g, true);
+	Graphics_setCircumflexIsSuperscript (g, true);
+	Graphics_setUnderscoreIsSubscript (g, true);
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_textBottom (g, 1, U"Time (s)");
-		Graphics_marksBottom (g, 2, 1, 1, 1);
+		Graphics_textBottom (g, true, U"Time (s)");
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
-Collection TextGrid_Sound_extractAllIntervals (TextGrid me, Sound sound, long tierNumber, int preserveTimes) {
+autoSoundList TextGrid_Sound_extractAllIntervals (TextGrid me, Sound sound, long tierNumber, bool preserveTimes) {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		autoCollection collection = Collection_create (NULL, tier -> numberOfIntervals ());
-		for (long iseg = 1; iseg <= tier -> numberOfIntervals (); iseg ++) {
-			TextInterval segment = tier -> interval (iseg);
+		autoSoundList list = SoundList_create ();
+		for (long iseg = 1; iseg <= tier -> intervals.size; iseg ++) {
+			TextInterval segment = tier -> intervals.at [iseg];
 			autoSound interval = Sound_extractPart (sound, segment -> xmin, segment -> xmax, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
-			Thing_setName (interval.peek(), segment -> text ? segment -> text : U"untitled");
-			Collection_addItem (collection.peek(), interval.transfer()); 
+			Thing_setName (interval.get(), segment -> text ? segment -> text : U"untitled");
+			list -> addItem_move (interval.move());
 		}
-		return collection.transfer();
+		return list;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", sound, U": intervals not extracted.");
 	}
 }
 
-Collection TextGrid_Sound_extractNonemptyIntervals (TextGrid me, Sound sound, long tierNumber, int preserveTimes) {
+Thing_implement (SoundList, Ordered, 0);
+
+autoSoundList TextGrid_Sound_extractNonemptyIntervals (TextGrid me, Sound sound, long tierNumber, bool preserveTimes) {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		autoCollection collection = Collection_create (NULL, tier -> numberOfIntervals ());
-		for (long iseg = 1; iseg <= tier -> numberOfIntervals (); iseg ++) {
-			TextInterval segment = tier -> interval (iseg);
-			if (segment -> text != NULL && segment -> text [0] != '\0') {
+		autoSoundList list = SoundList_create ();
+		for (long iseg = 1; iseg <= tier -> intervals.size; iseg ++) {
+			TextInterval segment = tier -> intervals.at [iseg];
+			if (segment -> text && segment -> text [0] != U'\0') {
 				autoSound interval = Sound_extractPart (sound, segment -> xmin, segment -> xmax, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
-				Thing_setName (interval.peek(), segment -> text ? segment -> text : U"untitled");
-				Collection_addItem (collection.peek(), interval.transfer());
+				Thing_setName (interval.get(), segment -> text ? segment -> text : U"untitled");
+				list -> addItem_move (interval.move());
 			}
 		}
-		if (collection -> size == 0) Melder_warning (U"No non-empty intervals were found.");
-		return collection.transfer();
+		if (list->size == 0) Melder_warning (U"No non-empty intervals were found.");
+		return list;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", sound, U": non-empty intervals not extracted.");
 	}
 }
 
-Collection TextGrid_Sound_extractIntervalsWhere (TextGrid me, Sound sound, long tierNumber,
-	int comparison_Melder_STRING, const char32 *text, int preserveTimes)
+autoSoundList TextGrid_Sound_extractIntervalsWhere (TextGrid me, Sound sound, long tierNumber,
+	int comparison_Melder_STRING, const char32 *text, bool preserveTimes)
 {
 	try {
 		IntervalTier tier = TextGrid_checkSpecifiedTierIsIntervalTier (me, tierNumber);
-		autoCollection collection = Collection_create (NULL, tier -> numberOfIntervals ());
+		autoSoundList list = SoundList_create ();
 		long count = 0;
-		for (long iseg = 1; iseg <= tier -> numberOfIntervals (); iseg ++) {
-			TextInterval segment = tier -> interval (iseg);
+		for (long iseg = 1; iseg <= tier -> intervals.size; iseg ++) {
+			TextInterval segment = tier -> intervals.at [iseg];
 			if (Melder_stringMatchesCriterion (segment -> text, comparison_Melder_STRING, text)) {
 				autoSound interval = Sound_extractPart (sound, segment -> xmin, segment -> xmax, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
-				Thing_setName (interval.peek(), Melder_cat (sound -> name ? sound -> name : U"", U"_", text, U"_", ++ count));
-				Collection_addItem (collection.peek(), interval.transfer());
+				Thing_setName (interval.get(), Melder_cat (sound -> name ? sound -> name : U"", U"_", text, U"_", ++ count));
+				list -> addItem_move (interval.move());
 			}
 		}
-		if (collection -> size == 0)
+		if (list->size == 0)
 			Melder_warning (U"No label that ", kMelder_string_getText (comparison_Melder_STRING), U" the text \"", text, U"\" was found.");
-		return collection.transfer();
+		return list;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", sound, U": intervals not extracted.");
 	}
@@ -483,22 +498,22 @@ Collection TextGrid_Sound_extractIntervalsWhere (TextGrid me, Sound sound, long
 
 static void autoMarks (Graphics g, double ymin, double ymax, bool haveDottedLines) {
 	double dy = ymax - ymin;
-	if (dy < 26) {
+	if (dy < 26.0) {
 		long imin = (long) ceil ((ymin + 2.0) / 5.0), imax = (long) floor ((ymax - 2.0) / 5.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 5, TRUE, TRUE, haveDottedLines, NULL);
-	} else if (dy < 110) {
+			Graphics_markLeft (g, i * 5.0, true, true, haveDottedLines, nullptr);
+	} else if (dy < 110.0) {
 		long imin = (long) ceil ((ymin + 8.0) / 20.0), imax = (long) floor ((ymax - 8.0) / 20.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 20, TRUE, TRUE, haveDottedLines, NULL);
-	} else if (dy < 260) {
+			Graphics_markLeft (g, i * 20.0, true, true, haveDottedLines, nullptr);
+	} else if (dy < 260.0) {
 		long imin = (long) ceil ((ymin + 20.0) / 50.0), imax = (long) floor ((ymax - 20.0) / 50.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 50, TRUE, TRUE, haveDottedLines, NULL);
-	} else if (dy < 510) {
+			Graphics_markLeft (g, i * 50.0, true, true, haveDottedLines, nullptr);
+	} else if (dy < 510.0) {
 		long imin = (long) ceil ((ymin + 40.0) / 100.0), imax = (long) floor ((ymax - 40.0) / 100.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 100, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeft (g, i * 100.0, true, true, haveDottedLines, nullptr);
 	}
 }
 
@@ -507,35 +522,35 @@ static void autoMarks_logarithmic (Graphics g, double ymin, double ymax, bool ha
 	for (int i = -12; i <= 12; i ++) {
 		double power = pow (10, i), y = power;
 		if (y > ymin * 1.2 && y < ymax / 1.2)
-			Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 		if (fy > 2100) {
 			;   /* Enough. */
 		} else if (fy > 210) {
 			y = 3.0 * power;
 			if (y > ymin * 1.2 && y < ymax / 1.2)
-				Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+				Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 		} else {
 			y = 2.0 * power;
 			if (y > ymin * 1.2 && y < ymax / 1.2)
-				Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+				Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 			y = 5.0 * power;
 			if (y > ymin * 1.2 && y < ymax / 1.2)
-				Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+				Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 			if (fy < 21) {
 				y = 3.0 * power;
 				if (y > ymin * 1.2 && y < ymax / 1.2)
-					Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+					Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 				y = 7.0 * power;
 				if (y > ymin * 1.2 && y < ymax / 1.2)
-					Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+					Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 			}
 			if (fy < 4.1) {
 				y = 1.5 * power;
 				if (y > ymin * 1.2 && y < ymax / 1.2)
-					Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+					Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 				y = 4.0 * power;
 				if (y > ymin * 1.2 && y < ymax / 1.2)
-					Graphics_markLeftLogarithmic (g, y, TRUE, TRUE, haveDottedLines, NULL);
+					Graphics_markLeftLogarithmic (g, y, true, true, haveDottedLines, nullptr);
 			}
 		}
 	}
@@ -546,66 +561,66 @@ static void autoMarks_semitones (Graphics g, double ymin, double ymax, bool have
 	if (dy < 16) {
 		long imin = (long) ceil ((ymin + 1.2) / 3.0), imax = (long) floor ((ymax - 1.2) / 3.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 3, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeft (g, i * 3.0, true, true, haveDottedLines, nullptr);
 	} else if (dy < 32) {
 		long imin = (long) ceil ((ymin + 2.4) / 6.0), imax = (long) floor ((ymax - 2.4) / 6.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 6, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeft (g, i * 6.0, true, true, haveDottedLines, nullptr);
 	} else if (dy < 64) {
 		long imin = (long) ceil ((ymin + 4.8) / 12.0), imax = (long) floor ((ymax - 4.8) / 12.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 12, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeft (g, i * 12.0, true, true, haveDottedLines, nullptr);
 	} else if (dy < 128) {
 		long imin = (long) ceil ((ymin + 9.6) / 24.0), imax = (long) floor ((ymax - 9.6) / 24.0);
 		for (long i = imin; i <= imax; i ++)
-			Graphics_markLeft (g, i * 24, TRUE, TRUE, haveDottedLines, NULL);
+			Graphics_markLeft (g, i * 24.0, true, true, haveDottedLines, nullptr);
 	}
 }
 
 void TextGrid_Pitch_drawSeparately (TextGrid grid, Pitch pitch, Graphics g, double tmin, double tmax,
-	double fmin, double fmax, int showBoundaries, int useTextStyles, int garnish, int speckle, int unit)
+	double fmin, double fmax, bool showBoundaries, bool useTextStyles, bool garnish, bool speckle, int unit)
 {
-	int ntier = grid -> tiers -> size;
+	int ntier = grid -> tiers->size;
 	if (tmax <= tmin) tmin = grid -> xmin, tmax = grid -> xmax;
 	if (Function_isUnitLogarithmic (pitch, Pitch_LEVEL_FREQUENCY, unit)) {
 		fmin = Function_convertStandardToSpecialUnit (pitch, fmin, Pitch_LEVEL_FREQUENCY, unit);
 		fmax = Function_convertStandardToSpecialUnit (pitch, fmax, Pitch_LEVEL_FREQUENCY, unit);
 	}
 	if (unit == kPitch_unit_HERTZ_LOGARITHMIC)
-		Pitch_draw (pitch, g, tmin, tmax, pow (10, fmin - 0.25 * (fmax - fmin) * ntier), pow (10, fmax), FALSE, speckle, unit);
+		Pitch_draw (pitch, g, tmin, tmax, pow (10.0, fmin - 0.25 * (fmax - fmin) * ntier), pow (10.0, fmax), false, speckle, unit);
 	else
-		Pitch_draw (pitch, g, tmin, tmax, fmin - 0.25 * (fmax - fmin) * ntier, fmax, FALSE, speckle, unit);
-	TextGrid_Sound_draw (grid, NULL, g, tmin, tmax, showBoundaries, useTextStyles, FALSE);
+		Pitch_draw (pitch, g, tmin, tmax, fmin - 0.25 * (fmax - fmin) * ntier, fmax, false, speckle, unit);
+	TextGrid_Sound_draw (grid, nullptr, g, tmin, tmax, showBoundaries, useTextStyles, false);
 	/*
 	 * Restore window for the sake of margin drawing.
 	 */
 	Graphics_setWindow (g, tmin, tmax, fmin - 0.25 * (fmax - fmin) * ntier, fmax);
 	if (unit == kPitch_unit_HERTZ_LOGARITHMIC)
-		fmin = pow (10, fmin), fmax = pow (10, fmax);
+		fmin = pow (10, fmin), fmax = pow (10.0, fmax);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
 		if (unit == kPitch_unit_HERTZ_LOGARITHMIC) {
-			Graphics_markLeftLogarithmic (g, fmin, TRUE, TRUE, FALSE, NULL);
-			Graphics_markLeftLogarithmic (g, fmax, TRUE, TRUE, FALSE, NULL);
-			autoMarks_logarithmic (g, fmin, fmax, FALSE);
+			Graphics_markLeftLogarithmic (g, fmin, true, true, false, nullptr);
+			Graphics_markLeftLogarithmic (g, fmax, true, true, false, nullptr);
+			autoMarks_logarithmic (g, fmin, fmax, false);
 		} else if (unit == kPitch_unit_SEMITONES_100) {
-			Graphics_markLeft (g, fmin, TRUE, TRUE, FALSE, NULL);
-			Graphics_markLeft (g, fmax, TRUE, TRUE, FALSE, NULL);
-			autoMarks_semitones (g, fmin, fmax, FALSE);
+			Graphics_markLeft (g, fmin, true, true, false, nullptr);
+			Graphics_markLeft (g, fmax, true, true, false, nullptr);
+			autoMarks_semitones (g, fmin, fmax, false);
 		} else {
-			Graphics_markLeft (g, fmin, TRUE, TRUE, FALSE, NULL);
-			Graphics_markLeft (g, fmax, TRUE, TRUE, FALSE, NULL);
-			autoMarks (g, fmin, fmax, FALSE);
+			Graphics_markLeft (g, fmin, true, true, false, nullptr);
+			Graphics_markLeft (g, fmax, true, true, false, nullptr);
+			autoMarks (g, fmin, fmax, false);
 		}
 		Graphics_textLeft (g, true, Melder_cat (U"Pitch (", Function_getUnitText (pitch, Pitch_LEVEL_FREQUENCY, unit, Function_UNIT_TEXT_GRAPHICAL), U")"));
 		Graphics_textBottom (g, true, U"Time (s)");
-		Graphics_marksBottom (g, 2, true, true, true);
+		Graphics_marksBottom (g, 2, true, true, false);
 	}
 }
 
 void TextGrid_Pitch_draw (TextGrid grid, Pitch pitch, Graphics g,
 	long tierNumber, double tmin, double tmax, double fmin, double fmax,
-	double fontSize, int useTextStyles, int horizontalAlignment, int garnish, int speckle, int unit)
+	double fontSize, bool useTextStyles, int horizontalAlignment, bool garnish, bool speckle, int unit)
 {
 	try {
 		Function anyTier = TextGrid_checkSpecifiedTierNumberWithinRange (grid, tierNumber);
@@ -626,15 +641,15 @@ void TextGrid_Pitch_draw (TextGrid grid, Pitch pitch, Graphics g,
 		Graphics_setUnderscoreIsSubscript (g, useTextStyles);
 		if (anyTier -> classInfo == classIntervalTier) {
 			IntervalTier tier = static_cast <IntervalTier> (anyTier);
-			for (long i = 1; i <= tier -> numberOfIntervals (); i ++) {
-				TextInterval interval = tier -> interval (i);
+			for (long i = 1; i <= tier -> intervals.size; i ++) {
+				TextInterval interval = tier -> intervals.at [i];
 				double tleft = interval -> xmin, tright = interval -> xmax, tmid, f0;
 				if (! interval -> text || ! interval -> text [0]) continue;
 				if (tleft < pitch -> xmin) tleft = pitch -> xmin;
 				if (tright > pitch -> xmax) tright = pitch -> xmax;
 				tmid = (tleft + tright) / 2;
 				if (tmid < tmin || tmid > tmax) continue;
-				f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.peek(), tmid), Pitch_LEVEL_FREQUENCY, unit);
+				f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.get(), tmid), Pitch_LEVEL_FREQUENCY, unit);
 				if (f0 < fmin || f0 > fmax) continue;
 				Graphics_text (g,
 					horizontalAlignment == Graphics_LEFT ? tleft : horizontalAlignment == Graphics_RIGHT ? tright : tmid,
@@ -642,20 +657,20 @@ void TextGrid_Pitch_draw (TextGrid grid, Pitch pitch, Graphics g,
 			}
 		} else {
 			TextTier tier = static_cast <TextTier> (anyTier);
-			for (long i = 1; i <= tier -> numberOfPoints (); i ++) {
-				TextPoint point = tier -> point (i);
-				double t = point -> number, f0;
+			for (long i = 1; i <= tier -> points.size; i ++) {
+				TextPoint point = tier -> points.at [i];
+				double t = point -> number;
 				if (! point -> mark || ! point -> mark [0]) continue;
 				if (t < tmin || t > tmax) continue;
-				f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.peek(), t), Pitch_LEVEL_FREQUENCY, unit);
+				double f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.get(), t), Pitch_LEVEL_FREQUENCY, unit);
 				if (f0 < fmin || f0 > fmax) continue;
 				Graphics_text (g, t, f0, point -> mark);
 			}
 		}
-		Graphics_setPercentSignIsItalic (g, TRUE);
-		Graphics_setNumberSignIsBold (g, TRUE);
-		Graphics_setCircumflexIsSuperscript (g, TRUE);
-		Graphics_setUnderscoreIsSubscript (g, TRUE);
+		Graphics_setPercentSignIsItalic (g, true);
+		Graphics_setNumberSignIsBold (g, true);
+		Graphics_setCircumflexIsSuperscript (g, true);
+		Graphics_setUnderscoreIsSubscript (g, true);
 		Graphics_setFontSize (g, oldFontSize);
 		Graphics_unsetInner (g);
 	} catch (MelderError) {
diff --git a/fon/TextGrid_Sound.h b/fon/TextGrid_Sound.h
index 814dc09..0852614 100644
--- a/fon/TextGrid_Sound.h
+++ b/fon/TextGrid_Sound.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextGrid.h"
@@ -23,16 +22,20 @@
 
 void TextGrid_Sound_draw (TextGrid me, Sound sound, Graphics g, double tmin, double tmax,
 	bool showBoundaries, bool useTextStyles, bool garnish);
-Collection TextGrid_Sound_extractAllIntervals (TextGrid me, Sound sound, long itier, int preserveTimes);
-Collection TextGrid_Sound_extractNonemptyIntervals (TextGrid me, Sound sound, long itier, int preserveTimes);
-Collection TextGrid_Sound_extractIntervalsWhere (TextGrid me, Sound sound,
-	long itier, int which_Melder_STRING, const char32 *text, int preserveTimes);
+
+Collection_define (SoundList, OrderedOf, Sound) {
+};
+
+autoSoundList TextGrid_Sound_extractAllIntervals (TextGrid me, Sound sound, long itier, bool preserveTimes);
+autoSoundList TextGrid_Sound_extractNonemptyIntervals (TextGrid me, Sound sound, long itier, bool preserveTimes);
+autoSoundList TextGrid_Sound_extractIntervalsWhere (TextGrid me, Sound sound,
+	long itier, int which_Melder_STRING, const char32 *text, bool preserveTimes);
 
 void TextGrid_Pitch_draw (TextGrid grid, Pitch pitch, Graphics g,
 	long itier, double tmin, double tmax, double fmin, double fmax,
-	double fontSize, int useTextStyles, int horizontalAlignment, int garnish, int speckle, int yscale);
+	double fontSize, bool useTextStyles, int horizontalAlignment, bool garnish, bool speckle, int yscale);
 void TextGrid_Pitch_drawSeparately (TextGrid grid, Pitch pitch, Graphics g, double tmin, double tmax,
-	double fmin, double fmax, int showBoundaries, int useTextStyles, int garnish, int speckle, int yscale);
+	double fmin, double fmax, bool showBoundaries, bool useTextStyles, bool garnish, bool speckle, int yscale);
 
 void TextGrid_anySound_alignInterval (TextGrid me, Function anySound, long tierNumber, long intervalNumber,
 	const char32 *languageName, bool includeWords, bool includePhonemes);
diff --git a/fon/TextGrid_def.h b/fon/TextGrid_def.h
index 13db9bf..b4083a3 100644
--- a/fon/TextGrid_def.h
+++ b/fon/TextGrid_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -23,13 +22,6 @@ oo_DEFINE_CLASS (TextPoint, AnyPoint)
 
 	oo_STRING (mark)
 
-	/* 'after' was a temporary attribute (19970211-19970307). */
-	#if oo_READING_TEXT
-		if (formatVersion == 1) texgetw2 (a_text);
-	#elif oo_READING_BINARY
-		if (formatVersion == 1) bingetw2 (f);
-	#endif
-
 oo_END_CLASS (TextPoint)
 #undef ooSTRUCT
 
@@ -49,22 +41,15 @@ oo_END_CLASS (TextInterval)
 
 
 #define ooSTRUCT TextTier
-oo_DEFINE_CLASS (TextTier, Function)
+oo_DEFINE_CLASS (TextTier, Function)   // a kind of AnyTier though
 
-	oo_COLLECTION (SortedSetOfDouble, points, TextPoint, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, points, TextPoint, 0)
 
 	#if oo_DECLARING
-		long numberOfPoints () // accessor
-			{ return our points -> size; }
-		TextPoint& point (long i) // accessor
-			{ return reinterpret_cast <TextPoint&> (our points -> item [i]); }
+		AnyTier_METHODS
 
 		int v_domainQuantity ()
 			override { return MelderQuantity_TIME_SECONDS; }
-		void v_shiftX (double xfrom, double xto)
-			override;
-		void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
-			override;
 	#endif
 
 oo_END_CLASS (TextTier)
@@ -74,14 +59,9 @@ oo_END_CLASS (TextTier)
 #define ooSTRUCT IntervalTier
 oo_DEFINE_CLASS (IntervalTier, Function)
 
-	oo_COLLECTION (SortedSetOfDouble, intervals, TextInterval, 0)
+	oo_COLLECTION_OF (SortedSetOfDoubleOf, intervals, TextInterval, 0)
 
 	#if oo_DECLARING
-		long numberOfIntervals () // accessor
-			{ return our intervals -> size; }
-		TextInterval& interval (long i) // accessor
-			{ return reinterpret_cast <TextInterval&> (our intervals -> item [i]); }
-
 		int v_domainQuantity ()
 			override { return MelderQuantity_TIME_SECONDS; }
 		void v_shiftX (double xfrom, double xto)
@@ -97,14 +77,9 @@ oo_END_CLASS (IntervalTier)
 #define ooSTRUCT TextGrid
 oo_DEFINE_CLASS (TextGrid, Function)
 
-	oo_OBJECT (Ordered, 0, tiers)   // TextTier and IntervalTier objects
+	oo_AUTO_OBJECT (FunctionList, 0, tiers)   // TextTier and IntervalTier objects
 
 	#if oo_DECLARING
-		long numberOfTiers () // accessor
-			{ return our tiers -> size; }
-		Function& tier (long i) // accessor
-			{ return reinterpret_cast <Function&> (our tiers -> item [i]); }
-
 		void v_info ()
 			override;
 		void v_repair ()
@@ -115,6 +90,13 @@ oo_DEFINE_CLASS (TextGrid, Function)
 			override;
 		void v_scaleX (double xminfrom, double xmaxfrom, double xminto, double xmaxto)
 			override;
+
+		IntervalTier intervalTier_cast (int32 tierNumber) {
+			return static_cast <IntervalTier> (our tiers -> at [tierNumber]);
+		}
+		TextTier textTier_cast (int32 tierNumber) {
+			return static_cast <TextTier> (our tiers -> at [tierNumber]);
+		}
 	#endif
 
 oo_END_CLASS (TextGrid)
diff --git a/fon/TimeSoundAnalysisEditor.cpp b/fon/TimeSoundAnalysisEditor.cpp
index 35986cc..b8d5ffb 100644
--- a/fon/TimeSoundAnalysisEditor.cpp
+++ b/fon/TimeSoundAnalysisEditor.cpp
@@ -1,20 +1,19 @@
 /* TimeSoundAnalysisEditor.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <time.h>
@@ -50,8 +49,7 @@ static const char32 * theMessage_Cannot_compute_formant = U"The formants are not
 static const char32 * theMessage_Cannot_compute_intensity = U"The intensity curve is not defined at the edge of the sound.";
 static const char32 * theMessage_Cannot_compute_pulses = U"The pulses are not defined at the edge of the sound.";
 
-void structTimeSoundAnalysisEditor :: v_destroy () {
-	v_destroy_analysis ();
+void structTimeSoundAnalysisEditor :: v_destroy () noexcept {
 	TimeSoundAnalysisEditor_Parent :: v_destroy ();
 }
 
@@ -127,12 +125,12 @@ void structTimeSoundAnalysisEditor :: v_info () {
 	}
 }
 
-void structTimeSoundAnalysisEditor :: v_destroy_analysis () {
-	forget (d_spectrogram);
-	forget (d_pitch);
-	forget (d_intensity);
-	forget (d_formant);
-	forget (d_pulses);
+void structTimeSoundAnalysisEditor :: v_reset_analysis () {
+	d_spectrogram. reset();
+	d_pitch. reset();
+	d_intensity. reset();
+	d_formant. reset();
+	d_pulses. reset();
 }
 
 enum {
@@ -172,8 +170,7 @@ static int makeQueriable (TimeSoundAnalysisEditor me, int allowCursor, double *t
 	return TimeSoundAnalysisEditor_PART_SELECTION;
 }
 
-static void menu_cb_logSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_logSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Log settings", U"Log files")
 		OPTIONMENU (U"Write log 1 to", 3)
 			OPTION (U"Log file only")
@@ -218,16 +215,14 @@ static void menu_cb_logSettings (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_deleteLogFile1 (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	structMelderFile file = { 0 };
+static void menu_cb_deleteLogFile1 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	structMelderFile file { 0 };
 	Melder_pathToFile (my p_log1_fileName, & file);
 	MelderFile_delete (& file);
 }
 
-static void menu_cb_deleteLogFile2 (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	structMelderFile file = { 0 };
+static void menu_cb_deleteLogFile2 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	structMelderFile file { 0 };
 	Melder_pathToFile (my p_log2_fileName, & file);
 	MelderFile_delete (& file);
 }
@@ -235,7 +230,7 @@ static void menu_cb_deleteLogFile2 (EDITOR_ARGS) {
 static void do_log (TimeSoundAnalysisEditor me, int which) {
 	char32 format [Preferences_STRING_BUFFER_SIZE], *p;
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	str32cpy (format, which == 1 ? my p_log1_format : my p_log2_format);
 	for (p = format; *p != U'\0'; p ++) if (*p == U'\'') {
 		/*
@@ -244,7 +239,7 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 		char32 *q = p + 1, varName [300], *r, *s, *colon;
 		int precision = -1;
 		double value = NUMundefined;
-		const char32 *stringValue = NULL;
+		const char32 *stringValue = nullptr;
 		while (*q != U'\0' && *q != U'\'') q ++;
 		if (*q == U'\0') break;   /* No matching right quote: done with this line. */
 		if (q - p == 1) continue;   /* Ignore empty variable names. */
@@ -279,9 +274,9 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 				Melder_throw (theMessage_Cannot_compute_pitch);
 			}
 			if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-				value = Pitch_getValueAtTime (my d_pitch, tmin, my p_pitch_unit, 1);
+				value = Pitch_getValueAtTime (my d_pitch.get(), tmin, my p_pitch_unit, 1);
 			} else {
-				value = Pitch_getMean (my d_pitch, tmin, tmax, my p_pitch_unit);
+				value = Pitch_getMean (my d_pitch.get(), tmin, tmax, my p_pitch_unit);
 			}
 		} else if (varName [0] == 'f' && varName [1] >= '1' && varName [1] <= '5' && varName [2] == '\0') {
 			if (! my p_formant_show)
@@ -290,9 +285,9 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 				Melder_throw (theMessage_Cannot_compute_formant);
 			}
 			if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-				value = Formant_getValueAtTime (my d_formant, (int) (varName [1] - U'0'), tmin, 0);
+				value = Formant_getValueAtTime (my d_formant.get(), (int) (varName [1] - U'0'), tmin, 0);
 			} else {
-				value = Formant_getMean (my d_formant, (int) (varName [1] - U'0'), tmin, tmax, 0);
+				value = Formant_getMean (my d_formant.get(), (int) (varName [1] - U'0'), tmin, tmax, 0);
 			}
 		} else if (varName [0] == U'b' && varName [1] >= U'1' && varName [1] <= U'5' && varName [2] == U'\0') {
 			if (! my p_formant_show)
@@ -300,7 +295,7 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 			if (! my d_formant) {
 				Melder_throw (theMessage_Cannot_compute_formant);
 			}
-			value = Formant_getBandwidthAtTime (my d_formant, (int) (varName [1] - U'0'), 0.5 * (tmin + tmax), 0);
+			value = Formant_getBandwidthAtTime (my d_formant.get(), (int) (varName [1] - U'0'), 0.5 * (tmin + tmax), 0);
 		} else if (str32equ (varName, U"intensity")) {
 			if (! my p_intensity_show)
 				Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
@@ -308,9 +303,9 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 				Melder_throw (theMessage_Cannot_compute_intensity);
 			}
 			if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-				value = Vector_getValueAtX (my d_intensity, tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
+				value = Vector_getValueAtX (my d_intensity.get(), tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
 			} else {
-				value = Intensity_getAverage (my d_intensity, tmin, tmax, my p_intensity_averagingMethod);
+				value = Intensity_getAverage (my d_intensity.get(), tmin, tmax, my p_intensity_averagingMethod);
 			}
 		} else if (str32equ (varName, U"power")) {
 			if (! my p_spectrogram_show)
@@ -319,7 +314,7 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 				Melder_throw (theMessage_Cannot_compute_spectrogram);
 			}
 			if (part != TimeSoundAnalysisEditor_PART_CURSOR) Melder_throw (U"Click inside the spectrogram first.");
-			value = Matrix_getValueAtXY (my d_spectrogram, tmin, my d_spectrogram_cursor);
+			value = Matrix_getValueAtXY (my d_spectrogram.get(), tmin, my d_spectrogram_cursor);
 		}
 		if (NUMdefined (value)) {
 			int varlen = (q - p) - 1, headlen = p - format;
@@ -335,7 +330,7 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 			MelderString_append (& buffer, formattedNumber, p + varlen + 2);
 			str32cpy (format, buffer.string);
 			p += arglen - 1;
-		} else if (stringValue != NULL) {
+		} else if (stringValue) {
 			int varlen = (q - p) - 1, headlen = p - format, arglen = str32len (stringValue);
 			static MelderString buffer { 0 };
 			MelderString_ncopy (& buffer, format, headlen);
@@ -343,7 +338,7 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 			str32cpy (format, buffer.string);
 			p += arglen - 1;
 		} else {
-			p = q - 1;   /* Go to before next quote. */
+			p = q - 1;   // go to before next quote
 		}
 	}
 	if ((which == 1 && my p_log1_toInfoWindow) || (which == 2 && my p_log2_toInfoWindow)) {
@@ -358,21 +353,18 @@ static void do_log (TimeSoundAnalysisEditor me, int which) {
 	}
 }
 
-static void menu_cb_log1 (EDITOR_ARGS) { EDITOR_IAM (TimeSoundAnalysisEditor); do_log (me, 1); }
-static void menu_cb_log2 (EDITOR_ARGS) { EDITOR_IAM (TimeSoundAnalysisEditor); do_log (me, 2); }
+static void menu_cb_log1 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) { do_log (me, 1); }
+static void menu_cb_log2 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) { do_log (me, 2); }
 
-static void menu_cb_logScript3 (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_logScript3 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	DO_RunTheScriptFromAnyAddedEditorCommand (me, my p_logScript3);
 }
-static void menu_cb_logScript4 (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_logScript4 (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	DO_RunTheScriptFromAnyAddedEditorCommand (me, my p_logScript4);
 }
 
-static void menu_cb_showAnalyses (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Show analyses", 0)
+static void menu_cb_showAnalyses (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Show analyses", nullptr)
 		BOOLEAN  (U"Show spectrogram",     my default_spectrogram_show ())
 		BOOLEAN  (U"Show pitch",           my default_pitch_show       ())
 		BOOLEAN  (U"Show intensity",       my default_intensity_show   ())
@@ -397,8 +389,7 @@ static void menu_cb_showAnalyses (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_timeStepSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_timeStepSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Time step settings", U"Time step settings...")
 		OPTIONMENU_ENUM (U"Time step strategy", kTimeSoundAnalysisEditor_timeStepStrategy, my default_timeStepStrategy ())
 		LABEL (U"", U"")
@@ -415,25 +406,23 @@ static void menu_cb_timeStepSettings (EDITOR_ARGS) {
 		my pref_timeStepStrategy         () = my p_timeStepStrategy         = GET_ENUM    (kTimeSoundAnalysisEditor_timeStepStrategy, U"Time step strategy");
 		my pref_fixedTimeStep            () = my p_fixedTimeStep            = GET_REAL    (U"Fixed time step");
 		my pref_numberOfTimeStepsPerView () = my p_numberOfTimeStepsPerView = GET_INTEGER (U"Number of time steps per view");
-		forget (my d_pitch);
-		forget (my d_formant);
-		forget (my d_intensity);
-		forget (my d_pulses);
+		my d_pitch. reset();
+		my d_formant. reset();
+		my d_intensity. reset();
+		my d_pulses. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
 /***** SPECTROGRAM MENU *****/
 
-static void menu_cb_showSpectrogram (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_showSpectrogram (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	my pref_spectrogram_show () = my p_spectrogram_show = ! my p_spectrogram_show;
 	GuiMenuItem_check (my spectrogramToggle, my p_spectrogram_show);   // in case we're called from a script
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_spectrogramSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_spectrogramSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Spectrogram settings", U"Intro 3.2. Configuring the spectrogram")
 		REAL     (U"left View range (Hz)",  my default_spectrogram_viewFrom     ())
 		POSITIVE (U"right View range (Hz)", my default_spectrogram_viewTo       ())
@@ -469,13 +458,12 @@ static void menu_cb_spectrogramSettings (EDITOR_ARGS) {
 		my pref_spectrogram_viewTo       () = my p_spectrogram_viewTo       = GET_REAL (U"right View range");
 		my pref_spectrogram_windowLength () = my p_spectrogram_windowLength = GET_REAL (U"Window length");
 		my pref_spectrogram_dynamicRange () = my p_spectrogram_dynamicRange = GET_REAL (U"Dynamic range");
-		forget (my d_spectrogram);
+		my d_spectrogram. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_advancedSpectrogramSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_advancedSpectrogramSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Advanced spectrogram settings", U"Advanced spectrogram settings...")
 		LABEL (U"", U"Time and frequency resolutions:")
 		NATURAL (U"Number of time steps",      my default_spectrogram_timeSteps          ())
@@ -506,20 +494,18 @@ static void menu_cb_advancedSpectrogramSettings (EDITOR_ARGS) {
 		my pref_spectrogram_maximum            () = my p_spectrogram_maximum            = GET_REAL (U"Maximum");
 		my pref_spectrogram_preemphasis        () = my p_spectrogram_preemphasis        = GET_REAL (U"Pre-emphasis");
 		my pref_spectrogram_dynamicCompression () = my p_spectrogram_dynamicCompression = GET_REAL (U"Dynamic compression");
-		forget (my d_spectrogram);
+		my d_spectrogram. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_getFrequency (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getFrequency (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	Melder_informationReal (my d_spectrogram_cursor, U"Hz");
 }
 
-static void menu_cb_getSpectralPowerAtCursorCross (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getSpectralPowerAtCursorCross (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_spectrogram_show)
 		Melder_throw (U"No spectrogram is visible.\nFirst choose \"Show spectrogram\" from the Spectrum menu.");
 	if (! my d_spectrogram) {
@@ -528,13 +514,12 @@ static void menu_cb_getSpectralPowerAtCursorCross (EDITOR_ARGS) {
 	}
 	if (part != TimeSoundAnalysisEditor_PART_CURSOR) Melder_throw (U"Click inside the spectrogram first.");
 	MelderInfo_open ();
-	MelderInfo_write (Matrix_getValueAtXY (my d_spectrogram, tmin, my d_spectrogram_cursor),
+	MelderInfo_write (Matrix_getValueAtXY (my d_spectrogram.get(), tmin, my d_spectrogram_cursor),
 		U" Pa2/Hz (at time = ", tmin, U" seconds and frequency = ", my d_spectrogram_cursor, U" Hz)");
 	MelderInfo_close ();
 }
 
-static void menu_cb_moveFrequencyCursorTo (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_moveFrequencyCursorTo (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	if (! my p_spectrogram_show)
 		Melder_throw (U"No spectrogram is visible.\nFirst choose \"Show spectrogram\" from the Spectrum menu.");
 	EDITOR_FORM (U"Move frequency cursor to", 0)
@@ -548,34 +533,32 @@ static void menu_cb_moveFrequencyCursorTo (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static Sound extractSound (TimeSoundAnalysisEditor me, double tmin, double tmax) {
-	Sound sound = NULL;
+static autoSound extractSound (TimeSoundAnalysisEditor me, double tmin, double tmax) {
+	autoSound sound;
 	if (my d_longSound.data) {
 		if (tmin < my d_longSound.data -> xmin) tmin = my d_longSound.data -> xmin;
 		if (tmax > my d_longSound.data -> xmax) tmax = my d_longSound.data -> xmax;
-		sound = LongSound_extractPart (my d_longSound.data, tmin, tmax, TRUE);
+		sound = LongSound_extractPart (my d_longSound.data, tmin, tmax, true);
 	} else if (my d_sound.data) {
 		if (tmin < my d_sound.data -> xmin) tmin = my d_sound.data -> xmin;
 		if (tmax > my d_sound.data -> xmax) tmax = my d_sound.data -> xmax;
-		sound = Sound_extractPart (my d_sound.data, tmin, tmax, kSound_windowShape_RECTANGULAR, 1.0, TRUE);
+		sound = Sound_extractPart (my d_sound.data, tmin, tmax, kSound_windowShape_RECTANGULAR, 1.0, true);
 	}
 	return sound;
 }
 
-static void menu_cb_extractVisibleSpectrogram (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_extractVisibleSpectrogram (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_spectrogram_show)
 		Melder_throw (U"No spectrogram is visible.\nFirst choose \"Show spectrogram\" from the Spectrum menu.");
 	if (! my d_spectrogram) {
 		TimeSoundAnalysisEditor_computeSpectrogram (me);
 		if (! my d_spectrogram) Melder_throw (theMessage_Cannot_compute_spectrogram);
 	}
-	autoSpectrogram publish = Data_copy (my d_spectrogram);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoSpectrogram publish = Data_copy (my d_spectrogram.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_viewSpectralSlice (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_viewSpectralSlice (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double start = my d_startSelection == my d_endSelection ?
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_GAUSSIAN ? my d_startSelection - my p_spectrogram_windowLength :
 		my d_startSelection - my p_spectrogram_windowLength / 2 : my d_startSelection;
@@ -583,26 +566,25 @@ static void menu_cb_viewSpectralSlice (EDITOR_ARGS) {
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_GAUSSIAN ? my d_endSelection + my p_spectrogram_windowLength :
 		my d_endSelection + my p_spectrogram_windowLength / 2 : my d_endSelection;
 	autoSound sound = extractSound (me, start, finish);
-	Sound_multiplyByWindow (sound.peek(),
+	Sound_multiplyByWindow (sound.get(),
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_SQUARE ? kSound_windowShape_RECTANGULAR :
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_HAMMING ? kSound_windowShape_HAMMING :
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_BARTLETT ? kSound_windowShape_TRIANGULAR :
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_WELCH ? kSound_windowShape_PARABOLIC :
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_HANNING ? kSound_windowShape_HANNING :
 		my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_GAUSSIAN ? kSound_windowShape_GAUSSIAN_2 : kSound_windowShape_RECTANGULAR);
-	autoSpectrum publish = Sound_to_Spectrum (sound.peek(), TRUE);
-	Thing_setName (publish.peek(), Melder_cat (( my data == NULL ? U"untitled" : ((Data) my data) -> name ),
+	autoSpectrum publish = Sound_to_Spectrum (sound.get(), true);
+	Thing_setName (publish.get(), Melder_cat (( my data == nullptr ? U"untitled" : ((Daata) my data) -> name ),
 		U"_", Melder_fixed (0.5 * (my d_startSelection + my d_endSelection), 3)));
-	Editor_broadcastPublication (me, publish.transfer());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_paintVisibleSpectrogram (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Paint visible spectrogram", 0)
+static void menu_cb_paintVisibleSpectrogram (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Paint visible spectrogram", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
-		BOOLEAN (U"Garnish", 1);
+		BOOLEAN (U"Garnish", true);
 	EDITOR_OK
 		my v_ok_pictureWindow (cmd);
 		my v_ok_pictureMargins (cmd);
@@ -620,7 +602,7 @@ static void menu_cb_paintVisibleSpectrogram (EDITOR_ARGS) {
 			if (! my d_spectrogram) Melder_throw (theMessage_Cannot_compute_spectrogram);
 		}
 		Editor_openPraatPicture (me);
-		Spectrogram_paint (my d_spectrogram, my pictureGraphics, my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo,
+		Spectrogram_paint (my d_spectrogram.get(), my pictureGraphics, my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo,
 			my p_spectrogram_maximum, my p_spectrogram_autoscaling, my p_spectrogram_dynamicRange, my p_spectrogram_preemphasis,
 			my p_spectrogram_dynamicCompression, my p_spectrogram_picture_garnish);
 		FunctionEditor_garnish (me);
@@ -630,15 +612,13 @@ static void menu_cb_paintVisibleSpectrogram (EDITOR_ARGS) {
 
 /***** PITCH MENU *****/
 
-static void menu_cb_showPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_showPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	my pref_pitch_show () = my p_pitch_show = ! my p_pitch_show;
 	GuiMenuItem_check (my pitchToggle, my p_pitch_show);   // in case we're called from a script
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_pitchSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_pitchSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Pitch settings", U"Intro 4.2. Configuring the pitch contour")
 		POSITIVE (U"left Pitch range (Hz)", my default_pitch_floor ())
 		POSITIVE (U"right Pitch range (Hz)", my default_pitch_ceiling ())
@@ -680,15 +660,14 @@ static void menu_cb_pitchSettings (EDITOR_ARGS) {
 		my pref_pitch_unit          () = my p_pitch_unit          = GET_ENUM (kPitch_unit, U"Unit");
 		my pref_pitch_method        () = my p_pitch_method        = GET_ENUM (kTimeSoundAnalysisEditor_pitch_analysisMethod, U"Analysis method");
 		my pref_pitch_drawingMethod () = my p_pitch_drawingMethod = GET_ENUM (kTimeSoundAnalysisEditor_pitch_drawingMethod, U"Drawing method");
-		forget (my d_pitch);
-		forget (my d_intensity);
-		forget (my d_pulses);
+		my d_pitch. reset();
+		my d_intensity. reset();
+		my d_pulses. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_advancedPitchSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_advancedPitchSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Advanced pitch settings", U"Advanced pitch settings...")
 		LABEL   (U"", U"Make view range different from analysis range:")
 		REAL    (U"left View range (units)",   my default_pitch_viewFrom                  ())
@@ -723,17 +702,16 @@ static void menu_cb_advancedPitchSettings (EDITOR_ARGS) {
 		my pref_pitch_octaveCost                () = my p_pitch_octaveCost                = GET_REAL    (U"Octave cost");
 		my pref_pitch_octaveJumpCost            () = my p_pitch_octaveJumpCost            = GET_REAL    (U"Octave-jump cost");
 		my pref_pitch_voicedUnvoicedCost        () = my p_pitch_voicedUnvoicedCost        = GET_REAL    (U"Voiced / unvoiced cost");
-		forget (my d_pitch);
-		forget (my d_intensity);
-		forget (my d_pulses);
+		my d_pitch. reset();
+		my d_intensity. reset();
+		my d_pulses. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_pitchListing (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_pitchListing (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the Pitch menu.");
 	if (! my d_pitch) {
@@ -741,28 +719,27 @@ static void menu_cb_pitchListing (EDITOR_ARGS) {
 		if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);
 	}
 	MelderInfo_open ();
-	MelderInfo_writeLine (U"Time_s   F0_", Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT));
+	MelderInfo_writeLine (U"Time_s   F0_", Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT));
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		double f0 = Pitch_getValueAtTime (my d_pitch, tmin, my p_pitch_unit, TRUE);
-		f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double f0 = Pitch_getValueAtTime (my d_pitch.get(), tmin, my p_pitch_unit, true);
+		f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
 		MelderInfo_writeLine (Melder_fixed (tmin, 6), U"   ", Melder_fixed (f0, 6));
 	} else {
 		long i, i1, i2;
-		Sampled_getWindowSamples (my d_pitch, tmin, tmax, & i1, & i2);
+		Sampled_getWindowSamples (my d_pitch.get(), tmin, tmax, & i1, & i2);
 		for (i = i1; i <= i2; i ++) {
-			double t = Sampled_indexToX (my d_pitch, i);
-			double f0 = Sampled_getValueAtSample (my d_pitch, i, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-			f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+			double t = Sampled_indexToX (my d_pitch.get(), i);
+			double f0 = Sampled_getValueAtSample (my d_pitch.get(), i, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+			f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
 			MelderInfo_writeLine (Melder_fixed (t, 6), U"   ", Melder_fixed (f0, 6));
 		}
 	}
 	MelderInfo_close ();
 }
 
-static void menu_cb_getPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the Pitch menu.");
 	if (! my d_pitch) {
@@ -770,52 +747,49 @@ static void menu_cb_getPitch (EDITOR_ARGS) {
 		if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);
 	}
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		double f0 = Pitch_getValueAtTime (my d_pitch, tmin, my p_pitch_unit, TRUE);
-		f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		Melder_information (f0, U" ", Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
+		double f0 = Pitch_getValueAtTime (my d_pitch.get(), tmin, my p_pitch_unit, true);
+		f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		Melder_information (f0, U" ", Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
 			U" (interpolated pitch at CURSOR)");
 	} else {
-		double f0 = Pitch_getMean (my d_pitch, tmin, tmax, my p_pitch_unit);
-		f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		Melder_information (f0, U" ", Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
+		double f0 = Pitch_getMean (my d_pitch.get(), tmin, tmax, my p_pitch_unit);
+		f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		Melder_information (f0, U" ", Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
 			U" (mean pitch ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 	}
 }
 
-static void menu_cb_getMinimumPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getMinimumPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax, f0;
-	int part = makeQueriable (me, FALSE, & tmin, & tmax);
+	int part = makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the Pitch menu.");
 	if (! my d_pitch) {
 		TimeSoundAnalysisEditor_computePitch (me);
 		if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);
 	}
-	f0 = Pitch_getMinimum (my d_pitch, tmin, tmax, my p_pitch_unit, TRUE);
-	f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-	Melder_information (f0, U" ", Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
+	f0 = Pitch_getMinimum (my d_pitch.get(), tmin, tmax, my p_pitch_unit, true);
+	f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+	Melder_information (f0, U" ", Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
 		U" (minimum pitch ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 }
 
-static void menu_cb_getMaximumPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getMaximumPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax, f0;
-	int part = makeQueriable (me, FALSE, & tmin, & tmax);
+	int part = makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the Pitch menu.");
 	if (! my d_pitch) {
 		TimeSoundAnalysisEditor_computePitch (me);
 		if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);   // BUG
 	}
-	f0 = Pitch_getMaximum (my d_pitch, tmin, tmax, my p_pitch_unit, TRUE);
-	f0 = Function_convertToNonlogarithmic (my d_pitch, f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-	Melder_information (f0, U" ", Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
+	f0 = Pitch_getMaximum (my d_pitch.get(), tmin, tmax, my p_pitch_unit, true);
+	f0 = Function_convertToNonlogarithmic (my d_pitch.get(), f0, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+	Melder_information (f0, U" ", Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, 0),
 		U" (maximum pitch ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 }
 
-static void menu_cb_moveCursorToMinimumPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_moveCursorToMinimumPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the View menu.");
 	if (! my d_pitch) {
@@ -826,8 +800,8 @@ static void menu_cb_moveCursorToMinimumPitch (EDITOR_ARGS) {
 		Melder_throw (U"Empty selection.");
 	} else {
 		double time;
-		Pitch_getMinimumAndTime (my d_pitch, my d_startSelection, my d_endSelection,
-			my p_pitch_unit, 1, NULL, & time);
+		Pitch_getMinimumAndTime (my d_pitch.get(), my d_startSelection, my d_endSelection,
+			my p_pitch_unit, 1, nullptr, & time);
 		if (! NUMdefined (time))
 			Melder_throw (U"Selection is voiceless.");
 		my d_startSelection = my d_endSelection = time;
@@ -835,8 +809,7 @@ static void menu_cb_moveCursorToMinimumPitch (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_moveCursorToMaximumPitch (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_moveCursorToMaximumPitch (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the View menu.");
 	if (! my d_pitch) {
@@ -847,8 +820,8 @@ static void menu_cb_moveCursorToMaximumPitch (EDITOR_ARGS) {
 		Melder_throw (U"Empty selection.");
 	} else {
 		double time;
-		Pitch_getMaximumAndTime (my d_pitch, my d_startSelection, my d_endSelection,
-			my p_pitch_unit, 1, NULL, & time);
+		Pitch_getMaximumAndTime (my d_pitch.get(), my d_startSelection, my d_endSelection,
+			my p_pitch_unit, 1, nullptr, & time);
 		if (! NUMdefined (time))
 			Melder_throw (U"Selection is voiceless.");
 		my d_startSelection = my d_endSelection = time;
@@ -856,27 +829,25 @@ static void menu_cb_moveCursorToMaximumPitch (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_extractVisiblePitchContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_extractVisiblePitchContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_pitch_show)
 		Melder_throw (U"No pitch contour is visible.\nFirst choose \"Show pitch\" from the Pitch menu.");
 	if (! my d_pitch) {
 		TimeSoundAnalysisEditor_computePitch (me);
 		if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);
 	}
-	autoPitch publish = Data_copy (my d_pitch);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoPitch publish = Data_copy (my d_pitch.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_drawVisiblePitchContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Draw visible pitch contour", 0)
+static void menu_cb_drawVisiblePitchContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible pitch contour", nullptr)
 		my v_form_pictureWindow (cmd);
 		LABEL (U"", U"Pitch:")
-		BOOLEAN (U"Speckle", 0);
+		BOOLEAN (U"Speckle", false);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
-		BOOLEAN (U"Garnish", 1);
+		BOOLEAN (U"Garnish", true);
 	EDITOR_OK
 		my v_ok_pictureWindow (cmd);
 		SET_INTEGER (U"Speckle", my p_pitch_picture_speckle);
@@ -896,13 +867,13 @@ static void menu_cb_drawVisiblePitchContour (EDITOR_ARGS) {
 			if (! my d_pitch) Melder_throw (theMessage_Cannot_compute_pitch);
 		}
 		Editor_openPraatPicture (me);
-		double pitchFloor_hidden = Function_convertStandardToSpecialUnit (my d_pitch, my p_pitch_floor, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchCeiling_hidden = Function_convertStandardToSpecialUnit (my d_pitch, my p_pitch_ceiling, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchFloor_overt = Function_convertToNonlogarithmic (my d_pitch, pitchFloor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
-		double pitchCeiling_overt = Function_convertToNonlogarithmic (my d_pitch, pitchCeiling_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchFloor_hidden = Function_convertStandardToSpecialUnit (my d_pitch.get(), my p_pitch_floor, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchCeiling_hidden = Function_convertStandardToSpecialUnit (my d_pitch.get(), my p_pitch_ceiling, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchFloor_overt = Function_convertToNonlogarithmic (my d_pitch.get(), pitchFloor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+		double pitchCeiling_overt = Function_convertToNonlogarithmic (my d_pitch.get(), pitchCeiling_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
 		double pitchViewFrom_overt = my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewFrom : pitchFloor_overt;
 		double pitchViewTo_overt = my p_pitch_viewFrom < my p_pitch_viewTo ? my p_pitch_viewTo : pitchCeiling_overt;
-		Pitch_draw (my d_pitch, my pictureGraphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt,
+		Pitch_draw (my d_pitch.get(), my pictureGraphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt,
 			my p_pitch_picture_garnish, my p_pitch_picture_speckle, my p_pitch_unit);
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
@@ -911,15 +882,13 @@ static void menu_cb_drawVisiblePitchContour (EDITOR_ARGS) {
 
 /***** INTENSITY MENU *****/
 
-static void menu_cb_showIntensity (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_showIntensity (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	my pref_intensity_show () = my p_intensity_show = ! my p_intensity_show;
 	GuiMenuItem_check (my intensityToggle, my p_intensity_show);   // in case we're called from a script
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_intensitySettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_intensitySettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Intensity settings", U"Intro 6.2. Configuring the intensity contour")
 		REAL (U"left View range (dB)",  my default_intensity_viewFrom ())
 		REAL (U"right View range (dB)", my default_intensity_viewTo   ())
@@ -942,26 +911,24 @@ static void menu_cb_intensitySettings (EDITOR_ARGS) {
 		my pref_intensity_viewTo               () = my p_intensity_viewTo               = GET_REAL    (U"right View range");
 		my pref_intensity_averagingMethod      () = my p_intensity_averagingMethod      = GET_ENUM    (kTimeSoundAnalysisEditor_intensity_averagingMethod, U"Averaging method");
 		my pref_intensity_subtractMeanPressure () = my p_intensity_subtractMeanPressure = GET_INTEGER (U"Subtract mean pressure");
-		forget (my d_intensity);
+		my d_intensity. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_extractVisibleIntensityContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_extractVisibleIntensityContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_intensity_show)
 		Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
 	if (! my d_intensity) {
 		TimeSoundAnalysisEditor_computeIntensity (me);
 		if (! my d_intensity) Melder_throw (theMessage_Cannot_compute_intensity);
 	}
-	autoIntensity publish = Data_copy (my d_intensity);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoIntensity publish = Data_copy (my d_intensity.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_drawVisibleIntensityContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Draw visible intensity contour", 0)
+static void menu_cb_drawVisibleIntensityContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible intensity contour", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
@@ -983,17 +950,16 @@ static void menu_cb_drawVisibleIntensityContour (EDITOR_ARGS) {
 			if (! my d_intensity) Melder_throw (theMessage_Cannot_compute_intensity);
 		}
 		Editor_openPraatPicture (me);
-		Intensity_draw (my d_intensity, my pictureGraphics, my d_startWindow, my d_endWindow, my p_intensity_viewFrom, my p_intensity_viewTo,
+		Intensity_draw (my d_intensity.get(), my pictureGraphics, my d_startWindow, my d_endWindow, my p_intensity_viewFrom, my p_intensity_viewTo,
 			my p_intensity_picture_garnish);
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
-static void menu_cb_intensityListing (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_intensityListing (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_intensity_show)
 		Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
 	if (! my d_intensity) {
@@ -1003,24 +969,23 @@ static void menu_cb_intensityListing (EDITOR_ARGS) {
 	MelderInfo_open ();
 	MelderInfo_writeLine (U"Time_s   Intensity_dB");
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		double intensity = Vector_getValueAtX (my d_intensity, tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
+		double intensity = Vector_getValueAtX (my d_intensity.get(), tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
 		MelderInfo_writeLine (Melder_fixed (tmin, 6), U"   ", Melder_fixed (intensity, 6));
 	} else {
 		long i, i1, i2;
-		Sampled_getWindowSamples (my d_intensity, tmin, tmax, & i1, & i2);
+		Sampled_getWindowSamples (my d_intensity.get(), tmin, tmax, & i1, & i2);
 		for (i = i1; i <= i2; i ++) {
-			double t = Sampled_indexToX (my d_intensity, i);
-			double intensity = Vector_getValueAtX (my d_intensity, t, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_NEAREST);
+			double t = Sampled_indexToX (my d_intensity.get(), i);
+			double intensity = Vector_getValueAtX (my d_intensity.get(), t, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_NEAREST);
 			MelderInfo_writeLine (Melder_fixed (t, 6), U"   ", Melder_fixed (intensity, 6));
 		}
 	}
 	MelderInfo_close ();
 }
 
-static void menu_cb_getIntensity (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getIntensity (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_intensity_show)
 		Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
 	if (! my d_intensity) {
@@ -1028,53 +993,49 @@ static void menu_cb_getIntensity (EDITOR_ARGS) {
 		if (! my d_intensity) Melder_throw (theMessage_Cannot_compute_intensity);
 	}
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		Melder_information (Vector_getValueAtX (my d_intensity, tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR), U" dB (intensity at CURSOR)");
+		Melder_information (Vector_getValueAtX (my d_intensity.get(), tmin, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR), U" dB (intensity at CURSOR)");
 	} else {
 		static const char32 *methodString [] = { U"median", U"mean-energy", U"mean-sones", U"mean-dB" };
-		Melder_information (Intensity_getAverage (my d_intensity, tmin, tmax, my p_intensity_averagingMethod),
+		Melder_information (Intensity_getAverage (my d_intensity.get(), tmin, tmax, my p_intensity_averagingMethod),
 			U" dB (", methodString [my p_intensity_averagingMethod], U" intensity ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 	}
 }
 
-static void menu_cb_getMinimumIntensity (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getMinimumIntensity (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, FALSE, & tmin, & tmax);
+	int part = makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_intensity_show)
 		Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
 	if (! my d_intensity) {
 		TimeSoundAnalysisEditor_computeIntensity (me);
 		if (! my d_intensity) Melder_throw (theMessage_Cannot_compute_intensity);
 	}
-	double intensity = Vector_getMinimum (my d_intensity, tmin, tmax, NUM_PEAK_INTERPOLATE_PARABOLIC);
+	double intensity = Vector_getMinimum (my d_intensity.get(), tmin, tmax, NUM_PEAK_INTERPOLATE_PARABOLIC);
 	Melder_information (intensity, U" dB (minimum intensity ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 }
 
-static void menu_cb_getMaximumIntensity (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_getMaximumIntensity (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, FALSE, & tmin, & tmax);
+	int part = makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_intensity_show)
 		Melder_throw (U"No intensity contour is visible.\nFirst choose \"Show intensity\" from the Intensity menu.");
 	if (! my d_intensity) {
 		TimeSoundAnalysisEditor_computeIntensity (me);
 		if (! my d_intensity) Melder_throw (theMessage_Cannot_compute_intensity);
 	}
-	double intensity = Vector_getMaximum (my d_intensity, tmin, tmax, NUM_PEAK_INTERPOLATE_PARABOLIC);
+	double intensity = Vector_getMaximum (my d_intensity.get(), tmin, tmax, NUM_PEAK_INTERPOLATE_PARABOLIC);
 	Melder_information (intensity, U" dB (maximum intensity ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 }
 
 /***** FORMANT MENU *****/
 
-static void menu_cb_showFormants (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_showFormants (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	my pref_formant_show () = my p_formant_show = ! my p_formant_show;
 	GuiMenuItem_check (my formantToggle, my p_formant_show);   // in case we're called from a script
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_formantSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_formantSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Formant settings", U"Intro 5.2. Configuring the formant contours")
 		POSITIVE (U"Maximum formant (Hz)", my default_formant_maximumFormant   ())
 		POSITIVE (U"Number of formants",   my default_formant_numberOfFormants ())
@@ -1105,13 +1066,12 @@ static void menu_cb_formantSettings (EDITOR_ARGS) {
 		my pref_formant_windowLength     () = my p_formant_windowLength     = GET_REAL (U"Window length");
 		my pref_formant_dynamicRange     () = my p_formant_dynamicRange     = GET_REAL (U"Dynamic range");
 		my pref_formant_dotSize          () = my p_formant_dotSize          = GET_REAL (U"Dot size");
-		forget (my d_formant);
+		my d_formant. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_advancedFormantSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_advancedFormantSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Advanced formant settings", U"Advanced formant settings...")
 		RADIO_ENUM (U"Method", kTimeSoundAnalysisEditor_formant_analysisMethod, my default_formant_method ())
 		POSITIVE (U"Pre-emphasis from (Hz)", my default_formant_preemphasisFrom ())
@@ -1121,30 +1081,28 @@ static void menu_cb_advancedFormantSettings (EDITOR_ARGS) {
 	EDITOR_DO
 		my pref_formant_method          () = my p_formant_method          = GET_ENUM (kTimeSoundAnalysisEditor_formant_analysisMethod, U"Method");
 		my pref_formant_preemphasisFrom () = my p_formant_preemphasisFrom = GET_REAL (U"Pre-emphasis from");
-		forget (my d_formant);
+		my d_formant. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_extractVisibleFormantContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_extractVisibleFormantContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_formant_show)
 		Melder_throw (U"No formant contour is visible.\nFirst choose \"Show formants\" from the Formant menu.");
 	if (! my d_formant) {
 		TimeSoundAnalysisEditor_computeFormants (me);
 		if (! my d_formant) Melder_throw (theMessage_Cannot_compute_formant);
 	}
-	autoFormant publish = Data_copy (my d_formant);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoFormant publish = Data_copy (my d_formant.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_drawVisibleFormantContour (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Draw visible formant contour", 0)
+static void menu_cb_drawVisibleFormantContour (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible formant contour", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
-		BOOLEAN (U"Garnish", 1);
+		BOOLEAN (U"Garnish", true);
 	EDITOR_OK
 		my v_ok_pictureWindow (cmd);
 		my v_ok_pictureMargins (cmd);
@@ -1162,7 +1120,7 @@ static void menu_cb_drawVisibleFormantContour (EDITOR_ARGS) {
 			if (! my d_formant) Melder_throw (theMessage_Cannot_compute_formant);
 		}
 		Editor_openPraatPicture (me);
-		Formant_drawSpeckles (my d_formant, my pictureGraphics, my d_startWindow, my d_endWindow,
+		Formant_drawSpeckles (my d_formant.get(), my pictureGraphics, my d_startWindow, my d_endWindow,
 			my p_spectrogram_viewTo, my p_formant_dynamicRange,
 			my p_formant_picture_garnish);
 		FunctionEditor_garnish (me);
@@ -1170,10 +1128,9 @@ static void menu_cb_drawVisibleFormantContour (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_formantListing (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_formantListing (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_formant_show)
 		Melder_throw (U"No formant contour is visible.\nFirst choose \"Show formants\" from the Formant menu.");
 	if (! my d_formant) {
@@ -1183,20 +1140,20 @@ static void menu_cb_formantListing (EDITOR_ARGS) {
 	MelderInfo_open ();
 	MelderInfo_writeLine (U"Time_s   F1_Hz   F2_Hz   F3_Hz   F4_Hz");
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		double f1 = Formant_getValueAtTime (my d_formant, 1, tmin, 0);
-		double f2 = Formant_getValueAtTime (my d_formant, 2, tmin, 0);
-		double f3 = Formant_getValueAtTime (my d_formant, 3, tmin, 0);
-		double f4 = Formant_getValueAtTime (my d_formant, 4, tmin, 0);
+		double f1 = Formant_getValueAtTime (my d_formant.get(), 1, tmin, 0);
+		double f2 = Formant_getValueAtTime (my d_formant.get(), 2, tmin, 0);
+		double f3 = Formant_getValueAtTime (my d_formant.get(), 3, tmin, 0);
+		double f4 = Formant_getValueAtTime (my d_formant.get(), 4, tmin, 0);
 		MelderInfo_writeLine (Melder_fixed (tmin, 6), U"   ", Melder_fixed (f1, 6), U"   ", Melder_fixed (f2, 6), U"   ", Melder_fixed (f3, 6), U"   ", Melder_fixed (f4, 6));
 	} else {
 		long i, i1, i2;
-		Sampled_getWindowSamples (my d_formant, tmin, tmax, & i1, & i2);
+		Sampled_getWindowSamples (my d_formant.get(), tmin, tmax, & i1, & i2);
 		for (i = i1; i <= i2; i ++) {
-			double t = Sampled_indexToX (my d_formant, i);
-			double f1 = Formant_getValueAtTime (my d_formant, 1, t, 0);
-			double f2 = Formant_getValueAtTime (my d_formant, 2, t, 0);
-			double f3 = Formant_getValueAtTime (my d_formant, 3, t, 0);
-			double f4 = Formant_getValueAtTime (my d_formant, 4, t, 0);
+			double t = Sampled_indexToX (my d_formant.get(), i);
+			double f1 = Formant_getValueAtTime (my d_formant.get(), 1, t, 0);
+			double f2 = Formant_getValueAtTime (my d_formant.get(), 2, t, 0);
+			double f3 = Formant_getValueAtTime (my d_formant.get(), 3, t, 0);
+			double f4 = Formant_getValueAtTime (my d_formant.get(), 4, t, 0);
 			MelderInfo_writeLine (Melder_fixed (t, 6), U"   ", Melder_fixed (f1, 6), U"   ", Melder_fixed (f2, 6), U"   ", Melder_fixed (f3, 6), U"   ", Melder_fixed (f4, 6));
 		}
 	}
@@ -1205,7 +1162,7 @@ static void menu_cb_formantListing (EDITOR_ARGS) {
 
 static void do_getFormant (TimeSoundAnalysisEditor me, int iformant) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_formant_show)
 		Melder_throw (U"No formant contour is visible.\nFirst choose \"Show formants\" from the Formant menu.");
 	if (! my d_formant) {
@@ -1213,16 +1170,16 @@ static void do_getFormant (TimeSoundAnalysisEditor me, int iformant) {
 		if (! my d_formant) Melder_throw (theMessage_Cannot_compute_formant);
 	}
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		Melder_information (Formant_getValueAtTime (my d_formant, iformant, tmin, 0),
+		Melder_information (Formant_getValueAtTime (my d_formant.get(), iformant, tmin, 0),
 			U" Hz (nearest F", iformant, U" to CURSOR)");
 	} else {
-		Melder_information (Formant_getMean (my d_formant, iformant, tmin, tmax, 0),
+		Melder_information (Formant_getMean (my d_formant.get(), iformant, tmin, tmax, 0),
 			U" Hz (mean F", iformant, U" ", TimeSoundAnalysisEditor_partString_locative (part), U")");
 	}
 }
 static void do_getBandwidth (TimeSoundAnalysisEditor me, int iformant) {
 	double tmin, tmax;
-	int part = makeQueriable (me, TRUE, & tmin, & tmax);
+	int part = makeQueriable (me, true, & tmin, & tmax);
 	if (! my p_formant_show)
 		Melder_throw (U"No formant contour is visible.\nFirst choose \"Show formants\" from the Formant menu.");
 	if (! my d_formant) {
@@ -1230,33 +1187,32 @@ static void do_getBandwidth (TimeSoundAnalysisEditor me, int iformant) {
 		if (! my d_formant) Melder_throw (theMessage_Cannot_compute_formant);
 	}
 	if (part == TimeSoundAnalysisEditor_PART_CURSOR) {
-		Melder_information (Formant_getBandwidthAtTime (my d_formant, iformant, tmin, 0),
+		Melder_information (Formant_getBandwidthAtTime (my d_formant.get(), iformant, tmin, 0),
 			U" Hz (nearest B", iformant, U" to CURSOR)");
 	} else {
-		Melder_information (Formant_getBandwidthAtTime (my d_formant, iformant, 0.5 * (tmin + tmax), 0),
+		Melder_information (Formant_getBandwidthAtTime (my d_formant.get(), iformant, 0.5 * (tmin + tmax), 0),
 			U" Hz (B", iformant, U" in centre of ", TimeSoundAnalysisEditor_partString (part), U")");
 	}
 }
-static void menu_cb_getFirstFormant (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getFormant (me, 1); }
-static void menu_cb_getFirstBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getBandwidth (me, 1); }
-static void menu_cb_getSecondFormant (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getFormant (me, 2); }
-static void menu_cb_getSecondBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getBandwidth (me, 2); }
-static void menu_cb_getThirdFormant (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getFormant (me, 3); }
-static void menu_cb_getThirdBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getBandwidth (me, 3); }
-static void menu_cb_getFourthFormant (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getFormant (me, 4); }
-static void menu_cb_getFourthBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor); do_getBandwidth (me, 4); }
-
-static void menu_cb_getFormant (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Get formant", 0)
+static void menu_cb_getFirstFormant (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getFormant (me, 1); }
+static void menu_cb_getFirstBandwidth (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getBandwidth (me, 1); }
+static void menu_cb_getSecondFormant (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getFormant (me, 2); }
+static void menu_cb_getSecondBandwidth (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getBandwidth (me, 2); }
+static void menu_cb_getThirdFormant (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getFormant (me, 3); }
+static void menu_cb_getThirdBandwidth (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getBandwidth (me, 3); }
+static void menu_cb_getFourthFormant (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getFormant (me, 4); }
+static void menu_cb_getFourthBandwidth (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	do_getBandwidth (me, 4); }
+
+static void menu_cb_getFormant (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Get formant", nullptr)
 		NATURAL (U"Formant number", U"5")
 	EDITOR_OK
 	EDITOR_DO
@@ -1264,9 +1220,8 @@ static void menu_cb_getFormant (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_getBandwidth (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Get bandwidth", 0)
+static void menu_cb_getBandwidth (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Get bandwidth", nullptr)
 		NATURAL (U"Formant number", U"5")
 	EDITOR_OK
 	EDITOR_DO
@@ -1276,15 +1231,13 @@ static void menu_cb_getBandwidth (EDITOR_ARGS) {
 
 /***** PULSE MENU *****/
 
-static void menu_cb_showPulses (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_showPulses (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	my pref_pulses_show () = my p_pulses_show = ! my p_pulses_show;
 	GuiMenuItem_check (my pulsesToggle, my p_pulses_show);   // in case we're called from a script
 	FunctionEditor_redraw (me);
 }
 
-static void menu_cb_advancedPulsesSettings (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_advancedPulsesSettings (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Advanced pulses settings", U"Advanced pulses settings...")
 		POSITIVE (U"Maximum period factor",    my default_pulses_maximumPeriodFactor    ())
 		POSITIVE (U"Maximum amplitude factor", my default_pulses_maximumAmplitudeFactor ())
@@ -1294,30 +1247,28 @@ static void menu_cb_advancedPulsesSettings (EDITOR_ARGS) {
 	EDITOR_DO
 		my pref_pulses_maximumPeriodFactor    () = my p_pulses_maximumPeriodFactor    = GET_REAL (U"Maximum period factor");
 		my pref_pulses_maximumAmplitudeFactor () = my p_pulses_maximumAmplitudeFactor = GET_REAL (U"Maximum amplitude factor");
-		forget (my d_pulses);
+		my d_pulses. reset();
 		FunctionEditor_redraw (me);
 	EDITOR_END
 }
 
-static void menu_cb_extractVisiblePulses (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_extractVisiblePulses (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my p_pulses_show)
 		Melder_throw (U"No pulses are visible.\nFirst choose \"Show pulses\" from the Pulses menu.");
 	if (! my d_pulses) {
 		TimeSoundAnalysisEditor_computePulses (me);
 		if (! my d_pulses) Melder_throw (theMessage_Cannot_compute_pulses);
 	}
-	autoPointProcess publish = Data_copy (my d_pulses);
-	Editor_broadcastPublication (me, publish.transfer());
+	autoPointProcess publish = Data_copy (my d_pulses.get());
+	Editor_broadcastPublication (me, publish.move());
 }
 
-static void menu_cb_drawVisiblePulses (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	EDITOR_FORM (U"Draw visible pulses", 0)
+static void menu_cb_drawVisiblePulses (TimeSoundAnalysisEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible pulses", nullptr)
 		my v_form_pictureWindow (cmd);
 		my v_form_pictureMargins (cmd);
 		my v_form_pictureSelection (cmd);
-		BOOLEAN (U"Garnish", 1);
+		BOOLEAN (U"Garnish", true);
 	EDITOR_OK
 		my v_ok_pictureWindow (cmd);
 		my v_ok_pictureMargins (cmd);
@@ -1335,18 +1286,17 @@ static void menu_cb_drawVisiblePulses (EDITOR_ARGS) {
 			if (! my d_pulses) Melder_throw (theMessage_Cannot_compute_pulses);
 		}
 		Editor_openPraatPicture (me);
-		PointProcess_draw (my d_pulses, my pictureGraphics, my d_startWindow, my d_endWindow,
+		PointProcess_draw (my d_pulses.get(), my pictureGraphics, my d_startWindow, my d_endWindow,
 			my p_pulses_picture_garnish);
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
-static void menu_cb_voiceReport (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
-	time_t today = time (NULL);
+static void menu_cb_voiceReport (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
+	time_t today = time (nullptr);
 	double tmin, tmax;
-	int part = makeQueriable (me, FALSE, & tmin, & tmax);
+	int part = makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_pulses_show)
 		Melder_throw (U"No pulses are visible.\nFirst choose \"Show pulses\" from the Pulses menu.");
 	if (! my d_pulses) {
@@ -1360,16 +1310,15 @@ static void menu_cb_voiceReport (EDITOR_ARGS) {
 		MelderInfo_writeLine (U"WARNING: some of the following measurements may be imprecise.\n"
 			"For more precision, go to \"Pitch settings\" and choose \"Optimize for voice analysis\".\n");
 	MelderInfo_writeLine (U"Time range of ", TimeSoundAnalysisEditor_partString (part));
-	Sound_Pitch_PointProcess_voiceReport (sound.peek(), my d_pitch, my d_pulses, tmin, tmax,
+	Sound_Pitch_PointProcess_voiceReport (sound.get(), my d_pitch.get(), my d_pulses.get(), tmin, tmax,
 		my p_pitch_floor, my p_pitch_ceiling, my p_pulses_maximumPeriodFactor, my p_pulses_maximumAmplitudeFactor, my p_pitch_silenceThreshold, my p_pitch_voicingThreshold);
 	MelderInfo_close ();
 }
 
-static void menu_cb_pulseListing (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundAnalysisEditor);
+static void menu_cb_pulseListing (TimeSoundAnalysisEditor me, EDITOR_ARGS_DIRECT) {
 	long i, i1, i2;
 	double tmin, tmax;
-	makeQueriable (me, FALSE, & tmin, & tmax);
+	makeQueriable (me, false, & tmin, & tmax);
 	if (! my p_pulses_show)
 		Melder_throw (U"No pulses are visible.\nFirst choose \"Show pulses\" from the Pulses menu.");
 	if (! my d_pulses) {
@@ -1378,8 +1327,8 @@ static void menu_cb_pulseListing (EDITOR_ARGS) {
 	}
 	MelderInfo_open ();
 	MelderInfo_writeLine (U"Time_s");
-	i1 = PointProcess_getHighIndex (my d_pulses, tmin);
-	i2 = PointProcess_getLowIndex (my d_pulses, tmax);
+	i1 = PointProcess_getHighIndex (my d_pulses.get(), tmin);
+	i2 = PointProcess_getLowIndex (my d_pulses.get(), tmax);
 	for (i = i1; i <= i2; i ++) {
 		double t = my d_pulses -> t [i];
 		MelderInfo_writeLine (Melder_fixed (t, 12));
@@ -1400,7 +1349,7 @@ static void cb_getJitter_xx (TimeSoundAnalysisEditor me, double (*PointProcess_g
 		Melder_throw (U"Make a selection first.");
 	makeQueriable
 	Melder_informationReal (PointProcess_getJitter_xx (my d_pulses, my startSelection, my endSelection,
-		minimumPeriod, maximumPeriod, my p_pulses_maximumPeriodFactor), NULL);
+		minimumPeriod, maximumPeriod, my p_pulses_maximumPeriodFactor), nullptr);
 }
 DIRECT (TimeSoundAnalysisEditor, cb_getJitter_local) cb_getJitter_xx (me, PointProcess_getJitter_local); END
 DIRECT (TimeSoundAnalysisEditor, cb_getJitter_local_absolute) cb_getJitter_xx (me, PointProcess_getJitter_local_absolute); END
@@ -1421,7 +1370,7 @@ static void cb_getShimmer_xx (TimeSoundAnalysisEditor me, double (*PointProcess_
 	makeQueriable
 	autoSound sound = extractSound (me, my startSelection, my endSelection);
 	Melder_informationReal (PointProcess_Sound_getShimmer_xx (my d_pulses, sound, my startSelection, my endSelection,
-		minimumPeriod, maximumPeriod, my p_pulses_maximumAmplitudeFactor), NULL);
+		minimumPeriod, maximumPeriod, my p_pulses_maximumAmplitudeFactor), nullptr);
 }
 DIRECT (TimeSoundAnalysisEditor, cb_getShimmer_local) cb_getShimmer_xx (me, PointProcess_Sound_getShimmer_local); END
 DIRECT (TimeSoundAnalysisEditor, cb_getShimmer_local_dB) cb_getShimmer_xx (me, PointProcess_Sound_getShimmer_local_dB); END
@@ -1451,7 +1400,7 @@ void structTimeSoundAnalysisEditor :: v_createMenuItems_query (EditorMenu menu)
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_query_log (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- query log --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- query log --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Log settings...", 0, menu_cb_logSettings);
 	EditorMenu_addCommand (menu, U"Delete log file 1", 0, menu_cb_deleteLogFile1);
 	EditorMenu_addCommand (menu, U"Delete log file 2", 0, menu_cb_deleteLogFile2);
@@ -1470,15 +1419,15 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 			GuiMenu_CHECKBUTTON | (pref_spectrogram_show () ? GuiMenu_TOGGLE_ON : 0), menu_cb_showSpectrogram);
 		EditorMenu_addCommand (menu, U"Spectrogram settings...", 0, menu_cb_spectrogramSettings);
 		EditorMenu_addCommand (menu, U"Advanced spectrogram settings...", 0, menu_cb_advancedSpectrogramSettings);
-		EditorMenu_addCommand (menu, U"-- spectrum query --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- spectrum query --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Query:", GuiMenu_INSENSITIVE, menu_cb_getFrequency /* dummy */);
 		EditorMenu_addCommand (menu, U"Get frequency at frequency cursor", 0, menu_cb_getFrequency);
 		EditorMenu_addCommand (menu, U"Get spectral power at cursor cross", GuiMenu_F7, menu_cb_getSpectralPowerAtCursorCross);
-		EditorMenu_addCommand (menu, U"-- spectrum select --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- spectrum select --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Select:", GuiMenu_INSENSITIVE, menu_cb_moveFrequencyCursorTo/* dummy */);
 		EditorMenu_addCommand (menu, U"Move frequency cursor to...", 0, menu_cb_moveFrequencyCursorTo);
 		v_createMenuItems_spectrum_picture (menu);
-		EditorMenu_addCommand (menu, U"-- spectrum extract --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- spectrum extract --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Extract to objects window:", GuiMenu_INSENSITIVE, menu_cb_extractVisibleSpectrogram /* dummy */);
 		EditorMenu_addCommand (menu, U"Extract visible spectrogram", 0, menu_cb_extractVisibleSpectrogram);
 		EditorMenu_addCommand (menu, U"View spectral slice", 'L', menu_cb_viewSpectralSlice);
@@ -1490,18 +1439,18 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 			GuiMenu_CHECKBUTTON | (pref_pitch_show () ? GuiMenu_TOGGLE_ON : 0), menu_cb_showPitch);
 		EditorMenu_addCommand (menu, U"Pitch settings...", 0, menu_cb_pitchSettings);
 		EditorMenu_addCommand (menu, U"Advanced pitch settings...", 0, menu_cb_advancedPitchSettings);
-		EditorMenu_addCommand (menu, U"-- pitch query --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- pitch query --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Query:", GuiMenu_INSENSITIVE, menu_cb_getFrequency /* dummy */);
 		EditorMenu_addCommand (menu, U"Pitch listing", 0, menu_cb_pitchListing);
 		EditorMenu_addCommand (menu, U"Get pitch", GuiMenu_F5, menu_cb_getPitch);
 		EditorMenu_addCommand (menu, U"Get minimum pitch", GuiMenu_F5 + GuiMenu_COMMAND, menu_cb_getMinimumPitch);
 		EditorMenu_addCommand (menu, U"Get maximum pitch", GuiMenu_F5 + GuiMenu_SHIFT, menu_cb_getMaximumPitch);
-		EditorMenu_addCommand (menu, U"-- pitch select --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- pitch select --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Select:", GuiMenu_INSENSITIVE, menu_cb_moveCursorToMinimumPitch /* dummy */);
 		EditorMenu_addCommand (menu, U"Move cursor to minimum pitch", GuiMenu_COMMAND + GuiMenu_SHIFT + 'L', menu_cb_moveCursorToMinimumPitch);
 		EditorMenu_addCommand (menu, U"Move cursor to maximum pitch", GuiMenu_COMMAND + GuiMenu_SHIFT + 'H', menu_cb_moveCursorToMaximumPitch);
 		v_createMenuItems_pitch_picture (menu);
-		EditorMenu_addCommand (menu, U"-- pitch extract --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- pitch extract --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Extract to objects window:", GuiMenu_INSENSITIVE, menu_cb_extractVisiblePitchContour /* dummy */);
 		EditorMenu_addCommand (menu, U"Extract visible pitch contour", 0, menu_cb_extractVisiblePitchContour);
 	}
@@ -1511,14 +1460,14 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 		intensityToggle = EditorMenu_addCommand (menu, U"Show intensity",
 			GuiMenu_CHECKBUTTON | (pref_intensity_show () ? GuiMenu_TOGGLE_ON : 0), menu_cb_showIntensity);
 		EditorMenu_addCommand (menu, U"Intensity settings...", 0, menu_cb_intensitySettings);
-		EditorMenu_addCommand (menu, U"-- intensity query --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- intensity query --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Query:", GuiMenu_INSENSITIVE, menu_cb_getFrequency /* dummy */);
 		EditorMenu_addCommand (menu, U"Intensity listing", 0, menu_cb_intensityListing);
 		EditorMenu_addCommand (menu, U"Get intensity", GuiMenu_F8, menu_cb_getIntensity);
 		EditorMenu_addCommand (menu, U"Get minimum intensity", GuiMenu_F8 + GuiMenu_COMMAND, menu_cb_getMinimumIntensity);
 		EditorMenu_addCommand (menu, U"Get maximum intensity", GuiMenu_F8 + GuiMenu_SHIFT, menu_cb_getMaximumIntensity);
 		v_createMenuItems_intensity_picture (menu);
-		EditorMenu_addCommand (menu, U"-- intensity extract --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- intensity extract --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Extract to objects window:", GuiMenu_INSENSITIVE, menu_cb_extractVisibleIntensityContour /* dummy */);
 		EditorMenu_addCommand (menu, U"Extract visible intensity contour", 0, menu_cb_extractVisibleIntensityContour);
 	}
@@ -1529,7 +1478,7 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 			GuiMenu_CHECKBUTTON | (pref_formant_show () ? GuiMenu_TOGGLE_ON : 0), menu_cb_showFormants);
 		EditorMenu_addCommand (menu, U"Formant settings...", 0, menu_cb_formantSettings);
 		EditorMenu_addCommand (menu, U"Advanced formant settings...", 0, menu_cb_advancedFormantSettings);
-		EditorMenu_addCommand (menu, U"-- formant query --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- formant query --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Query:", GuiMenu_INSENSITIVE, menu_cb_getFrequency /* dummy */);
 		EditorMenu_addCommand (menu, U"Formant listing", 0, menu_cb_formantListing);
 		EditorMenu_addCommand (menu, U"Get first formant", GuiMenu_F1, menu_cb_getFirstFormant);
@@ -1543,7 +1492,7 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 		EditorMenu_addCommand (menu, U"Get formant...", 0, menu_cb_getFormant);
 		EditorMenu_addCommand (menu, U"Get bandwidth...", 0, menu_cb_getBandwidth);
 		v_createMenuItems_formant_picture (menu);
-		EditorMenu_addCommand (menu, U"-- formant extract --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- formant extract --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Extract to objects window:", GuiMenu_INSENSITIVE, menu_cb_extractVisibleFormantContour /* dummy */);
 		EditorMenu_addCommand (menu, U"Extract visible formant contour", 0, menu_cb_extractVisibleFormantContour);
 	}
@@ -1553,7 +1502,7 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 		pulsesToggle = EditorMenu_addCommand (menu, U"Show pulses",
 			GuiMenu_CHECKBUTTON | (pref_pulses_show () ? GuiMenu_TOGGLE_ON : 0), menu_cb_showPulses);
 		EditorMenu_addCommand (menu, U"Advanced pulses settings...", 0, menu_cb_advancedPulsesSettings);
-		EditorMenu_addCommand (menu, U"-- pulses query --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- pulses query --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Query:", GuiMenu_INSENSITIVE, menu_cb_getFrequency /* dummy */);
 		EditorMenu_addCommand (menu, U"Voice report", 0, menu_cb_voiceReport);
 		EditorMenu_addCommand (menu, U"Pulse listing", 0, menu_cb_pulseListing);
@@ -1571,38 +1520,38 @@ void structTimeSoundAnalysisEditor :: v_createMenus_analysis () {
 		EditorMenu_addCommand (menu, U"Get shimmer (dda)", 0, cb_getShimmer_dda);
 		*/
 		v_createMenuItems_pulses_picture (menu);
-		EditorMenu_addCommand (menu, U"-- pulses extract --", 0, NULL);
+		EditorMenu_addCommand (menu, U"-- pulses extract --", 0, nullptr);
 		EditorMenu_addCommand (menu, U"Extract to objects window:", GuiMenu_INSENSITIVE, menu_cb_extractVisiblePulses /* dummy */);
 		EditorMenu_addCommand (menu, U"Extract visible pulses", 0, menu_cb_extractVisiblePulses);
 	}
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_spectrum_picture (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- spectrum draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- spectrum draw --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Draw to picture window:", GuiMenu_INSENSITIVE, menu_cb_paintVisibleSpectrogram /* dummy */);
 	EditorMenu_addCommand (menu, U"Paint visible spectrogram...", 0, menu_cb_paintVisibleSpectrogram);
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_pitch_picture (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- pitch draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- pitch draw --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Draw to picture window:", GuiMenu_INSENSITIVE, menu_cb_drawVisiblePitchContour /* dummy */);
 	EditorMenu_addCommand (menu, U"Draw visible pitch contour...", 0, menu_cb_drawVisiblePitchContour);
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_intensity_picture (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- intensity draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- intensity draw --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Draw to picture window:", GuiMenu_INSENSITIVE, menu_cb_drawVisibleIntensityContour /* dummy */);
 	EditorMenu_addCommand (menu, U"Draw visible intensity contour...", 0, menu_cb_drawVisibleIntensityContour);
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_formant_picture (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- formant draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- formant draw --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Draw to picture window:", GuiMenu_INSENSITIVE, menu_cb_drawVisibleFormantContour /* dummy */);
 	EditorMenu_addCommand (menu, U"Draw visible formant contour...", 0, menu_cb_drawVisibleFormantContour);
 }
 
 void structTimeSoundAnalysisEditor :: v_createMenuItems_pulses_picture (EditorMenu menu) {
-	EditorMenu_addCommand (menu, U"-- pulses draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- pulses draw --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Draw to picture window:", GuiMenu_INSENSITIVE, menu_cb_drawVisiblePulses /* dummy */);
 	EditorMenu_addCommand (menu, U"Draw visible pulses...", 0, menu_cb_drawVisiblePulses);
 }
@@ -1610,13 +1559,13 @@ void structTimeSoundAnalysisEditor :: v_createMenuItems_pulses_picture (EditorMe
 void TimeSoundAnalysisEditor_computeSpectrogram (TimeSoundAnalysisEditor me) {
 	autoMelderProgressOff progress;
 	if (my p_spectrogram_show && my d_endWindow - my d_startWindow <= my p_longestAnalysis &&
-		(my d_spectrogram == NULL || my d_spectrogram -> xmin != my d_startWindow || my d_spectrogram -> xmax != my d_endWindow))
+		(! my d_spectrogram || my d_spectrogram -> xmin != my d_startWindow || my d_spectrogram -> xmax != my d_endWindow))
 	{
 		double margin = my p_spectrogram_windowShape == kSound_to_Spectrogram_windowShape_GAUSSIAN ? my p_spectrogram_windowLength : 0.5 * my p_spectrogram_windowLength;
-		forget (my d_spectrogram);
+		my d_spectrogram.reset();
 		try {
 			autoSound sound = extractSound (me, my d_startWindow - margin, my d_endWindow + margin);
-			my d_spectrogram = Sound_to_Spectrogram (sound.peek(), my p_spectrogram_windowLength,
+			my d_spectrogram = Sound_to_Spectrogram (sound.get(), my p_spectrogram_windowLength,
 				my p_spectrogram_viewTo, (my d_endWindow - my d_startWindow) / my p_spectrogram_timeSteps,
 				my p_spectrogram_viewTo / my p_spectrogram_frequencySteps, my p_spectrogram_windowShape, 8.0, 8.0);
 			my d_spectrogram -> xmin = my d_startWindow;
@@ -1629,14 +1578,14 @@ void TimeSoundAnalysisEditor_computeSpectrogram (TimeSoundAnalysisEditor me) {
 
 static void computePitch_inside (TimeSoundAnalysisEditor me) {
 	double margin = my p_pitch_veryAccurate ? 3.0 / my p_pitch_floor : 1.5 / my p_pitch_floor;
-	forget (my d_pitch);
+	my d_pitch. reset();
 	try {
 		autoSound sound = extractSound (me, my d_startWindow - margin, my d_endWindow + margin);
 		double pitchTimeStep =
 			my p_timeStepStrategy == kTimeSoundAnalysisEditor_timeStepStrategy_FIXED ? my p_fixedTimeStep :
 			my p_timeStepStrategy == kTimeSoundAnalysisEditor_timeStepStrategy_VIEW_DEPENDENT ? (my d_endWindow - my d_startWindow) / my p_numberOfTimeStepsPerView :
 			0.0;   // the default: determined by pitch floor
-		my d_pitch = Sound_to_Pitch_any (sound.peek(), pitchTimeStep,
+		my d_pitch = Sound_to_Pitch_any (sound.get(), pitchTimeStep,
 			my p_pitch_floor,
 			my p_pitch_method == kTimeSoundAnalysisEditor_pitch_analysisMethod_AUTOCORRELATION ? 3.0 : 1.0,
 			my p_pitch_maximumNumberOfCandidates,
@@ -1653,7 +1602,7 @@ static void computePitch_inside (TimeSoundAnalysisEditor me) {
 void TimeSoundAnalysisEditor_computePitch (TimeSoundAnalysisEditor me) {
 	autoMelderProgressOff progress;
 	if (my p_pitch_show && my d_endWindow - my d_startWindow <= my p_longestAnalysis &&
-		(my d_pitch == NULL || my d_pitch -> xmin != my d_startWindow || my d_pitch -> xmax != my d_endWindow))
+		(! my d_pitch || my d_pitch -> xmin != my d_startWindow || my d_pitch -> xmax != my d_endWindow))
 	{
 		computePitch_inside (me);
 	}
@@ -1662,13 +1611,13 @@ void TimeSoundAnalysisEditor_computePitch (TimeSoundAnalysisEditor me) {
 void TimeSoundAnalysisEditor_computeIntensity (TimeSoundAnalysisEditor me) {
 	autoMelderProgressOff progress;
 	if (my p_intensity_show && my d_endWindow - my d_startWindow <= my p_longestAnalysis &&
-		(my d_intensity == NULL || my d_intensity -> xmin != my d_startWindow || my d_intensity -> xmax != my d_endWindow))
+		(! my d_intensity || my d_intensity -> xmin != my d_startWindow || my d_intensity -> xmax != my d_endWindow))
 	{
 		double margin = 3.2 / my p_pitch_floor;
-		forget (my d_intensity);
+		my d_intensity. reset();
 		try {
 			autoSound sound = extractSound (me, my d_startWindow - margin, my d_endWindow + margin);
-			my d_intensity = Sound_to_Intensity (sound.peek(), my p_pitch_floor,
+			my d_intensity = Sound_to_Intensity (sound.get(), my p_pitch_floor,
 				my d_endWindow - my d_startWindow > my p_longestAnalysis ? (my d_endWindow - my d_startWindow) / 100 : 0.0,
 				my p_intensity_subtractMeanPressure);
 			my d_intensity -> xmin = my d_startWindow;
@@ -1682,10 +1631,10 @@ void TimeSoundAnalysisEditor_computeIntensity (TimeSoundAnalysisEditor me) {
 void TimeSoundAnalysisEditor_computeFormants (TimeSoundAnalysisEditor me) {
 	autoMelderProgressOff progress;
 	if (my p_formant_show && my d_endWindow - my d_startWindow <= my p_longestAnalysis &&
-		(my d_formant == NULL || my d_formant -> xmin != my d_startWindow || my d_formant -> xmax != my d_endWindow))
+		(! my d_formant || my d_formant -> xmin != my d_startWindow || my d_formant -> xmax != my d_endWindow))
 	{
 		double margin = my p_formant_windowLength;
-		forget (my d_formant);
+		my d_formant. reset();
 		try {
 			autoSound sound =
 				my d_endWindow - my d_startWindow > my p_longestAnalysis ?
@@ -1697,7 +1646,7 @@ void TimeSoundAnalysisEditor_computeFormants (TimeSoundAnalysisEditor me) {
 				my p_timeStepStrategy == kTimeSoundAnalysisEditor_timeStepStrategy_FIXED ? my p_fixedTimeStep :
 				my p_timeStepStrategy == kTimeSoundAnalysisEditor_timeStepStrategy_VIEW_DEPENDENT ? (my d_endWindow - my d_startWindow) / my p_numberOfTimeStepsPerView :
 				0.0;   // the default: determined by analysis window length
-			my d_formant = Sound_to_Formant_any (sound.peek(), formantTimeStep,
+			my d_formant = Sound_to_Formant_any (sound.get(), formantTimeStep,
 				lround (my p_formant_numberOfFormants * 2), my p_formant_maximumFormant,
 				my p_formant_windowLength, my p_formant_method, my p_formant_preemphasisFrom, 50.0);
 			my d_formant -> xmin = my d_startWindow;
@@ -1711,16 +1660,16 @@ void TimeSoundAnalysisEditor_computeFormants (TimeSoundAnalysisEditor me) {
 void TimeSoundAnalysisEditor_computePulses (TimeSoundAnalysisEditor me) {
 	autoMelderProgressOff progress;
 	if (my p_pulses_show && my d_endWindow - my d_startWindow <= my p_longestAnalysis &&
-		(my d_pulses == NULL || my d_pulses -> xmin != my d_startWindow || my d_pulses -> xmax != my d_endWindow))
+		(! my d_pulses || my d_pulses -> xmin != my d_startWindow || my d_pulses -> xmax != my d_endWindow))
 	{
-		forget (my d_pulses);
-		if (my d_pitch == NULL || my d_pitch -> xmin != my d_startWindow || my d_pitch -> xmax != my d_endWindow) {
+		my d_pulses. reset();
+		if (! my d_pitch || my d_pitch -> xmin != my d_startWindow || my d_pitch -> xmax != my d_endWindow) {
 			computePitch_inside (me);
 		}
-		if (my d_pitch != NULL) {
+		if (my d_pitch) {
 			try {
 				autoSound sound = extractSound (me, my d_startWindow, my d_endWindow);
-				my d_pulses = Sound_Pitch_to_PointProcess_cc (sound.peek(), my d_pitch);
+				my d_pulses = Sound_Pitch_to_PointProcess_cc (sound.get(), my d_pitch.get());
 			} catch (MelderError) {
 				Melder_clearError ();
 			}
@@ -1731,7 +1680,7 @@ void TimeSoundAnalysisEditor_computePulses (TimeSoundAnalysisEditor me) {
 static void TimeSoundAnalysisEditor_v_draw_analysis (TimeSoundAnalysisEditor me) {
 	/*
 	 * d_pitch may not exist yet (if shown at all, it may be going to be created in TimeSoundAnalysisEditor_computePitch (),
-	 * and even if if that fails we should see the pitch settings. So we use a dummy object.
+	 * and even if that fails the user should see what the pitch settings are). So we use a dummy object.
 	 */
 	double pitchFloor_hidden = Function_convertStandardToSpecialUnit (Thing_dummyObject (Pitch), my p_pitch_floor, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
 	double pitchCeiling_hidden = Function_convertStandardToSpecialUnit (Thing_dummyObject (Pitch), my p_pitch_ceiling, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
@@ -1742,29 +1691,29 @@ static void TimeSoundAnalysisEditor_v_draw_analysis (TimeSoundAnalysisEditor me)
 	double pitchViewFrom_hidden = Function_isUnitLogarithmic (Thing_dummyObject (Pitch), Pitch_LEVEL_FREQUENCY, my p_pitch_unit) ? log10 (pitchViewFrom_overt) : pitchViewFrom_overt;
 	double pitchViewTo_hidden = Function_isUnitLogarithmic (Thing_dummyObject (Pitch), Pitch_LEVEL_FREQUENCY, my p_pitch_unit) ? log10 (pitchViewTo_overt) : pitchViewTo_overt;
 
-	Graphics_setWindow (my d_graphics, 0.0, 1.0, 0.0, 1.0);
-	Graphics_setColour (my d_graphics, Graphics_WHITE);
-	Graphics_fillRectangle (my d_graphics, 0.0, 1.0, 0.0, 1.0);
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
-	Graphics_rectangle (my d_graphics, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+	Graphics_rectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 
 	if (my d_endWindow - my d_startWindow > my p_longestAnalysis) {
-		Graphics_setFont (my d_graphics, kGraphics_font_HELVETICA);
-		Graphics_setFontSize (my d_graphics, 10);
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (my d_graphics, 0.5, 0.67,   U"(To see the analyses, zoom in to at most ", Melder_half (my p_longestAnalysis), U" seconds,");
-		Graphics_text (my d_graphics, 0.5, 0.33, U"or raise the \"longest analysis\" setting with \"Show analyses\" in the View menu.)");
-		Graphics_setFontSize (my d_graphics, 12);
+		Graphics_setFont (my d_graphics.get(), kGraphics_font_HELVETICA);
+		Graphics_setFontSize (my d_graphics.get(), 10);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), 0.5, 0.67,   U"(To see the analyses, zoom in to at most ", Melder_half (my p_longestAnalysis), U" seconds,");
+		Graphics_text (my d_graphics.get(), 0.5, 0.33, U"or raise the \"longest analysis\" setting with \"Show analyses\" in the View menu.)");
+		Graphics_setFontSize (my d_graphics.get(), 12);
 		return;
 	}
 	TimeSoundAnalysisEditor_computeSpectrogram (me);
-	if (my p_spectrogram_show && my d_spectrogram != NULL) {
-		Spectrogram_paintInside (my d_spectrogram, my d_graphics, my d_startWindow, my d_endWindow,
+	if (my p_spectrogram_show && my d_spectrogram) {
+		Spectrogram_paintInside (my d_spectrogram.get(), my d_graphics.get(), my d_startWindow, my d_endWindow,
 			my p_spectrogram_viewFrom, my p_spectrogram_viewTo, my p_spectrogram_maximum, my p_spectrogram_autoscaling,
 			my p_spectrogram_dynamicRange, my p_spectrogram_preemphasis, my p_spectrogram_dynamicCompression);
 	}
 	TimeSoundAnalysisEditor_computePitch (me);
-	if (my p_pitch_show && my d_pitch != NULL) {
+	if (my p_pitch_show && my d_pitch) {
 		double periodsPerAnalysisWindow = my p_pitch_method == kTimeSoundAnalysisEditor_pitch_analysisMethod_AUTOCORRELATION ? 3.0 : 1.0;
 		double greatestNonUndersamplingTimeStep = 0.5 * periodsPerAnalysisWindow / my p_pitch_floor;
 		double defaultTimeStep = 0.5 * greatestNonUndersamplingTimeStep;
@@ -1774,92 +1723,91 @@ static void TimeSoundAnalysisEditor_v_draw_analysis (TimeSoundAnalysisEditor me)
 			defaultTimeStep;
 		int undersampled = timeStep > greatestNonUndersamplingTimeStep;
 		long numberOfVisiblePitchPoints = (long) ((my d_endWindow - my d_startWindow) / timeStep);
-		Graphics_setColour (my d_graphics, Graphics_CYAN);
-		Graphics_setLineWidth (my d_graphics, 3.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+		Graphics_setLineWidth (my d_graphics.get(), 3.0);
 		if ((my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_AUTOMATIC && (undersampled || numberOfVisiblePitchPoints < 101)) ||
 		    my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_SPECKLE)
 		{
-			Pitch_drawInside (my d_pitch, my d_graphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, 2, my p_pitch_unit);
+			Pitch_drawInside (my d_pitch.get(), my d_graphics.get(), my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, 2, my p_pitch_unit);
 		}
 		if ((my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_AUTOMATIC && ! undersampled) ||
 		    my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_CURVE)
 		{
-			Pitch_drawInside (my d_pitch, my d_graphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, FALSE, my p_pitch_unit);
+			Pitch_drawInside (my d_pitch.get(), my d_graphics.get(), my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, false, my p_pitch_unit);
 		}
-		Graphics_setColour (my d_graphics, Graphics_BLUE);
-		Graphics_setLineWidth (my d_graphics, 1.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
+		Graphics_setLineWidth (my d_graphics.get(), 1.0);
 		if ((my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_AUTOMATIC && (undersampled || numberOfVisiblePitchPoints < 101)) ||
 		    my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_SPECKLE)
 		{
-			Pitch_drawInside (my d_pitch, my d_graphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, 1, my p_pitch_unit);
+			Pitch_drawInside (my d_pitch.get(), my d_graphics.get(), my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, 1, my p_pitch_unit);
 		}
 		if ((my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_AUTOMATIC && ! undersampled) ||
 		    my p_pitch_drawingMethod == kTimeSoundAnalysisEditor_pitch_drawingMethod_CURVE)
 		{
-			Pitch_drawInside (my d_pitch, my d_graphics, my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, FALSE, my p_pitch_unit);
+			Pitch_drawInside (my d_pitch.get(), my d_graphics.get(), my d_startWindow, my d_endWindow, pitchViewFrom_overt, pitchViewTo_overt, false, my p_pitch_unit);
 		}
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 	}
 	TimeSoundAnalysisEditor_computeIntensity (me);
-	if (my p_intensity_show && my d_intensity != NULL) {
-		Graphics_setColour (my d_graphics, my p_spectrogram_show ? Graphics_YELLOW : Graphics_LIME);
-		Graphics_setLineWidth (my d_graphics, my p_spectrogram_show ? 1.0 : 3.0);
-		Intensity_drawInside (my d_intensity, my d_graphics, my d_startWindow, my d_endWindow,
+	if (my p_intensity_show && my d_intensity) {
+		Graphics_setColour (my d_graphics.get(), my p_spectrogram_show ? Graphics_YELLOW : Graphics_LIME);
+		Graphics_setLineWidth (my d_graphics.get(), my p_spectrogram_show ? 1.0 : 3.0);
+		Intensity_drawInside (my d_intensity.get(), my d_graphics.get(), my d_startWindow, my d_endWindow,
 			my p_intensity_viewFrom, my p_intensity_viewTo);
-		Graphics_setLineWidth (my d_graphics, 1.0);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
+		Graphics_setLineWidth (my d_graphics.get(), 1.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 	}
 	TimeSoundAnalysisEditor_computeFormants (me);
-	if (my p_formant_show && my d_formant != NULL) {
-		Graphics_setColour (my d_graphics, Graphics_RED);
-		Graphics_setSpeckleSize (my d_graphics, my p_formant_dotSize);
-		Formant_drawSpeckles_inside (my d_formant, my d_graphics, my d_startWindow, my d_endWindow,
+	if (my p_formant_show && my d_formant) {
+		Graphics_setColour (my d_graphics.get(), Graphics_RED);
+		Graphics_setSpeckleSize (my d_graphics.get(), my p_formant_dotSize);
+		Formant_drawSpeckles_inside (my d_formant.get(), my d_graphics.get(), my d_startWindow, my d_endWindow,
 			my p_spectrogram_viewFrom, my p_spectrogram_viewTo, my p_formant_dynamicRange);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 	}
 	/*
 	 * Draw vertical scales.
 	 */
 	if (my p_pitch_show) {
 		double pitchCursor_overt = NUMundefined, pitchCursor_hidden = NUMundefined;
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, pitchViewFrom_hidden, pitchViewTo_hidden);
-		Graphics_setColour (my d_graphics, Graphics_BLUE);
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, pitchViewFrom_hidden, pitchViewTo_hidden);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLUE);
 		if (my d_pitch) {
 			if (my d_startSelection == my d_endSelection)
-				pitchCursor_hidden = Pitch_getValueAtTime (my d_pitch, my d_startSelection, my p_pitch_unit, 1);
+				pitchCursor_hidden = Pitch_getValueAtTime (my d_pitch.get(), my d_startSelection, my p_pitch_unit, 1);
 			else
-				pitchCursor_hidden = Pitch_getMean (my d_pitch, my d_startSelection, my d_endSelection, my p_pitch_unit);
-			pitchCursor_overt = Function_convertToNonlogarithmic (my d_pitch, pitchCursor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
+				pitchCursor_hidden = Pitch_getMean (my d_pitch.get(), my d_startSelection, my d_endSelection, my p_pitch_unit);
+			pitchCursor_overt = Function_convertToNonlogarithmic (my d_pitch.get(), pitchCursor_hidden, Pitch_LEVEL_FREQUENCY, my p_pitch_unit);
 			if (NUMdefined (pitchCursor_hidden)) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_HALF);
-				Graphics_text (my d_graphics, my d_endWindow, pitchCursor_hidden,
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_HALF);
+				Graphics_text (my d_graphics.get(), my d_endWindow, pitchCursor_hidden,
 					Melder_float (Melder_half (pitchCursor_overt)), U" ",
-					Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
+					Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
 			}
-			if (! NUMdefined (pitchCursor_hidden) || Graphics_dyWCtoMM (my d_graphics, pitchCursor_hidden - pitchViewFrom_hidden) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_BOTTOM);
-				Graphics_text (my d_graphics, my d_endWindow, pitchViewFrom_hidden - Graphics_dyMMtoWC (my d_graphics, 0.5),
+			if (! NUMdefined (pitchCursor_hidden) || Graphics_dyWCtoMM (my d_graphics.get(), pitchCursor_hidden - pitchViewFrom_hidden) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+				Graphics_text (my d_graphics.get(), my d_endWindow, pitchViewFrom_hidden - Graphics_dyMMtoWC (my d_graphics.get(), 0.5),
 					Melder_float (Melder_half (pitchViewFrom_overt)), U" ",
-					Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
+					Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
 			}
-			if (! NUMdefined (pitchCursor_hidden) || Graphics_dyWCtoMM (my d_graphics, pitchViewTo_hidden - pitchCursor_hidden) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_TOP);
-				Graphics_text (my d_graphics, my d_endWindow, pitchViewTo_hidden,
+			if (! NUMdefined (pitchCursor_hidden) || Graphics_dyWCtoMM (my d_graphics.get(), pitchViewTo_hidden - pitchCursor_hidden) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_TOP);
+				Graphics_text (my d_graphics.get(), my d_endWindow, pitchViewTo_hidden,
 					Melder_float (Melder_half (pitchViewTo_overt)), U" ",
-					Function_getUnitText (my d_pitch, Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
+					Function_getUnitText (my d_pitch.get(), Pitch_LEVEL_FREQUENCY, my p_pitch_unit, Function_UNIT_TEXT_SHORT | Function_UNIT_TEXT_GRAPHICAL));
 			}
 		} else {
-			Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-			Graphics_setFontSize (my d_graphics, 10);
-			Graphics_text (my d_graphics, 0.5 * (my d_startWindow + my d_endWindow), 0.5 * (pitchViewFrom_hidden + pitchViewTo_hidden),
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+			Graphics_setFontSize (my d_graphics.get(), 10);
+			Graphics_text (my d_graphics.get(), 0.5 * (my d_startWindow + my d_endWindow), 0.5 * (pitchViewFrom_hidden + pitchViewTo_hidden),
 				U"(Cannot show pitch contour. Zoom out or change bottom of pitch range in pitch settings.)");
-			Graphics_setFontSize (my d_graphics, 12);
+			Graphics_setFontSize (my d_graphics.get(), 12);
 		}
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 	}
 	if (my p_intensity_show) {
 		double intensityCursor = NUMundefined;
-		int intensityCursorVisible;
 		Graphics_Colour textColour;
 		int alignment;
 		double y;
@@ -1867,64 +1815,65 @@ static void TimeSoundAnalysisEditor_v_draw_analysis (TimeSoundAnalysisEditor me)
 		else if (! my p_spectrogram_show && ! my p_formant_show) textColour = Graphics_GREEN, alignment = Graphics_RIGHT, y = my d_startWindow;
 		else textColour = my p_spectrogram_show ? Graphics_LIME : Graphics_GREEN, alignment = Graphics_RIGHT, y = my d_endWindow;
 		if (my p_intensity_viewTo > my p_intensity_viewFrom) {
-			Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_intensity_viewFrom, my p_intensity_viewTo);
+			Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_intensity_viewFrom, my p_intensity_viewTo);
 			if (my d_intensity) {
 				if (my d_startSelection == my d_endSelection) {
-					intensityCursor = Vector_getValueAtX (my d_intensity, my d_startSelection, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
+					intensityCursor = Vector_getValueAtX (my d_intensity.get(), my d_startSelection, Vector_CHANNEL_1, Vector_VALUE_INTERPOLATION_LINEAR);
 				} else {
-					intensityCursor = Intensity_getAverage (my d_intensity, my d_startSelection, my d_endSelection, my p_intensity_averagingMethod);
+					intensityCursor = Intensity_getAverage (my d_intensity.get(), my d_startSelection, my d_endSelection, my p_intensity_averagingMethod);
 				}
 			}
-			Graphics_setColour (my d_graphics, textColour);
-			intensityCursorVisible = NUMdefined (intensityCursor) && intensityCursor > my p_intensity_viewFrom && intensityCursor < my p_intensity_viewTo;
+			Graphics_setColour (my d_graphics.get(), textColour);
+			bool intensityCursorVisible = NUMdefined (intensityCursor) &&
+				intensityCursor > my p_intensity_viewFrom && intensityCursor < my p_intensity_viewTo;
 			if (intensityCursorVisible) {
 				static const char32 *methodString [] = { U" (.5)", U" (μE)", U" (μS)", U" (μ)" };
-				Graphics_setTextAlignment (my d_graphics, alignment, Graphics_HALF);
-				Graphics_text (my d_graphics, y, intensityCursor,
+				Graphics_setTextAlignment (my d_graphics.get(), alignment, Graphics_HALF);
+				Graphics_text (my d_graphics.get(), y, intensityCursor,
 					Melder_float (Melder_half (intensityCursor)), U" dB",
 					my d_startSelection == my d_endSelection ? U"" : methodString [my p_intensity_averagingMethod]);
 			}
-			if (! intensityCursorVisible || Graphics_dyWCtoMM (my d_graphics, intensityCursor - my p_intensity_viewFrom) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, alignment, Graphics_BOTTOM);
-				Graphics_text (my d_graphics, y, my p_intensity_viewFrom - Graphics_dyMMtoWC (my d_graphics, 0.5),
+			if (! intensityCursorVisible || Graphics_dyWCtoMM (my d_graphics.get(), intensityCursor - my p_intensity_viewFrom) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), alignment, Graphics_BOTTOM);
+				Graphics_text (my d_graphics.get(), y, my p_intensity_viewFrom - Graphics_dyMMtoWC (my d_graphics.get(), 0.5),
 					Melder_float (Melder_half (my p_intensity_viewFrom)), U" dB");
 			}
-			if (! intensityCursorVisible || Graphics_dyWCtoMM (my d_graphics, my p_intensity_viewTo - intensityCursor) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, alignment, Graphics_TOP);
-				Graphics_text (my d_graphics, y, my p_intensity_viewTo,
+			if (! intensityCursorVisible || Graphics_dyWCtoMM (my d_graphics.get(), my p_intensity_viewTo - intensityCursor) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), alignment, Graphics_TOP);
+				Graphics_text (my d_graphics.get(), y, my p_intensity_viewTo,
 					Melder_float (Melder_half (my p_intensity_viewTo)), U" dB");
 			}
-			Graphics_setColour (my d_graphics, Graphics_BLACK);
+			Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 		}
 	}
 	if (my p_spectrogram_show || my p_formant_show) {
-		int frequencyCursorVisible = my d_spectrogram_cursor > my p_spectrogram_viewFrom && my d_spectrogram_cursor < my p_spectrogram_viewTo;
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo);
+		bool frequencyCursorVisible = my d_spectrogram_cursor > my p_spectrogram_viewFrom && my d_spectrogram_cursor < my p_spectrogram_viewTo;
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo);
 		/*
 		 * Range marks.
 		 */
-		Graphics_setLineType (my d_graphics, Graphics_DRAWN);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
-		if (! frequencyCursorVisible || Graphics_dyWCtoMM (my d_graphics, my d_spectrogram_cursor - my p_spectrogram_viewFrom) > 5.0) {
-			Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_BOTTOM);
-			Graphics_text (my d_graphics, my d_startWindow, my p_spectrogram_viewFrom - Graphics_dyMMtoWC (my d_graphics, 0.5),
+		Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+		if (! frequencyCursorVisible || Graphics_dyWCtoMM (my d_graphics.get(), my d_spectrogram_cursor - my p_spectrogram_viewFrom) > 5.0) {
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_BOTTOM);
+			Graphics_text (my d_graphics.get(), my d_startWindow, my p_spectrogram_viewFrom - Graphics_dyMMtoWC (my d_graphics.get(), 0.5),
 				Melder_float (Melder_half (my p_spectrogram_viewFrom)), U" Hz");
 		}
-		if (! frequencyCursorVisible || Graphics_dyWCtoMM (my d_graphics, my p_spectrogram_viewTo - my d_spectrogram_cursor) > 5.0) {
-			Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-			Graphics_text (my d_graphics, my d_startWindow, my p_spectrogram_viewTo,
+		if (! frequencyCursorVisible || Graphics_dyWCtoMM (my d_graphics.get(), my p_spectrogram_viewTo - my d_spectrogram_cursor) > 5.0) {
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+			Graphics_text (my d_graphics.get(), my d_startWindow, my p_spectrogram_viewTo,
 				Melder_float (Melder_half (my p_spectrogram_viewTo)), U" Hz");
 		}
 		/*
 		 * Cursor lines.
 		 */
-		Graphics_setLineType (my d_graphics, Graphics_DOTTED);
-		Graphics_setColour (my d_graphics, Graphics_RED);
+		Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
+		Graphics_setColour (my d_graphics.get(), Graphics_RED);
 		if (frequencyCursorVisible) {
 			double x = my d_startWindow, y = my d_spectrogram_cursor;
-			Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-			Graphics_text (my d_graphics, x, y,   Melder_float (Melder_half (y)), U" Hz");
-			Graphics_line (my d_graphics, x, y, my d_endWindow, y);
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+			Graphics_text (my d_graphics.get(), x, y,   Melder_float (Melder_half (y)), U" Hz");
+			Graphics_line (my d_graphics.get(), x, y, my d_endWindow, y);
 		}
 		/*
 		if (our startSelection >= our startWindow && our startSelection <= our endWindow)
@@ -1934,9 +1883,9 @@ static void TimeSoundAnalysisEditor_v_draw_analysis (TimeSoundAnalysisEditor me)
 		/*
 		 * Cadre.
 		 */
-		Graphics_setLineType (my d_graphics, Graphics_DRAWN);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
-		Graphics_rectangle (my d_graphics, my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo);
+		Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+		Graphics_rectangle (my d_graphics.get(), my d_startWindow, my d_endWindow, my p_spectrogram_viewFrom, my p_spectrogram_viewTo);
 	}
 }
 void structTimeSoundAnalysisEditor :: v_draw_analysis () {
@@ -1945,35 +1894,35 @@ void structTimeSoundAnalysisEditor :: v_draw_analysis () {
 
 void structTimeSoundAnalysisEditor :: v_draw_analysis_pulses () {
 	TimeSoundAnalysisEditor_computePulses (this);
-	if (our p_pulses_show && our d_endWindow - our d_startWindow <= our p_longestAnalysis && our d_pulses != NULL) {
-		PointProcess point = d_pulses;
-		Graphics_setWindow (our d_graphics, our d_startWindow, our d_endWindow, -1.0, 1.0);
-		Graphics_setColour (our d_graphics, Graphics_BLUE);
+	if (our p_pulses_show && our d_endWindow - our d_startWindow <= our p_longestAnalysis && our d_pulses) {
+		PointProcess point = our d_pulses.get();
+		Graphics_setWindow (our d_graphics.get(), our d_startWindow, our d_endWindow, -1.0, 1.0);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLUE);
 		if (point -> nt < 2000) for (long i = 1; i <= point -> nt; i ++) {
 			double t = point -> t [i];
 			if (t >= our d_startWindow && t <= our d_endWindow)
-				Graphics_line (our d_graphics, t, -0.9, t, 0.9);
+				Graphics_line (our d_graphics.get(), t, -0.9, t, 0.9);
 		}
-		Graphics_setColour (our d_graphics, Graphics_BLACK);
+		Graphics_setColour (our d_graphics.get(), Graphics_BLACK);
 	}
 }
 
-int structTimeSoundAnalysisEditor :: v_click (double xbegin, double ybegin, bool shiftKeyPressed) {
+bool structTimeSoundAnalysisEditor :: v_click (double xbegin, double ybegin, bool shiftKeyPressed) {
 	if (our p_pitch_show) {
 		//Melder_warning (xbegin, U" ", ybegin);
 		if (xbegin >= our d_endWindow && ybegin > 0.48 && ybegin <= 0.50) {
 			our pref_pitch_ceiling () = our p_pitch_ceiling = our p_pitch_ceiling * 1.26;
-			forget (our d_pitch);
-			forget (our d_intensity);
-			forget (our d_pulses);
-			return 1;
+			our d_pitch. reset();
+			our d_intensity.reset();
+			our d_pulses. reset();
+			return FunctionEditor_UPDATE_NEEDED;
 		}
 		if (xbegin >= our d_endWindow && ybegin > 0.46 && ybegin <= 0.48) {
 			our pref_pitch_ceiling () = our p_pitch_ceiling = our p_pitch_ceiling / 1.26;
-			forget (our d_pitch);
-			forget (our d_intensity);
-			forget (our d_pulses);
-			return 1;
+			our d_pitch. reset();
+			our d_intensity. reset();
+			our d_pulses. reset();
+			return FunctionEditor_UPDATE_NEEDED;
 		}
 	}
 	return TimeSoundAnalysisEditor_Parent :: v_click (xbegin, ybegin, shiftKeyPressed);
diff --git a/fon/TimeSoundAnalysisEditor.h b/fon/TimeSoundAnalysisEditor.h
index cd70843..ce76a6e 100644
--- a/fon/TimeSoundAnalysisEditor.h
+++ b/fon/TimeSoundAnalysisEditor.h
@@ -4,46 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2002/11/19 added show-widgets
- * pb 2002/11/19 added pulses
- * pb 2003/05/20 longestAnalysis replaces pitch.timeSteps, pitch.speckle, formant.maximumDuration
- * pb 2003/05/21 pitch floor and ceiling replace the view and analysis ranges
- * pb 2003/05/27 spectrogram maximum and autoscaling
- * pb 2003/08/23 formant.numberOfTimeSteps
- * pb 2003/09/16 advanced pitch settings: pitch.timeStep, pitch.timeStepsPerView, pitch.viewFrom, pitch.viewTo
- * pb 2003/09/18 advanced formant settings: formant.timeStep, formant.timeStepsPerView
- * pb 2003/10/01 time step settings: timeStepStrategy, fixedTimeStep, numberOfTimeStepsPerView
- * pb 2004/02/15 highlight methods
- * pb 2004/07/14 pulses.maximumAmplitudeFactor
- * pb 2004/10/24 intensity.averagingMethod
- * pb 2004/10/27 intensity.subtractMeanPressure
- * pb 2005/01/11 getBottomOfSoundAndAnalysisArea
- * pb 2005/06/16 units
- * pb 2005/12/07 arrowScrollStep
- * pb 2007/06/10 wchar
- * pb 2007/09/02 direct drawing to picture window
- * pb 2007/09/08 inherit from TimeSoundEditor
- * pb 2007/11/01 direct intensity, formants, and pulses drawing
- * pb 2007/12/02 split off TimeSoundAnalysisEditor_enums.h
- * pb 2011/03/23 C++
- * pb 2011/07/15 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundEditor.h"
@@ -56,21 +28,21 @@
 #include "TimeSoundAnalysisEditor_enums.h"
 
 Thing_define (TimeSoundAnalysisEditor, TimeSoundEditor) {
-	Spectrogram d_spectrogram;
+	autoSpectrogram d_spectrogram;
 	double d_spectrogram_cursor;
-	Pitch d_pitch;
-	Intensity d_intensity;
-	Formant d_formant;
-	PointProcess d_pulses;
+	autoPitch d_pitch;
+	autoIntensity d_intensity;
+	autoFormant d_formant;
+	autoPointProcess d_pulses;
 	GuiMenuItem spectrogramToggle, pitchToggle, intensityToggle, formantToggle, pulsesToggle;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
 	void v_createMenuItems_query (EditorMenu menu)
 		override;
-	int v_click (double xWC, double yWC, bool shiftKeyPressed)
+	bool v_click (double xWC, double yWC, bool shiftKeyPressed)
 		override;
 	void v_createMenuItems_view_sound (EditorMenu menu)
 		override;
@@ -86,7 +58,7 @@ Thing_define (TimeSoundAnalysisEditor, TimeSoundEditor) {
 	virtual bool v_hasIntensity   () { return true; }
 	virtual bool v_hasFormants    () { return true; }
 	virtual bool v_hasPulses      () { return true; }
-	virtual void v_destroy_analysis ();
+	virtual void v_reset_analysis ();
 	virtual void v_createMenuItems_spectrum_picture (EditorMenu menu);
 	virtual void v_createMenuItems_pitch_picture (EditorMenu menu);
 	virtual void v_createMenuItems_intensity_picture (EditorMenu menu);
diff --git a/fon/TimeSoundAnalysisEditor_enums.h b/fon/TimeSoundAnalysisEditor_enums.h
index df24128..6339545 100644
--- a/fon/TimeSoundAnalysisEditor_enums.h
+++ b/fon/TimeSoundAnalysisEditor_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kTimeSoundAnalysisEditor_timeStepStrategy, 1)
diff --git a/fon/TimeSoundAnalysisEditor_prefs.h b/fon/TimeSoundAnalysisEditor_prefs.h
index 297d116..36ca171 100644
--- a/fon/TimeSoundAnalysisEditor_prefs.h
+++ b/fon/TimeSoundAnalysisEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (TimeSoundAnalysisEditor)
diff --git a/fon/TimeSoundEditor.cpp b/fon/TimeSoundEditor.cpp
index c31e500..fcfebee 100644
--- a/fon/TimeSoundEditor.cpp
+++ b/fon/TimeSoundEditor.cpp
@@ -1,20 +1,19 @@
 /* TimeSoundEditor.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TimeSoundEditor.h"
@@ -37,9 +36,9 @@ Thing_implement (TimeSoundEditor, FunctionEditor, 0);
 
 /********** Thing methods **********/
 
-void structTimeSoundEditor :: v_destroy () {
-	if (d_ownSound)
-		forget (d_sound.data);
+void structTimeSoundEditor :: v_destroy () noexcept {
+	if (our d_ownSound)
+		forget (our d_sound.data);
 	TimeSoundEditor_Parent :: v_destroy ();
 }
 
@@ -51,9 +50,8 @@ void structTimeSoundEditor :: v_info () {
 
 /***** FILE MENU *****/
 
-static void menu_cb_DrawVisibleSound (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM (U"Draw visible sound", 0)
+static void menu_cb_DrawVisibleSound (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw visible sound", nullptr)
 		my v_form_pictureWindow (cmd);
 		LABEL (U"", U"Sound:")
 		BOOLEAN (U"Preserve times", my default_picture_preserveTimes ());
@@ -78,22 +76,21 @@ static void menu_cb_DrawVisibleSound (EDITOR_ARGS) {
 		my v_do_pictureMargins (cmd);
 		my v_do_pictureSelection (cmd);
 		my pref_picture_garnish () = GET_INTEGER (U"Garnish");
-		if (my d_longSound.data == NULL && my d_sound.data == NULL)
+		if (! my d_longSound.data && ! my d_sound.data)
 			Melder_throw (U"There is no sound to draw.");
 		autoSound publish = my d_longSound.data ?
 			LongSound_extractPart (my d_longSound.data, my d_startWindow, my d_endWindow, my pref_picture_preserveTimes ()) :
 			Sound_extractPart (my d_sound.data, my d_startWindow, my d_endWindow, kSound_windowShape_RECTANGULAR, 1.0, my pref_picture_preserveTimes ());
 		Editor_openPraatPicture (me);
-		Sound_draw (publish.peek(), my pictureGraphics, 0.0, 0.0, my pref_picture_bottom (), my pref_picture_top (),
+		Sound_draw (publish.get(), my pictureGraphics, 0.0, 0.0, my pref_picture_bottom (), my pref_picture_top (),
 			my pref_picture_garnish (), U"Curve");
 		FunctionEditor_garnish (me);
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
-static void menu_cb_DrawSelectedSound (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM (U"Draw selected sound", 0)
+static void menu_cb_DrawSelectedSound (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Draw selected sound", nullptr)
 		my v_form_pictureWindow (cmd);
 		LABEL (U"", U"Sound:")
 		BOOLEAN (U"Preserve times", my default_picture_preserveTimes ());
@@ -115,43 +112,40 @@ static void menu_cb_DrawSelectedSound (EDITOR_ARGS) {
 		my pref_picture_top () = GET_REAL (U"right Vertical range");
 		my v_do_pictureMargins (cmd);
 		my pref_picture_garnish () = GET_INTEGER (U"Garnish");
-		if (my d_longSound.data == NULL && my d_sound.data == NULL)
+		if (! my d_longSound.data && ! my d_sound.data)
 			Melder_throw (U"There is no sound to draw.");
 		autoSound publish = my d_longSound.data ?
 			LongSound_extractPart (my d_longSound.data, my d_startSelection, my d_endSelection, my pref_picture_preserveTimes ()) :
 			Sound_extractPart (my d_sound.data, my d_startSelection, my d_endSelection, kSound_windowShape_RECTANGULAR, 1.0, my pref_picture_preserveTimes ());
 		Editor_openPraatPicture (me);
-		Sound_draw (publish.peek(), my pictureGraphics, 0.0, 0.0, my pref_picture_bottom (), my pref_picture_top (),
+		Sound_draw (publish.get(), my pictureGraphics, 0.0, 0.0, my pref_picture_bottom (), my pref_picture_top (),
 			my pref_picture_garnish (), U"Curve");
 		Editor_closePraatPicture (me);
 	EDITOR_END
 }
 
 static void do_ExtractSelectedSound (TimeSoundEditor me, bool preserveTimes) {
-	autoSound extract = NULL;
+	autoSound extract;
 	if (my d_endSelection <= my d_startSelection)
 		Melder_throw (U"No selection.");
 	if (my d_longSound.data) {
-		extract.reset (LongSound_extractPart (my d_longSound.data, my d_startSelection, my d_endSelection, preserveTimes));
+		extract = LongSound_extractPart (my d_longSound.data, my d_startSelection, my d_endSelection, preserveTimes);
 	} else if (my d_sound.data) {
-		extract.reset (Sound_extractPart (my d_sound.data, my d_startSelection, my d_endSelection, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes));
+		extract = Sound_extractPart (my d_sound.data, my d_startSelection, my d_endSelection, kSound_windowShape_RECTANGULAR, 1.0, preserveTimes);
 	}
-	Editor_broadcastPublication (me, extract.transfer());
+	Editor_broadcastPublication (me, extract.move());
 }
 
-static void menu_cb_ExtractSelectedSound_timeFromZero (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	do_ExtractSelectedSound (me, FALSE);
+static void menu_cb_ExtractSelectedSound_timeFromZero (TimeSoundEditor me, EDITOR_ARGS_DIRECT) {
+	do_ExtractSelectedSound (me, false);
 }
 
-static void menu_cb_ExtractSelectedSound_preserveTimes (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	do_ExtractSelectedSound (me, TRUE);
+static void menu_cb_ExtractSelectedSound_preserveTimes (TimeSoundEditor me, EDITOR_ARGS_DIRECT) {
+	do_ExtractSelectedSound (me, true);
 }
 
-static void menu_cb_ExtractSelectedSound_windowed (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM (U"Extract selected sound (windowed)", 0)
+static void menu_cb_ExtractSelectedSound_windowed (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Extract selected sound (windowed)", nullptr)
 		WORD (U"Name", U"slice")
 		OPTIONMENU_ENUM (U"Window shape", kSound_windowShape, my default_extract_windowShape ())
 		POSITIVE (U"Relative width", my default_extract_relativeWidth ())
@@ -162,40 +156,39 @@ static void menu_cb_ExtractSelectedSound_windowed (EDITOR_ARGS) {
 		SET_INTEGER (U"Preserve times", my pref_extract_preserveTimes ())
 	EDITOR_DO
 		Sound sound = my d_sound.data;
-		Melder_assert (sound != NULL);
+		Melder_assert (sound);
 		my pref_extract_windowShape () = GET_ENUM (kSound_windowShape, U"Window shape");
 		my pref_extract_relativeWidth () = GET_REAL (U"Relative width");
 		my pref_extract_preserveTimes () = GET_INTEGER (U"Preserve times");
 		autoSound extract = Sound_extractPart (sound, my d_startSelection, my d_endSelection, my pref_extract_windowShape (),
 			my pref_extract_relativeWidth (), my pref_extract_preserveTimes ());
-		Thing_setName (extract.peek(), GET_STRING (U"Name"));
-		Editor_broadcastPublication (me, extract.transfer());
+		Thing_setName (extract.get(), GET_STRING (U"Name"));
+		Editor_broadcastPublication (me, extract.move());
 	EDITOR_END
 }
 
-static void menu_cb_ExtractSelectedSoundForOverlap (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM (U"Extract selected sound for overlap)", 0)
+static void menu_cb_ExtractSelectedSoundForOverlap (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Extract selected sound for overlap)", nullptr)
 		WORD (U"Name", U"slice")
 		POSITIVE (U"Overlap (s)", my default_extract_overlap ())
 	EDITOR_OK
 		SET_REAL (U"Overlap", my pref_extract_overlap ())
 	EDITOR_DO
 		Sound sound = my d_sound.data;
-		Melder_assert (sound != NULL);
+		Melder_assert (sound);
 		my pref_extract_overlap () = GET_REAL (U"Overlap");
 		autoSound extract = Sound_extractPartForOverlap (sound, my d_startSelection, my d_endSelection,
 			my pref_extract_overlap ());
-		Thing_setName (extract.peek(), GET_STRING (U"Name"));
-		Editor_broadcastPublication (me, extract.transfer());
+		Thing_setName (extract.get(), GET_STRING (U"Name"));
+		Editor_broadcastPublication (me, extract.move());
 	EDITOR_END
 }
 
-static void do_write (TimeSoundEditor me, MelderFile file, int format, int numberOfBitsPersamplePoint) {
+static void do_write (TimeSoundEditor me, MelderFile file, int format, int numberOfBitsPerSamplePoint) {
 	if (my d_startSelection >= my d_endSelection)
 		Melder_throw (U"No samples selected.");
 	if (my d_longSound.data) {
-		LongSound_writePartToAudioFile (my d_longSound.data, format, my d_startSelection, my d_endSelection, file);
+		LongSound_writePartToAudioFile (my d_longSound.data, format, my d_startSelection, my d_endSelection, file, numberOfBitsPerSamplePoint);
 	} else if (my d_sound.data) {
 		Sound sound = my d_sound.data;
 		double margin = 0.0;
@@ -214,79 +207,71 @@ static void do_write (TimeSoundEditor me, MelderFile file, int format, int numbe
 					save -> z [channel] [i - offset] = sound -> z [channel] [i];
 				}
 			}
-			Sound_writeToAudioFile (save.peek(), file, format, numberOfBitsPersamplePoint);
+			Sound_writeToAudioFile (save.get(), file, format, numberOfBitsPerSamplePoint);
 		}
 	}
 }
 
-static void menu_cb_WriteWav (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as WAV file", 0)
+static void menu_cb_WriteWav (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as WAV file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".wav");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_WAV, 16);
 	EDITOR_END
 }
 
-static void menu_cb_SaveAs24BitWav (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as 24-bit WAV file", 0)
-		Melder_assert (my d_longSound.data == NULL && my d_sound.data != NULL);
+static void menu_cb_SaveAs24BitWav (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as 24-bit WAV file", nullptr)
+		Melder_assert (! my d_longSound.data && my d_sound.data);
 		Melder_sprint (defaultName,300, my d_sound.data -> name, U".wav");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_WAV, 24);
 	EDITOR_END
 }
 
-static void menu_cb_SaveAs32BitWav (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as 32-bit WAV file", 0)
-		Melder_assert (my d_longSound.data == NULL && my d_sound.data != NULL);
+static void menu_cb_SaveAs32BitWav (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as 32-bit WAV file", nullptr)
+		Melder_assert (! my d_longSound.data && my d_sound.data);
 		Melder_sprint (defaultName,300, my d_sound.data -> name, U".wav");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_WAV, 32);
 	EDITOR_END
 }
 
-static void menu_cb_WriteAiff (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as AIFF file", 0)
+static void menu_cb_WriteAiff (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as AIFF file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".aiff");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_AIFF, 16);
 	EDITOR_END
 }
 
-static void menu_cb_WriteAifc (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as AIFC file", 0)
+static void menu_cb_WriteAifc (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as AIFC file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".aifc");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_AIFC, 16);
 	EDITOR_END
 }
 
-static void menu_cb_WriteNextSun (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as NeXT/Sun file", 0)
+static void menu_cb_WriteNextSun (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as NeXT/Sun file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".au");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_NEXT_SUN, 16);
 	EDITOR_END
 }
 
-static void menu_cb_WriteNist (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as NIST file", 0)
+static void menu_cb_WriteNist (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as NIST file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".nist");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_NIST, 16);
 	EDITOR_END
 }
 
-static void menu_cb_WriteFlac (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM_WRITE (U"Save selected sound as FLAC file", 0)
+static void menu_cb_WriteFlac (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save selected sound as FLAC file", nullptr)
 		Melder_sprint (defaultName,300, my d_longSound.data ? my d_longSound.data -> name : my d_sound.data -> name, U".flac");
 	EDITOR_DO_WRITE
 		do_write (me, file, Melder_FLAC, 16);
@@ -356,39 +341,36 @@ void structTimeSoundEditor :: v_createMenuItems_file_write (EditorMenu menu) {
 void structTimeSoundEditor :: v_createMenuItems_file (EditorMenu menu) {
 	TimeSoundEditor_Parent :: v_createMenuItems_file (menu);
 	v_createMenuItems_file_draw (menu);
-	EditorMenu_addCommand (menu, U"-- after file draw --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- after file draw --", 0, nullptr);
 	v_createMenuItems_file_extract (menu);
-	EditorMenu_addCommand (menu, U"-- after file extract --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- after file extract --", 0, nullptr);
 	v_createMenuItems_file_write (menu);
-	EditorMenu_addCommand (menu, U"-- after file write --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- after file write --", 0, nullptr);
 }
 
 /********** QUERY MENU **********/
 
-static void menu_cb_SoundInfo (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
+static void menu_cb_SoundInfo (TimeSoundEditor me, EDITOR_ARGS_DIRECT) {
 	Thing_info (my d_sound.data);
 }
 
-static void menu_cb_LongSoundInfo (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
+static void menu_cb_LongSoundInfo (TimeSoundEditor me, EDITOR_ARGS_DIRECT) {
 	Thing_info (my d_longSound.data);
 }
 
 void structTimeSoundEditor :: v_createMenuItems_query_info (EditorMenu menu) {
 	TimeSoundEditor_Parent :: v_createMenuItems_query_info (menu);
-	if (d_sound.data != NULL && d_sound.data != data) {
+	if (d_sound.data && d_sound.data != data) {
 		EditorMenu_addCommand (menu, U"Sound info", 0, menu_cb_SoundInfo);
-	} else if (d_longSound.data != NULL && d_longSound.data != data) {
+	} else if (d_longSound.data && d_longSound.data != data) {
 		EditorMenu_addCommand (menu, U"LongSound info", 0, menu_cb_LongSoundInfo);
 	}
 }
 
 /********** VIEW MENU **********/
 
-static void menu_cb_soundScaling (EDITOR_ARGS) {
-	EDITOR_IAM (TimeSoundEditor);
-	EDITOR_FORM (U"Sound scaling", 0)
+static void menu_cb_soundScaling (TimeSoundEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Sound scaling", nullptr)
 		OPTIONMENU_ENUM (U"Scaling strategy", kTimeSoundEditor_scalingStrategy, my default_sound_scalingStrategy ())
 		LABEL (U"", U"For \"fixed height\":");
 		POSITIVE (U"Height", my default_sound_scaling_height ())
@@ -417,12 +399,17 @@ void structTimeSoundEditor :: v_createMenuItems_view (EditorMenu menu) {
 
 void structTimeSoundEditor :: v_createMenuItems_view_sound (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"Sound scaling...", 0, menu_cb_soundScaling);
-	EditorMenu_addCommand (menu, U"-- sound view --", 0, 0);
+	EditorMenu_addCommand (menu, U"-- sound view --", 0, nullptr);
 }
 
 void structTimeSoundEditor :: v_updateMenuItems_file () {
-	Sampled sound = d_sound.data != NULL ? (Sampled) d_sound.data : (Sampled) d_longSound.data;
-	if (sound == NULL) return;
+	Sampled sound;
+	if (d_sound.data) {
+		sound = d_sound.data;
+	} else {
+		sound = d_longSound.data;
+	}
+	if (! sound) return;
 	long first, last, selectedSamples = Sampled_getWindowSamples (sound, d_startSelection, d_endSelection, & first, & last);
 	if (drawButton) {
 		GuiThing_setSensitive (drawButton, selectedSamples != 0);
@@ -446,32 +433,32 @@ void structTimeSoundEditor :: v_updateMenuItems_file () {
 void TimeSoundEditor_drawSound (TimeSoundEditor me, double globalMinimum, double globalMaximum) {
 	Sound sound = my d_sound.data;
 	LongSound longSound = my d_longSound.data;
-	Melder_assert ((sound == NULL) != (longSound == NULL));
+	Melder_assert (!! sound != !! longSound);
 	int nchan = sound ? sound -> ny : longSound -> numberOfChannels;
 	bool cursorVisible = my d_startSelection == my d_endSelection && my d_startSelection >= my d_startWindow && my d_startSelection <= my d_endWindow;
-	Graphics_setColour (my d_graphics, Graphics_BLACK);
+	Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 	bool fits;
 	try {
 		fits = sound ? true : LongSound_haveWindow (longSound, my d_startWindow, my d_endWindow);
 	} catch (MelderError) {
-		int outOfMemory = str32str (Melder_getError (), U"memory") != NULL;
+		bool outOfMemory = !! str32str (Melder_getError (), U"memory");
 		if (Melder_debug == 9) Melder_flushError (); else Melder_clearError ();
-		Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (my d_graphics, 0.5, 0.5, outOfMemory ? U"(out of memory)" : U"(cannot read sound file)");
+		Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), 0.5, 0.5, outOfMemory ? U"(out of memory)" : U"(cannot read sound file)");
 		return;
 	}
 	if (! fits) {
-		Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (my d_graphics, 0.5, 0.5, U"(window too large; zoom in to see the data)");
+		Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), 0.5, 0.5, U"(window too large; zoom in to see the data)");
 		return;
 	}
 	long first, last;
 	if (Sampled_getWindowSamples (sound ? (Sampled) sound : (Sampled) longSound, my d_startWindow, my d_endWindow, & first, & last) <= 1) {
-		Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-		Graphics_setTextAlignment (my d_graphics, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (my d_graphics, 0.5, 0.5, U"(zoom out to see the data)");
+		Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setTextAlignment (my d_graphics.get(), Graphics_CENTRE, Graphics_HALF);
+		Graphics_text (my d_graphics.get(), 0.5, 0.5, U"(zoom out to see the data)");
 		return;
 	}
 	const int numberOfVisibleChannels = nchan > 8 ? 8 : nchan;
@@ -505,7 +492,7 @@ void TimeSoundEditor_drawSound (TimeSoundEditor me, double globalMinimum, double
 		 */
 		double ymin = (double) (numberOfVisibleChannels - ichan + my d_sound.channelOffset) / numberOfVisibleChannels;
 		double ymax = (double) (numberOfVisibleChannels + 1 - ichan + my d_sound.channelOffset) / numberOfVisibleChannels;
-		Graphics_Viewport vp = Graphics_insetViewport (my d_graphics, 0, 1, ymin, ymax);
+		Graphics_Viewport vp = Graphics_insetViewport (my d_graphics.get(), 0.0, 1.0, ymin, ymax);
 		bool horizontal = false;
 		double minimum = sound ? globalMinimum : -1.0, maximum = sound ? globalMaximum : 1.0;
 		if (my p_sound_scalingStrategy == kTimeSoundEditor_scalingStrategy_BY_WINDOW) {
@@ -544,42 +531,42 @@ void TimeSoundEditor_drawSound (TimeSoundEditor me, double globalMinimum, double
 			minimum = my p_sound_scaling_minimum;
 			maximum = my p_sound_scaling_maximum;
 		}
-		if (minimum == maximum) { horizontal = true; minimum -= 1; maximum += 1;}
-		Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, minimum, maximum);
+		if (minimum == maximum) { horizontal = true; minimum -= 1.0; maximum += 1.0;}
+		Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, minimum, maximum);
 		if (horizontal) {
-			Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
 			double mid = 0.5 * (minimum + maximum);
-			Graphics_text (my d_graphics, my d_startWindow, mid, Melder_float (Melder_half (mid)));
+			Graphics_text (my d_graphics.get(), my d_startWindow, mid, Melder_float (Melder_half (mid)));
 		} else {
-			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || Graphics_dyWCtoMM (my d_graphics, cursorFunctionValue - minimum) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_BOTTOM);
-				Graphics_text (my d_graphics, my d_startWindow, minimum, Melder_float (Melder_half (minimum)));
+			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || Graphics_dyWCtoMM (my d_graphics.get(), cursorFunctionValue - minimum) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_BOTTOM);
+				Graphics_text (my d_graphics.get(), my d_startWindow, minimum, Melder_float (Melder_half (minimum)));
 			}
-			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || Graphics_dyWCtoMM (my d_graphics, maximum - cursorFunctionValue) > 5.0) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_TOP);
-				Graphics_text (my d_graphics, my d_startWindow, maximum, Melder_float (Melder_half (maximum)));
+			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || Graphics_dyWCtoMM (my d_graphics.get(), maximum - cursorFunctionValue) > 5.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_TOP);
+				Graphics_text (my d_graphics.get(), my d_startWindow, maximum, Melder_float (Melder_half (maximum)));
 			}
 		}
 		if (minimum < 0 && maximum > 0 && ! horizontal) {
-			Graphics_setWindow (my d_graphics, 0, 1, minimum, maximum);
-			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || fabs (Graphics_dyWCtoMM (my d_graphics, cursorFunctionValue - 0.0)) > 3.0) {
-				Graphics_setTextAlignment (my d_graphics, Graphics_RIGHT, Graphics_HALF);
-				Graphics_text (my d_graphics, 0, 0, U"0");
+			Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, minimum, maximum);
+			if (! cursorVisible || ! NUMdefined (cursorFunctionValue) || fabs (Graphics_dyWCtoMM (my d_graphics.get(), cursorFunctionValue - 0.0)) > 3.0) {
+				Graphics_setTextAlignment (my d_graphics.get(), Graphics_RIGHT, Graphics_HALF);
+				Graphics_text (my d_graphics.get(), 0.0, 0.0, U"0");
 			}
-			Graphics_setColour (my d_graphics, Graphics_CYAN);
-			Graphics_setLineType (my d_graphics, Graphics_DOTTED);
-			Graphics_line (my d_graphics, 0, 0, 1, 0);
-			Graphics_setLineType (my d_graphics, Graphics_DRAWN);
+			Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+			Graphics_setLineType (my d_graphics.get(), Graphics_DOTTED);
+			Graphics_line (my d_graphics.get(), 0.0, 0.0, 1.0, 0.0);
+			Graphics_setLineType (my d_graphics.get(), Graphics_DRAWN);
 		}
 		/*
 		 * Garnish the drawing area of each channel.
 		 */
-		Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-		Graphics_setColour (my d_graphics, Graphics_CYAN);
-		Graphics_innerRectangle (my d_graphics, 0, 1, 0, 1);
-		Graphics_setColour (my d_graphics, Graphics_BLACK);
+		Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_CYAN);
+		Graphics_innerRectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
 		if (nchan > 1) {
-			Graphics_setTextAlignment (my d_graphics, Graphics_LEFT, Graphics_HALF);
+			Graphics_setTextAlignment (my d_graphics.get(), Graphics_LEFT, Graphics_HALF);
 			const char32 *channelName = my v_getChannelName (ichan);
 			static MelderString channelLabel;
 			MelderString_copy (& channelLabel, ( channelName ? U"ch" : U"Channel " ), ichan);
@@ -590,53 +577,53 @@ void TimeSoundEditor_drawSound (TimeSoundEditor me, double globalMinimum, double
 			} else if (ichan >= 8 && ichan - my d_sound.channelOffset == 8 && ichan < nchan) {
 				MelderString_append (& channelLabel, U" " UNITEXT_DOWNWARDS_ARROW);
 			}
-			Graphics_text (my d_graphics, 1, 0.5, channelLabel.string);
+			Graphics_text (my d_graphics.get(), 1.0, 0.5, channelLabel.string);
 		}
 		/*
 		 * Draw a very thin separator line underneath.
 		 */
 		if (ichan < nchan) {
-			/*Graphics_setColour (d_graphics, Graphics_BLACK);*/
-			Graphics_line (my d_graphics, 0, 0, 1, 0);
+			/*Graphics_setColour (d_graphics.get(), Graphics_BLACK);*/
+			Graphics_line (my d_graphics.get(), 0.0, 0.0, 1.0, 0.0);
 		}
 		/*
 		 * Draw the samples.
 		 */
 		/*if (ichan == 1) FunctionEditor_SoundAnalysis_drawPulses (this);*/
 		if (sound) {
-			Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, minimum, maximum);
+			Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, minimum, maximum);
 			if (cursorVisible && NUMdefined (cursorFunctionValue))
 				FunctionEditor_drawCursorFunctionValue (me, cursorFunctionValue, Melder_float (Melder_half (cursorFunctionValue)), U"");
-			Graphics_setColour (my d_graphics, Graphics_BLACK);
-			Graphics_function (my d_graphics, sound -> z [ichan], first, last,
+			Graphics_setColour (my d_graphics.get(), Graphics_BLACK);
+			Graphics_function (my d_graphics.get(), sound -> z [ichan], first, last,
 				Sampled_indexToX (sound, first), Sampled_indexToX (sound, last));
 		} else {
-			Graphics_setWindow (my d_graphics, my d_startWindow, my d_endWindow, minimum * 32768, maximum * 32768);
-			Graphics_function16 (my d_graphics,
+			Graphics_setWindow (my d_graphics.get(), my d_startWindow, my d_endWindow, minimum * 32768, maximum * 32768);
+			Graphics_function16 (my d_graphics.get(),
 				longSound -> buffer - longSound -> imin * nchan + (ichan - 1), nchan - 1, first, last,
 				Sampled_indexToX (longSound, first), Sampled_indexToX (longSound, last));
 		}
-		Graphics_resetViewport (my d_graphics, vp);
+		Graphics_resetViewport (my d_graphics.get(), vp);
 	}
-	Graphics_setWindow (my d_graphics, 0, 1, 0, 1);
-	Graphics_rectangle (my d_graphics, 0, 1, 0, 1);
+	Graphics_setWindow (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_rectangle (my d_graphics.get(), 0.0, 1.0, 0.0, 1.0);
 }
 
-int structTimeSoundEditor :: v_click (double xbegin, double ybegin, bool shiftKeyPressed) {
+bool structTimeSoundEditor :: v_click (double xbegin, double ybegin, bool shiftKeyPressed) {
 	Sound sound = d_sound.data;
 	LongSound longSound = d_longSound.data;
-	if ((sound == NULL) != (longSound == NULL)) {
+	if (!! sound != !! longSound) {
 		ybegin = (ybegin - v_getBottomOfSoundArea ()) / (1.0 - v_getBottomOfSoundArea ());
 		int nchan = sound ? sound -> ny : longSound -> numberOfChannels;
 		if (nchan > 8) {
 			trace (xbegin, U" ", ybegin, U" ", nchan, U" ", d_sound.channelOffset);
 			if (xbegin >= d_endWindow && ybegin > 0.875 && ybegin <= 1.000 && d_sound.channelOffset > 0) {
 				d_sound.channelOffset -= 8;
-				return 1;
+				return FunctionEditor_UPDATE_NEEDED;
 			}
 			if (xbegin >= d_endWindow && ybegin > 0.000 && ybegin <= 0.125 && d_sound.channelOffset < nchan - 8) {
 				d_sound.channelOffset += 8;
-				return 1;
+				return FunctionEditor_UPDATE_NEEDED;
 			}
 		}
 	}
@@ -645,10 +632,10 @@ int structTimeSoundEditor :: v_click (double xbegin, double ybegin, bool shiftKe
 
 void TimeSoundEditor_init (TimeSoundEditor me, const char32 *title, Function data, Sampled sound, bool ownSound) {
 	my d_ownSound = ownSound;
-	if (sound != NULL) {
+	if (sound) {
 		if (ownSound) {
 			Melder_assert (Thing_isa (sound, classSound));
-			my d_sound.data = Data_copy ((Sound) sound);   // deep copy; ownership transferred
+			my d_sound.data = Data_copy ((Sound) sound).releaseToAmbiguousOwner();   // deep copy; ownership transferred
 			Matrix_getWindowExtrema (my d_sound.data, 1, my d_sound.data -> nx, 1, my d_sound.data -> ny, & my d_sound.minimum, & my d_sound.maximum);
 		} else if (Thing_isa (sound, classSound)) {
 			my d_sound.data = (Sound) sound;   // reference copy; ownership not transferred
diff --git a/fon/TimeSoundEditor.h b/fon/TimeSoundEditor.h
index 03c30ed..ccb344a 100644
--- a/fon/TimeSoundEditor.h
+++ b/fon/TimeSoundEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "FunctionEditor.h"
@@ -38,7 +37,7 @@ Thing_define (TimeSoundEditor, FunctionEditor) {
 	GuiMenuItem drawButton, publishButton, publishPreserveButton, publishWindowButton, publishOverlapButton;
 	GuiMenuItem writeAiffButton, d_saveAs24BitWavButton, d_saveAs32BitWavButton, writeAifcButton, writeWavButton, writeNextSunButton, writeNistButton, writeFlacButton;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
@@ -54,12 +53,12 @@ Thing_define (TimeSoundEditor, FunctionEditor) {
 		override;
 	void v_createMenuItems_view (EditorMenu menu)
 		override;
-	int v_click (double xbegin, double ybegin, bool shiftKeyPressed)
+	bool v_click (double xbegin, double ybegin, bool shiftKeyPressed)
 		override;   // catch channel scrolling
 
 	virtual void v_createMenuItems_view_sound (EditorMenu menu);
 	virtual void v_updateMenuItems_file ();
-	virtual const char32 * v_getChannelName (long channelNumber) { (void) channelNumber; return NULL; }
+	virtual const char32 * v_getChannelName (long /* channelNumber */) { return nullptr; }
 
 	#include "TimeSoundEditor_prefs.h"
 };
diff --git a/fon/TimeSoundEditor_enums.h b/fon/TimeSoundEditor_enums.h
index 74600a5..052a243 100644
--- a/fon/TimeSoundEditor_enums.h
+++ b/fon/TimeSoundEditor_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kTimeSoundEditor_scalingStrategy, 1)
diff --git a/fon/TimeSoundEditor_prefs.h b/fon/TimeSoundEditor_prefs.h
index d8389d6..ec0ad45 100644
--- a/fon/TimeSoundEditor_prefs.h
+++ b/fon/TimeSoundEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (TimeSoundEditor)
diff --git a/fon/Transition.cpp b/fon/Transition.cpp
index fb26214..685ac90 100644
--- a/fon/Transition.cpp
+++ b/fon/Transition.cpp
@@ -1,20 +1,19 @@
 /* Transition.cpp
  *
- * Copyright (C) 1997-2012,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Transition.h"
@@ -38,10 +37,10 @@
 #include "oo_DESCRIPTION.h"
 #include "Transition_def.h"
 
-Thing_implement (Transition, Data, 0);
+Thing_implement (Transition, Daata, 0);
 
 void structTransition :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of states: ", numberOfStates);
 }
 
@@ -52,7 +51,7 @@ void structTransition :: v_writeText (MelderFile file) {
 	MelderFile_write (file, U"\n");
 	for (long i = 1; i <= numberOfStates; i ++) {
 		MelderFile_write (file, U"\"");
-		if (stateLabels [i] != NULL) MelderFile_write (file, stateLabels [i]);
+		if (stateLabels [i]) MelderFile_write (file, stateLabels [i]);
 		MelderFile_write (file, U"\"\t");
 	}
 	for (long i = 1; i <= numberOfStates; i ++) {
@@ -71,11 +70,11 @@ void Transition_init (Transition me, long numberOfStates) {
 	my data = NUMmatrix <double> (1, my numberOfStates, 1, my numberOfStates);
 }
 
-Transition Transition_create (long numberOfStates) {
+autoTransition Transition_create (long numberOfStates) {
 	try {
 		autoTransition me = Thing_new (Transition);
-		Transition_init (me.peek(), numberOfStates);
-		return me.transfer();
+		Transition_init (me.get(), numberOfStates);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Transition not created.");
 	}
@@ -156,14 +155,12 @@ static void Transition_transpose (Transition me) {
 	}
 }
 
-void Transition_eigen (Transition me, Matrix *out_eigenvectors, Matrix *out_eigenvalues) {
-	*out_eigenvectors = NULL;
-	*out_eigenvalues = NULL;
+void Transition_eigen (Transition me, autoMatrix *out_eigenvectors, autoMatrix *out_eigenvalues) {
 	bool transposed = false;
 	try {
 		autoEigen eigen = Thing_new (Eigen);
 		Transition_transpose (me);
-		Eigen_initFromSymmetricMatrix (eigen.peek(), my data, my numberOfStates);
+		Eigen_initFromSymmetricMatrix (eigen.get(), my data, my numberOfStates);
 		Transition_transpose (me);
 		transposed = true;
 		autoMatrix eigenvectors = Matrix_createSimple (my numberOfStates, my numberOfStates);
@@ -173,8 +170,8 @@ void Transition_eigen (Transition me, Matrix *out_eigenvectors, Matrix *out_eige
 			for (long j = 1; j <= my numberOfStates; j ++)
 				eigenvectors -> z [i] [j] = eigen -> eigenvectors [j] [i];
 		}
-		*out_eigenvectors = eigenvectors.transfer();
-		*out_eigenvalues = eigenvalues.transfer();
+		*out_eigenvectors = eigenvectors.move();
+		*out_eigenvalues = eigenvalues.move();
 	} catch (MelderError) {
 		if (transposed)
 			Transition_transpose (me);
@@ -182,7 +179,7 @@ void Transition_eigen (Transition me, Matrix *out_eigenvectors, Matrix *out_eige
 	}
 }
 
-Transition Transition_power (Transition me, long power) {
+autoTransition Transition_power (Transition me, long power) {
 	try {
 		autoTransition thee = Data_copy (me);
 		autoTransition him = Data_copy (me);
@@ -197,25 +194,25 @@ Transition Transition_power (Transition me, long power) {
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": power not computed.");
 	}
 }
 
-Matrix Transition_to_Matrix (Transition me) {
+autoMatrix Transition_to_Matrix (Transition me) {
 	try {
 		autoMatrix thee = Matrix_createSimple (my numberOfStates, my numberOfStates);
 		for (long i = 1; i <= my numberOfStates; i ++)
 			for (long j = 1; j <= my numberOfStates; j ++)
 				thy z [i] [j] = my data [i] [j];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-Transition Matrix_to_Transition (Matrix me) {
+autoTransition Matrix_to_Transition (Matrix me) {
 	try {
 		if (my nx != my ny)
 			Melder_throw (U"Matrix should be square.");
@@ -223,7 +220,7 @@ Transition Matrix_to_Transition (Matrix me) {
 		for (long i = 1; i <= my nx; i ++)
 			for (long j = 1; j <= my nx; j ++)
 				thy data [i] [j] = my z [i] [j];
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Transition.");
 	}
diff --git a/fon/Transition.h b/fon/Transition.h
index 0f6f7ea..fc16138 100644
--- a/fon/Transition.h
+++ b/fon/Transition.h
@@ -2,41 +2,38 @@
 #define _Transition_h_
 /* Transition.h
  *
- * Copyright (C) 1992-2011,2012 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/* Transition inherits from Data */
 #include "Matrix.h"
 #include "Graphics.h"
 
 #include "Transition_def.h"
-oo_CLASS_CREATE (Transition, Data);
 
 void Transition_init (Transition me, long numberOfStates);
-Transition Transition_create (long numberOfStates);
+autoTransition Transition_create (long numberOfStates);
 
 void Transition_formula (Transition me, const char32 *formula);
 void Transition_drawAsNumbers (Transition me, Graphics g, int iformat, int precision);
 
-void Transition_eigen (Transition me, Matrix *eigenvectors, Matrix *eigenvalues);
-Transition Transition_power (Transition me, long power);
+void Transition_eigen (Transition me, autoMatrix *eigenvectors, autoMatrix *eigenvalues);
+autoTransition Transition_power (Transition me, long power);
 
-Matrix Transition_to_Matrix (Transition me);
-Transition Matrix_to_Transition (Matrix me);
+autoMatrix Transition_to_Matrix (Transition me);
+autoTransition Matrix_to_Transition (Matrix me);
 
 /* End of file Transition.h */
 #endif
diff --git a/fon/Transition_def.h b/fon/Transition_def.h
index c2b4911..857bca9 100644
--- a/fon/Transition_def.h
+++ b/fon/Transition_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Transition
-oo_DEFINE_CLASS (Transition, Data)
+oo_DEFINE_CLASS (Transition, Daata)
 
 	oo_LONG (numberOfStates)
 	oo_STRING_VECTOR (stateLabels, numberOfStates)
diff --git a/fon/Vector.cpp b/fon/Vector.cpp
index 3b1689e..9d5c672 100644
--- a/fon/Vector.cpp
+++ b/fon/Vector.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Vector.h"
@@ -194,19 +193,19 @@ void Vector_getMinimumAndXAndChannel (Vector me, double xmin, double xmax, int i
 
 double Vector_getMinimum (Vector me, double xmin, double xmax, int interpolation) {
 	double minimum;
-	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, & minimum, NULL, NULL);
+	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, & minimum, nullptr, nullptr);
 	return minimum;
 }
 
 double Vector_getXOfMinimum (Vector me, double xmin, double xmax, int interpolation) {
 	double xOfMinimum;
-	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, NULL, & xOfMinimum, NULL);
+	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, nullptr, & xOfMinimum, nullptr);
 	return xOfMinimum;
 }
 
 long Vector_getChannelOfMinimum (Vector me, double xmin, double xmax, int interpolation) {
 	long channelOfMinimum;
-	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, NULL, NULL, & channelOfMinimum);
+	Vector_getMinimumAndXAndChannel (me, xmin, xmax, interpolation, nullptr, nullptr, & channelOfMinimum);
 	return channelOfMinimum;
 }
 
@@ -269,19 +268,19 @@ void Vector_getMaximumAndXAndChannel (Vector me, double xmin, double xmax, int i
 
 double Vector_getMaximum (Vector me, double xmin, double xmax, int interpolation) {
 	double maximum;
-	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, & maximum, NULL, NULL);
+	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, & maximum, nullptr, nullptr);
 	return maximum;
 }
 
 double Vector_getXOfMaximum (Vector me, double xmin, double xmax, int interpolation) {
 	double xOfMaximum;
-	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, NULL, & xOfMaximum, NULL);
+	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, nullptr, & xOfMaximum, nullptr);
 	return xOfMaximum;
 }
 
 long Vector_getChannelOfMaximum (Vector me, double xmin, double xmax, int interpolation) {
 	long channelOfMaximum;
-	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, NULL, NULL, & channelOfMaximum);
+	Vector_getMaximumAndXAndChannel (me, xmin, xmax, interpolation, nullptr, nullptr, & channelOfMaximum);
 	return channelOfMaximum;
 }
 
@@ -294,7 +293,7 @@ double Vector_getAbsoluteExtremum (Vector me, double xmin, double xmax, int inte
 /***** Get statistics. *****/
 
 double Vector_getMean (Vector me, double xmin, double xmax, long channel) {
-	return Sampled_getMean (me, xmin, xmax, channel, 0, TRUE);
+	return Sampled_getMean (me, xmin, xmax, channel, 0, true);
 }
 
 double Vector_getStandardDeviation (Vector me, double xmin, double xmax, long ilevel) {
diff --git a/fon/Vector.h b/fon/Vector.h
index 0b6e8a6..3e906ea 100644
--- a/fon/Vector.h
+++ b/fon/Vector.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Vector inherits from Matrix */
@@ -82,7 +81,7 @@ void Vector_draw (Vector me, Graphics g, double *pxmin, double *pxmax, double *p
 	If *pymin equals *pymax, then autoscaling from minimum to maximum;
 	if minimum then equals maximum, defaultDy will be subtracted from *pymin and added to *pymax;
 	it must be a positive real number (e.g. 0.5 Pa for Sound, 1.0 dB for Ltas).
-	method can be "curve", "bars", "poles", or "speckles"; it must not be NULL;
+	method can be "curve", "bars", "poles", or "speckles"; it must not be null;
 	if anything else is specified, a curve is drawn.
 */
 
diff --git a/fon/VocalTract.cpp b/fon/VocalTract.cpp
index 0ade495..1153c61 100644
--- a/fon/VocalTract.cpp
+++ b/fon/VocalTract.cpp
@@ -1,20 +1,19 @@
 /* VocalTract.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "VocalTract.h"
@@ -22,138 +21,140 @@
 Thing_implement (VocalTract, Vector, 2);
 
 void structVocalTract :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Vocal tract length: ", Melder_single (xmax), U" metres");
 	MelderInfo_writeLine (U"Number of sections: ", nx);
 	MelderInfo_writeLine (U"Section length: ", Melder_single (dx), U" metres");
 }
 
-VocalTract VocalTract_create (long nx, double dx) {
+autoVocalTract VocalTract_create (long nx, double dx) {
 	try {
 		autoVocalTract me = Thing_new (VocalTract);
-		Matrix_init (me.peek(), 0, nx * dx, nx, dx, 0.5 * dx, 1, 1, 1, 1, 1);
-		return me.transfer();
+		Matrix_init (me.get(), 0.0, nx * dx, nx, dx, 0.5 * dx, 1.0, 1.0, 1, 1.0, 1.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VocalTract not created.");
 	}
 }
 
-#define MinimumWidth 0.0001
-static struct { const char32 *phone; int numberOfSections; double area [40]; }
-	data [] = {
-{ U"a", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
-	2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
-	8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9 } },
-{ U"e", 33, { 2.3, 1.95, 1.73, 1.7, 5.3, 6.3, 6.8, 7.55, 8.2, 9.1, 9.7,
-	10.1, 10.2, 10, 8, 7.2, 7.5, 6.4, 5.4, 4.9, 4.35, 3.9, 3.5, 3.1,
-	2.7, 2.4, 2.2, 2.5, 3.4, 5, 6.7, 8.5, 10 } },
-{ U"i", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5, 8 } },
-{ U"o", 37, { 2.6, 2.05, 1.56, 1.3, 5.2, 4.54, 3.49, 2.6, 2.1, 1.8, 1.6, 1.4,
-	1.29, 1.19, 1.22, 2.6, 2.9, 2.2, 2.6, 3.6, 4.55, 5.55, 6.4, 7.15,
-	8, 8.9, 9.6, 10.5, 11.8, 14.6, 14.5, 12.9, 10.4, 5, 3.4, 3.4, 4 } },
-{ U"u", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
-	1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
-	10.9, 12.9, 13.15, 13, 12.5, 9.9, 3.9, 1.8, 0.32, 0.4, 0.6 } },
-{ U"y1", 37, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 1.8, 0.32,
-	0.4, 0.6 } },
-{ U"y2", 38, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 4, 1.8, 0.32,
-	0.4, 0.6 } },
-{ U"y3", 39, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 4, 4, 1.8, 0.32,
-	0.4, 0.6 } },
-{ U"jery", 38, { 3.2, 3.2, 3.2, 3.2, 10.5, 10.5, 13, 13, 10.5, 10.5, 10.5, 10.5, 10.5,
-	8, 6.5, 6.5, 5, 4, 2, 2.6, 1.6, 1.3, 1, 1, 1.3, 1.6, 2, 2, 2.6, 3.2, 5,
-	8, 8, 8, 6.5,
-	2, 6.5, 6.5 } },
-{ U"p", 39, { 3.5, 3.2, 2.9, 2.6, 6.9, 6.65, 5.8, 4.9, 4, 3.14, 2.5, 1.84,
-	1.25, 0.83, 0.6, 0.53,
-	0.5, 0.6, 0.85, 1, 1.6, 2.05, 2.55, 3.08, 3.67, 4.15, 4.8, 5.5, 6.3,
-	7.4, 12, 12.98, 12.9, 11.4, 6.6, 2, 0.45, 0.1, MinimumWidth } },
-{ U"t", 36, { 2.8, 2.7, 2.4, 2.6, 6.45, 6.01, 5.31, 4.85, 4.55, 4.32, 4.18, 4.1,
-	4.04, 3.97, 3.85, 3.7, 3.4, 3.05, 2.91, 3.1, 3.55, 3.9, 4.1, 4, 3.8,
-	3.3, 2.55, 1.8, 1, 0.45, 0.1, MinimumWidth, 0.8, 2.5, 6, 9 } },
-{ U"k", 38, { 2.4, 2.7, 3, 3.3, 7, 9.38, 9.25, 8.62, 7.8, 6.7, 5.4, 4, 2.8, 1.9, 1.35,
-	0.9, 0.55, 0.3, 0.19, 0.07, MinimumWidth, 0.12, 0.17, 0.3, 0.5, 0.9,
-	1.4, 2.2, 3.3, 5, 9, 11.25, 10.9, 7.3, 4.3, 3.5, 3.7, 6 } },
-{ U"x", 40, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-	4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 } },
-{ U"pa", 39, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
-	2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
-	8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9, 6.6, 2, 0.45, 0.1,
-	MinimumWidth } },
-{ U"ta", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
-	2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
-	8.5, 6, 2, 0.45, MinimumWidth, 0.8, 2.5, 5.5, 7.9 } },
-{ U"ka", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
-	2.1, 2.9, 3.09, 2.1, 0.3, MinimumWidth,
-	0.3, 2, 5, 7.6, 8.15, 8.5, 8.6,
-	8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9 } },
-{ U"pi", 39, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5,
-	6.6, 2, 0.45, 0.1, MinimumWidth } },
-{ U"ti", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.5, 0.5, 0.3, 0.1, MinimumWidth,
-	0.8, 2.5, 8 } },
-{ U"ki", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
-	10.9, 11.15, 11.3, 11.2, 10.8, 8, 6, 2, 0.3, MinimumWidth, 0.3, 1.3,
-	0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5, 8 } },
-{ U"pu", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
-	1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
-	10.9, 12.9, 13.15, 13, 12.5, 9.9, 6.6, 2, 0.45, 0.1, MinimumWidth } },
-{ U"tu", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
-	1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
-	10.9, 9, 3, 0.4, MinimumWidth, 0.8, 2.5, 1.8, 0.32, 0.4, 0.6 } },
-{ U"ku", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
-	1.05, 1.1, 1.4, 1.2, 0.3, MinimumWidth, 0.3, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
-	10.9, 12.9, 13.15, 13, 12.5, 9.9, 3.9, 1.8, 0.32, 0.4, 0.6 } },
-{ NULL, 0, { 0 } } };
+namespace theVocalTract {
+	constexpr double minimumWidth { 0.0001 };
+	struct { const char32 *phone; int numberOfSections; double area [40]; }
+		data [] = {
+	{ U"a", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
+		2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
+		8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9 } },
+	{ U"e", 33, { 2.3, 1.95, 1.73, 1.7, 5.3, 6.3, 6.8, 7.55, 8.2, 9.1, 9.7,
+		10.1, 10.2, 10, 8, 7.2, 7.5, 6.4, 5.4, 4.9, 4.35, 3.9, 3.5, 3.1,
+		2.7, 2.4, 2.2, 2.5, 3.4, 5, 6.7, 8.5, 10 } },
+	{ U"i", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5, 8 } },
+	{ U"o", 37, { 2.6, 2.05, 1.56, 1.3, 5.2, 4.54, 3.49, 2.6, 2.1, 1.8, 1.6, 1.4,
+		1.29, 1.19, 1.22, 2.6, 2.9, 2.2, 2.6, 3.6, 4.55, 5.55, 6.4, 7.15,
+		8, 8.9, 9.6, 10.5, 11.8, 14.6, 14.5, 12.9, 10.4, 5, 3.4, 3.4, 4 } },
+	{ U"u", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
+		1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
+		10.9, 12.9, 13.15, 13, 12.5, 9.9, 3.9, 1.8, 0.32, 0.4, 0.6 } },
+	{ U"y1", 37, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 1.8, 0.32,
+		0.4, 0.6 } },
+	{ U"y2", 38, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 4, 1.8, 0.32,
+		0.4, 0.6 } },
+	{ U"y3", 39, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 4, 4, 1.8, 0.32,
+		0.4, 0.6 } },
+	{ U"jery", 38, { 3.2, 3.2, 3.2, 3.2, 10.5, 10.5, 13, 13, 10.5, 10.5, 10.5, 10.5, 10.5,
+		8, 6.5, 6.5, 5, 4, 2, 2.6, 1.6, 1.3, 1, 1, 1.3, 1.6, 2, 2, 2.6, 3.2, 5,
+		8, 8, 8, 6.5,
+		2, 6.5, 6.5 } },
+	{ U"p", 39, { 3.5, 3.2, 2.9, 2.6, 6.9, 6.65, 5.8, 4.9, 4, 3.14, 2.5, 1.84,
+		1.25, 0.83, 0.6, 0.53,
+		0.5, 0.6, 0.85, 1, 1.6, 2.05, 2.55, 3.08, 3.67, 4.15, 4.8, 5.5, 6.3,
+		7.4, 12, 12.98, 12.9, 11.4, 6.6, 2, 0.45, 0.1, minimumWidth } },
+	{ U"t", 36, { 2.8, 2.7, 2.4, 2.6, 6.45, 6.01, 5.31, 4.85, 4.55, 4.32, 4.18, 4.1,
+		4.04, 3.97, 3.85, 3.7, 3.4, 3.05, 2.91, 3.1, 3.55, 3.9, 4.1, 4, 3.8,
+		3.3, 2.55, 1.8, 1, 0.45, 0.1, minimumWidth, 0.8, 2.5, 6, 9 } },
+	{ U"k", 38, { 2.4, 2.7, 3, 3.3, 7, 9.38, 9.25, 8.62, 7.8, 6.7, 5.4, 4, 2.8, 1.9, 1.35,
+		0.9, 0.55, 0.3, 0.19, 0.07, minimumWidth, 0.12, 0.17, 0.3, 0.5, 0.9,
+		1.4, 2.2, 3.3, 5, 9, 11.25, 10.9, 7.3, 4.3, 3.5, 3.7, 6 } },
+	{ U"x", 40, { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+		4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 } },
+	{ U"pa", 39, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
+		2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
+		8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9, 6.6, 2, 0.45, 0.1,
+		minimumWidth } },
+	{ U"ta", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
+		2.1, 2.9, 3.09, 2.1, 2.5, 4, 5.3, 6.16, 7, 7.6, 8.15, 8.5, 8.6,
+		8.5, 6, 2, 0.45, minimumWidth, 0.8, 2.5, 5.5, 7.9 } },
+	{ U"ka", 34, { 1.7, 1.2, 1.6, 3.39, 2.1, 1.4, 1, 0.8, 0.8, 0.8, 1, 1.4,
+		2.1, 2.9, 3.09, 2.1, 0.3, minimumWidth,
+		0.3, 2, 5, 7.6, 8.15, 8.5, 8.6,
+		8.4, 8, 7.5, 6.9, 6, 5.1, 5, 5.5, 7.9 } },
+	{ U"pi", 39, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5,
+		6.6, 2, 0.45, 0.1, minimumWidth } },
+	{ U"ti", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 7.8, 7, 4.5, 2.8, 1.9, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.5, 0.5, 0.3, 0.1, minimumWidth,
+		0.8, 2.5, 8 } },
+	{ U"ki", 35, { 3, 2.9, 2.75, 2.58, 2.7, 6.35, 7.8, 8.9, 9.6, 10.15, 10.55,
+		10.9, 11.15, 11.3, 11.2, 10.8, 8, 6, 2, 0.3, minimumWidth, 0.3, 1.3,
+		0.9, 0.65, 0.55, 0.5, 0.55, 0.7, 0.95, 1.3, 2, 3, 5, 8 } },
+	{ U"pu", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
+		1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
+		10.9, 12.9, 13.15, 13, 12.5, 9.9, 6.6, 2, 0.45, 0.1, minimumWidth } },
+	{ U"tu", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
+		1.05, 1.1, 1.4, 2.2, 2, 1.3, 2, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
+		10.9, 9, 3, 0.4, minimumWidth, 0.8, 2.5, 1.8, 0.32, 0.4, 0.6 } },
+	{ U"ku", 40, { 2.5, 2.5, 2.5, 2.4, 5, 8.1, 8.9, 8.9, 8.4, 7.5, 5.8, 3.9, 2.3, 1.6, 1.2,
+		1.05, 1.1, 1.4, 1.2, 0.3, minimumWidth, 0.3, 2.2, 2.3, 2.8, 3.7, 5, 6.2, 7.9,
+		10.9, 12.9, 13.15, 13, 12.5, 9.9, 3.9, 1.8, 0.32, 0.4, 0.6 } },
+	{ nullptr, 0, { 0 } } };
+}
 
-VocalTract VocalTract_createFromPhone (const char32 *phone) {
+autoVocalTract VocalTract_createFromPhone (const char32 *phone) {
 	try {
 		int i = 0;
 		for (;; i ++) {
-			if (data [i]. phone == NULL)
+			if (! theVocalTract::data [i]. phone)
 				Melder_throw (U"Unknown phone ", phone);
-			if (Melder_equ (data [i]. phone, phone))
+			if (Melder_equ (theVocalTract::data [i]. phone, phone))
 				break;
 		}
-		autoVocalTract me = VocalTract_create (data [i]. numberOfSections, 0.005);
+		autoVocalTract me = VocalTract_create (theVocalTract::data [i]. numberOfSections, 0.005);
 		for (int isection = 1; isection <= my nx; isection ++)
-			my z [1] [isection] = data [i]. area [isection - 1] * 0.0001;
-		return me.transfer();
+			my z [1] [isection] = theVocalTract::data [i]. area [isection - 1] * 0.0001;
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"VocalTract not created from phone.");
 	}
 }
 
 void VocalTract_draw (VocalTract me, Graphics g) {
-	Matrix_drawRows (me, g, 0, 0, 0, 0, 0, 0);
+	Matrix_drawRows (me, g, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
 }
 
-Matrix VocalTract_to_Matrix (VocalTract me) {
+autoMatrix VocalTract_to_Matrix (VocalTract me) {
 	try {
 		autoMatrix thee = Matrix_create (my xmin, my xmax, my nx, my dx, my x1, my ymin, my ymax, my ny, my dy, my y1);
 		NUMvector_copyElements (my z [1], thy z [1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Matrix.");
 	}
 }
 
-VocalTract Matrix_to_VocalTract (Matrix me) {
+autoVocalTract Matrix_to_VocalTract (Matrix me) {
 	try {
 		autoVocalTract thee = VocalTract_create (my nx, my dx);
 		NUMvector_copyElements (my z [1], thy z [1], 1, my nx);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to VocalTract.");
 	}
diff --git a/fon/VocalTract.h b/fon/VocalTract.h
index 0b413b9..2a670b2 100644
--- a/fon/VocalTract.h
+++ b/fon/VocalTract.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Vector.h"
@@ -40,10 +39,10 @@ Thing_define (VocalTract, Vector) {
 		z [1] [1..nx]		// The area, in square metres.
 */
 
-VocalTract VocalTract_create (long nx, double dx);
+autoVocalTract VocalTract_create (long nx, double dx);
 /*
 	Function:
-		create a VocalTract, or NULL if out of memory.
+		create a VocalTract.
 	Preconditions:
 		nx >= 1;
 		dx > 0.0;
@@ -56,23 +55,21 @@ VocalTract VocalTract_create (long nx, double dx);
 		my z [1] [1..nx] == 1e-4; // straight tube, area 1 cm2.
  */
 
-VocalTract VocalTract_createFromPhone (const char32 *phone);
+autoVocalTract VocalTract_createFromPhone (const char32 *phone);
 /* 'phone' is one of the following: a e i o u y1 y2 y3 jery p t k x pa ta ka pi ti ki pu tu ku */
 
 void VocalTract_draw (VocalTract me, Graphics g);   /* Draw a VocalTract into a Graphics. */
 
-Matrix VocalTract_to_Matrix (VocalTract me);
+autoMatrix VocalTract_to_Matrix (VocalTract me);
 /*
 	Create a Matrix from a VocalTract,
 	with deep copy of all of its Matrix attributes, except class information and methods.
-	Return NULL if out of memory.  
 */
 
-VocalTract Matrix_to_VocalTract (Matrix me);
+autoVocalTract Matrix_to_VocalTract (Matrix me);
 /*
 	Function:
 		create a VocalTract from a Matrix.
-		Return NULL if out of memory.
 	Postconditions:
 		thy xmin == my xmin;
 		thy xmax == my xmax;
diff --git a/fon/VocalTract_to_Spectrum.cpp b/fon/VocalTract_to_Spectrum.cpp
index 101ed03..273420a 100644
--- a/fon/VocalTract_to_Spectrum.cpp
+++ b/fon/VocalTract_to_Spectrum.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1991-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -115,7 +114,7 @@ static void TUBE_transfer (double area [], int numberOfSections, double sectionL
 	}
 }
 
-Spectrum VocalTract_to_Spectrum
+autoSpectrum VocalTract_to_Spectrum
 	(VocalTract me, long numberOfFrequencies, double maximumFrequency,
 	 double glottalDamping, int hasRadiationDamping, int hasInternalDamping)
 {
@@ -129,7 +128,7 @@ Spectrum VocalTract_to_Spectrum
 			thy z [1] [ifreq] *= 0.02;
 			thy z [2] [ifreq] *= 0.02;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Spectrum.");
 	}
diff --git a/fon/VocalTract_to_Spectrum.h b/fon/VocalTract_to_Spectrum.h
index c6721b4..d1073fd 100644
--- a/fon/VocalTract_to_Spectrum.h
+++ b/fon/VocalTract_to_Spectrum.h
@@ -1,26 +1,25 @@
 /* VocalTract_to_Spectrum.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "VocalTract.h"
 #include "Spectrum.h"
 
-Spectrum VocalTract_to_Spectrum
+autoSpectrum VocalTract_to_Spectrum
     (VocalTract tube, long numberOfFrequencies, double maximumFrequency,
      double glottalDamping, int hasRadiationDamping, int hasInternalDamping);
 
diff --git a/fon/VoiceAnalysis.cpp b/fon/VoiceAnalysis.cpp
index baec2b6..1f90b25 100644
--- a/fon/VoiceAnalysis.cpp
+++ b/fon/VoiceAnalysis.cpp
@@ -1,20 +1,19 @@
 /* VoiceAnalysis.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "VoiceAnalysis.h"
@@ -131,7 +130,7 @@ double PointProcess_Sound_getShimmer_local (PointProcess me, Sound thee, double
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		return AmplitudeTier_getShimmer_local (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		return AmplitudeTier_getShimmer_local (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -148,7 +147,7 @@ double PointProcess_Sound_getShimmer_local_dB (PointProcess me, Sound thee, doub
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		return AmplitudeTier_getShimmer_local_dB (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		return AmplitudeTier_getShimmer_local_dB (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -165,7 +164,7 @@ double PointProcess_Sound_getShimmer_apq3 (PointProcess me, Sound thee, double t
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		return AmplitudeTier_getShimmer_apq3 (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		return AmplitudeTier_getShimmer_apq3 (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -182,7 +181,7 @@ double PointProcess_Sound_getShimmer_apq5 (PointProcess me, Sound thee, double t
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		return AmplitudeTier_getShimmer_apq5 (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		return AmplitudeTier_getShimmer_apq5 (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -199,7 +198,7 @@ double PointProcess_Sound_getShimmer_apq11 (PointProcess me, Sound thee, double
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		return AmplitudeTier_getShimmer_apq11 (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		return AmplitudeTier_getShimmer_apq11 (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -216,7 +215,7 @@ double PointProcess_Sound_getShimmer_dda (PointProcess me, Sound thee, double tm
 	try {
 		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   /* Autowindowing. */
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		double apq3 = AmplitudeTier_getShimmer_apq3 (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		double apq3 = AmplitudeTier_getShimmer_apq3 (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 		return NUMdefined (apq3) ? 3.0 * apq3 : NUMundefined;
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
@@ -233,14 +232,17 @@ void PointProcess_Sound_getShimmer_multi (PointProcess me, Sound thee, double tm
 	double *local, double *local_dB, double *apq3, double *apq5, double *apq11, double *dda)
 {
 	try {
-		if (tmax <= tmin) tmin = my xmin, tmax = my xmax;   // autowindowing
+		if (tmax <= tmin) {
+			tmin = my xmin;
+			tmax = my xmax;   // autowindowing
+		}
 		autoAmplitudeTier peaks = PointProcess_Sound_to_AmplitudeTier_period (me, thee, tmin, tmax, pmin, pmax, maximumPeriodFactor);
-		if (local)    *local    =       AmplitudeTier_getShimmer_local    (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
-		if (local_dB) *local_dB =       AmplitudeTier_getShimmer_local_dB (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
-		if (apq3)     *apq3     =       AmplitudeTier_getShimmer_apq3     (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
-		if (apq5)     *apq5     =       AmplitudeTier_getShimmer_apq5     (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
-		if (apq11)    *apq11    =       AmplitudeTier_getShimmer_apq11    (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
-		if (dda)      *dda      = 3.0 * AmplitudeTier_getShimmer_apq3     (peaks.peek(), pmin, pmax, maximumAmplitudeFactor);
+		if (local)    *local    =       AmplitudeTier_getShimmer_local    (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
+		if (local_dB) *local_dB =       AmplitudeTier_getShimmer_local_dB (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
+		if (apq3)     *apq3     =       AmplitudeTier_getShimmer_apq3     (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
+		if (apq5)     *apq5     =       AmplitudeTier_getShimmer_apq5     (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
+		if (apq11)    *apq11    =       AmplitudeTier_getShimmer_apq11    (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
+		if (dda)      *dda      = 3.0 * AmplitudeTier_getShimmer_apq3     (peaks.get(), pmin, pmax, maximumAmplitudeFactor);
 	} catch (MelderError) {
 		if (Melder_hasError (U"Too few pulses between ")) {
 			Melder_clearError ();
@@ -280,7 +282,7 @@ void Sound_Pitch_PointProcess_voiceReport (Sound sound, Pitch pitch, PointProces
 		 */
 		double pmin = 0.8 / ceiling, pmax = 1.25 / floor;
 		MelderInfo_writeLine (U"Pulses:");
-		MelderInfo_writeLine (U"   Number of pulses: ", PointProcess_getWindowPoints (pulses, tmin, tmax, NULL, NULL));
+		MelderInfo_writeLine (U"   Number of pulses: ", PointProcess_getWindowPoints (pulses, tmin, tmax, nullptr, nullptr));
 		MelderInfo_writeLine (U"   Number of periods: ", PointProcess_getNumberOfPeriods (pulses, tmin, tmax, pmin, pmax, maximumPeriodFactor));
 		MelderInfo_writeLine (U"   Mean period: ", Melder_fixedExponent (PointProcess_getMeanPeriod (pulses, tmin, tmax, pmin, pmax, maximumPeriodFactor), -3, 6), U" seconds");
 		MelderInfo_writeLine (U"   Standard deviation of period: ", Melder_fixedExponent (PointProcess_getStdevPeriod (pulses, tmin, tmax, pmin, pmax, maximumPeriodFactor), -3, 6), U" seconds");
diff --git a/fon/VoiceAnalysis.h b/fon/VoiceAnalysis.h
index 32b0709..63fb053 100644
--- a/fon/VoiceAnalysis.h
+++ b/fon/VoiceAnalysis.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
diff --git a/fon/WordList.cpp b/fon/WordList.cpp
index f69cd95..26a9743 100644
--- a/fon/WordList.cpp
+++ b/fon/WordList.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1999-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "WordList.h"
@@ -37,7 +36,7 @@
 
 /* BUG: not Unicode-savvy */
 
-Thing_implement (WordList, Data, 0);
+Thing_implement (WordList, Daata, 0);
 
 static long WordList_count (WordList me) {
 	long n = 0;
@@ -48,7 +47,7 @@ static long WordList_count (WordList me) {
 }
 
 void structWordList :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	long n = WordList_count (this);
 	if (! our length) our length = str32len (our string);
 	MelderInfo_writeLine (U"Number of words: ", n);
@@ -133,7 +132,7 @@ void structWordList :: v_writeBinary (FILE *f) {
 	}
 }
 
-WordList Strings_to_WordList (Strings me) {
+autoWordList Strings_to_WordList (Strings me) {
 	try {
 		long totalLength = 0;
 		/*
@@ -165,13 +164,13 @@ WordList Strings_to_WordList (Strings me) {
 		}
 		*q = U'\0';
 		Melder_assert (q - thy string == thy length);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to WordList.");
 	}
 }
 
-Strings WordList_to_Strings (WordList me) {
+autoStrings WordList_to_Strings (WordList me) {
 	try {
 		unsigned char *word = (unsigned char *) my string;   // BUG: explain this
 		autoStrings thee = Thing_new (Strings);
@@ -188,7 +187,7 @@ Strings WordList_to_Strings (WordList me) {
 			thy strings [i] [length] = U'\0';
 			word += length + 1;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Strings.");
 	}
@@ -233,21 +232,19 @@ static int compare (const char32 *word, const char32 *p) {
 static char32 buffer [3333+1];
 
 bool WordList_hasWord (WordList me, const char32 *word) {
-	long p, d;
-	int cf;
 	if (str32len (word) > 3333) return false;
 	Longchar_genericize32 (word, buffer);
 	if (! my length) my length = str32len (my string);
-	p = my length / 2, d = p / 2;
+	long p = my length / 2, d = p / 2;
 	while (d > 20) {
 		p = gotoStart (me, p);
-		cf = compare (buffer, my string + p);
+		int cf = compare (buffer, my string + p);
 		if (cf == 0) return true;
 		if (cf < 0) p -= d; else p += d;
 		d /= 2;
 	}
 	p = gotoStart (me, p);
-	cf = compare (buffer, my string + p);
+	int cf = compare (buffer, my string + p);
 	if (cf == 0) return true;
 	if (cf > 0) {
 		for (;;) {
diff --git a/fon/WordList.h b/fon/WordList.h
index 40ceabe..373fbc7 100644
--- a/fon/WordList.h
+++ b/fon/WordList.h
@@ -4,28 +4,26 @@
  *
  * Copyright (C) 1999-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Strings_.h"
 
 #include "WordList_def.h"
-oo_CLASS_CREATE (WordList, Data);
 
-WordList Strings_to_WordList (Strings me);
-Strings WordList_to_Strings (WordList me);
+autoWordList Strings_to_WordList (Strings me);
+autoStrings WordList_to_Strings (WordList me);
 
 bool WordList_hasWord (WordList me, const char32 *word);
 
diff --git a/fon/WordList_def.h b/fon/WordList_def.h
index 6410d8e..23bcadb 100644
--- a/fon/WordList_def.h
+++ b/fon/WordList_def.h
@@ -1,25 +1,24 @@
-/* File WordList_def.h
+/* WordList_def.h
  *
  * Copyright (C) 1999-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT WordList
-oo_DEFINE_CLASS (WordList, Data)
+oo_DEFINE_CLASS (WordList, Daata)
 
 	#if !oo_DESCRIBING
 		oo_LSTRING (string)
diff --git a/fon/manual_Exp.cpp b/fon/manual_Exp.cpp
index 1b7402f..47f9ee8 100644
--- a/fon/manual_Exp.cpp
+++ b/fon/manual_Exp.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2001-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_Fon.cpp b/fon/manual_Fon.cpp
index 41c243b..53d7339 100644
--- a/fon/manual_Fon.cpp
+++ b/fon/manual_Fon.cpp
@@ -2,36 +2,35 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
 
 static void draw_CreateDurationTier (Graphics g) {
-	static double x [] = { 0, 0.3, 0.6, 0.7, 0.9 }, y [] = { 1, 1, 2.3, 1, 1 };
-	Graphics_setWindow (g, 0, 0.9, 0, 2.5);
+	static double x [] = { 0.0, 0.3, 0.6, 0.7, 0.9 }, y [] = { 1.0, 1.0, 2.3, 1.0, 1.0 };
+	Graphics_setWindow (g, 0.0, 0.9, 0.0, 2.5);
 	Graphics_drawInnerBox (g);
-	Graphics_marksLeftEvery (g, 1, 1, TRUE, TRUE, FALSE);
-	Graphics_marksBottomEvery (g, 1, 0.1, TRUE, TRUE, FALSE);
+	Graphics_marksLeftEvery (g, 1.0, 1.0, true, true, false);
+	Graphics_marksBottomEvery (g, 1.0, 0.1, true, true, false);
 	Graphics_setInner (g);
 	Graphics_setColour (g, Graphics_RED);
 	Graphics_polyline (g, 5, x, y);
 	Graphics_setColour (g, Graphics_BLACK);
 	Graphics_unsetInner (g);
-	Graphics_textBottom (g, TRUE, U"Time (s)");
-	Graphics_textLeft (g, TRUE, U"Relative duration");
+	Graphics_textBottom (g, true, U"Time (s)");
+	Graphics_textLeft (g, true, U"Relative duration");
 }
 
 void manual_Sampling_init (ManPages me);
@@ -438,7 +437,7 @@ Uses auditory filter (width apx. 1 Bark) for masking.
 
 Excitation Excitation_create (double df, long nf);
 	Function:
-		return a new instance of Excitation, or NULL if out of memory.
+		return a new instance of Excitation.
 	Preconditions:
 		df > 0.0;
 		nf >= 1;
@@ -457,11 +456,9 @@ Matrix Excitation_to_Matrix (Excitation me);
 	Function:
 		Create a Matrix from an Excitation,
 		with deep copy of all of its Matrix attributes, except class information and methods.
-	Return NULL if out of memory.  
 Excitation Matrix_to_Excitation (Matrix me);
 	Function:
 		create an Excitation from a Matrix.
-		Return NULL if out of memory.
 	Postconditions:
 		thy xmin == 0.0;
 		thy xmax == my nx / (1 / my dx);
diff --git a/fon/manual_Manual.cpp b/fon/manual_Manual.cpp
index 4758057..1cf228a 100644
--- a/fon/manual_Manual.cpp
+++ b/fon/manual_Manual.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_Picture.cpp b/fon/manual_Picture.cpp
index d34ef17..dfd4e4d 100644
--- a/fon/manual_Picture.cpp
+++ b/fon/manual_Picture.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -94,8 +93,8 @@ static void draw_IPA_consonant_chart (Graphics graphics) {
 { 17, 14, U"\\h-" }, { 17, 13, U"\\9e" },
 { 18, 17, U"\\?-" }, { 18, 14, U"\\hc" }, { 18, 13, U"\\9-" },
 { 19, 17, U"\\?g" }, { 19, 14, U"h" }, { 19, 13, U"\\h^" },
-		{ 0, 0, NULL } };
-		for (int i = 0; symbols [i]. string != NULL; i ++)
+		{ 0, 0, nullptr } };
+		for (int i = 0; symbols [i]. string != nullptr; i ++)
 			drawOneIpaSymbol (graphics, symbols [i]. x, symbols [i]. y, symbols [i]. string);
 	}
 }
@@ -125,8 +124,8 @@ static void draw_IPA_vowel_chart (Graphics graphics) {
 { 4, 2, U"\\ef" }, { 5, 2, U"\\oe" }, { 6.5, 2, U"\\er" }, { 7.5, 2, U"\\kb" }, { 9, 2, U"\\vt" }, { 10, 2, U"\\ct" },
 { 4, 1, U"\\ae" },
 { 4, 0, U"a" }, { 5, 0, U"\\Oe" }, { 9, 0, U"\\as" }, { 10, 0, U"\\ab" },
-		{ 0, 0, NULL } };
-		for (int i = 0; symbols [i]. string != NULL; i ++)
+		{ 0, 0, nullptr } };
+		for (int i = 0; symbols [i]. string != nullptr; i ++)
 			drawOneIpaSymbol (graphics, symbols [i]. x, symbols [i]. y, symbols [i]. string);
 	}
 }
diff --git a/fon/manual_Sampling.cpp b/fon/manual_Sampling.cpp
index af23319..32aa471 100644
--- a/fon/manual_Sampling.cpp
+++ b/fon/manual_Sampling.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_Script.cpp b/fon/manual_Script.cpp
index 1c655a4..a11fd2d 100644
--- a/fon/manual_Script.cpp
+++ b/fon/manual_Script.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -228,7 +227,7 @@ LIST_ITEM (U"4. Those action commands that match the currently selected objects
 NORMAL (U"To execute any of these blue commands, just click on it.")
 MAN_END
 
-MAN_BEGIN (U"buttons file", U"ppgb", 20071204)
+MAN_BEGIN (U"buttons file", U"ppgb", 20151020)
 NORMAL (U"The file into which changes in the availability and visibility of commands in the fixed "
 	"and dynamic menus are recorded.")
 NORMAL (U"The buttons file is written to disk when you quit Praat, "
@@ -243,12 +242,12 @@ NORMAL (U"To hide a built-in command from a fixed or dynamic menu, or to make a
 	"you typically use the @ButtonEditor.")
 ENTRY (U"Where is the buttons file?")
 NORMAL (U"The buttons file is in your Praat @@preferences directory at .")
-NORMAL (U"On Unix the file is called #buttons5, "
-	"for instance ##/people/miep/.praat-dir/buttons5#.")
-NORMAL (U"On Macintosh it is called #Buttons5, "
+NORMAL (U"On Windows the file is called ##Buttons5.ini#, "
+	"for instance ##C:\\bsUsers\\bsMiep\\bsPraat\\bsButtons5.ini#.")
+NORMAL (U"On MacOS it is called #Buttons5, "
 	"for instance ##/Users/miep/Library/Preferences/Praat Prefs/Buttons5#.")
-NORMAL (U"On Windows it is called ##Buttons5.ini#, "
-	"for instance ##C:\\bsDocuments and Settings\\bsMiep\\bsPraat\\bsButtons5.ini#.")
+NORMAL (U"On Linux it is called #buttons5, "
+	"for instance ##/home/miep/.praat-dir/buttons5#.")
 MAN_END
 
 MAN_BEGIN (U"Calculator", U"ppgb", 20021201)
@@ -1190,32 +1189,23 @@ NORMAL (U"This macro mechanism is much more flexible than the usual opaque macro
 	"See the @Scripting tutorial for all the things that you can do in scripts.")
 MAN_END
 
-MAN_BEGIN (U"initialization script", U"ppgb", 20150607)
+MAN_BEGIN (U"initialization script", U"ppgb", 20151020)
 INTRO (U"Your initialization script is a normal @@Praat script@ that is run as soon as you start Praat.")
-#if defined (UNIX) || defined (macintosh)
 NORMAL (U"On Unix or MacOS X, you create an initialization script by creating a file named \"praat-startUp\" "
 	"in the directory /usr/local, "
 	"or putting a file \".praat-user-startUp\" or \"praat-user-startUp\" in your home directory "
 	"(if you rename the Praat executable, these names have to change as well).")
 NORMAL (U"If you have more than one of these files, they are run in the above order.")
-#elif defined (_WIN32)
-NORMAL (U"On Windows NT or XP, you create an initialization script by creating a file named "
+NORMAL (U"On Windows, you create an initialization script by creating a file named "
 	"\"praat-user-startUp\" in your home directory, "
-	"which on my Windows XP computer is C:\\bsDocuments and Settings\\bsPaul.")
+	"which could be C:\\bsUsers\\bsMiep if you are Miep.")
 NORMAL (U"If you have both of these files, they are run in the above order.")
-#endif
 ENTRY (U"Example")
 NORMAL (U"If you like to be greeted by your husband when Praat starts up, "
 	"you could put the following lines in your initialization script:")
-#if defined (UNIX)
-	CODE (U"Read from file: \"/u/miep/helloMiep.wav\"")
-#elif defined (macintosh)
-	CODE (U"Read from file: \"/Users/miep/helloMiep.wav\"")
-#elif defined (_WIN32)
-	CODE (U"Read from file: \"C:\\bsUsers\\bsMiep\\bshelloMiep.wav\"")
-#else
-	#error Some audio file reading example should go here
-#endif
+CODE (U"Read from file: \"C:\\bsUsers\\bsMiep\\bshelloMiep.wav\"   ! Windows")
+CODE (U"Read from file: \"/Users/miep/helloMiep.wav\"   ! Mac")
+CODE (U"Read from file: \"/home/miep/helloMiep.wav\"   ! Linux")
 CODE (U"Play")
 CODE (U"Remove")
 ENTRY (U"What not to use an initialization script for")
@@ -1270,7 +1260,7 @@ FORMULA (U"(1 / (0.463\\.c0.072)) (10^^(0.072/10)(10log(%I/%I__0_))^ \\-- 1) "
 	"= 30 \\.c (1.0167^^SL^ \\-- 1)")
 MAN_END
 
-MAN_BEGIN (U"plug-ins", U"ppgb", 20140212)
+MAN_BEGIN (U"plug-ins", U"ppgb", 20151020)
 INTRO (U"Experienced Praat script writers can distribute their product as a plug-in to Praat.")
 ENTRY (U"The Praat plug-in mechanism")
 NORMAL (U"When Praat starts up, it will execute all Praat scripts called ##setup.praat# "
@@ -1292,9 +1282,9 @@ NORMAL (U"(If you ran this script, Praat would install those two commands in the
 	"but you are now going to install them in a different way.)")
 NORMAL (U"You now put the three scripts in a new directory called ##plugin_Queak#, "
 	"and put this directory in your Praat preferences directory. If you are on Windows, "
-	"you will now have a directory called something like ##C:\\bsDocuments and Settings\\bsYour Name\\bsPraat\\bsplugin_Queak#.")
+	"you will now have a directory called something like ##C:\\bsUsers\\bsYour Name\\bsPraat\\bsplugin_Queak#.")
 NORMAL (U"If you now start up Praat, Praat will automatically execute the script "
-	"##C:\\bsDocuments and Settings\\bsYour Name\\bsPraat\\bsplugin_Queak\\bssetup.praat# "
+	"##C:\\bsUsers\\bsYour Name\\bsPraat\\bsplugin_Queak\\bssetup.praat# "
 	"and thereby install the two buttons. The two buttons will %not be remembered in the buttons file, "
 	"but they will be installed at every Praat start-up. De-installation involves removing (or renaming) the ##plugin_Queak# directory.")
 NORMAL (U"To distribute the Queak plug-in among your colleague guinea pig researchers, you can use any installer program to put "
@@ -1336,19 +1326,19 @@ INTRO (U"An executable text that consists of menu commands and action commands."
 NORMAL (U"See the @Scripting tutorial.")
 MAN_END
 
-MAN_BEGIN (U"preferences directory", U"ppgb", 20101204)
+MAN_BEGIN (U"preferences directory", U"ppgb", 20151020)
 INTRO (U"The Praat preferences directory is the directory where Praat saves the @@preferences file@ and the @@buttons file@, "
 	"and where you can install @@plug-ins@ and save the preferences of your scripts (in your subdirectory of the #apps subdirectory). "
 	"If the preferences directory does not exist, it will automatically be created when you start Praat.")
-ENTRY (U"Unix")
-NORMAL (U"If your home directory is ##/people/miep/#, your Praat preferences directory will be ##/people/miep/.praat-dir/#.")
+ENTRY (U"Windows")
+NORMAL (U"If you are user #Miep, your Praat preferences directory will be ##C:\\bsUsers\\bsMiep\\bsPraat\\bs#.")
 ENTRY (U"Macintosh")
 NORMAL (U"If you are user #miep, your Praat preferences directory will be ##/Users/miep/Library/Preferences/Praat Prefs/#.")
-ENTRY (U"Windows")
-NORMAL (U"If you are user #Miep, your Praat preferences directory will be ##C:\\bsDocuments and Settings\\bsMiep\\bsPraat\\bs#.")
+ENTRY (U"Linux")
+NORMAL (U"If your home directory is ##/home/miep/#, your Praat preferences directory will be ##/home/miep/.praat-dir/#.")
 MAN_END
 
-MAN_BEGIN (U"preferences file", U"ppgb", 20071205)
+MAN_BEGIN (U"preferences file", U"ppgb", 20151020)
 NORMAL (U"The file into which some of your preferences are saved across your sessions with Praat. "
 	"For instance, if you change the font used by the Picture window to Palatino and quit Praat, "
 	"the Picture-window font will still be Palatino when you start Praat again.")
@@ -1357,12 +1347,12 @@ NORMAL (U"The preferences file is written to disk when you quit Praat, "
 	"(but should not edit) with any text editor.")
 ENTRY (U"Where is the preferences file?")
 NORMAL (U"The preferences file is in your Praat @@preferences directory at .")
-NORMAL (U"On Unix the file is called #prefs5, "
-	"for instance ##/people/miep/.praat-dir/prefs5#.")
+NORMAL (U"On Windows it is called ##Preferences5.ini#, "
+	"for instance ##C:\\bsUsers\\bsMiep\\bsPraat\\bsPreferences5.ini#.")
 NORMAL (U"On Macintosh it is called #Prefs5, "
 	"for instance ##/Users/miep/Library/Preferences/Praat Prefs/Prefs5#.")
-NORMAL (U"On Windows it is called ##Preferences5.ini#, "
-	"for instance ##C:\\bsDocuments and Settings\\bsMiep\\bsPraat\\bsPreferences5.ini#.")
+NORMAL (U"On Linux the file is called #prefs5, "
+	"for instance ##/home/miep/.praat-dir/prefs5#.")
 MAN_END
 
 MAN_BEGIN (U"Scripting", U"ppgb", 20141012)
@@ -1391,7 +1381,7 @@ LIST_ITEM1 (U"@@Scripting 5.2. Expressions@ (numeric, string)")
 LIST_ITEM1 (U"@@Scripting 5.3. Jumps@ (if, then, elsif, else, endif)")
 LIST_ITEM1 (U"@@Scripting 5.4. Loops@ (for/endfor, while/endwhile, repeat/until)")
 LIST_ITEM1 (U"@@Scripting 5.5. Procedures@ (\\@ , procedure)")
-LIST_ITEM1 (U"@@Scripting 5.6. Arrays")
+LIST_ITEM1 (U"@@Scripting 5.6. Arrays and dictionaries")
 LIST_ITEM1 (U"@@Scripting 5.7. Including other scripts")
 LIST_ITEM1 (U"@@Scripting 5.8. Quitting@ (exitScript)")
 LIST_ITEM (U"@@Scripting 6. Communication outside the script")
@@ -2226,7 +2216,7 @@ CODE (U"#for i from 1 to n")
 CODE (U"#endfor")
 MAN_END
 
-MAN_BEGIN (U"Scripting 5. Language elements reference", U"ppgb", 20130421)
+MAN_BEGIN (U"Scripting 5. Language elements reference", U"ppgb", 20160405)
 NORMAL (U"In a Praat script, you can use variables, expressions, and functions, of numeric as well as string type, "
 	"and most of the control structures known from other procedural computer languages. "
 	"The way the distinction between numbers and strings is made, may remind you of the programming language Basic.")
@@ -2235,7 +2225,7 @@ LIST_ITEM (U"@@Scripting 5.2. Expressions@ (numeric, string)")
 LIST_ITEM (U"@@Scripting 5.3. Jumps@ (if, then, elsif, else, endif)")
 LIST_ITEM (U"@@Scripting 5.4. Loops@ (for/endfor, while/endwhile, repeat/until)")
 LIST_ITEM (U"@@Scripting 5.5. Procedures@ (\\@ , procedure)")
-LIST_ITEM (U"@@Scripting 5.6. Arrays@")
+LIST_ITEM (U"@@Scripting 5.6. Arrays and dictionaries@")
 LIST_ITEM (U"@@Scripting 5.7. Including other scripts@")
 LIST_ITEM (U"@@Scripting 5.8. Quitting@ (exit)")
 MAN_END
@@ -2659,7 +2649,7 @@ CODE (U"#endproc")
 NORMAL (U"However, this uses variable substitution, a trick better avoided.")
 MAN_END
 
-MAN_BEGIN (U"Scripting 5.6. Arrays", U"ppgb", 20140111)
+MAN_BEGIN (U"Scripting 5.6. Arrays and dictionaries", U"ppgb", 20160405)
 NORMAL (U"You can use arrays of numeric and string variables:")
 CODE (U"#for i #from 1 #to 5")
 	CODE1 (U"square [i] = i * i")
@@ -2673,6 +2663,11 @@ CODE (U"#for i #from 1 #to 5")
 	CODE1 (U"#appendInfoLine: \"The square of \", i, \" is \", square [i]")
 CODE (U"#endfor")
 NORMAL (U"You can use any number of variables in a script, but you can also use Matrix or Sound objects for arrays.")
+NORMAL (U"In the examples above, the %index into the array was always a number. "
+	" A %hash or %dictionary is an array variable where the index is a string:")
+CODE (U"age [\"John\"] = 36")
+CODE (U"age [\"Babs\"] = 39")
+CODE (U"#writeInfoLine: \"John is \", age [\"John\"], \" years old.\"")
 MAN_END
 
 MAN_BEGIN (U"Scripting 5.7. Including other scripts", U"ppgb", 20140111)
@@ -2975,7 +2970,7 @@ NORMAL (U"Most system commands are different on different platforms. "
 CODE (U"#runSystem: \"del \", directory\\$ , \"\\bs*.wav\"")
 NORMAL (U"on Windows, but")
 CODE (U"#runSystem: \"rm \", directory\\$ , \"/*.wav\"")
-NORMAL (U"on Macintosh and Unix.")
+NORMAL (U"on Macintosh and Linux.")
 NORMAL (U"The script will stop running if a system command returns an error. For instance,")
 CODE (U"#runSystem: \"rm \", directory\\$ , \"/*.wav\"")
 NORMAL (U"will stop the script if there are no WAV files in the directory. "
@@ -3143,11 +3138,11 @@ NORMAL (U"In this example, the default button is 2 (i.e. #OK), and the cancel bu
 	"and the variables $$learning_rate$, $directions and $$directions\\$ $ will not be changed (i.e. they might remain undefined).")
 MAN_END
 
-MAN_BEGIN (U"Scripting 6.7. Sending a message to another program", U"ppgb", 20140107)
+MAN_BEGIN (U"Scripting 6.7. Sending a message to another program", U"ppgb", 20151020)
 NORMAL (U"To send messages to running programs that use the Praat shell, "
 	"use $sendpraat (see @@Scripting 8. Controlling Praat from another program@).")
 NORMAL (U"To send a message to another running program that listens to a socket, "
-	"you can use the $sendsocket directive. This works on Unix and Windows only.")
+	"you can use the $sendsocket directive. This works on Linux and Windows only.")
 ENTRY (U"Example")
 NORMAL (U"Suppose we are in the Praat-shell program #Praat, which is a system for doing phonetics by computer. "
 	"From this program, we can send a message to the %%non%-Praat-shell program #MovieEdit, "
@@ -3193,47 +3188,157 @@ CODE (U"nocheck Remove")
 NORMAL (U"This would cause the script to continue even if there is nothing to remove.")
 MAN_END
 
-MAN_BEGIN (U"Scripting 6.9. Calling from the command line", U"ppgb", 20150728)
+MAN_BEGIN (U"Scripting 6.9. Calling from the command line", U"ppgb", 20151031)
 INTRO (U"Previous sections of this tutorial have shown you how to run a Praat script from the Script window. "
 	"However, you can also call a Praat script from the command line (text console) instead. "
 	"Information that would normally show up in the Info window, then goes to %stdout, "
 	"and error messages go to %stderr. "
-	"You cannot use commands like ##View & Edit#.")
-ENTRY (U"Command lines on Unix and Macintosh")
-NORMAL (U"On Unix or MacOS X, you call Praat scripts from the command line like this:")
-CODE (U"> /people/mietta/praat doit.praat 50 hallo")
+	"You cannot use commands in your script that create windows, such as ##View & Edit#. "
+	"Before describing how to achieve this (from section 4 below on), we first describe "
+	"how the normal Praat, with its usual Objects and Picture (and perhaps Info) window, "
+	"can be started from the command line.")
+
+ENTRY (U"1. Starting Praat from the command line")
+NORMAL (U"Before seeing how a Praat script can be called from the command line, "
+	"you should first know that just calling Praat from the command line just starts up Praat "
+	"with its usual GUI (Graphical User Interface), i.e. with its two windows. "
+	"For instance, on Windows you can start the Command Prompt window (the \"Console\"), and type")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\"")
+NORMAL (U"(including the quotes) if Praat.exe is indeed in the folder $$C:\\bsProgram Files$.")
+NORMAL (U"On the Mac, the executable is hidden inside the $$app$ file, so you open a Terminal window "
+	"and type something like")
+CODE (U"/Applications/Praat.app/Contents/MacOS/Praat")
+NORMAL (U"On Linux, you type into the Terminal something like")
+CODE (U"/usr/bin/praat")
+
+ENTRY (U"2. Calling Praat to open data files")
+NORMAL (U"On Windows, you can open Praat with a sound file and a TextGrid file by typing")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\" --open data\\bshello.wav data\\bshello.TextGrid")
 NORMAL (U"or")
-CODE (U"> /Applications/Praat.app/Contents/MacOS/Praat doit.praat 50 hallo")
-NORMAL (U"This opens Praat, runs the script ##doit.praat# with arguments \"50\" and \"hallo\", "
-	"and closes Praat.")
-NORMAL (U"You also have the possibility of running the program interactively from the command line:")
-CODE (U"> /people/mietta/praat -")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\" --open data/hello.wav data/hello.TextGrid")
+NORMAL (U"at least if your current directory (see the Console's $$cd$ and $$dir$ commands) "
+	"contains the folder $$data$ and that folder contains those two files. "
+	"Praat will start up, and shows the two files as a Sound and a TextGrid object in the list. "
+	"If Praat was already running when you typed the command, "
+	"the two files are added as objects to the existing list in Praat.")
+NORMAL (U"On the Mac, you do")
+CODE (U"/Applications/Praat.app/Contents/MacOS/Praat --open data/hello.wav data/hello.TextGrid")
+NORMAL (U"and on Linux")
+CODE (U"/usr/bin/praat --open data/hello.wav data/hello.TextGrid")
+
+ENTRY (U"3. Calling Praat to open a script")
+NORMAL (U"On Windows, when you type")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\" --open \"my script.praat\"")
+NORMAL (U"Praat will start up, opening the script $$my script.praat$$ in a script window. "
+	"If Praat was already running when you typed the command, "
+	"the script window will appear within the already running instantiation of Praat.")
+NORMAL (U"On the Mac, you do")
+CODE (U"/Applications/Praat.app/Contents/MacOS/Praat --open \"my script.praat\"")
+NORMAL (U"and on Linux")
+CODE (U"/usr/bin/praat data/hello.wav --open \"my script.praat\"")
+NORMAL (U"Note that on all three platforms, you have to supply quotes around the file name "
+	"if that file name contains one or more spaces, as here between $$my$ and $$script$ "
+	"or above between $$Program$ and $$Files$. This is because the script languages of "
+	"the Console or Terminal use spaces for separating commands and arguments.")
+
+ENTRY (U"4. Calling Praat to run a script")
+NORMAL (U"Now we are ready to discuss how to run Praat without a GUI.")
+NORMAL (U"On Windows, when you type")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\" --run \"my script.praat\"")
+NORMAL (U"Praat will execute the script $$my script.praat$$ without showing Praat's GUI, "
+	"i.e. without showing its usual two windows. "
+	"In fact, any output that would normally go to the Info window, "
+	"will now go directly to the Console window in which you typed te command. "
+	"If Praat was already running when you typed the command, "
+	"its windows will not be affected. In fact, the GUI-instantiation of Praat and the Console-instantiation "
+	"can run simultaneously without them noticing each other's existence; "
+	"moreover, multiple Console-instantiations of Praat can run simultaneously, each in their own Console.")
+NORMAL (U"On the Mac, you type")
+CODE (U"/Applications/Praat.app/Contents/MacOS/Praat --run \"my script.praat\"")
+NORMAL (U"and on Linux")
+CODE (U"/usr/bin/praat data/hello.wav --run \"my script.praat\"")
+NORMAL (U"What happens on all platforms is that the Console or Terminal starts up Praat, "
+	"then Praat executes the script, and then Praat closes itself.")
+
+ENTRY (U"5. Calling Praat to run a script with arguments")
+NORMAL (U"Consider the following script:")
+CODE (U"form Test command line calls")
+CODE1 (U"sentence First_text I love you")
+CODE1 (U"real Beep_duration 0.4")
+CODE1 (U"sentence Second_text Me too")
+CODE (U"endform")
+CODE (U"")
+CODE (U"writeInfoLine: \"She: \"\"\", first_text\\$ , \"\"\"\"")
+CODE (U"appendInfoLine: \"He: \"\"\", second_text\\$ , \"\"\"\"")
+CODE (U"")
+CODE (U"synth1 = Create SpeechSynthesizer: \"English\", \"f1\"")
+CODE (U"Play text: first_text\\$ ")
+CODE (U"Create Sound as pure tone: \"beep\", 1, 0.0, beep_duration,")
+CODE (U"... 44100, 440, 0.2, 0.01, 0.01")
+CODE (U"Play")
+CODE (U"Remove")
+CODE (U"synth2 = Create SpeechSynthesizer: \"English\", \"m1\"")
+CODE (U"Play text: second_text\\$ ")
+NORMAL (U"When you run this script from within Praat, it writes two lines to the Info window "
+	"and plays first a female voice speaking the first sentence, then a beep, and then a male voice "
+	"speaking the second sentence. To make this happen from the Windows command line instead, you type")
+CODE (U"\"C:\\bsProgram Files\\bsPraat.exe\" --run testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"")
+NORMAL (U"In the Mac terminal, you type")
+CODE (U"/Applications/Praat.app/Contents/MacOS/Praat --run testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"")
+NORMAL (U"and in the Linux terminal, you do")
+CODE (U"/usr/bin/praat --run testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"")
+NORMAL (U"Note that each argument that contains one or more spaces has to be put within quotes, "
+	"on all three platforms. As with #runScript, Praat will not present a form window, "
+	"but simply run the script with the arguments given on the command line "
+	"(see @@Scripting 6.1. Arguments to the script@).")
+NORMAL (U"What then happens on all three platforms is that a console instantiation of Praat writes "
+	"the two lines to the Console window and plays the three sounds.")
+
+ENTRY (U"6. Calling Praat from other programs such as Python")
+NORMAL (U"You can run the above script from several programming languages, not just from a Console or Terminal. "
+	"In Python, for instance, you can do it using the same syntax as you would use in the Console or Terminal:")
+CODE (U"import os")
+CODE (U"os.system ('\"C:\\bs\\bsProgram Files\\bs\\bsPraat.exe\" --run testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"')")
+NORMAL (U"Note that you have to double the backslashes!")
+NORMAL (U"A disadvantage of the $$os.system$ method is that you have to use quotes within quotes. "
+	"A somewhat cleaner approach is:")
+CODE (U"import subprocess")
+CODE (U"subprocess.call(['C:\\bs\\bsProgram Files\\bs\\bsPraat.exe', '--run', 'testCommandLineCalls.praat', 'I love you', '0.4', 'Me too'])")
+NORMAL (U"This way you specify the arguments directly, with quotes only because they are all strings, "
+	"but without having to worry about spaces. And perhaps even more importantly, this syntax "
+	"makes it easy to use variables as arguments, as in:")
+CODE (U"first_line = 'I love you'")
+CODE (U"second_line = 'me too'")
+CODE (U"subprocess.call(['C:\\bs\\bsProgram Files\\bs\\bsPraat.exe', '--run', 'testCommandLineCalls.praat', first_line, '0.4', second_line])")
+NORMAL (U"Many other programs beside Python have a $$system$-like command, so that you can run a command like")
+CODE (U"system ('\"C:\\bs\\bsProgram Files\\bs\\bsPraat.exe\" --run testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"')")
+
+ENTRY (U"7. What happens if I specify neither --open nor --run?")
+NORMAL (U"If you specify neither $$--open$ nor $$--run$, Praat's behaviour is not guaranteed. "
+	"If you type something like")
+CODE (U"praat testCommandLineCalls.praat \"I love you\" 0.4 \"Me too\"")
+NORMAL (U"into a Console or Terminal window by hand, Praat will typically run the script. "
+	"Also, the $$--run$ option can probably be left out from the Python call above. "
+	"However, if you redirect the output of Praat to a file or pipe, you cannot typically leave out the $$--run$ option; "
+	"if you do, Praat may start its GUI and %open the file rather than run it.")
+
+ENTRY (U"8. Running Praat interactively from the command line")
+NORMAL (U"On the Mac and Linux, you have the possibility of running the program interactively from the command line:")
+CODE (U"> /usr/bin/praat -")
 NORMAL (U"You can then type in any of the fixed and dynamic commands, and commands that handle object selection, "
-	"like #select. This method also works in pipes:")
-CODE (U"> echo \"Statistics...\" | /people/mietta/praat -")
-ENTRY (U"Command lines on Windows")
-NORMAL (U"On Windows, you call Praat scripts from the command line like this:")
-CODE (U"e:\\bspraatcon.exe e:\\bsdoit.praat 50 hallo")
-NORMAL (U"Note that you use the program ##praatcon.exe# instead of ##praat.exe#. "
-	"The script will write to the console output in UTF-16 Little Endian encoding. "
-	"If you want to use ISO Latin-1 encoding instead, or if you want to use praatcon's output in a pipe or redirect it to a file, "
-	"use ##praatcon -a# or ##praatcon --ansi# instead.")
-ENTRY (U"How to get arguments into the script")
-NORMAL (U"In the above example, the script ##doit.praat# requires two arguments. In the script ##doit.praat#, "
-	"you use #form and #endform to receive these arguments. See @@Scripting 6.1. Arguments to the script at . "
-	"As with #runScript, Praat will not present a form window, but simply run the script "
-	"with the arguments given on the command line. The example given in @@Scripting 6.1. Arguments to the script@ "
-	"will be called in the following way:")
-CODE (U"> /people/mietta/praat playSine.praat 550 0.9")
-NORMAL (U"or")
-CODE (U"e:\\bspraatcon.exe playSine.praat 550 0.9")
-ENTRY (U"Calling Praat from a web server")
+	"such as #selectObject. This method also works in pipes:")
+CODE (U"> echo \"Report memory use\" | /usr/bin/praat -")
+
+ENTRY (U"9. Calling Praat from a web server")
 NORMAL (U"If you call Praat from a web server, you typically do not want to read and write its preferences and buttons files. "
 	"To achieve this, you use the ##--no-pref-files# command line option before the script name:")
-CODE (U"> /users/apache/praat --no-pref-files /user/apache/scripts/computeAnalysis.praat 1234 blibla")
-ENTRY (U"Command line options")
-TAG (U"##-a#, ##--ansi#")
-DEFINITION (U"Use ISO Latin-1 encoding (see above; not recommended).")
+CODE (U"system ('/users/apache/praat --run --no-pref-files /user/apache/scripts/computeAnalysis.praat 1234 blibla')")
+
+ENTRY (U"10. All command line options")
+TAG (U"##--open")
+DEFINITION (U"Interpret the command line arguments as files to be opened in the GUI.")
+TAG (U"##--run")
+DEFINITION (U"Interpret the command line arguments as a script file name and its arguments.")
 TAG (U"##--no-pref-files#")
 DEFINITION (U"Ignore the preferences file and the buttons file at start-up, and don't write them when quitting (see above).")
 TAG (U"##--no-plugins#")
@@ -3241,6 +3346,14 @@ DEFINITION (U"Don't activate the plugins at start-up.")
 TAG (U"##--pref-dir=#/var/www/praat_plugins")
 DEFINITION (U"Set the preferences directory to /var/www/praat_plugins (for instance). "
 	"This can come in handy if you require access to preference files and/or plugins that are not in your home directory.")
+TAG (U"##--version")
+DEFINITION (U"Print the Praat version.")
+TAG (U"##--help")
+DEFINITION (U"Print this list of command line options.")
+TAG (U"##-a#, ##--ansi#")
+DEFINITION (U"On Windows: use ISO Latin-1 encoding instead of the Console's native UTF-16 Little Endian encoding. "
+	"This is not recommended, but might be necessary if you want to use Praat in a pipe "
+	"or with redirection to a file.")
 MAN_END
 
 MAN_BEGIN (U"Scripting 7. Scripting the editors", U"ppgb", 20040222)
@@ -3366,21 +3479,21 @@ LIST_ITEM (U"@@Scripting 8.2. The sendpraat program")
 LIST_ITEM (U"@@Scripting 8.3. The sendpraat directive")
 MAN_END
 
-MAN_BEGIN (U"Scripting 8.1. The sendpraat subroutine", U"ppgb", 20140212)
+MAN_BEGIN (U"Scripting 8.1. The sendpraat subroutine", U"ppgb", 20151020)
 INTRO (U"A subroutine for sending messages to a %running Praat. "
-	"Also a Unix, MacOS, or DOS console program with the same purpose.")
+	"Also a Windows console, MacOS, or Linux console program with the same purpose.")
 ENTRY (U"Syntax")
 LIST_ITEM (U"##sendpraat (void *#%display##, const char *#%program##, long #%timeOut##, char *#%text##);")
 ENTRY (U"Arguments")
 TAG (U"%display")
 DEFINITION (U"the display pointer if the subroutine is called from a running X program; "
-	"if NULL, sendpraat will open the display by itself. On Windows and Macintosh, "
+	"if null, sendpraat will open the display by itself. On Windows and Macintosh, "
 	"this argument is ignored.")
 TAG (U"%program")
 DEFINITION (U"the name of a running program that uses the Praat shell, e.g. \"Praat\" or \"ALS\". "
-	"The first letter may be specified as lower or upper case; it will be converted to lower case for Unix "
-	"and to upper case for Macintosh and Windows.")
-TAG (U"%timeOut (Unix and Macintosh only)")
+	"The first letter may be specified as lower or upper case; it will be converted "
+	"to upper case for Windows or MacOS and to lower case for Linux.")
+TAG (U"%timeOut (MacOS and Linux only)")
 DEFINITION (U"the number of seconds that sendpraat will wait for an answer "
 	"before writing an error message. A %timeOut of 0 means that "
 	"the message will be sent asynchronously, i.e., that sendpraat "
@@ -3391,10 +3504,10 @@ ENTRY (U"Example 1: killing a program")
 CODE (U"char message [100], *errorMessage;")
 CODE (U"strcpy (message, \"Quit\");")
 CODE (U"errorMessage = #sendpraat (NULL, \"praat\", 0, message);")
-CODE (U"if (errorMessage != NULL) fprintf (stderr, \"\\% s\", errorMessage);")
+CODE (U"if (errorMessage) fprintf (stderr, \"\\% s\", errorMessage);")
 NORMAL (U"This causes the program #Praat to quit (gracefully), because #Quit is a fixed "
 	"command in one of the menus of that program. "
-	"On Unix and Macintosh, sendpraat returns immediately; on Windows, the %timeOut argument is ignored. "
+	"On MacOS and Linux, sendpraat returns immediately; on Windows, the %timeOut argument is ignored. "
 	"The return value %errorMessage is a statically allocated string internal to sendpraat, "
 	"and is overwritten by the next call to sendpraat.")
 ENTRY (U"Example 2: playing a sound file in reverse")
@@ -3406,7 +3519,7 @@ CODE (U"sprintf (message, \"Read from file... \\% s\\bsnPlay reverse\\bsnRemove\
 CODE (U"errorMessage = #sendpraat (NULL, \"praat\", 1000, message);")
 NORMAL (U"This will work because ##Play reverse# is an action command "
 	"that becomes available in the dynamic menu when a Sound is selected. "
-	"On Unix, sendpraat will allow #Praat at most 1000 seconds to perform this.")
+	"On Linux, sendpraat will allow #Praat at most 1000 seconds to perform this.")
 ENTRY (U"Example 3: executing a large script file")
 NORMAL (U"Sometimes, it may be unpractical to send a large script directly to #sendpraat. "
 	"Fortunately, the receiving program knows #runScript:")
@@ -3430,8 +3543,8 @@ NORMAL (U"To start a program from the command line instead and sending it a mess
 	"See @@Scripting 6.9. Calling from the command line at .")
 MAN_END
 
-MAN_BEGIN (U"Scripting 8.2. The sendpraat program", U"ppgb", 20140212)
-INTRO (U"A Unix or DOS console program for sending messages to a %running Praat program.")
+MAN_BEGIN (U"Scripting 8.2. The sendpraat program", U"ppgb", 20151020)
+INTRO (U"A Windows console or Unix (MacOS, Linux) terminal program for sending messages to a %running Praat program.")
 ENTRY (U"Syntax")
 CODE (U"#sendpraat [%timeOut] %program %message...")
 NORMAL (U"For the meaning of the arguments, see @@Scripting 8.1. The sendpraat subroutine|the sendpraat subroutine at .")
diff --git a/fon/manual_annotation.cpp b/fon/manual_annotation.cpp
index bf61994..f11b00b 100644
--- a/fon/manual_annotation.cpp
+++ b/fon/manual_annotation.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_exampleSound.cpp b/fon/manual_exampleSound.cpp
index 2997bc6..dcff7f3 100644
--- a/fon/manual_exampleSound.cpp
+++ b/fon/manual_exampleSound.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2004-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "manual_exampleSound.h"
@@ -2580,31 +2579,31 @@ static const char *data [] = {
 "74??83??;9??=9??<1??6;??>5?>>2?>",
 "57??58??0:??19??5=??3<??=4?>" };
 
-Sound manual_exampleSound (void) {
-	static Sound me = NULL;
-	if (me == NULL) {
+Sound manual_exampleSound () {
+	static autoSound me;
+	if (! me) {
 		long istring = 0, ichar = 24;
 		me = Sound_create (1, 0.0, 20457.0/44100, 20457, 1.0/44100, 0.5/44100);
 		for (long isamp = 1; isamp <= 20457; isamp ++) {
-			unsigned short part1 = data [istring] [ichar] - '0';
-			unsigned short part2 = data [istring] [++ ichar] - '0';
-			unsigned short part3 = data [istring] [++ ichar] - '0';
-			unsigned short part4 = data [istring] [++ ichar] - '0';
-			my z [1] [isamp] = (signed short) ((part3 << 12) + (part4 << 8) + (part1 << 4) + part2) / 32768.0;
+			uint16 part1 = data [istring] [ichar] - '0';
+			uint16 part2 = data [istring] [++ ichar] - '0';
+			uint16 part3 = data [istring] [++ ichar] - '0';
+			uint16 part4 = data [istring] [++ ichar] - '0';
+			my z [1] [isamp] = (int16) ((part3 << 12) + (part4 << 8) + (part1 << 4) + part2) / 32768.0;
 			if (++ ichar == 32) istring ++, ichar = 0;
 		}
 	}
-	return me;
+	return me.get();   // reference
 }
 
-Pitch manual_examplePitch (void) {
-	static Pitch me = NULL;
-	if (me == NULL) {
+Pitch manual_examplePitch () {
+	static autoPitch me;
+	if (! me) {
 		Melder_progressOff ();
 		me = Sound_to_Pitch (manual_exampleSound (), 0.0, 200.0, 500.0);
 		Melder_progressOn ();
 	}
-	return me;
+	return me.get();   // reference
 }
 
 /* End of file manual_exampleSound.cpp */
diff --git a/fon/manual_exampleSound.h b/fon/manual_exampleSound.h
index 05ecef6..edb82b9 100644
--- a/fon/manual_exampleSound.h
+++ b/fon/manual_exampleSound.h
@@ -4,26 +4,25 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Sound.h"
 #include "Pitch.h"
 
-Sound manual_exampleSound (void);
-Pitch manual_examplePitch (void);
+Sound manual_exampleSound ();
+Pitch manual_examplePitch ();
 
 /* End of file manual_exampleSound.h */
 #endif
diff --git a/fon/manual_formant.cpp b/fon/manual_formant.cpp
index 7954bf1..5686e2e 100644
--- a/fon/manual_formant.cpp
+++ b/fon/manual_formant.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_glossary.cpp b/fon/manual_glossary.cpp
index fdb2d56..35e92fe 100644
--- a/fon/manual_glossary.cpp
+++ b/fon/manual_glossary.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2008,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -22,10 +21,10 @@
 #include "manual_exampleSound.h"
 
 static void draw_TimeDomain_Sound (Graphics g) {
-	Sound_draw (manual_exampleSound (), g, 0, 0, 0, 0, TRUE, U"curve");
+	Sound_draw (manual_exampleSound (), g, 0, 0, 0, 0, true, U"curve");
 }
 static void draw_TimeDomain_Pitch (Graphics g) {
-	Pitch_draw (manual_examplePitch (), g, 0, 0, 200.0, 500.0, TRUE, Pitch_speckle_NO, kPitch_unit_HERTZ);
+	Pitch_draw (manual_examplePitch (), g, 0, 0, 200.0, 500.0, true, Pitch_speckle_NO, kPitch_unit_HERTZ);
 }
 
 void manual_glossary_init (ManPages me);
diff --git a/fon/manual_pitch.cpp b/fon/manual_pitch.cpp
index f9317c2..c66e219 100644
--- a/fon/manual_pitch.cpp
+++ b/fon/manual_pitch.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_programming.cpp b/fon/manual_programming.cpp
index d3442fb..89c8ab2 100644
--- a/fon/manual_programming.cpp
+++ b/fon/manual_programming.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -22,7 +21,372 @@
 void manual_programming_init (ManPages me);
 void manual_programming_init (ManPages me) {
 
-MAN_BEGIN (U"Programming with Praat", U"ppgb", 20150713)
+MAN_BEGIN (U"Interoperability", U"ppgb", 20151107)
+INTRO (U"You can use Praat in workflows that involve other programs.")
+ENTRY (U"1. General ways to access Praat from other programs")
+NORMAL (U"• To send messages from another program to a running Praat, use @@sendpraat at . "
+	"This method is used by the programs CHAT (Childes) and Phon to view a sound in a Sound window.")
+NORMAL (U"• To execute a Praat script as a subprocess of another program, see @@Scripting 6.9. Calling from the command line at .")
+ENTRY (U"2. General ways to access other programs from Praat")
+NORMAL (U"• To execute another program as a subprocess of Praat, see @@Scripting 6.5. Calling system commands at .")
+ENTRY (U"3. Files")
+NORMAL (U"• Many programs read and/or write Praat TextGrid files. If you want create a TextGrid reading or writing procedure, "
+	"consult @@TextGrid file formats at .")
+MAN_END
+
+MAN_BEGIN (U"TextGrid file formats", U"ppgb", 20151107)
+INTRO (U"This page describes the syntax and semantics of TextGrid files that Praat can read and/or write.")
+ENTRY (U"1. The full text format of a minimal TextGrid")
+NORMAL (U"If you record a Sound with a druation of 2.3 seconds, and then do ##To TextGrid...#, "
+	"you are asked to provide tier names and to say which of these tiers are point tiers. "
+	"If you click OK without changing the settings from their standard values, "
+	" you obtain a TextGrid with two interval tiers, called %Mary and %John, and one point tier called %bell. "
+	"When you save this TextGrid to disk by choosing @@Save as text file...@ from the #New menu, "
+	"the resulting text file, when opened in a text editor, will look as follows:")
+CODE (U"File type = \"ooTextFile\"")
+CODE (U"Object class = \"TextGrid\"")
+CODE (U"")
+CODE (U"xmin = 0")
+CODE (U"xmax = 2.3")
+CODE (U"tiers? <exists>")
+CODE (U"size = 3")
+CODE (U"item []:")
+	CODE1 (U"item [1]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"Mary\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 1")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"\"")
+	CODE1 (U"item [2]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"John\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 1")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"\"")
+	CODE1 (U"item [3]:")
+		CODE2 (U"class = \"TextTier\"")
+		CODE2 (U"name = \"bell\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"points: size = 0")
+NORMAL (U"This text file contains the following pieces of data, which Praat will use when reading this file from disk "
+	"and turning it into a TextGrid object again:")
+NORMAL (U"• The text \"ooTextFile\", which appears in the first line of any text file that you write with @@Save as text file...@, "
+	"i.e. not only in text files created from a TextGrid object, but also in text files created from e.g. a Pitch "
+	"or ExperimentMFC object or from any other of the hundreds of types of objects that Praat can have in its Objects list.")
+NORMAL (U"• The text \"TextGrid\", which designates the type of the object that has been saved to this file.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of this TextGrid.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the TextGrid.")
+NORMAL (U"• The flag <exists>, which tells us that this TextGrid contains tiers (this value would be <absent> "
+	"if the TextGrid contained no tiers, in which case the file would end here; however, you cannot really create TextGrid objects "
+	"without tiers in Praat, so this issue can be ignored).")
+NORMAL (U"• The integer number 3, which is the number of tiers that you created.")
+NORMAL (U"• The text \"IntervalTier\", which designates the type of the first tier (an interval tier, therefore).")
+NORMAL (U"• The text \"Mary\", which is the name you gave to the first tier.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of the first tier.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the first tier. "
+	"When you create a TextGrid with an interval tier, the time domain of the interval tier is automatically set equal "
+	"to the time domain of the whole TextGrid.")
+NORMAL (U"• The integer number 1, which is the number of intervals in the first tier. "
+	"Although you did not add any intervals and did not add any text to the first tier, "
+	"all interval tiers always contain at least one interval, which is created when you create the TextGrid.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of the first (only) interval of the first tier.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the first interval of the first tier. "
+	"The interval that is automatically created for you when you create a TextGrid with an interval tier, "
+	"spans the whole tier.")
+NORMAL (U"• The text \"\", which is the contents of the interval on the first tier. This text is empty.")
+NORMAL (U"• The text \"IntervalTier\", which gives the type of the second tier (again an interval tier).")
+NORMAL (U"• The text \"John\", which is the name you gave to the second tier.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of the second tier.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the second tier.")
+NORMAL (U"• The integer number 1, which is the number of intervals in the second tier.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of the first (only) interval of the second tier.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the first interval of the second tier.")
+NORMAL (U"• The text \"\", which is the contents of the interval on the second tier. This text is empty.")
+NORMAL (U"• The text \"TextTier\", which designates the type of the third tier (a point tier this time).")
+NORMAL (U"• The text \"bell\", which is the name you gave to the third tier.")
+NORMAL (U"• The real number 0, which is the starting time (in seconds) of the third tier.")
+NORMAL (U"• The real number 2.3, which is the end time (in seconds) of the third tier.")
+NORMAL (U"• The integer number 0, which is the number of points in the third tier. "
+	"A newly created point tier contains no points yet.")
+NORMAL (U"You will have noticed that the file contains a lot of stuff that was not mentioned in this list. "
+	"All of that stuff are %comments that are present only to help the human reader understand the contents "
+	"of the file: labels for all tiers (such as $$item [2]$), labels for the starting times of the TextGrid or "
+	"a tier or an interval ($xmin), labels for end times ($xmax); labels for the number of tiers or "
+	"intervals or points ($size), and little numbers enclosed in square brackets to tell the reader where they are ($$[2]$).")
+NORMAL (U"When reading a text file containing a TextGrid (or any other object), Praat totally ignores these comments, "
+	"so if you e.g. replace $$[2]$ with $$[4]$ somewhere, Praat will not notice. Praat will consider as data only the following "
+	"types of information in the file:")
+LIST_ITEM (U"• free-standing numbers, such as $$0$ and $$2.3$ above, but not $$[1]$ or $$[3]$;")
+LIST_ITEM (U"• free-standing text enclosed within double quotes, such as $$\"TextGrid\"$ and $$\"\"$ above;")
+LIST_ITEM (U"• free-standing flags, such as $$<exists>$ above (this is the only flag that appears in TextGrid files; "
+	"see @ExperimentMFC for a much broader use of flags).")
+NORMAL (U"In this list, \"free-standing\" means that the number, text or flag is preceded by the beginning of the file, "
+	"the beginning of a line, or a space, and that it is followed by the end of the file, the end of a line, or a space.")
+ENTRY (U"2. The shortest text format of a minimal TextGrid")
+NORMAL (U"From the description above of what in the file is considered data (namely free-standing numbers, texts and flags) "
+	"and what is not (namely everything else), you can conclude that Praat will be able to read a much shorter version of "
+	"the file above. And indeed, when you choose @@Save as short text file...@ from the #New menu, your file will consist of "
+	"the following text, "
+	"with every piece of data alone on a separate line:")
+CODE (U"File type = \"ooTextFile\"")
+CODE (U"Object class = \"TextGrid\"")
+CODE (U"")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"<exists>")
+CODE (U"3")
+CODE (U"\"IntervalTier\"")
+CODE (U"\"Mary\"")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"1")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"\"\"")
+CODE (U"\"IntervalTier\"")
+CODE (U"\"John\"")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"1")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"\"\"")
+CODE (U"\"TextTier\"")
+CODE (U"\"bell\"")
+CODE (U"0")
+CODE (U"2.3")
+CODE (U"0")
+NORMAL (U"That's much less human-readable than before, but equally computer-readable, at least by Praat. "
+	"When you write your own TextGrid file recognizer, you should be able to interpret both versions shown above, "
+	"and also any version that is intermediate between the two, as long as it has the data written as freestanding numbers, "
+	"texts, and flags. For instance, a human-readable TextGrid file that can be interpreted by Praat could look "
+	"as follows:")
+CODE (U"\"ooTextFile\"")
+CODE (U"\"TextGrid\"")
+CODE (U"0  2.3  ! time domain of TextGrid")
+CODE (U"<exists>")
+CODE (U"3 tiers")
+CODE (U"\"IntervalTier\"  \"Mary\"  ! type and name of tier 1")
+CODE (U"0  2.3  ! time domain of tier 1")
+CODE (U"1 interval coming")
+CODE (U"0  2.3  \"\"  ! interval 1 on tier 1")
+CODE (U"\"IntervalTier\"  \"John\"  ! type and name of tier 2")
+CODE (U"0  2.3  ! time domain of tier 2")
+CODE (U"1 interval coming")
+CODE (U"0  2.3  \"\"  ! interval 1 on tier 2")
+CODE (U"\"TextTier\"  \"bell\"  ! type and name of tier 3")
+CODE (U"0  2.3  ! time domain of tier 3")
+CODE (U"0 points coming")
+NORMAL (U"Here we see that multiple pieces of data can be together on a line, as long as each of them stands free; "
+	"the only layout requirement is that the text \"ooTextFile\" has to be alone on the first line.")
+NORMAL (U"Another thing we see is that there is an additional type of comment: everything that follows an "
+	"exclamation mark on the same line is considered a comment. Thus, although some lines seem to end in a free-standing "
+	"number (1, 2, or 3), those numbers do not count as data, because they are part of a comment that follows "
+	"an exclamation mark.")
+ENTRY (U"3. Reading a TextGrid file")
+NORMAL (U"Reading the contents of a TextGrid file into your own data structure is fairly easy. "
+	"For instance, to figure out how many intervals there in a tier, you do not have to read multiple lines and then backtrack "
+	"to see where the list of intervals ends. Instead, the number of intervals is given before the intervals are enumerated.")
+ENTRY (U"4. Writing a TextGrid file")
+NORMAL (U"Writing the contents of a TextGrid file involves deciding on a level of human readability.")
+ENTRY (U"5. A TextGrid file with more than the minimal content")
+NORMAL (U"The above example was about a rather uninteresting TextGrid object, with no text in it. Suppose instead that "
+	"the sound was a recording of speaker saying a sentence, and your TextGrid annotates the sentence orthographically "
+	"as well as phonetically, and also annotates two chimes of the bell:")
+SCRIPT (6.0, 3.0, U""
+	"textgrid = Create TextGrid: 0, 2.3, \"sentence phonemes bell\", \"bell\"\n"
+	"Set interval text: 1, 1, \"říkej \"\"ahoj\"\" dvakrát\"\n"
+	"Insert boundary: 2, 0.7\n"
+	"Insert boundary: 2, 1.6\n"
+	"Set interval text: 2, 1, \"r̝iːkɛj\"\n"
+	"Set interval text: 2, 2, \"ʔaɦɔj\"\n"
+	"Set interval text: 2, 3, \"dʋakraːt\"\n"
+	"Insert point: 3, 0.9, \"ding\"\n"
+	"Insert point: 3, 1.3, \"dong\"\n"
+	"Draw: 0.0, 0.0, 1, 1, 1\n")
+NORMAL (U"When you save this as a full text file, it will look as follows:")
+CODE (U"File type = \"ooTextFile\"")
+CODE (U"Object class = \"TextGrid\"")
+CODE (U"")
+CODE (U"xmin = 0")
+CODE (U"xmax = 2.3")
+CODE (U"tiers? <exists>")
+CODE (U"size = 3")
+CODE (U"item []:")
+	CODE1 (U"item [1]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"sentence\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 1")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"říkej \"\"ahoj\"\" dvakrát\"")
+	CODE1 (U"item [2]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"phonemes\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 3")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 0.7")
+			CODE3 (U"text = \"r̝iːkɛj\"")
+		CODE2 (U"intervals [2]:")
+			CODE3 (U"xmin = 0.7")
+			CODE3 (U"xmax = 1.6")
+			CODE3 (U"text = \"ʔaɦɔj\"")
+		CODE2 (U"intervals [3]:")
+			CODE3 (U"xmin = 1.6")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"dʋakraːt\"")
+	CODE1 (U"item [3]:")
+		CODE2 (U"class = \"TextTier\"")
+		CODE2 (U"name = \"bell\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"points: size = 2")
+		CODE2 (U"points [1]:")
+			CODE3 (U"number = 0.9")
+			CODE3 (U"mark = \"ding\"")
+		CODE2 (U"points [2]:")
+			CODE3 (U"number = 1.3")
+			CODE3 (U"mark = \"dong\"")
+NORMAL (U"We now see how points on a point tier are written: with their time ($number) and their text ($mark). "
+	"As usual, most of the contents of the file is comments; for instance, older TextGrid files may call "
+	"the time of the point $time instead of $number, but as these are just comments, Praat will ignore these words "
+	"when reading the file, and so should anybody who programs a TextGrid file parser.")
+NORMAL (U"A thing to note is the doubling of double quotes. The sentence in tier 1 contains double quotes around %ahoj, "
+	"as you can see in the picture above, and you typed only these two double quotes in the TextGrid window to start with. "
+	"However, the file format uses double quotes to mark texts, so if a text itself contains a double quote, "
+	"something special has to be done about it lest Praat think that you're ending the text. The solution that Praat chooses "
+	"is that a double quote that appears in a text is written as a %doubled double quote in the text file, as above on tier 1.")
+ENTRY (U"6. Restrictions in a TextGrid object")
+NORMAL (U"TextGrid object maintain several invariants, some stronger and some weaker.")
+NORMAL (U"The two strongest invariants within an interval tier are %%positive duration% and %adjacency. "
+	"That is, the end time of each interval has to be greater than the starting time of that same interval, "
+	"and the starting time of each interval (except the first) has to be equal to the end time of the previous interval. "
+	"As a result, the union of the time domains of the set of intervals in a tier is a contiguous stretch of time, "
+	"and no intervals overlap. If a TextGrid file violates these invariants, Praat may refuse to read the file and give "
+	"an error message instead (or Praat may try to repair the TextGrid, but that is not guaranteed).")
+NORMAL (U"A weaker invariant is that the starting time of the first interval on a tier equals the starting time of that tier, "
+	"and the end time of the last interval equals the end time of the tier. When you create a TextGrid with Praat, "
+	"this invariant is automatically maintained, and most types of modifications also maintain it, except sometimes the commands "
+	"that combine multiple TextGrid objects with different durations into a new TextGrid. "
+	"Praat will happily read TextGrid files that do not honour this weak invariant, and will also display such a TextGrid "
+	"reasonably well in a TextGrid window. It is nevertheless advisable for other programs that create TextGrids "
+	"to honour this weak invariant.")
+NORMAL (U"For a point tier, a strong invariant is that the time of each point (except the first) has to be greater than the time "
+	"of the previous point. Praat maintains this invariant for instance by refusing to insert a point at a time of an existing "
+	"point. TextGrid files that violate this invariant may or may not be read by Praat, and may cause strange behviour in Praat "
+	"if they are read.")
+NORMAL (U"A further weak invariant is that the starting and end times of each tier equal the starting and end times of the whole "
+	"TextGrid. This can be violated by combining multiple TextGrids into one, but other programs are advised to create TextGrids "
+	"that honour this invariant, because TextGrids that violate it may look strange to the user.")
+ENTRY (U"7. Text encoding")
+NORMAL (U"Existing TextGrid text files come in various encoding. When creating a parser for TextGrid text files, "
+	"you should be prepared for reading it in UTF-8 encoding (without Byte Order Mark), or in UTF-16 encoding "
+	"(either Big-Endian or Little-Endian, with Byte Order Mark). Pre-Unicode TextGrid text files may have a Latin-1 encoding "
+	"if they were created on Windows or Linux, or a MacRoman encoding if they were created on a Mac, "
+	"so it would be good to prepare for such old files as well, although it may be difficult to figure out which is which "
+	"(line separators, as described below, may help).")
+NORMAL (U"When writing a TextGrid text file, you can use UTF-8 encoding (without Byte Order Mark), or UTF-16 encoding "
+	"(either Big-Endian or Little-Endian, with Byte Order Mark). "
+	"Please never write a limited encoding such as Latin-1 or MacRoman.")
+NORMAL (U"The lines in the file are typically separated by a newline symbol (Linux or modern Mac), "
+	"or by a Return symbol (old Mac), or by a Return symbol followed by a newline symbol (Windows). "
+	"When reading a TextGrid text file, you should be prepared for each of these line separators. "
+	"When writing a TextGrid text file, you can use any of these line separators, because most text editors "
+	"on all platforms can meanwhile open and view all these versions correctly.")
+ENTRY (U"8. Interpreting trigraphs")
+NORMAL (U"The example above contains several phonetic symbols, and it is not always easy to type those into a text field. "
+	"For this reason, Praat provides %trigraphs for most phonetic characters, as well as for many non-ASCII characters "
+	"used in the languages of the world. For instance, the vowel \"ɔ\" (a \"turned c\") can be typed as \"\\bsct\" into "
+	"the TextGrid window as well as anywhere else in Praat where you want to draw graphical text "
+	"(see @@Special symbols@ for all trigraphs). Thus, the file above could have looked as follows:")
+CODE (U"File type = \"ooTextFile\"")
+CODE (U"Object class = \"TextGrid\"")
+CODE (U"")
+CODE (U"xmin = 0")
+CODE (U"xmax = 2.3")
+CODE (U"tiers? <exists>")
+CODE (U"size = 3")
+CODE (U"item []:")
+	CODE1 (U"item [1]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"sentence\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 1")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"\\bsr<\\bsi'kej \"\"ahoj\"\" dvakr\\bsa't\"")
+	CODE1 (U"item [2]:")
+		CODE2 (U"class = \"IntervalTier\"")
+		CODE2 (U"name = \"phonemes\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"intervals: size = 3")
+		CODE2 (U"intervals [1]:")
+			CODE3 (U"xmin = 0")
+			CODE3 (U"xmax = 0.7")
+			CODE3 (U"text = \"r\\bsT^i\\bs:fk\\bsefj\"")
+		CODE2 (U"intervals [2]:")
+			CODE3 (U"xmin = 0.7")
+			CODE3 (U"xmax = 1.6")
+			CODE3 (U"text = \"\\bs?ga\\bsh\\^ \\bsctj\"")
+		CODE2 (U"intervals [3]:")
+			CODE3 (U"xmin = 1.6")
+			CODE3 (U"xmax = 2.3")
+			CODE3 (U"text = \"d\\bsvsakra\\bs:ft\"")
+	CODE1 (U"item [3]:")
+		CODE2 (U"class = \"TextTier\"")
+		CODE2 (U"name = \"bell\"")
+		CODE2 (U"xmin = 0")
+		CODE2 (U"xmax = 2.3")
+		CODE2 (U"points: size = 2")
+		CODE2 (U"points [1]:")
+			CODE3 (U"number = 0.9")
+			CODE3 (U"mark = \"ding\"")
+		CODE2 (U"points [2]:")
+			CODE3 (U"number = 1.3")
+			CODE3 (U"mark = \"dong\"")
+NORMAL (U"On the screen, this TextGrid looks the same as before:")
+SCRIPT (6.0, 3.0, U""
+	"textgrid = Create TextGrid: 0, 2.3, \"sentence phonemes bell\", \"bell\"\n"
+	"Set interval text: 1, 1, \"\\r<\\i'kej \"\"ahoj\"\" dvakr\\a't\"\n"
+	"Insert boundary: 2, 0.7\n"
+	"Insert boundary: 2, 1.6\n"
+	"Set interval text: 2, 1, \"r\\T^i\\:fk\\efj\"\n"
+	"Set interval text: 2, 2, \"\\?ga\\h^\\ctj\"\n"
+	"Set interval text: 2, 3, \"d\\vsakra\\:ft\"\n"
+	"Insert point: 3, 0.9, \"ding\"\n"
+	"Insert point: 3, 1.3, \"dong\"\n"
+	"Draw: 0.0, 0.0, 1, 1, 1\n")
+NORMAL (U"There are several hundreds of such trigraphs, and a few more might be added in the future. "
+	"When you create a TextGrid file parser and want to interpret the trigraphs in the correct way, "
+	"it is advisable to have Praat do the conversion for you: read the TextGrid file into Praat, "
+	"call the menu command ##Convert to Unicode#, and save the TextGrid as a new text file.")
+ENTRY (U"9. The binary TextGrid file format")
+NORMAL (U"Besides the TextGrid text file format described above, TextGrid objects can also be saved as binary files "
+	"with @@Save as binary file... at . If you need a description of this format, we can add it here on request. "
+	"When you want to create only a TextGrid %text file parser, and still want to support binary TextGrid files, "
+	"you can have Praat do the conversion for you: read the binary TextGrid file into Praat with @@Read from file...@ "
+	"and save the resulting TextGrid object as a text file with @@Save as text file... at .")
+MAN_END
+
+MAN_BEGIN (U"Programming with Praat", U"ppgb", 20151028)
 INTRO (U"You can extend the functionality of the Praat program "
 	"by adding modules written in C or C++ to it. All of Praat's source code "
 	"is available under the General Public Licence.")
@@ -33,26 +397,16 @@ NORMAL (U"Before trying the task of learning how to write Praat extensions in C
 	"lives as Praat scripts, and scripts are easier to write than extensions in C or C++. "
 	"If you have a set of scripts, you can distribute them as a @@plug-ins|plug-in at .")
 ENTRY (U"2. Getting the existing source code")
-NORMAL (U"You obtain the Praat source code via ##www.praat.org#, in a file with a name like "
-	"##praat5347_sources.zip# or ##praat5347_sources.tar.gz# (depending on the Praat version), and unpack this by double-clicking. "
+NORMAL (U"You obtain the Praat source code from GitHub (https://github.com/praat), in a file with a name like "
+	"##praat5423_sources.zip# or ##praat5423_sources.tar.gz# (depending on the Praat version), and unpack this by double-clicking. "
 	"The result will be a set of directories "
 	"called #kar, #num, #external (with #GSL, #glpk, #FLAC, #mp3, #portaudio and #espeak in it), "
-	"#sys, #dwsys, #stat, #fon, #dwtools, #LPC, #FFNet, #gram, #artsynth, #EEG, #contrib, #main, #makefiles, and #test, "
-	"plus a makefile and an Xcode project for Macintosh.")
-ENTRY (U"3. Building Praat on Macintosh")
-NORMAL (U"Open ##praat.xcodeproj# in Xcode and choose #Build and #Run. For more details see the download page.")
-ENTRY (U"4. Building Praat on Windows")
-NORMAL (U"Praat for Windows is compiled with MinGW. See the download page for instructions.")
-ENTRY (U"5. Building Praat on Linux")
-NORMAL (U"To compile and link Praat on Linux, you go to the directory that "
-	"contains the source directories and the makefile, and copy a ##makefile.defs# "
-	"file from the #makefiles directory:")
-CODE (U"> cp makefiles/makefile.defs.linux ./makefile.defs")
-NORMAL (U"You have to have installed ##libgtk2.0-dev# (and its dependencies) and ##libasound2-dev#.")
-NORMAL (U"On other Unixes, you do the same, but the file ##makefile.defs# may require some editing after this, "
-	"because Silicon Graphics Irix, Sparc Solaris and HPUX may use different libraries or have them in different locations than Linux.")
-ENTRY (U"6. Extending Praat")
-NORMAL (U"You can edit ##main/main_Praat.cpp#. "
+	"#sys, #dwsys, #stat, #fon, #dwtools, #LPC, #FFNet, #gram, #artsynth, #EEG, #contrib, #main, #makefiles, #test, and #dwtest, "
+	"plus a makefile and an Xcode project for MacOS X.")
+ENTRY (U"3. Building Praat")
+NORMAL (U"Consult the README file on GitHub for directions to compile and link Praat for your platform.")
+ENTRY (U"4. Extending Praat")
+NORMAL (U"To start extending Praat’s functionality, you can edit ##main/main_Praat.cpp#. "
 	"This example shows you how to create a very simple program with all the functionality "
 	"of the Praat program, and a single bit more (namely an additional command in the New menu):")
 CODE (U"\\# include \"praat.h\"")
@@ -64,17 +418,17 @@ CODE (U"")
 CODE (U"int main (int argc, char **argv) {")
 CODE1 (U"praat_init (U\"Praat_Jane\", argc, argv);")
 CODE1 (U"INCLUDE_LIBRARY (praat_uvafon_init)")
-CODE1 (U"praat_addMenuCommand (U\"Objects\", U\"New\", U\"Hello from Jane...\", NULL, 0, DO_HelloFromJane);")
+CODE1 (U"praat_addMenuCommand (U\"Objects\", U\"New\", U\"Hello from Jane...\", nullptr, 0, DO_HelloFromJane);")
 CODE1 (U"praat_run ();")
 CODE1 (U"return 0;")
 CODE (U"}")
-ENTRY (U"7. Learning how to program")
-NORMAL (U"To see how objects are defined, take a look at ##sys/Thing.h#, ##sys/Data.h#, "
+ENTRY (U"5. Learning how to program")
+NORMAL (U"To see how objects are defined, take a look at ##sys/Thing.h#, ##sys/Daata.h#, "
 	"##sys/oo.h#, the ##XXX_def.h# files in the #fon directory, and the corresponding "
 	"##XXX.cpp# files in the #fon directory. To see how commands show up on the buttons "
 	"in the fixed and dynamic menus, take a look at the large interface description file "
 	"##fon/praat_Fon.cpp#.")
-ENTRY (U"8. Using the Praat shell only")
+ENTRY (U"6. Using the Praat shell only")
 NORMAL (U"For building the Praat shell (the Objects and Picture windows) only, you need only the code in the eight directories "
 	"#kar, #GSL, #num, ##external/{FLAC,MP3,portaudio}#, #sys, and #dwsys. You delete the inclusion of praat_uvafon_init from #main. "
 	"You will be able to build a Praat shell, i.e. an Objects and a Picture window, "
diff --git a/fon/manual_references.cpp b/fon/manual_references.cpp
index a0038e3..6678178 100644
--- a/fon/manual_references.cpp
+++ b/fon/manual_references.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/manual_sound.cpp b/fon/manual_sound.cpp
index af6705a..82beac5 100644
--- a/fon/manual_sound.cpp
+++ b/fon/manual_sound.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2010,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -22,56 +21,58 @@
 #include "Sound.h"
 
 static void draw_SoundDeepen_filter (Graphics g) {
-	Sound s = Sound_createSimple (1, 100, 10);
-	int i;
-	double alpha = sqrt (log (2.0));
-	if (! s) return;
-	Graphics_setWindow (g, 0, 100, 0, 1);
-	for (i = 1; i <= s -> nx; i ++) {
-		double alpha_f = alpha * (s -> x1 + (i - 1) * s -> dx);
-		double slow = alpha_f / 3.0, fast = alpha_f / 30.0;
-		s -> z [1] [i] = exp (- fast * fast) - exp (- slow * slow);
+	try {
+		autoSound s = Sound_createSimple (1, 100.0, 10.0);
+		double alpha = sqrt (log (2.0));
+		Graphics_setWindow (g, 0.0, 100.0, 0.0, 1.0);
+		for (int i = 1; i <= s -> nx; i ++) {
+			double alpha_f = alpha * (s -> x1 + (i - 1) * s -> dx);
+			double slow = alpha_f / 3.0, fast = alpha_f / 30.0;
+			s -> z [1] [i] = exp (- fast * fast) - exp (- slow * slow);
+		}
+		Graphics_drawInnerBox (g);
+		Graphics_textBottom (g, true, U"Frequency %f (Hz)");
+		Graphics_textLeft (g, true, U"Amplitude filter %H (%f)");
+		Graphics_markLeft (g, 0.0, true, true, false, nullptr);
+		Graphics_markLeft (g, 0.5, true, true, true, nullptr);
+		Graphics_markLeft (g, 1.0, true, true, false, nullptr);
+		Graphics_markRight (g, 1.0, false, true, false, U"0 dB");
+		Graphics_markRight (g, 0.5, false, true, false, U"-6 dB");
+		Graphics_markBottom (g, 0.0, true, true, false, nullptr);
+		Graphics_markBottom (g, 3.0, true, true, true, nullptr);
+		Graphics_markBottom (g, 30.0, true, true, true, nullptr);
+		Graphics_markBottom (g, 100.0, true, true, false, nullptr);
+		Graphics_setColour (g, Graphics_RED);
+		Sound_draw (s.get(), g, 0.0, 0.0, 0.0, 1.0, false, U"curve");
+		Graphics_setColour (g, Graphics_BLACK);
+	} catch (MelderError) {
+		Melder_clearError ();
 	}
-	Graphics_drawInnerBox (g);
-	Graphics_textBottom (g, TRUE, U"Frequency %f (Hz)");
-	Graphics_textLeft (g, TRUE, U"Amplitude filter %H (%f)");
-	Graphics_markLeft (g, 0, TRUE, TRUE, FALSE, NULL);
-	Graphics_markLeft (g, 0.5, TRUE, TRUE, TRUE, NULL);
-	Graphics_markLeft (g, 1, TRUE, TRUE, FALSE, NULL);
-	Graphics_markRight (g, 1, FALSE, TRUE, FALSE, U"0 dB");
-	Graphics_markRight (g, 0.5, FALSE, TRUE, FALSE, U"-6 dB");
-	Graphics_markBottom (g, 0, TRUE, TRUE, FALSE, NULL);
-	Graphics_markBottom (g, 3, TRUE, TRUE, TRUE, NULL);
-	Graphics_markBottom (g, 30, TRUE, TRUE, TRUE, NULL);
-	Graphics_markBottom (g, 100, TRUE, TRUE, FALSE, NULL);
-	Graphics_setColour (g, Graphics_RED);
-	Sound_draw (s, g, 0, 0, 0, 1, FALSE, U"curve");
-	Graphics_setColour (g, Graphics_BLACK);
-	forget (s);
 }
 
 static void draw_SoundDeepen_impulse (Graphics g) {
-	Sound s = Sound_create (1, -0.2, 0.2, 1000, 4e-4, -0.1998);
-	int i;
-	double pibyalpha = NUMpi / sqrt (log (2.0)), twosqrtpitimespibyalpha = 2 * sqrt (NUMpi) * pibyalpha;
-	if (! s) return;
-	Graphics_setWindow (g, -0.2, 0.2, -100, 400);
-	for (i = 1; i <= s -> nx; i ++) {
-		double pibyalpha_f = pibyalpha * (s -> x1 + (i - 1) * s -> dx);
-		double slow = pibyalpha_f * 3.0, fast = pibyalpha_f * 30.0;
-		s -> z [1] [i] = twosqrtpitimespibyalpha * (30.0 * exp (- fast * fast) - 3.0 * exp (- slow * slow));
+	try {
+		autoSound s = Sound_create (1, -0.2, 0.2, 1000, 4e-4, -0.1998);
+		double pibyalpha = NUMpi / sqrt (log (2.0)), twosqrtpitimespibyalpha = 2 * sqrt (NUMpi) * pibyalpha;
+		Graphics_setWindow (g, -0.2, 0.2, -100.0, 400.0);
+		for (int i = 1; i <= s -> nx; i ++) {
+			double pibyalpha_f = pibyalpha * (s -> x1 + (i - 1) * s -> dx);
+			double slow = pibyalpha_f * 3.0, fast = pibyalpha_f * 30.0;
+			s -> z [1] [i] = twosqrtpitimespibyalpha * (30.0 * exp (- fast * fast) - 3.0 * exp (- slow * slow));
+		}
+		Graphics_drawInnerBox (g);
+		Graphics_textBottom (g, true, U"Time %t (s)");
+		Graphics_textLeft (g, true, U"Intensity impulse reponse %h (%t)");
+		Graphics_markBottom (g, -0.2, true, true, false, nullptr);
+		Graphics_markBottom (g, 0, true, true, true, nullptr);
+		Graphics_markBottom (g, 0.2, true, true, false, nullptr);
+		Graphics_markLeft (g, 0, true, true, true, nullptr);
+		Graphics_setColour (g, Graphics_RED);
+		Sound_draw (s.get(), g, 0.0, 0.0, -100.0, 400.0, false, U"curve");
+		Graphics_setColour (g, Graphics_BLACK);
+	} catch (MelderError) {
+		Melder_clearError ();
 	}
-	Graphics_drawInnerBox (g);
-	Graphics_textBottom (g, TRUE, U"Time %t (s)");
-	Graphics_textLeft (g, TRUE, U"Intensity impulse reponse %h (%t)");
-	Graphics_markBottom (g, -0.2, TRUE, TRUE, FALSE, NULL);
-	Graphics_markBottom (g, 0, TRUE, TRUE, TRUE, NULL);
-	Graphics_markBottom (g, 0.2, TRUE, TRUE, FALSE, NULL);
-	Graphics_markLeft (g, 0, TRUE, TRUE, TRUE, NULL);
-	Graphics_setColour (g, Graphics_RED);
-	Sound_draw (s, g, 0, 0, -100, 400, FALSE, U"curve");
-	Graphics_setColour (g, Graphics_BLACK);
-	forget (s);
 }
 
 void manual_sound_init (ManPages me);
diff --git a/fon/manual_soundFiles.cpp b/fon/manual_soundFiles.cpp
index f4c92f6..b289b57 100644
--- a/fon/manual_soundFiles.cpp
+++ b/fon/manual_soundFiles.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2008,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -331,7 +330,7 @@ NORMAL (U"The format of the original sound files may be 16-bit linear "
 	"(with big-endian or little-endian byte order), 8-bit linear (signed or unsigned), "
 	"8-bit μ-law, or 8-bit A-law. The format of the resulting sound file is always "
 	"16-bit linear, with an appropriate default byte order. The following commands "
-	"are available in the @@Save menu@ of you select any combination of @LongSound "
+	"are available in the @@Save menu@ if you select any combination of @LongSound "
 	"and/or @Sound objects:")
 LIST_ITEM (U"• @@Save as WAV file...@ (little-endian)")
 LIST_ITEM (U"• @@Save as AIFF file...@ (big-endian)")
diff --git a/fon/manual_spectrum.cpp b/fon/manual_spectrum.cpp
index f08a861..2bfc257 100644
--- a/fon/manual_spectrum.cpp
+++ b/fon/manual_spectrum.cpp
@@ -2,84 +2,84 @@
  *
  * Copyright (C) 1992-2010,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
 
 #include "Sound.h"
 
-static void draw_SpectrumHann (Graphics g, double f1, double f2, int stop, int garnish) {
-	double fmin = garnish == 1 ? 300 : 0, fmax = garnish == 1 ? 1300 : 4000, df = garnish == 1 ? 1 : 4;
-	Sound me = Sound_create (1, fmin, fmax, (long) floor ((fmax - fmin) / df) + 1, df, fmin);
-	double w = 100, f1left = f1 - w, f1right = f1 + w, f2left = f2 - w, f2right = f2 + w, halfpibysmooth = NUMpi / (w + w);
-	int i;
-	if (! me) return;
-	Graphics_setWindow (g, fmin, fmax, -0.1, 1.1);
-	for (i = 1; i <= my nx; i ++) {
-		double f = my x1 + (i - 1) * my dx;
-		my z [1] [i] = f < f1left ? 0.0 : f < f1right ? ( f1 > 0.0 ? 0.5 - 0.5 * cos (halfpibysmooth * (f - f1left)) : 1.0 ) :
-			f < f2left ? 1.0 : f < f2right ? ( f2 < fmax ? 0.5 + 0.5 * cos (halfpibysmooth * (f - f2left)) : 1.0 ) : 0.0;
+static void draw_SpectrumHann (Graphics g, double f1, double f2, bool stop, int garnish) {
+	try {
+		double fmin = garnish == 1 ? 300 : 0, fmax = garnish == 1 ? 1300 : 4000, df = garnish == 1 ? 1 : 4;
+		autoSound me = Sound_create (1, fmin, fmax, (long) floor ((fmax - fmin) / df) + 1, df, fmin);
+		double w = 100, f1left = f1 - w, f1right = f1 + w, f2left = f2 - w, f2right = f2 + w, halfpibysmooth = NUMpi / (w + w);
+		Graphics_setWindow (g, fmin, fmax, -0.1, 1.1);
+		for (int i = 1; i <= my nx; i ++) {
+			double f = my x1 + (i - 1) * my dx;
+			my z [1] [i] = f < f1left ? 0.0 : f < f1right ? ( f1 > 0.0 ? 0.5 - 0.5 * cos (halfpibysmooth * (f - f1left)) : 1.0 ) :
+				f < f2left ? 1.0 : f < f2right ? ( f2 < fmax ? 0.5 + 0.5 * cos (halfpibysmooth * (f - f2left)) : 1.0 ) : 0.0;
+		}
+		if (stop)
+			for (int i = 1; i <= my nx; i ++)
+				my z [1] [i] = 1.0 - my z [1] [i];
+		if (garnish) {
+			Graphics_drawInnerBox (g);
+			Graphics_textLeft (g, true, U"Amplitude filter %H (%f)");
+			Graphics_markLeft (g, 0.0, true, true, false, nullptr);
+			Graphics_markLeft (g, 1.0, true, true, false, nullptr);
+		}
+		if (garnish == 1) {
+			Graphics_textBottom (g, true, U"Frequency %f");
+			Graphics_markBottom (g, f1left, false, true, true, U"%f__1_-%w");
+			Graphics_markBottom (g, f1, false, true, true, U"%f__1_");
+			Graphics_markBottom (g, f1right, false, true, true, U"%f__1_+%w");
+			Graphics_markBottom (g, f2left, false, true, true, U"%f__2_-%w");
+			Graphics_markBottom (g, f2, false, true, true, U"%f__2_");
+			Graphics_markBottom (g, f2right, false, true, true, U"%f__2_+%w");
+			Graphics_markRight (g, 1.0, false, true, false, U"0 dB");
+			Graphics_markLeft (g, 0.5, true, true, true, nullptr);
+			Graphics_markRight (g, 0.5, false, true, false, U"-6 dB");
+		}
+		if (garnish == 2) {
+			Graphics_textBottom (g, true, U"Frequency %f (Hz)");
+			Graphics_markBottom (g, 0.0, true, true, false, nullptr);
+			Graphics_markBottom (g, 500.0, true, true, false, nullptr);
+			Graphics_markBottom (g, 1000.0, true, true, false, nullptr);
+			Graphics_markBottom (g, 2000.0, true, true, false, nullptr);
+			Graphics_markBottom (g, 4000.0, true, true, false, nullptr);
+		}
+		Graphics_setColour (g, stop ? Graphics_BLUE : Graphics_RED);
+		Sound_draw (me.get(), g, 0.0, 0.0, -0.1, 1.1, false, U"curve");
+		Graphics_setColour (g, Graphics_BLACK);
+	} catch (MelderError) {
+		Melder_clearError ();
 	}
-	if (stop)
-		for (i = 1; i <= my nx; i ++)
-			my z [1] [i] = 1.0 - my z [1] [i];
-	if (garnish) {
-		Graphics_drawInnerBox (g);
-		Graphics_textLeft (g, TRUE, U"Amplitude filter %H (%f)");
-		Graphics_markLeft (g, 0, TRUE, TRUE, FALSE, NULL);
-		Graphics_markLeft (g, 1, TRUE, TRUE, FALSE, NULL);
-	}
-	if (garnish == 1) {
-		Graphics_textBottom (g, TRUE, U"Frequency %f");
-		Graphics_markBottom (g, f1left, FALSE, TRUE, TRUE, U"%f__1_-%w");
-		Graphics_markBottom (g, f1, FALSE, TRUE, TRUE, U"%f__1_");
-		Graphics_markBottom (g, f1right, FALSE, TRUE, TRUE, U"%f__1_+%w");
-		Graphics_markBottom (g, f2left, FALSE, TRUE, TRUE, U"%f__2_-%w");
-		Graphics_markBottom (g, f2, FALSE, TRUE, TRUE, U"%f__2_");
-		Graphics_markBottom (g, f2right, FALSE, TRUE, TRUE, U"%f__2_+%w");
-		Graphics_markRight (g, 1, FALSE, TRUE, FALSE, U"0 dB");
-		Graphics_markLeft (g, 0.5, TRUE, TRUE, TRUE, NULL);
-		Graphics_markRight (g, 0.5, FALSE, TRUE, FALSE, U"-6 dB");
-	}
-	if (garnish == 2) {
-		Graphics_textBottom (g, TRUE, U"Frequency %f (Hz)");
-		Graphics_markBottom (g, 0, TRUE, TRUE, FALSE, NULL);
-		Graphics_markBottom (g, 500, TRUE, TRUE, FALSE, NULL);
-		Graphics_markBottom (g, 1000, TRUE, TRUE, FALSE, NULL);
-		Graphics_markBottom (g, 2000, TRUE, TRUE, FALSE, NULL);
-		Graphics_markBottom (g, 4000, TRUE, TRUE, FALSE, NULL);
-	}
-	Graphics_setColour (g, stop ? Graphics_BLUE : Graphics_RED);
-	Sound_draw (me, g, 0, 0, -0.1, 1.1, FALSE, U"curve");
-	Graphics_setColour (g, Graphics_BLACK);
-	forget (me);
 }
 static void draw_SpectrumPassHann (Graphics g) {
-	draw_SpectrumHann (g, 500, 1000, 0, 1);
+	draw_SpectrumHann (g, 500.0, 1000.0, false, 1);
 }
 static void draw_SpectrumPassHann_decompose (Graphics g) {
-	draw_SpectrumHann (g, 0, 500, 0, 2);
-	draw_SpectrumHann (g, 500, 1000, 0, 0);
-	draw_SpectrumHann (g, 1000, 2000, 0, 0);
-	draw_SpectrumHann (g, 2000, 4000, 0, 0);
+	draw_SpectrumHann (g, 0.0, 500.0, false, 2);
+	draw_SpectrumHann (g, 500, 1000, false, 0);
+	draw_SpectrumHann (g, 1000, 2000, false, 0);
+	draw_SpectrumHann (g, 2000, 4000, false, 0);
 }
 static void draw_SpectrumStopHann (Graphics g) { draw_SpectrumHann (g, 500, 1000, 1, 1); }
 static void draw_SpectrumStopHann_decompose (Graphics g) {
-	draw_SpectrumHann (g, 500, 1000, 0, 2);
-	draw_SpectrumHann (g, 500, 1000, 1, 0);
+	draw_SpectrumHann (g, 500.0, 1000.0, false, 2);
+	draw_SpectrumHann (g, 500.0, 1000.0, true, 0);
 }
 
 void manual_spectrum_init (ManPages me);
diff --git a/fon/manual_tutorials.cpp b/fon/manual_tutorials.cpp
index fe628b6..8fd200b 100644
--- a/fon/manual_tutorials.cpp
+++ b/fon/manual_tutorials.cpp
@@ -1,20 +1,19 @@
 /* manual_tutorials.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
@@ -23,15 +22,96 @@
 void manual_tutorials_init (ManPages me);
 void manual_tutorials_init (ManPages me) {
 
-MAN_BEGIN (U"What's new?", U"ppgb", 20150907)
+MAN_BEGIN (U"What's new?", U"ppgb", 20160523)
 INTRO (U"Latest changes in Praat.")
-/*LIST_ITEM (U"• Manual page about @@drawing a vowel triangle at .")*/
+//LIST_ITEM (U"• Manual page about @@drawing a vowel triangle at .")
+
+NORMAL (U"##6.0.18# (23 May 2016)")
+LIST_ITEM (U"• Windows: better dotted lines.")
+LIST_ITEM (U"• TextGrid window: again better automatic alignment.")
+NORMAL (U"##6.0.17# (21 April 2016)")
+LIST_ITEM (U"• TextGrid window: better automatic alignment.")
+NORMAL (U"##6.0.16# (5 April 2016)")
+LIST_ITEM (U"• Scripting: \"hashes\": variables can now be indexed with strings rather than only with numbers.")
+LIST_ITEM (U"• TextGrid window: fewer out-of-order messages in automatic alignment.")
+NORMAL (U"##6.0.15# (21 March 2016)")
+LIST_ITEM (U"• TextGrid window: removed a bug whereby Praat could do automatic alignment only on sounds sampled at 44.1 kHz.")
+LIST_ITEM (U"• TextGrid window: improved the location of the final boundary in automatic alignment.")
+LIST_ITEM (U"• Table window: added a preference for the interpretation of graphical style symbols (\\% \\# \\^ \\_ \\@ ).")
+NORMAL (U"##6.0.14# (11 February 2016)")
+LIST_ITEM (U"• Linux: corrected a bug by which the Tab short-cut for playing a sound would not work if the NumLock key was on.")
+LIST_ITEM (U"• Mac 64-bit: corrected a bug that could cause Praat to crash if the Tab key was pressed in a dialog window.")
+NORMAL (U"##6.0.13# (31 January 2016)")
+LIST_ITEM (U"• Windows: corrected a bug that could cause Praat to crash when closing a script window.")
+LIST_ITEM (U"• Mac 64-bit: progress bars with movies.")
+NORMAL (U"##6.0.12# (24 January 2016)")
+LIST_ITEM (U"• Windows 32-bit: corrected a bug that could cause Praat to crash when closing the Sound window after popping up dialog boxes.")
+LIST_ITEM (U"• Mac 64-bit: better $$demoShow()$.")
+LIST_ITEM (U"• Mac 64-bit: working Matrix movies and articulatory synthesizer movies.")
+NORMAL (U"##6.0.11# (18 January 2016)")
+LIST_ITEM (U"• Corrected a bug that could cause Praat to crash when drawing a Spectrum with undefined values.")
+LIST_ITEM (U"• Mac 64-bit: corrected a bug by which some text in the Sound window would sometimes not be drawn.")
+LIST_ITEM (U"• Mac 64-bit demo window: improved the working of $$demoShow()$.")
+NORMAL (U"##6.0.10# (8 January 2016)")
+LIST_ITEM (U"• Corrected a bug that would cause Praat to crash when starting an ExperimentMFC window.")
+LIST_ITEM (U"• Mac 64-bit: corrected a bug that would cause black selections in the Sound window.")
+NORMAL (U"##6.0.09# (1 January 2016)")
+LIST_ITEM (U"• Windows 64-bit: corrected a bug that could cause Praat to crash when closing the Sound window after popping up dialog boxes.")
+NORMAL (U"##6.0.08# (5 December 2015)")
+LIST_ITEM (U"• Windows command line: the $$--a$ option can be used when redirecting the output to pipes and files.")
+LIST_ITEM (U"• Linux command line: the $$--run$ option is not needed in the Terminal when redirecting output "
+	"(unless you redirect standard output, standard input %and standard error).")
+NORMAL (U"##6.0.07# (30 November 2015)")
+LIST_ITEM (U"• Mac 64-bit: repaired dragging selections (which got broken in the El Capitan fix in 6.0.06).")
+NORMAL (U"##6.0.06# (29 November 2015)")
+LIST_ITEM (U"• Mac 64-bit: correct early Info window updates and $$demoShow()$ in El Capitan.")
+LIST_ITEM (U"• Manual updates.")
+LIST_ITEM (U"• Corrected some small memory leaks.")
+NORMAL (U"##6.0.05# (8 November 2015)")
+LIST_ITEM (U"• A manual page that describes @@TextGrid file formats at .")
+LIST_ITEM (U"• Corrected a bug that prevented some KlattGrid tiers from being edited.")
+LIST_ITEM (U"• 32-bit Linux: correct use of PulseAudio (note: 6.0.04 on Debian already had this correct).")
+NORMAL (U"##6.0.04# (1 November 2015)")
+LIST_ITEM (U"• Corrected a bug that caused an incorrect number in FFNet files; "
+	"unreadable FFNet files can be sent to the Praat authors for repair.")
+NORMAL (U"##6.0.03# (31 October 2015)")
+LIST_ITEM (U"• Corrected a bug that caused Praat to crash when the Soundrecorder window was closed.")
+LIST_ITEM (U"• Scripting: when calling Praat from the command line, added the $$--run$ option to force script execution.")
+NORMAL (U"##6.0.02# (30 October 2015)")
+LIST_ITEM (U"• Corrected the redrawing of analyses in the Sound window after a change in the sound.")
+NORMAL (U"##6.0.01# (29 October 2015)")
+LIST_ITEM (U"• Windows: fixed a bug that caused Praat to crash at start-up in some Windows versions.")
+NORMAL (U"##6.0# (28 October 2015)")
+LIST_ITEM (U"• Linux: use PulseAudio as the server for playing sound.")
+LIST_ITEM (U"• Windows: removed Praatcon.exe, because Praat.exe can now be used from the command line.")
+LIST_ITEM (U"• Praat can now open files from the command line on all platforms.")
+LIST_ITEM (U"• The API change that requires raising the major Praat version to 6: "
+	"no longer any need for Praatcon.exe, because Praat itself can now run a script from the command line on all platforms.")
+LIST_ITEM (U"• See @@Scripting 6.9. Calling from the command line@ for all command line options.")
+LIST_ITEM (U"• SpeechSynthesizer: corrected a potentially crashing bug.")
+LIST_ITEM (U"• Mac Retina graphics: made function drawing (e.g. in the TextGrid window) twice as fast.")
+LIST_ITEM (U"• LongSound: corrected playing of more than 2 channels.")
+NORMAL (U"##5.4.22# (8 October 2015)")
+LIST_ITEM (U"• Sound files: added support for MP3 files with ID3 version 2 headers.")
+LIST_ITEM (U"• Table: Line graph where: removed a bug that caused nothing to be drawn if the number of columns was larger than the number of rows and "
+	"the column index was larger than the number of rows.")
+LIST_ITEM (U"• Mac: corrected horizontal spacing in graphical text on El Capitán.")
+LIST_ITEM (U"• Mac: corrected a bug that would cause Praat to crash if a PNG file could not be saved (from a script).")
+LIST_ITEM (U"• Windows: enabled PNG saving from Praatcon.")
+NORMAL (U"##5.4.21# (29 September 2015)")
+LIST_ITEM (U"• Corrected a bug introduced in 5.4.20 that could cause the Sound window to crash.")
+LIST_ITEM (U"• Repaired a very old hang with pulses in the Sound window.")
+NORMAL (U"##5.4.20# (26 September 2015)")
+LIST_ITEM (U"• Corrected the graphical representation of numbers with exponents (wrong since 5.4.10).")
+LIST_ITEM (U"• Windows: prevented flashing console window in $$runScript()$.")
+NORMAL (U"##5.4.19# (16 September 2015)")
+LIST_ITEM (U"• LongSound: corrected saving of 8-bit files as 16-bit.")
 NORMAL (U"##5.4.18# (7 September 2015)")
 LIST_ITEM (U"• Regular expressions: if the pattern is illegal, you'll now get an error message instead of an empty string.")
 LIST_ITEM (U"• LongSound: removed a bug introduced in 1999 that could play long stereo sounds much too fast if they had unusual sampling frequencies. "
 	"This bug has become more noticeable on the Mac since January 2015.")
-LIST_ITEM (U"Guard better against sound files that contain 0 samples.")
-LIST_ITEM (U"Scripting: faster look-up of variables.")
+LIST_ITEM (U"• Guard better against sound files that contain 0 samples.")
+LIST_ITEM (U"• Scripting: faster look-up of variables.")
 NORMAL (U"##5.4.17# (20 August 2015)")
 LIST_ITEM (U"• Scripting: removed a bug that could cause Praat to crash when calling $$writeFile()$ with an empty text.")
 NORMAL (U"##5.4.16# (16 August 2015)")
@@ -496,7 +576,7 @@ LIST_ITEM (U"• Scripting: support for arrays with multiple indexes.")
 LIST_ITEM (U"• Linux: made spectrogram drawing compatible with Ubuntu 10.10.")
 LIST_ITEM (U"• Linux: made sound more easily available on Ubuntu 10.10.")
 NORMAL (U"##5.2.01# (4 November 2010)")
-LIST_ITEM (U"• Scripting: support for numeric @@Scripting 5.6. Arrays|arrays at .")
+LIST_ITEM (U"• Scripting: support for numeric @@Scripting 5.6. Arrays and dictionaries|arrays at .")
 MAN_END
 
 MAN_BEGIN (U"What was new in 5.2?", U"ppgb", 20101029)
@@ -1727,13 +1807,9 @@ ENTRY (U"To do")
 	LIST_ITEM (U"• Phoneme-to-articulation conversion??") // Mirjam Ernestus, Jul 1 1996
 ENTRY (U"Known bugs in the Windows version")
 	LIST_ITEM (U"• Cannot stand infinitesimal zooming in SpectrogramEditor.")
-	LIST_ITEM (U"• Clipboards with greys sometimes become black-and-white after use of colour.")
-ENTRY (U"Known bugs in the Linux version")
-	LIST_ITEM (U"• Sounds shorter than 200 ms do not always play (workaround: add zeroes in prefs).")
-	LIST_ITEM (U"• Keyboard shortcuts do not work if NumLock is on.")
 */
  
-MAN_BEGIN (U"Acknowledgments", U"ppgb", 20150828)
+MAN_BEGIN (U"Acknowledgments", U"ppgb", 20151103)
 NORMAL (U"The following people contributed source code to Praat:")
 LIST_ITEM (U"Paul Boersma: user interface, graphics, @printing, @@Intro|sound@, "
 	"@@Intro 3. Spectral analysis|spectral analysis@, @@Intro 4. Pitch analysis|pitch analysis@, "
@@ -1760,7 +1836,7 @@ LIST_ITEM (U"PortAudio: Portable Audio Library by Ross Bencina, Phil Burk, Bjorn
 LIST_ITEM (U"Espeak: text-to-speech synthesizer by Jonathan Duddington (GPL).")
 LIST_ITEM (U"MAD: MPEG Audio Decoder by Underbit Technologies (GPL).")
 LIST_ITEM (U"FLAC: Free Lossless Audio Codec by Josh Coalson.")
-LIST_ITEM (U"fftpack: public domain Fourier transforms by Paul Swarztrauber and Monty.")
+LIST_ITEM (U"fftpack: public domain Fourier transforms by Paul Swarztrauber and Christopher Montgomery.")
 LIST_ITEM (U"LAPACK: public domain numeric algorithms by Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., "
 	"Courant Institute, Argonne National Lab, and Rice University.")
 LIST_ITEM (U"Regular expressions by Henry Spencer, Mark Edel, Christopher Conrad, Eddy De Greef (GPL).")
@@ -1786,8 +1862,10 @@ LIST_ITEM (U"Cornell Phonetics Lab, Ithaca NY.")
 NORMAL (U"Finally we thank:")
 LIST_ITEM (U"Ton Wempe and Dirk Jan Vet, for technical support and advice.")
 LIST_ITEM (U"Daniel Hirst, for managing the Praat Discussion list.")
+LIST_ITEM (U"Rafael Laboissière and Andreas Tille, for maintaining the Debian package.")
+LIST_ITEM (U"Jason Bacon, for maintaining the FreeBSD port.")
 LIST_ITEM (U"José Joaquín Atria and Ingmar Steiner, for setting up the source-code repository on GitHub.")
-LIST_ITEM (U"Hundreds of Praat users, for notifying us of problems and thus helping us to improve Praat.")
+LIST_ITEM (U"Hundreds of Praat users, for sending suggestions and notifying us of problems and thus helping us to improve Praat.")
 MAN_END
 
 MAN_BEGIN (U"Praat menu", U"ppgb", 20050822)
diff --git a/fon/manual_voice.cpp b/fon/manual_voice.cpp
index 9d35a16..9faf9b2 100644
--- a/fon/manual_voice.cpp
+++ b/fon/manual_voice.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/fon/praat_Exp.cpp b/fon/praat_Exp.cpp
index dba9b07..e644152 100644
--- a/fon/praat_Exp.cpp
+++ b/fon/praat_Exp.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2001-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -42,29 +41,41 @@ END2 }
 
 DIRECT2 (ExperimentMFC_run) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot run experiments from the command line.");
-	autoOrdered experiments = Ordered_create ();
-	Collection_dontOwnItems (experiments.peek());
-	WHERE (SELECTED) {
-		iam_LOOP (ExperimentMFC);
-		Melder_assert (my classInfo == classExperimentMFC);
-		Collection_addItem (experiments.peek(), me);   // reference copy of me
+	autoRunnerMFC runner;
+	{// scope
+		/*
+			This `scope` comment refers to the idea that an autoThing (here, `experiments`)
+			is created in the beginning of the scope and invalidated at the end of the scope (by `move`).
+		*/
+		autoExperimentMFCList experiments = ExperimentMFCList_create ();
+		WHERE (SELECTED) {
+			iam_LOOP (ExperimentMFC);
+			Melder_assert (my classInfo == classExperimentMFC);
+			experiments -> addItem_ref (me);
+		}
+		Melder_assert (experiments->size >= 1);
+		Melder_assert (experiments->at [1] -> classInfo == classExperimentMFC);
+		Melder_assert (experiments->at [experiments->size] -> classInfo == classExperimentMFC);
+		runner = RunnerMFC_create (U"listening experiments", experiments.move());
+		/*
+			Now that `experiments` has been moved, it has become invalid.
+			We help the compiler notice this by ending the scope here:
+		*/
 	}
-	Melder_assert (experiments -> size >= 1);
-	Melder_assert (((Data) experiments -> item [1]) -> classInfo == classExperimentMFC);
-	Melder_assert (((Data) experiments -> item [experiments -> size]) -> classInfo == classExperimentMFC);
-	autoOrdered experimentsCopy = experiments.clone();   // we need a copy, because we do a transfer, then a peek
-	Melder_assert (experimentsCopy -> size == experiments -> size);
-	Melder_assert (experimentsCopy -> item [1] == experiments -> item [1]);
-	Melder_assert (experimentsCopy -> item [experimentsCopy -> size] == experiments -> item [experiments -> size]);
-	autoRunnerMFC runner = RunnerMFC_create (U"listening experiments", experimentsCopy.transfer());
-	praat_installEditorN (runner.transfer(), experiments.peek());
+	/*
+		As a result of the scope braces above, the compiler will now protest
+		if we refer to `experiments` in the next line. So instead we refer to the `runner`-internal experiments,
+		which are still in scope and haven't been invalidated:
+	*/
+	praat_installEditorN (runner.get(), runner -> experiments->asDaataList());   // refer to the moved version!
+	runner.releaseToUser();
 END2 }
 
 DIRECT2 (ExperimentMFC_extractResults) {
 	WHERE (SELECTED) {
 		iam_LOOP (ExperimentMFC);
 		autoResultsMFC thee = ExperimentMFC_extractResults (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -75,7 +86,7 @@ DIRECT2 (ResultsMFC_getNumberOfTrials) {
 	Melder_information (my numberOfTrials);
 END2 }
 
-FORM (ResultsMFC_getResponse, U"ResultsMFC: Get response", 0) {
+FORM (ResultsMFC_getResponse, U"ResultsMFC: Get response", nullptr) {
 	NATURAL (U"Trial", U"1")
 	OK2
 DO
@@ -86,7 +97,7 @@ DO
 	Melder_information (my result [trial]. response);
 END2 }
 
-FORM (ResultsMFC_getStimulus, U"ResultsMFC: Get stimulus", 0) {
+FORM (ResultsMFC_getStimulus, U"ResultsMFC: Get stimulus", nullptr) {
 	NATURAL (U"Trial", U"1")
 	OK2
 DO
@@ -98,17 +109,18 @@ DO
 END2 }
 
 DIRECT2 (ResultsMFC_removeUnsharedStimuli) {
-	ResultsMFC res1 = NULL, res2 = NULL;
+	ResultsMFC res1 = nullptr, res2 = nullptr;
 	WHERE (SELECTED) { if (res1) res2 = (ResultsMFC) OBJECT; else res1 = (ResultsMFC) OBJECT; }
 	Melder_assert (res1 && res2);
-	praat_new (ResultsMFC_removeUnsharedStimuli (res1, res2), res2 -> name, U"_shared");
+	autoResultsMFC result = ResultsMFC_removeUnsharedStimuli (res1, res2);
+	praat_new (result.move(), res2 -> name, U"_shared");
 END2 }
 
 DIRECT2 (ResultsMFC_to_Categories_stimuli) {
 	WHERE (SELECTED) {
 		iam_LOOP (ResultsMFC);
 		autoCategories thee = ResultsMFC_to_Categories_stimuli (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -116,44 +128,43 @@ DIRECT2 (ResultsMFC_to_Categories_responses) {
 	WHERE (SELECTED) {
 		iam_LOOP (ResultsMFC);
 		autoCategories thee = ResultsMFC_to_Categories_responses (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (ResultsMFCs_to_Table) {
-	autoCollection collection = Collection_create (classResultsMFC, 100);
-	Collection_dontOwnItems (collection.peek());
+	OrderedOf<structResultsMFC> collection;
 	WHERE (SELECTED) {
 		iam_LOOP (ResultsMFC);
-		Collection_addItem (collection.peek(), me);
+		collection. addItem_ref (me);
 	}
-	autoTable thee = ResultsMFCs_to_Table (collection.peek());
-	praat_new (thee.transfer(), U"allResults");
+	autoTable thee = ResultsMFCs_to_Table (& collection);
+	praat_new (thee.move(), U"allResults");
 END2 }
 
 /***** buttons *****/
 
-void praat_uvafon_Exp_init (void);
-void praat_uvafon_Exp_init (void) {
-	Thing_recognizeClassesByName (classExperimentMFC, classResultsMFC, NULL);
+void praat_uvafon_Exp_init ();
+void praat_uvafon_Exp_init () {
+	Thing_recognizeClassesByName (classExperimentMFC, classResultsMFC, nullptr);
 
-	praat_addAction1 (classCategories, 0, U"Sort", 0, 0, DO_Categories_sort);
-	praat_addAction1 (classCategories, 1, U"Get entropy", 0, 0, DO_Categories_getEntropy);
+	praat_addAction1 (classCategories, 0, U"Sort", nullptr, 0, DO_Categories_sort);
+	praat_addAction1 (classCategories, 1, U"Get entropy", nullptr, 0, DO_Categories_getEntropy);
 
-	praat_addAction1 (classExperimentMFC, 0, U"Run", 0, 0, DO_ExperimentMFC_run);
-	praat_addAction1 (classExperimentMFC, 0, U"Extract results", 0, 0, DO_ExperimentMFC_extractResults);
+	praat_addAction1 (classExperimentMFC, 0, U"Run", nullptr, 0, DO_ExperimentMFC_run);
+	praat_addAction1 (classExperimentMFC, 0, U"Extract results", nullptr, 0, DO_ExperimentMFC_extractResults);
 
-	praat_addAction1 (classResultsMFC, 0, U"Query -", 0, 0, 0);
-	praat_addAction1 (classResultsMFC, 1, U"Get number of trials", 0, 1, DO_ResultsMFC_getNumberOfTrials);
-	praat_addAction1 (classResultsMFC, 1, U"Get stimulus...", 0, 1, DO_ResultsMFC_getStimulus);
-	praat_addAction1 (classResultsMFC, 1, U"Get response...", 0, 1, DO_ResultsMFC_getResponse);
-	praat_addAction1 (classResultsMFC, 0, U"Modify", 0, 0, 0);
+	praat_addAction1 (classResultsMFC, 0, U"Query -", nullptr, 0, nullptr);
+	praat_addAction1 (classResultsMFC, 1, U"Get number of trials", nullptr, 1, DO_ResultsMFC_getNumberOfTrials);
+	praat_addAction1 (classResultsMFC, 1, U"Get stimulus...", nullptr, 1, DO_ResultsMFC_getStimulus);
+	praat_addAction1 (classResultsMFC, 1, U"Get response...", nullptr, 1, DO_ResultsMFC_getResponse);
+	praat_addAction1 (classResultsMFC, 0, U"Modify", nullptr, 0, nullptr);
 	praat_addAction1 (classResultsMFC, 2, U"Remove unshared stimuli", 0, 0, DO_ResultsMFC_removeUnsharedStimuli);
-	praat_addAction1 (classResultsMFC, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classResultsMFC, 0, U"To Categories (stimuli)", 0, 0, DO_ResultsMFC_to_Categories_stimuli);
-	praat_addAction1 (classResultsMFC, 0, U"To Categories (responses)", 0, 0, DO_ResultsMFC_to_Categories_responses);
-	praat_addAction1 (classResultsMFC, 0, U"Collect", 0, 0, 0);
-	praat_addAction1 (classResultsMFC, 0, U"Collect to Table", 0, 0, DO_ResultsMFCs_to_Table);
+	praat_addAction1 (classResultsMFC, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classResultsMFC, 0, U"To Categories (stimuli)", nullptr, 0, DO_ResultsMFC_to_Categories_stimuli);
+	praat_addAction1 (classResultsMFC, 0, U"To Categories (responses)", nullptr, 0, DO_ResultsMFC_to_Categories_responses);
+	praat_addAction1 (classResultsMFC, 0, U"Collect", nullptr, 0, nullptr);
+	praat_addAction1 (classResultsMFC, 0, U"Collect to Table", nullptr, 0, DO_ResultsMFCs_to_Table);
 }
 
 /* End of file praat_Exp.cpp */
diff --git a/fon/praat_Fon.cpp b/fon/praat_Fon.cpp
index 1712731..869ba6b 100644
--- a/fon/praat_Fon.cpp
+++ b/fon/praat_Fon.cpp
@@ -1,20 +1,19 @@
 /* praat_Fon.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -39,6 +38,8 @@
 #include "Matrix_and_Pitch.h"
 #include "Matrix_and_PointProcess.h"
 #include "Matrix_and_Polygon.h"
+#include "Matrix_extensions.h"
+
 #include "MovieWindow.h"
 #include "ParamCurve.h"
 #include "Photo.h"
@@ -84,25 +85,25 @@ static const char32 *STRING_TO_FREQUENCY = U"right Frequency range";
 
 /***** Common dialog contents. *****/
 
-void praat_dia_timeRange (Any dia);
-void praat_dia_timeRange (Any dia) {
+void praat_dia_timeRange (UiForm dia);
+void praat_dia_timeRange (UiForm dia) {
 	REAL (STRING_FROM_TIME_SECONDS, U"0.0")
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 }
-void praat_get_timeRange (Any dia, double *tmin, double *tmax);
-void praat_get_timeRange (Any dia, double *tmin, double *tmax) {
+void praat_get_timeRange (UiForm dia, double *tmin, double *tmax);
+void praat_get_timeRange (UiForm dia, double *tmin, double *tmax) {
 	*tmin = GET_REAL (STRING_FROM_TIME);
 	*tmax = GET_REAL (STRING_TO_TIME);
 }
-int praat_get_frequencyRange (Any dia, double *fmin, double *fmax);
-int praat_get_frequencyRange (Any dia, double *fmin, double *fmax) {
+int praat_get_frequencyRange (UiForm dia, double *fmin, double *fmax);
+int praat_get_frequencyRange (UiForm dia, double *fmin, double *fmax) {
 	*fmin = GET_REAL (STRING_FROM_FREQUENCY);
 	*fmax = GET_REAL (STRING_TO_FREQUENCY);
 	REQUIRE (*fmax > *fmin, U"Maximum frequency must be greater than minimum frequency.")
 	return 1;
 }
-static void dia_Vector_getExtremum (Any dia) {
-	Any radio;
+static void dia_Vector_getExtremum (UiForm dia) {
+	UiField radio;
 	praat_dia_timeRange (dia);
 	RADIO (U"Interpolation", 2)
 		RADIOBUTTON (U"None")
@@ -111,8 +112,8 @@ static void dia_Vector_getExtremum (Any dia) {
 		RADIOBUTTON (U"Sinc70")
 		RADIOBUTTON (U"Sinc700")
 }
-static void dia_Vector_getValue (Any dia) {
-	Any radio;
+static void dia_Vector_getValue (UiForm dia) {
+	UiField radio;
 	REAL (U"Time (s)", U"0.5")
 	RADIO (U"Interpolation", 3)
 		RADIOBUTTON (U"Nearest")
@@ -122,7 +123,7 @@ static void dia_Vector_getValue (Any dia) {
 		RADIOBUTTON (U"Sinc700")
 }
 
-static void getTminTmaxFminFmax (Any dia, double *tmin, double *tmax, double *fmin, double *fmax) {
+static void getTminTmaxFminFmax (UiForm dia, double *tmin, double *tmax, double *fmin, double *fmax) {
 	*tmin = GET_REAL (STRING_FROM_TIME);
 	*tmax = GET_REAL (STRING_TO_TIME);
 	*fmin = GET_REAL (STRING_FROM_FREQUENCY);
@@ -141,7 +142,7 @@ int praat_Fon_formula (UiForm dia, Interpreter interpreter) {
 	LOOP {
 		iam (Matrix);
 		try {
-			Matrix_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -151,14 +152,20 @@ int praat_Fon_formula (UiForm dia, Interpreter interpreter) {
 	return 1;
 }
 
+static autoGraphics graphics;
+
+static void gui_drawingarea_cb_expose (Thing /* boss */, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! graphics) return;
+	Graphics_play (graphics.get(), graphics.get());
+}
+
 extern "C" Graphics Movie_create (const char32 *title, int width, int height);
 extern "C" Graphics Movie_create (const char32 *title, int width, int height) {
-	static Graphics graphics;
 	static GuiDialog dialog;
 	static GuiDrawingArea drawingArea;
 	if (! graphics) {
-		dialog = GuiDialog_create (theCurrentPraatApplication -> topShell, 100, 100, width + 2, height + 2, title, NULL, NULL, 0);
-		drawingArea = GuiDrawingArea_createShown (dialog, 0, width, 0, height, NULL, NULL, NULL, NULL, NULL, 0);
+		dialog = GuiDialog_create (theCurrentPraatApplication -> topShell, 100, 100, width + 2, height + 2, title, nullptr, nullptr, 0);
+		drawingArea = GuiDrawingArea_createShown (dialog, 0, width, 0, height, gui_drawingarea_cb_expose, nullptr, nullptr, nullptr, nullptr, 0);
 		GuiThing_show (dialog);
 		graphics = Graphics_create_xmdrawingarea (drawingArea);
 	}
@@ -166,7 +173,7 @@ extern "C" Graphics Movie_create (const char32 *title, int width, int height) {
 	GuiControl_setSize (dialog, width + 2, height + 2);
 	GuiControl_setSize (drawingArea, width, height);
 	GuiThing_show (dialog);
-	return graphics;
+	return graphics.get();
 }
 
 /***** AMPLITUDETIER *****/
@@ -183,7 +190,7 @@ DO
 	}
 END2 }
 
-FORM (AmplitudeTier_create, U"Create empty AmplitudeTier", NULL) {
+FORM (AmplitudeTier_create, U"Create empty AmplitudeTier", nullptr) {
 	WORD (U"Name", U"empty")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
@@ -192,14 +199,14 @@ DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
 	if (endTime <= startTime) Melder_throw (U"End time must be greater than start time.");
 	autoAmplitudeTier thee = AmplitudeTier_create (startTime, endTime);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (AmplitudeTier_downto_PointProcess) {
 	LOOP {
 		iam (AmplitudeTier);
-		autoPointProcess thee = AnyTier_downto_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = AnyTier_downto_PointProcess (me->asAnyTier());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -207,20 +214,21 @@ DIRECT2 (AmplitudeTier_downto_TableOfReal) {
 	LOOP {
 		iam (AmplitudeTier);
 		autoTableOfReal thee = AmplitudeTier_downto_TableOfReal (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (AmplitudeTier_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit an AmplitudeTier from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 	}
 	LOOP if (CLASS == classAmplitudeTier) {
 		iam (AmplitudeTier);
-		autoAmplitudeTierEditor editor = AmplitudeTierEditor_create (ID_AND_FULL_NAME, me, sound, TRUE);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoAmplitudeTierEditor editor = AmplitudeTierEditor_create (ID_AND_FULL_NAME, me, sound, true);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -237,7 +245,7 @@ DO
 	LOOP {
 		iam (AmplitudeTier);
 		try {
-			RealTier_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			RealTier_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -246,7 +254,7 @@ DO
 	}
 END2 }
 
-static void dia_AmplitudeTier_getRangeProperty (Any dia) {
+static void dia_AmplitudeTier_getRangeProperty (UiForm dia) {
 	REAL (U"Shortest period (s)", U"0.0001")
 	REAL (U"Longest period (s)", U"0.02")
 	POSITIVE (U"Maximum amplitude factor", U"1.6")
@@ -260,7 +268,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_local (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -272,7 +280,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_local_dB (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -284,7 +292,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_apq3 (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -296,7 +304,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_apq5 (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -308,7 +316,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_apq11 (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -320,7 +328,7 @@ DO
 		iam (AmplitudeTier);
 		double shimmer = AmplitudeTier_getShimmer_dda (me,
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum amplitude factor"));
-		Melder_informationReal (shimmer, NULL);
+		Melder_informationReal (shimmer, nullptr);
 	}
 END2 }
 
@@ -349,7 +357,7 @@ DO
 	LOOP {
 		iam (AmplitudeTier);
 		autoIntensityTier thee = AmplitudeTier_to_IntensityTier (me, GET_REAL (U"Threshold"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -361,7 +369,7 @@ DO
 	LOOP {
 		iam (AmplitudeTier);
 		autoSound thee = AmplitudeTier_to_Sound (me, GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Interpolation depth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -373,23 +381,23 @@ END2 }
 /***** AMPLITUDETIER & SOUND *****/
 
 DIRECT2 (Sound_AmplitudeTier_multiply) {
-	Sound sound = NULL;
-	AmplitudeTier tier = NULL;
+	Sound sound = nullptr;
+	AmplitudeTier tier = nullptr;
 	LOOP {
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 		if (CLASS == classAmplitudeTier) tier = (AmplitudeTier) OBJECT;
 	}
 	autoSound thee = Sound_AmplitudeTier_multiply (sound, tier);
-	praat_new (thee.transfer(), sound -> name, U"_amp");
+	praat_new (thee.move(), sound -> name, U"_amp");
 END2 }
 
 /***** COCHLEAGRAM *****/
 
-FORM (Cochleagram_difference, U"Cochleagram difference", 0) {
+FORM (Cochleagram_difference, U"Cochleagram difference", nullptr) {
 	praat_dia_timeRange (dia);
 	OK2
 DO
-	Cochleagram coch1 = NULL, coch2 = NULL;
+	Cochleagram coch1 = nullptr, coch2 = nullptr;
 	LOOP (coch1 ? coch2 : coch1) = (Cochleagram) OBJECT;
 	Melder_informationReal (Cochleagram_difference (coch1, coch2,
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range")), U"Hertz (root-mean-square)");
@@ -426,9 +434,9 @@ DIRECT2 (Cochleagram_movie) {
 	}
 END2 }
 
-FORM (Cochleagram_paint, U"Paint Cochleagram", 0) {
+FORM (Cochleagram_paint, U"Paint Cochleagram", nullptr) {
 	praat_dia_timeRange (dia);
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -438,14 +446,14 @@ DO
 	}
 END2 }
 
-FORM (Cochleagram_to_Excitation, U"From Cochleagram to Excitation", 0) {
+FORM (Cochleagram_to_Excitation, U"From Cochleagram to Excitation", nullptr) {
 	REAL (U"Time (s)", U"0.0")
 	OK2
 DO
 	LOOP {
 		iam (Cochleagram);
 		autoExcitation thee = Cochleagram_to_Excitation (me, GET_REAL (U"Time"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -453,7 +461,7 @@ DIRECT2 (Cochleagram_to_Matrix) {
 	LOOP {
 		iam (Cochleagram);
 		autoMatrix thee = Cochleagram_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -474,76 +482,77 @@ DIRECT2 (Corpus_edit) {
 	LOOP {
 		iam (Corpus);
 		autoTableEditor editor = TableEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 /***** DISTRIBUTIONS *****/
 
-FORM (Distributions_to_Transition, U"To Transition", 0) {
+FORM (Distributions_to_Transition, U"To Transition", nullptr) {
 	NATURAL (U"Environment", U"1")
-	BOOLEAN (U"Greedy", 1)
+	BOOLEAN (U"Greedy", true)
 	OK2
 DO
 	LOOP {
 		iam (Distributions);
-		autoTransition thee = Distributions_to_Transition (me, NULL, GET_INTEGER (U"Environment"), NULL, GET_INTEGER (U"Greedy"));
-		praat_new (thee.transfer(), my name);
+		autoTransition thee = Distributions_to_Transition (me, nullptr, GET_INTEGER (U"Environment"), nullptr, GET_INTEGER (U"Greedy"));
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Distributions_to_Transition_adj, U"To Transition", 0) {
+FORM (Distributions_to_Transition_adj, U"To Transition", nullptr) {
 	NATURAL (U"Environment", U"1")
-	BOOLEAN (U"Greedy", 1)
+	BOOLEAN (U"Greedy", true)
 	OK2
 DO
-	Distributions dist = NULL;
-	Transition trans = NULL;
+	Distributions dist = nullptr;
+	Transition trans = nullptr;
 	LOOP {
 		if (CLASS == classDistributions) dist = (Distributions) OBJECT;
 		if (CLASS == classTransition) trans = (Transition) OBJECT;
 	}
-	autoTransition thee = Distributions_to_Transition (dist, NULL, GET_INTEGER (U"Environment"), trans, GET_INTEGER (U"Greedy"));
-	praat_new (thee.transfer());
+	autoTransition thee = Distributions_to_Transition (dist, nullptr, GET_INTEGER (U"Environment"), trans, GET_INTEGER (U"Greedy"));
+	praat_new (thee.move());
 END2 }
 
-FORM (Distributions_to_Transition_noise, U"To Transition (noise)", 0) {
+FORM (Distributions_to_Transition_noise, U"To Transition (noise)", nullptr) {
 	NATURAL (U"Environment", U"1")
-	BOOLEAN (U"Greedy", 1)
+	BOOLEAN (U"Greedy", true)
 	OK2
 DO
-	Distributions underlying = NULL, surface = NULL;
+	Distributions underlying = nullptr, surface = nullptr;
 	LOOP (underlying ? surface : underlying) = (Distributions) OBJECT;
-	autoTransition thee = Distributions_to_Transition (underlying, surface, GET_INTEGER (U"Environment"), NULL, GET_INTEGER (U"Greedy"));
-	praat_new (thee.transfer());
+	autoTransition thee = Distributions_to_Transition (underlying, surface, GET_INTEGER (U"Environment"), nullptr, GET_INTEGER (U"Greedy"));
+	praat_new (thee.move());
 END2 }
 
-FORM (Distributions_to_Transition_noise_adj, U"To Transition (noise)", 0) {
+FORM (Distributions_to_Transition_noise_adj, U"To Transition (noise)", nullptr) {
 	NATURAL (U"Environment", U"1")
-	BOOLEAN (U"Greedy", 1)
+	BOOLEAN (U"Greedy", true)
 	OK2
 DO
-	Distributions underlying = NULL, surface = NULL;
-	Transition trans = NULL;
+	Distributions underlying = nullptr, surface = nullptr;
+	Transition trans = nullptr;
 	LOOP {
 		if (CLASS == classDistributions) (underlying ? surface : underlying) = (Distributions) OBJECT;
 		if (CLASS == classTransition) trans = (Transition) OBJECT;
 	}
 	autoTransition thee = Distributions_to_Transition (underlying, surface, GET_INTEGER (U"Environment"), trans, GET_INTEGER (U"Greedy"));
-	praat_new (thee.transfer());
+	praat_new (thee.move());
 END2 }
 
 /***** DISTRIBUTIONS & TRANSITION *****/
 
 DIRECT2 (Distributions_Transition_map) {
-	Distributions dist = NULL;
-	Transition trans = NULL;
+	Distributions dist = nullptr;
+	Transition trans = nullptr;
 	LOOP {
 		if (CLASS == classDistributions) dist = (Distributions) OBJECT;
 		if (CLASS == classTransition) trans = (Transition) OBJECT;
 	}
 	autoDistributions thee = Distributions_Transition_map (dist, trans);
-	praat_new (thee.transfer(), U"surface");
+	praat_new (thee.move(), U"surface");
 END2 }
 
 /***** DURATIONTIER *****/
@@ -569,27 +578,28 @@ DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
 	if (endTime <= startTime) Melder_throw (U"End time must be greater than start time.");
 	autoDurationTier thee = DurationTier_create (startTime, endTime);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (DurationTier_downto_PointProcess) {
 	LOOP {
 		iam (DurationTier);
-		autoPointProcess thee = AnyTier_downto_PointProcess (OBJECT);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = AnyTier_downto_PointProcess (me->asAnyTier());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (DurationTier_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a DurationTier from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 	}
 	LOOP if (CLASS == classDurationTier) {
 		iam (DurationTier);
-		autoDurationTierEditor editor = DurationTierEditor_create (ID_AND_FULL_NAME, me, sound, TRUE);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoDurationTierEditor editor = DurationTierEditor_create (ID_AND_FULL_NAME, me, sound, true);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -606,7 +616,7 @@ DO
 	LOOP {
 		iam (DurationTier);
 		try {
-			RealTier_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			RealTier_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -615,7 +625,7 @@ DO
 	}
 END2 }
 
-FORM (DurationTier_getTargetDuration, U"Get target duration", 0) {
+FORM (DurationTier_getTargetDuration, U"Get target duration", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1.0")
 	OK2
@@ -634,7 +644,7 @@ DO
 	LOOP {
 		iam (DurationTier);
 		double value = RealTier_getValueAtTime (me, GET_REAL (U"Time"));
-		Melder_informationReal (value, NULL);
+		Melder_informationReal (value, nullptr);
 	}
 END2 }
 	
@@ -645,7 +655,7 @@ DO
 	LOOP {
 		iam (DurationTier);
 		double value = RealTier_getValueAtIndex (me, GET_INTEGER (U"Point number"));
-		Melder_informationReal (value, NULL);
+		Melder_informationReal (value, nullptr);
 	}
 END2 }
 
@@ -686,7 +696,7 @@ DO
 	LOOP {
 		iam (Excitation);
 		try {
-			Matrix_formula (reinterpret_cast <Matrix> (me), GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (reinterpret_cast <Matrix> (me), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -714,7 +724,7 @@ DO
 	LOOP {
 		iam (Excitation);
 		autoFormant thee = Excitation_to_Formant (me, GET_INTEGER (U"Maximum number of formants"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -722,7 +732,7 @@ DIRECT2 (Excitation_to_Matrix) {
 	LOOP {
 		iam (Excitation);
 		autoMatrix thee = Excitation_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -732,7 +742,7 @@ DIRECT2 (Formant_downto_FormantGrid) {
 	LOOP {
 		iam (Formant);
 		autoFormantGrid thee = Formant_downto_FormantGrid (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -740,7 +750,7 @@ DIRECT2 (Formant_downto_FormantTier) {
 	LOOP {
 		iam (Formant);
 		autoFormantTier thee = Formant_downto_FormantTier (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -916,7 +926,7 @@ DO
 	}
 END2 }
 
-FORM (Formant_getQuantile, U"Formant: Get quantile", 0) {
+FORM (Formant_getQuantile, U"Formant: Get quantile", nullptr) {
 	NATURAL (U"Formant number", U"1")
 	praat_dia_timeRange (dia);
 	RADIO (U"Unit", 1)
@@ -934,7 +944,7 @@ DO
 	}
 END2 }
 
-FORM (Formant_getQuantileOfBandwidth, U"Formant: Get quantile of bandwidth", 0) {
+FORM (Formant_getQuantileOfBandwidth, U"Formant: Get quantile of bandwidth", nullptr) {
 	NATURAL (U"Formant number", U"1")
 	praat_dia_timeRange (dia);
 	RADIO (U"Unit", 1)
@@ -952,7 +962,7 @@ DO
 	}
 END2 }
 
-FORM (Formant_getStandardDeviation, U"Formant: Get standard deviation", 0) {
+FORM (Formant_getStandardDeviation, U"Formant: Get standard deviation", nullptr) {
 	NATURAL (U"Formant number", U"1")
 	praat_dia_timeRange (dia);
 	RADIO (U"Unit", 1)
@@ -1033,7 +1043,7 @@ DIRECT2 (Formant_help) {
 	Melder_help (U"Formant");
 END2 }
 
-FORM (Formant_downto_Table, U"Formant: Down to Table", 0) {
+FORM (Formant_downto_Table, U"Formant: Down to Table", nullptr) {
 	BOOLEAN (U"Include frame number", false)
 	BOOLEAN (U"Include time", true)
 	NATURAL (U"Time decimals", U"6")
@@ -1051,7 +1061,7 @@ DO
 			GET_INTEGER (U"Include intensity"), GET_INTEGER (U"Intensity decimals"),
 			GET_INTEGER (U"Include number of formants"), GET_INTEGER (U"Frequency decimals"),
 			GET_INTEGER (U"Include bandwidths"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1077,7 +1087,7 @@ DO
 	}
 END2 }
 
-FORM (Formant_scatterPlot, U"Formant: Scatter plot", 0) {
+FORM (Formant_scatterPlot, U"Formant: Scatter plot", nullptr) {
 	praat_dia_timeRange (dia);
 	NATURAL (U"Horizontal formant number", U"2")
 	REAL (U"left Horizontal range (Hz)", U"3000")
@@ -1086,7 +1096,7 @@ FORM (Formant_scatterPlot, U"Formant: Scatter plot", 0) {
 	REAL (U"left Vertical range (Hz)", U"1500")
 	REAL (U"right Vertical range (Hz)", U"100")
 	POSITIVE (U"Mark size (mm)", U"1.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	SENTENCE (U"Mark string (+xo.)", U"+")
 	OK2
 DO
@@ -1111,14 +1121,14 @@ DIRECT2 (Formant_sort) {
 	}
 END2 }
 
-FORM (Formant_to_Matrix, U"From Formant to Matrix", 0) {
+FORM (Formant_to_Matrix, U"From Formant to Matrix", nullptr) {
 	INTEGER (U"Formant", U"1")
 	OK2
 DO
 	LOOP {
 		iam (Formant);
 		autoMatrix thee = Formant_to_Matrix (me, GET_INTEGER (U"Formant"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1143,48 +1153,48 @@ DO
 			GET_REAL (U"Reference F3"), GET_REAL (U"Reference F4"),
 			GET_REAL (U"Reference F5"), GET_REAL (U"Frequency cost"),
 			GET_REAL (U"Bandwidth cost"), GET_REAL (U"Transition cost"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** FORMANT & POINTPROCESS *****/
 
 DIRECT2 (Formant_PointProcess_to_FormantTier) {
-	Formant formant = NULL;
-	PointProcess point = NULL;
+	Formant formant = nullptr;
+	PointProcess point = nullptr;
 	LOOP {
 		if (CLASS == classFormant) formant = (Formant) OBJECT;
 		if (CLASS == classPointProcess) point = (PointProcess) OBJECT;
 		if (formant && point) break;
 	}
 	autoFormantTier thee = Formant_PointProcess_to_FormantTier (formant, point);
-	praat_new (thee.transfer(), formant -> name, U"_", point -> name);
+	praat_new (thee.move(), formant -> name, U"_", point -> name);
 END2 }
 
 /***** FORMANT & SOUND *****/
 
 DIRECT2 (Sound_Formant_filter) {
-	Sound sound = NULL;
-	Formant formant = NULL;
+	Sound sound = nullptr;
+	Formant formant = nullptr;
 	LOOP {
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 		if (CLASS == classFormant) formant = (Formant) OBJECT;
 		if (sound && formant) break;
 	}
 	autoSound thee = Sound_Formant_filter (sound, formant);
-	praat_new (thee.transfer(), sound -> name, U"_filt");
+	praat_new (thee.move(), sound -> name, U"_filt");
 END2 }
 
 DIRECT2 (Sound_Formant_filter_noscale) {
-	Sound sound = NULL;
-	Formant formant = NULL;
+	Sound sound = nullptr;
+	Formant formant = nullptr;
 	LOOP {
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 		if (CLASS == classFormant) formant = (Formant) OBJECT;
 		if (sound && formant) break;
 	}
 	autoSound thee = Sound_Formant_filter_noscale (sound, formant);
-	praat_new (thee.transfer(), sound -> name, U"_filt");
+	praat_new (thee.move(), sound -> name, U"_filt");
 END2 }
 
 /***** FORMANTGRID *****/
@@ -1192,7 +1202,7 @@ END2 }
 FORM (FormantGrid_addBandwidthPoint, U"FormantGrid: Add bandwidth point", U"FormantGrid: Add bandwidth point...") {
 	NATURAL (U"Formant number", U"1")
 	REAL (U"Time (s)", U"0.5")
-	POSITIVE (U"Bandwidth (Hz)", U"100")
+	POSITIVE (U"Bandwidth (Hz)", U"100.0")
 	OK2
 DO
 	LOOP {
@@ -1205,7 +1215,7 @@ END2 }
 FORM (FormantGrid_addFormantPoint, U"FormantGrid: Add formant point", U"FormantGrid: Add formant point...") {
 	NATURAL (U"Formant number", U"1")
 	REAL (U"Time (s)", U"0.5")
-	POSITIVE (U"Frequency (Hz)", U"550")
+	POSITIVE (U"Frequency (Hz)", U"550.0")
 	OK2
 DO
 	LOOP {
@@ -1215,15 +1225,15 @@ DO
 	}
 END2 }
 
-FORM (FormantGrid_create, U"Create FormantGrid", NULL) {
+FORM (FormantGrid_create, U"Create FormantGrid", nullptr) {
 	WORD (U"Name", U"schwa")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
 	NATURAL (U"Number of formants", U"10")
-	POSITIVE (U"Initial first formant (Hz)", U"550")
-	POSITIVE (U"Initial formant spacing (Hz)", U"1100")
-	REAL (U"Initial first bandwidth (Hz)", U"60")
-	REAL (U"Initial bandwidth spacing (Hz)", U"50")
+	POSITIVE (U"Initial first formant (Hz)", U"550.0")
+	POSITIVE (U"Initial formant spacing (Hz)", U"1100.0")
+	REAL (U"Initial first bandwidth (Hz)", U"60.0")
+	REAL (U"Initial bandwidth spacing (Hz)", U"50.0")
 	OK2
 DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
@@ -1231,17 +1241,15 @@ DO
 	autoFormantGrid thee = FormantGrid_create (startTime, endTime, GET_INTEGER (U"Number of formants"),
 		GET_REAL (U"Initial first formant"), GET_REAL (U"Initial formant spacing"),
 		GET_REAL (U"Initial first bandwidth"), GET_REAL (U"Initial bandwidth spacing"));
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END2 }
 
-static void cb_FormantGridEditor_publish (Editor me, void *closure, Data publish) {
-	(void) me;
-	(void) closure;
+static void cb_FormantGridEditor_publish (Editor /* me */, autoDaata publish) {
 	/*
 	 * Keep the gate for error handling.
 	 */
 	try {
-		praat_new (publish, U"fromFormantGridEditor");
+		praat_new (publish.move(), U"fromFormantGridEditor");
 		praat_updateSelection ();
 	} catch (MelderError) {
 		Melder_flushError ();
@@ -1252,8 +1260,9 @@ DIRECT2 (FormantGrid_edit) {
 	LOOP {
 		iam (FormantGrid);
 		autoFormantGridEditor editor = FormantGridEditor_create (ID_AND_FULL_NAME, me);
-		Editor_setPublicationCallback (editor.peek(), cb_FormantGridEditor_publish, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		Editor_setPublicationCallback (editor.get(), cb_FormantGridEditor_publish);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -1266,7 +1275,7 @@ DO
 	LOOP {
 		iam (FormantGrid);
 		try {
-			FormantGrid_formula_bandwidths (me, GET_STRING (U"formula"), interpreter, NULL);
+			FormantGrid_formula_bandwidths (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the FormantGrid may have partially changed
@@ -1283,7 +1292,7 @@ DO
 	LOOP {
 		iam (FormantGrid);
 		try {
-			FormantGrid_formula_frequencies (me, GET_STRING (U"formula"), interpreter, NULL);
+			FormantGrid_formula_frequencies (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the FormantGrid may have partially changed
@@ -1322,7 +1331,7 @@ DO
 	}
 END2 }
 
-FORM (FormantGrid_to_Formant, U"FormantGrid: To Formant", 0) {
+FORM (FormantGrid_to_Formant, U"FormantGrid: To Formant", nullptr) {
 	POSITIVE (U"Time step (s)", U"0.01")
 	REAL (U"Intensity (Pa\u00B2)", U"0.1")
 	OK2
@@ -1332,34 +1341,34 @@ DO
 	LOOP {
 		iam (FormantGrid);
 		autoFormant thee = FormantGrid_to_Formant (me, GET_REAL (U"Time step"), intensity);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** FORMANTGRID & SOUND *****/
 
 DIRECT2 (Sound_FormantGrid_filter) {
-	Sound me = NULL;
-	FormantGrid grid = NULL;
+	Sound me = nullptr;
+	FormantGrid grid = nullptr;
 	LOOP {
 		if (CLASS == classSound) me = (Sound) OBJECT;
 		if (CLASS == classFormantGrid) grid = (FormantGrid) OBJECT;
 		if (me && grid) break;   // OPTIMIZE
 	}
 	autoSound thee = Sound_FormantGrid_filter (me, grid);
-	praat_new (thee.transfer(), my name, U"_filt");
+	praat_new (thee.move(), my name, U"_filt");
 END2 }
 
 DIRECT2 (Sound_FormantGrid_filter_noscale) {
-	Sound me = NULL;
-	FormantGrid grid = NULL;
+	Sound me = nullptr;
+	FormantGrid grid = nullptr;
 	LOOP {
 		if (CLASS == classSound) me = (Sound) OBJECT;
 		if (CLASS == classFormantGrid) grid = (FormantGrid) OBJECT;
 		if (me && grid) break;   // OPTIMIZE
 	}
 	autoSound thee = Sound_FormantGrid_filter_noscale (me, grid);
-	praat_new (thee.transfer(), my name, U"_filt");
+	praat_new (thee.move(), my name, U"_filt");
 END2 }
 
 /***** FORMANTTIER *****/
@@ -1380,13 +1389,13 @@ DO
 	point -> numberOfFormants = numberOfFormants;
 	LOOP {
 		iam (FormantTier);
-		autoFormantPoint point2 = Data_copy (point.peek());
-		AnyTier_addPoint (me, point2.transfer());
+		autoFormantPoint point2 = Data_copy (point.get());
+		AnyTier_addPoint_move (me->asAnyTier(), point2.move());
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (FormantTier_create, U"Create empty FormantTier", NULL) {
+FORM (FormantTier_create, U"Create empty FormantTier", nullptr) {
 	WORD (U"Name", U"empty")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
@@ -1395,18 +1404,18 @@ DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
 	if (endTime <= startTime) Melder_throw (U"End time must be greater than start time.");
 	autoFormantTier thee = FormantTier_create (startTime, endTime);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (FormantTier_downto_TableOfReal, U"Down to TableOfReal", 0) {
-	BOOLEAN (U"Include formants", 1)
-	BOOLEAN (U"Include bandwidths", 0)
+FORM (FormantTier_downto_TableOfReal, U"Down to TableOfReal", nullptr) {
+	BOOLEAN (U"Include formants", true)
+	BOOLEAN (U"Include bandwidths", false)
 	OK2
 DO
 	LOOP {
 		iam (FormantTier);
 		autoTableOfReal thee = FormantTier_downto_TableOfReal (me, GET_INTEGER (U"Include formants"), GET_INTEGER (U"Include bandwidths"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1438,7 +1447,7 @@ DIRECT2 (FormantTier_help) {
 	Melder_help (U"FormantTier");
 END2 }
 
-FORM (FormantTier_speckle, U"Draw FormantTier", 0) {
+FORM (FormantTier_speckle, U"Draw FormantTier", nullptr) {
 	praat_dia_timeRange (dia);
 	POSITIVE (U"Maximum frequency (Hz)", U"5500.0")
 	BOOLEAN (U"Garnish", 1)
@@ -1454,27 +1463,27 @@ END2 }
 /***** FORMANTTIER & SOUND *****/
 
 DIRECT2 (Sound_FormantTier_filter) {
-	Sound me = NULL;
-	FormantTier tier = NULL;
+	Sound me = nullptr;
+	FormantTier tier = nullptr;
 	LOOP {
 		if (CLASS == classSound) me = (Sound) OBJECT;
 		if (CLASS == classFormantTier) tier = (FormantTier) OBJECT;
 		if (me && tier) break;   // OPTIMIZE
 	}
 	autoSound thee = Sound_FormantTier_filter (me, tier);
-	praat_new (thee.transfer(), my name, U"_filt");
+	praat_new (thee.move(), my name, U"_filt");
 END2 }
 
 DIRECT2 (Sound_FormantTier_filter_noscale) {
-	Sound me = NULL;
-	FormantTier tier = NULL;
+	Sound me = nullptr;
+	FormantTier tier = nullptr;
 	LOOP {
 		if (CLASS == classSound) me = (Sound) OBJECT;
 		if (CLASS == classFormantTier) tier = (FormantTier) OBJECT;
 		if (me && tier) break;   // OPTIMIZE
 	}
 	autoSound thee = Sound_FormantTier_filter_noscale (me, tier);
-	praat_new (thee.transfer(), my name, U"_filt");
+	praat_new (thee.move(), my name, U"_filt");
 END2 }
 
 /***** HARMONICITY *****/
@@ -1503,7 +1512,7 @@ DO
 	LOOP {
 		iam (Harmonicity);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Harmonicity may have partically changed
@@ -1613,17 +1622,17 @@ DIRECT2 (Harmonicity_to_Matrix) {
 	LOOP {
 		iam (Harmonicity);
 		autoMatrix thee = Harmonicity_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** INTENSITY *****/
 
-FORM (Intensity_draw, U"Draw Intensity", 0) {
+FORM (Intensity_draw, U"Draw Intensity", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"Minimum (dB)", U"0.0")
 	REAL (U"Maximum (dB)", U"0.0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -1638,7 +1647,7 @@ DIRECT2 (Intensity_downto_IntensityTier) {
 	LOOP {
 		iam (Intensity);
 		autoIntensityTier thee = Intensity_downto_IntensityTier (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1646,7 +1655,7 @@ DIRECT2 (Intensity_downto_Matrix) {
 	LOOP {
 		iam (Intensity);
 		autoMatrix thee = Intensity_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1659,7 +1668,7 @@ DO
 	LOOP {
 		iam (Intensity);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Intensity may have partially changed
@@ -1687,7 +1696,7 @@ FORM (old_Intensity_getMean, U"Intensity: Get mean", U"Intensity: Get mean...")
 DO
 	LOOP {
 		iam (Intensity);
-		double mean = Sampled_getMean_standardUnit (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), 0, 0, TRUE);
+		double mean = Sampled_getMean_standardUnit (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), 0, 0, true);
 		Melder_informationReal (mean, U"dB");
 		break;   // OPTIMIZE
 	}
@@ -1704,7 +1713,7 @@ DO_ALTERNATIVE (old_Intensity_getMean)
 	LOOP {
 		iam (Intensity);
 		double mean = Sampled_getMean_standardUnit (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-			0, GET_INTEGER (U"Averaging method"), TRUE);
+			0, GET_INTEGER (U"Averaging method"), true);
 		Melder_informationReal (mean, U"dB");
 		break;   // OPTIMIZE
 	}
@@ -1800,7 +1809,7 @@ DIRECT2 (Intensity_to_IntensityTier_peaks) {
 	LOOP {
 		iam (Intensity);
 		autoIntensityTier thee = Intensity_to_IntensityTier_peaks (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1808,26 +1817,26 @@ DIRECT2 (Intensity_to_IntensityTier_valleys) {
 	LOOP {
 		iam (Intensity);
 		autoIntensityTier thee = Intensity_to_IntensityTier_valleys (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** INTENSITY & PITCH *****/
 
-FORM (Pitch_Intensity_draw, U"Plot intensity by pitch", 0) {
+FORM (Pitch_Intensity_draw, U"Plot intensity by pitch", nullptr) {
 	REAL (U"From frequency (Hz)", U"0.0")
 	REAL (U"To frequency (Hz)", U"0.0 (= auto)")
 	REAL (U"From intensity (dB)", U"0.0")
 	REAL (U"To intensity (dB)", U"100.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	RADIO (U"Drawing method", 1)
 		RADIOBUTTON (U"Speckles")
 		RADIOBUTTON (U"Curve")
 		RADIOBUTTON (U"Speckles and curve")
 	OK2
 DO
-	Pitch pitch = NULL;
-	Intensity intensity = NULL;
+	Pitch pitch = nullptr;
+	Intensity intensity = nullptr;
 	LOOP {
 		if (CLASS == classPitch) pitch = (Pitch) OBJECT;
 		if (CLASS == classIntensity) intensity = (Intensity) OBJECT;
@@ -1839,16 +1848,16 @@ DO
 		GET_REAL (U"From intensity"), GET_REAL (U"To intensity"), GET_INTEGER (U"Garnish"), GET_INTEGER (U"Drawing method"));
 END2 }
 
-FORM (Pitch_Intensity_speckle, U"Plot intensity by pitch", 0) {
+FORM (Pitch_Intensity_speckle, U"Plot intensity by pitch", nullptr) {
 	REAL (U"From frequency (Hz)", U"0.0")
 	REAL (U"To frequency (Hz)", U"0.0 (= auto)")
 	REAL (U"From intensity (dB)", U"0.0")
 	REAL (U"To intensity (dB)", U"100.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
-	Pitch pitch = NULL;
-	Intensity intensity = NULL;
+	Pitch pitch = nullptr;
+	Intensity intensity = nullptr;
 	LOOP {
 		if (CLASS == classPitch) pitch = (Pitch) OBJECT;
 		if (CLASS == classIntensity) intensity = (Intensity) OBJECT;
@@ -1860,18 +1869,42 @@ DO
 		GET_REAL (U"From intensity"), GET_REAL (U"To intensity"), GET_INTEGER (U"Garnish"), 1);
 END2 }
 
+DIRECT2 (Pitch_Intensity_getMean) {
+	Pitch pitch = nullptr;
+	Intensity intensity = nullptr;
+	LOOP {
+		if (CLASS == classPitch) pitch = (Pitch) OBJECT;
+		if (CLASS == classIntensity) intensity = (Intensity) OBJECT;
+		if (pitch && intensity) break;   // OPTIMIZE
+	}
+	double value = Pitch_Intensity_getMean (pitch, intensity);
+	Melder_informationReal (value, U"dB");
+END2 }
+
+DIRECT2 (Pitch_Intensity_getMeanAbsoluteSlope) {
+	Pitch pitch = nullptr;
+	Intensity intensity = nullptr;
+	LOOP {
+		if (CLASS == classPitch) pitch = (Pitch) OBJECT;
+		if (CLASS == classIntensity) intensity = (Intensity) OBJECT;
+		if (pitch && intensity) break;   // OPTIMIZE
+	}
+	double slope = Pitch_Intensity_getMeanAbsoluteSlope (pitch, intensity);
+	Melder_informationReal (slope, U"dB/second");
+END2 }
+
 /***** INTENSITY & POINTPROCESS *****/
 
 DIRECT2 (Intensity_PointProcess_to_IntensityTier) {
-	Intensity intensity = NULL;
-	PointProcess point = NULL;
+	Intensity intensity = nullptr;
+	PointProcess point = nullptr;
 	LOOP {
 		if (CLASS == classIntensity) intensity = (Intensity) OBJECT;
 		if (CLASS == classPointProcess) point = (PointProcess) OBJECT;
 		if (intensity && point) break;   // OPTIMIZE
 	}
 	autoIntensityTier thee = Intensity_PointProcess_to_IntensityTier (intensity, point);
-	praat_new (thee.transfer(), intensity -> name);
+	praat_new (thee.move(), intensity -> name);
 END2 }
 
 /***** INTENSITYTIER *****/
@@ -1888,7 +1921,7 @@ DO
 	}
 END2 }
 
-FORM (IntensityTier_create, U"Create empty IntensityTier", NULL) {
+FORM (IntensityTier_create, U"Create empty IntensityTier", nullptr) {
 	WORD (U"Name", U"empty")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
@@ -1897,14 +1930,14 @@ DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
 	if (endTime <= startTime) Melder_throw (U"End time must be greater than start time.");
 	autoIntensityTier thee = IntensityTier_create (startTime, endTime);
-	praat_new (thee.transfer(), GET_STRING (U"Name"));
+	praat_new (thee.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (IntensityTier_downto_PointProcess) {
 	LOOP {
 		iam (IntensityTier);
-		autoPointProcess thee = AnyTier_downto_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = AnyTier_downto_PointProcess (me->asAnyTier());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1912,21 +1945,22 @@ DIRECT2 (IntensityTier_downto_TableOfReal) {
 	LOOP {
 		iam (IntensityTier);
 		autoTableOfReal thee = IntensityTier_downto_TableOfReal (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (IntensityTier_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit an IntensityTier from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 		if (sound) break;   // OPTIMIZE
 	}
 	LOOP if (CLASS == classIntensityTier) {
 		iam (IntensityTier);
-		autoIntensityTierEditor editor = IntensityTierEditor_create (ID_AND_FULL_NAME, me, sound, TRUE);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoIntensityTierEditor editor = IntensityTierEditor_create (ID_AND_FULL_NAME, me, sound, true);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -1943,7 +1977,7 @@ DO
 	LOOP {
 		iam (IntensityTier);
 		try {
-			RealTier_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			RealTier_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the IntensityTier may have partially changed
@@ -1982,7 +2016,7 @@ DIRECT2 (IntensityTier_to_AmplitudeTier) {
 	LOOP {
 		iam (IntensityTier);
 		autoAmplitudeTier thee = IntensityTier_to_AmplitudeTier (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1994,59 +2028,63 @@ END2 }
 /***** INTENSITYTIER & POINTPROCESS *****/
 
 DIRECT2 (IntensityTier_PointProcess_to_IntensityTier) {
-	IntensityTier intensity = NULL;
-	PointProcess point = NULL;
+	IntensityTier intensity = nullptr;
+	PointProcess point = nullptr;
 	LOOP {
 		if (CLASS == classIntensityTier) intensity = (IntensityTier) OBJECT;
 		if (CLASS == classPointProcess) point = (PointProcess) OBJECT;
 		if (intensity && point) break;   // OPTIMIZE
 	}
 	autoIntensityTier thee = IntensityTier_PointProcess_to_IntensityTier (intensity, point);
-	praat_new (thee.transfer(), intensity -> name);
+	praat_new (thee.move(), intensity -> name);
 END2 }
 
 /***** INTENSITYTIER & SOUND *****/
 
 DIRECT2 (Sound_IntensityTier_multiply_old) {
-	Sound sound = NULL;
-	IntensityTier intensity = NULL;
+	Sound sound = nullptr;
+	IntensityTier intensity = nullptr;
 	LOOP {
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 		if (CLASS == classIntensityTier) intensity = (IntensityTier) OBJECT;
 		if (sound && intensity) break;   // OPTIMIZE
 	}
-	autoSound thee = Sound_IntensityTier_multiply (sound, intensity, TRUE);
-	praat_new (thee.transfer(), sound -> name, U"_int");
+	autoSound thee = Sound_IntensityTier_multiply (sound, intensity, true);
+	praat_new (thee.move(), sound -> name, U"_int");
 END2 }
 
-FORM (Sound_IntensityTier_multiply, U"Sound & IntervalTier: Multiply", 0) {
-	BOOLEAN (U"Scale to 0.9", 1)
+FORM (Sound_IntensityTier_multiply, U"Sound & IntervalTier: Multiply", nullptr) {
+	BOOLEAN (U"Scale to 0.9", true)
 	OK2
 DO
-	Sound sound = NULL;
-	IntensityTier intensity = NULL;
+	Sound sound = nullptr;
+	IntensityTier intensity = nullptr;
 	LOOP {
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 		if (CLASS == classIntensityTier) intensity = (IntensityTier) OBJECT;
 		if (sound && intensity) break;   // OPTIMIZE
 	}
 	autoSound thee = Sound_IntensityTier_multiply (sound, intensity, GET_INTEGER (U"Scale to 0.9"));
-	praat_new (thee.transfer(), sound -> name, U"_int");
+	praat_new (thee.move(), sound -> name, U"_int");
 END2 }
 
 /***** INTERVALTIER, rest in praat_TextGrid_init.cpp *****/
 
 FORM_READ2 (IntervalTier_readFromXwaves, U"Read IntervalTier from Xwaves", 0, true) {
 	autoIntervalTier me = IntervalTier_readFromXwaves (file);
-	praat_newWithFile (me.transfer(), file, MelderFile_name (file));
+	praat_newWithFile (me.move(), file, MelderFile_name (file));
 END2 }
 
 /***** LTAS *****/
 
 DIRECT2 (Ltases_average) {
-	autoCollection ltases = praat_getSelectedObjects ();
-	autoLtas thee = Ltases_average (ltases.peek());
-	praat_new (thee.transfer(), U"averaged");
+	autoLtasBag ltases = LtasBag_create ();
+	LOOP {
+		iam (Ltas);
+		ltases -> addItem_ref (me);
+	}
+	autoLtas result = Ltases_average (ltases.get());
+	praat_new (result.move(), U"averaged");
 END2 }
 
 FORM (Ltas_computeTrendLine, U"Ltas: Compute trend line", U"Ltas: Compute trend line...") {
@@ -2057,32 +2095,36 @@ DO
 	LOOP {
 		iam (Ltas);
 		autoLtas thee = Ltas_computeTrendLine (me, GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"));
-		praat_new (thee.transfer(), my name, U"_trend");
+		praat_new (thee.move(), my name, U"_trend");
 	}
 END2 }
 
-FORM (old_Ltas_draw, U"Ltas: Draw", 0) {
+FORM (old_Ltas_draw, U"Ltas: Draw", nullptr) {
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"0.0 (= all)")
 	REAL (U"left Power range (dB/Hz)", U"-20.0")
 	REAL (U"right Power range (dB/Hz)", U"80.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
 		iam (Ltas);
 		autoPraatPicture picture;
-		Ltas_draw (me, GRAPHICS, GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-			GET_REAL (U"left Power range"), GET_REAL (U"right Power range"), GET_INTEGER (U"Garnish"), U"Bars");
+		Ltas_draw (me, GRAPHICS,
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Power range"),
+			GET_REAL (U"right Power range"),
+			GET_INTEGER (U"Garnish"), U"Bars");
 	}
 END2 }
 
-FORM (Ltas_draw, U"Ltas: Draw", 0) {
+FORM (Ltas_draw, U"Ltas: Draw", nullptr) {
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"0.0 (= all)")
 	REAL (U"left Power range (dB/Hz)", U"-20.0")
 	REAL (U"right Power range (dB/Hz)", U"80.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 2)
 		OPTION (U"Curve")
@@ -2094,12 +2136,17 @@ DO_ALTERNATIVE (old_Ltas_draw)
 	LOOP {
 		iam (Ltas);
 		autoPraatPicture picture;
-		Ltas_draw (me, GRAPHICS, GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"),
-			GET_REAL (U"left Power range"), GET_REAL (U"right Power range"), GET_INTEGER (U"Garnish"), GET_STRING (U"Drawing method"));
+		Ltas_draw (me, GRAPHICS,
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"),
+			GET_REAL (U"left Power range"),
+			GET_REAL (U"right Power range"),
+			GET_INTEGER (U"Garnish"),
+			GET_STRING (U"Drawing method"));
 	}
 END2 }
 
-FORM (Ltas_formula, U"Ltas Formula", 0) {
+FORM (Ltas_formula, U"Ltas Formula", nullptr) {
 	LABEL (U"label", U"`x' is the frequency in hertz, `col' is the bin number")
 	LABEL (U"label", U"x := x1;   for col := 1 to ncol do { self [1, col] := `formula' ; x := x + dx }")
 	TEXTFIELD (U"formula", U"0")
@@ -2108,7 +2155,7 @@ DO
 	LOOP {
 		iam (Ltas);
 		try {
-			Matrix_formula (reinterpret_cast <Matrix> (me), GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (reinterpret_cast <Matrix> (me), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Ltas may have partially changed
@@ -2118,12 +2165,12 @@ DO
 END2 }
 
 FORM (Ltas_getBinNumberFromFrequency, U"Ltas: Get band from frequency", U"Ltas: Get band from frequency...") {
-	REAL (U"Frequency (Hz)", U"2000")
+	REAL (U"Frequency (Hz)", U"2000.0")
 	OK2
 DO
 	Ltas me = FIRST (Ltas);
 	double binNumber = Sampled_xToIndex (me, GET_REAL (U"Frequency"));
-	Melder_informationReal (binNumber, NULL);
+	Melder_informationReal (binNumber, nullptr);
 END2 }
 
 DIRECT2 (Ltas_getBinWidth) {
@@ -2153,7 +2200,9 @@ FORM (Ltas_getFrequencyOfMaximum, U"Ltas: Get frequency of maximum", U"Ltas: Get
 DO
 	Ltas me = FIRST (Ltas);
 	double frequency = Vector_getXOfMaximum (me,
-		GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_INTEGER (U"Interpolation") - 1);
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		GET_INTEGER (U"Interpolation") - 1);
 	Melder_informationReal (frequency, U"hertz");
 END2 }
 
@@ -2170,7 +2219,9 @@ FORM (Ltas_getFrequencyOfMinimum, U"Ltas: Get frequency of minimum", U"Ltas: Get
 DO
 	Ltas me = FIRST (Ltas);
 	double frequency = Vector_getXOfMinimum (me,
-		GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_INTEGER (U"Interpolation") - 1);
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		GET_INTEGER (U"Interpolation") - 1);
 	Melder_informationReal (frequency, U"hertz");
 END2 }
 
@@ -2179,7 +2230,7 @@ DIRECT2 (Ltas_getHighestFrequency) {
 	Melder_informationReal (my xmax, U"Hz");
 END2 }
 
-FORM (Ltas_getLocalPeakHeight, U"Ltas: Get local peak height", 0) {
+FORM (Ltas_getLocalPeakHeight, U"Ltas: Get local peak height", nullptr) {
 	REAL (U"left Environment (Hz)", U"1700.0")
 	REAL (U"right Environment (Hz)", U"4200.0")
 	REAL (U"left Peak (Hz)", U"2400.0")
@@ -2219,7 +2270,9 @@ FORM (Ltas_getMaximum, U"Ltas: Get maximum", U"Ltas: Get maximum...") {
 DO
 	Ltas me = FIRST (Ltas);
 	double maximum = Vector_getMaximum (me,
-		GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_INTEGER (U"Interpolation") - 1);
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		GET_INTEGER (U"Interpolation") - 1);
 	Melder_informationReal (maximum, U"dB");
 END2 }
 
@@ -2233,8 +2286,12 @@ FORM (Ltas_getMean, U"Ltas: Get mean", U"Ltas: Get mean...") {
 	OK2
 DO
 	Ltas me = FIRST (Ltas);
-	double mean = Sampled_getMean_standardUnit (me, GET_REAL (U"From frequency"), GET_REAL (U"To frequency"),
-		0, GET_INTEGER (U"Averaging method"), FALSE);
+	double mean = Sampled_getMean_standardUnit (me,
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		0,
+		GET_INTEGER (U"Averaging method"),
+		false);
 	Melder_informationReal (mean, U"dB");
 END2 }
 
@@ -2251,7 +2308,9 @@ FORM (Ltas_getMinimum, U"Ltas: Get minimum", U"Ltas: Get minimum...") {
 DO
 	Ltas me = FIRST (Ltas);
 	double minimum = Vector_getMinimum (me,
-		GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_INTEGER (U"Interpolation") - 1);
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		GET_INTEGER (U"Interpolation") - 1);
 	Melder_informationReal (minimum, U"dB");
 END2 }
 
@@ -2273,8 +2332,12 @@ FORM (Ltas_getSlope, U"Ltas: Get slope", 0) {
 	OK2
 DO
 	Ltas me = FIRST (Ltas);
-	double slope = Ltas_getSlope (me, GET_REAL (U"left Low band"), GET_REAL (U"right Low band"),
-		GET_REAL (U"left High band"), GET_REAL (U"right High band"), GET_INTEGER (U"Averaging method"));
+	double slope = Ltas_getSlope (me,
+		GET_REAL (U"left Low band"),
+		GET_REAL (U"right Low band"),
+		GET_REAL (U"left High band"),
+		GET_REAL (U"right High band"),
+		GET_INTEGER (U"Averaging method"));
 	Melder_informationReal (slope, U"dB");
 END2 }
 
@@ -2288,8 +2351,12 @@ FORM (Ltas_getStandardDeviation, U"Ltas: Get standard deviation", U"Ltas: Get st
 	OK2
 DO
 	Ltas me = FIRST (Ltas);
-	double stdev = Sampled_getStandardDeviation_standardUnit (me, GET_REAL (U"From frequency"), GET_REAL (U"To frequency"),
-		0, GET_INTEGER (U"Averaging method"), FALSE);
+	double stdev = Sampled_getStandardDeviation_standardUnit (me,
+		GET_REAL (U"From frequency"),
+		GET_REAL (U"To frequency"),
+		0,   // level (irrelevant)
+		GET_INTEGER (U"Averaging method"),
+		false);   // interpolate (don't)
 	Melder_informationReal (stdev, U"dB");
 END2 }
 
@@ -2304,7 +2371,10 @@ FORM (Ltas_getValueAtFrequency, U"Ltas: Get value", U"Ltas: Get value at frequen
 	OK2
 DO
 	Ltas me = FIRST (Ltas);
-	double value = Vector_getValueAtX (me, GET_REAL (U"Frequency"), 1, GET_INTEGER (U"Interpolation") - 1);
+	double value = Vector_getValueAtX (me,
+		GET_REAL (U"Frequency"),
+		1,   // level
+		GET_INTEGER (U"Interpolation") - 1);
 	Melder_informationReal (value, U"dB");
 END2 }
 	
@@ -2323,9 +2393,13 @@ DIRECT2 (Ltas_help) {
 END2 }
 
 DIRECT2 (Ltases_merge) {
-	autoCollection ltases = praat_getSelectedObjects ();
-	autoLtas thee = Ltases_merge (ltases.peek());
-	praat_new (thee.transfer(), U"merged");
+	autoLtasBag ltases = LtasBag_create ();
+	LOOP {
+		iam (Ltas);
+		ltases -> addItem_ref (me);
+	}
+	autoLtas thee = Ltases_merge (ltases.get());
+	praat_new (thee.move(), U"merged");
 END2 }
 
 FORM (Ltas_subtractTrendLine, U"Ltas: Subtract trend line", U"Ltas: Subtract trend line...") {
@@ -2335,16 +2409,18 @@ FORM (Ltas_subtractTrendLine, U"Ltas: Subtract trend line", U"Ltas: Subtract tre
 DO
 	LOOP {
 		iam (Ltas);
-		autoLtas thee = Ltas_subtractTrendLine (me, GET_REAL (U"left Frequency range"), GET_REAL (U"right Frequency range"));
-		praat_new (thee.transfer(), my name, U"_fit");
+		autoLtas result = Ltas_subtractTrendLine (me,
+			GET_REAL (U"left Frequency range"),
+			GET_REAL (U"right Frequency range"));
+		praat_new (result.move(), my name, U"_fit");
 	}
 END2 }
 
 DIRECT2 (Ltas_to_Matrix) {
 	LOOP {
 		iam (Ltas);
-		autoMatrix thee = Ltas_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		autoMatrix result = Ltas_to_Matrix (me);
+		praat_new (result.move(), my name);
 	}
 END2 }
 
@@ -2352,17 +2428,15 @@ DIRECT2 (Ltas_to_SpectrumTier_peaks) {
 	LOOP {
 		iam (Ltas);
 		autoSpectrumTier thee = Ltas_to_SpectrumTier_peaks (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** MANIPULATION *****/
 
-static void cb_ManipulationEditor_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_ManipulationEditor_publication (Editor /* editor */, autoDaata publication) {
 	try {
-		praat_new (publication, U"fromManipulationEditor");
+		praat_new (publication.move(), U"fromManipulationEditor");
 		praat_updateSelection ();
 	} catch (MelderError) {
 		Melder_flushError ();
@@ -2373,8 +2447,9 @@ DIRECT2 (Manipulation_edit) {
 	LOOP {
 		iam (Manipulation);
 		autoManipulationEditor editor = ManipulationEditor_create (ID_AND_FULL_NAME, me);
-		Editor_setPublicationCallback (editor.peek(), cb_ManipulationEditor_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		Editor_setPublicationCallback (editor.get(), cb_ManipulationEditor_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -2382,8 +2457,8 @@ DIRECT2 (Manipulation_extractDurationTier) {
 	LOOP {
 		iam (Manipulation);
 		if (! my duration) Melder_throw (me, U": I don't contain a DurationTier.");
-		autoDurationTier thee = Data_copy (my duration);
-		praat_new (thee.transfer(), my name);
+		autoDurationTier thee = Data_copy (my duration.get());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2391,8 +2466,8 @@ DIRECT2 (Manipulation_extractOriginalSound) {
 	LOOP {
 		iam (Manipulation);
 		if (! my sound) Melder_throw (me, U": I don't contain a Sound.");
-		autoSound thee = Data_copy (my sound);
-		praat_new (thee.transfer(), my name);
+		autoSound thee = Data_copy (my sound.get());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2400,8 +2475,8 @@ DIRECT2 (Manipulation_extractPitchTier) {
 	LOOP {
 		iam (Manipulation);
 		if (! my pitch) Melder_throw (me, U": I don't contain a PitchTier.");
-		autoPitchTier thee = Data_copy (my pitch);
-		praat_new (thee.transfer(), my name);
+		autoPitchTier thee = Data_copy (my pitch.get());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2409,8 +2484,8 @@ DIRECT2 (Manipulation_extractPulses) {
 	LOOP {
 		iam (Manipulation);
 		if (! my pulses) Melder_throw (me, U": I don't contain a PointProcess.");
-		autoPointProcess thee = Data_copy (my pulses);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = Data_copy (my pulses.get());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2418,7 +2493,7 @@ DIRECT2 (Manipulation_getResynthesis_lpc) {
 	LOOP {
 		iam (Manipulation);
 		autoSound thee = Manipulation_to_Sound (me, Manipulation_PITCH_LPC);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2426,7 +2501,7 @@ DIRECT2 (Manipulation_getResynthesis_overlapAdd) {
 	LOOP {
 		iam (Manipulation);
 		autoSound thee = Manipulation_to_Sound (me, Manipulation_OVERLAPADD);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2451,7 +2526,7 @@ END2 }
 DIRECT2 (Manipulation_removeDuration) {
 	LOOP {
 		iam (Manipulation);
-		forget (my duration);
+		my duration = autoDurationTier();
 		praat_dataChanged (me);
 	}
 END2 }
@@ -2459,16 +2534,16 @@ END2 }
 DIRECT2 (Manipulation_removeOriginalSound) {
 	LOOP {
 		iam (Manipulation);
-		forget (my sound);
+		my sound = autoSound();
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM_WRITE (Manipulation_writeToBinaryFileWithoutSound, U"Binary file without Sound", 0, 0)
+FORM_WRITE (Manipulation_writeToBinaryFileWithoutSound, U"Binary file without Sound", nullptr, nullptr)
 	Manipulation_writeToBinaryFileWithoutSound (FIRST_ANY (Manipulation), file);
 END
 
-FORM_WRITE (Manipulation_writeToTextFileWithoutSound, U"Text file without Sound", 0, 0)
+FORM_WRITE (Manipulation_writeToTextFileWithoutSound, U"Text file without Sound", nullptr, nullptr)
 	Manipulation_writeToTextFileWithoutSound (FIRST_ANY (Manipulation), file);
 END
 
@@ -2528,16 +2603,16 @@ DIRECT2 (Manipulation_TextTier_to_Manipulation) {
 	Manipulation me = FIRST (Manipulation);
 	TextTier thee = FIRST (TextTier);
 	autoManipulation him = Manipulation_AnyTier_to_Manipulation (me, reinterpret_cast <AnyTier> (thee));
-	praat_new (him.transfer(), my name);	
+	praat_new (him.move(), my name);
 END2 }
 
 /***** MATRIX *****/
 
 DIRECT2 (Matrix_appendRows) {
-	Matrix m1 = NULL, m2 = NULL;
+	Matrix m1 = nullptr, m2 = nullptr;
 	LOOP (m1 ? m2 : m1) = (Matrix) OBJECT;
 	autoMatrix thee = Matrix_appendRows (m1, m2, classMatrix);
-	praat_new (thee.transfer(), m1 -> name, U"_", m2 -> name);
+	praat_new (thee.move(), m1 -> name, U"_", m2 -> name);
 END2 }
 
 FORM (Matrix_create, U"Create Matrix", U"Create Matrix...") {
@@ -2563,8 +2638,8 @@ DO
 	autoMatrix me = Matrix_create (
 		xmin, xmax, GET_INTEGER (U"Number of columns"), GET_REAL (U"dx"), GET_REAL (U"x1"),
 		ymin, ymax, GET_INTEGER (U"Number of rows"), GET_REAL (U"dy"), GET_REAL (U"y1"));
-	Matrix_formula (me.peek(), GET_STRING (U"formula"), interpreter, NULL);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	Matrix_formula (me.get(), GET_STRING (U"formula"), interpreter, nullptr);
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Matrix_createSimple, U"Create simple Matrix", U"Create simple Matrix...") {
@@ -2576,11 +2651,11 @@ FORM (Matrix_createSimple, U"Create simple Matrix", U"Create simple Matrix...")
 	OK2
 DO
 	autoMatrix me = Matrix_createSimple (GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"));
-	Matrix_formula (me.peek(), GET_STRING (U"formula"), interpreter, NULL);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	Matrix_formula (me.get(), GET_STRING (U"formula"), interpreter, nullptr);
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (Matrix_drawOneContour, U"Draw one altitude contour", 0) {
+FORM (Matrix_drawOneContour, U"Draw one altitude contour", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2597,7 +2672,7 @@ DO
 	}
 END2 }
 
-FORM (Matrix_drawContours, U"Draw altitude contours", 0) {
+FORM (Matrix_drawContours, U"Draw altitude contours", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2615,7 +2690,7 @@ DO
 	}
 END2 }
 
-FORM (Matrix_drawRows, U"Draw rows", 0) {
+FORM (Matrix_drawRows, U"Draw rows", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2637,12 +2712,10 @@ END2 }
 DIRECT2 (Matrix_eigen) {
 	LOOP {
 		iam (Matrix);
-		Matrix vec_ = NULL, val_ = NULL;
-		Matrix_eigen (me, & vec_, & val_);
-		autoMatrix vec = vec_;
-		autoMatrix val = val_;
-		praat_new (vec.transfer(), U"eigenvectors");
-		praat_new (val.transfer(), U"eigenvalues");
+		autoMatrix vectors, values;
+		Matrix_eigen (me, & vectors, & values);
+		praat_new (vectors.move(), U"eigenvectors");
+		praat_new (values.move(), U"eigenvalues");
 	}
 END2 }
 
@@ -2655,7 +2728,7 @@ DO
 	LOOP {
 		iam (Matrix);
 		try {
-			Matrix_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Matrix may have partially changed
@@ -2666,22 +2739,22 @@ END2 }
 
 DIRECT2 (Matrix_getHighestX) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my xmax, NULL);
+	Melder_informationReal (my xmax, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getHighestY) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my ymax, NULL);
+	Melder_informationReal (my ymax, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getLowestX) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my xmin, NULL);
+	Melder_informationReal (my xmin, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getLowestY) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my ymin, NULL);
+	Melder_informationReal (my ymin, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getNumberOfColumns) {
@@ -2696,35 +2769,35 @@ END2 }
 
 DIRECT2 (Matrix_getColumnDistance) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my dx, NULL);
+	Melder_informationReal (my dx, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getRowDistance) {
 	Matrix me = FIRST_ANY (Matrix);
-	Melder_informationReal (my dy, NULL);
+	Melder_informationReal (my dy, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getSum) {
 	Matrix me = FIRST_ANY (Matrix);
 	double sum = Matrix_getSum (me);
-	Melder_informationReal (sum, NULL);
+	Melder_informationReal (sum, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getMaximum) {
 	Matrix me = FIRST_ANY (Matrix);
 	double minimum = NUMundefined, maximum = NUMundefined;
 	Matrix_getWindowExtrema (me, 0, 0, 0, 0, & minimum, & maximum);
-	Melder_informationReal (maximum, NULL);
+	Melder_informationReal (maximum, nullptr);
 END2 }
 
 DIRECT2 (Matrix_getMinimum) {
 	Matrix me = FIRST_ANY (Matrix);
 	double minimum = NUMundefined, maximum = NUMundefined;
 	Matrix_getWindowExtrema (me, 0, 0, 0, 0, & minimum, & maximum);
-	Melder_informationReal (minimum, NULL);
+	Melder_informationReal (minimum, nullptr);
 END2 }
 
-FORM (Matrix_getValueAtXY, U"Matrix: Get value at xy", 0) {
+FORM (Matrix_getValueAtXY, U"Matrix: Get value at xy", nullptr) {
 	REAL (U"X", U"0")
 	REAL (U"Y", U"0")
 	OK2
@@ -2735,7 +2808,7 @@ DO
 	Melder_information (value, U" (at x = ", x, U" and y = ", y, U")");
 END2 }
 
-FORM (Matrix_getValueInCell, U"Matrix: Get value in cell", 0) {
+FORM (Matrix_getValueInCell, U"Matrix: Get value in cell", nullptr) {
 	NATURAL (U"Row number", U"1")
 	NATURAL (U"Column number", U"1")
 	OK2
@@ -2744,25 +2817,25 @@ DO
 	long row = GET_INTEGER (U"Row number"), column = GET_INTEGER (U"Column number");
 	if (row > my ny) Melder_throw (U"Row number must not exceed number of rows.");
 	if (column > my nx) Melder_throw (U"Column number must not exceed number of columns.");
-	Melder_informationReal (my z [row] [column], NULL);
+	Melder_informationReal (my z [row] [column], nullptr);
 END2 }
 
-FORM (Matrix_getXofColumn, U"Matrix: Get x of column", 0) {
+FORM (Matrix_getXofColumn, U"Matrix: Get x of column", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
 	Matrix me = FIRST_ANY (Matrix);
 	double x = Matrix_columnToX (me, GET_INTEGER (U"Column number"));
-	Melder_informationReal (x, NULL);
+	Melder_informationReal (x, nullptr);
 END2 }
 
-FORM (Matrix_getYofRow, U"Matrix: Get y of row", 0) {
+FORM (Matrix_getYofRow, U"Matrix: Get y of row", nullptr) {
 	NATURAL (U"Row number", U"1")
 	OK2
 DO
 	Matrix me = FIRST_ANY (Matrix);
 	double y = Matrix_rowToY (me, GET_INTEGER (U"Row number"));
-	Melder_informationReal (y, NULL);
+	Melder_informationReal (y, nullptr);
 END2 }
 
 DIRECT2 (Matrix_help) {
@@ -2795,7 +2868,7 @@ DO
 	}
 END2 }
 
-FORM (Matrix_paintContours, U"Matrix: Paint altitude contours with greys", 0) {
+FORM (Matrix_paintContours, U"Matrix: Paint altitude contours with greys", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2813,7 +2886,7 @@ DO
 	}
 END2 }
 
-FORM (Matrix_paintImage, U"Matrix: Paint grey image", 0) {
+FORM (Matrix_paintImage, U"Matrix: Paint grey image", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2831,7 +2904,7 @@ DO
 	}
 END2 }
 
-FORM (Matrix_paintSurface, U"Matrix: Paint 3-D surface plot", 0) {
+FORM (Matrix_paintSurface, U"Matrix: Paint 3-D surface plot", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -2849,25 +2922,25 @@ DO
 	}
 END2 }
 
-FORM (Matrix_power, U"Matrix: Power...", 0) {
+FORM (Matrix_power, U"Matrix: Power...", nullptr) {
 	NATURAL (U"Power", U"2")
 	OK2
 DO
 	LOOP {
 		iam (Matrix);
 		autoMatrix thee = Matrix_power (me, GET_INTEGER (U"Power"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM_READ2 (Matrix_readFromRawTextFile, U"Read Matrix from raw text file", 0, true) {
+FORM_READ2 (Matrix_readFromRawTextFile, U"Read Matrix from raw text file", nullptr, true) {
 	autoMatrix me = Matrix_readFromRawTextFile (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-FORM_READ2 (Matrix_readAP, U"Read Matrix from LVS AP file", 0, true) {
+FORM_READ2 (Matrix_readAP, U"Read Matrix from LVS AP file", nullptr, true) {
 	autoMatrix me = Matrix_readAP (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
 FORM (Matrix_setValue, U"Matrix: Set value", U"Matrix: Set value...") {
@@ -2890,7 +2963,7 @@ DIRECT2 (Matrix_to_Cochleagram) {
 	LOOP {
 		iam (Matrix);
 		autoCochleagram thee = Matrix_to_Cochleagram (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2898,7 +2971,7 @@ DIRECT2 (Matrix_to_Excitation) {
 	LOOP {
 		iam (Matrix);
 		autoExcitation thee = Matrix_to_Excitation (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2906,7 +2979,7 @@ DIRECT2 (Matrix_to_Harmonicity) {
 	LOOP {
 		iam (Matrix);
 		autoHarmonicity thee = Matrix_to_Harmonicity (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2914,7 +2987,7 @@ DIRECT2 (Matrix_to_Intensity) {
 	LOOP {
 		iam (Matrix);
 		autoIntensity thee = Matrix_to_Intensity (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2922,7 +2995,7 @@ DIRECT2 (Matrix_to_Pitch) {
 	LOOP {
 		iam (Matrix);
 		autoPitch thee = Matrix_to_Pitch (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2930,7 +3003,7 @@ DIRECT2 (Matrix_to_Spectrogram) {
 	LOOP {
 		iam (Matrix);
 		autoSpectrogram thee = Matrix_to_Spectrogram (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2938,7 +3011,7 @@ DIRECT2 (Matrix_to_Spectrum) {
 	LOOP {
 		iam (Matrix);
 		autoSpectrum thee = Matrix_to_Spectrum (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2946,23 +3019,23 @@ DIRECT2 (Matrix_to_Ltas) {
 	LOOP {
 		iam (Matrix);
 		autoLtas thee = Matrix_to_Ltas (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Matrix_to_ParamCurve) {
-	Matrix m1 = NULL, m2 = NULL;
+	Matrix m1 = nullptr, m2 = nullptr;
 	LOOP (m1 ? m2 : m1) = (Matrix) OBJECT;
 	autoSound sound1 = Matrix_to_Sound (m1), sound2 = Matrix_to_Sound (m2);
-	autoParamCurve thee = ParamCurve_create (sound1.peek(), sound2.peek());
-	praat_new (thee.transfer(), m1 -> name, U"_", m2 -> name);
+	autoParamCurve thee = ParamCurve_create (sound1.get(), sound2.get());
+	praat_new (thee.move(), m1 -> name, U"_", m2 -> name);
 END2 }
 
 DIRECT2 (Matrix_to_PointProcess) {
 	LOOP {
 		iam (Matrix);
 		autoPointProcess thee = Matrix_to_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2970,7 +3043,7 @@ DIRECT2 (Matrix_to_Polygon) {
 	LOOP {
 		iam (Matrix);
 		autoPolygon thee = Matrix_to_Polygon (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2978,7 +3051,7 @@ DIRECT2 (Matrix_to_Sound) {
 	LOOP {
 		iam (Matrix);
 		autoSound thee = Matrix_to_Sound (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2990,7 +3063,7 @@ DO
 	LOOP {
 		iam (Matrix);
 		autoSound thee = Matrix_to_Sound_mono (me, GET_INTEGER (U"Row"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2998,7 +3071,7 @@ DIRECT2 (Matrix_to_TableOfReal) {
 	LOOP {
 		iam (Matrix);
 		autoTableOfReal thee = Matrix_to_TableOfReal (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3006,7 +3079,7 @@ DIRECT2 (Matrix_to_Transition) {
 	LOOP {
 		iam (Matrix);
 		autoTransition thee = Matrix_to_Transition (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3014,28 +3087,28 @@ DIRECT2 (Matrix_to_VocalTract) {
 	LOOP {
 		iam (Matrix);
 		autoVocalTract thee = Matrix_to_VocalTract (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM_WRITE (Matrix_writeToMatrixTextFile, U"Save Matrix as matrix text file", 0, U"mat")
+FORM_WRITE (Matrix_writeToMatrixTextFile, U"Save Matrix as matrix text file", nullptr, U"mat")
 	Matrix me = FIRST (Matrix);
 	Matrix_writeToMatrixTextFile (me, file);
 END
 
-FORM_WRITE (Matrix_writeToHeaderlessSpreadsheetFile, U"Save Matrix as spreadsheet", 0, U"txt")
+FORM_WRITE (Matrix_writeToHeaderlessSpreadsheetFile, U"Save Matrix as spreadsheet", nullptr, U"txt")
 	Matrix me = FIRST (Matrix);
 	Matrix_writeToHeaderlessSpreadsheetFile (me, file);
 END
 
 /***** MOVIE *****/
 
-FORM_READ2 (Movie_openFromSoundFile, U"Open movie file", 0, true) {
+FORM_READ2 (Movie_openFromSoundFile, U"Open movie file", nullptr, true) {
 	autoMovie me = Movie_openFromSoundFile (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-FORM (Movie_paintOneImage, U"Movie: Paint one image", 0) {
+FORM (Movie_paintOneImage, U"Movie: Paint one image", nullptr) {
 	NATURAL (U"Frame number", U"1")
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"1.0")
@@ -3056,13 +3129,14 @@ DIRECT2 (Movie_viewAndEdit) {
 	LOOP {
 		iam (Movie);
 		autoMovieWindow editor = MovieWindow_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 /***** PARAMCURVE *****/
 
-FORM (ParamCurve_draw, U"Draw parametrized curve", 0) {
+FORM (ParamCurve_draw, U"Draw parametrized curve", nullptr) {
 	REAL (U"Tmin", U"0.0")
 	REAL (U"Tmax", U"0.0")
 	REAL (U"Step", U"0.0")
@@ -3070,7 +3144,7 @@ FORM (ParamCurve_draw, U"Draw parametrized curve", 0) {
 	REAL (U"Xmax", U"0.0")
 	REAL (U"Ymin", U"0.0")
 	REAL (U"Ymax", U"0.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -3114,10 +3188,10 @@ DO
 	autoPhoto me = Photo_create (
 		xmin, xmax, GET_INTEGER (U"Number of columns"), GET_REAL (U"dx"), GET_REAL (U"x1"),
 		ymin, ymax, GET_INTEGER (U"Number of rows"), GET_REAL (U"dy"), GET_REAL (U"y1"));
-	Matrix_formula (my d_red,   GET_STRING (U"redFormula"),   interpreter, NULL);
-	Matrix_formula (my d_green, GET_STRING (U"greenFormula"), interpreter, NULL);
-	Matrix_formula (my d_blue,  GET_STRING (U"blueFormula"),  interpreter, NULL);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	Matrix_formula (my d_red  .get(), GET_STRING (U"redFormula"),   interpreter, nullptr);
+	Matrix_formula (my d_green.get(), GET_STRING (U"greenFormula"), interpreter, nullptr);
+	Matrix_formula (my d_blue .get(), GET_STRING (U"blueFormula"),  interpreter, nullptr);
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Photo_createSimple, U"Create simple Photo", U"Create simple Photo...") {
@@ -3133,41 +3207,41 @@ FORM (Photo_createSimple, U"Create simple Photo", U"Create simple Photo...") {
 	OK2
 DO
 	autoPhoto me = Photo_createSimple (GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"));
-	Matrix_formula (my d_red,   GET_STRING (U"redFormula"),   interpreter, NULL);
-	Matrix_formula (my d_green, GET_STRING (U"greenFormula"), interpreter, NULL);
-	Matrix_formula (my d_blue,  GET_STRING (U"blueFormula"),  interpreter, NULL);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	Matrix_formula (my d_red.get(),   GET_STRING (U"redFormula"),   interpreter, nullptr);
+	Matrix_formula (my d_green.get(), GET_STRING (U"greenFormula"), interpreter, nullptr);
+	Matrix_formula (my d_blue.get(),  GET_STRING (U"blueFormula"),  interpreter, nullptr);
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (Photo_extractBlue) {
 	LOOP {
 		iam (Photo);
-		autoMatrix thee = Data_copy (my d_blue);
-		praat_new (thee.transfer(), my name, U"_blue");
+		autoMatrix thee = Data_copy (my d_blue.get());
+		praat_new (thee.move(), my name, U"_blue");
 	}
 END2 }
 
 DIRECT2 (Photo_extractGreen) {
 	LOOP {
 		iam (Photo);
-		autoMatrix thee = Data_copy (my d_green);
-		praat_new (thee.transfer(), my name, U"_green");
+		autoMatrix thee = Data_copy (my d_green.get());
+		praat_new (thee.move(), my name, U"_green");
 	}
 END2 }
 
 DIRECT2 (Photo_extractRed) {
 	LOOP {
 		iam (Photo);
-		autoMatrix thee = Data_copy (my d_red);
-		praat_new (thee.transfer(), my name, U"_red");
+		autoMatrix thee = Data_copy (my d_red.get());
+		praat_new (thee.move(), my name, U"_red");
 	}
 END2 }
 
 DIRECT2 (Photo_extractTransparency) {
 	LOOP {
 		iam (Photo);
-		autoMatrix thee = Data_copy (my d_transparency);
-		praat_new (thee.transfer(), my name, U"_transparency");
+		autoMatrix thee = Data_copy (my d_transparency.get());
+		praat_new (thee.move(), my name, U"_transparency");
 	}
 END2 }
 
@@ -3180,7 +3254,7 @@ DO
 	LOOP {
 		iam (Photo);
 		try {
-			Matrix_formula (my d_red, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (my d_red.get(), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Photo may have partially changed
@@ -3198,7 +3272,7 @@ DO
 	LOOP {
 		iam (Photo);
 		try {
-			Matrix_formula (my d_green, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (my d_green.get(), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Photo may have partially changed
@@ -3216,7 +3290,7 @@ DO
 	LOOP {
 		iam (Photo);
 		try {
-			Matrix_formula (my d_blue, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (my d_blue.get(), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Photo may have partially changed
@@ -3234,7 +3308,7 @@ DO
 	LOOP {
 		iam (Photo);
 		try {
-			Matrix_formula (my d_transparency, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (my d_transparency.get(), GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Photo may have partially changed
@@ -3258,7 +3332,7 @@ DO
 	}
 END2 }
 
-FORM (Photo_paintImage, U"Photo: Paint colour image", 0) {
+FORM (Photo_paintImage, U"Photo: Paint colour image", nullptr) {
 	REAL (U"From x =", U"0.0")
 	REAL (U"To x =", U"0.0")
 	REAL (U"From y =", U"0.0")
@@ -3273,56 +3347,56 @@ DO
 	}
 END2 }
 
-FORM_WRITE (Photo_saveAsAppleIconFile, U"Save as Apple icon file", 0, U"icns")
+FORM_WRITE (Photo_saveAsAppleIconFile, U"Save as Apple icon file", nullptr, U"icns")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsAppleIconFile (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsGIF, U"Save as GIF file", 0, U"gif")
+FORM_WRITE (Photo_saveAsGIF, U"Save as GIF file", nullptr, U"gif")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsGIF (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsJPEG, U"Save as JPEG file", 0, U"jpg")
+FORM_WRITE (Photo_saveAsJPEG, U"Save as JPEG file", nullptr, U"jpg")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsJPEG (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsJPEG2000, U"Save as JPEG-2000 file", 0, U"jpg")
+FORM_WRITE (Photo_saveAsJPEG2000, U"Save as JPEG-2000 file", nullptr, U"jpg")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsJPEG2000 (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsPNG, U"Save as PNG file", 0, U"png")
+FORM_WRITE (Photo_saveAsPNG, U"Save as PNG file", nullptr, U"png")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsPNG (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsTIFF, U"Save as TIFF file", 0, U"tiff")
+FORM_WRITE (Photo_saveAsTIFF, U"Save as TIFF file", nullptr, U"tiff")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsTIFF (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsWindowsBitmapFile, U"Save as Windows bitmap file", 0, U"bmp")
+FORM_WRITE (Photo_saveAsWindowsBitmapFile, U"Save as Windows bitmap file", nullptr, U"bmp")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsWindowsBitmapFile (me, file);
 	}
 END
 
-FORM_WRITE (Photo_saveAsWindowsIconFile, U"Save as Windows icon file", 0, U"ico")
+FORM_WRITE (Photo_saveAsWindowsIconFile, U"Save as Windows icon file", nullptr, U"ico")
 	LOOP {
 		iam (Photo);
 		Photo_saveAsWindowsIconFile (me, file);
@@ -3367,7 +3441,7 @@ DIRECT2 (Pitch_getNumberOfVoicedFrames) {
 END2 }
 
 DIRECT2 (Pitch_difference) {
-	Pitch pit1 = NULL, pit2 = NULL;
+	Pitch pit1 = nullptr, pit2 = nullptr;
 	LOOP (pit1 ? pit2 : pit1) = (Pitch) OBJECT;
 	Pitch_difference (pit1, pit2);
 END2 }
@@ -3376,7 +3450,7 @@ FORM (Pitch_draw, U"Pitch: Draw", U"Pitch: Draw...") {
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3393,7 +3467,7 @@ FORM (Pitch_drawErb, U"Pitch: Draw erb", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3410,7 +3484,7 @@ FORM (Pitch_drawLogarithmic, U"Pitch: Draw logarithmic", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3427,7 +3501,7 @@ FORM (Pitch_drawMel, U"Pitch: Draw mel", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	REAL (U"left Frequency range (mel)", U"0.0")
 	REAL (U"right Frequency range (mel)", U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3445,7 +3519,7 @@ FORM (Pitch_drawSemitones100, U"Pitch: Draw semitones (re 100 Hz)", U"Pitch: Dra
 	LABEL (U"", U"Range in semitones re 100 Hz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3463,7 +3537,7 @@ FORM (Pitch_drawSemitones200, U"Pitch: Draw semitones (re 200 Hz)", U"Pitch: Dra
 	LABEL (U"", U"Range in semitones re 200 Hz:")
 	REAL (U"left Frequency range (st)", U"-24.0")
 	REAL (U"right Frequency range (st)", U"18.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3481,7 +3555,7 @@ FORM (Pitch_drawSemitones440, U"Pitch: Draw semitones (re 440 Hz)", U"Pitch: Dra
 	LABEL (U"", U"Range in semitones re 440 Hz:")
 	REAL (U"left Frequency range (st)", U"-36.0")
 	REAL (U"right Frequency range (st)", U"6.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3498,7 +3572,8 @@ DIRECT2 (Pitch_edit) {
 	LOOP {
 		iam (Pitch);
 		autoPitchEditor editor = PitchEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -3519,7 +3594,7 @@ DO
 	}
 END2 }
 
-FORM (Pitch_getMaximum, U"Pitch: Get maximum", 0) {
+FORM (Pitch_getMaximum, U"Pitch: Get maximum", nullptr) {
 	praat_dia_timeRange (dia);
 	OPTIONMENU_ENUM (U"Unit", kPitch_unit, DEFAULT)
 	RADIO (U"Interpolation", 2)
@@ -3534,7 +3609,7 @@ DO
 	Melder_informationReal (value, Function_getUnitText (me, Pitch_LEVEL_FREQUENCY, unit, 0));
 END2 }
 
-FORM (Pitch_getMean, U"Pitch: Get mean", 0) {
+FORM (Pitch_getMean, U"Pitch: Get mean", nullptr) {
 	praat_dia_timeRange (dia);
 	OPTIONMENU_ENUM (U"Unit", kPitch_unit, DEFAULT)
 	OK2
@@ -3589,7 +3664,7 @@ DO
 	Melder_informationReal (value, Function_getUnitText (me, Pitch_LEVEL_FREQUENCY, unit, 0));
 END2 }
 
-FORM (Pitch_getQuantile, U"Pitch: Get quantile", 0) {
+FORM (Pitch_getQuantile, U"Pitch: Get quantile", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"Quantile", U"0.50 (= median)")
 	OPTIONMENU_ENUM (U"Unit", kPitch_unit, DEFAULT)
@@ -3603,7 +3678,7 @@ DO
 	Melder_informationReal (value, Function_getUnitText (me, Pitch_LEVEL_FREQUENCY, unit, 0));
 END2 }
 
-FORM (Pitch_getStandardDeviation, U"Pitch: Get standard deviation", 0) {
+FORM (Pitch_getStandardDeviation, U"Pitch: Get standard deviation", nullptr) {
 	praat_dia_timeRange (dia);
 	OPTIONMENU (U"Unit", 1)
 		OPTION (U"Hertz")
@@ -3631,7 +3706,7 @@ DO
 	Melder_informationReal (value, unitText);
 END2 }
 
-FORM (Pitch_getTimeOfMaximum, U"Pitch: Get time of maximum", 0) {
+FORM (Pitch_getTimeOfMaximum, U"Pitch: Get time of maximum", nullptr) {
 	praat_dia_timeRange (dia);
 	OPTIONMENU_ENUM (U"Unit", kPitch_unit, DEFAULT)
 	RADIO (U"Interpolation", 2)
@@ -3646,7 +3721,7 @@ DO
 	Melder_informationReal (time, U"seconds");
 END2 }
 
-FORM (Pitch_getTimeOfMinimum, U"Pitch: Get time of minimum", 0) {
+FORM (Pitch_getTimeOfMinimum, U"Pitch: Get time of minimum", nullptr) {
 	praat_dia_timeRange (dia);
 	OPTIONMENU_ENUM (U"Unit", kPitch_unit, DEFAULT)
 	RADIO (U"Interpolation", 2)
@@ -3695,7 +3770,7 @@ END2 }
 DIRECT2 (Pitch_hum) {
 	LOOP {
 		iam (Pitch);
-		Pitch_hum (me, 0, 0);
+		Pitch_hum (me, 0.0, 0.0);
 	}
 END2 }
 
@@ -3703,7 +3778,7 @@ DIRECT2 (Pitch_interpolate) {
 	LOOP {
 		iam (Pitch);
 		autoPitch thee = Pitch_interpolate (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3711,14 +3786,14 @@ DIRECT2 (Pitch_killOctaveJumps) {
 	LOOP {
 		iam (Pitch);
 		autoPitch thee = Pitch_killOctaveJumps (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Pitch_play) {
 	LOOP {
 		iam (Pitch);
-		Pitch_play (me, 0, 0);
+		Pitch_play (me, 0.0, 0.0);
 	}
 END2 }
 
@@ -3729,7 +3804,7 @@ DO
 	LOOP {
 		iam (Pitch);
 		autoPitch thee = Pitch_smooth (me, GET_REAL (U"Bandwidth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3738,7 +3813,7 @@ FORM (Pitch_speckle, U"Pitch: Speckle", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3754,7 +3829,7 @@ FORM (Pitch_speckleErb, U"Pitch: Speckle erb", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3770,7 +3845,7 @@ FORM (Pitch_speckleLogarithmic, U"Pitch: Speckle logarithmic", U"Pitch: Draw..."
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3786,7 +3861,7 @@ FORM (Pitch_speckleMel, U"Pitch: Speckle mel", U"Pitch: Draw...") {
 	REAL (STRING_TO_TIME_SECONDS, U"0.0 (= all)")
 	REAL (U"left Frequency range (mel)", U"0")
 	REAL (U"right Frequency range (mel)", U"500")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3803,7 +3878,7 @@ FORM (Pitch_speckleSemitones100, U"Pitch: Speckle semitones (re 100 Hz)", U"Pitc
 	LABEL (U"", U"Range in semitones re 100 hertz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3820,7 +3895,7 @@ FORM (Pitch_speckleSemitones200, U"Pitch: Speckle semitones (re 200 Hz)", U"Pitc
 	LABEL (U"", U"Range in semitones re 200 hertz:")
 	REAL (U"left Frequency range (st)", U"-24.0")
 	REAL (U"right Frequency range (st)", U"18.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3837,7 +3912,7 @@ FORM (Pitch_speckleSemitones440, U"Pitch: Speckle semitones (re 440 Hz)", U"Pitc
 	LABEL (U"", U"Range in semitones re 440 hertz:")
 	REAL (U"left Frequency range (st)", U"-36.0")
 	REAL (U"right Frequency range (st)", U"6.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	GET_TMIN_TMAX_FMIN_FMAX
@@ -3848,7 +3923,7 @@ DO
 	}
 END2 }
 
-FORM (Pitch_subtractLinearFit, U"Pitch: subtract linear fit", 0) {
+FORM (Pitch_subtractLinearFit, U"Pitch: subtract linear fit", nullptr) {
 	RADIO (U"Unit", 1)
 		RADIOBUTTON (U"Hertz")
 		RADIOBUTTON (U"Hertz (logarithmic)")
@@ -3860,7 +3935,7 @@ DO
 	LOOP {
 		iam (Pitch);
 		autoPitch thee = Pitch_subtractLinearFit (me, GET_INTEGER (U"Unit") - 1);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3868,7 +3943,7 @@ DIRECT2 (Pitch_to_IntervalTier) {
 	LOOP {
 		iam (Pitch);
 		autoIntervalTier thee = IntervalTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3876,7 +3951,7 @@ DIRECT2 (Pitch_to_Matrix) {
 	LOOP {
 		iam (Pitch);
 		autoMatrix thee = Pitch_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3884,7 +3959,7 @@ DIRECT2 (Pitch_to_PitchTier) {
 	LOOP {
 		iam (Pitch);
 		autoPitchTier thee = Pitch_to_PitchTier (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3892,28 +3967,28 @@ DIRECT2 (Pitch_to_PointProcess) {
 	LOOP {
 		iam (Pitch);
 		autoPointProcess thee = Pitch_to_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Pitch_to_Sound_pulses) {
 	LOOP {
 		iam (Pitch);
-		autoSound thee = Pitch_to_Sound (me, 0, 0, FALSE);
-		praat_new (thee.transfer(), my name);
+		autoSound thee = Pitch_to_Sound (me, 0.0, 0.0, false);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Pitch_to_Sound_hum) {
 	LOOP {
 		iam (Pitch);
-		autoSound thee = Pitch_to_Sound (me, 0, 0, TRUE);
-		praat_new (thee.transfer(), my name);
+		autoSound thee = Pitch_to_Sound (me, 0.0, 0.0, true);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Pitch_to_Sound_sine, U"Pitch: To Sound (sine)", 0) {
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+FORM (Pitch_to_Sound_sine, U"Pitch: To Sound (sine)", nullptr) {
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	RADIO (U"Cut voiceless stretches", 2)
 		OPTION (U"exactly")
 		OPTION (U"at nearest zero crossings")
@@ -3921,8 +3996,8 @@ FORM (Pitch_to_Sound_sine, U"Pitch: To Sound (sine)", 0) {
 DO
 	LOOP {
 		iam (Pitch);
-		autoSound thee = Pitch_to_Sound_sine (me, 0, 0, GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Cut voiceless stretches") - 1);
-		praat_new (thee.transfer(), my name);
+		autoSound thee = Pitch_to_Sound_sine (me, 0.0, 0.0, GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Cut voiceless stretches") - 1);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3934,7 +4009,7 @@ DO
 	LOOP {
 		iam (Pitch);
 		autoTextGrid thee = TextGrid_create (my xmin, my xmax, GET_STRING (U"Tier names"), GET_STRING (U"Point tiers"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -3942,13 +4017,13 @@ DIRECT2 (Pitch_to_TextTier) {
 	LOOP {
 		iam (Pitch);
 		autoTextTier thee = TextTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 /***** PITCH & PITCHTIER *****/
 
-FORM (old_PitchTier_Pitch_draw, U"PitchTier & Pitch: Draw", 0) {
+FORM (old_PitchTier_Pitch_draw, U"PitchTier & Pitch: Draw", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"From frequency (Hz)", U"0.0")
 	REAL (U"To frequency (Hz)", U"500.0")
@@ -3969,7 +4044,7 @@ DO
 		GET_INTEGER (U"Garnish"), U"lines and speckles");
 END2 }
 
-FORM (PitchTier_Pitch_draw, U"PitchTier & Pitch: Draw", 0) {
+FORM (PitchTier_Pitch_draw, U"PitchTier & Pitch: Draw", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"From frequency (Hz)", U"0.0")
 	REAL (U"To frequency (Hz)", U"500.0")
@@ -3977,7 +4052,7 @@ FORM (PitchTier_Pitch_draw, U"PitchTier & Pitch: Draw", 0) {
 		RADIOBUTTON (U"Normal")
 		RADIOBUTTON (U"Dotted")
 		RADIOBUTTON (U"Blank")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 1)
 		OPTION (U"lines")
@@ -3999,7 +4074,7 @@ DIRECT2 (Pitch_PitchTier_to_Pitch) {
 	Pitch pitch = FIRST (Pitch);
 	PitchTier tier = FIRST (PitchTier);
 	autoPitch thee = Pitch_PitchTier_to_Pitch (pitch, tier);
-	praat_new (thee.transfer(), pitch -> name, U"_stylized");
+	praat_new (thee.move(), pitch -> name, U"_stylized");
 END2 }
 
 /***** PITCH & POINTPROCESS *****/
@@ -4008,7 +4083,7 @@ DIRECT2 (Pitch_PointProcess_to_PitchTier) {
 	Pitch pitch = FIRST (Pitch);
 	PointProcess point = FIRST (PointProcess);
 	autoPitchTier thee = Pitch_PointProcess_to_PitchTier (pitch, point);
-	praat_new (thee.transfer(), pitch -> name);
+	praat_new (thee.move(), pitch -> name);
 END2 }
 
 /***** PITCH & SOUND *****/
@@ -4017,14 +4092,14 @@ DIRECT2 (Sound_Pitch_to_Manipulation) {
 	Pitch pitch = FIRST (Pitch);
 	Sound sound = FIRST (Sound);
 	autoManipulation thee = Sound_Pitch_to_Manipulation (sound, pitch);
-	praat_new (thee.transfer(), pitch -> name);
+	praat_new (thee.move(), pitch -> name);
 END2 }
 
 DIRECT2 (Sound_Pitch_to_PointProcess_cc) {
 	Sound sound = FIRST (Sound);
 	Pitch pitch = FIRST (Pitch);
 	autoPointProcess thee = Sound_Pitch_to_PointProcess_cc (sound, pitch);
-	praat_new (thee.transfer(), sound -> name, U"_", pitch -> name);
+	praat_new (thee.move(), sound -> name, U"_", pitch -> name);
 END2 }
 
 FORM (Sound_Pitch_to_PointProcess_peaks, U"Sound & Pitch: To PointProcess (peaks)", 0) {
@@ -4035,14 +4110,14 @@ DO
 	Sound sound = FIRST (Sound);
 	Pitch pitch = FIRST (Pitch);
 	autoPointProcess thee = Sound_Pitch_to_PointProcess_peaks (sound, pitch, GET_INTEGER (U"Include maxima"), GET_INTEGER (U"Include minima"));
-	praat_new (thee.transfer(), sound -> name, U"_", pitch -> name);
+	praat_new (thee.move(), sound -> name, U"_", pitch -> name);
 END2 }
 
 /***** PITCHTIER *****/
 
 FORM (PitchTier_addPoint, U"PitchTier: Add point", U"PitchTier: Add point...") {
 	REAL (U"Time (s)", U"0.5")
-	REAL (U"Pitch (Hz)", U"200")
+	REAL (U"Pitch (Hz)", U"200.0")
 	OK2
 DO
 	LOOP {
@@ -4052,7 +4127,7 @@ DO
 	}
 END2 }
 
-FORM (PitchTier_create, U"Create empty PitchTier", NULL) {
+FORM (PitchTier_create, U"Create empty PitchTier", nullptr) {
 	WORD (U"Name", U"empty")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
@@ -4061,18 +4136,18 @@ DO
 	double startTime = GET_REAL (U"Start time"), endTime = GET_REAL (U"End time");
 	if (endTime <= startTime) Melder_throw (U"End time must be greater than start time.");
 	autoPitchTier me = PitchTier_create (startTime, endTime);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (PitchTier_downto_PointProcess) {
 	LOOP {
 		iam (PitchTier);
-		autoPointProcess thee = AnyTier_downto_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = AnyTier_downto_PointProcess (me->asAnyTier());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (PitchTier_downto_TableOfReal, U"PitchTier: Down to TableOfReal", NULL) {
+FORM (PitchTier_downto_TableOfReal, U"PitchTier: Down to TableOfReal", nullptr) {
 	RADIO (U"Unit", 1)
 		RADIOBUTTON (U"Hertz")
 		RADIOBUTTON (U"Semitones")
@@ -4081,15 +4156,15 @@ DO
 	LOOP {
 		iam (PitchTier);
 		autoTableOfReal thee = PitchTier_downto_TableOfReal (me, GET_INTEGER (U"Unit") - 1);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (old_PitchTier_draw, U"PitchTier: Draw", 0) {
+FORM (old_PitchTier_draw, U"PitchTier: Draw", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	double minimumFrequency = GET_REAL (STRING_FROM_FREQUENCY);
@@ -4104,11 +4179,11 @@ DO
 	}
 END2 }
 
-FORM (PitchTier_draw, U"PitchTier: Draw", 0) {
+FORM (PitchTier_draw, U"PitchTier: Draw", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 1)
 		OPTION (U"lines")
@@ -4133,8 +4208,9 @@ DIRECT2 (PitchTier_edit) {
 	Sound sound = FIRST (Sound);
 	LOOP if (CLASS == classPitchTier) {
 		iam (PitchTier);
-		autoPitchTierEditor editor = PitchTierEditor_create (ID_AND_FULL_NAME, me, sound, TRUE);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoPitchTierEditor editor = PitchTierEditor_create (ID_AND_FULL_NAME, me, sound, true);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -4151,7 +4227,7 @@ DO
 	LOOP {
 		iam (PitchTier);
 		try {
-			RealTier_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			RealTier_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the PitchTier may have partially changed
@@ -4213,7 +4289,7 @@ DIRECT2 (PitchTier_hum) {
 	}
 END2 }
 
-FORM (PitchTier_interpolateQuadratically, U"PitchTier: Interpolate quadratically", 0) {
+FORM (PitchTier_interpolateQuadratically, U"PitchTier: Interpolate quadratically", nullptr) {
 	NATURAL (U"Number of points per parabola", U"4")
 	RADIO (U"Unit", 2)
 		RADIOBUTTON (U"Hz")
@@ -4241,7 +4317,7 @@ DIRECT2 (PitchTier_playSine) {
 	}
 END2 }
 
-FORM (PitchTier_shiftFrequencies, U"PitchTier: Shift frequencies", 0) {
+FORM (PitchTier_shiftFrequencies, U"PitchTier: Shift frequencies", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1000.0")
 	REAL (U"Frequency shift", U"-20.0")
@@ -4272,7 +4348,7 @@ DO
 	}
 END2 }
 
-FORM (PitchTier_multiplyFrequencies, U"PitchTier: Multiply frequencies", 0) {
+FORM (PitchTier_multiplyFrequencies, U"PitchTier: Multiply frequencies", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1000.0")
 	POSITIVE (U"Factor", U"1.2")
@@ -4303,11 +4379,11 @@ DIRECT2 (PitchTier_to_PointProcess) {
 	LOOP {
 		iam (PitchTier);
 		autoPointProcess thee = PitchTier_to_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (PitchTier_to_Sound_phonation, U"PitchTier: To Sound (phonation)", 0) {
+FORM (PitchTier_to_Sound_phonation, U"PitchTier: To Sound (phonation)", nullptr) {
 	POSITIVE (U"Sampling frequency (Hz)", U"44100")
 	POSITIVE (U"Adaptation factor", U"1.0")
 	POSITIVE (U"Maximum period (s)", U"0.05")
@@ -4315,7 +4391,7 @@ FORM (PitchTier_to_Sound_phonation, U"PitchTier: To Sound (phonation)", 0) {
 	REAL (U"Collision phase", U"0.03")
 	POSITIVE (U"Power 1", U"3.0")
 	POSITIVE (U"Power 2", U"4.0")
-	BOOLEAN (U"Hum", 0)
+	BOOLEAN (U"Hum", false)
 	OK2
 DO
 	LOOP {
@@ -4323,16 +4399,16 @@ DO
 		autoSound thee = PitchTier_to_Sound_phonation (me, GET_REAL (U"Sampling frequency"),
 			GET_REAL (U"Adaptation factor"), GET_REAL (U"Maximum period"),
 			GET_REAL (U"Open phase"), GET_REAL (U"Collision phase"), GET_REAL (U"Power 1"), GET_REAL (U"Power 2"), GET_INTEGER (U"Hum"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (PitchTier_to_Sound_pulseTrain, U"PitchTier: To Sound (pulse train)", 0) {
+FORM (PitchTier_to_Sound_pulseTrain, U"PitchTier: To Sound (pulse train)", nullptr) {
 	POSITIVE (U"Sampling frequency (Hz)", U"44100")
 	POSITIVE (U"Adaptation factor", U"1.0")
 	POSITIVE (U"Adaptation time", U"0.05")
 	NATURAL (U"Interpolation depth (samples)", U"2000")
-	BOOLEAN (U"Hum", 0)
+	BOOLEAN (U"Hum", false)
 	OK2
 DO
 	LOOP {
@@ -4340,18 +4416,18 @@ DO
 		autoSound thee = PitchTier_to_Sound_pulseTrain (me, GET_REAL (U"Sampling frequency"),
 			GET_REAL (U"Adaptation factor"), GET_REAL (U"Adaptation time"),
 			GET_INTEGER (U"Interpolation depth"), GET_INTEGER (U"Hum"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (PitchTier_to_Sound_sine, U"PitchTier: To Sound (sine)", 0) {
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+FORM (PitchTier_to_Sound_sine, U"PitchTier: To Sound (sine)", nullptr) {
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	OK2
 DO
 	LOOP {
 		iam (PitchTier);
 		autoSound thee = PitchTier_to_Sound_sine (me, 0.0, 0.0, GET_REAL (U"Sampling frequency"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4360,14 +4436,14 @@ DIRECT2 (info_PitchTier_Sound_edit) {
 		"   select a PitchTier and a Sound, and click \"View & Edit\".");
 END2 }
 
-FORM_WRITE (PitchTier_writeToPitchTierSpreadsheetFile, U"Save PitchTier as spreadsheet", 0, U"PitchTier")
+FORM_WRITE (PitchTier_writeToPitchTierSpreadsheetFile, U"Save PitchTier as spreadsheet", nullptr, U"PitchTier")
 	LOOP {
 		iam (PitchTier);
 		PitchTier_writeToPitchTierSpreadsheetFile (me, file);
 	}
 END
 
-FORM_WRITE (PitchTier_writeToHeaderlessSpreadsheetFile, U"Save PitchTier as spreadsheet", 0, U"txt")
+FORM_WRITE (PitchTier_writeToHeaderlessSpreadsheetFile, U"Save PitchTier as spreadsheet", nullptr, U"txt")
 	LOOP {
 		iam (PitchTier);
 		PitchTier_writeToHeaderlessSpreadsheetFile (me, file);
@@ -4380,7 +4456,7 @@ DIRECT2 (PitchTier_PointProcess_to_PitchTier) {
 	PitchTier pitch = FIRST (PitchTier);
 	PointProcess point = FIRST (PointProcess);
 	autoPitchTier thee = PitchTier_PointProcess_to_PitchTier (pitch, point);
-	praat_new (thee.transfer(), pitch -> name);
+	praat_new (thee.move(), pitch -> name);
 END2 }
 
 /***** POINTPROCESS *****/
@@ -4405,7 +4481,7 @@ DO
 	double tmin = GET_REAL (U"Start time"), tmax = GET_REAL (U"End time");
 	if (tmax < tmin) Melder_throw (U"End time (", tmax, U") should not be less than start time (", tmin, U").");
 	autoPointProcess me = PointProcess_create (tmin, tmax, 0);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (PointProcess_createPoissonProcess, U"Create Poisson process", U"Create Poisson process...") {
@@ -4419,19 +4495,19 @@ DO
 	if (tmax < tmin)
 		Melder_throw (U"End time (", tmax, U") should not be less than start time (", tmin, U").");
 	autoPointProcess me = PointProcess_createPoissonProcess (tmin, tmax, GET_REAL (U"Density"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (PointProcess_difference) {
-	PointProcess point1 = NULL, point2 = NULL;
+	PointProcess point1 = nullptr, point2 = nullptr;
 	LOOP (point1 ? point2 : point1) = (PointProcess) OBJECT;
 	autoPointProcess thee = PointProcesses_difference (point1, point2);
-	praat_new (thee.transfer(), U"difference");
+	praat_new (thee.move(), U"difference");
 END2 }
 
-FORM (PointProcess_draw, U"PointProcess: Draw", 0) {
+FORM (PointProcess_draw, U"PointProcess: Draw", nullptr) {
 	praat_dia_timeRange (dia);
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -4448,11 +4524,12 @@ DIRECT2 (PointProcess_edit) {
 	LOOP if (CLASS == classPointProcess) {
 		iam (PointProcess);
 		autoPointEditor editor = PointEditor_create (ID_AND_FULL_NAME, me, sound);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (PointProcess_fill, U"PointProcess: Fill", 0) {
+FORM (PointProcess_fill, U"PointProcess: Fill", nullptr) {
 	praat_dia_timeRange (dia);
 	POSITIVE (U"Period (s)", U"0.01")
 	OK2
@@ -4476,7 +4553,7 @@ DO
 	Melder_informationReal (PointProcess_getInterval (FIRST_ANY (PointProcess), GET_REAL (U"Time")), U"seconds");
 END2 }
 
-static void dia_PointProcess_getRangeProperty (Any dia) {
+static void dia_PointProcess_getRangeProperty (UiForm dia) {
 	praat_dia_timeRange (dia);
 	REAL (U"Shortest period (s)", U"0.0001")
 	REAL (U"Longest period (s)", U"0.02")
@@ -4489,7 +4566,7 @@ FORM (PointProcess_getJitter_local, U"PointProcess: Get jitter (local)", U"Point
 DO
 	Melder_informationReal (PointProcess_getJitter_local (FIRST_ANY (PointProcess),
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), NULL);
+		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), nullptr);
 END2 }
 
 FORM (PointProcess_getJitter_local_absolute, U"PointProcess: Get jitter (local, absolute)", U"PointProcess: Get jitter (local, absolute)...") {
@@ -4507,7 +4584,7 @@ FORM (PointProcess_getJitter_rap, U"PointProcess: Get jitter (rap)", U"PointProc
 DO
 	Melder_informationReal (PointProcess_getJitter_rap (FIRST_ANY (PointProcess),
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), NULL);
+		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), nullptr);
 END2 }
 
 FORM (PointProcess_getJitter_ppq5, U"PointProcess: Get jitter (ppq5)", U"PointProcess: Get jitter (ppq5)...") {
@@ -4516,7 +4593,7 @@ FORM (PointProcess_getJitter_ppq5, U"PointProcess: Get jitter (ppq5)", U"PointPr
 DO
 	Melder_informationReal (PointProcess_getJitter_ppq5 (FIRST_ANY (PointProcess),
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), NULL);
+		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), nullptr);
 END2 }
 
 FORM (PointProcess_getJitter_ddp, U"PointProcess: Get jitter (ddp)", U"PointProcess: Get jitter (ddp)...") {
@@ -4525,7 +4602,7 @@ FORM (PointProcess_getJitter_ddp, U"PointProcess: Get jitter (ddp)", U"PointProc
 DO
 	Melder_informationReal (PointProcess_getJitter_ddp (FIRST_ANY (PointProcess),
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
-		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), NULL);
+		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor")), nullptr);
 END2 }
 
 FORM (PointProcess_getMeanPeriod, U"PointProcess: Get mean period", U"PointProcess: Get mean period...") {
@@ -4603,10 +4680,10 @@ DIRECT2 (PointProcess_hum) {
 END2 }
 
 DIRECT2 (PointProcess_intersection) {
-	PointProcess point1 = NULL, point2 = NULL;
+	PointProcess point1 = nullptr, point2 = nullptr;
 	LOOP (point1 ? point2 : point1) = (PointProcess) OBJECT;
 	autoPointProcess thee = PointProcesses_intersection (point1, point2);
-	praat_new (thee.transfer(), U"intersection");
+	praat_new (thee.move(), U"intersection");
 END2 }
 
 DIRECT2 (PointProcess_play) {
@@ -4666,7 +4743,7 @@ DIRECT2 (PointProcess_to_IntervalTier) {
 	LOOP {
 		iam (PointProcess);
 		autoIntervalTier thee = IntervalTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4674,7 +4751,7 @@ DIRECT2 (PointProcess_to_Matrix) {
 	LOOP {
 		iam (PointProcess);
 		autoMatrix thee = PointProcess_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4685,7 +4762,7 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoPitchTier thee = PointProcess_to_PitchTier (me, GET_REAL (U"Maximum interval"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4697,7 +4774,7 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoTextGrid thee = TextGrid_create (my xmin, my xmax, GET_STRING (U"Tier names"), GET_STRING (U"Point tiers"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4709,7 +4786,7 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoTextGrid thee = PointProcess_to_TextGrid_vuv (me, GET_REAL (U"Maximum period"), GET_REAL (U"Mean period"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4717,7 +4794,7 @@ DIRECT2 (PointProcess_to_TextTier) {
 	LOOP {
 		iam (PointProcess);
 		autoTextTier thee = TextTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4736,7 +4813,7 @@ DO
 		autoSound thee = PointProcess_to_Sound_phonation (me, GET_REAL (U"Sampling frequency"),
 			GET_REAL (U"Adaptation factor"), GET_REAL (U"Maximum period"),
 			GET_REAL (U"Open phase"), GET_REAL (U"Collision phase"), GET_REAL (U"Power 1"), GET_REAL (U"Power 2"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4752,7 +4829,7 @@ DO
 		autoSound thee = PointProcess_to_Sound_pulseTrain (me, GET_REAL (U"Sampling frequency"),
 			GET_REAL (U"Adaptation factor"), GET_REAL (U"Adaptation time"),
 			GET_INTEGER (U"Interpolation depth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4760,15 +4837,15 @@ DIRECT2 (PointProcess_to_Sound_hum) {
 	LOOP {
 		iam (PointProcess);
 		autoSound thee = PointProcess_to_Sound_hum (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (PointProcess_union) {
-	PointProcess point1 = NULL, point2 = NULL;
+	PointProcess point1 = nullptr, point2 = nullptr;
 	LOOP (point1 ? point2 : point1) = (PointProcess) OBJECT;
 	autoPointProcess thee = PointProcesses_union (point1, point2);
-	praat_new (thee.transfer(), U"union");
+	praat_new (thee.move(), U"union");
 END2 }
 
 FORM (PointProcess_upto_IntensityTier, U"PointProcess: Up to IntensityTier", U"PointProcess: Up to IntensityTier...") {
@@ -4778,7 +4855,7 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoIntensityTier thee = PointProcess_upto_IntensityTier (me, GET_REAL (U"Intensity"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4789,7 +4866,7 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoPitchTier thee = PointProcess_upto_PitchTier (me, GET_REAL (U"Frequency"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -4800,11 +4877,11 @@ DO
 	LOOP {
 		iam (PointProcess);
 		autoTextTier thee = PointProcess_upto_TextTier (me, GET_STRING (U"Text"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (PointProcess_voice, U"PointProcess: Fill unvoiced parts", 0) {
+FORM (PointProcess_voice, U"PointProcess: Fill unvoiced parts", nullptr) {
 	POSITIVE (U"Period (s)", U"0.01")
 	POSITIVE (U"Maximum voiced period (s)", U"0.02000000001")
 	OK2
@@ -4828,12 +4905,6 @@ END2 }
 
 /***** POINTPROCESS & SOUND *****/
 
-/*DIRECT (Sound_PointProcess_to_Manipulation)
-	Sound sound = ONLY (classSound);
-	PointProcess point = ONLY (classPointProcess);
-	if (! praat_new1 (Sound_PointProcess_to_Manipulation (sound, point), point -> name)) return 0;
-END*/
-
 DIRECT2 (Point_Sound_transplantDomain) {
 	PointProcess point = FIRST (PointProcess);
 	Sound sound = FIRST (Sound);
@@ -4853,7 +4924,7 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
 FORM (Point_Sound_getShimmer_local_dB, U"PointProcess & Sound: Get shimmer (local, dB)", U"PointProcess & Sound: Get shimmer (local, dB)...") {
@@ -4867,7 +4938,7 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
 FORM (Point_Sound_getShimmer_apq3, U"PointProcess & Sound: Get shimmer (apq3)", U"PointProcess & Sound: Get shimmer (apq3)...") {
@@ -4881,7 +4952,7 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
 FORM (Point_Sound_getShimmer_apq5, U"PointProcess & Sound: Get shimmer (apq)", U"PointProcess & Sound: Get shimmer (apq5)...") {
@@ -4895,7 +4966,7 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
 FORM (Point_Sound_getShimmer_apq11, U"PointProcess & Sound: Get shimmer (apq11)", U"PointProcess & Sound: Get shimmer (apq11)...") {
@@ -4909,7 +4980,7 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
 FORM (Point_Sound_getShimmer_dda, U"PointProcess & Sound: Get shimmer (dda)", U"PointProcess & Sound: Get shimmer (dda)...") {
@@ -4923,10 +4994,10 @@ DO
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"),
 		GET_REAL (U"Maximum period factor"), GET_REAL (U"Maximum amplitude factor"));
-	Melder_informationReal (shimmer, NULL);
+	Melder_informationReal (shimmer, nullptr);
 END2 }
 
-FORM (PointProcess_Sound_to_AmplitudeTier_period, U"PointProcess & Sound: To AmplitudeTier (period)", 0) {
+FORM (PointProcess_Sound_to_AmplitudeTier_period, U"PointProcess & Sound: To AmplitudeTier (period)", nullptr) {
 	dia_PointProcess_getRangeProperty (dia);
 	OK2
 DO
@@ -4935,17 +5006,17 @@ DO
 	autoAmplitudeTier thee = PointProcess_Sound_to_AmplitudeTier_period (point, sound,
 		GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor"));
-	praat_new (thee.transfer(), sound -> name, U"_", point -> name);
+	praat_new (thee.move(), sound -> name, U"_", point -> name);
 END2 }
 
 DIRECT2 (PointProcess_Sound_to_AmplitudeTier_point) {
 	PointProcess point = FIRST (PointProcess);
 	Sound sound = FIRST (Sound);
 	autoAmplitudeTier thee = PointProcess_Sound_to_AmplitudeTier_point (point, sound);
-	praat_new (thee.transfer(), sound -> name, U"_", point -> name);
+	praat_new (thee.move(), sound -> name, U"_", point -> name);
 END2 }
 
-FORM (PointProcess_Sound_to_Ltas, U"PointProcess & Sound: To Ltas", 0) {
+FORM (PointProcess_Sound_to_Ltas, U"PointProcess & Sound: To Ltas", nullptr) {
 	POSITIVE (U"Maximum frequency (Hz)", U"5000")
 	POSITIVE (U"Band width (Hz)", U"100")
 	REAL (U"Shortest period (s)", U"0.0001")
@@ -4958,10 +5029,10 @@ DO
 	autoLtas thee = PointProcess_Sound_to_Ltas (point, sound,
 		GET_REAL (U"Maximum frequency"), GET_REAL (U"Band width"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor"));
-	praat_new (thee.transfer(), sound -> name);
+	praat_new (thee.move(), sound -> name);
 END2 }
 
-FORM (PointProcess_Sound_to_Ltas_harmonics, U"PointProcess & Sound: To Ltas (harmonics", 0) {
+FORM (PointProcess_Sound_to_Ltas_harmonics, U"PointProcess & Sound: To Ltas (harmonics", nullptr) {
 	NATURAL (U"Maximum harmonic", U"20")
 	REAL (U"Shortest period (s)", U"0.0001")
 	REAL (U"Longest period (s)", U"0.02")
@@ -4973,10 +5044,10 @@ DO
 	autoLtas thee = PointProcess_Sound_to_Ltas_harmonics (point, sound,
 		GET_INTEGER (U"Maximum harmonic"),
 		GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor"));
-	praat_new (thee.transfer(), sound -> name);
+	praat_new (thee.move(), sound -> name);
 END2 }
 
-FORM (Sound_PointProcess_to_SoundEnsemble_correlate, U"Sound & PointProcess: To SoundEnsemble (correlate)", 0) {
+FORM (Sound_PointProcess_to_SoundEnsemble_correlate, U"Sound & PointProcess: To SoundEnsemble (correlate)", nullptr) {
 	REAL (U"From time (s)", U"-0.1")
 	REAL (U"To time (s)", U"1.0")
 	OK2
@@ -4984,12 +5055,12 @@ DO
 	PointProcess point = FIRST (PointProcess);
 	Sound sound = FIRST (Sound);
 	autoSound thee = Sound_PointProcess_to_SoundEnsemble_correlate (sound, point, GET_REAL (U"From time"), GET_REAL (U"To time"));
-	praat_new (thee.transfer(), point -> name);
+	praat_new (thee.move(), point -> name);
 END2 }
 
 /***** POLYGON *****/
 
-FORM (Polygon_draw, U"Polygon: Draw", 0) {
+FORM (Polygon_draw, U"Polygon: Draw", nullptr) {
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0")
 	REAL (U"Ymin", U"0.0")
@@ -5003,12 +5074,12 @@ DO
 	}
 END2 }
 
-FORM (Polygon_drawCircles, U"Polygon: Draw circles", 0) {
+FORM (Polygon_drawCircles, U"Polygon: Draw circles", nullptr) {
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0 (= all)")
 	REAL (U"Ymin", U"0.0")
 	REAL (U"Ymax", U"0.0 (= all)")
-	POSITIVE (U"Diameter (mm)", U"3")
+	POSITIVE (U"Diameter (mm)", U"3.0")
 	OK2
 DO
 	LOOP {
@@ -5020,7 +5091,7 @@ DO
 	}
 END2 }
 
-FORM (Polygon_drawClosed, U"Polygon: Draw", 0) {
+FORM (Polygon_drawClosed, U"Polygon: Draw", nullptr) {
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0")
 	REAL (U"Ymin", U"0.0")
@@ -5034,7 +5105,7 @@ DO
 	}
 END2 }
 
-FORM (Polygons_drawConnection, U"Polygons: Draw connection", 0) {
+FORM (Polygons_drawConnection, U"Polygons: Draw connection", nullptr) {
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0 (= all)")
 	REAL (U"Ymin", U"0.0")
@@ -5043,7 +5114,7 @@ FORM (Polygons_drawConnection, U"Polygons: Draw connection", 0) {
 	POSITIVE (U"Relative length", U"0.9")
 	OK2
 DO
-	Polygon polygon1 = NULL, polygon2 = NULL;
+	Polygon polygon1 = nullptr, polygon2 = nullptr;
 	LOOP (polygon1 ? polygon2 : polygon1) = (Polygon) OBJECT;
 	autoPraatPicture picture;
 	Polygons_drawConnection (polygon1, polygon2, GRAPHICS,
@@ -5055,7 +5126,7 @@ DIRECT2 (Polygon_help) {
 	Melder_help (U"Polygon");
 END2 }
 
-FORM (Polygon_paint, U"Polygon: Paint", 0) {
+FORM (Polygon_paint, U"Polygon: Paint", nullptr) {
 	COLOUR (U"Colour (0-1, name, or {r,g,b})", U"0.5")
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0 (= all)")
@@ -5070,12 +5141,12 @@ DO
 	}
 END2 }
 
-FORM (Polygon_paintCircles, U"Polygon: Paint circles", 0) {
+FORM (Polygon_paintCircles, U"Polygon: Paint circles", nullptr) {
 	REAL (U"Xmin", U"0.0")
 	REAL (U"Xmax", U"0.0 (= all)")
 	REAL (U"Ymin", U"0.0")
 	REAL (U"Ymax", U"0.0 (= all)")
-	POSITIVE (U"Diameter (mm)", U"3")
+	POSITIVE (U"Diameter (mm)", U"3.0")
 	OK2
 DO
 	LOOP {
@@ -5094,7 +5165,7 @@ DIRECT2 (Polygon_randomize) {
 	}
 END2 }
 
-FORM (Polygon_salesperson, U"Polygon: Find shortest path", 0) {
+FORM (Polygon_salesperson, U"Polygon: Find shortest path", nullptr) {
 	NATURAL (U"Number of iterations", U"1")
 	OK2
 DO
@@ -5109,7 +5180,7 @@ DIRECT2 (Polygon_to_Matrix) {
 	LOOP {
 		iam (Polygon);
 		autoMatrix thee = Polygon_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5136,13 +5207,13 @@ END2 }
 
 /***** SOUND & POINTPROCESS & PITCHTIER & DURATIONTIER *****/
 
-FORM (Sound_Point_Pitch_Duration_to_Sound, U"To Sound", 0) {
+FORM (Sound_Point_Pitch_Duration_to_Sound, U"To Sound", nullptr) {
 	POSITIVE (U"Longest period (s)", U"0.02")
 	OK2
 DO
 	autoSound thee = Sound_Point_Pitch_Duration_to_Sound (FIRST (Sound), FIRST (PointProcess),
 		FIRST (PitchTier), FIRST (DurationTier), GET_REAL (U"Longest period"));
-	praat_new (thee.transfer(), U"manip");
+	praat_new (thee.move(), U"manip");
 END2 }
 
 /***** SPECTROGRAM *****/
@@ -5182,7 +5253,7 @@ DO
 	LOOP {
 		iam (Spectrogram);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Spectrogram may have partially changed
@@ -5191,7 +5262,7 @@ DO
 	}
 END2 }
 
-FORM (Spectrogram_getPowerAt, U"Spectrogram: Get power at (time, frequency)", 0) {
+FORM (Spectrogram_getPowerAt, U"Spectrogram: Get power at (time, frequency)", nullptr) {
 	REAL (U"Time (s)", U"0.5")
 	REAL (U"Frequency (Hz)", U"1000")
 	OK2
@@ -5220,29 +5291,29 @@ DIRECT2 (Spectrogram_to_Matrix) {
 	LOOP {
 		iam (Spectrogram);
 		autoMatrix thee = Spectrogram_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Spectrogram_to_Sound, U"Spectrogram: To Sound", 0) {
+FORM (Spectrogram_to_Sound, U"Spectrogram: To Sound", nullptr) {
 	REAL (U"Sampling frequency (Hz)", U"44100")
 	OK2
 DO
 	LOOP {
 		iam (Spectrogram);
 		autoSound thee = Spectrogram_to_Sound (me, GET_REAL (U"Sampling frequency"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Spectrogram_to_Spectrum, U"Spectrogram: To Spectrum (slice)", 0) {
+FORM (Spectrogram_to_Spectrum, U"Spectrogram: To Spectrum (slice)", nullptr) {
 	REAL (U"Time (seconds)", U"0.0")
 	OK2
 DO
 	LOOP {
 		iam (Spectrogram);
 		autoSpectrum thee = Spectrogram_to_Spectrum (me, GET_REAL (U"Time"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5251,29 +5322,30 @@ DIRECT2 (Spectrogram_view) {
 	LOOP {
 		iam (Spectrogram);
 		autoSpectrogramEditor editor = SpectrogramEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 /***** SPECTRUM *****/
 
-FORM (Spectrum_cepstralSmoothing, U"Spectrum: Cepstral smoothing", 0) {
+FORM (Spectrum_cepstralSmoothing, U"Spectrum: Cepstral smoothing", nullptr) {
 	POSITIVE (U"Bandwidth (Hz)", U"500.0")
 	OK2
 DO
 	LOOP {
 		iam (Spectrum);
 		autoSpectrum thee = Spectrum_cepstralSmoothing (me, GET_REAL (U"Bandwidth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Spectrum_draw, U"Spectrum: Draw", 0) {
+FORM (Spectrum_draw, U"Spectrum: Draw", nullptr) {
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"0.0 (= all)")
 	REAL (U"Minimum power (dB/Hz)", U"0 (= auto)")
 	REAL (U"Maximum power (dB/Hz)", U"0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -5285,12 +5357,12 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_drawLogFreq, U"Spectrum: Draw (log freq)", 0) {
+FORM (Spectrum_drawLogFreq, U"Spectrum: Draw (log freq)", nullptr) {
 	POSITIVE (U"left Frequency range (Hz)", U"10.0")
 	POSITIVE (U"right Frequency range (Hz)", U"10000.0")
 	REAL (U"Minimum power (dB/Hz)", U"0 (= auto)")
 	REAL (U"Maximum power (dB/Hz)", U"0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -5307,7 +5379,8 @@ DIRECT2 (Spectrum_edit) {
 	LOOP {
 		iam (Spectrum);
 		autoSpectrumEditor editor = SpectrumEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -5324,7 +5397,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Spectrum may have partially changed
@@ -5333,7 +5406,7 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getBandDensity, U"Spectrum: Get band density", 0) {
+FORM (Spectrum_getBandDensity, U"Spectrum: Get band density", nullptr) {
 	REAL (U"Band floor (Hz)", U"200.0")
 	REAL (U"Band ceiling (Hz)", U"1000")
 	OK2
@@ -5345,11 +5418,11 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getBandDensityDifference, U"Spectrum: Get band density difference", 0) {
-	REAL (U"Low band floor (Hz)", U"0")
-	REAL (U"Low band ceiling (Hz)", U"500")
-	REAL (U"High band floor (Hz)", U"500")
-	REAL (U"High band ceiling (Hz)", U"4000")
+FORM (Spectrum_getBandDensityDifference, U"Spectrum: Get band density difference", nullptr) {
+	REAL (U"Low band floor (Hz)", U"0.0")
+	REAL (U"Low band ceiling (Hz)", U"500.0")
+	REAL (U"High band floor (Hz)", U"500.0")
+	REAL (U"High band ceiling (Hz)", U"4000.0")
 	OK2
 DO
 	LOOP {
@@ -5360,9 +5433,9 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getBandEnergy, U"Spectrum: Get band energy", 0) {
+FORM (Spectrum_getBandEnergy, U"Spectrum: Get band energy", nullptr) {
 	REAL (U"Band floor (Hz)", U"200.0")
-	REAL (U"Band ceiling (Hz)", U"1000")
+	REAL (U"Band ceiling (Hz)", U"1000.0")
 	OK2
 DO
 	LOOP {
@@ -5372,11 +5445,11 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getBandEnergyDifference, U"Spectrum: Get band energy difference", 0) {
-	REAL (U"Low band floor (Hz)", U"0")
-	REAL (U"Low band ceiling (Hz)", U"500")
-	REAL (U"High band floor (Hz)", U"500")
-	REAL (U"High band ceiling (Hz)", U"4000")
+FORM (Spectrum_getBandEnergyDifference, U"Spectrum: Get band energy difference", nullptr) {
+	REAL (U"Low band floor (Hz)", U"0.0")
+	REAL (U"Low band ceiling (Hz)", U"500.0")
+	REAL (U"High band floor (Hz)", U"500.0")
+	REAL (U"High band ceiling (Hz)", U"4000.0")
 	OK2
 DO
 	LOOP {
@@ -5387,14 +5460,14 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getBinFromFrequency, U"Spectrum: Get bin from frequency", 0) {
+FORM (Spectrum_getBinFromFrequency, U"Spectrum: Get bin from frequency", nullptr) {
 	REAL (U"Frequency (Hz)", U"2000")
 	OK2
 DO
 	LOOP {
 		iam (Spectrum);
 		double bin = Sampled_xToIndex (me, GET_REAL (U"Frequency"));
-		Melder_informationReal (bin, NULL);
+		Melder_informationReal (bin, nullptr);
 	}
 END2 }
 
@@ -5428,7 +5501,7 @@ DO
 	}
 END2 }
 
-FORM (Spectrum_getFrequencyFromBin, U"Spectrum: Get frequency from bin", 0) {
+FORM (Spectrum_getFrequencyFromBin, U"Spectrum: Get frequency from bin", nullptr) {
 	NATURAL (U"Band number", U"1")
 	OK2
 DO
@@ -5446,7 +5519,7 @@ DIRECT2 (Spectrum_getHighestFrequency) {
 	}
 END2 }
 
-FORM (Spectrum_getImaginaryValueInBin, U"Spectrum: Get imaginary value in bin", 0) {
+FORM (Spectrum_getImaginaryValueInBin, U"Spectrum: Get imaginary value in bin", nullptr) {
 	NATURAL (U"Bin number", U"100")
 	OK2
 DO
@@ -5454,7 +5527,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		if (binNumber > my nx) Melder_throw (U"Bin number must not exceed number of bins.");
-		Melder_informationReal (my z [2] [binNumber], NULL);
+		Melder_informationReal (my z [2] [binNumber], nullptr);
 	}
 END2 }
 
@@ -5465,7 +5538,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		double kurtosis = Spectrum_getKurtosis (me, GET_REAL (U"Power"));
-		Melder_informationReal (kurtosis, NULL);
+		Melder_informationReal (kurtosis, nullptr);
 	}
 END2 }
 
@@ -5483,7 +5556,7 @@ DIRECT2 (Spectrum_getNumberOfBins) {
 	}
 END2 }
 
-FORM (Spectrum_getRealValueInBin, U"Spectrum: Get real value in bin", 0) {
+FORM (Spectrum_getRealValueInBin, U"Spectrum: Get real value in bin", nullptr) {
 	NATURAL (U"Bin number", U"100")
 	OK2
 DO
@@ -5491,7 +5564,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		if (binNumber > my nx) Melder_throw (U"Bin number must not exceed number of bins.");
-		Melder_informationReal (my z [1] [binNumber], NULL);
+		Melder_informationReal (my z [1] [binNumber], nullptr);
 	}
 END2 }
 
@@ -5502,7 +5575,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		double skewness = Spectrum_getSkewness (me, GET_REAL (U"Power"));
-		Melder_informationReal (skewness, NULL);
+		Melder_informationReal (skewness, nullptr);
 	}
 END2 }
 
@@ -5546,7 +5619,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoSpectrum thee = Spectrum_lpcSmoothing (me, GET_INTEGER (U"Number of peaks"), GET_REAL (U"Pre-emphasis from"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5583,7 +5656,7 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoExcitation thee = Spectrum_to_Excitation (me, GET_REAL (U"Frequency resolution"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5595,18 +5668,18 @@ DO
 	LOOP {
 		iam (Spectrum);
 		autoFormant thee = Spectrum_to_Formant (me, GET_INTEGER (U"Maximum number of formants"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Spectrum_to_Ltas, U"Spectrum: To Long-term average spectrum", 0) {
-	POSITIVE (U"Bandwidth (Hz)", U"1000")
+FORM (Spectrum_to_Ltas, U"Spectrum: To Long-term average spectrum", nullptr) {
+	POSITIVE (U"Bandwidth (Hz)", U"1000.0")
 	OK2
 DO
 	LOOP {
 		iam (Spectrum);
 		autoLtas thee = Spectrum_to_Ltas (me, GET_REAL (U"Bandwidth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5614,7 +5687,7 @@ DIRECT2 (Spectrum_to_Ltas_1to1) {
 	LOOP {
 		iam (Spectrum);
 		autoLtas thee = Spectrum_to_Ltas_1to1 (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5622,7 +5695,7 @@ DIRECT2 (Spectrum_to_Matrix) {
 	LOOP {
 		iam (Spectrum);
 		autoMatrix thee = Spectrum_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5630,7 +5703,7 @@ DIRECT2 (Spectrum_to_Sound) {
 	LOOP {
 		iam (Spectrum);
 		autoSound thee = Spectrum_to_Sound (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5638,7 +5711,7 @@ DIRECT2 (Spectrum_to_Spectrogram) {
 	LOOP {
 		iam (Spectrum);
 		autoSpectrogram thee = Spectrum_to_Spectrogram (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5646,7 +5719,7 @@ DIRECT2 (Spectrum_to_SpectrumTier_peaks) {
 	LOOP {
 		iam (Spectrum);
 		autoSpectrumTier thee = Spectrum_to_SpectrumTier_peaks (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5656,16 +5729,16 @@ DIRECT2 (SpectrumTier_downto_Table) {
 	LOOP {
 		iam (SpectrumTier);
 		autoTable thee = SpectrumTier_downto_Table (me, true, true, true);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (old_SpectrumTier_draw, U"SpectrumTier: Draw", 0) {   // 2010/10/19
+FORM (old_SpectrumTier_draw, U"SpectrumTier: Draw", nullptr) {   // 2010-10-19
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"10000.0")
 	REAL (U"left Power range (dB)", U"20.0")
 	REAL (U"right Power range (dB)", U"80.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	LOOP {
@@ -5678,12 +5751,12 @@ DO
 	}
 END2 }
 
-FORM (SpectrumTier_draw, U"SpectrumTier: Draw", 0) {
+FORM (SpectrumTier_draw, U"SpectrumTier: Draw", nullptr) {
 	REAL (U"left Frequency range (Hz)", U"0.0")
 	REAL (U"right Frequency range (Hz)", U"10000.0")
 	REAL (U"left Power range (dB)", U"20.0")
 	REAL (U"right Power range (dB)", U"80.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 1)
 		OPTION (U"lines")
@@ -5701,7 +5774,7 @@ DO_ALTERNATIVE (old_SpectrumTier_draw)
 	}
 END2 }
 
-FORM (SpectrumTier_list, U"SpectrumTier: List", 0) {
+FORM (SpectrumTier_list, U"SpectrumTier: List", nullptr) {
 	BOOLEAN (U"Include indexes", true)
 	BOOLEAN (U"Include frequency", true)
 	BOOLEAN (U"Include power density", true)
@@ -5713,7 +5786,7 @@ DO
 	}
 END2 }
 
-FORM (SpectrumTier_removePointsBelow, U"SpectrumTier: Remove points below", 0) {
+FORM (SpectrumTier_removePointsBelow, U"SpectrumTier: Remove points below", nullptr) {
 	REAL (U"Remove all points below (dB)", U"40.0")
 	OK2
 DO
@@ -5731,9 +5804,9 @@ FORM (Strings_createAsFileList, U"Create Strings as file list", U"Create Strings
 	LABEL (U"", U"File path:")
 	TEXTFIELD (U"path", U"/people/Miep/*.wav")
 	OK2
-static int inited;
+static bool inited;
 if (! inited) {
-	structMelderDir defaultDir = { { 0 } };
+	structMelderDir defaultDir { { 0 } };
 	Melder_getDefaultDir (& defaultDir);
 	char32 *workingDirectory = Melder_dirToPath (& defaultDir);
 	char32 path [kMelder_MAXPATH+1];
@@ -5748,11 +5821,11 @@ if (! inited) {
 		Melder_sprint (path, kMelder_MAXPATH+1, workingDirectory, U"*.wav");
 	#endif
 	SET_STRING (U"path", path);
-	inited = TRUE;
+	inited = true;
 }
 DO
 	autoStrings me = Strings_createAsFileList (GET_STRING (U"path"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Strings_createAsDirectoryList, U"Create Strings as directory list", U"Create Strings as directory list...") {
@@ -5760,7 +5833,7 @@ FORM (Strings_createAsDirectoryList, U"Create Strings as directory list", U"Crea
 	LABEL (U"", U"Path:")
 	TEXTFIELD (U"path", U"/people/Miep/*")
 	OK2
-static int inited;
+static bool inited;
 if (! inited) {
 	structMelderDir defaultDir = { { 0 } };
 	Melder_getDefaultDir (& defaultDir);
@@ -5777,11 +5850,11 @@ if (! inited) {
 		Melder_sprint (path, kMelder_MAXPATH+1, workingDirectory, U"*");
 	#endif
 	SET_STRING (U"path", path);
-	inited = TRUE;
+	inited = true;
 }
 DO
 	autoStrings me = Strings_createAsDirectoryList (GET_STRING (U"path"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 DIRECT2 (Strings_edit) {
@@ -5789,12 +5862,13 @@ DIRECT2 (Strings_edit) {
 	LOOP {
 		iam (Strings);
 		autoStringsEditor editor = StringsEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 DIRECT2 (Strings_equal) {
-	Strings s1 = NULL, s2 = NULL;
+	Strings s1 = nullptr, s2 = nullptr;
 	LOOP (s1 ? s2 : s1) = (Strings) OBJECT;
 	bool equal = Data_equal (s1, s2);
 	Melder_information ((int) equal);   // we need a 0 or 1
@@ -5820,7 +5894,7 @@ DIRECT2 (Strings_getNumberOfStrings) {
 	}
 END2 }
 
-FORM (Strings_getString, U"Get string", 0) {
+FORM (Strings_getString, U"Get string", nullptr) {
 	NATURAL (U"Position", U"1")
 	OK2
 DO
@@ -5871,10 +5945,10 @@ END2 }
 
 FORM_READ2 (Strings_readFromRawTextFile, U"Read Strings from raw text file", 0, true) {
 	autoStrings me = Strings_readFromRawTextFile (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-FORM (Strings_removeString, U"Strings: Remove string", 0) {
+FORM (Strings_removeString, U"Strings: Remove string", nullptr) {
 	NATURAL (U"Position", U"1")
 	OK2
 DO
@@ -5885,7 +5959,7 @@ DO
 	}
 END2 }
 
-FORM (Strings_replaceAll, U"Strings: Replace all", 0) {
+FORM (Strings_replaceAll, U"Strings: Replace all", nullptr) {
 	SENTENCE (U"Find", U"a")
 	SENTENCE (U"Replace with", U"b")
 	INTEGER (U"Replace limit per string", U"0 (=unlimited)")
@@ -5897,12 +5971,13 @@ DO
 	long numberOfMatches, numberOfStringMatches;
 	LOOP {
 		iam (Strings);
-		praat_new (Strings_change (me, GET_STRING (U"Find"), GET_STRING (U"Replace with"),
-			GET_INTEGER (U"Replace limit per string"), & numberOfMatches, & numberOfStringMatches, GET_INTEGER (U"Find and replace strings are") - 1), 0);
+		autoStrings thee = Strings_change (me, GET_STRING (U"Find"), GET_STRING (U"Replace with"),
+			GET_INTEGER (U"Replace limit per string"), & numberOfMatches, & numberOfStringMatches, GET_INTEGER (U"Find and replace strings are") - 1);
+		praat_new (thee.move());
 	}
 END2 }
 
-FORM (Strings_setString, U"Strings: Set string", 0) {
+FORM (Strings_setString, U"Strings: Set string", nullptr) {
 	NATURAL (U"Position", U"1")
 	LABEL (U"", U"New string:")
 	TEXTFIELD (U"newString", U"")
@@ -5927,7 +6002,7 @@ DIRECT2 (Strings_to_Distributions) {
 	LOOP {
 		iam (Strings);
 		autoDistributions thee = Strings_to_Distributions (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5935,11 +6010,11 @@ DIRECT2 (Strings_to_WordList) {
 	LOOP {
 		iam (Strings);
 		autoWordList thee = Strings_to_WordList (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM_WRITE (Strings_writeToRawTextFile, U"Save Strings as text file", 0, U"txt")
+FORM_WRITE (Strings_writeToRawTextFile, U"Save Strings as text file", nullptr, U"txt")
 	LOOP {
 		iam (Strings);
 		Strings_writeToRawTextFile (me, file);
@@ -5952,7 +6027,7 @@ DIRECT2 (Table_to_Matrix) {
 	LOOP {
 		iam (Table);
 		autoMatrix thee = Table_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -5970,14 +6045,14 @@ DO
 	double tmin = GET_REAL (U"Start time"), tmax = GET_REAL (U"End time");
 	if (tmax <= tmin) Melder_throw (U"End time should be greater than start time");
 	autoTextGrid thee = TextGrid_create (tmin, tmax, GET_STRING (U"All tier names"), GET_STRING (U"Which of these are point tiers?"));
-	praat_new (thee.transfer(), GET_STRING (U"All tier names"));
+	praat_new (thee.move(), GET_STRING (U"All tier names"));
 END2 }
 
 /***** TEXTTIER, rest in praat_TextGrid_init.cpp *****/
 
-FORM_READ2 (TextTier_readFromXwaves, U"Read TextTier from Xwaves", 0, true) {
+FORM_READ2 (TextTier_readFromXwaves, U"Read TextTier from Xwaves", nullptr, true) {
 	autoTextTier me = TextTier_readFromXwaves (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
 /***** TIMEFRAMESAMPLED *****/
@@ -5997,7 +6072,7 @@ DO
 	LOOP {
 		iam (Sampled);
 		double frame = Sampled_xToIndex (me, GET_REAL (U"Time"));
-		Melder_informationReal (frame, NULL);
+		Melder_informationReal (frame, nullptr);
 	}
 END2 }
 
@@ -6046,7 +6121,7 @@ DIRECT2 (TimeFunction_getStartTime) {
 	}
 END2 }
 
-FORM (TimeFunction_scaleTimesBy, U"Scale times by", 0) {
+FORM (TimeFunction_scaleTimesBy, U"Scale times by", nullptr) {
 	POSITIVE (U"Factor", U"2.0")
 	OK2
 DO
@@ -6057,7 +6132,7 @@ DO
 	}
 END2 }
 
-FORM (TimeFunction_scaleTimesTo, U"Scale times to", 0) {
+FORM (TimeFunction_scaleTimesTo, U"Scale times to", nullptr) {
 	REAL (U"New start time (s)", U"0.0")
 	REAL (U"New end time (s)", U"1.0")
 	OK2
@@ -6071,7 +6146,7 @@ DO
 	}
 END2 }
 
-FORM (TimeFunction_shiftTimesBy, U"Shift times by", 0) {
+FORM (TimeFunction_shiftTimesBy, U"Shift times by", nullptr) {
 	REAL (U"Shift (s)", U"0.5")
 	OK2
 DO
@@ -6082,7 +6157,7 @@ DO
 	}
 END2 }
 
-FORM (TimeFunction_shiftTimesTo, U"Shift times to", 0) {
+FORM (TimeFunction_shiftTimesTo, U"Shift times to", nullptr) {
 	RADIO (U"Shift", 1)
 		OPTION (U"start time")
 		OPTION (U"centre time")
@@ -6114,7 +6189,7 @@ FORM (TimeTier_getHighIndexFromTime, U"Get high index", U"AnyTier: Get high inde
 DO
 	LOOP {
 		iam (AnyTier);
-		Melder_information (my points -> size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToHighIndex (me, GET_REAL (U"Time"))));
+		Melder_information (my points.size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToHighIndex (me, GET_REAL (U"Time"))));
 	}
 END2 }
 
@@ -6124,7 +6199,7 @@ FORM (TimeTier_getLowIndexFromTime, U"Get low index", U"AnyTier: Get low index f
 DO
 	LOOP {
 		iam (AnyTier);
-		Melder_information (my points -> size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToLowIndex (me, GET_REAL (U"Time"))));
+		Melder_information (my points.size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToLowIndex (me, GET_REAL (U"Time"))));
 	}
 END2 }
 
@@ -6134,26 +6209,26 @@ FORM (TimeTier_getNearestIndexFromTime, U"Get nearest index", U"AnyTier: Get nea
 DO
 	LOOP {
 		iam (AnyTier);
-		Melder_information (my points -> size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToNearestIndex (me, GET_REAL (U"Time"))));
+		Melder_information (my points.size == 0 ? U"--undefined--" : Melder_integer (AnyTier_timeToNearestIndex (me, GET_REAL (U"Time"))));
 	}
 END2 }
 
 DIRECT2 (TimeTier_getNumberOfPoints) {
 	LOOP {
 		iam (AnyTier);
-		Melder_information (my points -> size, U" points");
+		Melder_information (my points.size, U" points");
 	}
 END2 }
 
-FORM (TimeTier_getTimeFromIndex, U"Get time", 0 /*"AnyTier: Get time from index..."*/) {
+FORM (TimeTier_getTimeFromIndex, U"Get time", nullptr /*"AnyTier: Get time from index..."*/) {
 	NATURAL (U"Point number", U"10")
 	OK2
 DO
 	LOOP {
 		iam (AnyTier);
 		long i = GET_INTEGER (U"Point number");
-		if (i > my points -> size) Melder_information (U"--undefined--");
-		else Melder_informationReal (((AnyPoint) my points -> item [i]) -> number, U"seconds");
+		if (i > my points.size) Melder_information (U"--undefined--");
+		else Melder_informationReal (my points.at [i] -> number, U"seconds");
 	}
 END2 }
 
@@ -6197,11 +6272,11 @@ DIRECT2 (Transition_conflate) {
 	LOOP {
 		iam (Transition);
 		autoDistributions thee = Transition_to_Distributions_conflate (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Transition_drawAsNumbers, U"Draw as numbers", 0) {
+FORM (Transition_drawAsNumbers, U"Draw as numbers", nullptr) {
 	RADIO (U"Format", 1)
 		RADIOBUTTON (U"decimal")
 		RADIOBUTTON (U"exponential")
@@ -6220,12 +6295,10 @@ END2 }
 DIRECT2 (Transition_eigen) {
 	LOOP {
 		iam (Transition);
-		Matrix vec_, val_;
-		Transition_eigen (me, & vec_, & val_);
-		autoMatrix vec = vec_;
-		autoMatrix val = val_;
-		praat_new (vec.transfer(), U"eigenvectors");
-		praat_new (val.transfer(), U"eigenvalues");
+		autoMatrix vectors, values;
+		Transition_eigen (me, & vectors, & values);
+		praat_new (vectors.move(), U"eigenvectors");
+		praat_new (values.move(), U"eigenvalues");
 	}
 END2 }
 
@@ -6233,14 +6306,14 @@ DIRECT2 (Transition_help) {
 	Melder_help (U"Transition");
 END2 }
 
-FORM (Transition_power, U"Transition: Power...", 0) {
+FORM (Transition_power, U"Transition: Power...", nullptr) {
 	NATURAL (U"Power", U"2")
 	OK2
 DO
 	LOOP {
 		iam (Transition);
 		autoTransition thee = Transition_power (me, GET_INTEGER (U"Power"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -6248,7 +6321,7 @@ DIRECT2 (Transition_to_Matrix) {
 	LOOP {
 		iam (Transition);
 		autoMatrix thee = Transition_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -6278,21 +6351,22 @@ DIRECT (Acknowledgments) Melder_help (U"Acknowledgments"); END
 DIRECT (FormulasTutorial) Melder_help (U"Formulas"); END
 DIRECT (ScriptingTutorial) Melder_help (U"Scripting"); END
 DIRECT (DemoWindow) Melder_help (U"Demo window"); END
+DIRECT (Interoperability) Melder_help (U"Interoperability"); END
 DIRECT (Programming) Melder_help (U"Programming with Praat"); END
 DIRECT (SearchManual) Melder_search (); END
 
 /***** file recognizers *****/
 
-static Any cgnSyntaxFileRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread < 57) return NULL;
+static autoDaata cgnSyntaxFileRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread < 57) return autoDaata ();
 	if (! strnequ (& header [0], "<?xml version=\"1.0\"?>", 21) ||
 	    (! strnequ (& header [22], "<!DOCTYPE ttext SYSTEM \"ttext.dtd\">", 35) &&
-	     ! strnequ (& header [23], "<!DOCTYPE ttext SYSTEM \"ttext.dtd\">", 35))) return NULL;
+	     ! strnequ (& header [23], "<!DOCTYPE ttext SYSTEM \"ttext.dtd\">", 35))) return autoDaata ();
 	return TextGrid_readFromCgnSyntaxFile (file);
 }
 
-static Any chronologicalTextGridTextFileRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread < 100) return NULL;
+static autoDaata chronologicalTextGridTextFileRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread < 100) return autoDaata ();
 	if (strnequ (& header [0], "\"Praat chronological TextGrid text file\"", 40))
 		return TextGrid_readFromChronologicalTextFile (file);
 	char headerCopy [101];
@@ -6307,10 +6381,10 @@ static Any chronologicalTextGridTextFileRecognizer (int nread, const char *heade
 	{
 		return TextGrid_readFromChronologicalTextFile (file);
 	}
-	return NULL;
+	return autoDaata ();
 }
 
-static Any imageFileRecognizer (int /* nread */, const char * /* header */, MelderFile file) {
+static autoDaata imageFileRecognizer (int /* nread */, const char * /* header */, MelderFile file) {
 	const char32 *fileName = MelderFile_name (file);
 	if (Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".jpg") ||
 	    Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".JPG") ||
@@ -6325,7 +6399,7 @@ static Any imageFileRecognizer (int /* nread */, const char * /* header */, Meld
 	{
 		return Photo_readFromImageFile (file);
 	}
-	return NULL;
+	return autoDaata ();
 }
 
 /***** buttons *****/
@@ -6334,56 +6408,56 @@ void praat_TableOfReal_init (ClassInfo klas);   // Buttons for TableOfReal and f
 
 void praat_TimeFunction_query_init (ClassInfo klas);   // Query buttons for time-based subclasses of Function.
 void praat_TimeFunction_query_init (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"Query time domain", 0, 1, 0);
-	praat_addAction1 (klas, 1, U"Get start time", 0, 2, DO_TimeFunction_getStartTime);
+	praat_addAction1 (klas, 1, U"Query time domain", nullptr, 1, nullptr);
+	praat_addAction1 (klas, 1, U"Get start time", nullptr, 2, DO_TimeFunction_getStartTime);
 						praat_addAction1 (klas, 1, U"Get starting time", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_getStartTime);
-	praat_addAction1 (klas, 1, U"Get end time", 0, 2, DO_TimeFunction_getEndTime);
+	praat_addAction1 (klas, 1, U"Get end time", nullptr, 2, DO_TimeFunction_getEndTime);
 						praat_addAction1 (klas, 1, U"Get finishing time", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_getEndTime);
-	praat_addAction1 (klas, 1, U"Get total duration", 0, 2, DO_TimeFunction_getDuration);
+	praat_addAction1 (klas, 1, U"Get total duration", nullptr, 2, DO_TimeFunction_getDuration);
 						praat_addAction1 (klas, 1, U"Get duration", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_getDuration);
 }
 
 void praat_TimeFunction_modify_init (ClassInfo klas);   // Modify buttons for time-based subclasses of Function.
 void praat_TimeFunction_modify_init (ClassInfo klas) {
-	praat_addAction1 (klas, 0, U"Modify times", 0, 1, 0);
-	praat_addAction1 (klas, 0, U"Shift times by...", 0, 2, DO_TimeFunction_shiftTimesBy);
-	praat_addAction1 (klas, 0, U"Shift times to...", 0, 2, DO_TimeFunction_shiftTimesTo);
-						praat_addAction1 (klas, 0, U"Shift to zero", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_shiftToZero);   // hidden 2008
-	praat_addAction1 (klas, 0, U"Scale times by...", 0, 2, DO_TimeFunction_scaleTimesBy);
-	praat_addAction1 (klas, 0, U"Scale times to...", 0, 2, DO_TimeFunction_scaleTimesTo);
-						praat_addAction1 (klas, 0, U"Scale times...", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_scaleTimesTo);   // hidden 2008
+	praat_addAction1 (klas, 0, U"Modify times", nullptr, 1, nullptr);
+	praat_addAction1 (klas, 0, U"Shift times by...", nullptr, 2, DO_TimeFunction_shiftTimesBy);
+	praat_addAction1 (klas, 0, U"Shift times to...", nullptr, 2, DO_TimeFunction_shiftTimesTo);
+						praat_addAction1 (klas, 0, U"Shift to zero", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_shiftToZero);   // hidden 2008
+	praat_addAction1 (klas, 0, U"Scale times by...", nullptr, 2, DO_TimeFunction_scaleTimesBy);
+	praat_addAction1 (klas, 0, U"Scale times to...", nullptr, 2, DO_TimeFunction_scaleTimesTo);
+						praat_addAction1 (klas, 0, U"Scale times...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFunction_scaleTimesTo);   // hidden 2008
 }
 
 void praat_TimeFrameSampled_query_init (ClassInfo klas);   // Query buttons for frame-based time-based subclasses of Sampled.
 void praat_TimeFrameSampled_query_init (ClassInfo klas) {
 	praat_TimeFunction_query_init (klas);
-	praat_addAction1 (klas, 1, U"Query time sampling", 0, 1, 0);
-	praat_addAction1 (klas, 1, U"Get number of frames", 0, 2, DO_TimeFrameSampled_getNumberOfFrames);
-	praat_addAction1 (klas, 1, U"Get time step", 0, 2, DO_TimeFrameSampled_getFrameLength);
-						praat_addAction1 (klas, 1, U"Get frame length", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameLength);
-						praat_addAction1 (klas, 1, U"Get frame duration", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameLength);
-	praat_addAction1 (klas, 1, U"Get time from frame number...", 0, 2, DO_TimeFrameSampled_getTimeFromFrame);
-						praat_addAction1 (klas, 1, U"Get time from frame...", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getTimeFromFrame);
-	praat_addAction1 (klas, 1, U"Get frame number from time...", 0, 2, DO_TimeFrameSampled_getFrameFromTime);
-						praat_addAction1 (klas, 1, U"Get frame from time...", 0, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameFromTime);
+	praat_addAction1 (klas, 1, U"Query time sampling", nullptr, 1, nullptr);
+	praat_addAction1 (klas, 1, U"Get number of frames", nullptr, 2, DO_TimeFrameSampled_getNumberOfFrames);
+	praat_addAction1 (klas, 1, U"Get time step", nullptr, 2, DO_TimeFrameSampled_getFrameLength);
+						praat_addAction1 (klas, 1, U"Get frame length", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameLength);
+						praat_addAction1 (klas, 1, U"Get frame duration", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameLength);
+	praat_addAction1 (klas, 1, U"Get time from frame number...", nullptr, 2, DO_TimeFrameSampled_getTimeFromFrame);
+						praat_addAction1 (klas, 1, U"Get time from frame...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getTimeFromFrame);
+	praat_addAction1 (klas, 1, U"Get frame number from time...", nullptr, 2, DO_TimeFrameSampled_getFrameFromTime);
+						praat_addAction1 (klas, 1, U"Get frame from time...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TimeFrameSampled_getFrameFromTime);
 }
 
 void praat_TimeTier_query_init (ClassInfo klas);   // Query buttons for time-based subclasses of AnyTier.
 void praat_TimeTier_query_init (ClassInfo klas) {
 	praat_TimeFunction_query_init (klas);
-	praat_addAction1 (klas, 1, U"Get number of points", 0, 1, DO_TimeTier_getNumberOfPoints);
-	praat_addAction1 (klas, 1, U"Get low index from time...", 0, 1, DO_TimeTier_getLowIndexFromTime);
-	praat_addAction1 (klas, 1, U"Get high index from time...", 0, 1, DO_TimeTier_getHighIndexFromTime);
-	praat_addAction1 (klas, 1, U"Get nearest index from time...", 0, 1, DO_TimeTier_getNearestIndexFromTime);
-	praat_addAction1 (klas, 1, U"Get time from index...", 0, 1, DO_TimeTier_getTimeFromIndex);
+	praat_addAction1 (klas, 1, U"Get number of points", nullptr, 1, DO_TimeTier_getNumberOfPoints);
+	praat_addAction1 (klas, 1, U"Get low index from time...", nullptr, 1, DO_TimeTier_getLowIndexFromTime);
+	praat_addAction1 (klas, 1, U"Get high index from time...", nullptr, 1, DO_TimeTier_getHighIndexFromTime);
+	praat_addAction1 (klas, 1, U"Get nearest index from time...", nullptr, 1, DO_TimeTier_getNearestIndexFromTime);
+	praat_addAction1 (klas, 1, U"Get time from index...", nullptr, 1, DO_TimeTier_getTimeFromIndex);
 }
 
 void praat_TimeTier_modify_init (ClassInfo klas);   // Modification buttons for time-based subclasses of AnyTier.
 void praat_TimeTier_modify_init (ClassInfo klas) {
 	praat_TimeFunction_modify_init (klas);
-	praat_addAction1 (klas, 0, U"Remove point...", 0, 1, DO_TimeTier_removePoint);
-	praat_addAction1 (klas, 0, U"Remove point near...", 0, 1, DO_TimeTier_removePointNear);
-	praat_addAction1 (klas, 0, U"Remove points between...", 0, 1, DO_TimeTier_removePointsBetween);
+	praat_addAction1 (klas, 0, U"Remove point...", nullptr, 1, DO_TimeTier_removePoint);
+	praat_addAction1 (klas, 0, U"Remove point near...", nullptr, 1, DO_TimeTier_removePointNear);
+	praat_addAction1 (klas, 0, U"Remove points between...", nullptr, 1, DO_TimeTier_removePointsBetween);
 }
 
 void praat_uvafon_init ();
@@ -6398,7 +6472,7 @@ void praat_uvafon_init () {
 		classManipulation, classTextPoint, classTextInterval, classTextTier,
 		classIntervalTier, classTextGrid, classLongSound, classWordList, classSpellingChecker,
 		classMovie, classCorpus, classPhoto,
-		NULL);
+		nullptr);
 	Thing_recognizeClassByOtherName (classManipulation, U"Psola");
 	Thing_recognizeClassByOtherName (classManipulation, U"Analysis");
 	Thing_recognizeClassByOtherName (classPitchTier, U"StylPitch");
@@ -6406,7 +6480,8 @@ void praat_uvafon_init () {
 	Data_recognizeFileType (cgnSyntaxFileRecognizer);
 	Data_recognizeFileType (chronologicalTextGridTextFileRecognizer);
 	Data_recognizeFileType (imageFileRecognizer);
-
+	Data_recognizeFileType (IDXFormattedMatrixFileRecognizer);
+	
 	structManipulationEditor :: f_preferences ();
 	structSpectrumEditor     :: f_preferences ();
 	structFormantGridEditor  :: f_preferences ();
@@ -6414,790 +6489,793 @@ void praat_uvafon_init () {
 	INCLUDE_LIBRARY (praat_uvafon_Sound_init)
 	INCLUDE_LIBRARY (praat_uvafon_TextGrid_init)
 
-	praat_addMenuCommand (U"Objects", U"Technical", U"Praat test...", 0, 0, DO_Praat_test);
-
-	praat_addMenuCommand (U"Objects", U"New", U"-- new numerics --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Matrix", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Matrix...", 0, 1, DO_Matrix_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create simple Matrix...", 0, 1, DO_Matrix_createSimple);
-		praat_addMenuCommand (U"Objects", U"New", U"-- colour matrix --", 0, 1, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Photo...", 0, 1, DO_Photo_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create simple Photo...", 0, 1, DO_Photo_createSimple);
-	praat_addMenuCommand (U"Objects", U"Open", U"-- read movie --", 0, praat_HIDDEN, 0);
-	praat_addMenuCommand (U"Objects", U"Open", U"Open movie file...", 0, praat_HIDDEN, DO_Movie_openFromSoundFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"-- read raw --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Matrix from raw text file...", 0, 0, DO_Matrix_readFromRawTextFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Matrix from LVS AP file...", 0, praat_HIDDEN, DO_Matrix_readAP);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Strings from raw text file...", 0, 0, DO_Strings_readFromRawTextFile);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Praat test...", nullptr, 0, DO_Praat_test);
+
+	praat_addMenuCommand (U"Objects", U"New", U"-- new numerics --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Matrix", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Matrix...", nullptr, 1, DO_Matrix_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create simple Matrix...", nullptr, 1, DO_Matrix_createSimple);
+		praat_addMenuCommand (U"Objects", U"New", U"-- colour matrix --", nullptr, 1, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Photo...", nullptr, 1, DO_Photo_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create simple Photo...", nullptr, 1, DO_Photo_createSimple);
+	praat_addMenuCommand (U"Objects", U"Open", U"-- read movie --", nullptr, praat_HIDDEN, nullptr);
+	praat_addMenuCommand (U"Objects", U"Open", U"Open movie file...", nullptr, praat_HIDDEN, DO_Movie_openFromSoundFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"-- read raw --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Matrix from raw text file...", nullptr, 0, DO_Matrix_readFromRawTextFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Matrix from LVS AP file...", nullptr, praat_HIDDEN, DO_Matrix_readAP);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Strings from raw text file...", nullptr, 0, DO_Strings_readFromRawTextFile);
 
 	INCLUDE_LIBRARY (praat_uvafon_stat_init)
 
-	praat_addMenuCommand (U"Objects", U"New", U"Tiers", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create empty PointProcess...", 0, 1, DO_PointProcess_createEmpty);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Poisson process...", 0, 1, DO_PointProcess_createPoissonProcess);
-		praat_addMenuCommand (U"Objects", U"New", U"-- new tiers ---", 0, 1, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create PitchTier...", 0, 1, DO_PitchTier_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create FormantGrid...", 0, 1, DO_FormantGrid_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create FormantTier...", 0, praat_HIDDEN | praat_DEPTH_1, DO_FormantTier_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create IntensityTier...", 0, 1, DO_IntensityTier_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create DurationTier...", 0, 1, DO_DurationTier_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create AmplitudeTier...", 0, 1, DO_AmplitudeTier_create);
-	praat_addMenuCommand (U"Objects", U"New", U"-- new textgrid --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"New", U"Create TextGrid...", 0, 0, DO_TextGrid_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Corpus...", 0, praat_HIDDEN, DO_Corpus_create);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as file list...", 0, 0, DO_Strings_createAsFileList);
-	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as directory list...", 0, 0, DO_Strings_createAsDirectoryList);
-
-	praat_addMenuCommand (U"Objects", U"Open", U"-- read tier --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read from special tier file...", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"Open", U"Read TextTier from Xwaves...", 0, 1, DO_TextTier_readFromXwaves);
-		praat_addMenuCommand (U"Objects", U"Open", U"Read IntervalTier from Xwaves...", 0, 1, DO_IntervalTier_readFromXwaves);
-
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Praat Intro", 0, '?', DO_Intro);
+	praat_addMenuCommand (U"Objects", U"New", U"Tiers", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create empty PointProcess...", nullptr, 1, DO_PointProcess_createEmpty);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Poisson process...", nullptr, 1, DO_PointProcess_createPoissonProcess);
+		praat_addMenuCommand (U"Objects", U"New", U"-- new tiers ---", nullptr, 1, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create PitchTier...", nullptr, 1, DO_PitchTier_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create FormantGrid...", nullptr, 1, DO_FormantGrid_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create FormantTier...", nullptr, praat_HIDDEN | praat_DEPTH_1, DO_FormantTier_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create IntensityTier...", nullptr, 1, DO_IntensityTier_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create DurationTier...", nullptr, 1, DO_DurationTier_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create AmplitudeTier...", nullptr, 1, DO_AmplitudeTier_create);
+	praat_addMenuCommand (U"Objects", U"New", U"-- new textgrid --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"New", U"Create TextGrid...", nullptr, 0, DO_TextGrid_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Corpus...", nullptr, praat_HIDDEN, DO_Corpus_create);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as file list...", nullptr, 0, DO_Strings_createAsFileList);
+	praat_addMenuCommand (U"Objects", U"New", U"Create Strings as directory list...", nullptr, 0, DO_Strings_createAsDirectoryList);
+
+	praat_addMenuCommand (U"Objects", U"Open", U"-- read tier --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read from special tier file...", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"Open", U"Read TextTier from Xwaves...", nullptr, 1, DO_TextTier_readFromXwaves);
+		praat_addMenuCommand (U"Objects", U"Open", U"Read IntervalTier from Xwaves...", nullptr, 1, DO_IntervalTier_readFromXwaves);
+
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Praat Intro", nullptr, '?', DO_Intro);
 	#ifndef macintosh
-		praat_addMenuCommand (U"Objects", U"Help", U"Object window", 0, 0, DO_ObjectWindow);
+		praat_addMenuCommand (U"Objects", U"Help", U"Object window", nullptr, 0, DO_ObjectWindow);
 	#endif
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Frequently asked questions", 0, 0, DO_FrequentlyAskedQuestions);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"What's new?", 0, 0, DO_WhatsNew);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Types of objects", 0, 0, DO_TypesOfObjects);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Editors", 0, 0, DO_Editors);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Acknowledgments", 0, 0, DO_Acknowledgments);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"-- shell help --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Formulas tutorial", 0, 0, DO_FormulasTutorial);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Scripting tutorial", 0, 0, DO_ScriptingTutorial);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Demo window", 0, 0, DO_DemoWindow);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Programming", 0, 0, DO_Programming);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Frequently asked questions", nullptr, 0, DO_FrequentlyAskedQuestions);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"What's new?", nullptr, 0, DO_WhatsNew);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Types of objects", nullptr, 0, DO_TypesOfObjects);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Editors", nullptr, 0, DO_Editors);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Acknowledgments", nullptr, 0, DO_Acknowledgments);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"-- shell help --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Formulas tutorial", nullptr, 0, DO_FormulasTutorial);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Scripting tutorial", nullptr, 0, DO_ScriptingTutorial);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Demo window", nullptr, 0, DO_DemoWindow);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Interoperability", nullptr, 0, DO_Interoperability);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Programming", nullptr, 0, DO_Programming);
 	#ifdef macintosh
-		praat_addMenuCommand (U"Objects", U"Help", U"Praat Intro", 0, '?', DO_Intro);
-		praat_addMenuCommand (U"Objects", U"Help", U"Object window help", 0, 0, DO_ObjectWindow);
-		praat_addMenuCommand (U"Objects", U"Help", U"-- manual --", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"Help", U"Search Praat manual...", 0, 'M', DO_SearchManual);
+		praat_addMenuCommand (U"Objects", U"Help", U"Praat Intro", nullptr, '?', DO_Intro);
+		praat_addMenuCommand (U"Objects", U"Help", U"Object window help", nullptr, 0, DO_ObjectWindow);
+		praat_addMenuCommand (U"Objects", U"Help", U"-- manual --", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"Help", U"Search Praat manual...", nullptr, 'M', DO_SearchManual);
 	#endif
 
-	praat_addAction1 (classAmplitudeTier, 0, U"AmplitudeTier help", 0, 0, DO_AmplitudeTier_help);
-	praat_addAction1 (classAmplitudeTier, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_AmplitudeTier_edit);
-	praat_addAction1 (classAmplitudeTier, 1, U"Edit", 0, praat_HIDDEN, DO_AmplitudeTier_edit);
+	praat_addAction1 (classAmplitudeTier, 0, U"AmplitudeTier help", nullptr, 0, DO_AmplitudeTier_help);
+	praat_addAction1 (classAmplitudeTier, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_AmplitudeTier_edit);
+	praat_addAction1 (classAmplitudeTier, 1, U"Edit", nullptr, praat_HIDDEN, DO_AmplitudeTier_edit);
 	praat_addAction1 (classAmplitudeTier, 0, U"View & Edit with Sound?", 0, 0, DO_info_AmplitudeTier_Sound_edit);
-	praat_addAction1 (classAmplitudeTier, 0, U"Query -", 0, 0, 0);
+	praat_addAction1 (classAmplitudeTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classAmplitudeTier);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (local)...", 0, 1, DO_AmplitudeTier_getShimmer_local);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (local_dB)...", 0, 1, DO_AmplitudeTier_getShimmer_local_dB);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq3)...", 0, 1, DO_AmplitudeTier_getShimmer_apq3);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq5)...", 0, 1, DO_AmplitudeTier_getShimmer_apq5);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq11)...", 0, 1, DO_AmplitudeTier_getShimmer_apq11);
-		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (dda)...", 0, 1, DO_AmplitudeTier_getShimmer_dda);
-	praat_addAction1 (classAmplitudeTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (local)...", nullptr, 1, DO_AmplitudeTier_getShimmer_local);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (local_dB)...", nullptr, 1, DO_AmplitudeTier_getShimmer_local_dB);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq3)...", nullptr, 1, DO_AmplitudeTier_getShimmer_apq3);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq5)...", nullptr, 1, DO_AmplitudeTier_getShimmer_apq5);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (apq11)...", nullptr, 1, DO_AmplitudeTier_getShimmer_apq11);
+		praat_addAction1 (classAmplitudeTier, 1, U"Get shimmer (dda)...", nullptr, 1, DO_AmplitudeTier_getShimmer_dda);
+	praat_addAction1 (classAmplitudeTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classAmplitudeTier);
-		praat_addAction1 (classAmplitudeTier, 0, U"Add point...", 0, 1, DO_AmplitudeTier_addPoint);
-		praat_addAction1 (classAmplitudeTier, 0, U"Formula...", 0, 1, DO_AmplitudeTier_formula);
-praat_addAction1 (classAmplitudeTier, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classAmplitudeTier, 0, U"To Sound (pulse train)...", 0, 0, DO_AmplitudeTier_to_Sound);
-praat_addAction1 (classAmplitudeTier, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classAmplitudeTier, 0, U"To IntensityTier...", 0, 0, DO_AmplitudeTier_to_IntensityTier);
-	praat_addAction1 (classAmplitudeTier, 0, U"Down to PointProcess", 0, 0, DO_AmplitudeTier_downto_PointProcess);
-	praat_addAction1 (classAmplitudeTier, 0, U"Down to TableOfReal", 0, 0, DO_AmplitudeTier_downto_TableOfReal);
-
-	praat_addAction1 (classCochleagram, 0, U"Cochleagram help", 0, 0, DO_Cochleagram_help);
-	praat_addAction1 (classCochleagram, 1, U"Movie", 0, 0, DO_Cochleagram_movie);
-praat_addAction1 (classCochleagram, 0, U"Info", 0, 0, 0);
-	praat_addAction1 (classCochleagram, 2, U"Difference...", 0, 0, DO_Cochleagram_difference);
-praat_addAction1 (classCochleagram, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classCochleagram, 0, U"Paint...", 0, 0, DO_Cochleagram_paint);
-praat_addAction1 (classCochleagram, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classCochleagram, 0, U"Formula...", 0, 0, DO_Cochleagram_formula);
-praat_addAction1 (classCochleagram, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classCochleagram, 0, U"To Excitation (slice)...", 0, 0, DO_Cochleagram_to_Excitation);
-praat_addAction1 (classCochleagram, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classCochleagram, 0, U"To Matrix", 0, 0, DO_Cochleagram_to_Matrix);
-
-	praat_addAction1 (classCorpus, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Corpus_edit);
-
-praat_addAction1 (classDistributions, 0, U"Learn", 0, 0, 0);
-	praat_addAction1 (classDistributions, 1, U"To Transition...", 0, 0, DO_Distributions_to_Transition);
-	praat_addAction1 (classDistributions, 2, U"To Transition (noise)...", 0, 0, DO_Distributions_to_Transition_noise);
-
-	praat_addAction1 (classDurationTier, 0, U"DurationTier help", 0, 0, DO_DurationTier_help);
-	praat_addAction1 (classDurationTier, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_DurationTier_edit);
-	praat_addAction1 (classDurationTier, 1, U"Edit", 0, praat_HIDDEN, DO_DurationTier_edit);
-	praat_addAction1 (classDurationTier, 0, U"View & Edit with Sound?", 0, 0, DO_info_DurationTier_Sound_edit);
-	praat_addAction1 (classDurationTier, 0, U"& Manipulation: Replace?", 0, 0, DO_info_DurationTier_Manipulation_replace);
-	praat_addAction1 (classDurationTier, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classAmplitudeTier, 0, U"Add point...", nullptr, 1, DO_AmplitudeTier_addPoint);
+		praat_addAction1 (classAmplitudeTier, 0, U"Formula...", nullptr, 1, DO_AmplitudeTier_formula);
+praat_addAction1 (classAmplitudeTier, 0, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction1 (classAmplitudeTier, 0, U"To Sound (pulse train)...", nullptr, 0, DO_AmplitudeTier_to_Sound);
+praat_addAction1 (classAmplitudeTier, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classAmplitudeTier, 0, U"To IntensityTier...", nullptr, 0, DO_AmplitudeTier_to_IntensityTier);
+	praat_addAction1 (classAmplitudeTier, 0, U"Down to PointProcess", nullptr, 0, DO_AmplitudeTier_downto_PointProcess);
+	praat_addAction1 (classAmplitudeTier, 0, U"Down to TableOfReal", nullptr, 0, DO_AmplitudeTier_downto_TableOfReal);
+
+	praat_addAction1 (classCochleagram, 0, U"Cochleagram help", nullptr, 0, DO_Cochleagram_help);
+	praat_addAction1 (classCochleagram, 1, U"Movie", nullptr, 0, DO_Cochleagram_movie);
+praat_addAction1 (classCochleagram, 0, U"Info", nullptr, 0, nullptr);
+	praat_addAction1 (classCochleagram, 2, U"Difference...", nullptr, 0, DO_Cochleagram_difference);
+praat_addAction1 (classCochleagram, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classCochleagram, 0, U"Paint...", nullptr, 0, DO_Cochleagram_paint);
+praat_addAction1 (classCochleagram, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classCochleagram, 0, U"Formula...", nullptr, 0, DO_Cochleagram_formula);
+praat_addAction1 (classCochleagram, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classCochleagram, 0, U"To Excitation (slice)...", nullptr, 0, DO_Cochleagram_to_Excitation);
+praat_addAction1 (classCochleagram, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classCochleagram, 0, U"To Matrix", nullptr, 0, DO_Cochleagram_to_Matrix);
+
+	praat_addAction1 (classCorpus, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Corpus_edit);
+
+praat_addAction1 (classDistributions, 0, U"Learn", nullptr, 0, nullptr);
+	praat_addAction1 (classDistributions, 1, U"To Transition...", nullptr, 0, DO_Distributions_to_Transition);
+	praat_addAction1 (classDistributions, 2, U"To Transition (noise)...", nullptr, 0, DO_Distributions_to_Transition_noise);
+
+	praat_addAction1 (classDurationTier, 0, U"DurationTier help", nullptr, 0, DO_DurationTier_help);
+	praat_addAction1 (classDurationTier, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_DurationTier_edit);
+	praat_addAction1 (classDurationTier, 1, U"Edit", nullptr, praat_HIDDEN, DO_DurationTier_edit);
+	praat_addAction1 (classDurationTier, 0, U"View & Edit with Sound?", nullptr, 0, DO_info_DurationTier_Sound_edit);
+	praat_addAction1 (classDurationTier, 0, U"& Manipulation: Replace?", nullptr, 0, DO_info_DurationTier_Manipulation_replace);
+	praat_addAction1 (classDurationTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classDurationTier);
-		praat_addAction1 (classDurationTier, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classDurationTier, 1, U"Get value at time...", 0, 1, DO_DurationTier_getValueAtTime);
-		praat_addAction1 (classDurationTier, 1, U"Get value at index...", 0, 1, DO_DurationTier_getValueAtIndex);
-		praat_addAction1 (classDurationTier, 1, U"Get target duration...", 0, 1, DO_DurationTier_getTargetDuration);
-	praat_addAction1 (classDurationTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classDurationTier, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classDurationTier, 1, U"Get value at time...", nullptr, 1, DO_DurationTier_getValueAtTime);
+		praat_addAction1 (classDurationTier, 1, U"Get value at index...", nullptr, 1, DO_DurationTier_getValueAtIndex);
+		praat_addAction1 (classDurationTier, 1, U"Get target duration...", nullptr, 1, DO_DurationTier_getTargetDuration);
+	praat_addAction1 (classDurationTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classDurationTier);
-		praat_addAction1 (classDurationTier, 0, U"Add point...", 0, 1, DO_DurationTier_addPoint);
-		praat_addAction1 (classDurationTier, 0, U"Formula...", 0, 1, DO_DurationTier_formula);
-praat_addAction1 (classDurationTier, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classDurationTier, 0, U"Down to PointProcess", 0, 0, DO_DurationTier_downto_PointProcess);
-
-	praat_addAction1 (classExcitation, 0, U"Excitation help", 0, 0, DO_Excitation_help);
-praat_addAction1 (classExcitation, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classExcitation, 0, U"Draw...", 0, 0, DO_Excitation_draw);
-praat_addAction1 (classExcitation, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classExcitation, 0, U"To Formant...", 0, 0, DO_Excitation_to_Formant);
-praat_addAction1 (classExcitation, 1, U"Query -", 0, 0, 0);
-	praat_addAction1 (classExcitation, 1, U"Get loudness", 0, 0, DO_Excitation_getLoudness);
-praat_addAction1 (classExcitation, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classExcitation, 0, U"Formula...", 0, 0, DO_Excitation_formula);
-praat_addAction1 (classExcitation, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classExcitation, 0, U"To Matrix", 0, 0, DO_Excitation_to_Matrix);
-
-	praat_addAction1 (classFormant, 0, U"Formant help", 0, 0, DO_Formant_help);
-	praat_addAction1 (classFormant, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classFormant, 0, U"Speckle...", 0, 1, DO_Formant_drawSpeckles);
-		praat_addAction1 (classFormant, 0, U"Draw tracks...", 0, 1, DO_Formant_drawTracks);
-		praat_addAction1 (classFormant, 0, U"Scatter plot...", 0, 1, DO_Formant_scatterPlot);
-	praat_addAction1 (classFormant, 0, U"Tabulate -", 0, 0, 0);
-		praat_addAction1 (classFormant, 1, U"List...", 0, 1, DO_Formant_list);
-		praat_addAction1 (classFormant, 0, U"Down to Table...", 0, 1, DO_Formant_downto_Table);
-	praat_addAction1 (classFormant, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classDurationTier, 0, U"Add point...", nullptr, 1, DO_DurationTier_addPoint);
+		praat_addAction1 (classDurationTier, 0, U"Formula...", nullptr, 1, DO_DurationTier_formula);
+praat_addAction1 (classDurationTier, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classDurationTier, 0, U"Down to PointProcess", nullptr, 0, DO_DurationTier_downto_PointProcess);
+
+	praat_addAction1 (classExcitation, 0, U"Excitation help", nullptr, 0, DO_Excitation_help);
+praat_addAction1 (classExcitation, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classExcitation, 0, U"Draw...", nullptr, 0, DO_Excitation_draw);
+praat_addAction1 (classExcitation, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classExcitation, 0, U"To Formant...", nullptr, 0, DO_Excitation_to_Formant);
+praat_addAction1 (classExcitation, 1, U"Query -", nullptr, 0, nullptr);
+	praat_addAction1 (classExcitation, 1, U"Get loudness", nullptr, 0, DO_Excitation_getLoudness);
+praat_addAction1 (classExcitation, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classExcitation, 0, U"Formula...", nullptr, 0, DO_Excitation_formula);
+praat_addAction1 (classExcitation, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classExcitation, 0, U"To Matrix", nullptr, 0, DO_Excitation_to_Matrix);
+
+	praat_addAction1 (classFormant, 0, U"Formant help", nullptr, 0, DO_Formant_help);
+	praat_addAction1 (classFormant, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classFormant, 0, U"Speckle...", nullptr, 1, DO_Formant_drawSpeckles);
+		praat_addAction1 (classFormant, 0, U"Draw tracks...", nullptr, 1, DO_Formant_drawTracks);
+		praat_addAction1 (classFormant, 0, U"Scatter plot...", nullptr, 1, DO_Formant_scatterPlot);
+	praat_addAction1 (classFormant, 0, U"Tabulate -", nullptr, 0, nullptr);
+		praat_addAction1 (classFormant, 1, U"List...", nullptr, 1, DO_Formant_list);
+		praat_addAction1 (classFormant, 0, U"Down to Table...", nullptr, 1, DO_Formant_downto_Table);
+	praat_addAction1 (classFormant, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFrameSampled_query_init (classFormant);
-		praat_addAction1 (classFormant, 1, U"Get number of formants...", 0, 1, DO_Formant_getNumberOfFormants);
-		praat_addAction1 (classFormant, 1, U"Get minimum number of formants", 0, 1, DO_Formant_getMinimumNumberOfFormants);
-		praat_addAction1 (classFormant, 1, U"Get maximum number of formants", 0, 1, DO_Formant_getMaximumNumberOfFormants);
-		praat_addAction1 (classFormant, 1, U"-- get value --", 0, 1, 0);
-		praat_addAction1 (classFormant, 1, U"Get value at time...", 0, 1, DO_Formant_getValueAtTime);
-		praat_addAction1 (classFormant, 1, U"Get bandwidth at time...", 0, 1, DO_Formant_getBandwidthAtTime);
-		praat_addAction1 (classFormant, 1, U"-- get extreme --", 0, 1, 0);
-		praat_addAction1 (classFormant, 1, U"Get minimum...", 0, 1, DO_Formant_getMinimum);
-		praat_addAction1 (classFormant, 1, U"Get time of minimum...", 0, 1, DO_Formant_getTimeOfMinimum);
-		praat_addAction1 (classFormant, 1, U"Get maximum...", 0, 1, DO_Formant_getMaximum);
-		praat_addAction1 (classFormant, 1, U"Get time of maximum...", 0, 1, DO_Formant_getTimeOfMaximum);
-		praat_addAction1 (classFormant, 1, U"-- get distribution --", 0, 1, 0);
-		praat_addAction1 (classFormant, 1, U"Get quantile...", 0, 1, DO_Formant_getQuantile);
-		praat_addAction1 (classFormant, 1, U"Get quantile of bandwidth...", 0, 1, DO_Formant_getQuantileOfBandwidth);
-		praat_addAction1 (classFormant, 1, U"Get mean...", 0, 1, DO_Formant_getMean);
-		praat_addAction1 (classFormant, 1, U"Get standard deviation...", 0, 1, DO_Formant_getStandardDeviation);
-	praat_addAction1 (classFormant, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classFormant, 1, U"Get number of formants...", nullptr, 1, DO_Formant_getNumberOfFormants);
+		praat_addAction1 (classFormant, 1, U"Get minimum number of formants", nullptr, 1, DO_Formant_getMinimumNumberOfFormants);
+		praat_addAction1 (classFormant, 1, U"Get maximum number of formants", nullptr, 1, DO_Formant_getMaximumNumberOfFormants);
+		praat_addAction1 (classFormant, 1, U"-- get value --", nullptr, 1, nullptr);
+		praat_addAction1 (classFormant, 1, U"Get value at time...", nullptr, 1, DO_Formant_getValueAtTime);
+		praat_addAction1 (classFormant, 1, U"Get bandwidth at time...", nullptr, 1, DO_Formant_getBandwidthAtTime);
+		praat_addAction1 (classFormant, 1, U"-- get extreme --", nullptr, 1, nullptr);
+		praat_addAction1 (classFormant, 1, U"Get minimum...", nullptr, 1, DO_Formant_getMinimum);
+		praat_addAction1 (classFormant, 1, U"Get time of minimum...", nullptr, 1, DO_Formant_getTimeOfMinimum);
+		praat_addAction1 (classFormant, 1, U"Get maximum...", nullptr, 1, DO_Formant_getMaximum);
+		praat_addAction1 (classFormant, 1, U"Get time of maximum...", nullptr, 1, DO_Formant_getTimeOfMaximum);
+		praat_addAction1 (classFormant, 1, U"-- get distribution --", nullptr, 1, nullptr);
+		praat_addAction1 (classFormant, 1, U"Get quantile...", nullptr, 1, DO_Formant_getQuantile);
+		praat_addAction1 (classFormant, 1, U"Get quantile of bandwidth...", nullptr, 1, DO_Formant_getQuantileOfBandwidth);
+		praat_addAction1 (classFormant, 1, U"Get mean...", nullptr, 1, DO_Formant_getMean);
+		praat_addAction1 (classFormant, 1, U"Get standard deviation...", nullptr, 1, DO_Formant_getStandardDeviation);
+	praat_addAction1 (classFormant, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classFormant);
-		praat_addAction1 (classFormant, 0, U"Sort", 0, 1, DO_Formant_sort);
-		praat_addAction1 (classFormant, 0, U"Formula (frequencies)...", 0, 1, DO_Formant_formula_frequencies);
-		praat_addAction1 (classFormant, 0, U"Formula (bandwidths)...", 0, 1, DO_Formant_formula_bandwidths);
-praat_addAction1 (classFormant, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classFormant, 0, U"Track...", 0, 0, DO_Formant_tracker);
-	praat_addAction1 (classFormant, 0, U"Down to FormantTier", 0, praat_HIDDEN, DO_Formant_downto_FormantTier);
-	praat_addAction1 (classFormant, 0, U"Down to FormantGrid", 0, 0, DO_Formant_downto_FormantGrid);
-praat_addAction1 (classFormant, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classFormant, 0, U"To Matrix...", 0, 0, DO_Formant_to_Matrix);
-
-	praat_addAction1 (classFormantGrid, 0, U"FormantGrid help", 0, 0, DO_FormantGrid_help);
-	praat_addAction1 (classFormantGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_FormantGrid_edit);
-	praat_addAction1 (classFormantGrid, 1, U"Edit", 0, praat_HIDDEN, DO_FormantGrid_edit);
-	praat_addAction1 (classFormantGrid, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classFormant, 0, U"Sort", nullptr, 1, DO_Formant_sort);
+		praat_addAction1 (classFormant, 0, U"Formula (frequencies)...", nullptr, 1, DO_Formant_formula_frequencies);
+		praat_addAction1 (classFormant, 0, U"Formula (bandwidths)...", nullptr, 1, DO_Formant_formula_bandwidths);
+praat_addAction1 (classFormant, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classFormant, 0, U"Track...", nullptr, 0, DO_Formant_tracker);
+	praat_addAction1 (classFormant, 0, U"Down to FormantTier", nullptr, praat_HIDDEN, DO_Formant_downto_FormantTier);
+	praat_addAction1 (classFormant, 0, U"Down to FormantGrid", nullptr, 0, DO_Formant_downto_FormantGrid);
+praat_addAction1 (classFormant, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classFormant, 0, U"To Matrix...", nullptr, 0, DO_Formant_to_Matrix);
+
+	praat_addAction1 (classFormantGrid, 0, U"FormantGrid help", nullptr, 0, DO_FormantGrid_help);
+	praat_addAction1 (classFormantGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_FormantGrid_edit);
+	praat_addAction1 (classFormantGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_FormantGrid_edit);
+	praat_addAction1 (classFormantGrid, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classFormantGrid);
-		praat_addAction1 (classFormantGrid, 0, U"Formula (frequencies)...", 0, 1, DO_FormantGrid_formula_frequencies);
-		//praat_addAction1 (classFormantGrid, 0, U"Formula (bandwidths)...", 0, 1, DO_FormantGrid_formula_bandwidths);
-		praat_addAction1 (classFormantGrid, 0, U"Add formant point...", 0, 1, DO_FormantGrid_addFormantPoint);
-		praat_addAction1 (classFormantGrid, 0, U"Add bandwidth point...", 0, 1, DO_FormantGrid_addBandwidthPoint);
-		praat_addAction1 (classFormantGrid, 0, U"Remove formant points between...", 0, 1, DO_FormantGrid_removeFormantPointsBetween);
-		praat_addAction1 (classFormantGrid, 0, U"Remove bandwidth points between...", 0, 1, DO_FormantGrid_removeBandwidthPointsBetween);
-	praat_addAction1 (classFormantGrid, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classFormantGrid, 0, U"To Formant...", 0, 1, DO_FormantGrid_to_Formant);
-
-	praat_addAction1 (classFormantTier, 0, U"FormantTier help", 0, 0, DO_FormantTier_help);
-	praat_addAction1 (classFormantTier, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classFormantTier, 0, U"Speckle...", 0, 1, DO_FormantTier_speckle);
-	praat_addAction1 (classFormantTier, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classFormantGrid, 0, U"Formula (frequencies)...", nullptr, 1, DO_FormantGrid_formula_frequencies);
+		//praat_addAction1 (classFormantGrid, 0, U"Formula (bandwidths)...", nullptr, 1, DO_FormantGrid_formula_bandwidths);
+		praat_addAction1 (classFormantGrid, 0, U"Add formant point...", nullptr, 1, DO_FormantGrid_addFormantPoint);
+		praat_addAction1 (classFormantGrid, 0, U"Add bandwidth point...", nullptr, 1, DO_FormantGrid_addBandwidthPoint);
+		praat_addAction1 (classFormantGrid, 0, U"Remove formant points between...", nullptr, 1, DO_FormantGrid_removeFormantPointsBetween);
+		praat_addAction1 (classFormantGrid, 0, U"Remove bandwidth points between...", nullptr, 1, DO_FormantGrid_removeBandwidthPointsBetween);
+	praat_addAction1 (classFormantGrid, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classFormantGrid, 0, U"To Formant...", nullptr, 1, DO_FormantGrid_to_Formant);
+
+	praat_addAction1 (classFormantTier, 0, U"FormantTier help", nullptr, 0, DO_FormantTier_help);
+	praat_addAction1 (classFormantTier, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classFormantTier, 0, U"Speckle...", nullptr, 1, DO_FormantTier_speckle);
+	praat_addAction1 (classFormantTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classFormantTier);
-		praat_addAction1 (classFormantTier, 1, U"-- get value --", 0, 1, 0);
-		praat_addAction1 (classFormantTier, 1, U"Get value at time...", 0, 1, DO_FormantTier_getValueAtTime);
-		praat_addAction1 (classFormantTier, 1, U"Get bandwidth at time...", 0, 1, DO_FormantTier_getBandwidthAtTime);
-	praat_addAction1 (classFormantTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classFormantTier, 1, U"-- get value --", nullptr, 1, nullptr);
+		praat_addAction1 (classFormantTier, 1, U"Get value at time...", nullptr, 1, DO_FormantTier_getValueAtTime);
+		praat_addAction1 (classFormantTier, 1, U"Get bandwidth at time...", nullptr, 1, DO_FormantTier_getBandwidthAtTime);
+	praat_addAction1 (classFormantTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classFormantTier);
-		praat_addAction1 (classFormantTier, 0, U"Add point...", 0, 1, DO_FormantTier_addPoint);
-praat_addAction1 (classFormantTier, 0, U"Down", 0, 0, 0);
-	praat_addAction1 (classFormantTier, 0, U"Down to TableOfReal...", 0, 0, DO_FormantTier_downto_TableOfReal);
-
-	praat_addAction1 (classHarmonicity, 0, U"Harmonicity help", 0, 0, DO_Harmonicity_help);
-	praat_addAction1 (classHarmonicity, 0, U"Draw", 0, 0, 0);
-		praat_addAction1 (classHarmonicity, 0, U"Draw...", 0, 0, DO_Harmonicity_draw);
-	praat_addAction1 (classHarmonicity, 1, U"Query -", 0, 0, 0);
+		praat_addAction1 (classFormantTier, 0, U"Add point...", nullptr, 1, DO_FormantTier_addPoint);
+praat_addAction1 (classFormantTier, 0, U"Down", nullptr, 0, nullptr);
+	praat_addAction1 (classFormantTier, 0, U"Down to TableOfReal...", nullptr, 0, DO_FormantTier_downto_TableOfReal);
+
+	praat_addAction1 (classHarmonicity, 0, U"Harmonicity help", nullptr, 0, DO_Harmonicity_help);
+	praat_addAction1 (classHarmonicity, 0, U"Draw", nullptr, 0, nullptr);
+		praat_addAction1 (classHarmonicity, 0, U"Draw...", nullptr, 0, DO_Harmonicity_draw);
+	praat_addAction1 (classHarmonicity, 1, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFrameSampled_query_init (classHarmonicity);
-		praat_addAction1 (classHarmonicity, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classHarmonicity, 1, U"Get value at time...", 0, 1, DO_Harmonicity_getValueAtTime);
-		praat_addAction1 (classHarmonicity, 1, U"Get value in frame...", 0, 1, DO_Harmonicity_getValueInFrame);
-		praat_addAction1 (classHarmonicity, 1, U"-- get extreme --", 0, 1, 0);
-		praat_addAction1 (classHarmonicity, 1, U"Get minimum...", 0, 1, DO_Harmonicity_getMinimum);
-		praat_addAction1 (classHarmonicity, 1, U"Get time of minimum...", 0, 1, DO_Harmonicity_getTimeOfMinimum);
-		praat_addAction1 (classHarmonicity, 1, U"Get maximum...", 0, 1, DO_Harmonicity_getMaximum);
-		praat_addAction1 (classHarmonicity, 1, U"Get time of maximum...", 0, 1, DO_Harmonicity_getTimeOfMaximum);
-		praat_addAction1 (classHarmonicity, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classHarmonicity, 1, U"Get mean...", 0, 1, DO_Harmonicity_getMean);
-		praat_addAction1 (classHarmonicity, 1, U"Get standard deviation...", 0, 1, DO_Harmonicity_getStandardDeviation);
-	praat_addAction1 (classHarmonicity, 0, U"Modify", 0, 0, 0);
+		praat_addAction1 (classHarmonicity, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classHarmonicity, 1, U"Get value at time...", nullptr, 1, DO_Harmonicity_getValueAtTime);
+		praat_addAction1 (classHarmonicity, 1, U"Get value in frame...", nullptr, 1, DO_Harmonicity_getValueInFrame);
+		praat_addAction1 (classHarmonicity, 1, U"-- get extreme --", nullptr, 1, nullptr);
+		praat_addAction1 (classHarmonicity, 1, U"Get minimum...", nullptr, 1, DO_Harmonicity_getMinimum);
+		praat_addAction1 (classHarmonicity, 1, U"Get time of minimum...", nullptr, 1, DO_Harmonicity_getTimeOfMinimum);
+		praat_addAction1 (classHarmonicity, 1, U"Get maximum...", nullptr, 1, DO_Harmonicity_getMaximum);
+		praat_addAction1 (classHarmonicity, 1, U"Get time of maximum...", nullptr, 1, DO_Harmonicity_getTimeOfMaximum);
+		praat_addAction1 (classHarmonicity, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classHarmonicity, 1, U"Get mean...", nullptr, 1, DO_Harmonicity_getMean);
+		praat_addAction1 (classHarmonicity, 1, U"Get standard deviation...", nullptr, 1, DO_Harmonicity_getStandardDeviation);
+	praat_addAction1 (classHarmonicity, 0, U"Modify", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classHarmonicity);
-		praat_addAction1 (classHarmonicity, 0, U"Formula...", 0, 0, DO_Harmonicity_formula);
-	praat_addAction1 (classHarmonicity, 0, U"Hack", 0, 0, 0);
-		praat_addAction1 (classHarmonicity, 0, U"To Matrix", 0, 0, DO_Harmonicity_to_Matrix);
+		praat_addAction1 (classHarmonicity, 0, U"Formula...", nullptr, 0, DO_Harmonicity_formula);
+	praat_addAction1 (classHarmonicity, 0, U"Hack", nullptr, 0, nullptr);
+		praat_addAction1 (classHarmonicity, 0, U"To Matrix", nullptr, 0, DO_Harmonicity_to_Matrix);
 
-	praat_addAction1 (classIntensity, 0, U"Intensity help", 0, 0, DO_Intensity_help);
-	praat_addAction1 (classIntensity, 0, U"Draw...", 0, 0, DO_Intensity_draw);
-	praat_addAction1 (classIntensity, 1, U"Query -", 0, 0, 0);
+	praat_addAction1 (classIntensity, 0, U"Intensity help", nullptr, 0, DO_Intensity_help);
+	praat_addAction1 (classIntensity, 0, U"Draw...", nullptr, 0, DO_Intensity_draw);
+	praat_addAction1 (classIntensity, 1, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFrameSampled_query_init (classIntensity);
-		praat_addAction1 (classIntensity, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classIntensity, 1, U"Get value at time...", 0, 1, DO_Intensity_getValueAtTime);
-		praat_addAction1 (classIntensity, 1, U"Get value in frame...", 0, 1, DO_Intensity_getValueInFrame);
-		praat_addAction1 (classIntensity, 1, U"-- get extreme --", 0, 1, 0);
-		praat_addAction1 (classIntensity, 1, U"Get minimum...", 0, 1, DO_Intensity_getMinimum);
-		praat_addAction1 (classIntensity, 1, U"Get time of minimum...", 0, 1, DO_Intensity_getTimeOfMinimum);
-		praat_addAction1 (classIntensity, 1, U"Get maximum...", 0, 1, DO_Intensity_getMaximum);
-		praat_addAction1 (classIntensity, 1, U"Get time of maximum...", 0, 1, DO_Intensity_getTimeOfMaximum);
-		praat_addAction1 (classIntensity, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classIntensity, 1, U"Get quantile...", 0, 1, DO_Intensity_getQuantile);
-		praat_addAction1 (classIntensity, 1, U"Get mean...", 0, 1, DO_Intensity_getMean);
-		praat_addAction1 (classIntensity, 1, U"Get standard deviation...", 0, 1, DO_Intensity_getStandardDeviation);
-	praat_addAction1 (classIntensity, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classIntensity, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classIntensity, 1, U"Get value at time...", nullptr, 1, DO_Intensity_getValueAtTime);
+		praat_addAction1 (classIntensity, 1, U"Get value in frame...", nullptr, 1, DO_Intensity_getValueInFrame);
+		praat_addAction1 (classIntensity, 1, U"-- get extreme --", nullptr, 1, nullptr);
+		praat_addAction1 (classIntensity, 1, U"Get minimum...", nullptr, 1, DO_Intensity_getMinimum);
+		praat_addAction1 (classIntensity, 1, U"Get time of minimum...", nullptr, 1, DO_Intensity_getTimeOfMinimum);
+		praat_addAction1 (classIntensity, 1, U"Get maximum...", nullptr, 1, DO_Intensity_getMaximum);
+		praat_addAction1 (classIntensity, 1, U"Get time of maximum...", nullptr, 1, DO_Intensity_getTimeOfMaximum);
+		praat_addAction1 (classIntensity, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classIntensity, 1, U"Get quantile...", nullptr, 1, DO_Intensity_getQuantile);
+		praat_addAction1 (classIntensity, 1, U"Get mean...", nullptr, 1, DO_Intensity_getMean);
+		praat_addAction1 (classIntensity, 1, U"Get standard deviation...", nullptr, 1, DO_Intensity_getStandardDeviation);
+	praat_addAction1 (classIntensity, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classIntensity);
-		praat_addAction1 (classIntensity, 0, U"Formula...", 0, 1, DO_Intensity_formula);
-	praat_addAction1 (classIntensity, 0, U"Analyse", 0, 0, 0);
-		praat_addAction1 (classIntensity, 0, U"To IntensityTier (peaks)", 0, 0, DO_Intensity_to_IntensityTier_peaks);
-		praat_addAction1 (classIntensity, 0, U"To IntensityTier (valleys)", 0, 0, DO_Intensity_to_IntensityTier_valleys);
-	praat_addAction1 (classIntensity, 0, U"Convert", 0, 0, 0);
-		praat_addAction1 (classIntensity, 0, U"Down to IntensityTier", 0, 0, DO_Intensity_downto_IntensityTier);
-		praat_addAction1 (classIntensity, 0, U"Down to Matrix", 0, 0, DO_Intensity_downto_Matrix);
-
-	praat_addAction1 (classIntensityTier, 0, U"IntensityTier help", 0, 0, DO_IntensityTier_help);
-	praat_addAction1 (classIntensityTier, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_IntensityTier_edit);
-	praat_addAction1 (classIntensityTier, 1, U"Edit", 0, praat_HIDDEN, DO_IntensityTier_edit);
-	praat_addAction1 (classIntensityTier, 0, U"View & Edit with Sound?", 0, 0, DO_info_IntensityTier_Sound_edit);
-	praat_addAction1 (classIntensityTier, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classIntensity, 0, U"Formula...", nullptr, 1, DO_Intensity_formula);
+	praat_addAction1 (classIntensity, 0, U"Analyse", nullptr, 0, nullptr);
+		praat_addAction1 (classIntensity, 0, U"To IntensityTier (peaks)", nullptr, 0, DO_Intensity_to_IntensityTier_peaks);
+		praat_addAction1 (classIntensity, 0, U"To IntensityTier (valleys)", nullptr, 0, DO_Intensity_to_IntensityTier_valleys);
+	praat_addAction1 (classIntensity, 0, U"Convert", nullptr, 0, nullptr);
+		praat_addAction1 (classIntensity, 0, U"Down to IntensityTier", nullptr, 0, DO_Intensity_downto_IntensityTier);
+		praat_addAction1 (classIntensity, 0, U"Down to Matrix", nullptr, 0, DO_Intensity_downto_Matrix);
+
+	praat_addAction1 (classIntensityTier, 0, U"IntensityTier help", nullptr, 0, DO_IntensityTier_help);
+	praat_addAction1 (classIntensityTier, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_IntensityTier_edit);
+	praat_addAction1 (classIntensityTier, 1, U"Edit", nullptr, praat_HIDDEN, DO_IntensityTier_edit);
+	praat_addAction1 (classIntensityTier, 0, U"View & Edit with Sound?", nullptr, 0, DO_info_IntensityTier_Sound_edit);
+	praat_addAction1 (classIntensityTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classIntensityTier);
-		praat_addAction1 (classIntensityTier, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classIntensityTier, 1, U"Get value at time...", 0, 1, DO_IntensityTier_getValueAtTime);
-		praat_addAction1 (classIntensityTier, 1, U"Get value at index...", 0, 1, DO_IntensityTier_getValueAtIndex);
-	praat_addAction1 (classIntensityTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classIntensityTier, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classIntensityTier, 1, U"Get value at time...", nullptr, 1, DO_IntensityTier_getValueAtTime);
+		praat_addAction1 (classIntensityTier, 1, U"Get value at index...", nullptr, 1, DO_IntensityTier_getValueAtIndex);
+	praat_addAction1 (classIntensityTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classIntensityTier);
-		praat_addAction1 (classIntensityTier, 0, U"Add point...", 0, 1, DO_IntensityTier_addPoint);
-		praat_addAction1 (classIntensityTier, 0, U"Formula...", 0, 1, DO_IntensityTier_formula);
-praat_addAction1 (classIntensityTier, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classIntensityTier, 0, U"To AmplitudeTier", 0, 0, DO_IntensityTier_to_AmplitudeTier);
-	praat_addAction1 (classIntensityTier, 0, U"Down to PointProcess", 0, 0, DO_IntensityTier_downto_PointProcess);
-	praat_addAction1 (classIntensityTier, 0, U"Down to TableOfReal", 0, 0, DO_IntensityTier_downto_TableOfReal);
-
-	praat_addAction1 (classLtas, 0, U"Ltas help", 0, 0, DO_Ltas_help);
-	praat_addAction1 (classLtas, 0, U"Draw...", 0, 0, DO_Ltas_draw);
-	praat_addAction1 (classLtas, 1, U"Query -", 0, 0, 0);
-		praat_addAction1 (classLtas, 1, U"Frequency domain", 0, 1, 0);
-		praat_addAction1 (classLtas, 1, U"Get lowest frequency", 0, 2, DO_Ltas_getLowestFrequency);
-		praat_addAction1 (classLtas, 1, U"Get highest frequency", 0, 2, DO_Ltas_getHighestFrequency);
-		praat_addAction1 (classLtas, 1, U"Frequency sampling", 0, 1, 0);
-		praat_addAction1 (classLtas, 1, U"Get number of bins", 0, 2, DO_Ltas_getNumberOfBins);
-			praat_addAction1 (classLtas, 1, U"Get number of bands", 0, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getNumberOfBins);
-		praat_addAction1 (classLtas, 1, U"Get bin width", 0, 2, DO_Ltas_getBinWidth);
-			praat_addAction1 (classLtas, 1, U"Get band width", 0, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getBinWidth);
-		praat_addAction1 (classLtas, 1, U"Get frequency from bin number...", 0, 2, DO_Ltas_getFrequencyFromBinNumber);
-			praat_addAction1 (classLtas, 1, U"Get frequency from band...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getFrequencyFromBinNumber);
-		praat_addAction1 (classLtas, 1, U"Get bin number from frequency...", 0, 2, DO_Ltas_getBinNumberFromFrequency);
-			praat_addAction1 (classLtas, 1, U"Get band from frequency...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getBinNumberFromFrequency);
-		praat_addAction1 (classLtas, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classLtas, 1, U"Get value at frequency...", 0, 1, DO_Ltas_getValueAtFrequency);
-		praat_addAction1 (classLtas, 1, U"Get value in bin...", 0, 1, DO_Ltas_getValueInBin);
-			praat_addAction1 (classLtas, 1, U"Get value in band...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Ltas_getValueInBin);
-		praat_addAction1 (classLtas, 1, U"-- get extreme --", 0, 1, 0);
-		praat_addAction1 (classLtas, 1, U"Get minimum...", 0, 1, DO_Ltas_getMinimum);
-		praat_addAction1 (classLtas, 1, U"Get frequency of minimum...", 0, 1, DO_Ltas_getFrequencyOfMinimum);
-		praat_addAction1 (classLtas, 1, U"Get maximum...", 0, 1, DO_Ltas_getMaximum);
-		praat_addAction1 (classLtas, 1, U"Get frequency of maximum...", 0, 1, DO_Ltas_getFrequencyOfMaximum);
-		praat_addAction1 (classLtas, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classLtas, 1, U"Get mean...", 0, 1, DO_Ltas_getMean);
-		praat_addAction1 (classLtas, 1, U"Get slope...", 0, 1, DO_Ltas_getSlope);
-		praat_addAction1 (classLtas, 1, U"Get local peak height...", 0, 1, DO_Ltas_getLocalPeakHeight);
-		praat_addAction1 (classLtas, 1, U"Get standard deviation...", 0, 1, DO_Ltas_getStandardDeviation);
-	praat_addAction1 (classLtas, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classLtas, 0, U"Formula...", 0, 0, DO_Ltas_formula);
-	praat_addAction1 (classLtas, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classLtas, 0, U"To SpectrumTier (peaks)", 0, 0, DO_Ltas_to_SpectrumTier_peaks);
-	praat_addAction1 (classLtas, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classLtas, 0, U"Compute trend line...", 0, 0, DO_Ltas_computeTrendLine);
-	praat_addAction1 (classLtas, 0, U"Subtract trend line...", 0, 0, DO_Ltas_subtractTrendLine);
-	praat_addAction1 (classLtas, 0, U"Combine", 0, 0, 0);
-	praat_addAction1 (classLtas, 0, U"Merge", 0, praat_HIDDEN, DO_Ltases_merge);
-	praat_addAction1 (classLtas, 0, U"Average", 0, 0, DO_Ltases_average);
-	praat_addAction1 (classLtas, 0, U"Hack", 0, 0, 0);
-	praat_addAction1 (classLtas, 0, U"To Matrix", 0, 0, DO_Ltas_to_Matrix);
-
-	praat_addAction1 (classManipulation, 0, U"Manipulation help", 0, 0, DO_Manipulation_help);
-	praat_addAction1 (classManipulation, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Manipulation_edit);
-	praat_addAction1 (classManipulation, 1, U"Edit", 0, praat_HIDDEN, DO_Manipulation_edit);
-	praat_addAction1 (classManipulation, 0, U"Play (overlap-add)", 0, 0, DO_Manipulation_play_overlapAdd);
-	praat_addAction1 (classManipulation, 0, U"Play (PSOLA)", 0, praat_HIDDEN, DO_Manipulation_play_overlapAdd);
-	praat_addAction1 (classManipulation, 0, U"Play (LPC)", 0, 0, DO_Manipulation_play_lpc);
-	praat_addAction1 (classManipulation, 0, U"Get resynthesis (overlap-add)", 0, 0, DO_Manipulation_getResynthesis_overlapAdd);
-	praat_addAction1 (classManipulation, 0, U"Get resynthesis (PSOLA)", 0, praat_HIDDEN, DO_Manipulation_getResynthesis_overlapAdd);
-	praat_addAction1 (classManipulation, 0, U"Get resynthesis (LPC)", 0, 0, DO_Manipulation_getResynthesis_lpc);
-	praat_addAction1 (classManipulation, 0, U"Extract original sound", 0, 0, DO_Manipulation_extractOriginalSound);
-	praat_addAction1 (classManipulation, 0, U"Extract pulses", 0, 0, DO_Manipulation_extractPulses);
-	praat_addAction1 (classManipulation, 0, U"Extract pitch tier", 0, 0, DO_Manipulation_extractPitchTier);
-	praat_addAction1 (classManipulation, 0, U"Extract duration tier", 0, 0, DO_Manipulation_extractDurationTier);
-	praat_addAction1 (classManipulation, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classIntensityTier, 0, U"Add point...", nullptr, 1, DO_IntensityTier_addPoint);
+		praat_addAction1 (classIntensityTier, 0, U"Formula...", nullptr, 1, DO_IntensityTier_formula);
+praat_addAction1 (classIntensityTier, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classIntensityTier, 0, U"To AmplitudeTier", nullptr, 0, DO_IntensityTier_to_AmplitudeTier);
+	praat_addAction1 (classIntensityTier, 0, U"Down to PointProcess", nullptr, 0, DO_IntensityTier_downto_PointProcess);
+	praat_addAction1 (classIntensityTier, 0, U"Down to TableOfReal", nullptr, 0, DO_IntensityTier_downto_TableOfReal);
+
+	praat_addAction1 (classLtas, 0, U"Ltas help", nullptr, 0, DO_Ltas_help);
+	praat_addAction1 (classLtas, 0, U"Draw...", nullptr, 0, DO_Ltas_draw);
+	praat_addAction1 (classLtas, 1, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classLtas, 1, U"Frequency domain", nullptr, 1, nullptr);
+		praat_addAction1 (classLtas, 1, U"Get lowest frequency", nullptr, 2, DO_Ltas_getLowestFrequency);
+		praat_addAction1 (classLtas, 1, U"Get highest frequency", nullptr, 2, DO_Ltas_getHighestFrequency);
+		praat_addAction1 (classLtas, 1, U"Frequency sampling", nullptr, 1, nullptr);
+		praat_addAction1 (classLtas, 1, U"Get number of bins", nullptr, 2, DO_Ltas_getNumberOfBins);
+			praat_addAction1 (classLtas, 1, U"Get number of bands", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getNumberOfBins);
+		praat_addAction1 (classLtas, 1, U"Get bin width", nullptr, 2, DO_Ltas_getBinWidth);
+			praat_addAction1 (classLtas, 1, U"Get band width", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getBinWidth);
+		praat_addAction1 (classLtas, 1, U"Get frequency from bin number...", nullptr, 2, DO_Ltas_getFrequencyFromBinNumber);
+			praat_addAction1 (classLtas, 1, U"Get frequency from band...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getFrequencyFromBinNumber);
+		praat_addAction1 (classLtas, 1, U"Get bin number from frequency...", nullptr, 2, DO_Ltas_getBinNumberFromFrequency);
+			praat_addAction1 (classLtas, 1, U"Get band from frequency...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Ltas_getBinNumberFromFrequency);
+		praat_addAction1 (classLtas, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classLtas, 1, U"Get value at frequency...", nullptr, 1, DO_Ltas_getValueAtFrequency);
+		praat_addAction1 (classLtas, 1, U"Get value in bin...", nullptr, 1, DO_Ltas_getValueInBin);
+			praat_addAction1 (classLtas, 1, U"Get value in band...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Ltas_getValueInBin);
+		praat_addAction1 (classLtas, 1, U"-- get extreme --", nullptr, 1, nullptr);
+		praat_addAction1 (classLtas, 1, U"Get minimum...", nullptr, 1, DO_Ltas_getMinimum);
+		praat_addAction1 (classLtas, 1, U"Get frequency of minimum...", nullptr, 1, DO_Ltas_getFrequencyOfMinimum);
+		praat_addAction1 (classLtas, 1, U"Get maximum...", nullptr, 1, DO_Ltas_getMaximum);
+		praat_addAction1 (classLtas, 1, U"Get frequency of maximum...", nullptr, 1, DO_Ltas_getFrequencyOfMaximum);
+		praat_addAction1 (classLtas, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classLtas, 1, U"Get mean...", nullptr, 1, DO_Ltas_getMean);
+		praat_addAction1 (classLtas, 1, U"Get slope...", nullptr, 1, DO_Ltas_getSlope);
+		praat_addAction1 (classLtas, 1, U"Get local peak height...", nullptr, 1, DO_Ltas_getLocalPeakHeight);
+		praat_addAction1 (classLtas, 1, U"Get standard deviation...", nullptr, 1, DO_Ltas_getStandardDeviation);
+	praat_addAction1 (classLtas, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classLtas, 0, U"Formula...", nullptr, 0, DO_Ltas_formula);
+	praat_addAction1 (classLtas, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classLtas, 0, U"To SpectrumTier (peaks)", nullptr, 0, DO_Ltas_to_SpectrumTier_peaks);
+	praat_addAction1 (classLtas, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classLtas, 0, U"Compute trend line...", nullptr, 0, DO_Ltas_computeTrendLine);
+	praat_addAction1 (classLtas, 0, U"Subtract trend line...", nullptr, 0, DO_Ltas_subtractTrendLine);
+	praat_addAction1 (classLtas, 0, U"Combine", nullptr, 0, nullptr);
+	praat_addAction1 (classLtas, 0, U"Merge", nullptr, praat_HIDDEN, DO_Ltases_merge);
+	praat_addAction1 (classLtas, 0, U"Average", nullptr, 0, DO_Ltases_average);
+	praat_addAction1 (classLtas, 0, U"Hack", nullptr, 0, nullptr);
+	praat_addAction1 (classLtas, 0, U"To Matrix", nullptr, 0, DO_Ltas_to_Matrix);
+
+	praat_addAction1 (classManipulation, 0, U"Manipulation help", nullptr, 0, DO_Manipulation_help);
+	praat_addAction1 (classManipulation, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Manipulation_edit);
+	praat_addAction1 (classManipulation, 1, U"Edit", nullptr, praat_HIDDEN, DO_Manipulation_edit);
+	praat_addAction1 (classManipulation, 0, U"Play (overlap-add)", nullptr, 0, DO_Manipulation_play_overlapAdd);
+	praat_addAction1 (classManipulation, 0, U"Play (PSOLA)", nullptr, praat_HIDDEN, DO_Manipulation_play_overlapAdd);
+	praat_addAction1 (classManipulation, 0, U"Play (LPC)", nullptr, 0, DO_Manipulation_play_lpc);
+	praat_addAction1 (classManipulation, 0, U"Get resynthesis (overlap-add)", nullptr, 0, DO_Manipulation_getResynthesis_overlapAdd);
+	praat_addAction1 (classManipulation, 0, U"Get resynthesis (PSOLA)", nullptr, praat_HIDDEN, DO_Manipulation_getResynthesis_overlapAdd);
+	praat_addAction1 (classManipulation, 0, U"Get resynthesis (LPC)", nullptr, 0, DO_Manipulation_getResynthesis_lpc);
+	praat_addAction1 (classManipulation, 0, U"Extract original sound", nullptr, 0, DO_Manipulation_extractOriginalSound);
+	praat_addAction1 (classManipulation, 0, U"Extract pulses", nullptr, 0, DO_Manipulation_extractPulses);
+	praat_addAction1 (classManipulation, 0, U"Extract pitch tier", nullptr, 0, DO_Manipulation_extractPitchTier);
+	praat_addAction1 (classManipulation, 0, U"Extract duration tier", nullptr, 0, DO_Manipulation_extractDurationTier);
+	praat_addAction1 (classManipulation, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classManipulation);
-		praat_addAction1 (classManipulation, 0, U"Replace pitch tier?", 0, 1, DO_Manipulation_replacePitchTier_help);
-		praat_addAction1 (classManipulation, 0, U"Replace duration tier?", 0, 1, DO_Manipulation_replaceDurationTier_help);
-	praat_addAction1 (classManipulation, 1, U"Save as text file without Sound...", 0, 0, DO_Manipulation_writeToTextFileWithoutSound);
-	praat_addAction1 (classManipulation, 1, U"Write to text file without Sound...", 0, praat_HIDDEN, DO_Manipulation_writeToTextFileWithoutSound);
-	praat_addAction1 (classManipulation, 1, U"Save as binary file without Sound...", 0, 0, DO_Manipulation_writeToBinaryFileWithoutSound);
-	praat_addAction1 (classManipulation, 1, U"Write to binary file without Sound...", 0, praat_HIDDEN, DO_Manipulation_writeToBinaryFileWithoutSound);
-
-	praat_addAction1 (classMatrix, 0, U"Matrix help", 0, 0, DO_Matrix_help);
-	praat_addAction1 (classMatrix, 1, U"Save as matrix text file...", 0, 0, DO_Matrix_writeToMatrixTextFile);
-	praat_addAction1 (classMatrix, 1, U"Write to matrix text file...", 0, praat_HIDDEN, DO_Matrix_writeToMatrixTextFile);
-	praat_addAction1 (classMatrix, 1, U"Save as headerless spreadsheet file...", 0, 0, DO_Matrix_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (classMatrix, 1, U"Write to headerless spreadsheet file...", 0, praat_HIDDEN, DO_Matrix_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (classMatrix, 1, U"Play movie", 0, 0, DO_Matrix_movie);
-	praat_addAction1 (classMatrix, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classMatrix, 0, U"Draw rows...", 0, 1, DO_Matrix_drawRows);
-		praat_addAction1 (classMatrix, 0, U"Draw one contour...", 0, 1, DO_Matrix_drawOneContour);
-		praat_addAction1 (classMatrix, 0, U"Draw contours...", 0, 1, DO_Matrix_drawContours);
-		praat_addAction1 (classMatrix, 0, U"Paint image...", 0, 1, DO_Matrix_paintImage);
-		praat_addAction1 (classMatrix, 0, U"Paint contours...", 0, 1, DO_Matrix_paintContours);
-		praat_addAction1 (classMatrix, 0, U"Paint cells...", 0, 1, DO_Matrix_paintCells);
-		praat_addAction1 (classMatrix, 0, U"Paint surface...", 0, 1, DO_Matrix_paintSurface);
-	praat_addAction1 (classMatrix, 1, U"Query -", 0, 0, 0);
-		praat_addAction1 (classMatrix, 1, U"Get lowest x", 0, 1, DO_Matrix_getLowestX);
-		praat_addAction1 (classMatrix, 1, U"Get highest x", 0, 1, DO_Matrix_getHighestX);
-		praat_addAction1 (classMatrix, 1, U"Get lowest y", 0, 1, DO_Matrix_getLowestY);
-		praat_addAction1 (classMatrix, 1, U"Get highest y", 0, 1, DO_Matrix_getHighestY);
-		praat_addAction1 (classMatrix, 1, U"-- get structure --", 0, 1, 0);
-		praat_addAction1 (classMatrix, 1, U"Get number of rows", 0, 1, DO_Matrix_getNumberOfRows);
-		praat_addAction1 (classMatrix, 1, U"Get number of columns", 0, 1, DO_Matrix_getNumberOfColumns);
-		praat_addAction1 (classMatrix, 1, U"Get row distance", 0, 1, DO_Matrix_getRowDistance);
-		praat_addAction1 (classMatrix, 1, U"Get column distance", 0, 1, DO_Matrix_getColumnDistance);
-		praat_addAction1 (classMatrix, 1, U"Get y of row...", 0, 1, DO_Matrix_getYofRow);
-		praat_addAction1 (classMatrix, 1, U"Get x of column...", 0, 1, DO_Matrix_getXofColumn);
-		praat_addAction1 (classMatrix, 1, U"-- get value --", 0, 1, 0);
-		praat_addAction1 (classMatrix, 1, U"Get value in cell...", 0, 1, DO_Matrix_getValueInCell);
-		praat_addAction1 (classMatrix, 1, U"Get value at xy...", 0, 1, DO_Matrix_getValueAtXY);
-		praat_addAction1 (classMatrix, 1, U"Get minimum", 0, 1, DO_Matrix_getMinimum);
-		praat_addAction1 (classMatrix, 1, U"Get maximum", 0, 1, DO_Matrix_getMaximum);
-		praat_addAction1 (classMatrix, 1, U"Get sum", 0, 1, DO_Matrix_getSum);
-	praat_addAction1 (classMatrix, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classMatrix, 0, U"Formula...", 0, 1, DO_Matrix_formula);
-		praat_addAction1 (classMatrix, 0, U"Set value...", 0, 1, DO_Matrix_setValue);
-praat_addAction1 (classMatrix, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classMatrix, 0, U"Eigen", 0, 0, DO_Matrix_eigen);
-	praat_addAction1 (classMatrix, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classMatrix, 0, U"Power...", 0, 0, DO_Matrix_power);
-	praat_addAction1 (classMatrix, 0, U"Combine two Matrices -", 0, 0, 0);
-		praat_addAction1 (classMatrix, 2, U"Merge (append rows)", 0, 1, DO_Matrix_appendRows);
-		praat_addAction1 (classMatrix, 2, U"To ParamCurve", 0, 1, DO_Matrix_to_ParamCurve);
-	praat_addAction1 (classMatrix, 0, U"Cast -", 0, 0, 0);
-		praat_addAction1 (classMatrix, 0, U"To Cochleagram", 0, 1, DO_Matrix_to_Cochleagram);
-		praat_addAction1 (classMatrix, 0, U"To Excitation", 0, 1, DO_Matrix_to_Excitation);
-		praat_addAction1 (classMatrix, 0, U"To Harmonicity", 0, 1, DO_Matrix_to_Harmonicity);
-		praat_addAction1 (classMatrix, 0, U"To Intensity", 0, 1, DO_Matrix_to_Intensity);
-		praat_addAction1 (classMatrix, 0, U"To Ltas", 0, 1, DO_Matrix_to_Ltas);
-		praat_addAction1 (classMatrix, 0, U"To Pitch", 0, 1, DO_Matrix_to_Pitch);
-		praat_addAction1 (classMatrix, 0, U"To PointProcess", 0, 1, DO_Matrix_to_PointProcess);
-		praat_addAction1 (classMatrix, 0, U"To Polygon", 0, 1, DO_Matrix_to_Polygon);
-		praat_addAction1 (classMatrix, 0, U"To Sound", 0, 1, DO_Matrix_to_Sound);
-		praat_addAction1 (classMatrix, 0, U"To Sound (slice)...", 0, 1, DO_Matrix_to_Sound_mono);
-		praat_addAction1 (classMatrix, 0, U"To Spectrogram", 0, 1, DO_Matrix_to_Spectrogram);
-		praat_addAction1 (classMatrix, 0, U"To TableOfReal", 0, 1, DO_Matrix_to_TableOfReal);
-		praat_addAction1 (classMatrix, 0, U"To Spectrum", 0, 1, DO_Matrix_to_Spectrum);
-		praat_addAction1 (classMatrix, 0, U"To Transition", 0, 1, DO_Matrix_to_Transition);
-		praat_addAction1 (classMatrix, 0, U"To VocalTract", 0, 1, DO_Matrix_to_VocalTract);
-
-	praat_addAction1 (classMovie, 1, U"Paint one image...", 0, 1, DO_Movie_paintOneImage);
-	praat_addAction1 (classMovie, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Movie_viewAndEdit);
-
-	praat_addAction1 (classParamCurve, 0, U"ParamCurve help", 0, 0, DO_ParamCurve_help);
-	praat_addAction1 (classParamCurve, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classParamCurve, 0, U"Draw...", 0, 0, DO_ParamCurve_draw);
-
-	praat_addAction1 (classPhoto, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classPhoto, 0, U"Paint image...", 0, 1, DO_Photo_paintImage);
-		praat_addAction1 (classPhoto, 0, U"Paint cells...", 0, 1, DO_Photo_paintCells);
-	praat_addAction1 (classPhoto, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classPhoto, 0, U"Formula (red)...", 0, 1, DO_Photo_formula_red);
-		praat_addAction1 (classPhoto, 0, U"Formula (green)...", 0, 1, DO_Photo_formula_green);
-		praat_addAction1 (classPhoto, 0, U"Formula (blue)...", 0, 1, DO_Photo_formula_blue);
-		praat_addAction1 (classPhoto, 0, U"Formula (transparency)...", 0, 1, DO_Photo_formula_transparency);
-	praat_addAction1 (classPhoto, 0, U"Extract -", 0, 0, 0);
-		praat_addAction1 (classPhoto, 0, U"Extract red", 0, 1, DO_Photo_extractRed);
-		praat_addAction1 (classPhoto, 0, U"Extract green", 0, 1, DO_Photo_extractGreen);
-		praat_addAction1 (classPhoto, 0, U"Extract blue", 0, 1, DO_Photo_extractBlue);
-		praat_addAction1 (classPhoto, 0, U"Extract transparency", 0, 1, DO_Photo_extractTransparency);
-	praat_addAction1 (classPhoto, 1, U"Save as PNG file...", 0, 0, DO_Photo_saveAsPNG);
+		praat_addAction1 (classManipulation, 0, U"Replace pitch tier?", nullptr, 1, DO_Manipulation_replacePitchTier_help);
+		praat_addAction1 (classManipulation, 0, U"Replace duration tier?", nullptr, 1, DO_Manipulation_replaceDurationTier_help);
+	praat_addAction1 (classManipulation, 1, U"Save as text file without Sound...", nullptr, 0, DO_Manipulation_writeToTextFileWithoutSound);
+	praat_addAction1 (classManipulation, 1, U"Write to text file without Sound...", nullptr, praat_HIDDEN, DO_Manipulation_writeToTextFileWithoutSound);
+	praat_addAction1 (classManipulation, 1, U"Save as binary file without Sound...", nullptr, 0, DO_Manipulation_writeToBinaryFileWithoutSound);
+	praat_addAction1 (classManipulation, 1, U"Write to binary file without Sound...", nullptr, praat_HIDDEN, DO_Manipulation_writeToBinaryFileWithoutSound);
+
+	praat_addAction1 (classMatrix, 0, U"Matrix help", nullptr, 0, DO_Matrix_help);
+	praat_addAction1 (classMatrix, 1, U"Save as matrix text file...", nullptr, 0, DO_Matrix_writeToMatrixTextFile);
+	praat_addAction1 (classMatrix, 1, U"Write to matrix text file...", nullptr, praat_HIDDEN, DO_Matrix_writeToMatrixTextFile);
+	praat_addAction1 (classMatrix, 1, U"Save as headerless spreadsheet file...", nullptr, 0, DO_Matrix_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (classMatrix, 1, U"Write to headerless spreadsheet file...", nullptr, praat_HIDDEN, DO_Matrix_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (classMatrix, 1, U"Play movie", nullptr, 0, DO_Matrix_movie);
+	praat_addAction1 (classMatrix, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classMatrix, 0, U"Draw rows...", nullptr, 1, DO_Matrix_drawRows);
+		praat_addAction1 (classMatrix, 0, U"Draw one contour...", nullptr, 1, DO_Matrix_drawOneContour);
+		praat_addAction1 (classMatrix, 0, U"Draw contours...", nullptr, 1, DO_Matrix_drawContours);
+		praat_addAction1 (classMatrix, 0, U"Paint image...", nullptr, 1, DO_Matrix_paintImage);
+		praat_addAction1 (classMatrix, 0, U"Paint contours...", nullptr, 1, DO_Matrix_paintContours);
+		praat_addAction1 (classMatrix, 0, U"Paint cells...", nullptr, 1, DO_Matrix_paintCells);
+		praat_addAction1 (classMatrix, 0, U"Paint surface...", nullptr, 1, DO_Matrix_paintSurface);
+	praat_addAction1 (classMatrix, 1, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classMatrix, 1, U"Get lowest x", nullptr, 1, DO_Matrix_getLowestX);
+		praat_addAction1 (classMatrix, 1, U"Get highest x", nullptr, 1, DO_Matrix_getHighestX);
+		praat_addAction1 (classMatrix, 1, U"Get lowest y", nullptr, 1, DO_Matrix_getLowestY);
+		praat_addAction1 (classMatrix, 1, U"Get highest y", nullptr, 1, DO_Matrix_getHighestY);
+		praat_addAction1 (classMatrix, 1, U"-- get structure --", nullptr, 1, nullptr);
+		praat_addAction1 (classMatrix, 1, U"Get number of rows", nullptr, 1, DO_Matrix_getNumberOfRows);
+		praat_addAction1 (classMatrix, 1, U"Get number of columns", nullptr, 1, DO_Matrix_getNumberOfColumns);
+		praat_addAction1 (classMatrix, 1, U"Get row distance", nullptr, 1, DO_Matrix_getRowDistance);
+		praat_addAction1 (classMatrix, 1, U"Get column distance", nullptr, 1, DO_Matrix_getColumnDistance);
+		praat_addAction1 (classMatrix, 1, U"Get y of row...", nullptr, 1, DO_Matrix_getYofRow);
+		praat_addAction1 (classMatrix, 1, U"Get x of column...", nullptr, 1, DO_Matrix_getXofColumn);
+		praat_addAction1 (classMatrix, 1, U"-- get value --", nullptr, 1, nullptr);
+		praat_addAction1 (classMatrix, 1, U"Get value in cell...", nullptr, 1, DO_Matrix_getValueInCell);
+		praat_addAction1 (classMatrix, 1, U"Get value at xy...", nullptr, 1, DO_Matrix_getValueAtXY);
+		praat_addAction1 (classMatrix, 1, U"Get minimum", nullptr, 1, DO_Matrix_getMinimum);
+		praat_addAction1 (classMatrix, 1, U"Get maximum", nullptr, 1, DO_Matrix_getMaximum);
+		praat_addAction1 (classMatrix, 1, U"Get sum", nullptr, 1, DO_Matrix_getSum);
+	praat_addAction1 (classMatrix, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classMatrix, 0, U"Formula...", nullptr, 1, DO_Matrix_formula);
+		praat_addAction1 (classMatrix, 0, U"Set value...", nullptr, 1, DO_Matrix_setValue);
+praat_addAction1 (classMatrix, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classMatrix, 0, U"Eigen", nullptr, 0, DO_Matrix_eigen);
+	praat_addAction1 (classMatrix, 0, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction1 (classMatrix, 0, U"Power...", nullptr, 0, DO_Matrix_power);
+	praat_addAction1 (classMatrix, 0, U"Combine two Matrices -", nullptr, 0, nullptr);
+		praat_addAction1 (classMatrix, 2, U"Merge (append rows)", nullptr, 1, DO_Matrix_appendRows);
+		praat_addAction1 (classMatrix, 2, U"To ParamCurve", nullptr, 1, DO_Matrix_to_ParamCurve);
+	praat_addAction1 (classMatrix, 0, U"Cast -", nullptr, 0, nullptr);
+		praat_addAction1 (classMatrix, 0, U"To Cochleagram", nullptr, 1, DO_Matrix_to_Cochleagram);
+		praat_addAction1 (classMatrix, 0, U"To Excitation", nullptr, 1, DO_Matrix_to_Excitation);
+		praat_addAction1 (classMatrix, 0, U"To Harmonicity", nullptr, 1, DO_Matrix_to_Harmonicity);
+		praat_addAction1 (classMatrix, 0, U"To Intensity", nullptr, 1, DO_Matrix_to_Intensity);
+		praat_addAction1 (classMatrix, 0, U"To Ltas", nullptr, 1, DO_Matrix_to_Ltas);
+		praat_addAction1 (classMatrix, 0, U"To Pitch", nullptr, 1, DO_Matrix_to_Pitch);
+		praat_addAction1 (classMatrix, 0, U"To PointProcess", nullptr, 1, DO_Matrix_to_PointProcess);
+		praat_addAction1 (classMatrix, 0, U"To Polygon", nullptr, 1, DO_Matrix_to_Polygon);
+		praat_addAction1 (classMatrix, 0, U"To Sound", nullptr, 1, DO_Matrix_to_Sound);
+		praat_addAction1 (classMatrix, 0, U"To Sound (slice)...", nullptr, 1, DO_Matrix_to_Sound_mono);
+		praat_addAction1 (classMatrix, 0, U"To Spectrogram", nullptr, 1, DO_Matrix_to_Spectrogram);
+		praat_addAction1 (classMatrix, 0, U"To TableOfReal", nullptr, 1, DO_Matrix_to_TableOfReal);
+		praat_addAction1 (classMatrix, 0, U"To Spectrum", nullptr, 1, DO_Matrix_to_Spectrum);
+		praat_addAction1 (classMatrix, 0, U"To Transition", nullptr, 1, DO_Matrix_to_Transition);
+		praat_addAction1 (classMatrix, 0, U"To VocalTract", nullptr, 1, DO_Matrix_to_VocalTract);
+
+	praat_addAction1 (classMovie, 1, U"Paint one image...", nullptr, 1, DO_Movie_paintOneImage);
+	praat_addAction1 (classMovie, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Movie_viewAndEdit);
+
+	praat_addAction1 (classParamCurve, 0, U"ParamCurve help", nullptr, 0, DO_ParamCurve_help);
+	praat_addAction1 (classParamCurve, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classParamCurve, 0, U"Draw...", nullptr, 0, DO_ParamCurve_draw);
+
+	praat_addAction1 (classPhoto, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classPhoto, 0, U"Paint image...", nullptr, 1, DO_Photo_paintImage);
+		praat_addAction1 (classPhoto, 0, U"Paint cells...", nullptr, 1, DO_Photo_paintCells);
+	praat_addAction1 (classPhoto, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classPhoto, 0, U"Formula (red)...", nullptr, 1, DO_Photo_formula_red);
+		praat_addAction1 (classPhoto, 0, U"Formula (green)...", nullptr, 1, DO_Photo_formula_green);
+		praat_addAction1 (classPhoto, 0, U"Formula (blue)...", nullptr, 1, DO_Photo_formula_blue);
+		praat_addAction1 (classPhoto, 0, U"Formula (transparency)...", nullptr, 1, DO_Photo_formula_transparency);
+	praat_addAction1 (classPhoto, 0, U"Extract -", nullptr, 0, nullptr);
+		praat_addAction1 (classPhoto, 0, U"Extract red", nullptr, 1, DO_Photo_extractRed);
+		praat_addAction1 (classPhoto, 0, U"Extract green", nullptr, 1, DO_Photo_extractGreen);
+		praat_addAction1 (classPhoto, 0, U"Extract blue", nullptr, 1, DO_Photo_extractBlue);
+		praat_addAction1 (classPhoto, 0, U"Extract transparency", nullptr, 1, DO_Photo_extractTransparency);
+	praat_addAction1 (classPhoto, 1, U"Save as PNG file...", nullptr, 0, DO_Photo_saveAsPNG);
 	#if defined (macintosh) || defined (_WIN32)
-		praat_addAction1 (classPhoto, 1, U"Save as TIFF file...", 0, 0, DO_Photo_saveAsTIFF);
-		praat_addAction1 (classPhoto, 1, U"Save as GIF file...", 0, 0, DO_Photo_saveAsGIF);
-		praat_addAction1 (classPhoto, 1, U"Save as Windows bitmap file...", 0, 0, DO_Photo_saveAsWindowsBitmapFile);
-		praat_addAction1 (classPhoto, 1, U"Save as lossy JPEG file...", 0, 0, DO_Photo_saveAsJPEG);
+		praat_addAction1 (classPhoto, 1, U"Save as TIFF file...", nullptr, 0, DO_Photo_saveAsTIFF);
+		praat_addAction1 (classPhoto, 1, U"Save as GIF file...", nullptr, 0, DO_Photo_saveAsGIF);
+		praat_addAction1 (classPhoto, 1, U"Save as Windows bitmap file...", nullptr, 0, DO_Photo_saveAsWindowsBitmapFile);
+		praat_addAction1 (classPhoto, 1, U"Save as lossy JPEG file...", nullptr, 0, DO_Photo_saveAsJPEG);
 	#endif
 	#if defined (macintosh)
-		praat_addAction1 (classPhoto, 1, U"Save as JPEG-2000 file...", 0, 0, DO_Photo_saveAsJPEG2000);
-		praat_addAction1 (classPhoto, 1, U"Save as Apple icon file...", 0, 0, DO_Photo_saveAsAppleIconFile);
-		praat_addAction1 (classPhoto, 1, U"Save as Windows icon file...", 0, 0, DO_Photo_saveAsWindowsIconFile);
+		praat_addAction1 (classPhoto, 1, U"Save as JPEG-2000 file...", nullptr, 0, DO_Photo_saveAsJPEG2000);
+		praat_addAction1 (classPhoto, 1, U"Save as Apple icon file...", nullptr, 0, DO_Photo_saveAsAppleIconFile);
+		praat_addAction1 (classPhoto, 1, U"Save as Windows icon file...", nullptr, 0, DO_Photo_saveAsWindowsIconFile);
 	#endif
 
-	praat_addAction1 (classPitch, 0, U"Pitch help", 0, 0, DO_Pitch_help);
-	praat_addAction1 (classPitch, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Pitch_edit);
-	praat_addAction1 (classPitch, 1, U"Edit", 0, praat_HIDDEN, DO_Pitch_edit);
-	praat_addAction1 (classPitch, 0, U"Sound -", 0, 0, 0);
-		praat_addAction1 (classPitch, 0, U"Play pulses", 0, 1, DO_Pitch_play);
-		praat_addAction1 (classPitch, 0, U"Hum", 0, 1, DO_Pitch_hum);
-		praat_addAction1 (classPitch, 0, U"-- to sound --", 0, 1, 0);
-		praat_addAction1 (classPitch, 0, U"To Sound (pulses)", 0, 1, DO_Pitch_to_Sound_pulses);
-		praat_addAction1 (classPitch, 0, U"To Sound (hum)", 0, 1, DO_Pitch_to_Sound_hum);
-		praat_addAction1 (classPitch, 0, U"To Sound (sine)...", 0, 1, DO_Pitch_to_Sound_sine);
-	praat_addAction1 (classPitch, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classPitch, 0, U"Draw...", 0, 1, DO_Pitch_draw);
-		praat_addAction1 (classPitch, 0, U"Draw logarithmic...", 0, 1, DO_Pitch_drawLogarithmic);
-		praat_addAction1 (classPitch, 0, U"Draw semitones (re 100 Hz)...", 0, 1, DO_Pitch_drawSemitones100);
-		praat_addAction1 (classPitch, 0, U"Draw semitones...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_drawSemitones100);
-		praat_addAction1 (classPitch, 0, U"Draw semitones (re 200 Hz)...", 0, 1, DO_Pitch_drawSemitones200);
-		praat_addAction1 (classPitch, 0, U"Draw semitones (re 440 Hz)...", 0, 1, DO_Pitch_drawSemitones440);
-		praat_addAction1 (classPitch, 0, U"Draw mel...", 0, 1, DO_Pitch_drawMel);
-		praat_addAction1 (classPitch, 0, U"Draw erb...", 0, 1, DO_Pitch_drawErb);
-		praat_addAction1 (classPitch, 0, U"Speckle...", 0, 1, DO_Pitch_speckle);
-		praat_addAction1 (classPitch, 0, U"Speckle logarithmic...", 0, 1, DO_Pitch_speckleLogarithmic);
-		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 100 Hz)...", 0, 1, DO_Pitch_speckleSemitones100);
-		praat_addAction1 (classPitch, 0, U"Speckle semitones...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_speckleSemitones100);
-		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 200 Hz)...", 0, 1, DO_Pitch_speckleSemitones200);
-		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 440 Hz)...", 0, 1, DO_Pitch_speckleSemitones440);
-		praat_addAction1 (classPitch, 0, U"Speckle mel...", 0, 1, DO_Pitch_speckleMel);
-		praat_addAction1 (classPitch, 0, U"Speckle erb...", 0, 1, DO_Pitch_speckleErb);
-	praat_addAction1 (classPitch, 0, U"Query -", 0, 0, 0);
+	praat_addAction1 (classPitch, 0, U"Pitch help", nullptr, 0, DO_Pitch_help);
+	praat_addAction1 (classPitch, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Pitch_edit);
+	praat_addAction1 (classPitch, 1, U"Edit", nullptr, praat_HIDDEN, DO_Pitch_edit);
+	praat_addAction1 (classPitch, 0, U"Sound -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitch, 0, U"Play pulses", nullptr, 1, DO_Pitch_play);
+		praat_addAction1 (classPitch, 0, U"Hum", nullptr, 1, DO_Pitch_hum);
+		praat_addAction1 (classPitch, 0, U"-- to sound --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 0, U"To Sound (pulses)", nullptr, 1, DO_Pitch_to_Sound_pulses);
+		praat_addAction1 (classPitch, 0, U"To Sound (hum)", nullptr, 1, DO_Pitch_to_Sound_hum);
+		praat_addAction1 (classPitch, 0, U"To Sound (sine)...", nullptr, 1, DO_Pitch_to_Sound_sine);
+	praat_addAction1 (classPitch, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitch, 0, U"Draw...", nullptr, 1, DO_Pitch_draw);
+		praat_addAction1 (classPitch, 0, U"Draw logarithmic...", nullptr, 1, DO_Pitch_drawLogarithmic);
+		praat_addAction1 (classPitch, 0, U"Draw semitones (re 100 Hz)...", nullptr, 1, DO_Pitch_drawSemitones100);
+		praat_addAction1 (classPitch, 0, U"Draw semitones...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_drawSemitones100);
+		praat_addAction1 (classPitch, 0, U"Draw semitones (re 200 Hz)...", nullptr, 1, DO_Pitch_drawSemitones200);
+		praat_addAction1 (classPitch, 0, U"Draw semitones (re 440 Hz)...", nullptr, 1, DO_Pitch_drawSemitones440);
+		praat_addAction1 (classPitch, 0, U"Draw mel...", nullptr, 1, DO_Pitch_drawMel);
+		praat_addAction1 (classPitch, 0, U"Draw erb...", nullptr, 1, DO_Pitch_drawErb);
+		praat_addAction1 (classPitch, 0, U"Speckle...", nullptr, 1, DO_Pitch_speckle);
+		praat_addAction1 (classPitch, 0, U"Speckle logarithmic...", nullptr, 1, DO_Pitch_speckleLogarithmic);
+		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 100 Hz)...", nullptr, 1, DO_Pitch_speckleSemitones100);
+		praat_addAction1 (classPitch, 0, U"Speckle semitones...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_speckleSemitones100);
+		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 200 Hz)...", nullptr, 1, DO_Pitch_speckleSemitones200);
+		praat_addAction1 (classPitch, 0, U"Speckle semitones (re 440 Hz)...", nullptr, 1, DO_Pitch_speckleSemitones440);
+		praat_addAction1 (classPitch, 0, U"Speckle mel...", nullptr, 1, DO_Pitch_speckleMel);
+		praat_addAction1 (classPitch, 0, U"Speckle erb...", nullptr, 1, DO_Pitch_speckleErb);
+	praat_addAction1 (classPitch, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFrameSampled_query_init (classPitch);
-		praat_addAction1 (classPitch, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classPitch, 1, U"Count voiced frames", 0, 1, DO_Pitch_getNumberOfVoicedFrames);
-		praat_addAction1 (classPitch, 1, U"Get value at time...", 0, 1, DO_Pitch_getValueAtTime);
-		praat_addAction1 (classPitch, 1, U"Get value in frame...", 0, 1, DO_Pitch_getValueInFrame);
-		praat_addAction1 (classPitch, 1, U"-- get extreme --", 0, 1, 0);
-		praat_addAction1 (classPitch, 1, U"Get minimum...", 0, 1, DO_Pitch_getMinimum);
-		praat_addAction1 (classPitch, 1, U"Get time of minimum...", 0, 1, DO_Pitch_getTimeOfMinimum);
-		praat_addAction1 (classPitch, 1, U"Get maximum...", 0, 1, DO_Pitch_getMaximum);
-		praat_addAction1 (classPitch, 1, U"Get time of maximum...", 0, 1, DO_Pitch_getTimeOfMaximum);
-		praat_addAction1 (classPitch, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classPitch, 1, U"Get quantile...", 0, 1, DO_Pitch_getQuantile);
-		/*praat_addAction1 (classPitch, 1, U"Get spreading...", 0, 1, DO_Pitch_getSpreading);*/
-		praat_addAction1 (classPitch, 1, U"Get mean...", 0, 1, DO_Pitch_getMean);
-		praat_addAction1 (classPitch, 1, U"Get standard deviation...", 0, 1, DO_Pitch_getStandardDeviation);
-		praat_addAction1 (classPitch, 1, U"-- get slope --", 0, 1, 0);
-		praat_addAction1 (classPitch, 1, U"Get mean absolute slope...", 0, 1, DO_Pitch_getMeanAbsoluteSlope);
-		praat_addAction1 (classPitch, 1, U"Get slope without octave jumps", 0, 1, DO_Pitch_getMeanAbsSlope_noOctave);
-		praat_addAction1 (classPitch, 2, U"-- query two --", 0, 1, 0);
-		praat_addAction1 (classPitch, 2, U"Count differences", 0, 1, DO_Pitch_difference);
-	praat_addAction1 (classPitch, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classPitch, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 1, U"Count voiced frames", nullptr, 1, DO_Pitch_getNumberOfVoicedFrames);
+		praat_addAction1 (classPitch, 1, U"Get value at time...", nullptr, 1, DO_Pitch_getValueAtTime);
+		praat_addAction1 (classPitch, 1, U"Get value in frame...", nullptr, 1, DO_Pitch_getValueInFrame);
+		praat_addAction1 (classPitch, 1, U"-- get extreme --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 1, U"Get minimum...", nullptr, 1, DO_Pitch_getMinimum);
+		praat_addAction1 (classPitch, 1, U"Get time of minimum...", nullptr, 1, DO_Pitch_getTimeOfMinimum);
+		praat_addAction1 (classPitch, 1, U"Get maximum...", nullptr, 1, DO_Pitch_getMaximum);
+		praat_addAction1 (classPitch, 1, U"Get time of maximum...", nullptr, 1, DO_Pitch_getTimeOfMaximum);
+		praat_addAction1 (classPitch, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 1, U"Get quantile...", nullptr, 1, DO_Pitch_getQuantile);
+		/*praat_addAction1 (classPitch, 1, U"Get spreading...", nullptr, 1, DO_Pitch_getSpreading);*/
+		praat_addAction1 (classPitch, 1, U"Get mean...", nullptr, 1, DO_Pitch_getMean);
+		praat_addAction1 (classPitch, 1, U"Get standard deviation...", nullptr, 1, DO_Pitch_getStandardDeviation);
+		praat_addAction1 (classPitch, 1, U"-- get slope --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 1, U"Get mean absolute slope...", nullptr, 1, DO_Pitch_getMeanAbsoluteSlope);
+		praat_addAction1 (classPitch, 1, U"Get slope without octave jumps", nullptr, 1, DO_Pitch_getMeanAbsSlope_noOctave);
+		praat_addAction1 (classPitch, 2, U"-- query two --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 2, U"Count differences", nullptr, 1, DO_Pitch_difference);
+	praat_addAction1 (classPitch, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classPitch);
-		praat_addAction1 (classPitch, 0, U"Formula...", 0, 1, DO_Pitch_formula);
-	praat_addAction1 (classPitch, 0, U"Annotate -", 0, 0, 0);
-		praat_addAction1 (classPitch, 0, U"To TextGrid...", 0, 1, DO_Pitch_to_TextGrid);
-		praat_addAction1 (classPitch, 0, U"-- to single tier --", 0, praat_HIDDEN + praat_DEPTH_1, 0);
-		praat_addAction1 (classPitch, 0, U"To TextTier", 0, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_to_TextTier);
-		praat_addAction1 (classPitch, 0, U"To IntervalTier", 0, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_to_IntervalTier);
-	praat_addAction1 (classPitch, 0, U"Analyse -", 0, 0, 0);
-		praat_addAction1 (classPitch, 0, U"To PointProcess", 0, 1, DO_Pitch_to_PointProcess);
-	praat_addAction1 (classPitch, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classPitch, 0, U"Interpolate", 0, 1, DO_Pitch_interpolate);
-		praat_addAction1 (classPitch, 0, U"Smooth...", 0, 1, DO_Pitch_smooth);
-		praat_addAction1 (classPitch, 0, U"Subtract linear fit...", 0, 1, DO_Pitch_subtractLinearFit);
-		praat_addAction1 (classPitch, 0, U"Hack", 0, 1, 0);
-		praat_addAction1 (classPitch, 0, U"Kill octave jumps", 0, 2, DO_Pitch_killOctaveJumps);
-		praat_addAction1 (classPitch, 0, U"-- to other types --", 0, 1, 0);
-		praat_addAction1 (classPitch, 0, U"Down to PitchTier", 0, 1, DO_Pitch_to_PitchTier);
-		praat_addAction1 (classPitch, 0, U"To Matrix", 0, 1, DO_Pitch_to_Matrix);
-
-	praat_addAction1 (classPitchTier, 1, U"Save as PitchTier spreadsheet file...", 0, 0, DO_PitchTier_writeToPitchTierSpreadsheetFile);
-	praat_addAction1 (classPitchTier, 1, U"Write to PitchTier spreadsheet file...", 0, praat_HIDDEN, DO_PitchTier_writeToPitchTierSpreadsheetFile);
-	praat_addAction1 (classPitchTier, 1, U"Save as headerless spreadsheet file...", 0, 0, DO_PitchTier_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (classPitchTier, 1, U"Write to headerless spreadsheet file...", 0, praat_HIDDEN, DO_PitchTier_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (classPitchTier, 0, U"PitchTier help", 0, 0, DO_PitchTier_help);
-	praat_addAction1 (classPitchTier, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_PitchTier_edit);
-	praat_addAction1 (classPitchTier, 1, U"Edit", 0, praat_HIDDEN, DO_PitchTier_edit);
-	praat_addAction1 (classPitchTier, 0, U"View & Edit with Sound?", 0, 0, DO_info_PitchTier_Sound_edit);
-	praat_addAction1 (classPitchTier, 0, U"Play pulses", 0, 0, DO_PitchTier_play);
-	praat_addAction1 (classPitchTier, 0, U"Hum", 0, 0, DO_PitchTier_hum);
-	praat_addAction1 (classPitchTier, 0, U"Play sine", 0, 0, DO_PitchTier_playSine);
-	praat_addAction1 (classPitchTier, 0, U"Draw...", 0, 0, DO_PitchTier_draw);
-	praat_addAction1 (classPitchTier, 0, U"& Manipulation: Replace?", 0, 0, DO_info_PitchTier_Manipulation_replace);
-	praat_addAction1 (classPitchTier, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classPitch, 0, U"Formula...", nullptr, 1, DO_Pitch_formula);
+	praat_addAction1 (classPitch, 0, U"Annotate -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitch, 0, U"To TextGrid...", nullptr, 1, DO_Pitch_to_TextGrid);
+		praat_addAction1 (classPitch, 0, U"-- to single tier --", nullptr, praat_HIDDEN + praat_DEPTH_1, nullptr);
+		praat_addAction1 (classPitch, 0, U"To TextTier", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_to_TextTier);
+		praat_addAction1 (classPitch, 0, U"To IntervalTier", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Pitch_to_IntervalTier);
+	praat_addAction1 (classPitch, 0, U"Analyse -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitch, 0, U"To PointProcess", nullptr, 1, DO_Pitch_to_PointProcess);
+	praat_addAction1 (classPitch, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitch, 0, U"Interpolate", nullptr, 1, DO_Pitch_interpolate);
+		praat_addAction1 (classPitch, 0, U"Smooth...", nullptr, 1, DO_Pitch_smooth);
+		praat_addAction1 (classPitch, 0, U"Subtract linear fit...", nullptr, 1, DO_Pitch_subtractLinearFit);
+		praat_addAction1 (classPitch, 0, U"Hack", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 0, U"Kill octave jumps", nullptr, 2, DO_Pitch_killOctaveJumps);
+		praat_addAction1 (classPitch, 0, U"-- to other types --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitch, 0, U"Down to PitchTier", nullptr, 1, DO_Pitch_to_PitchTier);
+		praat_addAction1 (classPitch, 0, U"To Matrix", nullptr, 1, DO_Pitch_to_Matrix);
+
+	praat_addAction1 (classPitchTier, 1, U"Save as PitchTier spreadsheet file...", nullptr, 0, DO_PitchTier_writeToPitchTierSpreadsheetFile);
+	praat_addAction1 (classPitchTier, 1, U"Write to PitchTier spreadsheet file...", nullptr, praat_HIDDEN, DO_PitchTier_writeToPitchTierSpreadsheetFile);
+	praat_addAction1 (classPitchTier, 1, U"Save as headerless spreadsheet file...", nullptr, 0, DO_PitchTier_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (classPitchTier, 1, U"Write to headerless spreadsheet file...", nullptr, praat_HIDDEN, DO_PitchTier_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (classPitchTier, 0, U"PitchTier help", nullptr, 0, DO_PitchTier_help);
+	praat_addAction1 (classPitchTier, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_PitchTier_edit);
+	praat_addAction1 (classPitchTier, 1, U"Edit", nullptr, praat_HIDDEN, DO_PitchTier_edit);
+	praat_addAction1 (classPitchTier, 0, U"View & Edit with Sound?", nullptr, 0, DO_info_PitchTier_Sound_edit);
+	praat_addAction1 (classPitchTier, 0, U"Play pulses", nullptr, 0, DO_PitchTier_play);
+	praat_addAction1 (classPitchTier, 0, U"Hum", nullptr, 0, DO_PitchTier_hum);
+	praat_addAction1 (classPitchTier, 0, U"Play sine", nullptr, 0, DO_PitchTier_playSine);
+	praat_addAction1 (classPitchTier, 0, U"Draw...", nullptr, 0, DO_PitchTier_draw);
+	praat_addAction1 (classPitchTier, 0, U"& Manipulation: Replace?", nullptr, 0, DO_info_PitchTier_Manipulation_replace);
+	praat_addAction1 (classPitchTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classPitchTier);
-		praat_addAction1 (classPitchTier, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classPitchTier, 1, U"Get value at time...", 0, 1, DO_PitchTier_getValueAtTime);
-		praat_addAction1 (classPitchTier, 1, U"Get value at index...", 0, 1, DO_PitchTier_getValueAtIndex);
-		praat_addAction1 (classPitchTier, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classPitchTier, 1, U"Get mean (curve)...", 0, 1, DO_PitchTier_getMean_curve);
-		praat_addAction1 (classPitchTier, 1, U"Get mean (points)...", 0, 1, DO_PitchTier_getMean_points);
-		praat_addAction1 (classPitchTier, 1, U"Get standard deviation (curve)...", 0, 1, DO_PitchTier_getStandardDeviation_curve);
-		praat_addAction1 (classPitchTier, 1, U"Get standard deviation (points)...", 0, 1, DO_PitchTier_getStandardDeviation_points);
-	praat_addAction1 (classPitchTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classPitchTier, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitchTier, 1, U"Get value at time...", nullptr, 1, DO_PitchTier_getValueAtTime);
+		praat_addAction1 (classPitchTier, 1, U"Get value at index...", nullptr, 1, DO_PitchTier_getValueAtIndex);
+		praat_addAction1 (classPitchTier, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitchTier, 1, U"Get mean (curve)...", nullptr, 1, DO_PitchTier_getMean_curve);
+		praat_addAction1 (classPitchTier, 1, U"Get mean (points)...", nullptr, 1, DO_PitchTier_getMean_points);
+		praat_addAction1 (classPitchTier, 1, U"Get standard deviation (curve)...", nullptr, 1, DO_PitchTier_getStandardDeviation_curve);
+		praat_addAction1 (classPitchTier, 1, U"Get standard deviation (points)...", nullptr, 1, DO_PitchTier_getStandardDeviation_points);
+	praat_addAction1 (classPitchTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classPitchTier);
-		praat_addAction1 (classPitchTier, 0, U"Add point...", 0, 1, DO_PitchTier_addPoint);
-		praat_addAction1 (classPitchTier, 0, U"Formula...", 0, 1, DO_PitchTier_formula);
-		praat_addAction1 (classPitchTier, 0, U"-- stylize --", 0, 1, 0);
-		praat_addAction1 (classPitchTier, 0, U"Stylize...", 0, 1, DO_PitchTier_stylize);
-		praat_addAction1 (classPitchTier, 0, U"Interpolate quadratically...", 0, 1, DO_PitchTier_interpolateQuadratically);
-		praat_addAction1 (classPitchTier, 0, U"-- modify frequencies --", 0, 1, 0);
-		praat_addAction1 (classPitchTier, 0, U"Shift frequencies...", 0, 1, DO_PitchTier_shiftFrequencies);
-		praat_addAction1 (classPitchTier, 0, U"Multiply frequencies...", 0, 1, DO_PitchTier_multiplyFrequencies);
-	praat_addAction1 (classPitchTier, 0, U"Synthesize -", 0, 0, 0);
-		praat_addAction1 (classPitchTier, 0, U"To PointProcess", 0, 1, DO_PitchTier_to_PointProcess);
-		praat_addAction1 (classPitchTier, 0, U"To Sound (pulse train)...", 0, 1, DO_PitchTier_to_Sound_pulseTrain);
-		praat_addAction1 (classPitchTier, 0, U"To Sound (phonation)...", 0, 1, DO_PitchTier_to_Sound_phonation);
-		praat_addAction1 (classPitchTier, 0, U"To Sound (sine)...", 0, 1, DO_PitchTier_to_Sound_sine);
-	praat_addAction1 (classPitchTier, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classPitchTier, 0, U"Down to PointProcess", 0, 1, DO_PitchTier_downto_PointProcess);
-		praat_addAction1 (classPitchTier, 0, U"Down to TableOfReal...", 0, 1, DO_PitchTier_downto_TableOfReal);
-
-	praat_addAction1 (classPointProcess, 0, U"PointProcess help", 0, 0, DO_PointProcess_help);
-	praat_addAction1 (classPointProcess, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_PointProcess_edit);
-	praat_addAction1 (classPointProcess, 1, U"View & Edit alone", 0, praat_HIDDEN, DO_PointProcess_edit);
-	praat_addAction1 (classPointProcess, 1, U"Edit alone", 0, praat_HIDDEN, DO_PointProcess_edit);
-	praat_addAction1 (classPointProcess, 0, U"View & Edit with Sound?", 0, 0, DO_info_PointProcess_Sound_edit);
-	praat_addAction1 (classPointProcess, 0, U"Play -", 0, 0, 0);
-		praat_addAction1 (classPointProcess, 0, U"Play as pulse train", 0, 1, DO_PointProcess_play);
-		praat_addAction1 (classPointProcess, 0, U"Hum", 0, 1, DO_PointProcess_hum);
-		praat_addAction1 (classPointProcess, 0, U"-- to sound --", 0, 1, 0);
-		praat_addAction1 (classPointProcess, 0, U"To Sound (pulse train)...", 0, 1, DO_PointProcess_to_Sound_pulseTrain);
-		praat_addAction1 (classPointProcess, 0, U"To Sound (phonation)...", 0, 1, DO_PointProcess_to_Sound_phonation);
-		praat_addAction1 (classPointProcess, 0, U"To Sound (hum)", 0, 1, DO_PointProcess_to_Sound_hum);
-	praat_addAction1 (classPointProcess, 0, U"Draw...", 0, 0, DO_PointProcess_draw);
-	praat_addAction1 (classPointProcess, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classPitchTier, 0, U"Add point...", nullptr, 1, DO_PitchTier_addPoint);
+		praat_addAction1 (classPitchTier, 0, U"Formula...", nullptr, 1, DO_PitchTier_formula);
+		praat_addAction1 (classPitchTier, 0, U"-- stylize --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitchTier, 0, U"Stylize...", nullptr, 1, DO_PitchTier_stylize);
+		praat_addAction1 (classPitchTier, 0, U"Interpolate quadratically...", nullptr, 1, DO_PitchTier_interpolateQuadratically);
+		praat_addAction1 (classPitchTier, 0, U"-- modify frequencies --", nullptr, 1, nullptr);
+		praat_addAction1 (classPitchTier, 0, U"Shift frequencies...", nullptr, 1, DO_PitchTier_shiftFrequencies);
+		praat_addAction1 (classPitchTier, 0, U"Multiply frequencies...", nullptr, 1, DO_PitchTier_multiplyFrequencies);
+	praat_addAction1 (classPitchTier, 0, U"Synthesize -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitchTier, 0, U"To PointProcess", nullptr, 1, DO_PitchTier_to_PointProcess);
+		praat_addAction1 (classPitchTier, 0, U"To Sound (pulse train)...", nullptr, 1, DO_PitchTier_to_Sound_pulseTrain);
+		praat_addAction1 (classPitchTier, 0, U"To Sound (phonation)...", nullptr, 1, DO_PitchTier_to_Sound_phonation);
+		praat_addAction1 (classPitchTier, 0, U"To Sound (sine)...", nullptr, 1, DO_PitchTier_to_Sound_sine);
+	praat_addAction1 (classPitchTier, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classPitchTier, 0, U"Down to PointProcess", nullptr, 1, DO_PitchTier_downto_PointProcess);
+		praat_addAction1 (classPitchTier, 0, U"Down to TableOfReal...", nullptr, 1, DO_PitchTier_downto_TableOfReal);
+
+	praat_addAction1 (classPointProcess, 0, U"PointProcess help", nullptr, 0, DO_PointProcess_help);
+	praat_addAction1 (classPointProcess, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_PointProcess_edit);
+	praat_addAction1 (classPointProcess, 1, U"View & Edit alone", nullptr, praat_HIDDEN, DO_PointProcess_edit);
+	praat_addAction1 (classPointProcess, 1, U"Edit alone", nullptr, praat_HIDDEN, DO_PointProcess_edit);
+	praat_addAction1 (classPointProcess, 0, U"View & Edit with Sound?", nullptr, 0, DO_info_PointProcess_Sound_edit);
+	praat_addAction1 (classPointProcess, 0, U"Play -", nullptr, 0, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"Play as pulse train", nullptr, 1, DO_PointProcess_play);
+		praat_addAction1 (classPointProcess, 0, U"Hum", nullptr, 1, DO_PointProcess_hum);
+		praat_addAction1 (classPointProcess, 0, U"-- to sound --", nullptr, 1, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"To Sound (pulse train)...", nullptr, 1, DO_PointProcess_to_Sound_pulseTrain);
+		praat_addAction1 (classPointProcess, 0, U"To Sound (phonation)...", nullptr, 1, DO_PointProcess_to_Sound_phonation);
+		praat_addAction1 (classPointProcess, 0, U"To Sound (hum)", nullptr, 1, DO_PointProcess_to_Sound_hum);
+	praat_addAction1 (classPointProcess, 0, U"Draw...", nullptr, 0, DO_PointProcess_draw);
+	praat_addAction1 (classPointProcess, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFunction_query_init (classPointProcess);
-		praat_addAction1 (classPointProcess, 1, U"-- script get --", 0, 1, 0);
-		praat_addAction1 (classPointProcess, 1, U"Get number of points", 0, 1, DO_PointProcess_getNumberOfPoints);
-		praat_addAction1 (classPointProcess, 1, U"Get low index...", 0, 1, DO_PointProcess_getLowIndex);
-		praat_addAction1 (classPointProcess, 1, U"Get high index...", 0, 1, DO_PointProcess_getHighIndex);
-		praat_addAction1 (classPointProcess, 1, U"Get nearest index...", 0, 1, DO_PointProcess_getNearestIndex);
-		praat_addAction1 (classPointProcess, 1, U"Get time from index...", 0, 1, DO_PointProcess_getTimeFromIndex);
-		praat_addAction1 (classPointProcess, 1, U"Get interval...", 0, 1, DO_PointProcess_getInterval);
-		praat_addAction1 (classPointProcess, 1, U"-- periods --", 0, 1, 0);
-		praat_addAction1 (classPointProcess, 1, U"Get number of periods...", 0, 1, DO_PointProcess_getNumberOfPeriods);
-		praat_addAction1 (classPointProcess, 1, U"Get mean period...", 0, 1, DO_PointProcess_getMeanPeriod);
-		praat_addAction1 (classPointProcess, 1, U"Get stdev period...", 0, 1, DO_PointProcess_getStdevPeriod);
-		praat_addAction1 (classPointProcess, 1, U"Get jitter (local)...", 0, 1, DO_PointProcess_getJitter_local);
-		praat_addAction1 (classPointProcess, 1, U"Get jitter (local, absolute)...", 0, 1, DO_PointProcess_getJitter_local_absolute);
-		praat_addAction1 (classPointProcess, 1, U"Get jitter (rap)...", 0, 1, DO_PointProcess_getJitter_rap);
-		praat_addAction1 (classPointProcess, 1, U"Get jitter (ppq5)...", 0, 1, DO_PointProcess_getJitter_ppq5);
-		praat_addAction1 (classPointProcess, 1, U"Get jitter (ddp)...", 0, 1, DO_PointProcess_getJitter_ddp);
-	praat_addAction1 (classPointProcess, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classPointProcess, 1, U"-- script get --", nullptr, 1, nullptr);
+		praat_addAction1 (classPointProcess, 1, U"Get number of points", nullptr, 1, DO_PointProcess_getNumberOfPoints);
+		praat_addAction1 (classPointProcess, 1, U"Get low index...", nullptr, 1, DO_PointProcess_getLowIndex);
+		praat_addAction1 (classPointProcess, 1, U"Get high index...", nullptr, 1, DO_PointProcess_getHighIndex);
+		praat_addAction1 (classPointProcess, 1, U"Get nearest index...", nullptr, 1, DO_PointProcess_getNearestIndex);
+		praat_addAction1 (classPointProcess, 1, U"Get time from index...", nullptr, 1, DO_PointProcess_getTimeFromIndex);
+		praat_addAction1 (classPointProcess, 1, U"Get interval...", nullptr, 1, DO_PointProcess_getInterval);
+		praat_addAction1 (classPointProcess, 1, U"-- periods --", nullptr, 1, nullptr);
+		praat_addAction1 (classPointProcess, 1, U"Get number of periods...", nullptr, 1, DO_PointProcess_getNumberOfPeriods);
+		praat_addAction1 (classPointProcess, 1, U"Get mean period...", nullptr, 1, DO_PointProcess_getMeanPeriod);
+		praat_addAction1 (classPointProcess, 1, U"Get stdev period...", nullptr, 1, DO_PointProcess_getStdevPeriod);
+		praat_addAction1 (classPointProcess, 1, U"Get jitter (local)...", nullptr, 1, DO_PointProcess_getJitter_local);
+		praat_addAction1 (classPointProcess, 1, U"Get jitter (local, absolute)...", nullptr, 1, DO_PointProcess_getJitter_local_absolute);
+		praat_addAction1 (classPointProcess, 1, U"Get jitter (rap)...", nullptr, 1, DO_PointProcess_getJitter_rap);
+		praat_addAction1 (classPointProcess, 1, U"Get jitter (ppq5)...", nullptr, 1, DO_PointProcess_getJitter_ppq5);
+		praat_addAction1 (classPointProcess, 1, U"Get jitter (ddp)...", nullptr, 1, DO_PointProcess_getJitter_ddp);
+	praat_addAction1 (classPointProcess, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classPointProcess);
-		praat_addAction1 (classPointProcess, 0, U"Add point...", 0, 1, DO_PointProcess_addPoint);
-		praat_addAction1 (classPointProcess, 0, U"Remove point...", 0, 1, DO_PointProcess_removePoint);
-		praat_addAction1 (classPointProcess, 0, U"Remove point near...", 0, 1, DO_PointProcess_removePointNear);
-		praat_addAction1 (classPointProcess, 0, U"Remove points...", 0, 1, DO_PointProcess_removePoints);
-		praat_addAction1 (classPointProcess, 0, U"Remove points between...", 0, 1, DO_PointProcess_removePointsBetween);
-		praat_addAction1 (classPointProcess, 0, U"-- voice --", 0, 1, 0);
-		praat_addAction1 (classPointProcess, 0, U"Fill...", 0, 1, DO_PointProcess_fill);
-		praat_addAction1 (classPointProcess, 0, U"Voice...", 0, 1, DO_PointProcess_voice);
-	praat_addAction1 (classPointProcess, 0, U"Annotate -", 0, 0, 0);
-		praat_addAction1 (classPointProcess, 0, U"To TextGrid...", 0, 1, DO_PointProcess_to_TextGrid);
-		praat_addAction1 (classPointProcess, 0, U"-- to single tier --", 0, 1, 0);
-		praat_addAction1 (classPointProcess, 0, U"To TextTier", 0, 1, DO_PointProcess_to_TextTier);
-		praat_addAction1 (classPointProcess, 0, U"To IntervalTier", 0, 1, DO_PointProcess_to_IntervalTier);
-	praat_addAction1 (classPointProcess, 0, U"Analyse -", 0, 0, 0);
-		praat_addAction1 (classPointProcess, 0, U"To PitchTier...", 0, 1, DO_PointProcess_to_PitchTier);
-		praat_addAction1 (classPointProcess, 0, U"To TextGrid (vuv)...", 0, 1, DO_PointProcess_to_TextGrid_vuv);
-	praat_addAction1 (classPointProcess, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classPointProcess, 0, U"Hack", 0, 1, 0);
-			praat_addAction1 (classPointProcess, 0, U"To Matrix", 0, 2, DO_PointProcess_to_Matrix);
-			praat_addAction1 (classPointProcess, 0, U"Up to TextTier...", 0, 2, DO_PointProcess_upto_TextTier);
-			praat_addAction1 (classPointProcess, 0, U"Up to PitchTier...", 0, 2, DO_PointProcess_upto_PitchTier);
-			praat_addAction1 (classPointProcess, 0, U"Up to IntensityTier...", 0, 2, DO_PointProcess_upto_IntensityTier);
-	praat_addAction1 (classPointProcess, 0, U"Combine -", 0, 0, 0);
-		praat_addAction1 (classPointProcess, 2, U"Union", 0, 1, DO_PointProcess_union);
-		praat_addAction1 (classPointProcess, 2, U"Intersection", 0, 1, DO_PointProcess_intersection);
-		praat_addAction1 (classPointProcess, 2, U"Difference", 0, 1, DO_PointProcess_difference);
-
-	praat_addAction1 (classPolygon, 0, U"Polygon help", 0, 0, DO_Polygon_help);
-praat_addAction1 (classPolygon, 0, U"Draw -", 0, 0, 0);
-	praat_addAction1 (classPolygon, 0, U"Draw...", 0, 1, DO_Polygon_draw);
-	praat_addAction1 (classPolygon, 0, U"Draw closed...", 0, 1, DO_Polygon_drawClosed);
-	praat_addAction1 (classPolygon, 0, U"Paint...", 0, 1, DO_Polygon_paint);
-	praat_addAction1 (classPolygon, 0, U"Draw circles...", 0, 1, DO_Polygon_drawCircles);
-	praat_addAction1 (classPolygon, 0, U"Paint circles...", 0, 1, DO_Polygon_paintCircles);
-	praat_addAction1 (classPolygon, 2, U"Draw connection...", 0, 1, DO_Polygons_drawConnection);
-praat_addAction1 (classPolygon, 0, U"Modify -", 0, 0, 0);
-	praat_addAction1 (classPolygon, 0, U"Randomize", 0, 1, DO_Polygon_randomize);
-	praat_addAction1 (classPolygon, 0, U"Salesperson...", 0, 1, DO_Polygon_salesperson);
-praat_addAction1 (classPolygon, 0, U"Hack -", 0, 0, 0);
-	praat_addAction1 (classPolygon, 0, U"To Matrix", 0, 1, DO_Polygon_to_Matrix);
-
-	praat_addAction1 (classSpectrogram, 0, U"Spectrogram help", 0, 0, DO_Spectrogram_help);
-	praat_addAction1 (classSpectrogram, 1, U"View", 0, 0, DO_Spectrogram_view);
-	praat_addAction1 (classSpectrogram, 1, U"Movie", 0, 0, DO_Spectrogram_movie);
-	praat_addAction1 (classSpectrogram, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classPointProcess, 0, U"Add point...", nullptr, 1, DO_PointProcess_addPoint);
+		praat_addAction1 (classPointProcess, 0, U"Remove point...", nullptr, 1, DO_PointProcess_removePoint);
+		praat_addAction1 (classPointProcess, 0, U"Remove point near...", nullptr, 1, DO_PointProcess_removePointNear);
+		praat_addAction1 (classPointProcess, 0, U"Remove points...", nullptr, 1, DO_PointProcess_removePoints);
+		praat_addAction1 (classPointProcess, 0, U"Remove points between...", nullptr, 1, DO_PointProcess_removePointsBetween);
+		praat_addAction1 (classPointProcess, 0, U"-- voice --", nullptr, 1, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"Fill...", nullptr, 1, DO_PointProcess_fill);
+		praat_addAction1 (classPointProcess, 0, U"Voice...", nullptr, 1, DO_PointProcess_voice);
+	praat_addAction1 (classPointProcess, 0, U"Annotate -", nullptr, 0, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"To TextGrid...", nullptr, 1, DO_PointProcess_to_TextGrid);
+		praat_addAction1 (classPointProcess, 0, U"-- to single tier --", nullptr, 1, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"To TextTier", nullptr, 1, DO_PointProcess_to_TextTier);
+		praat_addAction1 (classPointProcess, 0, U"To IntervalTier", nullptr, 1, DO_PointProcess_to_IntervalTier);
+	praat_addAction1 (classPointProcess, 0, U"Analyse -", nullptr, 0, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"To PitchTier...", nullptr, 1, DO_PointProcess_to_PitchTier);
+		praat_addAction1 (classPointProcess, 0, U"To TextGrid (vuv)...", nullptr, 1, DO_PointProcess_to_TextGrid_vuv);
+	praat_addAction1 (classPointProcess, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classPointProcess, 0, U"Hack", nullptr, 1, nullptr);
+			praat_addAction1 (classPointProcess, 0, U"To Matrix", nullptr, 2, DO_PointProcess_to_Matrix);
+			praat_addAction1 (classPointProcess, 0, U"Up to TextTier...", nullptr, 2, DO_PointProcess_upto_TextTier);
+			praat_addAction1 (classPointProcess, 0, U"Up to PitchTier...", nullptr, 2, DO_PointProcess_upto_PitchTier);
+			praat_addAction1 (classPointProcess, 0, U"Up to IntensityTier...", nullptr, 2, DO_PointProcess_upto_IntensityTier);
+	praat_addAction1 (classPointProcess, 0, U"Combine -", nullptr, 0, nullptr);
+		praat_addAction1 (classPointProcess, 2, U"Union", nullptr, 1, DO_PointProcess_union);
+		praat_addAction1 (classPointProcess, 2, U"Intersection", nullptr, 1, DO_PointProcess_intersection);
+		praat_addAction1 (classPointProcess, 2, U"Difference", nullptr, 1, DO_PointProcess_difference);
+
+	praat_addAction1 (classPolygon, 0, U"Polygon help", nullptr, 0, DO_Polygon_help);
+praat_addAction1 (classPolygon, 0, U"Draw -", nullptr, 0, nullptr);
+	praat_addAction1 (classPolygon, 0, U"Draw...", nullptr, 1, DO_Polygon_draw);
+	praat_addAction1 (classPolygon, 0, U"Draw closed...", nullptr, 1, DO_Polygon_drawClosed);
+	praat_addAction1 (classPolygon, 0, U"Paint...", nullptr, 1, DO_Polygon_paint);
+	praat_addAction1 (classPolygon, 0, U"Draw circles...", nullptr, 1, DO_Polygon_drawCircles);
+	praat_addAction1 (classPolygon, 0, U"Paint circles...", nullptr, 1, DO_Polygon_paintCircles);
+	praat_addAction1 (classPolygon, 2, U"Draw connection...", nullptr, 1, DO_Polygons_drawConnection);
+praat_addAction1 (classPolygon, 0, U"Modify -", nullptr, 0, nullptr);
+	praat_addAction1 (classPolygon, 0, U"Randomize", nullptr, 1, DO_Polygon_randomize);
+	praat_addAction1 (classPolygon, 0, U"Salesperson...", nullptr, 1, DO_Polygon_salesperson);
+praat_addAction1 (classPolygon, 0, U"Hack -", nullptr, 0, nullptr);
+	praat_addAction1 (classPolygon, 0, U"To Matrix", nullptr, 1, DO_Polygon_to_Matrix);
+
+	praat_addAction1 (classSpectrogram, 0, U"Spectrogram help", nullptr, 0, DO_Spectrogram_help);
+	praat_addAction1 (classSpectrogram, 1, U"View", nullptr, 0, DO_Spectrogram_view);
+	praat_addAction1 (classSpectrogram, 1, U"Movie", nullptr, 0, DO_Spectrogram_movie);
+	praat_addAction1 (classSpectrogram, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFrameSampled_query_init (classSpectrogram);
-		praat_addAction1 (classSpectrogram, 1, U"Get power at...", 0, 1, DO_Spectrogram_getPowerAt);
-	praat_addAction1 (classSpectrogram, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classSpectrogram, 0, U"Paint...", 0, 1, DO_Spectrogram_paint);
-	praat_addAction1 (classSpectrogram, 0, U"Analyse -", 0, 0, 0);
-		praat_addAction1 (classSpectrogram, 0, U"To Spectrum (slice)...", 0, 1, DO_Spectrogram_to_Spectrum);
-	praat_addAction1 (classSpectrogram, 0, U"Synthesize -", 0, 0, 0);
-		praat_addAction1 (classSpectrogram, 0, U"To Sound...", 0, 1, DO_Spectrogram_to_Sound);
-	praat_addAction1 (classSpectrogram, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classSpectrogram, 1, U"Get power at...", nullptr, 1, DO_Spectrogram_getPowerAt);
+	praat_addAction1 (classSpectrogram, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrogram, 0, U"Paint...", nullptr, 1, DO_Spectrogram_paint);
+	praat_addAction1 (classSpectrogram, 0, U"Analyse -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrogram, 0, U"To Spectrum (slice)...", nullptr, 1, DO_Spectrogram_to_Spectrum);
+	praat_addAction1 (classSpectrogram, 0, U"Synthesize -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrogram, 0, U"To Sound...", nullptr, 1, DO_Spectrogram_to_Sound);
+	praat_addAction1 (classSpectrogram, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classSpectrogram);
-		praat_addAction1 (classSpectrogram, 0, U"Formula...", 0, 1, DO_Spectrogram_formula);
-	praat_addAction1 (classSpectrogram, 0, U"Hack -", 0, 0, 0);
-		praat_addAction1 (classSpectrogram, 0, U"To Matrix", 0, 1, DO_Spectrogram_to_Matrix);
-
-	praat_addAction1 (classSpectrum, 0, U"Spectrum help", 0, 0, DO_Spectrum_help);
-	praat_addAction1 (classSpectrum, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Spectrum_edit);
-	praat_addAction1 (classSpectrum, 1, U"Edit", 0, praat_HIDDEN, DO_Spectrum_edit);
-	praat_addAction1 (classSpectrum, 0, U"Sound -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 0, U"To Sound", 0, 1, DO_Spectrum_to_Sound);
-						praat_addAction1 (classSpectrum, 0, U"To Sound (fft)", 0, praat_HIDDEN + praat_DEPTH_1, DO_Spectrum_to_Sound);
-	praat_addAction1 (classSpectrum, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 0, U"Draw...", 0, 1, DO_Spectrum_draw);
-		praat_addAction1 (classSpectrum, 0, U"Draw (log freq)...", 0, 1, DO_Spectrum_drawLogFreq);
-	praat_addAction1 (classSpectrum, 1, U"Tabulate -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 1, U"List...", 0, 1, DO_Spectrum_list);
-	praat_addAction1 (classSpectrum, 1, U"Query -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 1, U"Frequency domain", 0, 1, 0);
-			praat_addAction1 (classSpectrum, 1, U"Get lowest frequency", 0, 2, DO_Spectrum_getLowestFrequency);
-			praat_addAction1 (classSpectrum, 1, U"Get highest frequency", 0, 2, DO_Spectrum_getHighestFrequency);
-		praat_addAction1 (classSpectrum, 1, U"Frequency sampling", 0, 1, 0);
-			praat_addAction1 (classSpectrum, 1, U"Get number of bins", 0, 2, DO_Spectrum_getNumberOfBins);
-			praat_addAction1 (classSpectrum, 1, U"Get bin width", 0, 2, DO_Spectrum_getBinWidth);
-			praat_addAction1 (classSpectrum, 1, U"Get frequency from bin number...", 0, 2, DO_Spectrum_getFrequencyFromBin);
-						praat_addAction1 (classSpectrum, 1, U"Get frequency from bin...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Spectrum_getFrequencyFromBin);
-			praat_addAction1 (classSpectrum, 1, U"Get bin number from frequency...", 0, 2, DO_Spectrum_getBinFromFrequency);
-						praat_addAction1 (classSpectrum, 1, U"Get bin from frequency...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Spectrum_getBinFromFrequency);
-		praat_addAction1 (classSpectrum, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classSpectrum, 1, U"Get real value in bin...", 0, 1, DO_Spectrum_getRealValueInBin);
-		praat_addAction1 (classSpectrum, 1, U"Get imaginary value in bin...", 0, 1, DO_Spectrum_getImaginaryValueInBin);
-		praat_addAction1 (classSpectrum, 1, U"-- get energy --", 0, 1, 0);
-		praat_addAction1 (classSpectrum, 1, U"Get band energy...", 0, 1, DO_Spectrum_getBandEnergy);
-		praat_addAction1 (classSpectrum, 1, U"Get band density...", 0, 1, DO_Spectrum_getBandDensity);
-		praat_addAction1 (classSpectrum, 1, U"Get band energy difference...", 0, 1, DO_Spectrum_getBandEnergyDifference);
-		praat_addAction1 (classSpectrum, 1, U"Get band density difference...", 0, 1, DO_Spectrum_getBandDensityDifference);
-		praat_addAction1 (classSpectrum, 1, U"-- get moments --", 0, 1, 0);
-		praat_addAction1 (classSpectrum, 1, U"Get centre of gravity...", 0, 1, DO_Spectrum_getCentreOfGravity);
-		praat_addAction1 (classSpectrum, 1, U"Get standard deviation...", 0, 1, DO_Spectrum_getStandardDeviation);
-		praat_addAction1 (classSpectrum, 1, U"Get skewness...", 0, 1, DO_Spectrum_getSkewness);
-		praat_addAction1 (classSpectrum, 1, U"Get kurtosis...", 0, 1, DO_Spectrum_getKurtosis);
-		praat_addAction1 (classSpectrum, 1, U"Get central moment...", 0, 1, DO_Spectrum_getCentralMoment);
-	praat_addAction1 (classSpectrum, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 0, U"Formula...", 0, 1, DO_Spectrum_formula);
-		praat_addAction1 (classSpectrum, 0, U"Filter (pass Hann band)...", 0, 1, DO_Spectrum_passHannBand);
-		praat_addAction1 (classSpectrum, 0, U"Filter (stop Hann band)...", 0, 1, DO_Spectrum_stopHannBand);
-	praat_addAction1 (classSpectrum, 0, U"Analyse -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 0, U"To Excitation...", 0, 1, DO_Spectrum_to_Excitation);
-		praat_addAction1 (classSpectrum, 0, U"To SpectrumTier (peaks)", 0, 1, DO_Spectrum_to_SpectrumTier_peaks);
-		praat_addAction1 (classSpectrum, 0, U"To Formant (peaks)...", 0, 1, DO_Spectrum_to_Formant_peaks);
-		praat_addAction1 (classSpectrum, 0, U"To Ltas...", 0, 1, DO_Spectrum_to_Ltas);
-		praat_addAction1 (classSpectrum, 0, U"To Ltas (1-to-1)", 0, 1, DO_Spectrum_to_Ltas_1to1);
-		praat_addAction1 (classSpectrum, 0, U"To Spectrogram", 0, 1, DO_Spectrum_to_Spectrogram);
-	praat_addAction1 (classSpectrum, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classSpectrum, 0, U"Cepstral smoothing...", 0, 1, DO_Spectrum_cepstralSmoothing);
-		praat_addAction1 (classSpectrum, 0, U"LPC smoothing...", 0, 1, DO_Spectrum_lpcSmoothing);
-		praat_addAction1 (classSpectrum, 0, U"Hack", 0, 1, 0);
-			praat_addAction1 (classSpectrum, 0, U"To Matrix", 0, 2, DO_Spectrum_to_Matrix);
-
-	praat_addAction1 (classSpectrumTier, 0, U"Draw...", 0, 0, DO_SpectrumTier_draw);
-	praat_addAction1 (classSpectrumTier, 0, U"Tabulate -", 0, 0, 0);
-		praat_addAction1 (classSpectrumTier, 1, U"List...", 0, 1, DO_SpectrumTier_list);
-		praat_addAction1 (classSpectrumTier, 0, U"Down to Table", 0, 1, DO_SpectrumTier_downto_Table);
-	praat_addAction1 (classSpectrumTier, 0, U"Remove points below...", 0, 0, DO_SpectrumTier_removePointsBelow);
-
-	praat_addAction1 (classStrings, 0, U"Strings help", 0, 0, DO_Strings_help);
-	praat_addAction1 (classStrings, 1, U"Save as raw text file...", 0, 0, DO_Strings_writeToRawTextFile);
-	praat_addAction1 (classStrings, 1, U"Write to raw text file...", 0, praat_HIDDEN, DO_Strings_writeToRawTextFile);
-	praat_addAction1 (classStrings, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Strings_edit);
-	praat_addAction1 (classStrings, 1, U"Edit", 0, praat_HIDDEN, DO_Strings_edit);
-	praat_addAction1 (classStrings, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classStrings, 2, U"Equal?", 0, 1, DO_Strings_equal);
-		praat_addAction1 (classStrings, 1, U"Get number of strings", 0, 1, DO_Strings_getNumberOfStrings);
-		praat_addAction1 (classStrings, 1, U"Get string...", 0, 1, DO_Strings_getString);
-	praat_addAction1 (classStrings, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classStrings, 0, U"Set string...", 0, 1, DO_Strings_setString);
-		praat_addAction1 (classStrings, 0, U"Insert string...", 0, 1, DO_Strings_insertString);
-		praat_addAction1 (classStrings, 0, U"Remove string...", 0, 1, DO_Strings_removeString);
-		praat_addAction1 (classStrings, 0, U"-- modify order --", 0, 1, 0);
-		praat_addAction1 (classStrings, 0, U"Randomize", 0, 1, DO_Strings_randomize);
-		praat_addAction1 (classStrings, 0, U"Sort", 0, 1, DO_Strings_sort);
-		praat_addAction1 (classStrings, 0, U"-- convert --", 0, 1, 0);
-		praat_addAction1 (classStrings, 0, U"Replace all...", 0, 1, DO_Strings_replaceAll);
-		praat_addAction1 (classStrings, 0, U"Genericize", 0, 1, DO_Strings_genericize);
-		praat_addAction1 (classStrings, 0, U"Nativize", 0, 1, DO_Strings_nativize);
-	praat_addAction1 (classStrings, 0, U"Analyze", 0, 0, 0);
-		praat_addAction1 (classStrings, 0, U"To Distributions", 0, 0, DO_Strings_to_Distributions);
-	praat_addAction1 (classStrings, 0, U"Synthesize", 0, 0, 0);
-		praat_addAction1 (classStrings, 0, U"To WordList", 0, 0, DO_Strings_to_WordList);
-
-	praat_addAction1 (classTable, 0, U"Down to Matrix", 0, 0, DO_Table_to_Matrix);
-
-	praat_addAction1 (classTransition, 0, U"Transition help", 0, 0, DO_Transition_help);
-praat_addAction1 (classTransition, 0, U"Draw", 0, 0, 0);
-	praat_addAction1 (classTransition, 0, U"Draw as numbers...", 0, 0, DO_Transition_drawAsNumbers);
-praat_addAction1 (classTransition, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classTransition, 0, U"Eigen", 0, 0, DO_Transition_eigen);
-	praat_addAction1 (classTransition, 0, U"Conflate", 0, 0, DO_Transition_conflate);
-praat_addAction1 (classTransition, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classTransition, 0, U"Power...", 0, 0, DO_Transition_power);
-praat_addAction1 (classTransition, 0, U"Cast", 0, 0, 0);
-	praat_addAction1 (classTransition, 0, U"To Matrix", 0, 0, DO_Transition_to_Matrix);
-
-	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_AmplitudeTier_edit);
-	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"Edit", 0, praat_HIDDEN, DO_AmplitudeTier_edit);   // hidden 2011
-	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"Multiply", 0, 0, DO_Sound_AmplitudeTier_multiply);
-	praat_addAction2 (classDistributions, 1, classTransition, 1, U"Map", 0, 0, DO_Distributions_Transition_map);
-	praat_addAction2 (classDistributions, 1, classTransition, 1, U"To Transition...", 0, 0, DO_Distributions_to_Transition_adj);
-	praat_addAction2 (classDistributions, 2, classTransition, 1, U"To Transition (noise)...", 0, 0, DO_Distributions_to_Transition_noise_adj);
-	praat_addAction2 (classDurationTier, 1, classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_DurationTier_edit);
-	praat_addAction2 (classDurationTier, 1, classSound, 1, U"Edit", 0, praat_HIDDEN, DO_DurationTier_edit);
-	praat_addAction2 (classFormant, 1, classPointProcess, 1, U"To FormantTier", 0, 0, DO_Formant_PointProcess_to_FormantTier);
-	praat_addAction2 (classFormant, 1, classSound, 1, U"Filter", 0, 0, DO_Sound_Formant_filter);
-	praat_addAction2 (classFormant, 1, classSound, 1, U"Filter (no scale)", 0, 0, DO_Sound_Formant_filter_noscale);
-	praat_addAction2 (classFormantGrid, 1, classSound, 1, U"Filter", 0, 0, DO_Sound_FormantGrid_filter);
-	praat_addAction2 (classFormantGrid, 1, classSound, 1, U"Filter (no scale)", 0, 0, DO_Sound_FormantGrid_filter_noscale);
-	praat_addAction2 (classFormantTier, 1, classSound, 1, U"Filter", 0, 0, DO_Sound_FormantTier_filter);
-	praat_addAction2 (classFormantTier, 1, classSound, 1, U"Filter (no scale)", 0, 0, DO_Sound_FormantTier_filter_noscale);
-	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Draw", 0, 0, 0);
-	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Draw (phonetogram)...", 0, 0, DO_Pitch_Intensity_draw);
-	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Speckle (phonetogram)...", 0, praat_HIDDEN, DO_Pitch_Intensity_speckle);   /* grandfathered 2005 */
-	praat_addAction2 (classIntensity, 1, classPointProcess, 1, U"To IntensityTier", 0, 0, DO_Intensity_PointProcess_to_IntensityTier);
-	praat_addAction2 (classIntensityTier, 1, classPointProcess, 1, U"To IntensityTier", 0, 0, DO_IntensityTier_PointProcess_to_IntensityTier);
-	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_IntensityTier_edit);
-	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Edit", 0, praat_HIDDEN, DO_IntensityTier_edit);
-	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Multiply", 0, praat_HIDDEN, DO_Sound_IntensityTier_multiply_old);
-	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Multiply...", 0, 0, DO_Sound_IntensityTier_multiply);
-	praat_addAction2 (classManipulation, 1, classSound, 1, U"Replace original sound", 0, 0, DO_Manipulation_replaceOriginalSound);
-	praat_addAction2 (classManipulation, 1, classPointProcess, 1, U"Replace pulses", 0, 0, DO_Manipulation_replacePulses);
-	praat_addAction2 (classManipulation, 1, classPitchTier, 1, U"Replace pitch tier", 0, 0, DO_Manipulation_replacePitchTier);
-	praat_addAction2 (classManipulation, 1, classDurationTier, 1, U"Replace duration tier", 0, 0, DO_Manipulation_replaceDurationTier);
-	praat_addAction2 (classManipulation, 1, classTextTier, 1, U"To Manipulation", 0, 0, DO_Manipulation_TextTier_to_Manipulation);
-	praat_addAction2 (classMatrix, 1, classSound, 1, U"To ParamCurve", 0, 0, DO_Matrix_to_ParamCurve);
-	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace red", 0, 0, DO_Photo_Matrix_replaceRed);
-	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace green", 0, 0, DO_Photo_Matrix_replaceGreen);
-	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace blue", 0, 0, DO_Photo_Matrix_replaceBlue);
-	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace transparency", 0, 0, DO_Photo_Matrix_replaceTransparency);
-	praat_addAction2 (classPitch, 1, classPitchTier, 1, U"Draw...", 0, 0, DO_PitchTier_Pitch_draw);
-	praat_addAction2 (classPitch, 1, classPitchTier, 1, U"To Pitch", 0, 0, DO_Pitch_PitchTier_to_Pitch);
-	praat_addAction2 (classPitch, 1, classPointProcess, 1, U"To PitchTier", 0, 0, DO_Pitch_PointProcess_to_PitchTier);
-	praat_addAction3 (classPitch, 1, classPointProcess, 1, classSound, 1, U"Voice report...", 0, 0, DO_Sound_Pitch_PointProcess_voiceReport);
-	praat_addAction2 (classPitch, 1, classSound, 1, U"To PointProcess (cc)", 0, 0, DO_Sound_Pitch_to_PointProcess_cc);
-	praat_addAction2 (classPitch, 1, classSound, 1, U"To PointProcess (peaks)...", 0, 0, DO_Sound_Pitch_to_PointProcess_peaks);
-	praat_addAction2 (classPitch, 1, classSound, 1, U"To Manipulation", 0, 0, DO_Sound_Pitch_to_Manipulation);
-	praat_addAction2 (classPitchTier, 1, classPointProcess, 1, U"To PitchTier", 0, 0, DO_PitchTier_PointProcess_to_PitchTier);
-	praat_addAction2 (classPitchTier, 1, classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_PitchTier_edit);
-	praat_addAction2 (classPitchTier, 1, classSound, 1, U"Edit", 0, praat_HIDDEN, DO_PitchTier_edit);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_PointProcess_edit);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Edit", 0, praat_HIDDEN, DO_PointProcess_edit);
-praat_addAction2 (classPointProcess, 1, classSound, 1, U"Query", 0, 0, 0);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (local)...", 0, 0, DO_Point_Sound_getShimmer_local);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (local_dB)...", 0, 0, DO_Point_Sound_getShimmer_local_dB);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq3)...", 0, 0, DO_Point_Sound_getShimmer_apq3);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq5)...", 0, 0, DO_Point_Sound_getShimmer_apq5);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq11)...", 0, 0, DO_Point_Sound_getShimmer_apq11);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (dda)...", 0, 0, DO_Point_Sound_getShimmer_dda);
-praat_addAction2 (classPointProcess, 1, classSound, 1, U"Modify", 0, 0, 0);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Transplant time domain", 0, 0, DO_Point_Sound_transplantDomain);
-praat_addAction2 (classPointProcess, 1, classSound, 1, U"Analyse", 0, 0, 0);
-	/*praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Manipulation", 0, 0, DO_Sound_PointProcess_to_Manipulation);*/
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To AmplitudeTier (point)", 0, 0, DO_PointProcess_Sound_to_AmplitudeTier_point);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To AmplitudeTier (period)...", 0, 0, DO_PointProcess_Sound_to_AmplitudeTier_period);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Ltas...", 0, 0, DO_PointProcess_Sound_to_Ltas);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Ltas (only harmonics)...", 0, 0, DO_PointProcess_Sound_to_Ltas_harmonics);
-praat_addAction2 (classPointProcess, 1, classSound, 1, U"Synthesize", 0, 0, 0);
-	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Sound ensemble...", 0, 0, DO_Sound_PointProcess_to_SoundEnsemble_correlate);
-
-	praat_addAction4 (classDurationTier, 1, classPitchTier, 1, classPointProcess, 1, classSound, 1, U"To Sound...", 0, 0, DO_Sound_Point_Pitch_Duration_to_Sound);
+		praat_addAction1 (classSpectrogram, 0, U"Formula...", nullptr, 1, DO_Spectrogram_formula);
+	praat_addAction1 (classSpectrogram, 0, U"Hack -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrogram, 0, U"To Matrix", nullptr, 1, DO_Spectrogram_to_Matrix);
+
+	praat_addAction1 (classSpectrum, 0, U"Spectrum help", nullptr, 0, DO_Spectrum_help);
+	praat_addAction1 (classSpectrum, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Spectrum_edit);
+	praat_addAction1 (classSpectrum, 1, U"Edit", nullptr, praat_HIDDEN, DO_Spectrum_edit);
+	praat_addAction1 (classSpectrum, 0, U"Sound -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 0, U"To Sound", nullptr, 1, DO_Spectrum_to_Sound);
+						praat_addAction1 (classSpectrum, 0, U"To Sound (fft)", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Spectrum_to_Sound);
+	praat_addAction1 (classSpectrum, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 0, U"Draw...", nullptr, 1, DO_Spectrum_draw);
+		praat_addAction1 (classSpectrum, 0, U"Draw (log freq)...", nullptr, 1, DO_Spectrum_drawLogFreq);
+	praat_addAction1 (classSpectrum, 1, U"Tabulate -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 1, U"List...", nullptr, 1, DO_Spectrum_list);
+	praat_addAction1 (classSpectrum, 1, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 1, U"Frequency domain", nullptr, 1, nullptr);
+			praat_addAction1 (classSpectrum, 1, U"Get lowest frequency", nullptr, 2, DO_Spectrum_getLowestFrequency);
+			praat_addAction1 (classSpectrum, 1, U"Get highest frequency", nullptr, 2, DO_Spectrum_getHighestFrequency);
+		praat_addAction1 (classSpectrum, 1, U"Frequency sampling", nullptr, 1, nullptr);
+			praat_addAction1 (classSpectrum, 1, U"Get number of bins", nullptr, 2, DO_Spectrum_getNumberOfBins);
+			praat_addAction1 (classSpectrum, 1, U"Get bin width", nullptr, 2, DO_Spectrum_getBinWidth);
+			praat_addAction1 (classSpectrum, 1, U"Get frequency from bin number...", nullptr, 2, DO_Spectrum_getFrequencyFromBin);
+						praat_addAction1 (classSpectrum, 1, U"Get frequency from bin...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Spectrum_getFrequencyFromBin);
+			praat_addAction1 (classSpectrum, 1, U"Get bin number from frequency...", nullptr, 2, DO_Spectrum_getBinFromFrequency);
+						praat_addAction1 (classSpectrum, 1, U"Get bin from frequency...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Spectrum_getBinFromFrequency);
+		praat_addAction1 (classSpectrum, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classSpectrum, 1, U"Get real value in bin...", nullptr, 1, DO_Spectrum_getRealValueInBin);
+		praat_addAction1 (classSpectrum, 1, U"Get imaginary value in bin...", nullptr, 1, DO_Spectrum_getImaginaryValueInBin);
+		praat_addAction1 (classSpectrum, 1, U"-- get energy --", nullptr, 1, nullptr);
+		praat_addAction1 (classSpectrum, 1, U"Get band energy...", nullptr, 1, DO_Spectrum_getBandEnergy);
+		praat_addAction1 (classSpectrum, 1, U"Get band density...", nullptr, 1, DO_Spectrum_getBandDensity);
+		praat_addAction1 (classSpectrum, 1, U"Get band energy difference...", nullptr, 1, DO_Spectrum_getBandEnergyDifference);
+		praat_addAction1 (classSpectrum, 1, U"Get band density difference...", nullptr, 1, DO_Spectrum_getBandDensityDifference);
+		praat_addAction1 (classSpectrum, 1, U"-- get moments --", nullptr, 1, nullptr);
+		praat_addAction1 (classSpectrum, 1, U"Get centre of gravity...", nullptr, 1, DO_Spectrum_getCentreOfGravity);
+		praat_addAction1 (classSpectrum, 1, U"Get standard deviation...", nullptr, 1, DO_Spectrum_getStandardDeviation);
+		praat_addAction1 (classSpectrum, 1, U"Get skewness...", nullptr, 1, DO_Spectrum_getSkewness);
+		praat_addAction1 (classSpectrum, 1, U"Get kurtosis...", nullptr, 1, DO_Spectrum_getKurtosis);
+		praat_addAction1 (classSpectrum, 1, U"Get central moment...", nullptr, 1, DO_Spectrum_getCentralMoment);
+	praat_addAction1 (classSpectrum, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 0, U"Formula...", nullptr, 1, DO_Spectrum_formula);
+		praat_addAction1 (classSpectrum, 0, U"Filter (pass Hann band)...", nullptr, 1, DO_Spectrum_passHannBand);
+		praat_addAction1 (classSpectrum, 0, U"Filter (stop Hann band)...", nullptr, 1, DO_Spectrum_stopHannBand);
+	praat_addAction1 (classSpectrum, 0, U"Analyse -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 0, U"To Excitation...", nullptr, 1, DO_Spectrum_to_Excitation);
+		praat_addAction1 (classSpectrum, 0, U"To SpectrumTier (peaks)", nullptr, 1, DO_Spectrum_to_SpectrumTier_peaks);
+		praat_addAction1 (classSpectrum, 0, U"To Formant (peaks)...", nullptr, 1, DO_Spectrum_to_Formant_peaks);
+		praat_addAction1 (classSpectrum, 0, U"To Ltas...", nullptr, 1, DO_Spectrum_to_Ltas);
+		praat_addAction1 (classSpectrum, 0, U"To Ltas (1-to-1)", nullptr, 1, DO_Spectrum_to_Ltas_1to1);
+		praat_addAction1 (classSpectrum, 0, U"To Spectrogram", nullptr, 1, DO_Spectrum_to_Spectrogram);
+	praat_addAction1 (classSpectrum, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrum, 0, U"Cepstral smoothing...", nullptr, 1, DO_Spectrum_cepstralSmoothing);
+		praat_addAction1 (classSpectrum, 0, U"LPC smoothing...", nullptr, 1, DO_Spectrum_lpcSmoothing);
+		praat_addAction1 (classSpectrum, 0, U"Hack", nullptr, 1, nullptr);
+			praat_addAction1 (classSpectrum, 0, U"To Matrix", nullptr, 2, DO_Spectrum_to_Matrix);
+
+	praat_addAction1 (classSpectrumTier, 0, U"Draw...", nullptr, 0, DO_SpectrumTier_draw);
+	praat_addAction1 (classSpectrumTier, 0, U"Tabulate -", nullptr, 0, nullptr);
+		praat_addAction1 (classSpectrumTier, 1, U"List...", nullptr, 1, DO_SpectrumTier_list);
+		praat_addAction1 (classSpectrumTier, 0, U"Down to Table", nullptr, 1, DO_SpectrumTier_downto_Table);
+	praat_addAction1 (classSpectrumTier, 0, U"Remove points below...", nullptr, 0, DO_SpectrumTier_removePointsBelow);
+
+	praat_addAction1 (classStrings, 0, U"Strings help", nullptr, 0, DO_Strings_help);
+	praat_addAction1 (classStrings, 1, U"Save as raw text file...", nullptr, 0, DO_Strings_writeToRawTextFile);
+	praat_addAction1 (classStrings, 1, U"Write to raw text file...", nullptr, praat_HIDDEN, DO_Strings_writeToRawTextFile);
+	praat_addAction1 (classStrings, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Strings_edit);
+	praat_addAction1 (classStrings, 1, U"Edit", nullptr, praat_HIDDEN, DO_Strings_edit);
+	praat_addAction1 (classStrings, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classStrings, 2, U"Equal?", nullptr, 1, DO_Strings_equal);
+		praat_addAction1 (classStrings, 1, U"Get number of strings", nullptr, 1, DO_Strings_getNumberOfStrings);
+		praat_addAction1 (classStrings, 1, U"Get string...", nullptr, 1, DO_Strings_getString);
+	praat_addAction1 (classStrings, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classStrings, 0, U"Set string...", nullptr, 1, DO_Strings_setString);
+		praat_addAction1 (classStrings, 0, U"Insert string...", nullptr, 1, DO_Strings_insertString);
+		praat_addAction1 (classStrings, 0, U"Remove string...", nullptr, 1, DO_Strings_removeString);
+		praat_addAction1 (classStrings, 0, U"-- modify order --", nullptr, 1, nullptr);
+		praat_addAction1 (classStrings, 0, U"Randomize", nullptr, 1, DO_Strings_randomize);
+		praat_addAction1 (classStrings, 0, U"Sort", nullptr, 1, DO_Strings_sort);
+		praat_addAction1 (classStrings, 0, U"-- convert --", nullptr, 1, nullptr);
+		praat_addAction1 (classStrings, 0, U"Replace all...", nullptr, 1, DO_Strings_replaceAll);
+		praat_addAction1 (classStrings, 0, U"Genericize", nullptr, 1, DO_Strings_genericize);
+		praat_addAction1 (classStrings, 0, U"Nativize", nullptr, 1, DO_Strings_nativize);
+	praat_addAction1 (classStrings, 0, U"Analyze", nullptr, 0, nullptr);
+		praat_addAction1 (classStrings, 0, U"To Distributions", nullptr, 0, DO_Strings_to_Distributions);
+	praat_addAction1 (classStrings, 0, U"Synthesize", nullptr, 0, nullptr);
+		praat_addAction1 (classStrings, 0, U"To WordList", nullptr, 0, DO_Strings_to_WordList);
+
+	praat_addAction1 (classTable, 0, U"Down to Matrix", nullptr, 0, DO_Table_to_Matrix);
+
+	praat_addAction1 (classTransition, 0, U"Transition help", nullptr, 0, DO_Transition_help);
+praat_addAction1 (classTransition, 0, U"Draw", nullptr, 0, nullptr);
+	praat_addAction1 (classTransition, 0, U"Draw as numbers...", nullptr, 0, DO_Transition_drawAsNumbers);
+praat_addAction1 (classTransition, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classTransition, 0, U"Eigen", nullptr, 0, DO_Transition_eigen);
+	praat_addAction1 (classTransition, 0, U"Conflate", nullptr, 0, DO_Transition_conflate);
+praat_addAction1 (classTransition, 0, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction1 (classTransition, 0, U"Power...", nullptr, 0, DO_Transition_power);
+praat_addAction1 (classTransition, 0, U"Cast", nullptr, 0, nullptr);
+	praat_addAction1 (classTransition, 0, U"To Matrix", nullptr, 0, DO_Transition_to_Matrix);
+
+	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_AmplitudeTier_edit);
+	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_AmplitudeTier_edit);   // hidden 2011
+	praat_addAction2 (classAmplitudeTier, 1, classSound, 1, U"Multiply", nullptr, 0, DO_Sound_AmplitudeTier_multiply);
+	praat_addAction2 (classDistributions, 1, classTransition, 1, U"Map", nullptr, 0, DO_Distributions_Transition_map);
+	praat_addAction2 (classDistributions, 1, classTransition, 1, U"To Transition...", nullptr, 0, DO_Distributions_to_Transition_adj);
+	praat_addAction2 (classDistributions, 2, classTransition, 1, U"To Transition (noise)...", nullptr, 0, DO_Distributions_to_Transition_noise_adj);
+	praat_addAction2 (classDurationTier, 1, classSound, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_DurationTier_edit);
+	praat_addAction2 (classDurationTier, 1, classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_DurationTier_edit);
+	praat_addAction2 (classFormant, 1, classPointProcess, 1, U"To FormantTier", nullptr, 0, DO_Formant_PointProcess_to_FormantTier);
+	praat_addAction2 (classFormant, 1, classSound, 1, U"Filter", nullptr, 0, DO_Sound_Formant_filter);
+	praat_addAction2 (classFormant, 1, classSound, 1, U"Filter (no scale)", nullptr, 0, DO_Sound_Formant_filter_noscale);
+	praat_addAction2 (classFormantGrid, 1, classSound, 1, U"Filter", nullptr, 0, DO_Sound_FormantGrid_filter);
+	praat_addAction2 (classFormantGrid, 1, classSound, 1, U"Filter (no scale)", nullptr, 0, DO_Sound_FormantGrid_filter_noscale);
+	praat_addAction2 (classFormantTier, 1, classSound, 1, U"Filter", nullptr, 0, DO_Sound_FormantTier_filter);
+	praat_addAction2 (classFormantTier, 1, classSound, 1, U"Filter (no scale)", nullptr, 0, DO_Sound_FormantTier_filter_noscale);
+	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Draw", nullptr, 0, nullptr);
+	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Draw (phonetogram)...", nullptr, 0, DO_Pitch_Intensity_draw);
+	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Speckle (phonetogram)...", nullptr, praat_HIDDEN, DO_Pitch_Intensity_speckle);   /* grandfathered 2005 */
+	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Get mean", nullptr, 1, DO_Pitch_Intensity_getMean);
+	praat_addAction2 (classIntensity, 1, classPitch, 1, U"Get mean absolute slope", nullptr, 1, DO_Pitch_Intensity_getMeanAbsoluteSlope);
+	praat_addAction2 (classIntensity, 1, classPointProcess, 1, U"To IntensityTier", nullptr, 0, DO_Intensity_PointProcess_to_IntensityTier);
+	praat_addAction2 (classIntensityTier, 1, classPointProcess, 1, U"To IntensityTier", nullptr, 0, DO_IntensityTier_PointProcess_to_IntensityTier);
+	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_IntensityTier_edit);
+	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_IntensityTier_edit);
+	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Multiply", nullptr, praat_HIDDEN, DO_Sound_IntensityTier_multiply_old);
+	praat_addAction2 (classIntensityTier, 1, classSound, 1, U"Multiply...", nullptr, 0, DO_Sound_IntensityTier_multiply);
+	praat_addAction2 (classManipulation, 1, classSound, 1, U"Replace original sound", nullptr, 0, DO_Manipulation_replaceOriginalSound);
+	praat_addAction2 (classManipulation, 1, classPointProcess, 1, U"Replace pulses", nullptr, 0, DO_Manipulation_replacePulses);
+	praat_addAction2 (classManipulation, 1, classPitchTier, 1, U"Replace pitch tier", nullptr, 0, DO_Manipulation_replacePitchTier);
+	praat_addAction2 (classManipulation, 1, classDurationTier, 1, U"Replace duration tier", nullptr, 0, DO_Manipulation_replaceDurationTier);
+	praat_addAction2 (classManipulation, 1, classTextTier, 1, U"To Manipulation", nullptr, 0, DO_Manipulation_TextTier_to_Manipulation);
+	praat_addAction2 (classMatrix, 1, classSound, 1, U"To ParamCurve", nullptr, 0, DO_Matrix_to_ParamCurve);
+	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace red", nullptr, 0, DO_Photo_Matrix_replaceRed);
+	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace green", nullptr, 0, DO_Photo_Matrix_replaceGreen);
+	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace blue", nullptr, 0, DO_Photo_Matrix_replaceBlue);
+	praat_addAction2 (classPhoto, 1, classMatrix, 1, U"Replace transparency", nullptr, 0, DO_Photo_Matrix_replaceTransparency);
+	praat_addAction2 (classPitch, 1, classPitchTier, 1, U"Draw...", nullptr, 0, DO_PitchTier_Pitch_draw);
+	praat_addAction2 (classPitch, 1, classPitchTier, 1, U"To Pitch", nullptr, 0, DO_Pitch_PitchTier_to_Pitch);
+	praat_addAction2 (classPitch, 1, classPointProcess, 1, U"To PitchTier", nullptr, 0, DO_Pitch_PointProcess_to_PitchTier);
+	praat_addAction3 (classPitch, 1, classPointProcess, 1, classSound, 1, U"Voice report...", nullptr, 0, DO_Sound_Pitch_PointProcess_voiceReport);
+	praat_addAction2 (classPitch, 1, classSound, 1, U"To PointProcess (cc)", nullptr, 0, DO_Sound_Pitch_to_PointProcess_cc);
+	praat_addAction2 (classPitch, 1, classSound, 1, U"To PointProcess (peaks)...", nullptr, 0, DO_Sound_Pitch_to_PointProcess_peaks);
+	praat_addAction2 (classPitch, 1, classSound, 1, U"To Manipulation", nullptr, 0, DO_Sound_Pitch_to_Manipulation);
+	praat_addAction2 (classPitchTier, 1, classPointProcess, 1, U"To PitchTier", nullptr, 0, DO_PitchTier_PointProcess_to_PitchTier);
+	praat_addAction2 (classPitchTier, 1, classSound, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_PitchTier_edit);
+	praat_addAction2 (classPitchTier, 1, classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_PitchTier_edit);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_PointProcess_edit);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_PointProcess_edit);
+praat_addAction2 (classPointProcess, 1, classSound, 1, U"Query", nullptr, 0, nullptr);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (local)...", nullptr, 0, DO_Point_Sound_getShimmer_local);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (local_dB)...", nullptr, 0, DO_Point_Sound_getShimmer_local_dB);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq3)...", nullptr, 0, DO_Point_Sound_getShimmer_apq3);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq5)...", nullptr, 0, DO_Point_Sound_getShimmer_apq5);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (apq11)...", nullptr, 0, DO_Point_Sound_getShimmer_apq11);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Get shimmer (dda)...", nullptr, 0, DO_Point_Sound_getShimmer_dda);
+praat_addAction2 (classPointProcess, 1, classSound, 1, U"Modify", nullptr, 0, nullptr);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"Transplant time domain", nullptr, 0, DO_Point_Sound_transplantDomain);
+praat_addAction2 (classPointProcess, 1, classSound, 1, U"Analyse", nullptr, 0, nullptr);
+	/*praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Manipulation", nullptr, 0, DO_Sound_PointProcess_to_Manipulation);*/
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To AmplitudeTier (point)", nullptr, 0, DO_PointProcess_Sound_to_AmplitudeTier_point);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To AmplitudeTier (period)...", nullptr, 0, DO_PointProcess_Sound_to_AmplitudeTier_period);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Ltas...", nullptr, 0, DO_PointProcess_Sound_to_Ltas);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Ltas (only harmonics)...", nullptr, 0, DO_PointProcess_Sound_to_Ltas_harmonics);
+praat_addAction2 (classPointProcess, 1, classSound, 1, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction2 (classPointProcess, 1, classSound, 1, U"To Sound ensemble...", nullptr, 0, DO_Sound_PointProcess_to_SoundEnsemble_correlate);
+
+	praat_addAction4 (classDurationTier, 1, classPitchTier, 1, classPointProcess, 1, classSound, 1, U"To Sound...", nullptr, 0, DO_Sound_Point_Pitch_Duration_to_Sound);
 
 	INCLUDE_MANPAGES (manual_Manual_init)
 	INCLUDE_MANPAGES (manual_Script_init)
@@ -7216,10 +7294,10 @@ praat_addAction2 (classPointProcess, 1, classSound, 1, U"Synthesize", 0, 0, 0);
 	INCLUDE_MANPAGES (manual_EEG_init)
 
 	INCLUDE_LIBRARY (praat_EEG_init)
-	praat_addMenuCommand (U"Objects", U"New", U"-- new synthesis --", 0, 0, 0);
+	praat_addMenuCommand (U"Objects", U"New", U"-- new synthesis --", nullptr, 0, nullptr);
 	INCLUDE_LIBRARY (praat_uvafon_Artsynth_init)
 	INCLUDE_LIBRARY (praat_uvafon_David_init)
-	praat_addMenuCommand (U"Objects", U"New", U"-- new grammars --", 0, 0, 0);
+	praat_addMenuCommand (U"Objects", U"New", U"-- new grammars --", nullptr, 0, nullptr);
 	INCLUDE_LIBRARY (praat_uvafon_gram_init)
 	INCLUDE_LIBRARY (praat_uvafon_FFNet_init)
 	INCLUDE_LIBRARY (praat_uvafon_LPC_init)
diff --git a/fon/praat_Sound_init.cpp b/fon/praat_Sound_init.cpp
index 2a7c50a..e9ecc23 100644
--- a/fon/praat_Sound_init.cpp
+++ b/fon/praat_Sound_init.cpp
@@ -1,20 +1,19 @@
 /* praat_Sound_init.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -38,10 +37,6 @@
 #include "TextGrid_Sound.h"
 #include "mp3.h"
 
-#ifndef LONG_MAX
-	#define LONG_MAX  2147483647
-#endif
-
 #undef iam
 #define iam iam_LOOP
 
@@ -55,16 +50,16 @@ DIRECT2 (LongSound_concatenate) {
 		"The result will be a sound file that contains\nthe concatenation of the selected sounds.");
 END2 }
 
-FORM (LongSound_extractPart, U"LongSound: Extract part", 0) {
+FORM (LongSound_extractPart, U"LongSound: Extract part", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1.0")
-	BOOLEAN (U"Preserve times", 1)
+	BOOLEAN (U"Preserve times", true)
 	OK2
 DO
 	LOOP {
 		iam (LongSound);
 		autoSound thee = LongSound_extractPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_INTEGER (U"Preserve times"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -75,7 +70,7 @@ DO
 	LOOP {
 		iam (LongSound);
 		double index = Sampled_xToIndex (me, GET_REAL (U"Time"));
-		Melder_informationReal (index, NULL);
+		Melder_informationReal (index, nullptr);
 	}
 END2 }
 
@@ -112,12 +107,12 @@ END2 }
 
 DIRECT2 (LongSound_help) { Melder_help (U"LongSound"); END2 }
 
-FORM_READ2 (LongSound_open, U"Open long sound file", 0, true) {
+FORM_READ2 (LongSound_open, U"Open long sound file", nullptr, true) {
 	autoLongSound me = LongSound_open (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-FORM (LongSound_playPart, U"LongSound: Play part", 0) {
+FORM (LongSound_playPart, U"LongSound: Play part", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"10.0")
 	OK2
@@ -127,19 +122,19 @@ DO
 	if (n == 1 || MelderAudio_getOutputMaximumAsynchronicity () < kMelder_asynchronicityLevel_ASYNCHRONOUS) {
 		LOOP {
 			iam (LongSound);
-			LongSound_playPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), NULL, NULL);
+			LongSound_playPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), nullptr, nullptr);
 		}
 	} else {
 		MelderAudio_setOutputMaximumAsynchronicity (kMelder_asynchronicityLevel_INTERRUPTABLE);
 		LOOP {
 			iam (LongSound);
-			LongSound_playPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), NULL, NULL);
+			LongSound_playPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), nullptr, nullptr);
 		}
 		MelderAudio_setOutputMaximumAsynchronicity (kMelder_asynchronicityLevel_ASYNCHRONOUS);
 	}
 END2 }
 
-FORM (LongSound_writePartToAudioFile, U"LongSound: Save part as audio file", 0) {
+FORM (LongSound_writePartToAudioFile, U"LongSound: Save part as audio file", nullptr) {
 	LABEL (U"", U"Audio file:")
 	TEXTFIELD (U"Audio file", U"")
 	RADIO (U"Type", 3)
@@ -155,7 +150,7 @@ DO
 		structMelderFile file = { 0 };
 		Melder_relativePathToFile (GET_STRING (U"Audio file"), & file);
 		LongSound_writePartToAudioFile (me, GET_INTEGER (U"Type"),
-			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), & file);
+			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), & file, 16);
 	}
 END2 }
 	
@@ -167,7 +162,7 @@ DO
 	LOOP {
 		iam (LongSound);
 		autoTextGrid thee = TextGrid_create (my xmin, my xmax, GET_STRING (U"Tier names"), GET_STRING (U"Point tiers"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -176,104 +171,129 @@ DIRECT2 (LongSound_view) {
 	LOOP {
 		iam (LongSound);
 		autoSoundEditor editor = SoundEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeToAifcFile, U"Save as AIFC file", 0, U"aifc") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFC, 16);
+FORM_WRITE2 (LongSound_writeToAifcFile, U"Save as AIFC file", nullptr, U"aifc") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFC, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeToAiffFile, U"Save as AIFF file", 0, U"aiff") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFF, 16);
+FORM_WRITE2 (LongSound_writeToAiffFile, U"Save as AIFF file", nullptr, U"aiff") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFF, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeToNextSunFile, U"Save as NeXT/Sun file", 0, U"au") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NEXT_SUN, 16);
+FORM_WRITE2 (LongSound_writeToNextSunFile, U"Save as NeXT/Sun file", nullptr, U"au") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NEXT_SUN, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeToNistFile, U"Save as NIST file", 0, U"nist") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NIST, 16);
+FORM_WRITE2 (LongSound_writeToNistFile, U"Save as NIST file", nullptr, U"nist") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NIST, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeToFlacFile, U"Save as FLAC file", 0, U"flac") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_FLAC, 16);
+FORM_WRITE2 (LongSound_writeToFlacFile, U"Save as FLAC file", nullptr, U"flac") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_FLAC, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeToWavFile, U"Save as WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_WAV, 16);
+FORM_WRITE2 (LongSound_writeToWavFile, U"Save as WAV file", nullptr, U"wav") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_WAV, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToAifcFile, U"Save left channel as AIFC file", 0, U"aifc") {
+FORM_WRITE2 (LongSound_writeLeftChannelToAifcFile, U"Save left channel as AIFC file", nullptr, U"aifc") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_AIFC, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToAiffFile, U"Save left channel as AIFF file", 0, U"aiff") {
+FORM_WRITE2 (LongSound_writeLeftChannelToAiffFile, U"Save left channel as AIFF file", nullptr, U"aiff") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_AIFF, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToNextSunFile, U"Save left channel as NeXT/Sun file", 0, U"au") {
+FORM_WRITE2 (LongSound_writeLeftChannelToNextSunFile, U"Save left channel as NeXT/Sun file", nullptr, U"au") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_NEXT_SUN, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToNistFile, U"Save left channel as NIST file", 0, U"nist") {
+FORM_WRITE2 (LongSound_writeLeftChannelToNistFile, U"Save left channel as NIST file", nullptr, U"nist") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_NIST, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToFlacFile, U"Save left channel as FLAC file", 0, U"flac") {
+FORM_WRITE2 (LongSound_writeLeftChannelToFlacFile, U"Save left channel as FLAC file", nullptr, U"flac") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_FLAC, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeLeftChannelToWavFile, U"Save left channel as WAV file", 0, U"wav") {
+FORM_WRITE2 (LongSound_writeLeftChannelToWavFile, U"Save left channel as WAV file", nullptr, U"wav") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_WAV, 0, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeRightChannelToAifcFile, U"Save right channel as AIFC file", 0, U"aifc") {
+FORM_WRITE2 (LongSound_writeRightChannelToAifcFile, U"Save right channel as AIFC file", nullptr, U"aifc") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_AIFC, 1, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeRightChannelToAiffFile, U"Save right channel as AIFF file", 0, U"aiff") {
+FORM_WRITE2 (LongSound_writeRightChannelToAiffFile, U"Save right channel as AIFF file", nullptr, U"aiff") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_AIFF, 1, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeRightChannelToNextSunFile, U"Save right channel as NeXT/Sun file", 0, U"au") {
+FORM_WRITE2 (LongSound_writeRightChannelToNextSunFile, U"Save right channel as NeXT/Sun file", nullptr, U"au") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_NEXT_SUN, 1, file);
 	}
 END2 }
 
-FORM_WRITE2 (LongSound_writeRightChannelToNistFile, U"Save right channel as NIST file", 0, U"nist") {
+FORM_WRITE2 (LongSound_writeRightChannelToNistFile, U"Save right channel as NIST file", nullptr, U"nist") {
 	LOOP {
 		iam (LongSound);
 		LongSound_writeChannelToAudioFile (me, Melder_NIST, 1, file);
@@ -309,39 +329,63 @@ END2 }
 
 /********** LONGSOUND & SOUND **********/
 
-FORM_WRITE2 (LongSound_Sound_writeToAifcFile, U"Save as AIFC file", 0, U"aifc") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFC, 16);
+FORM_WRITE2 (LongSound_Sound_writeToAifcFile, U"Save as AIFC file", nullptr, U"aifc") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFC, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_Sound_writeToAiffFile, U"Save as AIFF file", 0, U"aiff") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFF, 16);
+FORM_WRITE2 (LongSound_Sound_writeToAiffFile, U"Save as AIFF file", nullptr, U"aiff") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFF, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_Sound_writeToNextSunFile, U"Save as NeXT/Sun file", 0, U"au") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NEXT_SUN, 16);
+FORM_WRITE2 (LongSound_Sound_writeToNextSunFile, U"Save as NeXT/Sun file", nullptr, U"au") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NEXT_SUN, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_Sound_writeToNistFile, U"Save as NIST file", 0, U"nist") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NIST, 16);
+FORM_WRITE2 (LongSound_Sound_writeToNistFile, U"Save as NIST file", nullptr, U"nist") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NIST, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_Sound_writeToFlacFile, U"Save as FLAC file", 0, U"flac") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_FLAC, 16);
+FORM_WRITE2 (LongSound_Sound_writeToFlacFile, U"Save as FLAC file", nullptr, U"flac") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_FLAC, 16);
 END2 }
 
-FORM_WRITE2 (LongSound_Sound_writeToWavFile, U"Save as WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_WAV, 16);
+FORM_WRITE2 (LongSound_Sound_writeToWavFile, U"Save as WAV file", nullptr, U"wav") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_WAV, 16);
 END2 }
 
 /********** SOUND **********/
 
-FORM (Sound_add, U"Sound: Add", 0) {
+FORM (Sound_add, U"Sound: Add", nullptr) {
 	LABEL (U"", U"The following number will be added to the amplitudes of ")
 	LABEL (U"", U"all samples of the sound.")
 	REAL (U"Number", U"0.1")
@@ -364,30 +408,42 @@ DO
 		autoSound thee = Sound_autoCorrelate (me,
 			GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
 			GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
-		praat_new (thee.transfer(), U"ac_", my name);
+		praat_new (thee.move(), U"ac_", my name);
 	}
 END2 }
 
 DIRECT2 (Sounds_combineToStereo) {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound result = Sounds_combineToStereo (set.peek());
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound result = Sounds_combineToStereo (& list);
 	long numberOfChannels = result -> ny;   // dereference before transferring
-	praat_new (result.transfer(), U"combined_", numberOfChannels);
+	praat_new (result.move(), U"combined_", numberOfChannels);
 END2 }
 
 DIRECT2 (Sounds_concatenate) {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound result = Sounds_concatenate_e (set.peek(), 0.0);
-	praat_new (result.transfer(), U"chain");
+	OrderedOf<structSound> list;
+	LOOP {
+		iam_LOOP (Sound);
+		list.addItem_ref (me);
+	}
+	autoSound result = Sounds_concatenate (list, 0.0);
+	praat_new (result.move(), U"chain");
 END2 }
 
 FORM (Sounds_concatenateWithOverlap, U"Sounds: Concatenate with overlap", U"Sounds: Concatenate with overlap...") {
 	POSITIVE (U"Overlap (s)", U"0.01")
 	OK2
 DO
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound result = Sounds_concatenate_e (set.peek(), GET_REAL (U"Overlap"));
-	praat_new (result.transfer(), U"chain");
+	OrderedOf<structSound> list;
+	LOOP {
+		iam_LOOP (Sound);
+		list.addItem_ref (me);
+	}
+	autoSound result = Sounds_concatenate (list, GET_REAL (U"Overlap"));
+	praat_new (result.move(), U"chain");
 END2 }
 
 DIRECT2 (Sounds_concatenateRecoverably) {
@@ -419,21 +475,21 @@ DIRECT2 (Sounds_concatenateRecoverably) {
 		}
 		iinterval ++;
 		if (iinterval > 1) {
-			TextGrid_insertBoundary (him.peek(), 1, tmin);
+			TextGrid_insertBoundary (him.get(), 1, tmin);
 		}
-		TextGrid_setIntervalText (him.peek(), 1, iinterval, my name);
+		TextGrid_setIntervalText (him.get(), 1, iinterval, my name);
 		nx += my nx;
 		tmin = tmax;
 	}
-	praat_new (thee.transfer(), U"chain");
-	praat_new (him.transfer(), U"chain");
+	praat_new (thee.move(), U"chain");
+	praat_new (him.move(), U"chain");
 END2 }
 
 DIRECT2 (Sound_convertToMono) {
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_convertToMono (me);
-		praat_new (thee.transfer(), my name, U"_mono");
+		praat_new (thee.move(), my name, U"_mono");
 	}
 END2 }
 
@@ -441,19 +497,19 @@ DIRECT2 (Sound_convertToStereo) {
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_convertToStereo (me);
-		praat_new (thee.transfer(), my name, U"_stereo");
+		praat_new (thee.move(), my name, U"_stereo");
 	}
 END2 }
 
 DIRECT2 (Sounds_convolve_old) {
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		( s1 ? s2 : s1 ) = me;
 	}
-	Melder_assert (s1 != NULL && s2 != NULL);
+	Melder_assert (s1 && s2);
 	autoSound thee = Sounds_convolve (s1, s2, kSounds_convolve_scaling_SUM, kSounds_convolve_signalOutsideTimeDomain_ZERO);
-	praat_new (thee.transfer(), s1 -> name, U"_", s2 -> name);
+	praat_new (thee.move(), s1 -> name, U"_", s2 -> name);
 END2 }
 
 FORM (Sounds_convolve, U"Sounds: Convolve", U"Sounds: Convolve...") {
@@ -461,19 +517,19 @@ FORM (Sounds_convolve, U"Sounds: Convolve", U"Sounds: Convolve...") {
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK2
 DO
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		( s1 ? s2 : s1 ) = me;
 	}
-	Melder_assert (s1 != NULL && s2 != NULL);
+	Melder_assert (s1 && s2);
 	autoSound thee = Sounds_convolve (s1, s2,
 		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
 		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
-	praat_new (thee.transfer(), s1 -> name, U"_", s2 -> name);
+	praat_new (thee.move(), s1 -> name, U"_", s2 -> name);
 END2 }
 
-static void common_Sound_create (void *dia, Interpreter interpreter, bool allowMultipleChannels) {
+static void common_Sound_create (UiForm dia, Interpreter interpreter, bool allowMultipleChannels) {
 	long numberOfChannels = allowMultipleChannels ? GET_INTEGER (U"Number of channels") : 1;
 	double startTime = GET_REAL (U"Start time");
 	double endTime = GET_REAL (U"End time");
@@ -513,8 +569,8 @@ static void common_Sound_create (void *dia, Interpreter interpreter, bool allowM
 	int64 numberOfSamples = (int64) numberOfSamples_real;
 	autoSound sound;
 	try {
-		sound.reset (Sound_create (numberOfChannels, startTime, endTime, numberOfSamples, 1.0 / samplingFrequency,
-			startTime + 0.5 * (endTime - startTime - (numberOfSamples - 1) / samplingFrequency)));
+		sound = Sound_create (numberOfChannels, startTime, endTime, numberOfSamples, 1.0 / samplingFrequency,
+			startTime + 0.5 * (endTime - startTime - (numberOfSamples - 1) / samplingFrequency));
 	} catch (MelderError) {
 		if (str32str (Melder_getError (), U"memory")) {
 			Melder_clearError ();
@@ -527,8 +583,8 @@ static void common_Sound_create (void *dia, Interpreter interpreter, bool allowM
 			throw;   // unexpected error; wait for generic message
 		}
 	}
-	Matrix_formula ((Matrix) sound.peek(), GET_STRING (U"formula"), interpreter, NULL);
-	praat_new (sound.transfer(), GET_STRING (U"Name"));
+	Matrix_formula (sound.get(), GET_STRING (U"formula"), interpreter, nullptr);
+	praat_new (sound.move(), GET_STRING (U"Name"));
 	//praat_updateSelection ();
 }
 
@@ -562,7 +618,7 @@ FORM (Sound_createAsPureTone, U"Create Sound as pure tone", U"Create Sound as pu
 	CHANNEL (U"Number of channels", U"1 (= mono)")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"0.4")
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	POSITIVE (U"Tone frequency (Hz)", U"440.0")
 	POSITIVE (U"Amplitude (Pa)", U"0.2")
 	POSITIVE (U"Fade-in duration (s)", U"0.01")
@@ -572,42 +628,42 @@ DO
 	autoSound me = Sound_createAsPureTone (GET_INTEGER (U"Number of channels"), GET_REAL (U"Start time"), GET_REAL (U"End time"),
 		GET_REAL (U"Sampling frequency"), GET_REAL (U"Tone frequency"), GET_REAL (U"Amplitude"),
 		GET_REAL (U"Fade-in duration"), GET_REAL (U"Fade-out duration"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Sound_createFromToneComplex, U"Create Sound from tone complex", U"Create Sound from tone complex...") {
 	WORD (U"Name", U"toneComplex")
 	REAL (U"Start time (s)", U"0.0")
 	REAL (U"End time (s)", U"1.0")
-	POSITIVE (U"Sampling frequency (Hz)", U"44100")
+	POSITIVE (U"Sampling frequency (Hz)", U"44100.0")
 	RADIO (U"Phase", 2)
 		RADIOBUTTON (U"Sine")
 		RADIOBUTTON (U"Cosine")
-	POSITIVE (U"Frequency step (Hz)", U"100")
-	REAL (U"First frequency (Hz)", U"0 (= frequency step)")
-	REAL (U"Ceiling (Hz)", U"0 (= Nyquist)")
+	POSITIVE (U"Frequency step (Hz)", U"100.0")
+	REAL (U"First frequency (Hz)", U"0.0 (= frequency step)")
+	REAL (U"Ceiling (Hz)", U"0.0 (= Nyquist)")
 	INTEGER (U"Number of components", U"0 (= maximum)")
 	OK2
 DO
 	autoSound me = Sound_createFromToneComplex (GET_REAL (U"Start time"), GET_REAL (U"End time"),
 		GET_REAL (U"Sampling frequency"), GET_INTEGER (U"Phase") - 1, GET_REAL (U"Frequency step"),
 		GET_REAL (U"First frequency"), GET_REAL (U"Ceiling"), GET_INTEGER (U"Number of components"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (old_Sounds_crossCorrelate, U"Cross-correlate (short)", 0) {
+FORM (old_Sounds_crossCorrelate, U"Cross-correlate (short)", nullptr) {
 	REAL (U"From lag (s)", U"-0.1")
 	REAL (U"To lag (s)", U"0.1")
-	BOOLEAN (U"Normalize", 1)
+	BOOLEAN (U"Normalize", true)
 	OK2
 DO
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		( s1 ? s2 : s1 ) = me;
 	}
 	autoSound thee = Sounds_crossCorrelate_short (s1, s2, GET_REAL (U"From lag"), GET_REAL (U"To lag"), GET_INTEGER (U"Normalize"));
-	praat_new (thee.transfer(), U"cc_", s1 -> name, U"_", s2 -> name);
+	praat_new (thee.move(), U"cc_", s1 -> name, U"_", s2 -> name);
 END2 }
 
 FORM (Sounds_crossCorrelate, U"Sounds: Cross-correlate", U"Sounds: Cross-correlate...") {
@@ -615,16 +671,16 @@ FORM (Sounds_crossCorrelate, U"Sounds: Cross-correlate", U"Sounds: Cross-correla
 	RADIO_ENUM (U"Signal outside time domain is...", kSounds_convolve_signalOutsideTimeDomain, DEFAULT)
 	OK2
 DO_ALTERNATIVE (old_Sounds_crossCorrelate)
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		( s1 ? s2 : s1 ) = me;
 	}
-	Melder_assert (s1 != NULL && s2 != NULL);
+	Melder_assert (s1 && s2);
 	autoSound thee = Sounds_crossCorrelate (s1, s2,
 		GET_ENUM (kSounds_convolve_scaling, U"Amplitude scaling"),
 		GET_ENUM (kSounds_convolve_signalOutsideTimeDomain, U"Signal outside time domain is..."));
-	praat_new (thee.transfer(), s1 -> name, U"_", s2 -> name);
+	praat_new (thee.move(), s1 -> name, U"_", s2 -> name);
 END2 }
 
 FORM (Sound_deemphasizeInline, U"Sound: De-emphasize (in-line)", U"Sound: De-emphasize (in-line)...") {
@@ -653,16 +709,16 @@ DO
 		autoSound thee = Sound_deepenBandModulation (me, GET_REAL (U"Enhancement"),
 			GET_REAL (U"From frequency"), GET_REAL (U"To frequency"),
 			GET_REAL (U"Slow modulation"), GET_REAL (U"Fast modulation"), GET_REAL (U"Band smoothing"));
-		praat_new (thee.transfer(), my name, U"_", (long) (GET_REAL (U"Enhancement")));   // truncate number toward zero for visual effect
+		praat_new (thee.move(), my name, U"_", (long) (GET_REAL (U"Enhancement")));   // truncate number toward zero for visual effect
 	}
 END2 }
 
-FORM (old_Sound_draw, U"Sound: Draw", 0) {
+FORM (old_Sound_draw, U"Sound: Draw", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range", U"0.0 (= all)")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -673,12 +729,12 @@ DO
 	}
 END2 }
 
-FORM (Sound_draw, U"Sound: Draw", 0) {
+FORM (Sound_draw, U"Sound: Draw", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range", U"0.0 (= all)")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	LABEL (U"", U"")
 	OPTIONMENU (U"Drawing method", 1)
 		OPTION (U"Curve")
@@ -695,21 +751,21 @@ DO_ALTERNATIVE (old_Sound_draw)
 	}
 END2 }
 
-static void cb_SoundEditor_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_SoundEditor_publication (Editor /* me */, autoDaata publication) {
 	/*
 	 * Keep the gate for error handling.
 	 */
 	try {
-		praat_new (publication, U"");
+		bool isaSpectrum = Thing_isa (publication.get(), classSpectrum);
+		praat_new (publication.move(), U"");
 		praat_updateSelection ();
-		if (Thing_isa (publication, classSpectrum)) {
+		if (isaSpectrum) {
 			int IOBJECT;
 			LOOP {
 				iam (Spectrum);
 				autoSpectrumEditor editor2 = SpectrumEditor_create (ID_AND_FULL_NAME, me);
-				praat_installEditor (editor2.transfer(), IOBJECT);
+				praat_installEditor (editor2.get(), IOBJECT);
+				editor2.releaseToUser();
 			}
 		}
 	} catch (MelderError) {
@@ -721,8 +777,9 @@ DIRECT2 (Sound_edit) {
 	LOOP {
 		iam (Sound);
 		autoSoundEditor editor = SoundEditor_create (ID_AND_FULL_NAME, me);
-		Editor_setPublicationCallback (editor.peek(), cb_SoundEditor_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		Editor_setPublicationCallback (editor.get(), cb_SoundEditor_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -731,12 +788,12 @@ DIRECT2 (Sound_extractAllChannels) {
 		iam (Sound);
 		for (long channel = 1; channel <= my ny; channel ++) {
 			autoSound thee = Sound_extractChannel (me, channel);
-			praat_new (thee.transfer(), my name, U"_ch", channel);
+			praat_new (thee.move(), my name, U"_ch", channel);
 		}
 	}
 END2 }
 
-FORM (Sound_extractChannel, U"Sound: Extract channel", 0) {
+FORM (Sound_extractChannel, U"Sound: Extract channel", nullptr) {
 	CHANNEL (U"Channel (number, Left, or Right)", U"1")
 	OK2
 DO
@@ -744,7 +801,7 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_extractChannel (me, channel);
-		praat_new (thee.transfer(), my name, U"_ch", channel);
+		praat_new (thee.move(), my name, U"_ch", channel);
 	}
 END2 }
 
@@ -752,16 +809,16 @@ DIRECT2 (Sound_extractLeftChannel) {
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_extractChannel (me, 1);
-		praat_new (thee.transfer(), my name, U"_left");
+		praat_new (thee.move(), my name, U"_left");
 	}
 END2 }
 
-FORM (Sound_extractPart, U"Sound: Extract part", 0) {
-	REAL (U"left Time range (s)", U"0")
+FORM (Sound_extractPart, U"Sound: Extract part", nullptr) {
+	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.1")
 	OPTIONMENU_ENUM (U"Window shape", kSound_windowShape, DEFAULT)
 	POSITIVE (U"Relative width", U"1.0")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OK2
 DO
 	LOOP {
@@ -770,12 +827,12 @@ DO
 			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 			GET_ENUM (kSound_windowShape, U"Window shape"), GET_REAL (U"Relative width"),
 			GET_INTEGER (U"Preserve times"));
-		praat_new (thee.transfer(), my name, U"_part");
+		praat_new (thee.move(), my name, U"_part");
 	}
 END2 }
 
-FORM (Sound_extractPartForOverlap, U"Sound: Extract part for overlap", 0) {
-	REAL (U"left Time range (s)", U"0")
+FORM (Sound_extractPartForOverlap, U"Sound: Extract part for overlap", nullptr) {
+	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.1")
 	POSITIVE (U"Overlap (s)", U"0.01")
 	OK2
@@ -785,7 +842,7 @@ DO
 		autoSound thee = Sound_extractPartForOverlap (me,
 			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"),
 			GET_REAL (U"Overlap"));
-		praat_new (thee.transfer(), my name, U"_part");
+		praat_new (thee.move(), my name, U"_part");
 	}
 END2 }
 
@@ -793,7 +850,7 @@ DIRECT2 (Sound_extractRightChannel) {
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_extractChannel (me, 2);
-		praat_new (thee.transfer(), my name, U"_right");
+		praat_new (thee.move(), my name, U"_right");
 	}
 END2 }
 
@@ -804,7 +861,7 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_deemphasis (me, GET_REAL (U"From frequency"));
-		praat_new (thee.transfer(), my name, U"_deemp");
+		praat_new (thee.move(), my name, U"_deemp");
 	}
 END2 }
 
@@ -816,25 +873,25 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_formula (me, GET_STRING (U"formula"), interpreter);
-		praat_new (thee.transfer(), my name, U"_filt");
+		praat_new (thee.move(), my name, U"_filt");
 	}
 END2 }
 
 FORM (Sound_filter_oneFormant, U"Sound: Filter (one formant)", U"Sound: Filter (one formant)...") {
-	REAL (U"Frequency (Hz)", U"1000")
-	POSITIVE (U"Bandwidth (Hz)", U"100")
+	REAL (U"Frequency (Hz)", U"1000.0")
+	POSITIVE (U"Bandwidth (Hz)", U"100.0")
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_oneFormant (me, GET_REAL (U"Frequency"), GET_REAL (U"Bandwidth"));
-		praat_new (thee.transfer(), my name, U"_filt");
+		praat_new (thee.move(), my name, U"_filt");
 	}
 END2 }
 
 FORM (Sound_filterWithOneFormantInline, U"Sound: Filter with one formant (in-line)", U"Sound: Filter with one formant (in-line)...") {
-	REAL (U"Frequency (Hz)", U"1000")
-	POSITIVE (U"Bandwidth (Hz)", U"100")
+	REAL (U"Frequency (Hz)", U"1000.0")
+	POSITIVE (U"Bandwidth (Hz)", U"100.0")
 	OK2
 DO
 	LOOP {
@@ -845,16 +902,16 @@ DO
 END2 }
 
 FORM (Sound_filter_passHannBand, U"Sound: Filter (pass Hann band)", U"Sound: Filter (pass Hann band)...") {
-	REAL (U"From frequency (Hz)", U"500")
-	REAL (U"To frequency (Hz)", U"1000")
-	POSITIVE (U"Smoothing (Hz)", U"100")
+	REAL (U"From frequency (Hz)", U"500.0")
+	REAL (U"To frequency (Hz)", U"1000.0")
+	POSITIVE (U"Smoothing (Hz)", U"100.0")
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_passHannBand (me,
 			GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_REAL (U"Smoothing"));
-		praat_new (thee.transfer(), my name, U"_band");
+		praat_new (thee.move(), my name, U"_band");
 	}
 END2 }
 
@@ -865,20 +922,20 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_preemphasis (me, GET_REAL (U"From frequency"));
-		praat_new (thee.transfer(), my name, U"_preemp");
+		praat_new (thee.move(), my name, U"_preemp");
 	}
 END2 }
 
 FORM (Sound_filter_stopHannBand, U"Sound: Filter (stop Hann band)", U"Sound: Filter (stop Hann band)...") {
-	REAL (U"From frequency (Hz)", U"500")
-	REAL (U"To frequency (Hz)", U"1000")
-	POSITIVE (U"Smoothing (Hz)", U"100")
+	REAL (U"From frequency (Hz)", U"500.0")
+	REAL (U"To frequency (Hz)", U"1000.0")
+	POSITIVE (U"Smoothing (Hz)", U"100.0")
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_filter_stopHannBand (me, GET_REAL (U"From frequency"), GET_REAL (U"To frequency"), GET_REAL (U"Smoothing"));
-		praat_new (thee.transfer(), my name, U"_band");
+		praat_new (thee.move(), my name, U"_band");
 	}
 END2 }
 
@@ -895,7 +952,7 @@ DO
 	LOOP {
 		iam (Sound);
 		try {
-			Matrix_formula ((Matrix) me, GET_STRING (U"formula"), interpreter, NULL);
+			Matrix_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Sound may have partially changed
@@ -915,10 +972,10 @@ DO
 	LOOP {
 		iam (Sound);
 		try {
-			Matrix_formula_part ((Matrix) me,
+			Matrix_formula_part (me,
 				GET_REAL (U"From time"), GET_REAL (U"To time"),
 				GET_INTEGER (U"From channel") - 0.5, GET_INTEGER (U"To channel") + 0.5,
-				GET_STRING (U"formula"), interpreter, NULL);
+				GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);   // in case of error, the Sound may have partially changed
@@ -973,7 +1030,7 @@ DO
 	LOOP {
 		iam (Sound);
 		double realIndex = Sampled_xToIndex (me, GET_REAL (U"Time"));
-		Melder_informationReal (realIndex, NULL);
+		Melder_informationReal (realIndex, nullptr);
 	}
 END2 }
 
@@ -1292,11 +1349,11 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_lengthen_overlapAdd (me, minimumPitch, maximumPitch, factor);
-		praat_new (thee.transfer(), my name, U"_", Melder_fixed (factor, 2));
+		praat_new (thee.move(), my name, U"_", Melder_fixed (factor, 2));
 	}
 END2 }
 
-FORM (Sound_multiply, U"Sound: Multiply", 0) {
+FORM (Sound_multiply, U"Sound: Multiply", nullptr) {
 	REAL (U"Multiplication factor", U"1.5")
 	OK2
 DO
@@ -1307,7 +1364,7 @@ DO
 	}
 END2 }
 
-FORM (Sound_multiplyByWindow, U"Sound: Multiply by window", 0) {
+FORM (Sound_multiplyByWindow, U"Sound: Multiply by window", nullptr) {
 	OPTIONMENU_ENUM (U"Window shape", kSound_windowShape, HANNING)
 	OK2
 DO
@@ -1318,7 +1375,7 @@ DO
 	}
 END2 }
 
-FORM (Sound_overrideSamplingFrequency, U"Sound: Override sampling frequency", 0) {
+FORM (Sound_overrideSamplingFrequency, U"Sound: Override sampling frequency", nullptr) {
 	POSITIVE (U"New sampling frequency (Hz)", U"16000.0")
 	OK2
 DO
@@ -1337,13 +1394,13 @@ DIRECT2 (Sound_play) {
 	if (n == 1 || MelderAudio_getOutputMaximumAsynchronicity () < kMelder_asynchronicityLevel_ASYNCHRONOUS) {
 		LOOP {
 			iam (Sound);
-			Sound_play (me, NULL, NULL);
+			Sound_play (me, nullptr, nullptr);
 		}
 	} else {
 		MelderAudio_setOutputMaximumAsynchronicity (kMelder_asynchronicityLevel_INTERRUPTABLE);
 		LOOP {
 			iam (Sound);
-			Sound_play (me, NULL, NULL);   // BUG: exception-safe?
+			Sound_play (me, nullptr, nullptr);   // BUG: exception-safe?
 		}
 		MelderAudio_setOutputMaximumAsynchronicity (kMelder_asynchronicityLevel_ASYNCHRONOUS);
 	}
@@ -1361,37 +1418,34 @@ DO
 	}
 END2 }
 
-FORM_READ2 (Sound_readSeparateChannelsFromSoundFile, U"Read separate channels from sound file", 0, true) {
+FORM_READ2 (Sound_readSeparateChannelsFromSoundFile, U"Read separate channels from sound file", nullptr, true) {
 	autoSound sound = Sound_readFromSoundFile (file);
 	char32 name [300];
 	Melder_sprint (name,300, MelderFile_name (file));
 	char32 *lastPeriod = str32rchr (name, U'.');
-	if (lastPeriod != NULL) {
-		*lastPeriod = '\0';
+	if (lastPeriod) {
+		*lastPeriod = U'\0';
 	}
 	for (long ichan = 1; ichan <= sound -> ny; ichan ++) {
-		autoSound thee = Sound_extractChannel (sound.peek(), ichan);
-		praat_new (thee.transfer(), name, U"_ch", ichan);
+		autoSound thee = Sound_extractChannel (sound.get(), ichan);
+		praat_new (thee.move(), name, U"_ch", ichan);
 	}
 END2 }
 
-FORM_READ2 (Sound_readFromRawAlawFile, U"Read Sound from raw Alaw file", 0, true) {
+FORM_READ2 (Sound_readFromRawAlawFile, U"Read Sound from raw Alaw file", nullptr, true) {
 	autoSound me = Sound_readFromRawAlawFile (file);
-	praat_new (me.transfer(), MelderFile_name (file));
+	praat_new (me.move(), MelderFile_name (file));
 END2 }
 
-static SoundRecorder theSoundRecorder;   // only one at a time can exist
+static SoundRecorder theReferenceToTheOnlySoundRecorder;
 static int thePreviousNumberOfChannels;
-static void cb_SoundRecorder_destruction (Editor editor, void *closure) {
-	(void) editor;
-	(void) closure;
-	theSoundRecorder = NULL;
+
+static void cb_SoundRecorder_destruction (SoundRecorder /* me */) {
+	theReferenceToTheOnlySoundRecorder = nullptr;
 }
-static void cb_SoundRecorder_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_SoundRecorder_publication (Editor /* me */, autoDaata publication) {
 	try {
-		praat_new (publication);
+		praat_new (publication.move());
 	} catch (MelderError) {
 		Melder_flushError ();
 	}
@@ -1400,19 +1454,17 @@ static void cb_SoundRecorder_publication (Editor editor, void *closure, Data pub
 static void do_Sound_record (int numberOfChannels) {
 	if (theCurrentPraatApplication -> batch)
 		Melder_throw (U"Cannot record a Sound from batch.");
-	if (theSoundRecorder) {
-		if (numberOfChannels == thePreviousNumberOfChannels) {
-			Editor_raise (theSoundRecorder);
-		} else {
-			forget (theSoundRecorder);
-		}
-	}
-	if (! theSoundRecorder) {
-		theSoundRecorder = SoundRecorder_create (numberOfChannels);
-		Editor_setDestructionCallback (theSoundRecorder, cb_SoundRecorder_destruction, NULL);
-		Editor_setPublicationCallback (theSoundRecorder, cb_SoundRecorder_publication, NULL);
+	if (theReferenceToTheOnlySoundRecorder && numberOfChannels == thePreviousNumberOfChannels) {
+		Editor_raise (theReferenceToTheOnlySoundRecorder);
+	} else {
+		forget (theReferenceToTheOnlySoundRecorder);
+		autoSoundRecorder recorder = SoundRecorder_create (numberOfChannels);
+		Editor_setDestructionCallback (recorder.get(), cb_SoundRecorder_destruction);
+		Editor_setPublicationCallback (recorder.get(), cb_SoundRecorder_publication);
+		theReferenceToTheOnlySoundRecorder = recorder.get();
+		recorder.releaseToUser();
+		thePreviousNumberOfChannels = numberOfChannels;
 	}
-	thePreviousNumberOfChannels = numberOfChannels;
 }
 DIRECT2 (Sound_record_mono) {
 	do_Sound_record (1);
@@ -1421,7 +1473,7 @@ DIRECT2 (Sound_record_stereo) {
 	do_Sound_record (2);
 END2 }
 
-FORM (Sound_recordFixedTime, U"Record Sound", 0) {
+FORM (Sound_recordFixedTime, U"Record Sound", nullptr) {
 	RADIO (U"Input source", 1)
 		RADIOBUTTON (U"Microphone")
 		RADIOBUTTON (U"Line")
@@ -1452,11 +1504,11 @@ DO
 	autoSound me = Sound_recordFixedTime (GET_INTEGER (U"Input source"),
 		GET_REAL (U"Gain"), GET_REAL (U"Balance"),
 		Melder_atof (GET_STRING (U"Sampling frequency")), GET_REAL (U"Duration"));
-	praat_new (me.transfer(), U"untitled");
+	praat_new (me.move(), U"untitled");
 END2 }
 
 FORM (Sound_resample, U"Sound: Resample", U"Sound: Resample...") {
-	POSITIVE (U"New sampling frequency (Hz)", U"10000")
+	POSITIVE (U"New sampling frequency (Hz)", U"10000.0")
 	NATURAL (U"Precision (samples)", U"50")
 	OK2
 DO
@@ -1464,26 +1516,34 @@ DO
 	LOOP {
 		iam (Sound);
 		autoSound thee = Sound_resample (me, samplingFrequency, GET_INTEGER (U"Precision"));
-		praat_new (thee.transfer(), my name, U"_", (long) round (samplingFrequency));
+		praat_new (thee.move(), my name, U"_", (long) round (samplingFrequency));
 	}
 END2 }
 
 DIRECT2 (Sound_reverse) {
 	LOOP {
 		iam (Sound);
-		Sound_reverse (me, 0, 0);
+		Sound_reverse (me, 0.0, 0.0);
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAs24BitWavFile, U"Save as 24-bit WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_WAV, 24);
+FORM_WRITE2 (Sound_saveAs24BitWavFile, U"Save as 24-bit WAV file", nullptr, U"wav") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_WAV, 24);
 END2 }
 
-FORM_WRITE2 (Sound_saveAs32BitWavFile, U"Save as 32-bit WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_WAV, 32);
+FORM_WRITE2 (Sound_saveAs32BitWavFile, U"Save as 32-bit WAV file", nullptr, U"wav") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_WAV, 32);
 END2 }
 
 FORM (Sound_scalePeak, U"Sound: Scale peak", U"Sound: Scale peak...") {
@@ -1497,7 +1557,7 @@ DO
 	}
 END2 }
 
-FORM (Sound_scaleIntensity, U"Sound: Scale intensity", U"Sound: Scale intensity") {
+FORM (Sound_scaleIntensity, U"Sound: Scale intensity", U"Sound: Scale intensity...") {
 	POSITIVE (U"New average intensity (dB SPL)", U"70.0")
 	OK2
 DO
@@ -1548,7 +1608,7 @@ DO_ALTERNATIVE (old_Sound_setValueAtIndex)
 	}
 END2 }
 
-FORM (Sound_setPartToZero, U"Sound: Set part to zero", 0) {
+FORM (Sound_setPartToZero, U"Sound: Set part to zero", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"0.0 (= all)")
 	RADIO (U"Cut", 2)
@@ -1582,11 +1642,11 @@ DO
 	LOOP {
 		iam (Sound);
 		autoManipulation thee = Sound_to_Manipulation (me, GET_REAL (U"Time step"), fmin, fmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_Cochleagram, U"Sound: To Cochleagram", 0) {
+FORM (Sound_to_Cochleagram, U"Sound: To Cochleagram", nullptr) {
 	POSITIVE (U"Time step (s)", U"0.01")
 	POSITIVE (U"Frequency resolution (Bark)", U"0.1")
 	POSITIVE (U"Window length (s)", U"0.03")
@@ -1597,18 +1657,18 @@ DO
 		iam (Sound);
 		autoCochleagram thee = Sound_to_Cochleagram (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Frequency resolution"), GET_REAL (U"Window length"), GET_REAL (U"Forward-masking time"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_Cochleagram_edb, U"Sound: To Cochleagram (De Boer, Meddis & Hewitt)", 0) {
+FORM (Sound_to_Cochleagram_edb, U"Sound: To Cochleagram (De Boer, Meddis & Hewitt)", nullptr) {
 	POSITIVE (U"Time step (s)", U"0.01")
 	POSITIVE (U"Frequency resolution (Bark)", U"0.1")
-	BOOLEAN (U"Has synapse", 1)
+	BOOLEAN (U"Has synapse", true)
 	LABEL (U"", U"Meddis synapse properties")
 	POSITIVE (U"   replenishment rate (/sec)", U"5.05")
-	POSITIVE (U"   loss rate (/sec)", U"2500")
-	POSITIVE (U"   return rate (/sec)", U"6580")
+	POSITIVE (U"   loss rate (/sec)", U"2500.0")
+	POSITIVE (U"   return rate (/sec)", U"6580.0")
 	POSITIVE (U"   reprocessing rate (/sec)", U"66.31")
 	OK2
 DO
@@ -1618,16 +1678,16 @@ DO
 			GET_REAL (U"Frequency resolution"), GET_INTEGER (U"Has synapse"),
 			GET_REAL (U"   replenishment rate"), GET_REAL (U"   loss rate"),
 			GET_REAL (U"   return rate"), GET_REAL (U"   reprocessing rate"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Formant_burg, U"Sound: To Formant (Burg method)", U"Sound: To Formant (burg)...") {
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	POSITIVE (U"Max. number of formants", U"5")
-	REAL (U"Maximum formant (Hz)", U"5500 (= adult female)")
+	POSITIVE (U"Max. number of formants", U"5.0")
+	REAL (U"Maximum formant (Hz)", U"5500.0 (= adult female)")
 	POSITIVE (U"Window length (s)", U"0.025")
-	POSITIVE (U"Pre-emphasis from (Hz)", U"50")
+	POSITIVE (U"Pre-emphasis from (Hz)", U"50.0")
 	OK2
 DO
 	LOOP {
@@ -1635,16 +1695,16 @@ DO
 		autoFormant thee = Sound_to_Formant_burg (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Max. number of formants"), GET_REAL (U"Maximum formant"),
 			GET_REAL (U"Window length"), GET_REAL (U"Pre-emphasis from"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Formant_keepAll, U"Sound: To Formant (keep all)", U"Sound: To Formant (keep all)...") {
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	POSITIVE (U"Max. number of formants", U"5")
-	REAL (U"Maximum formant (Hz)", U"5500 (= adult female)")
+	POSITIVE (U"Max. number of formants", U"5.0")
+	REAL (U"Maximum formant (Hz)", U"5500.0 (= adult female)")
 	POSITIVE (U"Window length (s)", U"0.025")
-	POSITIVE (U"Pre-emphasis from (Hz)", U"50")
+	POSITIVE (U"Pre-emphasis from (Hz)", U"50.0")
 	OK2
 DO
 	LOOP {
@@ -1652,16 +1712,16 @@ DO
 		autoFormant thee = Sound_to_Formant_keepAll (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Max. number of formants"), GET_REAL (U"Maximum formant"),
 			GET_REAL (U"Window length"), GET_REAL (U"Pre-emphasis from"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Formant_willems, U"Sound: To Formant (split Levinson (Willems))", U"Sound: To Formant (sl)...") {
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	POSITIVE (U"Number of formants", U"5")
-	REAL (U"Maximum formant (Hz)", U"5500 (= adult female)")
+	POSITIVE (U"Number of formants", U"5.0")
+	REAL (U"Maximum formant (Hz)", U"5500.0 (= adult female)")
 	POSITIVE (U"Window length (s)", U"0.025")
-	POSITIVE (U"Pre-emphasis from (Hz)", U"50")
+	POSITIVE (U"Pre-emphasis from (Hz)", U"50.0")
 	OK2
 DO
 	LOOP {
@@ -1669,13 +1729,13 @@ DO
 		autoFormant thee = Sound_to_Formant_willems (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Number of formants"), GET_REAL (U"Maximum formant"),
 			GET_REAL (U"Window length"), GET_REAL (U"Pre-emphasis from"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Harmonicity_ac, U"Sound: To Harmonicity (ac)", U"Sound: To Harmonicity (ac)...") {
 	POSITIVE (U"Time step (s)", U"0.01")
-	POSITIVE (U"Minimum pitch (Hz)", U"75")
+	POSITIVE (U"Minimum pitch (Hz)", U"75.0")
 	REAL (U"Silence threshold", U"0.1")
 	POSITIVE (U"Periods per window", U"4.5")
 	OK2
@@ -1686,13 +1746,13 @@ DO
 		iam (Sound);
 		autoHarmonicity thee = Sound_to_Harmonicity_ac (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Minimum pitch"), GET_REAL (U"Silence threshold"), periodsPerWindow);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Harmonicity_cc, U"Sound: To Harmonicity (cc)", U"Sound: To Harmonicity (cc)...") {
 	POSITIVE (U"Time step (s)", U"0.01")
-	POSITIVE (U"Minimum pitch (Hz)", U"75")
+	POSITIVE (U"Minimum pitch (Hz)", U"75.0")
 	REAL (U"Silence threshold", U"0.1")
 	POSITIVE (U"Periods per window", U"1.0")
 	OK2
@@ -1702,15 +1762,15 @@ DO
 		autoHarmonicity thee = Sound_to_Harmonicity_cc (me, GET_REAL (U"Time step"),
 			GET_REAL (U"Minimum pitch"), GET_REAL (U"Silence threshold"),
 			GET_REAL (U"Periods per window"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_Harmonicity_gne, U"Sound: To Harmonicity (gne)", 0) {
-	POSITIVE (U"Minimum frequency (Hz)", U"500")
-	POSITIVE (U"Maximum frequency (Hz)", U"4500")
-	POSITIVE (U"Bandwidth (Hz)", U"1000")
-	POSITIVE (U"Step (Hz)", U"80")
+FORM (Sound_to_Harmonicity_gne, U"Sound: To Harmonicity (gne)", nullptr) {
+	POSITIVE (U"Minimum frequency (Hz)", U"500.0")
+	POSITIVE (U"Maximum frequency (Hz)", U"4500.0")
+	POSITIVE (U"Bandwidth (Hz)", U"1000.0")
+	POSITIVE (U"Step (Hz)", U"80.0")
 	OK2
 DO
 	LOOP {
@@ -1718,48 +1778,48 @@ DO
 		autoMatrix thee = Sound_to_Harmonicity_GNE (me, GET_REAL (U"Minimum frequency"),
 			GET_REAL (U"Maximum frequency"), GET_REAL (U"Bandwidth"),
 			GET_REAL (U"Step"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (old_Sound_to_Intensity, U"Sound: To Intensity", U"Sound: To Intensity...") {
-	POSITIVE (U"Minimum pitch (Hz)", U"100")
+	POSITIVE (U"Minimum pitch (Hz)", U"100.0")
 	REAL (U"Time step (s)", U"0.0 (= auto)")
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoIntensity thee = Sound_to_Intensity (me,
-			GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"), FALSE);
-		praat_new (thee.transfer(), my name);
+			GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"), false);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Intensity, U"Sound: To Intensity", U"Sound: To Intensity...") {
-	POSITIVE (U"Minimum pitch (Hz)", U"100")
+	POSITIVE (U"Minimum pitch (Hz)", U"100.0")
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	BOOLEAN (U"Subtract mean", 1)
+	BOOLEAN (U"Subtract mean", true)
 	OK2
 DO_ALTERNATIVE (old_Sound_to_Intensity)
 	LOOP {
 		iam (Sound);
 		autoIntensity thee = Sound_to_Intensity (me,
 			GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"), GET_INTEGER (U"Subtract mean"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_IntensityTier, U"Sound: To IntensityTier", NULL) {
-	POSITIVE (U"Minimum pitch (Hz)", U"100")
+FORM (Sound_to_IntensityTier, U"Sound: To IntensityTier", nullptr) {
+	POSITIVE (U"Minimum pitch (Hz)", U"100.0")
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	BOOLEAN (U"Subtract mean", 1)
+	BOOLEAN (U"Subtract mean", true)
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoIntensityTier thee = Sound_to_IntensityTier (me,
 			GET_REAL (U"Minimum pitch"), GET_REAL (U"Time step"), GET_INTEGER (U"Subtract mean"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1767,26 +1827,26 @@ DIRECT2 (Sound_to_IntervalTier) {
 	LOOP {
 		iam (Sound);
 		autoIntervalTier thee = IntervalTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_Ltas, U"Sound: To long-term average spectrum", 0) {
+FORM (Sound_to_Ltas, U"Sound: To long-term average spectrum", nullptr) {
 	POSITIVE (U"Bandwidth (Hz)", U"100")
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoLtas thee = Sound_to_Ltas (me, GET_REAL (U"Bandwidth"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Ltas_pitchCorrected, U"Sound: To Ltas (pitch-corrected)", U"Sound: To Ltas (pitch-corrected)...") {
-	POSITIVE (U"Minimum pitch (Hz)", U"75")
-	POSITIVE (U"Maximum pitch (Hz)", U"600")
-	POSITIVE (U"Maximum frequency (Hz)", U"5000")
-	POSITIVE (U"Bandwidth (Hz)", U"100")
+	POSITIVE (U"Minimum pitch (Hz)", U"75.0")
+	POSITIVE (U"Maximum pitch (Hz)", U"600.0")
+	POSITIVE (U"Maximum frequency (Hz)", U"5000.0")
+	POSITIVE (U"Bandwidth (Hz)", U"100.0")
 	REAL (U"Shortest period (s)", U"0.0001")
 	REAL (U"Longest period (s)", U"0.02")
 	POSITIVE (U"Maximum period factor", U"1.3")
@@ -1799,7 +1859,7 @@ DO
 		autoLtas thee = Sound_to_Ltas_pitchCorrected (me, fmin, fmax,
 			GET_REAL (U"Maximum frequency"), GET_REAL (U"Bandwidth"),
 			GET_REAL (U"Shortest period"), GET_REAL (U"Longest period"), GET_REAL (U"Maximum period factor"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1807,18 +1867,18 @@ DIRECT2 (Sound_to_Matrix) {
 	LOOP {
 		iam (Sound);
 		autoMatrix thee = Sound_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Sounds_to_ParamCurve) {
-	Sound s1 = NULL, s2 = NULL;
+	Sound s1 = nullptr, s2 = nullptr;
 	LOOP {
 		iam (Sound);
 		( s1 ? s2 : s1 ) = me;
 	}
 	autoParamCurve thee = ParamCurve_create (s1, s2);
-	praat_new (thee.transfer(), s1 -> name, U"_", s2 -> name);
+	praat_new (thee.move(), s1 -> name, U"_", s2 -> name);
 END2 }
 
 FORM (Sound_to_Pitch, U"Sound: To Pitch", U"Sound: To Pitch...") {
@@ -1830,7 +1890,7 @@ DO
 	LOOP {
 		iam (Sound);
 		autoPitch thee = Sound_to_Pitch (me, GET_REAL (U"Time step"), GET_REAL (U"Pitch floor"), GET_REAL (U"Pitch ceiling"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1839,7 +1899,7 @@ FORM (Sound_to_Pitch_ac, U"Sound: To Pitch (ac)", U"Sound: To Pitch (ac)...") {
 	REAL (U"Time step (s)", U"0.0 (= auto)")
 	POSITIVE (U"Pitch floor (Hz)", U"75.0")
 	NATURAL (U"Max. number of candidates", U"15")
-	BOOLEAN (U"Very accurate", 0)
+	BOOLEAN (U"Very accurate", false)
 	LABEL (U"", U"Finding a path")
 	REAL (U"Silence threshold", U"0.03")
 	REAL (U"Voicing threshold", U"0.45")
@@ -1858,16 +1918,16 @@ DO
 			GET_REAL (U"Silence threshold"), GET_REAL (U"Voicing threshold"),
 			GET_REAL (U"Octave cost"), GET_REAL (U"Octave-jump cost"),
 			GET_REAL (U"Voiced / unvoiced cost"), GET_REAL (U"Pitch ceiling"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Pitch_cc, U"Sound: To Pitch (cc)", U"Sound: To Pitch (cc)...") {
 	LABEL (U"", U"Finding the candidates")
 	REAL (U"Time step (s)", U"0.0 (= auto)")
-	POSITIVE (U"Pitch floor (Hz)", U"75")
+	POSITIVE (U"Pitch floor (Hz)", U"75.0")
 	NATURAL (U"Max. number of candidates", U"15")
-	BOOLEAN (U"Very accurate", 0)
+	BOOLEAN (U"Very accurate", false)
 	LABEL (U"", U"Finding a path")
 	REAL (U"Silence threshold", U"0.03")
 	REAL (U"Voicing threshold", U"0.45")
@@ -1886,14 +1946,14 @@ DO
 			GET_REAL (U"Silence threshold"), GET_REAL (U"Voicing threshold"),
 			GET_REAL (U"Octave cost"), GET_REAL (U"Octave-jump cost"),
 			GET_REAL (U"Voiced / unvoiced cost"), GET_REAL (U"Pitch ceiling"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_PointProcess_extrema, U"Sound: To PointProcess (extrema)", 0) {
+FORM (Sound_to_PointProcess_extrema, U"Sound: To PointProcess (extrema)", nullptr) {
 	CHANNEL (U"Channel (number, Left, or Right)", U"1")
-	BOOLEAN (U"Include maxima", 1)
-	BOOLEAN (U"Include minima", 0)
+	BOOLEAN (U"Include maxima", true)
+	BOOLEAN (U"Include minima", false)
 	RADIO (U"Interpolation", 4)
 		RADIOBUTTON (U"None")
 		RADIOBUTTON (U"Parabolic")
@@ -1907,7 +1967,7 @@ DO
 		iam (Sound);
 		autoPointProcess thee = Sound_to_PointProcess_extrema (me, channel > my ny ? 1 : channel, GET_INTEGER (U"Interpolation") - 1,
 			GET_INTEGER (U"Include maxima"), GET_INTEGER (U"Include minima"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1921,15 +1981,15 @@ DO
 	LOOP {
 		iam (Sound);
 		autoPointProcess thee = Sound_to_PointProcess_periodic_cc (me, fmin, fmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_PointProcess_periodic_peaks, U"Sound: To PointProcess (periodic, peaks)", U"Sound: To PointProcess (periodic, peaks)...") {
 	POSITIVE (U"Minimum pitch (Hz)", U"75")
 	POSITIVE (U"Maximum pitch (Hz)", U"600")
-	BOOLEAN (U"Include maxima", 1)
-	BOOLEAN (U"Include minima", 0)
+	BOOLEAN (U"Include maxima", true)
+	BOOLEAN (U"Include minima", false)
 	OK2
 DO
 	double fmin = GET_REAL (U"Minimum pitch"), fmax = GET_REAL (U"Maximum pitch");
@@ -1937,29 +1997,29 @@ DO
 	LOOP {
 		iam (Sound);
 		autoPointProcess thee = Sound_to_PointProcess_periodic_peaks (me, fmin, fmax, GET_INTEGER (U"Include maxima"), GET_INTEGER (U"Include minima"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Sound_to_PointProcess_zeroes, U"Get zeroes", 0) {
+FORM (Sound_to_PointProcess_zeroes, U"Get zeroes", nullptr) {
 	CHANNEL (U"Channel (number, Left, or Right)", U"1")
-	BOOLEAN (U"Include raisers", 1)
-	BOOLEAN (U"Include fallers", 0)
+	BOOLEAN (U"Include raisers", true)
+	BOOLEAN (U"Include fallers", false)
 	OK2
 DO
 	long channel = GET_INTEGER (U"Channel");
 	LOOP {
 		iam (Sound);
 		autoPointProcess thee = Sound_to_PointProcess_zeroes (me, channel > my ny ? 1 : channel, GET_INTEGER (U"Include raisers"), GET_INTEGER (U"Include fallers"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Spectrogram, U"Sound: To Spectrogram", U"Sound: To Spectrogram...") {
 	POSITIVE (U"Window length (s)", U"0.005")
-	POSITIVE (U"Maximum frequency (Hz)", U"5000")
+	POSITIVE (U"Maximum frequency (Hz)", U"5000.0")
 	POSITIVE (U"Time step (s)", U"0.002")
-	POSITIVE (U"Frequency step (Hz)", U"20")
+	POSITIVE (U"Frequency step (Hz)", U"20.0")
 	RADIO_ENUM (U"Window shape", kSound_to_Spectrogram_windowShape, DEFAULT)
 	OK2
 DO
@@ -1968,34 +2028,34 @@ DO
 		autoSpectrogram thee = Sound_to_Spectrogram (me, GET_REAL (U"Window length"),
 			GET_REAL (U"Maximum frequency"), GET_REAL (U"Time step"),
 			GET_REAL (U"Frequency step"), GET_ENUM (kSound_to_Spectrogram_windowShape, U"Window shape"), 8.0, 8.0);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (Sound_to_Spectrum, U"Sound: To Spectrum", U"Sound: To Spectrum...") {
-	BOOLEAN (U"Fast", 1)
+	BOOLEAN (U"Fast", true)
 	OK2
 DO
 	LOOP {
 		iam (Sound);
 		autoSpectrum thee = Sound_to_Spectrum (me, GET_INTEGER (U"Fast"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Sound_to_Spectrum_dft) {
 	LOOP {
 		iam (Sound);
-		autoSpectrum thee = Sound_to_Spectrum (me, FALSE);
-		praat_new (thee.transfer(), my name);
+		autoSpectrum thee = Sound_to_Spectrum (me, false);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (Sound_to_Spectrum_fft) {
 	LOOP {
 		iam (Sound);
-		autoSpectrum thee = Sound_to_Spectrum (me, TRUE);
-		praat_new (thee.transfer(), my name);
+		autoSpectrum thee = Sound_to_Spectrum (me, true);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2007,7 +2067,7 @@ DO
 	LOOP {
 		iam (Sound);
 		autoTextGrid thee = TextGrid_create (my xmin, my xmax, GET_STRING (U"All tier names"), GET_STRING (U"Which of these are point tiers?"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -2015,21 +2075,24 @@ DIRECT2 (Sound_to_TextTier) {
 	LOOP {
 		iam (Sound);
 		autoTextTier thee = TextTier_create (my xmin, my xmax);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 FORM (SoundInputPrefs, U"Sound recording preferences", U"SoundRecorder") {
-	NATURAL (U"Buffer size (MB)", U"20")
+	NATURAL (U"Buffer size (MB)", U"60")
+	OPTIONMENU_ENUM (U"Input sound system", kMelder_inputSoundSystem, DEFAULT)
 	OK2
 SET_INTEGER (U"Buffer size", SoundRecorder_getBufferSizePref_MB ())
+SET_ENUM (U"Input sound system", kMelder_inputSoundSystem, MelderAudio_getInputSoundSystem())
 DO
 	long size = GET_INTEGER (U"Buffer size");
 	if (size > 1000) Melder_throw (U"Buffer size cannot exceed 1000 megabytes.");
 	SoundRecorder_setBufferSizePref_MB (size);
+	MelderAudio_setInputSoundSystem (GET_ENUM (kMelder_inputSoundSystem, U"Input sound system"));
 END2 }
 
-FORM (SoundOutputPrefs, U"Sound playing preferences", 0) {
+FORM (SoundOutputPrefs, U"Sound playing preferences", nullptr) {
 	LABEL (U"", U"The following determines how sounds are played.")
 	LABEL (U"", U"Between parentheses, you find what you can do simultaneously.")
 	LABEL (U"", U"Decrease asynchronicity if sound plays with discontinuities.")
@@ -2038,156 +2101,218 @@ FORM (SoundOutputPrefs, U"Sound playing preferences", 0) {
 	#define str(s) #s
 	REAL (U"Silence before (s)", U"" xstr (kMelderAudio_outputSilenceBefore_DEFAULT))
 	REAL (U"Silence after (s)", U"" xstr (kMelderAudio_outputSilenceAfter_DEFAULT))
+	OPTIONMENU_ENUM (U"Output sound system", kMelder_outputSoundSystem, DEFAULT)
 	OK2
 SET_ENUM (U"Maximum asynchronicity", kMelder_asynchronicityLevel, MelderAudio_getOutputMaximumAsynchronicity ())
 SET_REAL (U"Silence before", MelderAudio_getOutputSilenceBefore ())
 SET_REAL (U"Silence after", MelderAudio_getOutputSilenceAfter ())
+SET_ENUM (U"Output sound system", kMelder_outputSoundSystem, MelderAudio_getOutputSoundSystem())
 DO
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	MelderAudio_setOutputMaximumAsynchronicity (GET_ENUM (kMelder_asynchronicityLevel, U"Maximum asynchronicity"));
 	MelderAudio_setOutputSilenceBefore (GET_REAL (U"Silence before"));
 	MelderAudio_setOutputSilenceAfter (GET_REAL (U"Silence after"));
+	MelderAudio_setOutputSoundSystem (GET_ENUM (kMelder_outputSoundSystem, U"Output sound system"));
 END2 }
 
-FORM_WRITE2 (Sound_writeToAifcFile, U"Save as AIFC file", 0, U"aifc") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFC, 16);
+#ifdef HAVE_PULSEAUDIO
+void pulseAudio_serverReport ();
+DIRECT (Praat_reportSoundServerProperties)
+	pulseAudio_serverReport ();
+END
+#endif
+
+FORM_WRITE2 (Sound_writeToAifcFile, U"Save as AIFC file", nullptr, U"aifc") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFC, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToAiffFile, U"Save as AIFF file", 0, U"aiff") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_AIFF, 16);
+FORM_WRITE2 (Sound_writeToAiffFile, U"Save as AIFF file", nullptr, U"aiff") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_AIFF, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToFlacFile, U"Save as FLAC file", 0, U"flac") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_FLAC, 16);
+FORM_WRITE2 (Sound_writeToFlacFile, U"Save as FLAC file", nullptr, U"flac") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_FLAC, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToKayFile, U"Save as Kay sound file", 0, U"kay") {
+FORM_WRITE2 (Sound_writeToKayFile, U"Save as Kay sound file", nullptr, U"kay") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToKayFile (me, file);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_writeToNextSunFile, U"Save as NeXT/Sun file", 0, U"au") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NEXT_SUN, 16);
+FORM_WRITE2 (Sound_writeToNextSunFile, U"Save as NeXT/Sun file", nullptr, U"au") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NEXT_SUN, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToNistFile, U"Save as NIST file", 0, U"nist") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NIST, 16);
+FORM_WRITE2 (Sound_writeToNistFile, U"Save as NIST file", nullptr, U"nist") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NIST, 16);
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw8bitSignedFile, U"Save as raw 8-bit signed sound file", 0, U"8sig") {
+FORM_WRITE2 (Sound_saveAsRaw8bitSignedFile, U"Save as raw 8-bit signed sound file", nullptr, U"8sig") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_8_SIGNED);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw8bitUnsignedFile, U"Save as raw 8-bit unsigned sound file", 0, U"8uns") {
+FORM_WRITE2 (Sound_saveAsRaw8bitUnsignedFile, U"Save as raw 8-bit unsigned sound file", nullptr, U"8uns") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_8_UNSIGNED);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw16bitBigEndianFile, U"Save as raw 16-bit big-endian sound file", 0, U"16be") {
+FORM_WRITE2 (Sound_saveAsRaw16bitBigEndianFile, U"Save as raw 16-bit big-endian sound file", nullptr, U"16be") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_16_BIG_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw16bitLittleEndianFile, U"Save as raw 16-bit little-endian sound file", 0, U"16le") {
+FORM_WRITE2 (Sound_saveAsRaw16bitLittleEndianFile, U"Save as raw 16-bit little-endian sound file", nullptr, U"16le") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_16_LITTLE_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw24bitBigEndianFile, U"Save as raw 24-bit big-endian sound file", 0, U"24be") {
+FORM_WRITE2 (Sound_saveAsRaw24bitBigEndianFile, U"Save as raw 24-bit big-endian sound file", nullptr, U"24be") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_24_BIG_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw24bitLittleEndianFile, U"Save as raw 24-bit little-endian sound file", 0, U"24le") {
+FORM_WRITE2 (Sound_saveAsRaw24bitLittleEndianFile, U"Save as raw 24-bit little-endian sound file", nullptr, U"24le") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_24_LITTLE_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw32bitBigEndianFile, U"Save as raw 32-bit big-endian sound file", 0, U"32be") {
+FORM_WRITE2 (Sound_saveAsRaw32bitBigEndianFile, U"Save as raw 32-bit big-endian sound file", nullptr, U"32be") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_32_BIG_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_saveAsRaw32bitLittleEndianFile, U"Save as raw 32-bit little-endian sound file", 0, U"32le") {
+FORM_WRITE2 (Sound_saveAsRaw32bitLittleEndianFile, U"Save as raw 32-bit little-endian sound file", nullptr, U"32le") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToRawSoundFile (me, file, Melder_LINEAR_32_LITTLE_ENDIAN);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_writeToSesamFile, U"Save as Sesam file", 0, U"sdf") {
+FORM_WRITE2 (Sound_writeToSesamFile, U"Save as Sesam file", nullptr, U"sdf") {
 	LOOP {
 		iam (Sound);
 		Sound_writeToSesamFile (me, file);
 	}
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoAifcFile, U"Save as stereo AIFC file", 0, U"aifc") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_AIFC, 16);
+FORM_WRITE2 (Sound_writeToStereoAifcFile, U"Save as stereo AIFC file", nullptr, U"aifc") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_AIFC, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoAiffFile, U"Save as stereo AIFF file", 0, U"aiff") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_AIFF, 16);
+FORM_WRITE2 (Sound_writeToStereoAiffFile, U"Save as stereo AIFF file", nullptr, U"aiff") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_AIFF, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoNextSunFile, U"Save as stereo NeXT/Sun file", 0, U"au") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_NEXT_SUN, 16);
+FORM_WRITE2 (Sound_writeToStereoNextSunFile, U"Save as stereo NeXT/Sun file", nullptr, U"au") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_NEXT_SUN, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoNistFile, U"Save as stereo NIST file", 0, U"nist") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_NIST, 16);
+FORM_WRITE2 (Sound_writeToStereoNistFile, U"Save as stereo NIST file", nullptr, U"nist") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_NIST, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoFlacFile, U"Save as stereo FLAC file", 0, U"flac") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_FLAC, 16);
+FORM_WRITE2 (Sound_writeToStereoFlacFile, U"Save as stereo FLAC file", nullptr, U"flac") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_FLAC, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToStereoWavFile, U"Save as stereo WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	autoSound stereo = Sounds_combineToStereo (set.peek());
-	Sound_writeToAudioFile (stereo.peek(), file, Melder_WAV, 16);
+FORM_WRITE2 (Sound_writeToStereoWavFile, U"Save as stereo WAV file", nullptr, U"wav") {
+	OrderedOf<structSound> list;
+	LOOP {
+		iam (Sound);
+		list. addItem_ref (me);
+	}
+	autoSound stereo = Sounds_combineToStereo (& list);
+	Sound_writeToAudioFile (stereo.get(), file, Melder_WAV, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToSunAudioFile, U"Save as NeXT/Sun file", 0, U"au") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_NEXT_SUN, 16);
+FORM_WRITE2 (Sound_writeToSunAudioFile, U"Save as NeXT/Sun file", nullptr, U"au") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_NEXT_SUN, 16);
 END2 }
 
-FORM_WRITE2 (Sound_writeToWavFile, U"Save as WAV file", 0, U"wav") {
-	autoCollection set = praat_getSelectedObjects ();
-	LongSound_concatenate (set.peek(), file, Melder_WAV, 16);
+FORM_WRITE2 (Sound_writeToWavFile, U"Save as WAV file", nullptr, U"wav") {
+	autoSoundAndLongSoundList list = SoundAndLongSoundList_create ();
+	LOOP {
+		iam (Sampled);
+		list -> addItem_ref (me);
+	}
+	LongSound_concatenate (list.get(), file, Melder_WAV, 16);
 END2 }
 
 /***** STOP *****/
@@ -2208,15 +2333,14 @@ END2 }
 
 /***** file recognizers *****/
 
-static Any macSoundOrEmptyFileRecognizer (int nread, const char *header, MelderFile file) {
+static autoDaata macSoundOrEmptyFileRecognizer (int nread, const char * /* header */, MelderFile file) {
 	/***** No data in file? This may be a Macintosh sound file with only a resource fork. *****/
-	(void) header;
-	if (nread > 0) return NULL;
+	if (nread > 0) return autoDaata ();
 	Melder_throw (U"File ", file, U" contains no audio data.");   // !!!
 }
 
-static Any soundFileRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread < 16) return NULL;
+static autoDaata soundFileRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread < 16) return autoDaata ();
 	if (strnequ (header, "FORM", 4) && strnequ (header + 8, "AIF", 3)) return Sound_readFromSoundFile (file);
 	if (strnequ (header, "RIFF", 4) && (strnequ (header + 8, "WAVE", 4) || strnequ (header + 8, "CDDA", 4))) return Sound_readFromSoundFile (file);
 	if (strnequ (header, ".snd", 4)) return Sound_readFromSoundFile (file);
@@ -2225,12 +2349,11 @@ static Any soundFileRecognizer (int nread, const char *header, MelderFile file)
 	if ((Melder_stringMatchesCriterion (MelderFile_name (file), kMelder_string_ENDS_WITH, U".mp3") ||
 	     Melder_stringMatchesCriterion (MelderFile_name (file), kMelder_string_ENDS_WITH, U".MP3"))
 		&& mp3_recognize (nread, header)) return Sound_readFromSoundFile (file);   // Erez Volk, May 2007
-	return NULL;
+	return autoDaata ();
 }
 
-static Any movieFileRecognizer (int nread, const char *header, MelderFile file) {
+static autoDaata movieFileRecognizer (int nread, const char * /* header */, MelderFile file) {
 	const char32 *fileName = MelderFile_name (file);
-	(void) header;
 	/*Melder_casual ("%d %d %d %d %d %d %d %d %d %d", header [0],
 		header [1], header [2], header [3],
 		header [4], header [5], header [6],
@@ -2238,71 +2361,70 @@ static Any movieFileRecognizer (int nread, const char *header, MelderFile file)
 	if (nread < 512 || (! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".mov") &&
 	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".MOV") &&
 	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".avi") &&
-	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".AVI"))) return NULL;
+	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".AVI"))) return autoDaata ();
 	Melder_throw (U"This Praat version cannot open movie files.");
-	return NULL;
+	return autoDaata ();
 }
 
-static Any sesamFileRecognizer (int nread, const char *header, MelderFile file) {
+static autoDaata sesamFileRecognizer (int nread, const char * /* header */, MelderFile file) {
 	const char32 *fileName = MelderFile_name (file);
-	(void) header;
 	if (nread < 512 || (! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".sdf") &&
-	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".SDF"))) return NULL;
+	                    ! Melder_stringMatchesCriterion (fileName, kMelder_string_ENDS_WITH, U".SDF"))) return autoDaata ();
 	return Sound_readFromSesamFile (file);
 }
 
-static Any bellLabsFileRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread < 16 || ! strnequ (& header [0], "SIG\n", 4)) return NULL;
+static autoDaata bellLabsFileRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread < 16 || ! strnequ (& header [0], "SIG\n", 4)) return autoDaata ();
 	return Sound_readFromBellLabsFile (file);
 }
 
-static Any kayFileRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread <= 12 || ! strnequ (& header [0], "FORMDS16", 8)) return NULL;
+static autoDaata kayFileRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread <= 12 || ! strnequ (& header [0], "FORMDS16", 8)) return autoDaata ();
 	return Sound_readFromKayFile (file);
 }
 
 /***** override play and record buttons in manuals *****/
 
-static Sound melderSound, melderSoundFromFile, last;
+static autoSound melderSound, melderSoundFromFile;
+static Sound last;
 static int recordProc (double duration) {
-	if (last == melderSound) last = NULL;
-	forget (melderSound);
+	if (last == melderSound.get()) last = nullptr;
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	melderSound = Sound_recordFixedTime (1, 1.0, 0.5, 44100, duration);
 	if (! melderSound) return 0;
-	last = melderSound;
+	last = melderSound.get();
 	return 1;
 }
 static int recordFromFileProc (MelderFile file) {
-	if (last == melderSoundFromFile) last = NULL;
-	forget (melderSoundFromFile);
-	Melder_warningOff ();   /* Like "misssing samples". */
-	melderSoundFromFile = (Sound) Data_readFromFile (file);
+	if (last == melderSoundFromFile.get()) last = nullptr;
+	Melder_warningOff ();   // like "misssing samples"
+	melderSoundFromFile = Data_readFromFile (file). static_cast_move<structSound>();
 	Melder_warningOn ();
 	if (! melderSoundFromFile) return 0;
-	if (! Thing_isa (melderSoundFromFile, classSound)) { forget (melderSoundFromFile); return 0; }
-	last = melderSoundFromFile;
-	Sound_play (melderSoundFromFile, NULL, NULL);
+	if (! Thing_isa (melderSoundFromFile.get(), classSound)) { melderSoundFromFile.reset(); return 0; }
+	last = melderSoundFromFile.get();
+	Sound_play (melderSoundFromFile.get(), nullptr, nullptr);
 	return 1;
 }
-static void playProc (void) {
+static void playProc () {
 	if (melderSound) {
-		Sound_play (melderSound, NULL, NULL);
-		last = melderSound;
+		Sound_play (melderSound.get(), nullptr, nullptr);
+		last = melderSound.get();
 	}
 }
-static void playReverseProc (void) {
+static void playReverseProc () {
 	/*if (melderSound) Sound_playReverse (melderSound);*/
 }
-static int publishPlayedProc (void) {
+static int publishPlayedProc () {
 	if (! last) return 0;
-	return Melder_publish (Data_copy (last));
+	autoSound sound = Data_copy (last);
+	return Data_publish (sound.move());
 }
 
 /***** buttons *****/
 
-void praat_uvafon_Sound_init (void);
-void praat_uvafon_Sound_init (void) {
+void praat_uvafon_Sound_init ();
+void praat_uvafon_Sound_init () {
 
 	Data_recognizeFileType (macSoundOrEmptyFileRecognizer);
 	Data_recognizeFileType (soundFileRecognizer);
@@ -2324,290 +2446,293 @@ void praat_uvafon_Sound_init (void) {
 	Melder_setPlayReverseProc (playReverseProc);
 	Melder_setPublishPlayedProc (publishPlayedProc);
 
-	praat_addMenuCommand (U"Objects", U"New", U"Record mono Sound...", 0, praat_ATTRACTIVE + 'R', DO_Sound_record_mono);
-	praat_addMenuCommand (U"Objects", U"New", U"Record stereo Sound...", 0, 0, DO_Sound_record_stereo);
-	praat_addMenuCommand (U"Objects", U"New", U"Record Sound (fixed time)...", 0, praat_HIDDEN, DO_Sound_recordFixedTime);
-	praat_addMenuCommand (U"Objects", U"New", U"Sound", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Sound...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_create);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Sound as pure tone...", 0, 1, DO_Sound_createAsPureTone);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Sound from formula...", 0, 1, DO_Sound_createFromFormula);
-		praat_addMenuCommand (U"Objects", U"New", U"-- create sound advanced --", 0, 1, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Sound as tone complex...", 0, 1, DO_Sound_createFromToneComplex);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Sound from tone complex...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_createFromToneComplex);
-
-	praat_addMenuCommand (U"Objects", U"Open", U"-- read sound --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Open", U"Open long sound file...", 0, 'L', DO_LongSound_open);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read two Sounds from stereo file...", 0, praat_HIDDEN, DO_Sound_readSeparateChannelsFromSoundFile);   // deprecated 2010
-	praat_addMenuCommand (U"Objects", U"Open", U"Read separate channels from sound file...", 0, 0, DO_Sound_readSeparateChannelsFromSoundFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read from special sound file", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"Open", U"Read Sound from raw Alaw file...", 0, 1, DO_Sound_readFromRawAlawFile);
-
-	praat_addMenuCommand (U"Objects", U"Goodies", U"Stop playing sound", 0, GuiMenu_ESCAPE, DO_stopPlayingSound);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"-- sound prefs --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"Sound recording preferences...", 0, 0, DO_SoundInputPrefs);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"Sound playing preferences...", 0, 0, DO_SoundOutputPrefs);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"LongSound preferences...", 0, 0, DO_LongSoundPrefs);
-
-	praat_addAction1 (classLongSound, 0, U"LongSound help", 0, 0, DO_LongSound_help);
-	praat_addAction1 (classLongSound, 1, U"View", 0, praat_ATTRACTIVE, DO_LongSound_view);
-	praat_addAction1 (classLongSound, 1, U"Open", 0, praat_HIDDEN, DO_LongSound_view);   // deprecated 2011
-	praat_addAction1 (classLongSound, 0, U"Play part...", 0, 0, DO_LongSound_playPart);
-	praat_addAction1 (classLongSound, 1, U"Query -", 0, 0, 0);
+	praat_addMenuCommand (U"Objects", U"New", U"Record mono Sound...", nullptr, praat_ATTRACTIVE + 'R', DO_Sound_record_mono);
+	praat_addMenuCommand (U"Objects", U"New", U"Record stereo Sound...", nullptr, 0, DO_Sound_record_stereo);
+	praat_addMenuCommand (U"Objects", U"New", U"Record Sound (fixed time)...", nullptr, praat_HIDDEN, DO_Sound_recordFixedTime);
+	praat_addMenuCommand (U"Objects", U"New", U"Sound", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Sound...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_create);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Sound as pure tone...", nullptr, 1, DO_Sound_createAsPureTone);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Sound from formula...", nullptr, 1, DO_Sound_createFromFormula);
+		praat_addMenuCommand (U"Objects", U"New", U"-- create sound advanced --", nullptr, 1, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Sound as tone complex...", nullptr, 1, DO_Sound_createFromToneComplex);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Sound from tone complex...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_createFromToneComplex);
+
+	praat_addMenuCommand (U"Objects", U"Open", U"-- read sound --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Open", U"Open long sound file...", nullptr, 'L', DO_LongSound_open);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read two Sounds from stereo file...", nullptr, praat_HIDDEN, DO_Sound_readSeparateChannelsFromSoundFile);   // deprecated 2010
+	praat_addMenuCommand (U"Objects", U"Open", U"Read separate channels from sound file...", nullptr, 0, DO_Sound_readSeparateChannelsFromSoundFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read from special sound file", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"Open", U"Read Sound from raw Alaw file...", nullptr, 1, DO_Sound_readFromRawAlawFile);
+
+	praat_addMenuCommand (U"Objects", U"Goodies", U"Stop playing sound", nullptr, GuiMenu_ESCAPE, DO_stopPlayingSound);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"-- sound prefs --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"Sound recording preferences...", nullptr, 0, DO_SoundInputPrefs);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"Sound playing preferences...", nullptr, 0, DO_SoundOutputPrefs);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"LongSound preferences...", nullptr, 0, DO_LongSoundPrefs);
+#ifdef HAVE_PULSEAUDIO
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report sound server properties", U"Report system properties", 0, DO_Praat_reportSoundServerProperties);
+#endif
+
+	praat_addAction1 (classLongSound, 0, U"LongSound help", nullptr, 0, DO_LongSound_help);
+	praat_addAction1 (classLongSound, 1, U"View", nullptr, praat_ATTRACTIVE, DO_LongSound_view);
+	praat_addAction1 (classLongSound, 1, U"Open", nullptr, praat_HIDDEN, DO_LongSound_view);   // deprecated 2011
+	praat_addAction1 (classLongSound, 0, U"Play part...", nullptr, 0, DO_LongSound_playPart);
+	praat_addAction1 (classLongSound, 1, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFunction_query_init (classLongSound);
-		praat_addAction1 (classLongSound, 1, U"Sampling", 0, 1, 0);
-		praat_addAction1 (classLongSound, 1, U"Get number of samples", 0, 2, DO_LongSound_getNumberOfSamples);
-		praat_addAction1 (classLongSound, 1, U"Get sampling period", 0, 2, DO_LongSound_getSamplePeriod);
-							praat_addAction1 (classLongSound, 1, U"Get sample duration", 0, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSamplePeriod);
-							praat_addAction1 (classLongSound, 1, U"Get sample period", 0, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSamplePeriod);
-		praat_addAction1 (classLongSound, 1, U"Get sampling frequency", 0, 2, DO_LongSound_getSampleRate);
-							praat_addAction1 (classLongSound, 1, U"Get sample rate", 0, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSampleRate);   // deprecated 2004
-		praat_addAction1 (classLongSound, 1, U"-- get time discretization --", 0, 2, 0);
-		praat_addAction1 (classLongSound, 1, U"Get time from sample number...", 0, 2, DO_LongSound_getTimeFromIndex);
-							praat_addAction1 (classLongSound, 1, U"Get time from index...", 0, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getTimeFromIndex);
-		praat_addAction1 (classLongSound, 1, U"Get sample number from time...", 0, 2, DO_LongSound_getIndexFromTime);
-							praat_addAction1 (classLongSound, 1, U"Get index from time...", 0, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getIndexFromTime);
-	praat_addAction1 (classLongSound, 0, U"Annotate -", 0, 0, 0);
-		praat_addAction1 (classLongSound, 0, U"Annotation tutorial", 0, 1, DO_AnnotationTutorial);
-		praat_addAction1 (classLongSound, 0, U"-- to text grid --", 0, 1, 0);
-		praat_addAction1 (classLongSound, 0, U"To TextGrid...", 0, 1, DO_LongSound_to_TextGrid);
-	praat_addAction1 (classLongSound, 0, U"Convert to Sound", 0, 0, 0);
-	praat_addAction1 (classLongSound, 0, U"Extract part...", 0, 0, DO_LongSound_extractPart);
-	praat_addAction1 (classLongSound, 0, U"Concatenate?", 0, 0, DO_LongSound_concatenate);
-	praat_addAction1 (classLongSound, 0, U"Save as WAV file...", 0, 0, DO_LongSound_writeToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Write to WAV file...", 0, praat_HIDDEN, DO_LongSound_writeToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Save as AIFF file...", 0, 0, DO_LongSound_writeToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Write to AIFF file...", 0, praat_HIDDEN, DO_LongSound_writeToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Save as AIFC file...", 0, 0, DO_LongSound_writeToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Write to AIFC file...", 0, praat_HIDDEN, DO_LongSound_writeToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Save as Next/Sun file...", 0, 0, DO_LongSound_writeToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Write to Next/Sun file...", 0, praat_HIDDEN, DO_LongSound_writeToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Save as NIST file...", 0, 0, DO_LongSound_writeToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Write to NIST file...", 0, praat_HIDDEN, DO_LongSound_writeToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Save as FLAC file...", 0, 0, DO_LongSound_writeToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Write to FLAC file...", 0, praat_HIDDEN, DO_LongSound_writeToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as WAV file...", 0, 0, DO_LongSound_writeLeftChannelToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to WAV file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as AIFF file...", 0, 0, DO_LongSound_writeLeftChannelToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to AIFF file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as AIFC file...", 0, 0, DO_LongSound_writeLeftChannelToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to AIFC file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as Next/Sun file...", 0, 0, DO_LongSound_writeLeftChannelToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to Next/Sun file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as NIST file...", 0, 0, DO_LongSound_writeLeftChannelToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to NIST file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Save left channel as FLAC file...", 0, 0, DO_LongSound_writeLeftChannelToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Write left channel to FLAC file...", 0, praat_HIDDEN, DO_LongSound_writeLeftChannelToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as WAV file...", 0, 0, DO_LongSound_writeRightChannelToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to WAV file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToWavFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as AIFF file...", 0, 0, DO_LongSound_writeRightChannelToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to AIFF file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToAiffFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as AIFC file...", 0, 0, DO_LongSound_writeRightChannelToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to AIFC file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToAifcFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as Next/Sun file...", 0, 0, DO_LongSound_writeRightChannelToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to Next/Sun file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToNextSunFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as NIST file...", 0, 0, DO_LongSound_writeRightChannelToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to NIST file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToNistFile);
-	praat_addAction1 (classLongSound, 0, U"Save right channel as FLAC file...", 0, 0, DO_LongSound_writeRightChannelToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Write right channel to FLAC file...", 0, praat_HIDDEN, DO_LongSound_writeRightChannelToFlacFile);
-	praat_addAction1 (classLongSound, 0, U"Save part as audio file...", 0, 0, DO_LongSound_writePartToAudioFile);
-	praat_addAction1 (classLongSound, 0, U"Write part to audio file...", 0, praat_HIDDEN, DO_LongSound_writePartToAudioFile);
-
-	praat_addAction1 (classSound, 0, U"Save as WAV file...", 0, 0, DO_Sound_writeToWavFile);
-	praat_addAction1 (classSound, 0, U"Write to WAV file...", 0, praat_HIDDEN, DO_Sound_writeToWavFile);   // hidden 2011
-	praat_addAction1 (classSound, 0, U"Save as AIFF file...", 0, 0, DO_Sound_writeToAiffFile);
-	praat_addAction1 (classSound, 0, U"Write to AIFF file...", 0, praat_HIDDEN, DO_Sound_writeToAiffFile);
-	praat_addAction1 (classSound, 0, U"Save as AIFC file...", 0, 0, DO_Sound_writeToAifcFile);
-	praat_addAction1 (classSound, 0, U"Write to AIFC file...", 0, praat_HIDDEN, DO_Sound_writeToAifcFile);
-	praat_addAction1 (classSound, 0, U"Save as Next/Sun file...", 0, 0, DO_Sound_writeToNextSunFile);
-	praat_addAction1 (classSound, 0, U"Write to Next/Sun file...", 0, praat_HIDDEN, DO_Sound_writeToNextSunFile);
-	praat_addAction1 (classSound, 0, U"Save as Sun audio file...", 0, praat_HIDDEN, DO_Sound_writeToSunAudioFile);
-	praat_addAction1 (classSound, 0, U"Write to Sun audio file...", 0, praat_HIDDEN, DO_Sound_writeToSunAudioFile);
-	praat_addAction1 (classSound, 0, U"Save as NIST file...", 0, 0, DO_Sound_writeToNistFile);
-	praat_addAction1 (classSound, 0, U"Write to NIST file...", 0, praat_HIDDEN, DO_Sound_writeToNistFile);
-	praat_addAction1 (classSound, 0, U"Save as FLAC file...", 0, 0, DO_Sound_writeToFlacFile);
-	praat_addAction1 (classSound, 0, U"Write to FLAC file...", 0, praat_HIDDEN, DO_Sound_writeToFlacFile);
-	praat_addAction1 (classSound, 1, U"Save as Kay sound file...", 0, 0, DO_Sound_writeToKayFile);
-	praat_addAction1 (classSound, 1, U"Write to Kay sound file...", 0, praat_HIDDEN, DO_Sound_writeToKayFile);
-	praat_addAction1 (classSound, 1, U"Save as Sesam file...", 0, praat_HIDDEN, DO_Sound_writeToSesamFile);
-	praat_addAction1 (classSound, 1, U"Write to Sesam file...", 0, praat_HIDDEN, DO_Sound_writeToSesamFile);
-	praat_addAction1 (classSound, 0, U"Save as 24-bit WAV file...", 0, 0, DO_Sound_saveAs24BitWavFile);
-	praat_addAction1 (classSound, 0, U"Save as 32-bit WAV file...", 0, 0, DO_Sound_saveAs32BitWavFile);
-	praat_addAction1 (classSound, 2, U"Write to stereo WAV file...", 0, praat_HIDDEN, DO_Sound_writeToStereoWavFile);   // deprecated 2007
-	praat_addAction1 (classSound, 2, U"Write to stereo AIFF file...", 0, praat_HIDDEN, DO_Sound_writeToStereoAiffFile);   // deprecated 2007
-	praat_addAction1 (classSound, 2, U"Write to stereo AIFC file...", 0, praat_HIDDEN, DO_Sound_writeToStereoAifcFile);   // deprecated 2007
-	praat_addAction1 (classSound, 2, U"Write to stereo Next/Sun file...", 0, praat_HIDDEN, DO_Sound_writeToStereoNextSunFile);   // deprecated 2007
-	praat_addAction1 (classSound, 2, U"Write to stereo NIST file...", 0, praat_HIDDEN, DO_Sound_writeToStereoNistFile);   // deprecated 2007
-	praat_addAction1 (classSound, 2, U"Write to stereo FLAC file...", 0, praat_HIDDEN, DO_Sound_writeToStereoFlacFile);
-	//praat_addAction1 (classSound, 1, U"Save as raw sound file", 0, 0, 0);
-	praat_addAction1 (classSound, 1, U"Save as raw 8-bit signed file...", 0, 0, DO_Sound_saveAsRaw8bitSignedFile);
-	praat_addAction1 (classSound, 1, U"Write to raw 8-bit signed file...", 0, praat_HIDDEN, DO_Sound_saveAsRaw8bitSignedFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 8-bit unsigned file...", 0, 0, DO_Sound_saveAsRaw8bitUnsignedFile);
-	praat_addAction1 (classSound, 1, U"Write to raw 8-bit unsigned file...", 0, praat_HIDDEN, DO_Sound_saveAsRaw8bitUnsignedFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 16-bit big-endian file...", 0, 0, DO_Sound_saveAsRaw16bitBigEndianFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 16-bit little-endian file...", 0, 0, DO_Sound_saveAsRaw16bitLittleEndianFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 24-bit big-endian file...", 0, 0, DO_Sound_saveAsRaw24bitBigEndianFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 24-bit little-endian file...", 0, 0, DO_Sound_saveAsRaw24bitLittleEndianFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 32-bit big-endian file...", 0, 0, DO_Sound_saveAsRaw32bitBigEndianFile);
-	praat_addAction1 (classSound, 1, U"Save as raw 32-bit little-endian file...", 0, 0, DO_Sound_saveAsRaw32bitLittleEndianFile);
-	praat_addAction1 (classSound, 0, U"Sound help", 0, 0, DO_Sound_help);
-	praat_addAction1 (classSound, 1, U"Edit", 0, praat_HIDDEN, DO_Sound_edit);   // deprecated 2011
-	praat_addAction1 (classSound, 1, U"Open", 0, praat_HIDDEN, DO_Sound_edit);   // deprecated 2011
+		praat_addAction1 (classLongSound, 1, U"Sampling", nullptr, 1, nullptr);
+		praat_addAction1 (classLongSound, 1, U"Get number of samples", nullptr, 2, DO_LongSound_getNumberOfSamples);
+		praat_addAction1 (classLongSound, 1, U"Get sampling period", nullptr, 2, DO_LongSound_getSamplePeriod);
+							praat_addAction1 (classLongSound, 1, U"Get sample duration", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSamplePeriod);
+							praat_addAction1 (classLongSound, 1, U"Get sample period", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSamplePeriod);
+		praat_addAction1 (classLongSound, 1, U"Get sampling frequency", nullptr, 2, DO_LongSound_getSampleRate);
+							praat_addAction1 (classLongSound, 1, U"Get sample rate", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getSampleRate);   // deprecated 2004
+		praat_addAction1 (classLongSound, 1, U"-- get time discretization --", nullptr, 2, nullptr);
+		praat_addAction1 (classLongSound, 1, U"Get time from sample number...", nullptr, 2, DO_LongSound_getTimeFromIndex);
+							praat_addAction1 (classLongSound, 1, U"Get time from index...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getTimeFromIndex);
+		praat_addAction1 (classLongSound, 1, U"Get sample number from time...", nullptr, 2, DO_LongSound_getIndexFromTime);
+							praat_addAction1 (classLongSound, 1, U"Get index from time...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_LongSound_getIndexFromTime);
+	praat_addAction1 (classLongSound, 0, U"Annotate -", nullptr, 0, nullptr);
+		praat_addAction1 (classLongSound, 0, U"Annotation tutorial", nullptr, 1, DO_AnnotationTutorial);
+		praat_addAction1 (classLongSound, 0, U"-- to text grid --", nullptr, 1, nullptr);
+		praat_addAction1 (classLongSound, 0, U"To TextGrid...", nullptr, 1, DO_LongSound_to_TextGrid);
+	praat_addAction1 (classLongSound, 0, U"Convert to Sound", nullptr, 0, nullptr);
+	praat_addAction1 (classLongSound, 0, U"Extract part...", nullptr, 0, DO_LongSound_extractPart);
+	praat_addAction1 (classLongSound, 0, U"Concatenate?", nullptr, 0, DO_LongSound_concatenate);
+	praat_addAction1 (classLongSound, 0, U"Save as WAV file...", nullptr, 0, DO_LongSound_writeToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Write to WAV file...", nullptr, praat_HIDDEN, DO_LongSound_writeToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Save as AIFF file...", nullptr, 0, DO_LongSound_writeToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Write to AIFF file...", nullptr, praat_HIDDEN, DO_LongSound_writeToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Save as AIFC file...", nullptr, 0, DO_LongSound_writeToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Write to AIFC file...", nullptr, praat_HIDDEN, DO_LongSound_writeToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Save as Next/Sun file...", nullptr, 0, DO_LongSound_writeToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Write to Next/Sun file...", nullptr, praat_HIDDEN, DO_LongSound_writeToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Save as NIST file...", nullptr, 0, DO_LongSound_writeToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Write to NIST file...", nullptr, praat_HIDDEN, DO_LongSound_writeToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Save as FLAC file...", nullptr, 0, DO_LongSound_writeToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Write to FLAC file...", nullptr, praat_HIDDEN, DO_LongSound_writeToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as WAV file...", nullptr, 0, DO_LongSound_writeLeftChannelToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to WAV file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as AIFF file...", nullptr, 0, DO_LongSound_writeLeftChannelToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to AIFF file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as AIFC file...", nullptr, 0, DO_LongSound_writeLeftChannelToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to AIFC file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as Next/Sun file...", nullptr, 0, DO_LongSound_writeLeftChannelToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to Next/Sun file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as NIST file...", nullptr, 0, DO_LongSound_writeLeftChannelToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to NIST file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Save left channel as FLAC file...", nullptr, 0, DO_LongSound_writeLeftChannelToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Write left channel to FLAC file...", nullptr, praat_HIDDEN, DO_LongSound_writeLeftChannelToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as WAV file...", nullptr, 0, DO_LongSound_writeRightChannelToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to WAV file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToWavFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as AIFF file...", nullptr, 0, DO_LongSound_writeRightChannelToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to AIFF file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToAiffFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as AIFC file...", nullptr, 0, DO_LongSound_writeRightChannelToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to AIFC file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToAifcFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as Next/Sun file...", nullptr, 0, DO_LongSound_writeRightChannelToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to Next/Sun file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToNextSunFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as NIST file...", nullptr, 0, DO_LongSound_writeRightChannelToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to NIST file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToNistFile);
+	praat_addAction1 (classLongSound, 0, U"Save right channel as FLAC file...", nullptr, 0, DO_LongSound_writeRightChannelToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Write right channel to FLAC file...", nullptr, praat_HIDDEN, DO_LongSound_writeRightChannelToFlacFile);
+	praat_addAction1 (classLongSound, 0, U"Save part as audio file...", nullptr, 0, DO_LongSound_writePartToAudioFile);
+	praat_addAction1 (classLongSound, 0, U"Write part to audio file...", nullptr, praat_HIDDEN, DO_LongSound_writePartToAudioFile);
+
+	praat_addAction1 (classSound, 0, U"Save as WAV file...", nullptr, 0, DO_Sound_writeToWavFile);
+	praat_addAction1 (classSound, 0, U"Write to WAV file...", nullptr, praat_HIDDEN, DO_Sound_writeToWavFile);   // hidden 2011
+	praat_addAction1 (classSound, 0, U"Save as AIFF file...", nullptr, 0, DO_Sound_writeToAiffFile);
+	praat_addAction1 (classSound, 0, U"Write to AIFF file...", nullptr, praat_HIDDEN, DO_Sound_writeToAiffFile);
+	praat_addAction1 (classSound, 0, U"Save as AIFC file...", nullptr, 0, DO_Sound_writeToAifcFile);
+	praat_addAction1 (classSound, 0, U"Write to AIFC file...", nullptr, praat_HIDDEN, DO_Sound_writeToAifcFile);
+	praat_addAction1 (classSound, 0, U"Save as Next/Sun file...", nullptr, 0, DO_Sound_writeToNextSunFile);
+	praat_addAction1 (classSound, 0, U"Write to Next/Sun file...", nullptr, praat_HIDDEN, DO_Sound_writeToNextSunFile);
+	praat_addAction1 (classSound, 0, U"Save as Sun audio file...", nullptr, praat_HIDDEN, DO_Sound_writeToSunAudioFile);
+	praat_addAction1 (classSound, 0, U"Write to Sun audio file...", nullptr, praat_HIDDEN, DO_Sound_writeToSunAudioFile);
+	praat_addAction1 (classSound, 0, U"Save as NIST file...", nullptr, 0, DO_Sound_writeToNistFile);
+	praat_addAction1 (classSound, 0, U"Write to NIST file...", nullptr, praat_HIDDEN, DO_Sound_writeToNistFile);
+	praat_addAction1 (classSound, 0, U"Save as FLAC file...", nullptr, 0, DO_Sound_writeToFlacFile);
+	praat_addAction1 (classSound, 0, U"Write to FLAC file...", nullptr, praat_HIDDEN, DO_Sound_writeToFlacFile);
+	praat_addAction1 (classSound, 1, U"Save as Kay sound file...", nullptr, 0, DO_Sound_writeToKayFile);
+	praat_addAction1 (classSound, 1, U"Write to Kay sound file...", nullptr, praat_HIDDEN, DO_Sound_writeToKayFile);
+	praat_addAction1 (classSound, 1, U"Save as Sesam file...", nullptr, praat_HIDDEN, DO_Sound_writeToSesamFile);
+	praat_addAction1 (classSound, 1, U"Write to Sesam file...", nullptr, praat_HIDDEN, DO_Sound_writeToSesamFile);
+	praat_addAction1 (classSound, 0, U"Save as 24-bit WAV file...", nullptr, 0, DO_Sound_saveAs24BitWavFile);
+	praat_addAction1 (classSound, 0, U"Save as 32-bit WAV file...", nullptr, 0, DO_Sound_saveAs32BitWavFile);
+	praat_addAction1 (classSound, 2, U"Write to stereo WAV file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoWavFile);   // deprecated 2007
+	praat_addAction1 (classSound, 2, U"Write to stereo AIFF file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoAiffFile);   // deprecated 2007
+	praat_addAction1 (classSound, 2, U"Write to stereo AIFC file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoAifcFile);   // deprecated 2007
+	praat_addAction1 (classSound, 2, U"Write to stereo Next/Sun file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoNextSunFile);   // deprecated 2007
+	praat_addAction1 (classSound, 2, U"Write to stereo NIST file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoNistFile);   // deprecated 2007
+	praat_addAction1 (classSound, 2, U"Write to stereo FLAC file...", nullptr, praat_HIDDEN, DO_Sound_writeToStereoFlacFile);
+	//praat_addAction1 (classSound, 1, U"Save as raw sound file", nullptr, 0, nullptr);
+	praat_addAction1 (classSound, 1, U"Save as raw 8-bit signed file...", nullptr, 0, DO_Sound_saveAsRaw8bitSignedFile);
+	praat_addAction1 (classSound, 1, U"Write to raw 8-bit signed file...", nullptr, praat_HIDDEN, DO_Sound_saveAsRaw8bitSignedFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 8-bit unsigned file...", nullptr, 0, DO_Sound_saveAsRaw8bitUnsignedFile);
+	praat_addAction1 (classSound, 1, U"Write to raw 8-bit unsigned file...", nullptr, praat_HIDDEN, DO_Sound_saveAsRaw8bitUnsignedFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 16-bit big-endian file...", nullptr, 0, DO_Sound_saveAsRaw16bitBigEndianFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 16-bit little-endian file...", nullptr, 0, DO_Sound_saveAsRaw16bitLittleEndianFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 24-bit big-endian file...", nullptr, 0, DO_Sound_saveAsRaw24bitBigEndianFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 24-bit little-endian file...", nullptr, 0, DO_Sound_saveAsRaw24bitLittleEndianFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 32-bit big-endian file...", nullptr, 0, DO_Sound_saveAsRaw32bitBigEndianFile);
+	praat_addAction1 (classSound, 1, U"Save as raw 32-bit little-endian file...", nullptr, 0, DO_Sound_saveAsRaw32bitLittleEndianFile);
+	praat_addAction1 (classSound, 0, U"Sound help", nullptr, 0, DO_Sound_help);
+	praat_addAction1 (classSound, 1, U"Edit", nullptr, praat_HIDDEN, DO_Sound_edit);   // deprecated 2011
+	praat_addAction1 (classSound, 1, U"Open", nullptr, praat_HIDDEN, DO_Sound_edit);   // deprecated 2011
 	praat_addAction1 (classSound, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Sound_edit);
-	praat_addAction1 (classSound, 0, U"Play", 0, 0, DO_Sound_play);
-	praat_addAction1 (classSound, 1, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"Draw...", 0, 1, DO_Sound_draw);
-	praat_addAction1 (classSound, 1, U"Query -", 0, 0, 0);
+	praat_addAction1 (classSound, 0, U"Play", nullptr, 0, DO_Sound_play);
+	praat_addAction1 (classSound, 1, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"Draw...", nullptr, 1, DO_Sound_draw);
+	praat_addAction1 (classSound, 1, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFunction_query_init (classSound);
-		praat_addAction1 (classSound, 1, U"Get number of channels", 0, 1, DO_Sound_getNumberOfChannels);
-		praat_addAction1 (classSound, 1, U"Query time sampling", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get number of samples", 0, 2, DO_Sound_getNumberOfSamples);
-		praat_addAction1 (classSound, 1, U"Get sampling period", 0, 2, DO_Sound_getSamplePeriod);
-							praat_addAction1 (classSound, 1, U"Get sample duration", 0, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSamplePeriod);
-							praat_addAction1 (classSound, 1, U"Get sample period", 0, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSamplePeriod);
-		praat_addAction1 (classSound, 1, U"Get sampling frequency", 0, 2, DO_Sound_getSampleRate);
-							praat_addAction1 (classSound, 1, U"Get sample rate", 0, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSampleRate);   // deprecated 2004
-		praat_addAction1 (classSound, 1, U"-- get time discretization --", 0, 2, 0);
-		praat_addAction1 (classSound, 1, U"Get time from sample number...", 0, 2, DO_Sound_getTimeFromIndex);
-							praat_addAction1 (classSound, 1, U"Get time from index...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getTimeFromIndex);
-		praat_addAction1 (classSound, 1, U"Get sample number from time...", 0, 2, DO_Sound_getIndexFromTime);
-							praat_addAction1 (classSound, 1, U"Get index from time...", 0, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getIndexFromTime);
-		praat_addAction1 (classSound, 1, U"-- get content --", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get value at time...", 0, 1, DO_Sound_getValueAtTime);
-		praat_addAction1 (classSound, 1, U"Get value at sample number...", 0, 1, DO_Sound_getValueAtIndex);
-							praat_addAction1 (classSound, 1, U"Get value at index...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_getValueAtIndex);
-		praat_addAction1 (classSound, 1, U"-- get shape --", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get minimum...", 0, 1, DO_Sound_getMinimum);
-		praat_addAction1 (classSound, 1, U"Get time of minimum...", 0, 1, DO_Sound_getTimeOfMinimum);
-		praat_addAction1 (classSound, 1, U"Get maximum...", 0, 1, DO_Sound_getMaximum);
-		praat_addAction1 (classSound, 1, U"Get time of maximum...", 0, 1, DO_Sound_getTimeOfMaximum);
-		praat_addAction1 (classSound, 1, U"Get absolute extremum...", 0, 1, DO_Sound_getAbsoluteExtremum);
-		praat_addAction1 (classSound, 1, U"Get nearest zero crossing...", 0, 1, DO_Sound_getNearestZeroCrossing);
-		praat_addAction1 (classSound, 1, U"-- get statistics --", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get mean...", 0, 1, DO_Sound_getMean);
-		praat_addAction1 (classSound, 1, U"Get root-mean-square...", 0, 1, DO_Sound_getRootMeanSquare);
-		praat_addAction1 (classSound, 1, U"Get standard deviation...", 0, 1, DO_Sound_getStandardDeviation);
-		praat_addAction1 (classSound, 1, U"-- get energy --", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get energy...", 0, 1, DO_Sound_getEnergy);
-		praat_addAction1 (classSound, 1, U"Get power...", 0, 1, DO_Sound_getPower);
-		praat_addAction1 (classSound, 1, U"-- get energy in air --", 0, 1, 0);
-		praat_addAction1 (classSound, 1, U"Get energy in air", 0, 1, DO_Sound_getEnergyInAir);
-		praat_addAction1 (classSound, 1, U"Get power in air", 0, 1, DO_Sound_getPowerInAir);
-		praat_addAction1 (classSound, 1, U"Get intensity (dB)", 0, 1, DO_Sound_getIntensity_dB);
-	praat_addAction1 (classSound, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classSound, 1, U"Get number of channels", nullptr, 1, DO_Sound_getNumberOfChannels);
+		praat_addAction1 (classSound, 1, U"Query time sampling", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get number of samples", nullptr, 2, DO_Sound_getNumberOfSamples);
+		praat_addAction1 (classSound, 1, U"Get sampling period", nullptr, 2, DO_Sound_getSamplePeriod);
+							praat_addAction1 (classSound, 1, U"Get sample duration", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSamplePeriod);
+							praat_addAction1 (classSound, 1, U"Get sample period", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSamplePeriod);
+		praat_addAction1 (classSound, 1, U"Get sampling frequency", nullptr, 2, DO_Sound_getSampleRate);
+							praat_addAction1 (classSound, 1, U"Get sample rate", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getSampleRate);   // deprecated 2004
+		praat_addAction1 (classSound, 1, U"-- get time discretization --", nullptr, 2, nullptr);
+		praat_addAction1 (classSound, 1, U"Get time from sample number...", nullptr, 2, DO_Sound_getTimeFromIndex);
+							praat_addAction1 (classSound, 1, U"Get time from index...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getTimeFromIndex);
+		praat_addAction1 (classSound, 1, U"Get sample number from time...", nullptr, 2, DO_Sound_getIndexFromTime);
+							praat_addAction1 (classSound, 1, U"Get index from time...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_Sound_getIndexFromTime);
+		praat_addAction1 (classSound, 1, U"-- get content --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get value at time...", nullptr, 1, DO_Sound_getValueAtTime);
+		praat_addAction1 (classSound, 1, U"Get value at sample number...", nullptr, 1, DO_Sound_getValueAtIndex);
+							praat_addAction1 (classSound, 1, U"Get value at index...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_getValueAtIndex);
+		praat_addAction1 (classSound, 1, U"-- get shape --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get minimum...", nullptr, 1, DO_Sound_getMinimum);
+		praat_addAction1 (classSound, 1, U"Get time of minimum...", nullptr, 1, DO_Sound_getTimeOfMinimum);
+		praat_addAction1 (classSound, 1, U"Get maximum...", nullptr, 1, DO_Sound_getMaximum);
+		praat_addAction1 (classSound, 1, U"Get time of maximum...", nullptr, 1, DO_Sound_getTimeOfMaximum);
+		praat_addAction1 (classSound, 1, U"Get absolute extremum...", nullptr, 1, DO_Sound_getAbsoluteExtremum);
+		praat_addAction1 (classSound, 1, U"Get nearest zero crossing...", nullptr, 1, DO_Sound_getNearestZeroCrossing);
+		praat_addAction1 (classSound, 1, U"-- get statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get mean...", nullptr, 1, DO_Sound_getMean);
+		praat_addAction1 (classSound, 1, U"Get root-mean-square...", nullptr, 1, DO_Sound_getRootMeanSquare);
+		praat_addAction1 (classSound, 1, U"Get standard deviation...", nullptr, 1, DO_Sound_getStandardDeviation);
+		praat_addAction1 (classSound, 1, U"-- get energy --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get energy...", nullptr, 1, DO_Sound_getEnergy);
+		praat_addAction1 (classSound, 1, U"Get power...", nullptr, 1, DO_Sound_getPower);
+		praat_addAction1 (classSound, 1, U"-- get energy in air --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 1, U"Get energy in air", nullptr, 1, DO_Sound_getEnergyInAir);
+		praat_addAction1 (classSound, 1, U"Get power in air", nullptr, 1, DO_Sound_getPowerInAir);
+		praat_addAction1 (classSound, 1, U"Get intensity (dB)", nullptr, 1, DO_Sound_getIntensity_dB);
+	praat_addAction1 (classSound, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeFunction_modify_init (classSound);
-		praat_addAction1 (classSound, 0, U"-- modify generic --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Reverse", 0, 1, DO_Sound_reverse);
-		praat_addAction1 (classSound, 0, U"Formula...", 0, 1, DO_Sound_formula);
-		praat_addAction1 (classSound, 0, U"Formula (part)...", 0, 1, DO_Sound_formula_part);
-		praat_addAction1 (classSound, 0, U"-- add & mul --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Add...", 0, 1, DO_Sound_add);
-		praat_addAction1 (classSound, 0, U"Subtract mean", 0, 1, DO_Sound_subtractMean);
-		praat_addAction1 (classSound, 0, U"Multiply...", 0, 1, DO_Sound_multiply);
-		praat_addAction1 (classSound, 0, U"Multiply by window...", 0, 1, DO_Sound_multiplyByWindow);
-		praat_addAction1 (classSound, 0, U"Scale peak...", 0, 1, DO_Sound_scalePeak);
-		praat_addAction1 (classSound, 0, U"Scale...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_scalePeak);
-		praat_addAction1 (classSound, 0, U"Scale intensity...", 0, 1, DO_Sound_scaleIntensity);
-		praat_addAction1 (classSound, 0, U"-- set --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Set value at sample number...", 0, 1, DO_Sound_setValueAtIndex);
-							praat_addAction1 (classSound, 0, U"Set value at index...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_setValueAtIndex);
-		praat_addAction1 (classSound, 0, U"Set part to zero...", 0, 1, DO_Sound_setPartToZero);
-		praat_addAction1 (classSound, 0, U"-- modify hack --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Override sampling frequency...", 0, 1, DO_Sound_overrideSamplingFrequency);
-							praat_addAction1 (classSound, 0, U"Override sample rate...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_overrideSamplingFrequency);
-		praat_addAction1 (classSound, 0, U"-- in-line filters --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"In-line filters", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Filter with one formant (in-line)...", 0, 2, DO_Sound_filterWithOneFormantInline);
-		praat_addAction1 (classSound, 0, U"Pre-emphasize (in-line)...", 0, 2, DO_Sound_preemphasizeInline);
-		praat_addAction1 (classSound, 0, U"De-emphasize (in-line)...", 0, 2, DO_Sound_deemphasizeInline);
-	praat_addAction1 (classSound, 0, U"Annotate -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"Annotation tutorial", 0, 1, DO_AnnotationTutorial);
-		praat_addAction1 (classSound, 0, U"-- to text grid --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To TextGrid...", 0, 1, DO_Sound_to_TextGrid);
-		praat_addAction1 (classSound, 0, U"To TextTier", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_TextTier);
-		praat_addAction1 (classSound, 0, U"To IntervalTier", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_IntervalTier);
-	praat_addAction1 (classSound, 0, U"Analyse periodicity -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"To Pitch...", 0, 1, DO_Sound_to_Pitch);
-		praat_addAction1 (classSound, 0, U"To Pitch (ac)...", 0, 1, DO_Sound_to_Pitch_ac);
-		praat_addAction1 (classSound, 0, U"To Pitch (cc)...", 0, 1, DO_Sound_to_Pitch_cc);
-		praat_addAction1 (classSound, 0, U"To PointProcess (periodic, cc)...", 0, 1, DO_Sound_to_PointProcess_periodic_cc);
-		praat_addAction1 (classSound, 0, U"To PointProcess (periodic, peaks)...", 0, 1, DO_Sound_to_PointProcess_periodic_peaks);
-		praat_addAction1 (classSound, 0, U"-- points --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To PointProcess (extrema)...", 0, 1, DO_Sound_to_PointProcess_extrema);
-		praat_addAction1 (classSound, 0, U"To PointProcess (zeroes)...", 0, 1, DO_Sound_to_PointProcess_zeroes);
-		praat_addAction1 (classSound, 0, U"-- hnr --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To Harmonicity (cc)...", 0, 1, DO_Sound_to_Harmonicity_cc);
-		praat_addAction1 (classSound, 0, U"To Harmonicity (ac)...", 0, 1, DO_Sound_to_Harmonicity_ac);
-		praat_addAction1 (classSound, 0, U"To Harmonicity (gne)...", 0, 1, DO_Sound_to_Harmonicity_gne);
-		praat_addAction1 (classSound, 0, U"-- autocorrelation --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Autocorrelate...", 0, 1, DO_Sound_autoCorrelate);
-	praat_addAction1 (classSound, 0, U"Analyse spectrum -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"To Spectrum...", 0, 1, DO_Sound_to_Spectrum);
-							praat_addAction1 (classSound, 0, U"To Spectrum (fft)", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_fft);
-							praat_addAction1 (classSound, 0, U"To Spectrum", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_fft);
-							praat_addAction1 (classSound, 0, U"To Spectrum (dft)", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_dft);
-		praat_addAction1 (classSound, 0, U"To Ltas...", 0, 1, DO_Sound_to_Ltas);
-		praat_addAction1 (classSound, 0, U"To Ltas (pitch-corrected)...", 0, 1, DO_Sound_to_Ltas_pitchCorrected);
-		praat_addAction1 (classSound, 0, U"-- spectrotemporal --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To Spectrogram...", 0, 1, DO_Sound_to_Spectrogram);
-		praat_addAction1 (classSound, 0, U"To Cochleagram...", 0, 1, DO_Sound_to_Cochleagram);
-		praat_addAction1 (classSound, 0, U"To Cochleagram (edb)...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Cochleagram_edb);
-		praat_addAction1 (classSound, 0, U"-- formants --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To Formant (burg)...", 0, 1, DO_Sound_to_Formant_burg);
-		praat_addAction1 (classSound, 0, U"To Formant (hack)", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"To Formant (keep all)...", 0, 2, DO_Sound_to_Formant_keepAll);
-		praat_addAction1 (classSound, 0, U"To Formant (sl)...", 0, 2, DO_Sound_to_Formant_willems);
-	praat_addAction1 (classSound, 0, U"To Intensity...", 0, 0, DO_Sound_to_Intensity);
-	praat_addAction1 (classSound, 0, U"To IntensityTier...", 0, praat_HIDDEN, DO_Sound_to_IntensityTier);
-	praat_addAction1 (classSound, 0, U"Manipulate -", 0, 0, 0);
-	praat_addAction1 (classSound, 0, U"To Manipulation...", 0, 1, DO_Sound_to_Manipulation);
-	praat_addAction1 (classSound, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"Convert to mono", 0, 1, DO_Sound_convertToMono);
-		praat_addAction1 (classSound, 0, U"Convert to stereo", 0, 1, DO_Sound_convertToStereo);
-		praat_addAction1 (classSound, 0, U"Extract all channels", 0, 1, DO_Sound_extractAllChannels);
-		praat_addAction1 (classSound, 0, U"Extract left channel", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_extractLeftChannel);   // deprecated 2010
-		praat_addAction1 (classSound, 0, U"Extract right channel", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sound_extractRightChannel);   // deprecated 2010
-		praat_addAction1 (classSound, 0, U"Extract one channel...", 0, 1, DO_Sound_extractChannel);
-		praat_addAction1 (classSound, 0, U"Extract part...", 0, 1, DO_Sound_extractPart);
-		praat_addAction1 (classSound, 0, U"Extract part for overlap...", 0, 1, DO_Sound_extractPartForOverlap);
-		praat_addAction1 (classSound, 0, U"Resample...", 0, 1, DO_Sound_resample);
-		praat_addAction1 (classSound, 0, U"-- enhance --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Lengthen (overlap-add)...", 0, 1, DO_Sound_lengthen_overlapAdd);
-		praat_addAction1 (classSound, 0, U"Lengthen (PSOLA)...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_lengthen_overlapAdd);
-		praat_addAction1 (classSound, 0, U"Deepen band modulation...", 0, 1, DO_Sound_deepenBandModulation);
-		praat_addAction1 (classSound, 0, U"-- cast --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Down to Matrix", 0, 1, DO_Sound_to_Matrix);
-	praat_addAction1 (classSound, 0, U"Filter -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"Filtering tutorial", 0, 1, DO_FilteringTutorial);
-		praat_addAction1 (classSound, 0, U"-- frequency-domain filter --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Filter (pass Hann band)...", 0, 1, DO_Sound_filter_passHannBand);
-		praat_addAction1 (classSound, 0, U"Filter (stop Hann band)...", 0, 1, DO_Sound_filter_stopHannBand);
-		praat_addAction1 (classSound, 0, U"Filter (formula)...", 0, 1, DO_Sound_filter_formula);
-		praat_addAction1 (classSound, 0, U"-- time-domain filter --", 0, 1, 0);
-		praat_addAction1 (classSound, 0, U"Filter (one formant)...", 0, 1, DO_Sound_filter_oneFormant);
-		praat_addAction1 (classSound, 0, U"Filter (pre-emphasis)...", 0, 1, DO_Sound_filter_preemphasis);
-		praat_addAction1 (classSound, 0, U"Filter (de-emphasis)...", 0, 1, DO_Sound_filter_deemphasis);
-	praat_addAction1 (classSound, 0, U"Combine -", 0, 0, 0);
-		praat_addAction1 (classSound, 0, U"Combine to stereo", 0, 1, DO_Sounds_combineToStereo);
-		praat_addAction1 (classSound, 0, U"Concatenate", 0, 1, DO_Sounds_concatenate);
-		praat_addAction1 (classSound, 0, U"Concatenate recoverably", 0, 1, DO_Sounds_concatenateRecoverably);
-		praat_addAction1 (classSound, 0, U"Concatenate with overlap...", 0, 1, DO_Sounds_concatenateWithOverlap);
-		praat_addAction1 (classSound, 2, U"Convolve", 0, praat_HIDDEN + praat_DEPTH_1, DO_Sounds_convolve_old);
-		praat_addAction1 (classSound, 2, U"Convolve...", 0, 1, DO_Sounds_convolve);
-		praat_addAction1 (classSound, 2, U"Cross-correlate...", 0, 1, DO_Sounds_crossCorrelate);
-		praat_addAction1 (classSound, 2, U"To ParamCurve", 0, 1, DO_Sounds_to_ParamCurve);
-
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as WAV file...", 0, 0, DO_LongSound_Sound_writeToWavFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to WAV file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToWavFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as AIFF file...", 0, 0, DO_LongSound_Sound_writeToAiffFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to AIFF file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToAiffFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as AIFC file...", 0, 0, DO_LongSound_Sound_writeToAifcFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to AIFC file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToAifcFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as NeXT/Sun file...", 0, 0, DO_LongSound_Sound_writeToNextSunFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to NeXT/Sun file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToNextSunFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as NIST file...", 0, 0, DO_LongSound_Sound_writeToNistFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to NIST file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToNistFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as FLAC file...", 0, 0, DO_LongSound_Sound_writeToFlacFile);
-	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to FLAC file...", 0, praat_HIDDEN, DO_LongSound_Sound_writeToFlacFile);
+		praat_addAction1 (classSound, 0, U"-- modify generic --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Reverse", nullptr, 1, DO_Sound_reverse);
+		praat_addAction1 (classSound, 0, U"Formula...", nullptr, 1, DO_Sound_formula);
+		praat_addAction1 (classSound, 0, U"Formula (part)...", nullptr, 1, DO_Sound_formula_part);
+		praat_addAction1 (classSound, 0, U"-- add & mul --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Add...", nullptr, 1, DO_Sound_add);
+		praat_addAction1 (classSound, 0, U"Subtract mean", nullptr, 1, DO_Sound_subtractMean);
+		praat_addAction1 (classSound, 0, U"Multiply...", nullptr, 1, DO_Sound_multiply);
+		praat_addAction1 (classSound, 0, U"Multiply by window...", nullptr, 1, DO_Sound_multiplyByWindow);
+		praat_addAction1 (classSound, 0, U"Scale peak...", nullptr, 1, DO_Sound_scalePeak);
+		praat_addAction1 (classSound, 0, U"Scale...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_scalePeak);
+		praat_addAction1 (classSound, 0, U"Scale intensity...", nullptr, 1, DO_Sound_scaleIntensity);
+		praat_addAction1 (classSound, 0, U"-- set --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Set value at sample number...", nullptr, 1, DO_Sound_setValueAtIndex);
+							praat_addAction1 (classSound, 0, U"Set value at index...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_setValueAtIndex);
+		praat_addAction1 (classSound, 0, U"Set part to zero...", nullptr, 1, DO_Sound_setPartToZero);
+		praat_addAction1 (classSound, 0, U"-- modify hack --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Override sampling frequency...", nullptr, 1, DO_Sound_overrideSamplingFrequency);
+							praat_addAction1 (classSound, 0, U"Override sample rate...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_overrideSamplingFrequency);
+		praat_addAction1 (classSound, 0, U"-- in-line filters --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"In-line filters", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Filter with one formant (in-line)...", nullptr, 2, DO_Sound_filterWithOneFormantInline);
+		praat_addAction1 (classSound, 0, U"Pre-emphasize (in-line)...", nullptr, 2, DO_Sound_preemphasizeInline);
+		praat_addAction1 (classSound, 0, U"De-emphasize (in-line)...", nullptr, 2, DO_Sound_deemphasizeInline);
+	praat_addAction1 (classSound, 0, U"Annotate -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"Annotation tutorial", nullptr, 1, DO_AnnotationTutorial);
+		praat_addAction1 (classSound, 0, U"-- to text grid --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To TextGrid...", nullptr, 1, DO_Sound_to_TextGrid);
+		praat_addAction1 (classSound, 0, U"To TextTier", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_TextTier);
+		praat_addAction1 (classSound, 0, U"To IntervalTier", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_to_IntervalTier);
+	praat_addAction1 (classSound, 0, U"Analyse periodicity -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"To Pitch...", nullptr, 1, DO_Sound_to_Pitch);
+		praat_addAction1 (classSound, 0, U"To Pitch (ac)...", nullptr, 1, DO_Sound_to_Pitch_ac);
+		praat_addAction1 (classSound, 0, U"To Pitch (cc)...", nullptr, 1, DO_Sound_to_Pitch_cc);
+		praat_addAction1 (classSound, 0, U"To PointProcess (periodic, cc)...", nullptr, 1, DO_Sound_to_PointProcess_periodic_cc);
+		praat_addAction1 (classSound, 0, U"To PointProcess (periodic, peaks)...", nullptr, 1, DO_Sound_to_PointProcess_periodic_peaks);
+		praat_addAction1 (classSound, 0, U"-- points --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To PointProcess (extrema)...", nullptr, 1, DO_Sound_to_PointProcess_extrema);
+		praat_addAction1 (classSound, 0, U"To PointProcess (zeroes)...", nullptr, 1, DO_Sound_to_PointProcess_zeroes);
+		praat_addAction1 (classSound, 0, U"-- hnr --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To Harmonicity (cc)...", nullptr, 1, DO_Sound_to_Harmonicity_cc);
+		praat_addAction1 (classSound, 0, U"To Harmonicity (ac)...", nullptr, 1, DO_Sound_to_Harmonicity_ac);
+		praat_addAction1 (classSound, 0, U"To Harmonicity (gne)...", nullptr, 1, DO_Sound_to_Harmonicity_gne);
+		praat_addAction1 (classSound, 0, U"-- autocorrelation --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Autocorrelate...", nullptr, 1, DO_Sound_autoCorrelate);
+	praat_addAction1 (classSound, 0, U"Analyse spectrum -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"To Spectrum...", nullptr, 1, DO_Sound_to_Spectrum);
+							praat_addAction1 (classSound, 0, U"To Spectrum (fft)", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_fft);
+							praat_addAction1 (classSound, 0, U"To Spectrum", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_fft);
+							praat_addAction1 (classSound, 0, U"To Spectrum (dft)", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Spectrum_dft);
+		praat_addAction1 (classSound, 0, U"To Ltas...", nullptr, 1, DO_Sound_to_Ltas);
+		praat_addAction1 (classSound, 0, U"To Ltas (pitch-corrected)...", nullptr, 1, DO_Sound_to_Ltas_pitchCorrected);
+		praat_addAction1 (classSound, 0, U"-- spectrotemporal --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To Spectrogram...", nullptr, 1, DO_Sound_to_Spectrogram);
+		praat_addAction1 (classSound, 0, U"To Cochleagram...", nullptr, 1, DO_Sound_to_Cochleagram);
+		praat_addAction1 (classSound, 0, U"To Cochleagram (edb)...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_to_Cochleagram_edb);
+		praat_addAction1 (classSound, 0, U"-- formants --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To Formant (burg)...", nullptr, 1, DO_Sound_to_Formant_burg);
+		praat_addAction1 (classSound, 0, U"To Formant (hack)", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"To Formant (keep all)...", nullptr, 2, DO_Sound_to_Formant_keepAll);
+		praat_addAction1 (classSound, 0, U"To Formant (sl)...", nullptr, 2, DO_Sound_to_Formant_willems);
+	praat_addAction1 (classSound, 0, U"To Intensity...", nullptr, 0, DO_Sound_to_Intensity);
+	praat_addAction1 (classSound, 0, U"To IntensityTier...", nullptr, praat_HIDDEN, DO_Sound_to_IntensityTier);
+	praat_addAction1 (classSound, 0, U"Manipulate -", nullptr, 0, nullptr);
+	praat_addAction1 (classSound, 0, U"To Manipulation...", nullptr, 1, DO_Sound_to_Manipulation);
+	praat_addAction1 (classSound, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"Convert to mono", nullptr, 1, DO_Sound_convertToMono);
+		praat_addAction1 (classSound, 0, U"Convert to stereo", nullptr, 1, DO_Sound_convertToStereo);
+		praat_addAction1 (classSound, 0, U"Extract all channels", nullptr, 1, DO_Sound_extractAllChannels);
+		praat_addAction1 (classSound, 0, U"Extract left channel", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_extractLeftChannel);   // deprecated 2010
+		praat_addAction1 (classSound, 0, U"Extract right channel", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sound_extractRightChannel);   // deprecated 2010
+		praat_addAction1 (classSound, 0, U"Extract one channel...", nullptr, 1, DO_Sound_extractChannel);
+		praat_addAction1 (classSound, 0, U"Extract part...", nullptr, 1, DO_Sound_extractPart);
+		praat_addAction1 (classSound, 0, U"Extract part for overlap...", nullptr, 1, DO_Sound_extractPartForOverlap);
+		praat_addAction1 (classSound, 0, U"Resample...", nullptr, 1, DO_Sound_resample);
+		praat_addAction1 (classSound, 0, U"-- enhance --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Lengthen (overlap-add)...", nullptr, 1, DO_Sound_lengthen_overlapAdd);
+		praat_addAction1 (classSound, 0, U"Lengthen (PSOLA)...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Sound_lengthen_overlapAdd);
+		praat_addAction1 (classSound, 0, U"Deepen band modulation...", nullptr, 1, DO_Sound_deepenBandModulation);
+		praat_addAction1 (classSound, 0, U"-- cast --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Down to Matrix", nullptr, 1, DO_Sound_to_Matrix);
+	praat_addAction1 (classSound, 0, U"Filter -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"Filtering tutorial", nullptr, 1, DO_FilteringTutorial);
+		praat_addAction1 (classSound, 0, U"-- frequency-domain filter --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Filter (pass Hann band)...", nullptr, 1, DO_Sound_filter_passHannBand);
+		praat_addAction1 (classSound, 0, U"Filter (stop Hann band)...", nullptr, 1, DO_Sound_filter_stopHannBand);
+		praat_addAction1 (classSound, 0, U"Filter (formula)...", nullptr, 1, DO_Sound_filter_formula);
+		praat_addAction1 (classSound, 0, U"-- time-domain filter --", nullptr, 1, nullptr);
+		praat_addAction1 (classSound, 0, U"Filter (one formant)...", nullptr, 1, DO_Sound_filter_oneFormant);
+		praat_addAction1 (classSound, 0, U"Filter (pre-emphasis)...", nullptr, 1, DO_Sound_filter_preemphasis);
+		praat_addAction1 (classSound, 0, U"Filter (de-emphasis)...", nullptr, 1, DO_Sound_filter_deemphasis);
+	praat_addAction1 (classSound, 0, U"Combine -", nullptr, 0, nullptr);
+		praat_addAction1 (classSound, 0, U"Combine to stereo", nullptr, 1, DO_Sounds_combineToStereo);
+		praat_addAction1 (classSound, 0, U"Concatenate", nullptr, 1, DO_Sounds_concatenate);
+		praat_addAction1 (classSound, 0, U"Concatenate recoverably", nullptr, 1, DO_Sounds_concatenateRecoverably);
+		praat_addAction1 (classSound, 0, U"Concatenate with overlap...", nullptr, 1, DO_Sounds_concatenateWithOverlap);
+		praat_addAction1 (classSound, 2, U"Convolve", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Sounds_convolve_old);
+		praat_addAction1 (classSound, 2, U"Convolve...", nullptr, 1, DO_Sounds_convolve);
+		praat_addAction1 (classSound, 2, U"Cross-correlate...", nullptr, 1, DO_Sounds_crossCorrelate);
+		praat_addAction1 (classSound, 2, U"To ParamCurve", nullptr, 1, DO_Sounds_to_ParamCurve);
+
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as WAV file...", nullptr, 0, DO_LongSound_Sound_writeToWavFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to WAV file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToWavFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as AIFF file...", nullptr, 0, DO_LongSound_Sound_writeToAiffFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to AIFF file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToAiffFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as AIFC file...", nullptr, 0, DO_LongSound_Sound_writeToAifcFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to AIFC file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToAifcFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as NeXT/Sun file...", nullptr, 0, DO_LongSound_Sound_writeToNextSunFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to NeXT/Sun file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToNextSunFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as NIST file...", nullptr, 0, DO_LongSound_Sound_writeToNistFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to NIST file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToNistFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Save as FLAC file...", nullptr, 0, DO_LongSound_Sound_writeToFlacFile);
+	praat_addAction2 (classLongSound, 0, classSound, 0, U"Write to FLAC file...", nullptr, praat_HIDDEN, DO_LongSound_Sound_writeToFlacFile);
 }
 
 /* End of file praat_Sound.cpp */
diff --git a/fon/praat_TextGrid_init.cpp b/fon/praat_TextGrid_init.cpp
index f85b2c4..8b7a707 100644
--- a/fon/praat_TextGrid_init.cpp
+++ b/fon/praat_TextGrid_init.cpp
@@ -1,20 +1,19 @@
 /* praat_TextGrid_init.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -30,9 +29,9 @@
 #undef iam
 #define iam iam_LOOP
 
-void praat_dia_timeRange (Any dia);
-void praat_get_timeRange (Any dia, double *tmin, double *tmax);
-int praat_get_frequencyRange (Any dia, double *fmin, double *fmax);
+void praat_dia_timeRange (UiForm dia);
+void praat_get_timeRange (UiForm dia, double *tmin, double *tmax);
+int praat_get_frequencyRange (UiForm dia, double *fmin, double *fmax);
 
 static const char32 *STRING_FROM_FREQUENCY_HZ = U"left Frequency range (Hz)";
 static const char32 *STRING_TO_FREQUENCY_HZ = U"right Frequency range (Hz)";
@@ -48,9 +47,9 @@ DIRECT2 (AnyTier_into_TextGrid) {
 	autoTextGrid grid = TextGrid_createWithoutTiers (1e30, -1e30);
 	LOOP {
 		iam (AnyTier);
-		TextGrid_addTier (grid.peek(), me);
+		TextGrid_addTier_copy (grid.get(), me);
 	}
-	praat_new (grid.transfer(), U"grid");
+	praat_new (grid.move(), U"grid");
 END2 }
 
 /***** INTERVALTIER *****/
@@ -62,7 +61,7 @@ DO
 	LOOP {
 		iam (IntervalTier);
 		autoTableOfReal thee = IntervalTier_downto_TableOfReal (me, GET_STRING (U"Label"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -70,7 +69,7 @@ DIRECT2 (IntervalTier_downto_TableOfReal_any) {
 	LOOP {
 		iam (IntervalTier);
 		autoTableOfReal thee = IntervalTier_downto_TableOfReal_any (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -81,7 +80,7 @@ DO
 	LOOP {
 		iam (IntervalTier);
 		autoPointProcess thee = IntervalTier_getCentrePoints (me, GET_STRING (U"Text"));
-		praat_new (thee.transfer(), GET_STRING (U"Text"));
+		praat_new (thee.move(), GET_STRING (U"Text"));
 	}
 END2 }
 
@@ -92,7 +91,7 @@ DO
 	LOOP {
 		iam (IntervalTier);
 		autoPointProcess thee = IntervalTier_getEndPoints (me, GET_STRING (U"Text"));
-		praat_new (thee.transfer(), GET_STRING (U"Text"));
+		praat_new (thee.move(), GET_STRING (U"Text"));
 	}
 END2 }
 
@@ -103,7 +102,7 @@ DO
 	LOOP {
 		iam (IntervalTier);
 		autoPointProcess thee = IntervalTier_getStartingPoints (me, GET_STRING (U"Text"));
-		praat_new (thee.transfer(), GET_STRING (U"Text"));
+		praat_new (thee.move(), GET_STRING (U"Text"));
 	}
 END2 }
 
@@ -124,43 +123,43 @@ FORM (IntervalTier_PointProcess_endToCentre, U"From end to centre", U"IntervalTi
 	REAL (U"Phase (0-1)", U"0.5")
 	OK2
 DO
-	IntervalTier tier = NULL;
-	PointProcess point = NULL;
+	IntervalTier tier = nullptr;
+	PointProcess point = nullptr;
 	LOOP {
 		if (CLASS == classIntervalTier) tier = (IntervalTier) OBJECT;
 		if (CLASS == classPointProcess) point = (PointProcess) OBJECT;
 	}
 	double phase = GET_REAL (U"Phase");
 	autoPointProcess thee = IntervalTier_PointProcess_endToCentre (tier, point, phase);
-	praat_new (thee.transfer(), tier -> name, U"_", point -> name, U"_", lround (100.0 * phase));
+	praat_new (thee.move(), tier -> name, U"_", point -> name, U"_", lround (100.0 * phase));
 END2 }
 
 FORM (IntervalTier_PointProcess_startToCentre, U"From start to centre", U"IntervalTier & PointProcess: Start to centre...") {
 	REAL (U"Phase (0-1)", U"0.5")
 	OK2
 DO
-	IntervalTier tier = NULL;
-	PointProcess point = NULL;
+	IntervalTier tier = nullptr;
+	PointProcess point = nullptr;
 	LOOP {
 		if (CLASS == classIntervalTier) tier = (IntervalTier) OBJECT;
 		if (CLASS == classPointProcess) point = (PointProcess) OBJECT;
 	}
 	double phase = GET_REAL (U"Phase");
 	autoPointProcess thee = IntervalTier_PointProcess_startToCentre (tier, point, phase);
-	praat_new (thee.transfer(), tier -> name, U"_", point -> name, U"_", lround (100.0 * phase));
+	praat_new (thee.move(), tier -> name, U"_", point -> name, U"_", lround (100.0 * phase));
 END2 }
 
 /***** LABEL (obsolete) *****/
 
 DIRECT2 (Label_Sound_to_TextGrid) {
-	Label label = NULL;
-	Sound sound = NULL;
+	Label label = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classLabel) label = (Label) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 	}
 	autoTextGrid thee = Label_Function_to_TextGrid (label, sound);
-	praat_new (thee.transfer(), sound -> name);
+	praat_new (thee.move(), sound -> name);
 END2 }
 
 DIRECT2 (info_Label_Sound_to_TextGrid) {
@@ -170,9 +169,9 @@ END2 }
 
 /***** PITCH & TEXTGRID *****/
 
-static void pr_TextGrid_Pitch_draw (Any dia, int speckle, int unit) {
-	TextGrid grid = NULL;
-	Pitch pitch = NULL;
+static void pr_TextGrid_Pitch_draw (UiForm dia, int speckle, int unit) {
+	TextGrid grid = nullptr;
+	Pitch pitch = nullptr;
 	int IOBJECT;
 	LOOP {
 		if (CLASS == classTextGrid) grid = (TextGrid) OBJECT;
@@ -187,80 +186,80 @@ static void pr_TextGrid_Pitch_draw (Any dia, int speckle, int unit) {
 		GET_INTEGER (U"Use text styles"), GET_INTEGER (U"Text alignment") - 1, GET_INTEGER (U"Garnish"), speckle, unit);
 }
 
-FORM (TextGrid_Pitch_draw, U"TextGrid & Pitch: Draw", 0) {
+FORM (TextGrid_Pitch_draw, U"TextGrid & Pitch: Draw", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_NO, kPitch_unit_HERTZ);
 END2 }
 
-FORM (TextGrid_Pitch_drawErb, U"TextGrid & Pitch: Draw erb", 0) {
+FORM (TextGrid_Pitch_drawErb, U"TextGrid & Pitch: Draw erb", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_NO, kPitch_unit_ERB);
 END2 }
 
-FORM (TextGrid_Pitch_drawLogarithmic, U"TextGrid & Pitch: Draw logarithmic", 0) {
+FORM (TextGrid_Pitch_drawLogarithmic, U"TextGrid & Pitch: Draw logarithmic", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_NO, kPitch_unit_HERTZ_LOGARITHMIC);
 END2 }
 
-FORM (TextGrid_Pitch_drawMel, U"TextGrid & Pitch: Draw mel", 0) {
+FORM (TextGrid_Pitch_drawMel, U"TextGrid & Pitch: Draw mel", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (mel)", U"0")
 	REAL (U"right Frequency range (mel)", U"500")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_NO, kPitch_unit_MEL);
 END2 }
 
-FORM (TextGrid_Pitch_drawSemitones, U"TextGrid & Pitch: Draw semitones", 0) {
+FORM (TextGrid_Pitch_drawSemitones, U"TextGrid & Pitch: Draw semitones", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	LABEL (U"", U"Range in semitones re 100 hertz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_NO, kPitch_unit_SEMITONES_100);
 END2 }
 
-static void pr_TextGrid_Pitch_drawSeparately (Any dia, int speckle, int unit) {
-	TextGrid grid = NULL;
-	Pitch pitch = NULL;
+static void pr_TextGrid_Pitch_drawSeparately (UiForm dia, int speckle, int unit) {
+	TextGrid grid = nullptr;
+	Pitch pitch = nullptr;
 	int IOBJECT;
 	LOOP {
 		if (CLASS == classTextGrid) grid = (TextGrid) OBJECT;
@@ -275,194 +274,194 @@ static void pr_TextGrid_Pitch_drawSeparately (Any dia, int speckle, int unit) {
 		GET_INTEGER (U"Use text styles"), GET_INTEGER (U"Garnish"), speckle, unit);
 }
 
-FORM (TextGrid_Pitch_drawSeparately, U"TextGrid & Pitch: Draw separately", 0) {
+FORM (TextGrid_Pitch_drawSeparately, U"TextGrid & Pitch: Draw separately", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	REAL (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_NO, kPitch_unit_HERTZ);
 END2 }
 
-FORM (TextGrid_Pitch_drawSeparatelyErb, U"TextGrid & Pitch: Draw separately erb", 0) {
+FORM (TextGrid_Pitch_drawSeparatelyErb, U"TextGrid & Pitch: Draw separately erb", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_NO, kPitch_unit_ERB);
 END2 }
 
-FORM (TextGrid_Pitch_drawSeparatelyLogarithmic, U"TextGrid & Pitch: Draw separately logarithmic", 0) {
+FORM (TextGrid_Pitch_drawSeparatelyLogarithmic, U"TextGrid & Pitch: Draw separately logarithmic", nullptr) {
 	praat_dia_timeRange (dia);
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_NO, kPitch_unit_HERTZ_LOGARITHMIC);
 END2 }
 
-FORM (TextGrid_Pitch_drawSeparatelyMel, U"TextGrid & Pitch: Draw separately mel", 0) {
+FORM (TextGrid_Pitch_drawSeparatelyMel, U"TextGrid & Pitch: Draw separately mel", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (mel)", U"0")
 	REAL (U"right Frequency range (mel)", U"500")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_NO, kPitch_unit_MEL);
 END2 }
 
-FORM (TextGrid_Pitch_drawSeparatelySemitones, U"TextGrid & Pitch: Draw separately semitones", 0) {
+FORM (TextGrid_Pitch_drawSeparatelySemitones, U"TextGrid & Pitch: Draw separately semitones", nullptr) {
 	praat_dia_timeRange (dia);
 	LABEL (U"", U"Range in semitones re 100 hertz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_NO, kPitch_unit_SEMITONES_100);
 END2 }
 
-FORM (TextGrid_Pitch_speckle, U"TextGrid & Pitch: Speckle", 0) {
+FORM (TextGrid_Pitch_speckle, U"TextGrid & Pitch: Speckle", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_YES, kPitch_unit_HERTZ);
 END2 }
 
-FORM (TextGrid_Pitch_speckleErb, U"TextGrid & Pitch: Speckle erb", 0) {
+FORM (TextGrid_Pitch_speckleErb, U"TextGrid & Pitch: Speckle erb", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_YES, kPitch_unit_ERB);
 END2 }
 
-FORM (TextGrid_Pitch_speckleLogarithmic, U"TextGrid & Pitch: Speckle logarithmic", 0) {
+FORM (TextGrid_Pitch_speckleLogarithmic, U"TextGrid & Pitch: Speckle logarithmic", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_YES, kPitch_unit_HERTZ_LOGARITHMIC);
 END2 }
 
-FORM (TextGrid_Pitch_speckleMel, U"TextGrid & Pitch: Speckle mel", 0) {
+FORM (TextGrid_Pitch_speckleMel, U"TextGrid & Pitch: Speckle mel", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (mel)", U"0")
 	REAL (U"right Frequency range (mel)", U"500")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_YES, kPitch_unit_MEL);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSemitones, U"TextGrid & Pitch: Speckle semitones", 0) {
+FORM (TextGrid_Pitch_speckleSemitones, U"TextGrid & Pitch: Speckle semitones", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
 	praat_dia_timeRange (dia);
 	LABEL (U"", U"Range in semitones re 100 hertz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
 	INTEGER (U"Font size (points)", U"18")
-	BOOLEAN (U"Use text styles", 1)
+	BOOLEAN (U"Use text styles", true)
 	OPTIONMENU (U"Text alignment", 2) OPTION (U"Left") OPTION (U"Centre") OPTION (U"Right")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_draw (dia, Pitch_speckle_YES, kPitch_unit_SEMITONES_100);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSeparately, U"TextGrid & Pitch: Speckle separately", 0) {
+FORM (TextGrid_Pitch_speckleSeparately, U"TextGrid & Pitch: Speckle separately", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (STRING_FROM_FREQUENCY_HZ, U"0.0")
 	REAL (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_YES, kPitch_unit_HERTZ);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSeparatelyErb, U"TextGrid & Pitch: Speckle separately erb", 0) {
+FORM (TextGrid_Pitch_speckleSeparatelyErb, U"TextGrid & Pitch: Speckle separately erb", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (ERB)", U"0")
 	REAL (U"right Frequency range (ERB)", U"10.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_YES, kPitch_unit_ERB);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSeparatelyLogarithmic, U"TextGrid & Pitch: Speckle separately logarithmic", 0) {
+FORM (TextGrid_Pitch_speckleSeparatelyLogarithmic, U"TextGrid & Pitch: Speckle separately logarithmic", nullptr) {
 	praat_dia_timeRange (dia);
 	POSITIVE (STRING_FROM_FREQUENCY_HZ, U"50.0")
 	POSITIVE (STRING_TO_FREQUENCY_HZ, U"500.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_YES, kPitch_unit_HERTZ_LOGARITHMIC);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSeparatelyMel, U"TextGrid & Pitch: Speckle separately mel", 0) {
+FORM (TextGrid_Pitch_speckleSeparatelyMel, U"TextGrid & Pitch: Speckle separately mel", nullptr) {
 	praat_dia_timeRange (dia);
 	REAL (U"left Frequency range (mel)", U"0")
 	REAL (U"right Frequency range (mel)", U"500")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_YES, kPitch_unit_MEL);
 END2 }
 
-FORM (TextGrid_Pitch_speckleSeparatelySemitones, U"TextGrid & Pitch: Speckle separately semitones", 0) {
+FORM (TextGrid_Pitch_speckleSeparatelySemitones, U"TextGrid & Pitch: Speckle separately semitones", nullptr) {
 	praat_dia_timeRange (dia);
 	LABEL (U"", U"Range in semitones re 100 hertz:")
 	REAL (U"left Frequency range (st)", U"-12.0")
 	REAL (U"right Frequency range (st)", U"30.0")
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	pr_TextGrid_Pitch_drawSeparately (dia, Pitch_speckle_YES, kPitch_unit_SEMITONES_100);
@@ -477,28 +476,28 @@ FORM (Pitch_TextTier_to_PitchTier, U"Pitch & TextTier to PitchTier", U"Pitch & T
 		RADIOBUTTON (U"Interpolate")
 	OK2
 DO
-	Pitch pitch = NULL;
-	TextTier tier = NULL;
+	Pitch pitch = nullptr;
+	TextTier tier = nullptr;
 	LOOP {
-		iam (Data);
+		iam (Daata);
 		if (CLASS == classPitch) pitch = (Pitch) me;
 		if (CLASS == classTextTier) tier = (TextTier) me;
 	}
 	autoPitchTier thee = Pitch_AnyTier_to_PitchTier (pitch, (AnyTier) tier, GET_INTEGER (U"Unvoiced strategy") - 1);
-	praat_new (thee.transfer(), pitch -> name);
+	praat_new (thee.move(), pitch -> name);
 END2 }
 
 /***** SOUND & TEXTGRID *****/
 
-FORM (TextGrid_Sound_draw, U"TextGrid & Sound: Draw...", 0) {
+FORM (TextGrid_Sound_draw, U"TextGrid & Sound: Draw...", nullptr) {
 	praat_dia_timeRange (dia);
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
@@ -509,80 +508,84 @@ DO
 		GET_INTEGER (U"Use text styles"), GET_INTEGER (U"Garnish"));
 END2 }
 
-FORM (TextGrid_Sound_extractAllIntervals, U"TextGrid & Sound: Extract all intervals", 0) {
+FORM (TextGrid_Sound_extractAllIntervals, U"TextGrid & Sound: Extract all intervals", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OK2
 DO
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 	}
-	autoCollection thee = TextGrid_Sound_extractAllIntervals (textgrid, sound,
+	autoSoundList thee = TextGrid_Sound_extractAllIntervals (textgrid, sound,
 		GET_INTEGER (STRING_TIER_NUMBER), GET_INTEGER (U"Preserve times"));
-	praat_new (thee.transfer(), U"dummy");
+	thy classInfo = classCollection;   // YUCK
+	praat_new (thee.move(), U"dummy");
 END2 }
 
-FORM (TextGrid_Sound_extractNonemptyIntervals, U"TextGrid & Sound: Extract non-empty intervals", 0) {
+FORM (TextGrid_Sound_extractNonemptyIntervals, U"TextGrid & Sound: Extract non-empty intervals", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OK2
 DO
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 	}
-	autoCollection thee = TextGrid_Sound_extractNonemptyIntervals (textgrid, sound,
+	autoSoundList thee = TextGrid_Sound_extractNonemptyIntervals (textgrid, sound,
 		GET_INTEGER (STRING_TIER_NUMBER), GET_INTEGER (U"Preserve times"));
-	praat_new (thee.transfer(), U"dummy");
+	thy classInfo = classCollection;   // YUCK
+	praat_new (thee.move(), U"dummy");
 END2 }
 
-FORM (TextGrid_Sound_extractIntervals, U"TextGrid & Sound: Extract intervals", 0) {
+FORM (TextGrid_Sound_extractIntervals, U"TextGrid & Sound: Extract intervals", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	SENTENCE (U"Label text", U"")
 	OK2
 DO
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 	}
-	autoCollection thee = TextGrid_Sound_extractIntervalsWhere (textgrid, sound,
+	autoSoundList thee = TextGrid_Sound_extractIntervalsWhere (textgrid, sound,
 		GET_INTEGER (STRING_TIER_NUMBER), kMelder_string_EQUAL_TO, GET_STRING (U"Label text"),
 		GET_INTEGER (U"Preserve times"));
-	praat_new (thee.transfer(), GET_STRING (U"Label text"));
+	thy classInfo = classCollection;   // YUCK
+	praat_new (thee.move(), GET_STRING (U"Label text"));
 END2 }
 
-FORM (TextGrid_Sound_extractIntervalsWhere, U"TextGrid & Sound: Extract intervals", 0) {
+FORM (TextGrid_Sound_extractIntervalsWhere, U"TextGrid & Sound: Extract intervals", nullptr) {
 	INTEGER (STRING_TIER_NUMBER, U"1")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OPTIONMENU_ENUM (U"Extract every interval whose label...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"")
 	OK2
 DO
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
 	}
-	autoCollection thee = TextGrid_Sound_extractIntervalsWhere (textgrid, sound,
+	autoSoundList thee = TextGrid_Sound_extractIntervalsWhere (textgrid, sound,
 		GET_INTEGER (STRING_TIER_NUMBER),
 		GET_ENUM (kMelder_string, U"Extract every interval whose label..."),
 		GET_STRING (U"...the text"),
 		GET_INTEGER (U"Preserve times"));
-	praat_new (thee.transfer(), GET_STRING (U"...the text"));
+	thy classInfo = classCollection;   // YUCK
+	praat_new (thee.move(), GET_STRING (U"...the text"));
 END2 }
 
 DIRECT2 (TextGrid_Sound_scaleTimes) {
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
@@ -592,8 +595,8 @@ DIRECT2 (TextGrid_Sound_scaleTimes) {
 END2 }
 
 DIRECT2 (TextGrid_Sound_cloneTimeDomain) {
-	TextGrid textgrid = NULL;
-	Sound sound = NULL;
+	TextGrid textgrid = nullptr;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) textgrid = (TextGrid) OBJECT;
 		if (CLASS == classSound) sound = (Sound) OBJECT;
@@ -620,16 +623,16 @@ END2 }
 FORM (SpellingChecker_edit, U"Edit spelling checker", U"SpellingChecker") {
 	LABEL (U"", U"-- Syntax --")
 	SENTENCE (U"Forbidden strings", U"")
-	BOOLEAN (U"Check matching parentheses", 0)
+	BOOLEAN (U"Check matching parentheses", false)
 	SENTENCE (U"Separating characters", U"")
-	BOOLEAN (U"Allow all parenthesized", 0)
+	BOOLEAN (U"Allow all parenthesized", false)
 	LABEL (U"", U"-- Capitals --")
-	BOOLEAN (U"Allow all names", 0)
+	BOOLEAN (U"Allow all names", false)
 	SENTENCE (U"Name prefixes", U"")
-	BOOLEAN (U"Allow all abbreviations", 0)
+	BOOLEAN (U"Allow all abbreviations", false)
 	LABEL (U"", U"-- Capitalization --")
-	BOOLEAN (U"Allow caps sentence-initially", 0)
-	BOOLEAN (U"Allow caps after colon", 0)
+	BOOLEAN (U"Allow caps sentence-initially", false)
+	BOOLEAN (U"Allow caps after colon", false)
 	LABEL (U"", U"-- Word parts --")
 	SENTENCE (U"Allow all words containing", U"")
 	SENTENCE (U"Allow all words starting with", U"")
@@ -674,15 +677,15 @@ DIRECT2 (SpellingChecker_extractWordList) {
 	LOOP {
 		iam (SpellingChecker);
 		autoWordList thee = SpellingChecker_extractWordList (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
 DIRECT2 (SpellingChecker_extractUserDictionary) {
 	LOOP {
 		iam (SpellingChecker);
-		autoSortedSetOfString thee = SpellingChecker_extractUserDictionary (me);
-		praat_new (thee.transfer(), my name);
+		autoStringSet thee = SpellingChecker_extractUserDictionary (me);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -715,8 +718,8 @@ DO
 END2 }
 
 DIRECT2 (SpellingChecker_replaceWordList) {
-	SpellingChecker spellingChecker = NULL;
-	WordList wordList = NULL;
+	SpellingChecker spellingChecker = nullptr;
+	WordList wordList = nullptr;
 	LOOP {
 		if (CLASS == classSpellingChecker) spellingChecker = (SpellingChecker) OBJECT;
 		if (CLASS == classWordList) wordList = (WordList) OBJECT;
@@ -732,11 +735,11 @@ DIRECT2 (SpellingChecker_replaceWordList_help) {
 END2 }
 
 DIRECT2 (SpellingChecker_replaceUserDictionary) {
-	SpellingChecker spellingChecker = NULL;
-	SortedSetOfString dictionary = NULL;
+	SpellingChecker spellingChecker = nullptr;
+	StringSet dictionary = nullptr;
 	LOOP {
 		if (CLASS == classSpellingChecker) spellingChecker = (SpellingChecker) OBJECT;
-		if (CLASS == classSortedSetOfString) dictionary = (SortedSetOfString) OBJECT;
+		if (CLASS == classStringSet) dictionary = (StringSet) OBJECT;
 		SpellingChecker_replaceUserDictionary (spellingChecker, dictionary);
 	}
 END2 }
@@ -785,7 +788,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_downto_Table, U"TextGrid: Down to Table", 0) {
+FORM (TextGrid_downto_Table, U"TextGrid: Down to Table", nullptr) {
 	BOOLEAN (U"Include line number", false)
 	NATURAL (U"Time decimals", U"6")
 	BOOLEAN (U"Include tier names", true)
@@ -796,27 +799,27 @@ DO
 		iam (TextGrid);
 		autoTable thee = TextGrid_downto_Table (me, GET_INTEGER (U"Include line number"), GET_INTEGER (U"Time decimals"),
 			GET_INTEGER (U"Include tier names"), GET_INTEGER (U"Include empty intervals"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TextGrid_draw, U"TextGrid: Draw", 0) {
+FORM (TextGrid_draw, U"TextGrid: Draw", nullptr) {
 	praat_dia_timeRange (dia);
-	BOOLEAN (U"Show boundaries", 1)
-	BOOLEAN (U"Use text styles", 1)
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Show boundaries", true)
+	BOOLEAN (U"Use text styles", true)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
 	LOOP {
 		iam (TextGrid);
-		TextGrid_Sound_draw (me, NULL, GRAPHICS,
+		TextGrid_Sound_draw (me, nullptr, GRAPHICS,
 			GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_INTEGER (U"Show boundaries"),
 			GET_INTEGER (U"Use text styles"), GET_INTEGER (U"Garnish"));
 	}
 END2 }
 
-FORM (TextGrid_duplicateTier, U"TextGrid: Duplicate tier", 0) {
+FORM (TextGrid_duplicateTier, U"TextGrid: Duplicate tier", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (U"Position", U"1 (= at top)")
 	WORD (U"Name", U"")
@@ -827,29 +830,31 @@ DO
 		int itier = GET_INTEGER (STRING_TIER_NUMBER);
 		int position = GET_INTEGER (U"Position");
 		const char32 *name = GET_STRING (U"Name");
-		if (itier > my tiers -> size) itier = my tiers -> size;
-		autoAnyTier newTier = Data_copy ((AnyTier) my tiers -> item [itier]);
-		Thing_setName (newTier.peek(), name);
-		Ordered_addItemPos (my tiers, newTier.transfer(), position);
+		if (itier > my tiers->size) itier = my tiers->size;
+		{// scope
+			autoFunction newTier = Data_copy (my tiers->at [itier]);
+			Thing_setName (newTier.get(), name);
+			my tiers -> addItemAtPosition_move (newTier.move(), position);
+		}
 		praat_dataChanged (me);
 	}
 END2 }
 
-static void cb_TextGridEditor_publication (Editor editor, void *closure, Data publication) {
-	(void) editor;
-	(void) closure;
+static void cb_TextGridEditor_publication (Editor /* editor */, autoDaata publication) {
 	/*
 	 * Keep the gate for error handling.
 	 */
 	try {
-		praat_new (publication);
+		bool isaSpectralSlice = Thing_isa (publication.get(), classSpectrum) && str32equ (Thing_getName (publication.get()), U"slice");
+		praat_new (publication.move());
 		praat_updateSelection ();
-		if (Thing_isa (publication, classSpectrum) && str32equ (Thing_getName (publication), U"slice")) {
+		if (isaSpectralSlice) {
 			int IOBJECT;
 			LOOP {
 				iam (Spectrum);
 				autoSpectrumEditor editor2 = SpectrumEditor_create (ID_AND_FULL_NAME, me);
-				praat_installEditor (editor2.transfer(), IOBJECT);
+				praat_installEditor (editor2.get(), IOBJECT);
+				editor2.releaseToUser();
 			}
 		}
 	} catch (MelderError) {
@@ -858,38 +863,40 @@ static void cb_TextGridEditor_publication (Editor editor, void *closure, Data pu
 }
 DIRECT2 (TextGrid_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a TextGrid from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 	}
 	LOOP if (CLASS == classTextGrid) {
 		iam (TextGrid);
-		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, NULL, NULL);
-		Editor_setPublicationCallback (editor.peek(), cb_TextGridEditor_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, nullptr, nullptr);
+		Editor_setPublicationCallback (editor.get(), cb_TextGridEditor_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (TextGrid_editWithCallback, U"TextGrid: View & Edit with callback", 0) {
+FORM (TextGrid_editWithCallback, U"TextGrid: View & Edit with callback", nullptr) {
 	SENTENCE (U"Callback text", U"r1")
 	OK2
 DO
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a TextGrid from batch.");
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 	}
 	LOOP if (CLASS == classTextGrid) {
 		iam (TextGrid);
-		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, NULL, Melder_peek32to8 (GET_STRING (U"Callback text")));
-		Editor_setPublicationCallback (editor.peek(), cb_TextGridEditor_publication, NULL);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, nullptr, Melder_peek32to8 (GET_STRING (U"Callback text")));
+		Editor_setPublicationCallback (editor.get(), cb_TextGridEditor_publication);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
 DIRECT2 (TextGrid_LongSound_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a TextGrid from batch.");
-	LongSound longSound = NULL;
+	LongSound longSound = nullptr;
 	int ilongSound = 0;
 	LOOP {
 		if (CLASS == classLongSound) longSound = (LongSound) OBJECT, ilongSound = IOBJECT;
@@ -897,33 +904,35 @@ DIRECT2 (TextGrid_LongSound_edit) {
 	Melder_assert (ilongSound != 0);
 	LOOP if (CLASS == classTextGrid) {
 		iam (TextGrid);
-		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, longSound, false, NULL, NULL);
-		Editor_setPublicationCallback (editor.peek(), cb_TextGridEditor_publication, NULL);
-		praat_installEditor2 (editor.transfer(), IOBJECT, ilongSound);
+		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, longSound, false, nullptr, nullptr);
+		Editor_setPublicationCallback (editor.get(), cb_TextGridEditor_publication);
+		praat_installEditor2 (editor.get(), IOBJECT, ilongSound);
+		editor.releaseToUser();
 	}
 END2 }
 
 DIRECT2 (TextGrid_SpellingChecker_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a TextGrid from batch.");
-	SpellingChecker spellingChecker = NULL;
+	SpellingChecker spellingChecker = nullptr;
 	int ispellingChecker = 0;
-	Sound sound = NULL;
+	Sound sound = nullptr;
 	LOOP {
 		if (CLASS == classSpellingChecker) spellingChecker = (SpellingChecker) OBJECT, ispellingChecker = IOBJECT;
-		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay NULL
+		if (CLASS == classSound) sound = (Sound) OBJECT;   // may stay null
 	}
 	Melder_assert (ispellingChecker != 0);
 	LOOP if (CLASS == classTextGrid) {
 		iam (TextGrid);
-		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, spellingChecker, NULL);
-		praat_installEditor2 (editor.transfer(), IOBJECT, ispellingChecker);
+		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, sound, true, spellingChecker, nullptr);
+		praat_installEditor2 (editor.get(), IOBJECT, ispellingChecker);
+		editor.releaseToUser();
 	}
 END2 }
 
 DIRECT2 (TextGrid_LongSound_SpellingChecker_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot view or edit a TextGrid from batch.");
-	LongSound longSound = NULL;
-	SpellingChecker spellingChecker = NULL;
+	LongSound longSound = nullptr;
+	SpellingChecker spellingChecker = nullptr;
 	int ilongSound = 0, ispellingChecker = 0;
 	LOOP {
 		if (CLASS == classLongSound) longSound = (LongSound) OBJECT, ilongSound = IOBJECT;
@@ -932,80 +941,81 @@ DIRECT2 (TextGrid_LongSound_SpellingChecker_edit) {
 	Melder_assert (ilongSound != 0 && ispellingChecker != 0);
 	LOOP if (CLASS == classTextGrid) {
 		iam (TextGrid);
-		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, longSound, false, spellingChecker, NULL);
-		praat_installEditor3 (editor.transfer(), IOBJECT, ilongSound, ispellingChecker);
+		autoTextGridEditor editor = TextGridEditor_create (ID_AND_FULL_NAME, me, longSound, false, spellingChecker, nullptr);
+		praat_installEditor3 (editor.get(), IOBJECT, ilongSound, ispellingChecker);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (TextGrid_extractPart, U"TextGrid: Extract part", 0) {
+FORM (TextGrid_extractPart, U"TextGrid: Extract part", nullptr) {
 	REAL (U"left Time range (s)", U"0.0")
 	REAL (U"right Time range (s)", U"1.0")
-	BOOLEAN (U"Preserve times", 0)
+	BOOLEAN (U"Preserve times", false)
 	OK2
 DO
 	LOOP {
 		iam (TextGrid);
 		autoTextGrid thee = TextGrid_extractPart (me, GET_REAL (U"left Time range"), GET_REAL (U"right Time range"), GET_INTEGER (U"Preserve times"));
-		praat_new (thee.transfer(), my name, U"_part");
+		praat_new (thee.move(), my name, U"_part");
 	}
 END2 }
 
-static Function pr_TextGrid_peekTier (Any dia) {
+static Function pr_TextGrid_peekTier (UiForm dia) {
 	int IOBJECT;
 	LOOP {
 		iam (TextGrid);
 		long tierNumber = GET_INTEGER (STRING_TIER_NUMBER);
-		if (tierNumber > my tiers -> size)
-			Melder_throw (U"Tier number (", tierNumber, U") should not be larger than number of tiers (", my tiers -> size, U").");
-		return (Function) my tiers -> item [tierNumber];
+		if (tierNumber > my tiers->size)
+			Melder_throw (U"Tier number (", tierNumber, U") should not be larger than number of tiers (", my tiers->size, U").");
+		return my tiers->at [tierNumber];
 	}
-	return NULL;   // should not occur
+	return nullptr;   // should not occur
 }
 
-static IntervalTier pr_TextGrid_peekIntervalTier (Any dia) {
+static IntervalTier pr_TextGrid_peekIntervalTier (UiForm dia) {
 	Function tier = pr_TextGrid_peekTier (dia);
 	if (tier -> classInfo != classIntervalTier) Melder_throw (U"Tier should be interval tier.");
 	return (IntervalTier) tier;
 }
 
-static TextTier pr_TextGrid_peekTextTier (Any dia) {
+static TextTier pr_TextGrid_peekTextTier (UiForm dia) {
 	Function tier = pr_TextGrid_peekTier (dia);
-	if (! tier) return NULL;
+	if (! tier) return nullptr;
 	if (tier -> classInfo != classTextTier) Melder_throw (U"Tier should be point tier (TextTier).");
 	return (TextTier) tier;
 }
 
-static TextInterval pr_TextGrid_peekInterval (Any dia) {
+static TextInterval pr_TextGrid_peekInterval (UiForm dia) {
 	int intervalNumber = GET_INTEGER (STRING_INTERVAL_NUMBER);
 	IntervalTier intervalTier = pr_TextGrid_peekIntervalTier (dia);
-	if (intervalNumber > intervalTier -> intervals -> size) Melder_throw (U"Interval number too large.");
-	return (TextInterval) intervalTier -> intervals -> item [intervalNumber];
+	if (intervalNumber > intervalTier -> intervals.size) Melder_throw (U"Interval number too large.");
+	return intervalTier -> intervals.at [intervalNumber];
 }
 
-static TextPoint pr_TextGrid_peekPoint (Any dia) {	
+static TextPoint pr_TextGrid_peekPoint (UiForm dia) {	
 	long pointNumber = GET_INTEGER (STRING_POINT_NUMBER);
 	TextTier textTier = pr_TextGrid_peekTextTier (dia);
-	if (pointNumber > textTier -> points -> size) Melder_throw (U"Point number too large.");
-	return (TextPoint) textTier -> points -> item [pointNumber];
+	if (pointNumber > textTier -> points.size) Melder_throw (U"Point number too large.");
+	return textTier -> points.at [pointNumber];
 }
 
-FORM (TextGrid_extractOneTier, U"TextGrid: Extract one tier", 0) {
+FORM (TextGrid_extractOneTier, U"TextGrid: Extract one tier", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
 	Function tier = pr_TextGrid_peekTier (dia);   // a reference
 	autoTextGrid grid = TextGrid_createWithoutTiers (1e30, -1e30);
-	TextGrid_addTier (grid.peek(), tier);   // no transfer of tier ownership, because a copy is made
-	praat_new (grid.transfer(), tier -> name);
+	TextGrid_addTier_copy (grid.get(), tier);   // no transfer of tier ownership, because a copy is made
+	praat_new (grid.move(), tier -> name);
 END2 }
 
-FORM (TextGrid_extractTier, U"TextGrid: Extract tier", 0) {
+FORM (TextGrid_extractTier, U"TextGrid: Extract tier", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
 	Function tier = pr_TextGrid_peekTier (dia);
 	autoFunction thee = Data_copy (tier);
-	praat_new (thee.transfer(), tier -> name);
+	praat_new (thee.move(), tier -> name);
 END2 }
 
 DIRECT2 (TextGrid_genericize) {
@@ -1030,11 +1040,11 @@ FORM (TextGrid_getHighIndexFromTime, U"Get high index", U"AnyTier: Get high inde
 	OK2
 DO
 	TextTier textTier = pr_TextGrid_peekTextTier (dia);
-	long highIndex = AnyTier_timeToHighIndex (textTier, GET_REAL (U"Time"));
+	long highIndex = AnyTier_timeToHighIndex (textTier->asAnyTier(), GET_REAL (U"Time"));
 	Melder_information (highIndex);
 END2 }
 
-FORM (TextGrid_getHighIntervalAtTime, U"TextGrid: Get high interval at time", 0) {
+FORM (TextGrid_getHighIntervalAtTime, U"TextGrid: Get high interval at time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1044,7 +1054,7 @@ DO
 	Melder_information (index);
 END2 }
 
-FORM (TextGrid_getIntervalBoundaryFromTime, U"TextGrid: Get interval boundary from time", 0) {
+FORM (TextGrid_getIntervalBoundaryFromTime, U"TextGrid: Get interval boundary from time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1054,7 +1064,7 @@ DO
 	Melder_information (index);
 END2 }
 
-FORM (TextGrid_getIntervalEdgeFromTime, U"TextGrid: Get interval edge from time", 0) {
+FORM (TextGrid_getIntervalEdgeFromTime, U"TextGrid: Get interval edge from time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1070,11 +1080,11 @@ FORM (TextGrid_getLowIndexFromTime, U"Get low index", U"AnyTier: Get low index f
 	OK2
 DO
 	TextTier textTier = pr_TextGrid_peekTextTier (dia);
-	long lowIndex = AnyTier_timeToLowIndex (textTier, GET_REAL (U"Time"));
+	long lowIndex = AnyTier_timeToLowIndex (textTier->asAnyTier(), GET_REAL (U"Time"));
 	Melder_information (lowIndex);
 END2 }
 
-FORM (TextGrid_getLowIntervalAtTime, U"TextGrid: Get low interval at time", 0) {
+FORM (TextGrid_getLowIntervalAtTime, U"TextGrid: Get low interval at time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1090,11 +1100,11 @@ FORM (TextGrid_getNearestIndexFromTime, U"Get nearest index", U"AnyTier: Get nea
 	OK2
 DO
 	TextTier textTier = pr_TextGrid_peekTextTier (dia);
-	long nearestIndex = AnyTier_timeToNearestIndex (textTier, GET_REAL (U"Time"));
+	long nearestIndex = AnyTier_timeToNearestIndex (textTier->asAnyTier(), GET_REAL (U"Time"));
 	Melder_information (nearestIndex);
 END2 }
 
-FORM (TextGrid_getIntervalAtTime, U"TextGrid: Get interval at time", 0) {
+FORM (TextGrid_getIntervalAtTime, U"TextGrid: Get interval at time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1104,24 +1114,24 @@ DO
 	Melder_information (index);
 END2 }
 
-FORM (TextGrid_getNumberOfIntervals, U"TextGrid: Get number of intervals", 0) {
+FORM (TextGrid_getNumberOfIntervals, U"TextGrid: Get number of intervals", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
 	IntervalTier intervalTier = pr_TextGrid_peekIntervalTier (dia);
-	long numberOfIntervals = intervalTier -> intervals -> size;
+	long numberOfIntervals = intervalTier -> intervals.size;
 	Melder_information (numberOfIntervals);
 END2 }
 
 DIRECT2 (TextGrid_getNumberOfTiers) {
 	LOOP {
 		iam (TextGrid);
-		long numberOfTiers = my tiers -> size;
+		long numberOfTiers = my tiers->size;
 		Melder_information (numberOfTiers);
 	}
 END2 }
 
-FORM (TextGrid_getStartingPoint, U"TextGrid: Get starting point", 0) {
+FORM (TextGrid_getStartingPoint, U"TextGrid: Get starting point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"1")
 	OK2
@@ -1131,7 +1141,7 @@ DO
 	Melder_informationReal (startingPoint, U"seconds");
 END2 }
 
-FORM (TextGrid_getEndPoint, U"TextGrid: Get end point", 0) {
+FORM (TextGrid_getEndPoint, U"TextGrid: Get end point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"1")
 	OK2
@@ -1141,7 +1151,7 @@ DO
 	Melder_informationReal (endPoint, U"seconds");
 END2 }
 
-FORM (TextGrid_getLabelOfInterval, U"TextGrid: Get label of interval", 0) {
+FORM (TextGrid_getLabelOfInterval, U"TextGrid: Get label of interval", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"1")
 	OK2
@@ -1152,24 +1162,24 @@ DO
 	MelderInfo_close ();
 END2 }
 
-FORM (TextGrid_getNumberOfPoints, U"TextGrid: Get number of points", 0) {
+FORM (TextGrid_getNumberOfPoints, U"TextGrid: Get number of points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
 	TextTier textTier = pr_TextGrid_peekTextTier (dia);
-	long numberOfPoints = textTier -> points -> size;
+	long numberOfPoints = textTier -> points.size;
 	Melder_information (numberOfPoints);
 END2 }
 
-FORM (TextGrid_getTierName, U"TextGrid: Get tier name", 0) {
+FORM (TextGrid_getTierName, U"TextGrid: Get tier name", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
-	Data tier = pr_TextGrid_peekTier (dia);
+	Daata tier = pr_TextGrid_peekTier (dia);
 	Melder_information (tier -> name);
 END2 }
 
-FORM (TextGrid_getTimeOfPoint, U"TextGrid: Get time of point", 0) {
+FORM (TextGrid_getTimeOfPoint, U"TextGrid: Get time of point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_POINT_NUMBER, U"1")
 	OK2
@@ -1178,7 +1188,7 @@ DO
 	Melder_informationReal (point -> number, U"seconds");
 END2 }
 
-FORM (TextGrid_getLabelOfPoint, U"TextGrid: Get label of point", 0) {
+FORM (TextGrid_getLabelOfPoint, U"TextGrid: Get label of point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_POINT_NUMBER, U"1")
 	OK2
@@ -1191,7 +1201,7 @@ DIRECT2 (TextGrid_help) {
 	Melder_help (U"TextGrid");
 END2 }
 
-FORM (TextGrid_insertBoundary, U"TextGrid: Insert boundary", 0) {
+FORM (TextGrid_insertBoundary, U"TextGrid: Insert boundary", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1203,7 +1213,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_insertIntervalTier, U"TextGrid: Insert interval tier", 0) {
+FORM (TextGrid_insertIntervalTier, U"TextGrid: Insert interval tier", nullptr) {
 	NATURAL (U"Position", U"1 (= at top)")
 	WORD (U"Name", U"")
 	OK2
@@ -1212,15 +1222,17 @@ DO
 		iam (TextGrid);
 		int position = GET_INTEGER (U"Position");
 		const char32 *name = GET_STRING (U"Name");
-		autoIntervalTier tier = IntervalTier_create (my xmin, my xmax);
-		if (position > my tiers -> size) position = my tiers -> size + 1;
-		Thing_setName (tier.peek(), name);
-		Ordered_addItemPos (my tiers, tier.transfer(), position);
+		{// scope
+			autoIntervalTier tier = IntervalTier_create (my xmin, my xmax);
+			if (position > my tiers->size) position = my tiers->size + 1;
+			Thing_setName (tier.get(), name);
+			my tiers -> addItemAtPosition_move (tier.move(), position);
+		}
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (TextGrid_insertPoint, U"TextGrid: Insert point", 0) {
+FORM (TextGrid_insertPoint, U"TextGrid: Insert point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	LABEL (U"", U"Text:")
@@ -1234,7 +1246,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_insertPointTier, U"TextGrid: Insert point tier", 0) {
+FORM (TextGrid_insertPointTier, U"TextGrid: Insert point tier", nullptr) {
 	NATURAL (U"Position", U"1 (= at top)")
 	WORD (U"Name", U"")
 	OK2
@@ -1243,19 +1255,21 @@ DO
 		iam (TextGrid);
 		int position = GET_INTEGER (U"Position");
 		const char32 *name = GET_STRING (U"Name");
-		autoTextTier tier = TextTier_create (my xmin, my xmax);
-		if (position > my tiers -> size) position = my tiers -> size + 1;
-		Thing_setName (tier.peek(), name);
-		Ordered_addItemPos (my tiers, tier.transfer(), position);
+		{// scope
+			autoTextTier tier = TextTier_create (my xmin, my xmax);
+			if (position > my tiers->size) position = my tiers->size + 1;
+			Thing_setName (tier.get(), name);
+			my tiers -> addItemAtPosition_move (tier.move(), position);
+		}
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (TextGrid_isIntervalTier, U"TextGrid: Is interval tier?", 0) {
+FORM (TextGrid_isIntervalTier, U"TextGrid: Is interval tier?", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
-	Data tier = pr_TextGrid_peekTier (dia);
+	Daata tier = pr_TextGrid_peekTier (dia);
 	if (tier -> classInfo == classIntervalTier) {
 		Melder_information (U"1 (yes, tier ", GET_INTEGER (STRING_TIER_NUMBER), U" is an interval tier)");
 	} else {
@@ -1263,7 +1277,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_list, U"TextGrid: List", 0) {
+FORM (TextGrid_list, U"TextGrid: List", nullptr) {
 	BOOLEAN (U"Include line number", false)
 	NATURAL (U"Time decimals", U"6")
 	BOOLEAN (U"Include tier names", true)
@@ -1278,22 +1292,30 @@ DO
 END2 }
 
 DIRECT2 (TextGrids_concatenate) {
-	autoCollection textGrids = praat_getSelectedObjects ();
-	autoTextGrid thee = TextGrids_concatenate (textGrids.peek());
-	praat_new (thee.transfer(), U"chain");
+	OrderedOf <structTextGrid> textGrids;
+	LOOP {
+		iam (TextGrid);
+		textGrids. addItem_ref (me);
+	}
+	autoTextGrid thee = TextGrids_concatenate (& textGrids);
+	praat_new (thee.move(), U"chain");
 END2 }
 
 DIRECT2 (TextGrids_merge) {
-	autoCollection textGrids = praat_getSelectedObjects ();
-	autoTextGrid thee = TextGrid_merge (textGrids.peek());
-	praat_new (thee.transfer(), U"merged");
+	OrderedOf <structTextGrid> textGrids;
+	LOOP {
+		iam (TextGrid);
+		textGrids. addItem_ref (me);
+	}
+	autoTextGrid thee = TextGrids_merge (& textGrids);
+	praat_new (thee.move(), U"merged");
 END2 }
 
 DIRECT2 (info_TextGrid_Pitch_draw) {
 	Melder_information (U"You can draw a TextGrid together with a Pitch after selecting them both.");
 END2 }
 
-FORM (TextGrid_removeBoundaryAtTime, U"TextGrid: Remove boundary at time", 0) {
+FORM (TextGrid_removeBoundaryAtTime, U"TextGrid: Remove boundary at time", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	REAL (U"Time (s)", U"0.5")
 	OK2
@@ -1305,7 +1327,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_getCentrePoints, U"TextGrid: Get centre points", 0) {
+FORM (TextGrid_getCentrePoints, U"TextGrid: Get centre points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get centre points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1316,11 +1338,11 @@ DO
 		iam (TextGrid);
 		autoPointProcess thee = TextGrid_getCentrePoints (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get centre points whose label"), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_getEndPoints, U"TextGrid: Get end points", 0) {
+FORM (TextGrid_getEndPoints, U"TextGrid: Get end points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get end points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1331,11 +1353,11 @@ DO
 		iam (TextGrid);
 		autoPointProcess thee = TextGrid_getEndPoints (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get end points whose label"), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_getStartingPoints, U"TextGrid: Get starting points", 0) {
+FORM (TextGrid_getStartingPoints, U"TextGrid: Get starting points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get starting points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1346,11 +1368,11 @@ DO
 		iam (TextGrid);
 		autoPointProcess thee = TextGrid_getStartingPoints (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get starting points whose label"), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_getPoints, U"Get points", 0) {
+FORM (TextGrid_getPoints, U"Get points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1361,11 +1383,11 @@ DO
 		iam (TextGrid);
 		autoPointProcess thee = TextGrid_getPoints (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get points whose label"), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_getPoints_followed, U"Get points (followed)", 0) {
+FORM (TextGrid_getPoints_followed, U"Get points (followed)", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1380,11 +1402,11 @@ DO
 		autoPointProcess thee = TextGrid_getPoints_followed (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get points whose label"), text,
 			GET_ENUM (kMelder_string, U"followed by a label that"), following);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_getPoints_preceded, U"Get points (preceded)", 0) {
+FORM (TextGrid_getPoints_preceded, U"Get points (preceded)", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Get points whose label", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"there")
@@ -1399,11 +1421,11 @@ DO
 		autoPointProcess thee = TextGrid_getPoints_preceded (me, GET_INTEGER (STRING_TIER_NUMBER),
 			GET_ENUM (kMelder_string, U"Get points whose label"), text,
 			GET_ENUM (kMelder_string, U"preceded by a label that"), preceding);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TextGrid_removeLeftBoundary, U"TextGrid: Remove left boundary", 0) {
+FORM (TextGrid_removeLeftBoundary, U"TextGrid: Remove left boundary", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"2")
 	OK2
@@ -1413,16 +1435,16 @@ DO
 	LOOP {
 		iam (TextGrid);
 		IntervalTier intervalTier;
-		if (itier > my tiers -> size)
+		if (itier > my tiers->size)
 			Melder_throw (U"You cannot remove a boundary from tier ", itier, U" of ", me,
-				U", because that TextGrid has only ", my tiers -> size, U" tiers.");
-		intervalTier = (IntervalTier) my tiers -> item [itier];
+				U", because that TextGrid has only ", my tiers->size, U" tiers.");
+		intervalTier = (IntervalTier) my tiers->at [itier];
 		if (intervalTier -> classInfo != classIntervalTier)
 			Melder_throw (U"You cannot remove a boundary from tier ", itier, U" of ", me,
 				U", because that tier is a point tier instead of an interval tier.");
-		if (iinterval > intervalTier -> intervals -> size)
+		if (iinterval > intervalTier -> intervals.size)
 			Melder_throw (U"You cannot remove a boundary from interval ", iinterval, U" of tier ", itier, U" of ", me,
-				U", because that tier has only ", intervalTier -> intervals -> size, U" intervals.");
+				U", because that tier has only ", intervalTier -> intervals.size, U" intervals.");
 		if (iinterval == 1)
 			Melder_throw (U"You cannot remove the left boundary from interval 1 of tier ", itier, U" of ", me,
 				U", because this is at the left edge of the tier.");
@@ -1431,7 +1453,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_removePoint, U"TextGrid: Remove point", 0) {
+FORM (TextGrid_removePoint, U"TextGrid: Remove point", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_POINT_NUMBER, U"2")
 	OK2
@@ -1441,22 +1463,22 @@ DO
 	LOOP {
 		iam (TextGrid);
 		TextTier pointTier;
-		if (itier > my tiers -> size)
+		if (itier > my tiers->size)
 			Melder_throw (U"You cannot remove a point from tier ", itier, U" of ", me,
-				U", because that TextGrid has only ", my tiers -> size, U" tiers.");
-		pointTier = (TextTier) my tiers -> item [itier];
+				U", because that TextGrid has only ", my tiers->size, U" tiers.");
+		pointTier = (TextTier) my tiers->at [itier];
 		if (pointTier -> classInfo != classTextTier)
 			Melder_throw (U"You cannot remove a point from tier ", itier, U" of ", me,
 				U", because that tier is an interval tier instead of a point tier.");
-		if (ipoint > pointTier -> points -> size)
+		if (ipoint > pointTier -> points.size)
 			Melder_throw (U"You cannot remove point ", ipoint, U" from tier ", itier, U" of ", me,
-				U", because that tier has only ", pointTier -> points -> size, U" points.");
+				U", because that tier has only ", pointTier -> points.size, U" points.");
 		TextTier_removePoint (pointTier, ipoint);
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (TextGrid_removePoints, U"Remove points", 0) {
+FORM (TextGrid_removePoints, U"Remove points", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OPTIONMENU_ENUM (U"Remove every point whose label...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -1469,7 +1491,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_removeRightBoundary, U"TextGrid: Remove right boundary", 0) {
+FORM (TextGrid_removeRightBoundary, U"TextGrid: Remove right boundary", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"1")
 	OK2
@@ -1479,17 +1501,17 @@ DO
 	LOOP {
 		iam (TextGrid);
 		IntervalTier intervalTier;
-		if (itier > my tiers -> size)
+		if (itier > my tiers->size)
 			Melder_throw (U"You cannot remove a boundary from tier ", itier, U" of ", me,
-				U", because that TextGrid has only ", my tiers -> size, U" tiers.");
-		intervalTier = (IntervalTier) my tiers -> item [itier];
+				U", because that TextGrid has only ", my tiers->size, U" tiers.");
+		intervalTier = (IntervalTier) my tiers->at [itier];
 		if (intervalTier -> classInfo != classIntervalTier)
 			Melder_throw (U"You cannot remove a boundary from tier ", itier, U" of ", me,
 				U", because that tier is a point tier instead of an interval tier.");
-		if (iinterval > intervalTier -> intervals -> size)
+		if (iinterval > intervalTier -> intervals.size)
 			Melder_throw (U"You cannot remove a boundary from interval ", iinterval, U" of tier ", itier, U" of ", me,
-				U", because that tier has only ", intervalTier -> intervals -> size, U" intervals.");
-		if (iinterval == intervalTier -> intervals -> size)
+				U", because that tier has only ", intervalTier -> intervals.size, U" intervals.");
+		if (iinterval == intervalTier -> intervals.size)
 			Melder_throw (U"You cannot remove the right boundary from interval ", iinterval, U" of tier ", itier, U" of ", me,
 				U", because this is at the right edge of the tier.");
 		IntervalTier_removeLeftBoundary (intervalTier, iinterval + 1);
@@ -1497,17 +1519,17 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_removeTier, U"TextGrid: Remove tier", 0) {
+FORM (TextGrid_removeTier, U"TextGrid: Remove tier", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	OK2
 DO
 	LOOP {
 		iam (TextGrid);
 		int itier = GET_INTEGER (STRING_TIER_NUMBER);
-		if (my tiers -> size <= 1)
+		if (my tiers->size <= 1)
 			Melder_throw (U"Sorry, I refuse to remove the last tier.");
-		if (itier > my tiers -> size) itier = my tiers -> size;
-		Collection_removeItem (my tiers, itier);
+		if (itier > my tiers->size) itier = my tiers->size;
+		my tiers -> removeItem (itier);
 		praat_dataChanged (me);
 	}
 END2 }
@@ -1521,7 +1543,7 @@ DIRECT2 (info_TextGrid_Sound_draw) {
 	Melder_information (U"You can draw a TextGrid together with a Sound after selecting them both.");
 END2 }
 
-FORM (TextGrid_setIntervalText, U"TextGrid: Set interval text", 0) {
+FORM (TextGrid_setIntervalText, U"TextGrid: Set interval text", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_INTERVAL_NUMBER, U"1")
 	LABEL (U"", U"Text:")
@@ -1535,7 +1557,7 @@ DO
 	}
 END2 }
 
-FORM (TextGrid_setPointText, U"TextGrid: Set point text", 0) {
+FORM (TextGrid_setPointText, U"TextGrid: Set point text", nullptr) {
 	NATURAL (STRING_TIER_NUMBER, U"1")
 	NATURAL (STRING_POINT_NUMBER, U"1")
 	LABEL (U"", U"Text:")
@@ -1549,7 +1571,7 @@ DO
 	}
 END2 }
 
-FORM_WRITE2 (TextGrid_writeToChronologicalTextFile, U"Text file", 0, 0) {
+FORM_WRITE2 (TextGrid_writeToChronologicalTextFile, U"Text file", nullptr, nullptr) {
 	LOOP {
 		iam (TextGrid);
 		TextGrid_writeToChronologicalTextFile (me, file);
@@ -1559,23 +1581,23 @@ END2 }
 /***** TEXTGRID & ANYTIER *****/
 
 DIRECT2 (TextGrid_AnyTier_append) {
-	TextGrid oldGrid = NULL;
+	TextGrid oldGrid = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) oldGrid = (TextGrid) OBJECT;
 	}
 	autoTextGrid newGrid = Data_copy (oldGrid);
 	LOOP if (OBJECT != oldGrid) {
 		iam (AnyTier);
-		TextGrid_addTier (newGrid.peek(), me);
+		TextGrid_addTier_copy (newGrid.get(), me);
 	}
-	praat_new (newGrid.transfer(), oldGrid -> name);
+	praat_new (newGrid.move(), oldGrid -> name);
 END2 }
 
 /***** TEXTGRID & LONGSOUND *****/
 
 DIRECT2 (TextGrid_LongSound_scaleTimes) {
-	TextGrid grid = NULL;
-	LongSound longSound = NULL;
+	TextGrid grid = nullptr;
+	LongSound longSound = nullptr;
 	LOOP {
 		if (CLASS == classTextGrid) grid = (TextGrid) OBJECT;
 		if (CLASS == classLongSound) longSound = (LongSound) OBJECT;
@@ -1601,19 +1623,19 @@ END2 }
 DIRECT2 (TextTier_downto_PointProcess) {
 	LOOP {
 		iam (TextTier);
-		autoPointProcess thee = AnyTier_downto_PointProcess (me);
-		praat_new (thee.transfer(), my name);
+		autoPointProcess thee = AnyTier_downto_PointProcess (me->asAnyTier());
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TextTier_downto_TableOfReal, U"TextTier: Down to TableOfReal", 0) {
+FORM (TextTier_downto_TableOfReal, U"TextTier: Down to TableOfReal", nullptr) {
 	SENTENCE (U"Label", U"")
 	OK2
 DO
 	LOOP {
 		iam (TextTier);
 		autoTableOfReal thee = TextTier_downto_TableOfReal (me, GET_STRING (U"Label"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1621,31 +1643,31 @@ DIRECT2 (TextTier_downto_TableOfReal_any) {
 	LOOP {
 		iam (TextTier);
 		autoTableOfReal thee = TextTier_downto_TableOfReal_any (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TextTier_getLabelOfPoint, U"Get label of point", 0) {
+FORM (TextTier_getLabelOfPoint, U"Get label of point", nullptr) {
 	NATURAL (U"Point number", U"1")
 	OK2
 DO
 	LOOP {
 		iam (TextTier);
 		long ipoint = GET_INTEGER (U"Point number");
-		if (ipoint > my points -> size) Melder_throw (U"No such point.");
-		TextPoint point = (TextPoint) my points -> item [ipoint];
+		if (ipoint > my points.size) Melder_throw (U"No such point.");
+		TextPoint point = my points.at [ipoint];
 		Melder_information (point -> mark);
 	}
 END2 }
 
-FORM (TextTier_getPoints, U"Get points", 0) {
+FORM (TextTier_getPoints, U"Get points", nullptr) {
 	SENTENCE (U"Text", U"")
 	OK2
 DO
 	LOOP {
 		iam (TextTier);
 		autoPointProcess thee = TextTier_getPoints (me, GET_STRING (U"Text"));
-		praat_new (thee.transfer(), GET_STRING (U"Text"));
+		praat_new (thee.move(), GET_STRING (U"Text"));
 	}
 END2 }
 
@@ -1670,7 +1692,7 @@ DIRECT2 (WordList_to_Strings) {
 	LOOP {
 		iam (WordList);
 		autoStrings thee = WordList_to_Strings (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1678,7 +1700,7 @@ DIRECT2 (WordList_upto_SpellingChecker) {
 	LOOP {
 		iam (WordList);
 		autoSpellingChecker thee = WordList_upto_SpellingChecker (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1688,202 +1710,202 @@ void praat_TimeFunction_query_init (ClassInfo klas);
 void praat_TimeTier_query_init (ClassInfo klas);
 void praat_TimeTier_modify_init (ClassInfo klas);
 
-void praat_uvafon_TextGrid_init (void);
-void praat_uvafon_TextGrid_init (void) {
+void praat_uvafon_TextGrid_init ();
+void praat_uvafon_TextGrid_init () {
 	Thing_recognizeClassByOtherName (classTextTier, U"MarkTier");
 
 	structTextGridEditor :: f_preferences ();
 
-	praat_addAction1 (classIntervalTier, 0, U"IntervalTier help", 0, 0, DO_IntervalTier_help);
-	praat_addAction1 (classIntervalTier, 1, U"Save as Xwaves label file...", 0, 0, DO_IntervalTier_writeToXwaves);
-	praat_addAction1 (classIntervalTier, 1, U"Write to Xwaves label file...", 0, praat_HIDDEN, DO_IntervalTier_writeToXwaves);
-	praat_addAction1 (classIntervalTier, 0, U"Collect", 0, 0, 0);
-	praat_addAction1 (classIntervalTier, 0, U"Into TextGrid", 0, 0, DO_AnyTier_into_TextGrid);
-	praat_addAction1 (classIntervalTier, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classIntervalTier, 0, U"Get starting points...", 0, 0, DO_IntervalTier_getStartingPoints);
-	praat_addAction1 (classIntervalTier, 0, U"Get centre points...", 0, 0, DO_IntervalTier_getCentrePoints);
-	praat_addAction1 (classIntervalTier, 0, U"Get end points...", 0, 0, DO_IntervalTier_getEndPoints);
-	praat_addAction1 (classIntervalTier, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classIntervalTier, 0, U"Down to TableOfReal (any)", 0, 0, DO_IntervalTier_downto_TableOfReal_any);
-	praat_addAction1 (classIntervalTier, 0, U"Down to TableOfReal...", 0, 0, DO_IntervalTier_downto_TableOfReal);
-
-	praat_addAction1 (classLabel, 0, U"& Sound: To TextGrid?", 0, 0, DO_info_Label_Sound_to_TextGrid);
-
-	praat_addAction1 (classSpellingChecker, 1, U"View & Edit...", 0, praat_ATTRACTIVE, DO_SpellingChecker_edit);
-	praat_addAction1 (classSpellingChecker, 1, U"Edit...", 0, praat_HIDDEN, DO_SpellingChecker_edit);
-	praat_addAction1 (classSpellingChecker, 0, U"Query", 0, 0, 0);
-	praat_addAction1 (classSpellingChecker, 1, U"Is word allowed...", 0, 0, DO_SpellingChecker_isWordAllowed);
-	praat_addAction1 (classSpellingChecker, 1, U"Next not allowed word...", 0, 0, DO_SpellingChecker_nextNotAllowedWord);
-	praat_addAction1 (classSpellingChecker, 0, U"Modify", 0, 0, 0);
-	praat_addAction1 (classSpellingChecker, 0, U"Add new word...", 0, 0, DO_SpellingChecker_addNewWord);
-	praat_addAction1 (classSpellingChecker, 0, U"Analyze", 0, 0, 0);
-	praat_addAction1 (classSpellingChecker, 0, U"Extract WordList", 0, 0, DO_SpellingChecker_extractWordList);
-	praat_addAction1 (classSpellingChecker, 0, U"Extract user dictionary", 0, 0, DO_SpellingChecker_extractUserDictionary);
-
-	praat_addAction1 (classTextGrid, 0, U"TextGrid help", 0, 0, DO_TextGrid_help);
-	praat_addAction1 (classTextGrid, 1, U"Save as chronological text file...", 0, 0, DO_TextGrid_writeToChronologicalTextFile);
-	praat_addAction1 (classTextGrid, 1, U"Write to chronological text file...", 0, praat_HIDDEN, DO_TextGrid_writeToChronologicalTextFile);
-	praat_addAction1 (classTextGrid, 1, U"View & Edit alone", 0, 0, DO_TextGrid_edit);
-	praat_addAction1 (classTextGrid, 1, U"View & Edit", 0, praat_HIDDEN, DO_TextGrid_edit);
-	praat_addAction1 (classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_edit);
-	praat_addAction1 (classTextGrid, 1, U"View & Edit with Sound?", 0, praat_ATTRACTIVE, DO_info_TextGrid_Sound_edit);
-	praat_addAction1 (classTextGrid, 0, U"Draw -", 0, 0, 0);
-	praat_addAction1 (classTextGrid, 0, U"Draw...", 0, 1, DO_TextGrid_draw);
-	praat_addAction1 (classTextGrid, 1, U"Draw with Sound?", 0, 1, DO_info_TextGrid_Sound_draw);
-	praat_addAction1 (classTextGrid, 1, U"Draw with Pitch?", 0, 1, DO_info_TextGrid_Pitch_draw);
-	praat_addAction1 (classTextGrid, 1, U"List...", 0, 0, DO_TextGrid_list);
-	praat_addAction1 (classTextGrid, 0, U"Down to Table...", 0, 0, DO_TextGrid_downto_Table);
-	praat_addAction1 (classTextGrid, 0, U"Query -", 0, 0, 0);
+	praat_addAction1 (classIntervalTier, 0, U"IntervalTier help", nullptr, 0, DO_IntervalTier_help);
+	praat_addAction1 (classIntervalTier, 1, U"Save as Xwaves label file...", nullptr, 0, DO_IntervalTier_writeToXwaves);
+	praat_addAction1 (classIntervalTier, 1, U"Write to Xwaves label file...", nullptr, praat_HIDDEN, DO_IntervalTier_writeToXwaves);
+	praat_addAction1 (classIntervalTier, 0, U"Collect", nullptr, 0, nullptr);
+	praat_addAction1 (classIntervalTier, 0, U"Into TextGrid", nullptr, 0, DO_AnyTier_into_TextGrid);
+	praat_addAction1 (classIntervalTier, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classIntervalTier, 0, U"Get starting points...", nullptr, 0, DO_IntervalTier_getStartingPoints);
+	praat_addAction1 (classIntervalTier, 0, U"Get centre points...", nullptr, 0, DO_IntervalTier_getCentrePoints);
+	praat_addAction1 (classIntervalTier, 0, U"Get end points...", nullptr, 0, DO_IntervalTier_getEndPoints);
+	praat_addAction1 (classIntervalTier, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classIntervalTier, 0, U"Down to TableOfReal (any)", nullptr, 0, DO_IntervalTier_downto_TableOfReal_any);
+	praat_addAction1 (classIntervalTier, 0, U"Down to TableOfReal...", nullptr, 0, DO_IntervalTier_downto_TableOfReal);
+
+	praat_addAction1 (classLabel, 0, U"& Sound: To TextGrid?", nullptr, 0, DO_info_Label_Sound_to_TextGrid);
+
+	praat_addAction1 (classSpellingChecker, 1, U"View & Edit...", nullptr, praat_ATTRACTIVE, DO_SpellingChecker_edit);
+	praat_addAction1 (classSpellingChecker, 1, U"Edit...", nullptr, praat_HIDDEN, DO_SpellingChecker_edit);
+	praat_addAction1 (classSpellingChecker, 0, U"Query", nullptr, 0, nullptr);
+	praat_addAction1 (classSpellingChecker, 1, U"Is word allowed...", nullptr, 0, DO_SpellingChecker_isWordAllowed);
+	praat_addAction1 (classSpellingChecker, 1, U"Next not allowed word...", nullptr, 0, DO_SpellingChecker_nextNotAllowedWord);
+	praat_addAction1 (classSpellingChecker, 0, U"Modify", nullptr, 0, nullptr);
+	praat_addAction1 (classSpellingChecker, 0, U"Add new word...", nullptr, 0, DO_SpellingChecker_addNewWord);
+	praat_addAction1 (classSpellingChecker, 0, U"Analyze", nullptr, 0, nullptr);
+	praat_addAction1 (classSpellingChecker, 0, U"Extract WordList", nullptr, 0, DO_SpellingChecker_extractWordList);
+	praat_addAction1 (classSpellingChecker, 0, U"Extract user dictionary", nullptr, 0, DO_SpellingChecker_extractUserDictionary);
+
+	praat_addAction1 (classTextGrid, 0, U"TextGrid help", nullptr, 0, DO_TextGrid_help);
+	praat_addAction1 (classTextGrid, 1, U"Save as chronological text file...", nullptr, 0, DO_TextGrid_writeToChronologicalTextFile);
+	praat_addAction1 (classTextGrid, 1, U"Write to chronological text file...", nullptr, praat_HIDDEN, DO_TextGrid_writeToChronologicalTextFile);
+	praat_addAction1 (classTextGrid, 1, U"View & Edit alone", nullptr, 0, DO_TextGrid_edit);
+	praat_addAction1 (classTextGrid, 1, U"View & Edit", nullptr, praat_HIDDEN, DO_TextGrid_edit);
+	praat_addAction1 (classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_edit);
+	praat_addAction1 (classTextGrid, 1, U"View & Edit with Sound?", nullptr, praat_ATTRACTIVE, DO_info_TextGrid_Sound_edit);
+	praat_addAction1 (classTextGrid, 0, U"Draw -", nullptr, 0, nullptr);
+	praat_addAction1 (classTextGrid, 0, U"Draw...", nullptr, 1, DO_TextGrid_draw);
+	praat_addAction1 (classTextGrid, 1, U"Draw with Sound?", nullptr, 1, DO_info_TextGrid_Sound_draw);
+	praat_addAction1 (classTextGrid, 1, U"Draw with Pitch?", nullptr, 1, DO_info_TextGrid_Pitch_draw);
+	praat_addAction1 (classTextGrid, 1, U"List...", nullptr, 0, DO_TextGrid_list);
+	praat_addAction1 (classTextGrid, 0, U"Down to Table...", nullptr, 0, DO_TextGrid_downto_Table);
+	praat_addAction1 (classTextGrid, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeFunction_query_init (classTextGrid);
-		praat_addAction1 (classTextGrid, 1, U"-- query textgrid --", 0, 1, 0);
-		praat_addAction1 (classTextGrid, 1, U"Get number of tiers", 0, 1, DO_TextGrid_getNumberOfTiers);
-		praat_addAction1 (classTextGrid, 1, U"Get tier name...", 0, 1, DO_TextGrid_getTierName);
-		praat_addAction1 (classTextGrid, 1, U"Is interval tier...", 0, 1, DO_TextGrid_isIntervalTier);
-		praat_addAction1 (classTextGrid, 1, U"-- query tier --", 0, 1, 0);
-		praat_addAction1 (classTextGrid, 1, U"Query interval tier", 0, 1, 0);
-			praat_addAction1 (classTextGrid, 1, U"Get number of intervals...", 0, 2, DO_TextGrid_getNumberOfIntervals);
-			praat_addAction1 (classTextGrid, 1, U"Get starting point...", 0, 2, DO_TextGrid_getStartingPoint);
-			praat_addAction1 (classTextGrid, 1, U"Get start point...", 0, praat_HIDDEN + praat_DEPTH_2, DO_TextGrid_getStartingPoint);
-			praat_addAction1 (classTextGrid, 1, U"Get end point...", 0, 2, DO_TextGrid_getEndPoint);
-			praat_addAction1 (classTextGrid, 1, U"Get label of interval...", 0, 2, DO_TextGrid_getLabelOfInterval);
-			praat_addAction1 (classTextGrid, 1, U"-- query interval from time --", 0, 2, 0);
-			praat_addAction1 (classTextGrid, 1, U"Get interval at time...", 0, 2, DO_TextGrid_getIntervalAtTime);
-			praat_addAction1 (classTextGrid, 1, U"Get low interval at time...", 0, 2, DO_TextGrid_getLowIntervalAtTime);
-			praat_addAction1 (classTextGrid, 1, U"Get high interval at time...", 0, 2, DO_TextGrid_getHighIntervalAtTime);
-			praat_addAction1 (classTextGrid, 1, U"Get interval edge from time...", 0, 2, DO_TextGrid_getIntervalEdgeFromTime);
-			praat_addAction1 (classTextGrid, 1, U"Get interval boundary from time...", 0, 2, DO_TextGrid_getIntervalBoundaryFromTime);
-			praat_addAction1 (classTextGrid, 1, U"-- query interval labels --", 0, 2, 0);
-			praat_addAction1 (classTextGrid, 1, U"Count intervals where...", 0, 2, DO_TextGrid_countIntervalsWhere);
-		praat_addAction1 (classTextGrid, 1, U"Query point tier", 0, 1, 0);
-			praat_addAction1 (classTextGrid, 1, U"Get number of points...", 0, 2, DO_TextGrid_getNumberOfPoints);
-			praat_addAction1 (classTextGrid, 1, U"Get time of point...", 0, 2, DO_TextGrid_getTimeOfPoint);
-			praat_addAction1 (classTextGrid, 1, U"Get label of point...", 0, 2, DO_TextGrid_getLabelOfPoint);
-			praat_addAction1 (classTextGrid, 1, U"-- query point from time --", 0, 2, 0);
-			praat_addAction1 (classTextGrid, 1, U"Get low index from time...", 0, 2, DO_TextGrid_getLowIndexFromTime);
-			praat_addAction1 (classTextGrid, 1, U"Get high index from time...", 0, 2, DO_TextGrid_getHighIndexFromTime);
-			praat_addAction1 (classTextGrid, 1, U"Get nearest index from time...", 0, 2, DO_TextGrid_getNearestIndexFromTime);
-			praat_addAction1 (classTextGrid, 1, U"-- query point labels --", 0, 2, 0);
-			praat_addAction1 (classTextGrid, 1, U"Count points where...", 0, 2, DO_TextGrid_countPointsWhere);
-		praat_addAction1 (classTextGrid, 1, U"-- query labels --", 0, praat_HIDDEN + praat_DEPTH_1, 0);
-		praat_addAction1 (classTextGrid, 1, U"Count labels...", 0, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_countLabels);   // hidden 2015
-	praat_addAction1 (classTextGrid, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classTextGrid, 0, U"Convert to backslash trigraphs", 0, 1, DO_TextGrid_genericize);
-		praat_addAction1 (classTextGrid, 0, U"Genericize", 0, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_genericize);   // hidden 2007
-		praat_addAction1 (classTextGrid, 0, U"Convert to Unicode", 0, 1, DO_TextGrid_nativize);
-		praat_addAction1 (classTextGrid, 0, U"Nativize", 0, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_nativize);   // hidden 2007
+		praat_addAction1 (classTextGrid, 1, U"-- query textgrid --", nullptr, 1, nullptr);
+		praat_addAction1 (classTextGrid, 1, U"Get number of tiers", nullptr, 1, DO_TextGrid_getNumberOfTiers);
+		praat_addAction1 (classTextGrid, 1, U"Get tier name...", nullptr, 1, DO_TextGrid_getTierName);
+		praat_addAction1 (classTextGrid, 1, U"Is interval tier...", nullptr, 1, DO_TextGrid_isIntervalTier);
+		praat_addAction1 (classTextGrid, 1, U"-- query tier --", nullptr, 1, nullptr);
+		praat_addAction1 (classTextGrid, 1, U"Query interval tier", nullptr, 1, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Get number of intervals...", nullptr, 2, DO_TextGrid_getNumberOfIntervals);
+			praat_addAction1 (classTextGrid, 1, U"Get starting point...", nullptr, 2, DO_TextGrid_getStartingPoint);
+			praat_addAction1 (classTextGrid, 1, U"Get start point...", nullptr, praat_HIDDEN + praat_DEPTH_2, DO_TextGrid_getStartingPoint);
+			praat_addAction1 (classTextGrid, 1, U"Get end point...", nullptr, 2, DO_TextGrid_getEndPoint);
+			praat_addAction1 (classTextGrid, 1, U"Get label of interval...", nullptr, 2, DO_TextGrid_getLabelOfInterval);
+			praat_addAction1 (classTextGrid, 1, U"-- query interval from time --", nullptr, 2, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Get interval at time...", nullptr, 2, DO_TextGrid_getIntervalAtTime);
+			praat_addAction1 (classTextGrid, 1, U"Get low interval at time...", nullptr, 2, DO_TextGrid_getLowIntervalAtTime);
+			praat_addAction1 (classTextGrid, 1, U"Get high interval at time...", nullptr, 2, DO_TextGrid_getHighIntervalAtTime);
+			praat_addAction1 (classTextGrid, 1, U"Get interval edge from time...", nullptr, 2, DO_TextGrid_getIntervalEdgeFromTime);
+			praat_addAction1 (classTextGrid, 1, U"Get interval boundary from time...", nullptr, 2, DO_TextGrid_getIntervalBoundaryFromTime);
+			praat_addAction1 (classTextGrid, 1, U"-- query interval labels --", nullptr, 2, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Count intervals where...", nullptr, 2, DO_TextGrid_countIntervalsWhere);
+		praat_addAction1 (classTextGrid, 1, U"Query point tier", nullptr, 1, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Get number of points...", nullptr, 2, DO_TextGrid_getNumberOfPoints);
+			praat_addAction1 (classTextGrid, 1, U"Get time of point...", nullptr, 2, DO_TextGrid_getTimeOfPoint);
+			praat_addAction1 (classTextGrid, 1, U"Get label of point...", nullptr, 2, DO_TextGrid_getLabelOfPoint);
+			praat_addAction1 (classTextGrid, 1, U"-- query point from time --", nullptr, 2, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Get low index from time...", nullptr, 2, DO_TextGrid_getLowIndexFromTime);
+			praat_addAction1 (classTextGrid, 1, U"Get high index from time...", nullptr, 2, DO_TextGrid_getHighIndexFromTime);
+			praat_addAction1 (classTextGrid, 1, U"Get nearest index from time...", nullptr, 2, DO_TextGrid_getNearestIndexFromTime);
+			praat_addAction1 (classTextGrid, 1, U"-- query point labels --", nullptr, 2, nullptr);
+			praat_addAction1 (classTextGrid, 1, U"Count points where...", nullptr, 2, DO_TextGrid_countPointsWhere);
+		praat_addAction1 (classTextGrid, 1, U"-- query labels --", nullptr, praat_HIDDEN + praat_DEPTH_1, nullptr);
+		praat_addAction1 (classTextGrid, 1, U"Count labels...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_countLabels);   // hidden 2015
+	praat_addAction1 (classTextGrid, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classTextGrid, 0, U"Convert to backslash trigraphs", nullptr, 1, DO_TextGrid_genericize);
+		praat_addAction1 (classTextGrid, 0, U"Genericize", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_genericize);   // hidden 2007
+		praat_addAction1 (classTextGrid, 0, U"Convert to Unicode", nullptr, 1, DO_TextGrid_nativize);
+		praat_addAction1 (classTextGrid, 0, U"Nativize", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_TextGrid_nativize);   // hidden 2007
 		praat_TimeFunction_modify_init (classTextGrid);
-		praat_addAction1 (classTextGrid, 0, U"-- modify tiers --", 0, 1, 0);
-		praat_addAction1 (classTextGrid, 0, U"Insert interval tier...", 0, 1, DO_TextGrid_insertIntervalTier);
-		praat_addAction1 (classTextGrid, 0, U"Insert point tier...", 0, 1, DO_TextGrid_insertPointTier);
-		praat_addAction1 (classTextGrid, 0, U"Duplicate tier...", 0, 1, DO_TextGrid_duplicateTier);
-		praat_addAction1 (classTextGrid, 0, U"Remove tier...", 0, 1, DO_TextGrid_removeTier);
-		praat_addAction1 (classTextGrid, 1, U"-- modify tier --", 0, 1, 0);
-		praat_addAction1 (classTextGrid, 0, U"Modify interval tier", 0, 1, 0);
-			praat_addAction1 (classTextGrid, 0, U"Insert boundary...", 0, 2, DO_TextGrid_insertBoundary);
-			praat_addAction1 (classTextGrid, 0, U"Remove left boundary...", 0, 2, DO_TextGrid_removeLeftBoundary);
-			praat_addAction1 (classTextGrid, 0, U"Remove right boundary...", 0, 2, DO_TextGrid_removeRightBoundary);
-			praat_addAction1 (classTextGrid, 0, U"Remove boundary at time...", 0, 2, DO_TextGrid_removeBoundaryAtTime);
-			praat_addAction1 (classTextGrid, 0, U"Set interval text...", 0, 2, DO_TextGrid_setIntervalText);
-		praat_addAction1 (classTextGrid, 0, U"Modify point tier", 0, 1, 0);
-			praat_addAction1 (classTextGrid, 0, U"Insert point...", 0, 2, DO_TextGrid_insertPoint);
-			praat_addAction1 (classTextGrid, 0, U"Remove point...", 0, 2, DO_TextGrid_removePoint);
-			praat_addAction1 (classTextGrid, 0, U"Remove points...", 0, 2, DO_TextGrid_removePoints);
-			praat_addAction1 (classTextGrid, 0, U"Set point text...", 0, 2, DO_TextGrid_setPointText);
-praat_addAction1 (classTextGrid, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classTextGrid, 1, U"Extract one tier...", 0, 0, DO_TextGrid_extractOneTier);
-	praat_addAction1 (classTextGrid, 1, U"Extract tier...", 0, praat_HIDDEN, DO_TextGrid_extractTier);   // hidden 2010
-	praat_addAction1 (classTextGrid, 1, U"Extract part...", 0, 0, DO_TextGrid_extractPart);
-	praat_addAction1 (classTextGrid, 1, U"Analyse interval tier -", 0, 0, 0);
-		praat_addAction1 (classTextGrid, 1, U"Get starting points...", 0, 1, DO_TextGrid_getStartingPoints);
-		praat_addAction1 (classTextGrid, 1, U"Get end points...", 0, 1, DO_TextGrid_getEndPoints);
-		praat_addAction1 (classTextGrid, 1, U"Get centre points...", 0, 1, DO_TextGrid_getCentrePoints);
-	praat_addAction1 (classTextGrid, 1, U"Analyse point tier -", 0, 0, 0);
-		praat_addAction1 (classTextGrid, 1, U"Get points...", 0, 1, DO_TextGrid_getPoints);
-		praat_addAction1 (classTextGrid, 1, U"Get points (preceded)...", 0, 1, DO_TextGrid_getPoints_preceded);
-		praat_addAction1 (classTextGrid, 1, U"Get points (followed)...", 0, 1, DO_TextGrid_getPoints_followed);
-praat_addAction1 (classTextGrid, 0, U"Synthesize", 0, 0, 0);
-	praat_addAction1 (classTextGrid, 0, U"Merge", 0, 0, DO_TextGrids_merge);
-	praat_addAction1 (classTextGrid, 0, U"Concatenate", 0, 0, DO_TextGrids_concatenate);
-
-	praat_addAction1 (classTextTier, 0, U"TextTier help", 0, 0, DO_TextTier_help);
-	praat_addAction1 (classTextTier, 0, U"Query -", 0, 0, 0);
+		praat_addAction1 (classTextGrid, 0, U"-- modify tiers --", nullptr, 1, nullptr);
+		praat_addAction1 (classTextGrid, 0, U"Insert interval tier...", nullptr, 1, DO_TextGrid_insertIntervalTier);
+		praat_addAction1 (classTextGrid, 0, U"Insert point tier...", nullptr, 1, DO_TextGrid_insertPointTier);
+		praat_addAction1 (classTextGrid, 0, U"Duplicate tier...", nullptr, 1, DO_TextGrid_duplicateTier);
+		praat_addAction1 (classTextGrid, 0, U"Remove tier...", nullptr, 1, DO_TextGrid_removeTier);
+		praat_addAction1 (classTextGrid, 1, U"-- modify tier --", nullptr, 1, nullptr);
+		praat_addAction1 (classTextGrid, 0, U"Modify interval tier", nullptr, 1, nullptr);
+			praat_addAction1 (classTextGrid, 0, U"Insert boundary...", nullptr, 2, DO_TextGrid_insertBoundary);
+			praat_addAction1 (classTextGrid, 0, U"Remove left boundary...", nullptr, 2, DO_TextGrid_removeLeftBoundary);
+			praat_addAction1 (classTextGrid, 0, U"Remove right boundary...", nullptr, 2, DO_TextGrid_removeRightBoundary);
+			praat_addAction1 (classTextGrid, 0, U"Remove boundary at time...", nullptr, 2, DO_TextGrid_removeBoundaryAtTime);
+			praat_addAction1 (classTextGrid, 0, U"Set interval text...", nullptr, 2, DO_TextGrid_setIntervalText);
+		praat_addAction1 (classTextGrid, 0, U"Modify point tier", nullptr, 1, nullptr);
+			praat_addAction1 (classTextGrid, 0, U"Insert point...", nullptr, 2, DO_TextGrid_insertPoint);
+			praat_addAction1 (classTextGrid, 0, U"Remove point...", nullptr, 2, DO_TextGrid_removePoint);
+			praat_addAction1 (classTextGrid, 0, U"Remove points...", nullptr, 2, DO_TextGrid_removePoints);
+			praat_addAction1 (classTextGrid, 0, U"Set point text...", nullptr, 2, DO_TextGrid_setPointText);
+praat_addAction1 (classTextGrid, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classTextGrid, 1, U"Extract one tier...", nullptr, 0, DO_TextGrid_extractOneTier);
+	praat_addAction1 (classTextGrid, 1, U"Extract tier...", nullptr, praat_HIDDEN, DO_TextGrid_extractTier);   // hidden 2010
+	praat_addAction1 (classTextGrid, 1, U"Extract part...", nullptr, 0, DO_TextGrid_extractPart);
+	praat_addAction1 (classTextGrid, 1, U"Analyse interval tier -", nullptr, 0, nullptr);
+		praat_addAction1 (classTextGrid, 1, U"Get starting points...", nullptr, 1, DO_TextGrid_getStartingPoints);
+		praat_addAction1 (classTextGrid, 1, U"Get end points...", nullptr, 1, DO_TextGrid_getEndPoints);
+		praat_addAction1 (classTextGrid, 1, U"Get centre points...", nullptr, 1, DO_TextGrid_getCentrePoints);
+	praat_addAction1 (classTextGrid, 1, U"Analyse point tier -", nullptr, 0, nullptr);
+		praat_addAction1 (classTextGrid, 1, U"Get points...", nullptr, 1, DO_TextGrid_getPoints);
+		praat_addAction1 (classTextGrid, 1, U"Get points (preceded)...", nullptr, 1, DO_TextGrid_getPoints_preceded);
+		praat_addAction1 (classTextGrid, 1, U"Get points (followed)...", nullptr, 1, DO_TextGrid_getPoints_followed);
+praat_addAction1 (classTextGrid, 0, U"Synthesize", nullptr, 0, nullptr);
+	praat_addAction1 (classTextGrid, 0, U"Merge", nullptr, 0, DO_TextGrids_merge);
+	praat_addAction1 (classTextGrid, 0, U"Concatenate", nullptr, 0, DO_TextGrids_concatenate);
+
+	praat_addAction1 (classTextTier, 0, U"TextTier help", nullptr, 0, DO_TextTier_help);
+	praat_addAction1 (classTextTier, 0, U"Query -", nullptr, 0, nullptr);
 		praat_TimeTier_query_init (classTextTier);
-		praat_addAction1 (classTextTier, 0, U"Get label of point...", 0, 1, DO_TextTier_getLabelOfPoint);
-	praat_addAction1 (classTextTier, 0, U"Modify -", 0, 0, 0);
+		praat_addAction1 (classTextTier, 0, U"Get label of point...", nullptr, 1, DO_TextTier_getLabelOfPoint);
+	praat_addAction1 (classTextTier, 0, U"Modify -", nullptr, 0, nullptr);
 		praat_TimeTier_modify_init (classTextTier);
-		praat_addAction1 (classTextTier, 0, U"Add point...", 0, 1, DO_TextTier_addPoint);
-	praat_addAction1 (classTextTier, 0, U"Analyse", 0, 0, 0);
-	praat_addAction1 (classTextTier, 0, U"Get points...", 0, 0, DO_TextTier_getPoints);
-	praat_addAction1 (classTextTier, 0, U"Collect", 0, 0, 0);
-	praat_addAction1 (classTextTier, 0, U"Into TextGrid", 0, 0, DO_AnyTier_into_TextGrid);
-	praat_addAction1 (classTextTier, 0, U"Convert", 0, 0, 0);
-	praat_addAction1 (classTextTier, 0, U"Down to PointProcess", 0, 0, DO_TextTier_downto_PointProcess);
-	praat_addAction1 (classTextTier, 0, U"Down to TableOfReal (any)", 0, 0, DO_TextTier_downto_TableOfReal_any);
-	praat_addAction1 (classTextTier, 0, U"Down to TableOfReal...", 0, 0, DO_TextTier_downto_TableOfReal);
-
-	praat_addAction1 (classWordList, 0, U"Query", 0, 0, 0);
-		praat_addAction1 (classWordList, 1, U"Has word...", 0, 0, DO_WordList_hasWord);
-	praat_addAction1 (classWordList, 0, U"Analyze", 0, 0, 0);
-		praat_addAction1 (classWordList, 0, U"To Strings", 0, 0, DO_WordList_to_Strings);
-	praat_addAction1 (classWordList, 0, U"Synthesize", 0, 0, 0);
-		praat_addAction1 (classWordList, 0, U"Up to SpellingChecker", 0, 0, DO_WordList_upto_SpellingChecker);
-
-	praat_addAction2 (classIntervalTier, 1, classPointProcess, 1, U"Start to centre...", 0, 0, DO_IntervalTier_PointProcess_startToCentre);
-	praat_addAction2 (classIntervalTier, 1, classPointProcess, 1, U"End to centre...", 0, 0, DO_IntervalTier_PointProcess_endToCentre);
-	praat_addAction2 (classIntervalTier, 0, classTextTier, 0, U"Collect", 0, 0, 0);
-	praat_addAction2 (classIntervalTier, 0, classTextTier, 0, U"Into TextGrid", 0, 0, DO_AnyTier_into_TextGrid);
-	praat_addAction2 (classLabel, 1, classSound, 1, U"To TextGrid", 0, 0, DO_Label_Sound_to_TextGrid);
-	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_TextGrid_LongSound_edit);
-	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_LongSound_edit);   // hidden 2011
-	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"Scale times", 0, 0, DO_TextGrid_LongSound_scaleTimes);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw -", 0, 0, 0);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw...", 0, 1, DO_TextGrid_Pitch_draw);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw logarithmic...", 0, 1, DO_TextGrid_Pitch_drawLogarithmic);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw semitones...", 0, 1, DO_TextGrid_Pitch_drawSemitones);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw mel...", 0, 1, DO_TextGrid_Pitch_drawMel);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw erb...", 0, 1, DO_TextGrid_Pitch_drawErb);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle...", 0, 1, DO_TextGrid_Pitch_speckle);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle logarithmic...", 0, 1, DO_TextGrid_Pitch_speckleLogarithmic);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle semitones...", 0, 1, DO_TextGrid_Pitch_speckleSemitones);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle mel...", 0, 1, DO_TextGrid_Pitch_speckleMel);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle erb...", 0, 1, DO_TextGrid_Pitch_speckleErb);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"-- draw separately --", 0, 1, 0);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately...", 0, 1, DO_TextGrid_Pitch_drawSeparately);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (logarithmic)...", 0, 1, DO_TextGrid_Pitch_drawSeparatelyLogarithmic);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (semitones)...", 0, 1, DO_TextGrid_Pitch_drawSeparatelySemitones);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (mel)...", 0, 1, DO_TextGrid_Pitch_drawSeparatelyMel);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (erb)...", 0, 1, DO_TextGrid_Pitch_drawSeparatelyErb);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately...", 0, 1, DO_TextGrid_Pitch_speckleSeparately);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (logarithmic)...", 0, 1, DO_TextGrid_Pitch_speckleSeparatelyLogarithmic);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (semitones)...", 0, 1, DO_TextGrid_Pitch_speckleSeparatelySemitones);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (mel)...", 0, 1, DO_TextGrid_Pitch_speckleSeparatelyMel);
-	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (erb)...", 0, 1, DO_TextGrid_Pitch_speckleSeparatelyErb);
-	praat_addAction2 (classPitch, 1, classTextTier, 1, U"To PitchTier...", 0, 0, DO_Pitch_TextTier_to_PitchTier);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_TextGrid_edit);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"View & Edit with callback...", 0, praat_HIDDEN, DO_TextGrid_editWithCallback);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_edit);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Draw...", 0, 0, DO_TextGrid_Sound_draw);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract -", 0, 0, 0);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract all intervals...", 0, praat_DEPTH_1, DO_TextGrid_Sound_extractAllIntervals);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract non-empty intervals...", 0, praat_DEPTH_1, DO_TextGrid_Sound_extractNonemptyIntervals);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract intervals...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_TextGrid_Sound_extractIntervals);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract intervals where...", 0, praat_DEPTH_1, DO_TextGrid_Sound_extractIntervalsWhere);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Modify TextGrid", 0, 0, 0);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Scale times", 0, 0, DO_TextGrid_Sound_scaleTimes);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Modify Sound", 0, 0, 0);
-	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Clone time domain", 0, 0, DO_TextGrid_Sound_cloneTimeDomain);
-	praat_addAction2 (classSpellingChecker, 1, classWordList, 1, U"Replace WordList", 0, 0, DO_SpellingChecker_replaceWordList);
-	praat_addAction2 (classSpellingChecker, 1, classSortedSetOfString, 1, U"Replace user dictionary", 0, 0, DO_SpellingChecker_replaceUserDictionary);
-	praat_addAction2 (classSpellingChecker, 1, classStrings, 1, U"Replace word list?", 0, 0, DO_SpellingChecker_replaceWordList_help);
-	praat_addAction2 (classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_TextGrid_SpellingChecker_edit);
-	praat_addAction2 (classSpellingChecker, 1, classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_SpellingChecker_edit);   // hidden 2011
-	praat_addAction2 (classTextGrid, 1, classTextTier, 1, U"Append", 0, 0, DO_TextGrid_AnyTier_append);
-	praat_addAction2 (classTextGrid, 1, classIntervalTier, 1, U"Append", 0, 0, DO_TextGrid_AnyTier_append);
-
-	praat_addAction3 (classLongSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_TextGrid_LongSound_SpellingChecker_edit);
-	praat_addAction3 (classLongSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_LongSound_SpellingChecker_edit);
-	praat_addAction3 (classSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_TextGrid_SpellingChecker_edit);
-	praat_addAction3 (classSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"Edit", 0, praat_HIDDEN, DO_TextGrid_SpellingChecker_edit);
+		praat_addAction1 (classTextTier, 0, U"Add point...", nullptr, 1, DO_TextTier_addPoint);
+	praat_addAction1 (classTextTier, 0, U"Analyse", nullptr, 0, nullptr);
+	praat_addAction1 (classTextTier, 0, U"Get points...", nullptr, 0, DO_TextTier_getPoints);
+	praat_addAction1 (classTextTier, 0, U"Collect", nullptr, 0, nullptr);
+	praat_addAction1 (classTextTier, 0, U"Into TextGrid", nullptr, 0, DO_AnyTier_into_TextGrid);
+	praat_addAction1 (classTextTier, 0, U"Convert", nullptr, 0, nullptr);
+	praat_addAction1 (classTextTier, 0, U"Down to PointProcess", nullptr, 0, DO_TextTier_downto_PointProcess);
+	praat_addAction1 (classTextTier, 0, U"Down to TableOfReal (any)", nullptr, 0, DO_TextTier_downto_TableOfReal_any);
+	praat_addAction1 (classTextTier, 0, U"Down to TableOfReal...", nullptr, 0, DO_TextTier_downto_TableOfReal);
+
+	praat_addAction1 (classWordList, 0, U"Query", nullptr, 0, nullptr);
+		praat_addAction1 (classWordList, 1, U"Has word...", nullptr, 0, DO_WordList_hasWord);
+	praat_addAction1 (classWordList, 0, U"Analyze", nullptr, 0, nullptr);
+		praat_addAction1 (classWordList, 0, U"To Strings", nullptr, 0, DO_WordList_to_Strings);
+	praat_addAction1 (classWordList, 0, U"Synthesize", nullptr, 0, nullptr);
+		praat_addAction1 (classWordList, 0, U"Up to SpellingChecker", nullptr, 0, DO_WordList_upto_SpellingChecker);
+
+	praat_addAction2 (classIntervalTier, 1, classPointProcess, 1, U"Start to centre...", nullptr, 0, DO_IntervalTier_PointProcess_startToCentre);
+	praat_addAction2 (classIntervalTier, 1, classPointProcess, 1, U"End to centre...", nullptr, 0, DO_IntervalTier_PointProcess_endToCentre);
+	praat_addAction2 (classIntervalTier, 0, classTextTier, 0, U"Collect", nullptr, 0, nullptr);
+	praat_addAction2 (classIntervalTier, 0, classTextTier, 0, U"Into TextGrid", nullptr, 0, DO_AnyTier_into_TextGrid);
+	praat_addAction2 (classLabel, 1, classSound, 1, U"To TextGrid", nullptr, 0, DO_Label_Sound_to_TextGrid);
+	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_TextGrid_LongSound_edit);
+	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_LongSound_edit);   // hidden 2011
+	praat_addAction2 (classLongSound, 1, classTextGrid, 1, U"Scale times", nullptr, 0, DO_TextGrid_LongSound_scaleTimes);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw -", nullptr, 0, nullptr);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw...", nullptr, 1, DO_TextGrid_Pitch_draw);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw logarithmic...", nullptr, 1, DO_TextGrid_Pitch_drawLogarithmic);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw semitones...", nullptr, 1, DO_TextGrid_Pitch_drawSemitones);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw mel...", nullptr, 1, DO_TextGrid_Pitch_drawMel);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw erb...", nullptr, 1, DO_TextGrid_Pitch_drawErb);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle...", nullptr, 1, DO_TextGrid_Pitch_speckle);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle logarithmic...", nullptr, 1, DO_TextGrid_Pitch_speckleLogarithmic);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle semitones...", nullptr, 1, DO_TextGrid_Pitch_speckleSemitones);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle mel...", nullptr, 1, DO_TextGrid_Pitch_speckleMel);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle erb...", nullptr, 1, DO_TextGrid_Pitch_speckleErb);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"-- draw separately --", nullptr, 1, nullptr);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately...", nullptr, 1, DO_TextGrid_Pitch_drawSeparately);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (logarithmic)...", nullptr, 1, DO_TextGrid_Pitch_drawSeparatelyLogarithmic);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (semitones)...", nullptr, 1, DO_TextGrid_Pitch_drawSeparatelySemitones);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (mel)...", nullptr, 1, DO_TextGrid_Pitch_drawSeparatelyMel);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Draw separately (erb)...", nullptr, 1, DO_TextGrid_Pitch_drawSeparatelyErb);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately...", nullptr, 1, DO_TextGrid_Pitch_speckleSeparately);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (logarithmic)...", nullptr, 1, DO_TextGrid_Pitch_speckleSeparatelyLogarithmic);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (semitones)...", nullptr, 1, DO_TextGrid_Pitch_speckleSeparatelySemitones);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (mel)...", nullptr, 1, DO_TextGrid_Pitch_speckleSeparatelyMel);
+	praat_addAction2 (classPitch, 1, classTextGrid, 1, U"Speckle separately (erb)...", nullptr, 1, DO_TextGrid_Pitch_speckleSeparatelyErb);
+	praat_addAction2 (classPitch, 1, classTextTier, 1, U"To PitchTier...", nullptr, 0, DO_Pitch_TextTier_to_PitchTier);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_TextGrid_edit);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"View & Edit with callback...", nullptr, praat_HIDDEN, DO_TextGrid_editWithCallback);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_edit);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Draw...", nullptr, 0, DO_TextGrid_Sound_draw);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract -", nullptr, 0, nullptr);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract all intervals...", nullptr, praat_DEPTH_1, DO_TextGrid_Sound_extractAllIntervals);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract non-empty intervals...", nullptr, praat_DEPTH_1, DO_TextGrid_Sound_extractNonemptyIntervals);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract intervals...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_TextGrid_Sound_extractIntervals);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Extract intervals where...", nullptr, praat_DEPTH_1, DO_TextGrid_Sound_extractIntervalsWhere);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Modify TextGrid", nullptr, 0, nullptr);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Scale times", nullptr, 0, DO_TextGrid_Sound_scaleTimes);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Modify Sound", nullptr, 0, nullptr);
+	praat_addAction2 (classSound, 1, classTextGrid, 1, U"Clone time domain", nullptr, 0, DO_TextGrid_Sound_cloneTimeDomain);
+	praat_addAction2 (classSpellingChecker, 1, classWordList, 1, U"Replace WordList", nullptr, 0, DO_SpellingChecker_replaceWordList);
+	praat_addAction2 (classSpellingChecker, 1, classStringSet, 1, U"Replace user dictionary", nullptr, 0, DO_SpellingChecker_replaceUserDictionary);
+	praat_addAction2 (classSpellingChecker, 1, classStrings, 1, U"Replace word list?", nullptr, 0, DO_SpellingChecker_replaceWordList_help);
+	praat_addAction2 (classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_TextGrid_SpellingChecker_edit);
+	praat_addAction2 (classSpellingChecker, 1, classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_SpellingChecker_edit);   // hidden 2011
+	praat_addAction2 (classTextGrid, 1, classTextTier, 1, U"Append", nullptr, 0, DO_TextGrid_AnyTier_append);
+	praat_addAction2 (classTextGrid, 1, classIntervalTier, 1, U"Append", nullptr, 0, DO_TextGrid_AnyTier_append);
+
+	praat_addAction3 (classLongSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_TextGrid_LongSound_SpellingChecker_edit);
+	praat_addAction3 (classLongSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_LongSound_SpellingChecker_edit);
+	praat_addAction3 (classSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_TextGrid_SpellingChecker_edit);
+	praat_addAction3 (classSound, 1, classSpellingChecker, 1, classTextGrid, 1, U"Edit", nullptr, praat_HIDDEN, DO_TextGrid_SpellingChecker_edit);
 }
 
 /* End of file praat_TextGrid_init.cpp */
diff --git a/gram/Makefile b/gram/Makefile
index c977453..f2ea49e 100644
--- a/gram/Makefile
+++ b/gram/Makefile
@@ -1,5 +1,5 @@
 # Makefile of the library "gram"
-# Paul Boersma, 26 July 2014
+# Paul Boersma, 15 May 2016
 
 include ../makefile.defs
 
@@ -8,7 +8,7 @@ CPPFLAGS = -I ../num -I ../kar -I ../sys -I ../dwsys -I ../stat -I ../dwtools -I
 OBJECTS = Network.o \
    OTGrammar.o OTGrammarEditor.o manual_gram.o praat_gram.o OTMulti.o OTMultiEditor.o \
    OTGrammar_ex_metrics.o OTGrammar_ex_NoCoda.o OTGrammar_ex_NPA.o OTGrammar_ex_tongueRoot.o \
-   OTMulti_ex_metrics.o
+   OTMulti_ex_metrics.o RBM.o
 
 .PHONY: all clean
 
diff --git a/gram/Network.cpp b/gram/Network.cpp
index f599b23..6baca7f 100644
--- a/gram/Network.cpp
+++ b/gram/Network.cpp
@@ -1,20 +1,19 @@
 /* Network.cpp
  *
- * Copyright (C) 2009-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2009-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -56,7 +55,7 @@
 
 void structNetwork :: v_info ()
 {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Spreading rate: ", our spreadingRate);
 	MelderInfo_writeLine (U"Activity clipping rule: ", kNetwork_activityClippingRule_getText (our activityClippingRule));
 	MelderInfo_writeLine (U"Minimum activity: ", our minimumActivity);
@@ -70,7 +69,7 @@ void structNetwork :: v_info ()
 	MelderInfo_writeLine (U"Number of connections: ", our numberOfConnections);
 }
 
-Thing_implement (Network, Data, 6);
+Thing_implement (Network, Daata, 6);
 
 void Network_init (Network me, double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
@@ -98,17 +97,17 @@ void Network_init (Network me, double spreadingRate, enum kNetwork_activityClipp
 	my connections = NUMvector <structNetworkConnection> (1, numberOfConnections);
 }
 
-Network Network_create (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	double xmin, double xmax, double ymin, double ymax, long numberOfNodes, long numberOfConnections)
 {
 	try {
 		autoNetwork me = Thing_new (Network);
-		Network_init (me.peek(), spreadingRate, activityClippingRule, minimumActivity, maximumActivity, activityLeak,
+		Network_init (me.get(), spreadingRate, activityClippingRule, minimumActivity, maximumActivity, activityLeak,
 			learningRate, minimumWeight, maximumWeight, weightLeak,
 			xmin, xmax, ymin, ymax, numberOfNodes, numberOfConnections);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Network not created.");
 	}
@@ -277,7 +276,7 @@ void Network_normalizeWeights (Network me, long nodeMin, long nodeMax, long node
 	}
 }
 
-Network Network_create_rectangle (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create_rectangle (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	long numberOfRows, long numberOfColumns, bool bottomRowClamped,
@@ -321,13 +320,13 @@ Network Network_create_rectangle (double spreadingRate, enum kNetwork_activityCl
 			}
 		}
 		Melder_assert (iconn == my numberOfConnections);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Rectangular network not created.");
 	}
 }
 
-Network Network_create_rectangle_vertical (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create_rectangle_vertical (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	long numberOfRows, long numberOfColumns, bool bottomRowClamped,
@@ -364,7 +363,7 @@ Network Network_create_rectangle_vertical (double spreadingRate, enum kNetwork_a
 			}
 		}
 		Melder_assert (iconn == my numberOfConnections);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Vertical rectangular network not created.");
 	}
@@ -482,7 +481,7 @@ void Network_setActivityClippingRule (Network me, enum kNetwork_activityClipping
 	Network_zeroActivities (me, 0, 0);
 }
 
-Table Network_nodes_downto_Table (Network me, long fromNodeNumber, long toNodeNumber,
+autoTable Network_nodes_downto_Table (Network me, long fromNodeNumber, long toNodeNumber,
 	bool includeNodeNumbers,
 	bool includeX, bool includeY, int positionDecimals,
 	bool includeClamped,
@@ -498,23 +497,23 @@ Table Network_nodes_downto_Table (Network me, long fromNodeNumber, long toNodeNu
 		autoTable thee = Table_createWithoutColumnNames (numberOfNodes,
 			includeNodeNumbers + includeX + includeY + includeClamped + includeActivity + includeExcitation);
 		long icol = 0;
-		if (includeNodeNumbers) Table_setColumnLabel (thee.peek(), ++ icol, U"node");
-		if (includeX)           Table_setColumnLabel (thee.peek(), ++ icol, U"x");
-		if (includeY)           Table_setColumnLabel (thee.peek(), ++ icol, U"y");
-		if (includeClamped)     Table_setColumnLabel (thee.peek(), ++ icol, U"clamped");
-		if (includeActivity)    Table_setColumnLabel (thee.peek(), ++ icol, U"activity");
-		if (includeExcitation)  Table_setColumnLabel (thee.peek(), ++ icol, U"excitation");
+		if (includeNodeNumbers) Table_setColumnLabel (thee.get(), ++ icol, U"node");
+		if (includeX)           Table_setColumnLabel (thee.get(), ++ icol, U"x");
+		if (includeY)           Table_setColumnLabel (thee.get(), ++ icol, U"y");
+		if (includeClamped)     Table_setColumnLabel (thee.get(), ++ icol, U"clamped");
+		if (includeActivity)    Table_setColumnLabel (thee.get(), ++ icol, U"activity");
+		if (includeExcitation)  Table_setColumnLabel (thee.get(), ++ icol, U"excitation");
 		for (long inode = fromNodeNumber; inode <= toNodeNumber; inode ++) {
 			NetworkNode node = & my nodes [inode];
 			icol = 0;
-			if (includeNodeNumbers) Table_setNumericValue (thee.peek(), inode, ++ icol, inode);
-			if (includeX)           Table_setStringValue  (thee.peek(), inode, ++ icol, Melder_fixed (node -> x, positionDecimals));
-			if (includeY)           Table_setStringValue  (thee.peek(), inode, ++ icol, Melder_fixed (node -> y, positionDecimals));
-			if (includeClamped)     Table_setNumericValue (thee.peek(), inode, ++ icol, node -> clamped);
-			if (includeActivity)    Table_setStringValue  (thee.peek(), inode, ++ icol, Melder_fixed (node -> activity,   activityDecimals));
-			if (includeExcitation)  Table_setStringValue  (thee.peek(), inode, ++ icol, Melder_fixed (node -> excitation, activityDecimals));
+			if (includeNodeNumbers) Table_setNumericValue (thee.get(), inode, ++ icol, inode);
+			if (includeX)           Table_setStringValue  (thee.get(), inode, ++ icol, Melder_fixed (node -> x, positionDecimals));
+			if (includeY)           Table_setStringValue  (thee.get(), inode, ++ icol, Melder_fixed (node -> y, positionDecimals));
+			if (includeClamped)     Table_setNumericValue (thee.get(), inode, ++ icol, node -> clamped);
+			if (includeActivity)    Table_setStringValue  (thee.get(), inode, ++ icol, Melder_fixed (node -> activity,   activityDecimals));
+			if (includeExcitation)  Table_setStringValue  (thee.get(), inode, ++ icol, Melder_fixed (node -> excitation, activityDecimals));
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
@@ -529,7 +528,7 @@ void Network_listNodes (Network me, long fromNodeNumber, long toNodeNumber,
 	try {
 		autoTable table = Network_nodes_downto_Table (me, fromNodeNumber, toNodeNumber, includeNodeNumbers,
 			includeX, includeY, positionDecimals, includeClamped, includeActivity, includeExcitation, activityDecimals);
-		Table_list (table.peek(), false);
+		Table_list (table.get(), false);
 	} catch (MelderError) {
 		Melder_throw (me, U": not listed.");
 	}
diff --git a/gram/Network.h b/gram/Network.h
index 0e18e7f..7215ac1 100644
--- a/gram/Network.h
+++ b/gram/Network.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2009-2012,2013,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Table.h"
@@ -24,7 +23,6 @@
 #include "Network_enums.h"
 
 #include "Network_def.h"
-oo_CLASS_CREATE (Network, Data);
 
 void Network_init (Network me,
 	double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
@@ -32,18 +30,18 @@ void Network_init (Network me,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	double xmin, double xmax, double ymin, double ymax, long numberOfNodes, long numberOfConnections);
 
-Network Network_create (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	double xmin, double xmax, double ymin, double ymax, long numberOfNodes, long numberOfConnections);
 
-Network Network_create_rectangle (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create_rectangle (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	long numberOfRows, long numberOfColumns, bool bottomRowClamped,
 	double initialMinimumWeight, double initialMaximumWeight);
 
-Network Network_create_rectangle_vertical (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
+autoNetwork Network_create_rectangle_vertical (double spreadingRate, enum kNetwork_activityClippingRule activityClippingRule,
 	double minimumActivity, double maximumActivity, double activityLeak,
 	double learningRate, double minimumWeight, double maximumWeight, double weightLeak,
 	long numberOfRows, long numberOfColumns, bool bottomRowClamped,
@@ -68,7 +66,7 @@ void Network_setWeightLeak (Network me, double weightLeak);
 void Network_setActivityLeak (Network me, double activityLeak);
 void Network_setShunting (Network me, double shunting);
 void Network_setActivityClippingRule (Network me, enum kNetwork_activityClippingRule activityClippingRule);
-Table Network_nodes_downto_Table (Network me, long fromNodeNumber, long toNodeNumber,
+autoTable Network_nodes_downto_Table (Network me, long fromNodeNumber, long toNodeNumber,
 	bool includeNodeNumbers,
 	bool includeX, bool includeY, int positionDecimals,
 	bool includeClamped,
diff --git a/gram/Network_def.h b/gram/Network_def.h
index 4231a27..d7c6daa 100644
--- a/gram/Network_def.h
+++ b/gram/Network_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2009-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -25,6 +24,7 @@ oo_DEFINE_STRUCT (NetworkNode)
 	oo_DOUBLE (y)
 	oo_BOOLEAN (clamped)
 	oo_DOUBLE (activity)
+
 	#if ! oo_READING && ! oo_WRITING
 		oo_DOUBLE (excitation)
 	#endif
@@ -42,6 +42,7 @@ oo_DEFINE_STRUCT (NetworkConnection)
 	oo_FROM (1)
 		oo_DOUBLE (plasticity)
 	oo_ENDFROM
+
 	#if oo_READING
 		if (formatVersion < 1) {
 			plasticity = 1.0;
@@ -53,7 +54,7 @@ oo_END_STRUCT (NetworkConnection)
 
 
 #define ooSTRUCT Network
-oo_DEFINE_CLASS (Network, Data)
+oo_DEFINE_CLASS (Network, Daata)
 
 	oo_DOUBLE (minimumActivity)
 	oo_DOUBLE (maximumActivity)
@@ -77,6 +78,7 @@ oo_DEFINE_CLASS (Network, Data)
 		oo_DOUBLE (outstar)
 	oo_ENDFROM
 	oo_DOUBLE (weightLeak)
+
 	#if oo_READING
 		if (formatVersion < 6) {
 			if (formatVersion < 5) {
@@ -88,6 +90,7 @@ oo_DEFINE_CLASS (Network, Data)
 			our activityLeak = - our activityLeak;   // convert self-excitation to activity leak
 		}
 	#endif
+
 	oo_DOUBLE (xmin)
 	oo_DOUBLE (xmax)
 	oo_DOUBLE (ymin)
diff --git a/gram/Network_enums.h b/gram/Network_enums.h
index 41e36c5..e25ebb7 100644
--- a/gram/Network_enums.h
+++ b/gram/Network_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kNetwork_activityClippingRule, 0)
diff --git a/gram/OTGrammar.cpp b/gram/OTGrammar.cpp
index 7223194..8f92aaf 100644
--- a/gram/OTGrammar.cpp
+++ b/gram/OTGrammar.cpp
@@ -1,20 +1,19 @@
 /* OTGrammar.cpp
  *
- * Copyright (C) 1997-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -98,7 +97,7 @@
 
 void structOTGrammar :: v_info ()
 {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	long numberOfCandidates = 0, numberOfViolations = 0;
 	for (long itab = 1; itab <= numberOfTableaus; itab ++) {
 		numberOfCandidates += tableaus [itab]. numberOfCandidates;
@@ -264,8 +263,8 @@ void structOTGrammar :: v_readText (MelderReadText text, int formatVersion) {
 			 U" (input: ", tableau -> input, U")"
 			 U" in line ", MelderReadText_getLineNumber (text),
 			 itab == 1 ? U"." : U", or perhaps wrong number of candidates for input " U_LEFT_GUILLEMET,
-			 itab == 1 ? NULL : tableaus [itab - 1]. input,
-			 itab == 1 ? NULL : U_RIGHT_GUILLEMET U".");
+			 itab == 1 ? nullptr : tableaus [itab - 1]. input,
+			 itab == 1 ? nullptr : U_RIGHT_GUILLEMET U".");
 		tableau -> candidates = NUMvector <structOTGrammarCandidate> (1, tableau -> numberOfCandidates);
 		for (long icand = 1; icand <= tableau -> numberOfCandidates; icand ++) {
 			OTGrammarCandidate candidate = & tableau -> candidates [icand];
@@ -296,7 +295,7 @@ void structOTGrammar :: v_readText (MelderReadText text, int formatVersion) {
 	OTGrammar_checkIndex (this);
 }
 
-Thing_implement (OTGrammar, Data, 2);
+Thing_implement (OTGrammar, Daata, 2);
 
 Thing_implement (OTHistory, TableOfReal, 0);
 
@@ -584,8 +583,8 @@ void OTGrammar_getInterpretiveParse (OTGrammar me, const char32 *partialOutput,
 			}
 		}
 		if (itab_best == 0) Melder_throw (U"The partial output \"", partialOutput, U"\" does not match any candidate for any input form.");
-		if (bestTableau != NULL) *bestTableau = itab_best;
-		if (bestCandidate != NULL) *bestCandidate = icand_best;
+		if (bestTableau) *bestTableau = itab_best;
+		if (bestCandidate) *bestCandidate = icand_best;
 	} catch (MelderError) {
 		Melder_throw (U"Interpretive parse not computed.");
 	}
@@ -598,7 +597,7 @@ static void OTGrammar_getInterpretiveParse_opt (OTGrammar me, long ipartialOutpu
 			OTGrammarTableau tableau = & my tableaus [itab];
 			for (long icand = 1; icand <= tableau -> numberOfCandidates; icand ++) {
 				OTGrammarCandidate cand = & tableau -> candidates [icand];
-				Melder_assert (cand -> partialOutputMatches != NULL);
+				Melder_assert (cand -> partialOutputMatches);
 				if (cand -> partialOutputMatches [ipartialOutput]) {   // T&S' idea of surface->overt mapping
 					if (itab_best == 0) {
 						itab_best = itab;   // the first compatible input/output pair found is the first guess for the best candidate
@@ -631,8 +630,8 @@ static void OTGrammar_getInterpretiveParse_opt (OTGrammar me, long ipartialOutpu
 			}
 		}
 		Melder_assert (itab_best != 0);
-		if (bestTableau != NULL) *bestTableau = itab_best;
-		if (bestCandidate != NULL) *bestCandidate = icand_best;
+		if (bestTableau) *bestTableau = itab_best;
+		if (bestCandidate) *bestCandidate = icand_best;
 	} catch (MelderError) {
 		Melder_throw (U"Interpretive parse not computed.");
 	}
@@ -675,8 +674,8 @@ bool OTGrammar_isPartialOutputSinglyGrammatical (OTGrammar me, const char32 *par
 					 */
 					for (long jcand = 1; jcand <= tableau -> numberOfCandidates; jcand ++) {
 						if (OTGrammar_compareCandidates (me, itab, jcand, itab, icand) == 0) {
-							if (str32str (tableau -> candidates [jcand]. output, partialOutput) == NULL) {
-								return false;   // Partial output is multiply optimal.
+							if (! str32str (tableau -> candidates [jcand]. output, partialOutput)) {
+								return false;   // partial output is multiply optimal
 							}
 						}
 					}
@@ -966,7 +965,7 @@ void OTGrammar_drawTableau (OTGrammar me, Graphics g, bool vertical, const char3
 				if (my decisionStrategy == kOTGrammar_decisionStrategy_EXPONENTIAL_HG ||
 					my decisionStrategy == kOTGrammar_decisionStrategy_EXPONENTIAL_MAXIMUM_ENTROPY)
 				{
-					//value = value > -1e-300 ? 1000 : value < -1e300 ? -1000 : - log (- value);
+					//value = value > 1e-308 ? 1000 : value < -1e308 ? -1000 : - log (- value);
 					Graphics_text (g, x, y + descent, Melder_float (Melder_half (value)));
 				} else {
 					Graphics_text (g, x, y + descent, Melder_fixed (value, 3));
@@ -985,7 +984,7 @@ void OTGrammar_drawTableau (OTGrammar me, Graphics g, bool vertical, const char3
 	}
 }
 
-Strings OTGrammar_generateInputs (OTGrammar me, long numberOfTrials) {
+autoStrings OTGrammar_generateInputs (OTGrammar me, long numberOfTrials) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector <char32 *> (1, thy numberOfStrings = numberOfTrials);
@@ -993,20 +992,20 @@ Strings OTGrammar_generateInputs (OTGrammar me, long numberOfTrials) {
 			long itab = NUMrandomInteger (1, my numberOfTableaus);
 			thy strings [i] = Melder_dup (my tableaus [itab]. input);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": inputs not generated.");
 	}
 }
 
-Strings OTGrammar_getInputs (OTGrammar me) {
+autoStrings OTGrammar_getInputs (OTGrammar me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector <char32 *> (1, thy numberOfStrings = my numberOfTableaus);
 		for (long i = 1; i <= my numberOfTableaus; i ++) {
 			thy strings [i] = Melder_dup (my tableaus [i]. input);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": inputs not gotten.");
 	}
@@ -1025,7 +1024,7 @@ void OTGrammar_inputToOutput (OTGrammar me, const char32 *input, char32 *output,
 	}
 }
 
-Strings OTGrammar_inputsToOutputs (OTGrammar me, Strings inputs, double evaluationNoise) {
+autoStrings OTGrammar_inputsToOutputs (OTGrammar me, Strings inputs, double evaluationNoise) {
 	try {
 		autoStrings him = Thing_new (Strings);
 		long n = inputs -> numberOfStrings;
@@ -1036,13 +1035,13 @@ Strings OTGrammar_inputsToOutputs (OTGrammar me, Strings inputs, double evaluati
 			OTGrammar_inputToOutput (me, inputs -> strings [i], output, evaluationNoise);
 			his strings [i] = Melder_dup (output);
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U": outputs not computed.");
 	}
 }
 
-Strings OTGrammar_inputToOutputs (OTGrammar me, const char32 *input, long n, double evaluationNoise) {
+autoStrings OTGrammar_inputToOutputs (OTGrammar me, const char32 *input, long n, double evaluationNoise) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy numberOfStrings = n;
@@ -1052,13 +1051,13 @@ Strings OTGrammar_inputToOutputs (OTGrammar me, const char32 *input, long n, dou
 			OTGrammar_inputToOutput (me, input, output, evaluationNoise);
 			thy strings [i] = Melder_dup (output);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": output not computed.");
 	}
 }
 
-Distributions OTGrammar_to_Distribution (OTGrammar me, long trialsPerInput, double noise) {
+autoDistributions OTGrammar_to_Distribution (OTGrammar me, long trialsPerInput, double noise) {
 	try {
 		long totalNumberOfOutputs = 0, nout = 0;
 		/*
@@ -1096,13 +1095,13 @@ Distributions OTGrammar_to_Distribution (OTGrammar me, long trialsPerInput, doub
 			 */
 			nout += tableau -> numberOfCandidates;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": output distribution not computed.");
 	}
 }
 
-PairDistribution OTGrammar_to_PairDistribution (OTGrammar me, long trialsPerInput, double noise) {
+autoPairDistribution OTGrammar_to_PairDistribution (OTGrammar me, long trialsPerInput, double noise) {
 	try {
 		long totalNumberOfOutputs = 0, nout = 0;
 		/*
@@ -1125,23 +1124,22 @@ PairDistribution OTGrammar_to_PairDistribution (OTGrammar me, long trialsPerInpu
 			 * Copy the input and output strings to the target object.
 			 */
 			for (long icand = 1; icand <= tableau -> numberOfCandidates; icand ++) {
-				PairDistribution_add (thee.peek(), tableau -> input, tableau -> candidates [icand]. output, 0);
+				PairDistribution_add (thee.get(), tableau -> input, tableau -> candidates [icand]. output, 0.0);
 			}
 			/*
 			 * Compute a number of outputs and store the results.
 			 */
-			PairProbability *p = (PairProbability *) thy pairs -> item;   // may have changed after PairDistribution_add !!!
 			for (long itrial = 1; itrial <= trialsPerInput; itrial ++) {
 				OTGrammar_newDisharmonies (me, noise);
 				long iwinner = OTGrammar_getWinner (me, itab);
-				p [nout + iwinner] -> weight += 1;
+				thy pairs.at [nout + iwinner] -> weight += 1.0;
 			}
 			/*
 			 * Update the offset.
 			 */
 			nout += tableau -> numberOfCandidates;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": output distribution not computed.");
 	}
@@ -1158,7 +1156,7 @@ static bool honoursFixedRankings (OTGrammar me) {
 	return true;
 }
 
-Distributions OTGrammar_measureTypology (OTGrammar me) {
+autoDistributions OTGrammar_measureTypology (OTGrammar me) {
 	try {
 		long totalNumberOfOutputs = 0, nout = 0, ncons = my numberOfConstraints, nperm, factorial [1+12];
 		if (ncons > 12)
@@ -1219,7 +1217,7 @@ Distributions OTGrammar_measureTypology (OTGrammar me) {
 			 */
 			nout += tableau -> numberOfCandidates;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": typology not measured.");
 	}
@@ -1229,17 +1227,17 @@ static double learningStep (double mean, double relativeSpreading) {
 	return relativeSpreading == 0.0 ? mean : NUMrandomGauss (mean, relativeSpreading * mean);
 }
 
-static void OTGrammar_honourLocalRankings (OTGrammar me, double plasticity, double relativePlasticityNoise, int *grammarHasChanged) {
-	int improved;
+static void OTGrammar_honourLocalRankings (OTGrammar me, double plasticity, double relativePlasticityNoise, bool *grammarHasChanged) {
+	bool improved;
 	do {
-		improved = FALSE;
+		improved = false;
 		for (long irank = 1; irank <= my numberOfFixedRankings; irank ++) {
 			OTGrammarFixedRanking fixedRanking = & my fixedRankings [irank];
 			OTGrammarConstraint higher = & my constraints [fixedRanking -> higher], lower = & my constraints [fixedRanking -> lower];
 			while (higher -> ranking <= lower -> ranking) {
 				lower -> ranking -= learningStep (plasticity, relativePlasticityNoise);
-				if (grammarHasChanged != NULL) *grammarHasChanged = TRUE;
-				improved = TRUE;
+				if (grammarHasChanged) *grammarHasChanged = true;
+				improved = true;
 			}
 		}
 	} while (improved);
@@ -1247,7 +1245,7 @@ static void OTGrammar_honourLocalRankings (OTGrammar me, double plasticity, doub
 
 static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, long iadult,
 	int updateRule, int honourLocalRankings,
-	double plasticity, double relativePlasticityNoise, int warnIfStalled, int *grammarHasChanged)
+	double plasticity, double relativePlasticityNoise, int warnIfStalled, bool *grammarHasChanged)
 {
 	try {
 		OTGrammarTableau tableau = & my tableaus [itab];
@@ -1276,12 +1274,12 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 			if (adultMarks > winnerMarks) {
 				if (multiplyStepByNumberOfViolations) constraintStep *= adultMarks - winnerMarks;
 				constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak);
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 			if (winnerMarks > adultMarks) {
 				if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 				constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak);
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_SYMMETRIC_ALL) {
 			bool changed = false;
@@ -1312,7 +1310,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					my constraints [icons]. ranking -= averageWeight;
 				}
 			}
-			if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+			if (grammarHasChanged) *grammarHasChanged = changed;
 		} else if (updateRule == kOTGrammar_rerankingStrategy_SYMMETRIC_ALL_SKIPPABLE) {
 			bool changed = false;
 			int winningConstraints = 0, adultConstraints = 0;
@@ -1349,7 +1347,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					my constraints [icons]. ranking -= averageWeight;
 				}
 			}
-			if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+			if (grammarHasChanged) *grammarHasChanged = changed;
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_UNCANCELLED) {
 			int winningConstraints = 0, adultConstraints = 0;
 			for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -1367,13 +1365,13 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					if (multiplyStepByNumberOfViolations) constraintStep *= adultMarks - winnerMarks;
 					constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) / adultConstraints;
 					//constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) * winningConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 				if (winnerMarks > adultMarks) {
 					if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 					constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / winningConstraints;
 					//constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) * adultConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL) {
@@ -1392,12 +1390,12 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 				if (adultMarks > 0) {
 					if (multiplyStepByNumberOfViolations) constraintStep *= adultMarks /*- winnerMarks*/;
 					constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) / adultConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 				if (winnerMarks > 0) {
 					if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks /*- adultMarks*/;
 					constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / winningConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_EDCD || updateRule == kOTGrammar_rerankingStrategy_EDCD_WITH_VACATION) {
@@ -1440,7 +1438,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 						OTGrammarConstraint constraint = & my constraints [icons];
 						if (constraint -> ranking < pivotRanking) {
 							constraint -> ranking -= numberOfConstraintsToDemote * step * constraint -> plasticity;
-							if (grammarHasChanged != NULL) *grammarHasChanged = true;
+							if (grammarHasChanged) *grammarHasChanged = true;
 						}
 					}
 				}
@@ -1459,7 +1457,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					if (constraint -> ranking >= pivotRanking) {
 						numberOfConstraintsDemoted += 1;
 						constraint -> ranking = pivotRanking - numberOfConstraintsDemoted * constraintStep;   // this preserves the order of the demotees
-						if (grammarHasChanged != NULL) *grammarHasChanged = true;
+						if (grammarHasChanged) *grammarHasChanged = true;
 					}
 				}
 			}
@@ -1488,7 +1486,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 			offendingConstraint = & my constraints [my index [crucialAdultMark]];
 			double constraintStep = step * offendingConstraint -> plasticity;
 			offendingConstraint -> ranking -= constraintStep;
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGHEST_DOWN) {
 			long numberOfUp = 0;
 			for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -1507,7 +1505,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					if (winnerMarks > adultMarks) {
 						if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 						constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / numberOfUp;
-						if (grammarHasChanged != NULL) *grammarHasChanged = true;
+						if (grammarHasChanged) *grammarHasChanged = true;
 					}
 				}
 				long crucialAdultMark, winnerMarks = 0, adultMarks = 0;
@@ -1532,7 +1530,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 				double constraintStep = step * offendingConstraint -> plasticity;
 				if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 				offendingConstraint -> ranking -= /*numberOfUp **/ constraintStep * (1.0 - offendingConstraint -> ranking * my leak);
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGHEST_DOWN_2012) {
 			long numberOfUp = 0;
@@ -1552,7 +1550,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 					if (winnerMarks > adultMarks) {
 						if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 						constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / (numberOfUp + 1);
-						if (grammarHasChanged != NULL) *grammarHasChanged = true;
+						if (grammarHasChanged) *grammarHasChanged = true;
 					}
 				}
 				long crucialAdultMark, winnerMarks = 0, adultMarks = 0;
@@ -1577,7 +1575,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 				double constraintStep = step * offendingConstraint -> plasticity;
 				if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - adultMarks;
 				offendingConstraint -> ranking -= /*numberOfUp **/ constraintStep * (1.0 - offendingConstraint -> ranking * my leak);
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGH_DOWN) {
 			long numberOfDown = 0, numberOfUp = 0, lowestDemotableConstraint = 0;
@@ -1617,7 +1615,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 						}
 					}
 				}
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGH_DOWN_2012) {
 			long numberOfDown = 0, numberOfUp = 0, lowestDemotableConstraint = 0;
@@ -1657,7 +1655,7 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 						}
 					}
 				}
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		}
 		if (honourLocalRankings && my numberOfFixedRankings) {
@@ -1669,12 +1667,12 @@ static void OTGrammar_modifyRankings (OTGrammar me, long itab, long iwinner, lon
 }
 
 void OTGrammar_learnOne (OTGrammar me, const char32 *input, const char32 *adultOutput,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double plasticity, double relativePlasticityNoise, int newDisharmonies, int warnIfStalled, int *grammarHasChanged)
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double plasticity, double relativePlasticityNoise, bool newDisharmonies, bool warnIfStalled, bool *grammarHasChanged)
 {
 	try {
 		if (newDisharmonies) OTGrammar_newDisharmonies (me, evaluationNoise);
-		if (grammarHasChanged != NULL) *grammarHasChanged = FALSE;
+		if (grammarHasChanged) *grammarHasChanged = false;
 
 		/*
 		 * Evaluate the input in the learner's hypothesis.
@@ -1718,7 +1716,7 @@ void OTGrammar_learnOne (OTGrammar me, const char32 *input, const char32 *adultO
 }
 
 void OTGrammar_learn (OTGrammar me, Strings inputs, Strings outputs,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double plasticity, double relativePlasticityNoise, long numberOfChews)
 {
 	if (! inputs) inputs = outputs;
@@ -1730,7 +1728,7 @@ void OTGrammar_learn (OTGrammar me, Strings inputs, Strings outputs,
 			for (long ichew = 1; ichew <= numberOfChews; ichew ++) {
 				OTGrammar_learnOne (me, inputs -> strings [i], outputs -> strings [i],
 					evaluationNoise, updateRule, honourLocalRankings,
-					plasticity, relativePlasticityNoise, TRUE, TRUE, NULL);
+					plasticity, relativePlasticityNoise, true, true, nullptr);
 			}
 		}
 	} catch (MelderError) {
@@ -1739,7 +1737,7 @@ void OTGrammar_learn (OTGrammar me, Strings inputs, Strings outputs,
 }
 
 void OTGrammar_PairDistribution_learn (OTGrammar me, PairDistribution thee,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
 	long numberOfPlasticities, double relativePlasticityNoise, long numberOfChews)
 {
@@ -1756,13 +1754,14 @@ void OTGrammar_PairDistribution_learn (OTGrammar me, PairDistribution thee,
 				PairDistribution_peekPair (thee, & input, & output);
 				++ idatum;
 				if (monitor.graphics() && idatum % (numberOfData / 400 + 1) == 0) {
+					Graphics_beginMovieFrame (monitor.graphics(), nullptr);
 					Graphics_setWindow (monitor.graphics(), 0, numberOfData, 50, 150);
 					for (long icons = 1; icons <= 14 && icons <= my numberOfConstraints; icons ++) {
 						Graphics_setGrey (monitor.graphics(), (double) icons / 14);
 						Graphics_line (monitor.graphics(), idatum, my constraints [icons]. ranking,
 							idatum, my constraints [icons]. ranking+1);
 					}
-					Graphics_flushWs (monitor.graphics());   // because drawing is faster than progress loop
+					Graphics_endMovieFrame (monitor.graphics(), 0.0);
 				}
 				Melder_monitor ((double) idatum / numberOfData,
 					U"Processing input-output pair ", idatum,
@@ -1770,7 +1769,7 @@ void OTGrammar_PairDistribution_learn (OTGrammar me, PairDistribution thee,
 				for (long ichew = 1; ichew <= numberOfChews; ichew ++) {
 					OTGrammar_learnOne (me, input, output,
 						evaluationNoise, updateRule, honourLocalRankings,
-						plasticity, relativePlasticityNoise, TRUE, TRUE, NULL);
+						plasticity, relativePlasticityNoise, true, true, nullptr);
 				}
 			}
 			plasticity *= plasticityDecrement;
@@ -1784,10 +1783,10 @@ void OTGrammar_PairDistribution_learn (OTGrammar me, PairDistribution thee,
 
 static long PairDistribution_getNumberOfAttestedOutputs (PairDistribution me, const char32 *input, char32 **attestedOutput) {
 	long result = 0;
-	for (long ipair = 1; ipair <= my pairs -> size; ipair ++) {
-		PairProbability pair = (PairProbability) my pairs -> item [ipair];
+	for (long ipair = 1; ipair <= my pairs.size; ipair ++) {
+		PairProbability pair = my pairs.at [ipair];
 		if (str32equ (pair -> string1, input) && pair -> weight > 0.0) {
-			if (attestedOutput != NULL) *attestedOutput = pair -> string2;
+			if (attestedOutput) *attestedOutput = pair -> string2;
 			result ++;
 		}
 	}
@@ -1795,7 +1794,7 @@ static long PairDistribution_getNumberOfAttestedOutputs (PairDistribution me, co
 }
 
 bool OTGrammar_PairDistribution_findPositiveWeights_e (OTGrammar me, PairDistribution thee, double weightFloor, double marginOfSeparation) {
-	NUMlinprog linprog = NULL;
+	NUMlinprog linprog = nullptr;
 	try {
 		bool result = false;
 		if (my decisionStrategy != kOTGrammar_decisionStrategy_HARMONIC_GRAMMAR &&
@@ -1811,14 +1810,14 @@ bool OTGrammar_PairDistribution_findPositiveWeights_e (OTGrammar me, PairDistrib
 		 */
 		for (long itab = 1; itab <= my numberOfTableaus; itab ++) {
 			OTGrammarTableau tab = & my tableaus [itab];
-			char32 *attestedOutput = NULL;
+			char32 *attestedOutput = nullptr;
 			long numberOfAttestedOutputs = PairDistribution_getNumberOfAttestedOutputs (thee, tab -> input, & attestedOutput);
 			if (numberOfAttestedOutputs == 0) {
 				Melder_throw (U"Input \"", my tableaus [itab]. input, U"\" has no attested output.");
 			} else if (numberOfAttestedOutputs > 1) {
 				Melder_throw (U"Input \"", my tableaus [itab]. input, U"\" has more than one attested output.");
 			} else {
-				Melder_assert (attestedOutput != NULL);
+				Melder_assert (attestedOutput);
 				for (long icand = 1; icand <= tab -> numberOfCandidates; icand ++) {
 					OTGrammarCandidate cand = & tab -> candidates [icand];
 					if (str32equ (attestedOutput, cand -> output)) {
@@ -1926,18 +1925,18 @@ double *theSaveRankings, *theSaveDisharmonies;
 int *theSaveTiedToTheLeft, *theSaveTiedToTheRight;
 static void OTGrammar_save (OTGrammar me) {
 	if (my numberOfConstraints != theSaveNumberOfConstraints) {
-		NUMvector_free (theSaveIndex, 1); theSaveIndex = NULL;
-		NUMvector_free (theSaveRankings, 1); theSaveRankings = NULL;
-		NUMvector_free (theSaveDisharmonies, 1); theSaveDisharmonies = NULL;
-		NUMvector_free (theSaveTiedToTheLeft, 1); theSaveTiedToTheLeft = NULL;
-		NUMvector_free (theSaveTiedToTheRight, 1); theSaveTiedToTheRight = NULL;
+		NUMvector_free (theSaveIndex, 1); theSaveIndex = nullptr;
+		NUMvector_free (theSaveRankings, 1); theSaveRankings = nullptr;
+		NUMvector_free (theSaveDisharmonies, 1); theSaveDisharmonies = nullptr;
+		NUMvector_free (theSaveTiedToTheLeft, 1); theSaveTiedToTheLeft = nullptr;
+		NUMvector_free (theSaveTiedToTheRight, 1); theSaveTiedToTheRight = nullptr;
 		theSaveNumberOfConstraints = my numberOfConstraints;
 	}
-	if (theSaveIndex == NULL) theSaveIndex = NUMvector <long> (1, my numberOfConstraints);
-	if (theSaveRankings == NULL) theSaveRankings = NUMvector <double> (1, my numberOfConstraints);
-	if (theSaveDisharmonies == NULL) theSaveDisharmonies = NUMvector <double> (1, my numberOfConstraints);
-	if (theSaveTiedToTheLeft == NULL) theSaveTiedToTheLeft = NUMvector <int> (1, my numberOfConstraints);
-	if (theSaveTiedToTheRight == NULL) theSaveTiedToTheRight = NUMvector <int> (1, my numberOfConstraints);
+	if (! theSaveIndex) theSaveIndex = NUMvector <long> (1, my numberOfConstraints);
+	if (! theSaveRankings) theSaveRankings = NUMvector <double> (1, my numberOfConstraints);
+	if (! theSaveDisharmonies) theSaveDisharmonies = NUMvector <double> (1, my numberOfConstraints);
+	if (! theSaveTiedToTheLeft) theSaveTiedToTheLeft = NUMvector <int> (1, my numberOfConstraints);
+	if (! theSaveTiedToTheRight) theSaveTiedToTheRight = NUMvector <int> (1, my numberOfConstraints);
 	for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
 		theSaveIndex [icons] = my index [icons];
 		theSaveRankings [icons] = my constraints [icons]. ranking;
@@ -1957,8 +1956,8 @@ static void OTGrammar_restore (OTGrammar me) {
 }
 
 void OTGrammar_learnOneFromPartialOutput (OTGrammar me, const char32 *partialAdultOutput,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double plasticity, double relativePlasticityNoise, long numberOfChews, int warnIfStalled)
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double plasticity, double relativePlasticityNoise, long numberOfChews, bool warnIfStalled)
 {
 	try {
 		OTGrammar_newDisharmonies (me, evaluationNoise);
@@ -1969,7 +1968,7 @@ void OTGrammar_learnOneFromPartialOutput (OTGrammar me, const char32 *partialAdu
 		for (; ichew <= numberOfChews; ichew ++) {
 			long assumedAdultInputTableau, assumedAdultCandidate;
 			OTGrammar_getInterpretiveParse (me, partialAdultOutput, & assumedAdultInputTableau, & assumedAdultCandidate);
-			int grammarHasChanged;
+			bool grammarHasChanged = false;
 			OTGrammar_learnOne (me,
 				my tableaus [assumedAdultInputTableau]. input,
 				my tableaus [assumedAdultInputTableau]. candidates [assumedAdultCandidate]. output,
@@ -1999,8 +1998,8 @@ void OTGrammar_learnOneFromPartialOutput (OTGrammar me, const char32 *partialAdu
 }
 
 static void OTGrammar_learnOneFromPartialOutput_opt (OTGrammar me, const char32 *partialAdultOutput, long ipartialAdultOutput,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double plasticity, double relativePlasticityNoise, long numberOfChews, int warnIfStalled,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double plasticity, double relativePlasticityNoise, long numberOfChews, bool warnIfStalled,
 	bool resampleForVirtualProduction, bool compareOnlyPartialOutput, long resampleForCorrectForm)
 {
 	try {
@@ -2050,7 +2049,7 @@ static void OTGrammar_learnOneFromPartialOutput_opt (OTGrammar me, const char32
 			 * Now we know that the current hypothesis prefers the (wrong) learner's winner over the (correct) adult output.
 			 * The grammar will have to change.
 			 */
-			int grammarHasChanged = FALSE;
+			bool grammarHasChanged = false;
 			OTGrammar_modifyRankings (me, assumedAdultInputTableau, iwinner, assumedAdultCandidate, updateRule, honourLocalRankings,
 				plasticity, relativePlasticityNoise, warnIfStalled, & grammarHasChanged);
 			if (! grammarHasChanged) return;
@@ -2076,21 +2075,21 @@ static void OTGrammar_learnOneFromPartialOutput_opt (OTGrammar me, const char32
 	}
 }
 
-static OTHistory OTGrammar_createHistory (OTGrammar me, long storeHistoryEvery, long numberOfData) {
+static autoOTHistory OTGrammar_createHistory (OTGrammar me, long storeHistoryEvery, long numberOfData) {
 	try {
 		long numberOfSamplingPoints = numberOfData / storeHistoryEvery, icons;   // e.g. 0, 20, 40, ...
 		autoOTHistory thee = Thing_new (OTHistory);
-		TableOfReal_init (thee.peek(), 2 + numberOfSamplingPoints * 2, 1 + my numberOfConstraints);
-		TableOfReal_setColumnLabel (thee.peek(), 1, U"Datum");
+		TableOfReal_init (thee.get(), 2 + numberOfSamplingPoints * 2, 1 + my numberOfConstraints);
+		TableOfReal_setColumnLabel (thee.get(), 1, U"Datum");
 		for (icons = 1; icons <= my numberOfConstraints; icons ++) {
-			TableOfReal_setColumnLabel (thee.peek(), icons + 1, my constraints [icons]. name);
+			TableOfReal_setColumnLabel (thee.get(), icons + 1, my constraints [icons]. name);
 		}
-		TableOfReal_setRowLabel (thee.peek(), 1, U"Initial state");
+		TableOfReal_setRowLabel (thee.get(), 1, U"Initial state");
 		thy data [1] [1] = 0;
 		for (icons = 1; icons <= my numberOfConstraints; icons ++) {
 			thy data [1] [icons + 1] = my constraints [icons]. ranking;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": history not created.");
 	}
@@ -2126,37 +2125,37 @@ static void OTGrammar_finalizeHistory (OTGrammar me, OTHistory thee, long idatum
 }
 
 void OTGrammar_learnFromPartialOutputs (OTGrammar me, Strings partialOutputs,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double plasticity, double relativePlasticityNoise, long numberOfChews,
-	long storeHistoryEvery, OTHistory *history_out)
+	long storeHistoryEvery, autoOTHistory *history_out)
 {
 	try {
 		autoOTHistory history;
 		if (storeHistoryEvery) {
-			history.reset (OTGrammar_createHistory (me, storeHistoryEvery, partialOutputs -> numberOfStrings));
+			history = OTGrammar_createHistory (me, storeHistoryEvery, partialOutputs -> numberOfStrings);
 		}
 		try {
 			for (long idatum = 1; idatum <= partialOutputs -> numberOfStrings; idatum ++) {
 				try {
 					OTGrammar_learnOneFromPartialOutput (me, partialOutputs -> strings [idatum],
 						evaluationNoise, updateRule, honourLocalRankings,
-						plasticity, relativePlasticityNoise, numberOfChews, FALSE);
+						plasticity, relativePlasticityNoise, numberOfChews, false);
 				} catch (MelderError) {
-					if (history.peek()) {
-						OTGrammar_updateHistory (me, history.peek(), storeHistoryEvery, idatum, partialOutputs -> strings [idatum]);   // so that we can inspect
+					if (history) {
+						OTGrammar_updateHistory (me, history.get(), storeHistoryEvery, idatum, partialOutputs -> strings [idatum]);   // so that we can inspect
 					}
 					throw;
 				}
-				if (history.peek()) {
-					OTGrammar_updateHistory (me, history.peek(), storeHistoryEvery, idatum, partialOutputs -> strings [idatum]);
+				if (history) {
+					OTGrammar_updateHistory (me, history.get(), storeHistoryEvery, idatum, partialOutputs -> strings [idatum]);
 				}
 			}
-			if (history.peek()) {
-				OTGrammar_finalizeHistory (me, history.peek(), partialOutputs -> numberOfStrings);
+			if (history) {
+				OTGrammar_finalizeHistory (me, history.get(), partialOutputs -> numberOfStrings);
 			}
-			*history_out = history.transfer();
+			*history_out = history.move();
 		} catch (MelderError) {
-			*history_out = history.transfer();   // so that we can inspect
+			*history_out = history.move();   // so that we can inspect
 			throw;
 		}
 	} catch (MelderError) {
@@ -2171,7 +2170,7 @@ static void OTGrammar_opt_deleteOutputMatching (OTGrammar me) {
 			OTGrammarCandidate cand = & tab -> candidates [icand];
 			cand -> numberOfPotentialPartialOutputsMatching = 0;
 			NUMvector_free (cand -> partialOutputMatches, 1);
-			cand -> partialOutputMatches = NULL;
+			cand -> partialOutputMatches = nullptr;
 		}
 	}
 }
@@ -2215,10 +2214,10 @@ static void OTGrammar_Distributions_opt_createOutputMatching (OTGrammar me, Dist
 }
 
 void OTGrammar_Distributions_learnFromPartialOutputs (OTGrammar me, Distributions thee, long columnNumber,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
 	long numberOfPlasticities, double relativePlasticityNoise, long numberOfChews,
-	long storeHistoryEvery, OTHistory *history_out,
+	long storeHistoryEvery, autoOTHistory *history_out,
 	bool resampleForVirtualProduction, bool compareOnlyPartialOutput, long resampleForCorrectForm)
 {
 	long idatum = 0;
@@ -2231,7 +2230,7 @@ void OTGrammar_Distributions_learnFromPartialOutputs (OTGrammar me, Distribution
 			Graphics_clearWs (monitor.graphics());
 		}
 		if (storeHistoryEvery) {
-			history.reset (OTGrammar_createHistory (me, storeHistoryEvery, numberOfData));
+			history = OTGrammar_createHistory (me, storeHistoryEvery, numberOfData);
 		}
 		try {
 			double plasticity = initialPlasticity;
@@ -2242,13 +2241,14 @@ void OTGrammar_Distributions_learnFromPartialOutputs (OTGrammar me, Distribution
 					Distributions_peek (thee, columnNumber, & partialOutput, & ipartialOutput);
 					++ idatum;
 					if (monitor.graphics() && idatum % (numberOfData / 400 + 1) == 0) {
+						Graphics_beginMovieFrame (monitor.graphics(), nullptr);
 						Graphics_setWindow (monitor.graphics(), 0, numberOfData, 50, 150);
 						for (long icons = 1; icons <= 14 && icons <= my numberOfConstraints; icons ++) {
 							Graphics_setGrey (monitor.graphics(), (double) icons / 14);
 							Graphics_line (monitor.graphics(), idatum, my constraints [icons]. ranking,
 								idatum, my constraints [icons]. ranking+1);
 						}
-						Graphics_flushWs (monitor.graphics());   /* Because drawing is faster than progress loop. */
+						Graphics_endMovieFrame (monitor.graphics(), 0.0);
 					}
 					Melder_monitor ((double) idatum / numberOfData,
 						U"Processing partial output ", idatum, U" out of ", numberOfData, U": ",
@@ -2256,30 +2256,30 @@ void OTGrammar_Distributions_learnFromPartialOutputs (OTGrammar me, Distribution
 					try {
 						OTGrammar_learnOneFromPartialOutput_opt (me, partialOutput, ipartialOutput,
 							evaluationNoise, updateRule, honourLocalRankings,
-							plasticity, relativePlasticityNoise, numberOfChews, FALSE,
+							plasticity, relativePlasticityNoise, numberOfChews, false,
 							resampleForVirtualProduction, compareOnlyPartialOutput, resampleForCorrectForm);   // no warning if stalled: RIP form is allowed to be harmonically bounded
 					} catch (MelderError) {
-						if (history.peek()) {
-							OTGrammar_updateHistory (me, history.peek(), storeHistoryEvery, idatum, thy rowLabels [ipartialOutput]);
+						if (history) {
+							OTGrammar_updateHistory (me, history.get(), storeHistoryEvery, idatum, thy rowLabels [ipartialOutput]);
 						}
 						throw;
 					}
-					if (history.peek()) {
-						OTGrammar_updateHistory (me, history.peek(), storeHistoryEvery, idatum, thy rowLabels [ipartialOutput]);
+					if (history) {
+						OTGrammar_updateHistory (me, history.get(), storeHistoryEvery, idatum, thy rowLabels [ipartialOutput]);
 					}
 				}
 				plasticity *= plasticityDecrement;
 			}
-			if (history.peek()) {
-				OTGrammar_finalizeHistory (me, history.peek(), numberOfData);
+			if (history) {
+				OTGrammar_finalizeHistory (me, history.get(), numberOfData);
 			}
 			OTGrammar_opt_deleteOutputMatching (me);
 			if (history_out)
-				*history_out = history.transfer();
+				*history_out = history.move();
 		} catch (MelderError) {
 			OTGrammar_opt_deleteOutputMatching (me);
 			if (history_out)
-				*history_out = history.transfer();   // so that we can inspect
+				*history_out = history.move();   // so that we can inspect
 			throw;
 		}
 	} catch (MelderError) {
@@ -2314,8 +2314,8 @@ long OTGrammar_PairDistribution_getMinimumNumberCorrect (OTGrammar me, PairDistr
 {
 	try {
 		long minimumNumberCorrect = numberOfReplications;
-		for (long ipair = 1; ipair <= thy pairs -> size; ipair ++) {
-			PairProbability prob = (PairProbability) thy pairs -> item [ipair];
+		for (long ipair = 1; ipair <= thy pairs.size; ipair ++) {
+			PairProbability prob = thy pairs.at [ipair];
 			if (prob -> weight > 0.0) {
 				long numberOfCorrect = 0;
 				char32 *input = prob -> string1, *adultOutput = prob -> string2;
@@ -2344,7 +2344,7 @@ double OTGrammar_Distributions_getFractionCorrect (OTGrammar me, Distributions t
 		OTGrammar_Distributions_opt_createOutputMatching (me, thee, columnNumber);
 		for (long ireplication = 1; ireplication <= numberOfInputs; ireplication ++) {
 			long ipartialOutput;
-			Distributions_peek (thee, columnNumber, NULL, & ipartialOutput);
+			Distributions_peek (thee, columnNumber, nullptr, & ipartialOutput);
 			OTGrammar_newDisharmonies (me, evaluationNoise);
 			long assumedAdultInputTableau, assumedAdultCandidate;
 			OTGrammar_getInterpretiveParse_opt (me, ipartialOutput, & assumedAdultInputTableau, & assumedAdultCandidate);
@@ -2401,7 +2401,7 @@ void OTGrammar_removeConstraint (OTGrammar me, const char32 *constraintName) {
 				my numberOfFixedRankings -= 1;
 				if (my numberOfFixedRankings == 0) {
 					NUMvector_free <structOTGrammarFixedRanking> (my fixedRankings, 1);
-					my fixedRankings = NULL;
+					my fixedRankings = nullptr;
 				}
 				for (long jfixed = ifixed; jfixed <= my numberOfFixedRankings; jfixed ++) {
 					my fixedRankings [jfixed] = my fixedRankings [jfixed + 1];
@@ -2475,14 +2475,14 @@ static bool OTGrammarTableau_candidateIsPossibleWinner (OTGrammar me, long itab,
 	OTGrammar_save (me);
 	OTGrammar_reset (me, 100.0);
 	for (;;) {
-		int grammarHasChanged;
-		double previousStratum = 101.0;
+		bool grammarHasChanged = false;
 		OTGrammar_learnOne (me, my tableaus [itab]. input, my tableaus [itab]. candidates [icand]. output,
-			1e-3, kOTGrammar_rerankingStrategy_EDCD, FALSE, 1.0, 0.0, TRUE, TRUE, & grammarHasChanged);
+			1e-3, kOTGrammar_rerankingStrategy_EDCD, false, 1.0, 0.0, true, true, & grammarHasChanged);
 		if (! grammarHasChanged) {
 			OTGrammar_restore (me);
 			return true;
 		}
+		double previousStratum = 101.0;
 		OTGrammar_newDisharmonies (me, 0.0);
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
 			double stratum = my constraints [my index [icons]]. ranking;
@@ -2505,7 +2505,7 @@ static bool OTGrammarTableau_candidateIsPossibleWinner (OTGrammar me, long itab,
 	return false;   // cannot occur
 }
 
-void OTGrammar_removeHarmonicallyBoundedCandidates (OTGrammar me, int singly) {
+void OTGrammar_removeHarmonicallyBoundedCandidates (OTGrammar me, bool singly) {
 	try {
 		/*
 		 * First, the candidates that are harmonically bounded by one or more single other candidates have to be removed;
@@ -2539,26 +2539,26 @@ void OTGrammar_removeHarmonicallyBoundedCandidates (OTGrammar me, int singly) {
 	}
 }
 
-Thing_define (OTGrammar_List4, Data) {
+Thing_define (OTGrammar_List4, Daata) {
 	// new data:
 	public:
 		long hi1, lo1, hi2, lo2;
 };
 
-Thing_implement (OTGrammar_List4, Data, 0);
+Thing_implement (OTGrammar_List4, Daata, 0);
 
 void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistribution thee) {
 	/*
 	 * Save.
 	 */
 	OTGrammarFixedRanking savedFixedRankings = my fixedRankings;   // dangle...
-	my fixedRankings = NULL;   // ...undangle
+	my fixedRankings = nullptr;   // ...undangle
 	long savedNumberOfFixedRankings = my numberOfFixedRankings;
 	OTGrammar_save (me);
 	try {
 		long ifixedRanking, icons, jcons, kcons, lcons, ipair = 0, npair = my numberOfConstraints * (my numberOfConstraints - 1);
 		long ilist, jlist, itrial, iform;
-		int improved;
+		bool improved;
 		double evaluationNoise = 1e-9;
 		/*
 		 * Add room for two more fixed rankings.
@@ -2573,16 +2573,16 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 		 */
 		OTGrammar_reset (me, 100.0);
 		for (itrial = 1; itrial <= 40; itrial ++) {
-			int grammarHasChangedDuringCycle = FALSE;
+			bool grammarHasChangedDuringCycle = false;
 			OTGrammar_honourLocalRankings (me, 1.0, 0.0, & grammarHasChangedDuringCycle);
 			OTGrammar_newDisharmonies (me, evaluationNoise);
-			for (iform = 1; iform <= thy pairs -> size; iform ++) {
-				PairProbability prob = (PairProbability) thy pairs -> item [iform];
+			for (iform = 1; iform <= thy pairs.size; iform ++) {
+				PairProbability prob = thy pairs.at [iform];
 				if (prob -> weight > 0.0) {
-					int grammarHasChanged;
+					bool grammarHasChanged = false;
 					OTGrammar_learnOne (me, prob -> string1, prob -> string2,
-						evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, TRUE /* honour fixed rankings; very important */,
-						1.0, 0.0, FALSE, TRUE, & grammarHasChanged);
+						evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, true /* honour fixed rankings; very important */,
+						1.0, 0.0, false, true, & grammarHasChanged);
 					if (grammarHasChanged) {
 						OTGrammar_newDisharmonies (me, evaluationNoise);
 					}
@@ -2599,7 +2599,7 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 		 * Test learnability of every possible ranked pair.
 		 */
 		my numberOfFixedRankings ++;
-		autoNUMmatrix <int> obligatory (1, my numberOfConstraints, 1, my numberOfConstraints);
+		autoNUMmatrix <bool> obligatory (1, my numberOfConstraints, 1, my numberOfConstraints);
 		MelderInfo_open ();
 		autoMelderProgress progress (U"Finding obligatory rankings.");
 		for (icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -2611,16 +2611,16 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 					my constraints [icons]. name, U" >> ", my constraints [jcons]. name);
 				ipair ++;
 				for (itrial = 1; itrial <= 40; itrial ++) {
-					int grammarHasChangedDuringCycle = FALSE;
+					bool grammarHasChangedDuringCycle = false;
 					OTGrammar_honourLocalRankings (me, 1.0, 0.0, & grammarHasChangedDuringCycle);
 					OTGrammar_newDisharmonies (me, evaluationNoise);
-					for (iform = 1; iform <= thy pairs -> size; iform ++) {
-						PairProbability prob = (PairProbability) thy pairs -> item [iform];
+					for (iform = 1; iform <= thy pairs.size; iform ++) {
+						PairProbability prob = thy pairs.at [iform];
 						if (prob -> weight > 0.0) {
-							int grammarHasChanged;
+							bool grammarHasChanged = false;
 							OTGrammar_learnOne (me, prob -> string1, prob -> string2,
-								evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, TRUE /* honour fixed rankings; very important */,
-								1.0, 0.0, FALSE, TRUE, & grammarHasChanged);
+								evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, true /* honour fixed rankings; very important */,
+								1.0, 0.0, false, true, & grammarHasChanged);
 							if (grammarHasChanged) {
 								OTGrammar_newDisharmonies (me, evaluationNoise);
 							}
@@ -2630,7 +2630,7 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 					if (! grammarHasChangedDuringCycle) break;
 				}
 				if (itrial > 40) {
-					obligatory [jcons] [icons] = TRUE;
+					obligatory [jcons] [icons] = true;
 					MelderInfo_writeLine (my constraints [jcons]. name, U" >> ", my constraints [icons]. name);
 					MelderInfo_close ();
 				}
@@ -2639,7 +2639,7 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 		my numberOfFixedRankings ++;
 		Melder_progress (0.0, U"");
 		npair = npair * npair;
-		autoOrdered list = Ordered_create ();
+		OrderedOf<structOTGrammar_List4> list;
 		for (icons = 1; icons <= my numberOfConstraints; icons ++) {
 			for (jcons = 1; jcons <= my numberOfConstraints; jcons ++) if (icons != jcons && ! obligatory [jcons] [icons]) {
 				my fixedRankings [my numberOfFixedRankings - 1]. higher = icons;
@@ -2657,16 +2657,16 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 						Melder_progress ((double) ipair / npair, ipair + 1, U"/", npair);
 						ipair ++;
 						for (itrial = 1; itrial <= 40; itrial ++) {
-							int grammarHasChangedDuringCycle = FALSE;
+							bool grammarHasChangedDuringCycle = false;
 							OTGrammar_honourLocalRankings (me, 1.0, 0.0, & grammarHasChangedDuringCycle);
 							OTGrammar_newDisharmonies (me, evaluationNoise);
-							for (iform = 1; iform <= thy pairs -> size; iform ++) {
-								PairProbability prob = (PairProbability) thy pairs -> item [iform];
+							for (iform = 1; iform <= thy pairs.size; iform ++) {
+								PairProbability prob = thy pairs.at [iform];
 								if (prob -> weight > 0.0) {
-									int grammarHasChanged;
+									bool grammarHasChanged = false;
 									OTGrammar_learnOne (me, prob -> string1, prob -> string2,
-										evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, TRUE /* honour fixed rankings; very important */,
-										1.0, 0.0, FALSE, TRUE, & grammarHasChanged);
+										evaluationNoise, kOTGrammar_rerankingStrategy_EDCD, true /* honour fixed rankings; very important */,
+										1.0, 0.0, false, true, & grammarHasChanged);
 									if (grammarHasChanged) {
 										OTGrammar_newDisharmonies (me, evaluationNoise);
 									}
@@ -2681,7 +2681,7 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 							listElement -> lo1 = icons;
 							listElement -> hi2 = lcons;
 							listElement -> lo2 = kcons;
-							Collection_addItem (list.peek(), listElement.transfer());
+							list. addItem_move (listElement.move());
 						}
 					}
 				}
@@ -2691,12 +2691,13 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 		/*
 		 * Improve list.
 		 */
-		improved = TRUE;
+		improved = true;
 		while (improved) {
-			improved = FALSE;
-			for (ilist = 1; ilist <= list -> size; ilist ++) {
-				for (jlist = 1; jlist <= list -> size; jlist ++) if (ilist != jlist) {
-					OTGrammar_List4 elA = (OTGrammar_List4) list -> item [ilist], elB = (OTGrammar_List4) list -> item [jlist];
+			improved = false;
+			for (ilist = 1; ilist <= list.size; ilist ++) {
+				for (jlist = 1; jlist <= list.size; jlist ++) if (ilist != jlist) {
+					OTGrammar_List4 elA = list.at [ilist];
+					OTGrammar_List4 elB = list.at [jlist];
 					long ahi1 = elA -> hi1, alo1 = elA -> lo1, ahi2 = elA -> hi2, alo2 = elA -> lo2;
 					long bhi1 = elB -> hi1, blo1 = elB -> lo1, bhi2 = elB -> hi2, blo2 = elB -> lo2;
 					improved |= (ahi1 == bhi1 || obligatory [bhi1] [ahi1]) && (ahi2 == bhi2 || obligatory [bhi2] [ahi2]) &&
@@ -2704,19 +2705,20 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 					improved |= (ahi1 == bhi2 || obligatory [bhi2] [ahi1]) && (ahi2 == bhi1 || obligatory [bhi1] [ahi2]) &&
 						(alo1 == blo2 || obligatory [alo1] [blo2]) && (alo2 == blo1 || obligatory [alo2] [blo1]);
 					if (improved) {
-						Collection_removeItem (list.peek(), jlist);
+						list. removeItem (jlist);
 						break;
 					}
 				}
 				if (improved) break;
 			}
 		}
-		improved = TRUE;
+		improved = true;
 		while (improved) {
-			improved = FALSE;
-			for (ilist = 1; ilist <= list -> size; ilist ++) {
-				for (jlist = 1; jlist <= list -> size; jlist ++) if (ilist != jlist) {
-					OTGrammar_List4 elA = (OTGrammar_List4) list -> item [ilist], elB = (OTGrammar_List4) list -> item [jlist];
+			improved = false;
+			for (ilist = 1; ilist <= list.size; ilist ++) {
+				for (jlist = 1; jlist <= list.size; jlist ++) if (ilist != jlist) {
+					OTGrammar_List4 elA = list.at [ilist];
+					OTGrammar_List4 elB = list.at [jlist];
 					long ahi1 = elA -> hi1, alo1 = elA -> lo1, ahi2 = elA -> hi2, alo2 = elA -> lo2;
 					long bhi1 = elB -> hi1, blo1 = elB -> lo1, bhi2 = elB -> hi2, blo2 = elB -> lo2;
 					improved |= ahi1 == bhi1 && alo1 == blo1 && ahi2 == bhi2 && blo2 == bhi1 && alo2 == alo1;
@@ -2724,15 +2726,15 @@ void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistri
 					improved |= ahi2 == bhi1 && alo2 == blo1 && ahi1 == bhi2 && blo2 == bhi1 && alo1 == alo2;
 					improved |= ahi2 == bhi2 && alo2 == blo2 && ahi1 == bhi1 && blo1 == bhi2 && alo1 == alo2;
 					if (improved) {
-						Collection_removeItem (list.peek(), jlist);
+						list. removeItem (jlist);
 						break;
 					}
 				}
 				if (improved) break;
 			}
 		}
-		for (ilist = 1; ilist <= list -> size; ilist ++) {
-			OTGrammar_List4 el = (OTGrammar_List4) list -> item [ilist];
+		for (ilist = 1; ilist <= list.size; ilist ++) {
+			OTGrammar_List4 el = list.at [ilist];
 			MelderInfo_write (my constraints [el -> hi1]. name, U" >> ", my constraints [el -> lo1]. name, U" OR ");
 			MelderInfo_writeLine (my constraints [el -> hi2]. name, U" >> ", my constraints [el -> lo2]. name);
 			MelderInfo_close ();
@@ -2769,7 +2771,7 @@ void OTGrammar_Distributions_listObligatoryRankings (OTGrammar me, Distributions
 	 * Save.
 	 */
 	OTGrammarFixedRanking savedFixedRankings = my fixedRankings;
-	my fixedRankings = NULL;
+	my fixedRankings = nullptr;
 	OTGrammar_save (me);
 	try {
 		long ifixedRanking, icons, jcons, kcons, ipair = 0, npair = my numberOfConstraints * (my numberOfConstraints - 1);
@@ -2797,8 +2799,8 @@ void OTGrammar_Distributions_listObligatoryRankings (OTGrammar me, Distributions
 				ipair ++;
 				Melder_progressOff ();
 				OTGrammar_Distributions_learnFromPartialOutputs (me, thee, columnNumber,
-					1e-9, kOTGrammar_rerankingStrategy_EDCD, TRUE /* honour fixed rankings; very important */,
-					1.0, 1000, 0.0, 1, 0.0, 1, 0, NULL, false, false, 0);
+					1e-9, kOTGrammar_rerankingStrategy_EDCD, true /* honour fixed rankings; very important */,
+					1.0, 1000, 0.0, 1, 0.0, 1, 0, nullptr, false, false, 0);
 				Melder_progressOn ();
 				for (kcons = 1; kcons <= my numberOfConstraints; kcons ++) {
 					if (my constraints [kcons]. ranking < 0.0) {
diff --git a/gram/OTGrammar.h b/gram/OTGrammar.h
index 4c5a855..a9fbf94 100644
--- a/gram/OTGrammar.h
+++ b/gram/OTGrammar.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Strings_.h"
@@ -28,7 +27,6 @@
 #include "OTGrammar_enums.h"
 
 #include "OTGrammar_def.h"
-oo_CLASS_CREATE (OTGrammar, Data);
 
 Thing_define (OTHistory, TableOfReal) {
 };
@@ -82,38 +80,38 @@ bool OTGrammar_areAllPartialOutputsSinglyGrammatical (OTGrammar me, Strings thee
 
 void OTGrammar_drawTableau (OTGrammar me, Graphics g, bool vertical, const char32 *input);
 
-Strings OTGrammar_generateInputs (OTGrammar me, long numberOfTrials);
-Strings OTGrammar_getInputs (OTGrammar me);
+autoStrings OTGrammar_generateInputs (OTGrammar me, long numberOfTrials);
+autoStrings OTGrammar_getInputs (OTGrammar me);
 void OTGrammar_inputToOutput (OTGrammar me, const char32 *input, char32 *output, double evaluationNoise);
-Strings OTGrammar_inputsToOutputs (OTGrammar me, Strings inputs, double evaluationNoise);
-Strings OTGrammar_inputToOutputs (OTGrammar me, const char32 *input, long n, double evaluationNoise);
-Distributions OTGrammar_to_Distribution (OTGrammar me, long trialsPerInput, double evaluationNoise);
-PairDistribution OTGrammar_to_PairDistribution (OTGrammar me, long trialsPerInput, double evaluationNoise);
-Distributions OTGrammar_measureTypology (OTGrammar me);
+autoStrings OTGrammar_inputsToOutputs (OTGrammar me, Strings inputs, double evaluationNoise);
+autoStrings OTGrammar_inputToOutputs (OTGrammar me, const char32 *input, long n, double evaluationNoise);
+autoDistributions OTGrammar_to_Distribution (OTGrammar me, long trialsPerInput, double evaluationNoise);
+autoPairDistribution OTGrammar_to_PairDistribution (OTGrammar me, long trialsPerInput, double evaluationNoise);
+autoDistributions OTGrammar_measureTypology (OTGrammar me);
 
 void OTGrammar_learnOne (OTGrammar me, const char32 *input, const char32 *adultOutput,
-	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double demotionMean, double relativeDemotionSpreading, int newDisharmonies,
-	int warnIfStalled, int *grammarHasChanged);
+	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double demotionMean, double relativeDemotionSpreading, bool newDisharmonies,
+	bool warnIfStalled, bool *grammarHasChanged);
 void OTGrammar_learn (OTGrammar me, Strings inputs, Strings outputs,
-	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double demotionMean, double relativeDemotionSpreading, long numberOfChews);
 void OTGrammar_PairDistribution_learn (OTGrammar me, PairDistribution thee,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
 	long numberOfPlasticities, double relativePlasticityNoise, long numberOfChews);
 bool OTGrammar_PairDistribution_findPositiveWeights_e (OTGrammar me, PairDistribution thee, double weightFloor, double marginOfSeparation);
 void OTGrammar_learnOneFromPartialOutput (OTGrammar me, const char32 *partialAdultOutput,
-	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double demotionMean, double relativeDemotionSpreading, long numberOfChews, int warnIfStalled);
+	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double demotionMean, double relativeDemotionSpreading, long numberOfChews, bool warnIfStalled);
 void OTGrammar_learnFromPartialOutputs (OTGrammar me, Strings partialOutputs,
-	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
-	double demotionMean, double relativeDemotionSpreading, long numberOfChews, long storeHistoryEvery, OTHistory *history);
+	double rankingSpreading, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
+	double demotionMean, double relativeDemotionSpreading, long numberOfChews, long storeHistoryEvery, autoOTHistory *history);
 void OTGrammar_Distributions_learnFromPartialOutputs (OTGrammar me, Distributions thee, long columnNumber,
-	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int honourLocalRankings,
+	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, bool honourLocalRankings,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
 	long numberOfPlasticities, double relativePlasticityNoise, long numberOfChews,
-	long storeHistoryEvery, OTHistory *history_out,
+	long storeHistoryEvery, autoOTHistory *history_out,
 	bool resampleForVirtualProduction, bool compareOnlyPartialOutput, long resampleForCorrectForm);
 double OTGrammar_PairDistribution_getFractionCorrect (OTGrammar me, PairDistribution thee,
 	double evaluationNoise, long numberOfInputs);
@@ -124,14 +122,14 @@ double OTGrammar_Distributions_getFractionCorrect (OTGrammar me, Distributions t
 
 void OTGrammar_checkIndex (OTGrammar me);
 
-OTGrammar OTGrammar_create_NoCoda_grammar (void);
-OTGrammar OTGrammar_create_NPA_grammar (void);
-PairDistribution OTGrammar_create_NPA_distribution (void);
-OTGrammar OTGrammar_create_tongueRoot_grammar (int small_large, int equal_random_infant_Wolof);
-OTGrammar OTGrammar_create_metrics (int equal_footForm_wsp,
+autoOTGrammar OTGrammar_create_NoCoda_grammar ();
+autoOTGrammar OTGrammar_create_NPA_grammar ();
+autoPairDistribution OTGrammar_create_NPA_distribution ();
+autoOTGrammar OTGrammar_create_tongueRoot_grammar (int small_large, int equal_random_infant_Wolof);
+autoOTGrammar OTGrammar_create_metrics (int equal_footForm_wsp,
 	int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
 	int includePeripheral, int nonfinalityConstraint, int overtFormsHaveSecondaryStress, int includeClashAndLapse, int includeCodas);
-	/* T&S: 1, FALSE, FALSE, FALSE, 1, TRUE, FALSE, FALSE */
+	/* T&S: 1, false, false, false, 1, true, false, false */
 
 void OTGrammar_reset (OTGrammar me, double ranking);
 void OTGrammar_resetToRandomRanking (OTGrammar me, double mean, double standardDeviation);
@@ -140,7 +138,7 @@ void OTGrammar_setRanking (OTGrammar me, long constraint, double ranking, double
 void OTGrammar_setConstraintPlasticity (OTGrammar me, long constraint, double plasticity);
 
 void OTGrammar_removeConstraint (OTGrammar me, const char32 *constraintName);
-void OTGrammar_removeHarmonicallyBoundedCandidates (OTGrammar me, int singly);
+void OTGrammar_removeHarmonicallyBoundedCandidates (OTGrammar me, bool singly);
 void OTGrammar_PairDistribution_listObligatoryRankings (OTGrammar me, PairDistribution thee);
 void OTGrammar_Distributions_listObligatoryRankings (OTGrammar me, Distributions thee, long columnNumber);
 
diff --git a/gram/OTGrammarEditor.cpp b/gram/OTGrammarEditor.cpp
index ad1c95d..5fcb761 100644
--- a/gram/OTGrammarEditor.cpp
+++ b/gram/OTGrammarEditor.cpp
@@ -1,20 +1,19 @@
 /* OTGrammarEditor.cpp
  *
- * Copyright (C) 1997-2011,2012,2013,2015 Paul Boersma
+ * Copyright (C) 1997-2011,2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,46 +27,41 @@
 
 Thing_implement (OTGrammarEditor, HyperPage, 0);
 
-static void menu_cb_evaluate (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
-	EDITOR_FORM (U"Evaluate", 0)
+static void menu_cb_evaluate (OTGrammarEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Evaluate", nullptr)
 		REAL (U"Noise", U"2.0")
 	EDITOR_OK
 	EDITOR_DO
 		Editor_save (me, U"Evaluate");
 		OTGrammar_newDisharmonies ((OTGrammar) my data, GET_REAL (U"Noise"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_evaluate_noise_2_0 (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_evaluate_noise_2_0 (OTGrammarEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Evaluate (noise 2.0)");
 	OTGrammar_newDisharmonies ((OTGrammar) my data, 2.0);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_evaluate_tinyNoise (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_evaluate_tinyNoise (OTGrammarEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Evaluate (tiny noise)");
 	OTGrammar_newDisharmonies ((OTGrammar) my data, 1e-9);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_evaluate_zeroNoise (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_evaluate_zeroNoise (OTGrammarEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Evaluate (zero noise)");
 	OTGrammar_newDisharmonies ((OTGrammar) my data, 0.0);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_editConstraint (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
-	EDITOR_FORM (U"Edit constraint", 0)
+static void menu_cb_editConstraint (OTGrammarEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Edit constraint", nullptr)
 		LABEL (U"constraint", U"");
 		REAL (U"Ranking value", U"100.0");
 		REAL (U"Disharmony", U"100.0");
@@ -90,13 +84,12 @@ static void menu_cb_editConstraint (EDITOR_ARGS) {
 		constraint -> disharmony = GET_REAL (U"Disharmony");
 		constraint -> plasticity = GET_REAL (U"Plasticity");
 		OTGrammar_sort (ot);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_learnOne (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_learnOne (OTGrammarEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Learn one", U"OTGrammar: Learn one...")
 		LABEL (U"", U"Underlying form:")
 		SENTENCE (U"Input string", U"")
@@ -112,15 +105,14 @@ static void menu_cb_learnOne (EDITOR_ARGS) {
 		Editor_save (me, U"Learn one");
 		OTGrammar_learnOne ((OTGrammar) my data, GET_STRING (U"Input string"), GET_STRING (U"Output string"),
 			GET_REAL (U"Evaluation noise"), GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"), GET_INTEGER (U"Honour local rankings"),
-			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), TRUE, TRUE, NULL);
+			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), true, true, nullptr);
 		OTGrammar_sort ((OTGrammar) my data);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_learnOneFromPartialOutput (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_learnOneFromPartialOutput (OTGrammarEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Learn one from partial adult output", 0)
 		LABEL (U"", U"Partial adult surface form (e.g. overt form):")
 		SENTENCE (U"Partial output", U"")
@@ -135,15 +127,14 @@ static void menu_cb_learnOneFromPartialOutput (EDITOR_ARGS) {
 		Editor_save (me, U"Learn one from partial output");
 		OTGrammar_learnOneFromPartialOutput ((OTGrammar) my data, GET_STRING (U"Partial output"),
 			GET_REAL (U"Evaluation noise"), GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"), GET_INTEGER (U"Honour local rankings"),
-			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), GET_INTEGER (U"Number of chews"), TRUE);
+			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), GET_INTEGER (U"Number of chews"), true);
 		OTGrammar_sort ((OTGrammar) my data);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_removeConstraint (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_removeConstraint (OTGrammarEditor me, EDITOR_ARGS_DIRECT) {
 	OTGrammar ot = (OTGrammar) my data;
 	OTGrammarConstraint constraint;
 	if (my selected < 1 || my selected > ot -> numberOfConstraints)
@@ -151,30 +142,29 @@ static void menu_cb_removeConstraint (EDITOR_ARGS) {
 	constraint = & ot -> constraints [ot -> index [my selected]];
 	Editor_save (me, U"Remove constraint");
 	OTGrammar_removeConstraint (ot, constraint -> name);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_resetAllRankings (EDITOR_ARGS) {
-	EDITOR_IAM (OTGrammarEditor);
+static void menu_cb_resetAllRankings (OTGrammarEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Reset all rankings", 0)
 		REAL (U"Ranking", U"100.0")
 	EDITOR_OK
 	EDITOR_DO
 		Editor_save (me, U"Reset all rankings");
 		OTGrammar_reset ((OTGrammar) my data, GET_REAL (U"Ranking"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_OTGrammarEditor_help (EDITOR_ARGS) { EDITOR_IAM (OTGrammarEditor); Melder_help (U"OTGrammarEditor"); }
-static void menu_cb_OTGrammar_help (EDITOR_ARGS) { EDITOR_IAM (OTGrammarEditor); Melder_help (U"OTGrammar"); }
-static void menu_cb_OTLearningTutorial (EDITOR_ARGS) { EDITOR_IAM (OTGrammarEditor); Melder_help (U"OT learning"); }
+static void menu_cb_OTGrammarEditor_help (OTGrammarEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"OTGrammarEditor"); }
+static void menu_cb_OTGrammar_help (OTGrammarEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"OTGrammar"); }
+static void menu_cb_OTLearningTutorial (OTGrammarEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"OT learning"); }
 
 void structOTGrammarEditor :: v_createMenus () {
 	OTGrammarEditor_Parent :: v_createMenus ();
-	Editor_addCommand (this, U"Edit", U"-- edit ot --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- edit ot --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Evaluate...", 0, menu_cb_evaluate);
 	Editor_addCommand (this, U"Edit", U"Evaluate (noise 2.0)", '2', menu_cb_evaluate_noise_2_0);
 	Editor_addCommand (this, U"Edit", U"Evaluate (zero noise)", '0', menu_cb_evaluate_zeroNoise);
@@ -183,7 +173,7 @@ void structOTGrammarEditor :: v_createMenus () {
 	Editor_addCommand (this, U"Edit", U"Reset all rankings...", 'R', menu_cb_resetAllRankings);
 	Editor_addCommand (this, U"Edit", U"Learn one...", 0, menu_cb_learnOne);
 	Editor_addCommand (this, U"Edit", U"Learn one from partial output...", '1', menu_cb_learnOneFromPartialOutput);
-	Editor_addCommand (this, U"Edit", U"-- remove ot --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- remove ot --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Remove constraint", 0, menu_cb_removeConstraint);
 }
 
@@ -204,7 +194,7 @@ static void drawTableau (Graphics g) {
 void structOTGrammarEditor :: v_draw () {
 	OTGrammar ot = (OTGrammar) data;
 	static char32 text [1000];
-	Graphics_clearWs (g);
+	Graphics_clearWs (graphics.get());
 	if (ot -> decisionStrategy == kOTGrammar_decisionStrategy_EXPONENTIAL_HG ||
 		ot -> decisionStrategy == kOTGrammar_decisionStrategy_EXPONENTIAL_MAXIMUM_ENTROPY)
 	{
@@ -236,7 +226,7 @@ void structOTGrammarEditor :: v_draw () {
 		}
 		HyperPage_listItem (this, text);
 	}
-	Graphics_setAtSignIsLink (g, FALSE);
+	Graphics_setAtSignIsLink (graphics.get(), false);
 	for (long itab = 1; itab <= ot -> numberOfTableaus; itab ++) {
 		OTGrammarTableau tableau = & ot -> tableaus [itab];
 		double rowHeight = 0.25;
@@ -246,21 +236,21 @@ void structOTGrammarEditor :: v_draw () {
 		drawTableau_constraintsAreDrawnVertically = d_constraintsAreDrawnVertically;
 		HyperPage_picture (this, 20, tableauHeight, drawTableau);
 	}
-	Graphics_setAtSignIsLink (g, TRUE);
+	Graphics_setAtSignIsLink (graphics.get(), true);
 }
 
 int structOTGrammarEditor :: v_goToPage (const char32 *title) {
-	if (title == NULL) return 1;
+	if (! title) return 1;
 	selected = Melder_atoi (title);
 	return 1;
 }
 
-OTGrammarEditor OTGrammarEditor_create (const char32 *title, OTGrammar ot) {
+autoOTGrammarEditor OTGrammarEditor_create (const char32 *title, OTGrammar ot) {
 	try {
 		autoOTGrammarEditor me = Thing_new (OTGrammarEditor);
 		my data = ot;
-		HyperPage_init (me.peek(), title, ot);
-		return me.transfer();
+		HyperPage_init (me.get(), title, ot);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"OTGrammar window not created.");
 	}
diff --git a/gram/OTGrammarEditor.h b/gram/OTGrammarEditor.h
index 11f4436..84290be 100644
--- a/gram/OTGrammarEditor.h
+++ b/gram/OTGrammarEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "HyperPage.h"
@@ -38,7 +37,7 @@ Thing_define (OTGrammarEditor, HyperPage) {
 		override;
 };
 
-OTGrammarEditor OTGrammarEditor_create (const char32 *title, OTGrammar ot);
+autoOTGrammarEditor OTGrammarEditor_create (const char32 *title, OTGrammar ot);
 
 /* End of file OTGrammarEditor.h */
 #endif
diff --git a/gram/OTGrammar_def.h b/gram/OTGrammar_def.h
index 60dfadd..cc13114 100644
--- a/gram/OTGrammar_def.h
+++ b/gram/OTGrammar_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -27,11 +26,13 @@ oo_DEFINE_STRUCT (OTGrammarConstraint)
 	oo_FROM (2)
 		oo_DOUBLE (plasticity)
 	oo_ENDFROM
+
 	#if oo_READING
 		if (formatVersion < 2) {
 			plasticity = 1.0;
 		}
 	#endif
+
 	#if !oo_READING && !oo_WRITING
 		oo_INT (tiedToTheLeft)
 		oo_INT (tiedToTheRight)
@@ -57,6 +58,7 @@ oo_DEFINE_STRUCT (OTGrammarCandidate)
 	oo_STRING (output)
 	oo_LONG (numberOfConstraints)
 	oo_INT_VECTOR (marks, numberOfConstraints)
+
 	#if !oo_READING && !oo_WRITING
 		oo_DOUBLE (harmony)
 		oo_DOUBLE (probability)
@@ -80,7 +82,7 @@ oo_END_STRUCT (OTGrammarTableau)
 
 
 #define ooSTRUCT OTGrammar
-oo_DEFINE_CLASS (OTGrammar, Data)
+oo_DEFINE_CLASS (OTGrammar, Daata)
 
 	oo_FROM (1)
 		oo_ENUM (kOTGrammar_decisionStrategy, decisionStrategy)
@@ -95,6 +97,7 @@ oo_DEFINE_CLASS (OTGrammar, Data)
 	oo_STRUCT_VECTOR (OTGrammarFixedRanking, fixedRankings, numberOfFixedRankings)
 	oo_LONG (numberOfTableaus)
 	oo_STRUCT_VECTOR (OTGrammarTableau, tableaus, numberOfTableaus)
+
 	#if oo_READING
 		OTGrammar_sort (this);
 	#endif
diff --git a/gram/OTGrammar_enums.h b/gram/OTGrammar_enums.h
index 1a361af..7d33f61 100644
--- a/gram/OTGrammar_enums.h
+++ b/gram/OTGrammar_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2006-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kOTGrammar_decisionStrategy, 0)
diff --git a/gram/OTGrammar_ex_NPA.cpp b/gram/OTGrammar_ex_NPA.cpp
index cfd355b..00317da 100644
--- a/gram/OTGrammar_ex_NPA.cpp
+++ b/gram/OTGrammar_ex_NPA.cpp
@@ -1,20 +1,19 @@
 /* OTGrammar_ex_NPA.cpp
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -28,7 +27,7 @@
 
 #include "OTGrammar.h"
 
-OTGrammar OTGrammar_create_NPA_grammar (void) {
+autoOTGrammar OTGrammar_create_NPA_grammar () {
 	try {
 		OTGrammarCandidate candidate;
 		OTGrammarTableau tableau;
@@ -70,22 +69,22 @@ OTGrammar OTGrammar_create_NPA_grammar (void) {
 				candidate -> output = Melder_dup (U"apma");
 				candidate -> marks = NUMvector <int> (1, candidate -> numberOfConstraints = 3);
 				candidate -> marks [3] = 1;
-		OTGrammar_checkIndex (me.peek());
-		OTGrammar_newDisharmonies (me.peek(), 0.0);
-		return me.transfer();
+		OTGrammar_checkIndex (me.get());
+		OTGrammar_newDisharmonies (me.get(), 0.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Nasal place assimilation grammar not created.");
 	}
 }
 
-PairDistribution OTGrammar_create_NPA_distribution (void) {
+autoPairDistribution OTGrammar_create_NPA_distribution () {
 	try {
 		autoPairDistribution me = PairDistribution_create ();
-		PairDistribution_add (me.peek(), U"at+ma", U"atma", 100);
-		PairDistribution_add (me.peek(), U"at+ma", U"apma",   0);
-		PairDistribution_add (me.peek(), U"an+pa", U"anpa",  20);
-		PairDistribution_add (me.peek(), U"an+pa", U"ampa",  80);
-		return me.transfer();
+		PairDistribution_add (me.get(), U"at+ma", U"atma", 100);
+		PairDistribution_add (me.get(), U"at+ma", U"apma",   0);
+		PairDistribution_add (me.get(), U"an+pa", U"anpa",  20);
+		PairDistribution_add (me.get(), U"an+pa", U"ampa",  80);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Nasal place assimilation distribution not created.");
 	}
diff --git a/gram/OTGrammar_ex_NoCoda.cpp b/gram/OTGrammar_ex_NoCoda.cpp
index d37b86a..3187690 100644
--- a/gram/OTGrammar_ex_NoCoda.cpp
+++ b/gram/OTGrammar_ex_NoCoda.cpp
@@ -1,25 +1,24 @@
 /* OTGrammar_ex_NoCoda.cpp
  *
- * Copyright (C) 1997-2011,2015 Paul Boersma
+ * Copyright (C) 1997-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "OTGrammar.h"
 
-OTGrammar OTGrammar_create_NoCoda_grammar (void) {
+autoOTGrammar OTGrammar_create_NoCoda_grammar () {
 	try {
 		OTGrammarCandidate candidate;
 		OTGrammarTableau tableau;
@@ -52,9 +51,9 @@ OTGrammar OTGrammar_create_NoCoda_grammar (void) {
 			candidate = & tableau -> candidates [1];
 				candidate -> output = Melder_dup (U"pa");
 				candidate -> marks = NUMvector <int> (1, candidate -> numberOfConstraints = 2);
-		OTGrammar_checkIndex (me.peek());
-		OTGrammar_newDisharmonies (me.peek(), 0.0);
-		return me.transfer();
+		OTGrammar_checkIndex (me.get());
+		OTGrammar_newDisharmonies (me.get(), 0.0);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"NoCoda grammar not created.");
 	}
diff --git a/gram/OTGrammar_ex_metrics.cpp b/gram/OTGrammar_ex_metrics.cpp
index 4d454c3..6c67064 100644
--- a/gram/OTGrammar_ex_metrics.cpp
+++ b/gram/OTGrammar_ex_metrics.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2001-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -67,7 +66,7 @@ static const char32 *constraintNames [1+NUMBER_OF_CONSTRAINTS] = { 0,
 	U"Trochaic", U"FtBimor", U"FtBisyl", U"Peripheral", U"MainNonfinal", U"HeadNonfinal", U"*Clash", U"*Lapse", U"WeightByPosition", U"*C\\mu" };
 
 static void addCandidate (OTGrammarTableau me, long numberOfSyllables, int stress [],
-	int footedToTheLeft [], int footedToTheRight [], int surfaceWeightPattern [],
+	bool footedToTheLeft [], bool footedToTheRight [], int surfaceWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
 	static const char32 *syllable [] = { U"L", U"L1", U"L2", U"H", U"H1", U"H2", U"K", U"K1", U"K2", U"J", U"J1", U"J2" };
@@ -91,7 +90,7 @@ static void addCandidate (OTGrammarTableau me, long numberOfSyllables, int stres
 }
 
 static void fillSurfaceWeightPattern (OTGrammarTableau me, long numberOfSyllables, int stress [],
-	int footedToTheLeft [], int footedToTheRight [], int underlyingWeightPattern [],
+	bool footedToTheLeft [], bool footedToTheRight [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
 	int surfaceWeightPattern [1+7], minSurfaceWeight [1+7], maxSurfaceWeight [1+7];
@@ -129,17 +128,16 @@ static void fillSurfaceWeightPattern (OTGrammarTableau me, long numberOfSyllable
 }
 
 static void path (OTGrammarTableau me, long numberOfSyllables, int stress [],
-	int startingSyllable, int footedToTheLeft_in [], int footedToTheRight_in [], int underlyingWeightPattern [],
+	int startingSyllable, bool footedToTheLeft_in [], bool footedToTheRight_in [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
-	int footedToTheLeft [10], footedToTheRight [10];
-	long isyll;
+	bool footedToTheLeft [10], footedToTheRight [10];
 	/* Localize all arguments. */
-	for (isyll = 1; isyll <= startingSyllable; isyll ++) {
+	for (long isyll = 1; isyll <= startingSyllable; isyll ++) {
 		footedToTheLeft [isyll] = footedToTheLeft_in [isyll];
 		footedToTheRight [isyll] = footedToTheRight_in [isyll];
 	}
-	for (isyll = startingSyllable + 1; isyll <= numberOfSyllables; isyll ++)
+	for (long isyll = startingSyllable + 1; isyll <= numberOfSyllables; isyll ++)
 		footedToTheLeft [isyll] = footedToTheRight [isyll] = 0;
 	if (startingSyllable > numberOfSyllables) {
 		fillSurfaceWeightPattern (me, numberOfSyllables, stress, footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
@@ -147,18 +145,18 @@ static void path (OTGrammarTableau me, long numberOfSyllables, int stress [],
 		path (me, numberOfSyllables, stress, startingSyllable + 1,
 			footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 		if (stress [startingSyllable] == 0 && startingSyllable < numberOfSyllables && stress [startingSyllable + 1] != 0) {
-			footedToTheLeft [startingSyllable + 1] = TRUE;
-			footedToTheRight [startingSyllable] = TRUE;
+			footedToTheLeft [startingSyllable + 1] = true;
+			footedToTheRight [startingSyllable] = true;
 			path (me, numberOfSyllables, stress, startingSyllable + 1,
 				footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-			footedToTheLeft [startingSyllable + 1] = FALSE;
-			footedToTheRight [startingSyllable] = FALSE;
+			footedToTheLeft [startingSyllable + 1] = false;
+			footedToTheRight [startingSyllable] = false;
 		}
 		if (stress [startingSyllable] == 0 && startingSyllable > 1 && stress [startingSyllable - 1] != 0
 		    && ! footedToTheLeft [startingSyllable - 1])
 		{
-			footedToTheRight [startingSyllable - 1] = TRUE;
-			footedToTheLeft [startingSyllable] = TRUE;
+			footedToTheRight [startingSyllable - 1] = true;
+			footedToTheLeft [startingSyllable] = true;
 			path (me, numberOfSyllables, stress, startingSyllable + 1,
 				footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 		}
@@ -168,7 +166,7 @@ static void path (OTGrammarTableau me, long numberOfSyllables, int stress [],
 static void fillOvertStressPattern (OTGrammarTableau me, long numberOfSyllables, int stress [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
-	int footedToTheLeft [10], footedToTheRight [10];
+	bool footedToTheLeft [10], footedToTheRight [10];
 	for (int isyll = 1; isyll <= numberOfSyllables; isyll ++)
 		footedToTheLeft [isyll] = footedToTheRight [isyll] = 0;
 	path (me, numberOfSyllables, stress, 1, footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
@@ -191,27 +189,27 @@ static void fillTableau (OTGrammarTableau me, long numberOfSyllables, int underl
 	for (long mainStressed = 1; mainStressed <= numberOfSyllables; mainStressed ++) {
 		int stress [10];
 		stress [mainStressed] = 1;
-		for (int secondary1 = FALSE; secondary1 <= TRUE; secondary1 ++) {
+		for (int secondary1 = false; secondary1 <= true; secondary1 ++) {
 			stress [mainStressed <= 1 ? 2 : 1] = secondary1 ? 2 : 0;
 			if (numberOfSyllables == 2) {
 				fillOvertStressPattern (me, 2, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-			} else for (int secondary2 = FALSE; secondary2 <= TRUE; secondary2 ++) {
+			} else for (int secondary2 = false; secondary2 <= true; secondary2 ++) {
 				stress [mainStressed <= 2 ? 3 : 2] = secondary2 ? 2 : 0;
 				if (numberOfSyllables == 3) {
 					fillOvertStressPattern (me, 3, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-				} else for (int secondary3 = FALSE; secondary3 <= TRUE; secondary3 ++) {
+				} else for (int secondary3 = false; secondary3 <= true; secondary3 ++) {
 					stress [mainStressed <= 3 ? 4 : 3] = secondary3 ? 2 : 0;
 					if (numberOfSyllables == 4) {
 						fillOvertStressPattern (me, 4, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-					} else for (int secondary4 = FALSE; secondary4 <= TRUE; secondary4 ++) {
+					} else for (int secondary4 = false; secondary4 <= true; secondary4 ++) {
 						stress [mainStressed <= 4 ? 5 : 4] = secondary4 ? 2 : 0;
 						if (numberOfSyllables == 5) {
 							fillOvertStressPattern (me, 5, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-						} else for (int secondary5 = FALSE; secondary5 <= TRUE; secondary5 ++) {
+						} else for (int secondary5 = false; secondary5 <= true; secondary5 ++) {
 							stress [mainStressed <= 5 ? 6 : 5] = secondary5 ? 2 : 0;
 							if (numberOfSyllables == 6) {
 								fillOvertStressPattern (me, 6, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-							} else for (int secondary6 = FALSE; secondary6 <= TRUE; secondary6 ++) {
+							} else for (int secondary6 = false; secondary6 <= true; secondary6 ++) {
 								stress [mainStressed <= 6 ? 7 : 6] = secondary6 ? 2 : 0;
 								fillOvertStressPattern (me, 7, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 							}
@@ -392,8 +390,8 @@ static void computeViolationMarks (OTGrammarCandidate me) {
 }
 
 static void replaceOutput (OTGrammarCandidate me) {
-	int abstract = FALSE;
-	Melder_assert (my output != NULL);
+	bool abstract = false;
+	Melder_assert (my output);
 	char32 newOutput [100], *q = & newOutput [0];
 	for (const char32 *p = & my output [0]; *p != U'\0'; p ++) {
 		if (p [0] == U' ') {
@@ -427,7 +425,7 @@ static void replaceOutput (OTGrammarCandidate me) {
 		} else if (isStress (p [0]) && abstract) {
 			;
 		} else {
-			if (p [0] == U'/') abstract = TRUE;
+			if (p [0] == U'/') abstract = true;
 			*q ++ = p [0];
 		}
 	}
@@ -436,7 +434,7 @@ static void replaceOutput (OTGrammarCandidate me) {
 	my output = Melder_dup (newOutput);
 }
 
-OTGrammar OTGrammar_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
+autoOTGrammar OTGrammar_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
 	int includePeripheral, int nonfinalityConstraint, int overtFormsHaveSecondaryStress,
 	int includeClashAndLapse, int includeCodas)
 {
@@ -488,33 +486,33 @@ OTGrammar OTGrammar_create_metrics (int equal_footForm_wsp, int trochaicityConst
 				computeViolationMarks (& tableau -> candidates [icand]);
 			}
 		}
-		OTGrammar_checkIndex (me.peek());
-		OTGrammar_newDisharmonies (me.peek(), 0.0);
+		OTGrammar_checkIndex (me.get());
+		OTGrammar_newDisharmonies (me.get(), 0.0);
 		if (trochaicityConstraint == 1) {
-			OTGrammar_removeConstraint (me.peek(), U"Trochaic");
+			OTGrammar_removeConstraint (me.get(), U"Trochaic");
 		} else {
-			OTGrammar_removeConstraint (me.peek(), U"FtNonfinal");
+			OTGrammar_removeConstraint (me.get(), U"FtNonfinal");
 		}
-		if (! includeFootBimoraic) OTGrammar_removeConstraint (me.peek(), U"FtBimor");
-		if (! includeFootBisyllabic) OTGrammar_removeConstraint (me.peek(), U"FtBisyl");
-		if (! includePeripheral) OTGrammar_removeConstraint (me.peek(), U"Peripheral");
+		if (! includeFootBimoraic) OTGrammar_removeConstraint (me.get(), U"FtBimor");
+		if (! includeFootBisyllabic) OTGrammar_removeConstraint (me.get(), U"FtBisyl");
+		if (! includePeripheral) OTGrammar_removeConstraint (me.get(), U"Peripheral");
 		if (nonfinalityConstraint == 1) {
-			OTGrammar_removeConstraint (me.peek(), U"MainNonfinal");
-			OTGrammar_removeConstraint (me.peek(), U"HeadNonfinal");
+			OTGrammar_removeConstraint (me.get(), U"MainNonfinal");
+			OTGrammar_removeConstraint (me.get(), U"HeadNonfinal");
 		} else if (nonfinalityConstraint == 2) {
-			OTGrammar_removeConstraint (me.peek(), U"HeadNonfinal");
-			OTGrammar_removeConstraint (me.peek(), U"Nonfinal");
+			OTGrammar_removeConstraint (me.get(), U"HeadNonfinal");
+			OTGrammar_removeConstraint (me.get(), U"Nonfinal");
 		} else {
-			OTGrammar_removeConstraint (me.peek(), U"MainNonfinal");
-			OTGrammar_removeConstraint (me.peek(), U"Nonfinal");
+			OTGrammar_removeConstraint (me.get(), U"MainNonfinal");
+			OTGrammar_removeConstraint (me.get(), U"Nonfinal");
 		}
 		if (! includeClashAndLapse) {
-			OTGrammar_removeConstraint (me.peek(), U"*Clash");
-			OTGrammar_removeConstraint (me.peek(), U"*Lapse");
+			OTGrammar_removeConstraint (me.get(), U"*Clash");
+			OTGrammar_removeConstraint (me.get(), U"*Lapse");
 		}
 		if (! includeCodas) {
-			OTGrammar_removeConstraint (me.peek(), U"WeightByPosition");
-			OTGrammar_removeConstraint (me.peek(), U"*C\\mu");
+			OTGrammar_removeConstraint (me.get(), U"WeightByPosition");
+			OTGrammar_removeConstraint (me.get(), U"*C\\mu");
 		}
 		if (includeCodas) {
 			for (long itab = 1; itab <= my numberOfTableaus; itab ++) {
@@ -524,7 +522,7 @@ OTGrammar OTGrammar_create_metrics (int equal_footForm_wsp, int trochaicityConst
 				}
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Metrics grammar not created.");
 	}
diff --git a/gram/OTGrammar_ex_tongueRoot.cpp b/gram/OTGrammar_ex_tongueRoot.cpp
index 1577057..3cf2cab 100644
--- a/gram/OTGrammar_ex_tongueRoot.cpp
+++ b/gram/OTGrammar_ex_tongueRoot.cpp
@@ -1,20 +1,19 @@
 /* OTGrammar_ex_tongueRoot.cpp
  *
- * Copyright (C) 1997-2011,2013,2015 Paul Boersma
+ * Copyright (C) 1997-2011,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "OTGrammar.h"
@@ -56,7 +55,7 @@ static void OTGrammarCandidate_init (OTGrammarCandidate me, int ncons, int v1, i
 	if (isatr (v1) != isatr (v2)) my marks [5] ++;
 }
 
-OTGrammar OTGrammar_create_tongueRoot_grammar (int small_large, int equal_random_infant_Wolof) {
+autoOTGrammar OTGrammar_create_tongueRoot_grammar (int small_large, int equal_random_infant_Wolof) {
 	try {
 		int ncons = small_large == 1 ? 5 : 9, itab, v1, v2;
 		autoOTGrammar me = Thing_new (OTGrammar);
@@ -139,11 +138,11 @@ OTGrammar OTGrammar_create_tongueRoot_grammar (int small_large, int equal_random
 			}
 			itab ++;
 		}
-		OTGrammar_checkIndex (me.peek());
-		OTGrammar_newDisharmonies (me.peek(), 0.0);
+		OTGrammar_checkIndex (me.get());
+		OTGrammar_newDisharmonies (me.get(), 0.0);
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++)
 			my constraints [icons]. plasticity = 1.0;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Tongue root grammar not created.");
 	}
diff --git a/gram/OTMulti.cpp b/gram/OTMulti.cpp
index d8ccbfb..a4e440d 100644
--- a/gram/OTMulti.cpp
+++ b/gram/OTMulti.cpp
@@ -1,20 +1,19 @@
 /* OTMulti.cpp
  *
- * Copyright (C) 2005-2012,2013,2015 Paul Boersma
+ * Copyright (C) 2005-2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -54,7 +53,7 @@
 
 void structOTMulti :: v_info ()
 {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	long numberOfViolations = 0;
 	for (long icand = 1; icand <= numberOfCandidates; icand ++) {
 		for (long icons = 1; icons <= numberOfConstraints; icons ++) {
@@ -149,7 +148,7 @@ void structOTMulti :: v_readText (MelderReadText text, int formatVersion) {
 	OTMulti_checkIndex (this);
 }
 
-Thing_implement (OTMulti, Data, 2);
+Thing_implement (OTMulti, Daata, 2);
 
 long OTMulti_getConstraintIndexFromName (OTMulti me, const char32 *name) {
 	for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -302,7 +301,7 @@ static void _OTMulti_fillInHarmonies (OTMulti me, const char32 *form1, const cha
 }
 
 static void _OTMulti_fillInProbabilities (OTMulti me, const char32 *form1, const char32 *form2) {
-	double maximumHarmony = -1e300;
+	double maximumHarmony = -1e308;
 	for (long icand = 1; icand <= my numberOfCandidates; icand ++) if (OTMulti_candidateMatches (me, icand, form1, form2)) {
 		OTCandidate candidate = & my candidates [icand];
 		if (candidate -> harmony > maximumHarmony) {
@@ -386,7 +385,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 	enum kOTGrammar_rerankingStrategy updateRule,
 	double plasticity, double relativePlasticityNoise)
 {
-	bool *grammarHasChanged = NULL;   // to be implemented
+	bool *grammarHasChanged = nullptr;   // to be implemented
 	bool warnIfStalled = false;   // to be implemented
 	if (iwinner == iloser) return;
 	OTCandidate winner = & my candidates [iwinner], loser = & my candidates [iloser];
@@ -414,12 +413,12 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 		if (loserMarks > winnerMarks) {
 			if (multiplyStepByNumberOfViolations) constraintStep *= loserMarks - winnerMarks;
 			constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak);
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		}
 		if (winnerMarks > loserMarks) {
 			if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - loserMarks;
 			constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak);
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		}
 	} else if (updateRule == kOTGrammar_rerankingStrategy_SYMMETRIC_ALL) {
 		bool changed = false;
@@ -449,7 +448,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 				my constraints [icons]. ranking -= averageWeight;
 			}
 		}
-		if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+		if (grammarHasChanged) *grammarHasChanged = changed;
 	} else if (updateRule == kOTGrammar_rerankingStrategy_SYMMETRIC_ALL_SKIPPABLE) {
 		bool changed = false;
 		int winningConstraints = 0, losingConstraints = 0;
@@ -485,7 +484,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 				my constraints [icons]. ranking -= averageWeight;
 			}
 		}
-		if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+		if (grammarHasChanged) *grammarHasChanged = changed;
 	} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_UNCANCELLED) {
 		int winningConstraints = 0, losingConstraints = 0;
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -504,13 +503,13 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 					if (multiplyStepByNumberOfViolations) constraintStep *= loserMarks - winnerMarks;
 					constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) / losingConstraints;
 					//constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) * winningConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 				if (winnerMarks > loserMarks) {
 					if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - loserMarks;
 					constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / winningConstraints;
 					//constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) * losingConstraints;
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 			}
 		}
@@ -530,12 +529,12 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 			if (loserMarks > 0) {
 				if (multiplyStepByNumberOfViolations) constraintStep *= loserMarks - winnerMarks;
 				constraint -> ranking -= constraintStep * (1.0 + constraint -> ranking * my leak) / losingConstraints;
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 			if (winnerMarks > 0) {
 				if (multiplyStepByNumberOfViolations) constraintStep *= winnerMarks - loserMarks;
 				constraint -> ranking += constraintStep * (1.0 - constraint -> ranking * my leak) / winningConstraints;
-				if (grammarHasChanged != NULL) *grammarHasChanged = true;
+				if (grammarHasChanged) *grammarHasChanged = true;
 			}
 		}
 	} else if (updateRule == kOTGrammar_rerankingStrategy_EDCD || updateRule == kOTGrammar_rerankingStrategy_EDCD_WITH_VACATION) {
@@ -578,7 +577,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 					OTConstraint constraint = & my constraints [icons];
 					if (constraint -> ranking < pivotRanking) {
 						constraint -> ranking -= numberOfConstraintsToDemote * step * constraint -> plasticity;
-						if (grammarHasChanged != NULL) *grammarHasChanged = true;
+						if (grammarHasChanged) *grammarHasChanged = true;
 					}
 				}
 			}
@@ -597,7 +596,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 				if (constraint -> ranking >= pivotRanking) {
 					numberOfConstraintsDemoted += 1;
 					constraint -> ranking = pivotRanking - numberOfConstraintsDemoted * constraintStep;   // This preserves the order of the demotees.
-					if (grammarHasChanged != NULL) *grammarHasChanged = true;
+					if (grammarHasChanged) *grammarHasChanged = true;
 				}
 			}
 		}
@@ -636,7 +635,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 			offendingConstraint = & my constraints [my index [crucialLoserMark]];
 			double constraintStep = step * offendingConstraint -> plasticity;
 			offendingConstraint -> ranking -= constraintStep;
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		}
 	} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGHEST_DOWN) {
 		bool changed = false;
@@ -693,7 +692,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 				offendingConstraint -> ranking -= /*numberOfUp **/ constraintStep * (1.0 - offendingConstraint -> ranking * my leak);
 			}
 		}
-		if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+		if (grammarHasChanged) *grammarHasChanged = changed;
 	} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGHEST_DOWN_2012) {
 		bool changed = false;
 		long numberOfUp = 0;
@@ -749,7 +748,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 				offendingConstraint -> ranking -= /*numberOfUp **/ constraintStep * (1.0 - offendingConstraint -> ranking * my leak);
 			}
 		}
-		if (grammarHasChanged != NULL) *grammarHasChanged = changed;
+		if (grammarHasChanged) *grammarHasChanged = changed;
 	} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGH_DOWN) {
 		long numberOfDown = 0, numberOfUp = 0, lowestDemotableConstraint = 0;
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
@@ -783,7 +782,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 					}
 				}
 			}
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		}
 	} else if (updateRule == kOTGrammar_rerankingStrategy_WEIGHTED_ALL_UP_HIGH_DOWN_2012) {
 		long numberOfDown = 0, numberOfUp = 0, lowestDemotableConstraint = 0;
@@ -818,7 +817,7 @@ static void OTMulti_modifyRankings (OTMulti me, long iwinner, long iloser,
 					}
 				}
 			}
-			if (grammarHasChanged != NULL) *grammarHasChanged = true;
+			if (grammarHasChanged) *grammarHasChanged = true;
 		}
 	}
 }
@@ -842,24 +841,24 @@ int OTMulti_learnOne (OTMulti me, const char32 *form1, const char32 *form2,
 	return 1;
 }
 
-static Table OTMulti_createHistory (OTMulti me, long storeHistoryEvery, long numberOfData)
+static autoTable OTMulti_createHistory (OTMulti me, long storeHistoryEvery, long numberOfData)
 {
 	try {
 		long numberOfSamplingPoints = numberOfData / storeHistoryEvery;   // e.g. 0, 20, 40, ...
 		autoTable thee = Table_createWithoutColumnNames (1 + numberOfSamplingPoints, 3 + my numberOfConstraints);
-		Table_setColumnLabel (thee.peek(), 1, U"Datum");
-		Table_setColumnLabel (thee.peek(), 2, U"Form1");
-		Table_setColumnLabel (thee.peek(), 3, U"Form2");
+		Table_setColumnLabel (thee.get(), 1, U"Datum");
+		Table_setColumnLabel (thee.get(), 2, U"Form1");
+		Table_setColumnLabel (thee.get(), 3, U"Form2");
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
-			Table_setColumnLabel (thee.peek(), 3 + icons, my constraints [icons]. name);
+			Table_setColumnLabel (thee.get(), 3 + icons, my constraints [icons]. name);
 		}
-		Table_setNumericValue (thee.peek(), 1, 1, 0);
-		Table_setStringValue (thee.peek(), 1, 2, U"(initial)");
-		Table_setStringValue (thee.peek(), 1, 3, U"(initial)");
+		Table_setNumericValue (thee.get(), 1, 1, 0);
+		Table_setStringValue (thee.get(), 1, 2, U"(initial)");
+		Table_setStringValue (thee.get(), 1, 3, U"(initial)");
 		for (long icons = 1; icons <= my numberOfConstraints; icons ++) {
-			Table_setNumericValue (thee.peek(), 1, 3 + icons, my constraints [icons]. ranking);
+			Table_setNumericValue (thee.get(), 1, 3 + icons, my constraints [icons]. ranking);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": history not created.");
 	}
@@ -886,7 +885,7 @@ static int OTMulti_updateHistory (OTMulti me, Table thee, long storeHistoryEvery
 
 void OTMulti_PairDistribution_learn (OTMulti me, PairDistribution thee, double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int direction,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
-	long numberOfPlasticities, double relativePlasticityNoise, long storeHistoryEvery, Table *history_out)
+	long numberOfPlasticities, double relativePlasticityNoise, long storeHistoryEvery, autoTable *history_out)
 {
 	long idatum = 0, numberOfData = numberOfPlasticities * replicationsPerPlasticity;
 	try {
@@ -897,7 +896,7 @@ void OTMulti_PairDistribution_learn (OTMulti me, PairDistribution thee, double e
 		}
 		autoTable history;
 		if (storeHistoryEvery) {
-			history.reset (OTMulti_createHistory (me, storeHistoryEvery, numberOfData));
+			history = OTMulti_createHistory (me, storeHistoryEvery, numberOfData);
 		}
 		for (long iplasticity = 1; iplasticity <= numberOfPlasticities; iplasticity ++) {
 			for (long ireplication = 1; ireplication <= replicationsPerPlasticity; ireplication ++) {
@@ -912,13 +911,14 @@ void OTMulti_PairDistribution_learn (OTMulti me, PairDistribution thee, double e
 							sumOfRankings += my constraints [icons]. ranking;
 						}
 						double meanRanking = sumOfRankings / numberOfDrawnConstraints;
+						Graphics_beginMovieFrame (monitor.graphics(), nullptr);
 						Graphics_setWindow (monitor.graphics(), 0, numberOfData, meanRanking - 50, meanRanking + 50);
 						for (long icons = 1; icons <= numberOfDrawnConstraints; icons ++) {
 							Graphics_setGrey (monitor.graphics(), (double) icons / numberOfDrawnConstraints);
 							Graphics_line (monitor.graphics(), idatum, my constraints [icons]. ranking,
 								idatum, my constraints [icons]. ranking+1);
 						}
-						Graphics_flushWs (monitor.graphics());   /* Because drawing is faster than progress loop. */
+						Graphics_endMovieFrame (monitor.graphics(), 0.0);
 					}
 				}
 				try {
@@ -927,26 +927,26 @@ void OTMulti_PairDistribution_learn (OTMulti me, PairDistribution thee, double e
 						U":\n      ", form1, U"     ", form2);
 				} catch (MelderError) {
 					if (history_out)
-						*history_out = history.transfer();   // so that we can inspect
+						*history_out = history.move();   // so that we can inspect
 					throw;
 				}
 				OTMulti_newDisharmonies (me, evaluationNoise);
 				try {
 					OTMulti_learnOne (me, form1, form2, updateRule, direction, plasticity, relativePlasticityNoise);
 				} catch (MelderError) {
-					if (history.peek()) {
-						OTMulti_updateHistory (me, history.peek(), storeHistoryEvery, idatum, form1, form2);
+					if (history) {
+						OTMulti_updateHistory (me, history.get(), storeHistoryEvery, idatum, form1, form2);
 					}
 					throw;
 				}
-				if (history.peek()) {
-					OTMulti_updateHistory (me, history.peek(), storeHistoryEvery, idatum, form1, form2);
+				if (history) {
+					OTMulti_updateHistory (me, history.get(), storeHistoryEvery, idatum, form1, form2);
 				}
 			}
 			plasticity *= plasticityDecrement;
 		}
 		if (history_out)
-			*history_out = history.transfer();
+			*history_out = history.move();
 	} catch (MelderError) {
 		if (idatum > 1)
 			Melder_appendError (U"Only ", idatum - 1, U" input-output pairs out of ", numberOfData, U" were processed.");
@@ -990,7 +990,7 @@ static long OTMulti_crucialCell (OTMulti me, long icand, long iwinner, long numb
 
 static double OTMulti_constraintWidth (Graphics g, OTConstraint constraint, bool showDisharmony) {
 	char32 text [100], *newLine;
-	double maximumWidth = showDisharmony ? 0.8 * Graphics_textWidth_ps (g, Melder_fixed (constraint -> disharmony, 1), TRUE) : 0.0,
+	double maximumWidth = showDisharmony ? 0.8 * Graphics_textWidth_ps (g, Melder_fixed (constraint -> disharmony, 1), true) : 0.0,
 		firstWidth, secondWidth;
 	str32cpy (text, constraint -> name);
 	newLine = str32chr (text, U'\n');
@@ -1064,7 +1064,7 @@ void OTMulti_drawTableau (OTMulti me, Graphics g, const char32 *form1, const cha
 	 * Compute longest candidate string.
 	 * Also count the number of optimal candidates (if there are more than one, the fingers will be drawn in red).
 	 */
-	double candWidth = Graphics_textWidth_ps (g, form1, TRUE) + Graphics_textWidth_ps (g, form2, true);
+	double candWidth = Graphics_textWidth_ps (g, form1, true) + Graphics_textWidth_ps (g, form2, true);
 	long numberOfMatchingCandidates = 0;
 	long numberOfOptimalCandidates = 0;
 	long numberOfOptimalCandidates1 = 0;
@@ -1397,7 +1397,7 @@ void OTMulti_generateOptimalForm (OTMulti me, const char32 *form1, const char32
 	}
 }
 
-Strings OTMulti_Strings_generateOptimalForms (OTMulti me, Strings thee, double evaluationNoise) {
+autoStrings OTMulti_Strings_generateOptimalForms (OTMulti me, Strings thee, double evaluationNoise) {
 	try {
 		autoStrings outputs = Thing_new (Strings);
 		long n = thy numberOfStrings;
@@ -1408,13 +1408,13 @@ Strings OTMulti_Strings_generateOptimalForms (OTMulti me, Strings thee, double e
 			OTMulti_generateOptimalForm (me, thy strings [i], U"", output, evaluationNoise);
 			outputs -> strings [i] = Melder_dup (output);
 		}
-		return outputs.transfer();
+		return outputs;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": optimal forms not generated.");
 	}
 }
 
-Strings OTMulti_generateOptimalForms (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise) {
+autoStrings OTMulti_generateOptimalForms (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise) {
 	try {
 		autoStrings outputs = Thing_new (Strings);
 		outputs -> numberOfStrings = numberOfTrials;
@@ -1424,13 +1424,13 @@ Strings OTMulti_generateOptimalForms (OTMulti me, const char32 *form1, const cha
 			OTMulti_generateOptimalForm (me, form1, form2, output, evaluationNoise);
 			outputs -> strings [i] = Melder_dup (output);
 		}
-		return outputs.transfer();
+		return outputs;
 	} catch (MelderError) {
 		Melder_throw (me, U": optimal forms not generated.");
 	}
 }
 
-Distributions OTMulti_to_Distribution (OTMulti me, const char32 *form1, const char32 *form2,
+autoDistributions OTMulti_to_Distribution (OTMulti me, const char32 *form1, const char32 *form2,
 	long numberOfTrials, double evaluationNoise)
 {
 	try {
@@ -1466,7 +1466,7 @@ Distributions OTMulti_to_Distribution (OTMulti me, const char32 *form1, const ch
 			long iwinner = OTMulti_getWinner (me, form1, form2);
 			thy data [index [iwinner]] [1] += 1;
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": distribution not computed.");
 	}
diff --git a/gram/OTMulti.h b/gram/OTMulti.h
index 4ba1560..8a5a004 100644
--- a/gram/OTMulti.h
+++ b/gram/OTMulti.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2005-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -25,7 +24,6 @@
 #include "OTGrammar.h"
 
 #include "OTMulti_def.h"
-oo_CLASS_CREATE (OTMulti, Data);
 
 long OTMulti_getConstraintIndexFromName (OTMulti me, const char32 *name);
 
@@ -52,11 +50,11 @@ int OTMulti_learnOne (OTMulti me, const char32 *form1, const char32 *form2,
 void OTMulti_PairDistribution_learn (OTMulti me, PairDistribution thee,
 	double evaluationNoise, enum kOTGrammar_rerankingStrategy updateRule, int direction,
 	double initialPlasticity, long replicationsPerPlasticity, double plasticityDecrement,
-	long numberOfPlasticities, double relativePlasticityNoise, long storeHistoryEvery, Table *history_out);
+	long numberOfPlasticities, double relativePlasticityNoise, long storeHistoryEvery, autoTable *history_out);
 
 void OTMulti_drawTableau (OTMulti me, Graphics g, const char32 *form1, const char32 *form2, bool vertical, bool showDisharmonies);
 
-OTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
+autoOTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
 	int includePeripheral, int nonfinalityConstraint, int overtFormsHaveSecondaryStress,
 	int includeClashAndLapse, int includeCodas);
 
@@ -66,9 +64,9 @@ void OTMulti_setConstraintPlasticity (OTMulti me, long constraint, double plasti
 void OTMulti_removeConstraint (OTMulti me, const char32 *constraintName);
 
 void OTMulti_generateOptimalForm (OTMulti me, const char32 *form1, const char32 *form2, char32 *optimalForm, double evaluationNoise);
-Strings OTMulti_generateOptimalForms (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise);
-Distributions OTMulti_to_Distribution (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise);
-Strings OTMulti_Strings_generateOptimalForms (OTMulti me, Strings forms, double evaluationNoise);
+autoStrings OTMulti_generateOptimalForms (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise);
+autoDistributions OTMulti_to_Distribution (OTMulti me, const char32 *form1, const char32 *form2, long numberOfTrials, double evaluationNoise);
+autoStrings OTMulti_Strings_generateOptimalForms (OTMulti me, Strings forms, double evaluationNoise);
 
 /* End of file OTMulti.h */
 #endif
diff --git a/gram/OTMultiEditor.cpp b/gram/OTMultiEditor.cpp
index 3671535..50ce949 100644
--- a/gram/OTMultiEditor.cpp
+++ b/gram/OTMultiEditor.cpp
@@ -1,20 +1,19 @@
 /* OTMultiEditor.cpp
  *
- * Copyright (C) 2005-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2005-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,38 +29,34 @@
 
 Thing_implement (OTMultiEditor, HyperPage, 0);
 
-static void menu_cb_evaluate (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
-	EDITOR_FORM (U"Evaluate", 0)
+static void menu_cb_evaluate (OTMultiEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Evaluate", nullptr)
 		REAL (U"Evaluation noise", U"2.0")
 	EDITOR_OK
 	EDITOR_DO
 		Editor_save (me, U"Evaluate");
 		OTMulti_newDisharmonies ((OTMulti) my data, GET_REAL (U"Evaluation noise"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_evaluate_noise_2_0 (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
+static void menu_cb_evaluate_noise_2_0 (OTMultiEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Evaluate (noise 2.0)");
 	OTMulti_newDisharmonies ((OTMulti) my data, 2.0);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_evaluate_tinyNoise (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
+static void menu_cb_evaluate_tinyNoise (OTMultiEditor me, EDITOR_ARGS_DIRECT) {
 	Editor_save (me, U"Evaluate (tiny noise)");
 	OTMulti_newDisharmonies ((OTMulti) my data, 1e-9);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_editRanking (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
-	EDITOR_FORM (U"Edit ranking", 0)
+static void menu_cb_editRanking (OTMultiEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Edit ranking", nullptr)
 		LABEL (U"constraint", U"");
 		REAL (U"Ranking value", U"100.0");
 		REAL (U"Disharmony", U"100.0");
@@ -81,13 +76,12 @@ static void menu_cb_editRanking (EDITOR_ARGS) {
 		constraint -> ranking = GET_REAL (U"Ranking value");
 		constraint -> disharmony = GET_REAL (U"Disharmony");
 		OTMulti_sort (grammar);
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_learnOne (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
+static void menu_cb_learnOne (OTMultiEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Learn one", U"OTGrammar: Learn one...")
 		OPTIONMENU_ENUM (U"Update rule", kOTGrammar_rerankingStrategy, kOTGrammar_rerankingStrategy_SYMMETRIC_ALL)
 		OPTIONMENU (U"Direction", 3)
@@ -106,39 +100,35 @@ static void menu_cb_learnOne (EDITOR_ARGS) {
 		OTMulti_learnOne ((OTMulti) my data, my form1, my form2,
 			GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"), GET_INTEGER (U"Direction"),
 			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_removeConstraint (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
+static void menu_cb_removeConstraint (OTMultiEditor me, EDITOR_ARGS_DIRECT) {
 	OTMulti grammar = (OTMulti) my data;
 	if (my selectedConstraint < 1 || my selectedConstraint > grammar -> numberOfConstraints)
 		Melder_throw (U"Select a constraint first.");
 	OTConstraint constraint = & grammar -> constraints [grammar -> index [my selectedConstraint]];
 	Editor_save (me, U"Remove constraint");
 	OTMulti_removeConstraint (grammar, constraint -> name);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_resetAllRankings (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
-	EDITOR_FORM (U"Reset all rankings", 0)
+static void menu_cb_resetAllRankings (OTMultiEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Reset all rankings", nullptr)
 		REAL (U"Ranking", U"100.0")
 	EDITOR_OK
 	EDITOR_DO
 		Editor_save (me, U"Reset all rankings");
 		OTMulti_reset ((OTMulti) my data, GET_REAL (U"Ranking"));
-		Graphics_updateWs (my g);
+		Graphics_updateWs (my graphics.get());
 		Editor_broadcastDataChanged (me);
 	EDITOR_END
 }
 
-static void menu_cb_OTLearningTutorial (EDITOR_ARGS) {
-	EDITOR_IAM (OTMultiEditor);
-	(void) me;
+static void menu_cb_OTLearningTutorial (OTMultiEditor, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"OT learning");
 }
 
@@ -147,17 +137,10 @@ static void do_limit (OTMultiEditor me) {
 	Melder_free (my form2);
 	my form1 = GuiText_getString (my form1Text);
 	my form2 = GuiText_getString (my form2Text);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 }
 
-static void gui_button_cb_limit (I, GuiButtonEvent event) {
-	(void) event;
-	iam (OTMultiEditor);
-	do_limit (me);
-}
-
-static void gui_cb_limit (GUI_ARGS) {
-	GUI_IAM (OTMultiEditor);
+static void gui_button_cb_limit (OTMultiEditor me, GuiButtonEvent /* event */) {
 	do_limit (me);
 }
 
@@ -179,14 +162,14 @@ void structOTMultiEditor :: v_createChildren () {
 
 void structOTMultiEditor :: v_createMenus () {
 	OTMultiEditor_Parent :: v_createMenus ();
-	Editor_addCommand (this, U"Edit", U"-- edit ot --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- edit ot --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Evaluate...", 0, menu_cb_evaluate);
 	Editor_addCommand (this, U"Edit", U"Evaluate (noise 2.0)", '2', menu_cb_evaluate_noise_2_0);
 	Editor_addCommand (this, U"Edit", U"Evaluate (tiny noise)", '9', menu_cb_evaluate_tinyNoise);
 	Editor_addCommand (this, U"Edit", U"Edit ranking...", 'E', menu_cb_editRanking);
 	Editor_addCommand (this, U"Edit", U"Reset all rankings...", 'R', menu_cb_resetAllRankings);
 	Editor_addCommand (this, U"Edit", U"Learn one...", '1', menu_cb_learnOne);
-	Editor_addCommand (this, U"Edit", U"-- remove --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- remove --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Remove constraint", 0, menu_cb_removeConstraint);
 }
 
@@ -206,7 +189,7 @@ void structOTMultiEditor :: v_draw () {
 	OTMulti grammar = (OTMulti) data;
 	static MelderString buffer { 0 };
 	double rowHeight = 0.25, tableauHeight = 2 * rowHeight;
-	Graphics_clearWs (g);
+	Graphics_clearWs (graphics.get());
 	HyperPage_listItem (this, U"\t\t      %%ranking value\t      %disharmony\t      %plasticity");
 	for (long icons = 1; icons <= grammar -> numberOfConstraints; icons ++) {
 		OTConstraint constraint = & grammar -> constraints [grammar -> index [icons]];
@@ -217,7 +200,7 @@ void structOTMultiEditor :: v_draw () {
 		);
 		HyperPage_listItem (this, buffer.string);
 	}
-	Graphics_setAtSignIsLink (g, FALSE);
+	Graphics_setAtSignIsLink (graphics.get(), false);
 	drawTableau_grammar = grammar;
 	for (long icand = 1; icand <= grammar -> numberOfCandidates; icand ++) {
 		if (OTMulti_candidateMatches (grammar, icand, form1, form2)) {
@@ -228,23 +211,23 @@ void structOTMultiEditor :: v_draw () {
 	drawTableau_form2 = form2;
 	drawTableau_constraintsAreDrawnVertically = d_constraintsAreDrawnVertically;
 	HyperPage_picture (this, 20, tableauHeight, drawTableau);
-	Graphics_setAtSignIsLink (g, TRUE);
+	Graphics_setAtSignIsLink (graphics.get(), true);
 }
 
 int structOTMultiEditor :: v_goToPage (const char32 *title) {
-	if (title == NULL) return 1;
+	if (! title) return 1;
 	selectedConstraint = Melder_atoi (title);
 	return 1;
 }
 
-OTMultiEditor OTMultiEditor_create (const char32 *title, OTMulti grammar) {
+autoOTMultiEditor OTMultiEditor_create (const char32 *title, OTMulti grammar) {
 	try {
 		autoOTMultiEditor me = Thing_new (OTMultiEditor);
 		my data = grammar;
 		my form1 = Melder_dup (U"");
 		my form2 = Melder_dup (U"");
-		HyperPage_init (me.peek(), title, grammar);
-		return me.transfer();
+		HyperPage_init (me.get(), title, grammar);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"OTMulti window not created.");
 	}
diff --git a/gram/OTMultiEditor.h b/gram/OTMultiEditor.h
index 286be75..ca596ff 100644
--- a/gram/OTMultiEditor.h
+++ b/gram/OTMultiEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2005-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "HyperPage.h"
@@ -42,7 +41,7 @@ Thing_define (OTMultiEditor, HyperPage) {
 		override;
 };
 
-OTMultiEditor OTMultiEditor_create (const char32 *title, OTMulti grammar);
+autoOTMultiEditor OTMultiEditor_create (const char32 *title, OTMulti grammar);
 
 /* End of file OTMultiEditor.h */
 #endif
diff --git a/gram/OTMulti_def.h b/gram/OTMulti_def.h
index ed6c00e..7181853 100644
--- a/gram/OTMulti_def.h
+++ b/gram/OTMulti_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2005-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -27,11 +26,13 @@ oo_DEFINE_STRUCT (OTConstraint)
 	oo_FROM (2)
 		oo_DOUBLE (plasticity)
 	oo_ENDFROM
+
 	#if oo_READING
 		if (formatVersion < 2) {
 			plasticity = 1.0;
 		}
 	#endif
+
 	#if !oo_READING && !oo_WRITING
 		oo_INT (tiedToTheLeft)
 		oo_INT (tiedToTheRight)
@@ -47,6 +48,7 @@ oo_DEFINE_STRUCT (OTCandidate)
 	oo_STRING (string)
 	oo_LONG (numberOfConstraints)
 	oo_INT_VECTOR (marks, numberOfConstraints)
+
 	#if !oo_READING && !oo_WRITING
 		oo_DOUBLE (harmony)
 		oo_DOUBLE (probability)
@@ -57,7 +59,7 @@ oo_END_STRUCT (OTCandidate)
 
 
 #define ooSTRUCT OTMulti
-oo_DEFINE_CLASS (OTMulti, Data)
+oo_DEFINE_CLASS (OTMulti, Daata)
 
 	oo_FROM (1)
 		oo_ENUM (kOTGrammar_decisionStrategy, decisionStrategy)
@@ -70,6 +72,7 @@ oo_DEFINE_CLASS (OTMulti, Data)
 	oo_LONG_VECTOR (index, numberOfConstraints)
 	oo_LONG (numberOfCandidates)
 	oo_STRUCT_VECTOR (OTCandidate, candidates, numberOfCandidates)
+
 	#if oo_READING
 		OTMulti_sort (this);
 	#endif
diff --git a/gram/OTMulti_ex_metrics.cpp b/gram/OTMulti_ex_metrics.cpp
index 46d011f..5ffa425 100644
--- a/gram/OTMulti_ex_metrics.cpp
+++ b/gram/OTMulti_ex_metrics.cpp
@@ -1,20 +1,19 @@
 /* OTMulti_ex_metrics.cpp
  *
- * Copyright (C) 2014,2015 Paul Boersma
+ * Copyright (C) 2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "OTMulti.h"
@@ -51,7 +50,7 @@ static const char32 *constraintNames [1+NUMBER_OF_CONSTRAINTS] { 0,
 	U"Trochaic", U"FtBimor", U"FtBisyl", U"Peripheral", U"MainNonfinal", U"HeadNonfinal", U"*Clash", U"*Lapse", U"WeightByPosition", U"*C\\mu" };
 
 static void addCandidate (OTMulti me, const char32 *underlyingForm, long numberOfSyllables, int stress [],
-	int footedToTheLeft [], int footedToTheRight [], int surfaceWeightPattern [],
+	bool footedToTheLeft [], bool footedToTheRight [], int surfaceWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
 	static const char32 *syllable [] { U"L", U"L1", U"L2", U"H", U"H1", U"H2", U"K", U"K1", U"K2", U"J", U"J1", U"J2" };
@@ -76,7 +75,7 @@ static void addCandidate (OTMulti me, const char32 *underlyingForm, long numberO
 }
 
 static void fillSurfaceWeightPattern (OTMulti me, const char32 *underlyingForm, long numberOfSyllables, int stress [],
-	int footedToTheLeft [], int footedToTheRight [], int underlyingWeightPattern [],
+	bool footedToTheLeft [], bool footedToTheRight [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
 	int surfaceWeightPattern [1+7], minSurfaceWeight [1+7], maxSurfaceWeight [1+7];
@@ -114,10 +113,10 @@ static void fillSurfaceWeightPattern (OTMulti me, const char32 *underlyingForm,
 }
 
 static void path (OTMulti me, const char32 *underlyingForm, long numberOfSyllables, int stress [],
-	int startingSyllable, int footedToTheLeft_in [], int footedToTheRight_in [], int underlyingWeightPattern [],
+	int startingSyllable, bool footedToTheLeft_in [], bool footedToTheRight_in [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
-	int footedToTheLeft [10], footedToTheRight [10];
+	bool footedToTheLeft [10], footedToTheRight [10];
 	long isyll;
 	/* Localize all arguments. */
 	for (isyll = 1; isyll <= startingSyllable; isyll ++) {
@@ -132,18 +131,18 @@ static void path (OTMulti me, const char32 *underlyingForm, long numberOfSyllabl
 		path (me, underlyingForm, numberOfSyllables, stress, startingSyllable + 1,
 			footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 		if (stress [startingSyllable] == 0 && startingSyllable < numberOfSyllables && stress [startingSyllable + 1] != 0) {
-			footedToTheLeft [startingSyllable + 1] = TRUE;
-			footedToTheRight [startingSyllable] = TRUE;
+			footedToTheLeft [startingSyllable + 1] = true;
+			footedToTheRight [startingSyllable] = true;
 			path (me, underlyingForm, numberOfSyllables, stress, startingSyllable + 1,
 				footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-			footedToTheLeft [startingSyllable + 1] = FALSE;
-			footedToTheRight [startingSyllable] = FALSE;
+			footedToTheLeft [startingSyllable + 1] = false;
+			footedToTheRight [startingSyllable] = false;
 		}
 		if (stress [startingSyllable] == 0 && startingSyllable > 1 && stress [startingSyllable - 1] != 0
 		    && ! footedToTheLeft [startingSyllable - 1])
 		{
-			footedToTheRight [startingSyllable - 1] = TRUE;
-			footedToTheLeft [startingSyllable] = TRUE;
+			footedToTheRight [startingSyllable - 1] = true;
+			footedToTheLeft [startingSyllable] = true;
 			path (me, underlyingForm, numberOfSyllables, stress, startingSyllable + 1,
 				footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 		}
@@ -153,7 +152,7 @@ static void path (OTMulti me, const char32 *underlyingForm, long numberOfSyllabl
 static void fillOvertStressPattern (OTMulti me, const char32 *underlyingForm, long numberOfSyllables, int stress [], int underlyingWeightPattern [],
 	int overtFormsHaveSecondaryStress)
 {
-	int footedToTheLeft [10], footedToTheRight [10];
+	bool footedToTheLeft [10], footedToTheRight [10];
 	for (int isyll = 1; isyll <= numberOfSyllables; isyll ++)
 		footedToTheLeft [isyll] = footedToTheRight [isyll] = 0;
 	path (me, underlyingForm, numberOfSyllables, stress, 1, footedToTheLeft, footedToTheRight, underlyingWeightPattern, overtFormsHaveSecondaryStress);
@@ -175,27 +174,27 @@ static void fillTableau (OTMulti me, long numberOfSyllables, int underlyingWeigh
 	for (long mainStressed = 1; mainStressed <= numberOfSyllables; mainStressed ++) {
 		int stress [10];
 		stress [mainStressed] = 1;
-		for (int secondary1 = FALSE; secondary1 <= TRUE; secondary1 ++) {
+		for (int secondary1 = false; secondary1 <= true; secondary1 ++) {
 			stress [mainStressed <= 1 ? 2 : 1] = secondary1 ? 2 : 0;
 			if (numberOfSyllables == 2) {
 				fillOvertStressPattern (me, underlyingForm, 2, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-			} else for (int secondary2 = FALSE; secondary2 <= TRUE; secondary2 ++) {
+			} else for (int secondary2 = false; secondary2 <= true; secondary2 ++) {
 				stress [mainStressed <= 2 ? 3 : 2] = secondary2 ? 2 : 0;
 				if (numberOfSyllables == 3) {
 					fillOvertStressPattern (me, underlyingForm, 3, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-				} else for (int secondary3 = FALSE; secondary3 <= TRUE; secondary3 ++) {
+				} else for (int secondary3 = false; secondary3 <= true; secondary3 ++) {
 					stress [mainStressed <= 3 ? 4 : 3] = secondary3 ? 2 : 0;
 					if (numberOfSyllables == 4) {
 						fillOvertStressPattern (me, underlyingForm, 4, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-					} else for (int secondary4 = FALSE; secondary4 <= TRUE; secondary4 ++) {
+					} else for (int secondary4 = false; secondary4 <= true; secondary4 ++) {
 						stress [mainStressed <= 4 ? 5 : 4] = secondary4 ? 2 : 0;
 						if (numberOfSyllables == 5) {
 							fillOvertStressPattern (me, underlyingForm, 5, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-						} else for (int secondary5 = FALSE; secondary5 <= TRUE; secondary5 ++) {
+						} else for (int secondary5 = false; secondary5 <= true; secondary5 ++) {
 							stress [mainStressed <= 5 ? 6 : 5] = secondary5 ? 2 : 0;
 							if (numberOfSyllables == 6) {
 								fillOvertStressPattern (me, underlyingForm, 6, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
-							} else for (int secondary6 = FALSE; secondary6 <= TRUE; secondary6 ++) {
+							} else for (int secondary6 = false; secondary6 <= true; secondary6 ++) {
 								stress [mainStressed <= 6 ? 7 : 6] = secondary6 ? 2 : 0;
 								fillOvertStressPattern (me, underlyingForm, 7, stress, underlyingWeightPattern, overtFormsHaveSecondaryStress);
 							}
@@ -376,8 +375,8 @@ static void computeViolationMarks (OTCandidate me) {
 }
 
 static void replaceOutput (OTCandidate me) {
-	int abstract = FALSE;
-	Melder_assert (my string != NULL);
+	bool abstract = false;
+	Melder_assert (my string);
 	char32 newString [150], *q = & newString [0];
 	for (const char32 *p = & my string [0]; *p != U'\0'; p ++) {
 		if (p [0] == U' ') {
@@ -411,7 +410,7 @@ static void replaceOutput (OTCandidate me) {
 		} else if (isStress (p [0]) && abstract) {
 			;
 		} else {
-			if (p [0] == U'/') abstract = TRUE;
+			if (p [0] == U'/') abstract = true;
 			*q ++ = p [0];
 		}
 	}
@@ -420,7 +419,7 @@ static void replaceOutput (OTCandidate me) {
 	my string = Melder_dup (newString);
 }
 
-OTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
+autoOTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstraint, int includeFootBimoraic, int includeFootBisyllabic,
 	int includePeripheral, int nonfinalityConstraint, int overtFormsHaveSecondaryStress,
 	int includeClashAndLapse, int includeCodas)
 {
@@ -457,7 +456,7 @@ OTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstrain
 				underlyingWeightPattern [isyll] = 1;   /* L or cv */
 			}
 			for (long iweightPattern = 1; iweightPattern <= numberOfUnderlyingWeightPatterns; iweightPattern ++) {
-				fillTableau (me.peek(), numberOfSyllables, underlyingWeightPattern, overtFormsHaveSecondaryStress, includeCodas);
+				fillTableau (me.get(), numberOfSyllables, underlyingWeightPattern, overtFormsHaveSecondaryStress, includeCodas);
 				/*
 				 * Cycle to next underlying weight pattern.
 				 */
@@ -475,40 +474,40 @@ OTMulti OTMulti_create_metrics (int equal_footForm_wsp, int trochaicityConstrain
 		for (long icand = 1; icand <= my numberOfCandidates; icand ++) {
 			computeViolationMarks (& my candidates [icand]);
 		}
-		OTMulti_checkIndex (me.peek());
-		OTMulti_newDisharmonies (me.peek(), 0.0);
+		OTMulti_checkIndex (me.get());
+		OTMulti_newDisharmonies (me.get(), 0.0);
 		if (trochaicityConstraint == 1) {
-			OTMulti_removeConstraint (me.peek(), U"Trochaic");
+			OTMulti_removeConstraint (me.get(), U"Trochaic");
 		} else {
-			OTMulti_removeConstraint (me.peek(), U"FtNonfinal");
+			OTMulti_removeConstraint (me.get(), U"FtNonfinal");
 		}
-		if (! includeFootBimoraic) OTMulti_removeConstraint (me.peek(), U"FtBimor");
-		if (! includeFootBisyllabic) OTMulti_removeConstraint (me.peek(), U"FtBisyl");
-		if (! includePeripheral) OTMulti_removeConstraint (me.peek(), U"Peripheral");
+		if (! includeFootBimoraic) OTMulti_removeConstraint (me.get(), U"FtBimor");
+		if (! includeFootBisyllabic) OTMulti_removeConstraint (me.get(), U"FtBisyl");
+		if (! includePeripheral) OTMulti_removeConstraint (me.get(), U"Peripheral");
 		if (nonfinalityConstraint == 1) {
-			OTMulti_removeConstraint (me.peek(), U"MainNonfinal");
-			OTMulti_removeConstraint (me.peek(), U"HeadNonfinal");
+			OTMulti_removeConstraint (me.get(), U"MainNonfinal");
+			OTMulti_removeConstraint (me.get(), U"HeadNonfinal");
 		} else if (nonfinalityConstraint == 2) {
-			OTMulti_removeConstraint (me.peek(), U"HeadNonfinal");
-			OTMulti_removeConstraint (me.peek(), U"Nonfinal");
+			OTMulti_removeConstraint (me.get(), U"HeadNonfinal");
+			OTMulti_removeConstraint (me.get(), U"Nonfinal");
 		} else {
-			OTMulti_removeConstraint (me.peek(), U"MainNonfinal");
-			OTMulti_removeConstraint (me.peek(), U"Nonfinal");
+			OTMulti_removeConstraint (me.get(), U"MainNonfinal");
+			OTMulti_removeConstraint (me.get(), U"Nonfinal");
 		}
 		if (! includeClashAndLapse) {
-			OTMulti_removeConstraint (me.peek(), U"*Clash");
-			OTMulti_removeConstraint (me.peek(), U"*Lapse");
+			OTMulti_removeConstraint (me.get(), U"*Clash");
+			OTMulti_removeConstraint (me.get(), U"*Lapse");
 		}
 		if (! includeCodas) {
-			OTMulti_removeConstraint (me.peek(), U"WeightByPosition");
-			OTMulti_removeConstraint (me.peek(), U"*C\\mu");
+			OTMulti_removeConstraint (me.get(), U"WeightByPosition");
+			OTMulti_removeConstraint (me.get(), U"*C\\mu");
 		}
 		if (includeCodas) {
 			for (long icand = 1; icand <= my numberOfCandidates; icand ++) {
 				replaceOutput (& my candidates [icand]);
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Metrics grammar not created.");
 	}
diff --git a/gram/RBM.cpp b/gram/RBM.cpp
new file mode 100644
index 0000000..faea0a2
--- /dev/null
+++ b/gram/RBM.cpp
@@ -0,0 +1,253 @@
+/* RBM.cpp
+ *
+ * Copyright (C) 2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+//#include <OpenCL/OpenCL.h>
+#include "RBM.h"
+
+#include "oo_DESTROY.h"
+#include "RBM_def.h"
+#include "oo_COPY.h"
+#include "RBM_def.h"
+#include "oo_EQUAL.h"
+#include "RBM_def.h"
+#include "oo_CAN_WRITE_AS_ENCODING.h"
+#include "RBM_def.h"
+#include "oo_WRITE_TEXT.h"
+#include "RBM_def.h"
+#include "oo_READ_TEXT.h"
+#include "RBM_def.h"
+#include "oo_WRITE_BINARY.h"
+#include "RBM_def.h"
+#include "oo_READ_BINARY.h"
+#include "RBM_def.h"
+#include "oo_DESCRIPTION.h"
+#include "RBM_def.h"
+
+void structRBM :: v_info ()
+{
+	structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of input nodes: ", our numberOfInputNodes);
+	MelderInfo_writeLine (U"Number of output nodes: ", our numberOfOutputNodes);
+}
+
+Thing_implement (RBM, Daata, 0);
+
+void RBM_init (RBM me, long numberOfInputNodes, long numberOfOutputNodes, bool inputsAreBinary) {
+	my numberOfInputNodes = numberOfInputNodes;
+	my inputBiases = NUMvector <double> (1, numberOfInputNodes);
+	my inputActivities = NUMvector<double> (1, numberOfInputNodes);
+	my inputReconstruction = NUMvector<double> (1, numberOfInputNodes);
+	my numberOfOutputNodes = numberOfOutputNodes;
+	my outputBiases = NUMvector <double> (1, numberOfOutputNodes);
+	my outputActivities = NUMvector<double> (1, numberOfOutputNodes);
+	my outputReconstruction = NUMvector<double> (1, numberOfOutputNodes);
+	my weights = NUMmatrix<double> (1, numberOfInputNodes, 1, numberOfOutputNodes);
+	my inputsAreBinary = inputsAreBinary;
+}
+
+autoRBM RBM_create (long numberOfInputNodes, long numberOfOutputNodes, bool inputsAreBinary) {
+	try {
+		autoRBM me = Thing_new (RBM);
+		RBM_init (me.get(), numberOfInputNodes, numberOfOutputNodes, inputsAreBinary);
+		return me;
+	} catch (MelderError) {
+		Melder_throw (U"RBM not created.");
+	}
+}
+
+inline static double logistic (double excitation) {
+	return 1.0 / (1.0 + exp (- excitation));
+}
+
+void RBM_spreadUp (RBM me) {
+	for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+		double excitation = my outputBiases [jnode];
+		for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+			excitation += my inputActivities [inode] * my weights [inode] [jnode];
+		}
+		my outputActivities [jnode] = logistic (excitation);
+	}
+}
+
+void RBM_sampleInput (RBM me) {
+	for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+		if (my inputsAreBinary) {
+			double probability = my inputActivities [inode];
+			my inputActivities [inode] = (double) NUMrandomBernoulli (probability);
+		} else {   // Gaussian
+			double excitation = my inputActivities [inode];
+			my inputActivities [inode] = NUMrandomGauss (excitation, 1.0);
+		}
+	}
+}
+
+void RBM_sampleOutput (RBM me) {
+	for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+		double probability = my outputActivities [jnode];
+		my outputActivities [jnode] = (double) NUMrandomBernoulli (probability);
+	}
+}
+
+void RBM_spreadDown (RBM me) {
+	for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+		double excitation = my inputBiases [inode];
+		for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+			excitation += my weights [inode] [jnode] * my outputActivities [jnode];
+		}
+		if (my inputsAreBinary) {
+			my inputActivities [inode] = logistic (excitation);
+		} else {   // linear
+			my inputActivities [inode] = excitation;
+		}
+	}
+}
+
+void RBM_spreadDown_reconstruction (RBM me) {
+	for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+		double excitation = my inputBiases [inode];
+		for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+			excitation += my weights [inode] [jnode] * my outputActivities [jnode];
+		}
+		if (my inputsAreBinary) {
+			my inputReconstruction [inode] = logistic (excitation);
+		} else {   // linear
+			my inputReconstruction [inode] = excitation;
+		}
+	}
+}
+
+void RBM_spreadUp_reconstruction (RBM me) {
+	for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+		double excitation = my outputBiases [jnode];
+		for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+			excitation += my inputReconstruction [inode] * my weights [inode] [jnode];
+		}
+		my outputReconstruction [jnode] = logistic (excitation);
+	}
+}
+
+void RBM_update (RBM me, double learningRate) {
+	for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+		my outputBiases [jnode] += learningRate * (my outputActivities [jnode] - my outputReconstruction [jnode]);
+	}
+	for (long inode = 1; inode <= my numberOfInputNodes; inode ++) {
+		my inputBiases [inode] += learningRate * (my inputActivities [inode] - my inputReconstruction [inode]);
+		for (long jnode = 1; jnode <= my numberOfOutputNodes; jnode ++) {
+			my weights [inode] [jnode] += learningRate *
+				(my inputActivities [inode] * my outputActivities [jnode] -
+				 my inputReconstruction [inode] * my outputReconstruction [jnode]);
+		}
+	}
+}
+
+void RBM_Pattern_applyToInput (RBM me, Pattern thee, long rowNumber) {
+	Melder_assert (my numberOfInputNodes == thy nx);
+	for (long ifeature = 1; ifeature <= my numberOfInputNodes; ifeature ++) {
+		my inputActivities [ifeature] = thy z [rowNumber] [ifeature];
+	}
+}
+
+void RBM_Pattern_applyToOutput (RBM me, Pattern thee, long rowNumber) {
+	Melder_assert (my numberOfOutputNodes == thy nx);
+	for (long icat = 1; icat <= my numberOfOutputNodes; icat ++) {
+		my outputActivities [icat] = thy z [rowNumber] [icat];
+	}
+}
+
+void RBM_Pattern_learn (RBM me, Pattern thee, double learningRate) {
+	for (long ipattern = 1; ipattern <= thy ny; ipattern ++) {
+		RBM_Pattern_applyToInput (me, thee, ipattern);
+		RBM_spreadUp (me);
+		RBM_sampleOutput (me);
+		RBM_spreadDown_reconstruction (me);
+		RBM_spreadUp_reconstruction (me);
+		RBM_update (me, learningRate);
+	}
+}
+
+autoMatrix RBM_extractInputActivities (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfInputNodes);
+		NUMvector_copyElements <double> (my inputActivities, thy z [1], 1, my numberOfInputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": input activities not extracted.");
+	}
+}
+
+autoMatrix RBM_extractOutputActivities (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfOutputNodes);
+		NUMvector_copyElements <double> (my outputActivities, thy z [1], 1, my numberOfOutputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": output activities not extracted.");
+	}
+}
+
+autoMatrix RBM_extractInputReconstruction (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfInputNodes);
+		NUMvector_copyElements <double> (my inputReconstruction, thy z [1], 1, my numberOfInputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": input reconstruction not extracted.");
+	}
+}
+
+autoMatrix RBM_extractOutputReconstruction (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfOutputNodes);
+		NUMvector_copyElements <double> (my outputReconstruction, thy z [1], 1, my numberOfOutputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": output reconstruction not extracted.");
+	}
+}
+
+autoMatrix RBM_extractInputBiases (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfInputNodes);
+		NUMvector_copyElements <double> (my inputBiases, thy z [1], 1, my numberOfInputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": input biases not extracted.");
+	}
+}
+
+autoMatrix RBM_extractOutputBiases (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (1, my numberOfOutputNodes);
+		NUMvector_copyElements <double> (my outputBiases, thy z [1], 1, my numberOfOutputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": input biases not extracted.");
+	}
+}
+
+autoMatrix RBM_extractWeights (RBM me) {
+	try {
+		autoMatrix thee = Matrix_createSimple (my numberOfInputNodes, my numberOfOutputNodes);
+		NUMmatrix_copyElements <double> (my weights, thy z, 1, my numberOfInputNodes, 1, my numberOfOutputNodes);
+		return thee;
+	} catch (MelderError) {
+		Melder_throw (me, U": weights not extracted.");
+	}
+}
+
+/* End of file RBM.cpp */
diff --git a/gram/RBM.h b/gram/RBM.h
new file mode 100644
index 0000000..eb25baf
--- /dev/null
+++ b/gram/RBM.h
@@ -0,0 +1,52 @@
+#ifndef _RBM_h_
+#define _RBM_h_
+/* RBM
+ *
+ * Copyright (C) 2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "Table.h"
+#include "Pattern.h"
+
+#include "RBM_def.h"
+
+void RBM_init (RBM me, long numberOfInputNodes, long numberOfOutputNodes, bool inputsAreBinary);
+
+autoRBM RBM_create (long numberOfInputNodes, long numberOfOutputNodes, bool inputsAreBinary);
+
+void RBM_spreadUp (RBM me);
+void RBM_spreadDown (RBM me);
+void RBM_spreadDown_reconstruction (RBM me);
+void RBM_spreadUp_reconstruction (RBM me);
+void RBM_sampleInput (RBM me);
+void RBM_sampleOutput (RBM me);
+void RBM_update (RBM me, double learningRate);
+
+void RBM_Pattern_applyToInput (RBM me, Pattern thee, long rowNumber);
+void RBM_Pattern_applyToOutput (RBM me, Pattern thee, long rowNumber);
+void RBM_Pattern_learn (RBM me, Pattern thee, double learningRate);
+
+autoMatrix RBM_extractInputActivities (RBM me);
+autoMatrix RBM_extractOutputActivities (RBM me);
+autoMatrix RBM_extractInputReconstruction (RBM me);
+autoMatrix RBM_extractOutputReconstruction (RBM me);
+
+autoMatrix RBM_extractInputBiases (RBM me);
+autoMatrix RBM_extractOutputBiases (RBM me);
+autoMatrix RBM_extractWeights (RBM me);
+
+/* End of file RBM.h */
+#endif
diff --git a/gram/RBM_def.h b/gram/RBM_def.h
new file mode 100644
index 0000000..ffc55d3
--- /dev/null
+++ b/gram/RBM_def.h
@@ -0,0 +1,44 @@
+/* RBM_def.h
+ *
+ * Copyright (C) 2016 Paul Boersma
+ *
+ * This code is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This code is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#define ooSTRUCT RBM
+oo_DEFINE_CLASS (RBM, Daata)
+
+	oo_BOOL (inputsAreBinary)
+	oo_LONG (numberOfInputNodes)
+	oo_LONG (numberOfOutputNodes)
+	oo_DOUBLE_MATRIX (weights, numberOfInputNodes, numberOfOutputNodes)
+	oo_DOUBLE_VECTOR (inputBiases, numberOfInputNodes)
+	oo_DOUBLE_VECTOR (outputBiases, numberOfOutputNodes)
+
+	oo_DOUBLE_VECTOR (inputActivities, numberOfInputNodes)
+	oo_DOUBLE_VECTOR (outputActivities, numberOfOutputNodes)
+	oo_DOUBLE_VECTOR (inputReconstruction, numberOfInputNodes)
+	oo_DOUBLE_VECTOR (outputReconstruction, numberOfOutputNodes)
+
+	#if oo_DECLARING
+		void v_info ()
+			override;
+	#endif
+
+oo_END_CLASS (RBM)
+#undef ooSTRUCT
+
+
+/* End of file RBM_def.h */
diff --git a/gram/manual_gram.cpp b/gram/manual_gram.cpp
index cb31790..0aa6046 100644
--- a/gram/manual_gram.cpp
+++ b/gram/manual_gram.cpp
@@ -2,103 +2,90 @@
  *
  * Copyright (C) 1997-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
 #include "OTGrammar.h"
 
 static void draw_NoCoda_pat (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NoCoda_grammar ();
-	OTGrammar_drawTableau (ot, g, false, U"pat");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_NoCoda_grammar ();
+	OTGrammar_drawTableau (ot.get(), g, false, U"pat");
 }
 static void draw_NoCoda_pa (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NoCoda_grammar ();
-	OTGrammar_drawTableau (ot, g, false, U"pa");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_NoCoda_grammar ();
+	OTGrammar_drawTableau (ot.get(), g, false, U"pa");
 }
 static void draw_NoCoda_reverse (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NoCoda_grammar ();
+	autoOTGrammar ot = OTGrammar_create_NoCoda_grammar ();
 	ot -> index [1] = 2;
 	ot -> index [2] = 1;
-	OTGrammar_drawTableau (ot, g, false, U"pat");
-	forget (ot);
+	OTGrammar_drawTableau (ot.get(), g, false, U"pat");
 }
 static void draw_NPA_assimilate_anpa (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NPA_grammar ();
+	autoOTGrammar ot = OTGrammar_create_NPA_grammar ();
 	ot -> index [1] = 3;
 	ot -> index [2] = 1;
 	ot -> index [3] = 2;
-	OTGrammar_drawTableau (ot, g, false, U"an+pa");
-	forget (ot);
+	OTGrammar_drawTableau (ot.get(), g, false, U"an+pa");
 }
 static void draw_NPA_assimilate_atma (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NPA_grammar ();
+	autoOTGrammar ot = OTGrammar_create_NPA_grammar ();
 	ot -> index [1] = 3;
 	ot -> index [2] = 1;
 	ot -> index [3] = 2;
-	OTGrammar_drawTableau (ot, g, false, U"at+ma");
-	forget (ot);
+	OTGrammar_drawTableau (ot.get(), g, false, U"at+ma");
 }
 static void draw_NPA_faithful_anpa (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NPA_grammar ();
+	autoOTGrammar ot = OTGrammar_create_NPA_grammar ();
 	ot -> index [1] = 3;
 	ot -> index [2] = 2;
 	ot -> index [3] = 1;
-	OTGrammar_drawTableau (ot, g, false, U"an+pa");
-	forget (ot);
+	OTGrammar_drawTableau (ot.get(), g, false, U"an+pa");
 }
 static void draw_NPA_faithful_atma (Graphics g) {
-	OTGrammar ot = OTGrammar_create_NPA_grammar ();
+	autoOTGrammar ot = OTGrammar_create_NPA_grammar ();
 	ot -> index [1] = 3;
 	ot -> index [2] = 2;
 	ot -> index [3] = 1;
-	OTGrammar_drawTableau (ot, g, false, U"at+ma");
-	forget (ot);
+	OTGrammar_drawTableau (ot.get(), g, false, U"at+ma");
 }
 static void draw_Wolof_ItI (Graphics g) {
-	OTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
-	OTGrammar_drawTableau (ot, g, false, U"\\ict\\ic");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
+	OTGrammar_drawTableau (ot.get(), g, false, U"\\ict\\ic");
 }
 static void draw_Wolof_itE (Graphics g) {
-	OTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
-	OTGrammar_drawTableau (ot, g, false, U"it\\ef");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
+	OTGrammar_drawTableau (ot.get(), g, false, U"it\\ef");
 }
 static void draw_Wolof_etE (Graphics g) {
-	OTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
-	OTGrammar_drawTableau (ot, g, false, U"et\\ef");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
+	OTGrammar_drawTableau (ot.get(), g, false, U"et\\ef");
 }
 static void draw_Wolof_schwatschwa (Graphics g) {
-	OTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
-	OTGrammar_drawTableau (ot, g, false, U"\\swt\\sw");
-	forget (ot);
+	autoOTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 4);
+	OTGrammar_drawTableau (ot.get(), g, false, U"\\swt\\sw");
 }
 static void draw_Infant_swtI (Graphics g) {
-	OTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 3);
+	autoOTGrammar ot = OTGrammar_create_tongueRoot_grammar (1, 3);
 	ot -> constraints [1]. disharmony = 3;
 	ot -> constraints [2]. disharmony = 4;
 	ot -> constraints [3]. disharmony = 2;
 	ot -> constraints [4]. disharmony = 1;
 	ot -> constraints [5]. disharmony = 5;
-	OTGrammar_sort (ot);
-	OTGrammar_drawTableau (ot, g, false, U"\\swt\\ic");
-	forget (ot);
+	OTGrammar_sort (ot.get());
+	OTGrammar_drawTableau (ot.get(), g, false, U"\\swt\\ic");
 }
 
 void manual_gram_init (ManPages me);
diff --git a/gram/praat_gram.cpp b/gram/praat_gram.cpp
index 50bbac4..4004184 100644
--- a/gram/praat_gram.cpp
+++ b/gram/praat_gram.cpp
@@ -1,20 +1,19 @@
 /* praat_gram.cpp
  *
- * Copyright (C) 1997-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -24,6 +23,7 @@
 #include "OTMulti.h"
 #include "OTGrammarEditor.h"
 #include "OTMultiEditor.h"
+#include "RBM.h"
 
 #undef iam
 #define iam iam_LOOP
@@ -34,7 +34,7 @@
 #pragma mark New
 
 static void UiForm_addNetworkFields (UiForm dia) {
-	Any radio;
+	UiField radio;
 	LABEL (U"", U"Activity spreading settings:")
 	REAL (U"Spreading rate", U"0.01")
 	OPTIONMENU_ENUM (U"Activity clipping rule", kNetwork_activityClippingRule, DEFAULT)
@@ -63,7 +63,7 @@ DO
 		GET_REAL (U"Learning rate"), GET_REAL (U"left Weight range"), GET_REAL (U"right Weight range"), GET_REAL (U"Weight leak"),
 		GET_REAL (U"left x range"), GET_REAL (U"right x range"), GET_REAL (U"left y range"), GET_REAL (U"right y range"),
 		0, 0);
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
 FORM (Create_rectangular_Network, U"Create rectangular Network", 0) {
@@ -83,7 +83,7 @@ DO
 		GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"),
 		GET_INTEGER (U"Bottom row clamped"),
 		GET_REAL (U"left Initial weight range"), GET_REAL (U"right Initial weight range"));
-	praat_new (me.transfer(),
+	praat_new (me.move(),
 			U"rectangle_", GET_INTEGER (U"Number of rows"),
 			U"_", GET_INTEGER (U"Number of columns"));
 END2 }
@@ -105,7 +105,7 @@ DO
 		GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"),
 		GET_INTEGER (U"Bottom row clamped"),
 		GET_REAL (U"left Initial weight range"), GET_REAL (U"right Initial weight range"));
-	praat_new (me.transfer(),
+	praat_new (me.move(),
 			U"rectangle_", GET_INTEGER (U"Number of rows"),
 			U"_", GET_INTEGER (U"Number of columns"));
 END2 }
@@ -168,7 +168,7 @@ DO
 			GET_INTEGER (U"Include x"), GET_INTEGER (U"Include y"), GET_INTEGER (U"Position decimals"),
 			GET_INTEGER (U"Include clamped"),
 			GET_INTEGER (U"Include activity"), GET_INTEGER (U"Include excitation"), GET_INTEGER (U"Activity decimals"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -394,17 +394,17 @@ END2 }
 
 DIRECT2 (Create_NoCoda_grammar) {
 	autoOTGrammar me = OTGrammar_create_NoCoda_grammar ();
-	praat_new (me.transfer(), U"NoCoda");
+	praat_new (me.move(), U"NoCoda");
 END2 }
 
 DIRECT2 (Create_NPA_grammar) {
 	autoOTGrammar me = OTGrammar_create_NPA_grammar ();
-	praat_new (me.transfer(), U"assimilation");
+	praat_new (me.move(), U"assimilation");
 END2 }
 
 DIRECT2 (Create_NPA_distribution) {
 	autoPairDistribution me = OTGrammar_create_NPA_distribution ();
-	praat_new (me.transfer(), U"assimilation");
+	praat_new (me.move(), U"assimilation");
 END2 }
 
 FORM (Create_tongue_root_grammar, U"Create tongue-root grammar", U"Create tongue-root grammar...") {
@@ -419,7 +419,7 @@ FORM (Create_tongue_root_grammar, U"Create tongue-root grammar", U"Create tongue
 	OK2
 DO
 	autoOTGrammar me = OTGrammar_create_tongueRoot_grammar (GET_INTEGER (U"Constraint set"), GET_INTEGER (U"Ranking"));
-	praat_new (me.transfer(), GET_STRING (U"Ranking"));
+	praat_new (me.move(), GET_STRING (U"Ranking"));
 END2 }
 
 FORM (Create_metrics_grammar, U"Create metrics grammar", 0) {
@@ -442,11 +442,11 @@ FORM (Create_metrics_grammar, U"Create metrics grammar", 0) {
 	BOOLEAN (U"Include codas", 0)
 	OK2
 DO
-	praat_new (OTGrammar_create_metrics (GET_INTEGER (U"Initial ranking"), GET_INTEGER (U"Trochaicity constraint"),
+	autoOTGrammar me = OTGrammar_create_metrics (GET_INTEGER (U"Initial ranking"), GET_INTEGER (U"Trochaicity constraint"),
 		GET_INTEGER (U"Include FootBimoraic"), GET_INTEGER (U"Include FootBisyllabic"),
 		GET_INTEGER (U"Include Peripheral"), GET_INTEGER (U"Nonfinality constraint"),
-		GET_INTEGER (U"Overt forms have secondary stress"), GET_INTEGER (U"Include *Clash and *Lapse"), GET_INTEGER (U"Include codas")),
-		GET_STRING (U"Initial ranking"));
+		GET_INTEGER (U"Overt forms have secondary stress"), GET_INTEGER (U"Include *Clash and *Lapse"), GET_INTEGER (U"Include codas"));
+	praat_new (me.move(), GET_STRING (U"Initial ranking"));
 END2 }
 
 #pragma mark Save
@@ -468,7 +468,8 @@ DIRECT2 (OTGrammar_edit) {
 	LOOP {
 		iam (OTGrammar);
 		autoOTGrammarEditor editor = OTGrammarEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -707,7 +708,7 @@ DO
 	LOOP {
 		iam (OTGrammar);
 		autoStrings thee = OTGrammar_generateInputs (me, GET_INTEGER (U"Number of trials"));
-		praat_new (thee.transfer(), my name, U"_in");
+		praat_new (thee.move(), my name, U"_in");
 	}
 END2 }
 
@@ -715,7 +716,7 @@ DIRECT2 (OTGrammar_getInputs) {
 	LOOP {
 		iam (OTGrammar);
 		autoStrings thee = OTGrammar_getInputs (me);
-		praat_new (thee.transfer(), my name, U"_in");
+		praat_new (thee.move(), my name, U"_in");
 	}
 END2 }
 
@@ -723,7 +724,7 @@ DIRECT2 (OTGrammar_measureTypology) {
 	LOOP try {
 		iam (OTGrammar);
 		autoDistributions thee = OTGrammar_measureTypology (me);
-		praat_new (thee.transfer(), my name, U"_out");
+		praat_new (thee.move(), my name, U"_out");
 		praat_dataChanged (me);
 	} catch (MelderError) {
 		praat_dataChanged (OBJECT);
@@ -764,7 +765,7 @@ FORM (OTGrammar_inputToOutputs, U"OTGrammar: Input to outputs", U"OTGrammar: Inp
 DO
 	iam_ONLY (OTGrammar);
 	autoStrings thee = OTGrammar_inputToOutputs (me, GET_STRING (U"Input form"), GET_INTEGER (U"Trials"), GET_REAL (U"Evaluation noise"));
-	praat_new (thee.transfer(), my name, U"_out");
+	praat_new (thee.move(), my name, U"_out");
 	praat_dataChanged (me);
 END2 }
 
@@ -777,7 +778,7 @@ DO
 		iam (OTGrammar);
 		try {
 			autoDistributions thee = OTGrammar_to_Distribution (me, GET_INTEGER (U"Trials per input"), GET_REAL (U"Evaluation noise"));
-			praat_new (thee.transfer(), my name, U"_out");
+			praat_new (thee.move(), my name, U"_out");
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -794,7 +795,7 @@ DO
 	LOOP try {
 		iam (OTGrammar);
 		autoPairDistribution thee = OTGrammar_to_PairDistribution (me, GET_INTEGER (U"Trials per input"), GET_REAL (U"Evaluation noise"));
-		praat_new (thee.transfer(), my name, U"_out");
+		praat_new (thee.move(), my name, U"_out");
 		praat_dataChanged (me);
 	} catch (MelderError) {
 		praat_dataChanged (OBJECT);
@@ -868,7 +869,7 @@ DO
 			GET_REAL (U"Evaluation noise"),
 			GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"),
 			GET_INTEGER (U"Honour local rankings"),
-			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), TRUE, TRUE, NULL);
+			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), true, true, nullptr);
 		praat_dataChanged (me);
 	} catch (MelderError) {
 		praat_dataChanged (OBJECT);
@@ -893,7 +894,7 @@ DO
 			GET_REAL (U"Evaluation noise"),
 			GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"),
 			GET_INTEGER (U"Honour local rankings"),
-			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), GET_INTEGER (U"Number of chews"), TRUE);
+			GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"), GET_INTEGER (U"Number of chews"), true);
 		praat_dataChanged (me);
 	} catch (MelderError) {
 		praat_dataChanged (OBJECT);
@@ -970,7 +971,7 @@ DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Strings);
 	autoStrings him = OTGrammar_inputsToOutputs (me, thee, GET_REAL (U"Evaluation noise"));
-	praat_new (him.transfer(), my name, U"_out");
+	praat_new (him.move(), my name, U"_out");
 	praat_dataChanged (me);
 END2 }
 
@@ -996,7 +997,7 @@ FORM (OTGrammar_Stringses_learn, U"OTGrammar: Learn", U"OTGrammar & 2 Strings: L
 	OK2
 DO
 	iam_ONLY (OTGrammar);
-	Strings inputs = NULL, outputs = NULL;
+	Strings inputs = nullptr, outputs = nullptr;
 	WHERE (SELECTED && CLASS == classStrings) { if (! inputs) inputs = (Strings) OBJECT; else outputs = (Strings) OBJECT; }
 	try {
 		OTGrammar_learn (me, inputs, outputs,
@@ -1023,7 +1024,7 @@ FORM (OTGrammar_Strings_learnFromPartialOutputs, U"OTGrammar: Learn from partial
 DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Strings);
-	OTHistory history = NULL;
+	autoOTHistory history;
 	try {
 		OTGrammar_learnFromPartialOutputs (me, thee,
 			GET_REAL (U"Evaluation noise"),
@@ -1037,7 +1038,7 @@ DO
 		Melder_flushError ();
 		// trickle down to save history
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
 #pragma mark OTGRAMMAR & DISTRIBUTIONS
@@ -1053,7 +1054,7 @@ DO
 	double result = OTGrammar_Distributions_getFractionCorrect (me, thee, GET_INTEGER (U"Column number"),
 		GET_REAL (U"Evaluation noise"), GET_INTEGER (U"Replications"));
 	praat_dataChanged (me);
-	Melder_informationReal (result, NULL);
+	Melder_informationReal (result, nullptr);
 END2 }
 
 FORM (OTGrammar_Distributions_learnFromPartialOutputs, U"OTGrammar & Distributions: Learn from partial outputs", U"OT learning 6. Shortcut to grammar learning") {
@@ -1072,7 +1073,7 @@ FORM (OTGrammar_Distributions_learnFromPartialOutputs, U"OTGrammar & Distributio
 DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Distributions);
-	OTHistory history = NULL;
+	autoOTHistory history;
 	try {
 		OTGrammar_Distributions_learnFromPartialOutputs (me, thee, GET_INTEGER (U"Column number"),
 			GET_REAL (U"Evaluation noise"),
@@ -1087,7 +1088,7 @@ DO
 		praat_dataChanged (me);
 		Melder_flushError ();
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
 FORM (OTGrammar_Distributions_learnFromPartialOutputs_rrip, U"OTGrammar & Distributions: Learn from partial outputs (rrip)", U"OT learning 6. Shortcut to grammar learning") {
@@ -1106,7 +1107,7 @@ FORM (OTGrammar_Distributions_learnFromPartialOutputs_rrip, U"OTGrammar & Distri
 DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Distributions);
-	OTHistory history = NULL;
+	autoOTHistory history;
 	try {
 		OTGrammar_Distributions_learnFromPartialOutputs (me, thee, GET_INTEGER (U"Column number"),
 			GET_REAL (U"Evaluation noise"),
@@ -1121,7 +1122,7 @@ DO
 		praat_dataChanged (me);
 		Melder_flushError ();
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
 FORM (OTGrammar_Distributions_learnFromPartialOutputs_eip, U"OTGrammar & Distributions: Learn from partial outputs (eip)", U"OT learning 6. Shortcut to grammar learning") {
@@ -1140,7 +1141,7 @@ FORM (OTGrammar_Distributions_learnFromPartialOutputs_eip, U"OTGrammar & Distrib
 DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Distributions);
-	OTHistory history = NULL;
+	autoOTHistory history;
 	try {
 		OTGrammar_Distributions_learnFromPartialOutputs (me, thee, GET_INTEGER (U"Column number"),
 			GET_REAL (U"Evaluation noise"),
@@ -1155,7 +1156,7 @@ DO
 		praat_dataChanged (me);
 		Melder_flushError ();
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
 FORM (OTGrammar_Distributions_learnFromPartialOutputs_wrip, U"OTGrammar & Distributions: Learn from partial outputs (wrip)", U"OT learning 6. Shortcut to grammar learning") {
@@ -1174,7 +1175,7 @@ FORM (OTGrammar_Distributions_learnFromPartialOutputs_wrip, U"OTGrammar & Distri
 DO
 	iam_ONLY (OTGrammar);
 	thouart_ONLY (Distributions);
-	OTHistory history = NULL;
+	autoOTHistory history;
 	try {
 		OTGrammar_Distributions_learnFromPartialOutputs (me, thee, GET_INTEGER (U"Column number"),
 			GET_REAL (U"Evaluation noise"),
@@ -1189,7 +1190,7 @@ DO
 		praat_dataChanged (me);
 		Melder_flushError ();
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
 FORM (OTGrammar_Distributions_listObligatoryRankings, U"OTGrammar & Distributions: Get fraction correct...", 0) {
@@ -1231,7 +1232,7 @@ DO
 		praat_dataChanged (me);
 		throw;
 	}
-	Melder_informationReal (result, NULL);
+	Melder_informationReal (result, nullptr);
 END2 }
 
 FORM (OTGrammar_PairDistribution_getMinimumNumberCorrect, U"OTGrammar & PairDistribution: Get minimum number correct...", 0) {
@@ -1261,7 +1262,7 @@ FORM (OTGrammar_PairDistribution_learn, U"OTGrammar & PairDistribution: Learn",
 	REAL (U"Plasticity decrement", U"0.1")
 	NATURAL (U"Number of plasticities", U"4")
 	REAL (U"Rel. plasticity spreading", U"0.1")
-	BOOLEAN (U"Honour local rankings", 1)
+	BOOLEAN (U"Honour local rankings", true)
 	NATURAL (U"Number of chews", U"1")
 	OK2
 DO
@@ -1289,7 +1290,9 @@ END2 }
 #pragma mark -
 #pragma mark OTMULTI
 
-FORM (Create_multi_level_metrics_grammar, U"Create multi-level metrics grammar", 0) {
+#pragma mark New
+
+FORM (Create_multi_level_metrics_grammar, U"Create multi-level metrics grammar", nullptr) {
 	OPTIONMENU (U"Initial ranking", 1)
 		OPTION (U"Equal")
 		OPTION (U"Foot form high")
@@ -1297,29 +1300,31 @@ FORM (Create_multi_level_metrics_grammar, U"Create multi-level metrics grammar",
 	OPTIONMENU (U"Trochaicity constraint", 1)
 		OPTION (U"FtNonfinal")
 		OPTION (U"Trochaic")
-	BOOLEAN (U"Include FootBimoraic", 0)
-	BOOLEAN (U"Include FootBisyllabic", 0)
-	BOOLEAN (U"Include Peripheral", 0)
+	BOOLEAN (U"Include FootBimoraic", false)
+	BOOLEAN (U"Include FootBisyllabic", false)
+	BOOLEAN (U"Include Peripheral", false)
 	OPTIONMENU (U"Nonfinality constraint", 1)
 		OPTION (U"Nonfinal")
 		OPTION (U"MainNonfinal")
 		OPTION (U"HeadNonfinal")
-	BOOLEAN (U"Overt forms have secondary stress", 1)
-	BOOLEAN (U"Include *Clash and *Lapse", 0)
-	BOOLEAN (U"Include codas", 0)
+	BOOLEAN (U"Overt forms have secondary stress", true)
+	BOOLEAN (U"Include *Clash and *Lapse", false)
+	BOOLEAN (U"Include codas", false)
 	OK2
 DO
-	praat_new (OTMulti_create_metrics (GET_INTEGER (U"Initial ranking"), GET_INTEGER (U"Trochaicity constraint"),
+	autoOTMulti me = OTMulti_create_metrics (GET_INTEGER (U"Initial ranking"), GET_INTEGER (U"Trochaicity constraint"),
 		GET_INTEGER (U"Include FootBimoraic"), GET_INTEGER (U"Include FootBisyllabic"),
 		GET_INTEGER (U"Include Peripheral"), GET_INTEGER (U"Nonfinality constraint"),
-		GET_INTEGER (U"Overt forms have secondary stress"), GET_INTEGER (U"Include *Clash and *Lapse"), GET_INTEGER (U"Include codas")),
-		GET_STRING (U"Initial ranking"));
+		GET_INTEGER (U"Overt forms have secondary stress"), GET_INTEGER (U"Include *Clash and *Lapse"), GET_INTEGER (U"Include codas"));
+	praat_new (me.move(), GET_STRING (U"Initial ranking"));
 END2 }
 
+#pragma mark Draw
+
 FORM (OTMulti_drawTableau, U"Draw tableau", U"OT learning") {
 	SENTENCE (U"Partial form 1", U"")
 	SENTENCE (U"Partial form 2", U"")
-	BOOLEAN (U"Show disharmonies", 1)
+	BOOLEAN (U"Show disharmonies", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -1333,7 +1338,7 @@ END2 }
 FORM (OTMulti_drawTableau_narrowly, U"Draw tableau (narrowly)", U"OT learning") {
 	SENTENCE (U"Partial form 1", U"")
 	SENTENCE (U"Partial form 2", U"")
-	BOOLEAN (U"Show disharmonies", 1)
+	BOOLEAN (U"Show disharmonies", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -1344,50 +1349,45 @@ DO
 	}
 END2 }
 
+#pragma mark Edit
+
 DIRECT2 (OTMulti_edit) {
 	if (theCurrentPraatApplication -> batch) Melder_throw (U"Cannot edit an OTMulti from batch.");
 	LOOP {
 		iam (OTMulti);
 		autoOTMultiEditor editor = OTMultiEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (OTMulti_evaluate, U"OTMulti: Evaluate", 0) {
-	REAL (U"Evaluation noise", U"2.0")
-	OK2
-DO
+#pragma mark Query
+
+DIRECT2 (OTMulti_getNumberOfConstraints) {
 	iam_ONLY (OTMulti);
-	OTMulti_newDisharmonies (me, GET_REAL (U"Evaluation noise"));
-	praat_dataChanged (me);
+	Melder_information (my numberOfConstraints);
 END2 }
 
-FORM (OTMulti_generateOptimalForms, U"OTMulti: Generate optimal forms", 0) {
-	SENTENCE (U"Partial form 1", U"")
-	SENTENCE (U"Partial form 2", U"")
-	NATURAL (U"Number of trials", U"1000")
-	REAL (U"Evaluation noise", U"2.0")
+FORM (OTMulti_getConstraint, U"Get constraint name", nullptr) {
+	NATURAL (U"Constraint number", U"1")
 	OK2
 DO
 	iam_ONLY (OTMulti);
-	autoStrings thee = OTMulti_generateOptimalForms (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
-		GET_INTEGER (U"Number of trials"), GET_REAL (U"Evaluation noise"));
-	praat_new (thee.transfer(), my name, U"_out");
-	praat_dataChanged (me);
+	long icons = GET_INTEGER (U"Constraint number");
+	if (icons > my numberOfConstraints)
+		Melder_throw (U"The specified constraint number should not exceed the number of constraints.");
+	Melder_information (my constraints [icons]. name);
 END2 }
 
-FORM (OTMulti_getCandidate, U"Get candidate", 0) {
-	NATURAL (U"Candidate", U"1")
+FORM (OTMulti_getConstraintIndexFromName, U"OTMulti: Get constraint number", nullptr) {
+	SENTENCE (U"Constraint name", U"")
 	OK2
 DO
 	iam_ONLY (OTMulti);
-	long icand = GET_INTEGER (U"Candidate");
-	if (icand > my numberOfCandidates)
-		Melder_throw (U"The specified candidate number should not exceed the number of candidates.");
-	Melder_information (my candidates [icand]. string);
+	Melder_information (OTMulti_getConstraintIndexFromName (me, GET_STRING (U"Constraint name")));
 END2 }
 
-FORM (OTMulti_getConstraint, U"Get constraint name", 0) {
+FORM (OTMulti_getRankingValue, U"Get ranking value", nullptr) {
 	NATURAL (U"Constraint number", U"1")
 	OK2
 DO
@@ -1395,18 +1395,10 @@ DO
 	long icons = GET_INTEGER (U"Constraint number");
 	if (icons > my numberOfConstraints)
 		Melder_throw (U"The specified constraint number should not exceed the number of constraints.");
-	Melder_information (my constraints [icons]. name);
-END2 }
-
-FORM (OTMulti_getConstraintIndexFromName, U"OTMulti: Get constraint number", 0) {
-	SENTENCE (U"Constraint name", U"")
-	OK2
-DO
-	iam_ONLY (OTMulti);
-	Melder_information (OTMulti_getConstraintIndexFromName (me, GET_STRING (U"Constraint name")));
+	Melder_information (my constraints [icons]. ranking);
 END2 }
 
-FORM (OTMulti_getDisharmony, U"Get disharmony", 0) {
+FORM (OTMulti_getDisharmony, U"Get disharmony", nullptr) {
 	NATURAL (U"Constraint number", U"1")
 	OK2
 DO
@@ -1422,12 +1414,18 @@ DIRECT2 (OTMulti_getNumberOfCandidates) {
 	Melder_information (my numberOfCandidates);
 END2 }
 
-DIRECT2 (OTMulti_getNumberOfConstraints) {
+FORM (OTMulti_getCandidate, U"Get candidate", nullptr) {
+	NATURAL (U"Candidate", U"1")
+	OK2
+DO
 	iam_ONLY (OTMulti);
-	Melder_information (my numberOfConstraints);
+	long icand = GET_INTEGER (U"Candidate");
+	if (icand > my numberOfCandidates)
+		Melder_throw (U"The specified candidate number should not exceed the number of candidates.");
+	Melder_information (my candidates [icand]. string);
 END2 }
 
-FORM (OTMulti_getNumberOfViolations, U"Get number of violations", 0) {
+FORM (OTMulti_getNumberOfViolations, U"Get number of violations", nullptr) {
 	NATURAL (U"Candidate number", U"1")
 	NATURAL (U"Constraint number", U"1")
 	OK2
@@ -1442,27 +1440,27 @@ DO
 	Melder_information (my candidates [icand]. marks [icons]);
 END2 }
 
-FORM (OTMulti_getRankingValue, U"Get ranking value", 0) {
-	NATURAL (U"Constraint number", U"1")
+FORM (OTMulti_getWinner, U"OTMulti: Get winner", nullptr) {
+	SENTENCE (U"Partial form 1", U"")
+	SENTENCE (U"Partial form 2", U"")
 	OK2
 DO
 	iam_ONLY (OTMulti);
-	long icons = GET_INTEGER (U"Constraint number");
-	if (icons > my numberOfConstraints)
-		Melder_throw (U"The specified constraint number should not exceed the number of constraints.");
-	Melder_information (my constraints [icons]. ranking);
+	Melder_information (OTMulti_getWinner (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2")));
 END2 }
 
-FORM (OTMulti_getWinner, U"OTMulti: Get winner", 0) {
-	SENTENCE (U"Partial form 1", U"")
-	SENTENCE (U"Partial form 2", U"")
+#pragma mark Evaluate
+
+FORM (OTMulti_evaluate, U"OTMulti: Evaluate", nullptr) {
+	REAL (U"Evaluation noise", U"2.0")
 	OK2
 DO
 	iam_ONLY (OTMulti);
-	Melder_information (OTMulti_getWinner (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2")));
+	OTMulti_newDisharmonies (me, GET_REAL (U"Evaluation noise"));
+	praat_dataChanged (me);
 END2 }
 
-FORM (OTMulti_generateOptimalForm, U"OTMulti: Generate optimal form", 0) {
+FORM (OTMulti_generateOptimalForm, U"OTMulti: Generate optimal form", nullptr) {
 	SENTENCE (U"Partial form 1", U"")
 	SENTENCE (U"Partial form 2", U"")
 	REAL (U"Evaluation noise", U"2.0")
@@ -1476,24 +1474,33 @@ DO
 	praat_dataChanged (me);
 END2 }
 
-FORM (OTMulti_learnOne, U"OTMulti: Learn one", 0) {
+FORM (OTMulti_generateOptimalForms, U"OTMulti: Generate optimal forms", nullptr) {
 	SENTENCE (U"Partial form 1", U"")
 	SENTENCE (U"Partial form 2", U"")
-	OPTIONMENU_ENUM (U"Update rule", kOTGrammar_rerankingStrategy, SYMMETRIC_ALL)
-	OPTIONMENU (U"Direction", 3)
-		OPTION (U"forward")
-		OPTION (U"backward")
-		OPTION (U"bidirectionally")
-	POSITIVE (U"Plasticity", U"0.1")
-	REAL (U"Rel. plasticity spreading", U"0.1")
+	NATURAL (U"Number of trials", U"1000")
+	REAL (U"Evaluation noise", U"2.0")
+	OK2
+DO
+	iam_ONLY (OTMulti);
+	autoStrings thee = OTMulti_generateOptimalForms (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
+		GET_INTEGER (U"Number of trials"), GET_REAL (U"Evaluation noise"));
+	praat_new (thee.move(), my name, U"_out");
+	praat_dataChanged (me);
+END2 }
+
+FORM (OTMulti_to_Distribution, U"OTMulti: Compute output distribution", nullptr) {
+	SENTENCE (U"Partial form 1", U"")
+	SENTENCE (U"Partial form 2", U"")
+	NATURAL (U"Number of trials", U"100000")
+	POSITIVE (U"Evaluation noise", U"2.0")
 	OK2
 DO
 	LOOP {
 		iam (OTMulti);
 		try {
-			OTMulti_learnOne (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
-				GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"),
-				GET_INTEGER (U"Direction"), GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"));
+			autoDistributions thee = OTMulti_to_Distribution (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
+				GET_INTEGER (U"Number of trials"), GET_REAL (U"Evaluation noise"));
+			praat_new (thee.move(), my name, U"_out");
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -1502,18 +1509,22 @@ DO
 	}
 END2 }
 
-FORM (OTMulti_removeConstraint, U"OTMulti: Remove constraint", 0) {
-	SENTENCE (U"Constraint name", U"")
+#pragma mark Modify ranking
+
+FORM (OTMulti_setRanking, U"OTMulti: Set ranking", nullptr) {
+	NATURAL (U"Constraint", U"1")
+	REAL (U"Ranking", U"100.0")
+	REAL (U"Disharmony", U"100.0")
 	OK2
 DO
 	LOOP {
 		iam (OTMulti);
-		OTMulti_removeConstraint (me, GET_STRING (U"Constraint name"));
+		OTMulti_setRanking (me, GET_INTEGER (U"Constraint"), GET_REAL (U"Ranking"), GET_REAL (U"Disharmony"));
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (OTMulti_resetAllRankings, U"OTMulti: Reset all rankings", 0) {
+FORM (OTMulti_resetAllRankings, U"OTMulti: Reset all rankings", nullptr) {
 	REAL (U"Ranking", U"100.0")
 	OK2
 DO
@@ -1524,19 +1535,35 @@ DO
 	}
 END2 }
 
-FORM (OTMulti_setConstraintPlasticity, U"OTMulti: Set constraint plasticity", 0) {
-	NATURAL (U"Constraint", U"1")
-	REAL (U"Plasticity", U"1.0")
+FORM (OTMulti_learnOne, U"OTMulti: Learn one", nullptr) {
+	SENTENCE (U"Partial form 1", U"")
+	SENTENCE (U"Partial form 2", U"")
+	OPTIONMENU_ENUM (U"Update rule", kOTGrammar_rerankingStrategy, SYMMETRIC_ALL)
+	OPTIONMENU (U"Direction", 3)
+		OPTION (U"forward")
+		OPTION (U"backward")
+		OPTION (U"bidirectionally")
+	POSITIVE (U"Plasticity", U"0.1")
+	REAL (U"Rel. plasticity spreading", U"0.1")
 	OK2
 DO
 	LOOP {
 		iam (OTMulti);
-		OTMulti_setConstraintPlasticity (me, GET_INTEGER (U"Constraint"), GET_REAL (U"Plasticity"));
-		praat_dataChanged (me);
+		try {
+			OTMulti_learnOne (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
+				GET_ENUM (kOTGrammar_rerankingStrategy, U"Update rule"),
+				GET_INTEGER (U"Direction"), GET_REAL (U"Plasticity"), GET_REAL (U"Rel. plasticity spreading"));
+			praat_dataChanged (me);
+		} catch (MelderError) {
+			praat_dataChanged (me);
+			throw;
+		}
 	}
 END2 }
 
-FORM (OTMulti_setDecisionStrategy, U"OTMulti: Set decision strategy", 0) {
+#pragma mark Modify behaviour
+
+FORM (OTMulti_setDecisionStrategy, U"OTMulti: Set decision strategy", nullptr) {
 	RADIO_ENUM (U"Decision strategy", kOTGrammar_decisionStrategy, DEFAULT)
 	OK2
 iam_ONLY (OTMulti);
@@ -1547,7 +1574,7 @@ DO
 	praat_dataChanged (me);
 END2 }
 
-FORM (OTMulti_setLeak, U"OTGrammar: Set leak", 0) {
+FORM (OTMulti_setLeak, U"OTGrammar: Set leak", nullptr) {
 	REAL (U"Leak", U"0.0")
 	OK2
 iam_ONLY (OTMulti);
@@ -1558,41 +1585,34 @@ DO
 	praat_dataChanged (me);
 END2 }
 
-FORM (OTMulti_setRanking, U"OTMulti: Set ranking", 0) {
+FORM (OTMulti_setConstraintPlasticity, U"OTMulti: Set constraint plasticity", nullptr) {
 	NATURAL (U"Constraint", U"1")
-	REAL (U"Ranking", U"100.0")
-	REAL (U"Disharmony", U"100.0")
+	REAL (U"Plasticity", U"1.0")
 	OK2
 DO
 	LOOP {
 		iam (OTMulti);
-		OTMulti_setRanking (me, GET_INTEGER (U"Constraint"), GET_REAL (U"Ranking"), GET_REAL (U"Disharmony"));
+		OTMulti_setConstraintPlasticity (me, GET_INTEGER (U"Constraint"), GET_REAL (U"Plasticity"));
 		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (OTMulti_to_Distribution, U"OTMulti: Compute output distribution", 0) {
-	SENTENCE (U"Partial form 1", U"")
-	SENTENCE (U"Partial form 2", U"")
-	NATURAL (U"Number of trials", U"100000")
-	POSITIVE (U"Evaluation noise", U"2.0")
+#pragma mark Modify structure
+
+FORM (OTMulti_removeConstraint, U"OTMulti: Remove constraint", nullptr) {
+	SENTENCE (U"Constraint name", U"")
 	OK2
 DO
 	LOOP {
 		iam (OTMulti);
-		try {
-			autoDistributions thee = OTMulti_to_Distribution (me, GET_STRING (U"Partial form 1"), GET_STRING (U"Partial form 2"),
-				GET_INTEGER (U"Number of trials"), GET_REAL (U"Evaluation noise"));
-			praat_new (thee.transfer(), my name, U"_out");
-			praat_dataChanged (me);
-		} catch (MelderError) {
-			praat_dataChanged (me);
-			throw;
-		}
+		OTMulti_removeConstraint (me, GET_STRING (U"Constraint name"));
+		praat_dataChanged (me);
 	}
 END2 }
 
-FORM (OTMulti_PairDistribution_learn, U"OTMulti & PairDistribution: Learn", 0) {
+#pragma mark OTMULTI & PAIRDISTRIBUTION
+
+FORM (OTMulti_PairDistribution_learn, U"OTMulti & PairDistribution: Learn", nullptr) {
 	REAL (U"Evaluation noise", U"2.0")
 	OPTIONMENU_ENUM (U"Update rule", kOTGrammar_rerankingStrategy, SYMMETRIC_ALL)
 	OPTIONMENU (U"Direction", 3)
@@ -1609,7 +1629,7 @@ FORM (OTMulti_PairDistribution_learn, U"OTMulti & PairDistribution: Learn", 0) {
 DO
 	iam_ONLY (OTMulti);
 	thouart_ONLY (PairDistribution);
-	Table history = NULL;
+	autoTable history;
 	try {
 		OTMulti_PairDistribution_learn (me, thee,
 			GET_REAL (U"Evaluation noise"),
@@ -1625,9 +1645,11 @@ DO
 		Melder_flushError ();
 		// trickle down to save history
 	}
-	if (history) praat_new (history, my name);
+	if (history) praat_new (history.move(), my name);
 END2 }
 
+#pragma mark OTMULTI & STRINGS
+
 FORM (OTMulti_Strings_generateOptimalForms, U"OTGrammar: Inputs to outputs", U"OTGrammar: Inputs to outputs...") {
 	REAL (U"Evaluation noise", U"2.0")
 	OK2
@@ -1635,163 +1657,360 @@ DO
 	iam_ONLY (OTMulti);
 	thouart_ONLY (Strings);
 	autoStrings him = OTMulti_Strings_generateOptimalForms (me, thee, GET_REAL (U"Evaluation noise"));
-	praat_new (him.transfer(), my name, U"_out");
+	praat_new (him.move(), my name, U"_out");
 	praat_dataChanged (me);
 END2 }
 
-/***** buttons *****/
+#pragma mark -
+#pragma mark RBM
+
+#pragma mark New
+
+FORM (Create_RBM, U"Create RBM (Restricted Boltzmann Machine)", nullptr) {
+	WORD (U"Name", U"network")
+	NATURAL (U"Number of input nodes", U"50")
+	NATURAL (U"Number of output nodes", U"20")
+	BOOLEAN (U"Inputs are binary", true)
+	OK2
+DO
+	autoRBM me = RBM_create (
+		GET_INTEGER (U"Number of input nodes"),
+		GET_INTEGER (U"Number of output nodes"),
+		GET_INTEGER (U"Inputs are binary"));
+	praat_new (me.move(), GET_STRING (U"Name"));
+END2 }
 
-void praat_uvafon_gram_init (void);
-void praat_uvafon_gram_init (void) {
-	Thing_recognizeClassesByName (classNetwork, classOTGrammar, classOTHistory, classOTMulti, NULL);
+#pragma mark Modify
+
+DIRECT2 (RBM_spreadUp) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_spreadUp (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+DIRECT2 (RBM_spreadDown) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_spreadDown (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+DIRECT2 (RBM_spreadUp_reconstruction) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_spreadUp_reconstruction (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+DIRECT2 (RBM_spreadDown_reconstruction) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_spreadDown_reconstruction (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+DIRECT2 (RBM_sampleInput) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_sampleInput (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+DIRECT2 (RBM_sampleOutput) {
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_sampleOutput (me);
+		praat_dataChanged (me);
+	}
+END2 }
+
+FORM (RBM_update, U"RBM: Update", nullptr) {
+	POSITIVE (U"Learning rate", U"0.001")
+	OK2
+DO
+	LOOP {
+		iam_LOOP (RBM);
+		RBM_update (me, GET_REAL (U"Learning rate"));
+		praat_dataChanged (me);
+	}
+END2 }
+
+#pragma mark Extract
+
+DIRECT2 (RBM_extractInputActivities) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractInputActivities (me);
+		praat_new (thee.move(), my name, U"_inputActivities");
+	}
+END2 }
+
+DIRECT2 (RBM_extractOutputActivities) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractOutputActivities (me);
+		praat_new (thee.move(), my name, U"_outputActivities");
+	}
+END2 }
+
+DIRECT2 (RBM_extractInputReconstruction) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractInputReconstruction (me);
+		praat_new (thee.move(), my name, U"_inputReconstruction");
+	}
+END2 }
+
+DIRECT2 (RBM_extractOutputReconstruction) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractOutputReconstruction (me);
+		praat_new (thee.move(), my name, U"_outputReconstruction");
+	}
+END2 }
+
+DIRECT2 (RBM_extractInputBiases) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractInputBiases (me);
+		praat_new (thee.move(), my name, U"_inputBiases");
+	}
+END2 }
+
+DIRECT2 (RBM_extractOutputBiases) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractOutputBiases (me);
+		praat_new (thee.move(), my name, U"_outputBiases");
+	}
+END2 }
+
+DIRECT2 (RBM_extractWeights) {
+	LOOP {
+		iam_LOOP (RBM);
+		autoMatrix thee = RBM_extractWeights (me);
+		praat_new (thee.move(), my name, U"_weights");
+	}
+END2 }
+
+#pragma mark RBM & PATTERN
+
+FORM (RBM_Pattern_applyToInput, U"RBM & Pattern: Apply to input", nullptr) {
+	NATURAL (U"Row number", U"1")
+	OK2
+DO
+	iam_ONLY (RBM);
+	thouart_ONLY (Pattern);
+	RBM_Pattern_applyToInput (me, thee, GET_INTEGER (U"Row number"));
+	praat_dataChanged (me);
+END2 }
+
+FORM (RBM_Pattern_applyToOutput, U"RBM & Pattern: Apply to output", nullptr) {
+	NATURAL (U"Row number", U"1")
+	OK2
+DO
+	iam_ONLY (RBM);
+	thouart_ONLY (Pattern);
+	RBM_Pattern_applyToOutput (me, thee, GET_INTEGER (U"Row number"));
+	praat_dataChanged (me);
+END2 }
+
+FORM (RBM_Pattern_learn, U"RBM & Pattern: Learn", nullptr) {
+	POSITIVE (U"Learning rate", U"0.001")
+	OK2
+DO
+	iam_ONLY (RBM);
+	thouart_ONLY (Pattern);
+	RBM_Pattern_learn (me, thee, GET_REAL (U"Learning rate"));
+	praat_dataChanged (me);
+END2 }
+
+#pragma mark -
+#pragma mark buttons
+
+void praat_uvafon_gram_init ();
+void praat_uvafon_gram_init () {
+	Thing_recognizeClassesByName (classNetwork,
+		classOTGrammar, classOTHistory, classOTMulti,
+		classRBM,
+		nullptr);
 	Thing_recognizeClassByOtherName (classOTGrammar, U"OTCase");
 
-	praat_addMenuCommand (U"Objects", U"New", U"Constraint grammars", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"OT learning tutorial", 0, 1, DO_OT_learning_tutorial);
-		praat_addMenuCommand (U"Objects", U"New", U"-- tableau grammars --", 0, 1, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create NoCoda grammar", 0, 1, DO_Create_NoCoda_grammar);
-		praat_addMenuCommand (U"Objects", U"New", U"Create place assimilation grammar", 0, 1, DO_Create_NPA_grammar);
-		praat_addMenuCommand (U"Objects", U"New", U"Create place assimilation distribution", 0, 1, DO_Create_NPA_distribution);
-		praat_addMenuCommand (U"Objects", U"New", U"Create tongue-root grammar...", 0, 1, DO_Create_tongue_root_grammar);
-		praat_addMenuCommand (U"Objects", U"New", U"Create metrics grammar...", 0, 1, DO_Create_metrics_grammar);
-		praat_addMenuCommand (U"Objects", U"New", U"Create multi-level metrics grammar...", 0, 1, DO_Create_multi_level_metrics_grammar);
-	praat_addAction1 (classOTGrammar, 1, U"Save as headerless spreadsheet file...", 0, 0, DO_OTGrammar_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (classOTGrammar, 1, U"Write to headerless spreadsheet file...", 0, praat_HIDDEN, DO_OTGrammar_writeToHeaderlessSpreadsheetFile);
-
-	praat_addAction1 (classOTGrammar, 0, U"OTGrammar help", 0, 0, DO_OTGrammar_help);
-	praat_addAction1 (classOTGrammar, 0, U"View & Edit", 0, praat_ATTRACTIVE, DO_OTGrammar_edit);
-	praat_addAction1 (classOTGrammar, 0, U"Edit", 0, praat_HIDDEN, DO_OTGrammar_edit);
-	praat_addAction1 (classOTGrammar, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 0, U"Draw tableau...", 0, 0, DO_OTGrammar_drawTableau);
-		praat_addAction1 (classOTGrammar, 0, U"Draw tableau (narrowly)...", 0, 0, DO_OTGrammar_drawTableau_narrowly);
-	praat_addAction1 (classOTGrammar, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 1, U"Get number of constraints", 0, 1, DO_OTGrammar_getNumberOfConstraints);
-		praat_addAction1 (classOTGrammar, 1, U"Get constraint...", 0, 1, DO_OTGrammar_getConstraint);
-		praat_addAction1 (classOTGrammar, 1, U"Get ranking value...", 0, 1, DO_OTGrammar_getRankingValue);
-		praat_addAction1 (classOTGrammar, 1, U"Get disharmony...", 0, 1, DO_OTGrammar_getDisharmony);
-		praat_addAction1 (classOTGrammar, 1, U"Get number of tableaus", 0, 1, DO_OTGrammar_getNumberOfTableaus);
-		praat_addAction1 (classOTGrammar, 1, U"Get input...", 0, 1, DO_OTGrammar_getInput);
-		praat_addAction1 (classOTGrammar, 1, U"Get number of candidates...", 0, 1, DO_OTGrammar_getNumberOfCandidates);
-		praat_addAction1 (classOTGrammar, 1, U"Get candidate...", 0, 1, DO_OTGrammar_getCandidate);
-		praat_addAction1 (classOTGrammar, 1, U"Get number of violations...", 0, 1, DO_OTGrammar_getNumberOfViolations);
-		praat_addAction1 (classOTGrammar, 1, U"-- parse --", 0, 1, 0);
-		praat_addAction1 (classOTGrammar, 1, U"Get winner...", 0, 1, DO_OTGrammar_getWinner);
-		praat_addAction1 (classOTGrammar, 1, U"Compare candidates...", 0, 1, DO_OTGrammar_compareCandidates);
-		praat_addAction1 (classOTGrammar, 1, U"Get number of optimal candidates...", 0, 1, DO_OTGrammar_getNumberOfOptimalCandidates);
-		praat_addAction1 (classOTGrammar, 1, U"Is candidate grammatical...", 0, 1, DO_OTGrammar_isCandidateGrammatical);
-		praat_addAction1 (classOTGrammar, 1, U"Is candidate singly grammatical...", 0, 1, DO_OTGrammar_isCandidateSinglyGrammatical);
-		praat_addAction1 (classOTGrammar, 1, U"Get interpretive parse...", 0, 1, DO_OTGrammar_getInterpretiveParse);
-		praat_addAction1 (classOTGrammar, 1, U"Is partial output grammatical...", 0, 1, DO_OTGrammar_isPartialOutputGrammatical);
-		praat_addAction1 (classOTGrammar, 1, U"Is partial output singly grammatical...", 0, 1, DO_OTGrammar_isPartialOutputSinglyGrammatical);
-	praat_addAction1 (classOTGrammar, 0, U"Generate inputs...", 0, 0, DO_OTGrammar_generateInputs);
-	praat_addAction1 (classOTGrammar, 0, U"Get inputs", 0, 0, DO_OTGrammar_getInputs);
-	praat_addAction1 (classOTGrammar, 0, U"Measure typology", 0, 0, DO_OTGrammar_measureTypology);
-	praat_addAction1 (classOTGrammar, 0, U"Evaluate", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 0, U"Evaluate...", 0, 0, DO_OTGrammar_evaluate);
-		praat_addAction1 (classOTGrammar, 0, U"Input to output...", 0, 0, DO_OTGrammar_inputToOutput);
-		praat_addAction1 (classOTGrammar, 0, U"Input to outputs...", 0, 0, DO_OTGrammar_inputToOutputs);
-		praat_addAction1 (classOTGrammar, 0, U"To output Distributions...", 0, 0, DO_OTGrammar_to_Distributions);
-		praat_addAction1 (classOTGrammar, 0, U"To PairDistribution...", 0, 0, DO_OTGrammar_to_PairDistribution);
-	praat_addAction1 (classOTGrammar, 0, U"Modify ranking -", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 0, U"Set ranking...", 0, 1, DO_OTGrammar_setRanking);
-		praat_addAction1 (classOTGrammar, 0, U"Reset all rankings...", 0, 1, DO_OTGrammar_resetAllRankings);
-		praat_addAction1 (classOTGrammar, 0, U"Reset to random ranking...", 0, 1, DO_OTGrammar_resetToRandomRanking);
-		praat_addAction1 (classOTGrammar, 0, U"Reset to random total ranking...", 0, 1, DO_OTGrammar_resetToRandomTotalRanking);
-		praat_addAction1 (classOTGrammar, 0, U"Learn one...", 0, 1, DO_OTGrammar_learnOne);
-		praat_addAction1 (classOTGrammar, 0, U"Learn one from partial output...", 0, 1, DO_OTGrammar_learnOneFromPartialOutput);
-	praat_addAction1 (classOTGrammar, 0, U"Modify behaviour -", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 1, U"Set harmony computation method...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_OTGrammar_setDecisionStrategy);
-		praat_addAction1 (classOTGrammar, 1, U"Set decision strategy...", 0, 1, DO_OTGrammar_setDecisionStrategy);
-		praat_addAction1 (classOTGrammar, 1, U"Set leak...", 0, 1, DO_OTGrammar_setLeak);
-		praat_addAction1 (classOTGrammar, 1, U"Set constraint plasticity...", 0, 1, DO_OTGrammar_setConstraintPlasticity);
-	praat_addAction1 (classOTGrammar, 0, U"Modify structure -", 0, 0, 0);
-		praat_addAction1 (classOTGrammar, 0, U"Remove constraint...", 0, 1, DO_OTGrammar_removeConstraint);
-		praat_addAction1 (classOTGrammar, 0, U"Remove harmonically bounded candidates...", 0, 1, DO_OTGrammar_removeHarmonicallyBoundedCandidates);
+	praat_addMenuCommand (U"Objects", U"New", U"Constraint grammars", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"OT learning tutorial", nullptr, 1, DO_OT_learning_tutorial);
+		praat_addMenuCommand (U"Objects", U"New", U"-- tableau grammars --", nullptr, 1, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create NoCoda grammar", nullptr, 1, DO_Create_NoCoda_grammar);
+		praat_addMenuCommand (U"Objects", U"New", U"Create place assimilation grammar", nullptr, 1, DO_Create_NPA_grammar);
+		praat_addMenuCommand (U"Objects", U"New", U"Create place assimilation distribution", nullptr, 1, DO_Create_NPA_distribution);
+		praat_addMenuCommand (U"Objects", U"New", U"Create tongue-root grammar...", nullptr, 1, DO_Create_tongue_root_grammar);
+		praat_addMenuCommand (U"Objects", U"New", U"Create metrics grammar...", nullptr, 1, DO_Create_metrics_grammar);
+		praat_addMenuCommand (U"Objects", U"New", U"Create multi-level metrics grammar...", nullptr, 1, DO_Create_multi_level_metrics_grammar);
+	praat_addAction1 (classOTGrammar, 1, U"Save as headerless spreadsheet file...", nullptr, 0, DO_OTGrammar_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (classOTGrammar, 1, U"Write to headerless spreadsheet file...", nullptr, praat_HIDDEN, DO_OTGrammar_writeToHeaderlessSpreadsheetFile);
+
+	praat_addAction1 (classOTGrammar, 0, U"OTGrammar help", nullptr, 0, DO_OTGrammar_help);
+	praat_addAction1 (classOTGrammar, 0, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_OTGrammar_edit);
+	praat_addAction1 (classOTGrammar, 0, U"Edit", nullptr, praat_HIDDEN, DO_OTGrammar_edit);
+	praat_addAction1 (classOTGrammar, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 0, U"Draw tableau...", nullptr, 0, DO_OTGrammar_drawTableau);
+		praat_addAction1 (classOTGrammar, 0, U"Draw tableau (narrowly)...", nullptr, 0, DO_OTGrammar_drawTableau_narrowly);
+	praat_addAction1 (classOTGrammar, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 1, U"Get number of constraints", nullptr, 1, DO_OTGrammar_getNumberOfConstraints);
+		praat_addAction1 (classOTGrammar, 1, U"Get constraint...", nullptr, 1, DO_OTGrammar_getConstraint);
+		praat_addAction1 (classOTGrammar, 1, U"Get ranking value...", nullptr, 1, DO_OTGrammar_getRankingValue);
+		praat_addAction1 (classOTGrammar, 1, U"Get disharmony...", nullptr, 1, DO_OTGrammar_getDisharmony);
+		praat_addAction1 (classOTGrammar, 1, U"Get number of tableaus", nullptr, 1, DO_OTGrammar_getNumberOfTableaus);
+		praat_addAction1 (classOTGrammar, 1, U"Get input...", nullptr, 1, DO_OTGrammar_getInput);
+		praat_addAction1 (classOTGrammar, 1, U"Get number of candidates...", nullptr, 1, DO_OTGrammar_getNumberOfCandidates);
+		praat_addAction1 (classOTGrammar, 1, U"Get candidate...", nullptr, 1, DO_OTGrammar_getCandidate);
+		praat_addAction1 (classOTGrammar, 1, U"Get number of violations...", nullptr, 1, DO_OTGrammar_getNumberOfViolations);
+		praat_addAction1 (classOTGrammar, 1, U"-- parse --", nullptr, 1, nullptr);
+		praat_addAction1 (classOTGrammar, 1, U"Get winner...", nullptr, 1, DO_OTGrammar_getWinner);
+		praat_addAction1 (classOTGrammar, 1, U"Compare candidates...", nullptr, 1, DO_OTGrammar_compareCandidates);
+		praat_addAction1 (classOTGrammar, 1, U"Get number of optimal candidates...", nullptr, 1, DO_OTGrammar_getNumberOfOptimalCandidates);
+		praat_addAction1 (classOTGrammar, 1, U"Is candidate grammatical...", nullptr, 1, DO_OTGrammar_isCandidateGrammatical);
+		praat_addAction1 (classOTGrammar, 1, U"Is candidate singly grammatical...", nullptr, 1, DO_OTGrammar_isCandidateSinglyGrammatical);
+		praat_addAction1 (classOTGrammar, 1, U"Get interpretive parse...", nullptr, 1, DO_OTGrammar_getInterpretiveParse);
+		praat_addAction1 (classOTGrammar, 1, U"Is partial output grammatical...", nullptr, 1, DO_OTGrammar_isPartialOutputGrammatical);
+		praat_addAction1 (classOTGrammar, 1, U"Is partial output singly grammatical...", nullptr, 1, DO_OTGrammar_isPartialOutputSinglyGrammatical);
+	praat_addAction1 (classOTGrammar, 0, U"Generate inputs...", nullptr, 0, DO_OTGrammar_generateInputs);
+	praat_addAction1 (classOTGrammar, 0, U"Get inputs", nullptr, 0, DO_OTGrammar_getInputs);
+	praat_addAction1 (classOTGrammar, 0, U"Measure typology", nullptr, 0, DO_OTGrammar_measureTypology);
+	praat_addAction1 (classOTGrammar, 0, U"Evaluate", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 0, U"Evaluate...", nullptr, 0, DO_OTGrammar_evaluate);
+		praat_addAction1 (classOTGrammar, 0, U"Input to output...", nullptr, 0, DO_OTGrammar_inputToOutput);
+		praat_addAction1 (classOTGrammar, 0, U"Input to outputs...", nullptr, 0, DO_OTGrammar_inputToOutputs);
+		praat_addAction1 (classOTGrammar, 0, U"To output Distributions...", nullptr, 0, DO_OTGrammar_to_Distributions);
+		praat_addAction1 (classOTGrammar, 0, U"To PairDistribution...", nullptr, 0, DO_OTGrammar_to_PairDistribution);
+	praat_addAction1 (classOTGrammar, 0, U"Modify ranking -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 0, U"Set ranking...", nullptr, 1, DO_OTGrammar_setRanking);
+		praat_addAction1 (classOTGrammar, 0, U"Reset all rankings...", nullptr, 1, DO_OTGrammar_resetAllRankings);
+		praat_addAction1 (classOTGrammar, 0, U"Reset to random ranking...", nullptr, 1, DO_OTGrammar_resetToRandomRanking);
+		praat_addAction1 (classOTGrammar, 0, U"Reset to random total ranking...", nullptr, 1, DO_OTGrammar_resetToRandomTotalRanking);
+		praat_addAction1 (classOTGrammar, 0, U"Learn one...", nullptr, 1, DO_OTGrammar_learnOne);
+		praat_addAction1 (classOTGrammar, 0, U"Learn one from partial output...", nullptr, 1, DO_OTGrammar_learnOneFromPartialOutput);
+	praat_addAction1 (classOTGrammar, 0, U"Modify behaviour -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 1, U"Set harmony computation method...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_OTGrammar_setDecisionStrategy);
+		praat_addAction1 (classOTGrammar, 1, U"Set decision strategy...", nullptr, 1, DO_OTGrammar_setDecisionStrategy);
+		praat_addAction1 (classOTGrammar, 1, U"Set leak...", nullptr, 1, DO_OTGrammar_setLeak);
+		praat_addAction1 (classOTGrammar, 1, U"Set constraint plasticity...", nullptr, 1, DO_OTGrammar_setConstraintPlasticity);
+	praat_addAction1 (classOTGrammar, 0, U"Modify structure -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTGrammar, 0, U"Remove constraint...", nullptr, 1, DO_OTGrammar_removeConstraint);
+		praat_addAction1 (classOTGrammar, 0, U"Remove harmonically bounded candidates...", nullptr, 1, DO_OTGrammar_removeHarmonicallyBoundedCandidates);
 
 	{ void praat_TableOfReal_init (ClassInfo klas); praat_TableOfReal_init (classOTHistory); }
 
-	praat_addAction1 (classOTMulti, 0, U"View & Edit", 0, praat_ATTRACTIVE, DO_OTMulti_edit);
-	praat_addAction1 (classOTMulti, 0, U"Edit", 0, praat_HIDDEN, DO_OTMulti_edit);
-	praat_addAction1 (classOTMulti, 0, U"Draw tableau...", 0, 0, DO_OTMulti_drawTableau);
-	praat_addAction1 (classOTMulti, 0, U"Draw tableau (narrowly)...", 0, 0, DO_OTMulti_drawTableau_narrowly);
-	praat_addAction1 (classOTMulti, 0, U"Query -", 0, 0, 0);
-	praat_addAction1 (classOTMulti, 1, U"Get number of constraints", 0, 1, DO_OTMulti_getNumberOfConstraints);
-	praat_addAction1 (classOTMulti, 1, U"Get constraint...", 0, 1, DO_OTMulti_getConstraint);
-	praat_addAction1 (classOTMulti, 1, U"Get constraint number...", 0, 1, DO_OTMulti_getConstraintIndexFromName);
-	praat_addAction1 (classOTMulti, 1, U"Get ranking value...", 0, 1, DO_OTMulti_getRankingValue);
-	praat_addAction1 (classOTMulti, 1, U"Get disharmony...", 0, 1, DO_OTMulti_getDisharmony);
-	praat_addAction1 (classOTMulti, 1, U"Get number of candidates", 0, 1, DO_OTMulti_getNumberOfCandidates);
-	praat_addAction1 (classOTMulti, 1, U"Get candidate...", 0, 1, DO_OTMulti_getCandidate);
-	praat_addAction1 (classOTMulti, 1, U"Get number of violations...", 0, 1, DO_OTMulti_getNumberOfViolations);
-	praat_addAction1 (classOTMulti, 1, U"-- parse --", 0, 1, 0);
-	praat_addAction1 (classOTMulti, 1, U"Get winner...", 0, 1, DO_OTMulti_getWinner);
-	praat_addAction1 (classOTMulti, 0, U"Evaluate", 0, 0, 0);
-	praat_addAction1 (classOTMulti, 0, U"Evaluate...", 0, 0, DO_OTMulti_evaluate);
-	praat_addAction1 (classOTMulti, 0, U"Get output...", 0, 0, DO_OTMulti_generateOptimalForm);
-	praat_addAction1 (classOTMulti, 0, U"Get outputs...", 0, 0, DO_OTMulti_generateOptimalForms);
-	praat_addAction1 (classOTMulti, 0, U"To output Distribution...", 0, 0, DO_OTMulti_to_Distribution);
-	praat_addAction1 (classOTMulti, 0, U"Modify ranking", 0, 0, 0);
-	praat_addAction1 (classOTMulti, 0, U"Set ranking...", 0, 0, DO_OTMulti_setRanking);
-	praat_addAction1 (classOTMulti, 0, U"Reset all rankings...", 0, 0, DO_OTMulti_resetAllRankings);
-	praat_addAction1 (classOTMulti, 0, U"Learn one...", 0, 0, DO_OTMulti_learnOne);
-	praat_addAction1 (classOTMulti, 0, U"Modify behaviour -", 0, 0, 0);
-	praat_addAction1 (classOTMulti, 1, U"Set decision strategy...", 0, 1, DO_OTMulti_setDecisionStrategy);
-	praat_addAction1 (classOTMulti, 1, U"Set leak...", 0, 1, DO_OTMulti_setLeak);
-	praat_addAction1 (classOTMulti, 1, U"Set constraint plasticity...", 0, 1, DO_OTMulti_setConstraintPlasticity);
-	praat_addAction1 (classOTMulti, 0, U"Modify structure -", 0, 0, 0);
-	praat_addAction1 (classOTMulti, 0, U"Remove constraint...", 0, 1, DO_OTMulti_removeConstraint);
-
-	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Query -", 0, 0, 0);
-		praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Are all partial outputs grammatical?", 0, 1, DO_OTGrammar_Strings_areAllPartialOutputsGrammatical);
-		praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Are all partial outputs singly grammatical?", 0, 1, DO_OTGrammar_Strings_areAllPartialOutputsSinglyGrammatical);
-	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Inputs to outputs...", 0, 0, DO_OTGrammar_Strings_inputsToOutputs);
-	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Learn from partial outputs...", 0, 0, DO_OTGrammar_Strings_learnFromPartialOutputs);
-	praat_addAction2 (classOTGrammar, 1, classStrings, 2, U"Learn...", 0, 0, DO_OTGrammar_Stringses_learn);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs...", 0, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (rrip)...", 0, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_rrip);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (eip)...", 0, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_eip);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (wrip)...", 0, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_wrip);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Get fraction correct...", 0, 0, DO_OTGrammar_Distributions_getFractionCorrect);
-	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"List obligatory rankings...", 0, praat_HIDDEN, DO_OTGrammar_Distributions_listObligatoryRankings);
-	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Learn...", 0, 0, DO_OTGrammar_PairDistribution_learn);
-	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Find positive weights...", 0, 0, DO_OTGrammar_PairDistribution_findPositiveWeights);
-	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Get fraction correct...", 0, 0, DO_OTGrammar_PairDistribution_getFractionCorrect);
-	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Get minimum number correct...", 0, 0, DO_OTGrammar_PairDistribution_getMinimumNumberCorrect);
-	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"List obligatory rankings", 0, 0, DO_OTGrammar_PairDistribution_listObligatoryRankings);
-	praat_addAction2 (classOTMulti, 1, classPairDistribution, 1, U"Learn...", 0, 0, DO_OTMulti_PairDistribution_learn);
-	praat_addAction2 (classOTMulti, 1, classStrings, 1, U"Get outputs...", 0, 0, DO_OTMulti_Strings_generateOptimalForms);
-
-	praat_addMenuCommand (U"Objects", U"New", U"Symmetric networks", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create empty Network...", 0, 1, DO_Create_empty_Network);
-		praat_addMenuCommand (U"Objects", U"New", U"Create rectangular Network...", 0, 1, DO_Create_rectangular_Network);
-		praat_addMenuCommand (U"Objects", U"New", U"Create rectangular Network (vertical)...", 0, 1, DO_Create_rectangular_Network_vertical);
-
-	praat_addAction1 (classNetwork, 0, U"Draw...", 0, 0, DO_Network_draw);
-	praat_addAction1 (classNetwork, 1, U"Tabulate -", 0, 0, 0);
-		praat_addAction1 (classNetwork, 1, U"List nodes...", 0, 1, DO_Network_listNodes);
-		praat_addAction1 (classNetwork, 1, U"Nodes down to table...", 0, 1, DO_Network_nodes_downto_Table);
-	praat_addAction1 (classNetwork, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classNetwork, 1, U"Get activity...", 0, 1, DO_Network_getActivity);
-		praat_addAction1 (classNetwork, 1, U"Get weight...", 0, 1, DO_Network_getWeight);
-	praat_addAction1 (classNetwork, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classNetwork, 0, U"Add node...", 0, 1, DO_Network_addNode);
-		praat_addAction1 (classNetwork, 0, U"Add connection...", 0, 1, DO_Network_addConnection);
-		praat_addAction1 (classNetwork, 1, U"-- activity --", 0, 1, 0);
-		praat_addAction1 (classNetwork, 0, U"Set activity...", 0, 1, DO_Network_setActivity);
-		praat_addAction1 (classNetwork, 0, U"Set clamping...", 0, 1, DO_Network_setClamping);
-		praat_addAction1 (classNetwork, 0, U"Zero activities...", 0, 1, DO_Network_zeroActivities);
-		praat_addAction1 (classNetwork, 0, U"Normalize activities...", 0, 1, DO_Network_normalizeActivities);
-		praat_addAction1 (classNetwork, 0, U"Spread activities...", 0, 1, DO_Network_spreadActivities);
-		praat_addAction1 (classNetwork, 1, U"Set activity clipping rule...", 0, 1, DO_Network_setActivityClippingRule);
-		praat_addAction1 (classNetwork, 1, U"Set activity leak...", 0, 1, DO_Network_setActivityLeak);
-		praat_addAction1 (classNetwork, 1, U"Set shunting...", 0, 1, DO_Network_setShunting);
-		praat_addAction1 (classNetwork, 1, U"-- weight --", 0, 1, 0);
-		praat_addAction1 (classNetwork, 0, U"Set weight...", 0, 1, DO_Network_setWeight);
-		praat_addAction1 (classNetwork, 0, U"Update weights", 0, 1, DO_Network_updateWeights);
-		praat_addAction1 (classNetwork, 0, U"Normalize weights...", 0, 1, DO_Network_normalizeWeights);
-		praat_addAction1 (classNetwork, 1, U"Set instar...", 0, 1, DO_Network_setInstar);
-		praat_addAction1 (classNetwork, 1, U"Set outstar...", 0, 1, DO_Network_setOutstar);
-		praat_addAction1 (classNetwork, 1, U"Set weight leak...", 0, 1, DO_Network_setWeightLeak);
+	praat_addAction1 (classOTMulti, 0, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_OTMulti_edit);
+	praat_addAction1 (classOTMulti, 0, U"Edit", nullptr, praat_HIDDEN, DO_OTMulti_edit);
+	praat_addAction1 (classOTMulti, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 0, U"Draw tableau...", nullptr, 1, DO_OTMulti_drawTableau);
+		praat_addAction1 (classOTMulti, 0, U"Draw tableau (narrowly)...", nullptr, 1, DO_OTMulti_drawTableau_narrowly);
+	praat_addAction1 (classOTMulti, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 1, U"Get number of constraints", nullptr, 1, DO_OTMulti_getNumberOfConstraints);
+		praat_addAction1 (classOTMulti, 1, U"Get constraint...", nullptr, 1, DO_OTMulti_getConstraint);
+		praat_addAction1 (classOTMulti, 1, U"Get constraint number...", nullptr, 1, DO_OTMulti_getConstraintIndexFromName);
+		praat_addAction1 (classOTMulti, 1, U"Get ranking value...", nullptr, 1, DO_OTMulti_getRankingValue);
+		praat_addAction1 (classOTMulti, 1, U"Get disharmony...", nullptr, 1, DO_OTMulti_getDisharmony);
+		praat_addAction1 (classOTMulti, 1, U"Get number of candidates", nullptr, 1, DO_OTMulti_getNumberOfCandidates);
+		praat_addAction1 (classOTMulti, 1, U"Get candidate...", nullptr, 1, DO_OTMulti_getCandidate);
+		praat_addAction1 (classOTMulti, 1, U"Get number of violations...", nullptr, 1, DO_OTMulti_getNumberOfViolations);
+		praat_addAction1 (classOTMulti, 1, U"-- parse --", nullptr, 1, nullptr);
+		praat_addAction1 (classOTMulti, 1, U"Get winner...", nullptr, 1, DO_OTMulti_getWinner);
+	praat_addAction1 (classOTMulti, 0, U"Evaluate", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 0, U"Evaluate...", nullptr, 1, DO_OTMulti_evaluate);
+		praat_addAction1 (classOTMulti, 0, U"Get output...", nullptr, 1, DO_OTMulti_generateOptimalForm);
+		praat_addAction1 (classOTMulti, 0, U"Get outputs...", nullptr, 1, DO_OTMulti_generateOptimalForms);
+		praat_addAction1 (classOTMulti, 0, U"To output Distribution...", nullptr, 1, DO_OTMulti_to_Distribution);
+	praat_addAction1 (classOTMulti, 0, U"Modify ranking", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 0, U"Set ranking...", nullptr, 0, DO_OTMulti_setRanking);
+		praat_addAction1 (classOTMulti, 0, U"Reset all rankings...", nullptr, 0, DO_OTMulti_resetAllRankings);
+		praat_addAction1 (classOTMulti, 0, U"Learn one...", nullptr, 0, DO_OTMulti_learnOne);
+	praat_addAction1 (classOTMulti, 0, U"Modify behaviour -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 1, U"Set decision strategy...", nullptr, 1, DO_OTMulti_setDecisionStrategy);
+		praat_addAction1 (classOTMulti, 1, U"Set leak...", nullptr, 1, DO_OTMulti_setLeak);
+		praat_addAction1 (classOTMulti, 1, U"Set constraint plasticity...", nullptr, 1, DO_OTMulti_setConstraintPlasticity);
+	praat_addAction1 (classOTMulti, 0, U"Modify structure -", nullptr, 0, nullptr);
+		praat_addAction1 (classOTMulti, 0, U"Remove constraint...", nullptr, 1, DO_OTMulti_removeConstraint);
+
+	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Query -", nullptr, 0, nullptr);
+		praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Are all partial outputs grammatical?", nullptr, 1, DO_OTGrammar_Strings_areAllPartialOutputsGrammatical);
+		praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Are all partial outputs singly grammatical?", nullptr, 1, DO_OTGrammar_Strings_areAllPartialOutputsSinglyGrammatical);
+	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Inputs to outputs...", nullptr, 0, DO_OTGrammar_Strings_inputsToOutputs);
+	praat_addAction2 (classOTGrammar, 1, classStrings, 1, U"Learn from partial outputs...", nullptr, 0, DO_OTGrammar_Strings_learnFromPartialOutputs);
+	praat_addAction2 (classOTGrammar, 1, classStrings, 2, U"Learn...", nullptr, 0, DO_OTGrammar_Stringses_learn);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs...", nullptr, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (rrip)...", nullptr, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_rrip);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (eip)...", nullptr, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_eip);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Learn from partial outputs (wrip)...", nullptr, 0, DO_OTGrammar_Distributions_learnFromPartialOutputs_wrip);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"Get fraction correct...", nullptr, 0, DO_OTGrammar_Distributions_getFractionCorrect);
+	praat_addAction2 (classOTGrammar, 1, classDistributions, 1, U"List obligatory rankings...", nullptr, praat_HIDDEN, DO_OTGrammar_Distributions_listObligatoryRankings);
+	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Learn...", nullptr, 0, DO_OTGrammar_PairDistribution_learn);
+	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Find positive weights...", nullptr, 0, DO_OTGrammar_PairDistribution_findPositiveWeights);
+	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Get fraction correct...", nullptr, 0, DO_OTGrammar_PairDistribution_getFractionCorrect);
+	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"Get minimum number correct...", nullptr, 0, DO_OTGrammar_PairDistribution_getMinimumNumberCorrect);
+	praat_addAction2 (classOTGrammar, 1, classPairDistribution, 1, U"List obligatory rankings", nullptr, 0, DO_OTGrammar_PairDistribution_listObligatoryRankings);
+	praat_addAction2 (classOTMulti, 1, classPairDistribution, 1, U"Learn...", nullptr, 0, DO_OTMulti_PairDistribution_learn);
+	praat_addAction2 (classOTMulti, 1, classStrings, 1, U"Get outputs...", nullptr, 0, DO_OTMulti_Strings_generateOptimalForms);
+
+	praat_addMenuCommand (U"Objects", U"New", U"Symmetric neural networks", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create empty Network...", nullptr, 1, DO_Create_empty_Network);
+		praat_addMenuCommand (U"Objects", U"New", U"Create rectangular Network...", nullptr, 1, DO_Create_rectangular_Network);
+		praat_addMenuCommand (U"Objects", U"New", U"Create rectangular Network (vertical)...", nullptr, 1, DO_Create_rectangular_Network_vertical);
+		praat_addMenuCommand (U"Objects", U"New", U"Create RBM...", nullptr, 1, DO_Create_RBM);
+
+	praat_addAction1 (classNetwork, 0, U"Draw...", nullptr, 0, DO_Network_draw);
+	praat_addAction1 (classNetwork, 1, U"Tabulate -", nullptr, 0, nullptr);
+		praat_addAction1 (classNetwork, 1, U"List nodes...", nullptr, 1, DO_Network_listNodes);
+		praat_addAction1 (classNetwork, 1, U"Nodes down to table...", nullptr, 1, DO_Network_nodes_downto_Table);
+	praat_addAction1 (classNetwork, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classNetwork, 1, U"Get activity...", nullptr, 1, DO_Network_getActivity);
+		praat_addAction1 (classNetwork, 1, U"Get weight...", nullptr, 1, DO_Network_getWeight);
+	praat_addAction1 (classNetwork, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classNetwork, 0, U"Add node...", nullptr, 1, DO_Network_addNode);
+		praat_addAction1 (classNetwork, 0, U"Add connection...", nullptr, 1, DO_Network_addConnection);
+		praat_addAction1 (classNetwork, 1, U"-- activity --", nullptr, 1, nullptr);
+		praat_addAction1 (classNetwork, 0, U"Set activity...", nullptr, 1, DO_Network_setActivity);
+		praat_addAction1 (classNetwork, 0, U"Set clamping...", nullptr, 1, DO_Network_setClamping);
+		praat_addAction1 (classNetwork, 0, U"Zero activities...", nullptr, 1, DO_Network_zeroActivities);
+		praat_addAction1 (classNetwork, 0, U"Normalize activities...", nullptr, 1, DO_Network_normalizeActivities);
+		praat_addAction1 (classNetwork, 0, U"Spread activities...", nullptr, 1, DO_Network_spreadActivities);
+		praat_addAction1 (classNetwork, 1, U"Set activity clipping rule...", nullptr, 1, DO_Network_setActivityClippingRule);
+		praat_addAction1 (classNetwork, 1, U"Set activity leak...", nullptr, 1, DO_Network_setActivityLeak);
+		praat_addAction1 (classNetwork, 1, U"Set shunting...", nullptr, 1, DO_Network_setShunting);
+		praat_addAction1 (classNetwork, 1, U"-- weight --", nullptr, 1, nullptr);
+		praat_addAction1 (classNetwork, 0, U"Set weight...", nullptr, 1, DO_Network_setWeight);
+		praat_addAction1 (classNetwork, 0, U"Update weights", nullptr, 1, DO_Network_updateWeights);
+		praat_addAction1 (classNetwork, 0, U"Normalize weights...", nullptr, 1, DO_Network_normalizeWeights);
+		praat_addAction1 (classNetwork, 1, U"Set instar...", nullptr, 1, DO_Network_setInstar);
+		praat_addAction1 (classNetwork, 1, U"Set outstar...", nullptr, 1, DO_Network_setOutstar);
+		praat_addAction1 (classNetwork, 1, U"Set weight leak...", nullptr, 1, DO_Network_setWeightLeak);
+
+	praat_addAction1 (classRBM, 0, U"Modify", nullptr, 0, nullptr);
+		praat_addAction1 (classRBM, 0, U"Spread up", nullptr, 0, DO_RBM_spreadUp);
+		praat_addAction1 (classRBM, 0, U"Spread down", nullptr, 0, DO_RBM_spreadDown);
+		praat_addAction1 (classRBM, 0, U"Spread up (reconstruction)", nullptr, 0, DO_RBM_spreadUp_reconstruction);
+		praat_addAction1 (classRBM, 0, U"Spread down (reconstruction)", nullptr, 0, DO_RBM_spreadDown_reconstruction);
+		praat_addAction1 (classRBM, 0, U"Sample input", nullptr, 0, DO_RBM_sampleInput);
+		praat_addAction1 (classRBM, 0, U"Sample output", nullptr, 0, DO_RBM_sampleOutput);
+		praat_addAction1 (classRBM, 0, U"Update...", nullptr, 0, DO_RBM_update);
+	praat_addAction1 (classRBM, 0, U"Extract", nullptr, 0, nullptr);
+		praat_addAction1 (classRBM, 0, U"Extract input activities", nullptr, 0, DO_RBM_extractInputActivities);
+		praat_addAction1 (classRBM, 0, U"Extract output activities", nullptr, 0, DO_RBM_extractOutputActivities);
+		praat_addAction1 (classRBM, 0, U"Extract input reconstruction", nullptr, 0, DO_RBM_extractInputReconstruction);
+		praat_addAction1 (classRBM, 0, U"Extract output reconstruction", nullptr, 0, DO_RBM_extractOutputReconstruction);
+		praat_addAction1 (classRBM, 0, U"Extract input biases", nullptr, 0, DO_RBM_extractInputBiases);
+		praat_addAction1 (classRBM, 0, U"Extract output biases", nullptr, 0, DO_RBM_extractOutputBiases);
+		praat_addAction1 (classRBM, 0, U"Extract weights", nullptr, 0, DO_RBM_extractWeights);
+
+	praat_addAction2 (classRBM, 1, classPattern, 1, U"Apply to input...", nullptr, 0, DO_RBM_Pattern_applyToInput);
+	praat_addAction2 (classRBM, 1, classPattern, 1, U"Apply to output...", nullptr, 0, DO_RBM_Pattern_applyToOutput);
+	praat_addAction2 (classRBM, 1, classPattern, 1, U"Learn...", nullptr, 0, DO_RBM_Pattern_learn);
 }
 
 /* End of file praat_gram.cpp */
diff --git a/kar/ipaSerifRegularPS.cpp b/kar/ipaSerifRegularPS.cpp
index 90fea65..77ee034 100644
--- a/kar/ipaSerifRegularPS.cpp
+++ b/kar/ipaSerifRegularPS.cpp
@@ -12,9 +12,8 @@
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *  GNU General Public License for more details.
  *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* This file was converted by R.L. from a PFA file generated from TIPA,
diff --git a/kar/longchar.cpp b/kar/longchar.cpp
index 9e59aa0..108cd49 100644
--- a/kar/longchar.cpp
+++ b/kar/longchar.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -617,7 +616,7 @@ static short inited = 0;
 #define UNICODE_TOP_GENERICIZABLE  65000
 static struct { char first, second; } genericDigraph [1+UNICODE_TOP_GENERICIZABLE];
 
-static void init (void) {
+static void init () {
 	Longchar_Info data;
 	int i;
 	for (i = 0, data = & Longchar_database [0]; data -> first != '\0'; i ++, data ++) {
diff --git a/kar/longchar.h b/kar/longchar.h
index e8f67d3..bebacd5 100644
--- a/kar/longchar.h
+++ b/kar/longchar.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <wchar.h>
diff --git a/main/GNU_General_Public_License.txt b/main/GNU_General_Public_License.txt
index c92e00f..1e12414 100644
--- a/main/GNU_General_Public_License.txt
+++ b/main/GNU_General_Public_License.txt
@@ -3,7 +3,7 @@ GNU GENERAL PUBLIC LICENSE
 Version 2, June 1991 
 
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.  
-59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
diff --git a/main/main_Praat.cpp b/main/main_Praat.cpp
index bf66920..04efa12 100644
--- a/main/main_Praat.cpp
+++ b/main/main_Praat.cpp
@@ -1,53 +1,52 @@
 /* main_Praat.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "praat.h"
-#include "praat_version.h"
+#include "../sys/praat.h"
+#include "../sys/praat_version.h"
 
-static void logo (Graphics g) {
-	Graphics_setWindow (g, 0, 1, 0.00, 0.80);
-	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
-	Graphics_setFont (g, kGraphics_font_TIMES);
-	Graphics_setFontSize (g, 45);
-	Graphics_setColour (g, Graphics_MAROON);
-	Graphics_text (g, 0.385, 0.66, U"P");
-	Graphics_text (g, 0.448, 0.66, U"\\s{R}");
-	Graphics_text (g, 0.510, 0.66, U"\\s{A}");
-	Graphics_text (g, 0.575, 0.66, U"\\s{A}");
-	Graphics_text (g, 0.628, 0.66, U"\\s{T}");
-	Graphics_setFontSize (g, 15);
-	Graphics_text (g, 0.5, 0.55, U"%%doing phonetics by computer");
+static void logo (Graphics graphics) {
+	Graphics_setWindow (graphics, 0.0, 1.0, 0.0, 0.8);
+	Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_HALF);
+	Graphics_setFont (graphics, kGraphics_font_TIMES);
+	Graphics_setFontSize (graphics, 45);
+	Graphics_setColour (graphics, Graphics_MAROON);
+	Graphics_text (graphics, 0.385, 0.66, U"P");
+	Graphics_text (graphics, 0.448, 0.66, U"\\s{R}");
+	Graphics_text (graphics, 0.510, 0.66, U"\\s{A}");
+	Graphics_text (graphics, 0.575, 0.66, U"\\s{A}");
+	Graphics_text (graphics, 0.628, 0.66, U"\\s{T}");
+	Graphics_setFontSize (graphics, 15);
+	Graphics_text (graphics, 0.5, 0.55, U"%%doing phonetics by computer");
 	#define xstr(s) str(s)
 	#define str(s) #s
-	Graphics_text (g, 0.5, 0.45, U"version " xstr(PRAAT_VERSION_STR));
-	Graphics_setColour (g, Graphics_BLACK);
-	Graphics_setFontSize (g, 14);
-	Graphics_text (g, 0.5, 0.33, U"www.praat.org");
-	Graphics_setFont (g, kGraphics_font_HELVETICA);
-	Graphics_setFontSize (g, 10);
-	Graphics_text (g, 0.5, 0.16, U"Copyright © 1992–" xstr(PRAAT_YEAR) " by Paul Boersma and David Weenink");
+	Graphics_text (graphics, 0.5, 0.45, U"version " xstr(PRAAT_VERSION_STR));
+	Graphics_setColour (graphics, Graphics_BLACK);
+	Graphics_setFontSize (graphics, 14);
+	Graphics_text (graphics, 0.5, 0.33, U"www.praat.org");
+	Graphics_setFont (graphics, kGraphics_font_HELVETICA);
+	Graphics_setFontSize (graphics, 10);
+	Graphics_text (graphics, 0.5, 0.16, U"Copyright © 1992–" xstr(PRAAT_YEAR) " by Paul Boersma and David Weenink");
 }
 
 int main (int argc, char *argv []) {
 	try {
-		praat_setLogo (130, 80, logo);
-		praat_init (U"Praat", (unsigned int) argc, argv);
+		praat_setLogo (130.0, 80.0, logo);
+		praat_init (U"Praat", argc, argv);
 		INCLUDE_LIBRARY (praat_uvafon_init)
 		INCLUDE_LIBRARY (praat_contrib_Ola_KNN_init)
 		praat_run ();
diff --git a/makefiles/makefile.defs.cygwin64 b/makefiles/makefile.defs.cygwin64
new file mode 100644
index 0000000..fb5ce91
--- /dev/null
+++ b/makefiles/makefile.defs.cygwin64
@@ -0,0 +1,25 @@
+# File: makefile.defs.cygwin64
+
+# System: Cygwin on Windows
+# Paul Boersma, 13 September 2015
+
+CC = gcc -std=gnu99
+
+CXX = g++ -std=gnu++11 -Wshadow
+
+CFLAGS = -mwin32 -DUNICODE -D_FILE_OFFSET_BITS=64 -O1
+# Probably implicit: -m64 -mwin32 -march=x86_64 -mtune=generic
+
+CXXFLAGS = $(CFLAGS)
+
+LINK = g++
+
+EXECUTABLE = Praat.exe
+
+LIBS = -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
+
+AR = ar
+RANLIB = ranlib
+WINDRES = windres
+ICON = praat_win.o
+MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw32 b/makefiles/makefile.defs.darmin32
similarity index 100%
copy from makefiles/makefile.defs.mingw32
copy to makefiles/makefile.defs.darmin32
diff --git a/makefiles/makefile.defs.mingw64 b/makefiles/makefile.defs.darmin64
similarity index 100%
copy from makefiles/makefile.defs.mingw64
copy to makefiles/makefile.defs.darmin64
diff --git a/makefiles/makefile.defs.linux.pulse b/makefiles/makefile.defs.linux.pulse
new file mode 100644
index 0000000..8fda41a
--- /dev/null
+++ b/makefiles/makefile.defs.linux.pulse
@@ -0,0 +1,23 @@
+# File: makefile.defs.linux.pulse
+
+# System: Linux
+# David Weenink and Paul Boersma, 17 January 2016
+
+CC = gcc -std=gnu99
+
+CXX = g++ -std=c++11
+
+CFLAGS = -DUNIX -Dlinux -DALSA -DHAVE_PULSEAUDIO -D_FILE_OFFSET_BITS=64 `pkg-config --cflags gtk+-2.0` -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O3 -g1 -pthread
+
+CXXFLAGS = $(CFLAGS) -Wshadow
+
+LINK = g++
+
+EXECUTABLE = praat
+
+LIBS = `pkg-config --libs gtk+-2.0` -lm -lpulse -lasound -lpthread
+
+AR = ar
+RANLIB = ls
+ICON =
+MAIN_ICON =
diff --git a/makefiles/makefile.defs.linuxc.alsa b/makefiles/makefile.defs.linuxc.alsa
deleted file mode 100644
index 45f8f46..0000000
--- a/makefiles/makefile.defs.linuxc.alsa
+++ /dev/null
@@ -1,23 +0,0 @@
-# File: makefile.defs.linuxc.alsa
-
-# System: Linux
-# Paul Boersma, 22 March 2014
-
-CC = gcc -std=gnu99
-
-CXX = g++ -std=c++11
-
-CFLAGS = -DCONSOLE_APPLICATION -DUNIX -Dlinux -DALSA -D_FILE_OFFSET_BITS=64 -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread
-
-CXXFLAGS = $(CFLAGS) -Wshadow
-
-LINK = g++
-
-EXECUTABLE = praat
-
-LIBS = -lm -lasound -lpthread
-
-AR = ar
-RANLIB = ls
-ICON =
-MAIN_ICON =
diff --git a/makefiles/makefile.defs.linuxs.alsa b/makefiles/makefile.defs.linuxs.alsa
deleted file mode 100644
index 850520b..0000000
--- a/makefiles/makefile.defs.linuxs.alsa
+++ /dev/null
@@ -1,23 +0,0 @@
-# File: makefile.defs.linuxc.alsa
-
-# System: Linux
-# Paul Boersma, 22 March 2014
-
-CC = gcc -std=gnu99
-
-CXX = g++ -std=c++11
-
-CFLAGS = -DNO_GRAPHICS -DUNIX -Dlinux -DALSA -D_FILE_OFFSET_BITS=64 -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread
-
-CXXFLAGS = $(CFLAGS) -Wshadow
-
-LINK = g++
-
-EXECUTABLE = praat
-
-LIBS = -lm -lasound -lpthread
-
-AR = ar
-RANLIB = ls
-ICON =
-MAIN_ICON =
diff --git a/makefiles/makefile.defs.linuxs.pulse b/makefiles/makefile.defs.linuxs.pulse
new file mode 100644
index 0000000..d1519af
--- /dev/null
+++ b/makefiles/makefile.defs.linuxs.pulse
@@ -0,0 +1,23 @@
+# File: makefile.defs.linuxs.pulse
+
+# System: Linux
+# Paul Boersma, 4 November 2015
+
+CC = gcc -std=gnu99
+
+CXX = g++ -std=c++11
+
+CFLAGS = -DNO_GRAPHICS -DUNIX -Dlinux -DALSA -DHAVE_PULSEAUDIO -D_FILE_OFFSET_BITS=64 -Werror=missing-prototypes -Werror=implicit -Wreturn-type -Wunused -Wunused-parameter -Wuninitialized -O1 -g1 -pthread
+
+CXXFLAGS = $(CFLAGS) -Wshadow
+
+LINK = g++
+
+EXECUTABLE = praat
+
+LIBS = -lm -lasound -lpthread
+
+AR = ar
+RANLIB = ls
+ICON =
+MAIN_ICON =
diff --git a/makefiles/makefile.defs.mingw32 b/makefiles/makefile.defs.mingw32
index 09b51ff..44b08b6 100644
--- a/makefiles/makefile.defs.mingw32
+++ b/makefiles/makefile.defs.mingw32
@@ -1,24 +1,27 @@
 # File: makefile.defs.mingw32
 
-# System: MinGW
-# Paul Boersma, 17 December 2014
+# System: MinGW on Windows under Cygwin
+# Paul Boersma, 8 January 2016
 
-CC = /mingw32/bin/gcc -std=gnu99 -isystem /mingw32/include
+PREFIX = i686-w64-mingw32-
 
-CXX = /mingw32/bin/g++ -std=c++0x -isystem /mingw32/include/c++/4.7.0 -isystem /mingw32/include -Wshadow
+CC = $(PREFIX)gcc -std=gnu99
 
-CFLAGS = -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DUNICODE -D_FILE_OFFSET_BITS=64 -Dmain=wingwmain -O1 -pthread
+CXX = $(PREFIX)g++ -std=gnu++11 -Wshadow
+
+CFLAGS = -municode -D_FILE_OFFSET_BITS=64 -O3
+# Probably implicit: -m32 -mwin32 -march=i686 -mtune=generic
 
 CXXFLAGS = $(CFLAGS)
 
-LINK = /mingw32/bin/g++
+LINK = $(PREFIX)g++
 
 EXECUTABLE = Praat.exe
 
-LIBS = -L/mingw32/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
+LIBS = -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
 
-AR = /mingw32/bin/ar
-RANLIB = /mingw32/bin/ranlib
-WINDRES = /mingw32/bin/windres
+AR = $(PREFIX)ar
+RANLIB = $(PREFIX)ranlib
+WINDRES = $(PREFIX)windres
 ICON = praat_win.o
 MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw32-490 b/makefiles/makefile.defs.mingw32-490
deleted file mode 100644
index 4c26614..0000000
--- a/makefiles/makefile.defs.mingw32-490
+++ /dev/null
@@ -1,24 +0,0 @@
-# File: makefile.defs.mingw32-490
-
-# System: MinGW
-# Paul Boersma, 17 December 2014
-
-CC = /mingw32-490/bin/x86_64-w64-mingw32-gcc -std=gnu99 -isystem /mingw32-490/mingw/include
-
-CXX = /mingw32-490/bin/x86_64-w64-mingw32-g++ -std=c++0x -isystem /mingw32-490/mingw/include/c++/4.9.0 -isystem /mingw32-490/mingw/include -Wshadow -m64 -flto
-
-CFLAGS = -DWINVER=0x0600 -D_WIN32_WINNT=0x0600 -D_WIN32_IE=0x0700 -DUNICODE -D_FILE_OFFSET_BITS=64 -Dmain=wingwmain -O1
-
-CXXFLAGS = $(CFLAGS) -pthread
-
-LINK = /mingw32-490/mingw/bin/g++
-
-EXECUTABLE = Praat.exe
-
-LIBS = -L/mingw32-490/x86_64-w64-mingw32/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
-
-AR = /mingw32-490/mingw/bin/ar
-RANLIB = /mingw32-490/mingw/bin/ranlib
-WINDRES = /mingw32-490/bin/x86_64-w64-mingw32-windres
-ICON = praat_win.o
-MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw32c b/makefiles/makefile.defs.mingw32c
deleted file mode 100644
index 2386a26..0000000
--- a/makefiles/makefile.defs.mingw32c
+++ /dev/null
@@ -1,24 +0,0 @@
-# File: makefile.defs.mingw32c
-
-# System: MinGW
-# Paul Boersma, 17 December 2014
-
-CC = /mingw32/bin/gcc -std=gnu99 -isystem /mingw32/include
-
-CXX = /mingw32/bin/g++ -std=c++0x -isystem /mingw32/include/c++/4.7.0 -isystem /mingw32/include -Wshadow
-
-CFLAGS = -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DUNICODE -D_FILE_OFFSET_BITS=64 -DCONSOLE_APPLICATION -O1 -pthread
-
-CXXFLAGS = $(CFLAGS)
-
-LINK = /mingw32/bin/g++
-
-EXECUTABLE = praatcon.exe
-
-LIBS = -L/mingw32/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++
-
-AR = /mingw32/bin/ar
-RANLIB = /mingw32/bin/ranlib
-WINDRES = /mingw32/bin/windres
-ICON = praat_win.o
-MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw64 b/makefiles/makefile.defs.mingw64
index 381dd11..8d269a1 100644
--- a/makefiles/makefile.defs.mingw64
+++ b/makefiles/makefile.defs.mingw64
@@ -1,24 +1,27 @@
 # File: makefile.defs.mingw64
 
-# System: MinGW
-# Paul Boersma, 17 December 2014
+# System: MinGW on Windows under Cygwin
+# Paul Boersma, 8 January 2016
 
-CC = /mingw64/bin/gcc -std=gnu99 -isystem /mingw64/include
+PREFIX = x86_64-w64-mingw32-
 
-CXX = /mingw64/bin/g++ -std=c++0x -isystem /mingw64/include/c++/4.7.0 -isystem /mingw64/include -Wshadow -m64
+CC = $(PREFIX)gcc -std=gnu99
 
-CFLAGS = -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DUNICODE -D_FILE_OFFSET_BITS=64 -Dmain=wingwmain -O1 -pthread
+CXX = $(PREFIX)g++ -std=gnu++11 -Wshadow
+
+CFLAGS = -municode -D_FILE_OFFSET_BITS=64 -O3
+# Probably implicit: -m64 -mwin32 -march=x86_64 -mtune=generic
 
 CXXFLAGS = $(CFLAGS)
 
-LINK = /mingw64/bin/g++
+LINK = $(PREFIX)g++
 
 EXECUTABLE = Praat.exe
 
-LIBS = -L/mingw64/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 /mingw64/lib/GdiPlus.dll -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
+LIBS = -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 -lgdiplus -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
 
-AR = /mingw64/bin/ar
-RANLIB = /mingw64/bin/ranlib
-WINDRES = /mingw64/bin/windres
+AR = $(PREFIX)ar
+RANLIB = $(PREFIX)ranlib
+WINDRES = $(PREFIX)windres
 ICON = praat_win.o
 MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw64-490 b/makefiles/makefile.defs.mingw64-490
deleted file mode 100644
index d1381f7..0000000
--- a/makefiles/makefile.defs.mingw64-490
+++ /dev/null
@@ -1,24 +0,0 @@
-# File: makefile.defs.mingw64-490
-
-# System: MinGW
-# Paul Boersma, 17 December 2014
-
-CC = /mingw64-490/bin/x86_64-w64-mingw32-gcc -std=gnu99 -isystem /mingw64-490/mingw/include
-
-CXX = /mingw64-490/bin/x86_64-w64-mingw32-g++ -std=c++0x -isystem /mingw64-490/mingw/include/c++/4.9.0 -isystem /mingw64-490/mingw/include -Wshadow -m64
-
-CFLAGS = -DWINVER=0x0600 -D_WIN32_WINNT=0x0600 -D_WIN32_IE=0x0700 -DUNICODE -D_FILE_OFFSET_BITS=64 -Dmain=wingwmain -O1 -flto
-
-CXXFLAGS = $(CFLAGS) -pthread
-
-LINK = /mingw64-490/mingw/bin/g++
-
-EXECUTABLE = Praat.exe
-
-LIBS = -L/mingw64-490/x86_64-w64-mingw32/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 /mingw64/lib/GdiPlus.dll -lcomdlg32 -static-libgcc -static-libstdc++ -mwindows
-
-AR = /mingw64-490/mingw/bin/ar
-RANLIB = /mingw64-490/mingw/bin/ranlib
-WINDRES = /mingw64-490/bin/x86_64-w64-mingw32-windres
-ICON = praat_win.o
-MAIN_ICON = main/praat_win.o
diff --git a/makefiles/makefile.defs.mingw64c b/makefiles/makefile.defs.mingw64c
deleted file mode 100644
index 16fa729..0000000
--- a/makefiles/makefile.defs.mingw64c
+++ /dev/null
@@ -1,24 +0,0 @@
-# File: makefile.defs.mingw64c
-
-# System: MinGW
-# Paul Boersma, 17 December 2014
-
-CC = /mingw64/bin/gcc -std=gnu99 -isystem /mingw64/include
-
-CXX = /mingw64/bin/g++ -std=c++0x -isystem /mingw64/include/c++/4.7.0 -isystem /mingw64/include -Wshadow -m64
-
-CFLAGS = -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0500 -DUNICODE -D_FILE_OFFSET_BITS=64 -DCONSOLE_APPLICATION -O1 -pthread
-
-CXXFLAGS = $(CFLAGS)
-
-LINK = /mingw64/bin/g++
-
-EXECUTABLE = praatcon.exe
-
-LIBS = -L/mingw64/lib -lwinmm -lwsock32 -lcomctl32 -lole32 -lgdi32 /mingw64/lib/GdiPlus.dll -lcomdlg32 -static-libgcc -static-libstdc++
-
-AR = /mingw64/bin/ar
-RANLIB = /mingw64/bin/ranlib
-WINDRES = /mingw64/bin/windres
-ICON = praat_win.o
-MAIN_ICON = main/praat_win.o
diff --git a/num/NUM.cpp b/num/NUM.cpp
index 416632f..2e63fa6 100644
--- a/num/NUM.cpp
+++ b/num/NUM.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2008,2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -58,7 +57,7 @@ void NUMscale (double *x, double xminfrom, double xmaxfrom, double xminto, doubl
 	else *x = xminto + (xmaxto - xminto) * ((*x - xminfrom) / (xmaxfrom - xminfrom));
 }
 
-void NUMinit (void) {
+void NUMinit () {
 	gsl_set_error_handler_off ();
 	NUMrandom_init ();
 }
@@ -497,7 +496,7 @@ void NUM_viterbi (
 	}
 	for (long iframe = 2; iframe <= numberOfFrames; iframe ++) {
 		for (long icand2 = 1; icand2 <= numberOfCandidates [iframe]; icand2 ++) {
-			double maximum = -1e300;
+			double maximum = -1e308;
 			long place = 0;
 			for (long icand1 = 1; icand1 <= numberOfCandidates [iframe - 1]; icand1 ++) {
 				double value = delta [iframe - 1] [icand1] + delta [iframe] [icand2]
@@ -573,7 +572,7 @@ void NUM_viterbi_multi (
 	void *closure)
 {
 	struct parm2 parm;
-	parm.indices = NULL;
+	parm.indices = nullptr;
 
 	if (ntrack > ncand) Melder_throw (U"(NUM_viterbi_multi:) "
 		U"Number of tracks (", ntrack, U") should not exceed number of candidates (", ncand, U").");
diff --git a/num/NUM.h b/num/NUM.h
index 8608d0f..21d7cc1 100644
--- a/num/NUM.h
+++ b/num/NUM.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* "NUM" = "NUMerics" */
@@ -47,7 +46,7 @@
 #endif
 #include <stdio.h>
 #include <wchar.h>
-#include "abcio.h"
+#include "../sys/abcio.h"
 #define NUMlog2(x)  (log (x) * NUMlog2e)
 
 void NUMinit ();
@@ -129,7 +128,6 @@ void * NUMvector (long elementSize, long lo, long hi);
 /*
 	Function:
 		create a vector [lo...hi] with all values initialized to 0.
-		Queue an error message and return NULL if anything went wrong.
 	Preconditions:
 		hi >= lo;
 */
@@ -146,9 +144,8 @@ void * NUMvector_copy (long elementSize, void *v, long lo, long hi);
 /*
 	Function:
 		copy (part of) a vector v, which need not have been created with NUMvector, to a new one.
-		Queue an error message and return NULL if anything went wrong.
 	Preconditions:
-		if v != NULL, the values v [lo..hi] must exist.
+		if v != nullptr, the values v [lo..hi] must exist.
 */
 
 void NUMvector_copyElements (long elementSize, void *v, void *to, long lo, long hi);
@@ -159,8 +156,8 @@ void NUMvector_copyElements (long elementSize, void *v, void *to, long lo, long
 
 bool NUMvector_equal (long elementSize, void *v1, void *v2, long lo, long hi);
 /*
-	return 1 if the vector elements v1 [lo..hi] are equal
-	to the corresponding elements of the vector v2; otherwise, return 0.
+	return true if the vector elements v1 [lo..hi] are equal
+	to the corresponding elements of the vector v2; otherwise, return false.
 	The vectors need not have been created by NUMvector.
 */
 
@@ -179,7 +176,6 @@ void * NUMmatrix (long elementSize, long row1, long row2, long col1, long col2);
 /*
 	Function:
 		create a matrix [row1...row2] [col1...col2] with all values initialized to 0.
-		Queue an error message and return NULL if anything went wrong.
 	Preconditions:
 		row2 >= row1;
 		col2 >= col1;
@@ -190,7 +186,7 @@ void NUMmatrix_free (long elementSize, void *m, long row1, long col1);
 	Function:
 		destroy a matrix m created with NUM...matrix.
 	Preconditions:
-		if m != NULL: row1 and row2
+		if m != nullptr: row1 and col1
 		must have the same value as with the creation of the matrix.
 */
 
@@ -198,9 +194,8 @@ void * NUMmatrix_copy (long elementSize, void *m, long row1, long row2, long col
 /*
 	Function:
 		copy (part of) a matrix m, wich does not have to be created with NUMmatrix, to a new one.
-		Queue an error message and return NULL if anything went wrong.
 	Preconditions:
-		if m != NULL: the values m [rowmin..rowmax] [colmin..colmax] must exist.
+		if m != nullptr: the values m [rowmin..rowmax] [colmin..colmax] must exist.
 */
 
 void NUMmatrix_copyElements (long elementSize, void *m, void *to, long row1, long row2, long col1, long col2);
@@ -216,20 +211,20 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 	The matrices need not have been created by NUM...matrix.
 */
 
-long NUM_getTotalNumberOfArrays (void);   /* For debugging. */
+long NUM_getTotalNumberOfArrays ();   // for debugging
 
 /********** Special functions (NUM.cpp) **********/
 
 double NUMlnGamma (double x);
 double NUMbeta (double z, double w);
-double NUMbesselI (long n, double x);   /* Precondition: n >= 0 */
+double NUMbesselI (long n, double x);   // precondition: n >= 0
 double NUMbessel_i0_f (double x);
 double NUMbessel_i1_f (double x);
-double NUMbesselK (long n, double x);   /* Preconditions: n >= 0 && x > 0.0 */
+double NUMbesselK (long n, double x);   // preconditions: n >= 0 && x > 0.0
 double NUMbessel_k0_f (double x);
 double NUMbessel_k1_f (double x);
 double NUMbesselK_f (long n, double x);
-double NUMsigmoid (double x);   /* Correct also for large positive or negative x. */
+double NUMsigmoid (double x);   // correct also for large positive or negative x
 double NUMinvSigmoid (double x);
 double NUMerfcc (double x);
 double NUMgaussP (double z);
@@ -262,7 +257,7 @@ double NUMerbToHertz (double erb);
 
 /********** Sorting (NUMsort.cpp) **********/
 
-void NUMsort_d (long n, double ra []);   /* Heap sort. */
+void NUMsort_d (long n, double ra []);   // heap sort
 void NUMsort_i (long n, int ra []);
 void NUMsort_l (long n, long ra []);
 void NUMsort_str (long n, char32 *a []);
@@ -337,6 +332,8 @@ double NUMrandomUniform (double lowest, double highest);
 
 long NUMrandomInteger (long lowest, long highest);
 
+bool NUMrandomBernoulli (double probability);
+
 double NUMrandomGauss (double mean, double standardDeviation);
 double NUMrandomGauss_mt (int threadNumber, double mean, double standardDeviation);
 
@@ -467,7 +464,7 @@ public:
 	}
 	autoNUMvector (T *ptr, long from) : d_ptr (ptr), d_from (from) {
 	}
-	autoNUMvector () : d_ptr (NULL), d_from (1) {
+	autoNUMvector () : d_ptr (nullptr), d_from (1) {
 	}
 	~autoNUMvector<T> () {
 		if (d_ptr) NUMvector_free (sizeof (T), d_ptr, d_from);
@@ -480,13 +477,13 @@ public:
 	}
 	T* transfer () {
 		T* temp = d_ptr;
-		d_ptr = NULL;   // make the pointer non-automatic again
+		d_ptr = nullptr;   // make the pointer non-automatic again
 		return temp;
 	}
 	void reset (long from, long to) {
 		if (d_ptr) {
 			NUMvector_free (sizeof (T), d_ptr, d_from);
-			d_ptr = NULL;
+			d_ptr = nullptr;
 		}
 		d_from = from;
 		d_ptr = static_cast <T*> (NUMvector (sizeof (T), from, to));
@@ -530,7 +527,7 @@ public:
 	}
 	autoNUMmatrix (T **ptr, long row1, long col1) : d_ptr (ptr), d_row1 (row1), d_col1 (col1) {
 	}
-	autoNUMmatrix () : d_ptr (NULL), d_row1 (0), d_col1 (0) {
+	autoNUMmatrix () : d_ptr (nullptr), d_row1 (0), d_col1 (0) {
 	}
 	~autoNUMmatrix () {
 		if (d_ptr) NUMmatrix_free (sizeof (T), d_ptr, d_row1, d_col1);
@@ -543,13 +540,13 @@ public:
 	}
 	T** transfer () {
 		T** temp = d_ptr;
-		d_ptr = NULL;
+		d_ptr = nullptr;
 		return temp;
 	}
 	void reset (long row1, long row2, long col1, long col2) {
 		if (d_ptr) {
 			NUMmatrix_free (sizeof (T), d_ptr, d_row1, d_col1);
-			d_ptr = NULL;
+			d_ptr = nullptr;
 		}
 		d_row1 = row1;
 		d_col1 = col1;
@@ -567,7 +564,7 @@ public:
 	}
 	autodatavector (T *ptr, long from, long to) : d_ptr (ptr), d_from (from), d_to (to) {
 	}
-	autodatavector () : d_ptr (NULL), d_from (1), d_to (0) {
+	autodatavector () : d_ptr (nullptr), d_from (1), d_to (0) {
 	}
 	~autodatavector<T> () {
 		if (d_ptr) {
@@ -584,7 +581,7 @@ public:
 	}
 	T* transfer () {
 		T* temp = d_ptr;
-		d_ptr = NULL;   // make the pointer non-automatic again
+		d_ptr = nullptr;   // make the pointer non-automatic again
 		return temp;
 	}
 	void reset (long from, long to) {
@@ -592,9 +589,9 @@ public:
 			for (long i = d_from; i <= d_to; i ++)
 				Melder_free (d_ptr [i]);
 			NUMvector_free (sizeof (T), d_ptr, d_from);
-			d_ptr = NULL;
+			d_ptr = nullptr;
 		}
-		d_from = from;   // this assignment is safe, because d_ptr is NULL
+		d_from = from;   // this assignment is safe, because d_ptr is null
 		d_to = to;
 		d_ptr = static_cast <T*> (NUMvector (sizeof (T), from, to));
 	}
diff --git a/num/NUMarrays.cpp b/num/NUMarrays.cpp
index cd9b04f..0a226c2 100644
--- a/num/NUMarrays.cpp
+++ b/num/NUMarrays.cpp
@@ -2,29 +2,18 @@
  *
  * Copyright (C) 1992-2012 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2007/07/21 readText and writeText API changes
- * pb 2008/01/19 include storage in I/O names
- * pb 2009/03/14 NUMvector_add
- * pb 2011/03/29 C++
- * pb 2011/05/14 removed char (because only signed char and unsigned char can be read and written correctly)
- * pb 2011/07/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "NUM.h"
@@ -32,13 +21,13 @@
 
 static long theTotalNumberOfArrays;
 
-long NUM_getTotalNumberOfArrays (void) { return theTotalNumberOfArrays; }
+long NUM_getTotalNumberOfArrays () { return theTotalNumberOfArrays; }
 
 /*** Generic memory routines for vectors. ***/
 
 void * NUMvector (long elementSize, long lo, long hi) {
 	try {
-		if (hi < lo) return NULL;   // not an error
+		if (hi < lo) return nullptr;   // not an error
 		char *result;
 		Melder_assert (sizeof (char) == 1);   // some say that this is true by definition
 		for (;;) {   // not very infinite: 99.999 % of the time once, 0.001 % twice
@@ -54,7 +43,7 @@ void * NUMvector (long elementSize, long lo, long hi) {
 }
 
 void NUMvector_free (long elementSize, void *v, long lo) {
-	if (v == NULL) return;   // no error
+	if (! v) return;   // no error
 	char *dum = (char *) v + lo * elementSize;
 	Melder_free (dum);
 	theTotalNumberOfArrays -= 1;
@@ -62,7 +51,7 @@ void NUMvector_free (long elementSize, void *v, long lo) {
 
 void * NUMvector_copy (long elementSize, void *v, long lo, long hi) {
 	try {
-		if (v == NULL) return NULL;
+		if (! v) return nullptr;
 		char *result = reinterpret_cast <char *> (NUMvector (elementSize, lo, hi));
 		long offset = lo * elementSize;
 		memcpy (result + offset, (char *) v + offset, (hi - lo + 1) * elementSize);
@@ -74,27 +63,27 @@ void * NUMvector_copy (long elementSize, void *v, long lo, long hi) {
 
 void NUMvector_copyElements (long elementSize, void *v, void *to, long lo, long hi) {
 	long offset = lo * elementSize;
-	Melder_assert (v != NULL && to != NULL);
+	Melder_assert (!! v && !! to);
 	if (hi >= lo) memcpy ((char *) to + offset, (char *) v + offset, (hi - lo + 1) * elementSize);
 }
 
 bool NUMvector_equal (long elementSize, void *v1, void *v2, long lo, long hi) {
 	long offset = lo * elementSize;
-	Melder_assert (v1 != NULL && v2 != NULL);
+	Melder_assert (v1 && v2);
 	return ! memcmp ((char *) v1 + offset, (char *) v2 + offset, (hi - lo + 1) * elementSize);
 }
 
 void NUMvector_append (long elementSize, void **v, long lo, long *hi) {
 	try {
 		char *result;
-		if (*v == NULL) {
+		if (! *v) {
 			result = reinterpret_cast <char *> (NUMvector (elementSize, lo, lo));
 			*hi = lo;
 		} else {
 			long offset = lo * elementSize;
 			for (;;) {   // not very infinite: 99.999 % of the time once, 0.001 % twice
 				result = reinterpret_cast <char *> (Melder_realloc ((char *) *v + offset, (*hi - lo + 2) * elementSize));
-				if ((result -= offset) != NULL) break;   // this will normally succeed at the first try
+				if ((result -= offset) != nullptr) break;   // this will normally succeed at the first try
 				(void) Melder_realloc_f (result + offset, 1);   // make "sure" that the second try will succeed
 			}
 			(*hi) ++;
@@ -109,7 +98,7 @@ void NUMvector_append (long elementSize, void **v, long lo, long *hi) {
 void NUMvector_insert (long elementSize, void **v, long lo, long *hi, long position) {
 	try {
 		char *result;
-		if (*v == NULL) {
+		if (! *v) {
 			result = reinterpret_cast <char *> (NUMvector (elementSize, lo, lo));
 			*hi = lo;
 			Melder_assert (position == lo);
@@ -131,9 +120,9 @@ void NUMvector_insert (long elementSize, void **v, long lo, long *hi, long posit
 
 void * NUMmatrix (long elementSize, long row1, long row2, long col1, long col2) {
 	try {
-		int64_t numberOfRows = row2 - row1 + 1;
-		int64_t numberOfColumns = col2 - col1 + 1;
-		int64_t numberOfCells = numberOfRows * numberOfColumns;
+		int64 numberOfRows = row2 - row1 + 1;
+		int64 numberOfColumns = col2 - col1 + 1;
+		int64 numberOfCells = numberOfRows * numberOfColumns;
 
 		/*
 		 * Allocate room for the row pointers.
@@ -143,7 +132,7 @@ void * NUMmatrix (long elementSize, long row1, long row2, long col1, long col2)
 		for (;;) {
 			result = reinterpret_cast <char **> (_Melder_malloc_f (numberOfRows * sizeof (char *)));   // assume that all pointers have the same size
 			result -= row1;
-			if (result != NULL) break;   // this will normally succeed at the first try
+			if (result) break;   // this will normally succeed at the first try
 			(void) Melder_realloc_f (result + row1, 1);   // make "sure" that the second try will succeed
 		}
 		/*
@@ -158,10 +147,10 @@ void * NUMmatrix (long elementSize, long row1, long row2, long col1, long col2)
 				Melder_free (result);   // free the row pointers
 				throw MelderError ();
 			}
-			if ((result [row1] -= col1 * elementSize) != NULL) break;   // this will normally succeed at the first try
+			if ((result [row1] -= col1 * elementSize) != nullptr) break;   // this will normally succeed at the first try
 			(void) Melder_realloc_f (result [row1] + col1 * elementSize, 1);   // make "sure" that the second try will succeed
 		}
-		int64_t columnSize = numberOfColumns * elementSize;
+		int64 columnSize = numberOfColumns * elementSize;
 		for (long irow = row1 + 1; irow <= row2; irow ++) result [irow] = result [irow - 1] + columnSize;
 		theTotalNumberOfArrays += 1;
 		return result;
@@ -171,7 +160,7 @@ void * NUMmatrix (long elementSize, long row1, long row2, long col1, long col2)
 }
 
 void NUMmatrix_free (long elementSize, void *m, long row1, long col1) {
-	if (m == NULL) return;
+	if (! m) return;
 	char *dummy1 = ((char **) m) [row1] + col1 * elementSize;
 	Melder_free (dummy1);
 	char **dummy2 = (char **) m + row1;
@@ -181,9 +170,9 @@ void NUMmatrix_free (long elementSize, void *m, long row1, long col1) {
 
 void * NUMmatrix_copy (long elementSize, void * m, long row1, long row2, long col1, long col2) {
 	try {
-		if (m == NULL) return NULL;
+		if (! m) return nullptr;
 		char **result = reinterpret_cast <char **> (NUMmatrix (elementSize, row1, row2, col1, col2));
-		if (result == NULL) return NULL;
+		if (! result) return nullptr;
 		long columnOffset = col1 * elementSize;
 		long dataSize = (row2 - row1 + 1) * (col2 - col1 + 1) * elementSize;
 		memcpy (result [row1] + columnOffset, ((char **) m) [row1] + columnOffset, dataSize);
@@ -194,14 +183,14 @@ void * NUMmatrix_copy (long elementSize, void * m, long row1, long row2, long co
 }
 
 void NUMmatrix_copyElements (long elementSize, void *m, void *to, long row1, long row2, long col1, long col2) {
-	Melder_assert (m != NULL && to != NULL);
+	Melder_assert (m && to);
 	long columnOffset = col1 * elementSize;
 	long dataSize = (row2 - row1 + 1) * (col2 - col1 + 1) * elementSize;
 	memcpy (((char **) to) [row1] + columnOffset, ((char **) m) [row1] + columnOffset, dataSize);
 }
 
 bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2, long col1, long col2) {
-	Melder_assert (m1 != NULL && m2 != NULL);
+	Melder_assert (m1 && m2);
 	long columnOffset = col1 * elementSize;
 	long dataSize = (row2 - row1 + 1) * (col2 - col1 + 1) * elementSize;
 	return ! memcmp (((char **) m1) [row1] + columnOffset, ((char **) m2) [row1] + columnOffset, dataSize);
@@ -211,7 +200,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 
 #define FUNCTION(type,storage)  \
 	void NUMvector_writeText_##storage (const type *v, long lo, long hi, MelderFile file, const char32 *name) { \
-		texputintro (file, name, U" []: ", hi >= lo ? NULL : U"(empty)", 0,0,0); \
+		texputintro (file, name, U" []: ", hi >= lo ? nullptr : U"(empty)", 0,0,0); \
 		for (long i = lo; i <= hi; i ++) \
 			texput##storage (file, v [i], name, U" [", Melder_integer (i), U"]", 0,0); \
 		texexdent (file); \
@@ -223,7 +212,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 		if (feof (f) || ferror (f)) Melder_throw (U"Write error."); \
 	} \
 	type * NUMvector_readText_##storage (long lo, long hi, MelderReadText text, const char *name) { \
-		type *result = NULL; \
+		type *result = nullptr; \
 		try { \
 			result = NUMvector <type> (lo, hi); \
 			for (long i = lo; i <= hi; i ++) { \
@@ -240,7 +229,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 		} \
 	} \
 	type * NUMvector_readBinary_##storage (long lo, long hi, FILE *f) { \
-		type *result = NULL; \
+		type *result = nullptr; \
 		try { \
 			result = NUMvector <type> (lo, hi); \
 			for (long i = lo; i <= hi; i ++) { \
@@ -253,7 +242,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 		} \
 	} \
 	void NUMmatrix_writeText_##storage (type **m, long row1, long row2, long col1, long col2, MelderFile file, const char32 *name) { \
-		texputintro (file, name, U" [] []: ", row2 >= row1 ? NULL : U"(empty)", 0,0,0); \
+		texputintro (file, name, U" [] []: ", row2 >= row1 ? nullptr : U"(empty)", 0,0,0); \
 		if (row2 >= row1) { \
 			for (long irow = row1; irow <= row2; irow ++) { \
 				texputintro (file, name, U" [", Melder_integer (irow), U"]:", 0,0); \
@@ -276,7 +265,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 		if (feof (f) || ferror (f)) Melder_throw (U"Write error."); \
 	} \
 	type ** NUMmatrix_readText_##storage (long row1, long row2, long col1, long col2, MelderReadText text, const char *name) { \
-		type **result = NULL; \
+		type **result = nullptr; \
 		try { \
 			result = NUMmatrix <type> (row1, row2, col1, col2); \
 			for (long irow = row1; irow <= row2; irow ++) for (long icol = col1; icol <= col2; icol ++) { \
@@ -293,7 +282,7 @@ bool NUMmatrix_equal (long elementSize, void *m1, void *m2, long row1, long row2
 		} \
 	} \
 	type ** NUMmatrix_readBinary_##storage (long row1, long row2, long col1, long col2, FILE *f) { \
-		type **result = NULL; \
+		type **result = nullptr; \
 		try { \
 			result = NUMmatrix <type> (row1, row2, col1, col2); \
 			for (long irow = row1; irow <= row2; irow ++) for (long icol = col1; icol <= col2; icol ++) \
diff --git a/num/NUMear.cpp b/num/NUMear.cpp
index 70e1235..3f83605 100644
--- a/num/NUMear.cpp
+++ b/num/NUMear.cpp
@@ -2,25 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1999/06/26
- * pb 2002/03/07 GPL
- * pb 2011/03/29 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "NUM.h"
diff --git a/num/NUMlinprog.cpp b/num/NUMlinprog.cpp
index d3cc2dc..651e153 100644
--- a/num/NUMlinprog.cpp
+++ b/num/NUMlinprog.cpp
@@ -2,24 +2,18 @@
  *
  * Copyright (C) 2008-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2008/04/12 created
- * pb 2011/03/29 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "NUM.h"
@@ -36,15 +30,15 @@ struct structNUMlinprog {
 };
 
 void NUMlinprog_delete (NUMlinprog me) {
-	if (me == NULL) return;
-	if (my linearProgram != NULL) glp_delete_prob (my linearProgram);
+	if (! me) return;
+	if (my linearProgram) glp_delete_prob (my linearProgram);
 	NUMvector_free <int> (my ind, 1);
 	NUMvector_free <double> (my val, 1);
 	Melder_free (me);
 }
 
 NUMlinprog NUMlinprog_new (bool maximize) {
-	NUMlinprog me = NULL;
+	NUMlinprog me = nullptr;
 	try {
 		me = Melder_calloc (structNUMlinprog, 1);
 		my linearProgram = glp_create_prob ();   // TODO: check
diff --git a/num/NUMrandom.cpp b/num/NUMrandom.cpp
index 36838b1..850ac95 100644
--- a/num/NUMrandom.cpp
+++ b/num/NUMrandom.cpp
@@ -1,20 +1,19 @@
 /* NUMrandom.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* 
@@ -101,7 +100,7 @@ class NUMrandom_State { public:
 		// when NUMrandomFraction() is called without NUMrandom_init() having been called before;
 		// without this initialization, it would be detected only after 312 calls to NUMrandomFraction()
 
-	int secondAvailable;
+	bool secondAvailable;
 	double y;
 
 	/**
@@ -134,19 +133,19 @@ void NUMrandom_State :: init_by_array64 (uint64_t init_key [], unsigned int key_
 	unsigned int k = ( NN > key_length ? NN : key_length );
 	for (; k; k --) {
 		array [i] = (array [i] ^ ((array [i - 1] ^ (array [i - 1] >> 62)) * UINT64_C (3935559000370003845)))
-		  + init_key [j] + (uint64_t) j;   /* non linear */
+		  + init_key [j] + (uint64_t) j;   // non-linear
 		i ++, j ++;
 		if (i >= NN) { array [0] = array [NN - 1]; i = 1; }
 		if (j >= key_length) j = 0;
 	}
 	for (k = NN - 1; k; k --) {
 		array [i] = (array [i] ^ ((array [i - 1] ^ (array [i - 1] >> 62)) * UINT64_C (2862933555777941757)))
-		  - (uint64_t) i;   /* non linear */
+		  - (uint64_t) i;   // non-linear
 		i ++;
 		if (i >= NN) { array [0] = array [NN - 1]; i = 1; }
 	}
 
-	array [0] = UINT64_C (1) << 63; /* MSB is 1; assuring non-zero initial array */
+	array [0] = UINT64_C (1) << 63;   // MSB is 1; assuring non-zero initial array
 }
 
 static bool theInited = false;
@@ -154,9 +153,6 @@ void NUMrandom_init () {
 	for (int threadNumber = 0; threadNumber <= 16; threadNumber ++) {
 		const int numberOfKeys = 6;
 		uint64_t keys [numberOfKeys];
-		#if defined (macintosh) && useCarbon==1
-			#define llround lround
-		#endif
 		keys [0] = (uint64_t) llround (1e6 * Melder_clock ());   // unique between boots of the same computer
 		keys [1] = UINT64_C (7320321686725470078) + (uint64_t) threadNumber;   // unique between threads in the same process
 		switch (threadNumber) {
@@ -192,7 +188,7 @@ void NUMrandom_init () {
 
 #define ZERO_OR_MAGIC_VERSION  3
 
-#if ZERO_OR_MAGIC_VERSION == 1  // M&N 1999
+#if ZERO_OR_MAGIC_VERSION == 1   // M&N 1999
 	#define ZERO_OR_MAGIC  ( (x & UINT64_C (1)) ? MATRIX_A : UINT64_C (0) )
 #elif ZERO_OR_MAGIC_VERSION == 2
 	#define ZERO_OR_MAGIC  ( (x & UINT64_C (1)) * MATRIX_A )
@@ -205,7 +201,7 @@ double NUMrandomFraction () {
 	NUMrandom_State *me = & states [0];
 	uint64_t x;
 
-	if (my index >= NN) { /* generate NN words at a time */
+	if (my index >= NN) {   // generate NN words at a time
 
 		Melder_assert (theInited);   // if NUMrandom_init() hasn't been called, we'll detect that here, probably in the first call
 
@@ -238,7 +234,7 @@ double NUMrandomFraction_mt (int threadNumber) {
 	NUMrandom_State *me = & states [threadNumber];
 	uint64_t x;
 
-	if (my index >= NN) { /* generate NN words at a time */
+	if (my index >= NN) {   // generate NN words at a time
 
 		Melder_assert (theInited);
 
@@ -275,6 +271,10 @@ long NUMrandomInteger (long lowest, long highest) {
 	return lowest + (long) ((highest - lowest + 1) * NUMrandomFraction ());   // round down by truncation, because positive
 }
 
+bool NUMrandomBernoulli (double probability) {
+	return NUMrandomFraction() < probability;
+}
+
 #define repeat  do
 #define until(cond)  while (! (cond))
 double NUMrandomGauss (double mean, double standardDeviation) {
@@ -283,22 +283,22 @@ double NUMrandomGauss (double mean, double standardDeviation) {
 		Knuth, p. 122.
 	*/
 	if (my secondAvailable) {
-		my secondAvailable = FALSE;
+		my secondAvailable = false;
 		return mean + standardDeviation * my y;
 	} else {
 		double s, x;
 		repeat {
-			x = 2.0 * NUMrandomFraction () - 1.0;   /* Inside the square [-1; 1] x [-1; 1]. */
+			x = 2.0 * NUMrandomFraction () - 1.0;   // inside the square [-1; 1] x [-1; 1]
 			my y = 2.0 * NUMrandomFraction () - 1.0;
 			s = x * x + my y * my y;
-		} until (s < 1.0);   /* Inside the unit circle. */
+		} until (s < 1.0);   // inside the unit circle
 		if (s == 0.0) {
 			x = my y = 0.0;
 		} else {
 			double factor = sqrt (-2.0 * log (s) / s);
 			x *= factor, my y *= factor;
 		}
-		my secondAvailable = TRUE;
+		my secondAvailable = true;
 		return mean + standardDeviation * x;
 	}
 }
@@ -309,22 +309,22 @@ double NUMrandomGauss_mt (int threadNumber, double mean, double standardDeviatio
 		Knuth, p. 122.
 	*/
 	if (my secondAvailable) {
-		my secondAvailable = FALSE;
+		my secondAvailable = false;
 		return mean + standardDeviation * my y;
 	} else {
 		double s, x;
 		repeat {
-			x = 2.0 * NUMrandomFraction_mt (threadNumber) - 1.0;   /* Inside the square [-1; 1] x [-1; 1]. */
+			x = 2.0 * NUMrandomFraction_mt (threadNumber) - 1.0;   // inside the square [-1; 1] x [-1; 1]
 			my y = 2.0 * NUMrandomFraction_mt (threadNumber) - 1.0;
 			s = x * x + my y * my y;
-		} until (s < 1.0);   /* Inside the unit circle. */
+		} until (s < 1.0);   // inside the unit circle
 		if (s == 0.0) {
 			x = my y = 0.0;
 		} else {
 			double factor = sqrt (-2.0 * log (s) / s);
 			x *= factor, my y *= factor;
 		}
-		my secondAvailable = TRUE;
+		my secondAvailable = true;
 		return mean + standardDeviation * x;
 	}
 }
@@ -360,7 +360,7 @@ double NUMrandomPoisson (double mean) {
 
 			exp ((k - mean) * ln (mean) + lnGamma (mean + 1) - lnGamma (k + 1))
 	*/
-	static double previousMean = -1.0;   /* This routine may well be called repeatedly with the same mean. Optimize. */
+	static double previousMean = -1.0;   // this routine may well be called repeatedly with the same mean; optimize
 	if (mean < 8.0) {
 		static double expMean;
 		double product = 1.0;
diff --git a/num/NUMsort.cpp b/num/NUMsort.cpp
index d639931..6b77041 100644
--- a/num/NUMsort.cpp
+++ b/num/NUMsort.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/stat/Distributions.cpp b/stat/Distributions.cpp
index 351dc73..cadec9d 100644
--- a/stat/Distributions.cpp
+++ b/stat/Distributions.cpp
@@ -1,20 +1,19 @@
 /* Distributions.cpp
  *
- * Copyright (C) 1997-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Distributions.h"
@@ -22,16 +21,16 @@
 Thing_implement (Distributions, TableOfReal, 0);
 
 void structDistributions :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of distributions: ", numberOfColumns);
 	MelderInfo_writeLine (U"Number of values: ", numberOfRows);
 }
 
-Distributions Distributions_create (long numberOfRows, long numberOfColumns) {
+autoDistributions Distributions_create (long numberOfRows, long numberOfColumns) {
 	try {
 		autoDistributions me = Thing_new (Distributions);
-		TableOfReal_init (me.peek(), numberOfRows, numberOfColumns);
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfRows, numberOfColumns);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Distributions not created.");
 	}
@@ -62,7 +61,7 @@ void Distributions_peek (Distributions me, long column, char32 **string, long *n
 			if (rand <= sum) break;
 		}
 	} while (irow > my numberOfRows);   // guard against rounding errors
-	if (my rowLabels [irow] == NULL)
+	if (! my rowLabels [irow])
 		Melder_throw (me, U": no string in row ", irow, U".");
 	if (string)
 		*string = my rowLabels [irow];
@@ -98,8 +97,8 @@ static void unicize (Distributions me) {
 	/* Must have been sorted beforehand. */
 	long nrow = 0, ifrom = 1;
 	for (long irow = 1; irow <= my numberOfRows; irow ++) {
-		if (irow == my numberOfRows || (my rowLabels [irow] == NULL) != (my rowLabels [irow + 1] == NULL) ||
-		    (my rowLabels [irow] != NULL && ! str32equ (my rowLabels [irow], my rowLabels [irow + 1])))
+		if (irow == my numberOfRows || (my rowLabels [irow] == nullptr) != (my rowLabels [irow + 1] == nullptr) ||
+		    (my rowLabels [irow] != nullptr && ! str32equ (my rowLabels [irow], my rowLabels [irow + 1])))
 		{
 			/*
 			 * Detected a change.
@@ -111,8 +110,8 @@ static void unicize (Distributions me) {
 			 */
 			if (ifrom != nrow) {
 				Melder_free (my rowLabels [nrow]);
-				my rowLabels [nrow] = my rowLabels [ifrom];   /* Surface copy. */
-				my rowLabels [ifrom] = NULL;   /* Undangle. */
+				my rowLabels [nrow] = my rowLabels [ifrom];   // surface copy
+				my rowLabels [ifrom] = nullptr;   // undangle
 				for (long icol = 1; icol <= my numberOfColumns; icol ++)
 					my data [nrow] [icol] = my data [ifrom] [icol];
 			}
@@ -130,23 +129,23 @@ static void unicize (Distributions me) {
 	my numberOfRows = nrow;
 }
 
-Distributions Distributions_addTwo (Distributions me, Distributions thee) {
+autoDistributions Distributions_addTwo (Distributions me, Distributions thee) {
 	try {
-		autoDistributions him = static_cast<Distributions> (TablesOfReal_append (me, thee));
-		TableOfReal_sortByLabel (him.peek(), 0, 0);
-		unicize (him.peek());
-		return him.transfer();
+		autoDistributions him = TablesOfReal_append (me, thee).static_cast_move<structDistributions>();
+		TableOfReal_sortByLabel (him.get(), 0, 0);
+		unicize (him.get());
+		return him;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", thee, U": not added.");
 	}
 }
 
-Distributions Distributions_addMany (Collection me) {
+autoDistributions Distributions_addMany (OrderedOf<structDistributions>* me) {
 	try {
-		autoDistributions thee = static_cast<Distributions> (TablesOfReal_appendMany (me));
-		TableOfReal_sortByLabel (thee.peek(), 0, 0);
-		unicize (thee.peek());
-		return thee.transfer();
+		autoDistributions thee = TablesOfReal_appendMany ((OrderedOf<structTableOfReal>*) me).static_cast_move<structDistributions>();   // FIXME cast
+		TableOfReal_sortByLabel (thee.get(), 0, 0);
+		unicize (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (U"Distributions objects not added.");
 	}
diff --git a/stat/Distributions.h b/stat/Distributions.h
index 02e3047..89d5737 100644
--- a/stat/Distributions.h
+++ b/stat/Distributions.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Distributions inherits from TableOfReal */
@@ -27,15 +26,15 @@ Thing_define (Distributions, TableOfReal) {
 		override;
 };
 
-Distributions Distributions_create (long numberOfRows, long numberOfColumns);
+autoDistributions Distributions_create (long numberOfRows, long numberOfColumns);
 
 void Distributions_peek (Distributions me, long column, char32 **string, long *row);
 
 double Distributions_getProbability (Distributions me, const char32 *string, long column);
 double Distributionses_getMeanAbsoluteDifference (Distributions me, Distributions thee, long column);
 
-Distributions Distributions_addTwo (Distributions me, Distributions thee);
-Distributions Distributions_addMany (Collection me);
+autoDistributions Distributions_addTwo (Distributions me, Distributions thee);
+autoDistributions Distributions_addMany (OrderedOf<structDistributions>* me);
 
 void Distributions_checkSpecifiedColumnNumberWithinRange (Distributions me, long columnNumber);
 
diff --git a/stat/Distributions_and_Strings.cpp b/stat/Distributions_and_Strings.cpp
index e088034..7819f63 100644
--- a/stat/Distributions_and_Strings.cpp
+++ b/stat/Distributions_and_Strings.cpp
@@ -1,48 +1,40 @@
 /* Distributions_and_Strings.cpp
  *
- * Copyright (C) 1997-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1997-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2003/07/28 factored out Distributions_peek
- * pb 2007/08/12 wchar
- * pb 2011/03/20 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Distributions_and_Strings.h"
 
-Strings Distributions_to_Strings (Distributions me, long column, long numberOfStrings) {
+autoStrings Distributions_to_Strings (Distributions me, long column, long numberOfStrings) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy numberOfStrings = numberOfStrings;
 		thy strings = NUMvector <char32*> (1, numberOfStrings);
 		for (long istring = 1; istring <= numberOfStrings; istring ++) {
 			char32 *string;
-			Distributions_peek (me, column, & string, NULL);
+			Distributions_peek (me, column, & string, nullptr);
 			thy strings [istring] = Melder_dup (string);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Strings not generated.");
 	}
 }
 
-Strings Distributions_to_Strings_exact (Distributions me, long column) {
+autoStrings Distributions_to_Strings_exact (Distributions me, long column) {
 	try {
 		long total = 0;
 		long istring = 0;
@@ -72,14 +64,14 @@ Strings Distributions_to_Strings_exact (Distributions me, long column) {
 				thy strings [++ istring] = Melder_dup (string);
 			}
 		}
-		Strings_randomize (thee.peek());
-		return thee.transfer();
+		Strings_randomize (thee.get());
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": Strings not generated.");
 	}
 }
 
-Distributions Strings_to_Distributions (Strings me) {
+autoDistributions Strings_to_Distributions (Strings me) {
 	try {
 		autoDistributions thee = Distributions_create (my numberOfStrings, 1);
 		long idist = 0;
@@ -98,8 +90,8 @@ Distributions Strings_to_Distributions (Strings me) {
 			}
 		}
 		thy numberOfRows = idist;
-		TableOfReal_sortByLabel (thee.peek(), 1, 0);
-		return thee.transfer();
+		TableOfReal_sortByLabel (thee.get(), 1, 0);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": distribution not computed.");
 	}
diff --git a/stat/Distributions_and_Strings.h b/stat/Distributions_and_Strings.h
index 0df4795..5bc2808 100644
--- a/stat/Distributions_and_Strings.h
+++ b/stat/Distributions_and_Strings.h
@@ -1,27 +1,26 @@
 /* Distributions_and_Strings.h
  *
- * Copyright (C) 1997-2011 Paul Boersma
+ * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Distributions.h"
 #include "Strings_.h"
 
-Strings Distributions_to_Strings (Distributions me, long column, long numberOfStrings);
-Strings Distributions_to_Strings_exact (Distributions me, long column);
-Distributions Strings_to_Distributions (Strings me);
+autoStrings Distributions_to_Strings (Distributions me, long column, long numberOfStrings);
+autoStrings Distributions_to_Strings_exact (Distributions me, long column);
+autoDistributions Strings_to_Distributions (Strings me);
 
 /* End of file Distributions_and_Strings.h */
diff --git a/stat/LogisticRegression.cpp b/stat/LogisticRegression.cpp
index 646228d..4793095 100644
--- a/stat/LogisticRegression.cpp
+++ b/stat/LogisticRegression.cpp
@@ -1,29 +1,19 @@
 /* LogisticRegression.cpp
  *
- * Copyright (C) 2005-2012,2015 Paul Boersma
+ * Copyright (C) 2005-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2005/05/01 created
- * pb 2006/12/10 MelderInfo
- * pb 2007/08/12 wchar
- * pb 2007/10/01 can write as encoding
- * pb 2007/11/18 split off from Regression.c
- * pb 2011/03/20 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "LogisticRegression.h"
@@ -56,39 +46,39 @@ void structLogisticRegression :: v_info () {
 	MelderInfo_writeLine (U"Dependent 2: ", our dependent2);
 	MelderInfo_writeLine (U"Interpretation:");
 	MelderInfo_write (U"   ln (P(", dependent2, U")/P(", dependent1, U")) " UNITEXT_ALMOST_EQUAL_TO U" ", Melder_fixed (intercept, 6));
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	for (long ivar = 1; ivar <= parameters.size; ivar ++) {
+		RegressionParameter parm = parameters.at [ivar];
 		MelderInfo_write (parm -> value < 0.0 ? U" - " : U" + ", Melder_fixed (fabs (parm -> value), 6), U" * ", parm -> label);
 	}
 	MelderInfo_writeLine (U"");
 	MelderInfo_writeLine (U"Log odds ratios:");
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	for (long ivar = 1; ivar <= parameters.size; ivar ++) {
+		RegressionParameter parm = parameters.at [ivar];
 		MelderInfo_writeLine (U"   Log odds ratio of factor ", parm -> label, U": ", Melder_fixed ((parm -> maximum - parm -> minimum) * parm -> value, 6));
 	}
 	MelderInfo_writeLine (U"Odds ratios:");
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	for (long ivar = 1; ivar <= parameters.size; ivar ++) {
+		RegressionParameter parm = parameters.at [ivar];
 		MelderInfo_writeLine (U"   Odds ratio of factor ", parm -> label, U": ", exp ((parm -> maximum - parm -> minimum) * parm -> value));
 	}
 }
 
-LogisticRegression LogisticRegression_create (const char32 *dependent1, const char32 *dependent2) {
+autoLogisticRegression LogisticRegression_create (const char32 *dependent1, const char32 *dependent2) {
 	try {
 		autoLogisticRegression me = Thing_new (LogisticRegression);
-		Regression_init (me.peek());
+		Regression_init (me.get());
 		my dependent1 = Melder_dup (dependent1);
 		my dependent2 = Melder_dup (dependent2);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LogisticRegression not created.");
 	}
 }
 
-static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors, long numberOfFactors, long dependent1, long dependent2) {
+static autoLogisticRegression _Table_to_LogisticRegression (Table me, long *factors, long numberOfFactors, long dependent1, long dependent2) {
 	long numberOfParameters = numberOfFactors + 1;
-	long numberOfCells = my rows -> size, numberOfY0 = 0, numberOfY1 = 0, numberOfData = 0;
-	double logLikelihood = 1e300, previousLogLikelihood = 2e300;
+	long numberOfCells = my rows.size, numberOfY0 = 0, numberOfY1 = 0, numberOfData = 0;
+	double logLikelihood = 1e307, previousLogLikelihood = 1e308;
 	if (numberOfParameters < 1)   // includes intercept
 		Melder_throw (U"Not enough columns (has to be more than 1).");
 	/*
@@ -104,7 +94,7 @@ static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors,
 	for (long ivar = 1; ivar <= numberOfFactors; ivar ++) {
 		double minimum = Table_getMinimum (me, factors [ivar]);
 		double maximum = Table_getMaximum (me, factors [ivar]);
-		Regression_addParameter (thee.peek(), my columnHeaders [factors [ivar]]. label, minimum, maximum, 0.0);
+		Regression_addParameter (thee.get(), my columnHeaders [factors [ivar]]. label, minimum, maximum, 0.0);
 	}
 	for (long icell = 1; icell <= numberOfCells; icell ++) {
 		y0 [icell] = Table_getNumericValue_Assert (me, icell, dependent1);
@@ -149,7 +139,7 @@ static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors,
 	 */
 	thy intercept = log ((double) numberOfY1 / (double) numberOfY0);   // initial state of intercept: best guess for average log odds
 	for (long ivar = 1; ivar <= numberOfFactors; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (thy parameters -> item [ivar]);
+		RegressionParameter parm = thy parameters.at [ivar];
 		parm -> value = 0.0;   // initial state of dependence: none
 	}
 	long iteration = 1;
@@ -167,7 +157,7 @@ static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors,
 		for (long icell = 1; icell <= numberOfCells; icell ++) {
 			double fittedLogit = thy intercept, fittedP, fittedQ, fittedLogP, fittedLogQ, fittedPQ, fittedVariance;
 			for (long ivar = 1; ivar <= numberOfFactors; ivar ++) {
-				RegressionParameter parm = static_cast<RegressionParameter> (thy parameters -> item [ivar]);
+				RegressionParameter parm = thy parameters.at [ivar];
 				fittedLogit += parm -> value * x [icell] [ivar];
 			}
 			/*
@@ -257,7 +247,7 @@ static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors,
 		 */
 		thy intercept += smallMatrix [0] [numberOfParameters];
 		for (long ivar = 1; ivar <= numberOfFactors; ivar ++) {
-			RegressionParameter parm = static_cast<RegressionParameter> (thy parameters -> item [ivar]);
+			RegressionParameter parm = thy parameters.at [ivar];
 			parm -> value += smallMatrix [ivar] [numberOfParameters];
 		}
 	}
@@ -265,14 +255,14 @@ static LogisticRegression _Table_to_LogisticRegression (Table me, long *factors,
 		Melder_warning (U"Logistic regression has not converged in 100 iterations. The results are unreliable.");
 	}
 	for (long ivar = 1; ivar <= numberOfFactors; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (thy parameters -> item [ivar]);
+		RegressionParameter parm = thy parameters.at [ivar];
 		parm -> value /= stdevX [ivar];
 		thy intercept -= parm -> value * meanX [ivar];
 	}
-	return thee.transfer();
+	return thee;
 }
 
-LogisticRegression Table_to_LogisticRegression (Table me, const char32 *factors_columnLabelString,
+autoLogisticRegression Table_to_LogisticRegression (Table me, const char32 *factors_columnLabelString,
 	const char32 *dependent1_columnLabel, const char32 *dependent2_columnLabel)
 {
 	try {
@@ -281,7 +271,7 @@ LogisticRegression Table_to_LogisticRegression (Table me, const char32 *factors_
 		long dependent1_columnIndex = Table_getColumnIndexFromColumnLabel (me, dependent1_columnLabel);
 		long dependent2_columnIndex = Table_getColumnIndexFromColumnLabel (me, dependent2_columnLabel);
 		autoLogisticRegression thee = _Table_to_LogisticRegression (me, factors_columnIndices.peek(), numberOfFactors, dependent1_columnIndex, dependent2_columnIndex);
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": logistic regression not performed.");
 	}
@@ -298,8 +288,8 @@ static inline double NUMmax2 (double a, double b) {
 void LogisticRegression_drawBoundary (LogisticRegression me, Graphics graphics, long colx, double xleft, double xright,
 	long coly, double ybottom, double ytop, bool garnish)
 {
-	RegressionParameter parmx = static_cast<RegressionParameter> (my parameters -> item [colx]);
-	RegressionParameter parmy = static_cast<RegressionParameter> (my parameters -> item [coly]);
+	RegressionParameter parmx = my parameters.at [colx];
+	RegressionParameter parmy = my parameters.at [coly];
 	if (xleft == xright) {
 		xleft = parmx -> minimum;
 		xright = parmx -> maximum;
@@ -309,9 +299,9 @@ void LogisticRegression_drawBoundary (LogisticRegression me, Graphics graphics,
 		ytop = parmy -> maximum;
 	}
 	double intercept = my intercept;
-	for (long iparm = 1; iparm <= my parameters -> size; iparm ++) {
+	for (long iparm = 1; iparm <= my parameters.size; iparm ++) {
 		if (iparm != colx && iparm != coly) {
-			RegressionParameter parm = static_cast<RegressionParameter> (my parameters -> item [iparm]);
+			RegressionParameter parm = my parameters.at [iparm];
 			intercept += parm -> value * (0.5 * (parm -> minimum + parm -> maximum));
 		}
 	}
@@ -352,7 +342,7 @@ void LogisticRegression_drawBoundary (LogisticRegression me, Graphics graphics,
 }
 
 /*
-Table Table_LogisticRegression_addProbabilities (Table me, LogisticRegression thee) {
+autoTable Table_LogisticRegression_addProbabilities (Table me, LogisticRegression thee) {
 	for (icell = 1; icell <= numberOfCells; icell ++) {
 		double fittedLogit = parameters [0], fittedP, fittedQ, fittedLogP, fittedLogQ;
 		for (ivar = 1; ivar <= numberOfIndependentVariables; ivar ++) {
diff --git a/stat/LogisticRegression.h b/stat/LogisticRegression.h
index 24c4fef..36e3ea5 100644
--- a/stat/LogisticRegression.h
+++ b/stat/LogisticRegression.h
@@ -4,29 +4,27 @@
  *
  * Copyright (C) 2005-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Regression.h"
 
 #include "LogisticRegression_def.h"
-oo_CLASS_CREATE (LogisticRegression, Regression);
 
-LogisticRegression LogisticRegression_create (const char32 *dependent1, const char32 *dependent2);
+autoLogisticRegression LogisticRegression_create (const char32 *dependent1, const char32 *dependent2);
 
-LogisticRegression Table_to_LogisticRegression (Table me, const char32 *columnsWithFactors_string,
+autoLogisticRegression Table_to_LogisticRegression (Table me, const char32 *columnsWithFactors_string,
 	const char32 *columnWithDependent1_string, const char32 *columnWithDependent2_string);
 
 void LogisticRegression_drawBoundary (LogisticRegression me, Graphics graphics, long colx, double xmin, double xmax,
diff --git a/stat/LogisticRegression_def.h b/stat/LogisticRegression_def.h
index 5eb38dd..b0ceedc 100644
--- a/stat/LogisticRegression_def.h
+++ b/stat/LogisticRegression_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2005-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
diff --git a/stat/PairDistribution.cpp b/stat/PairDistribution.cpp
index 93c9638..19052fb 100644
--- a/stat/PairDistribution.cpp
+++ b/stat/PairDistribution.cpp
@@ -1,20 +1,19 @@
 /* PairDistribution.cpp
  *
- * Copyright (C) 1997-2012,2013,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "PairDistribution.h"
@@ -38,44 +37,47 @@
 #include "oo_DESCRIPTION.h"
 #include "PairDistribution_def.h"
 
-Thing_implement (PairProbability, Data, 0);
+Thing_implement (PairProbability, Daata, 0);
 
-Thing_implement (PairDistribution, Data, 0);
+Thing_implement (PairDistribution, Daata, 0);
 
 void structPairDistribution :: v_info () {
 	PairDistribution_Parent :: v_info ();
-	MelderInfo_writeLine (U"Number of pairs: ", pairs -> size);
+	MelderInfo_writeLine (U"Number of pairs: ", pairs.size);
 }
 
-PairProbability PairProbability_create (const char32 *string1, const char32 *string2, double weight) {
+autoPairProbability PairProbability_create (const char32 *string1, const char32 *string2, double weight) {
 	autoPairProbability me = Thing_new (PairProbability);
 	my string1 = Melder_dup (string1);
 	my string2 = Melder_dup (string2);
 	my weight = weight;
-	return me.transfer();
+	return me;
 }
 
-PairDistribution PairDistribution_create () {
+autoPairDistribution PairDistribution_create () {
 	try {
 		autoPairDistribution me = Thing_new (PairDistribution);
-		my pairs = Ordered_create ();
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"PairDistribution not created.");
 	}
 }
 
+int PairProbability_compare (PairProbability me, PairProbability thee) noexcept {
+	return str32cmp (my string1, thy string1);
+}
+
 static void PairDistribution_checkSpecifiedPairNumber (PairDistribution me, long pairNumber) {
 	if (pairNumber < 1)
 		Melder_throw (me, U": the specified pair number is ", pairNumber, U", but should be at least 1.");
-	if (pairNumber > my pairs -> size)
-		Melder_throw (me, U": the specified pair number is ", pairNumber, U", but should be at most my number of pairs (", my pairs -> size, U").");
+	if (pairNumber > my pairs.size)
+		Melder_throw (me, U": the specified pair number is ", pairNumber, U", but should be at most my number of pairs (", my pairs.size, U").");
 }
 
 const char32 * PairDistribution_getString1 (PairDistribution me, long pairNumber) {
 	try {
 		PairDistribution_checkSpecifiedPairNumber (me, pairNumber);
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [pairNumber]);
+		PairProbability prob = my pairs.at [pairNumber];
 		return prob -> string1;
 	} catch (MelderError) {
 		Melder_throw (me, U": string1 not retrieved.");
@@ -85,7 +87,7 @@ const char32 * PairDistribution_getString1 (PairDistribution me, long pairNumber
 const char32 * PairDistribution_getString2 (PairDistribution me, long pairNumber) {
 	try {
 		PairDistribution_checkSpecifiedPairNumber (me, pairNumber);
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [pairNumber]);
+		PairProbability prob = my pairs.at [pairNumber];
 		return prob -> string2;
 	} catch (MelderError) {
 		Melder_throw (me, U": string2 not retrieved.");
@@ -95,7 +97,7 @@ const char32 * PairDistribution_getString2 (PairDistribution me, long pairNumber
 double PairDistribution_getWeight (PairDistribution me, long pairNumber) {
 	try {
 		PairDistribution_checkSpecifiedPairNumber (me, pairNumber);
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [pairNumber]);
+		PairProbability prob = my pairs.at [pairNumber];
 		return prob -> weight;
 	} catch (MelderError) {
 		Melder_throw (me, U": weight not retrieved.");
@@ -103,22 +105,22 @@ double PairDistribution_getWeight (PairDistribution me, long pairNumber) {
 }
 
 void PairDistribution_add (PairDistribution me, const char32 *string1, const char32 *string2, double weight) {
-	PairProbability pair = PairProbability_create (string1, string2, weight);
-	Collection_addItem (my pairs, pair);
+	autoPairProbability pair = PairProbability_create (string1, string2, weight);
+	my pairs.addItem_move (pair.move());
 }
 
 void PairDistribution_removeZeroWeights (PairDistribution me) {
-	for (long ipair = my pairs -> size; ipair > 0; ipair --) {
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [ipair]);
+	for (long ipair = my pairs.size; ipair > 0; ipair --) {
+		PairProbability prob = my pairs.at [ipair];
 		if (prob -> weight <= 0.0) {
-			Collection_removeItem (my pairs, ipair);
+			my pairs.removeItem (ipair);
 		}
 	}
 }
 
 void PairDistribution_swapInputsAndOutputs (PairDistribution me) {
-	for (long ipair = my pairs -> size; ipair > 0; ipair --) {
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [ipair]);
+	for (long ipair = my pairs.size; ipair > 0; ipair --) {
+		PairProbability prob = my pairs.at [ipair];
 		char32 *tmp = prob -> string1;
 		prob -> string1 = prob -> string2;
 		prob -> string2 = tmp;
@@ -127,8 +129,8 @@ void PairDistribution_swapInputsAndOutputs (PairDistribution me) {
 
 static double PairDistributions_getTotalWeight_checkPositive (PairDistribution me) throw (MelderError) {
 	double totalWeight = 0.0;
-	for (long ipair = 1; ipair <= my pairs -> size; ipair ++) {
-		PairProbability prob = static_cast <PairProbability> (my pairs -> item [ipair]);
+	for (long ipair = 1; ipair <= my pairs.size; ipair ++) {
+		PairProbability prob = my pairs.at [ipair];
 		totalWeight += prob -> weight;
 	}
 	if (totalWeight <= 0.0) {
@@ -137,10 +139,9 @@ static double PairDistributions_getTotalWeight_checkPositive (PairDistribution m
 	return totalWeight;
 }
 
-void PairDistribution_to_Stringses (PairDistribution me, long nout, Strings *strings1_out, Strings *strings2_out) {
+void PairDistribution_to_Stringses (PairDistribution me, long nout, autoStrings *strings1_out, autoStrings *strings2_out) {
 	try {
-		*strings1_out = *strings2_out = NULL;
-		long nin = my pairs -> size, iin;
+		long nin = my pairs.size, iin;
 		if (nin < 1)
 			Melder_throw (U"No candidates.");
 		if (nout < 1)
@@ -156,19 +157,19 @@ void PairDistribution_to_Stringses (PairDistribution me, long nout, Strings *str
 			do {
 				double rand = NUMrandomUniform (0, total), sum = 0.0;
 				for (iin = 1; iin <= nin; iin ++) {
-					PairProbability prob = static_cast <PairProbability> (my pairs -> item [iin]);
+					PairProbability prob = my pairs.at [iin];
 					sum += prob -> weight;
 					if (rand <= sum) break;
 				}
 			} while (iin > nin);   /* Guard against rounding errors. */
-			PairProbability prob = static_cast <PairProbability> (my pairs -> item [iin]);
+			PairProbability prob = my pairs.at [iin];
 			if (! prob -> string1 || ! prob -> string2)
 				Melder_throw (U"No string in probability pair ", iin, U".");
 			strings1 -> strings [iout] = Melder_dup (prob -> string1);
 			strings2 -> strings [iout] = Melder_dup (prob -> string2);
 		}
-		*strings1_out = strings1.transfer();
-		*strings2_out = strings2.transfer();
+		*strings1_out = strings1.move();
+		*strings2_out = strings2.move();
 	} catch (MelderError) {
 		Melder_throw (me, U": generation of Stringses not performed.");
 	}
@@ -176,24 +177,24 @@ void PairDistribution_to_Stringses (PairDistribution me, long nout, Strings *str
 
 void PairDistribution_peekPair (PairDistribution me, char32 **string1, char32 **string2) {
 	try {
-		*string1 = *string2 = NULL;
+		*string1 = *string2 = nullptr;
 		double total = 0.0;
-		long nin = my pairs -> size, iin;
+		long nin = my pairs.size, iin;
 		PairProbability prob;
 		if (nin < 1) Melder_throw (U"No candidates.");
 		for (iin = 1; iin <= nin; iin ++) {
-			prob = static_cast <PairProbability> (my pairs -> item [iin]);
+			prob = my pairs.at [iin];
 			total += prob -> weight;
 		}
 		do {
 			double rand = NUMrandomUniform (0, total), sum = 0.0;
 			for (iin = 1; iin <= nin; iin ++) {
-				prob = static_cast <PairProbability> (my pairs -> item [iin]);
+				prob = my pairs.at [iin];
 				sum += prob -> weight;
 				if (rand <= sum) break;
 			}
 		} while (iin > nin);   // guard against rounding errors
-		prob = static_cast <PairProbability> (my pairs -> item [iin]);
+		prob = my pairs.at [iin];
 		if (! prob -> string1 || ! prob -> string2) Melder_throw (U"No string in probability pair ", iin, U".");
 		*string1 = prob -> string1;
 		*string2 = prob -> string2;
@@ -202,32 +203,28 @@ void PairDistribution_peekPair (PairDistribution me, char32 **string1, char32 **
 	}
 }
 
-static int compare (PairProbability me, PairProbability thee) throw () {
-	return str32cmp (my string1, thy string1);
-}
-
 static double PairDistribution_getFractionCorrect (PairDistribution me, int which) {
 	try {
 		double correct = 0.0;
 		long pairmin = 1, ipair;
 		autoPairDistribution thee = Data_copy (me);
-		NUMsort_p (thy pairs -> size, thy pairs -> item, (int (*) (const void *, const void *)) compare);
-		double total = PairDistributions_getTotalWeight_checkPositive (thee.peek());
+		thy pairs.sort (PairProbability_compare);
+		double total = PairDistributions_getTotalWeight_checkPositive (thee.get());
 		do {
 			long pairmax = pairmin;
-			char32 *firstInput = ((PairProbability) thy pairs -> item [pairmin]) -> string1;
-			for (ipair = pairmin + 1; ipair <= thy pairs -> size; ipair ++) {
-				PairProbability prob = static_cast <PairProbability> (thy pairs -> item [ipair]);
+			char32 *firstInput = thy pairs.at [pairmin] -> string1;
+			for (ipair = pairmin + 1; ipair <= thy pairs.size; ipair ++) {
+				PairProbability prob = thy pairs.at [ipair];
 				if (! str32equ (prob -> string1, firstInput)) {
 					pairmax = ipair - 1;
 					break;
 				}
 			}
-			if (ipair > thy pairs -> size) pairmax = thy pairs -> size;
+			if (ipair > thy pairs.size) pairmax = thy pairs.size;
 			if (which == 0) {
 				double pmax = 0.0;
 				for (ipair = pairmin; ipair <= pairmax; ipair ++) {
-					PairProbability prob = static_cast <PairProbability> (thy pairs -> item [ipair]);
+					PairProbability prob = thy pairs.at [ipair];
 					double p = prob -> weight / total;
 					if (p > pmax) pmax = p;
 				}
@@ -235,7 +232,7 @@ static double PairDistribution_getFractionCorrect (PairDistribution me, int whic
 			} else {
 				double sum = 0.0, p2 = 0.0;
 				for (ipair = pairmin; ipair <= pairmax; ipair ++) {
-					PairProbability prob = static_cast <PairProbability> (thy pairs -> item [ipair]);
+					PairProbability prob = thy pairs.at [ipair];
 					double p = prob -> weight / total;
 					sum += p;
 					p2 += p * p;
@@ -243,7 +240,7 @@ static double PairDistribution_getFractionCorrect (PairDistribution me, int whic
 				correct += p2 / sum;
 			}
 			pairmin = pairmax + 1;
-		} while (pairmin <= thy pairs -> size);
+		} while (pairmin <= thy pairs.size);
 		return correct;
 	} catch (MelderError) {
 		Melder_throw (me, U": could not compute my fraction correct.");
@@ -265,22 +262,22 @@ double PairDistribution_Distributions_getFractionCorrect (PairDistribution me, D
 		char32 string [1000];
 		Distributions_checkSpecifiedColumnNumberWithinRange (dist, column);
 		autoPairDistribution thee = Data_copy (me);
-		NUMsort_p (thy pairs -> size, thy pairs -> item, (int (*) (const void *, const void *)) compare);
-		double total = PairDistributions_getTotalWeight_checkPositive (thee.peek());
+		thy pairs.sort (PairProbability_compare);
+		double total = PairDistributions_getTotalWeight_checkPositive (thee.get());
 		do {
 			long pairmax = pairmin, length, ipair;
 			double sum = 0.0, sumDist = 0.0;
-			char32 *firstInput = ((PairProbability) thy pairs -> item [pairmin]) -> string1;
-			for (ipair = pairmin + 1; ipair <= thy pairs -> size; ipair ++) {
-				PairProbability prob = static_cast <PairProbability> (thy pairs -> item [ipair]);
+			char32 *firstInput = thy pairs.at [pairmin] -> string1;
+			for (ipair = pairmin + 1; ipair <= thy pairs.size; ipair ++) {
+				PairProbability prob = thy pairs.at [ipair];
 				if (! str32equ (prob -> string1, firstInput)) {
 					pairmax = ipair - 1;
 					break;
 				}
 			}
-			if (ipair > thy pairs -> size) pairmax = thy pairs -> size;
+			if (ipair > thy pairs.size) pairmax = thy pairs.size;
 			for (ipair = pairmin; ipair <= pairmax; ipair ++) {
-				PairProbability prob = static_cast <PairProbability> (thy pairs -> item [ipair]);
+				PairProbability prob = thy pairs.at [ipair];
 				double p = prob -> weight / total, pout = 0.0;
 				Melder_sprint (string, 1000, prob -> string1, U" \\-> ", prob -> string2);
 				for (long idist = 1; idist <= dist -> numberOfRows; idist ++) {
@@ -300,23 +297,23 @@ double PairDistribution_Distributions_getFractionCorrect (PairDistribution me, D
 			}
 			if (sumDist != 0.0) correct += sum / sumDist;
 			pairmin = pairmax + 1;
-		} while (pairmin <= thy pairs -> size);
+		} while (pairmin <= thy pairs.size);
 		return correct;
 	} catch (MelderError) {
 		Melder_throw (me, U" & ", dist, U": could not compute our fraction correct.");
 	}
 }
 
-Table PairDistribution_to_Table (PairDistribution me) {
+autoTable PairDistribution_to_Table (PairDistribution me) {
 	try {
-		autoTable thee = Table_createWithColumnNames (my pairs -> size, U"string1 string2 weight");
-		for (long ipair = 1; ipair <= my pairs -> size; ipair ++) {
-			PairProbability prob = static_cast <PairProbability> (my pairs -> item [ipair]);
-			Table_setStringValue (thee.peek(), ipair, 1, prob -> string1);
-			Table_setStringValue (thee.peek(), ipair, 2, prob -> string2);
-			Table_setNumericValue (thee.peek(), ipair, 3, prob -> weight);
+		autoTable thee = Table_createWithColumnNames (my pairs.size, U"string1 string2 weight");
+		for (long ipair = 1; ipair <= my pairs.size; ipair ++) {
+			PairProbability prob = my pairs.at [ipair];
+			Table_setStringValue (thee.get(), ipair, 1, prob -> string1);
+			Table_setStringValue (thee.get(), ipair, 2, prob -> string2);
+			Table_setNumericValue (thee.get(), ipair, 3, prob -> weight);
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
diff --git a/stat/PairDistribution.h b/stat/PairDistribution.h
index 5dd1911..0afd26a 100644
--- a/stat/PairDistribution.h
+++ b/stat/PairDistribution.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Strings_.h"
@@ -24,11 +23,12 @@
 #include "Distributions.h"
 
 #include "PairDistribution_def.h"
-oo_CLASS_CREATE (PairProbability, Data);
-oo_CLASS_CREATE (PairDistribution, Data);
 
-PairProbability PairProbability_create (const char32 *string1, const char32 *string2, double weight);
-PairDistribution PairDistribution_create (void);
+autoPairProbability PairProbability_create (const char32 *string1, const char32 *string2, double weight);
+
+int PairProbability_compare (PairProbability me, PairProbability thee) noexcept;
+
+autoPairDistribution PairDistribution_create ();
 
 const char32 * PairDistribution_getString1 (PairDistribution me, long pairNumber);
 const char32 * PairDistribution_getString2 (PairDistribution me, long pairNumber);
@@ -36,7 +36,7 @@ double PairDistribution_getWeight (PairDistribution me, long pairNumber);
 
 void PairDistribution_add (PairDistribution me, const char32 *string1, const char32 *string2, double weight);
 void PairDistribution_removeZeroWeights (PairDistribution me);
-void PairDistribution_to_Stringses (PairDistribution me, long nout, Strings *strings1, Strings *strings2);
+void PairDistribution_to_Stringses (PairDistribution me, long nout, autoStrings *strings1, autoStrings *strings2);
 void PairDistribution_peekPair (PairDistribution me, char32 **string1, char32 **string2);
 
 void PairDistribution_swapInputsAndOutputs (PairDistribution me);
@@ -45,7 +45,7 @@ double PairDistribution_getFractionCorrect_maximumLikelihood (PairDistribution m
 double PairDistribution_getFractionCorrect_probabilityMatching (PairDistribution me);
 double PairDistribution_Distributions_getFractionCorrect (PairDistribution me, Distributions thee, long column);
 
-Table PairDistribution_to_Table (PairDistribution me);
+autoTable PairDistribution_to_Table (PairDistribution me);
 
 /* End of file PairDistribution.h */
 #endif
diff --git a/stat/PairDistribution_def.h b/stat/PairDistribution_def.h
index 130dc42..a5f02b9 100644
--- a/stat/PairDistribution_def.h
+++ b/stat/PairDistribution_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1997-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT PairProbability
-oo_DEFINE_CLASS (PairProbability, Data)
+oo_DEFINE_CLASS (PairProbability, Daata)
 
 	oo_STRING (string1)
 	oo_STRING (string2)
@@ -30,9 +29,9 @@ oo_END_CLASS (PairProbability)
 
 
 #define ooSTRUCT PairDistribution
-oo_DEFINE_CLASS (PairDistribution, Data)
+oo_DEFINE_CLASS (PairDistribution, Daata)
 
-	oo_COLLECTION (Ordered, pairs, PairProbability, 0)
+	oo_COLLECTION_OF (OrderedOf, pairs, PairProbability, 0)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/stat/Regression.cpp b/stat/Regression.cpp
index f7482f2..ad53540 100644
--- a/stat/Regression.cpp
+++ b/stat/Regression.cpp
@@ -1,20 +1,19 @@
 /* Regression.cpp
  *
- * Copyright (C) 2005-2011,2014,2015 Paul Boersma
+ * Copyright (C) 2005-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Regression.h"
@@ -39,34 +38,34 @@
 #include "oo_DESCRIPTION.h"
 #include "Regression_def.h"
 
-Thing_implement (RegressionParameter, Data, 0);
+Thing_implement (RegressionParameter, Daata, 0);
 
 void structRegression :: v_info () {
 	Regression_Parent :: v_info ();
 	MelderInfo_writeLine (U"Factors:");
-	MelderInfo_writeLine (U"   Number of factors: ", parameters -> size);
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	MelderInfo_writeLine (U"   Number of factors: ", our parameters.size);
+	for (long ivar = 1; ivar <= our parameters.size; ivar ++) {
+		RegressionParameter parm = our parameters.at [ivar];
 		MelderInfo_writeLine (U"   Factor ", ivar, U": ", parm -> label);
 	}
 	MelderInfo_writeLine (U"Fitted coefficients:");
 	MelderInfo_writeLine (U"   Intercept: ", intercept);
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	for (long ivar = 1; ivar <= our parameters.size; ivar ++) {
+		RegressionParameter parm = our parameters.at [ivar];
 		MelderInfo_writeLine (U"   Coefficient of factor ", parm -> label, U": ", parm -> value);
 	}
 	MelderInfo_writeLine (U"Ranges of values:");
-	for (long ivar = 1; ivar <= parameters -> size; ivar ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (parameters -> item [ivar]);
+	for (long ivar = 1; ivar <= our parameters.size; ivar ++) {
+		RegressionParameter parm = our parameters.at [ivar];
 		MelderInfo_writeLine (U"   Range of factor ", parm -> label, U": minimum ",
 			parm -> minimum, U", maximum ", parm -> maximum);
 	}
 }
 
-Thing_implement (Regression, Data, 0);
+Thing_implement (Regression, Daata, 0);
 
 void Regression_init (Regression me) {
-	my parameters = Ordered_create ();
+	//my parameters = Ordered_create ();
 }
 
 void Regression_addParameter (Regression me, const char32 *label, double minimum, double maximum, double value) {
@@ -76,15 +75,15 @@ void Regression_addParameter (Regression me, const char32 *label, double minimum
 		thy minimum = minimum;
 		thy maximum = maximum;
 		thy value = value;
-		Collection_addItem (my parameters, thee.transfer());
+		my parameters.addItem_move (thee.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": parameter not added.");
 	}
 }
 
 long Regression_getFactorIndexFromFactorName_e (Regression me, const char32 *factorName) {
-	for (long iparm = 1; iparm <= my parameters -> size; iparm ++) {
-		RegressionParameter parm = static_cast<RegressionParameter> (my parameters -> item [iparm]);
+	for (long iparm = 1; iparm <= my parameters.size; iparm ++) {
+		RegressionParameter parm = my parameters.at [iparm];
 		if (Melder_equ (factorName, parm -> label)) return iparm;
 	}
 	Melder_throw (Thing_messageName (me), U" has no parameter named \"", factorName, U"\".");
@@ -92,21 +91,21 @@ long Regression_getFactorIndexFromFactorName_e (Regression me, const char32 *fac
 
 Thing_implement (LinearRegression, Regression, 0);
 
-LinearRegression LinearRegression_create (void) {
+autoLinearRegression LinearRegression_create () {
 	try {
 		autoLinearRegression me = Thing_new (LinearRegression);
-		Regression_init (me.peek());
-		return me.transfer();
+		Regression_init (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"LinearRegression not created.");
 	}
 }
 
-LinearRegression Table_to_LinearRegression (Table me) {
+autoLinearRegression Table_to_LinearRegression (Table me) {
 	try {
 		long numberOfIndependentVariables = my numberOfColumns - 1, numberOfParameters = my numberOfColumns;
-		long numberOfCells = my rows -> size, icell, ivar;
-		if (numberOfParameters < 1)   /* Includes intercept. */
+		long numberOfCells = my rows.size, icell, ivar;
+		if (numberOfParameters < 1)   // includes intercept
 			Melder_throw (U"Not enough columns (has to be more than 1).");
 		if (numberOfCells < numberOfParameters) {
 			Melder_warning (U"Solution is not unique (more parameters than cases).");
@@ -118,22 +117,22 @@ LinearRegression Table_to_LinearRegression (Table me) {
 		for (ivar = 1; ivar <= numberOfIndependentVariables; ivar ++) {
 			double minimum = Table_getMinimum (me, ivar);
 			double maximum = Table_getMaximum (me, ivar);
-			Regression_addParameter (thee.peek(), my columnHeaders [ivar]. label, minimum, maximum, 0.0);
+			Regression_addParameter (thee.get(), my columnHeaders [ivar]. label, minimum, maximum, 0.0);
 		}
 		for (icell = 1; icell <= numberOfCells; icell ++) {
 			for (ivar = 1; ivar < numberOfParameters; ivar ++) {
 				u [icell] [ivar] = Table_getNumericValue_Assert (me, icell, ivar);
 			}
-			u [icell] [numberOfParameters] = 1.0;   /* For the intercept. */
+			u [icell] [numberOfParameters] = 1.0;   // for the intercept
 			b [icell] = Table_getNumericValue_Assert (me, icell, my numberOfColumns);   // the dependent variable
 		}
 		NUMsolveEquation (u.peek(), numberOfCells, numberOfParameters, b.peek(), NUMeps * numberOfCells, x.peek());
 		thy intercept = x [numberOfParameters];
 		for (ivar = 1; ivar <= numberOfIndependentVariables; ivar ++) {
-			RegressionParameter parm = static_cast<RegressionParameter> (thy parameters -> item [ivar]);
+			RegressionParameter parm = thy parameters.at [ivar];
 			parm -> value = x [ivar];
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": linear regression not performed.");
 	}
diff --git a/stat/Regression.h b/stat/Regression.h
index e1a3535..50ac8e6 100644
--- a/stat/Regression.h
+++ b/stat/Regression.h
@@ -4,26 +4,23 @@
  *
  * Copyright (C) 2005-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Table.h"
 
 #include "Regression_def.h"
-oo_CLASS_CREATE (RegressionParameter, Data);
-oo_CLASS_CREATE (Regression, Data);
 
 void Regression_init (Regression me);
 void Regression_addParameter (Regression me, const char32 *label, double minimum, double maximum, double value);
@@ -32,9 +29,9 @@ long Regression_getFactorIndexFromFactorName_e (Regression me, const char32 *fac
 Thing_define (LinearRegression, Regression) {
 };
 
-LinearRegression LinearRegression_create (void);
+autoLinearRegression LinearRegression_create ();
 
-LinearRegression Table_to_LinearRegression (Table me);
+autoLinearRegression Table_to_LinearRegression (Table me);
 
 /* End of file Regression.h */
 #endif
diff --git a/stat/Regression_def.h b/stat/Regression_def.h
index 79cd712..4c2dffe 100644
--- a/stat/Regression_def.h
+++ b/stat/Regression_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 2005-2007,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT RegressionParameter
-oo_DEFINE_CLASS (RegressionParameter, Data)
+oo_DEFINE_CLASS (RegressionParameter, Daata)
 
 	oo_STRING (label)
 	oo_DOUBLE (minimum)
@@ -34,10 +33,10 @@ oo_END_CLASS (RegressionParameter)
 
 
 #define ooSTRUCT Regression
-oo_DEFINE_CLASS (Regression, Data)
+oo_DEFINE_CLASS (Regression, Daata)
 
 	oo_DOUBLE (intercept)
-	oo_COLLECTION (Ordered, parameters, RegressionParameter, 0)
+	oo_COLLECTION_OF (OrderedOf, parameters, RegressionParameter, 0)
 
 	#if oo_DECLARING
 		void v_info ()
diff --git a/stat/Table.cpp b/stat/Table.cpp
index 2482732..4197458 100644
--- a/stat/Table.cpp
+++ b/stat/Table.cpp
@@ -1,59 +1,19 @@
 /* Table.cpp
  *
- * Copyright (C) 2002-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 2002-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/07/16 GPL
- * pb 2003/05/19 Melder_atof
- * pb 2004/07/25 Melder_double
- * pb 2004/10/16 struct tags
- * pb 2005/03/04 Melder_NUMBER
- * pb 2005/04/25 Table_getLogisticRegression
- * pb 2005/04/25 Table_to_Matrix
- * pb 2005/06/16 enums -> ints
- * pb 2005/09/13 Table_readFromCharacterSeparatedTextFile
- * pb 2005/09/26 sorting by string now also works
- * pb 2006/01/24 getMatrixStr
- * pb 2006/01/26 Table_extractRowsWhereColumn_string
- * pb 2006/04/16 Table_createWithColumnNames
- * pb 2006/04/16 moved Melder_isStringNumeric to melder_atof.c
- * pb 2006/04/17 getColStr
- * pb 2007/04/19 Table_pool
- * pb 2006/04/24 Table_scatterPlot
- * pb 2006/08/27 Table_drawEllipse
- * pb 2006/10/29 TableOfReal_to_Table
- * pb 2006/11/25 Table_getGroupDifference_studentT
- * pb 2006/12/10 MelderInfo
- * pb 2007/03/17 exported Table_numericize for optimizers
- * pb 2007/05/07 renamed Table_pool to Table_collapseRows
- * pb 2007/05/07 Table_rowsToColumns
- * pb 2007/06/28 Table_getGroupMean_studentT, Table_getGroupMean
- * pb 2007/10/01 can write as encoding
- * pb 2007/10/13 made Table_getExtrema global
- * pb 2007/11/18 refactoring
- * pb 2008/01/02 Table_drawRowFromDistribution
- * pb 2008/04/30 new Formula API
- * pb 2009/01/18 Interpreter argument in formula
- * pb 2009/10/21 Table_randomizeRows
- * pb 2010/03/04 Wilcoxon rank sum
- * pb 2010/06/23 report number of degrees of freedom in t-tests
- * pb 2011/03/15 C++
- * pb 2011/04/15 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -81,44 +41,44 @@
 #include "oo_DESCRIPTION.h"
 #include "Table_def.h"
 
-Thing_implement (TableRow, Data, 0);
+Thing_implement (TableRow, Daata, 0);
 
-Thing_implement (Table, Data, 0);
+Thing_implement (Table, Daata, 0);
 
 void structTable :: v_info () {
-	structData :: v_info ();
-	MelderInfo_writeLine (U"Number of rows: ", rows -> size);
-	MelderInfo_writeLine (U"Number of columns: ", numberOfColumns);
+	our structDaata :: v_info ();
+	MelderInfo_writeLine (U"Number of rows: ", our rows.size);
+	MelderInfo_writeLine (U"Number of columns: ", our numberOfColumns);
 }
 
 const char32 * structTable :: v_getColStr (long columnNumber) {
-	if (columnNumber < 1 || columnNumber > numberOfColumns) return NULL;
-	return columnHeaders [columnNumber]. label ? columnHeaders [columnNumber]. label : U"";
+	if (columnNumber < 1 || columnNumber > our numberOfColumns) return nullptr;
+	return our columnHeaders [columnNumber]. label ? our columnHeaders [columnNumber]. label : U"";
 }
 
 double structTable :: v_getMatrix (long rowNumber, long columnNumber) {
-	if (rowNumber < 1 || rowNumber > rows -> size) return NUMundefined;
-	if (columnNumber < 1 || columnNumber > numberOfColumns) return NUMundefined;
-	char32 *stringValue = ((TableRow) rows -> item [rowNumber]) -> cells [columnNumber]. string;
-	return stringValue == NULL ? NUMundefined : Melder_atof (stringValue);
+	if (rowNumber < 1 || rowNumber > our rows.size) return NUMundefined;
+	if (columnNumber < 1 || columnNumber > our numberOfColumns) return NUMundefined;
+	char32 *stringValue = our rows.at [rowNumber] -> cells [columnNumber]. string;
+	return stringValue ? Melder_atof (stringValue) : NUMundefined;
 }
 
 const char32 * structTable :: v_getMatrixStr (long rowNumber, long columnNumber) {
-	if (rowNumber < 1 || rowNumber > rows -> size) return U"";
-	if (columnNumber < 1 || columnNumber > numberOfColumns) return U"";
-	char32 *stringValue = ((TableRow) rows -> item [rowNumber]) -> cells [columnNumber]. string;
-	return stringValue == NULL ? U"" : stringValue;
+	if (rowNumber < 1 || rowNumber > our rows.size) return U"";
+	if (columnNumber < 1 || columnNumber > our numberOfColumns) return U"";
+	char32 *stringValue = our rows.at [rowNumber] -> cells [columnNumber]. string;
+	return stringValue ? stringValue : U"";
 }
 
 double structTable :: v_getColIndex (const char32 *columnLabel) {
 	return Table_findColumnIndexFromColumnLabel (this, columnLabel);
 }
 
-static TableRow TableRow_create (long numberOfColumns) {
+static autoTableRow TableRow_create (long numberOfColumns) {
 	autoTableRow me = Thing_new (TableRow);
 	my numberOfColumns = numberOfColumns;
 	my cells = NUMvector <structTableCell> (1, numberOfColumns);
-	return me.transfer();
+	return me;
 }
 
 void Table_initWithoutColumnNames (Table me, long numberOfRows, long numberOfColumns) {
@@ -126,17 +86,16 @@ void Table_initWithoutColumnNames (Table me, long numberOfRows, long numberOfCol
 		Melder_throw (U"Cannot create table without columns.");
 	my numberOfColumns = numberOfColumns;
 	my columnHeaders = NUMvector <structTableColumnHeader> (1, numberOfColumns);
-	my rows = Ordered_create ();
 	for (long irow = 1; irow <= numberOfRows; irow ++) {
 		Table_appendRow (me);
 	}
 }
 
-Table Table_createWithoutColumnNames (long numberOfRows, long numberOfColumns) {
+autoTable Table_createWithoutColumnNames (long numberOfRows, long numberOfColumns) {
 	try {
 		autoTable me = Thing_new (Table);
-		Table_initWithoutColumnNames (me.peek(), numberOfRows, numberOfColumns);
-		return me.transfer();
+		Table_initWithoutColumnNames (me.get(), numberOfRows, numberOfColumns);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created.");
 	}
@@ -145,17 +104,17 @@ Table Table_createWithoutColumnNames (long numberOfRows, long numberOfColumns) {
 void Table_initWithColumnNames (Table me, long numberOfRows, const char32 *columnNames) {
 	Table_initWithoutColumnNames (me, numberOfRows, Melder_countTokens (columnNames));
 	long icol = 0;
-	for (char32 *columnName = Melder_firstToken (columnNames); columnName != NULL; columnName = Melder_nextToken ()) {
+	for (char32 *columnName = Melder_firstToken (columnNames); columnName; columnName = Melder_nextToken ()) {
 		icol ++;
 		Table_setColumnLabel (me, icol, columnName);
 	}
 }
 
-Table Table_createWithColumnNames (long numberOfRows, const char32 *columnNames) {
+autoTable Table_createWithColumnNames (long numberOfRows, const char32 *columnNames) {
 	try {
 		autoTable me = Thing_new (Table);
-		Table_initWithColumnNames (me.peek(), numberOfRows, columnNames);
-		return me.transfer();
+		Table_initWithColumnNames (me.get(), numberOfRows, columnNames);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table not created.");
 	}
@@ -164,7 +123,7 @@ Table Table_createWithColumnNames (long numberOfRows, const char32 *columnNames)
 void Table_appendRow (Table me) {
 	try {
 		autoTableRow row = TableRow_create (my numberOfColumns);
-		Collection_addItem (my rows, row.transfer());
+		my rows. addItem_move (row.move());
 	} catch (MelderError) {
 		Melder_throw (me, U": row not appended.");
 	}
@@ -181,18 +140,18 @@ void Table_appendColumn (Table me, const char32 *label) {
 void Table_checkSpecifiedRowNumberWithinRange (Table me, long rowNumber) {
 	if (rowNumber < 1)
 		Melder_throw (me, U": the specified row number is ", rowNumber, U", but should be at least 1.");
-	if (rowNumber > my rows -> size)
-		Melder_throw (me, U": the specified row number (", rowNumber, U") exceeds my number of rows (", my rows -> size, U").");
+	if (rowNumber > my rows.size)
+		Melder_throw (me, U": the specified row number (", rowNumber, U") exceeds my number of rows (", my rows.size, U").");
 }
 
 void Table_removeRow (Table me, long rowNumber) {
 	try {
-		if (my rows -> size == 1)
+		if (my rows.size == 1)
 			Melder_throw (me, U": cannot remove my only row.");
 		Table_checkSpecifiedRowNumberWithinRange (me, rowNumber);
-		Collection_removeItem (my rows, rowNumber);
+		my rows. removeItem (rowNumber);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++)
-			my columnHeaders [icol]. numericized = FALSE;
+			my columnHeaders [icol]. numericized = false;
 	} catch (MelderError) {
 		Melder_throw (me, U": row ", rowNumber, U" not removed.");
 	}
@@ -216,8 +175,8 @@ void Table_removeColumn (Table me, long columnNumber) {
 		Melder_free (my columnHeaders [columnNumber]. label);
 		for (long icol = columnNumber; icol < my numberOfColumns; icol ++)
 			my columnHeaders [icol] = my columnHeaders [icol + 1];
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			Melder_free (row -> cells [columnNumber]. string);
 			for (long icol = columnNumber; icol < row -> numberOfColumns; icol ++)
 				row -> cells [icol] = row -> cells [icol + 1];
@@ -236,18 +195,18 @@ void Table_insertRow (Table me, long rowNumber) {
 		 */
 		if (rowNumber < 1)
 			Melder_throw (me, U": the specified row number is ", rowNumber, U", but should be at least 1.");
-		if (rowNumber > my rows -> size + 1)
-			Melder_throw (me, U": the specified row number is ", rowNumber, U", but should be at most my number of rows (", my rows -> size, U") plus 1.");
+		if (rowNumber > my rows.size + 1)
+			Melder_throw (me, U": the specified row number is ", rowNumber, U", but should be at most my number of rows (", my rows.size, U") plus 1.");
 		autoTableRow row = TableRow_create (my numberOfColumns);
 		/*
 		 * Safe change.
 		 */
-		Ordered_addItemPos (my rows, row.transfer(), rowNumber);
+		my rows. addItemAtPosition_move (row.move(), rowNumber);
 		/*
 		 * Changes without error.
 		 */
 		for (long icol = 1; icol <= my numberOfColumns; icol ++)
-			my columnHeaders [icol]. numericized = FALSE;
+			my columnHeaders [icol]. numericized = false;
 	} catch (MelderError) {
 		Melder_throw (me, U": row ", rowNumber, U" not inserted.");
 	}
@@ -263,7 +222,7 @@ void Table_insertColumn (Table me, long columnNumber, const char32 *label /* cat
 		if (columnNumber > my numberOfColumns + 1)
 			Melder_throw (me, U": the specified column number is ", columnNumber, U", but should be at most my number of columns (", my numberOfColumns, U") plus 1.");
 		autostring32 newLabel = Melder_dup (label);
-		autoTable thee = Table_createWithoutColumnNames (my rows -> size, my numberOfColumns + 1);
+		autoTable thee = Table_createWithoutColumnNames (my rows.size, my numberOfColumns + 1);
 		/*
 		 * Changes without error.
 		 */
@@ -271,33 +230,34 @@ void Table_insertColumn (Table me, long columnNumber, const char32 *label /* cat
 		 * Transfer column headers to larger structure.
 		 */
 		for (long icol = 1; icol < columnNumber; icol ++) {
-			Melder_assert (thy columnHeaders [icol]. label == NULL);   // make room...
+			Melder_assert (! thy columnHeaders [icol]. label);   // make room...
 			thy columnHeaders [icol] = my columnHeaders [icol];   // ...fill in and dangle...
-			my columnHeaders [icol]. label = NULL;   // ...undangle
+			my columnHeaders [icol]. label = nullptr;   // ...undangle
 		}
 		thy columnHeaders [columnNumber]. label = newLabel.transfer();
 		thy columnHeaders [columnNumber]. numericized = false;
 		for (long icol = my numberOfColumns + 1; icol > columnNumber; icol --) {
-			Melder_assert (thy columnHeaders [icol]. label == NULL);   // make room...
+			Melder_assert (! thy columnHeaders [icol]. label);   // make room...
 			thy columnHeaders [icol] = my columnHeaders [icol - 1];   // ...fill in and dangle...
-			my columnHeaders [icol - 1]. label = NULL;   // ...undangle
+			my columnHeaders [icol - 1]. label = nullptr;   // ...undangle
 		}
 		/*
 		 * Transfer rows to larger structure.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]), thyRow = static_cast <TableRow> (thy rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			TableRow thyRow = thy rows.at [irow];
 			for (long icol = 1; icol < columnNumber; icol ++) {
-				Melder_assert (thyRow -> cells [icol]. string == NULL);   // make room...
+				Melder_assert (! thyRow -> cells [icol]. string);   // make room...
 				thyRow -> cells [icol] = myRow -> cells [icol];   // ...fill in and dangle...
-				myRow -> cells [icol]. string = NULL;   // ...undangle
+				myRow -> cells [icol]. string = nullptr;   // ...undangle
 			}
-			Melder_assert (thyRow -> cells [columnNumber]. string == NULL);
+			Melder_assert (! thyRow -> cells [columnNumber]. string);
 			Melder_assert (thyRow -> cells [columnNumber]. number == 0.0);
 			for (long icol = myRow -> numberOfColumns + 1; icol > columnNumber; icol --) {
-				Melder_assert (thyRow -> cells [icol]. string == NULL);   // make room...
+				Melder_assert (! thyRow -> cells [icol]. string);   // make room...
 				thyRow -> cells [icol] = myRow -> cells [icol - 1];   // ...fill in and dangle...
-				myRow -> cells [icol - 1]. string = NULL;   // ...undangle
+				myRow -> cells [icol - 1]. string = nullptr;   // ...undangle
 			}
 		}
 		/*
@@ -305,13 +265,11 @@ void Table_insertColumn (Table me, long columnNumber, const char32 *label /* cat
 		 */
 		NUMvector_free <structTableColumnHeader> (my columnHeaders, 1);   // make room...
 		my columnHeaders = thy columnHeaders;   // ...fill in and dangle...
-		thy columnHeaders = NULL;   // ...undangle
+		thy columnHeaders = nullptr;   // ...undangle
 		/*
 		 * Transfer larger structure with rows to me.
 		 */
-		forget (my rows);   // make room...
-		my rows = thy rows;   // ...fill in and dangle...
-		thy rows = NULL;   // ...undangle
+		my rows = thy rows.move();
 		/*
 		 * Update my state.
 		 */
@@ -338,7 +296,7 @@ void Table_setColumnLabel (Table me, long columnNumber, const char32 *label /* c
 	}
 }
 
-long Table_findColumnIndexFromColumnLabel (Table me, const char32 *label) {
+long Table_findColumnIndexFromColumnLabel (Table me, const char32 *label) noexcept {
 	for (long icol = 1; icol <= my numberOfColumns; icol ++)
 		if (my columnHeaders [icol]. label && str32equ (my columnHeaders [icol]. label, label))
 			return icol;
@@ -352,22 +310,22 @@ long Table_getColumnIndexFromColumnLabel (Table me, const char32 *columnLabel) {
 	return columnNumber;
 }
 
-long * Table_getColumnIndicesFromColumnLabelString (Table me, const char32 *string, long *numberOfTokens) {
-	*numberOfTokens = 0;
-	autoMelderTokens tokens (string, numberOfTokens);
-	if (*numberOfTokens < 1)
+long * Table_getColumnIndicesFromColumnLabelString (Table me, const char32 *string, long *ptr_numberOfTokens) {
+	autoMelderTokens tokens (string);
+	if (tokens.count() < 1)
 		Melder_throw (me, U": you specified an empty list of columns.");
-	autoNUMvector <long> columns (1, *numberOfTokens);
-	for (long icol = 1; icol <= *numberOfTokens; icol ++) {
+	autoNUMvector <long> columns (1, tokens.count());
+	for (long icol = 1; icol <= tokens.count(); icol ++) {
 		columns [icol] = Table_getColumnIndexFromColumnLabel (me, tokens [icol]);
 	}
+	*ptr_numberOfTokens = tokens.count();
 	return columns.transfer();
 }
 
-long Table_searchColumn (Table me, long columnNumber, const char32 *value) {
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-		if (row -> cells [columnNumber]. string != NULL && str32equ (row -> cells [columnNumber]. string, value))
+long Table_searchColumn (Table me, long columnNumber, const char32 *value) noexcept {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
+		if (row -> cells [columnNumber]. string && str32equ (row -> cells [columnNumber]. string, value))
 			return irow;
 	}
 	return 0;
@@ -384,10 +342,10 @@ void Table_setStringValue (Table me, long rowNumber, long columnNumber, const ch
 		/*
 		 * Change without errors.
 		 */
-		TableRow row = static_cast <TableRow> (my rows -> item [rowNumber]);
+		TableRow row = my rows.at [rowNumber];
 		Melder_free (row -> cells [columnNumber]. string);
 		row -> cells [columnNumber]. string = newValue.transfer();
-		my columnHeaders [columnNumber]. numericized = FALSE;
+		my columnHeaders [columnNumber]. numericized = false;
 	} catch (MelderError) {
 		Melder_throw (me, U": string value not set.");
 	}
@@ -404,21 +362,21 @@ void Table_setNumericValue (Table me, long rowNumber, long columnNumber, double
 		/*
 		 * Change without errors.
 		 */
-		TableRow row = static_cast <TableRow> (my rows -> item [rowNumber]);
+		TableRow row = my rows.at [rowNumber];
 		Melder_free (row -> cells [columnNumber]. string);
 		row -> cells [columnNumber]. string = newValue.transfer();
-		my columnHeaders [columnNumber]. numericized = FALSE;
+		my columnHeaders [columnNumber]. numericized = false;
 	} catch (MelderError) {
 		Melder_throw (me, U": numeric value not set.");
 	}
 }
 
 bool Table_isCellNumeric_ErrorFalse (Table me, long rowNumber, long columnNumber) {
-	if (rowNumber < 1 || rowNumber > my rows -> size) return false;
+	if (rowNumber < 1 || rowNumber > my rows.size) return false;
 	if (columnNumber < 1 || columnNumber > my numberOfColumns) return false;
-	TableRow row = static_cast <TableRow> (my rows -> item [rowNumber]);
+	TableRow row = my rows.at [rowNumber];
 	const char32 *cell = row -> cells [columnNumber]. string;
-	if (cell == NULL) return true;   // the value --undefined--
+	if (! cell) return true;   // the value --undefined--
 	/*
 	 * Skip leading white space, in order to separately detect "?" and "--undefined--".
 	 */
@@ -437,7 +395,7 @@ bool Table_isCellNumeric_ErrorFalse (Table me, long rowNumber, long columnNumber
 
 bool Table_isColumnNumeric_ErrorFalse (Table me, long columnNumber) {
 	if (columnNumber < 1 || columnNumber > my numberOfColumns) return false;
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
 		if (! Table_isCellNumeric_ErrorFalse (me, irow, columnNumber)) return false;
 	}
 	return true;
@@ -455,7 +413,7 @@ static int stringCompare_NoError (const void *first, const void *second) {
 static void sortRowsByStrings_Assert (Table me, long columnNumber) {
 	Melder_assert (columnNumber >= 1 && columnNumber <= my numberOfColumns);
 	stringCompare_column = columnNumber;
-	qsort (& my rows -> item [1], (unsigned long) my rows -> size, sizeof (TableRow), stringCompare_NoError);
+	qsort (& my rows.at [1], (unsigned long) my rows.size, sizeof (TableRow), stringCompare_NoError);
 }
 
 static int indexCompare_NoError (const void *first, const void *second) {
@@ -466,33 +424,33 @@ static int indexCompare_NoError (const void *first, const void *second) {
 }
 
 static void sortRowsByIndex_NoError (Table me) {
-	qsort (& my rows -> item [1], (unsigned long) my rows -> size, sizeof (TableRow), indexCompare_NoError);
+	qsort (& my rows.at [1], (unsigned long) my rows.size, sizeof (TableRow), indexCompare_NoError);
 }
 
 void Table_numericize_Assert (Table me, long columnNumber) {
 	Melder_assert (columnNumber >= 1 && columnNumber <= my numberOfColumns);
 	if (my columnHeaders [columnNumber]. numericized) return;
 	if (Table_isColumnNumeric_ErrorFalse (me, columnNumber)) {
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			const char32 *string = row -> cells [columnNumber]. string;
 			row -> cells [columnNumber]. number =
-				string == NULL || string [0] == U'\0' || (string [0] == U'?' && string [1] == U'\0') ? NUMundefined :
+				! string || string [0] == U'\0' || (string [0] == U'?' && string [1] == U'\0') ? NUMundefined :
 				Melder_atof (string);
 		}
 	} else {
 		long iunique = 0;
-		const char32 *previousString = NULL;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		const char32 *previousString = nullptr;
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			row -> sortingIndex = irow;
 		}
 		sortRowsByStrings_Assert (me, columnNumber);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			const char32 *string = row -> cells [columnNumber]. string;
-			if (string == NULL) string = U"";
-			if (previousString == NULL || ! str32equ (string, previousString)) {
+			if (! string) string = U"";
+			if (! previousString || ! str32equ (string, previousString)) {
 				iunique ++;
 			}
 			row -> cells [columnNumber]. number = iunique;
@@ -500,13 +458,13 @@ void Table_numericize_Assert (Table me, long columnNumber) {
 		}
 		sortRowsByIndex_NoError (me);
 	}
-	my columnHeaders [columnNumber]. numericized = TRUE;
+	my columnHeaders [columnNumber]. numericized = true;
 }
 
 static void Table_numericize_checkDefined (Table me, long columnNumber) {
 	Table_numericize_Assert (me, columnNumber);
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
 		if (row -> cells [columnNumber]. number == NUMundefined)
 			Melder_throw (me, U": the cell in row ", irow,
 				U" of column \"", my columnHeaders [columnNumber]. label ? my columnHeaders [columnNumber]. label : Melder_integer (columnNumber),
@@ -515,16 +473,16 @@ static void Table_numericize_checkDefined (Table me, long columnNumber) {
 }
 
 const char32 * Table_getStringValue_Assert (Table me, long rowNumber, long columnNumber) {
-	Melder_assert (rowNumber >= 1 && rowNumber <= my rows -> size);
+	Melder_assert (rowNumber >= 1 && rowNumber <= my rows.size);
 	Melder_assert (columnNumber >= 1 && columnNumber <= my numberOfColumns);
-	TableRow row = static_cast <TableRow> (my rows -> item [rowNumber]);
+	TableRow row = my rows.at [rowNumber];
 	return row -> cells [columnNumber]. string ? row -> cells [columnNumber]. string : U"";
 }
 
 double Table_getNumericValue_Assert (Table me, long rowNumber, long columnNumber) {
-	Melder_assert (rowNumber >= 1 && rowNumber <= my rows -> size);
+	Melder_assert (rowNumber >= 1 && rowNumber <= my rows.size);
 	Melder_assert (columnNumber >= 1 && columnNumber <= my numberOfColumns);
-	TableRow row = static_cast <TableRow> (my rows -> item [rowNumber]);
+	TableRow row = my rows.at [rowNumber];
 	Table_numericize_Assert (me, columnNumber);
 	return row -> cells [columnNumber]. number;
 }
@@ -533,14 +491,14 @@ double Table_getMean (Table me, long columnNumber) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_checkDefined (me, columnNumber);
-		if (my rows -> size < 1)
+		if (my rows.size < 1)
 			return NUMundefined;
 		double sum = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			sum += row -> cells [columnNumber]. number;
 		}
-		return sum / my rows -> size;
+		return sum / my rows.size;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot compute mean of column ", columnNumber, U".");
 	}
@@ -550,12 +508,12 @@ double Table_getMaximum (Table me, long columnNumber) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_checkDefined (me, columnNumber);
-		if (my rows -> size < 1)
+		if (my rows.size < 1)
 			return NUMundefined;
-		TableRow firstRow = static_cast <TableRow> (my rows -> item [1]);
+		TableRow firstRow = my rows.at [1];
 		double maximum = firstRow -> cells [columnNumber]. number;
-		for (long irow = 2; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 2; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			if (row -> cells [columnNumber]. number > maximum)
 				maximum = row -> cells [columnNumber]. number;
 		}
@@ -569,12 +527,12 @@ double Table_getMinimum (Table me, long columnNumber) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_checkDefined (me, columnNumber);
-		if (my rows -> size < 1)
+		if (my rows.size < 1)
 			return NUMundefined;
-		TableRow firstRow = static_cast <TableRow> (my rows -> item [1]);
+		TableRow firstRow = my rows.at [1];
 		double minimum = firstRow -> cells [columnNumber]. number;
-		for (long irow = 2; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 2; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			if (row -> cells [columnNumber]. number < minimum)
 				minimum = row -> cells [columnNumber]. number;
 		}
@@ -590,8 +548,8 @@ double Table_getGroupMean (Table me, long columnNumber, long groupColumnNumber,
 		Table_numericize_checkDefined (me, columnNumber);
 		long n = 0;
 		double sum = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			if (Melder_equ (row -> cells [groupColumnNumber]. string, group)) {
 				n += 1;
 				sum += row -> cells [columnNumber]. number;
@@ -609,15 +567,15 @@ double Table_getQuantile (Table me, long columnNumber, double quantile) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_checkDefined (me, columnNumber);
-		if (my rows -> size < 1)
+		if (my rows.size < 1)
 			return NUMundefined;
-		autoNUMvector <double> sortingColumn (1, my rows -> size);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		autoNUMvector <double> sortingColumn (1, my rows.size);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			sortingColumn [irow] = row -> cells [columnNumber]. number;
 		}
-		NUMsort_d (my rows -> size, sortingColumn.peek());
-		return NUMquantile (my rows -> size, sortingColumn.peek(), quantile);
+		NUMsort_d (my rows.size, sortingColumn.peek());
+		return NUMquantile (my rows.size, sortingColumn.peek(), quantile);
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot compute the ", quantile, U" quantile of column ", columnNumber, U".");
 	}
@@ -626,15 +584,15 @@ double Table_getQuantile (Table me, long columnNumber, double quantile) {
 double Table_getStdev (Table me, long columnNumber) {
 	try {
 		double mean = Table_getMean (me, columnNumber);   // already checks for columnNumber and undefined cells
-		if (my rows -> size < 2)
+		if (my rows.size < 2)
 			return NUMundefined;
 		double sum = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			double d = row -> cells [columnNumber]. number - mean;
 			sum += d * d;
 		}
-		return sqrt (sum / (my rows -> size - 1));
+		return sqrt (sum / (my rows.size - 1));
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot compute the standard deviation of column ", columnNumber, U".");
 	}
@@ -644,11 +602,11 @@ long Table_drawRowFromDistribution (Table me, long columnNumber) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_checkDefined (me, columnNumber);
-		if (my rows -> size < 1)
+		if (my rows.size < 1)
 			Melder_throw (me, U": no rows.");
 		double total = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			total += row -> cells [columnNumber]. number;
 		}
 		if (total <= 0.0)
@@ -656,19 +614,19 @@ long Table_drawRowFromDistribution (Table me, long columnNumber) {
 		long irow;
 		do {
 			double rand = NUMrandomUniform (0, total), sum = 0.0;
-			for (irow = 1; irow <= my rows -> size; irow ++) {
-				TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			for (irow = 1; irow <= my rows.size; irow ++) {
+				TableRow row = my rows.at [irow];
 				sum += row -> cells [columnNumber]. number;
 				if (rand <= sum) break;
 			}
-		} while (irow > my rows -> size);   // guard against rounding errors
+		} while (irow > my rows.size);   // guard against rounding errors
 		return irow;
 	} catch (MelderError) {
 		Melder_throw (me, U": cannot draw a row from the distribution of column ", columnNumber, U".");
 	}
 }
 
-Table Table_extractRowsWhereColumn_number (Table me, long columnNumber, int which_Melder_NUMBER, double criterion) {
+autoTable Table_extractRowsWhereColumn_number (Table me, long columnNumber, int which_Melder_NUMBER, double criterion) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		Table_numericize_Assert (me, columnNumber);   // extraction should work even if cells are not defined
@@ -676,23 +634,23 @@ Table Table_extractRowsWhereColumn_number (Table me, long columnNumber, int whic
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			thy columnHeaders [icol]. label = Melder_dup (my columnHeaders [icol]. label);
 		}
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			if (Melder_numberMatchesCriterion (row -> cells [columnNumber]. number, which_Melder_NUMBER, criterion)) {
 				autoTableRow newRow = Data_copy (row);
-				Collection_addItem (thy rows, newRow.transfer());
+				thy rows. addItem_move (newRow.move());
 			}
 		}
-		if (thy rows -> size == 0) {
+		if (thy rows.size == 0) {
 			Melder_warning (U"No row matches criterion.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rows not extracted.");
 	}
 }
 
-Table Table_extractRowsWhereColumn_string (Table me, long columnNumber, int which_Melder_STRING, const char32 *criterion) {
+autoTable Table_extractRowsWhereColumn_string (Table me, long columnNumber, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, columnNumber);
 		autoTable thee = Table_create (0, my numberOfColumns);
@@ -700,17 +658,17 @@ Table Table_extractRowsWhereColumn_string (Table me, long columnNumber, int whic
 			autostring32 newLabel = Melder_dup (my columnHeaders [icol]. label);
 			thy columnHeaders [icol]. label = newLabel.transfer();
 		}
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			if (Melder_stringMatchesCriterion (row -> cells [columnNumber]. string, which_Melder_STRING, criterion)) {
 				autoTableRow newRow = Data_copy (row);
-				Collection_addItem (thy rows, newRow.transfer());
+				thy rows. addItem_move (newRow.move());
 			}
 		}
-		if (thy rows -> size == 0) {
+		if (thy rows.size == 0) {
 			Melder_warning (U"No row matches criterion.");
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rows not extracted.");
 	}
@@ -732,55 +690,60 @@ static void Table_columns_checkCrossSectionEmpty (char32 **factors, long nfactor
 	}
 }
 
-Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *columnsToSum_string,
+autoTable Table_collapseRows (Table me, const char32 *factors_string, const char32 *columnsToSum_string,
 	const char32 *columnsToAverage_string, const char32 *columnsToMedianize_string,
 	const char32 *columnsToAverageLogarithmically_string, const char32 *columnsToMedianizeLogarithmically_string)
 {
 	bool originalChanged = false;
 	try {
-		Melder_assert (factors_string != NULL);
+		Melder_assert (factors_string);
 
 		/*
 		 * Parse the six strings of tokens.
 		 */
-		long numberOfFactors;
-		autoMelderTokens factors (factors_string, & numberOfFactors);
+		autoMelderTokens factors (factors_string);
+		long numberOfFactors = factors.count();
 		if (numberOfFactors < 1)
 			Melder_throw (U"In order to pool table data, you must supply at least one independent variable.");
 		Table_columns_checkExist (me, factors.peek(), numberOfFactors);
 
-		long numberToSum = 0;
 		autoMelderTokens columnsToSum;
+		long numberToSum = 0;
 		if (columnsToSum_string) {
-			columnsToSum.reset (columnsToSum_string, & numberToSum);
+			columnsToSum.reset (columnsToSum_string);
+			numberToSum = columnsToSum.count();
 			Table_columns_checkExist (me, columnsToSum.peek(), numberToSum);
 			Table_columns_checkCrossSectionEmpty (factors.peek(), numberOfFactors, columnsToSum.peek(), numberToSum);
 		}
-		long numberToAverage = 0;
 		autoMelderTokens columnsToAverage;
+		long numberToAverage = 0;
 		if (columnsToAverage_string) {
-			columnsToAverage.reset (columnsToAverage_string, & numberToAverage);
+			columnsToAverage.reset (columnsToAverage_string);
+			numberToAverage = columnsToAverage.count();
 			Table_columns_checkExist (me, columnsToAverage.peek(), numberToAverage);
 			Table_columns_checkCrossSectionEmpty (factors.peek(), numberOfFactors, columnsToAverage.peek(), numberToAverage);
 		}
-		long numberToMedianize = 0;
 		autoMelderTokens columnsToMedianize;
+		long numberToMedianize = 0;
 		if (columnsToMedianize_string) {
-			columnsToMedianize.reset (columnsToMedianize_string, & numberToMedianize);
+			columnsToMedianize.reset (columnsToMedianize_string);
+			numberToMedianize = columnsToMedianize.count();
 			Table_columns_checkExist (me, columnsToMedianize.peek(), numberToMedianize);
 			Table_columns_checkCrossSectionEmpty (factors.peek(), numberOfFactors, columnsToMedianize.peek(), numberToMedianize);
 		}
-		long numberToAverageLogarithmically = 0;
 		autoMelderTokens columnsToAverageLogarithmically;
+		long numberToAverageLogarithmically = 0;
 		if (columnsToAverageLogarithmically_string) {
-			columnsToAverageLogarithmically.reset (columnsToAverageLogarithmically_string, & numberToAverageLogarithmically);
+			columnsToAverageLogarithmically.reset (columnsToAverageLogarithmically_string);
+			numberToAverageLogarithmically = columnsToAverageLogarithmically.count();
 			Table_columns_checkExist (me, columnsToAverageLogarithmically.peek(), numberToAverageLogarithmically);
 			Table_columns_checkCrossSectionEmpty (factors.peek(), numberOfFactors, columnsToAverageLogarithmically.peek(), numberToAverageLogarithmically);
 		}
-		long numberToMedianizeLogarithmically = 0;
 		autoMelderTokens columnsToMedianizeLogarithmically;
+		long numberToMedianizeLogarithmically = 0;
 		if (columnsToMedianizeLogarithmically_string) {
-			columnsToMedianizeLogarithmically.reset (columnsToMedianizeLogarithmically_string, & numberToMedianizeLogarithmically);
+			columnsToMedianizeLogarithmically.reset (columnsToMedianizeLogarithmically_string);
+			numberToMedianizeLogarithmically = columnsToMedianizeLogarithmically.count();
 			Table_columns_checkExist (me, columnsToMedianizeLogarithmically.peek(), numberToMedianizeLogarithmically);
 			Table_columns_checkCrossSectionEmpty (factors.peek(), numberOfFactors, columnsToMedianizeLogarithmically.peek(), numberToMedianizeLogarithmically);
 		}
@@ -791,7 +754,7 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 
 		autoNUMvector <double> sortingColumn;
 		if (numberToMedianize > 0 || numberToMedianizeLogarithmically > 0) {
-			sortingColumn.reset (1, my rows -> size);
+			sortingColumn.reset (1, my rows.size);
 		}
 		/*
 		 * Set the column names. Within the dependent variables, the same name may occur more than once.
@@ -800,27 +763,27 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 		{
 			long icol = 0;
 			for (long i = 1; i <= numberOfFactors; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, factors [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, factors [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, factors [i]);
 			}
 			for (long i = 1; i <= numberToSum; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, columnsToSum [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, columnsToSum [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, columnsToSum [i]);
 			}
 			for (long i = 1; i <= numberToAverage; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, columnsToAverage [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, columnsToAverage [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, columnsToAverage [i]);
 			}
 			for (long i = 1; i <= numberToMedianize; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, columnsToMedianize [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, columnsToMedianize [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, columnsToMedianize [i]);
 			}
 			for (long i = 1; i <= numberToAverageLogarithmically; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, columnsToAverageLogarithmically [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, columnsToAverageLogarithmically [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, columnsToAverageLogarithmically [i]);
 			}
 			for (long i = 1; i <= numberToMedianizeLogarithmically; i ++) {
-				Table_setColumnLabel (thee.peek(), ++ icol, columnsToMedianizeLogarithmically [i]);
+				Table_setColumnLabel (thee.get(), ++ icol, columnsToMedianizeLogarithmically [i]);
 				columns [icol] = Table_findColumnIndexFromColumnLabel (me, columnsToMedianizeLogarithmically [i]);
 			}
 			Melder_assert (icol == thy numberOfColumns);
@@ -836,8 +799,8 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 		 * (This is safe: the sorting index may change only vacuously when numericizing.)
 		 * But this cannot be done before the previous block!
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			row -> sortingIndex = irow;
 		}
 		/*
@@ -848,14 +811,14 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 		/*
 		 * Find stretches of identical factors.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			long rowmin = irow, rowmax = irow;
 			for (;;) {
 				bool identical = true;
-				if (++ rowmax > my rows -> size) break;
+				if (++ rowmax > my rows.size) break;
 				for (long icol = 1; icol <= numberOfFactors; icol ++) {
-					if (((TableRow) my rows -> item [rowmax]) -> cells [columns [icol]]. number !=
-						((TableRow) my rows -> item [rowmin]) -> cells [columns [icol]]. number)
+					if (my rows.at [rowmax] -> cells [columns [icol]]. number !=
+						my rows.at [rowmin] -> cells [columns [icol]]. number)
 					{
 						identical = false;
 						break;
@@ -867,44 +830,44 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 			/*
 			 * We have the stretch.
 			 */
-			Table_insertRow (thee.peek(), thy rows -> size + 1);
+			Table_insertRow (thee.get(), thy rows.size + 1);
 			{
 				long icol = 0;
 				for (long i = 1; i <= numberOfFactors; i ++) {
 					++ icol;
-					Table_setStringValue (thee.peek(), thy rows -> size, icol,
-						((TableRow) my rows -> item [rowmin]) -> cells [columns [icol]]. string);
+					Table_setStringValue (thee.get(), thy rows.size, icol,
+						my rows.at [rowmin] -> cells [columns [icol]]. string);
 				}
 				for (long i = 1; i <= numberToSum; i ++) {
 					++ icol;
 					double sum = 0.0;
 					for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-						sum += ((TableRow) my rows -> item [jrow]) -> cells [columns [icol]]. number;
+						sum += my rows.at [jrow] -> cells [columns [icol]]. number;
 					}
-					Table_setNumericValue (thee.peek(), thy rows -> size, icol, sum);
+					Table_setNumericValue (thee.get(), thy rows.size, icol, sum);
 				}
 				for (long i = 1; i <= numberToAverage; i ++) {
 					++ icol;
 					double sum = 0.0;
 					for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-						sum += ((TableRow) my rows -> item [jrow]) -> cells [columns [icol]]. number;
+						sum += my rows.at [jrow] -> cells [columns [icol]]. number;
 					}
-					Table_setNumericValue (thee.peek(), thy rows -> size, icol, sum / (rowmax - rowmin + 1));
+					Table_setNumericValue (thee.get(), thy rows.size, icol, sum / (rowmax - rowmin + 1));
 				}
 				for (long i = 1; i <= numberToMedianize; i ++) {
 					++ icol;
 					for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-						sortingColumn [jrow] = ((TableRow) my rows -> item [jrow]) -> cells [columns [icol]]. number;
+						sortingColumn [jrow] = my rows.at [jrow] -> cells [columns [icol]]. number;
 					}
 					NUMsort_d (rowmax - rowmin + 1, & sortingColumn [rowmin - 1]);
 					double median = NUMquantile (rowmax - rowmin + 1, & sortingColumn [rowmin - 1], 0.5);
-					Table_setNumericValue (thee.peek(), thy rows -> size, icol, median);
+					Table_setNumericValue (thee.get(), thy rows.size, icol, median);
 				}
 				for (long i = 1; i <= numberToAverageLogarithmically; i ++) {
 					++ icol;
 					double sum = 0.0;
 					for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-						double value = ((TableRow) my rows -> item [jrow]) -> cells [columns [icol]]. number;
+						double value = my rows.at [jrow] -> cells [columns [icol]]. number;
 						if (value <= 0.0)
 							Melder_throw (
 								U"The cell in column \"", columnsToAverageLogarithmically [i],
@@ -912,12 +875,12 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 								U" is not positive.\nCannot average logarithmically.");
 						sum += log (value);
 					}
-					Table_setNumericValue (thee.peek(), thy rows -> size, icol, exp (sum / (rowmax - rowmin + 1)));
+					Table_setNumericValue (thee.get(), thy rows.size, icol, exp (sum / (rowmax - rowmin + 1)));
 				}
 				for (long i = 1; i <= numberToMedianizeLogarithmically; i ++) {
 					++ icol;
 					for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-						double value = ((TableRow) my rows -> item [jrow]) -> cells [columns [icol]]. number;
+						double value = my rows.at [jrow] -> cells [columns [icol]]. number;
 						if (value <= 0.0)
 							Melder_throw (
 								U"The cell in column \"", columnsToMedianizeLogarithmically [i],
@@ -927,72 +890,72 @@ Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *
 					}
 					NUMsort_d (rowmax - rowmin + 1, & sortingColumn [rowmin - 1]);
 					double median = NUMquantile (rowmax - rowmin + 1, & sortingColumn [rowmin - 1], 0.5);
-					Table_setNumericValue (thee.peek(), thy rows -> size, icol, exp (median));
+					Table_setNumericValue (thee.get(), thy rows.size, icol, exp (median));
 				}
 				Melder_assert (icol == thy numberOfColumns);
 			}
 			irow = rowmax;
 		}
 		if (originalChanged) sortRowsByIndex_NoError (me);   // unsort the original table
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		if (originalChanged) sortRowsByIndex_NoError (me);   // unsort the original table   // UGLY
 		throw;
-		return NULL;
 	}
 }
 
 static char32 ** _Table_getLevels (Table me, long column, long *numberOfLevels) {
 	try {
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			row -> sortingIndex = irow;
 		}
 		long columns [2] = { 0, column };
 		Table_sortRows_Assert (me, columns, 1);
 		*numberOfLevels = 0;
 		long irow = 1;
-		while (irow <= my rows -> size) {
-			double value = ((TableRow) my rows -> item [irow]) -> cells [column]. number;
+		while (irow <= my rows.size) {
+			double value = my rows.at [irow] -> cells [column]. number;
 			(*numberOfLevels) ++;
-			while (++ irow <= my rows -> size && ((TableRow) my rows -> item [irow]) -> cells [column]. number == value) { }
+			while (++ irow <= my rows.size && my rows.at [irow] -> cells [column]. number == value) { }
 		}
 		autostring32vector result (1, *numberOfLevels);
 		*numberOfLevels = 0;
 		irow = 1;
-		while (irow <= my rows -> size) {
-			double value = ((TableRow) my rows -> item [irow]) -> cells [column]. number;
+		while (irow <= my rows.size) {
+			double value = my rows.at [irow] -> cells [column]. number;
 			result [++ *numberOfLevels] = Melder_dup (Table_getStringValue_Assert (me, irow, column));
-			while (++ irow <= my rows -> size && ((TableRow) my rows -> item [irow]) -> cells [column]. number == value) { }
+			while (++ irow <= my rows.size && my rows.at [irow] -> cells [column]. number == value) { }
 		}
 		sortRowsByIndex_NoError (me);   // unsort the original table
 		return result.transfer();
 	} catch (MelderError) {
 		sortRowsByIndex_NoError (me);   // unsort the original table   // UGLY
 		throw;
-		return NULL;
 	}
 }
 
-Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnToTranspose, const char32 *columnsToExpand_string) {
+autoTable Table_rowsToColumns (Table me, const char32 *factors_string, long columnToTranspose, const char32 *columnsToExpand_string) {
 	bool originalChanged = false;
 	try {
-		Melder_assert (factors_string != NULL);
+		Melder_assert (factors_string);
 
-		long numberOfFactors = 0, numberToExpand = 0, numberOfLevels = 0;
 		bool warned = false;
 		/*
 		 * Parse the two strings of tokens.
 		 */
-		autoMelderTokens factors_names (factors_string, & numberOfFactors);
+		autoMelderTokens factors_names (factors_string);
+		long numberOfFactors = factors_names.count();
 		if (numberOfFactors < 1)
 			Melder_throw (U"In order to nest table data, you must supply at least one independent variable.");
 		Table_columns_checkExist (me, factors_names.peek(), numberOfFactors);
-		autoMelderTokens columnsToExpand_names (columnsToExpand_string, & numberToExpand);
+		autoMelderTokens columnsToExpand_names (columnsToExpand_string);
+		long numberToExpand = columnsToExpand_names.count();
 		if (numberToExpand < 1)
 			Melder_throw (U"In order to nest table data, you must supply at least one dependent variable (to expand).");
 		Table_columns_checkExist (me, columnsToExpand_names.peek(), numberToExpand);
 		Table_columns_checkCrossSectionEmpty (factors_names.peek(), numberOfFactors, columnsToExpand_names.peek(), numberToExpand);
+		long numberOfLevels = 0;
 		char32 ** dummy = _Table_getLevels (me, columnToTranspose, & numberOfLevels);
 		autostring32vector levels_names (dummy, 1, numberOfLevels);
 		/*
@@ -1020,7 +983,7 @@ Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnTo
 		autoTable thee = Table_createWithoutColumnNames (0, numberOfFactors + (numberOfLevels * numberToExpand));
 		Melder_assert (thy numberOfColumns > 0);
 		for (long ifactor = 1; ifactor <= numberOfFactors; ifactor ++) {
-			Table_setColumnLabel (thee.peek(), ifactor, factors_names [ifactor]);
+			Table_setColumnLabel (thee.get(), ifactor, factors_names [ifactor]);
 		}
 		for (long iexpand = 1; iexpand <= numberToExpand; iexpand ++) {
 			for (long ilevel = 1; ilevel <= numberOfLevels; ilevel ++) {
@@ -1028,7 +991,7 @@ Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnTo
 				//Melder_casual (U"Level: ", ilevel, U" out of ", numberOfLevels);
 				long columnNumber = numberOfFactors + (iexpand - 1) * numberOfLevels + ilevel;
 				//Melder_casual (U"Column number: ", columnNumber);
-				Table_setColumnLabel (thee.peek(), columnNumber, Melder_cat (columnsToExpand_names [iexpand], U".", levels_names [ilevel]));
+				Table_setColumnLabel (thee.get(), columnNumber, Melder_cat (columnsToExpand_names [iexpand], U".", levels_names [ilevel]));
 			}
 		}
 		/*
@@ -1036,8 +999,8 @@ Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnTo
 		 * (This is safe: the sorting index may change only vacuously when numericizing.)
 		 * But this cannot be done before the previous blocks that numericize!
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
 			row -> sortingIndex = irow;
 		}
 		/*
@@ -1048,14 +1011,14 @@ Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnTo
 		/*
 		 * Find stretches of identical factors.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			long rowmin = irow, rowmax = irow;
 			for (;;) {
 				bool identical = true;
-				if (++ rowmax > my rows -> size) break;
+				if (++ rowmax > my rows.size) break;
 				for (long ifactor = 1; ifactor <= numberOfFactors; ifactor ++) {
-					if (((TableRow) my rows -> item [rowmax]) -> cells [factorColumns [ifactor]]. number !=
-						((TableRow) my rows -> item [rowmin]) -> cells [factorColumns [ifactor]]. number)
+					if (my rows.at [rowmax] -> cells [factorColumns [ifactor]]. number !=
+						my rows.at [rowmin] -> cells [factorColumns [ifactor]]. number)
 					{
 						identical = false;
 						break;
@@ -1074,49 +1037,48 @@ Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnTo
 			/*
 			 * We have the stretch.
 			 */
-			Table_insertRow (thee.peek(), thy rows -> size + 1);
-			TableRow thyRow = static_cast <TableRow> (thy rows -> item [thy rows -> size]);
+			Table_insertRow (thee.get(), thy rows.size + 1);
+			TableRow thyRow = thy rows.at [thy rows.size];
 			for (long ifactor = 1; ifactor <= numberOfFactors; ifactor ++) {
-				Table_setStringValue (thee.peek(), thy rows -> size, ifactor,
-					((TableRow) my rows -> item [rowmin]) -> cells [factorColumns [ifactor]]. string);
+				Table_setStringValue (thee.get(), thy rows.size, ifactor,
+					my rows.at [rowmin] -> cells [factorColumns [ifactor]]. string);
 			}
 			for (long iexpand = 1; iexpand <= numberToExpand; iexpand ++) {
 				for (long jrow = rowmin; jrow <= rowmax; jrow ++) {
-					TableRow myRow = static_cast <TableRow> (my rows -> item [jrow]);
+					TableRow myRow = my rows.at [jrow];
 					double value = myRow -> cells [columnsToExpand [iexpand]]. number;
 					long level = lround (myRow -> cells [columnToTranspose]. number);
 					long thyColumn = numberOfFactors + (iexpand - 1) * numberOfLevels + level;
-					if (thyRow -> cells [thyColumn]. string != NULL && ! warned) {
+					if (thyRow -> cells [thyColumn]. string && ! warned) {
 						Melder_warning (U"Some information from the original table has not been included in the new table. "
 							U"You could perhaps add more factors.");
 						warned = true;
 					}
-					Table_setNumericValue (thee.peek(), thy rows -> size, thyColumn, value);
+					Table_setNumericValue (thee.get(), thy rows.size, thyColumn, value);
 				}
 			}
 			irow = rowmax;
 		}
 		if (originalChanged) sortRowsByIndex_NoError (me);   // unsort the original table
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		if (originalChanged) sortRowsByIndex_NoError (me);   // unsort the original table   // UGLY
 		throw;
-		return NULL;
 	}
 }
 
-Table Table_transpose (Table me) {
+autoTable Table_transpose (Table me) {
 	try {
-		autoTable thee = Table_createWithoutColumnNames (my numberOfColumns, 1 + my rows -> size);
+		autoTable thee = Table_createWithoutColumnNames (my numberOfColumns, 1 + my rows.size);
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
-				Table_setStringValue (thee.peek(), icol, 1, my columnHeaders [icol]. label);
+				Table_setStringValue (thee.get(), icol, 1, my columnHeaders [icol]. label);
 			}
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
-				Table_setStringValue (thee.peek(), icol, 1 + irow, Table_getStringValue_Assert (me, irow, icol));
+				Table_setStringValue (thee.get(), icol, 1 + irow, Table_getStringValue_Assert (me, irow, icol));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not transposed.");
 	}
@@ -1139,13 +1101,13 @@ void Table_sortRows_Assert (Table me, long *columns, long numberOfColumns) {
 	}
 	cellCompare_columns = columns;
 	cellCompare_numberOfColumns = numberOfColumns;
-	qsort (& my rows -> item [1], (unsigned long) my rows -> size, sizeof (TableRow), cellCompare_NoError);
+	qsort (& my rows.at [1], (unsigned long) my rows.size, sizeof (TableRow), cellCompare_NoError);
 }
 
 void Table_sortRows_string (Table me, const char32 *columns_string) {
 	try {
-		long numberOfColumns;
-		autoMelderTokens columns_tokens (columns_string, & numberOfColumns);
+		autoMelderTokens columns_tokens (columns_string);
+		long numberOfColumns = columns_tokens.count();
 		if (numberOfColumns < 1)
 			Melder_throw (me, U": you specified an empty list of columns.");
 		autoNUMvector <long> columns (1, numberOfColumns);
@@ -1160,34 +1122,34 @@ void Table_sortRows_string (Table me, const char32 *columns_string) {
 	}
 }
 
-void Table_randomizeRows (Table me) {
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		long jrow = NUMrandomInteger (irow, my rows -> size);
-		TableRow tmp = static_cast <TableRow> (my rows -> item [irow]);
-		my rows -> item [irow] = my rows -> item [jrow];
-		my rows -> item [jrow] = tmp;
+void Table_randomizeRows (Table me) noexcept {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		long jrow = NUMrandomInteger (irow, my rows.size);
+		TableRow tmp = my rows.at [irow];
+		my rows.at [irow] = my rows.at [jrow];
+		my rows.at [jrow] = tmp;
 	}
 }
 
-void Table_reflectRows (Table me) {
-	for (long irow = 1; irow <= my rows -> size / 2; irow ++) {
-		long jrow = my rows -> size + 1 - irow;
-		TableRow tmp = static_cast <TableRow> (my rows -> item [irow]);
-		my rows -> item [irow] = my rows -> item [jrow];
-		my rows -> item [jrow] = tmp;
+void Table_reflectRows (Table me) noexcept {
+	for (long irow = 1; irow <= my rows.size / 2; irow ++) {
+		long jrow = my rows.size + 1 - irow;
+		TableRow tmp = my rows.at [irow];
+		my rows.at [irow] = my rows.at [jrow];
+		my rows.at [jrow] = tmp;
 	}
 }
 
-Table Tables_append (Collection me) {
+autoTable Tables_append (OrderedOf<structTable>* me) {
 	try {
 		if (my size == 0) Melder_throw (U"Cannot add zero tables.");
-		Table thee = static_cast <Table> (my item [1]);
-		long nrow = thy rows -> size;
+		Table thee = my at [1];
+		long nrow = thy rows.size;
 		long ncol = thy numberOfColumns;
 		Table firstTable = thee;
 		for (long itab = 2; itab <= my size; itab ++) {
-			thee = static_cast <Table> (my item [itab]);
-			nrow += thy rows -> size;
+			thee = my at [itab];
+			nrow += thy rows.size;
 			if (thy numberOfColumns != ncol)
 				Melder_throw (U"Numbers of columns do not match.");
 			for (long icol = 1; icol <= ncol; icol ++) {
@@ -1199,19 +1161,19 @@ Table Tables_append (Collection me) {
 		}
 		autoTable him = Table_createWithoutColumnNames (nrow, ncol);
 		for (long icol = 1; icol <= ncol; icol ++) {
-			Table_setColumnLabel (him.peek(), icol, thy columnHeaders [icol]. label);
+			Table_setColumnLabel (him.get(), icol, thy columnHeaders [icol]. label);
 		}
 		nrow = 0;
 		for (long itab = 1; itab <= my size; itab ++) {
-			thee = static_cast <Table> (my item [itab]);
-			for (long irow = 1; irow <= thy rows -> size; irow ++) {
+			thee = my at [itab];
+			for (long irow = 1; irow <= thy rows.size; irow ++) {
 				nrow ++;
 				for (long icol = 1; icol <= ncol; icol ++) {
-					Table_setStringValue (him.peek(), nrow, icol, Table_getStringValue_Assert (thee, irow, icol));
+					Table_setStringValue (him.get(), nrow, icol, Table_getStringValue_Assert (thee, irow, icol));
 				}
 			}
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"Table objects not appended.");
 	}
@@ -1226,10 +1188,10 @@ void Table_appendSumColumn (Table me, long column1, long column2, const char32 *
 		Table_checkSpecifiedColumnNumberWithinRange (me, column2);
 		Table_numericize_checkDefined (me, column1);
 		Table_numericize_checkDefined (me, column2);
-		autoTable thee = Table_createWithoutColumnNames (my rows -> size, 1);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			Table_setNumericValue (thee.peek(), irow, 1, myRow -> cells [column1]. number + myRow -> cells [column2]. number);
+		autoTable thee = Table_createWithoutColumnNames (my rows.size, 1);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			Table_setNumericValue (thee.get(), irow, 1, myRow -> cells [column1]. number + myRow -> cells [column2]. number);
 		}
 		/*
 		 * Safe change.
@@ -1238,14 +1200,14 @@ void Table_appendSumColumn (Table me, long column1, long column2, const char32 *
 		/*
 		 * Change without error.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			TableRow thyRow = static_cast <TableRow> (thy rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			TableRow thyRow = thy rows.at [irow];
 			TableCell myCell = & myRow -> cells [my numberOfColumns];
 			TableCell thyCell = & thyRow -> cells [1];
-			Melder_assert (myCell -> string == NULL);   // make room...
+			Melder_assert (! myCell -> string);   // make room...
 			myCell -> string = thyCell -> string;   // ...fill in and dangle...
-			thyCell -> string = NULL;   // ...undangle
+			thyCell -> string = nullptr;   // ...undangle
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": sum column not appended.");
@@ -1261,10 +1223,10 @@ void Table_appendDifferenceColumn (Table me, long column1, long column2, const c
 		Table_checkSpecifiedColumnNumberWithinRange (me, column2);
 		Table_numericize_checkDefined (me, column1);
 		Table_numericize_checkDefined (me, column2);
-		autoTable thee = Table_createWithoutColumnNames (my rows -> size, 1);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			Table_setNumericValue (thee.peek(), irow, 1, myRow -> cells [column1]. number - myRow -> cells [column2]. number);
+		autoTable thee = Table_createWithoutColumnNames (my rows.size, 1);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			Table_setNumericValue (thee.get(), irow, 1, myRow -> cells [column1]. number - myRow -> cells [column2]. number);
 		}
 		/*
 		 * Safe change.
@@ -1273,14 +1235,14 @@ void Table_appendDifferenceColumn (Table me, long column1, long column2, const c
 		/*
 		 * Change without error.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			TableRow thyRow = static_cast <TableRow> (thy rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			TableRow thyRow = thy rows.at [irow];
 			TableCell myCell = & myRow -> cells [my numberOfColumns];
 			TableCell thyCell = & thyRow -> cells [1];
-			Melder_assert (myCell -> string == NULL);   // make room...
+			Melder_assert (! myCell -> string);   // make room...
 			myCell -> string = thyCell -> string;   // ...fill in and dangle...
-			thyCell -> string = NULL;   // ...undangle
+			thyCell -> string = nullptr;   // ...undangle
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": difference column not appended.");
@@ -1296,10 +1258,10 @@ void Table_appendProductColumn (Table me, long column1, long column2, const char
 		Table_checkSpecifiedColumnNumberWithinRange (me, column2);
 		Table_numericize_checkDefined (me, column1);
 		Table_numericize_checkDefined (me, column2);
-		autoTable thee = Table_createWithoutColumnNames (my rows -> size, 1);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			Table_setNumericValue (thee.peek(), irow, 1, myRow -> cells [column1]. number * myRow -> cells [column2]. number);
+		autoTable thee = Table_createWithoutColumnNames (my rows.size, 1);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			Table_setNumericValue (thee.get(), irow, 1, myRow -> cells [column1]. number * myRow -> cells [column2]. number);
 		}
 		/*
 		 * Safe change.
@@ -1308,14 +1270,14 @@ void Table_appendProductColumn (Table me, long column1, long column2, const char
 		/*
 		 * Change without error.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			TableRow thyRow = static_cast <TableRow> (thy rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			TableRow thyRow = thy rows.at [irow];
 			TableCell myCell = & myRow -> cells [my numberOfColumns];
 			TableCell thyCell = & thyRow -> cells [1];
-			Melder_assert (myCell -> string == NULL);   // make room...
+			Melder_assert (! myCell -> string);   // make room...
 			myCell -> string = thyCell -> string;   // ...fill in and dangle...
-			thyCell -> string = NULL;   // ...undangle
+			thyCell -> string = nullptr;   // ...undangle
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": product column not appended.");
@@ -1331,12 +1293,12 @@ void Table_appendQuotientColumn (Table me, long column1, long column2, const cha
 		Table_checkSpecifiedColumnNumberWithinRange (me, column2);
 		Table_numericize_checkDefined (me, column1);
 		Table_numericize_checkDefined (me, column2);
-		autoTable thee = Table_createWithoutColumnNames (my rows -> size, 1);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
+		autoTable thee = Table_createWithoutColumnNames (my rows.size, 1);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
 			double value = myRow -> cells [column2]. number == 0.0 ? NUMundefined :
 				myRow -> cells [column1]. number / myRow -> cells [column2]. number;
-			Table_setNumericValue (thee.peek(), irow, 1, value);
+			Table_setNumericValue (thee.get(), irow, 1, value);
 		}
 		/*
 		 * Safe change.
@@ -1345,14 +1307,14 @@ void Table_appendQuotientColumn (Table me, long column1, long column2, const cha
 		/*
 		 * Change without error.
 		 */
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow myRow = static_cast <TableRow> (my rows -> item [irow]);
-			TableRow thyRow = static_cast <TableRow> (thy rows -> item [irow]);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow myRow = my rows.at [irow];
+			TableRow thyRow = thy rows.at [irow];
 			TableCell myCell = & myRow -> cells [my numberOfColumns];
 			TableCell thyCell = & thyRow -> cells [1];
-			Melder_assert (myCell -> string == NULL);   // make room...
+			Melder_assert (! myCell -> string);   // make room...
 			myCell -> string = thyCell -> string;   // ...fill in and dangle...
-			thyCell -> string = NULL;   // ...undangle
+			thyCell -> string = nullptr;   // ...undangle
 		}
 	} catch (MelderError) {
 		Melder_throw (me, U": quotient column not appended.");
@@ -1363,8 +1325,8 @@ void Table_formula_columnRange (Table me, long fromColumn, long toColumn, const
 	try {
 		Table_checkSpecifiedColumnNumberWithinRange (me, fromColumn);
 		Table_checkSpecifiedColumnNumberWithinRange (me, toColumn);
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_UNKNOWN, TRUE);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_UNKNOWN, true);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			for (long icol = fromColumn; icol <= toColumn; icol ++) {
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
@@ -1392,7 +1354,7 @@ void Table_formula (Table me, long icol, const char32 *expression, Interpreter i
 double Table_getCorrelation_pearsonR (Table me, long column1, long column2, double significanceLevel,
 	double *out_significance, double *out_lowerLimit, double *out_upperLimit)
 {
-	long n = my rows -> size, irow;
+	long n = my rows.size, irow;
 	double correlation;
 	double sum1 = 0.0, sum2 = 0.0, sum12 = 0.0, sum11 = 0.0, sum22 = 0.0, mean1, mean2;
 	if (out_significance) *out_significance = NUMundefined;
@@ -1404,14 +1366,14 @@ double Table_getCorrelation_pearsonR (Table me, long column1, long column2, doub
 	Table_numericize_Assert (me, column1);
 	Table_numericize_Assert (me, column2);
 	for (irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		sum1 += row -> cells [column1]. number;
 		sum2 += row -> cells [column2]. number;
 	}
 	mean1 = sum1 / n;
 	mean2 = sum2 / n;
 	for (irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		double d1 = row -> cells [column1]. number - mean1, d2 = row -> cells [column2]. number - mean2;
 		sum12 += d1 * d2;
 		sum11 += d1 * d1;
@@ -1441,7 +1403,7 @@ double Table_getCorrelation_pearsonR (Table me, long column1, long column2, doub
 double Table_getCorrelation_kendallTau (Table me, long column1, long column2, double significanceLevel,
 	double *out_significance, double *out_lowerLimit, double *out_upperLimit)
 {
-	long n = my rows -> size, irow, jrow;
+	long n = my rows.size, irow, jrow;
 	double correlation, denominator;
 	long numberOfConcordants = 0, numberOfDiscordants = 0, numberOfExtra1 = 0, numberOfExtra2 = 0;
 	if (out_significance) *out_significance = NUMundefined;
@@ -1452,9 +1414,9 @@ double Table_getCorrelation_kendallTau (Table me, long column1, long column2, do
 	Table_numericize_Assert (me, column1);
 	Table_numericize_Assert (me, column2);
 	for (irow = 1; irow < n; irow ++) {
-		TableRow rowi = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow rowi = my rows.at [irow];
 		for (jrow = irow + 1; jrow <= n; jrow ++) {
-			TableRow rowj = static_cast <TableRow> (my rows -> item [jrow]);
+			TableRow rowj = my rows.at [jrow];
 			double diff1 = rowi -> cells [column1]. number - rowj -> cells [column1]. number;
 			double diff2 = rowi -> cells [column2]. number - rowj -> cells [column2]. number;
 			double concord = diff1 * diff2;
@@ -1492,7 +1454,7 @@ double Table_getDifference_studentT (Table me, long column1, long column2, doubl
 	if (out_significance) *out_significance = NUMundefined;
 	if (out_lowerLimit) *out_lowerLimit = NUMundefined;
 	if (out_upperLimit) *out_upperLimit = NUMundefined;
-	long n = my rows -> size;
+	long n = my rows.size;
 	if (n < 1) return NUMundefined;
 	if (column1 < 1 || column1 > my numberOfColumns) return NUMundefined;
 	if (column2 < 1 || column2 > my numberOfColumns) return NUMundefined;
@@ -1500,7 +1462,7 @@ double Table_getDifference_studentT (Table me, long column1, long column2, doubl
 	Table_numericize_Assert (me, column2);
 	double sum = 0.0;
 	for (long irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		sum += row -> cells [column1]. number - row -> cells [column2]. number;
 	}
 	double meanDifference = sum / n;
@@ -1509,7 +1471,7 @@ double Table_getDifference_studentT (Table me, long column1, long column2, doubl
 	if (degreesOfFreedom >= 1 && (out_t || out_significance || out_lowerLimit || out_upperLimit)) {
 		double sumOfSquares = 0.0;
 		for (long irow = 1; irow <= n; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			TableRow row = my rows.at [irow];
 			double diff = (row -> cells [column1]. number - row -> cells [column2]. number) - meanDifference;
 			sumOfSquares += diff * diff;
 		}
@@ -1529,7 +1491,7 @@ double Table_getMean_studentT (Table me, long column, double significanceLevel,
 	double *out_tFromZero, double *out_numberOfDegreesOfFreedom, double *out_significanceFromZero, double *out_lowerLimit, double *out_upperLimit)
 {
 	double mean = 0.0, var = 0.0, standardError;
-	long n = my rows -> size;
+	long n = my rows.size;
 	if (out_tFromZero) *out_tFromZero = NUMundefined;
 	if (out_numberOfDegreesOfFreedom) *out_numberOfDegreesOfFreedom = NUMundefined;
 	if (out_significanceFromZero) *out_significanceFromZero = NUMundefined;
@@ -1541,13 +1503,13 @@ double Table_getMean_studentT (Table me, long column, double significanceLevel,
 	if (out_numberOfDegreesOfFreedom) *out_numberOfDegreesOfFreedom = degreesOfFreedom;
 	Table_numericize_Assert (me, column);
 	for (long irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		mean += row -> cells [column]. number;
 	}
 	mean /= n;
 	if (n >= 2 && (out_tFromZero || out_significanceFromZero || out_lowerLimit || out_upperLimit)) {
 		for (long irow = 1; irow <= n; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			TableRow row = my rows.at [irow];
 			double diff = row -> cells [column]. number - mean;
 			var += diff * diff;
 		}
@@ -1575,9 +1537,9 @@ double Table_getGroupMean_studentT (Table me, long column, long groupColumn, con
 	Table_numericize_Assert (me, column);
 	long n = 0;
 	double sum = 0.0;
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-		if (row -> cells [groupColumn]. string != NULL) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
+		if (row -> cells [groupColumn]. string) {
 			if (str32equ (row -> cells [groupColumn]. string, group)) {
 				n += 1;
 				sum += row -> cells [column]. number;
@@ -1590,9 +1552,9 @@ double Table_getGroupMean_studentT (Table me, long column, long groupColumn, con
 	if (out_numberOfDegreesOfFreedom) *out_numberOfDegreesOfFreedom = degreesOfFreedom;
 	if (degreesOfFreedom >= 1 && (out_tFromZero || out_significanceFromZero || out_lowerLimit || out_upperLimit)) {
 		double sumOfSquares = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-			if (row -> cells [groupColumn]. string != NULL) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
+			if (row -> cells [groupColumn]. string) {
 				if (str32equ (row -> cells [groupColumn]. string, group)) {
 					double diff = row -> cells [column]. number - mean;
 					sumOfSquares += diff * diff;
@@ -1624,9 +1586,9 @@ double Table_getGroupDifference_studentT (Table me, long column, long groupColum
 	Table_numericize_Assert (me, column);
 	long n1 = 0, n2 = 0;
 	double sum1 = 0.0, sum2 = 0.0;
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-		if (row -> cells [groupColumn]. string != NULL) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
+		if (row -> cells [groupColumn]. string) {
 			if (str32equ (row -> cells [groupColumn]. string, group1)) {
 				n1 ++;
 				sum1 += row -> cells [column]. number;
@@ -1644,9 +1606,9 @@ double Table_getGroupDifference_studentT (Table me, long column, long groupColum
 	double difference = mean1 - mean2;
 	if (degreesOfFreedom >= 1 && (out_tFromZero || out_significanceFromZero || out_lowerLimit || out_upperLimit)) {
 		double sumOfSquares = 0.0;
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-			if (row -> cells [groupColumn]. string != NULL) {
+		for (long irow = 1; irow <= my rows.size; irow ++) {
+			TableRow row = my rows.at [irow];
+			if (row -> cells [groupColumn]. string) {
 				if (str32equ (row -> cells [groupColumn]. string, group1)) {
 					double diff = row -> cells [column]. number - mean1;
 					sumOfSquares += diff * diff;
@@ -1677,9 +1639,9 @@ double Table_getGroupDifference_wilcoxonRankSum (Table me, long column, long gro
 	if (groupColumn < 1 || groupColumn > my numberOfColumns) return NUMundefined;
 	Table_numericize_Assert (me, column);
 	long n1 = 0, n2 = 0;
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-		if (row -> cells [groupColumn]. string != NULL) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
+		if (row -> cells [groupColumn]. string) {
 			if (str32equ (row -> cells [groupColumn]. string, group1)) {
 				n1 ++;
 			} else if (str32equ (row -> cells [groupColumn]. string, group2)) {
@@ -1689,53 +1651,52 @@ double Table_getGroupDifference_wilcoxonRankSum (Table me, long column, long gro
 	}
 	long n = n1 + n2;
 	if (n1 < 1 || n2 < 1 || n < 3) return NUMundefined;
-	Table ranks = Table_createWithoutColumnNames (n, 3);   // column 1 = group, 2 = value, 3 = rank
-	for (long irow = 1, jrow = 0; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
-		if (row -> cells [groupColumn]. string != NULL) {
+	autoTable ranks = Table_createWithoutColumnNames (n, 3);   // column 1 = group, 2 = value, 3 = rank
+	for (long irow = 1, jrow = 0; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
+		if (row -> cells [groupColumn]. string) {
 			if (str32equ (row -> cells [groupColumn]. string, group1)) {
-				Table_setNumericValue (ranks, ++ jrow, 1, 1.0);
-				Table_setNumericValue (ranks, jrow, 2, row -> cells [column]. number);
+				Table_setNumericValue (ranks.get(), ++ jrow, 1, 1.0);
+				Table_setNumericValue (ranks.get(), jrow, 2, row -> cells [column]. number);
 			} else if (str32equ (row -> cells [groupColumn]. string, group2)) {
-				Table_setNumericValue (ranks, ++ jrow, 1, 2.0);
-				Table_setNumericValue (ranks, jrow, 2, row -> cells [column]. number);
+				Table_setNumericValue (ranks.get(), ++ jrow, 1, 2.0);
+				Table_setNumericValue (ranks.get(), jrow, 2, row -> cells [column]. number);
 			}
 		}
 	}
-	Table_numericize_Assert (ranks, 1);
-	Table_numericize_Assert (ranks, 2);
-	Table_numericize_Assert (ranks, 3);
+	Table_numericize_Assert (ranks.get(), 1);
+	Table_numericize_Assert (ranks.get(), 2);
+	Table_numericize_Assert (ranks.get(), 3);
 	long columns [1+1] = { 0, 2 };   // we're gonna sort by column 2
-	Table_sortRows_Assert (ranks, columns, 1);   // we sort by one column only
+	Table_sortRows_Assert (ranks.get(), columns, 1);   // we sort by one column only
 	double totalNumberOfTies3 = 0.0;
-	for (long irow = 1; irow <= ranks -> rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (ranks -> rows -> item [irow]);
+	for (long irow = 1; irow <= ranks -> rows.size; irow ++) {
+		TableRow row = ranks -> rows.at [irow];
 		double value = row -> cells [2]. number;
 		long rowOfLastTie = irow + 1;
-		for (; rowOfLastTie <= ranks -> rows -> size; rowOfLastTie ++) {
-			TableRow row2 = static_cast <TableRow> (ranks -> rows -> item [rowOfLastTie]);
+		for (; rowOfLastTie <= ranks -> rows.size; rowOfLastTie ++) {
+			TableRow row2 = ranks -> rows.at [rowOfLastTie];
 			double value2 = row2 -> cells [2]. number;
 			if (value2 != value) break;
 		}
 		rowOfLastTie --;
 		double averageRank = 0.5 * ((double) irow + (double) rowOfLastTie);
 		for (long jrow = irow; jrow <= rowOfLastTie; jrow ++) {
-			Table_setNumericValue (ranks, jrow, 3, averageRank);
+			Table_setNumericValue (ranks.get(), jrow, 3, averageRank);
 		}
 		long numberOfTies = rowOfLastTie - irow + 1;
 		totalNumberOfTies3 += (double) (numberOfTies - 1) * (double) numberOfTies * (double) (numberOfTies + 1);
 	}
-	Table_numericize_Assert (ranks, 3);
+	Table_numericize_Assert (ranks.get(), 3);
 	double maximumRankSum = (double) n1 * (double) n2, rankSum = 0.0;
-	for (long irow = 1; irow <= ranks -> rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (ranks -> rows -> item [irow]);
+	for (long irow = 1; irow <= ranks -> rows.size; irow ++) {
+		TableRow row = ranks -> rows.at [irow];
 		if (row -> cells [1]. number == 1.0) rankSum += row -> cells [3]. number;
 	}
 	rankSum -= 0.5 * (double) n1 * ((double) n1 + 1.0);
 	double stdev = sqrt (maximumRankSum * ((double) n + 1.0 - totalNumberOfTies3 / n / (n - 1)) / 12.0);
 	if (out_rankSum) *out_rankSum = rankSum;
 	if (out_significanceFromZero) *out_significanceFromZero = NUMgaussQ (fabs (rankSum - 0.5 * maximumRankSum) / stdev);
-	forget (ranks);
 	return rankSum / maximumRankSum;
 }
 
@@ -1745,15 +1706,15 @@ double Table_getFisherFLowerLimit (Table me, long col1, long col2, double signif
 double Table_getFisherFUpperLimit (Table me, long col1, long col2, double significanceLevel);
 
 bool Table_getExtrema (Table me, long icol, double *minimum, double *maximum) {
-	long n = my rows -> size, irow;
+	long n = my rows.size, irow;
 	if (icol < 1 || icol > my numberOfColumns || n == 0) {
 		*minimum = *maximum = NUMundefined;
 		return false;
 	}
 	Table_numericize_Assert (me, icol);
-	*minimum = *maximum = ((TableRow) my rows -> item [1]) -> cells [icol]. number;
+	*minimum = *maximum = my rows.at [1] -> cells [icol]. number;
 	for (irow = 2; irow <= n; irow ++) {
-		double value = ((TableRow) my rows -> item [irow]) -> cells [icol]. number;
+		double value = my rows.at [irow] -> cells [icol]. number;
 		if (value < *minimum) *minimum = value;
 		if (value > *maximum) *maximum = value;
 	}
@@ -1763,7 +1724,7 @@ bool Table_getExtrema (Table me, long icol, double *minimum, double *maximum) {
 void Table_scatterPlot_mark (Table me, Graphics g, long xcolumn, long ycolumn,
 	double xmin, double xmax, double ymin, double ymax, double markSize_mm, const char32 *mark, int garnish)
 {
-	long n = my rows -> size, irow;
+	long n = my rows.size, irow;
 	if (xcolumn < 1 || xcolumn > my numberOfColumns || ycolumn < 1 || ycolumn > my numberOfColumns) return;
 	Table_numericize_Assert (me, xcolumn);
 	Table_numericize_Assert (me, ycolumn);
@@ -1780,25 +1741,25 @@ void Table_scatterPlot_mark (Table me, Graphics g, long xcolumn, long ycolumn,
 
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 	for (irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		Graphics_mark (g, row -> cells [xcolumn]. number, row -> cells [ycolumn]. number, markSize_mm, mark);
 	}
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (my columnHeaders [xcolumn]. label)
-			Graphics_textBottom (g, TRUE, my columnHeaders [xcolumn]. label);
-		Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
+			Graphics_textBottom (g, true, my columnHeaders [xcolumn]. label);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (my columnHeaders [ycolumn]. label)
-			Graphics_textLeft (g, TRUE, my columnHeaders [ycolumn]. label);
+			Graphics_textLeft (g, true, my columnHeaders [ycolumn]. label);
 	}
 }
 
 void Table_scatterPlot (Table me, Graphics g, long xcolumn, long ycolumn,
 	double xmin, double xmax, double ymin, double ymax, long markColumn, int fontSize, int garnish)
 {
-	long n = my rows -> size;
+	long n = my rows.size;
 	int saveFontSize = Graphics_inqFontSize (g);
 	if (xcolumn < 1 || xcolumn > my numberOfColumns || ycolumn < 1 || ycolumn > my numberOfColumns) return;
 	Table_numericize_Assert (me, xcolumn);
@@ -1817,7 +1778,7 @@ void Table_scatterPlot (Table me, Graphics g, long xcolumn, long ycolumn,
 	Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
 	Graphics_setFontSize (g, fontSize);
 	for (long irow = 1; irow <= n; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		const char32 *mark = row -> cells [markColumn]. string;
 		if (mark)
 			Graphics_text (g, row -> cells [xcolumn]. number, row -> cells [ycolumn]. number, mark);
@@ -1826,12 +1787,12 @@ void Table_scatterPlot (Table me, Graphics g, long xcolumn, long ycolumn,
 	Graphics_unsetInner (g);
 	if (garnish) {
 		Graphics_drawInnerBox (g);
-		Graphics_marksBottom (g, 2, TRUE, TRUE, FALSE);
+		Graphics_marksBottom (g, 2, true, true, false);
 		if (my columnHeaders [xcolumn]. label)
-			Graphics_textBottom (g, TRUE, my columnHeaders [xcolumn]. label);
-		Graphics_marksLeft (g, 2, TRUE, TRUE, FALSE);
+			Graphics_textBottom (g, true, my columnHeaders [xcolumn]. label);
+		Graphics_marksLeft (g, 2, true, true, false);
 		if (my columnHeaders [ycolumn]. label)
-			Graphics_textLeft (g, TRUE, my columnHeaders [ycolumn]. label);
+			Graphics_textLeft (g, true, my columnHeaders [ycolumn]. label);
 	}
 }
 
@@ -1850,20 +1811,20 @@ void Table_drawEllipse_e (Table me, Graphics g, long xcolumn, long ycolumn,
 			if (! Table_getExtrema (me, ycolumn, & ymin, & ymax)) return;
 			if (ymin == ymax) ymin -= 0.5, ymax += 0.5;
 		}
-		autoTableOfReal tableOfReal = TableOfReal_create (my rows -> size, 2);
-		for (long irow = 1; irow <= my rows -> size; irow ++) {
+		autoTableOfReal tableOfReal = TableOfReal_create (my rows.size, 2);
+		for (long irow = 1; irow <= my rows.size; irow ++) {
 			tableOfReal -> data [irow] [1] = Table_getNumericValue_Assert (me, irow, xcolumn);
 			tableOfReal -> data [irow] [2] = Table_getNumericValue_Assert (me, irow, ycolumn);
 		}
-		autoSSCP sscp = TableOfReal_to_SSCP (tableOfReal.peek(), 0, 0, 0, 0);
-		SSCP_drawConcentrationEllipse (sscp.peek(), g, numberOfSigmas, 0, 1, 2, xmin, xmax, ymin, ymax, garnish);
+		autoSSCP sscp = TableOfReal_to_SSCP (tableOfReal.get(), 0, 0, 0, 0);
+		SSCP_drawConcentrationEllipse (sscp.get(), g, numberOfSigmas, 0, 1, 2, xmin, xmax, ymin, ymax, garnish);
 	} catch (MelderError) {
 		Melder_clearError ();   // drawing errors shall be ignored
 	}
 }
 
 static const char32 *visibleString (const char32 *s) {
-	return s != NULL && s [0] != U'\0' ? s : U"?";
+	return ( s && s [0] != U'\0' ? s : U"?" );
 }
 
 void Table_list (Table me, bool includeRowNumbers) {
@@ -1877,12 +1838,12 @@ void Table_list (Table me, bool includeRowNumbers) {
 		MelderInfo_write (visibleString (my columnHeaders [icol]. label));
 	}
 	MelderInfo_write (U"\n");
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
+	for (long irow = 1; irow <= my rows.size; irow ++) {
 		if (includeRowNumbers) {
 			MelderInfo_write (irow);
 			if (my numberOfColumns > 0) MelderInfo_write (U"\t");
 		}
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+		TableRow row = my rows.at [irow];
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			if (icol > 1) MelderInfo_write (U"\t");
 			MelderInfo_write (visibleString (row -> cells [icol]. string));
@@ -1897,15 +1858,15 @@ static void _Table_writeToCharacterSeparatedFile (Table me, MelderFile file, cha
 	for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 		if (icol != 1) MelderString_appendCharacter (& buffer, kar);
 		char32 *s = my columnHeaders [icol]. label;
-		MelderString_append (& buffer, s != NULL && s [0] != U'\0' ? s : U"?");
+		MelderString_append (& buffer, ( s && s [0] != U'\0' ? s : U"?" ));
 	}
-	MelderString_appendCharacter (& buffer, '\n');
-	for (long irow = 1; irow <= my rows -> size; irow ++) {
-		TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+	MelderString_appendCharacter (& buffer, U'\n');
+	for (long irow = 1; irow <= my rows.size; irow ++) {
+		TableRow row = my rows.at [irow];
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			if (icol != 1) MelderString_appendCharacter (& buffer, kar);
 			char32 *s = row -> cells [icol]. string;
-			MelderString_append (& buffer, s != NULL && s [0] != U'\0' ? s : U"?");
+			MelderString_append (& buffer, ( s && s [0] != U'\0' ? s : U"?" ));
 		}
 		MelderString_appendCharacter (& buffer, U'\n');
 	}
@@ -1928,8 +1889,7 @@ void Table_writeToCommaSeparatedFile (Table me, MelderFile file) {
 	}
 }
 
-Table Table_readFromTableFile (MelderFile file) {
-	Table me = NULL;
+autoTable Table_readFromTableFile (MelderFile file) {
 	try {
 		autostring32 string = MelderFile_readText (file);
 		long nrow, ncol, nelements;
@@ -1972,7 +1932,7 @@ Table Table_readFromTableFile (MelderFile file) {
 		 * Create empty table.
 		 */
 		nrow = nelements / ncol - 1;
-		me = Table_create (nrow, ncol);
+		autoTable me = Table_create (nrow, ncol);
 
 		/*
 		 * Read elements.
@@ -1983,11 +1943,11 @@ Table Table_readFromTableFile (MelderFile file) {
 			static MelderString buffer { 0 };
 			MelderString_empty (& buffer);
 			while (*p != U' ' && *p != U'\t' && *p != U'\n') { MelderString_appendCharacter (& buffer, *p); p ++; }
-			Table_setColumnLabel (me, icol, buffer.string);
+			Table_setColumnLabel (me.get(), icol, buffer.string);
 			MelderString_empty (& buffer);
 		}
 		for (long irow = 1; irow <= nrow; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			TableRow row = my rows.at [irow];
 			for (long icol = 1; icol <= ncol; icol ++) {
 				while (*p == U' ' || *p == U'\t' || *p == U'\n') { Melder_assert (*p != U'\0'); p ++; }
 				static MelderString buffer { 0 };
@@ -1999,12 +1959,11 @@ Table Table_readFromTableFile (MelderFile file) {
 		}
 		return me;
 	} catch (MelderError) {
-		forget (me);
 		Melder_throw (U"Table object not read from space-separated text file ", file, U".");
 	}
 }
 
-Table Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separator) {
+autoTable Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separator) {
 	try {
 		autostring32 string = MelderFile_readText (file);
 
@@ -2053,14 +2012,14 @@ Table Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separato
 				p ++;
 			}
 			p ++;
-			Table_setColumnLabel (me.peek(), icol, buffer.string);
+			Table_setColumnLabel (me.get(), icol, buffer.string);
 		}
 
 		/*
 		 * Read cells.
 		 */
 		for (long irow = 1; irow <= nrow; irow ++) {
-			TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			TableRow row = my rows.at [irow];
 			for (long icol = 1; icol <= ncol; icol ++) {
 				MelderString_empty (& buffer);
 				while (*p != separator && *p != U'\n' && *p != U'\0') {
@@ -2077,10 +2036,10 @@ Table Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separato
 					Melder_assert (*p == separator);
 					p ++;
 				}
-				row -> cells [icol]. string = Melder_dup (buffer.string);   // BUG? could be NULL
+				row -> cells [icol]. string = Melder_dup (buffer.string);   // BUG? could be null
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Table object not read from character-separated text file ", file, U".");
 	}
diff --git a/stat/Table.h b/stat/Table.h
index 70714bb..95c8ff0 100644
--- a/stat/Table.h
+++ b/stat/Table.h
@@ -4,36 +4,33 @@
  *
  * Copyright (C) 2002-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 #include "Graphics.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "Table_def.h"
-oo_CLASS_CREATE (TableRow, Data);
-oo_CLASS_CREATE (Table, Data);
 
 void Table_initWithColumnNames (Table me, long numberOfRows, const char32 *columnNames);
-Table Table_createWithColumnNames (long numberOfRows, const char32 *columnNames);
+autoTable Table_createWithColumnNames (long numberOfRows, const char32 *columnNames);
 void Table_initWithoutColumnNames (Table me, long numberOfRows, long numberOfColumns);
-Table Table_createWithoutColumnNames (long numberOfRows, long numberOfColumns);
+autoTable Table_createWithoutColumnNames (long numberOfRows, long numberOfColumns);
 #define Table_create Table_createWithoutColumnNames
 
-Table Tables_append (Collection me);
+autoTable Tables_append (OrderedOf<structTable>* me);
 void Table_appendRow (Table me);
 void Table_appendColumn (Table me, const char32 *label);
 void Table_appendSumColumn (Table me, long column1, long column2, const char32 *label);
@@ -45,10 +42,10 @@ void Table_removeColumn (Table me, long column);
 void Table_insertRow (Table me, long row);
 void Table_insertColumn (Table me, long column, const char32 *label /* cattable */);
 void Table_setColumnLabel (Table me, long column, const char32 *label /* cattable */);
-long Table_findColumnIndexFromColumnLabel (Table me, const char32 *label);
+long Table_findColumnIndexFromColumnLabel (Table me, const char32 *label) noexcept;
 long Table_getColumnIndexFromColumnLabel (Table me, const char32 *columnLabel);
 long * Table_getColumnIndicesFromColumnLabelString (Table me, const char32 *string, long *numberOfTokens);
-long Table_searchColumn (Table me, long column, const char32 *value);
+long Table_searchColumn (Table me, long column, const char32 *value) noexcept;
 
 /*
  * Procedure for reading strings or numbers from table cells:
@@ -97,8 +94,8 @@ void Table_formula_columnRange (Table me, long column1, long column2, const char
 
 void Table_sortRows_Assert (Table me, long *columns, long numberOfColumns);
 void Table_sortRows_string (Table me, const char32 *columns_string);
-void Table_randomizeRows (Table me);
-void Table_reflectRows (Table me);
+void Table_randomizeRows (Table me) noexcept;
+void Table_reflectRows (Table me) noexcept;
 
 void Table_scatterPlot (Table me, Graphics g, long xcolumn, long ycolumn,
 	double xmin, double xmax, double ymin, double ymax, long markColumn, int fontSize, int garnish);
@@ -110,16 +107,16 @@ void Table_drawEllipse_e (Table me, Graphics g, long xcolumn, long ycolumn,
 void Table_list (Table me, bool includeRowNumbers);
 void Table_writeToTabSeparatedFile (Table me, MelderFile file);
 void Table_writeToCommaSeparatedFile (Table me, MelderFile file);
-Table Table_readFromTableFile (MelderFile file);
-Table Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separator);
+autoTable Table_readFromTableFile (MelderFile file);
+autoTable Table_readFromCharacterSeparatedTextFile (MelderFile file, char32 separator);
 
-Table Table_extractRowsWhereColumn_number (Table me, long column, int which_Melder_NUMBER, double criterion);
-Table Table_extractRowsWhereColumn_string (Table me, long column, int which_Melder_STRING, const char32 *criterion);
-Table Table_collapseRows (Table me, const char32 *factors_string, const char32 *columnsToSum_string,
+autoTable Table_extractRowsWhereColumn_number (Table me, long column, int which_Melder_NUMBER, double criterion);
+autoTable Table_extractRowsWhereColumn_string (Table me, long column, int which_Melder_STRING, const char32 *criterion);
+autoTable Table_collapseRows (Table me, const char32 *factors_string, const char32 *columnsToSum_string,
 	const char32 *columnsToAverage_string, const char32 *columnsToMedianize_string,
 	const char32 *columnsToAverageLogarithmically_string, const char32 *columnsToMedianizeLogarithmically_string);
-Table Table_rowsToColumns (Table me, const char32 *factors_string, long columnToTranspose, const char32 *columnsToExpand_string);
-Table Table_transpose (Table me);
+autoTable Table_rowsToColumns (Table me, const char32 *factors_string, long columnToTranspose, const char32 *columnsToExpand_string);
+autoTable Table_transpose (Table me);
 
 void Table_checkSpecifiedRowNumberWithinRange (Table me, long rowNumber);
 void Table_checkSpecifiedColumnNumberWithinRange (Table me, long columnNumber);
diff --git a/stat/TableEditor.cpp b/stat/TableEditor.cpp
index 7315102..749a148 100644
--- a/stat/TableEditor.cpp
+++ b/stat/TableEditor.cpp
@@ -1,20 +1,19 @@
 /* TableEditor.cpp
  *
- * Copyright (C) 2006-2011,2013,2015 Paul Boersma
+ * Copyright (C) 2006-2011,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TableEditor.h"
@@ -23,18 +22,30 @@
 
 Thing_implement (TableEditor, Editor, 0);
 
+#include "prefs_define.h"
+#include "TableEditor_prefs.h"
+#include "prefs_install.h"
+#include "TableEditor_prefs.h"
+#include "prefs_copyToInstance.h"
+#include "TableEditor_prefs.h"
+
 #define SIZE_INCHES  40
 
 /********** EDITOR METHODS **********/
 
-void structTableEditor :: v_destroy () {
-	forget (graphics);
+void structTableEditor :: v_destroy () noexcept {
 	TableEditor_Parent :: v_destroy ();
 }
 
+void structTableEditor :: v_info () {
+	our TableEditor_Parent :: v_info ();
+	MelderInfo_writeLine (U"Table uses text styles: ", our p_useTextStyles);
+	//MelderInfo_writeLine (U"Table font size: ", our p_fontSize);
+}
+
 static void updateVerticalScrollBar (TableEditor me) {
 	Table table = static_cast<Table> (my data);
-	GuiScrollBar_set (my verticalScrollBar, NUMundefined, table -> rows -> size + 1, my topRow, NUMundefined, NUMundefined, NUMundefined);
+	GuiScrollBar_set (my verticalScrollBar, NUMundefined, table -> rows.size + 1, my topRow, NUMundefined, NUMundefined, NUMundefined);
 }
 
 static void updateHorizontalScrollBar (TableEditor me) {
@@ -43,34 +54,42 @@ static void updateHorizontalScrollBar (TableEditor me) {
 }
 
 void structTableEditor :: v_dataChanged () {
-	Table table = static_cast<Table> (data);
-	if (topRow > table -> rows -> size) topRow = table -> rows -> size;
+	Table table = static_cast<Table> (our data);
+	if (topRow > table -> rows.size) topRow = table -> rows.size;
 	if (leftColumn > table -> numberOfColumns) leftColumn = table -> numberOfColumns;
 	updateVerticalScrollBar (this);
 	updateHorizontalScrollBar (this);
-	Graphics_updateWs (graphics);
+	Graphics_updateWs (our graphics.get());
 }
 
 /********** FILE MENU **********/
 
+static void menu_cb_preferences (TableEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"TableEditor preferences", nullptr);
+		OPTIONMENU (U"The symbols %#_^ in labels", my default_useTextStyles () + 1)
+			OPTION (U"are shown as typed")
+			OPTION (U"mean italic/bold/sub/super")
+	EDITOR_OK
+		SET_INTEGER (U"The symbols %#_^ in labels", my p_useTextStyles + 1)
+	EDITOR_DO
+		my pref_useTextStyles () = my p_useTextStyles = GET_INTEGER (U"The symbols %#_^ in labels") - 1;
+		Graphics_updateWs (my graphics.get());
+	EDITOR_END
+}
 
 /********** EDIT MENU **********/
 
 #ifndef macintosh
-static void menu_cb_Cut (EDITOR_ARGS) {   // BUG: why only on Mac?
-	EDITOR_IAM (TableEditor);
+static void menu_cb_Cut (TableEditor me, EDITOR_ARGS_DIRECT) {   // BUG: why only on Mac?
 	GuiText_cut (my text);
 }
-static void menu_cb_Copy (EDITOR_ARGS) {
-	EDITOR_IAM (TableEditor);
+static void menu_cb_Copy (TableEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_copy (my text);
 }
-static void menu_cb_Paste (EDITOR_ARGS) {
-	EDITOR_IAM (TableEditor);
+static void menu_cb_Paste (TableEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_paste (my text);
 }
-static void menu_cb_Erase (EDITOR_ARGS) {
-	EDITOR_IAM (TableEditor);
+static void menu_cb_Erase (TableEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_remove (my text);
 }
 #endif
@@ -79,8 +98,7 @@ static void menu_cb_Erase (EDITOR_ARGS) {
 
 /********** HELP MENU **********/
 
-static void menu_cb_TableEditorHelp (EDITOR_ARGS) {
-	EDITOR_IAM (TableEditor);
+static void menu_cb_TableEditorHelp (TableEditor, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"TableEditor");
 }
 
@@ -95,54 +113,61 @@ void structTableEditor :: v_draw () {
 	 */
 	long rowmin = topRow, rowmax = rowmin + 197;
 	long colmin = leftColumn, colmax = colmin + (kTableEditor_MAXNUM_VISIBLE_COLUMNS - 1);
-	if (rowmax > table -> rows -> size) rowmax = table -> rows -> size;
+	if (rowmax > table -> rows.size) rowmax = table -> rows.size;
 	if (colmax > table -> numberOfColumns) colmax = table -> numberOfColumns;
-	Graphics_clearWs (graphics);
-	Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_HALF);
-	Graphics_setWindow (graphics, 0.0, 1.0, rowmin + 197.5, rowmin - 2.5);
-	Graphics_setColour (graphics, Graphics_SILVER);
-	Graphics_fillRectangle (graphics, 0.0, 1.0, rowmin - 2.5, rowmin - 0.5);
-	Graphics_setColour (graphics, Graphics_BLACK);
-	Graphics_line (graphics, 0.0, rowmin - 0.5, 1.0, rowmin - 0.5);
-	Graphics_setWindow (graphics, 0.0, Graphics_dxWCtoMM (graphics, 1.0), rowmin + 197.5, rowmin - 2.5);
+	Graphics_clearWs (graphics.get());
+	Graphics_setTextAlignment (graphics.get(), Graphics_CENTRE, Graphics_HALF);
+	Graphics_setWindow (graphics.get(), 0.0, 1.0, rowmin + 197.5, rowmin - 2.5);
+	Graphics_setColour (graphics.get(), Graphics_SILVER);
+	Graphics_fillRectangle (graphics.get(), 0.0, 1.0, rowmin - 2.5, rowmin - 0.5);
+	Graphics_setColour (graphics.get(), Graphics_BLACK);
+	Graphics_line (graphics.get(), 0.0, rowmin - 0.5, 1.0, rowmin - 0.5);
+	Graphics_setWindow (graphics.get(), 0.0, Graphics_dxWCtoMM (graphics.get(), 1.0), rowmin + 197.5, rowmin - 2.5);
 	/*
 	 * Determine the width of the column with the row numbers.
 	 */
-	columnWidth = Graphics_textWidth (graphics, U"row");
+	columnWidth = Graphics_textWidth (graphics.get(), U"row");
 	for (long irow = rowmin; irow <= rowmax; irow ++) {
-		cellWidth = Graphics_textWidth (graphics, Melder_integer (irow));
+		cellWidth = Graphics_textWidth (graphics.get(), Melder_integer (irow));
 		if (cellWidth > columnWidth) columnWidth = cellWidth;
 	}
 	columnLeft [0] = columnWidth + 2 * spacing;
-	Graphics_setColour (graphics, Graphics_SILVER);
-	Graphics_fillRectangle (graphics, 0.0, columnLeft [0], rowmin - 0.5, rowmin + 197.5);
-	Graphics_setColour (graphics, Graphics_BLACK);
-	Graphics_line (graphics, columnLeft [0], rowmin - 0.5, columnLeft [0], rowmin + 197.5);
+	Graphics_setColour (graphics.get(), Graphics_SILVER);
+	Graphics_fillRectangle (graphics.get(), 0.0, columnLeft [0], rowmin - 0.5, rowmin + 197.5);
+	Graphics_setColour (graphics.get(), Graphics_BLACK);
+	Graphics_line (graphics.get(), columnLeft [0], rowmin - 0.5, columnLeft [0], rowmin + 197.5);
 	/*
 	 * Determine the width of the columns.
 	 */
 	for (long icol = colmin; icol <= colmax; icol ++) {
 		const char32 *columnLabel = table -> columnHeaders [icol]. label;
-		columnWidth = Graphics_textWidth (graphics, Melder_integer (icol));
-		if (columnLabel == NULL) columnLabel = U"";
-		cellWidth = Graphics_textWidth (graphics, columnLabel);
+		columnWidth = Graphics_textWidth (graphics.get(), Melder_integer (icol));
+		if (! columnLabel) columnLabel = U"";
+		cellWidth = Graphics_textWidth (graphics.get(), columnLabel);
 		if (cellWidth > columnWidth) columnWidth = cellWidth;
 		for (long irow = rowmin; irow <= rowmax; irow ++) {
 			const char32 *cell = Table_getStringValue_Assert (table, irow, icol);
-			Melder_assert (cell != NULL);
+			Melder_assert (cell);
 			if (cell [0] == U'\0') cell = U"?";
-			cellWidth = Graphics_textWidth (graphics, cell);
+			cellWidth = Graphics_textWidth (graphics.get(), cell);
 			if (cellWidth > columnWidth) columnWidth = cellWidth;
 		}
 		columnRight [icol - colmin] = columnLeft [icol - colmin] + columnWidth + 2 * spacing;
 		if (icol < colmax) columnLeft [icol - colmin + 1] = columnRight [icol - colmin];
 	}
 	/*
+		Text can be "graphic" or not.
+	*/
+	Graphics_setPercentSignIsItalic (our graphics.get(), our p_useTextStyles);
+	Graphics_setNumberSignIsBold (our graphics.get(), our p_useTextStyles);
+	Graphics_setCircumflexIsSuperscript (our graphics.get(), our p_useTextStyles);
+	Graphics_setUnderscoreIsSubscript (our graphics.get(), our p_useTextStyles);
+	/*
 	 * Show the row numbers.
 	 */
-	Graphics_text (graphics, columnLeft [0] / 2, rowmin - 1, U"row");
+	Graphics_text (graphics.get(), columnLeft [0] / 2, rowmin - 1, U"row");
 	for (long irow = rowmin; irow <= rowmax; irow ++) {
-		Graphics_text (graphics, columnLeft [0] / 2, irow, irow);
+		Graphics_text (graphics.get(), columnLeft [0] / 2, irow, irow);
 	}
 	/*
 	 * Show the column labels.
@@ -150,9 +175,9 @@ void structTableEditor :: v_draw () {
 	for (long icol = colmin; icol <= colmax; icol ++) {
 		double mid = (columnLeft [icol - colmin] + columnRight [icol - colmin]) / 2;
 		const char32 *columnLabel = table -> columnHeaders [icol]. label;
-		if (columnLabel == NULL || columnLabel [0] == U'\0') columnLabel = U"?";
-		Graphics_text (graphics, mid, rowmin - 2, icol);
-		Graphics_text (graphics, mid, rowmin - 1, columnLabel);
+		if (! columnLabel || columnLabel [0] == U'\0') columnLabel = U"?";
+		Graphics_text (graphics.get(), mid, rowmin - 2, icol);
+		Graphics_text (graphics.get(), mid, rowmin - 1, columnLabel);
 	}
 	/*
 	 * Show the cell contents.
@@ -161,69 +186,60 @@ void structTableEditor :: v_draw () {
 		for (long icol = colmin; icol <= colmax; icol ++) {
 			double mid = (columnLeft [icol - colmin] + columnRight [icol - colmin]) / 2;
 			const char32 *cell = Table_getStringValue_Assert (table, irow, icol);
-			Melder_assert (cell != NULL);
+			Melder_assert (cell);
 			if (cell [0] == U'\0') cell = U"?";
-			Graphics_text (graphics, mid, irow, cell);
+			Graphics_text (graphics.get(), mid, irow, cell);
 		}
 	}
 }
 
-int structTableEditor :: v_click (double xclick, double yWC, bool shiftKeyPressed) {
-	Table table = static_cast<Table> (data);
-	return 1;
+bool structTableEditor :: v_click (double xclick, double yWC, bool shiftKeyPressed) {
+	Table table = static_cast<Table> (our data);
+	return true;
 }
 
-static void gui_text_cb_change (I, GuiTextEvent event) {
-	iam (TableEditor);
-	(void) event;
-	Table table = static_cast<Table> (my data);
+static void gui_text_cb_changed (TableEditor me, GuiTextEvent /* event */) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (TableEditor);
-	(void) event;
-	if (my graphics == NULL) return;
+static void gui_drawingarea_cb_expose (TableEditor me, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! my graphics) return;
 	my v_draw ();
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (TableEditor);
-	if (my graphics == NULL) return;
+static void gui_drawingarea_cb_click (TableEditor me, GuiDrawingArea_ClickEvent event) {
+	if (! my graphics) return;
 	double xWC, yWC;
-	Graphics_DCtoWC (my graphics, event -> x, event -> y, & xWC, & yWC);
+	Graphics_DCtoWC (my graphics.get(), event -> x, event -> y, & xWC, & yWC);
 	// TODO: implement selection
 }
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (TableEditor);
-	if (my graphics == NULL) return;
-	Graphics_updateWs (my graphics);
+static void gui_drawingarea_cb_resize (TableEditor me, GuiDrawingArea_ResizeEvent /* event */) {
+	if (! my graphics) return;
+	Graphics_updateWs (my graphics.get());
 }
 
-static void gui_cb_scrollHorizontal (I, GuiScrollBarEvent event) {
-	iam (TableEditor);
+static void gui_cb_scrollHorizontal (TableEditor me, GuiScrollBarEvent event) {
 	int value = GuiScrollBar_getValue (event -> scrollBar);
 	if (value != my leftColumn) {
 		my leftColumn = value;
 		#if cocoa || gtk || win
-			Graphics_updateWs (my graphics);   // wait for expose event
+			Graphics_updateWs (my graphics.get());   // wait for expose event
 		#else
-			Graphics_clearWs (my graphics);
+			Graphics_clearWs (my graphics.get());
 			my v_draw ();   // do not wait for expose event
 		#endif
 	}
 }
 
-static void gui_cb_scrollVertical (I, GuiScrollBarEvent event) {
-	iam (TableEditor);
+static void gui_cb_scrollVertical (TableEditor me, GuiScrollBarEvent event) {
 	int value = GuiScrollBar_getValue (event -> scrollBar);
 	if (value != my topRow) {
 		my topRow = value;
 		#if cocoa || gtk || win
-			Graphics_updateWs (my graphics);   // wait for expose event
+			Graphics_updateWs (my graphics.get());   // wait for expose event
 		#else
-			Graphics_clearWs (my graphics);
+			Graphics_clearWs (my graphics.get());
 			my v_draw ();   // do not wait for expose event
 		#endif
 	}
@@ -234,14 +250,14 @@ void structTableEditor :: v_createChildren () {
 	int y = Machine_getMenuBarHeight () + 4, scrollWidth = Machine_getScrollBarWidth ();
 
 	our text = GuiText_createShown (our d_windowForm, 0, 0, y, y + Machine_getTextHeight (), 0);
-	GuiText_setChangeCallback (our text, gui_text_cb_change, this);
+	GuiText_setChangedCallback (our text, gui_text_cb_changed, this);
 	y += Machine_getTextHeight () + 4;
 
 	our drawingArea = GuiDrawingArea_createShown (our d_windowForm, 0, - scrollWidth, y, - scrollWidth,
 		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, gui_drawingarea_cb_resize, this, 0);
 
 	our verticalScrollBar = GuiScrollBar_createShown (our d_windowForm, - scrollWidth, 0, y, - scrollWidth,
-		1, table -> rows -> size + 1, 1, 1, 1, 10, gui_cb_scrollVertical, this, 0);
+		1, table -> rows.size + 1, 1, 1, 1, 10, gui_cb_scrollVertical, this, 0);
 
 	our horizontalScrollBar = GuiScrollBar_createShown (our d_windowForm, 0, - scrollWidth, - scrollWidth, 0,
 		1, table -> numberOfColumns + 1, 1, 1, 1, 3, gui_cb_scrollHorizontal, this, GuiScrollBar_HORIZONTAL);
@@ -252,8 +268,11 @@ void structTableEditor :: v_createChildren () {
 void structTableEditor :: v_createMenus () {
 	TableEditor_Parent :: v_createMenus ();
 
+	Editor_addCommand (this, U"File", U"Preferences...", 0, menu_cb_preferences);
+	Editor_addCommand (this, U"File", U"-- before scripting --", 0, nullptr);
+
 	#ifndef macintosh
-	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Cut text", 'X', menu_cb_Cut);
 	Editor_addCommand (this, U"Edit", U"Cut", Editor_HIDDEN, menu_cb_Cut);
 	Editor_addCommand (this, U"Edit", U"Copy text", 'C', menu_cb_Copy);
@@ -270,10 +289,10 @@ void structTableEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"TableEditor help", U'?', menu_cb_TableEditorHelp);
 }
 
-TableEditor TableEditor_create (const char32 *title, Table table) {
+autoTableEditor TableEditor_create (const char32 *title, Table table) {
 	try {
 		autoTableEditor me = Thing_new (TableEditor);
-		Editor_init (me.peek(), 0, 0, 700, 500, title, table);
+		Editor_init (me.get(), 0, 0, 700, 500, title, table);
 		#if motif
 		Melder_assert (XtWindow (my drawingArea -> d_widget));
 		#endif
@@ -282,15 +301,15 @@ TableEditor TableEditor_create (const char32 *title, Table table) {
 		my selectedColumn = 1;
 		my selectedRow = 1;
 		my graphics = Graphics_create_xmdrawingarea (my drawingArea);
-		double size_pixels = SIZE_INCHES * Graphics_getResolution (my graphics);
-		Graphics_setWsViewport (my graphics, 0, size_pixels, 0, size_pixels);
-		Graphics_setWsWindow (my graphics, 0, size_pixels, 0, size_pixels);
-		Graphics_setViewport (my graphics, 0, size_pixels, 0, size_pixels);
-		Graphics_setFont (my graphics, kGraphics_font_COURIER);
-		Graphics_setFontSize (my graphics, 12);
-		Graphics_setUnderscoreIsSubscript (my graphics, FALSE);
-		Graphics_setAtSignIsLink (my graphics, TRUE);
-		return me.transfer();
+		double size_pixels = SIZE_INCHES * Graphics_getResolution (my graphics.get());
+		Graphics_setWsViewport (my graphics.get(), 0.0, size_pixels, 0.0, size_pixels);
+		Graphics_setWsWindow (my graphics.get(), 0.0, size_pixels, 0.0, size_pixels);
+		Graphics_setViewport (my graphics.get(), 0.0, size_pixels, 0.0, size_pixels);
+		Graphics_setFont (my graphics.get(), kGraphics_font_COURIER);
+		Graphics_setFontSize (my graphics.get(), 12);
+		Graphics_setUnderscoreIsSubscript (my graphics.get(), false);
+		Graphics_setAtSignIsLink (my graphics.get(), true);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TableEditor not created.");
 	}
diff --git a/stat/TableEditor.h b/stat/TableEditor.h
index bd0dc92..555eb81 100644
--- a/stat/TableEditor.h
+++ b/stat/TableEditor.h
@@ -2,21 +2,20 @@
 #define _TableEditor_h_
 /* TableEditor.h
  *
- * Copyright (C) 2006-2011,2012,2015 Paul Boersma
+ * Copyright (C) 2006-2011,2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -30,9 +29,11 @@ Thing_define (TableEditor, Editor) {
 	GuiDrawingArea drawingArea;
 	GuiScrollBar horizontalScrollBar, verticalScrollBar;
 	double columnLeft [kTableEditor_MAXNUM_VISIBLE_COLUMNS], columnRight [kTableEditor_MAXNUM_VISIBLE_COLUMNS];
-	Graphics graphics;
+	autoGraphics graphics;
 
-	void v_destroy ()
+	void v_destroy () noexcept
+		override;
+	void v_info ()
 		override;
 	void v_createChildren ()
 		override;
@@ -44,10 +45,12 @@ Thing_define (TableEditor, Editor) {
 		override;
 
 	virtual void v_draw ();
-	virtual int v_click (double xWC, double yWC, bool shiftKeyPressed);
+	virtual bool v_click (double xWC, double yWC, bool shiftKeyPressed);
+
+	#include "TableEditor_prefs.h"
 };
 
-TableEditor TableEditor_create (const char32 *title, Table table);
+autoTableEditor TableEditor_create (const char32 *title, Table table);
 
 /* End of file TableEditor.h */
 #endif
diff --git a/sys/winport_off.h b/stat/TableEditor_prefs.h
similarity index 50%
copy from sys/winport_off.h
copy to stat/TableEditor_prefs.h
index adc6aef..4eb63bc 100644
--- a/sys/winport_off.h
+++ b/stat/TableEditor_prefs.h
@@ -1,24 +1,25 @@
-/* winport_off.h
+/* TableEditor_prefs.h
  *
- * Copyright (C) 2011 Paul Boersma
+ * Copyright (C) 2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#undef Graphics
-#undef Data
-#undef Polygon
+prefs_begin (TableEditor)
 
-/* End of file winport_off.h */
+	prefs_add_bool_with_data   (TableEditor, useTextStyles,          1, false)
+
+prefs_end (TableEditor)
+
+/* End of file TableEditor_prefs.h */
diff --git a/stat/TableOfReal.cpp b/stat/TableOfReal.cpp
index 1383b65..6989604 100644
--- a/stat/TableOfReal.cpp
+++ b/stat/TableOfReal.cpp
@@ -1,20 +1,19 @@
 /* TableOfReal.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -38,6 +37,9 @@
 #include "oo_DESCRIPTION.h"
 #include "TableOfReal_def.h"
 
+Thing_implement (TableOfReal, Daata, 0);
+Thing_implement (TableOfRealList, Ordered, 0);
+
 static void fprintquotedstring (MelderFile file, const char32 *s) {
 	MelderFile_writeCharacter (file, U'\"');
 	if (s) { char32 c; while ((c = *s ++) != U'\0') { MelderFile_writeCharacter (file, c); if (c == U'\"') MelderFile_writeCharacter (file, c); } }
@@ -86,17 +88,17 @@ void structTableOfReal :: v_readText (MelderReadText a_text, int /*formatVersion
 }
 
 void structTableOfReal :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of rows: ", numberOfRows);
 	MelderInfo_writeLine (U"Number of columns: ", numberOfColumns);
 }
 
 const char32 * structTableOfReal :: v_getRowStr (long irow) {
-	if (irow < 1 || irow > numberOfRows) return NULL;
+	if (irow < 1 || irow > numberOfRows) return nullptr;
 	return rowLabels [irow] ? rowLabels [irow] : U"";
 }
 const char32 * structTableOfReal :: v_getColStr (long icol) {
-	if (icol < 1 || icol > numberOfColumns) return NULL;
+	if (icol < 1 || icol > numberOfColumns) return nullptr;
 	return columnLabels [icol] ? columnLabels [icol] : U"";
 }
 double structTableOfReal :: v_getMatrix (long irow, long icol) {
@@ -111,8 +113,6 @@ double structTableOfReal :: v_getColIndex (const char32 *columnLabel) {
 	return TableOfReal_columnLabelToIndex (this, columnLabel);
 }
 
-Thing_implement (TableOfReal, Data, 0);
-
 void TableOfReal_init (TableOfReal me, long numberOfRows, long numberOfColumns) {
 	if (numberOfRows < 1 || numberOfColumns < 1)
 		Melder_throw (U"Cannot create cell-less table.");
@@ -123,11 +123,11 @@ void TableOfReal_init (TableOfReal me, long numberOfRows, long numberOfColumns)
 	my data = NUMmatrix <double> (1, my numberOfRows, 1, my numberOfColumns);
 }
 
-TableOfReal TableOfReal_create (long numberOfRows, long numberOfColumns) {
+autoTableOfReal TableOfReal_create (long numberOfRows, long numberOfColumns) {
 	try {
 		autoTableOfReal me = Thing_new (TableOfReal);
-		TableOfReal_init (me.peek(), numberOfRows, numberOfColumns);
-		return me.transfer();
+		TableOfReal_init (me.get(), numberOfRows, numberOfColumns);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal not created.");
 	}
@@ -309,8 +309,8 @@ void TableOfReal_setColumnLabel (TableOfReal me, long columnNumber, const char32
 
 void TableOfReal_formula (TableOfReal me, const char32 *expression, Interpreter interpreter, TableOfReal thee) {
 	try {
-		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
-		if (thee == NULL) thee = me;
+		Formula_compile (interpreter, me, expression, kFormula_EXPRESSION_TYPE_NUMERIC, true);
+		if (! thee) thee = me;
 		for (long irow = 1; irow <= my numberOfRows; irow ++) {
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 				struct Formula_Result result;
@@ -359,7 +359,7 @@ static void copyColumn (TableOfReal me, long myCol, TableOfReal thee, long thyCo
 	}
 }
 
-TableOfReal TableOfReal_extractRowsWhereColumn (TableOfReal me, long column, int which_Melder_NUMBER, double criterion) {
+autoTableOfReal TableOfReal_extractRowsWhereColumn (TableOfReal me, long column, int which_Melder_NUMBER, double criterion) {
 	try {
 		if (column < 1 || column > my numberOfColumns)
 			Melder_throw (U"No such column: ", column, U".");
@@ -371,18 +371,18 @@ TableOfReal TableOfReal_extractRowsWhereColumn (TableOfReal me, long column, int
 		}
 		if (n == 0) Melder_throw (U"No row matches this criterion.");
 		autoTableOfReal thee = TableOfReal_create (n, my numberOfColumns);
-		copyColumnLabels (me, thee.peek());
+		copyColumnLabels (me, thee.get());
 		n = 0;
 		for (long irow = 1; irow <= my numberOfRows; irow ++)
 			if (Melder_numberMatchesCriterion (my data [irow] [column], which_Melder_NUMBER, criterion))
-				copyRow (me, irow, thee.peek(), ++ n);
-		return thee.transfer();
+				copyRow (me, irow, thee.get(), ++ n);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rows not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractRowsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion) {
+autoTableOfReal TableOfReal_extractRowsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		long n = 0;
 		for (long irow = 1; irow <= my numberOfRows; irow ++) {
@@ -393,18 +393,18 @@ TableOfReal TableOfReal_extractRowsWhereLabel (TableOfReal me, int which_Melder_
 		if (n == 0)
 			Melder_throw (U"No row matches this criterion.");
 		autoTableOfReal thee = TableOfReal_create (n, my numberOfColumns);
-		copyColumnLabels (me, thee.peek());
+		copyColumnLabels (me, thee.get());
 		n = 0;
 		for (long irow = 1; irow <= my numberOfRows; irow ++)
 			if (Melder_stringMatchesCriterion (my rowLabels [irow], which_Melder_STRING, criterion))
-				copyRow (me, irow, thee.peek(), ++ n);
-		return thee.transfer();
+				copyRow (me, irow, thee.get(), ++ n);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rows not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long row, int which_Melder_NUMBER, double criterion) {
+autoTableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long row, int which_Melder_NUMBER, double criterion) {
 	try {
 		if (row < 1 || row > my numberOfRows)
 			Melder_throw (U"No such row: ", row, U".");
@@ -417,18 +417,18 @@ TableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long row, int wh
 		if (n == 0) Melder_throw (U"No column matches this criterion.");
 
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, n);
-		copyRowLabels (me, thee.peek());
+		copyRowLabels (me, thee.get());
 		n = 0;
 		for (long icol = 1; icol <= my numberOfColumns; icol ++)
 			if (Melder_numberMatchesCriterion (my data [row] [icol], which_Melder_NUMBER, criterion))
-				copyColumn (me, icol, thee.peek(), ++ n);
-		return thee.transfer();
+				copyColumn (me, icol, thee.get(), ++ n);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": columns not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion) {
+autoTableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion) {
 	try {
 		long n = 0;
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
@@ -439,14 +439,14 @@ TableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Meld
 		if (n == 0) Melder_throw (U"No column matches this criterion.");
 
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, n);
-		copyRowLabels (me, thee.peek());
+		copyRowLabels (me, thee.get());
 		n = 0;
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			if (Melder_stringMatchesCriterion (my columnLabels [icol], which_Melder_STRING, criterion)) {
-				copyColumn (me, icol, thee.peek(), ++ n);
+				copyColumn (me, icol, thee.get(), ++ n);
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": columns not extracted.");
 	}
@@ -537,37 +537,37 @@ static long *getElementsOfRanges (const char32 *ranges, long maximumElement, lon
 	return elements.transfer();
 }
 
-TableOfReal TableOfReal_extractRowRanges (TableOfReal me, const char32 *ranges) {
+autoTableOfReal TableOfReal_extractRowRanges (TableOfReal me, const char32 *ranges) {
 	try {
 		long numberOfElements;
 		autoNUMvector <long> elements (getElementsOfRanges (ranges, my numberOfRows, & numberOfElements, U"row"), 1);
 		autoTableOfReal thee = TableOfReal_create (numberOfElements, my numberOfColumns);
-		copyColumnLabels (me, thee.peek());
+		copyColumnLabels (me, thee.get());
 		for (long ielement = 1; ielement <= numberOfElements; ielement ++)
-			copyRow (me, elements [ielement], thee.peek(), ielement);
-		return thee.transfer();
+			copyRow (me, elements [ielement], thee.get(), ielement);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": row ranges not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractColumnRanges (TableOfReal me, const char32 *ranges) {
+autoTableOfReal TableOfReal_extractColumnRanges (TableOfReal me, const char32 *ranges) {
 	try {
 		long numberOfElements;
 		autoNUMvector <long> elements (getElementsOfRanges (ranges, my numberOfColumns, & numberOfElements, U"column"), 1);
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, numberOfElements);
-		copyRowLabels (me, thee.peek());
+		copyRowLabels (me, thee.get());
 		for (long ielement = 1; ielement <= numberOfElements; ielement ++)
-			copyColumn (me, elements [ielement], thee.peek(), ielement);
-		return thee.transfer();
+			copyColumn (me, elements [ielement], thee.get(), ielement);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": column ranges not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter) {
+autoTableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter) {
 	try {
-		Formula_compile (interpreter, me, condition, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
+		Formula_compile (interpreter, me, condition, kFormula_EXPRESSION_TYPE_NUMERIC, true);
 		/*
 		 * Count the new number of rows.
 		 */
@@ -588,7 +588,7 @@ TableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *conditio
 		 * Create room for the result.
 		 */	
 		autoTableOfReal thee = TableOfReal_create (numberOfElements, my numberOfColumns);
-		copyColumnLabels (me, thee.peek());
+		copyColumnLabels (me, thee.get());
 		/*
 		 * Store the result.
 		 */
@@ -598,20 +598,20 @@ TableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *conditio
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
 				if (result. result.numericResult != 0.0) {
-					copyRow (me, irow, thee.peek(), ++ numberOfElements);
+					copyRow (me, irow, thee.get(), ++ numberOfElements);
 					break;
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": rows not extracted.");
 	}
 }
 
-TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter) {
+autoTableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter) {
 	try {
-		Formula_compile (interpreter, me, condition, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
+		Formula_compile (interpreter, me, condition, kFormula_EXPRESSION_TYPE_NUMERIC, true);
 		/*
 		 * Count the new number of columns.
 		 */
@@ -632,7 +632,7 @@ TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condi
 		 * Create room for the result.
 		 */	
 		autoTableOfReal thee = TableOfReal_create (my numberOfRows, numberOfElements);
-		copyRowLabels (me, thee.peek());
+		copyRowLabels (me, thee.get());
 		/*
 		 * Store the result.
 		 */
@@ -642,12 +642,12 @@ TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condi
 				struct Formula_Result result;
 				Formula_run (irow, icol, & result);
 				if (result. result.numericResult != 0.0) {
-					copyColumn (me, icol, thee.peek(), ++ numberOfElements);
+					copyColumn (me, icol, thee.get(), ++ numberOfElements);
 					break;
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": columns not extracted.");
 	}
@@ -655,7 +655,7 @@ TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condi
 
 /***** EXTRACT *****/
 
-Strings TableOfReal_extractRowLabelsAsStrings (TableOfReal me) {
+autoStrings TableOfReal_extractRowLabelsAsStrings (TableOfReal me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector <char32 *> (1, my numberOfRows);
@@ -663,13 +663,13 @@ Strings TableOfReal_extractRowLabelsAsStrings (TableOfReal me) {
 		for (long irow = 1; irow <= my numberOfRows; irow ++) {
 			thy strings [irow] = Melder_dup (my rowLabels [irow] ? my rowLabels [irow] : U"");
 		}
-		return thee.transfer();	
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": row labels not extracted.");
 	}
 }
 
-Strings TableOfReal_extractColumnLabelsAsStrings (TableOfReal me) {
+autoStrings TableOfReal_extractColumnLabelsAsStrings (TableOfReal me) {
 	try {
 		autoStrings thee = Thing_new (Strings);
 		thy strings = NUMvector <char32 *> (1, my numberOfColumns);
@@ -677,7 +677,7 @@ Strings TableOfReal_extractColumnLabelsAsStrings (TableOfReal me) {
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			thy strings [icol] = Melder_dup (my columnLabels [icol] ? my columnLabels [icol] : U"");
 		}
-		return thee.transfer();	
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": column labels not extracted.");
 	}
@@ -731,16 +731,16 @@ static double getMaxRowLabelWidth (TableOfReal me, Graphics graphics, long rowmi
 	if (! my rowLabels) return 0.0;
 	fixRows (me, & rowmin, & rowmax);
 	for (long irow = rowmin; irow <= rowmax; irow ++) if (my rowLabels [irow] && my rowLabels [irow] [0]) {
-		double textWidth = Graphics_textWidth_ps (graphics, my rowLabels [irow], TRUE);   /* SILIPA is bigger than XIPA */
+		double textWidth = Graphics_textWidth_ps (graphics, my rowLabels [irow], true);   // SILIPA is bigger than XIPA
 		if (textWidth > maxWidth) maxWidth = textWidth;
 	}
 	return maxWidth;
 }
 static double getLeftMargin (Graphics graphics) {
-	return Graphics_dxMMtoWC (graphics, 1);
+	return Graphics_dxMMtoWC (graphics, 1.0);
 }
 static double getLineSpacing (Graphics graphics) {
-	return Graphics_dyMMtoWC (graphics, 1.5 * Graphics_inqFontSize (graphics) * 25.4 / 72);
+	return Graphics_dyMMtoWC (graphics, 1.5 * Graphics_inqFontSize (graphics) * 25.4 / 72.0);
 }
 static double getMaxColumnLabelHeight (TableOfReal me, Graphics graphics, long colmin, long colmax) {
 	double maxHeight = 0.0, lineSpacing = getLineSpacing (graphics);
@@ -755,7 +755,7 @@ static double getMaxColumnLabelHeight (TableOfReal me, Graphics graphics, long c
 void TableOfReal_drawAsNumbers (TableOfReal me, Graphics graphics, long rowmin, long rowmax, int iformat, int precision) {
 	fixRows (me, & rowmin, & rowmax);
 	Graphics_setInner (graphics);
-	Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0, 1);
+	Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0.0, 1.0);
 	double leftMargin = getLeftMargin (graphics);   // not earlier!
 	double lineSpacing = getLineSpacing (graphics);   // not earlier!
 	double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
@@ -781,7 +781,7 @@ void TableOfReal_drawAsNumbers (TableOfReal me, Graphics graphics, long rowmin,
 	if (maxTextHeight != 0.0) {
 		double left = 0.5;
 		if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * leftMargin;
-		Graphics_line (graphics, left, 1, my numberOfColumns + 0.5, 1);
+		Graphics_line (graphics, left, 1.0, my numberOfColumns + 0.5, 1.0);
 	}
 	Graphics_unsetInner (graphics);
 }
@@ -791,15 +791,15 @@ void TableOfReal_drawAsNumbers_if (TableOfReal me, Graphics graphics, long rowmi
 {
 	try {
 		autoMatrix original = TableOfReal_to_Matrix (me);
-		autoMatrix conditions = original.clone ();
+		autoMatrix conditions = Data_copy (original.get());
 		fixRows (me, & rowmin, & rowmax);
 		Graphics_setInner (graphics);
-		Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0, 1);
+		Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0.0, 1.0);
 		double leftMargin = getLeftMargin (graphics);   // not earlier!
 		double lineSpacing = getLineSpacing (graphics);   // not earlier!
 		double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
 		double maxTextHeight = getMaxColumnLabelHeight (me, graphics, 1, my numberOfColumns);
-		Matrix_formula (original.peek(), conditionFormula, interpreter, conditions.peek());
+		Matrix_formula (original.get(), conditionFormula, interpreter, conditions.get());
 
 		Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_BOTTOM);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
@@ -821,7 +821,7 @@ void TableOfReal_drawAsNumbers_if (TableOfReal me, Graphics graphics, long rowmi
 		if (maxTextHeight != 0.0) {
 			double left = 0.5;
 			if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * leftMargin;
-			Graphics_line (graphics, left, 1, my numberOfColumns + 0.5, 1);
+			Graphics_line (graphics, left, 1.0, my numberOfColumns + 0.5, 1.0);
 		}
 		Graphics_unsetInner (graphics);
 	} catch (MelderError) {
@@ -840,7 +840,7 @@ void TableOfReal_drawVerticalLines (TableOfReal me, Graphics graphics, long rowm
 
 	if (maxTextWidth > 0.0) colmin -= 1;
 	for (long col = colmin + 1; col <= colmax; col ++)
-		Graphics_line (graphics, col - 0.5, 1 + maxTextHeight, col - 0.5, 1 - lineSpacing * (rowmax - rowmin + 1));
+		Graphics_line (graphics, col - 0.5, 1.0 + maxTextHeight, col - 0.5, 1.0 - lineSpacing * (rowmax - rowmin + 1));
 	Graphics_unsetInner (graphics);
 }
 
@@ -848,16 +848,16 @@ void TableOfReal_drawLeftAndRightLines (TableOfReal me, Graphics graphics, long
 	long colmin = 1, colmax = my numberOfColumns;
 	fixRows (me, & rowmin, & rowmax);
 	Graphics_setInner (graphics);
-	Graphics_setWindow (graphics, colmin - 0.5, colmax + 0.5, 0, 1);
+	Graphics_setWindow (graphics, colmin - 0.5, colmax + 0.5, 0.0, 1.0);
 	double lineSpacing = getLineSpacing (graphics);
 	double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
 	double maxTextHeight = getMaxColumnLabelHeight (me, graphics, 1, my numberOfColumns);
 
 	double left = 0.5;
-	if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * lineSpacing;
+	if (maxTextWidth > 0.0) left -= maxTextWidth + 2.0 * lineSpacing;
 	double right = colmax + 0.5;
-	double top = 1 + maxTextHeight;
-	double bottom = 1 - lineSpacing * (rowmax - rowmin + 1);
+	double top = 1.0 + maxTextHeight;
+	double bottom = 1.0 - lineSpacing * (rowmax - rowmin + 1);
 	Graphics_line (graphics, left, top, left, bottom);
 	Graphics_line (graphics, right, top, right, bottom);
 	Graphics_unsetInner (graphics);
@@ -874,11 +874,11 @@ void TableOfReal_drawHorizontalLines (TableOfReal me, Graphics graphics, long ro
 
 	double left = 0.5;
 	double top = rowmin;
-	if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * lineSpacing;
+	if (maxTextWidth > 0.0) left -= maxTextWidth + 2.0 * lineSpacing;
 	if (maxTextHeight > 0.0) rowmin -= 1;
 	double right = colmax + 0.5;
 	for (long irow = rowmin; irow < rowmax; irow ++) {
-		double y = 1 - lineSpacing * (irow - top + 1);
+		double y = 1.0 - lineSpacing * (irow - top + 1);
 		Graphics_line (graphics, left, y, right, y);
 	}
 	Graphics_unsetInner (graphics);
@@ -888,7 +888,7 @@ void TableOfReal_drawTopAndBottomLines (TableOfReal me, Graphics graphics, long
 	long colmin = 1, colmax = my numberOfColumns;
 	fixRows (me, & rowmin, & rowmax);
 	Graphics_setInner (graphics);
-	Graphics_setWindow (graphics, colmin - 0.5, colmax + 0.5, 0, 1);
+	Graphics_setWindow (graphics, colmin - 0.5, colmax + 0.5, 0.0, 1.0);
 	double lineSpacing = getLineSpacing (graphics);
 	double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
 	double maxTextHeight = getMaxColumnLabelHeight (me, graphics, 1, my numberOfColumns);
@@ -896,8 +896,8 @@ void TableOfReal_drawTopAndBottomLines (TableOfReal me, Graphics graphics, long
 	double left = 0.5;
 	if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * lineSpacing;
 	double right = colmax + 0.5;
-	double top = 1 + maxTextHeight;
-	double bottom = 1 - lineSpacing * (rowmax - rowmin + 1);
+	double top = 1.0 + maxTextHeight;
+	double bottom = 1.0 - lineSpacing * (rowmax - rowmin + 1);
 	Graphics_line (graphics, left, top, right, top);
 	Graphics_line (graphics, left, bottom, right, bottom);
 	Graphics_unsetInner (graphics);
@@ -906,7 +906,7 @@ void TableOfReal_drawTopAndBottomLines (TableOfReal me, Graphics graphics, long
 void TableOfReal_drawAsSquares (TableOfReal me, Graphics graphics, long rowmin, long rowmax,
 	long colmin, long colmax, int garnish)
 {
-	double dx = 1, dy = 1;
+	double dx = 1.0, dy = 1.0;
 	Graphics_Colour colour = Graphics_inqColour (graphics);
 	fixRows (me, & rowmin, & rowmax);
 	fixColumns (me, & colmin, & colmax);
@@ -924,8 +924,8 @@ void TableOfReal_drawAsSquares (TableOfReal me, Graphics graphics, long rowmin,
 			double x = icol;
 			/* two neighbouring squares should not touch -> 0.95 */
 			double d = 0.95 * sqrt (fabs (my data [irow] [icol]) / datamax);
-			double x1WC = x - d * dx / 2, x2WC = x + d * dx / 2;
-			double y1WC = y - d * dy / 2, y2WC = y + d * dy / 2;
+			double x1WC = x - d * dx / 2.0, x2WC = x + d * dx / 2.0;
+			double y1WC = y - d * dy / 2.0, y2WC = y + d * dy / 2.0;
 			if (my data [irow] [icol] > 0) Graphics_setColour (graphics, Graphics_WHITE);
 			Graphics_fillRectangle (graphics, x1WC, x2WC, y1WC, y2WC);
 			Graphics_setColour (graphics, colour);
@@ -936,68 +936,68 @@ void TableOfReal_drawAsSquares (TableOfReal me, Graphics graphics, long rowmin,
 	Graphics_unsetInner (graphics);
 	if (garnish) {
 		for (long irow = rowmin; irow <= rowmax; irow ++) if (my rowLabels [irow]) 
-			Graphics_markLeft (graphics, rowmax + rowmin - irow, 0, 0, 0, my rowLabels [irow]);
+			Graphics_markLeft (graphics, rowmax + rowmin - irow, false, false, false, my rowLabels [irow]);
 		for (long icol = colmin; icol <= colmax; icol ++) if (my columnLabels [icol])
-			Graphics_markTop (graphics, icol, 0, 0, 0, my columnLabels [icol]);
+			Graphics_markTop (graphics, icol, false, false, false, my columnLabels [icol]);
 	}
 }
 
-Any TablesOfReal_append (TableOfReal me, TableOfReal thee) {
+autoTableOfReal TablesOfReal_append (TableOfReal me, TableOfReal thee) {
 	try {
 		if (thy numberOfColumns != my numberOfColumns)
 			Melder_throw (U"Numbers of columns are ", my numberOfColumns, U" and ", thy numberOfColumns, U" but should be equal.");
-		autoTableOfReal him = static_cast <TableOfReal> (Thing_newFromClass (my classInfo));
-		TableOfReal_init (him.peek(), my numberOfRows + thy numberOfRows, my numberOfColumns);
+		autoTableOfReal him = Thing_newFromClass (my classInfo).static_cast_move <structTableOfReal> ();
+		TableOfReal_init (him.get(), my numberOfRows + thy numberOfRows, my numberOfColumns);
 		/* Unsafe: new attributes not initialized. */
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
-			TableOfReal_setColumnLabel (him.peek(), icol, my columnLabels [icol]);
+			TableOfReal_setColumnLabel (him.get(), icol, my columnLabels [icol]);
 		}
 		for (long irow = 1; irow <= my numberOfRows; irow ++) {
-			TableOfReal_setRowLabel (him.peek(), irow, my rowLabels [irow]);
+			TableOfReal_setRowLabel (him.get(), irow, my rowLabels [irow]);
 			for (long icol = 1; icol <= my numberOfColumns; icol ++)
 				his data [irow] [icol] = my data [irow] [icol];
 		}
 		for (long irow = 1; irow <= thy numberOfRows; irow ++) {
 			long hisRow = irow + my numberOfRows;
-			TableOfReal_setRowLabel (him.peek(), hisRow, thy rowLabels [irow]);
+			TableOfReal_setRowLabel (him.get(), hisRow, thy rowLabels [irow]);
 			for (long icol = 1; icol <= my numberOfColumns; icol ++)
 				his data [hisRow] [icol] = thy data [irow] [icol];
 		}
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal objects not appended.");
 	}
 }
 
-Any TablesOfReal_appendMany (Collection me) {
+autoTableOfReal TablesOfReal_appendMany (OrderedOf<structTableOfReal>* me) {
 	try {
 		if (my size == 0) Melder_throw (U"Cannot add zero tables.");
-		TableOfReal thee = static_cast <TableOfReal> (my item [1]);
+		TableOfReal thee = my at [1];
 		long totalNumberOfRows = thy numberOfRows;
 		long numberOfColumns = thy numberOfColumns;
 		for (long itab = 2; itab <= my size; itab ++) {
-			thee = static_cast <TableOfReal> (my item [itab]);
+			thee = my at [itab];
 			totalNumberOfRows += thy numberOfRows;
 			if (thy numberOfColumns != numberOfColumns) Melder_throw (U"Numbers of columns do not match.");
 		}
-		autoTableOfReal him = static_cast <TableOfReal> (Thing_newFromClass (thy classInfo));
-		TableOfReal_init (him.peek(), totalNumberOfRows, numberOfColumns);
+		autoTableOfReal him = Thing_newFromClass (thy classInfo).static_cast_move <structTableOfReal> ();
+		TableOfReal_init (him.get(), totalNumberOfRows, numberOfColumns);
 		/* Unsafe: new attributes not initialized. */
 		for (long icol = 1; icol <= numberOfColumns; icol ++) {
-			TableOfReal_setColumnLabel (him.peek(), icol, thy columnLabels [icol]);
+			TableOfReal_setColumnLabel (him.get(), icol, thy columnLabels [icol]);
 		}
 		totalNumberOfRows = 0;
 		for (long itab = 1; itab <= my size; itab ++) {
-			thee = static_cast <TableOfReal> (my item [itab]);
+			thee = my at [itab];
 			for (long irow = 1; irow <= thy numberOfRows; irow ++) {
 				totalNumberOfRows ++;
-				TableOfReal_setRowLabel (him.peek(), totalNumberOfRows, thy rowLabels [irow]);
+				TableOfReal_setRowLabel (him.get(), totalNumberOfRows, thy rowLabels [irow]);
 				for (long icol = 1; icol <= numberOfColumns; icol ++)
 					his data [totalNumberOfRows] [icol] = thy data [irow] [icol];
 			}
 		}
 		Melder_assert (totalNumberOfRows == his numberOfRows);
-		return him.transfer();
+		return him;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal objects not appended.");
 	}
@@ -1007,16 +1007,16 @@ static void TableOfReal_sort (TableOfReal me, bool useLabels, long column1, long
 	for (long irow = 1; irow < my numberOfRows; irow ++) for (long jrow = irow + 1; jrow <= my numberOfRows; jrow ++) {
 		char32 *tmpString;
 		if (useLabels) {
-			if (my rowLabels [irow] != NULL) {
-				if (my rowLabels [jrow] != NULL) {
+			if (my rowLabels [irow]) {
+				if (my rowLabels [jrow]) {
 					int compare = str32cmp (my rowLabels [irow], my rowLabels [jrow]);
 					if (compare < 0) continue;
 					if (compare > 0) goto swap;
 				} else goto swap;
-			} else if (my rowLabels [jrow] != NULL) continue;
+			} else if (my rowLabels [jrow]) continue;
 		}
 		/*
-		 * If we arrive here, the two labels are equal or both NULL (or useLabels is FALSE).
+		 * If we arrive here, the two labels are equal or both null (or useLabels is `false`).
 		 */
 		if (column1 > 0 && column1 <= my numberOfColumns) {
 			if (my data [irow] [column1] < my data [jrow] [column1]) continue;
@@ -1050,24 +1050,24 @@ void TableOfReal_sortByColumn (TableOfReal me, long column1, long column2) {
 	TableOfReal_sort (me, false, column1, column2);
 }
 
-TableOfReal Table_to_TableOfReal (Table me, long labelColumn) {
+autoTableOfReal Table_to_TableOfReal (Table me, long labelColumn) {
 	try {
 		if (labelColumn < 1 || labelColumn > my numberOfColumns) labelColumn = 0;
-		autoTableOfReal thee = TableOfReal_create (my rows -> size, labelColumn ? my numberOfColumns - 1 : my numberOfColumns);
+		autoTableOfReal thee = TableOfReal_create (my rows.size, labelColumn ? my numberOfColumns - 1 : my numberOfColumns);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			Table_numericize_Assert (me, icol);
 		}
 		if (labelColumn) {
 			for (long icol = 1; icol < labelColumn; icol ++) {
-				TableOfReal_setColumnLabel (thee.peek(), icol, my columnHeaders [icol]. label);
+				TableOfReal_setColumnLabel (thee.get(), icol, my columnHeaders [icol]. label);
 			}
 			for (long icol = labelColumn + 1; icol <= my numberOfColumns; icol ++) {
-				TableOfReal_setColumnLabel (thee.peek(), icol - 1, my columnHeaders [icol]. label);
+				TableOfReal_setColumnLabel (thee.get(), icol - 1, my columnHeaders [icol]. label);
 			}
-			for (long irow = 1; irow <= my rows -> size; irow ++) {
-				TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			for (long irow = 1; irow <= my rows.size; irow ++) {
+				TableRow row = my rows.at [irow];
 				char32 *string = row -> cells [labelColumn]. string;
-				TableOfReal_setRowLabel (thee.peek(), irow, string ? string : U"");
+				TableOfReal_setRowLabel (thee.get(), irow, string ? string : U"");
 				for (long icol = 1; icol < labelColumn; icol ++) {
 					thy data [irow] [icol] = row -> cells [icol]. number;   // Optimization.
 					//thy data [irow] [icol] = Table_getNumericValue_Assert (me, irow, icol);
@@ -1079,40 +1079,40 @@ TableOfReal Table_to_TableOfReal (Table me, long labelColumn) {
 			}
 		} else {
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
-				TableOfReal_setColumnLabel (thee.peek(), icol, my columnHeaders [icol]. label);
+				TableOfReal_setColumnLabel (thee.get(), icol, my columnHeaders [icol]. label);
 			}
-			for (long irow = 1; irow <= my rows -> size; irow ++) {
-				TableRow row = static_cast <TableRow> (my rows -> item [irow]);
+			for (long irow = 1; irow <= my rows.size; irow ++) {
+				TableRow row = my rows.at [irow];
 				for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 					thy data [irow] [icol] = row -> cells [icol]. number;   // Optimization.
 					//thy data [irow] [icol] = Table_getNumericValue_Assert (me, irow, icol);
 				}
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to TableOfReal.");
 	}
 }
 
-Table TableOfReal_to_Table (TableOfReal me, const char32 *labelOfFirstColumn) {
+autoTable TableOfReal_to_Table (TableOfReal me, const char32 *labelOfFirstColumn) {
 	try {
 		autoTable thee = Table_createWithoutColumnNames (my numberOfRows, my numberOfColumns + 1);
-		Table_setColumnLabel (thee.peek(), 1, labelOfFirstColumn);
+		Table_setColumnLabel (thee.get(), 1, labelOfFirstColumn);
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			char32 *columnLabel = my columnLabels [icol];
 			thy columnHeaders [icol + 1]. label = Melder_dup (columnLabel && columnLabel [0] ? columnLabel : U"?");
 		}
-		for (long irow = 1; irow <= thy rows -> size; irow ++) {
+		for (long irow = 1; irow <= thy rows.size; irow ++) {
 			char32 *stringValue = my rowLabels [irow];
-			TableRow row = static_cast <TableRow> (thy rows -> item [irow]);
+			TableRow row = thy rows.at [irow];
 			row -> cells [1]. string = Melder_dup (stringValue && stringValue [0] ? stringValue : U"?");
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 				double numericValue = my data [irow] [icol];
 				row -> cells [icol + 1]. string = Melder_dup (Melder_double (numericValue));
 			}
 		}
-		return thee.transfer();
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not converted to Table.");
 	}
@@ -1125,12 +1125,12 @@ void TableOfReal_writeToHeaderlessSpreadsheetFile (TableOfReal me, MelderFile fi
 		for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 			MelderString_appendCharacter (& buffer, U'\t');
 			char32 *s = my columnLabels [icol];
-			MelderString_append (& buffer, s != NULL && s [0] != U'\0' ? s : U"?");
+			MelderString_append (& buffer, ( s && s [0] != U'\0' ? s : U"?" ));
 		}
 		MelderString_appendCharacter (& buffer, U'\n');
 		for (long irow = 1; irow <= my numberOfRows; irow ++) {
 			char32 *s = my rowLabels [irow];
-			MelderString_append (& buffer, s != NULL && s [0] != U'\0' ? s : U"?");
+			MelderString_append (& buffer, ( s && s [0] != U'\0' ? s : U"?" ));
 			for (long icol = 1; icol <= my numberOfColumns; icol ++) {
 				MelderString_appendCharacter (& buffer, U'\t');
 				double x = my data [irow] [icol];
@@ -1144,7 +1144,7 @@ void TableOfReal_writeToHeaderlessSpreadsheetFile (TableOfReal me, MelderFile fi
 	}
 }
 
-TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
+autoTableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
 	try {
 		autostring32 string = MelderFile_readText (file);
 		long nrow, ncol, nelements;
@@ -1156,11 +1156,11 @@ TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
 		char32 *p = & string [0];
 		for (;;) {
 			char32 kar = *p++;
-			if (kar == '\n' || kar == '\0') break;
-			if (kar == ' ' || kar == '\t') continue;
+			if (kar == U'\n' || kar == U'\0') break;
+			if (kar == U' ' || kar == U'\t') continue;
 			ncol ++;
-			do { kar = *p++; } while (kar != ' ' && kar != '\t' && kar != '\n' && kar != '\0');
-			if (kar == '\n' || kar == '\0') break;
+			do { kar = *p++; } while (kar != U' ' && kar != U'\t' && kar != U'\n' && kar != U'\0');
+			if (kar == U'\n' || kar == U'\0') break;
 		}
 		ncol --;
 		if (ncol < 1) Melder_throw (U"No columns.");
@@ -1205,7 +1205,7 @@ TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
 				MelderString_appendCharacter (& buffer, *p);
 				p ++;
 			}
-			TableOfReal_setColumnLabel (me.peek(), icol, buffer.string);
+			TableOfReal_setColumnLabel (me.get(), icol, buffer.string);
 		}
 		for (long irow = 1; irow <= nrow; irow ++) {
 			while (*p == U' ' || *p == U'\t' || *p == U'\n') { Melder_assert (*p != U'\0'); p ++; }
@@ -1214,7 +1214,7 @@ TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
 				MelderString_appendCharacter (& buffer, *p);
 				p ++;
 			}
-			TableOfReal_setRowLabel (me.peek(), irow, buffer.string);
+			TableOfReal_setRowLabel (me.get(), irow, buffer.string);
 			for (long icol = 1; icol <= ncol; icol ++) {
 				while (*p == U' ' || *p == U'\t' || *p == U'\n') { Melder_assert (*p != U'\0'); p ++; }
 				MelderString_empty (& buffer);
@@ -1225,7 +1225,7 @@ TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file) {
 				my data [irow] [icol] = Melder_atof (buffer.string);   // if cell contains a string, this will be 0
 			}
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"TableOfReal: tab-separated file ", file, U" not read.");
 	}
diff --git a/stat/TableOfReal.h b/stat/TableOfReal.h
index 8a6429a..57e669e 100644
--- a/stat/TableOfReal.h
+++ b/stat/TableOfReal.h
@@ -4,32 +4,30 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* TableOfReal inherits from Data */
 #include "Collection.h"
 #include "Strings_.h"
 #include "Table.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 #include "TableOfReal_def.h"
-oo_CLASS_CREATE (TableOfReal, Data);
 
 void TableOfReal_init (TableOfReal me, long numberOfRows, long numberOfColumns);
-TableOfReal TableOfReal_create (long numberOfRows, long numberOfColumns);
+autoTableOfReal TableOfReal_create (long numberOfRows, long numberOfColumns);
 void TableOfReal_removeRow (TableOfReal me, long irow);
 void TableOfReal_removeColumn (TableOfReal me, long icol);
 void TableOfReal_insertRow (TableOfReal me, long irow);
@@ -41,8 +39,8 @@ long TableOfReal_columnLabelToIndex (TableOfReal me, const char32 *label /* catt
 double TableOfReal_getColumnMean (TableOfReal me, long icol);
 double TableOfReal_getColumnStdev (TableOfReal me, long icol);
 
-TableOfReal Table_to_TableOfReal (Table me, long labelColumn);
-Table TableOfReal_to_Table (TableOfReal me, const char32 *labelOfFirstColumn);
+autoTableOfReal Table_to_TableOfReal (Table me, long labelColumn);
+autoTable TableOfReal_to_Table (TableOfReal me, const char32 *labelOfFirstColumn);
 void TableOfReal_formula (TableOfReal me, const char32 *expression, Interpreter interpreter, TableOfReal target);
 void TableOfReal_drawAsNumbers (TableOfReal me, Graphics g, long rowmin, long rowmax, int iformat, int precision);
 void TableOfReal_drawAsNumbers_if (TableOfReal me, Graphics g, long rowmin, long rowmax, int iformat, int precision,
@@ -54,28 +52,33 @@ void TableOfReal_drawHorizontalLines (TableOfReal me, Graphics g, long rowmin, l
 void TableOfReal_drawLeftAndRightLines (TableOfReal me, Graphics g, long rowmin, long rowmax);
 void TableOfReal_drawTopAndBottomLines (TableOfReal me, Graphics g, long rowmin, long rowmax);
 
-Any TablesOfReal_append (TableOfReal me, TableOfReal thee);
-Any TablesOfReal_appendMany (Collection me);
+autoTableOfReal TablesOfReal_append (TableOfReal me, TableOfReal thee);
+autoTableOfReal TablesOfReal_appendMany (OrderedOf<structTableOfReal>* me);
 void TableOfReal_sortByLabel (TableOfReal me, long column1, long column2);
 void TableOfReal_sortByColumn (TableOfReal me, long column1, long column2);
 
 void TableOfReal_writeToHeaderlessSpreadsheetFile (TableOfReal me, MelderFile file);
-TableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file);
+autoTableOfReal TableOfReal_readFromHeaderlessSpreadsheetFile (MelderFile file);
 
-TableOfReal TableOfReal_extractRowRanges (TableOfReal me, const char32 *ranges);
-TableOfReal TableOfReal_extractColumnRanges (TableOfReal me, const char32 *ranges);
+autoTableOfReal TableOfReal_extractRowRanges (TableOfReal me, const char32 *ranges);
+autoTableOfReal TableOfReal_extractColumnRanges (TableOfReal me, const char32 *ranges);
 
-TableOfReal TableOfReal_extractRowsWhereColumn (TableOfReal me, long icol, int which_Melder_NUMBER, double criterion);
-TableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long icol, int which_Melder_NUMBER, double criterion);
+autoTableOfReal TableOfReal_extractRowsWhereColumn (TableOfReal me, long icol, int which_Melder_NUMBER, double criterion);
+autoTableOfReal TableOfReal_extractColumnsWhereRow (TableOfReal me, long icol, int which_Melder_NUMBER, double criterion);
 
-TableOfReal TableOfReal_extractRowsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion);
-TableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion);
+autoTableOfReal TableOfReal_extractRowsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion);
+autoTableOfReal TableOfReal_extractColumnsWhereLabel (TableOfReal me, int which_Melder_STRING, const char32 *criterion);
 
-TableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter);
-TableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter);
+autoTableOfReal TableOfReal_extractRowsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter);
+autoTableOfReal TableOfReal_extractColumnsWhere (TableOfReal me, const char32 *condition, Interpreter interpreter);
 
-Strings TableOfReal_extractRowLabelsAsStrings (TableOfReal me);
-Strings TableOfReal_extractColumnLabelsAsStrings (TableOfReal me);
+autoStrings TableOfReal_extractRowLabelsAsStrings (TableOfReal me);
+autoStrings TableOfReal_extractColumnLabelsAsStrings (TableOfReal me);
+
+#pragma mark - class TableOfRealList
+
+Collection_define (TableOfRealList, OrderedOf, TableOfReal) {
+};
 
 /* End of file TableOfReal.h */
 #endif
diff --git a/stat/TableOfReal_def.h b/stat/TableOfReal_def.h
index 081f845..0cdfa30 100644
--- a/stat/TableOfReal_def.h
+++ b/stat/TableOfReal_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT TableOfReal
-oo_DEFINE_CLASS (TableOfReal, Data)
+oo_DEFINE_CLASS (TableOfReal, Daata)
 
 	oo_LONG (numberOfRows)
 	oo_LONG (numberOfColumns)
diff --git a/stat/Table_def.h b/stat/Table_def.h
index ea0ff73..f16c0a2 100644
--- a/stat/Table_def.h
+++ b/stat/Table_def.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2002-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
@@ -31,11 +30,12 @@ oo_END_STRUCT (TableCell)
 
 
 #define ooSTRUCT TableRow
-oo_DEFINE_CLASS (TableRow, Data)
+oo_DEFINE_CLASS (TableRow, Daata)
 
 	#if oo_DECLARING || oo_COPYING
 		oo_LONG (sortingIndex)
 	#endif
+
 	oo_LONG (numberOfColumns)
 	oo_STRUCT_VECTOR (TableCell, cells, numberOfColumns)
 
@@ -47,6 +47,7 @@ oo_END_CLASS (TableRow)
 oo_DEFINE_STRUCT (TableColumnHeader)
 
 	oo_STRING (label)
+
 	#if oo_DECLARING || oo_COPYING
 		oo_INT (numericized)
 	#endif
@@ -56,22 +57,19 @@ oo_END_STRUCT (TableColumnHeader)
 
 
 #define ooSTRUCT Table
-oo_DEFINE_CLASS (Table, Data)
+oo_DEFINE_CLASS (Table, Daata)
 
 	oo_LONG (numberOfColumns)
 	oo_STRUCT_VECTOR (TableColumnHeader, columnHeaders, numberOfColumns)
-	oo_COLLECTION (Ordered, rows, TableRow, 0)
+	oo_COLLECTION_OF (OrderedOf, rows, TableRow, 0)
 
 	#if oo_DECLARING
-		TableRow row (long i) // accessor
-			{ return static_cast <TableRow> (rows -> item [i]); }
-
 		void v_info ()
 			override;
 		bool v_hasGetNrow ()
 			override { return true; }
 		double v_getNrow ()
-			override { return rows -> size; }
+			override { return rows.size; }
 		bool v_hasGetNcol ()
 			override { return true; }
 		double v_getNcol ()
diff --git a/stat/manual_statistics.cpp b/stat/manual_statistics.cpp
index d0c3024..7eed54a 100644
--- a/stat/manual_statistics.cpp
+++ b/stat/manual_statistics.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPagesM.h"
diff --git a/stat/praat_Stat.cpp b/stat/praat_Stat.cpp
index 372c46d..a472a17 100644
--- a/stat/praat_Stat.cpp
+++ b/stat/praat_Stat.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
@@ -31,7 +30,7 @@
 #define iam iam_LOOP
 
 static const char32 * Table_messageColumn (Table me, long column) {
-	if (my columnHeaders [column]. label != NULL && my columnHeaders [column]. label [0] != U'\0')
+	if (my columnHeaders [column]. label && my columnHeaders [column]. label [0] != U'\0')
 		return Melder_cat (U"\"", my columnHeaders [column]. label, U"\"");
 	else
 		return Melder_integer (column);
@@ -42,23 +41,27 @@ static const char32 * Table_messageColumn (Table me, long column) {
 #pragma mark DISTRIBUTIONS
 
 DIRECT2 (Distributionses_add) {
-	autoCollection me = praat_getSelectedObjects ();
-	autoDistributions thee = Distributions_addMany (me.peek());
-	praat_new (thee.transfer(), U"added");
+	OrderedOf<structDistributions> list;
+	LOOP {
+		iam (Distributions);
+		list. addItem_ref (me);
+	}
+	autoDistributions thee = Distributions_addMany (& list);
+	praat_new (thee.move(), U"added");
 END2 }
 
-FORM (Distributionses_getMeanAbsoluteDifference, U"Get mean difference", 0) {
+FORM (Distributionses_getMeanAbsoluteDifference, U"Get mean difference", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
-	Distributions me = NULL, thee = NULL;
+	Distributions me = nullptr, thee = nullptr;
 	LOOP {
 		(me ? thee : me) = (Distributions) OBJECT;
 	}
-	Melder_informationReal (Distributionses_getMeanAbsoluteDifference (me, thee, GET_INTEGER (U"Column number")), NULL);
+	Melder_informationReal (Distributionses_getMeanAbsoluteDifference (me, thee, GET_INTEGER (U"Column number")), nullptr);
 END2 }
 
-FORM (Distributions_getProbability, U"Get probability", 0) {
+FORM (Distributions_getProbability, U"Get probability", nullptr) {
 	NATURAL (U"Column number", U"1")
 	SENTENCE (U"String", U"")
 	OK2
@@ -66,7 +69,7 @@ DO
 	LOOP {
 		iam (Distributions);
 		double probability = Distributions_getProbability (me, GET_STRING (U"String"), GET_INTEGER (U"Column number"));
-		Melder_informationReal (probability, NULL);
+		Melder_informationReal (probability, nullptr);
 	}
 END2 }
 
@@ -74,7 +77,7 @@ DIRECT2 (Distributions_help) {
 	Melder_help (U"Distributions");
 END2 }
 
-FORM (Distributions_to_Strings, U"To Strings", 0) {
+FORM (Distributions_to_Strings, U"To Strings", nullptr) {
 	NATURAL (U"Column number", U"1")
 	NATURAL (U"Number of strings", U"1000")
 	OK2
@@ -82,18 +85,18 @@ DO
 	LOOP {
 		iam (Distributions);
 		autoStrings thee = Distributions_to_Strings (me, GET_INTEGER (U"Column number"), GET_INTEGER (U"Number of strings"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (Distributions_to_Strings_exact, U"To Strings (exact)", 0) {
+FORM (Distributions_to_Strings_exact, U"To Strings (exact)", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
 	LOOP {
 		iam (Distributions);
 		autoStrings thee = Distributions_to_Strings_exact (me, GET_INTEGER (U"Column number"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -101,14 +104,14 @@ END2 }
 #pragma mark -
 #pragma mark LOGISTICREGRESSION
 
-FORM (LogisticRegression_drawBoundary, U"LogisticRegression: Draw boundary", 0) {
+FORM (LogisticRegression_drawBoundary, U"LogisticRegression: Draw boundary", nullptr) {
 	WORD (U"Horizontal factor", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
 	WORD (U"Vertical factor", U"")
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -131,7 +134,7 @@ DIRECT2 (PairDistribution_getFractionCorrect_maximumLikelihood) {
 	LOOP {
 		iam (PairDistribution);
 		double fractionCorrect = PairDistribution_getFractionCorrect_maximumLikelihood (me);
-		Melder_informationReal (fractionCorrect, NULL);
+		Melder_informationReal (fractionCorrect, nullptr);
 	}
 END2 }
 
@@ -139,18 +142,18 @@ DIRECT2 (PairDistribution_getFractionCorrect_probabilityMatching) {
 	LOOP {
 		iam (PairDistribution);
 		double fractionCorrect = PairDistribution_getFractionCorrect_probabilityMatching (me);
-		Melder_informationReal (fractionCorrect, NULL);
+		Melder_informationReal (fractionCorrect, nullptr);
 	}
 END2 }
 
 DIRECT2 (PairDistribution_getNumberOfPairs) {
 	LOOP {
 		iam (PairDistribution);
-		Melder_information (my pairs -> size);
+		Melder_information (my pairs.size);
 	}
 END2 }
 
-FORM (PairDistribution_getString1, U"Get string1", 0) {
+FORM (PairDistribution_getString1, U"Get string1", nullptr) {
 	NATURAL (U"Pair number", U"1")
 	OK2
 DO
@@ -161,7 +164,7 @@ DO
 	}
 END2 }
 
-FORM (PairDistribution_getString2, U"Get string2", 0) {
+FORM (PairDistribution_getString2, U"Get string2", nullptr) {
 	NATURAL (U"Pair number", U"1")
 	OK2
 DO
@@ -172,7 +175,7 @@ DO
 	}
 END2 }
 
-FORM (PairDistribution_getWeight, U"Get weight", 0) {
+FORM (PairDistribution_getWeight, U"Get weight", nullptr) {
 	NATURAL (U"Pair number", U"1")
 	OK2
 DO
@@ -203,7 +206,7 @@ DIRECT2 (PairDistribution_swapInputsAndOutputs) {
 	}
 END2 }
 
-FORM (PairDistribution_to_Stringses, U"Generate two Strings objects", 0) {
+FORM (PairDistribution_to_Stringses, U"Generate two Strings objects", nullptr) {
 	NATURAL (U"Number", U"1000")
 	SENTENCE (U"Name of first Strings", U"input")
 	SENTENCE (U"Name of second Strings", U"output")
@@ -211,11 +214,10 @@ FORM (PairDistribution_to_Stringses, U"Generate two Strings objects", 0) {
 DO
 	LOOP {
 		iam (PairDistribution);
-		Strings strings1_, strings2_;
-		PairDistribution_to_Stringses (me, GET_INTEGER (U"Number"), & strings1_, & strings2_);
-		autoStrings strings1 = strings1_, strings2 = strings2_;   // UGLY
-		praat_new (strings1.transfer(), GET_STRING (U"Name of first Strings"));
-		praat_new (strings2.transfer(), GET_STRING (U"Name of second Strings"));
+		autoStrings strings1, strings2;
+		PairDistribution_to_Stringses (me, GET_INTEGER (U"Number"), & strings1, & strings2);
+		praat_new (strings1.move(), GET_STRING (U"Name of first Strings"));
+		praat_new (strings2.move(), GET_STRING (U"Name of second Strings"));
 	}
 END2 }
 
@@ -223,7 +225,7 @@ DIRECT2 (PairDistribution_to_Table) {
 	LOOP {
 		iam (PairDistribution);
 		autoTable thee = PairDistribution_to_Table (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -231,18 +233,18 @@ END2 }
 #pragma mark -
 #pragma mark PAIRDISTRIBUTION & DISTRIBUTIONS
 
-FORM (PairDistribution_Distributions_getFractionCorrect, U"PairDistribution & Distributions: Get fraction correct", 0) {
+FORM (PairDistribution_Distributions_getFractionCorrect, U"PairDistribution & Distributions: Get fraction correct", nullptr) {
 	NATURAL (U"Column", U"1")
 	OK2
 DO
-	PairDistribution me = NULL;
-	Distributions thee = NULL;
+	PairDistribution me = nullptr;
+	Distributions thee = nullptr;
 	LOOP {
 		if (CLASS == classPairDistribution) me = (PairDistribution) OBJECT;
 		if (CLASS == classDistributions) thee = (Distributions) OBJECT;
 	}
 	double fractionCorrect = PairDistribution_Distributions_getFractionCorrect (me, thee, GET_INTEGER (U"Column"));
-	Melder_informationReal (fractionCorrect, NULL);
+	Melder_informationReal (fractionCorrect, nullptr);
 END2 }
 
 /***** TABLE *****/
@@ -250,17 +252,16 @@ END2 }
 #pragma mark TABLE
 
 DIRECT2 (Tables_append) {
-	autoCollection collection = Collection_create (classTable, 10);
-	Collection_dontOwnItems (collection.peek());
+	OrderedOf<structTable> list;
 	LOOP {
 		iam (Table);
-		Collection_addItem (collection.peek(), me);
+		list. addItem_ref (me);
 	}
-	autoTable thee = Tables_append (collection.peek());
-	praat_new (thee.transfer(), U"appended");
+	autoTable thee = Tables_append (& list);
+	praat_new (thee.move(), U"appended");
 END2 }
 
-FORM (Table_appendColumn, U"Table: Append column", 0) {
+FORM (Table_appendColumn, U"Table: Append column", nullptr) {
 	WORD (U"Label", U"newcolumn")
 	OK2
 DO
@@ -271,7 +272,7 @@ DO
 	}
 END2 }
 
-FORM (Table_appendDifferenceColumn, U"Table: Append difference column", 0) {
+FORM (Table_appendDifferenceColumn, U"Table: Append difference column", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	WORD (U"Label", U"diff")
@@ -286,7 +287,7 @@ DO
 	}
 END2 }
 
-FORM (Table_appendProductColumn, U"Table: Append product column", 0) {
+FORM (Table_appendProductColumn, U"Table: Append product column", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	WORD (U"Label", U"diff")
@@ -301,7 +302,7 @@ DO
 	}
 END2 }
 
-FORM (Table_appendQuotientColumn, U"Table: Append quotient column", 0) {
+FORM (Table_appendQuotientColumn, U"Table: Append quotient column", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	WORD (U"Label", U"diff")
@@ -316,7 +317,7 @@ DO
 	}
 END2 }
 
-FORM (Table_appendSumColumn, U"Table: Append sum column", 0) {
+FORM (Table_appendSumColumn, U"Table: Append sum column", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	WORD (U"Label", U"diff")
@@ -339,7 +340,7 @@ DIRECT2 (Table_appendRow) {
 	}
 END2 }
 
-FORM (Table_collapseRows, U"Table: Collapse rows", 0) {
+FORM (Table_collapseRows, U"Table: Collapse rows", nullptr) {
 	LABEL (U"", U"Columns with factors (independent variables):")
 	TEXTFIELD (U"factors", U"speaker dialect age vowel")
 	LABEL (U"", U"Columns to sum:")
@@ -361,11 +362,11 @@ DO
 			GET_STRING (U"factors"), GET_STRING (U"columnsToSum"),
 			GET_STRING (U"columnsToAverage"), GET_STRING (U"columnsToMedianize"),
 			GET_STRING (U"columnsToAverageLogarithmically"), GET_STRING (U"columnsToMedianizeLogarithmically"));
-		praat_new (thee.transfer(), my name, U"_pooled");
+		praat_new (thee.move(), my name, U"_pooled");
 	}
 END2 }
 
-FORM (Table_createWithColumnNames, U"Create Table with column names", 0) {
+FORM (Table_createWithColumnNames, U"Create Table with column names", nullptr) {
 	WORD (U"Name", U"table")
 	INTEGER (U"Number of rows", U"10")
 	LABEL (U"", U"Column names:")
@@ -373,20 +374,20 @@ FORM (Table_createWithColumnNames, U"Create Table with column names", 0) {
 	OK2
 DO
 	autoTable me = Table_createWithColumnNames (GET_INTEGER (U"Number of rows"), GET_STRING (U"columnNames"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (Table_createWithoutColumnNames, U"Create Table without column names", 0) {
+FORM (Table_createWithoutColumnNames, U"Create Table without column names", nullptr) {
 	WORD (U"Name", U"table")
 	INTEGER (U"Number of rows", U"10")
 	NATURAL (U"Number of columns", U"3")
 	OK2
 DO
 	autoTable me = Table_createWithoutColumnNames (GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (Table_drawEllipse, U"Draw ellipse (standard deviation)", 0) {
+FORM (Table_drawEllipse, U"Draw ellipse (standard deviation)", nullptr) {
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -409,7 +410,7 @@ DO
 	}
 END2 }
 
-FORM (Table_drawRowFromDistribution, U"Table: Draw row from distribution", 0) {
+FORM (Table_drawRowFromDistribution, U"Table: Draw row from distribution", nullptr) {
 	WORD (U"Column with distribution", U"")
 	OK2
 DO
@@ -426,11 +427,12 @@ DIRECT2 (Table_edit) {
 	LOOP {
 		iam (Table);
 		autoTableEditor editor = TableEditor_create (ID_AND_FULL_NAME, me);
-		praat_installEditor (editor.transfer(), IOBJECT);
+		praat_installEditor (editor.get(), IOBJECT);
+		editor.releaseToUser();
 	}
 END2 }
 
-FORM (Table_extractRowsWhereColumn_number, U"Table: Extract rows where column (number)", 0) {
+FORM (Table_extractRowsWhereColumn_number, U"Table: Extract rows where column (number)", nullptr) {
 	WORD (U"Extract all rows where column...", U"")
 	RADIO_ENUM (U"...is...", kMelder_number, DEFAULT)
 	REAL (U"...the number", U"0.0")
@@ -441,12 +443,12 @@ DO
 		iam (Table);
 		long icol = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Extract all rows where column..."));
 		autoTable thee = Table_extractRowsWhereColumn_number (me, icol, GET_ENUM (kMelder_number, U"...is..."), value);
-		praat_new (thee.transfer(), my name, U"_", Table_messageColumn (static_cast <Table> OBJECT, icol), U"_", NUMdefined (value) ? Melder_integer (lround (value)) : U"undefined");
+		praat_new (thee.move(), my name, U"_", Table_messageColumn (static_cast <Table> OBJECT, icol), U"_", NUMdefined (value) ? Melder_integer (lround (value)) : U"undefined");
 		praat_dataChanged (me);   // WHY?
 	}
 END2 }
 
-FORM (Table_extractRowsWhereColumn_text, U"Table: Extract rows where column (text)", 0) {
+FORM (Table_extractRowsWhereColumn_text, U"Table: Extract rows where column (text)", nullptr) {
 	WORD (U"Extract all rows where column...", U"")
 	OPTIONMENU_ENUM (U"...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"hi")
@@ -457,7 +459,7 @@ DO
 		iam (Table);
 		long icol = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Extract all rows where column..."));
 		autoTable thee = Table_extractRowsWhereColumn_string (me, icol, GET_ENUM (kMelder_string, U"..."), value);
-		praat_new (thee.transfer(), my name, U"_", value);
+		praat_new (thee.move(), my name, U"_", value);
 		praat_dataChanged (me);   // WHY?
 	}
 END2 }
@@ -500,7 +502,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getColumnIndex, U"Table: Get column index", 0) {
+FORM (Table_getColumnIndex, U"Table: Get column index", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -510,7 +512,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getColumnLabel, U"Table: Get column label", 0) {
+FORM (Table_getColumnLabel, U"Table: Get column label", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -522,7 +524,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getGroupMean, U"Table: Get group mean", 0) {
+FORM (Table_getGroupMean, U"Table: Get group mean", nullptr) {
 	WORD (U"Column label", U"salary")
 	WORD (U"Group column", U"gender")
 	SENTENCE (U"Group", U"F")
@@ -536,7 +538,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getMaximum, U"Table: Get maximum", 0) {
+FORM (Table_getMaximum, U"Table: Get maximum", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -548,7 +550,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getMean, U"Table: Get mean", 0) {
+FORM (Table_getMean, U"Table: Get mean", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -560,7 +562,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getMinimum, U"Table: Get minimum", 0) {
+FORM (Table_getMinimum, U"Table: Get minimum", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -572,7 +574,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getQuantile, U"Table: Get quantile", 0) {
+FORM (Table_getQuantile, U"Table: Get quantile", nullptr) {
 	SENTENCE (U"Column label", U"")
 	POSITIVE (U"Quantile", U"0.50 (= median)")
 	OK2
@@ -585,7 +587,7 @@ DO
 	}
 END2 }
 
-FORM (Table_getStandardDeviation, U"Table: Get standard deviation", 0) {
+FORM (Table_getStandardDeviation, U"Table: Get standard deviation", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -607,11 +609,11 @@ END2 }
 DIRECT2 (Table_getNumberOfRows) {
 	LOOP {
 		iam (Table);
-		Melder_information (my rows -> size);
+		Melder_information (my rows.size);
 	}
 END2 }
 
-FORM (Table_getValue, U"Table: Get value", 0) {
+FORM (Table_getValue, U"Table: Get value", nullptr) {
 	NATURAL (U"Row number", U"1")
 	WORD (U"Column label", U"")
 	OK2
@@ -621,7 +623,7 @@ DO
 		long rowNumber = GET_INTEGER (U"Row number");
 		Table_checkSpecifiedRowNumberWithinRange (me, rowNumber);
 		long icol = Table_getColumnIndexFromColumnLabel (me, GET_STRING (U"Column label"));
-		Melder_information (((TableRow) my rows -> item [rowNumber]) -> cells [icol]. string);
+		Melder_information (my rows.at [rowNumber] -> cells [icol]. string);
 	}
 END2 }
 
@@ -629,7 +631,7 @@ DIRECT2 (Table_help) {
 	Melder_help (U"Table");
 END2 }
 
-FORM (Table_insertColumn, U"Table: Insert column", 0) {
+FORM (Table_insertColumn, U"Table: Insert column", nullptr) {
 	NATURAL (U"Position", U"1")
 	WORD (U"Label", U"newcolumn")
 	OK2
@@ -641,7 +643,7 @@ DO
 	}
 END2 }
 
-FORM (Table_insertRow, U"Table: Insert row", 0) {
+FORM (Table_insertRow, U"Table: Insert row", nullptr) {
 	NATURAL (U"Position", U"1")
 	OK2
 DO
@@ -652,7 +654,7 @@ DO
 	}
 END2 }
 
-FORM (Table_list, U"Table: List", 0) {
+FORM (Table_list, U"Table: List", nullptr) {
 	BOOLEAN (U"Include row numbers", true)
 	OK2
 DO
@@ -662,19 +664,22 @@ DO
 	}
 END2 }
 
-FORM_READ2 (Table_readFromTableFile, U"Read Table from table file", 0, true) {
-	praat_newWithFile (Table_readFromTableFile (file), file, MelderFile_name (file));
+FORM_READ2 (Table_readFromTableFile, U"Read Table from table file", nullptr, true) {
+	autoTable me = Table_readFromTableFile (file);
+	praat_newWithFile (me.move(), file, MelderFile_name (file));
 END2 }
 
-FORM_READ2 (Table_readFromCommaSeparatedFile, U"Read Table from comma-separated file", 0, true) {
-	praat_newWithFile (Table_readFromCharacterSeparatedTextFile (file, ','), file, MelderFile_name (file));
+FORM_READ2 (Table_readFromCommaSeparatedFile, U"Read Table from comma-separated file", nullptr, true) {
+	autoTable me = Table_readFromCharacterSeparatedTextFile (file, U',');
+	praat_newWithFile (me.move(), file, MelderFile_name (file));
 END2 }
 
-FORM_READ2 (Table_readFromTabSeparatedFile, U"Read Table from tab-separated file", 0, true) {
-	praat_newWithFile (Table_readFromCharacterSeparatedTextFile (file, '\t'), file, MelderFile_name (file));
+FORM_READ2 (Table_readFromTabSeparatedFile, U"Read Table from tab-separated file", nullptr, true) {
+	autoTable me = Table_readFromCharacterSeparatedTextFile (file, U'\t');
+	praat_newWithFile (me.move(), file, MelderFile_name (file));
 END2 }
 
-FORM (Table_removeColumn, U"Table: Remove column", 0) {
+FORM (Table_removeColumn, U"Table: Remove column", nullptr) {
 	WORD (U"Column label", U"")
 	OK2
 DO
@@ -686,7 +691,7 @@ DO
 	}
 END2 }
 
-FORM (Table_removeRow, U"Table: Remove row", 0) {
+FORM (Table_removeRow, U"Table: Remove row", nullptr) {
 	NATURAL (U"Row number", U"1")
 	OK2
 DO
@@ -697,7 +702,7 @@ DO
 	}
 END2 }
 
-FORM (Table_reportCorrelation_kendallTau, U"Report correlation (Kendall tau)", 0) {
+FORM (Table_reportCorrelation_kendallTau, U"Report correlation (Kendall tau)", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	POSITIVE (U"One-tailed unconfidence", U"0.025")
@@ -716,7 +721,7 @@ DO
 			U" and column ", Table_messageColumn (me, column2), U":");
 		MelderInfo_writeLine (U"Correlation = ", correlation, U" (Kendall's tau-b)");
 		MelderInfo_writeLine (U"Significance from zero = ", significance, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest tau that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -725,7 +730,7 @@ DO
 	}
 END2 }
 
-FORM (Table_reportCorrelation_pearsonR, U"Report correlation (Pearson r)", 0) {
+FORM (Table_reportCorrelation_pearsonR, U"Report correlation (Pearson r)", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	POSITIVE (U"One-tailed unconfidence", U"0.025")
@@ -743,9 +748,9 @@ DO
 		MelderInfo_writeLine (U"Correlation between column ", Table_messageColumn (me, column1),
 			U" and column ", Table_messageColumn (me, column2), U":");
 		MelderInfo_writeLine (U"Correlation = ", correlation, U" (Pearson's r)");
-		MelderInfo_writeLine (U"Number of degrees of freedom = ", my rows -> size - 2);
+		MelderInfo_writeLine (U"Number of degrees of freedom = ", my rows.size - 2);
 		MelderInfo_writeLine (U"Significance from zero = ", significance, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest r that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -754,7 +759,7 @@ DO
 	}
 END2 }
 	
-FORM (Table_reportDifference_studentT, U"Report difference (Student t)", 0) {
+FORM (Table_reportDifference_studentT, U"Report difference (Student t)", nullptr) {
 	WORD (U"left Columns", U"")
 	WORD (U"right Columns", U"")
 	POSITIVE (U"One-tailed unconfidence", U"0.025")
@@ -775,7 +780,7 @@ DO
 		MelderInfo_writeLine (U"Student's t = ", t);
 		MelderInfo_writeLine (U"Number of degrees of freedom = ", numberOfDegreesOfFreedom);
 		MelderInfo_writeLine (U"Significance from zero = ", significance, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest difference that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -784,7 +789,7 @@ DO
 	}
 END2 }
 	
-FORM (Table_reportGroupDifference_studentT, U"Report group difference (Student t)", 0) {
+FORM (Table_reportGroupDifference_studentT, U"Report group difference (Student t)", nullptr) {
 	WORD (U"Column", U"salary")
 	WORD (U"Group column", U"gender")
 	SENTENCE (U"Group 1", U"F")
@@ -808,7 +813,7 @@ DO
 		MelderInfo_writeLine (U"Student's t = ", tFromZero);
 		MelderInfo_writeLine (U"Number of degrees of freedom = ", numberOfDegreesOfFreedom);
 		MelderInfo_writeLine (U"Significance from zero = ", significanceFromZero, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest difference that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -817,7 +822,7 @@ DO
 	}
 END2 }
 
-FORM (Table_reportGroupDifference_wilcoxonRankSum, U"Report group difference (Wilcoxon rank sum)", 0) {
+FORM (Table_reportGroupDifference_wilcoxonRankSum, U"Report group difference (Wilcoxon rank sum)", nullptr) {
 	WORD (U"Column", U"salary")
 	WORD (U"Group column", U"gender")
 	SENTENCE (U"Group 1", U"F")
@@ -843,7 +848,7 @@ DO
 	}
 END2 }
 
-FORM (Table_reportGroupMean_studentT, U"Report group mean (Student t)", 0) {
+FORM (Table_reportGroupMean_studentT, U"Report group mean (Student t)", nullptr) {
 	WORD (U"Column", U"salary")
 	WORD (U"Group column", U"gender")
 	SENTENCE (U"Group", U"F")
@@ -866,7 +871,7 @@ DO
 		MelderInfo_writeLine (U"Student's t from zero = ", tFromZero);
 		MelderInfo_writeLine (U"Number of degrees of freedom = ", numberOfDegreesOfFreedom);
 		MelderInfo_writeLine (U"Significance from zero = ", significanceFromZero, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest difference that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -875,7 +880,7 @@ DO
 	}
 END2 }
 
-FORM (Table_reportMean_studentT, U"Report mean (Student t)", 0) {
+FORM (Table_reportMean_studentT, U"Report mean (Student t)", nullptr) {
 	WORD (U"Column", U"")
 	POSITIVE (U"One-tailed unconfidence", U"0.025")
 	OK2
@@ -893,7 +898,7 @@ DO
 		MelderInfo_writeLine (U"Student's t from zero = ", tFromZero);
 		MelderInfo_writeLine (U"Number of degrees of freedom = ", numberOfDegreesOfFreedom);
 		MelderInfo_writeLine (U"Significance from zero = ", significanceFromZero, U" (one-tailed)");
-		MelderInfo_writeLine (U"Confidence interval (", 100 * (1.0 - 2.0 * unconfidence), U"%):");
+		MelderInfo_writeLine (U"Confidence interval (", 100.0 * (1.0 - 2.0 * unconfidence), U"%):");
 		MelderInfo_writeLine (U"   Lower limit = ", lowerLimit,
 			U" (lowest value that cannot be rejected with " UNITEXT_GREEK_SMALL_LETTER_ALPHA " = ", unconfidence, U")");
 		MelderInfo_writeLine (U"   Upper limit = ", upperLimit,
@@ -902,7 +907,7 @@ DO
 	}
 END2 }
 
-FORM (Table_rowsToColumns, U"Table: Rows to columns", 0) {
+FORM (Table_rowsToColumns, U"Table: Rows to columns", nullptr) {
 	LABEL (U"", U"Columns with factors (independent variables):")
 	TEXTFIELD (U"factors", U"dialect gender speaker")
 	WORD (U"Column to transpose", U"vowel")
@@ -916,11 +921,11 @@ DO
 		iam (Table);
 		long icol = Table_getColumnIndexFromColumnLabel (me, columnLabel);
 		autoTable thee = Table_rowsToColumns (me, GET_STRING (U"factors"), icol, GET_STRING (U"columnsToExpand"));
-		praat_new (thee.transfer(), NAME, U"_nested");
+		praat_new (thee.move(), NAME, U"_nested");
 	}
 END2 }
 
-FORM (Table_scatterPlot, U"Scatter plot", 0) {
+FORM (Table_scatterPlot, U"Scatter plot", nullptr) {
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -929,7 +934,7 @@ FORM (Table_scatterPlot, U"Scatter plot", 0) {
 	REAL (U"right Vertical range", U"0.0 (= auto)")
 	WORD (U"Column with marks", U"")
 	NATURAL (U"Font size", U"12")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	OK2
 DO
 	autoPraatPicture picture;
@@ -945,7 +950,7 @@ DO
 	}
 END2 }
 
-FORM (Table_scatterPlot_mark, U"Scatter plot (marks)", 0) {
+FORM (Table_scatterPlot_mark, U"Scatter plot (marks)", nullptr) {
 	WORD (U"Horizontal column", U"")
 	REAL (U"left Horizontal range", U"0.0")
 	REAL (U"right Horizontal range", U"0.0 (= auto)")
@@ -953,7 +958,7 @@ FORM (Table_scatterPlot_mark, U"Scatter plot (marks)", 0) {
 	REAL (U"left Vertical range", U"0.0")
 	REAL (U"right Vertical range", U"0.0 (= auto)")
 	POSITIVE (U"Mark size (mm)", U"1.0")
-	BOOLEAN (U"Garnish", 1)
+	BOOLEAN (U"Garnish", true)
 	SENTENCE (U"Mark string (+xo.)", U"+")
 	OK2
 DO
@@ -969,7 +974,7 @@ DO
 	}
 END2 }
 
-FORM (Table_searchColumn, U"Table: Search column", 0) {
+FORM (Table_searchColumn, U"Table: Search column", nullptr) {
 	WORD (U"Column label", U"")
 	WORD (U"Value", U"")
 	OK2
@@ -981,7 +986,7 @@ DO
 	}
 END2 }
 	
-FORM (Table_setColumnLabel_index, U"Set column label", 0) {
+FORM (Table_setColumnLabel_index, U"Set column label", nullptr) {
 	NATURAL (U"Column number", U"1")
 	SENTENCE (U"Label", U"")
 	OK2
@@ -993,7 +998,7 @@ DO
 	}
 END2 }
 
-FORM (Table_setColumnLabel_label, U"Set column label", 0) {
+FORM (Table_setColumnLabel_label, U"Set column label", nullptr) {
 	SENTENCE (U"Old label", U"")
 	SENTENCE (U"New label", U"")
 	OK2
@@ -1005,7 +1010,7 @@ DO
 	}
 END2 }
 
-FORM (Table_setNumericValue, U"Table: Set numeric value", 0) {
+FORM (Table_setNumericValue, U"Table: Set numeric value", nullptr) {
 	NATURAL (U"Row number", U"1")
 	WORD (U"Column label", U"")
 	REAL_OR_UNDEFINED (U"Numeric value", U"1.5")
@@ -1019,7 +1024,7 @@ DO
 	}
 END2 }
 
-FORM (Table_setStringValue, U"Table: Set string value", 0) {
+FORM (Table_setStringValue, U"Table: Set string value", nullptr) {
 	NATURAL (U"Row number", U"1")
 	WORD (U"Column label", U"")
 	SENTENCE (U"String value", U"xx")
@@ -1049,7 +1054,7 @@ DIRECT2 (Table_reflectRows) {
 	}
 END2 }
 
-FORM (Table_sortRows, U"Table: Sort rows", 0) {
+FORM (Table_sortRows, U"Table: Sort rows", nullptr) {
 	LABEL (U"", U"One or more column labels for sorting:")
 	TEXTFIELD (U"columnLabels", U"dialect gender name")
 	OK2
@@ -1065,11 +1070,11 @@ DIRECT2 (Table_to_LinearRegression) {
 	LOOP {
 		iam (Table);
 		autoLinearRegression thee = Table_to_LinearRegression (me);
-		praat_new (thee.transfer(), NAME);
+		praat_new (thee.move(), NAME);
 	}
 END2 }
 
-FORM (Table_to_LogisticRegression, U"Table: To LogisticRegression", 0) {
+FORM (Table_to_LogisticRegression, U"Table: To LogisticRegression", nullptr) {
 	LABEL (U"", U"Factors (column names):")
 	TEXTFIELD (U"factors", U"F0 F1 duration")
 	WORD (U"Dependent 1 (column name)", U"e")
@@ -1079,11 +1084,11 @@ DO
 	LOOP {
 		iam (Table);
 		autoLogisticRegression thee = Table_to_LogisticRegression (me, GET_STRING (U"factors"), GET_STRING (U"Dependent 1"), GET_STRING (U"Dependent 2"));
-		praat_new (thee.transfer(), NAME);
+		praat_new (thee.move(), NAME);
 	}
 END2 }
 
-FORM (Table_to_TableOfReal, U"Table: Down to TableOfReal", 0) {
+FORM (Table_to_TableOfReal, U"Table: Down to TableOfReal", nullptr) {
 	WORD (U"Column for row labels", U"")
 	OK2
 DO
@@ -1091,7 +1096,7 @@ DO
 		iam (Table);
 		long icol = Table_findColumnIndexFromColumnLabel (me, GET_STRING (U"Column for row labels"));
 		autoTableOfReal thee = Table_to_TableOfReal (me, icol);
-		praat_new (thee.transfer(), NAME);
+		praat_new (thee.move(), NAME);
 	}
 END2 }
 
@@ -1099,7 +1104,7 @@ DIRECT2 (Table_transpose) {
 	LOOP {
 		iam (Table);
 		autoTable thee = Table_transpose (me);
-		praat_new (thee.transfer(), NAME, U"_transposed");
+		praat_new (thee.move(), NAME, U"_transposed");
 	}
 END2 }
 
@@ -1122,27 +1127,26 @@ END2 }
 #pragma mark TABLEOFREAL
 
 DIRECT2 (TablesOfReal_append) {
-	autoCollection tables = Collection_create (classTableOfReal, 10);
-	Collection_dontOwnItems (tables.peek());
+	OrderedOf<structTableOfReal> list;
 	LOOP {
 		iam (TableOfReal);
-		Collection_addItem (tables.peek(), me);
+		list. addItem_ref (me);
 	}
-	autoTableOfReal thee = static_cast <TableOfReal> (TablesOfReal_appendMany (tables.peek()));
-	praat_new (thee.transfer(), U"appended");
+	autoTableOfReal thee = TablesOfReal_appendMany (& list);
+	praat_new (thee.move(), U"appended");
 END2 }
 
-FORM (TableOfReal_create, U"Create TableOfReal", 0) {
+FORM (TableOfReal_create, U"Create TableOfReal", nullptr) {
 	WORD (U"Name", U"table")
 	NATURAL (U"Number of rows", U"10")
 	NATURAL (U"Number of columns", U"3")
 	OK2
 DO
 	autoTableOfReal me = TableOfReal_create (GET_INTEGER (U"Number of rows"), GET_INTEGER (U"Number of columns"));
-	praat_new (me.transfer(), GET_STRING (U"Name"));
+	praat_new (me.move(), GET_STRING (U"Name"));
 END2 }
 
-FORM (TableOfReal_drawAsNumbers, U"Draw as numbers", 0) {
+FORM (TableOfReal_drawAsNumbers, U"Draw as numbers", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	RADIO (U"Format", 3)
@@ -1162,7 +1166,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawAsNumbers_if, U"Draw as numbers if...", 0) {
+FORM (TableOfReal_drawAsNumbers_if, U"Draw as numbers if...", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	RADIO (U"Format", 3)
@@ -1184,7 +1188,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawAsSquares, U"Draw table as squares", 0) {
+FORM (TableOfReal_drawAsSquares, U"Draw table as squares", nullptr) {
 	INTEGER (U"From row", U"1")
 	INTEGER (U"To row", U"0")
 	INTEGER (U"From column", U"1")
@@ -1202,7 +1206,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawHorizontalLines, U"Draw horizontal lines", 0) {
+FORM (TableOfReal_drawHorizontalLines, U"Draw horizontal lines", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	OK2
@@ -1214,7 +1218,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawLeftAndRightLines, U"Draw left and right lines", 0) {
+FORM (TableOfReal_drawLeftAndRightLines, U"Draw left and right lines", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	OK2
@@ -1226,7 +1230,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawTopAndBottomLines, U"Draw top and bottom lines", 0) {
+FORM (TableOfReal_drawTopAndBottomLines, U"Draw top and bottom lines", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	OK2
@@ -1238,7 +1242,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_drawVerticalLines, U"Draw vertical lines", 0) {
+FORM (TableOfReal_drawVerticalLines, U"Draw vertical lines", nullptr) {
 	NATURAL (U"From row", U"1")
 	INTEGER (U"To row", U"0 (= all)")
 	OK2
@@ -1254,11 +1258,11 @@ DIRECT2 (TableOfReal_extractColumnLabelsAsStrings) {
 	LOOP {
 		iam (TableOfReal);
 		autoStrings thee = TableOfReal_extractColumnLabelsAsStrings (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TableOfReal_extractColumnRanges, U"Extract column ranges", 0) {
+FORM (TableOfReal_extractColumnRanges, U"Extract column ranges", nullptr) {
 	LABEL (U"", U"Create a new TableOfReal from the following columns:")
 	TEXTFIELD (U"ranges", U"1 2")
 	LABEL (U"", U"To supply rising or falling ranges, use e.g. 2:6 or 5:3.")
@@ -1267,11 +1271,11 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractColumnRanges (me, GET_STRING (U"ranges"));
-		praat_new (thee.transfer(), my name, U"_cols");
+		praat_new (thee.move(), my name, U"_cols");
 	}
 END2 }
 
-FORM (TableOfReal_extractColumnsWhere, U"Extract columns where", 0) {
+FORM (TableOfReal_extractColumnsWhere, U"Extract columns where", nullptr) {
 	LABEL (U"", U"Extract all columns with at least one cell where:")
 	TEXTFIELD (U"condition", U"col mod 3 = 0 ; this example extracts every third column")
 	OK2
@@ -1279,11 +1283,11 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractColumnsWhere (me, GET_STRING (U"condition"), interpreter);
-		praat_new (thee.transfer(), my name, U"_cols");
+		praat_new (thee.move(), my name, U"_cols");
 	}
 END2 }
 
-FORM (TableOfReal_extractColumnsWhereLabel, U"Extract column where label", 0) {
+FORM (TableOfReal_extractColumnsWhereLabel, U"Extract column where label", nullptr) {
 	OPTIONMENU_ENUM (U"Extract all columns whose label...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"a")
 	OK2
@@ -1292,11 +1296,11 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractColumnsWhereLabel (me, GET_ENUM (kMelder_string, U"Extract all columns whose label..."), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
-FORM (TableOfReal_extractColumnsWhereRow, U"Extract columns where row", 0) {
+FORM (TableOfReal_extractColumnsWhereRow, U"Extract columns where row", nullptr) {
 	NATURAL (U"Extract all columns where row...", U"1")
 	OPTIONMENU_ENUM (U"...is...", kMelder_number, DEFAULT)
 	REAL (U"...the value", U"0.0")
@@ -1307,7 +1311,7 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractColumnsWhereRow (me, row, GET_ENUM (kMelder_number, U"...is..."), value);
-		praat_new (thee.transfer(), my name, U"_", row, U"_", lround (value));
+		praat_new (thee.move(), my name, U"_", row, U"_", lround (value));
 	}
 END2 }
 
@@ -1315,11 +1319,11 @@ DIRECT2 (TableOfReal_extractRowLabelsAsStrings) {
 	LOOP {
 		iam (TableOfReal);
 		autoStrings thee = TableOfReal_extractRowLabelsAsStrings (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TableOfReal_extractRowRanges, U"Extract row ranges", 0) {
+FORM (TableOfReal_extractRowRanges, U"Extract row ranges", nullptr) {
 	LABEL (U"", U"Create a new TableOfReal from the following rows:")
 	TEXTFIELD (U"ranges", U"1 2")
 	LABEL (U"", U"To supply rising or falling ranges, use e.g. 2:6 or 5:3.")
@@ -1328,11 +1332,11 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractRowRanges (me, GET_STRING (U"ranges"));
-		praat_new (thee.transfer(), my name, U"_rows");
+		praat_new (thee.move(), my name, U"_rows");
 	}
 END2 }
 
-FORM (TableOfReal_extractRowsWhere, U"Extract rows where", 0) {
+FORM (TableOfReal_extractRowsWhere, U"Extract rows where", nullptr) {
 	LABEL (U"", U"Extract all rows with at least one cell where:")
 	TEXTFIELD (U"condition", U"row mod 3 = 0 ; this example extracts every third row")
 	OK2
@@ -1340,11 +1344,11 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractRowsWhere (me, GET_STRING (U"condition"), interpreter);
-		praat_new (thee.transfer(), my name, U"_rows");
+		praat_new (thee.move(), my name, U"_rows");
 	}
 END2 }
 
-FORM (TableOfReal_extractRowsWhereColumn, U"Extract rows where column", 0) {
+FORM (TableOfReal_extractRowsWhereColumn, U"Extract rows where column", nullptr) {
 	NATURAL (U"Extract all rows where column...", U"1")
 	OPTIONMENU_ENUM (U"...is...", kMelder_number, DEFAULT)
 	REAL (U"...the value", U"0.0")
@@ -1356,11 +1360,11 @@ DO
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractRowsWhereColumn (me,
 			column, GET_ENUM (kMelder_number, U"...is..."), value);
-		praat_new (thee.transfer(), my name, U"_", column, U"_", lround (value));
+		praat_new (thee.move(), my name, U"_", column, U"_", lround (value));
 	}
 END2 }
 
-FORM (TableOfReal_extractRowsWhereLabel, U"Extract rows where label", 0) {
+FORM (TableOfReal_extractRowsWhereLabel, U"Extract rows where label", nullptr) {
 	OPTIONMENU_ENUM (U"Extract all rows whose label...", kMelder_string, DEFAULT)
 	SENTENCE (U"...the text", U"a")
 	OK2
@@ -1369,7 +1373,7 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		autoTableOfReal thee = TableOfReal_extractRowsWhereLabel (me, GET_ENUM (kMelder_string, U"Extract all rows whose label..."), text);
-		praat_new (thee.transfer(), my name, U"_", text);
+		praat_new (thee.move(), my name, U"_", text);
 	}
 END2 }
 
@@ -1381,7 +1385,7 @@ DO
 	LOOP {
 		iam (TableOfReal);
 		try {
-			TableOfReal_formula (me, GET_STRING (U"formula"), interpreter, NULL);
+			TableOfReal_formula (me, GET_STRING (U"formula"), interpreter, nullptr);
 			praat_dataChanged (me);
 		} catch (MelderError) {
 			praat_dataChanged (me);
@@ -1390,7 +1394,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_getColumnIndex, U"Get column index", 0) {
+FORM (TableOfReal_getColumnIndex, U"Get column index", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -1401,7 +1405,7 @@ DO
 	}
 END2 }
 	
-FORM (TableOfReal_getColumnLabel, U"Get column label", 0) {
+FORM (TableOfReal_getColumnLabel, U"Get column label", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -1409,11 +1413,11 @@ DO
 		iam (TableOfReal);
 		long columnNumber = GET_INTEGER (U"Column number");
 		if (columnNumber > my numberOfColumns) Melder_throw (me, U": column number must not be greater than number of columns.");
-		Melder_information (my columnLabels == NULL ? U"" : my columnLabels [columnNumber]);
+		Melder_information (my columnLabels ? my columnLabels [columnNumber] : U"");
 	}
 END2 }
 	
-FORM (TableOfReal_getColumnMean_index, U"Get column mean", 0) {
+FORM (TableOfReal_getColumnMean_index, U"Get column mean", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -1422,11 +1426,11 @@ DO
 		long columnNumber = GET_INTEGER (U"Column number");
 		if (columnNumber > my numberOfColumns) Melder_throw (me, U": column number must not be greater than number of columns.");
 		double columnMean = TableOfReal_getColumnMean (me, columnNumber);
-		Melder_informationReal (columnMean, NULL);
+		Melder_informationReal (columnMean, nullptr);
 	}
 END2 }
 	
-FORM (TableOfReal_getColumnMean_label, U"Get column mean", 0) {
+FORM (TableOfReal_getColumnMean_label, U"Get column mean", nullptr) {
 	SENTENCE (U"Column label", U"")
 	OK2
 DO
@@ -1435,11 +1439,11 @@ DO
 		long columnNumber = TableOfReal_columnLabelToIndex (me, GET_STRING (U"Column label"));
 		if (columnNumber == 0) Melder_throw (me, U": column label does not exist.");
 		double columnMean = TableOfReal_getColumnMean (me, columnNumber);
-		Melder_informationReal (columnMean, NULL);
+		Melder_informationReal (columnMean, nullptr);
 	}
 END2 }
 	
-FORM (TableOfReal_getColumnStdev_index, U"Get column standard deviation", 0) {
+FORM (TableOfReal_getColumnStdev_index, U"Get column standard deviation", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -1448,11 +1452,11 @@ DO
 		long columnNumber = GET_INTEGER (U"Column number");
 		if (columnNumber > my numberOfColumns) Melder_throw (me, U": column number must not be greater than number of columns.");
 		double stdev = TableOfReal_getColumnStdev (me, columnNumber);
-		Melder_informationReal (stdev, NULL);
+		Melder_informationReal (stdev, nullptr);
 	}
 END2 }
 	
-FORM (TableOfReal_getColumnStdev_label, U"Get column standard deviation", 0) {
+FORM (TableOfReal_getColumnStdev_label, U"Get column standard deviation", nullptr) {
 	SENTENCE (U"Column label", U"1")
 	OK2
 DO
@@ -1461,7 +1465,7 @@ DO
 		long columnNumber = TableOfReal_columnLabelToIndex (me, GET_STRING (U"Column label"));
 		if (columnNumber == 0) Melder_throw (me, U": column label does not exist.");
 		double stdev = TableOfReal_getColumnStdev (me, columnNumber);
-		Melder_informationReal (stdev, NULL);
+		Melder_informationReal (stdev, nullptr);
 	}
 END2 }
 
@@ -1479,7 +1483,7 @@ DIRECT2 (TableOfReal_getNumberOfRows) {
 	}
 END2 }
 
-FORM (TableOfReal_getRowIndex, U"Get row index", 0) {
+FORM (TableOfReal_getRowIndex, U"Get row index", nullptr) {
 	SENTENCE (U"Row label", U"")
 	OK2
 DO
@@ -1490,7 +1494,7 @@ DO
 	}
 END2 }
 	
-FORM (TableOfReal_getRowLabel, U"Get row label", 0) {
+FORM (TableOfReal_getRowLabel, U"Get row label", nullptr) {
 	NATURAL (U"Row number", U"1")
 	OK2
 DO
@@ -1498,11 +1502,11 @@ DO
 		iam (TableOfReal);
 		long rowNumber = GET_INTEGER (U"Row number");
 		if (rowNumber > my numberOfRows) Melder_throw (me, U": row number must not be greater than number of rows.");
-		Melder_information (my rowLabels == NULL ? U"" : my rowLabels [rowNumber]);
+		Melder_information (my rowLabels ? my rowLabels [rowNumber] : U"");
 	}
 END2 }
 
-FORM (TableOfReal_getValue, U"Get value", 0) {
+FORM (TableOfReal_getValue, U"Get value", nullptr) {
 	NATURAL (U"Row number", U"1")
 	NATURAL (U"Column number", U"1")
 	OK2
@@ -1512,7 +1516,7 @@ DO
 		long rowNumber = GET_INTEGER (U"Row number"), columnNumber = GET_INTEGER (U"Column number");
 		if (rowNumber > my numberOfRows) Melder_throw (me, U": row number must not exceed number of rows.");
 		if (columnNumber > my numberOfColumns) Melder_throw (me, U": column number must not exceed number of columns.");
-		Melder_informationReal (my data [rowNumber] [columnNumber], NULL);
+		Melder_informationReal (my data [rowNumber] [columnNumber], nullptr);
 	}
 END2 }
 
@@ -1520,7 +1524,7 @@ DIRECT2 (TableOfReal_help) {
 	Melder_help (U"TableOfReal");
 END2 }
 
-FORM (TableOfReal_insertColumn, U"Insert column", 0) {
+FORM (TableOfReal_insertColumn, U"Insert column", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -1531,7 +1535,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_insertRow, U"Insert row", 0) {
+FORM (TableOfReal_insertRow, U"Insert row", nullptr) {
 	NATURAL (U"Row number", U"1")
 	OK2
 DO
@@ -1542,11 +1546,12 @@ DO
 	}
 END2 }
 
-FORM_READ2 (TableOfReal_readFromHeaderlessSpreadsheetFile, U"Read TableOfReal from headerless spreadsheet file", 0, true) {
-	praat_newWithFile (TableOfReal_readFromHeaderlessSpreadsheetFile (file), file, MelderFile_name (file));
+FORM_READ2 (TableOfReal_readFromHeaderlessSpreadsheetFile, U"Read TableOfReal from headerless spreadsheet file", nullptr, true) {
+	autoTableOfReal me = TableOfReal_readFromHeaderlessSpreadsheetFile (file);
+	praat_newWithFile (me.move(), file, MelderFile_name (file));
 END2 }
 
-FORM (TableOfReal_removeColumn, U"Remove column", 0) {
+FORM (TableOfReal_removeColumn, U"Remove column", nullptr) {
 	NATURAL (U"Column number", U"1")
 	OK2
 DO
@@ -1557,7 +1562,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_removeRow, U"Remove row", 0) {
+FORM (TableOfReal_removeRow, U"Remove row", nullptr) {
 	NATURAL (U"Row number", U"1")
 	OK2
 DO
@@ -1568,7 +1573,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_setColumnLabel_index, U"Set column label", 0) {
+FORM (TableOfReal_setColumnLabel_index, U"Set column label", nullptr) {
 	NATURAL (U"Column number", U"1")
 	SENTENCE (U"Label", U"")
 	OK2
@@ -1580,7 +1585,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_setColumnLabel_label, U"Set column label", 0) {
+FORM (TableOfReal_setColumnLabel_label, U"Set column label", nullptr) {
 	SENTENCE (U"Old label", U"")
 	SENTENCE (U"New label", U"")
 	OK2
@@ -1593,7 +1598,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_setRowLabel_index, U"Set row label", 0) {
+FORM (TableOfReal_setRowLabel_index, U"Set row label", nullptr) {
 	NATURAL (U"Row number", U"1")
 	SENTENCE (U"Label", U"")
 	OK2
@@ -1621,7 +1626,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_setRowLabel_label, U"Set row label", 0) {
+FORM (TableOfReal_setRowLabel_label, U"Set row label", nullptr) {
 	SENTENCE (U"Old label", U"")
 	SENTENCE (U"New label", U"")
 	OK2
@@ -1634,7 +1639,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_sortByColumn, U"Sort rows by column", 0) {
+FORM (TableOfReal_sortByColumn, U"Sort rows by column", nullptr) {
 	INTEGER (U"Column", U"1")
 	INTEGER (U"Secondary column", U"0")
 	OK2
@@ -1646,7 +1651,7 @@ DO
 	}
 END2 }
 
-FORM (TableOfReal_sortByLabel, U"Sort rows by label", 0) {
+FORM (TableOfReal_sortByLabel, U"Sort rows by label", nullptr) {
 	LABEL (U"", U"Secondary sorting keys:")
 	INTEGER (U"Column1", U"1")
 	INTEGER (U"Column2", U"0")
@@ -1663,18 +1668,18 @@ DIRECT2 (TableOfReal_to_Matrix) {
 	LOOP {
 		iam (TableOfReal);
 		autoMatrix thee = TableOfReal_to_Matrix (me);
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
-FORM (TableOfReal_to_Table, U"TableOfReal: To Table", 0) {
+FORM (TableOfReal_to_Table, U"TableOfReal: To Table", nullptr) {
 	SENTENCE (U"Label of first column", U"rowLabel")
 	OK2
 DO
 	LOOP {
 		iam (TableOfReal);
 		autoTable thee = TableOfReal_to_Table (me, GET_STRING (U"Label of first column"));
-		praat_new (thee.transfer(), my name);
+		praat_new (thee.move(), my name);
 	}
 END2 }
 
@@ -1714,7 +1719,7 @@ static bool isTabSeparated_utf16le (int nread, const char *header) {
 	return false;
 }
 
-static Any tabSeparatedFileRecognizer (int nread, const char *header, MelderFile file) {
+static autoDaata tabSeparatedFileRecognizer (int nread, const char *header, MelderFile file) {
 	/*
 	 * A table is recognized if it has at least one tab symbol,
 	 * which must be before the first newline symbol (if any).
@@ -1724,203 +1729,205 @@ static Any tabSeparatedFileRecognizer (int nread, const char *header, MelderFile
 		uheader [0] == 0xef && uheader [1] == 0xff ? isTabSeparated_utf16be (nread, header) :
 		uheader [0] == 0xff && uheader [1] == 0xef ? isTabSeparated_utf16le (nread, header) :
 		isTabSeparated_8bit (nread, header);
-	if (! isTabSeparated) return NULL;
+	if (! isTabSeparated) return autoDaata ();
 	return Table_readFromCharacterSeparatedTextFile (file, '\t');
 }
 
-void praat_TableOfReal_init (ClassInfo klas);   /* Buttons for TableOfReal and for its subclasses. */
+void praat_TableOfReal_init (ClassInfo klas);   // buttons for TableOfReal and for its subclasses
 void praat_TableOfReal_init (ClassInfo klas) {
-	praat_addAction1 (klas, 1, U"Save as headerless spreadsheet file...", 0, 0, DO_TableOfReal_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (klas, 1, U"Write to headerless spreadsheet file...", 0, praat_HIDDEN, DO_TableOfReal_writeToHeaderlessSpreadsheetFile);
-	praat_addAction1 (klas, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"Draw as numbers...", 0, 1, DO_TableOfReal_drawAsNumbers);
-		praat_addAction1 (klas, 0, U"Draw as numbers if...", 0, 1, DO_TableOfReal_drawAsNumbers_if);
-		praat_addAction1 (klas, 0, U"Draw as squares...", 0, 1, DO_TableOfReal_drawAsSquares);	
-		praat_addAction1 (klas, 0, U"-- draw lines --", 0, 1, 0);
-		praat_addAction1 (klas, 0, U"Draw vertical lines...", 0, 1, DO_TableOfReal_drawVerticalLines);
-		praat_addAction1 (klas, 0, U"Draw horizontal lines...", 0, 1, DO_TableOfReal_drawHorizontalLines);
-		praat_addAction1 (klas, 0, U"Draw left and right lines...", 0, 1, DO_TableOfReal_drawLeftAndRightLines);
-		praat_addAction1 (klas, 0, U"Draw top and bottom lines...", 0, 1, DO_TableOfReal_drawTopAndBottomLines);
-	praat_addAction1 (klas, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (klas, 1, U"Get number of rows", 0, 1, DO_TableOfReal_getNumberOfRows);
-		praat_addAction1 (klas, 1, U"Get number of columns", 0, 1, DO_TableOfReal_getNumberOfColumns);
-		praat_addAction1 (klas, 1, U"Get row label...", 0, 1, DO_TableOfReal_getRowLabel);
-		praat_addAction1 (klas, 1, U"Get column label...", 0, 1, DO_TableOfReal_getColumnLabel);
-		praat_addAction1 (klas, 1, U"Get row index...", 0, 1, DO_TableOfReal_getRowIndex);
-		praat_addAction1 (klas, 1, U"Get column index...", 0, 1, DO_TableOfReal_getColumnIndex);
-		praat_addAction1 (klas, 1, U"-- get value --", 0, 1, 0);
-		praat_addAction1 (klas, 1, U"Get value...", 0, 1, DO_TableOfReal_getValue);
+	praat_addAction1 (klas, 1, U"Save as headerless spreadsheet file...", nullptr, 0, DO_TableOfReal_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (klas, 1, U"Write to headerless spreadsheet file...", nullptr, praat_HIDDEN, DO_TableOfReal_writeToHeaderlessSpreadsheetFile);
+	praat_addAction1 (klas, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"Draw as numbers...", nullptr, 1, DO_TableOfReal_drawAsNumbers);
+		praat_addAction1 (klas, 0, U"Draw as numbers if...", nullptr, 1, DO_TableOfReal_drawAsNumbers_if);
+		praat_addAction1 (klas, 0, U"Draw as squares...", nullptr, 1, DO_TableOfReal_drawAsSquares);
+		praat_addAction1 (klas, 0, U"-- draw lines --", nullptr, 1, 0);
+		praat_addAction1 (klas, 0, U"Draw vertical lines...", nullptr, 1, DO_TableOfReal_drawVerticalLines);
+		praat_addAction1 (klas, 0, U"Draw horizontal lines...", nullptr, 1, DO_TableOfReal_drawHorizontalLines);
+		praat_addAction1 (klas, 0, U"Draw left and right lines...", nullptr, 1, DO_TableOfReal_drawLeftAndRightLines);
+		praat_addAction1 (klas, 0, U"Draw top and bottom lines...", nullptr, 1, DO_TableOfReal_drawTopAndBottomLines);
+	praat_addAction1 (klas, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 1, U"Get number of rows", nullptr, 1, DO_TableOfReal_getNumberOfRows);
+		praat_addAction1 (klas, 1, U"Get number of columns", nullptr, 1, DO_TableOfReal_getNumberOfColumns);
+		praat_addAction1 (klas, 1, U"Get row label...", nullptr, 1, DO_TableOfReal_getRowLabel);
+		praat_addAction1 (klas, 1, U"Get column label...", nullptr, 1, DO_TableOfReal_getColumnLabel);
+		praat_addAction1 (klas, 1, U"Get row index...", nullptr, 1, DO_TableOfReal_getRowIndex);
+		praat_addAction1 (klas, 1, U"Get column index...", nullptr, 1, DO_TableOfReal_getColumnIndex);
+		praat_addAction1 (klas, 1, U"-- get value --", nullptr, 1, nullptr);
+		praat_addAction1 (klas, 1, U"Get value...", nullptr, 1, DO_TableOfReal_getValue);
 		if (klas == classTableOfReal) {
-			praat_addAction1 (klas, 1, U"-- get statistics --", 0, 1, 0);
-			praat_addAction1 (klas, 1, U"Get column mean (index)...", 0, 1, DO_TableOfReal_getColumnMean_index);
-			praat_addAction1 (klas, 1, U"Get column mean (label)...", 0, 1, DO_TableOfReal_getColumnMean_label);
-			praat_addAction1 (klas, 1, U"Get column stdev (index)...", 0, 1, DO_TableOfReal_getColumnStdev_index);
-			praat_addAction1 (klas, 1, U"Get column stdev (label)...", 0, 1, DO_TableOfReal_getColumnStdev_label);
+			praat_addAction1 (klas, 1, U"-- get statistics --", nullptr, 1, nullptr);
+			praat_addAction1 (klas, 1, U"Get column mean (index)...", nullptr, 1, DO_TableOfReal_getColumnMean_index);
+			praat_addAction1 (klas, 1, U"Get column mean (label)...", nullptr, 1, DO_TableOfReal_getColumnMean_label);
+			praat_addAction1 (klas, 1, U"Get column stdev (index)...", nullptr, 1, DO_TableOfReal_getColumnStdev_index);
+			praat_addAction1 (klas, 1, U"Get column stdev (label)...", nullptr, 1, DO_TableOfReal_getColumnStdev_label);
 		}
-	praat_addAction1 (klas, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"Formula...", 0, 1, DO_TableOfReal_formula);
-		praat_addAction1 (klas, 0, U"Set value...", 0, 1, DO_TableOfReal_setValue);
-		praat_addAction1 (klas, 0, U"Sort by label...", 0, 1, DO_TableOfReal_sortByLabel);
-		praat_addAction1 (klas, 0, U"Sort by column...", 0, 1, DO_TableOfReal_sortByColumn);
-		praat_addAction1 (klas, 0, U"-- structure --", 0, 1, 0);
-		praat_addAction1 (klas, 0, U"Remove row (index)...", 0, 1, DO_TableOfReal_removeRow);
-		praat_addAction1 (klas, 0, U"Remove column (index)...", 0, 1, DO_TableOfReal_removeColumn);
-		praat_addAction1 (klas, 0, U"Insert row (index)...", 0, 1, DO_TableOfReal_insertRow);
-		praat_addAction1 (klas, 0, U"Insert column (index)...", 0, 1, DO_TableOfReal_insertColumn);
-		praat_addAction1 (klas, 0, U"-- set --", 0, 1, 0);
-		praat_addAction1 (klas, 0, U"Set row label (index)...", 0, 1, DO_TableOfReal_setRowLabel_index);
-		praat_addAction1 (klas, 0, U"Set row label (label)...", 0, 1, DO_TableOfReal_setRowLabel_label);
-		praat_addAction1 (klas, 0, U"Set column label (index)...", 0, 1, DO_TableOfReal_setColumnLabel_index);
-		praat_addAction1 (klas, 0, U"Set column label (label)...", 0, 1, DO_TableOfReal_setColumnLabel_label);
-	praat_addAction1 (klas, 0, U"Synthesize -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"Append", 0, 1, DO_TablesOfReal_append);
-	praat_addAction1 (klas, 0, U"Extract part -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"Extract row ranges...", 0, 1, DO_TableOfReal_extractRowRanges);
-		praat_addAction1 (klas, 0, U"Extract rows where column...", 0, 1, DO_TableOfReal_extractRowsWhereColumn);
-		praat_addAction1 (klas, 0, U"Extract rows where label...", 0, 1, DO_TableOfReal_extractRowsWhereLabel);
-		praat_addAction1 (klas, 0, U"Extract rows where...", 0, 1, DO_TableOfReal_extractRowsWhere);
-		praat_addAction1 (klas, 0, U"Extract column ranges...", 0, 1, DO_TableOfReal_extractColumnRanges);
-		praat_addAction1 (klas, 0, U"Extract columns where row...", 0, 1, DO_TableOfReal_extractColumnsWhereRow);
-		praat_addAction1 (klas, 0, U"Extract columns where label...", 0, 1, DO_TableOfReal_extractColumnsWhereLabel);
-		praat_addAction1 (klas, 0, U"Extract columns where...", 0, 1, DO_TableOfReal_extractColumnsWhere);
-	praat_addAction1 (klas, 0, U"Extract -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"Extract row labels as Strings", 0, 1, DO_TableOfReal_extractRowLabelsAsStrings);
-		praat_addAction1 (klas, 0, U"Extract column labels as Strings", 0, 1, DO_TableOfReal_extractColumnLabelsAsStrings);
-	praat_addAction1 (klas, 0, U"Convert -", 0, 0, 0);
-		praat_addAction1 (klas, 0, U"To Table...", 0, 1, DO_TableOfReal_to_Table);
-		praat_addAction1 (klas, 0, U"To Matrix", 0, 1, DO_TableOfReal_to_Matrix);
+	praat_addAction1 (klas, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"Formula...", nullptr, 1, DO_TableOfReal_formula);
+		praat_addAction1 (klas, 0, U"Set value...", nullptr, 1, DO_TableOfReal_setValue);
+		praat_addAction1 (klas, 0, U"Sort by label...", nullptr, 1, DO_TableOfReal_sortByLabel);
+		praat_addAction1 (klas, 0, U"Sort by column...", nullptr, 1, DO_TableOfReal_sortByColumn);
+		praat_addAction1 (klas, 0, U"-- structure --", nullptr, 1, nullptr);
+		praat_addAction1 (klas, 0, U"Remove row (index)...", nullptr, 1, DO_TableOfReal_removeRow);
+		praat_addAction1 (klas, 0, U"Remove column (index)...", nullptr, 1, DO_TableOfReal_removeColumn);
+		praat_addAction1 (klas, 0, U"Insert row (index)...", nullptr, 1, DO_TableOfReal_insertRow);
+		praat_addAction1 (klas, 0, U"Insert column (index)...", nullptr, 1, DO_TableOfReal_insertColumn);
+		praat_addAction1 (klas, 0, U"-- set --", nullptr, 1, nullptr);
+		praat_addAction1 (klas, 0, U"Set row label (index)...", nullptr, 1, DO_TableOfReal_setRowLabel_index);
+		praat_addAction1 (klas, 0, U"Set row label (label)...", nullptr, 1, DO_TableOfReal_setRowLabel_label);
+		praat_addAction1 (klas, 0, U"Set column label (index)...", nullptr, 1, DO_TableOfReal_setColumnLabel_index);
+		praat_addAction1 (klas, 0, U"Set column label (label)...", nullptr, 1, DO_TableOfReal_setColumnLabel_label);
+	praat_addAction1 (klas, 0, U"Synthesize -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"Append", nullptr, 1, DO_TablesOfReal_append);
+	praat_addAction1 (klas, 0, U"Extract part -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"Extract row ranges...", nullptr, 1, DO_TableOfReal_extractRowRanges);
+		praat_addAction1 (klas, 0, U"Extract rows where column...", nullptr, 1, DO_TableOfReal_extractRowsWhereColumn);
+		praat_addAction1 (klas, 0, U"Extract rows where label...", nullptr, 1, DO_TableOfReal_extractRowsWhereLabel);
+		praat_addAction1 (klas, 0, U"Extract rows where...", nullptr, 1, DO_TableOfReal_extractRowsWhere);
+		praat_addAction1 (klas, 0, U"Extract column ranges...", nullptr, 1, DO_TableOfReal_extractColumnRanges);
+		praat_addAction1 (klas, 0, U"Extract columns where row...", nullptr, 1, DO_TableOfReal_extractColumnsWhereRow);
+		praat_addAction1 (klas, 0, U"Extract columns where label...", nullptr, 1, DO_TableOfReal_extractColumnsWhereLabel);
+		praat_addAction1 (klas, 0, U"Extract columns where...", nullptr, 1, DO_TableOfReal_extractColumnsWhere);
+	praat_addAction1 (klas, 0, U"Extract -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"Extract row labels as Strings", nullptr, 1, DO_TableOfReal_extractRowLabelsAsStrings);
+		praat_addAction1 (klas, 0, U"Extract column labels as Strings", nullptr, 1, DO_TableOfReal_extractColumnLabelsAsStrings);
+	praat_addAction1 (klas, 0, U"Convert -", nullptr, 0, nullptr);
+		praat_addAction1 (klas, 0, U"To Table...", nullptr, 1, DO_TableOfReal_to_Table);
+		praat_addAction1 (klas, 0, U"To Matrix", nullptr, 1, DO_TableOfReal_to_Matrix);
 }
 
 void praat_uvafon_stat_init ();
 void praat_uvafon_stat_init () {
 
 	Thing_recognizeClassesByName (classTableOfReal, classDistributions, classPairDistribution,
-		classTable, classLinearRegression, classLogisticRegression, NULL);
+		classTable, classLinearRegression, classLogisticRegression, nullptr);
 
 	Data_recognizeFileType (tabSeparatedFileRecognizer);
 
-	praat_addMenuCommand (U"Objects", U"New", U"Tables", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Table with column names...", 0, 1, DO_Table_createWithColumnNames);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Table without column names...", 0, 1, DO_Table_createWithoutColumnNames);
-		praat_addMenuCommand (U"Objects", U"New", U"Create Table...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Table_createWithoutColumnNames);
-		praat_addMenuCommand (U"Objects", U"New", U"Create TableOfReal...", 0, 1, DO_TableOfReal_create);
+	structTableEditor :: f_preferences ();
+
+	praat_addMenuCommand (U"Objects", U"New", U"Tables", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Table with column names...", nullptr, 1, DO_Table_createWithColumnNames);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Table without column names...", nullptr, 1, DO_Table_createWithoutColumnNames);
+		praat_addMenuCommand (U"Objects", U"New", U"Create Table...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Table_createWithoutColumnNames);
+		praat_addMenuCommand (U"Objects", U"New", U"Create TableOfReal...", nullptr, 1, DO_TableOfReal_create);
 
-	praat_addMenuCommand (U"Objects", U"Open", U"Read TableOfReal from headerless spreadsheet file...", 0, 0, DO_TableOfReal_readFromHeaderlessSpreadsheetFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from tab-separated file...", 0, 0, DO_Table_readFromTabSeparatedFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from comma-separated file...", 0, 0, DO_Table_readFromCommaSeparatedFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from whitespace-separated file...", 0, 0, DO_Table_readFromTableFile);
-	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from table file...", 0, praat_HIDDEN, DO_Table_readFromTableFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read TableOfReal from headerless spreadsheet file...", nullptr, 0, DO_TableOfReal_readFromHeaderlessSpreadsheetFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from tab-separated file...", nullptr, 0, DO_Table_readFromTabSeparatedFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from comma-separated file...", nullptr, 0, DO_Table_readFromCommaSeparatedFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from whitespace-separated file...", nullptr, 0, DO_Table_readFromTableFile);
+	praat_addMenuCommand (U"Objects", U"Open", U"Read Table from table file...", nullptr, praat_HIDDEN, DO_Table_readFromTableFile);
 
-	praat_addAction1 (classDistributions, 0, U"Distributions help", 0, 0, DO_Distributions_help);
+	praat_addAction1 (classDistributions, 0, U"Distributions help", nullptr, 0, DO_Distributions_help);
 	praat_TableOfReal_init (classDistributions);
 	praat_addAction1 (classDistributions, 1, U"Get probability (label)...", U"Get value...", 1, DO_Distributions_getProbability);
-	praat_addAction1 (classDistributions, 0, U"-- get from two --", U"Get probability (label)...", 1, 0);
+	praat_addAction1 (classDistributions, 0, U"-- get from two --", U"Get probability (label)...", 1, nullptr);
 	praat_addAction1 (classDistributions, 2, U"Get mean absolute difference...", U"-- get from two --", 1, DO_Distributionses_getMeanAbsoluteDifference);
-	praat_addAction1 (classDistributions, 0, U"-- add --", U"Append", 1, 0);
+	praat_addAction1 (classDistributions, 0, U"-- add --", U"Append", 1, nullptr);
 	praat_addAction1 (classDistributions, 0, U"Add", U"-- add --", 1, DO_Distributionses_add);
-	praat_addAction1 (classDistributions, 0, U"Generate", 0, 0, 0);
-		praat_addAction1 (classDistributions, 0, U"To Strings...", 0, 0, DO_Distributions_to_Strings);
-		praat_addAction1 (classDistributions, 0, U"To Strings (exact)...", 0, 0, DO_Distributions_to_Strings_exact);
-
-	praat_addAction1 (classLogisticRegression, 0, U"Draw boundary...", 0, 0, DO_LogisticRegression_drawBoundary);
-
-	praat_addAction1 (classPairDistribution, 0, U"PairDistribution help", 0, 0, DO_PairDistribution_help);
-	praat_addAction1 (classPairDistribution, 0, U"To Table", 0, 0, DO_PairDistribution_to_Table);
-	praat_addAction1 (classPairDistribution, 1, U"To Stringses...", 0, 0, DO_PairDistribution_to_Stringses);
-	praat_addAction1 (classPairDistribution, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classPairDistribution, 1, U"Get number of pairs", 0, 1, DO_PairDistribution_getNumberOfPairs);
-		praat_addAction1 (classPairDistribution, 1, U"Get string1...", 0, 1, DO_PairDistribution_getString1);
-		praat_addAction1 (classPairDistribution, 1, U"Get string2...", 0, 1, DO_PairDistribution_getString2);
-		praat_addAction1 (classPairDistribution, 1, U"Get weight...", 0, 1, DO_PairDistribution_getWeight);
-		praat_addAction1 (classPairDistribution, 1, U"-- get fraction correct --", 0, 1, 0);
-		praat_addAction1 (classPairDistribution, 1, U"Get fraction correct (maximum likelihood)", 0, 1, DO_PairDistribution_getFractionCorrect_maximumLikelihood);
-		praat_addAction1 (classPairDistribution, 1, U"Get fraction correct (probability matching)", 0, 1, DO_PairDistribution_getFractionCorrect_probabilityMatching);
-	praat_addAction1 (classPairDistribution, 0, U"Modify -", 0, 0, 0);
-	praat_addAction1 (classPairDistribution, 0, U"Remove zero weights", 0, 1, DO_PairDistribution_removeZeroWeights);
-	praat_addAction1 (classPairDistribution, 0, U"Swap inputs and outputs", 0, 1, DO_PairDistribution_swapInputsAndOutputs);
-
-	praat_addAction1 (classTable, 0, U"Table help", 0, 0, DO_Table_help);
-	praat_addAction1 (classTable, 1, U"Save as tab-separated file...", 0, 0, DO_Table_writeToTabSeparatedFile);
-	praat_addAction1 (classTable, 1, U"Save as comma-separated file...", 0, 0, DO_Table_writeToCommaSeparatedFile);
-	praat_addAction1 (classTable, 1, U"Save as table file...", 0, praat_HIDDEN, DO_Table_writeToTabSeparatedFile);
-	praat_addAction1 (classTable, 1, U"Write to table file...", 0, praat_HIDDEN, DO_Table_writeToTabSeparatedFile);
-	praat_addAction1 (classTable, 1, U"View & Edit", 0, praat_ATTRACTIVE, DO_Table_edit);
-	praat_addAction1 (classTable, 1, U"Edit", 0, praat_HIDDEN, DO_Table_edit);
-	praat_addAction1 (classTable, 0, U"Draw -", 0, 0, 0);
-		praat_addAction1 (classTable, 0, U"Scatter plot...", 0, 1, DO_Table_scatterPlot);
-		praat_addAction1 (classTable, 0, U"Scatter plot (mark)...", 0, 1, DO_Table_scatterPlot_mark);
-		praat_addAction1 (classTable, 0, U"Draw ellipse (standard deviation)...", 0, 1, DO_Table_drawEllipse);
-	praat_addAction1 (classTable, 0, U"Query -", 0, 0, 0);
-		praat_addAction1 (classTable, 1, U"List...", 0, 1, DO_Table_list);
-		praat_addAction1 (classTable, 1, U"-- get structure --", 0, 1, 0);
-		praat_addAction1 (classTable, 1, U"Get number of rows", 0, 1, DO_Table_getNumberOfRows);
-		praat_addAction1 (classTable, 1, U"Get number of columns", 0, 1, DO_Table_getNumberOfColumns);
-		praat_addAction1 (classTable, 1, U"Get column label...", 0, 1, DO_Table_getColumnLabel);
-		praat_addAction1 (classTable, 1, U"Get column index...", 0, 1, DO_Table_getColumnIndex);
-		praat_addAction1 (classTable, 1, U"-- get value --", 0, 1, 0);
-		praat_addAction1 (classTable, 1, U"Get value...", 0, 1, DO_Table_getValue);
-		praat_addAction1 (classTable, 1, U"Search column...", 0, 1, DO_Table_searchColumn);
-		praat_addAction1 (classTable, 1, U"-- statistics --", 0, 1, 0);
-		praat_addAction1 (classTable, 1, U"Statistics tutorial", 0, 1, DO_StatisticsTutorial);
-		praat_addAction1 (classTable, 1, U"-- get stats --", 0, 1, 0);
-		praat_addAction1 (classTable, 1, U"Get quantile...", 0, 1, DO_Table_getQuantile);
-		praat_addAction1 (classTable, 1, U"Get minimum...", 0, 1, DO_Table_getMinimum);
-		praat_addAction1 (classTable, 1, U"Get maximum...", 0, 1, DO_Table_getMaximum);
-		praat_addAction1 (classTable, 1, U"Get mean...", 0, 1, DO_Table_getMean);
-		praat_addAction1 (classTable, 1, U"Get group mean...", 0, 1, DO_Table_getGroupMean);
-		praat_addAction1 (classTable, 1, U"Get standard deviation...", 0, 1, DO_Table_getStandardDeviation);
-		praat_addAction1 (classTable, 1, U"-- report stats --", 0, 1, 0);
-		praat_addAction1 (classTable, 1, U"Report mean (Student t)...", 0, 1, DO_Table_reportMean_studentT);
-		/*praat_addAction1 (classTable, 1, U"Report standard deviation...", 0, 1, DO_Table_reportStandardDeviation);*/
-		praat_addAction1 (classTable, 1, U"Report difference (Student t)...", 0, 1, DO_Table_reportDifference_studentT);
-		praat_addAction1 (classTable, 1, U"Report group mean (Student t)...", 0, 1, DO_Table_reportGroupMean_studentT);
-		praat_addAction1 (classTable, 1, U"Report group difference (Student t)...", 0, 1, DO_Table_reportGroupDifference_studentT);
-		praat_addAction1 (classTable, 1, U"Report group difference (Wilcoxon rank sum)...", 0, 1, DO_Table_reportGroupDifference_wilcoxonRankSum);
-		praat_addAction1 (classTable, 1, U"Report correlation (Pearson r)...", 0, 1, DO_Table_reportCorrelation_pearsonR);
-		praat_addAction1 (classTable, 1, U"Report correlation (Kendall tau)...", 0, 1, DO_Table_reportCorrelation_kendallTau);
-	praat_addAction1 (classTable, 0, U"Modify -", 0, 0, 0);
-		praat_addAction1 (classTable, 0, U"Set string value...", 0, 1, DO_Table_setStringValue);
-		praat_addAction1 (classTable, 0, U"Set numeric value...", 0, 1, DO_Table_setNumericValue);
-		praat_addAction1 (classTable, 0, U"Formula...", 0, 1, DO_Table_formula);
-		praat_addAction1 (classTable, 0, U"Formula (column range)...", 0, 1, DO_Table_formula_columnRange);
-		praat_addAction1 (classTable, 0, U"Sort rows...", 0, 1, DO_Table_sortRows);
-		praat_addAction1 (classTable, 0, U"Randomize rows", 0, 1, DO_Table_randomizeRows);
-		praat_addAction1 (classTable, 0, U"Reflect rows", 0, 1, DO_Table_reflectRows);
-		praat_addAction1 (classTable, 0, U"-- structure --", 0, 1, 0);
-		praat_addAction1 (classTable, 0, U"Append row", 0, 1, DO_Table_appendRow);
-		praat_addAction1 (classTable, 0, U"Append column...", 0, 1, DO_Table_appendColumn);
-		praat_addAction1 (classTable, 0, U"Append sum column...", 0, 1, DO_Table_appendSumColumn);
-		praat_addAction1 (classTable, 0, U"Append difference column...", 0, 1, DO_Table_appendDifferenceColumn);
-		praat_addAction1 (classTable, 0, U"Append product column...", 0, 1, DO_Table_appendProductColumn);
-		praat_addAction1 (classTable, 0, U"Append quotient column...", 0, 1, DO_Table_appendQuotientColumn);
-		praat_addAction1 (classTable, 0, U"Remove row...", 0, 1, DO_Table_removeRow);
-		praat_addAction1 (classTable, 0, U"Remove column...", 0, 1, DO_Table_removeColumn);
-		praat_addAction1 (classTable, 0, U"Insert row...", 0, 1, DO_Table_insertRow);
-		praat_addAction1 (classTable, 0, U"Insert column...", 0, 1, DO_Table_insertColumn);
-		praat_addAction1 (classTable, 0, U"-- set --", 0, 1, 0);
-		praat_addAction1 (classTable, 0, U"Set column label (index)...", 0, 1, DO_Table_setColumnLabel_index);
-		praat_addAction1 (classTable, 0, U"Set column label (label)...", 0, 1, DO_Table_setColumnLabel_label);
-	praat_addAction1 (classTable, 0, U"Analyse -", 0, 0, 0);
-		praat_addAction1 (classTable, 0, U"To linear regression", 0, 1, DO_Table_to_LinearRegression);
-		praat_addAction1 (classTable, 0, U"To logistic regression...", 0, 1, DO_Table_to_LogisticRegression);
-	praat_addAction1 (classTable, 0, U"Synthesize -", 0, 0, 0);
-		praat_addAction1 (classTable, 0, U"Append", 0, 1, DO_Tables_append);
-	praat_addAction1 (classTable, 0, U"Generate -", 0, 0, 0);
-		praat_addAction1 (classTable, 1, U"Draw row from distribution...", 0, 1, DO_Table_drawRowFromDistribution);
-	praat_addAction1 (classTable, 0, U"Extract -", 0, 0, 0);
-		praat_addAction1 (classTable, 0, U"Extract rows where column (number)...", 0, 1, DO_Table_extractRowsWhereColumn_number);
-		praat_addAction1 (classTable, 0, U"Extract rows where column...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Table_extractRowsWhereColumn_number);
-		praat_addAction1 (classTable, 0, U"Select rows where column...", 0, praat_DEPTH_1 + praat_HIDDEN, DO_Table_extractRowsWhereColumn_number);
-		praat_addAction1 (classTable, 0, U"Extract rows where column (text)...", 0, 1, DO_Table_extractRowsWhereColumn_text);
-		praat_addAction1 (classTable, 0, U"Transpose", 0, 1, DO_Table_transpose);
-		praat_addAction1 (classTable, 0, U"Collapse rows...", 0, 1, DO_Table_collapseRows);
-		praat_addAction1 (classTable, 0, U"Rows to columns...", 0, 1, DO_Table_rowsToColumns);
-	praat_addAction1 (classTable, 0, U"Down to TableOfReal...", 0, 0, DO_Table_to_TableOfReal);
-
-	praat_addAction1 (classTableOfReal, 0, U"TableOfReal help", 0, 0, DO_TableOfReal_help);
+	praat_addAction1 (classDistributions, 0, U"Generate", nullptr, 0, nullptr);   // FIXME no hyphen?
+		praat_addAction1 (classDistributions, 0, U"To Strings...", nullptr, 0, DO_Distributions_to_Strings);
+		praat_addAction1 (classDistributions, 0, U"To Strings (exact)...", nullptr, 0, DO_Distributions_to_Strings_exact);
+
+	praat_addAction1 (classLogisticRegression, 0, U"Draw boundary...", nullptr, 0, DO_LogisticRegression_drawBoundary);
+
+	praat_addAction1 (classPairDistribution, 0, U"PairDistribution help", nullptr, 0, DO_PairDistribution_help);
+	praat_addAction1 (classPairDistribution, 0, U"To Table", nullptr, 0, DO_PairDistribution_to_Table);
+	praat_addAction1 (classPairDistribution, 1, U"To Stringses...", nullptr, 0, DO_PairDistribution_to_Stringses);
+	praat_addAction1 (classPairDistribution, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classPairDistribution, 1, U"Get number of pairs", nullptr, 1, DO_PairDistribution_getNumberOfPairs);
+		praat_addAction1 (classPairDistribution, 1, U"Get string1...", nullptr, 1, DO_PairDistribution_getString1);
+		praat_addAction1 (classPairDistribution, 1, U"Get string2...", nullptr, 1, DO_PairDistribution_getString2);
+		praat_addAction1 (classPairDistribution, 1, U"Get weight...", nullptr, 1, DO_PairDistribution_getWeight);
+		praat_addAction1 (classPairDistribution, 1, U"-- get fraction correct --", nullptr, 1, nullptr);
+		praat_addAction1 (classPairDistribution, 1, U"Get fraction correct (maximum likelihood)", nullptr, 1, DO_PairDistribution_getFractionCorrect_maximumLikelihood);
+		praat_addAction1 (classPairDistribution, 1, U"Get fraction correct (probability matching)", nullptr, 1, DO_PairDistribution_getFractionCorrect_probabilityMatching);
+	praat_addAction1 (classPairDistribution, 0, U"Modify -", nullptr, 0, nullptr);
+	praat_addAction1 (classPairDistribution, 0, U"Remove zero weights", nullptr, 1, DO_PairDistribution_removeZeroWeights);
+	praat_addAction1 (classPairDistribution, 0, U"Swap inputs and outputs", nullptr, 1, DO_PairDistribution_swapInputsAndOutputs);
+
+	praat_addAction1 (classTable, 0, U"Table help", nullptr, 0, DO_Table_help);
+	praat_addAction1 (classTable, 1, U"Save as tab-separated file...", nullptr, 0, DO_Table_writeToTabSeparatedFile);
+	praat_addAction1 (classTable, 1, U"Save as comma-separated file...", nullptr, 0, DO_Table_writeToCommaSeparatedFile);
+	praat_addAction1 (classTable, 1, U"Save as table file...", nullptr, praat_HIDDEN, DO_Table_writeToTabSeparatedFile);
+	praat_addAction1 (classTable, 1, U"Write to table file...", nullptr, praat_HIDDEN, DO_Table_writeToTabSeparatedFile);
+	praat_addAction1 (classTable, 1, U"View & Edit", nullptr, praat_ATTRACTIVE, DO_Table_edit);
+	praat_addAction1 (classTable, 1, U"Edit", nullptr, praat_HIDDEN, DO_Table_edit);
+	praat_addAction1 (classTable, 0, U"Draw -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 0, U"Scatter plot...", nullptr, 1, DO_Table_scatterPlot);
+		praat_addAction1 (classTable, 0, U"Scatter plot (mark)...", nullptr, 1, DO_Table_scatterPlot_mark);
+		praat_addAction1 (classTable, 0, U"Draw ellipse (standard deviation)...", nullptr, 1, DO_Table_drawEllipse);
+	praat_addAction1 (classTable, 0, U"Query -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 1, U"List...", nullptr, 1, DO_Table_list);
+		praat_addAction1 (classTable, 1, U"-- get structure --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 1, U"Get number of rows", nullptr, 1, DO_Table_getNumberOfRows);
+		praat_addAction1 (classTable, 1, U"Get number of columns", nullptr, 1, DO_Table_getNumberOfColumns);
+		praat_addAction1 (classTable, 1, U"Get column label...", nullptr, 1, DO_Table_getColumnLabel);
+		praat_addAction1 (classTable, 1, U"Get column index...", nullptr, 1, DO_Table_getColumnIndex);
+		praat_addAction1 (classTable, 1, U"-- get value --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 1, U"Get value...", nullptr, 1, DO_Table_getValue);
+		praat_addAction1 (classTable, 1, U"Search column...", nullptr, 1, DO_Table_searchColumn);
+		praat_addAction1 (classTable, 1, U"-- statistics --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 1, U"Statistics tutorial", nullptr, 1, DO_StatisticsTutorial);
+		praat_addAction1 (classTable, 1, U"-- get stats --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 1, U"Get quantile...", nullptr, 1, DO_Table_getQuantile);
+		praat_addAction1 (classTable, 1, U"Get minimum...", nullptr, 1, DO_Table_getMinimum);
+		praat_addAction1 (classTable, 1, U"Get maximum...", nullptr, 1, DO_Table_getMaximum);
+		praat_addAction1 (classTable, 1, U"Get mean...", nullptr, 1, DO_Table_getMean);
+		praat_addAction1 (classTable, 1, U"Get group mean...", nullptr, 1, DO_Table_getGroupMean);
+		praat_addAction1 (classTable, 1, U"Get standard deviation...", nullptr, 1, DO_Table_getStandardDeviation);
+		praat_addAction1 (classTable, 1, U"-- report stats --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 1, U"Report mean (Student t)...", nullptr, 1, DO_Table_reportMean_studentT);
+		/*praat_addAction1 (classTable, 1, U"Report standard deviation...", nullptr, 1, DO_Table_reportStandardDeviation);*/
+		praat_addAction1 (classTable, 1, U"Report difference (Student t)...", nullptr, 1, DO_Table_reportDifference_studentT);
+		praat_addAction1 (classTable, 1, U"Report group mean (Student t)...", nullptr, 1, DO_Table_reportGroupMean_studentT);
+		praat_addAction1 (classTable, 1, U"Report group difference (Student t)...", nullptr, 1, DO_Table_reportGroupDifference_studentT);
+		praat_addAction1 (classTable, 1, U"Report group difference (Wilcoxon rank sum)...", nullptr, 1, DO_Table_reportGroupDifference_wilcoxonRankSum);
+		praat_addAction1 (classTable, 1, U"Report correlation (Pearson r)...", nullptr, 1, DO_Table_reportCorrelation_pearsonR);
+		praat_addAction1 (classTable, 1, U"Report correlation (Kendall tau)...", nullptr, 1, DO_Table_reportCorrelation_kendallTau);
+	praat_addAction1 (classTable, 0, U"Modify -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 0, U"Set string value...", nullptr, 1, DO_Table_setStringValue);
+		praat_addAction1 (classTable, 0, U"Set numeric value...", nullptr, 1, DO_Table_setNumericValue);
+		praat_addAction1 (classTable, 0, U"Formula...", nullptr, 1, DO_Table_formula);
+		praat_addAction1 (classTable, 0, U"Formula (column range)...", nullptr, 1, DO_Table_formula_columnRange);
+		praat_addAction1 (classTable, 0, U"Sort rows...", nullptr, 1, DO_Table_sortRows);
+		praat_addAction1 (classTable, 0, U"Randomize rows", nullptr, 1, DO_Table_randomizeRows);
+		praat_addAction1 (classTable, 0, U"Reflect rows", nullptr, 1, DO_Table_reflectRows);
+		praat_addAction1 (classTable, 0, U"-- structure --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 0, U"Append row", nullptr, 1, DO_Table_appendRow);
+		praat_addAction1 (classTable, 0, U"Append column...", nullptr, 1, DO_Table_appendColumn);
+		praat_addAction1 (classTable, 0, U"Append sum column...", nullptr, 1, DO_Table_appendSumColumn);
+		praat_addAction1 (classTable, 0, U"Append difference column...", nullptr, 1, DO_Table_appendDifferenceColumn);
+		praat_addAction1 (classTable, 0, U"Append product column...", nullptr, 1, DO_Table_appendProductColumn);
+		praat_addAction1 (classTable, 0, U"Append quotient column...", nullptr, 1, DO_Table_appendQuotientColumn);
+		praat_addAction1 (classTable, 0, U"Remove row...", nullptr, 1, DO_Table_removeRow);
+		praat_addAction1 (classTable, 0, U"Remove column...", nullptr, 1, DO_Table_removeColumn);
+		praat_addAction1 (classTable, 0, U"Insert row...", nullptr, 1, DO_Table_insertRow);
+		praat_addAction1 (classTable, 0, U"Insert column...", nullptr, 1, DO_Table_insertColumn);
+		praat_addAction1 (classTable, 0, U"-- set --", nullptr, 1, nullptr);
+		praat_addAction1 (classTable, 0, U"Set column label (index)...", nullptr, 1, DO_Table_setColumnLabel_index);
+		praat_addAction1 (classTable, 0, U"Set column label (label)...", nullptr, 1, DO_Table_setColumnLabel_label);
+	praat_addAction1 (classTable, 0, U"Analyse -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 0, U"To linear regression", nullptr, 1, DO_Table_to_LinearRegression);
+		praat_addAction1 (classTable, 0, U"To logistic regression...", nullptr, 1, DO_Table_to_LogisticRegression);
+	praat_addAction1 (classTable, 0, U"Synthesize -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 0, U"Append", nullptr, 1, DO_Tables_append);
+	praat_addAction1 (classTable, 0, U"Generate -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 1, U"Draw row from distribution...", nullptr, 1, DO_Table_drawRowFromDistribution);
+	praat_addAction1 (classTable, 0, U"Extract -", nullptr, 0, nullptr);
+		praat_addAction1 (classTable, 0, U"Extract rows where column (number)...", nullptr, 1, DO_Table_extractRowsWhereColumn_number);
+		praat_addAction1 (classTable, 0, U"Extract rows where column...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Table_extractRowsWhereColumn_number);
+		praat_addAction1 (classTable, 0, U"Select rows where column...", nullptr, praat_DEPTH_1 + praat_HIDDEN, DO_Table_extractRowsWhereColumn_number);
+		praat_addAction1 (classTable, 0, U"Extract rows where column (text)...", nullptr, 1, DO_Table_extractRowsWhereColumn_text);
+		praat_addAction1 (classTable, 0, U"Transpose", nullptr, 1, DO_Table_transpose);
+		praat_addAction1 (classTable, 0, U"Collapse rows...", nullptr, 1, DO_Table_collapseRows);
+		praat_addAction1 (classTable, 0, U"Rows to columns...", nullptr, 1, DO_Table_rowsToColumns);
+	praat_addAction1 (classTable, 0, U"Down to TableOfReal...", nullptr, 0, DO_Table_to_TableOfReal);
+
+	praat_addAction1 (classTableOfReal, 0, U"TableOfReal help", nullptr, 0, DO_TableOfReal_help);
 	praat_TableOfReal_init (classTableOfReal);
 
-	praat_addAction2 (classPairDistribution, 1, classDistributions, 1, U"Get fraction correct...", 0, 0, DO_PairDistribution_Distributions_getFractionCorrect);
+	praat_addAction2 (classPairDistribution, 1, classDistributions, 1, U"Get fraction correct...", nullptr, 0, DO_PairDistribution_Distributions_getFractionCorrect);
 }
 
 /* End of file praat_Stat.cpp */
diff --git a/sys/ButtonEditor.cpp b/sys/ButtonEditor.cpp
index dbde3b0..f668277 100644
--- a/sys/ButtonEditor.cpp
+++ b/sys/ButtonEditor.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1996-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ButtonEditor.h"
@@ -33,11 +32,11 @@ Thing_implement (ButtonEditor, HyperPage, 0);
 	#define BUTTON_WIDTH  96
 #endif
 
-static void drawMenuCommand (ButtonEditor me, praat_Command cmd, long i) {
+static void drawMenuCommand (ButtonEditor me, Praat_Command cmd, long i) {
 	static MelderString text { 0 };
-	int isAdded = cmd -> uniqueID != 0 || cmd -> script != NULL;
-	int isHidden = cmd -> hidden;
-	int isToggled = cmd -> toggled;
+	bool isAdded = cmd -> uniqueID != 0 || cmd -> script != nullptr;
+	bool isHidden = cmd -> hidden;
+	bool isToggled = cmd -> toggled;
 	const char32 *clickText = isHidden ? (isToggled ? (isAdded ? U"REMOVED" : U"HIDDEN") : U"hidden") :
 		(isToggled ? U"SHOWN" :  (isAdded ? (cmd -> uniqueID ? U"ADDED" : U"START-UP") : U"shown"));
 	MelderString_empty (& text);
@@ -69,10 +68,10 @@ static void drawMenuCommand (ButtonEditor me, praat_Command cmd, long i) {
 		cmd -> depth * 0.3, 0.4, 0.0, 0.0, 0);
 }
 
-static void drawAction (ButtonEditor me, praat_Command cmd, long i) {
+static void drawAction (ButtonEditor me, Praat_Command cmd, long i) {
 	static MelderString text { 0 };
-	int isAdded = cmd -> uniqueID != 0 || cmd -> script != NULL;
-	int isHidden = cmd -> hidden, isToggled = cmd -> toggled;
+	bool isAdded = cmd -> uniqueID != 0 || cmd -> script != nullptr;
+	bool isHidden = cmd -> hidden, isToggled = cmd -> toggled;
 	const char32 *clickText = isHidden ? (isToggled ? (isAdded ? U"REMOVED" : U"HIDDEN") : U"hidden") :
 		(isToggled ? U"SHOWN" :  (isAdded ? (cmd -> uniqueID ? U"ADDED" : U"START-UP") : U"shown"));
 	int n1 = cmd -> n1;
@@ -128,32 +127,32 @@ static void drawAction (ButtonEditor me, praat_Command cmd, long i) {
 }
 
 void structButtonEditor :: v_draw () {
-	Graphics_clearWs (g);
+	Graphics_clearWs (our graphics.get());
 	switch (show) {
 		case 1:
 			for (long i = 1, n = praat_getNumberOfMenuCommands (); i <= n; i ++) {
-				praat_Command cmd = praat_getMenuCommand (i);
+				Praat_Command cmd = praat_getMenuCommand (i);
 				if (str32equ (cmd -> window, U"Objects"))
 					drawMenuCommand (this, praat_getMenuCommand (i), i);
 			}
 			break;
 		case 2:
 			for (long i = 1, n = praat_getNumberOfMenuCommands (); i <= n; i ++) {
-				praat_Command cmd = praat_getMenuCommand (i);
+				Praat_Command cmd = praat_getMenuCommand (i);
 				if (str32equ (cmd -> window, U"Picture"))
 					drawMenuCommand (this, praat_getMenuCommand (i), i);
 			}
 			break;
 		case 3:
 			for (long i = 1, n = praat_getNumberOfMenuCommands (); i <= n; i ++) {
-				praat_Command cmd = praat_getMenuCommand (i);
+				Praat_Command cmd = praat_getMenuCommand (i);
 				if (! str32equ (cmd -> window, U"Objects") && ! str32equ (cmd -> window, U"Picture"))
 					drawMenuCommand (this, praat_getMenuCommand (i), i);
 			}
 			break;
 		case 4:
 			for (long i = 1, n = praat_getNumberOfActions (); i <= n; i ++) {
-				praat_Command cmd = praat_getAction (i);
+				Praat_Command cmd = praat_getAction (i);
 				const char32 *klas = cmd -> class1 -> className;
 				if (str32cmp (klas, U"N") < 0)
 					drawAction (this, praat_getAction (i), i);
@@ -161,7 +160,7 @@ void structButtonEditor :: v_draw () {
 			break;
 		case 5:
 			for (long i = 1, n = praat_getNumberOfActions (); i <= n; i ++) {
-				praat_Command cmd = praat_getAction (i);
+				Praat_Command cmd = praat_getAction (i);
 				const char32 *klas = cmd -> class1 -> className;
 				if (str32cmp (klas, U"N") >= 0)
 					drawAction (this, praat_getAction (i), i);
@@ -176,7 +175,7 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 	switch (title [0]) {
 		case 'a': {   // toggle visibility of action
 			long i = Melder_atoi (& title [1]);
-			praat_Command action = praat_getAction (i);
+			Praat_Command action = praat_getAction (i);
 			if (! action) return 0;
 			if (action -> hidden)
 				praat_showAction (action -> class1, action -> class2, action -> class3, action -> title);
@@ -185,7 +184,7 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 		} break;
 		case 'm': {   // toggle visibility of menu command
 			long i = Melder_atoi (& title [1]);
-			praat_Command menuCommand = praat_getMenuCommand (i);
+			Praat_Command menuCommand = praat_getMenuCommand (i);
 			if (! menuCommand) return 0;
 			if (menuCommand -> hidden)
 				praat_showMenuCommand (menuCommand -> window, menuCommand -> menu, menuCommand -> title);
@@ -194,7 +193,7 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 		} break;
 		case 'e': {   // execute action
 			long i = Melder_atoi (& title [1]);
-			praat_Command action = praat_getAction (i);
+			Praat_Command action = praat_getAction (i);
 			if (! action || ! action -> callback) return 0;
 			if (action -> title) {
 				UiHistory_write (U"\n");
@@ -202,13 +201,13 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 			}
 			if (action -> script) {
 				try {
-					DO_RunTheScriptFromAnyAddedMenuCommand (NULL, 0, NULL, action -> script, NULL, NULL, false, NULL);
+					DO_RunTheScriptFromAnyAddedMenuCommand (nullptr, 0, nullptr, action -> script, nullptr, nullptr, false, nullptr);
 				} catch (MelderError) {
 					Melder_flushError (U"Command not executed.");
 				}
 			} else {
 				try {
-					action -> callback (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+					action -> callback (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 				} catch (MelderError) {
 					Melder_flushError (U"Command not executed.");
 				}
@@ -217,7 +216,7 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 		} break;
 		case 'p': {   // perform menu command
 			long i = Melder_atoi (& title [1]);
-			praat_Command menuCommand = praat_getMenuCommand (i);
+			Praat_Command menuCommand = praat_getMenuCommand (i);
 			if (! menuCommand || ! menuCommand -> callback) return 0;
 			if (menuCommand -> title) {
 				UiHistory_write (U"\n");
@@ -225,13 +224,13 @@ int structButtonEditor :: v_goToPage (const char32 *title) {
 			}
 			if (menuCommand -> script) {
 				try {
-					DO_RunTheScriptFromAnyAddedMenuCommand (NULL, 0, NULL, menuCommand -> script, NULL, NULL, false, NULL);
+					DO_RunTheScriptFromAnyAddedMenuCommand (nullptr, 0, nullptr, menuCommand -> script, nullptr, nullptr, false, nullptr);
 				} catch (MelderError) {
 					Melder_flushError (U"Command not executed.");
 				}
 			} else {
 				try {
-					menuCommand -> callback (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+					menuCommand -> callback (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 				} catch (MelderError) {
 					Melder_flushError (U"Command not executed.");
 				}
@@ -249,11 +248,11 @@ static void which (ButtonEditor me, int show) {
 	HyperPage_goToPage (me, U"Buttons");
 }
 
-static void gui_radiobutton_cb_objects (I, GuiRadioButtonEvent event) { (void) event; which ((ButtonEditor) void_me, 1); }
-static void gui_radiobutton_cb_picture (I, GuiRadioButtonEvent event) { (void) event; which ((ButtonEditor) void_me, 2); }
-static void gui_radiobutton_cb_editors (I, GuiRadioButtonEvent event) { (void) event; which ((ButtonEditor) void_me, 3); }
-static void gui_radiobutton_cb_actionsAM (I, GuiRadioButtonEvent event) { (void) event; which ((ButtonEditor) void_me, 4); }
-static void gui_radiobutton_cb_actionsNZ (I, GuiRadioButtonEvent event) { (void) event; which ((ButtonEditor) void_me, 5); }
+static void gui_radiobutton_cb_objects (ButtonEditor me, GuiRadioButtonEvent /* event */) { which (me, 1); }
+static void gui_radiobutton_cb_picture (ButtonEditor me, GuiRadioButtonEvent /* event */) { which (me, 2); }
+static void gui_radiobutton_cb_editors (ButtonEditor me, GuiRadioButtonEvent /* event */) { which (me, 3); }
+static void gui_radiobutton_cb_actionsAM (ButtonEditor me, GuiRadioButtonEvent /* event */) { which (me, 4); }
+static void gui_radiobutton_cb_actionsNZ (ButtonEditor me, GuiRadioButtonEvent /* event */) { which (me, 5); }
 
 void structButtonEditor :: v_createChildren () {
 	ButtonEditor_Parent :: v_createChildren ();
@@ -276,19 +275,19 @@ void structButtonEditor :: v_createChildren () {
 	GuiRadioGroup_end ();
 }
 
-static void menu_cb_ButtonEditorHelp (EDITOR_ARGS) { EDITOR_IAM (ButtonEditor); Melder_help (U"ButtonEditor"); }
+static void menu_cb_ButtonEditorHelp (ButtonEditor /* me */, EDITOR_ARGS_DIRECT) { Melder_help (U"ButtonEditor"); }
 
 void structButtonEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	ButtonEditor_Parent :: v_createHelpMenuItems (menu);
 	EditorMenu_addCommand (menu, U"ButtonEditor help", '?', menu_cb_ButtonEditorHelp);
 }
 
-ButtonEditor ButtonEditor_create () {
+autoButtonEditor ButtonEditor_create () {
 	try {
 		autoButtonEditor me = Thing_new (ButtonEditor);
-		HyperPage_init (me.peek(), U"Buttons", NULL);
-		which (me.peek(), 1);
-		return me.transfer();
+		HyperPage_init (me.get(), U"Buttons", nullptr);
+		which (me.get(), 1);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Buttons window not created.");
 	}
diff --git a/sys/ButtonEditor.h b/sys/ButtonEditor.h
index b1a1e76..10399bc 100644
--- a/sys/ButtonEditor.h
+++ b/sys/ButtonEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1996-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "HyperPage.h"
@@ -37,7 +36,7 @@ Thing_define (ButtonEditor, HyperPage) {
 		override;
 };
 
-ButtonEditor ButtonEditor_create ();
+autoButtonEditor ButtonEditor_create ();
 
 /* End of file ButtonEditor.h */
 #endif
diff --git a/sys/Collection.cpp b/sys/Collection.cpp
index 7199432..627a373 100644
--- a/sys/Collection.cpp
+++ b/sys/Collection.cpp
@@ -1,20 +1,19 @@
 /* Collection.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
@@ -22,56 +21,40 @@
 
 /********** class Collection **********/
 
-void structCollection :: v_destroy () {
-	if (item != NULL) {
-		if (! _dontOwnItems) {
-			for (long i = 1; i <= size; i ++) {
-				forget (((Thing *) item) [i]);
-			}
-		}
-		item ++;   // base 1
-		Melder_free (item);
-	}
-	Collection_Parent :: v_destroy ();
-}
-
-void structCollection :: v_info () {
-	MelderInfo_writeLine (size, U" items");
-}
-
-void structCollection :: v_copy (thou) {
-	thouart (Collection);
-	thy item = NULL;   // kill shallow copy of item  // BUG
-	Collection_Parent :: v_copy (thee);
-	thy itemClass = itemClass;
-	thy _capacity = _capacity;
-	thy size = size;
-	thy item = Melder_calloc (void *, _capacity);   // filled with NULL
-	thy item --;   // immediately turn from base-0 into base-1  // BUG use NUMvector
-	for (long i = 1; i <= size; i ++) {
-		Thing itempie = (Thing) item [i];
-		if (_dontOwnItems) {
-			thy item [i] = itempie;   // reference copy: if me doesn't own the items, then thee shouldn't either   // NOTE: the items don't have to be Data
-		} else {
-			if (! Thing_isa (itempie, classData))
+void _CollectionOfDaata_v_copy (_CollectionOfDaata* me, _CollectionOfDaata* thee) {
+	thy at._elements = nullptr;   // set to null in case the inherited v_copy crashes
+	my structDaata :: v_copy (thee);
+	thy _ownershipInitialized = my _ownershipInitialized;
+	thy _ownItems = my _ownItems;
+	thy _capacity = my _capacity;
+	thy size = my size;
+	if (my _capacity > 0) {
+		thy at._elements = Melder_calloc (Daata, my _capacity);   // filled with null pointers
+		thy at._elements --;   // immediately turn from base-0 into base-1  // BUG use NUMvector
+	}
+	for (long i = 1; i <= my size; i ++) {
+		Daata itempie = my at [i];
+		if (my _ownItems) {
+			if (! Thing_isa (itempie, classDaata))
 				Melder_throw (U"Cannot copy item of class ", Thing_className (itempie), U".");
-			thy item [i] = Data_copy ((Data) itempie);
+			thy at [i] = Data_copy (itempie).releaseToAmbiguousOwner();
+		} else {
+			thy at [i] = itempie;   // reference copy: if me doesn't own the items, then thee shouldn't either   // NOTE: the items don't have to be Daata
 		}
 	}
 }
 
-bool structCollection :: v_equal (thou) {
-	thouart (Collection);
-	if (! Collection_Parent :: v_equal (thee)) return false;
-	if (size != thy size) return false;
-	for (long i = 1; i <= size; i ++) {
-		if (! Thing_isa ((Thing) item [i], classData))
+bool _CollectionOfDaata_v_equal (_CollectionOfDaata* me, _CollectionOfDaata* thee) {
+	if (! my structDaata :: v_equal (thee)) return false;
+	if (my size != thy size) return false;
+	for (long i = 1; i <= my size; i ++) {
+		if (! Thing_isa (my at [i], classDaata))
 			Melder_throw (U"Collection::equal: "
-				U"cannot compare items of class ", Thing_className ((Thing) item [i]), U".");
-		if (! Thing_isa ((Thing) thy item [i], classData))
+				U"cannot compare items of class ", Thing_className (my at [i]), U".");
+		if (! Thing_isa (thy at [i], classDaata))
 			Melder_throw (U"Collection::equal: "
-				U"cannot compare items of class ", Thing_className ((Thing) thy item [i]), U".");
-		bool equal = Data_equal ((Data) item [i], (Data) thy item [i]);
+				U"cannot compare items of class ", Thing_className (thy at [i]), U".");
+		bool equal = Data_equal (my at [i], thy at [i]);
 		//Melder_casual (U"classCollection_equal: ", equal,
 		//	U", item ", i,
 		//  U", types ", Thing_className (my item [i]), U" and ", Thing_className (thy item [i]));
@@ -80,23 +63,23 @@ bool structCollection :: v_equal (thou) {
 	return true;
 }
 
-bool structCollection :: v_canWriteAsEncoding (int encoding) {
-	for (long i = 1; i <= size; i ++) {
-		Data data = (Data) item [i];
-		if (data -> name != NULL && ! Melder_isEncodable (data -> name, encoding)) return false;
+bool _CollectionOfDaata_v_canWriteAsEncoding (_CollectionOfDaata* me, int encoding) {
+	for (long i = 1; i <= my size; i ++) {
+		Daata data = my at [i];
+		if (data -> name && ! Melder_isEncodable (data -> name, encoding)) return false;
 		if (! Data_canWriteAsEncoding (data, encoding)) return false;
 	}
 	return true;
 }
 
-void structCollection :: v_writeText (MelderFile file) {
-	texputi4 (file, size, U"size", 0,0,0,0,0);
-	texputintro (file, U"item []: ", size ? NULL : U"(empty)", 0,0,0,0);
-	for (long i = 1; i <= size; i ++) {
-		Thing thing = (Thing) item [i];
+void _CollectionOfDaata_v_writeText (_CollectionOfDaata* me, MelderFile file) {
+	texputi4 (file, my size, U"size", 0,0,0,0,0);
+	texputintro (file, U"item []: ", my size ? nullptr : U"(empty)", 0,0,0,0);
+	for (long i = 1; i <= my size; i ++) {
+		Daata thing = my at [i];
 		ClassInfo classInfo = thing -> classInfo;
 		texputintro (file, U"item [", Melder_integer (i), U"]:", 0,0,0);
-		if (! Thing_isa (thing, classData) || ! Data_canWriteText ((Data) thing))
+		if (! Thing_isa (thing, classDaata) || ! Data_canWriteText (thing))
 			Melder_throw (U"Objects of class ", classInfo -> className, U" cannot be written.");
 		texputw2 (file,
 			classInfo -> version > 0 ?
@@ -104,26 +87,26 @@ void structCollection :: v_writeText (MelderFile file) {
 				classInfo -> className,
 			U"class", 0,0,0,0,0);
 		texputw2 (file, thing -> name, U"name", 0,0,0,0,0);
-		Data_writeText ((Data) thing, file);
+		Data_writeText (thing, file);
 		texexdent (file);
 	}
 	texexdent (file);
 }
 
-void structCollection :: v_readText (MelderReadText text, int formatVersion) {
+void _CollectionOfDaata_v_readText (_CollectionOfDaata* me, MelderReadText text, int formatVersion) {
 	if (formatVersion < 0) {
 		long l_size;
 		autostring8 line = Melder_32to8 (MelderReadText_readLine (text));
-		if (line.peek() == NULL || ! sscanf (line.peek(), "%ld", & l_size) || l_size < 0)
+		if (! line.peek() || ! sscanf (line.peek(), "%ld", & l_size) || l_size < 0)
 			Melder_throw (U"Collection::readText: cannot read size.");
-		Collection_init (this, NULL, l_size);
+		my _grow (l_size);
 		for (long i = 1; i <= l_size; i ++) {
 			long itemNumberRead;
 			int n = 0, length, stringsRead;
 			char klas [200], nameTag [2000];
 			do {
 				line.reset (Melder_32to8 (MelderReadText_readLine (text)));
-				if (line.peek() == NULL)
+				if (! line.peek())
 					Melder_throw (U"Missing object line.");
 			} while (strncmp (line.peek(), "Object ", 7));
 			stringsRead = sscanf (line.peek(), "Object %ld: class %s %s%n", & itemNumberRead, klas, nameTag, & n);
@@ -134,446 +117,111 @@ void structCollection :: v_readText (MelderReadText text, int formatVersion) {
 					U" while expecting ", i, U".");
 			if (stringsRead == 3 && ! strequ (nameTag, "name"))
 				Melder_throw (U"Collection::readText: wrong header at object ", i, U".");
-			our item [i] = Thing_newFromClassName (Melder_peek8to32 (klas), NULL);
-			our size ++;
-			if (! Thing_isa ((Thing) our item [i], classData) || ! Data_canReadText ((Data) our item [i]))
-				Melder_throw (U"Cannot read item of class ", Thing_className ((Thing) our item [i]), U" in collection.");
-			Data_readText ((Data) our item [i], text, -1);
+			my at [i] = (Daata) Thing_newFromClassName (Melder_peek8to32 (klas), nullptr).releaseToAmbiguousOwner();
+			my size ++;
+			if (! Thing_isa (my at [i], classDaata) || ! Data_canReadText (my at [i]))
+				Melder_throw (U"Cannot read item of class ", Thing_className (my at [i]), U" in collection.");
+			Data_readText (my at [i], text, -1);
 			if (stringsRead == 3) {
 				if (line [n] == U' ') n ++;   // skip space character
 				length = strlen (line.peek()+n);
 				if (length > 0 && (line.peek()+n) [length - 1] == '\n')
 					(line.peek()+n) [length - 1] = '\0';
-				Thing_setName ((Thing) item [i], Melder_peek8to32 (line.peek()+n));
+				Thing_setName (my at [i], Melder_peek8to32 (line.peek()+n));
 			}
 		}
 	} else {
 		int32_t l_size = texgeti4 (text);
-		Collection_init (this, NULL, l_size);
+		my _grow (l_size);
 		for (int32_t i = 1; i <= l_size; i ++) {
 			autostring32 className = texgetw2 (text);
 			int elementFormatVersion;
-			our item [i] = Thing_newFromClassName (className.peek(), & elementFormatVersion);
-			our size ++;
-			if (! Thing_isa ((Thing) our item [i], classData) || ! Data_canReadText ((Data) our item [i]))
-				Melder_throw (U"Cannot read item of class ", Thing_className ((Thing) our item [i]), U" in collection.");
+			my at [i] = (Daata) Thing_newFromClassName (className.peek(), & elementFormatVersion).releaseToAmbiguousOwner();
+			my size ++;
+			if (! Thing_isa (my at [i], classDaata) || ! Data_canReadText (my at [i]))
+				Melder_throw (U"Cannot read item of class ", Thing_className (my at [i]), U" in collection.");
 			autostring32 objectName = texgetw2 (text);
-			Thing_setName ((Thing) our item [i], objectName.peek());
-			Data_readText ((Data) our item [i], text, elementFormatVersion);
+			Thing_setName (my at [i], objectName.peek());
+			Data_readText (my at [i], text, elementFormatVersion);
 		}
 	}
 }
 
-void structCollection :: v_writeBinary (FILE *f) {
-	binputi4 (our size, f);
-	for (long i = 1; i <= our size; i ++) {
-		Thing thing = (Thing) our item [i];
+void _CollectionOfDaata_v_writeBinary (_CollectionOfDaata* me, FILE *f) {
+	binputi4 (my size, f);
+	for (long i = 1; i <= my size; i ++) {
+		Daata thing = my at [i];
 		ClassInfo classInfo = thing -> classInfo;
-		if (! Thing_isa (thing, classData) || ! Data_canWriteBinary ((Data) thing))
+		if (! Thing_isa (thing, classDaata) || ! Data_canWriteBinary (thing))
 			Melder_throw (U"Objects of class ", classInfo -> className, U" cannot be written.");
 		binputw1 (classInfo -> version > 0 ?
 			Melder_cat (classInfo -> className, U" ", classInfo -> version) : classInfo -> className, f);
 		binputw2 (thing -> name, f);
-		Data_writeBinary ((Data) thing, f);
+		Data_writeBinary ((Daata) thing, f);
 	}
 }
 
-void structCollection :: v_readBinary (FILE *f, int formatVersion) {
+void _CollectionOfDaata_v_readBinary (_CollectionOfDaata* me, FILE *f, int formatVersion) {
 	if (formatVersion < 0) {
 		int32 l_size = bingeti4 (f);
 		if (l_size < 0)
 			Melder_throw (U"Empty collection.");
-		Collection_init (this, NULL, l_size);
+		my _grow (l_size);
 		for (int32_t i = 1; i <= l_size; i ++) {
 			char klas [200], name [2000];
 			if (fscanf (f, "%s%s", klas, name) < 2)   // BUG
 				Melder_throw (U"Cannot read class and name.");
-			our item [i] = Thing_newFromClassName (Melder_peek8to32 (klas), NULL);
-			our size ++;
-			if (! Thing_isa ((Thing) our item [i], classData))
-				Melder_throw (U"Cannot read item of class ", Thing_className ((Thing) our item [i]), U".");
+			my at [i] = (Daata) Thing_newFromClassName (Melder_peek8to32 (klas), nullptr).releaseToAmbiguousOwner();
+			my size ++;
+			if (! Thing_isa (my at [i], classDaata))
+				Melder_throw (U"Cannot read item of class ", Thing_className (my at [i]), U".");
 			if (fgetc (f) != ' ')
 				Melder_throw (U"Cannot read space.");
-			Data_readBinary ((Data) our item [i], f, -1);
+			Data_readBinary (my at [i], f, -1);
 			if (strcmp (name, "?"))
-				Thing_setName ((Thing) our item [i], Melder_peek8to32 (name));
+				Thing_setName (my at [i], Melder_peek8to32 (name));
 		}
 	} else {
 		int32_t l_size = bingeti4 (f);
 		if (Melder_debug == 44)
 			Melder_casual (U"structCollection :: v_readBinary: Reading ", l_size, U" objects");
-		Collection_init (this, NULL, l_size);
+		my _grow (l_size);
 		for (int32_t i = 1; i <= l_size; i ++) {
 			autostring8 klas = bingets1 (f);
 			if (Melder_debug == 44)
 				Melder_casual (U"structCollection :: v_readBinary: Reading object of type ", Melder_peek8to32 (klas.peek()));
 			int elementFormatVersion;
-			our item [i] = Thing_newFromClassName (Melder_peek8to32 (klas.peek()), & elementFormatVersion);
-			our size ++;
-			if (! Thing_isa ((Thing) our item [i], classData) || ! Data_canReadBinary ((Data) our item [i]))
-				Melder_throw (U"Objects of class ", Thing_className ((Thing) our item [i]), U" cannot be read.");
+			my at [i] = (Daata) Thing_newFromClassName (Melder_peek8to32 (klas.peek()), & elementFormatVersion).releaseToAmbiguousOwner();
+			my size ++;
+			if (! Thing_isa (my at [i], classDaata) || ! Data_canReadBinary (my at [i]))
+				Melder_throw (U"Objects of class ", Thing_className (my at [i]), U" cannot be read.");
 			autostring32 name = bingetw2 (f);
 			if (Melder_debug == 44)
 				Melder_casual (U"structCollection :: v_readBinary: Reading object with name ", name.peek());
-			Thing_setName ((Thing) our item [i], name.peek());
-			Data_readBinary ((Data) our item [i], f, elementFormatVersion);
+			Thing_setName (my at [i], name.peek());
+			Data_readBinary (my at [i], f, elementFormatVersion);
 		}
 	}
 }
 
-static struct structData_Description theCollection_description [] = {
-	{ U"size", longwa, Melder_offsetof (Collection, size), sizeof (long) },
-	{ U"item", objectwa, Melder_offsetof (Collection, item), sizeof (Data), U"Data", & theClassInfo_Data, 1, 0, U"size" },
+struct structData_Description theCollectionOfDaata_v_description [] = {
+	{ U"size", longwa, Melder_offsetof (CollectionOf<structThing>*, size), sizeof (long) },
+	{ U"items", objectwa, Melder_offsetof (CollectionOf<structThing>*, at), sizeof (Daata), U"Daata", & theClassInfo_Daata, 1, 0, U"size" },
 	{ 0 }
 };
-Data_Description structCollection :: s_description = & theCollection_description [0];
-
-Thing_implement (Collection, Data, 0);
-
-void Collection_init (Collection me, ClassInfo itemClass_, long initialCapacity) {
-	my itemClass = itemClass_;
-	my _capacity = initialCapacity >= 1 ? initialCapacity : 1;
-	my size = 0;
-	my item = Melder_calloc (void *, my _capacity);
-	my item --;   // base 1
-}
-
-Collection Collection_create (ClassInfo itemClass, long initialCapacity) {
-	autoCollection me = Thing_new (Collection);
-	Collection_init (me.peek(), itemClass, initialCapacity);
-	return me.transfer();
-}
-
-void Collection_dontOwnItems (Collection me) {
-	Melder_assert (my size == 0);
-	my _dontOwnItems = true;
-}
-
-void _Collection_insertItem (Collection me, Thing data, long pos) {
-	if (my size >= my _capacity) {
-		/*
-		 * Check without change.
-		 */
-		Any *dum = (Any *) Melder_realloc (my item + 1, 2 * my _capacity * (int64) sizeof (Any));
-		/*
-		 * From here: change without error.
-		 */
-		my item = dum - 1;
-		my _capacity *= 2;
-	}
-	my size ++;
-	for (long i = my size; i > pos; i --) my item [i] = my item [i - 1];
-	my item [pos] = data;
-}
-
-void Collection_addItem (Collection me, Thing data) {
-	try {
-		Melder_assert (data != NULL);
-		long index = my v_position (data);
-		if (index != 0) {
-			_Collection_insertItem (me, data, index);
-		} else {
-			if (! my _dontOwnItems)
-				forget (data);   // could not insert; I am the owner, so I must dispose of the data
-		}
-	} catch (MelderError) {
-		Melder_throw (me, U": item not added.");
-	}
-}
-
-void Collection_removeItem (Collection me, long pos) {
-	Melder_assert (pos >= 1 && pos <= my size);
-	if (! my _dontOwnItems) forget (((Thing *) my item) [pos]);
-	for (long i = pos; i < my size; i ++) my item [i] = my item [i + 1];
-	my size --;
-}
-
-void Collection_undangleItem (Collection me, Thing item) {
-	for (long i = my size; i > 0; i --) if (my item [i] == item) {
-		for (long j = i; j < my size; j ++) my item [j] = my item [j + 1];
-		my size --;
-	}
-}
-
-Any Collection_subtractItem (Collection me, long pos) {
-	Melder_assert (pos >= 1 && pos <= my size);
-	Any result = my item [pos];
-	for (long i = pos; i < my size; i ++) my item [i] = my item [i + 1];
-	my size --;
-	return result;
-}
-
-void Collection_removeAllItems (Collection me) {
-	if (! my _dontOwnItems)
-		for (long i = 1; i <= my size; i ++)
-			forget (((Thing *) my item) [i]);
-	my size = 0;
-}
-
-void Collection_shrinkToFit (Collection me) {
-	my _capacity = my size ? my size : 1;
-	my item = (Any *) Melder_realloc (my item + 1, my _capacity * (int64) sizeof (Any)) - 1;
-}
-
-Any Collections_merge (Collection me, Collection thee) {
-	try {
-		if (my classInfo != thy classInfo)
-			Melder_throw (U"Objects are of different class.");
-		if (my _dontOwnItems != thy _dontOwnItems)
-			Melder_throw (U"Cannot mix data and references.");
-		autoCollection him = Data_copy (me);
-		for (long i = 1; i <= thy size; i ++) {
-			Thing item = (Thing) thy item [i];
-			if (my _dontOwnItems) {
-				Collection_addItem (him.peek(), item);
-			} else {
-				if (! Thing_isa (item, classData))
-					Melder_throw (U"Cannot copy item of class ", Thing_className (item), U".");
-				Collection_addItem (him.peek(), Data_copy ((Data) item));
-			}
-		}
-		return him.transfer();
-	} catch (MelderError) {
-		Melder_throw (me, U" and ", thee, U" not merged." );
-	}
-}
-
-/********** class Ordered **********/
-
-Thing_implement (Ordered, Collection, 0);
-
-void Ordered_init (Ordered me, ClassInfo itemClass, long initialMaximumLength) {
-	Collection_init (me, itemClass, initialMaximumLength);
-}
-
-Ordered Ordered_create (void) {
-	autoOrdered me = Thing_new (Ordered);
-	Ordered_init (me.peek(), NULL, 10);
-	return me.transfer();
-}
-
-void Ordered_addItemPos (Ordered me, Thing data, long position) {
-	Melder_assert (data);
-	if (position < 1 || position > my size)
-		position = my size + 1;
-	_Collection_insertItem (me, data, position);
-}
-
-/********** class Sorted **********/
-
-Thing_implement (Sorted, Collection, 0);
-
-long structSorted :: v_position (Any data) {
-	Data_CompareFunction compare = v_getCompareFunction ();
-	if (size == 0 || compare (data, item [size]) >= 0) return size + 1;
-	if (compare (data, item [1]) < 0) return 1;
-	/* Binary search. */
-	long left = 1, right = size;
-	while (left < right - 1) {
-		long mid = (left + right) / 2;
-		if (compare (data, item [mid]) >= 0) left = mid; else right = mid;
-	}
-	Melder_assert (right == left + 1);
-	return right;
-}
-
-int structSorted :: s_compare (Any data1, Any data2) {
-	(void) data1;
-	(void) data2;
-	return 0;   // in the base class, all are equal
-}
-
-void Sorted_init (Sorted me, ClassInfo itemClass, long initialCapacity) {
-	Collection_init (me, itemClass, initialCapacity);
-}
-
-void Sorted_addItem_unsorted (Sorted me, Thing data) {
-	_Collection_insertItem (me, data, my size + 1);
-}
-
-void Sorted_sort (Sorted me) {
-	NUMsort_p (my size, my item, (int (*) (const void *, const void *)) my v_getCompareFunction ());
-}
-
-/********** class SortedSet **********/
-
-long structSortedSet :: v_position (Any data) {
-	Data_CompareFunction compare = v_getCompareFunction ();
-	if (size == 0) return 1;   // empty set? then 'data' is going to be the first item
-	int where = compare (data, item [size]);   // compare with last item
-	if (where > 0) return size + 1;   // insert at end
-	if (where == 0) return 0;
-	if (compare (data, item [1]) < 0) return 1;   // compare with first item
-	long left = 1, right =size;
-	while (left < right - 1) {
-		long mid = (left + right) / 2;
-		if (compare (data, item [mid]) >= 0)
-			left = mid;
-		else
-			right = mid;
-	}
-	Melder_assert (right == left + 1);
-	if (! compare (data, item [left]) || ! compare (data, item [right]))
-		return 0;
-	return right;
-}
-
-Thing_implement (SortedSet, Sorted, 0);
-
-void SortedSet_init (SortedSet me, ClassInfo itemClass, long initialCapacity) {
-	Sorted_init (me, itemClass, initialCapacity);
-}
-
-/********** class SortedSetOfInt **********/
-
-Thing_implement (SortedSetOfInt, SortedSet, 0);
-
-int structSortedSetOfInt :: s_compare (I, thou) {
-	iam (SimpleInt); thouart (SimpleInt);
-	if (my number < thy number) return -1;
-	if (my number > thy number) return +1;
-	return 0;
-}
-
-void SortedSetOfInt_init (SortedSetOfInt me) {
-	SortedSet_init (me, classSimpleInt, 10);
-}
-
-SortedSetOfInt SortedSetOfInt_create (void) {
-	autoSortedSetOfInt me = Thing_new (SortedSetOfInt);
-	SortedSetOfInt_init (me.peek());
-	return me.transfer();
-}
-
-/********** class SortedSetOfLong **********/
-
-Thing_implement (SortedSetOfLong, SortedSet, 0);
-
-int structSortedSetOfLong :: s_compare (I, thou) {
-	iam (SimpleLong); thouart (SimpleLong);
-	if (my number < thy number) return -1;
-	if (my number > thy number) return +1;
-	return 0;
-}
-
-void SortedSetOfLong_init (SortedSetOfLong me) {
-	SortedSet_init (me, classSimpleLong, 10);
-}
-
-SortedSetOfLong SortedSetOfLong_create (void) {
-	autoSortedSetOfLong me = Thing_new (SortedSetOfLong);
-	SortedSetOfLong_init (me.peek());
-	return me.transfer();
-}
-
-/********** class SortedSetOfDouble **********/
-
-int structSortedSetOfDouble :: s_compare (I, thou) {
-	iam (SimpleDouble); thouart (SimpleDouble);
-	if (my number < thy number) return -1;
-	if (my number > thy number) return +1;
-	return 0;
-}
 
-Thing_implement (SortedSetOfDouble, SortedSet, 0);
+#define _Collection_implement(klas,genericClass,itemClass,parentClass,version) \
+	static Thing _##klas##_new () { return new genericClass<struct##itemClass>; } \
+	struct structClassInfo theClassInfo_##klas = { U"" #klas, & theClassInfo_##parentClass, \
+		sizeof (genericClass<struct##itemClass>), _##klas##_new, version, 0, nullptr}; \
+	ClassInfo class##klas = & theClassInfo_##klas
 
-void SortedSetOfDouble_init (SortedSetOfDouble me) {
-	SortedSet_init (me, classSimpleDouble, 10);
-}
-
-SortedSetOfDouble SortedSetOfDouble_create (void) {
-	autoSortedSetOfDouble me = Thing_new (SortedSetOfDouble);
-	SortedSetOfDouble_init (me.peek());
-	return me.transfer();
-}
-
-/********** class SortedSetOfString **********/
+_Collection_implement (Collection, CollectionOf, Thing, Daata, 0);
+_Collection_implement (Ordered, OrderedOf, Daata, Collection, 0);
+_Collection_implement (Sorted, SortedOf, Daata, Collection, 0);
+_Collection_implement (SortedSet, SortedSetOf, Daata, Sorted, 0);
 
-Thing_implement (SortedSetOfString, SortedSet, 0);
-
-int structSortedSetOfString :: s_compare (I, thou) {
-	iam (SimpleString); thouart (SimpleString);
-	return str32cmp (my string, thy string);
-}
-
-void SortedSetOfString_init (SortedSetOfString me) {
-	SortedSet_init (me, classSimpleString, 10);
-}
-
-SortedSetOfString SortedSetOfString_create (void) {
-	autoSortedSetOfString me = Thing_new (SortedSetOfString);
-	SortedSetOfString_init (me.peek());
-	return me.transfer();
-}
-
-long SortedSetOfString_lookUp (SortedSetOfString me, const char32 *string) {
-	SimpleString *items = (SimpleString *) my item;
-	long numberOfItems = my size;
-	long left = 1, right = numberOfItems;
-	int atStart, atEnd;
-	if (numberOfItems == 0) return 0;
-
-	atEnd = str32cmp (string, items [numberOfItems] -> string);
-	if (atEnd > 0) return 0;
-	if (atEnd == 0) return numberOfItems;
-
-	atStart = str32cmp (string, items [1] -> string);
-	if (atStart < 0) return 0;
-	if (atStart == 0) return 1;
-
-	while (left < right - 1) {
-		long mid = (left + right) / 2;
-		int here = str32cmp (string, items [mid] -> string);
-		if (here == 0) return mid;
-		if (here > 0) left = mid; else right = mid;
-	}
-	Melder_assert (right == left + 1);
-	return 0;
-}
-
-void SortedSetOfString_addString (SortedSetOfString me, const char32 *string) {
-	static SimpleString simp;
-	if (simp == NULL) {
-		simp = SimpleString_create (U"");
-		Melder_free (simp -> string);
-	}
-	simp -> string = (char32 *) string;   // reference copy
-	long index = my v_position (simp);
-	if (index == 0) return;   // OK: already there: do not add
-	autoSimpleString newSimp = SimpleString_create (string);
-	_Collection_insertItem (me, newSimp.transfer(), index);
-}
-
-/********** class Cyclic **********/
-
-Thing_implement (Cyclic, Collection, 0);
-
-int structCyclic :: s_compare (I, thou) {
-	(void) void_me;
-	(void) void_thee;
-	Melder_fatal (U"Cyclic::compare: subclass responsibility.");
-	return 0;
-}
-
-void Cyclic_cycleLeft (Cyclic me) {
-	if (my size == 0) return;   // for size == 1 no motion will take place either, but in that case the algorithm determines that automatically
-	Data help = (Data) my item [1];
-	for (long i = 1; i < my size; i ++) my item [i] = my item [i + 1];
-	my item [my size] = help;
-}
-
-void Cyclic_unicize (Cyclic me) {
-	Data_CompareFunction compare = my v_getCompareFunction ();
-	if (my size <= 1) return;
-	long lowest = 1;
-	for (long i = 1; i <= my size; i ++)
-		if (compare (my item [i], my item [lowest]) < 0) lowest = i;
-	for (long i = 1; i < lowest; i ++)
-		Cyclic_cycleLeft (me);
-}
-
-void Cyclic_init (Cyclic me, ClassInfo itemClass, long initialCapacity) {
-	Collection_init (me, itemClass, initialCapacity);
-}
+Thing_implement (StringList, Ordered, 0);
+Thing_implement (StringSet, SortedSet, 0);
 
 /* End of file Collection.cpp */
diff --git a/sys/Collection.h b/sys/Collection.h
index 8dbafce..d56067c 100644
--- a/sys/Collection.h
+++ b/sys/Collection.h
@@ -2,313 +2,819 @@
 #define _Collection_h_
 /* Collection.h
  *
- * Copyright (C) 1992-2011,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
- * Collection objects contain a number of items whose class is a subclass of Data.
+ * Collection objects contain a number of items whose class is a subclass of Thing or Daata.
  */
 
 #include "Simple.h"
 
-Thing_define (Collection, Data) {
-	ClassInfo itemClass;   // the class of which all items must be members (see Thing_isa)
-	long _capacity, size;
-	bool _dontOwnItems;
-	Any *item;   // [1..size]
-
-	void v_info ()
-		override;
-	void v_destroy ()
-		override;   // destroys all the items
-	void v_copy (Any data_to)
-		override;   // copies all the items
-	bool v_equal (Any data2)
-		override;   // compares 'my item [i]' with 'thy item [i]', i = 1..size
-	bool v_canWriteAsEncoding (int outputEncoding)
-		override;
-	void v_writeText (MelderFile openFile)
-		override;
-	void v_readText (MelderReadText text, int formatVersion)
-		override;
-	void v_writeBinary (FILE *f)
-		override;
-	void v_readBinary (FILE *f, int formatVersion)
-		override;
-	static Data_Description s_description;
-	Data_Description v_description ()
-		override { return s_description; }
-
-	virtual long v_position (Any /* data */) { return size + 1; /* at end */ };
-};
-/*
-	An object of type Collection is a collection of items of any class.
-	It is the owner of its items.
-	You can access the items in the collection as item [1] through item [size].
-	There can be no NULL items.
-
-	Attributes:
-		_capacity >= size		// private; grows as you add items.
-		size			// the current number of items.
-		item [1..size]		// the items.
-*/
 
-void Collection_init (Collection me, ClassInfo itemClass, long initialCapacity);
-Collection Collection_create (ClassInfo itemClass, long initialCapacity);
-/*
-	Function:
-		return a new empty Collection, or NULL if out of memory.
-	Preconditions:
-		initialCapacity >= 1;
-	Postconditions:
-		my _capacity == initialCapacity;
-*/
+#pragma mark - class Collection
 
-void Collection_dontOwnItems (Collection me);
+/**
+	An object of type Collection is a collection of objects of any class T*
+	that is a subclass of Thing or Daata.
+	These elements ("items") are either owned by the Collection, or they are references.
+	You can access the items as `at [1]` through `at [size]`.
+	There can be no null items.
 
-/*
-	Data_copy, Data_equal, Data_writeXXX, Data_readXXX
-	try to copy, compare, write, or read all the items.
-	However, if any of the items is not of class Data,
-	these routines fail with a message and return 0.
+	@param  size			the current number of items
+	@param  at[1..size]		the items
 */
+template <typename T> struct CollectionOf;
+
+typedef CollectionOf<structDaata> _CollectionOfDaata;
+extern void _CollectionOfDaata_v_copy (_CollectionOfDaata* me, _CollectionOfDaata* thee);
+extern bool _CollectionOfDaata_v_equal (_CollectionOfDaata* me, _CollectionOfDaata* thee);
+extern bool _CollectionOfDaata_v_canWriteAsEncoding (_CollectionOfDaata* me, int outputEncoding);
+extern void _CollectionOfDaata_v_writeText (_CollectionOfDaata* me, MelderFile openFile);
+extern void _CollectionOfDaata_v_readText (_CollectionOfDaata* me, MelderReadText text, int formatVersion);
+extern void _CollectionOfDaata_v_writeBinary (_CollectionOfDaata* me, FILE *f);
+extern void _CollectionOfDaata_v_readBinary (_CollectionOfDaata* me, FILE *f, int formatVersion);
+extern struct structData_Description theCollectionOfDaata_v_description [3];
+
+template <typename T   /*Melder_ENABLE_IF_ISA (T, structThing)*/>
+struct ArrayOf {
+	T** _elements { nullptr };
+	T*& operator[] (long i) const {
+		return our _elements [i];
+	}
+};
 
-void Collection_addItem (Collection me, Thing item);
-/*
-	Function:
-		add the 'item' to the collection. Return 0 if out of memory, else 1.
-	Preconditions:
- 		item != NULL;
-	Postconditions if result == 1:
-		my size >= my old size + 1;
-		if (my size > my old _capacity) my _capacity == 2 * my old _capacity;
-	When calling this function, you transfer ownership of 'item' to the Collection, unless dontOwnItems is on.
-	For a SortedSet, this may mean that the Collection immediately disposes of 'item',
-	if that item already occurred in the Collection.
-*/
+template <typename T   /*Melder_ENABLE_IF_ISA (T, structThing)*/>
+struct CollectionOf : structDaata {
+	ArrayOf <T> at;
+	long size { 0 };
+	long _capacity { 0 };
+	bool _ownItems { true };
+	bool _ownershipInitialized { false };
+
+	CollectionOf () {
+		extern ClassInfo classCollection;
+		our classInfo = classCollection;
+		our name = nullptr;
+	}
+	virtual ~ CollectionOf () {
+		/*
+			We cannot simply do
+				//our v_destroy ();
+			because C++ will implicitly call the destructor for structDaata,
+			whereas structCollection::v_destroy explicitly calls structDaata::v_destroy;
+			calling v_destroy here would therefore free structThing::name twice,
+			which may not crash Praat (assuming that `name` is nulled the first time)
+			but which is not how destruction should be organized.
+		*/
+		if (our at._elements) {
+			if (our _ownItems) {
+				for (long i = 1; i <= our size; i ++) {
+					_Thing_forget (our at [i]);
+				}
+			}
+			our at._elements ++;   // convert from base-1 to base-0
+			Melder_free (our at._elements);
+		}
+	}
+	//explicit operator bool () const {
+	//	return !! our item;
+	//}
+	CollectionOf<T>& operator= (const CollectionOf<T>&) = delete;   // disable copy assignment from an l-value of class T*
+	template <class Y> CollectionOf<T>& operator= (const CollectionOf<Y>&) = delete;   // disable copy assignment from an l-value of a descendant class of T*
+	CollectionOf<T> (CollectionOf<T>&& other) noexcept :
+		at (other. at),
+		size (other. size),
+		_capacity (other. _capacity),
+		_ownItems (other. _ownItems),
+		_ownershipInitialized (other. _ownershipInitialized)
+	{
+		other. at._elements = nullptr;
+		other. size = 0;
+		other. _capacity = 0;
+		other. _ownItems = false;
+		other. _ownershipInitialized = false;
+	}
+	template <class Y> CollectionOf<T> (CollectionOf<Y>&& other) noexcept :
+		at (other. at),
+		size (other. size),
+		_capacity (other. _capacity),
+		_ownItems (other. _ownItems),
+		_ownershipInitialized (other. _ownershipInitialized)
+	{
+		other. at._elements = nullptr;
+		other. size = 0;
+		other. _capacity = 0;
+		other. _ownItems = false;
+		other. _ownershipInitialized = false;
+	}
+	CollectionOf<T>& operator= (CollectionOf<T>&& other) noexcept {
+		if (other. at._elements != our at._elements) {
+			if (our at._elements) {
+				if (our _ownItems) {
+					for (long i = 1; i <= our size; i ++) {
+						_Thing_forget (our at [i]);
+					}
+				}
+				our at._elements ++;   // convert from base-1 to base-0
+				Melder_free (our at._elements);
+			}
+		}
+		our at = other. at;
+		our size = other. size;
+		our _capacity = other. _capacity;
+		our _ownItems = other. _ownItems;
+		our _ownershipInitialized = other. _ownershipInitialized;
+		other. at._elements = nullptr;
+		other. size = 0;
+		other. _capacity = 0;
+		other. _ownItems = false;
+		other. _ownershipInitialized = false;
+		return *this;
+	}
+	template <class Y> CollectionOf<T>& operator= (CollectionOf<Y>&& other) noexcept {
+		if (other. at_elements != our at_elements) {
+			if (our at._elements) {
+				if (our _ownItems) {
+					for (long i = 1; i <= our size; i ++) {
+						_Thing_forget (our at [i]);
+					}
+				}
+				our at._elements ++;   // convert from base-1 to base-0
+				Melder_free (our at._elements);
+			}
+		}
+		our at = other. at;
+		our size = other. size;
+		our _capacity = other. _capacity;
+		our _ownItems = other. _ownItems;
+		our _ownershipInitialized = other. _ownershipInitialized;
+		other. at._elements = nullptr;
+		other. size = 0;
+		other. _capacity = 0;
+		other. _ownItems = false;
+		other. _ownershipInitialized = false;
+		return *this;
+	}
+	CollectionOf<T>&& move () noexcept { return static_cast <CollectionOf<T>&&> (*this); }
+
+	void _initializeOwnership (bool ownItems) {
+		if (our _ownershipInitialized) {
+			Melder_assert (our _ownItems == ownItems);
+		} else {
+			our _ownItems = ownItems;
+			our _ownershipInitialized = true;
+		}
+	}
+	void _grow (long newCapacity) {
+		if (newCapacity <= our _capacity) return;
+		T** oldItem_base0 = ( our at._elements ? our at._elements + 1 : nullptr );   // convert from base-1 to base-0
+		T** newItem_base0 = (T**) Melder_realloc (oldItem_base0, newCapacity * (int64) sizeof (T*));
+		our at._elements = newItem_base0 - 1;   // convert from base-0 to base-1
+		our _capacity = newCapacity;
+	}
+	void _makeRoomForOneMoreItem (long pos) {
+		if (our size >= our _capacity) {
+			long newCapacity = 2 * our _capacity + 30;   // enough room to guarantee space for one more item, if _capacity >= 0
+			T** oldItem_base0 = ( our at._elements ? our at._elements + 1 : nullptr );   // convert from base-1 to base-0
+			T** newItem_base0 = (T**) Melder_realloc (oldItem_base0, newCapacity * (int64) sizeof (T*));
+			our at._elements = newItem_base0 - 1;   // convert from base-0 to base-1
+			our _capacity = newCapacity;
+		}
+		our size ++;
+		for (long i = our size; i > pos; i --) our at [i] = our at [i - 1];
+	}
+	T* _insertItem_move (_Thing_auto <T> data, long pos) {
+		our _initializeOwnership (true);
+		our _makeRoomForOneMoreItem (pos);
+		return our at [pos] = data.releaseToAmbiguousOwner();
+	}
+	void _insertItem_ref (T* data, long pos) {
+		our _initializeOwnership (false);
+		our _makeRoomForOneMoreItem (pos);
+		our at [pos] = data;
+	}
+
+	/**
+		Add `thing` to the collection.
+		@pre
+			!! thing;
+		@post
+			my size >= my old size
+
+		You don't transfer ownership of `thing` to the Collection.
+
+		You cannot call both addItem_move() and addItem_ref() on the same Collection.
+	*/
+	void addItem_ref (T* thing) {
+		Melder_assert (thing);
+		long index = our _v_position (thing);
+		if (index != 0) {
+			our _insertItem_ref (thing, index);
+		} else {
+			our _initializeOwnership (false);
+		}
+	}
+
+	/**
+		Add 'thing' to the collection.
+		@pre
+			!! thing;
+		@post
+			my size >= my old size
+
+		You transfer ownership of 'thing' to the Collection.
+
+		You cannot call both
+		Collection_addItem_move() and Collection_addItem_ref() on the same Collection.
+		For a SortedSet, this may mean that the Collection immediately disposes of 'item',
+		if that item already occurred in the Collection.
+	*/
+	T* addItem_move (_Thing_auto<T> thing) {
+		T* thingRef = thing.get();
+		long index = our _v_position (thingRef);
+		if (index != 0) {
+			return our _insertItem_move (thing.move(), index);
+		} else {
+			our _initializeOwnership (true);
+			thing.reset();   // could not insert; I am the owner, so I must dispose of the data
+			return nullptr;
+		}
+	}
+
+	/**
+		Remove the item from the collection, without destroying it.
+		@post
+			item not found || my size == my old size - 1;
+
+		Usage:
+			this is the way in which an item can detach itself from a list;
+			often used just before the item is destroyed, hence the name of this procedure.
+	*/
+	void undangleItem (Thing thing) {
+		for (long i = our size; i > 0; i --) {
+			if (our at [i] == thing) {
+				for (long j = i; j < our size; j ++) {
+					our at [j] = our at [j + 1];
+				}
+			}
+			our size --;
+		}
+	}
+
+	/**
+		For subtractItem_move(): FIXME
+		Remove the item at 'position' from the collection and transfer ownership to the caller.
+		Return value:
+			the subtracted item; the caller is responsible for eventually removing it.
+		Preconditions:
+			1 <= position <= my size;
+		Postconditions:
+			my size == my old size - 1;
+			my _capacity not changed;
+	*/
+	_Thing_auto<T> subtractItem_move (long pos) {
+		Melder_assert (pos >= 1 && pos <= our size);
+		Melder_assert (our _ownItems);
+		_Thing_auto<T> result (our at [pos]);
+		for (long i = pos; i < our size; i ++) our at [i] = our at [i + 1];
+		our size --;
+		return result;
+	}
+	T* subtractItem_ref (long pos) {
+		Melder_assert (pos >= 1 && pos <= our size);
+		Melder_assert (! our _ownItems);
+		T* result = our at [pos];
+		for (long i = pos; i < our size; i ++) our at [i] = our at [i + 1];
+		our size --;
+		return result;
+	}
+	void replaceItem_ref (T* data, long pos) {
+		Melder_assert (pos >= 1 && pos <= our size);
+		Melder_assert (! our _ownItems);
+		our at [pos] = data;
+	}
+	T* replaceItem_move (_Thing_auto <T> data, long pos) {
+		Melder_assert (pos >= 1 && pos <= our size);
+		Melder_assert (our _ownItems);
+		_Thing_forget (our at [pos]);
+		return our at [pos] = data.releaseToAmbiguousOwner();
+	}
+
+	/**
+		Remove the item at 'position' from the collection and from memory.
+		@pre
+			1 <= position <= my size;
+		@post
+			my size == my old size - 1;
+			my _capacity not changed;
+	*/
+	void removeItem (long pos) {
+		Melder_assert (pos >= 1 && pos <= our size);
+		if (our _ownItems) _Thing_forget (our at [pos]);
+		for (long i = pos; i < our size; i ++) our at [i] = our at [i + 1];
+		our size --;
+	}
+
+	/**
+		Remove all items from the collection and from memory.
+		@post
+			my size == 0;
+			my _capacity not changed;
+	*/
+	void removeAllItems () {
+		if (our _ownItems) {
+			for (long i = 1; i <= our size; i ++) {
+				_Thing_forget (our at [i]);
+			}
+		}
+		our size = 0;
+	}
+
+	/**
+		Release as much memory as possible without affecting the items.
+		@post
+			my _capacity == max (my size, 1);
+	*/
+	void shrinkToFit () {
+		our _capacity = ( our size > 0 ? our size : 1 );
+		our at ++;
+		our at = (T**) Melder_realloc (our at, our _capacity * (int64) sizeof (Thing));
+		our at --;
+	}
+	void sort (int (*compare) (T*, T*)) {
+		long l, r, j, i;
+		T* k;
+		T** a = our at._elements;
+		long n = our size;
+		if (n < 2) return;
+		l = (n >> 1) + 1;
+		r = n;
+		for (;;) {
+			if (l > 1) {
+				l --;
+				k = a [l];
+			} else { 
+				k = a [r];
+				a [r] = a [1];
+				r --;
+				if (r == 1) { a [1] = k; return; }
+			}
+			j = l;
+			for (;;) {
+				i = j;
+				j = j << 1;
+				if (j > r) break;
+				if (j < r && compare (a [j], a [j + 1]) < 0) j ++;
+				if (compare (k, a [j]) >= 0) break;
+				a [i] = a [j];
+			}
+			a [i] = k;
+		}
+	}
+	/*
+		Function:
+			merge two Collections into a new one. The class is the same as the type of `me`.
+		Postconditions:
+			result->size >= my size;
+			result->size >= thy size;
+	*/
+	void merge (CollectionOf<T>* thee) {
+		try {
+			if (our classInfo != thy classInfo)
+				Melder_throw (U"The two collections are of different classes.");
+			if (our _ownershipInitialized && thy _ownershipInitialized && our _ownItems != thy _ownItems)
+				Melder_throw (U"Cannot mix data and references.");
+			if (! our _ownershipInitialized && ! thy _ownershipInitialized) {
+				Melder_assert (our size == 0 && thy size == 0);
+				return;
+			}
+			our _ownItems = ( our _ownershipInitialized ? our _ownItems : thy _ownItems );
+			for (long i = 1; i <= thy size; i ++) {
+				T* item = thy at [i];
+				if (our _ownItems) {
+					if (! Thing_isa (item, classDaata))
+						Melder_throw (U"Cannot copy item of class ", Thing_className (item), U".");
+					our addItem_move (Data_copy (item));
+				} else {
+					our addItem_ref (item);
+				}
+			}
+		} catch (MelderError) {
+			Melder_throw (this, U" and ", thee, U" not merged." );
+		}
+	}
+
+	/*
+		CollectionOf overrides all virtual methods of Daata.
+		They are defined in Collection.cpp (if not in this header file).
+		These methods are needed only when a Collection object is used
+		as an independent pointer-to-object created with XXX_create ().
+	*/
+
+	void v_info () override {
+		MelderInfo_writeLine (our size, U" items");
+	}
+
+	void v_destroy () noexcept override {
+		/*
+			The items are destroyed automatically be the destructor,
+			which is called by delete, which is called by forget().
+			So we only have to destroy the members of Daata,
+			which are not automatic.
+		*/
+		structDaata::v_destroy ();
+	}
+
+
+	void v_copy (Daata data_to) override {   // copies all the items
+		_CollectionOfDaata_v_copy (reinterpret_cast<_CollectionOfDaata*> (this), reinterpret_cast<_CollectionOfDaata*> (data_to));
+	}
+	bool v_equal (Daata data2) override {   // compares 'my item [i]' with 'thy item [i]', i = 1..size
+		return _CollectionOfDaata_v_equal (reinterpret_cast<_CollectionOfDaata*> (this), reinterpret_cast<_CollectionOfDaata*> (data2));
+	}
+	bool v_canWriteAsEncoding (int outputEncoding) override {
+		return _CollectionOfDaata_v_canWriteAsEncoding (reinterpret_cast<_CollectionOfDaata*> (this), outputEncoding);
+	}
+	void v_writeText (MelderFile openFile) override {
+		_CollectionOfDaata_v_writeText (reinterpret_cast<_CollectionOfDaata*> (this), openFile);
+	}
+	void v_readText (MelderReadText text, int formatVersion) override {
+		_CollectionOfDaata_v_readText (reinterpret_cast<_CollectionOfDaata*> (this), text, formatVersion);
+	}
+	void v_writeBinary (FILE *f) override {
+		_CollectionOfDaata_v_writeBinary (reinterpret_cast<_CollectionOfDaata*> (this), f);
+	}
+	void v_readBinary (FILE *f, int formatVersion) override {
+		_CollectionOfDaata_v_readBinary (reinterpret_cast<_CollectionOfDaata*> (this), f, formatVersion);
+	}
+	Data_Description v_description () override {
+		return & theCollectionOfDaata_v_description [0];
+	}
+
+	/*
+		CollectionOf<> introduces one virtual method of its own (not counting the destructor).
+	*/
+	virtual long _v_position (T* /* data */) {
+		return our size + 1;   // at end
+	};
+};
 
-void Collection_removeItem (Collection me, long position);
-/*
-	Function:
-		remove the item at 'position' from the collection and from memory.
-	Preconditions:
-		1 <= position <= my size;
-	Postconditions:
-		my size == my old size - 1;
-		my _capacity not changed;
-*/
 
-void Collection_undangleItem (Collection me, Thing item);
-/*
-	Function:
-		remove the item from the collection, without destroying it.
-	Postconditions:
-		item not found || my size == my old size - 1;
-	Usage:
-		this is the way in which an item can detach itself from a list;
-		often used just before the item is destroyed, hence the name of this procedure.
-*/
-
-Any Collection_subtractItem (Collection me, long position);
-/*
-	Function:
-		remove the item at 'position' from the collection and transfer ownership to the caller.
-	Return value:
-		the subtracted item; the caller is responsible for eventually removing it.
-	Preconditions:
-		1 <= position <= my size;
-	Postconditions:
-		my size == my old size - 1;
-		my _capacity not changed;
-*/
+#define _Collection_declare(klas,genericClass,itemClass) \
+	typedef genericClass<struct##itemClass> struct##klas; \
+	typedef genericClass<struct##itemClass> *klas; \
+	typedef _Thing_auto <genericClass<struct##itemClass>> auto##klas; \
+	extern struct structClassInfo theClassInfo_##klas; \
+	extern ClassInfo class##klas; \
+	static inline auto##klas klas##_create () { \
+		auto##klas me (new genericClass<struct##itemClass>); \
+		theTotalNumberOfThings += 1; \
+		return me; \
+	}
 
-void Collection_removeAllItems (Collection me);
-/*
-	Function:
-		remove all items from the collection and from memory.
-	Postconditions:
-		my size == 0;
-		my _capacity not changed;
-*/
+_Collection_declare (Collection, CollectionOf, Thing);
 
-void Collection_shrinkToFit (Collection me);
-/*
-	Function:
-		release as much memory as possible without affecting the items.
-	Postconditions:
-		my _capacity == max (my size, 1);
-*/
 
-Any Collections_merge (Collection me, Collection thee);
+#pragma mark - class Ordered
 /*
-	Function:
-		merge two Collections into a new one.
-	Postconditions:
-		result -> size >= my size;
-		result -> size >= thy size;
+	An Ordered is a Collection in which the order of the elements is crucial.
+	It could also be called a List.
 */
 
-/* For the inheritors. */
-
-void _Collection_insertItem (Collection me, Thing item, long position);
-
-/* Methods:
-
-	static long position (I, Any data, long hint);
-		Question asked by Collection_addItem: return a position for the data.
-	Collection::position always returns my size + 1 (add item at the end).
-
-*/
-
-/********** class Ordered **********/
-
-Thing_define (Ordered, Collection) {
+template <typename T>
+struct OrderedOf : CollectionOf <T   /*Melder_ENABLE_IF_ISA (T, structDaata)*/> {
+
+	OrderedOf () {
+		extern ClassInfo classOrdered;
+		our classInfo = classOrdered;
+	}
+
+	/**
+		Function:
+			insert an item at 'position'.
+			If 'position' is less than 1 or greater than the current 'size',
+			insert the item at the end.
+	*/
+	T* addItemAtPosition_move (_Thing_auto <T> data, long position) {
+		Melder_assert (data);
+		if (position < 1 || position > our size)
+			position = our size + 1;
+		return our _insertItem_move (data.move(), position);
+	}
+
+	OrderedOf<T>&& move () noexcept { return static_cast <OrderedOf<T>&&> (*this); }
 };
 
-Ordered Ordered_create (void);
-void Ordered_init (Ordered me, ClassInfo itemClass, long initialCapacity);
-
-/* Behaviour:
-	Collection_addItem (Ordered) inserts an item at the end.
-*/
+_Collection_declare (Ordered, OrderedOf, Daata);
 
-void Ordered_addItemPos (Ordered me, Thing data, long position);
+#pragma mark - class Sorted
 /*
-	Function:
-		insert an item at 'position'.
-		If 'position' is less than 1 or greater than the current 'size',
-		insert the item at the end.
+	A Sorted is a sorted Collection.
+	Behaviour:
+		Sorted::addItem inserts an item at such a position that the collection stays sorted.
+		Sorted::merge yields a Sorted.
 */
 
-/********** class Sorted **********/
-/* A Sorted is a sorted Collection. */
-
-Thing_define (Sorted, Collection) {
-	long v_position (Any data)
-		override;
-
-	static int s_compare (Any data1, Any data2);
-	virtual Data_CompareFunction v_getCompareFunction () { return s_compare; }
+template <typename T   /*Melder_ENABLE_IF_ISA (T, structDaata)*/>
+struct SortedOf : CollectionOf <T> {
+	SortedOf () {
+		extern ClassInfo classSorted;
+		our classInfo = classSorted;
+	}
+	SortedOf<T>&& move () noexcept { return static_cast <SortedOf<T>&&> (*this); }
+
+	/***** Two routines for optimization. ******/
+	/* If you want to add a large group of items,
+		it is best to call addItem_unsorted () repeatedly,
+		and finish with Sorted::sort(), which uses the fast 'heapsort' algorithm,
+		and, when appropriate, also SortedSet::unicize(), which has linear complexity.
+		Calling addItem_move () repeatedly would be slower,
+		because on average half the collection is moved in memory
+		with every insertion.
+	*/
+	/*
+		Function:
+			add an item to the collection, quickly at the end.
+		Warning:
+			this leaves the collection unsorted; follow by Sorted::sort ().
+	*/
+	void addItem_unsorted_move (_Thing_auto <T> data) {
+		our _insertItem_move (data.move(), our size + 1);
+	}
+	/* Call this after a number of calls to Sorted_addItem_unsorted (). */
+	/* The procedure used is 'heapsort'. */
+	void sort () {
+		our CollectionOf<T>::sort (our v_getCompareHook ());
+	}
+
+	long _v_position (T* data) override {
+		typename SortedOf<T>::CompareHook compare = our v_getCompareHook ();
+		if (our size == 0 || compare (data, our at [our size]) >= 0) return our size + 1;
+		if (compare (data, our at [1]) < 0) return 1;
+		/* Binary search. */
+		long left = 1, right = our size;
+		while (left < right - 1) {
+			long mid = (left + right) / 2;
+			if (compare (data, our at [mid]) >= 0) left = mid; else right = mid;
+		}
+		Melder_assert (right == left + 1);
+		return right;
+	}
+
+	static int s_compareHook (T* /* data1 */, T* /* data2 */) noexcept { return 0; }
+	typedef int (*CompareHook) (T*, T*);
+	virtual CompareHook v_getCompareHook () { return s_compareHook; }
 		// should compare the keys of two items; returns negative if me < thee, 0 if me == thee, and positive if me > thee
 };
 
-void Sorted_init (Sorted me, ClassInfo itemClass, long initialCapacity);
-
-/* Behaviour:
-	Collection_addItem (Sorted) inserts an item at such a position that the collection stays sorted.
-	Collections_merge (Sorted) yields a Sorted.
-*/
+_Collection_declare (Sorted, SortedOf, Daata);
 
-/***** Two routines for optimization. ******/
-/* If you want to add a large group of items,
-	it is best to call Sorted_addItem_unsorted () repeatedly,
-	and finish with Sorted_sort (); this uses the fast 'heapsort' algorithm.
-	Calling Collection_addItem () repeatedly would be slower,
-	because on the average half the collection is moved in memory
-	with every insertion.
-*/
 
-void Sorted_addItem_unsorted (Sorted me, Thing data);
+#pragma mark - class SortedSet
 /*
-	Function:
-		add an item to the collection, quickly at the end.
-	Warning:
-		this leaves the collection unsorted; follow by Sorted_sort ().
+	In a SortedSet, every item must be unique (by key).
 */
-void Sorted_sort (Sorted me);
-/* Call this after a number of calls to Sorted_addItem_unsorted (). */
-/* The procedure used is 'heapsort'. */
 
-/********** class SortedSet **********/
+template <typename T   /*Melder_ENABLE_IF_ISA (T, structDaata)*/>
+struct SortedSetOf : SortedOf <T> {
+
+	SortedSetOf () {
+		extern ClassInfo classSortedSet;
+		our classInfo = classSortedSet;
+	}
+
+	SortedSetOf<T>&& move () noexcept { return static_cast <SortedSetOf<T>&&> (*this); }
+
+	/**
+		@return
+			0 (refusal) if the key of `data` already occurs
+	*/
+	long _v_position (T* data) override {
+		typename SortedOf<T>::CompareHook compare = our v_getCompareHook ();
+		if (our size == 0) return 1;   // empty set? then 'data' is going to be the first item
+		int where = compare (data, our at [our size]);   // compare with last item
+		if (where > 0) return our size + 1;   // insert at end
+		if (where == 0) return 0;
+		if (compare (data, our at [1]) < 0) return 1;   // compare with first item
+		long left = 1, right = our size;
+		while (left < right - 1) {
+			long mid = (left + right) / 2;
+			if (compare (data, our at [mid]) >= 0)
+				left = mid;
+			else
+				right = mid;
+		}
+		Melder_assert (right == left + 1);
+		if (! compare (data, our at [left]) || ! compare (data, our at [right]))
+			return 0;
+		return right;
+	}
+
+	bool hasItem (T* item) {
+		return our _v_position (item) == 0;
+	}
+
+	/**
+		See the comments at Sorted::sort().
+		@pre Must have been sorted beforehand.
+		@post All elements are different (by key).
+	*/
+	void unicize () {
+		typename SortedOf<T>::CompareHook compare = our v_getCompareHook ();
+		long n = 0, ifrom = 1;
+		for (long i = 1; i <= our size; i ++) {
+			if (i == our size || compare (our at [i], our at [i + 1]))
+			{
+				/*
+				 * Detected a change.
+				 */
+				n ++;
+				long ito = i;
+				/*
+				 * Move item 'ifrom' to 'n'.
+				 */
+				if (ifrom != n) {
+					if (our _ownItems) {
+						_Thing_forget (our at [n]);
+					}
+					our at [n] = our at [ifrom];   // surface copy
+					our at [ifrom] = nullptr;   // undangle
+				}
+				/*
+				 * Purge items from 'ifrom'+1 to 'ito'.
+				 */
+				for (long j = ifrom + 1; j <= ito; j ++) {
+					_Thing_forget (our at [j]);
+				}
+				ifrom = ito + 1;
+			}
+		}
+		our size = n;
+	}
 
-Thing_define (SortedSet, Sorted) {   // every item must be unique (by key)
-	virtual long v_position (Any data);   // returns 0 (refusal) if the key of 'data' already occurs
 };
 
-void SortedSet_init (SortedSet me, ClassInfo itemClass, long initialCapacity);
-
-inline static bool SortedSet_hasItem (SortedSet me, Any a_item) {
-	return my v_position (a_item) == 0;
-}
-
 /* Behaviour:
 	Collection_addItem (SortedSet) refuses to insert an item if this item already occurs.
 		Equality is there when the compare routine returns 0.
 	Collections_merge (SortedSet) yields a SortedSet that is the union of the two sources.
 */
 
-/********** class SortedSetOfInt **********/
-
-Thing_define (SortedSetOfInt, SortedSet) {
-	static int s_compare (Any data1, Any data2);
-	Data_CompareFunction v_getCompareFunction ()
-		override { return s_compare; }
-};
+_Collection_declare (SortedSet, SortedOf, Daata);
 
-void SortedSetOfInt_init (SortedSetOfInt me);
-SortedSetOfInt SortedSetOfInt_create (void);
 
-/********** class SortedSetOfLong **********/
+#pragma mark - class SortedSetOfInt
 
-Thing_define (SortedSetOfLong, SortedSet) {
-	static int s_compare (Any data1, Any data2);
-	Data_CompareFunction v_getCompareFunction ()
-		override { return s_compare; }
+template <typename T   Melder_ENABLE_IF_ISA (T, structSimpleInt)>
+struct SortedSetOfIntOf : SortedSetOf <T> {
+	SortedSetOfIntOf () {
+	}
+	SortedSetOfIntOf<T>&& move () noexcept { return static_cast <SortedSetOfIntOf<T>&&> (*this); }
+	static int s_compareHook (SimpleInt me, SimpleInt thee) noexcept {
+		if (my number < thy number) return -1;
+		if (my number > thy number) return +1;
+		return 0;
+	}
+	typename SortedOf<T>::CompareHook v_getCompareHook ()
+		override { return (typename SortedOf<T>::CompareHook) our s_compareHook; }
 };
 
-void SortedSetOfLong_init (SortedSetOfLong me);
-SortedSetOfLong SortedSetOfLong_create (void);
-
-/********** class SortedSetOfDouble **********/
 
-Thing_define (SortedSetOfDouble, SortedSet) {
-	static int s_compare (Any data1, Any data2);
-	Data_CompareFunction v_getCompareFunction ()
-		override { return s_compare; }
+#pragma mark - class SortedSetOfLong
+
+template <typename T   Melder_ENABLE_IF_ISA (T, structSimpleLong)>
+struct SortedSetOfLongOf : SortedSetOf <T> {
+	SortedSetOfLongOf () {
+	}
+	SortedSetOfLongOf<T>&& move () noexcept { return static_cast <SortedSetOfLongOf<T>&&> (*this); }
+	static int s_compareHook (SimpleLong me, SimpleLong thee) noexcept {
+		if (my number < thy number) return -1;
+		if (my number > thy number) return +1;
+		return 0;
+	}
+	typename SortedOf<T>::CompareHook v_getCompareHook ()
+		override { return (typename SortedOf<T>::CompareHook) our s_compareHook; }
 };
 
-void SortedSetOfDouble_init (SortedSetOfDouble me);
-SortedSetOfDouble SortedSetOfDouble_create (void);
 
-/********** class SortedSetOfString **********/
+#pragma mark - class SortedSetOfDouble
+
+template <typename T   /*Melder_ENABLE_IF_ISA (T, structSimpleDouble)*/>
+struct SortedSetOfDoubleOf : SortedSetOf <T> {
+	SortedSetOfDoubleOf () {
+	}
+	SortedSetOfDoubleOf<T>&& move () noexcept { return static_cast <SortedSetOfDoubleOf<T>&&> (*this); }
+	static int s_compareHook (SimpleDouble me, SimpleDouble thee) noexcept {
+		if (my number < thy number) return -1;
+		if (my number > thy number) return +1;
+		return 0;
+	}
+	typename SortedOf<T>::CompareHook v_getCompareHook ()
+		override { return (typename SortedOf<T>::CompareHook) our s_compareHook; }
+};
+
 
-Thing_define (SortedSetOfString, SortedSet) {
-	static int s_compare (Any data1, Any data2);
-	Data_CompareFunction v_getCompareFunction ()
-		override { return s_compare; }
+#pragma mark - class SortedSetOfString
+
+template <typename T   Melder_ENABLE_IF_ISA (T, structSimpleString)>
+struct SortedSetOfStringOf : SortedSetOf <T> {
+	SortedSetOfStringOf () {
+	}
+	SortedSetOfStringOf<T>&& move () noexcept { return static_cast <SortedSetOfStringOf<T>&&> (*this); }
+	static int s_compareHook (SimpleString me, SimpleString thee) noexcept {
+		return str32cmp (my string, thy string);
+	}
+	typename SortedOf<T>::CompareHook v_getCompareHook ()
+		override { return (typename SortedOf<T>::CompareHook) our s_compareHook; }
+
+	long lookUp (const char32 *string) {
+		long numberOfItems = our size;
+		long left = 1, right = numberOfItems;
+		int atStart, atEnd;
+		if (numberOfItems == 0) return 0;
+
+		atEnd = str32cmp (string, our at [numberOfItems] -> string);
+		if (atEnd > 0) return 0;
+		if (atEnd == 0) return numberOfItems;
+
+		atStart = str32cmp (string, our at [1] -> string);
+		if (atStart < 0) return 0;
+		if (atStart == 0) return 1;
+
+		while (left < right - 1) {
+			long mid = (left + right) / 2;
+			int here = str32cmp (string, our at [mid] -> string);
+			if (here == 0) return mid;
+			if (here > 0) left = mid; else right = mid;
+		}
+		Melder_assert (right == left + 1);
+		return 0;
+	}
+
+	/**
+		Add a SimpleString to the set.
+
+		@note one can create a class that specializes SortedSetOfStringOf
+		with an element class <i>derived</i> from SimpleString.
+		Trying to call @c addString_copy() for an object of that class
+		would lead to a compile-time type mismatch error,
+		because a SimpleString cannot be inserted where a derived object is expected.
+		This is correct behaviour, because a SimpleString object has no place
+		in a homogeneous set of derived-class objects.
+
+		@param string   a C-string
+	*/
+	void addString_copy (const char32 *string) {
+		static autoSimpleString simp;
+		if (! simp) {
+			simp = SimpleString_create (U"");
+			Melder_free (simp -> string);
+		}
+		simp -> string = (char32 *) string;   // reference copy
+		long index = our _v_position (simp.get());
+		simp -> string = nullptr;   // otherwise Praat will crash at shutdown
+		if (index == 0) return;   // OK: already there: do not add
+		autoSimpleString newSimp = SimpleString_create (string);
+		our _insertItem_move (newSimp.move(), index);
+	}
 };
 
-void SortedSetOfString_init (SortedSetOfString me);
-SortedSetOfString SortedSetOfString_create (void);
-void SortedSetOfString_addString (SortedSetOfString me, const char32 *string);
-long SortedSetOfString_lookUp (SortedSetOfString me, const char32 *string);
 
-/********** class Cyclic **********/
+#pragma mark - Collections of specific types
+
+#define Collection_define(klas,genericClass,itemClass) \
+	Thing_declare (klas); \
+	static inline auto##klas klas##_create () { return Thing_new (klas); } \
+	struct struct##klas : genericClass<struct##itemClass>
+
+#pragma mark class DaataList
 
-Thing_define (Cyclic, Collection) {   // the cyclic list (a, b, c, d) equals (b, c, d, a) but not (d, c, a, b)
-	static int s_compare (Any data1, Any data2);
-	virtual Data_CompareFunction v_getCompareFunction () { return s_compare; }
+Collection_define (DaataList, OrderedOf, Daata) {
 };
 
-void Cyclic_init (Cyclic me, ClassInfo itemClass, long initialCapacity);
+#pragma mark class StringList
 
-void Cyclic_cycleLeft (Cyclic me);
-void Cyclic_unicize (Cyclic me);
+Collection_define (StringList, OrderedOf, SimpleString) {
+};
+
+#pragma mark class StringSet
 
+Collection_define (StringSet, SortedSetOfStringOf, SimpleString) {
+};
 
 /* End of file Collection.h */
 #endif
diff --git a/sys/Data.cpp b/sys/Data.cpp
index 0b98d7d..e43aafb 100644
--- a/sys/Data.cpp
+++ b/sys/Data.cpp
@@ -1,90 +1,85 @@
 /* Data.cpp
  *
- * Copyright (C) 1992-2012,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 
-Thing_implement (Data, Thing, 0);
+Thing_implement (Daata, Thing, 0);
 
-structMelderDir Data_directoryBeingRead = { { 0 } };
+structMelderDir Data_directoryBeingRead { { 0 } };
 
-void structData :: v_copy (thou) {
-	thouart (Data);
-	(void) thee;
+void structDaata :: v_copy (Daata /* thee */) {
 }
 
-bool structData :: v_equal (thou) {
-	thouart (Data);
-	(void) thee;
+bool structDaata :: v_equal (Daata /* thee */) {
 	return true;
 }   // names of "identical" objects are allowed to be different
 
-bool structData :: v_canWriteAsEncoding (int /*encoding*/) {
+bool structDaata :: v_canWriteAsEncoding (int /* encoding */) {
 	return true;
 }
 
-void structData :: v_writeText (MelderFile /*openFile*/) {
+void structDaata :: v_writeText (MelderFile /* openFile */) {
 }
 
-void structData :: v_readText (MelderReadText, int /*formatVersion*/) {
+void structDaata :: v_readText (MelderReadText, int /* formatVersion */) {
 }
 
-void structData :: v_writeBinary (FILE *) {
+void structDaata :: v_writeBinary (FILE *) {
 }
 
-void structData :: v_readBinary (FILE *, int /*formatVersion*/) {
+void structDaata :: v_readBinary (FILE *, int /*formatVersion*/) {
 }
 
-Data _Data_copy (Data me) {
+autoDaata _Data_copy (Daata me) {
 	try {
-		if (me == NULL) return NULL;
-		autoData thee = static_cast <Data> (Thing_newFromClass (my classInfo));
-		my v_copy (thee.peek());
-		Thing_setName (thee.peek(), my name);
-		return thee.transfer();
+		if (! me) return autoDaata();
+		autoDaata thee = Thing_newFromClass (my classInfo).static_cast_move <structDaata> ();
+		my v_copy (thee.get());
+		Thing_setName (thee.get(), my name);
+		return thee;
 	} catch (MelderError) {
 		Melder_throw (me, U": not copied.");
 	}
 }
 
-bool Data_equal (Data me, Data thee) {
+bool Data_equal (Daata me, Daata thee) {
 	if (my classInfo != thy classInfo) return false;   // different class: not equal
-	int offset = sizeof (struct structData);   // we already compared the methods, and are going to skip the names
-	if (! memcmp ((char *) me + offset, (char *) thee + offset, my classInfo -> size - offset))
+	int offset = sizeof (struct structDaata);   // we already compared the methods, and are going to skip the names
+	if (! memcmp ((char *) me + offset, (char *) thee + offset, my classInfo -> size - offset))   // BUG: not necessarily portable
 		return true;   // no shallow differences
 	return my v_equal (thee);
 }
 
-bool Data_canWriteAsEncoding (Data me, int encoding) {
+bool Data_canWriteAsEncoding (Daata me, int encoding) {
 	return my v_canWriteAsEncoding (encoding);
 }
 
-bool Data_canWriteText (Data me) {
+bool Data_canWriteText (Daata me) {
 	return my v_writable ();
 }
 
-void Data_writeText (Data me, MelderFile openFile) {
+void Data_writeText (Daata me, MelderFile openFile) {
 	my v_writeText (openFile);
 	if (ferror (openFile -> filePointer))
 		Melder_throw (U"I/O error.");
 }
 
-MelderFile Data_createTextFile (Data me, MelderFile file, bool verbose) {
+MelderFile Data_createTextFile (Daata me, MelderFile file, bool verbose) {
 	autoMelderFile mfile = MelderFile_create (file);
 	#if defined (_WIN32)
 		file -> requiresCRLF = true;
@@ -101,7 +96,7 @@ MelderFile Data_createTextFile (Data me, MelderFile file, bool verbose) {
 	return mfile.transfer();
 }
 
-static void _Data_writeToTextFile (Data me, MelderFile file, bool verbose) {
+static void _Data_writeToTextFile (Daata me, MelderFile file, bool verbose) {
 	try {
 		if (! Data_canWriteText (me))
 			Melder_throw (U"Objects of class ", my classInfo -> className, U" cannot be written to a text file.");
@@ -121,13 +116,13 @@ static void _Data_writeToTextFile (Data me, MelderFile file, bool verbose) {
 		mfile.close ();
 	} catch (MelderError) {
 		#ifndef _WIN32
-			if (file -> filePointer) funlockfile (file -> filePointer);   // the file pointer is NULL before Data_createTextFile() and after mfile.close()
+			if (file -> filePointer) funlockfile (file -> filePointer);   // the file pointer is null before Data_createTextFile() and after mfile.close()
 		#endif
 		throw;
 	}
 }
 
-void Data_writeToTextFile (Data me, MelderFile file) {
+void Data_writeToTextFile (Daata me, MelderFile file) {
 	try {
 		_Data_writeToTextFile (me, file, true);
 	} catch (MelderError) {
@@ -135,7 +130,7 @@ void Data_writeToTextFile (Data me, MelderFile file) {
 	}
 }
 
-void Data_writeToShortTextFile (Data me, MelderFile file) {
+void Data_writeToShortTextFile (Daata me, MelderFile file) {
 	try {
 		_Data_writeToTextFile (me, file, false);
 	} catch (MelderError) {
@@ -143,17 +138,17 @@ void Data_writeToShortTextFile (Data me, MelderFile file) {
 	}
 }
 
-bool Data_canWriteBinary (Data me) {
+bool Data_canWriteBinary (Daata me) {
 	return my v_writable ();
 }
 
-void Data_writeBinary (Data me, FILE *f) {
+void Data_writeBinary (Daata me, FILE *f) {
 	my v_writeBinary (f);
 	if (ferror (f))
 		Melder_throw (U"I/O error.");
 }
 
-void Data_writeToBinaryFile (Data me, MelderFile file) {
+void Data_writeToBinaryFile (Daata me, MelderFile file) {
 	try {
 		if (! Data_canWriteBinary (me))
 			Melder_throw (U"Objects of class ", my classInfo -> className, U" cannot be written to a generic binary file.");
@@ -172,11 +167,11 @@ void Data_writeToBinaryFile (Data me, MelderFile file) {
 	}
 }
 
-bool Data_canReadText (Data me) {
+bool Data_canReadText (Daata me) {
 	return my v_writable ();
 }
 
-void Data_readText (Data me, MelderReadText text, int formatVersion) {
+void Data_readText (Daata me, MelderReadText text, int formatVersion) {
 	try {
 		my v_readText (text, formatVersion);
 		my v_repair ();
@@ -185,40 +180,40 @@ void Data_readText (Data me, MelderReadText text, int formatVersion) {
 	}
 }
 
-Data Data_readFromTextFile (MelderFile file) {
+autoDaata Data_readFromTextFile (MelderFile file) {
 	try {
 		autoMelderReadText text = MelderReadText_createFromFile (file);
 		char32 *line = MelderReadText_readLine (text.peek());
-		if (line == NULL)
+		if (! line)
 			Melder_throw (U"No lines.");
 		char32 *end = str32str (line, U"ooTextFile");   // oo format?
-		autoData me = NULL;
+		autoDaata me;
 		int formatVersion;
 		if (end) {
 			autostring32 klas = texgetw2 (text.peek());
-			me.reset (static_cast <Data> (Thing_newFromClassName (klas.peek(), & formatVersion)));
+			me = Thing_newFromClassName (klas.peek(), & formatVersion).static_cast_move <structDaata> ();
 		} else {
 			end = str32str (line, U"TextFile");
-			if (end == NULL)
+			if (! end)
 				Melder_throw (U"Not an old-type text file; should not occur.");
 			*end = U'\0';
-			me.reset (static_cast <Data> (Thing_newFromClassName (line, NULL)));
+			me = Thing_newFromClassName (line, nullptr).static_cast_move <structDaata> ();
 			formatVersion = -1;   // old version
 		}
 		MelderFile_getParentDir (file, & Data_directoryBeingRead);
-		Data_readText (me.peek(), text.peek(), formatVersion);
+		Data_readText (me.get(), text.peek(), formatVersion);
 		file -> format = structMelderFile :: Format :: text;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Data not read from text file ", file, U".");
 	}
 }
 
-bool Data_canReadBinary (Data me) {
+bool Data_canReadBinary (Daata me) {
 	return my v_writable ();
 }
 
-void Data_readBinary (Data me, FILE *f, int formatVersion) {
+void Data_readBinary (Daata me, FILE *f, int formatVersion) {
 	try {
 		my v_readBinary (f, formatVersion);
 		if (feof (f))
@@ -231,49 +226,63 @@ void Data_readBinary (Data me, FILE *f, int formatVersion) {
 	}
 }
 
-Data Data_readFromBinaryFile (MelderFile file) {
+autoDaata Data_readFromBinaryFile (MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "rb");
 		char line [200];
 		int n = fread (line, 1, 199, f); line [n] = '\0';
 		char *end = strstr (line, "ooBinaryFile");
-		autoData me = NULL;
+		autoDaata me;
 		int formatVersion;
 		if (end) {
 			fseek (f, strlen ("ooBinaryFile"), 0);
 			autostring8 klas = bingets1 (f);
-			me.reset (static_cast <Data> (Thing_newFromClassName (Melder_peek8to32 (klas.peek()), & formatVersion)));
+			me = Thing_newFromClassName (Melder_peek8to32 (klas.peek()), & formatVersion).static_cast_move <structDaata> ();
 		} else {
 			end = strstr (line, "BinaryFile");
 			if (! end) {
 				Melder_throw (U"File ", file, U" is not a Data binary file.");
 			}
 			*end = '\0';
-			me.reset (static_cast <Data> (Thing_newFromClassName (Melder_peek8to32 (line), NULL)));
+			me = Thing_newFromClassName (Melder_peek8to32 (line), nullptr).static_cast_move <structDaata> ();
 			formatVersion = -1;   // old version: override version number, which was set to 0 by newFromClassName
 			rewind (f);
 			fread (line, 1, end - line + strlen ("BinaryFile"), f);
 		}
 		MelderFile_getParentDir (file, & Data_directoryBeingRead);
-		Data_readBinary (me.peek(), f, formatVersion);
+		Data_readBinary (me.get(), f, formatVersion);
 		file -> format = structMelderFile :: Format :: binary;
 		f.close (file);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Data not read from binary file ", file, U".");
 	}
 }
 
+static int defaultPublish (autoDaata /* me */) {
+	return 0;   // nothing published
+}
+
+static int (*thePublish) (autoDaata) = defaultPublish;
+
+int Data_publish (autoDaata me) {
+	return thePublish (me.move());
+}
+
+void Data_setPublishProc (int (*publish) (autoDaata)) {
+	thePublish = publish ? publish : defaultPublish;
+}
+
 /* Generic reading. */
 
 static int numFileTypeRecognizers = 0;
-static Any (*fileTypeRecognizers [100]) (int nread, const char *header, MelderFile file);
-void Data_recognizeFileType (Any (*recognizer) (int nread, const char *header, MelderFile file)) {
+static Data_FileTypeRecognizer fileTypeRecognizers [100];
+void Data_recognizeFileType (Data_FileTypeRecognizer recognizer) {
 	Melder_assert (numFileTypeRecognizers < 100);
 	fileTypeRecognizers [++ numFileTypeRecognizers] = recognizer;
 }
 
-Data Data_readFromFile (MelderFile file) {
+autoDaata Data_readFromFile (MelderFile file) {
 	int nread, i;
 	char header [513];
 	autofile f = Melder_fopen (file, "rb");
@@ -285,7 +294,7 @@ Data Data_readFromFile (MelderFile file) {
 
 	if (nread > 11) {
 		char *p = strstr (header, "TextFile");
-		if (p != NULL && p - header < nread - 8 && p - header < 40)
+		if (p && p - header < nread - 8 && p - header < 40)
 			return Data_readFromTextFile (file);
 	}
 	if (nread > 22) {
@@ -295,7 +304,7 @@ Data Data_readFromFile (MelderFile file) {
 		for (i = 0; i < 100; i ++)
 			if (headerCopy [i] == '\0') headerCopy [i] = '\001';
 		char *p = strstr (headerCopy, "T\001e\001x\001t\001F\001i\001l\001e");
-		if (p != NULL && p - headerCopy < nread - 15 && p - headerCopy < 80)
+		if (p && p - headerCopy < nread - 15 && p - headerCopy < 80)
 			return Data_readFromTextFile (file);
 	}
 
@@ -303,7 +312,7 @@ Data Data_readFromFile (MelderFile file) {
 
 	if (nread > 13) {
 		char *p = strstr (header, "BinaryFile");
-		if (p != NULL && p - header < nread - 10 && p - header < 40)
+		if (p && p - header < nread - 10 && p - header < 40)
 			return Data_readFromBinaryFile (file);
 	}
 
@@ -311,15 +320,18 @@ Data Data_readFromFile (MelderFile file) {
 
 	MelderFile_getParentDir (file, & Data_directoryBeingRead);
 	for (i = 1; i <= numFileTypeRecognizers; i ++) {
-		Data object = (Data) fileTypeRecognizers [i] (nread, header, file);
-		if (object == (Data) 1) return NULL;
-		if (object) return object;
+		autoDaata object = fileTypeRecognizers [i] (nread, header, file);
+		if (object) {
+			if (object -> classInfo == classDaata)   // dummy object? the recognizer could have had a side effect, such as drawing a picture
+				return autoDaata ();
+			return object;
+		}
 	}
 
 	/***** 4. Is this a common text file? *****/
 
 	for (i = 0; i < nread; i ++)
-		if (header [i] < 32 || header [i] > 126)   /* Not ASCII? */
+		if (header [i] < 32 || header [i] > 126)   // not ASCII?
 			break;
 	if (i >= nread) return Data_readFromTextFile (file);
 
@@ -333,7 +345,7 @@ int Data_Description_countMembers (Data_Description structDescription) {
 	for (Data_Description desc = structDescription; desc -> name; desc ++)
 		count ++;
 	if (structDescription [0]. type == inheritwa) {
-		Data_Description parentDescription = ((Data) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
+		Data_Description parentDescription = ((Daata) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
 		if (parentDescription)
 			return count + Data_Description_countMembers (parentDescription);
 	}
@@ -344,11 +356,11 @@ Data_Description Data_Description_findMatch (Data_Description structDescription,
 	for (Data_Description desc = structDescription; desc -> name; desc ++)
 		if (str32equ (name, desc -> name)) return desc;
 	if (structDescription [0]. type == inheritwa) {
-		Data_Description parentDescription = ((Data) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
+		Data_Description parentDescription = ((Daata) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
 		if (parentDescription)
 			return Data_Description_findMatch (parentDescription, name);
 	}
-	return NULL;   /* Not found. */
+	return nullptr;   // not found
 }
 
 Data_Description Data_Description_findNumberUse (Data_Description structDescription, const char32 *string) {
@@ -357,26 +369,28 @@ Data_Description Data_Description_findNumberUse (Data_Description structDescript
 		if (desc -> max2 && str32equ (desc -> max2, string)) return desc;
 	}
 	if (structDescription [0]. type == inheritwa) {
-		Data_Description parentDescription = ((Data) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
+		Data_Description parentDescription = ((Daata) _Thing_dummyObject ((ClassInfo) structDescription [0]. tagType)) -> v_description ();
 		if (parentDescription)
 			return Data_Description_findNumberUse (parentDescription, string);
 	}
-	return NULL;
+	return nullptr;
 }
 
 /* Retrieving data from object + description. */
 
 int64 Data_Description_integer (void *address, Data_Description description) {
 	switch (description -> type) {
-		case bytewa:       return * (signed char *)    ((char *) address + description -> offset);
-		case intwa:        return * (int *)            ((char *) address + description -> offset);
-		case longwa:       return * (long *)           ((char *) address + description -> offset);
-		case ubytewa:      return * (unsigned char *)  ((char *) address + description -> offset);
-		case uintwa:       return * (unsigned int *)   ((char *) address + description -> offset);
-		case ulongwa:      return * (unsigned long *)  ((char *) address + description -> offset);
-		case boolwa:       return * (bool *)           ((char *) address + description -> offset);
-		case objectwa:     return (* (Collection *)    ((char *) address + description -> offset)) -> size;
-		case collectionwa: return (* (Collection *)    ((char *) address + description -> offset)) -> size;
+		case bytewa:           return * (signed char *)    ((char *) address + description -> offset);
+		case intwa:            return * (int *)            ((char *) address + description -> offset);
+		case longwa:           return * (long *)           ((char *) address + description -> offset);
+		case ubytewa:          return * (unsigned char *)  ((char *) address + description -> offset);
+		case uintwa:           return * (unsigned int *)   ((char *) address + description -> offset);
+		case ulongwa:          return * (unsigned long *)  ((char *) address + description -> offset);
+		case boolwa:           return * (bool *)           ((char *) address + description -> offset);
+		case objectwa:         return (* (Collection *)    ((char *) address + description -> offset))->size;
+		case autoobjectwa:     return (* (Collection *)    ((char *) address + description -> offset))->size;   // FIXME: alignment not guaranteed
+		case collectionofwa:   return (  (Collection)      ((char *) address + description -> offset))->size;   // FIXME: alignment not guaranteed
+		case autocollectionwa: return (* (Collection *)    ((char *) address + description -> offset))->size;   // FIXME: alignment not guaranteed
 		default: return 0;
 	}
 }
@@ -384,7 +398,7 @@ int64 Data_Description_integer (void *address, Data_Description description) {
 int Data_Description_evaluateInteger (void *structAddress, Data_Description structDescription,
 	const char32 *formula, long *result)
 {
-	if (formula == NULL) {   // this was a VECTOR_FROM array
+	if (! formula) {   // this was a VECTOR_FROM array
 		*result = 1;
 		return 1;
 	}
@@ -392,9 +406,9 @@ int Data_Description_evaluateInteger (void *structAddress, Data_Description stru
 		char32 buffer [100], *minus1, *psize;
 		Data_Description sizeDescription;
 		str32cpy (buffer, formula);
-		if ((minus1 = str32str (buffer, U" - 1")) != NULL)
+		if ((minus1 = str32str (buffer, U" - 1")) != nullptr)
 			*minus1 = U'\0';   // strip trailing " - 1", but remember
-		if ((psize = str32str (buffer, U" -> size")) != NULL)
+		if ((psize = str32str (buffer, U" -> size")) != nullptr)
 			*psize = U'\0';   // strip trailing " -> size"
 		if (! (sizeDescription = Data_Description_findMatch (structDescription, buffer))) {
 			*result = 0;
diff --git a/sys/Data.h b/sys/Data.h
index 57fce43..f5011c7 100644
--- a/sys/Data.h
+++ b/sys/Data.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* Data inherits from Thing. */
@@ -35,10 +34,15 @@ typedef struct structData_Description {
 	const char32 *min2, *max2;   // for matrices
 } *Data_Description;
 
-Thing_define (Data, Thing) {
-	virtual void v_copy (Any data_to);
-	virtual bool v_equal (Any otherData);
-	virtual Data_Description v_description () { return NULL; }
+/*
+ * We call the class Daata instead of Data,
+ * because of a conflict with the use of "Data" in assembler strings in intrin-impl.h on Windows.
+ */
+
+Thing_define (Daata, Thing) {
+	virtual void v_copy (Daata data_to);
+	virtual bool v_equal (Daata otherData);
+	virtual Data_Description v_description () { return nullptr; }
 	virtual bool v_writable () { return true; }
 	virtual bool v_canWriteAsEncoding (int outputEncoding);
 	virtual void v_writeText (MelderFile openFile);
@@ -47,45 +51,45 @@ Thing_define (Data, Thing) {
 	virtual void v_readBinary (FILE *f, int formatVersion);
 	virtual void v_repair () { }   // after reading Praat data files created by others
 	// methods for scripting:
-	virtual bool v_hasGetNrow      () { return false; }   virtual double        v_getNrow      ()                      { return NUMundefined; }
-	virtual bool v_hasGetNcol      () { return false; }   virtual double        v_getNcol      ()                      { return NUMundefined; }
-	virtual bool v_hasGetXmin      () { return false; }   virtual double        v_getXmin      ()                      { return NUMundefined; }
-	virtual bool v_hasGetXmax      () { return false; }   virtual double        v_getXmax      ()                      { return NUMundefined; }
-	virtual bool v_hasGetYmin      () { return false; }   virtual double        v_getYmin      ()                      { return NUMundefined; }
-	virtual bool v_hasGetYmax      () { return false; }   virtual double        v_getYmax      ()                      { return NUMundefined; }
-	virtual bool v_hasGetNx        () { return false; }   virtual double        v_getNx        ()                      { return NUMundefined; }
-	virtual bool v_hasGetNy        () { return false; }   virtual double        v_getNy        ()                      { return NUMundefined; }
-	virtual bool v_hasGetDx        () { return false; }   virtual double        v_getDx        ()                      { return NUMundefined; }
-	virtual bool v_hasGetDy        () { return false; }   virtual double        v_getDy        ()                      { return NUMundefined; }
-	virtual bool v_hasGetX         () { return false; }   virtual double        v_getX         (long ix)               { return NUMundefined; (void) ix;   }
-	virtual bool v_hasGetY         () { return false; }   virtual double        v_getY         (long iy)               { return NUMundefined; (void) iy;   }
-	virtual bool v_hasGetRowStr    () { return false; }   virtual const char32 *v_getRowStr    (long irow)             { return NULL;         (void) irow; }
-	virtual bool v_hasGetColStr    () { return false; }   virtual const char32 *v_getColStr    (long icol)             { return NULL;         (void) icol; }
-	virtual bool v_hasGetCell      () { return false; }   virtual double        v_getCell      ()                      { return NUMundefined; }
-	virtual bool v_hasGetCellStr   () { return false; }   virtual const char32 *v_getCellStr   ()                      { return NULL; }
-	virtual bool v_hasGetVector    () { return false; }   virtual double        v_getVector    (long irow, long icol)  { return NUMundefined; (void) irow; (void) icol; }
-	virtual bool v_hasGetVectorStr () { return false; }   virtual const char32 *v_getVectorStr (long icol)             { return NULL;         (void) icol; }
-	virtual bool v_hasGetMatrix    () { return false; }   virtual double        v_getMatrix    (long irow, long icol)  { return NUMundefined; (void) irow; (void) icol; }
-	virtual bool v_hasGetMatrixStr () { return false; }   virtual const char32 *v_getMatrixStr (long irow, long icol)  { return NULL;         (void) irow; (void) icol; }
-	virtual bool v_hasGetFunction0 () { return false; }   virtual double        v_getFunction0 ()                      { return NUMundefined; }
-	virtual bool v_hasGetFunction1 () { return false; }   virtual double        v_getFunction1 (long irow, double x)   { return NUMundefined; (void) irow; (void) x; }
-	virtual bool v_hasGetFunction2 () { return false; }   virtual double        v_getFunction2 (double x, double y)    { return NUMundefined; (void) x; (void) y; }
-	virtual bool v_hasGetRowIndex  () { return false; }   virtual double        v_getRowIndex  (const char32 *rowLabel){ return NUMundefined; (void) rowLabel; }
-	virtual bool v_hasGetColIndex  () { return false; }   virtual double        v_getColIndex  (const char32 *colLabel){ return NUMundefined; (void) colLabel; }
+	virtual bool v_hasGetNrow      () { return false; }   virtual double        v_getNrow      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetNcol      () { return false; }   virtual double        v_getNcol      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetXmin      () { return false; }   virtual double        v_getXmin      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetXmax      () { return false; }   virtual double        v_getXmax      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetYmin      () { return false; }   virtual double        v_getYmin      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetYmax      () { return false; }   virtual double        v_getYmax      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetNx        () { return false; }   virtual double        v_getNx        ()                                 { return NUMundefined; }
+	virtual bool v_hasGetNy        () { return false; }   virtual double        v_getNy        ()                                 { return NUMundefined; }
+	virtual bool v_hasGetDx        () { return false; }   virtual double        v_getDx        ()                                 { return NUMundefined; }
+	virtual bool v_hasGetDy        () { return false; }   virtual double        v_getDy        ()                                 { return NUMundefined; }
+	virtual bool v_hasGetX         () { return false; }   virtual double        v_getX         (long /* ix */)                    { return NUMundefined; }
+	virtual bool v_hasGetY         () { return false; }   virtual double        v_getY         (long /* iy */)                    { return NUMundefined; }
+	virtual bool v_hasGetRowStr    () { return false; }   virtual const char32 *v_getRowStr    (long /* irow */)                  { return nullptr;      }
+	virtual bool v_hasGetColStr    () { return false; }   virtual const char32 *v_getColStr    (long /* icol */)                  { return nullptr;      }
+	virtual bool v_hasGetCell      () { return false; }   virtual double        v_getCell      ()                                 { return NUMundefined; }
+	virtual bool v_hasGetCellStr   () { return false; }   virtual const char32 *v_getCellStr   ()                                 { return nullptr; }
+	virtual bool v_hasGetVector    () { return false; }   virtual double        v_getVector    (long /* irow */, long /* icol */) { return NUMundefined; }
+	virtual bool v_hasGetVectorStr () { return false; }   virtual const char32 *v_getVectorStr (long /* icol */)                  { return nullptr;      }
+	virtual bool v_hasGetMatrix    () { return false; }   virtual double        v_getMatrix    (long /* irow */, long /* icol */) { return NUMundefined; }
+	virtual bool v_hasGetMatrixStr () { return false; }   virtual const char32 *v_getMatrixStr (long /* irow */, long /* icol */) { return nullptr;      }
+	virtual bool v_hasGetFunction0 () { return false; }   virtual double        v_getFunction0 ()                                 { return NUMundefined; }
+	virtual bool v_hasGetFunction1 () { return false; }   virtual double        v_getFunction1 (long /* irow */, double /* x */)  { return NUMundefined; }
+	virtual bool v_hasGetFunction2 () { return false; }   virtual double        v_getFunction2 (double /* x */, double /* y */)   { return NUMundefined; }
+	virtual bool v_hasGetRowIndex  () { return false; }   virtual double        v_getRowIndex  (const char32 * /* rowLabel */)    { return NUMundefined; }
+	virtual bool v_hasGetColIndex  () { return false; }   virtual double        v_getColIndex  (const char32 * /* colLabel */)    { return NUMundefined; }
 };
 
-template <class T> T* Data_copy (T* data) {
-	return static_cast <T*> (_Data_copy (data));
+template <class T> _Thing_auto<T> Data_copy (T* data) {
+	return _Data_copy (data).template static_cast_move <T> ();
 }
-Data _Data_copy (Data me);
+autoDaata _Data_copy (Daata me);
 /*
 	Message:
 		"return a deep copy of yourself."
 	Postconditions:
-		result -> name == NULL;	  // the only attribute NOT copied
+		result -> name == nullptr;	  // the only attribute NOT copied
 */
 
-bool Data_equal (Data data1, Data data2);
+bool Data_equal (Daata data1, Daata data2);
 /*
 	Message:
 		"return 1 if the shallow or deep attributes of 'data1' and 'data2' are equal;
@@ -94,16 +98,16 @@ bool Data_equal (Data data1, Data data2);
 		Data_equal (data, Data_copy (data)) should always return 1; the names are not compared.
 */
 
-typedef int (*Data_CompareFunction) (Any data1, Any data2);
+typedef MelderCompareHook<structDaata> Data_CompareHook;
 
-bool Data_canWriteAsEncoding (Data me, int outputEncoding);
+bool Data_canWriteAsEncoding (Daata me, int outputEncoding);
 /*
 	Message:
 		"Can you write yourself in that encoding?"
 	The answer depends on whether all members can be written in that encoding.
 */
 
-bool Data_canWriteText (Data me);
+bool Data_canWriteText (Daata me);
 /*
 	Message:
 		"Can you write yourself as text?"
@@ -111,12 +115,12 @@ bool Data_canWriteText (Data me);
 */
 
 MelderFile Data_createTextFile (
-	Data me,
+	Daata me,
 	MelderFile file,
 	bool verbose
 );   // returns the input MelderFile in order to be caught by an autoMelderFile
 
-void Data_writeText (Data me, MelderFile openFile);
+void Data_writeText (Daata me, MelderFile openFile);
 /*
 	Message:
 		"try to write yourself as text to an open file."
@@ -129,7 +133,7 @@ void Data_writeText (Data me, MelderFile openFile);
 		The format depends on the 'writeText' method defined by the subclass.
 */
 
-void Data_writeToTextFile (Data me, MelderFile file);
+void Data_writeToTextFile (Daata me, MelderFile file);
 /*
 	Message:
 		"try to write yourself as text to a file".
@@ -140,7 +144,7 @@ void Data_writeToTextFile (Data me, MelderFile file);
 		The format of the lines after the second line is the same as in Data_writeText.
 */
 
-void Data_writeToShortTextFile (Data me, MelderFile file);
+void Data_writeToShortTextFile (Daata me, MelderFile file);
 /*
 	Message:
 		"try to write yourself as text to a file".
@@ -151,14 +155,14 @@ void Data_writeToShortTextFile (Data me, MelderFile file);
 		The format of the lines after the second line is the same as in Data_writeText.
 */
 
-bool Data_canWriteBinary (Data me);
+bool Data_canWriteBinary (Daata me);
 /*
 	Message:
 		"Can you write yourself as binary data?"
 	The answer depends on whether the subclass defines the 'writeBinary' method.
 */
 
-void Data_writeBinary (Data me, FILE *f);
+void Data_writeBinary (Daata me, FILE *f);
 /*
 	Message:
 		"try to write yourself as binary data to an open file."
@@ -171,7 +175,7 @@ void Data_writeBinary (Data me, FILE *f);
 		and IEEE floating-point format.
 */
 
-void Data_writeToBinaryFile (Data me, MelderFile file);
+void Data_writeToBinaryFile (Daata me, MelderFile file);
 /*
 	Message:
 		"try to write yourself as binary data to a file".
@@ -181,7 +185,7 @@ void Data_writeToBinaryFile (Data me, MelderFile file);
 		The format of the file after this is the same as in Data_writeBinary.
 */
 
-bool Data_canReadText (Data me);
+bool Data_canReadText (Daata me);
 /*
 	Message:
 		"Can you read yourself as text?"
@@ -189,7 +193,7 @@ bool Data_canReadText (Data me);
 	but is preferably the same as the answer from Data_canWriteText.
 */
 
-void Data_readText (Data me, MelderReadText text, int formatVersion);
+void Data_readText (Daata me, MelderReadText text, int formatVersion);
 /*
 	Message:
 		"try to read yourself as text from a string."
@@ -202,7 +206,7 @@ void Data_readText (Data me, MelderReadText text, int formatVersion);
 		but is preferably the same as the format produced by the 'writeText' method.
 */
 
-Data Data_readFromTextFile (MelderFile file);
+autoDaata Data_readFromTextFile (MelderFile file);
 /*
 	Message:
 		"try to read a Data as text from a file".
@@ -218,7 +222,7 @@ Data Data_readFromTextFile (MelderFile file);
 		(plus those from Data_readText)
 */
 
-bool Data_canReadBinary (Data me);
+bool Data_canReadBinary (Daata me);
 /*
 	Message:
 		"Can you read yourself as binary data?"
@@ -226,7 +230,7 @@ bool Data_canReadBinary (Data me);
 	but is preferably the same as the answer from Data_canWriteBinary.
 */
 
-void Data_readBinary (Data me, FILE *f, int formatVersion);
+void Data_readBinary (Daata me, FILE *f, int formatVersion);
 /*
 	Message:
 		"try to read yourself as binary data from the stream <f>."
@@ -239,7 +243,7 @@ void Data_readBinary (Data me, FILE *f, int formatVersion);
 		but is preferably the same as the format produced by the 'writeBinary' method.
 */
 
-Data Data_readFromBinaryFile (MelderFile file);
+autoDaata Data_readFromBinaryFile (MelderFile file);
 /*
 	Message:
 		"try to read a Data as binary data from a file".
@@ -255,7 +259,9 @@ Data Data_readFromBinaryFile (MelderFile file);
 		(plus those from Data_readBinary)
 */
 
-void Data_recognizeFileType (Any (*recognizer) (int nread, const char *header, MelderFile file));
+typedef autoDaata (*Data_FileTypeRecognizer) (int numberOfBytesRead, const char *header, MelderFile file);
+
+void Data_recognizeFileType (Data_FileTypeRecognizer recognizer);
 /*
 Purpose:
 	to make sure that a file can be read by Data_readFromFile.
@@ -281,15 +287,15 @@ Defining a file-type recognizer:
 	You define a file-type recognizer as in the following example,
 	which tries to identify and read a Sun audio file.
 	A Sun audio file should contain at least 24 bytes and start with the string ".snd":
-	Any Sound_sunAudioFileRecognizer (int nread, const char *header, const char *fileName) {
+	autoDaata Sound_sunAudioFileRecognizer (int nread, const char *header, MelderFile file) {
 		if (nread >= 24 && strnequ (& header [0], ".snd", 4))
-			return Sound_readFromSunAudioFile (fileName);
+			return Sound_readFromSunAudioFile (file);
 		else
-			return NULL;
+			return autoDaata ();
 	}
 	From this example, we see that if the file is recognized, it should be read immediately,
 	and the resulting object (always a descendant of class Data) should be returned.
-	We also see that the return value NULL is used for notifying Data_readFromFile
+	We also see that the return value nullptr is used for notifying Data_readFromFile
 	of the fact that the file is not a Sun audio file.
 Registering a file-type recognizer:
 	You would put a statement like the following in the initialization section of your program:
@@ -297,24 +303,28 @@ Registering a file-type recognizer:
 	After this, Data_readFromFile is able to read Sun audio files.
 */
 
-Data Data_readFromFile (MelderFile file);
+autoDaata Data_readFromFile (MelderFile file);
 /*
 Purpose:
 	to read a file with data of any kind.
 Return value:
-	the object read from the file fs,
-	or NULL if the file was not recognized (an error message is queued in that case).
+	the object read from `file`.
+Failure:
+	the file was not recognized.
 Behaviour:
 	Data_readFromFile first checks whether the file is a text file
 	that is readable by Data_readFromTextFile, or a binary file
 	written by Data_writeToBinaryFile, or a file as written by Data_writeToLispFile.
 	If one of these succeeds, the file is read and the resulting object is returned.
 	If not, the recognizers installed with Data_recognizeFileType are tried.
-	If this also fails, Data_readFromFile returns NULL.
 */
 
 extern structMelderDir Data_directoryBeingRead;
 
+int Data_publish (autoDaata me);
+
+void Data_setPublishProc (int (*publish) (autoDaata));
+
 /* The values of 'type' in struct descriptions. */
 
 #define bytewa  1
@@ -338,8 +348,10 @@ extern structMelderDir Data_directoryBeingRead;
 #define structwa  18
 #define widgetwa  19
 #define objectwa  20
-#define collectionwa  21
-#define inheritwa  22
+#define autoobjectwa  21
+#define collectionofwa  22
+#define autocollectionwa  23
+#define inheritwa  24
 
 /* Recursive routines for working with struct members. */
 
diff --git a/sys/DataEditor.cpp b/sys/DataEditor.cpp
index cb3f021..9209ca0 100644
--- a/sys/DataEditor.cpp
+++ b/sys/DataEditor.cpp
@@ -1,20 +1,19 @@
 /* DataEditor.cpp
  *
- * Copyright (C) 1995-2012,2015 Paul Boersma
+ * Copyright (C) 1995-2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define NAME_X  30
@@ -33,7 +32,7 @@
 #include "machine.h"
 
 static Data_Description Class_getDescription (ClassInfo table) {
-	return ((Data) _Thing_dummyObject (table)) -> v_description ();
+	return ((Daata) _Thing_dummyObject (table)) -> v_description ();
 }
 
 /*static const char * typeStrings [] = { "none",
@@ -46,15 +45,15 @@ static int stringLengths [] = { 0,
 	15, 27, 35, 59,
 	33, 33, 8, 6, 60, 60 };
 
-static VectorEditor VectorEditor_create (DataEditor root, const char32 *title, void *address,
+static void VectorEditor_create (DataEditor root, const char32 *title, void *address,
 	Data_Description description, long minimum, long maximum);
 
-static MatrixEditor MatrixEditor_create (DataEditor root, const char32 *title, void *address,
+static void MatrixEditor_create (DataEditor root, const char32 *title, void *address,
 	Data_Description description, long min1, long max1, long min2, long max2);
 
-static StructEditor StructEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description);
+static void StructEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description);
 
-static ClassEditor ClassEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description);
+static void ClassEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description);
 
 static inline const char32 * strip_d (const char32 *s) {
 	return s && s [0] == U'd' && s [1] == U'_' ? & s [2] : & s [0];
@@ -64,13 +63,13 @@ static inline const char32 * strip_d (const char32 *s) {
 
 Thing_implement (DataSubEditor, Editor, 0);
 
-void structDataSubEditor :: v_destroy () {
+void structDataSubEditor :: v_destroy () noexcept {
 	for (int i = 1; i <= kDataSubEditor_MAXNUM_ROWS; i ++)
 		Melder_free (d_fieldData [i]. history);
-	if (d_root && d_root -> d_children)
-		for (int i = d_root -> d_children -> size; i > 0; i --)
-			if (d_root -> d_children -> item [i] == this)
-				Collection_subtractItem (d_root -> d_children, i);
+	if (our root)
+		for (int i = our root -> children.size; i > 0; i --)
+			if (our root -> children.at [i] == this)
+				our root -> children.subtractItem_ref (i);
 	DataSubEditor_Parent :: v_destroy ();
 }
 
@@ -79,8 +78,8 @@ static void update (DataSubEditor me) {
 	/* Hide all the existing widgets. */
 
 	for (int i = 1; i <= kDataSubEditor_MAXNUM_ROWS; i ++) {
-		my d_fieldData [i]. address = NULL;
-		my d_fieldData [i]. description = NULL;
+		my d_fieldData [i]. address = nullptr;
+		my d_fieldData [i]. description = nullptr;
 		GuiThing_hide (my d_fieldData [i]. label);
 		GuiThing_hide (my d_fieldData [i]. button);
 		GuiThing_hide (my d_fieldData [i]. text);
@@ -93,31 +92,29 @@ static void update (DataSubEditor me) {
 static Data_Description DataSubEditor_findNumberUse (DataSubEditor me, const char32 *number) {
 	Data_Description structDescription, result;
 	char32 string [100];
-	if (my classInfo == classMatrixEditor) return NULL;   // no structs inside
+	if (my classInfo == classMatrixEditor) return nullptr;   // no structs inside
 	if (my classInfo == classVectorEditor) {
-		if (my d_description -> type != structwa) return NULL;   // no structs inside
+		if (my d_description -> type != structwa) return nullptr;   // no structs inside
 		structDescription = * (Data_Description *) my d_description -> tagType;
 	} else { /* StructEditor or ClassEditor or DataEditor. */
 		structDescription = my d_description;
 	}
 	Melder_sprint (string,100, number);
-	if ((result = Data_Description_findNumberUse (structDescription, string)) != NULL) return result;
+	if ((result = Data_Description_findNumberUse (structDescription, string)) != nullptr) return result;
 	Melder_sprint (string,100, number, U" - 1");
-	if ((result = Data_Description_findNumberUse (structDescription, string)) != NULL) return result;
-	return NULL;
+	if ((result = Data_Description_findNumberUse (structDescription, string)) != nullptr) return result;
+	return nullptr;
 }
 
-static void gui_button_cb_change (I, GuiButtonEvent event) {
-	(void) event;
-	iam (DataSubEditor);
+static void gui_button_cb_change (DataSubEditor me, GuiButtonEvent /* event */) {
 	int irow = 1;
 	for (; irow <= kDataSubEditor_MAXNUM_ROWS; irow ++) {
 		#if motif
 			bool visible = XtIsManaged (my d_fieldData [irow]. text -> d_widget);
 		#elif gtk
 			gboolean visible;
-			g_object_get (G_OBJECT (my d_fieldData [irow]. text), "visible", & visible, NULL);
-		#elif defined (macintosh) && ! useCarbon
+			g_object_get (G_OBJECT (my d_fieldData [irow]. text), "visible", & visible, nullptr);
+		#elif defined (macintosh)
 			bool visible = ! [(GuiCocoaTextField *) my d_fieldData [irow]. text -> d_widget   isHidden];
 		#else
 			bool visible = false;
@@ -213,10 +210,10 @@ static void gui_button_cb_change (I, GuiButtonEvent event) {
 	 * 1. The owner (creator) of our root DataEditor: so that she can notify other editors, if any.
 	 * 2. All our sibling DataSubEditors.
 	 */
-	Editor_broadcastDataChanged (my d_root);
+	Editor_broadcastDataChanged (my root);
 	update (me);
-	for (int isub = 1; isub <= my d_root -> d_children -> size; isub ++) {
-		DataSubEditor subeditor = (DataSubEditor) my d_root -> d_children -> item [isub];
+	for (int isub = 1; isub <= my root -> children.size; isub ++) {
+		DataSubEditor subeditor = my root -> children.at [isub];
 		if (subeditor != me) update (subeditor);
 	}
 	return;
@@ -224,20 +221,16 @@ error:
 	Melder_flushError (U"Edit field \"", strip_d (my d_fieldData [irow]. description -> name), U"\" or click \"Cancel\".");
 }
 
-static void gui_button_cb_cancel (I, GuiButtonEvent event) {
-	(void) event;
-	iam (DataSubEditor);
+static void gui_button_cb_cancel (DataSubEditor me, GuiButtonEvent /* event */) {
 	update (me);
 }
 
-static void gui_cb_scroll (I, GuiScrollBarEvent event) {
-	iam (DataSubEditor);
+static void gui_cb_scroll (DataSubEditor me, GuiScrollBarEvent event) {
 	my d_topField = GuiScrollBar_getValue (event -> scrollBar) + 1;
 	update (me);
 }
 
-static void gui_button_cb_open (I, GuiButtonEvent event) {
-	iam (DataSubEditor);
+static void gui_button_cb_open (DataSubEditor me, GuiButtonEvent event) {
 	int ifield = 0;
 	static MelderString name { 0 };
 	MelderString_empty (& name);
@@ -259,24 +252,27 @@ static void gui_button_cb_open (I, GuiButtonEvent event) {
 	if (fieldData -> description -> rank == 1 || fieldData -> description -> rank == 3 || fieldData -> description -> rank < 0) {
 		MelderString_append (& name, fieldData -> history, U". ", strip_d (fieldData -> description -> name),
 			U" [", fieldData -> minimum, U"..", fieldData -> maximum, U"]");
-		VectorEditor_create (my d_root, name.string, fieldData -> address,
+		VectorEditor_create (my root, name.string, fieldData -> address,
 			fieldData -> description, fieldData -> minimum, fieldData -> maximum);
 	} else if (fieldData -> description -> rank == 2) {
 		MelderString_append (& name, fieldData -> history, U". ", strip_d (fieldData -> description -> name),
 			U" [", fieldData -> minimum, U"..", fieldData -> maximum, U"]");
 		MelderString_append (& name, U" [", fieldData -> min2, U"..", fieldData -> max2, U"]");
-		MatrixEditor_create (my d_root, name.string, fieldData -> address, fieldData -> description,
+		MatrixEditor_create (my root, name.string, fieldData -> address, fieldData -> description,
 			fieldData -> minimum, fieldData -> maximum, fieldData -> min2, fieldData -> max2);
 	} else if (fieldData -> description -> type == structwa) {
 		MelderString_append (& name, fieldData -> history, U". ", strip_d (fieldData -> description -> name));
-		StructEditor_create (my d_root, name.string, fieldData -> address,
+		StructEditor_create (my root, name.string, fieldData -> address,
 			* (Data_Description *) fieldData -> description -> tagType);
-	} else if (fieldData -> description -> type == objectwa || fieldData -> description -> type == collectionwa) {
+	} else if (fieldData -> description -> type == objectwa ||
+	           fieldData -> description -> type == autoobjectwa ||
+	           fieldData -> description -> type == collectionofwa ||
+			   fieldData -> description -> type == autocollectionwa) {
 		MelderString_append (& name, fieldData -> history, U". ", strip_d (fieldData -> description -> name));
-		ClassEditor_create (my d_root, name.string, fieldData -> address,
+		ClassEditor_create (my root, name.string, fieldData -> address,
 			Class_getDescription ((ClassInfo) fieldData -> description -> tagType));
 	} else /*if (fieldData -> description -> type == inheritwa)*/ {
-		ClassEditor_create (my d_root, fieldData -> history, fieldData -> address,
+		ClassEditor_create (my root, fieldData -> history, fieldData -> address,
 			fieldData -> description);
 /*	} else {
 		Melder_casual (
@@ -314,7 +310,7 @@ void structDataSubEditor :: v_createChildren () {
 	}
 }
 
-static void menu_cb_help (EDITOR_ARGS) { EDITOR_IAM (DataSubEditor); Melder_help (U"Inspect"); }
+static void menu_cb_help (DataSubEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Inspect"); }
 
 void structDataSubEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	DataSubEditor_Parent :: v_createHelpMenuItems (menu);
@@ -322,15 +318,15 @@ void structDataSubEditor :: v_createHelpMenuItems (EditorMenu menu) {
 }
 
 static void DataSubEditor_init (DataSubEditor me, DataEditor root, const char32 *title, void *address, Data_Description description) {
-	my d_root = root;
+	my root = root;
 	if (me != root) {
-		Collection_addItem (root -> d_children, me);
+		root -> children.addItem_ref (me);
 	}
 	my d_address = address;
 	my d_description = description;
 	my d_topField = 1;
 	my d_numberOfFields = my v_countFields ();
-	Editor_init (me, 0, 0, EDITOR_WIDTH, EDITOR_HEIGHT, title, NULL);
+	Editor_init (me, 0, 0, EDITOR_WIDTH, EDITOR_HEIGHT, title, nullptr);
 	update (me);
 }
 
@@ -364,7 +360,7 @@ static const char32 * singleTypeToText (void *address, int type, void *tagType,
 		case stringwa:
 		case lstringwa: {
 			char32 *string = * (char32 **) address;
-			if (string == NULL) { MelderString_empty (buffer); return buffer -> string; }   // convert NULL string to empty string
+			if (! string) { MelderString_empty (buffer); return buffer -> string; }   // convert null string to empty string
 			return string;   // may be much longer than the usual size of 'buffer'
 		} break;
 		default: return U"(unknown)";
@@ -395,7 +391,7 @@ static void showStructMember (
 	/* Show the value (for a single type) or a button (for a composite type). */
 	if (isSingleType) {
 		#if motif
-			XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], NULL);   // TODO: change to GuiObject_size
+			XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], nullptr);   // TODO: change to GuiObject_size
 		#endif
 		autoMelderString buffer;
 		const char32 *text = singleTypeToText (memberAddress, type, memberDescription -> tagType, & buffer);
@@ -407,7 +403,7 @@ static void showStructMember (
 	} else if (rank == 1) {
 		void *arrayAddress = * (void **) memberAddress;
 		long minimum, maximum;
-		if (arrayAddress == NULL) return;   // no button for empty fields
+		if (! arrayAddress) return;   // no button for empty fields
 		Data_Description_evaluateInteger (structAddress, structDescription,
 			memberDescription -> min1, & minimum);
 		Data_Description_evaluateInteger (structAddress, structDescription,
@@ -449,7 +445,7 @@ static void showStructMember (
 	} else if (rank == 2) {
 		void *arrayAddress = * (void **) memberAddress;
 		long min1, max1, min2, max2;
-		if (arrayAddress == NULL) return;   // no button for empty fields
+		if (! arrayAddress) return;   // no button for empty fields
 		Data_Description_evaluateInteger (structAddress, structDescription,
 			memberDescription -> min1,  & min1);
 		Data_Description_evaluateInteger (structAddress, structDescription,
@@ -474,9 +470,18 @@ static void showStructMember (
 		fieldData -> rank = 0;
 		Melder_free (fieldData -> history); fieldData -> history = Melder_dup_f (history);
 		GuiThing_show (fieldData -> button);
-	} else if (type == objectwa || type == collectionwa) {
-		fieldData -> address = * (Data *) memberAddress;   /* Indirect. */
-		if (! fieldData -> address) return;   /* No button if no object. */
+	} else if (type == objectwa || type == autoobjectwa || type == autocollectionwa) {
+		fieldData -> address = * (Daata *) memberAddress;   // indirect  // FIXME: not guaranteed for auto objects
+		if (! fieldData -> address) return;   // no button if no object
+		fieldData -> description = memberDescription;
+		fieldData -> rank = 0;
+		Melder_free (fieldData -> history); fieldData -> history = Melder_dup_f (history);
+		GuiThing_show (fieldData -> button);
+	} else if (type == collectionofwa) {
+		fieldData -> address = (Daata) memberAddress;   // direct  // FIXME: not guaranteed for auto objects
+		Melder_casual (U"Daata ", Melder_pointer (fieldData -> address));
+		Melder_casual (U"Class ", ((Daata) fieldData -> address) -> classInfo -> className);
+		if (! fieldData -> address) return;   // no button if no object
 		fieldData -> description = memberDescription;
 		fieldData -> rank = 0;
 		Melder_free (fieldData -> history); fieldData -> history = Melder_dup_f (history);
@@ -487,9 +492,9 @@ static void showStructMember (
 static void showStructMembers (DataSubEditor me, void *structAddress, Data_Description structDescription, int fromMember, char32 *history) {
 	int i = 1;
 	Data_Description memberDescription = structDescription;
-	for (; i < fromMember && memberDescription -> name != NULL; i ++, memberDescription ++)
+	for (; i < fromMember && memberDescription -> name != nullptr; i ++, memberDescription ++)
 		(void) 0;
-	for (; memberDescription -> name != NULL; memberDescription ++) {
+	for (; memberDescription -> name != nullptr; memberDescription ++) {
 		if (++ my d_irow > kDataSubEditor_MAXNUM_ROWS) return;
 		showStructMember (structAddress, structDescription, memberDescription, & my d_fieldData [my d_irow], history);
 	}
@@ -503,11 +508,11 @@ static void StructEditor_init (StructEditor me, DataEditor root, const char32 *t
 	DataSubEditor_init (me, root, title, address, description);
 }
 
-static StructEditor StructEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description) {
+static void StructEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description) {
 	try {
 		autoStructEditor me = Thing_new (StructEditor);
-		StructEditor_init (me.peek(), root, title, address, description);
-		return me.transfer();
+		StructEditor_init (me.get(), root, title, address, description);
+		return me.releaseToUser();
 	} catch (MelderError) {
 		Melder_throw (U"Struct inspector window not created.");
 	}
@@ -549,7 +554,7 @@ void structVectorEditor :: v_showMembers () {
 			autoMelderString buffer;
 			const char32 *text = singleTypeToText (elementAddress, type, d_description -> tagType, & buffer);
 			#if motif
-				XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], NULL);   // TODO: change to GuiObject_size
+				XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], nullptr);   // TODO: change to GuiObject_size
 			#endif
 			GuiText_setString (fieldData -> text, text);
 			GuiThing_show (fieldData -> text);
@@ -563,7 +568,7 @@ void structVectorEditor :: v_showMembers () {
 
 			if (history.string [history.length - 1] == ']') {
 				char32 *openingBracket = str32rchr (history.string, U'[');
-				Melder_assert (openingBracket != NULL);
+				Melder_assert (openingBracket != nullptr);
 				* openingBracket = '\0';
 				history.length = openingBracket - history.string;
 			}
@@ -578,12 +583,12 @@ void structVectorEditor :: v_showMembers () {
 				GuiThing_show (fieldData -> label);
 			}
 			showStructMembers (this, elementAddress, * (Data_Description *) d_description -> tagType, skip, history.string);
-		} else if (type == objectwa) {
+		} else if (type == objectwa || type == autoobjectwa) {
 			static MelderString history { 0 };
 			MelderString_copy (& history, name);
 			if (history.string [history.length - 1] == U']') {
 				char32 *openingBracket = str32rchr (history.string, U'[');
-				Melder_assert (openingBracket != NULL);
+				Melder_assert (openingBracket != nullptr);
 				* openingBracket = U'\0';
 				history.length = openingBracket - history.string;
 			}
@@ -593,8 +598,8 @@ void structVectorEditor :: v_showMembers () {
 			GuiLabel_setText (fieldData -> label, Melder_cat (strip_d (d_description -> name), U" [", ielement, U"]"));
 			GuiThing_show (fieldData -> label);
 
-			Data object = * (Data *) elementAddress;
-			if (object == NULL) return;   // no button if no object
+			Daata object = * (Daata *) elementAddress;
+			if (! object) return;   // no button if no object
 			if (! Class_getDescription (object -> classInfo)) return;   // no button if no description for this class
 			fieldData -> address = object;
 			fieldData -> description = Class_getDescription (object -> classInfo);
@@ -606,15 +611,15 @@ void structVectorEditor :: v_showMembers () {
 	}
 }
 
-static VectorEditor VectorEditor_create (DataEditor root, const char32 *title, void *address,
+static void VectorEditor_create (DataEditor root, const char32 *title, void *address,
 	Data_Description description, long minimum, long maximum)
 {
 	try {
 		autoVectorEditor me = Thing_new (VectorEditor);
 		my d_minimum = minimum;
 		my d_maximum = maximum;
-		DataSubEditor_init (me.peek(), root, title, address, description);
-		return me.transfer();
+		DataSubEditor_init (me.get(), root, title, address, description);
+		return me.releaseToUser();
 	} catch (MelderError) {
 		Melder_throw (U"Vector inspector window not created.");
 	}
@@ -655,7 +660,7 @@ void structMatrixEditor :: v_showMembers () {
 			autoMelderString buffer;
 			const char32 *text = singleTypeToText (elementAddress, type, d_description -> tagType, & buffer);
 			#if motif
-				XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], NULL);   // TODO: change to GuiObject_size
+				XtVaSetValues (fieldData -> text -> d_widget, XmNcolumns, stringLengths [type], nullptr);   // TODO: change to GuiObject_size
 			#endif
 			GuiText_setString (fieldData -> text, text);
 			GuiThing_show (fieldData -> text);
@@ -665,7 +670,7 @@ void structMatrixEditor :: v_showMembers () {
 	}
 }
 
-static MatrixEditor MatrixEditor_create (DataEditor root, const char32 *title, void *address,
+static void MatrixEditor_create (DataEditor root, const char32 *title, void *address,
 	Data_Description description, long min1, long max1, long min2, long max2)
 {
 	try {
@@ -674,8 +679,8 @@ static MatrixEditor MatrixEditor_create (DataEditor root, const char32 *title, v
 		my d_maximum = max1;
 		my d_min2 = min2;
 		my d_max2 = max2;
-		DataSubEditor_init (me.peek(), root, title, address, description);
-		return me.transfer();
+		DataSubEditor_init (me.get(), root, title, address, description);
+		return me.releaseToUser();
 	} catch (MelderError) {
 		Melder_throw (U"Matrix inspector window not created.");
 	}
@@ -691,7 +696,7 @@ static void ClassEditor_showMembers_recursive (ClassEditor me, ClassInfo klas) {
 	int classFieldsTraversed = 0;
 	while (Class_getDescription (parentClass) == description)
 		parentClass = parentClass -> parent;
-	if (parentClass != classData) {
+	if (parentClass != classDaata) {
 		ClassEditor_showMembers_recursive (me, parentClass);
 		classFieldsTraversed = Data_Description_countMembers (Class_getDescription (parentClass));
 		//Melder_casual (U"ClassEditor_showMembers_recursive: classFieldsTraversed = ", classFieldsTraversed);
@@ -700,20 +705,20 @@ static void ClassEditor_showMembers_recursive (ClassEditor me, ClassInfo klas) {
 }
 
 void structClassEditor :: v_showMembers () {
-	ClassEditor_showMembers_recursive (this, ((Data) d_address) -> classInfo);
+	ClassEditor_showMembers_recursive (this, ((Daata) d_address) -> classInfo);
 }
 
 static void ClassEditor_init (ClassEditor me, DataEditor root, const char32 *title, void *address, Data_Description description) {
-	if (description == NULL)
+	if (! description)
 		Melder_throw (U"Class ", Thing_className ((Thing) address), U" cannot be inspected.");
 	StructEditor_init (me, root, title, address, description);
 }
 
-static ClassEditor ClassEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description) {
+static void ClassEditor_create (DataEditor root, const char32 *title, void *address, Data_Description description) {
 	try {
 		autoClassEditor me = Thing_new (ClassEditor);
-		ClassEditor_init (me.peek(), root, title, address, description);
-		return me.transfer();
+		ClassEditor_init (me.get(), root, title, address, description);
+		return me.releaseToUser();
 	} catch (MelderError) {
 		Melder_throw (U"Class inspector window not created.");
 	}
@@ -723,45 +728,84 @@ static ClassEditor ClassEditor_create (DataEditor root, const char32 *title, voi
 
 Thing_implement (DataEditor, ClassEditor, 0);
 
-void structDataEditor :: v_destroy () {
-
-	/* Tell my children not to notify me when they die. */
-
-	for (int i = 1; i <= d_children -> size; i ++) {
-		DataSubEditor child = (DataSubEditor) d_children -> item [i];
-		child -> d_root = NULL;
+static void DataEditor_destroyAllChildren (DataEditor me) {
+	/*
+		To destroy all children, we travel them from youngest to oldest,
+		because the array of children will change from under us:
+	*/
+	for (int i = my children.size; i >= 1; i --) {
+		/*
+			An optimization coming!
+			
+			Instead of
+				DataSubEditor child = my children [i];
+				forget (child);
+			we isolate the child from the parent before destroying the child,
+			so that the child won't try to remove the reference
+			that the parent has to her.
+			So first we make the parent forget the moribund child,
+			which prevents a dangling pointer:
+		*/
+		DataSubEditor child = my children.subtractItem_ref (i);
+		/*
+			That was fast, because subtracting the last item involves no shifting
+			of the remaining items.
+
+			Second, we make the child forget the parent,
+			so that the child won't try to remove the reference
+			that the parent had to her (but no longer has):
+		*/
+		child -> root = nullptr;
+		/*
+			The child is now fully isolated, so we are ready to destroy her:
+		*/
+		forget (child);
+		/*
+			This procedure was an optimization because if we just destroyed each child,
+			each child would remove itself from the array by (1) searching for itself
+			and (2) shifting the remaining children, both of which have a complexity
+			that is linear in the number of children. So we would end up with quadratic complexity,
+			whereas the procedure that we use above has linear complexity.
+			
+			This linear complexity makes this procedure good enough for `v_destroy()`
+			(where obtaining linear complexity would have been easy anyway),
+			and nice enough for `v_dataChanged()`.
+			
+			Something to note is that this procedure doesn't care whether the autoCollection
+			`children` owns its items or not.
+		*/
 	}
+}
 
-	forget (d_children);
+void structDataEditor :: v_destroy () noexcept {
+	DataEditor_destroyAllChildren (this);
 	DataEditor_Parent :: v_destroy ();
 }
 
 void structDataEditor :: v_dataChanged () {
 	/*
-	 * Someone else changed our data.
-	 * We know that the top-level data is still accessible.
-	 */
+		Someone else changed our data.
+		We know that the top-level data is still accessible,
+		so we update the top-level window to show the change:
+	*/
 	update (this);
 	/*
-	 * But all structure may have changed,
-	 * so that we do not know if any of the subeditors contain valid data.
-	 */
-	for (int i = d_children -> size; i >= 1; i --) {
-		DataSubEditor subeditor = (DataSubEditor) d_children -> item [i];
-		Collection_subtractItem (d_children, i);
-		forget (subeditor);
-	}
+		Changing the data may have changed any part of the *structure* of the data,
+		so we do not know if the data visible in any of the subeditors is still valid.
+		We follow the most straightforward solution, which is to simply close all the child windows,
+		which guarantees the removal of all dangling visual representations:
+	*/
+	DataEditor_destroyAllChildren (this);
 }
 
-DataEditor DataEditor_create (const char32 *title, Data data) {
+autoDataEditor DataEditor_create (const char32 *title, Daata data) {
 	try {
 		ClassInfo klas = data -> classInfo;
-		if (Class_getDescription (klas) == NULL)
+		if (Class_getDescription (klas) == nullptr)
 			Melder_throw (U"Class ", klas -> className, U" cannot be inspected.");
 		autoDataEditor me = Thing_new (DataEditor);
-		my d_children = Collection_create (classDataSubEditor, 10);
-		ClassEditor_init (me.peek(), me.peek(), title, data, Class_getDescription (klas));
-		return me.transfer();
+		ClassEditor_init (me.get(), me.get(), title, data, Class_getDescription (klas));
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Inspector window not created.");
 	}
diff --git a/sys/DataEditor.h b/sys/DataEditor.h
index 7fba169..4b76159 100644
--- a/sys/DataEditor.h
+++ b/sys/DataEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1995-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -43,14 +42,14 @@ typedef struct structDataSubEditor_FieldData {
 #define kDataSubEditor_MAXNUM_ROWS  12
 
 Thing_define (DataSubEditor, Editor) {
-	DataEditor d_root;
+	DataEditor root;
 	void *d_address;
 	Data_Description d_description;
 	GuiScrollBar d_scrollBar;
 	int d_irow, d_topField, d_numberOfFields;
 	struct structDataSubEditor_FieldData d_fieldData [1 + kDataSubEditor_MAXNUM_ROWS];
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	bool v_scriptable ()
 		override { return false; }
@@ -94,15 +93,15 @@ Thing_define (ClassEditor, StructEditor) {
 };
 
 Thing_define (DataEditor, ClassEditor) {
-	Collection d_children;
+	CollectionOf <structDataSubEditor> children;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_dataChanged ()
 		override;
 };
 
-DataEditor DataEditor_create (const char32 *title, Data data);
+autoDataEditor DataEditor_create (const char32 *title, Daata data);
 
 /* End of file DataEditor.h */
 #endif
diff --git a/sys/DemoEditor.cpp b/sys/DemoEditor.cpp
index 3ededa4..a0b99c4 100644
--- a/sys/DemoEditor.cpp
+++ b/sys/DemoEditor.cpp
@@ -1,20 +1,19 @@
 /* DemoEditor.cpp
  *
- * Copyright (C) 2009-2011,2013,2015 Paul Boersma
+ * Copyright (C) 2009-2011,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "DemoEditor.h"
@@ -24,14 +23,13 @@
 
 Thing_implement (DemoEditor, Editor, 0);
 
-static DemoEditor theDemoEditor;
+static DemoEditor theReferenceToTheOnlyDemoEditor;
 
 /***** DemoEditor methods *****/
 
-void structDemoEditor :: v_destroy () {
+void structDemoEditor :: v_destroy () noexcept {
 	Melder_free (praatPicture);
-	forget (graphics);
-	theDemoEditor = NULL;
+	theReferenceToTheOnlyDemoEditor = nullptr;
 	DemoEditor_Parent :: v_destroy ();
 }
 
@@ -54,25 +52,22 @@ void structDemoEditor :: v_createMenus () {
 	DemoEditor_Parent :: v_createMenus ();
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (DemoEditor);
-	(void) event;
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_expose (DemoEditor me, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	/*
 	 * Erase the background. Don't record this erasure!
 	 */
-	Graphics_stopRecording (my graphics);   // the only place in Praat (the Picture window has a separate Graphics for erasing)?
-	Graphics_setColour (my graphics, Graphics_WHITE);
-	Graphics_setWindow (my graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-	Graphics_setColour (my graphics, Graphics_BLACK);
-	Graphics_startRecording (my graphics);
-	Graphics_play (my graphics, my graphics);
+	Graphics_stopRecording (my graphics.get());   // the only place in Praat (the Picture window has a separate Graphics for erasing)?
+	Graphics_setColour (my graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my graphics.get(), Graphics_BLACK);
+	Graphics_startRecording (my graphics.get());
+	Graphics_play (my graphics.get(), my graphics.get());
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (DemoEditor);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_click (DemoEditor me, GuiDrawingArea_ClickEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	my clicked = true;
 	my keyPressed = false;
 	my x = event -> x;
@@ -84,9 +79,8 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	my extraControlKeyPressed = event -> extraControlKeyPressed;
 }
 
-static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
-	iam (DemoEditor);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_key (DemoEditor me, GuiDrawingArea_KeyEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	my clicked = false;
 	my keyPressed = true;
 	my x = 0;
@@ -99,14 +93,13 @@ static void gui_drawingarea_cb_key (I, GuiDrawingAreaKeyEvent event) {
 	my extraControlKeyPressed = event -> extraControlKeyPressed;
 }
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (DemoEditor);
-	if (my graphics == NULL) return;   // Could be the case in the very beginning.
+static void gui_drawingarea_cb_resize (DemoEditor me, GuiDrawingArea_ResizeEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
 	trace (event -> width, U" ", event -> height);
-	Graphics_setWsViewport (my graphics, 0, event -> width, 0, event -> height);
-	Graphics_setWsWindow (my graphics, 0, 100, 0, 100);
-	//Graphics_setViewport (my graphics, 0, 100, 0, 100);
-	Graphics_updateWs (my graphics);
+	Graphics_setWsViewport (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
+	Graphics_setWsWindow (my graphics.get(), 0.0, 100.0, 0.0, 100.0);
+	//Graphics_setViewport (my graphics.get(), 0.0, 100.0, 0.0, 100.0);
+	Graphics_updateWs (my graphics.get());
 }
 
 void structDemoEditor :: v_createChildren () {
@@ -115,93 +108,95 @@ void structDemoEditor :: v_createChildren () {
 }
 
 void DemoEditor_init (DemoEditor me) {
-	Editor_init (me, 0, 0, 1024, 768, U"", NULL);
+	Editor_init (me, 0, 0, 1024, 768, U"", nullptr);
 	my graphics = Graphics_create_xmdrawingarea (my drawingArea);
-	Graphics_setColour (my graphics, Graphics_WHITE);
-	Graphics_setWindow (my graphics, 0, 1, 0, 1);
-	Graphics_fillRectangle (my graphics, 0, 1, 0, 1);
-	Graphics_setColour (my graphics, Graphics_BLACK);
-	Graphics_startRecording (my graphics);
-	Graphics_setWsViewport (my graphics, 0, GuiControl_getWidth  (my drawingArea),
-	                                     0, GuiControl_getHeight (my drawingArea));
-	Graphics_setWsWindow (my graphics, 0, 100, 0, 100);
-	Graphics_setViewport (my graphics, 0, 100, 0, 100);
-	Graphics_updateWs (my graphics);
+	Graphics_setColour (my graphics.get(), Graphics_WHITE);
+	Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_fillRectangle (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+	Graphics_setColour (my graphics.get(), Graphics_BLACK);
+	Graphics_startRecording (my graphics.get());
+	Graphics_setWsViewport (my graphics.get(), 0.0, GuiControl_getWidth  (my drawingArea),
+	                                           0.0, GuiControl_getHeight (my drawingArea));
+	Graphics_setWsWindow (my graphics.get(), 0.0, 100.0, 0.0, 100.0);
+	Graphics_setViewport (my graphics.get(), 0.0, 100.0, 0.0, 100.0);
+	Graphics_updateWs (my graphics.get());
 }
 
-DemoEditor DemoEditor_create () {
+autoDemoEditor DemoEditor_create () {
 	try {
 		autoDemoEditor me = Thing_new (DemoEditor);
-		DemoEditor_init (me.peek());
-		return me.transfer();
+		DemoEditor_init (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Demo window not created.");
 	}
 }
 
-void Demo_open (void) {
-	#ifndef CONSOLE_APPLICATION
-		if (Melder_batch) {
-			/*
-			 * Batch scripts have to be able to run demos.
-			 */
-			//Melder_batch = false;
-		}
-		if (theDemoEditor == NULL) {
-			theDemoEditor = DemoEditor_create ();
-			Melder_assert (theDemoEditor != NULL);
-			//GuiObject_show (theDemoEditor -> d_windowForm);
-			theDemoEditor -> praatPicture = Melder_calloc_f (structPraatPicture, 1);
-			theCurrentPraatPicture = (PraatPicture) theDemoEditor -> praatPicture;
-			theCurrentPraatPicture -> graphics = theDemoEditor -> graphics;
-			theCurrentPraatPicture -> font = kGraphics_font_HELVETICA;
-			theCurrentPraatPicture -> fontSize = 10;
-			theCurrentPraatPicture -> lineType = Graphics_DRAWN;
-			theCurrentPraatPicture -> colour = Graphics_BLACK;
-			theCurrentPraatPicture -> lineWidth = 1.0;
-			theCurrentPraatPicture -> arrowSize = 1.0;
-			theCurrentPraatPicture -> speckleSize = 1.0;
-			theCurrentPraatPicture -> x1NDC = 0;
-			theCurrentPraatPicture -> x2NDC = 100;
-			theCurrentPraatPicture -> y1NDC = 0;
-			theCurrentPraatPicture -> y2NDC = 100;
-		}
-		if (theDemoEditor -> waitingForInput)
-			Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
-				U"Please click or type into the Demo window or close it.");
-		theCurrentPraatPicture = (PraatPicture) theDemoEditor -> praatPicture;
-	#endif
+void Demo_open () {
+	if (Melder_batch) {
+		/*
+		 * Batch scripts have to be able to run demos.
+		 */
+		//Melder_batch = false;
+	}
+	if (! theReferenceToTheOnlyDemoEditor) {
+		autoDemoEditor editor = DemoEditor_create ();
+		Melder_assert (editor);
+		//GuiObject_show (editor -> d_windowForm);
+		editor -> praatPicture = Melder_calloc_f (structPraatPicture, 1);
+		theCurrentPraatPicture = (PraatPicture) editor -> praatPicture;
+		theCurrentPraatPicture -> graphics = editor -> graphics.get();
+		theCurrentPraatPicture -> font = kGraphics_font_HELVETICA;
+		theCurrentPraatPicture -> fontSize = 10;
+		theCurrentPraatPicture -> lineType = Graphics_DRAWN;
+		theCurrentPraatPicture -> colour = Graphics_BLACK;
+		theCurrentPraatPicture -> lineWidth = 1.0;
+		theCurrentPraatPicture -> arrowSize = 1.0;
+		theCurrentPraatPicture -> speckleSize = 1.0;
+		theCurrentPraatPicture -> x1NDC = 0.0;
+		theCurrentPraatPicture -> x2NDC = 100.0;
+		theCurrentPraatPicture -> y1NDC = 0.0;
+		theCurrentPraatPicture -> y2NDC = 100.0;
+		theReferenceToTheOnlyDemoEditor = editor.get();
+		editor.releaseToUser();
+	}
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput)
+		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
+			U"Please click or type into the Demo window or close it.");
+	theCurrentPraatPicture = (PraatPicture) theReferenceToTheOnlyDemoEditor -> praatPicture;
 }
 
-void Demo_close (void) {
+void Demo_close () {
 	theCurrentPraatPicture = & theForegroundPraatPicture;
 }
 
 int Demo_windowTitle (const char32 *title) {
 	autoDemoOpen demo;
-	Thing_setName (theDemoEditor, title);
+	Thing_setName (theReferenceToTheOnlyDemoEditor, title);
 	return 1;
 }
 
-int Demo_show (void) {
-	if (theDemoEditor == NULL) return 0;
+int Demo_show () {
+	if (! theReferenceToTheOnlyDemoEditor) return 0;
 	autoDemoOpen demo;
-	GuiThing_show (theDemoEditor -> d_windowForm);
-	GuiShell_drain (theDemoEditor -> d_windowForm);
+	GuiThing_show (theReferenceToTheOnlyDemoEditor -> d_windowForm);
+	#if defined (macintosh)
+		Graphics_updateWs (theReferenceToTheOnlyDemoEditor -> graphics.get());
+	#endif
+	GuiShell_drain (theReferenceToTheOnlyDemoEditor -> d_windowForm);
 	return 1;
 }
 
 void Demo_waitForInput (Interpreter interpreter) {
-	if (theDemoEditor == NULL) return;
-	if (theDemoEditor -> waitingForInput) {
+	if (! theReferenceToTheOnlyDemoEditor) return;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	//GuiObject_show (theDemoEditor -> d_windowForm);
-	theDemoEditor -> clicked = false;
-	theDemoEditor -> keyPressed = false;
-	theDemoEditor -> waitingForInput = true;
-	#if ! defined (CONSOLE_APPLICATION)
+	//GuiObject_show (theReferenceToTheOnlyDemoEditor -> d_windowForm);
+	theReferenceToTheOnlyDemoEditor -> clicked = false;
+	theReferenceToTheOnlyDemoEditor -> keyPressed = false;
+	theReferenceToTheOnlyDemoEditor -> waitingForInput = true;
 	{// scope
 		autoMelderSaveDefaultDir saveDir;
 		bool wasBackgrounding = Melder_backgrounding;
@@ -210,154 +205,162 @@ void Demo_waitForInput (Interpreter interpreter) {
 			#if gtk
 				do {
 					gtk_main_iteration ();
-				} while (! theDemoEditor -> clicked && ! theDemoEditor -> keyPressed && ! theDemoEditor -> userWantsToClose);
+				} while (! theReferenceToTheOnlyDemoEditor -> clicked &&
+				         ! theReferenceToTheOnlyDemoEditor -> keyPressed &&
+						 ! theReferenceToTheOnlyDemoEditor -> userWantsToClose);
 			#elif cocoa
 				do {
 					NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-					[theDemoEditor -> d_windowForm -> d_cocoaWindow   flushWindow];
+					[theReferenceToTheOnlyDemoEditor -> d_windowForm -> d_cocoaShell   flushWindow];
+					Graphics_updateWs (theReferenceToTheOnlyDemoEditor -> graphics.get());   // make sure that even texts will be drawn
 					NSEvent *nsEvent = [NSApp
 						nextEventMatchingMask: NSAnyEventMask
 						untilDate: [NSDate distantFuture]   // wait
 						inMode: NSDefaultRunLoopMode
 						dequeue: YES
 					];
-					Melder_assert (nsEvent != NULL);
+					Melder_assert (nsEvent);
 					[NSApp  sendEvent: nsEvent];
 					[NSApp  updateWindows];   // called automatically?
 					[pool release];
-				} while (! theDemoEditor -> clicked && ! theDemoEditor -> keyPressed && ! theDemoEditor -> userWantsToClose);
+				} while (! theReferenceToTheOnlyDemoEditor -> clicked &&
+				         ! theReferenceToTheOnlyDemoEditor -> keyPressed &&
+						 ! theReferenceToTheOnlyDemoEditor -> userWantsToClose);
 			#elif defined (_WIN32)
 				do {
 					XEvent event;
 					GuiNextEvent (& event);
 					XtDispatchEvent (& event);
-				} while (! theDemoEditor -> clicked && ! theDemoEditor -> keyPressed && ! theDemoEditor -> userWantsToClose);
+				} while (! theReferenceToTheOnlyDemoEditor -> clicked &&
+				         ! theReferenceToTheOnlyDemoEditor -> keyPressed &&
+						 ! theReferenceToTheOnlyDemoEditor -> userWantsToClose);
 			#elif defined (macintosh)
 				do {
 					XEvent event;
 					GuiNextEvent (& event);
 					XtDispatchEvent (& event);
-				} while (! theDemoEditor -> clicked && ! theDemoEditor -> keyPressed && ! theDemoEditor -> userWantsToClose);
+				} while (! theReferenceToTheOnlyDemoEditor -> clicked &&
+				         ! theReferenceToTheOnlyDemoEditor -> keyPressed &&
+						 ! theReferenceToTheOnlyDemoEditor -> userWantsToClose);
 			#endif
 		} catch (MelderError) {
 			Melder_flushError (U"An error made it to the outer level in the Demo window; should not occur! Please write to paul.boersma at uva.nl");
 		}
 		if (wasBackgrounding) praat_background ();
 	}
-	#endif
-	theDemoEditor -> waitingForInput = false;
-	if (theDemoEditor -> userWantsToClose) {
+	theReferenceToTheOnlyDemoEditor -> waitingForInput = false;
+	if (theReferenceToTheOnlyDemoEditor -> userWantsToClose) {
 		Interpreter_stop (interpreter);
-		forget (theDemoEditor);
+		forget (theReferenceToTheOnlyDemoEditor);
 		Melder_throw (U"You interrupted the script.");
 	}
 }
 
-bool Demo_clicked (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_clicked () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> clicked;
+	return theReferenceToTheOnlyDemoEditor -> clicked;
 }
 
-double Demo_x (void) {
-	if (theDemoEditor == NULL) return NUMundefined;
-	if (theDemoEditor -> waitingForInput) {
+double Demo_x () {
+	if (! theReferenceToTheOnlyDemoEditor) return NUMundefined;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	trace (U"NDC before: ", theDemoEditor -> graphics -> d_x1NDC, U" ", theDemoEditor -> graphics -> d_x2NDC);
-	Graphics_setInner (theDemoEditor -> graphics);
-	trace (U"NDC after: ", theDemoEditor -> graphics -> d_x1NDC, U" ", theDemoEditor -> graphics -> d_x2NDC);
+	trace (U"NDC before: ", theReferenceToTheOnlyDemoEditor -> graphics -> d_x1NDC, U" ", theReferenceToTheOnlyDemoEditor -> graphics -> d_x2NDC);
+	Graphics_setInner (theReferenceToTheOnlyDemoEditor -> graphics.get());
+	trace (U"NDC after: ", theReferenceToTheOnlyDemoEditor -> graphics -> d_x1NDC, U" ", theReferenceToTheOnlyDemoEditor -> graphics -> d_x2NDC);
 	double xWC, yWC;
-	trace (U"DC: x ", theDemoEditor -> x, U", y ", theDemoEditor -> y);
-	Graphics_DCtoWC (theDemoEditor -> graphics, theDemoEditor -> x, theDemoEditor -> y, & xWC, & yWC);
+	trace (U"DC: x ", theReferenceToTheOnlyDemoEditor -> x, U", y ", theReferenceToTheOnlyDemoEditor -> y);
+	Graphics_DCtoWC (theReferenceToTheOnlyDemoEditor -> graphics.get(), theReferenceToTheOnlyDemoEditor -> x, theReferenceToTheOnlyDemoEditor -> y, & xWC, & yWC);
 	trace (U"WC: x ", xWC, U", y ", yWC);
-	Graphics_unsetInner (theDemoEditor -> graphics);
+	Graphics_unsetInner (theReferenceToTheOnlyDemoEditor -> graphics.get());
 	return xWC;
 }
 
-double Demo_y (void) {
-	if (theDemoEditor == NULL) return NUMundefined;
-	if (theDemoEditor -> waitingForInput) {
+double Demo_y () {
+	if (! theReferenceToTheOnlyDemoEditor) return NUMundefined;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	Graphics_setInner (theDemoEditor -> graphics);
+	Graphics_setInner (theReferenceToTheOnlyDemoEditor -> graphics.get());
 	double xWC, yWC;
-	Graphics_DCtoWC (theDemoEditor -> graphics, theDemoEditor -> x, theDemoEditor -> y, & xWC, & yWC);
-	Graphics_unsetInner (theDemoEditor -> graphics);
+	Graphics_DCtoWC (theReferenceToTheOnlyDemoEditor -> graphics.get(), theReferenceToTheOnlyDemoEditor -> x, theReferenceToTheOnlyDemoEditor -> y, & xWC, & yWC);
+	Graphics_unsetInner (theReferenceToTheOnlyDemoEditor -> graphics.get());
 	return yWC;
 }
 
-bool Demo_keyPressed (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_keyPressed () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> keyPressed;
+	return theReferenceToTheOnlyDemoEditor -> keyPressed;
 }
 
-char32 Demo_key (void) {
-	if (theDemoEditor == NULL) return 0;
-	if (theDemoEditor -> waitingForInput) {
+char32 Demo_key () {
+	if (! theReferenceToTheOnlyDemoEditor) return U'\0';
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> key;
+	return theReferenceToTheOnlyDemoEditor -> key;
 }
 
-bool Demo_shiftKeyPressed (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_shiftKeyPressed () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> shiftKeyPressed;
+	return theReferenceToTheOnlyDemoEditor -> shiftKeyPressed;
 }
 
-bool Demo_commandKeyPressed (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_commandKeyPressed () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> commandKeyPressed;
+	return theReferenceToTheOnlyDemoEditor -> commandKeyPressed;
 }
 
-bool Demo_optionKeyPressed (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_optionKeyPressed () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> optionKeyPressed;
+	return theReferenceToTheOnlyDemoEditor -> optionKeyPressed;
 }
 
-bool Demo_extraControlKeyPressed (void) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+bool Demo_extraControlKeyPressed () {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return theDemoEditor -> extraControlKeyPressed;
+	return theReferenceToTheOnlyDemoEditor -> extraControlKeyPressed;
 }
 
 bool Demo_input (const char32 *keys) {
-	if (theDemoEditor == NULL) return false;
-	if (theDemoEditor -> waitingForInput) {
+	if (! theReferenceToTheOnlyDemoEditor) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
-	return str32chr (keys, theDemoEditor -> key) != NULL;
+	return str32chr (keys, theReferenceToTheOnlyDemoEditor -> key) != nullptr;
 }
 
 bool Demo_clickedIn (double left, double right, double bottom, double top) {
-	if (theDemoEditor == NULL || ! theDemoEditor -> clicked) return false;
-	if (theDemoEditor -> waitingForInput) {
+	if (! theReferenceToTheOnlyDemoEditor || ! theReferenceToTheOnlyDemoEditor -> clicked) return false;
+	if (theReferenceToTheOnlyDemoEditor -> waitingForInput) {
 		Melder_throw (U"You cannot work with the Demo window while it is waiting for input. "
 			U"Please click or type into the Demo window or close it.");
 	}
diff --git a/sys/DemoEditor.h b/sys/DemoEditor.h
index f4c21d9..950e880 100644
--- a/sys/DemoEditor.h
+++ b/sys/DemoEditor.h
@@ -4,33 +4,32 @@
  *
  * Copyright (C) 2009-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
 
 Thing_define (DemoEditor, Editor) {
 	GuiDrawingArea drawingArea;
-	Graphics graphics;
+	autoGraphics graphics;
 	void *praatPicture;
 	bool clicked, keyPressed, shiftKeyPressed, commandKeyPressed, optionKeyPressed, extraControlKeyPressed;
 	long x, y;
 	char32 key;
 	bool waitingForInput, userWantsToClose, fullScreen;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
@@ -49,27 +48,27 @@ Thing_define (DemoEditor, Editor) {
 };
 
 void DemoEditor_init (DemoEditor me);
-DemoEditor DemoEditor_create ();
+autoDemoEditor DemoEditor_create ();
 
-void Demo_open (void);
-void Demo_close (void);
+void Demo_open ();
+void Demo_close ();
 struct autoDemoOpen {
 	autoDemoOpen () { Demo_open (); }
 	~autoDemoOpen () { Demo_close (); }
 };
 
 int Demo_windowTitle (const char32 *title);
-int Demo_show (void);
+int Demo_show ();
 void Demo_waitForInput (Interpreter interpreter);
-bool Demo_clicked (void);
-double Demo_x (void);
-double Demo_y (void);
-bool Demo_keyPressed (void);
-char32 Demo_key (void);
-bool Demo_shiftKeyPressed (void);
-bool Demo_commandKeyPressed (void);
-bool Demo_optionKeyPressed (void);
-bool Demo_extraControlKeyPressed (void);
+bool Demo_clicked ();
+double Demo_x ();
+double Demo_y ();
+bool Demo_keyPressed ();
+char32 Demo_key ();
+bool Demo_shiftKeyPressed ();
+bool Demo_commandKeyPressed ();
+bool Demo_optionKeyPressed ();
+bool Demo_extraControlKeyPressed ();
 /* Shortcuts: */
 bool Demo_input (const char32 *keys);
 bool Demo_clickedIn (double left, double right, double bottom, double top);
diff --git a/sys/Editor.cpp b/sys/Editor.cpp
index 4203ebd..ba906c1 100644
--- a/sys/Editor.cpp
+++ b/sys/Editor.cpp
@@ -1,20 +1,19 @@
 /* Editor.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <time.h>
@@ -42,10 +41,9 @@ Thing_implement (Editor, Thing, 0);
 
 Thing_implement (EditorCommand, Thing, 0);
 
-void structEditorCommand :: v_destroy () {
+void structEditorCommand :: v_destroy () noexcept {
 	Melder_free (our itemTitle);
 	Melder_free (our script);
-	forget (our d_uiform);
 	EditorCommand_Parent :: v_destroy ();
 }
 
@@ -53,22 +51,20 @@ void structEditorCommand :: v_destroy () {
 
 Thing_implement (EditorMenu, Thing, 0);
 
-void structEditorMenu :: v_destroy () {
+void structEditorMenu :: v_destroy () noexcept {
 	Melder_free (our menuTitle);
-	forget (our commands);
 	EditorMenu_Parent :: v_destroy ();
 }
 
 /********** functions **********/
 
-static void commonCallback (GUI_ARGS) {
-	GUI_IAM (EditorCommand);
+static void commonCallback (EditorCommand me, GuiMenuItemEvent /* event */) {
 	if (my d_editor && my d_editor -> v_scriptable () && ! str32str (my itemTitle, U"...")) {
 		UiHistory_write (U"\n");
 		UiHistory_write_colonize (my itemTitle);
 	}
 	try {
-		my commandCallback (my d_editor, me, NULL, 0, NULL, NULL, NULL);
+		my commandCallback (my d_editor, me, nullptr, 0, nullptr, nullptr, nullptr);
 	} catch (MelderError) {
 		if (! Melder_hasError (U"Script exited.")) {
 			Melder_appendError (U"Menu command \"", my itemTitle, U"\" not completed.");
@@ -77,20 +73,19 @@ static void commonCallback (GUI_ARGS) {
 	}
 }
 
-GuiMenuItem EditorMenu_addCommand (EditorMenu me, const char32 *itemTitle /* cattable */, long flags,
-	void (*commandCallback) (Editor me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter))
+GuiMenuItem EditorMenu_addCommand (EditorMenu me, const char32 *itemTitle /* cattable */, long flags, EditorCommandCallback commandCallback)
 {
 	autoEditorCommand thee = Thing_new (EditorCommand);
 	thy d_editor = my d_editor;
 	thy menu = me;
 	thy itemTitle = Melder_dup (itemTitle);
 	thy itemWidget =
-		commandCallback == NULL ? GuiMenu_addSeparator (my menuWidget) :
-		flags & Editor_HIDDEN ? NULL :
-		GuiMenu_addItem (my menuWidget, itemTitle, flags, commonCallback, thee.peek());   // DANGLE BUG: me can be killed by Collection_addItem(), but EditorCommand::destroy doesn't remove the item
+		! commandCallback ? GuiMenu_addSeparator (my menuWidget) :
+		flags & Editor_HIDDEN ? nullptr :
+		GuiMenu_addItem (my menuWidget, itemTitle, flags, commonCallback, thee.get());   // DANGLE BUG: me can be killed by Collection_addItem(), but EditorCommand::destroy doesn't remove the item
 	thy commandCallback = commandCallback;
 	GuiMenuItem result = thy itemWidget;
-	Collection_addItem (my commands, thee.transfer());
+	my commands. addItem_move (thee.move());
 	return result;
 }
 
@@ -101,21 +96,17 @@ EditorMenu Editor_addMenu (Editor me, const char32 *menuTitle, long flags) {
 	thy d_editor = me;
 	thy menuTitle = Melder_dup (menuTitle);
 	thy menuWidget = GuiMenu_createInWindow (my d_windowForm, menuTitle, flags);
-	thy commands = Ordered_create ();
-	EditorMenu result = thee.peek();
-	Collection_addItem (my menus, thee.transfer());
-	return result;
+	return my menus. addItem_move (thee.move());
 }
 
 /*GuiObject EditorMenu_getMenuWidget (EditorMenu me) { return my menuWidget; }*/
 
-GuiMenuItem Editor_addCommand (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags,
-	void (*commandCallback) (Editor me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter))
+GuiMenuItem Editor_addCommand (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags, EditorCommandCallback commandCallback)
 {
 	try {
-		long numberOfMenus = my menus -> size;
+		long numberOfMenus = my menus.size;
 		for (long imenu = 1; imenu <= numberOfMenus; imenu ++) {
-			EditorMenu menu = (EditorMenu) my menus -> item [imenu];
+			EditorMenu menu = my menus.at [imenu];
 			if (str32equ (menuTitle, menu -> menuTitle))
 				return EditorMenu_addCommand (menu, itemTitle, flags, commandCallback);
 		}
@@ -125,28 +116,25 @@ GuiMenuItem Editor_addCommand (Editor me, const char32 *menuTitle, const char32
 	}
 }
 
-static void Editor_scriptCallback (Editor me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter) {
-	(void) sendingForm;
-	(void) narg;
-	(void) args;
-	(void) sendingString;
-	(void) interpreter;
+static void Editor_scriptCallback (Editor me, EditorCommand cmd, UiForm /* sendingForm */,
+	int /* narg */, Stackel /* args */, const char32 * /* sendingString */, Interpreter /* interpreter */)
+{
 	DO_RunTheScriptFromAnyAddedEditorCommand (me, cmd -> script);
 }
 
 GuiMenuItem Editor_addCommandScript (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags,
 	const char32 *script)
 {
-	long numberOfMenus = my menus -> size;
+	long numberOfMenus = my menus.size;
 	for (long imenu = 1; imenu <= numberOfMenus; imenu ++) {
-		EditorMenu menu = (EditorMenu) my menus -> item [imenu];
+		EditorMenu menu = my menus.at [imenu];
 		if (str32equ (menuTitle, menu -> menuTitle)) {
 			autoEditorCommand cmd = Thing_new (EditorCommand);
 			cmd -> d_editor = me;
 			cmd -> menu = menu;
 			cmd -> itemTitle = Melder_dup_f (itemTitle);
-			cmd -> itemWidget = script == NULL ? GuiMenu_addSeparator (menu -> menuWidget) :
-				GuiMenu_addItem (menu -> menuWidget, itemTitle, flags, commonCallback, cmd.peek());   // DANGLE BUG
+			cmd -> itemWidget = script == nullptr ? GuiMenu_addSeparator (menu -> menuWidget) :
+				GuiMenu_addItem (menu -> menuWidget, itemTitle, flags, commonCallback, cmd.get());   // DANGLE BUG
 			cmd -> commandCallback = Editor_scriptCallback;
 			if (str32len (script) == 0) {
 				cmd -> script = Melder_dup_f (U"");
@@ -156,7 +144,7 @@ GuiMenuItem Editor_addCommandScript (Editor me, const char32 *menuTitle, const c
 				cmd -> script = Melder_dup_f (Melder_fileToPath (& file));
 			}
 			GuiMenuItem result = cmd -> itemWidget;
-			Collection_addItem (menu -> commands, cmd.transfer());
+			menu -> commands. addItem_move (cmd.move());
 			return result;
 		}
 	}
@@ -165,13 +153,13 @@ GuiMenuItem Editor_addCommandScript (Editor me, const char32 *menuTitle, const c
 		U"Command \"", itemTitle, U"\" not inserted in menu \"", menuTitle, U".\n"
 		U"To fix this, go to Praat->Preferences->Buttons->Editors, and remove the script from this menu.\n"
 		U"You may want to install the script in a different menu.");
-	return NULL;
+	return nullptr;
 }
 
 void Editor_setMenuSensitive (Editor me, const char32 *menuTitle, int sensitive) {
-	int numberOfMenus = my menus -> size;
+	int numberOfMenus = my menus.size;
 	for (int imenu = 1; imenu <= numberOfMenus; imenu ++) {
-		EditorMenu menu = (EditorMenu) my menus -> item [imenu];
+		EditorMenu menu = my menus.at [imenu];
 		if (str32equ (menuTitle, menu -> menuTitle)) {
 			GuiThing_setSensitive (menu -> menuWidget, sensitive);
 			return;
@@ -180,13 +168,13 @@ void Editor_setMenuSensitive (Editor me, const char32 *menuTitle, int sensitive)
 }
 
 EditorCommand Editor_getMenuCommand (Editor me, const char32 *menuTitle, const char32 *itemTitle) {
-	int numberOfMenus = my menus -> size;
+	int numberOfMenus = my menus.size;
 	for (int imenu = 1; imenu <= numberOfMenus; imenu ++) {
-		EditorMenu menu = (EditorMenu) my menus -> item [imenu];
+		EditorMenu menu = my menus.at [imenu];
 		if (str32equ (menuTitle, menu -> menuTitle)) {
-			int numberOfCommands = menu -> commands -> size, icommand;
+			int numberOfCommands = menu -> commands.size, icommand;
 			for (icommand = 1; icommand <= numberOfCommands; icommand ++) {
-				EditorCommand command = (EditorCommand) menu -> commands -> item [icommand];
+				EditorCommand command = menu -> commands.at [icommand];
 				if (str32equ (itemTitle, command -> itemTitle))
 					return command;
 			}
@@ -196,14 +184,14 @@ EditorCommand Editor_getMenuCommand (Editor me, const char32 *menuTitle, const c
 }
 
 void Editor_doMenuCommand (Editor me, const char32 *commandTitle, int narg, Stackel args, const char32 *arguments, Interpreter interpreter) {
-	int numberOfMenus = my menus -> size;
+	int numberOfMenus = my menus.size;
 	for (int imenu = 1; imenu <= numberOfMenus; imenu ++) {
-		EditorMenu menu = (EditorMenu) my menus -> item [imenu];
-		long numberOfCommands = menu -> commands -> size;
+		EditorMenu menu = my menus.at [imenu];
+		long numberOfCommands = menu -> commands.size;
 		for (long icommand = 1; icommand <= numberOfCommands; icommand ++) {
-			EditorCommand command = (EditorCommand) menu -> commands -> item [icommand];
+			EditorCommand command = menu -> commands.at [icommand];
 			if (str32equ (commandTitle, command -> itemTitle)) {
-				command -> commandCallback (me, command, NULL, narg, args, arguments, interpreter);
+				command -> commandCallback (me, command, nullptr, narg, args, arguments, interpreter);
 				return;
 			}
 		}
@@ -213,14 +201,15 @@ void Editor_doMenuCommand (Editor me, const char32 *commandTitle, int narg, Stac
 
 /********** class Editor **********/
 
-void structEditor :: v_destroy () {
+void structEditor :: v_destroy () noexcept {
 	trace (U"enter");
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	/*
 	 * The following command must be performed before the shell is destroyed.
 	 * Otherwise, we would be forgetting dangling command dialogs here.
 	 */
-	forget (our menus);
+	our menus.removeAllItems();
+
 	Editor_broadcastDestruction (this);
 	if (our d_windowForm) {
 		#if gtk
@@ -229,9 +218,9 @@ void structEditor :: v_destroy () {
 				gtk_widget_destroy (GTK_WIDGET (our d_windowForm -> d_gtkWindow));
 			}
 		#elif cocoa
-			if (our d_windowForm -> d_cocoaWindow) {
-				NSWindow *cocoaWindow = our d_windowForm -> d_cocoaWindow;
-				//d_windowForm -> d_cocoaWindow = NULL;
+			if (our d_windowForm -> d_cocoaShell) {
+				NSWindow *cocoaWindow = our d_windowForm -> d_cocoaShell;
+				//d_windowForm -> d_cocoaShell = nullptr;
 				[cocoaWindow close];
 			}
 		#elif motif
@@ -240,7 +229,6 @@ void structEditor :: v_destroy () {
 			}
 		#endif
 	}
-	forget (our previousData);
 	if (our d_ownData) forget (our data);
 	Melder_free (our callbackSocket);
 	Editor_Parent :: v_destroy ();
@@ -249,7 +237,7 @@ void structEditor :: v_destroy () {
 void structEditor :: v_info () {
 	MelderInfo_writeLine (U"Editor type: ", Thing_className (this));
 	MelderInfo_writeLine (U"Editor name: ", our name ? our name : U"<no name>");
-	time_t today = time (NULL);
+	time_t today = time (nullptr);
 	MelderInfo_writeLine (U"Date: ", Melder_peek8to32 (ctime (& today)));   // includes a newline
 	if (our data) {
 		MelderInfo_writeLine (U"Data type: ", our data -> classInfo -> className);
@@ -264,17 +252,15 @@ void structEditor :: v_nameChanged () {
 
 void structEditor :: v_saveData () {
 	if (! our data) return;
-	forget (our previousData);
 	our previousData = Data_copy (our data);
 }
 
 void structEditor :: v_restoreData () {
 	if (our data && our previousData)
-		Thing_swap (our data, our previousData);
+		Thing_swap (our data, our previousData.get());
 }
 
-static void menu_cb_sendBackToCallingProgram (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_sendBackToCallingProgram (Editor me, EDITOR_ARGS_DIRECT) {
 	if (my data) {
 		extern structMelderDir praatDir;
 		structMelderFile file = { 0 };
@@ -285,13 +271,11 @@ static void menu_cb_sendBackToCallingProgram (EDITOR_ARGS) {
 	my v_goAway ();
 }
 
-static void menu_cb_close (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_close (Editor me, EDITOR_ARGS_DIRECT) {
 	my v_goAway ();
 }
 
-static void menu_cb_undo (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_undo (Editor me, EDITOR_ARGS_DIRECT) {
 	my v_restoreData ();
 	if (str32nequ (my undoText, U"Undo", 4)) my undoText [0] = U'R', my undoText [1] = U'e';
 	else if (str32nequ (my undoText, U"Redo", 4)) my undoText [0] = U'U', my undoText [1] = U'n';
@@ -302,7 +286,7 @@ static void menu_cb_undo (EDITOR_ARGS) {
 		[(GuiCocoaMenuItem *) my undoButton -> d_widget   setTitle: (NSString *) Melder_peek32toCfstring (my undoText)];
 	#elif motif
 		char *text_utf8 = Melder_peek32to8 (my undoText);
-		XtVaSetValues (my undoButton -> d_widget, XmNlabelString, text_utf8, NULL);
+		XtVaSetValues (my undoButton -> d_widget, XmNlabelString, text_utf8, nullptr);
 	#endif
 	/*
 	 * Send a message to myself (e.g., I will redraw myself).
@@ -314,24 +298,22 @@ static void menu_cb_undo (EDITOR_ARGS) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void menu_cb_searchManual (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_searchManual (Editor /* me */, EDITOR_ARGS_DIRECT) {
 	Melder_search ();
 }
 
-static void menu_cb_newScript (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
-	(void) ScriptEditor_createFromText (me, NULL);
+static void menu_cb_newScript (Editor me, EDITOR_ARGS_DIRECT) {
+	autoScriptEditor scriptEditor = ScriptEditor_createFromText (me, nullptr);
+	scriptEditor.releaseToUser();
 }
 
-static void menu_cb_openScript (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
-	autoScriptEditor scriptEditor = ScriptEditor_createFromText (me, NULL);
-	TextEditor_showOpen (scriptEditor.transfer());
+static void menu_cb_openScript (Editor me, EDITOR_ARGS_DIRECT) {
+	autoScriptEditor scriptEditor = ScriptEditor_createFromText (me, nullptr);
+	TextEditor_showOpen (scriptEditor.get());
+	scriptEditor.releaseToUser();
 }
 
-void structEditor :: v_createMenuItems_file (EditorMenu menu) {
-	(void) menu;
+void structEditor :: v_createMenuItems_file (EditorMenu /* menu */) {
 }
 
 void structEditor :: v_createMenuItems_edit (EditorMenu menu) {
@@ -339,13 +321,11 @@ void structEditor :: v_createMenuItems_edit (EditorMenu menu) {
 		our undoButton = EditorMenu_addCommand (menu, U"Cannot undo", GuiMenu_INSENSITIVE + 'Z', menu_cb_undo);
 }
 
-static void menu_cb_settingsReport (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_settingsReport (Editor me, EDITOR_ARGS_DIRECT) {
 	Thing_info (me);
 }
 
-static void menu_cb_info (EDITOR_ARGS) {
-	EDITOR_IAM (Editor);
+static void menu_cb_info (Editor me, EDITOR_ARGS_DIRECT) {
 	if (my data) Thing_info (my data);
 }
 
@@ -376,7 +356,7 @@ void structEditor :: v_createMenus () {
 
 void structEditor :: v_form_pictureWindow (EditorCommand cmd) {
 	LABEL (U"", U"Picture window:")
-	BOOLEAN (U"Erase first", 1);
+	BOOLEAN (U"Erase first", true);
 }
 void structEditor :: v_ok_pictureWindow (EditorCommand cmd) {
 	SET_INTEGER (U"Erase first", pref_picture_eraseFirst ());
@@ -386,7 +366,7 @@ void structEditor :: v_do_pictureWindow (EditorCommand cmd) {
 }
 
 void structEditor :: v_form_pictureMargins (EditorCommand cmd) {
-	Any radio = 0;
+	UiField radio;
 	LABEL (U"", U"Margins:")
 	OPTIONMENU_ENUM (U"Write name at top", kEditor_writeNameAtTop, kEditor_writeNameAtTop_DEFAULT);
 }
@@ -397,15 +377,14 @@ void structEditor :: v_do_pictureMargins (EditorCommand cmd) {
 	pref_picture_writeNameAtTop () = GET_ENUM (kEditor_writeNameAtTop, U"Write name at top");
 }
 
-static void gui_window_cb_goAway (I) {
-	iam (Editor);
-	Melder_assert (me != NULL);
+static void gui_window_cb_goAway (Editor me) {
+	Melder_assert (me);
 	Melder_assert (Thing_isa (me, classEditor));
 	my v_goAway ();
 }
 
 void praat_addCommandsToEditor (Editor me);
-void Editor_init (Editor me, int x, int y, int width, int height, const char32 *title, Data data) {
+void Editor_init (Editor me, int x, int y, int width, int height, const char32 *title, Daata data) {
 	double xmin, ymin, widthmax, heightmax;
 	Gui_getWindowPositioningBounds (& xmin, & ymin, & widthmax, & heightmax);
 	/*
@@ -480,7 +459,6 @@ void Editor_init (Editor me, int x, int y, int width, int height, const char32 *
 	/* Create menus. */
 
 	if (my v_hasMenuBar ()) {
-		my menus = Ordered_create ();
 		GuiWindow_addMenuBar (my d_windowForm);
 	}
 
@@ -490,7 +468,7 @@ void Editor_init (Editor me, int x, int y, int width, int height, const char32 *
 		my v_createMenus ();
 		EditorMenu helpMenu = Editor_addMenu (me, U"Help", 0);
 		my v_createHelpMenuItems (helpMenu);
-		EditorMenu_addCommand (helpMenu, U"-- search --", 0, NULL);
+		EditorMenu_addCommand (helpMenu, U"-- search --", 0, nullptr);
 		my searchButton = EditorMenu_addCommand (helpMenu, U"Search manual...", 'M', menu_cb_searchManual);
 		if (my v_scriptable ()) {
 			Editor_addCommand (me, U"File", U"New editor script", 0, menu_cb_newScript);
@@ -519,7 +497,7 @@ void Editor_save (Editor me, const char32 *text) {
 		[(GuiCocoaMenuItem *) my undoButton -> d_widget   setTitle: (NSString *) Melder_peek32toCfstring (my undoText)];
 	#elif motif
 		char *text_utf8 = Melder_peek32to8 (my undoText);
-		XtVaSetValues (my undoButton -> d_widget, XmNlabelString, text_utf8, NULL);
+		XtVaSetValues (my undoButton -> d_widget, XmNlabelString, text_utf8, nullptr);
 	#endif
 }
 
@@ -527,7 +505,7 @@ void Editor_openPraatPicture (Editor me) {
 	my pictureGraphics = praat_picture_editor_open (my pref_picture_eraseFirst ());
 }
 void Editor_closePraatPicture (Editor me) {
-	if (my data != NULL && my pref_picture_writeNameAtTop () != kEditor_writeNameAtTop_NO) {
+	if (my data && my pref_picture_writeNameAtTop () != kEditor_writeNameAtTop_NO) {
 		Graphics_setNumberSignIsBold (my pictureGraphics, false);
 		Graphics_setPercentSignIsItalic (my pictureGraphics, false);
 		Graphics_setCircumflexIsSuperscript (my pictureGraphics, false);
diff --git a/sys/Editor.h b/sys/Editor.h
index 6f9e3d6..deeff8b 100644
--- a/sys/Editor.h
+++ b/sys/Editor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
@@ -33,39 +32,55 @@ Thing_define (EditorMenu, Thing) {
 	Editor d_editor;
 	const char32 *menuTitle;
 	GuiMenu menuWidget;
-	Ordered commands;
+	OrderedOf<structEditorCommand> commands;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
+typedef MelderCallback <void, structEditor, EditorCommand, UiForm, int /*narg*/, Stackel /*args*/, const char32 *, Interpreter> EditorCommandCallback;
+
 Thing_define (EditorCommand, Thing) {
 	Editor d_editor;
 	EditorMenu menu;
 	const char32 *itemTitle;
 	GuiMenuItem itemWidget;
-	void (*commandCallback) (Editor editor_me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter);
+	EditorCommandCallback commandCallback;
 	const char32 *script;
-	UiForm d_uiform;
+	autoUiForm d_uiform;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
+typedef MelderCallback <void, structEditor> Editor_DataChangedCallback;
+typedef MelderCallback <void, structEditor> Editor_DestructionCallback;
+
+/*
+	The following doesn't work yet:
+*/
+//typedef MelderCallback <void, structEditor, autoDaata /* publication */> Editor_PublicationCallback;
+/*
+	because the autoDaata argument tends to be called with .move().
+	Therefore we have the stupider version:
+*/
+typedef void (*Editor_PublicationCallback) (Editor, autoDaata /* publication */);
+
 Thing_define (Editor, Thing) {
 	GuiWindow d_windowForm;
 	GuiMenuItem undoButton, searchButton;
-	Ordered menus;
-	Data data, previousData;   // the data that can be displayed and edited
+	OrderedOf<structEditorMenu> menus;
+	Daata data;   // the data that can be displayed and edited
+	autoDaata previousData;   // the data that can be displayed and edited
 	bool d_ownData;
 	char32 undoText [100];
 	Graphics pictureGraphics;
-	void (*d_dataChangedCallback) (Editor me, void *closure);                   void *d_dataChangedClosure;
-	void (*d_destructionCallback) (Editor me, void *closure);                   void *d_destructionClosure;
-	void (*d_publicationCallback) (Editor me, void *closure, Data publication); void *d_publicationClosure;
+	Editor_DataChangedCallback d_dataChangedCallback;
+	Editor_DestructionCallback d_destructionCallback;
+	Editor_PublicationCallback d_publicationCallback;
 	const char *callbackSocket;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_info ()
 		override;
@@ -98,16 +113,14 @@ Thing_define (Editor, Thing) {
 	#include "Editor_prefs.h"
 };
 
-GuiMenuItem EditorMenu_addCommand (EditorMenu me, const char32 *itemTitle /* cattable */, long flags,
-	void (*commandCallback) (Editor me, EditorCommand, UiForm, int, Stackel, const char32 *, Interpreter));
+GuiMenuItem EditorMenu_addCommand (EditorMenu me, const char32 *itemTitle /* cattable */, long flags, EditorCommandCallback commandCallback);
 GuiMenuItem EditorCommand_getItemWidget (EditorCommand me);
 
 EditorMenu Editor_addMenu (Editor me, const char32 *menuTitle, long flags);
 GuiObject EditorMenu_getMenuWidget (EditorMenu me);
 
 #define Editor_HIDDEN  (1 << 14)
-GuiMenuItem Editor_addCommand (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags,
-	void (*commandCallback) (Editor me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter));
+GuiMenuItem Editor_addCommand (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags, EditorCommandCallback commandCallback);
 GuiMenuItem Editor_addCommandScript (Editor me, const char32 *menuTitle, const char32 *itemTitle, long flags,
 	const char32 *script);
 void Editor_setMenuSensitive (Editor me, const char32 *menu, int sensitive);
@@ -130,7 +143,7 @@ inline static void Editor_dataChanged (Editor me)
 	{
 		my v_dataChanged ();
 	}
-inline static void Editor_setDataChangedCallback (Editor me, void (*dataChangedCallback) (Editor me, void *closure), void *dataChangedClosure)
+inline static void Editor_setDataChangedCallback (Editor me, Editor_DataChangedCallback dataChangedCallback)
 	/*
 	 * Message from boss: "notify me by calling this dataChangedCallback every time your data is changed from *inside* yourself."
 	 *
@@ -141,7 +154,6 @@ inline static void Editor_setDataChangedCallback (Editor me, void (*dataChangedC
 	 */
 	{
 		my d_dataChangedCallback = dataChangedCallback;
-		my d_dataChangedClosure = dataChangedClosure;
 	}
 inline static void Editor_broadcastDataChanged (Editor me)
 	/*
@@ -151,19 +163,18 @@ inline static void Editor_broadcastDataChanged (Editor me)
 	 */
 	{
 		if (my d_dataChangedCallback)
-			my d_dataChangedCallback (me, my d_dataChangedClosure);
+			my d_dataChangedCallback (me);
 	}
-inline static void Editor_setDestructionCallback (Editor me, void (*destructionCallback) (Editor me, void *closure), void *destructionClosure)
+inline static void Editor_setDestructionCallback (Editor me, Editor_DestructionCallback destructionCallback)
 	/*
-	 * Message from boss: "notify me by calling this destructionCallback every time you destroy yourself."
+	 * Message from observer: "notify me by calling this destructionCallback every time you destroy yourself."
 	 *
 	 * In Praat, "destroying yourself" typically happens when the user closes the editor window
 	 * or when an object that is being viewed in an editor window is "Remove"d.
-	 * Typically, the boss will (in the destructionCallback it installed) remove all dangling references to this editor.
+	 * Typically, the observer will (in the destructionCallback it installed) remove all dangling references to this editor.
 	 */
 	{
 		my d_destructionCallback = destructionCallback;
-		my d_destructionClosure = destructionClosure;
 	}
 inline static void Editor_broadcastDestruction (Editor me)
 	/*
@@ -173,9 +184,9 @@ inline static void Editor_broadcastDestruction (Editor me)
 	 */
 	{
 		if (my d_destructionCallback)
-			my d_destructionCallback (me, my d_destructionClosure);
+			my d_destructionCallback (me);
 	}
-inline static void Editor_setPublicationCallback (Editor me, void (*publicationCallback) (Editor me, void *closure, Data publication), void *publicationClosure)
+inline static void Editor_setPublicationCallback (Editor me, Editor_PublicationCallback publicationCallback)
 	/*
 	 * Message from boss: "notify me by calling this publicationCallback every time you have a piece of data to publish."
 	 *
@@ -186,9 +197,8 @@ inline static void Editor_setPublicationCallback (Editor me, void (*publicationC
 	 */
 	{
 		my d_publicationCallback = publicationCallback;
-		my d_publicationClosure = publicationClosure;
 	}
-inline static void Editor_broadcastPublication (Editor me, Data publication)
+inline static void Editor_broadcastPublication (Editor me, autoDaata publication)
 	/*
 	 * Message to boss: "I have a piece of data for you to publish."
 	 *
@@ -200,13 +210,13 @@ inline static void Editor_broadcastPublication (Editor me, Data publication)
 	 */
 	{
 		if (my d_publicationCallback)
-			my d_publicationCallback (me, my d_publicationClosure, publication);
+			my d_publicationCallback (me, publication.move());
 	}
 
 /***** For inheritors. *****/
 
 void Editor_init (Editor me, int x, int y , int width, int height,
-	const char32 *title, Data data);
+	const char32 *title, Daata data);
 /*
 	This creates my shell and my d_windowForm,
 	calls the v_createMenus and v_createChildren methods,
@@ -229,7 +239,7 @@ void Editor_init (Editor me, int x, int y , int width, int height,
 
 void Editor_save (Editor me, const char32 *text);   // for Undo
 
-UiForm UiForm_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle);
+autoUiForm UiForm_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle);
 void UiForm_parseStringE (EditorCommand cmd, int narg, Stackel args, const char32 *arguments, Interpreter interpreter);
 UiForm UiOutfile_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle);
 UiForm UiInfile_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle);
@@ -242,7 +252,7 @@ void Editor_doMenuCommand (Editor me, const char32 *command, int narg, Stackel a
  * They allow editors to draw into the Picture window.
  */
 Graphics praat_picture_editor_open (bool eraseFirst);
-void praat_picture_editor_close (void);
+void praat_picture_editor_close ();
 void Editor_openPraatPicture (Editor me);
 void Editor_closePraatPicture (Editor me);
 
diff --git a/sys/EditorM.h b/sys/EditorM.h
index 90b36b6..6f997a5 100644
--- a/sys/EditorM.h
+++ b/sys/EditorM.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #undef FORM
@@ -55,21 +54,21 @@
 #undef GET_STRING
 #undef GET_FILE
 
-#define REAL(label,def)		UiForm_addReal (cmd -> d_uiform, label, def);
-#define REAL_OR_UNDEFINED(label,def)  UiForm_addRealOrUndefined (cmd -> d_uiform, label, def);
-#define POSITIVE(label,def)	UiForm_addPositive (cmd -> d_uiform, label, def);
-#define INTEGER(label,def)	UiForm_addInteger (cmd -> d_uiform, label, def);
-#define NATURAL(label,def)	UiForm_addNatural (cmd -> d_uiform, label, def);
-#define WORD(label,def)		UiForm_addWord (cmd -> d_uiform, label, def);
-#define SENTENCE(label,def)	UiForm_addSentence (cmd -> d_uiform, label, def);
-#define COLOUR(label,def)	UiForm_addColour (cmd -> d_uiform, label, def);
-#define CHANNEL(label,def)	UiForm_addChannel (cmd -> d_uiform, label, def);
-#define BOOLEAN(label,def)	UiForm_addBoolean (cmd -> d_uiform, label, def);
-#define LABEL(name,label)	UiForm_addLabel (cmd -> d_uiform, name, label);
-#define TEXTFIELD(name,def)	UiForm_addText (cmd -> d_uiform, name, def);
-#define RADIO(label,def)	radio = UiForm_addRadio (cmd -> d_uiform, label, def);
+#define REAL(label,def)		UiForm_addReal (cmd -> d_uiform.get(), label, def);
+#define REAL_OR_UNDEFINED(label,def)  UiForm_addRealOrUndefined (cmd -> d_uiform.get(), label, def);
+#define POSITIVE(label,def)	UiForm_addPositive (cmd -> d_uiform.get(), label, def);
+#define INTEGER(label,def)	UiForm_addInteger (cmd -> d_uiform.get(), label, def);
+#define NATURAL(label,def)	UiForm_addNatural (cmd -> d_uiform.get(), label, def);
+#define WORD(label,def)		UiForm_addWord (cmd -> d_uiform.get(), label, def);
+#define SENTENCE(label,def)	UiForm_addSentence (cmd -> d_uiform.get(), label, def);
+#define COLOUR(label,def)	UiForm_addColour (cmd -> d_uiform.get(), label, def);
+#define CHANNEL(label,def)	UiForm_addChannel (cmd -> d_uiform.get(), label, def);
+#define BOOLEAN(label,def)	UiForm_addBoolean (cmd -> d_uiform.get(), label, def);
+#define LABEL(name,label)	UiForm_addLabel (cmd -> d_uiform.get(), name, label);
+#define TEXTFIELD(name,def)	UiForm_addText (cmd -> d_uiform.get(), name, def);
+#define RADIO(label,def)	radio = UiForm_addRadio (cmd -> d_uiform.get(), label, def);
 #define RADIOBUTTON(label)	UiRadio_addButton (radio, label);
-#define OPTIONMENU(label,def)	radio = UiForm_addOptionMenu (cmd -> d_uiform, label, def);
+#define OPTIONMENU(label,def)	radio = UiForm_addOptionMenu (cmd -> d_uiform.get(), label, def);
 #define OPTION(label)	UiOptionMenu_addButton (radio, label);
 #define RADIOBUTTONS_ENUM(labelProc,min,max) { for (int itext = min; itext <= max; itext ++) RADIOBUTTON (labelProc) }
 #define OPTIONS_ENUM(labelProc,min,max) { for (int itext = min; itext <= max; itext ++) OPTION (labelProc) }
@@ -81,46 +80,47 @@
 	OPTIONMENU (label, def - enum##_MIN + 1) \
 	for (int ienum = enum##_MIN; ienum <= enum##_MAX; ienum ++) \
 		OPTION (enum##_getText (ienum))
-#define LIST(label,n,str,def)	UiForm_addList (cmd -> d_uiform, label, n, str, def);
-#define SET_REAL(name,value)	UiForm_setReal (cmd -> d_uiform, name, value);
-#define SET_INTEGER(name,value)	UiForm_setInteger (cmd -> d_uiform, name, value);
-#define SET_STRING(name,value)	UiForm_setString (cmd -> d_uiform, name, value);
+#define LIST(label,n,str,def)	UiForm_addList (cmd -> d_uiform.get(), label, n, str, def);
+#define SET_REAL(name,value)	UiForm_setReal (cmd -> d_uiform.get(), name, value);
+#define SET_INTEGER(name,value)	UiForm_setInteger (cmd -> d_uiform.get(), name, value);
+#define SET_STRING(name,value)	UiForm_setString (cmd -> d_uiform.get(), name, value);
 #define SET_ENUM(name,enum,value)  SET_STRING (name, enum##_getText (value))
 
 #define DIALOG  cmd -> d_uiform
 
-#define EDITOR_ARGS  Editor void_me, EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter
-#define EDITOR_IAM(klas)  iam (klas); (void) me; (void) cmd; (void) sendingForm; (void) narg; (void) args; (void) sendingString; (void) interpreter
-#define EDITOR_FORM(title,helpTitle)  if (cmd -> d_uiform == NULL) { Any radio = 0; (void) radio; \
+#define EDITOR_ARGS_FORM  EditorCommand cmd, UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter
+#define EDITOR_ARGS_CMD  EditorCommand cmd, UiForm, int, Stackel, const char32 *, Interpreter
+#define EDITOR_ARGS_DIRECT  EditorCommand, UiForm, int, Stackel, const char32 *, Interpreter
+#define EDITOR_FORM(title,helpTitle)  if (! cmd -> d_uiform) { UiField radio = nullptr; (void) radio; \
 	cmd -> d_uiform = UiForm_createE (cmd, title, cmd -> itemTitle, helpTitle);
-#define EDITOR_OK  UiForm_finish (cmd -> d_uiform); } if (sendingForm == NULL && args == NULL && sendingString == NULL) {
-#define EDITOR_DO  UiForm_do (cmd -> d_uiform, false); } else if (sendingForm == NULL) { \
+#define EDITOR_OK  UiForm_finish (cmd -> d_uiform.get()); } if (! sendingForm && ! args && ! sendingString) {
+#define EDITOR_DO  UiForm_do (cmd -> d_uiform.get(), false); } else if (! sendingForm) { \
 	UiForm_parseStringE (cmd, narg, args, sendingString, interpreter); } else {
 #define EDITOR_END  }
 
 #define EDITOR_FORM_WRITE(title,helpTitle) \
-	if (cmd -> d_uiform == NULL) { \
-		cmd -> d_uiform = UiOutfile_createE (cmd, title, cmd -> itemTitle, helpTitle); \
-		} if (sendingForm == NULL && args == NULL && sendingString == NULL) { char32 defaultName [300]; defaultName [0] = U'\0';
+	if (! cmd -> d_uiform) { \
+		cmd -> d_uiform = autoUiForm (UiOutfile_createE (cmd, title, cmd -> itemTitle, helpTitle)); \
+		} if (! sendingForm && ! args && ! sendingString) { char32 defaultName [300]; defaultName [0] = U'\0';
 #define EDITOR_DO_WRITE \
-	UiOutfile_do (cmd -> d_uiform, defaultName); } else { MelderFile file; structMelderFile file2 = { 0 }; \
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (sendingForm); \
+	UiOutfile_do (cmd -> d_uiform.get(), defaultName); } else { MelderFile file; structMelderFile file2 { 0 }; \
+		if (! args && ! sendingString) file = UiFile_getFile (sendingForm); \
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
 
 #define EDITOR_FORM_READ(title,helpTitle) \
-	if (cmd -> d_uiform == NULL) { \
-		cmd -> d_uiform = UiInfile_createE (cmd, title, cmd -> itemTitle, helpTitle); \
-		} if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+	if (! cmd -> d_uiform) { \
+		cmd -> d_uiform = autoUiForm (UiInfile_createE (cmd, title, cmd -> itemTitle, helpTitle)); \
+		} if (! sendingForm && ! args && ! sendingString) {
 #define EDITOR_DO_READ \
-	UiInfile_do (cmd -> d_uiform); } else { MelderFile file; structMelderFile file2 = { 0 }; \
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (sendingForm); \
+	UiInfile_do (cmd -> d_uiform.get()); } else { MelderFile file; structMelderFile file2 { 0 }; \
+		if (! args && ! sendingString) file = UiFile_getFile (sendingForm); \
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
 
-#define GET_REAL(name)  UiForm_getReal (cmd -> d_uiform, name)
-#define GET_INTEGER(name)  UiForm_getInteger (cmd -> d_uiform, name)
-#define GET_STRING(name)  UiForm_getString (cmd -> d_uiform, name)
+#define GET_REAL(name)  UiForm_getReal (cmd -> d_uiform.get(), name)
+#define GET_INTEGER(name)  UiForm_getInteger (cmd -> d_uiform.get(), name)
+#define GET_STRING(name)  UiForm_getString (cmd -> d_uiform.get(), name)
 #define GET_ENUM(enum,name)  (enum) enum##_getValue (GET_STRING (name))
-#define GET_FILE  UiForm_getFile (cmd -> d_uiform)
+#define GET_FILE  UiForm_getFile (cmd -> d_uiform.get())
 
 /* End of file EditorM.h */
 #endif
diff --git a/sys/Editor_enums.h b/sys/Editor_enums.h
index 104d164..bfb82f8 100644
--- a/sys/Editor_enums.h
+++ b/sys/Editor_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kEditor_writeNameAtTop, 0)
diff --git a/sys/Editor_prefs.h b/sys/Editor_prefs.h
index 9090e8a..bc326dd 100644
--- a/sys/Editor_prefs.h
+++ b/sys/Editor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (Editor)
diff --git a/sys/Formula.cpp b/sys/Formula.cpp
index e216c6b..b6aee72 100644
--- a/sys/Formula.cpp
+++ b/sys/Formula.cpp
@@ -1,20 +1,19 @@
 /* Formula.cpp
  *
- * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -35,15 +34,16 @@
 #include "UiPause.h"
 #include "DemoEditor.h"
 
-static Interpreter theInterpreter, theLocalInterpreter;
-static Data theSource;
+static Interpreter theInterpreter;
+static autoInterpreter theLocalInterpreter;
+static Daata theSource;
 static const char32 *theExpression;
 static int theLevel = 1;
 #define MAXIMUM_NUMBER_OF_LEVELS  20
 static int theExpressionType [1 + MAXIMUM_NUMBER_OF_LEVELS];
-static int theOptimize;
+static bool theOptimize;
 
-static struct Formula_NumericArray theZeroNumericArray = { 0, 0, NULL };
+static struct Formula_NumericArray theZeroNumericArray = { 0, 0, nullptr };
 
 typedef struct structFormulaInstruction {
 	int symbol;
@@ -53,7 +53,7 @@ typedef struct structFormulaInstruction {
 		int label;
 		char32 *string;
 		//struct Formula_NumericArray numericArray;
-		Data object;
+		Daata object;
 		InterpreterVariable variable;
 	} content;
 } *FormulaInstruction;
@@ -284,14 +284,14 @@ static int languageNameCompare (const void *first, const void *second) {
 
 static int Formula_hasLanguageName (const char32 *f) {
 	static int *index;
-	if (index == NULL) {
+	if (! index) {
 		index = NUMvector <int> (1, hoogsteInvoersymbool);
 		for (int tok = 1; tok <= hoogsteInvoersymbool; tok ++) {
 			index [tok] = tok;
 		}
 		qsort (& index [1], hoogsteInvoersymbool, sizeof (int), languageNameCompare);
 	}
-	if (index == NULL) {   // linear search
+	if (! index) {   // linear search
 		for (int tok = 1; tok <= hoogsteInvoersymbool; tok ++) {
 			if (str32equ (f, Formula_instructionNames [tok])) return tok;
 		}
@@ -299,12 +299,12 @@ static int Formula_hasLanguageName (const char32 *f) {
 		int dummy = 0, *found;
 		languageNameCompare_searchString = f;
 		found = (int *) bsearch (& dummy, & index [1], hoogsteInvoersymbool, sizeof (int), languageNameCompare);
-		if (found != NULL) return *found;
+		if (found) return *found;
 	}
 	return 0;
 }
 
-static void Formula_lexan (void) {
+static void Formula_lexan () {
 /*
 	Purpose:
 		translate the formula text into a series of symbols.
@@ -422,7 +422,7 @@ static void Formula_lexan (void) {
 						 * This could be a variable with the same name as a function.
 						 */
 						InterpreterVariable var = Interpreter_hasVariable (theInterpreter, token.string);
-						if (var == NULL) {
+						if (! var) {
 							nieuwtok (VARIABLE_NAME_)
 							lexan [itok]. content.string = Melder_dup_f (token.string);
 							numberOfStringConstants ++;
@@ -490,7 +490,7 @@ static void Formula_lexan (void) {
 							numberOfStringConstants ++;
 						} else {
 							InterpreterVariable var = Interpreter_hasVariable (theInterpreter, token.string);
-							if (var == NULL) {
+							if (! var) {
 								nieuwtok (VARIABLE_NAME_)
 								lexan [itok]. content.string = Melder_dup_f (token.string);
 								numberOfStringConstants ++;
@@ -534,7 +534,7 @@ static void Formula_lexan (void) {
 					numberOfStringConstants ++;
 				} else {
 					InterpreterVariable var = Interpreter_hasVariable (theInterpreter, token.string);
-					if (var == NULL) {
+					if (! var) {
 						nieuwtok (VARIABLE_NAME_)
 						lexan [itok]. content.string = Melder_dup_f (token.string);
 						numberOfStringConstants ++;
@@ -557,28 +557,27 @@ static void Formula_lexan (void) {
 				}
 			}
 		} else if (kar >= U'A' && kar <= U'Z') {
-			int endsInDollarSign = FALSE;
-			char32 *underscore;
+			bool endsInDollarSign = false;
 			stokaan;
 			do stokkar while (isalnum ((int) kar) || kar == U'_');   // TODO: allow more than just ASCII
-			if (kar == U'$') { stokkar endsInDollarSign = TRUE; }
+			if (kar == U'$') { stokkar endsInDollarSign = true; }
 			stokuit;
 			oudkar;
 			/*
 			 * 'token' now contains a word that could be an object name.
 			 */
-			underscore = str32chr (token.string, '_');
+			char32 *underscore = str32chr (token.string, '_');
 			if (str32equ (token.string, U"Self")) {
-				if (theSource == NULL)
+				if (! theSource)
 					formulefout (U"Cannot use \"Self\" if there is no current object.", ikar);
 				nieuwtok (MATRIKS_)
 				tokmatriks (theSource);
 			} else if (str32equ (token.string, U"Self$")) {
-				if (theSource == NULL)
+				if (! theSource)
 					formulefout (U"Cannot use \"Self$\" if there is no current object.", ikar);
 				nieuwtok (MATRIKSSTR_)
 				tokmatriks (theSource);
-			} else if (underscore == NULL) {
+			} else if (! underscore) {
 				Melder_throw (
 					U"Unknown symbol " U_LEFT_GUILLEMET , token.string,
 					U_RIGHT_GUILLEMET U" in formula "
@@ -591,7 +590,7 @@ static void Formula_lexan (void) {
 				if (i == 0)
 					formulefout (U"No such object (note: variables start with lower case)", ikar);
 				nieuwtok (endsInDollarSign ? MATRIKSSTR_ : MATRIKS_)
-				tokmatriks ((Data) theCurrentPraatObjects -> list [i]. object);
+				tokmatriks ((Daata) theCurrentPraatObjects -> list [i]. object);
 			} else {
 				int i = theCurrentPraatObjects -> n;
 				*underscore = ' ';
@@ -601,7 +600,7 @@ static void Formula_lexan (void) {
 				if (i == 0)
 					formulefout (U"No such object (note: variables start with lower case)", ikar);
 				nieuwtok (endsInDollarSign ? MATRIKSSTR_ : MATRIKS_)
-				tokmatriks ((Data) theCurrentPraatObjects -> list [i]. object);
+				tokmatriks ((Daata) theCurrentPraatObjects -> list [i]. object);
 			}
 		} else if (kar == U'(') {
 			nieuwtok (HAAKJEOPENEN_)
@@ -734,12 +733,12 @@ static void pas (int symbol) {
 	} else {
 		const char32 *symbolName1 = Formula_instructionNames [symbol];
 		const char32 *symbolName2 = Formula_instructionNames [lexan [ilexan]. symbol];
-		bool needQuotes1 = str32chr (symbolName1, U' ') == NULL;
-		bool needQuotes2 = str32chr (symbolName2, U' ') == NULL;
+		bool needQuotes1 = ( str32chr (symbolName1, U' ') == nullptr );
+		bool needQuotes2 = ( str32chr (symbolName2, U' ') == nullptr );
 		static MelderString melding { 0 };
 		MelderString_copy (& melding,
-			U"Expected ", needQuotes1 ? U"\"" : NULL, symbolName1, needQuotes1 ? U"\"" : NULL,
-			U", but found ", needQuotes2 ? U"\"" : NULL, symbolName2, needQuotes2 ? U"\"" : NULL);
+			U"Expected ", needQuotes1 ? U"\"" : nullptr, symbolName1, needQuotes1 ? U"\"" : nullptr,
+			U", but found ", needQuotes2 ? U"\"" : nullptr, symbolName2, needQuotes2 ? U"\"" : nullptr);
 		formulefout (melding.string, lexan [ilexan]. position);
 	}
 }
@@ -749,10 +748,10 @@ static bool pasArguments () {
     if (symbol == HAAKJEOPENEN_) return true;   // success: a function call like: myFunction (...)
     if (symbol == COLON_) return false;   // success: a function call like: myFunction: ...
     const char32 *symbolName2 = Formula_instructionNames [lexan [ilexan]. symbol];
-    bool needQuotes2 = str32chr (symbolName2, U' ') == NULL;
+    bool needQuotes2 = ( str32chr (symbolName2, U' ') == nullptr );
     static MelderString melding { 0 };
     MelderString_copy (& melding,
-		U"Expected \"(\" or \":\", but found ", needQuotes2 ? U"\"" : NULL, symbolName2, needQuotes2 ? U"\"" : NULL);
+		U"Expected \"(\" or \":\", but found ", needQuotes2 ? U"\"" : nullptr, symbolName2, needQuotes2 ? U"\"" : nullptr);
     formulefout (melding.string, lexan [ilexan]. position);
     return false;   // will never occur
 }
@@ -761,9 +760,9 @@ static bool pasArguments () {
 #define parsenumber(g)  parse [iparse]. content.number = (g)
 #define ontleedlabel(l)  parse [iparse]. content.label = (l)
 
-static void parseExpression (void);
+static void parseExpression ();
 
-static void parsePowerFactor (void) {
+static void parsePowerFactor () {
 	int symbol = nieuwlees;
 
 	if (symbol >= LOW_VALUE && symbol <= HIGH_VALUE) {
@@ -835,7 +834,7 @@ static void parsePowerFactor (void) {
 
 	if (symbol == VARIABLE_NAME_) {
 		InterpreterVariable var = Interpreter_hasVariable (theInterpreter, lexan [ilexan]. content.string);
-		if (var == NULL)
+		if (! var)
 			formulefout (U"Unknown variable", lexan [ilexan]. position);
 		nieuwontleed (NUMERIC_VARIABLE_);
 		parse [iparse]. content.variable = var;
@@ -1019,8 +1018,8 @@ static void parsePowerFactor (void) {
 	}
 
 	if (symbol == MATRIKS_) {
-		Data thee = lexan [ilexan]. content.object;
-		Melder_assert (thee != NULL);
+		Daata thee = lexan [ilexan]. content.object;
+		Melder_assert (thee != nullptr);
 		symbol = nieuwlees;
 		if (symbol == RECHTEHAAKOPENEN_) {
 			if (nieuwlees == RECHTEHAAKSLUITEN_) {
@@ -1173,8 +1172,8 @@ static void parsePowerFactor (void) {
 	}
 
 	if (symbol == MATRIKSSTR_) {
-		Data thee = lexan [ilexan]. content.object;
-		Melder_assert (thee != NULL);
+		Daata thee = lexan [ilexan]. content.object;
+		Melder_assert (thee != nullptr);
 		symbol = nieuwlees;
 		if (symbol == RECHTEHAAKOPENEN_) {
 			if (nieuwlees == RECHTEHAAKSLUITEN_) {
@@ -1374,9 +1373,9 @@ static void parsePowerFactor (void) {
 	formulefout (U"Symbol misplaced", lexan [ilexan + 1]. position);
 }
 
-static void parseFactor (void);
+static void parseFactor ();
 
-static void parsePowerFactors (void) {
+static void parsePowerFactors () {
 	if (nieuwlees == POWER_) {
 		if (ilexan > 2 && lexan [ilexan - 2]. symbol == MINUS_ && lexan [ilexan - 1]. symbol == NUMBER_) {
 			oudlees;
@@ -1389,12 +1388,12 @@ static void parsePowerFactors (void) {
 		oudlees;
 }
 
-static void parseMinus (void) {
+static void parseMinus () {
 	parsePowerFactor ();
 	parsePowerFactors ();
 }
 
-static void parseFactor (void) {
+static void parseFactor () {
 	if (nieuwlees == MINUS_) {
 		parseFactor ();   // there can be multiple consecutive minuses
 		nieuwontleed (MINUS_);
@@ -1404,7 +1403,7 @@ static void parseFactor (void) {
 	parseMinus ();   // like -a^b
 }
 
-static void parseFactors (void) {
+static void parseFactors () {
 	int sym = nieuwlees;   // has to be local, because of recursion
 	if (sym == MUL_ || sym == RDIV_ || sym == IDIV_ || sym == MOD_) {
 		parseFactor ();
@@ -1414,12 +1413,12 @@ static void parseFactors (void) {
 	else oudlees;
 }
 
-static void parseTerm (void) {
+static void parseTerm () {
 	parseFactor ();
 	parseFactors ();
 }
 
-static void parseTerms (void) {
+static void parseTerms () {
 	int symbol = nieuwlees;
 	if (symbol == ADD_ || symbol == SUB_) {
 		parseTerm ();
@@ -1429,7 +1428,7 @@ static void parseTerms (void) {
 	else oudlees;
 }
 
-static void parseNot (void) {
+static void parseNot () {
 	int symbol;
 	parseTerm ();
 	parseTerms ();
@@ -1442,7 +1441,7 @@ static void parseNot (void) {
 	else oudlees;
 }
 
-static void parseAnd (void) {
+static void parseAnd () {
 	if (nieuwlees == NOT_) {
 		parseAnd ();   // like not not not
 		nieuwontleed (NOT_);
@@ -1452,7 +1451,7 @@ static void parseAnd (void) {
 	parseNot ();
 }
 
-static void parseOr (void) {
+static void parseOr () {
 	parseAnd ();
 	if (nieuwlees == AND_) {
 		int falseLabel = nieuwlabel;
@@ -1471,7 +1470,7 @@ static void parseOr (void) {
 	oudlees;
 }
 
-static void parseExpression (void) {
+static void parseExpression () {
 	parseOr ();
 	if (nieuwlees == OR_) {
 		int trueLabel = nieuwlabel;
@@ -1505,7 +1504,7 @@ static void parseExpression (void) {
 		result == 0 || my parse [my numberOfInstructions]. symbol == END_
 */
 
-static void Formula_parseExpression (void) {
+static void Formula_parseExpression () {
 	ilabel = ilexan = iparse = 0;
 	if (lexan [1]. symbol == END_) Melder_throw (U"Empty formula.");
 	parseExpression ();
@@ -1528,7 +1527,7 @@ static int vindLabel (int label) {
 	return result;
 }
 
-static void Formula_optimizeFlow (void)
+static void Formula_optimizeFlow ()
 /* Vereenvoudig boolse uitdrukkingen.					*/
 /* Nadien:								*/
 /*    de stroom volgt het kortste pad;					*/
@@ -1723,7 +1722,7 @@ static void Formula_optimizeFlow (void)
 	}
 }
 
-static void Formula_evaluateConstants (void) {
+static void Formula_evaluateConstants () {
 	for (;;) {
 		bool improved = 0;
 		for (int i = 1; i <= numberOfInstructions; i ++) {
@@ -1752,7 +1751,7 @@ static void Formula_evaluateConstants (void) {
 	}
 }
 
-static void Formula_removeLabels (void) {
+static void Formula_removeLabels () {
 	/*
 	 * First translate symbolic labels (< 0) into instructions locations (> 0).
 	 */
@@ -1813,7 +1812,7 @@ static void Formula_print (FormulaInstruction f) {
 		else if (symbol == MATRIKS_ || symbol == MATRIKSSTR_ || symbol == MATRIKS1_ || symbol == MATRIKSSTR1_ ||
 		         symbol == MATRIKS2_ || symbol == MATRIKSSTR2_ || symbol == ROWSTR_ || symbol == COLSTR_)
 		{
-			Thing object = (Thing) f [i]. content.object;
+			Thing object = f [i]. content.object;
 			if (object) {
 				Melder_casual (i, U" ", instructionName, U" ", Thing_className (object), U" ", object -> name);
 			} else {
@@ -1827,13 +1826,13 @@ static void Formula_print (FormulaInstruction f) {
 	} while (symbol != END_);
 }
 
-void Formula_compile (Any interpreter, Any data, const char32 *expression, int expressionType, int optimize) {
-	theInterpreter = (Interpreter) interpreter;
-	if (theInterpreter == NULL) {
-		if (theLocalInterpreter == NULL) {
-			theLocalInterpreter = Interpreter_create (NULL, NULL);
+void Formula_compile (Interpreter interpreter, Daata data, const char32 *expression, int expressionType, bool optimize) {
+	theInterpreter = interpreter;
+	if (! theInterpreter) {
+		if (! theLocalInterpreter) {
+			theLocalInterpreter = Interpreter_create (nullptr, nullptr);
 		}
-		theInterpreter = theLocalInterpreter;
+		theInterpreter = theLocalInterpreter.get();
 		#if USE_HASH
 		for (std::unordered_map<std::u32string, InterpreterVariable>::iterator it = theInterpreter -> variablesMap -> begin(); it != theInterpreter -> variablesMap -> end(); it ++) {
 			InterpreterVariable var = it -> second;
@@ -1841,10 +1840,10 @@ void Formula_compile (Any interpreter, Any data, const char32 *expression, int e
 		}
 		theInterpreter -> variablesMap -> clear ();
 		#else
-		Collection_removeAllItems (theInterpreter -> variables);
+		theInterpreter -> variables. removeAllItems ();
 		#endif
 	}
-	theSource = (Data) data;
+	theSource = data;
 	theExpression = expression;
 	theExpressionType [theLevel] = expressionType;
 	theOptimize = optimize;
@@ -1947,7 +1946,7 @@ const char32 *Stackel_whichText (Stackel me) {
 		U"???";
 }
 
-static void do_not (void) {
+static void do_not () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : x->number == 0.0 ? 1.0 : 0.0);
@@ -1955,7 +1954,7 @@ static void do_not (void) {
 		Melder_throw (U"Cannot negate (\"not\") ", Stackel_whichText (x), U".");
 	}
 }
-static void do_eq (void) {
+static void do_eq () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == y->number ? 1.0 : 0.0);   /* Even if undefined. */
@@ -1966,7 +1965,7 @@ static void do_eq (void) {
 		Melder_throw (U"Cannot compare (=) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_ne (void) {
+static void do_ne () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number != y->number ? 1.0 : 0.0);   /* Even if undefined. */
@@ -1977,7 +1976,7 @@ static void do_ne (void) {
 		Melder_throw (U"Cannot compare (<>) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_le (void) {
+static void do_le () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -1989,7 +1988,7 @@ static void do_le (void) {
 		Melder_throw (U"Cannot compare (<=) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_lt (void) {
+static void do_lt () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2001,7 +2000,7 @@ static void do_lt (void) {
 		Melder_throw (U"Cannot compare (<) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_ge (void) {
+static void do_ge () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2013,7 +2012,7 @@ static void do_ge (void) {
 		Melder_throw (U"Cannot compare (>=) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_gt (void) {
+static void do_gt () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2025,7 +2024,7 @@ static void do_gt (void) {
 		Melder_throw (U"Cannot compare (>) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_add (void) {
+static void do_add () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2040,7 +2039,7 @@ static void do_add (void) {
 		Melder_throw (U"Cannot add ", Stackel_whichText (y), U" to ", Stackel_whichText (x), U".");
 	}
 }
-static void do_sub (void) {
+static void do_sub () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2060,7 +2059,7 @@ static void do_sub (void) {
 		Melder_throw (U"Cannot subtract (-) ", Stackel_whichText (y), U" from ", Stackel_whichText (x), U".");
 	}
 }
-static void do_mul (void) {
+static void do_mul () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2069,7 +2068,7 @@ static void do_mul (void) {
 		Melder_throw (U"Cannot multiply (*) ", Stackel_whichText (x), U" by ", Stackel_whichText (y), U".");
 	}
 }
-static void do_rdiv (void) {
+static void do_rdiv () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2079,7 +2078,7 @@ static void do_rdiv (void) {
 		Melder_throw (U"Cannot divide (/) ", Stackel_whichText (x), U" by ", Stackel_whichText (y), U".");
 	}
 }
-static void do_idiv (void) {
+static void do_idiv () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2089,7 +2088,7 @@ static void do_idiv (void) {
 		Melder_throw (U"Cannot divide (\"div\") ", Stackel_whichText (x), U" by ", Stackel_whichText (y), U".");
 	}
 }
-static void do_mod (void) {
+static void do_mod () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2099,7 +2098,7 @@ static void do_mod (void) {
 		Melder_throw (U"Cannot divide (\"mod\") ", Stackel_whichText (x), U" by ", Stackel_whichText (y), U".");
 	}
 }
-static void do_minus (void) {
+static void do_minus () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : - x->number);
@@ -2107,7 +2106,7 @@ static void do_minus (void) {
 		Melder_throw (U"Cannot take the opposite (-) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_power (void) {
+static void do_power () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined :
@@ -2116,7 +2115,7 @@ static void do_power (void) {
 		Melder_throw (U"Cannot exponentiate (^) ", Stackel_whichText (x), U" to ", Stackel_whichText (y), U".");
 	}
 }
-static void do_sqr (void) {
+static void do_sqr () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : x->number * x->number);
@@ -2133,7 +2132,7 @@ static void do_function_n_n (double (*f) (double)) {
 			U" requires a numeric argument, not ", Stackel_whichText (x), U".");
 	}
 }
-static void do_abs (void) {
+static void do_abs () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : fabs (x->number));
@@ -2141,7 +2140,7 @@ static void do_abs (void) {
 		Melder_throw (U"Cannot take the absolute value (abs) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_round (void) {
+static void do_round () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : floor (x->number + 0.5));
@@ -2149,7 +2148,7 @@ static void do_round (void) {
 		Melder_throw (U"Cannot round ", Stackel_whichText (x), U".");
 	}
 }
-static void do_floor (void) {
+static void do_floor () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : floor (x->number));
@@ -2157,7 +2156,7 @@ static void do_floor (void) {
 		Melder_throw (U"Cannot round down (floor) ", Stackel_whichText (x), U".");
 	}
 }
-static void do_ceiling (void) {
+static void do_ceiling () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : ceil (x->number));
@@ -2165,7 +2164,7 @@ static void do_ceiling (void) {
 		Melder_throw (U"Cannot round up (ceiling) ", Stackel_whichText (x), U".");
 	}
 }
-static void do_sqrt (void) {
+static void do_sqrt () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2174,7 +2173,7 @@ static void do_sqrt (void) {
 		Melder_throw (U"Cannot take the square root (sqrt) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_sin (void) {
+static void do_sin () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : sin (x->number));
@@ -2182,7 +2181,7 @@ static void do_sin (void) {
 		Melder_throw (U"Cannot take the sine (sin) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_cos (void) {
+static void do_cos () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : cos (x->number));
@@ -2190,7 +2189,7 @@ static void do_cos (void) {
 		Melder_throw (U"Cannot take the cosine (cos) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_tan (void) {
+static void do_tan () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : tan (x->number));
@@ -2198,7 +2197,7 @@ static void do_tan (void) {
 		Melder_throw (U"Cannot take the tangent (tan) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_arcsin (void) {
+static void do_arcsin () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2207,7 +2206,7 @@ static void do_arcsin (void) {
 		Melder_throw (U"Cannot take the arcsine (arcsin) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_arccos (void) {
+static void do_arccos () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2216,7 +2215,7 @@ static void do_arccos (void) {
 		Melder_throw (U"Cannot take the arccosine (arccos) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_arctan (void) {
+static void do_arctan () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : atan (x->number));
@@ -2224,7 +2223,7 @@ static void do_arctan (void) {
 		Melder_throw (U"Cannot take the arctangent (arctan) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_exp (void) {
+static void do_exp () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : exp (x->number));
@@ -2232,7 +2231,7 @@ static void do_exp (void) {
 		Melder_throw (U"Cannot exponentiate (exp) ", Stackel_whichText (x), U".");
 	}
 }
-static void do_sinh (void) {
+static void do_sinh () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : sinh (x->number));
@@ -2240,7 +2239,7 @@ static void do_sinh (void) {
 		Melder_throw (U"Cannot take the hyperbolic sine (sinh) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_cosh (void) {
+static void do_cosh () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : cosh (x->number));
@@ -2248,7 +2247,7 @@ static void do_cosh (void) {
 		Melder_throw (U"Cannot take the hyperbolic cosine (cosh) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_tanh (void) {
+static void do_tanh () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined : tanh (x->number));
@@ -2256,7 +2255,7 @@ static void do_tanh (void) {
 		Melder_throw (U"Cannot take the hyperbolic tangent (tanh) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_log2 (void) {
+static void do_log2 () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2265,7 +2264,7 @@ static void do_log2 (void) {
 		Melder_throw (U"Cannot take the base-2 logarithm (log2) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_ln (void) {
+static void do_ln () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2274,7 +2273,7 @@ static void do_ln (void) {
 		Melder_throw (U"Cannot take the natural logarithm (ln) of ", Stackel_whichText (x), U".");
 	}
 }
-static void do_log10 (void) {
+static void do_log10 () {
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		pushNumber (x->number == NUMundefined ? NUMundefined :
@@ -2382,18 +2381,18 @@ static void do_function_dl_l (long (*f) (double, long)) {
 			Stackel_whichText (x), U" and ", Stackel_whichText (y), U".");
 	}
 }
-static void do_objects_are_identical (void) {
+static void do_objects_are_identical () {
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		int id1 = lround (x->number), id2 = lround (y->number);
 		int i = theCurrentPraatObjects -> n;
 		while (i > 0 && id1 != theCurrentPraatObjects -> list [i]. id) i --;
 		if (i == 0) Melder_throw (U"Object #", id1, U" does not exist in function objectsAreIdentical.");
-		Data object1 = (Data) theCurrentPraatObjects -> list [i]. object;
+		Daata object1 = (Daata) theCurrentPraatObjects -> list [i]. object;
 		i = theCurrentPraatObjects -> n;
 		while (i > 0 && id2 != theCurrentPraatObjects -> list [i]. id) i --;
 		if (i == 0) Melder_throw (U"Object #", id2, U" does not exist in function objectsAreIdentical.");
-		Data object2 = (Data) theCurrentPraatObjects -> list [i]. object;
+		Daata object2 = (Daata) theCurrentPraatObjects -> list [i]. object;
 		pushNumber (x->number == NUMundefined || y->number == NUMundefined ? NUMundefined : Data_equal (object1, object2));
 	} else {
 		Melder_throw (U"The function objectsAreIdentical requires two numeric arguments (object IDs), not ",
@@ -2422,7 +2421,7 @@ static void do_function_dll_d (double (*f) (double, long, long)) {
 			Stackel_whichText (y), U", and ", Stackel_whichText (z), U".");
 	}
 }
-static void do_do (void) {
+static void do_do () {
 	Stackel narg = pop;
 	Melder_assert (narg->which == Stackel_NUMBER);
 	if (narg->number < 1)
@@ -2437,12 +2436,12 @@ static void do_do (void) {
 	if (stack [0]. which != Stackel_STRING)
 		Melder_throw (U"The first argument of the function \"do\" has to be a string, namely a menu command, and not ", Stackel_whichText (& stack [0]), U".");
 	const char32 *command = stack [0]. string;
-	if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor != NULL) {
+	if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor != nullptr) {
 		autoMelderString valueString;
 		MelderString_appendCharacter (& valueString, 1);   // TODO: check whether this is needed at all, or is just MelderString_empty enough?
 		autoMelderDivertInfo divert (& valueString);
 		autostring32 command2 = Melder_dup (command);   // allow the menu command to reuse the stack (?)
-		Editor_doMenuCommand ((Editor) praatP. editor, command2.peek(), numberOfArguments, & stack [0], NULL, theInterpreter);
+		Editor_doMenuCommand (praatP. editor, command2.peek(), numberOfArguments, & stack [0], nullptr, theInterpreter);
 		pushNumber (Melder_atof (valueString.string));
 		return;
 	} else if (theCurrentPraatObjects != & theForegroundPraatObjects &&
@@ -2476,7 +2475,7 @@ static void do_do (void) {
 	praat_updateSelection ();   // BUG: superfluous? flickering?
 	pushNumber (1);
 }
-static void do_doStr (void) {
+static void do_doStr () {
 	Stackel narg = pop;
 	Melder_assert (narg->which == Stackel_NUMBER);
 	if (narg->number < 1)
@@ -2491,12 +2490,12 @@ static void do_doStr (void) {
 	if (stack [0]. which != Stackel_STRING)
 		Melder_throw (U"The first argument of the function \"do$\" has to be a string, namely a menu command, and not ", Stackel_whichText (& stack [0]), U".");
 	const char32 *command = stack [0]. string;
-	if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor != NULL) {
+	if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor != nullptr) {
 		static MelderString info;
 		MelderString_empty (& info);
 		autoMelderDivertInfo divert (& info);
 		autostring32 command2 = Melder_dup (command);
-		Editor_doMenuCommand ((Editor) praatP. editor, command2.peek(), numberOfArguments, & stack [0], NULL, theInterpreter);
+		Editor_doMenuCommand (praatP. editor, command2.peek(), numberOfArguments, & stack [0], nullptr, theInterpreter);
 		pushString (Melder_dup (info.string));
 		return;
 	} else if (theCurrentPraatObjects != & theForegroundPraatObjects &&
@@ -2605,7 +2604,7 @@ static void do_writeFile () {
 	}
 	structMelderFile file = { 0 };
 	Melder_relativePathToFile (fileName -> string, & file);
-	MelderFile_writeText (& file, text.transfer(), Melder_getOutputEncoding ());
+	MelderFile_writeText (& file, text.string, Melder_getOutputEncoding ());
 	pushNumber (1);
 }
 static void do_writeFileLine () {
@@ -2630,7 +2629,7 @@ static void do_writeFileLine () {
 	MelderString_appendCharacter (& text, U'\n');
 	structMelderFile file = { 0 };
 	Melder_relativePathToFile (fileName -> string, & file);
-	MelderFile_writeText (& file, text.transfer(), Melder_getOutputEncoding ());
+	MelderFile_writeText (& file, text.string, Melder_getOutputEncoding ());
 	pushNumber (1);
 }
 static void do_appendFile () {
@@ -2654,7 +2653,7 @@ static void do_appendFile () {
 	}
 	structMelderFile file = { 0 };
 	Melder_relativePathToFile (fileName -> string, & file);
-	MelderFile_appendText (& file, text.transfer());
+	MelderFile_appendText (& file, text.string);
 	pushNumber (1);
 }
 static void do_appendFileLine () {
@@ -2679,7 +2678,7 @@ static void do_appendFileLine () {
 	MelderString_appendCharacter (& text, '\n');
 	structMelderFile file = { 0 };
 	Melder_relativePathToFile (fileName -> string, & file);
-	MelderFile_appendText (& file, text.transfer());
+	MelderFile_appendText (& file, text.string);
 	pushNumber (1);
 }
 static void do_pauseScript () {
@@ -2700,7 +2699,7 @@ static void do_pauseScript () {
 	}
 	UiPause_begin (theCurrentPraatApplication -> topShell, U"stop or continue", theInterpreter);
 	UiPause_comment (numberOfArguments == 0 ? U"..." : buffer.string);
-	UiPause_end (1, 1, 0, U"Continue", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, theInterpreter);
+	UiPause_end (1, 1, 0, U"Continue", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, theInterpreter);
 	pushNumber (1);
 }
 static void do_exitScript () {
@@ -2783,7 +2782,7 @@ static void do_runSystem_nocheck () {
 	}
 	pushNumber (1);
 }
-static void do_min (void) {
+static void do_min () {
 	Stackel n = pop, last;
 	double result;
 	Melder_assert (n->which == Stackel_NUMBER);
@@ -2802,7 +2801,7 @@ static void do_min (void) {
 	}
 	pushNumber (result);
 }
-static void do_max (void) {
+static void do_max () {
 	Stackel n = pop, last;
 	double result;
 	Melder_assert (n->which == Stackel_NUMBER);
@@ -2821,7 +2820,7 @@ static void do_max (void) {
 	}
 	pushNumber (result);
 }
-static void do_imin (void) {
+static void do_imin () {
 	Stackel n = pop, last;
 	double minimum, result;
 	Melder_assert (n->which == Stackel_NUMBER);
@@ -2846,7 +2845,7 @@ static void do_imin (void) {
 	}
 	pushNumber (result);
 }
-static void do_imax (void) {
+static void do_imax () {
 	Stackel n = pop, last;
 	double maximum, result;
 	Melder_assert (n->which == Stackel_NUMBER);
@@ -2871,7 +2870,7 @@ static void do_imax (void) {
 	}
 	pushNumber (result);
 }
-static void do_zeroNumar (void) {
+static void do_zeroNumar () {
 	Stackel n = pop;
 	Melder_assert (n -> which == Stackel_NUMBER);
 	int rank = lround (n -> number);
@@ -2901,7 +2900,7 @@ static void do_zeroNumar (void) {
 	autoNUMmatrix <double> data (1, numberOfRows, 1, numberOfColumns);
 	pushNumericArray (numberOfRows, numberOfColumns, data.transfer());
 }
-static void do_linearNumar (void) {
+static void do_linearNumar () {
 	Stackel stackel_narg = pop;
 	Melder_assert (stackel_narg -> which == Stackel_NUMBER);
 	int narg = lround (stackel_narg -> number);
@@ -2943,7 +2942,7 @@ static void do_linearNumar (void) {
 	if (! excludeEdges) data [numberOfSteps] [1] = maximum;   // remove rounding problems
 	pushNumericArray (numberOfSteps, 1, data.transfer());
 }
-static void do_numberOfRows (void) {
+static void do_numberOfRows () {
 	Stackel n = pop;
 	Melder_assert (n->which == Stackel_NUMBER);
 	if (n->number != 1)
@@ -2956,7 +2955,7 @@ static void do_numberOfRows (void) {
 			U" requires a numeric argument, not ", Stackel_whichText (array), U".");
 	}
 }
-static void do_numberOfColumns (void) {
+static void do_numberOfColumns () {
 	Stackel n = pop;
 	Melder_assert (n->which == Stackel_NUMBER);
 	if (n->number != 1)
@@ -2969,7 +2968,7 @@ static void do_numberOfColumns (void) {
 			U" requires a numeric argument, not ", Stackel_whichText (array), U".");
 	}
 }
-static void do_editor (void) {
+static void do_editor () {
 	Stackel n = pop;
 	Melder_assert (n->which == Stackel_NUMBER);
 	if (n->number == 0) {
@@ -2993,7 +2992,7 @@ static void do_editor (void) {
 	pushNumber (1);
 }
 
-static void do_hash (void) {
+static void do_hash () {
 	Stackel n = pop;
 	Melder_assert (n->which == Stackel_NUMBER);
 	if (n->number == 1) {
@@ -3009,7 +3008,7 @@ static void do_hash (void) {
 	}
 }
 
-static void do_numericArrayElement (void) {
+static void do_numericArrayElement () {
 	Stackel n = pop;
 	Melder_assert (n -> which == Stackel_NUMBER);
 	int narg = lround (n -> number);
@@ -3041,7 +3040,7 @@ static void do_numericArrayElement (void) {
 		Melder_throw (U"Row index out of bounds.");
 	pushNumber (array -> numericArrayValue. data [row] [column]);
 }
-static void do_indexedNumericVariable (void) {
+static void do_indexedNumericVariable () {
 	Stackel n = pop;
 	Melder_assert (n -> which == Stackel_NUMBER);
 	int nindex = lround (n -> number);
@@ -3053,16 +3052,20 @@ static void do_indexedNumericVariable (void) {
 	w -= nindex;
 	for (int iindex = 1; iindex <= nindex; iindex ++) {
 		Stackel index = & theStack [w + iindex];
-		if (index -> which != Stackel_NUMBER)
-			Melder_throw (U"In indexed variables, the index has to be a number, not ", Stackel_whichText (index), U".");
-		MelderString_append (& totalVariableName, index -> number, iindex == nindex ? U"]" : U",");
+		if (index -> which == Stackel_NUMBER) {
+			MelderString_append (& totalVariableName, index -> number, iindex == nindex ? U"]" : U",");
+		} else if (index -> which == Stackel_STRING) {
+			MelderString_append (& totalVariableName, U"\"", index -> string, U"\"", iindex == nindex ? U"]" : U",");
+		} else {
+			Melder_throw (U"In indexed variables, the index has to be a number or a string, not ", Stackel_whichText (index), U".");
+		}
 	}
 	InterpreterVariable var = Interpreter_hasVariable (theInterpreter, totalVariableName.string);
-	if (var == NULL)
+	if (! var)
 		Melder_throw (U"Undefined indexed variable " U_LEFT_GUILLEMET, totalVariableName.string, U_RIGHT_GUILLEMET U".");
 	pushNumber (var -> numericValue);
 }
-static void do_indexedStringVariable (void) {
+static void do_indexedStringVariable () {
 	Stackel n = pop;
 	Melder_assert (n -> which == Stackel_NUMBER);
 	int nindex = lround (n -> number);
@@ -3074,17 +3077,21 @@ static void do_indexedStringVariable (void) {
 	w -= nindex;
 	for (int iindex = 1; iindex <= nindex; iindex ++) {
 		Stackel index = & theStack [w + iindex];
-		if (index -> which != Stackel_NUMBER)
-			Melder_throw (U"In indexed variables, the index has to be a number, not ", Stackel_whichText (index), U".");
-		MelderString_append (& totalVariableName, index -> number, iindex == nindex ? U"]" : U",");
+		if (index -> which == Stackel_NUMBER) {
+			MelderString_append (& totalVariableName, index -> number, iindex == nindex ? U"]" : U",");
+		} else if (index -> which == Stackel_STRING) {
+			MelderString_append (& totalVariableName, U"\"", index -> string, U"\"", iindex == nindex ? U"]" : U",");
+		} else {
+			Melder_throw (U"In indexed variables, the index has to be a number or a string, not ", Stackel_whichText (index), U".");
+		}
 	}
 	InterpreterVariable var = Interpreter_hasVariable (theInterpreter, totalVariableName.string);
-	if (var == NULL)
+	if (! var)
 		Melder_throw (U"Undefined indexed variable " U_LEFT_GUILLEMET, totalVariableName.string, U_RIGHT_GUILLEMET U".");
 	autostring32 result = Melder_dup (var -> stringValue);
 	pushString (result.transfer());
 }
-static void do_length (void) {
+static void do_length () {
 	Stackel s = pop;
 	if (s->which == Stackel_STRING) {
 		double result = str32len (s->string);
@@ -3093,7 +3100,7 @@ static void do_length (void) {
 		Melder_throw (U"The function \"length\" requires a string, not ", Stackel_whichText (s), U".");
 	}
 }
-static void do_number (void) {
+static void do_number () {
 	Stackel s = pop;
 	if (s->which == Stackel_STRING) {
 		double result = Melder_atof (s->string);
@@ -3102,7 +3109,7 @@ static void do_number (void) {
 		Melder_throw (U"The function \"number\" requires a string, not ", Stackel_whichText (s), U".");
 	}
 }
-static void do_fileReadable (void) {
+static void do_fileReadable () {
 	Stackel s = pop;
 	if (s->which == Stackel_STRING) {
 		structMelderFile file = { 0 };
@@ -3112,24 +3119,24 @@ static void do_fileReadable (void) {
 		Melder_throw (U"The function \"fileReadable\" requires a string, not ", Stackel_whichText (s), U".");
 	}
 }
-static void do_dateStr (void) {
-	time_t today = time (NULL);
+static void do_dateStr () {
+	time_t today = time (nullptr);
 	char32 *date, *newline;
 	date = Melder_8to32 (ctime (& today));
 	newline = str32chr (date, U'\n');
 	if (newline) *newline = U'\0';
 	pushString (date);
 }
-static void do_infoStr (void) {
+static void do_infoStr () {
 	char32 *info = Melder_dup (Melder_getInfo ());
 	pushString (info);
 }
-static void do_leftStr (void) {
+static void do_leftStr () {
 	trace (U"enter");
 	Stackel narg = pop;
 	if (narg->number == 1 || narg->number == 2) {
-		Stackel x = ( narg->number == 2 ? pop : NULL ), s = pop;
-		if (s->which == Stackel_STRING && (x == NULL || x->which == Stackel_NUMBER)) {
+		Stackel x = ( narg->number == 2 ? pop : nullptr ), s = pop;
+		if (s->which == Stackel_STRING && (x == nullptr || x->which == Stackel_NUMBER)) {
 			long newlength = x ? lround (x->number) : 1;
 			long length = str32len (s->string);
 			if (newlength < 0) newlength = 0;
@@ -3151,11 +3158,11 @@ static void do_leftStr (void) {
 	}
 	trace (U"exit");
 }
-static void do_rightStr (void) {
+static void do_rightStr () {
 	Stackel narg = pop;
 	if (narg->number == 1 || narg->number == 2) {
-		Stackel x = ( narg->number == 2 ? pop : NULL ), s = pop;
-		if (s->which == Stackel_STRING && (x == NULL || x->which == Stackel_NUMBER)) {
+		Stackel x = ( narg->number == 2 ? pop : nullptr ), s = pop;
+		if (s->which == Stackel_STRING && (x == nullptr || x->which == Stackel_NUMBER)) {
 			long newlength = x ? lround (x->number) : 1;
 			long length = str32len (s->string);
 			if (newlength < 0) newlength = 0;
@@ -3168,11 +3175,11 @@ static void do_rightStr (void) {
 		Melder_throw (U"The function \"right$\" requires one or two arguments.");
 	}
 }
-static void do_midStr (void) {
+static void do_midStr () {
 	Stackel narg = pop;
 	if (narg->number == 2 || narg->number == 3) {
-		Stackel y = ( narg->number == 3 ? pop : NULL ), x = pop, s = pop;
-		if (s->which == Stackel_STRING && x->which == Stackel_NUMBER && (y == NULL || y->which == Stackel_NUMBER)) {
+		Stackel y = ( narg->number == 3 ? pop : nullptr ), x = pop, s = pop;
+		if (s->which == Stackel_STRING && x->which == Stackel_NUMBER && (y == nullptr || y->which == Stackel_NUMBER)) {
 			long newlength = y ? lround (y->number) : 1;
 			long start = lround (x->number);
 			long length = str32len (s->string), finish = start + newlength - 1;
@@ -3217,17 +3224,17 @@ static void do_backslashTrigraphsToUnicodeStr () {
 		Melder_throw (U"The function \"unicodeToBackslashTrigraphs$\" requires a string, not ", Stackel_whichText (s), U".");
 	}
 }
-static void do_environmentStr (void) {
+static void do_environmentStr () {
 	Stackel s = pop;
 	if (s->which == Stackel_STRING) {
 		char32 *value = Melder_getenv (s->string);
-		autostring32 result = Melder_dup (value != NULL ? value : U"");
+		autostring32 result = Melder_dup (value ? value : U"");
 		pushString (result.transfer());
 	} else {
 		Melder_throw (U"The function \"environment$\" requires a string, not ", Stackel_whichText (s), U".");
 	}
 }
-static void do_index (void) {
+static void do_index () {
 	Stackel t = pop, s = pop;
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING) {
 		char32 *substring = str32str (s->string, t->string);
@@ -3238,7 +3245,7 @@ static void do_index (void) {
 			Stackel_whichText (s), U" and ", Stackel_whichText (t), U".");
 	}
 }
-static void do_rindex (void) {
+static void do_rindex () {
 	Stackel part = pop, whole = pop;
 	if (whole->which == Stackel_STRING && part->which == Stackel_STRING) {
 		char32 *lastSubstring = str32str (whole->string, part->string);
@@ -3248,7 +3255,7 @@ static void do_rindex (void) {
 		} else if (lastSubstring) {
 			for (;;) {
 				char32 *substring = str32str (lastSubstring + 1, part->string);
-				if (substring == NULL) break;
+				if (! substring) break;
 				lastSubstring = substring;
 			}
 			pushNumber (lastSubstring - whole->string + 1);
@@ -3275,15 +3282,15 @@ static void do_index_regex (int backward) {
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING) {
 		const char32 *errorMessage;
 		regexp *compiled_regexp = CompileRE (t->string, & errorMessage, 0);
-		if (compiled_regexp == NULL) {
+		if (! compiled_regexp) {
 			Melder_throw (U"index_regex(): ", errorMessage, U".");
 		} else {
-			if (ExecRE (compiled_regexp, NULL, s->string, NULL, backward, '\0', '\0', NULL, NULL, NULL)) {
+			if (ExecRE (compiled_regexp, nullptr, s->string, nullptr, backward, '\0', '\0', nullptr, nullptr, nullptr)) {
 				char32 *place = (char32 *) compiled_regexp -> startp [0];
 				pushNumber (place - s->string + 1);
 				free (compiled_regexp);
 			} else {
-				pushNumber (FALSE);
+				pushNumber (false);
 			}
 		}
 	} else {
@@ -3291,7 +3298,7 @@ static void do_index_regex (int backward) {
 			U"\" requires two strings, not ", Stackel_whichText (s), U" and ", Stackel_whichText (t), U".");
 	}
 }
-static void do_replaceStr (void) {
+static void do_replaceStr () {
 	Stackel x = pop, u = pop, t = pop, s = pop;
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING && u->which == Stackel_STRING && x->which == Stackel_NUMBER) {
 		long numberOfMatches;
@@ -3301,12 +3308,12 @@ static void do_replaceStr (void) {
 		Melder_throw (U"The function \"replace$\" requires three strings and a number.");
 	}
 }
-static void do_replace_regexStr (void) {
+static void do_replace_regexStr () {
 	Stackel x = pop, u = pop, t = pop, s = pop;
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING && u->which == Stackel_STRING && x->which == Stackel_NUMBER) {
 		const char32 *errorMessage;
 		regexp *compiled_regexp = CompileRE (t->string, & errorMessage, 0);
-		if (compiled_regexp == NULL) {
+		if (! compiled_regexp) {
 			Melder_throw (U"replace_regex$(): ", errorMessage, U".");
 		} else {
 			long numberOfMatches;
@@ -3317,11 +3324,11 @@ static void do_replace_regexStr (void) {
 		Melder_throw (U"The function \"replace_regex$\" requires three strings and a number.");
 	}
 }
-static void do_extractNumber (void) {
+static void do_extractNumber () {
 	Stackel t = pop, s = pop;
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING) {
 		char32 *substring = str32str (s->string, t->string);
-		if (substring == NULL) {
+		if (! substring) {
 			pushNumber (NUMundefined);
 		} else {
 			/* Skip the prompt. */
@@ -3360,12 +3367,12 @@ static void do_extractNumber (void) {
 			U"\" requires two strings, not ", Stackel_whichText (s), U" and ", Stackel_whichText (t), U".");
 	}
 }
-static void do_extractTextStr (int singleWord) {
+static void do_extractTextStr (bool singleWord) {
 	Stackel t = pop, s = pop;
 	if (s->which == Stackel_STRING && t->which == Stackel_STRING) {
 		char32 *substring = str32str (s->string, t->string);
 		autostring32 result;
-		if (substring == NULL) {
+		if (! substring) {
 			result.reset (Melder_dup (U""));
 		} else {
 			long length;
@@ -3394,25 +3401,25 @@ static void do_extractTextStr (int singleWord) {
 			U"\" requires two strings, not ", Stackel_whichText (s), U" and ", Stackel_whichText (t), U".");
 	}
 }
-static void do_selected (void) {
+static void do_selected () {
 	Stackel n = pop;
 	long result = 0;
 	if (n->number == 0) {
-		result = praat_idOfSelected (NULL, 0);
+		result = praat_idOfSelected (nullptr, 0);
 	} else if (n->number == 1) {
 		Stackel a = pop;
 		if (a->which == Stackel_STRING) {
-			ClassInfo klas = Thing_classFromClassName (a->string, NULL);
+			ClassInfo klas = Thing_classFromClassName (a->string, nullptr);
 			result = praat_idOfSelected (klas, 0);
 		} else if (a->which == Stackel_NUMBER) {
-			result = praat_idOfSelected (NULL, lround (a->number));
+			result = praat_idOfSelected (nullptr, lround (a->number));
 		} else {
 			Melder_throw (U"The function \"selected\" requires a string (an object type name) and/or a number.");
 		}
 	} else if (n->number == 2) {
 		Stackel x = pop, s = pop;
 		if (s->which == Stackel_STRING && x->which == Stackel_NUMBER) {
-			ClassInfo klas = Thing_classFromClassName (s->string, NULL);
+			ClassInfo klas = Thing_classFromClassName (s->string, nullptr);
 			result = praat_idOfSelected (klas, lround (x->number));
 		} else {
 			Melder_throw (U"The function \"selected\" requires a string (an object type name) and/or a number.");
@@ -3422,25 +3429,25 @@ static void do_selected (void) {
 	}
 	pushNumber (result);
 }
-static void do_selectedStr (void) {
+static void do_selectedStr () {
 	Stackel n = pop;
 	autostring32 result;
 	if (n->number == 0) {
-		result.reset (Melder_dup (praat_nameOfSelected (NULL, 0)));
+		result.reset (Melder_dup (praat_nameOfSelected (nullptr, 0)));
 	} else if (n->number == 1) {
 		Stackel a = pop;
 		if (a->which == Stackel_STRING) {
-			ClassInfo klas = Thing_classFromClassName (a->string, NULL);
+			ClassInfo klas = Thing_classFromClassName (a->string, nullptr);
 			result.reset (Melder_dup (praat_nameOfSelected (klas, 0)));
 		} else if (a->which == Stackel_NUMBER) {
-			result.reset (Melder_dup (praat_nameOfSelected (NULL, lround (a->number))));
+			result.reset (Melder_dup (praat_nameOfSelected (nullptr, lround (a->number))));
 		} else {
 			Melder_throw (U"The function \"selected$\" requires a string (an object type name) and/or a number.");
 		}
 	} else if (n->number == 2) {
 		Stackel x = pop, s = pop;
 		if (s->which == Stackel_STRING && x->which == Stackel_NUMBER) {
-			ClassInfo klas = Thing_classFromClassName (s->string, NULL);
+			ClassInfo klas = Thing_classFromClassName (s->string, nullptr);
 			result.reset (Melder_dup (praat_nameOfSelected (klas, lround (x->number))));
 		} else {
 			Melder_throw (U"The function \"selected$\" requires 0, 1, or 2 arguments, not ", n->number, U".");
@@ -3448,15 +3455,15 @@ static void do_selectedStr (void) {
 	}
 	pushString (result.transfer());
 }
-static void do_numberOfSelected (void) {
+static void do_numberOfSelected () {
 	Stackel n = pop;
 	long result = 0;
 	if (n->number == 0) {
-		result = praat_numberOfSelected (NULL);
+		result = praat_numberOfSelected (nullptr);
 	} else if (n->number == 1) {
 		Stackel s = pop;
 		if (s->which == Stackel_STRING) {
-			ClassInfo klas = Thing_classFromClassName (s->string, NULL);
+			ClassInfo klas = Thing_classFromClassName (s->string, nullptr);
 			result = praat_numberOfSelected (klas);
 		} else {
 			Melder_throw (U"The function \"numberOfSelected\" requires a string (an object type name), not ", Stackel_whichText (s), U".");
@@ -3481,25 +3488,25 @@ static int praat_findObjectFromString (const char32 *name) {
 		static MelderString buffer { 0 };
 		MelderString_copy (& buffer, name);
 		char32 *space = str32chr (buffer.string, U' ');
-		if (space == NULL)
+		if (space == nullptr)
 			Melder_throw (U"Missing space in object name \"", name, U"\".");
 		*space = U'\0';
 		char32 *className = & buffer.string [0], *givenName = space + 1;
 		WHERE_DOWN (1) {
-			Data object = (Data) OBJECT;
-			if (str32equ (className, Thing_className ((Thing) OBJECT)) && str32equ (givenName, object -> name))
+			Daata object = OBJECT;
+			if (str32equ (className, Thing_className (OBJECT)) && str32equ (givenName, object -> name))
 				return IOBJECT;
 		}
-		ClassInfo klas = Thing_classFromClassName (className, NULL);
+		ClassInfo klas = Thing_classFromClassName (className, nullptr);
 		WHERE_DOWN (1) {
-			Data object = (Data) OBJECT;
-			if (str32equ (klas -> className, Thing_className ((Thing) OBJECT)) && str32equ (givenName, object -> name))
+			Daata object = OBJECT;
+			if (str32equ (klas -> className, Thing_className (OBJECT)) && str32equ (givenName, object -> name))
 				return IOBJECT;
 		}
 	}
 	Melder_throw (U"No object with name \"", name, U"\".");
 }
-static void do_selectObject (void) {
+static void do_selectObject () {
 	Stackel n = pop;
 	praat_deselectAll ();
 	for (int iobject = 1; iobject <= n -> number; iobject ++) {
@@ -3517,7 +3524,7 @@ static void do_selectObject (void) {
 	praat_show ();
 	pushNumber (1);
 }
-static void do_plusObject (void) {
+static void do_plusObject () {
 	Stackel n = pop;
 	for (int iobject = 1; iobject <= n -> number; iobject ++) {
 		Stackel object = pop;
@@ -3534,7 +3541,7 @@ static void do_plusObject (void) {
 	praat_show ();
 	pushNumber (1);
 }
-static void do_minusObject (void) {
+static void do_minusObject () {
 	Stackel n = pop;
 	for (int iobject = 1; iobject <= n -> number; iobject ++) {
 		Stackel object = pop;
@@ -3551,7 +3558,7 @@ static void do_minusObject (void) {
 	praat_show ();
 	pushNumber (1);
 }
-static void do_removeObject (void) {
+static void do_removeObject () {
 	Stackel n = pop;
 	for (int iobject = 1; iobject <= n -> number; iobject ++) {
 		Stackel object = pop;
@@ -3568,7 +3575,7 @@ static void do_removeObject (void) {
 	praat_show ();
 	pushNumber (1);
 }
-static void do_stringStr (void) {
+static void do_stringStr () {
 	Stackel value = pop;
 	if (value->which == Stackel_NUMBER) {
 		autostring32 result = Melder_dup (Melder_double (value->number));
@@ -3577,7 +3584,7 @@ static void do_stringStr (void) {
 		Melder_throw (U"The function \"string$\" requires a number, not ", Stackel_whichText (value), U".");
 	}
 }
-static void do_fixedStr (void) {
+static void do_fixedStr () {
 	Stackel precision = pop, value = pop;
 	if (value->which == Stackel_NUMBER && precision->which == Stackel_NUMBER) {
 		autostring32 result = Melder_dup (Melder_fixed (value->number, lround (precision->number)));
@@ -3586,7 +3593,7 @@ static void do_fixedStr (void) {
 		Melder_throw (U"The function \"fixed$\" requires two numbers (value and precision), not ", Stackel_whichText (value), U" and ", Stackel_whichText (precision), U".");
 	}
 }
-static void do_percentStr (void) {
+static void do_percentStr () {
 	Stackel precision = pop, value = pop;
 	if (value->which == Stackel_NUMBER && precision->which == Stackel_NUMBER) {
 		autostring32 result = Melder_dup (Melder_percent (value->number, lround (precision->number)));
@@ -3595,7 +3602,7 @@ static void do_percentStr (void) {
 		Melder_throw (U"The function \"percent$\" requires two numbers (value and precision), not ", Stackel_whichText (value), U" and ", Stackel_whichText (precision), U".");
 	}
 }
-static void do_deleteFile (void) {
+static void do_deleteFile () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"deleteFile\" is not available inside manuals.");
 	Stackel f = pop;
@@ -3608,7 +3615,7 @@ static void do_deleteFile (void) {
 		Melder_throw (U"The function \"deleteFile\" requires a string, not ", Stackel_whichText (f), U".");
 	}
 }
-static void do_createDirectory (void) {
+static void do_createDirectory () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"createDirectory\" is not available inside manuals.");
 	Stackel f = pop;
@@ -3625,16 +3632,16 @@ static void do_createDirectory (void) {
 		Melder_throw (U"The function \"createDirectory\" requires a string, not ", Stackel_whichText (f), U".");
 	}
 }
-static void do_variableExists (void) {
+static void do_variableExists () {
 	Stackel f = pop;
 	if (f->which == Stackel_STRING) {
-		bool result = Interpreter_hasVariable (theInterpreter, f->string) != NULL;
+		bool result = Interpreter_hasVariable (theInterpreter, f->string) != nullptr;
 		pushNumber (result);
 	} else {
 		Melder_throw (U"The function \"variableExists\" requires a string, not ", Stackel_whichText (f), U".");
 	}
 }
-static void do_readFile (void) {
+static void do_readFile () {
 	Stackel f = pop;
 	if (f->which == Stackel_STRING) {
 		structMelderFile file = { 0 };
@@ -3645,7 +3652,7 @@ static void do_readFile (void) {
 		Melder_throw (U"The function \"readFile\" requires a string (a file name), not ", Stackel_whichText (f), U".");
 	}
 }
-static void do_readFileStr (void) {
+static void do_readFileStr () {
 	Stackel f = pop;
 	if (f->which == Stackel_STRING) {
 		structMelderFile file = { 0 };
@@ -3656,7 +3663,7 @@ static void do_readFileStr (void) {
 		Melder_throw (U"The function \"readFile$\" requires a string (a file name), not ", Stackel_whichText (f), U".");
 	}
 }
-static void do_beginPauseForm (void) {
+static void do_beginPauseForm () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"beginPauseForm\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3672,13 +3679,13 @@ static void do_beginPauseForm (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddReal (void) {
+static void do_pauseFormAddReal () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"real\" is not available inside manuals.");
 	Stackel n = pop;
 	if (n->number == 2) {
 		Stackel defaultValue = pop;
-		const char32 *defaultString = NULL;
+		const char32 *defaultString = nullptr;
 		if (defaultValue->which == Stackel_STRING) {
 			defaultString = defaultValue->string;
 		} else if (defaultValue->which == Stackel_NUMBER) {
@@ -3697,13 +3704,13 @@ static void do_pauseFormAddReal (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddPositive (void) {
+static void do_pauseFormAddPositive () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"positive\" is not available inside manuals.");
 	Stackel n = pop;
 	if (n->number == 2) {
 		Stackel defaultValue = pop;
-		const char32 *defaultString = NULL;
+		const char32 *defaultString = nullptr;
 		if (defaultValue->which == Stackel_STRING) {
 			defaultString = defaultValue->string;
 		} else if (defaultValue->which == Stackel_NUMBER) {
@@ -3722,13 +3729,13 @@ static void do_pauseFormAddPositive (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddInteger (void) {
+static void do_pauseFormAddInteger () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"integer\" is not available inside manuals.");
 	Stackel n = pop;
 	if (n->number == 2) {
 		Stackel defaultValue = pop;
-		const char32 *defaultString = NULL;
+		const char32 *defaultString = nullptr;
 		if (defaultValue->which == Stackel_STRING) {
 			defaultString = defaultValue->string;
 		} else if (defaultValue->which == Stackel_NUMBER) {
@@ -3747,13 +3754,13 @@ static void do_pauseFormAddInteger (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddNatural (void) {
+static void do_pauseFormAddNatural () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"natural\" is not available inside manuals.");
 	Stackel n = pop;
 	if (n->number == 2) {
 		Stackel defaultValue = pop;
-		const char32 *defaultString = NULL;
+		const char32 *defaultString = nullptr;
 		if (defaultValue->which == Stackel_STRING) {
 			defaultString = defaultValue->string;
 		} else if (defaultValue->which == Stackel_NUMBER) {
@@ -3772,7 +3779,7 @@ static void do_pauseFormAddNatural (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddWord (void) {
+static void do_pauseFormAddWord () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"word\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3792,7 +3799,7 @@ static void do_pauseFormAddWord (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddSentence (void) {
+static void do_pauseFormAddSentence () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"sentence\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3812,7 +3819,7 @@ static void do_pauseFormAddSentence (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddText (void) {
+static void do_pauseFormAddText () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"text\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3832,7 +3839,7 @@ static void do_pauseFormAddText (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddBoolean (void) {
+static void do_pauseFormAddBoolean () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"boolean\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3852,7 +3859,7 @@ static void do_pauseFormAddBoolean (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddChoice (void) {
+static void do_pauseFormAddChoice () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"choice\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3872,7 +3879,7 @@ static void do_pauseFormAddChoice (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddOptionMenu (void) {
+static void do_pauseFormAddOptionMenu () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"optionMenu\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3892,7 +3899,7 @@ static void do_pauseFormAddOptionMenu (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddOption (void) {
+static void do_pauseFormAddOption () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"option\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3908,7 +3915,7 @@ static void do_pauseFormAddOption (void) {
 	}
 	pushNumber (1);
 }
-static void do_pauseFormAddComment (void) {
+static void do_pauseFormAddComment () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"comment\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3924,7 +3931,7 @@ static void do_pauseFormAddComment (void) {
 	}
 	pushNumber (1);
 }
-static void do_endPauseForm (void) {
+static void do_endPauseForm () {
 	if (theCurrentPraatObjects != & theForegroundPraatObjects)
 		Melder_throw (U"The function \"endPause\" is not available inside manuals.");
 	Stackel n = pop;
@@ -3952,26 +3959,26 @@ static void do_endPauseForm (void) {
 				U" argument(s) of \"endPause\" has to be a string (a button text), not ", Stackel_whichText (co[i]), U".");
 	}
 	int buttonClicked = UiPause_end (numberOfContinueButtons, defaultContinueButton, cancelContinueButton,
-		co [1] == NULL ? NULL : co[1]->string, co [2] == NULL ? NULL : co[2]->string,
-		co [3] == NULL ? NULL : co[3]->string, co [4] == NULL ? NULL : co[4]->string,
-		co [5] == NULL ? NULL : co[5]->string, co [6] == NULL ? NULL : co[6]->string,
-		co [7] == NULL ? NULL : co[7]->string, co [8] == NULL ? NULL : co[8]->string,
-		co [9] == NULL ? NULL : co[9]->string, co [10] == NULL ? NULL : co[10]->string,
+		! co [1] ? nullptr : co[1]->string, ! co [2] ? nullptr : co[2]->string,
+		! co [3] ? nullptr : co[3]->string, ! co [4] ? nullptr : co[4]->string,
+		! co [5] ? nullptr : co[5]->string, ! co [6] ? nullptr : co[6]->string,
+		! co [7] ? nullptr : co[7]->string, ! co [8] ? nullptr : co[8]->string,
+		! co [9] ? nullptr : co[9]->string, ! co [10] ? nullptr : co[10]->string,
 		theInterpreter);
 	//Melder_casual (U"Button ", buttonClicked);
 	pushNumber (buttonClicked);
 }
-static void do_chooseReadFileStr (void) {
+static void do_chooseReadFileStr () {
 	Stackel n = pop;
 	if (n->number == 1) {
 		Stackel title = pop;
 		if (title->which == Stackel_STRING) {
-			autoSortedSetOfString fileNames = GuiFileSelect_getInfileNames (NULL, title->string, false);
-			if (fileNames -> size == 0) {
+			autoStringSet fileNames = GuiFileSelect_getInfileNames (nullptr, title->string, false);
+			if (fileNames->size == 0) {
 				autostring32 result = Melder_dup (U"");
 				pushString (result.transfer());
 			} else {
-				SimpleString fileName = (SimpleString) fileNames -> item [1];
+				SimpleString fileName = fileNames->at [1];
 				autostring32 result = Melder_dup (fileName -> string);
 				pushString (result.transfer());
 			}
@@ -3982,13 +3989,13 @@ static void do_chooseReadFileStr (void) {
 		Melder_throw (U"The function \"chooseReadFile$\" requires 1 argument (a title), not ", n->number, U".");
 	}
 }
-static void do_chooseWriteFileStr (void) {
+static void do_chooseWriteFileStr () {
 	Stackel n = pop;
 	if (n->number == 2) {
 		Stackel defaultName = pop, title = pop;
 		if (title->which == Stackel_STRING && defaultName->which == Stackel_STRING) {
-			autostring32 result = GuiFileSelect_getOutfileName (NULL, title->string, defaultName->string);
-			if (result.peek() == NULL) {
+			autostring32 result = GuiFileSelect_getOutfileName (nullptr, title->string, defaultName->string);
+			if (! result.peek()) {
 				result.reset (Melder_dup (U""));
 			}
 			pushString (result.transfer());
@@ -3999,13 +4006,13 @@ static void do_chooseWriteFileStr (void) {
 		Melder_throw (U"The function \"chooseWriteFile$\" requires 2 arguments (a title and a default name), not ", n->number, U".");
 	}
 }
-static void do_chooseDirectoryStr (void) {
+static void do_chooseDirectoryStr () {
 	Stackel n = pop;
 	if (n->number == 1) {
 		Stackel title = pop;
 		if (title->which == Stackel_STRING) {
-			autostring32 result = GuiFileSelect_getDirectoryName (NULL, title->string);
-			if (result.peek() == NULL) {
+			autostring32 result = GuiFileSelect_getDirectoryName (nullptr, title->string);
+			if (! result.peek()) {
 				result.reset (Melder_dup (U""));
 			}
 			pushString (result.transfer());
@@ -4016,7 +4023,7 @@ static void do_chooseDirectoryStr (void) {
 		Melder_throw (U"The function \"chooseDirectory$\" requires 1 argument (a title), not ", n->number, U".");
 	}
 }
-static void do_demoWindowTitle (void) {
+static void do_demoWindowTitle () {
 	Stackel n = pop;
 	if (n->number == 1) {
 		Stackel title = pop;
@@ -4030,21 +4037,21 @@ static void do_demoWindowTitle (void) {
 	}
 	pushNumber (1);
 }
-static void do_demoShow (void) {
+static void do_demoShow () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoShow\" requires 0 arguments, not ", n->number, U".");
 	Demo_show ();
 	pushNumber (1);
 }
-static void do_demoWaitForInput (void) {
+static void do_demoWaitForInput () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoWaitForInput\" requires 0 arguments, not ", n->number, U".");
 	Demo_waitForInput (theInterpreter);
 	pushNumber (1);
 }
-static void do_demoInput (void) {
+static void do_demoInput () {
 	Stackel n = pop;
 	if (n->number == 1) {
 		Stackel keys = pop;
@@ -4058,7 +4065,7 @@ static void do_demoInput (void) {
 		Melder_throw (U"The function \"demoInput\" requires 1 argument (keys), not ", n->number, U".");
 	}
 }
-static void do_demoClickedIn (void) {
+static void do_demoClickedIn () {
 	Stackel n = pop;
 	if (n->number == 4) {
 		Stackel top = pop, bottom = pop, right = pop, left = pop;
@@ -4072,35 +4079,35 @@ static void do_demoClickedIn (void) {
 		Melder_throw (U"The function \"demoClickedIn\" requires 4 arguments (x and y ranges), not ", n->number, U".");
 	}
 }
-static void do_demoClicked (void) {
+static void do_demoClicked () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoClicked\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_clicked ();
 	pushNumber (result);
 }
-static void do_demoX (void) {
+static void do_demoX () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoX\" requires 0 arguments, not ", n->number, U".");
 	double result = Demo_x ();
 	pushNumber (result);
 }
-static void do_demoY (void) {
+static void do_demoY () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoY\" requires 0 arguments, not ", n->number, U".");
 	double result = Demo_y ();
 	pushNumber (result);
 }
-static void do_demoKeyPressed (void) {
+static void do_demoKeyPressed () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoKeyPressed\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_keyPressed ();
 	pushNumber (result);
 }
-static void do_demoKey (void) {
+static void do_demoKey () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoKey\" requires 0 arguments, not ", n->number, U".");
@@ -4109,35 +4116,35 @@ static void do_demoKey (void) {
 	key [1] = U'\0';
 	pushString (key.transfer());
 }
-static void do_demoShiftKeyPressed (void) {
+static void do_demoShiftKeyPressed () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoShiftKeyPressed\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_shiftKeyPressed ();
 	pushNumber (result);
 }
-static void do_demoCommandKeyPressed (void) {
+static void do_demoCommandKeyPressed () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoCommandKeyPressed\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_commandKeyPressed ();
 	pushNumber (result);
 }
-static void do_demoOptionKeyPressed (void) {
+static void do_demoOptionKeyPressed () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoOptionKeyPressed\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_optionKeyPressed ();
 	pushNumber (result);
 }
-static void do_demoExtraControlKeyPressed (void) {
+static void do_demoExtraControlKeyPressed () {
 	Stackel n = pop;
 	if (n->number != 0)
 		Melder_throw (U"The function \"demoControlKeyPressed\" requires 0 arguments, not ", n->number, U".");
 	bool result = Demo_extraControlKeyPressed ();
 	pushNumber (result);
 }
-static long Stackel_getRowNumber (Stackel row, Data thee) {
+static long Stackel_getRowNumber (Stackel row, Daata thee) {
 	long result = 0;
 	if (row->which == Stackel_NUMBER) {
 		result = lround (row->number);
@@ -4152,7 +4159,7 @@ static long Stackel_getRowNumber (Stackel row, Data thee) {
 	}
 	return result;
 }
-static long Stackel_getColumnNumber (Stackel column, Data thee) {
+static long Stackel_getColumnNumber (Stackel column, Daata thee) {
 	long result = 0;
 	if (column->which == Stackel_NUMBER) {
 		result = lround (column->number);
@@ -4168,8 +4175,8 @@ static long Stackel_getColumnNumber (Stackel column, Data thee) {
 	return result;
 }
 static void do_self0 (long irow, long icol) {
-	Data me = theSource;
-	if (me == NULL) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
+	Daata me = theSource;
+	if (! me) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
 	if (my v_hasGetCell ()) {
 		pushNumber (my v_getCell ());
 	} else if (my v_hasGetVector ()) {
@@ -4200,8 +4207,8 @@ static void do_self0 (long irow, long icol) {
 	}
 }
 static void do_selfStr0 (long irow, long icol) {
-	Data me = theSource;
-	if (me == NULL) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
+	Daata me = theSource;
+	if (! me) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
 	if (my v_hasGetCellStr ()) {
 		autostring32 result = Melder_dup (my v_getCellStr ());
 		pushString (result.transfer());
@@ -4234,8 +4241,8 @@ static void do_selfStr0 (long irow, long icol) {
 		Melder_throw (Thing_className (me), U" objects (like self) accept no [] indexing.");
 	}
 }
-static Data getObjectFromUniqueID (Stackel object) {
-	Data thee = NULL;
+static Daata getObjectFromUniqueID (Stackel object) {
+	Daata thee = nullptr;
 	if (object->which == Stackel_NUMBER) {
 		int i = theCurrentPraatObjects -> n;
 		while (i > 0 && object->number != theCurrentPraatObjects -> list [i]. id)
@@ -4243,7 +4250,7 @@ static Data getObjectFromUniqueID (Stackel object) {
 		if (i == 0) {
 			Melder_throw (U"No such object: ", object->number);
 		}
-		thee = (Data) theCurrentPraatObjects -> list [i]. object;
+		thee = (Daata) theCurrentPraatObjects -> list [i]. object;
 	} else if (object->which == Stackel_STRING) {
 		int i = theCurrentPraatObjects -> n;
 		while (i > 0 && ! Melder_equ (object->string, theCurrentPraatObjects -> list [i]. name))
@@ -4251,14 +4258,14 @@ static Data getObjectFromUniqueID (Stackel object) {
 		if (i == 0) {
 			Melder_throw (U"No such object: ", object->string);
 		}
-		thee = (Data) theCurrentPraatObjects -> list [i]. object;
+		thee = (Daata) theCurrentPraatObjects -> list [i]. object;
 	} else {
 		Melder_throw (U"The first argument to \"object\" must be a number (unique ID) or a string (name), not ", Stackel_whichText (object), U".");
 	}
 	return thee;
 }
 static void do_objectCell0 (long irow, long icol) {
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	if (thy v_hasGetCell ()) {
 		pushNumber (thy v_getCell ());
 	} else if (thy v_hasGetVector ()) {
@@ -4288,7 +4295,7 @@ static void do_objectCell0 (long irow, long icol) {
 	}
 }
 static void do_matriks0 (long irow, long icol) {
-	Data thee = parse [programPointer]. content.object;
+	Daata thee = parse [programPointer]. content.object;
 	if (thy v_hasGetCell ()) {
 		pushNumber (thy v_getCell ());
 	} else if (thy v_hasGetVector ()) {
@@ -4318,9 +4325,9 @@ static void do_matriks0 (long irow, long icol) {
 	}
 }
 static void do_selfMatriks1 (long irow) {
-	Data me = theSource;
+	Daata me = theSource;
 	Stackel column = pop;
-	if (me == NULL) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
+	if (! me) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
 	long icol = Stackel_getColumnNumber (column, me);
 	if (my v_hasGetVector ()) {
 		pushNumber (my v_getVector (irow, icol));
@@ -4337,9 +4344,9 @@ static void do_selfMatriks1 (long irow) {
 	}
 }
 static void do_selfMatriksStr1 (long irow) {
-	Data me = theSource;
+	Daata me = theSource;
 	Stackel column = pop;
-	if (me == NULL) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
+	if (! me) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
 	long icol = Stackel_getColumnNumber (column, me);
 	if (my v_hasGetVectorStr ()) {
 		autostring32 result = Melder_dup (my v_getVectorStr (icol));
@@ -4359,7 +4366,7 @@ static void do_selfMatriksStr1 (long irow) {
 }
 static void do_objectCell1 (long irow) {
 	Stackel column = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (thy v_hasGetVector ()) {
 		pushNumber (thy v_getVector (irow, icol));
@@ -4376,7 +4383,7 @@ static void do_objectCell1 (long irow) {
 	}
 }
 static void do_matriks1 (long irow) {
-	Data thee = parse [programPointer]. content.object;
+	Daata thee = parse [programPointer]. content.object;
 	Stackel column = pop;
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (thy v_hasGetVector ()) {
@@ -4395,7 +4402,7 @@ static void do_matriks1 (long irow) {
 }
 static void do_objectCellStr1 (long irow) {
 	Stackel column = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (thy v_hasGetVectorStr ()) {
 		autostring32 result = Melder_dup (thy v_getVectorStr (icol));
@@ -4414,7 +4421,7 @@ static void do_objectCellStr1 (long irow) {
 	}
 }
 static void do_matrixStr1 (long irow) {
-	Data thee = parse [programPointer]. content.object;
+	Daata thee = parse [programPointer]. content.object;
 	Stackel column = pop;
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (thy v_hasGetVectorStr ()) {
@@ -4433,20 +4440,20 @@ static void do_matrixStr1 (long irow) {
 		Melder_throw (Thing_className (thee), U" objects accept no [column] indexes for string cells.");
 	}
 }
-static void do_selfMatriks2 (void) {
-	Data me = theSource;
+static void do_selfMatriks2 () {
+	Daata me = theSource;
 	Stackel column = pop, row = pop;
-	if (me == NULL) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
+	if (! me) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
 	long irow = Stackel_getRowNumber (row, me);
 	long icol = Stackel_getColumnNumber (column, me);
 	if (! my v_hasGetMatrix ())
 		Melder_throw (Thing_className (me), U" objects like \"self\" accept no [row, column] indexing.");
 	pushNumber (my v_getMatrix (irow, icol));
 }
-static void do_selfMatriksStr2 (void) {
-	Data me = theSource;
+static void do_selfMatriksStr2 () {
+	Daata me = theSource;
 	Stackel column = pop, row = pop;
-	if (me == NULL) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
+	if (! me) Melder_throw (U"The name \"self$\" is restricted to formulas for objects.");
 	long irow = Stackel_getRowNumber (row, me);
 	long icol = Stackel_getColumnNumber (column, me);
 	if (! my v_hasGetMatrixStr ())
@@ -4454,17 +4461,17 @@ static void do_selfMatriksStr2 (void) {
 	autostring32 result = Melder_dup (my v_getMatrixStr (irow, icol));
 	pushString (result.transfer());
 }
-static void do_objectCell2 (void) {
+static void do_objectCell2 () {
 	Stackel column = pop, row = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	long irow = Stackel_getRowNumber (row, thee);
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (! thy v_hasGetMatrix ())
 		Melder_throw (Thing_className (thee), U" objects accept no [id, row, column] indexing.");
 	pushNumber (thy v_getMatrix (irow, icol));
 }
-static void do_matriks2 (void) {
-	Data thee = parse [programPointer]. content.object;
+static void do_matriks2 () {
+	Daata thee = parse [programPointer]. content.object;
 	Stackel column = pop, row = pop;
 	long irow = Stackel_getRowNumber (row, thee);
 	long icol = Stackel_getColumnNumber (column, thee);
@@ -4472,9 +4479,9 @@ static void do_matriks2 (void) {
 		Melder_throw (Thing_className (thee), U" objects accept no [row, column] indexing.");
 	pushNumber (thy v_getMatrix (irow, icol));
 }
-static void do_objectCellStr2 (void) {
+static void do_objectCellStr2 () {
 	Stackel column = pop, row = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	long irow = Stackel_getRowNumber (row, thee);
 	long icol = Stackel_getColumnNumber (column, thee);
 	if (! thy v_hasGetMatrixStr ())
@@ -4482,8 +4489,8 @@ static void do_objectCellStr2 (void) {
 	autostring32 result = Melder_dup (thy v_getMatrixStr (irow, icol));
 	pushString (result.transfer());
 }
-static void do_matriksStr2 (void) {
-	Data thee = parse [programPointer]. content.object;
+static void do_matriksStr2 () {
+	Daata thee = parse [programPointer]. content.object;
 	Stackel column = pop, row = pop;
 	long irow = Stackel_getRowNumber (row, thee);
 	long icol = Stackel_getColumnNumber (column, thee);
@@ -4493,12 +4500,12 @@ static void do_matriksStr2 (void) {
 	pushString (result.transfer());
 }
 static void do_objectLocation0 (long irow, long icol) {
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	if (thy v_hasGetFunction0 ()) {
 		pushNumber (thy v_getFunction0 ());
 	} else if (thy v_hasGetFunction1 ()) {
-		Data me = theSource;
-		if (me == NULL)
+		Daata me = theSource;
+		if (! me)
 			Melder_throw (U"No current object (we are not in a Formula command),\n"
 				U"hence no implicit x value for this ", Thing_className (thee), U" object.\n"
 				U"Try using: object (id, x).");
@@ -4510,8 +4517,8 @@ static void do_objectLocation0 (long irow, long icol) {
 		double x = my v_getX (icol);
 		pushNumber (thy v_getFunction1 (irow, x));
 	} else if (thy v_hasGetFunction2 ()) {
-		Data me = theSource;
-		if (me == NULL)
+		Daata me = theSource;
+		if (! me)
 			Melder_throw (U"No current object (we are not in a Formula command),\n"
 				U"hence no implicit x or y values for this ", Thing_className (thee), U" object.\n"
 				U"Try using: object (id, x, y).");
@@ -4531,12 +4538,12 @@ static void do_objectLocation0 (long irow, long icol) {
 	}
 }
 static void do_funktie0 (long irow, long icol) {
-	Data thee = parse [programPointer]. content.object;
+	Daata thee = parse [programPointer]. content.object;
 	if (thy v_hasGetFunction0 ()) {
 		pushNumber (thy v_getFunction0 ());
 	} else if (thy v_hasGetFunction1 ()) {
-		Data me = theSource;
-		if (me == NULL)
+		Daata me = theSource;
+		if (!me)
 			Melder_throw (U"No current object (we are not in a Formula command),\n"
 				U"hence no implicit x value for this ", Thing_className (thee), U" object.\n"
 				U"Try using the (x) argument explicitly.");
@@ -4548,8 +4555,8 @@ static void do_funktie0 (long irow, long icol) {
 		double x = my v_getX (icol);
 		pushNumber (thy v_getFunction1 (irow, x));
 	} else if (thy v_hasGetFunction2 ()) {
-		Data me = theSource;
-		if (me == NULL)
+		Daata me = theSource;
+		if (! me)
 			Melder_throw (U"No current object (we are not in a Formula command),\n"
 				U"hence no implicit x or y values for this ", Thing_className (thee), U" object.\n"
 				U"Try using both (x, y) arguments explicitly.");
@@ -4569,10 +4576,10 @@ static void do_funktie0 (long irow, long icol) {
 	}
 }
 static void do_selfFunktie1 (long irow) {
-	Data me = theSource;
+	Daata me = theSource;
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
-		if (me == NULL) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
+		if (! me) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
 		if (my v_hasGetFunction1 ()) {
 			pushNumber (my v_getFunction1 (irow, x->number));
 		} else if (my v_hasGetFunction2 ()) {
@@ -4590,13 +4597,13 @@ static void do_selfFunktie1 (long irow) {
 }
 static void do_objectLocation1 (long irow) {
 	Stackel x = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	if (x->which == Stackel_NUMBER) {
 		if (thy v_hasGetFunction1 ()) {
 			pushNumber (thy v_getFunction1 (irow, x->number));
 		} else if (thy v_hasGetFunction2 ()) {
-			Data me = theSource;
-			if (me == NULL)
+			Daata me = theSource;
+			if (! me)
 				Melder_throw (U"No current object (we are not in a Formula command),\n"
 					U"hence no implicit y value for this ", Thing_className (thee), U" object.\n"
 					U"Try using: object (id, x, y).");
@@ -4614,14 +4621,14 @@ static void do_objectLocation1 (long irow) {
 	}
 }
 static void do_funktie1 (long irow) {
-	Data thee = parse [programPointer]. content.object;
+	Daata thee = parse [programPointer]. content.object;
 	Stackel x = pop;
 	if (x->which == Stackel_NUMBER) {
 		if (thy v_hasGetFunction1 ()) {
 			pushNumber (thy v_getFunction1 (irow, x->number));
 		} else if (thy v_hasGetFunction2 ()) {
-			Data me = theSource;
-			if (me == NULL)
+			Daata me = theSource;
+			if (! me)
 				Melder_throw (U"No current object (we are not in a Formula command),\n"
 					U"hence no implicit y value for this ", Thing_className (thee), U" object.\n"
 					U"Try using both (x, y) arguments instead.");
@@ -4638,11 +4645,11 @@ static void do_funktie1 (long irow) {
 		Melder_throw (Thing_className (thee), U" objects accept only numeric x values.");
 	}
 }
-static void do_selfFunktie2 (void) {
-	Data me = theSource;
+static void do_selfFunktie2 () {
+	Daata me = theSource;
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
-		if (me == NULL) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
+		if (! me) Melder_throw (U"The name \"self\" is restricted to formulas for objects.");
 		if (! my v_hasGetFunction2 ())
 			Melder_throw (Thing_className (me), U" objects like \"self\" accept no (x, y) values.");
 		pushNumber (my v_getFunction2 (x->number, y->number));
@@ -4650,9 +4657,9 @@ static void do_selfFunktie2 (void) {
 		Melder_throw (Thing_className (me), U" objects accept only numeric x values.");
 	}
 }
-static void do_objectLocation2 (void) {
+static void do_objectLocation2 () {
 	Stackel y = pop, x = pop;
-	Data thee = getObjectFromUniqueID (pop);
+	Daata thee = getObjectFromUniqueID (pop);
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		if (! thy v_hasGetFunction2 ())
 			Melder_throw (Thing_className (thee), U" objects accept no (x, y) values.");
@@ -4661,8 +4668,8 @@ static void do_objectLocation2 (void) {
 		Melder_throw (Thing_className (thee), U" objects accept only numeric x values.");
 	}
 }
-static void do_funktie2 (void) {
-	Data thee = parse [programPointer]. content.object;
+static void do_funktie2 () {
+	Daata thee = parse [programPointer]. content.object;
 	Stackel y = pop, x = pop;
 	if (x->which == Stackel_NUMBER && y->which == Stackel_NUMBER) {
 		if (! thy v_hasGetFunction2 ())
@@ -4672,21 +4679,21 @@ static void do_funktie2 (void) {
 		Melder_throw (Thing_className (thee), U" objects accept only numeric x values.");
 	}
 }
-static void do_rowStr (void) {
-	Data thee = parse [programPointer]. content.object;
+static void do_rowStr () {
+	Daata thee = parse [programPointer]. content.object;
 	Stackel row = pop;
 	long irow = Stackel_getRowNumber (row, thee);
 	autostring32 result = Melder_dup (thy v_getRowStr (irow));
-	if (result.peek() == NULL)
+	if (! result.peek())
 		Melder_throw (U"Row index out of bounds.");
 	pushString (result.transfer());
 }
-static void do_colStr (void) {
-	Data thee = parse [programPointer]. content.object;
+static void do_colStr () {
+	Daata thee = parse [programPointer]. content.object;
 	Stackel col = pop;
 	long icol = Stackel_getColumnNumber (col, thee);
 	autostring32 result = Melder_dup (thy v_getColStr (icol));
-	if (result.peek() == NULL)
+	if (! result.peek())
 		Melder_throw (U"Column index out of bounds.");
 	pushString (result.transfer());
 }
@@ -4707,8 +4714,8 @@ static double NUMerf (double x) {
 void Formula_run (long row, long col, struct Formula_Result *result) {
 	FormulaInstruction f = parse;
 	programPointer = 1;   // first symbol of the program
-	if (theStack == NULL) theStack = Melder_calloc_f (struct structStackel, 10000);
-	if (theStack == NULL)
+	if (! theStack) theStack = Melder_calloc_f (struct structStackel, 10000);
+	if (! theStack)
 		Melder_throw (U"Out of memory during formula computation.");
 	w = 0, wmax = 0;   // start new stack
 	try {
@@ -4721,11 +4728,11 @@ case NUMBER_: { pushNumber (f [programPointer]. content.number);
 } break; case ROW_: { pushNumber (row);
 } break; case COL_: { pushNumber (col);
 } break; case X_: {
-	Data me = theSource;
+	Daata me = theSource;
 	if (! my v_hasGetX ()) Melder_throw (U"No values for \"x\" for this object.");
 	pushNumber (my v_getX (col));
 } break; case Y_: {
-	Data me = theSource;
+	Daata me = theSource;
 	if (! my v_hasGetY ()) Melder_throw (U"No values for \"y\" for this object.");
 	pushNumber (my v_getY (row));
 } break; case NOT_: { do_not ();
@@ -4862,12 +4869,12 @@ case NUMBER_: { pushNumber (f [programPointer]. content.number);
 } break; case STARTS_WITH_: { do_stringMatchesCriterion (kMelder_string_STARTS_WITH);
 } break; case ENDS_WITH_: { do_stringMatchesCriterion (kMelder_string_ENDS_WITH);
 } break; case REPLACESTR_: { do_replaceStr ();
-} break; case INDEX_REGEX_: { do_index_regex (FALSE);
-} break; case RINDEX_REGEX_: { do_index_regex (TRUE);
+} break; case INDEX_REGEX_: { do_index_regex (false);
+} break; case RINDEX_REGEX_: { do_index_regex (true);
 } break; case REPLACE_REGEXSTR_: { do_replace_regexStr ();
 } break; case EXTRACT_NUMBER_: { do_extractNumber ();
-} break; case EXTRACT_WORDSTR_: { do_extractTextStr (TRUE);
-} break; case EXTRACT_LINESTR_: { do_extractTextStr (FALSE);
+} break; case EXTRACT_WORDSTR_: { do_extractTextStr (true);
+} break; case EXTRACT_LINESTR_: { do_extractTextStr (false);
 } break; case SELECTED_: { do_selected ();
 } break; case SELECTEDSTR_: { do_selectedStr ();
 } break; case NUMBER_OF_SELECTED_: { do_numberOfSelected ();
@@ -4921,12 +4928,12 @@ case NUMBER_: { pushNumber (f [programPointer]. content.number);
 	pushNumber (1.0);
 } break; case FALSE_: {
 	pushNumber (0.0);
-/* Possible compiler BUG: many compilers cannot handle the following assignment. */
-/* Those compilers have trouble with praat's AND and OR. */
 } break; case IFTRUE_: {
 	Stackel condition = pop;
 	if (condition->which == Stackel_NUMBER) {
 		if (condition->number != 0.0) {
+/* Possible compiler BUG: some compilers cannot handle the following assignment. */
+/* Those compilers will have trouble with praat's AND and OR. */
 			programPointer = f [programPointer]. content.label - theOptimize;
 		}
 	} else {
@@ -5038,7 +5045,7 @@ case NUMBER_: { pushNumber (f [programPointer]. content.number);
 			if (theStack [1]. which == Stackel_NUMERIC_ARRAY) Melder_throw (U"Found a numeric array expression instead of a string expression.");
 			result -> expressionType = kFormula_EXPRESSION_TYPE_STRING;
 			result -> result.stringResult = theStack [1]. string;   // dangle...
-			theStack [1]. string = NULL;   // ...undangle (and disown)
+			theStack [1]. string = nullptr;   // ...undangle (and disown)
 		} else if (theExpressionType [theLevel] == kFormula_EXPRESSION_TYPE_NUMERIC_ARRAY) {
 			if (theStack [1]. which == Stackel_NUMBER) Melder_throw (U"Found a numeric expression instead of a numeric array expression.");
 			if (theStack [1]. which == Stackel_STRING) Melder_throw (U"Found a string expression instead of a numeric array expression.");
@@ -5054,7 +5061,7 @@ case NUMBER_: { pushNumber (f [programPointer]. content.number);
 				Melder_assert (theStack [1]. which == Stackel_STRING);
 				result -> expressionType = kFormula_EXPRESSION_TYPE_STRING;
 				result -> result.stringResult = theStack [1]. string;   // dangle...
-				theStack [1]. string = NULL;   // ...undangle (and disown)
+				theStack [1]. string = nullptr;   // ...undangle (and disown)
 			}
 		}
 		/*
diff --git a/sys/Formula.h b/sys/Formula.h
index 80d04f3..5973bb2 100644
--- a/sys/Formula.h
+++ b/sys/Formula.h
@@ -4,22 +4,21 @@
  *
  * Copyright (C) 1990-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "Thing.h"
+#include "Data.h"
 
 #define kFormula_EXPRESSION_TYPE_NUMERIC  0
 #define kFormula_EXPRESSION_TYPE_STRING  1
@@ -32,7 +31,7 @@ struct Formula_NumericArray {
 	double **data;
 };
 
-typedef struct structInterpreterVariable *InterpreterVariable;
+Thing_declare (InterpreterVariable);
 
 typedef struct structStackel {
 	#define Stackel_NUMBER  0
@@ -59,7 +58,9 @@ struct Formula_Result {
 	} result;
 };
 
-void Formula_compile (Any interpreter, Any data, const char32 *expression, int expressionType, int optimize);
+Thing_declare (Interpreter);
+
+void Formula_compile (Interpreter interpreter, Daata data, const char32 *expression, int expressionType, bool optimize);
 
 void Formula_run (long row, long col, struct Formula_Result *result);
 
diff --git a/sys/Graphics.cpp b/sys/Graphics.cpp
index 73d9c0a..f795807 100644
--- a/sys/Graphics.cpp
+++ b/sys/Graphics.cpp
@@ -1,20 +1,19 @@
 /* Graphics.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <stdarg.h>
@@ -38,41 +37,11 @@ void Graphics_prefs () {
 	Preferences_addEnum (U"Graphics.cjkFontStyle", & theGraphicsCjkFontStyle, kGraphics_cjkFontStyle, kGraphics_cjkFontStyle_DEFAULT);
 }
 
-void structGraphics :: v_destroy () {
+void structGraphics :: v_destroy () noexcept {
 	Melder_free (record);
 	Graphics_Parent :: v_destroy ();
 }
 
-/* On Macintosh, the Device Coordinates are Mac window coordinates.
- * However, we would like to be able to call Graphics_setWsViewport () with widget coordinates.
- * The following routine computes the conversion. It is called by Graphics_init () and by
- * Graphics_setWsViewport ().
- */
-static void widgetToWindowCoordinates (I) {
-	#if motif && mac
-		iam (Graphics);
-		if (my screen) {
-			iam (GraphicsScreen);
-			if (my d_drawingArea) {
-				GuiObject widget = my d_drawingArea -> d_widget;
-				int shellX = 0, shellY = 0;
-				do {
-					int x = widget -> x, y = widget -> y;
-					shellX += x;
-					shellY += y;
-					widget = widget -> parent;
-				} while (! XtIsShell (widget));
-				my d_x1DC += shellX;
-				my d_x2DC += shellX;
-				my d_y1DC += shellY;
-				my d_y2DC += shellY;
-			}
-		}
-	#else
-		(void) void_me;
-	#endif
-}
-
 static void computeTrafo (Graphics me) {
 	double worldScaleX, worldScaleY, workScaleX, workScaleY;
 	Melder_assert (my d_x2WC != my d_x1WC);
@@ -127,7 +96,6 @@ void Graphics_init (Graphics me, int resolution) {
 	my d_x2WC = my d_x2NDC = my d_x2wNDC = 1.0;
 	my d_y1WC = my d_y1NDC = my d_y1wNDC = 0.0;
 	my d_y2WC = my d_y2NDC = my d_y2wNDC = 1.0;
-	widgetToWindowCoordinates (me);
 	computeTrafo (me);
 	my lineWidth = 1.0;
 	my arrowSize = 1.0;
@@ -135,7 +103,7 @@ void Graphics_init (Graphics me, int resolution) {
 	my font = kGraphics_font_HELVETICA;
 	my fontSize = 10;
 	my fontStyle = Graphics_NORMAL;
-	my record = NULL;
+	my record = nullptr;
 	my irecord = my nrecord = 0;
 	my percentSignIsItalic = 1;
 	my numberSignIsBold = 1;
@@ -145,9 +113,9 @@ void Graphics_init (Graphics me, int resolution) {
 	my atSignIsLink = 0;
 }
 
-Graphics Graphics_create (int resolution) {
-	Graphics me = (Graphics) Thing_new (Graphics);
-	Graphics_init (me, resolution);
+autoGraphics Graphics_create (int resolution) {
+	autoGraphics me = Thing_new (Graphics);
+	Graphics_init (me.get(), resolution);
 	return me;
 }
 
@@ -174,7 +142,6 @@ void Graphics_setWsViewport (Graphics me,
 	my d_x2DC = x2DC;
 	my d_y1DC = y1DC;
 	my d_y2DC = y2DC;
-	widgetToWindowCoordinates (me);
 	#if win
 		if (my screen && my printer) {
 			GraphicsScreen mescreen = (GraphicsScreen) me;
diff --git a/sys/Graphics.h b/sys/Graphics.h
index e54d584..00aebcd 100644
--- a/sys/Graphics.h
+++ b/sys/Graphics.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Thing.h"
@@ -112,18 +111,18 @@ Thing_define (Graphics, Thing) {
 	double horTick, vertTick;   // for Graphics_mark(s)XXX ()
 	double paperWidth, paperHeight;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 
-	virtual void v_polyline (long numberOfPoints, double *xyDC, bool close) { (void) numberOfPoints; (void) xyDC; (void) close; }
-	virtual void v_fillArea (long numberOfPoints, double *xyDC) { (void) numberOfPoints; (void) xyDC; }
-	virtual void v_rectangle (double x1DC, double x2DC, double y1DC, double y2DC) { (void) x1DC; (void) x2DC; (void) y1DC; (void) y2DC; }
-	virtual void v_fillRectangle (double a_x1DC, double a_x2DC, double a_y1DC, double a_y2DC) { (void) a_x1DC; (void) a_x2DC; (void) a_y1DC; (void) a_y2DC; }
-	virtual void v_circle (double xDC, double yDC, double rDC) { (void) xDC; (void) yDC; (void) rDC; }
-	virtual void v_ellipse (double a_x1DC, double a_x2DC, double a_y1DC, double a_y2DC) { (void) a_x1DC; (void) a_x2DC; (void) a_y1DC; (void) a_y2DC; }
-	virtual void v_arc (double xDC, double yDC, double rDC, double fromAngle, double toAngle) { (void) xDC; (void) yDC; (void) rDC; (void) fromAngle; (void) toAngle; }
-	virtual void v_fillCircle (double xDC, double yDC, double rDC) { (void) xDC; (void) yDC; (void) rDC; }
-	virtual void v_fillEllipse (double a_x1DC, double a_x2DC, double a_y1DC, double a_y2DC) { (void) a_x1DC; (void) a_x2DC; (void) a_y1DC; (void) a_y2DC; }
+	virtual void v_polyline (long /* numberOfPoints */, double * /* xyDC */, bool /* close */) { }
+	virtual void v_fillArea (long /* numberOfPoints */, double * /* xyDC */) { }
+	virtual void v_rectangle (double /* x1DC */, double /* x2DC */, double /* y1DC */, double /* y2DC */) { }
+	virtual void v_fillRectangle (double /* x1DC */, double /* x2DC */, double /* y1DC */, double /* y2DC */) { }
+	virtual void v_circle (double /* xDC */, double /* yDC */, double /* rDC */) { }
+	virtual void v_ellipse (double /* x1DC */, double /* x2DC */, double /* y1DC */, double /* y2DC */) { }
+	virtual void v_arc (double /* xDC */, double /* yDC */, double /* rDC */, double /* fromAngle */, double /* toAngle */) { }
+	virtual void v_fillCircle (double /* xDC */, double /* yDC */, double /* rDC */) { }
+	virtual void v_fillEllipse (double /* x1DC */, double /* x2DC */, double /* y1DC */, double /* y2DC */) { }
 	virtual void v_button (double a_x1DC, double a_x2DC, double a_y1DC, double a_y2DC)
 		{
 			v_rectangle (a_x1DC, a_x2DC, a_y1DC, a_y2DC);   // the simplest implementation
@@ -138,21 +137,21 @@ Thing_define (Graphics, Thing) {
 	virtual void v_updateWs () { }
 };
 
-Graphics Graphics_create (int resolution);
-Graphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
+autoGraphics Graphics_create (int resolution);
+autoGraphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
 	enum kGraphicsPostscript_paperSize paperSize, enum kGraphicsPostscript_orientation rotation, double magnification);
-Graphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
+autoGraphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
 	double xmin, double xmax, double ymin, double ymax, bool includeFonts, bool useSilipaPS);
-Graphics Graphics_create_pdffile (MelderFile file, int resolution,
+autoGraphics Graphics_create_pdffile (MelderFile file, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches);
-Graphics Graphics_create_pdf (void *context, int resolution,
+autoGraphics Graphics_create_pdf (void *context, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches);
-Graphics Graphics_create_pngfile (MelderFile file, int resolution,
+autoGraphics Graphics_create_pngfile (MelderFile file, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches);
-Graphics Graphics_create_postscriptprinter (void);
-Graphics Graphics_create_screenPrinter (void *display, void *window);
-Graphics Graphics_create_screen (void *display, void *window, int resolution);
-Graphics Graphics_create_xmdrawingarea (GuiDrawingArea drawingArea);
+autoGraphics Graphics_create_postscriptprinter (void);
+autoGraphics Graphics_create_screenPrinter (void *display, void *window);
+autoGraphics Graphics_create_screen (void *display, void *window, int resolution);
+autoGraphics Graphics_create_xmdrawingarea (GuiDrawingArea drawingArea);
 
 int Graphics_getResolution (Graphics me);
 
@@ -164,6 +163,8 @@ void Graphics_inqWsWindow (Graphics me, double *x1NDC, double *x2NDC, double *y1
 void Graphics_clearWs (Graphics me);
 void Graphics_flushWs (Graphics me);
 void Graphics_updateWs (Graphics me);
+void Graphics_beginMovieFrame (Graphics me, Graphics_Colour *colour);
+void Graphics_endMovieFrame (Graphics me, double frameDuration);
 void Graphics_DCtoWC (Graphics me, long xDC, long yDC, double *xWC, double *yWC);
 void Graphics_WCtoDC (Graphics me, double xWC, double yWC, long *xDC, long *yDC);
 
diff --git a/sys/GraphicsP.h b/sys/GraphicsP.h
index c100210..5caddb6 100644
--- a/sys/GraphicsP.h
+++ b/sys/GraphicsP.h
@@ -2,21 +2,20 @@
 #define _GraphicsP_h_
 /* GraphicsP.h
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -25,12 +24,6 @@
 #if defined (_WIN32)
 	#include <windowsx.h>
 	#include <gdiplus.h>
-#elif defined (macintosh)
-	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
-	#include "macport_off.h"
 #endif
 
 void Graphics_init (Graphics me, int resolution);
@@ -73,11 +66,7 @@ Thing_define (GraphicsScreen, Graphics) {
 		HBITMAP d_gdiBitmap;
 		Gdiplus::Bitmap *d_gdiplusBitmap;
 	#elif defined (macintosh)
-		#if useCarbon
-			GrafPtr d_macPort;
-		#else
-			NSView *d_macView;
-		#endif
+		NSView *d_macView;
 		int d_macFont, d_macStyle;
 		int d_depth;
 		RGBColor d_macColour;
@@ -85,7 +74,7 @@ Thing_define (GraphicsScreen, Graphics) {
 		CGContextRef d_macGraphicsContext;
 	#endif
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_polyline (long numberOfPoints, double *xyDC, bool close)
 		override;
@@ -145,13 +134,15 @@ Thing_define (GraphicsPostscript, Graphics) {
 	FILE *d_file;
 	int (*d_printf) (void *stream, const char *format, ...);
 	int languageLevel;
-	int photocopyable, spotsDensity, spotsAngle, landscape, includeFonts, loadedXipa, useSilipaPS;
+	int photocopyable, spotsDensity, spotsAngle;
+	bool loadedXipa, useSilipaPS, landscape, includeFonts;
 	double magnification;
 	char *fontInfos [1 + kGraphics_font_DINGBATS] [1 + Graphics_BOLD_ITALIC];
 	const char *lastFid;
-	int job, eps, pageNumber, lastSize;
+	int pageNumber, lastSize;
+	bool job, eps;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_polyline (long numberOfPoints, double *xyDC, bool close)
 		override;
@@ -210,7 +201,7 @@ void _Graphics_fillRectangle (Graphics me, long x1DC, long x2DC, long y1DC, long
 void _Graphics_setColour (Graphics me, Graphics_Colour colour);
 void _Graphics_setGrey (Graphics me, double grey);
 void _Graphics_colour_init (Graphics me);
-bool _GraphicsMac_tryToInitializeFonts (void);
+bool _GraphicsMac_tryToInitializeFonts ();
 
 #ifdef macintosh
 	void GraphicsQuartz_initDraw (GraphicsScreen me);
diff --git a/sys/GraphicsPostscript.cpp b/sys/GraphicsPostscript.cpp
index 103ac30..c54c773 100644
--- a/sys/GraphicsPostscript.cpp
+++ b/sys/GraphicsPostscript.cpp
@@ -1,20 +1,19 @@
 /* GraphicsPostscript.cpp
  *
- * Copyright (C) 1992-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <math.h>	/* For 'floor' and 'ceil' in BoundingBox. */
@@ -91,7 +90,7 @@ static void initPage (GraphicsPostscript me) {
 	}
 	my d_printf (my d_file, "%.6g dup scale\n", 72.0 * my magnification / my resolution);
 	if (my job) my d_printf (my d_file, "%%%%EndPageSetup\n");
-	my lastFid = NULL;
+	my lastFid = nullptr;
 }
 
 static void exitPage (GraphicsPostscript me) {
@@ -112,31 +111,31 @@ static void exitPage (GraphicsPostscript me) {
 	for (font = 0; font <= kGraphics_font_DINGBATS; font ++)
 		for (style = 0; style <= Graphics_BOLD_ITALIC; style ++)
 			Melder_free (my fontInfos [font] [style]);
-	my loadedXipa = FALSE;   /* BUG. Include this because of the unpredictable page order with DSC? */
+	my loadedXipa = false;   // FIXME: include this because of the unpredictable page order with DSC?
 }
 
-void structGraphicsPostscript :: v_destroy () {
+void structGraphicsPostscript :: v_destroy () noexcept {
 	exitPage (this);
-	if (d_file) {
-		if (job) {
-			d_printf (d_file, "%%%%Trailer\n");
-			d_printf (d_file, "%%%%Pages: %d\n", pageNumber);
+	if (our d_file) {
+		if (our job) {
+			our d_printf (our d_file, "%%%%Trailer\n");
+			our d_printf (our d_file, "%%%%Pages: %d\n", our pageNumber);
 		}
-		d_printf (d_file, "%%%%EOF\n");   // BUG. Correct according to DSC. But not good in EPS files?
-		fclose (d_file);
+		our d_printf (our d_file, "%%%%EOF\n");   // BUG. Correct according to DSC. But not good in EPS files?
+		fclose (our d_file);
 	}
 	GraphicsPostscript_Parent :: v_destroy ();
 }
 
-Graphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
+autoGraphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
 	enum kGraphicsPostscript_paperSize paperSize, enum kGraphicsPostscript_orientation rotation, double magnification)
 {
 	autoGraphicsPostscript me = Thing_new (GraphicsPostscript);
 	time_t today;
 	my postScript = true, my yIsZeroAtTheTop = false, my languageLevel = 2;
-	my job = TRUE, my eps = FALSE, my printer = FALSE;
+	my job = true, my eps = false, my printer = false;
 	my d_printf = (int (*)(void *, const char*, ...)) fprintf;
-	Graphics_init (me.peek(), resolution);   // virtual resolution; may differ from that of the printer; OK if always 600 dpi
+	Graphics_init (me.get(), resolution);   // virtual resolution; may differ from that of the printer; OK if always 600 dpi
 	my photocopyable = spots == kGraphicsPostscript_spots_PHOTOCOPYABLE;
 	if (my photocopyable) { my spotsDensity = 85; my spotsAngle = 35; }
 	else { my spotsDensity = 106; my spotsAngle = 46; }
@@ -145,7 +144,7 @@ Graphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kG
 	else my paperWidth = 595 / 72.0, my paperHeight = 842 / 72.0;
 	my landscape = rotation == kGraphicsPostscript_orientation_LANDSCAPE;
 	my magnification = magnification;
-	my includeFonts = TRUE;
+	my includeFonts = true;
 	my d_file = Melder_fopen (file, "w");
 	/*
 	 * The Device Coordinates are the PostScript user coordinates.
@@ -160,21 +159,21 @@ Graphics Graphics_create_postscriptjob (MelderFile file, int resolution, enum kG
 	/*
 	 * Now don't just set x1wNDC etc, but force computation of the scaling as well.
 	 */
-	Graphics_setWsWindow ((Graphics) me.peek(), 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
+	Graphics_setWsWindow (me.get(), 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
 	/*
 	 * We will adhere to version 3.0 of the Document Structuring Conventions for print jobs.
 	 */
 	my d_printf (my d_file, "%%!PS-Adobe-3.0\n");
 	my d_printf (my d_file, "%%%%Creator: Praat Shell 4.2\n");
 	my d_printf (my d_file, "%%%%Title: %s\n", Melder_peek32to8 (MelderFile_name (file)));
-	today = time (NULL);
-	my d_printf (my d_file, "%%%%CreationDate: %s", ctime (& today));   /* Contains newline symbol. */
+	today = time (nullptr);
+	my d_printf (my d_file, "%%%%CreationDate: %s", ctime (& today));   // contains newline symbol
 	my d_printf (my d_file, "%%%%PageOrder: Special\n");
 	my d_printf (my d_file, "%%%%Pages: (atend)\n");
 	my d_printf (my d_file, "%%%%EndComments\n");
-	downloadPrologAndSetUp (me.peek());
-	initPage (me.peek());
-	return (Graphics) me.transfer();
+	downloadPrologAndSetUp (me.get());
+	initPage (me.get());
+	return me.move();
 }
 
 #if defined (macintosh)
@@ -190,7 +189,7 @@ static int Eps_postScript_printf (void *stream, const char *format, ... ) {
 }
 #endif
 
-Graphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
+autoGraphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphicsPostscript_spots spots,
 	double x1inches, double x2inches, double y1inches, double y2inches, bool includeFonts, bool useSilipaPS)
 {
 	autoGraphicsPostscript me = Thing_new (GraphicsPostscript);
@@ -204,12 +203,12 @@ Graphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphic
 	#else
 		my d_printf = (int (*)(void *, const char*, ...)) fprintf;
 	#endif
-	Graphics_init (me.peek(), resolution);   // virtual resolution; may differ from that of the printer; OK if always 600 dpi
+	Graphics_init (me.get(), resolution);   // virtual resolution; may differ from that of the printer; OK if always 600 dpi
 	my photocopyable = spots == kGraphicsPostscript_spots_PHOTOCOPYABLE;
 	if (my photocopyable) { my spotsDensity = 85; my spotsAngle = 35; }
 	else { my spotsDensity = 106; my spotsAngle = 46; }
 	my paperWidth = 7.5, my paperHeight = 11.0;
-	my landscape = FALSE;
+	my landscape = false;
 	my magnification = 1.0;
 	my includeFonts = includeFonts;
 	my useSilipaPS = useSilipaPS;
@@ -218,7 +217,7 @@ Graphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphic
 	my d_x2DC = my d_x2DCmax = my paperWidth * resolution;   // 600 dpi -> 4500 virtual dots
 	my d_y1DC = my d_y1DCmin = 0;
 	my d_y2DC = my d_y2DCmax = my paperHeight * resolution;   // 600 dpi -> 6600 virtual dots
-	Graphics_setWsWindow ((Graphics) me.peek(), 0, my paperWidth, 12.0 - my paperHeight, 12.0);   // force scaling
+	Graphics_setWsWindow (me.get(), 0, my paperWidth, 12.0 - my paperHeight, 12.0);   // force scaling
 	/*
 	 * We will honour version 3.0 of the DSC for Encapsulated PostScript files,
 	 * which includes supplying the bounding box information.
@@ -235,21 +234,21 @@ Graphics Graphics_create_epsfile (MelderFile file, int resolution, enum kGraphic
 	 * This leaves us room to show a warning that should keep users from thinking anything is wrong.
 	 */
 	my d_printf (my d_file, "%%%%Title: NO SCREEN PREVIEW, BUT WILL PRINT CORRECTLY\n");
-	today = time (NULL);
+	today = time (nullptr);
 	my d_printf (my d_file, "%%%%CreationDate: %s", ctime (& today));   /* Contains newline symbol. */
 	my d_printf (my d_file, "%%%%EndComments\n");
-	downloadPrologAndSetUp (me.peek());
-	initPage (me.peek());
-	return (Graphics) me.transfer();
+	downloadPrologAndSetUp (me.get());
+	initPage (me.get());
+	return me.move();
 }
 
-#ifndef UNIX
-Graphics Graphics_create_postscriptprinter (void) {
-	GraphicsPostscript me = Thing_new (GraphicsPostscript);
-	my postScript = TRUE, my languageLevel = 2;
-	my job = FALSE, my eps = FALSE, my printer = TRUE;
+#if defined (_WIN32)
+autoGraphics Graphics_create_postscriptprinter () {
+	autoGraphicsPostscript me = Thing_new (GraphicsPostscript);
+	my postScript = true, my languageLevel = 2;
+	my job = false, my eps = false, my printer = true;
 	my d_printf = Printer_postScript_printf;
-	Graphics_init (me, thePrinter. resolution);   // virtual resolution
+	Graphics_init (me.get(), thePrinter. resolution);   // virtual resolution
 	my photocopyable = thePrinter. spots == kGraphicsPostscript_spots_PHOTOCOPYABLE;
 	if (my photocopyable) { my spotsDensity = 85; my spotsAngle = 35; }
 	else { my spotsDensity = 106; my spotsAngle = 46; }
@@ -257,15 +256,15 @@ Graphics Graphics_create_postscriptprinter (void) {
 	my paperHeight = (double) thePrinter. paperHeight / my resolution;
 	my landscape = thePrinter. orientation == kGraphicsPostscript_orientation_LANDSCAPE;
 	my magnification = thePrinter. magnification;
-	my includeFonts = TRUE;
+	my includeFonts = true;
 	my d_x1DC = my d_x1DCmin = my resolution / 2;
 	my d_x2DC = my d_x2DCmax = (my paperWidth - 0.5) * my resolution;
 	my d_y1DC = my d_y1DCmin = my resolution / 2;
 	my d_y2DC = my d_y2DCmax = (my paperHeight - 0.5) * my resolution;
-	Graphics_setWsWindow ((Graphics) me, 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
-	downloadPrologAndSetUp (me);
-	initPage (me);
-	return (Graphics) me;
+	Graphics_setWsWindow (me.get(), 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
+	downloadPrologAndSetUp (me.get());
+	initPage (me.get());
+	return me.move();
 }
 #endif
 
diff --git a/sys/GraphicsScreen.cpp b/sys/GraphicsScreen.cpp
index 03652d8..e9f85b1 100644
--- a/sys/GraphicsScreen.cpp
+++ b/sys/GraphicsScreen.cpp
@@ -1,33 +1,19 @@
 /* GraphicsScreen.cpp
  *
- * Copyright (C) 1992-2012,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2012,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/05/28 GPL
- * pb 2004/10/18 ReleaseDC
- * pb 2007/08/01 reintroduced yIsZeroAtTheTop
- * sdk 2008/03/24 cairo
- * sdk 2008/05/09 cairo
- * pb 2009/07/24 quartz
- * fb 2010/02/23 cairo & clipping on updateWs()
- * pb 2010/05/13 support XOR mode
- * pb 2010/07/13 split erasure of recording off from Graphics_clearWs
- * pb 2011/03/17 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -41,35 +27,35 @@
 	#include <gdiplus.h>
 	//#include "winport_off.h"
 	//using namespace Gdiplus;
-	static bool _GraphicsWindows_tryToInitializeGdiPlus (void) {
+	static bool _GraphicsWindows_tryToInitializeGdiPlus () {
 		Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 		ULONG_PTR gdiplusToken;
-		GdiplusStartup (& gdiplusToken, & gdiplusStartupInput, NULL);
+		GdiplusStartup (& gdiplusToken, & gdiplusStartupInput, nullptr);
 		return true;
 	}
 #elif mac
 	#include "macport_on.h"
 	static RGBColor theBlackColour = { 0, 0, 0 };
-	static bool _GraphicsMacintosh_tryToInitializeQuartz (void) {
+	static bool _GraphicsMacintosh_tryToInitializeQuartz () {
 		return _GraphicsMac_tryToInitializeFonts ();
 	}
 #endif
 
 Thing_implement (GraphicsScreen, Graphics, 0);
 
-void structGraphicsScreen :: v_destroy () {
+void structGraphicsScreen :: v_destroy () noexcept {
 	#if cairo
 		#if ALLOW_GDK_DRAWING
-			if (d_gdkGraphicsContext != NULL) {
+			if (d_gdkGraphicsContext) {
 				g_object_unref (d_gdkGraphicsContext);			
-				d_gdkGraphicsContext = NULL;
+				d_gdkGraphicsContext = nullptr;
 			}
 		#endif
-		if (d_cairoGraphicsContext != NULL) {
+		if (d_cairoGraphicsContext) {
 			cairo_destroy (d_cairoGraphicsContext);
-			d_cairoGraphicsContext = NULL;
+			d_cairoGraphicsContext = nullptr;
 		}
-		if (d_cairoSurface != NULL) {
+		if (d_cairoSurface) {
 			cairo_surface_flush (d_cairoSurface);
 			if (d_isPng) {
 				#if 1
@@ -83,25 +69,25 @@ void structGraphicsScreen :: v_destroy () {
 			cairo_surface_destroy (d_cairoSurface);
 		}
 	#elif win
-		if (d_gdiGraphicsContext != NULL) {
+		if (d_gdiGraphicsContext) {
 			SelectPen (d_gdiGraphicsContext, GetStockPen (BLACK_PEN));
 			SelectBrush (d_gdiGraphicsContext, GetStockBrush (NULL_BRUSH));
 		}
-		if (d_winPen != NULL) {
+		if (d_winPen) {
 			DeleteObject (d_winPen);
-			d_winPen = NULL;
+			d_winPen = nullptr;
 		}
-		if (d_winBrush != NULL) {
+		if (d_winBrush) {
 			DeleteObject (d_winBrush);
-			d_winBrush = NULL;
+			d_winBrush = nullptr;
 		}
 		if (d_isPng && d_gdiBitmap) {
 			trace (U"saving the filled bitmap to a PNG file");
 			/*
 			 * Deselect the bitmap from the device context (otherwise GetDIBits won't work).
 			 */
-			//SelectBitmap (d_gdiGraphicsContext, NULL);
-			//SelectBitmap (d_gdiGraphicsContext, CreateCompatibleBitmap (NULL, 1, 1));
+			//SelectBitmap (d_gdiGraphicsContext, nullptr);
+			//SelectBitmap (d_gdiGraphicsContext, CreateCompatibleBitmap (nullptr, 1, 1));
 
 			BITMAP bitmap;
 			GetObject (d_gdiBitmap, sizeof (BITMAP), & bitmap);
@@ -127,7 +113,7 @@ void structGraphicsScreen :: v_destroy () {
 			unsigned char *bits = Melder_calloc (unsigned char, 4 * width * height);
 			//HANDLE handle = GlobalAlloc (GHND, 4 * width * height);
 			//unsigned char *bits = (unsigned char *) GlobalLock (handle);
-			int numberOfLinesScanned = GetDIBits (GetDC (NULL), d_gdiBitmap, 0, height, bits, (BITMAPINFO *) & bitmapInfo, DIB_RGB_COLORS);
+			int numberOfLinesScanned = GetDIBits (GetDC (nullptr), d_gdiBitmap, 0, height, bits, (BITMAPINFO *) & bitmapInfo, DIB_RGB_COLORS);
 			trace (numberOfLinesScanned, U" lines scanned");
 
 			trace (U"creating a savable bitmap");
@@ -156,7 +142,7 @@ void structGraphicsScreen :: v_destroy () {
 			Gdiplus::GetImageEncoders (numberOfImageEncoders, sizeOfImageEncoderArray, imageEncoderInfos);
 			for (int iencoder = 0; iencoder < numberOfImageEncoders; iencoder ++) {
 				if (! wcscmp (imageEncoderInfos [iencoder]. MimeType, L"image/png")) {
-					gdiplusBitmap. Save (Melder_peek32toW (our d_file. path), & imageEncoderInfos [iencoder]. Clsid, NULL);
+					gdiplusBitmap. Save (Melder_peek32toW (our d_file. path), & imageEncoderInfos [iencoder]. Clsid, nullptr);
 				}
 			}
 
@@ -175,25 +161,18 @@ void structGraphicsScreen :: v_destroy () {
 		 * No ReleaseDC here, because we have not created it ourselves,
 		 * not even with GetDC. Is this a BUG?
 		 */
-		d_gdiGraphicsContext = NULL;
+		d_gdiGraphicsContext = nullptr;
 	#elif mac
-        #if useCarbon
-            if (d_macPort == NULL && ! d_isPng) {
-                CGContextEndPage (d_macGraphicsContext);
-                CGContextRelease (d_macGraphicsContext);
-            }
-        #else
-            if (d_macView == NULL && ! d_isPng) {
-                CGContextEndPage (d_macGraphicsContext);
-                CGContextRelease (d_macGraphicsContext);
-            }
-        #endif
+		if (! d_macView && ! d_isPng) {
+			CGContextEndPage (d_macGraphicsContext);
+			CGContextRelease (d_macGraphicsContext);
+		}
 		if (d_isPng && d_macGraphicsContext) {
 			/*
 			 * Turn the offscreen bitmap into an image.
 			 */
 			CGImageRef image = CGBitmapContextCreateImage (d_macGraphicsContext);
-			Melder_assert (image != NULL);
+			Melder_assert (image);
 			//CGContextRelease (d_macGraphicsContext);
 			/*
 			 * Create a dictionary with resolution properties.
@@ -202,22 +181,23 @@ void structGraphicsScreen :: v_destroy () {
 			keys [0] = kCGImagePropertyDPIWidth;
 			keys [1] = kCGImagePropertyDPIHeight;
 			float resolution_float = resolution;
-			values [1] = values [0] = CFNumberCreate (NULL, kCFNumberFloatType, & resolution_float);
-			CFDictionaryRef properties = CFDictionaryCreate (NULL,
+			values [1] = values [0] = CFNumberCreate (nullptr, kCFNumberFloatType, & resolution_float);
+			CFDictionaryRef properties = CFDictionaryCreate (nullptr,
 				(const void **) keys, (const void **) values, 2,
 				& kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks);
-			Melder_assert (properties != NULL);
+			Melder_assert (properties);
 			/*
 			 */
-			CFURLRef url = CFURLCreateWithFileSystemPath (NULL,
+			CFURLRef url = CFURLCreateWithFileSystemPath (nullptr,
 				(CFStringRef) Melder_peek32toCfstring (d_file. path), kCFURLPOSIXPathStyle, false);
-			CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL (url, kUTTypePNG, 1, NULL);
-			Melder_assert (imageDestination != NULL);
-			CGImageDestinationAddImage (imageDestination, image, properties);
+			CGImageDestinationRef imageDestination = CGImageDestinationCreateWithURL (url, kUTTypePNG, 1, nullptr);
+			if (imageDestination) {
+				CGImageDestinationAddImage (imageDestination, image, properties);
+				CGImageDestinationFinalize (imageDestination);
+				CFRelease (imageDestination);
+			}
 			CGImageRelease (image);
 			CFRelease (properties);
-			CGImageDestinationFinalize (imageDestination);
-			CFRelease (imageDestination);
 			CFRelease (url);
 		}
 		Melder_free (d_bits);
@@ -230,7 +210,7 @@ void structGraphicsScreen :: v_destroy () {
 void structGraphicsScreen :: v_flushWs () {
 	#if cairo
 		// Ik weet niet of dit is wat het zou moeten zijn ;)
-		//gdk_window_process_updates (d_window, TRUE);   // this "works" but is incorrect because it's not the expose events that have to be carried out
+		//gdk_window_process_updates (d_window, true);   // this "works" but is incorrect because it's not the expose events that have to be carried out
 		//gdk_window_flush (d_window);
 		gdk_flush ();
 		// TODO: een aanroep die de eventuele grafische buffer ledigt,
@@ -238,17 +218,29 @@ void structGraphicsScreen :: v_flushWs () {
 	#elif cocoa
 		if (d_drawingArea) {
 			GuiShell shell = d_drawingArea -> d_shell;
-			Melder_assert (shell != NULL);
-        	[shell -> d_cocoaWindow   flushWindow];
+			Melder_assert (shell);
+			#if 0
+				//GuiCocoaDrawingArea *cocoaDrawingArea = (GuiCocoaDrawingArea *) d_drawingArea -> d_widget;
+				//[cocoaDrawingArea display];
+				//GuiShell_drain (shell);
+				//CGContextFlush (our d_macGraphicsContext);
+				v_updateWs ();
+				NSEvent *nsEvent = [[d_macView window]
+					nextEventMatchingMask: NSAnyEventMask
+					untilDate: [NSDate distantPast]
+					inMode: NSDefaultRunLoopMode
+					dequeue: NO
+					];
+				Melder_assert (shell -> d_cocoaShell);
+				[shell -> d_cocoaShell   flushWindow];
+				//[[NSGraphicsContext currentContext] flushGraphics];
+			#else
+				Melder_assert (shell -> d_cocoaShell);
+				[shell -> d_cocoaShell   flushWindow];
+			#endif
 		}
 	#elif win
 		/*GdiFlush ();*/
-	#elif mac
-		if (d_drawingArea) {
-			GuiShell shell = d_drawingArea -> d_shell;
-			Melder_assert (shell != NULL);
-			GuiShell_drain (shell);
-		}
 	#endif
 }
 
@@ -259,24 +251,24 @@ void Graphics_flushWs (Graphics me) {
 void structGraphicsScreen :: v_clearWs () {
 	#if cairo
 		GdkRectangle rect;
-		if (this -> d_x1DC < this -> d_x2DC) {
-			rect.x = this -> d_x1DC;
-			rect.width = this -> d_x2DC - this -> d_x1DC;
+		if (our d_x1DC < our d_x2DC) {
+			rect.x = our d_x1DC;
+			rect.width = our d_x2DC - our d_x1DC;
 		} else {
-			rect.x = this -> d_x2DC;
-			rect.width = this -> d_x1DC - this -> d_x2DC;
+			rect.x = our d_x2DC;
+			rect.width = our d_x1DC - our d_x2DC;
 		}
-		if (this -> d_y1DC < this -> d_y2DC) {
-			rect.y = this -> d_y1DC;
-			rect.height = this -> d_y2DC - this -> d_y1DC;
+		if (our d_y1DC < our d_y2DC) {
+			rect.y = our d_y1DC;
+			rect.height = our d_y2DC - our d_y1DC;
 		} else {
-			rect.y = this -> d_y2DC;
-			rect.height = this -> d_y1DC - this -> d_y2DC;
+			rect.y = our d_y2DC;
+			rect.height = our d_y1DC - our d_y2DC;
 		}
-		if (d_cairoGraphicsContext == NULL) {
+		if (! d_cairoGraphicsContext) {
 			trace (U"clear and null");
-			//gdk_window_clear (this -> window);
-			//gdk_window_invalidate_rect (this -> window, & rect, true);   // BUG: it seems weird that this is necessary.
+			//gdk_window_clear (our window);
+			//gdk_window_invalidate_rect (our window, & rect, true);   // BUG: it seems weird that this is necessary.
 		} else {
 			trace (U"clear and not null");
 			cairo_set_source_rgb (d_cairoGraphicsContext, 1.0, 1.0, 1.0);
@@ -288,19 +280,19 @@ void structGraphicsScreen :: v_clearWs () {
         GuiCocoaDrawingArea *cocoaDrawingArea = (GuiCocoaDrawingArea *) d_drawingArea -> d_widget;
         if (cocoaDrawingArea) {
             NSRect rect;
-            if (this -> d_x1DC < this -> d_x2DC) {
-                rect.origin.x = this -> d_x1DC;
-                rect.size.width = this -> d_x2DC - this -> d_x1DC;
+            if (our d_x1DC < our d_x2DC) {
+                rect.origin.x = our d_x1DC;
+                rect.size.width = our d_x2DC - our d_x1DC;
             } else {
-                rect.origin.x = this -> d_x2DC;
-                rect.size.width = this -> d_x1DC - this -> d_x2DC;
+                rect.origin.x = our d_x2DC;
+                rect.size.width = our d_x1DC - our d_x2DC;
             }
-            if (this -> d_y1DC < this -> d_y2DC) {
-                rect.origin.y = this -> d_y1DC;
-                rect.size.height = this -> d_y2DC - this -> d_y1DC;
+            if (our d_y1DC < our d_y2DC) {
+                rect.origin.y = our d_y1DC;
+                rect.size.height = our d_y2DC - our d_y1DC;
             } else {
-                rect.origin.y = this -> d_y2DC;
-                rect.size.height = this -> d_y1DC - this -> d_y2DC;
+                rect.origin.y = our d_y2DC;
+                rect.size.height = our d_y1DC - our d_y2DC;
             }
 			[cocoaDrawingArea lockFocus];
             CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
@@ -320,6 +312,7 @@ void structGraphicsScreen :: v_clearWs () {
             CGContextRestoreGState (context);
 			[cocoaDrawingArea unlockFocus];
 			[cocoaDrawingArea setNeedsDisplay: YES];
+			//[cocoaDrawingArea display];
         }
 	#elif win
 		RECT rect;
@@ -328,15 +321,6 @@ void structGraphicsScreen :: v_clearWs () {
 		rect. bottom = d_y2DC - d_y1DC;
 		FillRect (d_gdiGraphicsContext, & rect, GetStockBrush (WHITE_BRUSH));
 		/*if (d_winWindow) SendMessage (d_winWindow, WM_ERASEBKGND, (WPARAM) d_gdiGraphicsContext, 0);*/
-	#elif mac
-		QDBeginCGContext (d_macPort, & d_macGraphicsContext);
-		CGContextSetAlpha (d_macGraphicsContext, 1.0);
-		CGContextSetBlendMode (d_macGraphicsContext, kCGBlendModeNormal);
-		//CGContextSetAllowsAntialiasing (my macGraphicsContext, false);
-		int shellHeight = GuiMac_clipOn_graphicsContext (d_drawingArea -> d_widget, d_macGraphicsContext);
-		CGContextSetRGBFillColor (d_macGraphicsContext, 1.0, 1.0, 1.0, 1.0);
-		CGContextFillRect (d_macGraphicsContext, CGRectMake (this -> d_x1DC, shellHeight - this -> d_y1DC, this -> d_x2DC - this -> d_x1DC, this -> d_y1DC - this -> d_y2DC));
-		QDEndCGContext (d_macPort, & d_macGraphicsContext);
 	#endif
 }
 
@@ -407,15 +391,7 @@ void structGraphicsScreen :: v_updateWs () {
     
 	#elif win
 		//clear (this); // lll
-		if (d_winWindow) InvalidateRect (d_winWindow, NULL, TRUE);
-	#elif mac
-		Rect r;
-		if (d_drawingArea) GuiMac_clipOn (d_drawingArea -> d_widget);   // to prevent invalidating invisible parts of the canvas
-		SetRect (& r, this -> d_x1DC, this -> d_y1DC, this -> d_x2DC, this -> d_y2DC);
-		SetPort (d_macPort);
-		/*EraseRect (& r);*/
-		InvalWindowRect (GetWindowFromPort ((CGrafPtr) d_macPort), & r);
-		if (d_drawingArea) GuiMac_clipOff ();
+		if (d_winWindow) InvalidateRect (d_winWindow, nullptr, true);
 	#endif
 }
 
@@ -424,6 +400,35 @@ void Graphics_updateWs (Graphics me) {
 		my v_updateWs ();
 }
 
+void Graphics_beginMovieFrame (Graphics any, Graphics_Colour *p_colour) {
+	if (any -> classInfo == classGraphicsScreen) {
+		GraphicsScreen me = (GraphicsScreen) any;
+		Graphics_clearRecording (me);
+		Graphics_startRecording (me);
+		if (p_colour) {
+			Graphics_setViewport (me, 0.0, 1.0, 0.0, 1.0);
+			Graphics_setColour (me, *p_colour);
+			Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
+			Graphics_fillRectangle (me, 0.0, 1.0, 0.0, 1.0);
+			Graphics_setColour (me, Graphics_BLACK);
+		}
+	}
+}
+
+void Graphics_endMovieFrame (Graphics any, double frameDuration) {
+	if (any -> classInfo == classGraphicsScreen) {
+		GraphicsScreen me = (GraphicsScreen) any;
+		Graphics_stopRecording (me);
+		#if cocoa
+			my v_updateWs ();
+			GuiShell_drain (my d_drawingArea -> d_shell);
+		#else
+			my v_flushWs ();
+		#endif
+		Melder_sleep (frameDuration);
+	}
+}
+
 static int GraphicsScreen_init (GraphicsScreen me, void *voidDisplay, void *voidWindow) {
 
 	/* Fill in new members. */
@@ -445,12 +450,12 @@ static int GraphicsScreen_init (GraphicsScreen me, void *voidDisplay, void *void
 			my d_gdiGraphicsContext = (HDC) voidWindow;
 		} else if (voidDisplay) {
 			my d_gdiGraphicsContext = (HDC) voidDisplay;
-			my metafile = TRUE;
+			my metafile = true;
 		} else {
 			my d_winWindow = (HWND) voidWindow;
 			my d_gdiGraphicsContext = GetDC (my d_winWindow);   // window must have a constant display context; see XtInitialize ()
 		}
-		Melder_assert (my d_gdiGraphicsContext != NULL);
+		Melder_assert (my d_gdiGraphicsContext);
 		SetBkMode (my d_gdiGraphicsContext, TRANSPARENT);   // not the default!
 		/*
 		 * Create pens and brushes.
@@ -462,18 +467,13 @@ static int GraphicsScreen_init (GraphicsScreen me, void *voidDisplay, void *void
 		_GraphicsScreen_text_init (me);
 	#elif mac
 		(void) voidDisplay;
-        #if useCarbon
-            my d_macPort = (GrafPtr) voidWindow;
-			(void) my d_macGraphicsContext;   // will be retrieved from QuickDraw with every drawing command!
-        #else
-			if (my printer) {
-				my d_macView = (NSView *) voidWindow;   // in case we do view-based printing
-				//my d_macGraphicsContext = (CGContextRef) voidWindow;   // in case we do context-based printing
-			} else {
-				my d_macView = (NSView *) voidWindow;
-				(void) my d_macGraphicsContext;   // will be retrieved from Core Graphics with every drawing command!
-			}
-        #endif
+		if (my printer) {
+			my d_macView = (NSView *) voidWindow;   // in case we do view-based printing
+			//my d_macGraphicsContext = (CGContextRef) voidWindow;   // in case we do context-based printing
+		} else {
+			my d_macView = (NSView *) voidWindow;
+			(void) my d_macGraphicsContext;   // will be retrieved from Core Graphics with every drawing command!
+		}
 		my d_macColour = theBlackColour;
 		my d_depth = my resolution > 150 ? 1 : 8;   /* BUG: replace by true depth (1=black/white) */
 		_GraphicsScreen_text_init (me);
@@ -481,8 +481,8 @@ static int GraphicsScreen_init (GraphicsScreen me, void *voidDisplay, void *void
 	return 1;
 }
 
-Graphics Graphics_create_screen (void *display, void *window, int resolution) {
-	GraphicsScreen me = Thing_new (GraphicsScreen);
+autoGraphics Graphics_create_screen (void *display, void *window, int resolution) {
+	autoGraphicsScreen me = Thing_new (GraphicsScreen);
 	my screen = true;
 	#if win
 		my d_useGdiplus = _GraphicsWindows_tryToInitializeGdiPlus ();
@@ -490,18 +490,14 @@ Graphics Graphics_create_screen (void *display, void *window, int resolution) {
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
 	my yIsZeroAtTheTop = true;
-	Graphics_init (me, resolution);
-	Graphics_setWsViewport ((Graphics) me, 0, 100, 0, 100);
-	#if mac && useCarbon
-		GraphicsScreen_init (me, display, GetWindowPort ((WindowRef) window));
-	#else
-		GraphicsScreen_init (me, display, window);
-	#endif
-	return (Graphics) me;
+	Graphics_init (me.get(), resolution);
+	Graphics_setWsViewport (me.get(), 0.0, 100.0, 0.0, 100.0);
+	GraphicsScreen_init (me.get(), display, window);
+	return me.move();
 }
 
-Graphics Graphics_create_screenPrinter (void *display, void *window) {
-	GraphicsScreen me = Thing_new (GraphicsScreen);
+autoGraphics Graphics_create_screenPrinter (void *display, void *window) {
+	autoGraphicsScreen me = Thing_new (GraphicsScreen);
 	my screen = true;
 	my yIsZeroAtTheTop = true;
 	my printer = true;
@@ -510,7 +506,7 @@ Graphics Graphics_create_screenPrinter (void *display, void *window) {
 	#elif mac
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
-	Graphics_init (me, thePrinter. resolution);
+	Graphics_init (me.get(), thePrinter. resolution);
 	my paperWidth = (double) thePrinter. paperWidth / thePrinter. resolution;
 	my paperHeight = (double) thePrinter. paperHeight / thePrinter. resolution;
 	//NSLog (@"Graphics_create_screenPrinter: %f %f", my paperWidth, my paperHeight);
@@ -527,37 +523,14 @@ Graphics Graphics_create_screenPrinter (void *display, void *window) {
 		my d_y1DC -= GetDeviceCaps ((HDC) window, PHYSICALOFFSETY);
 		my d_y2DC -= GetDeviceCaps ((HDC) window, PHYSICALOFFSETY);
 	#endif
-	Graphics_setWsWindow ((Graphics) me, 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
-	GraphicsScreen_init (me, display, window);
-	return (Graphics) me;
-}
-
-#if mac && useCarbon
-/* Drawing areas support resize callbacks.
- * However, Mac drawing areas also support move callbacks.
- * This is the only way for a graphics driver to get notified of a move,
- * which would bring about a change in device coordinates.
- * On Xwin and Win, we are not interested in moves, because we draw in widget coordinates.
- */
-static void cb_move (GuiObject w, XtPointer void_me, XtPointer call) {
-	iam (GraphicsScreen);
-	Dimension width, height;
-	XtVaGetValues (w, XmNwidth, & width, XmNheight, & height, NULL);
-
-	/* The four values returned are probably equal to the previous ones.
-	 * However, the following call forces a new computation of the device coordinates
-	 * by widgetToWindowCoordinates ().
-	 */
-
-	Graphics_setWsViewport ((Graphics) me, 0 /* Left x value in widget coordinates */,
-		width, 0, height);
-	Graphics_updateWs ((Graphics) me);
+	Graphics_setWsWindow (me.get(), 0, my paperWidth - 1.0, 13.0 - my paperHeight, 12.0);
+	GraphicsScreen_init (me.get(), display, window);
+	return me.move();
 }
-#endif
 
-Graphics Graphics_create_xmdrawingarea (GuiDrawingArea w) {
+autoGraphics Graphics_create_xmdrawingarea (GuiDrawingArea w) {
 	trace (U"begin");
-	GraphicsScreen me = Thing_new (GraphicsScreen);
+	autoGraphicsScreen me = Thing_new (GraphicsScreen);
 	#if gtk
 		GtkRequisition realsize;
 		GtkAllocation allocation;
@@ -575,23 +548,17 @@ Graphics Graphics_create_xmdrawingarea (GuiDrawingArea w) {
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
 	#if mac
-		Graphics_init (me, Gui_getResolution (NULL));
-		#if useCarbon
-            GraphicsScreen_init (me,
-                XtDisplay (my d_drawingArea -> d_widget),
-                GetWindowPort ((WindowRef) XtWindow (my d_drawingArea -> d_widget)));
-		#else
-            GraphicsScreen_init (me,
-                                 my d_drawingArea -> d_widget,
-                                 my d_drawingArea -> d_widget);
-		#endif
+		Graphics_init (me.get(), Gui_getResolution (nullptr));
+			GraphicsScreen_init (me.get(),
+								 my d_drawingArea -> d_widget,
+								 my d_drawingArea -> d_widget);
 	#else
 		#if gtk
-			Graphics_init (me, Gui_getResolution (my d_drawingArea -> d_widget));
-			GraphicsScreen_init (me, GTK_WIDGET (my d_drawingArea -> d_widget), GTK_WIDGET (my d_drawingArea -> d_widget));
+			Graphics_init (me.get(), Gui_getResolution (my d_drawingArea -> d_widget));
+			GraphicsScreen_init (me.get(), GTK_WIDGET (my d_drawingArea -> d_widget), GTK_WIDGET (my d_drawingArea -> d_widget));
 		#elif motif
-			Graphics_init (me, Gui_getResolution (my d_drawingArea -> d_widget));
-			GraphicsScreen_init (me, XtDisplay (my d_drawingArea -> d_widget), XtWindow (my d_drawingArea -> d_widget));
+			Graphics_init (me.get(), Gui_getResolution (my d_drawingArea -> d_widget));
+			GraphicsScreen_init (me.get(), XtDisplay (my d_drawingArea -> d_widget), XtWindow (my d_drawingArea -> d_widget));
 		#endif
 	#endif
 
@@ -601,38 +568,37 @@ Graphics Graphics_create_xmdrawingarea (GuiDrawingArea w) {
 		gtk_widget_get_allocation (GTK_WIDGET (my d_drawingArea -> d_widget), & allocation);
 		// HIER WAS IK
 		trace (U"requested ", realsize.width, U" x ", realsize.height, U", allocated ", allocation.width, U" x ", allocation.height);
-		Graphics_setWsViewport ((Graphics) me, 0, realsize.width, 0, realsize.height);
+		Graphics_setWsViewport (me.get(), 0.0, realsize.width, 0.0, realsize.height);
 	#elif motif
-		XtVaGetValues (my d_drawingArea -> d_widget, XmNwidth, & width, XmNheight, & height, NULL);
-		Graphics_setWsViewport ((Graphics) me, 0, width, 0, height);
+		XtVaGetValues (my d_drawingArea -> d_widget, XmNwidth, & width, XmNheight, & height, nullptr);
+		Graphics_setWsViewport (me.get(), 0.0, width, 0.0, height);
     #elif cocoa
         NSView *view = (NSView *)my d_drawingArea -> d_widget;
         NSRect bounds = [view bounds];
-        Graphics_setWsViewport ((Graphics) me, 0, bounds.size.width, 0, bounds.size.height);
+        Graphics_setWsViewport (me.get(), 0.0, bounds.size.width, 0.0, bounds.size.height);
 	#endif
-	#if mac && useCarbon
-		XtAddCallback (my d_drawingArea -> d_widget, XmNmoveCallback, cb_move, (XtPointer) me);
-	#endif
-	return (Graphics) me;
+	return me.move();
 }
 
-Graphics Graphics_create_pngfile (MelderFile file, int resolution,
+autoGraphics Graphics_create_pngfile (MelderFile file, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches)
 {
 	autoGraphicsScreen me = Thing_new (GraphicsScreen);
 	my screen = true;
 	my yIsZeroAtTheTop = true;
-	#ifdef macintosh
+	#if win
+		my d_useGdiplus = _GraphicsWindows_tryToInitializeGdiPlus ();
+	#elif mac
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
-	Graphics_init (me.peek(), resolution);
+	Graphics_init (me.get(), resolution);
 	my d_isPng = true;
 	my d_file = *file;
 	my d_x1DC = my d_x1DCmin = 0;
 	my d_x2DC = my d_x2DCmax = (x2inches - x1inches) * resolution;
 	my d_y1DC = my d_y1DCmin = 0;
 	my d_y2DC = my d_y2DCmax = (y2inches - y1inches) * resolution;
-	Graphics_setWsWindow ((Graphics) me.peek(), x1inches, x2inches, y1inches, y2inches);
+	Graphics_setWsWindow (me.get(), x1inches, x2inches, y1inches, y2inches);
 	#if gtk
 		my d_cairoSurface = cairo_image_surface_create (CAIRO_FORMAT_RGB24,
 			(x2inches - x1inches) * resolution, (y2inches - y1inches) * resolution);
@@ -650,10 +616,10 @@ Graphics Graphics_create_pngfile (MelderFile file, int resolution,
 		long stride = width * 4;
 		stride = (stride + 15) & ~15;   // CommonCode/AppDrawing.c: "a multiple of 16 bytes, for best performance"
 		my d_bits = Melder_malloc (uint8_t, stride * height);
-		static CGColorSpaceRef colourSpace = NULL;
-		if (colourSpace == NULL) {
+		static CGColorSpaceRef colourSpace = nullptr;
+		if (! colourSpace) {
 			colourSpace = CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB);
-			Melder_assert (colourSpace != NULL);
+			Melder_assert (colourSpace);
 		}
 		my d_macGraphicsContext = CGBitmapContextCreate (my d_bits,
 			width, height,
@@ -661,7 +627,7 @@ Graphics Graphics_create_pngfile (MelderFile file, int resolution,
 			stride,
 			colourSpace,
 			kCGImageAlphaPremultipliedLast);
-    	if (my d_macGraphicsContext == NULL)
+    	if (! my d_macGraphicsContext)
 			Melder_throw (U"Could not create PNG file ", file, U".");
 		CGRect rect = CGRectMake (0, 0, width, height);
 		CGContextSetAlpha (my d_macGraphicsContext, 1.0);
@@ -671,15 +637,15 @@ Graphics Graphics_create_pngfile (MelderFile file, int resolution,
 		CGContextTranslateCTM (my d_macGraphicsContext, 0, height);
 		CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
 	#elif win
-		my metafile = TRUE;
-		HDC screenDC = GetDC (NULL);
+		my metafile = true;
+		HDC screenDC = GetDC (nullptr);
 		my d_gdiGraphicsContext = CreateCompatibleDC (screenDC);
 		trace (U"d_gdiGraphicsContext ", Melder_pointer (my d_gdiGraphicsContext));
-		Melder_assert (my d_gdiGraphicsContext != NULL);
+		Melder_assert (my d_gdiGraphicsContext);
 		my d_gdiBitmap = CreateCompatibleBitmap (screenDC, (x2inches - x1inches) * resolution, (y2inches - y1inches) * resolution);
 		trace (U"d_gdiBitmap ", Melder_pointer (my d_gdiBitmap));
-		Melder_assert (my d_gdiBitmap != NULL);
-		ReleaseDC (NULL, screenDC);
+		Melder_assert (my d_gdiBitmap);
+		ReleaseDC (nullptr, screenDC);
 		SelectObject (my d_gdiGraphicsContext, my d_gdiBitmap);
 		trace (U"bitmap selected into device context");
 		my resolution = resolution;
@@ -696,10 +662,10 @@ Graphics Graphics_create_pngfile (MelderFile file, int resolution,
 		SelectPen (my d_gdiGraphicsContext, GetStockPen (BLACK_PEN));
 		SelectBrush (my d_gdiGraphicsContext, GetStockBrush (NULL_BRUSH));
 	#endif
-	return (Graphics) me.transfer();
+	return me.move();
 }
 
-Graphics Graphics_create_pdffile (MelderFile file, int resolution,
+autoGraphics Graphics_create_pdffile (MelderFile file, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches)
 {
 	autoGraphicsScreen me = Thing_new (GraphicsScreen);
@@ -708,7 +674,7 @@ Graphics Graphics_create_pdffile (MelderFile file, int resolution,
 	#ifdef macintosh
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
-	Graphics_init (me.peek(), resolution);
+	Graphics_init (me.get(), resolution);
 	#if gtk
 		my d_cairoSurface = cairo_pdf_surface_create (Melder_peek32to8 (file -> path),
 			(NUMdefined (x1inches) ? x2inches - x1inches : x2inches) * 72.0,
@@ -718,30 +684,30 @@ Graphics Graphics_create_pdffile (MelderFile file, int resolution,
 		my d_x2DC = my d_x2DCmax = (NUMdefined (x1inches) ?  7.5 : x2inches) * resolution;
 		my d_y1DC = my d_y1DCmin = 0;
 		my d_y2DC = my d_y2DCmax = (NUMdefined (y1inches) ? 11.0 : y2inches) * resolution;
-		Graphics_setWsWindow ((Graphics) me.peek(),
+		Graphics_setWsWindow (me.get(),
 			NUMdefined (x1inches) ? 0.0 : 0.0, NUMdefined (x1inches) ?  7.5 : x2inches,
 			NUMdefined (y1inches) ? 1.0 : 0.0, NUMdefined (y1inches) ? 12.0 : y2inches);
 		cairo_scale (my d_cairoGraphicsContext, 72.0 / resolution, 72.0 / resolution);
 	#elif mac
-		CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (CFStringRef) Melder_peek32toCfstring (file -> path), kCFURLPOSIXPathStyle, false);
+		CFURLRef url = CFURLCreateWithFileSystemPath (nullptr, (CFStringRef) Melder_peek32toCfstring (file -> path), kCFURLPOSIXPathStyle, false);
 		CGRect rect = CGRectMake (0, 0,
 			(NUMdefined (x1inches) ? x2inches - x1inches : x2inches) * 72.0,
 			(NUMdefined (y1inches) ? y2inches - y1inches : y2inches) * 72.0);   // don't tire PDF viewers with funny origins
 		CFStringRef key = (CFStringRef) Melder_peek32toCfstring (U"Creator");
 		CFStringRef value = (CFStringRef) Melder_peek32toCfstring (U"Praat");
 		CFIndex numberOfValues = 1;
-		CFDictionaryRef dictionary = CFDictionaryCreate (NULL, (const void **) & key, (const void **) & value, numberOfValues,
+		CFDictionaryRef dictionary = CFDictionaryCreate (nullptr, (const void **) & key, (const void **) & value, numberOfValues,
 			& kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks);
 		my d_macGraphicsContext = CGPDFContextCreateWithURL (url, & rect, dictionary);
 		CFRelease (url);
 		CFRelease (dictionary);
-    	if (my d_macGraphicsContext == NULL)
+    	if (! my d_macGraphicsContext)
 			Melder_throw (U"Could not create PDF file ", file, U".");
 		my d_x1DC = my d_x1DCmin = 0;
 		my d_x2DC = my d_x2DCmax = (NUMdefined (x1inches) ?  7.5 : x2inches) * resolution;
 		my d_y1DC = my d_y1DCmin = 0;
 		my d_y2DC = my d_y2DCmax = (NUMdefined (y1inches) ? 11.0 : y2inches) * resolution;
-		Graphics_setWsWindow ((Graphics) me.peek(),
+		Graphics_setWsWindow (me.get(),
 			NUMdefined (x1inches) ? 0.0 : 0.0, NUMdefined (x1inches) ?  7.5 : x2inches,
 			NUMdefined (y1inches) ? 1.0 : 0.0, NUMdefined (y1inches) ? 12.0 : y2inches);
 		CGContextBeginPage (my d_macGraphicsContext, & rect);
@@ -751,18 +717,18 @@ Graphics Graphics_create_pdffile (MelderFile file, int resolution,
 			(NUMdefined (y1inches) ? (12.0 - y1inches) : y2inches) * resolution);
 		CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
 	#endif
-	return (Graphics) me.transfer();
+	return me.move();
 }
-Graphics Graphics_create_pdf (void *context, int resolution,
+autoGraphics Graphics_create_pdf (void *context, int resolution,
 	double x1inches, double x2inches, double y1inches, double y2inches)
 {
-	GraphicsScreen me = Thing_new (GraphicsScreen);
+	autoGraphicsScreen me = Thing_new (GraphicsScreen);
 	my screen = true;
 	my yIsZeroAtTheTop = true;
 	#ifdef macintosh
 		_GraphicsMacintosh_tryToInitializeQuartz ();
 	#endif
-	Graphics_init (me, resolution);
+	Graphics_init (me.get(), resolution);
 	#ifdef macintosh
 		my d_macGraphicsContext = static_cast <CGContext *> (context);
 		CGRect rect = CGRectMake (0, 0, (x2inches - x1inches) * 72, (y2inches - y1inches) * 72);   // don't tire PDF viewers with funny origins
@@ -770,14 +736,14 @@ Graphics Graphics_create_pdf (void *context, int resolution,
 		my d_x2DC = my d_x2DCmax = 7.5 * resolution;
 		my d_y1DC = my d_y1DCmin = 0;
 		my d_y2DC = my d_y2DCmax = 11.0 * resolution;
-		Graphics_setWsWindow ((Graphics) me, 0, 7.5, 1.0, 12.0);
-    	Melder_assert (my d_macGraphicsContext != NULL);
+		Graphics_setWsWindow (me.get(), 0, 7.5, 1.0, 12.0);
+    	Melder_assert (my d_macGraphicsContext);
 		CGContextBeginPage (my d_macGraphicsContext, & rect);
 		CGContextScaleCTM (my d_macGraphicsContext, 72.0 / resolution, 72.0 / resolution);
 		CGContextTranslateCTM (my d_macGraphicsContext, - x1inches * resolution, (12.0 - y1inches) * resolution);
 		CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
 	#endif
-	return (Graphics) me;
+	return me.move();
 }
 
 #if cairo
@@ -791,45 +757,23 @@ Graphics Graphics_create_pdf (void *context, int resolution,
 
 #if mac
 	void GraphicsQuartz_initDraw (GraphicsScreen me) {
-		#if useCarbon
-			if (my d_macPort) {
-				QDBeginCGContext (my d_macPort, & my d_macGraphicsContext);
-				//CGContextSetAlpha (my macGraphicsContext, 1.0);
-				//CGContextSetAllowsAntialiasing (my macGraphicsContext, false);
-				if (my d_drawingArea != NULL) {
-					int shellHeight = GuiMac_clipOn_graphicsContext (my d_drawingArea -> d_widget, my d_macGraphicsContext);
-					CGContextTranslateCTM (my d_macGraphicsContext, 0, shellHeight);
-				} else if (my printer) {
-					CGContextTranslateCTM (my d_macGraphicsContext, 0, my d_y2DC - my d_y1DC);
-				}
-				CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
-			}
-        #else
-            if (my d_macView) {            
-                [my d_macView lockFocus];
-				//if (! my printer) {
-					my d_macGraphicsContext = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
-				//}
-                Melder_assert (my d_macGraphicsContext != NULL);
-				if (my printer) {
-					//CGContextTranslateCTM (my d_macGraphicsContext, 0, [my d_macView bounds]. size. height);
-					//CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
-				}
+		if (my d_macView) {
+			[my d_macView lockFocus];
+			//if (! my printer) {
+				my d_macGraphicsContext = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
+			//}
+			Melder_assert (my d_macGraphicsContext);
+			if (my printer) {
+				//CGContextTranslateCTM (my d_macGraphicsContext, 0, [my d_macView bounds]. size. height);
+				//CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
 			}
-		#endif
+		}
 	}
 	void GraphicsQuartz_exitDraw (GraphicsScreen me) {
-		#if useCarbon
-			if (my d_macPort) {
-				CGContextSynchronize (my d_macGraphicsContext);
-				QDEndCGContext (my d_macPort, & my d_macGraphicsContext);
-			}
-        #else
-            if (my d_macView) {
-                //CGContextSynchronize (my d_macGraphicsContext);   // BUG: should not be needed
-                [my d_macView unlockFocus];
-            }
-		#endif
+		if (my d_macView) {
+			//CGContextSynchronize (my d_macGraphicsContext);   // BUG: should not be needed
+			[my d_macView unlockFocus];
+		}
 	}
 #endif
 
diff --git a/sys/Graphics_altitude.cpp b/sys/Graphics_altitude.cpp
index 98fc1b6..d33ded8 100644
--- a/sys/Graphics_altitude.cpp
+++ b/sys/Graphics_altitude.cpp
@@ -1,26 +1,19 @@
 /* Graphics_altitude.cpp
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2008/01/19 double
- * pb 2011/03/17 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -45,17 +38,17 @@ static double *x, *y;
 static int closed;
 static double dx, dy, xoff, yoff;
 
-static int note (double **z, double height, int row, int col, int ori, int forget) {
+static int note (double **z, double height, int row, int col, int ori, int pleaseForget) {
 	++ numberOfPoints;
 	Melder_assert (numberOfPoints <= MAXALTPATH);
 	if (ori == 3) { row ++; ori = 1; } else if (ori == 2) { col ++; ori = 4; }
 	if (ori == 1) {
-		if (forget) right [row - row1] [col - col1] = 1;
+		if (pleaseForget) right [row - row1] [col - col1] = 1;
 		x [numberOfPoints] = xoff +
 			(col + (height - z [row] [col]) / (z [row] [col + 1] - z [row] [col])) * dx;
 		y [numberOfPoints] = yoff + row * dy;
 	} else {   /* ori == 4 */
-		if (forget) below [row - row1] [col - col1] = 1;
+		if (pleaseForget) below [row - row1] [col - col1] = 1;
 		x [numberOfPoints] = xoff + col * dx;
 		y [numberOfPoints] = yoff +
 			(row + (height - z [row] [col]) / (z [row + 1] [col] - z [row] [col])) * dy;
diff --git a/sys/Graphics_colour.cpp b/sys/Graphics_colour.cpp
index 2dbbd6a..24f52fc 100644
--- a/sys/Graphics_colour.cpp
+++ b/sys/Graphics_colour.cpp
@@ -1,39 +1,19 @@
 /* Graphics_colour.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/05/28 GPL
- * pb 2004/09/09 Xwin: highlight2
- * sdk 2008/03/24 cairo
- * pb 2009/05/09 pink
- * pb 2009/07/09 RGB colours
- * pb 2009/12/10 colours identical on all platforms
- * pb 2009/12/14 Graphics_standardColourToRGBColour
- * pb 2009/12/20 gotten rid of numbered standard colours
- * fb 2010/03/01 fix cairo in highlight2 ()
- * pb 2010/05/12 highlighting in GDK instead of Cairo because of the availability of a XOR mode
- * pb 2010/05/12 xorOn in GDK instead of Cairo because of the availability of a XOR mode
- * pb 2010/06/05 set my colour in setColour
- * pb 2011/01/15 Windows: inverted the colour in XOR mode
- * pb 2011/03/17 C++
- * pb 2013/08/27 Cocoa: trick: triple kCGBlendModeDifference approximates coloured XOR
- * pb 2014/02/10 Cocoa: trick: use window cache for unhighlighting
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -92,9 +72,6 @@ const char32 * Graphics_Colour_name (Graphics_Colour colour) {
 
 #if mac
 	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
 #endif
 
 #define wdx(x)  ((x) * my scaleX + my deltaX)
@@ -104,7 +81,7 @@ void _Graphics_setColour (Graphics graphics, Graphics_Colour colour) {
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			if (my d_cairoGraphicsContext == NULL) return;
+			if (! my d_cairoGraphicsContext) return;
 			cairo_set_source_rgb (my d_cairoGraphicsContext, colour. red, colour. green, colour. blue);
 		#elif win
 			my d_winForegroundColour = RGB (colour. red * 255, colour. green * 255, colour. blue * 255);
@@ -141,7 +118,7 @@ void _Graphics_setGrey (Graphics graphics, double fgrey) {
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			if (my d_cairoGraphicsContext == NULL) return;
+			if (! my d_cairoGraphicsContext) return;
 			if (fgrey < 0.0) fgrey = 0.0; else if (fgrey > 1.0) fgrey = 1.0;
 			cairo_set_source_rgb (my d_cairoGraphicsContext, fgrey, fgrey, fgrey);
 		#elif win
@@ -174,14 +151,14 @@ static void highlight (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			if (my d_cairoGraphicsContext == NULL) return;
+			if (! my d_cairoGraphicsContext) return;
 			int width = x2DC - x1DC, height = y1DC - y2DC;
 			if (width <= 0 || height <= 0) return;
 			#if ALLOW_GDK_DRAWING
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_XOR);
 				GdkColor pinkXorWhite = { 0, 0x0000, 0x4000, 0x4000 }, black = { 0, 0x0000, 0x0000, 0x0000 };
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & pinkXorWhite);
-				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, TRUE, x1DC, y2DC, width, height);
+				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, true, x1DC, y2DC, width, height);
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & black);
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_COPY);
 				gdk_flush ();
@@ -191,7 +168,7 @@ static void highlight (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 			if (width <= 0 || height <= 0) return;
 			GuiCocoaDrawingArea *drawingArea = (GuiCocoaDrawingArea *) my d_drawingArea -> d_widget;
 			if (drawingArea) {
-				bool cacheImageInRectWillWork = ( Melder_systemVersion < 101100 );
+				bool cacheImageInRectWillWork = ( Melder_systemVersion < 101100 || Melder_systemVersion > 101104 );
 				if (cacheImageInRectWillWork) {
 					NSView *nsView = my d_macView;
 					if (direction == 1) {   // forward
@@ -205,20 +182,21 @@ static void highlight (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 						[drawingArea lockFocus];
 						CGContextRef context = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
 						CGContextSaveGState (context);
-						CGContextSetBlendMode (context, kCGBlendModeDifference);
-						//CGContextSetBlendMode (context, kCGBlendModeDarken);
+						//CGContextSetBlendMode (context, kCGBlendModeDifference);
+						CGContextSetBlendMode (context, kCGBlendModeDarken);
 						CGContextSetShouldAntialias (context, false);
 						NSColor *colour = [[NSColor selectedTextBackgroundColor] colorUsingColorSpaceName: NSDeviceRGBColorSpace];
 						double red = 0.5 + 0.5 * colour.redComponent, green = 0.5 + 0.5 * colour.greenComponent, blue = 0.5 + 0.5 * colour.blueComponent;
-						CGContextSetRGBFillColor (context, 1.0 - red, 1.0 - green, 1.0 - blue, 1.0);
-						//CGContextSetRGBFillColor (context, red, green, blue, 1.0);
+						//CGContextSetRGBFillColor (context, 1.0 - red, 1.0 - green, 1.0 - blue, 1.0);
+						CGContextSetRGBFillColor (context, red, green, blue, 1.0);
 						CGContextFillRect (context, rect);
 						CGContextRestoreGState (context);
 						[drawingArea unlockFocus];
+						//GuiShell_drain (nullptr);
 					} else {   // backward
 						//[drawingArea lockFocus];
 						[[nsView window] restoreCachedImage];
-						[[nsView window] discardCachedImage];
+						//[[nsView window] discardCachedImage];
 						//[drawingArea unlockFocus];
 						//[[nsView window] flushWindow];
 						//[[nsView window] flushWindowIfNeeded];
@@ -249,14 +227,6 @@ static void highlight (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 					[drawingArea unlockFocus];
 				}
 			}
-        #elif mac
-			Rect rect;
-			if (my d_drawingArea) GuiMac_clipOn (my d_drawingArea -> d_widget);
-			SetRect (& rect, x1DC, y2DC, x2DC, y1DC);
-			SetPort (my d_macPort);
-			LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);   // see IM V-61
-			InvertRect (& rect);
-			if (my d_drawingArea) GuiMac_clipOff ();
 		#elif win
 			static HBRUSH highlightBrush;
 			RECT rect;
@@ -292,17 +262,17 @@ static void highlight2 (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			if (my d_cairoGraphicsContext == NULL) return;
+			if (! my d_cairoGraphicsContext) return;
 			int width = x2DC - x1DC, height = y1DC - y2DC;
 			if (width <= 0 || height <= 0) return;
 			#if ALLOW_GDK_DRAWING
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_XOR);
 				GdkColor pinkXorWhite = { 0, 0x0000, 0x4000, 0x4000 }, black = { 0, 0x0000, 0x0000, 0x0000 };
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & pinkXorWhite);
-				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, TRUE, x1DC, y2DC, x2DC - x1DC, y2DC_inner - y2DC); // upper
-				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, TRUE, x1DC, y2DC_inner, x1DC_inner - x1DC, y1DC_inner - y2DC_inner); // left part
-				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, TRUE, x2DC_inner, y2DC_inner, x2DC - x2DC_inner, y1DC_inner - y2DC_inner); // right part
-				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, TRUE, x1DC, y1DC_inner, x2DC - x1DC, y1DC - y1DC_inner); // lower
+				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, true, x1DC, y2DC, x2DC - x1DC, y2DC_inner - y2DC); // upper
+				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, true, x1DC, y2DC_inner, x1DC_inner - x1DC, y1DC_inner - y2DC_inner); // left part
+				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, true, x2DC_inner, y2DC_inner, x2DC - x2DC_inner, y1DC_inner - y2DC_inner); // right part
+				gdk_draw_rectangle (my d_window, my d_gdkGraphicsContext, true, x1DC, y1DC_inner, x2DC - x1DC, y1DC - y1DC_inner); // lower
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & black);
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_COPY);
 				gdk_flush ();
@@ -310,7 +280,7 @@ static void highlight2 (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 		#elif cocoa
 			GuiCocoaDrawingArea *drawingArea = (GuiCocoaDrawingArea *) my d_drawingArea -> d_widget;
 			if (drawingArea) {
-				bool cacheImageInRectWillWork = ( Melder_systemVersion < 101100 );
+				bool cacheImageInRectWillWork = ( Melder_systemVersion < 101100 || Melder_systemVersion > 101104 );
 				if (cacheImageInRectWillWork) {
 					NSView *nsView = my d_macView;
 					if (direction == 1) {
@@ -340,9 +310,9 @@ static void highlight2 (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 					CGContextFillRect (my d_macGraphicsContext, leftRect);
 					CGContextFillRect (my d_macGraphicsContext, rightRect);
 					CGContextFillRect (my d_macGraphicsContext, lowerRect);
-				} else {
+				} else if (1) {
 					/*
-					 * An older, suboptimal method.
+						An older, suboptimal method.
 					 */
 					CGContextSetBlendMode (my d_macGraphicsContext, kCGBlendModeDifference);
 					if (direction == 1) {
@@ -363,27 +333,20 @@ static void highlight2 (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 						CGContextFillRect (my d_macGraphicsContext, rightRect);
 						CGContextFillRect (my d_macGraphicsContext, lowerRect);
 					}
+				} else if (1) {
+					/*
+						This is true XOR.
+					*/
+					CGContextSetBlendMode (my d_macGraphicsContext, kCGBlendModeDifference);
+					CGContextSetRGBFillColor (my d_macGraphicsContext, 1.0, 1.0, 1.0, 1.0);
+					CGContextFillRect (my d_macGraphicsContext, upperRect);
+					CGContextFillRect (my d_macGraphicsContext, leftRect);
+					CGContextFillRect (my d_macGraphicsContext, rightRect);
+					CGContextFillRect (my d_macGraphicsContext, lowerRect);
 				}
 				CGContextRestoreGState (my d_macGraphicsContext);
 				[drawingArea unlockFocus];
 			}
-        #elif mac
-			Rect rect;
-			if (my d_drawingArea) GuiMac_clipOn (my d_drawingArea -> d_widget);
-			SetPort (my d_macPort);
-			LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-			SetRect (& rect, x1DC, y2DC, x2DC, y2DC_inner);
-			InvertRect (& rect);
-			LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-			SetRect (& rect, x1DC, y2DC_inner, x1DC_inner, y1DC_inner);
-			InvertRect (& rect);
-			LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-			SetRect (& rect, x2DC_inner, y2DC_inner, x2DC, y1DC_inner);
-			InvertRect (& rect);
-			LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-			SetRect (& rect, x1DC, y1DC_inner, x2DC, y1DC);
-			InvertRect (& rect);
-			if (my d_drawingArea) GuiMac_clipOff ();
 		#elif win
 			static HBRUSH highlightBrush;
 			if (! highlightBrush)
@@ -397,7 +360,7 @@ static void highlight2 (Graphics graphics, long x1DC, long x2DC, long y1DC, long
 			Rectangle (my d_gdiGraphicsContext, x1DC, y1DC_inner, x2DC + 1, y1DC + 1);
 			SetROP2 (my d_gdiGraphicsContext, R2_COPYPEN);
 			SelectPen (my d_gdiGraphicsContext, GetStockPen (BLACK_PEN));
-			SelectBrush (my d_gdiGraphicsContext, GetStockBrush (NULL_BRUSH));   /* Superfluous? */
+			SelectBrush (my d_gdiGraphicsContext, GetStockBrush (NULL_BRUSH));   // superfluous?
 		#endif
 	}
 }
@@ -422,10 +385,10 @@ void Graphics_xorOn (Graphics graphics, Graphics_Colour colour) {
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			GdkColor colourXorWhite = { 0,
-				(uint16_t) ((uint16_t) (colour. red * 65535.0) ^ (uint16_t) 0xFFFF),
-				(uint16_t) ((uint16_t) (colour. green * 65535.0) ^ (uint16_t) 0xFFFF),
-				(uint16_t) ((uint16_t) (colour. blue * 65535.0) ^ (uint16_t) 0xFFFF) };
+			GdkColor colourXorWhite { 0,
+				(uint16) ((uint16) (colour. red   * 65535.0) ^ (uint16) 0xFFFF),
+				(uint16) ((uint16) (colour. green * 65535.0) ^ (uint16) 0xFFFF),
+				(uint16) ((uint16) (colour. blue  * 65535.0) ^ (uint16) 0xFFFF) };
 			#if ALLOW_GDK_DRAWING
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & colourXorWhite);
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_XOR);
@@ -436,13 +399,11 @@ void Graphics_xorOn (Graphics graphics, Graphics_Colour colour) {
 			#endif
 		#elif win
 			SetROP2 (my d_gdiGraphicsContext, R2_XORPEN);
-			colour. red = ((uint16_t) (colour. red * 65535.0) ^ 0xFFFF) / 65535.0;
-			colour. green = ((uint16_t) (colour. green * 65535.0) ^ 0xFFFF) / 65535.0;
-			colour. blue = ((uint16_t) (colour. blue * 65535.0) ^ 0xFFFF) / 65535.0;
+			colour. red   = ((uint16) (colour. red   * 65535.0) ^ 0xFFFF) / 65535.0;
+			colour. green = ((uint16) (colour. green * 65535.0) ^ 0xFFFF) / 65535.0;
+			colour. blue  = ((uint16) (colour. blue  * 65535.0) ^ 0xFFFF) / 65535.0;
 			_Graphics_setColour (me, colour);
 		#elif cocoa
-		#elif mac
-			//CGContextSetBlendMode (my macGraphicsContext, kCGBlendModeDifference);
 		#endif
 		my duringXor = true;
 		if (graphics -> recording) { op (XOR_ON, 3); put (colour. red); put (colour. green); put (colour. blue); }
@@ -453,7 +414,7 @@ void Graphics_xorOff (Graphics graphics) {
 	if (graphics -> screen) {
 		GraphicsScreen me = static_cast <GraphicsScreen> (graphics);
 		#if cairo
-			GdkColor black = { 0, 0x0000, 0x0000, 0x0000 };
+			GdkColor black { 0, 0x0000, 0x0000, 0x0000 };
 			#if ALLOW_GDK_DRAWING
 				gdk_gc_set_rgb_fg_color (my d_gdkGraphicsContext, & black);
 				gdk_gc_set_function (my d_gdkGraphicsContext, GDK_COPY);
@@ -467,8 +428,6 @@ void Graphics_xorOff (Graphics graphics) {
 			_Graphics_setColour (me, my colour);
 		#elif cocoa
 			//Graphics_flushWs (graphics);   // to undraw the last drawing
-		#elif mac
-			//CGContextSetBlendMode (my macGraphicsContext, kCGBlendModeNormal);
 		#endif
 		my duringXor = false;
 		if (graphics -> recording) { op (XOR_OFF, 0); }
diff --git a/sys/Graphics_enums.h b/sys/Graphics_enums.h
index 2ba16a2..8dba7b6 100644
--- a/sys/Graphics_enums.h
+++ b/sys/Graphics_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2007,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kGraphics_font, 0)
diff --git a/sys/Graphics_grey.cpp b/sys/Graphics_grey.cpp
index 0da4cd7..77d54c6 100644
--- a/sys/Graphics_grey.cpp
+++ b/sys/Graphics_grey.cpp
@@ -2,27 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1994/10/13
- * pb 1999/09/09 bug fix: ori = 1 --> ori == 1
- * pb 2002/03/07 GPL
- * pb 2008/01/19 double
- * pb 2011/03/17 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <stdlib.h>
@@ -243,7 +234,7 @@ static void makeClosedContour (int row0, int col0, int ori0) {
 
 	{
 		int i;
-		double xmin = 1e300, xmax = -1e300, ymin = 1e300, ymax = -1e300;
+		double xmin = 1e308, xmax = -1e308, ymin = 1e308, ymax = -1e308;
 		c -> grey = up ? iBorder + 1 : iBorder;
 		for (i = 1; i <= numberOfPoints; i ++) {
 			c -> x [i] = x [i];
@@ -260,7 +251,7 @@ static void makeClosedContour (int row0, int col0, int ori0) {
 	}
 }
 
-static void smallGrey (void) {
+static void smallGrey () {
 	int row, col, i;
 	numberOfEdgeContours = 0;
 	numberOfClosedContours = 0;
diff --git a/sys/Graphics_image.cpp b/sys/Graphics_image.cpp
index 6752d9f..fbd8fd7 100644
--- a/sys/Graphics_image.cpp
+++ b/sys/Graphics_image.cpp
@@ -1,33 +1,19 @@
 /* Graphics_image.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2007/04/25 better image drawing on the Mac
- * pb 2007/08/03 Quartz
- * pb 2008/01/19 double
- * pb 2009/08/10 image from file
- * fb 2010/02/24 GTK
- * pb 2011/03/17 C++
- * pb 2012/04/21 on PostScript, minimal image resolution raised from 106 to 300 dpi
- * pb 2012/05/08 erased all QuickDraw
- * pb 2013/10/22 colour
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -201,7 +187,7 @@ static void _GraphicsScreen_cellArrayOrImage (GraphicsScreen me, double **z_floa
 			bitmapInfo. header.biClrUsed = 0;
 			bitmapInfo. header.biClrImportant = 0;
 			bitmap = CreateDIBSection (my d_gdiGraphicsContext /* ignored */, (CONST BITMAPINFO *) & bitmapInfo,
-				DIB_RGB_COLORS, (VOID **) & bits, NULL, 0);
+				DIB_RGB_COLORS, (VOID **) & bits, nullptr, 0);
 		#elif mac
 			long bytesPerRow = (clipx2 - clipx1) * 4;
 			Melder_assert (bytesPerRow > 0);
@@ -275,7 +261,7 @@ static void _GraphicsScreen_cellArrayOrImage (GraphicsScreen me, double **z_floa
 					} \
 				}
 		#else
-			#define ROW_START_ADDRESS  NULL
+			#define ROW_START_ADDRESS  nullptr
 			#define PUT_PIXEL
 		#endif
 		if (interpolate) {
@@ -411,34 +397,34 @@ static void _GraphicsScreen_cellArrayOrImage (GraphicsScreen me, double **z_floa
 			//	bits, (CONST BITMAPINFO *) & bitmapInfo, DIB_RGB_COLORS, SRCCOPY);
 		#elif mac
 			CGImageRef image;
-			static CGColorSpaceRef colourSpace = NULL;
-			if (colourSpace == NULL) {
+			static CGColorSpaceRef colourSpace = nullptr;
+			if (! colourSpace) {
 				colourSpace = CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB);   // used to be kCGColorSpaceUserRGB
-				Melder_assert (colourSpace != NULL);
+				Melder_assert (colourSpace != nullptr);
 			}
 			if (1) {
-				CGDataProviderRef dataProvider = CGDataProviderCreateWithData (NULL,
+				CGDataProviderRef dataProvider = CGDataProviderCreateWithData (nullptr,
 					imageData,
 					bytesPerRow * numberOfRows,
 					_mac_releaseDataCallback   // we need this because we cannot release the image data immediately after drawing,
 						// because in PDF files the imageData has to stay available through EndPage
 				);
-				Melder_assert (dataProvider != NULL);
+				Melder_assert (dataProvider != nullptr);
 				image = CGImageCreate (clipx2 - clipx1, numberOfRows,
-					8, 32, bytesPerRow, colourSpace, kCGImageAlphaNone, dataProvider, NULL, false, kCGRenderingIntentDefault);
+					8, 32, bytesPerRow, colourSpace, kCGImageAlphaNone, dataProvider, nullptr, false, kCGRenderingIntentDefault);
 				CGDataProviderRelease (dataProvider);
 			} else if (0) {
-				Melder_assert (CGBitmapContextCreate != NULL);
+				Melder_assert (CGBitmapContextCreate != nullptr);
 				CGContextRef bitmaptest = CGBitmapContextCreate (imageData, 100, 100,
 					8, 800, colourSpace, 0);
-				Melder_assert (bitmaptest != NULL);
-				CGContextRef bitmap = CGBitmapContextCreate (NULL/*imageData*/, clipx2 - clipx1, numberOfRows,
+				Melder_assert (bitmaptest != nullptr);
+				CGContextRef bitmap = CGBitmapContextCreate (nullptr /* imageData */, clipx2 - clipx1, numberOfRows,
 					8, bytesPerRow, colourSpace, kCGImageAlphaLast);
-				Melder_assert (bitmap != NULL);
+				Melder_assert (bitmap != nullptr);
 				image = CGBitmapContextCreateImage (bitmap);
 				// release bitmap?
 			}
-			Melder_assert (image != NULL);
+			Melder_assert (image != nullptr);
 			GraphicsQuartz_initDraw (me);
 			CGContextDrawImage (my d_macGraphicsContext, CGRectMake (clipx1, clipy2, clipx2 - clipx1, clipy1 - clipy2), image);
 			GraphicsQuartz_exitDraw (me);
@@ -688,27 +674,27 @@ static void cellArrayOrImage (Graphics me, double **z_float, double_rgbt **z_rgb
 
 void Graphics_cellArray (Graphics me, double **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, double minimum, double maximum)
-{ cellArrayOrImage (me, z, NULL, NULL, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, FALSE); }
+{ cellArrayOrImage (me, z, nullptr, nullptr, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, false); }
 
 void Graphics_cellArray_colour (Graphics me, double_rgbt **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, double minimum, double maximum)
-{ cellArrayOrImage (me, NULL, z, NULL, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, FALSE); }
+{ cellArrayOrImage (me, nullptr, z, nullptr, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, false); }
 
 void Graphics_cellArray8 (Graphics me, unsigned char **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, unsigned char minimum, unsigned char maximum)
-{ cellArrayOrImage (me, NULL, NULL, z, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, FALSE); }
+{ cellArrayOrImage (me, nullptr, nullptr, z, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, false); }
 
 void Graphics_image (Graphics me, double **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, double minimum, double maximum)
-{ cellArrayOrImage (me, z, NULL, NULL, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, TRUE); }
+{ cellArrayOrImage (me, z, nullptr, nullptr, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, true); }
 
 void Graphics_image_colour (Graphics me, double_rgbt **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, double minimum, double maximum)
-{ cellArrayOrImage (me, NULL, z, NULL, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, TRUE); }
+{ cellArrayOrImage (me, nullptr, z, nullptr, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, true); }
 
 void Graphics_image8 (Graphics me, unsigned char **z, long ix1, long ix2, double x1WC, double x2WC,
 	long iy1, long iy2, double y1WC, double y2WC, unsigned char minimum, unsigned char maximum)
-{ cellArrayOrImage (me, NULL, NULL, z, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, TRUE); }
+{ cellArrayOrImage (me, nullptr, nullptr, z, ix1, ix2, x1WC, x2WC, iy1, iy2, y1WC, y2WC, minimum, maximum, true); }
 
 static void _GraphicsScreen_imageFromFile (GraphicsScreen me, const char32 *relativeFileName, double x1, double x2, double y1, double y2) {
 	long x1DC = wdx (x1), x2DC = wdx (x2), y1DC = wdy (y1), y2DC = wdy (y2);
@@ -737,7 +723,7 @@ static void _GraphicsScreen_imageFromFile (GraphicsScreen me, const char32 *rela
 					z [iy] [ix]. transparency = photo -> d_transparency -> z [iy] [ix];
 				}
 			}
-			_cellArrayOrImage (me, NULL, z.peek(), NULL,
+			_cellArrayOrImage (me, nullptr, z.peek(), nullptr,
 				1, photo -> nx, x1DC, x2DC, 1, photo -> ny, y1DC, y2DC,
 				0.0, 1.0,
 				//wdx (my d_x1WC), wdx (my d_x2WC), wdy (my d_y1WC), wdy (my d_y2WC),   // in case of clipping
@@ -771,15 +757,15 @@ static void _GraphicsScreen_imageFromFile (GraphicsScreen me, const char32 *rela
 		Melder_relativePathToFile (relativeFileName, & file);
 		char utf8 [500];
 		Melder_str32To8bitFileRepresentation_inline (file. path, utf8);
-		CFStringRef path = CFStringCreateWithCString (NULL, utf8, kCFStringEncodingUTF8);
-		CFURLRef url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, false);
+		CFStringRef path = CFStringCreateWithCString (nullptr, utf8, kCFStringEncodingUTF8);
+		CFURLRef url = CFURLCreateWithFileSystemPath (nullptr, path, kCFURLPOSIXPathStyle, false);
 		CFRelease (path);
-		CGImageSourceRef imageSource = CGImageSourceCreateWithURL (url, NULL);
+		CGImageSourceRef imageSource = CGImageSourceCreateWithURL (url, nullptr);
 		CFRelease (url);
-		if (imageSource != NULL) {
-			CGImageRef image = CGImageSourceCreateImageAtIndex (imageSource, 0, NULL);
+		if (imageSource) {
+			CGImageRef image = CGImageSourceCreateImageAtIndex (imageSource, 0, nullptr);
 			CFRelease (imageSource);
-			if (image != NULL) {
+			if (image) {
 				if (x1 == x2 && y1 == y2) {
 					width = CGImageGetWidth (image), x1DC -= width / 2, x2DC = x1DC + width;
 					height = CGImageGetHeight (image), y2DC -= height / 2, y1DC = y2DC + height;
diff --git a/sys/Graphics_linesAndAreas.cpp b/sys/Graphics_linesAndAreas.cpp
index 49c4b47..be243cf 100644
--- a/sys/Graphics_linesAndAreas.cpp
+++ b/sys/Graphics_linesAndAreas.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -59,10 +58,10 @@ static void psRevertLine (GraphicsPostscript me) {
 		}
 	#endif
 	static void cairoPrepareLine (GraphicsScreen me) {
-		if (my d_cairoGraphicsContext == NULL) return;
-		double dotted_line [] = { 2, 2 };
-		double dashed_line [] = { 6, 2 };
-		double dashed_dotted_line [] = { 6, 2, 2, 2 };
+		if (! my d_cairoGraphicsContext) return;
+		double dotted_line [] { 2.0, 2.0 };
+		double dashed_line [] { 6.0, 2.0 };
+		double dashed_dotted_line [] { 6.0, 2.0, 2.0, 2.0 };
 		cairo_save (my d_cairoGraphicsContext);
 		switch (my lineType) {
 			case Graphics_DOTTED:
@@ -78,9 +77,9 @@ static void psRevertLine (GraphicsPostscript me) {
 		cairo_set_line_width (my d_cairoGraphicsContext, my lineWidth);
 	}
 	static void cairoRevertLine (GraphicsScreen me) {
-		if (my d_cairoGraphicsContext == NULL) return;
+		if (! my d_cairoGraphicsContext) return;
 		if (my lineType >= Graphics_DOTTED) {
-			cairo_set_dash (my d_cairoGraphicsContext, NULL, 0, 0);
+			cairo_set_dash (my d_cairoGraphicsContext, nullptr, 0, 0);
 		}
 		cairo_restore (my d_cairoGraphicsContext);
 	}
@@ -91,13 +90,18 @@ static void psRevertLine (GraphicsPostscript me) {
 		HPEN newPen;
 		int lineWidth_pixels = LINE_WIDTH_IN_PIXELS (me) + 0.5;
 		if (! lineWidth_pixels) lineWidth_pixels = 1;
-		my d_fatNonSolid = my lineType != Graphics_DRAWN && my lineWidth > 1;
+		my d_fatNonSolid = my lineType != Graphics_DRAWN && lineWidth_pixels > 1;
 		if (Melder_debug == 10) {
 			LOGBRUSH brush;
 			brush. lbStyle = BS_SOLID;
 			brush. lbColor = my d_winForegroundColour;
 			brush. lbHatch = my lineType == Graphics_DRAWN ? 0 : my lineType == Graphics_DOTTED ? PS_DOT : my lineType == Graphics_DASHED ? PS_DASH : PS_DASHDOT;
-			newPen = ExtCreatePen (PS_GEOMETRIC, lineWidth_pixels, & brush, 0, NULL);
+			if (my lineType == Graphics_DRAWN) {
+				newPen = ExtCreatePen (PS_GEOMETRIC, lineWidth_pixels, & brush, 0, nullptr);
+			} else {
+				DWORD style [] = { 36, 33 };
+				newPen = ExtCreatePen (PS_GEOMETRIC | PS_USERSTYLE, lineWidth_pixels, & brush, 2, style);
+			}
 		} else {
 			/*newPen = CreatePen (my lineType == Graphics_DRAWN ? PS_SOLID :
 				my lineType == Graphics_DOTTED ? PS_DOT : my lineType == Graphics_DASHED ? PS_DASH : PS_DASHDOT,
@@ -115,7 +119,7 @@ static void psRevertLine (GraphicsPostscript me) {
 	}
 #elif mac
 	static void quartzPrepareLine (GraphicsScreen me) {
-		CGContextSetLineJoin (my d_macGraphicsContext, kCGLineJoinRound);
+		CGContextSetLineJoin (my d_macGraphicsContext, kCGLineJoinBevel);   // much faster than kCGLineJoinRound
 		if (my duringXor) {
 			CGContextSetBlendMode (my d_macGraphicsContext, kCGBlendModeDifference);
 			CGContextSetAllowsAntialiasing (my d_macGraphicsContext, false);
@@ -125,6 +129,7 @@ static void psRevertLine (GraphicsPostscript me) {
 		}
 		double lineWidth_pixels = LINE_WIDTH_IN_PIXELS (me);
 		CGContextSetLineWidth (my d_macGraphicsContext, lineWidth_pixels);
+
 		CGFloat lengths [4];
 		if (my lineType == Graphics_DOTTED)
 			lengths [0] = my resolution > 192 ? my resolution / 100.0 : 2,
@@ -137,7 +142,7 @@ static void psRevertLine (GraphicsPostscript me) {
 			lengths [1] = my resolution > 192 ? my resolution / 50.0 + lineWidth_pixels : 2;
 			lengths [2] = my resolution > 192 ? my resolution / 100.0 : 2;
 			lengths [3] = my resolution > 192 ? my resolution / 50.0 + lineWidth_pixels : 2;
-		CGContextSetLineDash (my d_macGraphicsContext, 0.0, my lineType == Graphics_DRAWN ? NULL : lengths, my lineType == 0 ? 0 : my lineType == Graphics_DASHED_DOTTED ? 4 : 2);
+		CGContextSetLineDash (my d_macGraphicsContext, 0.0, my lineType == Graphics_DRAWN ? nullptr : lengths, my lineType == 0 ? 0 : my lineType == Graphics_DASHED_DOTTED ? 4 : 2);
 	}
 	static void quartzRevertLine (GraphicsScreen me) {
 		if (my duringXor) {
@@ -167,7 +172,7 @@ void structGraphicsScreen :: v_polyline (long numberOfPoints, double *xyDC, bool
 				gdk_flush ();
 			#endif
 		} else {
-			if (our d_cairoGraphicsContext == NULL) return;
+			if (our d_cairoGraphicsContext == nullptr) return;
 			cairoPrepareLine (this);
 			// cairo_new_path (d_cairoGraphicsContext); // move_to() automatically creates a new path
 			cairo_move_to (our d_cairoGraphicsContext, xyDC [0], xyDC [1]);
@@ -270,7 +275,7 @@ void structGraphicsPostscript :: v_polyline (long numberOfPoints, double *xyDC,
 
 void structGraphicsScreen :: v_fillArea (long numberOfPoints, double *xyDC) {
 	#if cairo
-		if (our d_cairoGraphicsContext == NULL) return;
+		if (our d_cairoGraphicsContext == nullptr) return;
 		// cairo_new_path (our d_cairoGraphicsContext); // move_to() automatically creates a new path
 		cairo_move_to (our d_cairoGraphicsContext, xyDC [0], xyDC [1]);
 		for (long i = 1; i < numberOfPoints; i ++)
@@ -280,7 +285,7 @@ void structGraphicsScreen :: v_fillArea (long numberOfPoints, double *xyDC) {
 	#elif win
 		MY_BRUSH
 		BeginPath (our d_gdiGraphicsContext);
-		MoveToEx (our d_gdiGraphicsContext, xyDC [0], xyDC [1], NULL);
+		MoveToEx (our d_gdiGraphicsContext, xyDC [0], xyDC [1], nullptr);
 		for (long i = 1; i < numberOfPoints; i ++)
 			LineTo (our d_gdiGraphicsContext, xyDC [i + i], xyDC [i + i + 1]);
 		EndPath (our d_gdiGraphicsContext);
@@ -313,16 +318,16 @@ void structGraphicsPostscript :: v_fillArea (long numberOfPoints, double *xyDC)
 void structGraphicsScreen :: v_rectangle (double x1DC, double x2DC, double y1DC, double y2DC) {
 	ORDER_DC
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;
+		if (! d_cairoGraphicsContext) return;
 		double width = x2DC - x1DC, height = y1DC - y2DC;
-		if (width <= 0 || height <= 0) return;
+		if (width <= 0.0 || height <= 0.0) return;
 		cairoPrepareLine (this);
 		cairo_rectangle (d_cairoGraphicsContext, x1DC, y2DC, width, height);
 		cairo_stroke (d_cairoGraphicsContext);
 		cairoRevertLine (this);
 	#elif win
 		winPrepareLine (this);
-		Rectangle (our d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1, y1DC + 1);
+		Rectangle (our d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1.0, y1DC + 1.0);
 		DEFAULT
 	#elif mac
 		GraphicsQuartz_initDraw (this);
@@ -350,9 +355,9 @@ void structGraphicsPostscript :: v_rectangle (double x1DC, double x2DC, double y
 void structGraphicsScreen :: v_fillRectangle (double x1DC, double x2DC, double y1DC, double y2DC) {
 	ORDER_DC
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;	
+		if (! d_cairoGraphicsContext) return;
 		double width = x2DC - x1DC + 1.0, height = y1DC - y2DC + 1.0;
-		if (width <= 0 || height <= 0) return;
+		if (width <= 0.0 || height <= 0.0) return;
 		trace (U"x1DC ", x1DC, U", x2DC ", x2DC, U", y1DC ", y1DC, U", y2DC ", y2DC);
 		cairo_rectangle (d_cairoGraphicsContext, round (x1DC), round (y2DC), round (width), round (height));
 		cairo_fill (d_cairoGraphicsContext);
@@ -360,7 +365,7 @@ void structGraphicsScreen :: v_fillRectangle (double x1DC, double x2DC, double y
 		RECT rect;
 		rect. left = x1DC, rect. right = x2DC, rect. top = y2DC, rect. bottom = y1DC;   /* Superfluous? */
 		MY_BRUSH
-		Rectangle (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1, y1DC + 1);
+		Rectangle (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1.0, y1DC + 1.0);
 		DEFAULT
 	#elif mac
 		GraphicsQuartz_initDraw (this);
@@ -389,21 +394,21 @@ void structGraphicsScreen :: v_circle (double xDC, double yDC, double rDC) {
 		if (duringXor) {
 			#if ALLOW_GDK_DRAWING
 				gdkPrepareLine (this);
-				gdk_draw_arc (d_window, d_gdkGraphicsContext, FALSE, xDC - rDC, yDC - rDC, rDC + rDC, rDC + rDC, 0, 360 * 64);
+				gdk_draw_arc (d_window, d_gdkGraphicsContext, false, xDC - rDC, yDC - rDC, rDC + rDC, rDC + rDC, 0, 360 * 64);
 				gdkRevertLine (this);
 				gdk_flush ();
 			#endif
 		} else {
-			if (d_cairoGraphicsContext == NULL) return;
+			if (! d_cairoGraphicsContext) return;
 			cairoPrepareLine (this);
 			cairo_new_path (d_cairoGraphicsContext);
-			cairo_arc (d_cairoGraphicsContext, xDC, yDC, rDC, 0.0, 2 * M_PI);
+			cairo_arc (d_cairoGraphicsContext, xDC, yDC, rDC, 0.0, 2.0 * M_PI);
 			cairo_stroke (d_cairoGraphicsContext);
 			cairoRevertLine (this);
 		}
 	#elif win
 		winPrepareLine (this);
-		Ellipse (d_gdiGraphicsContext, xDC - rDC, yDC - rDC, xDC + rDC + 1, yDC + rDC + 1);
+		Ellipse (d_gdiGraphicsContext, xDC - rDC, yDC - rDC, xDC + rDC + 1.0, yDC + rDC + 1.0);
 		DEFAULT
 	#elif mac
 		GraphicsQuartz_initDraw (this);
@@ -425,7 +430,7 @@ void structGraphicsPostscript :: v_circle (double xDC, double yDC, double rDC) {
 void structGraphicsScreen :: v_ellipse (double x1DC, double x2DC, double y1DC, double y2DC) {
 	ORDER_DC
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;
+		if (! d_cairoGraphicsContext) return;
 		cairoPrepareLine (this);
 		cairo_new_path (d_cairoGraphicsContext);
 		cairo_save (d_cairoGraphicsContext);
@@ -473,7 +478,7 @@ void structGraphicsPostscript :: v_ellipse (double x1DC, double x2DC, double y1D
 
 void structGraphicsScreen :: v_arc (double xDC, double yDC, double rDC, double fromAngle, double toAngle) {
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;
+		if (! d_cairoGraphicsContext) return;
 		cairoPrepareLine (this);
 		cairo_new_path (d_cairoGraphicsContext);
 		cairo_arc (d_cairoGraphicsContext, xDC, yDC, rDC, -toAngle * (M_PI / 180.0), -fromAngle * (M_PI / 180.0));
@@ -508,7 +513,7 @@ void structGraphicsPostscript :: v_arc (double xDC, double yDC, double rDC, doub
 
 void structGraphicsScreen :: v_fillCircle (double xDC, double yDC, double rDC) {
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;
+		if (! d_cairoGraphicsContext) return;
 		cairo_new_path (d_cairoGraphicsContext);
 		cairo_arc (d_cairoGraphicsContext, xDC, yDC, rDC, 0, 2 * M_PI);
 		cairo_fill (d_cairoGraphicsContext);
@@ -517,7 +522,7 @@ void structGraphicsScreen :: v_fillCircle (double xDC, double yDC, double rDC) {
 		/*
 		 * NT cannot fill circles that span less than five pixels...
 		 */
-		Ellipse (d_gdiGraphicsContext, xDC - rDC - 1, yDC - rDC - 1, xDC + rDC + 1, yDC + rDC + 1);
+		Ellipse (d_gdiGraphicsContext, xDC - rDC - 1.0, yDC - rDC - 1.0, xDC + rDC + 1.0, yDC + rDC + 1.0);
 		DEFAULT
 	#elif mac
 		GraphicsQuartz_initDraw (this);
@@ -538,17 +543,17 @@ void structGraphicsPostscript :: v_fillCircle (double xDC, double yDC, double rD
 void structGraphicsScreen :: v_fillEllipse (double x1DC, double x2DC, double y1DC, double y2DC) {
 	ORDER_DC
 	#if cairo
-		if (d_cairoGraphicsContext == NULL) return;	
+		if (! d_cairoGraphicsContext) return;
 		cairo_new_path (d_cairoGraphicsContext);
 		cairo_save (d_cairoGraphicsContext);
 		cairo_translate (d_cairoGraphicsContext, 0.5 * (x2DC + x1DC), 0.5 * (y2DC + y1DC));
 		cairo_scale (d_cairoGraphicsContext, 0.5 * (x2DC - x1DC), 0.5 * (y2DC - y1DC));
-		cairo_arc (d_cairoGraphicsContext, 0.0, 0.0, 1.0, 0.0, 2 * M_PI);
+		cairo_arc (d_cairoGraphicsContext, 0.0, 0.0, 1.0, 0.0, 2.0 * M_PI);
 		cairo_restore (d_cairoGraphicsContext);
 		cairo_fill (d_cairoGraphicsContext);
 	#elif win
 		MY_BRUSH
-		Ellipse (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1, y1DC + 1);
+		Ellipse (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1.0, y1DC + 1.0);
 		DEFAULT
 	#elif mac
 		GraphicsQuartz_initDraw (this);
@@ -570,7 +575,7 @@ void structGraphicsScreen :: v_fillEllipse (double x1DC, double x2DC, double y1D
 
 void structGraphicsPostscript :: v_fillEllipse (double x1DC, double x2DC, double y1DC, double y2DC) {
 	d_printf (d_file, "gsave %.7g %.7g translate %.7g %.7g scale N 0 0 1 FC grestore\n",
-		(x2DC + x1DC) / 2, (y2DC + y1DC) / 2, (x2DC - x1DC) / 2, (y2DC - y1DC) / 2);
+		(x2DC + x1DC) / 2.0, (y2DC + y1DC) / 2.0, (x2DC - x1DC) / 2.0, (y2DC - y1DC) / 2.0);
 }
 
 void structGraphicsScreen :: v_button (double x1DC, double x2DC, double y1DC, double y2DC) {
@@ -667,7 +672,7 @@ void structGraphicsScreen :: v_button (double x1DC, double x2DC, double y1DC, do
             }
         }
 		CGContextSetAllowsAntialiasing (d_macGraphicsContext, true);
-		CGContextSetLineDash (d_macGraphicsContext, 0, NULL, 0);
+		CGContextSetLineDash (d_macGraphicsContext, 0, nullptr, 0);
 		GraphicsQuartz_exitDraw (this);
     #elif win
         RECT rect;
@@ -690,25 +695,25 @@ void structGraphics :: v_roundedRectangle (double x1DC, double x2DC, double y1DC
 	xyDC [2] = x2DC - r;
 	xyDC [3] = y1DC;
 	v_polyline (2, xyDC, false);
-	v_arc (x2DC - r, y1DC + dy, r, -90, 0);
+	v_arc (x2DC - r, y1DC + dy, r, -90.0, 0.0);
 	xyDC [0] = x2DC;
 	xyDC [1] = y1DC + dy;
 	xyDC [2] = x2DC;
 	xyDC [3] = y2DC - dy;
 	v_polyline (2, xyDC, false);
-	v_arc (x2DC - r, y2DC - dy, r, 0, 90);
+	v_arc (x2DC - r, y2DC - dy, r, 0.0, 90.0);
 	xyDC [0] = x2DC - r;
 	xyDC [1] = y2DC;
 	xyDC [2] = x1DC + r;
 	xyDC [3] = y2DC;
 	v_polyline (2, xyDC, false);
-	v_arc (x1DC + r, y2DC - dy, r, 90, 180);
+	v_arc (x1DC + r, y2DC - dy, r, 90.0, 180.0);
 	xyDC [0] = x1DC;
 	xyDC [1] = y2DC - dy;
 	xyDC [2] = x1DC;
 	xyDC [3] = y1DC + dy;
 	v_polyline (2, xyDC, false);
-	v_arc (x1DC + r, y1DC + dy, r, 180, 270);
+	v_arc (x1DC + r, y1DC + dy, r, 180.0, 270.0);
 }
 
 void structGraphicsScreen :: v_roundedRectangle (double x1DC, double x2DC, double y1DC, double y2DC, double r) {
@@ -716,7 +721,7 @@ void structGraphicsScreen :: v_roundedRectangle (double x1DC, double x2DC, doubl
 		double dy = yIsZeroAtTheTop ? - r : r, xyDC [4];
 		ORDER_DC
 		winPrepareLine (this);
-		RoundRect (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1, y1DC + 1, r + r, r + r);
+		RoundRect (d_gdiGraphicsContext, x1DC, y2DC, x2DC + 1.0, y1DC + 1.0, r + r, r + r);
 		DEFAULT
 		return;
 	#else
@@ -834,7 +839,7 @@ void Graphics_fillArea (Graphics me, long numberOfPoints, double *xWC, double *y
 	long x1DC, x2DC; \
 	long clipy1 = wdy (my d_y1WC), clipy2 = wdy (my d_y2WC); \
 	double dx, offsetX, translation, scale; \
-	long i, n = ix2 - ix1 + 1; \
+	long n = ix2 - ix1 + 1; \
  \
 	if (ix2 <= ix1 || my scaleX == 0.0) return; \
  \
@@ -852,7 +857,7 @@ void Graphics_fillArea (Graphics me, long numberOfPoints, double *xWC, double *y
 		TYPE lastMini; \
 		if (numberOfPointsActuallyDrawn < 1) return; \
 		xyDC = Melder_malloc_f (double, 2 * numberOfPointsActuallyDrawn); \
-		for (i = 0; i < numberOfPixels; i ++) { \
+		for (long i = 0; i < numberOfPixels; i ++) { \
 			long j, jmin = ix1 + i / scale, jmax = ix1 + (i + 1) / scale; \
 			TYPE mini, maxi; \
 			long minDC, maxDC; \
@@ -912,7 +917,7 @@ void Graphics_fillArea (Graphics me, long numberOfPoints, double *xWC, double *y
 		Melder_free (xyDC); \
 	} else {  /* Normal. */  \
 		double *xyDC = Melder_malloc_f (double, 2 * n); \
-		for (i = 0; i < n; i ++) { \
+		for (long i = 0; i < n; i ++) { \
 			long ix = ix1 + i; \
 			long value = wdy (yWC [STAGGER (ix)]); \
 			xyDC [i + i] = translation + ix * scale; \
@@ -1062,21 +1067,21 @@ void structGraphics :: v_arrowHead (double xDC, double yDC, double angle) {
 
 void structGraphicsScreen :: v_arrowHead (double xDC, double yDC, double angle) {
 	#if cairo
-		if (our d_cairoGraphicsContext == NULL) return;
-		double size = 10.0 * our resolution * our arrowSize / 75.0; // TODO: die 75 zou dat niet de scherm resolutie moeten worden?
+		if (! our d_cairoGraphicsContext) return;
+		double size = 10.0 * our resolution * our arrowSize / 75.0;   // TODO: die 75 zou dat niet de scherm resolutie moeten worden?
 		cairo_new_path (our d_cairoGraphicsContext);
-		cairo_move_to (our d_cairoGraphicsContext, xDC + cos ((angle + 160) * NUMpi / 180) * size, yDC - sin ((angle + 160) * NUMpi / 180) * size);
+		cairo_move_to (our d_cairoGraphicsContext, xDC + cos ((angle + 160.0) * NUMpi / 180.0) * size, yDC - sin ((angle + 160.0) * NUMpi / 180.0) * size);
 		cairo_line_to (our d_cairoGraphicsContext, xDC, yDC);
-		cairo_line_to (our d_cairoGraphicsContext, xDC + cos ((angle - 160) * NUMpi / 180) * size, yDC - sin ((angle - 160) * NUMpi / 180) * size);
+		cairo_line_to (our d_cairoGraphicsContext, xDC + cos ((angle - 160.0) * NUMpi / 180.0) * size, yDC - sin ((angle - 160.0) * NUMpi / 180.0) * size);
 		cairo_close_path (our d_cairoGraphicsContext);
 		cairo_fill (our d_cairoGraphicsContext);
 	#elif win
 		double size = 10.0 * our resolution * our arrowSize / 72.0;
 		MY_BRUSH
 		BeginPath (our d_gdiGraphicsContext);
-		MoveToEx (our d_gdiGraphicsContext, xDC + cos ((angle + 160) * NUMpi / 180) * size, yDC - sin ((angle + 160) * NUMpi / 180) * size, NULL);
+		MoveToEx (our d_gdiGraphicsContext, xDC + cos ((angle + 160.0) * NUMpi / 180.0) * size, yDC - sin ((angle + 160.0) * NUMpi / 180.0) * size, nullptr);
 		LineTo (our d_gdiGraphicsContext, xDC, yDC);
-		LineTo (our d_gdiGraphicsContext, xDC + cos ((angle - 160) * NUMpi / 180) * size, yDC - sin ((angle - 160) * NUMpi / 180) * size);
+		LineTo (our d_gdiGraphicsContext, xDC + cos ((angle - 160.0) * NUMpi / 180.0) * size, yDC - sin ((angle - 160.0) * NUMpi / 180.0) * size);
 		EndPath (our d_gdiGraphicsContext);
 		FillPath (our d_gdiGraphicsContext);
 		DEFAULT
@@ -1087,10 +1092,10 @@ void structGraphicsScreen :: v_arrowHead (double xDC, double yDC, double angle)
 		CGContextSaveGState (our d_macGraphicsContext);
 		CGContextBeginPath (our d_macGraphicsContext);
 		CGContextTranslateCTM (our d_macGraphicsContext, xDC, yDC);
-		CGContextRotateCTM (our d_macGraphicsContext, - angle * NUMpi / 180);
+		CGContextRotateCTM (our d_macGraphicsContext, - angle * NUMpi / 180.0);
 		CGContextMoveToPoint (our d_macGraphicsContext, 0.0, 0.0);
 		double size = 10.0 * our resolution * our arrowSize / 72.0;
-		double radius = our resolution * our arrowSize / 30;
+		double radius = our resolution * our arrowSize / 30.0;
 		CGContextAddArc (our d_macGraphicsContext, - size, 0.0, radius, - NUMpi / 3.0, NUMpi / 3.0, 0);
 		CGContextAddLineToPoint (our d_macGraphicsContext, 0.0, 0.0);
 		CGContextFillPath (our d_macGraphicsContext);
@@ -1100,34 +1105,34 @@ void structGraphicsScreen :: v_arrowHead (double xDC, double yDC, double angle)
 }
 
 void structGraphicsPostscript :: v_arrowHead (double xDC, double yDC, double angle) {
-	double length = resolution * arrowSize / 10, radius = resolution * arrowSize / 30;
+	double length = resolution * arrowSize / 10.0, radius = resolution * arrowSize / 30.0;
 	d_printf (d_file, "gsave %.7g %.7g translate %.7g rotate\n"
 		"N 0 0 M %.7g 0 %.7g -60 60 arc closepath fill grestore\n", xDC, yDC, angle, - length, radius);
 }
 
 void Graphics_arrow (Graphics me, double x1WC, double y1WC, double x2WC, double y2WC) {
-	double angle = (180.0 / NUMpi) * atan2 ((wdy (y2WC) - wdy (y1WC)) * (my yIsZeroAtTheTop ? -1 : 1), wdx (x2WC) - wdx (x1WC));
+	double angle = (180.0 / NUMpi) * atan2 ((wdy (y2WC) - wdy (y1WC)) * (my yIsZeroAtTheTop ? -1.0 : 1.0), wdx (x2WC) - wdx (x1WC));
 	double size = my screen ? 10.0 * my resolution * my arrowSize / 72.0 : my resolution * my arrowSize / 10;
 	double xyDC [4];
 	xyDC [0] = wdx (x1WC);
 	xyDC [1] = wdy (y1WC);
-	xyDC [2] = wdx (x2WC) + (my screen ? 0.7 : 0.6) * cos ((angle - 180) * NUMpi / 180) * size;
-	xyDC [3] = wdy (y2WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin ((angle - 180) * NUMpi / 180) * size;
+	xyDC [2] = wdx (x2WC) + (my screen ? 0.7 : 0.6) * cos ((angle - 180.0) * NUMpi / 180.0) * size;
+	xyDC [3] = wdy (y2WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin ((angle - 180.0) * NUMpi / 180.0) * size;
 	my v_polyline (2, xyDC, false);
 	my v_arrowHead (wdx (x2WC), wdy (y2WC), angle);
 	if (my recording) { op (ARROW, 4); put (x1WC); put (y1WC); put (x2WC); put (y2WC); }
 }
 
 void Graphics_doubleArrow (Graphics me, double x1WC, double y1WC, double x2WC, double y2WC) {
-	double angle = (180.0 / NUMpi) * atan2 ((wdy (y2WC) - wdy (y1WC)) * (my yIsZeroAtTheTop ? -1 : 1), wdx (x2WC) - wdx (x1WC));
-	double size = my screen ? 10.0 * my resolution * my arrowSize / 72.0 : my resolution * my arrowSize / 10;
+	double angle = (180.0 / NUMpi) * atan2 ((wdy (y2WC) - wdy (y1WC)) * (my yIsZeroAtTheTop ? -1.0 : 1.0), wdx (x2WC) - wdx (x1WC));
+	double size = my screen ? 10.0 * my resolution * my arrowSize / 72.0 : my resolution * my arrowSize / 10.0;
 	double xyDC [4];
-	xyDC [0] = wdx (x1WC) + (my screen ? 0.7 : 0.6) * cos (angle * NUMpi / 180) * size;
-	xyDC [1] = wdy (y1WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin (angle * NUMpi / 180) * size;
-	xyDC [2] = wdx (x2WC) + (my screen ? 0.7 : 0.6) * cos ((angle - 180) * NUMpi / 180) * size;
-	xyDC [3] = wdy (y2WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin ((angle - 180) * NUMpi / 180) * size;
+	xyDC [0] = wdx (x1WC) + (my screen ? 0.7 : 0.6) * cos (angle * NUMpi / 180.0) * size;
+	xyDC [1] = wdy (y1WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin (angle * NUMpi / 180.0) * size;
+	xyDC [2] = wdx (x2WC) + (my screen ? 0.7 : 0.6) * cos ((angle - 180) * NUMpi / 180.0) * size;
+	xyDC [3] = wdy (y2WC) + (my yIsZeroAtTheTop ? -1.0 : 1.0) * (my screen ? 0.7 : 0.6) * sin ((angle - 180.0) * NUMpi / 180.0) * size;
 	my v_polyline (2, xyDC, false);
-	my v_arrowHead (wdx (x1WC), wdy (y1WC), angle + 180);
+	my v_arrowHead (wdx (x1WC), wdy (y1WC), angle + 180.0);
 	//my v_polyline (2, xyDC);
 	my v_arrowHead (wdx (x2WC), wdy (y2WC), angle);
 	if (my recording) { op (DOUBLE_ARROW, 4); put (x1WC); put (y1WC); put (x2WC); put (y2WC); }
@@ -1139,10 +1144,10 @@ void Graphics_arcArrow (Graphics me, double xWC, double yWC, double rWC,
 	my v_arc (wdx (xWC), wdy (yWC), my scaleX * rWC, fromAngle, toAngle);
 	if (arrowAtStart) my v_arrowHead (
 		wdx (xWC + rWC * cos (fromAngle * (NUMpi / 180.0))),
-		wdy (yWC + rWC * sin (fromAngle * (NUMpi / 180.0))), fromAngle - 90);
+		wdy (yWC + rWC * sin (fromAngle * (NUMpi / 180.0))), fromAngle - 90.0);
 	if (arrowAtEnd) my v_arrowHead (
 		wdx (xWC + rWC * cos (toAngle * (NUMpi / 180.0))),
-		wdy (yWC + rWC * sin (toAngle * (NUMpi / 180.0))), toAngle + 90);
+		wdy (yWC + rWC * sin (toAngle * (NUMpi / 180.0))), toAngle + 90.0);
 	if (my recording)
 		{ op (ARC_ARROW, 7); put (xWC); put (yWC); put (rWC);
 		  put (fromAngle); put (toAngle); put (arrowAtStart); put (arrowAtEnd); }
diff --git a/sys/Graphics_mouse.cpp b/sys/Graphics_mouse.cpp
index 3195fec..c428254 100644
--- a/sys/Graphics_mouse.cpp
+++ b/sys/Graphics_mouse.cpp
@@ -1,20 +1,19 @@
 /* Graphics_mouse.cpp
  *
- * Copyright (C) 1992-2011,2013 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2011,2013,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -35,7 +34,7 @@ bool structGraphicsScreen :: v_mouseStillDown () {
 		gdk_event_free (gevent);
 		return gdkEventType != GDK_BUTTON_RELEASE;
 	#elif cocoa
-		Graphics_flushWs (this);
+		[[d_macView window]   flushWindow];
 		NSEvent *nsEvent = [[d_macView window]
 			nextEventMatchingMask: NSLeftMouseUpMask | NSLeftMouseDraggedMask | NSKeyDownMask
 			untilDate: [NSDate distantFuture]
@@ -47,8 +46,8 @@ bool structGraphicsScreen :: v_mouseStillDown () {
 		return nsEventType != NSLeftMouseUp;
 	#elif win
 		return motif_win_mouseStillDown ();
-	#elif mac
-		return StillDown ();
+	#else
+		return false;
 	#endif
 }
 
@@ -56,30 +55,26 @@ bool Graphics_mouseStillDown (Graphics me) {
 	return my v_mouseStillDown ();
 }
 
-void structGraphicsScreen :: v_getMouseLocation (double *xWC, double *yWC) {
+void structGraphicsScreen :: v_getMouseLocation (double *p_xWC, double *p_yWC) {
 	#if cairo
 		gint xDC, yDC;
-		gdk_window_get_pointer (d_window, & xDC, & yDC, NULL);
-		Graphics_DCtoWC (this, xDC, yDC, xWC, yWC);
+		gdk_window_get_pointer (d_window, & xDC, & yDC, nullptr);
+		Graphics_DCtoWC (this, xDC, yDC, p_xWC, p_yWC);
 	#elif cocoa
         NSPoint mouseLoc = [[d_macView window]  mouseLocationOutsideOfEventStream];
         mouseLoc = [d_macView   convertPoint: mouseLoc   fromView: nil];
         //mouseLoc. y = d_macView. bounds. size. height - mouseLoc. y;
-        Graphics_DCtoWC (this, mouseLoc. x, mouseLoc. y, xWC, yWC);
+        Graphics_DCtoWC (this, mouseLoc. x, mouseLoc. y, p_xWC, p_yWC);
 	#elif win
 		POINT pos;
 		if (! GetCursorPos (& pos)) { Melder_warning (U"Cannot find the location of the mouse."); return; }
 		ScreenToClient (d_winWindow, & pos);
-		Graphics_DCtoWC (this, pos. x, pos. y, xWC, yWC);
-	#elif mac
-		Point mouseLoc;
-		GetMouse (& mouseLoc);
-		Graphics_DCtoWC (this, mouseLoc. h, mouseLoc. v, xWC, yWC);
+		Graphics_DCtoWC (this, pos. x, pos. y, p_xWC, p_yWC);
 	#endif
 }
 
-void Graphics_getMouseLocation (Graphics me, double *xWC, double *yWC) {
-	my v_getMouseLocation (xWC, yWC);
+void Graphics_getMouseLocation (Graphics me, double *p_xWC, double *p_yWC) {
+	my v_getMouseLocation (p_xWC, p_yWC);
 }
 
 void Graphics_waitMouseUp (Graphics me) {
diff --git a/sys/Graphics_record.cpp b/sys/Graphics_record.cpp
index 2ba9d5c..dcc6695 100644
--- a/sys/Graphics_record.cpp
+++ b/sys/Graphics_record.cpp
@@ -1,33 +1,19 @@
 /* Graphics_record.cpp
  *
- * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2004/02/15 highlight2
- * pb 2007/03/14 arrowSize
- * pb 2007/08/08 text is saved as UTF-8
- * pb 2008/01/19 removed 16M limitation on number of elements (-> double)
- * sdk 2008/03/24 cairo
- * pb 2009/07/09 RGB colours
- * pb 2009/08/10 image from file
- * pb 2010/07/11 Graphics_clearRecording ()
- * pb 2011/03/17 C++
- * pb 2011/06/18 Graphics_polyline_closed ()
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GraphicsP.h"
@@ -36,7 +22,7 @@
 
 double * _Graphics_check (Graphics me, long number) {
 	static bool messageHasAlreadyBeenShownOnce = false;
-	double *result = NULL;
+	double *result = nullptr;
 	double *record = my record;
 	long nrecord = my nrecord;
 	if (nrecord == 0) {
@@ -51,7 +37,7 @@ double * _Graphics_check (Graphics me, long number) {
 				Melder_flushError (U"_Graphics_growRecorder: out of memory.\n"
 					U"This message will not show up on future occasions.");   // because of loop danger when redrawing
 			}
-			return NULL;
+			return nullptr;
 		}
 		my record = record; my nrecord = nrecord;
 	}
@@ -67,7 +53,7 @@ double * _Graphics_check (Graphics me, long number) {
 				Melder_flushError (U"_Graphics_growRecorder: out of memory.\n"
 					U"This message will not show up on future occasions.");   // because of loop danger when redrawing
 			}
-			return NULL;
+			return nullptr;
 		}
 		my record = record; my nrecord = nrecord;
 	}
@@ -446,7 +432,8 @@ void Graphics_writeRecordings (Graphics me, FILE *f) {
 void Graphics_readRecordings (Graphics me, FILE *f) {
 	long old_irecord = my irecord;
 	long added_irecord = 0;
-	double *p = NULL, *endp = NULL;
+	double* p = nullptr;
+	double* endp = nullptr;
 	signed long numberOfArguments = 0;
 	int opcode = 0;
 	try {
diff --git a/sys/Graphics_surface.cpp b/sys/Graphics_surface.cpp
index e453cbc..b420efd 100644
--- a/sys/Graphics_surface.cpp
+++ b/sys/Graphics_surface.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
diff --git a/sys/Graphics_text.cpp b/sys/Graphics_text.cpp
index be3f18e..5c2f3bb 100644
--- a/sys/Graphics_text.cpp
+++ b/sys/Graphics_text.cpp
@@ -1,51 +1,19 @@
 /* Graphics_text.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2004/01/28 Windows: for PostScript, download Times New Roman instead of Times
- * pb 2004/02/02 Windows: my metafile instead of my printer for high resolution in metafiles and clipboards
- * pb 2004/02/04 EPS files: secondary fonts
- * pb 2004/03/13 EPS files: secondary font for Palatino as well
- * pb 2004/08/20 Windows EPS files: if "include fonts" is off, take SILDoulosIPA rather than SILDoulosIPA-Regular
- * pb 2004/10/24 better slant correction
- * pb 2004/11/28 Melder_debug == 15 to force bitmapped IPA
- * pb 2004/12/02 Linux: xipa support
- * pb 2005/02/03 TeX-xipa10-Praat-Regular
- * pb 2005/03/08 psEncoding; SILIPA93 encoding for Windows and Mac
- * pb 2005/03/15 find PostScript Courier with -p-
- * pb 2005/09/18 useSilipaPS, including bold
- * pb 2005/10/27 corrected character width for Symbol (should not depend on SILIPA setting)
- * pb 2005/11/11 Windows: font sizes up to 500
- * pb 2006/10/20 links are recorded in DC (no longer WC)
- * pb 2007/06/11 wchar
- * pb 2007/08/01 reintroduced yIsZeroAtTheTop
- * pb 2007/08/25 use Charis SIL or Doulos SIL rather than SILDoulos IPA93
- * pb 2007/09/29 correct counting of UTF-8 bytes
- * pb 2007/12/09 enums
- * pb 2008/03/24 cairo
- * pb 2009/03/14 switched kerning off
- * pb 2009/09/17 made Quartz part resistant against missing QuickDraw IPA font
- * pb 2010/05/13 support for XOR mode via GDK
- * pb 2010/06/29 Mac: handle missing phonetic fonts better
- * pb 2010/07/13 cairo: rotated text
- * pb 2011/03/17 C++
- * pb 2015/06/29 removed bitmapped fonts
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -70,9 +38,9 @@ extern const char * ipaSerifRegularPS [];
  * The ISO8859-1 character encoding, which is used on Xwin and Win, has not.
  */
 #if mac
-	#define HAS_FI_AND_FL_LIGATURES  TRUE
+	#define HAS_FI_AND_FL_LIGATURES  true
 #else
-	#define HAS_FI_AND_FL_LIGATURES  ( my postScript == TRUE )
+	#define HAS_FI_AND_FL_LIGATURES  ( my postScript == true )
 #endif
 
 #if win
@@ -81,32 +49,27 @@ extern const char * ipaSerifRegularPS [];
 	static int win_size2isize (int size) { return size > win_MAXIMUM_FONT_SIZE ? win_MAXIMUM_FONT_SIZE : size; }
 	static int win_isize2size (int isize) { return isize; }
 #elif mac
-	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
-	#include "macport_off.h"
-	#if useCarbon
-		static ATSFontRef theTimesAtsuiFont, theHelveticaAtsuiFont, theCourierAtsuiFont, theSymbolAtsuiFont,
-			thePalatinoAtsuiFont, theIpaTimesAtsuiFont, theIpaPalatinoAtsuiFont, theZapfDingbatsAtsuiFont, theArabicAtsuiFont;
-	#else
-		static bool hasTimes, hasHelvetica, hasCourier, hasSymbol, hasPalatino, hasDoulos, hasCharis, hasIpaSerif;
-	#endif
+	static bool hasTimes, hasHelvetica, hasCourier, hasSymbol, hasPalatino, hasDoulos, hasCharis, hasIpaSerif;
 	#define mac_MAXIMUM_FONT_SIZE  500
 	static CTFontRef theScreenFonts [1 + kGraphics_font_DINGBATS] [1+mac_MAXIMUM_FONT_SIZE] [1 + Graphics_BOLD_ITALIC];
 	static RGBColor theWhiteColour = { 0xFFFF, 0xFFFF, 0xFFFF }, theBlueColour = { 0, 0, 0xFFFF };
 #endif
 
 #if win
+#ifdef __CYGWIN__
+	#define FONT_TYPE_TYPE  unsigned int
+#else
+	#define FONT_TYPE_TYPE  unsigned long int
+#endif
 static bool charisAvailable = false, doulosAvailable = false;
-static int CALLBACK fontFuncEx_charis (const LOGFONTW *oldLogFont, const TEXTMETRICW *oldTextMetric, unsigned long fontType, LPARAM lparam) {
+static int CALLBACK fontFuncEx_charis (const LOGFONTW *oldLogFont, const TEXTMETRICW *oldTextMetric, FONT_TYPE_TYPE fontType, LPARAM lparam) {
 	const LPENUMLOGFONTW logFont = (LPENUMLOGFONTW) oldLogFont; (void) oldTextMetric; (void) fontType; (void) lparam;
-	charisAvailable = TRUE;
+	charisAvailable = true;
 	return 1;
 }
-static int CALLBACK fontFuncEx_doulos (const LOGFONTW *oldLogFont, const TEXTMETRICW *oldTextMetric, unsigned long fontType, LPARAM lparam) {
+static int CALLBACK fontFuncEx_doulos (const LOGFONTW *oldLogFont, const TEXTMETRICW *oldTextMetric, FONT_TYPE_TYPE fontType, LPARAM lparam) {
 	const LPENUMLOGFONTW logFont = (LPENUMLOGFONTW) oldLogFont; (void) oldTextMetric; (void) fontType; (void) lparam;
-	doulosAvailable = TRUE;
+	doulosAvailable = true;
 	return 1;
 }
 static HFONT loadFont (GraphicsScreen me, int font, int size, int style) {
@@ -143,7 +106,7 @@ static HFONT loadFont (GraphicsScreen me, int font, int size, int style) {
 		EnumFontFamiliesExW (my d_gdiGraphicsContext, & logFont, fontFuncEx_charis, 0, 0);
 		wcscpy (logFont. lfFaceName, L"Doulos SIL");
 		EnumFontFamiliesExW (my d_gdiGraphicsContext, & logFont, fontFuncEx_doulos, 0, 0);
-		ipaInited = TRUE;
+		ipaInited = true;
 		if (! charisAvailable && ! doulosAvailable) {
 			/* BUG: The next warning may cause reentry of drawing (on window exposure) and lead to crash. Some code must be non-reentrant !! */
 			Melder_warning (U"The phonetic font is not available.\nSeveral characters may not look correct.\nSee www.praat.org");
@@ -164,7 +127,7 @@ static HFONT loadFont (GraphicsScreen me, int font, int size, int style) {
 }
 #endif
 
-static void charSize (I, _Graphics_widechar *lc) {
+static void charSize (void *void_me, _Graphics_widechar *lc) {
 	iam (Graphics);
 	if (my screen) {
 		iam (GraphicsScreen);
@@ -177,11 +140,11 @@ static void charSize (I, _Graphics_widechar *lc) {
 				lc -> width = 10;
 				lc -> baseline *= my fontSize * 0.01;
 				lc -> code = lc -> kar;
-				lc -> font.string = NULL;
+				lc -> font.string = nullptr;
 				lc -> font.integer = 0;
 				lc -> size = size;
 			} else {
-				if (my d_cairoGraphicsContext == NULL) return;
+				if (! my d_cairoGraphicsContext) return;
 				Longchar_Info info = Longchar_getInfoFromNative (lc -> kar);
 				int font, size, style;
 				int normalSize = my fontSize * my resolution / 72.0;
@@ -214,7 +177,7 @@ static void charSize (I, _Graphics_widechar *lc) {
 				trace (U"width ", lc -> width);
 				lc -> baseline *= my fontSize * 0.01;
 				lc -> code = lc -> kar;
-				lc -> font.string = NULL;
+				lc -> font.string = nullptr;
 				lc -> font.integer = font;
 				lc -> size = size;
 			}
@@ -276,103 +239,11 @@ static void charSize (I, _Graphics_widechar *lc) {
 			}
 			lc -> width = extent. cx;
 			lc -> baseline *= my fontSize * 0.01 * my resolution / 72.0;
-			lc -> font.string = NULL;
+			lc -> font.string = nullptr;
 			lc -> font.integer = font;   // kGraphics_font_HELVETICA .. kGraphics_font_DINGBATS
 			lc -> size = size;   // 0..4 instead of 10..24
 			lc -> style = style;   // without Graphics_CODE
 		#elif cocoa
-		#elif mac
-			Longchar_Info info = Longchar_getInfoFromNative (lc -> kar);
-			int normalSize = my fontSize * my resolution / 72.0;
-			lc -> size = lc -> size < 100 ? (3 * normalSize + 2) / 4 : /*lc -> size > 100 ? 1.2 * normalSize :*/ normalSize;
-			lc -> baseline *= 0.01 * normalSize;
-			long saveFont = lc -> font.integer;   // save!
-			lc -> font.string = NULL;   // this erases font.integer!
-			ATSFontRef atsuiFont =
-				info -> alphabet == Longchar_SYMBOL ? theSymbolAtsuiFont :
-				info -> alphabet == Longchar_PHONETIC ? ( my font == kGraphics_font_TIMES && lc -> style == 0 ? theIpaTimesAtsuiFont : theIpaPalatinoAtsuiFont ) :
-				lc -> kar == '/' ? thePalatinoAtsuiFont :   // override Courier
-				info -> alphabet == Longchar_DINGBATS ? theZapfDingbatsAtsuiFont:
-				saveFont == kGraphics_font_COURIER ? theCourierAtsuiFont :
-				my font == kGraphics_font_TIMES ? theTimesAtsuiFont :
-				my font == kGraphics_font_HELVETICA ? theHelveticaAtsuiFont :
-				my font == kGraphics_font_COURIER ? theCourierAtsuiFont : theTimesAtsuiFont;
-			Melder_assert (atsuiFont != 0);
-			lc -> font.integer = (long) atsuiFont;
-			//CTFontRef ctFont = CTFontCreateWithName (CFSTR("Times"), 48, NULL);
-			lc -> code = lc -> kar;
-			if (lc -> code == 0) {
-				_Graphics_widechar *lc2;
-				if (lc -> kar == UNICODE_LATIN_SMALL_LETTER_SCHWA_WITH_HOOK) {
-					info = Longchar_getInfo ('s', 'w');
-					lc -> kar = info -> unicode;
-					lc -> code = info -> unicode;
-					for (lc2 = lc + 1; lc2 -> kar != U'\0'; lc2 ++) { }
-					lc2 [1]. kar = U'\0';
-					while (lc2 - lc > 0) { lc2 [0] = lc2 [-1]; lc2 --; }
-					lc [1]. kar = UNICODE_MODIFIER_LETTER_RHOTIC_HOOK;
-				} else if (lc -> kar == UNICODE_LATIN_SMALL_LETTER_L_WITH_MIDDLE_TILDE) {
-					info = Longchar_getInfo ('l', ' ');
-					lc -> kar = info -> unicode;
-					lc -> code = info -> unicode;
-					for (lc2 = lc + 1; lc2 -> kar != U'\0'; lc2 ++) { }
-					lc2 [1]. kar = U'\0';
-					while (lc2 - lc > 0) { lc2 [0] = lc2 [-1]; lc2 --; }
-					lc [1]. kar = UNICODE_COMBINING_TILDE_OVERLAY;
-				}
-			}
-			/*
-			 * Define the text layout.
-			 */
-			static ATSUTextLayout textLayout;
-			if (textLayout == NULL) {
-				OSStatus err = ATSUCreateTextLayout (& textLayout);
-				if (err != 0) Melder_fatal (U"Graphics_text/ATSUCreateTextLayout: unknown MacOS error ", (int) err, U".");
-			}
-			char16_t code16 [2];
-			if (lc -> kar <= 0xFFFF) {
-				code16 [0] = lc -> kar;
-				OSStatus err = ATSUSetTextPointerLocation (textLayout,
-					(ConstUniCharArrayPtr) & code16 [0],
-					kATSUFromTextBeginning, kATSUToTextEnd, 1);   // BUG: not 64-bit
-				if (err != 0) Melder_fatal (U"Graphics_text/ATSUSetTextPointerLocation low Unicode: unknown MacOS error ", (int) err, U".");
-			} else {
-				char32 kar = lc -> kar - 0x10000;
-				code16 [0] = 0xD800 + (kar >> 10);
-				code16 [1] = 0xDC00 + (kar & 0x3FF);
-				OSStatus err = ATSUSetTextPointerLocation (textLayout,
-					(ConstUniCharArrayPtr) & code16 [0],
-					kATSUFromTextBeginning, kATSUToTextEnd, 2);   // BUG: not 64-bit
-				if (err != 0) Melder_fatal (U"Graphics_text/ATSUSetTextPointerLocation high Unicode: unknown MacOS error ", (int) err, U".");
-			}
-			static ATSUFontFallbacks fontFallbacks = NULL;
-			if (fontFallbacks == NULL) {
-				ATSUCreateFontFallbacks (& fontFallbacks);
-				ATSUSetObjFontFallbacks (fontFallbacks, 0, NULL, kATSUDefaultFontFallbacks);
-			}
-			ATSUAttributeTag attributeTags [] = { kATSUCGContextTag, kATSULineFontFallbacksTag };
-			ByteCount valueSizes [] = { sizeof (CGContextRef), sizeof (ATSUFontFallbacks) };
-			ATSUAttributeValuePtr values [] = { & my d_macGraphicsContext, & fontFallbacks };
-			ATSUSetLayoutControls (textLayout, 2, attributeTags, valueSizes, values);
-			ATSUSetTransientFontMatching (textLayout, true);
-			/*
-			 * Set styles: font, size, colour, bold, italic.
-			 */
-			static ATSUStyle atsuStyle;
-			if (atsuStyle == NULL) {
-				ATSUCreateStyle (& atsuStyle);
-			}
-			Fixed fontSize = lc -> size << 16;
-			Boolean boldStyle = (lc -> style & Graphics_BOLD) != 0;
-			Boolean italicStyle = (lc -> style & Graphics_ITALIC) != 0;
-			ATSUAttributeTag styleAttributeTags [] = { kATSUFontTag, kATSUSizeTag, kATSUColorTag, kATSUQDBoldfaceTag, kATSUQDItalicTag };
-			ByteCount styleValueSizes [] = { sizeof (ATSUFontID), sizeof (Fixed), sizeof (RGBColor), sizeof (Boolean), sizeof (Boolean) };
-			ATSUAttributeValuePtr styleValues [] = { & atsuiFont, & fontSize, lc -> link ? & theBlueColour : & my d_macColour, & boldStyle, & italicStyle };
-			ATSUSetAttributes (atsuStyle, 5, styleAttributeTags, styleValueSizes, styleValues);
-			ATSUSetRunStyle (textLayout, atsuStyle, 0, 1);
-			ATSUTextMeasurement textBefore, textAfter, ascent, descent;
-			ATSUGetUnjustifiedBounds (textLayout, kATSUFromTextBeginning, kATSUToTextEnd, & textBefore, & textAfter, & ascent, & descent);
-			lc -> width = textAfter / 65536.0;
 		#endif
 	} else if (my postScript) {
 		iam (GraphicsPostscript);
@@ -385,7 +256,7 @@ static void charSize (I, _Graphics_widechar *lc) {
 			lc -> style == Graphics_BOLD || lc -> link ? Graphics_BOLD :
 			lc -> style == Graphics_BOLD_ITALIC ? Graphics_BOLD_ITALIC : 0;
 		if (! my fontInfos [font] [style]) {
-			const char *fontInfo, *secondaryFontInfo = NULL, *tertiaryFontInfo = NULL;
+			const char *fontInfo, *secondaryFontInfo = nullptr, *tertiaryFontInfo = nullptr;
 			if (font == kGraphics_font_COURIER) {
 				fontInfo = style == Graphics_BOLD ? "Courier-Bold" :
 					style == Graphics_ITALIC ? "Courier-Oblique" :
@@ -421,7 +292,7 @@ static void charSize (I, _Graphics_widechar *lc) {
 					const char **p;
 					for (p = & ipaSerifRegularPS [0]; *p; p ++)
 						my d_printf (my d_file, "%s", *p);
-					my loadedXipa = TRUE;
+					my loadedXipa = true;
 				}
 				fontInfo = my useSilipaPS ?
 					(style == Graphics_BOLD || style == Graphics_BOLD_ITALIC ? "SILDoulosIPA93Bold" : "SILDoulosIPA93Regular") :
@@ -454,7 +325,7 @@ static void charSize (I, _Graphics_widechar *lc) {
 					my d_printf (my d_file, "/%s /%s-Praat PraatEncode\n", secondaryFontInfo, fontInfo);
 				} else {
 					/* Automatic font choice strategy. */
-					if (secondaryFontInfo != NULL) {
+					if (secondaryFontInfo) {
 						my d_printf (my d_file,
 							"/%s /Font resourcestatus\n"
 							"{ pop pop /%s /%s-Praat PraatEncode }\n"
@@ -534,7 +405,7 @@ static void charSize (I, _Graphics_widechar *lc) {
 	}
 }
 
-static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
+static void charDraw (void *void_me, int xDC, int yDC, _Graphics_widechar *lc,
 	const char32 *codes, int nchars, int width)
 {
 	iam (Graphics);
@@ -582,7 +453,7 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 		#if cairo
 			if (my duringXor) {
 			} else {
-				if (my d_cairoGraphicsContext == NULL) return;
+				if (! my d_cairoGraphicsContext) return;
 				// TODO!
 			}
 			int font = lc -> font.integer;
@@ -605,9 +476,9 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 				CTFontSymbolicTraits ctStyle = ( style & Graphics_BOLD ? kCTFontBoldTrait : 0 ) | ( lc -> style & Graphics_ITALIC ? kCTFontItalicTrait : 0 );
 			#if 1
 				CFStringRef key = kCTFontSymbolicTrait;
-				CFNumberRef value = CFNumberCreate (NULL, kCFNumberIntType, & ctStyle);
+				CFNumberRef value = CFNumberCreate (nullptr, kCFNumberIntType, & ctStyle);
 				CFIndex numberOfValues = 1;
-				CFDictionaryRef styleDict = CFDictionaryCreate (NULL, (const void **) & key, (const void **) & value, numberOfValues,
+				CFDictionaryRef styleDict = CFDictionaryCreate (nullptr, (const void **) & key, (const void **) & value, numberOfValues,
 					& kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks);
 				CFRelease (value);
 				CFStringRef keys [2];
@@ -629,7 +500,7 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 					case kGraphics_font_DINGBATS:    { cfFont = (CFStringRef) Melder_peek32toCfstring (U"Zapf Dingbats"  ); } break;
 				}
 				void *values [2] = { (void *) styleDict, (void *) cfFont };
-				CFDictionaryRef attributes = CFDictionaryCreate (NULL, (const void **) & keys, (const void **) & values, 2,
+				CFDictionaryRef attributes = CFDictionaryCreate (nullptr, (const void **) & keys, (const void **) & values, 2,
 					& kCFTypeDictionaryKeyCallBacks, & kCFTypeDictionaryValueCallBacks);
 				CFRelease (styleDict);
 				CTFontDescriptorRef ctFontDescriptor = CTFontDescriptorCreateWithAttributes (attributes);
@@ -657,14 +528,14 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 				[styleDict release];
 				[attributes release];
 			#endif
-				ctFont = CTFontCreateWithFontDescriptor (ctFontDescriptor, lc -> size, NULL);
+				ctFont = CTFontCreateWithFontDescriptor (ctFontDescriptor, lc -> size, nullptr);
 				CFRelease (ctFontDescriptor);
 				theScreenFonts [font] [lc -> size] [style] = ctFont;
 			}
 
 			const char16 *codes16 = Melder_peek32to16 (codes);
 			#if 1
-				CFStringRef s = CFStringCreateWithBytes (NULL,
+				CFStringRef s = CFStringCreateWithBytes (nullptr,
 					(const UInt8 *) codes16, str16len (codes16) * 2,
 					kCFStringEncodingUTF16LE, false);
 				int length = CFStringGetLength (s);
@@ -692,13 +563,13 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 				CTTextAlignment textAlignment = kCTLeftTextAlignment;
 				CTParagraphStyleSetting paragraphSettings [1] = { { kCTParagraphStyleSpecifierAlignment, sizeof (CTTextAlignment), & textAlignment } };
 				paragraphStyle = CTParagraphStyleCreate (paragraphSettings, 1);
-				Melder_assert (paragraphStyle != NULL);
+				Melder_assert (paragraphStyle != nullptr);
 			}
             CFAttributedStringSetAttribute (string, textRange, kCTParagraphStyleAttributeName, paragraphStyle);
 
             RGBColor *macColor = lc -> link ? & theBlueColour : my duringXor ? & theWhiteColour : & my d_macColour;
             CGColorRef color = CGColorCreateGenericRGB (macColor->red / 65536.0, macColor->green / 65536.0, macColor->blue / 65536.0, 1.0);
-			Melder_assert (color != NULL);
+			Melder_assert (color != nullptr);
             CFAttributedStringSetAttribute (string, textRange, kCTForegroundColorAttributeName, color);
 
             /*
@@ -727,6 +598,7 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
             } else {
 				CTLineDraw (line, my d_macGraphicsContext);
             }
+			//CGContextFlush (my d_macGraphicsContext);
 			CFRelease (line);
             CGContextRestoreGState (my d_macGraphicsContext);
 
@@ -735,91 +607,14 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 			CFRelease (s);
 			//CFRelease (ctFont);
 			if (my d_macView) {
-				#if useCarbon
-					CGContextSynchronize (my d_macGraphicsContext);
-				#endif
 				[my d_macView   unlockFocus];
-			}
-        
-		#elif win
-			int font = lc -> font.integer;
-		#elif mac
-			ATSFontRef atsuiFont = (ATSFontRef) lc -> font.integer;
-			Melder_assert (atsuiFont != 0);
-			/*
-			 * Define the text layout.
-			 */
-			static ATSUTextLayout theAtsuiTextLayout;
-			if (theAtsuiTextLayout == NULL) {
-				OSStatus err = ATSUCreateTextLayout (& theAtsuiTextLayout);
-				if (err != 0) {
-					if (err == kATSUInvalidFontID) {
-						Melder_fatal (U"Praat detected an invalid font ID and will now crash, beause this is a system error. "
-							U"Please use Font Book to check for duplicate or corrupted fonts.");
-					} else {
-						Melder_fatal (U"Graphics_text/ATSUCreateTextLayout drawing: unknown MacOS error ", (int) err, U".");
-					}
+				if (! my duringXor) {
+					//[my d_macView   setNeedsDisplay: YES];   // otherwise, CoreText text may not be drawn
 				}
 			}
-			const char16 *codes16 = Melder_peek32to16 (codes);
-			int64 nchars = str16len (codes16);
-			OSStatus err = ATSUSetTextPointerLocation (theAtsuiTextLayout,
-				(ConstUniCharArrayPtr) codes16,
-				kATSUFromTextBeginning, kATSUToTextEnd, nchars);
-			if (err != 0) Melder_fatal (U"Graphics_text/ATSUSetTextPointerLocation: unknown MacOS error ", (int) err, U".");
-
-			static ATSUFontFallbacks fontFallbacks = NULL;
-			if (fontFallbacks == NULL) {
-				ATSUCreateFontFallbacks (& fontFallbacks);
-				ATSUSetObjFontFallbacks (fontFallbacks, 0, NULL, kATSUDefaultFontFallbacks);
-				ATSUSetObjFontFallbacks (fontFallbacks, 1, & theArabicAtsuiFont, kATSUSequentialFallbacksPreferred);
-			}
-			ATSUAttributeTag attributeTags [] = { kATSUCGContextTag, kATSULineFontFallbacksTag };
-			ByteCount valueSizes [] = { sizeof (CGContextRef), sizeof (ATSUFontFallbacks) };
-			ATSUAttributeValuePtr values [] = { & my d_macGraphicsContext, & fontFallbacks };
-			ATSUSetLayoutControls (theAtsuiTextLayout, 2, attributeTags, valueSizes, values);
-			ATSUSetTransientFontMatching (theAtsuiTextLayout, true);
-			/*
-			 * Set styles: font, size, colour, bold, italic.
-			 */
-			static ATSUStyle theAtsuStyle;
-			if (theAtsuStyle == NULL) {
-				ATSUCreateStyle (& theAtsuStyle);
-			}
-			Fixed fontSize = lc -> size << 16;
-			Boolean boldStyle = (lc -> style & Graphics_BOLD) != 0;
-			Boolean italicStyle = (lc -> style & Graphics_ITALIC) != 0;
-			Fract kerningOff = FloatToFract (1.0);
-			ATSUAttributeTag styleAttributeTags [] = { kATSUFontTag, kATSUSizeTag, kATSUColorTag, kATSUQDBoldfaceTag, kATSUQDItalicTag, kATSUKerningInhibitFactorTag };
-			ByteCount styleValueSizes [] = { sizeof (ATSUFontID), sizeof (Fixed), sizeof (RGBColor), sizeof (Boolean), sizeof (Boolean), sizeof (Fract) };
-			ATSUAttributeValuePtr styleValues [] = { & atsuiFont, & fontSize,
-				lc -> link ? & theBlueColour : my duringXor ? & theWhiteColour : & my d_macColour, & boldStyle, & italicStyle, & kerningOff };
-			ATSUSetAttributes (theAtsuStyle, 6, styleAttributeTags, styleValueSizes, styleValues);
-			ATSUSetRunStyle (theAtsuiTextLayout, theAtsuStyle, 0, nchars);
-			/*
-			 * Draw.
-			 */
-			CGContextSaveGState (my d_macGraphicsContext);
-        
-        NSCAssert(my d_macGraphicsContext, @"nil context");
-
-			CGContextTranslateCTM (my d_macGraphicsContext, xDC, yDC);
-
-			if (my yIsZeroAtTheTop) CGContextScaleCTM (my d_macGraphicsContext, 1.0, -1.0);
-			CGContextRotateCTM (my d_macGraphicsContext, my textRotation * NUMpi / 180.0);
-			if (my duringXor) {
-				CGContextSetBlendMode (my d_macGraphicsContext, kCGBlendModeDifference);
-				CGContextSetAllowsAntialiasing (my d_macGraphicsContext, false);
-				OSStatus err = ATSUDrawText (theAtsuiTextLayout, kATSUFromTextBeginning, kATSUToTextEnd, 0, 0);
-				if (err != 0) Melder_fatal (U"Graphics_text/ATSUDrawText during Xor: unknown MacOS error ", (int) err, U".");
-				CGContextSetBlendMode (my d_macGraphicsContext, kCGBlendModeNormal);
-				CGContextSetAllowsAntialiasing (my d_macGraphicsContext, true);
-			} else {
-				OSStatus err = ATSUDrawText (theAtsuiTextLayout, kATSUFromTextBeginning, kATSUToTextEnd, 0, 0);
-				if (err != 0) Melder_fatal (U"Graphics_text/ATSUDrawText: unknown MacOS error ", (int) err, U".");
-			}
-			CGContextRestoreGState (my d_macGraphicsContext);
 			return;
+		#elif win
+			int font = lc -> font.integer;
 		#endif
 		/*
 		 * First handle the most common case: text without rotation.
@@ -841,8 +636,8 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 			#if cairo
 				if (my duringXor) {
 					#if ALLOW_GDK_DRAWING
-						static GdkFont *font = NULL;
-						if (font == NULL) {
+						static GdkFont *font = nullptr;
+						if (! font) {
 							font = gdk_font_load ("-*-courier-medium-r-normal--*-120-*-*-*-*-iso8859-1");
 							if (! font) {
 								font = gdk_font_load ("-*-courier 10 pitch-medium-r-normal--*-120-*-*-*-*-iso8859-1");
@@ -977,7 +772,7 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 				static HBITMAP bitmap;
 				if (! inited) {
 					dc = CreateCompatibleDC (my d_gdiGraphicsContext);
-					bitmap = CreateBitmap (/*my d_gdiGraphicsContext,*/ maxWidth, maxHeight, 1, 1, NULL);
+					bitmap = CreateBitmap (/*my d_gdiGraphicsContext,*/ maxWidth, maxHeight, 1, 1, nullptr);
 					SelectBitmap (dc, bitmap);
 					inited = 1;
 				}
@@ -1015,7 +810,7 @@ static void charDraw (I, int xDC, int yDC, _Graphics_widechar *lc,
 	}
 }
 
-static void initText (I) {
+static void initText (void *void_me) {
 	iam (Graphics);
 	if (my screen) {
 		iam (GraphicsScreen);
@@ -1023,7 +818,7 @@ static void initText (I) {
 	}
 }
 
-static void exitText (I) {
+static void exitText (void *void_me) {
 	iam (Graphics);
 	if (my screen) {
 		iam (GraphicsScreen);
@@ -1128,7 +923,7 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
 					) :
 				my font;   // why not lc -> font.integer?
 			Melder_assert (font >= 0 && font <= kGraphics_font_DINGBATS);
-			lc -> font.string = NULL;   // this erases font.integer!
+			lc -> font.string = nullptr;   // this erases font.integer!
 
 			/*
 			 * Determine the style.
@@ -1140,7 +935,7 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
 			 * Determine the font-style combination.
 			 */
 			CTFontRef ctFont = theScreenFonts [font] [100] [style];
-			if (ctFont == NULL) {
+			if (! ctFont) {
 				CTFontSymbolicTraits ctStyle = ( style & Graphics_BOLD ? kCTFontBoldTrait : 0 ) | ( lc -> style & Graphics_ITALIC ? kCTFontItalicTrait : 0 );
 				NSMutableDictionary *styleDict = [[NSMutableDictionary alloc] initWithCapacity: 1];
 				[styleDict   setObject: [NSNumber numberWithUnsignedInt: ctStyle]   forKey: (id) kCTFontSymbolicTrait];
@@ -1163,7 +958,7 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
  				CTFontDescriptorRef ctFontDescriptor = CTFontDescriptorCreateWithAttributes ((CFMutableDictionaryRef) attributes);
 				[styleDict release];
 				[attributes release];
-				ctFont = CTFontCreateWithFontDescriptor (ctFontDescriptor, 100.0, NULL);
+				ctFont = CTFontCreateWithFontDescriptor (ctFontDescriptor, 100.0, nullptr);
 				CFRelease (ctFontDescriptor);
  				theScreenFonts [font] [100] [style] = ctFont;
 			}
@@ -1191,9 +986,11 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
 			{
 				charCodes [nchars] = U'\0';
 				const char16 *codes16 = Melder_peek32to16 (charCodes);
+				int64 length = str16len (codes16);
+
 				NSString *s = [[NSString alloc]
 					initWithBytes: codes16
-					length: (NSUInteger) (str16len (codes16) * 2)
+					length: (NSUInteger) (length * 2)
 					encoding: NSUTF16LittleEndianStringEncoding   // BUG: should be NSUTF16NativeStringEncoding, except that that doesn't exist
 					];
 
@@ -1211,12 +1008,12 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
 				// Create a path to render text in
 				CGMutablePathRef path = CGPathCreateMutable ();
 				NSRect measureRect = NSMakeRect (0, 0, CGFLOAT_MAX, CGFLOAT_MAX);
-				CGPathAddRect (path, NULL, (CGRect) measureRect);
+				CGPathAddRect (path, nullptr, (CGRect) measureRect);
 			
 				CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString ((CFAttributedStringRef) cfstring);
 				CFRange fitRange;
 				CGSize targetSize = CGSizeMake (lc -> width, CGFLOAT_MAX);
-				CGSize frameSize = CTFramesetterSuggestFrameSizeWithConstraints (framesetter, textRange, NULL, targetSize, & fitRange);
+				CGSize frameSize = CTFramesetterSuggestFrameSizeWithConstraints (framesetter, textRange, nullptr, targetSize, & fitRange);
 				CFRelease (framesetter);
 				CFRelease (cfstring);
 				[s release];
@@ -1225,6 +1022,17 @@ static void charSizes (Graphics me, _Graphics_widechar string [], bool measureEa
 				//bool isDiacritic = info -> ps.times == 0;
 				//lc -> width = isDiacritic ? 0.0 : frameSize.width * lc -> size / 100.0;
 				lc -> width = frameSize.width * lc -> size / 100.0;
+				#if cocoa
+					if (Melder_systemVersion >= 101100) {
+						/*
+						 * If the text ends in a space, CTFramesetterSuggestFrameSizeWithConstraints() ignores the space.
+						 * we correct for this.
+						 */
+						if (codes16 [length - 1] == u' ') {
+							lc -> width += 25.0 * lc -> size / 100.0;
+						}
+					}
+				#endif
 				nchars = 0;
 			}
 		}
@@ -1275,7 +1083,7 @@ static void drawOneCell (Graphics me, int xDC, int yDC, _Graphics_widechar lc []
 	 * We must continue even if width is zero (for adjusting textY).
 	 */
 	_Graphics_widechar *plc, *lastlc;
-	int inLink = 0;
+	bool inLink = false;
 	switch (my horizontalTextAlignment) {
 		case Graphics_LEFT:      dx = 1 + (0.1/72) * my fontSize * my resolution; break;
 		case Graphics_CENTRE:    dx = - width / 2; break;
@@ -1370,11 +1178,11 @@ static void drawOneCell (Graphics me, int xDC, int yDC, _Graphics_widechar lc []
 					links [++ numberOfLinks]. x1 = x;
 					links [numberOfLinks]. y1 = y - descent;
 					links [numberOfLinks]. y2 = y + 3 * descent;
-					inLink = TRUE;
+					inLink = true;
 				}
 			} else if (inLink) {
 				links [numberOfLinks]. x2 = x;
-				inLink = FALSE;
+				inLink = false;
 			}
 			if (plc -> kar == U'\n') {
 				xbegin = x = xDC + dx + my secondIndent * my scaleX;
@@ -1397,7 +1205,7 @@ static void drawOneCell (Graphics me, int xDC, int yDC, _Graphics_widechar lc []
 		}
 		if (inLink) {
 			links [numberOfLinks]. x2 = x;
-			inLink = FALSE;
+			inLink = false;
 		}
 		my textX = (x - my deltaX) / my scaleX;
 		my textY = (( my yIsZeroAtTheTop ? y + dy : y - dy ) - my deltaY) / my scaleY;
@@ -1615,7 +1423,7 @@ static void parseTextIntoCellsLinesRuns (Graphics me, const char32 *txt /* catta
 			(wordLink | globalLink) && my fontStyle != Graphics_CODE ? Graphics_BOLD :
 			((my fontStyle & Graphics_ITALIC) | charItalic | wordItalic | globalItalic ? Graphics_ITALIC : 0) +
 			((my fontStyle & Graphics_BOLD) | charBold | wordBold | globalBold ? Graphics_BOLD : 0);
-		out -> font.string = NULL;
+		out -> font.string = nullptr;
 		out -> font.integer = my fontStyle == Graphics_CODE || wordCode || globalCode ||
 			kar == U'/' || kar == U'|' ? kGraphics_font_COURIER : my font;
 		out -> link = wordLink | globalLink;
@@ -1662,7 +1470,7 @@ void Graphics_textRect (Graphics me, double x1, double x2, double y1, double y2,
 	initText (me);
 	parseTextIntoCellsLinesRuns (me, txt, theWidechar);
 	charSizes (me, theWidechar, true);
-	for (plc = theWidechar; plc -> kar > '\t'; plc ++) {
+	for (plc = theWidechar; plc -> kar > U'\t'; plc ++) {
 		width += plc -> width;
 		if (width > availableWidth) {
 			if (++ linesNeeded > linesAvailable) break;
@@ -1674,16 +1482,16 @@ void Graphics_textRect (Graphics me, double x1, double x2, double y1, double y2,
 	for (iline = 1; iline <= lines; iline ++) {
 		width = 0.0;
 		for (plc = startOfLine; plc -> kar > U'\t'; plc ++) {
-			int flush = FALSE;
+			bool flush = false;
 			width += plc -> width;
-			if (width > availableWidth) flush = TRUE;
+			if (width > availableWidth) flush = true;
 			/*
 			 * Trick for incorporating end-of-text.
 			 */
 			if (! flush && plc [1]. kar <= U'\t') {
 				Melder_assert (iline == lines);
 				plc ++;   // brr
-				flush = TRUE;
+				flush = true;
 			}
 			if (flush) {
 				char32 saveKar = plc -> kar;
@@ -1709,25 +1517,25 @@ void Graphics_textRect (Graphics me, double x1, double x2, double y1, double y2,
 
 static void _Graphics_text (Graphics me, double xWC, double yWC, const char32 *txt) {
 	if (my wrapWidth == 0.0 && str32chr (txt, U'\n') && my textRotation == 0.0) {
-		double lineSpacingWC = (1.2/72) * my fontSize * my resolution / fabs (my scaleY);
+		double lineSpacingWC = (1.2/72.0) * my fontSize * my resolution / fabs (my scaleY);
 		long numberOfLines = 1;
 		for (const char32 *p = & txt [0]; *p != U'\0'; p ++) {
-			if (*p == '\n') {
+			if (*p == U'\n') {
 				numberOfLines ++;
 			}
 		}
 		yWC +=
-			my verticalTextAlignment == Graphics_TOP ? 0 :
+			my verticalTextAlignment == Graphics_TOP ? 0.0 :
 			my verticalTextAlignment == Graphics_HALF ? 0.5 * (numberOfLines - 1) * lineSpacingWC:
 			(numberOfLines - 1) * lineSpacingWC;
 		autostring32 linesToDraw = Melder_dup_f (txt);
 		char32 *p = & linesToDraw [0];
 		for (;;) {
 			char32 *newline = str32chr (p, U'\n');
-			if (newline != NULL) *newline = U'\0';
+			if (newline) *newline = U'\0';
 			Graphics_text (me, xWC, yWC, p);
 			yWC -= lineSpacingWC;
-			if (newline != NULL) {
+			if (newline) {
 				p = newline + 1;
 			} else {
 				break;
@@ -1810,13 +1618,13 @@ double Graphics_inqTextY (Graphics me) { return my textY; }
 
 int Graphics_getLinks (Graphics_Link **plinks) { *plinks = & links [0]; return numberOfLinks; }
 
-static double psTextWidth (_Graphics_widechar string [], int useSilipaPS) {
+static double psTextWidth (_Graphics_widechar string [], bool useSilipaPS) {
 	_Graphics_widechar *character;
 	/*
 	 * The following has to be kept IN SYNC with GraphicsPostscript::charSize.
 	 */
 	double textWidth = 0;
-	for (character = string; character -> kar > '\t'; character ++) {
+	for (character = string; character -> kar > U'\t'; character ++) {
 		Longchar_Info info = Longchar_getInfoFromNative (character -> kar);
 		int font = info -> alphabet == Longchar_SYMBOL ? kGraphics_font_SYMBOL :
 				info -> alphabet == Longchar_PHONETIC ? kGraphics_font_IPATIMES :
@@ -1859,7 +1667,7 @@ static double psTextWidth (_Graphics_widechar string [], int useSilipaPS) {
 	/*
 	 * The following has to be kept IN SYNC with charSizes ().
 	 */
-	for (character = string; character -> kar > '\t'; character ++) {
+	for (character = string; character -> kar > U'\t'; character ++) {
 		if ((character -> style & Graphics_ITALIC) != 0) {
 			_Graphics_widechar *nextCharacter = character + 1;
 			if (nextCharacter -> kar <= '\t') {
@@ -1867,7 +1675,7 @@ static double psTextWidth (_Graphics_widechar string [], int useSilipaPS) {
 			} else if (((nextCharacter -> style & Graphics_ITALIC) == 0 && nextCharacter -> baseline >= character -> baseline)
 				|| (character -> baseline == 0 && nextCharacter -> baseline > 0))
 			{
-				if (nextCharacter -> kar == '.' || nextCharacter -> kar == ',')
+				if (nextCharacter -> kar == U'.' || nextCharacter -> kar == U',')
 					textWidth += 0.5 * POSTSCRIPT_SLANT_CORRECTION;
 				else
 					textWidth += POSTSCRIPT_SLANT_CORRECTION;
@@ -1888,57 +1696,7 @@ double Graphics_textWidth_ps (Graphics me, const char32 *txt, bool useSilipaPS)
 }
 
 #if mac
-#if useCarbon
-static ATSFontRef findFont (CFStringRef name) {
-	ATSFontRef fontRef = ATSFontFindFromPostScriptName (name, kATSOptionFlagsDefault);
-	if (fontRef == 0 || fontRef == kATSUInvalidFontID) {
-		fontRef = ATSFontFindFromName (name, kATSOptionFlagsDefault);
-		if (fontRef == 0 || fontRef == kATSUInvalidFontID) {
-			return 0;
-		}
-	}
-	return fontRef;		
-}
-#endif
-bool _GraphicsMac_tryToInitializeFonts (void) {
-#if useCarbon
-	if (theTimesAtsuiFont != 0) return true;   // once
-	theTimesAtsuiFont = findFont (CFSTR ("Times"));
-	if (! theTimesAtsuiFont) theTimesAtsuiFont = findFont (CFSTR ("Times New Roman"));
-	theHelveticaAtsuiFont = findFont (CFSTR ("Helvetica"));
-	if (! theHelveticaAtsuiFont) theHelveticaAtsuiFont = findFont (CFSTR ("Arial"));
-	theCourierAtsuiFont = findFont (CFSTR ("Courier"));
-	if (! theCourierAtsuiFont) theCourierAtsuiFont = findFont (CFSTR ("Courier New"));
-	theSymbolAtsuiFont = findFont (CFSTR ("Symbol"));
-	thePalatinoAtsuiFont = findFont (CFSTR ("Palatino"));
-	if (! thePalatinoAtsuiFont) thePalatinoAtsuiFont = findFont (CFSTR ("Book Antiqua"));
-	if (! thePalatinoAtsuiFont) thePalatinoAtsuiFont = theTimesAtsuiFont;
-	theZapfDingbatsAtsuiFont = findFont (CFSTR ("Zapf Dingbats"));
-	if (! theZapfDingbatsAtsuiFont) theZapfDingbatsAtsuiFont = theTimesAtsuiFont;
-	if (! theTimesAtsuiFont || ! theHelveticaAtsuiFont || ! theCourierAtsuiFont || ! theSymbolAtsuiFont) {
-		Melder_warning (U"Praat cannot find one or more of the fonts Times (or Times New Roman), "
-			U"Helvetica (or Arial), Courier (or Courier New), and Symbol. "
-			U"Praat will have limited capabilities for international text.");
-		return false;
-	}
-	theIpaTimesAtsuiFont = findFont (CFSTR ("Doulos SIL"));
-	theIpaPalatinoAtsuiFont = findFont (CFSTR ("Charis SIL"));
-	if (! theIpaTimesAtsuiFont) {
-		if (theIpaPalatinoAtsuiFont) {
-			theIpaTimesAtsuiFont = theIpaPalatinoAtsuiFont;
-		} else {
-			Melder_warning (U"Praat cannot find the Charis SIL or Doulos SIL font.\n"
-				U"Phonetic characters will not look well.");   // because ATSUI will use the "last resort font"
-			theIpaTimesAtsuiFont = theTimesAtsuiFont;
-			theIpaPalatinoAtsuiFont = thePalatinoAtsuiFont;
-		}
-	} else if (! theIpaPalatinoAtsuiFont) {
-		theIpaPalatinoAtsuiFont = theIpaTimesAtsuiFont;
-	}
-	Melder_assert (theTimesAtsuiFont != 0);
-	ATSUFindFontFromName (NULL, 0, 0, 0, 0, kFontArabicLanguage, & theArabicAtsuiFont);
-	return true;
-#else
+bool _GraphicsMac_tryToInitializeFonts () {
     static bool inited = false;
     if (inited) return true;
     NSArray *fontNames = [[NSFontManager sharedFontManager] availableFontFamilies];
@@ -1956,7 +1714,6 @@ bool _GraphicsMac_tryToInitializeFonts (void) {
 	hasIpaSerif = hasDoulos || hasCharis;
     inited = true;
     return true;
-#endif
 }
 #endif
 
@@ -1975,10 +1732,6 @@ void _GraphicsScreen_text_init (GraphicsScreen me) {   // BUG: should be done as
 							//DeleteObject (fonts [my resolutionNumber] [font] [size] [style]);
 							//fonts [my resolutionNumber] [font] [size] [style] = 0;
 						}
-	#elif mac
-		if (theTimesAtsuiFont == 0) {
-			Melder_assert (_GraphicsMac_tryToInitializeFonts ());   // should have been handled when setting my useQuartz to true
-		}
 	#endif
 }
 
diff --git a/sys/Graphics_utils.cpp b/sys/Graphics_utils.cpp
index 34f487e..f6a8e53 100644
--- a/sys/Graphics_utils.cpp
+++ b/sys/Graphics_utils.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <math.h>
@@ -35,11 +34,11 @@ void Graphics_drawInnerBox (Graphics me) {
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
 	Graphics_setInner (me);
-	Graphics_setWindow (me, 0, 1, 0, 1);
+	Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
 	Graphics_setLineType (me, Graphics_DRAWN);
 	Graphics_setLineWidth (me, 2.0 * lineWidth);
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_rectangle (me, 0, 1, 0, 1);
+	Graphics_rectangle (me, 0.0, 1.0, 0.0, 1.0);
 	Graphics_unsetInner (me);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setLineType (me, lineType);
@@ -52,13 +51,13 @@ void Graphics_textLeft (Graphics me, bool farr, const char32 *text) {
 	int vert = farr ? Graphics_TOP : Graphics_BOTTOM;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, 0, 1);
-	Graphics_setTextRotation (me, 90);
+	Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setTextRotation (me, 90.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, vert);
 	if (! farr) Graphics_setInner (me);
-	Graphics_text (me, 0, 0.5, text);
+	Graphics_text (me, 0.0, 0.5, text);
 	if (! farr) Graphics_unsetInner (me);
-	Graphics_setTextRotation (me, 0);
+	Graphics_setTextRotation (me, 0.0);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setColour (me, colour);
 }
@@ -69,12 +68,12 @@ void Graphics_textRight (Graphics me, bool farr, const char32 *text) {
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, vert);
-	Graphics_setWindow (me, 0, 1, 0, 1);
-	Graphics_setTextRotation (me, 270);
+	Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
+	Graphics_setTextRotation (me, 270.0);
 	if (! farr) Graphics_setInner (me);
-	Graphics_text (me, 1, 0.5, text);
+	Graphics_text (me, 1.0, 0.5, text);
 	if (! farr) Graphics_unsetInner (me);
-	Graphics_setTextRotation (me, 0);
+	Graphics_setTextRotation (me, 0.0);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setColour (me, colour);
 }
@@ -83,10 +82,10 @@ void Graphics_textBottom (Graphics me, bool farr, const char32 *text) {
 	double x1WC = my d_x1WC, x2WC = my d_x2WC, y1WC = my d_y1WC, y2WC = my d_y2WC;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, 0, 1);
+	Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
 	if (farr) {
 		Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (me, 0.5, 0, text);
+		Graphics_text (me, 0.5, 0.0, text);
 	} else {
 		Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 		Graphics_setInner (me);
@@ -101,14 +100,14 @@ void Graphics_textTop (Graphics me, bool farr, const char32 *text) {
 	double x1WC = my d_x1WC, x2WC = my d_x2WC, y1WC = my d_y1WC, y2WC = my d_y2WC;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, 0, 1);
+	Graphics_setWindow (me, 0.0, 1.0, 0.0, 1.0);
 	if (farr) {
 		Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
-		Graphics_text (me, 0.5, 1, text);
+		Graphics_text (me, 0.5, 1.0, text);
 	} else {
 		Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 		Graphics_setInner (me);
-		Graphics_text (me, 0.5, 1 + my vertTick, text);
+		Graphics_text (me, 0.5, 1.0 + my vertTick, text);
 		Graphics_unsetInner (me);
 	}
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
@@ -140,7 +139,7 @@ void Graphics_marksLeft (Graphics me, int numberOfMarks, bool haveNumbers, bool
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = 2; i < numberOfMarks; i ++) {
 			double f = (i - 1.0) / (numberOfMarks - 1), yWC = y1WC + (y2WC - y1WC) * f;
-			Graphics_line (me, 0, yWC, 1, yWC);
+			Graphics_line (me, 0.0, yWC, 1.0, yWC);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -166,8 +165,8 @@ void Graphics_marksRight (Graphics me, int numberOfMarks, bool haveNumbers, bool
 	}
 	for (int i = 1; i <= numberOfMarks; i ++) {
 		double f = (i - 1.0) / (numberOfMarks - 1), yWC = y1WC + (y2WC - y1WC) * f;
-		if (haveNumbers) Graphics_text (me, 1 + my horTick, yWC, Melder_float (Melder_half (yWC)));
-		if (haveTicks) Graphics_line (me, 1, yWC, 1 + my horTick, yWC);
+		if (haveNumbers) Graphics_text (me, 1.0 + my horTick, yWC, Melder_float (Melder_half (yWC)));
+		if (haveTicks) Graphics_line (me, 1.0, yWC, 1.0 + my horTick, yWC);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines && numberOfMarks > 2) {
@@ -175,7 +174,7 @@ void Graphics_marksRight (Graphics me, int numberOfMarks, bool haveNumbers, bool
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = 2; i < numberOfMarks; i ++) {
 			double f = (i - 1.0) / (numberOfMarks - 1), yWC = y1WC + (y2WC - y1WC) * f;
-			Graphics_line (me, 0, yWC, 1, yWC);
+			Graphics_line (me, 0.0, yWC, 1.0, yWC);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -192,7 +191,7 @@ void Graphics_marksBottom (Graphics me, int numberOfMarks, bool haveNumbers, boo
 	Graphics_Colour colour = my colour;
 	if (numberOfMarks < 2) return;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 	Graphics_setInner (me);
 	if (haveTicks) {
@@ -211,7 +210,7 @@ void Graphics_marksBottom (Graphics me, int numberOfMarks, bool haveNumbers, boo
 		for (int i = 2; i < numberOfMarks; i ++)
 		{
 			double f = (i - 1.0) / (numberOfMarks - 1), xWC = x1WC + (x2WC - x1WC) * f;
-			Graphics_line (me, xWC, 0, xWC, 1);
+			Graphics_line (me, xWC, 0.0, xWC, 1.0);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -228,7 +227,7 @@ void Graphics_marksTop (Graphics me, int numberOfMarks, bool haveNumbers, bool h
 	Graphics_Colour colour = my colour;
 	if (numberOfMarks < 2) return;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 	Graphics_setInner (me);
 	if (haveTicks) {
@@ -237,8 +236,8 @@ void Graphics_marksTop (Graphics me, int numberOfMarks, bool haveNumbers, bool h
 	}
 	for (int i = 1; i <= numberOfMarks; i ++) {
 		double f = (i - 1.0) / (numberOfMarks - 1), xWC = x1WC + (x2WC - x1WC) * f;
-		if (haveNumbers) Graphics_text (me, xWC, 1 + my vertTick, Melder_float (Melder_half (xWC)));
-		if (haveTicks) Graphics_line (me, xWC, 1, xWC, 1 + my vertTick);
+		if (haveNumbers) Graphics_text (me, xWC, 1.0 + my vertTick, Melder_float (Melder_half (xWC)));
+		if (haveTicks) Graphics_line (me, xWC, 1.0, xWC, 1.0 + my vertTick);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines && numberOfMarks > 2) {
@@ -246,7 +245,7 @@ void Graphics_marksTop (Graphics me, int numberOfMarks, bool haveNumbers, bool h
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = 2; i < numberOfMarks; i ++) {
 			double f = (i - 1.0) / (numberOfMarks - 1), xWC = x1WC + (x2WC - x1WC) * f;
-			Graphics_line (me, xWC, 0, xWC, 1);
+			Graphics_line (me, xWC, 0.0, xWC, 1.0);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -284,9 +283,9 @@ void Graphics_marksLeftLogarithmic (Graphics me, int numberOfMarksPerDecade, boo
 	Graphics_setInner (me);
 	for (int i = 1; i <= numberOfMarksPerDecade; i ++) {
 		double y = decade_y [numberOfMarksPerDecade] [i];
-		while (y < (y1<y2?py1:py2)) y *= 10;
-		while (y >= (y1<y2?py1:py2)) y /= 10;
-		for (y *= 10; y <= (y1<y2?py2:py1); y *= 10) {
+		while (y < (y1<y2?py1:py2)) y *= 10.0;
+		while (y >= (y1<y2?py1:py2)) y /= 10.0;
+		for (y *= 10.0; y <= (y1<y2?py2:py1); y *= 10.0) {
 			if (haveNumbers) Graphics_text (me, - my horTick, log10 (y), Melder_float (Melder_half (y)));
 			if (haveTicks) {
 				Graphics_setLineWidth (me, 2.0 * lineWidth);
@@ -297,7 +296,7 @@ void Graphics_marksLeftLogarithmic (Graphics me, int numberOfMarksPerDecade, boo
 			if (haveDottedLines) {
 				Graphics_setLineType (me, Graphics_DOTTED);
 				Graphics_setLineWidth (me, 0.67 * lineWidth);
-				Graphics_line (me, 0, log10 (y), 1, log10 (y));
+				Graphics_line (me, 0.0, log10 (y), 1.0, log10 (y));
 				Graphics_setLineType (me, lineType);
 				Graphics_setLineWidth (me, lineWidth);
 			}
@@ -315,29 +314,29 @@ void Graphics_marksRightLogarithmic (Graphics me, int numberOfMarksPerDecade, bo
 	Graphics_Colour colour = my colour;
 	if (numberOfMarksPerDecade < 1) numberOfMarksPerDecade = 1;
 	if (numberOfMarksPerDecade > MAXNUM_MARKS_PER_DECADE) numberOfMarksPerDecade = MAXNUM_MARKS_PER_DECADE;
-	if (y1 > 300 || y2 > 300) return;
-	double py1 = pow (10, y1 + ( y1 < y2 ? -1e-6 : 1e-6 ));
-	double py2 = pow (10, y2 + ( y1 < y2 ? 1e-6 : -1e-6 ));
+	if (y1 > 300.0 || y2 > 300.0) return;
+	double py1 = pow (10.0, y1 + ( y1 < y2 ? -1e-6 : 1e-6 ));
+	double py2 = pow (10.0, y2 + ( y1 < y2 ? 1e-6 : -1e-6 ));
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, y1, y2);
+	Graphics_setWindow (me, 0.0, 1.0, y1, y2);
 	Graphics_setTextAlignment (me, Graphics_LEFT, Graphics_HALF);
 	Graphics_setInner (me);
 	for (int i = 1; i <= numberOfMarksPerDecade; i ++) {
 		double y = decade_y [numberOfMarksPerDecade] [i];
-		while (y < (y1<y2?py1:py2)) y *= 10;
-		while (y >= (y1<y2?py1:py2)) y /= 10;
-		for (y *= 10; y <= (y1<y2?py2:py1); y *= 10) {
-			if (haveNumbers) Graphics_text (me, 1 + my horTick, log10 (y), Melder_float (Melder_half (y)));
+		while (y < (y1<y2?py1:py2)) y *= 10.0;
+		while (y >= (y1<y2?py1:py2)) y /= 10.0;
+		for (y *= 10.0; y <= (y1<y2?py2:py1); y *= 10.0) {
+			if (haveNumbers) Graphics_text (me, 1.0 + my horTick, log10 (y), Melder_float (Melder_half (y)));
 			if (haveTicks) {
 				Graphics_setLineWidth (me, 2.0 * lineWidth);
 				Graphics_setLineType (me, Graphics_DRAWN);
-				Graphics_line (me, 1, log10 (y), 1 + my horTick, log10 (y));
+				Graphics_line (me, 1.0, log10 (y), 1.0 + my horTick, log10 (y));
 				Graphics_setLineWidth (me, lineWidth);
 			}
 			if (haveDottedLines) {
 				Graphics_setLineType (me, Graphics_DOTTED);
 				Graphics_setLineWidth (me, 0.67 * lineWidth);
-				Graphics_line (me, 0, log10 (y), 1, log10 (y));
+				Graphics_line (me, 0.0, log10 (y), 1.0, log10 (y));
 				Graphics_setLineType (me, lineType);
 				Graphics_setLineWidth (me, lineWidth);
 			}
@@ -355,29 +354,29 @@ void Graphics_marksTopLogarithmic (Graphics me, int numberOfMarksPerDecade, bool
 	Graphics_Colour colour = my colour;
 	if (numberOfMarksPerDecade < 1) numberOfMarksPerDecade = 1;
 	if (numberOfMarksPerDecade > MAXNUM_MARKS_PER_DECADE) numberOfMarksPerDecade = MAXNUM_MARKS_PER_DECADE;
-	if (x1 > 300 || x2 > 300) return;
-	double px1 = pow (10, x1 + ( x1 < x2 ? -1e-6 : 1e-6 ));
-	double px2 = pow (10, x2 + ( x1 < x2 ? 1e-6 : -1e-6 ));
+	if (x1 > 300.0 || x2 > 300.0) return;
+	double px1 = pow (10.0, x1 + ( x1 < x2 ? -1e-6 : 1e-6 ));
+	double px2 = pow (10.0, x2 + ( x1 < x2 ? 1e-6 : -1e-6 ));
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1, x2, 0, 1);
+	Graphics_setWindow (me, x1, x2, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 	Graphics_setInner (me);
 	for (int i = 1; i <= numberOfMarksPerDecade; i ++) {
 		double x = decade_y [numberOfMarksPerDecade] [i];
-		while (x < (x1<x2?px1:px2)) x *= 10;
-		while (x >= (x1<x2?px1:px2)) x /= 10;
-		for (x *= 10; x <= (x1<x2?px2:px1); x *= 10) {
-			if (haveNumbers) Graphics_text (me, log10 (x), 1 + my vertTick, Melder_float (Melder_half (x)));
+		while (x < (x1<x2?px1:px2)) x *= 10.0;
+		while (x >= (x1<x2?px1:px2)) x /= 10.0;
+		for (x *= 10.0; x <= (x1<x2?px2:px1); x *= 10.0) {
+			if (haveNumbers) Graphics_text (me, log10 (x), 1.0 + my vertTick, Melder_float (Melder_half (x)));
 			if (haveTicks) {
 				Graphics_setLineWidth (me, 2.0 * lineWidth);
 				Graphics_setLineType (me, Graphics_DRAWN);
-				Graphics_line (me, log10 (x), 1, log10 (x), 1 + my vertTick);
+				Graphics_line (me, log10 (x), 1.0, log10 (x), 1.0 + my vertTick);
 				Graphics_setLineWidth (me, lineWidth);
 			}
 			if (haveDottedLines) {
 				Graphics_setLineType (me, Graphics_DOTTED);
 				Graphics_setLineWidth (me, 0.67 * lineWidth);
-				Graphics_line (me, log10 (x), 0, log10 (x), 1);
+				Graphics_line (me, log10 (x), 0.0, log10 (x), 1.0);
 				Graphics_setLineType (me, lineType);
 				Graphics_setLineWidth (me, lineWidth);
 			}
@@ -395,29 +394,29 @@ void Graphics_marksBottomLogarithmic (Graphics me, int numberOfMarksPerDecade, b
 	Graphics_Colour colour = my colour;
 	if (numberOfMarksPerDecade < 1) numberOfMarksPerDecade = 1;
 	if (numberOfMarksPerDecade > MAXNUM_MARKS_PER_DECADE) numberOfMarksPerDecade = MAXNUM_MARKS_PER_DECADE;
-	if (x1 > 300 || x2 > 300) return;
-	double px1 = pow (10, x1 + ( x1 < x2 ? -1e-6 : 1e-6 ));
-	double px2 = pow (10, x2 + ( x1 < x2 ? 1e-6 : -1e-6 ));
+	if (x1 > 300.0 || x2 > 300.0) return;
+	double px1 = pow (10.0, x1 + ( x1 < x2 ? -1e-6 : 1e-6 ));
+	double px2 = pow (10.0, x2 + ( x1 < x2 ? 1e-6 : -1e-6 ));
 	Graphics_setColour (me, Graphics_BLACK);
 	Graphics_setWindow (me, x1, x2, 0, 1);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 	Graphics_setInner (me);
 	for (int i = 1; i <= numberOfMarksPerDecade; i ++) {
 		double x = decade_y [numberOfMarksPerDecade] [i];
-		while (x < (x1<x2?px1:px2)) x *= 10;
-		while (x >= (x1<x2?px1:px2)) x /= 10;
-		for (x *= 10; x <= (x1<x2?px2:px1); x *= 10) {
+		while (x < (x1<x2?px1:px2)) x *= 10.0;
+		while (x >= (x1<x2?px1:px2)) x /= 10.0;
+		for (x *= 10.0; x <= (x1<x2?px2:px1); x *= 10.0) {
 			if (haveNumbers) Graphics_text (me, log10 (x), - my vertTick, Melder_float (Melder_half (x)));
 			if (haveTicks) {
 				Graphics_setLineWidth (me, 2.0 * lineWidth);
 				Graphics_setLineType (me, Graphics_DRAWN);
-				Graphics_line (me, log10 (x), - my vertTick, log10 (x), 0);
+				Graphics_line (me, log10 (x), - my vertTick, log10 (x), 0.0);
 				Graphics_setLineWidth (me, lineWidth);
 			}
 			if (haveDottedLines) {
 				Graphics_setLineType (me, Graphics_DOTTED);
 				Graphics_setLineWidth (me, 0.67 * lineWidth);
-				Graphics_line (me, log10 (x), 0, log10 (x), 1);
+				Graphics_line (me, log10 (x), 0.0, log10 (x), 1.0);
 				Graphics_setLineType (me, lineType);
 				Graphics_setLineWidth (me, lineWidth);
 			}
@@ -434,20 +433,20 @@ void Graphics_markLeft (Graphics me, double position, bool hasNumber, bool hasTi
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, y1WC, y2WC);
+	Graphics_setWindow (me, 0.0, 1.0, y1WC, y2WC);
 	Graphics_setTextAlignment (me, Graphics_RIGHT, Graphics_HALF);
 	Graphics_setInner (me);
 	if (hasNumber) Graphics_text (me, - my horTick, position, Melder_float (Melder_half (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, - my horTick, position, 0, position);
+		Graphics_line (me, - my horTick, position, 0.0, position);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, 0, position, 1, position);
+		Graphics_line (me, 0.0, position, 1.0, position);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (text && text [0]) Graphics_text (me, - my horTick, position, text);   // 'text' has to stay valid until here; no Graphics is allowed to use the cat buffer!
@@ -463,23 +462,23 @@ void Graphics_markRight (Graphics me, double position, bool hasNumber, bool hasT
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, y1WC, y2WC);
+	Graphics_setWindow (me, 0.0, 1.0, y1WC, y2WC);
 	Graphics_setTextAlignment (me, Graphics_LEFT, Graphics_HALF);
 	Graphics_setInner (me);
-	if (hasNumber) Graphics_text (me, 1 + my horTick, position, Melder_float (Melder_half (position)));
+	if (hasNumber) Graphics_text (me, 1.0 + my horTick, position, Melder_float (Melder_half (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, 1, position, 1 + my horTick, position);
+		Graphics_line (me, 1.0, position, 1.0 + my horTick, position);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, 0, position, 1, position);
+		Graphics_line (me, 0.0, position, 1.0, position);
 		Graphics_setLineWidth (me, lineWidth);
 	}
-	if (text && text [0]) Graphics_text (me, 1 + my horTick, position, text);
+	if (text && text [0]) Graphics_text (me, 1.0 + my horTick, position, text);
 	Graphics_unsetInner (me);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setLineType (me, lineType);
@@ -492,23 +491,23 @@ void Graphics_markTop (Graphics me, double position, bool hasNumber, bool hasTic
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 	Graphics_setInner (me);
-	if (hasNumber) Graphics_text (me, position, 1 + my vertTick, Melder_float (Melder_single (position)));
+	if (hasNumber) Graphics_text (me, position, 1.0 + my vertTick, Melder_float (Melder_single (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, position, 1, position, 1 + my vertTick);
+		Graphics_line (me, position, 1.0, position, 1.0 + my vertTick);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, position, 0, position, 1);
+		Graphics_line (me, position, 0.0, position, 1.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
-	if (text && text [0]) Graphics_text (me, position, 1 + my vertTick, text);
+	if (text && text [0]) Graphics_text (me, position, 1.0 + my vertTick, text);
 	Graphics_unsetInner (me);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setLineType (me, lineType);
@@ -521,20 +520,20 @@ void Graphics_markBottom (Graphics me, double position, bool hasNumber, bool has
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 	Graphics_setInner (me);
 	if (hasNumber) Graphics_text (me, position, - my vertTick, Melder_float (Melder_single (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, position, - my vertTick, position, 0);
+		Graphics_line (me, position, - my vertTick, position, 0.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, position, 0, position, 1);
+		Graphics_line (me, position, 0.0, position, 1.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (text && text [0]) Graphics_text (me, position, - my vertTick, text);
@@ -549,7 +548,7 @@ void Graphics_markLeftLogarithmic (Graphics me, double position, bool hasNumber,
 	int lineType = my lineType;
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
-	if (position <= 0) return;
+	if (position <= 0.0) return;
 	Graphics_setColour (me, Graphics_BLACK);
 	Graphics_setWindow (me, 0, 1, y1WC, y2WC);
 	Graphics_setTextAlignment (me, Graphics_RIGHT, Graphics_HALF);
@@ -558,13 +557,13 @@ void Graphics_markLeftLogarithmic (Graphics me, double position, bool hasNumber,
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, - my horTick, log10 (position), 0, log10 (position));
+		Graphics_line (me, - my horTick, log10 (position), 0.0, log10 (position));
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, 0, log10 (position), 1, log10 (position));
+		Graphics_line (me, 0.0, log10 (position), 1.0, log10 (position));
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (text && text [0]) Graphics_text (me, - my horTick, log10 (position), text);
@@ -579,25 +578,25 @@ void Graphics_markRightLogarithmic (Graphics me, double position, bool hasNumber
 	int lineType = my lineType;
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
-	if (position <= 0) return;
+	if (position <= 0.0) return;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, 0, 1, y1WC, y2WC);
+	Graphics_setWindow (me, 0.0, 1.0, y1WC, y2WC);
 	Graphics_setTextAlignment (me, Graphics_LEFT, Graphics_HALF);
 	Graphics_setInner (me);
-	if (hasNumber) Graphics_text (me, 1 + my horTick, log10 (position), Melder_float (Melder_half (position)));
+	if (hasNumber) Graphics_text (me, 1.0 + my horTick, log10 (position), Melder_float (Melder_half (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, 1, log10 (position), 1 + my horTick, log10 (position));
+		Graphics_line (me, 1.0, log10 (position), 1.0 + my horTick, log10 (position));
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, 0, log10 (position), 1, log10 (position));
+		Graphics_line (me, 0.0, log10 (position), 1.0, log10 (position));
 		Graphics_setLineWidth (me, lineWidth);
 	}
-	if (text && text [0]) Graphics_text (me, 1 + my horTick, log10 (position), text);
+	if (text && text [0]) Graphics_text (me, 1.0 + my horTick, log10 (position), text);
 	Graphics_unsetInner (me);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setLineType (me, lineType);
@@ -609,25 +608,25 @@ void Graphics_markTopLogarithmic (Graphics me, double position, bool hasNumber,
 	int lineType = my lineType;
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
-	if (position <= 0) return;
+	if (position <= 0.0) return;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 	Graphics_setInner (me);
-	if (hasNumber) Graphics_text (me, log10 (position), 1 + my vertTick, Melder_float (Melder_half (position)));
+	if (hasNumber) Graphics_text (me, log10 (position), 1.0 + my vertTick, Melder_float (Melder_half (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, log10 (position), 1, log10 (position), 1 + my vertTick);
+		Graphics_line (me, log10 (position), 1.0, log10 (position), 1.0 + my vertTick);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, log10 (position), 0, log10 (position), 1);
+		Graphics_line (me, log10 (position), 0.0, log10 (position), 1.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
-	if (text && text [0]) Graphics_text (me, log10 (position), 1 + my vertTick, text);
+	if (text && text [0]) Graphics_text (me, log10 (position), 1.0 + my vertTick, text);
 	Graphics_unsetInner (me);
 	Graphics_setWindow (me, x1WC, x2WC, y1WC, y2WC);
 	Graphics_setLineType (me, lineType);
@@ -639,22 +638,22 @@ void Graphics_markBottomLogarithmic (Graphics me, double position, bool hasNumbe
 	int lineType = my lineType;
 	double lineWidth = my lineWidth;
 	Graphics_Colour colour = my colour;
-	if (position <= 0) return;
+	if (position <= 0.0) return;
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 	Graphics_setInner (me);
 	if (hasNumber) Graphics_text (me, log10 (position), - my vertTick, Melder_float (Melder_half (position)));
 	if (hasTick) {
 		Graphics_setLineType (me, Graphics_DRAWN);
 		Graphics_setLineWidth (me, 2.0 * lineWidth);
-		Graphics_line (me, log10 (position), - my vertTick, log10 (position), 0);
+		Graphics_line (me, log10 (position), - my vertTick, log10 (position), 0.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (hasDottedLine) {
 		Graphics_setLineType (me, Graphics_DOTTED);
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
-		Graphics_line (me, log10 (position), 0, log10 (position), 1);
+		Graphics_line (me, log10 (position), 0.0, log10 (position), 1.0);
 		Graphics_setLineWidth (me, lineWidth);
 	}
 	if (text && text [0]) Graphics_text (me, log10 (position), - my vertTick, text);
@@ -683,7 +682,7 @@ void Graphics_marksLeftEvery (Graphics me, double units, double distance, bool h
 	for (int i = first; i <= last; i ++) {
 		double yWC = i * distance;
 		if (haveNumbers) Graphics_text (me, - my horTick, yWC, Melder_float (Melder_half (yWC / units)));
-		if (haveTicks) Graphics_line (me, - my horTick, yWC, 0, yWC);
+		if (haveTicks) Graphics_line (me, - my horTick, yWC, 0.0, yWC);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines) {
@@ -691,7 +690,7 @@ void Graphics_marksLeftEvery (Graphics me, double units, double distance, bool h
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = first; i <= last; i ++) {
 			double yWC = i * distance;
-			Graphics_line (me, 0, yWC, 1, yWC);
+			Graphics_line (me, 0.0, yWC, 1.0, yWC);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -720,8 +719,8 @@ void Graphics_marksRightEvery (Graphics me, double units, double distance, bool
 	}
 	for (int i = first; i <= last; i ++) {
 		double yWC = i * distance;
-		if (haveNumbers) Graphics_text (me, 1 + my horTick, yWC, Melder_float (Melder_half (yWC / units)));
-		if (haveTicks) Graphics_line (me, 1, yWC, 1 + my horTick, yWC);
+		if (haveNumbers) Graphics_text (me, 1.0 + my horTick, yWC, Melder_float (Melder_half (yWC / units)));
+		if (haveTicks) Graphics_line (me, 1.0, yWC, 1.0 + my horTick, yWC);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines) {
@@ -729,7 +728,7 @@ void Graphics_marksRightEvery (Graphics me, double units, double distance, bool
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = first; i <= last; i ++) {
 			double yWC = i * distance;
-			Graphics_line (me, 0, yWC, 1, yWC);
+			Graphics_line (me, 0.0, yWC, 1.0, yWC);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -748,7 +747,7 @@ void Graphics_marksBottomEvery (Graphics me, double units, double distance, bool
 	first = (int) ceil (( x1WC < x2WC ? x1WC : x2WC ) / distance - 1e-5);
 	last = (int) floor (( x1WC < x2WC ? x2WC : x1WC) / distance + 1e-5);
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_TOP);
 	Graphics_setInner (me);
 	if (haveTicks) {
@@ -758,7 +757,7 @@ void Graphics_marksBottomEvery (Graphics me, double units, double distance, bool
 	for (int i = first; i <= last; i ++) {
 		double xWC = i * distance;
 		if (haveNumbers) Graphics_text (me, xWC, - my vertTick, Melder_float (Melder_half (xWC / units)));
-		if (haveTicks) Graphics_line (me, xWC, - my vertTick, xWC, 0);
+		if (haveTicks) Graphics_line (me, xWC, - my vertTick, xWC, 0.0);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines) {
@@ -766,7 +765,7 @@ void Graphics_marksBottomEvery (Graphics me, double units, double distance, bool
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = first; i <= last; i ++) {
 			double xWC = i * distance;
-			Graphics_line (me, xWC, 0, xWC, 1);
+			Graphics_line (me, xWC, 0.0, xWC, 1.0);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -785,7 +784,7 @@ void Graphics_marksTopEvery (Graphics me, double units, double distance, bool ha
 	first = (int) ceil (( x1WC < x2WC ? x1WC : x2WC ) / distance - 1e-5);
 	last = (int) floor (( x1WC < x2WC ? x2WC : x1WC) / distance + 1e-5);
 	Graphics_setColour (me, Graphics_BLACK);
-	Graphics_setWindow (me, x1WC, x2WC, 0, 1);
+	Graphics_setWindow (me, x1WC, x2WC, 0.0, 1.0);
 	Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_BOTTOM);
 	Graphics_setInner (me);
 	if (haveTicks) {
@@ -794,8 +793,8 @@ void Graphics_marksTopEvery (Graphics me, double units, double distance, bool ha
 	}
 	for (int i = first; i <= last; i ++) {
 		double xWC = i * distance;
-		if (haveNumbers) Graphics_text (me, xWC, 1 + my vertTick, Melder_float (Melder_half (xWC / units)));
-		if (haveTicks) Graphics_line (me, xWC, 1, xWC, 1 + my vertTick);
+		if (haveNumbers) Graphics_text (me, xWC, 1.0 + my vertTick, Melder_float (Melder_half (xWC / units)));
+		if (haveTicks) Graphics_line (me, xWC, 1.0, xWC, 1.0 + my vertTick);
 	}
 	if (haveTicks) Graphics_setLineWidth (me, lineWidth);
 	if (haveDottedLines) {
@@ -803,7 +802,7 @@ void Graphics_marksTopEvery (Graphics me, double units, double distance, bool ha
 		Graphics_setLineWidth (me, 0.67 * lineWidth);
 		for (int i = first; i <= last; i ++) {
 			double xWC = i * distance;
-			Graphics_line (me, xWC, 0, xWC, 1);
+			Graphics_line (me, xWC, 0.0, xWC, 1.0);
 		}
 		Graphics_setLineWidth (me, lineWidth);
 	}
@@ -827,7 +826,7 @@ void Graphics_mark (Graphics me, double x, double y, double size_mm, const char3
 		int oldSize = my fontSize;
 		int oldHorizontalAlignment = my horizontalTextAlignment;
 		int oldVerticalAlignment = my verticalTextAlignment;
-		Graphics_setFontSize (me, size_mm * 72 / 25.4);
+		Graphics_setFontSize (me, size_mm * 72.0 / 25.4);
 		Graphics_setTextAlignment (me, Graphics_CENTRE, Graphics_HALF);
 		Graphics_text (me, x, y, markString);
 		Graphics_setFontSize (me, oldSize);
@@ -857,7 +856,7 @@ void Graphics_setTextRotation_vector (Graphics me, double dx, double dy) {
 		angle = dy > 0.0 ? 90.0 : 270.0;
 	} else {
 		double dxDC = dx * my scaleX, dyDC = my yIsZeroAtTheTop ? -dy * my scaleY : dy * my scaleY;
-		angle = atan2 (dyDC, dxDC) * (180 / NUMpi);
+		angle = atan2 (dyDC, dxDC) * (180.0 / NUMpi);
 	}
 	Graphics_setTextRotation (me, angle);
 }
diff --git a/sys/Gui.cpp b/sys/Gui.cpp
index 5aeae56..c699c97 100644
--- a/sys/Gui.cpp
+++ b/sys/Gui.cpp
@@ -1,32 +1,19 @@
 /* Gui.cpp
  *
- * Copyright (C) 1992-2011,2012 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2002/03/11 Mach
- * pb 2004/10/21 on Unix, Ctrl becomes the command key
- * pb 2007/06/09 wchar
- * pb 2007/12/13 Gui
- * sdk 2008/02/08 GTK
- * sdk 2008/03/24 GDK
- * pb 2010/11/29 removed explicit Motif
- * pb 2011/04/06 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -52,7 +39,7 @@ int Gui_getResolution (GuiObject widget) {
 		#elif gtk
 			resolution = gdk_screen_get_resolution (gdk_display_get_default_screen (gtk_widget_get_display (GTK_WIDGET (widget))));
 		#else
-			Melder_fatal ("Gui_getResolution: unknown platform.");
+			Melder_fatal (U"Gui_getResolution: unknown platform.");
 		#endif
 	}
 	return 100;   // in conformance with most other applications; and so that fonts always look the same size in the Demo window
@@ -63,11 +50,11 @@ int Gui_getResolution (GuiObject widget) {
 void GuiGtk_initialize () {
 	static bool gtkHasBeenInitialized = false;
 	if (! gtkHasBeenInitialized) {
-		trace (U"before initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"before initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		gtk_disable_setlocale ();   // otherwise 1.5 will be written "1,5" on computers with a French or German locale
-		trace (U"during initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
-		gtk_init_check (NULL, NULL);
-		trace (U"after initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"during initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+		gtk_init_check (nullptr, nullptr);
+		trace (U"after initing GTK: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		gtkHasBeenInitialized = true;
 	}
 	}
@@ -75,27 +62,14 @@ void GuiGtk_initialize () {
 
 void Gui_getWindowPositioningBounds (double *x, double *y, double *width, double *height) {
 	#if defined (macintosh)
-		#if useCarbon
-			HIRect rect;
-			HIWindowGetAvailablePositioningBounds (kCGNullDirectDisplay, kHICoordSpaceScreenPixel, & rect);
-			if (x) *x = rect. origin. x;
-			if (y) *y = rect. origin. y;
-			if (width) *width = rect. size. width;
-			if (height) *height = rect. size. height - 22;   // subtract title bar height (or is it the menu height?)
-		#else
-    
-            NSRect rect;
-            NSArray *screenArray = [NSScreen screens];
-            NSInteger screenCount = [screenArray count];
-            NSInteger index  = 0;
-            
-            for (index = 0; index < screenCount; index++)
-            {
-                NSScreen *screen = [screenArray objectAtIndex: index];
-                rect = [screen visibleFrame];
-            }
-        
-		#endif
+		NSRect rect;
+		NSArray *screenArray = [NSScreen screens];
+		NSInteger screenCount = [screenArray count];
+		NSInteger index = 0;
+		for (index = 0; index < screenCount; index ++) {
+			NSScreen *screen = [screenArray objectAtIndex: index];
+			rect = [screen visibleFrame];
+		}
 		if (x) *x = rect. origin. x;
 		if (y) *y = rect. origin. y;
 		if (width) *width = rect. size. width;
@@ -122,9 +96,9 @@ void Gui_getWindowPositioningBounds (double *x, double *y, double *width, double
 		GuiGtk_initialize ();
 		GdkScreen *screen = gdk_screen_get_default ();
 		/*
-		if (parent != NULL) {
+		if (parent) {
 			GuiObject parent_win = gtk_widget_get_ancestor (GTK_WIDGET (parent), GTK_TYPE_WINDOW);
-			if (parent_win != NULL) {
+			if (parent_win) {
 				screen = gtk_window_get_screen (GTK_WINDOW (parent_win));
 			}
 		}
@@ -133,7 +107,7 @@ void Gui_getWindowPositioningBounds (double *x, double *y, double *width, double
 		if (y) *y = 0;
 		if (width) *width = gdk_screen_get_width (screen);
 		if (height) *height = gdk_screen_get_height (screen);
-	#elif ! defined (NO_GRAPHICS)
+	#elif defined (UNIX) && ! defined (NO_GRAPHICS)
 		if (x) *x = 0;
 		if (y) *y = 0;
 		if (width) *width = WidthOfScreen (DefaultScreenOfDisplay (XtDisplay (parent)));
diff --git a/sys/Gui.h b/sys/Gui.h
index 787dba1..115d5cd 100644
--- a/sys/Gui.h
+++ b/sys/Gui.h
@@ -2,21 +2,20 @@
 #define _Gui_h_
 /* Gui.h
  *
- * Copyright (C) 1993-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -35,15 +34,9 @@
 	#define motif 1
 	#define cocoa 0
 #elif defined (macintosh)
-	#if useCarbon
-		#define gtk 0
-		#define motif 1
-		#define cocoa 0
-	#else
-		#define gtk 0
-		#define motif 0
-		#define cocoa 1
-	#endif
+	#define gtk 0
+	#define motif 0
+	#define cocoa 1
 #endif
 
 #include "Collection.h"
@@ -54,9 +47,6 @@
 	#include <cairo/cairo.h>
 #elif defined (macintosh)
 	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
     #include <Cocoa/Cocoa.h>
 	#include "macport_off.h"
 #elif defined (_WIN32)
@@ -66,10 +56,6 @@
 	#include "winport_off.h"
 #endif
 
-#define GUI_ARGS  void *void_me, GuiMenuItemEvent event
-
-#define GUI_IAM(klas)  (void) void_me; (void) event; iam (klas);
-
 #define Gui_LEFT_DIALOG_SPACING  20
 #define Gui_RIGHT_DIALOG_SPACING  20
 #define Gui_TOP_DIALOG_SPACING  14
@@ -105,7 +91,7 @@
 #elif cocoa
 	Thing_declare (GuiThing);
 	@protocol GuiCocoaAny
-		- (GuiThing) userData;
+		- (GuiThing) getUserData;
 		- (void) setUserData: (GuiThing) userData;
 	@end
 	typedef NSObject <GuiCocoaAny> *GuiObject;
@@ -130,20 +116,16 @@
 		- (void) magnifyBy: (double) step;
 	@end
 	@interface GuiCocoaScrolledWindow : NSScrollView <GuiCocoaAny> @end
+	@interface GuiCocoaShell : NSWindow <GuiCocoaAny> @end
 	@interface GuiCocoaTextField : NSTextField <GuiCocoaAny> @end
 	@interface GuiCocoaTextView : NSTextView <GuiCocoaAny, NSTextViewDelegate> @end
-	@interface GuiCocoaWindow : NSWindow <GuiCocoaAny> @end
 #elif motif
-	typedef class structGuiObject *GuiObject;   // Opaque
+	typedef class structGuiObject *GuiObject;   // opaque
 
 	/*
 	 * Definitions of X11 types.
 	 */
-	#if defined (macintosh)
-		typedef struct EventRecord XEvent;
-	#else
-		typedef MSG XEvent;
-	#endif
+	typedef MSG XEvent;
 	typedef unsigned char Boolean;
 	typedef long Cardinal;
 	typedef unsigned int Dimension;
@@ -190,7 +172,6 @@
 	void XtDestroyWidget (GuiObject w);
 	void XtDispatchEvent (XEvent *event);
 	#define XtDisplay(w)  0
-	void GuiInitialize (const char *name, unsigned int *argc, char **argv);
 	Boolean XtIsManaged (GuiObject w);
 	Boolean XtIsShell (GuiObject w);
 	void XtManageChild (GuiObject w);
@@ -203,15 +184,14 @@
 	void XtSetSensitive (GuiObject w, Boolean value);
 	void XtUnmanageChild (GuiObject self);
 	void XtUnmanageChildren (GuiObjectList children, Cardinal num_children);
-	void GuiAppInitialize (const char *name,
-		void *dum1, int dum2, unsigned int *argc, char **argv, void *dum3, void *dum4);
+	void GuiAppInitialize (const char *name, unsigned int argc, char **argv);
 	void GuiApp_setApplicationShell (GuiObject shell);
 	GuiObject XtVaCreateWidget (const char *name, int widgetClass, GuiObject parent, ...);
 	GuiObject XtVaCreateManagedWidget (const char *name, int widgetClass, GuiObject parent, ...);
 	void XtVaGetValues (GuiObject w, ...);
 	void XtVaSetValues (GuiObject w, ...);
 	Window XtWindow (GuiObject w);
-	long Gui_getNumberOfMotifWidgets (void);
+	long Gui_getNumberOfMotifWidgets ();
 
 	/*
 	 * Xm widget classes.
@@ -293,19 +273,9 @@
 	#define XmToggleButtonGetState XmToggleButtonGadgetGetState
 	void XmToggleButtonGadgetSetState (GuiObject widget, Boolean value, Boolean notify);
 	#define XmToggleButtonSetState XmToggleButtonGadgetSetState
-	void XmUpdateDisplay (GuiObject dummy);
-
-	#if defined (macintosh)
-		void motif_mac_defaultFont (void);
-		void GuiMac_clipOn (GuiObject widget);   /* Clip to the inner area of a drawingArea (for drawing);
-			used by graphics drivers for Macintosh (clipping is automatic for Xwindows). */
-		int GuiMac_clipOn_graphicsContext (GuiObject me, void *graphicsContext);
-		void GuiMac_clipOff (void);
-		void motif_mac_setUserMessageCallback (int (*userMessageCallback) (char32 *message));
-	#elif defined (_WIN32)
-		int motif_win_mouseStillDown (void);
-		void motif_win_setUserMessageCallback (int (*userMessageCallback) (void));
-	#endif
+
+	bool motif_win_mouseStillDown ();
+	void motif_win_setUserMessageCallback (int (*userMessageCallback) (void));
 #else
 	typedef void *GuiObject;
 #endif
@@ -324,7 +294,7 @@ Thing_define (GuiThing, Thing) {
 	GuiThing d_parent;
 	GuiObject d_widget;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 
 	virtual void v_show ();
@@ -354,19 +324,21 @@ void GuiControl_setSize (GuiControl me, int width, int height);
 Thing_define (GuiForm, GuiControl) {
 };
 
+typedef MelderCallback <void, structThing /* boss */> GuiShell_GoAwayCallback;
+
 Thing_define (GuiShell, GuiForm) {
 	int d_width, d_height;
 	#if gtk
 		GtkWindow *d_gtkWindow;
 	#elif cocoa
-		GuiCocoaWindow *d_cocoaWindow;
+		GuiCocoaShell *d_cocoaShell;
 	#elif motif
 		GuiObject d_xmShell;
 	#endif
-	void (*d_goAwayCallback) (void *boss);
-	void *d_goAwayBoss;
+	GuiShell_GoAwayCallback d_goAwayCallback;
+	Thing d_goAwayBoss;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
@@ -384,9 +356,11 @@ typedef struct structGuiButtonEvent {
 	bool shiftKeyPressed, commandKeyPressed, optionKeyPressed, extraControlKeyPressed;
 } *GuiButtonEvent;
 
+typedef MelderCallback <void, structThing /* boss */, GuiButtonEvent> GuiButton_ActivateCallback;
+
 Thing_define (GuiButton, GuiControl) {
-	void (*d_activateCallback) (void *boss, GuiButtonEvent event);
-	void *d_activateBoss;
+	GuiButton_ActivateCallback d_activateCallback;
+	Thing d_activateBoss;
 	GuiMenu d_menu;   // for cascade buttons
 };
 
@@ -398,12 +372,12 @@ Thing_define (GuiButton, GuiControl) {
 GuiButton GuiButton_create      (GuiForm parent,
 	int left, int right, int top, int bottom,
 	const char32 *text,
-	void (*activateCallback) (void *boss, GuiButtonEvent event), void *boss,
+	GuiButton_ActivateCallback activateCallback, Thing boss,
 	uint32 flags);
 GuiButton GuiButton_createShown (GuiForm parent,
 	int left, int right, int top, int bottom,
 	const char32 *text,
-	void (*activateCallback) (void *boss, GuiButtonEvent event), void *boss,
+	GuiButton_ActivateCallback activateCallback, Thing boss,
 	uint32 flags);
 
 void GuiButton_setText (GuiButton me, const char32 *text /* cattable */);
@@ -416,9 +390,11 @@ typedef struct structGuiCheckButtonEvent {
 	GuiCheckButton toggle;
 } *GuiCheckButtonEvent;
 
+typedef MelderCallback <void, structThing /* boss */, GuiCheckButtonEvent> GuiCheckButton_ValueChangedCallback;
+
 Thing_define (GuiCheckButton, GuiControl) {
-	void (*d_valueChangedCallback) (void *boss, GuiCheckButtonEvent event);
-	void *d_valueChangedBoss;
+	GuiCheckButton_ValueChangedCallback d_valueChangedCallback;
+	Thing d_valueChangedBoss;
 };
 
 /* GuiCheckButton creation flags: */
@@ -427,12 +403,12 @@ Thing_define (GuiCheckButton, GuiControl) {
 GuiCheckButton GuiCheckButton_create      (GuiForm parent,
 	int left, int right, int top, int bottom,
 	const char32 *text,
-	void (*valueChangedCallback) (void *boss, GuiCheckButtonEvent event), void *boss,
+	GuiCheckButton_ValueChangedCallback valueChangedCallback, Thing boss,
 	uint32 flags);
 GuiCheckButton GuiCheckButton_createShown (GuiForm parent,
 	int left, int right, int top, int bottom,
 	const char32 *text,
-	void (*valueChangedCallback) (void *boss, GuiCheckButtonEvent event), void *boss,
+	GuiCheckButton_ValueChangedCallback valueChangedCallback, Thing boss,
 	uint32 flags);
 
 bool GuiCheckButton_getValue (GuiCheckButton me);
@@ -448,7 +424,7 @@ Thing_define (GuiDialog, GuiShell) {
 GuiDialog GuiDialog_create (GuiWindow parent,
 	int x, int y, int width, int height,
 	const char32 *title,
-	void (*goAwayCallback) (void *goAwayBoss), void *goAwayBoss,
+	GuiShell_GoAwayCallback goAwayCallback, Thing goAwayBoss,
 	uint32 flags);
 
 /********** GuiDrawingArea **********/
@@ -456,73 +432,78 @@ GuiDialog GuiDialog_create (GuiWindow parent,
 Thing_declare (GuiDrawingArea);
 Thing_declare (GuiScrollBar);
 
-typedef struct structGuiDrawingAreaExposeEvent {
+typedef struct structGuiDrawingArea_ExposeEvent {
 	GuiDrawingArea widget;
 	int x, y, width, height;
-} *GuiDrawingAreaExposeEvent;
-typedef struct structGuiDrawingAreaClickEvent {
+} *GuiDrawingArea_ExposeEvent;
+typedef struct structGuiDrawingArea_ClickEvent {
 	GuiDrawingArea widget;
 	int x, y;
 	bool shiftKeyPressed, commandKeyPressed, optionKeyPressed, extraControlKeyPressed;
 	int button;
-} *GuiDrawingAreaClickEvent;
-typedef struct structGuiDrawingAreaKeyEvent {
+} *GuiDrawingArea_ClickEvent;
+typedef struct structGuiDrawingArea_KeyEvent {
 	GuiDrawingArea widget;
 	char32 key;
 	bool shiftKeyPressed, commandKeyPressed, optionKeyPressed, extraControlKeyPressed;
-} *GuiDrawingAreaKeyEvent;
-typedef struct structGuiDrawingAreaResizeEvent {
+} *GuiDrawingArea_KeyEvent;
+typedef struct structGuiDrawingArea_ResizeEvent {
 	GuiDrawingArea widget;
 	int width, height;
-} *GuiDrawingAreaResizeEvent;
+} *GuiDrawingArea_ResizeEvent;
+
+typedef MelderCallback <void, structThing /* boss */, GuiDrawingArea_ExposeEvent> GuiDrawingArea_ExposeCallback;
+typedef MelderCallback <void, structThing /* boss */, GuiDrawingArea_ClickEvent > GuiDrawingArea_ClickCallback;
+typedef MelderCallback <void, structThing /* boss */, GuiDrawingArea_KeyEvent   > GuiDrawingArea_KeyCallback;
+typedef MelderCallback <void, structThing /* boss */, GuiDrawingArea_ResizeEvent> GuiDrawingArea_ResizeCallback;
 
 Thing_define (GuiDrawingArea, GuiControl) {
 	GuiScrollBar d_horizontalScrollBar, d_verticalScrollBar;   // for swiping
-	void (*d_exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event);
-	void *d_exposeBoss;
-	void (*d_clickCallback) (void *boss, GuiDrawingAreaClickEvent event);
-	void *d_clickBoss;
-	void (*d_keyCallback) (void *boss, GuiDrawingAreaKeyEvent event);
-	void *d_keyBoss;
-	void (*d_resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event);
-	void *d_resizeBoss;
+	GuiDrawingArea_ExposeCallback d_exposeCallback;
+	Thing d_exposeBoss;
+	GuiDrawingArea_ClickCallback d_clickCallback;
+	Thing d_clickBoss;
+	GuiDrawingArea_KeyCallback d_keyCallback;
+	Thing d_keyBoss;
+	GuiDrawingArea_ResizeCallback d_resizeCallback;
+	Thing d_resizeBoss;
 };
 
 /* GuiDrawingArea creation flags: */
 #define GuiDrawingArea_BORDER  1
 GuiDrawingArea GuiDrawingArea_create (GuiForm parent, int left, int right, int top, int bottom,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags);
 GuiDrawingArea GuiDrawingArea_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags);
 GuiDrawingArea GuiDrawingArea_create (GuiScrolledWindow parent, int width, int height,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags);
 GuiDrawingArea GuiDrawingArea_createShown (GuiScrolledWindow parent, int width, int height,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags);
 
 void GuiDrawingArea_setSwipable (GuiDrawingArea me, GuiScrollBar horizontalScrollBar, GuiScrollBar verticalScrollBar);
-void GuiDrawingArea_setExposeCallback (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaExposeEvent event), void *boss);
-void GuiDrawingArea_setClickCallback  (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaClickEvent  event), void *boss);
-void GuiDrawingArea_setResizeCallback (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss);
+void GuiDrawingArea_setExposeCallback (GuiDrawingArea me, GuiDrawingArea_ExposeCallback callback, Thing boss);
+void GuiDrawingArea_setClickCallback  (GuiDrawingArea me, GuiDrawingArea_ClickCallback  callback, Thing boss);
+void GuiDrawingArea_setResizeCallback (GuiDrawingArea me, GuiDrawingArea_ResizeCallback callback, Thing boss);
 
 /********** GuiFileSelect **********/
 
-SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *title, bool allowMultipleFiles);
+autoStringSet GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *title, bool allowMultipleFiles);
 char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, const char32 *defaultName);
 char32 * GuiFileSelect_getDirectoryName (GuiWindow parent, const char32 *title);
 
@@ -552,22 +533,31 @@ void GuiLabel_setText (GuiLabel me, const char32 *text /* cattable */);
 Thing_declare (GuiList);
 Thing_declare (GuiScrolledWindow);
 
-typedef struct structGuiListEvent {
+typedef struct structGuiList_SelectionChangedEvent {
+	GuiList list;
+} *GuiList_SelectionChangedEvent;
+typedef MelderCallback <void, structThing /* boss */, GuiList_SelectionChangedEvent> GuiList_SelectionChangedCallback;
+
+typedef struct structGuiList_DoubleClickEvent {
 	GuiList list;
-} *GuiListEvent;
+} *GuiList_DoubleClickEvent;
+typedef MelderCallback <void, structThing /* boss */, GuiList_DoubleClickEvent> GuiList_DoubleClickCallback;
+
+typedef struct structGuiList_ScrollEvent {
+	GuiList list;
+} *GuiList_ScrollEvent;
+typedef MelderCallback <void, structThing /* boss */, GuiList_ScrollEvent> GuiList_ScrollCallback;
 
 Thing_define (GuiList, GuiControl) {
 	bool d_allowMultipleSelection;
-	void (*d_selectionChangedCallback) (void *boss, GuiListEvent event);
-	void *d_selectionChangedBoss;
-	void (*d_doubleClickCallback) (void *boss, GuiListEvent event);
-	void *d_doubleClickBoss;
+	GuiList_SelectionChangedCallback d_selectionChangedCallback;
+	Thing d_selectionChangedBoss;
+	GuiList_DoubleClickCallback d_doubleClickCallback;
+	Thing d_doubleClickBoss;
+	GuiList_ScrollCallback d_scrollCallback;
+	Thing d_scrollBoss;
 	#if gtk
 		GtkListStore *d_liststore;
-	#elif cocoa
-	#elif motif && useCarbon
-		GuiObject d_xmScrolled, d_xmList;
-		ListHandle d_macListHandle;
 	#endif
 };
 
@@ -582,20 +572,34 @@ long GuiList_getBottomPosition (GuiList me);
 long GuiList_getNumberOfItems (GuiList me);
 long * GuiList_getSelectedPositions (GuiList me, long *numberOfSelected);
 long GuiList_getTopPosition (GuiList me);
+
+/**
+	Inserts a new item into a GuiList at a given position.
+	@param me
+		The GuiList into which the new item is inserted.
+	@param itemText
+		The text of the new item. Cattable.
+	@param position
+		The position of the new item in the list after insertion.
+		A value of 1 therefore puts the new item at the top of the list.
+		A value of 0 is special: the item is put at the bottom of the list.
+ */
 void GuiList_insertItem  (GuiList me, const char32 *itemText /* cattable */, long position);
+
 void GuiList_replaceItem (GuiList me, const char32 *itemText /* cattable */, long position);
 void GuiList_setTopPosition (GuiList me, long topPosition);
 void GuiList_selectItem (GuiList me, long position);
-void GuiList_setSelectionChangedCallback (GuiList me, void (*callback) (void *boss, GuiListEvent event), void *boss);
-void GuiList_setDoubleClickCallback (GuiList me, void (*callback) (void *boss, GuiListEvent event), void *boss);
+void GuiList_setSelectionChangedCallback (GuiList me, GuiList_SelectionChangedCallback callback, Thing boss);
+void GuiList_setDoubleClickCallback (GuiList me, GuiList_DoubleClickCallback callback, Thing boss);
+void GuiList_setScrollCallback (GuiList me, GuiList_ScrollCallback callback, Thing boss);
 
 /********** GuiMenu **********/
 
 Thing_declare (GuiMenuItem);
 
 Thing_define (GuiMenu, GuiThing) {
-	GuiMenuItem d_menuItem;
-	GuiButton d_cascadeButton;
+	autoGuiMenuItem d_menuItem;
+	autoGuiButton d_cascadeButton;
 	#if gtk
 		GtkMenuItem *d_gtkMenuTitle;
 	#elif cocoa
@@ -607,7 +611,7 @@ Thing_define (GuiMenu, GuiThing) {
 		GuiObject d_xmMenuBar;   // in case the menu is in a form
 	#endif
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_show ()
 		override;
@@ -632,10 +636,12 @@ typedef struct structGuiMenuItemEvent {
 	bool shiftKeyPressed, commandKeyPressed, optionKeyPressed, extraControlKeyPressed;
 } *GuiMenuItemEvent;
 
+typedef MelderCallback <void, structThing /* boss */, GuiMenuItemEvent> GuiMenuItemCallback;
+
 Thing_define (GuiMenuItem, GuiThing) {
 	GuiMenu d_menu;
-	void (*d_commandCallback) (void *boss, GuiMenuItemEvent event);
-	void *d_boss;
+	GuiMenuItemCallback d_callback;
+	Thing d_boss;
 	#if gtk
 		bool d_callbackBlocked;
 	#endif
@@ -685,8 +691,8 @@ Thing_define (GuiMenuItem, GuiThing) {
 // or any ASCII character (preferably a letter or digit) between 32 and 126
 
 GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
-	void (*commandCallback) (void *boss, GuiMenuItemEvent event), void *boss);
-/* Flags is a combination of the above defines. */
+	GuiMenuItemCallback callback, Thing boss);
+/* Flags is a combination of the above defines (both layout and accelerators). */
 GuiMenuItem GuiMenu_addSeparator (GuiMenu menu);
 
 void GuiMenuItem_check (GuiMenuItem me, bool check);
@@ -695,7 +701,7 @@ void GuiMenuItem_check (GuiMenuItem me, bool check);
 
 Thing_define (GuiOptionMenu, GuiControl) {
 	int d_value;
-	Ordered d_options;   // of SimpleString
+	OrderedOf<structGuiMenuItem> d_options;
 	#if gtk
 		//GtkComboBox *d_gtkCascadeButton;
 	#elif cocoa
@@ -719,7 +725,7 @@ void GuiOptionMenu_setValue (GuiOptionMenu me, int value);
 
 Thing_declare (GuiProgressBar);
 
-Thing_define (GuiProgressBar, GuiControl) { public:
+Thing_define (GuiProgressBar, GuiControl) {
 	#if cocoa
 		GuiCocoaProgressBar *d_cocoaProgressBar;
 	#endif
@@ -739,10 +745,12 @@ typedef struct structGuiRadioButtonEvent {
 	int position;
 } *GuiRadioButtonEvent;
 
-Thing_define (GuiRadioButton, GuiControl) { public:
+typedef MelderCallback <void, structThing /* boss */, GuiRadioButtonEvent> GuiRadioButtonCallback;
+
+Thing_define (GuiRadioButton, GuiControl) {
 	GuiRadioButton d_previous, d_next;   // there's a linked list of grouped radio buttons
-	void (*d_valueChangedCallback) (void *boss, GuiRadioButtonEvent event);
-	void *d_valueChangedBoss;
+	GuiRadioButtonCallback d_valueChangedCallback;
+	Thing d_valueChangedBoss;
 	#if cocoa
 		GuiCocoaRadioButton *d_cocoaRadioButton;
 	#endif
@@ -752,9 +760,9 @@ Thing_define (GuiRadioButton, GuiControl) { public:
 #define GuiRadioButton_SET  1
 #define GuiRadioButton_INSENSITIVE  2
 GuiRadioButton GuiRadioButton_create      (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiRadioButtonEvent event), void *valueChangedBoss, uint32 flags);
+	const char32 *buttonText, GuiRadioButtonCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags);
 GuiRadioButton GuiRadioButton_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiRadioButtonEvent event), void *valueChangedBoss, uint32 flags);
+	const char32 *buttonText, GuiRadioButtonCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags);
 
 void GuiRadioGroup_begin ();
 void GuiRadioGroup_end ();
@@ -788,19 +796,21 @@ typedef struct structGuiScrollBarEvent {
 	GuiScrollBar scrollBar;
 } *GuiScrollBarEvent;
 
-Thing_define (GuiScrollBar, GuiControl) { public:
-	void (*d_valueChangedCallback) (void *boss, GuiScrollBarEvent event);
-	void *d_valueChangedBoss;
+typedef MelderCallback <void, structThing /* boss */, GuiScrollBarEvent> GuiScrollBarCallback;
+
+Thing_define (GuiScrollBar, GuiControl) {
+	GuiScrollBarCallback d_valueChangedCallback;
+	Thing d_valueChangedBoss;
 };
 
 /* GuiScrollBar creation flags: */
 #define GuiScrollBar_HORIZONTAL  1
 GuiScrollBar GuiScrollBar_create      (GuiForm parent, int left, int right, int top, int bottom,
 	double minimum, double maximum, double value, double sliderSize, double increment, double pageIncrement,
-	void (*valueChangedCallback) (void *boss, GuiScrollBarEvent event), void *valueChangedBoss, uint32 flags);
+	GuiScrollBarCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags);
 GuiScrollBar GuiScrollBar_createShown (GuiForm parent, int left, int right, int top, int bottom,
 	double minimum, double maximum, double value, double sliderSize, double increment, double pageIncrement,
-	void (*valueChangedCallback) (void *boss, GuiScrollBarEvent event), void *valueChangedBoss, uint32 flags);
+	GuiScrollBarCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags);
 
 int GuiScrollBar_getValue (GuiScrollBar me);
 int GuiScrollBar_getSliderSize (GuiScrollBar me);
@@ -827,6 +837,8 @@ typedef struct structGuiTextEvent {
 	GuiText text;
 } *GuiTextEvent;
 
+typedef MelderCallback <void, structThing /* boss */, GuiTextEvent> GuiText_ChangedCallback;
+
 #if gtk
 	typedef gchar * history_data;
 #else
@@ -841,9 +853,9 @@ struct _history_entry_s {
 	bool type_del : 1;
 };
 
-Thing_define (GuiText, GuiControl) { public:
-	void (*d_changeCallback) (void *boss, GuiTextEvent event);
-	void *d_changeBoss;
+Thing_define (GuiText, GuiControl) {
+	GuiText_ChangedCallback d_changedCallback;
+	Thing d_changedBoss;
 	#if cocoa
 		GuiCocoaScrolledWindow *d_cocoaScrollView;
 		GuiCocoaTextView *d_cocoaTextView;
@@ -878,7 +890,7 @@ void GuiText_redo (GuiText me);
 void GuiText_remove (GuiText me);
 void GuiText_replace (GuiText me, long from_pos, long to_pos, const char32 *value);
 void GuiText_scrollToSelection (GuiText me);
-void GuiText_setChangeCallback (GuiText me, void (*changeCallback) (void *boss, GuiTextEvent event), void *changeBoss);
+void GuiText_setChangedCallback (GuiText me, GuiText_ChangedCallback changedCallback, Thing changedBoss);
 void GuiText_setFontSize (GuiText me, int size);
 void GuiText_setRedoItem (GuiText me, GuiMenuItem item);
 void GuiText_setSelection (GuiText me, long first, long last);
@@ -888,17 +900,17 @@ void GuiText_undo (GuiText me);
 
 /********** GuiWindow **********/
 
-Thing_define (GuiWindow, GuiShell) { public:
+Thing_define (GuiWindow, GuiShell) {
 	#if gtk
 		GtkMenuBar *d_gtkMenuBar;
 	#elif cocoa
 		int d_menuBarWidth;
-		void (*d_tabCallback) (void *boss, GuiMenuItemEvent event);
-		void *d_tabBoss;
-		void (*d_shiftTabCallback) (void *boss, GuiMenuItemEvent event);
-		void *d_shiftTabBoss;
-		void (*d_optionBackspaceCallback) (void *boss, GuiMenuItemEvent event);
-		void *d_optionBackspaceBoss;
+		GuiMenuItemCallback d_tabCallback;
+		Thing d_tabBoss;
+		GuiMenuItemCallback d_shiftTabCallback;
+		Thing d_shiftTabBoss;
+		GuiMenuItemCallback d_optionBackspaceCallback;
+		Thing d_optionBackspaceBoss;
 	#elif motif
 		GuiObject d_xmMenuBar;
 	#endif
@@ -907,7 +919,7 @@ Thing_define (GuiWindow, GuiShell) { public:
 /* GuiWindow creation flags: */
 #define GuiWindow_FULLSCREEN  1
 GuiWindow GuiWindow_create (int x, int y, int width, int height, int minimumWidth, int minimumHeight,
-	const char32 *title /* cattable */, void (*goAwayCallback) (void *goAwayBoss), void *goAwayBoss, uint32 flags);
+	const char32 *title /* cattable */, GuiShell_GoAwayCallback goAwayCallback, Thing goAwayBoss, uint32 flags);
 	// returns a Form widget that has a new Shell parent.
 
 void GuiWindow_addMenuBar (GuiWindow me);
@@ -916,7 +928,7 @@ bool GuiWindow_setDirty (GuiWindow me, bool dirty);
 		Purpose: on OSX you get a little dot in the red close button,
 			and the window proxy icon dims.
 		Return value:
-			TRUE if the system supports this feature, FALSE if not;
+			`true` if the system supports this feature, `false` if not;
 			the point of this is that you can use a different user feedback strategy, like appending
 			the text "(modified)" to the window title, if this feature is not supported.
 	*/
diff --git a/sys/GuiButton.cpp b/sys/GuiButton.cpp
index 37db35f..b4508e3 100644
--- a/sys/GuiButton.cpp
+++ b/sys/GuiButton.cpp
@@ -1,47 +1,43 @@
 /* GuiButton.cpp
  *
- * Copyright (C) 1993-2012,2015 Paul Boersma, 2007-2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
+ * Copyright (C) 1993-2012,2015,2016 Paul Boersma, 2007-2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiButton, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if gtk
-	#define iam_button  GuiButton me = (GuiButton) _GuiObject_getUserData (widget)
+	#define iam_button  GuiButton me = (GuiButton) userData
 #elif cocoa
-	#define iam_button  GuiButton me = (GuiButton) [(GuiCocoaButton *) widget userData];
+	#define iam_button  GuiButton me = (GuiButton) self -> d_userData
 #elif motif
 	#define iam_button  GuiButton me = (GuiButton) widget -> userData
 #endif
 
 #if gtk
-	static void _GuiGtkButton_destroyCallback (GuiObject widget, gpointer void_me) {
-		(void) widget;
-		iam (GuiButton);
+	static void _GuiGtkButton_destroyCallback (GuiObject /* widget */, gpointer userData) {
+		GuiButton me = (GuiButton) userData;
 		trace (U"destroying GuiButton ", Melder_pointer (me));
 		forget (me);
 	}
-	static void _GuiGtkButton_activateCallback (GuiObject widget, gpointer void_me) {
-		iam (GuiButton);
-		struct structGuiButtonEvent event = { me, 0 };
-		if (my d_activateCallback != NULL) {
+	static void _GuiGtkButton_activateCallback (GuiObject widget, gpointer userData) {
+		GuiButton me = (GuiButton) userData;
+		struct structGuiButtonEvent event { me, false, false, false, false };
+		if (my d_activateCallback) {
 			try {
 				my d_activateCallback (my d_activateBoss, & event);
 			} catch (MelderError) {
@@ -59,18 +55,18 @@ Thing_implement (GuiButton, GuiControl, 0);
 		trace (U"deleting a button");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiButton));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiButton));
 		d_userData = static_cast <GuiButton> (userData);
 	}
 	- (void) _guiCocoaButton_activateCallback: (id) widget {
 		Melder_assert (self == widget);   // sender (widget) and receiver (self) happen to be the same object
 		GuiButton me = d_userData;
-		if (my d_activateCallback != NULL) {
-			struct structGuiButtonEvent event = { me, 0 };
+		if (my d_activateCallback) {
+			struct structGuiButtonEvent event { me, false, false, false, false };
 			try {
 				my d_activateCallback (my d_activateBoss, & event);
 			} catch (MelderError) {
@@ -83,16 +79,16 @@ Thing_implement (GuiButton, GuiControl, 0);
 	void _GuiWinButton_destroy (GuiObject widget) {
 		iam_button;
 		if (widget == widget -> shell -> defaultButton)
-			widget -> shell -> defaultButton = NULL;   // remove dangling reference
+			widget -> shell -> defaultButton = nullptr;   // remove dangling reference
 		if (widget == widget -> shell -> cancelButton)
-			widget -> shell -> cancelButton = NULL;   // remove dangling reference
+			widget -> shell -> cancelButton = nullptr;   // remove dangling reference
 		_GuiNativeControl_destroy (widget);
 		forget (me);   // NOTE: my widget is not destroyed here
 	}
 	void _GuiWinButton_handleClick (GuiObject widget) {
 		iam_button;
-		if (my d_activateCallback != NULL) {
-			struct structGuiButtonEvent event = { me, 0 };
+		if (my d_activateCallback) {
+			struct structGuiButtonEvent event { me, false, false, false, false };
 			try {
 				my d_activateCallback (my d_activateBoss, & event);
 			} catch (MelderError) {
@@ -102,52 +98,8 @@ Thing_implement (GuiButton, GuiControl, 0);
 	}
 	bool _GuiWinButton_tryToHandleShortcutKey (GuiObject widget) {
 		iam_button;
-		if (my d_activateCallback != NULL) {
-			struct structGuiButtonEvent event = { me, 0 };
-			try {
-				my d_activateCallback (my d_activateBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Your key click on button \"", widget -> name, U"\" was not completely handled.");
-			}
-			return true;
-		}
-		return false;
-	}
-#elif mac
-	void _GuiMacButton_destroy (GuiObject widget) {
-		iam_button;
-		if (widget == widget -> shell -> defaultButton)
-			widget -> shell -> defaultButton = NULL;   // remove dangling reference
-		if (widget == widget -> shell -> cancelButton)
-			widget -> shell -> cancelButton = NULL;   // remove dangling reference
-		_GuiNativeControl_destroy (widget);
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacButton_handleClick (GuiObject widget, EventRecord *macEvent) {
-		iam_button;
-		_GuiMac_clipOnParent (widget);
-		bool pushed = HandleControlClick (widget -> nat.control.handle, macEvent -> where, macEvent -> modifiers, NULL);
-		GuiMac_clipOff ();
-		if (pushed && my d_activateCallback != NULL) {
-			struct structGuiButtonEvent event = { me, 0 };
-			//enum { cmdKey = 256, shiftKey = 512, optionKey = 2048, controlKey = 4096 };
-			Melder_assert (macEvent -> what == mouseDown);
-			event. shiftKeyPressed = (macEvent -> modifiers & shiftKey) != 0;
-			event. commandKeyPressed = (macEvent -> modifiers & cmdKey) != 0;
-			event. optionKeyPressed = (macEvent -> modifiers & optionKey) != 0;
-			event. extraControlKeyPressed = (macEvent -> modifiers & controlKey) != 0;
-			try {
-				my d_activateCallback (my d_activateBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Your click on button \"", widget -> name, U"\" was not completely handled.");
-			}
-		}
-	}
-	bool _GuiMacButton_tryToHandleShortcutKey (GuiObject widget, EventRecord *macEvent) {
-		iam_button;
-		if (my d_activateCallback != NULL) {
-			struct structGuiButtonEvent event = { me, 0 };
-			// ignore modifier keys for Enter
+		if (my d_activateCallback) {
+			struct structGuiButtonEvent event { me, false, false, false, false };
 			try {
 				my d_activateCallback (my d_activateBoss, & event);
 			} catch (MelderError) {
@@ -160,28 +112,28 @@ Thing_implement (GuiButton, GuiControl, 0);
 #endif
 
 GuiButton GuiButton_create (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*activateCallback) (void *boss, GuiButtonEvent event), void *activateBoss, uint32 flags)
+	const char32 *buttonText, GuiButton_ActivateCallback activateCallback, Thing activateBoss, uint32 flags)
 {
-	GuiButton me = Thing_new (GuiButton);
+	autoGuiButton me = Thing_new (GuiButton);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_activateCallback = activateCallback;
 	my d_activateBoss = activateBoss;
 	#if gtk
 		my d_widget = gtk_button_new_with_label (Melder_peek32to8 (buttonText));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		if (flags & GuiButton_DEFAULT || flags & GuiButton_ATTRACTIVE) {
 			GTK_WIDGET_SET_FLAGS (my d_widget, GTK_CAN_DEFAULT);
 			GtkWidget *shell = gtk_widget_get_toplevel (GTK_WIDGET (my d_widget));
-			Melder_assert (shell != NULL);
+			Melder_assert (shell);
 			gtk_window_set_default (GTK_WINDOW (shell), GTK_WIDGET (my d_widget));
 		} else if (1) {
 			gtk_button_set_focus_on_click (GTK_BUTTON (my d_widget), false);
 			GTK_WIDGET_UNSET_FLAGS (my d_widget, GTK_CAN_DEFAULT);
 		}
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkButton_destroyCallback), me);
-		g_signal_connect (GTK_BUTTON (my d_widget), "clicked", G_CALLBACK (_GuiGtkButton_activateCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkButton_destroyCallback), me.get());
+		g_signal_connect (GTK_BUTTON (my d_widget), "clicked", G_CALLBACK (_GuiGtkButton_activateCallback), me.get());
 //		if (flags & GuiButton_CANCEL) {
 //			parent -> shell -> cancelButton = parent -> cancelButton = my widget;
 //		}
@@ -189,7 +141,7 @@ GuiButton GuiButton_create (GuiForm parent, int left, int right, int top, int bo
 		GuiCocoaButton *button = [[GuiCocoaButton alloc] init];
 		my d_widget = (GuiObject) button;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[button setUserData: me];
+		[button setUserData: me.get()];
 		[button setButtonType: NSMomentaryPushInButton];
 		[button setBezelStyle: NSRoundedBezelStyle];
 		[button setImagePosition: NSNoImage];
@@ -217,15 +169,15 @@ GuiButton GuiButton_create (GuiForm parent, int left, int right, int top, int bo
 		}
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmPushButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> window = CreateWindow (L"button", Melder_peek32toW (_GuiWin_expandAmpersands (my d_widget -> name)),
 			WS_CHILD
 			| ( flags & (GuiButton_DEFAULT | GuiButton_ATTRACTIVE) ? BS_DEFPUSHBUTTON : BS_PUSHBUTTON )
 			| WS_CLIPSIBLINGS,
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, NULL);
+			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
-		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), FALSE);
+		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), false);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		if (flags & GuiButton_DEFAULT || flags & GuiButton_ATTRACTIVE) {
 			parent -> d_widget -> shell -> defaultButton = parent -> d_widget -> defaultButton = my d_widget;
@@ -233,35 +185,17 @@ GuiButton GuiButton_create (GuiForm parent, int left, int right, int top, int bo
 		if (flags & GuiButton_CANCEL) {
 			parent -> d_widget -> shell -> cancelButton = parent -> d_widget -> cancelButton = my d_widget;
 		}
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmPushButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
-		CreatePushButtonControl (my d_widget -> macWindow, & my d_widget -> rect, NULL, & my d_widget -> nat.control.handle);
-		Melder_assert (my d_widget -> nat.control.handle != NULL);
-		SetControlReference (my d_widget -> nat.control.handle, (long) my d_widget);
-		my d_widget -> isControl = true;
-		_GuiNativeControl_setFont (my d_widget, flags & GuiButton_ATTRACTIVE ? /*1*/0 : 0, 13);
-		_GuiNativeControl_setTitle (my d_widget);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		if (flags & GuiButton_DEFAULT || flags & GuiButton_ATTRACTIVE) {
-			parent -> d_widget -> shell -> defaultButton = parent -> d_widget -> defaultButton = my d_widget;
-			Boolean set = true;
-			SetControlData (my d_widget -> nat.control.handle, kControlEntireControl, kControlPushButtonDefaultTag, sizeof (Boolean), & set);
-		}
-		if (flags & GuiButton_CANCEL) {
-			parent -> d_widget -> shell -> cancelButton = parent -> d_widget -> cancelButton = my d_widget;
-		}
 	#endif
 	if (flags & GuiButton_INSENSITIVE) {
-		GuiThing_setSensitive (me, false);
+		GuiThing_setSensitive (me.get(), false);
 	}
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiButton GuiButton_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*clickedCallback) (void *boss, GuiButtonEvent event), void *clickedBoss, uint32 flags)
+	const char32 *buttonText, GuiButton_ActivateCallback activateCallback, Thing activateBoss, uint32 flags)
 {
-	GuiButton me = GuiButton_create (parent, left, right, top, bottom, buttonText, clickedCallback, clickedBoss, flags);
+	GuiButton me = GuiButton_create (parent, left, right, top, bottom, buttonText, activateCallback, activateBoss, flags);
 	GuiThing_show (me);
 	return me;
 }
diff --git a/sys/GuiCheckButton.cpp b/sys/GuiCheckButton.cpp
index 8e18009..dba82b7 100644
--- a/sys/GuiCheckButton.cpp
+++ b/sys/GuiCheckButton.cpp
@@ -1,28 +1,25 @@
 /* GuiCheckButton.cpp
  *
- * Copyright (C) 1993-2012,2013,2014,2015 Paul Boersma, 2007-2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
+ * Copyright (C) 1993-2012,2013,2014,2015,2016 Paul Boersma, 2007-2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiCheckButton, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_checkbutton \
 		Melder_assert (widget -> widgetClass == xmToggleButtonWidgetClass); \
@@ -40,8 +37,8 @@ Thing_implement (GuiCheckButton, GuiControl, 0);
 	}
 	static void _GuiGtkCheckButton_valueChangedCallback (GuiObject widget, gpointer void_me) {
 		iam (GuiCheckButton);
-		if (my d_valueChangedCallback != NULL && ! my d_blockValueChangedCallbacks) {
-			struct structGuiCheckButtonEvent event = { me };
+		if (my d_valueChangedCallback && ! my d_blockValueChangedCallbacks) {
+			struct structGuiCheckButtonEvent event { me };
 			my d_valueChangedCallback (my d_valueChangedBoss, & event);
 		}
 	}
@@ -55,23 +52,23 @@ Thing_implement (GuiCheckButton, GuiControl, 0);
 		trace (U"deleting a check button");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiCheckButton));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiCheckButton));
 		d_userData = static_cast <GuiCheckButton> (userData);
 	}
 	- (void) _guiCocoaButton_activateCallback: (id) widget {
 		Melder_assert (self == widget);   // sender (widget) and receiver (self) happen to be the same object
 		GuiCheckButton me = d_userData;
-		if (my d_valueChangedCallback != NULL) {
+		if (my d_valueChangedCallback) {
 			Melder_assert (! my d_blockValueChangedCallbacks);
-			struct structGuiCheckButtonEvent event = { me };
+			struct structGuiCheckButtonEvent event { me };
 			my d_valueChangedCallback (my d_valueChangedBoss, & event);
 		}
 	}
- at end
+	@end
 
 #elif win
 	void _GuiWinCheckButton_destroy (GuiObject widget) {
@@ -81,54 +78,36 @@ Thing_implement (GuiCheckButton, GuiControl, 0);
 	}
 	void _GuiWinCheckButton_handleClick (GuiObject widget) {
 		iam_checkbutton;
-		if (my d_valueChangedCallback != NULL) {
-			struct structGuiCheckButtonEvent event = { me };
+		if (my d_valueChangedCallback) {
+			struct structGuiCheckButtonEvent event { me };
 			my d_valueChangedCallback (my d_valueChangedBoss, & event);
 		}
 	}
-#elif mac
-	void _GuiMacCheckButton_destroy (GuiObject widget) {
-		iam_checkbutton;
-		_GuiNativeControl_destroy (widget);
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacCheckButton_handleClick (GuiObject widget, EventRecord *macEvent) {
-		iam_checkbutton;
-		_GuiMac_clipOnParent (widget);
-		bool clicked = HandleControlClick (widget -> nat.control.handle, macEvent -> where, macEvent -> modifiers, NULL);
-		GuiMac_clipOff ();
-		if (clicked) {
-			if (my d_valueChangedCallback != NULL) {
-				struct structGuiCheckButtonEvent event = { me };
-				my d_valueChangedCallback (my d_valueChangedBoss, & event);
-			}
-		}
-	}
 #endif
 
 GuiCheckButton GuiCheckButton_create (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiCheckButtonEvent event), void *valueChangedBoss, uint32 flags)
+	const char32 *buttonText, GuiCheckButton_ValueChangedCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
-	GuiCheckButton me = Thing_new (GuiCheckButton);
+	autoGuiCheckButton me = Thing_new (GuiCheckButton);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_valueChangedCallback = valueChangedCallback;
 	my d_valueChangedBoss = valueChangedBoss;
 	#if gtk
 		my d_widget = gtk_check_button_new_with_label (Melder_peek32to8 (buttonText));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), (flags & GuiCheckButton_SET) != 0);
 		if (flags & GuiCheckButton_INSENSITIVE) {
-			GuiThing_setSensitive (me, false);
+			GuiThing_setSensitive (me.get(), false);
 		}
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkCheckButton_destroyCallback), me);
-		g_signal_connect (GTK_TOGGLE_BUTTON (my d_widget), "toggled", G_CALLBACK (_GuiGtkCheckButton_valueChangedCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkCheckButton_destroyCallback), me.get());
+		g_signal_connect (GTK_TOGGLE_BUTTON (my d_widget), "toggled", G_CALLBACK (_GuiGtkCheckButton_valueChangedCallback), me.get());
 	#elif cocoa
 		GuiCocoaCheckButton *checkButton = [[GuiCocoaCheckButton alloc] init];
 		my d_widget = (GuiObject) checkButton;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[checkButton setUserData: me];
+		[checkButton setUserData: me.get()];
 		[checkButton setButtonType: NSSwitchButton];
 		[checkButton setTitle: (NSString *) Melder_peek32toCfstring (buttonText)];
 		[checkButton setTarget: checkButton];
@@ -138,42 +117,27 @@ GuiCheckButton GuiCheckButton_create (GuiForm parent, int left, int right, int t
 		}
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmToggleButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> isRadioButton = false;
 		my d_widget -> window = CreateWindow (L"button", Melder_peek32toW (_GuiWin_expandAmpersands (buttonText)),
 			WS_CHILD | BS_AUTOCHECKBOX | WS_CLIPSIBLINGS,
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, NULL);
+			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
-		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), FALSE);
+		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), false);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		if (flags & GuiCheckButton_SET) {
 			Button_SetCheck (my d_widget -> window, BST_CHECKED);
 		}
 		if (flags & GuiCheckButton_INSENSITIVE) {
-			GuiThing_setSensitive (me, false);
-		}
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmToggleButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
-		my d_widget -> isRadioButton = false;
-		CreateCheckBoxControl (my d_widget -> macWindow, & my d_widget -> rect, NULL,
-			(flags & GuiCheckButton_SET) != 0, true, & my d_widget -> nat.control.handle);
-		Melder_assert (my d_widget -> nat.control.handle != NULL);
-		SetControlReference (my d_widget -> nat.control.handle, (long) my d_widget);
-		my d_widget -> isControl = true;
-		_GuiNativeControl_setFont (my d_widget, 0, 13);
-		_GuiNativeControl_setTitle (my d_widget);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		if (flags & GuiCheckButton_INSENSITIVE) {
-			GuiThing_setSensitive (me, false);
+			GuiThing_setSensitive (me.get(), false);
 		}
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiCheckButton GuiCheckButton_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiCheckButtonEvent event), void *valueChangedBoss, uint32 flags)
+	const char32 *buttonText, GuiCheckButton_ValueChangedCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
 	GuiCheckButton me = GuiCheckButton_create (parent, left, right, top, bottom, buttonText, valueChangedCallback, valueChangedBoss, flags);
 	GuiThing_show (me);
@@ -189,8 +153,6 @@ bool GuiCheckButton_getValue (GuiCheckButton me) {
         value = [checkButton state] == NSOnState;
 	#elif win
 		value = (Button_GetState (my d_widget -> window) & 0x0003) == BST_CHECKED;
-	#elif mac
-		value = GetControlValue (my d_widget -> nat.control.handle);
 	#endif
 	return value;
 }
@@ -204,8 +166,6 @@ void GuiCheckButton_setValue (GuiCheckButton me, bool value) {
 		[checkButton setState: value ? NSOnState: NSOffState];
 	#elif win
 		Button_SetCheck (my d_widget -> window, value ? BST_CHECKED : BST_UNCHECKED);
-	#elif mac
-		SetControlValue (my d_widget -> nat.control.handle, value);
 	#endif
 }
 
diff --git a/sys/GuiControl.cpp b/sys/GuiControl.cpp
index 273cdc6..95d4089 100644
--- a/sys/GuiControl.cpp
+++ b/sys/GuiControl.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2008 Stefan de Koninck, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -98,25 +97,25 @@ void structGuiControl :: v_positionInForm (GuiObject widget, int left, int right
 		(void) parent;
 		if (left >= 0) {
 			if (right > 0) {
-				XtVaSetValues (widget, XmNx, left, XmNwidth, right - left, NULL);
+				XtVaSetValues (widget, XmNx, left, XmNwidth, right - left, nullptr);
 			} else {
-				XtVaSetValues (widget, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, left, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, - right, NULL);
+				XtVaSetValues (widget, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, left, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, - right, nullptr);
 			}
 		} else {
 			Melder_assert (right <= 0);
 			trace (U"parent width ", parent -> d_widget -> width);
-			XtVaSetValues (widget, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, - right, XmNwidth, right - left, NULL);
+			XtVaSetValues (widget, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, - right, XmNwidth, right - left, nullptr);
 			trace (U"parent width ", parent -> d_widget -> width);
 		}
 		if (top >= 0) {
 			if (bottom > 0) {
-				XtVaSetValues (widget, XmNy, top, XmNheight, bottom - top, NULL);
+				XtVaSetValues (widget, XmNy, top, XmNheight, bottom - top, nullptr);
 			} else {
-				XtVaSetValues (widget, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, top, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, - bottom, NULL);
+				XtVaSetValues (widget, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, top, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, - bottom, nullptr);
 			}
 		} else {
 			Melder_assert (bottom <= 0);
-			XtVaSetValues (widget, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, - bottom, XmNheight, bottom - top, NULL);
+			XtVaSetValues (widget, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, - bottom, XmNheight, bottom - top, nullptr);
 		}
 	#endif
 }
@@ -137,7 +136,7 @@ void structGuiControl :: v_positionInScrolledWindow (GuiObject widget, int width
 		[widgetView release];   // ... so we can release the item already
 	#elif motif
 		(void) parent;
-		XtVaSetValues (widget, XmNwidth, width, XmNheight, height, NULL);
+		XtVaSetValues (widget, XmNwidth, width, XmNheight, height, nullptr);
 	#endif
 }
 
@@ -148,6 +147,8 @@ int GuiControl_getX (GuiControl me) {
 		return [(NSView *) my d_widget frame]. origin. x;
 	#elif motif
 		return my d_widget -> x;
+	#else
+		return 0;
 	#endif
 }
 
@@ -158,6 +159,8 @@ int GuiControl_getY (GuiControl me) {
 		return [(NSView *) my d_widget frame]. origin. y;
 	#elif motif
 		return my d_widget -> y;
+	#else
+		return 0;
 	#endif
 }
 
@@ -168,6 +171,8 @@ int GuiControl_getWidth (GuiControl me) {
 		return [(NSView *) my d_widget frame]. size. width;
 	#elif motif
 		return my d_widget -> width;
+	#else
+		return 0;
 	#endif
 }
 
@@ -178,6 +183,8 @@ int GuiControl_getHeight (GuiControl me) {
 		return [(NSView *) my d_widget frame]. size. height;
 	#elif motif
 		return my d_widget -> height;
+	#else
+		return 0;
 	#endif
 }
 
@@ -189,7 +196,7 @@ void GuiControl_move (GuiControl me, int x, int y) {
 		}
 	#elif cocoa
 	#elif motif
-		XtVaSetValues (my d_widget, XmNx, (Position) x, XmNy, (Position) y, NULL);   // 64-bit-compatible
+		XtVaSetValues (my d_widget, XmNx, (Position) x, XmNy, (Position) y, nullptr);   // 64-bit-compatible
 	#endif
 }
 
@@ -198,7 +205,7 @@ void GuiControl_setSize (GuiControl me, int width, int height) {
 		gtk_widget_set_size_request (GTK_WIDGET (my d_widget), width, height);
 	#elif cocoa
 	#elif motif
-		XtVaSetValues (my d_widget, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, NULL);   // 64-bit-compatible
+		XtVaSetValues (my d_widget, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, nullptr);   // 64-bit-compatible
 	#endif
 }
 
diff --git a/sys/GuiDialog.cpp b/sys/GuiDialog.cpp
index 24f71cc..28ba31f 100644
--- a/sys/GuiDialog.cpp
+++ b/sys/GuiDialog.cpp
@@ -2,27 +2,18 @@
  *
  * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/12/30
- * fb 2010/02/23 gtk
- * pb 2010/05/29 repaired memory leak; made dialog front on show
- * pb 2010/07/29 removed GuiDialog_show
- * pb 2011/04/06 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -39,42 +30,11 @@ Thing_implement (GuiDialog, GuiShell, 0);
 		(void) widget;
 		(void) event;
 		iam (GuiDialog);
-		if (my d_goAwayCallback != NULL) {
-			my d_goAwayCallback (my d_goAwayBoss);
-		}
-		return TRUE;   // signal handled (don't destroy dialog)
-	}
-#elif cocoa
-	@interface GuiCocoaDialog : NSWindow
-	@end
-	@implementation GuiCocoaDialog {
-		GuiDialog d_userData;
-	}
-	- (void) dealloc {   // override
-		GuiDialog me = d_userData;
-		forget (me);
-		trace (U"deleting a dialog");
-		[super dealloc];
-	}
-	- (GuiDialog) userData {
-		return d_userData;
-	}
-	- (void) setUserData: (GuiDialog) userData {
-		d_userData = userData;
-	}
-	- (BOOL) windowShouldClose: (id) sender {
-		GuiCocoaDialog *widget = (GuiCocoaDialog *) sender;
-		GuiDialog me = [widget userData];
-		if (my d_goAwayCallback != NULL) {
-			trace (U"calling goAwayCallback)");
+		if (my d_goAwayCallback) {
 			my d_goAwayCallback (my d_goAwayBoss);
-		} else {
-			trace (U"hiding window");
-			[widget orderOut: nil];
 		}
-		return FALSE;
+		return true;   // signal handled (don't destroy dialog)
 	}
-	@end
 #elif motif
 	static void _GuiMotifDialog_destroyCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		(void) widget; (void) call;
@@ -84,16 +44,16 @@ Thing_implement (GuiDialog, GuiShell, 0);
 	static void _GuiMotifDialog_goAwayCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		(void) widget; (void) call;
 		iam (GuiDialog);
-		if (my d_goAwayCallback != NULL) {
+		if (my d_goAwayCallback) {
 			my d_goAwayCallback (my d_goAwayBoss);
 		}
 	}
 #endif
 
 GuiDialog GuiDialog_create (GuiWindow parent, int x, int y, int width, int height,
-	const char32 *title, void (*goAwayCallback) (void *goAwayBoss), void *goAwayBoss, uint32 flags)
+	const char32 *title, GuiShell_GoAwayCallback goAwayCallback, Thing goAwayBoss, uint32 flags)
 {
-	GuiDialog me = Thing_new (GuiDialog);
+	autoGuiDialog me = Thing_new (GuiDialog);
 	my d_parent = parent;
 	my d_goAwayCallback = goAwayCallback;
 	my d_goAwayBoss = goAwayBoss;
@@ -104,52 +64,52 @@ GuiDialog GuiDialog_create (GuiWindow parent, int x, int y, int width, int heigh
 			GuiObject toplevel = gtk_widget_get_ancestor (GTK_WIDGET (parent -> d_widget), GTK_TYPE_WINDOW);
 			if (toplevel) {
 				gtk_window_set_transient_for (GTK_WINDOW (my d_gtkWindow), GTK_WINDOW (toplevel));
-				gtk_window_set_destroy_with_parent (GTK_WINDOW (my d_gtkWindow), TRUE);
+				gtk_window_set_destroy_with_parent (GTK_WINDOW (my d_gtkWindow), true);
 			}
 		}
 		g_signal_connect (G_OBJECT (my d_gtkWindow), "delete-event",
-			goAwayCallback ? G_CALLBACK (_GuiGtkDialog_goAwayCallback) : G_CALLBACK (gtk_widget_hide_on_delete), me);
+			goAwayCallback ? G_CALLBACK (_GuiGtkDialog_goAwayCallback) : G_CALLBACK (gtk_widget_hide_on_delete), me.get());
 		gtk_window_set_default_size (GTK_WINDOW (my d_gtkWindow), width, height);
 		gtk_window_set_modal (GTK_WINDOW (my d_gtkWindow), flags & GuiDialog_MODAL);
-		GuiShell_setTitle (me, title);
+		GuiShell_setTitle (me.get(), title);
 		GuiObject vbox = GTK_DIALOG (my d_gtkWindow) -> vbox;
 		my d_widget = gtk_fixed_new ();
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		gtk_widget_set_size_request (GTK_WIDGET (my d_widget), width, height);
 		gtk_container_add (GTK_CONTAINER (vbox /*my d_gtkWindow*/), GTK_WIDGET (my d_widget));
 		gtk_widget_show (GTK_WIDGET (my d_widget));
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkDialog_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkDialog_destroyCallback), me.get());
 	#elif cocoa
 		(void) parent;
 		NSRect rect = { { (CGFloat) x, (CGFloat) y }, { (CGFloat) width, (CGFloat) height } };
-		NSWindow *nsWindow = [[GuiCocoaDialog alloc]
+		my d_cocoaShell = [[GuiCocoaShell alloc]
 			initWithContentRect: rect
 			styleMask: NSTitledWindowMask | NSClosableWindowMask
 			backing: NSBackingStoreBuffered
 			defer: false];
-        [nsWindow setMinSize: NSMakeSize (500.0, 500.0)];   // BUG: should not be needed
-		[nsWindow setTitle: (NSString *) Melder_peek32toCfstring (title)];
-		//[nsWindow makeKeyAndOrderFront: nil];
-		my d_widget = (GuiObject) [nsWindow contentView];
-		[(GuiCocoaDialog *) nsWindow setUserData: me];
-		[nsWindow setReleasedWhenClosed: NO];
+        [my d_cocoaShell   setMinSize: NSMakeSize (500.0, 500.0)];   // BUG: should not be needed
+		[my d_cocoaShell   setTitle: (NSString *) Melder_peek32toCfstring (title)];
+		//[my d_cocoaShell   makeKeyAndOrderFront: nil];
+		my d_widget = (GuiObject) [my d_cocoaShell   contentView];
+		[my d_cocoaShell   setUserData: me.get()];
+		[my d_cocoaShell   setReleasedWhenClosed: NO];
 	#elif motif
-		my d_xmShell = XmCreateDialogShell (mac ? NULL : parent -> d_widget, "dialogShell", NULL, 0);
-		XtVaSetValues (my d_xmShell, XmNdeleteResponse, goAwayCallback ? XmDO_NOTHING : XmUNMAP, XmNx, x, XmNy, y, NULL);
+		my d_xmShell = XmCreateDialogShell (mac ? nullptr : parent -> d_widget, "dialogShell", nullptr, 0);
+		XtVaSetValues (my d_xmShell, XmNdeleteResponse, goAwayCallback ? XmDO_NOTHING : XmUNMAP, XmNx, x, XmNy, y, nullptr);
 		if (goAwayCallback) {
-			XmAddWMProtocolCallback (my d_xmShell, 'delw', _GuiMotifDialog_goAwayCallback, (char *) me);
+			XmAddWMProtocolCallback (my d_xmShell, 'delw', _GuiMotifDialog_goAwayCallback, (char *) me.get());
 		}
-		GuiShell_setTitle (me, title);
-		my d_widget = XmCreateForm (my d_xmShell, "dialog", NULL, 0);
-		XtVaSetValues (my d_widget, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, NULL);
-		_GuiObject_setUserData (my d_widget, me);
-		XtAddCallback (my d_widget, XmNdestroyCallback, _GuiMotifDialog_destroyCallback, me);
+		GuiShell_setTitle (me.get(), title);
+		my d_widget = XmCreateForm (my d_xmShell, "dialog", nullptr, 0);
+		XtVaSetValues (my d_widget, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, nullptr);
+		_GuiObject_setUserData (my d_widget, me.get());
+		XtAddCallback (my d_widget, XmNdestroyCallback, _GuiMotifDialog_destroyCallback, me.get());
 		XtVaSetValues (my d_widget, XmNdialogStyle,
 			(flags & GuiDialog_MODAL) ? XmDIALOG_FULL_APPLICATION_MODAL : XmDIALOG_MODELESS,
-			XmNautoUnmanage, False, NULL);
+			XmNautoUnmanage, False, nullptr);
 	#endif
-	my d_shell = me;
-	return me;
+	my d_shell = me.get();
+	return me.releaseToAmbiguousOwner();
 }
 
 /* End of file GuiDialog.cpp */
diff --git a/sys/GuiDrawingArea.cpp b/sys/GuiDrawingArea.cpp
index 5bffc78..58e6ebd 100644
--- a/sys/GuiDrawingArea.cpp
+++ b/sys/GuiDrawingArea.cpp
@@ -1,20 +1,19 @@
 /* GuiDrawingArea.cpp
  *
- * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
+ * Copyright (C) 1993-2012,2013,2015,2016 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -25,8 +24,6 @@
 
 Thing_implement (GuiDrawingArea, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_drawingarea \
 		Melder_assert (widget -> widgetClass == xmDrawingAreaWidgetClass); \
@@ -51,7 +48,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 		// first place?? Additionally this causes even more flickering
 		//gdk_window_clear_area ((GTK_WIDGET (widget)) -> window, expose->area.x, expose->area.y, expose->area.width, expose->area.height);
 		if (my d_exposeCallback) {
-			struct structGuiDrawingAreaExposeEvent event = { me, 0 };
+			struct structGuiDrawingArea_ExposeEvent event { me, 0 };
 			event. x = expose -> area. x;
 			event. y = expose -> area. y;
 			event. width = expose -> area. width;
@@ -60,10 +57,10 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 				//GdkRectangle rect = { event. x, event. y, event. width, event. height };
 				//gdk_window_begin_paint_rect ((GTK_WIDGET (widget)) -> window, & rect);
 				trace (U"send the expose callback");
-				trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+				trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 				my d_exposeCallback (my d_exposeBoss, & event);
 				trace (U"the expose callback finished");
-				trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+				trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 				//gdk_window_end_paint ((GTK_WIDGET (widget)) -> window);
 				//gdk_window_flush ((GTK_WIDGET (widget)) -> window);
 				//gdk_flush ();
@@ -71,16 +68,16 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 				Melder_flushError (U"Redrawing not completed");
 			}
 			trace (U"the expose callback handled drawing");
-			return TRUE;
+			return true;
 		}
 		trace (U"GTK will handle redrawing");
-		return FALSE;
+		return false;
 	}
 	static gboolean _GuiGtkDrawingArea_clickCallback (GuiObject widget, GdkEvent *e, gpointer void_me) {
 		iam (GuiDrawingArea);
-		if (e -> type != GDK_BUTTON_PRESS) return FALSE;
+		if (e -> type != GDK_BUTTON_PRESS) return false;
 		if (my d_clickCallback) {
-			struct structGuiDrawingAreaClickEvent event = { me, 0 };
+			struct structGuiDrawingArea_ClickEvent event { me, 0 };
 			event. button = ((GdkEventButton *) e) -> button;
 			event. x = ((GdkEventButton *) e) -> x;
 			event. y = ((GdkEventButton *) e) -> y;
@@ -90,15 +87,15 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 			} catch (MelderError) {
 				Melder_flushError (U"Mouse click not completely handled.");
 			}
-			return TRUE;
+			return true;
 		}
-		return FALSE;
+		return false;
 	}
 	static gboolean _GuiGtkDrawingArea_keyCallback (GuiObject widget, GdkEvent *gevent, gpointer void_me) {
 		iam (GuiDrawingArea);
 		trace (U"begin");
 		if (my d_keyCallback && gevent -> type == GDK_KEY_PRESS) {
-			struct structGuiDrawingAreaKeyEvent event = { me, 0 };
+			struct structGuiDrawingArea_KeyEvent event { me, 0 };
 			GdkEventKey *gkeyEvent = (GdkEventKey *) gevent;
 			event. key = gkeyEvent -> keyval;
 			/*
@@ -121,14 +118,14 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 			/*
 			 * FIXME: here we should empty the type-ahead buffer
 			 */
-			return TRUE;
+			return true;
 		}
-		return FALSE;   // if the drawing area has no keyCallback, the system will send the key press to a text field.
+		return false;   // if the drawing area has no keyCallback, the system will send the key press to a text field.
 	}
 	static gboolean _GuiGtkDrawingArea_resizeCallback (GuiObject widget, GtkAllocation *allocation, gpointer void_me) {
 		iam (GuiDrawingArea);
 		if (my d_resizeCallback) {
-			struct structGuiDrawingAreaResizeEvent event = { me, 0 };
+			struct structGuiDrawingArea_ResizeEvent event { me, 0 };
 			trace (U"drawingArea resized to ", allocation -> width, U" x ", allocation -> height, U".");
 			event. width = allocation -> width;
 			event. height = allocation -> height;
@@ -138,9 +135,9 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 			} catch (MelderError) {
 				Melder_flushError (U"Window resizing not completely handled.");
 			}
-			return TRUE;
+			return true;
 		}
-		return FALSE;
+		return false;
 	}
 #elif cocoa
 	@interface GuiCocoaDrawingArea ()
@@ -170,7 +167,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 		trace (U"deleting a drawing area");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
@@ -179,7 +176,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	- (void) resizeCallback: (NSRect) rect {
 		GuiDrawingArea me = (GuiDrawingArea) d_userData;
 		if (me && my d_resizeCallback) {
-			struct structGuiDrawingAreaResizeEvent event = { me, 0 };
+			struct structGuiDrawingArea_ResizeEvent event { me, 0 };
 			event. width = rect. size. width;
 			event. height = rect. size. height;
 			try {
@@ -198,7 +195,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 			_inited = YES;
 		}
 		if (my d_exposeCallback) {
-			struct structGuiDrawingAreaExposeEvent event = { me };
+			struct structGuiDrawingArea_ExposeEvent event { me };
 			try {
 				my d_exposeCallback (my d_exposeBoss, & event);
 			} catch (MelderError) {
@@ -223,7 +220,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 		 * the key focus from the Search field, a situation that cannot hurt).
 		 */
 		GuiDrawingArea me = (GuiDrawingArea) d_userData;
-		return my d_keyCallback != NULL;
+		return !! my d_keyCallback;
 	}
 	- (void) mouseEntered: (NSEvent *) nsEvent {
 		(void) nsEvent;
@@ -237,7 +234,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	 //   [self becomeFirstResponder];
 		GuiDrawingArea me = (GuiDrawingArea) d_userData;
 		if (my d_clickCallback) {
-			struct structGuiDrawingAreaClickEvent event = { me, 0 };
+			struct structGuiDrawingArea_ClickEvent event { me, 0 };
 			NSPoint local_point = [self   convertPoint: [nsEvent locationInWindow]   fromView: nil];
 			event. x = local_point. x;
 			//event. y = [self frame]. size. height - local_point. y;
@@ -289,7 +286,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	- (void) keyDown: (NSEvent *) nsEvent {
 		GuiDrawingArea me = (GuiDrawingArea) d_userData;
 		if (my d_keyCallback) {
-			struct structGuiDrawingAreaKeyEvent event = { me, 0 };
+			struct structGuiDrawingArea_KeyEvent event { me, 0 };
 			event. key = [[nsEvent charactersIgnoringModifiers]   characterAtIndex: 0];
 			if (event. key == NSLeftArrowFunctionKey)  event. key = 0x2190;
 			if (event. key == NSRightArrowFunctionKey) event. key = 0x2192;
@@ -319,7 +316,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 		PAINTSTRUCT paintStruct;
 		BeginPaint (widget -> window, & paintStruct);
 		if (my d_exposeCallback) {
-			struct structGuiDrawingAreaExposeEvent event = { me };
+			struct structGuiDrawingArea_ExposeEvent event { me };
 			try {
 				my d_exposeCallback (my d_exposeBoss, & event);
 			} catch (MelderError) {
@@ -331,7 +328,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	void _GuiWinDrawingArea_handleClick (GuiObject widget, int x, int y) {
 		iam_drawingarea;
 		if (my d_clickCallback) {
-			struct structGuiDrawingAreaClickEvent event = { me, 0 };
+			struct structGuiDrawingArea_ClickEvent event { me, 0 };
 			event. x = x;
 			event. y = y;
 			event. shiftKeyPressed = GetKeyState (VK_SHIFT) < 0;
@@ -347,7 +344,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	void _GuiWinDrawingArea_handleKey (GuiObject widget, TCHAR kar) {   // TODO: event?
 		iam_drawingarea;
 		if (my d_keyCallback) {
-			struct structGuiDrawingAreaKeyEvent event = { me, 0 };
+			struct structGuiDrawingArea_KeyEvent event { me, 0 };
 			event. key = kar;
 			if (event. key == VK_RETURN) event. key = 10;
 			if (event. key == VK_LEFT)  event. key = 0x2190;
@@ -367,80 +364,7 @@ Thing_implement (GuiDrawingArea, GuiControl, 0);
 	void _GuiWinDrawingArea_shellResize (GuiObject widget) {
 		iam_drawingarea;
 		if (my d_resizeCallback) {
-			struct structGuiDrawingAreaResizeEvent event = { me };
-			event. width = widget -> width;
-			event. height = widget -> height;
-			try {
-				my d_resizeCallback (my d_resizeBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Window resizing not completely handled.");
-			}
-		}
-	}
-#elif mac
-	void _GuiMacDrawingArea_destroy (GuiObject widget) {
-		iam_drawingarea;
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacDrawingArea_update (GuiObject widget) {
-		iam_drawingarea;
-		if (my d_exposeCallback) {
-			struct structGuiDrawingAreaExposeEvent event = { me };
-			_GuiMac_clipOnParent (widget);
-			try {
-				my d_exposeCallback (my d_exposeBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Redrawing not completed");
-			}
-			GuiMac_clipOff ();
-		}
-	}
-	void _GuiMacDrawingArea_handleClick (GuiObject widget, EventRecord *macEvent) {
-		iam_drawingarea;
-		if (my d_clickCallback) {
-			struct structGuiDrawingAreaClickEvent event = { me, 0 };
-			event. x = macEvent -> where. h;
-			event. y = macEvent -> where. v;
-			event. shiftKeyPressed = (macEvent -> modifiers & shiftKey) != 0;
-			event. commandKeyPressed = (macEvent -> modifiers & cmdKey) != 0;
-			event. optionKeyPressed = (macEvent -> modifiers & optionKey) != 0;
-			event. extraControlKeyPressed = (macEvent -> modifiers & controlKey) != 0;
-			try {
-				my d_clickCallback (my d_clickBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Mouse click not completely handled.");
-			}
-		}
-	}
-	bool _GuiMacDrawingArea_tryToHandleKey (GuiObject widget, EventRecord *macEvent) {
-		iam_drawingarea;
-		if (my d_keyCallback) {
-			struct structGuiDrawingAreaKeyEvent event = { me, 0 };
-			event. key = macEvent -> message & charCodeMask;
-			//if (event. key == 9) event. key = 0x2324;   // tab
-			if (event. key == 13) event. key = 10;   // return -> newline
-			if (event. key == 27) event. key = 0x238B;
-			if (event. key == 28) event. key = 0x2190;
-			if (event. key == 29) event. key = 0x2192;
-			if (event. key == 30) event. key = 0x2191;
-			if (event. key == 31) event. key = 0x2193;
-			event. shiftKeyPressed = (macEvent -> modifiers & shiftKey) != 0;
-			event. commandKeyPressed = (macEvent -> modifiers & cmdKey) != 0;
-			event. optionKeyPressed = (macEvent -> modifiers & optionKey) != 0;
-			event. extraControlKeyPressed = (macEvent -> modifiers & controlKey) != 0;
-			try {
-				my d_keyCallback (my d_keyBoss, & event);
-			} catch (MelderError) {
-				Melder_flushError (U"Key press not completely handled.");
-			}
-			return true;
-		}
-		return false;
-	}
-	void _GuiMacDrawingArea_shellResize (GuiObject widget) {
-		iam_drawingarea;
-		if (my d_resizeCallback) {
-			struct structGuiDrawingAreaResizeEvent event = { me, 0 };
+			struct structGuiDrawingArea_ResizeEvent event { me };
 			event. width = widget -> width;
 			event. height = widget -> height;
 			try {
@@ -459,7 +383,7 @@ static gboolean _guiGtkDrawingArea_swipeCallback (GuiObject w, GdkEventScroll *e
 		double hv = gtk_range_get_value (GTK_RANGE (my d_horizontalScrollBar -> d_widget));
 		GtkAdjustment *adjustment = gtk_range_get_adjustment (GTK_RANGE (my d_horizontalScrollBar -> d_widget));
 		gdouble hi;
-		g_object_get (adjustment, "step_increment", & hi, NULL);
+		g_object_get (adjustment, "step_increment", & hi, nullptr);
 		switch (event -> direction) {
 			case GDK_SCROLL_LEFT:
 				gtk_range_set_value (GTK_RANGE (my d_horizontalScrollBar -> d_widget), hv - hi);
@@ -473,7 +397,7 @@ static gboolean _guiGtkDrawingArea_swipeCallback (GuiObject w, GdkEventScroll *e
 		double vv = gtk_range_get_value (GTK_RANGE (my d_verticalScrollBar -> d_widget));
 		GtkAdjustment *adjustment = gtk_range_get_adjustment (GTK_RANGE (my d_verticalScrollBar -> d_widget));
 		gdouble vi;
-		g_object_get (adjustment, "step_increment", & vi, NULL);
+		g_object_get (adjustment, "step_increment", & vi, nullptr);
 		switch (event -> direction) {
 			case GDK_SCROLL_UP:
 				gtk_range_set_value (GTK_RANGE (my d_verticalScrollBar -> d_widget), vv - vi);
@@ -483,18 +407,18 @@ static gboolean _guiGtkDrawingArea_swipeCallback (GuiObject w, GdkEventScroll *e
 				break;
 		}
 	}
-	return TRUE;
+	return true;
 }
 #endif
 
 GuiDrawingArea GuiDrawingArea_create (GuiForm parent, int left, int right, int top, int bottom,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback)  (void *boss, GuiDrawingAreaClickEvent  event),
-	void (*keyCallback)    (void *boss, GuiDrawingAreaKeyEvent    event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 /* flags */)
 {
-	GuiDrawingArea me = Thing_new (GuiDrawingArea);
+	autoGuiDrawingArea me = Thing_new (GuiDrawingArea);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_exposeCallback = exposeCallback;
@@ -513,50 +437,46 @@ GuiDrawingArea GuiDrawingArea_create (GuiForm parent, int left, int right, int t
 			| GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK
 			| GDK_POINTER_MOTION_HINT_MASK);                    // receive fewer motion notify events (the cb might take time)
 		gtk_widget_set_events (GTK_WIDGET (my d_widget), mask);
-		g_signal_connect (G_OBJECT (my d_widget), "expose-event",         G_CALLBACK (_GuiGtkDrawingArea_exposeCallback),  me);
-		g_signal_connect (G_OBJECT (my d_widget), "destroy",              G_CALLBACK (_GuiGtkDrawingArea_destroyCallback), me);
-		g_signal_connect (G_OBJECT (my d_widget), "button-press-event",   G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		g_signal_connect (G_OBJECT (my d_widget), "button-release-event", G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		g_signal_connect (G_OBJECT (my d_widget), "motion-notify-event",  G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		if (parent != NULL) {
+		g_signal_connect (G_OBJECT (my d_widget), "expose-event",         G_CALLBACK (_GuiGtkDrawingArea_exposeCallback),  me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "destroy",              G_CALLBACK (_GuiGtkDrawingArea_destroyCallback), me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "button-press-event",   G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "button-release-event", G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "motion-notify-event",  G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		if (parent) {
 			Melder_assert (parent -> d_widget);
 			g_signal_connect (G_OBJECT (gtk_widget_get_toplevel (GTK_WIDGET (parent -> d_widget))), "key-press-event",
-				G_CALLBACK (_GuiGtkDrawingArea_keyCallback), me);
+				G_CALLBACK (_GuiGtkDrawingArea_keyCallback), me.get());
 		}
-		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiGtkDrawingArea_resizeCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiGtkDrawingArea_resizeCallback), me.get());
 
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		gtk_widget_set_double_buffered (GTK_WIDGET (my d_widget), FALSE);
+		gtk_widget_set_double_buffered (GTK_WIDGET (my d_widget), false);
 	#elif cocoa
 		GuiCocoaDrawingArea *drawingArea = [[GuiCocoaDrawingArea alloc] init];
 		my d_widget = (GuiObject) drawingArea;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[drawingArea   setUserData: me];
+		[drawingArea   setUserData: me.get()];
 		if (keyCallback) {
 			[[drawingArea window]   makeFirstResponder: drawingArea];   // needed in DemoWindow
 		}
     #elif win
 		my d_widget = _Gui_initializeWidget (xmDrawingAreaWidgetClass, parent -> d_widget, U"drawingArea");
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> window = CreateWindowEx (0, Melder_peek32toW (_GuiWin_getDrawingAreaClassName ()), L"drawingArea",
 			WS_CHILD | WS_BORDER | WS_CLIPSIBLINGS,
-			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height, my d_widget -> parent -> window, NULL, theGui.instance, NULL);
+			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height, my d_widget -> parent -> window, nullptr, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmDrawingAreaWidgetClass, parent -> d_widget, U"drawingArea");
-		_GuiObject_setUserData (my d_widget, me);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiDrawingArea GuiDrawingArea_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags)
 {
 	GuiDrawingArea me = GuiDrawingArea_create (parent, left, right, top, bottom, exposeCallback, clickCallback, keyCallback, resizeCallback, boss, flags);
@@ -565,13 +485,13 @@ GuiDrawingArea GuiDrawingArea_createShown (GuiForm parent, int left, int right,
 }
 
 GuiDrawingArea GuiDrawingArea_create (GuiScrolledWindow parent, int width, int height,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 /* flags */)
 {
-	GuiDrawingArea me = Thing_new (GuiDrawingArea);
+	autoGuiDrawingArea me = Thing_new (GuiDrawingArea);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_exposeCallback = exposeCallback;
@@ -590,45 +510,41 @@ GuiDrawingArea GuiDrawingArea_create (GuiScrolledWindow parent, int width, int h
 			| GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK
 			| GDK_POINTER_MOTION_HINT_MASK);                    // receive fewer motion notify events (the cb might take time)
 		gtk_widget_set_events (GTK_WIDGET (my d_widget), mask);
-		g_signal_connect (G_OBJECT (my d_widget), "expose-event",         G_CALLBACK (_GuiGtkDrawingArea_exposeCallback),  me);
-		g_signal_connect (G_OBJECT (my d_widget), "destroy",              G_CALLBACK (_GuiGtkDrawingArea_destroyCallback), me);
-		g_signal_connect (G_OBJECT (my d_widget), "button-press-event",   G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		g_signal_connect (G_OBJECT (my d_widget), "button-release-event", G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		g_signal_connect (G_OBJECT (my d_widget), "motion-notify-event",  G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me);
-		if (parent != NULL) {
+		g_signal_connect (G_OBJECT (my d_widget), "expose-event",         G_CALLBACK (_GuiGtkDrawingArea_exposeCallback),  me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "destroy",              G_CALLBACK (_GuiGtkDrawingArea_destroyCallback), me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "button-press-event",   G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "button-release-event", G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		g_signal_connect (G_OBJECT (my d_widget), "motion-notify-event",  G_CALLBACK (_GuiGtkDrawingArea_clickCallback),   me.get());
+		if (parent) {
 			g_signal_connect (G_OBJECT (gtk_widget_get_toplevel (GTK_WIDGET (parent -> d_widget))), "key-press-event",
-				G_CALLBACK (_GuiGtkDrawingArea_keyCallback), me);
+				G_CALLBACK (_GuiGtkDrawingArea_keyCallback), me.get());
 		}
-		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiGtkDrawingArea_resizeCallback), me);
-		_GuiObject_setUserData (my d_widget, me);
+		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiGtkDrawingArea_resizeCallback), me.get());
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInScrolledWindow (my d_widget, width, height, parent);
-		gtk_widget_set_double_buffered (GTK_WIDGET (my d_widget), FALSE);
+		gtk_widget_set_double_buffered (GTK_WIDGET (my d_widget), false);
 	#elif cocoa
 		GuiCocoaDrawingArea *drawingArea = [[GuiCocoaDrawingArea alloc] init];
 		my d_widget = (GuiObject) drawingArea;
 		my v_positionInScrolledWindow (my d_widget, width, height, parent);
-		[drawingArea setUserData: me];
+		[drawingArea setUserData: me.get()];
     #elif win
 		my d_widget = _Gui_initializeWidget (xmDrawingAreaWidgetClass, parent -> d_widget, U"drawingArea");
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> window = CreateWindowEx (0, Melder_peek32toW (_GuiWin_getDrawingAreaClassName ()), L"drawingArea",
 			WS_CHILD | WS_BORDER | WS_CLIPSIBLINGS,
-			0, 0, my d_widget -> width, my d_widget -> height, my d_widget -> parent -> window, NULL, theGui.instance, NULL);
+			0, 0, my d_widget -> width, my d_widget -> height, my d_widget -> parent -> window, nullptr, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
 		my v_positionInScrolledWindow (my d_widget, width, height, parent);
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmDrawingAreaWidgetClass, parent -> d_widget, U"drawingArea");
-		_GuiObject_setUserData (my d_widget, me);
-		my v_positionInScrolledWindow (my d_widget, width, height, parent);
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiDrawingArea GuiDrawingArea_createShown (GuiScrolledWindow parent, int width, int height,
-	void (*exposeCallback) (void *boss, GuiDrawingAreaExposeEvent event),
-	void (*clickCallback) (void *boss, GuiDrawingAreaClickEvent event),
-	void (*keyCallback) (void *boss, GuiDrawingAreaKeyEvent event),
-	void (*resizeCallback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss,
+	GuiDrawingArea_ExposeCallback exposeCallback,
+	GuiDrawingArea_ClickCallback clickCallback,
+	GuiDrawingArea_KeyCallback keyCallback,
+	GuiDrawingArea_ResizeCallback resizeCallback, Thing boss,
 	uint32 flags)
 {
 	GuiDrawingArea me = GuiDrawingArea_create (parent, width, height, exposeCallback, clickCallback, keyCallback, resizeCallback, boss, flags);
@@ -644,17 +560,17 @@ void GuiDrawingArea_setSwipable (GuiDrawingArea me, GuiScrollBar horizontalScrol
 	#endif
 }
 
-void GuiDrawingArea_setExposeCallback (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaExposeEvent event), void *boss) {
+void GuiDrawingArea_setExposeCallback (GuiDrawingArea me, GuiDrawingArea_ExposeCallback callback, Thing boss) {
 	my d_exposeCallback = callback;
 	my d_exposeBoss = boss;
 }
 
-void GuiDrawingArea_setClickCallback (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaClickEvent event), void *boss) {
+void GuiDrawingArea_setClickCallback (GuiDrawingArea me, GuiDrawingArea_ClickCallback callback, Thing boss) {
 	my d_clickCallback = callback;
 	my d_clickBoss = boss;
 }
 
-void GuiDrawingArea_setResizeCallback (GuiDrawingArea me, void (*callback) (void *boss, GuiDrawingAreaResizeEvent event), void *boss) {
+void GuiDrawingArea_setResizeCallback (GuiDrawingArea me, GuiDrawingArea_ResizeCallback callback, Thing boss) {
 	my d_resizeCallback = callback;
 	my d_resizeBoss = boss;
 }
diff --git a/sys/GuiFileSelect.cpp b/sys/GuiFileSelect.cpp
index 30a084e..8ed8c4f 100644
--- a/sys/GuiFileSelect.cpp
+++ b/sys/GuiFileSelect.cpp
@@ -1,20 +1,19 @@
 /* GuiFileSelect.cpp
  *
- * Copyright (C) 2010-2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 2010-2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -23,30 +22,30 @@
 	#include <Shlobj.h>
 #endif
 
-SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *title, bool allowMultipleFiles) {
-	structMelderDir saveDir = { { 0 } };
+autoStringSet GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *title, bool allowMultipleFiles) {
+	structMelderDir saveDir { { 0 } };
 	Melder_getDefaultDir (& saveDir);
-	autoSortedSetOfString me = SortedSetOfString_create ();
+	autoStringSet me = StringSet_create ();
 	#if gtk
 		(void) parent;
 		static structMelderDir dir;
-		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), NULL, GTK_FILE_CHOOSER_ACTION_OPEN,
-			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL);
+		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), nullptr, GTK_FILE_CHOOSER_ACTION_OPEN,
+			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, nullptr);
 		gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dialog), allowMultipleFiles);
 		if (MelderDir_isNull (& dir))   // first time?
 			Melder_getDefaultDir (& dir);
 		gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), Melder_peek32to8 (Melder_dirToPath (& dir)));
 		if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
 			char *infolderName_utf8 = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog));
-			if (infolderName_utf8 != NULL) {
+			if (infolderName_utf8) {
 				char32 *infolderName = Melder_peek8to32 (infolderName_utf8);   // dangle
 				Melder_pathToDir (infolderName, & dir);
 				g_free (infolderName_utf8);
 			}
 			GSList *infileNames_list = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (dialog));
-			for (GSList *element = infileNames_list; element != NULL; element = g_slist_next (element)) {
+			for (GSList *element = infileNames_list; element != nullptr; element = g_slist_next (element)) {
 				char *infileName_utf8 = (char *) element -> data;
-				SortedSetOfString_addString (me.peek(), Melder_peek8to32 (infileName_utf8));
+				my addString_copy (Melder_peek8to32 (infileName_utf8));
 				g_free (infileName_utf8);
 			}
 			g_slist_free (infileNames_list);
@@ -61,43 +60,10 @@ SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *
 		[openPanel setCanChooseDirectories: NO];
 		if ([openPanel runModal] == NSFileHandlingPanelOKButton) {
 			for (NSURL *url in [openPanel URLs]) {
-				structMelderFile file = { 0 };
+				structMelderFile file { 0 };
 				Melder_8bitFileRepresentationToStr32_inline ([[url path] UTF8String], file. path);   // BUG: unsafe buffer
-				SortedSetOfString_addString (me.peek(), file. path);
-			}
-		}
-		setlocale (LC_ALL, "en_US");
-	#elif mac
-		(void) parent;
-		OSStatus err;
-		NavDialogRef dialogRef;
-		NavDialogCreationOptions dialogOptions;
-		NavGetDefaultDialogCreationOptions (& dialogOptions);
-		dialogOptions. optionFlags |= kNavDontAutoTranslate;
-		//dialogOptions. windowTitle = (CFStringRef) Melder_peek32toCfstring (title);
-		if (! allowMultipleFiles) dialogOptions. optionFlags &= ~ kNavAllowMultipleFiles;
-		err = NavCreateChooseFileDialog (& dialogOptions, NULL, NULL, NULL, NULL, NULL, & dialogRef);
-		if (err == noErr) {
-			NavReplyRecord reply;
-			[(NSOpenPanel *) dialogRef setTitle: (NSString *) Melder_peek32toCfstring (title)];
-			NavDialogRun (dialogRef);
-			err = NavDialogGetReply (dialogRef, & reply);
-			if (err == noErr && reply. validRecord) {
-				long numberOfSelectedFiles;
-				AECountItems (& reply. selection, & numberOfSelectedFiles);
-				for (int ifile = 1; ifile <= numberOfSelectedFiles; ifile ++) {
-					AEKeyword keyWord;
-					DescType typeCode;
-					Size actualSize = 0;
-					FSRef machFile;
-					structMelderFile file = { 0 };
-					if ((err = AEGetNthPtr (& reply. selection, ifile, typeFSRef, & keyWord, & typeCode, & machFile, sizeof (FSRef), & actualSize)) == noErr)
-						Melder_machToFile (& machFile, & file);
-					SortedSetOfString_addString (me.peek(), Melder_fileToPath (& file));
-				}
-				NavDisposeReply (& reply);
+				my addString_copy (file. path);
 			}
-			NavDialogDispose (dialogRef);
 		}
 		setlocale (LC_ALL, "en_US");
 	#elif win
@@ -105,24 +71,24 @@ SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *
 		static WCHAR fullFileNameW [3000+2];
 		ZeroMemory (& openFileName, sizeof (OPENFILENAMEW));
 		openFileName. lStructSize = sizeof (OPENFILENAMEW);
-		openFileName. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : NULL;
-		openFileName. hInstance = NULL;
+		openFileName. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : nullptr;
+		openFileName. hInstance = nullptr;
 		openFileName. lpstrFilter = L"All Files\0*.*\0";
 		ZeroMemory (fullFileNameW, (3000+2) * sizeof (WCHAR));
-		openFileName. lpstrCustomFilter = NULL;
+		openFileName. lpstrCustomFilter = nullptr;
 		openFileName. nMaxCustFilter = 0;
 		openFileName. lpstrFile = fullFileNameW;
 		openFileName. nMaxFile = 3000;
-		openFileName. lpstrFileTitle = NULL;
+		openFileName. lpstrFileTitle = nullptr;
 		openFileName. nMaxFileTitle = 0;
-		openFileName. lpstrInitialDir = NULL;
+		openFileName. lpstrInitialDir = nullptr;
 		openFileName. lpstrTitle = Melder_peek32toW (title);
 		openFileName. Flags = OFN_EXPLORER | OFN_LONGNAMES | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY
 			| (allowMultipleFiles ? OFN_ALLOWMULTISELECT : 0);
-		openFileName. lpstrDefExt = NULL;
-		openFileName. lpfnHook = NULL;
-		openFileName. lpTemplateName = NULL;
-		openFileName. pvReserved = NULL;
+		openFileName. lpstrDefExt = nullptr;
+		openFileName. lpfnHook = nullptr;
+		openFileName. lpTemplateName = nullptr;
+		openFileName. pvReserved = nullptr;
 		openFileName. dwReserved = 0;
 		openFileName. FlagsEx = 0;
 		OSVERSIONINFO osVersionInfo;
@@ -135,7 +101,7 @@ SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *
 				/*
 				 * The user selected one file.
 				 */
-				SortedSetOfString_addString (me.peek(), Melder_peekWto32 (fullFileNameW));
+				my addString_copy (Melder_peekWto32 (fullFileNameW));
 			} else {
 				/*
 				 * The user selected multiple files.
@@ -146,27 +112,27 @@ SortedSetOfString GuiFileSelect_getInfileNames (GuiWindow parent, const char32 *
 				for (const WCHAR *p = & fullFileNameW [firstFileNameLength + 1]; *p != L'\0'; p += wcslen (p) + 1) {
 					structMelderFile file { 0 };
 					MelderDir_getFile (& dir, Melder_peekWto32 (p), & file);
-					SortedSetOfString_addString (me.peek(), Melder_fileToPath (& file));
+					my addString_copy (Melder_fileToPath (& file));
 				}
 			}
 		}
 		setlocale (LC_ALL, "C");
 	#endif
 	Melder_setDefaultDir (& saveDir);
-	return me.transfer();
+	return me;
 }
 
 char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, const char32 *defaultName) {
 	structMelderDir saveDir { { 0 } };
 	Melder_getDefaultDir (& saveDir);
-	char32 *outfileName = NULL;
+	char32 *outfileName = nullptr;
 	#if gtk
 		(void) parent;
 		static structMelderFile file;
-		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), NULL, GTK_FILE_CHOOSER_ACTION_SAVE,
-			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
-		gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
-		if (file. path [0] != '\0') {
+		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), nullptr, GTK_FILE_CHOOSER_ACTION_SAVE,
+			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, nullptr);
+		gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), true);
+		if (file. path [0] != U'\0') {
 			gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), Melder_peek32to8 (file. path));
 		}
 		gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), Melder_peek32to8 (defaultName));
@@ -182,11 +148,8 @@ char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, co
 		(void) parent;
 		NSSavePanel	*savePanel = [NSSavePanel savePanel];
 		[savePanel setTitle: [NSString stringWithUTF8String: Melder_peek32to8 (title)]];
-		//[savePanel setNameFieldStringValue: [NSString stringWithUTF8String: Melder_peek32to8 (defaultName)]];   // from 10.6 on
-		if ([savePanel runModalForDirectory: nil
-			           file: [NSString stringWithUTF8String: Melder_peek32to8 (defaultName)]   // deprecated 10.6 but needed 10.5
-			] == NSFileHandlingPanelOKButton)
-		{
+		[savePanel setNameFieldStringValue: [NSString stringWithUTF8String: Melder_peek32to8 (defaultName)]];
+		if ([savePanel runModal] == NSFileHandlingPanelOKButton) {
 			NSString *path = [[savePanel URL] path];
 			if (path == nil)
 				Melder_throw (U"Don't understand where you want to save (1).");
@@ -198,54 +161,6 @@ char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, co
 			outfileName = Melder_dup (file. path);
 		}
 		setlocale (LC_ALL, "en_US");
-	#elif mac
-		(void) parent;
-		const char32 *lastSlash = str32rchr (defaultName, Melder_DIRECTORY_SEPARATOR);
-		OSStatus err;
-		NavDialogRef dialogRef;
-		NavDialogCreationOptions dialogOptions;
-		NavGetDefaultDialogCreationOptions (& dialogOptions);
-		dialogOptions. windowTitle = (CFStringRef) Melder_peek32toCfstring (title);
-		//dialogOptions. message = (CFStringRef) Melder_peek32toCfstring (title);
-		dialogOptions. saveFileName = (CFStringRef) Melder_peek32toCfstring (lastSlash ? lastSlash + 1 : defaultName);
-		dialogOptions. optionFlags |= kNavNoTypePopup;
-		err = NavCreatePutFileDialog (& dialogOptions, 0, 0, NULL, NULL, & dialogRef);
-		if (err == noErr) {
-			NavReplyRecord reply;
-			NavDialogRun (dialogRef);
-			err = NavDialogGetReply (dialogRef, & reply);
-			if (Melder_debug == 19) {
-				Melder_casual (U"err ", err, U" ", reply. validRecord);
-			}
-			if (err == noErr && reply. validRecord) {
-				AEKeyword keyWord;
-				DescType typeCode;
-				Size actualSize = 0;
-				FSRef machFile;
-				if ((err = AEGetNthPtr (& reply. selection, 1, typeFSRef, & keyWord, & typeCode, & machFile, sizeof (FSRef), & actualSize)) == noErr) {
-					CFStringRef outfileName_cf = NavDialogGetSaveFileName (dialogRef);   // "Get", therefore it's not ours.
-					/*
-					 * machFile contains the directory as e.g. "/" or "/Users/jane"; in the latter (most usual) case, append a slash.
-					 */
-					char directoryPath_utf8 [1000];
-					FSRefMakePath (& machFile, (unsigned char *) directoryPath_utf8, 999);
-					if (! (directoryPath_utf8 [0] == '/' && directoryPath_utf8 [1] == '\0'))
-						strcat (directoryPath_utf8, "/");
-					structMelderFile file = { 0 };
-					Melder_8to32_inline (directoryPath_utf8, file. path, kMelder_textInputEncoding_UTF8);   // BUG throwable
-					int dirLength = str32len (file. path);
-					int n = CFStringGetLength (outfileName_cf);
-					char32 *p = file. path + dirLength;
-					for (int i = 0; i < n; i ++, p ++)
-						*p = CFStringGetCharacterAtIndex (outfileName_cf, i);
-					*p = '\0';
-					outfileName = Melder_dup (file. path);
-				}
-				NavDisposeReply (& reply);
-			}
-			NavDialogDispose (dialogRef);
-		}
-		setlocale (LC_ALL, "en_US");
 	#elif win
 		OPENFILENAMEW openFileName;
 		static WCHAR customFilter [100+2];
@@ -253,17 +168,17 @@ char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, co
 		wcsncpy (fullFileNameW, Melder_peek32toW (defaultName), 300+2);
 		fullFileNameW [300+1] = L'\0';
 		openFileName. lStructSize = sizeof (OPENFILENAMEW);
-		openFileName. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : NULL;
-		openFileName. lpstrFilter = NULL;   // like *.txt
+		openFileName. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : nullptr;
+		openFileName. lpstrFilter = nullptr;   // like *.txt
 		openFileName. lpstrCustomFilter = customFilter;
 		openFileName. nMaxCustFilter = 100;
 		openFileName. lpstrFile = fullFileNameW;
 		openFileName. nMaxFile = 300;
-		openFileName. lpstrFileTitle = NULL;
-		openFileName. lpstrInitialDir = NULL;
+		openFileName. lpstrFileTitle = nullptr;
+		openFileName. lpstrInitialDir = nullptr;
 		openFileName. lpstrTitle = Melder_peek32toW (title);
 		openFileName. Flags = OFN_LONGNAMES | OFN_OVERWRITEPROMPT | OFN_EXPLORER | OFN_HIDEREADONLY;
-		openFileName. lpstrDefExt = NULL;
+		openFileName. lpstrDefExt = nullptr;
 		if (GetSaveFileNameW (& openFileName)) {
 			outfileName = Melder_Wto32 (fullFileNameW);
 		}
@@ -274,15 +189,15 @@ char32 * GuiFileSelect_getOutfileName (GuiWindow parent, const char32 *title, co
 }
 
 char32 * GuiFileSelect_getDirectoryName (GuiWindow parent, const char32 *title) {
-	structMelderDir saveDir = { { 0 } };
+	structMelderDir saveDir { { 0 } };
 	Melder_getDefaultDir (& saveDir);
-	char32 *directoryName = NULL;
+	char32 *directoryName = nullptr;
 	#if gtk
 		(void) parent;
 		static structMelderFile file;
-		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
-			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, "Choose", GTK_RESPONSE_ACCEPT, NULL);
-		if (file. path [0] != '\0') {
+		GuiObject dialog = gtk_file_chooser_dialog_new (Melder_peek32to8 (title), nullptr, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, "Choose", GTK_RESPONSE_ACCEPT, nullptr);
+		if (file. path [0] != U'\0') {
 			gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), Melder_peek32to8 (file. path));
 		}
 		if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
@@ -304,56 +219,24 @@ char32 * GuiFileSelect_getDirectoryName (GuiWindow parent, const char32 *title)
 		if ([openPanel runModal] == NSFileHandlingPanelOKButton) {
 			for (NSURL *url in [openPanel URLs]) {
 				const char *directoryName_utf8 = [[url path] UTF8String];
-				structMelderDir dir = { { 0 } };
+				structMelderDir dir { { 0 } };
 				Melder_8bitFileRepresentationToStr32_inline (directoryName_utf8, dir. path);   // BUG: unsafe buffer
 				directoryName = Melder_dup (dir. path);
 			}
 		}
 		setlocale (LC_ALL, "en_US");
-	#elif mac
-		(void) parent;
-		OSStatus err;
-		NavDialogRef dialogRef;
-		NavDialogCreationOptions dialogOptions;
-		NavGetDefaultDialogCreationOptions (& dialogOptions);
-		dialogOptions. windowTitle = (CFStringRef) Melder_peek32toCfstring (title);
-		dialogOptions. optionFlags |= kNavDontAutoTranslate;
-		dialogOptions. optionFlags &= ~ kNavAllowMultipleFiles;
-		err = NavCreateChooseFolderDialog (& dialogOptions, NULL, NULL, NULL, & dialogRef);
-		if (err == noErr) {
-			NavReplyRecord reply;
-			NavDialogRun (dialogRef);
-			err = NavDialogGetReply (dialogRef, & reply);
-			if (Melder_debug == 19) {
-				Melder_casual (U"err ", err, U" ", reply. validRecord);
-			}
-			if (err == noErr && reply. validRecord) {
-				AEKeyword keyWord;
-				DescType typeCode;
-				Size actualSize = 0;
-				FSRef machFile;
-				structMelderFile file = { 0 };
-				if ((err = AEGetNthPtr (& reply. selection, 1, typeFSRef, & keyWord, & typeCode, & machFile, sizeof (FSRef), & actualSize)) == noErr) {
-					Melder_machToFile (& machFile, & file);
-					directoryName = Melder_dup (Melder_fileToPath (& file));
-				}
-				NavDisposeReply (& reply);
-			}
-			NavDialogDispose (dialogRef);
-		}
-		setlocale (LC_ALL, "en_US");
 	#elif win
 		static WCHAR fullFileNameW [3000+2];
 		static bool comInited = false;
 		if (! comInited) {
-			CoInitializeEx (NULL, COINIT_APARTMENTTHREADED);
+			CoInitializeEx (nullptr, COINIT_APARTMENTTHREADED);
 			comInited = true;
 		}
 		static BROWSEINFO info;
-		info. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : NULL;
+		info. hwndOwner = parent && parent -> d_xmShell ? (HWND) XtWindow (parent -> d_xmShell) : nullptr;
 		info. ulFlags = BIF_USENEWUI;
-		info. pidlRoot = NULL;   // everything on the computer should be browsable
-		info. pszDisplayName = NULL;   // this would only give the bare directory name, not the full path
+		info. pidlRoot = nullptr;   // everything on the computer should be browsable
+		info. pszDisplayName = nullptr;   // this would only give the bare directory name, not the full path
 		info. lpszTitle = Melder_peek32toW (title);
 		LPITEMIDLIST idList = SHBrowseForFolder (& info);
 		SHGetPathFromIDList (idList, fullFileNameW);
diff --git a/sys/GuiForm.cpp b/sys/GuiForm.cpp
index d82f468..076d7b0 100644
--- a/sys/GuiForm.cpp
+++ b/sys/GuiForm.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -39,7 +38,7 @@ Thing_implement (GuiForm, GuiControl, 0);
 
 GuiForm GuiForm_createInScrolledWindow (GuiScrolledWindow parent)
 {
-	GuiForm me = Thing_new (GuiForm);
+	autoGuiForm me = Thing_new (GuiForm);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
@@ -47,19 +46,19 @@ GuiForm GuiForm_createInScrolledWindow (GuiScrolledWindow parent)
 		gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (parent -> d_widget), GTK_WIDGET (my d_widget));
 	#elif cocoa
 	#elif motif
-		//my d_widget = XmCreateRowColumn (parent -> d_widget, "menu", NULL, 0);
-		my d_widget = XmCreateForm (parent -> d_widget, "menu", NULL, 0);
+		//my d_widget = XmCreateRowColumn (parent -> d_widget, "menu", nullptr, 0);
+		my d_widget = XmCreateForm (parent -> d_widget, "menu", nullptr, 0);
 	#endif
-	GuiThing_show (me);
+	GuiThing_show (me.get());
 
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkForm_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkForm_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifForm_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifForm_destroyCallback, me.get());
 	#endif
 
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 /* End of file GuiForm.cpp */
diff --git a/sys/GuiLabel.cpp b/sys/GuiLabel.cpp
index 65e4b28..06115c3 100644
--- a/sys/GuiLabel.cpp
+++ b/sys/GuiLabel.cpp
@@ -1,28 +1,25 @@
 /* GuiLabel.cpp
  *
- * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2007 Stefan de Konink
+ * Copyright (C) 1993-2012,2013,2015,2016 Paul Boersma, 2007 Stefan de Konink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiLabel, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if gtk
 	#define iam_label  GuiLabel me = (GuiLabel) _GuiObject_getUserData (widget)
 #elif cocoa
@@ -47,11 +44,11 @@ Thing_implement (GuiLabel, GuiControl, 0);
 		trace (U"deleting a label");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiLabel));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiLabel));
 		d_userData = static_cast <GuiLabel> (userData);
 	}
 	@end
@@ -61,25 +58,19 @@ Thing_implement (GuiLabel, GuiControl, 0);
 		_GuiNativeControl_destroy (widget);
 		forget (me);   // NOTE: my widget is not destroyed here
 	}
-#elif mac
-	void _GuiMacLabel_destroy (GuiObject widget) {
-		iam_label;
-		_GuiNativeControl_destroy (widget);
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
 #endif
 
 GuiLabel GuiLabel_create (GuiForm parent, int left, int right, int top, int bottom,
 	const char32 *labelText, uint32 flags)
 {
-	GuiLabel me = Thing_new (GuiLabel);
+	autoGuiLabel me = Thing_new (GuiLabel);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
 		my d_widget = gtk_label_new (Melder_peek32to8 (labelText));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkLabel_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkLabel_destroyCallback), me.get());
 		gtk_misc_set_alignment (GTK_MISC (my d_widget), flags & GuiLabel_RIGHT ? 1.0 : flags & GuiLabel_CENTRE ? 0.5 : 0.0, 0.5);
 	#elif cocoa
 		trace (U"create");
@@ -88,7 +79,7 @@ GuiLabel GuiLabel_create (GuiForm parent, int left, int right, int top, int bott
 		trace (U"position");
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		trace (U"set user data");
-		[label setUserData: me];
+		[label setUserData: me.get()];
 		trace (U"set bezel style");
 		[label setBezelStyle: NSTextFieldRoundedBezel];
 		trace (U"set bordered");
@@ -105,32 +96,18 @@ GuiLabel GuiLabel_create (GuiForm parent, int left, int right, int top, int bott
 		[label setFont: theLabelFont];
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmLabelWidgetClass, parent -> d_widget, labelText);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> window = CreateWindow (L"static", Melder_peek32toW (_GuiWin_expandAmpersands (my d_widget -> name)),
 			WS_CHILD
 			| ( flags & GuiLabel_RIGHT ? SS_RIGHT : flags & GuiLabel_CENTRE ? SS_CENTER : SS_LEFT )
 			| SS_CENTERIMAGE,
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, NULL);
+			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
-		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), FALSE);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmLabelWidgetClass, parent -> d_widget, labelText);
-		_GuiObject_setUserData (my d_widget, me);
-		ControlFontStyleRec macFontStyleRecord = { 0 };   // BUG: _GuiNativeControl_setFont will reset alignment (should do inheritance)
-		macFontStyleRecord. flags = kControlUseFontMask | kControlUseSizeMask | kControlUseJustMask;
-		macFontStyleRecord. font = systemFont;
-		macFontStyleRecord. size = 13;
-		macFontStyleRecord. just = ( flags & GuiLabel_RIGHT ? teFlushRight : flags & GuiLabel_CENTRE ? teCenter : teFlushLeft );
-		CreateStaticTextControl (my d_widget -> macWindow, & my d_widget -> rect, NULL, & macFontStyleRecord, & my d_widget -> nat.control.handle);
-		Melder_assert (my d_widget -> nat.control.handle != NULL);
-		SetControlReference (my d_widget -> nat.control.handle, (long) my d_widget);
-		my d_widget -> isControl = true;
-		_GuiNativeControl_setTitle (my d_widget);
+		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), false);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiLabel GuiLabel_createShown (GuiForm parent, int left, int right, int top, int bottom,
diff --git a/sys/GuiList.cpp b/sys/GuiList.cpp
index b29482b..07b5bfd 100644
--- a/sys/GuiList.cpp
+++ b/sys/GuiList.cpp
@@ -1,30 +1,19 @@
 /* GuiList.cpp
  *
- * Copyright (C) 1993-2011,2012,2013,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2011,2012,2013,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/12/26 abstraction from Motif
- * pb 2009/01/31 NUMlvector_free has to be followed by assigning a NULL
- * fb 2010/02/23 GTK
- * pb 2010/06/14 HandleControlClick
- * pb 2010/07/05 blockSelectionChangedCallback
- * pb 2010/11/28 removed Motif
- * pb 2011/04/06 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -32,8 +21,6 @@
 
 Thing_implement (GuiList, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_list \
 		Melder_assert (widget -> widgetClass == xmListWidgetClass); \
@@ -56,9 +43,9 @@ Thing_implement (GuiList, GuiControl, 0);
 	}
 	static void _GuiGtkList_selectionChangedCallback (GtkTreeSelection *sel, gpointer void_me) {
 		iam (GuiList);
-		if (my d_selectionChangedCallback != NULL && ! my d_blockValueChangedCallbacks) {
+		if (my d_selectionChangedCallback && ! my d_blockValueChangedCallbacks) {
 			trace (U"Selection changed.");
-			struct structGuiListEvent event { me };
+			struct structGuiList_SelectionChangedEvent event { me };
 			my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
 		}
 	}
@@ -74,7 +61,7 @@ Thing_implement (GuiList, GuiControl, 0);
 		[_contents release];
 		GuiThing me = d_userData;
 		forget (me);
-		Melder_casual (U"deleting a list");
+		//Melder_casual (U"deleting a list");
 		[super dealloc];
 	}
 
@@ -119,11 +106,11 @@ Thing_implement (GuiList, GuiControl, 0);
 	/*
 	 * Implement GuiCocoaAny protocol.
 	 */
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiList));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiList));
 		d_userData = static_cast <GuiList> (userData);
 	}
 
@@ -139,7 +126,7 @@ Thing_implement (GuiList, GuiControl, 0);
 		trace (U"enter");
 		GuiList me = d_userData;
 		if (me && my d_selectionChangedCallback) {
-			struct structGuiListEvent event { me };
+			//struct structGuiList_SelectionChangedEvent event { me };
 			//my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
 		}
 	}
@@ -168,7 +155,7 @@ Thing_implement (GuiList, GuiControl, 0);
 		trace (U"enter");
 		GuiList me = d_userData;
 		if (me && my d_selectionChangedCallback && ! my d_blockValueChangedCallbacks) {
-			struct structGuiListEvent event { me };
+			struct structGuiList_SelectionChangedEvent event { me };
 			my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
 		}
 	}
@@ -185,180 +172,10 @@ Thing_implement (GuiList, GuiControl, 0);
 	}
 	void _GuiWinList_handleClick (GuiObject widget) {
 		iam_list;
-		if (my d_selectionChangedCallback != NULL) {
-			struct structGuiListEvent event { me };
-			my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
-		}
-	}
-#elif mac
-	void _GuiMacList_destroy (GuiObject widget) {
-		iam_list;
-		_GuiMac_clipOnParent (widget);
-		if (widget -> isControl) {
-			DisposeControl (widget -> nat.control.handle);
-		} else {
-			LDispose (my d_macListHandle);
-		}
-		GuiMac_clipOff ();
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacList_map (GuiObject widget) {
-		iam_list;
-		if (widget -> isControl) {
-			_GuiNativeControl_show (widget);
-			trace (U"showing a list");
-			//_GuiMac_clipOnParent (widget);
-			//LSetDrawingMode (true, my macListHandle);
-			//_GuiMac_clipOffInvalid (widget);
-		} else {
-			_GuiMac_clipOnParent (widget);
-			LSetDrawingMode (true, my d_macListHandle);
-			_GuiMac_clipOffInvalid (widget);
-		}
-	}
-	void _GuiMacList_activate (GuiObject widget, bool activate) {
-		iam_list;
-		_GuiMac_clipOnParent (widget);
-		LActivate (activate, my d_macListHandle);
-		GuiMac_clipOff ();
-	}
-	void _GuiMacList_handleControlClick (GuiObject widget, EventRecord *macEvent) {
-		iam_list;
-		_GuiMac_clipOnParent (widget);
-		bool pushed = HandleControlClick (widget -> nat.control.handle, macEvent -> where, macEvent -> modifiers, NULL);
-		GuiMac_clipOff ();
-		if (pushed && my d_selectionChangedCallback) {
-			struct structGuiListEvent event { me };
-			my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
-		}
-	}
-	void _GuiMacList_handleClick (GuiObject widget, EventRecord *macEvent) {
-		iam_list;
-		_GuiMac_clipOnParent (widget);
-		bool doubleClick = LClick (macEvent -> where, macEvent -> modifiers, my d_macListHandle);
-		GuiMac_clipOff ();
 		if (my d_selectionChangedCallback) {
-			struct structGuiListEvent event { me };
+			struct structGuiList_SelectionChangedEvent event { me };
 			my d_selectionChangedCallback (my d_selectionChangedBoss, & event);
 		}
-		if (doubleClick && my d_doubleClickCallback) {
-			struct structGuiListEvent event { me };
-			my d_doubleClickCallback (my d_doubleClickBoss, & event);
-		}
-	}
-	void _GuiMacList_move (GuiObject widget) {
-		iam_list;
-		(** my d_macListHandle). rView = widget -> rect;
-	}
-	void _GuiMacList_resize (GuiObject widget) {
-		iam_list;
-		(** my d_macListHandle). rView = widget -> rect;
-		SetPortWindowPort (widget -> macWindow);
-		(** my d_macListHandle). cellSize. h = widget -> width;
-		if (widget -> parent -> widgetClass == xmScrolledWindowWidgetClass)
-			_Gui_manageScrolledWindow (widget -> parent);
-	}
-	void _GuiMacList_shellResize (GuiObject widget) {
-		iam_list;
-		(** my d_macListHandle). rView = widget -> rect;
-		(** my d_macListHandle). cellSize. h = widget -> width;
-	}
-	void _GuiMacList_update (GuiObject widget, RgnHandle visRgn) {
-		iam_list;
-		_GuiMac_clipOnParent (widget);
-		if (widget -> isControl) {
-			Draw1Control (widget -> nat.control.handle);
-		} else {
-			LUpdate (visRgn, my d_macListHandle);
-		}
-		GuiMac_clipOff ();
-	}
-#endif
-
-#if mac && useCarbon
-	static pascal void mac_listDefinition (short message, Boolean select, Rect *rect, Cell cell, short dataOffset, short dataLength, ListHandle handle) {
-		GuiObject widget = (GuiObject) GetListRefCon (handle);
-		(void) cell;
-		switch (message) {
-			case lDrawMsg:
-			case lHiliteMsg:   // We redraw everything, even when just highlighting. The reason is anti-aliasing.
-				Melder_assert (widget != NULL);
-				SetPortWindowPort (widget -> macWindow);
-				_GuiMac_clipOnParent (widget);
-				/*
-				 * In order that highlighting (which by default turns only the white pixels into pink)
-				 * does not leave light-grey specks around the glyphs (in the anti-aliasing regions),
-				 * we simply draw the glyphs on a pink background if the item is selected.
-				 */
-				/*
-				 * Erase the background.
-				 */
-				static RGBColor whiteColour = { 0xFFFF, 0xFFFF, 0xFFFF }, blackColour = { 0, 0, 0 };
-				RGBForeColor (& whiteColour);
-				PaintRect (rect);
-				RGBForeColor (& blackColour);
-				/*
-				 * Pink (or any other colour the user prefers) if the item is selected.
-				 */
-				if (select) {
-					LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-					InvertRect (rect);
-				}
-				/*
-				 * Draw the text on top of this.
-				 */
-				CGContextRef macGraphicsContext;
-				QDBeginCGContext (GetWindowPort (widget -> macWindow), & macGraphicsContext);
-				int shellHeight = GuiMac_clipOn_graphicsContext (widget, macGraphicsContext);
-				static ATSUFontFallbacks fontFallbacks = NULL;
-				if (fontFallbacks == NULL) {
-					ATSUCreateFontFallbacks (& fontFallbacks);
-					ATSUSetObjFontFallbacks (fontFallbacks, 0, NULL, kATSUDefaultFontFallbacks);
-				}
-				char *text_utf8 = (char *) *(*handle) -> cells + dataOffset;
-				static char buffer [30001];
-				strncpy (buffer, text_utf8, dataLength);
-				buffer [dataLength] = '\0';
-				char32 *text32 = Melder_peek8to32 (buffer);
-				const char16 *text_utf16 = (const char16 *) Melder_peek32to16 (text32);
-				UniCharCount runLength = str16len (text_utf16);   // BUG
-				ATSUTextLayout textLayout;
-				ATSUStyle style;
-				ATSUCreateStyle (& style);
-				Fixed fontSize = 13 << 16;
-				Boolean boldStyle = 0;
-				Boolean italicStyle = 0;
-				ATSUAttributeTag styleAttributeTags [] = { kATSUSizeTag, kATSUQDBoldfaceTag, kATSUQDItalicTag };
-				ByteCount styleValueSizes [] = { sizeof (Fixed), sizeof (Boolean), sizeof (Boolean) };
-				ATSUAttributeValuePtr styleValues [] = { & fontSize, & boldStyle, & italicStyle };
-				ATSUSetAttributes (style, 3, styleAttributeTags, styleValueSizes, styleValues);
-				OSStatus err = ATSUCreateTextLayoutWithTextPtr ((ConstUniCharArrayPtr) text_utf16,
-					kATSUFromTextBeginning, kATSUToTextEnd, runLength,
-					1, & runLength, & style, & textLayout);
-				Melder_assert (err == 0);
-				ATSUAttributeTag attributeTags [] = { kATSUCGContextTag, kATSULineFontFallbacksTag };
-				ByteCount valueSizes [] = { sizeof (CGContextRef), sizeof (ATSUFontFallbacks) };
-				ATSUAttributeValuePtr values [] = { & macGraphicsContext, & fontFallbacks };
-				ATSUSetLayoutControls (textLayout, 2, attributeTags, valueSizes, values);
-				ATSUSetTransientFontMatching (textLayout, true);
-				CGContextTranslateCTM (macGraphicsContext, rect -> left, shellHeight - rect -> bottom + 4);
-				err = ATSUDrawText (textLayout, kATSUFromTextBeginning, kATSUToTextEnd, 0 /*xDC << 16*/, 0 /*(shellHeight - yDC) << 16*/);
-				Melder_assert (err == 0);
-				CGContextSynchronize (macGraphicsContext);
-				ATSUDisposeTextLayout (textLayout);
-				ATSUDisposeStyle (style);
-				QDEndCGContext (GetWindowPort (widget -> macWindow), & macGraphicsContext);
-				GuiMac_clipOff ();
-				break;
-	/*		case lHiliteMsg:
-				Melder_assert (me != NULL);
-				SetPortWindowPort (my macWindow);
-				_GuiMac_clipOnParent (me);
-				LMSetHiliteMode (LMGetHiliteMode () & ~ 128L);
-				InvertRect (rect);
-				GuiMac_clipOff ();
-				break;*/
-		}
 	}
 #endif
 
@@ -370,39 +187,39 @@ enum {
 #endif
 
 GuiList GuiList_create (GuiForm parent, int left, int right, int top, int bottom, bool allowMultipleSelection, const char32 *header) {
-	GuiList me = Thing_new (GuiList);
+	autoGuiList me = Thing_new (GuiList);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_allowMultipleSelection = allowMultipleSelection;
 	#if gtk
-		GtkCellRenderer *renderer = NULL;
-		GtkTreeViewColumn *col = NULL;
-		GtkTreeSelection *sel = NULL;
-		GtkListStore *liststore = NULL;
+		GtkCellRenderer *renderer = nullptr;
+		GtkTreeViewColumn *col = nullptr;
+		GtkTreeSelection *sel = nullptr;
+		GtkListStore *liststore = nullptr;
 
 		liststore = gtk_list_store_new (1, G_TYPE_STRING);   // 1 column, of type String (this is a vararg list)
-		GuiObject scrolled = gtk_scrolled_window_new (NULL, NULL);
+		GuiObject scrolled = gtk_scrolled_window_new (nullptr, nullptr);
 		gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 		my d_widget = gtk_tree_view_new_with_model (GTK_TREE_MODEL (liststore));
-		gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (my d_widget), FALSE);
+		gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (my d_widget), false);
 		gtk_container_add (GTK_CONTAINER (scrolled), GTK_WIDGET (my d_widget));
 		gtk_widget_show (GTK_WIDGET (scrolled));   // BUG
 		gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (my d_widget), allowMultipleSelection ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE);
 		g_object_unref (liststore);   // Destroys the widget after the list is destroyed
 
-		_GuiObject_setUserData (my d_widget, me);
-		_GuiObject_setUserData (scrolled, me);   // for resizing
+		_GuiObject_setUserData (my d_widget, me.get());
+		_GuiObject_setUserData (scrolled, me.get());   // for resizing
 
 		renderer = gtk_cell_renderer_text_new ();
 		col = gtk_tree_view_column_new ();
-		gtk_tree_view_column_pack_start (col, renderer, TRUE);
+		gtk_tree_view_column_pack_start (col, renderer, true);
 		gtk_tree_view_column_add_attribute (col, renderer, "text", 0);   // zeroeth column
-		if (header != NULL) {
+		if (header) {
 			//gtk_tree_view_column_set_title (col, Melder_peek32to8 (header));
 		}
 		gtk_tree_view_append_column (GTK_TREE_VIEW (my d_widget), col);
 
-		g_object_set_data_full (G_OBJECT (my d_widget), "guiList", me, (GDestroyNotify) _GuiGtkList_destroyCallback); 
+		g_object_set_data_full (G_OBJECT (my d_widget), "guiList", me.get(), (GDestroyNotify) _GuiGtkList_destroyCallback);
 
 /*		GtkCellRenderer *renderer;
 		GtkTreeViewColumn *col;
@@ -411,21 +228,21 @@ GuiList GuiList_create (GuiForm parent, int left, int right, int top, int bottom
 
 		renderer = gtk_cell_renderer_text_new ();
 		col = gtk_tree_view_column_new ();
-		gtk_tree_view_column_pack_start (col, renderer, TRUE);
+		gtk_tree_view_column_pack_start (col, renderer, true);
 		gtk_tree_view_column_add_attribute (col, renderer, "text", COL_ID);
 		gtk_tree_view_column_set_title (col, " ID ");
 		gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 		
 		renderer = gtk_cell_renderer_text_new ();
 		col = gtk_tree_view_column_new ();
-		gtk_tree_view_column_pack_start (col, renderer, TRUE);
+		gtk_tree_view_column_pack_start (col, renderer, true);
 		gtk_tree_view_column_add_attribute (col, renderer, "text", COL_TYPE);
 		gtk_tree_view_column_set_title (col, " Type ");
 		gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
 
 		renderer = gtk_cell_renderer_text_new ();
 		col = gtk_tree_view_column_new ();
-		gtk_tree_view_column_pack_start (col, renderer, TRUE);
+		gtk_tree_view_column_pack_start (col, renderer, true);
 		gtk_tree_view_column_add_attribute (col, renderer, "text", COL_NAME);
 		gtk_tree_view_column_set_title (col, " Name ");
 		gtk_tree_view_append_column (GTK_TREE_VIEW (view), col);
@@ -438,52 +255,32 @@ GuiList GuiList_create (GuiForm parent, int left, int right, int top, int bottom
 			gtk_tree_selection_set_mode (sel, GTK_SELECTION_SINGLE);
 		}
 		my v_positionInForm (scrolled, left, right, top, bottom, parent);
-		g_signal_connect (sel, "changed", G_CALLBACK (_GuiGtkList_selectionChangedCallback), me);
+		g_signal_connect (sel, "changed", G_CALLBACK (_GuiGtkList_selectionChangedCallback), me.get());
 	#elif cocoa
 		GuiCocoaList *list = [[GuiCocoaList alloc] init];
 		my d_widget = (GuiObject) list;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		[[list tableView] setAllowsMultipleSelection: allowMultipleSelection];
-		[list setUserData:me];
+		[list setUserData: me.get()];
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmListWidgetClass, parent -> d_widget, U"list");
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> window = CreateWindowEx (0, L"listbox", L"list",
 			WS_CHILD | WS_BORDER | WS_VSCROLL | LBS_NOTIFY | WS_CLIPSIBLINGS |
 			( allowMultipleSelection ? LBS_EXTENDEDSEL : 0 ),
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, NULL, theGui.instance, NULL);
+			my d_widget -> parent -> window, nullptr, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
-		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), FALSE);
+		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), false);
 		/*if (MEMBER (my parent, ScrolledWindow)) {
 			XtDestroyWidget (my d_widget -> parent -> motiff.scrolledWindow.horizontalBar);
-			my d_widget -> parent -> motiff.scrolledWindow.horizontalBar = NULL;
+			my d_widget -> parent -> motiff.scrolledWindow.horizontalBar = nullptr;
 			XtDestroyWidget (my d_widget -> parent -> motiff.scrolledWindow.verticalBar);
-			my d_widget -> parent -> motiff.scrolledWindow.verticalBar = NULL;
+			my d_widget -> parent -> motiff.scrolledWindow.verticalBar = nullptr;
 		}*/
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-	#elif mac
-		my d_xmScrolled = XmCreateScrolledWindow (parent -> d_widget, "scrolled", NULL, 0);
-		my v_positionInForm (my d_xmScrolled, left, right, top, bottom, parent);
-		my d_xmList = my d_widget = _Gui_initializeWidget (xmListWidgetClass, my d_xmScrolled, U"list");
-		_GuiObject_setUserData (my d_xmScrolled, me);
-		_GuiObject_setUserData (my d_xmList, me);
-		Rect dataBounds = { 0, 0, 0, 1 };
-		Point cSize;
-		SetPt (& cSize, my d_xmList -> rect.right - my d_xmList -> rect.left + 1, CELL_HEIGHT);
-		static ListDefSpec listDefSpec;
-		if (listDefSpec. u. userProc == NULL) {
-			listDefSpec. defType = kListDefUserProcType;
-			listDefSpec. u. userProc = mac_listDefinition;
-		}
-		CreateCustomList (& my d_xmList -> rect, & dataBounds, cSize, & listDefSpec, my d_xmList -> macWindow,
-			false, false, false, false, & my d_macListHandle);
-		SetListRefCon (my d_macListHandle, (long) my d_xmList);
-		if (allowMultipleSelection)
-			SetListSelectionFlags (my d_macListHandle, lExtendDrag | lNoRect);
-		XtVaSetValues (my d_xmList, XmNwidth, right > 0 ? right - left + 100 : 530, NULL);
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiList GuiList_createShown (GuiForm parent, int left, int right, int top, int bottom, bool allowMultipleSelection, const char32 *header) {
@@ -503,10 +300,6 @@ void GuiList_deleteAllItems (GuiList me) {
         [list. tableView   reloadData];
 	#elif win
 		ListBox_ResetContent (my d_widget -> window);
-	#elif mac
-		_GuiMac_clipOnParent (my d_widget);
-		LDelRow (0, 0, my d_macListHandle);
-		GuiMac_clipOff ();
 	#endif
 }
 
@@ -515,7 +308,7 @@ void GuiList_deleteItem (GuiList me, long position) {
 	#if gtk
 		GtkTreeIter iter;
 		GtkTreeModel *tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget));
-		if (gtk_tree_model_iter_nth_child (tree_model, & iter, NULL, (gint) (position - 1))) {
+		if (gtk_tree_model_iter_nth_child (tree_model, & iter, nullptr, (gint) (position - 1))) {
 			gtk_list_store_remove (GTK_LIST_STORE (tree_model), & iter);
 		}
 	#elif cocoa
@@ -524,12 +317,6 @@ void GuiList_deleteItem (GuiList me, long position) {
 		[list. tableView   reloadData];
 	#elif win
 		ListBox_DeleteString (my d_widget -> window, position - 1);
-	#elif mac
-		_GuiMac_clipOnParent (my d_widget);
-		LDelRow (1, position - 1, my d_macListHandle);
-		GuiMac_clipOff ();
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		XtVaSetValues (my d_widget, XmNheight, n * CELL_HEIGHT, NULL);
 	#endif
 }
 
@@ -543,12 +330,6 @@ void GuiList_deselectAllItems (GuiList me) {
 		[list. tableView   deselectAll: nil];
 	#elif win
 		ListBox_SetSel (my d_widget -> window, False, -1);
-	#elif mac
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		Cell cell; cell.h = 0;
-		_GuiMac_clipOnParent (my d_widget);
-		for (long i = 0; i < n; i ++) { cell.v = i; LSetSelect (false, cell, my d_macListHandle); }
-		GuiMac_clipOff ();
 	#endif
 }
 
@@ -556,13 +337,13 @@ void GuiList_deselectItem (GuiList me, long position) {
 	GuiControlBlockValueChangedCallbacks block (me);
 	#if gtk
 		GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (my d_widget));
-/*		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
-		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position);*/
+//		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
+//		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position, -1 /* terminator */);
 		GtkTreeIter iter;
 //		gtk_tree_model_get_iter (GTK_TREE_MODEL (list_store), & iter, path);
 //		gtk_tree_path_free (path);
 		GtkTreeModel *tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget));
-		if (gtk_tree_model_iter_nth_child (tree_model, & iter, NULL, (gint) (position - 1))) {
+		if (gtk_tree_model_iter_nth_child (tree_model, & iter, nullptr, (gint) (position - 1))) {
 			gtk_tree_selection_unselect_iter (selection, & iter);
 		}
 	#elif cocoa
@@ -570,19 +351,12 @@ void GuiList_deselectItem (GuiList me, long position) {
 		[list. tableView   deselectRow: position - 1];
 	#elif win
 		ListBox_SetSel (my d_widget -> window, False, position - 1);
-	#elif mac
-		Cell cell;
-		cell. h = 0;
-		cell. v = position - 1; 
-		_GuiMac_clipOnParent (my d_widget);
-		LSetSelect (false, cell, my d_macListHandle);
-		GuiMac_clipOff ();
 	#endif
 }
 
 long * GuiList_getSelectedPositions (GuiList me, long *numberOfSelectedPositions) {
 	*numberOfSelectedPositions = 0;
-	long *selectedPositions = NULL;
+	long *selectedPositions = nullptr;
 	#if gtk
 		GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (my d_widget));
 		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
@@ -592,13 +366,13 @@ long * GuiList_getSelectedPositions (GuiList me, long *numberOfSelectedPositions
 			long ipos = 1;
 			*numberOfSelectedPositions = n;
 			selectedPositions = NUMvector <long> (1, *numberOfSelectedPositions);
-			Melder_assert (selectedPositions != NULL);
-			for (GList *l = g_list_first (list); l != NULL; l = g_list_next (l)) {
+			Melder_assert (selectedPositions);
+			for (GList *l = g_list_first (list); l != nullptr; l = g_list_next (l)) {
 				gint *index = gtk_tree_path_get_indices ((GtkTreePath *) l -> data);
 				selectedPositions [ipos] = index [0] + 1;
 				ipos ++;
 			}
-			g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
+			g_list_foreach (list, (GFunc) gtk_tree_path_free, nullptr);
 			g_list_free (list);
 		}
 		return selectedPositions;
@@ -629,36 +403,26 @@ long * GuiList_getSelectedPositions (GuiList me, long *numberOfSelectedPositions
 		}
 		*numberOfSelectedPositions = n;
 		selectedPositions = NUMvector <long> (1, *numberOfSelectedPositions);
-		Melder_assert (selectedPositions != NULL);
+		Melder_assert (selectedPositions);
 		for (long ipos = 1; ipos <= *numberOfSelectedPositions; ipos ++) {
 			selectedPositions [ipos] = indices [ipos - 1] + 1;   // convert from zero-based list of zero-based indices
 		}
 		Melder_free (indices);
-	#elif mac
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		Cell cell; cell.h = 0;
-		if (n < 1) {
-			return selectedPositions;
-		}
-		selectedPositions = NUMvector <long> (1, n);   // probably too big (ergo, probably reallocable), but the caller will throw it away anyway
-		for (long i = 1; i <= n; i ++) {
-			cell. v = i - 1;
-			if (LGetSelect (false, & cell, my d_macListHandle)) {
-				selectedPositions [++ *numberOfSelectedPositions] = i;
-			}
-		}
-		if (*numberOfSelectedPositions == 0) {
-			NUMvector_free (selectedPositions, 1);
-			selectedPositions = NULL;
-		}
 	#endif
 	return selectedPositions;
 }
 
 long GuiList_getBottomPosition (GuiList me) {
 	#if gtk
-		// TODO
-		return 1;
+		GtkTreePath *path;
+		long position = 1;
+		if (gtk_tree_view_get_visible_range (GTK_TREE_VIEW (my d_widget), nullptr, & path)) {
+			int *indices = gtk_tree_path_get_indices (path);
+			position = indices ? indices[0] + 1 : 1;
+			gtk_tree_path_free (path); // also frees indices !!
+		}
+		trace (U"bottom: ", position);
+		return position;
 	#elif cocoa
 		return 1;   // TODO
 	#elif win
@@ -667,18 +431,8 @@ long GuiList_getBottomPosition (GuiList me) {
 		long n = ListBox_GetCount (my d_widget -> window);
 		if (bottom > n) bottom = n;
 		return bottom;
-	#elif mac
-		Melder_assert (my d_widget -> parent -> widgetClass == xmScrolledWindowWidgetClass);
-		GuiObject clipWindow = my d_widget -> parent -> motiff.scrolledWindow.clipWindow;
-		GuiObject workWindow = my d_widget -> parent -> motiff.scrolledWindow.workWindow;
-		long top = (clipWindow -> rect.top - workWindow -> rect.top + 5) / CELL_HEIGHT + 1;
-		long visible = (clipWindow -> rect.bottom - clipWindow -> rect.top - 5) / CELL_HEIGHT + 1;
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		if (visible > n) visible = n;
-		long bottom = top + visible - 1;
-		if (bottom < 1) bottom = 1;
-		if (bottom > n) bottom = n;
-		return bottom;
+	#else
+		return 0;
 	#endif
 }
 
@@ -686,22 +440,27 @@ long GuiList_getNumberOfItems (GuiList me) {
 	long numberOfItems = 0;
 	#if gtk
 		GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget));
-		numberOfItems = gtk_tree_model_iter_n_children (model, NULL); 
+		numberOfItems = gtk_tree_model_iter_n_children (model, nullptr);
 	#elif cocoa
 		GuiCocoaList *list = (GuiCocoaList *) my d_widget;
 		numberOfItems = [[list contents] count];
 	#elif win
 		numberOfItems = ListBox_GetCount (my d_widget -> window);
-	#elif mac
-		numberOfItems = (** my d_macListHandle). dataBounds. bottom;
 	#endif
 	return numberOfItems;
 }
 
 long GuiList_getTopPosition (GuiList me) {
 	#if gtk
-		// TODO
-		return 1;
+		GtkTreePath *path;
+		long position = 1;
+		if (gtk_tree_view_get_visible_range (GTK_TREE_VIEW (my d_widget), & path, nullptr)) {
+			int *indices = gtk_tree_path_get_indices (path);
+			position = indices ? indices[0] + 1 : 1;
+			gtk_tree_path_free (path); // also frees indices !!
+		}
+		trace (U"top: ", position);
+		return position;
 	#elif cocoa
 		return 1;   // TODO
 	#elif win
@@ -710,59 +469,40 @@ long GuiList_getTopPosition (GuiList me) {
 		long n = ListBox_GetCount (my d_widget -> window);
 		if (top > n) top = 0;
 		return top;
-	#elif mac
-		Melder_assert (my d_widget -> parent -> widgetClass == xmScrolledWindowWidgetClass);
-		GuiObject clipWindow = my d_widget -> parent -> motiff.scrolledWindow.clipWindow;
-		GuiObject workWindow = my d_widget -> parent -> motiff.scrolledWindow.workWindow;
-		long top = (clipWindow -> rect.top - workWindow -> rect.top + 5) / CELL_HEIGHT + 1;
-		if (top < 1) top = 1;
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		if (top > n) top = 0;
-		return top;
+	#else
+		return 0;
 	#endif
 }
 
-void GuiList_insertItem (GuiList me, const char32 *itemText /* cattable */, long position) {
+void GuiList_insertItem (GuiList me, const char32 *itemText /* cattable */, long position_base1) {
+	bool explicitlyInsertAtEnd = ( position_base1 <= 0 );
 	GuiControlBlockValueChangedCallbacks block (me);
-	/*
-	 * 'position' is the position of the new item in the list after insertion:
-	 * a value of 1 therefore puts the new item at the top of the list;
-	 * a value of 0 is special: the item is put at the bottom of the list.
-	 */
 	#if gtk
 		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
-		gtk_list_store_insert_with_values (list_store, NULL, (gint) position - 1, COLUMN_STRING, Melder_peek32to8 (itemText), -1);
+		gtk_list_store_insert_with_values (list_store, nullptr, explicitlyInsertAtEnd ? 1000000000 : (gint) position_base1 - 1, COLUMN_STRING, Melder_peek32to8 (itemText), -1);
 		// TODO: Tekst opsplitsen
 		// does GTK know the '0' trick?
-		// it does know about NULL, to append in another function
+		// it does know about nullptr, to append in another function
 	#elif cocoa
-		GuiCocoaList *list = (GuiCocoaList *) my d_widget;
-		NSString *nsString = [[NSString alloc] initWithUTF8String: Melder_peek32to8 (itemText)];
-		if (position)
-			[[list contents]   insertObject: nsString   atIndex: position - 1];   // cocoa lists start with item 0
-		else
-			[[list contents]   addObject: nsString];   // insert at end
-		//Melder_assert ([nsString retainCount] == 2);
-		[nsString release];
-		[[list tableView] reloadData];
+		GuiCocoaList *nativeList = (GuiCocoaList *) my d_widget;
+		NSString *nativeItemText = [[NSString alloc] initWithUTF8String: Melder_peek32to8 (itemText)];
+		if (explicitlyInsertAtEnd) {
+			[[nativeList contents]   addObject: nativeItemText];
+		} else {
+			NSUInteger nativePosition_base0 = (unsigned long) position_base1 - 1;
+			[[nativeList contents]   insertObject: nativeItemText   atIndex: nativePosition_base0];
+		}
+		[nativeItemText release];
+		[[nativeList tableView] reloadData];
 	#elif win
-		if (position)
-			ListBox_InsertString (my d_widget -> window, position - 1, Melder_peek32toW (itemText));   // win lists start with item 0
-		else
-			ListBox_AddString (my d_widget -> window, Melder_peek32toW (itemText));   // insert at end
-	#elif mac
-		long n = (** my d_macListHandle). dataBounds. bottom;
-		if (position == 0)
-			position = n + 1;   // insert at end
-		Cell cell;
-		cell.h = 0; cell. v = position - 1;   // mac lists start with item 0
-		_GuiMac_clipOnParent (my d_widget);
-		LAddRow (1, position - 1, my d_macListHandle);
-		const char *itemText_utf8 = Melder_peek32to8 (itemText);   // although defProc will convert again...
-		LSetCell (itemText_utf8, (short) strlen (itemText_utf8), cell, my d_macListHandle);
-		(** my d_macListHandle). visible. bottom = n + 1;
-		_GuiMac_clipOffInvalid (my d_widget);
-		XtVaSetValues (my d_widget, XmNheight, (n + 1) * CELL_HEIGHT, NULL);
+		HWND nativeList = my d_widget -> window;
+		WCHAR *nativeItemText = Melder_peek32toW (itemText);
+		if (explicitlyInsertAtEnd) {
+			ListBox_AddString (nativeList, nativeItemText);
+		} else {
+			int nativePosition_base0 = position_base1 - 1;
+			ListBox_InsertString (nativeList, nativePosition_base0, nativeItemText);
+		}
 	#endif
 }
 
@@ -771,11 +511,11 @@ void GuiList_replaceItem (GuiList me, const char32 *itemText, long position) {
 	#if gtk
 		GtkTreeIter iter;
 		GtkTreeModel *tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget));
-		if (gtk_tree_model_iter_nth_child (tree_model, & iter, NULL, (gint) (position - 1))) {
+		if (gtk_tree_model_iter_nth_child (tree_model, & iter, nullptr, (gint) (position - 1))) {
 			gtk_list_store_set (GTK_LIST_STORE (tree_model), & iter, COLUMN_STRING, Melder_peek32to8 (itemText), -1);
 		}
 /*
-		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position);
+		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position, -1);   // -1 = terminator
 		GtkTreeIter iter;
 		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
 		gtk_tree_model_get_iter (GTK_TREE_MODEL (list_store), & iter, path);
@@ -792,15 +532,6 @@ void GuiList_replaceItem (GuiList me, const char32 *itemText, long position) {
 		long nativePosition = position - 1;   // convert from 1-based to zero-based
 		ListBox_DeleteString (my d_widget -> window, nativePosition);
 		ListBox_InsertString (my d_widget -> window, nativePosition, Melder_peek32toW (itemText));
-	#elif mac
-		_GuiMac_clipOnParent (my d_widget);
-		Cell cell;
-		cell.h = 0;
-		cell.v = position - 1;
-		const char *itemText_utf8 = Melder_peek32to8 (itemText);
-		LSetCell (itemText_utf8, strlen (itemText_utf8), cell, my d_macListHandle);
-		LDraw (cell, my d_macListHandle);
-		GuiMac_clipOff ();
 	#endif
 }
 
@@ -808,13 +539,13 @@ void GuiList_selectItem (GuiList me, long position) {
 	GuiControlBlockValueChangedCallbacks block (me);
 	#if gtk
 		GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (my d_widget));
-		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position - 1, -1);
+		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position - 1, -1 /* terminator */);
 		gtk_tree_selection_select_path (selection, path);
 		gtk_tree_path_free (path);
 
 // TODO: check of het bovenstaande werkt, dan kan dit weg
 //		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my d_widget)));
-//		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position);
+//		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) position, -1 /* terminator */);
 //		GtkTreeIter iter;
 //		gtk_tree_model_get_iter (GTK_TREE_MODEL (list_store), & iter, path);
 //		gtk_tree_selection_select_iter (selection, & iter);
@@ -829,49 +560,35 @@ void GuiList_selectItem (GuiList me, long position) {
 		} else {
 			ListBox_SetSel (my d_widget -> window, True, position - 1);
 		}
-	#elif mac
-		Cell cell; cell.h = 0;
-		_GuiMac_clipOnParent (my d_widget);
-		if (! my d_allowMultipleSelection) {
-			long n = (** my d_macListHandle). dataBounds. bottom;
-			for (long i = 0; i < n; i ++) if (i != position - 1) {
-				cell.v = i;
-				LSetSelect (false, cell, my d_macListHandle);
-			}
-		}
-		cell.v = position - 1; 
-		LSetSelect (true, cell, my d_macListHandle);
-		GuiMac_clipOff ();
 	#endif
 }
 
-void GuiList_setDoubleClickCallback (GuiList me, void (*callback) (void *boss, GuiListEvent event), void *boss) {
+void GuiList_setSelectionChangedCallback (GuiList me, GuiList_SelectionChangedCallback callback, Thing boss) {
+	my d_selectionChangedCallback = callback;
+	my d_selectionChangedBoss = boss;
+}
+
+void GuiList_setDoubleClickCallback (GuiList me, GuiList_DoubleClickCallback callback, Thing boss) {
 	my d_doubleClickCallback = callback;
 	my d_doubleClickBoss = boss;
 }
 
-void GuiList_setSelectionChangedCallback (GuiList me, void (*callback) (void *boss, GuiListEvent event), void *boss) {
-	my d_selectionChangedCallback = callback;
-	my d_selectionChangedBoss = boss;
+void GuiList_setScrollCallback (GuiList me, GuiList_ScrollCallback callback, Thing boss) {
+	my d_scrollCallback = callback;
+	my d_scrollBoss = boss;
 }
 
 void GuiList_setTopPosition (GuiList me, long topPosition) {
 	trace (U"Set top position ", topPosition);
 	#if gtk
 //		GtkListStore *list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (my md_widget)));
-		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) topPosition);
-		gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (my d_widget), path, NULL, FALSE, 0.0, 0.0);
+		GtkTreePath *path = gtk_tree_path_new_from_indices ((gint) topPosition, -1 /* terminator */);
+		gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (my d_widget), path, nullptr, false, 0.0, 0.0);
 		gtk_tree_path_free (path);
 	#elif cocoa
 	 // TODO: implement
 	#elif win
 		ListBox_SetTopIndex (my d_widget -> window, topPosition - 1);
-	#elif mac
-		//_GuiMac_clipOnParent (my d_widget);
-		//LScroll (0, topPosition - (** d_macListHandle). visible. top - 1, my d_macListHandle);   // TODO: implement
-		//GuiMac_clipOff ();
-		//my d_scrolled -> motiff.scrolledWindow.verticalBar;   // TODO: implement
-		XtVaSetValues (my d_widget, XmNy, - (topPosition - 1) * CELL_HEIGHT, NULL);
 	#endif
 }
 
diff --git a/sys/GuiMenu.cpp b/sys/GuiMenu.cpp
index f2b25ca..76cd2d5 100644
--- a/sys/GuiMenu.cpp
+++ b/sys/GuiMenu.cpp
@@ -1,30 +1,27 @@
 /* GuiMenu.cpp
  *
- * Copyright (C) 1992-2012,2013,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
+ * Copyright (C) 1992-2012,2013,2015,2016 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiMenu, GuiThing, 0);
 
-void structGuiMenu :: v_destroy () {
-	forget (our d_cascadeButton);
-	forget (our d_menuItem);
-	our GuiMenu_Parent :: v_destroy ();   // if (d_widget) { _GuiObject_setUserData (d_widget, NULL); GuiObject_destroy (d_widget); }
+void structGuiMenu :: v_destroy () noexcept {
+	our GuiMenu_Parent :: v_destroy ();   // if (d_widget) { _GuiObject_setUserData (d_widget, nullptr); GuiObject_destroy (d_widget); }
 }
 
 #if gtk
@@ -33,16 +30,16 @@ void structGuiMenu :: v_destroy () {
 		GuiMenu me = (GuiMenu) _GuiObject_getUserData (widget);
 		trace (U"destroying GuiMenu ", Melder_pointer (me));
 		if (! me) return;   // we could be destroying me
-		my d_widget = NULL;   // undangle
-		if (my d_cascadeButton) my d_cascadeButton -> d_widget = NULL;   // undangle
-		if (my d_menuItem) my d_menuItem -> d_widget = NULL;   // undangle
+		my d_widget = nullptr;   // undangle
+		if (my d_cascadeButton) my d_cascadeButton -> d_widget = nullptr;   // undangle
+		if (my d_menuItem) my d_menuItem -> d_widget = nullptr;   // undangle
 		forget (me);
 	}
 	static void _guiGtkMenuCascadeButton_destroyCallback (GuiObject widget, gpointer void_me) {
 		(void) void_me;
 		GuiMenu me = (GuiMenu) _GuiObject_getUserData (widget);
 		if (! me) return;
-		trace (U"destroying GuiButton ", Melder_pointer (my d_cascadeButton));
+		trace (U"destroying GuiButton ", Melder_pointer (my d_cascadeButton.get()));
 		gtk_widget_destroy (GTK_WIDGET (my d_widget));
 	}
 #elif cocoa
@@ -75,16 +72,23 @@ void structGuiMenu :: v_destroy () {
 			}
 			if (character == NSTabCharacter) {
 				NSWindow *cocoaKeyWindow = [NSApp keyWindow];
-				if ([cocoaKeyWindow class] == [GuiCocoaWindow class]) {
-					GuiWindow window = (GuiWindow) [(GuiCocoaWindow *) cocoaKeyWindow userData];
-					if (window -> d_tabCallback) {
-						try {
-							struct structGuiMenuItemEvent event = { NULL, 0 };
-							window -> d_tabCallback (window -> d_tabBoss, & event);
-						} catch (MelderError) {
-							Melder_flushError (U"Tab key not completely handled.");
+				if ([cocoaKeyWindow class] == [GuiCocoaShell class]) {
+					GuiShell shell = (GuiShell) [(GuiCocoaShell *) cocoaKeyWindow   getUserData];
+					if (shell -> classInfo == classGuiWindow) {
+						GuiWindow window = (GuiWindow) shell;
+						if (window -> d_tabCallback) {
+							try {
+								struct structGuiMenuItemEvent event { nullptr, false, false, false, false };
+								window -> d_tabCallback (window -> d_tabBoss, & event);
+							} catch (MelderError) {
+								Melder_flushError (U"Tab key not completely handled.");
+							}
+							return;
 						}
-						return;
+					} else {
+						/*
+							We're in a dialog. Do nothing. Send the event on.
+						*/
 					}
 				}
 			} else if (character == NSBackTabCharacter) {
@@ -96,44 +100,58 @@ void structGuiMenu :: v_destroy () {
 				 * one can get here as well by pressing Ctrl-Y (Y is the 25th letter in the alphabet).
 				 */
 				NSWindow *cocoaKeyWindow = [NSApp keyWindow];
-				if ([cocoaKeyWindow class] == [GuiCocoaWindow class]) {
-					GuiWindow window = (GuiWindow) [(GuiCocoaWindow *) cocoaKeyWindow userData];
-					if ([nsEvent modifierFlags] & NSShiftKeyMask) {
-						/*
-						 * Make sure we got here by Shift-Tab rather than Ctrl-Y.
-						 */
-						if (window -> d_shiftTabCallback) {
-							try {
-								struct structGuiMenuItemEvent event = { NULL, 0 };
-								window -> d_shiftTabCallback (window -> d_shiftTabBoss, & event);
-							} catch (MelderError) {
-								Melder_flushError (U"Tab key not completely handled.");
+				if ([cocoaKeyWindow class] == [GuiCocoaShell class]) {
+					GuiShell shell = (GuiShell) [(GuiCocoaShell *) cocoaKeyWindow   getUserData];
+					if (shell -> classInfo == classGuiWindow) {
+						GuiWindow window = (GuiWindow) shell;
+						if ([nsEvent modifierFlags] & NSShiftKeyMask) {
+							/*
+								Make sure we got here by Shift-Tab rather than Ctrl-Y.
+							*/
+							if (window -> d_shiftTabCallback) {
+								try {
+									struct structGuiMenuItemEvent event { nullptr, false, false, false, false };
+									window -> d_shiftTabCallback (window -> d_shiftTabBoss, & event);
+								} catch (MelderError) {
+									Melder_flushError (U"Tab key not completely handled.");
+								}
+								return;
 							}
-							return;
+						} else {
+							/*
+							 * We probably got in this branch by pressing Ctrl-Y.
+							 * People sometimes press that because it means "yank" (= Paste) in Emacs,
+							 * and indeed sending this key combination on, as we do here,
+							 * implements (together with Ctrl-K = "kil" = Cut)
+							 * a special cut & paste operation in text fields.
+							 */
+							// do nothing, i.e. send on
 						}
 					} else {
 						/*
-						 * We probably got in this branch by pressing Ctrl-Y.
-						 * People sometimes press that because it means "yank" (= Paste) in Emacs,
-						 * and indeed sending this key combination on, as we do here,
-						 * implements (together with Ctrl-K = "kil" = Cut)
-						 * a special cut & paste operation in text fields.
-						 */
-						// do nothing, i.e. send on
+							We're in a dialog. Do nothing. Send on.
+						*/
 					}
 				}
 			} else if (character == NSDeleteCharacter) {
 				NSWindow *cocoaKeyWindow = [NSApp keyWindow];
-				if ([cocoaKeyWindow class] == [GuiCocoaWindow class]) {
-					GuiWindow window = (GuiWindow) [(GuiCocoaWindow *) cocoaKeyWindow userData];
-					if (([nsEvent modifierFlags] & NSAlternateKeyMask) && window -> d_optionBackspaceCallback) {
-						try {
-							struct structGuiMenuItemEvent event = { NULL, 0 };
-							window -> d_optionBackspaceCallback (window -> d_optionBackspaceBoss, & event);
-						} catch (MelderError) {
-							Melder_flushError (U"Option-Backspace not completely handled.");
+				if ([cocoaKeyWindow class] == [GuiCocoaShell class]) {
+					GuiShell shell = (GuiShell) [(GuiCocoaShell *) cocoaKeyWindow   getUserData];
+					if (shell -> classInfo == classGuiWindow) {
+						GuiWindow window = (GuiWindow) shell;
+						if (([nsEvent modifierFlags] & NSAlternateKeyMask) && window -> d_optionBackspaceCallback) {
+							try {
+								struct structGuiMenuItemEvent event { nullptr, false, false, false, false };
+								window -> d_optionBackspaceCallback (window -> d_optionBackspaceBoss, & event);
+							} catch (MelderError) {
+								Melder_flushError (U"Option-Backspace not completely handled.");
+							}
+							return;
 						}
-						return;
+					} else {
+						/*
+							We're in a dialog. Do nothing. Send on.
+						*/
 					}
 				}
 			}
@@ -170,9 +188,9 @@ void structGuiMenu :: v_destroy () {
 		GuiMenu me = (GuiMenu) _GuiObject_getUserData (widget);
 		trace (U"destroying GuiMenu ", Melder_pointer (me));
 		if (! me) return;   // we could be destroying me
-		my d_widget = NULL;   // undangle
-		if (my d_cascadeButton) my d_cascadeButton -> d_widget = NULL;   // undangle
-		if (my d_menuItem) my d_menuItem -> d_widget = NULL;   // undangle
+		my d_widget = nullptr;   // undangle
+		if (my d_cascadeButton) my d_cascadeButton -> d_widget = nullptr;   // undangle
+		if (my d_menuItem) my d_menuItem -> d_widget = nullptr;   // undangle
 		forget (me);
 	}
 #endif
@@ -216,7 +234,7 @@ void GuiMenu_empty (GuiMenu me) {
 		/*
 		 * Destroy my widget, but prevent forgetting me.
 		 */
-		_GuiObject_setUserData (my d_widget, NULL);
+		_GuiObject_setUserData (my d_widget, nullptr);
 		gtk_widget_destroy (GTK_WIDGET (my d_widget));
 
 		my d_widget = gtk_menu_new ();
@@ -241,40 +259,40 @@ void GuiMenu_empty (GuiMenu me) {
 		GuiMenu d_userData;
 	}
 	- (void) dealloc {   // override
-		GuiMenu me = self -> d_userData;
+		GuiMenu me = d_userData;
 		forget (me);
 		trace (U"deleting a menu button");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
-		return self -> d_userData;
+	- (GuiThing) getUserData {
+		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiMenu));
-		self -> d_userData = static_cast <GuiMenu> (userData);
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiMenu));
+		d_userData = static_cast <GuiMenu> (userData);
 	}
 	@end
 	@implementation GuiCocoaMenu {
 		GuiMenu d_userData;
 	}
 	- (void) dealloc {   // override
-		GuiMenu me = self -> d_userData;
+		GuiMenu me = d_userData;
 		forget (me);
 		trace (U"deleting a menu");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
-		return self -> d_userData;
+	- (GuiThing) getUserData {
+		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiMenu));
-		self -> d_userData = static_cast <GuiMenu> (userData);
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiMenu));
+		d_userData = static_cast <GuiMenu> (userData);
 	}
 	@end
 #endif
 
 GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 flags) {
-	GuiMenu me = Thing_new (GuiMenu);
+	autoGuiMenu me = Thing_new (GuiMenu);
 	my d_shell = window;
 	my d_parent = window;
 	#if gtk
@@ -282,14 +300,14 @@ GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 fl
 		my d_gtkMenuTitle = (GtkMenuItem *) gtk_menu_item_new_with_label (Melder_peek32to8 (title));
 		gtk_menu_shell_append (GTK_MENU_SHELL (window -> d_gtkMenuBar), GTK_WIDGET (my d_gtkMenuTitle));
 		if (flags & GuiMenu_INSENSITIVE)
-			gtk_widget_set_sensitive (GTK_WIDGET (my d_gtkMenuTitle), FALSE);
+			gtk_widget_set_sensitive (GTK_WIDGET (my d_gtkMenuTitle), false);
 		gtk_widget_show (GTK_WIDGET (my d_gtkMenuTitle));
 		trace (U"create the menu");
 		my d_widget = gtk_menu_new ();
 		GtkAccelGroup *ag = (GtkAccelGroup *) g_object_get_data (G_OBJECT (window -> d_gtkMenuBar), "accel-group");
 		gtk_menu_set_accel_group (GTK_MENU (my d_widget), ag);
 		gtk_menu_item_set_submenu (GTK_MENU_ITEM (my d_gtkMenuTitle), GTK_WIDGET (my d_widget));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#elif cocoa
 		if (! theMenuBar) {
 			int numberOfMenus = [[[NSApp mainMenu] itemArray] count];
@@ -301,8 +319,9 @@ GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 fl
 		my d_cocoaMenu = [[GuiCocoaMenu alloc]
 			initWithTitle: (NSString *) Melder_peek32toCfstring (title)];
 		my d_widget = my d_cocoaMenu;
+		[my d_cocoaMenu   setUserData: me.get()];
 		[my d_cocoaMenu   setAutoenablesItems: NO];
-		if (window == NULL) {
+		if (! window) {
 			/*
 			 * Install the menu in the main OS X menu bar along the top of the screen.
 			 * This is done by creating a menu item for the main menu bar,
@@ -310,7 +329,7 @@ GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 fl
 			 */
             NSString *itemTitle = (NSString *) Melder_peek32toCfstring (title);
 			my d_cocoaMenuItem = [[GuiCocoaMenuItem alloc]
-				initWithTitle: itemTitle  action: NULL   keyEquivalent: @""];
+				initWithTitle: itemTitle  action: nullptr   keyEquivalent: @""];
 
 			[my d_cocoaMenuItem   setSubmenu: my d_cocoaMenu];   // the item will retain the menu...
 			[my d_cocoaMenu release];   // ... so we can release the menu already (before even returning it!)
@@ -349,7 +368,7 @@ GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 fl
 			/*
 			 * Apparently, Cocoa swallows title setting only if there is already a menu with a dummy item.
 			 */
-			GuiCocoaMenuItem *item = [[GuiCocoaMenuItem alloc] initWithTitle: @"-you should never get to see this-" action: NULL keyEquivalent: @""];
+			GuiCocoaMenuItem *item = [[GuiCocoaMenuItem alloc] initWithTitle: @"-you should never get to see this-" action: nullptr keyEquivalent: @""];
 			[my d_cocoaMenu   addItem: item];   // the menu will retain the item...
 			[item release];   // ... so we can release the item already
 			/*
@@ -367,62 +386,62 @@ GuiMenu GuiMenu_createInWindow (GuiWindow window, const char32 *title, uint32 fl
 
 		}
 	#elif motif
-		if (window == NULL) {
-			my d_xmMenuTitle = XmCreateCascadeButton (theGuiTopMenuBar, Melder_peek32to8 (title), NULL, 0);
+		if (! window) {
+			my d_xmMenuTitle = XmCreateCascadeButton (theGuiTopMenuBar, Melder_peek32to8 (title), nullptr, 0);
 			if (str32equ (title, U"Help"))
-				XtVaSetValues (theGuiTopMenuBar, XmNmenuHelpWidget, my d_xmMenuTitle, NULL);
-			my d_widget = XmCreatePulldownMenu (theGuiTopMenuBar, Melder_peek32to8 (title), NULL, 0);
+				XtVaSetValues (theGuiTopMenuBar, XmNmenuHelpWidget, my d_xmMenuTitle, nullptr);
+			my d_widget = XmCreatePulldownMenu (theGuiTopMenuBar, Melder_peek32to8 (title), nullptr, 0);
 			if (flags & GuiMenu_INSENSITIVE)
 				XtSetSensitive (my d_xmMenuTitle, False);
-			XtVaSetValues (my d_xmMenuTitle, XmNsubMenuId, my d_widget, NULL);
+			XtVaSetValues (my d_xmMenuTitle, XmNsubMenuId, my d_widget, nullptr);
 			XtManageChild (my d_xmMenuTitle);
 		} else {
-			my d_xmMenuTitle = XmCreateCascadeButton (window -> d_xmMenuBar, Melder_peek32to8 (title), NULL, 0);
+			my d_xmMenuTitle = XmCreateCascadeButton (window -> d_xmMenuBar, Melder_peek32to8 (title), nullptr, 0);
 			if (str32equ (title, U"Help"))
-				XtVaSetValues (window -> d_xmMenuBar, XmNmenuHelpWidget, my d_xmMenuTitle, NULL);
-			my d_widget = XmCreatePulldownMenu (window -> d_xmMenuBar, Melder_peek32to8 (title), NULL, 0);
+				XtVaSetValues (window -> d_xmMenuBar, XmNmenuHelpWidget, my d_xmMenuTitle, nullptr);
+			my d_widget = XmCreatePulldownMenu (window -> d_xmMenuBar, Melder_peek32to8 (title), nullptr, 0);
 			if (flags & GuiMenu_INSENSITIVE)
 				XtSetSensitive (my d_xmMenuTitle, False);
-			XtVaSetValues (my d_xmMenuTitle, XmNsubMenuId, my d_widget, NULL);
+			XtVaSetValues (my d_xmMenuTitle, XmNsubMenuId, my d_widget, nullptr);
 			XtManageChild (my d_xmMenuTitle);
 		}
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#endif
 
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me.get());
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiMenu GuiMenu_createInMenu (GuiMenu supermenu, const char32 *title, uint32 flags) {
-	GuiMenu me = Thing_new (GuiMenu);
+	autoGuiMenu me = Thing_new (GuiMenu);
 	my d_shell = supermenu -> d_shell;
 	my d_parent = supermenu;
 	my d_menuItem = Thing_new (GuiMenuItem);
 	my d_menuItem -> d_shell = my d_shell;
 	my d_menuItem -> d_parent = supermenu;
-	my d_menuItem -> d_menu = me;
+	my d_menuItem -> d_menu = me.get();
 	#if gtk
 		my d_menuItem -> d_widget = gtk_menu_item_new_with_label (Melder_peek32to8 (title));
 		my d_widget = gtk_menu_new ();
 		GtkAccelGroup *ag = (GtkAccelGroup *) gtk_menu_get_accel_group (GTK_MENU (supermenu -> d_widget));
 		gtk_menu_set_accel_group (GTK_MENU (my d_widget), ag);
 		if (flags & GuiMenu_INSENSITIVE)
-			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), FALSE);
+			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), false);
 		gtk_menu_item_set_submenu (GTK_MENU_ITEM (my d_menuItem -> d_widget), GTK_WIDGET (my d_widget));
 		gtk_menu_shell_append (GTK_MENU_SHELL (supermenu -> d_widget), GTK_WIDGET (my d_menuItem -> d_widget));
 		gtk_widget_show (GTK_WIDGET (my d_widget));
 		gtk_widget_show (GTK_WIDGET (my d_menuItem -> d_widget));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#elif cocoa
 		trace (U"creating menu item ", title);
 		NSMenuItem *item = [[NSMenuItem alloc]
 			initWithTitle: (NSString *) Melder_peek32toCfstring (title)
-			action: NULL
+			action: nullptr
 			keyEquivalent: @""];
 		trace (U"adding the item to its supermenu ", Melder_pointer (supermenu));
 		[supermenu -> d_cocoaMenu  addItem: item];   // the menu will retain the item...
@@ -431,30 +450,31 @@ GuiMenu GuiMenu_createInMenu (GuiMenu supermenu, const char32 *title, uint32 fla
 		trace (U"creating menu ", title);
 		my d_cocoaMenu = [[GuiCocoaMenu alloc]
 			initWithTitle: (NSString *) Melder_peek32toCfstring (title)];
-		[my d_cocoaMenu setAutoenablesItems: NO];
-		trace (U"adding the new menu ", Melder_pointer (me), U" to its supermenu ", Melder_pointer (supermenu));
+		[my d_cocoaMenu   setUserData: me.get()];
+		[my d_cocoaMenu   setAutoenablesItems: NO];
+		trace (U"adding the new menu ", Melder_pointer (me.get()), U" to its supermenu ", Melder_pointer (supermenu));
 		[supermenu -> d_cocoaMenu   setSubmenu: my d_cocoaMenu   forItem: item];   // the supermenu will retain the menu...
 		Melder_assert ([my d_cocoaMenu retainCount] == 2);
 		[my d_cocoaMenu release];   // ... so we can release the menu already, even before returning it
 		my d_widget = my d_cocoaMenu;
 		my d_menuItem -> d_widget = (GuiObject) item;
 	#elif motif
-		my d_menuItem -> d_widget = XmCreateCascadeButton (supermenu -> d_widget, Melder_peek32to8 (title), NULL, 0);
-		my d_widget = XmCreatePulldownMenu (supermenu -> d_widget, Melder_peek32to8 (title), NULL, 0);
+		my d_menuItem -> d_widget = XmCreateCascadeButton (supermenu -> d_widget, Melder_peek32to8 (title), nullptr, 0);
+		my d_widget = XmCreatePulldownMenu (supermenu -> d_widget, Melder_peek32to8 (title), nullptr, 0);
 		if (flags & GuiMenu_INSENSITIVE)
 			XtSetSensitive (my d_menuItem -> d_widget, False);
-		XtVaSetValues (my d_menuItem -> d_widget, XmNsubMenuId, my d_widget, NULL);
+		XtVaSetValues (my d_menuItem -> d_widget, XmNsubMenuId, my d_widget, nullptr);
 		XtManageChild (my d_menuItem -> d_widget);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#endif
 
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me.get());
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 #if gtk
@@ -481,21 +501,21 @@ static gint button_press (GtkWidget *widget, GdkEvent *event)
 	
 	if (event->type == GDK_BUTTON_PRESS) {
 		GdkEventButton *bevent = (GdkEventButton *) event;
-		gtk_menu_popup (GTK_MENU (widget), NULL, NULL, (GtkMenuPositionFunc) set_position, NULL, bevent->button, bevent->time);
-		return TRUE;
+		gtk_menu_popup (GTK_MENU (widget), nullptr, nullptr, (GtkMenuPositionFunc) set_position, nullptr, bevent->button, bevent->time);
+		return true;
 	}
-	return FALSE;
+	return false;
 }
 #endif
 
 GuiMenu GuiMenu_createInForm (GuiForm form, int left, int right, int top, int bottom, const char32 *title, uint32 flags) {
-	GuiMenu me = Thing_new (GuiMenu);
+	autoGuiMenu me = Thing_new (GuiMenu);
 	my d_shell = form -> d_shell;
 	my d_parent = form;
 	my d_cascadeButton = Thing_new (GuiButton);
 	my d_cascadeButton -> d_shell = my d_shell;
 	my d_cascadeButton -> d_parent = form;
-	my d_cascadeButton -> d_menu = me;
+	my d_cascadeButton -> d_menu = me.get();
 	#if gtk
 		my d_cascadeButton -> d_widget = gtk_button_new_with_label (Melder_peek32to8 (title));
 		my d_cascadeButton -> v_positionInForm (my d_cascadeButton -> d_widget, left, right, top, bottom, form);
@@ -503,19 +523,19 @@ GuiMenu GuiMenu_createInForm (GuiForm form, int left, int right, int top, int bo
 
 		my d_widget = gtk_menu_new ();
 		if (flags & GuiMenu_INSENSITIVE)
-			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), FALSE);
+			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), false);
 
 		g_signal_connect_object (G_OBJECT (my d_cascadeButton -> d_widget), "event",
 			GTK_SIGNAL_FUNC (button_press), G_OBJECT (my d_widget), G_CONNECT_SWAPPED);
 		g_object_set_data (G_OBJECT (my d_widget), "button", my d_cascadeButton -> d_widget);
-		gtk_menu_attach_to_widget (GTK_MENU (my d_widget), GTK_WIDGET (my d_cascadeButton -> d_widget), NULL);
+		gtk_menu_attach_to_widget (GTK_MENU (my d_widget), GTK_WIDGET (my d_cascadeButton -> d_widget), nullptr);
 		gtk_button_set_alignment (GTK_BUTTON (my d_cascadeButton -> d_widget), 0.0f, 0.5f);
-		_GuiObject_setUserData (my d_widget, me);
-		_GuiObject_setUserData (my d_cascadeButton -> d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
+		_GuiObject_setUserData (my d_cascadeButton -> d_widget, me.get());
 	#elif cocoa
 		my d_cascadeButton -> d_widget = my d_cocoaMenuButton = [[GuiCocoaMenuButton alloc] init];
 		my d_cascadeButton -> v_positionInForm (my d_cocoaMenuButton, left, right, top, bottom, form);
-		[my d_cocoaMenuButton   setUserData: me];
+		[my d_cocoaMenuButton   setUserData: me.get()];
 		[my d_cocoaMenuButton   setPullsDown: YES];
 		[my d_cocoaMenuButton   setAutoenablesItems: NO];
 		[my d_cocoaMenuButton   setBezelStyle: NSShadowlessSquareBezelStyle];
@@ -528,7 +548,7 @@ GuiMenu GuiMenu_createInForm (GuiForm form, int left, int right, int top, int bo
 		/*
 		 * Apparently, Cocoa swallows title setting only if there is already a menu with a dummy item.
 		 */
-		NSMenuItem *item = [[NSMenuItem alloc] initWithTitle: @"-you should never get to see this-" action: NULL keyEquivalent: @""];
+		NSMenuItem *item = [[NSMenuItem alloc] initWithTitle: @"-you should never get to see this-" action: nullptr keyEquivalent: @""];
 		[my d_cocoaMenu   addItem: item];   // the menu will retain the item...
 		[item release];   // ... so we can release the item already
 		/*
@@ -540,25 +560,25 @@ GuiMenu GuiMenu_createInForm (GuiForm form, int left, int right, int top, int bo
 	#elif motif
 		my d_xmMenuBar = XmCreateMenuBar (form -> d_widget, "dynamicSubmenuBar", 0, 0);
 		form -> v_positionInForm (my d_xmMenuBar, left, right, top, bottom, form);
-		my d_cascadeButton -> d_widget = XmCreateCascadeButton (my d_xmMenuBar, Melder_peek32to8 (title), NULL, 0);
+		my d_cascadeButton -> d_widget = XmCreateCascadeButton (my d_xmMenuBar, Melder_peek32to8 (title), nullptr, 0);
 		form -> v_positionInForm (my d_cascadeButton -> d_widget, 0, right - left - 4, 0, bottom - top, form);
-		my d_widget = XmCreatePulldownMenu (my d_xmMenuBar, Melder_peek32to8 (title), NULL, 0);
+		my d_widget = XmCreatePulldownMenu (my d_xmMenuBar, Melder_peek32to8 (title), nullptr, 0);
 		if (flags & GuiMenu_INSENSITIVE)
 			XtSetSensitive (my d_cascadeButton -> d_widget, False);
-		XtVaSetValues (my d_cascadeButton -> d_widget, XmNsubMenuId, my d_widget, NULL);
+		XtVaSetValues (my d_cascadeButton -> d_widget, XmNsubMenuId, my d_widget, nullptr);
 		XtManageChild (my d_cascadeButton -> d_widget);
 		XtManageChild (my d_xmMenuBar);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#endif
 
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me);
-		g_signal_connect (G_OBJECT (my d_cascadeButton -> d_widget), "destroy", G_CALLBACK (_guiGtkMenuCascadeButton_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenu_destroyCallback), me.get());
+		g_signal_connect (G_OBJECT (my d_cascadeButton -> d_widget), "destroy", G_CALLBACK (_guiGtkMenuCascadeButton_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenu_destroyCallback, me.get());
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 };
 
 /* End of file GuiMenu.cpp */
diff --git a/sys/GuiMenuItem.cpp b/sys/GuiMenuItem.cpp
index eca8de2..d99d87d 100644
--- a/sys/GuiMenuItem.cpp
+++ b/sys/GuiMenuItem.cpp
@@ -1,20 +1,19 @@
 /* GuiMenuItem.cpp
  *
- * Copyright (C) 1992-2012,2013,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2012,2013,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -28,12 +27,10 @@
 
 Thing_implement (GuiMenuItem, GuiThing, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if gtk
 	#define iam_menuitem  GuiMenuItem me = (GuiMenuItem) _GuiObject_getUserData (widget)
 #elif cocoa
-	#define iam_menuitem  GuiMenuItem me = (GuiMenuItem) [(GuiCocoaMenuItem *) widget userData];
+	#define iam_menuitem  GuiMenuItem me = (GuiMenuItem) [(GuiCocoaMenuItem *) widget getUserData];
 #elif motif
 	#define iam_menuitem  GuiMenuItem me = (GuiMenuItem) widget -> userData
 #endif
@@ -41,57 +38,34 @@ Thing_implement (GuiMenuItem, GuiThing, 0);
 #if motif
 static void NativeMenuItem_setText (GuiObject me) {
 	int acc = my motiff.pushButton.acceleratorChar, modifiers = my motiff.pushButton.acceleratorModifiers;
-	#if win
-		static MelderString title { 0 };
-		if (acc == 0) {
-			MelderString_copy (& title, _GuiWin_expandAmpersands (my name));
-		} else {
-			static const char32 *keyStrings [256] = {
-				0, U"<-", U"->", U"Up", U"Down", U"PAUSE", U"Del", U"Ins", U"Backspace", U"Tab", U"LineFeed", U"Home", U"End", U"Enter", U"PageUp", U"PageDown",
-				U"Esc", U"F1", U"F2", U"F3", U"F4", U"F5", U"F6", U"F7", U"F8", U"F9", U"F10", U"F11", U"F12", 0, 0, 0,
-				U"Space", U"!", U"\"", U"#", U"$", U"%", U"&", U"\'", U"(", U")", U"*", U"+", U",", U"-", U".", U"/",
-				U"0", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8", U"9", U":", U";", U"<", U"=", U">", U"?",
-				U"@", U"A", U"B", U"C", U"D", U"E", U"F", U"G", U"H", U"I", U"J", U"K", U"L", U"M", U"N", U"O",
-				U"P", U"Q", U"R", U"S", U"T", U"U", U"V", U"W", U"X", U"Y", U"Z", U"[", U"\\", U"]", U"^", U"_",
-				U"`", U"a", U"b", U"c", U"d", U"e", U"f", U"g", U"h", U"i", U"j", U"k", U"l", U"m", U"n", U"o",
-				U"p", U"q", U"r", U"s", U"t", U"u", U"v", U"w", U"x", U"y", U"z", U"{", U"|", U"}", U"~", U"Del",
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"[", U"]", U",", U"?", U".", U"\\",
-				U";", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"-", U"`", U"=", U"\'", 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-			const char32 *keyString = keyStrings [acc] ? keyStrings [acc] : U"???";
-			MelderString_copy (& title, _GuiWin_expandAmpersands (my name), U"\t",
-				modifiers & _motif_COMMAND_MASK ? U"Ctrl-" : NULL,
-				modifiers & _motif_OPTION_MASK ? U"Alt-" : NULL,
-				modifiers & _motif_SHIFT_MASK ? U"Shift-" : NULL, keyString);
-		}
-		ModifyMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | MF_STRING, my nat.entry.id, Melder_peek32toW (title.string));
-	#elif mac
-		static int theGlyphs [1+31] = { 0,
-			kMenuLeftArrowDashedGlyph, kMenuRightArrowDashedGlyph, kMenuUpArrowDashedGlyph, kMenuDownwardArrowDashedGlyph, 0,
-			kMenuDeleteRightGlyph, 0, kMenuDeleteLeftGlyph, kMenuTabRightGlyph, 0,
-			0, 0, kMenuReturnGlyph, kMenuPageUpGlyph, kMenuPageDownGlyph,
-			kMenuEscapeGlyph, kMenuF1Glyph, kMenuF2Glyph, kMenuF3Glyph, kMenuF4Glyph,
-			kMenuF5Glyph, kMenuF6Glyph, kMenuF7Glyph, kMenuF8Glyph, kMenuF9Glyph,
-			kMenuF10Glyph, kMenuF11Glyph, kMenuF12Glyph, 0, 0,
-			0 };
-		SetMenuItemTextWithCFString (my nat.entry.handle, my nat.entry.item, (CFStringRef) Melder_peek32toCfstring (my name));
-		if (acc > 32) {
-			SetItemCmd (my nat.entry.handle, my nat.entry.item, acc);
-		} else {
-			Melder_assert (acc > 0 && acc < 32);
-			SetItemCmd (my nat.entry.handle, my nat.entry.item, ' ');   /* Funny that this should be needed. */
-			SetMenuItemKeyGlyph (my nat.entry.handle, my nat.entry.item, theGlyphs [acc]);
-		}
-		SetMenuItemModifiers (my nat.entry.handle, my nat.entry.item,
-			( modifiers & _motif_OPTION_MASK ? kMenuOptionModifier : 0 ) +
-			( modifiers & _motif_SHIFT_MASK ? kMenuShiftModifier : 0 ) +
-			( modifiers & _motif_COMMAND_MASK ? 0 : kMenuNoCommandModifier ));
-	#endif
+	static MelderString title { 0 };
+	if (acc == 0) {
+		MelderString_copy (& title, _GuiWin_expandAmpersands (my name));
+	} else {
+		static const char32 *keyStrings [256] = {
+			0, U"<-", U"->", U"Up", U"Down", U"PAUSE", U"Del", U"Ins", U"Backspace", U"Tab", U"LineFeed", U"Home", U"End", U"Enter", U"PageUp", U"PageDown",
+			U"Esc", U"F1", U"F2", U"F3", U"F4", U"F5", U"F6", U"F7", U"F8", U"F9", U"F10", U"F11", U"F12", 0, 0, 0,
+			U"Space", U"!", U"\"", U"#", U"$", U"%", U"&", U"\'", U"(", U")", U"*", U"+", U",", U"-", U".", U"/",
+			U"0", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8", U"9", U":", U";", U"<", U"=", U">", U"?",
+			U"@", U"A", U"B", U"C", U"D", U"E", U"F", U"G", U"H", U"I", U"J", U"K", U"L", U"M", U"N", U"O",
+			U"P", U"Q", U"R", U"S", U"T", U"U", U"V", U"W", U"X", U"Y", U"Z", U"[", U"\\", U"]", U"^", U"_",
+			U"`", U"a", U"b", U"c", U"d", U"e", U"f", U"g", U"h", U"i", U"j", U"k", U"l", U"m", U"n", U"o",
+			U"p", U"q", U"r", U"s", U"t", U"u", U"v", U"w", U"x", U"y", U"z", U"{", U"|", U"}", U"~", U"Del",
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"[", U"]", U",", U"?", U".", U"\\",
+			U";", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"-", U"`", U"=", U"\'", 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+		const char32 *keyString = keyStrings [acc] ? keyStrings [acc] : U"???";
+		MelderString_copy (& title, _GuiWin_expandAmpersands (my name), U"\t",
+			modifiers & _motif_COMMAND_MASK ? U"Ctrl-" : nullptr,
+			modifiers & _motif_OPTION_MASK ? U"Alt-" : nullptr,
+			modifiers & _motif_SHIFT_MASK ? U"Shift-" : nullptr, keyString);
+	}
+	ModifyMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | MF_STRING, my nat.entry.id, Melder_peek32toW (title.string));
 }
 #endif
 
@@ -106,10 +80,10 @@ static void NativeMenuItem_setText (GuiObject me) {
 		iam (GuiMenuItem);
 		if (my d_callbackBlocked) return;
 		if (G_OBJECT_TYPE (widget) == GTK_TYPE_RADIO_MENU_ITEM && ! gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) return;
-		struct structGuiMenuItemEvent event = { me, 0 };
-		if (my d_commandCallback) {
+		struct structGuiMenuItemEvent event { me, false, false, false, false };
+		if (my d_callback) {
 			try {
-				my d_commandCallback (my d_boss, & event);
+				my d_callback (my d_boss, & event);
 			} catch (MelderError) {
 				Melder_flushError (U"Your choice of menu item \"", Melder_peek8to32 (GTK_WIDGET (widget) -> name), U"\" was not completely handled.");
 			}
@@ -120,25 +94,25 @@ static void NativeMenuItem_setText (GuiObject me) {
 		GuiMenuItem d_userData;
 	}
 	- (void) dealloc {   // override
-		GuiMenuItem me = self -> d_userData;
+		GuiMenuItem me = d_userData;
 		forget (me);
 		trace (U"deleting a menu item");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
-		return self -> d_userData;
+	- (GuiThing) getUserData {
+		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiMenuItem));
-		self -> d_userData = static_cast <GuiMenuItem> (userData);
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiMenuItem));
+		d_userData = static_cast <GuiMenuItem> (userData);
 	}
 	- (void) _guiCocoaMenuItem_activateCallback: (id) widget {
 		Melder_assert (self == widget);   // sender (widget) and receiver (self) happen to be the same object
-		GuiMenuItem me = self -> d_userData;
-		if (my d_commandCallback != NULL) {
-			struct structGuiMenuItemEvent event = { me, 0 };
+		GuiMenuItem me = d_userData;
+		if (my d_callback) {
+			struct structGuiMenuItemEvent event { me, false, false, false, false };
 			try {
-				my d_commandCallback (my d_boss, & event);
+				my d_callback (my d_boss, & event);
 			} catch (MelderError) {
 				Melder_flushError (U"Your choice of menu item \"", U"xx", U"\" was not completely handled.");
 			}
@@ -153,10 +127,10 @@ static void NativeMenuItem_setText (GuiObject me) {
 	}
 	static void _guiMotifMenuItem_activateCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		iam (GuiMenuItem);
-		if (my d_commandCallback != NULL) {
-			struct structGuiMenuItemEvent event = { me, 0 };
+		if (my d_callback) {
+			struct structGuiMenuItemEvent event { me, false, false, false, false };
 			try {
-				my d_commandCallback (my d_boss, & event);
+				my d_callback (my d_boss, & event);
 			} catch (MelderError) {
 				Melder_flushError (U"Your choice of menu item \"", widget -> name, U"\" was not completely handled.");
 			}
@@ -165,9 +139,9 @@ static void NativeMenuItem_setText (GuiObject me) {
 #endif
 
 GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
-	void (*commandCallback) (void *boss, GuiMenuItemEvent event), void *boss)
+	GuiMenuItemCallback commandCallback, Thing boss)
 {
-	GuiMenuItem me = Thing_new (GuiMenuItem);
+	autoGuiMenuItem me = Thing_new (GuiMenuItem);
 	my d_shell = menu -> d_shell;
 	my d_parent = menu;
 	my d_menu = menu;
@@ -175,11 +149,11 @@ GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
 	trace (U"creating item \"", title, U"\" in menu ", Melder_pointer (menu));
 	bool toggle = flags & (GuiMenu_CHECKBUTTON | GuiMenu_RADIO_FIRST | GuiMenu_RADIO_NEXT | GuiMenu_TOGGLE_ON) ? true : false;
 	uint32 accelerator = flags & 127;
-	Melder_assert (title != NULL);
+	Melder_assert (title);
 	#if gtk
-		static GSList *group = NULL;
+		static GSList *group = nullptr;
 		if (toggle) {
-			if (flags & (GuiMenu_RADIO_FIRST)) group = NULL;
+			if (flags & (GuiMenu_RADIO_FIRST)) group = nullptr;
 			if (flags & (GuiMenu_RADIO_FIRST | GuiMenu_RADIO_NEXT)) {
 				my d_widget = gtk_radio_menu_item_new_with_label (group, Melder_peek32to8 (title));
 				group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (my d_widget));
@@ -192,13 +166,13 @@ GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
 		}
 		Melder_assert (menu -> d_widget);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu -> d_widget), GTK_WIDGET (my d_widget));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#elif cocoa
 		(void) toggle;   // no difference between toggling and normal menu items on Cocoa
 		NSString *string = (NSString *) Melder_peek32toCfstring (title);
 		GuiCocoaMenuItem *menuItem = [[GuiCocoaMenuItem alloc]
 			initWithTitle:string
-			action: NULL
+			action: nullptr
 			keyEquivalent: @""];
 		//Melder_assert ([string retainCount] == 2 || [string retainCount] == -1);   // the menu item retains the string (assertion can fail on 10.6)
 		trace (U"string retain count = ", [string retainCount]);
@@ -217,22 +191,22 @@ GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
 		trace (U"release the item");
 		[menuItem release];   // ... so we can release the item already
 		trace (U"set user data");
-		[menuItem setUserData: me];
+		[menuItem setUserData: me.get()];
 	#elif motif
 		my d_widget = XtVaCreateManagedWidget (Melder_peek32to8 (title),
-			toggle ? xmToggleButtonGadgetClass : xmPushButtonGadgetClass, menu -> d_widget, NULL);
-		_GuiObject_setUserData (my d_widget, me);
+			toggle ? xmToggleButtonGadgetClass : xmPushButtonGadgetClass, menu -> d_widget, nullptr);
+		_GuiObject_setUserData (my d_widget, me.get());
 	#endif
-	Melder_assert (my d_widget != NULL);
+	Melder_assert (my d_widget);
 
 	trace (U"set sensitivity");
 	if (flags & GuiMenu_INSENSITIVE)
-		GuiThing_setSensitive (me, false);
+		GuiThing_setSensitive (me.get(), false);
 
 	trace (U"understand toggle menu items");
 	if (flags & GuiMenu_TOGGLE_ON)
 		#if gtk
-			gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (my d_widget), TRUE);
+			gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (my d_widget), true);
 		#elif cocoa
 			[menuItem setState: NSOnState];
 		#elif motif
@@ -331,35 +305,29 @@ GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
 		#endif
 		trace (U"added accelerator ", accelerator);
 	}
-	#if mac && useCarbon
-		if (flags & GuiMenu_ATTRACTIVE) {
-			trace (U"attractive!");
-			SetItemStyle (my d_widget -> nat.entry.handle, my d_widget -> nat.entry.item, bold);
-		}
-	#endif
 
 	trace (U"install the command callback");
-	my d_commandCallback = commandCallback;
+	my d_callback = commandCallback;
 	my d_boss = boss;
 	#if gtk
-		if (commandCallback != NULL) {
+		if (commandCallback) {
 			if (flags == GuiMenu_TAB) {
 				GtkWidget *shell = gtk_widget_get_toplevel (gtk_menu_get_attach_widget (GTK_MENU (menu -> d_widget)));
 				trace (U"tab set in GTK window ", Melder_pointer (shell));
 				g_object_set_data (G_OBJECT (shell), "tabCallback", (gpointer) _guiGtkMenuItem_activateCallback);
-				g_object_set_data (G_OBJECT (shell), "tabClosure", (gpointer) me);
+				g_object_set_data (G_OBJECT (shell), "tabClosure", (gpointer) me.get());
 			} else if (flags == (GuiMenu_TAB | GuiMenu_SHIFT)) {
 				GtkWidget *shell = gtk_widget_get_toplevel (gtk_menu_get_attach_widget (GTK_MENU (menu -> d_widget)));
 				trace (U"shift-tab set in GTK window ", Melder_pointer (shell));
 				g_object_set_data (G_OBJECT (shell), "shiftTabCallback", (gpointer) _guiGtkMenuItem_activateCallback);
-				g_object_set_data (G_OBJECT (shell), "shiftTabClosure", (gpointer) me);
+				g_object_set_data (G_OBJECT (shell), "shiftTabClosure", (gpointer) me.get());
 			} else {
 				g_signal_connect (G_OBJECT (my d_widget),
 					toggle ? "toggled" : "activate",
-					G_CALLBACK (_guiGtkMenuItem_activateCallback), (gpointer) me);
+					G_CALLBACK (_guiGtkMenuItem_activateCallback), (gpointer) me.get());
 			}
 		} else {
-			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), FALSE);
+			gtk_widget_set_sensitive (GTK_WIDGET (my d_widget), false);
 		}
 		gtk_widget_show (GTK_WIDGET (my d_widget));
 	#elif cocoa
@@ -368,22 +336,22 @@ GuiMenuItem GuiMenu_addItem (GuiMenu menu, const char32 *title, uint32 flags,
 	#elif motif
 		XtAddCallback (my d_widget,
 			toggle ? XmNvalueChangedCallback : XmNactivateCallback,
-			_guiMotifMenuItem_activateCallback, (XtPointer) me);
+			_guiMotifMenuItem_activateCallback, (XtPointer) me.get());
 	#endif
 
 	trace (U"make sure that I will be destroyed when my widget is destroyed");
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenuItem_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenuItem_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenuItem_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenuItem_destroyCallback, me.get());
 	#endif
 
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiMenuItem GuiMenu_addSeparator (GuiMenu menu) {
-	GuiMenuItem me = Thing_new (GuiMenuItem);
+	autoGuiMenuItem me = Thing_new (GuiMenuItem);
 	my d_shell = menu -> d_shell;
 	my d_parent = menu;
 	my d_menu = menu;
@@ -408,23 +376,23 @@ GuiMenuItem GuiMenu_addSeparator (GuiMenu menu) {
 		trace (U"release the item");
 		//[(NSMenuItem *) my d_widget release];   // ... so we can release the item already
 		trace (U"set user data");
-		[(GuiCocoaMenuItem *) my d_widget setUserData: me];
+		[(GuiCocoaMenuItem *) my d_widget   setUserData: me.get()];
 	#elif motif
-		my d_widget = XtVaCreateManagedWidget ("menuSeparator", xmSeparatorGadgetClass, menu -> d_widget, NULL);
+		my d_widget = XtVaCreateManagedWidget ("menuSeparator", xmSeparatorGadgetClass, menu -> d_widget, nullptr);
 	#endif
 
 	trace (U"make sure that I will be destroyed when my widget is destroyed");
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenuItem_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkMenuItem_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenuItem_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifMenuItem_destroyCallback, me.get());
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 void GuiMenuItem_check (GuiMenuItem me, bool check) {
-	Melder_assert (my d_widget != NULL);
+	Melder_assert (my d_widget);
 	#if gtk
 		my d_callbackBlocked = true;
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (my d_widget), check);
diff --git a/sys/GuiObject.cpp b/sys/GuiObject.cpp
index 34f7e18..fcfd0c0 100644
--- a/sys/GuiObject.cpp
+++ b/sys/GuiObject.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012,2013 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -22,19 +21,19 @@
 
 #if cocoa
 	@interface GuiCocoaView : NSView
-		- (GuiThing) userData;
+		- (GuiThing) getUserData;
 		- (void) setUserData: (GuiThing) userData;
 	@end
 #endif
 
 void * _GuiObject_getUserData (GuiObject widget) {
-	void *userData = NULL;
+	void *userData = nullptr;
 	#if gtk
 		userData = (void *) g_object_get_data (G_OBJECT (widget), "praat");
 	#elif cocoa
-		userData = [(GuiCocoaView *) widget   userData];
+		userData = [(GuiCocoaView *) widget   getUserData];
 	#elif motif
-		XtVaGetValues (widget, XmNuserData, & userData, NULL);
+		XtVaGetValues (widget, XmNuserData, & userData, nullptr);
 	#endif
 	return userData;
 }
@@ -45,7 +44,7 @@ void _GuiObject_setUserData (GuiObject widget, void *userData) {
 	#elif cocoa
 		[(GuiCocoaView *) widget   setUserData: (GuiThing) userData];
 	#elif motif
-		XtVaSetValues (widget, XmNuserData, userData, NULL);
+		XtVaSetValues (widget, XmNuserData, userData, nullptr);
 	#endif
 }
 
diff --git a/sys/GuiOptionMenu.cpp b/sys/GuiOptionMenu.cpp
index 895d6e3..cc7db94 100644
--- a/sys/GuiOptionMenu.cpp
+++ b/sys/GuiOptionMenu.cpp
@@ -1,41 +1,28 @@
 /* GuiOptionMenu.cpp
  *
- * Copyright (C) 1993-2012,2013,2014,2015 Paul Boersma, 2007 Stefan de Konink, 2013 Tom Naughton
+ * Copyright (C) 1993-2012,2013,2014,2015,2016 Paul Boersma, 2007 Stefan de Konink, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiOptionMenu, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if gtk
-	#define iam_optionmenu  GuiOptionMenu me = (GuiOptionMenu) _GuiObject_getUserData (widget)
-#elif cocoa
-	#define iam_optionmenu  GuiOptionMenu me = (GuiOptionMenu) [(GuiCocoaLabel *) widget userData];
-#elif motif
-	#define iam_optionmenu  GuiOptionMenu me = (GuiOptionMenu) widget -> userData
-#endif
-
-#if gtk
-	static void _guiGtkOptionMenu_destroyCallback (GuiObject widget, gpointer void_me) {
-		(void) widget;
+	static void _guiGtkOptionMenu_destroyCallback (GuiObject /* widget */, gpointer void_me) {
 		iam (GuiOptionMenu);
-		forget (my d_options);
 		forget (me);
 	}
 #elif cocoa
@@ -47,23 +34,20 @@ Thing_implement (GuiOptionMenu, GuiControl, 0);
         [self removeAllItems];
         [self setMenu:nil];
         
-        forget (my d_options);
-		forget (me);   
+		forget (me);
 		trace (U"deleting an option menu");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		d_userData = (GuiOptionMenu)userData;
+		d_userData = (GuiOptionMenu) userData;
 	}
 	@end
 #elif motif
-	static void _guiMotifOptionMenu_destroyCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
-		(void) widget; (void) call;
+	static void _guiMotifOptionMenu_destroyCallback (GuiObject /* widget */, XtPointer void_me, XtPointer /* call */) {
 		iam (GuiOptionMenu);
-		forget (my d_options);
 		forget (me);
 	}
 #endif
@@ -82,7 +66,6 @@ void GuiOptionMenu_init (GuiOptionMenu me, GuiForm parent, int left, int right,
 {
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
-	my d_options = Ordered_create ();
 	#if gtk
 		my d_widget = gtk_combo_box_new_text ();
 		gtk_widget_set_size_request (GTK_WIDGET (my d_widget), right - left, bottom - top + 8);
@@ -102,20 +85,20 @@ void GuiOptionMenu_init (GuiOptionMenu me, GuiForm parent, int left, int right,
 
 
 	#elif motif
-		my d_xmMenuBar = XmCreateMenuBar (parent -> d_widget, "UiOptionMenu", NULL, 0);
+		my d_xmMenuBar = XmCreateMenuBar (parent -> d_widget, "UiOptionMenu", nullptr, 0);
 		XtVaSetValues (my d_xmMenuBar, XmNx, left - 4, XmNy, top - 4
 			#if mac
 				- 1
 			#endif
-			, XmNwidth, right - left + 8, XmNheight, bottom - top + 8, NULL);
-		my d_xmCascadeButton = XmCreateCascadeButton (my d_xmMenuBar, "choice", NULL, 0);
-		my d_widget = XmCreatePulldownMenu (my d_xmMenuBar, "choice", NULL, 0);
+			, XmNwidth, right - left + 8, XmNheight, bottom - top + 8, nullptr);
+		my d_xmCascadeButton = XmCreateCascadeButton (my d_xmMenuBar, "choice", nullptr, 0);
+		my d_widget = XmCreatePulldownMenu (my d_xmMenuBar, "choice", nullptr, 0);
 		if (flags & GuiMenu_INSENSITIVE)
 			XtSetSensitive (my d_widget, False);
-		XtVaSetValues (my d_xmCascadeButton, XmNsubMenuId, my d_widget, NULL);
+		XtVaSetValues (my d_xmCascadeButton, XmNsubMenuId, my d_widget, nullptr);
 		XtManageChild (my d_xmCascadeButton);
-		XtVaSetValues (my d_xmMenuBar, XmNwidth, right - left + 8, NULL);   // BUG: twice?
-		XtVaSetValues (my d_xmCascadeButton, XmNx, 4, XmNy, 4, XmNwidth, right - left, XmNheight, bottom - top, NULL);
+		XtVaSetValues (my d_xmMenuBar, XmNwidth, right - left + 8, nullptr);   // BUG: twice?
+		XtVaSetValues (my d_xmCascadeButton, XmNx, 4, XmNy, 4, XmNwidth, right - left, XmNheight, bottom - top, nullptr);
 	#endif
 
 	#if gtk
@@ -128,8 +111,8 @@ void GuiOptionMenu_init (GuiOptionMenu me, GuiForm parent, int left, int right,
 
 GuiOptionMenu GuiOptionMenu_create (GuiForm parent, int left, int right, int top, int bottom, uint32 flags) {
 	autoGuiOptionMenu me = Thing_new (GuiOptionMenu);
-	GuiOptionMenu_init (me.peek(), parent, left, right, top, bottom, flags);
-	return me.transfer();
+	GuiOptionMenu_init (me.get(), parent, left, right, top, bottom, flags);
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiOptionMenu GuiOptionMenu_createShown (GuiForm parent, int left, int right, int top, int bottom, uint32 flags) {
@@ -142,16 +125,16 @@ GuiOptionMenu GuiOptionMenu_createShown (GuiForm parent, int left, int right, in
 static void cb_optionChanged (GuiObject w, XtPointer void_me, XtPointer call) {
 	iam (GuiOptionMenu);
 	(void) call;
-	for (int i = 1; i <= my d_options -> size; i ++) {
-		GuiMenuItem item = static_cast <GuiMenuItem> (my d_options -> item [i]);
+	for (int i = 1; i <= my d_options.size; i ++) {
+		GuiMenuItem item = my d_options.at [i];
 		if (item -> d_widget == w) {
-			XtVaSetValues (my d_xmCascadeButton, XmNlabelString, Melder_peek32to8 (item -> d_widget -> name), NULL);
-			XmToggleButtonSetState (item -> d_widget, TRUE, FALSE);
+			XtVaSetValues (my d_xmCascadeButton, XmNlabelString, Melder_peek32to8 (item -> d_widget -> name), nullptr);
+			XmToggleButtonSetState (item -> d_widget, true, false);
 			if (Melder_debug == 11) {
 				Melder_warning (i, U" \"", item -> d_widget -> name, U"\"");
 			}
 		} else {
-			XmToggleButtonSetState (item -> d_widget, FALSE, FALSE);
+			XmToggleButtonSetState (item -> d_widget, false, false);
 		}
 	}
 }
@@ -161,10 +144,10 @@ void GuiOptionMenu_addOption (GuiOptionMenu me, const char32 *text) {
 	#if gtk
 		gtk_combo_box_append_text (GTK_COMBO_BOX (my d_widget), Melder_peek32to8 (text));
 	#elif motif
-		GuiMenuItem menuItem = Thing_new (GuiMenuItem);
-		menuItem -> d_widget = XtVaCreateManagedWidget (Melder_peek32to8 (text), xmToggleButtonWidgetClass, my d_widget, NULL);
+		autoGuiMenuItem menuItem = Thing_new (GuiMenuItem);
+		menuItem -> d_widget = XtVaCreateManagedWidget (Melder_peek32to8 (text), xmToggleButtonWidgetClass, my d_widget, nullptr);
 		XtAddCallback (menuItem -> d_widget, XmNvalueChangedCallback, cb_optionChanged, (XtPointer) me);
-		Collection_addItem (my d_options, menuItem);
+		my d_options. addItem_move (menuItem.move());
     #elif cocoa
         GuiCocoaOptionMenu *menu = (GuiCocoaOptionMenu *) my d_widget;
         [menu addItemWithTitle: [NSString stringWithUTF8String: Melder_peek32to8 (text)]];
@@ -177,8 +160,8 @@ int GuiOptionMenu_getValue (GuiOptionMenu me) {
 		// TODO: Graag even een check :)
 		my d_value = gtk_combo_box_get_active (GTK_COMBO_BOX (my d_widget)) + 1;
 	#elif motif
-		for (int i = 1; i <= my d_options -> size; i ++) {
-			GuiMenuItem menuItem = static_cast <GuiMenuItem> (my d_options -> item [i]);
+		for (int i = 1; i <= my d_options.size; i ++) {
+			GuiMenuItem menuItem = my d_options.at [i];
 			if (XmToggleButtonGetState (menuItem -> d_widget))
 				my d_value = i;
 		}
@@ -196,11 +179,11 @@ void GuiOptionMenu_setValue (GuiOptionMenu me, int value) {
         GuiCocoaOptionMenu *menu = (GuiCocoaOptionMenu *) my d_widget;
         [menu   selectItemAtIndex: value - 1];
 	#elif motif
-		for (int i = 1; i <= my d_options -> size; i ++) {
-			GuiMenuItem menuItem = static_cast <GuiMenuItem> (my d_options -> item [i]);
+		for (int i = 1; i <= my d_options.size; i ++) {
+			GuiMenuItem menuItem = my d_options.at [i];
 			XmToggleButtonSetState (menuItem -> d_widget, i == value, False);
 			if (i == value) {
-				XtVaSetValues (my d_xmCascadeButton, XmNlabelString, Melder_peek32to8 (menuItem -> d_widget -> name), NULL);
+				XtVaSetValues (my d_xmCascadeButton, XmNlabelString, Melder_peek32to8 (menuItem -> d_widget -> name), nullptr);
 			}
 		}
 	#endif
diff --git a/sys/GuiP.h b/sys/GuiP.h
index ba12331..bb8f920 100644
--- a/sys/GuiP.h
+++ b/sys/GuiP.h
@@ -2,21 +2,20 @@
 #define _GuiP_h_
 /* GuiP.h
  *
- * Copyright (C) 1993-2011,2012,2013,2015 Paul Boersma
+ * Copyright (C) 1993-2011,2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Gui.h"
@@ -59,258 +58,154 @@ class GuiControlBlockValueChangedCallbacks {
 #if gtk
 	void GuiGtk_initialize ();
 #elif motif
-	#if win
-		#include <windows.h>
-		#include <commctrl.h>
-	#endif
-
-	#if win || mac
-
-		#define MEMBER(widget,klas)  ((widget -> widgetClass & xm##klas##WidgetClass) != 0)
-		#define MEMBER2(widget,klas1,klas2)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass)) != 0)
-		#define MEMBER3(widget,klas1,klas2,klas3)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass)) != 0)
-		#define MEMBER4(widget,klas1,klas2,klas3,klas4)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass | xm##klas4##WidgetClass)) != 0)
-		#define MEMBER5(widget,klas1,klas2,klas3,klas4,klas5)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass | xm##klas4##WidgetClass | xm##klas5##WidgetClass)) != 0)
-
-		#define MAXNUM_CALLBACKS  3   /* E.g., maximum number of activate callbacks for a PushButton. */
-
-		typedef struct {
-			struct { XtCallbackProc proc; XtPointer closure; } pairs [MAXNUM_CALLBACKS];
-		} XtCallbackList;
-
-		class structGuiObject {
-		public:
-			long magicNumber;
-			unsigned long widgetClass;
-			GuiObject parent, previousSibling, nextSibling, firstChild;
-			char32 *name;
-			bool inMenu, nativized, managed, insensitive;
-			GuiObject textFocus;   /* For shells. */
-			GuiObject shell;   /* My shell ancestor. */
-
-			/* Native. */
-
-			#if win
-				HWND window;
-				union {
-					/* XtShell: */
-					struct { GuiObject menuBar; int uniqueItemID, duringMoveWindow; } shell;
-
-					/* XmPushButton (if in menu), XmToggleButton (if in menu), XmCascadeButton (if in menu): */
-					struct { HMENU handle; ULONG_PTR id; } entry;
-
-					/* XmMenuBar, XmPulldownMenu: */
-					struct { HMENU handle; ULONG_PTR id; } menu;
-				} nat;
-			#elif mac
-				Rect rect;   /* Window coordinates. */
-				WindowPtr macWindow;
-				bool isControl;
-				struct {
-					/* XtShell: */
-					struct { WindowPtr ptr; ControlRef rootControl; } window;
-
-					/* XmPushButton (if not in menu), XmToggleButton (if not in menu), XmScrollBar, XmLabel (sometimes), XmCascadeButton (if not in menu or bar): */
-					struct { ControlHandle handle; bool isBevel, isPopup; } control;
-
-					/* XmPushButton (if in menu), XmToggleButton (if in menu), XmCascadeButton (if in menu): */
-					struct { MenuHandle handle; int item; } entry;
-
-					/* XmPulldownMenu: */
-					struct { MenuHandle handle; int item /* if cascading */; int id; } menu;
-				} nat;
-			#endif
-
-			/* Motif */
-
-			union {
-				struct { GuiObject horizontalBar, verticalBar, clipWindow, workWindow; } scrolledWindow;
-				struct { XtCallbackList moveCallbacks; } drawingArea;
-				struct { bool active, isDialog, canFullScreen;
-					unsigned long lowAccelerators [8]; XtCallbackProc goAwayCallback; XtPointer goAwayClosure; } shell;
-				struct { unsigned char acceleratorChar; int acceleratorModifiers; } pushButton;
-				struct { int inBar; } cascadeButton;
-				struct { unsigned char acceleratorChar; int acceleratorModifiers; XtCallbackList valueChangedCallbacks; } toggleButton;
-				struct { XtCallbackList valueChangedCallbacks, dragCallbacks; } scrollBar;
-			} motiff;
-
-			/* Resources. */
-
-			int x, y, width, height;
-			bool isRadioButton;   /* For radio buttons and check buttons. */
-			int radioBehavior, rowColumnType;   /* For row-columns. */
-			int orientation;   /* For row-columns and scroll bars. */
-			GuiObject defaultButton, cancelButton;   /* For forms and shells. */
-			int dialogStyle;   /* For forms and shells. */
-			GuiObject messageText;   /* For message boxes. */
-			bool autoUnmanage;   /* For bulletin boards. */
-			GuiObject subMenuId, popUpButton;   /* For cascade buttons and their menus. */
-			long increment, pageIncrement, sliderSize;   /* For scroll bars. */
-			long minimum, maximum, value;   /* For scales and scroll bars. */
-
-			XtCallbackProc activateCallback, destroyCallback;
-			XtPointer activateClosure, destroyClosure;
-			int leftAttachment, rightAttachment, topAttachment, bottomAttachment;
-			int leftOffset, rightOffset, topOffset, bottomOffset;
-			int leftPosition, rightPosition, topPosition, bottomPosition;
-			int deleteResponse;   /* For shells. */
-			void *userData;
-		};
-
-		#define my  me ->
-
-		extern struct Gui {
-			GuiObject textFocus;
-			bool duringUpdate;
-			#if win
-				HINSTANCE instance;   /* First argument of WinMain. */
-			#elif mac
-				WindowPtr modalDialog;
-			#endif
-		} theGui;
-
-		void _Gui_callCallbacks (GuiObject w, XtCallbackList *callbacks, XtPointer call);
-		#if mac
-			void _GuiMac_clipOnParent (GuiObject me);
-			void _GuiMac_clipOffValid (GuiObject me);
-			void _GuiMac_clipOffInvalid (GuiObject me);
-		#elif win
-			char32 * _GuiWin_getDrawingAreaClassName (void);
-		#endif
-		GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32 *name);
-		void _Gui_invalidateWidget (GuiObject me);
-		void _Gui_validateWidget (GuiObject me);
-		void _Gui_manageScrolledWindow (GuiObject me);
-		void _GuiNativeControl_check (GuiObject me, Boolean value);
-		void _GuiNativeControl_destroy (GuiObject me);
-		void _GuiNativeControl_setFont (GuiObject me, int style, int size);
-		void _GuiNativeControl_setTitle (GuiObject me);
-		void _GuiNativeControl_show (GuiObject me);
-		void _GuiNativeControl_hide (GuiObject me);
-		void _GuiNativeControl_setSensitive (GuiObject me);
-		char32 * _GuiWin_expandAmpersands (const char32 *title);
-
-		/********** GuiButton.cpp **********/
-		#if win
-			void _GuiWinButton_destroy (GuiObject widget);
-			void _GuiWinButton_handleClick (GuiObject widget);
-			bool _GuiWinButton_tryToHandleShortcutKey (GuiObject widget);
-		#elif mac
-			void _GuiMacButton_destroy (GuiObject widget);
-			void _GuiMacButton_handleClick (GuiObject widget, EventRecord *macEvent);
-			bool _GuiMacButton_tryToHandleShortcutKey (GuiObject widget, EventRecord *macEvent);
-		#endif
-
-		/********** GuiCheckButton.cpp **********/
-		#if win
-			void _GuiWinCheckButton_destroy (GuiObject widget);
-			void _GuiWinCheckButton_handleClick (GuiObject widget);
-		#elif mac
-			void _GuiMacCheckButton_destroy (GuiObject widget);
-			void _GuiMacCheckButton_handleClick (GuiObject widget, EventRecord *macEvent);
-		#endif
-
-		/********** GuiDrawingArea.cpp **********/
-		#if win
-			void _GuiWinDrawingArea_destroy (GuiObject widget);
-			void _GuiWinDrawingArea_update (GuiObject widget);
-			void _GuiWinDrawingArea_handleClick (GuiObject widget, int x, int y);
-			void _GuiWinDrawingArea_handleKey (GuiObject widget, TCHAR kar);
-			void _GuiWinDrawingArea_shellResize (GuiObject widget);
-		#elif mac
-			void _GuiMacDrawingArea_destroy (GuiObject widget);
-			void _GuiMacDrawingArea_update (GuiObject widget);
-			void _GuiMacDrawingArea_handleClick (GuiObject widget, EventRecord *macEvent);
-			bool _GuiMacDrawingArea_tryToHandleKey (GuiObject widget, EventRecord *macEvent);
-			void _GuiMacDrawingArea_shellResize (GuiObject widget);
-		#endif
-
-		/********** GuiLabel.cpp **********/
-		#if win
-			void _GuiWinLabel_destroy (GuiObject widget);
-		#elif mac
-			void _GuiMacLabel_destroy (GuiObject widget);
-		#endif
-
-		/********** GuiList.cpp **********/
-		#if win
-			void _GuiWinList_destroy (GuiObject widget);
-			void _GuiWinList_map (GuiObject widget);
-			void _GuiWinList_destroy (GuiObject widget);
-			void _GuiWinList_handleClick (GuiObject widget);
-		#elif mac
-			void _GuiMacList_destroy (GuiObject widget);
-			void _GuiMacList_map (GuiObject widget);
-			void _GuiMacList_activate (GuiObject widget, bool activate);
-			void _GuiMacList_handleClick (GuiObject widget, EventRecord *event);
-			void _GuiMacList_handleControlClick (GuiObject widget, EventRecord *event);
-			void _GuiMacList_move (GuiObject widget);
-			void _GuiMacList_resize (GuiObject widget);
-			void _GuiMacList_shellResize (GuiObject widget);
-			void _GuiMacList_update (GuiObject widget, RgnHandle visRgn);
-		#endif
-
-		/********** GuiRadioButton.cpp **********/
-		#if win
-			void _GuiWinRadioButton_destroy (GuiObject widget);
-			void _GuiWinRadioButton_handleClick (GuiObject widget);
-		#elif mac
-			void _GuiMacRadioButton_destroy (GuiObject widget);
-			void _GuiMacRadioButton_handleClick (GuiObject widget, EventRecord *macEvent);
-		#endif
-
-		/********** GuiScale.cpp **********/
-		#if win
-			void _GuiWinScale_destroy (GuiObject widget);
-		#elif mac
-			void _GuiMacScale_destroy (GuiObject widget);
-		#endif
-
-		/********** GuiScrollBar.cpp **********/
-		#if win
-			void _GuiWinScrollBar_destroy (GuiObject widget);
-		#elif mac
-			void _GuiMacScrollBar_destroy (GuiObject widget);
-		#endif
-
-		/********** GuiScrolledWindow.cpp **********/
-		#if win
-			void _GuiWinScrolledWindow_destroy (GuiObject widget);
-		#elif mac
-			void _GuiMacScrolledWindow_destroy (GuiObject widget);
-		#endif
-
-		/********** GuiText.cpp **********/
-		#if win
-			void _GuiWinText_destroy (GuiObject widget);
-			void _GuiWinText_map (GuiObject widget);
-		#elif mac
-			void _GuiMacText_destroy (GuiObject widget);
-			void _GuiMacText_map (GuiObject widget);
-		#endif
-		void _GuiText_handleFocusReception (GuiObject widget);
-		void _GuiText_handleFocusLoss (GuiObject widget);
-		#if mac
-		void _GuiMac_clearTheTextFocus (void);
-		#endif
-		void _GuiText_setTheTextFocus (GuiObject widget);
-		void _GuiText_handleValueChanged (GuiObject widget);
-		void _GuiText_unmanage (GuiObject widget);
-		#if mac
-			void _GuiMacText_move (GuiObject widget);
-			void _GuiMacText_shellResize (GuiObject widget);
-			void _GuiMacText_resize (GuiObject widget);
-			void _GuiMacText_update (GuiObject widget);
-			int _GuiMacText_tryToHandleKey (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, unsigned char keyCode, unsigned char charCode, EventRecord *event);
-			int _GuiMacText_tryToHandleReturnKey (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, EventRecord *event);
-			int _GuiMacText_tryToHandleClipboardShortcut (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, unsigned char charCode, EventRecord *event);
-			void _GuiMacText_handleClick (GuiObject widget, EventRecord *event);
-			void _GuiMac_makeTextCaretBlink (void);
-		#endif
-		void _GuiText_init (void);
-		void _GuiText_exit (void);
-
-	#endif
+	#include <windows.h>
+	#include <commctrl.h>
+
+	#define MEMBER(widget,klas)  ((widget -> widgetClass & xm##klas##WidgetClass) != 0)
+	#define MEMBER2(widget,klas1,klas2)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass)) != 0)
+	#define MEMBER3(widget,klas1,klas2,klas3)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass)) != 0)
+	#define MEMBER4(widget,klas1,klas2,klas3,klas4)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass | xm##klas4##WidgetClass)) != 0)
+	#define MEMBER5(widget,klas1,klas2,klas3,klas4,klas5)  ((widget -> widgetClass & (xm##klas1##WidgetClass | xm##klas2##WidgetClass | xm##klas3##WidgetClass | xm##klas4##WidgetClass | xm##klas5##WidgetClass)) != 0)
+
+	#define MAXNUM_CALLBACKS  3   /* E.g., maximum number of activate callbacks for a PushButton. */
+
+	typedef struct {
+		struct { XtCallbackProc proc; XtPointer closure; } pairs [MAXNUM_CALLBACKS];
+	} XtCallbackList;
+
+	class structGuiObject {
+	public:
+		long magicNumber;
+		unsigned long widgetClass;
+		GuiObject parent, previousSibling, nextSibling, firstChild;
+		char32 *name;
+		bool inMenu, nativized, managed, insensitive;
+		GuiObject textFocus;   /* For shells. */
+		GuiObject shell;   /* My shell ancestor. */
+
+		/* Native. */
+
+		HWND window;
+		union {
+			/* XtShell: */
+			struct { GuiObject menuBar; int uniqueItemID, duringMoveWindow; } shell;
+
+			/* XmPushButton (if in menu), XmToggleButton (if in menu), XmCascadeButton (if in menu): */
+			struct { HMENU handle; ULONG_PTR id; } entry;
+
+			/* XmMenuBar, XmPulldownMenu: */
+			struct { HMENU handle; ULONG_PTR id; } menu;
+		} nat;
+
+		/* Motif */
+
+		union {
+			struct { GuiObject horizontalBar, verticalBar, clipWindow, workWindow; } scrolledWindow;
+			struct { XtCallbackList moveCallbacks; } drawingArea;
+			struct { bool active, isDialog, canFullScreen;
+				unsigned long lowAccelerators [8]; XtCallbackProc goAwayCallback; XtPointer goAwayClosure; } shell;
+			struct { unsigned char acceleratorChar; int acceleratorModifiers; } pushButton;
+			struct { int inBar; } cascadeButton;
+			struct { unsigned char acceleratorChar; int acceleratorModifiers; XtCallbackList valueChangedCallbacks; } toggleButton;
+			struct { XtCallbackList valueChangedCallbacks, dragCallbacks; } scrollBar;
+		} motiff;
+
+		/* Resources. */
+
+		int x, y, width, height;
+		bool isRadioButton;   /* For radio buttons and check buttons. */
+		int radioBehavior, rowColumnType;   /* For row-columns. */
+		int orientation;   /* For row-columns and scroll bars. */
+		GuiObject defaultButton, cancelButton;   /* For forms and shells. */
+		int dialogStyle;   /* For forms and shells. */
+		GuiObject messageText;   /* For message boxes. */
+		bool autoUnmanage;   /* For bulletin boards. */
+		GuiObject subMenuId, popUpButton;   /* For cascade buttons and their menus. */
+		long increment, pageIncrement, sliderSize;   /* For scroll bars. */
+		long minimum, maximum, value;   /* For scales and scroll bars. */
+
+		XtCallbackProc activateCallback, destroyCallback;
+		XtPointer activateClosure, destroyClosure;
+		int leftAttachment, rightAttachment, topAttachment, bottomAttachment;
+		int leftOffset, rightOffset, topOffset, bottomOffset;
+		int leftPosition, rightPosition, topPosition, bottomPosition;
+		int deleteResponse;   /* For shells. */
+		void *userData;
+	};
+
+	#define my  me ->
+
+	extern struct Gui {
+		GuiObject textFocus;
+		bool duringUpdate;
+		HINSTANCE instance;   // first argument of WinMain
+		int commandShow;   // another argument of WinMain
+	} theGui;
+
+	void _Gui_callCallbacks (GuiObject w, XtCallbackList *callbacks, XtPointer call);
+	char32 * _GuiWin_getDrawingAreaClassName (void);
+
+	GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32 *name);
+	void _Gui_invalidateWidget (GuiObject me);
+	void _Gui_validateWidget (GuiObject me);
+	void _Gui_manageScrolledWindow (GuiObject me);
+	void _GuiNativeControl_check (GuiObject me, Boolean value);
+	void _GuiNativeControl_destroy (GuiObject me);
+	void _GuiNativeControl_setTitle (GuiObject me);
+	void _GuiNativeControl_show (GuiObject me);
+	void _GuiNativeControl_hide (GuiObject me);
+	void _GuiNativeControl_setSensitive (GuiObject me);
+	char32 * _GuiWin_expandAmpersands (const char32 *title);
+
+	/********** GuiButton.cpp **********/
+	void _GuiWinButton_destroy (GuiObject widget);
+	void _GuiWinButton_handleClick (GuiObject widget);
+	bool _GuiWinButton_tryToHandleShortcutKey (GuiObject widget);
+
+	/********** GuiCheckButton.cpp **********/
+	void _GuiWinCheckButton_destroy (GuiObject widget);
+	void _GuiWinCheckButton_handleClick (GuiObject widget);
+
+	/********** GuiDrawingArea.cpp **********/
+	void _GuiWinDrawingArea_destroy (GuiObject widget);
+	void _GuiWinDrawingArea_update (GuiObject widget);
+	void _GuiWinDrawingArea_handleClick (GuiObject widget, int x, int y);
+	void _GuiWinDrawingArea_handleKey (GuiObject widget, TCHAR kar);
+	void _GuiWinDrawingArea_shellResize (GuiObject widget);
+
+	/********** GuiLabel.cpp **********/
+	void _GuiWinLabel_destroy (GuiObject widget);
+
+	/********** GuiList.cpp **********/
+	void _GuiWinList_destroy (GuiObject widget);
+	void _GuiWinList_map (GuiObject widget);
+	void _GuiWinList_destroy (GuiObject widget);
+	void _GuiWinList_handleClick (GuiObject widget);
+
+	/********** GuiRadioButton.cpp **********/
+	void _GuiWinRadioButton_destroy (GuiObject widget);
+	void _GuiWinRadioButton_handleClick (GuiObject widget);
+
+	/********** GuiScale.cpp **********/
+	void _GuiWinScale_destroy (GuiObject widget);
+
+	/********** GuiScrollBar.cpp **********/
+	void _GuiWinScrollBar_destroy (GuiObject widget);
+
+	/********** GuiScrolledWindow.cpp **********/
+	void _GuiWinScrolledWindow_destroy (GuiObject widget);
+
+	/********** GuiText.cpp **********/
+	void _GuiWinText_destroy (GuiObject widget);
+	void _GuiWinText_map (GuiObject widget);
+	void _GuiText_handleFocusReception (GuiObject widget);
+	void _GuiText_handleFocusLoss (GuiObject widget);
+	void _GuiText_setTheTextFocus (GuiObject widget);
+	void _GuiText_handleValueChanged (GuiObject widget);
+	void _GuiText_unmanage (GuiObject widget);
+	void _GuiText_init ();
+	void _GuiText_exit ();
+
 #endif
 
 /* End of file GuiP.h */
diff --git a/sys/GuiProgressBar.cpp b/sys/GuiProgressBar.cpp
index 6aeaa1f..3b2e196 100644
--- a/sys/GuiProgressBar.cpp
+++ b/sys/GuiProgressBar.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2008 Stefan de Konink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -37,11 +36,11 @@ Thing_implement (GuiProgressBar, GuiControl, 0);
 		trace (U"deleting a progress bar");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiProgressBar));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiProgressBar));
 		d_userData = static_cast <GuiProgressBar> (userData);
 	}
 	@end
@@ -57,23 +56,23 @@ Thing_implement (GuiProgressBar, GuiControl, 0);
 
 GuiProgressBar GuiProgressBar_create (GuiForm parent, int left, int right, int top, int bottom, uint32 /* flags */)
 {
-	GuiProgressBar me = Thing_new (GuiProgressBar);
+	autoGuiProgressBar me = Thing_new (GuiProgressBar);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
 		my d_widget = gtk_progress_bar_new ();
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 	#elif cocoa
 		my d_cocoaProgressBar = [[GuiCocoaProgressBar alloc] init];
 		my d_widget = my d_cocoaProgressBar;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[my d_cocoaProgressBar   setUserData: me];
+		[my d_cocoaProgressBar   setUserData: me.get()];
 		[my d_cocoaProgressBar   setIndeterminate: false];
 		[my d_cocoaProgressBar   setMaxValue: 1.0];
 	#elif motif
-		my d_widget = XmCreateScale (parent -> d_widget, "scale", NULL, 0);
-		_GuiObject_setUserData (my d_widget, me);
+		my d_widget = XmCreateScale (parent -> d_widget, "scale", nullptr, 0);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		XtVaSetValues (my d_widget, XmNorientation, XmHORIZONTAL,
 			XmNminimum, 0, XmNmaximum, 10000, XmNvalue, 0,
@@ -83,17 +82,17 @@ GuiProgressBar GuiProgressBar_create (GuiForm parent, int left, int right, int t
 			#ifdef macintosh
 				//XmNscaleWidth, 340,
 			#endif
-			NULL);
+			nullptr);
 	#endif
 
 	#if gtk
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkProgressBar_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_guiGtkProgressBar_destroyCallback), me.get());
 	#elif cocoa
 	#elif motif
-		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifProgressBar_destroyCallback, me);
+		XtAddCallback (my d_widget, XmNdestroyCallback, _guiMotifProgressBar_destroyCallback, me.get());
 	#endif
 
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiProgressBar GuiProgressBar_createShown (GuiForm parent, int left, int right, int top, int bottom, uint32 flags)
diff --git a/sys/GuiRadioButton.cpp b/sys/GuiRadioButton.cpp
index 5caf47b..7d1c1b6 100644
--- a/sys/GuiRadioButton.cpp
+++ b/sys/GuiRadioButton.cpp
@@ -1,20 +1,19 @@
 /* GuiRadioButton.cpp
  *
- * Copyright (C) 1993-2011,2012,2013,2015 Paul Boersma
+ * Copyright (C) 1993-2011,2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -30,8 +29,6 @@
 
 Thing_implement (GuiRadioButton, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if motif
 	#define iam_radiobutton \
 		Melder_assert (widget -> widgetClass == xmToggleButtonWidgetClass); \
@@ -61,8 +58,8 @@ static int _GuiRadioButton_getPosition (GuiRadioButton me) {
 		trace (U"enter");
 		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) {
 			trace (U"on");
-			if (my d_valueChangedCallback != NULL && ! my d_blockValueChangedCallbacks) {
-				struct structGuiRadioButtonEvent event = { me };
+			if (my d_valueChangedCallback && ! my d_blockValueChangedCallbacks) {
+				struct structGuiRadioButtonEvent event { me };
 				event. position = _GuiRadioButton_getPosition (me);
 				my d_valueChangedCallback (my d_valueChangedBoss, & event);
 			}
@@ -73,16 +70,16 @@ static int _GuiRadioButton_getPosition (GuiRadioButton me) {
 		GuiRadioButton d_userData;
 	}
 	- (void) dealloc {   // override
-		GuiRadioButton me = self -> d_userData;
+		GuiRadioButton me = d_userData;
 		forget (me);
 		trace (U"deleting a radio button");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiRadioButton));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiRadioButton));
 		d_userData = static_cast <GuiRadioButton> (userData);
 	}
 	- (void) _guiCocoaRadioButton_activateCallback: (id) widget {
@@ -92,15 +89,15 @@ static int _GuiRadioButton_getPosition (GuiRadioButton me) {
 		/*
 		 * Deselect the sister buttons.
 		 */
-		for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
+		for (GuiRadioButton sibling = my d_previous; sibling != nullptr; sibling = sibling -> d_previous) {
 			[sibling -> d_cocoaRadioButton   setState: NSOffState];
 		}
-		for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
+		for (GuiRadioButton sibling = my d_next; sibling != nullptr; sibling = sibling -> d_next) {
 			[sibling -> d_cocoaRadioButton   setState: NSOffState];
 		}
-		if (my d_valueChangedCallback != NULL) {
+		if (my d_valueChangedCallback) {
 			Melder_assert (! my d_blockValueChangedCallbacks);
-			struct structGuiRadioButtonEvent event = { me };
+			struct structGuiRadioButtonEvent event { me };
 			event. position = _GuiRadioButton_getPosition (me);
 			my d_valueChangedCallback (my d_valueChangedBoss, & event);
 		}
@@ -118,85 +115,57 @@ static int _GuiRadioButton_getPosition (GuiRadioButton me) {
 		/*
 		 * Deselect the sister buttons.
 		 */
-		for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
+		for (GuiRadioButton sibling = my d_previous; sibling != nullptr; sibling = sibling -> d_previous) {
 			Button_SetCheck (sibling -> d_widget -> window, BST_UNCHECKED);
 		}
-		for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
+		for (GuiRadioButton sibling = my d_next; sibling != nullptr; sibling = sibling -> d_next) {
 			Button_SetCheck (sibling -> d_widget -> window, BST_UNCHECKED);
 		}
-		if (my d_valueChangedCallback != NULL) {
-			struct structGuiRadioButtonEvent event = { me };
+		if (my d_valueChangedCallback) {
+			struct structGuiRadioButtonEvent event { me };
 			event. position = _GuiRadioButton_getPosition (me);
 			my d_valueChangedCallback (my d_valueChangedBoss, & event);
 		}
 	}
-#elif mac
-	void _GuiMacRadioButton_destroy (GuiObject widget) {
-		iam_radiobutton;
-		_GuiNativeControl_destroy (widget);
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacRadioButton_handleClick (GuiObject widget, EventRecord *macEvent) {
-		iam_radiobutton;
-		_GuiMac_clipOnParent (widget);
-		bool clicked = HandleControlClick (widget -> nat.control.handle, macEvent -> where, macEvent -> modifiers, NULL);
-		GuiMac_clipOff ();
-		if (clicked) {
-			/*
-			 * Deselect the sister buttons.
-			 */
-			for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
-				SetControlValue (sibling -> d_widget -> nat.control.handle, 0);
-			}
-			for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
-				SetControlValue (sibling -> d_widget -> nat.control.handle, 0);
-			}
-			if (my d_valueChangedCallback != NULL) {
-				struct structGuiRadioButtonEvent event = { me };
-				event. position = _GuiRadioButton_getPosition (me);
-				my d_valueChangedCallback (my d_valueChangedBoss, & event);
-			}
-		}
-	}
 #endif
 
-static GuiRadioButton latestRadioButton = NULL;
+static GuiRadioButton latestRadioButton = nullptr;
 
 void GuiRadioGroup_begin () {
-	latestRadioButton = NULL;
+	latestRadioButton = nullptr;
 }
 
 void GuiRadioGroup_end () {
-	latestRadioButton = NULL;
+	latestRadioButton = nullptr;
 }
 
 GuiRadioButton GuiRadioButton_create (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiRadioButtonEvent event), void *valueChangedBoss, uint32 flags)
+	const char32 *buttonText, GuiRadioButtonCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
 	trace (U"begin: text %", buttonText);
-	GuiRadioButton me = Thing_new (GuiRadioButton);
+	autoGuiRadioButton me = Thing_new (GuiRadioButton);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_valueChangedCallback = valueChangedCallback;
 	my d_valueChangedBoss = valueChangedBoss;
 	my d_previous = latestRadioButton;
-	my d_next = NULL;
+	my d_next = nullptr;
 	#if gtk
-		my d_widget = gtk_radio_button_new_with_label_from_widget (latestRadioButton ? GTK_RADIO_BUTTON (latestRadioButton -> d_widget) : NULL, Melder_peek32to8 (buttonText));
-		_GuiObject_setUserData (my d_widget, me);
+		my d_widget = gtk_radio_button_new_with_label_from_widget (latestRadioButton ? GTK_RADIO_BUTTON (latestRadioButton -> d_widget) : nullptr, Melder_peek32to8 (buttonText));
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		if (flags & GuiRadioButton_SET) {
-			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), TRUE);
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), true);
 		} else {
-			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), FALSE);
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), false);
 		}
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkRadioButton_destroyCallback), me);
-		g_signal_connect (GTK_TOGGLE_BUTTON (my d_widget), "toggled", G_CALLBACK (_GuiGtkRadioButton_handleToggle), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkRadioButton_destroyCallback), me.get());
+		g_signal_connect (GTK_TOGGLE_BUTTON (my d_widget), "toggled", G_CALLBACK (_GuiGtkRadioButton_handleToggle), me.get());
 	#elif cocoaXXX
 		my d_cocoaRadioButton = [[GuiCocoaRadioButton alloc] init];
 		my d_widget = my d_cocoaRadioButton;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[my d_cocoaRadioButton   setUserData: me];
+		[my d_cocoaRadioButton   setUserData: me.get()];
 		[my d_cocoaRadioButton setButtonType: NSRadioButton];
 		[my d_cocoaRadioButton setTitle: (NSString *) Melder_peek32toCfstring (buttonText)];
 		if (flags & GuiCheckButton_SET) {
@@ -208,7 +177,7 @@ GuiRadioButton GuiRadioButton_create (GuiForm parent, int left, int right, int t
 		my d_cocoaRadioButton = [[GuiCocoaRadioButton alloc] init];
 		my d_widget = my d_cocoaRadioButton;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[my d_cocoaRadioButton   setUserData: me];
+		[my d_cocoaRadioButton   setUserData: me.get()];
 		[my d_cocoaRadioButton setButtonType: NSRadioButton];
 		NSImage *image = [my d_cocoaRadioButton image], *alternateImage = [my d_cocoaRadioButton alternateImage];
 		[my d_cocoaRadioButton setButtonType: NSSwitchButton];
@@ -223,7 +192,7 @@ GuiRadioButton GuiRadioButton_create (GuiForm parent, int left, int right, int t
 	#elif cocoa
 		NSRect matrixRect = NSMakeRect (20.0, 20.0, 125.0, 125.0);
 		my d_cocoaRadioButton = [[GuiCocoaRadioButton alloc] initWithFrame:matrixRect];
-		[my d_cocoaRadioButton   setUserData: me];
+		[my d_cocoaRadioButton   setUserData: me.get()];
 		[my d_cocoaRadioButton setButtonType: NSRadioButton];
 		[my d_cocoaRadioButton setTitle: (NSString *) Melder_peek32toCfstring (buttonText)];
     	NSMatrix *radioMatrix = [[NSMatrix alloc] initWithFrame: matrixRect   mode: NSRadioModeMatrix
@@ -231,7 +200,7 @@ GuiRadioButton GuiRadioButton_create (GuiForm parent, int left, int right, int t
 		my d_widget = (GuiObject) radioMatrix; //my d_cocoaRadioButton;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		[radioMatrix   addSubview: my d_cocoaRadioButton];
-		[my d_cocoaRadioButton   setUserData: me];
+		[my d_cocoaRadioButton   setUserData: me.get()];
 		[my d_cocoaRadioButton setButtonType: NSRadioButton];
 		[my d_cocoaRadioButton setTitle: (NSString *) Melder_peek32toCfstring (buttonText)];
 		if (flags & GuiCheckButton_SET) {
@@ -241,48 +210,36 @@ GuiRadioButton GuiRadioButton_create (GuiForm parent, int left, int right, int t
 		[my d_cocoaRadioButton setAction: @selector (_guiCocoaRadioButton_activateCallback:)];
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmToggleButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_widget -> isRadioButton = true;
 		my d_widget -> window = CreateWindow (L"button", Melder_peek32toW (_GuiWin_expandAmpersands (buttonText)),
 			WS_CHILD
 			| ( my d_widget -> parent -> radioBehavior ? BS_AUTORADIOBUTTON : BS_RADIOBUTTON )
 			| WS_CLIPSIBLINGS,
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, NULL);
+			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
-		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), FALSE);
+		SetWindowFont (my d_widget -> window, GetStockFont (ANSI_VAR_FONT), false);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		if (flags & GuiRadioButton_SET) {
 			Button_SetCheck (my d_widget -> window, BST_CHECKED);
 		}
-	#elif mac
-		my d_widget = _Gui_initializeWidget (xmToggleButtonWidgetClass, parent -> d_widget, buttonText);
-		_GuiObject_setUserData (my d_widget, me);
-		my d_widget -> isRadioButton = true;
-		CreateRadioButtonControl (my d_widget -> macWindow, & my d_widget -> rect, NULL,
-			(flags & GuiRadioButton_SET) != 0, true, & my d_widget -> nat.control.handle);
-		Melder_assert (my d_widget -> nat.control.handle != NULL);
-		SetControlReference (my d_widget -> nat.control.handle, (long) my d_widget);
-		my d_widget -> isControl = true;
-		_GuiNativeControl_setFont (my d_widget, 0, 13);
-		_GuiNativeControl_setTitle (my d_widget);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 	#endif
 	if (flags & GuiRadioButton_INSENSITIVE) {
-		GuiThing_setSensitive (me, false);
+		GuiThing_setSensitive (me.get(), false);
 	}
 	if (my d_previous) {
-		Melder_assert (my d_previous != NULL);
+		Melder_assert (my d_previous);
 		Melder_assert (my d_previous -> classInfo == classGuiRadioButton);
-		my d_previous -> d_next = me;
+		my d_previous -> d_next = me.get();
 	}
-	latestRadioButton = me;
+	latestRadioButton = me.get();
 	trace (U"end");
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiRadioButton GuiRadioButton_createShown (GuiForm parent, int left, int right, int top, int bottom,
-	const char32 *buttonText, void (*valueChangedCallback) (void *boss, GuiRadioButtonEvent event), void *valueChangedBoss, uint32 flags)
+	const char32 *buttonText, GuiRadioButtonCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
 	GuiRadioButton me = GuiRadioButton_create (parent, left, right, top, bottom, buttonText, valueChangedCallback, valueChangedBoss, flags);
 	GuiThing_show (me);
@@ -297,8 +254,6 @@ bool GuiRadioButton_getValue (GuiRadioButton me) {
         value = [my d_cocoaRadioButton state] == NSOnState;
 	#elif win
 		value = (Button_GetState (my d_widget -> window) & 0x0003) == BST_CHECKED;
-	#elif mac
-		value = GetControlValue (my d_widget -> nat.control.handle);
 	#endif
 	return value;
 }
@@ -307,16 +262,16 @@ void GuiRadioButton_set (GuiRadioButton me) {
 	trace (U"enter");
 	GuiControlBlockValueChangedCallbacks block (me);   // the value should be set without calling the valueChanged callback (crucial on GTK)
 	#if gtk
-		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), TRUE);
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (my d_widget), true);
 	#elif cocoa
 		[my d_cocoaRadioButton   setState: NSOnState];
 		/*
 		 * Deselect the sister buttons.
 		 */
-		for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
+		for (GuiRadioButton sibling = my d_previous; sibling != nullptr; sibling = sibling -> d_previous) {
 			[sibling -> d_cocoaRadioButton   setState: NSOffState];
 		}
-		for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
+		for (GuiRadioButton sibling = my d_next; sibling != nullptr; sibling = sibling -> d_next) {
 			[sibling -> d_cocoaRadioButton   setState: NSOffState];
 		}
 	#elif win
@@ -324,23 +279,12 @@ void GuiRadioButton_set (GuiRadioButton me) {
 		/*
 		 * Deselect the sister buttons.
 		 */
-		for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
+		for (GuiRadioButton sibling = my d_previous; sibling != nullptr; sibling = sibling -> d_previous) {
 			Button_SetCheck (sibling -> d_widget -> window, BST_UNCHECKED);
 		}
-		for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
+		for (GuiRadioButton sibling = my d_next; sibling != nullptr; sibling = sibling -> d_next) {
 			Button_SetCheck (sibling -> d_widget -> window, BST_UNCHECKED);
 		}
-	#elif mac
-		SetControlValue (my d_widget -> nat.control.handle, true);
-		/*
-		 * Deselect the sister buttons.
-		 */
-		for (GuiRadioButton sibling = my d_previous; sibling != NULL; sibling = sibling -> d_previous) {
-			SetControlValue (sibling -> d_widget -> nat.control.handle, false);
-		}
-		for (GuiRadioButton sibling = my d_next; sibling != NULL; sibling = sibling -> d_next) {
-			SetControlValue (sibling -> d_widget -> nat.control.handle, false);
-		}
 	#endif
 	trace (U"exit");
 }
diff --git a/sys/GuiScale.cpp b/sys/GuiScale.cpp
index 6c7b656..dfc7c17 100644
--- a/sys/GuiScale.cpp
+++ b/sys/GuiScale.cpp
@@ -1,34 +1,25 @@
 /* GuiScale.cpp
  *
- * Copyright (C) 1993-2011,2012,2015 Paul Boersma
+ * Copyright (C) 1993-2011,2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb & sdk 2007/12/28 gtk
- * pb 2010/11/28 removed Motif
- * pb 2011/04/06 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiScale, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_scale \
 		Melder_assert (widget -> widgetClass == xmScaleWidgetClass); \
@@ -54,11 +45,11 @@ Thing_implement (GuiScale, GuiControl, 0);
 		trace (U"deleting a progress bar");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiScale));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiScale));
 		d_userData = static_cast <GuiScale> (userData);
 	}
 	@end
@@ -69,53 +60,41 @@ Thing_implement (GuiScale, GuiControl, 0);
 		trace (U"forgetting a scale or a progress bar");
 		forget (me);   // NOTE: my widget is not destroyed here
 	}
-#elif mac
-	void _GuiMacScale_destroy (GuiObject widget) {
-		_GuiMac_clipOnParent (widget);
-		EraseRect (& widget -> rect);
-		GuiMac_clipOff ();
-		iam_scale;
-		trace (U"forgetting a scale or a progress bar");
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
 #endif
 
 GuiScale GuiScale_create (GuiForm parent, int left, int right, int top, int bottom,
 	int minimum, int maximum, int value, uint32 /* flags */)
 {
-	GuiScale me = Thing_new (GuiScale);
+	autoGuiScale me = Thing_new (GuiScale);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
-		my d_widget = gtk_hscrollbar_new (NULL);
+		my d_widget = gtk_hscrollbar_new (nullptr);
 		gtk_range_set_range (GTK_RANGE (my d_widget), 0, 1000);
 		GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (my d_widget));
 		adj -> page_size = 150;
 		gtk_adjustment_changed (adj);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkScale_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkScale_destroyCallback), me.get());
 	#elif cocoa
 		my d_cocoaScale = [[GuiCocoaScale alloc] init];
 		my d_widget = my d_cocoaScale;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[my d_cocoaScale   setUserData: me];
+		[my d_cocoaScale   setUserData: me.get()];
 		[my d_cocoaScale   setIndeterminate: false];
 		[my d_cocoaScale   setMinValue: minimum];
 		[my d_cocoaScale   setMaxValue: maximum];
 		[my d_cocoaScale   setDoubleValue: value];
 	#elif motif
-		my d_widget = XmCreateScale (parent -> d_widget, "scale", NULL, 0);
-		_GuiObject_setUserData (my d_widget, me);
+		my d_widget = XmCreateScale (parent -> d_widget, "scale", nullptr, 0);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		XtVaSetValues (my d_widget, XmNorientation, XmHORIZONTAL,
 			XmNminimum, minimum, XmNmaximum, maximum, XmNvalue, value, //XmNy, 300,
-			#ifdef macintosh
-				//XmNscaleWidth, 340,
-			#endif
-			NULL);
+			nullptr);
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiScale GuiScale_createShown (GuiForm parent, int left, int right, int top, int bottom,
diff --git a/sys/GuiScrollBar.cpp b/sys/GuiScrollBar.cpp
index 4fdcf5d..31c56e3 100644
--- a/sys/GuiScrollBar.cpp
+++ b/sys/GuiScrollBar.cpp
@@ -1,28 +1,25 @@
 /* GuiScrollBar.cpp
  *
- * Copyright (C) 1993-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiScrollBar, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_scrollbar \
 		Melder_assert (widget -> widgetClass == xmScrollBarWidgetClass); \
@@ -33,8 +30,7 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 #endif
 
 #if gtk
-	static void _GuiGtkScrollBar_destroyCallback (GuiObject widget, gpointer void_me) {
-		(void) widget;
+	static void _GuiGtkScrollBar_destroyCallback (GuiObject /* widget */, gpointer void_me) {
 		iam (GuiScrollBar);
 		forget (me);
 	}
@@ -44,7 +40,7 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 		if (my d_blockValueChangedCallbacks) {
 			my d_blockValueChangedCallbacks = false;
 		} else if (my d_valueChangedCallback) {
-			struct structGuiScrollBarEvent event = { me };
+			struct structGuiScrollBarEvent event { me };
 			try {
 				my d_valueChangedCallback (my d_valueChangedBoss, & event);
 			} catch (MelderError) {
@@ -73,11 +69,11 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
     trace (U"deleting a scroll bar");
     [super dealloc];
 }
-- (GuiThing) userData {
+- (GuiThing) getUserData {
     return d_userData;
 }
 - (void) setUserData: (GuiThing) userData {
-	Melder_assert (userData == NULL || Thing_isa (userData, classGuiScrollBar));
+	Melder_assert (userData == nullptr || Thing_isa (userData, classGuiScrollBar));
 	d_userData = static_cast <GuiScrollBar> (userData);
 }
 - (void) setMinimum:(double)minimum maximum:(double)maximum value:(double)value sliderSize:(double)sliderSize increment:(double)increment pageIncrement:(double)pageIncrement {
@@ -101,7 +97,7 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 	GuiScrollBar me = (GuiScrollBar) d_userData;
 	[self setMinimum: _m_minimum maximum: _m_maximum value: _m_value sliderSize: _m_sliderSize increment: _m_increment pageIncrement: _m_pageIncrement];
     if (my d_valueChangedCallback) {
-        struct structGuiScrollBarEvent event = { me };
+        struct structGuiScrollBarEvent event { me };
         try {
             my d_valueChangedCallback (my d_valueChangedBoss, & event);
         } catch (MelderError) {
@@ -172,7 +168,7 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 		} break;
     }
     if (my d_valueChangedCallback) {
-        struct structGuiScrollBarEvent event = { me };
+        struct structGuiScrollBarEvent event { me };
         try {
             my d_valueChangedCallback (my d_valueChangedBoss, & event);
         } catch (MelderError) {
@@ -187,18 +183,12 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 		iam_scrollbar;
 		forget (me);   // NOTE: my widget is not destroyed here
 	}
-#elif mac
-	void _GuiMacScrollBar_destroy (GuiObject widget) {
-		_GuiNativeControl_destroy (widget);
-		iam_scrollbar;
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
 #endif
 #if motif
 	static void _GuiMotifScrollBar_valueChangedCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		iam (GuiScrollBar);
 		if (my d_valueChangedCallback) {
-			struct structGuiScrollBarEvent event = { me };
+			struct structGuiScrollBarEvent event { me };
 			try {
 				my d_valueChangedCallback (my d_valueChangedBoss, & event);
 			} catch (MelderError) {
@@ -210,9 +200,9 @@ Thing_implement (GuiScrollBar, GuiControl, 0);
 
 GuiScrollBar GuiScrollBar_create (GuiForm parent, int left, int right, int top, int bottom,
 	double minimum, double maximum, double value, double sliderSize, double increment, double pageIncrement,
-	void (*valueChangedCallback) (void *boss, GuiScrollBarEvent event), void *valueChangedBoss, uint32 flags)
+	GuiScrollBarCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
-	GuiScrollBar me = Thing_new (GuiScrollBar);
+	autoGuiScrollBar me = Thing_new (GuiScrollBar);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	my d_valueChangedCallback = valueChangedCallback;
@@ -220,15 +210,15 @@ GuiScrollBar GuiScrollBar_create (GuiForm parent, int left, int right, int top,
 	#if gtk
 		GtkObject *adj = gtk_adjustment_new (value, minimum, maximum, increment, pageIncrement, sliderSize);
 		my d_widget = flags & GuiScrollBar_HORIZONTAL ? gtk_hscrollbar_new (GTK_ADJUSTMENT (adj)) : gtk_vscrollbar_new (GTK_ADJUSTMENT (adj));
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		g_signal_connect (G_OBJECT (my d_widget), "value-changed", G_CALLBACK (_GuiGtkScrollBar_valueChangedCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "value-changed", G_CALLBACK (_GuiGtkScrollBar_valueChangedCallback), me.get());
 	#elif cocoa
 		NSRect dummyFrame = flags & GuiScrollBar_HORIZONTAL ? NSMakeRect (20, 20, 100, [NSScroller scrollerWidth]) : NSMakeRect (20, 20, [NSScroller scrollerWidth], 100);
 		GuiCocoaScrollBar *scroller = [[GuiCocoaScrollBar alloc] initWithFrame: dummyFrame];
 		my d_widget = scroller;
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		[scroller setUserData: me];
+		[scroller setUserData: me.get()];
 		[scroller setEnabled: YES];
 		[scroller   setMinimum: minimum   maximum: maximum   value: value   sliderSize: sliderSize   increment: increment   pageIncrement: pageIncrement];
         //[scroller setScrollerStyle: NSScrollerStyleOverlay];
@@ -244,33 +234,18 @@ GuiScrollBar GuiScrollBar_create (GuiForm parent, int left, int right, int top,
 			XmNsliderSize, (int) sliderSize,
 			XmNincrement, (int) increment,
 			XmNpageIncrement, (int) pageIncrement,
-			NULL);
-		_GuiObject_setUserData (my d_widget, me);
-		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		XtAddCallback (my d_widget, XmNvalueChangedCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me);
-		XtAddCallback (my d_widget, XmNdragCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me);
-	#elif mac
-		my d_widget = XtVaCreateWidget ("scrollBar",
-			xmScrollBarWidgetClass, parent -> d_widget,
-			XmNorientation, flags & GuiScrollBar_HORIZONTAL ? XmHORIZONTAL : XmVERTICAL,
-			XmNminimum, (int) minimum,
-			XmNmaximum, (int) maximum,
-			XmNvalue, (int) value,
-			XmNsliderSize, (int) sliderSize,
-			XmNincrement, (int) increment,
-			XmNpageIncrement, (int) pageIncrement,
-			NULL);
-		_GuiObject_setUserData (my d_widget, me);
+			nullptr);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		XtAddCallback (my d_widget, XmNvalueChangedCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me);
-		XtAddCallback (my d_widget, XmNdragCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me);
+		XtAddCallback (my d_widget, XmNvalueChangedCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me.get());
+		XtAddCallback (my d_widget, XmNdragCallback, _GuiMotifScrollBar_valueChangedCallback, (XtPointer) me.get());
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiScrollBar GuiScrollBar_createShown (GuiForm parent, int left, int right, int top, int bottom,
 	double minimum, double maximum, double value, double sliderSize, double increment, double pageIncrement,
-	void (*valueChangedCallback) (void *boss, GuiScrollBarEvent event), void *valueChangedBoss, uint32 flags)
+	GuiScrollBarCallback valueChangedCallback, Thing valueChangedBoss, uint32 flags)
 {
 	GuiScrollBar me = GuiScrollBar_create (parent, left, right, top, bottom,
 		minimum, maximum, value, sliderSize, increment, pageIncrement,
@@ -324,9 +299,9 @@ void GuiScrollBar_set (GuiScrollBar me, double minimum, double maximum, double v
 			pageIncrement: NUMdefined (pageIncrement) ? pageIncrement : [scroller m_pageIncrement]];
 	#elif motif
 		if (NUMdefined (minimum))
-			XtVaSetValues (my d_widget, XmNminimum, (int) minimum, NULL);
+			XtVaSetValues (my d_widget, XmNminimum, (int) minimum, nullptr);
 		if (NUMdefined (maximum))
-			XtVaSetValues (my d_widget, XmNmaximum, (int) maximum, NULL);
+			XtVaSetValues (my d_widget, XmNmaximum, (int) maximum, nullptr);
 		int oldValue, oldSliderSize, oldIncrement, oldPageIncrement;
 		XmScrollBarGetValues (my d_widget, & oldValue, & oldSliderSize, & oldIncrement, & oldPageIncrement);
 		XmScrollBarSetValues (my d_widget,
@@ -349,6 +324,8 @@ int GuiScrollBar_getValue (GuiScrollBar me) {
 		int value, slider, incr, pincr;
 		XmScrollBarGetValues (my d_widget, & value, & slider, & incr, & pincr);
 		return value;
+	#else
+		return 0;
 	#endif
 }
 
@@ -362,6 +339,8 @@ int GuiScrollBar_getSliderSize (GuiScrollBar me) {
 		int value, slider, incr, pincr;
 		XmScrollBarGetValues (my d_widget, & value, & slider, & incr, & pincr);
 		return slider;
+	#else
+		return 0;
 	#endif
 }
 
diff --git a/sys/GuiScrolledWindow.cpp b/sys/GuiScrolledWindow.cpp
index b308902..4f3d7b2 100644
--- a/sys/GuiScrolledWindow.cpp
+++ b/sys/GuiScrolledWindow.cpp
@@ -1,28 +1,25 @@
 /* GuiScrolledWindow.cpp
  *
- * Copyright (C) 1993-2011,2012,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2011,2012,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 
 Thing_implement (GuiScrolledWindow, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
 #if win || mac
 	#define iam_scrolledwindow \
 		Melder_assert (widget -> widgetClass == xmScrolledWindowWidgetClass); \
@@ -48,11 +45,11 @@ Thing_implement (GuiScrolledWindow, GuiControl, 0);
 		trace (U"deleting a scrolled window");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiScrolledWindow));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiScrolledWindow));
 		d_userData = static_cast <GuiScrolledWindow> (userData);
 	}
 	@end
@@ -62,48 +59,38 @@ Thing_implement (GuiScrolledWindow, GuiControl, 0);
 		iam_scrolledwindow;
 		forget (me);   // NOTE: my widget is not destroyed here
 	}
-#elif mac
-	void _GuiMacScrolledWindow_destroy (GuiObject widget) {
-		iam_scrolledwindow;
-		/*
-		 * One can get here either via GuiScrolledWindow_create or via GuiList_create,
-		 * so we cannot be certain that we have a GuiScrolledWindow!!!
-		 * So we purposely have a memory leak here:
-		 */
-		//forget (me);   // NOTE: my widget is not destroyed here
-	}
 #endif
 
 GuiScrolledWindow GuiScrolledWindow_create (GuiForm parent, int left, int right, int top, int bottom,
 	int horizontalScrollbarPersistence, int verticalScrollbarPersistence, uint32 /* flags */)
 {
-	GuiScrolledWindow me = Thing_new (GuiScrolledWindow);
+	autoGuiScrolledWindow me = Thing_new (GuiScrolledWindow);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
-		my d_widget = gtk_scrolled_window_new (NULL, NULL);
+		my d_widget = gtk_scrolled_window_new (nullptr, nullptr);
 		gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (my d_widget),
 			horizontalScrollbarPersistence == 0 ? GTK_POLICY_NEVER : horizontalScrollbarPersistence == 1 ? GTK_POLICY_AUTOMATIC : GTK_POLICY_ALWAYS,
 			verticalScrollbarPersistence   == 0 ? GTK_POLICY_NEVER : verticalScrollbarPersistence   == 1 ? GTK_POLICY_AUTOMATIC : GTK_POLICY_ALWAYS);
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkScrolledWindow_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkScrolledWindow_destroyCallback), me.get());
 	#elif cocoa
         GuiCocoaScrolledWindow *scrollView = [[GuiCocoaScrolledWindow alloc] init];
         my d_widget = (GuiObject) scrollView;
         my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-        [scrollView setUserData: me];
+        [scrollView setUserData: me.get()];
         [scrollView setHasVerticalScroller:   YES];
         [scrollView setHasHorizontalScroller: YES];
         [scrollView setBackgroundColor: [NSColor lightGrayColor]];
 	#elif motif
-		my d_widget = XmCreateScrolledWindow (parent -> d_widget, "scrolledWindow", NULL, 0);
-		_GuiObject_setUserData (my d_widget, me);
+		my d_widget = XmCreateScrolledWindow (parent -> d_widget, "scrolledWindow", nullptr, 0);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		Melder_assert (my classInfo == classGuiScrolledWindow);
-		trace (U"me = ", Melder_pointer (me), U", user data = ", Melder_pointer (my d_widget -> userData));
+		trace (U"me = ", Melder_pointer (me.get()), U", user data = ", Melder_pointer (my d_widget -> userData));
 	#endif
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 
diff --git a/sys/GuiShell.cpp b/sys/GuiShell.cpp
index 7d157b5..5fe6164 100644
--- a/sys/GuiShell.cpp
+++ b/sys/GuiShell.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2012,2015 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -22,15 +21,51 @@
 
 Thing_implement (GuiShell, GuiForm, 0);
 
-void structGuiShell :: v_destroy () {
+#if cocoa
+	@implementation GuiCocoaShell {
+		GuiShell d_userData;
+	}
+	- (void) dealloc {   // override
+		GuiShell me = d_userData;
+		my d_cocoaShell = nullptr;   // this is already under destruction, so undangle
+		forget (me);
+		trace (U"deleting a window or dialog");
+		[super dealloc];
+	}
+	- (GuiThing) getUserData {
+		return d_userData;
+	}
+	- (void) setUserData: (GuiThing) userData {
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiShell));
+		d_userData = static_cast <GuiShell> (userData);
+	}
+	- (void) keyDown: (NSEvent *) theEvent {
+		trace (U"key down");
+	}
+	- (BOOL) windowShouldClose: (id) sender {
+		GuiCocoaShell *widget = (GuiCocoaShell *) sender;
+		GuiShell me = (GuiShell) [widget getUserData];
+		if (my d_goAwayCallback) {
+			trace (U"calling goAwayCallback)");
+			my d_goAwayCallback (my d_goAwayBoss);
+		} else {
+			trace (U"hiding window or dialog");
+			[widget orderOut: nil];
+		}
+		return false;
+	}
+	@end
+#endif
+
+void structGuiShell :: v_destroy () noexcept {
 	#if cocoa
-		if (our d_cocoaWindow) {
-			[our d_cocoaWindow setUserData: NULL];   // undangle reference to this
+		if (our d_cocoaShell) {
+			[our d_cocoaShell setUserData: nullptr];   // undangle reference to this
 			Melder_fatal (U"ordering out?");
-			[our d_cocoaWindow orderOut: nil];
-			[our d_cocoaWindow close];
-			[our d_cocoaWindow release];
-			our d_cocoaWindow = NULL;   // undangle
+			[our d_cocoaShell orderOut: nil];
+			[our d_cocoaShell close];
+			[our d_cocoaShell release];
+			our d_cocoaShell = nullptr;   // undangle
 		}
 	#endif
 	GuiShell_Parent :: v_destroy ();
@@ -41,7 +76,7 @@ int GuiShell_getShellWidth (GuiShell me) {
 	#if gtk
 		width = GTK_WIDGET (my d_gtkWindow) -> allocation.width;
 	#elif cocoa
-        return [my d_cocoaWindow frame].size.width;
+        return [my d_cocoaShell   frame].size.width;
 	#elif motif
 		width = my d_xmShell -> width;
 	#endif
@@ -53,7 +88,7 @@ int GuiShell_getShellHeight (GuiShell me) {
 	#if gtk
 		height = GTK_WIDGET (my d_gtkWindow) -> allocation.height;
 	#elif cocoa
-        return [my d_cocoaWindow frame].size.height;
+        return [my d_cocoaShell   frame].size.height;
 	#elif motif
 		height = my d_xmShell -> height;
 	#endif
@@ -64,11 +99,9 @@ void GuiShell_setTitle (GuiShell me, const char32 *title /* cattable */) {
 	#if gtk
 		gtk_window_set_title (my d_gtkWindow, Melder_peek32to8 (title));
 	#elif cocoa
-		[my d_cocoaWindow setTitle: (NSString *) Melder_peek32toCfstring (title)];
+		[my d_cocoaShell   setTitle: (NSString *) Melder_peek32toCfstring (title)];
 	#elif win
 		SetWindowTextW (my d_xmShell -> window, Melder_peek32toW (title));
-	#elif mac
-		SetWindowTitleWithCFString (my d_xmShell -> nat.window.ptr, (CFStringRef) Melder_peek32toCfstring (title));
 	#endif
 }
 
@@ -77,26 +110,15 @@ void GuiShell_drain (GuiShell me) {
 		//gdk_window_flush (gtk_widget_get_window (my d_gtkWindow));
 		gdk_flush ();
 	#elif cocoa
-        //[my d_cocoaWindow   displayIfNeeded];
-        [my d_cocoaWindow   flushWindow];
-		//[my d_cocoaWindow   display];
+		NSEvent *nsEvent = [NSApp
+			nextEventMatchingMask: NSAnyEventMask
+			untilDate: [NSDate distantPast]
+			inMode: NSDefaultRunLoopMode
+			dequeue: NO
+			];
+		Melder_assert (my d_cocoaShell);
+        [my d_cocoaShell   flushWindow];
 	#elif win
-	#elif mac
-		Melder_assert (my d_xmShell != NULL);
-		Melder_assert (my d_xmShell -> nat.window.ptr != NULL);
-		QDFlushPortBuffer (GetWindowPort (my d_xmShell -> nat.window.ptr), NULL);
-		/*
-		 * The following TRICK cost me half a day to work out.
-		 * It turns out that after a call to QDFlushPortBuffer (),
-		 * it takes MacOS ages to compute a new dirty region while
-		 * the next graphics commands are executed. Such a dirty region
-		 * could well be the region that includes all the pixels drawn by
-		 * the graphics commands, and nothing else. One can imagine
-		 * that such a thing takes five seconds when the graphics is
-		 * a simple Graphics_function () of e.g. noise.
-		 */
-		static Rect bounds = { -32768, -32768, 32767, 32767 };
-		QDAddRectToDirtyRegion (GetWindowPort (my d_xmShell -> nat.window.ptr), & bounds);
 	#endif
 }
 
diff --git a/sys/GuiText.cpp b/sys/GuiText.cpp
index 8e368b3..4a9b754 100644
--- a/sys/GuiText.cpp
+++ b/sys/GuiText.cpp
@@ -1,47 +1,19 @@
 /* GuiText.cpp
  *
- * Copyright (C) 1993-2011,2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2011,2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2003/12/30 this file separated from motifEmulator.c
- * pb 2004/01/01 Mac: MLTE
- * pb 2004/03/11 Mac: tried to make compatible with MacOS X 10.1.x
- * pb 2005/09/01 Mac: GuiText_undo and GuiText_redo
- * pb 2006/10/29 Mac: erased MacOS 9 stuff
- * pb 2006/11/10 comments
- * pb 2007/05/30 GuiText_getStringW
- * pb 2007/05/31 Mac: CreateEditUnicodeTextControl
- * pb 2007/06/01 Mac: erased TextEdit stuff as well as changeCount
- * pb 2007/06/11 GuiText_getSelectionW, GuiText_replaceW
- * pb 2007/06/12 let command-key combinations pass through
- * pb 2007/12/15 erased ASCII versions
- * pb 2007/12/25 Gui
- * sdk 2007/12/27 first GTK version
- * pb 2008/10/05 better implicit selection (namely, none)
- * fb 2010/02/23 GTK
- * fb 2010/02/26 GTK & GuiText_set(Undo|Redo)Item() & history for GTK
- * fb 2010/03/02 history: merge same events together
- * pb 2010/03/11 support Unicode values above 0xFFFF
- * pb 2010/05/14 GTK changedCallback
- * pb 2010/05/30 GTK selections
- * pb 2010/11/28 removed Motif
- * pb 2011/04/06 C++
- * pb,tn 2013    Cocoa
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -49,9 +21,7 @@
 
 Thing_implement (GuiText, GuiControl, 0);
 
-#undef iam
-#define iam(x)  x me = (x) void_me
-#if win || mac && useCarbon
+#if win
 	#define iam_text \
 		Melder_assert (widget -> widgetClass == xmTextWidgetClass); \
 		GuiText me = (GuiText) widget -> userData
@@ -62,14 +32,7 @@ Thing_implement (GuiText, GuiControl, 0);
 
 #if motif
 
-#if mac
-	#define isTextControl(w)  ((w) -> isControl != 0)
-	#define isMLTE(w)  ((w) -> d_macMlteObject != NULL)
-#endif
-
-#if win
-	static HFONT font10, font12, font14, font18, font24;
-#endif
+static HFONT font10, font12, font14, font18, font24;
 
 /*
  * (1) KEYBOARD FOCUS
@@ -141,45 +104,16 @@ void _GuiText_handleFocusLoss (GuiObject widget) {
 	 * 4. on window unmanaging
 	 */
 	if (widget == theGui.textFocus)
-		theGui.textFocus = NULL;
-}
-
-#if mac
-void _GuiMac_clearTheTextFocus (void) {
-	if (theGui.textFocus) {
-		GuiText textFocus = (GuiText) theGui.textFocus -> userData;
-		_GuiMac_clipOnParent (theGui.textFocus);
-		if (isTextControl (theGui.textFocus)) {
-			ClearKeyboardFocus (theGui.textFocus -> macWindow);
-		} else if (isMLTE (textFocus)) {
-			TXNFocus (textFocus -> d_macMlteObject, 0);
-			TXNActivate (textFocus -> d_macMlteObject, textFocus -> d_macMlteFrameId, 0);
-		}
-		GuiMac_clipOff ();
-		_GuiText_handleFocusLoss (theGui.textFocus);
-	}
+		theGui.textFocus = nullptr;
 }
-#endif
 
 void _GuiText_setTheTextFocus (GuiObject widget) {
-	if (widget == NULL || theGui.textFocus == widget
+	if (! widget || theGui.textFocus == widget
 		|| ! widget -> managed) return;   // perhaps not-yet-managed; test: open Praat's DataEditor with a Sound, then type
 	#if gtk
 		gtk_widget_grab_focus (GTK_WIDGET (widget));   // not used: gtk is not 1 when motif is 1
 	#elif win
 		SetFocus (widget -> window);   // will send an EN_SETFOCUS notification, which will call _GuiText_handleFocusReception ()
-	#elif mac
-		iam_text;
-		_GuiMac_clearTheTextFocus ();
-		_GuiMac_clipOnParent (widget);
-		if (isTextControl (widget)) {
-			SetKeyboardFocus (widget -> macWindow, widget -> nat.control.handle, kControlEditTextPart);
-		} else if (isMLTE (me)) {
-			TXNActivate (my d_macMlteObject, my d_macMlteFrameId, 1);
-			TXNFocus (my d_macMlteObject, 1);
-		}
-		GuiMac_clipOff ();
-		_GuiText_handleFocusReception (widget);
 	#endif
 }
 
@@ -188,153 +122,15 @@ void _GuiText_setTheTextFocus (GuiObject widget) {
  */
 void _GuiText_handleValueChanged (GuiObject widget) {
 	iam_text;
-	if (my d_changeCallback) {
-		struct structGuiTextEvent event = { me };
-		my d_changeCallback (my d_changeBoss, & event);
+	if (my d_changedCallback) {
+		struct structGuiTextEvent event { me };
+		my d_changedCallback (my d_changedBoss, & event);
 	}
 }
 
-/*
- * EVENT HANDLING
- */
-
-#if mac
-	int _GuiMacText_tryToHandleReturnKey (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, EventRecord *event) {
-		if (widget && widget -> activateCallback) {
-			widget -> activateCallback (widget, widget -> activateClosure, (XtPointer) event);
-				return 1;
-		}
-		return 0;   /* Not handled. */
-	}
-	int _GuiMacText_tryToHandleClipboardShortcut (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, unsigned char charCode, EventRecord *event) {
-		if (widget) {
-			iam_text;
-			if (isTextControl (widget)) {
-				if (charCode == 'X' || charCode == 'C' || charCode == 'V') {
-					if (! my d_editable && (charCode == 'X' || charCode == 'V')) return 0;
-					CallNextEventHandler (eventHandlerCallRef, eventRef);
-					_GuiText_handleValueChanged (widget);
-					return 1;
-				}
-			} else if (isMLTE (me)) {
-				if (charCode == 'X' && my d_editable) {
-					if (event -> what != autoKey) GuiText_cut (me);
-					return 1;
-				}
-				if (charCode == 'C') {
-					if (event -> what != autoKey) GuiText_copy (me);
-					return 1;
-				}
-				if (charCode == 'V' && my d_editable) {
-					GuiText_paste (me);
-					return 1;
-				}
-			}
-		}
-		return 0;   /* Not handled. */
-	}
-	int _GuiMacText_tryToHandleKey (EventHandlerCallRef eventHandlerCallRef, EventRef eventRef, GuiObject widget, unsigned char keyCode, unsigned char charCode, EventRecord *event) {
-		(void) keyCode;
-		if (widget) {
-			iam_text;
-			if (my d_editable) {
-				_GuiMac_clipOnParent (widget);
-				//Melder_casual (U"char code ", (int) charCode);
-				if (isTextControl (widget)) {
-					CallNextEventHandler (eventHandlerCallRef, eventRef);
-				} else if (isMLTE (me)) {
-					//static long key = 0; Melder_casual (U"key ", ++key);
-					//TXNKeyDown (my macMlteObject, event);   // Tends never to be called.
-					CallNextEventHandler (eventHandlerCallRef, eventRef);
-				}
-				GuiMac_clipOff ();
-				if (charCode > 31 || charCode < 28) {   // arrows do not change the value of the text
-					_GuiText_handleValueChanged (widget);
-				}
-				return 1;
-			}
-		}
-		return 0;   // not handled
-	}
-	void _GuiMacText_handleClick (GuiObject widget, EventRecord *event) {
-		iam_text;
-		_GuiText_setTheTextFocus (widget);
-		_GuiMac_clipOnParent (widget);
-		if (isTextControl (widget)) {
-			HandleControlClick (widget -> nat.control.handle, event -> where, event -> modifiers, NULL);
-		} else if (isMLTE (me)) {
-			LocalToGlobal (& event -> where);
-			TXNClick (my d_macMlteObject, event);   // handles text selection and scrolling
-			GlobalToLocal (& event -> where);
-		}
-		GuiMac_clipOff ();
-	}
-#endif
-
-/*
- * LAYOUT
- */
-#if mac
-	void _GuiMacText_move (GuiObject widget) {
-		iam_text;
-		if (isTextControl (widget)) {
-			_GuiMac_clipOnParent (widget);
-			MoveControl (widget -> nat.control.handle, widget -> rect.left + 3, widget -> rect.top + 3);
-			_GuiMac_clipOffValid (widget);
-		} else if (isMLTE (me)) {
-			TXNSetFrameBounds (my d_macMlteObject, widget -> rect. top, widget -> rect. left,
-				widget -> rect. bottom, widget -> rect. right, my d_macMlteFrameId);
-		}
-	}
-	void _GuiMacText_shellResize (GuiObject widget) {
-		iam_text;
-		/*
-		 * Shell erasure, and therefore text erasure, has been handled by caller.
-		 * Reshowing will be handled by caller.
-		 */
-		if (isTextControl (widget)) {
-			MoveControl (widget -> nat.control.handle, widget -> rect.left + 3, widget -> rect.top + 3);
-			SizeControl (widget -> nat.control.handle, widget -> width - 6, widget -> height - 6);
-			/*
-			 * Control reshowing will explicitly be handled by caller.
-			 */
-		} else if (isMLTE (me)) {
-			TXNSetFrameBounds (my d_macMlteObject, widget -> rect. top, widget -> rect. left,
-				widget -> rect. bottom, widget -> rect. right, my d_macMlteFrameId);
-		}
-	}
-	void _GuiMacText_resize (GuiObject widget) {
-		iam_text;
-		if (isTextControl (widget)) {
-			SizeControl (widget -> nat.control.handle, widget -> width - 6, widget -> height - 6);
-			/*
-			 * Container widgets will have been invalidated.
-			 * So in order not to make the control flash, we validate it.
-			 */
-			_Gui_validateWidget (widget);
-		} else if (isMLTE (me)) {
-			TXNSetFrameBounds (my d_macMlteObject, widget -> rect. top, widget -> rect. left,
-				widget -> rect. bottom, widget -> rect. right, my d_macMlteFrameId);
-		}
-	}
-#endif
-
 void _GuiText_unmanage (GuiObject widget) {
-	#if win
-		_GuiText_handleFocusLoss (widget);
-		_GuiNativeControl_hide (widget);
-	#elif mac
-		iam_text;
-		/*
-		 * Just _GuiText_handleFocusLoss () is not enough,
-		 * because that can leave a visible blinking cursor.
-		 */
-		if (isTextControl (widget)) {
-			if (widget == theGui.textFocus) _GuiMac_clearTheTextFocus ();   /* Remove visible blinking cursor. */
-			_GuiNativeControl_hide (widget);
-		} else if (isMLTE (me)) {
-		}
-	#endif
+	_GuiText_handleFocusLoss (widget);
+	_GuiNativeControl_hide (widget);
 	/*
 	 * The caller will set the unmanage flag to zero, and remanage the parent.
 	 */
@@ -344,131 +140,23 @@ void _GuiText_unmanage (GuiObject widget) {
  * VISIBILITY
  */
 
-#if win
-	void _GuiWinText_destroy (GuiObject widget) {
-		if (widget == theGui.textFocus)
-			theGui.textFocus = NULL;   // remove dangling reference
-		if (widget == widget -> shell -> textFocus)
-			widget -> shell -> textFocus = NULL;   // remove dangling reference
-		iam_text;
-		DestroyWindow (widget -> window);
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiWinText_map (GuiObject widget) {
-		iam_text;
-		ShowWindow (widget -> window, SW_SHOW);
-	}
-#elif mac
-	void _GuiMacText_destroy (GuiObject widget) {
-		if (widget == theGui.textFocus)
-			theGui.textFocus = NULL;   // remove dangling reference
-		if (widget == widget -> shell -> textFocus)
-			widget -> shell -> textFocus = NULL;   // remove dangling reference
-		iam_text;
-		if (isTextControl (widget)) {
-			_GuiMac_clipOnParent (widget);
-			DisposeControl (widget -> nat.control.handle);
-			GuiMac_clipOff ();
-		} else if (isMLTE (me)) {
-			TXNDeleteObject (my d_macMlteObject);
-		}
-		forget (me);   // NOTE: my widget is not destroyed here
-	}
-	void _GuiMacText_update (GuiObject widget) {
-		iam_text;
-		_GuiMac_clipOnParent (widget);
-		if (isTextControl (widget)) {
-			Draw1Control (widget -> nat.control.handle);
-		} else if (isMLTE (me)) {
-			TXNDraw (my d_macMlteObject, NULL);
-		}
-		GuiMac_clipOff ();
-	}
-	void _GuiMacText_map (GuiObject widget) {
-		iam_text;
-		if (isTextControl (widget)) {
-			_GuiNativeControl_show (widget);
-		} else if (isMLTE (me)) {
-		}
-	}
-#endif
-
-
-#endif
-
-
-#if motif
-
-static long NativeText_getLength (GuiObject widget) {
-	#if win
-		return Edit_GetTextLength (widget -> window);   // in UTF-16 code units
-	#elif mac
-		iam_text;
-		if (isTextControl (widget)) {
-			Size size;
-			CFStringRef cfString;
-			GetControlData (widget -> nat.control.handle, kControlEntireControl, kControlEditTextCFStringTag, sizeof (CFStringRef), & cfString, NULL);
-			size = CFStringGetLength (cfString);
-			CFRelease (cfString);
-			return size;
-		} else if (isMLTE (me)) {
-			/*
-			 * From the reference page of TXNDataSize:
-			 * "If you are using Unicode and you want to know the number of characters,
-			 * divide the returned ByteCount value by sizeof(UniChar) or 2,
-			 * since MLTE uses the 16-bit Unicode Transformation Format (UTF-16)."
-			 */
-			return TXNDataSize (my d_macMlteObject) / sizeof (UniChar);
-		}
-		return 0;   // should not occur
-	#endif
+void _GuiWinText_destroy (GuiObject widget) {
+	if (widget == theGui.textFocus)
+		theGui.textFocus = nullptr;   // remove dangling reference
+	if (widget == widget -> shell -> textFocus)
+		widget -> shell -> textFocus = nullptr;   // remove dangling reference
+	iam_text;
+	DestroyWindow (widget -> window);
+	forget (me);   // NOTE: my widget is not destroyed here
 }
-
-#if mac
-static void NativeText_getText (GuiObject widget, char32 *buffer, long length) {
+void _GuiWinText_map (GuiObject widget) {
 	iam_text;
-	if (isTextControl (widget)) {
-		CFStringRef cfString;
-		GetControlData (widget -> nat.control.handle, kControlEntireControl, kControlEditTextCFStringTag, sizeof (CFStringRef), & cfString, NULL);
-		UniChar *macText = Melder_malloc_f (UniChar, length + 1);
-		CFRange range = { 0, length };
-		CFStringGetCharacters (cfString, range, macText);
-		CFRelease (cfString);
-		long j = 0;
-		for (long i = 0; i < length; i ++) {
-			char32 kar = macText [i];
-			if (kar < 0x00D800 || kar > 0x00DFFF) {
-				buffer [j ++] = kar;
-			} else {
-				Melder_assert (kar >= 0x00D800 && kar <= 0x00DBFF);
-				char32 kar1 = macText [++ i];
-				Melder_assert (kar1 >= 0x00DC00 && kar1 <= 0x00DFFF);
-				buffer [j ++] = 0x010000 + ((kar & 0x0003FF) << 10) + (kar1 & 0x0003FF);
-			}
-		}
-		buffer [j] = U'\0';
-		Melder_free (macText);
-	} else if (isMLTE (me)) {
-		Handle han;
-		TXNGetDataEncoded (my d_macMlteObject, 0, length, & han, kTXNUnicodeTextData);
-		long j = 0;
-		for (long i = 0; i < length; i ++) {
-			char32 kar = ((UniChar *) *han) [i];
-			if (kar < 0x00D800 || kar > 0x00DFFF) {
-				buffer [j ++] = kar;
-			} else {
-				Melder_assert (kar >= 0x00D800 && kar <= 0x00DBFF);
-				char32 kar1 = ((UniChar *) *han) [++ i];
-				Melder_assert (kar1 >= 0x00DC00 && kar1 <= 0x00DFFF);
-				buffer [j ++] = 0x010000 + ((kar & 0x0003FF) << 10) + (kar1 & 0x0003FF);
-			}
-		}
-		buffer [j] = U'\0';
-		DisposeHandle (han);
-	}
-	buffer [length] = L'\0';   // superfluous?
+	ShowWindow (widget -> window, SW_SHOW);
+}
+
+static long NativeText_getLength (GuiObject widget) {
+	return Edit_GetTextLength (widget -> window);   // in UTF-16 code units
 }
-#endif
 
 /*
  * SELECTION
@@ -476,22 +164,8 @@ static void NativeText_getText (GuiObject widget, char32 *buffer, long length) {
 
 static int NativeText_getSelectionRange (GuiObject widget, long *out_left, long *out_right) {
 	unsigned long left, right;
-	#ifndef unix
 	Melder_assert (MEMBER (widget, Text));
-	#endif
-	#if win
-		SendMessage (widget -> window, EM_GETSEL, (WPARAM) & left, (LPARAM) & right);   // 32-bit (R&N: 579)
-	#elif mac
-		iam_text;
-		if (isTextControl (widget)) {
-			ControlEditTextSelectionRec rec;
-			GetControlData (widget -> nat.control.handle, kControlEntireControl, kControlEditTextSelectionTag, sizeof (rec), & rec, NULL);
-			left = rec.selStart;
-			right = rec. selEnd;
-		} else if (isMLTE (me)) {
-			TXNGetSelection (my d_macMlteObject, & left, & right);
-		}
-	#endif
+	SendMessage (widget -> window, EM_GETSEL, (WPARAM) & left, (LPARAM) & right);   // 32-bit (R&N: 579)
 	if (out_left) *out_left = left;
 	if (out_right) *out_right = right;
 	return right > left;
@@ -501,28 +175,15 @@ static int NativeText_getSelectionRange (GuiObject widget, long *out_left, long
  * PACKAGE
  */
 
-void _GuiText_init (void) {
-	#if mac
-		//short font;
-		TXNMacOSPreferredFontDescription defaults = { 0 };
-		//GetFNum ("\006Monaco", & font);
-		//defaults. fontID = font;
-		defaults. pointSize = 0x000B0000;
-		defaults. fontStyle = kTXNDefaultFontStyle;
-		defaults. encoding  = /*kTXNMacOSEncoding*/ kTXNSystemDefaultEncoding;
-		TXNInitTextension (& defaults, 1, 0);
-	#endif
+void _GuiText_init () {
 }
 
-void _GuiText_exit (void) {
-	#if mac
-		TXNTerminateTextension (); 
-	#endif
+void _GuiText_exit () {
 }
 
 #endif
 
-#if !mac
+#if ! mac
 	/*
 	 * Undo/Redo history functions
 	 */
@@ -564,17 +225,16 @@ void _GuiText_exit (void) {
 
 	/* Tests the previous elements of the history for mergability with the one to insert given via parameters.
 	 * If successful, it returns a pointer to the last valid entry in the merged history list, otherwise
-	 * returns NULL.
+	 * returns nullptr.
 	 * Specifically the function expands the previous insert/delete event(s)
 	 *  - with the current, if current also is an insert/delete event and the ranges of previous and current event match
 	 *  - with the previous delete and current insert event, in case the ranges of both event-pairs respectively match
 	 */
-	static history_entry * history_addAndMerge (void *void_me, history_data text_new, long first, long last, bool deleted) {
-		iam(GuiText);
-		history_entry *he = NULL;
+	static history_entry * history_addAndMerge (GuiText me, history_data text_new, long first, long last, bool deleted) {
+		history_entry *he = nullptr;
 		
-		if (!(my d_prev))
-			return NULL;
+		if (! my d_prev)
+			return nullptr;
 		
 		if (my d_prev->type_del == deleted) {
 			// extend the last history event by this one
@@ -605,7 +265,7 @@ void _GuiText_exit (void) {
 			}
 		} else {
 			// prev->type_del != deleted, no simple expansion possible, check for double expansion
-			if (!deleted && my d_prev->prev && my d_prev->prev->prev) {
+			if (! deleted && my d_prev->prev && my d_prev->prev->prev) {
 				history_entry *del_one = my d_prev;
 				history_entry *ins_mult = del_one->prev;
 				history_entry *del_mult = ins_mult->prev;
@@ -613,7 +273,7 @@ void _GuiText_exit (void) {
 				long from2 = ins_mult->first, to2 = ins_mult->last;
 				long from3 = del_one->first, to3 = del_one->last;
 				if (from3 == first && to3 == last && from2 == from1 && to2 == to1 && to1 == first &&
-						!ins_mult->type_del && del_mult->type_del) {
+						! ins_mult->type_del && del_mult->type_del) {
 					// most common for overwriting text
 					/* So the layout is as follows:
 					 *
@@ -643,9 +303,8 @@ void _GuiText_exit (void) {
 	 *   text_new  a newly allocated string that will be freed by a history function
 	 *             (history_add or history_clear)
 	 */
-	static void history_add (void *void_me, history_data text_new, long first, long last, bool deleted) {
-		iam (GuiText);
-		
+	static void history_add (GuiText me, history_data text_new, long first, long last, bool deleted) {
+
 		// delete all newer entries; from here on there is no 'Redo' until the next 'Undo' is performed
 		history_entry *old_hnext = my d_next, *hnext;
 		while (old_hnext) {
@@ -654,42 +313,39 @@ void _GuiText_exit (void) {
 			free (old_hnext);
 			old_hnext = hnext;
 		}
-		my d_next = NULL;
+		my d_next = nullptr;
 		
-		history_entry *he = history_addAndMerge (void_me, text_new, first, last, deleted);
-		if (he == NULL) {
-			he = (history_entry *) malloc (sizeof (history_entry));
+		history_entry *he = history_addAndMerge (me, text_new, first, last, deleted);
+		if (! he) {
+			he = (history_entry *) malloc (sizeof *he);
 			he->first = first;
 			he->last = last;
 			he->type_del = deleted;
 			he->text = text_new;
 			
 			he->prev = my d_prev;
-			he->next = NULL;
+			he->next = nullptr;
 			if (my d_prev)
 				my d_prev->next = he;
 		}
 		my d_prev = he;
-		he->next = NULL;
+		he->next = nullptr;
 		
 		if (my d_undo_item) GuiThing_setSensitive (my d_undo_item, true);
 		if (my d_redo_item) GuiThing_setSensitive (my d_redo_item, false);
 	}
 
-	static bool history_has_undo (void *void_me) {
-		iam (GuiText);
-		return my d_prev != NULL;
+	static bool history_has_undo (GuiText me) {
+		return !! my d_prev;
 	}
 
-	static bool history_has_redo (void *void_me) {
-		iam (GuiText);
-		return my d_next != NULL;
+	static bool history_has_redo (GuiText me) {
+		return !! my d_next;
 	}
 
-	static void history_do (void *void_me, bool undo) {
-		iam (GuiText);
+	static void history_do (GuiText me, bool undo) {
 		history_entry *he = undo ? my d_prev : my d_next;
-		if (he == NULL) // TODO: this function should not be called in that case
+		if (! he) // TODO: this function should not be called in that case
 			return;
 		
 		my d_history_change = 1;
@@ -712,27 +368,26 @@ void _GuiText_exit (void) {
 		if (my d_redo_item) GuiThing_setSensitive (my d_redo_item, history_has_redo (me));
 	}
 
-	static void history_clear(void *void_me) {
-		iam(GuiText);
+	static void history_clear (GuiText me) {
 		history_entry *h1, *h2;
 		
 		h1 = my d_prev;
 		while (h1) {
 			h2 = h1->prev;
-			free(h1->text);
-			free(h1);
+			free (h1->text);
+			free (h1);
 			h1 = h2;
 		}
-		my d_prev = NULL;
+		my d_prev = nullptr;
 		
 		h1 = my d_next;
 		while (h1) {
 			h2 = h1->next;
-			free(h1->text);
-			free(h1);
+			free (h1->text);
+			free (h1);
 			h1 = h2;
 		}
-		my d_next = NULL;
+		my d_next = nullptr;
 		
 		if (my d_undo_item) GuiThing_setSensitive (my d_undo_item, false);
 		if (my d_redo_item) GuiThing_setSensitive (my d_redo_item, false);
@@ -767,7 +422,7 @@ void _GuiText_exit (void) {
 		if (my d_history_change) return;
 		int from_pos = gtk_text_iter_get_offset (from);
 		int to_pos = gtk_text_iter_get_offset (to);
-		history_add (me, gtk_text_buffer_get_text (buffer, from, to, FALSE), from_pos, to_pos, 1);
+		history_add (me, gtk_text_buffer_get_text (buffer, from, to, false), from_pos, to_pos, 1);
 	}
 	
 	static void _GuiGtkTextBuf_history_insert_cb (GtkTextBuffer *buffer, GtkTextIter *from, gchar *utf8_text, gint len, gpointer void_me) {
@@ -784,17 +439,17 @@ void _GuiText_exit (void) {
 	static void _GuiGtkText_valueChangedCallback (GuiObject widget, gpointer void_me) {
 		iam (GuiText);
 		trace (U"begin");
-		Melder_assert (me != NULL);
-		if (my d_changeCallback != NULL) {
-			struct structGuiTextEvent event = { me };
-			my d_changeCallback (my d_changeBoss, & event);
+		Melder_assert (me);
+		if (my d_changedCallback) {
+			struct structGuiTextEvent event { me };
+			my d_changedCallback (my d_changedBoss, & event);
 		}
 	}
 	
 	static void _GuiGtkText_destroyCallback (GuiObject widget, gpointer void_me) {
 		(void) widget;
 		iam (GuiText);
-		Melder_assert (me != NULL);
+		Melder_assert (me);
 		Melder_assert (my classInfo == classGuiText);
 		trace (U"begin");
 		if (my d_undo_item) {
@@ -805,8 +460,8 @@ void _GuiText_exit (void) {
 			trace (U"redo");
 			//g_object_unref (my d_redo_item -> d_widget);
 		}
-		my d_undo_item = NULL;
-		my d_redo_item = NULL;
+		my d_undo_item = nullptr;
+		my d_redo_item = nullptr;
 		trace (U"history");
 		history_clear (me);
 		forget (me);
@@ -821,19 +476,19 @@ void _GuiText_exit (void) {
 		trace (U"deleting a text field");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiText));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiText));
 		d_userData = static_cast <GuiText> (userData);
 	}
 	- (void) textDidChange: (NSNotification *) notification {
 		(void) notification;
 		GuiText me = d_userData;
-		if (me && my d_changeCallback) {
-			struct structGuiTextEvent event = { me };
-			my d_changeCallback (my d_changeBoss, & event);
+		if (me && my d_changedCallback) {
+			struct structGuiTextEvent event { me };
+			my d_changedCallback (my d_changedBoss, & event);
 		}
 	}
 	@end
@@ -846,11 +501,11 @@ void _GuiText_exit (void) {
 		trace (U"deleting a text view");
 		[super dealloc];
 	}
-	- (GuiThing) userData {
+	- (GuiThing) getUserData {
 		return d_userData;
 	}
 	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiText));
+		Melder_assert (userData == nullptr || Thing_isa (userData, classGuiText));
 		d_userData = static_cast <GuiText> (userData);
 	}
 	/*
@@ -864,26 +519,25 @@ void _GuiText_exit (void) {
 		(void) replacementString;
 		trace (U"changing text to: ", Melder_peek8to32 ([replacementString UTF8String]));
 		GuiText me = d_userData;
-		if (me && my d_changeCallback) {
-			struct structGuiTextEvent event = { me };
-			my d_changeCallback (my d_changeBoss, & event);
+		if (me && my d_changedCallback) {
+			struct structGuiTextEvent event { me };
+			my d_changedCallback (my d_changedBoss, & event);
 		}
 		return YES;
 	}
 	@end
 #elif win
-#elif mac
 #endif
 
 GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom, uint32 flags) {
-	GuiText me = Thing_new (GuiText);
+	autoGuiText me = Thing_new (GuiText);
 	my d_shell = parent -> d_shell;
 	my d_parent = parent;
 	#if gtk
-		trace (U"before creating a GTK text widget: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"before creating a GTK text widget: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		if (flags & GuiText_SCROLLED) {
 			GtkWrapMode ww;
-			GuiObject scrolled = gtk_scrolled_window_new (NULL, NULL);
+			GuiObject scrolled = gtk_scrolled_window_new (nullptr, nullptr);
 			gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 			my d_widget = gtk_text_view_new ();
 			gtk_container_add (GTK_CONTAINER (scrolled), GTK_WIDGET (my d_widget));
@@ -895,34 +549,34 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 				ww = GTK_WRAP_NONE;
 			gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (my d_widget), ww);
 			GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (my d_widget));
-			g_signal_connect (G_OBJECT (buffer), "delete-range", G_CALLBACK (_GuiGtkTextBuf_history_delete_cb), me);
-			g_signal_connect (G_OBJECT (buffer), "insert-text", G_CALLBACK (_GuiGtkTextBuf_history_insert_cb), me);
-			g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (_GuiGtkText_valueChangedCallback), me);
-			_GuiObject_setUserData (my d_widget, me);
-			_GuiObject_setUserData (scrolled, me);
+			g_signal_connect (G_OBJECT (buffer), "delete-range", G_CALLBACK (_GuiGtkTextBuf_history_delete_cb), me.get());
+			g_signal_connect (G_OBJECT (buffer), "insert-text", G_CALLBACK (_GuiGtkTextBuf_history_insert_cb), me.get());
+			g_signal_connect (G_OBJECT (buffer), "changed", G_CALLBACK (_GuiGtkText_valueChangedCallback), me.get());
+			_GuiObject_setUserData (my d_widget, me.get());
+			_GuiObject_setUserData (scrolled, me.get());
 			my v_positionInForm (scrolled, left, right, top, bottom, parent);
 		} else {
 			my d_widget = gtk_entry_new ();
 			gtk_editable_set_editable (GTK_EDITABLE (my d_widget), (flags & GuiText_NONEDITABLE) == 0);
-			g_signal_connect (G_OBJECT (my d_widget), "delete-text", G_CALLBACK (_GuiGtkEntry_history_delete_cb), me);
-			g_signal_connect (G_OBJECT (my d_widget), "insert-text", G_CALLBACK (_GuiGtkEntry_history_insert_cb), me);
-			g_signal_connect (GTK_EDITABLE (my d_widget), "changed", G_CALLBACK (_GuiGtkText_valueChangedCallback), me);
+			g_signal_connect (G_OBJECT (my d_widget), "delete-text", G_CALLBACK (_GuiGtkEntry_history_delete_cb), me.get());
+			g_signal_connect (G_OBJECT (my d_widget), "insert-text", G_CALLBACK (_GuiGtkEntry_history_insert_cb), me.get());
+			g_signal_connect (GTK_EDITABLE (my d_widget), "changed", G_CALLBACK (_GuiGtkText_valueChangedCallback), me.get());
 			//GTK_WIDGET_UNSET_FLAGS (my d_widget, GTK_CAN_DEFAULT);
-			_GuiObject_setUserData (my d_widget, me);
+			_GuiObject_setUserData (my d_widget, me.get());
 			my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 			gtk_entry_set_activates_default (GTK_ENTRY (my d_widget), true);
 		}
-		trace (U"after creating a GTK text widget: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
-		my d_prev = NULL;
-		my d_next = NULL;
+		trace (U"after creating a GTK text widget: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+		my d_prev = nullptr;
+		my d_next = nullptr;
 		my d_history_change = 0;
-		my d_undo_item = NULL;
-		my d_redo_item = NULL;
-		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkText_destroyCallback), me);
+		my d_undo_item = nullptr;
+		my d_redo_item = nullptr;
+		g_signal_connect (G_OBJECT (my d_widget), "destroy", G_CALLBACK (_GuiGtkText_destroyCallback), me.get());
 	#elif cocoa
 		if (flags & GuiText_SCROLLED) {
 			my d_cocoaScrollView = [[GuiCocoaScrolledWindow alloc] init];
-			[my d_cocoaScrollView setUserData: NULL];   // because those user data can only be GuiScrolledWindow
+			[my d_cocoaScrollView setUserData: nullptr];   // because those user data can only be GuiScrolledWindow
 			my d_widget = my d_cocoaScrollView;
 			my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 			[my d_cocoaScrollView setBorderType: NSNoBorder];
@@ -931,7 +585,7 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 			[my d_cocoaScrollView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
 			NSSize contentSize = [my d_cocoaScrollView contentSize];
 			my d_cocoaTextView = [[GuiCocoaTextView alloc] initWithFrame: NSMakeRect (0, 0, contentSize. width, contentSize. height)];
-			[my d_cocoaTextView setUserData: me];
+			[my d_cocoaTextView setUserData: me.get()];
 			if (Melder_systemVersion < 101100) {
 				[my d_cocoaTextView setMinSize: NSMakeSize (0.0, contentSize.height)];
 			} else {
@@ -943,7 +597,8 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 			[my d_cocoaTextView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
 			[[my d_cocoaTextView textContainer] setContainerSize: NSMakeSize (FLT_MAX, FLT_MAX)];
 			[[my d_cocoaTextView textContainer] setWidthTracksTextView: NO];
-			[my d_cocoaScrollView setDocumentView: my d_cocoaTextView];
+			[my d_cocoaScrollView setDocumentView: my d_cocoaTextView];   // the scroll view will own the text view?
+			[my d_cocoaTextView release];   // so we release the text view itself
 			[[my d_cocoaScrollView window] makeFirstResponder: my d_cocoaTextView];
 			static NSFont *theTextFont;
 			if (! theTextFont) {
@@ -961,7 +616,7 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 		} else {
 			my d_widget = [[GuiCocoaTextField alloc] init];
 			my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-			[(GuiCocoaTextField *) my d_widget   setUserData: me];
+			[(GuiCocoaTextField *) my d_widget   setUserData: me.get()];
 			[(NSTextField *) my d_widget   setEditable: YES];
 			static NSFont *theTextFont;
 			if (! theTextFont) {
@@ -971,14 +626,14 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 		}
 	#elif win
 		my d_widget = _Gui_initializeWidget (xmTextWidgetClass, parent -> d_widget, flags & GuiText_SCROLLED ? U"scrolledText" : U"text");
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		my d_editable = (flags & GuiText_NONEDITABLE) == 0;
-		my d_widget -> window = CreateWindow (L"edit", NULL, WS_CHILD | WS_BORDER
+		my d_widget -> window = CreateWindow (L"edit", nullptr, WS_CHILD | WS_BORDER
 			| ( flags & GuiText_WORDWRAP ? ES_AUTOVSCROLL : ES_AUTOHSCROLL )
 			| ES_MULTILINE | WS_CLIPSIBLINGS
 			| ( flags & GuiText_SCROLLED ? WS_HSCROLL | WS_VSCROLL : 0 ),
 			my d_widget -> x, my d_widget -> y, my d_widget -> width, my d_widget -> height,
-			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, NULL);
+			my d_widget -> parent -> window, (HMENU) 1, theGui.instance, nullptr);
 		SetWindowLongPtr (my d_widget -> window, GWLP_USERDATA, (LONG_PTR) my d_widget);
 		if (! font10) {
 			font10 = CreateFont (13, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0/*FIXED_PITCH | FF_MODERN*/, /*L"Doulos SIL"*/L"Courier New");
@@ -987,7 +642,7 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 			font18 = CreateFont (24, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0/*FIXED_PITCH | FF_MODERN*/, /*L"Doulos SIL"*/L"Courier New");
 			font24 = CreateFont (32, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0/*FIXED_PITCH | FF_MODERN*/, /*L"Doulos SIL"*/L"Courier New");
 		}
-		SetWindowFont (my d_widget -> window, font12 /*theScrolledHint ? font : GetStockFont (ANSI_VAR_FONT)*/, FALSE);
+		SetWindowFont (my d_widget -> window, font12 /*theScrolledHint ? font : GetStockFont (ANSI_VAR_FONT)*/, false);
 		Edit_LimitText (my d_widget -> window, 0);
 		my v_positionInForm (my d_widget, left, right, top, bottom, parent);
 		/*
@@ -996,52 +651,9 @@ GuiText GuiText_create (GuiForm parent, int left, int right, int top, int bottom
 		if (! my d_widget -> shell -> textFocus) {
 			my d_widget -> shell -> textFocus = my d_widget;   // even if not-yet-managed. But in that case it will not receive global focus
 		}
-	#elif mac
-		if (flags & GuiText_SCROLLED) {
-			my d_widget = _Gui_initializeWidget (xmTextWidgetClass, parent -> d_widget, U"scrolledText");
-			_GuiObject_setUserData (my d_widget, me);
-			my d_editable = (flags & GuiText_NONEDITABLE) == 0;
-			TXNLongRect destRect;
-			TXNMargins margins;
-			TXNControlData controlData;
-			TXNControlTag controlTag = kTXNMarginsTag;
-			TXNNewObject (NULL,   // no file
-				my d_widget -> macWindow, & my d_widget -> rect, kTXNWantHScrollBarMask | kTXNWantVScrollBarMask
-					| kTXNMonostyledTextMask | kTXNDrawGrowIconMask,
-				kTXNTextEditStyleFrameType, kTXNTextensionFile,
-				/*kTXNMacOSEncoding*/ kTXNSystemDefaultEncoding, & my d_macMlteObject, & my d_macMlteFrameId, me);
-			destRect. left = 0;
-			destRect. top = 0;
-			destRect. right = 10000;
-			destRect. bottom = 2000000000;
-			TXNSetRectBounds (my d_macMlteObject, NULL, & destRect, FALSE);
-			margins. leftMargin = 3;
-			margins. topMargin = 3;
-			margins. rightMargin = 0;
-			margins. bottomMargin = 0;
-			controlData. marginsPtr = & margins;
-			TXNSetTXNObjectControls (my d_macMlteObject, FALSE, 1, & controlTag, & controlData);
-			my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		} else {
-			my d_widget = _Gui_initializeWidget (xmTextWidgetClass, parent -> d_widget, U"text");
-			_GuiObject_setUserData (my d_widget, me);
-			my d_editable = (flags & GuiText_NONEDITABLE) == 0;
-			Rect r = my d_widget -> rect;
-			InsetRect (& r, 3, 3);
-			CreateEditUnicodeTextControl (my d_widget -> macWindow, & r, NULL, false, NULL, & my d_widget -> nat.control.handle);
-			SetControlReference (my d_widget -> nat.control.handle, (long) my d_widget);
-			my d_widget -> isControl = TRUE;
-			my v_positionInForm (my d_widget, left, right, top, bottom, parent);
-		}
-		/*
-		 * The first created text widget shall attract the input focus.
-		 */
-		if (! my d_widget -> shell -> textFocus) {
-			my d_widget -> shell -> textFocus = my d_widget;   // even if not-yet-managed; but in that case it will not receive global focus
-		}
 	#endif
 	
-	return me;
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiText GuiText_createShown (GuiForm parent, int left, int right, int top, int bottom, uint32 flags) {
@@ -1066,15 +678,8 @@ void GuiText_copy (GuiText me) {
 			[[[(GuiCocoaTextField *) my d_widget   window]   fieldEditor: NO   forObject: nil] copy: nil];
 		}
 	#elif win
-		if (! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
+		if (! NativeText_getSelectionRange (my d_widget, nullptr, nullptr)) return;
 		SendMessage (my d_widget -> window, WM_COPY, 0, 0);
-	#elif mac
-		if (! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
-		if (isTextControl (my d_widget)) {
-			HandleControlKey (my d_widget -> nat.control.handle, 0, 'C', cmdKey);
-		} else if (isMLTE (me)) {
-			TXNCopy (my d_macMlteObject);
-		}
 	#endif
 }
 
@@ -1094,19 +699,9 @@ void GuiText_cut (GuiText me) {
 			[[[(GuiCocoaTextField *) my d_widget   window]   fieldEditor: NO   forObject: nil] cut: nil];
 		}
 	#elif win
-		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
+		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, nullptr, nullptr)) return;
 		SendMessage (my d_widget -> window, WM_CUT, 0, 0);   // this will send the EN_CHANGE message, hence no need to call the valueChangedCallbacks
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
-		if (isTextControl (my d_widget)) {
-			_GuiMac_clipOnParent (my d_widget);
-			HandleControlKey (my d_widget -> nat.control.handle, 0, 'X', cmdKey);
-			GuiMac_clipOff ();
-		} else if (isMLTE (me)) {
-			TXNCut (my d_macMlteObject);
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
@@ -1128,7 +723,7 @@ char32 * GuiText_getSelection (GuiText me) {
 			if (gtk_text_buffer_get_has_selection (textBuffer)) {   // at least one character selected?
 				GtkTextIter start, end;
 				gtk_text_buffer_get_selection_bounds (textBuffer, & start, & end);
-				gchar *text = gtk_text_buffer_get_text (textBuffer, & start, & end, TRUE);
+				gchar *text = gtk_text_buffer_get_text (textBuffer, & start, & end, true);
 				char32 *result = Melder_8to32 (text);
 				g_free (text);
 				return result;
@@ -1165,32 +760,8 @@ char32 * GuiText_getSelection (GuiText me) {
 			Melder_killReturns_inline (result);   // AFTER zooming!
 			return result;
 		}
-	#elif mac
-		long start, end;
-		NativeText_getSelectionRange (my d_widget, & start, & end);
-		if (end > start) {   // at least one character selected?
-			/*
-			 * Get all text.
-			 */
-			long length = NativeText_getLength (my d_widget);
-			char32 *result = Melder_malloc_f (char32, length + 1);
-			NativeText_getText (my d_widget, result, length);
-			/*
-			 * Zoom in on selection.
-			 */
-			#if mac
-				for (long i = 0; i < start; i ++) if (result [i] > 0xFFFF) { start --; end --; }
-				for (long i = start; i < end; i ++) if (result [i] > 0xFFFF) { end --; }
-			#endif
-			length = end - start;
-			memmove (result, result + start, length * sizeof (char32));   // not because of realloc, but because of free!
-			result [length] = '\0';
-			result = (char32 *) Melder_realloc_f (result, (length + 1) * sizeof (char32));   // optional
-			Melder_killReturns_inline (result);   // AFTER zooming!
-			return result;
-		}
 	#endif
-	return NULL;   // zero characters selected
+	return nullptr;   // zero characters selected
 }
 
 char32 * GuiText_getString (GuiText me) {
@@ -1211,7 +782,7 @@ char32 * GuiText_getStringAndSelectionPosition (GuiText me, long *first, long *l
 			GtkTextIter start, end;
 			gtk_text_buffer_get_start_iter (textBuffer, & start);
 			gtk_text_buffer_get_end_iter (textBuffer, & end);
-			gchar *text = gtk_text_buffer_get_text (textBuffer, & start, & end, TRUE);   // TODO: Hidden chars ook maar doen he?
+			gchar *text = gtk_text_buffer_get_text (textBuffer, & start, & end, true);   // TODO: Hidden chars ook maar doen he?
 			char32 *result = Melder_8to32 (text);
 			g_free (text);
 			gtk_text_buffer_get_selection_bounds (textBuffer, & start, & end);
@@ -1219,7 +790,7 @@ char32 * GuiText_getStringAndSelectionPosition (GuiText me, long *first, long *l
 			*last = gtk_text_iter_get_offset (& end);
 			return result;
 		}
-		return NULL;
+		return nullptr;
 	#elif cocoa
 		if (my d_cocoaTextView) {
 			NSString *nsString = [my d_cocoaTextView   string];
@@ -1267,15 +838,8 @@ char32 * GuiText_getStringAndSelectionPosition (GuiText me, long *first, long *l
 		Melder_free (bufferW);
 		Melder_killReturns_inline (result);
 		return result;
-	#elif mac
-		long length = NativeText_getLength (my d_widget);   // UTF-16 length; should be enough for UTF-32 buffer
-		char32 *result = Melder_malloc_f (char32, length + 1);
-		NativeText_getText (my d_widget, result, length);
-		NativeText_getSelectionRange (my d_widget, first, last);   // 'first' and 'last' are expressed in UTF-16 words
-		for (long i = 0; i < *first; i ++) if (result [i] > 0xFFFF) { (*first) --; (*last) --; }
-		for (long i = *first; i < *last; i ++) if (result [i] > 0xFFFF) { (*last) --; }
-		Melder_killReturns_inline (result);
-		return result;
+	#else
+		return nullptr;
 	#endif
 }
 
@@ -1286,7 +850,7 @@ void GuiText_paste (GuiText me) {
 		} else if (G_OBJECT_TYPE (G_OBJECT (my d_widget)) == GTK_TYPE_TEXT_VIEW) {
 			GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (my d_widget));
 			GtkClipboard *cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
-			gtk_text_buffer_paste_clipboard (buffer, cb, NULL, gtk_text_view_get_editable (GTK_TEXT_VIEW (my d_widget)));
+			gtk_text_buffer_paste_clipboard (buffer, cb, nullptr, gtk_text_view_get_editable (GTK_TEXT_VIEW (my d_widget)));
 		}
 	#elif cocoa
 		if (my d_cocoaTextView) {
@@ -1298,16 +862,6 @@ void GuiText_paste (GuiText me) {
 		if (! my d_editable) return;
 		SendMessage (my d_widget -> window, WM_PASTE, 0, 0);   // this will send the EN_CHANGE message, hence no need to call the valueChangedCallbacks
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		if (! my d_editable) return;
-		if (isTextControl (my d_widget)) {
-			_GuiMac_clipOnParent (my d_widget);
-			HandleControlKey (my d_widget -> nat.control.handle, 0, 'V', cmdKey);
-			GuiMac_clipOff ();
-		} else if (isMLTE (me)) {
-			TXNPaste (my d_macMlteObject);
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
@@ -1316,11 +870,6 @@ void GuiText_redo (GuiText me) {
 		if (my d_cocoaTextView) {
 			[[my d_cocoaTextView   undoManager] redo];
 		}
-	#elif mac
-		if (isMLTE (me)) {
-			TXNRedo (my d_macMlteObject);
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#else
 		history_do (me, 0);
 	#endif
@@ -1332,26 +881,16 @@ void GuiText_remove (GuiText me) {
 			gtk_editable_delete_selection (GTK_EDITABLE (my d_widget));
 		} else if (G_OBJECT_TYPE (G_OBJECT (my d_widget)) == GTK_TYPE_TEXT_VIEW) {
 			GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (my d_widget));
-			gtk_text_buffer_delete_selection (buffer, TRUE, gtk_text_view_get_editable (GTK_TEXT_VIEW (my d_widget)));
+			gtk_text_buffer_delete_selection (buffer, true, gtk_text_view_get_editable (GTK_TEXT_VIEW (my d_widget)));
 		}
 	#elif cocoa
 		if (my d_cocoaTextView) {
 			[my d_cocoaTextView   delete: nil];
 		}
 	#elif win
-		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
+		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, nullptr, nullptr)) return;
 		SendMessage (my d_widget -> window, WM_CLEAR, 0, 0);   // this will send the EN_CHANGE message, hence no need to call the valueChangedCallbacks
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		if (! my d_editable || ! NativeText_getSelectionRange (my d_widget, NULL, NULL)) return;
-		if (isTextControl (my d_widget)) {
-			_GuiMac_clipOnParent (my d_widget);
-			HandleControlKey (my d_widget -> nat.control.handle, 0, 8, 0);   // backspace key
-			GuiMac_clipOff ();
-		} else if (isMLTE (me)) {
-			TXNClear (my d_macMlteObject);
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
@@ -1405,55 +944,6 @@ void GuiText_replace (GuiText me, long from_pos, long to_pos, const char32 *text
 		Edit_ReplaceSel (my d_widget -> window, Melder_peek32toW (winText));
 		Melder_free (winText);
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		size_t length = str32len (text);
-		char32 *macText = Melder_malloc_f (char32, length + 1);
-		Melder_assert (my d_widget -> widgetClass == xmTextWidgetClass);
-		str32ncpy (macText, text, length);
-		macText [length] = '\0';
-		/*
-		 * Replace all LF with CR.
-		 */
-		for (size_t i = 0; i < length; i ++) if (macText [i] == '\n') macText [i] = 13;
-		/*
-		 * We DON'T replace any text without selecting it, so we can deselect any other text,
-		 * thus allowing ourselves to select [from_pos, to_pos] and use selection replacement.
-		 */
-		if (my d_widget -> managed) _GuiMac_clipOnParent (my d_widget);
-		if (isTextControl (my d_widget)) {
-			// BUG: this is not UTF-32-savvy; this is acceptable because it isn't used in Praat
-			long oldLength = NativeText_getLength (my d_widget);
-			char32 *totalText = Melder_malloc_f (char32, oldLength - (to_pos - from_pos) + length + 1);
-			char32 *oldText = Melder_malloc_f (char32, oldLength + 1);
-			NativeText_getText (my d_widget, oldText, oldLength);
-			str32ncpy (totalText, oldText, from_pos);
-			str32cpy (totalText + from_pos, macText);
-			str32cpy (totalText + from_pos + length, oldText + to_pos);
-			CFStringRef totalText_cfstring = (CFStringRef) Melder_peek32toCfstring (totalText);
-			SetControlData (my d_widget -> nat.control.handle, kControlEntireControl, kControlEditTextCFStringTag, sizeof (CFStringRef), & totalText_cfstring);
-			Melder_free (oldText);
-			Melder_free (totalText);
-		} else if (isMLTE (me)) {
-			long oldLength = NativeText_getLength (my d_widget);
-			char32 *oldText = Melder_malloc_f (char32, oldLength + 1);
-			NativeText_getText (my d_widget, oldText, oldLength);
-			long numberOfLeadingHighUnicodeValues = 0, numberOfSelectedHighUnicodeValues = 0;
-			for (long i = 0; i < from_pos; i ++) if (oldText [i] > 0xFFFF) numberOfLeadingHighUnicodeValues ++;
-			for (long i = from_pos; i < to_pos; i ++) if (oldText [i] > 0xFFFF) numberOfSelectedHighUnicodeValues ++;
-			from_pos += numberOfLeadingHighUnicodeValues;
-			to_pos += numberOfLeadingHighUnicodeValues + numberOfSelectedHighUnicodeValues;
-			const char16 *macText_utf16 = (const char16 *) Melder_peek32to16 (macText);
-			TXNSetData (my d_macMlteObject, kTXNUnicodeTextData, macText_utf16, str32len_utf16 (macText, 0) * 2, from_pos, to_pos);
-		}
-		Melder_free (macText);
-		if (my d_widget -> managed) {
-			if (isTextControl (my d_widget)) {
-				Draw1Control (my d_widget -> nat.control.handle);
-			} else if (isMLTE (me)) {
-			}
-			GuiMac_clipOff ();
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
@@ -1462,7 +952,7 @@ void GuiText_scrollToSelection (GuiText me) {
 		GtkTextBuffer *textBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (my d_widget));
 		GtkTextIter start, end;
 		gtk_text_buffer_get_selection_bounds (textBuffer, & start, & end);
-		//GtkTextMark *mark = gtk_text_buffer_create_mark (textBuffer, NULL, & start, true);
+		//GtkTextMark *mark = gtk_text_buffer_create_mark (textBuffer, nullptr, & start, true);
 		gtk_text_view_scroll_to_iter (GTK_TEXT_VIEW (my d_widget), & start, 0.1, false, 0.0, 0.0);
 		//gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (my d_widget), mark, 0.1, false, 0.0, 0.0);
 	#elif cocoa
@@ -1470,33 +960,27 @@ void GuiText_scrollToSelection (GuiText me) {
 			[my d_cocoaTextView   scrollRangeToVisible: [my d_cocoaTextView   selectedRange]];
 	#elif win
 		Edit_ScrollCaret (my d_widget -> window);
-	#elif mac
-		if (isTextControl (my d_widget)) {
-			;
-		} else if (isMLTE (me)) {
-			TXNShowSelection (my d_macMlteObject, false);
-		}
 	#endif
 }
 
-void GuiText_setChangeCallback (GuiText me, void (*changeCallback) (void *boss, GuiTextEvent event), void *changeBoss) {
-	my d_changeCallback = changeCallback;
-	my d_changeBoss = changeBoss;
+void GuiText_setChangedCallback (GuiText me, GuiText_ChangedCallback changedCallback, Thing changedBoss) {
+	my d_changedCallback = changedCallback;
+	my d_changedBoss = changedBoss;
 }
 
 void GuiText_setFontSize (GuiText me, int size) {
 	#if gtk
 		GtkRcStyle *modStyle = gtk_widget_get_modifier_style (GTK_WIDGET (my d_widget));
-		trace (U"before initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
-		PangoFontDescription *fontDesc = modStyle -> font_desc != NULL ? modStyle -> font_desc :
+		trace (U"before initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+		PangoFontDescription *fontDesc = modStyle -> font_desc != nullptr ? modStyle -> font_desc :
 			#if ALLOW_GDK_DRAWING
 				pango_font_description_copy (GTK_WIDGET (my d_widget) -> style -> font_desc);
 			#else
-				NULL;
+				nullptr;
 			#endif
-		trace (U"during initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"during initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		pango_font_description_set_absolute_size (fontDesc, size * PANGO_SCALE);
-		trace (U"after initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"after initializing Pango: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		modStyle -> font_desc = fontDesc;
 		gtk_widget_modify_style (GTK_WIDGET (my d_widget), modStyle);
 	#elif cocoa
@@ -1510,28 +994,20 @@ void GuiText_setFontSize (GuiText me, int size) {
 		GuiText_setString (me, U"");   // erase all
 		UpdateWindow (my d_widget -> window);
 		if (size <= 10) {
-			SetWindowFont (my d_widget -> window, font10, FALSE);
+			SetWindowFont (my d_widget -> window, font10, false);
 		} else if (size <= 12) {
-			SetWindowFont (my d_widget -> window, font12, FALSE);
+			SetWindowFont (my d_widget -> window, font12, false);
 		} else if (size <= 14) {
-			SetWindowFont (my d_widget -> window, font14, FALSE);
+			SetWindowFont (my d_widget -> window, font14, false);
 		} else if (size <= 18) {
-			SetWindowFont (my d_widget -> window, font18, FALSE);
+			SetWindowFont (my d_widget -> window, font18, false);
 		} else {
-			SetWindowFont (my d_widget -> window, font24, FALSE);
+			SetWindowFont (my d_widget -> window, font24, false);
 		}
 		GuiText_setString (me, text);
 		Melder_free (text);
 		GuiText_setSelection (me, first, last);
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		if (isMLTE (me)) {
-			TXNTypeAttributes attr;
-			attr. tag = kTXNQDFontSizeAttribute;
-			attr. size = kTXNFontSizeAttributeSize;
-			attr. data. dataValue = (unsigned long) size << 16;
-			TXNSetTypeAttributes (my d_macMlteObject, 1, & attr, 0, 2000000000);
-		}
 	#endif
 }
 
@@ -1546,12 +1022,11 @@ void GuiText_setRedoItem (GuiText me, GuiMenuItem item) {
 		}
 	#elif cocoa
 	#elif win
-	#elif mac
 	#endif
 }
 
 void GuiText_setSelection (GuiText me, long first, long last) {
-	if (my d_widget != NULL) {
+	if (my d_widget) {
 	#if gtk
 		if (G_OBJECT_TYPE (G_OBJECT (my d_widget)) == GTK_TYPE_ENTRY) {
 			gtk_editable_select_region (GTK_EDITABLE (my d_widget), first, last);
@@ -1606,25 +1081,6 @@ void GuiText_setSelection (GuiText me, long first, long last) {
 
 		Edit_SetSel (my d_widget -> window, first, last);
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		char32 *text = GuiText_getString (me);
-		if (first < 0) first = 0;
-		if (last < 0) last = 0;
-		long length = str32len (text);
-		if (first >= length) first = length;
-		if (last >= length) last = length;
-		long numberOfLeadingHighUnicodeValues = 0, numberOfSelectedHighUnicodeValues = 0;
-		for (long i = 0; i < first; i ++) if (text [i] > 0xFFFF) numberOfLeadingHighUnicodeValues ++;
-		for (long i = first; i < last; i ++) if (text [i] > 0xFFFF) numberOfSelectedHighUnicodeValues ++;
-		first += numberOfLeadingHighUnicodeValues;
-		last += numberOfLeadingHighUnicodeValues + numberOfSelectedHighUnicodeValues;
-		Melder_free (text);
-		if (isTextControl (my d_widget)) {
-			ControlEditTextSelectionRec rec = { (int16_t) first, (int16_t) last };
-			SetControlData (my d_widget -> nat.control.handle, kControlEntireControl, kControlEditTextSelectionTag, sizeof (rec), & rec);
-		} else if (isMLTE (me)) {
-			TXNSetSelection (my d_macMlteObject, first, last);
-		}
 	#endif
 	}
 }
@@ -1669,53 +1125,6 @@ void GuiText_setString (GuiText me, const char32 *text) {
 		SetWindowTextW (my d_widget -> window, Melder_peek32toW (winText));
 		Melder_free (winText);
 		UpdateWindow (my d_widget -> window);
-	#elif mac
-		long length_utf32 = str32len (text), length_utf16 = str32len_utf16 (text, false);
-		UniChar *macText = Melder_malloc_f (UniChar, length_utf16 + 1);
-		//Melder_assert (macText != NULL);
-		//Melder_assert (my d_widget != NULL);
-		//Melder_assert (my d_widget -> widgetClass == xmTextWidgetClass);
-		/*
-		 * Convert from UTF-32 to UTF-16 and replace all LF with CR.
-		 */
-		long j = 0;
-		for (long i = 0; i < length_utf32; i ++) {
-			char32 kar = (char32) text [i];   // reinterpret sign bit
-			if (kar == '\n') {   // LF
-				macText [j ++] = 13;   // CR
-			} else if (kar <= 0x00FFFF) {
-				macText [j ++] = kar;
-			} else {
-				Melder_assert (kar <= 0x10FFFF);
-				kar -= 0x010000;
-				macText [j ++] = (UniChar) (0x00D800 | (kar >> 10));   // first UTF-16 surrogate character
-				macText [j ++] = (UniChar) (0x00DC00 | (kar & 0x0003FF));   // second UTF-16 surrogate character
-			}
-		}
-		macText [j] = '\0';
-		if (j != length_utf16)
-			Melder_fatal (U"GuiText_setString: incorrect number of UTF-16 words (", j, U" instead of ", length_utf16, U"): <<", text, U">>.");
-		if (isTextControl (my d_widget)) {
-			CFStringRef cfString = CFStringCreateWithCharacters (NULL, macText, length_utf16);
-			SetControlData (my d_widget -> nat.control.handle, kControlEntireControl, kControlEditTextCFStringTag, sizeof (CFStringRef), & cfString);
-			CFRelease (cfString);
-		} else if (isMLTE (me)) {
-			TXNSetData (my d_macMlteObject, kTXNUnicodeTextData, macText, length_utf16*2, 0, NativeText_getLength (my d_widget));
-		}
-		Melder_free (macText);
-		if (my d_widget -> managed) {
-			if (theGui.duringUpdate) {
-				_Gui_invalidateWidget (my d_widget);   // HACK: necessary because VisRgn has temporarily been changed (not used in Praat any longer)
-			} else {
-				if (isTextControl (my d_widget)) {
-					_GuiMac_clipOnParent (my d_widget);
-					Draw1Control (my d_widget -> nat.control.handle);
-					GuiMac_clipOff ();
-				} else if (isMLTE (me)) {
-				}
-			}
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
@@ -1731,7 +1140,6 @@ void GuiText_setUndoItem (GuiText me, GuiMenuItem item) {
 		}
 	#elif cocoa
 	#elif win
-	#elif mac
 	#endif
 }
 
@@ -1743,11 +1151,6 @@ void GuiText_undo (GuiText me) {
 			[[my d_cocoaTextView   undoManager] undo];
 		}
 	#elif win
-	#elif mac
-		if (isMLTE (me)) {
-			TXNUndo (my d_macMlteObject);
-		}
-		_GuiText_handleValueChanged (my d_widget);
 	#endif
 }
 
diff --git a/sys/GuiThing.cpp b/sys/GuiThing.cpp
index 3ebd078..b1573c8 100644
--- a/sys/GuiThing.cpp
+++ b/sys/GuiThing.cpp
@@ -2,34 +2,33 @@
  *
  * Copyright (C) 1993-2012,2013,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
 #include "machine.h"
 
-void structGuiThing :: v_destroy () {
+void structGuiThing :: v_destroy () noexcept {
 	GuiThing_Parent :: v_destroy ();
 }
 
 void structGuiThing :: v_hide () {
 	#if gtk
 		GuiObject parent = gtk_widget_get_parent (GTK_WIDGET (d_widget));
-		if (parent != NULL && GTK_IS_DIALOG (parent)) {   // I am the top GtkFixed of a dialog
+		if (parent && GTK_IS_DIALOG (parent)) {   // I am the top GtkFixed of a dialog
 			gtk_widget_hide (GTK_WIDGET (parent));
-		} else if (parent != NULL && GTK_IS_DIALOG (gtk_widget_get_parent (GTK_WIDGET (parent)))) {
+		} else if (parent && GTK_IS_DIALOG (gtk_widget_get_parent (GTK_WIDGET (parent)))) {
 			trace (U"hiding a dialog indirectly");
 			gtk_widget_hide (GTK_WIDGET (gtk_widget_get_parent (GTK_WIDGET (parent))));
 		} else {
diff --git a/sys/GuiWindow.cpp b/sys/GuiWindow.cpp
index 2167420..7beebea 100644
--- a/sys/GuiWindow.cpp
+++ b/sys/GuiWindow.cpp
@@ -1,32 +1,19 @@
 /* GuiWindow.cpp
  *
- * Copyright (C) 1993-2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1993-2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2004/01/07 this file separated from Gui.c
- * pb 2004/02/12 don't trust window modification feedback on MacOS 9
- * pb 2004/04/06 GuiWindow_drain separated from XmUpdateDisplay
- * pb 2006/10/28 erased MacOS 9 stuff
- * pb 2007/06/19 wchar
- * pb 2007/12/30 extraction
- * pb 2010/07/29 removed GuiWindow_show
- * pb 2011/04/06 C++
- * pb 2012/08/30 Cocoa
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "GuiP.h"
@@ -44,27 +31,27 @@ Thing_implement (GuiWindow, GuiShell, 0);
 		(void) widget;
 		iam (GuiWindow);
 		forget (me);
-		return TRUE;
+		return true;
 	}
 	static gboolean _GuiWindow_goAwayCallback (GuiObject widget, GdkEvent *event, gpointer void_me) {
 		(void) widget;
 		iam (GuiWindow);
-		if (my d_goAwayCallback != NULL) {
+		if (my d_goAwayCallback) {
 			my d_goAwayCallback (my d_goAwayBoss);
 		}
-		return TRUE;
+		return true;
 	}
 	static void _GuiWindow_child_resizeCallback (GtkWidget *childWidget, gpointer data) {
 		GtkAllocation *allocation = (GtkAllocation *) data;
 		GtkWidget *parentWidget = gtk_widget_get_parent (childWidget);
 		Thing_cast (GuiThing, child, _GuiObject_getUserData (childWidget));
 		if (child) {
-			GuiControl control = NULL;
+			GuiControl control = nullptr;
 			if (Thing_isa (child, classGuiControl)) {
 				control = static_cast <GuiControl> (child);
 			} else if (Thing_isa (child, classGuiMenu)) {
 				Thing_cast (GuiMenu, menu, child);
-				control = menu -> d_cascadeButton;
+				control = menu -> d_cascadeButton.get();
 			}
 			if (control) {
 				/*
@@ -104,47 +91,8 @@ Thing_implement (GuiWindow, GuiShell, 0);
 			gtk_widget_set_size_request (GTK_WIDGET (widget), allocation -> width, allocation -> height);
 		}
 		trace (U"end");
-		return FALSE;
-	}
-#elif cocoa
-	@implementation GuiCocoaWindow {
-		GuiWindow d_userData;
-	}
-	- (void) dealloc {   // override
-		GuiWindow me = d_userData;
-		my d_cocoaWindow = NULL;   // this is already under destruction, so undangle
-		forget (me);
-		trace (U"deleting a window");
-		[super dealloc];
-	}
-	- (GuiThing) userData {
-		return d_userData;
-	}
-	- (void) setUserData: (GuiThing) userData {
-		Melder_assert (userData == NULL || Thing_isa (userData, classGuiWindow));
-		d_userData = static_cast <GuiWindow> (userData);
-	}
-	- (void) keyDown: (NSEvent *) theEvent {
-		trace (U"key down");
-	}
-	//@end
-	//@interface GuiCocoaWindowDelegate : NSObject <NSWindowDelegate> { } @end
-	//@implementation GuiCocoaWindowDelegate {
-	//}
-	- (BOOL) windowShouldClose: (id) sender {
-		GuiCocoaWindow *widget = (GuiCocoaWindow *) sender;
-		GuiWindow me = (GuiWindow) [widget userData];
-		if (my d_goAwayCallback != NULL) {
-			trace (U"calling goAwayCallback)");
-			my d_goAwayCallback (my d_goAwayBoss);
-		} else {
-			trace (U"hiding window");
-			[widget orderOut: nil];
-		}
-		return FALSE;
+		return false;
 	}
-	@end
-	//static GuiCocoaWindowDelegate *theGuiCocoaWindowDelegate;
 #elif motif
 	static void _GuiMotifWindow_destroyCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		(void) widget; (void) call;
@@ -157,70 +105,72 @@ Thing_implement (GuiWindow, GuiShell, 0);
 	static void _GuiMotifWindow_goAwayCallback (GuiObject widget, XtPointer void_me, XtPointer call) {
 		(void) widget; (void) call;
 		iam (GuiWindow);
-		if (my d_goAwayCallback != NULL) {
+		if (my d_goAwayCallback) {
+			//Melder_casual (U"_GuiMotifWindow_goAwayCallback: before");
 			my d_goAwayCallback (my d_goAwayBoss);
+			//Melder_casual (U"_GuiMotifWindow_goAwayCallback: after");
 		}
 	}
 #endif
 
 GuiWindow GuiWindow_create (int x, int y, int width, int height, int minimumWidth, int minimumHeight,
-	const char32 *title /* cattable */, void (*goAwayCallback) (void *goAwayBoss), void *goAwayBoss, uint32 flags)
+	const char32 *title /* cattable */, GuiShell_GoAwayCallback goAwayCallback, Thing goAwayBoss, uint32 flags)
 {
-	GuiWindow me = Thing_new (GuiWindow);
-	my d_parent = NULL;
+	autoGuiWindow me = Thing_new (GuiWindow);
+	my d_parent = nullptr;
 	my d_goAwayCallback = goAwayCallback;
 	my d_goAwayBoss = goAwayBoss;
 	#if gtk
 		GuiGtk_initialize ();
 		my d_gtkWindow = (GtkWindow *) gtk_window_new (GTK_WINDOW_TOPLEVEL);
-		g_signal_connect (G_OBJECT (my d_gtkWindow), "delete-event", goAwayCallback ? G_CALLBACK (_GuiWindow_goAwayCallback) : G_CALLBACK (gtk_widget_hide), me);
-		g_signal_connect (G_OBJECT (my d_gtkWindow), "destroy-event", G_CALLBACK (_GuiWindow_destroyCallback), me);
+		g_signal_connect (G_OBJECT (my d_gtkWindow), "delete-event", goAwayCallback ? G_CALLBACK (_GuiWindow_goAwayCallback) : G_CALLBACK (gtk_widget_hide), me.get());
+		g_signal_connect (G_OBJECT (my d_gtkWindow), "destroy-event", G_CALLBACK (_GuiWindow_destroyCallback), me.get());
 
 		gtk_window_set_default_size (GTK_WINDOW (my d_gtkWindow), width, height);
-		gtk_window_set_resizable (GTK_WINDOW (my d_gtkWindow), TRUE);
-		GuiShell_setTitle (me, title);
+		gtk_window_set_resizable (GTK_WINDOW (my d_gtkWindow), true);
+		GuiShell_setTitle (me.get(), title);
 
 		my d_widget = gtk_fixed_new ();
-		_GuiObject_setUserData (my d_widget, me);
+		_GuiObject_setUserData (my d_widget, me.get());
 		gtk_widget_set_size_request (GTK_WIDGET (my d_widget), width, height);
 		gtk_container_add (GTK_CONTAINER (my d_gtkWindow), GTK_WIDGET (my d_widget));
 		GdkGeometry geometry = { minimumWidth, minimumHeight, 0, 0, 0, 0, 0, 0, 0, 0, GDK_GRAVITY_NORTH_WEST };
 		gtk_window_set_geometry_hints (my d_gtkWindow, GTK_WIDGET (my d_gtkWindow), & geometry, GDK_HINT_MIN_SIZE);
-		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiWindow_resizeCallback), me);
+		g_signal_connect (G_OBJECT (my d_widget), "size-allocate", G_CALLBACK (_GuiWindow_resizeCallback), me.get());
 	#elif cocoa
 		NSRect rect = { { static_cast<CGFloat>(x), static_cast<CGFloat>(y) }, { static_cast<CGFloat>(width), static_cast<CGFloat>(height) } };
-		my d_cocoaWindow = [[GuiCocoaWindow alloc]
+		my d_cocoaShell = [[GuiCocoaShell alloc]
 			initWithContentRect: rect
 			styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask
 			backing: NSBackingStoreBuffered
 			defer: false];
-		[my d_cocoaWindow setCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary];
-        [my d_cocoaWindow setMinSize: NSMakeSize (minimumWidth, minimumHeight)];
-		GuiShell_setTitle (me, title);
-		[my d_cocoaWindow makeKeyAndOrderFront: nil];
-		my d_widget = (GuiObject) [my d_cocoaWindow contentView];   // BUG: this d_widget doesn't have the GuiCocoaAny protocol
-		_GuiObject_setUserData (my d_cocoaWindow, me);
+		[my d_cocoaShell setCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary];
+        [my d_cocoaShell setMinSize: NSMakeSize (minimumWidth, minimumHeight)];
+		GuiShell_setTitle (me.get(), title);
+		[my d_cocoaShell makeKeyAndOrderFront: nil];
+		my d_widget = (GuiObject) [my d_cocoaShell   contentView];   // BUG: this d_widget doesn't have the GuiCocoaAny protocol
+		_GuiObject_setUserData (my d_cocoaShell, me.get());
 		//if (! theGuiCocoaWindowDelegate) {
 		//	theGuiCocoaWindowDelegate = [[GuiCocoaWindowDelegate alloc] init];
 		//}
 		//[my d_cocoaWindow setDelegate: theGuiCocoaWindowDelegate];
 	#elif motif
-		my d_xmShell = XmCreateShell (NULL, flags & GuiWindow_FULLSCREEN ? "Praatwulgfullscreen" : "Praatwulg", NULL, 0);
-		XtVaSetValues (my d_xmShell, XmNdeleteResponse, goAwayCallback ? XmDO_NOTHING : XmUNMAP, NULL);
-		XtVaSetValues (my d_xmShell, XmNx, x, XmNy, y, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, NULL);
+		my d_xmShell = XmCreateShell (nullptr, flags & GuiWindow_FULLSCREEN ? "Praatwulgfullscreen" : "Praatwulg", nullptr, 0);
+		XtVaSetValues (my d_xmShell, XmNdeleteResponse, goAwayCallback ? XmDO_NOTHING : XmUNMAP, nullptr);
+		XtVaSetValues (my d_xmShell, XmNx, x, XmNy, y, XmNwidth, (Dimension) width, XmNheight, (Dimension) height, nullptr);
 		if (goAwayCallback) {
-			XmAddWMProtocolCallback (my d_xmShell, 'delw', _GuiMotifWindow_goAwayCallback, (char *) me);
+			XmAddWMProtocolCallback (my d_xmShell, 'delw', _GuiMotifWindow_goAwayCallback, (char *) me.get());
 		}
-		GuiShell_setTitle (me, title);
-		my d_widget = XmCreateForm (my d_xmShell, "dialog", NULL, 0);
-		_GuiObject_setUserData (my d_widget, me);
-		XtAddCallback (my d_widget, XmNdestroyCallback, _GuiMotifWindow_destroyCallback, me);
-		XtVaSetValues (my d_widget, XmNdialogStyle, XmDIALOG_MODELESS, XmNautoUnmanage, False, NULL);
+		GuiShell_setTitle (me.get(), title);
+		my d_widget = XmCreateForm (my d_xmShell, "dialog", nullptr, 0);
+		_GuiObject_setUserData (my d_widget, me.get());
+		XtAddCallback (my d_widget, XmNdestroyCallback, _GuiMotifWindow_destroyCallback, me.get());
+		XtVaSetValues (my d_widget, XmNdialogStyle, XmDIALOG_MODELESS, XmNautoUnmanage, False, nullptr);
 	#endif
 	my d_width = width;
 	my d_height = height;
-	my d_shell = me;
-	return me;
+	my d_shell = me.get();
+	return me.releaseToAmbiguousOwner();
 }
 
 GuiObject theGuiTopMenuBar;
@@ -245,11 +195,11 @@ void GuiWindow_addMenuBar (GuiWindow me) {
 	#elif cocoa
 	#elif motif
 		if (win || theGuiTopMenuBar) {
-			my d_xmMenuBar = XmCreateMenuBar (my d_widget, "menuBar", NULL, 0);
-			XtVaSetValues (my d_xmMenuBar, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL);
+			my d_xmMenuBar = XmCreateMenuBar (my d_widget, "menuBar", nullptr, 0);
+			XtVaSetValues (my d_xmMenuBar, XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, nullptr);
 			XtManageChild (my d_xmMenuBar);
 		} else {
-			theGuiTopMenuBar = XmCreateMenuBar (NULL, "menuBar", NULL, 0);
+			theGuiTopMenuBar = XmCreateMenuBar (nullptr, "menuBar", nullptr, 0);
 			//XtManageChild (topBar);
 		}
 	#endif
@@ -260,14 +210,14 @@ bool GuiWindow_setDirty (GuiWindow me, bool dirty) {
 		(void) dirty;
 		return false;
 	#elif cocoa
-		[my d_cocoaWindow   setDocumentEdited: dirty];
+		[my d_cocoaShell   setDocumentEdited: dirty];
 		return true;
 	#elif win
 		(void) dirty;
 		return false;
-	#elif mac
-		SetWindowModified (my d_xmShell -> nat.window.ptr, dirty);
-		return true;
+	#else
+		(void) dirty;
+		return false;
 	#endif
 }
 
diff --git a/sys/HyperPage.cpp b/sys/HyperPage.cpp
index ac3e09b..0a2ab38 100644
--- a/sys/HyperPage.cpp
+++ b/sys/HyperPage.cpp
@@ -1,20 +1,19 @@
 /* HyperPage.cpp
  *
- * Copyright (C) 1996-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1996-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -45,13 +44,13 @@ static double resolution;
 
 /********** class HyperLink **********/
 
-Thing_implement (HyperLink, Data, 0);
+Thing_implement (HyperLink, Daata, 0);
 
-HyperLink HyperLink_create (const char32 *name, double x1DC, double x2DC, double y1DC, double y2DC) {
+autoHyperLink HyperLink_create (const char32 *name, double x1DC, double x2DC, double y1DC, double y2DC) {
 	autoHyperLink me = Thing_new (HyperLink);
-	Thing_setName (me.peek(), name);
+	Thing_setName (me.get(), name);
 	my x1DC = x1DC, my x2DC = x2DC, my y1DC = y1DC, my y2DC = y2DC;
-	return me.transfer();
+	return me;
 }
 
 static void saveHistory (HyperPage me, const char32 *title) {
@@ -98,8 +97,7 @@ static void initScreen (HyperPage me) {
 	my d_y = PAGE_HEIGHT + my top / 5.0;
 	my d_x = 0;
 	my previousBottomSpacing = 0.0;
-	forget (my links);
-	my links = Collection_create (classHyperLink, 100);
+	my links. removeAllItems ();
 }
 
 void HyperPage_initSheetOfPaper (HyperPage me) {
@@ -170,29 +168,29 @@ if (! my printing) {
 	if (/* my d_y > PAGE_HEIGHT + 2.0 + heightGuess || */ my d_y < PAGE_HEIGHT - SCREEN_HEIGHT) {
 		my d_y -= heightGuess;
 	} else {
-		Graphics_setFont (my g, font);
-		Graphics_setFontSize (my g, size);
-		Graphics_setWrapWidth (my g, my rightMargin - x - 0.1);
-		Graphics_setSecondIndent (my g, secondIndent);
-		Graphics_setFontStyle (my g, style);
-		Graphics_text (my g, my d_x, my d_y, text);
+		Graphics_setFont (my graphics.get(), font);
+		Graphics_setFontSize (my graphics.get(), size);
+		Graphics_setWrapWidth (my graphics.get(), my rightMargin - x - 0.1);
+		Graphics_setSecondIndent (my graphics.get(), secondIndent);
+		Graphics_setFontStyle (my graphics.get(), style);
+		Graphics_text (my graphics.get(), my d_x, my d_y, text);
 		numberOfParagraphLinks = Graphics_getLinks (& paragraphLinks);
-		if (my links) for (ilink = 1; ilink <= numberOfParagraphLinks; ilink ++) {
-			HyperLink link = HyperLink_create (paragraphLinks [ilink]. name,
+		for (ilink = 1; ilink <= numberOfParagraphLinks; ilink ++) {
+			autoHyperLink link = HyperLink_create (paragraphLinks [ilink]. name,
 				paragraphLinks [ilink]. x1, paragraphLinks [ilink]. x2,
 				paragraphLinks [ilink]. y1, paragraphLinks [ilink]. y2);
-			Collection_addItem (my links, link);
+			my links. addItem_move (link.move());
 		}
 		if (method & HyperPage_ADD_BORDER) {
-			Graphics_setLineWidth (my g, 2);
-			Graphics_line (my g, 0.0, my d_y, my rightMargin, my d_y);
-			Graphics_setLineWidth (my g, 1);
+			Graphics_setLineWidth (my graphics.get(), 2.0);
+			Graphics_line (my graphics.get(), 0.0, my d_y, my rightMargin, my d_y);
+			Graphics_setLineWidth (my graphics.get(), 1.0);
 		}
 		/*
 		 * The text may have wrapped.
 		 * Ask the Graphics manager by how much, and update our text position accordingly.
 		 */
-		my d_y = Graphics_inqTextY (my g);
+		my d_y = Graphics_inqTextY (my graphics.get());
 	}
 } else {
 	Graphics_setFont (my ps, font);
@@ -303,13 +301,13 @@ if (! my printing) {
 	my d_y -= size * (1.2/72);
 	if (my d_y > PAGE_HEIGHT + 2.0 || my d_y < PAGE_HEIGHT - SCREEN_HEIGHT) {
 	} else {
-		Graphics_setFont (my g, font);
-		Graphics_setFontStyle (my g, 0);
-		Graphics_setFontSize (my g, size);
-		Graphics_setWrapWidth (my g, 0);
-		Graphics_setTextAlignment (my g, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (my g, my rightMargin / 2, my d_y, formula);
-		Graphics_setTextAlignment (my g, Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_setFont (my graphics.get(), font);
+		Graphics_setFontStyle (my graphics.get(), 0);
+		Graphics_setFontSize (my graphics.get(), size);
+		Graphics_setWrapWidth (my graphics.get(), 0.0);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_CENTRE, Graphics_BOTTOM);
+		Graphics_text (my graphics.get(), 0.5 * my rightMargin, my d_y, formula);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
 	}
 } else {
 	Graphics_setFont (my ps, font);
@@ -346,16 +344,16 @@ if (! my printing) {
 		my d_y -= height_inches;
 	} else {
 		my d_y -= height_inches;
-		Graphics_setFont (my g, font);
-		Graphics_setFontStyle (my g, 0);
-		Graphics_setFontSize (my g, size);
-		my d_x = width_inches > my rightMargin ? 0 : 0.5 * (my rightMargin - width_inches);
-		Graphics_setWrapWidth (my g, 0);
-		Graphics_setViewport (my g, my d_x, my d_x + width_inches, my d_y, my d_y + height_inches);
-		draw (my g);
-		Graphics_setViewport (my g, 0, 1, 0, 1);
-		Graphics_setWindow (my g, 0, 1, 0, 1);
-		Graphics_setTextAlignment (my g, Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_setFont (my graphics.get(), font);
+		Graphics_setFontStyle (my graphics.get(), 0);
+		Graphics_setFontSize (my graphics.get(), size);
+		my d_x = width_inches > my rightMargin ? 0.0 : 0.5 * (my rightMargin - width_inches);
+		Graphics_setWrapWidth (my graphics.get(), 0.0);
+		Graphics_setViewport (my graphics.get(), my d_x, my d_x + width_inches, my d_y, my d_y + height_inches);
+		draw (my graphics.get());
+		Graphics_setViewport (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
 	}
 } else {
 	Graphics_setFont (my ps, font);
@@ -386,7 +384,7 @@ if (! my printing) {
 
 int HyperPage_script (HyperPage me, double width_inches, double height_inches, const char32 *script) {
 	char32 *text = Melder_dup (script);
-	Interpreter interpreter = Interpreter_createFromEnvironment (NULL);
+	autoInterpreter interpreter = Interpreter_createFromEnvironment (nullptr);
 	double topSpacing = 0.1, bottomSpacing = 0.1, minFooterDistance = 0.0;
 	kGraphics_font font = my p_font;
 	int size = my p_fontSize;
@@ -398,25 +396,25 @@ if (! my printing) {
 		my d_y -= true_height_inches;
 	} else {
 		my d_y -= true_height_inches;
-		Graphics_setFont (my g, font);
-		Graphics_setFontStyle (my g, 0);
-		Graphics_setFontSize (my g, size);
-		my d_x = true_width_inches > my rightMargin ? 0 : 0.5 * (my rightMargin - true_width_inches);
-		Graphics_setWrapWidth (my g, 0);
+		Graphics_setFont (my graphics.get(), font);
+		Graphics_setFontStyle (my graphics.get(), 0);
+		Graphics_setFontSize (my graphics.get(), size);
+		my d_x = true_width_inches > my rightMargin ? 0.0 : 0.5 * (my rightMargin - true_width_inches);
+		Graphics_setWrapWidth (my graphics.get(), 0.0);
 		long x1DCold, x2DCold, y1DCold, y2DCold;
-		Graphics_inqWsViewport (my g, & x1DCold, & x2DCold, & y1DCold, & y2DCold);
+		Graphics_inqWsViewport (my graphics.get(), & x1DCold, & x2DCold, & y1DCold, & y2DCold);
 		double x1NDCold, x2NDCold, y1NDCold, y2NDCold;
-		Graphics_inqWsWindow (my g, & x1NDCold, & x2NDCold, & y1NDCold, & y2NDCold);
+		Graphics_inqWsWindow (my graphics.get(), & x1NDCold, & x2NDCold, & y1NDCold, & y2NDCold);
 		{
-			if (my praatApplication == NULL) my praatApplication = Melder_calloc_f (structPraatApplication, 1);
-			if (my praatObjects == NULL) my praatObjects = Melder_calloc_f (structPraatObjects, 1);
-			if (my praatPicture == NULL) my praatPicture = Melder_calloc_f (structPraatPicture, 1);
+			if (! my praatApplication) my praatApplication = Melder_calloc_f (structPraatApplication, 1);
+			if (! my praatObjects) my praatObjects = Melder_calloc_f (structPraatObjects, 1);
+			if (! my praatPicture) my praatPicture = Melder_calloc_f (structPraatPicture, 1);
 			theCurrentPraatApplication = (PraatApplication) my praatApplication;
 			theCurrentPraatApplication -> batch = true;   // prevent creation of editor windows
 			theCurrentPraatApplication -> topShell = theForegroundPraatApplication. topShell;   // needed for UiForm_create () in dialogs
 			theCurrentPraatObjects = (PraatObjects) my praatObjects;
 			theCurrentPraatPicture = (PraatPicture) my praatPicture;
-			theCurrentPraatPicture -> graphics = my g;   // has to draw into HyperPage rather than Picture window
+			theCurrentPraatPicture -> graphics = my graphics.get();   // has to draw into HyperPage rather than Picture window
 			theCurrentPraatPicture -> font = font;
 			theCurrentPraatPicture -> fontSize = size;
 			theCurrentPraatPicture -> lineType = Graphics_DRAWN;
@@ -429,18 +427,18 @@ if (! my printing) {
 			theCurrentPraatPicture -> y1NDC = my d_y;
 			theCurrentPraatPicture -> y2NDC = my d_y + true_height_inches;
 
-			Graphics_setViewport (my g, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);
-			Graphics_setWindow (my g, 0.0, 1.0, 0.0, 1.0);
+			Graphics_setViewport (my graphics.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);
+			Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
 			long x1DC, y1DC, x2DC, y2DC;
-			Graphics_WCtoDC (my g, 0.0, 0.0, & x1DC, & y2DC);
-			Graphics_WCtoDC (my g, 1.0, 1.0, & x2DC, & y1DC);
-			Graphics_resetWsViewport (my g, x1DC, x2DC, y1DC, y2DC);
-			Graphics_setWsWindow (my g, 0, width_inches, 0, height_inches);
-			theCurrentPraatPicture -> x1NDC = 0;
+			Graphics_WCtoDC (my graphics.get(), 0.0, 0.0, & x1DC, & y2DC);
+			Graphics_WCtoDC (my graphics.get(), 1.0, 1.0, & x2DC, & y1DC);
+			Graphics_resetWsViewport (my graphics.get(), x1DC, x2DC, y1DC, y2DC);
+			Graphics_setWsWindow (my graphics.get(), 0, width_inches, 0, height_inches);
+			theCurrentPraatPicture -> x1NDC = 0.0;
 			theCurrentPraatPicture -> x2NDC = width_inches;
-			theCurrentPraatPicture -> y1NDC = 0;
+			theCurrentPraatPicture -> y1NDC = 0.0;
 			theCurrentPraatPicture -> y2NDC = height_inches;
-			Graphics_setViewport (my g, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);			
+			Graphics_setViewport (my graphics.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);
 
 			{// scope
 				autoMelderProgressOff progress;
@@ -450,7 +448,7 @@ if (! my printing) {
 					Melder_setDefaultDir (& my rootDirectory);
 				}
 				try {
-					Interpreter_run (interpreter, text);
+					Interpreter_run (interpreter.get(), text);
 				} catch (MelderError) {
 					if (my scriptErrorHasBeenNotified) {
 						Melder_clearError ();
@@ -460,28 +458,28 @@ if (! my printing) {
 					}
 				}
 			}
-			Graphics_setLineType (my g, Graphics_DRAWN);
-			Graphics_setLineWidth (my g, 1.0);
-			Graphics_setArrowSize (my g, 1.0);
-			Graphics_setSpeckleSize (my g, 1.0);
-			Graphics_setColour (my g, Graphics_BLACK);
+			Graphics_setLineType (my graphics.get(), Graphics_DRAWN);
+			Graphics_setLineWidth (my graphics.get(), 1.0);
+			Graphics_setArrowSize (my graphics.get(), 1.0);
+			Graphics_setSpeckleSize (my graphics.get(), 1.0);
+			Graphics_setColour (my graphics.get(), Graphics_BLACK);
 			/*Graphics_Link *paragraphLinks;
 			long numberOfParagraphLinks = Graphics_getLinks (& paragraphLinks);
 			if (my links) for (long ilink = 1; ilink <= numberOfParagraphLinks; ilink ++) {
-				HyperLink link = HyperLink_create (paragraphLinks [ilink]. name,
+				autoHyperLink link = HyperLink_create (paragraphLinks [ilink]. name,
 					paragraphLinks [ilink]. x1, paragraphLinks [ilink]. x2,
 					paragraphLinks [ilink]. y1, paragraphLinks [ilink]. y2);
-				Collection_addItem (my links, link);
+				Collection_addItem_move (my links, link.move());
 			}*/
 			theCurrentPraatApplication = & theForegroundPraatApplication;
 			theCurrentPraatObjects = & theForegroundPraatObjects;
 			theCurrentPraatPicture = & theForegroundPraatPicture;
 		}
-		Graphics_resetWsViewport (my g, x1DCold, x2DCold, y1DCold, y2DCold);
-		Graphics_setWsWindow (my g, x1NDCold, x2NDCold, y1NDCold, y2NDCold);
-		Graphics_setViewport (my g, 0, 1, 0, 1);
-		Graphics_setWindow (my g, 0, 1, 0, 1);
-		Graphics_setTextAlignment (my g, Graphics_LEFT, Graphics_BOTTOM);
+		Graphics_resetWsViewport (my graphics.get(), x1DCold, x2DCold, y1DCold, y2DCold);
+		Graphics_setWsWindow (my graphics.get(), x1NDCold, x2NDCold, y1NDCold, y2NDCold);
+		Graphics_setViewport (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setWindow (my graphics.get(), 0.0, 1.0, 0.0, 1.0);
+		Graphics_setTextAlignment (my graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
 	}
 } else {
 	Graphics_setFont (my ps, font);
@@ -505,9 +503,9 @@ if (! my printing) {
 	double x1NDCold, x2NDCold, y1NDCold, y2NDCold;
 	Graphics_inqWsWindow (my ps, & x1NDCold, & x2NDCold, & y1NDCold, & y2NDCold);
 	{
-		if (my praatApplication == NULL) my praatApplication = Melder_calloc_f (structPraatApplication, 1);
-		if (my praatObjects == NULL) my praatObjects = Melder_calloc_f (structPraatObjects, 1);
-		if (my praatPicture == NULL) my praatPicture = Melder_calloc_f (structPraatPicture, 1);
+		if (! my praatApplication) my praatApplication = Melder_calloc_f (structPraatApplication, 1);
+		if (! my praatObjects) my praatObjects = Melder_calloc_f (structPraatObjects, 1);
+		if (! my praatPicture) my praatPicture = Melder_calloc_f (structPraatPicture, 1);
 		theCurrentPraatApplication = (PraatApplication) my praatApplication;
 		theCurrentPraatApplication -> batch = true;
 		theCurrentPraatApplication -> topShell = theForegroundPraatApplication. topShell;   // needed for UiForm_create () in dialogs
@@ -551,7 +549,7 @@ if (! my printing) {
 				Melder_setDefaultDir (& my rootDirectory);
 			}
 			try {
-				Interpreter_run (interpreter, text);
+				Interpreter_run (interpreter.get(), text);
 			} catch (MelderError) {
 				Melder_clearError ();
 			}
@@ -572,31 +570,28 @@ if (! my printing) {
 	Graphics_setTextAlignment (my ps, Graphics_LEFT, Graphics_BOTTOM);
 }
 	my previousBottomSpacing = bottomSpacing;
-	forget (interpreter);
 	Melder_free (text);
 	return 1;
 }
 
-static void print (I, Graphics graphics) {
+static void print (void *void_me, Graphics graphics) {
 	iam (HyperPage);
 	my ps = graphics;
-	Graphics_setDollarSignIsCode (graphics, TRUE);
-	Graphics_setAtSignIsLink (graphics, TRUE);
-	my printing = TRUE;
+	Graphics_setDollarSignIsCode (graphics, true);
+	Graphics_setAtSignIsLink (graphics, true);
+	my printing = true;
 	HyperPage_initSheetOfPaper (me);
 	my v_draw ();
-	my printing = FALSE;
+	my printing = false;
 }
 
 /********** class HyperPage **********/
 
-void structHyperPage :: v_destroy () {
-	forget (our links);
+void structHyperPage :: v_destroy () noexcept {
 	Melder_free (our entryHint);
-	forget (our g);
 	for (int i = 0; i < 20; i ++) Melder_free (our history [i]. page);
 	Melder_free (our currentPageTitle);
-	if (praatApplication != NULL) {
+	if (our praatApplication) {
 		for (int iobject = ((PraatObjects) our praatObjects) -> n; iobject >= 1; iobject --) {
 			Melder_free (((PraatObjects) our praatObjects) -> list [iobject]. name);
 			forget (((PraatObjects) our praatObjects) -> list [iobject]. object);
@@ -608,11 +603,9 @@ void structHyperPage :: v_destroy () {
 	our HyperPage_Parent :: v_destroy ();
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (HyperPage);
-	(void) event;
-	if (my g == NULL) return;   // could be the case in the very beginning
-	Graphics_clearWs (my g);
+static void gui_drawingarea_cb_expose (HyperPage me, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! my graphics) return;   // could be the case in the very beginning
+	Graphics_clearWs (my graphics.get());
 	initScreen (me);
 	trace (U"going to draw");
 	my v_draw ();
@@ -620,21 +613,19 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 		Melder_free (my entryHint);
 		my top = (int) floor (5.0 * (PAGE_HEIGHT - my entryPosition));
 		if (my top < 0) my top = 0;
-		Graphics_clearWs (my g);
+		Graphics_clearWs (my graphics.get());
 		initScreen (me);
 		my v_draw ();
 		updateVerticalScrollBar (me);
 	}
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (HyperPage);
-	if (my g == NULL) return;   // could be the case in the very beginning
-	if (! my links) return;
-	for (long ilink = 1; ilink <= my links -> size; ilink ++) {
-		HyperLink link = (HyperLink) my links -> item [ilink];		
-		if (link == NULL)
-			Melder_fatal (U"gui_drawingarea_cb_click: empty link ", ilink, U"/", my links -> size, U".");
+static void gui_drawingarea_cb_click (HyperPage me, GuiDrawingArea_ClickEvent event) {
+	if (! my graphics) return;   // could be the case in the very beginning
+	for (long ilink = 1; ilink <= my links.size; ilink ++) {
+		HyperLink link = my links.at [ilink];
+		if (! link)
+			Melder_fatal (U"gui_drawingarea_cb_click: empty link ", ilink, U"/", my links.size, U".");
 		if (event -> y > link -> y2DC && event -> y < link -> y1DC && event -> x > link -> x1DC && event -> x < link -> x2DC) {
 			saveHistory (me, my currentPageTitle);
 			try {
@@ -647,21 +638,18 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	}
 }
 
-static void menu_cb_postScriptSettings (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_postScriptSettings (HyperPage me, EDITOR_ARGS_DIRECT) {
 	Printer_postScriptSettings ();
 }
 
 #ifdef macintosh
-static void menu_cb_pageSetup (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_pageSetup (HyperPage me, EDITOR_ARGS_DIRECT) {
 	Printer_pageSetup ();
 }
 #endif
 
-static void menu_cb_print (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
-	EDITOR_FORM (U"Print", 0)
+static void menu_cb_print (HyperPage me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Print", nullptr)
 		SENTENCE (U"Left or inside header", U"")
 		SENTENCE (U"Middle header", U"")
 		LABEL (U"", U"Right or outside header:")
@@ -669,7 +657,7 @@ static void menu_cb_print (EDITOR_ARGS) {
 		SENTENCE (U"Left or inside footer", U"")
 		SENTENCE (U"Middle footer", U"")
 		SENTENCE (U"Right or outside footer", U"")
-		BOOLEAN (U"Mirror even/odd headers", TRUE)
+		BOOLEAN (U"Mirror even/odd headers", true)
 		INTEGER (U"First page number", U"0 (= no page numbers)")
 	EDITOR_OK
 		my v_defaultHeaders (cmd);
@@ -687,9 +675,8 @@ static void menu_cb_print (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_font (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
-	EDITOR_FORM (U"Font", 0)
+static void menu_cb_font (HyperPage me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Font", nullptr)
 		RADIO (U"Font", 1)
 			RADIOBUTTON (U"Times")
 			RADIOBUTTON (U"Helvetica")
@@ -699,7 +686,7 @@ static void menu_cb_font (EDITOR_ARGS) {
 	EDITOR_DO
 		int font = GET_INTEGER (U"Font");
 		my pref_font () = my p_font = font == 1 ? kGraphics_font_TIMES : kGraphics_font_HELVETICA;
-		if (my g) Graphics_updateWs (my g);
+		if (my graphics) Graphics_updateWs (my graphics.get());
 	EDITOR_END
 }
 
@@ -712,18 +699,17 @@ static void updateSizeMenu (HyperPage me) {
 }
 static void setFontSize (HyperPage me, int fontSize) {
 	my pref_fontSize () = my p_fontSize = fontSize;
-	if (my g) Graphics_updateWs (my g);
+	if (my graphics) Graphics_updateWs (my graphics.get());
 	updateSizeMenu (me);
 }
 
-static void menu_cb_10 (EDITOR_ARGS) { EDITOR_IAM (HyperPage); setFontSize (me, 10); }
-static void menu_cb_12 (EDITOR_ARGS) { EDITOR_IAM (HyperPage); setFontSize (me, 12); }
-static void menu_cb_14 (EDITOR_ARGS) { EDITOR_IAM (HyperPage); setFontSize (me, 14); }
-static void menu_cb_18 (EDITOR_ARGS) { EDITOR_IAM (HyperPage); setFontSize (me, 18); }
-static void menu_cb_24 (EDITOR_ARGS) { EDITOR_IAM (HyperPage); setFontSize (me, 24); }
+static void menu_cb_10 (HyperPage me, EDITOR_ARGS_DIRECT) { setFontSize (me, 10); }
+static void menu_cb_12 (HyperPage me, EDITOR_ARGS_DIRECT) { setFontSize (me, 12); }
+static void menu_cb_14 (HyperPage me, EDITOR_ARGS_DIRECT) { setFontSize (me, 14); }
+static void menu_cb_18 (HyperPage me, EDITOR_ARGS_DIRECT) { setFontSize (me, 18); }
+static void menu_cb_24 (HyperPage me, EDITOR_ARGS_DIRECT) { setFontSize (me, 24); }
 
-static void menu_cb_fontSize (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_fontSize (HyperPage me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Font size", 0)
 		NATURAL (U"Font size (points)", my default_fontSize ())
 	EDITOR_OK
@@ -733,8 +719,7 @@ static void menu_cb_fontSize (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_searchForPage (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_searchForPage (HyperPage me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Search for page", 0)
 		TEXTFIELD (U"Page", U"a")
 	EDITOR_OK
@@ -757,17 +742,16 @@ static void menu_cb_searchForPage (EDITOR_ARGS) {
  * The 'pageIncrement' is sliderSize - 1.
  */
 
-static void gui_cb_verticalScroll (I, GuiScrollBarEvent	event) {
-	iam (HyperPage);
+static void gui_cb_verticalScroll (HyperPage me, GuiScrollBarEvent	event) {
 	double value = GuiScrollBar_getValue (event -> scrollBar);
 	if (value != my top) {
 		trace (U"scroll from ", my top, U" to ", value);
 		my top = (int) floor (value);
 		#if cocoa || gtk || win
-			Graphics_updateWs (my g);   // wait for expose event
+			Graphics_updateWs (my graphics.get());   // wait for expose event
 		#else
 			initScreen (me);
-			Graphics_clearWs (my g);
+			Graphics_clearWs (my graphics.get());
 			my v_draw ();   // do not wait for expose event
 		#endif
 		updateVerticalScrollBar (me);
@@ -792,28 +776,26 @@ static void updateVerticalScrollBar (HyperPage me)
 	my history [my historyPointer]. top = 0/*my top*/;
 }
 
-static void menu_cb_pageUp (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_pageUp (HyperPage me, EDITOR_ARGS_DIRECT) {
 	if (! my verticalScrollBar) return;
 	int value = GuiScrollBar_getValue (my verticalScrollBar) - 24;
 	if (value < 0) value = 0;
 	if (value != my top) {
 		my top = value;
-		Graphics_clearWs (my g);
+		Graphics_clearWs (my graphics.get());
 		initScreen (me);
 		my v_draw ();   // do not wait for expose event
 		updateVerticalScrollBar (me);
 	}
 }
 
-static void menu_cb_pageDown (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_pageDown (HyperPage me, EDITOR_ARGS_DIRECT) {
 	if (! my verticalScrollBar) return;
 	int value = GuiScrollBar_getValue (my verticalScrollBar) + 24;
 	if (value > (int) (PAGE_HEIGHT * 5) - 25) value = (int) (PAGE_HEIGHT * 5) - 25;
 	if (value != my top) {
 		my top = value;
-		Graphics_clearWs (my g);
+		Graphics_clearWs (my graphics.get());
 		initScreen (me);
 		my v_draw ();   // do not wait for expose event
 		updateVerticalScrollBar (me);
@@ -833,14 +815,11 @@ static void do_back (HyperPage me) {
 	}
 }
 
-static void menu_cb_back (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_back (HyperPage me, EDITOR_ARGS_DIRECT) {
 	do_back (me);
 }
 
-static void gui_button_cb_back (I, GuiButtonEvent event) {
-	(void) event;
-	iam (HyperPage);
+static void gui_button_cb_back (HyperPage me, GuiButtonEvent /* event */) {
 	do_back (me);
 }
 
@@ -855,14 +834,11 @@ static void do_forth (HyperPage me) {
 	}
 }
 
-static void menu_cb_forth (EDITOR_ARGS) {
-	EDITOR_IAM (HyperPage);
+static void menu_cb_forth (HyperPage me, EDITOR_ARGS_DIRECT) {
 	do_forth (me);
 }
 
-static void gui_button_cb_forth (I, GuiButtonEvent event) {
-	(void) event;
-	iam (HyperPage);
+static void gui_button_cb_forth (HyperPage me, GuiButtonEvent /* event */) {
 	do_forth (me);
 }
 
@@ -874,14 +850,14 @@ void structHyperPage :: v_createMenus () {
 		Editor_addCommand (this, U"File", U"Page setup...", 0, menu_cb_pageSetup);
 	#endif
 	Editor_addCommand (this, U"File", U"Print page...", 'P', menu_cb_print);
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
 
 	if (our v_hasHistory ()) {
 		Editor_addMenu (this, U"Go to", 0);
 		Editor_addCommand (this, U"Go to", U"Search for page...", 0, menu_cb_searchForPage);
 		Editor_addCommand (this, U"Go to", U"Back", GuiMenu_OPTION | GuiMenu_LEFT_ARROW, menu_cb_back);
 		Editor_addCommand (this, U"Go to", U"Forward", GuiMenu_OPTION | GuiMenu_RIGHT_ARROW, menu_cb_forth);
-		Editor_addCommand (this, U"Go to", U"-- page --", 0, NULL);
+		Editor_addCommand (this, U"Go to", U"-- page --", 0, nullptr);
 		Editor_addCommand (this, U"Go to", U"Page up", GuiMenu_PAGE_UP, menu_cb_pageUp);
 		Editor_addCommand (this, U"Go to", U"Page down", GuiMenu_PAGE_DOWN, menu_cb_pageDown);
 	}
@@ -893,32 +869,27 @@ void structHyperPage :: v_createMenus () {
 	fontSizeButton_14 = Editor_addCommand (this, U"Font", U"14", GuiMenu_CHECKBUTTON, menu_cb_14);
 	fontSizeButton_18 = Editor_addCommand (this, U"Font", U"18", GuiMenu_CHECKBUTTON, menu_cb_18);
 	fontSizeButton_24 = Editor_addCommand (this, U"Font", U"24", GuiMenu_CHECKBUTTON, menu_cb_24);
-	Editor_addCommand (this, U"Font", U"-- font --", 0, NULL);
+	Editor_addCommand (this, U"Font", U"-- font --", 0, nullptr);
 	Editor_addCommand (this, U"Font", U"Font...", 0, menu_cb_font);
 }
 
 /********** **********/
 
-static void gui_drawingarea_cb_resize (I, GuiDrawingAreaResizeEvent event) {
-	iam (HyperPage);
-	if (my g == NULL) return;
-	Graphics_setWsViewport (my g, 0, event -> width, 0, event -> height);
-	Graphics_setWsWindow (my g, 0.0, my rightMargin = event -> width / resolution,
+static void gui_drawingarea_cb_resize (HyperPage me, GuiDrawingArea_ResizeEvent event) {
+	if (! my graphics) return;
+	Graphics_setWsViewport (my graphics.get(), 0.0, event -> width, 0.0, event -> height);
+	Graphics_setWsWindow (my graphics.get(), 0.0, my rightMargin = event -> width / resolution,
 		PAGE_HEIGHT - event -> height / resolution, PAGE_HEIGHT);
-	Graphics_updateWs (my g);
+	Graphics_updateWs (my graphics.get());
 	updateVerticalScrollBar (me);
 }
 
-static void gui_button_cb_previousPage (I, GuiButtonEvent event) {
-	(void) event;
-	iam (HyperPage);
+static void gui_button_cb_previousPage (HyperPage me, GuiButtonEvent /* event */) {
 	HyperPage_goToPage_i (me, my v_getCurrentPageNumber () > 1 ?
 		my v_getCurrentPageNumber () - 1 : my v_getNumberOfPages ());
 }
 
-static void gui_button_cb_nextPage (I, GuiButtonEvent event) {
-	(void) event;
-	iam (HyperPage);
+static void gui_button_cb_nextPage (HyperPage me, GuiButtonEvent /* event */) {
 	long currentPageNumber = my v_getCurrentPageNumber ();
 	HyperPage_goToPage_i (me, currentPageNumber < my v_getNumberOfPages () ? currentPageNumber + 1 : 1);
 }
@@ -951,25 +922,25 @@ void structHyperPage :: v_createChildren () {
 	drawingArea = GuiDrawingArea_createShown (our d_windowForm,
 		0, - Machine_getScrollBarWidth (),
 		y + ( our d_hasExtraRowOfTools ? 2 * height + 16 : height + 9 ), - Machine_getScrollBarWidth (),
-		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, gui_drawingarea_cb_resize, this, GuiDrawingArea_BORDER);
-	GuiDrawingArea_setSwipable (drawingArea, NULL, our verticalScrollBar);
+		gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, gui_drawingarea_cb_resize, this, GuiDrawingArea_BORDER);
+	GuiDrawingArea_setSwipable (drawingArea, nullptr, our verticalScrollBar);
 }
 
-void HyperPage_init (HyperPage me, const char32 *title, Data data) {
-	resolution = Gui_getResolution (NULL);
+void HyperPage_init (HyperPage me, const char32 *title, Daata data) {
+	resolution = Gui_getResolution (nullptr);
 	Editor_init (me, 0, 0, (int) floor (6 * resolution + 30), 800, title, data);
 	#if motif
 		Melder_assert (XtWindow (my drawingArea -> d_widget));
 	#endif
-	my g = Graphics_create_xmdrawingarea (my drawingArea);
-	Graphics_setAtSignIsLink (my g, TRUE);
-	Graphics_setDollarSignIsCode (my g, TRUE);
-	Graphics_setFont (my g, kGraphics_font_TIMES);
+	my graphics = Graphics_create_xmdrawingarea (my drawingArea);
+	Graphics_setAtSignIsLink (my graphics.get(), true);
+	Graphics_setDollarSignIsCode (my graphics.get(), true);
+	Graphics_setFont (my graphics.get(), kGraphics_font_TIMES);
 	if (my p_font != kGraphics_font_TIMES && my p_font != kGraphics_font_HELVETICA)
 		my pref_font () = my p_font = kGraphics_font_TIMES;   // ensure Unicode compatibility
 	setFontSize (me, my p_fontSize);
 
-struct structGuiDrawingAreaResizeEvent event = { my drawingArea, 0 };
+struct structGuiDrawingArea_ResizeEvent event { my drawingArea, 0 };
 event. width  = GuiControl_getWidth  (my drawingArea);
 event. height = GuiControl_getHeight (my drawingArea);
 gui_drawingarea_cb_resize (me, & event);
@@ -978,8 +949,8 @@ gui_drawingarea_cb_resize (me, & event);
 }
 
 void HyperPage_clear (HyperPage me) {
-	Graphics_updateWs (my g);
-	forget (my links);
+	Graphics_updateWs (my graphics.get());
+	my links. removeAllItems();
 }
 
 void structHyperPage :: v_dataChanged () {
diff --git a/sys/HyperPage.h b/sys/HyperPage.h
index 4bae4a1..1f55e23 100644
--- a/sys/HyperPage.h
+++ b/sys/HyperPage.h
@@ -4,40 +4,41 @@
  *
  * Copyright (C) 1992-2011,2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
 #include "Collection.h"
 #include "Graphics.h"
 
-Thing_define (HyperLink, Data) {
+Thing_define (HyperLink, Daata) {
 	double x1DC, x2DC, y1DC, y2DC;
 };
 
-HyperLink HyperLink_create (const char32 *name, double x1, double x2, double y1, double y2);
+autoHyperLink HyperLink_create (const char32 *name, double x1, double x2, double y1, double y2);
 
 Thing_define (HyperPage, Editor) {
 	GuiDrawingArea drawingArea;
 	GuiScrollBar verticalScrollBar;
 	bool d_hasExtraRowOfTools;
-	Graphics g, ps;
+	autoGraphics graphics;
+	Graphics ps;
 	double d_x, d_y, rightMargin, previousBottomSpacing;
 	long d_printingPageNumber;
-	Collection links;
-	int printing, top, mirror;
+	CollectionOf<structHyperLink> links;
+	bool printing;
+	int top, mirror;
 	char32 *insideHeader, *middleHeader, *outsideHeader;
 	char32 *insideFooter, *middleFooter, *outsideFooter;
 	char32 *entryHint; double entryPosition;
@@ -49,7 +50,7 @@ Thing_define (HyperPage, Editor) {
 	bool scriptErrorHasBeenNotified;
 	structMelderDir rootDirectory;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	bool v_editable ()
 		override { return false; }
@@ -110,7 +111,7 @@ int HyperPage_script (HyperPage me, double width_inches, double height_inches, c
 int HyperPage_goToPage (HyperPage me, const char32 *title);
 void HyperPage_goToPage_i (HyperPage me, long i);
 
-void HyperPage_init (HyperPage me, const char32 *title, Data data);
+void HyperPage_init (HyperPage me, const char32 *title, Daata data);
 
 void HyperPage_setEntryHint (HyperPage me, const char32 *entry);
 void HyperPage_initSheetOfPaper (HyperPage me);
diff --git a/sys/HyperPage_prefs.h b/sys/HyperPage_prefs.h
index 6525640..33204b7 100644
--- a/sys/HyperPage_prefs.h
+++ b/sys/HyperPage_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (HyperPage)
diff --git a/sys/InfoEditor.cpp b/sys/InfoEditor.cpp
index d0458aa..236e6ee 100644
--- a/sys/InfoEditor.cpp
+++ b/sys/InfoEditor.cpp
@@ -2,29 +2,28 @@
  *
  * Copyright (C) 2004-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "InfoEditor.h"
 
 Thing_implement (InfoEditor, TextEditor, 0);
 
-static InfoEditor theInfoEditor;
+static InfoEditor theReferenceToTheOnlyInfoEditor;
 
-void structInfoEditor :: v_destroy () {
-	theInfoEditor = NULL;   // undangle
+void structInfoEditor :: v_destroy () noexcept {
+	theReferenceToTheOnlyInfoEditor = nullptr;   // undangle
 	InfoEditor_Parent :: v_destroy ();
 }
 
@@ -34,23 +33,48 @@ void structInfoEditor :: v_clear () {
 
 void gui_information (const char32 *message);   // BUG
 void gui_information (const char32 *message) {
-	if (! theInfoEditor) {
-		theInfoEditor = Thing_new (InfoEditor);
-		TextEditor_init (theInfoEditor, U"");
-		Thing_setName (theInfoEditor, U"Praat Info");
+	if (! theReferenceToTheOnlyInfoEditor) {
+		autoInfoEditor editor = Thing_new (InfoEditor);
+		TextEditor_init (editor.get(), U"");
+		Thing_setName (editor.get(), U"Praat Info");
+		theReferenceToTheOnlyInfoEditor = editor.get();
+		editor.releaseToUser();
 	}
-	GuiText_setString (theInfoEditor -> textWidget, message);
-	GuiThing_show (theInfoEditor -> d_windowForm);
+	GuiText_setString (theReferenceToTheOnlyInfoEditor -> textWidget, message);
+	GuiThing_show (theReferenceToTheOnlyInfoEditor -> d_windowForm);
 	/*
 	 * Try to make sure that the invalidated text widget and the elements of the fronted window are redrawn before the next event.
 	 */
 	#if cocoa
-		//[theInfoEditor -> d_windowForm -> d_cocoaWindow   displayIfNeeded];   // apparently, this does not suffice
-		[theInfoEditor -> d_windowForm -> d_cocoaWindow   display];   // this displays the menu as well as the text
-		//[theInfoEditor -> textWidget -> d_cocoaTextView   displayIfNeeded];   // this displays only the text
-		//[theInfoEditor -> textWidget -> d_cocoaTextView   display];
+		#if 1
+			NSEvent *nsEvent = [NSApp
+				nextEventMatchingMask: NSAnyEventMask
+				untilDate: [NSDate distantPast]
+				inMode: NSDefaultRunLoopMode
+				dequeue: NO
+				];
+			if (nsEvent) {
+				NSUInteger nsEventType = [nsEvent type];
+				if (nsEventType == NSKeyDown) NSBeep ();
+				//[[nsEvent window]  sendEvent: nsEvent];
+			}
+		#else
+			/*
+				The following is an attempt to explicitly perform the actions that event polling is supposed to perform.
+				It would be nice not to actually have to poll events (with nextEventMatchingMask),
+				because we are not interested in the events; we're interested only in the graphics update.
+			*/
+			//[theReferenceToTheOnlyInfoEditor -> d_windowForm -> d_cocoaWindow   displayIfNeeded];   // apparently, this does not suffice
+			//[theReferenceToTheOnlyInfoEditor -> textWidget -> d_cocoaTextView   lockFocus];   // this displays the menu as well as the text
+			[theReferenceToTheOnlyInfoEditor -> d_windowForm -> d_cocoaWindow   display];   // this displays the menu as well as the text
+			//[theReferenceToTheOnlyInfoEditor -> textWidget -> d_cocoaTextView   displayIfNeeded];   // this displays only the text
+			//[theReferenceToTheOnlyInfoEditor -> textWidget -> d_cocoaTextView   display];
+			//[theReferenceToTheOnlyInfoEditor -> textWidget -> d_cocoaTextView   unlockFocus];   // this displays the menu as well as the text
+			[theReferenceToTheOnlyInfoEditor -> d_windowForm -> d_cocoaWindow   flushWindow];
+			[NSApp  updateWindows];   // called automatically?
+		#endif
 	#elif defined (macintosh)
-		GuiShell_drain (theInfoEditor -> d_windowForm);
+		GuiShell_drain (theReferenceToTheOnlyInfoEditor -> d_windowForm);
 	#endif
 }
 
diff --git a/sys/InfoEditor.h b/sys/InfoEditor.h
index ee9278d..032e683 100644
--- a/sys/InfoEditor.h
+++ b/sys/InfoEditor.h
@@ -4,25 +4,24 @@
  *
  * Copyright (C) 2004-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextEditor.h"
 
 Thing_define (InfoEditor, TextEditor) {
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	bool v_scriptable ()
 		override { return false; }
diff --git a/sys/Interpreter.cpp b/sys/Interpreter.cpp
index e5cea36..c681c4d 100644
--- a/sys/Interpreter.cpp
+++ b/sys/Interpreter.cpp
@@ -2,56 +2,18 @@
  *
  * Copyright (C) 1993-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2002/03/25 option menus
- * pb 2002/06/04 include the script compiler
- * pb 2002/09/26 removed bug: crashed if a line in a form contained only the word "comment"
- * pb 2002/11/25 Melder_double
- * pb 2002/12/10 include files
- * pb 2002/12/14 more informative error messages
- * pb 2003/05/19 Melder_atof
- * pb 2003/07/15 assert
- * pb 2003/07/19 if undefined fails
- * pb 2004/10/16 C++ compatible structs
- * pb 2004/12/06 made Interpreter_getArgumentsFromDialog resistant to changes in the script while the dialog is up
- * pb 2005/01/01 there can be spaces before the "form" statement
- * pb 2005/11/26 allow mixing of "option" and "button", as in Ui.c
- * pb 2006/01/11 local variables
- * pb 2007/02/05 preferencesDirectory$, homeDirectory$, temporaryDirectory$
- * pb 2007/04/02 allow comments (with '#' or ';' or empty lines) in forms
- * pb 2007/04/19 allow comments with '!' in forms
- * pb 2007/05/24 some wchar
- * pb 2007/06/09 wchar
- * pb 2007/08/12 more wchar
- * pb 2007/11/30 removed bug: allowed long arguments to the "call" statement (thanks to Ingmar Steiner)
- * pb 2007/12/10 predefined numeric variables macintosh/windows/unix
- * pb 2008/04/30 new Formula API
- * pb 2008/05/01 arrays
- * pb 2008/05/15 praatVersion, praatVersion$
- * pb 2009/01/04 Interpreter_voidExpression
- * pb 2009/01/17 arguments to UiForm callbacks
- * pb 2009/01/20 pause forms
- * pb 2009/03/17 split up structPraat
- * pb 2009/12/22 invokingButtonTitle
- * pb 2010/04/30 guard against leading nonbreaking spaces
- * pb 2011/05/14 C++
- * pb 2015/05/30 char32
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -79,14 +41,14 @@ extern structMelderDir praatDir;
 
 Thing_implement (InterpreterVariable, SimpleString, 0);
 
-void structInterpreterVariable :: v_destroy () {
+void structInterpreterVariable :: v_destroy () noexcept {
 	Melder_free (string);
 	Melder_free (stringValue);
 	NUMmatrix_free (numericArrayValue. data, 1, 1);
 	InterpreterVariable_Parent :: v_destroy ();
 }
 
-static InterpreterVariable InterpreterVariable_create (const char32 *key) {
+static autoInterpreterVariable InterpreterVariable_create (const char32 *key) {
 	try {
 		if (key [0] == U'e' && key [1] == U'\0')
 			Melder_throw (U"You cannot use 'e' as the name of a variable (e is the constant 2.71...).");
@@ -97,7 +59,7 @@ static InterpreterVariable InterpreterVariable_create (const char32 *key) {
 			Melder_throw (U"You cannot use 'undefined' as the name of a variable.");
 		autoInterpreterVariable me = Thing_new (InterpreterVariable);
 		my string = Melder_dup (key);
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Interpreter variable not created.");
 	}
@@ -105,7 +67,7 @@ static InterpreterVariable InterpreterVariable_create (const char32 *key) {
 
 Thing_implement (Interpreter, Thing, 0);
 
-void structInterpreter :: v_destroy () {
+void structInterpreter :: v_destroy () noexcept {
 	Melder_free (our environmentName);
 	for (int ipar = 1; ipar <= Interpreter_MAXNUM_PARAMETERS; ipar ++)
 		Melder_free (our arguments [ipar]);
@@ -117,31 +79,27 @@ void structInterpreter :: v_destroy () {
 		}
 		delete (our variablesMap);
 	}
-	#else
-	forget (our variables);
 	#endif
 	Interpreter_Parent :: v_destroy ();
 }
 
-Interpreter Interpreter_create (char32 *environmentName, ClassInfo editorClass) {
+autoInterpreter Interpreter_create (char32 *environmentName, ClassInfo editorClass) {
 	try {
 		autoInterpreter me = Thing_new (Interpreter);
 		#if USE_HASH
 		my variablesMap = new std::unordered_map <std::u32string, InterpreterVariable>;
 		my variablesMap -> max_load_factor (0.65f);
-		#else
-		my variables = SortedSetOfString_create ();
 		#endif
 		my environmentName = Melder_dup (environmentName);
 		my editorClass = editorClass;
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Interpreter not created.");
 	}
 }
 
-Interpreter Interpreter_createFromEnvironment (Editor editor) {
-	if (editor == NULL) return Interpreter_create (NULL, NULL);
+autoInterpreter Interpreter_createFromEnvironment (Editor editor) {
+	if (! editor) return Interpreter_create (nullptr, nullptr);
 	return Interpreter_create (editor -> name, editor -> classInfo);
 }
 
@@ -158,7 +116,7 @@ void Melder_includeIncludeFiles (char32 **text) {
 				Look for an include statement. If not found, we have finished.
 			 */
 			includeLocation = str32nequ (head, U"include ", 8) ? head : str32str (head, U"\ninclude ");
-			if (includeLocation == NULL) break;
+			if (! includeLocation) break;
 			if (includeLocation != head) includeLocation += 1;
 			numberOfIncludes += 1;
 			/*
@@ -213,7 +171,7 @@ void Melder_includeIncludeFiles (char32 **text) {
 }
 
 long Interpreter_readParameters (Interpreter me, char32 *text) {
-	char32 *formLocation = NULL;
+	char32 *formLocation = nullptr;
 	long npar = 0;
 	my dialogTitle [0] = U'\0';
 	/*
@@ -249,7 +207,7 @@ long Interpreter_readParameters (Interpreter me, char32 *text) {
 			while (*line == U' ' || *line == U'\t') line ++;
 			while (*line == U'#' || *line == U';' || *line == U'!' || *line == U'\n') {
 				newLine = str32chr (line, U'\n');
-				if (newLine == NULL)
+				if (! newLine)
 					Melder_throw (U"Unfinished form.");
 				line = newLine + 1;
 				while (*line == U' ' || *line == U'\t') line ++;
@@ -327,8 +285,8 @@ UiForm Interpreter_createForm (Interpreter me, GuiWindow parent, const char32 *p
 {
 	UiForm form = UiForm_create (parent,
 		Melder_cat (selectionOnly ? U"Run script (selection only): " : U"Run script: ", my dialogTitle),
-		okCallback, okClosure, NULL, NULL);
-	Any radio = NULL;
+		okCallback, okClosure, nullptr, nullptr);
+	UiField radio = nullptr;
 	if (path) UiForm_addText (form, U"$file", path);
 	for (int ipar = 1; ipar <= my numberOfParameters; ipar ++) {
 		/*
@@ -372,7 +330,7 @@ UiForm Interpreter_createForm (Interpreter me, GuiWindow parent, const char32 *p
 		/*
 		 * Strip parentheses and colon off parameter name.
 		 */
-		if ((p = str32chr (my parameters [ipar], U'(')) != NULL) {
+		if ((p = str32chr (my parameters [ipar], U'(')) != nullptr) {
 			*p = U'\0';
 			if (p - my parameters [ipar] > 0 && p [-1] == U'_') p [-1] = U'\0';
 		}
@@ -383,13 +341,13 @@ UiForm Interpreter_createForm (Interpreter me, GuiWindow parent, const char32 *p
 	return form;
 }
 
-void Interpreter_getArgumentsFromDialog (Interpreter me, Any dialog) {
+void Interpreter_getArgumentsFromDialog (Interpreter me, UiForm dialog) {
 	for (int ipar = 1; ipar <= my numberOfParameters; ipar ++) {
 		char32 parameter [100], *p;
 		/*
 		 * Strip parentheses and colon off parameter name.
 		 */
-		if ((p = str32chr (my parameters [ipar], U'(')) != NULL) {
+		if ((p = str32chr (my parameters [ipar], U'(')) != nullptr) {
 			*p = U'\0';
 			if (p - my parameters [ipar] > 0 && p [-1] == U'_') p [-1] = U'\0';
 		}
@@ -421,7 +379,7 @@ void Interpreter_getArgumentsFromDialog (Interpreter me, Any dialog) {
 			case Interpreter_CHOICE:
 			case Interpreter_OPTIONMENU: {
 				long integerValue = 0;
-				char32 *stringValue = NULL;
+				char32 *stringValue = nullptr;
 				integerValue = UiForm_getInteger (dialog, parameter);
 				stringValue = UiForm_getString (dialog, parameter);
 				Melder_free (my arguments [ipar]);
@@ -458,7 +416,7 @@ void Interpreter_getArgumentsFromString (Interpreter me, const char32 *arguments
 		/*
 		 * Strip parentheses and colon off parameter name.
 		 */
-		if ((p = str32chr (p, U'(')) != NULL) {
+		if ((p = str32chr (p, U'(')) != nullptr) {
 			*p = U'\0';
 			if (p - my parameters [ipar] > 0 && p [-1] == U'_') p [-1] = U'\0';
 		}
@@ -571,7 +529,7 @@ void Interpreter_getArgumentsFromArgs (Interpreter me, int narg, Stackel args) {
 		/*
 		 * Strip parentheses and colon off parameter name.
 		 */
-		if ((p = str32chr (p, U'(')) != NULL) {
+		if ((p = str32chr (p, U'(')) != nullptr) {
 			*p = U'\0';
 			if (p - my parameters [ipar] > 0 && p [-1] == U'_') p [-1] = U'\0';
 		}
@@ -590,8 +548,8 @@ void Interpreter_getArgumentsFromArgs (Interpreter me, int narg, Stackel args) {
 		Stackel arg = & args [++ iarg];
 		my arguments [ipar] =
 			arg -> which == Stackel_NUMBER ? Melder_dup (Melder_double (arg -> number)) :
-			arg -> which == Stackel_STRING ? Melder_dup (arg -> string) : NULL;   // replace with the actual arguments
-		Melder_assert (my arguments [ipar] != NULL);
+			arg -> which == Stackel_STRING ? Melder_dup (arg -> string) : nullptr;   // replace with the actual arguments
+		Melder_assert (my arguments [ipar]);
 	}
 	if (iarg < narg)
 		Melder_throw (U"Found ", narg, U" arguments but expected only ", iarg, U".");
@@ -646,46 +604,47 @@ void Interpreter_getArgumentsFromArgs (Interpreter me, int narg, Stackel args) {
 
 static void Interpreter_addNumericVariable (Interpreter me, const char32 *key, double value) {
 	#if USE_HASH
-	InterpreterVariable variable = InterpreterVariable_create (key);
+	autoInterpreterVariable variable = InterpreterVariable_create (key);
 	variable -> numericValue = value;
-	(*my variablesMap) [key] = variable;
+	(*my variablesMap) [key] = variable.get();   // YUCK
+	variable.releaseToAmbiguousOwner();
 	#else
 	autoInterpreterVariable variable = InterpreterVariable_create (key);
 	variable -> numericValue = value;
-	Collection_addItem (my variables, variable.transfer());
+	my variables. addItem_move (variable.move());
 	#endif
 }
 
 static void Interpreter_addStringVariable (Interpreter me, const char32 *key, const char32 *value) {
 	#if USE_HASH
-	InterpreterVariable variable = InterpreterVariable_create (key);
+	autoInterpreterVariable variable = InterpreterVariable_create (key);
 	variable -> stringValue = Melder_dup (value);
-	(*my variablesMap) [key] = variable;
+	(*my variablesMap) [key] = variable.get();   // YUCK
+	variable.releaseToAmbiguousOwner();
 	#else
 	autoInterpreterVariable variable = InterpreterVariable_create (key);
 	variable -> stringValue = Melder_dup (value);
-	Collection_addItem (my variables, variable.transfer());
+	my variables. addItem_move (variable.move());
 	#endif
 }
 
 InterpreterVariable Interpreter_hasVariable (Interpreter me, const char32 *key) {
-	Melder_assert (key != NULL);
+	Melder_assert (key);
 	#if USE_HASH
 	auto it = my variablesMap -> find (key [0] == U'.' ? Melder_cat (my procedureNames [my callDepth], key) : key);
 	if (it != my variablesMap -> end()) {
 		return it -> second;
 	} else {
-		return NULL;
+		return nullptr;
 	}
 	#else
-	long variableNumber = SortedSetOfString_lookUp (my variables,
-		key [0] == U'.' ? Melder_cat (my procedureNames [my callDepth], key) : key);
-	return variableNumber ? (InterpreterVariable) my variables -> item [variableNumber] : NULL;
+	long variableNumber = my variables. lookUp (key [0] == U'.' ? Melder_cat (my procedureNames [my callDepth], key) : key);
+	return variableNumber ? my variables.at [variableNumber] : nullptr;
 	#endif
 }
 
 InterpreterVariable Interpreter_lookUpVariable (Interpreter me, const char32 *key) {
-	Melder_assert (key != NULL);
+	Melder_assert (key);
 	const char32 *variableNameIncludingProcedureName =
 		key [0] == U'.' ? Melder_cat (my procedureNames [my callDepth], key) : key;
 	#if USE_HASH
@@ -696,19 +655,19 @@ InterpreterVariable Interpreter_lookUpVariable (Interpreter me, const char32 *ke
 	/*
 	 * The variable doesn't yet exist: create a new one.
 	 */
-	InterpreterVariable variable = InterpreterVariable_create (variableNameIncludingProcedureName);
-	(*my variablesMap) [variableNameIncludingProcedureName] = variable;
-	return variable;
+	autoInterpreterVariable variable = InterpreterVariable_create (variableNameIncludingProcedureName);
+	InterpreterVariable variable_ref = variable.get();
+	variable.releaseToAmbiguousOwner();   // YUCK
+	(*my variablesMap) [variableNameIncludingProcedureName] = variable_ref;
+	return variable_ref;
 	#else
-	long variableNumber = SortedSetOfString_lookUp (my variables, variableNameIncludingProcedureName);
-	if (variableNumber) return (InterpreterVariable) my variables -> item [variableNumber];   // already exists
+	long variableNumber = my variables. lookUp (variableNameIncludingProcedureName);
+	if (variableNumber) return my variables.at [variableNumber];   // already exists
 	/*
 	 * The variable doesn't yet exist: create a new one.
 	 */
 	autoInterpreterVariable variable = InterpreterVariable_create (variableNameIncludingProcedureName);
-	InterpreterVariable variable_ref = variable.peek();
-	Collection_addItem (my variables, variable.transfer());
-	return variable_ref;
+	return my variables. addItem_move (variable.move());
 	#endif
 }
 
@@ -768,15 +727,16 @@ void Interpreter_run (Interpreter me, char32 *text) {
 		autoMelderString command2;
 		autoMelderString buffer;
 		long numberOfLines = 0, assertErrorLineNumber = 0, callStack [1 + Interpreter_MAX_CALL_DEPTH];
-		int atLastLine = FALSE, fromif = FALSE, fromendfor = FALSE, callDepth = 0, chopped = 0, ipar;
+		bool atLastLine = false, fromif = false, fromendfor = false;
+		int callDepth = 0, chopped = 0, ipar;
 		my callDepth = 0;
 		/*
-		 * The "environment" is NULL if we are in the Praat shell, or an editor otherwise.
+		 * The "environment" is null if we are in the Praat shell, or an editor otherwise.
 		 */
 		if (my editorClass) {
 			praatP. editor = praat_findEditorFromString (my environmentName);
 		} else {
-			praatP. editor = NULL;
+			praatP. editor = nullptr;
 		}
 		/*
 		 * Start.
@@ -788,7 +748,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 		while (! atLastLine) {
 			char32 *endOfLine = command;
 			while (*endOfLine != U'\n' && *endOfLine != U'\0') endOfLine ++;
-			if (*endOfLine == U'\0') atLastLine = TRUE;
+			if (*endOfLine == U'\0') atLastLine = true;
 			*endOfLine = U'\0';
 			numberOfLines ++;
 			command = endOfLine + 1;
@@ -842,9 +802,6 @@ void Interpreter_run (Interpreter me, char32 *text) {
 			forget (var);
 		}
 		my variablesMap -> clear ();
-		#else
-		forget (my variables);
-		my variables = SortedSetOfString_create ();
 		#endif
 		for (ipar = 1; ipar <= my numberOfParameters; ipar ++) {
 			char32 parameter [200];
@@ -864,7 +821,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 		Interpreter_addStringVariable (me, U"newline$", U"\n");
 		Interpreter_addStringVariable (me, U"tab$", U"\t");
 		Interpreter_addStringVariable (me, U"shellDirectory$", Melder_getShellDirectory ());
-		structMelderDir dir = { { 0 } }; Melder_getDefaultDir (& dir);
+		structMelderDir dir { { 0 } }; Melder_getDefaultDir (& dir);
 		Interpreter_addStringVariable (me, U"defaultDirectory$", Melder_dirToPath (& dir));
 		Interpreter_addStringVariable (me, U"preferencesDirectory$", Melder_dirToPath (& praatDir));
 		Melder_getHomeDir (& dir);
@@ -927,7 +884,8 @@ void Interpreter_run (Interpreter me, char32 *text) {
 					 * Found a left quote. Search for a matching right quote.
 					 */
 					char32 *q = p + 1, varName [300], *r, *s, *colon;
-					int precision = -1, percent = FALSE;
+					int precision = -1;
+					bool percent = false;
 					while (*q != U'\0' && *q != U'\'' && q - p < 299) q ++;
 					if (*q == U'\0') break;   // no matching right quote? done with this line!
 					if (q - p == 1 || q - p >= 299) continue;   // ignore empty and too long variable names
@@ -936,11 +894,11 @@ void Interpreter_run (Interpreter me, char32 *text) {
 					 * Found a right quote. Get potential variable name.
 					 */
 					for (r = p + 1, s = varName; q - r > 0; r ++, s ++) *s = *r;
-					*s = U'\0';   /* Trailing null byte. */
+					*s = U'\0';   // trailing null byte
 					colon = str32chr (varName, U':');
 					if (colon) {
 						precision = a32tol (colon + 1);
-						if (str32chr (colon + 1, U'%')) percent = TRUE;
+						if (str32chr (colon + 1, U'%')) percent = true;
 						*colon = '\0';
 					}
 					InterpreterVariable var = Interpreter_hasVariable (me, varName);
@@ -1104,7 +1062,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 							double value;
 							Interpreter_numericExpression (me, command2.string + 7, & value);
 							if (value == 0.0 || value == NUMundefined) {
-								assertionFailed = TRUE;
+								assertionFailed = true;
 								Melder_throw (U"Script assertion fails in line ", lineNumber,
 									U" (", value == 0.0 ? U"false" : U"undefined", U"):\n   ", command2.string + 7);
 							}
@@ -1231,7 +1189,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 								for (iline = lineNumber - 1; iline > 0; iline --) {
 									char32 *line = lines [iline];
 									if (line [0] == U'f' && line [1] == U'o' && line [2] == U'r' && line [3] == U' ') {
-										if (depth == 0) { lineNumber = iline - 1; fromendfor = TRUE; break; }   // go before 'for'
+										if (depth == 0) { lineNumber = iline - 1; fromendfor = true; break; }   // go before 'for'
 										else depth --;
 									} else if (str32nequ (lines [iline], U"endfor", 6) && wordEnd (lines [iline] [6])) {
 										depth ++;
@@ -1270,7 +1228,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 						} else if (str32nequ (command2.string, U"elsif ", 6) || str32nequ (command2.string, U"elif ", 5)) {
 							if (fromif) {
 								double value;
-								fromif = FALSE;
+								fromif = false;
 								Interpreter_numericExpression (me, command2.string + 5, & value);
 								if (value == 0.0) {
 									int depth = 0;
@@ -1283,7 +1241,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 											if (depth == 0) { lineNumber = iline; break; }   // go after 'else'
 										} else if ((str32nequ (lines [iline], U"elsif", 5) && wordEnd (lines [iline] [5]))
 											|| (str32nequ (lines [iline], U"elif", 4) && wordEnd (lines [iline] [4]))) {
-											if (depth == 0) { lineNumber = iline - 1; fromif = TRUE; break; }   // go at next 'elsif' or 'elif'
+											if (depth == 0) { lineNumber = iline - 1; fromif = true; break; }   // go at next 'elsif' or 'elif'
 										} else if (str32nequ (lines [iline], U"if ", 3)) {
 											depth ++;
 										}
@@ -1329,7 +1287,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 							InterpreterVariable var = Interpreter_lookUpVariable (me, varpos);
 							Interpreter_numericExpression (me, topos + 4, & toValue);
 							if (fromendfor) {
-								fromendfor = FALSE;
+								fromendfor = false;
 								loopVariable = var -> numericValue + 1.0;
 							} else if (frompos) {
 								*topos = '\0';
@@ -1361,20 +1319,20 @@ void Interpreter_run (Interpreter me, char32 *text) {
 						break;
 					case U'g':
 						if (str32nequ (command2.string, U"goto ", 5)) {
-							char32 labelName [1+Interpreter_MAX_LABEL_LENGTH], *space;
-							int dojump = TRUE, ilabel;
+							char32 labelName [1+Interpreter_MAX_LABEL_LENGTH];
 							str32ncpy (labelName, command2.string + 5, 1+Interpreter_MAX_LABEL_LENGTH);
 							labelName [Interpreter_MAX_LABEL_LENGTH] = U'\0';
-							space = str32chr (labelName, U' ');
+							char32 *space = str32chr (labelName, U' ');
 							if (space == labelName) Melder_throw (U"Missing label name after 'goto'.");
+							bool dojump = true;
 							if (space) {
 								double value;
 								*space = '\0';
 								Interpreter_numericExpression (me, command2.string + 6 + str32len (labelName), & value);
-								if (value == 0.0) dojump = FALSE;
+								if (value == 0.0) dojump = false;
 							}
 							if (dojump) {
-								ilabel = lookupLabel (me, labelName);
+								int ilabel = lookupLabel (me, labelName);
 								lineNumber = my labelLines [ilabel];   // loop will add 1
 							}
 						} else fail = true;
@@ -1396,7 +1354,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 									} else if (str32nequ (lines [iline], U"else", 4)) {
 										if (depth == 0) { lineNumber = iline; break; }   // go after 'else'
 									} else if (str32nequ (lines [iline], U"elsif ", 6) || str32nequ (lines [iline], U"elif ", 5)) {
-										if (depth == 0) { lineNumber = iline - 1; fromif = TRUE; break; }   // go at 'elsif'
+										if (depth == 0) { lineNumber = iline - 1; fromif = true; break; }   // go at 'elsif'
 									} else if (str32nequ (lines [iline], U"if ", 3)) {
 										depth ++;
 									}
@@ -1559,9 +1517,15 @@ void Interpreter_run (Interpreter me, char32 *text) {
 								}
 								if (*p == U'\n' || *p == U'\0')
 									Melder_throw (U"Missing closing bracket (]) in indexed variable.");
-								double numericIndexValue;
-								Interpreter_numericExpression (me, index.string, & numericIndexValue);
-								MelderString_append (& indexedVariableName, numericIndexValue);
+								struct Formula_Result result;
+								Interpreter_anyExpression (me, index.string, & result);
+								if (result.expressionType == kFormula_EXPRESSION_TYPE_NUMERIC) {
+									double numericIndexValue = result.result.numericResult;
+									MelderString_append (& indexedVariableName, numericIndexValue);
+								} else if (result.expressionType == kFormula_EXPRESSION_TYPE_STRING) {
+									MelderString_append (& indexedVariableName, U"\"", result.result.stringResult, U"\"");
+									Melder_free (result.result.stringResult);
+								}
 								MelderString_appendCharacter (& indexedVariableName, *p);
 								if (*p == U']') {
 									break;
@@ -1698,8 +1662,15 @@ void Interpreter_run (Interpreter me, char32 *text) {
 								}
 								if (*p == U'\n' || *p == U'\0')
 									Melder_throw (U"Missing closing bracket (]) in indexed variable.");
-								Interpreter_numericExpression (me, index.string, & value);
-								MelderString_append (& indexedVariableName, value);
+								struct Formula_Result result;
+								Interpreter_anyExpression (me, index.string, & result);
+								if (result.expressionType == kFormula_EXPRESSION_TYPE_NUMERIC) {
+									double numericIndexValue = result.result.numericResult;
+									MelderString_append (& indexedVariableName, numericIndexValue);
+								} else if (result.expressionType == kFormula_EXPRESSION_TYPE_STRING) {
+									MelderString_append (& indexedVariableName, U"\"", result.result.stringResult, U"\"");
+									Melder_free (result.result.stringResult);
+								}
 								MelderString_appendCharacter (& indexedVariableName, *p);
 								if (*p == ']') {
 									break;
@@ -1771,7 +1742,7 @@ void Interpreter_run (Interpreter me, char32 *text) {
 							 * Modify an existing variable.
 							 */
 							InterpreterVariable var = Interpreter_hasVariable (me, variableName);
-							if (var == NULL) Melder_throw (U"Unknown variable ", variableName, U".");
+							if (! var) Melder_throw (U"Unknown variable ", variableName, U".");
 							if (var -> numericValue == NUMundefined) {
 								/* Keep it that way. */
 							} else {
@@ -1853,17 +1824,17 @@ void Interpreter_stop (Interpreter me) {
 }
 
 void Interpreter_voidExpression (Interpreter me, const char32 *expression) {
-	Formula_compile (me, NULL, expression, kFormula_EXPRESSION_TYPE_NUMERIC, FALSE);
+	Formula_compile (me, nullptr, expression, kFormula_EXPRESSION_TYPE_NUMERIC, false);
 	struct Formula_Result result;
 	Formula_run (0, 0, & result);
 }
 
 void Interpreter_numericExpression (Interpreter me, const char32 *expression, double *value) {
-	Melder_assert (value != NULL);
+	Melder_assert (value);
 	if (str32str (expression, U"(=")) {
 		*value = Melder_atof (expression);
 	} else {
-		Formula_compile (me, NULL, expression, kFormula_EXPRESSION_TYPE_NUMERIC, FALSE);
+		Formula_compile (me, nullptr, expression, kFormula_EXPRESSION_TYPE_NUMERIC, false);
 		struct Formula_Result result;
 		Formula_run (0, 0, & result);
 		*value = result. result.numericResult;
@@ -1871,21 +1842,21 @@ void Interpreter_numericExpression (Interpreter me, const char32 *expression, do
 }
 
 void Interpreter_stringExpression (Interpreter me, const char32 *expression, char32 **value) {
-	Formula_compile (me, NULL, expression, kFormula_EXPRESSION_TYPE_STRING, FALSE);
+	Formula_compile (me, nullptr, expression, kFormula_EXPRESSION_TYPE_STRING, false);
 	struct Formula_Result result;
 	Formula_run (0, 0, & result);
 	*value = result. result.stringResult;
 }
 
 void Interpreter_numericArrayExpression (Interpreter me, const char32 *expression, struct Formula_NumericArray *value) {
-	Formula_compile (me, NULL, expression, kFormula_EXPRESSION_TYPE_NUMERIC_ARRAY, FALSE);
+	Formula_compile (me, nullptr, expression, kFormula_EXPRESSION_TYPE_NUMERIC_ARRAY, false);
 	struct Formula_Result result;
 	Formula_run (0, 0, & result);
 	*value = result. result.numericArrayResult;
 }
 
 void Interpreter_anyExpression (Interpreter me, const char32 *expression, struct Formula_Result *result) {
-	Formula_compile (me, NULL, expression, kFormula_EXPRESSION_TYPE_UNKNOWN, FALSE);
+	Formula_compile (me, nullptr, expression, kFormula_EXPRESSION_TYPE_UNKNOWN, false);
 	Formula_run (0, 0, result);
 }
 
diff --git a/sys/Interpreter.h b/sys/Interpreter.h
index 7c4b2da..16a5b7a 100644
--- a/sys/Interpreter.h
+++ b/sys/Interpreter.h
@@ -2,32 +2,27 @@
 #define _Interpreter_h_
 /* Interpreter.h
  *
- * Copyright (C) 1993-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1993-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Collection.h"
 #include "Gui.h"
 #include "Formula.h"
 
-#if defined (macintosh) && useCarbon
-	#define USE_HASH  0
-#else
-	#define USE_HASH  1
-#endif
+#define USE_HASH  1
 
 #if USE_HASH
 #include <string>
@@ -39,7 +34,7 @@ Thing_define (InterpreterVariable, SimpleString) {
 	double numericValue;
 	struct Formula_NumericArray numericArrayValue;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
@@ -66,16 +61,16 @@ Thing_define (Interpreter, Thing) {
 	#if USE_HASH
 	std::unordered_map <std::u32string, InterpreterVariable> *variablesMap;
 	#else
-	SortedSetOfString variables;
+	SortedSetOfStringOf<structInterpreterVariable> variables;
 	#endif
 	bool running, stopped;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
-Interpreter Interpreter_create (char32 *environmentName, ClassInfo editorClass);
-Interpreter Interpreter_createFromEnvironment (Editor editor);
+autoInterpreter Interpreter_create (char32 *environmentName, ClassInfo editorClass);
+autoInterpreter Interpreter_createFromEnvironment (Editor editor);
 
 void Melder_includeIncludeFiles (char32 **text);
 long Interpreter_readParameters (Interpreter me, char32 *text);
@@ -83,7 +78,7 @@ Thing_declare (UiForm);
 UiForm Interpreter_createForm (Interpreter me, GuiWindow parent, const char32 *fileName,
 	void (*okCallback) (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *closure), void *okClosure,
 	bool selectionOnly);
-void Interpreter_getArgumentsFromDialog (Interpreter me, Any dialog);
+void Interpreter_getArgumentsFromDialog (Interpreter me, UiForm dialog);
 void Interpreter_getArgumentsFromString (Interpreter me, const char32 *arguments);
 void Interpreter_getArgumentsFromArgs (Interpreter me, int nargs, Stackel args);
 void Interpreter_run (Interpreter me, char32 *text);   // destroys 'text'
diff --git a/sys/Interpreter_decl.h b/sys/Interpreter_decl.h
deleted file mode 100644
index 4bbbae2..0000000
--- a/sys/Interpreter_decl.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _Interpreter_decl_h_
-#define _Interpreter_decl_h_
-/* Interpreter_decl.h
- *
- * Copyright (C) 1993-2011 Paul Boersma
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-Thing_declare (Interpreter);
-
-/* End of file Interpreter_decl.h */
-#endif
diff --git a/sys/ManPage.cpp b/sys/ManPage.cpp
index 594690b..bbbb117 100644
--- a/sys/ManPage.cpp
+++ b/sys/ManPage.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1996-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPage.h"
diff --git a/sys/ManPage.h b/sys/ManPage.h
index 1d91c6d..d4e040c 100644
--- a/sys/ManPage.h
+++ b/sys/ManPage.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1996-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
diff --git a/sys/ManPage_enums.h b/sys/ManPage_enums.h
index 116b8ca..3e2d0b2 100644
--- a/sys/ManPage_enums.h
+++ b/sys/ManPage_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1996-2009,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kManPage_type, 1)
diff --git a/sys/ManPages.cpp b/sys/ManPages.cpp
index 0dde710..251d861 100644
--- a/sys/ManPages.cpp
+++ b/sys/ManPages.cpp
@@ -1,20 +1,19 @@
 /* ManPages.cpp
  *
- * Copyright (C) 1996-2012,2014,2015 Paul Boersma
+ * Copyright (C) 1996-2012,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -23,7 +22,7 @@
 #include "Interpreter.h"
 #include "praat.h"
 
-Thing_implement (ManPages, Data, 0);
+Thing_implement (ManPages, Daata, 0);
 
 #define LONGEST_FILE_NAME  55
 
@@ -36,10 +35,10 @@ static int isSingleWordCharacter (int c) {
 
 static long lookUp_unsorted (ManPages me, const char32 *title);
 
-void structManPages :: v_destroy () {
-	if (dynamic && pages) {
-		for (long ipage = 1; ipage <= pages -> size; ipage ++) {
-			ManPage page = (ManPage) pages -> item [ipage];
+void structManPages :: v_destroy () noexcept {
+	if (our dynamic) {
+		for (long ipage = 1; ipage <= our pages.size; ipage ++) {
+			ManPage page = our pages.at [ipage];
 			Melder_free (page -> title);
 			Melder_free (page -> author);
 			if (page -> paragraphs) {
@@ -54,24 +53,23 @@ void structManPages :: v_destroy () {
 			}
 		}
 	}
-	if (pages && titles)
-		for (long ipage = 1; ipage <= pages -> size; ipage ++) {
+	if (our titles)
+		for (long ipage = 1; ipage <= our pages.size; ipage ++) {
 			Melder_free (titles [ipage]);
 		}
-	forget (pages);
 	NUMvector_free <const char32 *> (titles, 1);
 	ManPages_Parent :: v_destroy ();
 }
 
 static const char32 *extractLink (const char32 *text, const char32 *p, char32 *link) {
 	char32 *to = link, *max = link + 300;
-	if (p == NULL) p = text;
+	if (! p) p = text;
 	/*
 	 * Search for next '@' that is not in a backslash sequence.
 	 */
 	for (;;) {
 		p = str32chr (p, U'@');
-		if (! p) return NULL;   // no more '@'
+		if (! p) return nullptr;   // no more '@'
 		if (p - text <= 0 || (p [-1] != U'\\' && (p - text <= 1 || p [-2] != U'\\'))) break;
 		p ++;
 	}
@@ -116,13 +114,14 @@ static void readOnePage (ManPages me, MelderReadText text) {
 		return;
 	}
 
-	ManPage page = Thing_new (ManPage);
-	page -> title = title;
+	autoManPage autopage = Thing_new (ManPage);
+	autopage -> title = title;
+	ManPage page = autopage.get();
 
 	/*
 	 * Add the page early, so that lookUp can find it.
 	 */
-	Collection_addItem (my pages, page);
+	my pages. addItem_move (autopage.move());
 
 	try {
 		page -> author = texgetw2 (text);
@@ -163,7 +162,7 @@ static void readOnePage (ManPages me, MelderReadText text) {
 		} catch (MelderError) {
 			Melder_throw (U"Cannot find text.");
 		}
-		for (const char32 *plink = extractLink (par -> text, NULL, link); plink != NULL; plink = extractLink (par -> text, plink, link)) {
+		for (const char32 *plink = extractLink (par -> text, nullptr, link); plink != nullptr; plink = extractLink (par -> text, plink, link)) {
 			/*
 			 * Now, `link' contains the link text, with spaces and all.
 			 * Transform it into a file name.
@@ -196,7 +195,7 @@ static void readOnePage (ManPages me, MelderReadText text) {
 				if (! MelderFile_exists (& file2)) {
 					Melder_warning (U"Cannot find script ", MelderFile_messageName (& file2), U".");
 				}
-				my executable = TRUE;
+				my executable = true;
 			} else {
 				char32 *q;
 				/*
@@ -235,15 +234,13 @@ static void readOnePage (ManPages me, MelderReadText text) {
 	page -> paragraphs = (ManPage_Paragraph) Melder_realloc (page -> paragraphs, (int64) sizeof (struct structManPage_Paragraph) * (par - page -> paragraphs));
 }
 void structManPages :: v_readText (MelderReadText text, int /*formatVersion*/) {
-	dynamic = TRUE;
-	pages = Ordered_create ();
+	our dynamic = true;
 	MelderDir_copy (& Data_directoryBeingRead, & rootDirectory);
 	readOnePage (this, text);
 }
 
-ManPages ManPages_create (void) {
-	ManPages me = Thing_new (ManPages);
-	my pages = Ordered_create ();
+autoManPages ManPages_create () {
+	autoManPages me = Thing_new (ManPages);
 	return me;
 }
 
@@ -255,7 +252,7 @@ void ManPages_addPage (ManPages me, const char32 *title, const char32 *author, l
 	page -> paragraphs = & paragraphs [0];
 	page -> author = author;
 	page -> date = date;
-	Collection_addItem (my pages, page.transfer());
+	my pages. addItem_move (page.move());
 }
 
 static int pageCompare (const void *first, const void *second) {
@@ -277,8 +274,8 @@ static long lookUp_unsorted (ManPages me, const char32 *title) {
 	/*
 	 * First try to match an unaltered 'title' with the titles of the man pages.
 	 */
-	for (i = 1; i <= my pages -> size; i ++) {
-		ManPage page = (ManPage) my pages -> item [i];
+	for (i = 1; i <= my pages.size; i ++) {
+		ManPage page = my pages.at [i];
 		if (str32equ (page -> title, title)) return i;
 	}
 
@@ -289,8 +286,8 @@ static long lookUp_unsorted (ManPages me, const char32 *title) {
 		char32 upperTitle [300];
 		Melder_sprint (upperTitle,300, title);
 		upperTitle [0] = toupper (upperTitle [0]);
-		for (i = 1; i <= my pages -> size; i ++) {
-			ManPage page = (ManPage) my pages -> item [i];
+		for (i = 1; i <= my pages.size; i ++) {
+			ManPage page = my pages.at [i];
 			if (str32equ (page -> title, upperTitle)) return i;
 		}
 	}
@@ -298,19 +295,21 @@ static long lookUp_unsorted (ManPages me, const char32 *title) {
 }
 
 static long lookUp_sorted (ManPages me, const char32 *title) {
-	static ManPage dummy;
+	static autoManPage dummy;
 	ManPage *page;
 	if (! dummy) dummy = Thing_new (ManPage);
 	dummy -> title = title;
-	page = (ManPage *) bsearch (& dummy, & my pages -> item [1], my pages -> size, sizeof (ManPage), pageCompare);
-	if (page) return (page - (ManPage *) & my pages -> item [1]) + 1;
+	page = (ManPage *) bsearch (& dummy, & my pages.at [1], my pages.size, sizeof (ManPage), pageCompare);   // noexcept
+	dummy -> title = nullptr;   // undangle
+	if (page) return (page - & my pages.at [1]) + 1;
 	if (islower (title [0]) || isupper (title [0])) {
 		char32 caseSwitchedTitle [300];
 		Melder_sprint (caseSwitchedTitle,300, title);
 		caseSwitchedTitle [0] = islower (title [0]) ? toupper (caseSwitchedTitle [0]) : tolower (caseSwitchedTitle [0]);
 		dummy -> title = caseSwitchedTitle;
-		page = (ManPage *) bsearch (& dummy, & my pages -> item [1], my pages -> size, sizeof (ManPage), pageCompare);
-		if (page) return (page - (ManPage *) & my pages -> item [1]) + 1;
+		page = (ManPage *) bsearch (& dummy, & my pages.at [1], my pages.size, sizeof (ManPage), pageCompare);   // noexcept
+		dummy -> title = nullptr;   // undangle
+		if (page) return (page - & my pages.at [1]) + 1;
 	}
 	return 0;
 }
@@ -319,24 +318,24 @@ static void grind (ManPages me) {
 	long ipage, ndangle = 0, jpage, grandNlinks, ilinkHither, ilinkThither;
 	long *grandLinksHither, *grandLinksThither;
 
-	qsort (& my pages -> item [1], my pages -> size, sizeof (ManPage), pageCompare);
+	qsort (& my pages.at [1], my pages.size, sizeof (ManPage), pageCompare);
 
 	/*
 	 * First pass: count and check links: fill in nlinksHither and nlinksThither.
 	 */
 	grandNlinks = 0;
-	for (ipage = 1; ipage <= my pages -> size; ipage ++) {
-		ManPage page = (ManPage) my pages -> item [ipage];
+	for (ipage = 1; ipage <= my pages.size; ipage ++) {
+		ManPage page = my pages.at [ipage];
 		int ipar;
 		for (ipar = 0; page -> paragraphs [ipar]. type; ipar ++) {
 			const char32 *text = page -> paragraphs [ipar]. text, *p;
 			char32 link [301];
-			if (text) for (p = extractLink (text, NULL, link); p != NULL; p = extractLink (text, p, link)) {
+			if (text) for (p = extractLink (text, nullptr, link); p != nullptr; p = extractLink (text, p, link)) {
 				if (link [0] == U'\\' && ((link [1] == U'F' && link [2] == U'I') || (link [1] == U'S' && link [2] == U'C')))
 					continue;   // ignore "FILE" links
 				if ((jpage = lookUp_sorted (me, link)) != 0) {
 					page -> nlinksThither ++;
-					((ManPage) my pages -> item [jpage]) -> nlinksHither ++;
+					my pages.at [jpage] -> nlinksHither ++;
 					grandNlinks ++;
 				} else {
 					MelderInfo_writeLine (U"Page \"", page -> title, U"\" contains a dangling link to \"", link, U"\".");
@@ -355,14 +354,14 @@ static void grind (ManPages me) {
 	 * Some optimization required: use only two mallocs.
 	 * Forget nlinksHither and nlinksThither.
 	 */
-	if (grandNlinks == 0) { my ground = TRUE; return; }
+	if (grandNlinks == 0) { my ground = true; return; }
 	if (! (grandLinksHither = NUMvector <long> (1, grandNlinks)) || ! (grandLinksThither = NUMvector <long> (1, grandNlinks))) {
 		Melder_flushError ();
 		return;
 	}
 	ilinkHither = ilinkThither = 0;
-	for (ipage = 1; ipage <= my pages -> size; ipage ++) {
-		ManPage page = (ManPage) my pages -> item [ipage];
+	for (ipage = 1; ipage <= my pages.size; ipage ++) {
+		ManPage page = my pages.at [ipage];
 		page -> linksHither = grandLinksHither + ilinkHither;
 		page -> linksThither = grandLinksThither + ilinkThither;
 		ilinkHither += page -> nlinksHither;
@@ -376,25 +375,24 @@ static void grind (ManPages me) {
 	 * Third pass: remember the links: fill in linksThither [1..nlinksThither] and linksHither [1..nlinksHither].
 	 * Rebuild nlinksHither and nlinksThither.
 	 */
-	for (ipage = 1; ipage <= my pages -> size; ipage ++) {
-		ManPage page = (ManPage) my pages -> item [ipage];
-		int ipar;
-		for (ipar = 0; page -> paragraphs [ipar]. type; ipar ++) {
+	for (ipage = 1; ipage <= my pages.size; ipage ++) {
+		ManPage page = my pages.at [ipage];
+		for (int ipar = 0; page -> paragraphs [ipar]. type; ipar ++) {
 			const char32 *text = page -> paragraphs [ipar]. text, *p;
 			char32 link [301];
-			if (text) for (p = extractLink (text, NULL, link); p != NULL; p = extractLink (text, p, link)) {
+			if (text) for (p = extractLink (text, nullptr, link); p != nullptr; p = extractLink (text, p, link)) {
 				if (link [0] == U'\\' && ((link [1] == U'F' && link [2] == U'I') || (link [1] == U'S' && link [2] == U'C')))
 					continue;   // ignore "FILE" links
 				if ((jpage = lookUp_sorted (me, link)) != 0) {
-					int ilink, alreadyPresent = FALSE;
-					for (ilink = 1; ilink <= page -> nlinksThither; ilink ++) {
+					bool alreadyPresent = false;
+					for (int ilink = 1; ilink <= page -> nlinksThither; ilink ++) {
 						if (page -> linksThither [ilink] == jpage) {
-							alreadyPresent = TRUE;
+							alreadyPresent = true;
 							break;
 						}
 					}
 					if (! alreadyPresent) {
-						ManPage otherPage = (ManPage) my pages -> item [jpage];
+						ManPage otherPage = my pages.at [jpage];
 						page -> linksThither [++ page -> nlinksThither] = jpage;
 						otherPage -> linksHither [++ otherPage -> nlinksHither] = ipage;
 					}
@@ -403,11 +401,11 @@ static void grind (ManPages me) {
 		}
 	}
 
-	my ground = TRUE;
+	my ground = true;
 }
 
 long ManPages_uniqueLinksHither (ManPages me, long ipage) {
-	ManPage page = (ManPage) my pages -> item [ipage];
+	ManPage page = my pages.at [ipage];
 	long result = page -> nlinksHither, ilinkHither, ilinkThither;
 	for (ilinkHither = 1; ilinkHither <= page -> nlinksHither; ilinkHither ++) {
 		long link = page -> linksHither [ilinkHither];
@@ -424,8 +422,8 @@ long ManPages_lookUp (ManPages me, const char32 *title) {
 
 static long ManPages_lookUp_caseSensitive (ManPages me, const char32 *title) {
 	if (! my ground) grind (me);
-	for (long i = 1; i <= my pages -> size; i ++) {
-		ManPage page = (ManPage) my pages -> item [i];
+	for (long i = 1; i <= my pages.size; i ++) {
+		ManPage page = my pages.at [i];
 		if (str32equ (page -> title, title)) return i;
 	}
 	return 0;
@@ -434,13 +432,13 @@ static long ManPages_lookUp_caseSensitive (ManPages me, const char32 *title) {
 const char32 **ManPages_getTitles (ManPages me, long *numberOfTitles) {
 	if (! my ground) grind (me);
 	if (! my titles) {
-		my titles = NUMvector <const char32 *> (1, my pages -> size);   // TODO
-		for (long i = 1; i <= my pages -> size; i ++) {
-			ManPage page = (ManPage) my pages -> item [i];
+		my titles = NUMvector <const char32 *> (1, my pages.size);   // TODO
+		for (long i = 1; i <= my pages.size; i ++) {
+			ManPage page = my pages.at [i];
 			my titles [i] = Melder_dup_f (page -> title);
 		}
 	}
-	*numberOfTitles = my pages -> size;
+	*numberOfTitles = my pages.size;
 	return my titles;
 }
 
@@ -499,17 +497,18 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 			pdfFile. path [str32len (pdfFile. path) - 5] = U'\0';   // delete extension ".html"
 			str32cpy (pdfFile. path + str32len (pdfFile. path),
 				Melder_cat (U"_", numberOfPictures, U".pdf"));
-			Graphics graphics = Graphics_create_pdffile (& pdfFile, 100, 0.0, paragraph -> width, 0.0, paragraph -> height);
-			Graphics_setFont (graphics, kGraphics_font_TIMES);
-			Graphics_setFontStyle (graphics, 0);
-			Graphics_setFontSize (graphics, 12);
-			Graphics_setWrapWidth (graphics, 0);
-			Graphics_setViewport (graphics, 0.0, paragraph -> width, 0.0, paragraph -> height);
-			paragraph -> draw (graphics);
-			Graphics_setViewport (graphics, 0, 1, 0, 1);
-			Graphics_setWindow (graphics, 0, 1, 0, 1);
-			Graphics_setTextAlignment (graphics, Graphics_LEFT, Graphics_BOTTOM);
-			forget (graphics);
+			{// scope
+				autoGraphics graphics = Graphics_create_pdffile (& pdfFile, 100, 0.0, paragraph -> width, 0.0, paragraph -> height);
+				Graphics_setFont (graphics.get(), kGraphics_font_TIMES);
+				Graphics_setFontStyle (graphics.get(), 0);
+				Graphics_setFontSize (graphics.get(), 12);
+				Graphics_setWrapWidth (graphics.get(), 0);
+				Graphics_setViewport (graphics.get(), 0.0, paragraph -> width, 0.0, paragraph -> height);
+				paragraph -> draw (graphics.get());
+				Graphics_setViewport (graphics.get(), 0, 1, 0, 1);
+				Graphics_setWindow (graphics.get(), 0, 1, 0, 1);
+				Graphics_setTextAlignment (graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
+			}
 			structMelderFile tiffFile;
 			MelderFile_copy (file, & tiffFile);
 			tiffFile. path [str32len (tiffFile. path) - 5] = U'\0';   // delete extension ".html"
@@ -524,72 +523,73 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 			continue;
 		}
 		if (type == kManPage_type_SCRIPT) {
-			autoInterpreter interpreter = Interpreter_createFromEnvironment (NULL);
+			autoInterpreter interpreter = Interpreter_createFromEnvironment (nullptr);
 			numberOfPictures ++;
 			structMelderFile pdfFile;
 			MelderFile_copy (file, & pdfFile);
 			pdfFile. path [str32len (pdfFile. path) - 5] = U'\0';   // delete extension ".html"
 			str32cpy (pdfFile. path + str32len (pdfFile.path),
 				Melder_cat (U"_", numberOfPictures, U".pdf"));
-			Graphics graphics = Graphics_create_pdffile (& pdfFile, 100, 0.0, paragraph -> width, 0.0, paragraph -> height);
-			Graphics_setFont (graphics, kGraphics_font_TIMES);
-			Graphics_setFontStyle (graphics, 0);
-			Graphics_setFontSize (graphics, 12);
-			Graphics_setWrapWidth (graphics, 0);
-			static structPraatApplication praatApplication;
-			static structPraatObjects praatObjects;
-			static structPraatPicture praatPicture;
-			theCurrentPraatApplication = & praatApplication;
-			theCurrentPraatApplication -> batch = true;
-			theCurrentPraatApplication -> topShell = theForegroundPraatApplication. topShell;   // needed for UiForm_create () in dialogs
-			theCurrentPraatObjects = (PraatObjects) & praatObjects;
-			theCurrentPraatPicture = (PraatPicture) & praatPicture;
-			theCurrentPraatPicture -> graphics = graphics;
-			theCurrentPraatPicture -> font = kGraphics_font_TIMES;
-			theCurrentPraatPicture -> fontSize = 12;
-			theCurrentPraatPicture -> lineType = Graphics_DRAWN;
-			theCurrentPraatPicture -> colour = Graphics_BLACK;
-			theCurrentPraatPicture -> lineWidth = 1.0;
-			theCurrentPraatPicture -> arrowSize = 1.0;
-			theCurrentPraatPicture -> speckleSize = 1.0;
-			theCurrentPraatPicture -> x1NDC = 0;
-			theCurrentPraatPicture -> x2NDC = paragraph -> width;
-			theCurrentPraatPicture -> y1NDC = 0;
-			theCurrentPraatPicture -> y2NDC = paragraph -> height;
-			Graphics_setViewport (graphics, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);			
-			Graphics_setWindow (graphics, 0.0, 1.0, 0.0, 1.0);
-			long x1DC, y1DC, x2DC, y2DC;
-			Graphics_WCtoDC (graphics, 0.0, 0.0, & x1DC, & y2DC);
-			Graphics_WCtoDC (graphics, 1.0, 1.0, & x2DC, & y1DC);
-			Graphics_resetWsViewport (graphics, x1DC, x2DC, y1DC, y2DC);
-			Graphics_setWsWindow (graphics, 0, paragraph -> width, 0, paragraph -> height);
-			theCurrentPraatPicture -> x1NDC = 0;
-			theCurrentPraatPicture -> x2NDC = paragraph -> width;
-			theCurrentPraatPicture -> y1NDC = 0;
-			theCurrentPraatPicture -> y2NDC = paragraph -> height;
-			Graphics_setViewport (graphics, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);			
 			{// scope
-				autoMelderProgressOff progress;
-				autoMelderWarningOff warning;
-				autoMelderSaveDefaultDir saveDir;
-				if (! MelderDir_isNull (& my rootDirectory)) {
-					Melder_setDefaultDir (& my rootDirectory);
-				}
-				try {
-					autostring32 text = Melder_dup (p);
-					Interpreter_run (interpreter.peek(), text.peek());
-				} catch (MelderError) {
-					trace (U"interpreter fails on ", pdfFile. path);
-					Melder_flushError ();
+				autoGraphics graphics = Graphics_create_pdffile (& pdfFile, 100, 0.0, paragraph -> width, 0.0, paragraph -> height);
+				Graphics_setFont (graphics.get(), kGraphics_font_TIMES);
+				Graphics_setFontStyle (graphics.get(), 0);
+				Graphics_setFontSize (graphics.get(), 12);
+				Graphics_setWrapWidth (graphics.get(), 0);
+				static structPraatApplication praatApplication;
+				static structPraatObjects praatObjects;
+				static structPraatPicture praatPicture;
+				theCurrentPraatApplication = & praatApplication;
+				theCurrentPraatApplication -> batch = true;
+				theCurrentPraatApplication -> topShell = theForegroundPraatApplication. topShell;   // needed for UiForm_create () in dialogs
+				theCurrentPraatObjects = (PraatObjects) & praatObjects;
+				theCurrentPraatPicture = (PraatPicture) & praatPicture;
+				theCurrentPraatPicture -> graphics = graphics.get();   // FIXME: should be move()?
+				theCurrentPraatPicture -> font = kGraphics_font_TIMES;
+				theCurrentPraatPicture -> fontSize = 12;
+				theCurrentPraatPicture -> lineType = Graphics_DRAWN;
+				theCurrentPraatPicture -> colour = Graphics_BLACK;
+				theCurrentPraatPicture -> lineWidth = 1.0;
+				theCurrentPraatPicture -> arrowSize = 1.0;
+				theCurrentPraatPicture -> speckleSize = 1.0;
+				theCurrentPraatPicture -> x1NDC = 0.0;
+				theCurrentPraatPicture -> x2NDC = paragraph -> width;
+				theCurrentPraatPicture -> y1NDC = 0.0;
+				theCurrentPraatPicture -> y2NDC = paragraph -> height;
+				Graphics_setViewport (graphics.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);
+				Graphics_setWindow (graphics.get(), 0.0, 1.0, 0.0, 1.0);
+				long x1DC, y1DC, x2DC, y2DC;
+				Graphics_WCtoDC (graphics.get(), 0.0, 0.0, & x1DC, & y2DC);
+				Graphics_WCtoDC (graphics.get(), 1.0, 1.0, & x2DC, & y1DC);
+				Graphics_resetWsViewport (graphics.get(), x1DC, x2DC, y1DC, y2DC);
+				Graphics_setWsWindow (graphics.get(), 0.0, paragraph -> width, 0.0, paragraph -> height);
+				theCurrentPraatPicture -> x1NDC = 0.0;
+				theCurrentPraatPicture -> x2NDC = paragraph -> width;
+				theCurrentPraatPicture -> y1NDC = 0.0;
+				theCurrentPraatPicture -> y2NDC = paragraph -> height;
+				Graphics_setViewport (graphics.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC);
+				{// scope
+					autoMelderProgressOff progress;
+					autoMelderWarningOff warning;
+					autoMelderSaveDefaultDir saveDir;
+					if (! MelderDir_isNull (& my rootDirectory)) {
+						Melder_setDefaultDir (& my rootDirectory);
+					}
+					try {
+						autostring32 text = Melder_dup (p);
+						Interpreter_run (interpreter.get(), text.peek());
+					} catch (MelderError) {
+						trace (U"interpreter fails on ", pdfFile. path);
+						Melder_flushError ();
+					}
 				}
+				Graphics_setViewport (graphics.get(), 0.0, 1.0, 0.0, 1.0);
+				Graphics_setWindow (graphics.get(), 0.0, 1.0, 0.0, 1.0);
+				Graphics_setTextAlignment (graphics.get(), Graphics_LEFT, Graphics_BOTTOM);
 			}
-			Graphics_setViewport (graphics, 0, 1, 0, 1);
-			Graphics_setWindow (graphics, 0, 1, 0, 1);
-			Graphics_setTextAlignment (graphics, Graphics_LEFT, Graphics_BOTTOM);
-			forget (graphics);
 			structMelderFile tiffFile;
 			MelderFile_copy (file, & tiffFile);
-			tiffFile. path [str32len (tiffFile. path) - 5] = '\0';   // delete extension ".html"
+			tiffFile. path [str32len (tiffFile. path) - 5] = U'\0';   // delete extension ".html"
 			str32cpy (tiffFile. path + str32len (tiffFile. path),
 				Melder_cat (U"_", numberOfPictures, U".png"));
 			system (Melder_peek32to8 (Melder_cat (U"/usr/local/bin/gs -q -dNOPAUSE "
@@ -635,9 +635,9 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 			p ++;
 		}
 		while (*p) {
-				if (wordItalic && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-				if (wordBold && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }
-				if (wordCode && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</code>"); wordCode = FALSE; }
+				if (wordItalic && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+				if (wordBold && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</b>"); wordBold = false; }
+				if (wordCode && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</code>"); wordCode = false; }
 			if (*p == U'@') {
 				char32 link [301], linkText [301], *q = link;
 				if (p [1] == U'@') {
@@ -686,48 +686,48 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 				}
 				MelderString_append (buffer, U"\">", linkText, U"</a>");
 			} else if (*p == U'%') {
-				if (inItalic) { MelderString_append (buffer, U"</i>"); inItalic = FALSE; p ++; }
-				else if (p [1] == U'%') { MelderString_append (buffer, U"<i>"); inItalic = TRUE; p += 2; }
-				else if (p [1] == U'#') { MelderString_append (buffer, U"<i><b>"); wordItalic = TRUE; wordBold = TRUE; p += 2; }
-				else { MelderString_append (buffer, U"<i>"); wordItalic = TRUE; p ++; }
+				if (inItalic) { MelderString_append (buffer, U"</i>"); inItalic = false; p ++; }
+				else if (p [1] == U'%') { MelderString_append (buffer, U"<i>"); inItalic = true; p += 2; }
+				else if (p [1] == U'#') { MelderString_append (buffer, U"<i><b>"); wordItalic = true; wordBold = true; p += 2; }
+				else { MelderString_append (buffer, U"<i>"); wordItalic = true; p ++; }
 			} else if (*p == U'_') {
 				if (inSub) {
-					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }*/
-					MelderString_append (buffer, U"</sub>"); inSub = FALSE; p ++;
+					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }*/
+					MelderString_append (buffer, U"</sub>"); inSub = false; p ++;
 				} else if (p [1] == U'_') {
-					if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }
-					MelderString_append (buffer, U"<sub>"); inSub = TRUE; p += 2;
+					if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }
+					MelderString_append (buffer, U"<sub>"); inSub = true; p += 2;
 				} else { MelderString_append (buffer, U"_"); p ++; }
 			} else if (*p == U'#') {
-				if (inBold) { MelderString_append (buffer, U"</b>"); inBold = FALSE; p ++; }
-				else if (p [1] == U'#') { MelderString_append (buffer, U"<b>"); inBold = TRUE; p += 2; }
-				else if (p [1] == U'%') { MelderString_append (buffer, U"<b><i>"); wordBold = TRUE; wordItalic = TRUE; p += 2; }
-				else { MelderString_append (buffer, U"<b>"); wordBold = TRUE; p ++; }
+				if (inBold) { MelderString_append (buffer, U"</b>"); inBold = false; p ++; }
+				else if (p [1] == U'#') { MelderString_append (buffer, U"<b>"); inBold = true; p += 2; }
+				else if (p [1] == U'%') { MelderString_append (buffer, U"<b><i>"); wordBold = true; wordItalic = true; p += 2; }
+				else { MelderString_append (buffer, U"<b>"); wordBold = true; p ++; }
 			} else if (*p == U'$') {
-				if (inCode) { MelderString_append (buffer, U"</code>"); inCode = FALSE; p ++; }
-				else if (p [1] == U'$') { MelderString_append (buffer, U"<code>"); inCode = TRUE; p += 2; }
-				else { MelderString_append (buffer, U"<code>"); wordCode = TRUE; p ++; }
+				if (inCode) { MelderString_append (buffer, U"</code>"); inCode = false; p ++; }
+				else if (p [1] == U'$') { MelderString_append (buffer, U"<code>"); inCode = true; p += 2; }
+				else { MelderString_append (buffer, U"<code>"); wordCode = true; p ++; }
 			} else if (*p == U'^') {
 				if (inSuper) {
-					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }*/
-					MelderString_append (buffer, U"</sup>"); inSuper = FALSE; p ++;
+					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }*/
+					MelderString_append (buffer, U"</sup>"); inSuper = false; p ++;
 				} else if (p [1] == U'^') {
-					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }*/
-					MelderString_append (buffer, U"<sup>"); inSuper = TRUE; p += 2;
+					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }*/
+					MelderString_append (buffer, U"<sup>"); inSuper = true; p += 2;
 				} else {
-					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }*/
-					MelderString_append (buffer, U"<sup>"); letterSuper = TRUE; p ++;
+					/*if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }*/
+					MelderString_append (buffer, U"<sup>"); letterSuper = true; p ++;
 				}
 			} else if (*p == U'}') {
-				if (inSmall) { MelderString_append (buffer, U"</font>"); inSmall = FALSE; p ++; }
+				if (inSmall) { MelderString_append (buffer, U"</font>"); inSmall = false; p ++; }
 				else { MelderString_append (buffer, U"}"); p ++; }
 			} else if (*p == U'\\' && p [1] == U's' && p [2] == U'{') {
-				MelderString_append (buffer, U"<font size=-1>"); inSmall = TRUE; p += 3;
+				MelderString_append (buffer, U"<font size=-1>"); inSmall = true; p += 3;
 			} else if (*p == U'\t' && inTable) {
 				MelderString_append (buffer, U"<td width=100 align=middle>"); p ++;
 			} else if (*p == U'<') {
@@ -737,9 +737,9 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 			} else if (*p == U'&') {
 				MelderString_append (buffer, U"&"); p ++;
 			} else {
-				/*if (wordItalic && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-				if (wordBold && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }
-				if (wordCode && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</code>"); wordCode = FALSE; }*/
+				/*if (wordItalic && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+				if (wordBold && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</b>"); wordBold = false; }
+				if (wordCode && ! isSingleWordCharacter (*p)) { MelderString_append (buffer, U"</code>"); wordCode = false; }*/
 				if (*p == U'\\') {
 					int kar1 = *++p, kar2 = *++p;
 					Longchar_Info info = Longchar_getInfo (kar1, kar2);
@@ -758,21 +758,21 @@ static void writeParagraphsAsHtml (ManPages me, MelderFile file, ManPage_Paragra
 					p ++;
 				}
 				if (letterSuper) {
-					if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = FALSE; }
-					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = FALSE; }
-					MelderString_append (buffer, U"</sup>"); letterSuper = FALSE;
+					if (wordItalic) { MelderString_append (buffer, U"</i>"); wordItalic = false; }
+					if (wordBold) { MelderString_append (buffer, U"</b>"); wordBold = false; }
+					MelderString_append (buffer, U"</sup>"); letterSuper = false;
 				}
 			}
 		}
-		if (inItalic || wordItalic) { MelderString_append (buffer, U"</i>"); inItalic = wordItalic = FALSE; }
-		if (inBold || wordBold) { MelderString_append (buffer, U"</b>"); inBold = wordBold = FALSE; }
-		if (inCode || wordCode) { MelderString_append (buffer, U"</code>"); inCode = wordCode = FALSE; }
-		if (inSub) { MelderString_append (buffer, U"</sub>"); inSub = FALSE; }
-		if (inSuper || letterSuper) { MelderString_append (buffer, U"</sup>"); inSuper = letterSuper = FALSE; }
-		if (inTable) { MelderString_append (buffer, U"</table>"); inTable = FALSE; }
+		if (inItalic || wordItalic) { MelderString_append (buffer, U"</i>"); inItalic = wordItalic = false; }
+		if (inBold || wordBold) { MelderString_append (buffer, U"</b>"); inBold = wordBold = false; }
+		if (inCode || wordCode) { MelderString_append (buffer, U"</code>"); inCode = wordCode = false; }
+		if (inSub) { MelderString_append (buffer, U"</sub>"); inSub = false; }
+		if (inSuper || letterSuper) { MelderString_append (buffer, U"</sup>"); inSuper = letterSuper = false; }
+		if (inTable) { MelderString_append (buffer, U"</table>"); inTable = false; }
 		MelderString_append (buffer, stylesInfo [paragraph -> type]. htmlOut, U"\n");
 	}
-	if (inList) { MelderString_append (buffer, ul ? U"</ul>\n" : U"</dl>\n"); inList = FALSE; }
+	if (inList) { MelderString_append (buffer, ul ? U"</ul>\n" : U"</dl>\n"); inList = false; }
 }
 
 static const char32 *month [] =
@@ -780,7 +780,7 @@ static const char32 *month [] =
 	  U"July", U"August", U"September", U"October", U"November", U"December" };
 
 static void writePageAsHtml (ManPages me, MelderFile file, long ipage, MelderString *buffer) {
-	ManPage page = (ManPage) my pages -> item [ipage];
+	ManPage page = my pages.at [ipage];
 	ManPage_Paragraph paragraphs = page -> paragraphs;
 	MelderString_append (buffer, U"<html><head><meta name=\"robots\" content=\"index,follow\">"
 		U"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"
@@ -801,12 +801,12 @@ static void writePageAsHtml (ManPages me, MelderFile file, long ipage, MelderStr
 		MelderString_append (buffer, U"<ul>\n");
 		for (ilink = 1; ilink <= page -> nlinksHither; ilink ++) {
 			long link = page -> linksHither [ilink];
-			int alreadyShown = FALSE;
+			bool alreadyShown = false;
 			for (jlink = 1; jlink <= page -> nlinksThither; jlink ++)
 				if (page -> linksThither [jlink] == link)
-					alreadyShown = TRUE;
+					alreadyShown = true;
 			if (! alreadyShown) {
-				const char32 *title = ((ManPage) my pages -> item [page -> linksHither [ilink]]) -> title, *p;
+				const char32 *title = my pages.at [page -> linksHither [ilink]] -> title, *p;
 				MelderString_append (buffer, U"<li><a href=\"");
 				for (p = title; *p; p ++) {
 					if (p - title >= LONGEST_FILE_NAME) break;
@@ -840,8 +840,8 @@ void ManPages_writeOneToHtmlFile (ManPages me, long ipage, MelderFile file) {
 void ManPages_writeAllToHtmlDir (ManPages me, const char32 *dirPath) {
 	structMelderDir dir;
 	Melder_pathToDir (dirPath, & dir);
-	for (long ipage = 1; ipage <= my pages -> size; ipage ++) {
-		ManPage page = (ManPage) my pages -> item [ipage];
+	for (long ipage = 1; ipage <= my pages.size; ipage ++) {
+		ManPage page = my pages.at [ipage];
 		char32 fileName [256];
 		Melder_assert (str32len (page -> title) < 256 - 100);
 		trace (U"page ", ipage, U": ", page -> title);
@@ -868,7 +868,7 @@ void ManPages_writeAllToHtmlDir (ManPages me, const char32 *dirPath) {
 		} catch (MelderError) {
 			Melder_clearError ();
 		}
-		if (oldText.peek() == NULL   // doesn't the file exist yet?
+		if (! oldText.peek()   // doesn't the file exist yet?
 			|| str32cmp (buffer.string, oldText.peek()))   // isn't the old file identical to the new text?
 		{
 			MelderFile_writeText (& file, buffer.string, kMelder_textOutputEncoding_UTF8);   // then write the new text
diff --git a/sys/ManPages.h b/sys/ManPages.h
index 6f500ff..d7b8e5d 100644
--- a/sys/ManPages.h
+++ b/sys/ManPages.h
@@ -4,37 +4,36 @@
  *
  * Copyright (C) 1996-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ManPage.h"
 #include "Collection.h"
 
-Thing_define (ManPages, Data) {
-	Ordered pages;
+Thing_define (ManPages, Daata) {
+	OrderedOf<structManPage> pages;
 	const char32 **titles;
-	int ground, dynamic, executable;
+	bool ground, dynamic, executable;
 	structMelderDir rootDirectory;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_readText (MelderReadText text, int formatVersion)
 		override;
 };
 
-ManPages ManPages_create (void);
+autoManPages ManPages_create ();
 
 void ManPages_addPage (ManPages me, const char32 *title, const char32 *author, long date,
 	struct structManPage_Paragraph paragraphs []);
diff --git a/sys/ManPagesM.h b/sys/ManPagesM.h
index 36acf21..54c955f 100644
--- a/sys/ManPagesM.h
+++ b/sys/ManPagesM.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1996-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* ManPages macros. */
@@ -50,7 +49,7 @@
 #define CODE5(text)  { kManPage_type_CODE5, text },
 #define PROTOTYPE(text)  { kManPage_type_PROTOTYPE, text },
 #define FORMULA(text)  { kManPage_type_FORMULA, text },
-#define PICTURE(width,height,draw)  { kManPage_type_PICTURE, NULL, width, height, draw },
+#define PICTURE(width,height,draw)  { kManPage_type_PICTURE, nullptr, width, height, draw },
 #define SCRIPT(width,height,text)  { kManPage_type_SCRIPT, text, width, height },
 #define MAN_END  { 0 } }; ManPages_addPage (me, title, author, date, page); }
 
diff --git a/sys/Manual.cpp b/sys/Manual.cpp
index 1de7f8f..2e0620b 100644
--- a/sys/Manual.cpp
+++ b/sys/Manual.cpp
@@ -1,38 +1,19 @@
 /* Manual.cpp
  *
- * Copyright (C) 1996-2011,2014,2015 Paul Boersma
+ * Copyright (C) 1996-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2003/03/09 searching: more points for multiple occurrences within a paragraph
- * pb 2003/10/03 praat_executeFromFile without arguments
- * pb 2003/11/26 use recording time from file
- * pb 2003/11/30 removed newline from date
- * pb 2004/02/08 allow arguments in scripts
- * pb 2005/05/08 embedded scripts (for pictures)
- * pb 2005/07/19 moved navigation buttons to the top, removed page label and horizontal scroll bar
- * pb 2006/10/20 embedded scripts: not on opening page
- * pb 2007/06/10 wchar
- * pb 2007/08/12 wchar
- * pb 2008/01/19 double
- * pb 2008/03/20 split off Help menu
- * pb 2008/03/21 new Editor API
- * pb 2011/04/06 C++
- * pb 2011/07/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -55,12 +36,11 @@ static const char32 *month [] =
 	{ U"", U"January", U"February", U"March", U"April", U"May", U"June",
 	  U"July", U"August", U"September", U"October", U"November", U"December" };
 
-static void menu_cb_writeOneToHtmlFile (EDITOR_ARGS) {
-	EDITOR_IAM (Manual);
-	EDITOR_FORM_WRITE (U"Save as HTML file", 0)
+static void menu_cb_writeOneToHtmlFile (Manual me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM_WRITE (U"Save as HTML file", nullptr)
 		ManPages manPages = (ManPages) my data;
 		autoMelderString buffer;
-		MelderString_copy (& buffer, ((ManPage) manPages -> pages -> item [my path]) -> title);
+		MelderString_copy (& buffer, manPages -> pages.at [my path] -> title);
 		char32 *p = buffer.string;
 		while (*p) { if (! isalnum ((int) *p) && *p != U'_') *p = U'_'; p ++; }
 		MelderString_append (& buffer, U".html");
@@ -70,13 +50,12 @@ static void menu_cb_writeOneToHtmlFile (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_writeAllToHtmlDir (EDITOR_ARGS) {
-	EDITOR_IAM (Manual);
-	EDITOR_FORM (U"Save all pages as HTML files", 0)
+static void menu_cb_writeAllToHtmlDir (Manual me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Save all pages as HTML files", nullptr)
 		LABEL (U"", U"Type a directory name:")
 		TEXTFIELD (U"directory", U"")
 	EDITOR_OK
-		structMelderDir currentDirectory = { { 0 } };
+		structMelderDir currentDirectory { { 0 } };
 		Melder_getDefaultDir (& currentDirectory);
 		SET_STRING (U"directory", Melder_dirToPath (& currentDirectory))
 	EDITOR_DO
@@ -85,13 +64,12 @@ static void menu_cb_writeAllToHtmlDir (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_searchForPageList (EDITOR_ARGS) {
-	EDITOR_IAM (Manual);
-	EDITOR_FORM (U"Search for page", 0)
+static void menu_cb_searchForPageList (Manual me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Search for page", nullptr)
 		ManPages manPages = (ManPages) my data;
 		long numberOfPages;
 		const char32 **pages = ManPages_getTitles (manPages, & numberOfPages);
-		LIST (U"Page", manPages -> pages -> size, pages, 1)
+		LIST (U"Page", manPages -> pages.size, pages, 1)
 	EDITOR_OK
 	EDITOR_DO
 		HyperPage_goToPage_i (me, GET_INTEGER (U"Page"));
@@ -103,20 +81,20 @@ void structManual :: v_draw () {
 	ManPage page;
 	ManPage_Paragraph paragraph;
 	#if motif
-	Graphics_clearWs (g);
+	Graphics_clearWs (our graphics.get());
 	#endif
 	if (our path == SEARCH_PAGE) {
 		HyperPage_pageTitle (this, U"Best matches");
 		HyperPage_intro (this, U"The best matches to your query seem to be:");
 		for (int i = 1; i <= our numberOfMatches; i ++) {
 			char32 link [300];
-			page = (ManPage) manPages -> pages -> item [matches [i]];
+			page = manPages -> pages.at [matches [i]];
 			Melder_sprint (link,300, U"• @@", page -> title);
 			HyperPage_listItem (this, link);
 		}
 		return;
 	}
-	page = (ManPage) manPages -> pages -> item [path];
+	page = manPages -> pages.at [path];
 	if (! our paragraphs) return;
 	HyperPage_pageTitle (this, page -> title);
 	for (paragraph = & page -> paragraphs [0]; paragraph -> type != 0; paragraph ++) {
@@ -157,7 +135,7 @@ void structManual :: v_draw () {
 		while (page -> paragraphs [lastParagraph]. type != 0) lastParagraph ++;
 		if (lastParagraph > 0) {
 			const char32 *text = page -> paragraphs [lastParagraph - 1]. text;
-			if (text == NULL || text [0] == U'\0' || text [str32len (text) - 1] != U':') {
+			if (! text || text [0] == U'\0' || text [str32len (text) - 1] != U':') {
 				if (our printing && our suppressLinksHither)
 					goAhead = false;
 				else
@@ -171,7 +149,7 @@ void structManual :: v_draw () {
 				if (page -> linksThither [jlink] == link)
 					alreadyShown = true;
 			if (! alreadyShown) {
-				const char32 *title = ((ManPage) manPages -> pages -> item [page -> linksHither [ilink]]) -> title;
+				const char32 *title = manPages -> pages.at [page -> linksHither [ilink]] -> title;
 				char32 linkText [304];
 				Melder_sprint (linkText, 304, U"@@", title, U"@");
 				HyperPage_listItem (this, linkText);
@@ -198,18 +176,18 @@ void structManual :: v_draw () {
 
 /********** PRINTING **********/
 
-static void print (I, Graphics graphics) {
+static void print (void *void_me, Graphics graphics) {
 	iam (Manual);
 	ManPages manPages = (ManPages) my data;
-	long numberOfPages = manPages -> pages -> size, savePage = my path;
+	long numberOfPages = manPages -> pages.size, savePage = my path;
 	my ps = graphics;
-	Graphics_setDollarSignIsCode (my ps, TRUE);
-	Graphics_setAtSignIsLink (my ps, TRUE);
-	my printing = TRUE;
+	Graphics_setDollarSignIsCode (my ps, true);
+	Graphics_setAtSignIsLink (my ps, true);
+	my printing = true;
 	HyperPage_initSheetOfPaper ((HyperPage) me);
 	for (long ipage = 1; ipage <= numberOfPages; ipage ++) {
-		ManPage page = (ManPage) manPages -> pages -> item [ipage];
-		if (my printPagesStartingWith == NULL ||
+		ManPage page = manPages -> pages.at [ipage];
+		if (my printPagesStartingWith == nullptr ||
 		    Melder_stringMatchesCriterion (page -> title, kMelder_string_STARTS_WITH, my printPagesStartingWith))
 		{
 			ManPage_Paragraph par;
@@ -225,12 +203,11 @@ static void print (I, Graphics graphics) {
 			my v_goToPage_i (savePage);
 		}
 	}
-	my printing = FALSE;
-	my printPagesStartingWith = NULL;
+	my printing = false;
+	my printPagesStartingWith = nullptr;
 }
 
-static void menu_cb_printRange (EDITOR_ARGS) {
-	EDITOR_IAM (Manual);
+static void menu_cb_printRange (Manual me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Print range", 0)
 		SENTENCE (U"Left or inside header", U"")
 		SENTENCE (U"Middle header", U"")
@@ -238,14 +215,14 @@ static void menu_cb_printRange (EDITOR_ARGS) {
 		SENTENCE (U"Left or inside footer", U"")
 		SENTENCE (U"Middle footer", U"")
 		SENTENCE (U"Right or outside footer", U"")
-		BOOLEAN (U"Mirror even/odd headers", TRUE)
+		BOOLEAN (U"Mirror even/odd headers", true)
 		LABEL (U"", U"Print all pages whose title starts with:")
 		TEXTFIELD (U"Print pages starting with", U"Intro")
 		INTEGER (U"First page number", U"1")
-		BOOLEAN (U"Suppress \"Links to this page\"", FALSE)
+		BOOLEAN (U"Suppress \"Links to this page\"", false)
 	EDITOR_OK
 		ManPages manPages = (ManPages) my data;
-		time_t today = time (NULL);
+		time_t today = time (nullptr);
 		char dateA [50];
 		#ifdef UNIX
 			struct tm *tm = localtime (& today);
@@ -258,8 +235,8 @@ static void menu_cb_printRange (EDITOR_ARGS) {
 		SET_STRING (U"Left or inside header", date)
 		SET_STRING (U"Right or outside header", my name)
 		if (my d_printingPageNumber) SET_INTEGER (U"First page number", my d_printingPageNumber + 1)
-		if (my path >= 1 && my path <= manPages -> pages -> size) {
-			ManPage page = (ManPage) manPages -> pages -> item [my path];
+		if (my path >= 1 && my path <= manPages -> pages.size) {
+			ManPage page = manPages -> pages.at [my path];
 			SET_STRING (U"Print pages starting with", page -> title);
 		}
 	EDITOR_DO
@@ -283,7 +260,7 @@ static double *goodnessOfMatch;
 
 static double searchToken (ManPages me, long ipage, char32 *token) {
 	double goodness = 0.0;
-	ManPage page = (ManPage) my pages -> item [ipage];
+	ManPage page = my pages.at [ipage];
 	struct structManPage_Paragraph *par = & page -> paragraphs [0];
 	if (! token [0]) return 1.0;
 	/*
@@ -320,7 +297,7 @@ static double searchToken (ManPages me, long ipage, char32 *token) {
 
 static void search (Manual me, const char32 *query) {
 	ManPages manPages = (ManPages) my data;
-	long numberOfPages = manPages -> pages -> size;
+	long numberOfPages = manPages -> pages.size;
 	static MelderString searchText { 0 };
 	MelderString_copy (& searchText, query);
 	for (char32 *p = & searchText.string [0]; *p != U'\0'; p ++) {
@@ -366,39 +343,33 @@ void Manual_search (Manual me, const char32 *query) {
 	search (me, query);
 }
 
-static void gui_button_cb_home (I, GuiButtonEvent event) {
-	(void) event;
-	iam (Manual);
+static void gui_button_cb_home (Manual me, GuiButtonEvent /* event */) {
 	ManPages pages = (ManPages) my data;
 	long iHome = ManPages_lookUp (pages, U"Intro");
 	HyperPage_goToPage_i (me, iHome ? iHome : 1);
 }
  
-static void gui_button_cb_record (I, GuiButtonEvent event) {
-	(void) event;
-	iam (Manual);
+static void gui_button_cb_record (Manual me, GuiButtonEvent /* event */) {
 	ManPages manPages = (ManPages) my data;
-	ManPage manPage = (ManPage) (my path < 1 ? NULL : manPages -> pages -> item [my path]);
+	ManPage manPage = ( my path < 1 ? nullptr : manPages -> pages.at [my path] );
 	GuiThing_setSensitive (my recordButton,  false);
 	GuiThing_setSensitive (my playButton,    false);
 	GuiThing_setSensitive (my publishButton, false);
-	#if motif
-		XmUpdateDisplay (my d_windowForm -> d_xmShell);
+	#if defined (_WIN32)
+		GdiFlush ();
 	#endif
-	if (! Melder_record (manPage == NULL ? 1.0 : manPage -> recordingTime)) Melder_flushError ();
+	if (! Melder_record (manPage == nullptr ? 1.0 : manPage -> recordingTime)) Melder_flushError ();
 	GuiThing_setSensitive (my recordButton,  true);
 	GuiThing_setSensitive (my playButton,    true);
 	GuiThing_setSensitive (my publishButton, true);
 }
 
-static void gui_button_cb_play (I, GuiButtonEvent event) {
-	(void) event;
-	iam (Manual);
+static void gui_button_cb_play (Manual me, GuiButtonEvent /* event */) {
 	GuiThing_setSensitive (my recordButton,  false);
 	GuiThing_setSensitive (my playButton,    false);
 	GuiThing_setSensitive (my publishButton, false);
-	#if motif
-		XmUpdateDisplay (my d_windowForm -> d_xmShell);
+	#if defined (_WIN32)
+		GdiFlush ();
 	#endif
 	Melder_play ();
 	GuiThing_setSensitive (my recordButton,  true);
@@ -406,10 +377,7 @@ static void gui_button_cb_play (I, GuiButtonEvent event) {
 	GuiThing_setSensitive (my publishButton, true);
 }
 
-static void gui_button_cb_publish (I, GuiButtonEvent event) {
-	(void) event;
-	iam (Manual);
-	(void) me;
+static void gui_button_cb_publish (Manual /* me */, GuiButtonEvent /* event */) {
 	Melder_publishPlayed ();
 }
 
@@ -419,14 +387,7 @@ static void do_search (Manual me) {
 	Melder_free (query);
 }
 
-static void gui_button_cb_search (I, GuiButtonEvent event) {
-	(void) event;
-	iam (Manual);
-	do_search (me);
-}
-
-static void gui_cb_search (GUI_ARGS) {
-	GUI_IAM (Manual);
+static void gui_button_cb_search (Manual me, GuiButtonEvent /* event */) {
 	do_search (me);
 }
 
@@ -455,7 +416,7 @@ void structManual :: v_createChildren () {
 	our searchText = GuiText_createShown (our d_windowForm, 274+69 + STRING_SPACING, 452 + STRING_SPACING - 2, y, y + Gui_TEXTFIELD_HEIGHT, 0);
 }
 
-static void menu_cb_help (EDITOR_ARGS) { EDITOR_IAM (Manual); HyperPage_goToPage (me, U"Manual"); }
+static void menu_cb_help (Manual me, EDITOR_ARGS_DIRECT) { HyperPage_goToPage (me, U"Manual"); }
 
 void structManual :: v_createMenus () {
 	Manual_Parent :: v_createMenus ();
@@ -463,7 +424,7 @@ void structManual :: v_createMenus () {
 	Editor_addCommand (this, U"File", U"Print manual...", 0, menu_cb_printRange);
 	Editor_addCommand (this, U"File", U"Save page as HTML file...", 0, menu_cb_writeOneToHtmlFile);
 	Editor_addCommand (this, U"File", U"Save manual to HTML directory...", 0, menu_cb_writeAllToHtmlDir);
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
 
 	Editor_addCommand (this, U"Go to", U"Search for page (list)...", 0, menu_cb_searchForPageList);
 }
@@ -480,7 +441,7 @@ void structManual :: v_defaultHeaders (EditorCommand cmd) {
 		char32 string [400];
 		static const char32 *shortMonth [] =
 			{ U"Jan", U"Feb", U"Mar", U"Apr", U"May", U"Jun", U"Jul", U"Aug", U"Sep", U"Oct", U"Nov", U"Dec" };
-		ManPage page = (ManPage) manPages -> pages -> item [my path];
+		ManPage page = manPages -> pages.at [my path];
 		long date = page -> date;
 		SET_STRING (U"Right or outside header", page -> title)
 		SET_STRING (U"Left or inside footer", page -> author)
@@ -493,7 +454,7 @@ void structManual :: v_defaultHeaders (EditorCommand cmd) {
 
 long structManual :: v_getNumberOfPages () {
 	ManPages manPages = (ManPages) our data;
-	return manPages -> pages -> size;
+	return manPages -> pages.size;
 }
 
 long structManual :: v_getCurrentPageNumber () {
@@ -502,7 +463,7 @@ long structManual :: v_getCurrentPageNumber () {
 
 void structManual :: v_goToPage_i (long pageNumber) {
 	ManPages manPages = (ManPages) our data;
-	if (pageNumber < 1 || pageNumber > manPages -> pages -> size) {
+	if (pageNumber < 1 || pageNumber > manPages -> pages.size) {
 		if (pageNumber == SEARCH_PAGE) {
 			our path = SEARCH_PAGE;
 			Melder_free (our currentPageTitle);
@@ -510,7 +471,7 @@ void structManual :: v_goToPage_i (long pageNumber) {
 		} else Melder_throw (U"Page ", pageNumber, U" not found.");
 	}
 	our path = pageNumber;
-	ManPage page = (ManPage) manPages -> pages -> item [path];
+	ManPage page = manPages -> pages.at [path];
 	our paragraphs = page -> paragraphs;
 	our numberOfParagraphs = 0;
 	ManPage_Paragraph par = paragraphs;
@@ -521,12 +482,12 @@ void structManual :: v_goToPage_i (long pageNumber) {
 
 int structManual :: v_goToPage (const char32 *title) {
 	ManPages manPages = (ManPages) our data;
-	if (title [0] == '\\' && title [1] == 'F' && title [2] == 'I') {
+	if (title [0] == U'\\' && title [1] == U'F' && title [2] == U'I') {
 		structMelderFile file = { 0 };
 		MelderDir_relativePathToFile (& manPages -> rootDirectory, title + 3, & file);
 		Melder_recordFromFile (& file);
 		return -1;
-	} else if (title [0] == '\\' && title [1] == 'S' && title [2] == 'C') {
+	} else if (title [0] == U'\\' && title [1] == U'S' && title [2] == U'C') {
 		autoMelderSetDefaultDir dir (& manPages -> rootDirectory);
 		autoPraatBackground background;
 		try {
@@ -545,7 +506,7 @@ int structManual :: v_goToPage (const char32 *title) {
 	}
 }
 
-void Manual_init (Manual me, const char32 *title, Data data, bool ownData) {
+void Manual_init (Manual me, const char32 *title, Daata data, bool ownData) {
 	ManPages manPages = (ManPages) data;
 	char32 windowTitle [101];
 	long i;
@@ -554,14 +515,14 @@ void Manual_init (Manual me, const char32 *title, Data data, bool ownData) {
 	if (! (i = ManPages_lookUp (manPages, title)))
 		Melder_throw (U"Page \"", title, U"\" not found.");
 	my path = i;
-	page = (ManPage) manPages -> pages -> item [i];
+	page = manPages -> pages.at [i];
 	my paragraphs = page -> paragraphs;
 	my numberOfParagraphs = 0;
 	par = my paragraphs;
 	while ((par ++) -> type) my numberOfParagraphs ++;
 
-	if (((ManPage) manPages -> pages -> item [1]) -> title [0] == '-') {
-		Melder_sprint (windowTitle,101, & ((ManPage) manPages -> pages -> item [1]) -> title [1]);
+	if (manPages -> pages.at [1] -> title [0] == U'-') {
+		Melder_sprint (windowTitle,101, & manPages -> pages.at [1] -> title [1]);
 		if (windowTitle [str32len (windowTitle) - 1] == U'-') windowTitle [str32len (windowTitle) - 1] = U'\0';
 	} else {
 		Melder_sprint (windowTitle,101, U"Manual");
@@ -572,11 +533,11 @@ void Manual_init (Manual me, const char32 *title, Data data, bool ownData) {
 	my history [0]. page = Melder_dup_f (title);   // BAD
 }
 
-Manual Manual_create (const char32 *title, Data data, bool ownData) {
+autoManual Manual_create (const char32 *title, Daata data, bool ownData) {
 	try {
 		autoManual me = Thing_new (Manual);
-		Manual_init (me.peek(), title, data, ownData);
-		return me.transfer();
+		Manual_init (me.get(), title, data, ownData);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Manual window not created.");
 	}
diff --git a/sys/Manual.h b/sys/Manual.h
index 982e697..0e914c5 100644
--- a/sys/Manual.h
+++ b/sys/Manual.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1996-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "HyperPage.h"
@@ -60,8 +59,8 @@ Thing_define (Manual, HyperPage) {
 		override { return true; }
 };
 
-void Manual_init (Manual me, const char32 *title, Data data, bool ownData);
-Manual Manual_create (const char32 *title, Data data, bool ownData);
+void Manual_init (Manual me, const char32 *title, Daata data, bool ownData);
+autoManual Manual_create (const char32 *title, Daata data, bool ownData);
 
 void Manual_search (Manual me, const char32 *query);
 
diff --git a/sys/MelderThread.h b/sys/MelderThread.h
index d7f6491..f018b5c 100644
--- a/sys/MelderThread.h
+++ b/sys/MelderThread.h
@@ -2,21 +2,20 @@
 #define _MelderThread_h_
 /* MelderThread.h
  *
- * Copyright (C) 2014 Paul Boersma
+ * Copyright (C) 2014,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <vector>
@@ -52,7 +51,7 @@
 	#define MelderThread_LOCK(_mutex)  pthread_mutex_lock (& _mutex)
 	#define MelderThread_UNLOCK(_mutex)  pthread_mutex_unlock (& _mutex)
 	#define MelderThread_RETURN_TYPE  void *
-	#define MelderThread_RETURN  return NULL;
+	#define MelderThread_RETURN  return nullptr;
 #elif USE_CPPTHREADS
 	#include <mutex>
 	#include <thread>
@@ -95,15 +94,15 @@ static int MelderThread_getNumberOfProcessors () {
 #if USE_WINTHREADS
 	template <class T> void MelderThread_run (DWORD (WINAPI *func) (T *), _Thing_auto <T> *args, int numberOfThreads) {
 		if (numberOfThreads == 1) {
-			func (args [0].peek());
+			func (args [0].get());
 		} else {
 			std::vector <HANDLE> threads (numberOfThreads);
 			try {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
-					threads [ithread - 1] = CreateThread (NULL, 0,
-						(DWORD (WINAPI *)(void *)) func, (void *) args [ithread - 1].peek(), 0, NULL);
+					threads [ithread - 1] = CreateThread (nullptr, 0,
+						(DWORD (WINAPI *)(void *)) func, (void *) args [ithread - 1].get(), 0, nullptr);
 				}
-				func (args [numberOfThreads - 1].peek());
+				func (args [numberOfThreads - 1].get());
 			} catch (MelderError) {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
 					WaitForSingleObject (threads [ithread - 1], INFINITE);
@@ -120,37 +119,37 @@ static int MelderThread_getNumberOfProcessors () {
 #elif USE_PTHREADS
 	template <class T> void MelderThread_run (void * (*func) (T *), _Thing_auto <T> *args, int numberOfThreads) {
 		if (numberOfThreads == 1) {
-			func (args [0].peek());
+			func (args [0].get());
 		} else {
 			std::vector <pthread_t> threads (numberOfThreads);
 			try {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
 					(void) pthread_create (& threads [ithread - 1],
-						NULL, (void*(*)(void *)) func, (void *) args [ithread - 1].peek());
+						nullptr, (void*(*)(void *)) func, (void *) args [ithread - 1].get());
 				}
-				func (args [numberOfThreads - 1].peek());
+				func (args [numberOfThreads - 1].get());
 			} catch (MelderError) {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
-					pthread_join (threads [ithread - 1], NULL);
+					pthread_join (threads [ithread - 1], nullptr);
 				}
 				throw;
 			}
 			for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
-				pthread_join (threads [ithread - 1], NULL);
+				pthread_join (threads [ithread - 1], nullptr);
 			}
 		}
 	}
 #elif USE_CPPTHREADS
 	template <class T> void MelderThread_run (void * (*func) (T *), _Thing_auto <T> *args, int numberOfThreads) {
 		if (numberOfThreads == 1) {
-			func (args [0].peek());
+			func (args [0].get());
 		} else {
 			std::vector <std::thread> thread (numberOfThreads);
 			try {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
-					thread [ithread - 1] = std::thread (func, args [ithread - 1].peek());
+					thread [ithread - 1] = std::thread (func, args [ithread - 1].get());
 				}
-				func (args [numberOfThreads - 1].peek());
+				func (args [numberOfThreads - 1].get());
 			} catch (MelderError) {
 				for (int ithread = 1; ithread < numberOfThreads; ithread ++) {
 					if (thread [ithread - 1]. joinable ())
@@ -165,7 +164,7 @@ static int MelderThread_getNumberOfProcessors () {
 	}
 #else
 	template <class T> void MelderThread_run (void (*func) (T *), _Thing_auto <T> *args, int numberOfThreads) {
-		func (args [0].peek());
+		func (args [0].get());
 	}
 #endif
 
diff --git a/sys/Picture.cpp b/sys/Picture.cpp
index 401c31f..d22abce 100644
--- a/sys/Picture.cpp
+++ b/sys/Picture.cpp
@@ -1,20 +1,19 @@
 /* Picture.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brauße
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brauße
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -26,15 +25,7 @@
 	#include "GraphicsP.h"
 #endif
 
-struct structPicture {
-	GuiDrawingArea drawingArea;
-	Graphics graphics, selectionGraphics;
-	bool sensitive;
-	double selx1, selx2, sely1, sely2;   // selection in NDC co-ordinates
-	void (*selectionChangedCallback) (struct structPicture *, void *, double, double, double, double);
-	void *selectionChangedClosure;
-	int backgrounding, mouseSelectsInnerViewport;
-};
+Thing_implement (Picture, Thing, 0);
 
 static void drawMarkers (Picture me)
 /*
@@ -50,85 +41,82 @@ static void drawMarkers (Picture me)
  */
 #define YELLOW_GRID 3
 {
-	int i;
-
 	/* Fill the entire canvas with GC's background. */
 
-	Graphics_setColour (my selectionGraphics, Graphics_WHITE);
-	Graphics_fillRectangle (my selectionGraphics, 0, SIDE, 0, SIDE);
+	Graphics_setColour (my selectionGraphics.get(), Graphics_WHITE);
+	Graphics_fillRectangle (my selectionGraphics.get(), 0, SIDE, 0, SIDE);
 
 	/* Draw yellow grid lines for coarse navigation. */
 
-	Graphics_setColour (my selectionGraphics, Graphics_YELLOW);
-	for (i = YELLOW_GRID; i < SIDE; i += YELLOW_GRID) {
-		Graphics_line (my selectionGraphics, 0, i, SIDE, i);
-		Graphics_line (my selectionGraphics, i, 0, i, SIDE);
+	Graphics_setColour (my selectionGraphics.get(), Graphics_YELLOW);
+	for (int i = YELLOW_GRID; i < SIDE; i += YELLOW_GRID) {
+		Graphics_line (my selectionGraphics.get(), 0, i, SIDE, i);
+		Graphics_line (my selectionGraphics.get(), i, 0, i, SIDE);
 	}
 
 	/* Draw red ticks and numbers for feedback on viewport measurement. */
 
-	Graphics_setColour (my selectionGraphics, Graphics_RED);
-	for (i = 1; i < SIDE; i ++) {
+	Graphics_setColour (my selectionGraphics.get(), Graphics_RED);
+	for (int i = 1; i < SIDE; i ++) {
 		double x = i;
-		Graphics_setTextAlignment (my selectionGraphics, Graphics_CENTRE, Graphics_TOP);
-		Graphics_text (my selectionGraphics, x, SIDE, i);
-		Graphics_setTextAlignment (my selectionGraphics, Graphics_CENTRE, Graphics_BOTTOM);
-		Graphics_text (my selectionGraphics, x, 0, i);
+		Graphics_setTextAlignment (my selectionGraphics.get(), Graphics_CENTRE, Graphics_TOP);
+		Graphics_text (my selectionGraphics.get(), x, SIDE, i);
+		Graphics_setTextAlignment (my selectionGraphics.get(), Graphics_CENTRE, Graphics_BOTTOM);
+		Graphics_text (my selectionGraphics.get(), x, 0, i);
 	}
-	for (i = 1; i < SQUARES ; i ++) {   /* Vertical ticks. */
+	for (int i = 1; i < SQUARES ; i ++) {   // vertical ticks
 		double x = 0.5 * i;
-		Graphics_line (my selectionGraphics, x, SIDE - 0.04, x, SIDE);
-		Graphics_line (my selectionGraphics, x, 0, x, 0.04);
+		Graphics_line (my selectionGraphics.get(), x, SIDE - 0.04, x, SIDE);
+		Graphics_line (my selectionGraphics.get(), x, 0, x, 0.04);
 	}
-	for (i = 1; i < SIDE; i ++) {
+	for (int i = 1; i < SIDE; i ++) {
 		double y = SIDE - i;
-		Graphics_setTextAlignment (my selectionGraphics, Graphics_LEFT, Graphics_HALF);
-		Graphics_text (my selectionGraphics, 0.04, y, i);
-		Graphics_setTextAlignment (my selectionGraphics, Graphics_RIGHT, Graphics_HALF);
-		Graphics_text (my selectionGraphics, SIDE - 0.03, y, i);
+		Graphics_setTextAlignment (my selectionGraphics.get(), Graphics_LEFT, Graphics_HALF);
+		Graphics_text (my selectionGraphics.get(), 0.04, y, i);
+		Graphics_setTextAlignment (my selectionGraphics.get(), Graphics_RIGHT, Graphics_HALF);
+		Graphics_text (my selectionGraphics.get(), SIDE - 0.03, y, i);
 	}
-	for (i = 1; i < SQUARES; i ++) {   /* Horizontal ticks. */
+	for (int i = 1; i < SQUARES; i ++) {   // horizontal ticks
 		double y = SIDE - 0.5 * i;
-		Graphics_line (my selectionGraphics, SIDE - 0.04, y, SIDE, y);
-		Graphics_line (my selectionGraphics, 0, y, 0.04, y);
+		Graphics_line (my selectionGraphics.get(), SIDE - 0.04, y, SIDE, y);
+		Graphics_line (my selectionGraphics.get(), 0, y, 0.04, y);
 	}
 
-	Graphics_setColour (my selectionGraphics, Graphics_BLACK);
+	Graphics_setColour (my selectionGraphics.get(), Graphics_BLACK);
 }
 
 static void drawSelection (Picture me, int high) {
-	double dx, dy;
 	if (my backgrounding) return;
-	dy = 2.8 * Graphics_inqFontSize (my graphics) / 72.0;
-	dx = 1.5 * dy;
+	double dy = 2.8 * Graphics_inqFontSize (my graphics.get()) / 72.0;
+	double dx = 1.5 * dy;
 	if (dy > 0.4 * (my sely2 - my sely1)) dy = 0.4 * (my sely2 - my sely1);
 	if (dx > 0.4 * (my selx2 - my selx1)) dx = 0.4 * (my selx2 - my selx1);
 	if (high) {
-		Graphics_highlight2 (my selectionGraphics, my selx1, my selx2, my sely1, my sely2,
+		Graphics_highlight2 (my selectionGraphics.get(), my selx1, my selx2, my sely1, my sely2,
 			my selx1 + dx, my selx2 - dx, my sely1 + dy, my sely2 - dy);
 	} else {
-		Graphics_unhighlight2 (my selectionGraphics, my selx1, my selx2, my sely1, my sely2,
+		Graphics_unhighlight2 (my selectionGraphics.get(), my selx1, my selx2, my sely1, my sely2,
 			my selx1 + dx, my selx2 - dx, my sely1 + dy, my sely2 - dy);
 	}
 }
 
 //static double test = 0.0;
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	iam (Picture);
-	(void) event;
+static void gui_drawingarea_cb_expose (Picture me, GuiDrawingArea_ExposeEvent event) {
 	#if gtk
 		/*
 		 * The size of the viewable part of the drawing area may have changed.
 		 */
 		Melder_assert (event -> widget);
 		#if ALLOW_GDK_DRAWING
-			gdk_cairo_reset_clip ((cairo_t *) Graphics_x_getCR (my graphics),          GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window));
-			gdk_cairo_reset_clip ((cairo_t *) Graphics_x_getCR (my selectionGraphics), GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window));
+			gdk_cairo_reset_clip ((cairo_t *) Graphics_x_getCR (my graphics.get()),          GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window));
+			gdk_cairo_reset_clip ((cairo_t *) Graphics_x_getCR (my selectionGraphics.get()), GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window));
 		#endif
+	#else
+		(void) event;
 	#endif
 	drawMarkers (me);
-	Graphics_play ((Graphics) my graphics, (Graphics) my graphics);
+	Graphics_play (my graphics.get(), my graphics.get());
 	drawSelection (me, 1);
 }
 
@@ -144,14 +132,13 @@ static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
 // (Paul:) No, running this through the normal event loop with mouse-down-drag-up events and generating exposes
 // redrew the entire picture window on every change of the selection during dragging. Much too slow!
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	iam (Picture);
+static void gui_drawingarea_cb_click (Picture me, GuiDrawingArea_ClickEvent event) {
 	int xstart = event -> x;
 	int ystart = event -> y;
 	double xWC, yWC;
 	int ixstart, iystart, ix, iy, oldix = 0, oldiy = 0;
 
-	Graphics_DCtoWC (my selectionGraphics, xstart, ystart, & xWC, & yWC);
+	Graphics_DCtoWC (my selectionGraphics.get(), xstart, ystart, & xWC, & yWC);
 	ix = ixstart = 1 + floor (xWC * SQUARES / SIDE);
 	iy = iystart = SQUARES - floor (yWC * SQUARES / SIDE);
 	if (ixstart < 1 || ixstart > SQUARES || iystart < 1 || iystart > SQUARES) return;
@@ -165,7 +152,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	}
 	//while (Graphics_mouseStillDown (my selectionGraphics)) {
 	do {
-		Graphics_getMouseLocation (my selectionGraphics, & xWC, & yWC);
+		Graphics_getMouseLocation (my selectionGraphics.get(), & xWC, & yWC);
 		ix = 1 + floor (xWC * SQUARES / SIDE);
 		iy = SQUARES - floor (yWC * SQUARES / SIDE);
 		if (ix >= 1 && ix <= SQUARES && iy >= 1 && iy <= SQUARES && (ix != oldix || iy != oldiy)) {
@@ -175,7 +162,7 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 			if (iy < iystart) { iy1 = iy; iy2 = iystart; }
 			else              { iy1 = iystart; iy2 = iy; }
 			if (my mouseSelectsInnerViewport) {
-				int fontSize = Graphics_inqFontSize (my graphics);
+				int fontSize = Graphics_inqFontSize (my graphics.get());
 				double xmargin = fontSize * 4.2 / 72.0, ymargin = fontSize * 2.8 / 72.0;
 				if (xmargin > ix2 - ix1 + 1) xmargin = ix2 - ix1 + 1;
 				if (ymargin > iy2 - iy1 + 1) ymargin = iy2 - iy1 + 1;
@@ -187,10 +174,10 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 			}
 			oldix = ix; oldiy = iy;
 		}
-	} while (Graphics_mouseStillDown (my selectionGraphics));
+	} while (Graphics_mouseStillDown (my selectionGraphics.get()));
 	// }
 	#if cocoa
-		Graphics_updateWs (my selectionGraphics);   // to change the dark red back into black
+		Graphics_updateWs (my selectionGraphics.get());   // to change the dark red back into black
 	#endif
 	if (my selectionChangedCallback) {
 		//Melder_casual (U"selectionChangedCallback from gui_drawingarea_cb_click");
@@ -199,10 +186,9 @@ static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
 	}
 }
 
-Picture Picture_create (GuiDrawingArea drawingArea, bool sensitive) {
-	Picture me = NULL;
+autoPicture Picture_create (GuiDrawingArea drawingArea, bool sensitive) {
 	try {
-		me = Melder_calloc (struct structPicture, 1);
+		autoPicture me = Thing_new (Picture);
 		my drawingArea = drawingArea;
 		/*
 		 * The initial viewport is a rectangle 6 inches wide and 4 inches high.
@@ -215,24 +201,23 @@ Picture Picture_create (GuiDrawingArea drawingArea, bool sensitive) {
 		if (drawingArea) {
 			/* The drawing area must have been realized; see manual at XtWindow. */
 			my graphics = Graphics_create_xmdrawingarea (my drawingArea);
-			GuiDrawingArea_setExposeCallback (my drawingArea, gui_drawingarea_cb_expose, me);
+			GuiDrawingArea_setExposeCallback (my drawingArea, gui_drawingarea_cb_expose, me.get());
 		} else {
 			/*
 			 * Create a dummy Graphics.
 			 */
 			my graphics = Graphics_create (600);
 		}
-		Graphics_setWsWindow (my graphics, 0.0, 12.0, 0.0, 12.0);
-		Graphics_setViewport (my graphics, my selx1, my selx2, my sely1, my sely2);
+		Graphics_setWsWindow (my graphics.get(), 0.0, 12.0, 0.0, 12.0);
+		Graphics_setViewport (my graphics.get(), my selx1, my selx2, my sely1, my sely2);
 		if (my sensitive) {
 			my selectionGraphics = Graphics_create_xmdrawingarea (my drawingArea);
-			Graphics_setWindow (my selectionGraphics, 0, 12, 0, 12);
-			GuiDrawingArea_setClickCallback (my drawingArea, gui_drawingarea_cb_click, me);
+			Graphics_setWindow (my selectionGraphics.get(), 0, 12, 0, 12);
+			GuiDrawingArea_setClickCallback (my drawingArea, gui_drawingarea_cb_click, me.get());
 		}
-		Graphics_startRecording (my graphics);
+		Graphics_startRecording (my graphics.get());
 		return me;
 	} catch (MelderError) {
-		if (me) Melder_free (me);
 		Melder_throw (U"Picture not created.");
 	}
 }
@@ -249,17 +234,12 @@ void Picture_setMouseSelectsInnerViewport (Picture me, int mouseSelectsInnerView
 	my mouseSelectsInnerViewport = mouseSelectsInnerViewport;
 }
 
-void Picture_remove (Picture *pme) {
-	Picture me = *pme;
-	if (! me) return;
-	Picture_erase (me);
-	forget (my graphics);
-	if (my sensitive) forget (my selectionGraphics);
-	Melder_free (me);
-	*pme = NULL;
+void structPicture :: v_destroy () noexcept {
+	Picture_erase (this);
+	Picture_Parent :: v_destroy ();
 }
 
-Graphics Picture_getGraphics (Picture me) { return my graphics; }
+Graphics Picture_peekGraphics (Picture me) { return my graphics.get(); }
 
 void Picture_unhighlight (Picture me) {
 	if (my drawingArea) drawSelection (me, 0);   // unselect
@@ -270,8 +250,8 @@ void Picture_highlight (Picture me) {
 }
 
 void Picture_erase (Picture me) {
-	Graphics_clearRecording (my graphics);
-	Graphics_clearWs (my graphics);
+	Graphics_clearRecording (my graphics.get());
+	Graphics_clearWs (my graphics.get());
 	if (my drawingArea) {
 		drawMarkers (me);
 		drawSelection (me, 1);
@@ -282,7 +262,7 @@ void Picture_writeToPraatPictureFile (Picture me, MelderFile file) {
 	try {
 		autofile f = Melder_fopen (file, "wb");
 		if (fprintf (f, "PraatPictureFile") < 0) Melder_throw (U"Write error.");
-		Graphics_writeRecordings (my graphics, f);
+		Graphics_writeRecordings (my graphics.get(), f);
 		f.close (file);
 	} catch (MelderError) {
 		Melder_throw (U"Cannot write Praat picture file ", file, U".");
@@ -301,8 +281,8 @@ void Picture_readFromPraatPictureFile (Picture me, MelderFile file) {
 		*end = '\0';
 		rewind (f);
 		fread (line, 1, end - line + strlen (tag), f);
-		Graphics_readRecordings (my graphics, f);
-		Graphics_updateWs (my graphics);
+		Graphics_readRecordings (my graphics.get(), f);
+		Graphics_updateWs (my graphics.get());
 		f.close (file);
 	} catch (MelderError) {
 		Melder_throw (U"Praat picture not read from file ", file);
@@ -318,22 +298,23 @@ void Picture_copyToClipboard (Picture me) {
 	/*
 	 * Find the clipboard and clear it.
 	 */
-	PasteboardRef clipboard = NULL;
+	PasteboardRef clipboard = nullptr;
 	PasteboardCreate (kPasteboardClipboard, & clipboard);
 	PasteboardClear (clipboard);
 	/*
 	 * Add a PDF flavour to the clipboard.
 	 */
-	static CGDataConsumerCallbacks callbacks = { appendBytes, NULL };
+	static CGDataConsumerCallbacks callbacks = { appendBytes, nullptr };
 	CFDataRef data = CFDataCreateMutable (kCFAllocatorDefault, 0);
 	CGDataConsumerRef consumer = CGDataConsumerCreate ((void *) data, & callbacks);
 	int resolution = 600;
 	CGRect rect = CGRectMake (0, 0, (my selx2 - my selx1) * resolution, (my sely1 - my sely2) * resolution);
-	CGContextRef context = CGPDFContextCreate (consumer, & rect, NULL);
+	CGContextRef context = CGPDFContextCreate (consumer, & rect, nullptr);
 	//my selx1 * RES, (12 - my sely2) * RES, my selx2 * RES, (12 - my sely1) * RES)
-	Graphics graphics = Graphics_create_pdf (context, resolution, my selx1, my selx2, my sely1, my sely2);
-	Graphics_play ((Graphics) my graphics, graphics);
-	forget (graphics);
+	{// scope
+		autoGraphics graphics = Graphics_create_pdf (context, resolution, my selx1, my selx2, my sely1, my sely2);
+		Graphics_play (my graphics.get(), graphics.get());
+	}
 	PasteboardPutItemFlavor (clipboard, (PasteboardItemID) 1, kUTTypePDF, data, kPasteboardFlavorNoFlags);
 	CFRelease (data);
 	/*
@@ -358,7 +339,7 @@ static HENHMETAFILE copyToMetafile (Picture me) {
 	defaultPrinter. Flags = PD_RETURNDEFAULT | PD_RETURNDC;
 	PrintDlg (& defaultPrinter);
 	SetRect (& rect, my selx1 * 2540, (12 - my sely2) * 2540, my selx2 * 2540, (12 - my sely1) * 2540);
-	dc = CreateEnhMetaFile (defaultPrinter. hDC, NULL, & rect, L"Praat\0");
+	dc = CreateEnhMetaFile (defaultPrinter. hDC, nullptr, & rect, L"Praat\0");
 	if (! dc) Melder_throw (U"Cannot create Windows metafile.");
 	resolution = GetDeviceCaps (dc, LOGPIXELSX);   // Virtual PC: 360; Parallels Desktop: 600
 	//Melder_fatal (U"resolution ", resolution);
@@ -392,17 +373,17 @@ static HENHMETAFILE copyToMetafile (Picture me) {
 			MelderInfo_writeLine (U"orientation ", devMode -> dmOrientation);
 		MelderInfo_close ();
 	}
-	autoGraphics pictGraphics = Graphics_create_screen ((void *) dc, NULL, resolution);
-	Graphics_setWsViewport (pictGraphics.peek(), 0, WIN_WIDTH * resolution, 0, WIN_HEIGHT * resolution);
-	Graphics_setWsWindow (pictGraphics.peek(), 0.0, WIN_WIDTH, 12.0 - WIN_HEIGHT, 12.0);
-	Graphics_play ((Graphics) my graphics, pictGraphics.peek());
+	autoGraphics pictGraphics = Graphics_create_screen ((void *) dc, nullptr, resolution);
+	Graphics_setWsViewport (pictGraphics.get(), 0, WIN_WIDTH * resolution, 0, WIN_HEIGHT * resolution);
+	Graphics_setWsWindow (pictGraphics.get(), 0.0, WIN_WIDTH, 12.0 - WIN_HEIGHT, 12.0);
+	Graphics_play (my graphics.get(), pictGraphics.get());
 	HENHMETAFILE metafile = CloseEnhMetaFile (dc);
 	return metafile;
 }
 void Picture_copyToClipboard (Picture me) {
 	try {
 		HENHMETAFILE metafile = copyToMetafile (me);
-		OpenClipboard (((GraphicsScreen) my graphics) -> d_winWindow);
+		OpenClipboard (((GraphicsScreen) my graphics.get()) -> d_winWindow);
 		EmptyClipboard ();
 		SetClipboardData (CF_ENHMETAFILE, metafile);
 		CloseClipboard ();
@@ -426,7 +407,7 @@ void Picture_writeToWindowsMetafile (Picture me, MelderFile file) {
 }
 #endif
 
-void Picture_writeToEpsFile (Picture me, MelderFile file, int includeFonts, int useSilipaPS) {
+void Picture_writeToEpsFile (Picture me, MelderFile file, bool includeFonts, bool useSilipaPS) {
 	try {
 		MelderFile_delete (file);   // to kill resources as well (fopen only kills data fork)
 		/* BUG: no message if file cannot be deleted (e.g. because still open by Microsoft Word 2001 after reading). */
@@ -434,7 +415,7 @@ void Picture_writeToEpsFile (Picture me, MelderFile file, int includeFonts, int
 		{// scope
 			autoGraphics ps = Graphics_create_epsfile (file, 600, thePrinter. spots,
 				my selx1, my selx2, my sely1, my sely2, includeFonts, useSilipaPS);
-			Graphics_play ((Graphics) my graphics, ps.peek());
+			Graphics_play (my graphics.get(), ps.get());
 		}
 	} catch (MelderError) {
 		Melder_throw (U"Picture not written to EPS file ", file);
@@ -444,7 +425,7 @@ void Picture_writeToEpsFile (Picture me, MelderFile file, int includeFonts, int
 void Picture_writeToPdfFile (Picture me, MelderFile file) {
 	try {
 		autoGraphics graphics = Graphics_create_pdffile (file, 300, my selx1, my selx2, my sely1, my sely2);
-		Graphics_play ((Graphics) my graphics, graphics.peek());
+		Graphics_play (my graphics.get(), graphics.get());
 	} catch (MelderError) {
 		Melder_throw (U"Picture not written to PDF file ", file, U".");
 	}
@@ -453,7 +434,7 @@ void Picture_writeToPdfFile (Picture me, MelderFile file) {
 void Picture_writeToPngFile_300 (Picture me, MelderFile file) {
 	try {
 		autoGraphics graphics = Graphics_create_pngfile (file, 300, my selx1, my selx2, my sely1, my sely2);
-		Graphics_play ((Graphics) my graphics, graphics.peek());
+		Graphics_play (my graphics.get(), graphics.get());
 	} catch (MelderError) {
 		Melder_throw (U"Picture not written to PNG file ", file, U".");
 	}
@@ -462,15 +443,15 @@ void Picture_writeToPngFile_300 (Picture me, MelderFile file) {
 void Picture_writeToPngFile_600 (Picture me, MelderFile file) {
 	try {
 		autoGraphics graphics = Graphics_create_pngfile (file, 600, my selx1, my selx2, my sely1, my sely2);
-		Graphics_play ((Graphics) my graphics, graphics.peek());
+		Graphics_play (my graphics.get(), graphics.get());
 	} catch (MelderError) {
 		Melder_throw (U"Picture not written to PNG file ", file, U".");
 	}
 }
 
-static void print (I, Graphics printer) {
+static void print (void *void_me, Graphics printer) {
 	iam (Picture);
-	Graphics_play ((Graphics) my graphics, printer);
+	Graphics_play (my graphics.get(), printer);
 }
 
 void Picture_print (Picture me) {
@@ -503,7 +484,7 @@ void Picture_setSelection
 	}
 }
 
-void Picture_background (Picture me) { my backgrounding = TRUE; }
-void Picture_foreground (Picture me) { my backgrounding = FALSE; }
+void Picture_background (Picture me) { my backgrounding = true; }
+void Picture_foreground (Picture me) { my backgrounding = false; }
 
 /* End of file Picture.cpp */
diff --git a/sys/Picture.h b/sys/Picture.h
index ef28dc7..d64f5c6 100644
--- a/sys/Picture.h
+++ b/sys/Picture.h
@@ -2,21 +2,20 @@
 #define _Picture_h_
 /* Picture.h
  *
- * Copyright (C) 1992-2011,2012,2013,2014 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* A self-recording picture inside a DrawingArea widget.
@@ -30,31 +29,38 @@
 		like clearWs, flushWs, closeWs, updateWs, setWsViewport.
 	Example:
 		Picture p = Picture_create (myDrawingArea);
-		Any g = Picture_getGraphics (p);
+		Graphics g = Picture_peekGraphics (p);
 		Picture_unhighlight (p);
 		Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
-		Graphics_text (g, 0.5, 0.7, L"Hello");
-		Graphics_text (g, 0.5, 0.6, L"there");
+		Graphics_text (g, 0.5, 0.7, U"Hello");
+		Graphics_text (g, 0.5, 0.6, U"there");
 		Picture_highlight (p);
 		... (event handling)
 		Picture_unhighlight (p);
-		Graphics_text (g, 0.5, 0.3, L"Goodbye");
+		Graphics_text (g, 0.5, 0.3, U"Goodbye");
 		Picture_highlight (p);
 		... (event handling)
-		Picture_writeToEpsFile (p, L"HelloGoodbye.eps");
+		Picture_writeToEpsFile (p, U"HelloGoodbye.eps", false, false);
 		Picture_print (p, GraphicsPostscript_FINE);
 		Picture_remove (& p);
 */
 
-#ifdef macintosh
-#define Picture PictureNotMac
-#endif
+#include "Gui.h"
 
-#include "Graphics.h"
+Thing_define (Picture, Thing) {
+	GuiDrawingArea drawingArea;
+	autoGraphics graphics, selectionGraphics;
+	bool sensitive;
+	double selx1, selx2, sely1, sely2;   // selection in NDC co-ordinates
+	void (*selectionChangedCallback) (Picture, void *, double, double, double, double);
+	void *selectionChangedClosure;
+	bool backgrounding, mouseSelectsInnerViewport;
 
-typedef struct structPicture *Picture;
+	void v_destroy () noexcept
+		override;
+};
 
-Picture Picture_create (GuiDrawingArea drawingArea, bool sensitive);
+autoPicture Picture_create (GuiDrawingArea drawingArea, bool sensitive);
 /*
 	Function:
 		create an empty self-recording picture inside 'drawingArea'.
@@ -66,7 +72,7 @@ Picture Picture_create (GuiDrawingArea drawingArea, bool sensitive);
 		selection is [0, 1] x [0, 1] (NDC), which is invisible;
 */
 
-Graphics Picture_getGraphics (Picture me);
+Graphics Picture_peekGraphics (Picture me);
 /*
 	Function:
 		return the Graphics object.
@@ -98,22 +104,12 @@ void Picture_setSelectionChangedCallback (Picture me,
 
 void Picture_setMouseSelectsInnerViewport (Picture me, int mouseSelectsInnerViewport);
 
-void Picture_remove (Picture *me);
-/*
-	Function:
-		remove a Picture from memory.
-	Preconditions:
-		none
-	Postconditions:
-		*me == NULL;
-*/
-
-void Picture_erase (Picture me);   /* Clears the screen. */
+void Picture_erase (Picture me);   // clears the screen
 
 void Picture_writeToPraatPictureFile (Picture me, MelderFile file);
 void Picture_readFromPraatPictureFile (Picture me, MelderFile file);
 
-void Picture_writeToEpsFile (Picture me, MelderFile file, int includeFonts, int useSilipaPS);
+void Picture_writeToEpsFile (Picture me, MelderFile file, bool includeFonts, bool useSilipaPS);
 void Picture_writeToPdfFile (Picture me, MelderFile file);
 void Picture_writeToPngFile_300 (Picture me, MelderFile file);
 void Picture_writeToPngFile_600 (Picture me, MelderFile file);
diff --git a/sys/Preferences.cpp b/sys/Preferences.cpp
index deb0e04..baa5c79 100644
--- a/sys/Preferences.cpp
+++ b/sys/Preferences.cpp
@@ -1,20 +1,19 @@
 /* Preferences.cpp
  *
- * Copyright (C) 1996-2012,2013,2015 Paul Boersma
+ * Copyright (C) 1996-2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Preferences.h"
@@ -27,21 +26,21 @@ Thing_define (Preference, SimpleString) {
 	const char32 * (*getText) (int value);
 	int (*getValue) (const char32 *text);
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	/* Warning: copy methods etc. not implemented. */
 };
 Thing_implement (Preference, SimpleString, 0);
 
-void structPreference :: v_destroy () {
+void structPreference :: v_destroy () noexcept {
 	Melder_free (string);
 	Preference_Parent :: v_destroy ();
 }
 
-static SortedSetOfString thePreferences;
+static SortedSetOfStringOf <structPreference> thePreferences;
 
 static void Preferences_add (const char32 *string, int type, void *value, int min, int max, const char32 * (*getText) (int value), int (*getValue) (const char32 *text)) {
-	Preference me = Thing_new (Preference);
+	autoPreference me = Thing_new (Preference);
 	my string = Melder_dup (string);
 	for (char32 *p = & my string [0]; *p != U'\0'; p ++) if (*p == U'_') *p = U'.';
 	my type = type;
@@ -50,8 +49,7 @@ static void Preferences_add (const char32 *string, int type, void *value, int mi
 	my max = max;
 	my getText = getText;
 	my getValue = getValue;
-	if (! thePreferences) thePreferences = SortedSetOfString_create ();
-	Collection_addItem (thePreferences, me);
+	thePreferences. addItem_move (me.move());
 }
 
 void Preferences_addByte (const char32 *string, signed char *value, signed char defaultValue)
@@ -61,25 +59,25 @@ void Preferences_addInt (const char32 *string, int *value, int defaultValue)
 	{ *value = defaultValue; Preferences_add (string, intwa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addLong (const char32 *string, long *value, long defaultValue)
-	{ *value = defaultValue; Preferences_add (string, longwa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, longwa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addUbyte (const char32 *string, unsigned char *value, unsigned char defaultValue)
-	{ *value = defaultValue; Preferences_add (string, ubytewa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, ubytewa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addUint (const char32 *string, unsigned int *value, unsigned int defaultValue)
-	{ *value = defaultValue; Preferences_add (string, uintwa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, uintwa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addUlong (const char32 *string, unsigned long *value, unsigned long defaultValue)
-	{ *value = defaultValue; Preferences_add (string, ulongwa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, ulongwa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addBool (const char32 *string, bool *value, bool defaultValue)
-	{ *value = defaultValue; Preferences_add (string, boolwa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, boolwa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addDouble (const char32 *string, double *value, double defaultValue)
-	{ *value = defaultValue; Preferences_add (string, doublewa, value, 0, 0, NULL, NULL); }
+	{ *value = defaultValue; Preferences_add (string, doublewa, value, 0, 0, nullptr, nullptr); }
 
 void Preferences_addString (const char32 *string, char32 *value, const char32 *defaultValue)
-	{ str32cpy (value, defaultValue); Preferences_add (string, stringwa, value, 0, 0, NULL, NULL); }
+	{ str32cpy (value, defaultValue); Preferences_add (string, stringwa, value, 0, 0, nullptr, nullptr); }
 
 void _Preferences_addEnum (const char32 *string, enum kPreferences_dummy *value, int min, int max,
 	const char32 *(*getText) (int value), int (*getValue) (const char32 *text), enum kPreferences_dummy defaultValue)
@@ -93,49 +91,49 @@ void Preferences_read (MelderFile file) {
 	 * before any preferences have been registered.
 	 * In that case, do nothing.
 	 */
-	if (! thePreferences) return;
+	if (thePreferences.size == 0) return;
 	try {
 		autoMelderReadText text = MelderReadText_createFromFile (file);
 		for (;;) {
 			char32 *line = MelderReadText_readLine (text.peek());
-			if (line == NULL)
+			if (! line)
 				return;   // OK: we have read past the last line
 			char32 *value = str32str (line, U": ");
-			if (value == NULL)
+			if (! value)
 				return;   // OK: we have read past the last key-value pair
-			*value = '\0', value += 2;
-			long ipref = SortedSetOfString_lookUp (thePreferences, line);
+			*value = U'\0', value += 2;
+			long ipref = thePreferences. lookUp (line);
 			if (! ipref) {
 				/*
 				 * Recognize some preference names that went obsolete in February 2013.
 				 */
 				if (Melder_nequ (line, U"FunctionEditor.", 15))
-					ipref = SortedSetOfString_lookUp (thePreferences, Melder_cat (U"TimeSoundAnalysisEditor.", line + 15));
+					ipref = thePreferences. lookUp (Melder_cat (U"TimeSoundAnalysisEditor.", line + 15));
 			}
 			if (! ipref) continue;   // skip unrecognized keys
-			Preference pref = (Preference) thePreferences -> item [ipref];
+			Preference pref = thePreferences.at [ipref];
 			switch (pref -> type) {
 				case bytewa: * (signed char *) pref -> value =
-					strtol (Melder_peek32to8 (value), NULL, 10); break;
+					strtol (Melder_peek32to8 (value), nullptr, 10); break;
 				case intwa: * (int *) pref -> value =
-					strtol (Melder_peek32to8 (value), NULL, 10); break;
+					strtol (Melder_peek32to8 (value), nullptr, 10); break;
 				case longwa: * (long *) pref -> value =
-					strtol (Melder_peek32to8 (value), NULL, 10); break;
+					strtol (Melder_peek32to8 (value), nullptr, 10); break;
 				case ubytewa: * (unsigned char *) pref -> value =
-					strtoul (Melder_peek32to8 (value), NULL, 10); break;
+					strtoul (Melder_peek32to8 (value), nullptr, 10); break;
 				case uintwa: * (unsigned int *) pref -> value =
-					strtoul (Melder_peek32to8 (value), NULL, 10); break;
+					strtoul (Melder_peek32to8 (value), nullptr, 10); break;
 				case ulongwa: * (unsigned long *) pref -> value =
-					strtoul (Melder_peek32to8 (value), NULL, 10); break;
+					strtoul (Melder_peek32to8 (value), nullptr, 10); break;
 				case boolwa: * (bool *) pref -> value =
 					str32nequ (value, U"yes", 3) ? true :
 					str32nequ (value, U"no", 2) ? false :
-					strtol (Melder_peek32to8 (value), NULL, 10) != 0; break;
+					strtol (Melder_peek32to8 (value), nullptr, 10) != 0; break;
 				case doublewa: * (double *) pref -> value =
 					Melder_a8tof (Melder_peek32to8 (value)); break;
 				case stringwa: {
 					str32ncpy ((char32 *) pref -> value, value, Preferences_STRING_BUFFER_SIZE);
-					((char32 *) pref -> value) [Preferences_STRING_BUFFER_SIZE - 1] = '\0'; break;
+					((char32 *) pref -> value) [Preferences_STRING_BUFFER_SIZE - 1] = U'\0'; break;
 				}
 				case enumwa: {
 					int intValue = pref -> getValue (value);
@@ -151,10 +149,10 @@ void Preferences_read (MelderFile file) {
 }
 
 void Preferences_write (MelderFile file) {
-	if (! thePreferences || thePreferences -> size == 0) return;
+	if (thePreferences.size == 0) return;
 	static MelderString buffer { 0 };
-	for (long ipref = 1; ipref <= thePreferences -> size; ipref ++) {
-		Preference pref = (Preference) thePreferences -> item [ipref];
+	for (long ipref = 1; ipref <= thePreferences.size; ipref ++) {
+		Preference pref = thePreferences.at [ipref];
 		MelderString_append (& buffer, pref -> string, U": ");
 		switch (pref -> type) {
 			case bytewa:   MelderString_append (& buffer, (int) (* (signed char *)    pref -> value)); break;
@@ -175,7 +173,6 @@ void Preferences_write (MelderFile file) {
 	} catch (MelderError) {
 		Melder_clearError ();
 	}
-	forget (thePreferences);	
 }
 
 /* End of file Preferences.cpp */
diff --git a/sys/Preferences.h b/sys/Preferences.h
index d704c9e..e6f7d69 100644
--- a/sys/Preferences.h
+++ b/sys/Preferences.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1996-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
diff --git a/sys/Printer.cpp b/sys/Printer.cpp
index 2718723..55ebdea 100644
--- a/sys/Printer.cpp
+++ b/sys/Printer.cpp
@@ -2,36 +2,18 @@
  *
  * Copyright (C) 1998-2011,2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2003/02/05 distinct treatment of NT and non-NT
- * pb 2004/05/25 font choice strategy
- * pb 2004/09/25 use /tmp as temporary directory
- * pb 2005/05/19 preference to switch screen preview off
- * pb 2005/07/21 removed bug in previous change for Linux
- * pb 2006/10/28 erased MacOS 9 stuff
- * pb 2006/12/28 theCurrentPraat
- * pb 2007/04/28 Mac: error messages for failing PostScript passthrough
- * pb 2007/08/12 wchar
- * pb 2007/10/05 less char
- * pb 2007/12/09 enums
- * pb 2009/01/18 arguments to UiForm callbacks
- * pb 2011/05/15 C++
- * pb 2011/07/11 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <unistd.h> // close
@@ -61,11 +43,10 @@
 	kGraphicsPostscript_spots_DEFAULT, kGraphicsPostscript_paperSize_DEFAULT, kGraphicsPostscript_orientation_DEFAULT, false,
 	true, kGraphicsPostscript_fontChoiceStrategy_DEFAULT,
 	600, 5100, 6600,
-	1.0,
-	NULL
+	1.0
 };
 
-void Printer_prefs (void) {
+void Printer_prefs () {
 	Preferences_addEnum (U"Printer.spots", & thePrinter. spots, kGraphicsPostscript_spots, kGraphicsPostscript_spots_DEFAULT);
 	Preferences_addEnum (U"Printer.paperSize", & thePrinter. paperSize, kGraphicsPostscript_paperSize, kGraphicsPostscript_paperSize_DEFAULT);
 	Preferences_addBool (U"Printer.allowDirectPostScript", & thePrinter. allowDirectPostScript, true);
@@ -74,65 +55,40 @@ void Printer_prefs (void) {
 
 #if cocoa
 	static NSView *theMacView;
-#elif defined (macintosh)
-	static PMPrintSession theMacPrintSession;
-	static PMPageFormat theMacPageFormat;
-	static PMPrintSettings theMacPrintSettings;
-	static GrafPtr theMacPort;
-	static PMRect paperSize;
 #endif
 #ifdef _WIN32
 	static PRINTDLG theWinPrint;
 	static HDC theWinDC;
 #endif
 
-#if defined (_WIN32) || defined (macintosh)
+#if defined (_WIN32)
 	int Printer_postScript_printf (void *stream, const char *format, ... ) {
-		#if defined (_WIN32)
-			static union { char chars [3002]; short shorts [1501]; } theLine;
-		#elif cocoa
-		#elif defined (macintosh)
-			static Handle theLine;
-		#endif
+		static union { char chars [3002]; short shorts [1501]; } theLine;
 		int length;
 		va_list args;
 		va_start (args, format);
 		(void) stream;
-		#if cocoa
-		#elif defined (_WIN32)
-			vsprintf (theLine.chars + 2, format, args);
-			length = strlen (theLine.chars + 2);
-			theLine.shorts [0] = length;
-			if (length > 0 && theLine.chars [length + 1] == '\n') {
-				theLine.chars [length + 1] = '\r';
-				theLine.chars [length + 2] = '\n';
-				theLine.chars [length + 3] = '\0';
-				length ++;
-			}
-			Escape (theWinDC, POSTSCRIPT_PASSTHROUGH, length + 2, theLine.chars, NULL);
-		#elif defined (macintosh)
-			if (! theLine) {
-				theLine = NewHandle (3000);
-				HLock (theLine);
-			}
-			vsprintf (*theLine, format, args);
-			length = strlen (*theLine);
-			if (length > 0 && (*theLine) [length - 1] == '\n')
-				(*theLine) [length - 1] = '\r';
-			SetPort (theMacPort);
-			PMSessionPostScriptData (theMacPrintSession, *theLine, strlen (*theLine));
-		#endif
+		vsprintf (theLine.chars + 2, format, args);
+		length = strlen (theLine.chars + 2);
+		theLine.shorts [0] = length;
+		if (length > 0 && theLine.chars [length + 1] == '\n') {
+			theLine.chars [length + 1] = '\r';
+			theLine.chars [length + 2] = '\n';
+			theLine.chars [length + 3] = '\0';
+			length ++;
+		}
+		Escape (theWinDC, POSTSCRIPT_PASSTHROUGH, length + 2, theLine.chars, nullptr);
 		va_end (args);
 		return 1;
 	}
 #endif
 
 #if defined (_WIN32)
-	static void initPostScriptPage (void) {
+	static void initPostScriptPage () {
 		/*
 		 * Save the driver's state.
 		 */
-		Printer_postScript_printf (NULL, "/PraatPictureSaveObject save def\n");
+		Printer_postScript_printf (nullptr, "/PraatPictureSaveObject save def\n");
 		/*
 		 * The LaserWriter driver puts the coordinates upside down.
 		 * According to the PostScript Reference Manual,
@@ -144,45 +100,23 @@ void Printer_prefs (void) {
 		 or whatever it is.
 		 */
 		#if 1
-		Printer_postScript_printf (NULL, "initmatrix initclip\n");
+		Printer_postScript_printf (nullptr, "initmatrix initclip\n");
 		#else
-Printer_postScript_printf (NULL, "8 8 scale initclip\n");
+Printer_postScript_printf (nullptr, "8 8 scale initclip\n");
 		#endif
 	}
-	static void exitPostScriptPage (void) {
-		Printer_postScript_printf (NULL, "PraatPictureSaveObject restore\n");
+	static void exitPostScriptPage () {
+		Printer_postScript_printf (nullptr, "PraatPictureSaveObject restore\n");
 	}
 #endif
 
 #if cocoa
 #elif defined (_WIN32)
-	static void initPrinter (void) {
-	}
-#elif defined (macintosh)
-	static void initPrinter (void) {
-		Boolean result;
-		PMResolution res300 = { 300, 300 }, res600 = { 600, 600 };
-		if (theMacPrintSettings == NULL) {   /* Once. */
-			PMCreateSession (& theMacPrintSession);   /* Initialize the Printing Manager. */
-			PMCreatePageFormat (& theMacPageFormat);
-			PMCreatePrintSettings (& theMacPrintSettings);
-			PMSessionDefaultPageFormat (theMacPrintSession, theMacPageFormat);
-			PMSessionDefaultPrintSettings (theMacPrintSession, theMacPrintSettings);
-		}
-		PMSessionValidatePageFormat (theMacPrintSession, theMacPageFormat, & result);
-		PMSessionValidatePrintSettings (theMacPrintSession, theMacPrintSettings, & result);
-		/*
-		 * BUG.
-		 * If we now ask for the available printer resolutions,
-		 * we may get the answer that there's only 300 dpi (perhaps PostScript drivers say so?).
-		 * So we don't rely on that and have a buggy assumption instead.
-		 */
-		PMSetResolution (theMacPageFormat, & res300);   /* Perhaps all printers have this... */
-		PMSetResolution (theMacPageFormat, & res600);   /* ... but this is preferred. */
+	static void initPrinter () {
 	}
 #endif
 
-void Printer_nextPage (void) {
+void Printer_nextPage () {
 	#if cocoa
 		[theMacView endPage];
 		[theMacView beginPageInRect: [theMacView bounds] atPlacement: NSMakePoint (0, 0)];
@@ -201,24 +135,14 @@ void Printer_nextPage (void) {
 			SetBkMode (theWinDC, TRANSPARENT);
 			SetTextAlign (theWinDC, TA_LEFT | TA_BASELINE | TA_NOUPDATECP);
 		}
-	#elif defined (macintosh)
-		PMSessionEndPage (theMacPrintSession);
-		PMSessionBeginPage (theMacPrintSession, theMacPageFormat, NULL);
-		PMSessionGetGraphicsContext (theMacPrintSession, kPMGraphicsContextQuickdraw, (void **) & theMacPort);
-		SetPort (theMacPort);
-		SetOrigin (- paperSize. left, - paperSize. top);
 	#endif
 }
 
-int Printer_pageSetup (void) {
+int Printer_pageSetup () {
 	#if cocoa
 		NSPageLayout *cocoaPageSetupDialog = [NSPageLayout pageLayout];
 		[cocoaPageSetupDialog runModal];
 	#elif defined (_WIN32)
-	#elif defined (macintosh)
-		Boolean accepted;
-		initPrinter ();
-		PMSessionPageSetupDialog (theMacPrintSession, theMacPageFormat, & accepted);
 	#endif
 	return 1;
 }
@@ -250,13 +174,13 @@ static void DO_Printer_postScriptSettings (UiForm dia, int /* narg */, Stackel /
 	thePrinter. fontChoiceStrategy = GET_ENUM (kGraphicsPostscript_fontChoiceStrategy, U"Font choice strategy");
 }
 
-int Printer_postScriptSettings (void) {
-	static Any dia;
-	if (dia == NULL) {
-		Any radio;
-		dia = UiForm_create (theCurrentPraatApplication -> topShell, U"PostScript settings", DO_Printer_postScriptSettings, NULL, U"PostScript settings...", U"PostScript settings...");
+int Printer_postScriptSettings () {
+	static UiForm dia;
+	if (! dia) {
+		UiField radio;
+		dia = UiForm_create (theCurrentPraatApplication -> topShell, U"PostScript settings", DO_Printer_postScriptSettings, nullptr, U"PostScript settings...", U"PostScript settings...");
 		#if defined (_WIN32)
-			BOOLEAN (U"Allow direct PostScript", TRUE);
+			BOOLEAN (U"Allow direct PostScript", true);
 		#endif
 		RADIO_ENUM (U"Grey resolution", kGraphicsPostscript_spots, DEFAULT)
 		#if defined (UNIX)
@@ -297,9 +221,9 @@ int Printer_postScriptSettings (void) {
 			TranslateMessage (& msg);
 			DispatchMessage (& msg);
 		}
-		return TRUE;
+		return true;
 	}
-	HDC Printer_getDC (void) {
+	HDC Printer_getDC () {
 		if (! theWinPrint. hDevMode) {
 			memset (& theWinPrint, 0, sizeof (PRINTDLG));
 			theWinPrint. lStructSize = sizeof (PRINTDLG);
@@ -320,9 +244,10 @@ int Printer_postScriptSettings (void) {
 	- (void) drawRect: (NSRect) dirtyRect {
 		trace (U"printing ", dirtyRect. origin. x, U" ", dirtyRect. origin. y, U" ", dirtyRect. size. width, U" ", dirtyRect. size. height);
 		int currentPage = [[NSPrintOperation currentOperation] currentPage];
-		thePrinter. graphics = Graphics_create_screenPrinter (NULL, self);
-		theDraw (theBoss, thePrinter. graphics);
-		forget (thePrinter. graphics);
+		{// scope
+			autoGraphics graphics = Graphics_create_screenPrinter (nullptr, self);
+			theDraw (theBoss, graphics.get());
+		}
 	}
 	- (BOOL) isFlipped {
 		return YES;
@@ -351,10 +276,11 @@ int Printer_print (void (*draw) (void *boss, Graphics g), void *boss) {
 			char tempPath_utf8 [] = "/tmp/picXXXXXX";
 			close (mkstemp (tempPath_utf8));
 			Melder_pathToFile (Melder_peek8to32 (tempPath_utf8), & tempFile);
-			thePrinter. graphics = Graphics_create_postscriptjob (& tempFile, thePrinter. resolution,
-				thePrinter. spots, thePrinter. paperSize, thePrinter. orientation, thePrinter. magnification);
-			draw (boss, thePrinter. graphics);
-			forget (thePrinter. graphics);
+			{// scope
+				autoGraphics graphics = Graphics_create_postscriptjob (& tempFile, thePrinter. resolution,
+					thePrinter. spots, thePrinter. paperSize, thePrinter. orientation, thePrinter. magnification);
+				draw (boss, graphics.get());
+			}
 			char command [500];
 			sprintf (command, Melder_peek32to8 (Site_getPrintCommand ()), tempPath_utf8);
 			system (command);
@@ -393,12 +319,12 @@ int Printer_print (void (*draw) (void *boss, Graphics g), void *boss) {
 				 */
 				if (op) {
 					[op setCanSpawnSeparateThread: NO];
-					NSView *pictureView = ((GraphicsScreen) Picture_getGraphics ((Picture) boss)) -> d_macView;
+					NSView *pictureView = ((GraphicsScreen) Picture_peekGraphics ((Picture) boss)) -> d_macView;
 					[op
 						runOperationModalForWindow: [pictureView window]
 						delegate: cocoaPrintingArea
 						didRunSelector: @selector(printOperationDidRun:success:contextInfo:)
-						contextInfo: NULL
+						contextInfo: nil
 					];
 				}
 			#endif
@@ -415,7 +341,7 @@ int Printer_print (void (*draw) (void *boss, Graphics g), void *boss) {
 			}
 			if (Melder_backgrounding) {
 				theWinPrint. Flags = PD_RETURNDEFAULT | PD_RETURNDC;
-				if (! PrintDlg (& theWinPrint) || theWinPrint. hDC == NULL) {
+				if (! PrintDlg (& theWinPrint) || ! theWinPrint. hDC) {
 					Melder_throw (U"Cannot print from a script on this computer.");
 				}
 			} else {
@@ -425,7 +351,7 @@ int Printer_print (void (*draw) (void *boss, Graphics g), void *boss) {
 			}
 			theWinDC = theWinPrint. hDC;
 			thePrinter. postScript = thePrinter. allowDirectPostScript &&
-				Escape (theWinDC, QUERYESCSUPPORT, sizeof (int), (LPSTR) & postScriptCode, NULL);
+				Escape (theWinDC, QUERYESCSUPPORT, sizeof (int), (LPSTR) & postScriptCode, nullptr);
 			/*
 			 * The HP colour inkjet printer returns in dmFields:
 			 * 0, 1, 8, 9, 10, 11, 12, 13, 14, 15, 23, 24, 25, 26 = DM_ORIENTATION |
@@ -460,95 +386,41 @@ int Printer_print (void (*draw) (void *boss, Graphics g), void *boss) {
 				thePrinter. paperWidth = 1000;
 				thePrinter. paperHeight = 1000;
 			}
-			EnableWindow ((HWND) XtWindow (theCurrentPraatApplication -> topShell -> d_xmShell), FALSE);
+			EnableWindow ((HWND) XtWindow (theCurrentPraatApplication -> topShell -> d_xmShell), false);
 			SetAbortProc (theWinDC, AbortFunc);
 			memset (& docInfo, 0, sizeof (DOCINFO));
 			docInfo. cbSize = sizeof (DOCINFO);
 			docInfo. lpszDocName = L"Praatjes";
-			docInfo. lpszOutput = NULL;
+			docInfo. lpszOutput = nullptr;
 			if (thePrinter. postScript) {
 				StartDoc (theWinDC, & docInfo);
 				StartPage (theWinDC);
 				initPostScriptPage ();
-				thePrinter. graphics = Graphics_create_postscriptprinter ();
-				draw (boss, thePrinter. graphics);
-				forget (thePrinter. graphics);
+				{// scope
+					autoGraphics graphics = Graphics_create_postscriptprinter ();
+					draw (boss, graphics.get());
+				}
 				exitPostScriptPage ();
 				EndPage (theWinDC);
 				EndDoc (theWinDC);
 			} else {
 				StartDoc (theWinDC, & docInfo);
 				StartPage (theWinDC);
-				thePrinter. graphics = Graphics_create_screenPrinter (NULL, theWinDC);
-				draw (boss, thePrinter. graphics);
-				forget (thePrinter. graphics);
+				{// scope
+					autoGraphics graphics = Graphics_create_screenPrinter (nullptr, theWinDC);
+					draw (boss, graphics.get());
+				}
 				if (EndPage (theWinDC) < 0) {
 					Melder_throw (U"Cannot print page.");
 				} else {
 					EndDoc (theWinDC);
 				}
 			}
-			EnableWindow ((HWND) XtWindow (theCurrentPraatApplication -> topShell -> d_xmShell), TRUE);
-			DeleteDC (theWinDC), theWinDC = NULL;
-		#elif defined (macintosh)
-			Boolean result;
-			initPrinter ();
-			if (Melder_backgrounding) {
-				PMSessionValidatePageFormat (theMacPrintSession, theMacPageFormat, & result);
-				PMSessionValidatePrintSettings (theMacPrintSession, theMacPrintSettings, & result);
-			} else {
-				Boolean accepted;
-				PMSessionPrintDialog (theMacPrintSession, theMacPrintSettings, theMacPageFormat, & accepted);
-				if (! accepted) return 1;   // normal cancelled return
-			}
-			PMSessionValidatePageFormat (theMacPrintSession, theMacPageFormat, & result);
-			PMSessionValidatePrintSettings (theMacPrintSession, theMacPrintSettings, & result);
-			PMResolution res;
-			PMGetResolution (theMacPageFormat, & res);
-			thePrinter. resolution = res. hRes;
-			PMGetAdjustedPaperRect (theMacPageFormat, & paperSize);
-			thePrinter. paperWidth = paperSize. right - paperSize. left;
-			thePrinter. paperHeight = paperSize. bottom - paperSize. top;
-			thePrinter. postScript = false;
-			PMOrientation orientation;
-			PMGetOrientation (theMacPageFormat, & orientation);
-			thePrinter. orientation = orientation == kPMLandscape ||
-				orientation == kPMReverseLandscape ? kGraphicsPostscript_orientation_LANDSCAPE : kGraphicsPostscript_orientation_PORTRAIT;
-			PMSessionBeginDocument (theMacPrintSession, theMacPrintSettings, theMacPageFormat);
-			PMSessionBeginPage (theMacPrintSession, theMacPageFormat, NULL);
-			PMSessionGetGraphicsContext (theMacPrintSession, kPMGraphicsContextQuickdraw, (void **) & theMacPort);
-			/*
-			 * On PostScript, the point (0, 0) is the bottom left corner of the paper, which is fine.
-			 * On the screen, however, the point (0, 0) is the top left corner of the writable page.
-			 * Since we want paper-related margins, not writable-page-related margins,
-			 * we require that this point gets the coordinates (250, 258) or so,
-			 * so that the top left corner of the paper gets coordinates (0, 0).
-			 * The "left" and "top" attributes of rPaper are negative values (e.g. -250 and -258),
-			 * so multiply them by -1.
-			 *
-			 * Under Carbon, the port has to be set inside the page.
-			 */
-			SetPort (theMacPort);
-			SetOrigin (- paperSize. left, - paperSize. top);
-			thePrinter. graphics = Graphics_create_screenPrinter (NULL, theMacPort);
-			draw (boss, thePrinter. graphics);
-			forget (thePrinter. graphics);
-			if (theMacPort) {
-				PMSessionEndPage (theMacPrintSession);
-				PMSessionEndDocument (theMacPrintSession);
-				theMacPort = NULL;
-			}
+			EnableWindow ((HWND) XtWindow (theCurrentPraatApplication -> topShell -> d_xmShell), true);
+			DeleteDC (theWinDC), theWinDC = nullptr;
 		#endif
 		return 1;
 	} catch (MelderError) {
-		#if cocoa
-		#elif defined (macintosh)
-			if (theMacPort) {
-				PMSessionEndPage (theMacPrintSession);
-				PMSessionEndDocument (theMacPrintSession);
-				theMacPort = NULL;
-			}
-		#endif
 		Melder_throw (U"Not printed.");
 	}
 }
diff --git a/sys/Printer.h b/sys/Printer.h
index f3b6ba8..217242d 100644
--- a/sys/Printer.h
+++ b/sys/Printer.h
@@ -2,26 +2,25 @@
 #define _Printer_h_
 /* Printer.h
  *
- * Copyright (C) 1992-2011,2012 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
 
-/* When changing the following structure, update its initialization in Printer.c */
+/* When changing the following structure, update its initialization in Printer.cpp */
 struct Printer {
 	enum kGraphicsPostscript_spots spots;
 	enum kGraphicsPostscript_paperSize paperSize;
@@ -30,7 +29,6 @@ struct Printer {
 	enum kGraphicsPostscript_fontChoiceStrategy fontChoiceStrategy;
 	long resolution, paperWidth, paperHeight;
 	double magnification;
-	Graphics graphics;
 };
 
 extern struct Printer thePrinter;
@@ -39,14 +37,14 @@ extern struct Printer thePrinter;
 	int Printer_postScript_printf (void *stream, const char *format, ... );
 #endif
 #ifdef _WIN32
-	HDC Printer_getDC (void);
+	HDC Printer_getDC ();
 #endif
-int Printer_pageSetup (void);
-int Printer_postScriptSettings (void);
-int Printer_print (void (*draw) (I, Graphics g), I);
-void Printer_nextPage (void);
+int Printer_pageSetup ();
+int Printer_postScriptSettings ();
+int Printer_print (void (*draw) (void *void_me, Graphics g), void *void_me);
+void Printer_nextPage ();
 
-void Printer_prefs (void);
+void Printer_prefs ();
 
 /* End of file Printer.h */
 #endif
diff --git a/sys/Script.cpp b/sys/Script.cpp
index 9cb5c88..feceeaf 100644
--- a/sys/Script.cpp
+++ b/sys/Script.cpp
@@ -1,30 +1,29 @@
 /* Script.cpp
  *
- * Copyright (C) 1997-2011 Paul Boersma
+ * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Script.h"
 
-Thing_implement (Script, Data, 0);
+Thing_implement (Script, Daata, 0);
 
-Script Script_createFromFile (MelderFile file) {
+autoScript Script_createFromFile (MelderFile file) {
 	autoScript me = Thing_new (Script);
 	MelderFile_copy (file, & my file);
-	return me.transfer();
+	return me;
 }
 
 /* End of file Script.cpp */
diff --git a/sys/Script.h b/sys/Script.h
index 057fdbe..8c4195a 100644
--- a/sys/Script.h
+++ b/sys/Script.h
@@ -4,28 +4,27 @@
  *
  * Copyright (C) 1997-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
-Thing_define (Script, Data) {
+Thing_define (Script, Daata) {
 	structMelderFile file;
 };
 
-Script Script_createFromFile (MelderFile file);
+autoScript Script_createFromFile (MelderFile file);
 
 /* End of file Script.h */
 #endif
diff --git a/sys/ScriptEditor.cpp b/sys/ScriptEditor.cpp
index 039987a..9eacc96 100644
--- a/sys/ScriptEditor.cpp
+++ b/sys/ScriptEditor.cpp
@@ -1,20 +1,19 @@
 /* ScriptEditor.cpp
  *
- * Copyright (C) 1997-2012,2013,2015 Paul Boersma
+ * Copyright (C) 1997-2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "ScriptEditor.h"
@@ -24,22 +23,20 @@
 
 Thing_implement (ScriptEditor, TextEditor, 0);
 
-static Collection theScriptEditors;
+static CollectionOf <structScriptEditor> theReferencesToAllOpenScriptEditors;
 
-int ScriptEditors_dirty (void) {
-	if (! theScriptEditors) return FALSE;
-	for (long i = 1; i <= theScriptEditors -> size; i ++) {
-		ScriptEditor me = (ScriptEditor) theScriptEditors -> item [i];
-		if (my dirty) return TRUE;
+bool ScriptEditors_dirty () {
+	for (long i = 1; i <= theReferencesToAllOpenScriptEditors.size; i ++) {
+		ScriptEditor me = theReferencesToAllOpenScriptEditors.at [i];
+		if (my dirty) return true;
 	}
-	return FALSE;
+	return false;
 }
 
-void structScriptEditor :: v_destroy () {
+void structScriptEditor :: v_destroy () noexcept {
 	Melder_free (environmentName);
-	forget (interpreter);
-	forget (argsDialog);
-	if (theScriptEditors) Collection_undangleItem (theScriptEditors, this);
+	our argsDialog.reset();   // don't delay till delete
+	theReferencesToAllOpenScriptEditors. undangleItem (this);
 	ScriptEditor_Parent :: v_destroy ();
 }
 
@@ -64,14 +61,10 @@ void structScriptEditor :: v_goAway () {
 	}
 }
 
-static void args_ok (UiForm sendingForm, int narg_dummy, Stackel args_dummy, const char32 *sendingString_dummy, Interpreter interpreter_dummy, const char32 *invokingButtonTitle, bool modified_dummy, I) {
+static void args_ok (UiForm sendingForm, int /* narg */, Stackel /* args */, const char32 * /* sendingString */,
+	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, void *void_me)
+{
 	iam (ScriptEditor);
-	(void) narg_dummy;
-	(void) args_dummy;
-	(void) sendingString_dummy;
-	(void) interpreter_dummy;
-	(void) invokingButtonTitle;
-	(void) modified_dummy;
 	autostring32 text = GuiText_getString (my textWidget);
 	structMelderFile file = { 0 };
 	if (my name [0]) {
@@ -80,23 +73,19 @@ static void args_ok (UiForm sendingForm, int narg_dummy, Stackel args_dummy, con
 	}
 	Melder_includeIncludeFiles (& text);
 
-	Interpreter_getArgumentsFromDialog (my interpreter, sendingForm);
+	Interpreter_getArgumentsFromDialog (my interpreter.get(), sendingForm);
 
 	autoPraatBackground background;
 	if (my name [0]) MelderFile_setDefaultDir (& file);
-	Interpreter_run (my interpreter, text.peek());
+	Interpreter_run (my interpreter.get(), text.peek());
 }
 
-static void args_ok_selectionOnly (UiForm sendingForm, int narg_dummy, Stackel args_dummy, const char32 *sendingString_dummy, Interpreter interpreter_dummy, const char32 *invokingButtonTitle, bool modified_dummy, I) {
+static void args_ok_selectionOnly (UiForm sendingForm, int /* narg */, Stackel /* args */, const char32 * /* sendingString */,
+	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, void *void_me)
+{
 	iam (ScriptEditor);
-	(void) narg_dummy;
-	(void) args_dummy;
-	(void) sendingString_dummy;
-	(void) interpreter_dummy;
-	(void) invokingButtonTitle;
-	(void) modified_dummy;
 	autostring32 text = GuiText_getSelection (my textWidget);
-	if (text.peek() == NULL)
+	if (! text.peek())
 		Melder_throw (U"No text is selected any longer.\nPlease reselect or click Cancel.");
 	structMelderFile file = { 0 };
 	if (my name [0]) {
@@ -105,15 +94,14 @@ static void args_ok_selectionOnly (UiForm sendingForm, int narg_dummy, Stackel a
 	}
 	Melder_includeIncludeFiles (& text);
 
-	Interpreter_getArgumentsFromDialog (my interpreter, sendingForm);
+	Interpreter_getArgumentsFromDialog (my interpreter.get(), sendingForm);
 
 	autoPraatBackground background;
 	if (my name [0]) MelderFile_setDefaultDir (& file);
-	Interpreter_run (my interpreter, text.peek());
+	Interpreter_run (my interpreter.get(), text.peek());
 }
 
-static void menu_cb_run (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_run (ScriptEditor me, EDITOR_ARGS_DIRECT) {
 	if (my interpreter -> running)
 		Melder_throw (U"The script is already running (paused). Please close or continue the pause or demo window.");
 	autostring32 text = GuiText_getString (my textWidget);
@@ -124,28 +112,26 @@ static void menu_cb_run (EDITOR_ARGS) {
 		MelderFile_setDefaultDir (& file);
 	}
 	Melder_includeIncludeFiles (& text);
-	int npar = Interpreter_readParameters (my interpreter, text.peek());
+	int npar = Interpreter_readParameters (my interpreter.get(), text.peek());
 	if (npar) {
 		/*
 		 * Pop up a dialog box for querying the arguments.
 		 */
-		forget (my argsDialog);
-		my argsDialog = Interpreter_createForm (my interpreter, my d_windowForm, NULL, args_ok, me, false);
-		UiForm_do (my argsDialog, false);
+		my argsDialog = autoUiForm (Interpreter_createForm (my interpreter.get(), my d_windowForm, nullptr, args_ok, me, false));
+		UiForm_do (my argsDialog.get(), false);
 	} else {
 		autoPraatBackground background;
 		if (my name [0]) MelderFile_setDefaultDir (& file);
 		trace (U"Running the following script (2):\n", text.peek());
-		Interpreter_run (my interpreter, text.peek());
+		Interpreter_run (my interpreter.get(), text.peek());
 	}
 }
 
-static void menu_cb_runSelection (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_runSelection (ScriptEditor me, EDITOR_ARGS_DIRECT) {
 	if (my interpreter -> running)
 		Melder_throw (U"The script is already running (paused). Please close or continue the pause or demo window.");
 	autostring32 text = GuiText_getSelection (my textWidget);
-	if (text.peek() == NULL)
+	if (! text.peek())
 		Melder_throw (U"No text selected.");
 	structMelderFile file = { 0 };
 	if (my name [0]) {
@@ -153,23 +139,21 @@ static void menu_cb_runSelection (EDITOR_ARGS) {
 		MelderFile_setDefaultDir (& file);
 	}
 	Melder_includeIncludeFiles (& text);
-	int npar = Interpreter_readParameters (my interpreter, text.peek());
+	int npar = Interpreter_readParameters (my interpreter.get(), text.peek());
 	if (npar) {
 		/*
 		 * Pop up a dialog box for querying the arguments.
 		 */
-		forget (my argsDialog);
-		my argsDialog = Interpreter_createForm (my interpreter, my d_windowForm, NULL, args_ok_selectionOnly, me, true);
-		UiForm_do (my argsDialog, false);
+		my argsDialog = autoUiForm (Interpreter_createForm (my interpreter.get(), my d_windowForm, nullptr, args_ok_selectionOnly, me, true));
+		UiForm_do (my argsDialog.get(), false);
 	} else {
 		autoPraatBackground background;
 		if (my name [0]) MelderFile_setDefaultDir (& file);
-		Interpreter_run (my interpreter, text.peek());
+		Interpreter_run (my interpreter.get(), text.peek());
 	}
 }
 
-static void menu_cb_addToMenu (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_addToMenu (ScriptEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Add to menu", U"Add to fixed menu...")
 		WORD (U"Window", U"?")
 		SENTENCE (U"Menu", U"File")
@@ -192,8 +176,7 @@ static void menu_cb_addToMenu (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_addToFixedMenu (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_addToFixedMenu (ScriptEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Add to fixed menu", U"Add to fixed menu...");
 		RADIO (U"Window", 1)
 			RADIOBUTTON (U"Objects")
@@ -217,8 +200,7 @@ static void menu_cb_addToFixedMenu (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_addToDynamicMenu (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_addToDynamicMenu (ScriptEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Add to dynamic menu", U"Add to dynamic menu...")
 		WORD (U"Class 1", U"Sound")
 		INTEGER (U"Number 1", U"0")
@@ -245,15 +227,13 @@ static void menu_cb_addToDynamicMenu (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_clearHistory (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_clearHistory (ScriptEditor /* me */, EDITOR_ARGS_DIRECT) {
 	UiHistory_clear ();
 }
 
-static void menu_cb_pasteHistory (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_pasteHistory (ScriptEditor me, EDITOR_ARGS_DIRECT) {
 	char32 *history = UiHistory_get ();
-	if (history == NULL || history [0] == U'\0')
+	if (! history || history [0] == U'\0')
 		Melder_throw (U"No history.");
 	long length = str32len (history);
 	if (history [length - 1] != U'\n') {
@@ -273,8 +253,7 @@ static void menu_cb_pasteHistory (EDITOR_ARGS) {
 	GuiText_scrollToSelection (my textWidget);
 }
 
-static void menu_cb_expandIncludeFiles (EDITOR_ARGS) {
-	EDITOR_IAM (ScriptEditor);
+static void menu_cb_expandIncludeFiles (ScriptEditor me, EDITOR_ARGS_DIRECT) {
 	structMelderFile file = { 0 };
 	autostring32 text = GuiText_getString (my textWidget);
 	if (my name [0]) {
@@ -285,16 +264,16 @@ static void menu_cb_expandIncludeFiles (EDITOR_ARGS) {
 	GuiText_setString (my textWidget, text.peek());
 }
 
-static void menu_cb_AboutScriptEditor (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"ScriptEditor"); }
-static void menu_cb_ScriptingTutorial (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Scripting"); }
-static void menu_cb_ScriptingExamples (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Scripting examples"); }
-static void menu_cb_PraatScript (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Praat script"); }
-static void menu_cb_FormulasTutorial (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Formulas"); }
-static void menu_cb_DemoWindow (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Demo window"); }
-static void menu_cb_TheHistoryMechanism (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"History mechanism"); }
-static void menu_cb_InitializationScripts (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Initialization script"); }
-static void menu_cb_AddingToAFixedMenu (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Add to fixed menu..."); }
-static void menu_cb_AddingToADynamicMenu (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); Melder_help (U"Add to dynamic menu..."); }
+static void menu_cb_AboutScriptEditor (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"ScriptEditor"); }
+static void menu_cb_ScriptingTutorial (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Scripting"); }
+static void menu_cb_ScriptingExamples (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Scripting examples"); }
+static void menu_cb_PraatScript (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Praat script"); }
+static void menu_cb_FormulasTutorial (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Formulas"); }
+static void menu_cb_DemoWindow (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Demo window"); }
+static void menu_cb_TheHistoryMechanism (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"History mechanism"); }
+static void menu_cb_InitializationScripts (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Initialization script"); }
+static void menu_cb_AddingToAFixedMenu (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Add to fixed menu..."); }
+static void menu_cb_AddingToADynamicMenu (ScriptEditor, EDITOR_ARGS_DIRECT) { Melder_help (U"Add to dynamic menu..."); }
 
 void structScriptEditor :: v_createMenus () {
 	ScriptEditor_Parent :: v_createMenus ();
@@ -304,11 +283,11 @@ void structScriptEditor :: v_createMenus () {
 		Editor_addCommand (this, U"File", U"Add to fixed menu...", 0, menu_cb_addToFixedMenu);
 		Editor_addCommand (this, U"File", U"Add to dynamic menu...", 0, menu_cb_addToDynamicMenu);
 	}
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
-	Editor_addCommand (this, U"Edit", U"-- history --", 0, 0);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
+	Editor_addCommand (this, U"Edit", U"-- history --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Clear history", 0, menu_cb_clearHistory);
 	Editor_addCommand (this, U"Edit", U"Paste history", 'H', menu_cb_pasteHistory);
-	Editor_addCommand (this, U"Convert", U"-- expand --", 0, 0);
+	Editor_addCommand (this, U"Convert", U"-- expand --", 0, nullptr);
 	Editor_addCommand (this, U"Convert", U"Expand include files", 0, menu_cb_expandIncludeFiles);
 	Editor_addMenu (this, U"Run", 0);
 	Editor_addCommand (this, U"Run", U"Run", 'R', menu_cb_run);
@@ -323,58 +302,52 @@ void structScriptEditor :: v_createHelpMenuItems (EditorMenu menu) {
 	EditorMenu_addCommand (menu, U"Praat script", 0, menu_cb_PraatScript);
 	EditorMenu_addCommand (menu, U"Formulas tutorial", 0, menu_cb_FormulasTutorial);
 	EditorMenu_addCommand (menu, U"Demo window", 0, menu_cb_DemoWindow);
-	EditorMenu_addCommand (menu, U"-- help history --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- help history --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"The History mechanism", 0, menu_cb_TheHistoryMechanism);
 	EditorMenu_addCommand (menu, U"Initialization scripts", 0, menu_cb_InitializationScripts);
-	EditorMenu_addCommand (menu, U"-- help add --", 0, NULL);
+	EditorMenu_addCommand (menu, U"-- help add --", 0, nullptr);
 	EditorMenu_addCommand (menu, U"Adding to a fixed menu", 0, menu_cb_AddingToAFixedMenu);
 	EditorMenu_addCommand (menu, U"Adding to a dynamic menu", 0, menu_cb_AddingToADynamicMenu);
 }
 
 void ScriptEditor_init (ScriptEditor me, Editor environment, const char32 *initialText) {
-	if (environment != NULL) {
+	if (environment) {
 		my environmentName = Melder_dup (environment -> name);
 		my editorClass = environment -> classInfo;
 	}
 	TextEditor_init (me, initialText);
 	my interpreter = Interpreter_createFromEnvironment (environment);
-	if (theScriptEditors == NULL) {
-		theScriptEditors = Collection_create (NULL, 10);
-		Collection_dontOwnItems (theScriptEditors);
-	}
-	Collection_addItem (theScriptEditors, me);
+	theReferencesToAllOpenScriptEditors. addItem_ref (me);
 }
 
-ScriptEditor ScriptEditor_createFromText (Editor environment, const char32 *initialText) {
+autoScriptEditor ScriptEditor_createFromText (Editor environment, const char32 *initialText) {
 	try {
 		autoScriptEditor me = Thing_new (ScriptEditor);
-		ScriptEditor_init (me.peek(), environment, initialText);
-		return me.transfer();
+		ScriptEditor_init (me.get(), environment, initialText);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Script window not created.");
 	}
 }
 
-ScriptEditor ScriptEditor_createFromScript (Editor environment, Script script) {
+autoScriptEditor ScriptEditor_createFromScript_canBeNull (Editor environment, Script script) {
 	try {
-		if (theScriptEditors) {
-			for (long ieditor = 1; ieditor <= theScriptEditors -> size; ieditor ++) {
-				ScriptEditor editor = (ScriptEditor) theScriptEditors -> item [ieditor];
-				if (MelderFile_equal (& script -> file, & editor -> file)) {
-					Editor_raise (editor);
-					Melder_appendError (U"The script ", & script -> file, U" is already open and has been moved to the front.");
-					if (editor -> dirty)
-						Melder_appendError (U"Choose \"Reopen from disk\" if you want to revert to the old version.");
-					Melder_flushError ();
-					return NULL;   // safe NULL
-				}
+		for (long ieditor = 1; ieditor <= theReferencesToAllOpenScriptEditors.size; ieditor ++) {
+			ScriptEditor editor = theReferencesToAllOpenScriptEditors.at [ieditor];
+			if (MelderFile_equal (& script -> file, & editor -> file)) {
+				Editor_raise (editor);
+				Melder_appendError (U"The script ", & script -> file, U" is already open and has been moved to the front.");
+				if (editor -> dirty)
+					Melder_appendError (U"Choose \"Reopen from disk\" if you want to revert to the old version.");
+				Melder_flushError ();
+				return autoScriptEditor();   // safe null
 			}
 		}
 		autostring32 text = MelderFile_readText (& script -> file);
 		autoScriptEditor me = ScriptEditor_createFromText (environment, text.peek());
 		MelderFile_copy (& script -> file, & my file);
-		Thing_setName (me.peek(), Melder_fileToPath (& script -> file));
-		return me.transfer();
+		Thing_setName (me.get(), Melder_fileToPath (& script -> file));
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Script window not created.");
 	}
diff --git a/sys/ScriptEditor.h b/sys/ScriptEditor.h
index 036f042..80a2263 100644
--- a/sys/ScriptEditor.h
+++ b/sys/ScriptEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Script.h"
@@ -26,10 +25,10 @@
 Thing_define (ScriptEditor, TextEditor) {
 	char32 *environmentName;
 	ClassInfo editorClass;
-	Interpreter interpreter;
-	UiForm argsDialog;
+	autoInterpreter interpreter;
+	autoUiForm argsDialog;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_nameChanged ()
 		override;
@@ -47,17 +46,17 @@ void ScriptEditor_init (ScriptEditor me,
 	Editor editor,
 	const char32 *initialText
 );
-ScriptEditor ScriptEditor_createFromText (
-	Editor editor,   // the scripting environment; if NULL, the scripting environment consists of the global windows
-	const char32 *initialText   // may be NULL
+autoScriptEditor ScriptEditor_createFromText (
+	Editor editor,   // the scripting environment; if null, the scripting environment consists of the global windows
+	const char32 *initialText   // may be null
 );
 
-ScriptEditor ScriptEditor_createFromScript (
+autoScriptEditor ScriptEditor_createFromScript_canBeNull (
 	Editor editor,
 	Script script
 );
 
-int ScriptEditors_dirty (void);   // are there any modified and unsaved scripts? Ask before quitting the program.
+bool ScriptEditors_dirty ();   // are there any modified and unsaved scripts? Ask before quitting the program.
 
 /* End of file ScriptEditor.h */
 #endif
diff --git a/sys/Simple.cpp b/sys/Simple.cpp
index 7399825..f64b417 100644
--- a/sys/Simple.cpp
+++ b/sys/Simple.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Simple.h"
@@ -38,36 +37,40 @@
 #include "oo_DESCRIPTION.h"
 #include "Simple_def.h"
 
-Thing_implement (SimpleInt, Data, 0);
+Thing_implement (SimpleInt, Daata, 0);
 
-SimpleInt SimpleInt_create (int number) {
+autoSimpleInt SimpleInt_create (int number) {
 	autoSimpleInt me = Thing_new (SimpleInt);
 	my number = number;
-	return me.transfer();
+	return me;
 }
 
-Thing_implement (SimpleLong, Data, 0);
+Thing_implement (SimpleLong, Daata, 0);
 
-SimpleLong SimpleLong_create (long number) {
+autoSimpleLong SimpleLong_create (long number) {
 	autoSimpleLong me = Thing_new (SimpleLong);
 	my number = number;
-	return me.transfer();
+	return me;
 }
 
-Thing_implement (SimpleDouble, Data, 0);
+Thing_implement (SimpleDouble, Daata, 0);
 
-SimpleDouble SimpleDouble_create (double number) {
+autoSimpleDouble SimpleDouble_create (double number) {
 	autoSimpleDouble me = Thing_new (SimpleDouble);
 	my number = number;
-	return me.transfer();
+	return me;
 }
 
-Thing_implement (SimpleString, Data, 0);
+Thing_implement (SimpleString, Daata, 0);
 
-SimpleString SimpleString_create (const char32 *string) {
+autoSimpleString SimpleString_create (const char32 *string) {
 	autoSimpleString me = Thing_new (SimpleString);
 	my string = Melder_dup (string);
-	return me.transfer();
+	return me;
+}
+
+int SimpleString_compare (SimpleString me, SimpleString thee) noexcept {
+	return str32cmp (my string, thy string);
 }
 
 /* End of file Simple.cpp */
diff --git a/sys/Simple.h b/sys/Simple.h
index e251d46..0da7513 100644
--- a/sys/Simple.h
+++ b/sys/Simple.h
@@ -4,33 +4,30 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
 #include "Simple_def.h"
-oo_CLASS_CREATE (SimpleInt, Data);
-oo_CLASS_CREATE (SimpleLong, Data);
-oo_CLASS_CREATE (SimpleDouble, Data);
-oo_CLASS_CREATE (SimpleString, Data);
 
-SimpleInt SimpleInt_create (int number);
-SimpleLong SimpleLong_create (long number);
-SimpleDouble SimpleDouble_create (double number);
-SimpleString SimpleString_create (const char32 *string);
+autoSimpleInt SimpleInt_create (int number);
+autoSimpleLong SimpleLong_create (long number);
+autoSimpleDouble SimpleDouble_create (double number);
+autoSimpleString SimpleString_create (const char32 *string);
+
+int SimpleString_compare (SimpleString me, SimpleString thee) noexcept;
 
 /* End of file Simple.h */
 #endif
diff --git a/sys/Simple_def.h b/sys/Simple_def.h
index c713a14..57b58d9 100644
--- a/sys/Simple_def.h
+++ b/sys/Simple_def.h
@@ -2,41 +2,40 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define ooSTRUCT SimpleInt
-oo_DEFINE_CLASS (SimpleInt, Data)
+oo_DEFINE_CLASS (SimpleInt, Daata)
 	oo_INT (number)
 oo_END_CLASS (SimpleInt)
 #undef ooSTRUCT
 
 #define ooSTRUCT SimpleLong
-oo_DEFINE_CLASS (SimpleLong, Data)
+oo_DEFINE_CLASS (SimpleLong, Daata)
 	oo_LONG (number)
 oo_END_CLASS (SimpleLong)
 #undef ooSTRUCT
 
 #define ooSTRUCT SimpleDouble
-oo_DEFINE_CLASS (SimpleDouble, Data)
+oo_DEFINE_CLASS (SimpleDouble, Daata)
 	oo_DOUBLE (number)
 oo_END_CLASS (SimpleDouble)
 #undef ooSTRUCT
 
 #define ooSTRUCT SimpleString
-oo_DEFINE_CLASS (SimpleString, Data)
+oo_DEFINE_CLASS (SimpleString, Daata)
 	oo_STRING (string)
 oo_END_CLASS (SimpleString)
 #undef ooSTRUCT
diff --git a/sys/Strings.cpp b/sys/Strings.cpp
index e3cee73..1a95874 100644
--- a/sys/Strings.cpp
+++ b/sys/Strings.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 //#define USE_STAT  1
@@ -60,7 +59,7 @@
 #include "oo_DESCRIPTION.h"
 #include "Strings_def.h"
 
-Thing_implement (Strings, Data, 0);
+Thing_implement (Strings, Daata, 0);
 
 static long Strings_totalLength (Strings me) {
 	long totalLength = 0;
@@ -82,7 +81,7 @@ static long Strings_maximumLength (Strings me) {
 }
 
 void structStrings :: v_info () {
-	structData :: v_info ();
+	structDaata :: v_info ();
 	MelderInfo_writeLine (U"Number of strings: ", numberOfStrings);
 	MelderInfo_writeLine (U"Total length: ", Strings_totalLength (this), U" characters");
 	MelderInfo_writeLine (U"Longest string: ", Strings_maximumLength (this), U" characters");
@@ -91,17 +90,17 @@ void structStrings :: v_info () {
 const char32 * structStrings :: v_getVectorStr (long icol) {
 	if (icol < 1 || icol > our numberOfStrings) return U"";
 	char32 *stringValue = strings [icol];
-	return stringValue == NULL ? U"" : stringValue;
+	return stringValue ? stringValue : U"";
 }
 
 #define Strings_createAsFileOrDirectoryList_TYPE_FILE  0
 #define Strings_createAsFileOrDirectoryList_TYPE_DIRECTORY  1
-static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattable */, int type) {
+static autoStrings Strings_createAsFileOrDirectoryList (const char32 *path /* cattable */, int type) {
 	#if USE_STAT
 		/*
 		 * Initialize.
 		 */
-		DIR *d = NULL;
+		DIR *d = nullptr;
 		try {
 			autoMelderString filePath, searchDirectory, left, right;
 			/*
@@ -112,11 +111,11 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 			 */
 			MelderString_copy (& searchDirectory, path);
 			char32 *asterisk = str32rchr (searchDirectory. string, '*');
-			if (asterisk != NULL) {
+			if (asterisk) {
 				*asterisk = '\0';
 				searchDirectory. length = asterisk - searchDirectory. string;   // probably superfluous, but correct
 				char32 *lastSlash = str32rchr (searchDirectory. string, Melder_DIRECTORY_SEPARATOR);
-				if (lastSlash != NULL) {
+				if (lastSlash) {
 					*lastSlash = '\0';   // This fixes searchDirectory.
 					searchDirectory. length = lastSlash - searchDirectory. string;   // probably superfluous, but correct
 					MelderString_copy (& left, lastSlash + 1);
@@ -129,13 +128,13 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 			char buffer8 [1+kMelder_MAXPATH];
 			Melder_str32To8bitFileRepresentation_inline (searchDirectory. string, buffer8);
 			d = opendir (buffer8 [0] ? buffer8 : ".");
-			if (d == NULL)
+			if (! d)
 				Melder_throw (U"Cannot open directory ", searchDirectory. string, U".");
 			//Melder_casual (U"opened");
 			autoStrings me = Thing_new (Strings);
 			my strings = NUMvector <char32 *> (1, 1000000);
 			struct dirent *entry;
-			while ((entry = readdir (d)) != NULL) {
+			while (!! (entry = readdir (d))) {
 				MelderString_copy (& filePath, searchDirectory. string [0] ? searchDirectory. string : U".");
 				MelderString_appendCharacter (& filePath, Melder_DIRECTORY_SEPARATOR);
 				char32 buffer32 [1+kMelder_MAXPATH];
@@ -154,7 +153,7 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 					(type == Strings_createAsFileOrDirectoryList_TYPE_DIRECTORY && S_ISDIR (stats. st_mode)))
 				{
 					Melder_8bitFileRepresentationToStr32_inline (entry -> d_name, buffer32);
-					unsigned long length = str32len (buffer32);
+					int64 length = str32len (buffer32);
 					if (buffer32 [0] != U'.' &&
 						(left. length == 0 || str32nequ (buffer32, left. string, left. length)) &&
 						(right. length == 0 || (length >= right. length && str32equ (buffer32 + (length - right. length), right. string))))
@@ -164,8 +163,8 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 				}
 			}
 			closedir (d);
-			Strings_sort (me.peek());
-			return me.transfer();
+			Strings_sort (me.get());
+			return me;
 		} catch (MelderError) {
 			if (d) closedir (d);   // "finally"
 			throw;
@@ -173,7 +172,8 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 	#elif defined (_WIN32)
 		try {
 			char32 searchPath [1+kMelder_MAXPATH];
-			int len = str32len (path), hasAsterisk = str32chr (path, U'*') != NULL;
+			int len = str32len (path);
+			bool hasAsterisk = !! str32chr (path, U'*');
 			bool endsInSeparator = ( len != 0 && path [len - 1] == U'\\' );
 			autoStrings me = Thing_new (Strings);
 			my strings = NUMvector <char32 *> (1, 1000000);
@@ -194,15 +194,15 @@ static Strings Strings_createAsFileOrDirectoryList (const char32 *path /* cattab
 				} while (FindNextFileW (searchHandle, & findData));
 				FindClose (searchHandle);
 			}
-			Strings_sort (me.peek());
-			return me.transfer();
+			Strings_sort (me.get());
+			return me;
 		} catch (MelderError) {
 			throw;
 		}
 	#endif
 }
 
-Strings Strings_createAsFileList (const char32 *path /* cattable */) {
+autoStrings Strings_createAsFileList (const char32 *path /* cattable */) {
 	try {
 		return Strings_createAsFileOrDirectoryList (path, Strings_createAsFileOrDirectoryList_TYPE_FILE);
 	} catch (MelderError) {
@@ -210,7 +210,7 @@ Strings Strings_createAsFileList (const char32 *path /* cattable */) {
 	}
 }
 
-Strings Strings_createAsDirectoryList (const char32 *path /* cattable */) {
+autoStrings Strings_createAsDirectoryList (const char32 *path /* cattable */) {
 	try {
 		return Strings_createAsFileOrDirectoryList (path, Strings_createAsFileOrDirectoryList_TYPE_DIRECTORY);
 	} catch (MelderError) {
@@ -218,14 +218,14 @@ Strings Strings_createAsDirectoryList (const char32 *path /* cattable */) {
 	}
 }
 
-Strings Strings_readFromRawTextFile (MelderFile file) {
+autoStrings Strings_readFromRawTextFile (MelderFile file) {
 	try {
 		autoMelderReadText text = MelderReadText_createFromFile (file);
 
 		/*
 		 * Count number of strings.
 		 */
-		int64_t n = MelderReadText_getNumberOfLines (text.peek());
+		int64 n = MelderReadText_getNumberOfLines (text.peek());
 
 		/*
 		 * Create.
@@ -241,7 +241,7 @@ Strings Strings_readFromRawTextFile (MelderFile file) {
 			char32 *line = MelderReadText_readLine (text.peek());
 			my strings [i] = Melder_dup (line);
 		}
-		return me.transfer();
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings not read from raw text file ", file, U".");
 	}
diff --git a/sys/StringsEditor.cpp b/sys/StringsEditor.cpp
index bf7ab32..b93b6bf 100644
--- a/sys/StringsEditor.cpp
+++ b/sys/StringsEditor.cpp
@@ -1,20 +1,19 @@
 /* StringsEditor.cpp
  *
- * Copyright (C) 2007-2011,2015 Paul Boersma
+ * Copyright (C) 2007-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "StringsEditor.h"
@@ -23,13 +22,11 @@
 
 Thing_implement (StringsEditor, Editor, 0);
 
-void structStringsEditor :: v_destroy () {
+void structStringsEditor :: v_destroy () noexcept {
 	StringsEditor_Parent :: v_destroy ();
 }
 
-static void menu_cb_help (EDITOR_ARGS) {
-	EDITOR_IAM (StringsEditor);
-	(void) me;
+static void menu_cb_help (StringsEditor /* me */, EDITOR_ARGS_DIRECT) {
 	Melder_help (U"StringsEditor");
 }
 
@@ -45,15 +42,13 @@ static void updateList (StringsEditor me) {
 		GuiList_insertItem (my list, strings -> strings [i], 0);
 }
 
-static void gui_button_cb_insert (I, GuiButtonEvent event) {
-	(void) event;
-	iam (StringsEditor);
+static void gui_button_cb_insert (StringsEditor me, GuiButtonEvent /* event */) {
 	Strings strings = (Strings) my data;
 	/*
 	 * Find the first selected item.
 	 */
 	long numberOfSelected, *selected = GuiList_getSelectedPositions (my list, & numberOfSelected);
-	long position = selected == NULL ? strings -> numberOfStrings + 1 : selected [1];
+	long position = selected ? selected [1] : strings -> numberOfStrings + 1;
 	NUMvector_free (selected, 1);
 	char32 *text = GuiText_getString (my text);
 	/*
@@ -73,9 +68,7 @@ static void gui_button_cb_insert (I, GuiButtonEvent event) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_button_cb_append (I, GuiButtonEvent event) {
-	(void) event;
-	iam (StringsEditor);
+static void gui_button_cb_append (StringsEditor me, GuiButtonEvent /* event */) {
 	Strings strings = (Strings) my data;
 	char32 *text = GuiText_getString (my text);
 	/*
@@ -95,9 +88,7 @@ static void gui_button_cb_append (I, GuiButtonEvent event) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_button_cb_remove (I, GuiButtonEvent event) {
-	(void) event;
-	iam (StringsEditor);
+static void gui_button_cb_remove (StringsEditor me, GuiButtonEvent /* event */) {
 	long numberOfSelected, *selected = GuiList_getSelectedPositions (my list, & numberOfSelected);
 	for (long iselected = numberOfSelected; iselected >= 1; iselected --) {
 		Strings_remove ((Strings) my data, selected [iselected]);
@@ -107,9 +98,7 @@ static void gui_button_cb_remove (I, GuiButtonEvent event) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_button_cb_replace (I, GuiButtonEvent event) {
-	(void) event;
-	iam (StringsEditor);
+static void gui_button_cb_replace (StringsEditor me, GuiButtonEvent /* event */) {
 	Strings strings = (Strings) my data;
 	long numberOfSelected, *selected = GuiList_getSelectedPositions (my list, & numberOfSelected);
 	char32 *text = GuiText_getString (my text);
@@ -121,17 +110,15 @@ static void gui_button_cb_replace (I, GuiButtonEvent event) {
 	Editor_broadcastDataChanged (me);
 }
 
-static void gui_list_cb_doubleClick (GuiObject widget, void *void_me, long item) {
-	(void) widget;
-	iam (StringsEditor);
+static void gui_list_cb_doubleClick (StringsEditor me, GuiList_DoubleClickEvent /* event */) {
 	Strings strings = (Strings) my data;
-	if (item <= strings -> numberOfStrings)
-		GuiText_setString (my text, strings -> strings [item]);
+	//if (event -> position <= strings -> numberOfStrings)   // FIXME
+	//	GuiText_setString (my text, strings -> strings [event -> position]);
 }
 
 void structStringsEditor :: v_createChildren () {
-	list = GuiList_create (d_windowForm, 1, 0, Machine_getMenuBarHeight (), -70, true, NULL);
-	//GuiList_setDoubleClickCallback (list, gui_list_cb_doubleClick, this);
+	list = GuiList_create (d_windowForm, 1, 0, Machine_getMenuBarHeight (), -70, true, nullptr);
+	GuiList_setDoubleClickCallback (list, gui_list_cb_doubleClick, this);
 	GuiThing_show (list);
 
 	text = GuiText_createShown (d_windowForm, 0, 0, -40 - Gui_TEXTFIELD_HEIGHT, -40, 0);
@@ -145,12 +132,12 @@ void structStringsEditor :: v_dataChanged () {
 	updateList (this);
 }
 
-StringsEditor StringsEditor_create (const char32 *title, Strings data) {
+autoStringsEditor StringsEditor_create (const char32 *title, Strings data) {
 	try {
 		autoStringsEditor me = Thing_new (StringsEditor);
-		Editor_init (me.peek(), 20, 40, 600, 600, title, data);
-		updateList (me.peek());
-		return me.transfer();
+		Editor_init (me.get(), 20, 40, 600, 600, title, data);
+		updateList (me.get());
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Strings window not created.");
 	}
diff --git a/sys/StringsEditor.h b/sys/StringsEditor.h
index 634b833..ac879d5 100644
--- a/sys/StringsEditor.h
+++ b/sys/StringsEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1993-2011,2015 David Weenink & Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -26,7 +25,7 @@ Thing_define (StringsEditor, Editor) {
 	GuiList list;
 	GuiText text;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_createChildren ()
 		override;
@@ -36,7 +35,7 @@ Thing_define (StringsEditor, Editor) {
 		override;
 };
 
-StringsEditor StringsEditor_create (const char32 *title, Strings data);
+autoStringsEditor StringsEditor_create (const char32 *title, Strings data);
 
 /* End of file StringsEditor.h */
 #endif
diff --git a/sys/Strings_.h b/sys/Strings_.h
index 620c5ca..9a891df 100644
--- a/sys/Strings_.h
+++ b/sys/Strings_.h
@@ -4,29 +4,27 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Data.h"
 
 #include "Strings_def.h"
-oo_CLASS_CREATE (Strings, Data);
 
-Strings Strings_createAsFileList (const char32 *path /* cattable */);
-Strings Strings_createAsDirectoryList (const char32 *path /* cattable */);
-Strings Strings_readFromRawTextFile (MelderFile file);
+autoStrings Strings_createAsFileList (const char32 *path /* cattable */);
+autoStrings Strings_createAsDirectoryList (const char32 *path /* cattable */);
+autoStrings Strings_readFromRawTextFile (MelderFile file);
 void Strings_writeToRawTextFile (Strings me, MelderFile file);
 
 void Strings_randomize (Strings me);
diff --git a/sys/Strings_def.h b/sys/Strings_def.h
index 1ecafae..b7212b1 100644
--- a/sys/Strings_def.h
+++ b/sys/Strings_def.h
@@ -2,24 +2,23 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 
 #define ooSTRUCT Strings
-oo_DEFINE_CLASS (Strings, Data)
+oo_DEFINE_CLASS (Strings, Daata)
 
 	oo_LONG (numberOfStrings)
 	oo_STRING_VECTOR (strings, numberOfStrings)
diff --git a/sys/TextEditor.cpp b/sys/TextEditor.cpp
index 35e6c2a..90e3820 100644
--- a/sys/TextEditor.cpp
+++ b/sys/TextEditor.cpp
@@ -1,20 +1,19 @@
 /* TextEditor.cpp
  *
- * Copyright (C) 1997-2012,2013,2015 Paul Boersma, 2010 Franz Brausse
+ * Copyright (C) 1997-2012,2013,2015,2016 Paul Boersma, 2010 Franz Brausse
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "TextEditor.h"
@@ -32,18 +31,14 @@ Thing_implement (TextEditor, Editor, 0);
 #include "prefs_copyToInstance.h"
 #include "TextEditor_prefs.h"
 
-static Collection theOpenTextEditors = NULL;
+static CollectionOf <structTextEditor> theReferencesToAllOpenTextEditors;
 
 /***** TextEditor methods *****/
 
-void structTextEditor :: v_destroy () {
-	forget (our openDialog);
-	forget (our saveDialog);
-	forget (our printDialog);
-	forget (our findDialog);
-	if (theOpenTextEditors) {
-		Collection_undangleItem (theOpenTextEditors, this);
-	}
+void structTextEditor :: v_destroy () noexcept {
+	our openDialog.reset();   // don't delay till delete
+	our saveDialog.reset();   // don't delay till delete
+	theReferencesToAllOpenTextEditors. undangleItem (this);
 	TextEditor_Parent :: v_destroy ();
 }
 
@@ -69,39 +64,37 @@ void structTextEditor :: v_nameChanged () {
 }
 
 static void openDocument (TextEditor me, MelderFile file) {
-	if (theOpenTextEditors) {
-		for (long ieditor = 1; ieditor <= theOpenTextEditors -> size; ieditor ++) {
-			TextEditor editor = (TextEditor) theOpenTextEditors -> item [ieditor];
-			if (editor != me && MelderFile_equal (file, & editor -> file)) {
-				Editor_raise (editor);
-				Melder_appendError (U"Text file ", file, U" is already open.");
-				forget (me);   // don't forget me before Melder_appendError, because "file" is owned by one of my dialogs
-				Melder_flushError ();
-				return;
-			}
+	for (long ieditor = 1; ieditor <= theReferencesToAllOpenTextEditors.size; ieditor ++) {
+		TextEditor editor = theReferencesToAllOpenTextEditors.at [ieditor];
+		if (editor != me && MelderFile_equal (file, & editor -> file)) {
+			Editor_raise (editor);
+			Melder_appendError (U"Text file ", file, U" is already open.");
+			forget (me);   // don't forget me before Melder_appendError, because "file" is owned by one of my dialogs
+			Melder_flushError ();
+			return;
 		}
 	}
 	autostring32 text = MelderFile_readText (file);
 	GuiText_setString (my textWidget, text.peek());
 	/*
 	 * GuiText_setString has invoked the changeCallback,
-	 * which has set 'my dirty' to TRUE. Fix this.
+	 * which has set `my dirty` to `true`. Fix this.
 	 */
-	my dirty = FALSE;
+	my dirty = false;
 	MelderFile_copy (file, & my file);
 	Thing_setName (me, Melder_fileToPath (file));
 }
 
 static void newDocument (TextEditor me) {
-	GuiText_setString (my textWidget, U"");   // implicitly sets my dirty to TRUE
-	my dirty = FALSE;
+	GuiText_setString (my textWidget, U"");   // implicitly sets my dirty to `true`
+	my dirty = false;
 	if (my v_fileBased ()) Thing_setName (me, U"");
 }
 
 static void saveDocument (TextEditor me, MelderFile file) {
 	autostring32 text = GuiText_getString (my textWidget);
 	MelderFile_writeText (file, text.peek(), Melder_getOutputEncoding ());
-	my dirty = FALSE;
+	my dirty = false;
 	MelderFile_copy (file, & my file);
 	if (my v_fileBased ()) Thing_setName (me, Melder_fileToPath (file));
 }
@@ -111,40 +104,37 @@ static void closeDocument (TextEditor me) {
 }
 
 static void cb_open_ok (UiForm sendingForm, int /* narg */, Stackel /* args */, const char32 * /* sendingString */,
-	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, I)
+	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, void *void_me)
 {
 	iam (TextEditor);
 	MelderFile file = UiFile_getFile (sendingForm);
 	openDocument (me, file);
 }
 
-static void cb_showOpen (EditorCommand cmd, UiForm /* sendingForm */, const char32 * /* sendingString */, Interpreter /* interpreter */) {
+static void cb_showOpen (EditorCommand cmd) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	if (! my openDialog)
-		my openDialog = UiInfile_create (my d_windowForm, U"Open", cb_open_ok, me, NULL, NULL, false);
-	UiInfile_do (my openDialog);
+		my openDialog = autoUiForm (UiInfile_create (my d_windowForm, U"Open", cb_open_ok, me, nullptr, nullptr, false));
+	UiInfile_do (my openDialog.get());
 }
 
 static void cb_saveAs_ok (UiForm sendingForm, int /* narg */, Stackel /* args */, const char32 * /* sendingString */,
-	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, I)
+	Interpreter /* interpreter */, const char32 * /* invokingButtonTitle */, bool /* modified */, void *void_me)
 {
 	iam (TextEditor);
 	MelderFile file = UiFile_getFile (sendingForm);
 	saveDocument (me, file);
 }
 
-static void menu_cb_saveAs (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_saveAs (TextEditor me, EDITOR_ARGS_DIRECT) {
 	if (! my saveDialog)
-		my saveDialog = UiOutfile_create (my d_windowForm, U"Save", cb_saveAs_ok, me, NULL, NULL);
+		my saveDialog = autoUiForm (UiOutfile_create (my d_windowForm, U"Save", cb_saveAs_ok, me, nullptr, nullptr));
 	char32 defaultName [300];
 	Melder_sprint (defaultName,300, ! my v_fileBased () ? U"info.txt" : my name [0] ? MelderFile_name (& my file) : U"");
-	UiOutfile_do (my saveDialog, defaultName);
+	UiOutfile_do (my saveDialog.get(), defaultName);
 }
 
-static void gui_button_cb_saveAndOpen (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_saveAndOpen (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyOpenDialog);
 	if (my name [0]) {
@@ -154,37 +144,32 @@ static void gui_button_cb_saveAndOpen (I, GuiButtonEvent event) {
 			Melder_flushError ();
 			return;
 		}
-		cb_showOpen (cmd, NULL, NULL, NULL);
+		cb_showOpen (cmd);
 	} else {
-		menu_cb_saveAs (me, cmd, NULL, 0, NULL, NULL, NULL);
+		menu_cb_saveAs (me, cmd, nullptr, 0, nullptr, nullptr, nullptr);
 	}
 }
 
-static void gui_button_cb_cancelOpen (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_cancelOpen (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyOpenDialog);
 }
 
-static void gui_button_cb_discardAndOpen (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_discardAndOpen (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyOpenDialog);
-	cb_showOpen (cmd, NULL, NULL, NULL);
+	cb_showOpen (cmd);
 }
 
-static void menu_cb_open (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_open (TextEditor me, EDITOR_ARGS_CMD) {
 	if (my dirty) {
-		if (my dirtyOpenDialog == NULL) {
+		if (! my dirtyOpenDialog) {
 			int buttonWidth = 120, buttonSpacing = 20;
 			my dirtyOpenDialog = GuiDialog_create (my d_windowForm,
 				150, 70,
 				Gui_LEFT_DIALOG_SPACING + 3 * buttonWidth + 2 * buttonSpacing + Gui_RIGHT_DIALOG_SPACING,
 				Gui_TOP_DIALOG_SPACING + Gui_TEXTFIELD_HEIGHT + Gui_VERTICAL_DIALOG_SPACING_SAME + 2 * Gui_BOTTOM_DIALOG_SPACING + Gui_PUSHBUTTON_HEIGHT,
-				U"Text changed", NULL, NULL, GuiDialog_MODAL);
+				U"Text changed", nullptr, nullptr, GuiDialog_MODAL);
 			GuiLabel_createShown (my dirtyOpenDialog,
 				Gui_LEFT_DIALOG_SPACING, - Gui_RIGHT_DIALOG_SPACING,
 				Gui_TOP_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_LABEL_HEIGHT,
@@ -204,13 +189,11 @@ static void menu_cb_open (EDITOR_ARGS) {
 		}
 		GuiThing_show (my dirtyOpenDialog);
 	} else {
-		cb_showOpen (cmd, sendingForm, sendingString, interpreter);
+		cb_showOpen (cmd);
 	}
 }
 
-static void gui_button_cb_saveAndNew (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_saveAndNew (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyNewDialog);
 	if (my name [0]) {
@@ -222,34 +205,29 @@ static void gui_button_cb_saveAndNew (I, GuiButtonEvent event) {
 		}
 		newDocument (me);
 	} else {
-		menu_cb_saveAs (me, cmd, NULL, 0, NULL, NULL, NULL);
+		menu_cb_saveAs (me, cmd, nullptr, 0, nullptr, nullptr, nullptr);
 	}
 }
 
-static void gui_button_cb_cancelNew (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_cancelNew (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyNewDialog);
 }
 
-static void gui_button_cb_discardAndNew (I, GuiButtonEvent event) {
-	(void) event;
-	EditorCommand cmd = (EditorCommand) void_me;
+static void gui_button_cb_discardAndNew (EditorCommand cmd, GuiButtonEvent /* event */) {
 	TextEditor me = (TextEditor) cmd -> d_editor;
 	GuiThing_hide (my dirtyNewDialog);
 	newDocument (me);
 }
 
-static void menu_cb_new (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_new (TextEditor me, EDITOR_ARGS_CMD) {
 	if (my v_fileBased () && my dirty) {
 		if (! my dirtyNewDialog) {
 			int buttonWidth = 120, buttonSpacing = 20;
 			my dirtyNewDialog = GuiDialog_create (my d_windowForm,
 				150, 70, Gui_LEFT_DIALOG_SPACING + 3 * buttonWidth + 2 * buttonSpacing + Gui_RIGHT_DIALOG_SPACING,
 					Gui_TOP_DIALOG_SPACING + Gui_TEXTFIELD_HEIGHT + Gui_VERTICAL_DIALOG_SPACING_SAME + 2 * Gui_BOTTOM_DIALOG_SPACING + Gui_PUSHBUTTON_HEIGHT,
-				U"Text changed", NULL, NULL, GuiDialog_MODAL);
+				U"Text changed", nullptr, nullptr, GuiDialog_MODAL);
 			GuiLabel_createShown (my dirtyNewDialog,
 				Gui_LEFT_DIALOG_SPACING, - Gui_RIGHT_DIALOG_SPACING,
 				Gui_TOP_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_LABEL_HEIGHT,
@@ -273,13 +251,11 @@ static void menu_cb_new (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_clear (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_clear (TextEditor me, EDITOR_ARGS_DIRECT) {
 	my v_clear ();
 }
 
-static void menu_cb_save (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_save (TextEditor me, EDITOR_ARGS_CMD) {
 	if (my name [0]) {
 		try {
 			saveDocument (me, & my file);
@@ -288,12 +264,11 @@ static void menu_cb_save (EDITOR_ARGS) {
 			return;
 		}
 	} else {
-		menu_cb_saveAs (me, cmd, NULL, 0, NULL, NULL, NULL);
+		menu_cb_saveAs (me, cmd, nullptr, 0, nullptr, nullptr, nullptr);
 	}
 }
 
-static void menu_cb_reopen (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_reopen (TextEditor me, EDITOR_ARGS_DIRECT) {
 	if (my name [0]) {
 		try {
 			openDocument (me, & my file);
@@ -306,9 +281,7 @@ static void menu_cb_reopen (EDITOR_ARGS) {
 	}
 }
 
-static void gui_button_cb_saveAndClose (I, GuiButtonEvent event) {
-	(void) event;
-	iam (TextEditor);
+static void gui_button_cb_saveAndClose (TextEditor me, GuiButtonEvent /* event */) {
 	GuiThing_hide (my dirtyCloseDialog);
 	if (my name [0]) {
 		try {
@@ -319,19 +292,15 @@ static void gui_button_cb_saveAndClose (I, GuiButtonEvent event) {
 		}
 		closeDocument (me);
 	} else {
-		menu_cb_saveAs (me, Editor_getMenuCommand (me, U"File", U"Save as..."), NULL, 0, NULL, NULL, NULL);
+		menu_cb_saveAs (me, Editor_getMenuCommand (me, U"File", U"Save as..."), nullptr, 0, nullptr, nullptr, nullptr);
 	}
 }
 
-static void gui_button_cb_cancelClose (I, GuiButtonEvent event) {
-	(void) event;
-	iam (TextEditor);
+static void gui_button_cb_cancelClose (TextEditor me, GuiButtonEvent /* event */) {
 	GuiThing_hide (my dirtyCloseDialog);
 }
 
-static void gui_button_cb_discardAndClose (I, GuiButtonEvent event) {
-	(void) event;
-	iam (TextEditor);
+static void gui_button_cb_discardAndClose (TextEditor me, GuiButtonEvent /* event */) {
 	GuiThing_hide (my dirtyCloseDialog);
 	closeDocument (me);
 }
@@ -343,7 +312,7 @@ void structTextEditor :: v_goAway () {
 			dirtyCloseDialog = GuiDialog_create (d_windowForm,
 				150, 70, Gui_LEFT_DIALOG_SPACING + 3 * buttonWidth + 2 * buttonSpacing + Gui_RIGHT_DIALOG_SPACING,
 					Gui_TOP_DIALOG_SPACING + Gui_TEXTFIELD_HEIGHT + Gui_VERTICAL_DIALOG_SPACING_SAME + 2 * Gui_BOTTOM_DIALOG_SPACING + Gui_PUSHBUTTON_HEIGHT,
-				U"Text changed", NULL, NULL, GuiDialog_MODAL);
+				U"Text changed", nullptr, nullptr, GuiDialog_MODAL);
 			GuiLabel_createShown (dirtyCloseDialog,
 				Gui_LEFT_DIALOG_SPACING, - Gui_RIGHT_DIALOG_SPACING,
 				Gui_TOP_DIALOG_SPACING, Gui_TOP_DIALOG_SPACING + Gui_LABEL_HEIGHT,
@@ -367,33 +336,27 @@ void structTextEditor :: v_goAway () {
 	}
 }
 
-static void menu_cb_undo (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_undo (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_undo (my textWidget);
 }
 
-static void menu_cb_redo (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_redo (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_redo (my textWidget);
 }
 
-static void menu_cb_cut (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_cut (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_cut (my textWidget);  // use ((XmAnyCallbackStruct *) call) -> event -> xbutton. time
 }
 
-static void menu_cb_copy (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_copy (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_copy (my textWidget);
 }
 
-static void menu_cb_paste (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_paste (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_paste (my textWidget);
 }
 
-static void menu_cb_erase (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_erase (TextEditor me, EDITOR_ARGS_DIRECT) {
 	GuiText_remove (my textWidget);
 }
 
@@ -425,13 +388,13 @@ static bool getSelectedLines (TextEditor me, long *firstLine, long *lastLine) {
 	return true;
 }
 
-static char32 *theFindString = NULL, *theReplaceString = NULL;
+static char32 *theFindString = nullptr, *theReplaceString = nullptr;
 static void do_find (TextEditor me) {
-	if (theFindString == NULL) return;   // e.g. when the user does "Find again" before having done any "Find"
+	if (! theFindString) return;   // e.g. when the user does "Find again" before having done any "Find"
 	long left, right;
 	autostring32 text = GuiText_getStringAndSelectionPosition (my textWidget, & left, & right);
 	char32 *location = str32str (& text [right], theFindString);
-	if (location != NULL) {
+	if (location) {
 		long index = location - text.peek();
 		GuiText_setSelection (my textWidget, index, index + str32len (theFindString));
 		GuiText_scrollToSelection (my textWidget);
@@ -441,7 +404,7 @@ static void do_find (TextEditor me) {
 	} else {
 		/* Try from the start of the document. */
 		location = str32str (text.peek(), theFindString);
-		if (location != NULL) {
+		if (location) {
 			long index = location - text.peek();
 			GuiText_setSelection (my textWidget, index, index + str32len (theFindString));
 			GuiText_scrollToSelection (my textWidget);
@@ -455,7 +418,7 @@ static void do_find (TextEditor me) {
 }
 
 static void do_replace (TextEditor me) {
-	if (theReplaceString == NULL) return;   // e.g. when the user does "Replace again" before having done any "Replace"
+	if (! theReplaceString) return;   // e.g. when the user does "Replace again" before having done any "Replace"
 	autostring32 selection = GuiText_getSelection (my textWidget);
 	if (! Melder_equ (selection.peek(), theFindString)) {
 		do_find (me);
@@ -471,13 +434,12 @@ static void do_replace (TextEditor me) {
 	#endif
 }
 
-static void menu_cb_find (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_find (TextEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Find", 0)
 		LABEL (U"", U"Find:")
 		TEXTFIELD (U"findString", U"")
 	EDITOR_OK
-		if (theFindString != NULL) SET_STRING (U"findString", theFindString);
+		if (theFindString) SET_STRING (U"findString", theFindString);
 	EDITOR_DO
 		Melder_free (theFindString);
 		theFindString = Melder_dup_f (GET_STRING (U"findString"));
@@ -485,13 +447,11 @@ static void menu_cb_find (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_findAgain (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_findAgain (TextEditor me, EDITOR_ARGS_DIRECT) {
 	do_find (me);
 }
 
-static void menu_cb_replace (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_replace (TextEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Find", 0)
 		LABEL (U"", U"This is a \"slow\" find-and-replace method;")
 		LABEL (U"", U"if the selected text is identical to the Find string,")
@@ -503,8 +463,8 @@ static void menu_cb_replace (EDITOR_ARGS) {
 		LABEL (U"", U"Replace with:")
 		TEXTFIELD (U"replaceString", U"")
 	EDITOR_OK
-		if (theFindString != NULL) SET_STRING (U"findString", theFindString);
-		if (theReplaceString != NULL) SET_STRING (U"replaceString", theReplaceString);
+		if (theFindString) SET_STRING (U"findString", theFindString);
+		if (theReplaceString) SET_STRING (U"replaceString", theReplaceString);
 	EDITOR_DO
 		Melder_free (theFindString);
 		theFindString = Melder_dup (GET_STRING (U"findString"));
@@ -514,13 +474,11 @@ static void menu_cb_replace (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_replaceAgain (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_replaceAgain (TextEditor me, EDITOR_ARGS_DIRECT) {
 	do_replace (me);
 }
 
-static void menu_cb_whereAmI (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_whereAmI (TextEditor me, EDITOR_ARGS_DIRECT) {
 	long numberOfLinesLeft, numberOfLinesRight;
 	if (! getSelectedLines (me, & numberOfLinesLeft, & numberOfLinesRight)) {
 		Melder_information (U"The cursor is on line ", numberOfLinesLeft, U".");
@@ -531,8 +489,7 @@ static void menu_cb_whereAmI (EDITOR_ARGS) {
 	}
 }
 
-static void menu_cb_goToLine (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_goToLine (TextEditor me, EDITOR_ARGS_FORM) {
 	EDITOR_FORM (U"Go to line", 0)
 		NATURAL (U"Line", U"1")
 	EDITOR_OK
@@ -567,8 +524,7 @@ static void menu_cb_goToLine (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void menu_cb_convertToCString (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
+static void menu_cb_convertToCString (TextEditor me, EDITOR_ARGS_DIRECT) {
 	autostring32 text = GuiText_getString (my textWidget);
 	char32 buffer [2] = U" ";
 	const char32 *hex [16] = { U"0", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8", U"9", U"A", U"B", U"C", U"D", U"E", U"F" };
@@ -615,14 +571,13 @@ static void setFontSize (TextEditor me, int fontSize) {
 	updateSizeMenu (me);
 }
 
-static void menu_cb_10 (EDITOR_ARGS) { EDITOR_IAM (TextEditor); setFontSize (me, 10); }
-static void menu_cb_12 (EDITOR_ARGS) { EDITOR_IAM (TextEditor); setFontSize (me, 12); }
-static void menu_cb_14 (EDITOR_ARGS) { EDITOR_IAM (TextEditor); setFontSize (me, 14); }
-static void menu_cb_18 (EDITOR_ARGS) { EDITOR_IAM (TextEditor); setFontSize (me, 18); }
-static void menu_cb_24 (EDITOR_ARGS) { EDITOR_IAM (TextEditor); setFontSize (me, 24); }
-static void menu_cb_fontSize (EDITOR_ARGS) {
-	EDITOR_IAM (TextEditor);
-	EDITOR_FORM (U"Text window: Font size", 0)
+static void menu_cb_10 (TextEditor me, EDITOR_ARGS_DIRECT) { setFontSize (me, 10); }
+static void menu_cb_12 (TextEditor me, EDITOR_ARGS_DIRECT) { setFontSize (me, 12); }
+static void menu_cb_14 (TextEditor me, EDITOR_ARGS_DIRECT) { setFontSize (me, 14); }
+static void menu_cb_18 (TextEditor me, EDITOR_ARGS_DIRECT) { setFontSize (me, 18); }
+static void menu_cb_24 (TextEditor me, EDITOR_ARGS_DIRECT) { setFontSize (me, 24); }
+static void menu_cb_fontSize (TextEditor me, EDITOR_ARGS_FORM) {
+	EDITOR_FORM (U"Text window: Font size", nullptr)
 		NATURAL (U"Font size (points)", U"12")
 	EDITOR_OK
 		SET_INTEGER (U"Font size", (long) my p_fontSize);
@@ -631,22 +586,21 @@ static void menu_cb_fontSize (EDITOR_ARGS) {
 	EDITOR_END
 }
 
-static void gui_text_cb_change (I, GuiTextEvent event) {
-	(void) event;
-	iam (TextEditor);
+static void gui_text_cb_changed (TextEditor me, GuiTextEvent /* event */) {
 	if (! my dirty) {
-		my dirty = TRUE;
+		my dirty = true;
 		my v_nameChanged ();
 	}
 }
 
 void structTextEditor :: v_createChildren () {
 	textWidget = GuiText_createShown (d_windowForm, 0, 0, Machine_getMenuBarHeight (), 0, GuiText_SCROLLED);
-	GuiText_setChangeCallback (textWidget, gui_text_cb_change, this);
+	GuiText_setChangedCallback (textWidget, gui_text_cb_changed, this);
 }
 
 void structTextEditor :: v_createMenus () {
 	TextEditor_Parent :: v_createMenus ();
+
 	if (v_fileBased ()) {
 		Editor_addCommand (this, U"File", U"New", 'N', menu_cb_new);
 		Editor_addCommand (this, U"File", U"Open...", 'O', menu_cb_open);
@@ -654,71 +608,66 @@ void structTextEditor :: v_createMenus () {
 	} else {
 		Editor_addCommand (this, U"File", U"Clear", 'N', menu_cb_clear);
 	}
-	Editor_addCommand (this, U"File", U"-- save --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- save --", 0, nullptr);
 	if (v_fileBased ()) {
 		Editor_addCommand (this, U"File", U"Save", 'S', menu_cb_save);
 		Editor_addCommand (this, U"File", U"Save as...", 0, menu_cb_saveAs);
 	} else {
 		Editor_addCommand (this, U"File", U"Save as...", 'S', menu_cb_saveAs);
 	}
-	Editor_addCommand (this, U"File", U"-- close --", 0, NULL);
+	Editor_addCommand (this, U"File", U"-- close --", 0, nullptr);
 	GuiText_setUndoItem (textWidget, Editor_addCommand (this, U"Edit", U"Undo", 'Z', menu_cb_undo));
 	GuiText_setRedoItem (textWidget, Editor_addCommand (this, U"Edit", U"Redo", 'Y', menu_cb_redo));
-	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, NULL);
+	Editor_addCommand (this, U"Edit", U"-- cut copy paste --", 0, nullptr);
 	Editor_addCommand (this, U"Edit", U"Cut", 'X', menu_cb_cut);
 	Editor_addCommand (this, U"Edit", U"Copy", 'C', menu_cb_copy);
 	Editor_addCommand (this, U"Edit", U"Paste", 'V', menu_cb_paste);
 	Editor_addCommand (this, U"Edit", U"Erase", 0, menu_cb_erase);
+
 	Editor_addMenu (this, U"Search", 0);
 	Editor_addCommand (this, U"Search", U"Find...", 'F', menu_cb_find);
 	Editor_addCommand (this, U"Search", U"Find again", 'G', menu_cb_findAgain);
 	Editor_addCommand (this, U"Search", U"Replace...", GuiMenu_SHIFT + 'F', menu_cb_replace);
 	Editor_addCommand (this, U"Search", U"Replace again", GuiMenu_SHIFT + 'G', menu_cb_replaceAgain);
-	Editor_addCommand (this, U"Search", U"-- line --", 0, NULL);
+	Editor_addCommand (this, U"Search", U"-- line --", 0, nullptr);
 	Editor_addCommand (this, U"Search", U"Where am I?", 0, menu_cb_whereAmI);
 	Editor_addCommand (this, U"Search", U"Go to line...", 'L', menu_cb_goToLine);
+
 	Editor_addMenu (this, U"Convert", 0);
 	Editor_addCommand (this, U"Convert", U"Convert to C string", 0, menu_cb_convertToCString);
-	#if defined (macintosh) || defined (UNIX) || defined (_WIN32)
-		Editor_addMenu (this, U"Font", 0);
-		Editor_addCommand (this, U"Font", U"Font size...", 0, menu_cb_fontSize);
-		fontSizeButton_10 = Editor_addCommand (this, U"Font", U"10", GuiMenu_CHECKBUTTON, menu_cb_10);
-		fontSizeButton_12 = Editor_addCommand (this, U"Font", U"12", GuiMenu_CHECKBUTTON, menu_cb_12);
-		fontSizeButton_14 = Editor_addCommand (this, U"Font", U"14", GuiMenu_CHECKBUTTON, menu_cb_14);
-		fontSizeButton_18 = Editor_addCommand (this, U"Font", U"18", GuiMenu_CHECKBUTTON, menu_cb_18);
-		fontSizeButton_24 = Editor_addCommand (this, U"Font", U"24", GuiMenu_CHECKBUTTON, menu_cb_24);
-	#endif
+
+	Editor_addMenu (this, U"Font", 0);
+	Editor_addCommand (this, U"Font", U"Font size...", 0, menu_cb_fontSize);
+	fontSizeButton_10 = Editor_addCommand (this, U"Font", U"10", GuiMenu_CHECKBUTTON, menu_cb_10);
+	fontSizeButton_12 = Editor_addCommand (this, U"Font", U"12", GuiMenu_CHECKBUTTON, menu_cb_12);
+	fontSizeButton_14 = Editor_addCommand (this, U"Font", U"14", GuiMenu_CHECKBUTTON, menu_cb_14);
+	fontSizeButton_18 = Editor_addCommand (this, U"Font", U"18", GuiMenu_CHECKBUTTON, menu_cb_18);
+	fontSizeButton_24 = Editor_addCommand (this, U"Font", U"24", GuiMenu_CHECKBUTTON, menu_cb_24);
 }
 
 void TextEditor_init (TextEditor me, const char32 *initialText) {
-	Editor_init (me, 0, 0, 600, 400, U"", NULL);
+	Editor_init (me, 0, 0, 600, 400, U"", nullptr);
 	setFontSize (me, my p_fontSize);
 	if (initialText) {
 		GuiText_setString (my textWidget, initialText);
 		my dirty = false;   // was set to true in valueChanged callback
 		Thing_setName (me, U"");
 	}
-	if (theOpenTextEditors == NULL) {
-		theOpenTextEditors = Collection_create (classTextEditor, 100);
-		Collection_dontOwnItems (theOpenTextEditors);
-	}
-	if (theOpenTextEditors != NULL) {
-		Collection_addItem (theOpenTextEditors, me);
-	}
+	theReferencesToAllOpenTextEditors. addItem_ref (me);
 }
 
-TextEditor TextEditor_create (const char32 *initialText) {
+autoTextEditor TextEditor_create (const char32 *initialText) {
 	try {
 		autoTextEditor me = Thing_new (TextEditor);
-		TextEditor_init (me.peek(), initialText);
-		return me.transfer();
+		TextEditor_init (me.get(), initialText);
+		return me;
 	} catch (MelderError) {
 		Melder_throw (U"Text window not created.");
 	}
 }
 
 void TextEditor_showOpen (TextEditor me) {
-	cb_showOpen (Editor_getMenuCommand (me, U"File", U"Open..."), NULL, NULL, NULL);
+	cb_showOpen (Editor_getMenuCommand (me, U"File", U"Open..."));
 }
 
 /* End of file TextEditor.cpp */
diff --git a/sys/TextEditor.h b/sys/TextEditor.h
index a45c835..ea7b458 100644
--- a/sys/TextEditor.h
+++ b/sys/TextEditor.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1997-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -24,12 +23,12 @@
 Thing_define (TextEditor, Editor) {
 	structMelderFile file;
 	GuiText textWidget;
-	UiForm openDialog, saveDialog, printDialog, findDialog;
-	int dirty;
+	autoUiForm openDialog, saveDialog;
+	bool dirty;
 	GuiDialog dirtyNewDialog, dirtyOpenDialog, dirtyCloseDialog;
 	GuiMenuItem fontSizeButton_10, fontSizeButton_12, fontSizeButton_14, fontSizeButton_18, fontSizeButton_24;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 	void v_nameChanged ()
 		override;
@@ -51,8 +50,8 @@ Thing_define (TextEditor, Editor) {
 void TextEditor_init (TextEditor me,
 	const char32 *initialText
 );
-TextEditor TextEditor_create (
-	const char32 *initialText   // may be NULL
+autoTextEditor TextEditor_create (
+	const char32 *initialText   // may be null
 );
 
 void TextEditor_showOpen (TextEditor me);
diff --git a/sys/TextEditor_prefs.h b/sys/TextEditor_prefs.h
index 407573f..287247c 100644
--- a/sys/TextEditor_prefs.h
+++ b/sys/TextEditor_prefs.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 prefs_begin (TextEditor)
diff --git a/sys/Thing.cpp b/sys/Thing.cpp
index 786e2d8..7af86de 100644
--- a/sys/Thing.cpp
+++ b/sys/Thing.cpp
@@ -2,32 +2,31 @@
  *
  * Copyright (C) 1992-2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <stdarg.h>
 #include <time.h>
 #include "Thing.h"
 
-static long theTotalNumberOfThings;
+long theTotalNumberOfThings;
 
 void structThing :: v_info ()
 {
 	MelderInfo_writeLine (U"Object type: ", Thing_className (this));
 	MelderInfo_writeLine (U"Object name: ", this -> name ? this -> name : U"<no name>");
-	time_t today = time (NULL);
+	time_t today = time (nullptr);
 	MelderInfo_writeLine (U"Date: ", Melder_peek8to32 (ctime (& today)));   // includes a newline
 }
 
@@ -36,24 +35,24 @@ void structThing :: v_info ()
  */
 struct structClassInfo theClassInfo_Thing = {
 	U"Thing",
-	NULL,      // no parent class
+	nullptr,   // no parent class
 	sizeof (class structThing),
-	NULL,      // no _new function (not needed, because Thing is never instantiated)
+	nullptr,   // no _new function (not needed, because Thing is never instantiated)
 	0,         // version
 	0,         // sequentialUniqueIdOfReadableClass
-	NULL       // dummyObject
+	nullptr    // dummyObject
 };
 ClassInfo classThing = & theClassInfo_Thing;
 
 const char32 * Thing_className (Thing me) { return my classInfo -> className; }
 
-Thing Thing_newFromClass (ClassInfo classInfo) {
-	Thing me = classInfo -> _new ();
+autoThing Thing_newFromClass (ClassInfo classInfo) {
+	autoThing me (classInfo -> _new ());
 	trace (U"created ", classInfo -> className);
 	theTotalNumberOfThings += 1;
 	my classInfo = classInfo;
-	Melder_assert (my name == NULL);   // confirm that _new called calloc
-	if (Melder_debug == 40) Melder_casual (U"created ", classInfo -> className, U" (", Melder_pointer (classInfo), U", ", me, U")");
+	Melder_assert (my name == nullptr);   // confirm that _new called calloc, so that we see null pointers
+	if (Melder_debug == 40) Melder_casual (U"created ", classInfo -> className, U" (", Melder_pointer (classInfo), U", ", me.get(), U")");
 	return me;
 }
 
@@ -67,17 +66,17 @@ static void _Thing_addOneReadableClass (ClassInfo readableClass) {
 }
 void Thing_recognizeClassesByName (ClassInfo readableClass, ...) {
 	va_list arg;
-	if (readableClass == NULL) return;
+	if (! readableClass) return;
 	va_start (arg, readableClass);
 	_Thing_addOneReadableClass (readableClass);
 	ClassInfo klas;
-	while ((klas = va_arg (arg, ClassInfo)) != NULL) {
+	while ((klas = va_arg (arg, ClassInfo)) != nullptr) {
 		_Thing_addOneReadableClass (klas);
 	}
 	va_end (arg);
 }
 
-long Thing_listReadableClasses (void) {
+long Thing_listReadableClasses () {
 	Melder_clearInfo ();
 	MelderInfo_open ();
 	for (long iclass = 1; iclass <= theNumberOfReadableClasses; iclass ++) {
@@ -133,7 +132,7 @@ ClassInfo Thing_classFromClassName (const char32 *klas, int *p_formatVersion) {
 	Melder_throw (U"Class \"", buffer, U"\" not recognized.");
 }
 
-Thing Thing_newFromClassName (const char32 *className, int *p_formatVersion) {
+autoThing Thing_newFromClassName (const char32 *className, int *p_formatVersion) {
 	try {
 		ClassInfo classInfo = Thing_classFromClassName (className, p_formatVersion);
 		return Thing_newFromClass (classInfo);
@@ -143,17 +142,19 @@ Thing Thing_newFromClassName (const char32 *className, int *p_formatVersion) {
 }
 
 Thing _Thing_dummyObject (ClassInfo classInfo) {
-	if (classInfo -> dummyObject == NULL) {
-		classInfo -> dummyObject = (Thing) classInfo -> _new ();
+	if (! classInfo -> dummyObject) {
+		classInfo -> dummyObject = classInfo -> _new ();
 	}
-	Melder_assert (classInfo -> dummyObject != NULL);
+	Melder_assert (classInfo -> dummyObject);
 	return classInfo -> dummyObject;
 }
 
 void _Thing_forget_nozero (Thing me) {
 	if (! me) return;
 	if (Melder_debug == 40) Melder_casual (U"destroying ", my classInfo -> className);
+	//Melder_casual (U"_Thing_forget_nozero before");
 	my v_destroy ();
+	//Melder_casual (U"_Thing_forget_nozero after");
 	theTotalNumberOfThings -= 1;
 }
 
@@ -168,25 +169,25 @@ void _Thing_forget (Thing me) {
 }
 
 bool Thing_isSubclass (ClassInfo klas, ClassInfo ancestor) {
-	while (klas != ancestor && klas != NULL) klas = klas -> parent;
-	return klas != NULL;
+	while (klas != ancestor && klas) klas = klas -> parent;
+	return !! klas;
 }
 
 bool Thing_isa (Thing me, ClassInfo klas) {
-	if (! me) Melder_fatal (U"(Thing_isa:) Found NULL object.");
+	if (! me) Melder_fatal (U"(Thing_isa:) Found null object.");
 	return Thing_isSubclass (my classInfo, klas);
 }
 
 void * _Thing_check (Thing me, ClassInfo klas, const char *fileName, int line) {
 	if (! me)
 		Melder_fatal (U"(_Thing_check:)"
-			U" NULL object passed to a function\n"
+			U" null object passed to a function\n"
 			U"in file ", Melder_peek8to32 (fileName),
 			U" at line ", line,
 			U"."
 		);
 	ClassInfo classInfo = my classInfo;
-	while (classInfo != klas && classInfo != NULL) classInfo = classInfo -> parent;
+	while (classInfo != klas && classInfo) classInfo = classInfo -> parent;
 	if (! classInfo)
 		Melder_fatal (U"(_Thing_check:)"
 			U" Object of wrong class (", my classInfo -> className,
@@ -199,7 +200,7 @@ void * _Thing_check (Thing me, ClassInfo klas, const char *fileName, int line) {
 }
 
 void Thing_infoWithIdAndFile (Thing me, unsigned long id, MelderFile file) {
-	//Melder_assert (me != NULL);
+	//Melder_assert (me);
 	Melder_clearInfo ();
 	MelderInfo_open ();
 	if (id != 0) MelderInfo_writeLine (U"Object id: ", id);
@@ -209,7 +210,7 @@ void Thing_infoWithIdAndFile (Thing me, unsigned long id, MelderFile file) {
 }
 
 void Thing_info (Thing me) {
-	Thing_infoWithIdAndFile (me, 0, NULL);
+	Thing_infoWithIdAndFile (me, 0, nullptr);
 }
 
 char32 * Thing_getName (Thing me) { return my name; }
@@ -239,8 +240,6 @@ void Thing_setName (Thing me, const char32 *name /* cattable */) {
 	my v_nameChanged ();
 }
 
-long Thing_getTotalNumberOfThings (void) { return theTotalNumberOfThings; }
-
 void Thing_swap (Thing me, Thing thee) {
 	Melder_assert (my classInfo == thy classInfo);
 	int n = my classInfo -> size;
diff --git a/sys/Thing.h b/sys/Thing.h
index 24fb67d..279f87f 100644
--- a/sys/Thing.h
+++ b/sys/Thing.h
@@ -2,28 +2,27 @@
 #define _Thing_h_
 /* Thing.h
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* The root class of all objects. */
 
 /* Anyone who uses Thing can also use: */
 	/* Arrays with any bounds and 1 or 2 indices, math, and numerics: */
-		#include "NUM.h"   /* Including math.h */
+		#include "../num/NUM.h"   /* Including math.h */
 	/* The messaging mechanism: */
 		#include "melder.h"   /* Including stdio.h string.h etc. */
 	/* The macros for struct and class definitions: */
@@ -31,23 +30,20 @@
 	/* The input/output mechanism: */
 		#include "abcio.h"
 
-/* Public. */
+//#include <string>
 
-typedef void *Any;   /* Prevent compile-time type checking. */
+#define _Thing_auto_DEBUG  0
 
 /*
-	Use the macros 'I' and 'thou' for objects in the formal parameter lists
+	Use the macro 'I' for an object in the formal parameter lists
 	(if the explicit type cannot be used).
-	Use the macros 'iam' and 'thouart'
+	Use the macro 'iam'
 	as the first declaration in a function definition.
-	After this, the object 'me' or 'thee' has the right class (for the compiler),
-	so that you can use the macros 'my' and 'thy' to refer to members.
+	After this, the object 'me' has the right class (for the compiler),
+	so that you can use the macro 'my' to refer to members.
 	Example: int Person_getAge (I) { iam (Person); return my age; }
 */
-#define I  Any void_me
-#define thou  Any void_thee
 #define iam(klas)  klas me = (klas) void_me
-#define thouart(klas)  klas thee = (klas) void_thee
 #define my  me ->
 #define thy  thee ->
 #define his  him ->
@@ -76,17 +72,17 @@ struct structClassInfo {
 #define Thing_declare(klas) \
 	typedef struct struct##klas *klas; \
 	typedef _Thing_auto <struct##klas> auto##klas; \
+	extern struct structClassInfo theClassInfo_##klas; \
 	extern ClassInfo class##klas
 
 #define Thing_define(klas,parentKlas) \
 	Thing_declare (klas); \
 	typedef struct##parentKlas klas##_Parent; \
-	extern struct structClassInfo theClassInfo_##klas; \
 	struct struct##klas : public struct##parentKlas
 
 #define Thing_implement(klas,parentKlas,version) \
 	static Thing _##klas##_new () { return new struct##klas; } \
-	struct structClassInfo theClassInfo_##klas = { U"" #klas, & theClassInfo_##parentKlas, sizeof (class struct##klas), _##klas##_new, version, 0, NULL }; \
+	struct structClassInfo theClassInfo_##klas = { U"" #klas, & theClassInfo_##parentKlas, sizeof (class struct##klas), _##klas##_new, version, 0, nullptr}; \
 	ClassInfo class##klas = & theClassInfo_##klas
 
 /*
@@ -102,7 +98,16 @@ struct structThing {
 	void * operator new (size_t size) { return Melder_calloc (char, (int64) size); }
 	void operator delete (void *ptr, size_t /* size */) { Melder_free (ptr); }
 
-	virtual void v_destroy () { Melder_free (name); };
+	/*
+	 * If a Thing has members of type autoThing,
+	 * then we want the destructors of autoThing to be called automatically whenever a Thing is `delete`d.
+	 * For this to happen, it is necessary that every Thing itself has a destructor.
+	 * We therefore define a destructor here,
+	 * and we make it virtual to ensure that every subclass has its own automatic version.
+	 */
+	virtual ~structThing () noexcept { }
+
+	virtual void v_destroy () noexcept { Melder_free (name); };
 		/*
 		 * derived::v_destroy calls base::v_destroy at end
 		 */
@@ -128,12 +133,12 @@ struct structThing {
 		 */
 };
 
-#define forget(thing)  do { _Thing_forget (thing); thing = NULL; } while (false)
+#define forget(thing)  do { _Thing_forget (thing); thing = nullptr; } while (false)
 /*
 	Function:
 		free all memory associated with 'thing'.
 	Postcondition:
-		thing == NULL;
+		thing == nullptr;
 */
 #define forget_nozero(thing)  do { _Thing_forget_nozero (thing); delete thing; } while (false)
 /*
@@ -141,7 +146,7 @@ struct structThing {
 		free all memory associated with 'thing'.
 */
 
-/* All functions with 'Thing me' as the first argument assume that it is not NULL. */
+/* All functions with 'Thing me' as the first argument assume that it is not null. */
 
 const char32 * Thing_className (Thing me);
 /* Return your class name. */
@@ -163,31 +168,13 @@ bool Thing_isSubclass (ClassInfo klas, ClassInfo ancestor);
 void Thing_info (Thing me);
 void Thing_infoWithIdAndFile (Thing me, unsigned long id, MelderFile file);
 
-#define Thing_new(Klas)  static_cast<Klas> (Thing_newFromClass (class##Klas))
-/*
-	Function:
-		return a new object of class 'klas'.
-	Postconditions:
-		result -> classInfo == class'klas';
-		other members are 0.
-*/
-
-Thing Thing_newFromClass (ClassInfo klas);
-/*
-	Function:
-		return a new object of class 'klas'.
-	Postconditions:
-		result -> classInfo == 'klas';
-		other members are 0.
-*/
-
 void Thing_recognizeClassesByName (ClassInfo readableClass, ...);
 /*
 	Function:
 		make Thing_classFromClassName () and Thing_newFromClassName ()
 		recognize a class from its name (a string).
 	Arguments:
-		as many classes as you want; finish with a NULL.
+		as many classes as you want; finish with a nullptr.
 		It is not an error if a class occurs more than once in the list.
 	Behaviour:
 		calling this routine more than once, each time for different classes,
@@ -200,28 +187,17 @@ void Thing_recognizeClassesByName (ClassInfo readableClass, ...);
 		Calls to this routine should preferably be put in the beginning of main ().
 */
 void Thing_recognizeClassByOtherName (ClassInfo readableClass, const char32 *otherName);
-long Thing_listReadableClasses (void);
-
-Thing Thing_newFromClassName (const char32 *className, int *p_formatVersion);
-/*
-	Function:
-		return a new object of class 'className', or NULL if the class name is not recognized.
-	Postconditions:
-		result -> classInfo == class'className';
-		other members are 0.
-	Side effect:
-		see Thing_classFromClassName.
-*/
+long Thing_listReadableClasses ();
 
 ClassInfo Thing_classFromClassName (const char32 *className, int *formatVersion);
 /*
 	Function:
-		Return the class info table of class 'className', or NULL if it is not recognized.
-		E.g. the value returned from Thing_classFromClassName (L"PietjePuk")
+		Return the class info table of class 'className', or null if it is not recognized.
+		E.g. the value returned from Thing_classFromClassName (U"PietjePuk")
 		will be equal to classPietjePuk.
 	Side effect:
-		If 'className' equals L"PietjePuk 300", the value returned will be classPietjePuk,
-		and formatVersion (if not NULL) will be set to 300.
+		If 'className' equals U"PietjePuk 300", the value returned will be classPietjePuk,
+		and formatVersion (if not null) will be set to 300.
 */
 
 #define Thing_dummyObject(klas) \
@@ -229,7 +205,7 @@ ClassInfo Thing_classFromClassName (const char32 *className, int *formatVersion)
 Thing _Thing_dummyObject (ClassInfo classInfo);
 
 char32 * Thing_getName (Thing me);
-/* Return a pointer to your internal name (which can be NULL). */
+/* Return a pointer to your internal name (which can be null). */
 char32 * Thing_messageName (Thing me);
 
 void Thing_setName (Thing me, const char32 *name /* cattable */);
@@ -242,7 +218,7 @@ void Thing_setName (Thing me, const char32 *name /* cattable */);
 
 #define Thing_cast(Klas,var,expr) \
 	Klas var = static_cast <Klas> (expr);   /* The compiler checks this. */ \
-	Melder_assert (var == NULL || Thing_isa (var, class##Klas));
+	Melder_assert (! var || Thing_isa (var, class##Klas));
 
 void Thing_swap (Thing me, Thing thee);
 /*
@@ -262,77 +238,121 @@ void Thing_swap (Thing me, Thing thee);
 void _Thing_forget (Thing me);
 void _Thing_forget_nozero (Thing me);
 void * _Thing_check (Thing me, ClassInfo table, const char *fileName, int line);
-	/* Macros 'iam', 'thouart', 'heis'. */
 
 /* For debugging. */
 
-long Thing_getTotalNumberOfThings (void);
+extern long theTotalNumberOfThings;
 /* This number is 0 initially, increments at every successful `new', and decrements at every `forget'. */
 
 template <class T>
 class _Thing_auto {
-	T *d_ptr;
+	T *ptr;
 public:
 	/*
-	 * Things like
-	 *    autoPitch pitch (Pitch_create (...));
-	 * and
-	 *    autoPitch pitch = Pitch_create (...);
-	 * should work.
-	 */
-	_Thing_auto (T *a_ptr) : d_ptr (a_ptr) { }
-	_Thing_auto () : d_ptr (NULL) { }
-	/*
-	 * pitch should be destroyed when going out of scope,
-	 * both at the end of the try block and when a throw occurs.
-	 */
-	~_Thing_auto () {
-		if (d_ptr) forget (d_ptr);
+		A default constructor, as in
+			autoPitch pitch;
+		should initialize the pointer to null.
+	*/
+	_Thing_auto () : ptr (nullptr) {
+		#if _Thing_auto_DEBUG
+			fprintf (stderr, "default constructor\n");
+		#endif
 	}
-	T* peek () const {
-		return d_ptr;
+	/*
+		An awkward explicit construction from a pointer, like
+			extern Pitch getPitch ();
+			autoPitch pitch (getPitch ());
+		should work. However, such a case is probably a mistake,
+		because getPitch() should return an autoPitch if it
+		owns the Pitch, and if getPitch() doesn't own the Pitch,
+		an autoPitch should not receive it.
+		For this reason, the more intuitive syntax in
+			autoPitch pitch = getPitch ();
+		is forbidden, by declaring the construction-from-pointer as "explicit".
+	*/
+	explicit _Thing_auto (T *newPtr) : ptr (newPtr) {
+		#if _Thing_auto_DEBUG
+			if (our ptr)
+				fprintf (stderr, "constructor from pointer %p %s\n",
+					our ptr, Melder_peek32to8 (our ptr -> classInfo -> className));
+		#endif
 	}
 	/*
-	 * The expression
-	 *    pitch.d_ptr -> xmin
-	 * should be abbreviatable by
-	 *    pitch -> xmin
-	 */
-	T* operator-> () const {   // as r-value
-		return d_ptr;
+		After
+			autoPitch pitch1 = Pitch_create ();
+		pitch1 should be destroyed when going out of scope,
+		either at the end of the try block or whenever a throw occurs.
+	*/
+	~_Thing_auto () noexcept {
+		#if _Thing_auto_DEBUG
+			fprintf (stderr, "destructor %p %s\n",
+				our ptr, our ptr ? Melder_peek32to8 (our ptr -> classInfo -> className) : "(class unknown)");
+		#endif
+		if (our ptr) {
+			_Thing_forget (our ptr);
+			our ptr = nullptr;
+		}
+	}
+	T* get () const noexcept {
+		return our ptr;
 	}
-	T& operator* () const {   // as l-value
-		return *d_ptr;
+	/*
+		The expression
+			pitch.d_ptr -> xmin
+		should be abbreviatable by
+			pitch -> xmin
+	*/
+	T* operator-> () const noexcept {   // as r-value
+		return our ptr;
 	}
 	/*
-	 * There are two ways to access the pointer; with and without transfer of ownership.
+	T& operator* () const noexcept {   // as l-value
+		return *our ptr;
+	}*/
+	/*
+	 * After construction, there are two ways to access the pointer: with and without transfer of ownership.
 	 *
 	 * Without transfer:
-	 *    autoPitch pitch = Sound_to_Pitch (...);
-	 *    Pitch_draw (pitch.peek());
+	 *    Pitch_draw (pitch.get());
 	 *
 	 * With transfer:
-	 *    return thee.transfer();
+	 *    return thee;
 	 * and
-	 *    *out_pitch = pitch.transfer();
-	 *    *out_pulses = pulses.transfer();
+	 *    *out_pitch = pitch.move();
+	 *    *out_pulses = pulses.move();
 	 * and
-	 *    Collection_addItem (me, pitch.transfer());
+	 *    Collection_addItem_move (me, pitch.move());
 	 * and
-	 *    praat_new (pitch.transfer(), my name);
+	 *    praat_new (pitch.move(), my name);
 	 */
-	T* transfer () {
-		T* temp = d_ptr;
-		d_ptr = NULL;   // make the pointer non-automatic again
+	void releaseToUser () noexcept {
+		our ptr = nullptr;   // make the pointer non-automatic again
+	}
+	/*
+		Sometimes the ownership is determined by a flag such as _ownItems or _ownData or _ownSound.
+		In that case, the autoThing has be released as a raw Thing pointer,
+		and the ambiguous owner may become responsible for destruction the object.
+		In Praat, this happens with Collection items and with some editors.
+	*/
+	T* releaseToAmbiguousOwner () noexcept {
+		T* temp = our ptr;
+		our ptr = nullptr;   // make the pointer non-automatic again
 		return temp;
 	}
-	//operator T* () { return d_ptr; }   // this way only if peek() and transfer() are the same, e.g. in case of reference counting
-	// template <class Y> Y* operator= (_Thing_auto<Y>& a) { }
+	#if 0
+		operator T* () {
+			return our ptr;
+		}
+	#endif
 	/*
 	 * An autoThing can be cloned. This can be used for giving ownership without losing ownership.
 	 */
 	T* clone () const {
-		return static_cast<T *> (Data_copy (d_ptr));
+		return static_cast<T *> (Data_copy (our ptr));
+	}
+	void reset () noexcept {
+		_Thing_forget (our ptr);
+		our ptr = nullptr;
 	}
 	/*
 	 * Replacing a pointer in an existing autoThing should be an exceptional phenomenon,
@@ -340,66 +360,209 @@ public:
 	 * so that you can easily spot ugly places in your source code.
 	 * In order not to leak memory, the old object is destroyed.
 	 */
-	void reset (T* const ptr) {
-		if (d_ptr) forget (d_ptr);
-		d_ptr = ptr;
+	/*void reset (T* newPtr = nullptr) noexcept {
+		_Thing_forget (our ptr);
+		our ptr = newPtr;
+	}*/
+	void _zero () noexcept {
+		our ptr = nullptr;
+	}
+	explicit operator bool () const noexcept {
+		return !! our ptr;
+	}
+	bool operator== (_Thing_auto<T> other) const noexcept {
+		return other. ptr == our ptr;
+	}
+	bool operator!= (_Thing_auto<T> other) const noexcept {
+		return other. ptr != our ptr;
 	}
-private:
 	/*
-	 * The compiler should prevent initializations like
+	 * The compiler should prevent initializations from _Thing_auto l-values, as in
 	 *    autoPitch pitch2 = pitch;
+	 * This is because the syntax of this statement is *copy* syntax,
+	 * but the semantics of this statement has to be, confusingly, *move* semantics
+	 * (i.e., pitch.ptr should be set to null),
+	 * because if the semantics were copy semantics instead,
+	 * a destructor would be called at some point for both pitch and pitch 2,
+	 * twice deleting the same object, which is a run-time error.
 	 */
-	template <class Y> _Thing_auto (_Thing_auto<Y> &);   // copy constructor
-	//_Thing_auto (const _Thing_auto &);
+	_Thing_auto<T> (const _Thing_auto<T>&) = delete;   // disable copy constructor from an l-value of class T*
+	template <class Y> _Thing_auto<T> (const _Thing_auto<Y>&) = delete;   // disable copy constructor from an l-value of a descendant class of T*
 	/*
-	 * The compiler should prevent assignments like
+	 * The compiler should prevent assignments from _Thing_auto l-values, as in
 	 *    pitch2 = pitch;
+	 * This is because the syntax of this statement is *copy* syntax,
+	 * but the semantics of this statement has to be, confusingly, *move* semantics
+	 * (i.e., pitch.ptr should be set to null),
+	 * because if the semantics were copy semantics instead,
+	 * a destructor would be called at some point for both pitch and pitch 2,
+	 * twice deleting the same object, which is a run-time error.
+	 */
+	_Thing_auto<T>& operator= (const _Thing_auto<T>&) = delete;   // disable copy assignment from an l-value of class T*
+	template <class Y> _Thing_auto<T>& operator= (const _Thing_auto<Y>&) = delete;   // disable copy assignment from an l-value of a descendant class of T*
+	/*
+	 * The compiler should treat initializations from _Thing_auto r-values, as in
+	 *    extern autoPitch Pitch_create (...);
+	 *    autoPitch pitch = Pitch_create (...);
+	 * as move constructors.
+	 */
+	_Thing_auto<T> (_Thing_auto<T>&& other) noexcept : ptr (other. ptr) {
+		#if _Thing_auto_DEBUG
+			if (our ptr)
+				fprintf (stderr, "move constructor %p from same class %s\n",
+					our ptr, Melder_peek32to8 (our ptr -> classInfo -> className));
+		#endif
+		other. ptr = nullptr;
+	}
+	template <class Y> _Thing_auto<T> (_Thing_auto<Y>&& other) noexcept : ptr (other.get()) {
+		#if _Thing_auto_DEBUG
+			if (our ptr)
+				fprintf (stderr, "move constructor %p from other class %s\n",
+					our ptr, Melder_peek32to8 (our ptr -> classInfo -> className));
+		#endif
+		other. _zero();
+	}
+	/*
+	 * The compiler should treat assignments from _Thing_auto r-values, as in
+	 *    extern autoPitch Pitch_create (...);
+	 *    autoPitch pitch;
+	 *    pitch = Pitch_create (...);
+	 * as move assignments.
+	 */
+	_Thing_auto<T>& operator= (_Thing_auto<T>&& other) noexcept {
+		if (other. ptr != our ptr) {
+			#if _Thing_auto_DEBUG
+				fprintf (stderr, "move assignment before %p from same class %s\n",
+					our ptr, our ptr ? Melder_peek32to8 (our ptr -> classInfo -> className) : "(class unknown)");
+			#endif
+			if (our ptr) _Thing_forget (our ptr);
+			our ptr = other. ptr;
+			#if _Thing_auto_DEBUG
+				fprintf (stderr, "move assignment after %p from same class %s\n",
+					our ptr, our ptr ? Melder_peek32to8 (our ptr -> classInfo -> className) : "(class unknown)");
+			#endif
+			other. ptr = nullptr;
+		}
+		return *this;
+	}
+	template <class Y> _Thing_auto<T>& operator= (_Thing_auto<Y>&& other) noexcept {
+		if (other.get() != our ptr) {
+			#if _Thing_auto_DEBUG
+				fprintf (stderr, "move assignment before %p from other class %s\n",
+					our ptr, our ptr ? Melder_peek32to8 (our ptr -> classInfo -> className) : "(class unknown)");
+			#endif
+			if (our ptr) _Thing_forget (our ptr);
+			our ptr = other.get();
+			#if _Thing_auto_DEBUG
+				fprintf (stderr, "move assignment after %p from other class %s\n",
+					our ptr, our ptr ? Melder_peek32to8 (our ptr -> classInfo -> className) : "(class unknown)");
+			#endif
+			other. _zero();
+		}
+		return *this;
+	}
+	/*
+	 * Move semantics from l-values can be achieved with move syntax:
+	 *    autoPitch pitch2 = pitch1.move();   // calls the move constructor and therefore nullifies pitch1
+	 *
+	 *    pitch2 = pitch1.move();   // performs move assignment and therefore nullifies pitch1
 	 */
-	_Thing_auto& operator= (const _Thing_auto&);   // copy assignment
-	//template <class Y> _Thing_auto& operator= (const _Thing_auto<Y>&);
+	_Thing_auto<T>&& move () noexcept { return static_cast <_Thing_auto<T>&&> (*this); }
+	/*
+	 * Returning _Thing_auto from a function works as hoped for:
+	 *    autoPitch Sound_to_Pitch (Sound me) {
+	 *       autoPitch thee = Pitch_create (...);
+	 *       ...
+	 *       return thee;
+	 *    }
+	 *    autoPitch pitch = Sound_to_Pitch (sound);
+	 * returns a moved `thee` in `pitch`. This works because return values from automatic (i.e. non-static) variables are r-values.
+	 *
+	 * In function arguments, transfer of ownership works only explicitly:
+	 *    extern void Collection_addItem_move (Collection me, autoDaata item);
+	 *    autoPitch pitch = Pitch_create (...);
+	 *    Collection_addItem_move (collection, pitch.move());   // compiler error if you don't call move()
+	 */
+	template <class Y> _Thing_auto<Y> static_cast_move () noexcept {
+		return _Thing_auto<Y> (static_cast<Y*> (our releaseToAmbiguousOwner()));
+	}
 };
 
+typedef _Thing_auto<structThing> autoThing;
+
+#define Thing_new(Klas)  Thing_newFromClass (class##Klas).static_cast_move<struct##Klas>()
+/*
+	Function:
+		return a new object of class 'klas'.
+	Postconditions:
+		result -> classInfo == class'klas';
+		other members are 0.
+*/
+
+autoThing Thing_newFromClass (ClassInfo klas);
+/*
+	Function:
+		return a new object of class 'klas'.
+	Postconditions:
+		result -> classInfo == 'klas';
+		other members are 0.
+*/
+
+autoThing Thing_newFromClassName (const char32 *className, int *p_formatVersion);
+/*
+	Function:
+		return a new object of class 'className', or null if the class name is not recognized.
+	Postconditions:
+		result -> classInfo == class'className';
+		other members are 0.
+	Side effect:
+		see Thing_classFromClassName.
+*/
+
 template <class T>
 class autoThingVector {
-	T* d_ptr;
+	_Thing_auto<T> *d_ptr;
 	long d_from, d_to;
 public:
 	autoThingVector<T> (long from, long to) : d_from (from), d_to (to) {
-		d_ptr = static_cast <T*> (NUMvector (sizeof (T), from, to));
+		d_ptr = static_cast <_Thing_auto<T>*> (NUMvector (sizeof (_Thing_auto<T>), from, to));
 	}
-	autoThingVector (T *ptr, long from, long to) : d_ptr (ptr), d_from (from), d_to (to) {
+	autoThingVector (_Thing_auto<T> *ptr, long from, long to) : d_ptr (ptr), d_from (from), d_to (to) {
 	}
-	autoThingVector () : d_ptr (NULL), d_from (1), d_to (0) {
+	autoThingVector () : d_ptr (nullptr), d_from (1), d_to (0) {
 	}
 	~autoThingVector<T> () {
 		if (d_ptr) {
 			for (long i = d_from; i <= d_to; i ++)
-				forget (d_ptr [i]);
-			NUMvector_free (sizeof (T), d_ptr, d_from);
+				d_ptr [i].reset();
+			NUMvector_free (sizeof (_Thing_auto<T>), d_ptr, d_from);
 		}
 	}
-	T& operator[] (long i) {
+	_Thing_auto<T>& operator[] (long i) {
 		return d_ptr [i];
 	}
-	T* peek () const {
+	_Thing_auto<T>* peek () const {
 		return d_ptr;
 	}
+	/*
 	T* transfer () {
 		T* temp = d_ptr;
-		d_ptr = NULL;   // make the pointer non-automatic again
+		d_ptr = nullptr;   // make the pointer non-automatic again
 		return temp;
 	}
+
 	void reset (long from, long to) {
 		if (d_ptr) {
 			for (long i = d_from; i <= d_to; i ++)
 				forget (d_ptr [i]);
 			NUMvector_free (sizeof (T), d_ptr, d_from);
-			d_ptr = NULL;
+			d_ptr = nullptr;
 		}
-		d_from = from;   // this assignment is safe, because d_ptr is NULL
+		d_from = from;   // this assignment is safe, because d_ptr is null
 		d_to = to;
 		d_ptr = static_cast <T*> (NUMvector (sizeof (T), from, to));
 	}
+	*/
 };
 
 /* End of file Thing.h */
diff --git a/sys/Ui.cpp b/sys/Ui.cpp
index 4115f49..c16b9cb 100644
--- a/sys/Ui.cpp
+++ b/sys/Ui.cpp
@@ -1,20 +1,19 @@
 /* Ui.cpp
  *
- * Copyright (C) 1992-2012,2013,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <wctype.h>
@@ -50,12 +49,11 @@
 
 Thing_implement (UiField, Thing, 0);
 
-void structUiField :: v_destroy () {
+void structUiField :: v_destroy () noexcept {
 	Melder_free (formLabel);
 	Melder_free (stringValue);
 	Melder_free (stringValueA);
 	Melder_free (stringDefaultValue);
-	forget (options);
 	UiField_Parent :: v_destroy ();
 }
 
@@ -68,54 +66,38 @@ static UiField UiField_create (int type, const char32 *name) {
 	/*
 	 * Strip parentheses and colon off parameter name.
 	 */
-	if ((p = (char32 *) str32chr (shortName, U'(')) != NULL) {
+	if (!! (p = (char32 *) str32chr (shortName, U'('))) {
 		*p = U'\0';
 		if (p - shortName > 0 && p [-1] == U' ') p [-1] = U'\0';
 	}
 	p = shortName;
 	if (*p != U'\0' && p [str32len (p) - 1] == U':') p [str32len (p) - 1] = U'\0';
-	Thing_setName (me.peek(), shortName);
-	return me.transfer();
-}
-static UiField UiField_create (int type, const char *name) {
-	return UiField_create (type, Melder_peek8to32 (name));
+	Thing_setName (me.get(), shortName);
+	return me.releaseToAmbiguousOwner();
 }
 
 /***** class UiOption: radio buttons and menu options *****/
 
-Thing_define (UiOption, Thing) {
-	// new data:
-	public:
-		GuiRadioButton radioButton;
-		GuiObject menuItem;
-};
-
 Thing_implement (UiOption, Thing, 0);
 
-static Any UiOption_create (const char32 *label) {
-	UiOption me = Thing_new (UiOption);
-	Thing_setName (me, label);
-	return me;
+static UiOption UiOption_create (const char32 *label) {
+	autoUiOption me = Thing_new (UiOption);
+	Thing_setName (me.get(), label);
+	return me.releaseToAmbiguousOwner();
 }
 
-Any UiRadio_addButton (I, const char32 *label) {
-	iam (UiField);
-	UiOption thee;
-	if (me == NULL) return NULL;
+UiOption UiRadio_addButton (UiField me, const char32 *label) {
+	if (! me) return nullptr;
 	Melder_assert (my type == UI_RADIO || my type == UI_OPTIONMENU);
-	thee = static_cast <UiOption> (UiOption_create (label));
-	Collection_addItem (my options, thee);
-	return thee;
+	autoUiOption thee (UiOption_create (label));
+	return my options. addItem_move (thee.move());
 }
 
-Any UiOptionMenu_addButton (I, const char32 *label) {
-	iam (UiField);
-	UiOption thee;
-	if (me == NULL) return NULL;
+UiOption UiOptionMenu_addButton (UiField me, const char32 *label) {
+	if (! me) return nullptr;
 	Melder_assert (my type == UI_RADIO || my type == UI_OPTIONMENU);
-	thee = static_cast <UiOption> (UiOption_create (label));
-	Collection_addItem (my options, thee);
-	return thee;
+	autoUiOption thee (UiOption_create (label));
+	return my options. addItem_move (thee.move());
 }
 
 /***** Things to do with UiField objects. *****/
@@ -129,9 +111,9 @@ static void UiField_setDefault (UiField me) {
 		} break; case UI_BOOLEAN: {
 			GuiCheckButton_setValue (my checkButton, my integerDefaultValue);
 		} break; case UI_RADIO: {
-			for (int i = 1; i <= my options -> size; i ++) {
+			for (int i = 1; i <= my options.size; i ++) {
 				if (i == my integerDefaultValue) {
-					UiOption b = static_cast <UiOption> (my options -> item [i]);
+					UiOption b = my options.at [i];
 					GuiRadioButton_set (b -> radioButton);
 				}
 			}
@@ -151,10 +133,10 @@ static int colourToValue (UiField me, char32 *string) {
 	if (first == U'{') {
 		my colourValue. red = Melder_atof (++ p);
 		p = str32chr (p, U',');
-		if (p == NULL) return 0;
+		if (! p) return 0;
 		my colourValue. green = Melder_atof (++ p);
 		p = str32chr (p, U',');
-		if (p == NULL) return 0;
+		if (! p) return 0;
 		my colourValue. blue = Melder_atof (++ p);
 	} else {
 		*p = (char32) tolower ((int) *p);
@@ -185,7 +167,7 @@ static void UiField_widgetToValue (UiField me) {
 	switch (my type) {
 		case UI_REAL: case UI_REAL_OR_UNDEFINED: case UI_POSITIVE: {
 			autostring32 dirty = GuiText_getString (my text);   // the text as typed by the user
-			Interpreter_numericExpression (NULL, dirty.peek(), & my realValue);
+			Interpreter_numericExpression (nullptr, dirty.peek(), & my realValue);
 			/*
 			 * Put a clean version of the new value in the form.
 			 * If the value is equal to the default value, make sure that any default comments are included.
@@ -217,7 +199,7 @@ static void UiField_widgetToValue (UiField me) {
 				my integerValue = 2;
 			} else {
 				double realValue;
-				Interpreter_numericExpression (NULL, dirty.peek(), & realValue);
+				Interpreter_numericExpression (nullptr, dirty.peek(), & realValue);
 				my integerValue = lround (realValue);
 			}
 			if (my integerValue == Melder_atoi (my stringDefaultValue)) {
@@ -225,8 +207,9 @@ static void UiField_widgetToValue (UiField me) {
 			} else {
 				GuiText_setString (my text, Melder_integer (my integerValue));
 			}
-			if (my type == UI_NATURAL && my integerValue < 1)
+			if ((my type == UI_NATURAL || my type == UI_CHANNEL) && my integerValue < 1) {
 				Melder_throw (U_LEFT_DOUBLE_QUOTE, my name, U_RIGHT_DOUBLE_QUOTE U" must be a positive whole number.");
+			}
 		} break; case UI_WORD: {
 			Melder_free (my stringValue);
 			my stringValue = GuiText_getString (my text);
@@ -240,8 +223,8 @@ static void UiField_widgetToValue (UiField me) {
 			my integerValue = GuiCheckButton_getValue (my checkButton);
 		} break; case UI_RADIO: {
 			my integerValue = 0;
-			for (int i = 1; i <= my options -> size; i ++) {
-				UiOption b = static_cast <UiOption> (my options -> item [i]);
+			for (int i = 1; i <= my options.size; i ++) {
+				UiOption b = my options.at [i];
 				if (GuiRadioButton_getValue (b -> radioButton))
 					my integerValue = i;
 			}
@@ -253,7 +236,7 @@ static void UiField_widgetToValue (UiField me) {
 				Melder_throw (U"No option chosen for " U_LEFT_DOUBLE_QUOTE, my name, U_RIGHT_DOUBLE_QUOTE U".");
 		} break; case UI_LIST: {
 			long numberOfSelected, *selected = GuiList_getSelectedPositions (my list, & numberOfSelected);   // BUG memory
-			if (selected == NULL) {
+			if (! selected) {
 				Melder_warning (U"No items selected.");
 				my integerValue = 1;
 			} else {
@@ -266,7 +249,7 @@ static void UiField_widgetToValue (UiField me) {
 			if (colourToValue (me, string.peek())) {
 				// do nothing
 			} else {
-				Interpreter_numericExpression (NULL, string.peek(), & my colourValue. red);
+				Interpreter_numericExpression (nullptr, string.peek(), & my colourValue. red);
 				my colourValue. green = my colourValue. blue = my colourValue. red;
 			}
 		}
@@ -309,8 +292,8 @@ static void UiField_stringToValue (UiField me, const char32 *string, Interpreter
 				string [0] == U't' || string [0] == U'T';
 		} break; case UI_RADIO: case UI_OPTIONMENU: {
 			my integerValue = 0;
-			for (int i = 1; i <= my options -> size; i ++) {
-				UiOption b = static_cast <UiOption> (my options -> item [i]);
+			for (int i = 1; i <= my options.size; i ++) {
+				UiOption b = my options.at [i];
 				if (str32equ (string, b -> name))
 					my integerValue = i;
 			}
@@ -318,8 +301,8 @@ static void UiField_stringToValue (UiField me, const char32 *string, Interpreter
 				/*
 				 * Retry with different case.
 				 */
-				for (int i = 1; i <= my options -> size; i ++) {
-					UiOption b = static_cast <UiOption> (my options -> item [i]);
+				for (int i = 1; i <= my options.size; i ++) {
+					UiOption b = my options.at [i];
 					char32 name2 [100];
 					str32cpy (name2, b -> name);
 					if (islower ((int) name2 [0])) name2 [0] = (char32) toupper ((int) name2 [0]);
@@ -359,16 +342,16 @@ static void UiField_stringToValue (UiField me, const char32 *string, Interpreter
 
 /***** History mechanism. *****/
 
-static MelderString theHistory = { 0 };
+static MelderString theHistory { 0 };
 void UiHistory_write (const char32 *string) { MelderString_append (& theHistory, string); }
 void UiHistory_write_expandQuotes (const char32 *string) {
-	if (string == NULL) return;
+	if (! string) return;
 	for (const char32 *p = & string [0]; *p != U'\0'; p ++) {
 		if (*p == U'\"') MelderString_append (& theHistory, U"\"\""); else MelderString_appendCharacter (& theHistory, *p);
 	}
 }
 void UiHistory_write_colonize (const char32 *string) {
-	if (string == NULL) return;
+	if (! string) return;
 	for (const char32 *p = & string [0]; *p != U'\0'; p ++) {
 		if (*p == U'.' && p [1] == U'.' && p [2] == U'.') {
 			MelderString_append (& theHistory, U":");
@@ -378,22 +361,22 @@ void UiHistory_write_colonize (const char32 *string) {
 		}
 	}
 }
-char32 *UiHistory_get (void) { return theHistory.string; }
-void UiHistory_clear (void) { MelderString_empty (& theHistory); }
+char32 *UiHistory_get () { return theHistory.string; }
+void UiHistory_clear () { MelderString_empty (& theHistory); }
 
 /***** class UiForm: dialog windows *****/
 
 Thing_implement (UiForm, Thing, 0);
 
-bool (*theAllowExecutionHookHint) (void *closure) = NULL;
-void *theAllowExecutionClosureHint = NULL;
+bool (*theAllowExecutionHookHint) (void *closure) = nullptr;
+void *theAllowExecutionClosureHint = nullptr;
 
 void Ui_setAllowExecutionHook (bool (*allowExecutionHook) (void *closure), void *allowExecutionClosure) {
 	theAllowExecutionHookHint = allowExecutionHook;
 	theAllowExecutionClosureHint = allowExecutionClosure;
 }
 
-void structUiForm :: v_destroy () {
+void structUiForm :: v_destroy () noexcept {
 	for (int ifield = 1; ifield <= numberOfFields; ifield ++)
 		forget (field [ifield]);
 	if (d_dialogForm) {
@@ -405,29 +388,23 @@ void structUiForm :: v_destroy () {
 	UiForm_Parent :: v_destroy ();
 }
 
-static void gui_button_cb_revert (I, GuiButtonEvent event) {
-	(void) event;
-	iam (UiForm);
+static void gui_button_cb_revert (UiForm me, GuiButtonEvent /* event */) {
 	for (int ifield = 1; ifield <= my numberOfFields; ifield ++)
 		UiField_setDefault (my field [ifield]);
 }
 
-static void gui_dialog_cb_close (I) {
-	iam (UiForm);
+static void gui_dialog_cb_close (UiForm me) {
 	if (my cancelCallback) my cancelCallback (me, my buttonClosure);
 	GuiThing_hide (my d_dialogForm);
 	if (my destroyWhenUnmanaged) forget (me);
 }
-static void gui_button_cb_cancel (I, GuiButtonEvent event) {
-	(void) event;
-	iam (UiForm);
+static void gui_button_cb_cancel (UiForm me, GuiButtonEvent /* event */) {
 	if (my cancelCallback) my cancelCallback (me, my buttonClosure);
 	GuiThing_hide (my d_dialogForm);
 	if (my destroyWhenUnmanaged) forget (me);
 }
 
-void UiForm_widgetsToValues (I) {
-	iam (UiForm);
+void UiForm_widgetsToValues (UiForm me) {
 	try {
 		for (int ifield = 1; ifield <= my numberOfFields; ifield ++)
 			UiField_widgetToValue (my field [ifield]);
@@ -436,8 +413,7 @@ void UiForm_widgetsToValues (I) {
 	}
 }
 
-static void UiForm_okOrApply (I, GuiButton button, int hide) {
-	iam (UiForm);
+static void UiForm_okOrApply (UiForm me, GuiButton button, int hide) {
 	if (my allowExecutionHook && ! my allowExecutionHook (my allowExecutionClosure)) {
 		Melder_flushError (U"Cannot execute command window " U_LEFT_DOUBLE_QUOTE, my name, U_RIGHT_DOUBLE_QUOTE U".");
 		return;
@@ -456,8 +432,8 @@ static void UiForm_okOrApply (I, GuiButton button, int hide) {
 	if (my cancelButton) GuiThing_setSensitive (my cancelButton, false);
 	if (my revertButton) GuiThing_setSensitive (my revertButton, false);
 	if (my helpButton)   GuiThing_setSensitive (my helpButton,   false);
-	#if motif
-	XmUpdateDisplay (my d_dialogForm -> d_widget);
+	#if defined (_WIN32)
+		GdiFlush ();
 	#endif
 	if (my isPauseForm) {
 		for (int i = 1; i <= my numberOfContinueButtons; i ++) {
@@ -470,7 +446,7 @@ static void UiForm_okOrApply (I, GuiButton button, int hide) {
 	 * Keep the gate for error handling.
 	 */
 	try {
-		my okCallback (me, 0, NULL, NULL, NULL, NULL, false, my buttonClosure);
+		my okCallback (me, 0, nullptr, nullptr, nullptr, nullptr, false, my buttonClosure);
 		/*
 		 * Write everything to history. Before destruction!
 		 */
@@ -497,7 +473,7 @@ static void UiForm_okOrApply (I, GuiButton button, int hide) {
 					} break; case UI_BOOLEAN: {
 						UiHistory_write (field -> integerValue ? (next -- ? U", \"yes\"" : U" \"yes\"") : (next -- ? U", \"no\"" : U" \"no\""));
 					} break; case UI_RADIO: case UI_OPTIONMENU: {
-						UiOption b = static_cast <UiOption> (field -> options -> item [field -> integerValue]);
+						UiOption b = field -> options.at [field -> integerValue];
 						UiHistory_write (next -- ? U", \"" : U" \"");
 						UiHistory_write_expandQuotes (b -> name);
 						UiHistory_write (U"\"");
@@ -550,21 +526,15 @@ static void UiForm_okOrApply (I, GuiButton button, int hide) {
 	if (my helpButton)   GuiThing_setSensitive (my helpButton,   true);
 }
 
-static void gui_button_cb_ok (I, GuiButtonEvent event) {
-	(void) event;
-	iam (UiForm);
+static void gui_button_cb_ok (UiForm me, GuiButtonEvent event) {
 	UiForm_okOrApply (me, event -> button, true);
 }
 
-static void gui_button_cb_apply (I, GuiButtonEvent event) {
-	(void) event;
-	iam (UiForm);
+static void gui_button_cb_apply (UiForm me, GuiButtonEvent event) {
 	UiForm_okOrApply (me, event -> button, false);
 }
 
-static void gui_button_cb_help (I, GuiButtonEvent event) {
-	(void) event;
-	iam (UiForm);
+static void gui_button_cb_help (UiForm me, GuiButtonEvent /* event */) {
 	Melder_help (my helpTitle);
 }
 
@@ -574,23 +544,22 @@ UiForm UiForm_create (GuiWindow parent, const char32 *title,
 {
 	autoUiForm me = Thing_new (UiForm);
 	my d_dialogParent = parent;
-	Thing_setName (me.peek(), title);
+	Thing_setName (me.get(), title);
 	my okCallback = okCallback;
 	my buttonClosure = buttonClosure;
 	my invokingButtonTitle = Melder_dup (invokingButtonTitle);
 	my helpTitle = Melder_dup (helpTitle);
-	return me.transfer();
+	return me.releaseToAmbiguousOwner();
 }
 
-void UiForm_setPauseForm (I,
+void UiForm_setPauseForm (UiForm me,
 	int numberOfContinueButtons, int defaultContinueButton, int cancelContinueButton,
 	const char32 *continue1, const char32 *continue2, const char32 *continue3,
 	const char32 *continue4, const char32 *continue5, const char32 *continue6,
 	const char32 *continue7, const char32 *continue8, const char32 *continue9,
 	const char32 *continue10,
-	void (*cancelCallback) (Any dia, void *closure))
+	void (*cancelCallback) (UiForm dia, void *closure))
 {
-	iam (UiForm);
 	my isPauseForm = true;
 	my numberOfContinueButtons = numberOfContinueButtons;
 	my defaultContinueButton = defaultContinueButton;
@@ -612,134 +581,112 @@ static void commonOkCallback (UiForm /* dia */, int /* narg */, Stackel /* args
 	Interpreter interpreter, const char32 * /* invokingButtonTitle */, bool /* modified */, void *closure)
 {
 	EditorCommand cmd = (EditorCommand) closure;
-	cmd -> commandCallback (cmd -> d_editor, cmd, cmd -> d_uiform, 0, NULL, NULL, interpreter);
+	cmd -> commandCallback (cmd -> d_editor, cmd, cmd -> d_uiform.get(), 0, nullptr, nullptr, interpreter);
 }
 
-UiForm UiForm_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle) {
-	Editor editor = (Editor) cmd -> d_editor;
-	UiForm dia = UiForm_create (editor -> d_windowForm, title, commonOkCallback, cmd, invokingButtonTitle, helpTitle);
+autoUiForm UiForm_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle) {
+	Editor editor = cmd -> d_editor;
+	autoUiForm dia (UiForm_create (editor -> d_windowForm, title, commonOkCallback, cmd, invokingButtonTitle, helpTitle));
 	dia -> command = cmd;
 	return dia;
 }
 
 static UiField UiForm_addField (UiForm me, int type, const char32 *label) {
 	if (my numberOfFields == MAXIMUM_NUMBER_OF_FIELDS)
-		Melder_throw (U"Cannot have more than ", MAXIMUM_NUMBER_OF_FIELDS, U"in a form.");
-	return my field [++ my numberOfFields] = UiField_create (type, label);
-}
-static UiField UiForm_addField (UiForm me, int type, const char *label) {
-	if (my numberOfFields == MAXIMUM_NUMBER_OF_FIELDS)
-		Melder_throw (U"Cannot have more than ", MAXIMUM_NUMBER_OF_FIELDS, U"in a form.");
+		Melder_throw (U"Cannot have more than ", MAXIMUM_NUMBER_OF_FIELDS, U"fields in a form.");
 	return my field [++ my numberOfFields] = UiField_create (type, label);
 }
 
-Any UiForm_addReal (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_REAL, label);
+UiField UiForm_addReal (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_REAL, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addRealOrUndefined (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_REAL_OR_UNDEFINED, label);
+UiField UiForm_addRealOrUndefined (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_REAL_OR_UNDEFINED, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addPositive (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_POSITIVE, label);
+UiField UiForm_addPositive (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_POSITIVE, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addInteger (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_INTEGER, label);
+UiField UiForm_addInteger (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_INTEGER, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addNatural (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_NATURAL, label);
+UiField UiForm_addNatural (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_NATURAL, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addWord (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_WORD, label);
+UiField UiForm_addWord (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_WORD, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addSentence (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_SENTENCE, label);
+UiField UiForm_addSentence (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_SENTENCE, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addLabel (I, const char32 *name, const char32 *label) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_LABEL, name);
+UiField UiForm_addLabel (UiForm me, const char32 *name, const char32 *label) {
+	autoUiField thee (UiForm_addField (me, UI_LABEL, name));
 	thy stringValue = Melder_dup (label);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addBoolean (I, const char32 *label, int defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_BOOLEAN, label);
+UiField UiForm_addBoolean (UiForm me, const char32 *label, int defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_BOOLEAN, label));
 	thy integerDefaultValue = defaultValue;
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addText (I, const char32 *name, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_TEXT, name);
+UiField UiForm_addText (UiForm me, const char32 *name, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_TEXT, name));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addRadio (I, const char32 *label, int defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_RADIO, label);
+UiField UiForm_addRadio (UiForm me, const char32 *label, int defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_RADIO, label));
 	thy integerDefaultValue = defaultValue;
-	thy options = Ordered_create ();
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addOptionMenu (I, const char32 *label, int defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_OPTIONMENU, label);
+UiField UiForm_addOptionMenu (UiForm me, const char32 *label, int defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_OPTIONMENU, label));
 	thy integerDefaultValue = defaultValue;
-	thy options = Ordered_create ();
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addList (I, const char32 *label, long numberOfStrings, const char32 **strings, long defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_LIST, label);
+UiField UiForm_addList (UiForm me, const char32 *label, long numberOfStrings, const char32 **strings, long defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_LIST, label));
 	thy numberOfStrings = numberOfStrings;
 	thy strings = strings;
 	thy integerDefaultValue = defaultValue;
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addColour (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_COLOUR, label);
+UiField UiForm_addColour (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_COLOUR, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
-Any UiForm_addChannel (I, const char32 *label, const char32 *defaultValue) {
-	iam (UiForm);
-	autoUiField thee = UiForm_addField (me, UI_CHANNEL, label);
+UiField UiForm_addChannel (UiForm me, const char32 *label, const char32 *defaultValue) {
+	autoUiField thee (UiForm_addField (me, UI_CHANNEL, label));
 	thy stringDefaultValue = Melder_dup (defaultValue);
-	return thee.transfer();
+	return thee.releaseToAmbiguousOwner();
 }
 
 #define DIALOG_X  150
@@ -751,9 +698,9 @@ Any UiForm_addChannel (I, const char32 *label, const char32 *defaultValue) {
 #define HELP_BUTTON_X  20
 #define LIST_HEIGHT  192
 
-static MelderString theFinishBuffer = { 0 };
+static MelderString theFinishBuffer { 0 };
 
-static void appendColon (void) {
+static void appendColon () {
 	long length = theFinishBuffer.length;
 	if (length < 1) return;
 	char32 lastCharacter = theFinishBuffer.string [length - 1];
@@ -761,8 +708,7 @@ static void appendColon (void) {
 	MelderString_appendCharacter (& theFinishBuffer, U':');
 }
 
-void UiForm_finish (I) {
-	iam (UiForm);
+void UiForm_finish (UiForm me) {
 	if (! my d_dialogParent && ! my isPauseForm) return;
 
 	int size = my numberOfFields;
@@ -787,8 +733,8 @@ void UiForm_finish (I) {
 		thy y = dialogHeight;
 		dialogHeight +=
 			thy type == UI_BOOLEAN ? Gui_CHECKBUTTON_HEIGHT :
-			thy type == UI_RADIO ? thy options -> size * Gui_RADIOBUTTON_HEIGHT +
-				(thy options -> size - 1) * Gui_RADIOBUTTON_SPACING :
+			thy type == UI_RADIO ? thy options.size * Gui_RADIOBUTTON_HEIGHT +
+				(thy options.size - 1) * Gui_RADIOBUTTON_SPACING :
 			thy type == UI_OPTIONMENU ? Gui_OPTIONMENU_HEIGHT :
 			thy type == UI_LIST ? LIST_HEIGHT :
 			thy type == UI_LABEL && thy stringValue [0] != U'\0' && thy stringValue [str32len (thy stringValue) - 1] != U'.' &&
@@ -865,14 +811,14 @@ void UiForm_finish (I) {
 				field -> label = GuiLabel_createShown (form, x, x + labelWidth, ylabel, ylabel + Gui_RADIOBUTTON_HEIGHT,
 					theFinishBuffer.string, GuiLabel_RIGHT);
 				GuiRadioGroup_begin ();
-				for (long ibutton = 1; ibutton <= field -> options -> size; ibutton ++) {
-					UiOption button = static_cast <UiOption> (field -> options -> item [ibutton]);
+				for (long ibutton = 1; ibutton <= field -> options.size; ibutton ++) {
+					UiOption button = field -> options.at [ibutton];
 					MelderString_copy (& theFinishBuffer, button -> name);
 					button -> radioButton = GuiRadioButton_createShown (form,
 						fieldX, dialogWidth /* allow to extend into the margin */,
 						y + (ibutton - 1) * (Gui_RADIOBUTTON_HEIGHT + Gui_RADIOBUTTON_SPACING),
 						y + (ibutton - 1) * (Gui_RADIOBUTTON_HEIGHT + Gui_RADIOBUTTON_SPACING) + Gui_RADIOBUTTON_HEIGHT,
-						theFinishBuffer.string, NULL, NULL, 0);
+						theFinishBuffer.string, nullptr, nullptr, 0);
 				}
 				GuiRadioGroup_end ();
 			} break; 
@@ -887,8 +833,8 @@ void UiForm_finish (I) {
 				field -> label = GuiLabel_createShown (form, x, x + labelWidth, ylabel, ylabel + Gui_OPTIONMENU_HEIGHT,
 					theFinishBuffer.string, GuiLabel_RIGHT);
 				field -> optionMenu = GuiOptionMenu_createShown (form, fieldX, fieldX + fieldWidth, y, y + Gui_OPTIONMENU_HEIGHT, 0);
-				for (long ibutton = 1; ibutton <= field -> options -> size; ibutton ++) {
-					UiOption button = static_cast <UiOption> (field -> options -> item [ibutton]);
+				for (long ibutton = 1; ibutton <= field -> options.size; ibutton ++) {
+					UiOption button = field -> options.at [ibutton];
 					MelderString_copy (& theFinishBuffer, button -> name);
 					GuiOptionMenu_addOption (field -> optionMenu, theFinishBuffer.string);
 				}
@@ -900,7 +846,7 @@ void UiForm_finish (I) {
 					theFinishBuffer.string, GuiLabel_RIGHT); */
 				field -> checkButton = GuiCheckButton_createShown (form,
 					fieldX, dialogWidth /* allow to extend into the margin */, y, y + Gui_CHECKBUTTON_HEIGHT,
-					theFinishBuffer.string, NULL, NULL, 0);
+					theFinishBuffer.string, nullptr, nullptr, 0);
 			} break;
 			case UI_LIST:
 			{
@@ -919,7 +865,7 @@ void UiForm_finish (I) {
 	}
 	for (long ifield = 1; ifield <= my numberOfFields; ifield ++)
 		UiField_setDefault (my field [ifield]);
-	/*separator = XmCreateSeparatorGadget (column, "separator", NULL, 0);*/
+	/*separator = XmCreateSeparatorGadget (column, "separator", nullptr, 0);*/
 	y = dialogHeight - Gui_BOTTOM_DIALOG_SPACING - Gui_PUSHBUTTON_HEIGHT;
 	if (my helpTitle) {
 		my helpButton = GuiButton_createShown (form, HELP_BUTTON_X, HELP_BUTTON_X + HELP_BUTTON_WIDTH, y, y + Gui_PUSHBUTTON_HEIGHT,
@@ -979,19 +925,17 @@ void UiForm_finish (I) {
 	/*GuiObject_show (separator);*/
 }
 
-void UiForm_destroyWhenUnmanaged (I) {
-	iam (UiForm);
+void UiForm_destroyWhenUnmanaged (UiForm me) {
 	my destroyWhenUnmanaged = true;
 }
 
-void UiForm_do (I, bool modified) {
-	iam (UiForm);
+void UiForm_do (UiForm me, bool modified) {
 	my allowExecutionHook = theAllowExecutionHookHint;
 	my allowExecutionClosure = theAllowExecutionClosureHint;
 	Melder_assert (my d_dialogForm);
 	GuiThing_show (my d_dialogForm);
 	if (modified)
-		UiForm_okOrApply (me, NULL, true);
+		UiForm_okOrApply (me, nullptr, true);
 }
 
 static void UiField_argToValue (UiField me, Stackel arg, Interpreter /* interpreter */) {
@@ -1051,8 +995,8 @@ static void UiField_argToValue (UiField me, Stackel arg, Interpreter /* interpre
 			if (arg -> which != Stackel_STRING)
 				Melder_throw (U"Option argument \"", my name, U"\" should be a string, not ", Stackel_whichText (arg), U".");
 			my integerValue = 0;
-			for (int i = 1; i <= my options -> size; i ++) {
-				UiOption b = static_cast <UiOption> (my options -> item [i]);
+			for (int i = 1; i <= my options.size; i ++) {
+				UiOption b = my options.at [i];
 				if (str32equ (arg -> string, b -> name))
 					my integerValue = i;
 			}
@@ -1060,8 +1004,8 @@ static void UiField_argToValue (UiField me, Stackel arg, Interpreter /* interpre
 				/*
 				 * Retry with different case.
 				 */
-				for (int i = 1; i <= my options -> size; i ++) {
-					UiOption b = static_cast <UiOption> (my options -> item [i]);
+				for (int i = 1; i <= my options.size; i ++) {
+					UiOption b = my options.at [i];
 					char32 name2 [100];
 					str32cpy (name2, b -> name);
 					if (iswlower ((int) name2 [0])) name2 [0] = (char32) towupper ((int) name2 [0]);
@@ -1099,8 +1043,7 @@ static void UiField_argToValue (UiField me, Stackel arg, Interpreter /* interpre
 	}
 }
 
-void UiForm_call (I, int narg, Stackel args, Interpreter interpreter) {
-	iam (UiForm);
+void UiForm_call (UiForm me, int narg, Stackel args, Interpreter interpreter) {
 	int size = my numberOfFields, iarg = 0;
 	while (size >= 1 && my field [size] -> type == UI_LABEL)
 		size --;   // ignore trailing fields without a value
@@ -1114,11 +1057,10 @@ void UiForm_call (I, int narg, Stackel args, Interpreter interpreter) {
 	}
 	if (iarg < narg)
 		Melder_throw (U"Command requires only ", iarg, U" arguments, not the ", narg, U" given.");
-	my okCallback (me, 0, NULL, NULL, interpreter, NULL, false, my buttonClosure);
+	my okCallback (me, 0, nullptr, nullptr, interpreter, nullptr, false, my buttonClosure);
 }
 
-void UiForm_parseString (I, const char32 *arguments, Interpreter interpreter) {
-	iam (UiForm);
+void UiForm_parseString (UiForm me, const char32 *arguments, Interpreter interpreter) {
 	int size = my numberOfFields;
 	while (size >= 1 && my field [size] -> type == UI_LABEL)
 		size --;   // ignore trailing fields without a value
@@ -1130,7 +1072,7 @@ void UiForm_parseString (I, const char32 *arguments, Interpreter interpreter) {
 		/*
 		 * Skip spaces until next argument.
 		 */
-		while (*arguments == ' ' || *arguments == '\t') arguments ++;
+		while (*arguments == U' ' || *arguments == U'\t') arguments ++;
 		/*
 		 * The argument is everything up to the next space, or, if that starts with a double quote,
 		 * everything between this quote and the matching double quote;
@@ -1140,7 +1082,7 @@ void UiForm_parseString (I, const char32 *arguments, Interpreter interpreter) {
 		 * will be passed to the dialog as a single argument containing the text
 		 *     I said "hello"
 		 */
-		if (*arguments == '\"') {
+		if (*arguments == U'\"') {
 			arguments ++;   // do not include leading double quote
 			for (;;) {
 				if (*arguments == U'\0')
@@ -1164,37 +1106,36 @@ void UiForm_parseString (I, const char32 *arguments, Interpreter interpreter) {
 	 * Leading spaces are skipped, but trailing spaces are included.
 	 */
 	if (size > 0) {
-		while (*arguments == ' ' || *arguments == '\t') arguments ++;
+		while (*arguments == U' ' || *arguments == U'\t') arguments ++;
 		try {
 			UiField_stringToValue (my field [size], arguments, interpreter);
 		} catch (MelderError) {
 			Melder_throw (U"Don't understand contents of field \"", my field [size] -> name, U"\".");
 		}
 	}
-	my okCallback (me, 0, NULL, NULL, interpreter, NULL, false, my buttonClosure);
+	my okCallback (me, 0, nullptr, nullptr, interpreter, nullptr, false, my buttonClosure);
 }
 
 void UiForm_parseStringE (EditorCommand cmd, int narg, Stackel args, const char32 *arguments, Interpreter interpreter) {
 	if (args)
-		UiForm_call(cmd -> d_uiform, narg, args, interpreter);
+		UiForm_call (cmd -> d_uiform.get(), narg, args, interpreter);
 	else
-		UiForm_parseString (cmd -> d_uiform, arguments, interpreter);
+		UiForm_parseString (cmd -> d_uiform.get(), arguments, interpreter);
 }
 
 static UiField findField (UiForm me, const char32 *fieldName) {
 	for (int ifield = 1; ifield <= my numberOfFields; ifield ++)
 		if (str32equ (fieldName, my field [ifield] -> name)) return my field [ifield];
-	return NULL;
+	return nullptr;
 }
 
 static void fatalField (UiForm dia) {
 	Melder_fatal (U"Wrong field in command window \"", dia -> name, U"\".");
 }
 
-void UiForm_setReal (I, const char32 *fieldName, double value) {
-	iam (UiForm);
+void UiForm_setReal (UiForm me, const char32 *fieldName, double value) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_setReal:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_setReal:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_REAL: case UI_REAL_OR_UNDEFINED: case UI_POSITIVE: {
 			if (value == Melder_atof (field -> stringDefaultValue)) {
@@ -1220,10 +1161,9 @@ void UiForm_setReal (I, const char32 *fieldName, double value) {
 	}
 }
 
-void UiForm_setInteger (I, const char32 *fieldName, long value) {
-	iam (UiForm);
+void UiForm_setInteger (UiForm me, const char32 *fieldName, long value) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_setInteger:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_setInteger:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_INTEGER: case UI_NATURAL: case UI_CHANNEL: {
 			if (value == Melder_atoi (field -> stringDefaultValue)) {
@@ -1234,15 +1174,15 @@ void UiForm_setInteger (I, const char32 *fieldName, long value) {
 		} break; case UI_BOOLEAN: {
 			GuiCheckButton_setValue (field -> checkButton, value);
 		} break; case UI_RADIO: {
-			if (value < 1 || value > field -> options -> size) value = 1;   // guard against incorrect prefs file
-			for (int i = 1; i <= field -> options -> size; i ++) {
+			if (value < 1 || value > field -> options.size) value = 1;   // guard against incorrect prefs file
+			for (int i = 1; i <= field -> options.size; i ++) {
 				if (i == value) {
-					UiOption b = static_cast <UiOption> (field -> options -> item [i]);
+					UiOption b = field -> options.at [i];
 					GuiRadioButton_set (b -> radioButton);
 				}
 			}
 		} break; case UI_OPTIONMENU: {
-			if (value < 1 || value > field -> options -> size) value = 1;   // guard against incorrect prefs file
+			if (value < 1 || value > field -> options.size) value = 1;   // guard against incorrect prefs file
 			GuiOptionMenu_setValue (field -> optionMenu, value);
 		} break; case UI_LIST: {
 			if (value < 1 || value > field -> numberOfStrings) value = 1;   // guard against incorrect prefs file
@@ -1253,11 +1193,10 @@ void UiForm_setInteger (I, const char32 *fieldName, long value) {
 	}
 }
 
-void UiForm_setString (I, const char32 *fieldName, const char32 *value /* cattable */) {
-	iam (UiForm);
+void UiForm_setString (UiForm me, const char32 *fieldName, const char32 *value /* cattable */) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_setString:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
-	if (value == NULL) value = U"";   /* Accept NULL strings. */
+	if (! field) Melder_fatal (U"(UiForm_setString:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! value) value = U"";   // accept null strings
 	switch (field -> type) {
 		case UI_REAL: case UI_REAL_OR_UNDEFINED: case UI_POSITIVE: case UI_INTEGER: case UI_NATURAL:
 			case UI_WORD: case UI_SENTENCE: case UI_COLOUR: case UI_CHANNEL: case UI_TEXT:
@@ -1266,8 +1205,8 @@ void UiForm_setString (I, const char32 *fieldName, const char32 *value /* cattab
 		} break; case UI_LABEL: {
 			GuiLabel_setText (field -> label, value);
 		} break; case UI_RADIO: {
-			for (int i = 1; i <= field -> options -> size; i ++) {
-				UiOption b = static_cast <UiOption> (field -> options -> item [i]);
+			for (int i = 1; i <= field -> options.size; i ++) {
+				UiOption b = field -> options.at [i];
 				if (str32equ (value, b -> name)) {
 					GuiRadioButton_set (b -> radioButton);
 				}
@@ -1275,8 +1214,8 @@ void UiForm_setString (I, const char32 *fieldName, const char32 *value /* cattab
 			/* If not found: do nothing (guard against incorrect prefs file). */
 		} break; case UI_OPTIONMENU: {
 			int integerValue = 0;
-			for (int i = 1; i <= field -> options -> size; i ++) {
-				UiOption b = static_cast <UiOption> (field -> options -> item [i]);
+			for (int i = 1; i <= field -> options.size; i ++) {
+				UiOption b = field -> options.at [i];
 				if (str32equ (value, b -> name)) {
 					integerValue = i;
 					break;
@@ -1298,7 +1237,7 @@ void UiForm_setString (I, const char32 *fieldName, const char32 *value /* cattab
 
 static UiField findField_check (UiForm me, const char32 *fieldName) {
 	UiField result = findField (me, fieldName);
-	if (result == NULL) {
+	if (! result) {
 		Melder_throw (U"Cannot find field \"", fieldName, U"\" in form.\n"
 			U"The script may have changed while the form was open.\n"
 			U"Please click Cancel in the form and try again.");
@@ -1306,10 +1245,9 @@ static UiField findField_check (UiForm me, const char32 *fieldName) {
 	return result;
 }
 
-double UiForm_getReal (I, const char32 *fieldName) {
-	iam (UiForm);
+double UiForm_getReal (UiForm me, const char32 *fieldName) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_getReal:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_getReal:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_REAL: case UI_REAL_OR_UNDEFINED: case UI_POSITIVE: {
 			return field -> realValue;
@@ -1320,8 +1258,7 @@ double UiForm_getReal (I, const char32 *fieldName) {
 	return 0.0;
 }
 
-double UiForm_getReal_check (I, const char32 *fieldName) {
-	iam (UiForm);
+double UiForm_getReal_check (UiForm me, const char32 *fieldName) {
 	UiField field = findField_check (me, fieldName);
 	switch (field -> type) {
 		case UI_REAL: case UI_REAL_OR_UNDEFINED: case UI_POSITIVE: {
@@ -1335,10 +1272,9 @@ double UiForm_getReal_check (I, const char32 *fieldName) {
 	return 0.0;
 }
 
-long UiForm_getInteger (I, const char32 *fieldName) {
-	iam (UiForm);
+long UiForm_getInteger (UiForm me, const char32 *fieldName) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_getInteger:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_getInteger:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_INTEGER: case UI_NATURAL: case UI_CHANNEL: case UI_BOOLEAN: case UI_RADIO:
 			case UI_OPTIONMENU: case UI_LIST:
@@ -1351,8 +1287,7 @@ long UiForm_getInteger (I, const char32 *fieldName) {
 	return 0L;
 }
 
-long UiForm_getInteger_check (I, const char32 *fieldName) {
-	iam (UiForm);
+long UiForm_getInteger_check (UiForm me, const char32 *fieldName) {
 	UiField field = findField_check (me, fieldName);
 	switch (field -> type) {
 		case UI_INTEGER: case UI_NATURAL: case UI_CHANNEL: case UI_BOOLEAN: case UI_RADIO:
@@ -1368,15 +1303,14 @@ long UiForm_getInteger_check (I, const char32 *fieldName) {
 	return 0L;
 }
 
-char32 * UiForm_getString (I, const char32 *fieldName) {
-	iam (UiForm);
+char32 * UiForm_getString (UiForm me, const char32 *fieldName) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_getString:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_getString:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_WORD: case UI_SENTENCE: case UI_TEXT: {
 			return field -> stringValue;
 		} break; case UI_RADIO: case UI_OPTIONMENU: {
-			UiOption b = static_cast <UiOption> (field -> options -> item [field -> integerValue]);
+			UiOption b = field -> options.at [field -> integerValue];
 			return b -> name;
 		} break; case UI_LIST: {
 			return (char32 *) field -> strings [field -> integerValue];
@@ -1384,17 +1318,16 @@ char32 * UiForm_getString (I, const char32 *fieldName) {
 			fatalField (me);
 		}
 	}
-	return NULL;
+	return nullptr;
 }
 
-char32 * UiForm_getString_check (I, const char32 *fieldName) {
-	iam (UiForm);
+char32 * UiForm_getString_check (UiForm me, const char32 *fieldName) {
 	UiField field = findField_check (me, fieldName);
 	switch (field -> type) {
 		case UI_WORD: case UI_SENTENCE: case UI_TEXT: {
 			return field -> stringValue;
 		} break; case UI_RADIO: case UI_OPTIONMENU: {
-			UiOption b = static_cast <UiOption> (field -> options -> item [field -> integerValue]);
+			UiOption b = field -> options.at [field -> integerValue];
 			return b -> name;
 		} break; case UI_LIST: {
 			return (char32 *) field -> strings [field -> integerValue];
@@ -1404,13 +1337,12 @@ char32 * UiForm_getString_check (I, const char32 *fieldName) {
 				U"Please click Cancel in the form and try again.");
 		}
 	}
-	return NULL;
+	return nullptr;
 }
 
-Graphics_Colour UiForm_getColour (I, const char32 *fieldName) {
-	iam (UiForm);
+Graphics_Colour UiForm_getColour (UiForm me, const char32 *fieldName) {
 	UiField field = findField (me, fieldName);
-	if (field == NULL) Melder_fatal (U"(UiForm_getColour:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
+	if (! field) Melder_fatal (U"(UiForm_getColour:) No field \"", fieldName, U"\" in command window \"", my name, U"\".");
 	switch (field -> type) {
 		case UI_COLOUR: {
 			return field -> colourValue;
@@ -1421,8 +1353,7 @@ Graphics_Colour UiForm_getColour (I, const char32 *fieldName) {
 	return Graphics_BLACK;
 }
 
-Graphics_Colour UiForm_getColour_check (I, const char32 *fieldName) {
-	iam (UiForm);
+Graphics_Colour UiForm_getColour_check (UiForm me, const char32 *fieldName) {
 	UiField field = findField_check (me, fieldName);
 	switch (field -> type) {
 		case UI_COLOUR: {
@@ -1436,8 +1367,7 @@ Graphics_Colour UiForm_getColour_check (I, const char32 *fieldName) {
 	return Graphics_BLACK;
 }
 
-void UiForm_Interpreter_addVariables (I, Interpreter interpreter) {
-	iam (UiForm);
+void UiForm_Interpreter_addVariables (UiForm me, Interpreter interpreter) {
 	static MelderString lowerCaseFieldName { 0 };
 	for (int ifield = 1; ifield <= my numberOfFields; ifield ++) {
 		UiField field = my field [ifield];
@@ -1462,7 +1392,7 @@ void UiForm_Interpreter_addVariables (I, Interpreter interpreter) {
 				MelderString_appendCharacter (& lowerCaseFieldName, U'$');
 				var = Interpreter_lookUpVariable (interpreter, lowerCaseFieldName.string);
 				Melder_free (var -> stringValue);
-				UiOption b = static_cast <UiOption> (field -> options -> item [field -> integerValue]);
+				UiOption b = field -> options.at [field -> integerValue];
 				var -> stringValue = Melder_dup (b -> name);
 			} break; case UI_LIST: {
 				InterpreterVariable var = Interpreter_lookUpVariable (interpreter, lowerCaseFieldName.string);
diff --git a/sys/Ui.h b/sys/Ui.h
index ae3ae91..db36612 100644
--- a/sys/Ui.h
+++ b/sys/Ui.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Graphics.h"
@@ -28,20 +27,20 @@ Thing_declare (EditorCommand);
 
 /* Example of usage:
 {
-	static Any dia = NULL;
-	if (dia == NULL) {
-		Any radio;
+	static UiForm dia = nullptr;
+	if (! dia) {
+		UiField radio;
 		dia = UiForm_create
 		  (topShell,   // The parent GuiWindow of the dialog window.
 			U"Create a new person",   // The window title.
 			DO_Person_create,   // The routine to call when the user clicks OK.
-			NULL,   // The last argument to the OK routine (also for the other buttons). Could be a ScriptEditor, or an EditorCommand, or an Interpreter, or NULL.
+			nullptr,   // The last argument to the OK routine (also for the other buttons). Could be a ScriptEditor, or an EditorCommand, or an Interpreter, or null.
 			U"Create person...",   // The invoking button title.
-			U"Create person...");   // The help string; may be NULL.
+			U"Create person...");   // The help string; may be null.
 		UiForm_addNatural (dia, U"Age (years)", U"18");
 		UiForm_addPositive (dia, U"Length (metres)", U"1.68 (average)");
-		UiForm_addBoolean (dia, U"Beard", FALSE);
-		radio = UiForm_addRadio (U"Sex", 1);
+		UiForm_addBoolean (dia, U"Beard", false);
+		radio = UiForm_addRadio (dia, U"Sex", 1);
 			UiRadio_addButton (radio, U"Female");
 			UiRadio_addButton (radio, U"Male");
 		UiForm_addWord (dia, U"Colour", U"black");
@@ -71,6 +70,11 @@ Thing_declare (EditorCommand);
 	are restored to all items in the form.
 */
 
+Thing_define (UiOption, Thing) {
+	GuiRadioButton radioButton;
+	GuiObject menuItem;
+};
+
 Thing_define (UiField, Thing) {
 	int type;
 	const char32 *formLabel;
@@ -79,7 +83,7 @@ Thing_define (UiField, Thing) {
 	char32 *stringValue; const char32 *stringDefaultValue;
 	Graphics_Colour colourValue;
 	char *stringValueA;
-	Ordered options;
+	OrderedOf<structUiOption> options;
 	long numberOfStrings;
 	const char32 **strings;
 	GuiLabel label;
@@ -90,7 +94,7 @@ Thing_define (UiField, Thing) {
 	GuiOptionMenu optionMenu;
 	int y;
 
-	void v_destroy ()
+	void v_destroy () noexcept
 		override;
 };
 
@@ -102,22 +106,37 @@ typedef void (*UiCallback) (UiForm sendingForm, int narg, Stackel args, const ch
 Thing_define (UiForm, Thing) {
 	EditorCommand command;
 	GuiWindow d_dialogParent;
-	GuiDialog d_dialogForm;
+	const char32 *invokingButtonTitle, *helpTitle;
 	UiCallback okCallback;
-	void (*applyCallback) (Any dia, void *closure);
-	void (*cancelCallback) (Any dia, void *closure);
 	void *buttonClosure;
-	const char32 *invokingButtonTitle, *helpTitle;
+
+	/*
+	 * In case the validity of the form depends on the selected objects.
+	 */
+	bool (*allowExecutionHook) (void *closure);
+	void *allowExecutionClosure;
+
+	/*
+	 * In case the form is built by specifying buttons (rather than a system-built-in file dialog).
+	 */
+	GuiDialog d_dialogForm;
+	void (*applyCallback) (UiForm dia, void *closure);
+	void (*cancelCallback) (UiForm dia, void *closure);
 	int numberOfContinueButtons, defaultContinueButton, cancelContinueButton, clickedContinueButton;
 	const char32 *continueTexts [1 + MAXIMUM_NUMBER_OF_CONTINUE_BUTTONS];
 	int numberOfFields;
 	UiField field [1 + MAXIMUM_NUMBER_OF_FIELDS];
 	GuiButton okButton, cancelButton, revertButton, helpButton, applyButton, continueButtons [1 + MAXIMUM_NUMBER_OF_CONTINUE_BUTTONS];
 	bool destroyWhenUnmanaged, isPauseForm;
-	bool (*allowExecutionHook) (void *closure);
-	void *allowExecutionClosure;
 
-	void v_destroy ()
+	/*
+	 * In case the form contains a file.
+	 */
+	structMelderFile file;
+	int shiftKeyPressed;
+	bool allowMultipleFiles;   // for input
+
+	void v_destroy () noexcept
 		override;
 };
 
@@ -125,46 +144,46 @@ Thing_define (UiForm, Thing) {
 UiForm UiForm_create (GuiWindow parent, const char32 *title,
 	UiCallback okCallback, void *buttonClosure,
 	const char32 *invokingButtonTitle, const char32 *helpTitle);
-Any UiForm_addReal (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addRealOrUndefined (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addPositive (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addInteger (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addNatural (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addWord (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addSentence (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addLabel (I, const char32 *name, const char32 *label);
-Any UiForm_addBoolean (I, const char32 *label, int defaultValue);
-Any UiForm_addText (I, const char32 *name, const char32 *defaultValue);
-Any UiForm_addRadio (I, const char32 *label, int defaultValue);
-Any UiRadio_addButton (I, const char32 *label);
-Any UiForm_addOptionMenu (I, const char32 *label, int defaultValue);
-Any UiOptionMenu_addButton (I, const char32 *label);
-Any UiForm_addList (I, const char32 *label, long numberOfStrings, const char32 **strings, long defaultValue);
-Any UiForm_addColour (I, const char32 *label, const char32 *defaultValue);
-Any UiForm_addChannel (I, const char32 *label, const char32 *defaultValue);
-void UiForm_finish (I);
-
-void UiForm_destroyWhenUnmanaged (I);
-void UiForm_setPauseForm (I,
+UiField UiForm_addReal (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addRealOrUndefined (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addPositive (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addInteger (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addNatural (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addWord (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addSentence (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addLabel (UiForm me, const char32 *name, const char32 *label);
+UiField UiForm_addBoolean (UiForm me, const char32 *label, int defaultValue);
+UiField UiForm_addText (UiForm me, const char32 *name, const char32 *defaultValue);
+UiField UiForm_addRadio (UiForm me, const char32 *label, int defaultValue);
+UiOption UiRadio_addButton (UiField me, const char32 *label);
+UiField UiForm_addOptionMenu (UiForm me, const char32 *label, int defaultValue);
+UiOption UiOptionMenu_addButton (UiField me, const char32 *label);
+UiField UiForm_addList (UiForm me, const char32 *label, long numberOfStrings, const char32 **strings, long defaultValue);
+UiField UiForm_addColour (UiForm me, const char32 *label, const char32 *defaultValue);
+UiField UiForm_addChannel (UiForm me, const char32 *label, const char32 *defaultValue);
+void UiForm_finish (UiForm me);
+
+void UiForm_destroyWhenUnmanaged (UiForm me);
+void UiForm_setPauseForm (UiForm me,
 	int numberOfContinueButtons, int defaultContinueButton, int cancelContinueButton,
 	const char32 *continue1, const char32 *continue2, const char32 *continue3,
 	const char32 *continue4, const char32 *continue5, const char32 *continue6,
 	const char32 *continue7, const char32 *continue8, const char32 *continue9,
 	const char32 *continue10,
-	void (*cancelCallback) (Any dia, void *closure));
+	void (*cancelCallback) (UiForm dia, void *closure));
 
 /* The following three routines set values in widgets. */
 /* Do not call from batch. */
 /* 'fieldName' is name from UiForm_addXXXXXX (), */
 /* without anything from and including the first " (" or ":". */
-void UiForm_setString (I, const char32 *fieldName, const char32 *text /* cattable */);
+void UiForm_setString (UiForm me, const char32 *fieldName, const char32 *text /* cattable */);
 	/* Real, Positive, Integer, Natural, Word, Sentence, Label, Text, Radio, List. */
-void UiForm_setReal (I, const char32 *fieldName, double value);
+void UiForm_setReal (UiForm me, const char32 *fieldName, double value);
 	/* Real, Positive. */
-void UiForm_setInteger (I, const char32 *fieldName, long value);
+void UiForm_setInteger (UiForm me, const char32 *fieldName, long value);
 	/* Integer, Natural, Boolean, Radio, List. */
 
-void UiForm_do (I, bool modified);
+void UiForm_do (UiForm me, bool modified);
 /*
 	Function:
 		put the form on the screen.
@@ -197,19 +216,19 @@ void UiForm_do (I, bool modified);
 /* The field names are the 'label' or 'name' arguments to UiForm_addXXXXXX (), */
 /* without anything from parentheses or from a colon. */
 /* These routines work from the screen and from batch. */
-double UiForm_getReal (I, const char32 *fieldName);	// Real, Positive
-long UiForm_getInteger (I, const char32 *fieldName);	// Integer, Natural, Boolean, Radio, List
-char32 * UiForm_getString (I, const char32 *fieldName);	// Word, Sentence, Text, Radio, List
-Graphics_Colour UiForm_getColour (I, const char32 *fieldName);   // Colour
-MelderFile UiForm_getFile (I, const char32 *fieldName); // FileIn, FileOut
+double UiForm_getReal (UiForm me, const char32 *fieldName);	// Real, Positive
+long UiForm_getInteger (UiForm me, const char32 *fieldName);	// Integer, Natural, Boolean, Radio, List
+char32 * UiForm_getString (UiForm me, const char32 *fieldName);	// Word, Sentence, Text, Radio, List
+Graphics_Colour UiForm_getColour (UiForm me, const char32 *fieldName);   // Colour
+MelderFile UiForm_getFile (UiForm me, const char32 *fieldName); // FileIn, FileOut
 
-double UiForm_getReal_check (I, const char32 *fieldName);
-long UiForm_getInteger_check (I, const char32 *fieldName);
-char32 * UiForm_getString_check (I, const char32 *fieldName);
-Graphics_Colour UiForm_getColour_check (I, const char32 *fieldName);
+double UiForm_getReal_check (UiForm me, const char32 *fieldName);
+long UiForm_getInteger_check (UiForm me, const char32 *fieldName);
+char32 * UiForm_getString_check (UiForm me, const char32 *fieldName);
+Graphics_Colour UiForm_getColour_check (UiForm me, const char32 *fieldName);
 
-void UiForm_call (I, int narg, Stackel args, Interpreter interpreter);
-void UiForm_parseString (I, const char32 *arguments, Interpreter interpreter);
+void UiForm_call (UiForm me, int narg, Stackel args, Interpreter interpreter);
+void UiForm_parseString (UiForm me, const char32 *arguments, Interpreter interpreter);
 
 UiForm UiInfile_create (GuiWindow parent, const char32 *title,
   UiCallback okCallback, void *okClosure,
@@ -219,13 +238,13 @@ UiForm UiOutfile_create (GuiWindow parent, const char32 *title,
   UiCallback okCallback, void *okClosure,
   const char32 *invokingButtonTitle, const char32 *helpTitle);
 
-void UiInfile_do (Any dia);
+void UiInfile_do (UiForm me);
 
-void UiOutfile_do (Any dia, const char32 *defaultName);
+void UiOutfile_do (UiForm me, const char32 *defaultName);
 
-MelderFile UiFile_getFile (Any dia);
+MelderFile UiFile_getFile (UiForm me);
 
-void UiFile_hide (void);
+void UiFile_hide ();
 /*
 	Hides the visible UiFile that was opened most recently.
 	Normally, file selectors stay open until their okCallback has completed.
@@ -239,13 +258,13 @@ void UiFile_hide (void);
 void UiHistory_write (const char32 *string);
 void UiHistory_write_expandQuotes (const char32 *string);
 void UiHistory_write_colonize (const char32 *string);
-char32 *UiHistory_get (void);
-void UiHistory_clear (void);
+char32 *UiHistory_get ();
+void UiHistory_clear ();
 
 void Ui_setAllowExecutionHook (bool (*allowExecutionHook) (void *closure), void *allowExecutionClosure);
 
-void UiForm_widgetsToValues (I);
-void UiForm_Interpreter_addVariables (I, Interpreter interpreter);
+void UiForm_widgetsToValues (UiForm me);
+void UiForm_Interpreter_addVariables (UiForm me, Interpreter interpreter);
 int UiForm_getClickedContinueButton (UiForm me);
 
 /* End of file Ui.h */
diff --git a/sys/UiFile.cpp b/sys/UiFile.cpp
index 8fff521..7248bb8 100644
--- a/sys/UiFile.cpp
+++ b/sys/UiFile.cpp
@@ -2,85 +2,53 @@
  *
  * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "UiP.h"
 #include "Editor.h"
 
-Thing_define (UiFile, Thing) {
-	EditorCommand command;
-	GuiWindow parent;
-	structMelderFile file;
-	const char32 *invokingButtonTitle, *helpTitle;
-	UiCallback okCallback;
-	void *okClosure;
-	int shiftKeyPressed;
-
-	void v_destroy ()
-		override;
-};
-
-void structUiFile :: v_destroy () {
-	Melder_free (invokingButtonTitle);
-	UiFile_Parent :: v_destroy ();
-}
-
-Thing_implement (UiFile, Thing, 0);
-
-static void UiFile_init (I, GuiWindow parent, const char32 *title) {
-	iam (UiFile);
-	my parent = parent;
+static void UiFile_init (UiForm me, GuiWindow parent, const char32 *title) {
+	my d_dialogParent = parent;
 	Thing_setName (me, title);
 }
 
-MelderFile UiFile_getFile (I) {
-	iam (UiFile);
+MelderFile UiFile_getFile (UiForm me) {
 	return & my file;
 }
 
 /********** READING A FILE **********/
 
-Thing_define (UiInfile, UiFile) {
-	// new data:
-	public:
-		bool allowMultipleFiles;
-};
-
-Thing_implement (UiInfile, UiFile, 0);
-
 UiForm UiInfile_create (GuiWindow parent, const char32 *title,
 	UiCallback okCallback, void *okClosure,
 	const char32 *invokingButtonTitle, const char32 *helpTitle, bool allowMultipleFiles)
 {
-	UiInfile me = Thing_new (UiInfile);
+	autoUiForm me = Thing_new (UiForm);
 	my okCallback = okCallback;
-	my okClosure = okClosure;
+	my buttonClosure = okClosure;
 	my invokingButtonTitle = Melder_dup (invokingButtonTitle);
 	my helpTitle = helpTitle;
 	my allowMultipleFiles = allowMultipleFiles;
-	UiFile_init (me, parent, title);
-	return (UiForm) me;
+	UiFile_init (me.get(), parent, title);
+	return me.releaseToAmbiguousOwner();
 }
 
-void UiInfile_do (I) {
-	iam (UiInfile);
+void UiInfile_do (UiForm me) {
 	try {
-		autoSortedSetOfString infileNames = GuiFileSelect_getInfileNames (my parent, my name, my allowMultipleFiles);
-		for (long ifile = 1; ifile <= infileNames -> size; ifile ++) {
-			SimpleString infileName = (SimpleString) infileNames -> item [ifile];
+		autoStringSet infileNames = GuiFileSelect_getInfileNames (my d_dialogParent, my name, my allowMultipleFiles);
+		for (long ifile = 1; ifile <= infileNames->size; ifile ++) {
+			SimpleString infileName = infileNames->at [ifile];
 			Melder_pathToFile (infileName -> string, & my file);
 			UiHistory_write (U"\n");
 			UiHistory_write_colonize (my invokingButtonTitle);
@@ -90,7 +58,7 @@ void UiInfile_do (I) {
 			structMelderFile file;
 			MelderFile_copy (& my file, & file);
 			try {
-				my okCallback ((UiForm) me, 0, NULL, NULL, NULL, my invokingButtonTitle, false, my okClosure);
+				my okCallback (me, 0, nullptr, nullptr, nullptr, my invokingButtonTitle, false, my buttonClosure);
 			} catch (MelderError) {
 				Melder_throw (U"File ", & file, U" not finished.");
 			}
@@ -102,54 +70,44 @@ void UiInfile_do (I) {
 
 /********** WRITING A FILE **********/
 
-Thing_define (UiOutfile, UiFile) {
-	// new data:
-	public:
-		bool (*allowExecutionHook) (void *closure);
-		void *allowExecutionClosure;   // I am owner (see destroy)
-};
-
-Thing_implement (UiOutfile, UiFile, 0);
-
 UiForm UiOutfile_create (GuiWindow parent, const char32 *title,
 	UiCallback okCallback, void *okClosure, const char32 *invokingButtonTitle, const char32 *helpTitle)
 {
-	UiOutfile me = Thing_new (UiOutfile);
+	autoUiForm me = Thing_new (UiForm);
 	my okCallback = okCallback;
-	my okClosure = okClosure;
+	my buttonClosure = okClosure;
 	my invokingButtonTitle = Melder_dup (invokingButtonTitle);
 	my helpTitle = helpTitle;
-	UiFile_init (me, parent, title);
+	UiFile_init (me.get(), parent, title);
 	my allowExecutionHook = theAllowExecutionHookHint;
 	my allowExecutionClosure = theAllowExecutionClosureHint;
-	return (UiForm) me;
+	return me.releaseToAmbiguousOwner();
 }
 
-static void commonOutfileCallback (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *closure) {
+static void commonOutfileCallback (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString,
+	Interpreter interpreter, const char32 * /* invokingButtonTitle */, bool /* modified */, void *closure)
+{
 	EditorCommand command = (EditorCommand) closure;
-	(void) invokingButtonTitle;
-	(void) modified;
 	command -> commandCallback (command -> d_editor, command, sendingForm, narg, args, sendingString, interpreter);
 }
 
 UiForm UiOutfile_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle) {
-	Editor editor = (Editor) cmd -> d_editor;
-	UiOutfile dia = (UiOutfile) UiOutfile_create (editor -> d_windowForm, title, commonOutfileCallback, cmd, invokingButtonTitle, helpTitle);
+	Editor editor = cmd -> d_editor;
+	UiForm dia = UiOutfile_create (editor -> d_windowForm, title, commonOutfileCallback, cmd, invokingButtonTitle, helpTitle);
 	dia -> command = cmd;
-	return (UiForm) dia;   // BUG
+	return dia;
 }
 
 UiForm UiInfile_createE (EditorCommand cmd, const char32 *title, const char32 *invokingButtonTitle, const char32 *helpTitle) {
-	Editor editor = (Editor) cmd -> d_editor;
-	UiInfile dia = (UiInfile) UiInfile_create (editor -> d_windowForm, title, commonOutfileCallback, cmd, invokingButtonTitle, helpTitle, false);
+	Editor editor = cmd -> d_editor;
+	UiForm dia = UiInfile_create (editor -> d_windowForm, title, commonOutfileCallback, cmd, invokingButtonTitle, helpTitle, false);
 	dia -> command = cmd;
-	return (UiForm) dia;   // BUG
+	return dia;
 }
 
-void UiOutfile_do (I, const char32 *defaultName) {
-	iam (UiOutfile);
-	char32 *outfileName = GuiFileSelect_getOutfileName (NULL, my name, defaultName);
-	if (outfileName == NULL) return;   // cancelled
+void UiOutfile_do (UiForm me, const char32 *defaultName) {
+	char32 *outfileName = GuiFileSelect_getOutfileName (nullptr, my name, defaultName);
+	if (! outfileName) return;   // cancelled
 	if (my allowExecutionHook && ! my allowExecutionHook (my allowExecutionClosure)) {
 		Melder_flushError (U"Dialog \"", my name, U"\" cancelled.");
 		return;
@@ -160,7 +118,7 @@ void UiOutfile_do (I, const char32 *defaultName) {
 	UiHistory_write (U"\n");
 	UiHistory_write_colonize (my invokingButtonTitle);
 	try {
-		my okCallback ((UiForm) me, 0, NULL, NULL, NULL, my invokingButtonTitle, false, my okClosure);
+		my okCallback (me, 0, nullptr, nullptr, nullptr, my invokingButtonTitle, false, my buttonClosure);
 	} catch (MelderError) {
 		Melder_flushError (U"File ", & file, U" not finished.");
 	}
diff --git a/sys/UiP.h b/sys/UiP.h
index 6ff2b0d..dc0ffca 100644
--- a/sys/UiP.h
+++ b/sys/UiP.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/sys/UiPause.cpp b/sys/UiPause.cpp
index 9cd229f..a1e30f7 100644
--- a/sys/UiPause.cpp
+++ b/sys/UiPause.cpp
@@ -2,35 +2,25 @@
  *
  * Copyright (C) 2009-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2009/01/20 created
- * pb 2010/07/13 GTK
- * pb 2010/07/26 removed UiFile_hide
- * pb 2011/02/01 cancelContinueButton
- * pb 2011/05/15 C++
- * pb 2011/07/12 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "UiPause.h"
 #include "praatP.h"
 
-static UiForm thePauseForm = NULL;
-static Any thePauseFormRadio = NULL;
+static UiForm thePauseForm = nullptr;
+static UiField thePauseFormRadio = nullptr;
 static int thePauseForm_clicked = 0;
 static int theCancelContinueButton = 0;
 static int theEventLoopDepth = 0;
@@ -46,9 +36,7 @@ static void thePauseFormOkCallback (UiForm /* sendingForm */, int /* narg */, St
 	if (thePauseForm_clicked != theCancelContinueButton)
 		UiForm_Interpreter_addVariables (thePauseForm, (Interpreter) closure);   // 'closure', not 'interpreter' or 'theInterpreter'!
 }
-static void thePauseFormCancelCallback (Any dia, void *closure) {
-	(void) dia;
-	(void) closure;
+static void thePauseFormCancelCallback (UiForm /* dia */, void * /* closure */) {
 	if (theCancelContinueButton != 0) {
 		thePauseForm_clicked = theCancelContinueButton;
 	} else {
@@ -61,69 +49,69 @@ void UiPause_begin (GuiWindow topShell, const char32 *title, Interpreter interpr
 	forget (thePauseForm);   // in case an earlier build-up of another pause window was interrupted
 	thePauseForm = UiForm_create (topShell, Melder_cat (U"Pause: ", title),
 		thePauseFormOkCallback, interpreter,   // pass interpreter as closure!
-		NULL, NULL);
+		nullptr, nullptr);
 }
 void UiPause_real (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"real\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addReal (thePauseForm, label, defaultValue);
 }
 void UiPause_positive (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"positive\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addPositive (thePauseForm, label, defaultValue);
 }
 void UiPause_integer (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"integer\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addInteger (thePauseForm, label, defaultValue);
 }
 void UiPause_natural (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"natural\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addNatural (thePauseForm, label, defaultValue);
 }
 void UiPause_word (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"word\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addWord (thePauseForm, label, defaultValue);
 }
 void UiPause_sentence (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"sentence\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addSentence (thePauseForm, label, defaultValue);
 }
 void UiPause_text (const char32 *label, const char32 *defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"text\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addText (thePauseForm, label, defaultValue);
 }
 void UiPause_boolean (const char32 *label, int defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"boolean\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addBoolean (thePauseForm, label, defaultValue);
 }
 void UiPause_choice (const char32 *label, int defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"choice\" has to be between a \"beginPause\" and an \"endPause\".");
 	thePauseFormRadio = UiForm_addRadio (thePauseForm, label, defaultValue);
 }
 void UiPause_optionMenu (const char32 *label, int defaultValue) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"optionMenu\" has to be between a \"beginPause\" and an \"endPause\".");
 	thePauseFormRadio = UiForm_addOptionMenu (thePauseForm, label, defaultValue);
 }
 void UiPause_option (const char32 *label) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"option\" has to be between a \"beginPause\" and an \"endPause\".");
-	if (thePauseFormRadio == NULL) {
+	if (! thePauseFormRadio) {
 		forget (thePauseForm);
 		Melder_throw (U"Found the function \"option\" without a preceding \"choice\" or \"optionMenu\".");
 	}
 	UiOptionMenu_addButton (thePauseFormRadio, label);
 }
 void UiPause_comment (const char32 *label) {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"The function \"comment\" has to be between a \"beginPause\" and an \"endPause\".");
 	UiForm_addLabel (thePauseForm, U"", label);
 }
@@ -133,7 +121,7 @@ int UiPause_end (int numberOfContinueButtons, int defaultContinueButton, int can
 	const char32 *continueText7, const char32 *continueText8, const char32 *continueText9,
 	const char32 *continueText10, Interpreter interpreter)
 {
-	if (thePauseForm == NULL)
+	if (! thePauseForm)
 		Melder_throw (U"Found the function \"endPause\" without a preceding \"beginPause\".");
 	UiForm_setPauseForm (thePauseForm, numberOfContinueButtons, defaultContinueButton, cancelContinueButton,
 		continueText1, continueText2, continueText3, continueText4, continueText5,
@@ -152,57 +140,55 @@ int UiPause_end (int numberOfContinueButtons, int defaultContinueButton, int can
 	/*
 	 * Wait for the user to click Stop or Continue.
 	 */
-	#ifndef CONSOLE_APPLICATION
-		{// scope
-			autoMelderSaveDefaultDir saveDir;
-			thePauseForm_clicked = 0;
-			Melder_assert (theEventLoopDepth == 0);
-			theEventLoopDepth ++;
-			try {
-				#if gtk
-					do {
-						gtk_main_iteration ();
-					} while (! thePauseForm_clicked);
-				#elif cocoa
-					do {
-						NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-						//[theDemoEditor -> d_windowForm -> d_cocoaWindow   flushWindow];
-						NSEvent *nsEvent = [NSApp
-							nextEventMatchingMask: NSAnyEventMask
-							untilDate: [NSDate distantFuture]   // wait
-							inMode: NSDefaultRunLoopMode
-							dequeue: YES
-						];
-						Melder_assert (nsEvent != NULL);
-						[NSApp  sendEvent: nsEvent];
-						[NSApp  updateWindows];   // called automatically?
-						[pool release];
-					} while (! thePauseForm_clicked);
-				#elif motif
-					do {
-						XEvent event;
-						GuiNextEvent (& event);
-						XtDispatchEvent (& event);
-					} while (! thePauseForm_clicked);
-				#endif
-			} catch (MelderError) {
-				Melder_flushError (U"An error made it to the outer level in a pause window; should not occur! Please write to paul.boersma at uva.nl");
-			}
-			theEventLoopDepth --;
+	{// scope
+		autoMelderSaveDefaultDir saveDir;
+		thePauseForm_clicked = 0;
+		Melder_assert (theEventLoopDepth == 0);
+		theEventLoopDepth ++;
+		try {
+			#if gtk
+				do {
+					gtk_main_iteration ();
+				} while (! thePauseForm_clicked);
+			#elif cocoa
+				do {
+					NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+					//[theDemoEditor -> d_windowForm -> d_cocoaWindow   flushWindow];
+					NSEvent *nsEvent = [NSApp
+						nextEventMatchingMask: NSAnyEventMask
+						untilDate: [NSDate distantFuture]   // wait
+						inMode: NSDefaultRunLoopMode
+						dequeue: YES
+					];
+					Melder_assert (nsEvent);
+					[NSApp  sendEvent: nsEvent];
+					[NSApp  updateWindows];   // called automatically?
+					[pool release];
+				} while (! thePauseForm_clicked);
+			#elif motif
+				do {
+					XEvent event;
+					GuiNextEvent (& event);
+					XtDispatchEvent (& event);
+				} while (! thePauseForm_clicked);
+			#endif
+		} catch (MelderError) {
+			Melder_flushError (U"An error made it to the outer level in a pause window; should not occur! Please write to paul.boersma at uva.nl");
 		}
-		if (wasBackgrounding) praat_background ();
-		/* BUG: should also restore praatP. editor. */
-		thePauseForm = NULL;   // undangle
-		thePauseFormRadio = NULL;   // undangle
-		if (thePauseForm_clicked == -1) {
-			Interpreter_stop (interpreter);
-			Melder_throw (U"You interrupted the script.");
-			//Melder_flushError ();
-			//Melder_clearError ();
-		} else {
-			//Melder_casual (U"Clicked ", thePauseForm_clicked);
-		}
-	#endif
+		theEventLoopDepth --;
+	}
+	if (wasBackgrounding) praat_background ();
+	/* BUG: should also restore praatP. editor. */
+	thePauseForm = nullptr;   // undangle
+	thePauseFormRadio = nullptr;   // undangle
+	if (thePauseForm_clicked == -1) {
+		Interpreter_stop (interpreter);
+		Melder_throw (U"You interrupted the script.");
+		//Melder_flushError ();
+		//Melder_clearError ();
+	} else {
+		//Melder_casual (U"Clicked ", thePauseForm_clicked);
+	}
 	return thePauseForm_clicked;
 }
 
diff --git a/sys/UiPause.h b/sys/UiPause.h
index b6ad968..4c5a94e 100644
--- a/sys/UiPause.h
+++ b/sys/UiPause.h
@@ -4,23 +4,22 @@
  *
  * Copyright (C) 2009-2011,2012,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Gui.h"
-#include "Interpreter_decl.h"
+Thing_declare (Interpreter);
 
 void UiPause_begin (GuiWindow topShell, const char32 *title, Interpreter interpreter);
 
diff --git a/sys/abcio.cpp b/sys/abcio.cpp
index 1491b76..12f0632 100644
--- a/sys/abcio.cpp
+++ b/sys/abcio.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -25,7 +24,7 @@
  * pb 2006/02/20 corrected bingeti3, bingeti3LE, binputi3, binputi3LE
  * pb 2006/03/28 support for systems where a long is not 32 bits and a short is not 16 bits
  * pb 2007/07/21 MelderReadString
- * pb 2007/08/14 check for NULL pointer before Melder_isValidAscii
+ * pb 2007/08/14 check for null pointer before Melder_isValidAscii
  * pb 2009/03/18 modern enums
  * fb 2010/02/26 UTF-16 via bin(get|put)utf16()
  * pb 2010/03/09 more support for Unicode values above 0xFFFF
@@ -80,7 +79,7 @@ static long getInteger (MelderReadText me) {
 	if (i >= 40)
 		Melder_throw (U"Found long text while looking for an integer in text (line ", MelderReadText_getLineNumber (me), U").");
 	buffer [i + 1] = '\0';
-	return strtol (buffer, NULL, 10);
+	return strtol (buffer, nullptr, 10);
 }
 
 static unsigned long getUnsigned (MelderReadText me) {
@@ -119,7 +118,7 @@ static unsigned long getUnsigned (MelderReadText me) {
 	if (i >= 40)
 		Melder_throw (U"Found long text while searching for an unsigned integer in text (line ", MelderReadText_getLineNumber (me), U").");
 	buffer [i + 1] = '\0';
-	return strtoul (buffer, NULL, 10);
+	return strtoul (buffer, nullptr, 10);
 }
 
 static double getReal (MelderReadText me) {
@@ -379,45 +378,45 @@ void texputintro (MelderFile file, const char32 *s1, const char32 *s2, const cha
 
 void texputi1 (MelderFile file, int i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, i, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, i, file -> verbose ? U" " : nullptr);
 }
 void texputi2 (MelderFile file, int i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, i, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, i, file -> verbose ? U" " : nullptr);
 }
 void texputi4 (MelderFile file, long i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, i, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, i, file -> verbose ? U" " : nullptr);
 }
 void texputu1 (MelderFile file, unsigned int u, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, u, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, u, file -> verbose ? U" " : nullptr);
 }
 void texputu2 (MelderFile file, unsigned int u, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, u, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, u, file -> verbose ? U" " : nullptr);
 }
 void texputu4 (MelderFile file, unsigned long u, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, u, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, u, file -> verbose ? U" " : nullptr);
 }
 void texputr4 (MelderFile file, double x, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, Melder_single (x), file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, Melder_single (x), file -> verbose ? U" " : nullptr);
 }
 void texputr8 (MelderFile file, double x, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, x, file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, x, file -> verbose ? U" " : nullptr);
 }
 void texputc8 (MelderFile file, fcomplex z, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, Melder_single (z.re),
-		file -> verbose ? U" + " : U" ", Melder_single (z.im), file -> verbose ? U" i " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, Melder_single (z.re),
+		file -> verbose ? U" + " : U" ", Melder_single (z.im), file -> verbose ? U" i " : nullptr);
 }
 void texputc16 (MelderFile file, dcomplex z, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, z.re,
-		file -> verbose ? U" + " : U" ", z.im, file -> verbose ? U" i " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, z.re,
+		file -> verbose ? U" + " : U" ", z.im, file -> verbose ? U" i " : nullptr);
 }
 void texpute1 (MelderFile file, int i, const char32 * (*getText) (int), const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
@@ -429,20 +428,20 @@ void texpute2 (MelderFile file, int i, const char32 * (*getText) (int), const ch
 }
 void texputeb (MelderFile file, bool i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U" = " : NULL, i ? U"<true>" : U"<false>", file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U" = " : nullptr, i ? U"<true>" : U"<false>", file -> verbose ? U" " : nullptr);
 }
 void texputeq (MelderFile file, bool i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U"? " : NULL, i ? U"<yes>" : U"<no>", file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U"? " : nullptr, i ? U"<yes>" : U"<no>", file -> verbose ? U" " : nullptr);
 }
 void texputex (MelderFile file, bool i, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
-	MelderFile_write (file, file -> verbose ? U"? " : NULL, i ? U"<exists>" : U"<absent>", file -> verbose ? U" " : NULL);
+	MelderFile_write (file, file -> verbose ? U"? " : nullptr, i ? U"<exists>" : U"<absent>", file -> verbose ? U" " : nullptr);
 }
 void texputs1 (MelderFile file, const char *s, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
 	MelderFile_write (file, file -> verbose ? U" = \"" : U"\"");
-	if (s != NULL) {
+	if (s) {
 		char c;
 		while ((c = *s ++) != '\0') {
 			MelderFile_writeCharacter (file, (char32) (char8) c);
@@ -454,7 +453,7 @@ void texputs1 (MelderFile file, const char *s, const char32 *s1, const char32 *s
 void texputs2 (MelderFile file, const char *s, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
 	MelderFile_write (file, file -> verbose ? U" = \"" : U"\"");
-	if (s != NULL) {
+	if (s) {
 		char c;
 		while ((c = *s ++) != '\0') {
 			MelderFile_writeCharacter (file, (char32) (char8) c);
@@ -466,7 +465,7 @@ void texputs2 (MelderFile file, const char *s, const char32 *s1, const char32 *s
 void texputs4 (MelderFile file, const char *s, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
 	MelderFile_write (file, file -> verbose ? U" = \"" : U"\"");
-	if (s != NULL) {
+	if (s) {
 		char c;
 		while ((c = *s ++) != '\0') {
 			MelderFile_writeCharacter (file, (char32) (char8) c);
@@ -478,7 +477,7 @@ void texputs4 (MelderFile file, const char *s, const char32 *s1, const char32 *s
 void texputw2 (MelderFile file, const char32 *s, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
 	MelderFile_write (file, file -> verbose ? U" = \"" : U"\"");
-	if (s != NULL) {
+	if (s) {
 		char32 c;
 		while ((c = *s ++) != U'\0') {
 			MelderFile_writeCharacter (file, c);
@@ -490,11 +489,11 @@ void texputw2 (MelderFile file, const char32 *s, const char32 *s1, const char32
 void texputw4 (MelderFile file, const char32 *s, const char32 *s1, const char32 *s2, const char32 *s3, const char32 *s4, const char32 *s5, const char32 *s6) {
 	PUTLEADER
 	MelderFile_write (file, file -> verbose ? U" = \"" : U"\"");
-	if (s != NULL) {
+	if (s) {
 		char32 c;
-		while ((c = *s ++) != '\0') {
+		while ((c = *s ++) != U'\0') {
 			MelderFile_writeCharacter (file, c);
-			if (c == '\"') MelderFile_writeCharacter (file, c);   // double any internal quotes
+			if (c == U'\"') MelderFile_writeCharacter (file, c);   // double any internal quotes
 		}
 	}
 	MelderFile_write (file, file -> verbose ? U"\" " : U"\"");
@@ -756,7 +755,7 @@ int16 bingeti2LE (FILE *f) {
 	}
 }
 
-uint16_t bingetu2 (FILE *f) {
+uint16 bingetu2 (FILE *f) {
 	try {
 		if (binario_16bitBE && Melder_debug != 18) {
 			uint16 s;
@@ -774,7 +773,7 @@ uint16_t bingetu2 (FILE *f) {
 	}
 }
 
-uint16_t bingetu2LE (FILE *f) {
+uint16 bingetu2LE (FILE *f) {
 	try {
 		if (binario_16bitLE && Melder_debug != 18) {
 			uint16 s;
@@ -1261,7 +1260,7 @@ void binputr4 (double x, FILE *f) {
 			int sign, exponent;
 			double fMantissa, fsMantissa;
 			uint32 mantissa;
-			if (x < 0.0) { sign = 0x0100; x *= -1; }
+			if (x < 0.0) { sign = 0x0100; x *= -1.0; }
 			else sign = 0;
 			if (x == 0.0) { exponent = 0; mantissa = 0; }
 			else {
@@ -1277,7 +1276,7 @@ void binputr4 (double x, FILE *f) {
 					exponent |= sign;
 					fMantissa = ldexp (fMantissa, 24);          
 					fsMantissa = floor (fMantissa); 
-					mantissa = (uint32_t) fsMantissa & 0x007FFFFF;
+					mantissa = (uint32) fsMantissa & 0x007FFFFF;
 				}
 			}
 			bytes [0] = (uint8) (exponent >> 1);   // truncate: bits 2 through 9 (bit 9 is the sign bit)
@@ -1301,7 +1300,7 @@ void binputr4LE (double x, FILE *f) {
 			int sign, exponent;
 			double fMantissa, fsMantissa;
 			uint32 mantissa;
-			if (x < 0.0) { sign = 0x0100; x *= -1; }
+			if (x < 0.0) { sign = 0x0100; x *= -1.0; }
 			else sign = 0;
 			if (x == 0.0) { exponent = 0; mantissa = 0; }
 			else {
@@ -1317,7 +1316,7 @@ void binputr4LE (double x, FILE *f) {
 					exponent |= sign;
 					fMantissa = ldexp (fMantissa, 24);          
 					fsMantissa = floor (fMantissa); 
-					mantissa = (uint32_t) fsMantissa & 0x007FFFFF;
+					mantissa = (uint32) fsMantissa & 0x007FFFFF;
 				}
 			}
 			bytes [3] = (uint8) (exponent >> 1);
@@ -1340,7 +1339,7 @@ void binputr8 (double x, FILE *f) {
 			int sign, exponent;
 			double fMantissa, fsMantissa;
 			uint32 highMantissa, lowMantissa;
-			if (x < 0.0) { sign = 0x0800; x *= -1; }
+			if (x < 0.0) { sign = 0x0800; x *= -1.0; }
 			else sign = 0;
 			if (x == 0.0) { exponent = 0; highMantissa = 0; lowMantissa = 0; }
 			else {
@@ -1356,10 +1355,10 @@ void binputr8 (double x, FILE *f) {
 					exponent |= sign;
 					fMantissa = ldexp (fMantissa, 21);          
 					fsMantissa = floor (fMantissa); 
-					highMantissa = (uint32_t) fsMantissa & 0x000FFFFF;
+					highMantissa = (uint32) fsMantissa & 0x000FFFFF;
 					fMantissa = ldexp (fMantissa - fsMantissa, 32); 
 					fsMantissa = floor (fMantissa); 
-					lowMantissa = (uint32_t) fsMantissa;
+					lowMantissa = (uint32) fsMantissa;
 				}
 			}
 			bytes [0] = (uint8) (exponent >> 4);
@@ -1384,7 +1383,7 @@ void binputr10 (double x, FILE *f) {
 		int sign, exponent;   // these should be uint16_t, but frexp() expects an int
 		double fMantissa, fsMantissa;
 		uint32_t highMantissa, lowMantissa;
-		if (x < 0.0) { sign = 0x8000; x *= -1; }
+		if (x < 0.0) { sign = 0x8000; x *= -1.0; }
 		else sign = 0;
 		if (x == 0.0) { exponent = 0; highMantissa = 0; lowMantissa = 0; }
 		else {
@@ -1400,10 +1399,10 @@ void binputr10 (double x, FILE *f) {
 				exponent |= sign;
 				fMantissa = ldexp (fMantissa, 32);          
 				fsMantissa = floor (fMantissa); 
-				highMantissa = (uint32_t) fsMantissa;
+				highMantissa = (uint32) fsMantissa;
 				fMantissa = ldexp (fMantissa - fsMantissa, 32); 
 				fsMantissa = floor (fMantissa); 
-				lowMantissa = (uint32_t) fsMantissa;
+				lowMantissa = (uint32) fsMantissa;
 			}
 		}
 		bytes [0] = (uint8) (exponent >> 8);
@@ -1482,7 +1481,7 @@ char * bingets1 (FILE *f) {
 char * bingets2 (FILE *f) {
 	try {
 		uint16_t length = bingetu2 (f);
-		autostring8 result = Melder_malloc (char, (int64_t) length + 1);
+		autostring8 result = Melder_malloc (char, (int64) length + 1);
 		if (fread (result.peek(), sizeof (char), length, f) != length)
 			Melder_throw (feof (f) ? U"Reached end of file" : U"Error in file", U" while trying to read ", length, U" one-byte characters.");
 		result [length] = 0;   // trailing null byte
@@ -1495,7 +1494,7 @@ char * bingets2 (FILE *f) {
 char * bingets4 (FILE *f) {
 	try {
 		uint32_t length = bingetu4 (f);
-		autostring8 result = Melder_malloc (char, (int64_t) length + 1);
+		autostring8 result = Melder_malloc (char, (int64) length + 1);
 		if (fread (result.peek(), sizeof (char), length, f) != length)
 			Melder_throw (feof (f) ? U"Reached end of file" : U"Error in file", U" while trying to read ", length, U" one-byte characters.");
 		result [length] = 0;   // trailing null byte
@@ -1507,23 +1506,23 @@ char * bingets4 (FILE *f) {
 
 char32 * bingetw1 (FILE *f) {
 	try {
-		autostring32 result = NULL;
+		autostring32 result;
 		unsigned short length = bingetu1 (f);
 		if (length == 0xFF) {   // an escape for encoding
 			/*
 			 * UTF-16
 			 */
 			length = bingetu1 (f);
-			result.reset (Melder_malloc (char32, (int64_t) length + 1));
+			result.reset (Melder_malloc (char32, (int64) length + 1));
 			for (unsigned short i = 0; i < length; i ++) {
-				uint16 kar = bingetu2 (f);
-				if ((kar & 0xF800) == 0xD800) {
-					if (kar > 0xDBFF)
+				char32 kar = bingetu2 (f);
+				if ((kar & 0x00F800) == 0x00D800) {
+					if (kar > 0x00DBFF)
 						Melder_throw (U"Incorrect Unicode value (first surrogate member ", kar, U").");
-					uint16 kar2 = bingetu2 (f);
-					if (kar2 < 0xDC00 || kar2 > 0xDFFF)
+					char32 kar2 = bingetu2 (f);
+					if (kar2 < 0x00DC00 || kar2 > 0x00DFFF)
 						Melder_throw (U"Incorrect Unicode value (second surrogate member ", kar2, U").");
-					result [i] = (((kar & 0x3FF) << 10) | (kar2 & 0x3FF)) + 0x10000;
+					result [i] = (((kar & 0x0003FF) << 10) | (kar2 & 0x0003FF)) + 0x010000;
 				} else {
 					result [i] = kar;
 				}
@@ -1532,7 +1531,7 @@ char32 * bingetw1 (FILE *f) {
 			/*
 			 * ASCII
 			 */
-			result.reset (Melder_malloc (char32, (int64_t) length + 1));
+			result.reset (Melder_malloc (char32, (int64) length + 1));
 			for (unsigned short i = 0; i < length; i ++) {
 				result [i] = bingetu1 (f);
 			}
@@ -1546,14 +1545,14 @@ char32 * bingetw1 (FILE *f) {
 
 char32 * bingetw2 (FILE *f) {
 	try {
-		autostring32 result = NULL;
+		autostring32 result;
 		uint16 length = bingetu2 (f);
 		if (length == 0xFFFF) {   // an escape for encoding
 			/*
 			 * UTF-16
 			 */
 			length = bingetu2 (f);
-			result.reset (Melder_malloc (char32, (int64_t) length + 1));
+			result.reset (Melder_malloc (char32, (int64) length + 1));
 			for (uint16 i = 0; i < length; i ++) {
 				char32 kar = (char32) (char16) bingetu2 (f);
 				if ((kar & 0x00F800) == 0x00D800) {
@@ -1585,23 +1584,23 @@ char32 * bingetw2 (FILE *f) {
 
 char32 * bingetw4 (FILE *f) {
 	try {
-		autostring32 result = NULL;
-		uint32_t length = bingetu4 (f);
+		autostring32 result;
+		uint32 length = bingetu4 (f);
 		if (length == 0xFFFFFFFF) {   // an escape for encoding
 			/*
 			 * UTF-16
 			 */
 			length = bingetu4 (f);
-			result.reset (Melder_malloc (char32, (int64_t) length + 1));
-			for (uint32_t i = 0; i < length; i ++) {
-				uint16_t kar = bingetu2 (f);
-				if ((kar & 0xF800) == 0xD800) {
-					if (kar > 0xDBFF)
+			result.reset (Melder_malloc (char32, (int64) length + 1));
+			for (uint32 i = 0; i < length; i ++) {
+				char32 kar = bingetu2 (f);
+				if ((kar & 0x00F800) == 0x00D800) {
+					if (kar > 0x00DBFF)
 						Melder_throw (U"Incorrect Unicode value (first surrogate member ", kar, U").");
-					uint16_t kar2 = bingetu2 (f);
-					if (kar2 < 0xDC00 || kar2 > 0xDFFF)
+					char32 kar2 = bingetu2 (f);
+					if (kar2 < 0x00DC00 || kar2 > 0x00DFFF)
 						Melder_throw (U"Incorrect Unicode value (second surrogate member ", kar2, U").");
-					result [i] = (((kar & 0x3FF) << 10) | (kar2 & 0x3FF)) + 0x10000;
+					result [i] = (((kar & 0x0003FF) << 10) | (kar2 & 0x0003FF)) + 0x010000;
 				} else {
 					result [i] = kar;
 				}
@@ -1610,12 +1609,12 @@ char32 * bingetw4 (FILE *f) {
 			/*
 			 * ASCII
 			 */
-			result.reset (Melder_malloc (char32, (int64_t) length + 1));
-			for (uint32_t i = 0; i < length; i ++) {
+			result.reset (Melder_malloc (char32, (int64) length + 1));
+			for (uint32 i = 0; i < length; i ++) {
 				result [i] = bingetu1 (f);
 			}
 		}
-		result [length] = L'\0';
+		result [length] = U'\0';
 		return result.transfer();
 	} catch (MelderError) {
 		Melder_throw (U"Text not read from a binary file.");
@@ -1624,7 +1623,7 @@ char32 * bingetw4 (FILE *f) {
 
 void binputs1 (const char *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu1 (0, f);
 		} else {
 			size_t length = strlen (s);
@@ -1643,7 +1642,7 @@ void binputs1 (const char *s, FILE *f) {
 
 void binputs2 (const char *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu2 (0, f);
 		} else {
 			size_t length = strlen (s);
@@ -1662,7 +1661,7 @@ void binputs2 (const char *s, FILE *f) {
 
 void binputs4 (const char *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu4 (0, f);
 		} else {
 			size_t length = strlen (s);
@@ -1693,7 +1692,7 @@ static inline void binpututf16 (char32 kar, FILE *f) {
 
 void binputw1 (const char32 *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu1 (0, f);
 		} else {
 			uint32 length = str32len (s);
@@ -1727,7 +1726,7 @@ void binputw1 (const char32 *s, FILE *f) {
 
 void binputw2 (const char32 *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu2 (0, f);
 		} else {
 			int64 length = str32len (s);
@@ -1761,7 +1760,7 @@ void binputw2 (const char32 *s, FILE *f) {
 
 void binputw4 (const char32 *s, FILE *f) {
 	try {
-		if (s == NULL) {
+		if (! s) {
 			binputu4 (0, f);
 		} else {
 			int64 length = str32len (s);
diff --git a/sys/abcio.h b/sys/abcio.h
index 3ec951b..2222718 100644
--- a/sys/abcio.h
+++ b/sys/abcio.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "complex.h"
@@ -83,14 +82,14 @@ void texputw4 (MelderFile file, const char32 *s, const char32 *s1, const char32
 	The 42 routines are analogous to fgetc and fputc, who read or write one character:
 		int fgetc (FILE *f);   int fputc (int c, FILE *f);   // 0..255
 */
-unsigned int bingetu1 (FILE *f);   void binputu1 (unsigned int i, FILE *f);   /* 0..255 */
-uint16_t bingetu2 (FILE *f);   void binputu2 (uint16_t i, FILE *f);   /* 0..65535 */
-uint32_t bingetu4 (FILE *f);   void binputu4 (uint32_t i, FILE *f);   /* 0..4294967295 */
+unsigned int bingetu1 (FILE *f);   void binputu1 (unsigned int i, FILE *f);   // 0..255
+uint16 bingetu2 (FILE *f);   void binputu2 (uint16 i, FILE *f);   // 0..65535
+uint32 bingetu4 (FILE *f);   void binputu4 (uint32 i, FILE *f);   // 0..4294967295
 
 int bingeti1 (FILE *f);   void binputi1 (int i, FILE *f);   /* -128..127 */
-int16_t bingeti2 (FILE *f);   void binputi2 (int16_t i, FILE *f);   /* -32768..32767 */
-int32_t bingeti3 (FILE *f);   void binputi3 (int32_t i, FILE *f);   /* -8388608..2148388607 */
-int32_t bingeti32 (FILE *f);   void binputi32 (int32_t i, FILE *f);   /* -2147483648..2147483647 */
+int16 bingeti2 (FILE *f);   void binputi2 (int16 i, FILE *f);   // -32768..32767
+int32 bingeti3 (FILE *f);   void binputi3 (int32 i, FILE *f);   // -8388608..8388607
+int32 bingeti32 (FILE *f);   void binputi32 (int32 i, FILE *f);   // -2147483648..2147483647
 #define bingeti4 bingeti32
 #define binputi4 binputi32
 /*
@@ -99,38 +98,38 @@ int32_t bingeti32 (FILE *f);   void binputi32 (int32_t i, FILE *f);   /* -214748
 	This is the native integer format on Macintosh and Silicon Graphics Iris.
 */
 
-int16_t bingeti2LE (FILE *f);   void binputi2LE (int16_t i, FILE *f);   /* -32768..32767 */
-int32_t bingeti3LE (FILE *f);   void binputi3LE (int32_t i, FILE *f);   /* -8388608..2148388607 */
-int32_t bingeti4LE (FILE *f);   void binputi4LE (int32_t i, FILE *f);   /* -2147483648..2147483647 */
-uint16_t bingetu2LE (FILE *f);   void binputu2LE (uint16_t i, FILE *f);   /* 0..65535 */
-uint32_t bingetu4LE (FILE *f);   void binputu4LE (uint32_t i, FILE *f);   /* 0..4294967295 */
+int16 bingeti2LE (FILE *f);   void binputi2LE (int16 i, FILE *f);   // -32768..32767
+int32 bingeti3LE (FILE *f);   void binputi3LE (int32 i, FILE *f);   // -8388608..8388607
+int32 bingeti4LE (FILE *f);   void binputi4LE (int32 i, FILE *f);   // -2147483648..2147483647
+uint16 bingetu2LE (FILE *f);   void binputu2LE (uint16 i, FILE *f);   // 0..65535
+uint32 bingetu4LE (FILE *f);   void binputu4LE (uint32 i, FILE *f);   // 0..4294967295
 /*
 	Read or write signed or unsigned integers from or to 2 or 4 bytes in the stream 'f',
 	in little-endian byte order (least significant byte first).
 	This is the native integer format on Vax and IBM PC.
 */
 
-unsigned int bingetb1 (FILE *f);   void binputb1 (unsigned int value, FILE *f);   /* 0..1*/
-unsigned int bingetb2 (FILE *f);   void binputb2 (unsigned int value, FILE *f);   /* 0..3 */
-unsigned int bingetb3 (FILE *f);   void binputb3 (unsigned int value, FILE *f);   /* 0..7 */
-unsigned int bingetb4 (FILE *f);   void binputb4 (unsigned int value, FILE *f);   /* 0..15 */
-unsigned int bingetb5 (FILE *f);   void binputb5 (unsigned int value, FILE *f);   /* 0..31 */
-unsigned int bingetb6 (FILE *f);   void binputb6 (unsigned int value, FILE *f);   /* 0..63 */
-unsigned int bingetb7 (FILE *f);   void binputb7 (unsigned int value, FILE *f);   /* 0..127 */
+unsigned int bingetb1 (FILE *f);   void binputb1 (unsigned int value, FILE *f);   // 0..1
+unsigned int bingetb2 (FILE *f);   void binputb2 (unsigned int value, FILE *f);   // 0..3
+unsigned int bingetb3 (FILE *f);   void binputb3 (unsigned int value, FILE *f);   // 0..7
+unsigned int bingetb4 (FILE *f);   void binputb4 (unsigned int value, FILE *f);   // 0..15
+unsigned int bingetb5 (FILE *f);   void binputb5 (unsigned int value, FILE *f);   // 0..31
+unsigned int bingetb6 (FILE *f);   void binputb6 (unsigned int value, FILE *f);   // 0..63
+unsigned int bingetb7 (FILE *f);   void binputb7 (unsigned int value, FILE *f);   // 0..127
 void bingetb (FILE *f);   void binputb (FILE *f);
 /*
 	Read or write an unsigned integer from or to a number of bits in the stream 'f'.
 	After an uninterrupted sequence of bingetbxxx or binputbxxx, call bingetb or binputb.
 	Not reentrant: uses a static one-byte buffer. Do not call from interrupt routines.
 	Example 1:
-		int hasTitle = bingetb1 (f);   // One bit.
-		int category = bingetb3 (f);   // A number in the range 0..7.
-		int sense = bingetb2 (f);   // A number in the range 0..3.
+		int hasTitle = bingetb1 (f);   // one bit
+		int category = bingetb3 (f);   // a number in the range 0..7
+		int sense = bingetb2 (f);   // a number in the range 0..3
 		bingetb (f);
 	Example 2:
-		binputb1 (hasTitle, f);   // One bit.
-		binputb3 (category, f);   // A number in the range 0..7.
-		binputb2 (sense, f);   // A number in the range 0..3.
+		binputb1 (hasTitle, f);   // one bit
+		binputb3 (category, f);   // a number in the range 0..7
+		binputb2 (sense, f);   // a number in the range 0..3
 		binputb (f);
 */
 
@@ -148,35 +147,35 @@ void binpute2 (int value, FILE *f);
 
 double bingetr4 (FILE *f);   void binputr4 (double x, FILE *f);
 /*
-	Read or write a real number from or to 4 bytes in the stream 'f',
+	Read or write a real number from or to 4 bytes in the stream `f`,
 	in IEEE single-precision binary real format, with the most significant bit first.
 	NaN's (Not-a-Numbers) and infinities get the value HUGE, which equals infinity on IEEE machines.
 	Absolute values of normalized numbers (23 bits precision): 1.2e-38 .. 3.4e38.
 	Denormalized: from 1.4e-45.
-	This is the native format of a 'float' on Macintosh and Silicon Graphics Iris.
+	This is the native format of a `float` on Macintosh and Silicon Graphics Iris.
 */
-double bingetr4LE (FILE *f);   void binputr4LE (double x, FILE *f);   // Least significant bit first.
+double bingetr4LE (FILE *f);   void binputr4LE (double x, FILE *f);   // least significant bit first
 
 double bingetr8 (FILE *f);   void binputr8 (double x, FILE *f);
 /*
-	Read or write a real number from or to 8 bytes in the stream 'f',
+	Read or write a real number from or to 8 bytes in the stream `f`,
 	in IEEE double-precision binary real format, with the most significant bit first.
 	NaN's (Not-a-Numbers) and infinities get the value HUGE, which equals infinity on IEEE machines.
 	Absolute values of normalized numbers (52 bits precision): 2.2e-308 .. 1.8e308.
 	Denormalized: from 4.9e-324.
-	This is the native format of a 'double' on Silicon Graphics Iris and PowerMac.
+	This is the native format of a `double` on Silicon Graphics Iris and PowerMac.
 */
 
 double bingetr10 (FILE *f);   void binputr10 (double x, FILE *f);
 /*
-	Read or write a real number from or to 10 bytes in the stream 'f',
+	Read or write a real number from or to 10 bytes in the stream `f`,
 	in IEEE extended-precision binary real format, with the most significant bit first,
 	as implemented in Motorola's MC68881 floating-point coprocessor.
 	NaN's (Not-a-Numbers) and infinities get the value HUGE, which equals infinity on IEEE machines.
 	Absolute values of normalized numbers (63 bits precision): 8e-4933 .. 6e4931.
 	Denormalized: from 9e-4952.
 	This format is used to encode the sampling rate in AIFF (Audio Interchange File Format) files,
-	and is the native format of a 'double' on 68k Macintosh.
+	and is the native format of a `double` on 68k Macintosh.
 */
 
 fcomplex bingetc8 (FILE *f);
@@ -184,15 +183,15 @@ dcomplex bingetc16 (FILE *f);
 void binputc8 (fcomplex z, FILE *f);
 void binputc16 (dcomplex z, FILE *f);
 
-char * bingets1 (FILE *f);   void binputs1 (const char *s, FILE *f);   /* 0..255 characters. */
-char * bingets2 (FILE *f);   void binputs2 (const char *s, FILE *f);   /* 0..65535 characters. */
-char * bingets4 (FILE *f);   void binputs4 (const char *s, FILE *f);   /* 0..4294967295 characters. */
+char * bingets1 (FILE *f);   void binputs1 (const char *s, FILE *f);   // 0..255 characters
+char * bingets2 (FILE *f);   void binputs2 (const char *s, FILE *f);   // 0..65535 characters
+char * bingets4 (FILE *f);   void binputs4 (const char *s, FILE *f);   // 0..4294967295 characters
 /*
-	Read or write a string from or to str32len (s) UTF-16LE or ASCII characters + 1, 2, or 4 bytes in the stream 'f',
+	Read or write a string from or to `str32len(s)` UTF-16LE or ASCII characters plus 1, 2, or 4 bytes in the stream `f`,
 	in a Pascal-style format: first the length, then the characters, without a trailing null byte.
-	bingetsxxx returns a new 'malloc'ed null-terminated C string (for the caller to 'free' it),
-	or NULL if out of memory.
-	binputsxxx expects a null-terminated C string whose 'str32len' fits in 1, 2, or 4 bytes.
+	bingetsxxx returns a new 'malloc'ed null-terminated C string (for the caller to `free` it).
+	Fail if out of memory.
+	binputsxxx expects a null-terminated C string whose `str32len` fits in 1, 2, or 4 bytes.
 */
 char32 * bingetw1 (FILE *f);   void binputw1 (const char32 *s, FILE *f);
 char32 * bingetw2 (FILE *f);   void binputw2 (const char32 *s, FILE *f);
diff --git a/sys/abcio_enums.h b/sys/abcio_enums.h
index 696972f..359a407 100644
--- a/sys/abcio_enums.h
+++ b/sys/abcio_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2009,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kBoolean, 0)
diff --git a/sys/complex.cpp b/sys/complex.cpp
index f01a643..de6aff5 100644
--- a/sys/complex.cpp
+++ b/sys/complex.cpp
@@ -7,20 +7,13 @@
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 1999/06/19
- * pb 2002/03/07 GPL
- * pb 2011/04/06 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <math.h>
diff --git a/sys/complex.h b/sys/complex.h
index 9eda920..1f06769 100644
--- a/sys/complex.h
+++ b/sys/complex.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 typedef struct fcomplex { float re, im; } fcomplex;
diff --git a/sys/enums.h b/sys/enums.h
index d7c5689..31d69a2 100644
--- a/sys/enums.h
+++ b/sys/enums.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define enums_begin(type,minimum)  enum type { type##_MIN = minimum,
diff --git a/sys/enums_getText.h b/sys/enums_getText.h
index ca3dd7b..23581b1 100644
--- a/sys/enums_getText.h
+++ b/sys/enums_getText.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* See enums.h */
diff --git a/sys/enums_getValue.h b/sys/enums_getValue.h
index d053550..5ebdbc3 100644
--- a/sys/enums_getValue.h
+++ b/sys/enums_getValue.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007-2009,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* See enums.h */
diff --git a/sys/machine.cpp b/sys/machine.cpp
index e3b7886..9276281 100644
--- a/sys/machine.cpp
+++ b/sys/machine.cpp
@@ -1,27 +1,19 @@
 /* machine.cpp
  *
- * Copyright (C) 1992-2011,2012,2013 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2004/06/17 Machine_getMainWindowMenuBarHeight ()
- * pb 2011/05/15 C++
- * pb 2012/09/02 Cocoa
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "machine.h"
@@ -40,7 +32,7 @@
 
 static int lookAndFeel;
 
-int Machine_getMenuBarHeight (void) {
+int Machine_getMenuBarHeight () {
 	static int heights [] = {
 		26,   /* Motif */
 		24,   /* SGI */
@@ -56,7 +48,7 @@ int Machine_getMenuBarHeight (void) {
 	return heights [lookAndFeel];
 }
 
-int Machine_getMainWindowMenuBarHeight (void) {
+int Machine_getMainWindowMenuBarHeight () {
 	#ifdef macintoshXXX
 		return 0;
 	#else
@@ -64,7 +56,7 @@ int Machine_getMainWindowMenuBarHeight (void) {
 	#endif
 }
 
-int Machine_getTitleBarHeight (void) {
+int Machine_getTitleBarHeight () {
 	static int heights [] = {   /* Mostly copied from menu-bar height. */
 		26,   /* Motif */
 		24,   /* SGI */
@@ -80,7 +72,7 @@ int Machine_getTitleBarHeight (void) {
 	return heights [lookAndFeel];
 }
 
-int Machine_getScrollBarWidth (void) {
+int Machine_getScrollBarWidth () {
 	static int widths [] = {
 		22,   /* Motif */
 		22,   /* SGI */
@@ -96,7 +88,7 @@ int Machine_getScrollBarWidth (void) {
 	return widths [lookAndFeel];
 }
 
-int Machine_getTextHeight (void) {
+int Machine_getTextHeight () {
 	static int heights [] = {
 		29,   /* Motif */
 		29,   /* SGI */
@@ -112,16 +104,12 @@ int Machine_getTextHeight (void) {
 	return heights [lookAndFeel];
 }
 
-void Machine_initLookAndFeel (unsigned int argc, char **argv) {
+void Machine_initLookAndFeel (int argc, char **argv) {
 	/*
 	 * Determining the appropriate look-and-feel: the default depends on the client machine.
 	 */
 	#if defined (macintosh)
-		#if useCarbon
-			lookAndFeel = LookAndFeel_MAC;
-		#else
-			lookAndFeel = LookAndFeel_COCOA;
-		#endif
+		lookAndFeel = LookAndFeel_COCOA;
 		return;
 	#elif defined (_WIN32)
 		lookAndFeel = LookAndFeel_WIN32;
diff --git a/sys/machine.h b/sys/machine.h
index 518b50c..854ba5b 100644
--- a/sys/machine.h
+++ b/sys/machine.h
@@ -2,29 +2,28 @@
 #define _machine_h_
 /* machine.h
  *
- * Copyright (C) 1992-2011 Paul Boersma
+ * Copyright (C) 1992-2011,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-void Machine_initLookAndFeel (unsigned int argc, char **argv);
-int Machine_getMenuBarHeight (void);
-int Machine_getMainWindowMenuBarHeight (void);
-int Machine_getTitleBarHeight (void);
-int Machine_getScrollBarWidth (void);
-int Machine_getTextHeight (void);
+void Machine_initLookAndFeel (int argc, char **argv);
+int Machine_getMenuBarHeight ();
+int Machine_getMainWindowMenuBarHeight ();
+int Machine_getTitleBarHeight ();
+int Machine_getScrollBarWidth ();
+int Machine_getTextHeight ();
 
 /* End of file machine.h */
 #endif
diff --git a/sys/macport_off.h b/sys/macport_off.h
index dba6a25..e66094d 100644
--- a/sys/macport_off.h
+++ b/sys/macport_off.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #undef Polygon
diff --git a/sys/macport_on.h b/sys/macport_on.h
index a33c9e2..80aeb07 100644
--- a/sys/macport_on.h
+++ b/sys/macport_on.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1993-2011,2012 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define Polygon MacintoshPolygon
diff --git a/sys/melder.cpp b/sys/melder.cpp
index aa64be9..c44c13e 100644
--- a/sys/melder.cpp
+++ b/sys/melder.cpp
@@ -1,20 +1,19 @@
 /* melder.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma, 2008 Stefan de Konink, 2010 Franz Brausse, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <time.h>
@@ -31,20 +30,16 @@
 	//#include <Sound.h>
 	#include "macport_off.h"
 #endif
-#ifndef CONSOLE_APPLICATION
-	#include "Graphics.h"
-	#include "machine.h"
-	#ifdef macintosh
-		#include "macport_on.h"
-        #if useCarbon
-            #include <Carbon/Carbon.h>
-        #else
-            #include <AudioToolbox/AudioToolbox.h>
-        #endif
-		#include "macport_off.h"
-	#endif
-	#include "Gui.h"
+
+#include "Graphics.h"
+#include "machine.h"
+#ifdef macintosh
+	#include "macport_on.h"
+	#include <AudioToolbox/AudioToolbox.h>
+	#include "macport_off.h"
 #endif
+#include "Gui.h"
+
 #include "MelderThread.h"
 
 #include "enums_getText.h"
@@ -59,15 +54,13 @@ bool Melder_backgrounding;   // are we running a script?- Set and unset dynamica
 bool Melder_asynchronous;
 int32 Melder_systemVersion;
 
-#ifndef CONSOLE_APPLICATION
-	GuiWindow Melder_topShell;
-#endif
+GuiWindow Melder_topShell;
 
 static void defaultHelp (const char32 *query) {
 	Melder_flushError (U"Don't know how to find help on \"", query, U"\".");
 }
 
-static void defaultSearch (void) {
+static void defaultSearch () {
 	Melder_flushError (U"Do not know how to search.");
 }
 
@@ -83,11 +76,6 @@ static void defaultFatal (const char32 *message) {
 	Melder_writeToConsole (U"\n", true);
 }
 
-static int defaultPublish (void *anything) {
-	(void) anything;
-	return 0;   // nothing published
-}
-
 static int defaultRecord (double duration) {
 	(void) duration;
 	return 0;   // nothing recorded
@@ -98,11 +86,11 @@ static int defaultRecordFromFile (MelderFile file) {
 	return 0;   // nothing recorded
 }
 
-static void defaultPlay (void) {}
+static void defaultPlay () {}
 
-static void defaultPlayReverse (void) {}
+static void defaultPlayReverse () {}
 
-static int defaultPublishPlayed (void) {
+static int defaultPublishPlayed () {
 	return 0;   /* Nothing published. */
 }
 
@@ -110,20 +98,18 @@ static int defaultPublishPlayed (void) {
 
 static struct {
 	void (*help) (const char32 *query);
-	void (*search) (void);
+	void (*search) ();
 	void (*warning) (const char32 *message);
 	void (*fatal) (const char32 *message);
-	int (*publish) (void *anything);
 	int (*record) (double duration);
 	int (*recordFromFile) (MelderFile file);
-	void (*play) (void);
-	void (*playReverse) (void);
-	int (*publishPlayed) (void);
+	void (*play) ();
+	void (*playReverse) ();
+	int (*publishPlayed) ();
 }
 	theMelder = {
 		defaultHelp, defaultSearch,
 		defaultWarning, defaultFatal,
-		defaultPublish,
 		defaultRecord, defaultRecordFromFile, defaultPlay, defaultPlayReverse, defaultPublishPlayed
 	};
 
@@ -131,10 +117,9 @@ static struct {
 
 static int theProgressDepth = 0;
 static bool theProgressCancelled = false;
-void Melder_progressOff (void) { theProgressDepth --; }
-void Melder_progressOn (void) { theProgressDepth ++; }
+void Melder_progressOff () { theProgressDepth --; }
+void Melder_progressOn () { theProgressDepth ++; }
 
-#ifndef CONSOLE_APPLICATION
 static bool waitWhileProgress (double progress, const char32 *message, GuiDialog dia, GuiProgressBar scale, GuiLabel label1, GuiLabel label2, GuiButton cancelButton) {
 	#if gtk
 		// Wait for all pending events to be processed. If anybody knows how to inspect GTK's
@@ -146,50 +131,17 @@ static bool waitWhileProgress (double progress, const char32 *message, GuiDialog
 			gtk_main_iteration ();
 		}
 	#elif defined (macintosh)
-		#if useCarbon
-			EventRecord event;
-			while (GetNextEvent (mDownMask, & event)) {
-				WindowPtr macWindow;
-				int part = FindWindow (event. where, & macWindow);
-				if (part == inContent) {
-					if (GetWindowKind (macWindow) == userKind) {
-						SetPortWindowPort (macWindow);
-						GlobalToLocal (& event. where);  //CGContextConvertPointToUserSpace
-						ControlPartCode controlPart;
-						ControlHandle macControl = FindControlUnderMouse (event. where, macWindow, & controlPart);
-						if (macControl) {
-							GuiObject control = (GuiObject) GetControlReference (macControl);
-							if (control == cancelButton -> d_widget) {
-								FlushEvents (everyEvent, 0);
-								XtUnmanageChild (dia -> d_widget);
-								return false;   // don't continue
-							} else {
-								break;
-							}
-						} else {
-							XtDispatchEvent ((XEvent *) & event);
-						}
-					} else {
-						XtDispatchEvent ((XEvent *) & event);
-					}
-				} else {
-					XtDispatchEvent ((XEvent *) & event);
-				}
-			}
-			do { XtNextEvent ((XEvent *) & event); XtDispatchEvent ((XEvent *) & event); } while (event.what);
-		#else
-			NSEvent *nsEvent = [NSApp
-				nextEventMatchingMask: NSAnyEventMask
-				untilDate: [NSDate distantPast]
-				inMode: NSDefaultRunLoopMode
-				dequeue: YES
-				];
-			if (nsEvent) {
-				NSUInteger nsEventType = [nsEvent type];
-				if (nsEventType == NSKeyDown) NSBeep ();
-				[[nsEvent window]  sendEvent: nsEvent];
-			}
-		#endif
+		NSEvent *nsEvent = [NSApp
+			nextEventMatchingMask: NSAnyEventMask
+			untilDate: [NSDate distantPast]
+			inMode: NSDefaultRunLoopMode
+			dequeue: YES
+			];
+		if (nsEvent) {
+			NSUInteger nsEventType = [nsEvent type];
+			if (nsEventType == NSKeyDown) NSBeep ();
+			[[nsEvent window]  sendEvent: nsEvent];
+		}
 	#elif defined (_WIN32)
 		XEvent event;
 		while (PeekMessage (& event, 0, 0, 0, PM_REMOVE)) {
@@ -224,7 +176,7 @@ static bool waitWhileProgress (double progress, const char32 *message, GuiDialog
 		if (progress <= 0.0) progress = 0.0;
 		GuiThing_show (dia);   // TODO: prevent raising to the front
 		const char32 *newline = str32chr (message, U'\n');
-		if (newline != NULL) {
+		if (newline) {
 			static MelderString buffer { 0 };
 			MelderString_copy (& buffer, message);
 			buffer.string [newline - message] = U'\0';
@@ -256,29 +208,26 @@ static bool waitWhileProgress (double progress, const char32 *message, GuiDialog
 			}
 		#elif motif
 			GuiProgressBar_setValue (scale, progress);
-			XmUpdateDisplay (dia -> d_widget);
+			GdiFlush ();
 		#endif
 	}
 	trace (U"continue");
 	return true;
 }
 
+static GuiButton theProgressCancelButton = nullptr;
+
 #if gtk || macintosh
-static void progress_dia_close (void *cancelButton) {
+static void progress_dia_close (Thing /* boss */) {
 	theProgressCancelled = true;
 	#if gtk
-		g_object_set_data (G_OBJECT ((* (GuiButton *) cancelButton) -> d_widget), "pressed", (gpointer) 1);
-	#else
-		(void) cancelButton;
+		g_object_set_data (G_OBJECT (theProgressCancelButton -> d_widget), "pressed", (gpointer) 1);
 	#endif
 }
-static void progress_cancel_btn_press (void *cancelButton, GuiButtonEvent event) {
-	(void) event;
+static void progress_cancel_btn_press (Thing /* boss */, GuiButtonEvent /* event */) {
 	theProgressCancelled = true;
 	#if gtk
-		g_object_set_data (G_OBJECT ((* (GuiButton *) cancelButton) -> d_widget), "pressed", (gpointer) 1);
-	#else
-		(void) cancelButton;
+		g_object_set_data (G_OBJECT (theProgressCancelButton -> d_widget), "pressed", (gpointer) 1);
 	#endif
 }
 #endif
@@ -287,9 +236,9 @@ static void _Melder_dia_init (GuiDialog *dia, GuiProgressBar *scale, GuiLabel *l
 	trace (U"creating the dialog");
 	*dia = GuiDialog_create (Melder_topShell, 200, 100, 400, hasMonitor ? 430 : 200, U"Work in progress",
 		#if gtk || macintosh
-			progress_dia_close, cancelButton,
+			progress_dia_close, nullptr,
 		#else
-			NULL, NULL,
+			nullptr, nullptr,
 		#endif
 		0);
 
@@ -303,37 +252,34 @@ static void _Melder_dia_init (GuiDialog *dia, GuiProgressBar *scale, GuiLabel *l
 	trace (U"creating the cancel button");
 	*cancelButton = GuiButton_createShown (*dia, 0, 400, 170, 170 + Gui_PUSHBUTTON_HEIGHT,
 		U"Interrupt",
-		#if gtk || macintosh
-			progress_cancel_btn_press, cancelButton,
+		#if gtk
+			progress_cancel_btn_press, nullptr,
+		#elif macintosh
+			progress_cancel_btn_press, nullptr,
 		#else
-			NULL, NULL,
+			nullptr, nullptr,
 		#endif
 		0);
 	trace (U"end");
 }
-#endif
 
 static void _Melder_progress (double progress, const char32 *message) {
-	(void) progress;
-	#ifndef CONSOLE_APPLICATION
 	if (! Melder_batch && theProgressDepth >= 0 && Melder_debug != 14) {
 		static clock_t lastTime;
-		static GuiDialog dia = NULL;
-		static GuiProgressBar scale = NULL;
-		static GuiButton cancelButton = NULL;
-		static GuiLabel label1 = NULL, label2 = NULL;
+		static GuiDialog dia = nullptr;
+		static GuiProgressBar scale = nullptr;
+		static GuiLabel label1 = nullptr, label2 = nullptr;
 		clock_t now = clock ();
 		if (progress <= 0.0 || progress >= 1.0 ||
 			now - lastTime > CLOCKS_PER_SEC / 4)   // this time step must be much longer than the null-event waiting time
 		{
-			if (dia == NULL)
-				_Melder_dia_init (& dia, & scale, & label1, & label2, & cancelButton, false);
-			if (! waitWhileProgress (progress, message, dia, scale, label1, label2, cancelButton))
+			if (! dia)
+				_Melder_dia_init (& dia, & scale, & label1, & label2, & theProgressCancelButton, false);
+			if (! waitWhileProgress (progress, message, dia, scale, label1, label2, theProgressCancelButton))
 				Melder_throw (U"Interrupted!");
 			lastTime = now;
 		}
 	}
-	#endif
 }
 
 static MelderString theProgressBuffer = { 0 };
@@ -398,35 +344,41 @@ void Melder_progress (double progress, Melder_19_ARGS) {
 	_Melder_progress (progress, theProgressBuffer.string);
 }
 
-static void * _Melder_monitor (double progress, const char32 *message) {
-	#ifndef CONSOLE_APPLICATION
+static autoGraphics graphics;
+
+static void gui_drawingarea_cb_expose (Thing /* boss */, GuiDrawingArea_ExposeEvent /* event */) {
+	if (! graphics) return;
+	Graphics_play (graphics.get(), graphics.get());
+}
+
+static Graphics _Melder_monitor (double progress, const char32 *message) {
 	if (! Melder_batch && theProgressDepth >= 0) {
 		static clock_t lastTime;
-		static GuiDialog dia = NULL;
-		static GuiProgressBar scale = NULL;
-		static GuiDrawingArea drawingArea = NULL;
-		static GuiButton cancelButton = NULL;
-		static GuiLabel label1 = NULL, label2 = NULL;
+		static GuiDialog dia = nullptr;
+		static GuiProgressBar scale = nullptr;
+		static GuiDrawingArea drawingArea = nullptr;
+		static GuiButton cancelButton = nullptr;
+		static GuiLabel label1 = nullptr, label2 = nullptr;
 		clock_t now = clock ();
-		static Any graphics = NULL;
 		if (progress <= 0.0 || progress >= 1.0 ||
 			now - lastTime > CLOCKS_PER_SEC / 4)   // this time step must be much longer than the null-event waiting time
 		{
-			if (dia == NULL) {
+			if (! dia) {
 				_Melder_dia_init (& dia, & scale, & label1, & label2, & cancelButton, true);
-				drawingArea = GuiDrawingArea_createShown (dia, 0, 400, 230, 430, NULL, NULL, NULL, NULL, NULL, 0);
+				drawingArea = GuiDrawingArea_createShown (dia, 0, 400, 230, 430, gui_drawingarea_cb_expose, nullptr, nullptr, nullptr, nullptr, 0);
 				GuiThing_show (dia);
 				graphics = Graphics_create_xmdrawingarea (drawingArea);
 			}
+			if (graphics)
+				Graphics_flushWs (graphics.get());
 			if (! waitWhileProgress (progress, message, dia, scale, label1, label2, cancelButton))
 				Melder_throw (U"Interrupted!");
 			lastTime = now;
 			if (progress == 0.0)
-				return graphics;
+				return graphics.get();
 		}
 	}
-	#endif
-	return progress <= 0.0 ? NULL /* no Graphics */ : (void *) -1 /* any non-NULL pointer */;
+	return progress <= 0.0 ? nullptr /* no Graphics */ : (Graphics) -1 /* any non-null pointer */;
 }
 
 void * Melder_monitor (double progress) {
@@ -502,36 +454,36 @@ bool Melder_numberMatchesCriterion (double value, int which_kMelder_number, doub
 }
 
 bool Melder_stringMatchesCriterion (const char32 *value, int which_kMelder_string, const char32 *criterion) {
-	if (value == NULL) {
+	if (! value) {
 		value = U"";   // regard null strings as empty strings, as is usual in Praat
 	}
-	if (criterion == NULL) {
+	if (! criterion) {
 		criterion = U"";   // regard null strings as empty strings, as is usual in Praat
 	}
 	if (which_kMelder_string <= kMelder_string_NOT_EQUAL_TO) {
-		int matchPositiveCriterion = str32equ (value, criterion);
-		return (which_kMelder_string == kMelder_string_EQUAL_TO) == matchPositiveCriterion;
+		bool matchPositiveCriterion = str32equ (value, criterion);
+		return ( which_kMelder_string == kMelder_string_EQUAL_TO ) == matchPositiveCriterion;
 	}
 	if (which_kMelder_string <= kMelder_string_DOES_NOT_CONTAIN) {
-		int matchPositiveCriterion = str32str (value, criterion) != NULL;
-		return (which_kMelder_string == kMelder_string_CONTAINS) == matchPositiveCriterion;
+		bool matchPositiveCriterion = !! str32str (value, criterion);
+		return ( which_kMelder_string == kMelder_string_CONTAINS ) == matchPositiveCriterion;
 	}
 	if (which_kMelder_string <= kMelder_string_DOES_NOT_START_WITH) {
-		int matchPositiveCriterion = str32nequ (value, criterion, str32len (criterion));
-		return (which_kMelder_string == kMelder_string_STARTS_WITH) == matchPositiveCriterion;
+		bool matchPositiveCriterion = str32nequ (value, criterion, str32len (criterion));
+		return ( which_kMelder_string == kMelder_string_STARTS_WITH ) == matchPositiveCriterion;
 	}
 	if (which_kMelder_string <= kMelder_string_DOES_NOT_END_WITH) {
 		int criterionLength = str32len (criterion), valueLength = str32len (value);
-		int matchPositiveCriterion = criterionLength <= valueLength && str32equ (value + valueLength - criterionLength, criterion);
+		bool matchPositiveCriterion = ( criterionLength <= valueLength && str32equ (value + valueLength - criterionLength, criterion) );
 		return (which_kMelder_string == kMelder_string_ENDS_WITH) == matchPositiveCriterion;
 	}
 	if (which_kMelder_string == kMelder_string_MATCH_REGEXP) {
-		char32 *place = NULL;
+		char32 *place = nullptr;
 		regexp *compiled_regexp = CompileRE_throwable (criterion, 0);
-		if (ExecRE (compiled_regexp, NULL, value, NULL, 0, '\0', '\0', NULL, NULL, NULL))
+		if (ExecRE (compiled_regexp, nullptr, value, nullptr, 0, '\0', '\0', nullptr, nullptr, nullptr))
 			place = compiled_regexp -> startp [0];
 		free (compiled_regexp);
-		return place != NULL;
+		return !! place;
 	}
 	return false;   // should not occur
 }
@@ -540,15 +492,15 @@ void Melder_help (const char32 *query) {
 	theMelder. help (query);
 }
 
-void Melder_search (void) {
+void Melder_search () {
 	theMelder. search ();
 }
 
 /********** WARNING **********/
 
 static int theWarningDepth = 0;
-void Melder_warningOff (void) { theWarningDepth --; }
-void Melder_warningOn (void) { theWarningDepth ++; }
+void Melder_warningOff () { theWarningDepth --; }
+void Melder_warningOn () { theWarningDepth ++; }
 
 static MelderString theWarningBuffer = { 0 };
 
@@ -623,13 +575,9 @@ void Melder_warning (Melder_19_ARGS) {
 	theMelder. warning (theWarningBuffer.string);
 }
 
-void Melder_beep (void) {
+void Melder_beep () {
 	#ifdef macintosh
-		#if useCarbon
-			SysBeep (0);
-		#else
-            AudioServicesPlayAlertSound (kSystemSoundID_UserPreferredAlert);
-		#endif
+		AudioServicesPlayAlertSound (kSystemSoundID_UserPreferredAlert);
 	#else
 		fprintf (stderr, "\a");
 	#endif
@@ -1027,15 +975,13 @@ void Melder_assert_ (const char *fileName, int lineNumber, const char *condition
 	abort ();
 }
 
-#ifndef CONSOLE_APPLICATION
-
 #if defined (macintosh)
 static void mac_message (NSAlertStyle macAlertType, const char32 *message32) {
 	static unichar messageU [4000];
 	int messageLength = str32len (message32);
 	int j = 0;
 	for (int i = 0; i < messageLength && j <= 4000 - 3; i ++) {
-		char32 kar = message32 [i];   // change sign
+		char32 kar = message32 [i];
 		if (kar <= 0x00FFFF) {
 			messageU [j ++] = kar;
 		} else if (kar <= 0x10FFFF) {
@@ -1064,47 +1010,39 @@ static void mac_message (NSAlertStyle macAlertType, const char32 *message32) {
 			}
 		}
 	}
-	#if useCarbon
-        DialogRef dialog;
-		CFStringRef messageCF = CFStringCreateWithCharacters (NULL, messageU, j);
-		CreateStandardAlert (macAlertType, messageCF, NULL, NULL, & dialog);
-		CFRelease (messageCF);
-		RunStandardAlert (dialog, NULL, NULL);
-	#else
-		/*
-		 * Create an alert dialog with an icon that is appropriate for the level.
-		 */
-		NSAlert *alert = [[NSAlert alloc] init];
-		[alert setAlertStyle: macAlertType];
-		/*
-		 * Add the header in bold.
-		 */
-		NSString *header = [[NSString alloc] initWithCharacters: messageU   length: lineBreak - messageU];   // note: init can change the object pointer!
-		if (header) {   // make this very safe, because we can be at error time or at fatal time
-			[alert setMessageText: header];
-			[header release];
-		}
-		/*
-		 * Add the rest of the message in small type.
-		 */
-		if (lineBreak - messageU < j) {
-			NSString *rest = [[NSString alloc] initWithCharacters: lineBreak + 1   length: j - 1 - (lineBreak - messageU)];
-			if (rest) {   // make this very safe, because we can be at error time or at fatal time
-				[alert setInformativeText: rest];
-				[rest release];
-			}
+	/*
+	 * Create an alert dialog with an icon that is appropriate for the level.
+	 */
+	NSAlert *alert = [[NSAlert alloc] init];
+	[alert setAlertStyle: macAlertType];
+	/*
+	 * Add the header in bold.
+	 */
+	NSString *header = [[NSString alloc] initWithCharacters: messageU   length: lineBreak - messageU];   // note: init can change the object pointer!
+	if (header) {   // make this very safe, because we can be at error time or at fatal time
+		[alert setMessageText: header];
+		[header release];
+	}
+	/*
+	 * Add the rest of the message in small type.
+	 */
+	if (lineBreak - messageU < j) {
+		NSString *rest = [[NSString alloc] initWithCharacters: lineBreak + 1   length: j - 1 - (lineBreak - messageU)];
+		if (rest) {   // make this very safe, because we can be at error time or at fatal time
+			[alert setInformativeText: rest];
+			[rest release];
 		}
-		/*
-		 * Display the alert dialog and synchronously wait for the user to click OK.
-		 */
-		[alert runModal];
-		[alert release];
-	#endif
+	}
+	/*
+	 * Display the alert dialog and synchronously wait for the user to click OK.
+	 */
+	[alert runModal];
+	[alert release];
 }
 #endif
 
 #define theMessageFund_SIZE  100000
-static char * theMessageFund = NULL;
+static char * theMessageFund = nullptr;
 
 static void gui_fatal (const char32 *message) {
 	free (theMessageFund);
@@ -1114,15 +1052,10 @@ static void gui_fatal (const char32 *message) {
 		gtk_dialog_run (GTK_DIALOG (dialog));
 		gtk_widget_destroy (GTK_WIDGET (dialog));
 	#elif defined (macintosh)
-		#if useCarbon
-			mac_message (NSCriticalAlertStyle, message);
-			SysError (11);
-		#else
-			mac_message (NSCriticalAlertStyle, message);
-			SysError (11);
-		#endif
+		mac_message (NSCriticalAlertStyle, message);
+		SysError (11);
 	#elif defined (_WIN32)
-		MessageBox (NULL, Melder_peek32toW (message), L"Fatal error", MB_OK | MB_TOPMOST | MB_ICONSTOP);
+		MessageBox (nullptr, Melder_peek32toW (message), L"Fatal error", MB_OK | MB_TOPMOST | MB_ICONSTOP);
 	#endif
 }
 
@@ -1140,32 +1073,22 @@ static void gui_error (const char32 *message) {
 		trace (U"destroy dialog");
 		gtk_widget_destroy (GTK_WIDGET (dialog));
 	#elif defined (macintosh)
-		#if useCarbon
-			mac_message (NSWarningAlertStyle, message);
-			XmUpdateDisplay (0);
-		#else
-			mac_message (NSWarningAlertStyle, message);
-		#endif
+		mac_message (NSWarningAlertStyle, message);
 	#elif defined (_WIN32)
-		MessageBox (NULL, Melder_peek32toW (message), L"Message", MB_OK | MB_TOPMOST | MB_ICONWARNING);   // or (HWND) XtWindow ((GuiObject) Melder_topShell)
+		MessageBox (nullptr, Melder_peek32toW (message), L"Message", MB_OK | MB_TOPMOST | MB_ICONWARNING);   // or (HWND) XtWindow ((GuiObject) Melder_topShell)
 	#endif
 	if (memoryIsLow) {
 		theMessageFund = (char *) malloc (theMessageFund_SIZE);
-		if (theMessageFund == NULL) {
+		if (! theMessageFund) {
 			#if gtk
 				GuiObject dialog = gtk_message_dialog_new (GTK_WINDOW (Melder_topShell -> d_gtkWindow), GTK_DIALOG_DESTROY_WITH_PARENT,
 					GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 				gtk_dialog_run (GTK_DIALOG (dialog));
 				gtk_widget_destroy (GTK_WIDGET (dialog));
 			#elif defined (macintosh)
-				#if useCarbon
-					mac_message (NSCriticalAlertStyle, U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
-					XmUpdateDisplay (0);
-				#else
-					mac_message (NSCriticalAlertStyle, U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
-				#endif
+				mac_message (NSCriticalAlertStyle, U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 			#elif defined (_WIN32)
-				MessageBox (NULL, L"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.", L"Message", MB_OK);
+				MessageBox (nullptr, L"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.", L"Message", MB_OK);
 			#endif
 		}
 	}
@@ -1178,32 +1101,22 @@ static void gui_warning (const char32 *message) {
 		gtk_dialog_run (GTK_DIALOG (dialog));
 		gtk_widget_destroy (GTK_WIDGET (dialog));
 	#elif defined (macintosh)
-		#if useCarbon
-			mac_message (NSInformationalAlertStyle, message);
-			XmUpdateDisplay (0);
-		#else
-			mac_message (NSInformationalAlertStyle, message);
-		#endif
+		mac_message (NSInformationalAlertStyle, message);
 	#elif defined (_WIN32)
-		MessageBox (NULL, Melder_peek32toW (message), L"Warning", MB_OK | MB_TOPMOST | MB_ICONINFORMATION);
+		MessageBox (nullptr, Melder_peek32toW (message), L"Warning", MB_OK | MB_TOPMOST | MB_ICONINFORMATION);
 	#endif
 }
 
 void gui_information (const char32 *);   // BUG: no prototype
 void MelderGui_create (void *parent) {
 	theMessageFund = (char *) malloc (theMessageFund_SIZE);
-	assert (theMessageFund != NULL);
+	assert (theMessageFund);
 	Melder_topShell = (GuiWindow) parent;
 	Melder_setInformationProc (gui_information);
 	Melder_setFatalProc (gui_fatal);
 	Melder_setErrorProc (gui_error);
 	Melder_setWarningProc (gui_warning);
 }
-#endif
-
-int Melder_publish (void *anything) {
-	return theMelder. publish (anything);
-}
 
 int Melder_record (double duration) {
 	return theMelder. record (duration);
@@ -1213,15 +1126,15 @@ int Melder_recordFromFile (MelderFile file) {
 	return theMelder. recordFromFile (file);
 }
 
-void Melder_play (void) {
+void Melder_play () {
 	theMelder. play ();
 }
 
-void Melder_playReverse (void) {
+void Melder_playReverse () {
 	theMelder. playReverse ();
 }
 
-int Melder_publishPlayed (void) {
+int Melder_publishPlayed () {
 	return theMelder. publishPlayed ();
 }
 
@@ -1239,22 +1152,19 @@ void Melder_setWarningProc (void (*warning) (const char32 *))
 void Melder_setFatalProc (void (*fatal) (const char32 *))
 	{ theMelder. fatal = fatal ? fatal : defaultFatal; }
 
-void Melder_setPublishProc (int (*publish) (void *))
-	{ theMelder. publish = publish ? publish : defaultPublish; }
-
 void Melder_setRecordProc (int (*record) (double))
 	{ theMelder. record = record ? record : defaultRecord; }
 
 void Melder_setRecordFromFileProc (int (*recordFromFile) (MelderFile))
 	{ theMelder. recordFromFile = recordFromFile ? recordFromFile : defaultRecordFromFile; }
 
-void Melder_setPlayProc (void (*play) (void))
+void Melder_setPlayProc (void (*play) ())
 	{ theMelder. play = play ? play : defaultPlay; }
 
-void Melder_setPlayReverseProc (void (*playReverse) (void))
+void Melder_setPlayReverseProc (void (*playReverse) ())
 	{ theMelder. playReverse = playReverse ? playReverse : defaultPlayReverse; }
 
-void Melder_setPublishPlayedProc (int (*publishPlayed) (void))
+void Melder_setPublishPlayedProc (int (*publishPlayed) ())
 	{ theMelder. publishPlayed = publishPlayed ? publishPlayed : defaultPublishPlayed; }
 
 /* End of file melder.cpp */
diff --git a/sys/melder.h b/sys/melder.h
index 5f6cdd5..99af607 100644
--- a/sys/melder.h
+++ b/sys/melder.h
@@ -2,21 +2,20 @@
 #define _melder_h_
 /* melder.h
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <stdio.h>
@@ -34,6 +33,7 @@
 	#include <sys/types.h>   // for off_t
 #endif
 #include <stdbool.h>
+#include <functional>
 /*
  * The following two lines are for obsolete (i.e. C99) versions of stdint.h
  */
@@ -137,12 +137,12 @@ inline static int str32ncmp (const char32 *string1, const char32 *string2, int64
 inline static char32 * str32chr (const char32 *string, char32 kar) {
 	for (; *string != kar; ++ string) {
 		if (*string == U'\0')
-			return NULL;
+			return nullptr;
 	}
 	return (char32 *) string;
 }
 inline static char32 * str32rchr (const char32 *string, char32 kar) {
-	char32 *result = NULL;
+	char32 *result = nullptr;
 	for (; *string != U'\0'; ++ string) {
 		if (*string == kar) result = (char32 *) string;
 	}
@@ -156,7 +156,7 @@ inline static char32 * str32str (const char32 *string, const char32 *find) {
 		char32 kar;
 		do {
 			kar = * string ++;
-			if (kar == U'\0') return NULL;
+			if (kar == U'\0') return nullptr;
 		} while (kar != firstCharacter);
 	} while (str32ncmp (string, find, length - 1));
 	return (char32 *) (string - 1);
@@ -174,7 +174,7 @@ cont:
 extern "C" char * Melder_peek32to8 (const char32 *string);
 inline static long a32tol (const char32 *string) {
 	if (sizeof (wchar_t) == 4) {
-		return wcstol ((const wchar_t *) string, NULL, 10);
+		return wcstol ((const wchar_t *) string, nullptr, 10);
 	} else {
 		return atol (Melder_peek32to8 (string));
 	}
@@ -291,12 +291,12 @@ void Melder_writeToConsole (const char32 *message, bool useStderr);
 /* the f versions open up a rainy day fund or crash Praat. */
 /* These routines also maintain a count of the total number of blocks allocated. */
 
-void Melder_alloc_init (void);   // to be called around program start-up
-void Melder_message_init (void);   // to be called around program start-up
+void Melder_alloc_init ();   // to be called around program start-up
+void Melder_message_init ();   // to be called around program start-up
 void * _Melder_malloc (int64 size);
-#define Melder_malloc(type,numberOfElements)  (type *) _Melder_malloc ((numberOfElements) * (int64_t) sizeof (type))
+#define Melder_malloc(type,numberOfElements)  (type *) _Melder_malloc ((numberOfElements) * (int64) sizeof (type))
 void * _Melder_malloc_f (int64 size);
-#define Melder_malloc_f(type,numberOfElements)  (type *) _Melder_malloc_f ((numberOfElements) * (int64_t) sizeof (type))
+#define Melder_malloc_f(type,numberOfElements)  (type *) _Melder_malloc_f ((numberOfElements) * (int64) sizeof (type))
 void * Melder_realloc (void *pointer, int64 size);
 void * Melder_realloc_f (void *pointer, int64 size);
 void * _Melder_calloc (int64 numberOfElements, int64 elementSize);
@@ -307,17 +307,17 @@ char * Melder_strdup (const char *string);
 char * Melder_strdup_f (const char *string);
 
 int Melder_cmp (const char32 *string1, const char32 *string2);   // regards null string as empty string
-int Melder_ncmp (const char32 *string1, const char32 *string2, int64_t n);
+int Melder_ncmp (const char32 *string1, const char32 *string2, int64 n);
 char32 * Melder_tok (char32 *string, const char32 *delimiter);
 
 /**
  * Text encodings.
  */
-void Melder_textEncoding_prefs (void);
+void Melder_textEncoding_prefs ();
 void Melder_setInputEncoding (enum kMelder_textInputEncoding encoding);
-int Melder_getInputEncoding (void);
+int Melder_getInputEncoding ();
 void Melder_setOutputEncoding (enum kMelder_textOutputEncoding encoding);
-enum kMelder_textOutputEncoding Melder_getOutputEncoding (void);
+enum kMelder_textOutputEncoding Melder_getOutputEncoding ();
 
 /*
  * Some other encodings. Although not used in the above set/get functions,
@@ -375,7 +375,7 @@ extern "C" char16 * Melder_peek32to16 (const char32 *string);
 void Melder_str32To8bitFileRepresentation_inline (const char32 *string, char *utf8);
 void Melder_8bitFileRepresentationToStr32_inline (const char *utf8, char32 *string);
 const void * Melder_peek32toCfstring (const char32 *string);
-void Melder_fwrite32to8 (const char32 *ptr, int64 n, FILE *f);
+void Melder_fwrite32to8 (const char32 *ptr, FILE *f);
 
 
 /********** FILES **********/
@@ -407,10 +407,6 @@ struct structMelderDir {
 };
 typedef struct structMelderDir *MelderDir;
 
-#if defined (macintosh) && useCarbon
-	void Melder_machToFile (void *void_fsref, MelderFile file);
-#endif
-
 const char32 * MelderFile_name (MelderFile file);
 char32 * MelderDir_name (MelderDir dir);
 void Melder_pathToDir (const char32 *path, MelderDir dir);
@@ -433,8 +429,8 @@ void MelderFile_getParentDir (MelderFile file, MelderDir parent);
 void MelderDir_getParentDir (MelderDir file, MelderDir parent);
 bool MelderDir_isDesktop (MelderDir dir);
 void MelderDir_getSubdir (MelderDir parent, const char32 *subdirName, MelderDir subdir);
-void Melder_rememberShellDirectory (void);
-char32 * Melder_getShellDirectory (void);
+void Melder_rememberShellDirectory ();
+char32 * Melder_getShellDirectory ();
 void Melder_getHomeDir (MelderDir homeDir);
 void Melder_getPrefDir (MelderDir prefDir);
 void Melder_getTempDir (MelderDir tempDir);
@@ -447,7 +443,7 @@ void MelderFile_delete (MelderFile file);
 /* The following two should be combined with each other and with Windows extension setting: */
 FILE * Melder_fopen (MelderFile file, const char *type);
 void Melder_fclose (MelderFile file, FILE *stream);
-void Melder_files_cleanUp (void);
+void Melder_files_cleanUp ();
 
 /* Use the following functions to pass unchanged text or file names to Melder_* functions. */
 /* Backslashes are replaced by "\bs". */
@@ -659,33 +655,33 @@ void MelderFile_setDefaultDir (MelderFile file);
 void _Melder_free (void **pointer);
 /*
 	Preconditions:
-		none (*pointer may be NULL).
+		none (*pointer may be null).
 	Postconditions:
-		*pointer == NULL;
+		*pointer == nullptr;
 */
 
-int64 Melder_allocationCount (void);
+int64 Melder_allocationCount ();
 /*
 	Returns the total number of successful calls to
-	Melder_malloc, Melder_realloc (if 'ptr' is NULL), Melder_calloc, and Melder_strdup,
+	Melder_malloc, Melder_realloc (if 'ptr' is null), Melder_calloc, and Melder_strdup,
 	since the start of the process. Mainly for debugging purposes.
 */
 
-int64 Melder_deallocationCount (void);
+int64 Melder_deallocationCount ();
 /*
 	Returns the total number of successful calls to Melder_free,
 	since the start of the process. Mainly for debugging purposes.
 */
 
-int64 Melder_allocationSize (void);
+int64 Melder_allocationSize ();
 /*
 	Returns the total number of bytes allocated in calls to
 	Melder_malloc, Melder_realloc (if moved), Melder_calloc, and Melder_strdup,
 	since the start of the process. Mainly for debugging purposes.
 */
 
-int64 Melder_reallocationsInSituCount (void);
-int64 Melder_movingReallocationsCount (void);
+int64 Melder_reallocationsInSituCount ();
+int64 Melder_movingReallocationsCount ();
 
 /********** STRINGS **********/
 
@@ -746,10 +742,10 @@ void MelderString_append (MelderString *me, Melder_16_TO_19_ARGS);
 void MelderString16_appendCharacter (MelderString16 *me, char32 character);
 void MelderString_appendCharacter (MelderString *me, char32 character);
 void MelderString_get (MelderString *me, char32 *destination);   // performs no boundary checking
-int64 MelderString_allocationCount (void);
-int64 MelderString_deallocationCount (void);
-int64 MelderString_allocationSize (void);
-int64 MelderString_deallocationSize (void);
+int64 MelderString_allocationCount ();
+int64 MelderString_deallocationCount ();
+int64 MelderString_allocationSize ();
+int64 MelderString_deallocationSize ();
 
 struct structMelderReadText {
 	char32 *string32, *readPointer32;
@@ -811,14 +807,14 @@ bool Melder_stringMatchesCriterion (const char32 *value, int which_kMelder_strin
 	separated (and perhaps preceded and followed) by white space.
 	The tokens cannot contain spaces themselves (there are no escapes).
 	Typical use:
-		for (token = Melder_firstToken (string); token != NULL; token = Melder_nextToken ()) {
+		for (token = Melder_firstToken (string); token != nullptr; token = Melder_nextToken ()) {
 			... do something with the token ...
 		}
 */
 
 long Melder_countTokens (const char32 *string);
 char32 *Melder_firstToken (const char32 *string);
-char32 *Melder_nextToken (void);
+char32 *Melder_nextToken ();
 char32 ** Melder_getTokens (const char32 *string, long *n);
 void Melder_freeTokens (char32 ***tokens);
 long Melder_searchToken (const char32 *string, char32 **tokens, long n);
@@ -849,7 +845,7 @@ void Melder_casual (Melder_16_TO_19_ARGS);
 /**
 	Give information to stdout (batch), or to an "Info" window (interactive), or to a diverted string.
 */
-void MelderInfo_open (void);   // clear the Info window in the background
+void MelderInfo_open ();   // clear the Info window in the background
 
 void MelderInfo_write (Melder_1_ARG);
 void MelderInfo_write (Melder_2_ARGS);
@@ -881,8 +877,8 @@ void MelderInfo_writeLine (Melder_12_OR_13_ARGS);
 void MelderInfo_writeLine (Melder_14_OR_15_ARGS);
 void MelderInfo_writeLine (Melder_16_TO_19_ARGS);
 
-void MelderInfo_close (void);   // drain the background info to the Info window, making sure there is a line break
-void MelderInfo_drain (void);   // drain the background info to the Info window, without adding any extra line break
+void MelderInfo_close ();   // drain the background info to the Info window, making sure there is a line break
+void MelderInfo_drain ();   // drain the background info to the Info window, without adding any extra line break
 
 void Melder_information (Melder_1_ARG);
 void Melder_information (Melder_2_ARGS);
@@ -899,23 +895,23 @@ void Melder_information (Melder_12_OR_13_ARGS);
 void Melder_information (Melder_14_OR_15_ARGS);
 void Melder_information (Melder_16_TO_19_ARGS);
 
-void Melder_informationReal (double value, const char32 *units);   // %.17g or --undefined--; units may be NULL
+void Melder_informationReal (double value, const char32 *units);   // %.17g or --undefined--; units may be null
 
-void Melder_divertInfo (MelderString *buffer);   // NULL = back to normal
+void Melder_divertInfo (MelderString *buffer);   // nullptr = back to normal
 
 class autoMelderDivertInfo {
 	public:
 		autoMelderDivertInfo (MelderString *buffer) { Melder_divertInfo (buffer); }
-		~autoMelderDivertInfo () { Melder_divertInfo (NULL); }
+		~autoMelderDivertInfo () { Melder_divertInfo (nullptr); }
 };
 
-void Melder_clearInfo (void);   // clear the Info window
-const char32 * Melder_getInfo (void);
+void Melder_clearInfo ();   // clear the Info window
+const char32 * Melder_getInfo ();
 void Melder_help (const char32 *query);
 
-void Melder_search (void);
+void Melder_search ();
 	
-void Melder_beep (void);
+void Melder_beep ();
 
 extern int Melder_debug;
 
@@ -966,10 +962,10 @@ bool Melder_hasError ();
 bool Melder_hasError (const char32 *partialError);
 	/* Returns 1 if there is an error message in store, otherwise 0. */
 
-void Melder_clearError (void);
+void Melder_clearError ();
 	/* Cancel all stored error messages. */
 
-char32 * Melder_getError (void);
+char32 * Melder_getError ();
 	/* Returns the error string. Mainly used with str32str. */
 
 /********** WARNING: give warning to stderr (batch) or to a "Warning" dialog **********/
@@ -989,8 +985,8 @@ void Melder_warning (Melder_12_OR_13_ARGS);
 void Melder_warning (Melder_14_OR_15_ARGS);
 void Melder_warning (Melder_16_TO_19_ARGS);
 
-void Melder_warningOff (void);
-void Melder_warningOn (void);
+void Melder_warningOff ();
+void Melder_warningOn ();
 
 class autoMelderWarningOff {
 public:
@@ -1037,13 +1033,13 @@ void Melder_progress (double progress, Melder_12_OR_13_ARGS);
 void Melder_progress (double progress, Melder_14_OR_15_ARGS);
 void Melder_progress (double progress, Melder_16_TO_19_ARGS);
 
-void Melder_progressOff (void);
-void Melder_progressOn (void);
+void Melder_progressOff ();
+void Melder_progressOn ();
 /*
 	Function:
 		Show the progress of a time-consuming process.
 	Arguments:
-		Any of 'arg1' through 'arg19' may be NULL.
+		Any of 'arg1' through 'arg19' may be null.
 	Batch behaviour:
 		Does nothing, always returns 1.
 	Interactive behaviour:
@@ -1098,15 +1094,15 @@ void * Melder_monitor (double progress, Melder_16_TO_19_ARGS);
 	Function:
 		Show the progress of a time-consuming process.
 	Arguments:
-		Any of 'arg1' through 'arg19' may be NULL.
+		Any of 'arg1' through 'arg19' may be null.
 	Batch behaviour:
-		Does nothing, returns NULL if 'progress' <= 0.0 and a non-NULL pointer otherwise.
+		Does nothing, returns null if 'progress' <= 0.0 and a non-null pointer otherwise.
 	Interactive behaviour:
 		Shows the progress of a time-consuming process:
 		- if 'progress' <= 0.0, show a window with text and a Cancel button and
 		  room for a square drawing, and return a Graphics;
 		- if 0.0 < 'progress' < 1.0, show text and a partially filled progress bar,
-		  and return NULL if user interrupts, else return a non-NULL pointer;
+		  and return nullptr if user interrupts, else return a non-null pointer;
 		- if 'progress' >= 1, hide the window.
 	Usage:
 		- call with 'progress' = 0.0 before the process starts.
@@ -1128,8 +1124,8 @@ void * Melder_monitor (double progress, Melder_16_TO_19_ARGS);
 		          break;
 		      }
 		- after the process has finished, call with 'progress' = 1.0:
-		      (void) Melder_monitor (1.0, NULL);
-		- the first and third steps can be automated by autoMelderMonitor:
+		      (void) Melder_monitor (1.0, nullptr);
+		- showing and hiding can be automated by autoMelderMonitor:
 		      autoMelderMonitor monitor ("Starting work...");
 		      if (monitor.graphics()) {   // always check; might be batch
 		          Graphics_clearWs (monitor.graphics());   // only if you redraw all every time
@@ -1152,13 +1148,11 @@ public:
 
 /********** RECORD AND PLAY ROUTINES **********/
 
-int Melder_publish (void *anything);
-
 int Melder_record (double duration);
 int Melder_recordFromFile (MelderFile file);
-void Melder_play (void);
-void Melder_playReverse (void);
-int Melder_publishPlayed (void);
+void Melder_play ();
+void Melder_playReverse ();
+int Melder_publishPlayed ();
 
 /********** SYSTEM VERSION **********/
 
@@ -1196,61 +1190,53 @@ void Melder_setProgressProc (int (*progressProc) (double progress, const char32
 void Melder_setMonitorProc (void * (*monitorProc) (double progress, const char32 *message));
 void Melder_setInformationProc (void (*informationProc) (const char32 *message));
 void Melder_setHelpProc (void (*help) (const char32 *query));
-void Melder_setSearchProc (void (*search) (void));
+void Melder_setSearchProc (void (*search) ());
 void Melder_setWarningProc (void (*warningProc) (const char32 *message));
 void Melder_setErrorProc (void (*errorProc) (const char32 *message));
 void Melder_setFatalProc (void (*fatalProc) (const char32 *message));
-void Melder_setPublishProc (int (*publish) (void *));
 void Melder_setRecordProc (int (*record) (double));
 void Melder_setRecordFromFileProc (int (*recordFromFile) (MelderFile));
-void Melder_setPlayProc (void (*play) (void));
-void Melder_setPlayReverseProc (void (*playReverse) (void));
-void Melder_setPublishPlayedProc (int (*publishPlayed) (void));
+void Melder_setPlayProc (void (*play) ());
+void Melder_setPlayReverseProc (void (*playReverse) ());
+void Melder_setPublishPlayedProc (int (*publishPlayed) ());
 
-double Melder_stopwatch (void);
+double Melder_stopwatch ();
+void Melder_sleep (double duration);
 
 /********** AUDIO **********/
 
-#if defined (macintosh) || defined (_WIN32) || defined (linux)
-	#define kMelderAudio_inputUsesPortAudio_DEFAULT  true
-		// Mac: in order to have CoreAudio
-		// Win: in order to allow recording for over 64 megabytes (paMME)
-		// Linux: in order to use ALSA and therefore be compatible with Ubuntu 10.10 and later
-#else
-	#define kMelderAudio_inputUsesPortAudio_DEFAULT  false
-#endif
-void MelderAudio_setInputUsesPortAudio (bool inputUsesPortAudio);
-bool MelderAudio_getInputUsesPortAudio (void);
-#if defined (macintosh) || defined (linux)
-	#define kMelderAudio_outputUsesPortAudio_DEFAULT  true
-		// Mac: in order to have CoreAudio
-		// Linux: in order to use ALSA and therefore be compatible with Ubuntu 10.10 and later
-#else
-	#define kMelderAudio_outputUsesPortAudio_DEFAULT  false
-		// Win: in order to reduce the long latencies of paMME and to avoid the incomplete implementation of paDirectSound
-#endif
-void MelderAudio_setOutputUsesPortAudio (bool outputUsesPortAudio);
-bool MelderAudio_getOutputUsesPortAudio (void);
-#if 1
+void MelderAudio_setInputSoundSystem (enum kMelder_inputSoundSystem inputSoundSystem);
+enum kMelder_inputSoundSystem MelderAudio_getInputSoundSystem ();
+
+void MelderAudio_setOutputSoundSystem (enum kMelder_outputSoundSystem outputSoundSystem);
+enum kMelder_outputSoundSystem MelderAudio_getOutputSoundSystem ();
+
+#if defined (_WIN32)
 	#define kMelderAudio_outputSilenceBefore_DEFAULT  0.0
-		// Mac: in order to switch off the BOING caused by the automatic gain control
-#endif
-void MelderAudio_setOutputSilenceBefore (double silenceBefore);
-double MelderAudio_getOutputSilenceBefore (void);
-#if defined (macintosh)
+	#define kMelderAudio_outputSilenceAfter_DEFAULT  0.1
+		// in order to get rid of the click on some cards
+#elif defined (macintosh)
+	#define kMelderAudio_outputSilenceBefore_DEFAULT  0.0
+		// in order to switch off the BOING caused by the automatic gain control
 	#define kMelderAudio_outputSilenceAfter_DEFAULT  0.0
-		// Mac: in order to reduce the BOING caused by the automatic gain control when the user replays immediately after a sound has finished
+		// in order to reduce the BOING caused by the automatic gain control when the user replays immediately after a sound has finished
+#elif defined (linux)
+	#define kMelderAudio_outputSilenceBefore_DEFAULT  0.0
+	#define kMelderAudio_outputSilenceAfter_DEFAULT  0.1
+		// in order to get rid of double playing of a sounding buffer (?)
 #else
-	#define kMelderAudio_outputSilenceAfter_DEFAULT  0.5
-		// Win: in order to get rid of the click on some cards
-		// Linux: in order to get rid of double playing of a sounding buffer
+	#define kMelderAudio_outputSilenceBefore_DEFAULT  0.0
+	#define kMelderAudio_outputSilenceAfter_DEFAULT  0.0
 #endif
+void MelderAudio_setOutputSilenceBefore (double silenceBefore);
+double MelderAudio_getOutputSilenceBefore ();
 void MelderAudio_setOutputSilenceAfter (double silenceAfter);
-double MelderAudio_getOutputSilenceAfter (void);
+double MelderAudio_getOutputSilenceAfter ();
+
 void MelderAudio_setUseInternalSpeaker (bool useInternalSpeaker);   // for HP-UX and Sun
-bool MelderAudio_getUseInternalSpeaker (void);
+bool MelderAudio_getUseInternalSpeaker ();
 void MelderAudio_setOutputMaximumAsynchronicity (enum kMelder_asynchronicityLevel maximumAsynchronicity);
-enum kMelder_asynchronicityLevel MelderAudio_getOutputMaximumAsynchronicity (void);
+enum kMelder_asynchronicityLevel MelderAudio_getOutputMaximumAsynchronicity ();
 long MelderAudio_getOutputBestSampleRate (long fsamp);
 
 extern bool MelderAudio_isPlaying;
@@ -1260,10 +1246,10 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 bool MelderAudio_stopPlaying (bool isExplicit);   // returns true if sound was playing
 #define MelderAudio_IMPLICIT  false
 #define MelderAudio_EXPLICIT  true
-long MelderAudio_getSamplesPlayed (void);
-bool MelderAudio_stopWasExplicit (void);
+long MelderAudio_getSamplesPlayed ();
+bool MelderAudio_stopWasExplicit ();
 
-void Melder_audio_prefs (void);   // in init file
+void Melder_audio_prefs ();   // in init file
 
 /********** AUDIO FILES **********/
 
@@ -1337,7 +1323,7 @@ const char32 * MelderQuantity_getShortUnitText (int quantity);   // e.g. "s"
 
 char32 * Melder_getenv (const char32 *variableName);
 void Melder_system (const char32 *command);   // spawn a system command
-double Melder_clock (void);   // seconds since 1969
+double Melder_clock ();   // seconds since 1969
 
 struct autoMelderProgressOff {
 	autoMelderProgressOff () { Melder_progressOff (); }
@@ -1345,15 +1331,8 @@ struct autoMelderProgressOff {
 };
 
 struct autoMelderString : MelderString {
-	autoMelderString () { length = 0; bufferSize = 0; string = NULL; }
+	autoMelderString () { length = 0; bufferSize = 0; string = nullptr; }
 	~autoMelderString () { MelderString_free (this); }
-	char32 * transfer () {
-		char32 *tmp = string;
-		string = NULL;
-		length = 0;
-		bufferSize = 0;
-		return tmp;
-	}
 };
 
 struct autoMelderReadText {
@@ -1371,7 +1350,7 @@ struct autoMelderReadText {
 	}
 	MelderReadText transfer () {
 		MelderReadText tmp = text;
-		text = NULL;
+		text = nullptr;
 		return tmp;
 	}
 };
@@ -1381,7 +1360,7 @@ class autofile {
 public:
 	autofile (FILE *f) : ptr (f) {
 	}
-	autofile () : ptr (NULL) {
+	autofile () : ptr (nullptr) {
 	}
 	~autofile () {
 		if (ptr) fclose (ptr);   // no error checking, because this is a destructor, only called after a throw, because otherwise you'd use f.close(file)
@@ -1396,30 +1375,30 @@ public:
 	void close (MelderFile file) {
 		if (ptr) {
 			FILE *tmp = ptr;
-			ptr = NULL;
+			ptr = nullptr;
 			Melder_fclose (file, tmp);
 		}
 	}
 };
 
 class autoMelderFile {
-	MelderFile file;
+	MelderFile _file;
 public:
-	autoMelderFile (MelderFile a_file) : file (a_file) {
+	autoMelderFile (MelderFile file) : _file (file) {
 	}
 	~autoMelderFile () {
-		if (file) MelderFile_close_nothrow (file);
+		if (_file) MelderFile_close_nothrow (_file);
 	}
 	void close () {
-		if (file && file -> filePointer) {
-			MelderFile tmp = file;
-			file = NULL;
+		if (_file && _file -> filePointer) {
+			MelderFile tmp = _file;
+			_file = nullptr;
 			MelderFile_close (tmp);
 		}
 	}
 	MelderFile transfer () {
-		MelderFile tmp = file;
-		file = NULL;
+		MelderFile tmp = _file;
+		_file = nullptr;
 		return tmp;
 	}
 };
@@ -1461,15 +1440,20 @@ public:
 
 class autoMelderTokens {
 	char32 **tokens;
+	long numberOfTokens;
 public:
 	autoMelderTokens () {
-		tokens = NULL;
+		tokens = nullptr;
 	}
-	autoMelderTokens (const char32 *string, long *n) {
-		tokens = Melder_getTokens (string, n);
+	autoMelderTokens (const char32 *string) {
+		tokens = Melder_getTokens (string, & numberOfTokens);
 	}
 	~autoMelderTokens () {
-		if (tokens) Melder_freeTokens (& tokens);
+		if (tokens) {
+			for (long itoken = 1; itoken <= numberOfTokens; itoken ++)
+				Melder_free (tokens [itoken]);
+			Melder_freeTokens (& tokens);
+		}
 	}
 	char32*& operator[] (long i) {
 		return tokens [i];
@@ -1477,9 +1461,16 @@ public:
 	char32 ** peek () const {
 		return tokens;
 	}
-	void reset (const char32 *string, long *n) {
-		if (tokens) Melder_freeTokens (& tokens);
-		tokens = Melder_getTokens (string, n);
+	long count () const {
+		return numberOfTokens;
+	}
+	void reset (const char32 *string) {
+		if (tokens) {
+			for (long itoken = 1; itoken <= numberOfTokens; itoken ++)
+				Melder_free (tokens [itoken]);
+			Melder_freeTokens (& tokens);
+		}
+		tokens = Melder_getTokens (string, & numberOfTokens);
 	}
 };
 
@@ -1490,7 +1481,7 @@ public:
 	_autostring (T *string) : ptr (string) {
 		//if (Melder_debug == 39) Melder_casual (U"autostring: constructor from C-string ", Melder_pointer (ptr));
 	}
-	_autostring () : ptr (0) {
+	_autostring () : ptr (nullptr) {
 		//if (Melder_debug == 39) Melder_casual (U"autostring: zero constructor");
 	}
 	~_autostring () {
@@ -1517,7 +1508,7 @@ public:
 	}
 	T * transfer () {
 		T *tmp = ptr;
-		ptr = NULL;
+		ptr = nullptr;
 		return tmp;
 	}
 	void reset (T *string) {
@@ -1556,5 +1547,58 @@ struct autoMelderAsynchronous {
 	~autoMelderAsynchronous () { Melder_asynchronous = false; }
 };
 
+#define Melder_ENABLE_IF_ISA(A,B)  , class = typename std::enable_if<std::is_base_of<B,A>::value>::type
+
+template <typename Ret, typename T, typename... Args>
+class MelderCallback {
+	public:
+		typedef Ret* (*FunctionType) (T*, Args...);
+		MelderCallback (FunctionType f = nullptr) : _f (f) { }
+		template <typename T2  Melder_ENABLE_IF_ISA(T2,T), typename Ret2  Melder_ENABLE_IF_ISA(Ret2,Ret)>
+			MelderCallback (Ret2* (*f) (T2*, Args...)) : _f (reinterpret_cast<FunctionType> (f)) { };
+		Ret* operator () (T* data, Args ... args) { return _f (data, args...); }
+		explicit operator bool () const { return !! _f; }
+	private:
+		FunctionType _f;
+};
+template <typename T, typename... Args>
+class MelderCallback <void, T, Args...> {   // specialization
+	public:
+		typedef void (*FunctionType) (T*, Args...);
+		MelderCallback (FunctionType f = nullptr) : _f (f) { }
+		template <typename T2  Melder_ENABLE_IF_ISA(T2,T)>
+			MelderCallback (void (*f) (T2*, Args...)) : _f (reinterpret_cast<FunctionType> (f)) { };
+		void operator () (T* data, Args ... args) { _f (data, args...); }
+		explicit operator bool () const { return !! _f; }
+	private:
+		FunctionType _f;
+};
+template <typename T, typename... Args>
+class MelderCallback <int, T, Args...> {   // specialization
+	public:
+		typedef int (*FunctionType) (T*, Args...);
+		MelderCallback (FunctionType f = nullptr) : _f (f) { }
+		template <typename T2  Melder_ENABLE_IF_ISA(T2,T)>
+			MelderCallback (int (*f) (T2*, Args...)) : _f (reinterpret_cast<FunctionType> (f)) { };
+		int operator () (T* data, Args ... args) { return _f (data, args...); }
+		explicit operator bool () const { return !! _f; }
+	private:
+		FunctionType _f;
+};
+
+template <typename T>
+class MelderCompareHook {
+	public:
+		typedef int (*FunctionType) (T*, T*);
+		MelderCompareHook (FunctionType f = nullptr) : _f (f) { }
+		template <typename T2  Melder_ENABLE_IF_ISA(T2,T)>
+			MelderCompareHook (int (*f) (T2*, T2*)) : _f (reinterpret_cast<FunctionType> (f)) { };
+		int operator () (T* data1, T* data2) noexcept { return _f (data1, data2); }
+		explicit operator bool () const { return !! _f; }
+		FunctionType get () { return _f; }
+	private:
+		FunctionType _f;
+};
+
 /* End of file melder.h */
 #endif
diff --git a/sys/melder_alloc.cpp b/sys/melder_alloc.cpp
index ada5001..fb9ae52 100644
--- a/sys/melder_alloc.cpp
+++ b/sys/melder_alloc.cpp
@@ -2,32 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2006/12/10 separated from melder.c
- * pb 2007/05/24 wcsdup, wcsToAscii, asciiToWcs
- * pb 2007/08/14 underscores for names _Melder_malloc and _Melder_calloc
- * pb 2007/12/05 Melder_wcsequ_firstCharacterCaseInsensitive
- * pb 2009/03/14 counting reallocs moving and in situ
- * pb 2009/07/31 tracing by Melder_debug 34
- * pb 2010/12/28 split into _e and _f versions, and created a rainy-day fund
- * pb 2011/04/05 C++
- * pb 2014/12/17 made everything int64_t
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -55,11 +41,11 @@ static int64 totalNumberOfAllocations = 0, totalNumberOfDeallocations = 0, total
  */
 
 #define theRainyDayFund_SIZE  3000000
-static char *theRainyDayFund = NULL;
+static char *theRainyDayFund = nullptr;
 
-void Melder_alloc_init (void) {
+void Melder_alloc_init () {
 	theRainyDayFund = (char *) malloc (theRainyDayFund_SIZE);   // called at application initialization, so cannot fail
-	assert (theRainyDayFund != NULL);
+	assert (theRainyDayFund);
 }
 
 void * _Melder_malloc (int64 size) {
@@ -68,7 +54,7 @@ void * _Melder_malloc (int64 size) {
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_throw (U"Can never allocate ", Melder_bigInteger (size), U" bytes. Use a 64-bit edition of Praat instead?");
 	void *result = malloc ((size_t) size);   // guarded cast
-	if (result == NULL)
+	if (! result)
 		Melder_throw (U"Out of memory: there is not enough room for another ", Melder_bigInteger (size), U" bytes.");
 	if (Melder_debug == 34) { Melder_casual (U"Melder_malloc\t", Melder_pointer (result), U"\t", Melder_bigInteger (size), U"\t1"); }
 	totalNumberOfAllocations += 1;
@@ -82,10 +68,10 @@ void * _Melder_malloc_f (int64 size) {
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_fatal (U"(Melder_malloc_f:) Can never allocate ", Melder_bigInteger (size), U" bytes.");
 	void *result = malloc ((size_t) size);
-	if (result == NULL) {
-		if (theRainyDayFund != NULL) { free (theRainyDayFund); theRainyDayFund = NULL; }
+	if (! result) {
+		if (theRainyDayFund) { free (theRainyDayFund); theRainyDayFund = nullptr; }
 		result = malloc ((size_t) size);
-		if (result != NULL) {
+		if (result) {
 			Melder_flushError (U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 		} else {
 			Melder_fatal (U"Out of memory: there is not enough room for another %s bytes.", Melder_bigInteger (size));
@@ -97,10 +83,10 @@ void * _Melder_malloc_f (int64 size) {
 }
 
 void _Melder_free (void **ptr) {
-	if (*ptr == NULL) return;
+	if (! *ptr) return;
 	if (Melder_debug == 34) { Melder_casual (U"Melder_free\t", Melder_pointer (*ptr), U"\t?\t?"); }
 	free (*ptr);
-	*ptr = NULL;
+	*ptr = nullptr;
 	totalNumberOfDeallocations += 1;
 }
 
@@ -110,9 +96,9 @@ void * Melder_realloc (void *ptr, int64 size) {
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_throw (U"Can never allocate ", Melder_bigInteger (size), U" bytes. Use a 64-bit edition of Praat instead?");
 	void *result = realloc (ptr, (size_t) size);   // will not show in the statistics...
-	if (result == NULL)
+	if (result == nullptr)
 		Melder_throw (U"Out of memory. Could not extend room to ", Melder_bigInteger (size), U" bytes.");
-	if (ptr == NULL) {   // is it like malloc?
+	if (! ptr) {   // is it like malloc?
 		if (Melder_debug == 34) { Melder_casual (U"Melder_realloc\t", Melder_pointer (result), U"\t", Melder_bigInteger (size), U"\t1"); }
 		totalNumberOfAllocations += 1;
 		totalAllocationSize += size;
@@ -134,16 +120,16 @@ void * Melder_realloc_f (void *ptr, int64 size) {
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_fatal (U"(Melder_realloc_f:) Can never allocate ", Melder_bigInteger (size), U" bytes.");
 	result = realloc (ptr, (size_t) size);   // will not show in the statistics...
-	if (result == NULL) {
-		if (theRainyDayFund != NULL) { free (theRainyDayFund); theRainyDayFund = NULL; }
+	if (! result) {
+		if (theRainyDayFund) { free (theRainyDayFund); theRainyDayFund = nullptr; }
 		result = realloc (ptr, (size_t) size);
-		if (result != NULL) {
+		if (result) {
 			Melder_flushError (U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 		} else {
 			Melder_fatal (U"Out of memory. Could not extend room to ", Melder_bigInteger (size), U" bytes.");
 		}
 	}
-	if (ptr == NULL) {   // is it like malloc?
+	if (! ptr) {   // is it like malloc?
 		totalNumberOfAllocations += 1;
 		totalAllocationSize += size;
 	} else if (result != ptr) {   // did realloc do a malloc-and-free?
@@ -164,9 +150,9 @@ void * _Melder_calloc (int64 nelem, int64 elsize) {
 		Melder_throw (U"Can never allocate elements whose size is ", Melder_bigInteger (elsize), U" bytes.");
 	if ((uint64_t) nelem > SIZE_MAX / (uint64_t) elsize)   // guarded casts to unsigned
 		Melder_throw (U"Can never allocate ", Melder_bigInteger (nelem), U" elements whose sizes are ", Melder_bigInteger (elsize), U" bytes each.",
-			sizeof (size_t) < 8 ? U" Use a 64-bit edition of Praat instead?" : NULL);
+			sizeof (size_t) < 8 ? U" Use a 64-bit edition of Praat instead?" : nullptr);
 	void *result = calloc ((size_t) nelem, (size_t) elsize);
-	if (result == NULL)
+	if (! result)
 		Melder_throw (U"Out of memory: there is not enough room for ", Melder_bigInteger (nelem), U" more elements whose sizes are ", elsize, U" bytes each.");
 	if (Melder_debug == 34) { Melder_casual (U"Melder_calloc\t", Melder_pointer (result), U"\t", Melder_bigInteger (nelem), U"\t", Melder_bigInteger (elsize)); }
 	totalNumberOfAllocations += 1;
@@ -182,10 +168,10 @@ void * _Melder_calloc_f (int64 nelem, int64 elsize) {
 	if ((uint64_t) nelem > SIZE_MAX / (uint64_t) elsize)
 		Melder_fatal (U"(Melder_calloc_f:) Can never allocate ", Melder_bigInteger (nelem), U" elements whose sizes are ", Melder_bigInteger (elsize), U" bytes each.");
 	void *result = calloc ((size_t) nelem, (size_t) elsize);
-	if (result == NULL) {
-		if (theRainyDayFund != NULL) { free (theRainyDayFund); theRainyDayFund = NULL; }
+	if (! result) {
+		if (theRainyDayFund) { free (theRainyDayFund); theRainyDayFund = nullptr; }
 		result = calloc ((size_t) nelem, (size_t) elsize);
-		if (result != NULL) {
+		if (result) {
 			Melder_flushError (U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 		} else {
 			Melder_fatal (U"Out of memory: there is not enough room for ", Melder_bigInteger (nelem),
@@ -198,12 +184,12 @@ void * _Melder_calloc_f (int64 nelem, int64 elsize) {
 }
 
 char * Melder_strdup (const char *string) {
-	if (! string) return NULL;
+	if (! string) return nullptr;
 	int64 size = (int64) strlen (string) + 1;
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_throw (U"Can never allocate ", Melder_bigInteger (size), U" bytes. Use a 64-bit edition of Praat instead?");
 	char *result = (char *) malloc ((size_t) size);
-	if (result == NULL)
+	if (! result)
 		Melder_throw (U"Out of memory: there is not enough room to duplicate a text of ", Melder_bigInteger (size - 1), U" characters.");
 	strcpy (result, string);
 	if (Melder_debug == 34) { Melder_casual (U"Melder_strdup\t", Melder_pointer (result), U"\t", Melder_bigInteger (size), U"\t1"); }
@@ -213,15 +199,15 @@ char * Melder_strdup (const char *string) {
 }
 
 char * Melder_strdup_f (const char *string) {
-	if (! string) return NULL;
+	if (! string) return nullptr;
 	int64 size = (int64) strlen (string) + 1;
 	if (sizeof (size_t) < 8 && size > SIZE_MAX)
 		Melder_fatal (U"(Melder_strdup_f:) Can never allocate ", Melder_bigInteger (size), U" bytes.");
 	char *result = (char *) malloc ((size_t) size);
-	if (result == NULL) {
-		if (theRainyDayFund != NULL) { free (theRainyDayFund); theRainyDayFund = NULL; }
+	if (! result) {
+		if (theRainyDayFund) { free (theRainyDayFund); theRainyDayFund = nullptr; }
 		result = (char *) malloc ((size_t) size * sizeof (char));
-		if (result != NULL) {
+		if (result) {
 			Melder_flushError (U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 		} else {
 			Melder_fatal (U"Out of memory: there is not enough room to duplicate a text of ", Melder_bigInteger (size - 1), U" characters.");
@@ -234,12 +220,12 @@ char * Melder_strdup_f (const char *string) {
 }
 
 char32 * Melder_dup (const char32 *string /* cattable */) {
-	if (! string) return NULL;
+	if (! string) return nullptr;
 	int64 size = (int64) str32len (string) + 1;   // guaranteed to be positive
 	if (sizeof (size_t) < 8 && size > SIZE_MAX / sizeof (char32))
 		Melder_throw (U"Can never allocate ", Melder_bigInteger (size), U" characters. Use a 64-bit edition of Praat instead?");
 	char32 *result = (char32 *) malloc ((size_t) size * sizeof (char32));   // guarded conversion
-	if (result == NULL)
+	if (! result)
 		Melder_throw (U"Out of memory: there is not enough room to duplicate a text of ", Melder_bigInteger (size - 1), U" characters.");
 	str32cpy (result, string);
 	if (Melder_debug == 34) { Melder_casual (U"Melder_dup\t", Melder_pointer (result), U"\t", Melder_bigInteger (size), U"\t4"); }
@@ -249,15 +235,15 @@ char32 * Melder_dup (const char32 *string /* cattable */) {
 }
 
 char32 * Melder_dup_f (const char32 *string /* cattable */) {
-	if (! string) return NULL;
+	if (! string) return nullptr;
 	int64 size = (int64) str32len (string) + 1;
 	if (sizeof (size_t) < 8 && size > SIZE_MAX / sizeof (char32))
 		Melder_fatal (U"(Melder_dup_f:) Can never allocate ", Melder_bigInteger (size), U" characters.");
 	char32 *result = (char32 *) malloc ((size_t) size * sizeof (char32));
-	if (result == NULL) {
-		if (theRainyDayFund != NULL) { free (theRainyDayFund); theRainyDayFund = NULL; }
+	if (! result) {
+		if (theRainyDayFund) { free (theRainyDayFund); theRainyDayFund = nullptr; }
 		result = (char32 *) malloc ((size_t) size * sizeof (char32));
-		if (result != NULL) {
+		if (result) {
 			Melder_flushError (U"Praat is very low on memory.\nSave your work and quit Praat.\nIf you don't do that, Praat may crash.");
 		} else {
 			Melder_fatal (U"Out of memory: there is not enough room to duplicate a text of ", Melder_bigInteger (size - 1), U" characters.");
@@ -269,41 +255,41 @@ char32 * Melder_dup_f (const char32 *string /* cattable */) {
 	return result;
 }
 
-int64 Melder_allocationCount (void) {
+int64 Melder_allocationCount () {
 	return totalNumberOfAllocations;
 }
 
-int64 Melder_deallocationCount (void) {
+int64 Melder_deallocationCount () {
 	return totalNumberOfDeallocations;
 }
 
-int64 Melder_allocationSize (void) {
+int64 Melder_allocationSize () {
 	return totalAllocationSize;
 }
 
-int64 Melder_reallocationsInSituCount (void) {
+int64 Melder_reallocationsInSituCount () {
 	return totalNumberOfReallocsInSitu;
 }
 
-int64 Melder_movingReallocationsCount (void) {
+int64 Melder_movingReallocationsCount () {
 	return totalNumberOfMovingReallocs;
 }
 
 int Melder_cmp (const char32 *string1, const char32 *string2) {
-	if (string1 == NULL) string1 = U"";
-	if (string2 == NULL) string2 = U"";
+	if (! string1) string1 = U"";
+	if (! string2) string2 = U"";
 	return str32cmp (string1, string2);
 }
 
-int Melder_ncmp (const char32 *string1, const char32 *string2, int64_t n) {
-	if (string1 == NULL) string1 = U"";
-	if (string2 == NULL) string2 = U"";
+int Melder_ncmp (const char32 *string1, const char32 *string2, int64 n) {
+	if (! string1) string1 = U"";
+	if (! string2) string2 = U"";
 	return str32ncmp (string1, string2, n);
 }
 
 bool Melder_str32equ_firstCharacterCaseInsensitive (const char32 *string1, const char32 *string2) {
-	if (string1 == NULL) string1 = U"";
-	if (string2 == NULL) string2 = U"";
+	if (! string1) string1 = U"";
+	if (! string2) string2 = U"";
 	if (*string1 == U'\0') return *string2 == U'\0';
 	if (*string1 == *string2)
 		return ! str32cmp (string1 + 1, string2 + 1);
@@ -323,8 +309,8 @@ char32 * Melder_tok (char32 *string, const char32 *delimiter) {
 	char32 *tok;
 	static char32 *last;
 
-	if (string == NULL && (string = last) == NULL)
-		return (NULL);
+	if (! string && (string = last) == nullptr)
+		return nullptr;
 
 cont:
 	c = * string ++;
@@ -334,8 +320,8 @@ cont:
 	}
 
 	if (c == U'\0') {
-		last = NULL;
-		return NULL;
+		last = nullptr;
+		return nullptr;
 	}
 	tok = string - 1;
 	for (;;) {
@@ -344,7 +330,7 @@ cont:
 		do {
 			if ((sc = * spanp ++) == c) {
 				if (c == U'\0')
-					string = NULL;
+					string = nullptr;
 				else
 					string [-1] = U'\0';
 				last = string;
diff --git a/sys/melder_atof.cpp b/sys/melder_atof.cpp
index ce0a41f..0456702 100644
--- a/sys/melder_atof.cpp
+++ b/sys/melder_atof.cpp
@@ -2,27 +2,18 @@
  *
  * Copyright (C) 2003-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2003/05/19 Melder_atof
- * pb 2006/04/16 moved Melder_atof from melder.c
- * pb 2006/04/16 moved Melder_isStringNumeric from Table.c
- * pb 2006/12/08 guard against null strings
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -43,7 +34,7 @@ static const char32 *findEndOfNumericString_nothrow (const char32 *string) {
 	 * The next character must be a decimal digit.
 	 * So we don't allow things like ".5".
 	 */
-	if (*p < '0' || *p > '9') return NULL;   // string is not numeric
+	if (*p < '0' || *p > '9') return nullptr;   // string is not numeric
 	p ++;
 	/*
 	 * Then we accept any number of decimal digits.
@@ -72,7 +63,7 @@ static const char32 *findEndOfNumericString_nothrow (const char32 *string) {
 		 * The exponent must contain a decimal digit.
 		 * So we don't allow things like "+2.1E".
 		 */
-		if (*p < '0' || *p > '9') return NULL;   // string is not numeric
+		if (*p < '0' || *p > '9') return nullptr;   // string is not numeric
 		p ++;
 		/*
 		 * Then we accept any number of decimal digits.
@@ -104,7 +95,7 @@ static const char *findEndOfNumericString_nothrow (const char *string) {
 	 * The next character must be a decimal digit.
 	 * So we don't allow things like ".5".
 	 */
-	if (*p < '0' || *p > '9') return NULL;   // string is not numeric
+	if (*p < '0' || *p > '9') return nullptr;   // string is not numeric
 	p ++;
 	/*
 	 * Then we accept any number of decimal digits.
@@ -133,7 +124,7 @@ static const char *findEndOfNumericString_nothrow (const char *string) {
 		 * The exponent must contain a decimal digit.
 		 * So we don't allow things like "+2.1E".
 		 */
-		if (*p < '0' || *p > '9') return NULL;   // string is not numeric
+		if (*p < '0' || *p > '9') return nullptr;   // string is not numeric
 		p ++;
 		/*
 		 * Then we accept any number of decimal digits.
@@ -151,23 +142,23 @@ static const char *findEndOfNumericString_nothrow (const char *string) {
 }
 
 bool Melder_isStringNumeric_nothrow (const char32 *string) {
-	if (string == NULL) return false;
+	if (! string) return false;
 	const char32 *p = findEndOfNumericString_nothrow (string);
-	if (p == NULL) return FALSE;
+	if (! p) return false;
 	/*
 	 * We accept only white space after the numeric string.
 	 */
-	while (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r')
+	while (*p == U' ' || *p == U'\t' || *p == U'\n' || *p == U'\r')
 		p ++;
-	return *p == '\0';
+	return *p == U'\0';
 }
 
 double Melder_a8tof (const char *string) {
-	if (string == NULL) return NUMundefined;
+	if (! string) return NUMundefined;
 	const char *p = findEndOfNumericString_nothrow (string);
-	if (p == NULL) return NUMundefined;
+	if (! p) return NUMundefined;
 	Melder_assert (p - string > 0);
-	return p [-1] == '%' ? 0.01 * strtod (string, NULL) : strtod (string, NULL);
+	return p [-1] == '%' ? 0.01 * strtod (string, nullptr) : strtod (string, nullptr);
 }
 
 double Melder_atof (const char32 *string) {
@@ -175,7 +166,7 @@ double Melder_atof (const char32 *string) {
 }
 
 int64 Melder_atoi (const char32 *string) {
-	return strtoll (Melder_peek32to8 (string), NULL, 10);
+	return strtoll (Melder_peek32to8 (string), nullptr, 10);
 }
 
 /* End of file melder_atof.cpp */
diff --git a/sys/melder_audio.cpp b/sys/melder_audio.cpp
index 4e95454..12a5139 100644
--- a/sys/melder_audio.cpp
+++ b/sys/melder_audio.cpp
@@ -1,46 +1,19 @@
 /* melder_audio.cpp
  *
- * Copyright (C) 1992-2011,2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2012,2013,2014,2015,2016 Paul Boersma, David Weenink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2003/08/22 used getenv ("AUDIODEV") on Sun (thanks to Michel Scheffers)
- * pb 2003/10/22 fake mono for Linux drivers that do not support mono
- * pb 2003/12/06 use sys/soundcard.h instead of linux/soundcard.h for FreeBSD compatibility
- * pb 2004/05/07 removed motif_mac_setNullEventWaitingTime (we nowadays use 1 clock tick everywhere anyway)
- * pb 2004/08/10 fake mono for Linux drivers etc, also if not asynchronous
- * pb 2005/02/13 added O_NDELAY when opening /dev/dsp on Linux (suggestion by Rafael Laboissiere)
- * pb 2005/03/31 undid previous change (four complaints that sound stopped playing)
- * pb 2005/05/19 redid previous change (with fctrl fix suggested by Rafael Laboissiere)
- * pb 2005/10/13 edition for OpenBSD
- * pb 2006/10/28 erased MacOS 9 stuff
- * pb 2006/12/16 Macintosh uses CoreAudio (via PortAudio)
- * pb 2007/01/03 best sample rate can be over 64 kHz
- * pb 2007/05/13 null pointer test for deviceInfo (thanks to Stefan de Konink)
- * pb 2007/08/12 wchar
- * Stefan de Konink 2007/12/02 big-endian Linux
- * pb 2007/12/04 enums
- * pb 2008/06/01 removed SPEXLAB audio server
- * pb 2008/06/10 made PortAudio and foreground playing optional
- * pb 2008/07/03 DirectSound
- * pb 2010/05/09 GTK
- * pb 2011/02/11 better message
- * pb 2011/04/05 C++
- * pb 2015/06/08 char32
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #if defined (macintosh)
@@ -57,6 +30,9 @@
 	#include <sys/ioctl.h>
 	#include <fcntl.h>
 	#include <unistd.h>
+	#if defined HAVE_PULSEAUDIO
+		#include <pulse/pulseaudio.h>
+	#endif
 	#if defined (__OpenBSD__) || defined (__NetBSD__)
 		#include <soundcard.h>
 	#else
@@ -65,64 +41,84 @@
 	#include <errno.h>
 #endif
 
-#include "melder.h"
 #include "Gui.h"
 #include "Preferences.h"
 #include "NUM.h"
 #include <time.h>
-#define my  me ->
+#define my me ->
 
 #include "../external/portaudio/portaudio.h"
 
+#ifdef HAVE_PULSEAUDIO
+	void pulseAudio_initialize ();
+	void pulseAudio_cleanup ();
+	void pulseAudio_serverReport ();
+	void stream_state_cb (pa_stream *stream, void *userdata);
+	void stream_drain_complete_cb (pa_stream *stream, int success, void *userdata);
+	void context_state_cb (pa_context *context, void *userdata);
+	void context_drain_complete_cb (pa_context *context, void *userdata);
+	void stream_write_cb (pa_stream *stream, size_t length, void *userdata);
+	void stream_write_cb2 (pa_stream *stream, size_t length, void *userdata);
+	void pulseAudio_server_info_cb (pa_context *context, const pa_server_info *info, void *userdata);
+#endif
+
 static struct {
 	enum kMelder_asynchronicityLevel maximumAsynchronicity;
-	bool useInternalSpeaker, inputUsesPortAudio, outputUsesPortAudio;
+	enum kMelder_inputSoundSystem inputSoundSystem;
+	enum kMelder_outputSoundSystem outputSoundSystem;
+	bool useInternalSpeaker;
 	double silenceBefore, silenceAfter;
 } preferences;
 
-void Melder_audio_prefs (void) {
+void Melder_audio_prefs () {
 	Preferences_addEnum (U"Audio.maximumAsynchronicity", & preferences. maximumAsynchronicity, kMelder_asynchronicityLevel, kMelder_asynchronicityLevel_DEFAULT);
+	Preferences_addEnum (U"Audio.inputSoundSystem", & preferences. inputSoundSystem, kMelder_inputSoundSystem, kMelder_inputSoundSystem_DEFAULT);
+	Preferences_addEnum (U"Audio.outputSoundSystem", & preferences. outputSoundSystem, kMelder_outputSoundSystem, kMelder_outputSoundSystem_DEFAULT);
 	Preferences_addBool (U"Audio.useInternalSpeaker", & preferences. useInternalSpeaker, true);
-	Preferences_addBool (U"Audio.outputUsesPortAudio2", & preferences. outputUsesPortAudio, kMelderAudio_outputUsesPortAudio_DEFAULT);
-	Preferences_addDouble (U"Audio.silenceBefore", & preferences. silenceBefore, kMelderAudio_outputSilenceBefore_DEFAULT);
-	Preferences_addDouble (U"Audio.silenceAfter", & preferences. silenceAfter, kMelderAudio_outputSilenceAfter_DEFAULT);
-	Preferences_addBool (U"Audio.inputUsesPortAudio2", & preferences. inputUsesPortAudio, kMelderAudio_inputUsesPortAudio_DEFAULT);
+	Preferences_addDouble (U"Audio.silenceBefore2", & preferences. silenceBefore, kMelderAudio_outputSilenceBefore_DEFAULT);
+	Preferences_addDouble (U"Audio.silenceAfter2", & preferences. silenceAfter, kMelderAudio_outputSilenceAfter_DEFAULT);
 }
 
 void MelderAudio_setOutputMaximumAsynchronicity (enum kMelder_asynchronicityLevel maximumAsynchronicity) {
 	//MelderAudio_stopPlaying (MelderAudio_IMPLICIT);   // BUG
 	preferences. maximumAsynchronicity = maximumAsynchronicity;
 }
-enum kMelder_asynchronicityLevel MelderAudio_getOutputMaximumAsynchronicity (void) { return preferences. maximumAsynchronicity; }
+enum kMelder_asynchronicityLevel MelderAudio_getOutputMaximumAsynchronicity () {
+	return preferences. maximumAsynchronicity;
+}
 
-void MelderAudio_setInputUsesPortAudio (bool inputUsesPortAudio) {
-	preferences. inputUsesPortAudio = inputUsesPortAudio;
+void MelderAudio_setInputSoundSystem (enum kMelder_inputSoundSystem inputSoundSystem) {
+	preferences. inputSoundSystem = inputSoundSystem;
+}
+enum kMelder_inputSoundSystem MelderAudio_getInputSoundSystem () {
+	return preferences. inputSoundSystem;
 }
-bool MelderAudio_getInputUsesPortAudio (void) { return preferences. inputUsesPortAudio; }
 
-void MelderAudio_setOutputUsesPortAudio (bool outputUsesPortAudio) {
+void MelderAudio_setOutputSoundSystem (enum kMelder_outputSoundSystem outputSoundSystem) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
-	preferences. outputUsesPortAudio = outputUsesPortAudio;
+	preferences. outputSoundSystem = outputSoundSystem;
+}
+enum kMelder_outputSoundSystem MelderAudio_getOutputSoundSystem () {
+	return preferences. outputSoundSystem;
 }
-bool MelderAudio_getOutputUsesPortAudio (void) { return preferences. outputUsesPortAudio; }
 
 void MelderAudio_setUseInternalSpeaker (bool useInternalSpeaker) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	preferences. useInternalSpeaker = useInternalSpeaker;
 }
-bool MelderAudio_getUseInternalSpeaker (void) { return preferences. useInternalSpeaker; }
+bool MelderAudio_getUseInternalSpeaker () { return preferences. useInternalSpeaker; }
 
 void MelderAudio_setOutputSilenceBefore (double silenceBefore) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	preferences. silenceBefore = silenceBefore;
 }
-double MelderAudio_getOutputSilenceBefore (void) { return preferences. silenceBefore; }
+double MelderAudio_getOutputSilenceBefore () { return preferences. silenceBefore; }
 
 void MelderAudio_setOutputSilenceAfter (double silenceAfter) {
 	MelderAudio_stopPlaying (MelderAudio_IMPLICIT);
 	preferences. silenceAfter = silenceAfter;
 }
-double MelderAudio_getOutputSilenceAfter (void) { return preferences. silenceAfter; }
+double MelderAudio_getOutputSilenceAfter () { return preferences. silenceAfter; }
 
 long MelderAudio_getOutputBestSampleRate (long fsamp) {
 	#if defined (macintosh)
@@ -141,6 +137,37 @@ bool MelderAudio_isPlaying;
 
 static double theStartingTime = 0.0;
 
+#define PA_GETTINGINFO 1
+#define PA_GETTINGINFO_DONE 2
+#define PA_WRITING 4
+#define PA_WRITING_DONE 8
+#define PA_RECORDING 16
+#define PA_RECORDING_DONE 32
+
+#ifdef HAVE_PULSEAUDIO
+typedef struct pulseAudio {
+	pa_sample_spec sample_spec;
+	pa_threaded_mainloop *mainloop = nullptr;
+	pa_mainloop_api *mainloop_api = nullptr;
+	pa_context *context = nullptr;
+	pa_stream *stream = nullptr;
+	pa_operation *operation_drain = nullptr;
+	pa_operation *operation_info = nullptr;
+	pa_stream_flags_t stream_flags;
+	const pa_timing_info *timing_info = nullptr;
+	struct timeval startTime = {0, 0};
+	pa_usec_t timer_event_usec = 50000; // 50 ms
+	pa_time_event *timer_event = nullptr;
+	const pa_channel_map *channel_map = nullptr;
+	pa_usec_t r_usec;
+	pa_buffer_attr buffer_attr;
+	uint32_t latency = 0; // in bytes of buffer
+	int32_t latency_msec = 20;
+	bool pulseAudioInitialized = false;
+	unsigned int occupation = PA_WRITING;
+} pulseAudioStruct;
+#endif
+
 static struct MelderPlay {
 	int16_t *buffer;
 	long sampleRate, numberOfSamples, samplesLeft, samplesSent, samplesPlayed;
@@ -155,9 +182,9 @@ static struct MelderPlay {
 	#elif motif
 		XtWorkProcId workProcId_motif;
 	#elif gtk
-		gint workProcId_gtk;
+		gint workProcId_gtk = 0;
 	#endif
-	bool usePortAudio, supports_paComplete;
+	bool usePortAudio, supports_paComplete, usePulseAudio;
 	PaStream *stream;
 	double paStartingTime;
 	#if defined (macintosh)
@@ -168,13 +195,16 @@ static struct MelderPlay {
 		WAVEHDR waveHeader;
 		MMRESULT status;
 	#endif
+	#ifdef HAVE_PULSEAUDIO
+		pulseAudioStruct pulseAudio;
+	#endif
 } thePlay;
 
-long MelderAudio_getSamplesPlayed (void) {
+long MelderAudio_getSamplesPlayed () {
 	return thePlay. samplesPlayed;
 }
 
-bool MelderAudio_stopWasExplicit (void) {
+bool MelderAudio_stopWasExplicit () {
 	return thePlay. explicitStop;
 }
 
@@ -185,10 +215,10 @@ bool MelderAudio_stopWasExplicit (void) {
  * 3. After asynchronous play, by the workProc.
  * 4. After interruption of asynchronicity 3 by MelderAudio_stopPlaying ().
  */
-static bool flush (void) {
+static bool flush () {
 	struct MelderPlay *me = & thePlay;
 	if (my usePortAudio) {
-		if (my stream != NULL) {
+		if (my stream) {
 			#ifdef linux
 
 				Pa_Sleep (200);   // this reduces the chance of seeing the Alsa/PulseAudio deadlock:
@@ -279,11 +309,32 @@ static bool flush (void) {
 				*/
 			#endif
 			Pa_CloseStream (my stream);
-			my stream = NULL;
+			my stream = nullptr;
+		}
+	#ifdef HAVE_PULSEAUDIO
+	} else if (my usePulseAudio) {
+		if (my pulseAudio.mainloop) {
+			pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+			if (my pulseAudio.stream) {
+				pa_operation *operation = pa_stream_flush (my pulseAudio.stream, stream_drain_complete_cb, me);
+				// wait because of a threaded_mainloop
+				if (operation) {
+					while (MelderAudio_isPlaying) {
+						pa_threaded_mainloop_wait (my pulseAudio.mainloop);
+						trace (U"wait");
+					}
+					pa_operation_unref (operation);
+				}
+			}
+			MelderAudio_isPlaying = false;
+			pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+			pulseAudio_cleanup ();
 		}
+	#endif
 	} else {
 	#if defined (macintosh)
 	#elif defined (linux)
+		
 		/*
 		 * As on Sun.
 		 */
@@ -309,7 +360,7 @@ static bool flush (void) {
 	}
 	if (my fakeMono) {
 		NUMvector_free ((short *) my buffer, 0);
-		my buffer = NULL;
+		my buffer = nullptr;
 	}
 	MelderAudio_isPlaying = false;
 	if (my samplesPlayed >= my numberOfSamples)
@@ -332,13 +383,17 @@ bool MelderAudio_stopPlaying (bool explicitStop) {
 	//Melder_casual (U"stop playing!");
 	struct MelderPlay *me = & thePlay;
 	my explicitStop = explicitStop;
+	trace (U"playing = ", MelderAudio_isPlaying);
 	if (! MelderAudio_isPlaying || my asynchronicity < kMelder_asynchronicityLevel_ASYNCHRONOUS) return false;
 	#if cocoa
 		CFRunLoopRemoveTimer (CFRunLoopGetCurrent (), thePlay. cocoaTimer, kCFRunLoopCommonModes);
 	#elif motif
 		XtRemoveWorkProc (thePlay. workProcId_motif);
 	#elif gtk
-		g_source_remove (thePlay. workProcId_gtk);
+		if (thePlay.workProcId_gtk && ! my usePulseAudio) {
+			g_source_remove (thePlay.workProcId_gtk);
+		}
+		thePlay.workProcId_gtk = 0;
 	#endif
 	(void) flush ();
 	return true;
@@ -396,6 +451,27 @@ static bool workProc (void *closure) {
 			}
 			Pa_Sleep (10);
 		#endif
+	#ifdef HAVE_PULSEAUDIO
+	} else if (my usePulseAudio) {
+		if (my pulseAudio.mainloop) {
+			pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+			long samplesPlayed = 0;
+			pa_usec_t diff_usec = 0;
+			if (my pulseAudio.startTime.tv_usec != 0) {
+				diff_usec = pa_timeval_age (& my pulseAudio.startTime);
+				double timeElapsed = diff_usec / 1000000.0;
+				samplesPlayed = timeElapsed * my sampleRate;
+			}
+			pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+			trace (U"diff = ", diff_usec, U", samples played = ", samplesPlayed);
+			if (my callback && ! my callback (my closure, samplesPlayed)) {
+				my volatile_interrupted = 1;
+				return flush ();
+			} else if (my samplesLeft == 0 || samplesPlayed > my numberOfSamples) {
+				return flush ();
+			}
+		}
+	#endif
 	} else {
 	#if defined (macintosh)
 	#elif defined (linux)
@@ -487,7 +563,7 @@ static int thePaStreamCallback (const void *input, void *output,
 		long dsamples = my samplesLeft > (long) frameCount ? (long) frameCount : my samplesLeft;
 		if (Melder_debug == 20) Melder_casual (U"play ", dsamples, U" ", Pa_GetStreamCpuLoad (my stream));
 		memset (output, '\0', 2 * frameCount * my numberOfChannels);
-		Melder_assert (my buffer != NULL);
+		Melder_assert (my buffer);
 		memcpy (output, (char *) & my buffer [my samplesSent * my numberOfChannels], 2 * dsamples * my numberOfChannels);
 		my samplesLeft -= dsamples;
 		my samplesSent += dsamples;
@@ -501,6 +577,416 @@ static int thePaStreamCallback (const void *input, void *output,
 	return paContinue;
 }
 
+#ifdef HAVE_PULSEAUDIO
+void pulseAudio_initialize () {
+	struct MelderPlay *me = & thePlay;
+	if (! my pulseAudio.pulseAudioInitialized) {
+		my pulseAudio.mainloop = pa_threaded_mainloop_new ();
+		if (! my pulseAudio.mainloop) {
+			MelderAudio_isPlaying = false;
+			Melder_throw (U"No connection to pulse audio server.");
+		}
+		pa_threaded_mainloop_start (my pulseAudio.mainloop);
+		pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+		my pulseAudio.mainloop_api = pa_threaded_mainloop_get_api (my pulseAudio.mainloop);
+		my pulseAudio.context = pa_context_new (my pulseAudio.mainloop_api, "praat");
+		pa_context_set_state_callback (my pulseAudio.context, context_state_cb, me);
+		pa_context_connect (my pulseAudio.context, nullptr, PA_CONTEXT_NOFLAGS, nullptr);
+		trace (U"threading");
+		my pulseAudio.pulseAudioInitialized = true;
+		pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+	}
+}
+
+void pulseAudio_cleanup () {
+	struct MelderPlay *me = & thePlay;
+
+	pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+	trace (U"mainloop to be freed, occupation was ", my pulseAudio.occupation);
+
+	if (my pulseAudio.context) {
+		trace (U"still context");
+		pa_context_unref (my pulseAudio.context);
+		my pulseAudio.context = nullptr;
+	}
+	if (my pulseAudio.timer_event) {
+		my pulseAudio.mainloop_api -> time_free (my pulseAudio.timer_event);
+		my pulseAudio.timer_event = nullptr;
+	}
+	pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+	pa_threaded_mainloop_free (my pulseAudio.mainloop); // automatically frees the mainloop_api too!
+	my pulseAudio.mainloop = nullptr;
+	my pulseAudio.mainloop_api = nullptr;
+	my pulseAudio.r_usec = 0;
+	MelderAudio_isPlaying = false;
+	my pulseAudio.occupation = 0;
+	my pulseAudio.startTime = {0, 0};
+	my pulseAudio.pulseAudioInitialized = false;
+}
+
+void pulseAudio_server_info_cb (pa_context *context, const pa_server_info *info, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+	if (! info) {
+		return;
+	}
+	const pa_sample_spec *sp = & (info -> sample_spec);
+	long numberOfChannels = sp -> channels;
+	Melder_assert (context == my pulseAudio.context);
+	MelderInfo_open ();
+	MelderInfo_writeLine (U"PulseAudio Server characteristics:");
+	MelderInfo_writeLine (U"User name: ", Melder_peek8to32 (info -> user_name));
+	MelderInfo_writeLine (U"Host name: ", Melder_peek8to32 (info -> host_name));
+	MelderInfo_writeLine (U"Server version: ", Melder_peek8to32 (info -> server_version));
+	MelderInfo_writeLine (U"Server name: ", Melder_peek8to32 (info -> server_name));
+	MelderInfo_writeLine (U"Sample specification: ");
+		MelderInfo_writeLine (U"\tNumber of channels: ", numberOfChannels);
+		MelderInfo_writeLine (U"\tSampling frequency: ", sp->rate);
+		const char *sample_format_string = pa_sample_format_to_string (sp -> format);
+		MelderInfo_writeLine (U"\tSample format: ", Melder_peek8to32 (sample_format_string));
+	MelderInfo_writeLine (U"Default sink name: ", Melder_peek8to32 (info -> default_sink_name));
+	MelderInfo_writeLine (U"Default source name: ", Melder_peek8to32 (info -> default_source_name));
+	const pa_channel_map *cm = &(info -> channel_map);
+	MelderInfo_writeLine (U"Channel specification: ");
+	for (long channel = 1; channel <= cm -> channels; channel++) {
+		const char *channel_text = pa_channel_position_to_pretty_string (cm -> map[channel - 1]); // 0-..
+		MelderInfo_writeLine (U"\t Channel ", channel, U": ", Melder_peek8to32 (channel_text));
+	}
+	MelderInfo_close ();
+	trace (U"before signal");
+	my pulseAudio.occupation |= PA_GETTINGINFO_DONE;
+	 // We are done, signal it to pulseAudio_serverReport
+	pa_threaded_mainloop_signal (my pulseAudio.mainloop, 0);
+}
+
+void pulseAudio_serverReport () {
+	// TODO: initiaize context
+	struct MelderPlay *me = & thePlay;
+	if (my pulseAudio.mainloop) {
+		pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+		my pulseAudio.occupation |= PA_GETTINGINFO;
+		if (my pulseAudio.context) {
+			pa_operation *operation = pa_context_get_server_info (my pulseAudio.context, pulseAudio_server_info_cb, me);
+			trace (U"operation started");
+			if (! operation) {
+				Melder_throw (U"pulseAudioServer report: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+			}
+			while ((my pulseAudio.occupation & PA_GETTINGINFO_DONE) != PA_GETTINGINFO_DONE) {
+				pa_threaded_mainloop_wait (my pulseAudio.mainloop);
+			}
+			// Now it is save to unref because the server info operation has completed
+			pa_operation_unref (operation);
+			my pulseAudio.occupation ^= ~PA_GETTINGINFO_DONE;
+		}
+		my pulseAudio.occupation ^= ~PA_GETTINGINFO;
+		pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+	} else {
+		my pulseAudio.occupation |= PA_GETTINGINFO;
+		pulseAudio_initialize ();
+		/*
+		 * First acquire a lock because the operation to get server info (in context_state_cb) may not have started yet.
+		 * We therefore use our own signaling and wait until information has been acquired.
+		 */
+		pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+
+		while ((my pulseAudio.occupation & PA_GETTINGINFO_DONE) != PA_GETTINGINFO_DONE) {
+			pa_threaded_mainloop_wait (my pulseAudio.mainloop);
+		}
+		// Now we know that the operation to get server info has succeeded!
+		pa_operation_unref (my pulseAudio.operation_info);
+		my pulseAudio.operation_info = nullptr;
+		my pulseAudio.occupation ^= ~PA_GETTINGINFO;
+		my pulseAudio.occupation ^= ~PA_GETTINGINFO_DONE;
+		pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+		if (! MelderAudio_isPlaying) {
+			my pulseAudio.occupation = 0;
+			trace (U"before cleanup");
+			pulseAudio_cleanup ();
+		}
+	}
+}
+
+void context_drain_complete_cb (pa_context *context, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+	Melder_assert (context == my pulseAudio.context);
+	if (context) {
+		trace (U"context exists");
+		pa_context_disconnect (my pulseAudio.context);
+		pa_context_unref (my pulseAudio.context);
+		my pulseAudio.context = nullptr;
+	}
+	trace (U"after context test");
+	pulseAudio_cleanup ();
+}
+
+void stream_drain_complete_cb (pa_stream *stream, int success, void *userdata) {
+	(void) stream;
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+	// Melder_assert (stream == my pulseAudio.stream); // not always true
+
+	trace (U"succes = ", success);
+	if (stream == my pulseAudio.stream) {
+		trace (U"stream exists");
+		pa_stream_disconnect (my pulseAudio.stream);
+		pa_stream_unref (my pulseAudio.stream);
+		my pulseAudio.stream = nullptr;
+		my pulseAudio.occupation ^= ~PA_WRITING;
+		my pulseAudio.occupation |= PA_WRITING_DONE;
+		MelderAudio_isPlaying = false;
+		if (my pulseAudio.timer_event) {
+			my pulseAudio.mainloop_api -> time_free (my pulseAudio.timer_event);
+			my pulseAudio.timer_event = nullptr;
+		}
+		pa_threaded_mainloop_signal (my pulseAudio.mainloop, 0);
+	} else {
+		trace (U"??");
+	}
+}
+
+static void free_cb(void * /* p */) { // to prevent copying of data
+}
+
+// asynchronous version
+void stream_write_cb2 (pa_stream *stream, size_t length, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+	if (stream == my pulseAudio.stream) {
+		//length = my pulseAudio.latency; // overrule length given by server
+		long writeSize_samples = length / (2 * my numberOfChannels);
+		my samplesLeft = my numberOfSamples - my samplesSent;
+		trace (U"length = ", length, U" left = ", my samplesLeft);
+		MelderAudio_isPlaying = true;
+		if (my samplesLeft == my numberOfSamples) {
+			pa_gettimeofday (& my pulseAudio.startTime);
+		}
+		if (my samplesLeft > 0) {
+			if (my volatile_interrupted) {
+				my samplesPlayed = my numberOfSamples;
+				my samplesLeft = 0;
+				flush ();
+			} else {
+				writeSize_samples = my samplesLeft < writeSize_samples ? my samplesLeft : writeSize_samples;
+				if (pa_stream_write (stream, my buffer + my samplesSent * my numberOfChannels, 2 * writeSize_samples * my numberOfChannels, free_cb, 0, PA_SEEK_RELATIVE) < 0) {
+					 Melder_throw (U"pa_stream_write() failed: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+				}
+				long samplesSent = writeSize_samples;
+				my samplesSent += samplesSent;
+				my samplesPlayed = my samplesSent; // not true: use timer info
+				trace (U"written ", samplesSent, U" (samples), total ", my samplesSent);
+				if (my samplesSent == my numberOfSamples) {
+					// my samplesLeft = 0; not here because still playing
+					trace (U"nothing left 1");
+					//pa_stream_set_write_callback(my pulseAudio.stream, nullptr, nullptr);
+					my pulseAudio.operation_drain = pa_stream_drain (my pulseAudio.stream, stream_drain_complete_cb, me);
+					if (! my pulseAudio.operation_drain) {
+						pa_stream_disconnect (my pulseAudio.stream);
+						pa_stream_unref (my pulseAudio.stream);
+						my pulseAudio.stream = nullptr;
+						trace (U"stream exists");
+						my pulseAudio.occupation ^= ~PA_WRITING;
+						my pulseAudio.occupation |= PA_WRITING_DONE;
+						pa_threaded_mainloop_signal (my pulseAudio.mainloop, 0);
+						if (my pulseAudio.timer_event) {
+							my pulseAudio.mainloop_api -> time_free (my pulseAudio.timer_event);
+							my pulseAudio.timer_event = nullptr;
+						}
+					}
+				}
+			}
+		} else {
+			trace (U"nothing left");
+		}
+	} else {
+		trace (U"stream?");
+	}
+}
+
+void stream_write_cb (pa_stream *stream, size_t length, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+	if (stream == my pulseAudio.stream) {
+		my samplesLeft = my numberOfSamples - my samplesSent;
+		trace (U"length = ", length, U", left = ", my samplesLeft);
+		if (my samplesLeft > 0) {
+			if (my samplesLeft == my numberOfSamples) {
+				pa_gettimeofday (& my pulseAudio.startTime);
+			}
+			if (my volatile_interrupted) {
+				my samplesPlayed = my numberOfSamples;
+				my samplesLeft = 0;
+				flush ();
+			} else {
+				int16_t *pa_buffer; // an internal pa buffer to minimize the number of memory transfers between client and server
+				size_t nbytes_left = my samplesLeft * my numberOfChannels * 2; // how many bytes do we still need to write ?
+				size_t nbytes = nbytes_left;
+				// returns the address of an internal buffer and the number of bytes that can maximally be written to it.
+				if (pa_stream_begin_write (stream, (void **) & pa_buffer, & nbytes) < 0) {
+					trace (U"error: no memory");
+					Melder_throw (U"Pulseaudio has no internal memory left.");
+				}
+				trace (U"buffer size = ", nbytes);
+				// do we need the full buffer space ?
+				nbytes = nbytes <= nbytes_left ? nbytes : nbytes_left;
+				memcpy (pa_buffer, (void *)(my buffer + my samplesSent * my numberOfChannels), nbytes);
+				//memset (pa_buffer, 0, nbytes);
+				
+				if (pa_stream_write (stream, pa_buffer, nbytes, nullptr, 0, PA_SEEK_RELATIVE) < 0) {
+					 Melder_throw (U"pa_stream_write() failed: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+				}
+				Melder_assert (nbytes % (my numberOfChannels * 2) == 0);
+				long samplesSent = nbytes / (my numberOfChannels * 2);
+				my samplesSent += samplesSent;
+				my samplesPlayed = my samplesSent; // not true: use timer info
+				trace (U"written ", samplesSent, U" (samples), total ", my samplesSent, U", address = ", (long) pa_buffer);
+				if (my samplesSent == my numberOfSamples) {
+					// my samplesLeft = 0; not here because still playing
+					trace (U"nothing left 1");
+					pa_stream_set_write_callback (my pulseAudio.stream, nullptr, nullptr);
+					my pulseAudio.operation_drain = pa_stream_drain (my pulseAudio.stream, stream_drain_complete_cb, me);
+					if (! my pulseAudio.operation_drain) {
+						pa_stream_disconnect (my pulseAudio.stream);
+						pa_stream_unref (my pulseAudio.stream);
+						my pulseAudio.stream = nullptr;
+						trace (U"stream exists");
+						my pulseAudio.occupation ^= ~PA_WRITING;
+						my pulseAudio.occupation |= PA_WRITING_DONE;
+						pa_threaded_mainloop_signal (my pulseAudio.mainloop, 0);
+						if (my pulseAudio.timer_event) {
+							my pulseAudio.mainloop_api -> time_free (my pulseAudio.timer_event);
+							my pulseAudio.timer_event = nullptr;
+						}
+					}
+				}
+			}
+		} else {
+			trace (U"nothing left");
+		}
+	} else {
+		trace (U"stream?");
+	}
+}
+
+void stream_state_cb (pa_stream *stream, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+
+	if (stream == my pulseAudio.stream) {
+		switch (pa_stream_get_state (stream)) {
+			case PA_STREAM_UNCONNECTED:
+				trace (U"PA_STREAM_UNCONNECTED");
+				break;
+			case PA_STREAM_CREATING:
+				trace (U"PA_STREAM_CREATING");
+				break;
+			case PA_STREAM_TERMINATED:
+				trace (U"PA_STREAM_TERMINATED");
+				break;
+			case PA_STREAM_READY: {
+				const pa_buffer_attr* buffer_attr = pa_stream_get_buffer_attr (my pulseAudio.stream);
+				trace (U"PA_STREAM_READY : tlength = ", buffer_attr -> tlength, U", prebuf = ", buffer_attr -> prebuf, U", maxlength = ", buffer_attr -> maxlength);
+				break;
+			}
+			default:
+				trace (U"default");
+				break;
+			case PA_STREAM_FAILED:
+				trace (U"PA_STREAM_FAILED");
+				break;
+		}
+	}
+}
+
+static void stream_underflow_callback (pa_stream *s, void *userdata) {
+	(void) s;
+	(void) userdata;
+	trace (U"yes");
+}
+
+static void stream_overflow_callback(pa_stream *s, void *userdata) {
+	(void) s;
+	(void) userdata;
+	trace (U"yes");
+}
+
+void context_state_cb (pa_context *context, void *userdata) {
+	struct MelderPlay *me = (struct MelderPlay *) userdata;
+
+	pa_context_state context_state = pa_context_get_state (context);
+	switch (context_state) {
+		case PA_CONTEXT_UNCONNECTED:
+			trace (U"PA_CONTEXT_UNCONNECTED");
+			break;
+		case PA_CONTEXT_CONNECTING:
+			trace (U"PA_CONTEXT_CONNECTING");
+			break;
+		case PA_CONTEXT_AUTHORIZING:
+			trace (U"PA_CONTEXT_AUTHORIZING");
+			break;
+		case PA_CONTEXT_SETTING_NAME:
+			trace (U"PA_CONTEXT_SETTING_NAME");
+			break;
+		case PA_CONTEXT_FAILED:
+			trace (U"PA_CONTEXT_FAILED");
+			break;
+		case PA_CONTEXT_TERMINATED:
+			trace (U"PA_CONTEXT_TERMINATED");
+			break;
+		case PA_CONTEXT_READY: {
+			trace (U"PA_CONTEXT_READY");
+			if ((my pulseAudio.occupation & PA_GETTINGINFO) == PA_GETTINGINFO) {
+				my pulseAudio.operation_info = pa_context_get_server_info (my pulseAudio.context, pulseAudio_server_info_cb, me);
+				trace (U"operation started");
+				if (! my pulseAudio.operation_info) {
+					Melder_throw (U"pulseAudioServer report: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+				}
+			} else if ((my pulseAudio.occupation & PA_WRITING) == PA_WRITING) {
+				#if __BYTE_ORDER == __BIG_ENDIAN
+					my pulseAudio.sample_spec.format = PA_SAMPLE_S16BE;
+				#else
+					my pulseAudio.sample_spec.format = PA_SAMPLE_S16LE;
+				#endif
+				my samplesPlayed = my samplesSent = 0;
+				my pulseAudio.sample_spec.rate = my sampleRate;
+				my pulseAudio.sample_spec.channels = my numberOfChannels;
+				my pulseAudio.stream = pa_stream_new (my pulseAudio.context, "Praat", &(my pulseAudio.sample_spec), nullptr);
+				if (! my pulseAudio.stream) {
+					Melder_throw (U"Cannot connect to sound server: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+				}
+
+				//my pulseAudio.stream_flags = PA_STREAM_NOFLAGS;
+				my pulseAudio.stream_flags = (pa_stream_flags_t) (PA_STREAM_ADJUST_LATENCY | PA_STREAM_INTERPOLATE_TIMING | PA_STREAM_AUTO_TIMING_UPDATE);
+				my pulseAudio.latency = pa_usec_to_bytes (1000 * my pulseAudio.latency_msec, &(my pulseAudio.sample_spec));
+				
+				my pulseAudio.buffer_attr.maxlength = (uint32_t) -1;
+				my pulseAudio.buffer_attr.prebuf = (uint32_t) -1;
+				my pulseAudio.buffer_attr.minreq = (uint32_t) -1;
+				my pulseAudio.buffer_attr.prebuf = (uint32_t) -1;
+				my pulseAudio.buffer_attr.tlength = my pulseAudio.latency;
+				my pulseAudio.buffer_attr.fragsize = (uint32_t) -1;
+
+				pa_stream_set_state_callback (my pulseAudio.stream, stream_state_cb, me);
+				pa_stream_set_write_callback (my pulseAudio.stream, stream_write_cb, me);
+			    pa_stream_set_underflow_callback (my pulseAudio.stream, stream_underflow_callback, me);
+			    pa_stream_set_overflow_callback (my pulseAudio.stream, stream_overflow_callback, me);
+				
+				// BUG in pa 5.9  & 6.0: the server doesn't honour our wish for a reasonable tlength. Instead it uses some
+				//   ridiculously low value for tlength that will constantly give underflows.
+				//   audio playback was completely shit if in the stream_write_cb we used pa_stream_write instead of
+				// first pa_stream_begin_write followed by pa_stream_write.
+				//
+				my pulseAudio.stream_flags = PA_STREAM_NOFLAGS;
+				if (pa_stream_connect_playback (my pulseAudio.stream, nullptr, &(my pulseAudio.buffer_attr), my pulseAudio.stream_flags, nullptr, nullptr) < 0) {
+					Melder_throw (U"pa_stream_connect_playback() failed: ", Melder_peek8to32 (pa_strerror (pa_context_errno (my pulseAudio.context))));
+				}
+				trace (U"tlength = ", my pulseAudio.buffer_attr.tlength, U", channels = ", my numberOfChannels);
+			} else if ((my pulseAudio.occupation & PA_RECORDING) == PA_RECORDING) {
+				
+			}
+			break;
+		}
+		default:
+			trace (U"default");
+			break;
+	}
+}
+#endif
+
 void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples, int numberOfChannels,
 	bool (*playCallback) (void *playClosure, long numberOfSamplesPlayed), void *playClosure)
 {
@@ -509,6 +995,11 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 		bool wasPlaying = MelderAudio_isPlaying;
 	#endif
 	if (MelderAudio_isPlaying) MelderAudio_stopPlaying (MelderAudio_IMPLICIT);   // otherwise, keep "explicitStop" tag
+	#ifdef HAVE_PULSEAUDIO
+		if (my usePulseAudio && my pulseAudio.mainloop) {
+			pulseAudio_cleanup ();
+		}
+	#endif
 	my buffer = buffer;
 	my sampleRate = sampleRate;
 	my numberOfSamples = numberOfSamples;
@@ -522,7 +1013,16 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 	if (my asynchronicity > preferences. maximumAsynchronicity)
 		my asynchronicity = preferences. maximumAsynchronicity;
 	trace (U"asynchronicity ", my asynchronicity);
-	my usePortAudio = preferences. outputUsesPortAudio;
+	my usePortAudio =
+		#if defined (_WIN32)
+			preferences. outputSoundSystem == kMelder_outputSoundSystem_MME_VIA_PORTAUDIO;
+		#elif defined (macintosh)
+			preferences. outputSoundSystem == kMelder_outputSoundSystem_COREAUDIO_VIA_PORTAUDIO;
+		#else
+			preferences. outputSoundSystem == kMelder_outputSoundSystem_ALSA_VIA_PORTAUDIO;
+		#endif
+	my usePulseAudio = ! my usePortAudio;
+
 	my explicitStop = MelderAudio_IMPLICIT;
 	my fakeMono = false;
 	my volatile_interrupted = 0;
@@ -576,9 +1076,9 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 		}
 		outputParameters. channelCount = my numberOfChannels;
 		outputParameters. sampleFormat = paInt16;
-		if (deviceInfo != NULL) outputParameters. suggestedLatency = deviceInfo -> defaultLowOutputLatency;
-		outputParameters. hostApiSpecificStreamInfo = NULL;
-		err = Pa_OpenStream (& my stream, NULL, & outputParameters, my sampleRate, paFramesPerBufferUnspecified,
+		if (deviceInfo) outputParameters. suggestedLatency = deviceInfo -> defaultLowOutputLatency;
+		outputParameters. hostApiSpecificStreamInfo = nullptr;
+		err = Pa_OpenStream (& my stream, nullptr, & outputParameters, my sampleRate, paFramesPerBufferUnspecified,
 			paDitherOff, thePaStreamCallback, me);
 		if (err) Melder_throw (U"PortAudio cannot open sound output: ", Melder_peek8to32 (Pa_GetErrorText (err)), U".");
 		theStartingTime = Melder_clock ();
@@ -661,19 +1161,50 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 			#endif
 		} else /* my asynchronicity == kMelder_asynchronicityLevel_ASYNCHRONOUS */ {
 			#if cocoa
-				CFRunLoopTimerContext context = { 0, NULL, NULL, NULL, NULL };
-				my cocoaTimer = CFRunLoopTimerCreate (NULL, CFAbsoluteTimeGetCurrent () + 0.02,
+				CFRunLoopTimerContext context = { 0, nullptr, nullptr, nullptr, nullptr };
+				my cocoaTimer = CFRunLoopTimerCreate (nullptr, CFAbsoluteTimeGetCurrent () + 0.02,
 					0.02, 0, 0, workProc_cocoa, & context);
 				CFRunLoopAddTimer (CFRunLoopGetCurrent (), my cocoaTimer, kCFRunLoopCommonModes);
 			#elif motif
-				my workProcId_motif = GuiAddWorkProc (workProc_motif, NULL);
+				my workProcId_motif = GuiAddWorkProc (workProc_motif, nullptr);
 			#elif gtk
-				my workProcId_gtk = g_idle_add (workProc_gtk, NULL);
+				trace (U"g_idle_add");
+				my workProcId_gtk = g_idle_add (workProc_gtk, nullptr);
 			#endif
 			return;
 		}
 		flush ();
 		return;
+	#ifdef HAVE_PULSEAUDIO
+	} if (my usePulseAudio) {
+		my pulseAudio.occupation |= PA_WRITING;
+		pulseAudio_initialize ();
+		if (my asynchronicity < kMelder_asynchronicityLevel_ASYNCHRONOUS) {
+			pa_threaded_mainloop_lock (my pulseAudio.mainloop);
+			trace (U"occupation ", my pulseAudio.occupation);
+			while ((my pulseAudio.occupation & PA_WRITING_DONE) != PA_WRITING_DONE) {
+				trace (U"waiting");
+				pa_threaded_mainloop_wait (my pulseAudio.mainloop);
+			}
+			// Now we know that the stream drain operation has succeeded !
+			if (my pulseAudio.operation_drain) {
+				pa_operation_unref (my pulseAudio.operation_drain);
+			}
+			my pulseAudio.operation_drain = nullptr;
+			my pulseAudio.occupation ^= ~PA_WRITING_DONE;
+
+			pa_threaded_mainloop_unlock (my pulseAudio.mainloop);
+			//pa_threaded_mainloop_accept (my pulseAudio.mainloop);
+			trace (U"before cleanup");
+			pulseAudio_cleanup ();
+		} else {
+			// my workProcId_gtk = g_timeout_add (ms, workProc_gtk, nullptr);
+			// without a timer, on my computer the workproc would be called almost once in every sampling period.
+			// Such frequent updates are not necessary, some 50 updates a second is fast enough for displayong a runnning cursor
+			// the timeout will be automatically stopped if workProc_gtk returns false.
+			my workProcId_gtk = g_timeout_add (20, workProc_gtk, nullptr);
+		}
+	#endif
 	} else {
 		#if defined (macintosh)
 		#elif defined (linux)
@@ -749,14 +1280,14 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 					}
 				} else /* my asynchronicity == kMelder_asynchronicityLevel_ASYNCHRONOUS */ {
 					#ifndef NO_GRAPHICS
-						my workProcId_gtk = g_idle_add (workProc_gtk, NULL);
+						my workProcId_gtk = g_idle_add (workProc_gtk, nullptr);
 					#endif
 					return;
 				}
 				flush ();
 				return;
 			} catch (MelderError) {
-				struct MelderPlay *me = & thePlay;
+			//struct MelderPlay *me = & thePlay;
 				if (my audio_fd) close (my audio_fd), my audio_fd = 0;
 				MelderAudio_isPlaying = false;
 				Melder_throw (U"16-bit audio not played.");
@@ -836,7 +1367,7 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 				my waveHeader. lpData = (char *) my buffer;
 				my waveHeader. dwBufferLength = my numberOfSamples * 2 * my numberOfChannels;
 				my waveHeader. dwLoops = 1;
-				my waveHeader. lpNext = NULL;
+				my waveHeader. lpNext = nullptr;
 				my waveHeader. reserved = 0;
 				err = waveOutPrepareHeader (my hWaveOut, & my waveHeader, sizeof (WAVEHDR));
 			//waveOutReset (my hWaveOut);
@@ -885,7 +1416,7 @@ void MelderAudio_play16 (int16_t *buffer, long sampleRate, long numberOfSamples,
 						}
 					}
 				} else {
-					my workProcId_motif = GuiAddWorkProc (workProc_motif, NULL);
+					my workProcId_motif = GuiAddWorkProc (workProc_motif, nullptr);
 					return;
 				}
 				flush ();
diff --git a/sys/melder_audiofiles.cpp b/sys/melder_audiofiles.cpp
index 786e2fd..126069a 100644
--- a/sys/melder_audiofiles.cpp
+++ b/sys/melder_audiofiles.cpp
@@ -1,39 +1,19 @@
 /* melder_audiofiles.cpp
  *
- * Copyright (C) 1992-2011,2013,2015 Paul Boersma & David Weenink, 2007 Erez Volk (for FLAC)
+ * Copyright (C) 1992-2011,2013,2015,2016 Paul Boersma & David Weenink, 2007 Erez Volk (for FLAC)
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/12/16 corrected bug for cases in which format chunk follows data chunk in WAV file
- * pb 2003/09/12 Sound Designer II files
- * pb 2004/05/14 support for reading 24-bit and 32-bit audio files
- * pb 2004/11/12 writeShortToAudio can write single channels of stereo signal
- * pb 2004/11/15 fast reading of 16-bit audio files
- * pb 2006/12/13 32-bit IEEE float audio files
- * pb 2007/01/24 better error message for DVI ADPCM
- * Erez Volk 2007/03 FLAC reading
- * Erez Volk 2007/05/14 FLAC writing
- * pb 2007/05/17 corrected stereo FLAC writing
- * Erez Volk 2007/06/02 MP3 reading
- * pb 2007/10/05 FSOpenResFile
- * pb 2008/01/19 double
- * pb 2010/12/23 support for multi-channel sound files
- * pb 2011/04/05 C++
- * pb 2011/05/03 fix WAV files with negative data chunk sizes
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -43,14 +23,6 @@
 #include "flac_FLAC_stream_decoder.h"
 #include "flac_FLAC_stream_encoder.h"
 #include "mp3.h"
-#if defined (macintosh)
-
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #else
-    #endif
-
-#endif
 
 /***** WRITING *****/
 
@@ -66,7 +38,7 @@
 void MelderFile_writeAudioFileHeader (MelderFile file, int audioFileType, long sampleRate, long numberOfSamples, int numberOfChannels, int numberOfBitsPerSamplePoint) {
 	try {
 		FILE *f = file -> filePointer;
-		if (f == NULL) return;
+		if (! f) return;
 		const int numberOfBytesPerSamplePoint = (numberOfBitsPerSamplePoint + 7) / 8;
 		switch (audioFileType) {
 			case Melder_AIFF: {
@@ -143,11 +115,11 @@ void MelderFile_writeAudioFileHeader (MelderFile file, int audioFileType, long s
 					double dataSize_f = (double) numberOfSamples * (double) numberOfBytesPerSamplePoint * (double) numberOfChannels;
 					if (dataSize_f > INT54_MAX)
 						Melder_throw (U"Cannot save data over the 9-petabyte limit.");
-					int64_t dataSize = (int64_t) dataSize_f;
+					int64 dataSize = (int64) dataSize_f;
 
 					/* RIFF Chunk: contains all other chunks. */
 					if (fwrite ("RIFF", 1, 4, f) != 4) Melder_throw (U"Error in file while trying to write the RIFF statement.");
-					int64_t sizeOfRiffChunk_i64 = 4 + (12 + formatSize) + (4 + dataSize);
+					int64 sizeOfRiffChunk_i64 = 4 + (12 + formatSize) + (4 + dataSize);
 					if (sizeOfRiffChunk_i64 > UINT32_MAX)
 						Melder_throw (U"Cannot save a WAV file with more than ", UINT32_MAX, U" bytes.");
 					uint32_t sizeOfRiffChunk_u32 = (uint32_t) sizeOfRiffChunk_i64;
@@ -214,16 +186,16 @@ void MelderFile_writeAudioFileHeader (MelderFile file, int audioFileType, long s
 			} break;
 			case Melder_FLAC: {
 				try {
-					FLAC__StreamEncoder *encoder = NULL;
+					FLAC__StreamEncoder *encoder = nullptr;
 					if (numberOfChannels > (int) FLAC__MAX_CHANNELS)
 						Melder_throw (U"FLAC files cannot have more than 8 channels.");
-					if ((encoder = FLAC__stream_encoder_new ()) == NULL)
+					if ((encoder = FLAC__stream_encoder_new ()) == nullptr)
 						Melder_throw (U"Error creating FLAC stream encoder.");
 					FLAC__stream_encoder_set_bits_per_sample (encoder, numberOfBitsPerSamplePoint);
 					FLAC__stream_encoder_set_channels (encoder, numberOfChannels);
 					FLAC__stream_encoder_set_sample_rate (encoder, sampleRate);
 					FLAC__stream_encoder_set_total_samples_estimate (encoder, numberOfSamples);
-					if (FLAC__stream_encoder_init_FILE (encoder, file -> filePointer, NULL, NULL) != FLAC__STREAM_ENCODER_INIT_STATUS_OK) {
+					if (FLAC__stream_encoder_init_FILE (encoder, file -> filePointer, nullptr, nullptr) != FLAC__STREAM_ENCODER_INIT_STATUS_OK) {
 						FLAC__stream_encoder_delete (encoder);
 						Melder_throw (U"Error creating FLAC stream encoder");
 					}
@@ -724,7 +696,7 @@ int MelderFile_checkSoundFile (MelderFile file, int *numberOfChannels, int *enco
 {
 	char data [16];
 	FILE *f = file -> filePointer;
-	if (f == NULL || fread (data, 1, 16, f) < 16) return 0;
+	if (! f || fread (data, 1, 16, f) < 16) return 0;
 	rewind (f);
 	if (strnequ (data, "FORM", 4) && strnequ (data + 8, "AIFF", 4)) {
 		Melder_checkAiffFile (f, numberOfChannels, encoding, sampleRate, startOfData, numberOfSamples);
@@ -847,12 +819,12 @@ static void Melder_readFlacFile (FILE *f, int numberOfChannels, double **buffer,
 	}
 	c.numberOfSamples = numberOfSamples;
 
-	if ((decoder = FLAC__stream_decoder_new ()) == NULL)
+	if ((decoder = FLAC__stream_decoder_new ()) == nullptr)
 		goto end;
 	if (FLAC__stream_decoder_init_stream (decoder,
 				Melder_DecodeFlac_read,
-				NULL, NULL, NULL, NULL,
-				Melder_DecodeFlac_convert, NULL,
+				nullptr, nullptr, nullptr, nullptr,
+				Melder_DecodeFlac_convert, nullptr,
 				Melder_DecodeFlac_error, &c) != FLAC__STREAM_DECODER_INIT_STATUS_OK)
 		goto end;
 	result = FLAC__stream_decoder_process_until_end_of_stream (decoder);
@@ -1333,7 +1305,7 @@ void Melder_readAudioToShort (FILE *f, int numberOfChannels, int encoding, short
 void MelderFile_writeShortToAudio (MelderFile file, int numberOfChannels, int encoding, const short *buffer, long numberOfSamples) {
 	try {
 		FILE *f = file -> filePointer;
-		if (f == NULL) Melder_throw (U"File not open.");
+		if (! f) Melder_throw (U"File not open.");
 		long n = numberOfSamples * numberOfChannels, start = 0, step = 1, i;
 		if (numberOfChannels < 0) {
 			n = numberOfSamples * 2;   // stereo
@@ -1398,7 +1370,7 @@ void MelderFile_writeShortToAudio (MelderFile file, int numberOfChannels, int en
 void MelderFile_writeFloatToAudio (MelderFile file, int numberOfChannels, int encoding, double **buffer, long numberOfSamples, int warnIfClipped) {
 	try {
 		FILE *f = file -> filePointer;
-		if (f == NULL) Melder_throw (U"File not open.");
+		if (! f) Melder_throw (U"File not open.");
 		long nclipped = 0;
 		switch (encoding) {
 			case Melder_LINEAR_8_SIGNED:
diff --git a/sys/melder_console.cpp b/sys/melder_console.cpp
index d45c3bd..9d49c5b 100644
--- a/sys/melder_console.cpp
+++ b/sys/melder_console.cpp
@@ -2,65 +2,28 @@
  *
  * Copyright (C) 1992-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/* pb 2008/02/17
- * pb 2008/10/27 Melder_consoleIsAnsi
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
 #include "NUM.h"
-#ifdef _WIN32
-	#include <windows.h>
-#endif
-
-bool Melder_consoleIsAnsi = false;
-
-void Melder_writeToConsole (const char32 *message, bool useStderr) {
-	if (message == NULL) return;
-	#if defined (_WIN32)
-		(void) useStderr;
-		static HANDLE console = NULL;
-		if (console == NULL) {
-			console = CreateFileW (L"CONOUT$", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
-		}
-		if (Melder_consoleIsAnsi) {
-			size_t n = str32len (message);
-			for (long i = 0; i < n; i ++) {
-				unsigned int kar = (unsigned short) message [i];
-				fputc (kar, stdout);
-			}
-		//} else if (Melder_consoleIsUtf8) {
-			//char *messageA = Melder_peek32to8 (message);
-			//fprintf (stdout, "%s", messageA);
-		} else {
-			WCHAR *messageW = Melder_peek32toW (message);
-			WriteConsoleW (console, messageW, wcslen (messageW), NULL, NULL);
-		}
-	#else
-		Melder_fwrite32to8 (message, str32len (message), useStderr ? stderr : stdout);
-	#endif
-}
 
 #if defined (_WIN32) && defined (CONSOLE_APPLICATION)
 int main (int argc, char *argvA []);
 extern "C" int wmain (int argc, wchar_t *argvW []);
 extern "C" int wmain (int argc, wchar_t *argvW []) {
-	char **argvA = NULL;
+	char **argvA = nullptr;
 	if (argc > 0) {
 		argvA = NUMvector <char *> (0, argc - 1);
 		for (int iarg = 0; iarg < argc; iarg ++) {
diff --git a/sys/melder_debug.cpp b/sys/melder_debug.cpp
index f0377e1..6f9f14b 100644
--- a/sys/melder_debug.cpp
+++ b/sys/melder_debug.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2000-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -26,6 +25,7 @@
 #include "praat_version.h"
 #ifdef _WIN32
 	#include "UnicodeData.h"
+	#include <windows.h>
 #endif
 
 int Melder_debug = 0;
@@ -43,8 +43,7 @@ the behaviour of that program changes in the following way:
 8: Windows: don't reset waveIn, in SoundRecorder.cpp.
 9: flush Error in FunctionEditor_Sound_draw
 10: geometric pens
-11: clicked item in option menu in Ui.cpp.
-12: no forced update event in XmUpdateDisplay on Mac
+11: clicked item in option menu in Ui.cpp
 14: switches off the progress window in melder.cpp
 15: don't use TrueType IPA fonts, but always bitmaps instead
 16: Linux: open /dev/dsp without O_NDELAY
@@ -97,20 +96,20 @@ the behaviour of that program changes in the following way:
  * also, we need no newline nativization, as Melder_32to8_inline() does.
  */
 static const char * peek32to8 (const char32 *string) {
-	if (string == NULL) return "";
-	static char *buffer { NULL };
+	if (! string) return "";
+	static char *buffer { nullptr };
 	static int64 bufferSize { 0 };
 	int64 n = str32len (string);
 	int64 sizeNeeded = n * 4 + 1;
 	if ((bufferSize - sizeNeeded) * (int64) sizeof (char) >= 10000) {
 		free (buffer);
-		buffer = NULL;   // undangle
+		buffer = nullptr;   // undangle
 		bufferSize = 0;
 	}
 	if (sizeNeeded > bufferSize) {
 		sizeNeeded = (int64) floor (sizeNeeded * 1.61803) + 100;
 		buffer = (char *) realloc (buffer, (size_t) sizeNeeded * sizeof (char));
-		if (buffer == NULL) {
+		if (buffer == nullptr) {
 			bufferSize = 0;
 			return "(out of memory during Melder_casual)";
 		}
@@ -140,8 +139,8 @@ static const char * peek32to8 (const char32 *string) {
 }
 #ifdef _WIN32
 static const char16 * peek32to16 (const char32 *string) {
-	if (string == NULL) return u"";
-	static char16 *buffer { NULL };
+	if (! string) return u"";
+	static char16 *buffer { nullptr };
 	static int64 bufferSize { 0 };
 	int64 n = str32len (string);
 	int64 sizeNeeded = n * 2 + 1;
@@ -152,7 +151,7 @@ static const char16 * peek32to16 (const char32 *string) {
 	if (sizeNeeded > bufferSize) {
 		sizeNeeded = (int64) floor (sizeNeeded * 1.61803) + 100;
 		buffer = (char16 *) realloc (buffer, (size_t) sizeNeeded * sizeof (char16));
-		if (buffer == NULL) {
+		if (! buffer) {
 			bufferSize = 0;
 			return u"(out of memory during trace)";
 		}
@@ -180,162 +179,212 @@ static const char16 * peek32to16 (const char32 *string) {
 }
 #endif
 
+bool Melder_consoleIsAnsi = false;
+
+//extern FILE *winstdout;
+void Melder_writeToConsole (const char32 *message, bool useStderr) {
+	if (! message) return;
+	#if defined (_WIN32)
+		(void) useStderr;
+		static HANDLE console = nullptr;
+		if (! console) {
+			console = CreateFileW (L"CONOUT$", GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, 0);
+			//freopen ("CONOUT$", "w", stdout);
+		}
+		if (Melder_consoleIsAnsi) {
+			size_t n = str32len (message);
+			for (long i = 0; i < n; i ++) {
+				unsigned int kar = (unsigned short) message [i];
+				fputc (kar, stdout);
+			}
+			//CHAR* messageA = (CHAR*) peek32to8 (message);
+			//WriteConsoleA (console, messageA, strlen (messageA), nullptr, nullptr);
+		//} else if (Melder_consoleIsUtf8) {
+			//char *messageA = Melder_peek32to8 (message);
+			//fprintf (stdout, "%s", messageA);
+		} else {
+			WCHAR* messageW = (WCHAR*) peek32to16 (message);
+			WriteConsoleW (console, messageW, wcslen (messageW), nullptr, nullptr);
+		}
+	#else
+		FILE *f = ( useStderr ? stderr : stdout );
+		for (const char32* p = message; *p != U'\0'; p ++) {
+			char32 kar = *p;
+			if (kar <= 0x00007F) {
+				fputc ((int) kar, f);   // because fputc wants an int instead of an uint8 (guarded conversion)
+			} else if (kar <= 0x0007FF) {
+				fputc (0xC0 | (kar >> 6), f);
+				fputc (0x80 | (kar & 0x00003F), f);
+			} else if (kar <= 0x00FFFF) {
+				fputc (0xE0 | (kar >> 12), f);
+				fputc (0x80 | ((kar >> 6) & 0x00003F), f);
+				fputc (0x80 | (kar & 0x00003F), f);
+			} else {
+				fputc (0xF0 | (kar >> 18), f);
+				fputc (0x80 | ((kar >> 12) & 0x00003F), f);
+				fputc (0x80 | ((kar >> 6) & 0x00003F), f);
+				fputc (0x80 | (kar & 0x00003F), f);
+			}
+		}
+	#endif
+}
+
 /********** CASUAL **********/
 
 void Melder_casual (Melder_1_ARG) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_2_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_3_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_4_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_5_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_6_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_7_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_8_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_9_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_10_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg10._arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (arg10._arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_11_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg10._arg));
-	fprintf (stderr, "%s", peek32to8 (arg11._arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (arg10._arg, true);
+	Melder_writeToConsole (arg11._arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_13_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg10._arg));
-	fprintf (stderr, "%s", peek32to8 (arg11._arg));
-	fprintf (stderr, "%s", peek32to8 (arg12._arg));
-	fprintf (stderr, "%s", peek32to8 (arg13._arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (arg10._arg, true);
+	Melder_writeToConsole (arg11._arg, true);
+	Melder_writeToConsole (arg12._arg, true);
+	Melder_writeToConsole (arg13._arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_15_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg10._arg));
-	fprintf (stderr, "%s", peek32to8 (arg11._arg));
-	fprintf (stderr, "%s", peek32to8 (arg12._arg));
-	fprintf (stderr, "%s", peek32to8 (arg13._arg));
-	fprintf (stderr, "%s", peek32to8 (arg14._arg));
-	fprintf (stderr, "%s", peek32to8 (arg15._arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (arg10._arg, true);
+	Melder_writeToConsole (arg11._arg, true);
+	Melder_writeToConsole (arg12._arg, true);
+	Melder_writeToConsole (arg13._arg, true);
+	Melder_writeToConsole (arg14._arg, true);
+	Melder_writeToConsole (arg15._arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 void Melder_casual (Melder_19_ARGS) {
-	fprintf (stderr, "%s", peek32to8 (arg1. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg2. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg3. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg4. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg5. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg6. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg7. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg8. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg9. _arg));
-	fprintf (stderr, "%s", peek32to8 (arg10._arg));
-	fprintf (stderr, "%s", peek32to8 (arg11._arg));
-	fprintf (stderr, "%s", peek32to8 (arg12._arg));
-	fprintf (stderr, "%s", peek32to8 (arg13._arg));
-	fprintf (stderr, "%s", peek32to8 (arg14._arg));
-	fprintf (stderr, "%s", peek32to8 (arg15._arg));
-	fprintf (stderr, "%s", peek32to8 (arg16._arg));
-	fprintf (stderr, "%s", peek32to8 (arg17._arg));
-	fprintf (stderr, "%s", peek32to8 (arg18._arg));
-	fprintf (stderr, "%s", peek32to8 (arg19._arg));
-	fprintf (stderr, "\n");
+	Melder_writeToConsole (arg1. _arg, true);
+	Melder_writeToConsole (arg2. _arg, true);
+	Melder_writeToConsole (arg3. _arg, true);
+	Melder_writeToConsole (arg4. _arg, true);
+	Melder_writeToConsole (arg5. _arg, true);
+	Melder_writeToConsole (arg6. _arg, true);
+	Melder_writeToConsole (arg7. _arg, true);
+	Melder_writeToConsole (arg8. _arg, true);
+	Melder_writeToConsole (arg9. _arg, true);
+	Melder_writeToConsole (arg10._arg, true);
+	Melder_writeToConsole (arg11._arg, true);
+	Melder_writeToConsole (arg12._arg, true);
+	Melder_writeToConsole (arg13._arg, true);
+	Melder_writeToConsole (arg14._arg, true);
+	Melder_writeToConsole (arg15._arg, true);
+	Melder_writeToConsole (arg16._arg, true);
+	Melder_writeToConsole (arg17._arg, true);
+	Melder_writeToConsole (arg18._arg, true);
+	Melder_writeToConsole (arg19._arg, true);
+	Melder_writeToConsole (U"\n", true);
 }
 
 /********** TRACE **********/
@@ -350,7 +399,7 @@ void Melder_tracingToFile (MelderFile file) {
 
 static FILE * Melder_trace_open (const char *fileName, int lineNumber, const char *functionName) {
 	FILE *f;
-	#ifdef _WIN32
+	#if defined (_WIN32) && ! defined (__CYGWIN__)
 		f = _wfopen ((const wchar_t *) peek32to16 (theTracingFile. path), L"a");
 	#else
 		char utf8path [kMelder_MAXPATH+1];
@@ -558,24 +607,24 @@ void Melder_trace (const char *fileName, int lineNumber, const char *functionNam
 
 #ifdef linux
 static void theGtkLogHandler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data) {
-	FILE *f = Melder_trace_open (NULL, 0, "GTK");
+	FILE *f = Melder_trace_open (nullptr, 0, "GTK");
 	fprintf (f, "%s", message);
 	Melder_trace_close (f);
 }
 static void theGlibLogHandler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data) {
-	FILE *f = Melder_trace_open (NULL, 0, "GLib");
+	FILE *f = Melder_trace_open (nullptr, 0, "GLib");
 	fprintf (f, "%s", message);
 	Melder_trace_close (f);
 }
 static void theGlibGobjectLogHandler (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer unused_data) {
-	FILE *f = Melder_trace_open (NULL, 0, "GLib-GObject");
+	FILE *f = Melder_trace_open (nullptr, 0, "GLib-GObject");
 	fprintf (f, "%s", message);
 	Melder_trace_close (f);
 }
 #endif
 
 void Melder_setTracing (bool tracing) {
-	time_t today = time (NULL);	
+	time_t today = time (nullptr);
 	#define xstr(s) str(s)
 	#define str(s) #s
 	if (! tracing)
@@ -587,9 +636,9 @@ void Melder_setTracing (bool tracing) {
 	#ifdef linux
 		static guint handler_id1, handler_id2, handler_id3;
 		if (tracing) {
-			handler_id1 = g_log_set_handler ("Gtk",          (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGtkLogHandler,         NULL);
-			handler_id2 = g_log_set_handler ("GLib",         (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGlibLogHandler,        NULL);
-			handler_id3 = g_log_set_handler ("GLib-GObject", (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGlibGobjectLogHandler, NULL);
+			handler_id1 = g_log_set_handler ("Gtk",          (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGtkLogHandler,         nullptr);
+			handler_id2 = g_log_set_handler ("GLib",         (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGlibLogHandler,        nullptr);
+			handler_id3 = g_log_set_handler ("GLib-GObject", (GLogLevelFlags) (G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL | G_LOG_FLAG_RECURSION), theGlibGobjectLogHandler, nullptr);
 		} else {
 			if (handler_id1) g_log_remove_handler ("Gtk",          handler_id1);
 			if (handler_id2) g_log_remove_handler ("GLib",         handler_id2);
diff --git a/sys/melder_enums.h b/sys/melder_enums.h
index 0671bf4..63d4d6a 100644
--- a/sys/melder_enums.h
+++ b/sys/melder_enums.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 enums_begin (kMelder_number, 1)
@@ -46,10 +45,10 @@ enums_begin (kMelder_textInputEncoding, 1)
 	enums_add (kMelder_textInputEncoding, 5, WINDOWS_LATIN1, U"Windows Latin-1")
 	enums_add (kMelder_textInputEncoding, 6, UTF8_THEN_MACROMAN, U"try UTF-8, then MacRoman")
 	enums_add (kMelder_textInputEncoding, 7, MACROMAN, U"MacRoman")
-#if defined (macintosh)
-enums_end (kMelder_textInputEncoding, 7, UTF8_THEN_MACROMAN)
-#elif defined (_WIN32)
+#if defined (_WIN32)
 enums_end (kMelder_textInputEncoding, 7, UTF8_THEN_WINDOWS_LATIN1)
+#elif defined (macintosh)
+enums_end (kMelder_textInputEncoding, 7, UTF8_THEN_MACROMAN)
 #else
 enums_end (kMelder_textInputEncoding, 7, UTF8_THEN_ISO_LATIN1)
 #endif
@@ -68,4 +67,44 @@ enums_begin (kMelder_asynchronicityLevel, 0)
 	enums_add (kMelder_asynchronicityLevel, 3, ASYNCHRONOUS, U"asynchronous (anything)")
 enums_end (kMelder_asynchronicityLevel, 3, ASYNCHRONOUS)
 
+#if defined (_WIN32)
+
+	enums_begin (kMelder_inputSoundSystem, 1)
+		enums_add (kMelder_inputSoundSystem, 1, MME_VIA_PORTAUDIO, U"MME via PortAudio")
+	enums_end (kMelder_inputSoundSystem, 1, MME_VIA_PORTAUDIO)
+			// in order to allow recording for over 64 megabytes (paMME)
+
+	enums_begin (kMelder_outputSoundSystem, 1)
+		enums_add (kMelder_outputSoundSystem, 1, MME, U"MME")
+		enums_add (kMelder_outputSoundSystem, 2, MME_VIA_PORTAUDIO, U"MME via PortAudio")
+	enums_end (kMelder_outputSoundSystem, 2, MME)
+			// in order to reduce the long latencies of paMME and to avoid the incomplete implementation of paDirectSound
+
+#elif defined (macintosh)
+
+	enums_begin (kMelder_inputSoundSystem, 1)
+		enums_add (kMelder_inputSoundSystem, 1, COREAUDIO_VIA_PORTAUDIO, U"CoreAudio via PortAudio")
+	enums_end (kMelder_inputSoundSystem, 1, COREAUDIO_VIA_PORTAUDIO)
+			// in order to have CoreAudio
+
+	enums_begin (kMelder_outputSoundSystem, 1)
+		enums_add (kMelder_outputSoundSystem, 1, COREAUDIO_VIA_PORTAUDIO, U"CoreAudio via PortAudio")
+	enums_end (kMelder_outputSoundSystem, 1, COREAUDIO_VIA_PORTAUDIO)
+			// in order to have CoreAudio
+
+#else
+
+	enums_begin (kMelder_inputSoundSystem, 1)
+		enums_add (kMelder_inputSoundSystem, 1, ALSA_VIA_PORTAUDIO, U"ALSA via PortAudio")
+	enums_end (kMelder_inputSoundSystem, 1, ALSA_VIA_PORTAUDIO)
+			// in order to use ALSA and therefore be compatible with Ubuntu 10.10 and later
+
+	enums_begin (kMelder_outputSoundSystem, 1)
+		enums_add (kMelder_outputSoundSystem, 1, PULSEAUDIO, U"PulseAudio")
+		enums_add (kMelder_outputSoundSystem, 2, ALSA_VIA_PORTAUDIO, U"ALSA via PortAudio")
+	enums_end (kMelder_outputSoundSystem, 2, PULSEAUDIO)
+			// because we prefer to try PulseAudio directly
+
+#endif
+
 /* End of file melder_enums.h */
diff --git a/sys/melder_error.cpp b/sys/melder_error.cpp
index 77c1569..5106823 100644
--- a/sys/melder_error.cpp
+++ b/sys/melder_error.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -42,11 +41,11 @@ static void appendError (const char32 *message) {
 
 bool Melder_hasError () { return errors [0] != U'\0'; }
 
-bool Melder_hasError (const char32 *partialError) { return str32str (errors, partialError) != NULL; }
+bool Melder_hasError (const char32 *partialError) { return !! str32str (errors, partialError); }
 
-void Melder_clearError (void) { errors [0] = U'\0'; }
+void Melder_clearError () { errors [0] = U'\0'; }
 
-char32 * Melder_getError (void) { return & errors [0]; }
+char32 * Melder_getError () { return & errors [0]; }
 
 void Melder_appendError (Melder_1_ARG) {
 	appendError (arg1. _arg);
diff --git a/sys/melder_files.cpp b/sys/melder_files.cpp
index 358ae87..50b1729 100644
--- a/sys/melder_files.cpp
+++ b/sys/melder_files.cpp
@@ -1,20 +1,19 @@
 /* melder_files.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma, 2013 Tom Naughton
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma, 2013 Tom Naughton
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -58,11 +57,7 @@ using namespace std;
 #endif
 #if defined (macintosh)
 	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #else
-        #include <CoreFoundation/CoreFoundation.h>
-    #endif
+	#include <CoreFoundation/CoreFoundation.h>
 	#include "macport_off.h"
 #endif
 #include <errno.h>
@@ -81,23 +76,17 @@ extern "C" void FLAC__stream_encoder_delete (FLAC__StreamEncoder *);
 #endif
 
 static char32 theShellDirectory [kMelder_MAXPATH+1];
-void Melder_rememberShellDirectory (void) {
-	structMelderDir shellDir = { { 0 } };
+void Melder_rememberShellDirectory () {
+	structMelderDir shellDir { { 0 } };
 	Melder_getDefaultDir (& shellDir);
 	str32cpy (theShellDirectory, Melder_dirToPath (& shellDir));
 }
-char32 * Melder_getShellDirectory (void) {
+char32 * Melder_getShellDirectory () {
 	return & theShellDirectory [0];
 }
 
 void Melder_str32To8bitFileRepresentation_inline (const char32 *string, char *utf8) {
-	#if defined (_WIN32)
-		int n = str32len (string), i, j;
-		for (i = 0, j = 0; i < n; i ++) {
-			utf8 [j ++] = string [i] <= 255 ? string [i] : '?';   // the usual replacement on Windows
-		}
-		utf8 [j] = '\0';
-	#elif defined (macintosh)
+	#if defined (macintosh)
 		/*
 			On the Mac, the POSIX path name is stored in canonically decomposed UTF-8 encoding.
 			The path is probably in precomposed UTF-32.
@@ -118,23 +107,31 @@ void Melder_str32To8bitFileRepresentation_inline (const char32 *string, char *ut
 			}
 		}
 		unipath [n_utf16] = u'\0';
-		CFStringRef cfpath = CFStringCreateWithCharacters (NULL, unipath, n_utf16);
-		CFMutableStringRef cfpath2 = CFStringCreateMutableCopy (NULL, 0, cfpath);
+		CFStringRef cfpath = CFStringCreateWithCharacters (nullptr, unipath, n_utf16);
+		CFMutableStringRef cfpath2 = CFStringCreateMutableCopy (nullptr, 0, cfpath);
 		CFRelease (cfpath);
 		CFStringNormalize (cfpath2, kCFStringNormalizationFormD);   // Mac requires decomposed characters
 		CFStringGetCString (cfpath2, (char *) utf8, kMelder_MAXPATH+1, kCFStringEncodingUTF8);   // Mac POSIX requires UTF-8
 		CFRelease (cfpath2);
-	#else
+	#elif defined (UNIX) || defined (__CYGWIN__)
 		Melder_32to8_inline (string, utf8);
+	#elif defined (_WIN32)
+		int n = str32len (string), i, j;
+		for (i = 0, j = 0; i < n; i ++) {
+			utf8 [j ++] = string [i] <= 255 ? string [i] : '?';   // the usual replacement on Windows
+		}
+		utf8 [j] = '\0';
+	#else
+		//#error Unsupported platform.
 	#endif
 }
 
-#if ! defined (_WIN32)
+#if defined (UNIX)
 void Melder_8bitFileRepresentationToStr32_inline (const char *path8, char32 *path32) {
 	#if defined (macintosh)
-		CFStringRef cfpath = CFStringCreateWithCString (NULL, path8, kCFStringEncodingUTF8);
+		CFStringRef cfpath = CFStringCreateWithCString (nullptr, path8, kCFStringEncodingUTF8);
 		Melder_assert (cfpath != 0);
-		CFMutableStringRef cfpath2 = CFStringCreateMutableCopy (NULL, 0, cfpath);
+		CFMutableStringRef cfpath2 = CFStringCreateMutableCopy (nullptr, 0, cfpath);
 		CFRelease (cfpath);
 		CFStringNormalize (cfpath2, kCFStringNormalizationFormC);   // Praat requires composed characters
 		long n_utf16 = CFStringGetLength (cfpath2);
@@ -159,15 +156,6 @@ void Melder_8bitFileRepresentationToStr32_inline (const char *path8, char32 *pat
 }
 #endif
 
-#if defined (macintosh) && useCarbon
-	void Melder_machToFile (void *void_fsref, MelderFile file) {
-		FSRef *fsref = (FSRef *) void_fsref;
-		char path [kMelder_MAXPATH+1];
-		FSRefMakePath (fsref, (unsigned char *) path, kMelder_MAXPATH);   // decomposed UTF-8
-		Melder_8bitFileRepresentationToStr32_inline (path, file -> path);
-	}
-#endif
-
 const char32 * MelderFile_name (MelderFile file) {
 	#if defined (UNIX)
 		char32 *slash = str32rchr (file -> path, U'/');
@@ -175,6 +163,8 @@ const char32 * MelderFile_name (MelderFile file) {
 	#elif defined (_WIN32)
 		char32 *backslash = str32rchr (file -> path, U'\\');
 		return backslash ? backslash + 1 : file -> path;
+	#else
+		return nullptr;
 	#endif
 }
 
@@ -185,6 +175,8 @@ char32 * MelderDir_name (MelderDir dir) {
 	#elif defined (_WIN32)
 		char32 *backslash = str32rchr (dir -> path, U'\\');
 		return backslash ? backslash + 1 : dir -> path;
+	#else
+		return nullptr;
 	#endif
 }
 
@@ -195,7 +187,6 @@ void Melder_pathToDir (const char32 *path, MelderDir dir) {
 void Melder_pathToFile (const char32 *path, MelderFile file) {
 	/*
 	 * This handles complete path names only.
-	 * Unlike Melder_relativePathToFile, this handles Windows file names with slashes in them.
 	 *
 	 * Used if we know for sure that we have a complete path name,
 	 * i.e. if the program determined the name (fileselector, printing, prefs).
@@ -206,7 +197,7 @@ void Melder_pathToFile (const char32 *path, MelderFile file) {
 void Melder_relativePathToFile (const char32 *path, MelderFile file) {
 	/*
 	 * This handles complete and partial path names,
-	 * and translates slashes to native directory separators (unlike Melder_pathToFile).
+	 * and translates slashes to native directory separators.
 	 *
 	 * Used if we do not know for sure that we have a complete path name,
 	 * i.e. if the user determined the name (scripting).
@@ -235,13 +226,13 @@ void Melder_relativePathToFile (const char32 *path, MelderFile file) {
 		 *    LPT1:
 		 *    \\host\path
 		 */
-		structMelderDir dir = { { 0 } };
+		structMelderDir dir { { 0 } };
 		if (path [0] == U'~' && path [1] == U'/') {
 			Melder_getHomeDir (& dir);
 			Melder_sprint (file -> path,kMelder_MAXPATH+1, dir. path, & path [1]);
 			for (;;) {
 				char32 *slash = str32chr (file -> path, U'/');
-				if (slash == NULL) break;
+				if (! slash) break;
 				*slash = U'\\';
 			}
 			return;
@@ -251,7 +242,7 @@ void Melder_relativePathToFile (const char32 *path, MelderFile file) {
 			Melder_sprint (winPath,kMelder_MAXPATH+1, path);
 			for (;;) {
 				char32 *slash = str32chr (winPath, U'/');
-				if (slash == NULL) break;
+				if (! slash) break;
 				*slash = U'\\';
 			}
 			Melder_relativePathToFile (winPath, file);
@@ -298,7 +289,7 @@ void MelderFile_setToNull (MelderFile file) {
 }
 
 bool MelderFile_isNull (MelderFile file) {
-	return file == NULL || file -> path [0] == U'\0';
+	return ! file || file -> path [0] == U'\0';
 }
 
 void MelderDir_setToNull (MelderDir dir) {
@@ -326,7 +317,7 @@ void MelderDir_getFile (MelderDir parent, const char32 *fileName, MelderFile fil
 }
 
 void MelderDir_relativePathToFile (MelderDir dir, const char32 *path, MelderFile file) {
-	structMelderDir saveDir = { { 0 } };
+	structMelderDir saveDir { { 0 } };
 	Melder_getDefaultDir (& saveDir);
 	Melder_setDefaultDir (dir);
 	Melder_relativePathToFile (path, file);
@@ -553,7 +544,7 @@ FILE * Melder_fopen (MelderFile file, const char *type) {
 	char utf8path [kMelder_MAXPATH+1];
 	Melder_str32To8bitFileRepresentation_inline (file -> path, utf8path);
 	FILE *f;
-	file -> openForWriting = type [0] == 'w' || type [0] == 'a' || strchr (type, '+');
+	file -> openForWriting = ( type [0] == 'w' || type [0] == 'a' || strchr (type, '+') );
 	if (str32equ (file -> path, U"<stdout>") && file -> openForWriting) {
 		f = stdout;
 	#ifdef CURLPRESENT
@@ -590,7 +581,7 @@ FILE * Melder_fopen (MelderFile file, const char *type) {
 		/* Handle errors. */
 		if (CURLreturn) {
 			Melder_appendError (Melder_peek8to32 (errorbuffer));
-			f = NULL;
+			f = nullptr;
 		};
 		/* Clean up session. */
 		curl_easy_cleanup (CURLhandle);
@@ -598,7 +589,7 @@ FILE * Melder_fopen (MelderFile file, const char *type) {
 		if (f) rewind (f);
 	#endif
 	} else {
-		#ifdef _WIN32
+		#if defined (_WIN32) && ! defined (__CYGWIN__)
 			f = _wfopen (Melder_peek32toW (file -> path), Melder_peek32toW (Melder_peek8to32 (type)));
 		#else
 			f = fopen ((char *) utf8path, type);
@@ -617,7 +608,7 @@ FILE * Melder_fopen (MelderFile file, const char *type) {
 		else if (str32chr (path, U'\n'))
 			Melder_appendError (U"Hint: file name contains a newline symbol.");
 		throw MelderError ();
-		return NULL;
+		return nullptr;
 	}
 	return f;
 }
@@ -666,7 +657,7 @@ void Melder_fclose (MelderFile file, FILE *f) {
 		/* Handle errors. */
 		if (CURLreturn) {
 			curl_easy_cleanup (CURLhandle);
-			f = NULL;
+			f = nullptr;
 			Melder_throw (Melder_peek8to32 (errorbuffer), U"\n");
 	    };
 		/* Clean up session */
@@ -677,7 +668,7 @@ void Melder_fclose (MelderFile file, FILE *f) {
 		Melder_throw (U"Error closing file ", file, U".");
 }
 
-void Melder_files_cleanUp (void) {
+void Melder_files_cleanUp () {
 	#if defined (CURLPRESENT)
 		if (curl_initialized) {
 			curl_global_cleanup ();
@@ -720,7 +711,7 @@ long MelderFile_length (MelderFile file) {
 		char utf8path [kMelder_MAXPATH+1];
 		Melder_str32To8bitFileRepresentation_inline (file -> path, utf8path);
 		struct stat statistics;
-		if (stat ((char *) utf8path, & statistics)) return -1;
+		if (stat ((char *) utf8path, & statistics) != 0) return -1;
 		return statistics. st_size;
 	#else
 		try {
@@ -738,12 +729,12 @@ long MelderFile_length (MelderFile file) {
 
 void MelderFile_delete (MelderFile file) {
 	if (! file) return;
-	#if defined (_WIN32)
-		DeleteFile (Melder_peek32toW (file -> path));
-	#else
+	#if defined (UNIX)
 		char utf8path [kMelder_MAXPATH+1];
 		Melder_str32To8bitFileRepresentation_inline (file -> path, utf8path);
 		remove ((char *) utf8path);
+	#elif defined (_WIN32)
+		DeleteFile (Melder_peek32toW (file -> path));
 	#endif
 }
 
@@ -766,22 +757,22 @@ const char32 * MelderFile_messageName (MelderFile file) {
 }
 
 void Melder_getDefaultDir (MelderDir dir) {
-	#if defined (_WIN32)
-		static WCHAR dirPathW [kMelder_MAXPATH+1];
-		GetCurrentDirectory (kMelder_MAXPATH+1, dirPathW);
-		Melder_sprint (dir -> path,kMelder_MAXPATH+1, Melder_peekWto32 (dirPathW));
-	#else
+	#if defined (UNIX)
 		char path [kMelder_MAXPATH+1];
 		getcwd (path, kMelder_MAXPATH+1);
 		Melder_8bitFileRepresentationToStr32_inline (path, dir -> path);
+	#elif defined (_WIN32)
+		static WCHAR dirPathW [kMelder_MAXPATH+1];
+		GetCurrentDirectory (kMelder_MAXPATH+1, dirPathW);
+		Melder_sprint (dir -> path,kMelder_MAXPATH+1, Melder_peekWto32 (dirPathW));
 	#endif
 }
 
 void Melder_setDefaultDir (MelderDir dir) {
-	#if defined (_WIN32)
-		SetCurrentDirectory (Melder_peek32toW (dir -> path));
-	#else
+	#if defined (UNIX)
 		chdir (Melder_peek32to8 (dir -> path));
+	#elif defined (_WIN32)
+		SetCurrentDirectory (Melder_peek32toW (dir -> path));
 	#endif
 }
 
@@ -792,22 +783,8 @@ void MelderFile_setDefaultDir (MelderFile file) {
 }
 
 void Melder_createDirectory (MelderDir parent, const char32 *dirName, int mode) {
-#if defined (_WIN32)
-	structMelderFile file = { 0 };
-	SECURITY_ATTRIBUTES sa;
-	(void) mode;
-	sa. nLength = sizeof (SECURITY_ATTRIBUTES);
-	sa. lpSecurityDescriptor = NULL;
-	sa. bInheritHandle = FALSE;
-	if (str32chr (dirName, U':') || dirName [0] == U'/' && dirName [1] == U'/') {
-		Melder_sprint (file. path,kMelder_MAXPATH+1, dirName);   // absolute path
-	} else {
-		Melder_sprint (file. path,kMelder_MAXPATH+1, parent -> path, U"/", dirName);   // relative path
-	}
-	if (! CreateDirectoryW (Melder_peek32toW (file. path), & sa) && GetLastError () != ERROR_ALREADY_EXISTS)   // ignore if directory already exists
-		Melder_throw (U"Cannot create directory ", & file, U".");
-#else
-	structMelderFile file = { 0 };
+#if defined (UNIX)
+	structMelderFile file { 0 };
 	if (dirName [0] == U'/') {
 		Melder_sprint (file. path,kMelder_MAXPATH+1, dirName);   // absolute path
 	} else if (parent -> path [0] == U'/' && parent -> path [1] == U'\0') {
@@ -819,6 +796,22 @@ void Melder_createDirectory (MelderDir parent, const char32 *dirName, int mode)
 	Melder_str32To8bitFileRepresentation_inline (file. path, utf8path);
 	if (mkdir (utf8path, mode) == -1 && errno != EEXIST)   // ignore if directory already exists
 		Melder_throw (U"Cannot create directory ", & file, U".");
+#elif defined (_WIN32)
+	structMelderFile file { 0 };
+	SECURITY_ATTRIBUTES sa;
+	(void) mode;
+	sa. nLength = sizeof (SECURITY_ATTRIBUTES);
+	sa. lpSecurityDescriptor = nullptr;
+	sa. bInheritHandle = false;
+	if (str32chr (dirName, U':') || dirName [0] == U'/' && dirName [1] == U'/') {
+		Melder_sprint (file. path,kMelder_MAXPATH+1, dirName);   // absolute path
+	} else {
+		Melder_sprint (file. path,kMelder_MAXPATH+1, parent -> path, U"/", dirName);   // relative path
+	}
+	if (! CreateDirectoryW (Melder_peek32toW (file. path), & sa) && GetLastError () != ERROR_ALREADY_EXISTS)   // ignore if directory already exists
+		Melder_throw (U"Cannot create directory ", & file, U".");
+#else
+	//#error Unsupported operating system.
 #endif
 }
 
@@ -838,8 +831,8 @@ char * MelderFile_readLine (MelderFile me) {
 	long i;
 	static char *buffer;
 	static long capacity;
-	if (! my filePointer) return NULL;
-	if (feof (my filePointer)) return NULL;
+	if (! my filePointer) return nullptr;
+	if (feof (my filePointer)) return nullptr;
 	if (! buffer) {
 		buffer = Melder_malloc (char, capacity = 100);
 	}
@@ -876,7 +869,7 @@ char * MelderFile_readLine (MelderFile me) {
 
 MelderFile MelderFile_create (MelderFile me) {
 	my filePointer = Melder_fopen (me, "wb");
-	my openForWriting = true;   // A bit superfluous (will have been set by Melder_fopen).
+	my openForWriting = true;   // a bit superfluous (will have been set by Melder_fopen)
 	return me;
 }
 
@@ -884,17 +877,17 @@ void MelderFile_seek (MelderFile me, long position, int direction) {
 	if (! my filePointer) return;
 	if (fseek (my filePointer, position, direction)) {
 		fclose (my filePointer);
-		my filePointer = NULL;
+		my filePointer = nullptr;
 		Melder_throw (U"Cannot seek in file ", me, U".");
 	}
 }
 
 long MelderFile_tell (MelderFile me) {
-	long result = 0;
 	if (! my filePointer) return 0;
-	if ((result = ftell (my filePointer)) == -1) {
+	long result = ftell (my filePointer);
+	if (result == -1) {
 		fclose (my filePointer);
-		my filePointer = NULL;
+		my filePointer = nullptr;
 		Melder_throw (U"Cannot tell in file ", me, U".");
 	}
 	return result;
@@ -911,7 +904,7 @@ static void _MelderFile_close (MelderFile me, bool mayThrow) {
 			FLAC__stream_encoder_finish (my flacEncoder);   // This already calls fclose! BUG: we cannot get any error messages out.
 			FLAC__stream_encoder_delete (my flacEncoder);
 		}
-	} else if (my filePointer != NULL) {
+	} else if (my filePointer) {
 		if (mayThrow) {
 			Melder_fclose (me, my filePointer);
 		} else {
@@ -919,10 +912,10 @@ static void _MelderFile_close (MelderFile me, bool mayThrow) {
 		}
 	}
 	/* Set everything to zero, except paths (they stay around for error messages and the like). */
-	my filePointer = NULL;
+	my filePointer = nullptr;
 	my openForWriting = my openForReading = false;
 	my indent = 0;
-	my flacEncoder = NULL;
+	my flacEncoder = nullptr;
 }
 void MelderFile_close (MelderFile me) {
 	_MelderFile_close (me, true);
diff --git a/sys/melder_ftoa.cpp b/sys/melder_ftoa.cpp
index e49a0fd..7e4acd7 100644
--- a/sys/melder_ftoa.cpp
+++ b/sys/melder_ftoa.cpp
@@ -2,37 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2002/11/30 Melder_fixed
- * pb 2002/12/01 Melder_single, Melder_half
- * pb 2003/05/13 Melder_percent
- * pb 2003/05/19 Melder_fixed: include a minimum precision of 1 digit
- * pb 2004/04/04 Melder_bigInteger
- * pb 2006/04/16 separated from melder.c
- * pb 2006/12/10 A and W versions
- * pb 2006/12/29 removed future bug
- * pb 2007/11/30 Melder_float
- * pb 2008/01/06 Mac: use strtod instead of wcstod for speed
- * pb 2010/10/16 Melder_naturalLogarithm
- * pb 2011/04/05 C++
- * pb 2014/01/09 use fabs in calculating minimum precision
- * pb 2015/05/28 char32
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -68,7 +49,7 @@ const char * Melder8_integer (int64 value) {
 		 * There are also buggy platforms (namely 32-bit gcc on Linux) that support long long and %I64d but that convert
 		 * the argument to a 32-bit long.
 		 */
-		static const char *formatString = NULL;
+		static const char *formatString = nullptr;
 		if (! formatString) {
 			char tryBuffer [MAXIMUM_NUMERIC_STRING_LENGTH + 1];
 			formatString = "%lld";
@@ -118,27 +99,27 @@ const char * Melder8_bigInteger (int64 value) {
 	bool firstDigitPrinted = false;
 	if (quintillions) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", quintillions);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	if (quadrillions || firstDigitPrinted) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", quadrillions);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	if (trillions || firstDigitPrinted) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", trillions);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	if (billions || firstDigitPrinted) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", billions);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	if (millions || firstDigitPrinted) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", millions);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	if (thousands || firstDigitPrinted) {
 		sprintf (text + strlen (text), firstDigitPrinted ? "%03d," : "%d,", thousands);
-		firstDigitPrinted = TRUE;
+		firstDigitPrinted = true;
 	}
 	sprintf (text + strlen (text), firstDigitPrinted ? "%03d" : "%d", units);
 	return text;
@@ -159,9 +140,9 @@ const char * Melder8_double (double value) {
 	if (value == NUMundefined) return "--undefined--";
 	if (++ ibuffer == NUMBER_OF_BUFFERS) ibuffer = 0;
 	sprintf (buffers8 [ibuffer], "%.15g", value);
-	if (strtod (buffers8 [ibuffer], NULL) != value) {
+	if (strtod (buffers8 [ibuffer], nullptr) != value) {
 		sprintf (buffers8 [ibuffer], "%.16g", value);
-		if (strtod (buffers8 [ibuffer], NULL) != value) {
+		if (strtod (buffers8 [ibuffer], nullptr) != value) {
 			sprintf (buffers8 [ibuffer], "%.17g", value);
 		}
 	}
@@ -253,24 +234,25 @@ const char32 * Melder_percent (double value, int precision) {
 
 const char32 * Melder_float (const char32 *number) {
 	if (++ ibuffer == NUMBER_OF_BUFFERS) ibuffer = 0;
-	if (str32chr (number, 'e') == NULL) {
+	if (! str32chr (number, 'e')) {
 		str32cpy (buffers32 [ibuffer], number);
 	} else {
 		char32 *b = buffers32 [ibuffer];
 		const char32 *n = number;
-		while (*n != 'e') *(b++) = *(n++); *b = '\0';
+		while (*n != U'e') *(b++) = *(n++); *b = U'\0';
 		if (number [0] == '1' && number [1] == 'e') {
 			str32cpy (buffers32 [ibuffer], U"10^^"); b = buffers32 [ibuffer] + 4;
 		} else {
-			str32cpy (buffers32 [ibuffer] + str32len (buffers32 [ibuffer]), U"·10^^"); b += 7;
+			str32cpy (buffers32 [ibuffer] + str32len (buffers32 [ibuffer]), U"·10^^"); b += 5;
 		}
-		Melder_assert (*n == 'e');
-		if (*++n == '+') n ++;   // ignore leading plus sign in exponent
-		if (*n == '-') *(b++) = *(n++);   // copy sign of negative exponent
-		while (*n == '0') n ++;   // ignore leading zeroes in exponent
-		while (*n >= '0' && *n <= '9') *(b++) = *(n++);
-		*(b++) = '^';
-		while (*n != '\0') *(b++) = *(n++); *b = '\0';
+		Melder_assert (*n == U'e');
+		if (*++n == U'+') n ++;   // ignore leading plus sign in exponent
+		if (*n == U'-') *(b++) = *(n++);   // copy sign of negative exponent
+		while (*n == U'0') n ++;   // ignore leading zeroes in exponent
+		while (*n >= U'0' && *n <= U'9') *(b++) = *(n++);
+		*(b++) = U'^';
+		while (*n != U'\0') *(b++) = *(n++);
+		*b = U'\0';
 	}
 	return buffers32 [ibuffer];
 }
@@ -279,19 +261,19 @@ const char * Melder8_naturalLogarithm (double lnNumber) {
 	if (lnNumber == NUMundefined) return "--undefined--";
 	if (lnNumber == -INFINITY) return "0";
 	double log10Number = lnNumber * NUMlog10e;
-	if (log10Number < -41) {
+	if (log10Number < -41.0) {
 		if (++ ibuffer == NUMBER_OF_BUFFERS) ibuffer = 0;
 		long ceiling = (long) ceil (log10Number);
 		double remainder = log10Number - ceiling;
-		double remainder10 = pow (10, remainder);
+		double remainder10 = pow (10.0, remainder);
 		while (remainder10 < 1.0) {
-			remainder10 *= 10;
+			remainder10 *= 10.0;
 			ceiling --;
 		}
 		sprintf (buffers8 [ibuffer], "%.15g", remainder10);
-		if (strtod (buffers8 [ibuffer], NULL) != remainder10) {
+		if (strtod (buffers8 [ibuffer], nullptr) != remainder10) {
 			sprintf (buffers8 [ibuffer], "%.16g", remainder10);
-			if (strtod (buffers8 [ibuffer], NULL) != remainder10) sprintf (buffers8 [ibuffer], "%.17g", remainder10);
+			if (strtod (buffers8 [ibuffer], nullptr) != remainder10) sprintf (buffers8 [ibuffer], "%.17g", remainder10);
 		}
 		sprintf (buffers8 [ibuffer] + strlen (buffers8 [ibuffer]), "e-%ld", ceiling);
 	} else {
diff --git a/sys/melder_info.cpp b/sys/melder_info.cpp
index 11daa23..4f74c68 100644
--- a/sys/melder_info.cpp
+++ b/sys/melder_info.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -32,7 +31,7 @@ void Melder_setInformationProc (void (*information) (const char32 *)) {
 
 static MelderString theForegroundBuffer = { 0 }, *theInfos = & theForegroundBuffer;
 
-void MelderInfo_open (void) {
+void MelderInfo_open () {
 	MelderString_empty (theInfos);
 }
 
@@ -432,7 +431,7 @@ void MelderInfo_writeLine (Melder_19_ARGS) {
 	}
 }
 
-void MelderInfo_close (void) {
+void MelderInfo_close () {
 	if (theInfos == & theForegroundBuffer) {
 		/*
 			When writing to the Info window or the console, we must add a newline symbol,
@@ -452,7 +451,7 @@ void MelderInfo_close (void) {
 	}
 }
 
-void MelderInfo_drain (void) {
+void MelderInfo_drain () {
 	if (theInfos == & theForegroundBuffer) {
 		if (theInformation != defaultInformation) {
 			theInformation (theInfos -> string ? theInfos -> string : U"");
@@ -464,7 +463,7 @@ void Melder_informationReal (double value, const char32 *units) {
 	MelderInfo_open ();
 	if (value == NUMundefined)
 		MelderInfo_write (U"--undefined--");
-	else if (units == NULL)
+	else if (! units)
 		MelderInfo_write (value);
 	else
 		MelderInfo_write (value, U" ", units);
@@ -472,10 +471,10 @@ void Melder_informationReal (double value, const char32 *units) {
 }
 
 void Melder_divertInfo (MelderString *buffer) {
-	theInfos = buffer == NULL ? & theForegroundBuffer : buffer;
+	theInfos = ( buffer ? buffer : & theForegroundBuffer );
 }
 
-void Melder_clearInfo (void) {
+void Melder_clearInfo () {
 	if (theInfos == & theForegroundBuffer) {
 		MelderString_empty (theInfos);
 		if (theInformation != defaultInformation) {
@@ -484,7 +483,7 @@ void Melder_clearInfo (void) {
 	}
 }
 
-const char32 * Melder_getInfo (void) {
+const char32 * Melder_getInfo () {
 	return theInfos -> string ? theInfos -> string : U"";
 }
 
diff --git a/sys/melder_quantity.cpp b/sys/melder_quantity.cpp
index 2846150..7a3f9f1 100644
--- a/sys/melder_quantity.cpp
+++ b/sys/melder_quantity.cpp
@@ -2,26 +2,18 @@
  *
  * Copyright (C) 2007-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/03/17 created
- * pb 2007/08/14 wchar
- * pb 2008/03/07 typo
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
diff --git a/sys/melder_readtext.cpp b/sys/melder_readtext.cpp
index 21d3715..34d0af8 100644
--- a/sys/melder_readtext.cpp
+++ b/sys/melder_readtext.cpp
@@ -2,29 +2,18 @@
  *
  * Copyright (C) 2008-2011,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/12/09 made MelderFile_readText ignore null bytes
- * pb 2008/11/04 split off from melder_strings.c and melder_encodings.c
- * pb 2010/03/09 support Unicode values above 0xFFFF
- * pb 2011/04/05 C++
- * pb 2011/07/03 C++
- * pb 2014/12/17 int64_t
- * pb 2015/05/26 char32
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -33,11 +22,11 @@
 #define my  me ->
 
 char32 MelderReadText_getChar (MelderReadText me) {
-	if (my string32 != NULL) {
-		if (* my readPointer32 == '\0') return 0;
+	if (my string32) {
+		if (* my readPointer32 == U'\0') return U'\0';
 		return * my readPointer32 ++;
 	} else {
-		if (* my readPointer8 == '\0') return 0;
+		if (* my readPointer8 == '\0') return U'\0';
 		if (my input8Encoding == kMelder_textInputEncoding_UTF8) {
 			char32 kar1 = (char32) (char8) * my readPointer8 ++;
 			if (kar1 <= 0x00007F) {
@@ -69,37 +58,37 @@ char32 MelderReadText_getChar (MelderReadText me) {
 }
 
 char32 * MelderReadText_readLine (MelderReadText me) {
-	if (my string32 != NULL) {
-		Melder_assert (my readPointer32 != NULL);
-		Melder_assert (my readPointer8 == NULL);
-		if (*my readPointer32 == '\0') {   // tried to read past end of file
-			return NULL;
+	if (my string32) {
+		Melder_assert (my readPointer32);
+		Melder_assert (! my readPointer8);
+		if (*my readPointer32 == U'\0') {   // tried to read past end of file
+			return nullptr;
 		}
 		char32 *result = my readPointer32;
 		char32 *newline = str32chr (result, U'\n');
-		if (newline != NULL) {
-			*newline = '\0';
+		if (newline) {
+			*newline = U'\0';
 			my readPointer32 = newline + 1;
 		} else {
 			my readPointer32 += str32len (result);
 		}
 		return result;
 	} else {
-		Melder_assert (my string8 != NULL);
-		Melder_assert (my readPointer32 == NULL);
-		Melder_assert (my readPointer8 != NULL);
+		Melder_assert (my string8);
+		Melder_assert (! my readPointer32);
+		Melder_assert (my readPointer8);
 		if (*my readPointer8 == '\0') {   // tried to read past end of file
-			return NULL;
+			return nullptr;
 		}
 		char *result8 = my readPointer8;
 		char *newline = strchr (result8, '\n');
-		if (newline != NULL) {
+		if (newline) {
 			*newline = '\0';
 			my readPointer8 = newline + 1;
 		} else {
 			my readPointer8 += strlen (result8);
 		}
-		static char32 *text32 = NULL;
+		static char32 *text32 = nullptr;
 		static int64 size = 0;
 		int64 sizeNeeded = (int64) strlen (result8) + 1;
 		if (sizeNeeded > size) {
@@ -112,9 +101,9 @@ char32 * MelderReadText_readLine (MelderReadText me) {
 	}
 }
 
-int64_t MelderReadText_getNumberOfLines (MelderReadText me) {
-	int64_t n = 0;
-	if (my string32 != NULL) {
+int64 MelderReadText_getNumberOfLines (MelderReadText me) {
+	int64 n = 0;
+	if (my string32) {
 		char32 *p = & my string32 [0];
 		for (; *p != U'\0'; p ++) if (*p == U'\n') n ++;
 		if (p - my string32 > 1 && p [-1] != U'\n') n ++;
@@ -127,8 +116,8 @@ int64_t MelderReadText_getNumberOfLines (MelderReadText me) {
 }
 
 const char32 * MelderReadText_getLineNumber (MelderReadText me) {
-	int64_t result = 1;
-	if (my string32 != NULL) {
+	int64 result = 1;
+	if (my string32) {
 		char32 *p = my string32;
 		while (my readPointer32 - p > 0) {
 			if (*p == U'\0' || *p == U'\n') result ++;
@@ -172,7 +161,7 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 			Melder_throw (U"Cannot count the bytes in the file.");
 		}
 		Melder_assert (sizeof (off_t) >= 8);
-		int64_t length = ftello (f);
+		int64 length = ftello (f);
 		rewind (f);
 		if (length >= 2) {
 			int firstByte = fgetc (f), secondByte = fgetc (f);
@@ -185,9 +174,9 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 		if (type == 0) {
 			rewind (f);   // length and type already set correctly.
 			autostring8 text8bit = Melder_malloc (char, length + 1);
-			Melder_assert (text8bit.peek() != NULL);
+			Melder_assert (text8bit.peek());
 			size_t numberOfBytesRead = fread_multi (text8bit.peek(), (size_t) length, f);
-			if ((int64_t) numberOfBytesRead < length)
+			if ((int64) numberOfBytesRead < length)
 				Melder_throw (U"The file contains ", length, U" bytes, but we could read only ",
 					numberOfBytesRead, U" of them.");
 			text8bit [length] = '\0';
@@ -195,14 +184,14 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 			 * Count and repair null bytes.
 			 */
 			if (length > 0) {
-				int64_t numberOfNullBytes = 0;
-				for (char *p = & text8bit [length - 1]; (int64_t) (p - text8bit.peek()) >= 0; p --) {
+				int64 numberOfNullBytes = 0;
+				for (char *p = & text8bit [length - 1]; (int64) (p - text8bit.peek()) >= 0; p --) {
 					if (*p == '\0') {
 						numberOfNullBytes += 1;
 						/*
 						 * Shift.
 						 */
-						for (char *q = p; (int64_t) (q - text8bit.peek()) < length; q ++) {
+						for (char *q = p; (int64) (q - text8bit.peek()) < length; q ++) {
 							*q = q [1];
 						}
 					}
@@ -211,10 +200,10 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 					Melder_warning (U"Ignored ", numberOfNullBytes, U" null bytes in text file ", file, U".");
 				}
 			}
-			if (string8 != NULL) {
+			if (string8) {
 				*string8 = text8bit.transfer();
 				(void) Melder_killReturns_inline (*string8);
-				return NULL;   // OK
+				return nullptr;   // OK
 			} else {
 				text.reset (Melder_8to32 (text8bit.peek(), 0));
 			}
@@ -222,7 +211,7 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 			length = length / 2 - 1;   // Byte Order Mark subtracted. Length = number of UTF-16 codes
 			text.reset (Melder_malloc (char32, length + 1));
 			if (type == 1) {
-				for (int64_t i = 0; i < length; i ++) {
+				for (int64 i = 0; i < length; i ++) {
 					char16 kar1 = bingetu2 (f);
 					if (kar1 < 0xD800) {
 						text [i] = (char32) kar1;   // convert up without sign extension
@@ -243,7 +232,7 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 					}
 				}
 			} else {
-				for (int64_t i = 0; i < length; i ++) {
+				for (int64 i = 0; i < length; i ++) {
 					char16 kar1 = bingetu2LE (f);
 					if (kar1 < 0xD800) {
 						text [i] = (char32) kar1;   // convert up without sign extension
@@ -277,16 +266,16 @@ static char32 * _MelderFile_readText (MelderFile file, char **string8) {
 }
 
 char32 * MelderFile_readText (MelderFile file) {
-	return _MelderFile_readText (file, NULL);
+	return _MelderFile_readText (file, nullptr);
 }
 
 MelderReadText MelderReadText_createFromFile (MelderFile file) {
 	autoMelderReadText me = Melder_calloc (struct structMelderReadText, 1);
 	my string32 = _MelderFile_readText (file, & my string8);
-	if (my string32 != NULL) {
+	if (my string32) {
 		my readPointer32 = & my string32 [0];
 	} else {
-		Melder_assert (my string8 != NULL);
+		Melder_assert (my string8);
 		my readPointer8 = & my string8 [0];
 		my input8Encoding = Melder_getInputEncoding ();
 		if (my input8Encoding == kMelder_textInputEncoding_UTF8 ||
@@ -313,7 +302,7 @@ MelderReadText MelderReadText_createFromFile (MelderFile file) {
 MelderReadText MelderReadText_createFromString (const char32 *string);
 
 void MelderReadText_delete (MelderReadText me) {
-	if (me == NULL) return;
+	if (! me) return;
 	Melder_free (my string32);
 	Melder_free (my string8);
 	Melder_free (me);
diff --git a/sys/melder_strings.cpp b/sys/melder_strings.cpp
index 90ad983..f028aaf 100644
--- a/sys/melder_strings.cpp
+++ b/sys/melder_strings.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2006-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -25,21 +24,21 @@
 static int64 totalNumberOfAllocations = 0, totalNumberOfDeallocations = 0, totalAllocationSize = 0, totalDeallocationSize = 0;
 
 void MelderString16_free (MelderString16 *me) {
-	if (my string == NULL) return;
+	if (! my string) return;
 	Melder_free (my string);
 	if (Melder_debug == 34) fprintf (stderr, "from MelderString16_free\t%p\t%lld\t%d\n", my string, (long long) my bufferSize, 2);
 	totalNumberOfDeallocations += 1;
-	totalDeallocationSize += my bufferSize * (int64_t) sizeof (char16_t);
+	totalDeallocationSize += my bufferSize * (int64) sizeof (char16_t);
 	my bufferSize = 0;
 	my length = 0;
 }
 
 void MelderString_free (MelderString *me) {
-	if (my string == NULL) return;
+	if (! my string) return;
 	Melder_free (my string);
 	if (Melder_debug == 34) fprintf (stderr, "from MelderString32_free\t%p\t%lld\t%d\n", my string, (long long) my bufferSize, 2);
 	totalNumberOfDeallocations += 1;
-	totalDeallocationSize += my bufferSize * (int64_t) sizeof (char32);
+	totalDeallocationSize += my bufferSize * (int64) sizeof (char32);
 	my bufferSize = 0;
 	my length = 0;
 }
@@ -97,7 +96,7 @@ void MelderString16_empty (MelderString16 *me) {
 	if (my bufferSize * (int64) sizeof (char16) >= FREE_THRESHOLD_BYTES) {
 		MelderString16_free (me);
 	}
-	int64_t sizeNeeded = 1;
+	int64 sizeNeeded = 1;
 	expandIfNecessary (char16)
 	my string [0] = '\0';
 	my length = 0;
@@ -419,7 +418,7 @@ void MelderString_copy (MelderString *me, Melder_19_ARGS) {
 void MelderString_ncopy (MelderString *me, const char32 *source, int64 n) {
 	if (my bufferSize * (int64) sizeof (char32) >= FREE_THRESHOLD_BYTES)
 		MelderString_free (me);
-	if (source == NULL) source = U"";
+	if (! source) source = U"";
 	int64 length = str32len (source);
 	if (length > n) length = n;
 	int64 sizeNeeded = length + 1;
@@ -753,19 +752,19 @@ void MelderString_get (MelderString *me, char32 *destination) {
 	}
 }
 
-int64 MelderString_allocationCount (void) {
+int64 MelderString_allocationCount () {
 	return totalNumberOfAllocations;
 }
 
-int64 MelderString_deallocationCount (void) {
+int64 MelderString_deallocationCount () {
 	return totalNumberOfDeallocations;
 }
 
-int64 MelderString_allocationSize (void) {
+int64 MelderString_allocationSize () {
 	return totalAllocationSize;
 }
 
-int64 MelderString_deallocationSize (void) {
+int64 MelderString_deallocationSize () {
 	return totalDeallocationSize;
 }
 
diff --git a/sys/melder_sysenv.cpp b/sys/melder_sysenv.cpp
index 308479e..97f9dd3 100644
--- a/sys/melder_sysenv.cpp
+++ b/sys/melder_sysenv.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
@@ -40,20 +39,22 @@
 #include "melder.h"
 
 char32 * Melder_getenv (const char32 *variableName) {
-	#if defined (macintosh) || defined (UNIX) || defined (__MINGW32__)
+	#if defined (macintosh) || defined (UNIX) || defined (__MINGW32__) || defined (__CYGWIN__)
 		return Melder_peek8to32 (getenv (Melder_peek32to8 (variableName)));
 	#elif defined (_WIN32)
 		static char32 buffer [11] [255];
 		static int ibuffer = 0;
 		if (++ ibuffer == 11) ibuffer = 0;
-		long n = GetEnvironmentVariableW (variableName, buffer [ibuffer], 255);
-		if (n == ERROR_ENVVAR_NOT_FOUND) return NULL;
+		long n = GetEnvironmentVariableW (variableName, buffer [ibuffer], 255);   BUG
+		if (n == ERROR_ENVVAR_NOT_FOUND) return nullptr;
 		return & buffer [ibuffer] [0];
+	#else
+		return nullptr;
 	#endif
 }
 
 void Melder_system (const char32 *command) {
-	if (command == NULL) command = U"";
+	if (! command) command = U"";
 	#if defined (macintosh) || defined (UNIX)
 		if (system (Melder_peek32to8 (command)) != 0)
 			Melder_throw (U"System command failed.");
@@ -61,11 +62,11 @@ void Melder_system (const char32 *command) {
 		STARTUPINFO siStartInfo;
 		PROCESS_INFORMATION piProcInfo;
 		char32 *comspec = Melder_getenv (U"COMSPEC");   // e.g. "C:\WINDOWS\COMMAND.COM" or "C:\WINNT\windows32\cmd.exe"
-		if (comspec == NULL) {
+		if (! comspec) {
 			comspec = Melder_getenv (U"ComSpec");
 		}
 		autoMelderString buffer;
-		if (comspec != NULL) {
+		if (comspec) {
 			MelderString_copy (& buffer, comspec);
 		} else {
 			OSVERSIONINFOEX osVersionInfo;
@@ -89,7 +90,7 @@ void Melder_system (const char32 *command) {
 		MelderString_append (& buffer, U" /c ", command);
         memset (& siStartInfo, 0, sizeof (siStartInfo));
         siStartInfo. cb = sizeof (siStartInfo);
-		if (! CreateProcess (NULL, Melder_peek32toW (buffer.string), NULL, NULL, TRUE, 0, NULL, NULL, & siStartInfo, & piProcInfo))
+		if (! CreateProcess (nullptr, Melder_peek32toW (buffer.string), nullptr, nullptr, true, CREATE_NO_WINDOW, nullptr, nullptr, & siStartInfo, & piProcInfo))
 			Melder_throw (U"Cannot create subprocess.");
 		WaitForSingleObject (piProcInfo. hProcess, -1);
 		CloseHandle (piProcInfo. hProcess);
diff --git a/sys/melder_textencoding.cpp b/sys/melder_textencoding.cpp
index 64411ab..c276e18 100644
--- a/sys/melder_textencoding.cpp
+++ b/sys/melder_textencoding.cpp
@@ -1,34 +1,19 @@
 /* melder_textencoding.cpp
  *
- * Copyright (C) 2007-2011,2014,2015 Paul Boersma
+ * Copyright (C) 2007-2011,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/06/02 utf8 <-> wcs
- * pb 2007/06/14 separated from melder_strings.c and melder_alloc.c
- * pb 2007/06/16 text encoding preferences
- * pb 2007/08/12 prefs in wchar
- * pb 2007/09/04 Melder_malloc rather than malloc in Melder_wcsToAscii (had caused an error in counting memory leaks)
- * pb 2007/10/06 Melder_peekWcsToCfstring
- * pb 2007/12/09 made MelderFile_writeCharacter compatible with the ISO Latin-1 preference
- * pb 2008/11/05 split off from melder_encodings.c
- * pb 2010/03/08 support for Unicode values above 0xFFFF
- * pb 2011/04/05 C++
- * pb 2011/07/04 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -39,11 +24,7 @@
 
 #if defined (macintosh)
 	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #else
-        #include <CoreFoundation/CoreFoundation.h>
-    #endif
+	#include <CoreFoundation/CoreFoundation.h>
 	#include "macport_off.h"
 #endif
 
@@ -53,12 +34,12 @@ static struct {
 } preferences;
 
 void Melder_setInputEncoding (enum kMelder_textInputEncoding encoding) { preferences. inputEncoding = encoding; }
-int Melder_getInputEncoding (void) { return preferences. inputEncoding; }
+int Melder_getInputEncoding () { return preferences. inputEncoding; }
 
 void Melder_setOutputEncoding (enum kMelder_textOutputEncoding encoding) { preferences. outputEncoding = encoding; }
-enum kMelder_textOutputEncoding Melder_getOutputEncoding (void) { return preferences. outputEncoding; }
+enum kMelder_textOutputEncoding Melder_getOutputEncoding () { return preferences. outputEncoding; }
 
-void Melder_textEncoding_prefs (void) {
+void Melder_textEncoding_prefs () {
 	Preferences_addEnum (U"TextEncoding.inputEncoding", & preferences. inputEncoding, kMelder_textInputEncoding, kMelder_textInputEncoding_DEFAULT);
 	Preferences_addEnum (U"TextEncoding.outputEncoding", & preferences. outputEncoding, kMelder_textOutputEncoding, kMelder_textOutputEncoding_DEFAULT);
 }
@@ -207,7 +188,7 @@ size_t str32len_utf16 (const char32 *string, bool nativizeNewlines) {
 }
 
 char32 * Melder_peek8to32 (const char *textA) {
-	if (textA == NULL) return NULL;
+	if (! textA) return nullptr;
 	static MelderString buffers [19] { { 0 } };
 	static int ibuffer = 0;
 	if (++ ibuffer == 11) ibuffer = 0;
@@ -420,21 +401,21 @@ void Melder_8to32_inline (const char *string8, char32 *string32, int inputEncodi
 }
 
 char32 * Melder_8to32 (const char *string, int inputEncoding) {
-	if (string == NULL) return NULL;
+	if (! string) return nullptr;
 	autostring32 result = Melder_malloc (char32, (int64) strlen (string) + 1);
 	Melder_8to32_inline (string, result.peek(), inputEncoding);
 	return result.transfer();
 }
 
 char32 * Melder_8to32 (const char *string) {
-	if (string == NULL) return NULL;
+	if (! string) return nullptr;
 	autostring32 result = Melder_malloc (char32, (int64) strlen (string) + 1);
 	Melder_8to32_inline (string, result.peek(), kMelder_textInputEncoding_UTF8);
 	return result.transfer();
 }
 
 char32 * Melder_peek16to32 (const char16 *text) {
-	if (text == NULL) return nullptr;
+	if (! text) return nullptr;
 	static MelderString buffers [19] { { 0 } };
 	static int ibuffer = 0;
 	if (++ ibuffer == 19) ibuffer = 0;
@@ -493,16 +474,16 @@ void Melder_32to8_inline (const char32 *string, char *utf8) {
 }
 
 char * Melder_32to8 (const char32 *string) {
-	if (string == NULL) return NULL;
-	autostring8 result = Melder_malloc (char, (int64_t) str32len_utf8 (string, true) + 1);
+	if (! string) return nullptr;
+	autostring8 result = Melder_malloc (char, (int64) str32len_utf8 (string, true) + 1);
 	Melder_32to8_inline (string, result.peek());
 	return result.transfer();
 }
 
 char * Melder_peek32to8 (const char32 *text) {
-	if (text == NULL) return NULL;
-	static char *buffer [19] = { NULL };
-	static int64 bufferSize [19] = { 0 };
+	if (! text) return nullptr;
+	static char *buffer [19] { nullptr };
+	static int64 bufferSize [19] { 0 };
 	static int ibuffer = 0;
 	if (++ ibuffer == 19) ibuffer = 0;
 	int64 sizeNeeded = str32len (text) * 4 + 1;
@@ -520,14 +501,14 @@ char * Melder_peek32to8 (const char32 *text) {
 }
 
 char16 * Melder_peek32to16 (const char32 *text, bool nativizeNewlines) {
-	if (text == NULL) return NULL;
-	static MelderString16 buffers [19] = { { 0 } };
+	if (! text) return nullptr;
+	static MelderString16 buffers [19] { { 0 } };
 	static int ibuffer = 0;
 	if (++ ibuffer == 19) ibuffer = 0;
 	MelderString16_empty (& buffers [ibuffer]);
-	int64_t n = str32len (text);
+	int64 n = str32len (text);
 	if (nativizeNewlines) {
-		for (int64_t i = 0; i <= n; i ++) {
+		for (int64 i = 0; i <= n; i ++) {
 			#ifdef _WIN32
 				if (text [i] == U'\n')
 					MelderString16_appendCharacter (& buffers [ibuffer], (char32) 13);
@@ -535,7 +516,7 @@ char16 * Melder_peek32to16 (const char32 *text, bool nativizeNewlines) {
 			MelderString16_appendCharacter (& buffers [ibuffer], text [i]);
 		}
 	} else {
-		for (int64_t i = 0; i <= n; i ++) {
+		for (int64 i = 0; i <= n; i ++) {
 			MelderString16_appendCharacter (& buffers [ibuffer], text [i]);
 		}
 	}
@@ -555,12 +536,12 @@ char16 * Melder_32to16 (const char32 *text) {
 
 #if defined (macintosh)
 const void * Melder_peek32toCfstring (const char32 *text) {
-	if (text == NULL) return NULL;
+	if (! text) return nullptr;
 	static CFStringRef cfString [11];
 	static int icfString = 0;
 	if (++ icfString == 11) icfString = 0;
-	if (cfString [icfString] != NULL) CFRelease (cfString [icfString]);
-	cfString [icfString] = CFStringCreateWithCString (NULL, (const char *) Melder_peek32to8 (text), kCFStringEncodingUTF8);
+	if (cfString [icfString]) CFRelease (cfString [icfString]);
+	cfString [icfString] = CFStringCreateWithCString (nullptr, (const char *) Melder_peek32to8 (text), kCFStringEncodingUTF8);
 	return cfString [icfString];
 }
 #endif
diff --git a/sys/melder_time.cpp b/sys/melder_time.cpp
index c09b4bc..25303a5 100644
--- a/sys/melder_time.cpp
+++ b/sys/melder_time.cpp
@@ -2,26 +2,18 @@
  *
  * Copyright (C) 1992-2011,2014 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2008/01/30 moved from Melder_audio.c
- * pb 2008/01/31 Win: use QueryPerformanceCounter
- * pb 2008/03/18 moved Melder_stopwatch here and made it call Melder_clock
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -29,6 +21,7 @@
 #if defined (macintosh) || defined (UNIX)
 	#include <time.h>
 	#include <sys/time.h>
+	#include <unistd.h>
 #elif defined (_WIN32)
 	#include <windows.h>
 #endif
@@ -87,7 +80,7 @@ uint64_t GetPIDTimeInNanoseconds(void)
 }
 */
 
-double Melder_clock (void) {
+double Melder_clock () {
 	#if defined (macintosh) || defined (UNIX)
 		/*
 		 * The clock counts the number of seconds elapsed since 1969.
@@ -117,7 +110,7 @@ double Melder_clock (void) {
 	#endif
 }
 
-double Melder_stopwatch (void) {
+double Melder_stopwatch () {
 	static double lastTime;
 	double now = Melder_clock ();
 	double timeElapsed = lastTime == 0 ? -1.0 : now - lastTime;
@@ -126,4 +119,13 @@ double Melder_stopwatch (void) {
 	return timeElapsed;
 }
 
+void Melder_sleep (double duration) {
+	if (duration <= 0.0) return;   // already past end time
+	#if defined (_WIN32)
+		Sleep (duration * 1e3);
+	#else
+		usleep (duration * 1e6);
+	#endif
+}
+
 /* End of file melder_time.cpp */
diff --git a/sys/melder_token.cpp b/sys/melder_token.cpp
index 6f8f774..b5b4793 100644
--- a/sys/melder_token.cpp
+++ b/sys/melder_token.cpp
@@ -2,26 +2,18 @@
  *
  * Copyright (C) 2006-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2006/04/16 created
- * pb 2007/08/10 wchar
- * pb 2007/11/18 moved Melder_get/free/searchToken(s) here
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -50,17 +42,17 @@ char32 *Melder_firstToken (const char32 *string) {
 	return Melder_tok (theMelderToken, U" \t\n\r");
 }
 
-char32 *Melder_nextToken (void) {
-	return Melder_tok (NULL, U" \t\n\r");
+char32 *Melder_nextToken () {
+	return Melder_tok (nullptr, U" \t\n\r");
 }
 
 char32 ** Melder_getTokens (const char32 *string, long *n) {
 	char32 *token;
 	long itoken = 0;
 	*n = Melder_countTokens (string);
-	if (*n == 0) return NULL;
+	if (*n == 0) return nullptr;
 	autostring32vector result (1, *n);
-	for (token = Melder_firstToken (string); token != NULL; token = Melder_nextToken ()) {
+	for (token = Melder_firstToken (string); token != nullptr; token = Melder_nextToken ()) {
 		result [++ itoken] = Melder_dup (token);
 	}
 	return result.transfer();
@@ -68,7 +60,7 @@ char32 ** Melder_getTokens (const char32 *string, long *n) {
 
 void Melder_freeTokens (char32 ***tokens) {
 	NUMvector_free (*tokens, 1);
-	*tokens = NULL;
+	*tokens = nullptr;
 }
 
 long Melder_searchToken (const char32 *string, char32 **tokens, long n) {
diff --git a/sys/melder_writetext.cpp b/sys/melder_writetext.cpp
index 25f26c0..5e33a78 100644
--- a/sys/melder_writetext.cpp
+++ b/sys/melder_writetext.cpp
@@ -1,34 +1,19 @@
 /* melder_writetext.cpp
  *
- * Copyright (C) 2007-2011,2015 Paul Boersma
+ * Copyright (C) 2007-2011,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2007/06/02 utf8 <-> wcs
- * pb 2007/06/14 separated from melder_strings.c and melder_alloc.c
- * pb 2007/06/16 text encoding preferences
- * pb 2007/08/12 prefs in wchar
- * pb 2007/09/04 Melder_malloc rather than malloc in Melder_wcsToAscii (had caused an error in counting memory leaks)
- * pb 2007/10/06 Melder_peekWcsToCfstring
- * pb 2007/12/09 made MelderFile_writeCharacter compatible with the ISO Latin-1 preference
- * pb 2007/12/09 made MelderFile_readText ignore null bytes
- * pb 2008/11/05 split off from melder_encodings.c
- * pb 2010/03/09 support Unicode values above 0xFFFF
- * pb 2011/04/05 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -36,36 +21,7 @@
 #include "UnicodeData.h"
 #include "abcio.h"
 
-#if defined (macintosh)
-	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
-	#include "macport_off.h"
-#endif
-
-static void Melder_fwriteUnicodeAsUtf8 (char32 unicode, FILE *f) {
-	if (unicode <= 0x0000007F) {
-		#ifdef _WIN32
-			if (unicode == '\n') fputc (13, f);
-		#endif
-		fputc ((int) unicode, f);   // because fputc wants an int instead of an uint8_t (guarded conversion)
-	} else if (unicode <= 0x000007FF) {
-		fputc (0xC0 | (unicode >> 6), f);
-		fputc (0x80 | (unicode & 0x0000003F), f);
-	} else if (unicode <= 0x0000FFFF) {
-		fputc (0xE0 | (unicode >> 12), f);
-		fputc (0x80 | ((unicode >> 6) & 0x0000003F), f);
-		fputc (0x80 | (unicode & 0x0000003F), f);
-	} else {
-		fputc (0xF0 | (unicode >> 18), f);
-		fputc (0x80 | ((unicode >> 12) & 0x0000003F), f);
-		fputc (0x80 | ((unicode >> 6) & 0x0000003F), f);
-		fputc (0x80 | (unicode & 0x0000003F), f);
-	}
-}
-
-void Melder_fwrite32to8 (const char32 *ptr, int64 n, FILE *f) {
+void Melder_fwrite32to8 (const char32 *string, FILE *f) {
 	/*
 	 * Precondition:
 	 *    the string's encoding is UTF-32.
@@ -73,16 +29,34 @@ void Melder_fwrite32to8 (const char32 *ptr, int64 n, FILE *f) {
 	 *    if the precondition does not hold, we don't crash,
 	 *    but the characters that are written may be incorrect.
 	 */
-	for (int64 i = 0; i < n; i ++) {
-		Melder_fwriteUnicodeAsUtf8 (ptr [i], f);
+	for (const char32* p = string; *p != U'\0'; p ++) {
+		char32 kar = *p;
+		if (kar <= 0x00007F) {
+			#ifdef _WIN32
+				if (kar == U'\n') fputc (13, f);
+			#endif
+			fputc ((int) kar, f);   // because fputc wants an int instead of an uint8_t (guarded conversion)
+		} else if (kar <= 0x0007FF) {
+			fputc (0xC0 | (kar >> 6), f);
+			fputc (0x80 | (kar & 0x00003F), f);
+		} else if (kar <= 0x00FFFF) {
+			fputc (0xE0 | (kar >> 12), f);
+			fputc (0x80 | ((kar >> 6) & 0x00003F), f);
+			fputc (0x80 | (kar & 0x00003F), f);
+		} else {
+			fputc (0xF0 | (kar >> 18), f);
+			fputc (0x80 | ((kar >> 12) & 0x00003F), f);
+			fputc (0x80 | ((kar >> 6) & 0x00003F), f);
+			fputc (0x80 | (kar & 0x00003F), f);
+		}
 	}
 }
 
 void MelderFile_writeText (MelderFile file, const char32 *text, enum kMelder_textOutputEncoding outputEncoding) {
-	if (text == NULL) text = U"";
+	if (! text) text = U"";
 	autofile f = Melder_fopen (file, "wb");
 	if (outputEncoding == kMelder_textOutputEncoding_UTF8) {
-		Melder_fwrite32to8 (text, str32len (text), f);
+		Melder_fwrite32to8 (text, f);
 	} else if ((outputEncoding == kMelder_textOutputEncoding_ASCII_THEN_UTF16 && Melder_isValidAscii (text)) ||
 		(outputEncoding == kMelder_textOutputEncoding_ISO_LATIN1_THEN_UTF16 && Melder_isEncodable (text, kMelder_textOutputEncoding_ISO_LATIN1)))
 	{
@@ -96,7 +70,7 @@ void MelderFile_writeText (MelderFile file, const char32 *text, enum kMelder_tex
 		for (size_t i = 0; i < n; i ++) {
 			char32 kar = text [i];
 			#ifdef _WIN32
-				if (kar == '\n') putc_unlocked (13, f);
+				if (kar == U'\n') putc_unlocked (13, f);
 			#endif
 			putc_unlocked (kar, f);
 		}
@@ -107,14 +81,14 @@ void MelderFile_writeText (MelderFile file, const char32 *text, enum kMelder_tex
 		for (size_t i = 0; i < n; i ++) {
 			char32 kar = text [i];
 			#ifdef _WIN32
-				if (kar == '\n') binputu2 (13, f);
+				if (kar == U'\n') binputu2 (13, f);
 			#endif
 			if (kar <= 0x00FFFF) {
-				binputu2 ((char16_t) kar, f);   // guarded conversion down
+				binputu2 ((char16) kar, f);   // guarded conversion down
 			} else if (kar <= 0x10FFFF) {
 				kar -= 0x010000;
-				binputu2 (0xD800 | (uint16_t) (kar >> 10), f);
-				binputu2 (0xDC00 | (uint16_t) ((char16) kar & 0x3ff), f);
+				binputu2 (0xD800 | (uint16) (kar >> 10), f);
+				binputu2 (0xDC00 | (uint16) ((char16) kar & 0x3ff), f);
 			} else {
 				binputu2 (UNICODE_REPLACEMENT_CHARACTER, f);
 			}
@@ -124,7 +98,7 @@ void MelderFile_writeText (MelderFile file, const char32 *text, enum kMelder_tex
 }
 
 void MelderFile_appendText (MelderFile file, const char32 *text) {
-	if (text == NULL) text = U"";
+	if (! text) text = U"";
 	autofile f1;
 	try {
 		f1.reset (Melder_fopen (file, "rb"));
@@ -148,7 +122,7 @@ void MelderFile_appendText (MelderFile file, const char32 *text) {
 		int outputEncoding = Melder_getOutputEncoding ();
 		if (outputEncoding == kMelder_textOutputEncoding_UTF8) {   // TODO: read as file's encoding
 			autofile f2 = Melder_fopen (file, "ab");
-			Melder_fwrite32to8 (text, str32len (text), f2);
+			Melder_fwrite32to8 (text, f2);
 			f2.close (file);
 		} else if ((outputEncoding == kMelder_textOutputEncoding_ASCII_THEN_UTF16 && Melder_isEncodable (text, kMelder_textOutputEncoding_ASCII))
 		    || (outputEncoding == kMelder_textOutputEncoding_ISO_LATIN1_THEN_UTF16 && Melder_isEncodable (text, kMelder_textOutputEncoding_ISO_LATIN1)))
@@ -193,7 +167,7 @@ void MelderFile_appendText (MelderFile file, const char32 *text) {
 			for (int64 i = 0; i < n; i ++) {
 				char32 kar = text [i];
 				#ifdef _WIN32
-					if (kar == '\n') binputu2 (13, f2);
+					if (kar == U'\n') binputu2 (13, f2);
 				#endif
 				if (kar <= 0x00FFFF) {
 					binputu2 ((uint16) kar, f2);   // guarded conversion down
@@ -246,7 +220,7 @@ void MelderFile_appendText (MelderFile file, const char32 *text) {
 }
 
 static void _MelderFile_write (MelderFile file, const char32 *string) {
-	if (string == NULL) return;
+	if (! string) return;
 	int64 length = str32len (string);
 	FILE *f = file -> filePointer;
 	if (file -> outputEncoding == kMelder_textOutputEncoding_ASCII || file -> outputEncoding == kMelder_textOutputEncoding_ISO_LATIN1) {
@@ -280,11 +254,11 @@ static void _MelderFile_write (MelderFile file, const char32 *string) {
 			char32 kar = string [i];
 			if (kar == U'\n' && file -> requiresCRLF) binputu2 (13, f);
 			if (kar <= 0x00FFFF) {
-				binputu2 ((char16_t) kar, f);
+				binputu2 ((char16) kar, f);
 			} else if (kar <= 0x10FFFF) {
 				kar -= 0x010000;
-				binputu2 (0xD800 | (char16_t) (kar >> 10), f);
-				binputu2 (0xDC00 | (char16_t) ((char16_t) kar & 0x03ff), f);
+				binputu2 (0xD800 | (char16) (kar >> 10), f);
+				binputu2 (0xDC00 | (char16) ((char16) kar & 0x03ff), f);
 			} else {
 				binputu2 (UNICODE_REPLACEMENT_CHARACTER, f);
 			}
@@ -329,29 +303,29 @@ void MelderFile_writeCharacter (MelderFile file, char32 kar) {
 }
 
 void MelderFile_write (MelderFile file, Melder_1_ARG) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_2_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_3_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_4_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
 	_MelderFile_write (file, arg4. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_5_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -359,7 +333,7 @@ void MelderFile_write (MelderFile file, Melder_5_ARGS) {
 	_MelderFile_write (file, arg5. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_6_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -368,7 +342,7 @@ void MelderFile_write (MelderFile file, Melder_6_ARGS) {
 	_MelderFile_write (file, arg6. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_7_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -378,7 +352,7 @@ void MelderFile_write (MelderFile file, Melder_7_ARGS) {
 	_MelderFile_write (file, arg7. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_8_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -389,7 +363,7 @@ void MelderFile_write (MelderFile file, Melder_8_ARGS) {
 	_MelderFile_write (file, arg8. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_9_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -401,7 +375,7 @@ void MelderFile_write (MelderFile file, Melder_9_ARGS) {
 	_MelderFile_write (file, arg9. _arg);
 }
 void MelderFile_write (MelderFile file, Melder_10_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -414,7 +388,7 @@ void MelderFile_write (MelderFile file, Melder_10_ARGS) {
 	_MelderFile_write (file, arg10._arg);
 }
 void MelderFile_write (MelderFile file, Melder_11_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -428,7 +402,7 @@ void MelderFile_write (MelderFile file, Melder_11_ARGS) {
 	_MelderFile_write (file, arg11._arg);
 }
 void MelderFile_write (MelderFile file, Melder_13_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -444,7 +418,7 @@ void MelderFile_write (MelderFile file, Melder_13_ARGS) {
 	_MelderFile_write (file, arg13._arg);
 }
 void MelderFile_write (MelderFile file, Melder_15_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
@@ -462,7 +436,7 @@ void MelderFile_write (MelderFile file, Melder_15_ARGS) {
 	_MelderFile_write (file, arg15._arg);
 }
 void MelderFile_write (MelderFile file, Melder_19_ARGS) {
-	if (file -> filePointer == NULL) return;
+	if (! file -> filePointer) return;
 	_MelderFile_write (file, arg1. _arg);
 	_MelderFile_write (file, arg2. _arg);
 	_MelderFile_write (file, arg3. _arg);
diff --git a/sys/motifEmulator.cpp b/sys/motifEmulator.cpp
index 0e62c4c..14c663a 100644
--- a/sys/motifEmulator.cpp
+++ b/sys/motifEmulator.cpp
@@ -1,53 +1,21 @@
 /* motifEmulator.cpp
  *
- * Copyright (C) 1993-2011,2012,2015 Paul Boersma
+ * Copyright (C) 1993-2011,2012,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/*
- * pb 2002/03/07 GPL
- * pb 2002/10/12 external definition of availability of Appearance
- * pb 2003/11/02 Mac: if the delete response is UNMAP, call XtUnmanageChild rather than just HideWindow
- *               (makes a difference if a warning message is clicked away through the GoAway button)
- * pb 2003/11/28 Mac: set the above back to just HideWindow plus clearing the modal-dialog and active-text pointers
- * pb 2003/11/28 Win: did the same for Windows!
- *               (this solved an age old bug in Praat by which the picture window could not be closed twice)
- * pb 2004/01/01 extracted text handling to GuiText.c
- * pb 2004/02/28 MacOS X: used SetControlMaximum (32767) to work around MacOS X feature in setting popup control
- * pb 2004/11/24 separated labels from cascade buttons
- * pb 2005/09/01 assume that we have Appearance (i.e. System 8.5 or up)
- * pb 2006/08/07 Windows: remove quotes from around path names when calling the openDocument callback
- * pb 2006/10/28 erased MacOS 9 stuff
- * pb 2006/11/06 Carbon control creation functions
- * pb 2007/01/25 XmATTACH_POSITION
- * pb 2007/02/13 Win: removed Ctrl-. as meaning Escape
- * pb 2007/08/07 GuiMacDrawingArea_clipOn_graphicsContext
- * pb 2007/10/06 wchar
- * pb 2007/10/16 Unicode support in lists
- * pb 2007/12/15 userData
- * pb 2007/12/26 extractions to Gui*.c
- * pb 2007/12/30 extractions to Gui*.c
- * pb 2008/10/05 better tab navigation
- * pb 2010/01/04 Mac: implement forward delete
- * pb 2010/01/08 Mac: support Command-`
- * pb 2010/06/14 Mac: live scrolling
- * pb 2010/07/30 Mac: in calling CreatePopupButtonControl, have -12345 as the menu item
- *              (Apple's special number for delayed menu attachment); needed for stand-alone Praat demo window
- * pb 2011/04/06 C++
- */
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -59,77 +27,30 @@
 #include "machine.h"
 
 static void (*theOpenDocumentCallback) (MelderFile file);
-static int (*theQuitApplicationCallback) (void);
+static int (*theQuitApplicationCallback) ();
 
-#if defined (macintosh) && useCarbon || defined (_WIN32)
+#if defined (_WIN32)
 
 /* The Motif emulator for Macintosh and Windows. */
 
 #define PRAAT_WINDOW_CLASS_NUMBER  1
 
-#if win
-	#define SCROLL32  1
-#else
-	#define SCROLL32  0
-#endif
-
-#if mac
-	#include "macport_on.h"
-	#include <Carbon/Carbon.h>
-#endif
+#define SCROLL32  1
 
 /*
  * The MEMBER macros only work if klas1 etc are no macros themselves.
  * Therefore, we undefine those who are:
  */
-#if win
-	#undef MessageBox
-#endif
+#undef MessageBox
 
 #define _motif_SHIFT_MASK  1
 #define _motif_COMMAND_MASK  2
 #define _motif_OPTION_MASK  4
 
-#if mac
-	void motif_mac_defaultFont (void) {
-		TextFont (systemFont);
-		TextSize (13);
-		TextFace (0);
-	}
-	static BitMap theScreenBits;
-#endif
-
-/* The following variable controls the focus policy of Mac Motif.
- * The Macintosh focus policy is: there is only one active window at a time,
- * and a click on an inactive window causes that window to become active,
- * without responding any further to that click.
- * This is appropriate for small screens, where multiple windows are usually stacked
- * on top of one another, and only a small part of background windows is visible.
- * The Motif focus policy is: all windows are active, and a click in any window causes
- * that window to respond as if it were in front.
- * This is appropriate for large screens, where multiple windows are often tiled about the screen.
- * One of the purposes of Mac Motif is to produce Macintosh look-and-feel,
- * which would require the Macintosh focus policy,
- * but as Macintosh screens are growing larger, you might prefer the faster Motif focus policy,
- * if your screen is large.
- * Therefore, you can choose:
- */
-static const int BACKGROUND_WINDOWS_ARE_ACTIVE = 0;   /* 0 = Mac, 1 = Motif. */
-
-#if win
-	#define CELL_HEIGHT  15
-	#define MESSAGE_BOX_BUTTON_WIDTH  100
-#elif mac
-	static int USE_QUESTION_MARK_HELP_MENU = 0;
-	#define CELL_HEIGHT  16
-	#define MESSAGE_BOX_BUTTON_WIDTH  120
-#endif
+#define CELL_HEIGHT  15
+#define MESSAGE_BOX_BUTTON_WIDTH  100
 
-#if win
-	static void _motif_update (GuiObject me, void *event);
-#elif mac
-	static void _motif_update (GuiObject me, EventRecord *event);
-#endif
+static void _motif_update (GuiObject me, void *event);
 
 /********** Resource names. **********/
 
@@ -143,40 +64,23 @@ static const char *motif_resourceNames [] = {
 
 /* Modes. */
 
-struct Gui theGui;   /* Global variable. */
+struct Gui theGui;   // global variable
 
 /********** XWindows routines. **********/
 
 void XMapRaised (int displayDummy, Window window) {
 	(void) displayDummy;
-	#if win
-		ShowWindow ((HWND) window, SW_SHOW);
-		SetForegroundWindow ((HWND) window);
-	#elif mac
-		ShowWindow ((WindowPtr) window);
-		if (theGui.modalDialog && theGui.modalDialog != (WindowPtr) window) {
-			SendBehind ((WindowPtr) window, theGui.modalDialog);
-		} else {
-			SelectWindow ((WindowPtr) window);
-		}
-	#endif
+	ShowWindow ((HWND) window, SW_SHOW);
+	SetForegroundWindow ((HWND) window);
 }
 
 int WidthOfScreen (int screen) {
 	(void) screen;
-	#if win
-		return GetSystemMetrics (SM_CXMAXIMIZED);
-	#elif mac
-		return GetQDGlobalsScreenBits (& theScreenBits) -> bounds.right;
-	#endif
+	return GetSystemMetrics (SM_CXMAXIMIZED);
 }
 int HeightOfScreen (int screen) {
 	(void) screen;
-	#if win
-		return GetSystemMetrics (SM_CYMAXIMIZED);
-	#elif mac
-		return GetQDGlobalsScreenBits (& theScreenBits) -> bounds.bottom - 22;
-	#endif
+	return GetSystemMetrics (SM_CYMAXIMIZED);
 }
 
 /********** X Toolkit **********/
@@ -186,62 +90,26 @@ void _Gui_callCallbacks (GuiObject w, XtCallbackList *callbacks, XtPointer call)
 		if (callbacks -> pairs [i]. proc) callbacks -> pairs [i]. proc (w, callbacks -> pairs [i]. closure, call);
 }
 
-/* Scratch. */
-
-#if mac
-	static Str255 mac_text;
-#endif
-
-/* Convenience. */
-
-#if mac
-	#define PfromCstr(p,c) p [0] = strlen (c), strcpy ((char *) p + 1, c);
-#endif
-
 /* When dispatching events to widgets, we must translate from the identifier of a Macintosh
  * screen object (Window, Control, menu item) to a GuiObject.
  * Mac windows and controls have RefCon fields in their WindowRecord or ControlRecord,
  * so we put a reference to the widget in the appropriate RefCon field at window or control creation time.
  * Instead of RefCons, the menus are remembered here:
  */
-#if win
-	#define MAXIMUM_NUMBER_OF_MENUS  4000
-#elif mac
-	#define MAXIMUM_NUMBER_OF_MENUS  32767
-#endif
+#define MAXIMUM_NUMBER_OF_MENUS  4000
 static GuiObject theMenus [1+MAXIMUM_NUMBER_OF_MENUS];   // we can freely use and reuse these menu ids
-#if win
-	static int theCommandShow = False;   // last argument of WinMain
-	static char32 theApplicationName [100], theWindowClassName [100], theDrawingAreaClassName [100], theApplicationClassName [100];
-	char32 * _GuiWin_getDrawingAreaClassName (void) { return theDrawingAreaClassName; }
-	static int (*theUserMessageCallback) (void);
-	#define MINIMUM_MENU_ITEM_ID  (MAXIMUM_NUMBER_OF_MENUS + 1)
-	#define MAXIMUM_MENU_ITEM_ID  32767
-	static short theMenuItems [1+MAXIMUM_MENU_ITEM_ID];   // we can freely use and reuse the item ids 4001..32767
-#elif mac
-	static GuiObject theMenuBar;   // there is only one menu bar on the Macintosh
-	static int theHelpMenuOffset;   // the number of items in the global help menu before we add the first item
-	static int (*theUserMessageCallback) (char32 *message);
-#endif
+static char32 theApplicationName [100], theWindowClassName [100], theDrawingAreaClassName [100], theApplicationClassName [100];
+char32 * _GuiWin_getDrawingAreaClassName () { return theDrawingAreaClassName; }
+static int (*theUserMessageCallback) ();
+#define MINIMUM_MENU_ITEM_ID  (MAXIMUM_NUMBER_OF_MENUS + 1)
+#define MAXIMUM_MENU_ITEM_ID  32767
+static short theMenuItems [1+MAXIMUM_MENU_ITEM_ID];   // we can freely use and reuse the item ids 4001..32767
 
 static GuiObject theApplicationShell;   // for global menus
-#define MAXIMUM_NUMBER_OF_SHELLS  1000
-static GuiObject theShells [MAXIMUM_NUMBER_OF_SHELLS];   // for XmUpdateDisplay and suspend events
 static int theBackground = False;   // set by suspend and resume events; used by Motif-style activation methods
 static int theDialogHint = False;   // should the shell that is currently being created, have dialog or document looks?
 long numberOfWidgets = 0;
-long Gui_getNumberOfMotifWidgets (void) { return numberOfWidgets; }
-
-static void _motif_addShell (GuiObject me) {
-	int i;
-	for (i = 0; i < MAXIMUM_NUMBER_OF_SHELLS; i ++)
-		if (theShells [i] == NULL) { theShells [i] = me; break; }
-}
-static void _motif_removeShell (GuiObject me) {
-	int i;
-	for (i = 0; i < MAXIMUM_NUMBER_OF_SHELLS; i ++)
-		if (theShells [i] == me) { theShells [i] = NULL; break; }
-}
+long Gui_getNumberOfMotifWidgets () { return numberOfWidgets; }
 
 /* AppContext level */
 
@@ -252,13 +120,8 @@ static XtPointer theWorkProcClosures [10];
 static int theNumberOfTimeOuts;
 static XtTimerCallbackProc theTimeOutProcs [10];
 static XtPointer theTimeOutClosures [10];
-#if defined (macintosh)
-	static EventLoopTimerRef theTimers [10];
-	static EventTargetRef theUserFocusEventTarget;
-#else
-	static clock_t theTimeOutStarts [10];
-	static unsigned long theTimeOutIntervals [10];
-#endif
+static clock_t theTimeOutStarts [10];
+static unsigned long theTimeOutIntervals [10];
 
 static void Native_move (GuiObject w, int dx, int dy);   // forward
 
@@ -269,47 +132,33 @@ static void cb_scroll (GuiObject scrollBar, XtPointer closure, XtPointer call) {
 	int horizontal = scrolledWindow -> motiff.scrolledWindow.horizontalBar == scrollBar;
 	(void) call;
 	if (! workWindow) return;
-	Melder_assert (scrolledWindow -> motiff.scrolledWindow.clipWindow != NULL);
-	#if win
-		previousShift = horizontal ?
-			scrolledWindow -> motiff.scrolledWindow.clipWindow -> x - workWindow -> x :
-			scrolledWindow -> motiff.scrolledWindow.clipWindow -> y - workWindow -> y;
-	#elif mac
-		previousShift = horizontal ?
-			scrolledWindow -> motiff.scrolledWindow.clipWindow -> rect. left - workWindow -> rect. left :
-			scrolledWindow -> motiff.scrolledWindow.clipWindow -> rect. top - workWindow -> rect. top;   // different?
-	#endif
+	Melder_assert (scrolledWindow -> motiff.scrolledWindow.clipWindow);
+	previousShift = horizontal ?
+		scrolledWindow -> motiff.scrolledWindow.clipWindow -> x - workWindow -> x :
+		scrolledWindow -> motiff.scrolledWindow.clipWindow -> y - workWindow -> y;
 	newShift = scrollBar -> value;
 	distance = previousShift - newShift;
 	if (horizontal)
 		{ workWindow -> x += distance; Native_move (workWindow, distance, 0); }
 	else
 		{ workWindow -> y += distance; Native_move (workWindow, 0, distance); }
-	XmUpdateDisplay (NULL);   // if dragging
+	GdiFlush ();   // for dragging
 }
 
 /* These are like the toolkit's query_geometry methods: */
 
 static int Native_titleWidth (GuiObject me) {
-	#if win
-		if (my parent -> window) {
-			HDC dc = GetDC (my parent -> window);
-			SIZE size;
-			SelectFont (dc, GetStockFont (ANSI_VAR_FONT));   // possible BUG
-			WCHAR *nameW = Melder_peek32toW (my name);
-			GetTextExtentPoint32 (dc, nameW, wcslen (nameW), & size);
-			ReleaseDC (my parent -> window, dc);
-			return size. cx;
-		} else return 7 * str32len (my name);
-	#elif mac
-		int width;
-		SetPortWindowPort (my macWindow);
-		motif_mac_defaultFont ();
-		char *nameA = Melder_peek32to8 (my name);
-		width = TextWidth ((Ptr) nameA, 0, strlen (nameA));
-		motif_mac_defaultFont ();
-		return width;
-	#endif
+	if (my parent -> window) {
+		HDC dc = GetDC (my parent -> window);
+		SIZE size;
+		SelectFont (dc, GetStockFont (ANSI_VAR_FONT));   // possible BUG
+		WCHAR *nameW = Melder_peek32toW (my name);
+		GetTextExtentPoint32 (dc, nameW, wcslen (nameW), & size);
+		ReleaseDC (my parent -> window, dc);
+		return size. cx;
+	} else {
+		return 7 * str32len (my name);
+	}
 }
 
 static int NativeLabel_preferredWidth (GuiObject me) {
@@ -344,9 +193,9 @@ GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32
 	/*
 	 * Install me into my parent's list of children.
 	 */
-	if (parent == NULL) {
+	if (! parent) {
 		;
-	} else if (parent -> firstChild == NULL) {
+	} else if (! parent -> firstChild) {
 		parent -> firstChild = me;
 	} else {
 		GuiObject lastChild = parent -> firstChild;
@@ -366,12 +215,12 @@ GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32
 	if (MEMBER (me, Shell)) {
 		my shell = me;
 	} else {
-		my shell = parent ? parent -> shell : NULL;
+		my shell = parent ? parent -> shell : nullptr;
 		#if mac
 			/*
 			 * I am in the same shell as my parent, so I'll inherit my parent's Macintosh WindowRef.
 			 */
-			my macWindow = parent ? parent -> macWindow : NULL;
+			my macWindow = parent ? parent -> macWindow : nullptr;
 		#endif
 	}
 
@@ -428,7 +277,7 @@ GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32
 				my width = NativeButton_preferredWidth (me);
 				my height = NativeButton_preferredHeight (me) + 4;   // BUG: menu bar should be large enough
 			} else {
-				my motiff.cascadeButton.inBar = TRUE;
+				my motiff.cascadeButton.inBar = true;
 			}
 		} break; case xmToggleButtonWidgetClass: {
 			my x = 2;
@@ -495,16 +344,6 @@ GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32
 	if (my width < 0) my width = 0;
 	if (my height < 0) my height = 0;
 
-	#if mac
-		/* Determine enclosing rectangle in macwindow co-ordinates. */
-		if (! MEMBER (me, Shell) && my parent && ! MEMBER (my parent, Shell)) {
-			my rect.left = parent -> rect.left + my x;
-			my rect.top = parent -> rect.top + my y;
-		}
-		my rect.right = my rect.left + my width;
-		my rect.bottom = my rect.top + my height;
-	#endif
-
 	/* Automatic attachment of dialog to parent shell. */
 
 	if (MEMBER2 (me, BulletinBoard, Form) && MEMBER (my parent, Shell))
@@ -522,182 +361,31 @@ GuiObject _Gui_initializeWidget (int widgetClass, GuiObject parent, const char32
 
 	if (my parent && MEMBER (my parent, ScrolledWindow) &&
 		! MEMBER (me, ScrollBar) &&   // 'me' is one of the two scroll bars, or a new one
-		my parent -> motiff.scrolledWindow.clipWindow != NULL)   // 'me' is probably the clip window now
+		my parent -> motiff.scrolledWindow.clipWindow)   // 'me' is probably the clip window now
 			my parent -> motiff.scrolledWindow.workWindow = me;   // install
 	return me;
 }
 
-/********** CLIPPING AND VIEW VALIDATION ROUTINES **********/
-
-#if mac
-	/* These routines use Mac position information only (i.e., the 'rect' attribute).
-	 * They do not use Motif position information (i.e., the 'x', 'y', 'width', and 'height' attributes.
-	 */
-
-	/* The largest possible rect on a Mac, used for "no clip". */
-	static Rect _motif_wideRect = { -32768, -32768, 32767, 32767 };
-	static Rect _motif_clipRect;
-
-	void _GuiMac_clipOnParent (GuiObject me) {
-		/* The 'clipRect' will be the intersection of the rects of all its ancestors,
-		 * stopping before a shell and making side steps at scrolled windows.
-		 */
-		GuiObject parent;
-		Rect clipRect = _motif_wideRect;
-		for (parent = my parent; ! MEMBER (parent, Shell); parent = parent -> parent) {
-			Rect *parentRect = & parent -> rect;
-			if (MEMBER (parent, ScrolledWindow)) {
-				if (MEMBER (me, ScrollBar)) {
-					parentRect = & my rect;
-				} else {
-					if (parent -> motiff.scrolledWindow.clipWindow == NULL) return;   // during destruction
-					parentRect = & parent -> motiff.scrolledWindow.clipWindow -> rect;
-				}
-			}
-			if (parentRect -> left > clipRect. left) clipRect. left = parentRect -> left;
-			if (parentRect -> right < clipRect. right) clipRect. right = parentRect -> right;
-			if (parentRect -> top > clipRect. top) clipRect. top = parentRect -> top;
-			if (parentRect -> bottom < clipRect. bottom) clipRect. bottom = parentRect -> bottom;
-		}
-		/*if (MEMBER (me, PushButton) && me == my shell -> defaultButton)
-			clipRect. left -= 3, clipRect. right += 3, clipRect. top -= 3, clipRect. bottom += 3;*/
-		SetPortWindowPort (my macWindow);
-		ClipRect (& clipRect);
-		_motif_clipRect = clipRect;
-	}
-
-	void GuiMac_clipOff (void) { ClipRect (& _motif_wideRect); }
-
-	void _GuiMac_clipOffValid (GuiObject me) {
-		Rect clipRect = _motif_clipRect;
-		if (my rect. left > clipRect. left) clipRect. left = my rect. left;
-		if (my rect. right < clipRect. right) clipRect. right = my rect. right;
-		if (my rect. top > clipRect. top) clipRect. top = my rect. top;
-		if (my rect. bottom < clipRect. bottom) clipRect. bottom = my rect. bottom;
-		SetPortWindowPort (my macWindow);
-		ValidWindowRect (my macWindow, & clipRect);
-		ClipRect (& _motif_wideRect);
-	}
-
-	void _GuiMac_clipOffInvalid (GuiObject me) {
-		Rect clipRect = _motif_clipRect;
-		if (my rect. left > clipRect. left) clipRect. left = my rect. left;
-		if (my rect. right < clipRect. right) clipRect. right = my rect. right;
-		if (my rect. top > clipRect. top) clipRect. top = my rect. top;
-		if (my rect. bottom < clipRect. bottom) clipRect. bottom = my rect. bottom;
-		SetPortWindowPort (my macWindow);
-		InvalWindowRect (my macWindow, & clipRect);
-		ClipRect (& _motif_wideRect);
-	}
-
-	void GuiMac_clipOn (GuiObject me) {
-		GuiObject parent;
-		Rect clipRect = my rect;
-		for (parent = my parent; ! MEMBER (parent, Shell); parent = parent -> parent) {
-			Rect *parentRect = & parent -> rect;
-			if (MEMBER (parent, ScrolledWindow)) {
-				if (MEMBER (me, ScrollBar)) {
-					parentRect = & my rect;
-				} else {
-					Melder_assert (parent -> motiff.scrolledWindow.clipWindow != NULL);
-					parentRect = & parent -> motiff.scrolledWindow.clipWindow -> rect;
-				}
-			}
-			if (parentRect -> left > clipRect. left) clipRect. left = parentRect -> left;
-			if (parentRect -> right < clipRect. right) clipRect. right = parentRect -> right;
-			if (parentRect -> top > clipRect. top) clipRect. top = parentRect -> top;
-			if (parentRect -> bottom < clipRect. bottom) clipRect. bottom = parentRect -> bottom;
-		}
-		SetPortWindowPort (my macWindow);
-		ClipRect (& clipRect);
-	}
-	int GuiMac_clipOn_graphicsContext (GuiObject me, void *graphicsContext) {
-		GuiObject parent;
-		Rect clipRect = my rect;
-		for (parent = my parent; ! MEMBER (parent, Shell); parent = parent -> parent) {
-			Rect *parentRect = & parent -> rect;
-			if (MEMBER (parent, ScrolledWindow)) {
-				if (MEMBER (me, ScrollBar)) {
-					parentRect = & my rect;
-				} else {
-					Melder_assert (parent -> motiff.scrolledWindow.clipWindow != NULL);
-					parentRect = & parent -> motiff.scrolledWindow.clipWindow -> rect;
-				}
-			}
-			if (parentRect -> left > clipRect. left) clipRect. left = parentRect -> left;
-			if (parentRect -> right < clipRect. right) clipRect. right = parentRect -> right;
-			if (parentRect -> top > clipRect. top) clipRect. top = parentRect -> top;
-			if (parentRect -> bottom < clipRect. bottom) clipRect. bottom = parentRect -> bottom;
-		}
-		CGContextClipToRect ((CGContextRef) graphicsContext, CGRectMake (clipRect.left, my shell -> height - clipRect.bottom,
-			clipRect.right - clipRect.left, clipRect.bottom - clipRect.top));
-		return my shell -> height;
-	}
-#endif
-
 /***** NATIVE *****/
 
 void _GuiNativeControl_check (GuiObject me, Boolean value) {
-	#if win
-		Button_SetCheck (my window, value ? BST_CHECKED : BST_UNCHECKED);
-	#elif mac
-		SetControlValue (my nat.control.handle, value);
-	#endif
+	Button_SetCheck (my window, value ? BST_CHECKED : BST_UNCHECKED);
 }
 
 void _GuiNativeControl_destroy (GuiObject me) {
-	#if win
-		DestroyWindow (my window);
-	#elif mac
-		_GuiMac_clipOnParent (me);
-		DisposeControl (my nat.control.handle);
-		GuiMac_clipOff ();
-	#endif
+	DestroyWindow (my window);
 }
 
 void _GuiNativeControl_show (GuiObject me) {
-	#if win
-		ShowWindow (my window, SW_SHOW);
-	#elif mac
-		_GuiMac_clipOnParent (me);
-		if (IsControlVisible (my nat.control.handle))
-			Draw1Control (my nat.control.handle);
-		else
-			ShowControl (my nat.control.handle);
-		_GuiMac_clipOffValid (me);
-	#endif
+	ShowWindow (my window, SW_SHOW);
 }
 
 void _GuiNativeControl_hide (GuiObject me) {
-	#if win
-		ShowWindow (my window, SW_HIDE);
-	#elif mac
-		_GuiMac_clipOnParent (me);
-		HideControl (my nat.control.handle);
-		_GuiMac_clipOffValid (me);
-	#endif
-}
-
-void _GuiNativeControl_setFont (GuiObject me, int style, int size) {
-	#if win
-	#elif mac
-		ControlFontStyleRec fontStyle;
-		fontStyle. flags = kControlUseFontMask | kControlUseFaceMask | kControlUseSizeMask;
-		fontStyle. font = systemFont;
-		fontStyle. style = style;
-		fontStyle. size = size;
-		SetControlFontStyle (my nat.control.handle, & fontStyle);
-	#endif
+	ShowWindow (my window, SW_HIDE);
 }
 
 void _GuiNativeControl_setSensitive (GuiObject me) {
-	#if win
-		EnableWindow (my window, ! my insensitive);
-	#elif mac
-		_GuiMac_clipOnParent (me);
-		HiliteControl (my nat.control.handle, my insensitive ? 255 : 0);
-		GuiMac_clipOff ();
-	#endif
+	EnableWindow (my window, ! my insensitive);
 }
 
 char32 * _GuiWin_expandAmpersands (const char32 *title) {
@@ -709,37 +397,12 @@ char32 * _GuiWin_expandAmpersands (const char32 *title) {
 }
 
 void _GuiNativeControl_setTitle (GuiObject me) {
-	#if win
-		HDC dc = GetDC (my window);
-		SelectPen (dc, GetStockPen (NULL_PEN));
-		SelectBrush (dc, GetStockBrush (LTGRAY_BRUSH));
-		Rectangle (dc, 0, 0, my width, my height);
-		ReleaseDC (my window, dc);
-		SetWindowTextW (my window, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
-	#elif mac
-		Melder_assert (my nat.control.handle);
-		if (my widgetClass == xmLabelWidgetClass) {
-			/*
-			 * Static Text controls on the Mac do not understand SetControlTitle.
-			 */
-			CFStringRef cfString = (CFStringRef) Melder_peek32toCfstring (my name);
-			SetControlData (my nat.control.handle, kControlEntireControl, kControlStaticTextCFStringTag, sizeof (CFStringRef), & cfString);
-			/* SetControlData does not redraw the control. */
-			if (IsControlVisible (my nat.control.handle))
-				Draw1Control (my nat.control.handle);
-		} else if (my nat.control.isPopup) {
-			GuiObject menu = my subMenuId, item;
-			if (menu) for (item = menu -> firstChild; item; item = item -> nextSibling) {
-				if (str32equ (item -> name, my name)) {
-					SetControlValue (my nat.control.handle, item -> nat.entry.item);
-					return;
-				}
-			}
-			SetControlValue (my nat.control.handle, 0);
-		} else {
-			SetControlTitleWithCFString (my nat.control.handle, (CFStringRef) Melder_peek32toCfstring (my name));
-		}
-	#endif
+	HDC dc = GetDC (my window);
+	SelectPen (dc, GetStockPen (NULL_PEN));
+	SelectBrush (dc, GetStockBrush (LTGRAY_BRUSH));
+	Rectangle (dc, 0, 0, my width, my height);
+	ReleaseDC (my window, dc);
+	SetWindowTextW (my window, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
 }
 
 static int _XmScrollBar_check (GuiObject me) {
@@ -759,7 +422,6 @@ static int _XmScrollBar_check (GuiObject me) {
 
 static void NativeScrollBar_set (GuiObject me) {
 	if (! _XmScrollBar_check (me)) return;
-	#if win
 	{
 		SCROLLINFO scrollInfo;
 		scrollInfo. cbSize = sizeof (SCROLLINFO);
@@ -782,163 +444,73 @@ static void NativeScrollBar_set (GuiObject me) {
 			scrollInfo. nPage = my sliderSize;
 			scrollInfo. nPos = my value;
 		#endif
-		if (my window) SetScrollInfo (my window, SB_CTL, & scrollInfo, TRUE);
+		if (my window) SetScrollInfo (my window, SB_CTL, & scrollInfo, true);
 	}
-	#elif mac
-		if (! my nat.control.handle) return;
-		SetControl32BitMinimum (my nat.control.handle, my minimum);
-		SetControl32BitMaximum (my nat.control.handle, my maximum - my sliderSize);
-		SetControlViewSize (my nat.control.handle, my sliderSize);
-		SetControl32BitValue (my nat.control.handle, my value);
-	#endif
 }
 
 static void NativeMenuItem_delete (GuiObject me) {
-	#if win
-		RemoveMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND);
-	#elif mac
-		trace (U"begin");
-		GuiObject subview;
-		DeleteMenuItem (my nat.entry.handle, my nat.entry.item);
-		for (subview = my parent -> firstChild; subview; subview = subview -> nextSibling) {
-			if (subview -> managed && ! MEMBER (subview, PulldownMenu) &&
-				subview -> nat.entry.item > my nat.entry.item)
-					subview -> nat.entry.item -= 1;
-		}
-		my nat.entry.item = 0;
-	#endif
+	RemoveMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND);
 }
 
 static int NativeMenuItem_getPosition (GuiObject me) {
 	int position = 1;
-	#if win
-		/*
-		 * The following routine could also be used for Mac.
-		 */
-		GuiObject sibling;
-		for (sibling = my parent -> firstChild; sibling; sibling = sibling -> nextSibling) {
-			if (sibling == me) break;
-			if (sibling -> managed && ! MEMBER (sibling, PulldownMenu))
-				position += 1;
-		}
-		/*
-		 * Bill Gates counts like 0, 1, 2...
-		 */
-		position -= 1;
-	#elif mac
-		/*
-		 * A Macintosh menu item shall know its "item number",
-		 * which is its dynamic position in the current shape of the menu.
-		 * We can use this item number to make changes and
-		 * it will be sent to us by MenuSelect () while we handle a mouse-down message in the menu.
-		 * (Regrettably, this item number has to change whenever items are unmanaged
-		 *  or destroyed elsewhere in the menu.)
-		 * Basically, the item number is one higher than the item number of the previous sibling.
-		 *
-		 * "incremental" means that all previous sibling items must have valid item numbers.
-		 */
-		GuiObject prev = my previousSibling;
-		/*
-		 * However, there may also be sibling pulldown menus. These have no item number (the associated cascade buttons have).
-		 * Also, unmanaged items are not in the native menu structure, so these have no item number either.
-		 */
-		while (prev && (MEMBER (prev, PulldownMenu) || ! prev -> managed))
-			prev = prev -> previousSibling;
-		if (prev) {   // is there a previous managed non-pulldown sibling?
-			position = prev -> nat.entry.item + 1;   /* Then I must be the next item in the native menu structure. */
-		} else {
-			/*
-			 * I must be the first item in the native menu structure, as far as the application is concerned.
-			 * However, if the menu is the system's help menu (the question mark in System 7),
-			 * the menu already contains a button called "Show balloon help".
-			 */
-			if (my parent -> nat.menu.id == kHMHelpMenuID) {   // is this the system help menu?
-				if (theHelpMenuOffset == 0)   // haven't we asked yet for the length of the system help menu?
-					theHelpMenuOffset = CountMenuItems (my nat.entry.handle);   // so ask now
-				position = theHelpMenuOffset + 1;   // then I must be the next item in the native menu structure
-			} else {   // this must be a menu of our own
-				position = 1;   // I must be the first item in the native menu structure
-			}
-		}
-	#endif
+	/*
+	 * The following routine could also be used for Mac.
+	 */
+	GuiObject sibling;
+	for (sibling = my parent -> firstChild; sibling; sibling = sibling -> nextSibling) {
+		if (sibling == me) break;
+		if (sibling -> managed && ! MEMBER (sibling, PulldownMenu))
+			position += 1;
+	}
+	/*
+	 * Bill Gates counts like 0, 1, 2...
+	 */
+	position -= 1;
 	return position;
 }
 
 static void NativeMenuItem_check (GuiObject me, Boolean value) {
-	#if win
-		if (! my managed) return;
-		CheckMenuItem (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | ( value ? MF_CHECKED : MF_UNCHECKED ));
-	#elif mac
-		if (! my nat.entry.item) return;
-		CheckMenuItem (my nat.entry.handle, my nat.entry.item, value);
-	#endif
+	if (! my managed) return;
+	CheckMenuItem (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | ( value ? MF_CHECKED : MF_UNCHECKED ));
 }
 
 static void NativeMenuItem_setSensitive (GuiObject me) {
-	#if win
-		if (! my managed) return;
-		EnableMenuItem (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | ( my insensitive ? MF_GRAYED : MF_ENABLED ));
-		//DrawMenuBar (my shell -> window);
-	#elif mac
-		if (! my nat.entry.item) return;
-		if (my insensitive) DisableMenuItem (my nat.entry.handle, my nat.entry.item);
-		else EnableMenuItem (my nat.entry.handle, my nat.entry.item);
-	#endif
+	if (! my managed) return;
+	EnableMenuItem (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | ( my insensitive ? MF_GRAYED : MF_ENABLED ));
+	//DrawMenuBar (my shell -> window);
 }
 
 static void NativeMenuItem_setText (GuiObject me) {
 	int acc = my motiff.pushButton.acceleratorChar, modifiers = my motiff.pushButton.acceleratorModifiers;
-	#if win
-		static MelderString title = { 0 };
-		if (acc == 0) {
-			MelderString_copy (& title, _GuiWin_expandAmpersands (my name));
-		} else {
-			static const char32 *keyStrings [256] = {
-				0, U"<-", U"->", U"Up", U"Down", U"PAUSE", U"Del", U"Ins", U"Backspace", U"Tab", U"LineFeed", U"Home", U"End", U"Enter", U"PageUp", U"PageDown",
-				U"Esc", U"F1", U"F2", U"F3", U"F4", U"F5", U"F6", U"F7", U"F8", U"F9", U"F10", U"F11", U"F12", 0, 0, 0,
-				U"Space", U"!", U"\"", U"#", U"$", U"%", U"&", U"\'", U"(", U")", U"*", U"+", U",", U"-", U".", U"/",
-				U"0", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8", U"9", U":", U";", U"<", U"=", U">", U"?",
-				U"@", U"A", U"B", U"C", U"D", U"E", U"F", U"G", U"H", U"I", U"J", U"K", U"L", U"M", U"N", U"O",
-				U"P", U"Q", U"R", U"S", U"T", U"U", U"V", U"W", U"X", U"Y", U"Z", U"[", U"\\", U"]", U"^", U"_",
-				U"`", U"a", U"b", U"c", U"d", U"e", U"f", U"g", U"h", U"i", U"j", U"k", U"l", U"m", U"n", U"o",
-				U"p", U"q", U"r", U"s", U"t", U"u", U"v", U"w", U"x", U"y", U"z", U"{", U"|", U"}", U"~", U"Del",
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"[", U"]", U",", U"?", U".", U"\\",
-				U";", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"-", U"`", U"=", U"\'", 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-				0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-			const char32 *keyString = keyStrings [acc] ? keyStrings [acc] : U"???";
-			MelderString_copy (& title, _GuiWin_expandAmpersands (my name), U"\t",
-				modifiers & _motif_COMMAND_MASK ? U"Ctrl-" : NULL,
-				modifiers & _motif_OPTION_MASK ? U"Alt-" : NULL,
-				modifiers & _motif_SHIFT_MASK ? U"Shift-" : NULL, keyString);
-		}
-		ModifyMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | MF_STRING, my nat.entry.id, Melder_peek32toW (title.string));
-	#elif mac
-		static int theGlyphs [1+31] = { 0,
-			kMenuLeftArrowDashedGlyph, kMenuRightArrowDashedGlyph, kMenuUpArrowDashedGlyph, kMenuDownwardArrowDashedGlyph, 0,
-			kMenuDeleteRightGlyph, 0, kMenuDeleteLeftGlyph, kMenuTabRightGlyph, 0,
-			0, 0, kMenuReturnGlyph, kMenuPageUpGlyph, kMenuPageDownGlyph,
-			kMenuEscapeGlyph, kMenuF1Glyph, kMenuF2Glyph, kMenuF3Glyph, kMenuF4Glyph,
-			kMenuF5Glyph, kMenuF6Glyph, kMenuF7Glyph, kMenuF8Glyph, kMenuF9Glyph,
-			kMenuF10Glyph, kMenuF11Glyph, kMenuF12Glyph, 0, 0,
-			0 };
-		SetMenuItemTextWithCFString (my nat.entry.handle, my nat.entry.item, (CFStringRef) Melder_peek32toCfstring (my name));
-		if (acc > 32) {
-			SetItemCmd (my nat.entry.handle, my nat.entry.item, acc);
-		} else {
-			Melder_assert (acc > 0 && acc < 32);
-			SetItemCmd (my nat.entry.handle, my nat.entry.item, ' ');   // funny that this should be needed
-			SetMenuItemKeyGlyph (my nat.entry.handle, my nat.entry.item, theGlyphs [acc]);
-		}
-		SetMenuItemModifiers (my nat.entry.handle, my nat.entry.item,
-			( modifiers & _motif_OPTION_MASK ? kMenuOptionModifier : 0 ) +
-			( modifiers & _motif_SHIFT_MASK ? kMenuShiftModifier : 0 ) +
-			( modifiers & _motif_COMMAND_MASK ? 0 : kMenuNoCommandModifier ));
-	#endif
+	static MelderString title = { 0 };
+	if (acc == 0) {
+		MelderString_copy (& title, _GuiWin_expandAmpersands (my name));
+	} else {
+		static const char32 *keyStrings [256] = {
+			0, U"<-", U"->", U"Up", U"Down", U"PAUSE", U"Del", U"Ins", U"Backspace", U"Tab", U"LineFeed", U"Home", U"End", U"Enter", U"PageUp", U"PageDown",
+			U"Esc", U"F1", U"F2", U"F3", U"F4", U"F5", U"F6", U"F7", U"F8", U"F9", U"F10", U"F11", U"F12", 0, 0, 0,
+			U"Space", U"!", U"\"", U"#", U"$", U"%", U"&", U"\'", U"(", U")", U"*", U"+", U",", U"-", U".", U"/",
+			U"0", U"1", U"2", U"3", U"4", U"5", U"6", U"7", U"8", U"9", U":", U";", U"<", U"=", U">", U"?",
+			U"@", U"A", U"B", U"C", U"D", U"E", U"F", U"G", U"H", U"I", U"J", U"K", U"L", U"M", U"N", U"O",
+			U"P", U"Q", U"R", U"S", U"T", U"U", U"V", U"W", U"X", U"Y", U"Z", U"[", U"\\", U"]", U"^", U"_",
+			U"`", U"a", U"b", U"c", U"d", U"e", U"f", U"g", U"h", U"i", U"j", U"k", U"l", U"m", U"n", U"o",
+			U"p", U"q", U"r", U"s", U"t", U"u", U"v", U"w", U"x", U"y", U"z", U"{", U"|", U"}", U"~", U"Del",
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"[", U"]", U",", U"?", U".", U"\\",
+			U";", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, U"-", U"`", U"=", U"\'", 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+		const char32 *keyString = keyStrings [acc] ? keyStrings [acc] : U"???";
+		MelderString_copy (& title, _GuiWin_expandAmpersands (my name), U"\t",
+			modifiers & _motif_COMMAND_MASK ? U"Ctrl-" : NULL,
+			modifiers & _motif_OPTION_MASK ? U"Alt-" : NULL,
+			modifiers & _motif_SHIFT_MASK ? U"Shift-" : NULL, keyString);
+	}
+	ModifyMenu (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND | MF_STRING, my nat.entry.id, Melder_peek32toW (title.string));
 }
 
 /********** **********/
@@ -955,33 +527,19 @@ static void _GuiNativizeWidget (GuiObject me) {
 	if (my nativized) return;
 	if (my inMenu) {
 		if (MEMBER (me, PulldownMenu)) {
-			#if win
-				int id;
-				for (id = 1; id <= MAXIMUM_NUMBER_OF_MENUS; id ++) if (! theMenus [id]) break;
-				my nat.menu.id = id;
-				theMenus [my nat.menu.id] = me;   // instead of UserData fields
-				/*
-				 * This will be a hierarchical menu.
-				 */
-				my nat.menu.handle = CreatePopupMenu ();
-			#elif mac
-				int ident;
-				for (ident = 1; ident <= MAXIMUM_NUMBER_OF_MENUS; ident ++) if (! theMenus [ident]) break;
-				my nat.menu.id = ident;
-				theMenus [my nat.menu.id] = me;   // instead of RefCon fields
-				/*
-				 * This will be a hierarchical menu.
-				 */
-				CreateNewMenu (my nat.menu.id, 0, & my nat.menu.handle);
-				SetMenuTitleWithCFString (my nat.menu.handle, (CFStringRef) Melder_peek32toCfstring (my name));
-				InsertMenu (my nat.menu.handle, kInsertHierarchicalMenu);
-			#endif
+			int id;
+			for (id = 1; id <= MAXIMUM_NUMBER_OF_MENUS; id ++) if (! theMenus [id]) break;
+			my nat.menu.id = id;
+			theMenus [my nat.menu.id] = me;   // instead of UserData fields
+			/*
+			 * This will be a hierarchical menu.
+			 */
+			my nat.menu.handle = CreatePopupMenu ();
 		} else {
 			/*
 			 * Any menu item (push button, toggle button, or cascade button) shall contain its native parent menu handle.
 			 */
 			my nat.entry.handle = my parent -> nat.menu.handle;
-			#if win
 			{
 				/*
 				 * A Windows menu item shall have a shell-unique ID,
@@ -993,200 +551,104 @@ static void _GuiNativizeWidget (GuiObject me) {
 				int id;
 				for (id = MINIMUM_MENU_ITEM_ID; id <= MAXIMUM_MENU_ITEM_ID; id ++) if (! theMenuItems [id]) break;
 				my nat.entry.id = id;   // install unique ID
-				theMenuItems [id] = TRUE;
+				theMenuItems [id] = true;
 			}
-			#endif
 		}
 	} else switch (my widgetClass) {
 		case xmBulletinBoardWidgetClass: {
-			#if win
-				my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"bulletinBoard", WS_CHILD | WS_BORDER | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-			#endif
+			my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"bulletinBoard", WS_CHILD | WS_BORDER | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 		} break;
 		case xmDrawingAreaWidgetClass: Melder_fatal (U"Should be implemented in GuiDrawingArea."); break;
 		case xmFormWidgetClass: {
-			#if win
-				my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"form", WS_CHILD | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-			#endif
+			my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"form", WS_CHILD | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 		} break;
 		case xmRowColumnWidgetClass: {
-			#if win
-				my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"rowColumn", WS_CHILD | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-			#endif
+			my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"rowColumn", WS_CHILD | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 		} break;
 		case xmListWidgetClass: Melder_fatal (U"Should be implemented in GuiList."); break;
 		case xmMenuBarWidgetClass: {
-			#if win
-				if (! my shell -> motiff.shell.isDialog && my shell -> nat.shell.menuBar == NULL && my parent -> widgetClass != xmRowColumnWidgetClass) {
-					HMENU bar = CreateMenu ();
-					SetMenu (my shell -> window, bar);
-					my nat.menu.handle = bar;
-					my shell -> nat.shell.menuBar = me;   // does this have to be?
-				} else {
-					my widgetClass = xmRowColumnWidgetClass;   // !!!!!!!!!!!!!
-					my orientation = XmHORIZONTAL;
-					my rowColumnType = XmMENU_BAR;
-					my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"rowColumn", WS_CHILD,
-						my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
-					SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-				}
-			#elif mac
-				/*
-				 * The first menu bar that occurs in the application shell,
-				 * will be positioned in the Macintosh menu bar.
-				 * All other menu bars are at the top of their own windows.
-				 * This is Motif style, and only works well for Macintoshes with large screens.
-				 */
-				if (/*(GuiObject) GetWRefCon (my macWindow) == theApplicationShell && theMenuBar == NULL*/ my parent == NULL) {
-					//Melder_casual (U"Creating the top menu bar.");
-					theMenuBar = me;
-				} else {
-					my widgetClass = xmRowColumnWidgetClass;   // !!!!!!!!!!!!!
-					my orientation = XmHORIZONTAL;
-					my rowColumnType = XmMENU_BAR;
-				}
-			#endif
+			if (! my shell -> motiff.shell.isDialog && my shell -> nat.shell.menuBar == NULL && my parent -> widgetClass != xmRowColumnWidgetClass) {
+				HMENU bar = CreateMenu ();
+				SetMenu (my shell -> window, bar);
+				my nat.menu.handle = bar;
+				my shell -> nat.shell.menuBar = me;   // does this have to be?
+			} else {
+				my widgetClass = xmRowColumnWidgetClass;   // !!!!!!!!!!!!!
+				my orientation = XmHORIZONTAL;
+				my rowColumnType = XmMENU_BAR;
+				my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"rowColumn", WS_CHILD,
+					my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
+				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
+			}
 		} break;
 		case xmPulldownMenuWidgetClass: {
-			#if win
-				int id;
-				for (id = 1; id <= MAXIMUM_NUMBER_OF_MENUS; id ++) if (! theMenus [id]) break;
-				my nat.menu.id = id;
-				theMenus [my nat.menu.id] = me;   // instead of UserData fields
-				if (MEMBER (my parent, MenuBar)) {
-					GuiObject menu;
-					UINT beforeID = -1;
-					my nat.menu.handle = CreatePopupMenu ();
-					/*
-					 * Insert the menu before the Help menu, if that exists; otherwise, at the end.
-					 */
-					for (menu = my parent -> firstChild; menu != NULL; menu = menu -> nextSibling) {
-						if (MEMBER (menu, PulldownMenu) && str32equ (menu -> name, U"Help") && menu != me) {
-							beforeID = (UINT) menu -> nat.menu./*handle*/id;
-							break;
-						}
-					}
-					{
-						MENUITEMINFO info;
-						info. cbSize = sizeof (MENUITEMINFO);
-						info. fMask = MIIM_TYPE | MIIM_SUBMENU | MIIM_ID;
-						info. fType = MFT_STRING | ( str32equ (my name, U"Help") ? MFT_RIGHTJUSTIFY : 0 );
-						info. dwTypeData = Melder_peek32toW (my name);
-						info. hSubMenu = my nat.menu.handle;
-						info. wID = (UINT) my nat.menu./*handle*/id;
-						InsertMenuItem (my parent -> nat.menu.handle, beforeID, 0, & info);
-					} /*else if (beforeID >= 0)
-						InsertMenu (my parent -> nat.menu.handle, beforeID, MF_STRING | MF_POPUP | MF_BYCOMMAND,
-							(UINT) my nat.menu.handle, my name);
-					else
-						AppendMenu (my parent -> nat.menu.handle, MF_STRING | MF_POPUP, (UINT) my nat.menu.handle, my name);*/
-					DrawMenuBar (my shell -> window);
-				} else if (MEMBER (my parent, RowColumn) && my parent -> rowColumnType == XmMENU_BAR) {
-					my nat.menu.handle = CreatePopupMenu ();
-				}
-			#elif mac
-				int ident;
-				for (ident = 1; ident <= MAXIMUM_NUMBER_OF_MENUS; ident ++) if (! theMenus [ident]) break;
-				my nat.menu.id = ident;
-				theMenus [my nat.menu.id] = me;   // instead of RefCon fields
-				if (MEMBER (my parent, MenuBar)) {
-					/*
-					 * This will be a menu in the Macintosh menu bar.
-					 */
-					if (USE_QUESTION_MARK_HELP_MENU && str32equ (my name, U"Help")) {
-						HMGetHelpMenu (& my nat.menu.handle, NULL);
-						theMenus [my nat.menu.id] = NULL;
-						my nat.menu.id = kHMHelpMenuID;
-						theMenus [MAXIMUM_NUMBER_OF_MENUS] = me;
-					} else {
-						int beforeID = 0;
-						CreateNewMenu (my nat.menu.id, 0, & my nat.menu.handle);
-						SetMenuTitleWithCFString (my nat.menu.handle, (CFStringRef) Melder_peek32toCfstring (my name));
-						for (ident = 1; ident <= MAXIMUM_NUMBER_OF_MENUS; ident ++) {
-							GuiObject menu = theMenus [ident];
-							if (menu && str32equ (menu -> name, U"Help")) {
-								beforeID = ident;
-								break;
-							}
-						}
-						InsertMenu (my nat.menu.handle, beforeID);
+			int id;
+			for (id = 1; id <= MAXIMUM_NUMBER_OF_MENUS; id ++) if (! theMenus [id]) break;
+			my nat.menu.id = id;
+			theMenus [my nat.menu.id] = me;   // instead of UserData fields
+			if (MEMBER (my parent, MenuBar)) {
+				GuiObject menu;
+				UINT beforeID = -1;
+				my nat.menu.handle = CreatePopupMenu ();
+				/*
+				 * Insert the menu before the Help menu, if that exists; otherwise, at the end.
+				 */
+				for (menu = my parent -> firstChild; menu; menu = menu -> nextSibling) {
+					if (MEMBER (menu, PulldownMenu) && str32equ (menu -> name, U"Help") && menu != me) {
+						beforeID = (UINT) menu -> nat.menu./*handle*/id;
+						break;
 					}
-				} else if (MEMBER (my parent, RowColumn)) {
-					/*
-					 * This will be a menu outside the main window,
-					 * or at a different place in the main window.
-					 * It is implemented as a Mac pop-up menu.
-					 */
-					CreateNewMenu (my nat.menu.id, 0, & my nat.menu.handle);
-					SetMenuTitleWithCFString (my nat.menu.handle, (CFStringRef) Melder_peek32toCfstring (my name));
-					InsertMenu (my nat.menu.handle, -1);
 				}
-			#endif
+				{
+					MENUITEMINFO info;
+					info. cbSize = sizeof (MENUITEMINFO);
+					info. fMask = MIIM_TYPE | MIIM_SUBMENU | MIIM_ID;
+					info. fType = MFT_STRING | ( str32equ (my name, U"Help") ? MFT_RIGHTJUSTIFY : 0 );
+					info. dwTypeData = Melder_peek32toW (my name);
+					info. hSubMenu = my nat.menu.handle;
+					info. wID = (UINT) my nat.menu./*handle*/id;
+					InsertMenuItem (my parent -> nat.menu.handle, beforeID, 0, & info);
+				} /*else if (beforeID >= 0)
+					InsertMenu (my parent -> nat.menu.handle, beforeID, MF_STRING | MF_POPUP | MF_BYCOMMAND,
+						(UINT) my nat.menu.handle, my name);
+				else
+					AppendMenu (my parent -> nat.menu.handle, MF_STRING | MF_POPUP, (UINT) my nat.menu.handle, my name);*/
+				DrawMenuBar (my shell -> window);
+			} else if (MEMBER (my parent, RowColumn) && my parent -> rowColumnType == XmMENU_BAR) {
+				my nat.menu.handle = CreatePopupMenu ();
+			}
 		} break;
 		case xmLabelWidgetClass: Melder_fatal (U"Should be implemented in GuiLabel."); break;
 		case xmCascadeButtonWidgetClass: {
 			if (! my motiff.cascadeButton.inBar) {
-				#if win
-					my window = CreateWindow (L"button", Melder_peek32toW (_GuiWin_expandAmpersands (my name)),
-						WS_CHILD | BS_PUSHBUTTON | WS_CLIPSIBLINGS,
-						my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
-					SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-					SetWindowFont (my window, GetStockFont (ANSI_VAR_FONT), FALSE);
-				#elif mac
-					if (str32str (my name, U" -") || (my parent -> rowColumnType == XmMENU_BAR && my parent -> y < 5)) {
-						my nat.control.isBevel = true;
-						CreateBevelButtonControl (my macWindow, & my rect, NULL, kControlBevelButtonSmallBevel,
-							kControlBehaviorPushbutton, NULL, 1, kControlBehaviorCommandMenu, 0, & my nat.control.handle);
-						Melder_assert (my nat.control.handle != NULL);
-						SetControlReference (my nat.control.handle, (long) me);
-						my isControl = TRUE;
-						_GuiNativeControl_setFont (me, 0, 13);
-						_GuiNativeControl_setTitle (me);
-					} else {
-						my nat.control.isPopup = true;
-						//Melder_casual("my macWindow %ld, %d-%d x %d-%d", my macWindow, my rect.left, my rect.right, my rect.top, my rect.bottom);
-						CreatePopupButtonControl (my macWindow, & my rect, NULL, -12345, false,
-							0, teFlushLeft, 0, & my nat.control.handle);
-						Melder_assert (my nat.control.handle != NULL);
-						SetControlReference (my nat.control.handle, (long) me);
-						my isControl = TRUE;
-						_GuiNativeControl_setFont (me, 0, 13);
-						_GuiNativeControl_setTitle (me);
-						SetControlMaximum (my nat.control.handle, 32767);   // the default seems to be 9 on MacOS X
-					}
-				#endif
+				my window = CreateWindow (L"button", Melder_peek32toW (_GuiWin_expandAmpersands (my name)),
+					WS_CHILD | BS_PUSHBUTTON | WS_CLIPSIBLINGS,
+					my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
+				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
+				SetWindowFont (my window, GetStockFont (ANSI_VAR_FONT), false);
 			}
 		} break;
 		case xmPushButtonWidgetClass: Melder_fatal (U"Should be implemented in GuiButton."); break;
 		case xmTextWidgetClass: Melder_fatal (U"Should be implemented in GuiText."); break;
 		case xmToggleButtonWidgetClass: Melder_fatal (U"Should be implemented in GuiCheckButton and GuiRadioButton."); break;
 		case xmScaleWidgetClass: {
-			#if win
-				my window = CreateWindow (PROGRESS_CLASS, Melder_peek32toW (_GuiWin_expandAmpersands (my name)), WS_CHILD | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-				SendMessage (my window, PBM_SETRANGE, (WPARAM) 0, (LPARAM) MAKELONG (0, 10000));
-			#endif
+			my window = CreateWindow (PROGRESS_CLASS, Melder_peek32toW (_GuiWin_expandAmpersands (my name)), WS_CHILD | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
+			SendMessage (my window, PBM_SETRANGE, (WPARAM) 0, (LPARAM) MAKELONG (0, 10000));
 		} break;
 		case xmScrollBarWidgetClass: {
-			#if win
-				my window = CreateWindow (L"scrollbar", Melder_peek32toW (my name), WS_CHILD |
-					( str32equ (my name, U"verticalScrollBar") ? SBS_VERT : SBS_HORZ ) | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-				NativeScrollBar_set (me);
-			#elif mac
-				my nat.control.handle = NewControl (my macWindow, & my rect,
-					(const unsigned char *) "\000", false, 0, 0, 0, kControlScrollBarLiveProc, (long) me);
-				Melder_assert (my nat.control.handle);
-				my isControl = TRUE;
-			#endif
+			my window = CreateWindow (L"scrollbar", Melder_peek32toW (my name), WS_CHILD |
+				( str32equ (my name, U"verticalScrollBar") ? SBS_VERT : SBS_HORZ ) | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, (HMENU) 1, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
+			NativeScrollBar_set (me);
 			my minimum = 0;
 			my maximum = 100;
 			my value = 0;
@@ -1204,11 +666,9 @@ static void _GuiNativizeWidget (GuiObject me) {
 			 * the clipping hierarchy will be
 			 *      (shell.)form.(scrolledWindow.)clipWindow.column.row.pushButton
 			 */
-			#if win
-				my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"scrolledWindow", WS_CHILD | WS_CLIPSIBLINGS,
-					my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-			#endif
+			my window = CreateWindowEx (0, Melder_peek32toW (theWindowClassName), L"scrolledWindow", WS_CHILD | WS_CLIPSIBLINGS,
+				my x, my y, my width, my height, my parent -> window, NULL, theGui.instance, NULL);
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 			my motiff.scrolledWindow.horizontalBar = XmCreateScrollBar (me, "horizontalScrollBar", NULL, 0);
 			my motiff.scrolledWindow.verticalBar = XmCreateScrollBar (me, "verticalScrollBar", NULL, 0);
 			XtVaSetValues (my motiff.scrolledWindow.horizontalBar, XmNorientation, XmHORIZONTAL,
@@ -1233,35 +693,13 @@ static void _GuiNativizeWidget (GuiObject me) {
 			XtAddCallback (my motiff.scrolledWindow.horizontalBar, XmNdragCallback, cb_scroll, (XtPointer) me);
 		} break;
 		case xmShellWidgetClass: {
-			#if win
-				static char32 *className { theApplicationClassName };   // only for first window
-				my window = CreateWindowEx (theDialogHint ? WS_EX_DLGMODALFRAME /* | WS_EX_TOPMOST */ : 0,
-					Melder_peek32toW (className), Melder_peek32toW (className),
-					theDialogHint ? WS_CAPTION | WS_SYSMENU : WS_OVERLAPPEDWINDOW,
-					CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,  my parent ? my parent -> window : NULL, NULL, theGui.instance, NULL);
-				className = theWindowClassName;   // all later windows
-				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
-			#elif mac
-				Rect r = my rect;
-				if (str32str (my name, U"fullscreen")) {
-					my motiff.shell.canFullScreen = true;
-				}
-				OffsetRect (& r, 0, 22);
-				CreateNewWindow (kDocumentWindowClass, kWindowCloseBoxAttribute +
-					( theDialogHint ? 0 : kWindowCollapseBoxAttribute + kWindowResizableAttribute + kWindowFullZoomAttribute),
-					& r, & my nat.window.ptr);
-				SetWRefCon (my nat.window.ptr, (long) me);   // so we can find the widget from the event with GetWRefCon ()
-				CreateRootControl (my nat.window.ptr, & my nat.window.rootControl);
-				if (theDialogHint) {
-					SetThemeWindowBackground (my nat.window.ptr, kThemeBrushDialogBackgroundActive, False);
-				} else {
-					SetThemeWindowBackground (my nat.window.ptr, kThemeBrushDialogBackgroundActive, False);
-				}
-				my macWindow = my nat.window.ptr;   // associate drawing context; child widgets will inherit
-				my motiff.shell.active = true;   // why?
-				SetPortWindowPort (my macWindow);
-				motif_mac_defaultFont ();   // will be set back after every change
-			#endif
+			static char32 *className { theApplicationClassName };   // only for first window
+			my window = CreateWindowEx (theDialogHint ? WS_EX_DLGMODALFRAME /* | WS_EX_TOPMOST */ : 0,
+				Melder_peek32toW (className), Melder_peek32toW (className),
+				theDialogHint ? WS_CAPTION | WS_SYSMENU : WS_OVERLAPPEDWINDOW,
+				CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,  my parent ? my parent -> window : NULL, NULL, theGui.instance, NULL);
+			className = theWindowClassName;   // all later windows
+			SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 			my motiff.shell.isDialog = theDialogHint;   // so we can maintain a single Shell class instead of two different
 		} break;
 		default: break;
@@ -1280,20 +718,11 @@ void _Gui_invalidateWidget (GuiObject me) {
 	if (MEMBER (me, Shell) /*||
 		 my widgetClass == xmRowColumnWidgetClass ||
 		 my widgetClass == xmFormWidgetClass*/) return;   // composites are not invalidated !!!!! ????
-	#if mac
-		_GuiMac_clipOnParent (me);
-		EraseRect (& my rect);
-		_GuiMac_clipOffInvalid (me);
-	#endif
 }
 
 void _Gui_validateWidget (GuiObject me) {
 	if (! my managed) return;   // should be: visible
 	if (MEMBER (me, Shell)) return;
-	#if mac
-		_GuiMac_clipOnParent (me);
-		_GuiMac_clipOffValid (me);   
-	#endif
 }
 
 static void Native_move (GuiObject me, int dx, int dy) {
@@ -1303,7 +732,6 @@ static void Native_move (GuiObject me, int dx, int dy) {
  *     Native_move () is normally called immediately after changing the 'x' or 'y' attribute.
  *     It can be seen as the 'realization' of a Motif move.
  */
-#if win
 	(void) dx;
 	(void) dy;
 	if (! my window) return;   // ignore menu items
@@ -1311,150 +739,31 @@ static void Native_move (GuiObject me, int dx, int dy) {
 		my nat.shell.duringMoveWindow = True;
 		if (my motiff.shell.isDialog)
 			MoveWindow (my window, my x, my y, my width + 2 * GetSystemMetrics (SM_CXFIXEDFRAME),
-				my height + 2 * GetSystemMetrics (SM_CYFIXEDFRAME) + GetSystemMetrics (SM_CYCAPTION), TRUE);
+				my height + 2 * GetSystemMetrics (SM_CYFIXEDFRAME) + GetSystemMetrics (SM_CYCAPTION), true);
 		else
 			MoveWindow (my window, my x, my y,
 				my width + 2 * GetSystemMetrics (SM_CXSIZEFRAME),
 				my height + 2 * GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION) +
-				( my nat.shell.menuBar != NULL ? GetSystemMetrics (SM_CYMENU) : 0 ), TRUE);
+				( my nat.shell.menuBar ? GetSystemMetrics (SM_CYMENU) : 0 ), true);
 	} else
 		MoveWindow (my window, my x, my y, my width, my height, True);
-#elif mac
-	/*
-	 * On Mac, the 'rect' attribute is changed, as is the position information in the Mac object.
-	 * Native_move () calls itself with the same arguments for all the widget's children.
-	 */
-	GuiObject child;
-	if ((dx == 0 && dy == 0) || MEMBER (me, MenuBar) || (my parent && MEMBER (my parent, PulldownMenu))) return;
-	if (! my isControl)
-		_Gui_invalidateWidget (me);   /* At old position. BUG: clipping may be wrong because parent may have moved;
-				however, parent will have been erased in that case, so we will not see it. */
-	/*
-	 * Because all non-shell coordinates are port-relative on Mac, we have to adapt them to the new x and y.
-	 */
-	my rect.left += dx, my rect.right += dx;
-	my rect.top += dy, my rect.bottom += dy;
-	if (MEMBER (me, Text)) {
-		_GuiMacText_move (me);
-	} else if (my isControl) {
-		_GuiMac_clipOnParent (me);
-		MoveControl (my nat.control.handle, my rect.left, my rect.top);
-		_GuiMac_clipOffValid (me);
-	} else if (MEMBER (me, List)) {
-		_GuiMacList_move (me);
-	} else if (MEMBER (me, Shell)) {
-		MoveWindow (my nat.window.ptr, my rect.left, my rect.top + 22, 0);
-	} else if (MEMBER (me, DrawingArea)) {
-		_Gui_callCallbacks (me, & my motiff.drawingArea.moveCallbacks, 0);   // only Mac?
-	}
-	if (! my isControl) _Gui_invalidateWidget (me);   // at new position
-	/*
-	 * Because all non-shell coordinates are port-relative on Mac, we have to recursively move the children.
-	 */
-	if (! MEMBER (me, Shell))
-		for (child = my firstChild; child; child = child -> nextSibling)
-			Native_move (child, dx, dy);
-#endif
-}
-
-#if mac
-/*
- * hideControls and reshowControls are only called by shellResizeWidget,
- * but they must be defined separately because they are recursive.
- */
-static void reshowControls (GuiObject me) {
-	GuiObject child;
-	if (my widgetClass == xmPulldownMenuWidgetClass) return;
-	for (child = my firstChild; child; child = child -> nextSibling) {
-		if (child -> isControl) {
-			/*
-			 * This is a Mac control widget.
-			 * Let Mac do the redrawing if Motif considers it visible and Mac considers it invisible?
-			 */
-			if (child -> managed && ! IsControlVisible (child -> nat.control.handle)) {
-				_GuiMac_clipOnParent (child);
-				ShowControl (child -> nat.control.handle);
-				_GuiMac_clipOffValid (child);
-			}
-		} else if (! MEMBER (child, Shell)) {
-			/*
-			 * This may be a widget with children.
-			 * Some of those children may be controls, or contain controls, so recurse.
-			 */
-			reshowControls (child);
-		}
-	}
-}
-static void hideControls (GuiObject me) {
-	GuiObject child;
-	if (my widgetClass == xmPulldownMenuWidgetClass) return;
-	for (child = my firstChild; child; child = child -> nextSibling) {
-		if (child -> isControl) {
-			if (child -> managed) {
-				HideControl (child -> nat.control.handle);
-			}
-		} else if (! MEMBER (child, Shell)) {
-			hideControls (child);
-		}
-	}
 }
-#endif
 
 static void shellResizeWidget (GuiObject me, int dx, int dy, int dw, int dh) {
 	GuiObject child;
-	#if win
 	Melder_assert (! my shell || ! my shell -> nat.shell.duringMoveWindow);
-		if (my window && ! MEMBER (me, Shell)) {
-			/*RECT rect, client;
-			GetWindowRect (my window, & rect);
-			GetClientRect (my window, & client);
-			ScreenToClient (my parent -> window, (LPPOINT) & rect.left);
-			ScreenToClient (my parent -> window, (LPPOINT) & rect.right);
-			if (rect.left!=my x||rect.right!=my x + my width||rect.top !=my y||rect.bottom!=my y +my height)
-			Melder_warning ("class %d x %d left %d y %d top %d width %d right %d height %d bottom %d",
-			my widgetClass, my x, rect.left, my y, rect.top, my width, rect.right, my height, rect.bottom);*/
-			MoveWindow (my window, my x, my y, my width, my height, TRUE);
-			if (MEMBER (me, DrawingArea)) _GuiWinDrawingArea_shellResize (me);
-		}
-	#elif mac
-		if ((dx == 0 && dy == 0 && dw == 0 && dh == 0) || MEMBER (me, MenuBar) || (my parent && MEMBER (my parent, PulldownMenu))) return;
-		OffsetRect (& my rect, dx, dy);
-		my rect.right += dw;
-		my rect.bottom += dh;
-		if (MEMBER (me, Text)) {
-			_GuiMacText_shellResize (me);
-		} else if (my isControl) {
-			ControlHandle c = my nat.control.handle;
-			/*if (my managed) HideControl (c);*/
-			if (dx || dy) MoveControl (c, my rect.left, my rect.top);
-			if (dw || dh) SizeControl (c, my width, my height);
-			//if (MEMBER (me, List)) {
-			//	(** my nat.list.handle). rView = my rect;
-			//	(** my nat.list.handle). cellSize. h = my width;
-			//}
-		} else if (MEMBER (me, List)) {
-			_GuiMacList_shellResize (me);
-		} else if (MEMBER (me, Shell)) {
-			Rect portRect;
-			GetWindowPortBounds (my nat.window.ptr, & portRect);
-			SetPortWindowPort (my nat.window.ptr);
-			/*
-				Erase old area.
-			*/
-			EraseRect (& portRect);
-			SizeWindow (my nat.window.ptr, my width, my height, false);
-			hideControls (me);
-			/*
-				Redraw new area.
-			*/
-			GetWindowPortBounds (my nat.window.ptr, & portRect);
-			InvalWindowRect (my nat.window.ptr, & portRect);
-		} else if (MEMBER (me, DrawingArea)) {
-			_GuiMacDrawingArea_shellResize (me);
-			if (dx != 0 || dy != 0)
-				_Gui_callCallbacks (me, & my motiff.drawingArea.moveCallbacks, 0);
-		}
-	#endif
+	if (my window && ! MEMBER (me, Shell)) {
+		/*RECT rect, client;
+		GetWindowRect (my window, & rect);
+		GetClientRect (my window, & client);
+		ScreenToClient (my parent -> window, (LPPOINT) & rect.left);
+		ScreenToClient (my parent -> window, (LPPOINT) & rect.right);
+		if (rect.left!=my x||rect.right!=my x + my width||rect.top !=my y||rect.bottom!=my y +my height)
+		Melder_warning ("class %d x %d left %d y %d top %d width %d right %d height %d bottom %d",
+		my widgetClass, my x, rect.left, my y, rect.top, my width, rect.right, my height, rect.bottom);*/
+		MoveWindow (my window, my x, my y, my width, my height, true);
+		if (MEMBER (me, DrawingArea)) _GuiWinDrawingArea_shellResize (me);
+	}
 	for (child = my firstChild; child; child = child -> nextSibling) {
 		int cdx = 0, cdy = 0, cdw = 0, cdh = 0;
 		if (MEMBER (child, Shell)) continue;
@@ -1484,39 +793,14 @@ static void shellResizeWidget (GuiObject me, int dx, int dy, int dw, int dh) {
 	}
 	if (MEMBER (me, ScrolledWindow))
 		_Gui_manageScrolledWindow (me);
-	#if mac
-		if (MEMBER (me, Shell)) reshowControls (me);
-	#endif
 }
 
 static void resizeWidget (GuiObject me, int dw, int dh) {
 	GuiObject child;
-	#if win
-		if (my window && ! MEMBER (me, Shell)) {
-			MoveWindow (my window, my x, my y, my width, my height, TRUE);
-			if (MEMBER (me, DrawingArea)) _GuiWinDrawingArea_shellResize (me);
-		}
-	#elif mac
-	{
-		if ((dw == 0 && dh == 0) || (my parent && MEMBER (my parent, PulldownMenu))) return;
-		if (! my isControl) _Gui_invalidateWidget (me);   // at old position
-		my rect.right += dw;
-		my rect.bottom += dh;
-		if (MEMBER (me, Text)) {
-			_GuiMacText_resize (me);
-		} else if (my isControl) {
-			SizeControl (my nat.control.handle, my width, my height);
-			_Gui_validateWidget (me);
-		} else if (MEMBER (me, List)) {
-			_GuiMacList_resize (me);
-		} else if (MEMBER (me, Shell)) {
-			SizeWindow (my macWindow, my width, my height, true);
-		} else if (MEMBER (me, DrawingArea)) {
-			_GuiMacDrawingArea_shellResize (me);
-		}
-		if (! my isControl) _Gui_invalidateWidget (me);   // at new position
+	if (my window && ! MEMBER (me, Shell)) {
+		MoveWindow (my window, my x, my y, my width, my height, true);
+		if (MEMBER (me, DrawingArea)) _GuiWinDrawingArea_shellResize (me);
 	}
-	#endif
 	if (MEMBER2 (me, Form, ScrolledWindow))
 		for (child = my firstChild; child; child = child -> nextSibling) {
 			int cdx = 0, cdy = 0, cdw = 0, cdh = 0;
@@ -1551,23 +835,7 @@ static void resizeWidget (GuiObject me, int dw, int dh) {
 			}
 		}
 	if (MEMBER (me, Shell)) {
-		#if mac
-			Rect portRect;
-			int right, bottom;
-			GetWindowPortBounds (my macWindow, & portRect);
-			right = portRect. right, bottom = portRect. bottom;
-		#elif win
-			int right = 1000, bottom = 500;
-		#endif
-		#if mac
-		{
-			Rect rect;
-			SetRect (& rect, right - 15, bottom - 15, right + 1, bottom + 1);
-			ClipRect (& rect);
-			DrawGrowIcon (my macWindow);
-			GuiMac_clipOff ();
-		}
-		#endif
+		int right = 1000, bottom = 500;
 		for (child = my firstChild; child; child = child -> nextSibling)
 			if (MEMBER2 (child, Form, ScrolledWindow)) {
 				child -> width += dw;
@@ -1581,12 +849,7 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 	int resource;
 	Boolean move = False, resize = False, attach = False, scrollset = False;
 	char *text;
-	#if win
-		int oldX = my x, oldY = my y, oldWidth = my width, oldHeight = my height;
-	#endif
-	#if mac
-		Str255 ptext;
-	#endif
+	int oldX = my x, oldY = my y, oldWidth = my width, oldHeight = my height;
 	while (resource = va_arg (arg, int), resource != 0) switch (resource) {
 		case XmNautoUnmanage:
 			my autoUnmanage = va_arg (arg, int);
@@ -1612,9 +875,7 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 			Melder_assert (MEMBER (me, Shell));
 			my deleteResponse = va_arg (arg, int);
 			if (my deleteResponse == XmDO_NOTHING && ! my motiff.shell.goAwayCallback) {
-				#if mac
-					ChangeWindowAttributes (my macWindow, 0, kWindowCloseBoxAttribute);
-				#endif
+				// change window attributes
 			}
 			break;
 		case XmNdialogStyle:
@@ -1624,23 +885,14 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 		case XmNdialogTitle:
 			Melder_assert (MEMBER2 (me, Form, BulletinBoard));
 			text = va_arg (arg, char *);
-			#if win
-				SetWindowTextW (my shell -> window, Melder_peek32toW (Melder_peek8to32 (text)));
-			#elif mac
-				ptext [0] = strlen (text); strcpy ((char *) ptext + 1, text);
-				SetWTitle (my macWindow, ptext);
-			#endif
+			SetWindowTextW (my shell -> window, Melder_peek32toW (Melder_peek8to32 (text)));
 			break;
 		case XmNheight:
 			my height = va_arg (arg, int);
 			if (MEMBER (me, Shell)) {
 				int maximumHeight =
-					#if win
-						GetSystemMetrics (SM_CYMAXIMIZED) - GetSystemMetrics (SM_CYCAPTION) -
-							GetSystemMetrics (SM_CYSIZEFRAME) - GetSystemMetrics (SM_CYMENU) - 15;
-					#elif mac
-						GetQDGlobalsScreenBits (& theScreenBits) -> bounds.bottom - 41;
-					#endif
+					GetSystemMetrics (SM_CYMAXIMIZED) - GetSystemMetrics (SM_CYCAPTION) -
+						GetSystemMetrics (SM_CYSIZEFRAME) - GetSystemMetrics (SM_CYMENU) - 15;
 				if (my height > maximumHeight) my height = maximumHeight;
 			}
 			resize = True;
@@ -1756,32 +1008,11 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 			Melder_assert (MEMBER (me, CascadeButton));
 			my subMenuId = va_arg (arg, GuiObject);
 			my subMenuId -> popUpButton = me;
-			if (my inMenu) {
-				#if win
-				#elif mac
-					if (my nat.entry.item) {
-						SetMenuItemHierarchicalID (my nat.entry.handle, my nat.entry.item, my subMenuId -> nat.menu.id);
-					}
-				#endif
-			} else {
-				#if win
-				#elif mac
-					if (my isControl && my nat.control.isPopup) {
-						SetControlData (my nat.control.handle, kControlMenuPart, kControlPopupButtonMenuHandleTag, 4, & my subMenuId -> nat.menu.handle);
-						_GuiNativeControl_setTitle (me);
-					}
-				#endif
-			}
 			break;
 		case XmNtitle:
 			Melder_assert (MEMBER (me, Shell));
 			text = va_arg (arg, char *);
-			#if mac
-				ptext [0] = strlen (text); strcpy ((char *) ptext + 1, text);
-				SetWTitle (my nat.window.ptr, ptext);
-			#elif win
-				SetWindowTextW (my window, Melder_peek32toW (Melder_peek8to32 (text)));
-			#endif
+			SetWindowTextW (my window, Melder_peek32toW (Melder_peek8to32 (text)));
 			break;
 		case XmNtitleString:
 			Melder_assert (MEMBER (me, Scale));
@@ -1808,11 +1039,7 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 			my value = va_arg (arg, int);
 			if (MEMBER (me, ScrollBar)) scrollset = True;
 			else if (MEMBER (me, Scale)) {
-				#if win
-					SendMessage (my window, PBM_SETPOS, (WPARAM) my value, 0);
-				#elif mac
-					_Gui_invalidateWidget (me);
-				#endif
+				SendMessage (my window, PBM_SETPOS, (WPARAM) my value, 0);
 			}
 			break;
 		case XmNverticalScrollBar: {
@@ -1879,49 +1106,14 @@ static void _motif_setValues (GuiObject me, va_list arg) {
 		}
 	}
 	if (move) {
-		#if win
-			Native_move (me, 0, 0);
-		#elif mac
-			int dx, dy;
-			dx = my x - my rect.left + (my parent && my widgetClass != xmShellWidgetClass ? my parent -> rect.left : 0);
-			dy = my y - my rect.top + (my parent && my widgetClass != xmShellWidgetClass ? my parent -> rect.top : 0);
-			Native_move (me, dx, dy);
-		#endif
+		Native_move (me, 0, 0);
 	}
 	if (resize) {
-		#if mac
-			int oldWidth = my rect.right - my rect.left, oldHeight = my rect.bottom - my rect.top;
-		#endif
 		resizeWidget (me, my width - oldWidth, my height - oldHeight);
 	}
 	if (scrollset) NativeScrollBar_set (me);
 }
 
-#if mac
-static GuiObject _motif_findSubwidget (GuiObject me, int x, int y) {
-	if (! my managed) return NULL;
-	if (my firstChild == NULL && my parent != NULL) {
-		Rect *rect;
-		if (MEMBER (my parent, MenuBar)) return NULL;
-		rect = ! MEMBER (me, ScrollBar) && my parent && MEMBER (my parent, ScrolledWindow) ?
-			& my parent -> motiff.scrolledWindow.clipWindow -> rect : & my rect;
-		if (x >= rect -> left && x <= rect -> right && y >= rect -> top && y <= rect -> bottom)
-			return me;
-		else
-			return NULL;
-	} else {
-		GuiObject child = my firstChild;
-		for (child = my firstChild; child != NULL; child = child -> nextSibling) {
-			if (! MEMBER (child, Shell)) {
-				GuiObject result = _motif_findSubwidget (child, x, y);
-				if (result) return result;
-			}
-		}
-		return NULL;
-	}
-}
-#endif
-
 void _Gui_manageScrolledWindow (GuiObject me) {
 	int workWidth, workHeight, horzAutomatic, vertAutomatic;
 	GuiObject clipWindow, workWindow, horzBar = my motiff.scrolledWindow.horizontalBar, vertBar = my motiff.scrolledWindow.verticalBar;
@@ -1983,9 +1175,6 @@ static void _motif_manage (GuiObject me) {
 	GuiObject child;
 	int x = 2, y = 2;
 	int width = 0, height = 0, dw = 0, dh = 0;
-	#if mac
-		GuiObject helpMenu = NULL;
-	#endif
 	/*if (my widgetClass == xmScrolledWindowWidgetClass) return;   /* Ignore. */
 
 	/*
@@ -2000,25 +1189,14 @@ static void _motif_manage (GuiObject me) {
 		if (child -> managed && ! MEMBER (child, Shell)) {
 			int dx = 0, dy = 0;   // by default, the child does not move
 			if (MEMBER (me, RowColumn)) {
-				#if mac
-					if (my rowColumnType == XmMENU_BAR && MEMBER (child, CascadeButton) &&
-						child -> rightAttachment == XmATTACH_FORM) helpMenu = child; else
-				#endif
 				{
 					if (x > child -> x) dx = x - child -> x;
 					if (y > child -> y) dy = y - child -> y;
 					child -> x += dx; x = child -> x;
 					child -> y += dy; y = child -> y;
 					if (my orientation != XmHORIZONTAL) {
-						#if win
-							y += child -> height + 1;
-						#elif mac
-							y += child -> height + 8;
-						#endif
+						y += child -> height + 1;
 					} else {
-						#if mac
-							if (my rowColumnType == XmMENU_BAR && MEMBER (child, CascadeButton)) x += child -> width - 1; else
-						#endif
 						x += child -> width + 3;
 					}
 				}
@@ -2043,10 +1221,6 @@ static void _motif_manage (GuiObject me) {
 			}
 			my width += dw;
 			my height += dh;
-			#if mac
-				my rect. right += dw;
-				my rect. bottom += dh;
-			#endif
 
 			/*
 			 * Now that I have grown, there is room for my child to move.
@@ -2081,23 +1255,8 @@ static void _motif_manage (GuiObject me) {
 			#endif
 		}
 	}
-	#if mac
-		if (helpMenu) {
-			int x_old = helpMenu -> x;
-			my width = my parent -> width;
-			my rect.right = my parent -> rect.right;
-			helpMenu -> x = my width - helpMenu -> width - 2;
-			/*helpMenu -> rect.left = helpMenu -> x;
-			helpMenu -> rect.right = my rect.right - 6;*/
-			Native_move (helpMenu, helpMenu -> x - x_old, 0);
-		}
-	#endif
 
-	#if win
-		if (my window) Native_move (me, 0, 0);
-	#elif mac
-		if (MEMBER (me, Shell)) SizeWindow (my nat.window.ptr, my width, my height, true);
-	#endif
+	if (my window) Native_move (me, 0, 0);
 
 	/* If I have grown, I have to notify my parent. */
 
@@ -2167,31 +1326,13 @@ void XtRemoveWorkProc (XtWorkProcId id) {
 	theNumberOfWorkProcs --;
 }
 
-#if defined (macintosh)
-static pascal void timerAction (EventLoopTimerRef timer, void *closure) {
-	long i = (int) closure;
-	(void) timer;
-	theTimeOutProcs [i] (theTimeOutClosures [i], & i);
-	XtRemoveTimeOut (i);
-}
-#endif
-
 XtIntervalId GuiAddTimeOut (unsigned long interval, XtTimerCallbackProc proc, XtPointer closure) {
 	long i = 1;
 	while (i < 10 && theTimeOutProcs [i]) i ++;
 	Melder_assert (i < 10);
 	theTimeOutProcs [i] = proc;
-#if defined (macintosh)
-{
-	EventLoopRef mainLoop = GetMainEventLoop ();
-	static EventLoopTimerUPP timerUPP;
-	if (timerUPP == NULL) timerUPP = NewEventLoopTimerUPP (timerAction);
-	InstallEventLoopTimer (mainLoop, interval * kEventDurationMillisecond, 0, timerUPP, (void *) i, & theTimers [i]);
-}
-#else
 	theTimeOutStarts [i] = clock ();
 	theTimeOutIntervals [i] = (interval * (double) CLOCKS_PER_SEC) / 1000;
-#endif
 	theTimeOutClosures [i] = closure;
 	theNumberOfTimeOuts ++;
 	return i;
@@ -2200,9 +1341,6 @@ XtIntervalId GuiAddTimeOut (unsigned long interval, XtTimerCallbackProc proc, Xt
 void XtRemoveTimeOut (XtIntervalId id) {
 	theTimeOutProcs [id] = NULL;
 	theNumberOfTimeOuts --;
-	#if defined (macintosh)
-		RemoveEventLoopTimer (theTimers [id]);
-	#endif
 }
 
 void XtDestroyWidget (GuiObject me) {
@@ -2210,25 +1348,15 @@ void XtDestroyWidget (GuiObject me) {
 	/*
 	 * Prevent subsequent messages.
 	 */
-	#if win
-		HWND natWindow;
-		if (my window) SetWindowLongPtr (my window, GWLP_USERDATA, 0);
-	#endif
+	HWND natWindow;
+	if (my window) SetWindowLongPtr (my window, GWLP_USERDATA, 0);
 	if (my widgetClass == xmShellWidgetClass) {
 		XtUnmanageChild (me);
-		#if win
-			natWindow = my window;   // save for destroy
-			my window = NULL;
-		#elif mac
-			my macWindow = NULL;   // notify children
-		#endif
+		natWindow = my window;   // save for destroy
+		my window = NULL;
 	}
 	if (MEMBER2 (me, Form, BulletinBoard) && MEMBER (my parent, Shell) &&
-		#if win
-		 	my parent -> window
-		#elif mac
-			my parent -> macWindow
-		#endif
+		my parent -> window
 		)
 	{
 		XtDestroyWidget (my parent);
@@ -2243,149 +1371,66 @@ void XtDestroyWidget (GuiObject me) {
 	if (my destroyCallback) my destroyCallback (me, my destroyClosure, NULL);
 	switch (my widgetClass) {
 		case xmLabelWidgetClass: {
-			#if win
-				_GuiWinLabel_destroy (me);
-			#elif mac
-				_GuiMacLabel_destroy (me);
-			#endif
+			_GuiWinLabel_destroy (me);
 		} break;
 		case xmCascadeButtonWidgetClass: {
-			#if win
-				if (! my inMenu && ! MEMBER (my parent, MenuBar)) _GuiNativeControl_destroy (me);
-			#elif mac
-				if (my isControl) _GuiNativeControl_destroy (me);
-			#endif
+			if (! my inMenu && ! MEMBER (my parent, MenuBar)) _GuiNativeControl_destroy (me);
 		} break;
 		case xmScaleWidgetClass: {
-			#if win
-				_GuiWinScale_destroy (me);
-			#elif mac
-				_GuiMacScale_destroy (me);
-			#endif
+			_GuiWinScale_destroy (me);
 		} break;
 		case xmShellWidgetClass: {
-			#if win
-				DestroyWindow (natWindow);
-			#elif mac
-				DisposeWindow (my nat.window.ptr);
-				if (my motiff.shell.canFullScreen)
-					SetSystemUIMode (kUIModeNormal, 0);   // BUG: assumes there can be only one fullscreenable window
-			#endif
-			_motif_removeShell (me);
+			DestroyWindow (natWindow);
 		} break;
 		case xmListWidgetClass: {
-			#if win
-				_GuiWinList_destroy (me);
-			#elif mac
-				_GuiMacList_destroy (me);
-			#endif
+			_GuiWinList_destroy (me);
 		} break;
 		case xmDrawingAreaWidgetClass: {
-			#if win
-				_GuiWinDrawingArea_destroy (me);
-			#else
-				_GuiMacDrawingArea_destroy (me);
-			#endif
+			_GuiWinDrawingArea_destroy (me);
 		} break;
 		case xmRowColumnWidgetClass:
 		case xmFormWidgetClass:
 		case xmBulletinBoardWidgetClass: {
-			#if win
-				DestroyWindow (my window);
-			#endif
+			DestroyWindow (my window);
 		} break;
 		case xmTextWidgetClass: {
-			#if win
-				_GuiWinText_destroy (me);
-			#elif mac
-				_GuiMacText_destroy (me);
-			#endif
+			_GuiWinText_destroy (me);
 		} break;
 		case xmPushButtonWidgetClass: {
 			if (my inMenu) {
-				#if win
-					if (my nat.entry.id) theMenuItems [my nat.entry.id] = FALSE;
-				#elif mac
-					DeleteMenuItem (my nat.entry.handle, my nat.entry.item);
-					for (subview = my parent -> firstChild; subview; subview = subview -> nextSibling) {
-						if (subview -> nat.entry.item > my nat.entry.item)
-							subview -> nat.entry.item -= 1;
-					}
-				#endif
+				if (my nat.entry.id) theMenuItems [my nat.entry.id] = false;
 			} else {
-				#if win
-					_GuiWinButton_destroy (me);
-				#elif mac
-					_GuiMacButton_destroy (me);
-				#endif
+				_GuiWinButton_destroy (me);
 			}
 		} break;
 		case xmToggleButtonWidgetClass: {
 			if (my inMenu) {
-				#if win
-					if (my nat.entry.id) theMenuItems [my nat.entry.id] = FALSE;
-				#elif mac
-					DeleteMenuItem (my nat.entry.handle, my nat.entry.item);
-					for (subview = my parent -> firstChild; subview; subview = subview -> nextSibling) {
-						if (subview -> nat.entry.item > my nat.entry.item)
-							subview -> nat.entry.item -= 1;
-					}
-				#endif
+				if (my nat.entry.id) theMenuItems [my nat.entry.id] = false;
 			} else {
 				if (my isRadioButton) {
-					#if win
-						_GuiWinRadioButton_destroy (me);
-					#elif mac
-						_GuiMacRadioButton_destroy (me);
-					#endif
+					_GuiWinRadioButton_destroy (me);
 				} else {
-					#if win
-						_GuiWinCheckButton_destroy (me);
-					#elif mac
-						_GuiMacCheckButton_destroy (me);
-					#endif
+					_GuiWinCheckButton_destroy (me);
 				}
 			}
 		} break;
 		case xmScrollBarWidgetClass: {
-			#if win
-				_GuiWinScrollBar_destroy (me);
-			#elif mac
-				_GuiMacScrollBar_destroy (me);
-			#endif
+			_GuiWinScrollBar_destroy (me);
 		} break;
 		case xmScrolledWindowWidgetClass: {
 			/* The scroll bars will be destroyed automatically because they are my children. */
-			#if win
-				_GuiWinScrolledWindow_destroy (me);
-			#elif mac
-				_GuiMacScrolledWindow_destroy (me);
-			#endif
+			_GuiWinScrolledWindow_destroy (me);
 		} break;
 		case xmSeparatorWidgetClass: {
 			if (my inMenu) {
-				#if win
-					if (my nat.entry.id) theMenuItems [my nat.entry.id] = FALSE;
-				#elif mac
-					DeleteMenuItem (my nat.entry.handle, my nat.entry.item);
-					for (subview = my parent -> firstChild; subview; subview = subview -> nextSibling) {
-						if (subview -> nat.entry.item > my nat.entry.item)
-							subview -> nat.entry.item -= 1;
-					}
-				#endif
+				if (my nat.entry.id) theMenuItems [my nat.entry.id] = false;
 			}
 		} break;
 		case xmPulldownMenuWidgetClass: {
-			#if win
-				if (MEMBER (my parent, MenuBar))
-					RemoveMenu (my parent -> nat.menu.handle, (UINT) my nat.menu./*handle*/id, MF_BYCOMMAND);
-				DestroyMenu (my nat.menu.handle);
-				theMenus [my nat.menu.id] = NULL;
-			#elif mac
-				DeleteMenu (my nat.menu.id);
-				DisposeMenu (my nat.menu.handle);
-				theMenus [my nat.menu.id] = NULL;
-			#endif
+			if (MEMBER (my parent, MenuBar))
+				RemoveMenu (my parent -> nat.menu.handle, (UINT) my nat.menu./*handle*/id, MF_BYCOMMAND);
+			DestroyMenu (my nat.menu.handle);
+			theMenus [my nat.menu.id] = NULL;
 		} break;
 	}
 	Melder_free (my name);
@@ -2420,12 +1465,8 @@ Boolean XtIsShell (GuiObject me) {
 void XtMapWidget (GuiObject me) {
 	switch (my widgetClass) {
 		case xmShellWidgetClass:
-			#if win
-				ShowWindow (my window, theCommandShow);
-				//UpdateWindow (my window);
-			#elif mac
-				ShowWindow (my nat.window.ptr);
-			#endif
+			ShowWindow (my window, theGui.commandShow);
+			//UpdateWindow (my window);
 			break;
 		default:
 			break;
@@ -2437,111 +1478,44 @@ static void mapWidget (GuiObject me) {
 	Melder_assert (my widgetClass != xmPulldownMenuWidgetClass);
 	if (my inMenu) {
 		trace (U"showing a menu item");
-		#if win
-			int position = NativeMenuItem_getPosition (me);
-			switch (my widgetClass) {
-				case xmPushButtonWidgetClass: {
-					InsertMenu (my nat.entry.handle, position, MF_STRING | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
-						my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
-				} break;
-				case xmToggleButtonWidgetClass: {
-					InsertMenu (my nat.entry.handle, position, MF_STRING | MF_UNCHECKED | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
-						my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
-				} break;
-				case xmCascadeButtonWidgetClass: {
-					my nat.entry.id = (ULONG_PTR) my subMenuId -> nat.menu.handle;
-					InsertMenu (my nat.entry.handle, position, MF_POPUP | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
-						my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
-				} break;
-				case xmSeparatorWidgetClass: {
-					InsertMenu (my nat.entry.handle, position, MF_SEPARATOR | MF_BYPOSITION,
-						my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
-				} break;
-			}
-		#elif mac
-			GuiObject sibling;
-			int item;
-			/*
-			 * Insert a native menu item.
-			 */
-			if (my nat.entry.item) return;
-			/*
-			 * A Macintosh menu item shall know its "item number",
-			 * which is its dynamic position in the current shape of the menu.
-			 */
-			/*
-			 * Position of new native item.
-			 */
-			item = NativeMenuItem_getPosition (me);
-			/*
-			 * Shift all other item numbers.
-			 */
-			for (sibling = my parent -> firstChild; sibling; sibling = sibling -> nextSibling) {
-				if (sibling -> managed && sibling -> widgetClass != xmPulldownMenuWidgetClass && sibling -> nat.entry.item >= item)
-					sibling -> nat.entry.item += 1;
-			}
-			/*
-			 * Remember.
-			 */
-			my nat.entry.item = item;
-			/*
-			 * Set text, sensitivity, submenu. BUGS: should also set toggle state and accelerator text.
-			 */
-			if (my widgetClass == xmSeparatorWidgetClass) {
-				trace (U"inserting Carbon menu separator at position ", item);
-				InsertMenuItem (my nat.entry.handle, (unsigned char *) "\001-", my nat.entry.item - 1);
-			} else {
-				trace (U"inserting Carbon menu item \"", my name, U"\" at position ", item);
-				InsertMenuItem (my nat.entry.handle, (unsigned char *) "\001 ", my nat.entry.item - 1);
-				SetMenuItemTextWithCFString (my nat.entry.handle, my nat.entry.item, (CFStringRef) Melder_peek32toCfstring (my name));
-				if (my insensitive) DisableMenuItem (my nat.entry.handle, my nat.entry.item);
-				if (mac_text [mac_text [0]] == ':')
-					SetItemStyle (my nat.entry.handle, my nat.entry.item, underline);
-				if (my widgetClass == xmCascadeButtonWidgetClass) {
-					if (my subMenuId) {
-						SetMenuItemHierarchicalID (my nat.entry.handle, my nat.entry.item, my subMenuId -> nat.menu.id);
-					}
-				}
-				/*
-				 * All the items in the Apple Menu folder are added to the Apple menu.
-				 */
-				if (my parent -> name [0] == appleMark)
-					AppendResMenu (my nat.entry.handle, 'DRVR');
-			}
-		#endif
+		int position = NativeMenuItem_getPosition (me);
+		switch (my widgetClass) {
+			case xmPushButtonWidgetClass: {
+				InsertMenu (my nat.entry.handle, position, MF_STRING | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
+					my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
+			} break;
+			case xmToggleButtonWidgetClass: {
+				InsertMenu (my nat.entry.handle, position, MF_STRING | MF_UNCHECKED | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
+					my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
+			} break;
+			case xmCascadeButtonWidgetClass: {
+				my nat.entry.id = (ULONG_PTR) my subMenuId -> nat.menu.handle;
+				InsertMenu (my nat.entry.handle, position, MF_POPUP | MF_BYPOSITION | ( my insensitive ? MF_GRAYED : MF_ENABLED ),
+					my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
+			} break;
+			case xmSeparatorWidgetClass: {
+				InsertMenu (my nat.entry.handle, position, MF_SEPARATOR | MF_BYPOSITION,
+					my nat.entry.id, Melder_peek32toW (_GuiWin_expandAmpersands (my name)));
+			} break;
+		}
 	} else switch (my widgetClass) {
-		#if win
 		case xmBulletinBoardWidgetClass:
 		case xmDrawingAreaWidgetClass:
 		case xmScrolledWindowWidgetClass:
 		case xmFormWidgetClass:
 		case xmRowColumnWidgetClass:
 			ShowWindow (my window, SW_SHOW); break;
-		#endif
 		case xmShellWidgetClass: {
-			#if win
-				ShowWindow (my window, theCommandShow);
-			#elif mac
-				SelectWindow (my nat.window.ptr);
-				ShowWindow (my nat.window.ptr);
-			#endif
+			ShowWindow (my window, theGui.commandShow);
 			if (my dialogStyle == XmDIALOG_FULL_APPLICATION_MODAL)
-				#if mac
-					theGui.modalDialog = my nat.window.ptr
-				#endif
 				;
 		} break;
 		case xmMenuBarWidgetClass: {
-			#if win
-				DrawMenuBar (my shell -> window);   // every window has its own menu bar
-			#elif mac
-				DrawMenuBar ();   // there is a single Mac menu bar for all windows
-			#endif
+			DrawMenuBar (my shell -> window);   // every window has its own menu bar
 		} break;
 		case xmPushButtonWidgetClass: _GuiNativeControl_show (me); break;
 		case xmToggleButtonWidgetClass: _GuiNativeControl_show (me); break;
 		case xmScrollBarWidgetClass: {
-			#if win
 			if (! my window) {
 				my window = CreateWindow (L"scrollbar", Melder_peek32toW (my name), WS_CHILD |
 					( my orientation == XmHORIZONTAL ? SBS_HORZ : SBS_VERT) | WS_CLIPSIBLINGS,
@@ -2549,37 +1523,20 @@ static void mapWidget (GuiObject me) {
 				SetWindowLongPtr (my window, GWLP_USERDATA, (LONG_PTR) me);
 				NativeScrollBar_set (me);
 			}
-			#endif
 			_GuiNativeControl_show (me);
 		} break;
 		case xmLabelWidgetClass: _GuiNativeControl_show (me); break;
 		case xmCascadeButtonWidgetClass: {
-			#if win
-				if (! MEMBER (my parent, MenuBar)) _GuiNativeControl_show (me);
-			#elif mac
-				if (my isControl) _GuiNativeControl_show (me);
-			#endif
+			if (! MEMBER (my parent, MenuBar)) _GuiNativeControl_show (me);
 		} break;
 		case xmScaleWidgetClass: {
-			#if win
-				_GuiNativeControl_show (me);
-			#elif mac
-				_Gui_invalidateWidget (me);
-			#endif
+			_GuiNativeControl_show (me);
 		} break;
 		case xmTextWidgetClass: {
-			#if win
-				_GuiWinText_map (me);
-			#elif mac
-				_GuiMacText_map (me);
-			#endif
+			_GuiWinText_map (me);
 		} break;
 		case xmListWidgetClass: {
-			#if win
-				_GuiWinList_map (me);
-			#elif mac
-				_GuiMacList_map (me);
-			#endif
+			_GuiWinList_map (me);
 		} break;
 		default:
 			break;
@@ -2658,23 +1615,11 @@ void XtSetSensitive (GuiObject me, Boolean value) {
 			if (my inMenu || my motiff.cascadeButton.inBar) {
 				if (my subMenuId) {
 					if (value) {
-						#if mac
-							EnableMenuItem (my subMenuId -> nat.menu.handle, 0);
-						#elif win
-							NativeMenuItem_setSensitive (my subMenuId);
-						#endif
+						NativeMenuItem_setSensitive (my subMenuId);
 					} else {
-						#if mac
-							DisableMenuItem (my subMenuId -> nat.menu.handle, 0);
-						#elif win
-							NativeMenuItem_setSensitive (my subMenuId);
-						#endif
+						NativeMenuItem_setSensitive (my subMenuId);
 					}
-					#if win
-						DrawMenuBar (my shell -> window);
-					#elif mac
-						DrawMenuBar ();
-					#endif
+					DrawMenuBar (my shell -> window);
 				}
 			} else {
 				_GuiNativeControl_setSensitive (me);
@@ -2695,16 +1640,8 @@ void XtUnmanageChild (GuiObject me) {
 		if (! MEMBER (me, PulldownMenu)) NativeMenuItem_delete (me);
 	} else switch (my widgetClass) {
 		case xmShellWidgetClass:
-			#if win
-				_GuiText_handleFocusLoss (my textFocus);
-				ShowWindow (my window, SW_HIDE);
-			#elif mac
-				if (my nat.window.ptr == FrontWindow ())
-					_GuiMac_clearTheTextFocus ();
-				if (my nat.window.ptr == theGui.modalDialog)
-					theGui.modalDialog = NULL;
-				HideWindow (my nat.window.ptr);
-			#endif
+			_GuiText_handleFocusLoss (my textFocus);
+			ShowWindow (my window, SW_HIDE);
 			if (my firstChild && MEMBER2 (my firstChild, Form, BulletinBoard))
 				my firstChild -> managed = 0;
 			break;
@@ -2712,11 +1649,7 @@ void XtUnmanageChild (GuiObject me) {
 		case xmToggleButtonWidgetClass: _GuiNativeControl_hide (me); break;
 		case xmLabelWidgetClass: _GuiNativeControl_hide (me); break;
 		case xmCascadeButtonWidgetClass:
-			#if win
-				if (! MEMBER (my parent, MenuBar)) _GuiNativeControl_hide (me);
-			#elif mac
-				if (my isControl) _GuiNativeControl_hide (me);
-			#endif
+			if (! MEMBER (my parent, MenuBar)) _GuiNativeControl_hide (me);
 			break;
 		case xmScrollBarWidgetClass: _GuiNativeControl_hide (me); break;
 		case xmFormWidgetClass:
@@ -2744,125 +1677,15 @@ void XtUnmanageChildren (GuiObjectList children, Cardinal num_children) {
 	for (i = 0; i < num_children; i ++) XtUnmanageChild (children [i]);
 }
 
-#if mac
-	static pascal OSErr _motif_processOpenApplicationMessage (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		(void) theAppleEvent;
-		(void) reply;
-		(void) handlerRefCon;
-		return noErr;
-		Melder_warning (U"Open app event.");
-	}
-	static pascal OSErr _motif_processQuitApplicationMessage (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		/*
-			This hook shall return noErr if it is OK to quit,
-			otherwise userCanceledErr. It should not exit the application by itself. Here it does!!
-		*/
-		(void) theAppleEvent;
-		(void) reply;
-		(void) handlerRefCon;
-		if (theQuitApplicationCallback)
-			return theQuitApplicationCallback () ? noErr : userCanceledErr;   // BUG anti Mac documentation
-		exit (0);
-		return noErr;
-	}
-	static pascal OSErr _motif_processOpenDocumentsMessage (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		AEDescList documentList;
-		OSErr err;
-		long document, numberOfDocuments;
-		(void) reply;
-		(void) handlerRefCon;
-		err = AEGetParamDesc (theAppleEvent, keyDirectObject, typeAEList, & documentList);
-		if (err) return err;
-		err = AECountItems (& documentList, & numberOfDocuments);
-		for (document = 1; document <= numberOfDocuments; document ++ ) {
-			AEKeyword keyWord;
-			DescType typeCode;
-			Size actualSize;
-			FSRef fsref;
-			err = AEGetNthPtr (& documentList, document, typeFSRef, & keyWord, & typeCode, & fsref, sizeof (fsref), & actualSize);
-			if (! err) {
-				structMelderFile file = { 0 };
-				Melder_machToFile (& fsref, & file);
-				if (theOpenDocumentCallback)
-					theOpenDocumentCallback (& file);
-			}
-		}
-		AEDisposeDesc (& documentList);
-		return noErr;
-	}
-	static pascal OSErr _motif_processSignal8 (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		static int duringAppleEvent = FALSE;
-		(void) reply;
-		(void) handlerRefCon;
-		if (! duringAppleEvent) {
-			char *buffer;
-			long actualSize;
-			duringAppleEvent = TRUE;
-			//AEInteractWithUser (kNoTimeOut, NULL, NULL);   // use time out of 0 to execute immediately (without bringing to foreground)
-			ProcessSerialNumber psn;
-			GetCurrentProcess (& psn);
-			SetFrontProcess (& psn);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, NULL, NULL, 0, & actualSize);
-			buffer = (char *) malloc (actualSize);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, NULL, & buffer [0], actualSize, NULL);
-			if (theUserMessageCallback) {
-				autostring32 buffer32 = Melder_8to32 (buffer);
-				theUserMessageCallback (buffer32.peek());
-			}
-			free (buffer);
-			duringAppleEvent = FALSE;
-		}
-		return noErr;
-	}
-	static pascal OSErr _motif_processSignal16 (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		static int duringAppleEvent = FALSE;
-		(void) reply;
-		(void) handlerRefCon;
-		if (! duringAppleEvent) {
-			char16 *buffer;
-			long actualSize;
-			duringAppleEvent = TRUE;
-			//AEInteractWithUser (kNoTimeOut, NULL, NULL);   // use time out of 0 to execute immediately (without bringing to foreground)
-			ProcessSerialNumber psn;
-			GetCurrentProcess (& psn);
-			SetFrontProcess (& psn);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, NULL, NULL, 0, & actualSize);
-			buffer = (char16 *) malloc (actualSize);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, NULL, & buffer [0], actualSize, NULL);
-			if (theUserMessageCallback) {
-				autostring32 buffer32 = Melder_16to32 (buffer);
-				theUserMessageCallback (buffer32.peek());
-			}
-			free (buffer);
-			duringAppleEvent = FALSE;
-		}
-		return noErr;
-	}
-#elif win
-	static LRESULT CALLBACK windowProc (HWND window, UINT message, WPARAM wParam, LPARAM lParam);
-#endif
+static LRESULT CALLBACK windowProc (HWND window, UINT message, WPARAM wParam, LPARAM lParam);
 
-void GuiInitialize (const char *name, unsigned int *argc, char **argv)
+void GuiAppInitialize (const char *name, unsigned int argc, char **argv)
 {
 	(void) argc;
-	#if mac
-		(void) argv;
-		_GuiText_init ();
-		RegisterAppearanceClient ();
-		InitCursor ();
-		FlushEvents (everyEvent, 0);
-		AEInstallEventHandler (kCoreEventClass, kAEOpenApplication, NewAEEventHandlerUPP (_motif_processOpenApplicationMessage), 0, false);
-		AEInstallEventHandler (kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP (_motif_processQuitApplicationMessage), 0, false);
-		AEInstallEventHandler (kCoreEventClass, kAEOpenDocuments, NewAEEventHandlerUPP (_motif_processOpenDocumentsMessage), 0, false);
-		AEInstallEventHandler (758934755, 0, NewAEEventHandlerUPP (_motif_processSignal8),  0, false);
-		AEInstallEventHandler (758934756, 0, NewAEEventHandlerUPP (_motif_processSignal16), 0, false);
-		//USE_QUESTION_MARK_HELP_MENU = 1;
-		theUserFocusEventTarget = GetUserFocusEventTarget ();
-	#elif win
 	{
 		HWND window;
 		WNDCLASSEX windowClass;
-		Melder_sprint (theApplicationName,100, argv [0] ? Melder_peek8to32 (argv [0]) : U"Unknown");
+		Melder_sprint (theApplicationName,100, Melder_peek8to32 (argv [0]));
 		Melder_sprint (theApplicationClassName,100, U"PraatShell", PRAAT_WINDOW_CLASS_NUMBER, U" ", theApplicationName);
 		Melder_sprint (theWindowClassName,100, U"PraatChildWindow", PRAAT_WINDOW_CLASS_NUMBER, U" ", theApplicationName);
 		Melder_sprint (theDrawingAreaClassName,100, U"PraatDrawingArea", PRAAT_WINDOW_CLASS_NUMBER, U" ", theApplicationName);
@@ -2876,46 +1699,21 @@ void GuiInitialize (const char *name, unsigned int *argc, char **argv)
 			 */
 			if (IsIconic (window)) ShowWindow (window, SW_RESTORE);
 			SetForegroundWindow (window);
-			if (theOpenDocumentCallback && argv [3] [0]) {
-				structMelderFile file = { 0 };
-				/*
-				 * The user dropped a file on the Praat icon or double-clicked a Praat file
-				 * while Praat was already running.
-				 * Windows may have enclosed the path between quotes;
-				 * this is especially likely to happen if the path contains spaces,
-				 * which on Windows XP is very usual.
-				 */
-				char32 *s = Melder_8to32 (argv [3]);
-				for (;;) {
-					bool endSeen = false;
-					while (*s == U' ' || *s == U'\n') s ++;
-					if (*s == U'\0') break;
-					char32 *path = s;
-					if (*s == U'\"') {
-						path = ++ s;
-						while (*s != U'\"' && *s != U'\0') s ++;
-						if (*s == U'\0') break;
-						Melder_assert (*s == U'\"');
-						*s = U'\0';
-					} else {
-						while (*s != U' ' && *s != U'\n' && *s != U'\0') s ++;
-						if (*s == U' ' || *s == U'\n') {
-							*s = U'\0';
-						} else {
-							endSeen = true;
-						}
+			if (theOpenDocumentCallback) {
+				for (unsigned int iarg = 1; iarg < argc; iarg ++) {
+					if (argv [iarg] [0] != '-') {
+						structMelderDir dir { 0 };
+						Melder_sprint (dir. path,kMelder_MAXPATH+1, Melder_getShellDirectory ());
+						Melder_setDefaultDir (& dir);
+						structMelderFile file = { 0 };
+						Melder_relativePathToFile (Melder_peek8to32 (argv [iarg]), & file);
+						theOpenDocumentCallback (& file);
 					}
-					Melder_sprint (file. path,kMelder_MAXPATH+1, path);
-					theOpenDocumentCallback (& file);
-					if (endSeen) break;
-					s ++;
 				}
 			}
 			exit (0);   // possible problem
 		}
 
-		sscanf (argv [1], "%p", & theGui.instance);
-
 		windowClass. cbSize = sizeof (WNDCLASSEX);
 		windowClass. style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS |
 			CS_OWNDC   // crucial: see GraphicsScreen_init ()
@@ -2937,17 +1735,7 @@ void GuiInitialize (const char *name, unsigned int *argc, char **argv)
 		windowClass. lpszClassName = Melder_32toW (theApplicationClassName);
 		RegisterClassEx (& windowClass);
 		InitCommonControls ();
-		theCommandShow = atoi (argv [2]);
 	}
-	#endif
-}
-
-void GuiAppInitialize (const char *name,
-	void *dum2, int dum3, unsigned int *argc, char **argv, void *dum4, void *dum5)
-{
-	(void) dum4;
-	(void) dum5;
-	GuiInitialize (name, argc, argv);
 }
 
 void GuiApp_setApplicationShell (GuiObject shell) {
@@ -2977,9 +1765,6 @@ GuiObject XtVaCreateWidget (const char *name, int widgetClass, GuiObject parent,
 
 void XtVaGetValues (GuiObject me, ...) {
 	char *text;
-	#if mac
-		Str255 ptext;
-	#endif
 	unsigned int resource;
 	va_list arg;
 	va_start (arg, me);
@@ -2991,15 +1776,7 @@ void XtVaGetValues (GuiObject me, ...) {
 		case XmNuserData: *va_arg (arg, void **) = my userData; break;
 		case XmNtitle:
 			Melder_assert (my widgetClass == xmShellWidgetClass);
-			#if mac
-				GetWTitle (my nat.window.ptr, ptext);
-				text = Melder_malloc_f (char, ptext [0] + 1);
-				strncpy (text, (char *) ptext + 1, ptext [0]);
-				text [ptext [0]] = 0;
-				*va_arg (arg, char **) = text;
-			#elif win
-				*va_arg (arg, char **) = NULL;
-			#endif
+			*va_arg (arg, char **) = NULL;
 			break;
 		case XmNlabelString:
 		case XmNtitleString:
@@ -3009,15 +1786,7 @@ void XtVaGetValues (GuiObject me, ...) {
 			break;
 		case XmNdialogTitle:
 			Melder_assert (my widgetClass == xmFormWidgetClass || my widgetClass == xmBulletinBoardWidgetClass);
-			#if mac
-				GetWTitle (my macWindow, ptext);
-				text = Melder_malloc_f (char, ptext [0] + 1);
-				strncpy (text, (char *) ptext + 1, ptext [0]);
-				text [ptext [0]] = 0;
-				*va_arg (arg, char **) = text;
-			#elif win
-				*va_arg (arg, char **) = NULL;
-			#endif
+			*va_arg (arg, char **) = NULL;   // NYI
 			break;
 		case XmNradioBehavior:
 			Melder_assert (my widgetClass == xmRowColumnWidgetClass);
@@ -3117,11 +1886,7 @@ void XtVaSetValues (GuiObject me, ...) {
 }
 
 Window XtWindow (GuiObject me) {
-	#if mac
-		return (Window) my macWindow;
-	#elif win
-		return (Window) my window;
-	#endif
+	return (Window) my window;
 }
 
 /***** MOTIF *****/
@@ -3130,9 +1895,6 @@ void XmAddWMProtocolCallback (GuiObject me, Atom protocol, XtCallbackProc callba
 	if (protocol == 'delw') {
 		my motiff.shell.goAwayCallback = callback;
 		my motiff.shell.goAwayClosure = closure;
-		#if mac
-			ChangeWindowAttributes (my macWindow, kWindowCloseBoxAttribute, 0);
-		#endif
 	}
 }
 
@@ -3238,7 +2000,6 @@ GuiObject XmCreateShell (GuiObject parent, const char *name, ArgList dum1, int d
 	GuiObject me = createWidget (xmShellWidgetClass, parent, name);
 	(void) dum1;
 	(void) dum2;
-	_motif_addShell (me);
 	return me;
 }
 
@@ -3256,11 +2017,7 @@ void XmScaleGetValue (GuiObject me, int *value_return) {
 void XmScaleSetValue (GuiObject me, int value) {
 	Melder_assert (my widgetClass == xmScaleWidgetClass);
 	my value = value;
-	#if win
-		SendMessage (my window, PBM_SETPOS, (WPARAM) value, 0);
-	#elif mac
-		SetPortWindowPort (my macWindow);
-	#endif
+	SendMessage (my window, PBM_SETPOS, (WPARAM) value, 0);
 	_motif_update (me, 0);
 }
 
@@ -3283,23 +2040,13 @@ void XmScrollBarSetValues (GuiObject me, int value, int sliderSize,
 	my increment = increment;
 	my pageIncrement = pageIncrement;
 	NativeScrollBar_set (me);
-	#if mac
-		if (theGui.duringUpdate)
-			_Gui_invalidateWidget (me);   // HACK: necessary because VisRgn has temporarily been changed
-	#endif
 	if (notify)	_Gui_callCallbacks (me, & my motiff.scrollBar.valueChangedCallbacks, NULL);
 }
 
 Boolean XmToggleButtonGadgetGetState (GuiObject me) {
 	Melder_assert (MEMBER (me, ToggleButton));
 	Melder_assert (my inMenu);
-	#if mac
-		short mark;
-		GetItemMark (my nat.entry.handle, my nat.entry.item, & mark);
-		return mark != noMark;
-	#elif win
-		return GetMenuState (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND) & MF_CHECKED ? True : False;
-	#endif
+	return GetMenuState (my nat.entry.handle, my nat.entry.id, MF_BYCOMMAND) & MF_CHECKED ? True : False;
 }
 
 void XmToggleButtonGadgetSetState (GuiObject me, Boolean value, Boolean notify) {
@@ -3309,142 +2056,7 @@ void XmToggleButtonGadgetSetState (GuiObject me, Boolean value, Boolean notify)
 	if (notify) _Gui_callCallbacks (me, & my motiff.toggleButton.valueChangedCallbacks, NULL);
 }
 
-#if mac
-	static void _motif_update (GuiObject me, EventRecord *event) {
-		GuiObject subview;
-		RgnHandle visRgn;
-		if (! my managed || my inMenu) return;
-		for (subview = my firstChild; subview != NULL; subview = subview -> nextSibling) {
-			if (subview -> widgetClass != xmShellWidgetClass)   /* Only in same mac window. */
-				_motif_update (subview, event);
-		}
-		visRgn = NewRgn ();
-		GetPortVisibleRegion (GetWindowPort (my macWindow), visRgn);
-		if (! RectInRgn (& my rect, visRgn)) { DisposeRgn (visRgn); return; }
-		SetPortWindowPort (my macWindow);
-		switch (my widgetClass) {
-			case xmPushButtonWidgetClass:
-			case xmToggleButtonWidgetClass:
-			case xmScrollBarWidgetClass: {
-				_GuiMac_clipOnParent (me);
-				Draw1Control (my nat.control.handle);
-				GuiMac_clipOff ();
-			} break;
-			case xmListWidgetClass: _GuiMacList_update (me, visRgn); break;
-			case xmDrawingAreaWidgetClass: _GuiMacDrawingArea_update (me); break;
-			case xmTextWidgetClass: _GuiMacText_update (me); break;
-			case xmLabelWidgetClass: {
-				_GuiMac_clipOnParent (me);
-				Draw1Control (my nat.control.handle);
-				GuiMac_clipOff ();
-			} break;
-			case xmCascadeButtonWidgetClass: {
-				if (my isControl) {   // in window menu bar or in dynamic menu
-					_GuiMac_clipOnParent (me);
-					Draw1Control (my nat.control.handle);
-					/* BUG: should make insensitive if not my shell.active or my macWindow != FrontWindow () */
-					GuiMac_clipOff ();
-				}
-			} break;
-			case xmRowColumnWidgetClass: {
-				/*if (my rowColumnType == XmMENU_BAR)
-					DrawThemeMenuBarBackground (& my rect, 0, 0);*/
-			} break;
-			case xmScrolledWindowWidgetClass: {
-				_GuiMac_clipOnParent (me);
-				FrameRect (& my rect);
-				GuiMac_clipOff ();
-			} break;
-			case xmFrameWidgetClass: {
-				_GuiMac_clipOnParent (me);
-				FrameRect (& my rect);
-				GuiMac_clipOff ();
-			} break;
-			case xmScaleWidgetClass: {
-				Rect r = my rect;
-				_GuiMac_clipOnParent (me);
-				InsetRect (& r, 20, 15);
-				FrameRect (& r);
-				InsetRect (& r, 1, 1);
-				if (my value <= my minimum) {
-					EraseRect (& r);
-				} else {
-					Rect active = r, inactive = r;
-					active. right = r. left + (float) (r. right - r. left) * my value / (my maximum - my minimum + 1);
-					PaintRect (& active);
-					inactive. left = active. right;
-					EraseRect ( & inactive);
-				}
-				GuiMac_clipOff ();
-			} break;
-			default: break;
-		}
-		DisposeRgn (visRgn);
-	}
-#elif win
-	static void _motif_update (GuiObject me, void *event) { (void) me; (void) event; }
-#endif
-
-#if mac
-static void _motif_processUpdateEvent (EventRecord *event) {
-	WindowPtr macwindow = (WindowPtr) event -> message;
-	GuiObject shell = (GuiObject) GetWRefCon (macwindow);
-	Rect rect;
-	int right, bottom;
-	if (! shell) return;
-	BeginUpdate (macwindow);
-	theGui.duringUpdate = True;
-	SetPortWindowPort (macwindow);
-	if (! shell -> motiff.shell.isDialog) {
-		Rect portRect;
-		GetWindowPortBounds (macwindow, & portRect);
-		right = portRect. right, bottom = portRect. bottom;
-		SetRect (& rect, right - 15, bottom - 15, right + 1, bottom + 1);
-		ClipRect (& rect);
-		DrawGrowIcon (macwindow);
-		GuiMac_clipOff ();
-	}
-	_motif_update (shell, event);
-	EndUpdate (macwindow);
-	theGui.duringUpdate = False;
-}
-#endif
-
-void XmUpdateDisplay (GuiObject displayDummy) {
-	/*
-	 * Send update messages to all shells.
-	 */
-	int i;
-	(void) displayDummy;
-	for (i = 0; i < MAXIMUM_NUMBER_OF_SHELLS; i ++) {
-		GuiObject shell = theShells [i];
-		#if mac
-			if (shell && shell -> managed) {
-				RgnHandle updateRegion = NewRgn ();
-				GetWindowRegion (shell -> nat.window.ptr, kWindowUpdateRgn, updateRegion);
-				if (Melder_debug != 12 && ! EmptyRgn (updateRegion)) {
-					/*
-					 * Hack an update event and send it to me.
-					 */
-					EventRecord event;
-					event. message = (long) shell -> nat.window.ptr;
-					_motif_processUpdateEvent (& event);
-				}
-				#if 0
-					QDGetDirtyRegion (GetWindowPort (shell -> nat.window.ptr), updateRegion);
-					QDFlushPortBuffer (GetWindowPort (shell -> nat.window.ptr), updateRegion);
-				#endif
-				DisposeRgn (updateRegion);
-				QDFlushPortBuffer (GetWindowPort (shell -> nat.window.ptr), NULL);
-				static Rect bounds = { -32768, -32768, 32767, 32767 };
-				QDAddRectToDirtyRegion (GetWindowPort (shell -> nat.window.ptr), & bounds);
-			}
-		#endif
-	}
-	#if win
-		GdiFlush ();
-	#endif
-}
+static void _motif_update (GuiObject me, void *event) { (void) me; (void) event; }
 
 /***** EVENT *****/
 
@@ -3499,7 +2111,6 @@ static GuiObject _motif_getNextTextWidget (GuiObject shell, GuiObject text, bool
 	return _motif_getLocatedTextWidget (shell, & itextWidget, textWidgetLocation);
 }
 
-#if win
 static void on_scroll (GuiObject me, UINT part, int pos) {
 	if (my maximum == my minimum) return;
 	switch (part) {
@@ -3523,778 +2134,40 @@ static void on_scroll (GuiObject me, UINT part, int pos) {
 	else
 		_Gui_callCallbacks (me, & my motiff.scrollBar.valueChangedCallbacks, (XtPointer) (ULONG_PTR) part);
 }
-#elif mac
-static pascal void _motif_scrollBarAction (ControlHandle maccontrol, short part) {
-	GuiObject me = (GuiObject) GetControlReference (maccontrol);
-	if (me == NULL || part == 0) return;
-	switch (part) {
-		case kControlUpButtonPart: my value -= my increment; break;
-		case kControlDownButtonPart: my value += my increment; break;
-		case kControlPageUpPart: my value -= my pageIncrement; break;
-		case kControlPageDownPart: my value += my pageIncrement; break;
-		case kControlIndicatorPart: my value = GetControl32BitValue (maccontrol); break;
-		default: break;
-	}
-	if (my value < my minimum) my value = my minimum;
-	if (my value > my maximum - my sliderSize) my value = my maximum - my sliderSize;
-	SetControl32BitValue (maccontrol, my value);
-	if (part == kControlIndicatorPart) {
-		_Gui_callCallbacks (me, & my motiff.scrollBar.dragCallbacks, (XtPointer) (long) part);
-	} else {
-		_Gui_callCallbacks (me, & my motiff.scrollBar.valueChangedCallbacks, (XtPointer) (long) part);
-	}
-}
-#endif
-
-#if mac
-static void _motif_activateControls (GuiObject me, Boolean act) {
-	ControlHandle macControl;
-	GuiObject control;
-	UInt16 numberOfControls, icontrol;
-	Melder_assert (MEMBER (me, Shell));
-	Melder_assert (my nat.window.rootControl);
-	CountSubControls (my nat.window.rootControl, & numberOfControls);
-	SetPortWindowPort (my macWindow);
-	for (icontrol = 1; icontrol <= numberOfControls; icontrol ++) {
-		GetIndexedSubControl (my nat.window.rootControl, icontrol, & macControl);
-		control = (GuiObject) GetControlReference (macControl);
-		if (control && control -> magicNumber == 15111959 && control -> managed) {
-			_GuiMac_clipOnParent (control);
-			HiliteControl (macControl, act && ! control -> insensitive ? 0 : 255 );
-			GuiMac_clipOff ();
-		}
-	}
-}
-
-static void _motif_activateGrowIcon (GuiObject me, Boolean act) {
-	if (! my motiff.shell.isDialog) {
-		WindowPtr macwindow = my nat.window.ptr;
-		Rect portRect, rect;
-		int right, bottom;
-		Melder_assert (macwindow != NULL);
-		Melder_assert (GetWindowKind (macwindow) == userKind);
-		GetWindowPortBounds (macwindow, & portRect);
-		right = portRect. right, bottom = portRect. bottom;
-		SetRect (& rect, right - 15, bottom - 15, right + 1, bottom + 1);
-		SetPortWindowPort (macwindow);
-		ClipRect (& rect);
-		DrawGrowIcon (macwindow);
-		GuiMac_clipOff ();
-		if (act) ValidWindowRect (macwindow, & rect);
-	}
-}
-
-static void _motif_activateText (GuiObject me, Boolean act) {
-	if (act) {
-		_GuiText_setTheTextFocus (my textFocus);
-	} else {
-		_GuiMac_clearTheTextFocus ();
-	}
-}
-
-static void _motif_activateRest (GuiObject me, Boolean act) {
-	GuiObject sub;
-	if (! my managed) return;
-	SetPortWindowPort (my macWindow);
-	for (sub = my firstChild; sub != NULL; sub = sub -> nextSibling)
-		if (sub -> widgetClass != xmShellWidgetClass)   /* Only in same mac window. */
-			_motif_activateRest (sub, act);
-	if (my isControl) {
-		return;   /* Already done by _motif_activateControls. */
-	} else if (my widgetClass == xmListWidgetClass) {
-		_GuiMacList_activate (me, act);
-	} else if (my widgetClass == xmTextWidgetClass) {
-		/* This is handled on the shell level. */
-		return;
-	} else if (my widgetClass == xmCascadeButtonWidgetClass &&
-				my parent -> widgetClass == xmRowColumnWidgetClass &&
-				my parent -> rowColumnType == XmMENU_BAR) {
-		if (! act) {
-			static RGBColor lightGrey = { 32768, 32768, 32768 }, blak;
-			GetForeColor (& blak);
-			RGBForeColor (& lightGrey);
-			_motif_update (me, NULL);
-			RGBForeColor (& blak);
-		} else {
-			_motif_update (me, NULL);
-		}
-	}
-}
-
-static void _motif_processActivateEvent (EventRecord *event) {
-	WindowPtr macwindow = (WindowPtr) event -> message;
-	int act = event -> modifiers & 1;
-	if (GetWindowKind (macwindow) >= userKind) {
-		GuiObject shell = (GuiObject) GetWRefCon (macwindow);
-		if (! shell) return;
-
-		Melder_assert (GetWindowKind (macwindow) == userKind);
-		if (! BACKGROUND_WINDOWS_ARE_ACTIVE) shell -> motiff.shell.active = act;
-		if (! BACKGROUND_WINDOWS_ARE_ACTIVE) _motif_activateControls (shell, act);
-		_motif_activateGrowIcon (shell, act);
-		if (BACKGROUND_WINDOWS_ARE_ACTIVE && shell -> dialogStyle == XmDIALOG_FULL_APPLICATION_MODAL) {
-			/*
-			 * Bypass the Mac activation scheme if Motif style is on.
-			 * Deactivate all other shells.
-			 */
-			for (int i = 0; i < MAXIMUM_NUMBER_OF_SHELLS; i ++) {
-				GuiObject otherShell = theShells [i];
-				if (otherShell && otherShell -> managed && otherShell != shell) {
-					otherShell -> motiff.shell.active = ! act;
-					_motif_activateControls (otherShell, ! act);
-					_motif_activateRest (otherShell, ! act);
-				}
-			}
-		}
-		_motif_activateText (shell, act);
-		if (! BACKGROUND_WINDOWS_ARE_ACTIVE) _motif_activateRest (shell, act);
-	}
-}
-
-static void _motif_processOsEvent (EventRecord *event) {
-	unsigned char messageKind = ((unsigned long) event -> message & 0xFF000000) >> 24;
-	if (messageKind == mouseMovedMessage) {
-		Melder_fatal (U"_motif_processOsEvent -- mouseMovedMessage");
-		Point location = event -> where;
-	} else if (messageKind == suspendResumeMessage && 0) {
-		//Melder_fatal ("_motif_processOsEvent -- suspendResumeMessage");
-		WindowPtr frontWindow = FrontWindow ();
-		int act = event -> message & resumeFlag ? true : false;
-		theBackground = ! act;
-		for (int i = 0; i < MAXIMUM_NUMBER_OF_SHELLS; i ++) {
-			GuiObject shell = theShells [i];
-			if (! shell || ! shell -> managed) continue;
-			if (BACKGROUND_WINDOWS_ARE_ACTIVE) {
-				if (theGui.modalDialog && theGui.modalDialog != shell -> nat.window.ptr) continue;
-			} else {
-				if (shell -> nat.window.ptr != frontWindow) continue;
-			}
-			shell -> motiff.shell.active = act;
-			_motif_activateControls (shell, act);
-			_motif_activateGrowIcon (shell, act);
-			_motif_activateText (shell, act);
-			_motif_activateRest (shell, act);
-		}
-	}
-}
-
-static void _motif_processHighLevelEvent (EventRecord *event) {
-	AEProcessAppleEvent (event);
-}
-
-static GuiObject _motif_findDrawingArea (GuiObject me) {
-	GuiObject sub;
-	if (my widgetClass == xmDrawingAreaWidgetClass) return me;
-	for (sub = my firstChild; sub != NULL; sub = sub -> nextSibling)
-		if (sub -> widgetClass != xmShellWidgetClass) {   // only in same Mac window
-			GuiObject drawingArea = _motif_findDrawingArea (sub);
-			if (drawingArea) return drawingArea;
-		}
-	return NULL;   /* No DrawingArea found. */
-}
-
-static int _motif_shell_processKeyboardEquivalent (GuiObject shell, unsigned char kar, int modifiers, EventRecord *event) {
-	WindowPtr macWindow = shell ? shell -> nat.window.ptr : NULL;
-	int imenu;
-	/*
-	 * If the user presses Command-?, i.e. the Command key plus the Shift key plus the "/?" key,
-	 * Macintosh sends us the "/" character instead of the "?" character. Fix this.
-	 */
-	if (modifiers == (_motif_COMMAND_MASK | _motif_SHIFT_MASK)) {
-		switch (kar) {
-			case '/': kar = '\?'; break; case '[': kar = '{'; break; case ']': kar = '}'; break; case '\'': kar = '\"'; break;
-			case ',': kar = '<'; break; case '.': kar = '>'; break; case '\\': kar = '|'; break; case '-': kar = '_'; break;
-			case '=': kar = '+'; break; case '`': kar = '~'; break;
-			default: break;
-		}
-	}
-	/*
-	 * If the user presses Option-Command-A, Macintosh sends us byte 140 instead of the "A" character.
-	 * These bytes are above 128, except Option-Command-I and Option-Command-N, which give 94 and 126 instead,
-	 * but since these are shifted characters ("^" and "~"), there will be no confusion. So we fix it all.
-	 */
-	//Melder_casual (U"Keyboard shortcut ", (int) kar, U" to shell ", Melder_pointer (shell));
-	if (modifiers == (_motif_COMMAND_MASK | _motif_OPTION_MASK)) {
-		if (modifiers & _motif_SHIFT_MASK) {
-			/* Ignore the triple modifiers! */
-		} else {
-			switch ((unsigned char) kar) {
-				case 94: kar = 'I'; break; case 126: kar = 'N'; break; case 140: kar = 'A'; break; case 141: kar = 'C'; break;
-				case 160: kar = 'T'; break; case 167: kar = 'S'; break; case 168: kar = 'R'; break; case 169: kar = 'G'; break;
-				case 171: kar = 'E'; break; case 172: kar = 'U'; break; case 180: kar = 'Y'; break; case 181: kar = 'M'; break;
-				case 182: kar = 'D'; break; case 183: kar = 'W'; break; case 185: kar = 'P'; break; case 186: kar = 'B'; break;
-				case 189: kar = 'Z'; break; case 191: kar = 'O'; break; case 194: kar = 'L'; break; case 195: kar = 'V'; break;
-				case 196: kar = 'F'; break; case 197: kar = 'X'; break; case 198: kar = 'J'; break; case 207: kar = 'Q'; break;
-				case 250: kar = 'H'; break; case 251: kar = 'K'; break;
-				default: break;
-			}
-		}
-	}
-	for (imenu = 1; imenu <= MAXIMUM_NUMBER_OF_MENUS; imenu ++) if (theMenus [imenu] && theMenus [imenu] -> macWindow == macWindow) {
-		GuiObject child;
-		for (child = theMenus [imenu] -> firstChild; child != NULL; child = child -> nextSibling)
-			if ((child -> widgetClass == xmPushButtonWidgetClass || child -> widgetClass == xmToggleButtonWidgetClass) &&
-					child -> motiff.pushButton.acceleratorChar == kar &&
-					child -> motiff.pushButton.acceleratorModifiers == modifiers)
-			{
-				if (child -> widgetClass == xmPushButtonWidgetClass && child -> activateCallback && ! child -> insensitive) {
-					child -> activateCallback (child, child -> activateClosure, (XtPointer) event);
-					return 1;
-				} else if (child -> widgetClass == xmToggleButtonWidgetClass) {
-					XmToggleButtonGadgetSetState (child, 1 - XmToggleButtonGadgetGetState (child), False);
-					_Gui_callCallbacks (child, & child -> motiff.toggleButton.valueChangedCallbacks, (XtPointer) event);
-					return 1;
-				}
-			}
-	}
-	return 0;
-}
-
-static void _motif_processKeyboardEquivalent (unsigned char kar, int modifiers, EventRecord *event) {
-	/*
-	 * First try to send the key command to the active shell.
-	 * If that fails, try to send the key command to the application shell.
-	 */
-	if (! _motif_shell_processKeyboardEquivalent ((GuiObject) GetWRefCon (FrontWindow ()), kar, modifiers, event))
-		if (! _motif_shell_processKeyboardEquivalent (theApplicationShell, kar, modifiers, event))
-			_motif_shell_processKeyboardEquivalent (NULL, kar, modifiers, event);
-}
-
-static bool _motif_processKeyDownEvent (EventHandlerCallRef nextHandler, EventRef eventRef, EventRecord *event) {
-	/*
-	 * This routine determines whether a key-down message is a menu shortcut or is meant to go to a text widget.
-	 * It has to find this out fast, so it cannot go through all the menu structures for each key-down.
-	 * Therefore, every shell maintains a bit list of which of the lower accelerators are used.
-	 */
-	GuiObject shell = (GuiObject) GetWRefCon (FrontWindow ());
-	if (shell == NULL) {
-		// Probably a system window such as an error dialog or file selection dialog.
-		//CallNextEventHandler (nextHandler, eventRef);
-		return false;
-	}
-	GuiObject text = theGui.textFocus;
-	unsigned char charCode = event -> message & charCodeMask, keyCode = (event -> message & keyCodeMask) >> 8;
-	int modifiers = 0;
-	if (event -> modifiers & cmdKey) modifiers |= _motif_COMMAND_MASK;
-	if (event -> modifiers & optionKey) modifiers |= _motif_OPTION_MASK;
-	if (event -> modifiers & shiftKey) modifiers |= _motif_SHIFT_MASK;
-	//Melder_casual ("char code %d, modifiers %d", charCode, event -> modifiers);
-	if (charCode < 32) {
-		if (charCode == 13) {   /* User pressed Return. */
-			/*
-			 * First test for keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_ENTER)) {
-				_motif_processKeyboardEquivalent (GuiMenu_ENTER, modifiers, event);
-				return true;
-			}
-			/*
-			 * Then look for default button in active window.
-			 */
-			if (shell && shell -> defaultButton) {
-				if (_GuiMacButton_tryToHandleShortcutKey (shell -> defaultButton, event)) {
-					return true;
-				}
-				/*
-				 * Otherwise, hand it to a text widget.
-				 */
-			}
-			/*
-			 * Then look for a text widget with an activate callback.
-			 */
-			if (_GuiMacText_tryToHandleReturnKey (nextHandler, eventRef, text, event)) return true;
-			/*
-			 * Otherwise, hand it to a text widget.
-			 */
-		} else if (charCode == 27) {   /* User pressed Escape. */
-			/*
-			 * First test for keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_ESCAPE) || (theGuiTopLowAccelerators [modifiers] & 1 << GuiMenu_ESCAPE)) {
-				_motif_processKeyboardEquivalent (GuiMenu_ESCAPE, modifiers, event);
-				return true;
-			}
-			/*
-			 * Then look for cancel button in active window.
-			 */
-			if (shell && shell -> cancelButton) {
-				if (_GuiMacButton_tryToHandleShortcutKey (shell -> cancelButton, event)) {
-					return true;
-				}
-				/*
-				 * Do not hand it to a text widget.
-				 */
-				return true;
-			}
-			/*
-			 * Do not hand it to a text widget.
-			 */
-			return true;
-		} else if (charCode == 9) {   /* User pressed Tab. */
-			/*
-			 * First test for keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_TAB) || (theGuiTopLowAccelerators [modifiers] & 1 << GuiMenu_TAB)) {
-				_motif_processKeyboardEquivalent (GuiMenu_TAB, modifiers, event);
-				return true;
-			}
-			/*
-			 * Next, try tab navigation.
-			 */
-			if (text) {
-				GuiObject nextTextWidget = _motif_getNextTextWidget (shell, text, modifiers & _motif_SHIFT_MASK);
-				if (nextTextWidget != NULL) {
-					_GuiText_setTheTextFocus (nextTextWidget);
-					GuiText_setSelection ((GuiText) nextTextWidget -> userData, 0, 10000000);
-					return true;
-				}
-			}
-			/*
-			 * Otherwise, hand it to a text widget.
-			 */
-		} else if (charCode == 8) {   /* User pressed Backspace. */
-			/*
-			 * First test for keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_BACKSPACE)) {
-				_motif_processKeyboardEquivalent (GuiMenu_BACKSPACE, modifiers, event);
-				return true;
-			}
-			/*
-			 * Otherwise, hand it to a text widget.
-			 */
-		} else if (charCode == 5) {   /* Help button. Simulate Command-?. */
-			_motif_processKeyboardEquivalent ('?', _motif_COMMAND_MASK | _motif_SHIFT_MASK, event);
-			return true;
-		} else if (charCode == 16) {   /* F1... F12 */
-			int fkey =
-				keyCode == 0x7A ? 1 : keyCode == 0x78 ? 2 : keyCode == 0x63 ? 3 : keyCode == 0x76 ? 4 :
-				keyCode == 0x60 ? 5 : keyCode == 0x61 ? 6 : keyCode == 0x62 ? 7 : keyCode == 0x64 ? 8 :
-				keyCode == 0x65 ? 9 : keyCode == 0x6D ? 10 : keyCode == 0x67 ? 11 : keyCode == 0x6F ? 12 : 0;
-			if (fkey)
-				_motif_processKeyboardEquivalent (GuiMenu_F1 - 1 + fkey, modifiers, event);
-			return true;
-		} else if (charCode == 11) {
-			_motif_processKeyboardEquivalent (GuiMenu_PAGE_UP, modifiers, event);
-			return true;   /* BUG: we should implement a scroll up in the text widget (IM V-193). */
-		} else if (charCode == 12) {
-			_motif_processKeyboardEquivalent (GuiMenu_PAGE_DOWN, modifiers, event);
-			return true;   /* BUG: we should implement a scroll down in the text widget (IM V-193). */
-		} else if (charCode == 1) {
-			_motif_processKeyboardEquivalent (GuiMenu_HOME, modifiers, event);
-			return true;   /* BUG: we should implement a top left scroll in the text widget (IM V-192). */
-		} else if (charCode == 4) {
-			_motif_processKeyboardEquivalent (GuiMenu_END, modifiers, event);
-			return true;   /* BUG: we should implement a bottom right scroll in the text widget (IM V-193). */
-		} else if (charCode == 28) {
-			/*
-			 * First test for keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_LEFT_ARROW)) {
-				_motif_processKeyboardEquivalent (GuiMenu_LEFT_ARROW, modifiers, event);
-				return true;
-			}
-			/*
-			 * Otherwise, hand it to a text widget.
-			 */
-		} else if (charCode == 29) {
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_RIGHT_ARROW)) {
-				_motif_processKeyboardEquivalent (GuiMenu_RIGHT_ARROW, modifiers, event);
-				return true;
-			}
-		} else if (charCode == 30) {
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_UP_ARROW)) {
-				_motif_processKeyboardEquivalent (GuiMenu_UP_ARROW, modifiers, event);
-				return true;
-			}
-		} else if (charCode == 31) {
-			if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_DOWN_ARROW)) {
-				_motif_processKeyboardEquivalent (GuiMenu_DOWN_ARROW, modifiers, event);
-				return true;
-			}
-		}
-	} else if (charCode == 127) {
-		if (shell && (shell -> motiff.shell.lowAccelerators [modifiers] & 1 << GuiMenu_DELETE)) {
-			_motif_processKeyboardEquivalent (GuiMenu_DELETE, modifiers, event);
-			return true;
-		}
-		/*
-		 * Otherwise, hand it to a text widget (forward delete).
-		 */
-	}
-	/*
-	 * If the Command key is pressed with a printable character, this is always a menu shortcut.
-	 */
-	else if (modifiers & _motif_COMMAND_MASK) {
-		/*
-		 * For shortcuts, the status of the Caps Lock key is immaterial.
-		 */
-		unsigned char kar = toupper (charCode);
-		/*
-		 * Command-X/C/V/period are defined even if there is no menu.
-		 * The existence of a text widget forces Command-C to mean 'Copy'.
-		 * The existence of an editable text widget forces Command-X to mean 'Cut' and Command-V to mean 'Paste'.
-		 */
-		if (_GuiMacText_tryToHandleClipboardShortcut (nextHandler, eventRef, text, kar, event)) return true;
-		#define USE_COMMAND_PERIOD_AS_CANCEL  0
-		if (USE_COMMAND_PERIOD_AS_CANCEL && kar == '.') {
-			/*
-			 * Command-period: first test for "Escape" keyboard shortcut.
-			 */
-			if (shell && (shell -> motiff.shell.lowAccelerators [0] & 1 << GuiMenu_ESCAPE)) {
-				_motif_processKeyboardEquivalent (GuiMenu_ESCAPE, 0, event);
-				return true;
-			}
-			/*
-			 * Then look for cancel button in active window.
-			 */
-			if (shell && shell -> cancelButton) {
-				if (_GuiMacButton_tryToHandleShortcutKey (shell -> cancelButton, event)) {
-					return true;
-				}
-			}
-		}
-		/*
-		 * The text widget did not catch any Command-X/C/V/period.
-		 */
-		_motif_processKeyboardEquivalent (kar, modifiers, event);
-		/*
-		 * After executing a menu shortcut, do not send the key to a text widget as well.
-		 */
-		if (kar == '`') return false;   // Command-` means "cycle through Praat's windows"
-		return true;
-	}
-	if (_GuiMacText_tryToHandleKey (nextHandler, eventRef, text, keyCode, charCode, event)) return true;
-
-	/* Last chance: try drawingArea. */
-	if (shell) {
-		GuiObject drawingArea = _motif_findDrawingArea (shell);
-		if (drawingArea && _GuiMacDrawingArea_tryToHandleKey (drawingArea, event)) {
-			return true;
-		}
-	}
-	return false;
-}
-
-static void mac_processMenuChoice (long choice, EventRecord *event) {
-	int macMenuID = HiWord (choice), macMenuItem = LoWord (choice);
-	GuiObject menu, item;
-	if (macMenuID == 0) return;
-	menu = theMenus [macMenuID == kHMHelpMenuID ? MAXIMUM_NUMBER_OF_MENUS : macMenuID];
-	if (menu == NULL) return;
-	item = menu -> firstChild;
-	if (macMenuID == kHMHelpMenuID) macMenuItem -= theHelpMenuOffset;
-	while (item && macMenuItem > 1) {
-		if (item -> widgetClass != xmPulldownMenuWidgetClass && item -> managed) macMenuItem --;   /* Count managed buttons and separators only. */
-		item = item -> nextSibling;
-	}
-	Melder_assert (item != NULL);
-	while (item && ! item -> managed) item = item -> nextSibling;
-	Melder_assert (item != NULL);
-	if (item -> activateCallback) item -> activateCallback (item, item -> activateClosure, (XtPointer) event);
-	else if (item -> widgetClass == xmToggleButtonWidgetClass) {
-		XmToggleButtonGadgetSetState (item, 1 - XmToggleButtonGadgetGetState (item), False);
-		_Gui_callCallbacks (item, & item -> motiff.toggleButton.valueChangedCallbacks, (XtPointer) event);
-	}
-}
-
-static void _motif_processMouseDownEvent (EventRecord *event) {
-	WindowPtr macvenster;
-	int part = FindWindow (event -> where, & macvenster);
-	switch (part) {
-		case inMenuBar: {
-			long choice = MenuSelect (event -> where);
-			mac_processMenuChoice (choice, event);
-			HiliteMenu (0);
-		} break;
-		case inSysWindow: {
-		} break;
-		case inDrag: {
-			RgnHandle greyRegion;
-			Rect greyBounds;
-			if (macvenster != FrontWindow ()) {
-				if (theGui.modalDialog && theGui.modalDialog != macvenster) {
-					SysBeep (1);
-					return;
-				} else {
-					SelectWindow (macvenster);
-				}
-			}
-			greyRegion = GetGrayRgn ();
-			GetRegionBounds (greyRegion, & greyBounds);
-			DragWindow (macvenster, event -> where, & greyBounds);
-		} break;
-		case inGoAway: {
-			if (TrackGoAway (macvenster, event -> where)) {
-				GuiObject shell = (GuiObject) GetWRefCon (macvenster);
-				int deleteResponse;
-				if (! shell) return;
-				deleteResponse = shell -> deleteResponse;   /* Save this, in case the callback should kill the widget (XmDO_NOTHING). */
-				if (shell -> motiff.shell.goAwayCallback)
-					shell -> motiff.shell.goAwayCallback (shell, shell -> motiff.shell.goAwayClosure, event);
-				if (deleteResponse == XmDESTROY) {
-					XtDestroyWidget (shell);
-				} else if (deleteResponse == XmUNMAP) {
-					/*
-						Unmapping is not the same as unmanaging.
-						The following duplicates some of the code of XtUnmanageChild,
-						but does not clear the 'managed' attribute.
-					*/
-					_GuiMac_clearTheTextFocus ();
-					if (macvenster == theGui.modalDialog)
-						theGui.modalDialog = NULL;
-					HideWindow (macvenster);
-				}
-			}
-		} break;
-		case inGrow: {
-			RgnHandle greyRegion = GetGrayRgn ();
-			Rect greyBounds;
-			long newSize;
-			GetRegionBounds (greyRegion, & greyBounds);
-			newSize = GrowWindow (macvenster, event -> where, & greyBounds);
-			if (newSize != 0) {
-				GuiObject shell = (GuiObject) GetWRefCon (macvenster);
-				int oldWidth, oldHeight, newWidth, newHeight;
-				if (! shell) return;
-				oldWidth = shell -> width, oldHeight = shell -> height;
-				newWidth = LoWord (newSize), newHeight = HiWord (newSize);
-				shell -> width = newWidth;
-				shell -> height = newHeight;
-				//Melder_casual ("Grow: old and new size: %d %d %d %d", oldWidth, oldHeight, newWidth, newHeight);
-				shellResizeWidget (shell, 0, 0, newWidth - oldWidth, newHeight - oldHeight);
-			}
-		} break;
-		case inZoomIn: case inZoomOut: {
-			GuiObject shell = (GuiObject) GetWRefCon (macvenster);
-			if (shell) {
-				int oldWidth = shell -> width, oldHeight = shell -> height;
-				Rect bounds;
-				if (shell -> motiff.shell.canFullScreen) {
-					if (part == inZoomOut) {
-						SetSystemUIMode (kUIModeAllSuppressed, 0);
-						Point size = { 3000, 4000 };
-						ZoomWindowIdeal (macvenster, inZoomOut, & size);
-					} else {
-						SetSystemUIMode (kUIModeNormal, 0);
-						Point size = { 900, 1440 };
-						ZoomWindowIdeal (macvenster, inZoomIn, & size);
-					}
-				} else {
-					ZoomWindow (macvenster, part, 1);
-				}
-				GetWindowPortBounds (macvenster, & bounds);
-				int newWidth = bounds.right - bounds.left;
-				int newHeight = bounds.bottom - bounds.top;
-				//Melder_casual ("Zoom: old and new size %d %d %d %d", oldWidth, oldHeight, newWidth, newHeight);
-				shell -> width = newWidth;
-				shell -> height = newHeight;
-				shellResizeWidget (shell, 0, 0, newWidth - oldWidth, newHeight - oldHeight);
-			}
-		} break;
-		case inContent: {
-			if (macvenster != FrontWindow ()) {
-				if (theGui.modalDialog && theGui.modalDialog != macvenster) { SysBeep (1); return; }
-				SelectWindow (macvenster);
-				if (! BACKGROUND_WINDOWS_ARE_ACTIVE) return;
-				XmUpdateDisplay (NULL);
-			}
-			if (GetWindowKind (macvenster) == userKind) {
-				ControlHandle maccontrol;
-				ControlPartCode controlPart;
-				SetPortWindowPort (macvenster);
-				GlobalToLocal (& event -> where);
-				maccontrol = FindControlUnderMouse (event -> where, macvenster, & controlPart);
-				if (maccontrol) {
-					GuiObject control = (GuiObject) GetControlReference (maccontrol);
-					if (! control) return;
-					if (control -> magicNumber != 15111959 || ! control -> managed) goto LABEL_clickedOutsideControl;
-					event -> message = controlPart;
-					switch (controlPart) {
-						case kControlListBoxPart: {
-							_GuiMacList_handleControlClick (control, event);
-						} break;
-						case kControlButtonPart:
-						case kControlLabelPart: {
-							if (control -> widgetClass == xmPushButtonWidgetClass) {
-								_GuiMacButton_handleClick (control, event);
-							} else if (control -> widgetClass == xmCascadeButtonWidgetClass) {   /* Cascade button. */
-								GuiObject menu = control -> subMenuId;
-								if (menu && ! control -> insensitive) {
-									Point pos;
-									long choice = 0;
-									_GuiMac_clipOnParent (control);
-									HiliteControl (maccontrol, 10);
-									GuiMac_clipOff ();
-									SetPt (& pos, control -> rect.left + 2, control -> rect.bottom);
-									LocalToGlobal (& pos);
-									choice = PopUpMenuSelect (menu -> nat.menu.handle, pos.v, pos.h, 1);
-									/*
-										Beware: we must unhighlight the cascade button NOW,
-										because callbacks may destroy it.
-									*/
-									_GuiMac_clipOnParent (control);
-									HiliteControl (maccontrol, 0);
-									GuiMac_clipOff ();
-									mac_processMenuChoice (choice, event);
-								}
-							}
-						} break;
-						case kControlCheckBoxPart: {   /* Check box or radio button. */
-							if (control -> isRadioButton) {
-								_GuiMacRadioButton_handleClick (control, event);
-							} else {
-								_GuiMacCheckButton_handleClick (control, event);
-							}
-						} break;
-						case kControlIndicatorPart:   // live scrolling
-						case kControlUpButtonPart:
-						case kControlDownButtonPart:
-						case kControlPageUpPart:
-						case kControlPageDownPart: {
-							static ControlActionUPP theControlActionUPP;
-							if (! theControlActionUPP) theControlActionUPP = NewControlActionUPP (_motif_scrollBarAction);
-							HandleControlClick (maccontrol, event -> where, event -> modifiers, theControlActionUPP);
-						} break;
-						case kControlEditTextPart: _GuiMacText_handleClick (control, event); break;
-						default: break;
-					}
-				} else {   // clicked in content region, but not in a control
-					GuiObject shell, clicked;
-					LABEL_clickedOutsideControl:
-					shell = (GuiObject) GetWRefCon (macvenster);
-					if (! shell) return;
-					clicked = _motif_findSubwidget (shell, event -> where. h, event -> where. v);
-					if (clicked) {
-						if (clicked -> widgetClass == xmListWidgetClass) {
-							_GuiMacList_handleClick (clicked, event);
-						} else if (clicked -> widgetClass == xmTextWidgetClass) {
-							if (clicked -> isControl) {   // a click in the margin of an EditText control !!
-								_GuiMacText_handleClick (clicked, event);   // BUG?:
-								;   // do nothing; to react would feel like clicking after all text
-							} else {
-								_GuiMacText_handleClick (clicked, event);
-							}
-						} else if (clicked -> widgetClass == xmDrawingAreaWidgetClass) {
-							_GuiMacDrawingArea_handleClick (clicked, event);
-						} else if (clicked -> widgetClass == xmCascadeButtonWidgetClass && 0) {
-							GuiObject menu = clicked -> subMenuId;
-							if (menu && ! clicked -> insensitive) {
-								Point pos;
-								long choice = 0;
-								Rect r = clicked -> rect; r.left -= 4; r.right += 4; r.top -= 1;
-								_GuiMac_clipOnParent (clicked);
-								InvertRect (& r);
-								GuiMac_clipOff ();
-								SetPt (& pos, r.left + 1, r.bottom);
-								LocalToGlobal (& pos);
-								choice = PopUpMenuSelect (menu -> nat.menu.handle, pos.v, pos.h, 1);
-								/*
-									Beware: we must unhighlight the cascade button NOW,
-									because callbacks may destroy it.
-								*/
-								SetPortWindowPort (clicked -> macWindow);
-								_motif_update (clicked, NULL);
-								mac_processMenuChoice (choice, event);
-							}
-						}
-					}
-				}
-			}
-		} break;
-		default: break;
-	}
-}
-
-static pascal OSStatus keyDownEventHandler (EventHandlerCallRef nextHandler, EventRef eventRef, void *userData) {
-	(void) nextHandler;
-	(void) userData;
-	EventRecord eventRecord;
-	ConvertEventRefToEventRecord (eventRef, & eventRecord);
-	#if 0
-		switch (eventRecord. what) {
-			case nullEvent: break;
-			case mouseDown: _motif_processMouseDownEvent (& eventRecord); break;
-			case mouseUp: break;
-			case keyDown: _motif_processKeyDownEvent (nextHandler, eventRef, & eventRecord); break;
-			case keyUp: break;
-			case autoKey: _motif_processKeyDownEvent (nextHandler, eventRef, & eventRecord); break;
-			case updateEvt: _motif_processUpdateEvent (& eventRecord); break;
-			case activateEvt: _motif_processActivateEvent (& eventRecord); break;
-			case osEvt: _motif_processOsEvent (& eventRecord); break;
-			case kHighLevelEvent: _motif_processHighLevelEvent (& eventRecord); break;
-			default: break;
-		}
-		return noErr;
-	#else
-		if (_motif_processKeyDownEvent (nextHandler, eventRef, & eventRecord)) return noErr;
-	#endif
-	return eventNotHandledErr;
-}
-
-#endif
 
 void XtNextEvent (XEvent *xevent) {
-	#if win
-		GetMessage (xevent, NULL, 0, 0);
-	#elif mac
-		static EventHandlerUPP keyDownEventHandlerUPP;
-		if (keyDownEventHandlerUPP == NULL) {
-			keyDownEventHandlerUPP = NewEventHandlerUPP (keyDownEventHandler);
-			EventTypeSpec keyDownEventTypeSpecs [2] = {
-				{ kEventClassKeyboard, kEventRawKeyDown },
-				{ kEventClassKeyboard, kEventRawKeyRepeat }
-			};
-			//InstallEventHandler (theUserFocusEventTarget, keyDownEventHandlerUPP, 2, keyDownEventTypeSpecs, NULL, NULL);
-			InstallApplicationEventHandler (keyDownEventHandlerUPP, 2, keyDownEventTypeSpecs, NULL, NULL);
-		}
-		/*
-		 * The waiting time should be short enough to allow Melder_progress to wait for an event.
-		 * Therefore we take 1 clock tick, so that if Melder_progress updates every 15 clock ticks,
-		 * the performance loss will not be more than 7 percent.
-		 */
-		WaitNextEvent (everyEvent, (EventRecord *) xevent, 1, NULL);
-	#endif
+	GetMessage (xevent, NULL, 0, 0);
 }
 
-static void processWorkProcsAndTimeOuts (void) {
+static void processWorkProcsAndTimeOuts () {
 	long i;
 	if (theNumberOfWorkProcs) for (i = 9; i >= 1; i --)
 		if (theWorkProcs [i])
 			if (theWorkProcs [i] (theWorkProcClosures [i])) XtRemoveWorkProc (i);
-	#if ! defined (macintosh)
-		if (theNumberOfTimeOuts) {
-			clock_t now = clock ();
-			for (i = 1; i < 10; i ++) if (theTimeOutProcs [i]) {
-				static volatile clock_t timeElapsed;   // careful: use 32-bit integers circularly; prevent optimization
-				timeElapsed = now - theTimeOutStarts [i];
-				if (timeElapsed > theTimeOutIntervals [i]) {
-					theTimeOutProcs [i] (theTimeOutClosures [i], & i);
-					XtRemoveTimeOut (i);
-				}
+	if (theNumberOfTimeOuts) {
+		clock_t now = clock ();
+		for (i = 1; i < 10; i ++) if (theTimeOutProcs [i]) {
+			static volatile clock_t timeElapsed;   // careful: use 32-bit integers circularly; prevent optimization
+			timeElapsed = now - theTimeOutStarts [i];
+			if (timeElapsed > theTimeOutIntervals [i]) {
+				theTimeOutProcs [i] (theTimeOutClosures [i], & i);
+				XtRemoveTimeOut (i);
 			}
 		}
-	#endif
+	}
 }
 
 void GuiNextEvent (XEvent *xevent) {
-	#if win
-		if (theNumberOfWorkProcs != 0 || theNumberOfTimeOuts != 0) {
-			if (PeekMessage (xevent, 0, 0, 0, PM_REMOVE)) {   // Message available?
-				;   // Hand message to XtDispatchEvent.
-			} else {
-				processWorkProcsAndTimeOuts ();   // Handle chores during idle time.
-				xevent -> message = 0;   // Hand null message to XtDispatchEvent.
-			}
-		} else GetMessage (xevent, NULL, 0, 0);   // be neighbour-friendly: do not hand null events
-	#elif mac
-		processWorkProcsAndTimeOuts ();
-		XtNextEvent (xevent);
-	#endif
+	if (theNumberOfWorkProcs != 0 || theNumberOfTimeOuts != 0) {
+		if (PeekMessage (xevent, 0, 0, 0, PM_REMOVE)) {   // Message available?
+			;   // Hand message to XtDispatchEvent.
+		} else {
+			processWorkProcsAndTimeOuts ();   // Handle chores during idle time.
+			xevent -> message = 0;   // Hand null message to XtDispatchEvent.
+		}
+	} else GetMessage (xevent, NULL, 0, 0);   // be neighbour-friendly: do not hand null events
 }
 
-#if win
-
 static int win_shell_processKeyboardEquivalent (GuiObject me, int kar, int modifiers) {
 	for (int imenu = 1; imenu <= MAXIMUM_NUMBER_OF_MENUS; imenu ++) if (theMenus [imenu] && theMenus [imenu] -> shell == me) {
 		for (GuiObject child = theMenus [imenu] -> firstChild; child != NULL; child = child -> nextSibling) {
@@ -4334,191 +2207,173 @@ static int win_processKeyboardEquivalent (GuiObject me, int kar, int modifiers)
 			}
 		return NULL;   // no DrawingArea found
 	}
-#endif
 
 void XtDispatchEvent (XEvent *xevent) {
-	#if mac
-		EventRecord *event = (EventRecord *) xevent;
-		switch (event -> what) {
-			case nullEvent: break;
-			case mouseDown: _motif_processMouseDownEvent (event); break;
-			case mouseUp: break;
-			//case keyDown: _motif_processKeyDownEvent (event); break;
-			case keyUp: break;
-			//case autoKey: _motif_processKeyDownEvent (event); break;
-			case updateEvt: _motif_processUpdateEvent (event); break;
-			case activateEvt: _motif_processActivateEvent (event); break;
-			case osEvt: _motif_processOsEvent (event); break;
-			case kHighLevelEvent: _motif_processHighLevelEvent (event); break;
-			default: break;
-		}
-	#else
-		MSG *message = (MSG *) xevent;
-		if (message -> message == 0) return;   // null message from PeekMessage during work proc or time out.
+	MSG *message = (MSG *) xevent;
+	if (message -> message == 0) return;   // null message from PeekMessage during work proc or time out.
 /*if (message -> message == WM_KEYDOWN || message -> message == WM_SYSKEYDOWN)
 {
-	int kar = LOWORD (message -> wParam);
-	int modifiers = 0;
-	GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
-	if (GetKeyState (VK_CONTROL) < 0) modifiers |= _motif_COMMAND_MASK;
-	if (GetKeyState (VK_MENU) < 0) modifiers |= _motif_OPTION_MASK;
-	if (GetKeyState (VK_SHIFT) < 0) modifiers |= _motif_SHIFT_MASK;
+int kar = LOWORD (message -> wParam);
+int modifiers = 0;
+GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
+if (GetKeyState (VK_CONTROL) < 0) modifiers |= _motif_COMMAND_MASK;
+if (GetKeyState (VK_MENU) < 0) modifiers |= _motif_OPTION_MASK;
+if (GetKeyState (VK_SHIFT) < 0) modifiers |= _motif_SHIFT_MASK;
 if(kar>=48)Melder_flushError ("modifiers:%s%s%s\nmessage: %s\nkar: %d",
 modifiers & _motif_COMMAND_MASK ? " control" : "",
 modifiers & _motif_OPTION_MASK ? " alt" : "",
 modifiers & _motif_SHIFT_MASK ? " shift" : "", message -> message == WM_KEYDOWN ? "keydown" : "syskeydown", kar);
 }*/
-		/*
-		 * Intercept accelerators, which may be function keys or Command combinations.
-		 * Some Alt-GR combinations denote special characters (e.g. backslash) on some (e.g. German) keyboards;
-		 * in such a case, the message is WM_KEYDOWN, and the reported modifier keys are Control (!) and Alt
-		 * (on a German keyboard, the backslash can be generated by Ctrl-Alt-ringel-s as well);
-		 * otherwise Alt keys give WM_SYSKEYDOWN messages.
-		 */
-		if (message -> message == WM_KEYDOWN && (GetKeyState (VK_CONTROL) < 0 || ! (message -> lParam & (1<<29))) ||
-			message -> message == WM_SYSKEYDOWN && GetKeyState (VK_MENU) < 0
-				&& (message -> lParam & (1<<29)) ||   // R&N 413: Alt key is pressed
-			message -> message == WM_SYSKEYDOWN && GetKeyState (VK_CONTROL) < 0)
-		{
-			int kar = LOWORD (message -> wParam);
-			GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
-			int modifiers = 0;
-			if (GetKeyState (VK_CONTROL) < 0) modifiers |= _motif_COMMAND_MASK;
-			if (GetKeyState (VK_MENU) < 0) modifiers |= _motif_OPTION_MASK;
-			if (GetKeyState (VK_SHIFT) < 0) modifiers |= _motif_SHIFT_MASK;
+	/*
+	 * Intercept accelerators, which may be function keys or Command combinations.
+	 * Some Alt-GR combinations denote special characters (e.g. backslash) on some (e.g. German) keyboards;
+	 * in such a case, the message is WM_KEYDOWN, and the reported modifier keys are Control (!) and Alt
+	 * (on a German keyboard, the backslash can be generated by Ctrl-Alt-ringel-s as well);
+	 * otherwise Alt keys give WM_SYSKEYDOWN messages.
+	 */
+	if (message -> message == WM_KEYDOWN && (GetKeyState (VK_CONTROL) < 0 || ! (message -> lParam & (1<<29))) ||
+		message -> message == WM_SYSKEYDOWN && GetKeyState (VK_MENU) < 0
+			&& (message -> lParam & (1<<29)) ||   // R&N 413: Alt key is pressed
+		message -> message == WM_SYSKEYDOWN && GetKeyState (VK_CONTROL) < 0)
+	{
+		int kar = LOWORD (message -> wParam);
+		GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
+		int modifiers = 0;
+		if (GetKeyState (VK_CONTROL) < 0) modifiers |= _motif_COMMAND_MASK;
+		if (GetKeyState (VK_MENU) < 0) modifiers |= _motif_OPTION_MASK;
+		if (GetKeyState (VK_SHIFT) < 0) modifiers |= _motif_SHIFT_MASK;
 /*if(kar>=48)Melder_casual ("modifiers:%s%s%s\nmessage: %s\nkar: %d",
 modifiers & _motif_COMMAND_MASK ? " control" : "",
 modifiers & _motif_OPTION_MASK ? " alt" : "",
 modifiers & _motif_SHIFT_MASK ? " shift" : "", message -> message == WM_KEYDOWN ? "keydown" : "syskeydown", kar);*/
-			if (me && my shell) {
-				unsigned long acc = my shell -> motiff.shell.lowAccelerators [modifiers];
-				//if (kar != VK_CONTROL) Melder_casual ("%d %d", acc, kar);
-				if (kar < 48) {
-					if (kar == VK_BACK) {   // shortcut or text
-						if (acc & 1 << GuiMenu_BACKSPACE) { win_processKeyboardEquivalent (my shell, GuiMenu_BACKSPACE, modifiers); return; }
-					} else if (kar == VK_TAB) {   // shortcut or text
-						if (acc & 1 << GuiMenu_TAB) { win_processKeyboardEquivalent (my shell, GuiMenu_TAB, modifiers); return; }
-					} else if (kar == VK_RETURN) {   // shortcut, default button, or text
-						//Melder_information (U"RETURN ", acc, U" def ", Melder_pointer (my shell -> defaultButton));
-						if (acc & 1 << GuiMenu_ENTER) { win_processKeyboardEquivalent (my shell, GuiMenu_ENTER, modifiers); return; }
-						else {
-							if (my shell -> defaultButton && _GuiWinButton_tryToHandleShortcutKey (my shell -> defaultButton)) return;
-						}
-					} else if (kar == VK_ESCAPE) {   // shortcut or cancel button
-						if (acc & 1 << GuiMenu_ESCAPE) { win_processKeyboardEquivalent (my shell, GuiMenu_ESCAPE, modifiers); return; }
-						else {
-							if (my shell -> cancelButton && _GuiWinButton_tryToHandleShortcutKey (my shell -> cancelButton)) return;
-						}
-						return;
-					} else if (kar == VK_PRIOR) {   // shortcut or text
-						if (acc & 1 << GuiMenu_PAGE_UP) { win_processKeyboardEquivalent (my shell, GuiMenu_PAGE_UP, modifiers); return; }
-					} else if (kar == VK_NEXT) {   // shortcut or text
-						if (acc & 1 << GuiMenu_PAGE_DOWN) { win_processKeyboardEquivalent (my shell, GuiMenu_PAGE_DOWN, modifiers); return; }
-					} else if (kar == VK_HOME) {   // shortcut or text
-						if (acc & 1 << GuiMenu_HOME) { win_processKeyboardEquivalent (my shell, GuiMenu_HOME, modifiers); return; }
-					} else if (kar == VK_END) {   // shortcut or text
-						if (acc & 1 << GuiMenu_END) { win_processKeyboardEquivalent (my shell, GuiMenu_END, modifiers); return; }
-					} else if (kar == VK_LEFT) {   // shortcut or text
-						if (acc & 1 << GuiMenu_LEFT_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_LEFT_ARROW, modifiers); return; }
-					} else if (kar == VK_RIGHT) {   // shortcut or text
-						if (acc & 1 << GuiMenu_RIGHT_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_RIGHT_ARROW, modifiers); return; }
-					} else if (kar == VK_UP) {   // shortcut or text
-						if (acc & 1 << GuiMenu_UP_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_UP_ARROW, modifiers); return; }
-					} else if (kar == VK_DOWN) {   // shortcut or text
-						if (acc & 1 << GuiMenu_DOWN_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_DOWN_ARROW, modifiers); return; }
-					} else if (kar == VK_INSERT) {   // shortcut
-						win_processKeyboardEquivalent (my shell, GuiMenu_INSERT, modifiers);
-						return;
-					} else if (kar == VK_DELETE) {   // shortcut or text
-						if (acc & 1 << GuiMenu_DELETE) { win_processKeyboardEquivalent (my shell, GuiMenu_DELETE, modifiers); return; }
-					} else if (kar == VK_HELP) {   // simulate Command-?
-						win_processKeyboardEquivalent (my shell, '?', modifiers | _motif_SHIFT_MASK);
-						return;
+		if (me && my shell) {
+			unsigned long acc = my shell -> motiff.shell.lowAccelerators [modifiers];
+			//if (kar != VK_CONTROL) Melder_casual ("%d %d", acc, kar);
+			if (kar < 48) {
+				if (kar == VK_BACK) {   // shortcut or text
+					if (acc & 1 << GuiMenu_BACKSPACE) { win_processKeyboardEquivalent (my shell, GuiMenu_BACKSPACE, modifiers); return; }
+				} else if (kar == VK_TAB) {   // shortcut or text
+					if (acc & 1 << GuiMenu_TAB) { win_processKeyboardEquivalent (my shell, GuiMenu_TAB, modifiers); return; }
+				} else if (kar == VK_RETURN) {   // shortcut, default button, or text
+					//Melder_information (U"RETURN ", acc, U" def ", Melder_pointer (my shell -> defaultButton));
+					if (acc & 1 << GuiMenu_ENTER) { win_processKeyboardEquivalent (my shell, GuiMenu_ENTER, modifiers); return; }
+					else {
+						if (my shell -> defaultButton && _GuiWinButton_tryToHandleShortcutKey (my shell -> defaultButton)) return;
 					}
-				} else if (kar >= VK_F1 && kar <= VK_F12) {   /* 112...123 */
-					/*
-					 * She has pressed one of the F keys.
-					 */
-					if (win_processKeyboardEquivalent (my shell, kar - VK_F1 + GuiMenu_F1, modifiers)) return;
-					/* Let windowProc handle Alt-F4 etc. */
-				/*
-				 * If the Command key is pressed with a printable character, this is often a menu shortcut.
-				 */
-				} else if (modifiers & _motif_COMMAND_MASK) {
-					if (MEMBER (me, Text) && (kar == 'X' || kar == 'C' || kar == 'V' || kar == 'Z')) {
-						;   // let window proc handle text editing
-					} else if (kar >= 186) {
-						int shift = modifiers & _motif_SHIFT_MASK;
-						/*
-						 * BUG: The following is not internationally correct.
-						 */
-						if (kar == 186 && win_processKeyboardEquivalent (my shell, shift ? ':' : ';', modifiers) ||
-						    kar == 187 && win_processKeyboardEquivalent (my shell, shift ? '+' : '=', modifiers) ||
-						    kar == 188 && win_processKeyboardEquivalent (my shell, shift ? '<' : ',', modifiers) ||
-						    kar == 189 && win_processKeyboardEquivalent (my shell, shift ? '_' : '-', modifiers) ||
-						    kar == 190 && win_processKeyboardEquivalent (my shell, shift ? '>' : '.', modifiers) ||
-						    kar == 191 && win_processKeyboardEquivalent (my shell, shift ? '?' : '/', modifiers) ||
-						    kar == 192 && win_processKeyboardEquivalent (my shell, shift ? '~' : '`', modifiers) ||
-						    kar == 219 && win_processKeyboardEquivalent (my shell, shift ? '{' : '[', modifiers) ||   // Alt-GR-ringel-s is here
-						    kar == 220 && win_processKeyboardEquivalent (my shell, shift ? '|' : '\\', modifiers) ||
-						    kar == 221 && win_processKeyboardEquivalent (my shell, shift ? '}' : ']', modifiers) ||
-						    kar == 222 && win_processKeyboardEquivalent (my shell, shift ? '\"' : '\'', modifiers))
-						{
-							return;
-						}
-					} else {
-						if (win_processKeyboardEquivalent (my shell, kar, modifiers)) return;   // handle shortcuts like Ctrl-T and Ctrl-Alt-T
-						/* Let window proc handle international Alt-GR (= Ctrl-Alt) sequences, which are plain characters. */
+				} else if (kar == VK_ESCAPE) {   // shortcut or cancel button
+					if (acc & 1 << GuiMenu_ESCAPE) { win_processKeyboardEquivalent (my shell, GuiMenu_ESCAPE, modifiers); return; }
+					else {
+						if (my shell -> cancelButton && _GuiWinButton_tryToHandleShortcutKey (my shell -> cancelButton)) return;
 					}
-				}
-				/* Other characters: to text. */
-			}
-			/* Not me or not my shell: let windowProc handle. */
-		} else if (message -> message == WM_CHAR) {
-			int kar = LOWORD (message -> wParam);
-			/*
-			 * Catch character messages to push buttons and toggle buttons:
-			 * divert them to a drawing area, if possible.
-			 */
-			GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
-			if (me && MEMBER2 (me, PushButton, ToggleButton)) {
-				GuiObject drawingArea = _motif_findDrawingArea (my shell);
-				if (drawingArea) {
-					_GuiWinDrawingArea_handleKey (drawingArea, kar);   // TODO: event -> key?
+					return;
+				} else if (kar == VK_PRIOR) {   // shortcut or text
+					if (acc & 1 << GuiMenu_PAGE_UP) { win_processKeyboardEquivalent (my shell, GuiMenu_PAGE_UP, modifiers); return; }
+				} else if (kar == VK_NEXT) {   // shortcut or text
+					if (acc & 1 << GuiMenu_PAGE_DOWN) { win_processKeyboardEquivalent (my shell, GuiMenu_PAGE_DOWN, modifiers); return; }
+				} else if (kar == VK_HOME) {   // shortcut or text
+					if (acc & 1 << GuiMenu_HOME) { win_processKeyboardEquivalent (my shell, GuiMenu_HOME, modifiers); return; }
+				} else if (kar == VK_END) {   // shortcut or text
+					if (acc & 1 << GuiMenu_END) { win_processKeyboardEquivalent (my shell, GuiMenu_END, modifiers); return; }
+				} else if (kar == VK_LEFT) {   // shortcut or text
+					if (acc & 1 << GuiMenu_LEFT_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_LEFT_ARROW, modifiers); return; }
+				} else if (kar == VK_RIGHT) {   // shortcut or text
+					if (acc & 1 << GuiMenu_RIGHT_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_RIGHT_ARROW, modifiers); return; }
+				} else if (kar == VK_UP) {   // shortcut or text
+					if (acc & 1 << GuiMenu_UP_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_UP_ARROW, modifiers); return; }
+				} else if (kar == VK_DOWN) {   // shortcut or text
+					if (acc & 1 << GuiMenu_DOWN_ARROW) { win_processKeyboardEquivalent (my shell, GuiMenu_DOWN_ARROW, modifiers); return; }
+				} else if (kar == VK_INSERT) {   // shortcut
+					win_processKeyboardEquivalent (my shell, GuiMenu_INSERT, modifiers);
+					return;
+				} else if (kar == VK_DELETE) {   // shortcut or text
+					if (acc & 1 << GuiMenu_DELETE) { win_processKeyboardEquivalent (my shell, GuiMenu_DELETE, modifiers); return; }
+				} else if (kar == VK_HELP) {   // simulate Command-?
+					win_processKeyboardEquivalent (my shell, '?', modifiers | _motif_SHIFT_MASK);
 					return;
 				}
-			}
+			} else if (kar >= VK_F1 && kar <= VK_F12) {   /* 112...123 */
+				/*
+				 * She has pressed one of the F keys.
+				 */
+				if (win_processKeyboardEquivalent (my shell, kar - VK_F1 + GuiMenu_F1, modifiers)) return;
+				/* Let windowProc handle Alt-F4 etc. */
 			/*
-			 * Next, try tab navigation.
+			 * If the Command key is pressed with a printable character, this is often a menu shortcut.
 			 */
-			if (me && MEMBER (me, Text) && kar == 9) {
-				trace (U"Tab navigation with shell ", Melder_pointer (my shell), U" and from text widget ", Melder_pointer (me));
-				GuiObject nextTextWidget = _motif_getNextTextWidget (my shell, me, GetKeyState (VK_SHIFT) < 0);
-				trace (U"Tab navigation to text widget ", Melder_pointer (nextTextWidget));
-				if (nextTextWidget != NULL) {
-					_GuiText_setTheTextFocus (nextTextWidget);
-					GuiText_setSelection ((GuiText) nextTextWidget -> userData, 0, 10000000);
-					return;
+			} else if (modifiers & _motif_COMMAND_MASK) {
+				if (MEMBER (me, Text) && (kar == 'X' || kar == 'C' || kar == 'V' || kar == 'Z')) {
+					;   // let window proc handle text editing
+				} else if (kar >= 186) {
+					int shift = modifiers & _motif_SHIFT_MASK;
+					/*
+					 * BUG: The following is not internationally correct.
+					 */
+					if (kar == 186 && win_processKeyboardEquivalent (my shell, shift ? ':' : ';', modifiers) ||
+						kar == 187 && win_processKeyboardEquivalent (my shell, shift ? '+' : '=', modifiers) ||
+						kar == 188 && win_processKeyboardEquivalent (my shell, shift ? '<' : ',', modifiers) ||
+						kar == 189 && win_processKeyboardEquivalent (my shell, shift ? '_' : '-', modifiers) ||
+						kar == 190 && win_processKeyboardEquivalent (my shell, shift ? '>' : '.', modifiers) ||
+						kar == 191 && win_processKeyboardEquivalent (my shell, shift ? '?' : '/', modifiers) ||
+						kar == 192 && win_processKeyboardEquivalent (my shell, shift ? '~' : '`', modifiers) ||
+						kar == 219 && win_processKeyboardEquivalent (my shell, shift ? '{' : '[', modifiers) ||   // Alt-GR-ringel-s is here
+						kar == 220 && win_processKeyboardEquivalent (my shell, shift ? '|' : '\\', modifiers) ||
+						kar == 221 && win_processKeyboardEquivalent (my shell, shift ? '}' : ']', modifiers) ||
+						kar == 222 && win_processKeyboardEquivalent (my shell, shift ? '\"' : '\'', modifiers))
+					{
+						return;
+					}
+				} else {
+					if (win_processKeyboardEquivalent (my shell, kar, modifiers)) return;   // handle shortcuts like Ctrl-T and Ctrl-Alt-T
+					/* Let window proc handle international Alt-GR (= Ctrl-Alt) sequences, which are plain characters. */
 				}
 			}
-		} else if (message -> message == WM_LBUTTONDOWN) {
-			/*
-			 * Catch mouse-down messages to cascade buttons:
-			 * post the associated menu, if any.
-			 */
-			GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
-			//Melder_information (Melder_pointer (me), U" -- ", Melder_pointer (my subMenuId));
-			if (me && MEMBER (me, CascadeButton) && my subMenuId) {
-				RECT rect;
-				GetWindowRect (my window, & rect);
-				TrackPopupMenu (my subMenuId -> nat.menu.handle, TPM_LEFTBUTTON |
-					TPM_LEFTALIGN | TPM_TOPALIGN, rect.left, rect.bottom - 3, 0, my parent -> window, NULL);
+			/* Other characters: to text. */
+		}
+		/* Not me or not my shell: let windowProc handle. */
+	} else if (message -> message == WM_CHAR) {
+		int kar = LOWORD (message -> wParam);
+		/*
+		 * Catch character messages to push buttons and toggle buttons:
+		 * divert them to a drawing area, if possible.
+		 */
+		GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
+		if (me && MEMBER2 (me, PushButton, ToggleButton)) {
+			GuiObject drawingArea = _motif_findDrawingArea (my shell);
+			if (drawingArea) {
+				_GuiWinDrawingArea_handleKey (drawingArea, kar);   // TODO: event -> key?
+				return;
+			}
+		}
+		/*
+		 * Next, try tab navigation.
+		 */
+		if (me && MEMBER (me, Text) && kar == 9) {
+			trace (U"Tab navigation with shell ", Melder_pointer (my shell), U" and from text widget ", Melder_pointer (me));
+			GuiObject nextTextWidget = _motif_getNextTextWidget (my shell, me, GetKeyState (VK_SHIFT) < 0);
+			trace (U"Tab navigation to text widget ", Melder_pointer (nextTextWidget));
+			if (nextTextWidget != NULL) {
+				_GuiText_setTheTextFocus (nextTextWidget);
+				GuiText_setSelection ((GuiText) nextTextWidget -> userData, 0, 10000000);
 				return;
 			}
 		}
-		TranslateMessage (xevent);   // Generate WM_CHAR messages.
-		DispatchMessage (xevent);
-	#endif
+	} else if (message -> message == WM_LBUTTONDOWN) {
+		/*
+		 * Catch mouse-down messages to cascade buttons:
+		 * post the associated menu, if any.
+		 */
+		GuiObject me = (GuiObject) GetWindowLongPtr (message -> hwnd, GWLP_USERDATA);
+		//Melder_information (Melder_pointer (me), U" -- ", Melder_pointer (my subMenuId));
+		if (me && MEMBER (me, CascadeButton) && my subMenuId) {
+			RECT rect;
+			GetWindowRect (my window, & rect);
+			TrackPopupMenu (my subMenuId -> nat.menu.handle, TPM_LEFTBUTTON |
+				TPM_LEFTALIGN | TPM_TOPALIGN, rect.left, rect.bottom - 3, 0, my parent -> window, NULL);
+			return;
+		}
+	}
+	TranslateMessage (xevent);   // Generate WM_CHAR messages.
+	DispatchMessage (xevent);
 }
 
 void GuiMainLoop () {
@@ -4529,316 +2384,300 @@ void GuiMainLoop () {
 	}
 }
 
-#if win
-	extern int main (int argc, char *argv []);
-	int APIENTRY WinMain (HINSTANCE instance, HINSTANCE previousInstance, LPSTR commandLine, int commandShow) {
-		int argc = 4;
-		char instanceString [20], commandShowString [20];
-		const char *argv [4];
-		(void) previousInstance;
-		argv [0] = "dummy";
-		sprintf (instanceString, "%p", instance);
-		sprintf (commandShowString, "%d", commandShow);
-		argv [1] = & instanceString [0];
-		argv [2] = & commandShowString [0];
-		argv [3] = Melder_32to8 (Melder_peekWto32 (GetCommandLineW ()));   // it's OK to ignore the possibility of low memory
-		if (argv [3] [0] == '\"') {
-			argv [3] ++;   // skip quote
-			while (argv [3] [0] != '\"') { argv [3] ++; }
-			argv [3] ++;   // skip quote
-			if (argv [3] [0] == ' ') argv [3] ++;
+#define main wingwmain
+extern int main (int argc, char *argv []);
+int APIENTRY WinMain (HINSTANCE instance, HINSTANCE /*previousInstance*/, LPSTR commandLine, int commandShow) {
+	theGui.instance = instance;
+	theGui.commandShow = commandShow;
+	int argc;
+	WCHAR** argvW = CommandLineToArgvW (GetCommandLineW (), & argc);
+	char** argv = Melder_malloc (char*, argc);
+	for (int iarg = 0; iarg < argc; iarg ++) {
+		argv [iarg] = Melder_32to8 (Melder_peekWto32 (argvW [iarg]));
+	}
+	return main (argc, argv);
+}
+
+static void on_close (HWND window) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me) {
+		if (my widgetClass == xmShellWidgetClass) {
+			int deleteResponse = my deleteResponse;   // save this, in case the callback should kill the widget (XmDO_NOTHING)
+			GuiObject parent = my parent;
+			if (my motiff.shell.goAwayCallback)
+				my motiff.shell.goAwayCallback (me, my motiff.shell.goAwayClosure, NULL);
+			if (deleteResponse == XmDESTROY) {
+				XtDestroyWidget (me);
+			} else if (deleteResponse == XmUNMAP) {
+				/*
+					Unmapping is not the same as unmanaging.
+					One of the oldest bugs in Praat was that in the Windows edition
+					the Picture window could not be closed a second time,
+					and that after it had been closed and opened the scroll bars did not move when
+					the user resized the window.
+					The solution was to use only some of the code from XtUnmanageChild here,
+					without clearing the 'managed' attribute.
+				*/
+				_GuiText_handleFocusLoss (my textFocus);
+				ShowWindow (my window, SW_HIDE);
+			}
+			return;
+		} else FORWARD_WM_CLOSE (window, DefWindowProc);
+	} else FORWARD_WM_CLOSE (window, DefWindowProc);
+}
+static GuiObject findItem (GuiObject menu, int id) {
+	GuiObject child = menu -> firstChild;
+	for (child = menu -> firstChild; child != NULL; child = child -> nextSibling) {
+		if (child -> widgetClass == xmPulldownMenuWidgetClass) {
+			GuiObject result = findItem (child, id);
+			if (result) return result;
 		} else {
-			while (argv [3] [0] != ' ' && argv [3] [0] != '\0')  { argv [3] ++; }
-			if (argv [3] [0] == ' ') argv [3] ++;
+			Melder_assert (MEMBER4 (child, PushButton, ToggleButton, CascadeButton, Separator));
+			if (child -> nat.entry.id == id) return child;
 		}
-		return main (argc, (char **) & argv [0]);
 	}
-
-	static void on_close (HWND window) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me) {
-			if (my widgetClass == xmShellWidgetClass) {
-				int deleteResponse = my deleteResponse;   // save this, in case the callback should kill the widget (XmDO_NOTHING)
-				GuiObject parent = my parent;
-				if (my motiff.shell.goAwayCallback)
-					my motiff.shell.goAwayCallback (me, my motiff.shell.goAwayClosure, NULL);
-				if (deleteResponse == XmDESTROY) {
-					XtDestroyWidget (me);
-				} else if (deleteResponse == XmUNMAP) {
+	return NULL;
+}
+static void on_command (HWND window, int id, HWND controlWindow, UINT codeNotify) {
+	GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (parent) {
+		if (controlWindow) {
+			GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
+			if (control) {
+				switch (control -> widgetClass) {
 					/*
-						Unmapping is not the same as unmanaging.
-						One of the oldest bugs in Praat was that in the Windows edition
-						the Picture window could not be closed a second time,
-						and that after it had been closed and opened the scroll bars did not move when
-						the user resized the window.
-						The solution was to use only some of the code from XtUnmanageChild here,
-						without clearing the 'managed' attribute.
-					*/
-					_GuiText_handleFocusLoss (my textFocus);
-					ShowWindow (my window, SW_HIDE);
-				}
-				return;
-			} else FORWARD_WM_CLOSE (window, DefWindowProc);
-		} else FORWARD_WM_CLOSE (window, DefWindowProc);
-	}
-	static GuiObject findItem (GuiObject menu, int id) {
-		GuiObject child = menu -> firstChild;
-		for (child = menu -> firstChild; child != NULL; child = child -> nextSibling) {
-			if (child -> widgetClass == xmPulldownMenuWidgetClass) {
-				GuiObject result = findItem (child, id);
-				if (result) return result;
-			} else {
-				Melder_assert (MEMBER4 (child, PushButton, ToggleButton, CascadeButton, Separator));
-				if (child -> nat.entry.id == id) return child;
-			}
-		}
-		return NULL;
-	}
-	static void on_command (HWND window, int id, HWND controlWindow, UINT codeNotify) {
-		GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (parent) {
-			if (controlWindow) {
-				GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
-				if (control) {
-					switch (control -> widgetClass) {
+					 * Clicking on a button takes away the focus from a text widget.
+					 * We have already been notified of that by EN_KILLFOCUS.
+					 * We have to put the focus back (see GuiText.c, parenthesized discussion 1.4);
+					 * this has to be done before calling the callbacks, because these may destroy or hide the text widget.
+					 */
+					case xmPushButtonWidgetClass:
 						/*
-						 * Clicking on a button takes away the focus from a text widget.
-						 * We have already been notified of that by EN_KILLFOCUS.
-						 * We have to put the focus back (see GuiText.c, parenthesized discussion 1.4);
-						 * this has to be done before calling the callbacks, because these may destroy or hide the text widget.
+						 * If EN_KILLFOCUS had not cleared the global text focus,
+						 * the following message would not actually do SetFocus!
 						 */
-						case xmPushButtonWidgetClass:
-							/*
-							 * If EN_KILLFOCUS had not cleared the global text focus,
-							 * the following message would not actually do SetFocus!
-							 */
-							_GuiText_setTheTextFocus (control -> shell -> textFocus);
-							_GuiWinButton_handleClick (control);
-							break;
-						case xmToggleButtonWidgetClass:
-							_GuiText_setTheTextFocus (control -> shell -> textFocus);
-							if (control -> isRadioButton) {
-								_GuiWinRadioButton_handleClick (control);
-							} else {
-								_GuiWinCheckButton_handleClick (control);
-							}
-							break;
-						case xmListWidgetClass:
-							if (codeNotify == LBN_SELCHANGE) {
-								_GuiWinList_handleClick (control);
-							} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
-							break;
-						case xmTextWidgetClass:
-							if (codeNotify == EN_CHANGE) {
-								_GuiText_handleValueChanged (control);
-							} else if (codeNotify == EN_SETFOCUS) {
-								_GuiText_handleFocusReception (control);
-							} else if (codeNotify == EN_KILLFOCUS) {
-								_GuiText_handleFocusLoss (control);   // for button clicks (see above)
-							}
-							break;
-						default: break;
-					}
-				} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
-			} else {   // menu choice
-				GuiObject menuBar = NULL;
-				if (MEMBER (parent, Shell))
-					menuBar = parent -> nat.shell.menuBar;
-				else if (MEMBER (parent, RowColumn))
-					menuBar = parent;
-				if (menuBar) {
-					GuiObject item = findItem (menuBar, id);
-					if (item) {
-						if (item -> widgetClass == xmPushButtonWidgetClass) {
-							if (item -> activateCallback)
-								item -> activateCallback (item, item -> activateClosure, 0);
-						} else if (item -> widgetClass == xmToggleButtonWidgetClass) {
-							XmToggleButtonGadgetSetState (item, 1 - XmToggleButtonGadgetGetState (item), False);
-							_Gui_callCallbacks (item, & item -> motiff.toggleButton.valueChangedCallbacks, 0);
+						_GuiText_setTheTextFocus (control -> shell -> textFocus);
+						_GuiWinButton_handleClick (control);
+						break;
+					case xmToggleButtonWidgetClass:
+						_GuiText_setTheTextFocus (control -> shell -> textFocus);
+						if (control -> isRadioButton) {
+							_GuiWinRadioButton_handleClick (control);
+						} else {
+							_GuiWinCheckButton_handleClick (control);
+						}
+						break;
+					case xmListWidgetClass:
+						if (codeNotify == LBN_SELCHANGE) {
+							_GuiWinList_handleClick (control);
+						} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
+						break;
+					case xmTextWidgetClass:
+						if (codeNotify == EN_CHANGE) {
+							_GuiText_handleValueChanged (control);
+						} else if (codeNotify == EN_SETFOCUS) {
+							_GuiText_handleFocusReception (control);
+						} else if (codeNotify == EN_KILLFOCUS) {
+							_GuiText_handleFocusLoss (control);   // for button clicks (see above)
 						}
+						break;
+					default: break;
+				}
+			} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
+		} else {   // menu choice
+			GuiObject menuBar = NULL;
+			if (MEMBER (parent, Shell))
+				menuBar = parent -> nat.shell.menuBar;
+			else if (MEMBER (parent, RowColumn))
+				menuBar = parent;
+			if (menuBar) {
+				GuiObject item = findItem (menuBar, id);
+				if (item) {
+					if (item -> widgetClass == xmPushButtonWidgetClass) {
+						if (item -> activateCallback)
+							item -> activateCallback (item, item -> activateClosure, 0);
+					} else if (item -> widgetClass == xmToggleButtonWidgetClass) {
+						XmToggleButtonGadgetSetState (item, 1 - XmToggleButtonGadgetGetState (item), False);
+						_Gui_callCallbacks (item, & item -> motiff.toggleButton.valueChangedCallbacks, 0);
 					}
 				}
 			}
-		} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
-	}
-	static void on_destroy (HWND window) {
-		(void) window;
-	}
-	static void on_lbuttonDown (HWND window, BOOL doubleClick, int x, int y, UINT flags) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me) {
-			if (MEMBER (me, DrawingArea)) {
-				_GuiWinDrawingArea_handleClick (me, x, y);
-			} else FORWARD_WM_LBUTTONDOWN (window, doubleClick, x, y, flags, DefWindowProc);
+		}
+	} else FORWARD_WM_COMMAND (window, id, controlWindow, codeNotify, DefWindowProc);
+}
+static void on_destroy (HWND window) {
+	(void) window;
+}
+static void on_lbuttonDown (HWND window, BOOL doubleClick, int x, int y, UINT flags) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me) {
+		if (MEMBER (me, DrawingArea)) {
+			_GuiWinDrawingArea_handleClick (me, x, y);
 		} else FORWARD_WM_LBUTTONDOWN (window, doubleClick, x, y, flags, DefWindowProc);
-	}
-	static void on_paint (HWND window) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me) {
-			if (my widgetClass == xmDrawingAreaWidgetClass) {
-				_GuiWinDrawingArea_update (me);
-			} else FORWARD_WM_PAINT (window, DefWindowProc);
+	} else FORWARD_WM_LBUTTONDOWN (window, doubleClick, x, y, flags, DefWindowProc);
+}
+static void on_paint (HWND window) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me) {
+		if (my widgetClass == xmDrawingAreaWidgetClass) {
+			_GuiWinDrawingArea_update (me);
 		} else FORWARD_WM_PAINT (window, DefWindowProc);
-	}
-	static void on_hscroll (HWND window, HWND controlWindow, UINT code, int pos) {
-		GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (parent) {
-			GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
-			if (control) {
-				on_scroll (control, code, pos);
-			} else FORWARD_WM_HSCROLL (window, controlWindow, code, pos, DefWindowProc);
+	} else FORWARD_WM_PAINT (window, DefWindowProc);
+}
+static void on_hscroll (HWND window, HWND controlWindow, UINT code, int pos) {
+	GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (parent) {
+		GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
+		if (control) {
+			on_scroll (control, code, pos);
 		} else FORWARD_WM_HSCROLL (window, controlWindow, code, pos, DefWindowProc);
-	}
-	static void on_vscroll (HWND window, HWND controlWindow, UINT code, int pos) {
-		GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (parent) {
-			GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
-			if (control) {
-				on_scroll (control, code, pos);
-			} else FORWARD_WM_VSCROLL (window, controlWindow, code, pos, DefWindowProc);
+	} else FORWARD_WM_HSCROLL (window, controlWindow, code, pos, DefWindowProc);
+}
+static void on_vscroll (HWND window, HWND controlWindow, UINT code, int pos) {
+	GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (parent) {
+		GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
+		if (control) {
+			on_scroll (control, code, pos);
 		} else FORWARD_WM_VSCROLL (window, controlWindow, code, pos, DefWindowProc);
-	}
-	static void on_size (HWND window, UINT state, int cx, int cy) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me && MEMBER (me, Shell) && (state == SIZE_RESTORED || state == SIZE_MAXIMIZED)) {
-			int oldWidth = my width, oldHeight = my height;
-			int newWidth = cx;
-			int newHeight = cy;
-			my width = newWidth;
-			my height = newHeight;
-			FORWARD_WM_SIZE (window, state, cx, cy, DefWindowProc);
-			if (! my managed) {
-			} else if (my nat.shell.duringMoveWindow)   // Yeah, a BUG fix. Only react to user actions.
-				my nat.shell.duringMoveWindow = False;
-			else if (newWidth != oldWidth || newHeight != oldHeight) {
-				shellResizeWidget (me, 0, 0, newWidth - oldWidth, newHeight - oldHeight);
-			}
-		} else FORWARD_WM_SIZE (window, state, cx, cy, DefWindowProc);
-	}
-	static void on_key (HWND window, UINT key, BOOL down, int repeat, UINT flags) {
-		Melder_assert (down == true);
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me && key >= VK_LEFT && key <= VK_DOWN) {
-			//Melder_warning (U"Widget type ", my widgetClass);
-			if (MEMBER (me, Shell)) {
-				GuiObject drawingArea = _motif_findDrawingArea (me);
-				if (drawingArea) {
-					GuiObject textFocus = drawingArea -> shell -> textFocus;   // BUG: ignore?
-					_GuiWinDrawingArea_handleKey (drawingArea, key);
-				} else {
-					FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
-				}
-			} else FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
-		} else {
-			FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
-		}
-	}
-	static void on_char (HWND window, TCHAR kar, int repeat) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me) {
-			//Melder_warning (U"Widget type ", my widgetClass);
-			if (MEMBER (me, Shell)) {
-				GuiObject drawingArea = _motif_findDrawingArea (me);
-				if (drawingArea) {
-					GuiObject textFocus = drawingArea -> shell -> textFocus;   // BUG: ignore?
-					_GuiWinDrawingArea_handleKey (drawingArea, kar);
-				} else {
-					FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
-				}
-			} else FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
-		} else {
-			FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
-		}
-	}
-	static void on_move (HWND window, int x, int y) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		/*if (me && MEMBER (me, Shell)) {
-			my x = x - ( my motiff.shell.isDialog ? GetSystemMetrics (SM_CXFIXEDFRAME) : GetSystemMetrics (SM_CXSIZEFRAME) );
-			my y = y - GetSystemMetrics (SM_CYCAPTION) - ( my motiff.shell.isDialog ? GetSystemMetrics (SM_CYFIXEDFRAME) :
-				GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYMENU) );
-		}*/
-		FORWARD_WM_MOVE (window, x, y, DefWindowProc);
-	}
-	static HBRUSH on_ctlColorStatic (HWND window, HDC hdc, HWND controlWindow, int type) {
-		GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		(void) type;
-		if (parent) {
-			GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
-			if (control) {
-				SetBkMode (hdc, TRANSPARENT);
-				return GetStockBrush (LTGRAY_BRUSH);
-			}
-		}
-		return FORWARD_WM_CTLCOLORSTATIC (window, hdc, controlWindow, DefWindowProc);
-	}
-	static HBRUSH on_ctlColorBtn (HWND window, HDC hdc, HWND controlWindow, int type) {
-		GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		(void) type;
-		if (parent) {
-			GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
-			if (control) {
-				SetBkMode (hdc, TRANSPARENT);
-				return GetStockBrush (LTGRAY_BRUSH);
-			}
-		}
-		return FORWARD_WM_CTLCOLORBTN (window, hdc, controlWindow, DefWindowProc);
-	}
-	static void on_activate (HWND window, UINT state, HWND hActive, BOOL minimized) {
-		GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
-		if (me && my widgetClass == xmShellWidgetClass) {
-			if (state == WA_INACTIVE || minimized) {
-				_GuiText_handleFocusLoss (my textFocus);
+	} else FORWARD_WM_VSCROLL (window, controlWindow, code, pos, DefWindowProc);
+}
+static void on_size (HWND window, UINT state, int cx, int cy) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me && MEMBER (me, Shell) && (state == SIZE_RESTORED || state == SIZE_MAXIMIZED)) {
+		int oldWidth = my width, oldHeight = my height;
+		int newWidth = cx;
+		int newHeight = cy;
+		my width = newWidth;
+		my height = newHeight;
+		FORWARD_WM_SIZE (window, state, cx, cy, DefWindowProc);
+		if (! my managed) {
+		} else if (my nat.shell.duringMoveWindow)   // Yeah, a BUG fix. Only react to user actions.
+			my nat.shell.duringMoveWindow = False;
+		else if (newWidth != oldWidth || newHeight != oldHeight) {
+			shellResizeWidget (me, 0, 0, newWidth - oldWidth, newHeight - oldHeight);
+		}
+	} else FORWARD_WM_SIZE (window, state, cx, cy, DefWindowProc);
+}
+static void on_key (HWND window, UINT key, BOOL down, int repeat, UINT flags) {
+	Melder_assert (down == true);
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me && key >= VK_LEFT && key <= VK_DOWN) {
+		//Melder_warning (U"Widget type ", my widgetClass);
+		if (MEMBER (me, Shell)) {
+			GuiObject drawingArea = _motif_findDrawingArea (me);
+			if (drawingArea) {
+				GuiObject textFocus = drawingArea -> shell -> textFocus;   // BUG: ignore?
+				_GuiWinDrawingArea_handleKey (drawingArea, key);
 			} else {
-				_GuiText_setTheTextFocus (my textFocus);
-			}
-			return;
-		} else FORWARD_WM_ACTIVATE (window, state, hActive, minimized, DefWindowProc);
-	}
-	static LRESULT CALLBACK windowProc (HWND window, UINT message, WPARAM wParam, LPARAM lParam) {
-		switch (message) {
-			HANDLE_MSG (window, WM_CLOSE, on_close);
-			HANDLE_MSG (window, WM_COMMAND, on_command);
-			HANDLE_MSG (window, WM_DESTROY, on_destroy);
-			HANDLE_MSG (window, WM_LBUTTONDOWN, on_lbuttonDown);
-			HANDLE_MSG (window, WM_PAINT, on_paint);
-			HANDLE_MSG (window, WM_HSCROLL, on_hscroll);
-			HANDLE_MSG (window, WM_VSCROLL, on_vscroll);
-			HANDLE_MSG (window, WM_SIZE, on_size);
-			HANDLE_MSG (window, WM_KEYDOWN, on_key);
-			HANDLE_MSG (window, WM_CHAR, on_char);
-			HANDLE_MSG (window, WM_MOVE, on_move);
-			HANDLE_MSG (window, WM_CTLCOLORBTN, on_ctlColorBtn);
-			HANDLE_MSG (window, WM_CTLCOLORSTATIC, on_ctlColorStatic);
-			HANDLE_MSG (window, WM_ACTIVATE, on_activate);
-			case WM_USER: {
-				/*if (IsIconic (window)) ShowWindow (window, SW_RESTORE);
-				SetForegroundWindow (window);*/
-				return theUserMessageCallback ? theUserMessageCallback () : 1;
+				FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
 			}
-			default: return DefWindowProc (window, message, wParam, lParam);
-		}
-	}
-	int motif_win_mouseStillDown (void) {
-		XEvent event;
-		if (! GetCapture ()) SetCapture (theApplicationShell -> window);
-		if (PeekMessage (& event, 0, 0, 0, PM_REMOVE)) {
-			if (event. message == WM_LBUTTONUP) {
-				DispatchMessage (& event);
-				ReleaseCapture ();
-				return False;
+		} else FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
+	} else {
+		FORWARD_WM_KEYDOWN (window, key, repeat, flags, DefWindowProc);
+	}
+}
+static void on_char (HWND window, TCHAR kar, int repeat) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me) {
+		//Melder_warning (U"Widget type ", my widgetClass);
+		if (MEMBER (me, Shell)) {
+			GuiObject drawingArea = _motif_findDrawingArea (me);
+			if (drawingArea) {
+				GuiObject textFocus = drawingArea -> shell -> textFocus;   // BUG: ignore?
+				_GuiWinDrawingArea_handleKey (drawingArea, kar);
+			} else {
+				FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
 			}
+		} else FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
+	} else {
+		FORWARD_WM_CHAR (window, kar, repeat, DefWindowProc);
+	}
+}
+static void on_move (HWND window, int x, int y) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	/*if (me && MEMBER (me, Shell)) {
+		my x = x - ( my motiff.shell.isDialog ? GetSystemMetrics (SM_CXFIXEDFRAME) : GetSystemMetrics (SM_CXSIZEFRAME) );
+		my y = y - GetSystemMetrics (SM_CYCAPTION) - ( my motiff.shell.isDialog ? GetSystemMetrics (SM_CYFIXEDFRAME) :
+			GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYMENU) );
+	}*/
+	FORWARD_WM_MOVE (window, x, y, DefWindowProc);
+}
+static HBRUSH on_ctlColorStatic (HWND window, HDC hdc, HWND controlWindow, int type) {
+	GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	(void) type;
+	if (parent) {
+		GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
+		if (control) {
+			SetBkMode (hdc, TRANSPARENT);
+			return GetStockBrush (LTGRAY_BRUSH);
+		}
+	}
+	return FORWARD_WM_CTLCOLORSTATIC (window, hdc, controlWindow, DefWindowProc);
+}
+static HBRUSH on_ctlColorBtn (HWND window, HDC hdc, HWND controlWindow, int type) {
+	GuiObject parent = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	(void) type;
+	if (parent) {
+		GuiObject control = (GuiObject) GetWindowLongPtr (controlWindow, GWLP_USERDATA);
+		if (control) {
+			SetBkMode (hdc, TRANSPARENT);
+			return GetStockBrush (LTGRAY_BRUSH);
+		}
+	}
+	return FORWARD_WM_CTLCOLORBTN (window, hdc, controlWindow, DefWindowProc);
+}
+static void on_activate (HWND window, UINT state, HWND hActive, BOOL minimized) {
+	GuiObject me = (GuiObject) GetWindowLongPtr (window, GWLP_USERDATA);
+	if (me && my widgetClass == xmShellWidgetClass) {
+		if (state == WA_INACTIVE || minimized) {
+			_GuiText_handleFocusLoss (my textFocus);
+		} else {
+			_GuiText_setTheTextFocus (my textFocus);
 		}
-		return True;
-	}
-	void motif_win_setUserMessageCallback (int (*userMessageCallback) (void)) {
-		theUserMessageCallback = userMessageCallback;
-	}
-#endif
-#if mac
-	void motif_mac_setUserMessageCallback (int (*userMessageCallback) (char32 *message)) {
-		theUserMessageCallback = userMessageCallback;
-	}
-#endif
+		return;
+	} else FORWARD_WM_ACTIVATE (window, state, hActive, minimized, DefWindowProc);
+}
+static LRESULT CALLBACK windowProc (HWND window, UINT message, WPARAM wParam, LPARAM lParam) {
+	switch (message) {
+		HANDLE_MSG (window, WM_CLOSE, on_close);
+		HANDLE_MSG (window, WM_COMMAND, on_command);
+		HANDLE_MSG (window, WM_DESTROY, on_destroy);
+		HANDLE_MSG (window, WM_LBUTTONDOWN, on_lbuttonDown);
+		HANDLE_MSG (window, WM_PAINT, on_paint);
+		HANDLE_MSG (window, WM_HSCROLL, on_hscroll);
+		HANDLE_MSG (window, WM_VSCROLL, on_vscroll);
+		HANDLE_MSG (window, WM_SIZE, on_size);
+		HANDLE_MSG (window, WM_KEYDOWN, on_key);
+		HANDLE_MSG (window, WM_CHAR, on_char);
+		HANDLE_MSG (window, WM_MOVE, on_move);
+		HANDLE_MSG (window, WM_CTLCOLORBTN, on_ctlColorBtn);
+		HANDLE_MSG (window, WM_CTLCOLORSTATIC, on_ctlColorStatic);
+		HANDLE_MSG (window, WM_ACTIVATE, on_activate);
+		case WM_USER: {
+			/*if (IsIconic (window)) ShowWindow (window, SW_RESTORE);
+			SetForegroundWindow (window);*/
+			return theUserMessageCallback ? theUserMessageCallback () : 1;
+		}
+		default: return DefWindowProc (window, message, wParam, lParam);
+	}
+}
+bool motif_win_mouseStillDown () {
+	XEvent event;
+	if (! GetCapture ()) SetCapture (theApplicationShell -> window);
+	if (PeekMessage (& event, 0, 0, 0, PM_REMOVE)) {
+		if (event. message == WM_LBUTTONUP) {
+			DispatchMessage (& event);
+			ReleaseCapture ();
+			return false;
+		}
+	}
+	return true;
+}
+void motif_win_setUserMessageCallback (int (*userMessageCallback) (void)) {
+	theUserMessageCallback = userMessageCallback;
+}
+
 void Gui_setOpenDocumentCallback (void (*openDocumentCallback) (MelderFile file)) {
 	theOpenDocumentCallback = openDocumentCallback;
 }
diff --git a/sys/motifEmulator_resources.h b/sys/motifEmulator_resources.h
index 32a337d..e61fcc8 100644
--- a/sys/motifEmulator_resources.h
+++ b/sys/motifEmulator_resources.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 motif_RESOURCE (XmNactivateCallback)   /* XmPushButton, XmDrawnButton, XmCascadeButton */
diff --git a/sys/oo.h b/sys/oo.h
index 697f72c..9449248 100644
--- a/sys/oo.h
+++ b/sys/oo.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1994-2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*** Single types. ***/
@@ -212,15 +211,6 @@
 #define oo_STRUCT_VECTOR(Type,x,n)  oo_STRUCT_VECTOR_FROM (Type, x, 1, n)
 #define oo_STRUCT_MATRIX(Type,x,nrow,ncol)  oo_STRUCT_MATRIX_FROM (Type, x, 1, nrow, 1, ncol)
 
-/*** Class declaration in header file. ***/
-
-#define oo_CLASS_CREATE(klas,parent) \
-	typedef _Thing_auto <struct##klas> auto##klas; \
-	extern struct structClassInfo theClassInfo_##klas; \
-	extern ClassInfo class##klas
-
-
-
 /********** Definitions for header files only. **********/
 /* These are undef'ed and redefined in the header files that implement methods, */
 /* like oo_DESTROY.h, oo_COPY.h, oo_EQUAL.h, oo_WRITE_TEXT.h, etc. */
@@ -249,8 +239,9 @@
 #define oo_STRUCT_VECTOR_FROM(Type,x,min,max)  Type x;
 #define oo_STRUCT_MATRIX_FROM(Type,x,row1,row2,col1,col2)  struct struct##Type **x;
 
-#define oo_OBJECT(Class,version,x)  Class x;
-#define oo_COLLECTION(Class,x,ItemClass,version)  Class x;
+#define oo_AUTO_OBJECT(Class,version,x)  auto##Class x;
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  Class<struct##ItemClass> x;
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  auto##Class x;
 #define oo_FILE(x)  structMelderFile x;
 #define oo_DIR(x)  structMelderDir x;
 
@@ -274,13 +265,16 @@
 
 #define oo_DEFINE_CLASS(klas,parent) \
 	typedef struct struct##klas *klas; \
+	typedef _Thing_auto <struct##klas> auto##klas; \
 	typedef struct##parent klas##_Parent; \
+	extern struct structClassInfo theClassInfo_##klas; \
+	extern ClassInfo class##klas; \
 	struct struct##klas : public struct##parent {
 
 #define oo_END_CLASS(Class) \
-		void v_destroy () override; \
-		void v_copy (Any data_to) override; \
-		bool v_equal (Any otherData) override; \
+		void v_destroy () noexcept override; \
+		void v_copy (Daata data_to) override; \
+		bool v_equal (Daata otherData) override; \
 		static Data_Description s_description; \
 		Data_Description v_description () override { return s_description; } \
 		bool v_canWriteAsEncoding (int outputEncoding) override; \
diff --git a/sys/oo_CAN_WRITE_AS_ENCODING.h b/sys/oo_CAN_WRITE_AS_ENCODING.h
index c2a6292..cf40394 100644
--- a/sys/oo_CAN_WRITE_AS_ENCODING.h
+++ b/sys/oo_CAN_WRITE_AS_ENCODING.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2007-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -91,11 +90,16 @@
 				if (! our x [i] [j]. canWriteAsEncoding (encoding)) return false; \
 	}
 
-#define oo_OBJECT(Class,version,x)  \
-	if (our x && ! Data_canWriteAsEncoding (our x, encoding)) return false;
+#define oo_AUTO_OBJECT(Class,version,x)  \
+	if (our x && ! Data_canWriteAsEncoding (our x.get(), encoding)) return false;
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	if (our x && ! Data_canWriteAsEncoding (our x, encoding)) return false;
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  \
+	for (long i = 1; i <= x.size; i ++) { \
+		if (our x.at [i] && ! Data_canWriteAsEncoding (our x.at [i], encoding)) return false; \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  \
+	if (our x && ! Data_canWriteAsEncoding (our x.get(), encoding)) return false;
 
 #define oo_FILE(x)  \
 	if (! Melder_isEncodable (our x. path, encoding)) return false;
diff --git a/sys/oo_COPY.h b/sys/oo_COPY.h
index 63e375a..8a64376 100644
--- a/sys/oo_COPY.h
+++ b/sys/oo_COPY.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -92,11 +91,24 @@
 				our x [i] [j]. copy (& thy x [i] [j]); \
 	}
 
-#define oo_OBJECT(Class,version,x)  \
-	if (our x) thy x = Data_copy (our x);
+#define oo_AUTO_OBJECT(Class,version,x)  \
+	if (our x) thy x = Data_copy (our x.get());
+
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  \
+	if (our x._capacity > 0) { \
+		thy x.at._elements = Melder_calloc (ItemClass, our x._capacity); \
+		thy x.at._elements --; \
+	} \
+	thy x.size = our x.size; \
+	thy x._capacity = our x._capacity; \
+	thy x._ownItems = our x._ownItems; \
+	thy x._ownershipInitialized = our x._ownershipInitialized; \
+	for (long i = 1; i <= our x.size; i ++) { \
+		if (our x.at [i]) thy x.at [i] = Data_copy (our x.at [i]).releaseToAmbiguousOwner(); \
+	}
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	if (our x) thy x = Data_copy (our x);
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  \
+	if (our x) thy x = Data_copy (our x.get());
 
 #define oo_FILE(x)  \
 	MelderFile_copy (& our x, & thy x);
@@ -111,8 +123,8 @@
 	}
 
 #define oo_DEFINE_CLASS(Class,Parent)  \
-	void struct##Class :: v_copy (thou) { \
-		thouart (Class); \
+	void struct##Class :: v_copy (Daata thee_Daata) { \
+		Class thee = static_cast <Class> (thee_Daata); \
 		Class##_Parent :: v_copy (thee);
 
 #define oo_END_CLASS(Class)  \
diff --git a/sys/oo_DESCRIPTION.h b/sys/oo_DESCRIPTION.h
index 51c2f6b..d192d79 100644
--- a/sys/oo_DESCRIPTION.h
+++ b/sys/oo_DESCRIPTION.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2012,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -235,21 +234,13 @@
 
 #undef oo_STRING_SET
 #define oo_STRING_SET(x,setType)  { U"" #x, stringwa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 3, (const char32 *) setType##_getText, (const char32 *) setType##_getValue },
-#undef oo_STRING32_SET
-#define oo_STRING32_SET(x,setType)  { U"" #x, string32wa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 3, (const char32 *) setType##_getText, (const char32 *) setType##_getValue },
 #undef oo_LSTRING_SET
 #define oo_LSTRING_SET(x,setType)  { U"" #x, lstringwa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 3, (const char32 *) setType##_getText, (const char32 *) setType##_getValue },
-#undef oo_LSTRING32_SET
-#define oo_LSTRING32_SET(x,setType)  { U"" #x, lstring32wa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 3, (const char32 *) setType##_getText, (const char32 *) setType##_getValue },
 
 #undef oo_STRING_VECTOR_FROM
 #define oo_STRING_VECTOR_FROM(x,min,max)  { U"" #x, stringwa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 1, U"" #min, U"" #max },
-#undef oo_STRING32_VECTOR_FROM
-#define oo_STRING32_VECTOR_FROM(x,min,max)  { U"" #x, string32wa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 1, U"" #min, U"" #max },
 #undef oo_LSTRING_VECTOR_FROM
 #define oo_LSTRING_VECTOR_FROM(x,min,max)  { U"" #x, lstringwa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 1, U"" #min, U"" #max },
-#undef oo_LSTRING32_VECTOR_FROM
-#define oo_LSTRING32_VECTOR_FROM(x,min,max)  { U"" #x, lstring32wa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 1, U"" #min, U"" #max },
 
 #undef oo_STRING_VECTOR
 #define oo_STRING_VECTOR(x,n)  { U"" #x, stringwa, Melder_offsetof (ooSTRUCT, x), sizeof (char32 *), 0, 0, 1, (const char32 *) 0, U"" #n },
@@ -266,8 +257,9 @@
 #undef oo_STRUCT_MATRIX
 #define oo_STRUCT_MATRIX(Type,x,nrow,ncol)  { U"" #x, structwa, Melder_offsetof (ooSTRUCT, x), sizeof (struct struct##Type), U"" #Type, & struct##Type :: s_description, 2, (const char32 *) 0, U"" #nrow, (const char32 *) 0, U"" #ncol },
 
-#define oo_OBJECT(Type,version,x)  { U"" #x, objectwa, Melder_offsetof (ooSTRUCT, x), sizeof (Type), U"" #Type, & theClassInfo_##Type },
-#define oo_COLLECTION(Type,x,ItemType,version)  { U"" #x, collectionwa, Melder_offsetof (ooSTRUCT, x), sizeof (class struct##ItemType), U"" #Type, & theClassInfo_##Type, 0, (const char32 *) & theClassInfo_##ItemType },
+#define oo_AUTO_OBJECT(Type,version,x)  { U"" #x, autoobjectwa, Melder_offsetof (ooSTRUCT, x), sizeof (Type), U"" #Type, & theClassInfo_##Type },
+#define oo_COLLECTION_OF(Type,x,ItemType,version)  { U"" #x, collectionofwa, Melder_offsetof (ooSTRUCT, x), sizeof (class struct##ItemType), U"" #Type, & theClassInfo_Collection, 0, (const char32 *) & theClassInfo_##ItemType },
+#define oo_AUTO_COLLECTION(Type,x,ItemType,version)  { U"" #x, autocollectionwa, Melder_offsetof (ooSTRUCT, x), sizeof (class struct##ItemType), U"" #Type, & theClassInfo_##Type, 0, (const char32 *) & theClassInfo_##ItemType },
 #define oo_FILE(x)
 #define oo_DIR(x)
 
diff --git a/sys/oo_DESTROY.h b/sys/oo_DESTROY.h
index ba6a1c3..f7d463d 100644
--- a/sys/oo_DESTROY.h
+++ b/sys/oo_DESTROY.h
@@ -1,20 +1,19 @@
 /* oo_DESTROY.h
  *
- * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1994-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -85,11 +84,11 @@
 		NUMmatrix_free <struct##Type> (our x, row1, col1); \
 	}
 
-#define oo_OBJECT(Class,version,x)  \
-	forget (our x);
+#define oo_AUTO_OBJECT(Class,version,x)
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	forget (our x);
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)
 
 #define oo_FILE(x)
 
@@ -102,7 +101,7 @@
 	}
 
 #define oo_DEFINE_CLASS(Class,Parent)  \
-	void struct##Class :: v_destroy () { \
+	void struct##Class :: v_destroy () noexcept { \
 
 #define oo_END_CLASS(Class)  \
 		Class##_Parent :: v_destroy (); \
diff --git a/sys/oo_EQUAL.h b/sys/oo_EQUAL.h
index 363ba99..846b863 100644
--- a/sys/oo_EQUAL.h
+++ b/sys/oo_EQUAL.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -95,11 +94,16 @@
 				if (! our x [i] [j]. equal (& thy x [i] [j])) return false; \
 	}
 
-#define oo_OBJECT(Class,version,x)  \
-	if (! our x != ! thy x || (our x && ! Data_equal (our x, thy x))) return false;
+#define oo_AUTO_OBJECT(Class,version,x)  \
+	if (! our x != ! thy x || (our x && ! Data_equal (our x.get(), thy x.get()))) return false;
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	if (! our x != ! thy x || (our x && ! Data_equal (our x, thy x))) return false;
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  \
+	for (long i = 1; i <= our x.size; i ++) { \
+		if (! our x.at [i] != ! thy x.at [i] || (our x.at [i] && ! Data_equal (our x.at [i], thy x.at [i]))) return false; \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  \
+	if (! our x != ! thy x || (our x && ! Data_equal (our x.get(), thy x.get()))) return false;
 
 #define oo_FILE(x)  \
 	if (! MelderFile_equal (& our x, & thy x)) return false;
@@ -115,8 +119,8 @@
 	}
 
 #define oo_DEFINE_CLASS(Class,Parent)  \
-	bool struct##Class :: v_equal (thou) { \
-		thouart (Class); \
+	bool struct##Class :: v_equal (Daata thee_Daata) { \
+		Class thee = static_cast <Class> (thee_Daata); \
 		if (! Class##_Parent :: v_equal (thee)) return false;
 
 #define oo_END_CLASS(Class)  \
diff --git a/sys/oo_READ_BINARY.h b/sys/oo_READ_BINARY.h
index 99bab7f..50d7e68 100644
--- a/sys/oo_READ_BINARY.h
+++ b/sys/oo_READ_BINARY.h
@@ -1,20 +1,19 @@
 /* oo_READ_BINARY.h
  *
- * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1994-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -118,20 +117,30 @@
 		} \
 	}
 
-#define oo_OBJECT(Class,formatVersion,x)  \
+#define oo_AUTO_OBJECT(Class,formatVersion,x)  \
 	if (bingetex (f)) { \
 		our x = Thing_new (Class); \
 		our x -> v_readBinary (f, formatVersion); \
 	}
 
-#define oo_COLLECTION(Class,x,ItemClass,formatVersion)  \
+#define oo_COLLECTION_OF(Class,x,ItemClass,formatVersion)  \
 	{ \
-		int32_t n = bingeti4 (f); \
+		int32 n = bingeti4 (f); \
+		for (int32 i = 1; i <= n; i ++) { \
+			auto##ItemClass item = Thing_new (ItemClass); \
+			item -> v_readBinary (f, formatVersion); \
+			our x.addItem_move (item.move()); \
+		} \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,formatVersion)  \
+	{ \
+		int32 n = bingeti4 (f); \
 		our x = Class##_create (); \
-		for (int32_t i = 1; i <= n; i ++) { \
-			auto##ItemClass item = (ItemClass) Thing_new (ItemClass); \
-			item.peek() -> v_readBinary (f, formatVersion); \
-			Collection_addItem (our x, item.transfer()); \
+		for (int32 i = 1; i <= n; i ++) { \
+			auto##ItemClass item = Thing_new (ItemClass); \
+			item -> v_readBinary (f, formatVersion); \
+			our x -> addItem_move (item.move()); \
 		} \
 	}
 
@@ -140,7 +149,8 @@
 #define oo_DIR(x)
 
 #define oo_DEFINE_STRUCT(Type)  \
-	void struct##Type :: readBinary (FILE *f, int formatVersion) {
+	void struct##Type :: readBinary (FILE *f, int formatVersion) { \
+		(void) formatVersion;
 
 #define oo_END_STRUCT(Type)  \
 	}
diff --git a/sys/oo_READ_TEXT.h b/sys/oo_READ_TEXT.h
index 434be46..3d00d0c 100644
--- a/sys/oo_READ_TEXT.h
+++ b/sys/oo_READ_TEXT.h
@@ -1,20 +1,19 @@
 /* oo_READ_TEXT.h
  *
- * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1994-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -139,20 +138,30 @@
 		} \
 	}
 
-#define oo_OBJECT(Class,formatVersion,x)  \
+#define oo_AUTO_OBJECT(Class,formatVersion,x)  \
 	if (texgetex (a_text) == 1) { \
 		our x = Thing_new (Class); \
 		our x -> v_readText (a_text, formatVersion); \
 	}
 
-#define oo_COLLECTION(Class,x,ItemClass,formatVersion)  \
+#define oo_COLLECTION_OF(Class,x,ItemClass,formatVersion)  \
+	{ \
+		long n = texgeti4 (a_text); \
+		for (long i = 1; i <= n; i ++) { \
+			auto##ItemClass item = Thing_new (ItemClass); \
+			item -> v_readText (a_text, formatVersion); \
+			our x.addItem_move (item.move()); \
+		} \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,formatVersion)  \
 	{ \
 		long n = texgeti4 (a_text); \
 		our x = Class##_create (); \
 		for (long i = 1; i <= n; i ++) { \
-			auto##ItemClass item = (ItemClass) Thing_new (ItemClass); \
-			item.peek() -> v_readText (a_text, formatVersion); \
-			Collection_addItem (our x, item.transfer()); \
+			auto##ItemClass item = Thing_new (ItemClass); \
+			item -> v_readText (a_text, formatVersion); \
+			our x -> addItem_move (item.move()); \
 		} \
 	}
 
@@ -161,7 +170,8 @@
 #define oo_DIR(x)
 
 #define oo_DEFINE_STRUCT(Type)  \
-	void struct##Type :: readText (MelderReadText a_text, int formatVersion) {
+	void struct##Type :: readText (MelderReadText a_text, int formatVersion) { \
+		(void) formatVersion;
 
 #define oo_END_STRUCT(Type)  \
 	}
diff --git a/sys/oo_WRITE_BINARY.h b/sys/oo_WRITE_BINARY.h
index fd5ec6a..90d614f 100644
--- a/sys/oo_WRITE_BINARY.h
+++ b/sys/oo_WRITE_BINARY.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -88,16 +87,23 @@
 		for (long j = col1; j <= col2; j ++) \
 			our x [i] [j]. writeBinary (f);
 
-#define oo_OBJECT(Class,version,x)  \
-	binputex (our x != NULL, f); \
+#define oo_AUTO_OBJECT(Class,version,x)  \
+	binputex ((bool) our x, f); \
 	if (our x) \
-		Data_writeBinary (our x, f);
+		Data_writeBinary (our x.get(), f);
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	binputi4 (our x ? our x -> size : 0, f); \
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  \
+	binputi4 (our x.size, f); \
+	for (long i = 1; i <= our x.size; i ++) { \
+		ItemClass data = our x.at [i]; \
+		data -> struct##ItemClass :: v_writeBinary (f); \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  \
+	binputi4 (our x ? our x->size : 0, f); \
 	if (our x) { \
-		for (long i = 1; i <= our x -> size; i ++) { \
-			ItemClass data = (ItemClass) our x -> item [i]; \
+		for (long i = 1; i <= our x->size; i ++) { \
+			ItemClass data = our x->at [i]; \
 			data -> struct##ItemClass :: v_writeBinary (f); \
 		} \
 	}
diff --git a/sys/oo_WRITE_TEXT.h b/sys/oo_WRITE_TEXT.h
index 5c98d3c..9dae4fb 100644
--- a/sys/oo_WRITE_TEXT.h
+++ b/sys/oo_WRITE_TEXT.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "oo_undef.h"
@@ -23,7 +22,7 @@
 	texput##storage (file, our x, U"" #x, 0,0,0,0,0);
 
 #define oo_ARRAY(type,storage,x,cap,n)  \
-	texputintro (file, U"" #x U" []: ", n ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", n ? nullptr : U"(empty)", 0,0,0,0); \
 	for (int i = 0; i < n; i ++) \
 		texput##storage (file, our x [i], U"" #x " [", Melder_integer (i), U"]", 0,0,0); \
 	texexdent (file);
@@ -52,13 +51,13 @@
 	texexdent (file);
 
 #define oo_ENUMx_SET(type,storage,Type,x,setType)  \
-	texputintro (file, U"" #x U" []: ", n ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", n ? nullptr : U"(empty)", 0,0,0,0); \
 	for (int i = 0; i <= setType##_MAX; i ++) \
 		texput##storage (file, our x [i], Type##_getText, U"" #x U" [", setType##_getText (i), U"]", 0,0,0); \
 	texexdent (file);
 
 #define oo_ENUMx_VECTOR(type,storage,Type,x,min,max)  \
-	texputintro (file, U"" #x U" []: ", max >= min ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", max >= min ? nullptr : U"(empty)", 0,0,0,0); \
 	for (long i = min; i <= max; i ++) \
 		texput##storage (file, our x [i], Type##_getText, U"" #x U" [", Melder_integer (i), U"]", 0,0,0); \
 	texexdent (file);
@@ -67,7 +66,7 @@
 	texput##storage (file, our x, U""#x, 0,0,0,0,0);
 
 #define oo_STRINGx_ARRAY(storage,x,cap,n)  \
-	texputintro (file, U"" #x U" []: ", n ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", n ? nullptr : U"(empty)", 0,0,0,0); \
 	for (int i = 0; i < n; i ++) \
 		texput##storage (file, our x [i], U"" #x U" [", Melder_integer (i), U"]", 0,0,0); \
 	texexdent (file);
@@ -79,7 +78,7 @@
 	texexdent (file);
 
 #define oo_STRINGx_VECTOR(storage,x,min,max)  \
-	texputintro (file, U"" #x U" []: ", max >= min ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", max >= min ? nullptr : U"(empty)", 0,0,0,0); \
 	for (long i = min; i <= max; i ++) \
 		texput##storage (file, our x [i], U"" #x U" [", Melder_integer (i), U"]", 0,0,0); \
 	texexdent (file);
@@ -90,7 +89,7 @@
 	texexdent (file);
 
 #define oo_STRUCT_ARRAY(Type,x,cap,n)  \
-	texputintro (file, U"" #x U" []: ", n ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", n ? nullptr : U"(empty)", 0,0,0,0); \
 	for (int i = 0; i < n; i ++) { \
 		texputintro (file, U"" #x " [", Melder_integer (i), U"]:", 0,0,0); \
 		our x [i]. writeText (file); \
@@ -108,7 +107,7 @@
 	texexdent (file);
 
 #define oo_STRUCT_VECTOR_FROM(Type,x,min,max)  \
-	texputintro (file, U"" #x U" []: ", max >= min ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" []: ", max >= min ? nullptr : U"(empty)", 0,0,0,0); \
 	for (long i = min; i <= max; i ++) { \
 		texputintro (file, U"" #x U" [", Melder_integer (i), U"]:", 0,0,0); \
 		our x [i]. writeText (file); \
@@ -117,7 +116,7 @@
 	texexdent (file);
 
 #define oo_STRUCT_MATRIX_FROM(Type,x,row1,row2,col1,col2)  \
-	texputintro (file, U"" #x U" [] []: ", row2 >= row1 ? NULL : U"(empty)", 0,0,0,0); \
+	texputintro (file, U"" #x U" [] []: ", row2 >= row1 ? nullptr : U"(empty)", 0,0,0,0); \
 	for (long i = row1; i <= row2; i ++) { \
 		texputintro (file, U"" #x U" [", Melder_integer (i), U"]:", 0,0,0); \
 		for (long j = col1; j <= col2; j ++) { \
@@ -129,16 +128,25 @@
 	} \
 	texexdent (file);
 
-#define oo_OBJECT(Class,version,x)  \
-	texputex (file, our x != NULL, U"" #x, 0,0,0,0,0); \
+#define oo_AUTO_OBJECT(Class,version,x)  \
+	texputex (file, !! our x, U"" #x, 0,0,0,0,0); \
 	if (our x) \
-		Data_writeText (our x, file);
+		Data_writeText (our x.get(), file);
 
-#define oo_COLLECTION(Class,x,ItemClass,version)  \
-	texputi4 (file, our x ? our x -> size : 0, U"" #x U": size", 0,0,0,0,0); \
+#define oo_COLLECTION_OF(Class,x,ItemClass,version)  \
+	texputi4 (file, our x.size, U"" #x U": size", 0,0,0,0,0); \
+	for (long i = 1; i <= our x.size; i ++) { \
+		ItemClass data = our x.at [i]; \
+		texputintro (file, U"" #x U" [", Melder_integer (i), U"]:", 0,0,0); \
+		data -> struct##ItemClass :: v_writeText (file); \
+		texexdent (file); \
+	}
+
+#define oo_AUTO_COLLECTION(Class,x,ItemClass,version)  \
+	texputi4 (file, our x ? our x->size : 0, U"" #x U": size", 0,0,0,0,0); \
 	if (our x) { \
-		for (long i = 1; i <= our x -> size; i ++) { \
-			ItemClass data = (ItemClass) our x -> item [i]; \
+		for (long i = 1; i <= our x->size; i ++) { \
+			ItemClass data = our x->at [i]; \
 			texputintro (file, U"" #x U" [", Melder_integer (i), U"]:", 0,0,0); \
 			data -> struct##ItemClass :: v_writeText (file); \
 			texexdent (file); \
diff --git a/sys/oo_undef.h b/sys/oo_undef.h
index c56286d..0c76c33 100644
--- a/sys/oo_undef.h
+++ b/sys/oo_undef.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1994-2011,2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #undef oo_SIMPLE
@@ -39,8 +38,9 @@
 #undef oo_STRUCT_VECTOR_FROM
 #undef oo_STRUCT_MATRIX_FROM
 
-#undef oo_OBJECT
-#undef oo_COLLECTION
+#undef oo_AUTO_OBJECT
+#undef oo_COLLECTION_OF
+#undef oo_AUTO_COLLECTION
 #undef oo_FILE
 #undef oo_DIR
 
diff --git a/sys/praat.cpp b/sys/praat.cpp
index db5274c..13365e9 100644
--- a/sys/praat.cpp
+++ b/sys/praat.cpp
@@ -1,20 +1,19 @@
 /* praat.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "melder.h"
@@ -27,19 +26,18 @@
 	#include <signal.h>
 #endif
 #include <locale.h>
-#ifdef macintosh
-	#include "macport_on.h"
-    #if useCarbon
-        #include <Carbon/Carbon.h>
-    #endif
-	#include "macport_off.h"
-#endif
 #if defined (UNIX)
 	#include <unistd.h>
 #endif
+#if defined (_WIN32)
+	#include <windows.h>
+	#include <fcntl.h>
+	#include <io.h>
+#endif
 
 #include "praatP.h"
 #include "praat_script.h"
+#include "praat_version.h"
 #include "site.h"
 #include "machine.h"
 #include "Printer.h"
@@ -50,6 +48,8 @@
 	#include <gdk/gdkx.h>
 #endif
 
+Thing_implement (Praat_Command, Thing, 0);
+
 #define EDITOR  theCurrentPraatObjects -> list [IOBJECT]. editors
 
 #define WINDOW_WIDTH 520
@@ -63,7 +63,7 @@ structPraatPicture theForegroundPraatPicture;
 PraatPicture theCurrentPraatPicture = & theForegroundPraatPicture;
 struct PraatP praatP;
 static char32 programName [64];
-static structMelderDir homeDir = { { 0 } };
+static structMelderDir homeDir { { 0 } };
 /*
  * praatDirectory: preferences file, buttons file, message files, tracing file, plugins.
  *    Unix:   /u/miep/.myProg-dir   (without slash)
@@ -72,7 +72,7 @@ static structMelderDir homeDir = { { 0 } };
  *    Mac X:   /Users/Miep/Library/Preferences/MyProg Prefs
  */
 extern structMelderDir praatDir;
-structMelderDir praatDir = { { 0 } };
+structMelderDir praatDir { { 0 } };
 /*
  * prefsFile: preferences file.
  *    Unix:   /u/miep/.myProg-dir/prefs5
@@ -80,7 +80,7 @@ structMelderDir praatDir = { { 0 } };
  *                       or:   C:\Users\Miep\MyProg\Preferences5.ini
  *    Mac X:   /Users/Miep/Library/Preferences/MyProg Prefs/Prefs5
  */
-static structMelderFile prefsFile = { 0 };
+static structMelderFile prefsFile { 0 };
 /*
  * buttonsFile: buttons file.
  *    Unix:   /u/miep/.myProg-dir/buttons
@@ -88,12 +88,12 @@ static structMelderFile prefsFile = { 0 };
  *                    or:   C:\Users\Miep\MyProg\Buttons5.ini
  *    Mac X:   /Users/Miep/Library/Preferences/MyProg Prefs/Buttons5
  */
-static structMelderFile buttonsFile = { 0 };
+static structMelderFile buttonsFile { 0 };
 #if defined (UNIX)
-	static structMelderFile pidFile = { 0 };   // like /u/miep/.myProg-dir/pid
-	static structMelderFile messageFile = { 0 };   // like /u/miep/.myProg-dir/message
+	static structMelderFile pidFile { 0 };   // like /u/miep/.myProg-dir/pid
+	static structMelderFile messageFile { 0 };   // like /u/miep/.myProg-dir/message
 #elif defined (_WIN32)
-	static structMelderFile messageFile = { 0 };   // like C:\Users\Miep\myProg\Message.txt
+	static structMelderFile messageFile { 0 };   // like C:\Users\Miep\myProg\Message.txt
 #endif
 /*
  * tracingFile: tracing file.
@@ -102,7 +102,7 @@ static structMelderFile buttonsFile = { 0 };
  *                    or:   C:\Users\Miep\MyProg\Tracing.txt
  *    Mac X:   /Users/Miep/Library/Preferences/MyProg Prefs/Tracing.txt
  */
-static structMelderFile tracingFile = { 0 };
+static structMelderFile tracingFile { 0 };
 
 static GuiList praatList_objects;
 
@@ -112,12 +112,12 @@ long praat_idOfSelected (ClassInfo klas, int inplace) {
 	int place = inplace, IOBJECT;
 	if (place == 0) place = 1;
 	if (place > 0) {
-		WHERE (SELECTED && (klas == NULL || CLASS == klas)) {
+		WHERE (SELECTED && (! klas || CLASS == klas)) {
 			if (place == 1) return ID;
 			place --;
 		}
 	} else {
-		WHERE_DOWN (SELECTED && (klas == NULL || CLASS == klas)) {
+		WHERE_DOWN (SELECTED && (! klas || CLASS == klas)) {
 			if (place == -1) return ID;
 			place ++;
 		}
@@ -134,13 +134,13 @@ char32 * praat_nameOfSelected (ClassInfo klas, int inplace) {
 	int place = inplace, IOBJECT;
 	if (place == 0) place = 1;
 	if (place > 0) {
-		WHERE (SELECTED && (klas == NULL || CLASS == klas)) {
-			if (place == 1) return klas == NULL ? FULL_NAME : NAME;
+		WHERE (SELECTED && (! klas || CLASS == klas)) {
+			if (place == 1) return klas ? NAME : FULL_NAME;
 			place --;
 		}
 	} else {
-		WHERE_DOWN (SELECTED && (klas == NULL || CLASS == klas)) {
-			if (place == -1) return klas == NULL ? FULL_NAME : NAME;
+		WHERE_DOWN (SELECTED && (! klas || CLASS == klas)) {
+			if (place == -1) return klas ? NAME : FULL_NAME;
 			place ++;
 		}
 	}
@@ -153,7 +153,7 @@ char32 * praat_nameOfSelected (ClassInfo klas, int inplace) {
 }
 
 int praat_numberOfSelected (ClassInfo klas) {
-	if (klas == NULL) return theCurrentPraatObjects -> totalSelection;
+	if (! klas) return theCurrentPraatObjects -> totalSelection;
 	long readableClassId = klas -> sequentialUniqueIdOfReadableClass;
 	if (readableClassId == 0) Melder_fatal (U"No sequential unique ID for class ", klas -> className, U".");
 	return theCurrentPraatObjects -> numberOfSelected [readableClassId];
@@ -161,24 +161,26 @@ int praat_numberOfSelected (ClassInfo klas) {
 
 void praat_deselect (int IOBJECT) {
 	if (! SELECTED) return;
-	SELECTED = FALSE;
+	SELECTED = false;
 	theCurrentPraatObjects -> totalSelection -= 1;
-	long readableClassId = ((Thing) theCurrentPraatObjects -> list [IOBJECT]. object) -> classInfo -> sequentialUniqueIdOfReadableClass;
+	long readableClassId = theCurrentPraatObjects -> list [IOBJECT]. object -> classInfo -> sequentialUniqueIdOfReadableClass;
 	Melder_assert (readableClassId != 0);
 	theCurrentPraatObjects -> numberOfSelected [readableClassId] -= 1;
 	if (! theCurrentPraatApplication -> batch && ! Melder_backgrounding) {
+		trace (U"deselecting object ", IOBJECT);
 		GuiList_deselectItem (praatList_objects, IOBJECT);
+		trace (U"deselected object ", IOBJECT);
 	}
 }
 
-void praat_deselectAll (void) { int IOBJECT; WHERE (1) praat_deselect (IOBJECT); }
+void praat_deselectAll () { int IOBJECT; WHERE (1) praat_deselect (IOBJECT); }
 
 void praat_select (int IOBJECT) {
 	if (SELECTED) return;
-	SELECTED = TRUE;
+	SELECTED = true;
 	theCurrentPraatObjects -> totalSelection += 1;
-	Thing object = (Thing) theCurrentPraatObjects -> list [IOBJECT]. object;
-	Melder_assert (object != NULL);
+	Thing object = theCurrentPraatObjects -> list [IOBJECT]. object;
+	Melder_assert (object);
 	long readableClassId = object -> classInfo -> sequentialUniqueIdOfReadableClass;
 	if (readableClassId == 0) Melder_fatal (U"No sequential unique ID for class ", object -> classInfo -> className, U".");
 	theCurrentPraatObjects -> numberOfSelected [readableClassId] += 1;
@@ -187,87 +189,86 @@ void praat_select (int IOBJECT) {
 	}
 }
 
-void praat_selectAll (void) { int IOBJECT; WHERE (1) praat_select (IOBJECT); }
+void praat_selectAll () { int IOBJECT; WHERE (1) praat_select (IOBJECT); }
 
-void praat_list_background (void) {
+void praat_list_background () {
 	int IOBJECT;
 	WHERE (SELECTED) GuiList_deselectItem (praatList_objects, IOBJECT);
 }
-void praat_list_foreground (void) {
+void praat_list_foreground () {
 	int IOBJECT;
 	WHERE (SELECTED) {
 		GuiList_selectItem (praatList_objects, IOBJECT);
 	}
 }
 
-Data praat_onlyObject (ClassInfo klas) {
+Daata praat_onlyObject (ClassInfo klas) {
 	int IOBJECT, result = 0, found = 0;
 	WHERE (SELECTED && CLASS == klas) { result = IOBJECT; found += 1; }
-	if (found != 1) return NULL;
+	if (found != 1) return nullptr;
 	return theCurrentPraatObjects -> list [result]. object;
 }
 
-Data praat_firstObject (ClassInfo klas) {
+Daata praat_firstObject (ClassInfo klas) {
 	int IOBJECT;
 	LOOP {
 		if (CLASS == klas) return theCurrentPraatObjects -> list [IOBJECT]. object;
 	}
-	return NULL;   // this is often OK
+	return nullptr;   // this is often OK
 }
 
-Data praat_onlyObject_generic (ClassInfo klas) {
+Daata praat_onlyObject_generic (ClassInfo klas) {
 	int IOBJECT, result = 0, found = 0;
 	WHERE (SELECTED && Thing_isSubclass (CLASS, klas)) { result = IOBJECT; found += 1; }
-	if (found != 1) return NULL;
+	if (found != 1) return nullptr;
 	return theCurrentPraatObjects -> list [result]. object;
 }
 
-Data praat_firstObject_generic (ClassInfo klas) {
+Daata praat_firstObject_generic (ClassInfo klas) {
 	int IOBJECT;
 	LOOP {
 		if (Thing_isSubclass (CLASS, klas)) return theCurrentPraatObjects -> list [IOBJECT]. object;
 	}
-	return NULL;   // this is often OK
+	return nullptr;   // this is often OK
 }
 
-praat_Object praat_onlyScreenObject (void) {
+praat_Object praat_onlyScreenObject () {
 	int IOBJECT, result = 0, found = 0;
 	WHERE (SELECTED) { result = IOBJECT; found += 1; }
 	if (found != 1) Melder_fatal (U"praat_onlyScreenObject: found ", found, U" objects instead of 1.");
 	return & theCurrentPraatObjects -> list [result];
 }
 
-Data praat_firstObject_any () {
+Daata praat_firstObject_any () {
 	int IOBJECT;
 	LOOP {
 		return theCurrentPraatObjects -> list [IOBJECT]. object;
 	}
-	return NULL;   // this is often OK
+	return nullptr;   // this is often OK
 }
 
-Collection praat_getSelectedObjects (void) {
-	autoCollection thee = Collection_create (NULL, 10);
-	Collection_dontOwnItems (thee.peek());
+autoCollection praat_getSelectedObjects () {
+	autoCollection thee = Collection_create ();
 	int IOBJECT;
 	LOOP {
-		iam_LOOP (Data);
-		Collection_addItem (thee.peek(), me);
+		iam_LOOP (Daata);
+		thy addItem_ref (me);
 	}
-	return thee.transfer();
+	return thee;
 }
 
 char32 *praat_name (int IOBJECT) { return str32chr (FULL_NAME, U' ') + 1; }
 
-void praat_write_do (Any dia, const char32 *extension) {
+void praat_write_do (UiForm dia, const char32 *extension) {
 	int IOBJECT, found = 0;
-	Data data = NULL;
+	Daata data = nullptr;
 	static MelderString defaultFileName { 0 };
-	WHERE (SELECTED) { if (! data) data = (Data) OBJECT; found += 1; }
+	WHERE (SELECTED) { if (! data) data = (Daata) OBJECT; found += 1; }
 	if (found == 1) {
 		MelderString_copy (& defaultFileName, data -> name);
 		if (defaultFileName.length > 50) { defaultFileName.string [50] = U'\0'; defaultFileName.length = 50; }
 		MelderString_append (& defaultFileName, U".", extension ? extension : Thing_className (data));
-	} else if (extension == NULL) {
+	} else if (! extension) {
 		MelderString_copy (& defaultFileName, U"praat.Collection");
 	} else {
 		MelderString_copy (& defaultFileName, U"praat.", extension);
@@ -275,44 +276,55 @@ void praat_write_do (Any dia, const char32 *extension) {
 	UiOutfile_do (dia, defaultFileName.string);
 }
 
-static void removeAllReferencesToEditor (Any editor) {
-	int iobject, ieditor;
+static void removeAllReferencesToMoribundEditor (Editor editor) {
 	/*
 	 * Remove all references to this editor.
 	 * It may be editing multiple objects.
 	 */
-	for (iobject = 1; iobject <= theCurrentPraatObjects -> n; iobject ++)
-		for (ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
+	for (int iobject = 1; iobject <= theCurrentPraatObjects -> n; iobject ++)
+		for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
 			if (theCurrentPraatObjects -> list [iobject]. editors [ieditor] == editor)
-				theCurrentPraatObjects -> list [iobject]. editors [ieditor] = NULL;
+				theCurrentPraatObjects -> list [iobject]. editors [ieditor] = nullptr;
 	if (praatP. editor == editor)
-		praatP. editor = NULL;
+		praatP. editor = nullptr;
 }
 
-static void praat_remove (int iobject) {
-/* Remove the "object" from the list. */
-/* Kill everything to do with selection. */
-	int ieditor;
+/**
+	Remove the "object" from the list,
+	killing everything that has to do with the selection.
+*/
+static void praat_remove (int iobject, bool removeVisibly) {
+
 	Melder_assert (iobject >= 1 && iobject <= theCurrentPraatObjects -> n);
 	if (theCurrentPraatObjects -> list [iobject]. isBeingCreated) {
-		theCurrentPraatObjects -> list [iobject]. isBeingCreated = FALSE;
+		theCurrentPraatObjects -> list [iobject]. isBeingCreated = false;
 		theCurrentPraatObjects -> totalBeingCreated --;
 	}
-	praat_deselect (iobject);
+	trace (U"deselect object ", iobject);
+	if (removeVisibly)
+		praat_deselect (iobject);
+	trace (U"deselected object ", iobject);
 
 	/*
 	 * To prevent synchronization problems, kill editors before killing the data.
 	 */
-	for (ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-		Editor editor = (Editor) theCurrentPraatObjects -> list [iobject]. editors [ieditor];   /* Save this one reference. */
+	for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
+		Editor editor = theCurrentPraatObjects -> list [iobject]. editors [ieditor];   // save this one reference
 		if (editor) {
-			removeAllReferencesToEditor (editor);
-			forget (editor);
+			trace (U"remove references to editor ", ieditor);
+			removeAllReferencesToMoribundEditor (editor);
+			trace (U"forget editor ", ieditor);
+			if (removeVisibly)
+				forget (editor);   // TODO: doesn't this call removeAllReferencesToMoribundEditor() again?
+			trace (U"forgeotten editor ", ieditor);
 		}
 	}
 	MelderFile_setToNull (& theCurrentPraatObjects -> list [iobject]. file);
+	trace (U"free name");
 	Melder_free (theCurrentPraatObjects -> list [iobject]. name);
-	forget (theCurrentPraatObjects -> list [iobject]. object);
+	trace (U"forget object");
+	forget (theCurrentPraatObjects -> list [iobject]. object);   // note: this might save a file-based object to file
+	trace (U"forgotten object");
 }
 
 void praat_cleanUpName (char32 *name) {
@@ -326,29 +338,22 @@ void praat_cleanUpName (char32 *name) {
 
 /***** objects + commands *****/
 
-void praat_newWithFile (Data me, MelderFile file, const char32 *myName) {
-	int IOBJECT, ieditor;   // must be local: praat_new can be called from within a loop!!!
-	if (me == NULL)
+static void praat_new_unpackCollection (autoCollection me, const char32* myName) {
+	for (long idata = 1; idata <= my size; idata ++) {
+		autoDaata object = autoDaata ((Daata) my at [idata]);
+		my at [idata] = nullptr;   // disown; once the elements are autoThings, the move will handle this
+		const char32 *name = object -> name ? object -> name : myName;
+		Melder_assert (name);
+		praat_new (object.move(), name);   // recurse
+	}
+}
+
+void praat_newWithFile (autoDaata me, MelderFile file, const char32 *myName) {
+	if (! me)
 		Melder_throw (U"No object was put into the list.");
-	/*
-	 * If my class is Collection, I'll have to be unpacked.
-	 */
+
 	if (my classInfo == classCollection) {
-		Collection list = (Collection) me;
-		try {
-			for (long idata = 1; idata <= list -> size; idata ++) {
-				Data object = (Data) list -> item [idata];
-				const char32 *name = object -> name ? object -> name : myName;
-				Melder_assert (name != NULL);
-				praat_new (object, name);   // recurse
-			}
-		} catch (MelderError) {
-			list -> size = 0;   // disown
-			forget (list);
-			throw;
-		}
-		list -> size = 0;   // disown
-		forget (list);
+		praat_new_unpackCollection (me.static_cast_move<structCollection>(), myName);
 		return;
 	}
 
@@ -364,15 +369,15 @@ void praat_newWithFile (Data me, MelderFile file, const char32 *myName) {
 	} else {
 		MelderString_copy (& givenName, my name && my name [0] ? my name : U"untitled");
 	}
-	MelderString_append (& name, Thing_className (me), U" ", givenName.string);
+	MelderString_append (& name, Thing_className (me.get()), U" ", givenName.string);
 
 	if (theCurrentPraatObjects -> n == praat_MAXNUM_OBJECTS) {
-		forget (me);
+		//forget (me);
 		Melder_throw (U"The Object Window cannot contain more than ", praat_MAXNUM_OBJECTS, U" objects. You could remove some objects.");
 	}
 		
-	IOBJECT = ++ theCurrentPraatObjects -> n;
-	Melder_assert (FULL_NAME == NULL);
+	int IOBJECT = ++ theCurrentPraatObjects -> n;
+	Melder_assert (FULL_NAME == nullptr);
 	FULL_NAME = Melder_dup_f (name.string);   // all right to crash if out of memory
 	++ theCurrentPraatObjects -> uniqueId;
 
@@ -381,98 +386,99 @@ void praat_newWithFile (Data me, MelderFile file, const char32 *myName) {
 			Melder_cat (theCurrentPraatObjects -> uniqueId, U". ", name.string),
 			theCurrentPraatObjects -> n);
 	}
-	OBJECT = me;
-	SELECTED = FALSE;
 	CLASS = my classInfo;
-	for (ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
-		EDITOR [ieditor] = NULL;
-	if (file != NULL) {
+	OBJECT = me.releaseToAmbiguousOwner();   // FIXME: should be move()
+	SELECTED = false;
+	for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
+		EDITOR [ieditor] = nullptr;
+	if (file) {
 		MelderFile_copy (file, & theCurrentPraatObjects -> list [IOBJECT]. file);
 	} else {
 		MelderFile_setToNull (& theCurrentPraatObjects -> list [IOBJECT]. file);
 	}
 	ID = theCurrentPraatObjects -> uniqueId;
-	theCurrentPraatObjects -> list [IOBJECT]. isBeingCreated = TRUE;
-	Thing_setName ((Thing) OBJECT, givenName.string);
+	theCurrentPraatObjects -> list [IOBJECT]. isBeingCreated = true;
+	Thing_setName (OBJECT, givenName.string);
 	theCurrentPraatObjects -> totalBeingCreated ++;
 }
 
 static MelderString thePraatNewName { 0 };
-void praat_new (Data me) {
-	praat_newWithFile (me, NULL, U"");
+void praat_new (autoDaata me) {
+	praat_newWithFile (me.move(), nullptr, U"");
 }
-void praat_new (Data me, Melder_1_ARG) {
-	praat_newWithFile (me, NULL, Melder_1_ARG_CALL);
+void praat_new (autoDaata me, Melder_1_ARG) {
+	praat_newWithFile (me.move(), nullptr, Melder_1_ARG_CALL);
 }
-void praat_new (Data me, Melder_2_ARGS) {
+void praat_new (autoDaata me, Melder_2_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_2_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_3_ARGS) {
+void praat_new (autoDaata me, Melder_3_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_3_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_4_ARGS) {
+void praat_new (autoDaata me, Melder_4_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_4_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_5_ARGS) {
+void praat_new (autoDaata me, Melder_5_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_5_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_6_ARGS) {
+void praat_new (autoDaata me, Melder_6_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_6_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_7_ARGS) {
+void praat_new (autoDaata me, Melder_7_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_7_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_8_ARGS) {
+void praat_new (autoDaata me, Melder_8_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_8_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
-void praat_new (Data me, Melder_9_ARGS) {
+void praat_new (autoDaata me, Melder_9_ARGS) {
 	MelderString_copy (& thePraatNewName, Melder_9_ARGS_CALL);
-	praat_new (me, thePraatNewName.string);
+	praat_new (me.move(), thePraatNewName.string);
 }
 
-void praat_updateSelection (void) {
+void praat_updateSelection () {
 	if (theCurrentPraatObjects -> totalBeingCreated) {
 		int IOBJECT;
 		praat_deselectAll ();
 		WHERE (theCurrentPraatObjects -> list [IOBJECT]. isBeingCreated) {
 			praat_select (IOBJECT);
-			theCurrentPraatObjects -> list [IOBJECT]. isBeingCreated = FALSE;
+			theCurrentPraatObjects -> list [IOBJECT]. isBeingCreated = false;
 		}
 		theCurrentPraatObjects -> totalBeingCreated = 0;
 		praat_show ();
 	}
 }
 
-static void gui_cb_list (void *void_me, GuiListEvent event) {
-	(void) event; (void) void_me;
-	int IOBJECT, first = TRUE;
+static void gui_cb_list_selectionChanged (Thing /* boss */, GuiList_SelectionChangedEvent event) {
+	Melder_assert (event -> list == praatList_objects);
+	int IOBJECT;
+	bool first = true;
 	WHERE (SELECTED) {
-		SELECTED = FALSE;
-		long readableClassId = ((Thing) theCurrentPraatObjects -> list [IOBJECT]. object) -> classInfo -> sequentialUniqueIdOfReadableClass;
+		SELECTED = false;
+		long readableClassId = theCurrentPraatObjects -> list [IOBJECT]. object -> classInfo -> sequentialUniqueIdOfReadableClass;
 		theCurrentPraatObjects -> numberOfSelected [readableClassId] --;
 		Melder_assert (theCurrentPraatObjects -> numberOfSelected [readableClassId] >= 0);
 	}
 	theCurrentPraatObjects -> totalSelection = 0;
 	long numberOfSelected;
 	long *selected = GuiList_getSelectedPositions (praatList_objects, & numberOfSelected);
-	if (selected != NULL) {
+	if (selected) {
 		for (long iselected = 1; iselected <= numberOfSelected; iselected ++) {
 			IOBJECT = selected [iselected];
-			SELECTED = TRUE;
-			long readableClassId = ((Thing) theCurrentPraatObjects -> list [IOBJECT]. object) -> classInfo -> sequentialUniqueIdOfReadableClass;
+			SELECTED = true;
+			long readableClassId = theCurrentPraatObjects -> list [IOBJECT]. object -> classInfo -> sequentialUniqueIdOfReadableClass;
 			theCurrentPraatObjects -> numberOfSelected [readableClassId] ++;
 			Melder_assert (theCurrentPraatObjects -> numberOfSelected [readableClassId] > 0);
 			UiHistory_write (first ? U"\nselectObject: \"" : U"\nplusObject: \"");
 			UiHistory_write_expandQuotes (FULL_NAME);
 			UiHistory_write (U"\"");
-			first = FALSE;
+			first = false;
 			theCurrentPraatObjects -> totalSelection += 1;
 		}
 		NUMvector_free <long> (selected, 1);
@@ -505,14 +511,14 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2) {
 
 void praat_removeObject (int i) {
 	int j, ieditor;
-	praat_remove (i);   /* Dangle. */
+	praat_remove (i, true);   // dangle
 	for (j = i; j < theCurrentPraatObjects -> n; j ++)
 		theCurrentPraatObjects -> list [j] = theCurrentPraatObjects -> list [j + 1];   // undangle but create second references
-	theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. name = NULL;   // undangle or remove second reference
-	theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. object = NULL;   // undangle or remove second reference
+	theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. name = nullptr;   // undangle or remove second reference
+	theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. object = nullptr;   // undangle or remove second reference
 	theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. isSelected = 0;
 	for (ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
-		theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. editors [ieditor] = NULL;   // undangle or remove second reference
+		theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. editors [ieditor] = nullptr;   // undangle or remove second reference
 	MelderFile_setToNull (& theCurrentPraatObjects -> list [theCurrentPraatObjects -> n]. file);   // undangle or remove second reference
 	-- theCurrentPraatObjects -> n;
 	if (! theCurrentPraatApplication -> batch) {
@@ -521,6 +527,7 @@ void praat_removeObject (int i) {
 }
 
 static void praat_exit (int exit_code) {
+//Melder_setTracing (true);
 	int IOBJECT;
 	#ifdef _WIN32
 		if (! theCurrentPraatApplication -> batch) {
@@ -585,20 +592,21 @@ static void praat_exit (int exit_code) {
 	}
 
 	trace (U"flush the file-based objects");
-	WHERE_DOWN (! MelderFile_isNull (& theCurrentPraatObjects -> list [IOBJECT]. file)) praat_remove (IOBJECT);
+	WHERE_DOWN (! MelderFile_isNull (& theCurrentPraatObjects -> list [IOBJECT]. file)) {
+		trace (U"removing object based on file ", & theCurrentPraatObjects -> list [IOBJECT]. file);
+		praat_remove (IOBJECT, false);
+	}
 	Melder_files_cleanUp ();   // in case a URL is open
 
 	trace (U"leave the program");
 	exit (exit_code);
 }
 
-static void cb_Editor_destruction (Editor me, void *closure) {
-	(void) closure;
-	removeAllReferencesToEditor (me);   // remove reference(s) to moribund Editor
+static void cb_Editor_destruction (Editor me) {
+	removeAllReferencesToMoribundEditor (me);
 }
 
-static void cb_Editor_dataChanged (Editor me, void *closure) {
-	(void) closure;
+static void cb_Editor_dataChanged (Editor me) {
 	for (int iobject = 1; iobject <= theCurrentPraatObjects -> n; iobject ++) {
 		bool editingThisObject = false;
 		/*
@@ -614,8 +622,8 @@ static void cb_Editor_dataChanged (Editor me, void *closure) {
 			 * Notify all other editors associated with this object.
 			 */
 			for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-				Editor otherEditor = (Editor) theCurrentPraatObjects -> list [iobject]. editors [ieditor];
-				if (otherEditor != NULL && otherEditor != me) {
+				Editor otherEditor = theCurrentPraatObjects -> list [iobject]. editors [ieditor];
+				if (otherEditor && otherEditor != me) {
 					Editor_dataChanged (otherEditor);
 				}
 			}
@@ -623,15 +631,13 @@ static void cb_Editor_dataChanged (Editor me, void *closure) {
 	}
 }
 
-static void cb_Editor_publication (Editor me, void *closure, Data publication) {
+static void cb_Editor_publication (Editor /* me */, autoDaata publication) {
 /*
    The default publish callback.
    Works nicely if the publisher invents a name.
 */
-	(void) me;
-	(void) closure;
 	try {
-		praat_new (publication, U"");
+		praat_new (publication.move(), U"");
 	} catch (MelderError) {
 		Melder_flushError ();
 	}
@@ -639,39 +645,39 @@ static void cb_Editor_publication (Editor me, void *closure, Data publication) {
 }
 
 int praat_installEditor (Editor editor, int IOBJECT) {
-	if (editor == NULL) return 0;
+	if (! editor) return 0;
 	for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-		if (EDITOR [ieditor] == NULL) {
+		if (! EDITOR [ieditor]) {
 			EDITOR [ieditor] = editor;
-			Editor_setDestructionCallback (editor, cb_Editor_destruction, NULL);
-			Editor_setDataChangedCallback (editor, cb_Editor_dataChanged, NULL);
+			Editor_setDestructionCallback (editor, cb_Editor_destruction);
+			Editor_setDataChangedCallback (editor, cb_Editor_dataChanged);
 			if (! editor -> d_publicationCallback)
-				Editor_setPublicationCallback (editor, cb_Editor_publication, NULL);
+				Editor_setPublicationCallback (editor, cb_Editor_publication);
 			return 1;
 		}
 	}
-	forget (editor);
+	//forget (editor);
 	Melder_throw (U"(praat_installEditor:) Cannot have more than ", praat_MAXNUM_EDITORS, U" editors with one object.");
 }
 
 int praat_installEditor2 (Editor editor, int i1, int i2) {
-	if (editor == NULL) return 0;
+	if (! editor) return 0;
 	int ieditor1 = 0;
 	for (; ieditor1 < praat_MAXNUM_EDITORS; ieditor1 ++)
-		if (theCurrentPraatObjects -> list [i1]. editors [ieditor1] == NULL)
+		if (! theCurrentPraatObjects -> list [i1]. editors [ieditor1])
 			break;
 	int ieditor2 = 0;
 	for (; ieditor2 < praat_MAXNUM_EDITORS; ieditor2 ++)
-		if (theCurrentPraatObjects -> list [i2]. editors [ieditor2] == NULL)
+		if (! theCurrentPraatObjects -> list [i2]. editors [ieditor2])
 			break;
 	if (ieditor1 < praat_MAXNUM_EDITORS && ieditor2 < praat_MAXNUM_EDITORS) {
 		theCurrentPraatObjects -> list [i1]. editors [ieditor1] = theCurrentPraatObjects -> list [i2]. editors [ieditor2] = editor;
-		Editor_setDestructionCallback (editor, cb_Editor_destruction, NULL);
-		Editor_setDataChangedCallback (editor, cb_Editor_dataChanged, NULL);
+		Editor_setDestructionCallback (editor, cb_Editor_destruction);
+		Editor_setDataChangedCallback (editor, cb_Editor_dataChanged);
 		if (! editor -> d_publicationCallback)
-			Editor_setPublicationCallback (editor, cb_Editor_publication, NULL);
+			Editor_setPublicationCallback (editor, cb_Editor_publication);
 	} else {
-		forget (editor);
+		//forget (editor);
 		Melder_throw (U"(praat_installEditor2:) Cannot have more than ", praat_MAXNUM_EDITORS, U" editors with one object.");
 	}
 	return 1;
@@ -681,48 +687,48 @@ int praat_installEditor3 (Editor editor, int i1, int i2, int i3) {
 	if (! editor) return 0;
 	int ieditor1 = 0;
 	for (; ieditor1 < praat_MAXNUM_EDITORS; ieditor1 ++)
-		if (theCurrentPraatObjects -> list [i1]. editors [ieditor1] == NULL)
+		if (! theCurrentPraatObjects -> list [i1]. editors [ieditor1])
 			break;
 	int ieditor2 = 0;
 	for (; ieditor2 < praat_MAXNUM_EDITORS; ieditor2 ++)
-		if (theCurrentPraatObjects -> list [i2]. editors [ieditor2] == NULL)
+		if (! theCurrentPraatObjects -> list [i2]. editors [ieditor2])
 			break;
 	int ieditor3 = 0;
 	for (; ieditor3 < praat_MAXNUM_EDITORS; ieditor3 ++)
-		if (theCurrentPraatObjects -> list [i3]. editors [ieditor3] == NULL)
+		if (! theCurrentPraatObjects -> list [i3]. editors [ieditor3])
 			break;
 	if (ieditor1 < praat_MAXNUM_EDITORS && ieditor2 < praat_MAXNUM_EDITORS && ieditor3 < praat_MAXNUM_EDITORS) {
 		theCurrentPraatObjects -> list [i1]. editors [ieditor1] = theCurrentPraatObjects -> list [i2]. editors [ieditor2] = theCurrentPraatObjects -> list [i3]. editors [ieditor3] = editor;
-		Editor_setDestructionCallback (editor, cb_Editor_destruction, NULL);
-		Editor_setDataChangedCallback (editor, cb_Editor_dataChanged, NULL);
+		Editor_setDestructionCallback (editor, cb_Editor_destruction);
+		Editor_setDataChangedCallback (editor, cb_Editor_dataChanged);
 		if (! editor -> d_publicationCallback)
-			Editor_setPublicationCallback (editor, cb_Editor_publication, NULL);
+			Editor_setPublicationCallback (editor, cb_Editor_publication);
 	} else {
-		forget (editor);
+		//forget (editor);
 		Melder_throw (U"(praat_installEditor3:) Cannot have more than ", praat_MAXNUM_EDITORS, U" editors with one object.");
 	}
 	return 1;
 }
 
-int praat_installEditorN (Editor editor, Ordered objects) {
-	long iOrderedObject, iPraatObject;
-	if (editor == NULL) return 0;
+int praat_installEditorN (Editor editor, DaataList objects) {
+	if (! editor) return 0;
 	/*
 	 * First check whether all objects in the Ordered are also in the List of Objects (Praat crashes if not),
 	 * and check whether there is room to add an editor for each.
 	 */
-	for (iOrderedObject = 1; iOrderedObject <= objects -> size; iOrderedObject ++) {
-		Data object = (Data) objects -> item [iOrderedObject];
-		for (iPraatObject = 1; iPraatObject <= theCurrentPraatObjects -> n; iPraatObject ++) {
+	for (long iOrderedObject = 1; iOrderedObject <= objects->size; iOrderedObject ++) {
+		Daata object = objects->at [iOrderedObject];
+		long iPraatObject = 1;
+		for (; iPraatObject <= theCurrentPraatObjects -> n; iPraatObject ++) {
 			if (object == theCurrentPraatObjects -> list [iPraatObject]. object) {
 				int ieditor = 0;
 				for (; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-					if (theCurrentPraatObjects -> list [iPraatObject]. editors [ieditor] == NULL) {
+					if (! theCurrentPraatObjects -> list [iPraatObject]. editors [ieditor]) {
 						break;
 					}
 				}
 				if (ieditor >= praat_MAXNUM_EDITORS) {
-					forget (editor);
+					//forget (editor);
 					Melder_throw (U"Cannot view the same object in more than ", praat_MAXNUM_EDITORS, U" windows.");
 				}
 				break;
@@ -733,18 +739,19 @@ int praat_installEditorN (Editor editor, Ordered objects) {
 	/*
 	 * There appears to be room for all elements of the Ordered. The editor window can appear. Install the editor in all objects.
 	 */
-	for (iOrderedObject = 1; iOrderedObject <= objects -> size; iOrderedObject ++) {
-		Data object = (Data) objects -> item [iOrderedObject];
-		for (iPraatObject = 1; iPraatObject <= theCurrentPraatObjects -> n; iPraatObject ++) {
+	for (long iOrderedObject = 1; iOrderedObject <= objects->size; iOrderedObject ++) {
+		Daata object = objects->at [iOrderedObject];
+		long iPraatObject = 1;
+		for (; iPraatObject <= theCurrentPraatObjects -> n; iPraatObject ++) {
 			if (object == theCurrentPraatObjects -> list [iPraatObject]. object) {
 				int ieditor = 0;
 				for (; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-					if (theCurrentPraatObjects -> list [iPraatObject]. editors [ieditor] == NULL) {
+					if (! theCurrentPraatObjects -> list [iPraatObject]. editors [ieditor]) {
 						theCurrentPraatObjects -> list [iPraatObject]. editors [ieditor] = editor;
-						Editor_setDestructionCallback (editor, cb_Editor_destruction, NULL);
-						Editor_setDataChangedCallback (editor, cb_Editor_dataChanged, NULL);
+						Editor_setDestructionCallback (editor, cb_Editor_destruction);
+						Editor_setDataChangedCallback (editor, cb_Editor_dataChanged);
 						if (! editor -> d_publicationCallback)
-							Editor_setPublicationCallback (editor, cb_Editor_publication, NULL);
+							Editor_setPublicationCallback (editor, cb_Editor_publication);
 						break;
 					}
 				}
@@ -757,11 +764,11 @@ int praat_installEditorN (Editor editor, Ordered objects) {
 	return 1;
 }
 
-void praat_dataChanged (Any object) {
+void praat_dataChanged (Daata object) {
 	/*
 	 * This function can be called at error time, which is weird.
 	 */
-	char32 *saveError = NULL;
+	char32 *saveError = nullptr;
 	bool duringError = Melder_hasError ();
 	if (duringError) {
 		saveError = Melder_dup_f (Melder_getError ());
@@ -770,8 +777,8 @@ void praat_dataChanged (Any object) {
 	int IOBJECT;
 	WHERE (OBJECT == object) {
 		for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-			Editor editor = (Editor) EDITOR [ieditor];
-			if (editor != NULL) {
+			Editor editor = EDITOR [ieditor];
+			if (editor) {
 				Editor_dataChanged (editor);
 			}
 		}
@@ -788,15 +795,16 @@ static void helpProc (const char32 *query) {
 		return;
 	}
 	try {
-		Manual_create (query, theCurrentPraatApplication -> manPages, false);
+		autoManual manual = Manual_create (query, theCurrentPraatApplication -> manPages, false);
+		manual.releaseToUser();
 	} catch (MelderError) {
 		Melder_flushError (U"help: no help on \"", query, U"\".");
 	}
 }
 
-static int publishProc (void *anything) {
+static int publishProc (autoDaata me) {
 	try {
-		praat_new ((Data) anything, U"");
+		praat_new (me.move(), U"");
 		praat_updateSelection ();
 		return 1;
 	} catch (MelderError) {
@@ -828,11 +836,11 @@ DO
 	praat_exit (0);
 END
 
-static void gui_cb_quit (void *) {
-	DO_Quit (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+static void gui_cb_quit (Thing /* me */) {
+	DO_Quit (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 }
 
-void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
+void praat_dontUsePictureWindow () { praatP.dontUsePictureWindow = true; }
 
 /********** INITIALIZATION OF THE PRAAT SHELL **********/
 
@@ -841,7 +849,7 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 		Melder_assert (signum == SIGUSR1);
 		#if 0
 			gboolean retval;
-			g_signal_emit_by_name (GTK_OBJECT (theCurrentPraatApplication -> topShell -> d_gtkWindow), "client-event", NULL, & retval);
+			g_signal_emit_by_name (GTK_OBJECT (theCurrentPraatApplication -> topShell -> d_gtkWindow), "client-event", nullptr, & retval);
 		#else
 			#if ALLOW_GDK_DRAWING && ! defined (NO_GRAPHICS)
 				GdkEventClient gevent;
@@ -859,9 +867,7 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 
 #if defined (UNIX)
 	#if ALLOW_GDK_DRAWING && ! defined (NO_GRAPHICS)
-		static gboolean cb_userMessage (GtkWidget widget, GdkEventClient *event, gpointer user_data) {
-			(void) widget;
-			(void) user_data;
+		static gboolean cb_userMessage (GtkWidget /* widget */, GdkEventClient * /* event */, gpointer /* userData */) {
 			//Melder_casual (U"client event called");
 			autofile f;
 			try {
@@ -876,7 +882,7 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 			{// scope
 				autoPraatBackground background;
 				try {
-					praat_executeScriptFromFile (& messageFile, NULL);
+					praat_executeScriptFromFile (& messageFile, nullptr);
 				} catch (MelderError) {
 					Melder_flushError (praatP.title, U": message not completely handled.");
 				}
@@ -886,10 +892,10 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 		}
 	#endif
 #elif defined (_WIN32)
-	static int cb_userMessage (void) {
+	static int cb_userMessage () {
 		autoPraatBackground background;
 		try {
-			praat_executeScriptFromFile (& messageFile, NULL);
+			praat_executeScriptFromFile (& messageFile, nullptr);
 		} catch (MelderError) {
 			Melder_flushError (praatP.title, U": message not completely handled.");
 		}
@@ -898,65 +904,63 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 	extern "C" char *sendpraat (void *display, const char *programName, long timeOut, const char *text);
 	extern "C" wchar_t *sendpraatW (void *display, const wchar_t *programName, long timeOut, const wchar_t *text);
 	static void cb_openDocument (MelderFile file) {
-		char32 text [500];
+		char32 text [kMelder_MAXPATH+25];
 		/*
 		 * The user dropped a file on the Praat icon, while Praat is already running.
-		 * Windows may have enclosed the path between quotes;
-		 * this is especially likely to happen for a path that contains spaces.
 		 */
 		Melder_sprint (text,500, U"Read from file... ", file -> path);
-		sendpraatW (NULL, Melder_peek32toW (praatP.title), 0, Melder_peek32toW (text));
+		#ifdef __CYGWIN__
+			sendpraat (nullptr, Melder_peek32to8 (praatP.title), 0, Melder_peek32to8 (text));
+		#else
+			sendpraatW (nullptr, Melder_peek32toW (praatP.title), 0, Melder_peek32toW (text));
+		#endif
 	}
 #elif cocoa
 	static int (*theUserMessageCallback) (char32 *message);
 	static void mac_setUserMessageCallback (int (*userMessageCallback) (char32 *message)) {
 		theUserMessageCallback = userMessageCallback;
 	}
-	static pascal OSErr mac_processSignal8 (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		static int duringAppleEvent = FALSE;
-		(void) reply;
-		(void) handlerRefCon;
+	static pascal OSErr mac_processSignal8 (const AppleEvent *theAppleEvent, AppleEvent * /* reply */, long /* handlerRefCon */) {
+		static bool duringAppleEvent = false;   // FIXME: may have to be atomic?
 		if (! duringAppleEvent) {
 			char *buffer;
 			Size actualSize;
-			duringAppleEvent = TRUE;
-			//AEInteractWithUser (kNoTimeOut, NULL, NULL);   // use time out of 0 to execute immediately (without bringing to foreground)
+			duringAppleEvent = true;
+			//AEInteractWithUser (kNoTimeOut, nullptr, nullptr);   // use time out of 0 to execute immediately (without bringing to foreground)
 			ProcessSerialNumber psn;
 			GetCurrentProcess (& psn);
 			SetFrontProcess (& psn);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, NULL, NULL, 0, & actualSize);
+			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, nullptr, nullptr, 0, & actualSize);
 			buffer = (char *) malloc ((size_t) actualSize);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, NULL, & buffer [0], actualSize, NULL);
+			AEGetParamPtr (theAppleEvent, 1, typeUTF8Text, nullptr, & buffer [0], actualSize, nullptr);
 			if (theUserMessageCallback) {
 				autostring32 buffer32 = Melder_8to32 (buffer);
 				theUserMessageCallback (buffer32.peek());
 			}
 			free (buffer);
-			duringAppleEvent = FALSE;
+			duringAppleEvent = false;
 		}
 		return noErr;
 	}
-	static pascal OSErr mac_processSignal16 (const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefCon) {
-		static int duringAppleEvent = FALSE;
-		(void) reply;
-		(void) handlerRefCon;
+	static pascal OSErr mac_processSignal16 (const AppleEvent *theAppleEvent, AppleEvent * /* reply */, long /* handlerRefCon */) {
+		static bool duringAppleEvent = false;   // FIXME: may have to be atomic?
 		if (! duringAppleEvent) {
 			char16 *buffer;
 			Size actualSize;
-			duringAppleEvent = TRUE;
-			//AEInteractWithUser (kNoTimeOut, NULL, NULL);   // use time out of 0 to execute immediately (without bringing to foreground)
+			duringAppleEvent = true;
+			//AEInteractWithUser (kNoTimeOut, nullptr, nullptr);   // use time out of 0 to execute immediately (without bringing to foreground)
 			ProcessSerialNumber psn;
 			GetCurrentProcess (& psn);
 			SetFrontProcess (& psn);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, NULL, NULL, 0, & actualSize);
+			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, nullptr, nullptr, 0, & actualSize);
 			buffer = (char16 *) malloc ((size_t) actualSize);
-			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, NULL, & buffer [0], actualSize, NULL);
+			AEGetParamPtr (theAppleEvent, 1, typeUTF16ExternalRepresentation, nullptr, & buffer [0], actualSize, nullptr);
 			if (theUserMessageCallback) {
 				autostring32 buffer32 = Melder_16to32 (buffer);
 				theUserMessageCallback (buffer32.peek());
 			}
 			free (buffer);
-			duringAppleEvent = FALSE;
+			duringAppleEvent = false;
 		}
 		return noErr;
 	}
@@ -969,8 +973,8 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 		}
 		return 0;
 	}
-	static int cb_quitApplication (void) {
-		DO_Quit (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+	static int cb_quitApplication () {
+		DO_Quit (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 		return 0;
 	}
 #elif defined (macintosh)
@@ -983,31 +987,58 @@ void praat_dontUsePictureWindow (void) { praatP.dontUsePictureWindow = true; }
 		}
 		return 0;
 	}
-	static int cb_quitApplication (void) {
-		DO_Quit (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+	static int cb_quitApplication () {
+		DO_Quit (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 		return 0;
 	}
 #endif
 
-static const char32 * thePraatStandAloneScriptText = NULL;
+static const char32 * thePraatStandAloneScriptText = nullptr;
 
 void praat_setStandAloneScriptText (const char32 *text) {
 	thePraatStandAloneScriptText = text;
 }
 
-void praat_init (const char32 *title, unsigned int argc, char **argv) {
-	for (unsigned int iarg = 0; iarg < argc; iarg ++) {
-		//Melder_casual (U"arg ", iarg, U": <<", Melder_peek8to32 (argv [iarg]), U">>");
-	}
-	static char32 truncatedTitle [300];   // static because praatP.title will point into it
+static bool tryToAttachToTheCommandLine ()
+{
+	bool weHaveSucceeded = false;
+	#if defined (_WIN32)
+		/*
+		 * On Windows, console applications are automatically attached to the command line,
+		 * but Praat is always a Windows application instead, so command line attachment
+		 * has to be handled explicitly, as here.
+		 */
+		if (AttachConsole (ATTACH_PARENT_PROCESS)) {   // was Praat called from either a console window or a "system" command?
+			weHaveSucceeded = true;
+		}
+	#else
+		weHaveSucceeded = isatty (fileno (stdin)) || isatty (fileno (stdout)) || isatty (fileno (stderr));
+		/*
+			The result is `true` if Praat was called from a terminal window or some system() commands or Xcode,
+			and `false` if Praat was called from the Finder by double-clicking or dropping a file.
+			
+			FIXME:
+			The result is incorrectly `false` if the output is redirected to a file or pipe.
+			A proposed improvement is therefore:
+				isatty (fileno (stdin)) || isatty (fileno (stdout)) || isatty (fileno (stderr))
+			This might be incorrectly false only if all three streams are redirected, but this hasn't been tested yet.
+		*/
+	#endif
+	return weHaveSucceeded;
+}
+
+static void setThePraatLocale () {
 	#if defined (UNIX)
 		setlocale (LC_ALL, "C");
-		setenv ("PULSE_LATENCY_MSEC", "1", 0);   // Rafael Laboissiere, August 2014
+		//setenv ("PULSE_LATENCY_MSEC", "1", 0);   // Rafael Laboissiere, August 2014
 	#elif defined (_WIN32)
 		setlocale (LC_ALL, "C");   // said to be superfluous
 	#elif defined (macintosh)
 		setlocale (LC_ALL, "en_US");   // required to make swprintf work correctly; the default "C" locale does not do that!
 	#endif
+}
+
+static void getSystemVersion () {
 	#ifdef macintosh
 		SInt32 sys1, sys2, sys3;
 		Gestalt ('sys1', & sys1);
@@ -1015,21 +1046,16 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 		Gestalt ('sys3', & sys3);
 		Melder_systemVersion = sys1 * 10000 + sys2 * 100 + sys3;
 	#endif
-	/*
-		Initialize numerical libraries.
-	*/
+}
+
+static void initializeNumericalLibraries () {
 	NUMmachar ();
 	NUMinit ();
 	Melder_alloc_init ();
 	Melder_message_init ();
-	/*
-		Remember the current directory. Only useful for scripts run from batch.
-	*/
-	Melder_rememberShellDirectory ();
+}
 
-	/*
-	 * Install the preferences of the Praat shell, and set the defaults.
-	 */
+static void installPraatShellPreferences () {
 	praat_statistics_prefs ();   // number of sessions, memory used...
 	praat_picture_prefs ();   // font...
 	Graphics_prefs ();
@@ -1040,106 +1066,157 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 	Melder_textEncoding_prefs ();
 	Printer_prefs ();   // paper size, printer command...
 	structTextEditor :: f_preferences ();   // font size...
+}
 
-	uint32 iarg_batchName = 1;
-	const char32 *unknownCommandLineOption = nullptr;
+extern "C" void praatlib_init () {
+	setThePraatLocale ();   // FIXME: don't use the global locale
+	getSystemVersion ();
+	initializeNumericalLibraries ();
+	Melder_rememberShellDirectory ();
+	installPraatShellPreferences ();   // needed in the library, because this sets the defaults
+	praatP.argc = 0;
+	praatP.argv = nullptr;
+	praatP.argumentNumber = 1;
+	Melder_batch = true;
+	praatP.userWantsToOpen = false;
+	praatP.title = Melder_dup (U"Praatlib");
+	theCurrentPraatApplication -> batch = true;
+	Melder_getHomeDir (& homeDir);
+	praat_actions_init ();
+	praat_menuCommands_init ();
+	Thing_recognizeClassesByName (classCollection, classStrings, classManPages, classStringSet, nullptr);
+	Thing_recognizeClassByOtherName (classStringSet, U"SortedSetOfString");
+	Melder_backgrounding = true;
+	praat_addMenus (nullptr);
+	praat_addFixedButtons (nullptr);
+	praat_addMenus2 ();
+}
 
-	#if defined (UNIX) || defined (macintosh) || defined (_WIN32) && defined (CONSOLE_APPLICATION)
-		/*
-		 * Running the Praat shell from the Unix command line,
-		 * or running PRAATCON.EXE from the Windows command prompt:
-		 *    <programName> <scriptFileName>
-		 */
-		while (iarg_batchName < argc && argv [iarg_batchName] [0] == '-') {
-			if (strequ (argv [iarg_batchName], "-")) {
-				praatP.hasCommandLineInput = true;
-			} else if (strequ (argv [iarg_batchName], "-a") || strequ (argv [iarg_batchName], "--ansi")) {
-				Melder_consoleIsAnsi = true;
-				iarg_batchName += 1;
-			} else if (strequ (argv [iarg_batchName], "--no-pref-files")) {
-				praatP.ignorePreferenceFiles = true;
-				iarg_batchName += 1;
-			} else if (strequ (argv [iarg_batchName], "--no-plugins")) {
-				praatP.ignorePlugins = true;
-				iarg_batchName += 1;
-			} else if (strnequ (argv [iarg_batchName], "--pref-dir=", 11)) {
-				Melder_pathToDir (Melder_peek8to32 (argv [iarg_batchName] + 11), & praatDir);
-				iarg_batchName += 1;
-			#if defined (macintosh)
-			} else if (strequ (argv [iarg_batchName], "-NSDocumentRevisionsDebugMode")) {
-				(void) 0;   // ignore this option, which was added by Xcode
-				iarg_batchName += 2;   // jump over the argument, which is usually "YES" (this jump works correctly even if this argument is missing)
-			} else if (strnequ (argv [iarg_batchName], "-psn_", 5)) {
-				(void) 0;   // ignore this option, which was added by the Finder, perhaps when dragging a file on Praat (Process Serial Number)
-				iarg_batchName += 1;
-			#endif
-			} else {
-				unknownCommandLineOption = Melder_8to32 (argv [iarg_batchName]);
-				iarg_batchName = UINT32_MAX;   // ignore all other command line options
-				break;
-			}
-		}
+void praat_init (const char32 *title, int argc, char **argv)
+{
+	bool weWereStartedFromTheCommandLine = tryToAttachToTheCommandLine ();
 
-		/*
-		 * We now figure out the script file name, if there is any.
-		 * If there is a script file name, it is next on the command line
-		 * (not necessarily *last* on the line, because there may be script arguments after it).
-		 */
-		if (iarg_batchName < argc) {
-			MelderString_copy (& theCurrentPraatApplication -> batchName, Melder_peek8to32 (argv [iarg_batchName]));
-			if (praatP.hasCommandLineInput) Melder_throw (U"Cannot have both command line input and a script file.");
+	for (int iarg = 0; iarg < argc; iarg ++) {
+		//Melder_casual (U"arg ", iarg, U": <<", Melder_peek8to32 (argv [iarg]), U">>");
+	}
+	setThePraatLocale ();
+	getSystemVersion ();
+	initializeNumericalLibraries ();
+
+	/*
+		Remember the current directory. Useful only for scripts run from batch.
+	*/
+	Melder_rememberShellDirectory ();
+
+	installPraatShellPreferences ();
+
+	praatP.argc = argc;
+	praatP.argv = argv;
+	praatP.argumentNumber = 1;
+	const char32 *unknownCommandLineOption = nullptr;
+
+	/*
+	 * Running Praat from the command line.
+	 */
+	bool foundTheOpenOption = false, foundTheRunOption = false;
+	while (praatP.argumentNumber < argc && argv [praatP.argumentNumber] [0] == '-') {
+		if (strequ (argv [praatP.argumentNumber], "-")) {
+			praatP.hasCommandLineInput = true;
+		} else if (strequ (argv [praatP.argumentNumber], "--open")) {
+			foundTheOpenOption = true;
+			praatP.argumentNumber += 1;
+		} else if (strequ (argv [praatP.argumentNumber], "--run")) {
+			foundTheRunOption = true;
+			praatP.argumentNumber += 1;
+		} else if (strequ (argv [praatP.argumentNumber], "--no-pref-files")) {
+			praatP.ignorePreferenceFiles = true;
+			praatP.argumentNumber += 1;
+		} else if (strequ (argv [praatP.argumentNumber], "--no-plugins")) {
+			praatP.ignorePlugins = true;
+			praatP.argumentNumber += 1;
+		} else if (strnequ (argv [praatP.argumentNumber], "--pref-dir=", 11)) {
+			Melder_pathToDir (Melder_peek8to32 (argv [praatP.argumentNumber] + 11), & praatDir);
+			praatP.argumentNumber += 1;
+		} else if (strequ (argv [praatP.argumentNumber], "--version")) {
+			#define xstr(s) str(s)
+			#define str(s) #s
+			Melder_information (title, U" " xstr (PRAAT_VERSION_STR) " (" xstr (PRAAT_MONTH) " ", PRAAT_DAY, U" ", PRAAT_YEAR, U")");
+			exit (0);
+		} else if (strequ (argv [praatP.argumentNumber], "--help")) {
+			MelderInfo_open ();
+			MelderInfo_writeLine (U"Usage: praat [options] script-file-name [script-arguments]");
+			MelderInfo_writeLine (U"Options:");
+			MelderInfo_writeLine (U"  --open           regard the command line as files to be opened in the GUI");
+			MelderInfo_writeLine (U"  --run            regard the command line as a script to run, with its arguments");
+			MelderInfo_writeLine (U"                   (--run is superfluous when you use a Console or Terminal)");
+			MelderInfo_writeLine (U"  --no-pref-files  don't read or write the preferences file and the buttons file");
+			MelderInfo_writeLine (U"  --no-plugins     don't activate the plugins");
+			MelderInfo_writeLine (U"  --pref-dir=DIR   set the preferences directory to DIR");
+			MelderInfo_writeLine (U"  --version        print the Praat version");
+			MelderInfo_writeLine (U"  --help           print this list of command line options");
+			MelderInfo_writeLine (U"  -a, --ansi       Windows only: use ISO Latin-1 encoding instead of UTF-16LE");
+			MelderInfo_writeLine (U"                   (this option is needed when you redirect to a pipe or file");
+			MelderInfo_close ();
+			exit (0);
+		} else if (strequ (argv [praatP.argumentNumber], "-a") || strequ (argv [praatP.argumentNumber], "--ansi")) {
+			Melder_consoleIsAnsi = true;
+			praatP.argumentNumber += 1;
+		#if defined (macintosh)
+		} else if (strequ (argv [praatP.argumentNumber], "-NSDocumentRevisionsDebugMode")) {
+			(void) 0;   // ignore this option, which was added by Xcode
+			praatP.argumentNumber += 2;   // jump over the argument, which is usually "YES" (this jump works correctly even if this argument is missing)
+		} else if (strnequ (argv [praatP.argumentNumber], "-psn_", 5)) {
+			(void) 0;   // ignore this option, which was added by the Finder, perhaps when dragging a file on Praat (Process Serial Number)
+			praatP.argumentNumber += 1;
+		#endif
 		} else {
-			MelderString_copy (& theCurrentPraatApplication -> batchName, U"");
+			unknownCommandLineOption = Melder_8to32 (argv [praatP.argumentNumber]);
+			praatP.argumentNumber = INT32_MAX;   // ignore all other command line options
+			break;
 		}
+	}
+	weWereStartedFromTheCommandLine |= foundTheRunOption;   // some external system()-like commands don't make isatty return true, so we have to help
 
-		Melder_batch = theCurrentPraatApplication -> batchName.string [0] != U'\0' || thePraatStandAloneScriptText != NULL;
+	const bool thereIsAFileNameInTheArgumentList = ( praatP.argumentNumber < argc );
+	Melder_batch = weWereStartedFromTheCommandLine && thereIsAFileNameInTheArgumentList && ! foundTheOpenOption;
+	const bool fileNamesCameInByDropping = ( thereIsAFileNameInTheArgumentList && ! weWereStartedFromTheCommandLine );   // doesn't happen on the Mac
+	praatP.userWantsToOpen = foundTheOpenOption || fileNamesCameInByDropping;
 
-		#if defined (_WIN32) && defined (CONSOLE_APPLICATION)
-			if (! Melder_batch) {
-				fprintf (stderr, "Usage: PRAATCON <scriptFileName>\n");
-				exit (0);
-			}
-		#endif
+	if (Melder_batch) {
+		Melder_assert (praatP.argumentNumber < argc);
 		/*
-		 * Running the Praat shell from the command line:
-		 *    praat -
+		 * We now get the script file name. It is next on the command line
+		 * (not necessarily *last* on the line, because there may be script arguments after it).
 		 */
-		if (praatP.hasCommandLineInput) {
-			Melder_batch = true;
-		}
+		MelderString_copy (& theCurrentPraatApplication -> batchName, Melder_peek8to32 (argv [praatP.argumentNumber ++]));
+		if (praatP.hasCommandLineInput)
+			Melder_throw (U"Cannot have both command line input and a script file.");
+	} else {
+		MelderString_copy (& theCurrentPraatApplication -> batchName, U"");
+	}
+	//Melder_casual (U"Script file name <<", theCurrentPraatApplication -> batchName.string, U">>");
 
-		/* Take from 'title' ("myProg 3.2" becomes "myProg") or from command line ("/ifa/praat" becomes "praat"). */
-		str32cpy (truncatedTitle, argc && argv [0] [0] ? Melder_peek8to32 (argv [0]) : title && title [0] ? title : U"praat");
-		//Melder_fatal (U"<", argv [0], U">");
-	#else
-		#if defined (_WIN32)
-			MelderString_copy (& theCurrentPraatApplication -> batchName,
-				argv [3] ? Melder_peek8to32 (argv [3]) : U"");   // the command line
-		#endif
-		Melder_batch = false;   // PRAAT.EXE on Windows is always interactive
-		str32cpy (truncatedTitle, title && title [0] ? title : U"praat");
-	#endif
-	theCurrentPraatApplication -> batch = Melder_batch;
+	Melder_batch |= !! thePraatStandAloneScriptText;
 
 	/*
-	 * Construct a program name like "myProg 3.2" by removing directory path.
+	 * Running the Praat shell from the command line:
+	 *    praat -
 	 */
-	char32 *p = str32rchr (truncatedTitle, Melder_DIRECTORY_SEPARATOR);
-	praatP.title = p ? p + 1 : truncatedTitle;
+	Melder_batch |= praatP.hasCommandLineInput;
+
+	praatP.title = Melder_dup (title && title [0] ? title : U"Praat");
+
+	theCurrentPraatApplication -> batch = Melder_batch;
 
 	/*
 	 * Construct a program name like "myProg" for file and directory names.
 	 */
 	str32cpy (programName, praatP.title);
-	if ((p = str32chr (programName, U' ')) != NULL) *p = U'\0';
-	#if defined (_WIN32)
-		if ((p = str32chr (programName, U'.')) != NULL) *p = U'\0';   // chop off ".exe"
-	#endif
 
 	/*
 	 * Construct a main-window title like "MyProg 3.2".
 	 */
-	praatP.title [0] = (char32) toupper ((int) praatP.title [0]);
+	programName [0] = (char32) tolower ((int) programName [0]);
 
 	/*
 	 * Get home directory, e.g. "/home/miep/", or "/Users/miep/", or just "/".
@@ -1211,6 +1288,7 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 		#endif
 		Melder_tracingToFile (& tracingFile);
 	}
+
 	#if defined (UNIX)
 		if (! Melder_batch) {
 			/*
@@ -1231,17 +1309,10 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 		if (! Melder_batch)
 			motif_win_setUserMessageCallback (cb_userMessage);
 	#elif defined (macintosh)
-		#if useCarbon
-			if (! Melder_batch) {
-				motif_mac_setUserMessageCallback (cb_userMessage);
-				Gui_setQuitApplicationCallback (cb_quitApplication);
-			}
-		#else
-			if (! Melder_batch) {
-				mac_setUserMessageCallback (cb_userMessage);
-				Gui_setQuitApplicationCallback (cb_quitApplication);
-			}
-		#endif
+		if (! Melder_batch) {
+			mac_setUserMessageCallback (cb_userMessage);
+			Gui_setQuitApplicationCallback (cb_quitApplication);
+		}
 	#endif
 
 	/*
@@ -1252,20 +1323,16 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 	trace (U"initing menu commands");
 	praat_menuCommands_init ();
 
-	GuiWindow raam = NULL;
+	GuiWindow raam = nullptr;
 	if (Melder_batch) {
-		#if defined (UNIX) || defined (macintosh) || defined (_WIN32) && defined (CONSOLE_APPLICATION)
-			MelderString_empty (& theCurrentPraatApplication -> batchName);
-			for (unsigned int i = iarg_batchName; i < argc; i ++) {
-				int needsQuoting = strchr (argv [i], ' ') != NULL && (i == iarg_batchName || i < argc - 1);
-				if (i > 1) MelderString_append (& theCurrentPraatApplication -> batchName, U" ");
-				if (needsQuoting) MelderString_append (& theCurrentPraatApplication -> batchName, U"\"");
-				MelderString_append (& theCurrentPraatApplication -> batchName, Melder_peek8to32 (argv [i]));
-				if (needsQuoting) MelderString_append (& theCurrentPraatApplication -> batchName, U"\"");
-			}
-		#elif defined (_WIN32)
-			MelderString_copy (& theCurrentPraatApplication -> batchName, Melder_peek8to32 (argv [3]));
-		#endif
+		MelderString_empty (& theCurrentPraatApplication -> batchName);
+		for (int i = praatP.argumentNumber - 1; i < argc; i ++) {
+			if (i >= praatP.argumentNumber) MelderString_append (& theCurrentPraatApplication -> batchName, U" ");
+			bool needsQuoting = !! strchr (argv [i], ' ') && (i == praatP.argumentNumber - 1 || i < argc - 1);
+			if (needsQuoting) MelderString_append (& theCurrentPraatApplication -> batchName, U"\"");
+			MelderString_append (& theCurrentPraatApplication -> batchName, Melder_peek8to32 (argv [i]));
+			if (needsQuoting) MelderString_append (& theCurrentPraatApplication -> batchName, U"\"");
+		}
 	} else {
 		trace (U"starting the application");
 		Machine_initLookAndFeel (argc, argv);
@@ -1273,56 +1340,52 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 		 * Start the application.
 		 */
 		#if gtk
-			trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+			trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 			g_set_application_name (Melder_peek32to8 (title));
-			trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+			trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		#elif cocoa
 			//[NSApplication sharedApplication];
 			[GuiCocoaApplication sharedApplication];
 		#elif defined (_WIN32)
 			argv [0] = Melder_32to8 (praatP. title);   // argc == 4
 			Gui_setOpenDocumentCallback (cb_openDocument);
-			GuiAppInitialize ("Praatwulg", NULL, 0, & argc, argv, NULL, NULL);
+			GuiAppInitialize ("Praatwulg", argc, argv);
 		#elif defined (macintosh)
-			GuiAppInitialize ("Praatwulg", NULL, 0, & argc, argv, NULL, NULL);
+			GuiAppInitialize ("Praatwulg", argc, argv);
 		#endif
 
 		trace (U"creating and installing the Objects window");
 		char32 objectWindowTitle [100];
 		Melder_sprint (objectWindowTitle,100, praatP.title, U" Objects");
 		double x, y;
-		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
-		Gui_getWindowPositioningBounds (& x, & y, NULL, NULL);
-		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
-		theCurrentPraatApplication -> topShell = raam = GuiWindow_create (x + 10, y, WINDOW_WIDTH, WINDOW_HEIGHT, 450, 250,
-			objectWindowTitle, gui_cb_quit, NULL, 0);
-		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+		Gui_getWindowPositioningBounds (& x, & y, nullptr, nullptr);
+		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+		theCurrentPraatApplication -> topShell = raam =
+			GuiWindow_create (x + 10, y, WINDOW_WIDTH, WINDOW_HEIGHT, 450, 250,
+				objectWindowTitle, gui_cb_quit, nullptr, 0);
+		trace (U"locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		#if motif
 			GuiApp_setApplicationShell (theCurrentPraatApplication -> topShell -> d_xmShell);
 		#endif
-		trace (U"before objects window shows locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"before objects window shows locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		GuiThing_show (raam);
-		trace (U"after objects window shows locale ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"after objects window shows locale ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 	}
-	Thing_recognizeClassesByName (classCollection, classStrings, classManPages, classSortedSetOfString, NULL);
+	Thing_recognizeClassesByName (classCollection, classStrings, classManPages, classStringSet, nullptr);
+	Thing_recognizeClassByOtherName (classStringSet, U"SortedSetOfString");
 	if (Melder_batch) {
 		Melder_backgrounding = true;
 		trace (U"adding menus without GUI");
-		praat_addMenus (NULL);
+		praat_addMenus (nullptr);
 		trace (U"adding fixed buttons without GUI");
-		praat_addFixedButtons (NULL);
+		praat_addFixedButtons (nullptr);
 	} else {
 
 		#ifdef macintosh
-			#if ! useCarbon
-				AEInstallEventHandler (758934755, 0, (AEEventHandlerProcPtr) (mac_processSignal8), 0, false);   // for receiving sendpraat
-				AEInstallEventHandler (758934756, 0, (AEEventHandlerProcPtr) (mac_processSignal16), 0, false);   // for receiving sendpraatW
-			#endif
-			MelderGui_create (raam);   /* BUG: default Melder_assert would call printf recursively!!! */
-		#endif
-		#if defined (macintosh) && useCarbon
-			trace (U"creating the menu bar along the top of the screen (Mac only)");
-			GuiWindow_addMenuBar (raam);   // yes, on the Mac we create a menu bar twice: once at the top of the screen, once in the Objects window
+			AEInstallEventHandler (758934755, 0, (AEEventHandlerProcPtr) (mac_processSignal8), 0, false);   // for receiving sendpraat
+			AEInstallEventHandler (758934756, 0, (AEEventHandlerProcPtr) (mac_processSignal16), 0, false);   // for receiving sendpraatW
+			MelderGui_create (raam);   // BUG: default Melder_assert would call printf recursively!!!
 		#endif
 		trace (U"creating the menu bar in the Objects window");
 		GuiWindow_addMenuBar (raam);
@@ -1332,7 +1395,7 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 		trace (U"creating the object list in the Objects window");
 		GuiLabel_createShown (raam, 3, -250, Machine_getMainWindowMenuBarHeight () + 5, Machine_getMainWindowMenuBarHeight () + 5 + Gui_LABEL_HEIGHT, U"Objects:", 0);
 		praatList_objects = GuiList_create (raam, 0, -250, Machine_getMainWindowMenuBarHeight () + 26, -100, true, U" Objects ");
-		GuiList_setSelectionChangedCallback (praatList_objects, gui_cb_list, 0);
+		GuiList_setSelectionChangedCallback (praatList_objects, gui_cb_list_selectionChanged, nullptr);
 		GuiThing_show (praatList_objects);
 		praat_addFixedButtons (raam);
 
@@ -1359,19 +1422,19 @@ void praat_init (const char32 *title, unsigned int argc, char **argv) {
 				Preferences_read (& prefsFile);
 			}
 		#endif
-		#if ! defined (CONSOLE_APPLICATION) && ! defined (macintosh)
+		#if ! defined (macintosh)
 			trace (U"initializing the Gui late");
 			MelderGui_create (theCurrentPraatApplication -> topShell);   // Mac: done this earlier
 		#endif
 		Melder_setHelpProc (helpProc);
 	}
-	Melder_setPublishProc (publishProc);
-	theCurrentPraatApplication -> manPages = ManPages_create ();
+	Data_setPublishProc (publishProc);
+	theCurrentPraatApplication -> manPages = ManPages_create ().releaseToAmbiguousOwner();
 
 	trace (U"creating the Picture window");
-	trace (U"before picture window shows: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+	trace (U"before picture window shows: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 	if (! praatP.dontUsePictureWindow) praat_picture_init ();
-	trace (U"after picture window shows: locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+	trace (U"after picture window shows: locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 
 	if (unknownCommandLineOption) {
 		Melder_fatal (U"Unrecognized command line option ", unknownCommandLineOption);
@@ -1387,7 +1450,7 @@ static void executeStartUpFile (MelderDir startUpDirectory, const char32 *fileNa
 		if (! MelderFile_readable (& startUp))
 			return;   // it's OK if the file doesn't exist
 		try {
-			praat_executeScriptFromFile (& startUp, NULL);
+			praat_executeScriptFromFile (& startUp, nullptr);
 		} catch (MelderError) {
 			Melder_flushError (praatP.title, U": start-up file ", & startUp, U" not completed.");
 		}
@@ -1401,7 +1464,11 @@ static void executeStartUpFile (MelderDir startUpDirectory, const char32 *fileNa
 			trace (U"keyval ", event -> keyval, U", type ", event -> type);
 			if ((event -> keyval == GDK_Tab || event -> keyval == GDK_ISO_Left_Tab) && event -> type == GDK_KEY_PRESS) {
 				trace (U"tab key pressed in window ", Melder_pointer (widget));
-				if ((event -> state & GDK_MODIFIER_MASK) == 0) {
+				constexpr bool theTabKeyShouldWorkEvenIfNumLockIsOn = true;
+				constexpr uint32 theProbableNumLockModifierMask = GDK_MOD2_MASK;
+				constexpr uint32 modifiersToIgnore = ( theTabKeyShouldWorkEvenIfNumLockIsOn ? theProbableNumLockModifierMask : 0 );
+				constexpr uint32 modifiersNotToIgnore = GDK_MODIFIER_MASK & ~ modifiersToIgnore;
+				if ((event -> state & modifiersNotToIgnore) == 0) {
 					if (GTK_IS_WINDOW (widget)) {
 						GtkWidget *shell = gtk_widget_get_toplevel (GTK_WIDGET (widget));
 						trace (U"tab pressed in GTK window ", Melder_pointer (shell));
@@ -1410,10 +1477,10 @@ static void executeStartUpFile (MelderDir startUpDirectory, const char32 *fileNa
 							trace (U"a tab callback exists");
 							void *tabClosure = g_object_get_data (G_OBJECT (widget), "tabClosure");
 							tabCallback (widget, tabClosure);
-							return TRUE;
+							return true;
 						}
 					}
-				} else if ((event -> state & GDK_MODIFIER_MASK) == GDK_SHIFT_MASK) {
+				} else if ((event -> state & modifiersNotToIgnore) == GDK_SHIFT_MASK) {
 					if (GTK_IS_WINDOW (widget)) {
 						GtkWidget *shell = gtk_widget_get_toplevel (GTK_WIDGET (widget));
 						trace (U"shift-tab pressed in GTK window ", Melder_pointer (shell));
@@ -1422,29 +1489,25 @@ static void executeStartUpFile (MelderDir startUpDirectory, const char32 *fileNa
 							trace (U"a shift tab callback exists");
 							void *tabClosure = g_object_get_data (G_OBJECT (widget), "shiftTabClosure");
 							tabCallback (widget, tabClosure);
-							return TRUE;
+							return true;
 						}
 					}
 				}
 			}
 			trace (U"end");
-			return FALSE;   // pass event on
+			return false;   // pass event on
 		}
 	#endif
 #endif
 
-void praat_run (void) {
+void praat_run () {
 	trace (U"adding menus, second round");
 	praat_addMenus2 ();
-	trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+	trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 
 	trace (U"adding the Quit command");
-	#if defined (macintosh) && useCarbon
-		praat_addMenuCommand (U"Objects", U"Praat", U"Quit", 0, praat_HIDDEN, DO_Quit);   // the Quit command is needed for scripts, not for the GUI
-	#else
-		praat_addMenuCommand (U"Objects", U"Praat", U"-- quit --", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"Praat", U"Quit", 0, praat_UNHIDABLE + 'Q', DO_Quit);
-	#endif
+	praat_addMenuCommand (U"Objects", U"Praat", U"-- quit --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Quit", nullptr, praat_UNHIDABLE + 'Q', DO_Quit);
 
 	trace (U"read the preferences file, and notify those who want to be notified of this");
 	/* ...namely, those who already have a window (namely, the Picture window),
@@ -1477,7 +1540,7 @@ void praat_run (void) {
 
 	if (! MelderDir_isNull (& praatDir) && ! praatP.ignorePlugins) {
 		trace (U"install plug-ins");
-		trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		/* The Praat phase should remain praat_STARTING_UP,
 		 * because any added commands must not be included in the buttons file.
 		 */
@@ -1487,14 +1550,14 @@ void praat_run (void) {
 			autoStrings directoryNames = Strings_createAsDirectoryList (Melder_fileToPath (& searchPattern));
 			if (directoryNames -> numberOfStrings > 0) {
 				for (long i = 1; i <= directoryNames -> numberOfStrings; i ++) {
-					structMelderDir pluginDir = { { 0 } };
-					structMelderFile plugin = { 0 };
+					structMelderDir pluginDir { { 0 } };
+					structMelderFile plugin { 0 };
 					MelderDir_getSubdir (& praatDir, directoryNames -> strings [i], & pluginDir);
 					MelderDir_getFile (& pluginDir, U"setup.praat", & plugin);
 					if (MelderFile_readable (& plugin)) {
 						Melder_backgrounding = true;
 						try {
-							praat_executeScriptFromFile (& plugin, NULL);
+							praat_executeScriptFromFile (& plugin, nullptr);
 						} catch (MelderError) {
 							Melder_flushError (praatP.title, U": plugin ", & plugin, U" contains an error.");
 						}
@@ -1538,15 +1601,15 @@ void praat_run (void) {
 		Melder_assert (str32len (U"hello") == 5);
 		Melder_assert (str32ncmp (U"hellogoodbye", U"hellogee", 6) == 0);
 		Melder_assert (str32ncmp (U"hellogoodbye", U"hellogee", 7) > 0);
-		Melder_assert (str32str (U"hellogoodbye", U"ogo") != NULL);
-		Melder_assert (str32str (U"hellogoodbye", U"oygo") == NULL);
+		Melder_assert (str32str (U"hellogoodbye", U"ogo"));
+		Melder_assert (! str32str (U"hellogoodbye", U"oygo"));
 	}
 
 	if (sizeof (off_t) < 8)
 		Melder_fatal (U"sizeof(off_t) is less than 8. Compile Praat with -D_FILE_OFFSET_BITS=64.");
 
 	if (Melder_batch) {
-		if (thePraatStandAloneScriptText != NULL) {
+		if (thePraatStandAloneScriptText) {
 			try {
 				praat_executeScriptFromText (thePraatStandAloneScriptText);
 				praat_exit (0);
@@ -1564,22 +1627,12 @@ void praat_run (void) {
 			}
 		} else {
 			try {
+				//Melder_casual (U"Script <<", theCurrentPraatApplication -> batchName.string, U">>");
 				praat_executeScriptFromFileNameWithArguments (theCurrentPraatApplication -> batchName.string);
 				praat_exit (0);
 			} catch (MelderError) {
-				/*
-				 * Try to get the error message out; this is a bit complicated...
-				 */
-				structMelderFile batchFile { 0 };
-				try {
-					Melder_relativePathToFile (theCurrentPraatApplication -> batchName.string, & batchFile);
-				} catch (MelderError) {
-					praat_exit (-1);
-				}
-				#if defined (_WIN32) && ! defined (CONSOLE_APPLICATION)
-					MelderGui_create (NULL);
-				#endif
-				Melder_flushError (praatP.title, U": command file ", & batchFile, U" not completed.");
+				Melder_flushError (praatP.title, U": script command <<",
+					theCurrentPraatApplication -> batchName.string, U">> not completed.");
 				praat_exit (-1);
 			}
 		}
@@ -1602,11 +1655,11 @@ void praat_run (void) {
 						char32 *newline = str32chr (line, U'\n');
 						if (newline) *newline = U'\0';
 						try {
-							praat_executeCommand (NULL, line);
+							praat_executeCommand (nullptr, line);
 						} catch (MelderError) {
 							Melder_clearError ();   // ignore this line, but not necessarily the next
 						}
-						if (newline == NULL) break;
+						if (! newline) break;
 						line = newline + 1;
 					}
 				}
@@ -1614,69 +1667,43 @@ void praat_run (void) {
 		}
 
 		trace (U"sorting the commands");
-		trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+		trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 		praat_sortMenuCommands ();
 		praat_sortActions ();
 
+		if (praatP.userWantsToOpen) {
+			for (; praatP.argumentNumber < praatP.argc; praatP.argumentNumber ++) {
+				//Melder_casual (U"File to open <<", Melder_peek8to32 (theArgv [iarg]), U">>");
+				autostring32 text = Melder_dup (Melder_cat (U"Read from file... ",
+															Melder_peek8to32 (praatP.argv [praatP.argumentNumber])));
+				try {
+					praat_executeScriptFromText (text.peek());
+				} catch (MelderError) {
+					Melder_flushError ();
+				}
+			}
+		}
+
 		praatP.phase = praat_HANDLING_EVENTS;
 
 		#if gtk
 			//gtk_widget_add_events (G_OBJECT (theCurrentPraatApplication -> topShell), GDK_ALL_EVENTS_MASK);
 			trace (U"install GTK key snooper");
-			trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+			trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 			#if ALLOW_GDK_DRAWING
-				g_signal_connect (G_OBJECT (theCurrentPraatApplication -> topShell -> d_gtkWindow), "client-event", G_CALLBACK (cb_userMessage), NULL);
+				g_signal_connect (G_OBJECT (theCurrentPraatApplication -> topShell -> d_gtkWindow), "client-event",
+					G_CALLBACK (cb_userMessage), nullptr);
 			#endif
 			signal (SIGUSR1, cb_sigusr1);
 			#if ALLOW_GDK_DRAWING
 				gtk_key_snooper_install (theKeySnooper, 0);
 			#endif
 			trace (U"start the GTK event loop");
-			trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+			trace (U"locale is ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
 			gtk_main ();
 		#elif cocoa
 			[NSApp run];
 		#elif motif
-			#if defined (_WIN32)
-				if (theCurrentPraatApplication -> batchName.string [0] != U'\0') {
-					char32 text [500];
-					/*
-					 * The user dropped one or more files on the Praat icon, while Praat was not running yet.
-					 * Windows may have enclosed each path between quotes;
-					 * this is especially likely to happen for paths that contain spaces (which is usual).
-					 */
-
-					char32 *s = theCurrentPraatApplication -> batchName.string;
-					for (;;) {
-						bool endSeen = false;
-						while (*s == U' ' || *s == U'\n') s ++;
-						if (*s == '\0') break;
-						char32 *path = s;
-						if (*s == U'\"') {
-							path = ++ s;
-							while (*s != U'\"' && *s != U'\0') s ++;
-							if (*s == '\0') break;
-							Melder_assert (*s == U'\"');
-							*s = U'\0';
-						} else {
-							while (*s != U' ' && *s != U'\n' && *s != U'\0') s ++;
-							if (*s == U' ' || *s == U'\n') {
-								*s = U'\0';
-							} else {
-								endSeen = true;
-							}
-						}
-						autostring32 text = Melder_dup (Melder_cat (U"Read from file... ", path));
-						try {
-							praat_executeScriptFromText (text.peek());
-						} catch (MelderError) {
-							Melder_flushError ();
-						}
-						if (endSeen) break;
-						s ++;
-					}
-				}
-			#endif
 			for (;;) {
 				XEvent event;
 				GuiNextEvent (& event);
diff --git a/sys/praat.h b/sys/praat.h
index 9035ed4..458da6c 100644
--- a/sys/praat.h
+++ b/sys/praat.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Editor.h"
@@ -32,7 +31,7 @@
 
 /* Program example:
 // File main_Sybil.cpp: //
-int main (unsigned int argc, char **argv)
+int main (int argc, char **argv)
 {
 	praat_init (U"Praat_Sybil", argc, argv);   // Obligatory.
 	INCLUDE_LIBRARY (praat_Fon_init)   // Optional: inherit phonetic stuff.
@@ -56,13 +55,14 @@ To make any class string-readable, use Thing_recognizeClassesByName ().
 String-readable classes are known by Thing_newFromClassName () and can therefore
 be read by Data_readFromTextFile () and Data_readFromBinaryFile ().
 */
-void praat_init (const char32 *title, unsigned int argc, char **argv);
-void praat_run (void);
+void praat_init (const char32 *title, int argc, char **argv);
+void praat_run ();
 void praat_setStandAloneScriptText (const char32 *text);   // call before praat_init if you want to create a stand-alone application without Objects and Picture window
+extern "C" void praatlib_init ();   // for use in an application that uses Praatlib
 
 void praat_addAction (ClassInfo class1, int n1, ClassInfo class2, int n2, ClassInfo class3, int n3,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback);
-/* 'class2', 'class3', 'title', 'after', and 'callback' may be NULL; 'title' is reference-copied. */
+/* 'class2', 'class3', 'title', 'after', and 'callback' may be null; 'title' is reference-copied. */
 void praat_addAction1 (ClassInfo class1, int n1,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback);
 void praat_addAction2 (ClassInfo class1, int n1, ClassInfo class2, int n2,
@@ -79,7 +79,7 @@ void praat_addAction4 (ClassInfo class1, int n1, ClassInfo class2, int n2, Class
 		this function should throw an exception if the command failed,
 		and return 1 if the command was executed successfully;
 		this function will be called by 'praat' when the user clicks a menu command,
-		in which case 'sendingForm', 'args' and 'sendingString' and 'closure' will be NULL;
+		in which case 'sendingForm', 'args' and 'sendingString' and 'closure' will be null;
 		it is also called by scripts,
 		in which case 'args[1..n]' or 'sendingString' is the argument list (after the dots).
 		When called by Ui (after UiForm_create), 'sendingForm' is the UiForm, and 'closure'
@@ -113,18 +113,18 @@ void praat_addAction4 (ClassInfo class1, int n1, ClassInfo class2, int n2, Class
 #define praat_DEPTH_7  0x00070000
 #define praat_CTRL  0x00200000
 void praat_removeAction (ClassInfo class1, ClassInfo class2, ClassInfo class3, const char32 *title);
-	/* 'class2' and 'class3' may be NULL. */
-	/* 'title' may be NULL; reference-copied. */
+	/* 'class2' and 'class3' may be null. */
+	/* 'title' may be null; reference-copied. */
 
 GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, const char32 *title /* cattable */,
 	const char32 *after, unsigned long flags, UiCallback callback);
-/* All strings are reference-copied; 'title', 'after', and 'callback' may be NULL. */
+/* All strings are reference-copied; 'title', 'after', and 'callback' may be null. */
 
 #define praat_MAXNUM_EDITORS 5
 #include "Ui.h"
 typedef struct {
 	ClassInfo klas;   // the class
-	Data object;   // the instance
+	Daata object;   // the instance
 	char32 *name;   // the name of the object as it appears in the List
 	structMelderFile file;   // is this Object associated with a file?
 	long id;   // the unique number of the object
@@ -148,7 +148,7 @@ typedef struct {   /* Readonly */
 	int totalBeingCreated;
 	long uniqueId;
 } structPraatObjects, *PraatObjects;
-typedef struct {   /* Readonly */
+typedef struct {   // readonly
 	Graphics graphics;   /* The Graphics associated with the Picture window or HyperPage window or Demo window. */
 	int font, fontSize, lineType;
 	Graphics_Colour colour;
@@ -162,24 +162,24 @@ extern structPraatPicture theForegroundPraatPicture;
 extern PraatPicture theCurrentPraatPicture;
 	/* The global objects containing the state of the application; only reachable from interface files. */
 
-Data praat_onlyObject (ClassInfo klas);
-	/* Returns a selected Data of class 'klas'. */
-Data praat_onlyObject_generic (ClassInfo klas);
-	/* Returns a selected Data of class 'klas' or a subclass. */
-praat_Object praat_onlyScreenObject (void);
+Daata praat_onlyObject (ClassInfo klas);
+	/* Returns a selected Daata of class 'klas'. */
+Daata praat_onlyObject_generic (ClassInfo klas);
+	/* Returns a selected Daata of class 'klas' or a subclass. */
+praat_Object praat_onlyScreenObject ();
 char32 *praat_name (int iobject);
-void praat_write_do (Any dia, const char32 *extension);
-void praat_new (Data me);
-void praat_new (Data me, Melder_1_ARG);
-void praat_new (Data me, Melder_2_ARGS);
-void praat_new (Data me, Melder_3_ARGS);
-void praat_new (Data me, Melder_4_ARGS);
-void praat_new (Data me, Melder_5_ARGS);
-void praat_new (Data me, Melder_6_ARGS);
-void praat_new (Data me, Melder_7_ARGS);
-void praat_new (Data me, Melder_8_ARGS);
-void praat_new (Data me, Melder_9_ARGS);
-void praat_newWithFile (Data me, MelderFile file, const char32 *name);
+void praat_write_do (UiForm dia, const char32 *extension);
+void praat_new (autoDaata me);
+void praat_new (autoDaata me, Melder_1_ARG);
+void praat_new (autoDaata me, Melder_2_ARGS);
+void praat_new (autoDaata me, Melder_3_ARGS);
+void praat_new (autoDaata me, Melder_4_ARGS);
+void praat_new (autoDaata me, Melder_5_ARGS);
+void praat_new (autoDaata me, Melder_6_ARGS);
+void praat_new (autoDaata me, Melder_7_ARGS);
+void praat_new (autoDaata me, Melder_8_ARGS);
+void praat_new (autoDaata me, Melder_9_ARGS);
+void praat_newWithFile (autoDaata me, MelderFile file, const char32 *name);
 void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 
 /* Macros for description of forms (dialog boxes).
@@ -188,7 +188,7 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 	FORM (proc, title, helpString)
 		'proc' is the 'cb' argument of the corresponding VERB macro.
 		'title' is the title of the standard dialog, shown in its title bar.
-		'helpString' may be NULL.
+		'helpString' may be null.
 	INTEGER (name, initialString)
 	NATURAL (name, initialString)
 	REAL (name, initialString)
@@ -243,8 +243,8 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 #define FORM(proc,name,helpTitle) \
 	static void DO_##proc (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *buttonClosure) { \
 		static UiForm dia; \
-		if (dia == NULL) { \
-			Any radio = 0; \
+		if (! dia) { \
+			UiField radio = nullptr; \
 			(void) radio; \
 			dia = UiForm_create (theCurrentPraatApplication -> topShell, name, DO_##proc, buttonClosure, invokingButtonTitle, helpTitle);
 #define REAL(label,def)		UiForm_addReal (dia, label, def);
@@ -276,8 +276,8 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 #define FILE_OUT(label,def)	UiForm_addFileOut (dia, label, def);
 #define COLOUR(label,def)	UiForm_addColour (dia, label, def);
 #define CHANNEL(label,def)	UiForm_addChannel (dia, label, def);
-#define OK UiForm_finish (dia); } if (sendingForm == NULL && args == NULL && sendingString == NULL) {
-#define OK2 } UiForm_finish (dia); } if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+#define OK UiForm_finish (dia); } if (! sendingForm && ! args && ! sendingString) {
+#define OK2 } UiForm_finish (dia); } if (! sendingForm && ! args && ! sendingString) {
 #define SET_REAL(name,value)	UiForm_setReal (dia, name, value);
 #define SET_INTEGER(name,value)	UiForm_setInteger (dia, name, value);
 #define SET_STRING(name,value)	UiForm_setString (dia, name, value);
@@ -285,7 +285,7 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 
 #define DO \
 			UiForm_do (dia, modified); \
-		} else if (sendingForm == NULL) { \
+		} else if (! sendingForm) { \
 			trace (U"args ", Melder_pointer (args)); \
 			if (args) { \
 				UiForm_call (dia, narg, args, interpreter); \
@@ -300,7 +300,7 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 
 #define DO_ALTERNATIVE(alternative) \
 			UiForm_do (dia, modified); \
-		} else if (sendingForm == NULL) { \
+		} else if (! sendingForm) { \
 			trace (U"alternative args ", Melder_pointer (args)); \
 			try { \
 				if (args) { \
@@ -312,7 +312,7 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 				char32 *parkedError = Melder_dup_f (Melder_getError ()); \
 				Melder_clearError (); \
 				try { \
-					DO_##alternative (NULL, narg, args, sendingString, interpreter, invokingButtonTitle, modified, buttonClosure); \
+					DO_##alternative (nullptr, narg, args, sendingString, interpreter, invokingButtonTitle, modified, buttonClosure); \
 				} catch (MelderError) { \
 					Melder_clearError (); \
 					Melder_appendError (parkedError); \
@@ -365,17 +365,17 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 #define FORM_READ2(proc,title,help,allowMult) \
 	static void DO_##proc (UiForm sendingForm, int, Stackel args, const char32 *sendingString, Interpreter, const char32 *invokingButtonTitle, bool, void *okClosure) { \
 		static UiForm dia; \
-		if (dia == NULL) \
+		if (! dia) \
 			dia = UiInfile_create (theCurrentPraatApplication -> topShell, title, DO_##proc, okClosure, invokingButtonTitle, help, allowMult); \
-		if (sendingForm == NULL && args == NULL && sendingString == NULL) { \
+		if (! sendingForm && ! args && ! sendingString) { \
 			UiInfile_do (dia); \
 		} else { \
 			try { \
 				MelderFile file; \
 				int IOBJECT = 0; \
-				structMelderFile file2 = { 0 }; \
+				structMelderFile file2 { 0 }; \
 				(void) IOBJECT; \
-				if (args == NULL && sendingString == NULL) { \
+				if (! args && ! sendingString) { \
 					file = UiFile_getFile (dia); \
 				} else { \
 					Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); \
@@ -384,18 +384,18 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 
 #define FORM_WRITE(proc,title,help,ext) \
 	static void DO_##proc (UiForm sendingForm, int, Stackel args, const char32 *sendingString, Interpreter, const char32 *invokingButtonTitle, bool, void *okClosure) { \
-		static Any dia; \
-		if (dia == NULL) \
+		static UiForm dia; \
+		if (! dia) \
 			dia = UiOutfile_create (theCurrentPraatApplication -> topShell, title, DO_##proc, okClosure, invokingButtonTitle, help); \
-		if (sendingForm == NULL && args == NULL && sendingString == NULL) { \
+		if (! sendingForm && ! args && ! sendingString) { \
 			praat_write_do (dia, ext); \
 		} else { \
 			try { \
 				MelderFile file; \
 				int IOBJECT = 0; \
-				structMelderFile file2 = { 0 }; \
+				structMelderFile file2 { 0 }; \
 				(void) IOBJECT; \
-				if (args == NULL && sendingString == NULL) { \
+				if (! args && ! sendingString) { \
 					file = UiFile_getFile (dia); \
 				} else { \
 					Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); \
@@ -405,18 +405,18 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 
 #define FORM_WRITE2(proc,title,help,ext) \
 	static void DO_##proc (UiForm sendingForm, int, Stackel args, const char32 *sendingString, Interpreter, const char32 *invokingButtonTitle, bool, void *okClosure) { \
-		static Any dia; \
-		if (dia == NULL) \
+		static UiForm dia; \
+		if (! dia) \
 			dia = UiOutfile_create (theCurrentPraatApplication -> topShell, title, DO_##proc, okClosure, invokingButtonTitle, help); \
-		if (sendingForm == NULL && args == NULL && sendingString == NULL) { \
+		if (! sendingForm && ! args && ! sendingString) { \
 			praat_write_do (dia, ext); \
 		} else { \
 			try { \
 				MelderFile file; \
 				int IOBJECT = 0; \
-				structMelderFile file2 = { 0 }; \
+				structMelderFile file2 { 0 }; \
 				(void) IOBJECT; \
-				if (args == NULL && sendingString == NULL) { \
+				if (! args && ! sendingString) { \
 					file = UiFile_getFile (dia); \
 				} else { \
 					Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); \
@@ -459,9 +459,9 @@ void praat_name2 (char32 *name, ClassInfo klas1, ClassInfo klas2);
 #define ONLY(klas)  praat_onlyObject (klas)
 #define ONLY_GENERIC(klas)  praat_onlyObject_generic (klas)
 #define ONLY_OBJECT  (praat_onlyScreenObject () -> object)
-Data praat_firstObject (ClassInfo klas);
-Data praat_firstObject_generic (ClassInfo klas);
-Data praat_firstObject_any ();
+Daata praat_firstObject (ClassInfo klas);
+Daata praat_firstObject_generic (ClassInfo klas);
+Daata praat_firstObject_any ();
 #define FIRST(Klas)  (Klas) praat_firstObject (class##Klas)
 #define FIRST_GENERIC(Klas)  (Klas) praat_firstObject_generic (class##Klas)
 #define FIRST_ANY(Klas)  (Klas) praat_firstObject_any ()
@@ -471,14 +471,14 @@ Data praat_firstObject_any ();
 
 /* Used by praat_Sybil.cpp, if you put an Editor on the screen: */
 int praat_installEditor (Editor editor, int iobject);
-/* This routine adds a reference to a new editor (unless it is NULL) to the screen object
+/* This routine adds a reference to a new editor (unless it is null) to the screen object
    which is in the list at position 'iobject'.
    It sets the destroyCallback and dataChangedCallback as appropriate for Praat:
-   the destroyCallback will set the now dangling reference to NULL,
+   the destroyCallback will set the now dangling reference to nullptr,
    so that a subsequent click on the "Edit" button will create a new editor;
    the dataChangedCallback will notify an open DataEditor with the same data,
    after that data will have changed.
-      Return value: normally 1, but 0 if 'editor' is NULL.
+      Return value: normally 1, but 0 if 'editor' is null.
    A typical calling sequence is:
 	DIRECT (Spectrogram_edit)
 		if (praat.batch) Melder_throw (U"Cannot edit a Spectrogram from batch.");
@@ -489,9 +489,9 @@ int praat_installEditor (Editor editor, int iobject);
 */
 int praat_installEditor2 (Editor editor, int iobject1, int iobject2);
 int praat_installEditor3 (Editor editor, int iobject1, int iobject2, int iobject3);
-int praat_installEditorN (Editor editor, Ordered objects);
+int praat_installEditorN (Editor editor, DaataList objects);
 
-void praat_dataChanged (Any object);
+void praat_dataChanged (Daata object);
 /* Call this after changing a screen object. */
 /* Associated editors and data editors will be notified (with Editor_dataChanged). */
 
@@ -505,7 +505,7 @@ void praat_picture_close ();
 /* For main.cpp */
 
 #define INCLUDE_LIBRARY(praat_xxx_init) \
-   { extern void praat_xxx_init (void); praat_xxx_init (); }
+   { extern void praat_xxx_init (); praat_xxx_init (); }
 #define INCLUDE_MANPAGES(manual_xxx_init) \
    { extern void manual_xxx_init (ManPages me); manual_xxx_init (theCurrentPraatApplication -> manPages); }
 
@@ -526,7 +526,7 @@ void praat_setLogo (double width_mm, double height_mm, void (*draw) (Graphics g)
 	praat_show ();   // Needed because the selection has changed.
 */
 void praat_removeObject (int i);   // i = 1..praat.n
-void praat_show (void);   // forces an update of the dynamic menu
+void praat_show ();   // forces an update of the dynamic menu
 void praat_updateSelection ();
 	/* If you require the correct selection immediately after calling praat_new. */
 
@@ -538,11 +538,15 @@ void praat_addCommandsToEditor (Editor me);
 #define heis_ONLY(klas)  klas him = static_cast<klas> (ONLY (class##klas))
 #define LOOP  for (IOBJECT = 1; IOBJECT <= theCurrentPraatObjects -> n; IOBJECT ++) if (SELECTED)
 
-Collection praat_getSelectedObjects ();
+autoCollection praat_getSelectedObjects ();
 
 struct autoPraatPicture {
 	autoPraatPicture () { praat_picture_open (); }
 	~autoPraatPicture () { praat_picture_close (); }
 };
 
+#if defined (_WIN32)
+	#define main wingwmain
+#endif
+
 /* End of file praat.h */
diff --git a/sys/praatP.h b/sys/praatP.h
index a8ef294..d3c8ce7 100644
--- a/sys/praatP.h
+++ b/sys/praatP.h
@@ -2,29 +2,28 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praat.h"
 
 void praat_addActionScript (const char32 *className1, int n1, const char32 *className2, int n2, const char32 *className3, int n3,
 	const char32 *title, const char32 *after, int depth, const char32 *script);
-/* No strings may be NULL; unspecify them by giving an empty string. 'title' and 'script' are deep-copied. */
+/* No strings may be null; unspecify them by giving an empty string. 'title' and 'script' are deep-copied. */
 void praat_removeAction_classNames (const char32 *className1, const char32 *className2,
 	const char32 *className3, const char32 *title);
-/* No arguments may be NULL; unspecify them by giving an empty string. */
+/* No arguments may be null; unspecify them by giving an empty string. */
 /* 'title' is deep-copied. */
 void praat_hideAction (ClassInfo class1, ClassInfo class2, ClassInfo class3, const char32 *title);
 void praat_hideAction_classNames (const char32 *className1, const char32 *className2,
@@ -36,7 +35,7 @@ void praat_sortActions ();
 
 void praat_addMenuCommandScript (const char32 *window, const char32 *menu, const char32 *title,
 	const char32 *after, int depth, const char32 *script);
-/* All strings are deep-copied and may not be NULL; unspecify them by giving an empty string. */
+/* All strings are deep-copied and may not be null; unspecify them by giving an empty string. */
 /*
 	For the Praat objects window:
 	'window' is "Objects", 'menu' is "Praat", "New", "Open", "Help", "Preferences", "Goodies", or "Technical".
@@ -53,12 +52,12 @@ void praat_sortMenuCommands ();
 #define praat_MAXNUM_MENUS 20   /* Maximum number of added New, Open, Save, or Help menus. */
 #define praat_MAXNUM_FILE_TYPE_RECOGNIZERS 50   /* File types recognizable by 'Read from file...'. */
 
-typedef struct structPraat_Command {
+Thing_define (Praat_Command, Thing) {
 	ClassInfo class1, class2, class3, class4;   // selected classes
 	int32 n1, n2, n3, n4;   // number of selected objects of each class; 0 means "any number"
 	const char32 *title;   // button text = command text
 	UiCallback callback;   // multi-purpose
-		/* If both UiCallback::sendingForm and sendingString are NULL, this routine is an activate callback;
+		/* If both UiCallback::sendingForm and sendingString are null, this routine is an activate callback;
 			you should directly execute the command, or call UiForm_do(dialog) if you need arguments;
 			UiForm_do will call this routine again with sendingForm = dialog. */
 		/* If sendingForm exists, this routine is an ok callback,
@@ -78,10 +77,10 @@ typedef struct structPraat_Command {
 	GuiThing button;
 	const char32 *window, *menu;
 	const char32 *script;   // if 'callback' equals DO_RunTheScriptFromAnyAddedMenuCommand
-	const char32 *after;   // title of previous command, often NULL
+	const char32 *after;   // title of previous command, often null
 	int32 uniqueID;   // for sorting the added commands
 	int32 sortingTail;
-} *praat_Command;
+};
 
 #define praat_STARTING_UP  1
 #define praat_READING_BUTTONS  2
@@ -121,7 +120,7 @@ void praat_foreground ();
 Editor praat_findEditorFromString (const char32 *string);
 Editor praat_findEditorById (long id);
 
-void praat_showLogo (int autoPopDown);
+void praat_showLogo (bool autoPopDown);
 
 /* Communication with praat_menuCommands.cpp: */
 void praat_menuCommands_init ();
@@ -129,7 +128,7 @@ void praat_menuCommands_exit ();
 int praat_doMenuCommand (const char32 *command, const char32 *arguments, Interpreter interpreter);   // 0 = not found
 int praat_doMenuCommand (const char32 *command, int narg, Stackel args, Interpreter interpreter);   // 0 = not found
 long praat_getNumberOfMenuCommands ();
-praat_Command praat_getMenuCommand (long i);
+Praat_Command praat_getMenuCommand (long i);
 
 /* Communication with praat_actions.cpp: */
 void praat_actions_show ();
@@ -140,13 +139,14 @@ void praat_saveAddedActions (MelderString *buffer);
 int praat_doAction (const char32 *command, const char32 *arguments, Interpreter interpreter);   // 0 = not found
 int praat_doAction (const char32 *command, int narg, Stackel args, Interpreter interpreter);   // 0 = not found
 long praat_getNumberOfActions ();   // for ButtonEditor
-praat_Command praat_getAction (long i);   // for ButtonEditor
+Praat_Command praat_getAction (long i);   // for ButtonEditor
 
 /* Communication with praat_statistics.cpp: */
 void praat_statistics_prefs ();   // at init time
 void praat_statistics_prefsChanged ();   // after reading prefs file
 void praat_statistics_exit ();   // at exit time
 void praat_reportMemoryUse ();
+void praat_reportSystemProperties ();
 void praat_reportGraphicalProperties ();
 void praat_reportIntegerProperties ();
 void praat_reportTextProperties ();
@@ -161,6 +161,10 @@ void praat_cleanUpName (char32 *name);
 void praat_list_renameAndSelect (int position, const char32 *name);
 
 extern struct PraatP {
+	int argc;
+	char **argv;
+	int argumentNumber;
+	bool userWantsToOpen;
 	bool dontUsePictureWindow;   // see praat_dontUsePictureWindow ()
 	bool ignorePreferenceFiles, ignorePlugins;
 	bool hasCommandLineInput;
diff --git a/sys/praat_actions.cpp b/sys/praat_actions.cpp
index c0a99f4..e963580 100644
--- a/sys/praat_actions.cpp
+++ b/sys/praat_actions.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praatP.h"
@@ -26,9 +25,7 @@
 #define BUTTON_LEFT  -240
 #define BUTTON_RIGHT -5
 
-#define praat_MAXNUM_LOOSE_COMMANDS  10000
-static long theNumberOfActions = 0;
-static struct structPraat_Command *theActions;
+static OrderedOf <structPraat_Command> theActions;
 static GuiMenu praat_writeMenu;
 static GuiMenuItem praat_writeMenuSeparator;
 static GuiForm praat_form;
@@ -37,10 +34,10 @@ static bool actionsInvisible = false;
 static void fixSelectionSpecification (ClassInfo *class1, int *n1, ClassInfo *class2, int *n2, ClassInfo *class3, int *n3) {
 /*
  * Function:
- *	sort the specification pairs *class(i), *n(i) according to class name, with NULL classes at the end.
+ *	sort the specification pairs *class(i), *n(i) according to class name, with null classes at the end.
  * Postconditions:
- *	if (*class2 != NULL) *class1 != NULL;
- *	if (*class3 != NULL) *class2 != NULL;
+ *	if (*class2) !! *class1;
+ *	if (*class3) !! *class2;
  *	(*class1) -> className <= (*class2) -> className <= (*class3) -> className;
  * Usage:
  *	Called by praat_addAction () and praat_removeAction ().
@@ -48,9 +45,9 @@ static void fixSelectionSpecification (ClassInfo *class1, int *n1, ClassInfo *cl
 
 	/* Fix unusual input bubblewise. */
 
-	if (*class1 == NULL && *class2 != NULL) { *class1 = *class2; *n1 = *n2; *class2 = NULL; *n2 = 0; }
-	if (*class2 == NULL && *class3 != NULL) { *class2 = *class3; *n2 = *n3; *class3 = NULL; *n3 = 0;
-		if (*class1 == NULL && *class2 != NULL) { *class1 = *class2; *n1 = *n2; *class2 = NULL; *n2 = 0; } }
+	if (! *class1 && *class2) { *class1 = *class2; *n1 = *n2; *class2 = nullptr; *n2 = 0; }
+	if (! *class2 && *class3) { *class2 = *class3; *n2 = *n3; *class3 = nullptr; *n3 = 0;
+		if (! *class1 && *class2) { *class1 = *class2; *n1 = *n2; *class2 = nullptr; *n2 = 0; } }
 
 	/* Now: if *class3, then *class2, and if *class2, then *class1.
 	 * Bubble-sort the input by class name.
@@ -75,34 +72,37 @@ static long lookUpMatchingAction (ClassInfo class1, ClassInfo class2, ClassInfo
  * Precondition:
  *	class1, class2, and class3 must be in sorted order.
  */
-	for (long i = 1; i <= theNumberOfActions; i ++)
-		if (class1 == theActions [i]. class1 && class2 == theActions [i]. class2 &&
-		    class3 == theActions [i]. class3 && class4 == theActions [i]. class4 &&
-		    title && theActions [i]. title && str32equ (theActions [i]. title, title)) return i;
-	return 0;   /* Not found. */
+	for (long i = 1; i <= theActions.size; i ++) {
+		Praat_Command action = theActions.at [i];
+		if (class1 == action -> class1 && class2 == action -> class2 &&
+		    class3 == action -> class3 && class4 == action -> class4 &&
+		    title && action -> title && str32equ (action -> title, title)) return i;
+	}
+	return 0;   // not found
 }
 
 void praat_addAction (ClassInfo class1, int n1, ClassInfo class2, int n2, ClassInfo class3, int n3,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback)
-{ praat_addAction4 (class1, n1, class2, n2, class3, n3, NULL, 0, title, after, flags, callback); }
+{ praat_addAction4 (class1, n1, class2, n2, class3, n3, nullptr, 0, title, after, flags, callback); }
 
 void praat_addAction1 (ClassInfo class1, int n1,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback)
-{ praat_addAction4 (class1, n1, NULL, 0, NULL, 0, NULL, 0, title, after, flags, callback); }
+{ praat_addAction4 (class1, n1, nullptr, 0, nullptr, 0, nullptr, 0, title, after, flags, callback); }
 
 void praat_addAction2 (ClassInfo class1, int n1, ClassInfo class2, int n2,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback)
-{ praat_addAction4 (class1, n1, class2, n2, NULL, 0, NULL, 0, title, after, flags, callback); }
+{ praat_addAction4 (class1, n1, class2, n2, nullptr, 0, nullptr, 0, title, after, flags, callback); }
 
 void praat_addAction3 (ClassInfo class1, int n1, ClassInfo class2, int n2, ClassInfo class3, int n3,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback)
-{ praat_addAction4 (class1, n1, class2, n2, class3, n3, NULL, 0, title, after, flags, callback); }
+{ praat_addAction4 (class1, n1, class2, n2, class3, n3, nullptr, 0, title, after, flags, callback); }
 
 void praat_addAction4 (ClassInfo class1, int n1, ClassInfo class2, int n2, ClassInfo class3, int n3, ClassInfo class4, int n4,
 	const char32 *title, const char32 *after, unsigned long flags, UiCallback callback)
 {
 	try {
-		int depth = flags, unhidable = FALSE, hidden = FALSE, key = 0, attractive = 0;
+		int depth = flags, key = 0;
+		bool unhidable = false, hidden = false, attractive = false;
 		unsigned long motifFlags = 0;
 		if (flags > 7) {
 			depth = ((flags & praat_DEPTH_7) >> 16);
@@ -135,72 +135,66 @@ void praat_addAction4 (ClassInfo class1, int n1, ClassInfo class2, int n2, Class
 					U"because the latter command does not exist.");
 			position = found + 1;   // after 'after'
 		} else {
-			position = theNumberOfActions + 1;   // at end
+			position = theActions.size + 1;   // at end
 		}
 
 		/*
-		 * Increment the command area.
-		 */
-		if (theNumberOfActions >= praat_MAXNUM_LOOSE_COMMANDS)
-			Melder_throw (U"Too many action commands (maximum ", praat_MAXNUM_LOOSE_COMMANDS, U").");
-		theNumberOfActions += 1;
-
-		/*
-		 * Make room for insertion.
+		 * Make new command.
 		 */
-		for (long i = theNumberOfActions; i > position; i --) theActions [i] = theActions [i - 1];
-		memset (& theActions [position], 0, sizeof (struct structPraat_Command));
+		autoPraat_Command action = Thing_new (Praat_Command);
+		action -> class1 = class1;
+		action -> n1 = n1;
+		action -> class2 = class2;
+		action -> n2 = n2;
+		action -> class3 = class3;
+		action -> n3 = n3;
+		action -> class4 = class4;
+		action -> n4 = n4;
+		action -> title = Melder_dup_f (title);
+		action -> depth = depth;
+		action -> callback = callback;   // null for a separator
+		action -> button = nullptr;
+		action -> script = nullptr;
+		action -> hidden = hidden;
+		action -> unhidable = unhidable;
+		action -> attractive = attractive;
 
 		/*
 		 * Insert new command.
 		 */
-		theActions [position]. class1 = class1;
-		theActions [position]. n1 = n1;
-		theActions [position]. class2 = class2;
-		theActions [position]. n2 = n2;
-		theActions [position]. class3 = class3;
-		theActions [position]. n3 = n3;
-		theActions [position]. class4 = class4;
-		theActions [position]. n4 = n4;
-		theActions [position]. title = Melder_dup_f (title);
-		theActions [position]. depth = depth;
-		theActions [position]. callback = callback;   // NULL for a separator
-		theActions [position]. button = NULL;
-		theActions [position]. script = NULL;
-		theActions [position]. hidden = hidden;
-		theActions [position]. unhidable = unhidable;
-		theActions [position]. attractive = attractive;
+		theActions. addItemAtPosition_move (action.move(), position);
 	} catch (MelderError) {
 		Melder_flushError ();
 	}
 }
 
-static void deleteDynamicMenu (void) {
+static void deleteDynamicMenu () {
 	if (praatP.phase != praat_HANDLING_EVENTS) return;
 	if (actionsInvisible) return;
 	static long numberOfDeletions;
 	trace (U"deletion #", ++ numberOfDeletions);
-	for (int i = 1; i <= theNumberOfActions; i ++) {
-		if (theActions [i]. button) {
-			trace (U"trying to destroy action ", i, U" of ", theNumberOfActions, U": ", theActions [i]. title);
+	for (int i = 1; i <= theActions.size; i ++) {
+		Praat_Command action = theActions.at [i];
+		if (action -> button) {
+			trace (U"trying to destroy action ", i, U" of ", theActions.size, U": ", action -> title);
 			#if gtk || cocoa
-				if (theActions [i]. button -> d_parent == praat_form) {
+				if (action -> button -> d_parent == praat_form) {
 					trace (U"destroy a label or a push button or a cascade button");
-					GuiObject_destroy (theActions [i]. button -> d_widget);
-				} else if (praat_writeMenu && theActions [i]. button -> d_parent == praat_writeMenu) {
+					GuiObject_destroy (action -> button -> d_widget);
+				} else if (praat_writeMenu && action -> button -> d_parent == praat_writeMenu) {
 					trace (U"destroying Save menu item");
-					GuiObject_destroy (theActions [i]. button -> d_widget);
+					GuiObject_destroy (action -> button -> d_widget);
 				}
 			#elif motif
-				if (theActions [i]. button -> classInfo == classGuiButton && theActions [i]. button -> d_widget -> subMenuId) {   // a cascade button (not a direct child of the form)?
+				if (action -> button -> classInfo == classGuiButton && action -> button -> d_widget -> subMenuId) {   // a cascade button (not a direct child of the form)?
 					trace (U"destroy the xm menu bar; this also destroys the xm button and the xm menu");
-					GuiObject_destroy (theActions [i]. button -> d_widget -> parent);   // the Motif parent, i.e. not d_parent -> d_widget !
-				} else if (theActions [i]. button -> d_parent == praat_form) {
+					GuiObject_destroy (action -> button -> d_widget -> parent);   // the Motif parent, i.e. not d_parent -> d_widget !
+				} else if (action -> button -> d_parent == praat_form) {
 					trace (U"destroy a label or a push button");
-					GuiObject_destroy (theActions [i]. button -> d_widget);
+					GuiObject_destroy (action -> button -> d_widget);
 				}
 			#endif
-			theActions [i]. button = NULL;
+			action -> button = nullptr;   // undangle
 		}
 	}
 	if (praat_writeMenu) {
@@ -215,12 +209,12 @@ static void deleteDynamicMenu (void) {
 			GuiObject_destroy (praat_writeMenu -> d_widget);
 			praat_writeMenu = GuiMenu_createInWindow (praatP.menuBar, U"Save", 0);
 		#endif
-		praat_writeMenuSeparator = NULL;
+		praat_writeMenuSeparator = nullptr;   // undangle
 	}
 	actionsInvisible = true;
 }
 
-static void updateDynamicMenu (void) {
+static void updateDynamicMenu () {
 	if (praatP.phase != praat_HANDLING_EVENTS) return;
 	praat_sortActions ();
 	deleteDynamicMenu ();
@@ -231,16 +225,16 @@ void praat_addActionScript (const char32 *className1, int n1, const char32 *clas
 	const char32 *title, const char32 *after, int depth, const char32 *script)
 {
 	try {
-		ClassInfo class1 = NULL, class2 = NULL, class3 = NULL;
+		ClassInfo class1 = nullptr, class2 = nullptr, class3 = nullptr;
 		Melder_assert (className1 && className2 && className3 && title && after && script);
 		if (str32len (className1)) {
-			class1 = Thing_classFromClassName (className1, NULL);
+			class1 = Thing_classFromClassName (className1, nullptr);
 		}
 		if (str32len (className2)) {
-			class2 = Thing_classFromClassName (className2, NULL);
+			class2 = Thing_classFromClassName (className2, nullptr);
 		}
 		if (str32len (className3)) {
-			class3 = Thing_classFromClassName (className3, NULL);
+			class3 = Thing_classFromClassName (className3, nullptr);
 		}
 		fixSelectionSpecification (& class1, & n1, & class2, & n2, & class3, & n3);
 
@@ -253,66 +247,58 @@ void praat_addActionScript (const char32 *className1, int n1, const char32 *clas
 		/*
 		 * If the button already exists, remove it.
 		 */
-		long found = lookUpMatchingAction (class1, class2, class3, NULL, title);
+		long found = lookUpMatchingAction (class1, class2, class3, nullptr, title);
 		if (found) {
-			theNumberOfActions --;
-			for (long i = found; i <= theNumberOfActions; i ++) theActions [i] = theActions [i + 1];
+			theActions. removeItem (found);
 		}
 
 		/*
 		 * Determine the position of the new command.
 		 */
 		long position;
-		if (str32len (after)) {   /* Search for existing command with same selection. */
-			long found = lookUpMatchingAction (class1, class2, class3, NULL, after);
+		if (str32len (after)) {   // search for existing command with same selection
+			long found = lookUpMatchingAction (class1, class2, class3, nullptr, after);
 			if (found) {
 				position = found + 1;   // after 'after'
 			} else {
-				position = theNumberOfActions + 1;   // at end
+				position = theActions.size + 1;   // at end
 			}
 		} else {
-			position = theNumberOfActions + 1;   // at end
+			position = theActions.size + 1;   // at end
 		}
 
 		/*
-		 * Increment the command area.
-		 */
-		if (theNumberOfActions >= praat_MAXNUM_LOOSE_COMMANDS)
-			Melder_throw (U"Too many actions (maximum is ", praat_MAXNUM_LOOSE_COMMANDS, U").");
-		theNumberOfActions += 1;
-
-		/*
-		 * Make room for insertion.
+		 * Create new command.
 		 */
-		for (long i = theNumberOfActions; i > position; i --) theActions [i] = theActions [i - 1];
-		memset (& theActions [position], 0, sizeof (struct structPraat_Command));
-
-		/*
-		 * Insert new command.
-		 */
-		theActions [position]. class1 = class1;
-		theActions [position]. n1 = n1;
-		theActions [position]. class2 = class2;
-		theActions [position]. n2 = n2;
-		theActions [position]. class3 = class3;
-		theActions [position]. n3 = n3;
-		theActions [position]. title = str32len (title) ? Melder_dup_f (title) : NULL;   // allow old-fashioned untitled separators
-		theActions [position]. depth = depth;
-		theActions [position]. callback = str32len (script) ? DO_RunTheScriptFromAnyAddedMenuCommand : NULL;   // NULL for a separator
-		theActions [position]. button = NULL;
+		autoPraat_Command action = Thing_new (Praat_Command);
+		action -> class1 = class1;
+		action -> n1 = n1;
+		action -> class2 = class2;
+		action -> n2 = n2;
+		action -> class3 = class3;
+		action -> n3 = n3;
+		action -> title = str32len (title) ? Melder_dup_f (title) : nullptr;   // allow old-fashioned untitled separators
+		action -> depth = depth;
+		action -> callback = str32len (script) ? DO_RunTheScriptFromAnyAddedMenuCommand : nullptr;   // null for a separator
+		action -> button = nullptr;
 		if (str32len (script) == 0) {
-			theActions [position]. script = NULL;
+			action -> script = nullptr;
 		} else {
 			structMelderFile file = { 0 };
 			Melder_relativePathToFile (script, & file);
-			theActions [position]. script = Melder_dup_f (Melder_fileToPath (& file));
+			action -> script = Melder_dup_f (Melder_fileToPath (& file));
 		}
-		theActions [position]. after = str32len (after) ? Melder_dup_f (after) : NULL;
-		theActions [position]. phase = praatP.phase;
+		action -> after = str32len (after) ? Melder_dup_f (after) : nullptr;
+		action -> phase = praatP.phase;
 		if (praatP.phase >= praat_READING_BUTTONS) {
 			static long uniqueID = 0;
-			theActions [position]. uniqueID = ++ uniqueID;
+			action -> uniqueID = ++ uniqueID;
 		}
+
+		/*
+		 * Insert new command.
+		 */
+		theActions. addItemAtPosition_move (action.move(), position);
 		updateDynamicMenu ();
 	} catch (MelderError) {
 		Melder_throw (U"Praat: script action not added.");
@@ -323,16 +309,14 @@ void praat_removeAction (ClassInfo class1, ClassInfo class2, ClassInfo class3, c
 	try {
 		int n1, n2, n3;
 		fixSelectionSpecification (& class1, & n1, & class2, & n2, & class3, & n3);
-		long found = lookUpMatchingAction (class1, class2, class3, NULL, title);
+		long found = lookUpMatchingAction (class1, class2, class3, nullptr, title);
 		if (! found) {
 			Melder_throw (U"Action command \"", class1 -> className,
 				class2 ? U" & ": U"", class2 -> className,
 				class3 ? U" & ": U"", class3 -> className,
 				U": ", title, U"\" not found.");
 		}
-		Melder_free (theActions [found]. title);
-		theNumberOfActions --;
-		for (long i = found; i <= theNumberOfActions; i ++) theActions [i] = theActions [i + 1];
+		theActions. removeItem (found);
 	} catch (MelderError) {
 		Melder_throw (U"Praat: action not removed.");
 	}
@@ -342,16 +326,16 @@ void praat_removeAction_classNames (const char32 *className1, const char32 *clas
 	const char32 *className3, const char32 *title)
 {
 	try {
-		ClassInfo class1 = NULL, class2 = NULL, class3 = NULL;
+		ClassInfo class1 = nullptr, class2 = nullptr, class3 = nullptr;
 		Melder_assert (className1 && className2 && className3 && title);
 		if (str32len (className1)) {
-			class1 = Thing_classFromClassName (className1, NULL);
+			class1 = Thing_classFromClassName (className1, nullptr);
 		}
 		if (str32len (className2)) {
-			class2 = Thing_classFromClassName (className2, NULL);
+			class2 = Thing_classFromClassName (className2, nullptr);
 		}
 		if (str32len (className3)) {
-			class3 = Thing_classFromClassName (className3, NULL);
+			class3 = Thing_classFromClassName (className3, nullptr);
 		}
 		praat_removeAction (class1, class2, class3, title);
 		updateDynamicMenu ();
@@ -364,16 +348,17 @@ void praat_hideAction (ClassInfo class1, ClassInfo class2, ClassInfo class3, con
 	try {
 		int n1, n2, n3;
 		fixSelectionSpecification (& class1, & n1, & class2, & n2, & class3, & n3);
-		long found = lookUpMatchingAction (class1, class2, class3, NULL, title);
+		long found = lookUpMatchingAction (class1, class2, class3, nullptr, title);
 		if (! found) {
-			Melder_throw (U"Praat: action command \"", class1 ? class1 -> className : NULL,
-				class2 ? U" & ": NULL, class2 ? class2 -> className : NULL,
-				class3 ? U" & ": NULL, class3 ? class3 -> className : NULL,
+			Melder_throw (U"Praat: action command \"", class1 ? class1 -> className : nullptr,
+				class2 ? U" & ": nullptr, class2 ? class2 -> className : nullptr,
+				class3 ? U" & ": nullptr, class3 ? class3 -> className : nullptr,
 				U": ", title, U"\" not found.");
 		}
-		if (! theActions [found]. hidden) {
-			theActions [found]. hidden = TRUE;
-			if (praatP.phase >= praat_READING_BUTTONS) theActions [found]. toggled = ! theActions [found]. toggled;
+		Praat_Command action = theActions.at [found];
+		if (! action -> hidden) {
+			action -> hidden = true;
+			if (praatP.phase >= praat_READING_BUTTONS) action -> toggled = ! action -> toggled;
 			updateDynamicMenu ();
 		}
 	} catch (MelderError) {
@@ -385,16 +370,16 @@ void praat_hideAction_classNames (const char32 *className1, const char32 *classN
 	const char32 *className3, const char32 *title)
 {
 	try {
-		ClassInfo class1 = NULL, class2 = NULL, class3 = NULL;
+		ClassInfo class1 = nullptr, class2 = nullptr, class3 = nullptr;
 		Melder_assert (className1 && className2 && className3 && title);
 		if (str32len (className1)) {
-			class1 = Thing_classFromClassName (className1, NULL);
+			class1 = Thing_classFromClassName (className1, nullptr);
 		}
 		if (str32len (className2)) {
-			class2 = Thing_classFromClassName (className2, NULL);
+			class2 = Thing_classFromClassName (className2, nullptr);
 		}
 		if (str32len (className3)) {
-			class3 = Thing_classFromClassName (className3, NULL);
+			class3 = Thing_classFromClassName (className3, nullptr);
 		}
 		praat_hideAction (class1, class2, class3, title);
 	} catch (MelderError) {
@@ -406,16 +391,17 @@ void praat_showAction (ClassInfo class1, ClassInfo class2, ClassInfo class3, con
 	try {
 		int n1, n2, n3;
 		fixSelectionSpecification (& class1, & n1, & class2, & n2, & class3, & n3);
-		long found = lookUpMatchingAction (class1, class2, class3, NULL, title);
+		long found = lookUpMatchingAction (class1, class2, class3, nullptr, title);
 		if (! found) {
-			Melder_throw (U"Action command \"", class1 ? class1 -> className : NULL,
-				class2 ? U" & ": NULL, class2 ? class2 -> className : NULL,
-				class3 ? U" & ": NULL, class3 ? class3 -> className : NULL,
+			Melder_throw (U"Action command \"", class1 ? class1 -> className : nullptr,
+				class2 ? U" & ": nullptr, class2 ? class2 -> className : nullptr,
+				class3 ? U" & ": nullptr, class3 ? class3 -> className : nullptr,
 				U": ", title, U"\" not found.");
 		}
-		if (theActions [found]. hidden) {
-			theActions [found]. hidden = FALSE;
-			if (praatP.phase >= praat_READING_BUTTONS) theActions [found]. toggled = ! theActions [found]. toggled;
+		Praat_Command action = theActions.at [found];
+		if (action -> hidden) {
+			action -> hidden = false;
+			if (praatP.phase >= praat_READING_BUTTONS) action -> toggled = ! action -> toggled;
 			updateDynamicMenu ();
 		}
 	} catch (MelderError) {
@@ -427,16 +413,16 @@ void praat_showAction_classNames (const char32 *className1, const char32 *classN
 	const char32 *className3, const char32 *title)
 {
 	try {
-		ClassInfo class1 = NULL, class2 = NULL, class3 = NULL;
+		ClassInfo class1 = nullptr, class2 = nullptr, class3 = nullptr;
 		Melder_assert (className1 && className2 && className3 && title);
 		if (str32len (className1)) {
-			class1 = Thing_classFromClassName (className1, NULL);
+			class1 = Thing_classFromClassName (className1, nullptr);
 		}
 		if (str32len (className2)) {
-			class2 = Thing_classFromClassName (className2, NULL);
+			class2 = Thing_classFromClassName (className2, nullptr);
 		}
 		if (str32len (className3)) {
-			class3 = Thing_classFromClassName (className3, NULL);
+			class3 = Thing_classFromClassName (className3, nullptr);
 		}
 		praat_showAction (class1, class2, class3, title);
 	} catch (MelderError) {
@@ -445,10 +431,10 @@ void praat_showAction_classNames (const char32 *className1, const char32 *classN
 }
 
 static int compareActions (const void *void_me, const void *void_thee) {
-	praat_Command me = (praat_Command) void_me, thee = (praat_Command) void_thee;
+	Praat_Command me = * (Praat_Command *) void_me, thee = * (Praat_Command *) void_thee;
 	int compare;
 	compare = str32cmp (my class1 -> className, thy class1 -> className);
-	if (compare) return my class1 == classData ? -1 : thy class1 == classData ? 1 : compare;
+	if (compare) return my class1 == classDaata ? -1 : thy class1 == classDaata ? 1 : compare;
 	if (my class2) {
 		if (! thy class2) return 1;
 		compare = str32cmp (my class2 -> className, thy class2 -> className);
@@ -463,17 +449,19 @@ static int compareActions (const void *void_me, const void *void_thee) {
 	return 1;
 }
 
-void praat_sortActions (void) {
-	for (long i = 1; i <= theNumberOfActions; i ++)
-		theActions [i]. sortingTail = i;
-	qsort (& theActions [1], theNumberOfActions, sizeof (struct structPraat_Command), compareActions);
+void praat_sortActions () {
+	for (long i = 1; i <= theActions.size; i ++) {
+		Praat_Command action = theActions.at [i];
+		action -> sortingTail = i;
+	}
+	qsort (& theActions.at [1], theActions.size, sizeof (Praat_Command), compareActions);
 }
 
 static const char32 *numberString (int number) {
 	return number == 1 ? U"one" : number == 2 ? U"two" : number == 3 ? U"three" : U"any number of";
 }
 static const char32 *classString (ClassInfo klas) {
-	return klas == classData ? U"" : klas -> className;
+	return klas == classDaata ? U"" : klas -> className;
 }
 static const char32 *objectString (int number) {
 	return number == 1 ? U"object" : U"objects";
@@ -482,14 +470,14 @@ static bool allowExecutionHook (void *closure) {
 	UiCallback callback = (UiCallback) closure;
 	Melder_assert (sizeof (callback) == sizeof (void *));
 	long numberOfMatchingCallbacks = 0, firstMatchingCallback = 0;
-	for (long i = 1; i <= theNumberOfActions; i ++) {
-		praat_Command me = & theActions [i];
+	for (long i = 1; i <= theActions.size; i ++) {
+		Praat_Command me = theActions.at [i];
 		if (my callback == callback) {
 			int sel1, sel2 = 0, sel3 = 0, sel4 = 0;
 			if (! my class1) Melder_throw (U"No class1???");
 			numberOfMatchingCallbacks += 1;
 			if (! firstMatchingCallback) firstMatchingCallback = i;
-			sel1 = my class1 == classData ? theCurrentPraatObjects -> totalSelection : praat_numberOfSelected (my class1);
+			sel1 = my class1 == classDaata ? theCurrentPraatObjects -> totalSelection : praat_numberOfSelected (my class1);
 			if (sel1 == 0) continue;
 			if (my class2 && (sel2 = praat_numberOfSelected (my class2)) == 0) continue;
 			if (my class3 && (sel3 = praat_numberOfSelected (my class3)) == 0) continue;
@@ -500,7 +488,7 @@ static bool allowExecutionHook (void *closure) {
 		}
 	}
 	if (numberOfMatchingCallbacks == 1) {
-		praat_Command me = & theActions [firstMatchingCallback];
+		Praat_Command me = theActions.at [firstMatchingCallback];
 		Melder_appendError (U"Selection changed! It should be:");
 		if (my class1) Melder_appendError (U"   ", numberString (my n1), U" ", classString (my class1), U" ", objectString (my n1));
 		if (my class2) Melder_appendError (U"   ", numberString (my n2), U" ", classString (my class2), U" ", objectString (my n2));
@@ -513,58 +501,41 @@ static bool allowExecutionHook (void *closure) {
 	return false;
 }
 
-static void do_menu (I, bool modified) {
-/*
- *	Convert a Gui callback into a Ui callback, and catch modifier keys and special mouse buttons.
- *	Call that callback!
- *	Catch the error queue for menu commands without dots (...).
- */
-	UiCallback callback = (UiCallback) void_me;
-	for (long i = 1; i <= theNumberOfActions; i ++) {
-		praat_Command me = & theActions [i];
-		if (my callback == callback) {
-			if (my title != NULL && ! str32str (my title, U"...")) {
-				UiHistory_write (U"\n");
-				UiHistory_write_colonize (my title);
-			}
-			Ui_setAllowExecutionHook (allowExecutionHook, (void *) callback);   // BUG: one shouldn't assign a function pointer to a void pointer
-			try {
-				callback (NULL, 0, NULL, NULL, NULL, my title, modified, NULL);
-			} catch (MelderError) {
-				Melder_flushError (U"Command \"", my title, U"\" not executed.");
-			}
-			Ui_setAllowExecutionHook (NULL, NULL);
-			praat_updateSelection (); return;
-		}
-		if (my callback == DO_RunTheScriptFromAnyAddedMenuCommand && my script == (void *) void_me) {
-			if (my title != NULL && ! str32str (my title, U"...")) {
-				UiHistory_write (U"\nexecute ");
-				UiHistory_write (my script);
-			} else {
-				UiHistory_write (U"\nexecute \"");
-				UiHistory_write (my script);
-				UiHistory_write (U"\"");
-			}
-			try {
-				DO_RunTheScriptFromAnyAddedMenuCommand (NULL, 0, NULL, my script, NULL, NULL, false, NULL);
-			} catch (MelderError) {
-				Melder_flushError (U"Command \"", my title, U"\" not executed.");
-			}
-			praat_updateSelection (); return;
+static void do_menu (Praat_Command me, bool modified) {
+	if (my callback == DO_RunTheScriptFromAnyAddedMenuCommand) {
+		UiHistory_write (U"\nrunScript: ");
+		try {
+			DO_RunTheScriptFromAnyAddedMenuCommand (nullptr, 0, nullptr, my script, nullptr, nullptr, false, nullptr);
+		} catch (MelderError) {
+			Melder_flushError (U"Command \"", my title, U"\" not executed.");
 		}
+		praat_updateSelection (); return;
+	} else {
+		if (my title && ! str32str (my title, U"...")) {
+			UiHistory_write (U"\n");
+			UiHistory_write (my title);
+		}
+		Ui_setAllowExecutionHook (allowExecutionHook, (void *) my callback);   // BUG: one shouldn't assign a function pointer to a void pointer
+		try {
+			my callback (nullptr, 0, nullptr, nullptr, nullptr, my title, modified, nullptr);
+		} catch (MelderError) {
+			Melder_flushError (U"Command \"", my title, U"\" not executed.");
+		}
+		Ui_setAllowExecutionHook (nullptr, nullptr);
+		praat_updateSelection (); return;
 	}
 }
 
-static void cb_menu (GUI_ARGS) {
+static void cb_menu (Praat_Command me, GuiMenuItemEvent event) {
 	bool modified = event -> shiftKeyPressed || event -> commandKeyPressed || event -> optionKeyPressed || event -> extraControlKeyPressed;
-	do_menu (void_me, modified);
+	do_menu (me, modified);
 }
 
-static void gui_button_cb_menu (I, GuiButtonEvent event) {
-	do_menu (void_me, event -> shiftKeyPressed | event -> commandKeyPressed | event -> optionKeyPressed | event -> extraControlKeyPressed);
+static void gui_button_cb_menu (Praat_Command me, GuiButtonEvent event) {
+	do_menu (me, event -> shiftKeyPressed | event -> commandKeyPressed | event -> optionKeyPressed | event -> extraControlKeyPressed);
 }
 
-void praat_actions_show (void) {
+void praat_actions_show () {
 	#if defined (macintosh)
 		const int BUTTON_VSPACING = 8;
 	#else
@@ -586,50 +557,51 @@ void praat_actions_show (void) {
 		if (theCurrentPraatObjects -> totalSelection != 0 && ! Melder_backgrounding)
 			GuiThing_setSensitive (praat_writeMenu, true);
 	}
-	for (long i = 1; i <= theNumberOfActions; i ++) {
+	for (long i = 1; i <= theActions.size; i ++) {
+		Praat_Command action = theActions.at [i];
 		int sel1 = 0, sel2 = 0, sel3 = 0, sel4 = 0;
-		int n1 = theActions [i]. n1, n2 = theActions [i]. n2, n3 = theActions [i]. n3, n4 = theActions [i]. n4;
+		int n1 = action -> n1, n2 = action -> n2, n3 = action -> n3, n4 = action -> n4;
 
 		/* Clean up from previous selection. */
 
-		theActions [i]. visible = FALSE;
-		theActions [i]. executable = FALSE;
+		action -> visible = false;
+		action -> executable = false;
 
 		/* Match the actually selected classes with the selection required for this visibility. */
 
-		if (! theActions [i]. class1) continue;   /* At least one class selected. */
-		sel1 = theActions [i]. class1 == classData ? theCurrentPraatObjects -> totalSelection : praat_numberOfSelected (theActions [i]. class1);
+		if (! action -> class1) continue;   // at least one class selected
+		sel1 = action -> class1 == classDaata ? theCurrentPraatObjects -> totalSelection : praat_numberOfSelected (action -> class1);
 		if (sel1 == 0) continue;
-		if (theActions [i]. class2 && (sel2 = praat_numberOfSelected (theActions [i]. class2)) == 0) continue;
-		if (theActions [i]. class3 && (sel3 = praat_numberOfSelected (theActions [i]. class3)) == 0) continue;
-		if (theActions [i]. class4 && (sel4 = praat_numberOfSelected (theActions [i]. class4)) == 0) continue;
-		if (sel1 + sel2 + sel3 + sel4 != theCurrentPraatObjects -> totalSelection) continue;   /* Other classes selected? Do not show. */
-		theActions [i]. visible = ! theActions [i]. hidden;
+		if (action -> class2 && (sel2 = praat_numberOfSelected (action -> class2)) == 0) continue;
+		if (action -> class3 && (sel3 = praat_numberOfSelected (action -> class3)) == 0) continue;
+		if (action -> class4 && (sel4 = praat_numberOfSelected (action -> class4)) == 0) continue;
+		if (sel1 + sel2 + sel3 + sel4 != theCurrentPraatObjects -> totalSelection) continue;   // other classes selected? Do not show
+		action -> visible = ! action -> hidden;
 
 		/* Match the actually selected objects with the selection required for this action. */
 
-		if (! theActions [i]. callback) continue;   /* Separators are not executable. */
+		if (! action -> callback) continue;   // separators are not executable
 		if ((n1 && sel1 != n1) || (n2 && sel2 != n2) || (n3 && sel3 != n3) || (n4 && sel4 != n4)) continue;
-		theActions [i]. executable = TRUE;
+		action -> executable = true;
 	}
 
 	/* Create a new column of buttons in the dynamic menu. */
 	if (! theCurrentPraatApplication -> batch && ! Melder_backgrounding) {
 		actionsInvisible = false;
-		GuiMenu currentSubmenu1 = NULL, currentSubmenu2 = NULL;
-		int writeMenuGoingToSeparate = FALSE;
+		GuiMenu currentSubmenu1 = nullptr, currentSubmenu2 = nullptr;
+		bool writeMenuGoingToSeparate = false;
 		int y = Machine_getMenuBarHeight () + 10;
-		for (long i = 1; i <= theNumberOfActions; i ++) {   /* Add buttons or make existing buttons sensitive (executable). */
-			praat_Command me = & theActions [i];
-			if (my depth == 0) currentSubmenu1 = NULL, currentSubmenu2 = NULL;   /* Prevent attachment of later deep actions to earlier submenus after removal of label. */
-			if (my depth == 1) currentSubmenu2 = NULL;   /* Prevent attachment of later deep actions to earlier submenus after removal of label. */
+		for (long i = 1; i <= theActions.size; i ++) {   // add buttons or make existing buttons sensitive (executable)
+			Praat_Command me = theActions.at [i];
+			if (my depth == 0) currentSubmenu1 = nullptr, currentSubmenu2 = nullptr;   // prevent attachment of later deep actions to earlier submenus after removal of label
+			if (my depth == 1) currentSubmenu2 = nullptr;   // prevent attachment of later deep actions to earlier submenus after removal of label
 			if (! my visible) continue;
 			if (my callback) {
 				/* Apparently a true command: create a button in the dynamic menu.
 				 * If it is a subcommand (depth > 0), put it in the current submenu,
 				 * but only if this exists (umbrella against stray submenu specifications).
 				 */
-				GuiMenu parentMenu = my depth > 1 && currentSubmenu2 ? currentSubmenu2 : my depth > 0 && currentSubmenu1 ? currentSubmenu1 : NULL;
+				GuiMenu parentMenu = my depth > 1 && currentSubmenu2 ? currentSubmenu2 : my depth > 0 && currentSubmenu1 ? currentSubmenu1 : nullptr;
 
 				if (str32nequ (my title, U"Save ", 5) || str32nequ (my title, U"Write ", 6) || str32nequ (my title, U"Append to ", 10)) {
 					parentMenu = praat_writeMenu;
@@ -637,19 +609,18 @@ void praat_actions_show (void) {
 						if (writeMenuGoingToSeparate)
 							praat_writeMenuSeparator = GuiMenu_addSeparator (parentMenu);
 						else if (str32equ (my title, U"Save as binary file..."))
-							writeMenuGoingToSeparate = TRUE;
+							writeMenuGoingToSeparate = true;
 					}
 				}
 				if (parentMenu) {
 					my button = GuiMenu_addItem (parentMenu, my title,
 						( my executable ? 0 : GuiMenu_INSENSITIVE ),
-						cb_menu,
-						my callback == DO_RunTheScriptFromAnyAddedMenuCommand ? (void *) my script : (void *) my callback);
+						cb_menu, me);
 				} else {
 					my button = GuiButton_createShown (praat_form,
 						BUTTON_LEFT, BUTTON_RIGHT, y, y + Gui_PUSHBUTTON_HEIGHT,
 						my title, gui_button_cb_menu,
-						my callback == DO_RunTheScriptFromAnyAddedMenuCommand ? (void *) my script : (void *) my callback,
+						me,
 							( my executable ? 0 : GuiButton_INSENSITIVE ) | ( my attractive ? GuiButton_ATTRACTIVE : 0 ));
 					y += Gui_PUSHBUTTON_HEIGHT + BUTTON_VSPACING;
 					#if gtk
@@ -657,17 +628,17 @@ void praat_actions_show (void) {
 						gtk_button_set_alignment (GTK_BUTTON (my button -> d_widget), 0.0f, 0.5f);
 					#endif
 				}
-			} else if (i == theNumberOfActions || theActions [i + 1]. depth == 0) {
+			} else if (i == theActions.size || theActions.at [i + 1] -> depth == 0) {
 				/*
 				 * Apparently a labelled separator.
 				 */
 				my button = GuiLabel_createShown (praat_form, BUTTON_LEFT, BUTTON_RIGHT, y, y + Gui_LABEL_HEIGHT, my title, 0);
 				y += Gui_LABEL_HEIGHT + BUTTON_VSPACING;
-			} else if (my title == NULL || my title [0] == '-') {
+			} else if (! my title || my title [0] == U'-') {
 				/*
 				 * Apparently a separator in a submenu.
 				 */
-				if (currentSubmenu2 || currentSubmenu1) {   /* These separators are not shown in a flattened menu. */
+				if (currentSubmenu2 || currentSubmenu1) {   // these separators are not shown in a flattened menu
 					my button = GuiMenu_addSeparator (currentSubmenu2 ? currentSubmenu2 : currentSubmenu1);
 					GuiThing_show (my button);
 				}
@@ -680,10 +651,10 @@ void praat_actions_show (void) {
 						BUTTON_LEFT, BUTTON_RIGHT, y, y + Gui_PUSHBUTTON_HEIGHT,
 						my title, 0);
 					y += Gui_PUSHBUTTON_HEIGHT + BUTTON_VSPACING;
-					my button = currentSubmenu1 -> d_cascadeButton;
+					my button = currentSubmenu1 -> d_cascadeButton.get();
 				} else {
 					currentSubmenu2 = GuiMenu_createInMenu (currentSubmenu1, my title, 0);
-					my button = currentSubmenu2 -> d_menuItem;
+					my button = currentSubmenu2 -> d_menuItem.get();
 				}
 				GuiThing_show (my button);
 			}
@@ -699,8 +670,7 @@ void praat_actions_createWriteMenu (GuiWindow window) {
 	#endif
 }
 
-void praat_actions_init (void) {
-	theActions = Melder_calloc_f (struct structPraat_Command, 1 + praat_MAXNUM_LOOSE_COMMANDS);
+void praat_actions_init () {
 }
 
 void praat_actions_createDynamicMenu (GuiWindow window) {
@@ -710,25 +680,26 @@ void praat_actions_createDynamicMenu (GuiWindow window) {
 
 void praat_saveAddedActions (MelderString *buffer) {
 	long maxID = 0;
-	for (long iaction = 1; iaction <= theNumberOfActions; iaction ++) {
-		if (theActions [iaction]. uniqueID > maxID)
-			maxID = theActions [iaction]. uniqueID;
+	for (long iaction = 1; iaction <= theActions.size; iaction ++) {
+		Praat_Command action = theActions.at [iaction];
+		if (action -> uniqueID > maxID)
+			maxID = action -> uniqueID;
 	}
 	for (long ident = 1; ident <= maxID; ident ++)
-		for (long iaction = 1; iaction <= theNumberOfActions; iaction ++) {
-			praat_Command me = & theActions [iaction];
+		for (long iaction = 1; iaction <= theActions.size; iaction ++) {
+			Praat_Command me = theActions.at [iaction];
 			if (my uniqueID == ident && ! my hidden && my title) {
 				MelderString_append (buffer, U"Add action command...",
 					U" ", my class1 -> className, U" ", my n1,
 					U" ", ( my class2 ? my class2 -> className : U"\"\"" ), U" ", my n2,
 					U" ", ( my class3 ? my class3 -> className : U"\"\"" ), U" ", my n3,
-					U" \"", my title, U"\" \"", ( my after ? my after : U"", U"\" " ), my depth);
+					U" \"", my title, U"\" \"", ( my after ? my after : U"" ), U"\" ", my depth);
 				MelderString_append (buffer, U" ", my script ? my script : U"", U"\n");
 				break;
 			}
 		}
-	for (long iaction = 1; iaction <= theNumberOfActions; iaction ++) {
-		praat_Command me = & theActions [iaction];
+	for (long iaction = 1; iaction <= theActions.size; iaction ++) {
+		Praat_Command me = theActions.at [iaction];
 		if (my toggled && my title && ! my uniqueID && ! my script) {
 			MelderString_append (buffer, ( my hidden ? U"Hide" : U"Show" ), U" action command...",
 				U" ", my class1 -> className,
@@ -741,26 +712,26 @@ void praat_saveAddedActions (MelderString *buffer) {
 
 int praat_doAction (const char32 *command, const char32 *arguments, Interpreter interpreter) {
 	long i = 1;
-	while (i <= theNumberOfActions && (! theActions [i]. executable || str32cmp (theActions [i]. title, command))) i ++;
-	if (i > theNumberOfActions) return 0;   // not found
-	theActions [i]. callback (NULL, 0, NULL, arguments, interpreter, command, false, NULL);
+	while (i <= theActions.size && (! theActions.at [i] -> executable || str32cmp (theActions.at [i] -> title, command))) i ++;
+	if (i > theActions.size) return 0;   // not found
+	theActions.at [i] -> callback (nullptr, 0, nullptr, arguments, interpreter, command, false, nullptr);
 	return 1;
 }
 
 int praat_doAction (const char32 *command, int narg, Stackel args, Interpreter interpreter) {
 	long i = 1;
-	while (i <= theNumberOfActions && (! theActions [i]. executable || str32cmp (theActions [i]. title, command))) i ++;
-	if (i > theNumberOfActions) return 0;   // not found
-	theActions [i]. callback (NULL, narg, args, NULL, interpreter, command, false, NULL);
+	while (i <= theActions.size && (! theActions.at [i] -> executable || str32cmp (theActions.at [i] -> title, command))) i ++;
+	if (i > theActions.size) return 0;   // not found
+	theActions.at [i] -> callback (nullptr, narg, args, nullptr, interpreter, command, false, nullptr);
 	return 1;
 }
 
-long praat_getNumberOfActions (void) { return theNumberOfActions; }
+long praat_getNumberOfActions () { return theActions.size; }
 
-praat_Command praat_getAction (long i)
-	{ return i < 0 || i > theNumberOfActions ? NULL : & theActions [i]; }
+Praat_Command praat_getAction (long i)
+	{ return i < 0 || i > theActions.size ? nullptr : theActions.at [i]; }
 
-void praat_background (void) {
+void praat_background () {
 	if (Melder_batch) return;
 	if (Melder_backgrounding) return;
 	deleteDynamicMenu ();
@@ -769,7 +740,7 @@ void praat_background (void) {
 	if (! praatP.dontUsePictureWindow) praat_picture_background ();
 }
 
-void praat_foreground (void) {
+void praat_foreground () {
 	if (Melder_batch) return;
 	if (! Melder_backgrounding) return;
 	Melder_backgrounding = false;
diff --git a/sys/praat_logo.cpp b/sys/praat_logo.cpp
index a6a4ac3..5ac2240 100644
--- a/sys/praat_logo.cpp
+++ b/sys/praat_logo.cpp
@@ -1,20 +1,19 @@
 /* praat_logo.cpp
  *
- * Copyright (C) 1996-2012,2013,2014,2015 Paul Boersma, 2008 Stefan de Konink
+ * Copyright (C) 1996-2012,2013,2014,2015,2016 Paul Boersma, 2008 Stefan de Konink
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praatP.h"
@@ -31,11 +30,11 @@ static void logo_defaultDraw (Graphics g) {
 	Graphics_setFont (g, kGraphics_font_TIMES);
 	Graphics_setFontSize (g, 24);
 	Graphics_setFontStyle (g, Graphics_ITALIC);
-	Graphics_setUnderscoreIsSubscript (g, FALSE);   // because program names may contain underscores
+	Graphics_setUnderscoreIsSubscript (g, false);   // because program names may contain underscores
 	Graphics_text (g, 0.5, 0.6, praatP.title);
 	Graphics_setFontStyle (g, 0);
 	Graphics_setFontSize (g, 12);
-	Graphics_text (g, 0.5, 0.25, U"\\s{Built on the} %%Praat shell%\\s{,© Paul Boersma, 1992-2015");
+	Graphics_text (g, 0.5, 0.25, U"\\s{Built on the} %%Praat shell%\\s{,© Paul Boersma, 1992-2016");
 }
 
 static struct {
@@ -44,7 +43,7 @@ static struct {
 	GuiDialog dia;
 	GuiForm form;
 	GuiDrawingArea drawingArea;
-	Graphics graphics;
+	autoGraphics graphics;
 } theLogo = { 90, 40, logo_defaultDraw };
 
 #if motif
@@ -61,42 +60,38 @@ void praat_setLogo (double width_mm, double height_mm, void (*draw) (Graphics g)
 	theLogo.draw = draw;
 }
 
-static void gui_drawingarea_cb_expose (I, GuiDrawingAreaExposeEvent event) {
-	if (theLogo.graphics == NULL)
+static void gui_drawingarea_cb_expose (Thing /* me */, GuiDrawingArea_ExposeEvent event) {
+	if (! theLogo.graphics)
 		theLogo.graphics = Graphics_create_xmdrawingarea (theLogo.drawingArea);
 	#if gtk
 		#if ALLOW_GDK_DRAWING
-			Graphics_x_setCR (theLogo.graphics, gdk_cairo_create (GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window)));
+			Graphics_x_setCR (theLogo.graphics.get(), gdk_cairo_create (GDK_DRAWABLE (GTK_WIDGET (event -> widget -> d_widget) -> window)));
 		#else
-			Graphics_x_setCR (theLogo.graphics, gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (event -> widget -> d_widget))));
+			Graphics_x_setCR (theLogo.graphics.get(), gdk_cairo_create (gtk_widget_get_window (GTK_WIDGET (event -> widget -> d_widget))));
 		#endif
-		cairo_rectangle ((cairo_t *) Graphics_x_getCR (theLogo.graphics), (double) event->x, (double) event->y, (double) event->width, (double) event->height);
-		cairo_clip ((cairo_t *) Graphics_x_getCR (theLogo.graphics));
-		theLogo.draw (theLogo.graphics);
-		cairo_destroy ((cairo_t *) Graphics_x_getCR (theLogo.graphics));
+		cairo_rectangle ((cairo_t *) Graphics_x_getCR (theLogo.graphics.get()), (double) event->x, (double) event->y, (double) event->width, (double) event->height);
+		cairo_clip ((cairo_t *) Graphics_x_getCR (theLogo.graphics.get()));
+		theLogo.draw (theLogo.graphics.get());
+		cairo_destroy ((cairo_t *) Graphics_x_getCR (theLogo.graphics.get()));
 	#elif motif || cocoa
-		(void) void_me;
 		(void) event;
-		if (theLogo.graphics == NULL)
+		if (! theLogo.graphics)
 			theLogo.graphics = Graphics_create_xmdrawingarea (theLogo.drawingArea);
-		theLogo.draw (theLogo.graphics);
+		theLogo.draw (theLogo.graphics.get());
 	#endif
 }
 
-static void gui_drawingarea_cb_click (I, GuiDrawingAreaClickEvent event) {
-	(void) void_me;
-	(void) event;
+static void gui_drawingarea_cb_click (Thing /* me */, GuiDrawingArea_ClickEvent /* event */) {
  	GuiThing_hide (theLogo.form);
 }
 
-static void gui_cb_goAway (I) {
-	(void) void_me;
+static void gui_cb_goAway (Thing /* boss */) {
  	GuiThing_hide (theLogo.form);
 }
 
-void praat_showLogo (int autoPopDown) {
+void praat_showLogo (bool autoPopDown) {
 	#if gtk
-		static const gchar *authors [3] = { "Paul Boersma", "David Weenink", NULL };
+		static const gchar *authors [3] = { "Paul Boersma", "David Weenink", nullptr };
 
 		GuiObject dialog = gtk_about_dialog_new ();
 		#define xstr(s) str(s)
@@ -106,26 +101,26 @@ void praat_showLogo (int autoPopDown) {
 		gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (dialog), "GPL");
 		gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (dialog), "http://www.praat.org");
 		//gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (dialog), authors);
-		g_signal_connect (GTK_DIALOG (dialog), "response", G_CALLBACK (gtk_widget_destroy), NULL);
+		g_signal_connect (GTK_DIALOG (dialog), "response", G_CALLBACK (gtk_widget_destroy), nullptr);
 
 		gtk_dialog_run (GTK_DIALOG (dialog));
 
 	#else
 		if (theCurrentPraatApplication -> batch || ! theLogo.draw) return;
 		if (! theLogo.dia) {
-			int width  = theLogo.width_mm  / 25.4 * Gui_getResolution (NULL);
-			int height = theLogo.height_mm / 25.4 * Gui_getResolution (NULL);
+			int width  = theLogo.width_mm  / 25.4 * Gui_getResolution (nullptr);
+			int height = theLogo.height_mm / 25.4 * Gui_getResolution (nullptr);
 			theLogo.dia = GuiDialog_create (theCurrentPraatApplication -> topShell, 100, 100, width, height,
-				U"About", gui_cb_goAway, NULL, 0);
+				U"About", gui_cb_goAway, nullptr, 0);
 			theLogo.form = theLogo.dia;
 			theLogo.drawingArea = GuiDrawingArea_createShown (theLogo.form, 0, width, 0, height,
-				gui_drawingarea_cb_expose, gui_drawingarea_cb_click, NULL, NULL, NULL, 0);
+				gui_drawingarea_cb_expose, gui_drawingarea_cb_click, nullptr, nullptr, nullptr, 0);
 		}
 		GuiThing_show (theLogo.form);
 		GuiThing_show (theLogo.dia);
 		#if motif
 			if (autoPopDown)
-				GuiAddTimeOut (2000, logo_timeOut, (XtPointer) NULL);
+				GuiAddTimeOut (2000, logo_timeOut, (XtPointer) nullptr);
 		#endif
 	#endif
 }
diff --git a/sys/praat_menuCommands.cpp b/sys/praat_menuCommands.cpp
index 68dac91..78c51c0 100644
--- a/sys/praat_menuCommands.cpp
+++ b/sys/praat_menuCommands.cpp
@@ -2,64 +2,62 @@
  *
  * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praatP.h"
 #include "praat_script.h"
 #include "GuiP.h"
 
-#define praat_MAXNUM_FIXED_COMMANDS  1000
-static long theNumberOfCommands = 0;
-static struct structPraat_Command *theCommands;
+static OrderedOf <structPraat_Command> theCommands;
 
-void praat_menuCommands_init (void) {
-	theCommands = Melder_calloc_f (struct structPraat_Command, praat_MAXNUM_FIXED_COMMANDS + 1);
+void praat_menuCommands_init () {
 }
 
 static int compareMenuCommands (const void *void_me, const void *void_thee) {
-	praat_Command me = (praat_Command) void_me, thee = (praat_Command) void_thee;
-	int compare;
+	Praat_Command me = * (Praat_Command *) void_me, thee = * (Praat_Command *) void_thee;
 	if (my window) {
 		if (! thy window) return 1;
-		compare = str32cmp (my window, thy window);
+		int compare = str32cmp (my window, thy window);
 		if (compare) return compare;
 	} else if (thy window) return -1;
 	if (my menu) {
 		if (! thy menu) return 1;
-		compare = str32cmp (my menu, thy menu);
+		int compare = str32cmp (my menu, thy menu);
 		if (compare) return compare;
 	} else if (thy menu) return -1;
 	if (my sortingTail < thy sortingTail) return -1;
 	return 1;
 }
 
-void praat_sortMenuCommands (void) {
-	for (long i = 1; i <= theNumberOfCommands; i ++)
-		theCommands [i]. sortingTail = i;
-	qsort (& theCommands [1], theNumberOfCommands, sizeof (struct structPraat_Command), compareMenuCommands);
+void praat_sortMenuCommands () {
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		command -> sortingTail = i;
+	}
+	qsort (& theCommands.at [1], theCommands.size, sizeof (Praat_Command), compareMenuCommands);
 }
 
 static long lookUpMatchingMenuCommand (const char32 *window, const char32 *menu, const char32 *title) {
 /*
  * A menu command is fully specified by its environment (window + menu) and its title.
  */
-	for (long i = 1; i <= theNumberOfCommands; i ++) {
-		const char32 *tryWindow = theCommands [i]. window;
-		const char32 *tryMenu = theCommands [i]. menu;
-		const char32 *tryTitle = theCommands [i]. title;
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		const char32 *tryWindow = command -> window;
+		const char32 *tryMenu = command -> menu;
+		const char32 *tryTitle = command -> title;
 		if ((window == tryWindow || (window && tryWindow && str32equ (window, tryWindow))) &&
 		    (menu == tryMenu || (menu && tryMenu && str32equ (menu, tryMenu))) &&
 		    (title == tryTitle || (title && tryTitle && str32equ (title, tryTitle)))) return i;
@@ -67,62 +65,50 @@ static long lookUpMatchingMenuCommand (const char32 *window, const char32 *menu,
 	return 0;   // not found
 }
 
-static void do_menu (I, unsigned long modified) {
-	UiCallback callback = (UiCallback) void_me;
-	Melder_assert (callback != NULL);
-	for (long i = 1; i <= theNumberOfCommands; i ++) {
-		praat_Command me = & theCommands [i];
-		if (my callback == callback) {
-			if (my title != NULL && ! str32str (my title, U"...")) {
-				UiHistory_write (U"\n");
-				UiHistory_write_expandQuotes (my title);
-			}
-			try {
-				callback (NULL, 0, NULL, NULL, NULL, my title, modified, NULL);
-			} catch (MelderError) {
-				Melder_flushError (U"Command \"", my title, U"\" not executed.");
-			}
-			praat_updateSelection (); return;
+static void do_menu (Praat_Command me, unsigned long modified) {
+	if (my callback == DO_RunTheScriptFromAnyAddedMenuCommand) {
+		UiHistory_write (U"\nrunScript: ");
+		try {
+			DO_RunTheScriptFromAnyAddedMenuCommand (nullptr, 0, nullptr, my script, nullptr, nullptr, false, nullptr);
+		} catch (MelderError) {
+			Melder_flushError (U"Command \"", my title, U"\" not executed.");
 		}
-		if (my callback == DO_RunTheScriptFromAnyAddedMenuCommand && my script == (void *) void_me) {
-			if (my title != NULL && ! str32str (my title, U"...")) {
-				UiHistory_write (U"\nexecute ");
-				UiHistory_write (my script);
-			} else {
-				UiHistory_write (U"\nexecute \"");
-				UiHistory_write (my script);
-				UiHistory_write (U"\"");
-			}
-			try {
-				DO_RunTheScriptFromAnyAddedMenuCommand (NULL, 0, NULL, my script, NULL, NULL, false, NULL);
-			} catch (MelderError) {
-				Melder_flushError (U"Command \"", my title, U"\" not executed.");
-			}
-			praat_updateSelection (); return;
+		praat_updateSelection (); return;
+	} else {
+		if (my title && ! str32str (my title, U"...")) {
+			UiHistory_write (U"\n");
+			UiHistory_write (my title);
 		}
+		try {
+			my callback (nullptr, 0, nullptr, nullptr, nullptr, my title, modified, nullptr);
+		} catch (MelderError) {
+			Melder_flushError (U"Command \"", my title, U"\" not executed.");
+		}
+		praat_updateSelection (); return;
 	}
 }
 
-static void gui_button_cb_menu (I, GuiButtonEvent event) {
-	do_menu (void_me, event -> shiftKeyPressed | event -> commandKeyPressed | event -> optionKeyPressed | event -> extraControlKeyPressed);
+static void gui_button_cb_menu (Praat_Command me, GuiButtonEvent event) {
+	do_menu (me, event -> shiftKeyPressed | event -> commandKeyPressed | event -> optionKeyPressed | event -> extraControlKeyPressed);
 }
 
-static void gui_cb_menu (GUI_ARGS) {
+static void gui_cb_menu (Praat_Command me, GuiMenuItemEvent event) {
 	bool modified = event -> shiftKeyPressed || event -> commandKeyPressed || event -> optionKeyPressed || event -> extraControlKeyPressed;
-	do_menu (void_me, modified);
+	do_menu (me, modified);
 }
 
 static GuiMenu windowMenuToWidget (const char32 *window, const char32 *menu) {
 	return
 		str32equ (window, U"Picture") ? praat_picture_resolveMenu (menu) :
-		str32equ (window, U"Objects") ? praat_objects_resolveMenu (menu) : NULL;
+		str32equ (window, U"Objects") ? praat_objects_resolveMenu (menu) : nullptr;
 }
 
 GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, const char32 *title /* cattable */,
 	const char32 *after, unsigned long flags, UiCallback callback)
 {
 	long position;
-	int depth = flags, unhidable = FALSE, hidden = FALSE, key = 0;
+	int depth = flags, key = 0;
+	bool unhidable = false, hidden = false;
 	unsigned long guiFlags = 0;
 	if (flags > 7) {
 		depth = ((flags & praat_DEPTH_7) >> 16);
@@ -133,7 +119,7 @@ GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, cons
 	}
 	if (callback && ! title) {
 		Melder_flushError (U"praat_addMenuCommand: command with callback has no title. Window \"", window, U"\", menu \"", menu, U"\".");
-		return NULL;
+		return nullptr;
 	}
 
 	/*
@@ -147,40 +133,30 @@ GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, cons
 			Melder_flushError (U"praat_addMenuCommand: the command \"", title, U"\" cannot be put after \"", after, U"\",\n"
 				U"in the menu \"", menu, U"\" in the window \"", window, U"\"\n"
 				U"because the latter command does not exist.");
-			return NULL;
+			return nullptr;
 		}
 	} else {
-		position = theNumberOfCommands + 1;   // at end
-	}
-
-	/*
-	 * Increment the command area.
-	 */
-	if (theNumberOfCommands >= praat_MAXNUM_FIXED_COMMANDS) {
-		Melder_flushError (U"praat_addMenuCommand: too many menu commands.");
-		return NULL;
+		position = theCommands.size + 1;   // at end
 	}
-	theNumberOfCommands += 1;
 
 	/*
-	 * Make room for insertion.
+	 * Make new command.
 	 */
-	for (long i = theNumberOfCommands; i > position; i --) theCommands [i] = theCommands [i - 1];
-	memset (& theCommands [position], 0, sizeof (struct structPraat_Command));
+	autoPraat_Command command = Thing_new (Praat_Command);
 
-	theCommands [position]. window = Melder_dup_f (window);
-	theCommands [position]. menu = Melder_dup_f (menu);
-	theCommands [position]. title = Melder_dup_f (title);
+	command -> window = Melder_dup_f (window);
+	command -> menu = Melder_dup_f (menu);
+	command -> title = Melder_dup_f (title);
 	trace (U"insert new command \"", title, U"\"");
-	theCommands [position]. depth = depth;
-	theCommands [position]. callback = callback;   // NULL for a separator or cascade button
-	theCommands [position]. executable = callback != NULL;
-	theCommands [position]. script = NULL;
-	theCommands [position]. hidden = hidden;
-	theCommands [position]. unhidable = unhidable;
+	command -> depth = depth;
+	command -> callback = callback;   // null for a separator or cascade button
+	command -> executable = !! callback;
+	command -> script = nullptr;
+	command -> hidden = hidden;
+	command -> unhidable = unhidable;
 
 	if (! theCurrentPraatApplication -> batch) {
-		GuiMenu parentMenu = NULL;
+		GuiMenu parentMenu = nullptr;
 
 		/* WHERE TO PUT IT?
 		 * Determine parent menu widget.
@@ -198,14 +174,15 @@ GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, cons
 			 * The supermenu to put the new command in is the first menu that we find when going up.
 			 */
 			for (long parentPosition = position - 1; parentPosition > 0; parentPosition --) {
-				if (theCommands [parentPosition]. depth == depth - 1) {
+				Praat_Command parentCommand = theCommands.at [parentPosition];
+				if (parentCommand -> depth == depth - 1) {
 					/*
 					 * We found the supermenu.
 					 */
-					if (theCommands [parentPosition]. callback == NULL && theCommands [parentPosition]. title != NULL && theCommands [parentPosition]. title [0] != '-') {
-						if (theCommands [parentPosition]. button == NULL)
+					if (! parentCommand -> callback && parentCommand -> title && parentCommand -> title [0] != U'-') {
+						if (! parentCommand -> button)
 							Melder_fatal (U"No button for ", window, U"/", menu, U"/", title, U".");
-						Thing_cast (GuiMenuItem, parentButton_as_GuiMenuItem, theCommands [parentPosition]. button);
+						Thing_cast (GuiMenuItem, parentButton_as_GuiMenuItem, parentCommand -> button);
 						parentMenu = parentButton_as_GuiMenuItem -> d_menu;
 					}
 					break;
@@ -215,29 +192,30 @@ GuiMenuItem praat_addMenuCommand (const char32 *window, const char32 *menu, cons
 		}
 		if (! parentMenu) {
 			trace (U"WARNING: no parent menu for ", window, U"/", menu, U"/", title, U".");
-			return NULL;
+			return nullptr;
 		}
 
 		/*
 		 * WHAT TO PUT THERE?
 		 */
 
-		if (title == NULL || title [0] == U'-') {
+		if (! title || title [0] == U'-') {
 			trace (U"insert the command as a separator");
-			theCommands [position]. button = GuiMenu_addSeparator (parentMenu);
-			Melder_assert (theCommands [position]. button != NULL);
-		} else if (callback == NULL) {
+			command -> button = GuiMenu_addSeparator (parentMenu);
+			Melder_assert (command -> button);
+		} else if (! callback) {
 			trace (U"insert the command as a submenu");
-			theCommands [position]. button = GuiMenu_createInMenu (parentMenu, title, 0) -> d_menuItem;
-			Melder_assert (theCommands [position]. button != NULL);
+			command -> button = GuiMenu_createInMenu (parentMenu, title, 0) -> d_menuItem.get();
+			Melder_assert (command -> button);
 		} else {
 			trace (U"insert the command as a normal menu item");
-			theCommands [position]. button = GuiMenu_addItem (parentMenu, title, guiFlags, gui_cb_menu, (void *) callback);
-			Melder_assert (theCommands [position]. button != NULL);
+			command -> button = GuiMenu_addItem (parentMenu, title, guiFlags, gui_cb_menu, command.get());
+			Melder_assert (command -> button);
 		}
-		if (hidden) GuiThing_hide (theCommands [position]. button);
+		if (hidden) GuiThing_hide (command -> button);
 	}
-	Thing_cast (GuiMenuItem, button_as_GuiMenuItem, theCommands [position]. button);
+	Thing_cast (GuiMenuItem, button_as_GuiMenuItem, command -> button);
+	theCommands. addItemAtPosition_move (command.move(), position);
 	return button_as_GuiMenuItem;
 }
 
@@ -261,49 +239,37 @@ void praat_addMenuCommandScript (const char32 *window, const char32 *menu, const
 				/*Melder_throw (U"The menu command \"", title, U"\" cannot be put after \"", after, U"\",\n"
 					U"in the menu \"", menu, "\" in the window \"", window, U"\"\n"
 					U"because the latter command does not exist.");*/
-				position = theNumberOfCommands + 1;   // default: at end
+				position = theCommands.size + 1;   // default: at end
 			}
 		} else {
-			position = theNumberOfCommands + 1;   /* At end. */
+			position = theCommands.size + 1;   // at end
 		}
 
 		/*
-		 * Increment the command area.
-		 */
-		if (theNumberOfCommands >= praat_MAXNUM_FIXED_COMMANDS)
-			Melder_throw (U"Too many menu commands (maximum ", praat_MAXNUM_FIXED_COMMANDS, U").");
-		theNumberOfCommands += 1;
-
-		/*
-		 * Make room for insertion.
+		 * Make new command.
 		 */
-		for (long i = theNumberOfCommands; i > position; i --) theCommands [i] = theCommands [i - 1];
-		memset (& theCommands [position], 0, sizeof (struct structPraat_Command));
-
-		/*
-		 * Insert new command.
-		 */
-		theCommands [position]. window = Melder_dup_f (window);
-		theCommands [position]. menu = Melder_dup_f (menu);
-		theCommands [position]. title = str32len (title) ? Melder_dup_f (title) : NULL;   // allow old-fashioned untitled separators
-		theCommands [position]. depth = depth;
-		theCommands [position]. callback = str32len (script) ? DO_RunTheScriptFromAnyAddedMenuCommand : NULL;   // NULL for a separator or cascade button
-		theCommands [position]. executable = str32len (script) != 0;
+		autoPraat_Command command = Thing_new (Praat_Command);
+		command -> window = Melder_dup_f (window);
+		command -> menu = Melder_dup_f (menu);
+		command -> title = str32len (title) ? Melder_dup_f (title) : nullptr;   // allow old-fashioned untitled separators
+		command -> depth = depth;
+		command -> callback = str32len (script) ? DO_RunTheScriptFromAnyAddedMenuCommand : nullptr;   // null for a separator or cascade button
+		command -> executable = str32len (script) != 0;
 		if (str32len (script) == 0) {
-			theCommands [position]. script = Melder_dup_f (U"");   // Empty string, which will be needed to signal origin
+			command -> script = Melder_dup_f (U"");   // empty string, which will be needed to signal origin
 		} else {
 			structMelderFile file = { 0 };
 			Melder_relativePathToFile (script, & file);
-			theCommands [position]. script = Melder_dup_f (Melder_fileToPath (& file));
+			command -> script = Melder_dup_f (Melder_fileToPath (& file));
 		}
-		theCommands [position]. after = str32len (after) ? Melder_dup_f (after) : NULL;
+		command -> after = str32len (after) ? Melder_dup_f (after) : nullptr;
 		if (praatP.phase >= praat_READING_BUTTONS) {
 			static long uniqueID = 0;
-			theCommands [position]. uniqueID = ++ uniqueID;
+			command -> uniqueID = ++ uniqueID;
 		}
 
 		if (! theCurrentPraatApplication -> batch) {
-			GuiMenu parentMenu = NULL;
+			GuiMenu parentMenu = nullptr;
 
 			/* WHERE TO PUT IT?
 			 * Determine parent menu widget.
@@ -314,12 +280,13 @@ void praat_addMenuCommandScript (const char32 *window, const char32 *menu, const
 				parentMenu = windowMenuToWidget (window, menu);   // not a subitem: in the top menu
 			} else {
 				for (long parentPosition = position - 1; parentPosition > 0; parentPosition --) {
-					if (theCommands [parentPosition]. depth == depth - 1) {
-						if (theCommands [parentPosition]. callback == NULL && theCommands [parentPosition]. title != NULL && theCommands [parentPosition]. title [0] != '-') {
-							if (theCommands [parentPosition]. button == NULL)
+					Praat_Command parentCommand = theCommands.at [parentPosition];
+					if (parentCommand -> depth == depth - 1) {
+						if (! parentCommand -> callback && parentCommand -> title && parentCommand -> title [0] != U'-') {
+							if (! parentCommand -> button)
 								Melder_fatal (U"No button for ", window, U"/", menu, U"/", title, U".");
-							Melder_assert (theCommands [parentPosition]. button -> classInfo == classGuiMenuItem);
-							parentMenu = (static_cast <GuiMenuItem> (theCommands [parentPosition]. button)) -> d_menu;
+							Melder_assert (parentCommand -> button -> classInfo == classGuiMenuItem);
+							parentMenu = (static_cast <GuiMenuItem> (parentCommand -> button)) -> d_menu;
 						}
 						break;
 					}
@@ -329,15 +296,16 @@ void praat_addMenuCommandScript (const char32 *window, const char32 *menu, const
 			if (parentMenu) {
 				/* WHAT TO PUT THERE?
 				 */
-				if (title [0] == '\0' || title [0] == '-') {
-					theCommands [position]. button = GuiMenu_addSeparator (parentMenu);
+				if (title [0] == U'\0' || title [0] == U'-') {
+					command -> button = GuiMenu_addSeparator (parentMenu);
 				} else if (script [0] == '\0') {
-					theCommands [position]. button = GuiMenu_createInMenu (parentMenu, title, 0) -> d_menuItem;
+					command -> button = GuiMenu_createInMenu (parentMenu, title, 0) -> d_menuItem.get();
 				} else {
-					theCommands [position]. button = GuiMenu_addItem (parentMenu, title, 0, gui_cb_menu, (void *) theCommands [position]. script);   // not just "script"!!
+					command -> button = GuiMenu_addItem (parentMenu, title, 0, gui_cb_menu, command.get());
 				}
 			}
 		}
+		theCommands. addItemAtPosition_move (command.move(), position);
 
 		if (praatP.phase >= praat_HANDLING_EVENTS) praat_sortMenuCommands ();
 	} catch (MelderError) {
@@ -349,9 +317,9 @@ void praat_hideMenuCommand (const char32 *window, const char32 *menu, const char
 	if (theCurrentPraatApplication -> batch || ! window || ! menu || ! title) return;
 	long found = lookUpMatchingMenuCommand (window, menu, title);
 	if (! found) return;
-	praat_Command command = & theCommands [found];
+	Praat_Command command = theCommands.at [found];
 	if (! command -> hidden && ! command -> unhidable) {
-		command -> hidden = TRUE;
+		command -> hidden = true;
 		if (praatP.phase >= praat_READING_BUTTONS) command -> toggled = ! command -> toggled;
 		if (command -> button) GuiThing_hide (command -> button);
 	}
@@ -361,9 +329,9 @@ void praat_showMenuCommand (const char32 *window, const char32 *menu, const char
 	if (theCurrentPraatApplication -> batch || ! window || ! menu || ! title) return;
 	long found = lookUpMatchingMenuCommand (window, menu, title);
 	if (! found) return;
-	praat_Command command = & theCommands [found];
+	Praat_Command command = theCommands.at [found];
 	if (command -> hidden) {
-		command -> hidden = FALSE;
+		command -> hidden = false;
 		if (praatP.phase >= praat_READING_BUTTONS) command -> toggled = ! command -> toggled;
 		if (command -> button) GuiThing_show (command -> button);
 	}
@@ -371,18 +339,22 @@ void praat_showMenuCommand (const char32 *window, const char32 *menu, const char
 
 void praat_saveMenuCommands (MelderString *buffer) {
 	long maxID = 0;
-	for (long i = 1; i <= theNumberOfCommands; i ++) if (theCommands [i]. uniqueID > maxID) maxID = theCommands [i]. uniqueID;
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		if (command -> uniqueID > maxID)
+			maxID = command -> uniqueID;
+	}
 	for (long id = 1; id <= maxID; id ++)   // sorted
-		for (long i = 1; i <= theNumberOfCommands; i ++) {
-			praat_Command me = & theCommands [i];
+		for (long i = 1; i <= theCommands.size; i ++) {
+			Praat_Command me = theCommands.at [i];
 			if (my uniqueID == id && ! my hidden && my window && my menu && my title) {
 				MelderString_append (buffer, U"Add menu command... \"", my window, U"\" \"", my menu, U"\" \"", my title, U"\" \"",
 					( my after ? my after : U"" ), U"\" ", my depth, U" ", ( my script ? my script : U"" ), U"\n");
 				break;
 			}
 		}
-	for (long i = 1; i <= theNumberOfCommands; i ++) {
-		praat_Command me = & theCommands [i];
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command me = theCommands.at [i];
 		if (my toggled && my window && my menu && my title && ! my uniqueID && ! my script)
 			MelderString_append (buffer, my hidden ? U"Hide" : U"Show", U" menu command... \"",
 				my window, U"\" \"", my menu, U"\" ", my title, U"\n");
@@ -392,58 +364,82 @@ void praat_saveMenuCommands (MelderString *buffer) {
 /***** FIXED BUTTONS *****/
 
 void praat_addFixedButtonCommand (GuiForm parent, const char32 *title, UiCallback callback, int x, int y) {
-	praat_Command me = & theCommands [++ theNumberOfCommands];
+	autoPraat_Command me = Thing_new (Praat_Command);
 	my window = Melder_dup_f (U"Objects");
 	my title = title;
 	my callback = callback;
-	my unhidable = TRUE;
+	my unhidable = true;
 	if (theCurrentPraatApplication -> batch) {
-		my button = NULL;
+		my button = nullptr;
 	} else {
 		GuiThing button = my button = GuiButton_create (parent, x, x + 82, -y - Gui_PUSHBUTTON_HEIGHT, -y,
-			title, gui_button_cb_menu, (void *) callback, 0);   // BUG: shouldn't convert a function pointer to a void pointer
+			title, gui_button_cb_menu, me.get(), 0);
 		GuiThing_setSensitive (button, false);
 		GuiThing_show (button);
 	}
 	my executable = false;
+	theCommands. addItemAtPosition_move (me.move(), 0);
 }
 
 void praat_sensitivizeFixedButtonCommand (const char32 *title, int sensitive) {
-	long i = 1;
-	for (; i <= theNumberOfCommands; i ++)
-		if (str32equ (theCommands [i]. title, title)) break;   // search
-	theCommands [i]. executable = sensitive;
+	Praat_Command commandFound = nullptr;
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		if (str32equ (command -> title, title)) {
+			commandFound = command;
+			break;
+		}
+	}
+	if (! commandFound) Melder_fatal (U"Unkown fixed button <<", title, U">>");
+	commandFound -> executable = sensitive;
 	if (! theCurrentPraatApplication -> batch && ! Melder_backgrounding)
-		GuiThing_setSensitive (theCommands [i]. button, sensitive);
+		GuiThing_setSensitive (commandFound -> button, sensitive);
 }
 
-int praat_doMenuCommand (const char32 *command, const char32 *arguments, Interpreter interpreter) {
-	long i = 1;
-	while (i <= theNumberOfCommands && (! theCommands [i]. executable || ! str32equ (theCommands [i]. title, command) ||
-		(! str32equ (theCommands [i]. window, U"Objects") && ! str32equ (theCommands [i]. window, U"Picture")))) i ++;
-	if (i > theNumberOfCommands) return 0;
-	theCommands [i]. callback (NULL, 0, NULL, arguments, interpreter, command, false, NULL);
+int praat_doMenuCommand (const char32 *title, const char32 *arguments, Interpreter interpreter) {
+	Praat_Command commandFound = nullptr;
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		if (command -> executable && str32equ (command -> title, title) &&
+			(str32equ (command -> window, U"Objects") || str32equ (command -> window, U"Picture")))
+		{
+			commandFound = command;
+			break;
+		}
+	}
+	if (! commandFound) return 0;
+	commandFound -> callback (nullptr, 0, nullptr, arguments, interpreter, title, false, nullptr);
 	return 1;
 }
 
-int praat_doMenuCommand (const char32 *command, int narg, Stackel args, Interpreter interpreter) {
-	long i = 1;
-	while (i <= theNumberOfCommands && (! theCommands [i]. executable || ! str32equ (theCommands [i]. title, command) ||
-		(! str32equ (theCommands [i]. window, U"Objects") && ! str32equ (theCommands [i]. window, U"Picture")))) i ++;
-	if (i > theNumberOfCommands) return 0;
-	theCommands [i]. callback (NULL, narg, args, NULL, interpreter, command, false, NULL);
+int praat_doMenuCommand (const char32 *title, int narg, Stackel args, Interpreter interpreter) {
+	Praat_Command commandFound = nullptr;
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		if (command -> executable && str32equ (command -> title, title) &&
+			(str32equ (command -> window, U"Objects") || str32equ (command -> window, U"Picture")))
+		{
+			commandFound = command;
+			break;
+		}
+	}
+	if (! commandFound) return 0;
+	commandFound -> callback (nullptr, narg, args, nullptr, interpreter, title, false, nullptr);
 	return 1;
 }
 
-long praat_getNumberOfMenuCommands (void) { return theNumberOfCommands; }
+long praat_getNumberOfMenuCommands () { return theCommands.size; }
 
-praat_Command praat_getMenuCommand (long i)
-	{ return i < 1 || i > theNumberOfCommands ? NULL : & theCommands [i]; }
+Praat_Command praat_getMenuCommand (long i)
+	{ return i < 1 || i > theCommands.size ? nullptr : theCommands.at [i]; }
 
 void praat_addCommandsToEditor (Editor me) {
 	const char32 *windowName = my classInfo -> className;
-	for (long i = 1; i <= theNumberOfCommands; i ++) if (str32equ (theCommands [i]. window, windowName)) {
-		Editor_addCommandScript (me, theCommands [i]. menu, theCommands [i]. title, 0, theCommands [i]. script);
+	for (long i = 1; i <= theCommands.size; i ++) {
+		Praat_Command command = theCommands.at [i];
+		if (str32equ (command -> window, windowName)) {
+			Editor_addCommandScript (me, command -> menu, command -> title, 0, command -> script);
+		}
 	}
 }
 
diff --git a/sys/praat_objectMenus.cpp b/sys/praat_objectMenus.cpp
index bd92aa0..9215c36 100644
--- a/sys/praat_objectMenus.cpp
+++ b/sys/praat_objectMenus.cpp
@@ -1,20 +1,19 @@
 /* praat_objectMenus.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -44,7 +43,7 @@ FORM (Rename, U"Rename object", U"Rename...") {
 	LABEL (U"rename object", U"New name:")
 	TEXTFIELD (U"newName", U"")
 	OK2
-{ int IOBJECT; WHERE (SELECTED) SET_STRING (U"newName", NAME) }
+int IOBJECT; WHERE (SELECTED) SET_STRING (U"newName", NAME)
 DO
 	char32 *string = GET_STRING (U"newName");
 	if (theCurrentPraatObjects -> totalSelection == 0)
@@ -54,25 +53,25 @@ DO
 	WHERE (SELECTED) break;
 	praat_cleanUpName (string);   // this is allowed because "string" is local and dispensible
 	#if 0
-	std::u32string newFullName = std::u32string (Thing_className ((Thing) OBJECT)) + U" " + string;
+	std::u32string newFullName = std::u32string (Thing_className (OBJECT) + U" " + string;
 	if (newFullName != std::u32string (FULL_NAME)) {
 		Melder_free (FULL_NAME), FULL_NAME = Melder_dup_f (newFullName.c_str());
 		praat_list_renameAndSelect (IOBJECT, (std::u32string (Melder_integer (ID)) + U". " + newFullName). c_str());
 		for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
-			if (EDITOR [ieditor]) Thing_setName ((Thing) EDITOR [ieditor], newFullName.c_str());
-		Thing_setName ((Thing) OBJECT, string);
+			if (EDITOR [ieditor]) Thing_setName (EDITOR [ieditor], newFullName.c_str());
+		Thing_setName (OBJECT, string);
 	}
 	#else
 	static MelderString fullName { 0 };
-	MelderString_copy (& fullName, Thing_className ((Thing) OBJECT), U" ", string);
+	MelderString_copy (& fullName, Thing_className (OBJECT), U" ", string);
 	if (! str32equ (fullName.string, FULL_NAME)) {
 		Melder_free (FULL_NAME), FULL_NAME = Melder_dup_f (fullName.string);
 		autoMelderString listName;
 		MelderString_append (& listName, ID, U". ", fullName.string);
 		praat_list_renameAndSelect (IOBJECT, listName.string);
 		for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++)
-			if (EDITOR [ieditor]) Thing_setName ((Thing) EDITOR [ieditor], fullName.string);
-		Thing_setName ((Thing) OBJECT, string);
+			if (EDITOR [ieditor]) Thing_setName (EDITOR [ieditor], fullName.string);
+		Thing_setName (OBJECT, string);
 	}
 	#endif
 END2 }
@@ -89,7 +88,7 @@ DO
 		Melder_throw (U"Selection changed!\nCannot copy more than one object at a time.");
 	WHERE (SELECTED) {
 		char32 *name = GET_STRING (U"newName");
-		praat_new (Data_copy ((Data) OBJECT), name);
+		praat_new (Data_copy ((Daata) OBJECT), name);
 	}
 END2 }
 
@@ -98,7 +97,7 @@ DIRECT2 (Info) {
 		Melder_throw (U"Selection changed!\nNo object selected. Cannot query.");
 	if (theCurrentPraatObjects -> totalSelection > 1)
 		Melder_throw (U"Selection changed!\nCannot query more than one object at a time.");
-	WHERE (SELECTED) Thing_infoWithIdAndFile ((Thing) OBJECT, ID, & theCurrentPraatObjects -> list [IOBJECT]. file);
+	WHERE (SELECTED) Thing_infoWithIdAndFile (OBJECT, ID, & theCurrentPraatObjects -> list [IOBJECT]. file);
 END2 }
 
 DIRECT2 (Inspect) {
@@ -108,7 +107,9 @@ DIRECT2 (Inspect) {
 		Melder_throw (U"Cannot inspect data from batch.");
 	} else {
 		WHERE (SELECTED) {
-			praat_installEditor (DataEditor_create (ID_AND_FULL_NAME, OBJECT), IOBJECT);
+			autoDataEditor editor = DataEditor_create (ID_AND_FULL_NAME, OBJECT);
+			praat_installEditor (editor.get(), IOBJECT);
+			editor.releaseToUser();
 		}
 	}
 END2 }
@@ -135,40 +136,40 @@ GuiMenu praat_objects_resolveMenu (const char32 *menu) {
 		#else
 			str32equ (menu, U"ApplicationHelp") ? helpMenu :
 		#endif
-		newMenu;   /* Default. */
+		newMenu;   // default
 }
 
 /********** Callbacks of the Praat menu. **********/
 
 DIRECT2 (About) {
-	praat_showLogo (FALSE);
+	praat_showLogo (false);
 END2 }
 
 DIRECT2 (praat_newScript) {
-	autoScriptEditor editor = ScriptEditor_createFromText (NULL, NULL);
-	editor.transfer();   // the user becomes the owner
+	autoScriptEditor editor = ScriptEditor_createFromText (nullptr, nullptr);
+	editor.releaseToUser();
 END2 }
 
 DIRECT2 (praat_openScript) {
-	autoScriptEditor editor = ScriptEditor_createFromText (NULL, NULL);
-	TextEditor_showOpen (editor.peek());
-	editor.transfer();   // the user becomes the owner
+	autoScriptEditor editor = ScriptEditor_createFromText (nullptr, nullptr);
+	TextEditor_showOpen (editor.get());
+	editor.releaseToUser();
 END2 }
 
-static ButtonEditor theButtonEditor;
+static ButtonEditor theReferenceToTheOnlyButtonEditor;
 
-static void cb_ButtonEditor_destruction (Editor editor, void *closure) {
-	(void) editor;
-	(void) closure;
-	theButtonEditor = NULL;
+static void cb_ButtonEditor_destruction (Editor /* editor */) {
+	theReferenceToTheOnlyButtonEditor = nullptr;
 }
 
 DIRECT2 (praat_editButtons) {
-	if (theButtonEditor) {
-		Editor_raise (theButtonEditor);
+	if (theReferenceToTheOnlyButtonEditor) {
+		Editor_raise (theReferenceToTheOnlyButtonEditor);
 	} else {
-		theButtonEditor = ButtonEditor_create ();
-		Editor_setDestructionCallback (theButtonEditor, cb_ButtonEditor_destruction, NULL);
+		autoButtonEditor editor = ButtonEditor_create ();
+		Editor_setDestructionCallback (editor.get(), cb_ButtonEditor_destruction);
+		theReferenceToTheOnlyButtonEditor = editor.get();
+		editor.releaseToUser();
 	}
 END2 }
 
@@ -263,7 +264,7 @@ DO
 	Melder_setOutputEncoding (GET_ENUM (kMelder_textOutputEncoding, U"Output encoding"));
 END2 }
 
-FORM (GraphicsCjkFontStyleSettings, U"CJK font style preferences", 0) {
+FORM (GraphicsCjkFontStyleSettings, U"CJK font style preferences", nullptr) {
 	OPTIONMENU_ENUM (U"CJK font style", kGraphics_cjkFontStyle, DEFAULT)
 	OK2
 SET_ENUM (U"CJK font style", kGraphics_cjkFontStyle, theGraphicsCjkFontStyle)
@@ -282,15 +283,9 @@ FORM (praat_calculator, U"Calculator", U"Calculator") {
 	OK2
 DO
 	struct Formula_Result result;
-	if (interpreter == NULL) {
-		interpreter = Interpreter_create (NULL, NULL);
-		try {
-			Interpreter_anyExpression (interpreter, GET_STRING (U"expression"), & result);
-			forget (interpreter);
-		} catch (MelderError) {
-			forget (interpreter);
-			throw;
-		}
+	if (! interpreter) {
+		autoInterpreter tempInterpreter = Interpreter_create (nullptr, nullptr);
+		Interpreter_anyExpression (tempInterpreter.get(), GET_STRING (U"expression"), & result);
 	} else {
 		Interpreter_anyExpression (interpreter, GET_STRING (U"expression"), & result);
 	}
@@ -358,7 +353,7 @@ END2 }
 
 /********** Callbacks of the Technical menu. **********/
 
-FORM (praat_debug, U"Set debugging options", 0) {
+FORM (praat_debug, U"Set debugging options", nullptr) {
 	LABEL (U"", U"If you switch Tracing on, Praat will write lots of detailed ")
 	LABEL (U"", U"information about what goes on in Praat")
 	structMelderDir dir;
@@ -370,7 +365,7 @@ FORM (praat_debug, U"Set debugging options", 0) {
 		MelderDir_getFile (& dir, U"Tracing.txt", & file);
 	#endif
 	LABEL (U"", Melder_cat (U"to ", Melder_fileToPath (& file), U"."))
-	BOOLEAN (U"Tracing", 0)
+	BOOLEAN (U"Tracing", false)
 	LABEL (U"", U"Setting the following to anything other than zero")
 	LABEL (U"", U"will alter the behaviour of Praat")
 	LABEL (U"", U"in unpredictable ways.")
@@ -387,6 +382,10 @@ DIRECT2 (praat_listReadableTypesOfObjects) {
 	Thing_listReadableClasses ();
 END2 }
 
+DIRECT2 (praat_reportSystemProperties) {
+	praat_reportSystemProperties ();
+END2 }
+
 DIRECT2 (praat_reportGraphicalProperties) {
 	praat_reportGraphicalProperties ();
 END2 }
@@ -406,22 +405,28 @@ END2 }
 /********** Callbacks of the Open menu. **********/
 
 static void readFromFile (MelderFile file) {
-	autoData object = (Data) Data_readFromFile (file);
-	if (object.peek() == NULL) return;
-	if (Thing_isa (object.peek(), classManPages) && ! Melder_batch) {
-		ManPages pages = (ManPages) object.peek();
-		ManPage firstPage = static_cast<ManPage> (pages -> pages -> item [1]);
-		Manual_create (firstPage -> title, object.transfer(), true);
-		if (pages -> executable)
+	autoDaata object = Data_readFromFile (file);
+	if (! object.get()) return;
+	if (Thing_isa (object.get(), classManPages) && ! Melder_batch) {
+		ManPages manPages = (ManPages) object.get();
+		ManPage firstPage = manPages -> pages.at [1];
+		autoManual manual = Manual_create (firstPage -> title, object.releaseToAmbiguousOwner(), true);
+		if (manPages -> executable)
 			Melder_warning (U"These manual pages contain links to executable scripts.\n"
 				"Only navigate these pages if you trust their author!");
+		manual.releaseToUser();
 		return;
 	}
-	if (Thing_isa (object.peek(), classScript) && ! Melder_batch) {
-		ScriptEditor_createFromScript (NULL, (Script) object.peek());
+	if (Thing_isa (object.get(), classScript) && ! Melder_batch) {
+		autoScriptEditor editor = ScriptEditor_createFromScript_canBeNull (nullptr, (Script) object.get());
+		if (! editor) {
+			(void) 0;   // the script was already open, and the user has been notified of that
+		} else {
+			editor.releaseToUser();
+		}
 		return;
 	}
-	praat_newWithFile (object.transfer(), file, MelderFile_name (file));
+	praat_newWithFile (object.move(), file, MelderFile_name (file));
 	praat_updateSelection ();
 }
 
@@ -431,47 +436,47 @@ END2 }
 
 /********** Callbacks of the Save menu. **********/
 
-FORM_WRITE2 (Data_writeToTextFile, U"Save Object(s) as one text file", 0, 0) {
+FORM_WRITE2 (Data_writeToTextFile, U"Save Object(s) as one text file", nullptr, nullptr) {
 	if (theCurrentPraatObjects -> totalSelection == 1) {
 		LOOP {
-			iam (Data);
+			iam (Daata);
 			Data_writeToTextFile (me, file);
 		}
 	} else {
 		autoCollection set = praat_getSelectedObjects ();
-		Data_writeToTextFile (set.peek(), file);
+		Data_writeToTextFile (set.get(), file);
 	}
 END2 }
 
-FORM_WRITE2 (Data_writeToShortTextFile, U"Save Object(s) as one short text file", 0, 0) {
+FORM_WRITE2 (Data_writeToShortTextFile, U"Save Object(s) as one short text file", nullptr, nullptr) {
 	if (theCurrentPraatObjects -> totalSelection == 1) {
 		LOOP {
-			iam (Data);
+			iam (Daata);
 			Data_writeToShortTextFile (me, file);
 		}
 	} else {
 		autoCollection set = praat_getSelectedObjects ();
-		Data_writeToShortTextFile (set.peek(), file);
+		Data_writeToShortTextFile (set.get(), file);
 	}
 END2 }
 
-FORM_WRITE2 (Data_writeToBinaryFile, U"Save Object(s) as one binary file", 0, 0) {
+FORM_WRITE2 (Data_writeToBinaryFile, U"Save Object(s) as one binary file", nullptr, nullptr) {
 	if (theCurrentPraatObjects -> totalSelection == 1) {
 		LOOP {
-			iam (Data);
+			iam (Daata);
 			Data_writeToBinaryFile (me, file);
 		}
 	} else {
 		autoCollection set = praat_getSelectedObjects ();
-		Data_writeToBinaryFile (set.peek(), file);
+		Data_writeToBinaryFile (set.get(), file);
 	}
 END2 }
 
-FORM (ManPages_saveToHtmlDirectory, U"Save all pages as HTML files", 0) {
+FORM (ManPages_saveToHtmlDirectory, U"Save all pages as HTML files", nullptr) {
 	LABEL (U"", U"Type a directory name:")
 	TEXTFIELD (U"directory", U"")
 	OK2
-structMelderDir currentDirectory = { { 0 } };
+structMelderDir currentDirectory { { 0 } };
 Melder_getDefaultDir (& currentDirectory);
 SET_STRING (U"directory", Melder_dirToPath (& currentDirectory))
 DO
@@ -485,12 +490,13 @@ END2 }
 DIRECT2 (ManPages_view) {
 	LOOP {
 		iam (ManPages);
-		ManPage firstPage = static_cast<ManPage> (my pages -> item [1]);
+		ManPage firstPage = my pages.at [1];
 		autoManual manual = Manual_create (firstPage -> title, me, false);
 		if (my executable)
 			Melder_warning (U"These manual pages contain links to executable scripts.\n"
 				"Only navigate these pages if you trust their author!");
-		praat_installEditor (manual.transfer(), IOBJECT);
+		praat_installEditor (manual.get(), IOBJECT);
+		manual.releaseToUser();
 	}
 END2 }
 
@@ -503,11 +509,12 @@ FORM (SearchManual, U"Search manual", U"Manual") {
 DO
 	if (theCurrentPraatApplication -> batch)
 		Melder_throw (U"Cannot view a manual from batch.");
-	Manual manPage = Manual_create (U"Intro", theCurrentPraatApplication -> manPages, false);
-	Manual_search (manPage, GET_STRING (U"query"));
+	autoManual manual = Manual_create (U"Intro", theCurrentPraatApplication -> manPages, false);
+	Manual_search (manual.get(), GET_STRING (U"query"));
+	manual.releaseToUser();
 END2 }
 
-FORM (GoToManualPage, U"Go to manual page", 0) {
+FORM (GoToManualPage, U"Go to manual page", nullptr) {
 	{long numberOfPages;
 	const char32 **pages = ManPages_getTitles (theCurrentPraatApplication -> manPages, & numberOfPages);
 	LIST (U"Page", numberOfPages, pages, 1)}
@@ -515,15 +522,16 @@ FORM (GoToManualPage, U"Go to manual page", 0) {
 DO
 	if (theCurrentPraatApplication -> batch)
 		Melder_throw (U"Cannot view a manual from batch.");
-	Manual manPage = Manual_create (U"Intro", theCurrentPraatApplication -> manPages, false);
-	HyperPage_goToPage_i (manPage, GET_INTEGER (U"Page"));
+	autoManual manual = Manual_create (U"Intro", theCurrentPraatApplication -> manPages, false);
+	HyperPage_goToPage_i (manual.get(), GET_INTEGER (U"Page"));
+	manual.releaseToUser();
 END2 }
 
-FORM (WriteManualToHtmlDirectory, U"Save all pages as HTML files", 0) {
+FORM (WriteManualToHtmlDirectory, U"Save all pages as HTML files", nullptr) {
 	LABEL (U"", U"Type a directory name:")
 	TEXTFIELD (U"directory", U"")
 	OK2
-structMelderDir currentDirectory = { { 0 } };
+structMelderDir currentDirectory { { 0 } };
 Melder_getDefaultDir (& currentDirectory);
 SET_STRING (U"directory", Melder_dirToPath (& currentDirectory))
 DO
@@ -533,7 +541,7 @@ END2 }
 
 /********** Menu descriptions. **********/
 
-void praat_show (void) {
+void praat_show () {
 	/*
 	 * (De)sensitivize the fixed buttons as appropriate for the current selection.
 	 */
@@ -543,8 +551,8 @@ void praat_show (void) {
 	praat_sensitivizeFixedButtonCommand (U"Info", theCurrentPraatObjects -> totalSelection == 1);
 	praat_sensitivizeFixedButtonCommand (U"Inspect", theCurrentPraatObjects -> totalSelection != 0);
 	praat_actions_show ();
-	if (theCurrentPraatApplication == & theForegroundPraatApplication && theButtonEditor)
-		Editor_dataChanged (theButtonEditor);
+	if (theCurrentPraatApplication == & theForegroundPraatApplication && theReferenceToTheOnlyButtonEditor)
+		Editor_dataChanged (theReferenceToTheOnlyButtonEditor);
 }
 
 /********** Menu descriptions. **********/
@@ -557,21 +565,21 @@ void praat_addFixedButtons (GuiWindow window) {
 	praat_addFixedButtonCommand (window, U"Remove", DO_Remove, 8, 10);
 }
 
-static void searchProc (void) {
-	DO_SearchManual (NULL, 0, NULL, NULL, NULL, NULL, false, NULL);
+static void searchProc () {
+	DO_SearchManual (nullptr, 0, nullptr, nullptr, nullptr, nullptr, false, nullptr);
 }
 
 static MelderString itemTitle_about { 0 };
 
-static Any scriptRecognizer (int nread, const char *header, MelderFile file) {
+static autoDaata scriptRecognizer (int nread, const char *header, MelderFile file) {
 	const char32 *name = MelderFile_name (file);
-	if (nread < 2) return NULL;
+	if (nread < 2) return autoDaata ();
 	if ((header [0] == '#' && header [1] == '!') || str32str (name, U".praat") == name + str32len (name) - 6
 	    || str32str (name, U".html") == name + str32len (name) - 5)
 	{
 		return Script_createFromFile (file);
 	}
-	return NULL;
+	return autoDaata ();
 }
 
 static void cb_openDocument (MelderFile file) {
@@ -613,10 +621,10 @@ void praat_addMenus (GuiWindow window) {
 	 */
 	if (! theCurrentPraatApplication -> batch) {
 		#ifdef macintosh
-			praatMenu = GuiMenu_createInWindow (NULL, U"\024", 0);
+			praatMenu = GuiMenu_createInWindow (nullptr, U"\024", 0);
 			#if cocoa
-				editMenu = GuiMenu_createInWindow (NULL, U"Edit", 0);
-				windowMenu = GuiMenu_createInWindow (NULL, U"Window", 0);
+				editMenu = GuiMenu_createInWindow (nullptr, U"Edit", 0);
+				windowMenu = GuiMenu_createInWindow (nullptr, U"Window", 0);
 			#endif
 		#else
 			praatMenu = GuiMenu_createInWindow (window, U"Praat", 0);
@@ -625,87 +633,88 @@ void praat_addMenus (GuiWindow window) {
 		readMenu = GuiMenu_createInWindow (window, U"Open", 0);
 		praat_actions_createWriteMenu (window);
 		#ifdef macintosh
-			applicationHelpMenu = GuiMenu_createInWindow (NULL, U"Help", 0);
+			applicationHelpMenu = GuiMenu_createInWindow (nullptr, U"Help", 0);
 		#endif
 		helpMenu = GuiMenu_createInWindow (window, U"Help", 0);
 	}
 	
 	MelderString_append (& itemTitle_about, U"About ", praatP.title, U"...");
 	#ifdef macintosh
-		praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, 0, praat_UNHIDABLE, DO_About);
+		praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, nullptr, praat_UNHIDABLE, DO_About);
 		#if cocoa
 			/*
 			 * HACK: give the following command weird names,
 			 * because otherwise they may be called from a script.
 			 * (we add three alt-spaces)
 			 */
-			praat_addMenuCommand (U"Objects", U"Edit", U"Cut   ", 0, praat_UNHIDABLE + 'X', DO_praat_cut);
-			praat_addMenuCommand (U"Objects", U"Edit", U"Copy   ", 0, praat_UNHIDABLE + 'C', DO_praat_copy);
-			praat_addMenuCommand (U"Objects", U"Edit", U"Paste   ", 0, praat_UNHIDABLE + 'V', DO_praat_paste);
-			praat_addMenuCommand (U"Objects", U"Window", U"Minimize   ", 0, praat_UNHIDABLE, DO_praat_minimize);
-			praat_addMenuCommand (U"Objects", U"Window", U"Zoom   ", 0, praat_UNHIDABLE, DO_praat_zoom);
-			praat_addMenuCommand (U"Objects", U"Window", U"Close   ", 0, 'W', DO_praat_close);
+			praat_addMenuCommand (U"Objects", U"Edit", U"Cut   ", nullptr, praat_UNHIDABLE + 'X', DO_praat_cut);
+			praat_addMenuCommand (U"Objects", U"Edit", U"Copy   ", nullptr, praat_UNHIDABLE + 'C', DO_praat_copy);
+			praat_addMenuCommand (U"Objects", U"Edit", U"Paste   ", nullptr, praat_UNHIDABLE + 'V', DO_praat_paste);
+			praat_addMenuCommand (U"Objects", U"Window", U"Minimize   ", nullptr, praat_UNHIDABLE, DO_praat_minimize);
+			praat_addMenuCommand (U"Objects", U"Window", U"Zoom   ", nullptr, praat_UNHIDABLE, DO_praat_zoom);
+			praat_addMenuCommand (U"Objects", U"Window", U"Close   ", nullptr, 'W', DO_praat_close);
 		#endif
 	#endif
 	#ifdef UNIX
-		praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, 0, praat_UNHIDABLE, DO_About);
+		praat_addMenuCommand (U"Objects", U"Praat", itemTitle_about.string, nullptr, praat_UNHIDABLE, DO_About);
 	#endif
-	praat_addMenuCommand (U"Objects", U"Praat", U"-- script --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Praat", U"New Praat script", 0, 0, DO_praat_newScript);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Open Praat script...", 0, 0, DO_praat_openScript);
-	praat_addMenuCommand (U"Objects", U"Praat", U"-- buttons --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Add menu command...", 0, praat_HIDDEN, DO_praat_addMenuCommand);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Hide menu command...", 0, praat_HIDDEN, DO_praat_hideMenuCommand);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Show menu command...", 0, praat_HIDDEN, DO_praat_showMenuCommand);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Add action command...", 0, praat_HIDDEN, DO_praat_addAction);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Hide action command...", 0, praat_HIDDEN, DO_praat_hideAction);
-	praat_addMenuCommand (U"Objects", U"Praat", U"Show action command...", 0, praat_HIDDEN, DO_praat_showAction);
-
-	GuiMenuItem menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Goodies", 0, praat_UNHIDABLE, 0);
-	goodiesMenu = menuItem ? menuItem -> d_menu : NULL;
-	praat_addMenuCommand (U"Objects", U"Goodies", U"Calculator...", 0, 'U', DO_praat_calculator);
-	praat_addMenuCommand (U"Objects", U"Goodies", U"Report difference of two proportions...", 0, 0, DO_praat_reportDifferenceOfTwoProportions);
-
-	menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Preferences", 0, praat_UNHIDABLE, 0);
-	preferencesMenu = menuItem ? menuItem -> d_menu : NULL;
-	praat_addMenuCommand (U"Objects", U"Preferences", U"Buttons...", 0, praat_UNHIDABLE, DO_praat_editButtons);   /* Cannot be hidden. */
-	praat_addMenuCommand (U"Objects", U"Preferences", U"-- encoding prefs --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"Text reading preferences...", 0, 0, DO_TextInputEncodingSettings);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"Text writing preferences...", 0, 0, DO_TextOutputEncodingSettings);
-	praat_addMenuCommand (U"Objects", U"Preferences", U"CJK font style preferences...", 0, 0, DO_GraphicsCjkFontStyleSettings);
-
-	menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Technical", 0, praat_UNHIDABLE, 0);
-	technicalMenu = menuItem ? menuItem -> d_menu : NULL;
-	praat_addMenuCommand (U"Objects", U"Technical", U"List readable types of objects", 0, 0, DO_praat_listReadableTypesOfObjects);
-	praat_addMenuCommand (U"Objects", U"Technical", U"Report memory use", 0, 0, DO_praat_reportMemoryUse);
-	praat_addMenuCommand (U"Objects", U"Technical", U"Report integer properties", 0, 0, DO_praat_reportIntegerProperties);
-	praat_addMenuCommand (U"Objects", U"Technical", U"Report text properties", 0, 0, DO_praat_reportTextProperties);
-	praat_addMenuCommand (U"Objects", U"Technical", U"Report graphical properties", 0, 0, DO_praat_reportGraphicalProperties);
-	praat_addMenuCommand (U"Objects", U"Technical", U"Debug...", 0, 0, DO_praat_debug);
-
-	praat_addMenuCommand (U"Objects", U"Open", U"Read from file...", 0, praat_ATTRACTIVE + 'O', DO_Data_readFromFile);
-
-	praat_addAction1 (classData, 0, U"Save as text file...", 0, 0, DO_Data_writeToTextFile);
-	praat_addAction1 (classData, 0, U"Write to text file...", 0, praat_HIDDEN, DO_Data_writeToTextFile);
-	praat_addAction1 (classData, 0, U"Save as short text file...", 0, 0, DO_Data_writeToShortTextFile);
-	praat_addAction1 (classData, 0, U"Write to short text file...", 0, praat_HIDDEN, DO_Data_writeToShortTextFile);
-	praat_addAction1 (classData, 0, U"Save as binary file...", 0, 0, DO_Data_writeToBinaryFile);
-	praat_addAction1 (classData, 0, U"Write to binary file...", 0, praat_HIDDEN, DO_Data_writeToBinaryFile);
-
-	praat_addAction1 (classManPages, 1, U"Save to HTML directory...", 0, 0, DO_ManPages_saveToHtmlDirectory);
-	praat_addAction1 (classManPages, 1, U"View", 0, 0, DO_ManPages_view);
+	praat_addMenuCommand (U"Objects", U"Praat", U"-- script --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Praat", U"New Praat script", nullptr, 0, DO_praat_newScript);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Open Praat script...", nullptr, 0, DO_praat_openScript);
+	praat_addMenuCommand (U"Objects", U"Praat", U"-- buttons --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Add menu command...", nullptr, praat_HIDDEN, DO_praat_addMenuCommand);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Hide menu command...", nullptr, praat_HIDDEN, DO_praat_hideMenuCommand);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Show menu command...", nullptr, praat_HIDDEN, DO_praat_showMenuCommand);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Add action command...", nullptr, praat_HIDDEN, DO_praat_addAction);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Hide action command...", nullptr, praat_HIDDEN, DO_praat_hideAction);
+	praat_addMenuCommand (U"Objects", U"Praat", U"Show action command...", nullptr, praat_HIDDEN, DO_praat_showAction);
+
+	GuiMenuItem menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Goodies", nullptr, praat_UNHIDABLE, nullptr);
+	goodiesMenu = menuItem ? menuItem -> d_menu : nullptr;
+	praat_addMenuCommand (U"Objects", U"Goodies", U"Calculator...", nullptr, 'U', DO_praat_calculator);
+	praat_addMenuCommand (U"Objects", U"Goodies", U"Report difference of two proportions...", nullptr, 0, DO_praat_reportDifferenceOfTwoProportions);
+
+	menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Preferences", nullptr, praat_UNHIDABLE, nullptr);
+	preferencesMenu = menuItem ? menuItem -> d_menu : nullptr;
+	praat_addMenuCommand (U"Objects", U"Preferences", U"Buttons...", nullptr, praat_UNHIDABLE, DO_praat_editButtons);   /* Cannot be hidden. */
+	praat_addMenuCommand (U"Objects", U"Preferences", U"-- encoding prefs --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"Text reading preferences...", nullptr, 0, DO_TextInputEncodingSettings);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"Text writing preferences...", nullptr, 0, DO_TextOutputEncodingSettings);
+	praat_addMenuCommand (U"Objects", U"Preferences", U"CJK font style preferences...", nullptr, 0, DO_GraphicsCjkFontStyleSettings);
+
+	menuItem = praat_addMenuCommand (U"Objects", U"Praat", U"Technical", nullptr, praat_UNHIDABLE, nullptr);
+	technicalMenu = menuItem ? menuItem -> d_menu : nullptr;
+	praat_addMenuCommand (U"Objects", U"Technical", U"List readable types of objects", nullptr, 0, DO_praat_listReadableTypesOfObjects);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report memory use", nullptr, 0, DO_praat_reportMemoryUse);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report integer properties", nullptr, 0, DO_praat_reportIntegerProperties);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report text properties", nullptr, 0, DO_praat_reportTextProperties);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report system properties", nullptr, 0, DO_praat_reportSystemProperties);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Report graphical properties", nullptr, 0, DO_praat_reportGraphicalProperties);
+	praat_addMenuCommand (U"Objects", U"Technical", U"Debug...", nullptr, 0, DO_praat_debug);
+
+	praat_addMenuCommand (U"Objects", U"Open", U"Read from file...", nullptr, praat_ATTRACTIVE + 'O', DO_Data_readFromFile);
+
+	praat_addAction1 (classDaata, 0, U"Save as text file...", nullptr, 0, DO_Data_writeToTextFile);
+	praat_addAction1 (classDaata, 0, U"Write to text file...", nullptr, praat_HIDDEN, DO_Data_writeToTextFile);
+	praat_addAction1 (classDaata, 0, U"Save as short text file...", nullptr, 0, DO_Data_writeToShortTextFile);
+	praat_addAction1 (classDaata, 0, U"Write to short text file...", nullptr, praat_HIDDEN, DO_Data_writeToShortTextFile);
+	praat_addAction1 (classDaata, 0, U"Save as binary file...", nullptr, 0, DO_Data_writeToBinaryFile);
+	praat_addAction1 (classDaata, 0, U"Write to binary file...", nullptr, praat_HIDDEN, DO_Data_writeToBinaryFile);
+
+	praat_addAction1 (classManPages, 1, U"Save to HTML directory...", nullptr, 0, DO_ManPages_saveToHtmlDirectory);
+	praat_addAction1 (classManPages, 1, U"View", nullptr, 0, DO_ManPages_view);
 }
 
-void praat_addMenus2 (void) {
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"-- manual --", 0, 0, 0);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Go to manual page...", 0, 0, DO_GoToManualPage);
-	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Write manual to HTML directory...", 0, praat_HIDDEN, DO_WriteManualToHtmlDirectory);
+void praat_addMenus2 () {
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"-- manual --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Go to manual page...", nullptr, 0, DO_GoToManualPage);
+	praat_addMenuCommand (U"Objects", U"ApplicationHelp", U"Write manual to HTML directory...", nullptr, praat_HIDDEN, DO_WriteManualToHtmlDirectory);
 	praat_addMenuCommand (U"Objects", U"ApplicationHelp",
 		Melder_cat (U"Search ", praatP.title, U" manual..."),
-		0, 'M', DO_SearchManual);
+		nullptr, 'M', DO_SearchManual);
 	#ifdef _WIN32
-		praat_addMenuCommand (U"Objects", U"Help", U"-- about --", 0, 0, 0);
-		praat_addMenuCommand (U"Objects", U"Help", itemTitle_about.string, 0, praat_UNHIDABLE, DO_About);
+		praat_addMenuCommand (U"Objects", U"Help", U"-- about --", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Objects", U"Help", itemTitle_about.string, nullptr, praat_UNHIDABLE, DO_About);
 	#endif
 
 	#if defined (macintosh) || defined (_WIN32)
diff --git a/sys/praat_picture.cpp b/sys/praat_picture.cpp
index cebac92..e84fb3e 100644
--- a/sys/praat_picture.cpp
+++ b/sys/praat_picture.cpp
@@ -1,20 +1,19 @@
 /* praat_picture.cpp
  *
- * Copyright (C) 1992-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2012,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "praatP.h"
@@ -27,7 +26,7 @@
 
 static bool praat_mouseSelectsInnerViewport;
 
-void praat_picture_prefs (void) {
+void praat_picture_prefs () {
 	Preferences_addEnum (U"Picture.font", & theCurrentPraatPicture -> font, kGraphics_font, kGraphics_font_DEFAULT);
 	Preferences_addInt (U"Picture.fontSize", & theCurrentPraatPicture -> fontSize, 10);
 	Preferences_addBool (U"Picture.mouseSelectsInnerViewport", & praat_mouseSelectsInnerViewport, false);
@@ -35,7 +34,7 @@ void praat_picture_prefs (void) {
 
 /***** static variable *****/
 
-static Picture praat_picture;
+static autoPicture praat_picture;
 
 /********** CALLBACKS OF THE PICTURE MENUS **********/
 
@@ -43,10 +42,10 @@ static Picture praat_picture;
 
 static GuiMenuItem praatButton_fonts [1 + kGraphics_font_MAX];
 
-static void updateFontMenu (void) {
+static void updateFontMenu () {
 	if (! theCurrentPraatApplication -> batch) {
 		if (theCurrentPraatPicture -> font < kGraphics_font_MIN) theCurrentPraatPicture -> font = kGraphics_font_MIN;
-		if (theCurrentPraatPicture -> font > kGraphics_font_MAX) theCurrentPraatPicture -> font = kGraphics_font_MAX;   // we no longer have New Century Schoolbook
+		if (theCurrentPraatPicture -> font > kGraphics_font_MAX) theCurrentPraatPicture -> font = kGraphics_font_MAX;
 		for (int i = kGraphics_font_MIN; i <= kGraphics_font_MAX; i ++) {
 			GuiMenuItem_check (praatButton_fonts [i], theCurrentPraatPicture -> font == i);
 		}
@@ -70,7 +69,7 @@ DIRECT (Courier)   { setFont (kGraphics_font_COURIER);   } END
 /***** "Font" MENU: size part *****/
 
 static GuiMenuItem praatButton_10, praatButton_12, praatButton_14, praatButton_18, praatButton_24;
-static void updateSizeMenu (void) {
+static void updateSizeMenu () {
 	if (! theCurrentPraatApplication -> batch) {
 		GuiMenuItem_check (praatButton_10, theCurrentPraatPicture -> fontSize == 10);
 		GuiMenuItem_check (praatButton_12, theCurrentPraatPicture -> fontSize == 12);
@@ -130,7 +129,7 @@ END2 }
 /***** "Select" MENU *****/
 
 static GuiMenuItem praatButton_innerViewport, praatButton_outerViewport;
-static void updateViewportMenu (void) {
+static void updateViewportMenu () {
 	if (! theCurrentPraatApplication -> batch) {
 		GuiMenuItem_check (praatButton_innerViewport, praat_mouseSelectsInnerViewport ? 1 : 0);
 		GuiMenuItem_check (praatButton_outerViewport, praat_mouseSelectsInnerViewport ? 0 : 1);
@@ -142,7 +141,7 @@ DIRECT (MouseSelectsInnerViewport) {
 		Melder_throw (U"Mouse commands are not available inside pictures.");
 	{// scope
 		autoPraatPicture picture;
-		Picture_setMouseSelectsInnerViewport (praat_picture, praat_mouseSelectsInnerViewport = true);
+		Picture_setMouseSelectsInnerViewport (praat_picture.get(), praat_mouseSelectsInnerViewport = true);
 	}
 	updateViewportMenu ();
 } END
@@ -152,7 +151,7 @@ DIRECT (MouseSelectsOuterViewport) {
 		Melder_throw (U"Mouse commands are not available inside pictures.");
 	{// scope
 		autoPraatPicture picture;
-		Picture_setMouseSelectsInnerViewport (praat_picture, praat_mouseSelectsInnerViewport = false);
+		Picture_setMouseSelectsInnerViewport (praat_picture.get(), praat_mouseSelectsInnerViewport = false);
 	}
 	updateViewportMenu ();
 } END
@@ -208,7 +207,7 @@ DO
 		if (top > bottom) { double temp; temp = top; top = bottom; bottom = temp; }
 		theCurrentPraatPicture -> y1NDC = 12-bottom - ymargin;
 		theCurrentPraatPicture -> y2NDC = 12-top + ymargin;
-		Picture_setSelection (praat_picture, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC, false);
+		Picture_setSelection (praat_picture.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC, false);
 		Graphics_updateWs (GRAPHICS);
 	} else if (theCurrentPraatObjects != & theForegroundPraatObjects) {   // in manual?
 		if (top > bottom) { double temp; temp = top; top = bottom; bottom = temp; }
@@ -261,7 +260,7 @@ DO
 		if (top > bottom) { double temp; temp = top; top = bottom; bottom = temp; }
 		theCurrentPraatPicture -> y1NDC = 12-bottom;
 		theCurrentPraatPicture -> y2NDC = 12-top;
-		Picture_setSelection (praat_picture, theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC, false);
+		Picture_setSelection (praat_picture.get(), theCurrentPraatPicture -> x1NDC, theCurrentPraatPicture -> x2NDC, theCurrentPraatPicture -> y1NDC, theCurrentPraatPicture -> y2NDC, false);
 		Graphics_updateWs (GRAPHICS);   // BUG: needed on Cocoa, but why?
 	} else if (theCurrentPraatObjects != & theForegroundPraatObjects) {   // in manual?
 		if (top > bottom) { double temp; temp = top; top = bottom; bottom = temp; }
@@ -312,7 +311,7 @@ static GuiMenuItem praatButton_black, praatButton_white, praatButton_red, praatB
 	praatButton_teal, praatButton_purple, praatButton_olive, praatButton_pink, praatButton_silver, praatButton_grey;
 
 
-static void updatePenMenu (void) {
+static void updatePenMenu () {
 	if (! theCurrentPraatApplication -> batch) {
 		for (int i = Graphics_DRAWN; i <= Graphics_DASHED; i ++) {
 			GuiMenuItem_check (praatButton_lines [i], theCurrentPraatPicture -> lineType == i);
@@ -438,83 +437,75 @@ END2 }
 /***** "File" MENU *****/
 
 FORM_READ2 (Picture_readFromPraatPictureFile, U"Read picture from praat picture file", 0, false) {
-	Picture_readFromPraatPictureFile (praat_picture, file);
+	Picture_readFromPraatPictureFile (praat_picture.get(), file);
 END2 }
 
-static void DO_Picture_writeToEpsFile (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToEpsFile (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as EPS file",
-		DO_Picture_writeToEpsFile, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToEpsFile, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.eps");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
-		Picture_writeToEpsFile (praat_picture, file, TRUE, FALSE);
+		Picture_writeToEpsFile (praat_picture.get(), file, true, false);
 	}
 }
 /*FORM_WRITE (Picture_writeToEpsFile, U"Save picture as Encapsulated PostScript file", 0, U"praat.eps")
-	if (! Picture_writeToEpsFile (praat_picture, fileName, TRUE)) return 0;
+	if (! Picture_writeToEpsFile (praat_picture, fileName, true, false)) return 0;
 END*/
 
-static void DO_Picture_writeToFontlessEpsFile_xipa (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToFontlessEpsFile_xipa (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as fontless EPS file",
-		DO_Picture_writeToFontlessEpsFile_xipa, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToFontlessEpsFile_xipa, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.eps");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
-		Picture_writeToEpsFile (praat_picture, file, FALSE, FALSE);
+		Picture_writeToEpsFile (praat_picture.get(), file, false, false);
 	}
 }
 
-static void DO_Picture_writeToFontlessEpsFile_silipa (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToFontlessEpsFile_silipa (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as fontless EPS file",
-		DO_Picture_writeToFontlessEpsFile_silipa, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToFontlessEpsFile_silipa, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.eps");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
-		Picture_writeToEpsFile (praat_picture, file, FALSE, TRUE);
+		Picture_writeToEpsFile (praat_picture.get(), file, false, true);
 	}
 }
 
-static void DO_Picture_writeToPdfFile (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToPdfFile (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as PDF file",
-		DO_Picture_writeToPdfFile, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToPdfFile, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.pdf");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
 		if (theCurrentPraatPicture == & theForegroundPraatPicture) {
-			Picture_writeToPdfFile (praat_picture, file);
+			Picture_writeToPdfFile (praat_picture.get(), file);
 		} else {
 			try {
 				//autoPraatPicture picture;
 				autoGraphics graphics = Graphics_create_pdffile (file, 300, NUMundefined, 10.24, NUMundefined, 7.68);
-				Graphics_play (GRAPHICS, graphics.peek());
+				Graphics_play (GRAPHICS, graphics.get());
 			} catch (MelderError) {
 				Melder_throw (U"Picture not written to PDF file ", file, U".");
 			}
@@ -522,25 +513,23 @@ static void DO_Picture_writeToPdfFile (UiForm sendingForm, int narg, Stackel arg
 	}
 }
 
-static void DO_Picture_writeToPngFile_300 (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToPngFile_300 (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as PNG file",
-		DO_Picture_writeToPngFile_300, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToPngFile_300, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.png");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
 		if (theCurrentPraatPicture == & theForegroundPraatPicture) {
-			Picture_writeToPngFile_300 (praat_picture, file);
+			Picture_writeToPngFile_300 (praat_picture.get(), file);
 		} else {
 			try {
 				autoGraphics graphics = Graphics_create_pngfile (file, 300, 0.0, 10.24, 0.0, 7.68);
-				Graphics_play (GRAPHICS, graphics.peek());
+				Graphics_play (GRAPHICS, graphics.get());
 			} catch (MelderError) {
 				Melder_throw (U"Picture not written to PNG file ", file, U".");
 			}
@@ -548,25 +537,23 @@ static void DO_Picture_writeToPngFile_300 (UiForm sendingForm, int narg, Stackel
 	}
 }
 
-static void DO_Picture_writeToPngFile_600 (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToPngFile_600 (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as PNG file",
-		DO_Picture_writeToPngFile_600, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToPngFile_600, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.png");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
 		if (theCurrentPraatPicture == & theForegroundPraatPicture) {
-			Picture_writeToPngFile_600 (praat_picture, file);
+			Picture_writeToPngFile_600 (praat_picture.get(), file);
 		} else {
 			try {
 				autoGraphics graphics = Graphics_create_pngfile (file, 600, 0.0, 10.24, 0.0, 7.68);
-				Graphics_play (GRAPHICS, graphics.peek());
+				Graphics_play (GRAPHICS, graphics.get());
 			} catch (MelderError) {
 				Melder_throw (U"Picture not written to PNG file ", file, U".");
 			}
@@ -574,20 +561,18 @@ static void DO_Picture_writeToPngFile_600 (UiForm sendingForm, int narg, Stackel
 	}
 }
 
-static void DO_Picture_writeToPraatPictureFile (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-	static Any dia;
-	(void) narg;
-	(void) interpreter;
-	(void) modified;
-	(void) dummy;
+static void DO_Picture_writeToPraatPictureFile (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+	Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+{
+	static UiForm dia;
 	if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as Praat picture file",
-		DO_Picture_writeToPraatPictureFile, NULL, invokingButtonTitle, NULL);
-	if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+		DO_Picture_writeToPraatPictureFile, nullptr, invokingButtonTitle, nullptr);
+	if (! sendingForm && ! args && ! sendingString) {
 		UiOutfile_do (dia, U"praat.prapic");
-	} else { MelderFile file; structMelderFile file2 = { 0 };
-		if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+	} else { MelderFile file; structMelderFile file2 { 0 };
+		if (! args && ! sendingString) file = UiFile_getFile (dia);
 		else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
-		Picture_writeToPraatPictureFile (praat_picture, file);
+		Picture_writeToPraatPictureFile (praat_picture.get(), file);
 	}
 }
 
@@ -602,31 +587,29 @@ DIRECT (PostScript_settings) {
 } END
 
 DIRECT (Print) {
-	Picture_print (praat_picture);
+	Picture_print (praat_picture.get());
 } END
 
 #ifdef _WIN32
-	static void DO_Picture_writeToWindowsMetafile (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter, const char32 *invokingButtonTitle, bool modified, void *dummy) {
-		static Any dia;
-		(void) narg;
-		(void) interpreter;
-		(void) modified;
-		(void) dummy;
+	static void DO_Picture_writeToWindowsMetafile (UiForm sendingForm, int /* narg */, Stackel args, const char32 *sendingString,
+		Interpreter /* interpreter */, const char32 *invokingButtonTitle, bool /* modified */, void *)
+	{
+		static UiForm dia;
 		if (! dia) dia = UiOutfile_create (theCurrentPraatApplication -> topShell, U"Save as Windows metafile",
-			DO_Picture_writeToWindowsMetafile, NULL, invokingButtonTitle, NULL);
-		if (sendingForm == NULL && args == NULL && sendingString == NULL) {
+			DO_Picture_writeToWindowsMetafile, nullptr, invokingButtonTitle, nullptr);
+		if (! sendingForm && ! args && ! sendingString) {
 			UiOutfile_do (dia, U"praat.emf");
-		} else { MelderFile file; structMelderFile file2 = { 0 };
-			if (args == NULL && sendingString == NULL) file = UiFile_getFile (dia);
+		} else { MelderFile file; structMelderFile file2 { 0 };
+			if (! args && ! sendingString) file = UiFile_getFile (dia);
 			else { Melder_relativePathToFile (args ? args [1]. string : sendingString, & file2); file = & file2; }
-			Picture_writeToWindowsMetafile (praat_picture, file);
+			Picture_writeToWindowsMetafile (praat_picture.get(), file);
 		}
 	}
 #endif
 
 #if defined (_WIN32) || defined (macintosh)
 	DIRECT (Copy_picture_to_clipboard) {
-		Picture_copyToClipboard (praat_picture);
+		Picture_copyToClipboard (praat_picture.get());
 	} END
 #endif
 
@@ -642,7 +625,7 @@ DIRECT (Undo) {
 
 DIRECT (Erase_all) {
 	if (theCurrentPraatPicture == & theForegroundPraatPicture) {
-		Picture_erase (praat_picture);   /* This kills the recording. */
+		Picture_erase (praat_picture.get());   // this kills the recording
 	} else {
 		Graphics_clearRecording (GRAPHICS);
 		Graphics_clearWs (GRAPHICS);
@@ -701,7 +684,7 @@ DO
 	Graphics_setFont (GRAPHICS, GET_ENUM (kGraphics_font, U"Font"));
 	Graphics_setFontSize (GRAPHICS, GET_INTEGER (U"Font size"));
 	char32 *rotation = GET_STRING (U"Rotation"), *semicolon;
-	if ((semicolon = str32chr (rotation, ';')) != NULL)
+	if (!! (semicolon = str32chr (rotation, ';')))
 		Graphics_setTextRotation_vector (GRAPHICS, Melder_atof (rotation), Melder_atof (semicolon + 1));
 	else
 		Graphics_setTextRotation (GRAPHICS, Melder_atof (rotation));
@@ -712,7 +695,7 @@ DO
 	Graphics_unsetInner (GRAPHICS);
 END2 }
 
-static void dia_line (Any dia) {
+static void dia_line (UiForm dia) {
 	REAL (U"From x", U"0.0")
 	REAL (U"From y", U"0.0")
 	REAL (U"To x", U"1.0")
@@ -751,7 +734,7 @@ DO
 	Graphics_unsetInner (GRAPHICS);
 END2 }
 
-Thing_define (PraatPictureFunction, Data) {
+Thing_define (PraatPictureFunction, Daata) {
 	// new data:
 	public:
 		double xmin, xmax, dx, x1;
@@ -763,7 +746,7 @@ Thing_define (PraatPictureFunction, Data) {
 		virtual bool v_hasGetDx   () { return true; }   virtual double v_getDx   ()        { return dx; }
 		virtual bool v_hasGetX    () { return true; }   virtual double v_getX    (long ix) { return x1 + (ix - 1) * dx; }
 };
-Thing_implement (PraatPictureFunction, Data, 0);
+Thing_implement (PraatPictureFunction, Daata, 0);
 
 FORM (DrawFunction, U"Praat picture: Draw function", 0) {
 	LABEL (U"", U"This command assumes that the x and y axes")
@@ -789,7 +772,7 @@ DO
 	function -> nx = n;
 	function -> x1 = fromX;
 	function -> dx = (toX - fromX) / (n - 1);
-	Formula_compile (interpreter, function.peek(), formula, kFormula_EXPRESSION_TYPE_NUMERIC, TRUE);
+	Formula_compile (interpreter, function.get(), formula, kFormula_EXPRESSION_TYPE_NUMERIC, true);
 	for (long i = 1; i <= n; i ++) {
 		struct Formula_Result result;
 		Formula_run (1, i, & result);
@@ -801,7 +784,7 @@ DO
 	Graphics_unsetInner (GRAPHICS);
 END2 }
 
-static void dia_rectangle (Any dia) {
+static void dia_rectangle (UiForm dia) {
 	REAL (U"From x", U"0.0")
 	REAL (U"To x", U"1.0")
 	REAL (U"From y", U"0.0")
@@ -987,7 +970,7 @@ DIRECT (DrawInnerBox) {
 } END
 
 FORM (Text_left, U"Praat picture: Text left", U"Text left/right/top/bottom...") {
-	BOOLEAN (U"Far", 1)
+	BOOLEAN (U"Far", true)
 	TEXTFIELD (U"text", U"")
 OK2
 DO
@@ -996,7 +979,7 @@ DO
 END2 }
 
 FORM (Text_right, U"Praat picture: Text right", U"Text left/right/top/bottom...") {
-	BOOLEAN (U"Far", 1)
+	BOOLEAN (U"Far", true)
 	TEXTFIELD (U"text", U"")
 OK2
 DO
@@ -1005,7 +988,7 @@ DO
 END2 }
 
 FORM (Text_top, U"Praat picture: Text top", U"Text left/right/top/bottom...") {
-	BOOLEAN (U"Far", 0)
+	BOOLEAN (U"Far", false)
 	TEXTFIELD (U"text", U"")
 OK2
 DO
@@ -1014,7 +997,7 @@ DO
 END2 }
 
 FORM (Text_bottom, U"Praat picture: Text bottom", U"Text left/right/top/bottom...") {
-	BOOLEAN (U"Far", 1)
+	BOOLEAN (U"Far", true)
 	TEXTFIELD (U"text", U"")
 OK2
 DO
@@ -1022,14 +1005,14 @@ DO
 	Graphics_textBottom (GRAPHICS, GET_INTEGER (U"Far"), GET_STRING (U"text"));
 END2 }
 
-static void dia_marksEvery (Any dia) {
+static void dia_marksEvery (UiForm dia) {
 	POSITIVE (U"Units", U"1.0")
 	POSITIVE (U"Distance", U"0.1")
-	BOOLEAN (U"Write numbers", 1)
-	BOOLEAN (U"Draw ticks", 1)
-	BOOLEAN (U"Draw dotted lines", 1)
+	BOOLEAN (U"Write numbers", true)
+	BOOLEAN (U"Draw ticks", true)
+	BOOLEAN (U"Draw dotted lines", true)
 }
-static void do_marksEvery (Any dia, void (*Graphics_marksEvery) (Graphics, double, double, bool, bool, bool)) {
+static void do_marksEvery (UiForm dia, void (*Graphics_marksEvery) (Graphics, double, double, bool, bool, bool)) {
 	autoPraatPicture picture;
 	Graphics_marksEvery (GRAPHICS, GET_REAL (U"Units"), GET_REAL (U"Distance"),
 		GET_INTEGER (U"Write numbers"),
@@ -1044,13 +1027,13 @@ FORM (Marks_bottom_every, U"Praat picture: Marks bottom every...", U"Marks left/
 FORM (Marks_top_every, U"Praat picture: Marks top every...", U"Marks left/right/top/bottom every...") {
 	dia_marksEvery (dia); OK2 DO do_marksEvery (dia, Graphics_marksTopEvery); END2 }
 
-static void dia_marks (Any dia) {
+static void dia_marks (UiForm dia) {
 	NATURAL (U"Number of marks", U"6")
-	BOOLEAN (U"Write numbers", 1)
-	BOOLEAN (U"Draw ticks", 1)
-	BOOLEAN (U"Draw dotted lines", 1)
+	BOOLEAN (U"Write numbers", true)
+	BOOLEAN (U"Draw ticks", true)
+	BOOLEAN (U"Draw dotted lines", true)
 }
-static void do_marks (Any dia, void (*Graphics_marks) (Graphics, int, bool, bool, bool)) {
+static void do_marks (UiForm dia, void (*Graphics_marks) (Graphics, int, bool, bool, bool)) {
 	long numberOfMarks = GET_INTEGER (U"Number of marks");
 	REQUIRE (numberOfMarks >= 2, U"`Number of marks' must be at least 2.")
 	autoPraatPicture picture;
@@ -1066,13 +1049,13 @@ FORM (Marks_bottom, U"Praat picture: Marks bottom", U"Marks left/right/top/botto
 FORM (Marks_top, U"Praat picture: Marks top", U"Marks left/right/top/bottom...") {
 	dia_marks (dia); OK2 DO do_marks (dia, Graphics_marksTop); END2 }
 
-static void dia_marksLogarithmic (Any dia) {
+static void dia_marksLogarithmic (UiForm dia) {
 	NATURAL (U"Marks per decade", U"3")
-	BOOLEAN (U"Write numbers", 1)
-	BOOLEAN (U"Draw ticks", 1)
-	BOOLEAN (U"Draw dotted lines", 1)
+	BOOLEAN (U"Write numbers", true)
+	BOOLEAN (U"Draw ticks", true)
+	BOOLEAN (U"Draw dotted lines", true)
 }
-static void do_marksLogarithmic (Any dia, void (*Graphics_marksLogarithmic) (Graphics, int, bool, bool, bool)) {
+static void do_marksLogarithmic (UiForm dia, void (*Graphics_marksLogarithmic) (Graphics, int, bool, bool, bool)) {
 	long numberOfMarksPerDecade = GET_INTEGER (U"Marks per decade");
 	autoPraatPicture picture;
 	Graphics_marksLogarithmic (GRAPHICS, numberOfMarksPerDecade, GET_INTEGER (U"Write numbers"),
@@ -1093,11 +1076,11 @@ static void sortBoundingBox (double *x1WC, double *x2WC, double *y1WC, double *y
 	if (*y1WC > *y2WC) temp = *y1WC, *y1WC = *y2WC, *y2WC = temp;
 }
 
-static void dia_oneMark (Any dia) {
+static void dia_oneMark (UiForm dia) {
 	REAL (U"Position", U"0.0")
-	BOOLEAN (U"Write number", 1)
-	BOOLEAN (U"Draw tick", 1)
-	BOOLEAN (U"Draw dotted line", 1)
+	BOOLEAN (U"Write number", true)
+	BOOLEAN (U"Draw tick", true)
+	BOOLEAN (U"Draw dotted line", true)
 	LABEL (U"", U"Draw text:")
 	TEXTFIELD (U"text", U"")
 }
@@ -1181,7 +1164,7 @@ DO
 		GET_STRING (U"text"));
 END2 }
 
-static void dia_oneLogarithmicMark (Any dia) {
+static void dia_oneLogarithmicMark (UiForm dia) {
 	REAL (U"Position", U"1.0")
 	BOOLEAN (U"Write number", 1)
 	BOOLEAN (U"Draw tick", 1)
@@ -1401,7 +1384,7 @@ DIRECT (Picture_settings_report) {
 		double x1wNDC, x2wNDC, y1wNDC, y2wNDC;
 		Graphics_inqWsWindow (GRAPHICS, & x1wNDC, & x2wNDC, & y1wNDC, & y2wNDC);
 		double wDC = (x2DC - x1DC) / (x2wNDC - x1wNDC);
-		double hDC = abs (y2DC - y1DC) / (y2wNDC - y1wNDC);
+		double hDC = labs (y2DC - y1DC) / (y2wNDC - y1wNDC);
 		xmargin *= Graphics_getResolution (GRAPHICS) / wDC;
 		ymargin *= Graphics_getResolution (GRAPHICS) / hDC;
 	}
@@ -1445,12 +1428,11 @@ DIRECT (Picture_settings_report) {
 
 /**********   **********/
 
-static void cb_selectionChanged (Picture p, void *closure,
+static void cb_selectionChanged (Picture p, void * /* closure */,
 	double selx1, double selx2, double sely1, double sely2)
 	/* The user selected a new viewport in the picture window. */
 {
-	(void) closure;
-	Melder_assert (p == praat_picture);
+	Melder_assert (p == praat_picture.get());
 	theCurrentPraatPicture -> x1NDC = selx1;
 	theCurrentPraatPicture -> x2NDC = selx2;
 	theCurrentPraatPicture -> y1NDC = sely1;
@@ -1499,11 +1481,11 @@ GuiMenu praat_picture_resolveMenu (const char32 *menu) {
 		editMenu;   // default
 }
 
-void praat_picture_exit (void) {
-	Picture_remove (& praat_picture);
+void praat_picture_exit () {
+	praat_picture.reset();
 }
 
-void praat_picture_open (void) {
+void praat_picture_open () {
 	Graphics_markGroup (GRAPHICS);   // we start a group of graphics output here
 	if (theCurrentPraatPicture == & theForegroundPraatPicture && ! theCurrentPraatApplication -> batch) {
 		#if gtk
@@ -1514,7 +1496,7 @@ void praat_picture_open (void) {
 			XtMapWidget (dialog -> d_xmShell);
 			XMapRaised (XtDisplay (dialog -> d_xmShell), XtWindow (dialog -> d_xmShell));
 		#endif
-		Picture_unhighlight (praat_picture);
+		Picture_unhighlight (praat_picture.get());
 	}
 	/* Foregoing drawing routines may have changed some of the output attributes */
 	/* that can be set by the user. */
@@ -1537,10 +1519,10 @@ void praat_picture_open (void) {
 	Graphics_setWindow (GRAPHICS, x1WC, x2WC, y1WC, y2WC);
 }
 
-void praat_picture_close (void) {
+void praat_picture_close () {
 	if (theCurrentPraatPicture != & theForegroundPraatPicture) return;
 	if (! theCurrentPraatApplication -> batch) {
-		Picture_highlight (praat_picture);
+		Picture_highlight (praat_picture.get());
 		#ifdef macintosh
 			//dialog -> f_drain ();
 		#endif
@@ -1548,27 +1530,27 @@ void praat_picture_close (void) {
 }
 
 Graphics praat_picture_editor_open (bool eraseFirst) {
-	if (eraseFirst) Picture_erase (praat_picture);
+	if (eraseFirst) Picture_erase (praat_picture.get());
 	praat_picture_open ();
 	return GRAPHICS;
 }
 
-void praat_picture_editor_close (void) {
+void praat_picture_editor_close () {
 	praat_picture_close ();
 }
 
-static Any pictureRecognizer (int nread, const char *header, MelderFile file) {
-	if (nread < 2) return NULL;
-	if (strnequ (header, "PraatPictureFile", 16))
-	{
-		Picture_readFromPraatPictureFile (praat_picture, file); return (Any) 1;
+static autoDaata pictureRecognizer (int nread, const char *header, MelderFile file) {
+	if (nread < 2) return autoDaata ();
+	if (strnequ (header, "PraatPictureFile", 16)) {
+		Picture_readFromPraatPictureFile (praat_picture.get(), file);
+		return Thing_new (Daata);   // a dummy
 	}
-	return NULL;
+	return autoDaata ();
 }
 
-void praat_picture_init (void) {
+void praat_picture_init () {
 	GuiScrolledWindow scrollWindow;
-	GuiDrawingArea drawingArea = NULL;
+	GuiDrawingArea drawingArea = nullptr;
 	int margin, width, height, resolution, x, y;
 	theCurrentPraatPicture -> lineType = Graphics_DRAWN;
 	theCurrentPraatPicture -> colour = Graphics_BLACK;
@@ -1585,7 +1567,7 @@ void praat_picture_init (void) {
 	if (! theCurrentPraatApplication -> batch) {
 		double screenX, screenY, screenWidth, screenHeight;
 		Gui_getWindowPositioningBounds (& screenX, & screenY, & screenWidth, & screenHeight);
-		resolution = Gui_getResolution (NULL);
+		resolution = Gui_getResolution (nullptr);
 		#if defined (macintosh)
 			margin = 2, width = 6 * resolution + 20;
 			height = 9 * resolution + Machine_getMenuBarHeight () + 24;
@@ -1604,7 +1586,7 @@ void praat_picture_init (void) {
 			y = screenY + 0;
 			width += margin * 2;
 		#endif
-		dialog = GuiWindow_create (x, y, width, height, 400, 200, Melder_cat (praatP.title, U" Picture"), NULL, NULL, 0);
+		dialog = GuiWindow_create (x, y, width, height, 400, 200, Melder_cat (praatP.title, U" Picture"), nullptr, nullptr, 0);
 		GuiWindow_addMenuBar (dialog);
 	}
 	if (! theCurrentPraatApplication -> batch) {
@@ -1618,192 +1600,192 @@ void praat_picture_init (void) {
 		helpMenu =    GuiMenu_createInWindow (dialog, U"Help", 0);
 	}
 
-	praat_addMenuCommand (U"Picture", U"File", U"Picture info", 0, 0, DO_Picture_settings_report);
-	praat_addMenuCommand (U"Picture", U"File", U"Picture settings report", 0, praat_HIDDEN, DO_Picture_settings_report);
-	praat_addMenuCommand (U"Picture", U"File", U"-- save --", 0, 0, 0);
+	praat_addMenuCommand (U"Picture", U"File", U"Picture info", nullptr, 0, DO_Picture_settings_report);
+	praat_addMenuCommand (U"Picture", U"File", U"Picture settings report", nullptr, praat_HIDDEN, DO_Picture_settings_report);
+	praat_addMenuCommand (U"Picture", U"File", U"-- save --", nullptr, 0, nullptr);
 	#if defined (macintosh) || defined (UNIX)
-		praat_addMenuCommand (U"Picture", U"File", U"Save as PDF file...", 0, 'S', DO_Picture_writeToPdfFile);
-		praat_addMenuCommand (U"Picture", U"File", U"Write to PDF file...", 0, praat_HIDDEN, DO_Picture_writeToPdfFile);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as PDF file...", nullptr, 'S', DO_Picture_writeToPdfFile);
+		praat_addMenuCommand (U"Picture", U"File", U"Write to PDF file...", nullptr, praat_HIDDEN, DO_Picture_writeToPdfFile);
 	#endif
-	praat_addMenuCommand (U"Picture", U"File", U"Save as 300-dpi PNG file...", 0, 0, DO_Picture_writeToPngFile_300);
+	praat_addMenuCommand (U"Picture", U"File", U"Save as 300-dpi PNG file...", nullptr, 0, DO_Picture_writeToPngFile_300);
 	#if defined (_WIN32)
-		praat_addMenuCommand (U"Picture", U"File", U"Save as 600-dpi PNG file...", 0, 'S', DO_Picture_writeToPngFile_600);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as 600-dpi PNG file...", nullptr, 'S', DO_Picture_writeToPngFile_600);
 	#endif
 	#if defined (macintosh) || defined (UNIX)
-		praat_addMenuCommand (U"Picture", U"File", U"Save as 600-dpi PNG file...", 0, 0, DO_Picture_writeToPngFile_600);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as 600-dpi PNG file...", nullptr, 0, DO_Picture_writeToPngFile_600);
 	#endif
-	praat_addMenuCommand (U"Picture", U"File", U"Save as EPS file", 0, 0, NULL);
-		praat_addMenuCommand (U"Picture", U"File", U"PostScript settings...", 0, 1, DO_PostScript_settings);
-		praat_addMenuCommand (U"Picture", U"File", U"Save as EPS file...", 0, 1, DO_Picture_writeToEpsFile);
-		praat_addMenuCommand (U"Picture", U"File", U"Write to EPS file...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToEpsFile);
-		praat_addMenuCommand (U"Picture", U"File", U"Save as fontless EPS file (XIPA)...", 0, 1, DO_Picture_writeToFontlessEpsFile_xipa);
-		praat_addMenuCommand (U"Picture", U"File", U"Write to fontless EPS file (XIPA)...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToFontlessEpsFile_xipa);
-		praat_addMenuCommand (U"Picture", U"File", U"Save as fontless EPS file (SILIPA)...", 0, 1, DO_Picture_writeToFontlessEpsFile_silipa);
-		praat_addMenuCommand (U"Picture", U"File", U"Write to fontless EPS file (SILIPA)...", 0, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToFontlessEpsFile_silipa);
+	praat_addMenuCommand (U"Picture", U"File", U"Save as EPS file", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Picture", U"File", U"PostScript settings...", nullptr, 1, DO_PostScript_settings);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as EPS file...", nullptr, 1, DO_Picture_writeToEpsFile);
+		praat_addMenuCommand (U"Picture", U"File", U"Write to EPS file...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToEpsFile);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as fontless EPS file (XIPA)...", nullptr, 1, DO_Picture_writeToFontlessEpsFile_xipa);
+		praat_addMenuCommand (U"Picture", U"File", U"Write to fontless EPS file (XIPA)...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToFontlessEpsFile_xipa);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as fontless EPS file (SILIPA)...", nullptr, 1, DO_Picture_writeToFontlessEpsFile_silipa);
+		praat_addMenuCommand (U"Picture", U"File", U"Write to fontless EPS file (SILIPA)...", nullptr, praat_HIDDEN + praat_DEPTH_1, DO_Picture_writeToFontlessEpsFile_silipa);
 	#ifdef _WIN32
-		praat_addMenuCommand (U"Picture", U"File", U"Save as Windows metafile...", 0, 0, DO_Picture_writeToWindowsMetafile);
-		praat_addMenuCommand (U"Picture", U"File", U"Write to Windows metafile...", 0, praat_HIDDEN, DO_Picture_writeToWindowsMetafile);
+		praat_addMenuCommand (U"Picture", U"File", U"Save as Windows metafile...", nullptr, 0, DO_Picture_writeToWindowsMetafile);
+		praat_addMenuCommand (U"Picture", U"File", U"Write to Windows metafile...", nullptr, praat_HIDDEN, DO_Picture_writeToWindowsMetafile);
 	#endif
-	praat_addMenuCommand (U"Picture", U"File", U"-- praat picture file --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"File", U"Read from praat picture file...", 0, 0, DO_Picture_readFromPraatPictureFile);
-	praat_addMenuCommand (U"Picture", U"File", U"Save as praat picture file...", 0, 0, DO_Picture_writeToPraatPictureFile);
-	praat_addMenuCommand (U"Picture", U"File", U"Write to praat picture file...", 0, praat_HIDDEN, DO_Picture_writeToPraatPictureFile);
-	praat_addMenuCommand (U"Picture", U"File", U"-- print --", 0, 0, 0);
+	praat_addMenuCommand (U"Picture", U"File", U"-- praat picture file --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"File", U"Read from praat picture file...", nullptr, 0, DO_Picture_readFromPraatPictureFile);
+	praat_addMenuCommand (U"Picture", U"File", U"Save as praat picture file...", nullptr, 0, DO_Picture_writeToPraatPictureFile);
+	praat_addMenuCommand (U"Picture", U"File", U"Write to praat picture file...", nullptr, praat_HIDDEN, DO_Picture_writeToPraatPictureFile);
+	praat_addMenuCommand (U"Picture", U"File", U"-- print --", nullptr, 0, nullptr);
 	#if defined (macintosh)
-		praat_addMenuCommand (U"Picture", U"File", U"Page setup...", 0, 0, DO_Page_setup);
+		praat_addMenuCommand (U"Picture", U"File", U"Page setup...", nullptr, 0, DO_Page_setup);
 	#endif
-	praat_addMenuCommand (U"Picture", U"File", U"Print...", 0, 'P', DO_Print);
+	praat_addMenuCommand (U"Picture", U"File", U"Print...", nullptr, 'P', DO_Print);
 
-	praat_addMenuCommand (U"Picture", U"Edit", U"Undo", 0, 'Z', DO_Undo);
+	praat_addMenuCommand (U"Picture", U"Edit", U"Undo", nullptr, 'Z', DO_Undo);
 	#if defined (macintosh) || defined (_WIN32)
-		praat_addMenuCommand (U"Picture", U"Edit", U"-- clipboard --", 0, 0, 0);
-		praat_addMenuCommand (U"Picture", U"Edit", U"Copy to clipboard", 0, 'C', DO_Copy_picture_to_clipboard);
+		praat_addMenuCommand (U"Picture", U"Edit", U"-- clipboard --", nullptr, 0, nullptr);
+		praat_addMenuCommand (U"Picture", U"Edit", U"Copy to clipboard", nullptr, 'C', DO_Copy_picture_to_clipboard);
 	#endif
-	praat_addMenuCommand (U"Picture", U"Edit", U"-- erase --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Edit", U"Erase all", 0, 'E', DO_Erase_all);
-
-	praat_addMenuCommand (U"Picture", U"Margins", U"Draw inner box", 0, 0, DO_DrawInnerBox);
-	praat_addMenuCommand (U"Picture", U"Margins", U"-- text --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Text left...", 0, 0, DO_Text_left);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Text right...", 0, 0, DO_Text_right);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Text top...", 0, 0, DO_Text_top);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Text bottom...", 0, 0, DO_Text_bottom);
-	praat_addMenuCommand (U"Picture", U"Margins", U"-- marks every --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks left every...", 0, 0, DO_Marks_left_every);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks right every...", 0, 0, DO_Marks_right_every);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks bottom every...", 0, 0, DO_Marks_bottom_every);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks top every...", 0, 0, DO_Marks_top_every);
-	praat_addMenuCommand (U"Picture", U"Margins", U"-- one mark --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One mark left...", 0, 0, DO_Mark_left);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One mark right...", 0, 0, DO_Mark_right);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One mark bottom...", 0, 0, DO_Mark_bottom);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One mark top...", 0, 0, DO_Mark_top);
-	praat_addMenuCommand (U"Picture", U"Margins", U"-- marks --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks left...", 0, 1, DO_Marks_left);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks right...", 0, 1, DO_Marks_right);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks bottom...", 0, 1, DO_Marks_bottom);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Marks top...", 0, 1, DO_Marks_top);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks left...", 0, 1, DO_marksLeftLogarithmic);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks right...", 0, 1, DO_marksRightLogarithmic);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks bottom...", 0, 1, DO_marksBottomLogarithmic);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks top...", 0, 1, DO_marksTopLogarithmic);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark left...", 0, 1, DO_LogarithmicMark_left);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark right...", 0, 1, DO_LogarithmicMark_right);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark bottom...", 0, 1, DO_LogarithmicMark_bottom);
-	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark top...", 0, 1, DO_LogarithmicMark_top);
-	praat_addMenuCommand (U"Picture", U"Margins", U"-- axes --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Margins", U"Axes...", 0, 0, DO_Axes);
-
-	praat_addMenuCommand (U"Picture", U"World", U"Text...", 0, 0, DO_Text);
-	praat_addMenuCommand (U"Picture", U"World", U"Text special...", 0, 0, DO_Text_special);
-	praat_addMenuCommand (U"Picture", U"World", U"-- line --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw line...", 0, 0, DO_DrawLine);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw arrow...", 0, 0, DO_DrawArrow);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw two-way arrow...", 0, 0, DO_DrawDoubleArrow);
-	praat_addMenuCommand (U"Picture", U"World", U"-- function --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw function...", 0, 0, DO_DrawFunction);
-	praat_addMenuCommand (U"Picture", U"World", U"-- rectangle --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw rectangle...", 0, 0, DO_DrawRectangle);
-	praat_addMenuCommand (U"Picture", U"World", U"Paint rectangle...", 0, 0, DO_PaintRectangle);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw rounded rectangle...", 0, 0, DO_DrawRoundedRectangle);
-	praat_addMenuCommand (U"Picture", U"World", U"Paint rounded rectangle...", 0, 0, DO_PaintRoundedRectangle);
-	praat_addMenuCommand (U"Picture", U"World", U"-- arc --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw arc...", 0, 0, DO_DrawArc);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw ellipse...", 0, 0, DO_DrawEllipse);
-	praat_addMenuCommand (U"Picture", U"World", U"Paint ellipse...", 0, 0, DO_PaintEllipse);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw circle...", 0, 0, DO_DrawCircle);
-	praat_addMenuCommand (U"Picture", U"World", U"Paint circle...", 0, 0, DO_PaintCircle);
-	praat_addMenuCommand (U"Picture", U"World", U"Draw circle (mm)...", 0, 0, DO_DrawCircle_mm);
-	praat_addMenuCommand (U"Picture", U"World", U"Paint circle (mm)...", 0, 0, DO_PaintCircle_mm);
-	praat_addMenuCommand (U"Picture", U"World", U"-- picture --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Insert picture from file...", 0, 0, DO_InsertPictureFromFile);
-	praat_addMenuCommand (U"Picture", U"World", U"-- axes --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Axes...", 0, 0, DO_Axes);
-	praat_addMenuCommand (U"Picture", U"World", U"Measure", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Horizontal mm to wc...", 0, 1, DO_dxMMtoWC);
-	praat_addMenuCommand (U"Picture", U"World", U"Horizontal wc to mm...", 0, 1, DO_dxWCtoMM);
-	praat_addMenuCommand (U"Picture", U"World", U"Vertical mm to wc...", 0, 1, DO_dyMMtoWC);
-	praat_addMenuCommand (U"Picture", U"World", U"Vertical wc to mm...", 0, 1, DO_dyWCtoMM);
-	praat_addMenuCommand (U"Picture", U"World", U"-- text measure --", 0, 1, 0);
-	praat_addMenuCommand (U"Picture", U"World", U"Text width (wc)...", 0, 1, DO_textWidth_wc);
-	praat_addMenuCommand (U"Picture", U"World", U"Text width (mm)...", 0, 1, DO_textWidth_mm);
-	praat_addMenuCommand (U"Picture", U"World", U"PostScript text width (wc)...", 0, 1, DO_textWidth_ps_wc);
-	praat_addMenuCommand (U"Picture", U"World", U"PostScript text width (mm)...", 0, 1, DO_textWidth_ps_mm);
-
-	praatButton_innerViewport = praat_addMenuCommand (U"Picture", U"Select", U"Mouse selects inner viewport", 0, praat_RADIO_FIRST, DO_MouseSelectsInnerViewport);
-	praatButton_outerViewport = praat_addMenuCommand (U"Picture", U"Select", U"Mouse selects outer viewport", 0, praat_RADIO_NEXT, DO_MouseSelectsOuterViewport);
-	praat_addMenuCommand (U"Picture", U"Select", U"-- select --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Select", U"Select inner viewport...", 0, 0, DO_SelectInnerViewport);
-	praat_addMenuCommand (U"Picture", U"Select", U"Select outer viewport...", 0, 0, DO_SelectOuterViewport);
-	praat_addMenuCommand (U"Picture", U"Select", U"Viewport...", 0, praat_HIDDEN, DO_SelectOuterViewport);
-	praat_addMenuCommand (U"Picture", U"Select", U"-- viewport drawing --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Select", U"Viewport text...", 0, 0, DO_ViewportText);
-
-	praatButton_lines [Graphics_DRAWN] = praat_addMenuCommand (U"Picture", U"Pen", U"Solid line", 0, praat_RADIO_FIRST, DO_Solid_line);
-	praat_addMenuCommand (U"Picture", U"Pen", U"Plain line", 0, praat_RADIO_NEXT | praat_HIDDEN, DO_Solid_line);
-	praatButton_lines [Graphics_DOTTED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dotted line", 0, praat_RADIO_NEXT, DO_Dotted_line);
-	praatButton_lines [Graphics_DASHED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dashed line", 0, praat_RADIO_NEXT, DO_Dashed_line);
-	praatButton_lines [Graphics_DASHED_DOTTED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dashed-dotted line", 0, praat_RADIO_NEXT, DO_Dashed_dotted_line);
-	praat_addMenuCommand (U"Picture", U"Pen", U"-- line width --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Pen", U"Line width...", 0, 0, DO_Line_width);
-	praat_addMenuCommand (U"Picture", U"Pen", U"Arrow size...", 0, 0, DO_Arrow_size);
-	praat_addMenuCommand (U"Picture", U"Pen", U"Speckle size...", 0, 0, DO_Speckle_size);
-	praat_addMenuCommand (U"Picture", U"Pen", U"-- colour --", 0, 0, 0);
-	praat_addMenuCommand (U"Picture", U"Pen", U"Colour...", 0, 0, DO_Colour);
-	praatButton_black = praat_addMenuCommand (U"Picture", U"Pen", U"Black", 0, praat_CHECKBUTTON, DO_Black);
-	praatButton_white = praat_addMenuCommand (U"Picture", U"Pen", U"White", 0, praat_CHECKBUTTON, DO_White);
-	praatButton_red = praat_addMenuCommand (U"Picture", U"Pen", U"Red", 0, praat_CHECKBUTTON, DO_Red);
-	praatButton_green = praat_addMenuCommand (U"Picture", U"Pen", U"Green", 0, praat_CHECKBUTTON, DO_Green);
-	praatButton_blue = praat_addMenuCommand (U"Picture", U"Pen", U"Blue", 0, praat_CHECKBUTTON, DO_Blue);
-	praatButton_yellow = praat_addMenuCommand (U"Picture", U"Pen", U"Yellow", 0, praat_CHECKBUTTON, DO_Yellow);
-	praatButton_cyan = praat_addMenuCommand (U"Picture", U"Pen", U"Cyan", 0, praat_CHECKBUTTON, DO_Cyan);
-	praatButton_magenta = praat_addMenuCommand (U"Picture", U"Pen", U"Magenta", 0, praat_CHECKBUTTON, DO_Magenta);
-	praatButton_maroon = praat_addMenuCommand (U"Picture", U"Pen", U"Maroon", 0, praat_CHECKBUTTON, DO_Maroon);
-	praatButton_lime = praat_addMenuCommand (U"Picture", U"Pen", U"Lime", 0, praat_CHECKBUTTON, DO_Lime);
-	praatButton_navy = praat_addMenuCommand (U"Picture", U"Pen", U"Navy", 0, praat_CHECKBUTTON, DO_Navy);
-	praatButton_teal = praat_addMenuCommand (U"Picture", U"Pen", U"Teal", 0, praat_CHECKBUTTON, DO_Teal);
-	praatButton_purple = praat_addMenuCommand (U"Picture", U"Pen", U"Purple", 0, praat_CHECKBUTTON, DO_Purple);
-	praatButton_olive = praat_addMenuCommand (U"Picture", U"Pen", U"Olive", 0, praat_CHECKBUTTON, DO_Olive);
-	praatButton_pink = praat_addMenuCommand (U"Picture", U"Pen", U"Pink", 0, praat_CHECKBUTTON, DO_Pink);
-	praatButton_silver = praat_addMenuCommand (U"Picture", U"Pen", U"Silver", 0, praat_CHECKBUTTON, DO_Silver);
-	praatButton_grey = praat_addMenuCommand (U"Picture", U"Pen", U"Grey", 0, praat_CHECKBUTTON, DO_Grey);
-
-	praat_addMenuCommand (U"Picture", U"Font", U"Font size...", 0, 0, DO_Font_size);
-	praatButton_10 = praat_addMenuCommand (U"Picture", U"Font", U"10", 0, praat_CHECKBUTTON, DO_10);
-	praatButton_12 = praat_addMenuCommand (U"Picture", U"Font", U"12", 0, praat_CHECKBUTTON, DO_12);
-	praatButton_14 = praat_addMenuCommand (U"Picture", U"Font", U"14", 0, praat_CHECKBUTTON, DO_14);
-	praatButton_18 = praat_addMenuCommand (U"Picture", U"Font", U"18", 0, praat_CHECKBUTTON, DO_18);
-	praatButton_24 = praat_addMenuCommand (U"Picture", U"Font", U"24", 0, praat_CHECKBUTTON, DO_24);
-	praat_addMenuCommand (U"Picture", U"Font", U"-- font ---", 0, 0, 0);
-	praatButton_fonts [kGraphics_font_TIMES] = praat_addMenuCommand (U"Picture", U"Font", U"Times", 0, praat_RADIO_FIRST, DO_Times);
-	praatButton_fonts [kGraphics_font_HELVETICA] = praat_addMenuCommand (U"Picture", U"Font", U"Helvetica", 0, praat_RADIO_NEXT, DO_Helvetica);
-	praatButton_fonts [kGraphics_font_PALATINO] = praat_addMenuCommand (U"Picture", U"Font", U"Palatino", 0, praat_RADIO_NEXT, DO_Palatino);
-	praatButton_fonts [kGraphics_font_COURIER] = praat_addMenuCommand (U"Picture", U"Font", U"Courier", 0, praat_RADIO_NEXT, DO_Courier);
-
-	praat_addMenuCommand (U"Picture", U"Help", U"Picture window help", 0, '?', DO_PictureWindowHelp);
-	praat_addMenuCommand (U"Picture", U"Help", U"About special symbols", 0, 0, DO_AboutSpecialSymbols);
-	praat_addMenuCommand (U"Picture", U"Help", U"About text styles", 0, 0, DO_AboutTextStyles);
-	praat_addMenuCommand (U"Picture", U"Help", U"Phonetic symbols", 0, 0, DO_PhoneticSymbols);
-	praat_addMenuCommand (U"Picture", U"Help", U"-- manual --", 0, 0, 0);
+	praat_addMenuCommand (U"Picture", U"Edit", U"-- erase --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Edit", U"Erase all", nullptr, 'E', DO_Erase_all);
+
+	praat_addMenuCommand (U"Picture", U"Margins", U"Draw inner box", nullptr, 0, DO_DrawInnerBox);
+	praat_addMenuCommand (U"Picture", U"Margins", U"-- text --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Text left...", nullptr, 0, DO_Text_left);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Text right...", nullptr, 0, DO_Text_right);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Text top...", nullptr, 0, DO_Text_top);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Text bottom...", nullptr, 0, DO_Text_bottom);
+	praat_addMenuCommand (U"Picture", U"Margins", U"-- marks every --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks left every...", nullptr, 0, DO_Marks_left_every);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks right every...", nullptr, 0, DO_Marks_right_every);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks bottom every...", nullptr, 0, DO_Marks_bottom_every);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks top every...", nullptr, 0, DO_Marks_top_every);
+	praat_addMenuCommand (U"Picture", U"Margins", U"-- one mark --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One mark left...", nullptr, 0, DO_Mark_left);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One mark right...", nullptr, 0, DO_Mark_right);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One mark bottom...", nullptr, 0, DO_Mark_bottom);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One mark top...", nullptr, 0, DO_Mark_top);
+	praat_addMenuCommand (U"Picture", U"Margins", U"-- marks --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks left...", nullptr, 1, DO_Marks_left);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks right...", nullptr, 1, DO_Marks_right);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks bottom...", nullptr, 1, DO_Marks_bottom);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Marks top...", nullptr, 1, DO_Marks_top);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks left...", nullptr, 1, DO_marksLeftLogarithmic);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks right...", nullptr, 1, DO_marksRightLogarithmic);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks bottom...", nullptr, 1, DO_marksBottomLogarithmic);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Logarithmic marks top...", nullptr, 1, DO_marksTopLogarithmic);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark left...", nullptr, 1, DO_LogarithmicMark_left);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark right...", nullptr, 1, DO_LogarithmicMark_right);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark bottom...", nullptr, 1, DO_LogarithmicMark_bottom);
+	praat_addMenuCommand (U"Picture", U"Margins", U"One logarithmic mark top...", nullptr, 1, DO_LogarithmicMark_top);
+	praat_addMenuCommand (U"Picture", U"Margins", U"-- axes --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Margins", U"Axes...", nullptr, 0, DO_Axes);
+
+	praat_addMenuCommand (U"Picture", U"World", U"Text...", nullptr, 0, DO_Text);
+	praat_addMenuCommand (U"Picture", U"World", U"Text special...", nullptr, 0, DO_Text_special);
+	praat_addMenuCommand (U"Picture", U"World", U"-- line --", nullptr, 0, 0);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw line...", nullptr, 0, DO_DrawLine);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw arrow...", nullptr, 0, DO_DrawArrow);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw two-way arrow...", nullptr, 0, DO_DrawDoubleArrow);
+	praat_addMenuCommand (U"Picture", U"World", U"-- function --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw function...", nullptr, 0, DO_DrawFunction);
+	praat_addMenuCommand (U"Picture", U"World", U"-- rectangle --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw rectangle...", nullptr, 0, DO_DrawRectangle);
+	praat_addMenuCommand (U"Picture", U"World", U"Paint rectangle...", nullptr, 0, DO_PaintRectangle);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw rounded rectangle...", nullptr, 0, DO_DrawRoundedRectangle);
+	praat_addMenuCommand (U"Picture", U"World", U"Paint rounded rectangle...", nullptr, 0, DO_PaintRoundedRectangle);
+	praat_addMenuCommand (U"Picture", U"World", U"-- arc --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw arc...", nullptr, 0, DO_DrawArc);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw ellipse...", nullptr, 0, DO_DrawEllipse);
+	praat_addMenuCommand (U"Picture", U"World", U"Paint ellipse...", nullptr, 0, DO_PaintEllipse);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw circle...", nullptr, 0, DO_DrawCircle);
+	praat_addMenuCommand (U"Picture", U"World", U"Paint circle...", nullptr, 0, DO_PaintCircle);
+	praat_addMenuCommand (U"Picture", U"World", U"Draw circle (mm)...", nullptr, 0, DO_DrawCircle_mm);
+	praat_addMenuCommand (U"Picture", U"World", U"Paint circle (mm)...", nullptr, 0, DO_PaintCircle_mm);
+	praat_addMenuCommand (U"Picture", U"World", U"-- picture --", nullptr, 0, 0);
+	praat_addMenuCommand (U"Picture", U"World", U"Insert picture from file...", nullptr, 0, DO_InsertPictureFromFile);
+	praat_addMenuCommand (U"Picture", U"World", U"-- axes --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Axes...", nullptr, 0, DO_Axes);
+	praat_addMenuCommand (U"Picture", U"World", U"Measure", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Horizontal mm to wc...", nullptr, 1, DO_dxMMtoWC);
+	praat_addMenuCommand (U"Picture", U"World", U"Horizontal wc to mm...", nullptr, 1, DO_dxWCtoMM);
+	praat_addMenuCommand (U"Picture", U"World", U"Vertical mm to wc...", nullptr, 1, DO_dyMMtoWC);
+	praat_addMenuCommand (U"Picture", U"World", U"Vertical wc to mm...", nullptr, 1, DO_dyWCtoMM);
+	praat_addMenuCommand (U"Picture", U"World", U"-- text measure --", nullptr, 1, nullptr);
+	praat_addMenuCommand (U"Picture", U"World", U"Text width (wc)...", nullptr, 1, DO_textWidth_wc);
+	praat_addMenuCommand (U"Picture", U"World", U"Text width (mm)...", nullptr, 1, DO_textWidth_mm);
+	praat_addMenuCommand (U"Picture", U"World", U"PostScript text width (wc)...", nullptr, 1, DO_textWidth_ps_wc);
+	praat_addMenuCommand (U"Picture", U"World", U"PostScript text width (mm)...", nullptr, 1, DO_textWidth_ps_mm);
+
+	praatButton_innerViewport = praat_addMenuCommand (U"Picture", U"Select", U"Mouse selects inner viewport", nullptr, praat_RADIO_FIRST, DO_MouseSelectsInnerViewport);
+	praatButton_outerViewport = praat_addMenuCommand (U"Picture", U"Select", U"Mouse selects outer viewport", nullptr, praat_RADIO_NEXT, DO_MouseSelectsOuterViewport);
+	praat_addMenuCommand (U"Picture", U"Select", U"-- select --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Select", U"Select inner viewport...", nullptr, 0, DO_SelectInnerViewport);
+	praat_addMenuCommand (U"Picture", U"Select", U"Select outer viewport...", nullptr, 0, DO_SelectOuterViewport);
+	praat_addMenuCommand (U"Picture", U"Select", U"Viewport...", nullptr, praat_HIDDEN, DO_SelectOuterViewport);
+	praat_addMenuCommand (U"Picture", U"Select", U"-- viewport drawing --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Select", U"Viewport text...", nullptr, 0, DO_ViewportText);
+
+	praatButton_lines [Graphics_DRAWN] = praat_addMenuCommand (U"Picture", U"Pen", U"Solid line", nullptr, praat_RADIO_FIRST, DO_Solid_line);
+	praat_addMenuCommand (U"Picture", U"Pen", U"Plain line", nullptr, praat_RADIO_NEXT | praat_HIDDEN, DO_Solid_line);
+	praatButton_lines [Graphics_DOTTED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dotted line", nullptr, praat_RADIO_NEXT, DO_Dotted_line);
+	praatButton_lines [Graphics_DASHED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dashed line", nullptr, praat_RADIO_NEXT, DO_Dashed_line);
+	praatButton_lines [Graphics_DASHED_DOTTED] = praat_addMenuCommand (U"Picture", U"Pen", U"Dashed-dotted line", nullptr, praat_RADIO_NEXT, DO_Dashed_dotted_line);
+	praat_addMenuCommand (U"Picture", U"Pen", U"-- line width --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Pen", U"Line width...", nullptr, 0, DO_Line_width);
+	praat_addMenuCommand (U"Picture", U"Pen", U"Arrow size...", nullptr, 0, DO_Arrow_size);
+	praat_addMenuCommand (U"Picture", U"Pen", U"Speckle size...", nullptr, 0, DO_Speckle_size);
+	praat_addMenuCommand (U"Picture", U"Pen", U"-- colour --", nullptr, 0, nullptr);
+	praat_addMenuCommand (U"Picture", U"Pen", U"Colour...", nullptr, 0, DO_Colour);
+	praatButton_black = praat_addMenuCommand (U"Picture", U"Pen", U"Black", nullptr, praat_CHECKBUTTON, DO_Black);
+	praatButton_white = praat_addMenuCommand (U"Picture", U"Pen", U"White", nullptr, praat_CHECKBUTTON, DO_White);
+	praatButton_red = praat_addMenuCommand (U"Picture", U"Pen", U"Red", nullptr, praat_CHECKBUTTON, DO_Red);
+	praatButton_green = praat_addMenuCommand (U"Picture", U"Pen", U"Green", nullptr, praat_CHECKBUTTON, DO_Green);
+	praatButton_blue = praat_addMenuCommand (U"Picture", U"Pen", U"Blue", nullptr, praat_CHECKBUTTON, DO_Blue);
+	praatButton_yellow = praat_addMenuCommand (U"Picture", U"Pen", U"Yellow", nullptr, praat_CHECKBUTTON, DO_Yellow);
+	praatButton_cyan = praat_addMenuCommand (U"Picture", U"Pen", U"Cyan", nullptr, praat_CHECKBUTTON, DO_Cyan);
+	praatButton_magenta = praat_addMenuCommand (U"Picture", U"Pen", U"Magenta", nullptr, praat_CHECKBUTTON, DO_Magenta);
+	praatButton_maroon = praat_addMenuCommand (U"Picture", U"Pen", U"Maroon", nullptr, praat_CHECKBUTTON, DO_Maroon);
+	praatButton_lime = praat_addMenuCommand (U"Picture", U"Pen", U"Lime", nullptr, praat_CHECKBUTTON, DO_Lime);
+	praatButton_navy = praat_addMenuCommand (U"Picture", U"Pen", U"Navy", nullptr, praat_CHECKBUTTON, DO_Navy);
+	praatButton_teal = praat_addMenuCommand (U"Picture", U"Pen", U"Teal", nullptr, praat_CHECKBUTTON, DO_Teal);
+	praatButton_purple = praat_addMenuCommand (U"Picture", U"Pen", U"Purple", nullptr, praat_CHECKBUTTON, DO_Purple);
+	praatButton_olive = praat_addMenuCommand (U"Picture", U"Pen", U"Olive", nullptr, praat_CHECKBUTTON, DO_Olive);
+	praatButton_pink = praat_addMenuCommand (U"Picture", U"Pen", U"Pink", nullptr, praat_CHECKBUTTON, DO_Pink);
+	praatButton_silver = praat_addMenuCommand (U"Picture", U"Pen", U"Silver", nullptr, praat_CHECKBUTTON, DO_Silver);
+	praatButton_grey = praat_addMenuCommand (U"Picture", U"Pen", U"Grey", nullptr, praat_CHECKBUTTON, DO_Grey);
+
+	praat_addMenuCommand (U"Picture", U"Font", U"Font size...", nullptr, 0, DO_Font_size);
+	praatButton_10 = praat_addMenuCommand (U"Picture", U"Font", U"10", nullptr, praat_CHECKBUTTON, DO_10);
+	praatButton_12 = praat_addMenuCommand (U"Picture", U"Font", U"12", nullptr, praat_CHECKBUTTON, DO_12);
+	praatButton_14 = praat_addMenuCommand (U"Picture", U"Font", U"14", nullptr, praat_CHECKBUTTON, DO_14);
+	praatButton_18 = praat_addMenuCommand (U"Picture", U"Font", U"18", nullptr, praat_CHECKBUTTON, DO_18);
+	praatButton_24 = praat_addMenuCommand (U"Picture", U"Font", U"24", nullptr, praat_CHECKBUTTON, DO_24);
+	praat_addMenuCommand (U"Picture", U"Font", U"-- font ---", nullptr, 0, nullptr);
+	praatButton_fonts [kGraphics_font_TIMES] = praat_addMenuCommand (U"Picture", U"Font", U"Times", nullptr, praat_RADIO_FIRST, DO_Times);
+	praatButton_fonts [kGraphics_font_HELVETICA] = praat_addMenuCommand (U"Picture", U"Font", U"Helvetica", nullptr, praat_RADIO_NEXT, DO_Helvetica);
+	praatButton_fonts [kGraphics_font_PALATINO] = praat_addMenuCommand (U"Picture", U"Font", U"Palatino", nullptr, praat_RADIO_NEXT, DO_Palatino);
+	praatButton_fonts [kGraphics_font_COURIER] = praat_addMenuCommand (U"Picture", U"Font", U"Courier", nullptr, praat_RADIO_NEXT, DO_Courier);
+
+	praat_addMenuCommand (U"Picture", U"Help", U"Picture window help", nullptr, '?', DO_PictureWindowHelp);
+	praat_addMenuCommand (U"Picture", U"Help", U"About special symbols", nullptr, 0, DO_AboutSpecialSymbols);
+	praat_addMenuCommand (U"Picture", U"Help", U"About text styles", nullptr, 0, DO_AboutTextStyles);
+	praat_addMenuCommand (U"Picture", U"Help", U"Phonetic symbols", nullptr, 0, DO_PhoneticSymbols);
+	praat_addMenuCommand (U"Picture", U"Help", U"-- manual --", nullptr, 0, nullptr);
 	praat_addMenuCommand (U"Picture", U"Help",
 		Melder_cat (U"Search ", praatP.title, U" manual..."),
-		0, 'M', DO_SearchManual);
+		nullptr, 'M', DO_SearchManual);
 
 	if (! theCurrentPraatApplication -> batch) {
 		width = height = resolution * 12;
 		scrollWindow = GuiScrolledWindow_createShown (dialog, margin, 0, Machine_getMenuBarHeight () + margin, 0, 1, 1, 0);
-		drawingArea = GuiDrawingArea_createShown (scrollWindow, width, height, NULL, NULL, NULL, NULL, NULL, 0);
+		drawingArea = GuiDrawingArea_createShown (scrollWindow, width, height, nullptr, nullptr, nullptr, nullptr, nullptr, 0);
 		GuiThing_show (dialog);
 	}
 
 	// TODO: Paul: deze moet VOOR de update functies anders krijgen die void_me 0x0
-	praat_picture = Picture_create (drawingArea, ! theCurrentPraatApplication -> batch);	
+	praat_picture = Picture_create (drawingArea, ! theCurrentPraatApplication -> batch);
 	// READ THIS!
-	Picture_setSelectionChangedCallback (praat_picture, cb_selectionChanged, NULL);
-	theCurrentPraatPicture -> graphics = static_cast<Graphics> (Picture_getGraphics (praat_picture));
+	Picture_setSelectionChangedCallback (praat_picture.get(), cb_selectionChanged, nullptr);
+	theCurrentPraatPicture -> graphics = static_cast<Graphics> (Picture_peekGraphics (praat_picture.get()));
 
 	updatePenMenu ();
 	updateFontMenu ();
@@ -1811,31 +1793,31 @@ void praat_picture_init (void) {
 	updateViewportMenu ();
 }
 
-void praat_picture_prefsChanged (void) {
+void praat_picture_prefsChanged () {
 	updateFontMenu ();
 	updateSizeMenu ();
 	updateViewportMenu ();
 	Graphics_setFontSize (theCurrentPraatPicture -> graphics, theCurrentPraatPicture -> fontSize);   // so that the thickness of the selection rectangle is correct
-	Picture_setMouseSelectsInnerViewport (praat_picture, praat_mouseSelectsInnerViewport);
+	Picture_setMouseSelectsInnerViewport (praat_picture.get(), praat_mouseSelectsInnerViewport);
 }
 
-void praat_picture_background (void) {
+void praat_picture_background () {
 	if (theCurrentPraatPicture != & theForegroundPraatPicture) return;   // Demo window and pictures ignore this
 	if (! theCurrentPraatApplication -> batch) {
-		//Picture_unhighlight (praat_picture);
+		//Picture_unhighlight (praat_picture.get());
 		#if cocoa
-			Picture_background (praat_picture);   // prevent Cocoa's very slow highlighting until woken up by Picture_foreground()
+			Picture_background (praat_picture.get());   // prevent Cocoa's very slow highlighting until woken up by Picture_foreground()
 		#endif
 	}
 }
 
-void praat_picture_foreground (void) {
+void praat_picture_foreground () {
 	if (theCurrentPraatPicture != & theForegroundPraatPicture) return;   // Demo window and pictures ignore this
 	if (! theCurrentPraatApplication -> batch) {
 		#if cocoa
-			Picture_foreground (praat_picture);   // wake up from the highlighting sleep caused by Picture_background()
+			Picture_foreground (praat_picture.get());   // wake up from the highlighting sleep caused by Picture_background()
 		#endif
-		//Picture_highlight (praat_picture);
+		//Picture_highlight (praat_picture.get());
 	}
 }
 
diff --git a/sys/praat_script.cpp b/sys/praat_script.cpp
index 7d8fc4e..f71efe1 100644
--- a/sys/praat_script.cpp
+++ b/sys/praat_script.cpp
@@ -1,20 +1,19 @@
 /* praat_script.cpp
  *
- * Copyright (C) 1993-2012,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1993-2012,2013,2014,2015,2016 Paul Boersma
  * 
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  * 
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -36,13 +35,13 @@ static int praat_findObjectFromString (Interpreter interpreter, const char32 *st
 			static MelderString buffer { 0 };
 			MelderString_copy (& buffer, string);
 			char32 *space = str32chr (buffer.string, U' ');
-			if (space == NULL)
+			if (! space)
 				Melder_throw (U"Missing space in name.");
 			*space = U'\0';
 			char32 *className = & buffer.string [0], *givenName = space + 1;
 			WHERE_DOWN (1) {
-				Data object = (Data) OBJECT;
-				if (str32equ (className, Thing_className ((Thing) OBJECT)) && str32equ (givenName, object -> name))
+				Daata object = (Daata) OBJECT;
+				if (str32equ (className, Thing_className (OBJECT)) && str32equ (givenName, object -> name))
 					return IOBJECT;
 			}
 			/*
@@ -50,8 +49,8 @@ static int praat_findObjectFromString (Interpreter interpreter, const char32 *st
 			 */
 			ClassInfo klas = Thing_classFromClassName (className, NULL);
 			WHERE_DOWN (1) {
-				Data object = (Data) OBJECT;
-				if (str32equ (klas -> className, Thing_className ((Thing) OBJECT)) && str32equ (givenName, object -> name))
+				Daata object = (Daata) OBJECT;
+				if (str32equ (klas -> className, Thing_className (OBJECT)) && str32equ (givenName, object -> name))
 					return IOBJECT;
 			}
 			Melder_throw (U"No object with that name.");
@@ -77,17 +76,21 @@ Editor praat_findEditorFromString (const char32 *string) {
 	if (*string >= U'A' && *string <= U'Z') {
 		WHERE_DOWN (1) {
 			for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-				Editor editor = (Editor) theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
-				if (editor != NULL) {
-					const char32 *name = str32chr (editor -> name, U' ') + 1;
-					if (str32equ (name, string)) return editor;
+				Editor editor = theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
+				if (editor) {
+					Melder_assert (editor -> name);
+					const char32 *space = str32chr (editor -> name, U' ');   // editors tend to be called like "3. Sound kanweg"
+					if (space) {   // but not all
+						const char32 *name = space + 1;
+						if (str32equ (name, string)) return editor;
+					}
 				}
 			}
 		}
 	} else {
 		WHERE_DOWN (1) {
 			for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-				Editor editor = (Editor) theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
+				Editor editor = theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
 				if (editor && str32equ (editor -> name, string)) return editor;
 			}
 		}
@@ -100,7 +103,7 @@ Editor praat_findEditorById (long id) {
 	WHERE (1) {
 		if (ID == id) {
 			for (int ieditor = 0; ieditor < praat_MAXNUM_EDITORS; ieditor ++) {
-				Editor editor = (Editor) theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
+				Editor editor = theCurrentPraatObjects -> list [IOBJECT]. editors [ieditor];
 				if (editor) return editor;
 			}
 		}
@@ -427,11 +430,11 @@ int praat_executeCommand (Interpreter interpreter, char32 *command) {
 			colon [0] = colon [1] = colon [2] = U'.';
 			colon [3] = U'\0';
 		}
-		if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor != NULL) {
+		if (theCurrentPraatObjects == & theForegroundPraatObjects && praatP. editor) {
 			if (hasColon) {
-				Editor_doMenuCommand ((Editor) praatP. editor, command2, narg, args, NULL, interpreter);
+				Editor_doMenuCommand (praatP. editor, command2, narg, args, NULL, interpreter);
 			} else {
-				Editor_doMenuCommand ((Editor) praatP. editor, command, 0, NULL, arguments, interpreter);
+				Editor_doMenuCommand (praatP. editor, command, 0, NULL, arguments, interpreter);
 			}
 		} else if (theCurrentPraatObjects != & theForegroundPraatObjects &&
 		    (str32nequ (command, U"Save ", 5) ||
@@ -501,7 +504,10 @@ int praat_executeCommand (Interpreter interpreter, char32 *command) {
 }
 
 void praat_executeCommandFromStandardInput (const char32 *programName) {
-	char command8 [1000]; // can be recursive
+	char command8 [1000];   // can be recursive
+	/*
+	 * FIXME: implement for Windows.
+	 */
 	for (;;) {
 		printf ("%s > ", Melder_peek32to8 (programName));
 		if (! fgets (command8, 999, stdin))
@@ -510,7 +516,7 @@ void praat_executeCommandFromStandardInput (const char32 *programName) {
 		if (newLine) *newLine = '\0';
 		autostring32 command32 = Melder_8to32 (command8);
 		try {
-			praat_executeCommand (NULL, command32.peek());
+			praat_executeCommand (nullptr, command32.peek());
 		} catch (MelderError) {
 			Melder_flushError (programName, U": command \"", Melder_peek8to32 (command8), U"\" not executed.");
 		}
@@ -524,10 +530,10 @@ void praat_executeScriptFromFile (MelderFile file, const char32 *arguments) {
 		Melder_includeIncludeFiles (& text);
 		autoInterpreter interpreter = Interpreter_createFromEnvironment (praatP.editor);
 		if (arguments) {
-			Interpreter_readParameters (interpreter.peek(), text.peek());
-			Interpreter_getArgumentsFromString (interpreter.peek(), arguments);
+			Interpreter_readParameters (interpreter.get(), text.peek());
+			Interpreter_getArgumentsFromString (interpreter.get(), arguments);
 		}
-		Interpreter_run (interpreter.peek(), text.peek());
+		Interpreter_run (interpreter.get(), text.peek());
 	} catch (MelderError) {
 		Melder_throw (U"Script ", file, U" not completed.");
 	}
@@ -537,16 +543,16 @@ void praat_executeScriptFromFileName (const char32 *fileName, int narg, Stackel
 	/*
 	 * The argument 'fileName' is unsafe. Duplicate its contents.
 	 */
-	structMelderFile file = { 0 };
+	structMelderFile file { 0 };
 	Melder_relativePathToFile (fileName, & file);
 	try {
 		autostring32 text = MelderFile_readText (& file);
 		autoMelderFileSetDefaultDir dir (& file);   // so that relative file names can be used inside the script
 		Melder_includeIncludeFiles (& text);
 		autoInterpreter interpreter = Interpreter_createFromEnvironment (praatP.editor);
-		Interpreter_readParameters (interpreter.peek(), text.peek());
-		Interpreter_getArgumentsFromArgs (interpreter.peek(), narg, args);
-		Interpreter_run (interpreter.peek(), text.peek());
+		Interpreter_readParameters (interpreter.get(), text.peek());
+		Interpreter_getArgumentsFromArgs (interpreter.get(), narg, args);
+		Interpreter_run (interpreter.get(), text.peek());
 	} catch (MelderError) {
 		Melder_throw (U"Script ", & file, U" not completed.");   // don't refer to 'fileName', because its contents may have changed
 	}
@@ -555,7 +561,7 @@ void praat_executeScriptFromFileName (const char32 *fileName, int narg, Stackel
 void praat_executeScriptFromFileNameWithArguments (const char32 *nameAndArguments) {
 	char32 path [256];
 	const char32 *p, *arguments;
-	structMelderFile file = { 0 };
+	structMelderFile file { 0 };
 	/*
 	 * Split into file name and arguments.
 	 */
@@ -580,28 +586,38 @@ void praat_executeScriptFromFileNameWithArguments (const char32 *nameAndArgument
 	praat_executeScriptFromFile (& file, arguments);
 }
 
+extern "C" void praatlib_executeScript (const char *text8) {
+	try {
+		autoInterpreter interpreter = Interpreter_create (nullptr, nullptr);
+		autostring32 string = Melder_8to32 (text8);
+		Interpreter_run (interpreter.get(), string.peek());
+	} catch (MelderError) {
+		Melder_throw (U"Script not completed.");
+	}
+}
+
 void praat_executeScriptFromText (const char32 *text) {
 	try {
-		autoInterpreter interpreter = Interpreter_create (NULL, NULL);
-		autostring32 string = Melder_dup (text);
-		Interpreter_run (interpreter.peek(), string.peek());
+		autoInterpreter interpreter = Interpreter_create (nullptr, nullptr);
+		autostring32 string = Melder_dup (text);   // copy, because Interpreter will change it (UGLY)
+		Interpreter_run (interpreter.get(), string.peek());
 	} catch (MelderError) {
 		Melder_throw (U"Script not completed.");
 	}
 }
 
-void praat_executeScriptFromDialog (Any dia) {
+void praat_executeScriptFromDialog (UiForm dia) {
 	char32 *path = UiForm_getString (dia, U"$file");
-	structMelderFile file = { 0 };
+	structMelderFile file { 0 };
 	Melder_pathToFile (path, & file);
 	autostring32 text = MelderFile_readText (& file);
 	autoMelderFileSetDefaultDir dir (& file);
 	Melder_includeIncludeFiles (& text);
 	autoInterpreter interpreter = Interpreter_createFromEnvironment (praatP.editor);
-	Interpreter_readParameters (interpreter.peek(), text.peek());
-	Interpreter_getArgumentsFromDialog (interpreter.peek(), dia);
+	Interpreter_readParameters (interpreter.get(), text.peek());
+	Interpreter_getArgumentsFromDialog (interpreter.get(), dia);
 	autoPraatBackground background;
-	Interpreter_run (interpreter.peek(), text.peek());
+	Interpreter_run (interpreter.get(), text.peek());
 }
 
 static void secondPassThroughScript (UiForm sendingForm, int /* narg */, Stackel /* args */,
@@ -619,15 +635,15 @@ static void firstPassThroughScript (MelderFile file) {
 			Melder_includeIncludeFiles (& text);
 		}
 		autoInterpreter interpreter = Interpreter_createFromEnvironment (praatP.editor);
-		if (Interpreter_readParameters (interpreter.peek(), text.peek()) > 0) {
-			Any form = Interpreter_createForm (interpreter.peek(),
-				praatP.editor ? ((Editor) praatP.editor) -> d_windowForm : theCurrentPraatApplication -> topShell,
+		if (Interpreter_readParameters (interpreter.get(), text.peek()) > 0) {
+			UiForm form = Interpreter_createForm (interpreter.get(),
+				praatP.editor ? praatP.editor -> d_windowForm : theCurrentPraatApplication -> topShell,
 				Melder_fileToPath (file), secondPassThroughScript, NULL, false);
 			UiForm_destroyWhenUnmanaged (form);
 			UiForm_do (form, false);
 		} else {
 			autoPraatBackground background;
-			praat_executeScriptFromFile (file, NULL);
+			praat_executeScriptFromFile (file, nullptr);
 		}
 	} catch (MelderError) {
 		Melder_throw (U"Script ", file, U" not completed.");
@@ -652,8 +668,8 @@ void DO_RunTheScriptFromAnyAddedMenuCommand (UiForm /* sendingForm_dummy */, int
 
 void DO_RunTheScriptFromAnyAddedEditorCommand (Editor editor, const char32 *script) {
 	praatP.editor = editor;
-	DO_RunTheScriptFromAnyAddedMenuCommand (NULL, 0, NULL, script, NULL, NULL, false, NULL);
-	/*praatP.editor = NULL;*/
+	DO_RunTheScriptFromAnyAddedMenuCommand (nullptr, 0, nullptr, script, nullptr, nullptr, false, nullptr);
+	/*praatP.editor = nullptr;*/
 }
 
 /* End of file praat_script.cpp */
diff --git a/sys/praat_script.h b/sys/praat_script.h
index 4358971..1e8ef0c 100644
--- a/sys/praat_script.h
+++ b/sys/praat_script.h
@@ -2,21 +2,20 @@
 #define _praat_script_h_
 /* praat_script.h
  *
- * Copyright (C) 1992-2011,2013,2014,2015 Paul Boersma
+ * Copyright (C) 1992-2011,2013,2014,2015,2016 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Interpreter.h"
@@ -27,7 +26,8 @@ void praat_executeScriptFromFile (MelderFile file, const char32 *arguments);
 void praat_executeScriptFromFileName (const char32 *fileName, int narg, Stackel args);
 void praat_executeScriptFromFileNameWithArguments (const char32 *nameAndArguments);
 void praat_executeScriptFromText (const char32 *text);
-void praat_executeScriptFromDialog (Any dia);
+void praat_executeScriptFromDialog (UiForm dia);
+extern "C" void praatlib_executeScript (const char *text8);
 void DO_praat_runScript (UiForm sendingForm, int narg, Stackel args, const char32 *sendingString, Interpreter interpreter_dummy, const char32 *invokingButtonTitle, bool modified, void *dummy);
 void DO_RunTheScriptFromAnyAddedMenuCommand (UiForm sendingForm_dummy, int narg, Stackel args, const char32 *scriptPath, Interpreter interpreter_dummy, const char32 *invokingButtonTitle, bool modified, void *dummy);
 void DO_RunTheScriptFromAnyAddedEditorCommand (Editor editor, const char32 *script);
diff --git a/sys/praat_statistics.cpp b/sys/praat_statistics.cpp
index 941aeda..5eda802 100644
--- a/sys/praat_statistics.cpp
+++ b/sys/praat_statistics.cpp
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1992-2012,2014,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <time.h>
@@ -36,10 +35,10 @@ void praat_statistics_prefs () {
 
 void praat_statistics_prefsChanged () {
 	if (! statistics.dateOfFirstSession [0]) {
-		time_t today = time (NULL);
+		time_t today = time (nullptr);
 		char32 *newLine;
 		str32cpy (statistics.dateOfFirstSession, Melder_peek8to32 (ctime (& today)));
-		newLine = str32chr (statistics.dateOfFirstSession, '\n');
+		newLine = str32chr (statistics.dateOfFirstSession, U'\n');
 		if (newLine) *newLine = '\0';
 	}
 	if (theCurrentPraatApplication -> batch)
@@ -68,7 +67,43 @@ void praat_reportIntegerProperties () {
 void praat_reportTextProperties () {
 	MelderInfo_open ();
 	MelderInfo_writeLine (U"Text properties of this edition of Praat on this computer:\n");
-	MelderInfo_writeLine (U"Locale: ", Melder_peek8to32 (setlocale (LC_ALL, NULL)));
+	MelderInfo_writeLine (U"Locale: ", Melder_peek8to32 (setlocale (LC_ALL, nullptr)));
+	MelderInfo_writeLine (U"A \"char\" is ",                                      8, U" bits.");
+	MelderInfo_writeLine (U"A \"char16_t\" is ",           sizeof (char16_t)    * 8, U" bits.");
+	MelderInfo_writeLine (U"A \"wchar_t\" is ",            sizeof (wchar_t)     * 8, U" bits.");
+	MelderInfo_writeLine (U"A \"char32_t\" is ",           sizeof (char32_t)    * 8, U" bits.");
+	MelderInfo_close ();
+}
+
+void praat_reportSystemProperties () {
+	#define xstr(s) str(s)
+	#define str(s) #s
+	MelderInfo_open ();
+	MelderInfo_writeLine (U"System properties of this edition of Praat on this computer:\n");
+	#ifdef _WIN32
+		MelderInfo_writeLine (U"_WIN32 is \"" xstr (_WIN32) "\".");
+	#endif
+	#ifdef WINVER
+		MelderInfo_writeLine (U"WINVER is \"" xstr (WINVER) "\".");
+	#endif
+	#ifdef _WIN32_WINNT
+		MelderInfo_writeLine (U"_WIN32_WINNT is \"" xstr (_WIN32_WINNT) "\".");
+	#endif
+	#ifdef _WIN32_IE
+		MelderInfo_writeLine (U"_WIN32_IE is \"" xstr (_WIN32_IE) "\".");
+	#endif
+	#ifdef UNICODE
+		MelderInfo_writeLine (U"UNICODE is \"" xstr (UNICODE) "\".");
+	#endif
+	#ifdef _FILE_OFFSET_BITS
+		MelderInfo_writeLine (U"_FILE_OFFSET_BITS is \"" xstr (_FILE_OFFSET_BITS) "\".");
+	#endif
+	#ifdef macintosh
+		MelderInfo_writeLine (U"macintosh is \"" xstr (macintosh) "\".");
+	#endif
+	#ifdef linux
+		MelderInfo_writeLine (U"linux is \"" xstr (linux) "\".");
+	#endif
 	MelderInfo_close ();
 }
 
@@ -104,22 +139,20 @@ void praat_reportMemoryUse () {
 	MelderInfo_writeLine (U"Currently in use:\n"
 		U"   Strings: ", MelderString_allocationCount () - MelderString_deallocationCount ());
 	MelderInfo_writeLine (U"   Arrays: ", NUM_getTotalNumberOfArrays ());
-	MelderInfo_writeLine (U"   Things: ", Thing_getTotalNumberOfThings (),
+	MelderInfo_writeLine (U"   Things: ", theTotalNumberOfThings,
 		U" (objects in list: ", theCurrentPraatObjects -> n, U")");
 	long numberOfMotifWidgets =
-		#if motif && (defined (_WIN32) || defined (macintosh))
-			Gui_getNumberOfMotifWidgets ();
-		#else
-			0;
-		#endif
-	if (numberOfMotifWidgets > 0) {
+	#if motif
+		Gui_getNumberOfMotifWidgets ();
 		MelderInfo_writeLine (U"   Motif widgets: ", numberOfMotifWidgets);
-	}
+	#else
+		0;
+	#endif
 	MelderInfo_writeLine (U"   Other: ",
-		Melder_bigInteger (Melder_allocationCount () - Melder_deallocationCount ()
-			- Thing_getTotalNumberOfThings () - NUM_getTotalNumberOfArrays ()
-			- (MelderString_allocationCount () - MelderString_deallocationCount ())
-			- numberOfMotifWidgets));
+		Melder_allocationCount () - Melder_deallocationCount ()
+		- theTotalNumberOfThings - NUM_getTotalNumberOfArrays ()
+		- (MelderString_allocationCount () - MelderString_deallocationCount ())
+		- numberOfMotifWidgets);
 	MelderInfo_writeLine (
 		U"\nMemory history of this session:\n"
 		U"   Total created: ", Melder_bigInteger (Melder_allocationCount ()), U" (", Melder_bigInteger (Melder_allocationSize ()), U" bytes)");
diff --git a/sys/praat_version.h b/sys/praat_version.h
index fbae654..f3e052a 100644
--- a/sys/praat_version.h
+++ b/sys/praat_version.h
@@ -1,5 +1,5 @@
-#define PRAAT_VERSION_STR 5.4.18
-#define PRAAT_VERSION_NUM 5418
-#define PRAAT_YEAR 2015
-#define PRAAT_MONTH September
-#define PRAAT_DAY 7
+#define PRAAT_VERSION_STR 6.0.18
+#define PRAAT_VERSION_NUM 6018
+#define PRAAT_YEAR 2016
+#define PRAAT_MONTH May
+#define PRAAT_DAY 23
diff --git a/sys/prefs.h b/sys/prefs.h
index fec260c..6264011 100644
--- a/sys/prefs.h
+++ b/sys/prefs.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Preferences.h"
diff --git a/sys/prefs_copyToInstance.h b/sys/prefs_copyToInstance.h
index 3d29518..2f006c5 100644
--- a/sys/prefs_copyToInstance.h
+++ b/sys/prefs_copyToInstance.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* for C++ files; see prefs.h */
diff --git a/sys/prefs_define.h b/sys/prefs_define.h
index 27ae724..ea10a60 100644
--- a/sys/prefs_define.h
+++ b/sys/prefs_define.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* for C++ files; see prefs.h */
diff --git a/sys/prefs_install.h b/sys/prefs_install.h
index 6bee05d..2a64278 100644
--- a/sys/prefs_install.h
+++ b/sys/prefs_install.h
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 2013,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /* for C++ files; see prefs.h */
diff --git a/sys/sendpraat.c b/sys/sendpraat.c
index 4d79e64..c27ba9b 100644
--- a/sys/sendpraat.c
+++ b/sys/sendpraat.c
@@ -313,6 +313,7 @@ char *sendpraat (void *display, const char *programName, long timeOut, const cha
 	return errorMessage [0] == '\0' ? NULL : errorMessage;
 }
 
+#ifndef __CYGWIN__
 wchar_t *sendpraatW (void *display, const wchar_t *programName, long timeOut, const wchar_t *text) {
 	wchar_t nativeProgramName [100];
 	#if gtk
@@ -534,6 +535,7 @@ wchar_t *sendpraatW (void *display, const wchar_t *programName, long timeOut, co
 	 */
 	return errorMessageW [0] == '\0' ? NULL : errorMessageW;
 }
+#endif
 
 /*
  * To compile sendpraat as a stand-alone program, use the -DSTAND_ALONE option to the C compiler:
@@ -541,7 +543,7 @@ wchar_t *sendpraatW (void *display, const wchar_t *programName, long timeOut, co
 #ifdef STAND_ALONE
 /*
  * To compile on MacOS X:
-cc -o sendpraat -DSTAND_ALONE -framework CoreServices -I/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers -I/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers sendpraat.c -Dmacintosh -DuseCarbon=1
+cc -o sendpraat -DSTAND_ALONE -framework CoreServices -I/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Headers -I/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers sendpraat.c -Dmacintosh
  *
  * To compile on Linux:
 cc -std=gnu99 -o sendpraat -DSTAND_ALONE -DUNIX `pkg-config --cflags --libs gtk+-2.0` sendpraat.c
diff --git a/sys/sendsocket.c b/sys/sendsocket.c
index fcd922e..6138c8f 100644
--- a/sys/sendsocket.c
+++ b/sys/sendsocket.c
@@ -2,19 +2,18 @@
  *
  * Copyright (C) 1999-2006 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
diff --git a/sys/sendsocket.h b/sys/sendsocket.h
index a80b6ab..8c9ee25 100644
--- a/sys/sendsocket.h
+++ b/sys/sendsocket.h
@@ -4,19 +4,18 @@
  *
  * Copyright (C) 1999-2011 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #ifdef __cplusplus
diff --git a/sys/site.cpp b/sys/site.cpp
index 604df50..5dbdde1 100644
--- a/sys/site.cpp
+++ b/sys/site.cpp
@@ -2,28 +2,18 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- * pb 2002/03/07 GPL
- * pb 2004/10/21 simplified print command
- * pb 2005/03/02 pref string buffer 260 bytes long
- * pb 2007/08/12 wchar
- * pb 2007/12/09 preferences
- * pb 2011/05/15 C++
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "Preferences.h"
@@ -32,11 +22,11 @@
 
 static char32 printCommand [Preferences_STRING_BUFFER_SIZE];
 
-char32 * Site_getPrintCommand (void) { return printCommand; }
+char32 * Site_getPrintCommand () { return printCommand; }
 
 void Site_setPrintCommand (const char32 *text) { str32cpy (printCommand, text); }
 
-void Site_prefs (void) {
+void Site_prefs () {
 	Preferences_addString (U"Site.printCommand", printCommand, U"lp -c %s");
 }
 
diff --git a/sys/site.h b/sys/site.h
index 1a6cae0..73966d0 100644
--- a/sys/site.h
+++ b/sys/site.h
@@ -4,25 +4,24 @@
  *
  * Copyright (C) 1992-2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
-char32 *Site_getPrintCommand (void);
+char32 *Site_getPrintCommand ();
 void Site_setPrintCommand (const char32 *text);
 
-void Site_prefs (void);
+void Site_prefs ();
 
 /* End of file site.h */
 #endif
diff --git a/sys/winport_off.h b/sys/winport_off.h
index adc6aef..73c7662 100644
--- a/sys/winport_off.h
+++ b/sys/winport_off.h
@@ -1,24 +1,22 @@
 /* winport_off.h
  *
- * Copyright (C) 2011 Paul Boersma
+ * Copyright (C) 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #undef Graphics
-#undef Data
 #undef Polygon
 
 /* End of file winport_off.h */
diff --git a/sys/winport_on.h b/sys/winport_on.h
index 26ce31d..f947cf3 100644
--- a/sys/winport_on.h
+++ b/sys/winport_on.h
@@ -1,24 +1,22 @@
 /* winport_on.h
  *
- * Copyright (C) 2011 Paul Boersma
+ * Copyright (C) 2011,2015 Paul Boersma
  *
- * This program is free software; you can redistribute it and/or modify
+ * This code is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or (at
  * your option) any later version.
  *
- * This program is distributed in the hope that it will be useful, but
+ * This code is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this work. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #define Graphics WindowsGraphics
-#define Data WindowsData
 #define Polygon WindowsPolygon
 
 /* End of file winport_on.h */
diff --git a/test/dwtools/Discriminant.praat b/test/dwtools/Discriminant.praat
new file mode 100644
index 0000000..c03d999
--- /dev/null
+++ b/test/dwtools/Discriminant.praat
@@ -0,0 +1,41 @@
+# Discriminant.praat
+# Paul Boersma 2016-01-01
+
+#
+# This test follows the Praat manual page on "Discriminant analysis"
+#
+writeInfoLine: "test discriminant analysis"
+
+table = Create TableOfReal (Pols 1973): "no"
+Formula: "if col <= 3 then log10 (self) else self fi"
+Standardize columns
+Set column label (index): 1, "standardized log (%F__1_)"
+Set column label (index): 2, "standardized log (%F__2_)"
+Set column label (index): 3, "standardized log (%F__3_)"
+;Set column label (index): 4, "standardized %L__1_"
+;Set column label (index): 5, "standardized %L__2_"
+;Set column label (index): 6, "standardized %L__3_"
+
+Erase all
+Select outer viewport: 0.0, 5.0, 0.0, 5.0
+Draw scatter plot: 1, 2, 0, 0, -2.9, 2.9, -2.9, 2.9, 10, "yes", "+", "yes"
+
+discriminant = To Discriminant
+test = Read from file: "Pols.text.Discriminant"
+if macintosh
+	assert objectsAreIdentical (test, discriminant)
+endif
+Remove
+test = Read from file: "Pols.binary.Discriminant"
+if macintosh
+	assert objectsAreIdentical (test, discriminant)
+endif
+
+plusObject: table
+configuration = To Configuration: 0
+Erase all
+Draw: 1, 2, -2.9, 2.9, -2.9, 2.9, 12, "yes", "+", "yes"
+
+removeObject: table, discriminant, test, configuration
+
+appendInfoLine: "OK"
diff --git a/test/dwtools/KlattSlope.praat b/test/dwtools/KlattSlope.praat
index f91f850..70d9433 100644
--- a/test/dwtools/KlattSlope.praat
+++ b/test/dwtools/KlattSlope.praat
@@ -33,6 +33,7 @@ endfor
 spectrum = To Spectrum... yes
 slope1 = Get band density difference... 0 1000 2000 4000
 echo 'slope1:6' dB
+removeObject: pitchTier, pulses, sound, spectrum
 
 klatt = Create KlattGrid... a 0 duration numberOfFormants 0 0 0 0 0 0
 Add voicing amplitude point... 0 90.0
@@ -55,4 +56,4 @@ To Sound
 To Spectrum... yes
 slope2 = Get band density difference... 0 1000 2000 4000
 printline 'slope2:6' dB
-
+removeObject: klatt, "Sound a", "Spectrum a"
diff --git a/test/dwtools/Pols.binary.Discriminant b/test/dwtools/Pols.binary.Discriminant
new file mode 100644
index 0000000..9fbbe97
Binary files /dev/null and b/test/dwtools/Pols.binary.Discriminant differ
diff --git a/test/dwtools/Pols.text.Discriminant b/test/dwtools/Pols.text.Discriminant
new file mode 100644
index 0000000..098f512
--- /dev/null
+++ b/test/dwtools/Pols.text.Discriminant
@@ -0,0 +1,389 @@
+File type = "ooTextFile"
+Object class = "Discriminant"
+
+numberOfEigenvalues = 3 
+dimension = 3 
+eigenvalues []: 
+    eigenvalues [1] = 21.13900155332588 
+    eigenvalues [2] = 4.355295817120757 
+    eigenvalues [3] = 0.6828853876561901 
+eigenvectors [] []: 
+    eigenvectors [1]:
+        eigenvectors [1] [1] = -0.5095945937147207 
+        eigenvectors [1] [2] = 0.8585858858717419 
+        eigenvectors [1] [3] = -0.056068053636316735 
+    eigenvectors [2]:
+        eigenvectors [2] [1] = 0.8327148188826573 
+        eigenvectors [2] [2] = 0.5085421803078853 
+        eigenvectors [2] [3] = 0.21902255879458013 
+    eigenvectors [3]:
+        eigenvectors [3] [1] = -0.21656264791037227 
+        eigenvectors [3] [2] = -0.06492401273441402 
+        eigenvectors [3] [3] = 0.9741075362096885 
+numberOfGroups = 12 
+groups? <exists> 
+size = 12 
+item []: 
+    item [1]:
+        class = "SSCP" 
+        name = "\as" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	7.1833085796074	3.0973300339498984	-1.778956400510678
+row [2]: "standardized log (%F__2_)"	3.0973300339498984	3.3039876126517393	-0.29125922448881625
+row [3]: "standardized log (%F__3_)"	-1.778956400510678	-0.29125922448881625	20.172428956740347
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 1.2736938484743832 
+            centroid [2] = -0.7980324268009621 
+            centroid [3] = 0.5220895358036678 
+    item [2]:
+        class = "SSCP" 
+        name = "\ct" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	4.74966673603357	1.7690171500295429	1.7501030793290941
+row [2]: "standardized log (%F__2_)"	1.7690171500295429	2.86437294506022	-1.1734401148458038
+row [3]: "standardized log (%F__3_)"	1.7501030793290941	-1.1734401148458038	23.404624379496475
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 0.4589868093363671 
+            centroid [2] = -1.3517394277634003 
+            centroid [3] = 0.7838758634621341 
+    item [3]:
+        class = "SSCP" 
+        name = "\ep" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	6.45619219629371	0.379683706446424	2.36347332352118
+row [2]: "standardized log (%F__2_)"	0.379683706446424	3.5702296082868155	7.3635748850159315
+row [3]: "standardized log (%F__3_)"	2.36347332352118	7.3635748850159315	36.64260597216438
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 0.796695878213569 
+            centroid [2] = 0.6155709107830938 
+            centroid [3] = -0.054943633520376844 
+    item [4]:
+        class = "SSCP" 
+        name = "\ic" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	9.244235715784095	-0.9820105168212977	-0.9152576701472442
+row [2]: "standardized log (%F__2_)"	-0.9820105168212977	3.2262490649322806	7.241190360568182
+row [3]: "standardized log (%F__3_)"	-0.9152576701472442	7.241190360568182	25.166342943866937
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -0.49244087467028463 
+            centroid [2] = 1.0434578136051678 
+            centroid [3] = 0.3408123049009498 
+    item [5]:
+        class = "SSCP" 
+        name = "\o/" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	5.190475238923345	0.7396990707845176	2.2127653907239027
+row [2]: "standardized log (%F__2_)"	0.7396990707845176	2.4512575586423897	3.7246820649617605
+row [3]: "standardized log (%F__3_)"	2.2127653907239027	3.7246820649617605	17.377966252491277
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -0.06611599614665901 
+            centroid [2] = 0.21489702324228913 
+            centroid [3] = -0.8937572629988408 
+    item [6]:
+        class = "SSCP" 
+        name = "\yc" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	6.078893644563736	0.22074613549497363	2.286551884697916
+row [2]: "standardized log (%F__2_)"	0.22074613549497363	3.853359342917027	8.425393204522171
+row [3]: "standardized log (%F__3_)"	2.286551884697916	8.425393204522171	29.326003094517013
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -0.10308759884807804 
+            centroid [2] = 0.20958314569196473 
+            centroid [3] = -0.518024953180044 
+    item [7]:
+        class = "SSCP" 
+        name = "a" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	7.005522628945998	2.090280751104148	1.5234216789426005
+row [2]: "standardized log (%F__2_)"	2.090280751104148	3.107213048517132	2.619238367558207
+row [3]: "standardized log (%F__3_)"	1.5234216789426005	2.619238367558207	28.064397805934117
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 1.766873453008115 
+            centroid [2] = -0.18850368599908385 
+            centroid [3] = 0.3137871302348877 
+    item [8]:
+        class = "SSCP" 
+        name = "e" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	8.484623546640918	0.1093890960686289	2.0246126475151707
+row [2]: "standardized log (%F__2_)"	0.1093890960686289	2.6621911497906914	6.007252897802115
+row [3]: "standardized log (%F__3_)"	2.0246126475151707	6.007252897802115	21.291223183115658
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -0.3393907223669106 
+            centroid [2] = 1.0651938747025158 
+            centroid [3] = 0.2780166917028312 
+    item [9]:
+        class = "SSCP" 
+        name = "i" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	8.081690218264786	0.6318778113546372	1.9790354205211995
+row [2]: "standardized log (%F__2_)"	0.6318778113546372	2.400453182312953	5.524087378886765
+row [3]: "standardized log (%F__3_)"	1.9790354205211995	5.524087378886765	24.658806925271662
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -1.3625596113923537 
+            centroid [2] = 1.324168217255274 
+            centroid [3] = 1.0457830819885658 
+    item [10]:
+        class = "SSCP" 
+        name = "o" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	3.5939776313049356	1.6702307126016387	-0.3792009934910652
+row [2]: "standardized log (%F__2_)"	1.6702307126016387	3.9012822191233245	0.9504479893814077
+row [3]: "standardized log (%F__3_)"	-0.3792009934910652	0.9504479893814077	37.9311618767852
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = 0.23540526426270175 
+            centroid [2] = -1.2107919088306225 
+            centroid [3] = -0.018039991648729478 
+    item [11]:
+        class = "SSCP" 
+        name = "u" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	8.90499995860324	1.0416292261007127	2.588462200258334
+row [2]: "standardized log (%F__2_)"	1.0416292261007127	4.495561429410957	-0.2921211626145905
+row [3]: "standardized log (%F__3_)"	2.588462200258334	-0.2921211626145905	37.14543437527775
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -0.913759763320551 
+            centroid [2] = -1.548526013942444 
+            centroid [3] = -0.6503310662476521 
+    item [12]:
+        class = "SSCP" 
+        name = "y" 
+        numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+        numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	9.905167008234274	0.6668046403405669	3.256505877716595
+row [2]: "standardized log (%F__2_)"	0.6668046403405669	3.178145328787027	8.007415551311649
+row [3]: "standardized log (%F__3_)"	3.256505877716595	8.007415551311649	43.4763710843399
+        numberOfObservations = 50 
+        centroid []: 
+            centroid [1] = -1.254300686550502 
+            centroid [2] = 0.6247224780561871 
+            centroid [3] = -1.1492677004961254 
+total? <exists> 
+numberOfColumns = 3 
+columnLabels []: 
+"standardized log (%F__1_)"	"standardized log (%F__2_)"	"standardized log (%F__3_)"	
+numberOfRows = 3 
+row [1]: "standardized log (%F__1_)"	599.0000000000015	-180.9945547854731	116.52712787173058
+row [2]: "standardized log (%F__2_)"	-180.9945547854731	598.9999999999997	71.98818443063027
+row [3]: "standardized log (%F__3_)"	116.52712787173058	71.98818443063027	598.999999999999
+numberOfObservations = 600 
+centroid []: 
+    centroid [1] = -1.6514937565640745e-14 
+    centroid [2] = -1.6405395560544397e-15 
+    centroid [3] = 1.0549080127949158e-13 
+aprioriProbabilities []: 
+    aprioriProbabilities [1] = 0.08333333333333333 
+    aprioriProbabilities [2] = 0.08333333333333333 
+    aprioriProbabilities [3] = 0.08333333333333333 
+    aprioriProbabilities [4] = 0.08333333333333333 
+    aprioriProbabilities [5] = 0.08333333333333333 
+    aprioriProbabilities [6] = 0.08333333333333333 
+    aprioriProbabilities [7] = 0.08333333333333333 
+    aprioriProbabilities [8] = 0.08333333333333333 
+    aprioriProbabilities [9] = 0.08333333333333333 
+    aprioriProbabilities [10] = 0.08333333333333333 
+    aprioriProbabilities [11] = 0.08333333333333333 
+    aprioriProbabilities [12] = 0.08333333333333333 
+costs [] []: 
+    costs [1]:
+        costs [1] [1] = 0 
+        costs [1] [2] = 1 
+        costs [1] [3] = 1 
+        costs [1] [4] = 1 
+        costs [1] [5] = 1 
+        costs [1] [6] = 1 
+        costs [1] [7] = 1 
+        costs [1] [8] = 1 
+        costs [1] [9] = 1 
+        costs [1] [10] = 1 
+        costs [1] [11] = 1 
+        costs [1] [12] = 1 
+    costs [2]:
+        costs [2] [1] = 1 
+        costs [2] [2] = 0 
+        costs [2] [3] = 1 
+        costs [2] [4] = 1 
+        costs [2] [5] = 1 
+        costs [2] [6] = 1 
+        costs [2] [7] = 1 
+        costs [2] [8] = 1 
+        costs [2] [9] = 1 
+        costs [2] [10] = 1 
+        costs [2] [11] = 1 
+        costs [2] [12] = 1 
+    costs [3]:
+        costs [3] [1] = 1 
+        costs [3] [2] = 1 
+        costs [3] [3] = 0 
+        costs [3] [4] = 1 
+        costs [3] [5] = 1 
+        costs [3] [6] = 1 
+        costs [3] [7] = 1 
+        costs [3] [8] = 1 
+        costs [3] [9] = 1 
+        costs [3] [10] = 1 
+        costs [3] [11] = 1 
+        costs [3] [12] = 1 
+    costs [4]:
+        costs [4] [1] = 1 
+        costs [4] [2] = 1 
+        costs [4] [3] = 1 
+        costs [4] [4] = 0 
+        costs [4] [5] = 1 
+        costs [4] [6] = 1 
+        costs [4] [7] = 1 
+        costs [4] [8] = 1 
+        costs [4] [9] = 1 
+        costs [4] [10] = 1 
+        costs [4] [11] = 1 
+        costs [4] [12] = 1 
+    costs [5]:
+        costs [5] [1] = 1 
+        costs [5] [2] = 1 
+        costs [5] [3] = 1 
+        costs [5] [4] = 1 
+        costs [5] [5] = 0 
+        costs [5] [6] = 1 
+        costs [5] [7] = 1 
+        costs [5] [8] = 1 
+        costs [5] [9] = 1 
+        costs [5] [10] = 1 
+        costs [5] [11] = 1 
+        costs [5] [12] = 1 
+    costs [6]:
+        costs [6] [1] = 1 
+        costs [6] [2] = 1 
+        costs [6] [3] = 1 
+        costs [6] [4] = 1 
+        costs [6] [5] = 1 
+        costs [6] [6] = 0 
+        costs [6] [7] = 1 
+        costs [6] [8] = 1 
+        costs [6] [9] = 1 
+        costs [6] [10] = 1 
+        costs [6] [11] = 1 
+        costs [6] [12] = 1 
+    costs [7]:
+        costs [7] [1] = 1 
+        costs [7] [2] = 1 
+        costs [7] [3] = 1 
+        costs [7] [4] = 1 
+        costs [7] [5] = 1 
+        costs [7] [6] = 1 
+        costs [7] [7] = 0 
+        costs [7] [8] = 1 
+        costs [7] [9] = 1 
+        costs [7] [10] = 1 
+        costs [7] [11] = 1 
+        costs [7] [12] = 1 
+    costs [8]:
+        costs [8] [1] = 1 
+        costs [8] [2] = 1 
+        costs [8] [3] = 1 
+        costs [8] [4] = 1 
+        costs [8] [5] = 1 
+        costs [8] [6] = 1 
+        costs [8] [7] = 1 
+        costs [8] [8] = 0 
+        costs [8] [9] = 1 
+        costs [8] [10] = 1 
+        costs [8] [11] = 1 
+        costs [8] [12] = 1 
+    costs [9]:
+        costs [9] [1] = 1 
+        costs [9] [2] = 1 
+        costs [9] [3] = 1 
+        costs [9] [4] = 1 
+        costs [9] [5] = 1 
+        costs [9] [6] = 1 
+        costs [9] [7] = 1 
+        costs [9] [8] = 1 
+        costs [9] [9] = 0 
+        costs [9] [10] = 1 
+        costs [9] [11] = 1 
+        costs [9] [12] = 1 
+    costs [10]:
+        costs [10] [1] = 1 
+        costs [10] [2] = 1 
+        costs [10] [3] = 1 
+        costs [10] [4] = 1 
+        costs [10] [5] = 1 
+        costs [10] [6] = 1 
+        costs [10] [7] = 1 
+        costs [10] [8] = 1 
+        costs [10] [9] = 1 
+        costs [10] [10] = 0 
+        costs [10] [11] = 1 
+        costs [10] [12] = 1 
+    costs [11]:
+        costs [11] [1] = 1 
+        costs [11] [2] = 1 
+        costs [11] [3] = 1 
+        costs [11] [4] = 1 
+        costs [11] [5] = 1 
+        costs [11] [6] = 1 
+        costs [11] [7] = 1 
+        costs [11] [8] = 1 
+        costs [11] [9] = 1 
+        costs [11] [10] = 1 
+        costs [11] [11] = 0 
+        costs [11] [12] = 1 
+    costs [12]:
+        costs [12] [1] = 1 
+        costs [12] [2] = 1 
+        costs [12] [3] = 1 
+        costs [12] [4] = 1 
+        costs [12] [5] = 1 
+        costs [12] [6] = 1 
+        costs [12] [7] = 1 
+        costs [12] [8] = 1 
+        costs [12] [9] = 1 
+        costs [12] [10] = 1 
+        costs [12] [11] = 1 
+        costs [12] [12] = 0 
diff --git a/test/fon Exp/Sounds/M1F1-float32-AFsp.wav b/test/fon Exp/Sounds/M1F1-float32-AFsp.wav
new file mode 100644
index 0000000..4f4efec
Binary files /dev/null and b/test/fon Exp/Sounds/M1F1-float32-AFsp.wav differ
diff --git a/test/fon Exp/Sounds/again.wav b/test/fon Exp/Sounds/again.wav
new file mode 100644
index 0000000..7134c81
Binary files /dev/null and b/test/fon Exp/Sounds/again.wav differ
diff --git a/test/fon Exp/Sounds/heed.wav b/test/fon Exp/Sounds/heed.wav
new file mode 100644
index 0000000..abc1313
Binary files /dev/null and b/test/fon Exp/Sounds/heed.wav differ
diff --git a/test/fon Exp/Sounds/hid.wav b/test/fon Exp/Sounds/hid.wav
new file mode 100644
index 0000000..86f95a7
Binary files /dev/null and b/test/fon Exp/Sounds/hid.wav differ
diff --git a/test/fon Exp/Sounds/hood.wav b/test/fon Exp/Sounds/hood.wav
new file mode 100644
index 0000000..36fd0af
Binary files /dev/null and b/test/fon Exp/Sounds/hood.wav differ
diff --git a/test/fon Exp/Sounds/hud.wav b/test/fon Exp/Sounds/hud.wav
new file mode 100644
index 0000000..92f67aa
Binary files /dev/null and b/test/fon Exp/Sounds/hud.wav differ
diff --git a/test/fon Exp/Sounds/weSayTheWord.wav b/test/fon Exp/Sounds/weSayTheWord.wav
new file mode 100644
index 0000000..3354bf6
Binary files /dev/null and b/test/fon Exp/Sounds/weSayTheWord.wav differ
diff --git a/test/fon Exp/continuousGoodness.ExperimentMFC b/test/fon Exp/continuousGoodness.ExperimentMFC
new file mode 100644
index 0000000..c3dc4c4
--- /dev/null
+++ b/test/fon Exp/continuousGoodness.ExperimentMFC	
@@ -0,0 +1,144 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "heed"  "a|rty|hgjg"
+    "hid"   "aaa"
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0.0 0.0 0.01 0.07 "click here (or press the space bar) to play again" " "
+okButton = 0.0 0.0 0.1 0.2 "OK" ""
+oopsButton = 0.0 0.0 0.1 0.2 "oops" ""
+
+responsesAreSounds? <no>
+responseFileNameHead = ""
+responseFileNameTail = ""
+responseCarrierBefore = ""
+responseCarrierAfter = ""
+responseInitialSilenceDuration = 0 seconds
+responseMedialSilenceDuration = 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "" "hud"
+
+numberOfGoodnessCategories = 100
+    0.250 0.252 0.20 0.30 ""
+    0.252 0.254 0.20 0.30 ""
+    0.254 0.256 0.20 0.30 ""
+    0.256 0.258 0.20 0.30 ""
+    0.258 0.260 0.20 0.30 ""
+    0.260 0.262 0.20 0.30 ""
+    0.262 0.264 0.20 0.30 ""
+    0.264 0.266 0.20 0.30 ""
+    0.266 0.268 0.20 0.30 ""
+    0.268 0.270 0.20 0.30 ""
+    0.270 0.272 0.20 0.30 ""
+    0.272 0.274 0.20 0.30 ""
+    0.274 0.276 0.20 0.30 ""
+    0.276 0.278 0.20 0.30 ""
+    0.278 0.280 0.20 0.30 ""
+    0.280 0.282 0.20 0.30 ""
+    0.282 0.284 0.20 0.30 ""
+    0.284 0.286 0.20 0.30 ""
+    0.286 0.288 0.20 0.30 ""
+    0.288 0.290 0.20 0.30 ""
+    0.290 0.292 0.20 0.30 ""
+    0.292 0.294 0.20 0.30 ""
+    0.294 0.296 0.20 0.30 ""
+    0.296 0.298 0.20 0.30 ""
+    0.298 0.300 0.20 0.30 ""
+    0.300 0.302 0.20 0.30 ""
+    0.302 0.304 0.20 0.30 ""
+    0.304 0.306 0.20 0.30 ""
+    0.306 0.308 0.20 0.30 ""
+    0.308 0.310 0.20 0.30 ""
+    0.310 0.312 0.20 0.30 ""
+    0.312 0.314 0.20 0.30 ""
+    0.314 0.316 0.20 0.30 ""
+    0.316 0.318 0.20 0.30 ""
+    0.318 0.320 0.20 0.30 ""
+    0.320 0.322 0.20 0.30 ""
+    0.322 0.324 0.20 0.30 ""
+    0.324 0.326 0.20 0.30 ""
+    0.326 0.328 0.20 0.30 ""
+    0.328 0.330 0.20 0.30 ""
+    0.330 0.332 0.20 0.30 ""
+    0.332 0.334 0.20 0.30 ""
+    0.334 0.336 0.20 0.30 ""
+    0.336 0.338 0.20 0.30 ""
+    0.338 0.340 0.20 0.30 ""
+    0.340 0.342 0.20 0.30 ""
+    0.342 0.344 0.20 0.30 ""
+    0.344 0.346 0.20 0.30 ""
+    0.346 0.348 0.20 0.30 ""
+    0.348 0.350 0.20 0.30 ""
+    0.350 0.352 0.20 0.30 ""
+    0.352 0.354 0.20 0.30 ""
+    0.354 0.356 0.20 0.30 ""
+    0.356 0.358 0.20 0.30 ""
+    0.358 0.360 0.20 0.30 ""
+    0.360 0.362 0.20 0.30 ""
+    0.362 0.364 0.20 0.30 ""
+    0.364 0.366 0.20 0.30 ""
+    0.366 0.368 0.20 0.30 ""
+    0.368 0.370 0.20 0.30 ""
+    0.370 0.372 0.20 0.30 ""
+    0.372 0.374 0.20 0.30 ""
+    0.374 0.376 0.20 0.30 ""
+    0.376 0.378 0.20 0.30 ""
+    0.378 0.380 0.20 0.30 ""
+    0.380 0.382 0.20 0.30 ""
+    0.382 0.384 0.20 0.30 ""
+    0.384 0.386 0.20 0.30 ""
+    0.386 0.388 0.20 0.30 ""
+    0.388 0.390 0.20 0.30 ""
+    0.390 0.392 0.20 0.30 ""
+    0.392 0.394 0.20 0.30 ""
+    0.394 0.396 0.20 0.30 ""
+    0.396 0.398 0.20 0.30 ""
+    0.398 0.400 0.20 0.30 ""
+    0.400 0.402 0.20 0.30 ""
+    0.402 0.404 0.20 0.30 ""
+    0.404 0.406 0.20 0.30 ""
+    0.406 0.408 0.20 0.30 ""
+    0.408 0.410 0.20 0.30 ""
+    0.410 0.412 0.20 0.30 ""
+    0.412 0.414 0.20 0.30 ""
+    0.414 0.416 0.20 0.30 ""
+    0.416 0.418 0.20 0.30 ""
+    0.418 0.420 0.20 0.30 ""
+    0.420 0.422 0.20 0.30 ""
+    0.422 0.424 0.20 0.30 ""
+    0.424 0.426 0.20 0.30 ""
+    0.426 0.428 0.20 0.30 ""
+    0.428 0.430 0.20 0.30 ""
+    0.430 0.432 0.20 0.30 ""
+    0.432 0.434 0.20 0.30 ""
+    0.434 0.436 0.20 0.30 ""
+    0.436 0.438 0.20 0.30 ""
+    0.438 0.440 0.20 0.30 ""
+    0.440 0.442 0.20 0.30 ""
+    0.442 0.444 0.20 0.30 ""
+    0.444 0.446 0.20 0.30 ""
+    0.446 0.448 0.20 0.30 ""
+    0.448 0.450 0.20 0.30 ""
diff --git a/test/fon Exp/csl.ExperimentMFC b/test/fon Exp/csl.ExperimentMFC
new file mode 100644
index 0000000..af47103
--- /dev/null
+++ b/test/fon Exp/csl.ExperimentMFC	
@@ -0,0 +1,35 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ""
+stimulusCarrierBefore = ""
+stimulusCarrierAfter = ""
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 3
+    "S4CAP.NSP"   ""
+    "S4COP.NSP"   ""
+    "S4CUP.NSP"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 3
+    0.25 0.35 0.8 0.9 "a" "" "a"
+    0.35 0.45 0.6 0.7 "o" "" "o"
+    0.45 0.55 0.4 0.5 "u" "" "u"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/experimentMFC.praat b/test/fon Exp/experimentMFC.praat
new file mode 100644
index 0000000..12ccee6
--- /dev/null
+++ b/test/fon Exp/experimentMFC.praat	
@@ -0,0 +1,15 @@
+writeInfoLine: "ExperimentMFC"
+
+Read from file: "simplest.ExperimentMFC"
+Run
+Remove
+
+ex = Read from file: "simplest.ExperimentMFC"
+Run
+editor: "simplest"
+	Close
+endeditor
+
+removeObject: ex
+
+appendInfoLine: "OK"
diff --git a/test/fon Exp/hoofdletters.ExperimentMFC b/test/fon Exp/hoofdletters.ExperimentMFC
new file mode 100644
index 0000000..c8edd97
--- /dev/null
+++ b/test/fon Exp/hoofdletters.ExperimentMFC	
@@ -0,0 +1,43 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "Heed"  ""
+    "Hid"   ""
+    "Hood"  ""
+    "Hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, you choose the vowel that is most similar.
+
+Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like.
+
+Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "u" "hud"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/pictures.ExperimentMFC b/test/fon Exp/pictures.ExperimentMFC
new file mode 100644
index 0000000..be1458e
--- /dev/null
+++ b/test/fon Exp/pictures.ExperimentMFC	
@@ -0,0 +1,40 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "heed"  ""
+    "hid"   ""
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, you choose the speaker that is most similar.
+
+Click to start."
+runText = "Choose the speaker that you heard."
+pauseText = "You can have a short break if you like.
+
+Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 2
+    0.35 0.45 0.48 0.7 "\FIpictures/paul.jpg" "p" "Paul"
+    0.55 0.65 0.48 0.7 "\FIpictures/silke.jpg" "s" "Silke"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/pictures/paul.jpg b/test/fon Exp/pictures/paul.jpg
new file mode 100755
index 0000000..e8cc55f
Binary files /dev/null and b/test/fon Exp/pictures/paul.jpg differ
diff --git a/test/fon Exp/pictures/silke.jpg b/test/fon Exp/pictures/silke.jpg
new file mode 100755
index 0000000..067294f
Binary files /dev/null and b/test/fon Exp/pictures/silke.jpg differ
diff --git a/test/fon Exp/simplest.ExperimentMFC b/test/fon Exp/simplest.ExperimentMFC
new file mode 100644
index 0000000..5a2371f
--- /dev/null
+++ b/test/fon Exp/simplest.ExperimentMFC	
@@ -0,0 +1,45 @@
+"ooTextFile"
+"ExperimentMFC 6"
+
+blankWhilePlaying? <no>
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+stimulusFinalSilenceDuration = 0.5 seconds
+numberOfDifferentStimuli = 4
+    "heed"  ""
+    "hid"   ""
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, you choose the vowel that is most similar.
+
+Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like.
+
+Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" 40 "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" 40 "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" 40 "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" 40 "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" 40 "u" "hud"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/simplest_broken.ExperimentMFC b/test/fon Exp/simplest_broken.ExperimentMFC
new file mode 100644
index 0000000..9e9ca42
--- /dev/null
+++ b/test/fon Exp/simplest_broken.ExperimentMFC	
@@ -0,0 +1,45 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+! This file is broken, in order to check the error message.
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+!stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "heedXXX"  ""
+    "hid"   ""
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, you choose the vowel that is most similar.
+
+Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like.
+
+Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "u" "hud"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/simplest_missing.ExperimentMFC b/test/fon Exp/simplest_missing.ExperimentMFC
new file mode 100644
index 0000000..2127602
--- /dev/null
+++ b/test/fon Exp/simplest_missing.ExperimentMFC	
@@ -0,0 +1,45 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+! This file refers to a missing sound, in order to check the error message.
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "heedXXX"  ""
+    "hid"   ""
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, you choose the vowel that is most similar.
+
+Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like.
+
+Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "u" "hud"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/stereo.ExperimentMFC b/test/fon Exp/stereo.ExperimentMFC
new file mode 100644
index 0000000..4a18890
--- /dev/null
+++ b/test/fon Exp/stereo.ExperimentMFC	
@@ -0,0 +1,38 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = ""
+stimulusCarrierAfter = ""
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "M1F1-float32-AFspTTT"  ""
+    "M1F1-float32-AFsp"   ""
+    "M1F1-float32-AFsp"  ""
+    "M1F1-float32-AFsp"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0 0 0 0 "" ""
+okButton = 0 0 0 0 "" ""
+oopsButton = 0 0 0 0 "" ""
+
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "" "hud"
+
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/test.ExperimentMFC b/test/fon Exp/test.ExperimentMFC
new file mode 100644
index 0000000..880de1c
--- /dev/null
+++ b/test/fon Exp/test.ExperimentMFC	
@@ -0,0 +1,33 @@
+"ooTextFile"
+"ExperimentMFC 4"
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = ""
+stimulusCarrierAfter = ""
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 3
+"heed" ""
+"hid" ""
+"hood" ""
+numberOfReplicationsPerStimulus = 1
+breakAfterEvery = 0
+randomize = <PermuteBalancedNoDoublets>
+startText = "This is a listening experiment.
+After hearing a sound, choose the vowel that is most similar to what you heard.
+
+Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment has finished."
+maximumNumberOfReplays = 0
+replayButton = 0 0 0 0 "" ""
+!okButton = 0 0 0 0 "" ""
+okButton = 0.80 0.90 0.05 0.15 "OK" ""
+oopsButton = 0 0 0 0 "" ""
+responsesAreSounds? <no> "" "" "" "" 0 0
+numberOfDifferentResponses = 2
+	0.40 0.60 0.70 0.50 "1" "1" "1"    
+	0.40 0.60 0.40 0.20 "2" "2" "2"
+numberOfGoodnessCategories = 0
diff --git a/test/fon Exp/version3.ExperimentMFC b/test/fon Exp/version3.ExperimentMFC
new file mode 100644
index 0000000..4813255
--- /dev/null
+++ b/test/fon Exp/version3.ExperimentMFC	
@@ -0,0 +1,32 @@
+"ooTextFile"
+"ExperimentMFC 3"
+fileNameHead = "Sounds/"
+fileNameTail = ".wav"
+carrierBefore = "weSayTheWord"
+carrierAfter = "again"
+initialSilenceDuration = 0.5 seconds
+interStimulusInterval = 0
+numberOfDifferentStimuli = 4
+    "heed"
+    "hid"
+    "hood"
+    "hud"
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 0
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment has finished."
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "" "i"
+    0.35 0.45 0.6 0.7 "h E d" "" "e"
+    0.45 0.55 0.4 0.5 "h A d" "" "a"
+    0.55 0.65 0.6 0.7 "h O d" "" "o"
+    0.65 0.75 0.8 0.9 "h U d" "" "u"
+numberOfGoodnessCategories = 5
+    0.25 0.35 0.20 0.30 "1 (poor)"
+    0.35 0.45 0.20 0.30 "2"
+    0.45 0.55 0.20 0.30 "3"
+    0.55 0.65 0.20 0.30 "4"
+    0.65 0.75 0.20 0.30 "5 (good)"
diff --git a/test/fon Exp/version4.ExperimentMFC b/test/fon Exp/version4.ExperimentMFC
new file mode 100644
index 0000000..dbed7fd
--- /dev/null
+++ b/test/fon Exp/version4.ExperimentMFC	
@@ -0,0 +1,50 @@
+"ooTextFile"
+"ExperimentMFC 4"
+
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+numberOfDifferentStimuli = 4
+    "heed"  "a|rty|hgjg"
+    "hid"   "aaa
+    bbb"
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0.2 0.8 0.01 0.07 "click here (or press the space bar) to play again" " "
+okButton = 0.7 0.9 0.1 0.2 "OK" ""
+oopsButton = 0.1 0.3 0.1 0.2 "oops" "b"
+
+responsesAreSounds? <yes>
+responseFileNameHead = "Sounds/"
+responseFileNameTail = ".wav"
+responseCarrierBefore = ""
+responseCarrierAfter = ""
+responseInitialSilenceDuration = 0.1 seconds
+responseMedialSilenceDuration = 0
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "u" "hud"
+
+numberOfGoodnessCategories = 5
+    0.25 0.35 0.20 0.30 "1 (poor)"
+    0.35 0.45 0.20 0.30 "2"
+    0.45 0.55 0.20 0.30 "3"
+    0.55 0.65 0.20 0.30 "4"
+    0.65 0.75 0.20 0.30 "5 (good)"
diff --git a/test/fon Exp/version6.ExperimentMFC b/test/fon Exp/version6.ExperimentMFC
new file mode 100644
index 0000000..e1af842
--- /dev/null
+++ b/test/fon Exp/version6.ExperimentMFC	
@@ -0,0 +1,53 @@
+"ooTextFile"
+"ExperimentMFC 6"
+
+blankWhilePlaying? <yes>
+stimuliAreSounds? <yes>
+stimulusFileNameHead = "Sounds/"
+stimulusFileNameTail = ".wav"
+stimulusCarrierBefore = "weSayTheWord"
+stimulusCarrierAfter = "again"
+stimulusInitialSilenceDuration = 0.5 seconds
+stimulusMedialSilenceDuration = 0
+stimulusFinalSilenceDuration = 0.5
+numberOfDifferentStimuli = 4
+    "heed"  "a|rty|hgjg"
+    "hid"   "aaa
+    bbb"
+    "hood"  ""
+    "hud"   ""
+
+numberOfReplicationsPerStimulus = 3
+breakAfterEvery = 4
+randomize = <PermuteBalancedNoDoublets>
+startText = "Click to start."
+runText = "Choose the vowel that you heard."
+pauseText = "You can have a short break if you like. Click to proceed."
+endText = "The experiment
+has finished."
+maximumNumberOfReplays = 1
+replayButton = 0.2 0.8 0.01 0.07 "click here (or press the space bar) to play again" " "
+okButton = 0.7 0.9 0.1 0.2 "OK" ""
+oopsButton = 0.1 0.3 0.1 0.2 "oops" ""
+
+responsesAreSounds? <yes>
+responseFileNameHead = "Sounds/"
+responseFileNameTail = ".wav"
+responseCarrierBefore = ""
+responseCarrierAfter = ""
+responseInitialSilenceDuration = 0.1 seconds
+responseMedialSilenceDuration = 0
+responseFinalSilenceDuration = 0.5
+numberOfDifferentResponses = 5
+    0.25 0.35 0.8 0.9 "h I d" "i" "hid"
+    0.35 0.45 0.6 0.7 "h E d" "e" "hid"
+    0.45 0.55 0.4 0.5 "h A d" "a" "hud"
+    0.55 0.65 0.6 0.7 "h O d" "o" "hood"
+    0.65 0.75 0.8 0.9 "h U d" "u" "hud"
+
+numberOfGoodnessCategories = 5
+    0.25 0.35 0.20 0.30 "1 (poor)"
+    0.35 0.45 0.20 0.30 "2"
+    0.45 0.55 0.20 0.30 "3"
+    0.55 0.65 0.20 0.30 "4"
+    0.65 0.75 0.20 0.30 "5 (good)"
diff --git a/test/fon/PitchTier.praat b/test/fon/PitchTier.praat
new file mode 100644
index 0000000..3843e1e
--- /dev/null
+++ b/test/fon/PitchTier.praat
@@ -0,0 +1,40 @@
+# PitchTier.praat
+# Paul Boersma 2015-12-21
+
+writeInfoLine: "PitchTier test"
+
+tier = Create PitchTier: "tier", -1.0, 1.8
+Add point: 0.5, 150.0
+Add point: 0.6, 178.0
+Add point: 0.6, 180.0   ; shouldn't do anything
+Add point: 0.3, 200.0   ; should be inserted as the first point
+
+#
+# Check time domain.
+#
+tmin = Get starting time
+assert tmin = -1.0
+tmax = Get end time
+assert tmax = 1.8
+duration = Get duration
+assert duration = 2.8
+
+n = Get number of points
+assert n = 3
+
+#
+# Check values and sorting.
+#
+for i to n
+	time [i] = Get time from index: i
+	pitch [i] = Get value at index: i
+endfor
+assert time [1] = 0.3
+assert time [2] = 0.5
+assert time [3] = 0.6
+assert pitch [1] = 200.0
+assert pitch [2] = 150.0
+assert pitch [3] = 178.0
+
+removeObject: tier
+appendInfoLine: "OK"
diff --git a/test/fon/Spectrum_draw.praat b/test/fon/Spectrum_draw.praat
new file mode 100644
index 0000000..33f8224
--- /dev/null
+++ b/test/fon/Spectrum_draw.praat
@@ -0,0 +1,12 @@
+# test/fon/Spectrum_draw.praat
+# Paul Boersma 2016-01-15
+
+# There used to be a bug that caused Praat to crash with an assert message
+# if you drew a Spectrum that contained undefined values.
+
+sound = Create Sound as pure tone: "tone", 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01
+spec = To Spectrum: "yes"
+Formula: "self/0"
+Draw: 0, 0, 0, 0, "yes"
+
+removeObject: sound, spec
diff --git a/test/fon/TextGrid_Sound_extractIntervals.praat b/test/fon/TextGrid_Sound_extractIntervals.praat
new file mode 100644
index 0000000..4505f03
--- /dev/null
+++ b/test/fon/TextGrid_Sound_extractIntervals.praat
@@ -0,0 +1,11 @@
+sound = Create Sound from formula: "sineWithNoise", 1, 0, 1, 44100, "1/2 * sin(2*pi*377*x) + randomGauss(0,0.1)"
+textgrid = To TextGrid: "Mary John bell", "bell"
+Insert boundary: 1, 0.5
+Insert boundary: 1, 0.7
+Set interval text: 1, 1, "a"
+Set interval text: 1, 2, "b"
+Set interval text: 1, 3, "c"
+selectObject: sound, textgrid
+Extract all intervals: 1, "no"
+
+removeObject: sound, textgrid, "Sound a", "Sound b", "Sound c"
\ No newline at end of file
diff --git a/test/fon/data.praat b/test/fon/data.praat
index a475bc9..e376fd7 100644
Binary files a/test/fon/data.praat and b/test/fon/data.praat differ
diff --git a/test/fon/endian.praat b/test/fon/endian.praat
index c1c43c8..21f7e8e 100644
--- a/test/fon/endian.praat
+++ b/test/fon/endian.praat
@@ -68,6 +68,7 @@ procedure do
 		t4 = stopwatch
 		printline 't1:2' 't2:2' 't3:2' 't4:2'
 	endfor
+	Remove
 
 	Create Sound... test 0 1 22050 exp(-x*1000)
 	Write to binary file... kanweg.Sound
diff --git a/test/fon/examples/OTGrammar/Infant.OTGrammar b/test/fon/examples/OTGrammar/Infant.OTGrammar
new file mode 100644
index 0000000..3e31cb9
--- /dev/null
+++ b/test/fon/examples/OTGrammar/Infant.OTGrammar
@@ -0,0 +1,198 @@
+File type = "ooTextFile"
+Object class = "OTGrammar 2"
+
+<ExponentialHG>
+0 ! leak
+5 constraints
+constraint [1]: "*[rtr / hi]" 100 100 1 ! *[rtr / hi]
+constraint [2]: "*[atr / lo]" 100 100 1 ! *[atr / lo]
+constraint [3]: "P\s{ARSE}
+(rtr)" 50 50 1 ! PARSE (rtr)
+constraint [4]: "P\s{ARSE}
+(atr)" 50 50 1 ! PARSE (atr)
+constraint [5]: "*G\s{ESTURE}
+(contour)" 100 100 1 ! *GESTURE (contour)
+
+0 fixed rankings
+
+36 tableaus
+input [1]: "iti" 4
+   candidate [1]: "iti" 0 0 0 0 0
+   candidate [2]: "\icti" 1 0 0 1 1
+   candidate [3]: "it\ic" 1 0 0 1 1
+   candidate [4]: "\ict\ic" 2 0 0 2 0
+input [2]: "ite" 4
+   candidate [1]: "ite" 0 0 0 0 0
+   candidate [2]: "\icte" 1 0 0 1 1
+   candidate [3]: "it\ep" 0 0 0 1 1
+   candidate [4]: "\ict\ep" 1 0 0 2 0
+input [3]: "it\sw" 4
+   candidate [1]: "it\sw" 0 1 0 0 0
+   candidate [2]: "\ict\sw" 1 1 0 1 1
+   candidate [3]: "ita" 0 0 0 1 1
+   candidate [4]: "\icta" 1 0 0 2 0
+input [4]: "it\ic" 4
+   candidate [1]: "it\ic" 1 0 0 0 1
+   candidate [2]: "\ict\ic" 2 0 0 1 0
+   candidate [3]: "iti" 0 0 1 0 0
+   candidate [4]: "\icti" 1 0 1 1 1
+input [5]: "it\ep" 4
+   candidate [1]: "it\ep" 0 0 0 0 1
+   candidate [2]: "\ict\ep" 1 0 0 1 0
+   candidate [3]: "ite" 0 0 1 0 0
+   candidate [4]: "\icte" 1 0 1 1 1
+input [6]: "ita" 4
+   candidate [1]: "ita" 0 0 0 0 1
+   candidate [2]: "\icta" 1 0 0 1 0
+   candidate [3]: "it\sw" 0 1 1 0 0
+   candidate [4]: "\ict\sw" 1 1 1 1 1
+input [7]: "eti" 4
+   candidate [1]: "eti" 0 0 0 0 0
+   candidate [2]: "\epti" 0 0 0 1 1
+   candidate [3]: "et\ic" 1 0 0 1 1
+   candidate [4]: "\ept\ic" 1 0 0 2 0
+input [8]: "ete" 4
+   candidate [1]: "ete" 0 0 0 0 0
+   candidate [2]: "\epte" 0 0 0 1 1
+   candidate [3]: "et\ep" 0 0 0 1 1
+   candidate [4]: "\ept\ep" 0 0 0 2 0
+input [9]: "et\sw" 4
+   candidate [1]: "et\sw" 0 1 0 0 0
+   candidate [2]: "\ept\sw" 0 1 0 1 1
+   candidate [3]: "eta" 0 0 0 1 1
+   candidate [4]: "\epta" 0 0 0 2 0
+input [10]: "et\ic" 4
+   candidate [1]: "et\ic" 1 0 0 0 1
+   candidate [2]: "\ept\ic" 1 0 0 1 0
+   candidate [3]: "eti" 0 0 1 0 0
+   candidate [4]: "\epti" 0 0 1 1 1
+input [11]: "et\ep" 4
+   candidate [1]: "et\ep" 0 0 0 0 1
+   candidate [2]: "\ept\ep" 0 0 0 1 0
+   candidate [3]: "ete" 0 0 1 0 0
+   candidate [4]: "\epte" 0 0 1 1 1
+input [12]: "eta" 4
+   candidate [1]: "eta" 0 0 0 0 1
+   candidate [2]: "\epta" 0 0 0 1 0
+   candidate [3]: "et\sw" 0 1 1 0 0
+   candidate [4]: "\ept\sw" 0 1 1 1 1
+input [13]: "\swti" 4
+   candidate [1]: "\swti" 0 1 0 0 0
+   candidate [2]: "ati" 0 0 0 1 1
+   candidate [3]: "\swt\ic" 1 1 0 1 1
+   candidate [4]: "at\ic" 1 0 0 2 0
+input [14]: "\swte" 4
+   candidate [1]: "\swte" 0 1 0 0 0
+   candidate [2]: "ate" 0 0 0 1 1
+   candidate [3]: "\swt\ep" 0 1 0 1 1
+   candidate [4]: "at\ep" 0 0 0 2 0
+input [15]: "\swt\sw" 4
+   candidate [1]: "\swt\sw" 0 2 0 0 0
+   candidate [2]: "at\sw" 0 1 0 1 1
+   candidate [3]: "\swta" 0 1 0 1 1
+   candidate [4]: "ata" 0 0 0 2 0
+input [16]: "\swt\ic" 4
+   candidate [1]: "\swt\ic" 1 1 0 0 1
+   candidate [2]: "at\ic" 1 0 0 1 0
+   candidate [3]: "\swti" 0 1 1 0 0
+   candidate [4]: "ati" 0 0 1 1 1
+input [17]: "\swt\ep" 4
+   candidate [1]: "\swt\ep" 0 1 0 0 1
+   candidate [2]: "at\ep" 0 0 0 1 0
+   candidate [3]: "\swte" 0 1 1 0 0
+   candidate [4]: "ate" 0 0 1 1 1
+input [18]: "\swta" 4
+   candidate [1]: "\swta" 0 1 0 0 1
+   candidate [2]: "ata" 0 0 0 1 0
+   candidate [3]: "\swt\sw" 0 2 1 0 0
+   candidate [4]: "at\sw" 0 1 1 1 1
+input [19]: "\icti" 4
+   candidate [1]: "\icti" 1 0 0 0 1
+   candidate [2]: "iti" 0 0 1 0 0
+   candidate [3]: "\ict\ic" 2 0 0 1 0
+   candidate [4]: "it\ic" 1 0 1 1 1
+input [20]: "\icte" 4
+   candidate [1]: "\icte" 1 0 0 0 1
+   candidate [2]: "ite" 0 0 1 0 0
+   candidate [3]: "\ict\ep" 1 0 0 1 0
+   candidate [4]: "it\ep" 0 0 1 1 1
+input [21]: "\ict\sw" 4
+   candidate [1]: "\ict\sw" 1 1 0 0 1
+   candidate [2]: "it\sw" 0 1 1 0 0
+   candidate [3]: "\icta" 1 0 0 1 0
+   candidate [4]: "ita" 0 0 1 1 1
+input [22]: "\ict\ic" 4
+   candidate [1]: "\ict\ic" 2 0 0 0 0
+   candidate [2]: "it\ic" 1 0 1 0 1
+   candidate [3]: "\icti" 1 0 1 0 1
+   candidate [4]: "iti" 0 0 2 0 0
+input [23]: "\ict\ep" 4
+   candidate [1]: "\ict\ep" 1 0 0 0 0
+   candidate [2]: "it\ep" 0 0 1 0 1
+   candidate [3]: "\icte" 1 0 1 0 1
+   candidate [4]: "ite" 0 0 2 0 0
+input [24]: "\icta" 4
+   candidate [1]: "\icta" 1 0 0 0 0
+   candidate [2]: "ita" 0 0 1 0 1
+   candidate [3]: "\ict\sw" 1 1 1 0 1
+   candidate [4]: "it\sw" 0 1 2 0 0
+input [25]: "\epti" 4
+   candidate [1]: "\epti" 0 0 0 0 1
+   candidate [2]: "eti" 0 0 1 0 0
+   candidate [3]: "\ept\ic" 1 0 0 1 0
+   candidate [4]: "et\ic" 1 0 1 1 1
+input [26]: "\epte" 4
+   candidate [1]: "\epte" 0 0 0 0 1
+   candidate [2]: "ete" 0 0 1 0 0
+   candidate [3]: "\ept\ep" 0 0 0 1 0
+   candidate [4]: "et\ep" 0 0 1 1 1
+input [27]: "\ept\sw" 4
+   candidate [1]: "\ept\sw" 0 1 0 0 1
+   candidate [2]: "et\sw" 0 1 1 0 0
+   candidate [3]: "\epta" 0 0 0 1 0
+   candidate [4]: "eta" 0 0 1 1 1
+input [28]: "\ept\ic" 4
+   candidate [1]: "\ept\ic" 1 0 0 0 0
+   candidate [2]: "et\ic" 1 0 1 0 1
+   candidate [3]: "\epti" 0 0 1 0 1
+   candidate [4]: "eti" 0 0 2 0 0
+input [29]: "\ept\ep" 4
+   candidate [1]: "\ept\ep" 0 0 0 0 0
+   candidate [2]: "et\ep" 0 0 1 0 1
+   candidate [3]: "\epte" 0 0 1 0 1
+   candidate [4]: "ete" 0 0 2 0 0
+input [30]: "\epta" 4
+   candidate [1]: "\epta" 0 0 0 0 0
+   candidate [2]: "eta" 0 0 1 0 1
+   candidate [3]: "\ept\sw" 0 1 1 0 1
+   candidate [4]: "et\sw" 0 1 2 0 0
+input [31]: "ati" 4
+   candidate [1]: "ati" 0 0 0 0 1
+   candidate [2]: "\swti" 0 1 1 0 0
+   candidate [3]: "at\ic" 1 0 0 1 0
+   candidate [4]: "\swt\ic" 1 1 1 1 1
+input [32]: "ate" 4
+   candidate [1]: "ate" 0 0 0 0 1
+   candidate [2]: "\swte" 0 1 1 0 0
+   candidate [3]: "at\ep" 0 0 0 1 0
+   candidate [4]: "\swt\ep" 0 1 1 1 1
+input [33]: "at\sw" 4
+   candidate [1]: "at\sw" 0 1 0 0 1
+   candidate [2]: "\swt\sw" 0 2 1 0 0
+   candidate [3]: "ata" 0 0 0 1 0
+   candidate [4]: "\swta" 0 1 1 1 1
+input [34]: "at\ic" 4
+   candidate [1]: "at\ic" 1 0 0 0 0
+   candidate [2]: "\swt\ic" 1 1 1 0 1
+   candidate [3]: "ati" 0 0 1 0 1
+   candidate [4]: "\swti" 0 1 2 0 0
+input [35]: "at\ep" 4
+   candidate [1]: "at\ep" 0 0 0 0 0
+   candidate [2]: "\swt\ep" 0 1 1 0 1
+   candidate [3]: "ate" 0 0 1 0 1
+   candidate [4]: "\swte" 0 1 2 0 0
+input [36]: "ata" 4
+   candidate [1]: "ata" 0 0 0 0 0
+   candidate [2]: "\swta" 0 1 1 0 1
+   candidate [3]: "at\sw" 0 1 1 0 1
+   candidate [4]: "\swt\sw" 0 2 2 0 0
diff --git a/test/fon/examples/OTGrammar/Infant2.OTGrammar b/test/fon/examples/OTGrammar/Infant2.OTGrammar
new file mode 100644
index 0000000..3e31cb9
--- /dev/null
+++ b/test/fon/examples/OTGrammar/Infant2.OTGrammar
@@ -0,0 +1,198 @@
+File type = "ooTextFile"
+Object class = "OTGrammar 2"
+
+<ExponentialHG>
+0 ! leak
+5 constraints
+constraint [1]: "*[rtr / hi]" 100 100 1 ! *[rtr / hi]
+constraint [2]: "*[atr / lo]" 100 100 1 ! *[atr / lo]
+constraint [3]: "P\s{ARSE}
+(rtr)" 50 50 1 ! PARSE (rtr)
+constraint [4]: "P\s{ARSE}
+(atr)" 50 50 1 ! PARSE (atr)
+constraint [5]: "*G\s{ESTURE}
+(contour)" 100 100 1 ! *GESTURE (contour)
+
+0 fixed rankings
+
+36 tableaus
+input [1]: "iti" 4
+   candidate [1]: "iti" 0 0 0 0 0
+   candidate [2]: "\icti" 1 0 0 1 1
+   candidate [3]: "it\ic" 1 0 0 1 1
+   candidate [4]: "\ict\ic" 2 0 0 2 0
+input [2]: "ite" 4
+   candidate [1]: "ite" 0 0 0 0 0
+   candidate [2]: "\icte" 1 0 0 1 1
+   candidate [3]: "it\ep" 0 0 0 1 1
+   candidate [4]: "\ict\ep" 1 0 0 2 0
+input [3]: "it\sw" 4
+   candidate [1]: "it\sw" 0 1 0 0 0
+   candidate [2]: "\ict\sw" 1 1 0 1 1
+   candidate [3]: "ita" 0 0 0 1 1
+   candidate [4]: "\icta" 1 0 0 2 0
+input [4]: "it\ic" 4
+   candidate [1]: "it\ic" 1 0 0 0 1
+   candidate [2]: "\ict\ic" 2 0 0 1 0
+   candidate [3]: "iti" 0 0 1 0 0
+   candidate [4]: "\icti" 1 0 1 1 1
+input [5]: "it\ep" 4
+   candidate [1]: "it\ep" 0 0 0 0 1
+   candidate [2]: "\ict\ep" 1 0 0 1 0
+   candidate [3]: "ite" 0 0 1 0 0
+   candidate [4]: "\icte" 1 0 1 1 1
+input [6]: "ita" 4
+   candidate [1]: "ita" 0 0 0 0 1
+   candidate [2]: "\icta" 1 0 0 1 0
+   candidate [3]: "it\sw" 0 1 1 0 0
+   candidate [4]: "\ict\sw" 1 1 1 1 1
+input [7]: "eti" 4
+   candidate [1]: "eti" 0 0 0 0 0
+   candidate [2]: "\epti" 0 0 0 1 1
+   candidate [3]: "et\ic" 1 0 0 1 1
+   candidate [4]: "\ept\ic" 1 0 0 2 0
+input [8]: "ete" 4
+   candidate [1]: "ete" 0 0 0 0 0
+   candidate [2]: "\epte" 0 0 0 1 1
+   candidate [3]: "et\ep" 0 0 0 1 1
+   candidate [4]: "\ept\ep" 0 0 0 2 0
+input [9]: "et\sw" 4
+   candidate [1]: "et\sw" 0 1 0 0 0
+   candidate [2]: "\ept\sw" 0 1 0 1 1
+   candidate [3]: "eta" 0 0 0 1 1
+   candidate [4]: "\epta" 0 0 0 2 0
+input [10]: "et\ic" 4
+   candidate [1]: "et\ic" 1 0 0 0 1
+   candidate [2]: "\ept\ic" 1 0 0 1 0
+   candidate [3]: "eti" 0 0 1 0 0
+   candidate [4]: "\epti" 0 0 1 1 1
+input [11]: "et\ep" 4
+   candidate [1]: "et\ep" 0 0 0 0 1
+   candidate [2]: "\ept\ep" 0 0 0 1 0
+   candidate [3]: "ete" 0 0 1 0 0
+   candidate [4]: "\epte" 0 0 1 1 1
+input [12]: "eta" 4
+   candidate [1]: "eta" 0 0 0 0 1
+   candidate [2]: "\epta" 0 0 0 1 0
+   candidate [3]: "et\sw" 0 1 1 0 0
+   candidate [4]: "\ept\sw" 0 1 1 1 1
+input [13]: "\swti" 4
+   candidate [1]: "\swti" 0 1 0 0 0
+   candidate [2]: "ati" 0 0 0 1 1
+   candidate [3]: "\swt\ic" 1 1 0 1 1
+   candidate [4]: "at\ic" 1 0 0 2 0
+input [14]: "\swte" 4
+   candidate [1]: "\swte" 0 1 0 0 0
+   candidate [2]: "ate" 0 0 0 1 1
+   candidate [3]: "\swt\ep" 0 1 0 1 1
+   candidate [4]: "at\ep" 0 0 0 2 0
+input [15]: "\swt\sw" 4
+   candidate [1]: "\swt\sw" 0 2 0 0 0
+   candidate [2]: "at\sw" 0 1 0 1 1
+   candidate [3]: "\swta" 0 1 0 1 1
+   candidate [4]: "ata" 0 0 0 2 0
+input [16]: "\swt\ic" 4
+   candidate [1]: "\swt\ic" 1 1 0 0 1
+   candidate [2]: "at\ic" 1 0 0 1 0
+   candidate [3]: "\swti" 0 1 1 0 0
+   candidate [4]: "ati" 0 0 1 1 1
+input [17]: "\swt\ep" 4
+   candidate [1]: "\swt\ep" 0 1 0 0 1
+   candidate [2]: "at\ep" 0 0 0 1 0
+   candidate [3]: "\swte" 0 1 1 0 0
+   candidate [4]: "ate" 0 0 1 1 1
+input [18]: "\swta" 4
+   candidate [1]: "\swta" 0 1 0 0 1
+   candidate [2]: "ata" 0 0 0 1 0
+   candidate [3]: "\swt\sw" 0 2 1 0 0
+   candidate [4]: "at\sw" 0 1 1 1 1
+input [19]: "\icti" 4
+   candidate [1]: "\icti" 1 0 0 0 1
+   candidate [2]: "iti" 0 0 1 0 0
+   candidate [3]: "\ict\ic" 2 0 0 1 0
+   candidate [4]: "it\ic" 1 0 1 1 1
+input [20]: "\icte" 4
+   candidate [1]: "\icte" 1 0 0 0 1
+   candidate [2]: "ite" 0 0 1 0 0
+   candidate [3]: "\ict\ep" 1 0 0 1 0
+   candidate [4]: "it\ep" 0 0 1 1 1
+input [21]: "\ict\sw" 4
+   candidate [1]: "\ict\sw" 1 1 0 0 1
+   candidate [2]: "it\sw" 0 1 1 0 0
+   candidate [3]: "\icta" 1 0 0 1 0
+   candidate [4]: "ita" 0 0 1 1 1
+input [22]: "\ict\ic" 4
+   candidate [1]: "\ict\ic" 2 0 0 0 0
+   candidate [2]: "it\ic" 1 0 1 0 1
+   candidate [3]: "\icti" 1 0 1 0 1
+   candidate [4]: "iti" 0 0 2 0 0
+input [23]: "\ict\ep" 4
+   candidate [1]: "\ict\ep" 1 0 0 0 0
+   candidate [2]: "it\ep" 0 0 1 0 1
+   candidate [3]: "\icte" 1 0 1 0 1
+   candidate [4]: "ite" 0 0 2 0 0
+input [24]: "\icta" 4
+   candidate [1]: "\icta" 1 0 0 0 0
+   candidate [2]: "ita" 0 0 1 0 1
+   candidate [3]: "\ict\sw" 1 1 1 0 1
+   candidate [4]: "it\sw" 0 1 2 0 0
+input [25]: "\epti" 4
+   candidate [1]: "\epti" 0 0 0 0 1
+   candidate [2]: "eti" 0 0 1 0 0
+   candidate [3]: "\ept\ic" 1 0 0 1 0
+   candidate [4]: "et\ic" 1 0 1 1 1
+input [26]: "\epte" 4
+   candidate [1]: "\epte" 0 0 0 0 1
+   candidate [2]: "ete" 0 0 1 0 0
+   candidate [3]: "\ept\ep" 0 0 0 1 0
+   candidate [4]: "et\ep" 0 0 1 1 1
+input [27]: "\ept\sw" 4
+   candidate [1]: "\ept\sw" 0 1 0 0 1
+   candidate [2]: "et\sw" 0 1 1 0 0
+   candidate [3]: "\epta" 0 0 0 1 0
+   candidate [4]: "eta" 0 0 1 1 1
+input [28]: "\ept\ic" 4
+   candidate [1]: "\ept\ic" 1 0 0 0 0
+   candidate [2]: "et\ic" 1 0 1 0 1
+   candidate [3]: "\epti" 0 0 1 0 1
+   candidate [4]: "eti" 0 0 2 0 0
+input [29]: "\ept\ep" 4
+   candidate [1]: "\ept\ep" 0 0 0 0 0
+   candidate [2]: "et\ep" 0 0 1 0 1
+   candidate [3]: "\epte" 0 0 1 0 1
+   candidate [4]: "ete" 0 0 2 0 0
+input [30]: "\epta" 4
+   candidate [1]: "\epta" 0 0 0 0 0
+   candidate [2]: "eta" 0 0 1 0 1
+   candidate [3]: "\ept\sw" 0 1 1 0 1
+   candidate [4]: "et\sw" 0 1 2 0 0
+input [31]: "ati" 4
+   candidate [1]: "ati" 0 0 0 0 1
+   candidate [2]: "\swti" 0 1 1 0 0
+   candidate [3]: "at\ic" 1 0 0 1 0
+   candidate [4]: "\swt\ic" 1 1 1 1 1
+input [32]: "ate" 4
+   candidate [1]: "ate" 0 0 0 0 1
+   candidate [2]: "\swte" 0 1 1 0 0
+   candidate [3]: "at\ep" 0 0 0 1 0
+   candidate [4]: "\swt\ep" 0 1 1 1 1
+input [33]: "at\sw" 4
+   candidate [1]: "at\sw" 0 1 0 0 1
+   candidate [2]: "\swt\sw" 0 2 1 0 0
+   candidate [3]: "ata" 0 0 0 1 0
+   candidate [4]: "\swta" 0 1 1 1 1
+input [34]: "at\ic" 4
+   candidate [1]: "at\ic" 1 0 0 0 0
+   candidate [2]: "\swt\ic" 1 1 1 0 1
+   candidate [3]: "ati" 0 0 1 0 1
+   candidate [4]: "\swti" 0 1 2 0 0
+input [35]: "at\ep" 4
+   candidate [1]: "at\ep" 0 0 0 0 0
+   candidate [2]: "\swt\ep" 0 1 1 0 1
+   candidate [3]: "ate" 0 0 1 0 1
+   candidate [4]: "\swte" 0 1 2 0 0
+input [36]: "ata" 4
+   candidate [1]: "ata" 0 0 0 0 0
+   candidate [2]: "\swta" 0 1 1 0 1
+   candidate [3]: "at\sw" 0 1 1 0 1
+   candidate [4]: "\swt\sw" 0 2 2 0 0
diff --git a/test/fon/examples/OTGrammar/Infant_binary.OTGrammar b/test/fon/examples/OTGrammar/Infant_binary.OTGrammar
new file mode 100644
index 0000000..74deb98
Binary files /dev/null and b/test/fon/examples/OTGrammar/Infant_binary.OTGrammar differ
diff --git a/test/fon/examples/OTGrammar/Infant_binary2.OTGrammar b/test/fon/examples/OTGrammar/Infant_binary2.OTGrammar
new file mode 100644
index 0000000..74deb98
Binary files /dev/null and b/test/fon/examples/OTGrammar/Infant_binary2.OTGrammar differ
diff --git a/test/fon/examples/banner.praat b/test/fon/examples/banner.praat
new file mode 100644
index 0000000..d8c77c2
--- /dev/null
+++ b/test/fon/examples/banner.praat
@@ -0,0 +1,11 @@
+demoWindowTitle ("Praat banner")
+demo Times
+demo Font size... 300
+demo Select inner viewport... 0 100 0 100
+demo Axes... 0 100 0 100
+demo Erase all
+demo Paint rectangle... Maroon 0 100 0 100
+demo Colour... Yellow
+demo Text... 50 centre 30 bottom Praat
+demo Insert picture from file... www/paul.jpg 2 15 16 16
+demo Insert picture from file... www/david.gif 84 98 16 16
diff --git a/test/fon/examples/example.wav b/test/fon/examples/example.wav
new file mode 100644
index 0000000..0154915
Binary files /dev/null and b/test/fon/examples/example.wav differ
diff --git a/test/fon/examples/sineWithNoise.TextGrid b/test/fon/examples/sineWithNoise.TextGrid
new file mode 100644
index 0000000..2942df0
--- /dev/null
+++ b/test/fon/examples/sineWithNoise.TextGrid
@@ -0,0 +1,10 @@
+"Praat chronological TextGrid text file"
+0 1   ! Time domain.
+3   ! Number of tiers.
+"IntervalTier" "Mary" 0 1
+"IntervalTier" "John" 0 1
+"TextTier" "bell" 0 1
+1 0 1
+""
+2 0 1
+""
\ No newline at end of file
diff --git a/test/fon/examples/sounds/aaaa02.nsp b/test/fon/examples/sounds/aaaa02.nsp
new file mode 100644
index 0000000..384c462
Binary files /dev/null and b/test/fon/examples/sounds/aaaa02.nsp differ
diff --git a/test/fon/examples/sounds/aaaa02.wav b/test/fon/examples/sounds/aaaa02.wav
new file mode 100644
index 0000000..eef0830
Binary files /dev/null and b/test/fon/examples/sounds/aaaa02.wav differ
diff --git a/test/fon/examples/sounds/cl_F1_2b_egg.wav b/test/fon/examples/sounds/cl_F1_2b_egg.wav
new file mode 100644
index 0000000..7b59bea
Binary files /dev/null and b/test/fon/examples/sounds/cl_F1_2b_egg.wav differ
diff --git a/test/fon/examples/sounds/elephant calls/27_Ella.wav b/test/fon/examples/sounds/elephant calls/27_Ella.wav
new file mode 100644
index 0000000..3dcea89
Binary files /dev/null and b/test/fon/examples/sounds/elephant calls/27_Ella.wav differ
diff --git a/test/fon/texio.praat b/test/fon/texio.praat
index 0f6cece..b125d18 100644
Binary files a/test/fon/texio.praat and b/test/fon/texio.praat differ
diff --git a/test/fon/textioSpeed.praat b/test/fon/textioSpeed.praat
index 8a02be2..192d207 100644
--- a/test/fon/textioSpeed.praat
+++ b/test/fon/textioSpeed.praat
@@ -1,5 +1,5 @@
 # textioSpeed.praat
-# Paul Boersma, 9 November 2008
+# Paul Boersma, 2015-11-18
 
 echo Text I/O speed:
 
@@ -27,5 +27,6 @@ Remove
 select Sound sound30
 mean = Get mean... All 0 0
 assert mean = 30 ;   'mean'
+Remove
 deleteFile ("kanweg.Collection")
 printline OK
diff --git a/test/kar/unicode.praat b/test/kar/unicode.praat
index 51bfc6c..d870dc0 100644
Binary files a/test/kar/unicode.praat and b/test/kar/unicode.praat differ
diff --git "a/test/kar/a\314\212bc\314\247e\314\201u\314\210.wav" "b/test/kar/\303\245b\303\247\303\251\303\274.wav"
similarity index 100%
rename from "test/kar/a\314\212bc\314\247e\314\201u\314\210.wav"
rename to "test/kar/\303\245b\303\247\303\251\303\274.wav"
diff --git a/test/manually/Demo_recording_problem.praat b/test/manually/Demo_recording_problem.praat
new file mode 100644
index 0000000..a0678f6
--- /dev/null
+++ b/test/manually/Demo_recording_problem.praat
@@ -0,0 +1,36 @@
+	# Initialize
+    demo Erase all
+
+	demo Select inner viewport... 5 95 5 95
+	demo Axes... 0 100 0 100
+
+	# Recording text
+	demo Font size: 24
+	demo Colour: "Black"
+	demo Text: 50, "Centre", 50, "Bottom", "Recording started: You should see a red disk during recording"
+    demoShow()
+    
+	# Recording light
+    demo Paint circle: "Red", 5, 95, 2
+    demoShow()
+    
+	.sound = Record Sound (fixed time): "Microphone", 0.99, 0.5, "44100", 5
+	Remove
+	
+	# Clear text
+	demo Paint rectangle: "White", 0, 100, 45, 60
+
+ 	# Finish light
+	demo Paint circle: "Blue", 10, 95, 2
+
+	# Finish text
+	demo Font size: 24
+	demo Colour: "Black"
+	demo Text: 50, "Centre", 50, "Bottom", "Recording stopped: Now you should see a red and a blue disk"
+	demo Text: 50, "Centre", 45, "Bottom", "(Click anywhere in the window or hit any key to exit)"
+
+	# Wait and exit
+	demoWaitForInput()
+	demo Erase all
+	
+	exit
diff --git a/test/manually/PairDistributions_append.praat b/test/manually/PairDistributions_append.praat
new file mode 100644
index 0000000..63d2404
--- /dev/null
+++ b/test/manually/PairDistributions_append.praat
@@ -0,0 +1,44 @@
+# Praat script PairDistributions_append.praat
+# Paul Boersma, 7 May 2011
+
+if numberOfSelected ( ) < 1 or numberOfSelected ("PairDistribution") <> numberOfSelected ( )
+	exit Select one or more PairDistribution objects.
+endif
+numberOfDistributions = numberOfSelected ( )
+for i to numberOfDistributions
+	distribution [i] = selected (i)
+endfor
+#
+# Write header.
+#
+fileName$ = temporaryDirectory$ + "/appended.PairDistribution"
+deleteFile (fileName$)
+fileappend "'fileName$'" "ooTextFile"'newline$'
+fileappend "'fileName$'" "PairDistribution"'newline$'
+#
+# How many pairs do all the distributions together have?
+#
+totalNumberOfPairs = 0
+for i to numberOfDistributions
+	select distribution [i]
+	numberOfPairs [i] = Get number of pairs
+	totalNumberOfPairs += numberOfPairs [i]
+endfor
+fileappend "'fileName$'" 'totalNumberOfPairs''newline$'
+#
+# Write the data.
+#
+for i to numberOfDistributions
+	select distribution [i]
+	for j to numberOfPairs [i]
+		string1$ = Get string1... j
+		string2$ = Get string2... j
+		weight = Get weight... j
+		fileappend "'fileName$'" "'string1$'" "'string2$'" 'weight''newline$'
+	endfor
+endfor
+#
+# Read the result.
+#
+Read from file... 'fileName$'
+deleteFile (fileName$)
diff --git a/test/manually/guiTest.praat b/test/manually/guiTest.praat
index 37ffbc9..7ad19ff 100644
Binary files a/test/manually/guiTest.praat and b/test/manually/guiTest.praat differ
diff --git a/test/manually/testCommandLineCalls.praat b/test/manually/testCommandLineCalls.praat
new file mode 100644
index 0000000..a306a70
--- /dev/null
+++ b/test/manually/testCommandLineCalls.praat
@@ -0,0 +1,33 @@
+form Test command line calls
+	sentence First_text I love you
+	real Beep_duration 0.4
+	sentence Second_text Me too
+endform
+
+writeInfoLine: "She: """, first_text$, """"
+appendInfoLine: "He: """, second_text$, """"
+
+synth1 = Create SpeechSynthesizer: "English", "f1"
+Play text: first_text$
+Create Sound as pure tone: "beep", 1, 0.0, beep_duration,
+... 44100, 440, 0.2, 0.01, 0.01
+Play
+Remove
+synth2 = Create SpeechSynthesizer: "English", "m1"
+Play text: second_text$
+
+exit
+
+Praat.exe c:\Users\pboersma\Desktop\testCommandLineCalls.praat "I love you" 0.4 Me too
+
+Praat.exe c:\Users\pboersma\Desktop\testCommandLineCalls.praat "I love you" 0.4 "Me too"
+
+import os
+os.system('Praat.exe c:\\Users\\pboersma\\Desktop\\testCommandLineCalls.praat "I love you" 0.4 Me too')
+
+import subprocess
+subprocess.call('Praat.exe c:\\Users\\pboersma\\Desktop\\testCommandLineCalls.praat "I love you" 0.4 Me too')
+
+subprocess.call(['Praat.exe', 'c:\\Users\\pboersma\\Desktop\\testCommandLineCalls.praat', 'I love you', '0.4', 'Me too'])
+
+subprocess.call(['Praat.exe', 'c:\\Users\\pboersma\\Desktop\\testCommandLineCalls.praat', 'I love you', '0.4', 'Me', 'too'])exit
diff --git a/test/menuSpeed.praat b/test/menuSpeed.praat
new file mode 100644
index 0000000..dc06be1
--- /dev/null
+++ b/test/menuSpeed.praat
@@ -0,0 +1,19 @@
+pitch = Create TextGrid: 0, 1, "Mary John bell", "bell"
+sound = Create Sound as pure tone: "tone", 1, 0, 0.4, 44100, 440, 0.2, 0.01, 0.01
+intens = To Intensity: 100, 0, "yes"
+Down to IntensityTier
+To AmplitudeTier
+selectObject: sound
+;harm = To Harmonicity (cc): 0.01, 75, 0.1, 1
+stopwatch
+for i to 1000000
+	x = i
+endfor
+t1 = stopwatch
+stopwatch
+for i to 1000000
+	x = Get duration
+endfor
+t2 = stopwatch
+writeInfoLine: round ((t2 - t1) * 1000), " nanoseconds"
+removeObject: pitch, sound, intens, "IntensityTier tone", "AmplitudeTier tone"
\ No newline at end of file
diff --git a/test/num/fisherQ.praat b/test/num/fisherQ.praat
index f0bf602..ec596bf 100644
--- a/test/num/fisherQ.praat
+++ b/test/num/fisherQ.praat
@@ -88,7 +88,7 @@ assert fisherQ (1, 1e19, 1e19) = undefined
 #
 Debug... no 29   ; set invFisherQ to GSL
 f = invFisherQ (0.01, 1, 10000)   ; not such an unusual case
-assert "'f'" = "nan" or "'f'" = "NaN"
+assert "'f'" = "nan" or "'f'" = "NaN" or index ("'f'", "NAN") or "'f:5'" = "6.63743"
 Debug... no 0   ; use our corrected NUMridders again
 f = invFisherQ (0.01, 1, 10000)   ; same case
 assert "'f:5'" = "6.63743"
diff --git a/test/num/mathFunctions.praat b/test/num/mathFunctions.praat
index db17744..e568fcd 100644
--- a/test/num/mathFunctions.praat
+++ b/test/num/mathFunctions.praat
@@ -9,10 +9,10 @@ assert sqrt (123456789^2) = 123456789
 assert abs (sqrt (2) ^ 2 - 2) < 1e-15
 
 printline exp
-# Paul Boersma, September 20, 2006
+# Paul Boersma, September 13, 2015
 assert exp (-10000) = 0
 assert exp (0) = 1
-assert exp (1) = e
+assert abs (exp (1) - e) < 1e-15
 assert abs (1 - exp (100) / e ^ 100) < 1e-13
 assert abs (1 - exp (100) * exp (-100)) < 1e-15
 assert abs (1 - e ^ 100 * e ^ -100) < 1e-14
diff --git a/test/runAllTests.praat b/test/runAllTests.praat
index d712323..b0c19a5 100644
--- a/test/runAllTests.praat
+++ b/test/runAllTests.praat
@@ -14,65 +14,89 @@ else
 	exitScript: "Unknown operating system."
 endif
 
+writeInfoLine: "Running all tests..."
+
+memoryReport$ = Report memory use
+strings_before = extractNumber (memoryReport$, "Strings:")
+arrays_before  = extractNumber (memoryReport$, "Arrays:")
+things_before  = extractNumber (memoryReport$, "Things:")
+other_before   = extractNumber (memoryReport$, "Other:")
+
 directories = Create Strings as directory list: "directories", "."
 numberOfDirectories = Get number of strings
 for directory to numberOfDirectories
-	appendInfoLine: directory
 	selectObject: directories
 	directory$ = Get string: directory
-	appendInfoLine: directory$
 	if directory$ <> "manually"
 		files = Create Strings as file list: "files", directory$ + "/*.praat"
 		numberOfFiles = Get number of strings
 		for file to numberOfFiles
 			selectObject: files
 			file$ = Get string: file
-			appendInfoLine: "### executing ", directory$, "/", file$, ":"
-			runScript: directory$ + "/" + file$
+			path$ = directory$ + "/" + file$
+			appendInfoLine: "### executing ", path$, ":"
+			runScript: path$
 		endfor
+		removeObject: files
 	endif
 endfor
+removeObject: directories
 
-directories1 = Create Strings as directory list... directories1 .
+directories1 = Create Strings as directory list: "directories1", "."
 numberOfDirectories1 = Get number of strings
 for directory1 to numberOfDirectories1
-	select Strings directories1
-	directory1$ = Get string... directory1
+	selectObject: directories1
+	directory1$ = Get string: directory1
 	if directory1$ <> "manually"
-		directories2 = Create Strings as directory list... directories2 'directory1$'/*
+		directories2 = Create Strings as directory list: "directories2", directory1$ + "/*"
 		numberOfDirectories2 = Get number of strings
 		for directory2 to numberOfDirectories2
-			select Strings directories2
-			directory2$ = Get string... directory2
-			files = Create Strings as file list... files 'directory1$'/'directory2$'/*.praat
+			selectObject: directories2
+			directory2$ = Get string: directory2
+			files = Create Strings as file list: "files", directory1$ + "/" + directory2$ + "/*.praat"
 			numberOfFiles = Get number of strings
 			for file to numberOfFiles
-				select files
-				file$ = Get string... file
-				printline ### executing 'directory1$'/'directory2$'/'file$':
-				execute 'directory1$'/'directory2$'/'file$'
+				selectObject: files
+				file$ = Get string: file
+				path$ = directory1$ + "/" + directory2$ + "/" + file$
+				appendInfoLine: "### executing ", path$, ":"
+				runScript: path$
 			endfor
+			removeObject: files
 		endfor
+		removeObject: directories2
 	endif
 endfor
+removeObject: directories1
 
-echo                  ALL PRAAT TESTS WENT OK
-printline
-line5$ = "        #####          #####        #####   #####"
-line8$ = "        #####          #####        #######"
-line1$ = "               ######               #####           #####"
-line2$ = "           ##############           #####         #####"
-line4$ = "        #####          #####        #####     #####"
-line7$ = "        #####          #####        #########"
-line9$ = "        #####          #####        #####"
-line3$ = "         #####        #####         #####       #####"
-line6$ = "        #####          #####        ##### #####"
+writeInfoLine: "                 ALL PRAAT TESTS WENT OK"
+appendInfoLine: ""
+line$ [5] = "        #####          #####        #####   #####"
+line$ [8] = "        #####          #####        #######"
+line$ [1] = "               ######               #####           #####"
+line$ [2] = "           ##############           #####         #####"
+line$ [4] = "        #####          #####        #####     #####"
+line$ [7] = "        #####          #####        #########"
+line$ [9] = "        #####          #####        #####"
+line$ [3] = "         #####        #####         #####       #####"
+line$ [6] = "        #####          #####        ##### #####"
 for line from 1 to 9
-	line$ = line'line'$
-	printline 'line$'
+	appendInfoLine: line$ [line]
 endfor
-for line2 from 1 to 8
-	line = 9 - line2
-	line$ = line'line'$
-	printline 'line$'
+for line from 1 to 8
+	appendInfoLine: line$ [9 - line]
 endfor
+
+memoryReport$ = Report memory use
+strings_after = extractNumber (memoryReport$, "Strings:")
+arrays_after  = extractNumber (memoryReport$, "Arrays:")
+things_after  = extractNumber (memoryReport$, "Things:")
+other_after   = extractNumber (memoryReport$, "Other:")
+
+appendInfoLine ()
+appendInfoLine: "Leaking:"
+appendInfoLine: "   Strings: ", strings_after - strings_before
+appendInfoLine: "   Arrays: ", arrays_after - arrays_before
+appendInfoLine: "   Things: ", things_after - things_before
+appendInfoLine: "   Other: ", other_after - other_before
+
diff --git a/test/runAllTests_leak.praat b/test/runAllTests_leak.praat
new file mode 100644
index 0000000..d2dc890
--- /dev/null
+++ b/test/runAllTests_leak.praat
@@ -0,0 +1,128 @@
+# Praat script runAlltests_leak.praat
+# Paul Boersma, 2016-02-02
+#
+# This script runs all Praat scripts in its subdirectories.
+
+Text writing preferences: "try ASCII, then UTF-16"
+if macintosh
+	Text reading preferences: "try UTF-8, then MacRoman"
+elif windows
+	Text reading preferences: "try UTF-8, then Windows Latin-1"
+elif unix
+	Text reading preferences: "try UTF-8, then ISO Latin-1"
+else
+	exitScript: "Unknown operating system."
+endif
+
+writeInfoLine: "Running all tests twice..."
+
+# Warm up.
+strings_before = 0
+arrays_before  = 0
+things_before  = 0
+other_before   = 0
+strings_after = 0
+arrays_after  = 0
+things_after  = 0
+other_after   = 0
+
+leakReport$ = ""
+
+procedure runScript (.path$)
+	runScript: .path$
+	Erase all
+	writeInfo ()
+
+	memoryReport$ = Report memory use
+	memoryReport$ = Report memory use
+	strings_before = extractNumber (memoryReport$, "Strings:")
+	arrays_before  = extractNumber (memoryReport$, "Arrays:")
+	things_before  = extractNumber (memoryReport$, "Things:")
+	other_before   = extractNumber (memoryReport$, "Other:")
+
+	runScript: .path$
+	Erase all
+	writeInfo ()
+
+	memoryReport$ = Report memory use
+	strings_after = extractNumber (memoryReport$, "Strings:")
+	arrays_after  = extractNumber (memoryReport$, "Arrays:")
+	things_after  = extractNumber (memoryReport$, "Things:")
+	other_after   = extractNumber (memoryReport$, "Other:")
+
+	if strings_after <> strings_before or arrays_after <> arrays_before or
+	... things_after <> things_before or other_after <> other_before
+		appendInfoLine ()
+		leakReport$ = leakReport$ + "Leaking in " + .path$ + ":" + newline$
+		leakReport$ = leakReport$ + "   Strings: " + string$ (strings_before) + " " + string$ (strings_after) + newline$
+		leakReport$ = leakReport$ + "   Arrays: " + string$ (arrays_before) + " " + string$ (arrays_after) + newline$
+		leakReport$ = leakReport$ + "   Things: " + string$ (things_before) + " " + string$ (things_after) + newline$
+		leakReport$ = leakReport$ + "   Other: " + string$ (other_before) + " " + string$ (other_after) + newline$
+	endif
+endproc
+
+directories = Create Strings as directory list: "directories", "."
+numberOfDirectories = Get number of strings
+for directory to numberOfDirectories
+	selectObject: directories
+	directory$ = Get string: directory
+	if directory$ <> "manually"
+		files = Create Strings as file list: "files", directory$ + "/*.praat"
+		numberOfFiles = Get number of strings
+		for file to numberOfFiles
+			selectObject: files
+			file$ = Get string: file
+			path$ = directory$ + "/" + file$
+			appendInfoLine: "### executing ", path$, ":"
+			@runScript: path$
+		endfor
+		removeObject: files
+	endif
+endfor
+removeObject: directories
+
+directories1 = Create Strings as directory list: "directories1", "."
+numberOfDirectories1 = Get number of strings
+for directory1 to numberOfDirectories1
+	selectObject: directories1
+	directory1$ = Get string: directory1
+	if directory1$ <> "manually"
+		directories2 = Create Strings as directory list: "directories2", directory1$ + "/*"
+		numberOfDirectories2 = Get number of strings
+		for directory2 to numberOfDirectories2
+			selectObject: directories2
+			directory2$ = Get string: directory2
+			files = Create Strings as file list: "files", directory1$ + "/" + directory2$ + "/*.praat"
+			numberOfFiles = Get number of strings
+			for file to numberOfFiles
+				selectObject: files
+				file$ = Get string: file
+				path$ = directory1$ + "/" + directory2$ + "/" + file$
+				appendInfoLine: "### executing ", path$, ":"
+				@runScript: path$
+			endfor
+			removeObject: files
+		endfor
+		removeObject: directories2
+	endif
+endfor
+removeObject: directories1
+
+writeInfoLine: "                 ALL PRAAT TESTS WENT OK"
+appendInfoLine: ""
+line$ [5] = "        #####          #####        #####   #####"
+line$ [8] = "        #####          #####        #######"
+line$ [1] = "               ######               #####           #####"
+line$ [2] = "           ##############           #####         #####"
+line$ [4] = "        #####          #####        #####     #####"
+line$ [7] = "        #####          #####        #########"
+line$ [9] = "        #####          #####        #####"
+line$ [3] = "         #####        #####         #####       #####"
+line$ [6] = "        #####          #####        ##### #####"
+for line from 1 to 9
+	appendInfoLine: line$ [line]
+endfor
+for line from 1 to 8
+	appendInfoLine: line$ [9 - line]
+endfor
+appendInfoLine: leakReport$
diff --git a/test/stat/Table.praat b/test/stat/Table.praat
index 1e0d3a7..f230b9b 100644
--- a/test/stat/Table.praat
+++ b/test/stat/Table.praat
@@ -13,4 +13,13 @@ for cycle to 300
 	endfor
 endfor
 t = stopwatch
-echo 't:3' 'z'
\ No newline at end of file
+echo 't:3' 'z'
+Remove
+
+pb1 = Create formant table (Peterson & Barney 1952)
+pb2 = Read from file: "pb.Table"
+assert objectsAreIdentical: pb1, pb2
+
+removeObject: pb1, pb2
+
+appendInfoLine: "OK"
diff --git a/test/stat/linearRegression.praat b/test/stat/linearRegression.praat
new file mode 100644
index 0000000..cfde2ad
--- /dev/null
+++ b/test/stat/linearRegression.praat
@@ -0,0 +1,19 @@
+echo Linear regression
+# Paul Boersma, 23 November 2015
+
+printline Spec & Dur table
+Read Table from table file... logisticRegression/rh.Table
+To linear regression
+info$ = Info
+intercept = extractNumber (info$, "Intercept: ")
+assert fixed$ (intercept, 4) = "10.0000"   ; 'intercept'
+spec = extractNumber (info$, "Coefficient of factor Spec: ")
+assert left$ (fixed$ (abs (spec), 4), 6) = "0.0000"   ; 'spec'
+dur = extractNumber (info$, "Coefficient of factor Dur: ")
+assert left$ (fixed$ (abs (dur), 4), 6) = "0.0000"   ; 'dur'
+i = extractNumber (info$, "Coefficient of factor /I/: ")
+assert fixed$ (i, 4) = "-1.0000"   ; 'i'
+plus Table rh
+Remove
+
+printline OK
diff --git a/test/stat/logisticRegression.praat b/test/stat/logisticRegression.praat
index b2e8075..eb6bfdf 100644
--- a/test/stat/logisticRegression.praat
+++ b/test/stat/logisticRegression.praat
@@ -1,9 +1,11 @@
 echo Logistic regression
-# Paul Boersma, 30 November 2009
+# Paul Boersma, 16 December 2015
 
 printline Spec & Dur table
-Read Table from table file... logisticRegression/rh.Table
-To logistic regression... "Spec Dur" /I/ /i/
+table = Read Table from table file... logisticRegression/rh.Table
+logreg = To logistic regression: "Spec Dur", "/I/", "/i/"
+logreg2 = Read from file: "logisticRegression/rh.logisticRegression"
+assert objectsAreIdentical (logreg, logreg2)
 info$ = Info
 intercept = extractNumber (info$, "Intercept: ")
 assert fixed$ (intercept, 4) = "-8.7028"   ; 'intercept'
@@ -11,7 +13,6 @@ spec = extractNumber (info$, "Coefficient of factor Spec: ")
 assert fixed$ (spec, 4) = "1.6587"   ; 'spec'
 dur = extractNumber (info$, "Coefficient of factor Dur: ")
 assert fixed$ (dur, 4) = "0.6041"   ; 'dur'
-plus Table rh
-Remove
+removeObject: table, logreg, logreg2
 
 printline OK
diff --git a/test/stat/logisticRegression/rh.LogisticRegression b/test/stat/logisticRegression/rh.LogisticRegression
new file mode 100644
index 0000000..5296d07
--- /dev/null
+++ b/test/stat/logisticRegression/rh.LogisticRegression
@@ -0,0 +1,17 @@
+File type = "ooTextFile"
+Object class = "LogisticRegression"
+
+intercept = -8.702787857509811 
+parameters: size = 2 
+parameters [1]:
+    label = "Spec" 
+    minimum = 1 
+    maximum = 7 
+    value = 1.658716046208673 
+parameters [2]:
+    label = "Dur" 
+    minimum = 1 
+    maximum = 7 
+    value = 0.6041395474038707 
+dependent1 = "/I/" 
+dependent2 = "/i/" 
diff --git a/test/stat/pb.Table b/test/stat/pb.Table
new file mode 100644
index 0000000..5be3524
--- /dev/null
+++ b/test/stat/pb.Table
@@ -0,0 +1,31944 @@
+File type = "ooTextFile"
+Object class = "Table"
+
+numberOfColumns = 9 
+columnHeaders []: 
+    columnHeaders [1]:
+        label = "Type" 
+    columnHeaders [2]:
+        label = "Sex" 
+    columnHeaders [3]:
+        label = "Speaker" 
+    columnHeaders [4]:
+        label = "Vowel" 
+    columnHeaders [5]:
+        label = "IPA" 
+    columnHeaders [6]:
+        label = "F0" 
+    columnHeaders [7]:
+        label = "F1" 
+    columnHeaders [8]:
+        label = "F2" 
+    columnHeaders [9]:
+        label = "F3" 
+rows: size = 1520 
+rows [1]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2280" 
+        cells [9]:
+            string = "2850" 
+rows [2]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "186" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "2790" 
+rows [3]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "2030" 
+        cells [9]:
+            string = "2640" 
+rows [4]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2550" 
+rows [5]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "161" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1870" 
+        cells [9]:
+            string = "2420" 
+rows [6]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "155" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2600" 
+rows [7]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2660" 
+rows [8]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2550" 
+rows [9]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "144" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "2620" 
+rows [10]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2530" 
+rows [11]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "2490" 
+rows [12]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2640" 
+rows [13]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "161" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2280" 
+rows [14]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "158" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2220" 
+rows [15]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "163" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2210" 
+rows [16]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "2280" 
+rows [17]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2150" 
+rows [18]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "930" 
+        cells [9]:
+            string = "2280" 
+rows [19]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "177" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1520" 
+        cells [9]:
+            string = "1670" 
+rows [20]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "1" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "164" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "1590" 
+rows [21]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "147" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2910" 
+rows [22]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "210" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "3250" 
+rows [23]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "1890" 
+        cells [9]:
+            string = "2680" 
+rows [24]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "139" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2500" 
+rows [25]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1760" 
+        cells [9]:
+            string = "2590" 
+rows [26]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2380" 
+rows [27]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1610" 
+        cells [9]:
+            string = "2560" 
+rows [28]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1690" 
+        cells [9]:
+            string = "2580" 
+rows [29]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2420" 
+rows [30]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "625" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2490" 
+rows [31]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2450" 
+rows [32]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2430" 
+rows [33]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "149" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "580" 
+        cells [9]:
+            string = "2470" 
+rows [34]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "560" 
+        cells [9]:
+            string = "2410" 
+rows [35]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "1910" 
+rows [36]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "830" 
+        cells [9]:
+            string = "2240" 
+rows [37]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "650" 
+        cells [9]:
+            string = "3300" 
+rows [38]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "137" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "660" 
+        cells [9]:
+            string = "3300" 
+rows [39]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "1570" 
+rows [40]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "2" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1130" 
+        cells [9]:
+            string = "1510" 
+rows [41]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "2180" 
+        cells [9]:
+            string = "2680" 
+rows [42]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "244" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2780" 
+rows [43]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1930" 
+        cells [9]:
+            string = "2610" 
+rows [44]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "104" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1990" 
+        cells [9]:
+            string = "2700" 
+rows [45]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1810" 
+        cells [9]:
+            string = "2500" 
+rows [46]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "95" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1810" 
+        cells [9]:
+            string = "2480" 
+rows [47]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "93" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2400" 
+rows [48]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "94" 
+        cells [7]:
+            string = "658" 
+        cells [8]:
+            string = "1755" 
+        cells [9]:
+            string = "2305" 
+rows [49]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2320" 
+rows [50]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "612" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2350" 
+rows [51]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "91" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2140" 
+rows [52]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "94" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1090" 
+        cells [9]:
+            string = "2230" 
+rows [53]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "92" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "870" 
+        cells [9]:
+            string = "2300" 
+rows [54]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2280" 
+rows [55]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2290" 
+rows [56]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "456" 
+        cells [8]:
+            string = "1030" 
+        cells [9]:
+            string = "2300" 
+rows [57]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2240" 
+rows [58]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "326" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2190" 
+rows [59]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "1780" 
+rows [60]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "3" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "1800" 
+rows [61]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2240" 
+        cells [9]:
+            string = "3400" 
+rows [62]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "156" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "3200" 
+rows [63]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "156" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1960" 
+        cells [9]:
+            string = "2400" 
+rows [64]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2050" 
+        cells [9]:
+            string = "2360" 
+rows [65]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2410" 
+rows [66]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "555" 
+        cells [8]:
+            string = "1890" 
+        cells [9]:
+            string = "2440" 
+rows [67]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1610" 
+        cells [9]:
+            string = "2340" 
+rows [68]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2350" 
+rows [69]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2330" 
+rows [70]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "675" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "2380" 
+rows [71]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2550" 
+rows [72]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2500" 
+rows [73]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2320" 
+rows [74]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "555" 
+        cells [8]:
+            string = "890" 
+        cells [9]:
+            string = "2370" 
+rows [75]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2210" 
+rows [76]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "156" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2350" 
+rows [77]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2050" 
+rows [78]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "385" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2330" 
+rows [79]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "1840" 
+rows [80]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "4" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "555" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "1730" 
+rows [81]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "2310" 
+        cells [9]:
+            string = "2820" 
+rows [82]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "2850" 
+rows [83]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "137" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2640" 
+rows [84]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "134" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1880" 
+        cells [9]:
+            string = "2450" 
+rows [85]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1910" 
+        cells [9]:
+            string = "2500" 
+rows [86]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "137" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1770" 
+        cells [9]:
+            string = "2400" 
+rows [87]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "2180" 
+rows [88]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1690" 
+        cells [9]:
+            string = "2320" 
+rows [89]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1950" 
+rows [90]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2000" 
+rows [91]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2140" 
+rows [92]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "126" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2020" 
+rows [93]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "1980" 
+rows [94]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "880" 
+        cells [9]:
+            string = "1950" 
+rows [95]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "1990" 
+rows [96]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "1920" 
+rows [97]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2140" 
+rows [98]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2130" 
+rows [99]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1510" 
+        cells [9]:
+            string = "1800" 
+rows [100]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "5" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "1700" 
+rows [101]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "312" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "2800" 
+rows [102]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "2430" 
+        cells [9]:
+            string = "2870" 
+rows [103]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2660" 
+rows [104]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "313" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2750" 
+rows [105]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2500" 
+rows [106]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1830" 
+        cells [9]:
+            string = "2570" 
+rows [107]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "676" 
+        cells [8]:
+            string = "1670" 
+        cells [9]:
+            string = "2540" 
+rows [108]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "725" 
+        cells [8]:
+            string = "1687" 
+        cells [9]:
+            string = "2500" 
+rows [109]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2560" 
+rows [110]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "726" 
+        cells [8]:
+            string = "1270" 
+        cells [9]:
+            string = "2560" 
+rows [111]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2680" 
+rows [112]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "113" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2650" 
+rows [113]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1030" 
+        cells [9]:
+            string = "2690" 
+rows [114]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2700" 
+rows [115]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "456" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2520" 
+rows [116]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "2600" 
+rows [117]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "313" 
+        cells [8]:
+            string = "838" 
+        cells [9]:
+            string = "2340" 
+rows [118]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "288" 
+        cells [8]:
+            string = "938" 
+        cells [9]:
+            string = "2450" 
+rows [119]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "503" 
+        cells [8]:
+            string = "1305" 
+        cells [9]:
+            string = "1775" 
+rows [120]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "6" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "505" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "1750" 
+rows [121]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "186" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2320" 
+        cells [9]:
+            string = "3120" 
+rows [122]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "172" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "2280" 
+        cells [9]:
+            string = "3020" 
+rows [123]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2660" 
+rows [124]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2040" 
+        cells [9]:
+            string = "2715" 
+rows [125]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2860" 
+rows [126]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "614" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2770" 
+rows [127]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2450" 
+rows [128]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "162" 
+        cells [7]:
+            string = "775" 
+        cells [8]:
+            string = "1810" 
+        cells [9]:
+            string = "2200" 
+rows [129]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2410" 
+rows [130]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "2400" 
+rows [131]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "162" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2580" 
+rows [132]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "163" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2350" 
+rows [133]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2450" 
+rows [134]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "171" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2500" 
+rows [135]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2150" 
+rows [136]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "493" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2300" 
+rows [137]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2260" 
+rows [138]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2350" 
+rows [139]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1750" 
+rows [140]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "7" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "565" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "1710" 
+rows [141]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "230" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3200" 
+rows [142]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "109" 
+        cells [7]:
+            string = "218" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3100" 
+rows [143]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2680" 
+rows [144]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "206" 
+        cells [8]:
+            string = "2130" 
+        cells [9]:
+            string = "2570" 
+rows [145]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2630" 
+rows [146]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "515" 
+        cells [8]:
+            string = "1760" 
+        cells [9]:
+            string = "2470" 
+rows [147]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "514" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2600" 
+rows [148]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "552" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2500" 
+rows [149]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2300" 
+rows [150]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "104" 
+        cells [7]:
+            string = "624" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "2410" 
+rows [151]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "714" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2420" 
+rows [152]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "97" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2350" 
+rows [153]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "965" 
+        cells [9]:
+            string = "2500" 
+rows [154]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "109" 
+        cells [7]:
+            string = "578" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2460" 
+rows [155]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "467" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2400" 
+rows [156]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "475" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2310" 
+rows [157]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "910" 
+        cells [9]:
+            string = "2200" 
+rows [158]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "975" 
+        cells [9]:
+            string = "2320" 
+rows [159]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "1790" 
+rows [160]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "8" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "425" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "1760" 
+rows [161]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "316" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2800" 
+rows [162]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2275" 
+        cells [9]:
+            string = "2775" 
+rows [163]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2475" 
+rows [164]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "434" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2425" 
+rows [165]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "582" 
+        cells [8]:
+            string = "1725" 
+        cells [9]:
+            string = "2375" 
+rows [166]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "158" 
+        cells [7]:
+            string = "586" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2425" 
+rows [167]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2375" 
+rows [168]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "582" 
+        cells [8]:
+            string = "1775" 
+        cells [9]:
+            string = "2375" 
+rows [169]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "626" 
+        cells [8]:
+            string = "1125" 
+        cells [9]:
+            string = "2200" 
+rows [170]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "641" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2225" 
+rows [171]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "144" 
+        cells [7]:
+            string = "708" 
+        cells [8]:
+            string = "1054" 
+        cells [9]:
+            string = "2420" 
+rows [172]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "705" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2375" 
+rows [173]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "614" 
+        cells [8]:
+            string = "848" 
+        cells [9]:
+            string = "2200" 
+rows [174]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2175" 
+rows [175]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2325" 
+rows [176]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2325" 
+rows [177]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "334" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2200" 
+rows [178]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "183" 
+        cells [7]:
+            string = "312" 
+        cells [8]:
+            string = "1020" 
+        cells [9]:
+            string = "2300" 
+rows [179]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "518" 
+        cells [8]:
+            string = "1305" 
+        cells [9]:
+            string = "1570" 
+rows [180]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "9" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "1510" 
+rows [181]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "129" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "2260" 
+        cells [9]:
+            string = "2820" 
+rows [182]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2825" 
+rows [183]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2040" 
+        cells [9]:
+            string = "2500" 
+rows [184]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "144" 
+        cells [7]:
+            string = "389" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2425" 
+rows [185]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "126" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1870" 
+        cells [9]:
+            string = "2500" 
+rows [186]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1775" 
+        cells [9]:
+            string = "2450" 
+rows [187]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "2500" 
+rows [188]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "624" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2475" 
+rows [189]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2550" 
+rows [190]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "672" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2500" 
+rows [191]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2680" 
+rows [192]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "777" 
+        cells [8]:
+            string = "1026" 
+        cells [9]:
+            string = "2625" 
+rows [193]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2650" 
+rows [194]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "585" 
+        cells [8]:
+            string = "819" 
+        cells [9]:
+            string = "2625" 
+rows [195]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2500" 
+rows [196]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "461" 
+        cells [8]:
+            string = "993" 
+        cells [9]:
+            string = "2350" 
+rows [197]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2300" 
+rows [198]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "266" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2300" 
+rows [199]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "1700" 
+rows [200]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "10" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "532" 
+        cells [8]:
+            string = "1275" 
+        cells [9]:
+            string = "1600" 
+rows [201]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "248" 
+        cells [8]:
+            string = "2225" 
+        cells [9]:
+            string = "3100" 
+rows [202]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "238" 
+        cells [8]:
+            string = "2175" 
+        cells [9]:
+            string = "3075" 
+rows [203]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "405" 
+        cells [8]:
+            string = "1925" 
+        cells [9]:
+            string = "2550" 
+rows [204]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "416" 
+        cells [8]:
+            string = "1940" 
+        cells [9]:
+            string = "2600" 
+rows [205]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "147" 
+        cells [7]:
+            string = "588" 
+        cells [8]:
+            string = "1790" 
+        cells [9]:
+            string = "2500" 
+rows [206]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "586" 
+        cells [8]:
+            string = "1725" 
+        cells [9]:
+            string = "2650" 
+rows [207]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "725" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2425" 
+rows [208]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "2220" 
+rows [209]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "586" 
+        cells [8]:
+            string = "1078" 
+        cells [9]:
+            string = "2300" 
+rows [210]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "627" 
+        cells [8]:
+            string = "1038" 
+        cells [9]:
+            string = "2360" 
+rows [211]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "725" 
+        cells [8]:
+            string = "1046" 
+        cells [9]:
+            string = "2325" 
+rows [212]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "746" 
+        cells [8]:
+            string = "1018" 
+        cells [9]:
+            string = "2300" 
+rows [213]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2500" 
+rows [214]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "924" 
+        cells [9]:
+            string = "2350" 
+rows [215]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "495" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2275" 
+rows [216]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1030" 
+        cells [9]:
+            string = "2275" 
+rows [217]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "162" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "760" 
+        cells [9]:
+            string = "2300" 
+rows [218]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "315" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2025" 
+rows [219]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "511" 
+        cells [8]:
+            string = "1561" 
+        cells [9]:
+            string = "1876" 
+rows [220]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "11" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "1887" 
+rows [221]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2410" 
+        cells [9]:
+            string = "3000" 
+rows [222]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2440" 
+        cells [9]:
+            string = "3280" 
+rows [223]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1880" 
+        cells [9]:
+            string = "2450" 
+rows [224]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1930" 
+        cells [9]:
+            string = "2420" 
+rows [225]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "2300" 
+rows [226]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "123" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "2300" 
+rows [227]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "2330" 
+rows [228]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "2280" 
+rows [229]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "2250" 
+rows [230]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1390" 
+        cells [9]:
+            string = "2240" 
+rows [231]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "2260" 
+rows [232]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2280" 
+rows [233]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2080" 
+rows [234]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "910" 
+        cells [9]:
+            string = "2000" 
+rows [235]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2210" 
+rows [236]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2230" 
+rows [237]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2130" 
+rows [238]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "123" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "1010" 
+        cells [9]:
+            string = "2240" 
+rows [239]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "1650" 
+rows [240]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "12" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "1640" 
+rows [241]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "142" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "2290" 
+        cells [9]:
+            string = "2600" 
+rows [242]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "2290" 
+        cells [9]:
+            string = "2700" 
+rows [243]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2550" 
+rows [244]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2450" 
+rows [245]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1740" 
+        cells [9]:
+            string = "2500" 
+rows [246]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2430" 
+rows [247]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2500" 
+rows [248]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2380" 
+rows [249]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2530" 
+rows [250]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2430" 
+rows [251]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2630" 
+rows [252]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2700" 
+rows [253]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2450" 
+rows [254]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "710" 
+        cells [9]:
+            string = "2540" 
+rows [255]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "910" 
+        cells [9]:
+            string = "2350" 
+rows [256]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1030" 
+        cells [9]:
+            string = "2400" 
+rows [257]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2750" 
+rows [258]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "740" 
+        cells [9]:
+            string = "2880" 
+rows [259]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "1610" 
+rows [260]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "13" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1360" 
+        cells [9]:
+            string = "1600" 
+rows [261]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "228" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "2860" 
+rows [262]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "2920" 
+rows [263]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "407" 
+        cells [8]:
+            string = "2070" 
+        cells [9]:
+            string = "2500" 
+rows [264]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2450" 
+rows [265]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "445" 
+        cells [8]:
+            string = "2020" 
+        cells [9]:
+            string = "2420" 
+rows [266]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "2020" 
+        cells [9]:
+            string = "2500" 
+rows [267]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "721" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "2400" 
+rows [268]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "109" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2440" 
+rows [269]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "104" 
+        cells [7]:
+            string = "552" 
+        cells [8]:
+            string = "1122" 
+        cells [9]:
+            string = "2500" 
+rows [270]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2600" 
+rows [271]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "98" 
+        cells [7]:
+            string = "686" 
+        cells [8]:
+            string = "1078" 
+        cells [9]:
+            string = "2570" 
+rows [272]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2680" 
+rows [273]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "102" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "665" 
+        cells [9]:
+            string = "2620" 
+rows [274]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "650" 
+        cells [9]:
+            string = "2700" 
+rows [275]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "448" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2370" 
+rows [276]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "104" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "2370" 
+rows [277]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "232" 
+        cells [8]:
+            string = "696" 
+        cells [9]:
+            string = "2200" 
+rows [278]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "222" 
+        cells [8]:
+            string = "665" 
+        cells [9]:
+            string = "2080" 
+rows [279]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "432" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1400" 
+rows [280]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "14" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1570" 
+rows [281]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "230" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2850" 
+rows [282]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2980" 
+rows [283]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "365" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2340" 
+rows [284]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2040" 
+        cells [9]:
+            string = "2560" 
+rows [285]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2310" 
+rows [286]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2050" 
+        cells [9]:
+            string = "2500" 
+rows [287]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2110" 
+rows [288]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2150" 
+rows [289]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2380" 
+rows [290]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2450" 
+rows [291]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "830" 
+        cells [9]:
+            string = "2250" 
+rows [292]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "820" 
+        cells [9]:
+            string = "2400" 
+rows [293]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "620" 
+        cells [9]:
+            string = "2250" 
+rows [294]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "700" 
+        cells [9]:
+            string = "2550" 
+rows [295]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "730" 
+        cells [9]:
+            string = "2180" 
+rows [296]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "740" 
+        cells [9]:
+            string = "2200" 
+rows [297]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2100" 
+rows [298]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "740" 
+        cells [9]:
+            string = "2040" 
+rows [299]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "1600" 
+rows [300]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "15" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1650" 
+rows [301]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2355" 
+        cells [9]:
+            string = "3250" 
+rows [302]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2460" 
+        cells [9]:
+            string = "3280" 
+rows [303]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "385" 
+        cells [8]:
+            string = "2242" 
+        cells [9]:
+            string = "2805" 
+rows [304]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "407" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "2780" 
+rows [305]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "2090" 
+        cells [9]:
+            string = "2720" 
+rows [306]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "543" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2640" 
+rows [307]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1958" 
+        cells [9]:
+            string = "2542" 
+rows [308]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "708" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2535" 
+rows [309]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "675" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "2550" 
+rows [310]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "704" 
+        cells [8]:
+            string = "1393" 
+        cells [9]:
+            string = "2550" 
+rows [311]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "137" 
+        cells [7]:
+            string = "825" 
+        cells [8]:
+            string = "1168" 
+        cells [9]:
+            string = "2750" 
+rows [312]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2680" 
+rows [313]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "671" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2670" 
+rows [314]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "147" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "968" 
+        cells [9]:
+            string = "2660" 
+rows [315]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "443" 
+        cells [8]:
+            string = "1273" 
+        cells [9]:
+            string = "2430" 
+rows [316]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "153" 
+        cells [7]:
+            string = "459" 
+        cells [8]:
+            string = "1286" 
+        cells [9]:
+            string = "2410" 
+rows [317]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "395" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2160" 
+rows [318]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "153" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "2150" 
+rows [319]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "532" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "1890" 
+rows [320]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "16" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "538" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "1818" 
+rows [321]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "264" 
+        cells [8]:
+            string = "2290" 
+        cells [9]:
+            string = "2700" 
+rows [322]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "256" 
+        cells [8]:
+            string = "2305" 
+        cells [9]:
+            string = "2635" 
+rows [323]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1880" 
+        cells [9]:
+            string = "2440" 
+rows [324]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "346" 
+        cells [8]:
+            string = "1930" 
+        cells [9]:
+            string = "2390" 
+rows [325]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2300" 
+rows [326]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1730" 
+        cells [9]:
+            string = "2275" 
+rows [327]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1770" 
+        cells [9]:
+            string = "2350" 
+rows [328]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1642" 
+        cells [9]:
+            string = "2170" 
+rows [329]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "601" 
+        cells [8]:
+            string = "1273" 
+        cells [9]:
+            string = "2130" 
+rows [330]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1283" 
+        cells [9]:
+            string = "2150" 
+rows [331]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2440" 
+rows [332]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "95" 
+        cells [7]:
+            string = "703" 
+        cells [8]:
+            string = "1092" 
+        cells [9]:
+            string = "2320" 
+rows [333]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "97" 
+        cells [7]:
+            string = "565" 
+        cells [8]:
+            string = "780" 
+        cells [9]:
+            string = "2350" 
+rows [334]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "584" 
+        cells [8]:
+            string = "849" 
+        cells [9]:
+            string = "2460" 
+rows [335]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2140" 
+rows [336]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "422" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2175" 
+rows [337]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "315" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2260" 
+rows [338]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "326" 
+        cells [8]:
+            string = "1125" 
+        cells [9]:
+            string = "2210" 
+rows [339]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "444" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1625" 
+rows [340]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "17" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "109" 
+        cells [7]:
+            string = "469" 
+        cells [8]:
+            string = "1288" 
+        cells [9]:
+            string = "1600" 
+rows [341]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "210" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "3090" 
+rows [342]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2080" 
+        cells [9]:
+            string = "3180" 
+rows [343]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2710" 
+rows [344]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2670" 
+rows [345]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1910" 
+        cells [9]:
+            string = "2580" 
+rows [346]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "129" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1930" 
+        cells [9]:
+            string = "2650" 
+rows [347]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1620" 
+        cells [9]:
+            string = "2200" 
+rows [348]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2360" 
+rows [349]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2230" 
+rows [350]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "126" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2330" 
+rows [351]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2240" 
+rows [352]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2220" 
+rows [353]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2180" 
+rows [354]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "690" 
+        cells [9]:
+            string = "2200" 
+rows [355]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "129" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "770" 
+        cells [9]:
+            string = "1860" 
+rows [356]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "790" 
+        cells [9]:
+            string = "1920" 
+rows [357]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "210" 
+        cells [8]:
+            string = "670" 
+        cells [9]:
+            string = "1900" 
+rows [358]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "730" 
+        cells [9]:
+            string = "1850" 
+rows [359]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "1550" 
+rows [360]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "18" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "1510" 
+rows [361]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "129" 
+        cells [7]:
+            string = "190" 
+        cells [8]:
+            string = "2650" 
+        cells [9]:
+            string = "3280" 
+rows [362]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "190" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3170" 
+rows [363]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2700" 
+rows [364]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2750" 
+rows [365]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "2560" 
+rows [366]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "375" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2500" 
+rows [367]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1570" 
+        cells [9]:
+            string = "2600" 
+rows [368]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1610" 
+        cells [9]:
+            string = "2650" 
+rows [369]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2500" 
+rows [370]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2480" 
+rows [371]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2870" 
+rows [372]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2900" 
+rows [373]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "113" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2900" 
+rows [374]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "820" 
+        cells [9]:
+            string = "2820" 
+rows [375]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2500" 
+rows [376]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2370" 
+rows [377]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2100" 
+rows [378]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "210" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "1940" 
+rows [379]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1920" 
+rows [380]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "19" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1760" 
+rows [381]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "2180" 
+        cells [9]:
+            string = "2660" 
+rows [382]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "260" 
+        cells [8]:
+            string = "2210" 
+        cells [9]:
+            string = "2780" 
+rows [383]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2440" 
+rows [384]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2480" 
+rows [385]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1670" 
+        cells [9]:
+            string = "2310" 
+rows [386]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2380" 
+rows [387]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "2280" 
+rows [388]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2320" 
+rows [389]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2390" 
+rows [390]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2370" 
+rows [391]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2330" 
+rows [392]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "2380" 
+rows [393]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "790" 
+        cells [9]:
+            string = "2480" 
+rows [394]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2420" 
+rows [395]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2200" 
+rows [396]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2200" 
+rows [397]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "670" 
+        cells [9]:
+            string = "2140" 
+rows [398]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "126" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2190" 
+rows [399]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "1760" 
+rows [400]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "20" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "121" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "1700" 
+rows [401]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "155" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "2910" 
+rows [402]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2320" 
+        cells [9]:
+            string = "2960" 
+rows [403]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "142" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2680" 
+rows [404]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "2050" 
+        cells [9]:
+            string = "2670" 
+rows [405]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2530" 
+rows [406]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1920" 
+        cells [9]:
+            string = "2520" 
+rows [407]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2440" 
+rows [408]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2480" 
+rows [409]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2600" 
+rows [410]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1290" 
+        cells [9]:
+            string = "2600" 
+rows [411]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2500" 
+rows [412]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2720" 
+rows [413]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2570" 
+rows [414]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "880" 
+        cells [9]:
+            string = "2660" 
+rows [415]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "142" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1130" 
+        cells [9]:
+            string = "2440" 
+rows [416]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2420" 
+rows [417]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "142" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "2330" 
+rows [418]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2300" 
+rows [419]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "1600" 
+rows [420]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "21" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "1600" 
+rows [421]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2800" 
+rows [422]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "2240" 
+        cells [9]:
+            string = "2760" 
+rows [423]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2680" 
+rows [424]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2080" 
+        cells [9]:
+            string = "2520" 
+rows [425]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1870" 
+        cells [9]:
+            string = "2320" 
+rows [426]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2400" 
+rows [427]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1920" 
+        cells [9]:
+            string = "2480" 
+rows [428]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2560" 
+rows [429]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "139" 
+        cells [7]:
+            string = "810" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2100" 
+rows [430]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2100" 
+rows [431]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2120" 
+rows [432]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2080" 
+rows [433]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2240" 
+rows [434]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "142" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2250" 
+rows [435]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2200" 
+rows [436]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "141" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "870" 
+        cells [9]:
+            string = "2240" 
+rows [437]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "600" 
+        cells [9]:
+            string = "2300" 
+rows [438]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "230" 
+        cells [8]:
+            string = "570" 
+        cells [9]:
+            string = "2100" 
+rows [439]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1520" 
+        cells [9]:
+            string = "2100" 
+rows [440]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "22" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1570" 
+        cells [9]:
+            string = "2050" 
+rows [441]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2900" 
+rows [442]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2150" 
+        cells [9]:
+            string = "2860" 
+rows [443]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1870" 
+        cells [9]:
+            string = "2450" 
+rows [444]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2350" 
+rows [445]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1770" 
+        cells [9]:
+            string = "2500" 
+rows [446]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2400" 
+rows [447]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2440" 
+rows [448]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "715" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2300" 
+rows [449]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "880" 
+        cells [9]:
+            string = "2500" 
+rows [450]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "124" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2520" 
+rows [451]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "119" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2520" 
+rows [452]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2520" 
+rows [453]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "610" 
+        cells [9]:
+            string = "2500" 
+rows [454]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "710" 
+        cells [9]:
+            string = "2500" 
+rows [455]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2100" 
+rows [456]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2140" 
+rows [457]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "690" 
+        cells [9]:
+            string = "2080" 
+rows [458]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "650" 
+        cells [9]:
+            string = "2050" 
+rows [459]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "1720" 
+rows [460]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "23" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "1650" 
+rows [461]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "148" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "2700" 
+rows [462]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "288" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "2880" 
+rows [463]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2080" 
+        cells [9]:
+            string = "2530" 
+rows [464]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "153" 
+        cells [7]:
+            string = "384" 
+        cells [8]:
+            string = "2110" 
+        cells [9]:
+            string = "2500" 
+rows [465]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2200" 
+rows [466]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "153" 
+        cells [7]:
+            string = "583" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2250" 
+rows [467]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2400" 
+rows [468]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "685" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2160" 
+rows [469]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "2110" 
+rows [470]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2100" 
+rows [471]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2120" 
+rows [472]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "135" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "2020" 
+rows [473]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "1850" 
+rows [474]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "132" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2000" 
+rows [475]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "1950" 
+rows [476]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2150" 
+rows [477]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "162" 
+        cells [7]:
+            string = "324" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2220" 
+rows [478]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "139" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2150" 
+rows [479]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "1780" 
+rows [480]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "24" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "1820" 
+rows [481]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "2190" 
+        cells [9]:
+            string = "3000" 
+rows [482]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "106" 
+        cells [7]:
+            string = "254" 
+        cells [8]:
+            string = "2085" 
+        cells [9]:
+            string = "2890" 
+rows [483]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "1967" 
+        cells [9]:
+            string = "2670" 
+rows [484]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1940" 
+        cells [9]:
+            string = "2590" 
+rows [485]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "464" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2700" 
+rows [486]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "1995" 
+        cells [9]:
+            string = "2780" 
+rows [487]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "94" 
+        cells [7]:
+            string = "595" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2700" 
+rows [488]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2500" 
+rows [489]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "96" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2420" 
+rows [490]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1127" 
+        cells [9]:
+            string = "2420" 
+rows [491]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "100" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2360" 
+rows [492]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "96" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1155" 
+        cells [9]:
+            string = "2330" 
+rows [493]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "101" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "740" 
+        cells [9]:
+            string = "2300" 
+rows [494]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "494" 
+        cells [8]:
+            string = "789" 
+        cells [9]:
+            string = "2420" 
+rows [495]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "113" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1020" 
+        cells [9]:
+            string = "2200" 
+rows [496]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1028" 
+        cells [9]:
+            string = "2160" 
+rows [497]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "392" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2120" 
+rows [498]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "898" 
+        cells [9]:
+            string = "2140" 
+rows [499]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "547" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "1688" 
+rows [500]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "25" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "512" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "1570" 
+rows [501]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "123" 
+        cells [7]:
+            string = "246" 
+        cells [8]:
+            string = "2185" 
+        cells [9]:
+            string = "2730" 
+rows [502]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "267" 
+        cells [8]:
+            string = "2280" 
+        cells [9]:
+            string = "2800" 
+rows [503]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2800" 
+rows [504]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "384" 
+        cells [8]:
+            string = "2110" 
+        cells [9]:
+            string = "2620" 
+rows [505]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1920" 
+        cells [9]:
+            string = "2540" 
+rows [506]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "551" 
+        cells [8]:
+            string = "1788" 
+        cells [9]:
+            string = "2450" 
+rows [507]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "628" 
+        cells [8]:
+            string = "1837" 
+        cells [9]:
+            string = "2570" 
+rows [508]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "622" 
+        cells [8]:
+            string = "1890" 
+        cells [9]:
+            string = "2560" 
+rows [509]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "628" 
+        cells [8]:
+            string = "1254" 
+        cells [9]:
+            string = "2470" 
+rows [510]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "617" 
+        cells [8]:
+            string = "1255" 
+        cells [9]:
+            string = "2480" 
+rows [511]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1072" 
+        cells [9]:
+            string = "2660" 
+rows [512]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "103" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2530" 
+rows [513]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "700" 
+        cells [9]:
+            string = "2650" 
+rows [514]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "756" 
+        cells [9]:
+            string = "2540" 
+rows [515]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "465" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "2440" 
+rows [516]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "462" 
+        cells [8]:
+            string = "976" 
+        cells [9]:
+            string = "2450" 
+rows [517]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "324" 
+        cells [8]:
+            string = "708" 
+        cells [9]:
+            string = "2440" 
+rows [518]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "387" 
+        cells [8]:
+            string = "786" 
+        cells [9]:
+            string = "2518" 
+rows [519]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "488" 
+        cells [8]:
+            string = "1468" 
+        cells [9]:
+            string = "1712" 
+rows [520]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "26" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "472" 
+        cells [8]:
+            string = "1465" 
+        cells [9]:
+            string = "1725" 
+rows [521]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "275" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2800" 
+rows [522]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "2020" 
+        cells [9]:
+            string = "2790" 
+rows [523]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "349" 
+        cells [8]:
+            string = "2030" 
+        cells [9]:
+            string = "2760" 
+rows [524]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "136" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "1940" 
+        cells [9]:
+            string = "2560" 
+rows [525]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "444" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2500" 
+rows [526]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2440" 
+rows [527]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "688" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "2300" 
+rows [528]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "122" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1570" 
+        cells [9]:
+            string = "2380" 
+rows [529]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "565" 
+        cells [8]:
+            string = "1157" 
+        cells [9]:
+            string = "2310" 
+rows [530]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2250" 
+rows [531]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "712" 
+        cells [8]:
+            string = "1024" 
+        cells [9]:
+            string = "2250" 
+rows [532]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2300" 
+rows [533]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "913" 
+        cells [9]:
+            string = "2360" 
+rows [534]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "126" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "890" 
+        cells [9]:
+            string = "2280" 
+rows [535]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "1028" 
+        cells [9]:
+            string = "2160" 
+rows [536]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2150" 
+rows [537]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "294" 
+        cells [8]:
+            string = "930" 
+        cells [9]:
+            string = "2050" 
+rows [538]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2160" 
+rows [539]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "1625" 
+rows [540]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "27" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "1520" 
+rows [541]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "2900" 
+rows [542]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "267" 
+        cells [8]:
+            string = "2230" 
+        cells [9]:
+            string = "3000" 
+rows [543]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2400" 
+rows [544]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2450" 
+rows [545]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "525" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2480" 
+rows [546]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "110" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2390" 
+rows [547]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "2400" 
+rows [548]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "2430" 
+rows [549]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "2300" 
+rows [550]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "575" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2240" 
+rows [551]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2340" 
+rows [552]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2470" 
+rows [553]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "810" 
+        cells [9]:
+            string = "2290" 
+rows [554]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "584" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2280" 
+rows [555]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "455" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2140" 
+rows [556]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "456" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2038" 
+rows [557]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "820" 
+        cells [9]:
+            string = "2130" 
+rows [558]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "366" 
+        cells [8]:
+            string = "772" 
+        cells [9]:
+            string = "2058" 
+rows [559]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "1870" 
+rows [560]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "28" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "118" 
+        cells [7]:
+            string = "472" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "1840" 
+rows [561]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "333" 
+        cells [8]:
+            string = "2305" 
+        cells [9]:
+            string = "3200" 
+rows [562]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "326" 
+        cells [8]:
+            string = "2260" 
+        cells [9]:
+            string = "3030" 
+rows [563]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "375" 
+        cells [8]:
+            string = "2188" 
+        cells [9]:
+            string = "2750" 
+rows [564]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2150" 
+        cells [9]:
+            string = "2680" 
+rows [565]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2480" 
+rows [566]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2340" 
+rows [567]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2450" 
+rows [568]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "123" 
+        cells [7]:
+            string = "615" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "2220" 
+rows [569]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "583" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2360" 
+rows [570]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "608" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2700" 
+rows [571]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "777" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2600" 
+rows [572]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1175" 
+        cells [9]:
+            string = "2820" 
+rows [573]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "105" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "891" 
+        cells [9]:
+            string = "2519" 
+rows [574]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "572" 
+        cells [8]:
+            string = "924" 
+        cells [9]:
+            string = "2660" 
+rows [575]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "438" 
+        cells [8]:
+            string = "975" 
+        cells [9]:
+            string = "2300" 
+rows [576]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "938" 
+        cells [9]:
+            string = "2300" 
+rows [577]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "333" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2130" 
+rows [578]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2150" 
+rows [579]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "1870" 
+rows [580]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "29" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "127" 
+        cells [7]:
+            string = "483" 
+        cells [8]:
+            string = "1335" 
+        cells [9]:
+            string = "1844" 
+rows [581]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "166" 
+        cells [7]:
+            string = "267" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2940" 
+rows [582]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "156" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2900" 
+rows [583]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "154" 
+        cells [7]:
+            string = "431" 
+        cells [8]:
+            string = "2040" 
+        cells [9]:
+            string = "2460" 
+rows [584]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "155" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "2010" 
+        cells [9]:
+            string = "2400" 
+rows [585]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "565" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2500" 
+rows [586]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2450" 
+rows [587]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2570" 
+rows [588]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2460" 
+rows [589]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "157" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "2200" 
+rows [590]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "186" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2280" 
+rows [591]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1048" 
+        cells [9]:
+            string = "2450" 
+rows [592]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "155" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1130" 
+        cells [9]:
+            string = "2320" 
+rows [593]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2400" 
+rows [594]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "178" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "890" 
+        cells [9]:
+            string = "2280" 
+rows [595]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "448" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2200" 
+rows [596]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "196" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2180" 
+rows [597]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "333" 
+        cells [8]:
+            string = "835" 
+        cells [9]:
+            string = "2170" 
+rows [598]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "198" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2170" 
+rows [599]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "163" 
+        cells [7]:
+            string = "488" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "1600" 
+rows [600]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "30" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "163" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1380" 
+        cells [9]:
+            string = "1620" 
+rows [601]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "312" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "2900" 
+rows [602]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "3000" 
+rows [603]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2620" 
+rows [604]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1960" 
+        cells [9]:
+            string = "2600" 
+rows [605]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2620" 
+rows [606]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "111" 
+        cells [7]:
+            string = "555" 
+        cells [8]:
+            string = "1870" 
+        cells [9]:
+            string = "2540" 
+rows [607]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "697" 
+        cells [8]:
+            string = "1610" 
+        cells [9]:
+            string = "2540" 
+rows [608]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "684" 
+        cells [8]:
+            string = "1634" 
+        cells [9]:
+            string = "2510" 
+rows [609]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "633" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2530" 
+rows [610]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1213" 
+        cells [9]:
+            string = "2460" 
+rows [611]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1203" 
+        cells [9]:
+            string = "2700" 
+rows [612]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "107" 
+        cells [7]:
+            string = "752" 
+        cells [8]:
+            string = "1125" 
+        cells [9]:
+            string = "2620" 
+rows [613]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "108" 
+        cells [7]:
+            string = "507" 
+        cells [8]:
+            string = "755" 
+        cells [9]:
+            string = "2420" 
+rows [614]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "116" 
+        cells [7]:
+            string = "538" 
+        cells [8]:
+            string = "816" 
+        cells [9]:
+            string = "2450" 
+rows [615]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "114" 
+        cells [7]:
+            string = "456" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2300" 
+rows [616]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "120" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2160" 
+rows [617]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "123" 
+        cells [7]:
+            string = "344" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2150" 
+rows [618]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2250" 
+rows [619]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "112" 
+        cells [7]:
+            string = "539" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "1800" 
+rows [620]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "31" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "549" 
+        cells [8]:
+            string = "1353" 
+        cells [9]:
+            string = "1728" 
+rows [621]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "292" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3150" 
+rows [622]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "266" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "3100" 
+rows [623]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "372" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2640" 
+rows [624]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "2130" 
+        cells [9]:
+            string = "2610" 
+rows [625]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "574" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2260" 
+rows [626]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "563" 
+        cells [8]:
+            string = "1960" 
+        cells [9]:
+            string = "2450" 
+rows [627]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "1738" 
+        cells [9]:
+            string = "2400" 
+rows [628]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "663" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2400" 
+rows [629]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "137" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "2180" 
+rows [630]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "625" 
+        cells [8]:
+            string = "1312" 
+        cells [9]:
+            string = "2250" 
+rows [631]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "735" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "2100" 
+rows [632]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "117" 
+        cells [7]:
+            string = "713" 
+        cells [8]:
+            string = "1180" 
+        cells [9]:
+            string = "2200" 
+rows [633]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "625" 
+        cells [8]:
+            string = "875" 
+        cells [9]:
+            string = "2180" 
+rows [634]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "115" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2250" 
+rows [635]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2000" 
+rows [636]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2100" 
+rows [637]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2200" 
+rows [638]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "918" 
+        cells [9]:
+            string = "2100" 
+rows [639]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "554" 
+        cells [8]:
+            string = "1480" 
+        cells [9]:
+            string = "1800" 
+rows [640]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "32" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "128" 
+        cells [7]:
+            string = "484" 
+        cells [8]:
+            string = "1505" 
+        cells [9]:
+            string = "1890" 
+rows [641]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "286" 
+        cells [8]:
+            string = "2415" 
+        cells [9]:
+            string = "2860" 
+rows [642]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2415" 
+        cells [9]:
+            string = "2860" 
+rows [643]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "140" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2500" 
+rows [644]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "407" 
+        cells [8]:
+            string = "2095" 
+        cells [9]:
+            string = "2620" 
+rows [645]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "125" 
+        cells [7]:
+            string = "525" 
+        cells [8]:
+            string = "1988" 
+        cells [9]:
+            string = "2610" 
+rows [646]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "144" 
+        cells [7]:
+            string = "553" 
+        cells [8]:
+            string = "1935" 
+        cells [9]:
+            string = "2530" 
+rows [647]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1773" 
+        cells [9]:
+            string = "2490" 
+rows [648]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "133" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2560" 
+rows [649]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "672" 
+        cells [8]:
+            string = "1272" 
+        cells [9]:
+            string = "2640" 
+rows [650]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "146" 
+        cells [7]:
+            string = "658" 
+        cells [8]:
+            string = "1241" 
+        cells [9]:
+            string = "2560" 
+rows [651]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "130" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2640" 
+rows [652]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "131" 
+        cells [7]:
+            string = "788" 
+        cells [8]:
+            string = "1115" 
+        cells [9]:
+            string = "2645" 
+rows [653]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "138" 
+        cells [7]:
+            string = "633" 
+        cells [8]:
+            string = "891" 
+        cells [9]:
+            string = "2500" 
+rows [654]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "935" 
+        cells [9]:
+            string = "2550" 
+rows [655]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1102" 
+        cells [9]:
+            string = "2420" 
+rows [656]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "154" 
+        cells [7]:
+            string = "492" 
+        cells [8]:
+            string = "1077" 
+        cells [9]:
+            string = "2306" 
+rows [657]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2240" 
+rows [658]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2290" 
+rows [659]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "143" 
+        cells [7]:
+            string = "543" 
+        cells [8]:
+            string = "1310" 
+        cells [9]:
+            string = "1643" 
+rows [660]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "m" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "33" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "145" 
+        cells [7]:
+            string = "508" 
+        cells [8]:
+            string = "1309" 
+        cells [9]:
+            string = "1600" 
+rows [661]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "2670" 
+        cells [9]:
+            string = "3100" 
+rows [662]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3060" 
+rows [663]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "468" 
+        cells [8]:
+            string = "2330" 
+        cells [9]:
+            string = "2930" 
+rows [664]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "2950" 
+rows [665]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2880" 
+rows [666]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "191" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "3040" 
+rows [667]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2810" 
+rows [668]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1920" 
+        cells [9]:
+            string = "2850" 
+rows [669]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "227" 
+        cells [7]:
+            string = "635" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "3250" 
+rows [670]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "3100" 
+rows [671]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "880" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2870" 
+rows [672]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2880" 
+rows [673]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "207" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "830" 
+        cells [9]:
+            string = "3300" 
+rows [674]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "3130" 
+rows [675]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "3040" 
+rows [676]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "3190" 
+rows [677]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "955" 
+        cells [9]:
+            string = "2960" 
+rows [678]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "395" 
+        cells [8]:
+            string = "810" 
+        cells [9]:
+            string = "2900" 
+rows [679]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2100" 
+rows [680]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "34" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2100" 
+rows [681]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3550" 
+rows [682]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3350" 
+rows [683]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3220" 
+rows [684]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "3240" 
+rows [685]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3200" 
+rows [686]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3170" 
+rows [687]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "2180" 
+        cells [9]:
+            string = "2850" 
+rows [688]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "195" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "2120" 
+        cells [9]:
+            string = "3070" 
+rows [689]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2900" 
+rows [690]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2830" 
+rows [691]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2620" 
+rows [692]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "880" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2850" 
+rows [693]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "228" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2830" 
+rows [694]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "880" 
+        cells [9]:
+            string = "2850" 
+rows [695]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2750" 
+rows [696]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2720" 
+rows [697]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "2720" 
+rows [698]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2700" 
+rows [699]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1560" 
+        cells [9]:
+            string = "1750" 
+rows [700]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "35" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "1750" 
+rows [701]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3020" 
+rows [702]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "215" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2630" 
+        cells [9]:
+            string = "3240" 
+rows [703]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2950" 
+rows [704]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2980" 
+rows [705]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "207" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "2120" 
+        cells [9]:
+            string = "2900" 
+rows [706]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "221" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2900" 
+rows [707]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "1830" 
+        cells [9]:
+            string = "2820" 
+rows [708]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "204" 
+        cells [7]:
+            string = "980" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2820" 
+rows [709]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "2720" 
+rows [710]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "2750" 
+rows [711]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2600" 
+rows [712]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "870" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2740" 
+rows [713]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2710" 
+rows [714]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2700" 
+rows [715]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2780" 
+rows [716]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2740" 
+rows [717]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2500" 
+rows [718]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2740" 
+rows [719]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "1720" 
+rows [720]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "36" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1560" 
+        cells [9]:
+            string = "1900" 
+rows [721]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "294" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3100" 
+rows [722]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "2880" 
+        cells [9]:
+            string = "3160" 
+rows [723]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "202" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2430" 
+        cells [9]:
+            string = "3030" 
+rows [724]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "2930" 
+rows [725]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2180" 
+        cells [9]:
+            string = "2770" 
+rows [726]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "2770" 
+rows [727]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1970" 
+        cells [9]:
+            string = "2620" 
+rows [728]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2700" 
+rows [729]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2900" 
+rows [730]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "201" 
+        cells [7]:
+            string = "666" 
+        cells [8]:
+            string = "1206" 
+        cells [9]:
+            string = "2900" 
+rows [731]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2920" 
+rows [732]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "2850" 
+rows [733]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "760" 
+        cells [9]:
+            string = "2800" 
+rows [734]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "207" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "770" 
+        cells [9]:
+            string = "3000" 
+rows [735]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "215" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1075" 
+        cells [9]:
+            string = "2580" 
+rows [736]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "213" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2700" 
+rows [737]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2550" 
+rows [738]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "213" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2500" 
+rows [739]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "1930" 
+rows [740]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "37" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1740" 
+        cells [9]:
+            string = "1960" 
+rows [741]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3160" 
+rows [742]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "338" 
+        cells [8]:
+            string = "2870" 
+        cells [9]:
+            string = "3300" 
+rows [743]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2540" 
+        cells [9]:
+            string = "3200" 
+rows [744]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2680" 
+        cells [9]:
+            string = "3000" 
+rows [745]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "518" 
+        cells [8]:
+            string = "2470" 
+        cells [9]:
+            string = "3200" 
+rows [746]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "3150" 
+rows [747]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "171" 
+        cells [7]:
+            string = "773" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2870" 
+rows [748]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "875" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2970" 
+rows [749]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "183" 
+        cells [7]:
+            string = "733" 
+        cells [8]:
+            string = "1468" 
+        cells [9]:
+            string = "2700" 
+rows [750]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2900" 
+rows [751]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "178" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2740" 
+rows [752]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "735" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2850" 
+rows [753]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "160" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2850" 
+rows [754]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "536" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2850" 
+rows [755]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "424" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2780" 
+rows [756]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2670" 
+rows [757]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "770" 
+        cells [9]:
+            string = "2900" 
+rows [758]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2780" 
+rows [759]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "177" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "2120" 
+        cells [9]:
+            string = "2480" 
+rows [760]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "38" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "197" 
+        cells [7]:
+            string = "493" 
+        cells [8]:
+            string = "1930" 
+        cells [9]:
+            string = "2300" 
+rows [761]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "325" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3100" 
+rows [762]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3225" 
+rows [763]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "2580" 
+        cells [9]:
+            string = "3000" 
+rows [764]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3200" 
+rows [765]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "2330" 
+        cells [9]:
+            string = "2800" 
+rows [766]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3000" 
+rows [767]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "171" 
+        cells [7]:
+            string = "806" 
+        cells [8]:
+            string = "1970" 
+        cells [9]:
+            string = "2600" 
+rows [768]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "825" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2550" 
+rows [769]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "186" 
+        cells [7]:
+            string = "708" 
+        cells [8]:
+            string = "1485" 
+        cells [9]:
+            string = "2760" 
+rows [770]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "676" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2590" 
+rows [771]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2800" 
+rows [772]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "714" 
+        cells [8]:
+            string = "1154" 
+        cells [9]:
+            string = "2850" 
+rows [773]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "800" 
+        cells [9]:
+            string = "2780" 
+rows [774]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "485" 
+        cells [8]:
+            string = "810" 
+        cells [9]:
+            string = "2750" 
+rows [775]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "2550" 
+rows [776]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "467" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2450" 
+rows [777]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2350" 
+rows [778]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2400" 
+rows [779]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "193" 
+        cells [7]:
+            string = "524" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2130" 
+rows [780]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "39" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "507" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2380" 
+rows [781]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "3100" 
+        cells [9]:
+            string = "3400" 
+rows [782]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "3100" 
+        cells [9]:
+            string = "3500" 
+rows [783]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "428" 
+        cells [8]:
+            string = "2570" 
+        cells [9]:
+            string = "3000" 
+rows [784]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2640" 
+        cells [9]:
+            string = "3080" 
+rows [785]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "528" 
+        cells [8]:
+            string = "2540" 
+        cells [9]:
+            string = "3170" 
+rows [786]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "2520" 
+        cells [9]:
+            string = "3200" 
+rows [787]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "940" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "2760" 
+rows [788]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2920" 
+rows [789]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "204" 
+        cells [7]:
+            string = "816" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "2700" 
+rows [790]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "858" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2700" 
+rows [791]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "960" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "3000" 
+rows [792]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "1040" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "3000" 
+rows [793]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "880" 
+        cells [9]:
+            string = "2500" 
+rows [794]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "574" 
+        cells [8]:
+            string = "890" 
+        cells [9]:
+            string = "2510" 
+rows [795]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "466" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "2750" 
+rows [796]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "466" 
+        cells [8]:
+            string = "1165" 
+        cells [9]:
+            string = "2800" 
+rows [797]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2800" 
+rows [798]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "840" 
+        cells [9]:
+            string = "2750" 
+rows [799]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "432" 
+        cells [8]:
+            string = "1790" 
+        cells [9]:
+            string = "2060" 
+rows [800]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "40" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2320" 
+rows [801]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "337" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3300" 
+rows [802]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2720" 
+        cells [9]:
+            string = "3200" 
+rows [803]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "474" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "3095" 
+rows [804]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "475" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "3090" 
+rows [805]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "229" 
+        cells [7]:
+            string = "526" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "3090" 
+rows [806]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "3150" 
+rows [807]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "2185" 
+        cells [9]:
+            string = "2990" 
+rows [808]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "3020" 
+rows [809]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "675" 
+        cells [8]:
+            string = "1551" 
+        cells [9]:
+            string = "2923" 
+rows [810]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2900" 
+rows [811]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "845" 
+        cells [8]:
+            string = "1334" 
+        cells [9]:
+            string = "2890" 
+rows [812]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "888" 
+        cells [8]:
+            string = "1290" 
+        cells [9]:
+            string = "2800" 
+rows [813]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "631" 
+        cells [8]:
+            string = "923" 
+        cells [9]:
+            string = "2250" 
+rows [814]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "543" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2300" 
+rows [815]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "537" 
+        cells [8]:
+            string = "1360" 
+        cells [9]:
+            string = "2920" 
+rows [816]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1345" 
+        cells [9]:
+            string = "2680" 
+rows [817]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1180" 
+        cells [9]:
+            string = "2760" 
+rows [818]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "396" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2560" 
+rows [819]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1640" 
+        cells [9]:
+            string = "2250" 
+rows [820]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "41" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "489" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2090" 
+rows [821]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "225" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3900" 
+rows [822]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "230" 
+        cells [8]:
+            string = "2850" 
+        cells [9]:
+            string = "3800" 
+rows [823]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "429" 
+        cells [8]:
+            string = "2560" 
+        cells [9]:
+            string = "3200" 
+rows [824]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "2575" 
+        cells [9]:
+            string = "3100" 
+rows [825]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "579" 
+        cells [8]:
+            string = "2570" 
+        cells [9]:
+            string = "3300" 
+rows [826]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "536" 
+        cells [8]:
+            string = "2570" 
+        cells [9]:
+            string = "3100" 
+rows [827]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "823" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2870" 
+rows [828]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2900" 
+rows [829]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2750" 
+rows [830]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "738" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2820" 
+rows [831]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "3100" 
+rows [832]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "990" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "3100" 
+rows [833]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "579" 
+        cells [8]:
+            string = "856" 
+        cells [9]:
+            string = "2790" 
+rows [834]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "545" 
+        cells [8]:
+            string = "905" 
+        cells [9]:
+            string = "2750" 
+rows [835]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "2610" 
+rows [836]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "513" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2650" 
+rows [837]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "2500" 
+rows [838]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "405" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2500" 
+rows [839]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "466" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2260" 
+rows [840]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "42" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2220" 
+rows [841]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "3000" 
+        cells [9]:
+            string = "3840" 
+rows [842]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "325" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3500" 
+rows [843]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "3120" 
+rows [844]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "476" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3090" 
+rows [845]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3205" 
+rows [846]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "746" 
+        cells [8]:
+            string = "2290" 
+        cells [9]:
+            string = "3030" 
+rows [847]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "1008" 
+        cells [8]:
+            string = "1990" 
+        cells [9]:
+            string = "2870" 
+rows [848]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "1040" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2800" 
+rows [849]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "2860" 
+rows [850]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "1510" 
+        cells [9]:
+            string = "2840" 
+rows [851]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "1343" 
+        cells [9]:
+            string = "3018" 
+rows [852]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "592" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2600" 
+rows [853]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2920" 
+rows [854]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "229" 
+        cells [7]:
+            string = "687" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2780" 
+rows [855]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "512" 
+        cells [8]:
+            string = "1211" 
+        cells [9]:
+            string = "2630" 
+rows [856]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "467" 
+        cells [8]:
+            string = "1167" 
+        cells [9]:
+            string = "2595" 
+rows [857]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "875" 
+        cells [9]:
+            string = "2750" 
+rows [858]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "935" 
+        cells [9]:
+            string = "2710" 
+rows [859]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "622" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2070" 
+rows [860]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "43" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "652" 
+        cells [8]:
+            string = "1710" 
+        cells [9]:
+            string = "2043" 
+rows [861]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "255" 
+        cells [7]:
+            string = "275" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3310" 
+rows [862]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "245" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3300" 
+rows [863]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "534" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3250" 
+rows [864]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "264" 
+        cells [7]:
+            string = "528" 
+        cells [8]:
+            string = "2640" 
+        cells [9]:
+            string = "3370" 
+rows [865]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3250" 
+rows [866]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3000" 
+rows [867]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "1020" 
+        cells [8]:
+            string = "1900" 
+        cells [9]:
+            string = "2960" 
+rows [868]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "1005" 
+        cells [8]:
+            string = "2050" 
+        cells [9]:
+            string = "2870" 
+rows [869]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2850" 
+rows [870]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2750" 
+rows [871]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "978" 
+        cells [8]:
+            string = "1290" 
+        cells [9]:
+            string = "2840" 
+rows [872]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "246" 
+        cells [7]:
+            string = "935" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2730" 
+rows [873]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2750" 
+rows [874]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "632" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2850" 
+rows [875]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1170" 
+        cells [9]:
+            string = "2750" 
+rows [876]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "266" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2800" 
+rows [877]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "358" 
+        cells [8]:
+            string = "640" 
+        cells [9]:
+            string = "2560" 
+rows [878]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2500" 
+rows [879]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1560" 
+        cells [9]:
+            string = "1820" 
+rows [880]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "44" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "1750" 
+rows [881]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "236" 
+        cells [8]:
+            string = "2790" 
+        cells [9]:
+            string = "3760" 
+rows [882]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "242" 
+        cells [8]:
+            string = "2770" 
+        cells [9]:
+            string = "3800" 
+rows [883]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "444" 
+        cells [8]:
+            string = "2555" 
+        cells [9]:
+            string = "3110" 
+rows [884]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3120" 
+rows [885]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "226" 
+        cells [7]:
+            string = "634" 
+        cells [8]:
+            string = "2325" 
+        cells [9]:
+            string = "2940" 
+rows [886]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "608" 
+        cells [8]:
+            string = "2475" 
+        cells [9]:
+            string = "3100" 
+rows [887]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "1010" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2900" 
+rows [888]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "980" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "2920" 
+rows [889]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "818" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "2500" 
+rows [890]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2650" 
+rows [891]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2640" 
+rows [892]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2900" 
+rows [893]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "749" 
+        cells [9]:
+            string = "2640" 
+rows [894]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "567" 
+        cells [8]:
+            string = "752" 
+        cells [9]:
+            string = "2600" 
+rows [895]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "204" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1045" 
+        cells [9]:
+            string = "2504" 
+rows [896]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1105" 
+        cells [9]:
+            string = "2400" 
+rows [897]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2500" 
+rows [898]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2400" 
+rows [899]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "487" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "1780" 
+rows [900]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "45" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "467" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "1640" 
+rows [901]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "2920" 
+        cells [9]:
+            string = "3400" 
+rows [902]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2840" 
+        cells [9]:
+            string = "3300" 
+rows [903]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "257" 
+        cells [7]:
+            string = "514" 
+        cells [8]:
+            string = "2570" 
+        cells [9]:
+            string = "3070" 
+rows [904]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2680" 
+        cells [9]:
+            string = "3260" 
+rows [905]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "2495" 
+        cells [9]:
+            string = "3090" 
+rows [906]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3030" 
+rows [907]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "1020" 
+        cells [8]:
+            string = "2030" 
+        cells [9]:
+            string = "2700" 
+rows [908]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2770" 
+rows [909]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "788" 
+        cells [8]:
+            string = "1462" 
+        cells [9]:
+            string = "2920" 
+rows [910]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "736" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2900" 
+rows [911]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "987" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "2830" 
+rows [912]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "1009" 
+        cells [8]:
+            string = "1415" 
+        cells [9]:
+            string = "3080" 
+rows [913]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "226" 
+        cells [7]:
+            string = "672" 
+        cells [8]:
+            string = "1084" 
+        cells [9]:
+            string = "2495" 
+rows [914]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "209" 
+        cells [7]:
+            string = "627" 
+        cells [8]:
+            string = "1045" 
+        cells [9]:
+            string = "2504" 
+rows [915]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2450" 
+rows [916]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2880" 
+rows [917]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "2860" 
+rows [918]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "893" 
+        cells [9]:
+            string = "2920" 
+rows [919]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "246" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2020" 
+rows [920]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "46" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "585" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "1850" 
+rows [921]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "285" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3500" 
+rows [922]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3400" 
+rows [923]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "297" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "2670" 
+        cells [9]:
+            string = "3260" 
+rows [924]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2620" 
+        cells [9]:
+            string = "3380" 
+rows [925]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "173" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "3140" 
+rows [926]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "2340" 
+        cells [9]:
+            string = "3040" 
+rows [927]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "790" 
+        cells [8]:
+            string = "2180" 
+        cells [9]:
+            string = "3020" 
+rows [928]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "3020" 
+rows [929]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2750" 
+rows [930]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "2950" 
+rows [931]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "252" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "1290" 
+        cells [9]:
+            string = "2750" 
+rows [932]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "3110" 
+rows [933]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "175" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2750" 
+rows [934]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "3030" 
+rows [935]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2860" 
+rows [936]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2970" 
+rows [937]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "328" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "2630" 
+rows [938]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "2900" 
+rows [939]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "2480" 
+rows [940]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "47" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2350" 
+rows [941]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3120" 
+rows [942]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "238" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3120" 
+rows [943]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "2390" 
+        cells [9]:
+            string = "2950" 
+rows [944]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "3000" 
+rows [945]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "2520" 
+        cells [9]:
+            string = "2920" 
+rows [946]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "2440" 
+        cells [9]:
+            string = "2880" 
+rows [947]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "1110" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "2700" 
+rows [948]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "1070" 
+        cells [8]:
+            string = "1960" 
+        cells [9]:
+            string = "2750" 
+rows [949]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2600" 
+rows [950]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2670" 
+rows [951]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "150" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2930" 
+rows [952]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "2850" 
+rows [953]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "700" 
+        cells [9]:
+            string = "2930" 
+rows [954]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "720" 
+        cells [9]:
+            string = "2700" 
+rows [955]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "2820" 
+rows [956]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2680" 
+rows [957]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "196" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "760" 
+        cells [9]:
+            string = "2870" 
+rows [958]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "710" 
+        cells [9]:
+            string = "2760" 
+rows [959]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "182" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1780" 
+        cells [9]:
+            string = "2080" 
+rows [960]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "48" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "201" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2000" 
+rows [961]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "2980" 
+rows [962]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "304" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3050" 
+rows [963]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "444" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2740" 
+rows [964]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2090" 
+        cells [9]:
+            string = "2780" 
+rows [965]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "2830" 
+rows [966]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2700" 
+rows [967]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "845" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2300" 
+rows [968]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1724" 
+        cells [9]:
+            string = "2530" 
+rows [969]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1440" 
+        cells [9]:
+            string = "2380" 
+rows [970]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "191" 
+        cells [7]:
+            string = "707" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "2440" 
+rows [971]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2420" 
+rows [972]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "767" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2590" 
+rows [973]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2410" 
+rows [974]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2400" 
+rows [975]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "546" 
+        cells [8]:
+            string = "1090" 
+        cells [9]:
+            string = "2400" 
+rows [976]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "462" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2310" 
+rows [977]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "257" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "930" 
+        cells [9]:
+            string = "2260" 
+rows [978]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2300" 
+rows [979]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "1800" 
+rows [980]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "49" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "204" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "1560" 
+rows [981]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "406" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "2945" 
+rows [982]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "3100" 
+rows [983]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2800" 
+rows [984]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2305" 
+        cells [9]:
+            string = "2835" 
+rows [985]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "190" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2720" 
+rows [986]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "207" 
+        cells [7]:
+            string = "538" 
+        cells [8]:
+            string = "2175" 
+        cells [9]:
+            string = "2880" 
+rows [987]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "189" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1853" 
+        cells [9]:
+            string = "2685" 
+rows [988]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "193" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2620" 
+rows [989]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2560" 
+rows [990]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2420" 
+rows [991]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "915" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2530" 
+rows [992]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "723" 
+        cells [8]:
+            string = "1196" 
+        cells [9]:
+            string = "2600" 
+rows [993]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "192" 
+        cells [7]:
+            string = "575" 
+        cells [8]:
+            string = "1073" 
+        cells [9]:
+            string = "2490" 
+rows [994]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2600" 
+rows [995]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "202" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2420" 
+rows [996]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "468" 
+        cells [8]:
+            string = "1275" 
+        cells [9]:
+            string = "2550" 
+rows [997]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "207" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2470" 
+rows [998]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2460" 
+rows [999]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "1900" 
+rows [1000]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "50" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "514" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "1955" 
+rows [1001]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "2880" 
+        cells [9]:
+            string = "3360" 
+rows [1002]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "2820" 
+        cells [9]:
+            string = "3300" 
+rows [1003]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "514" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "2930" 
+rows [1004]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "473" 
+        cells [8]:
+            string = "2660" 
+        cells [9]:
+            string = "2970" 
+rows [1005]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "223" 
+        cells [7]:
+            string = "567" 
+        cells [8]:
+            string = "2460" 
+        cells [9]:
+            string = "3122" 
+rows [1006]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "224" 
+        cells [7]:
+            string = "521" 
+        cells [8]:
+            string = "2460" 
+        cells [9]:
+            string = "2920" 
+rows [1007]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "218" 
+        cells [7]:
+            string = "808" 
+        cells [8]:
+            string = "2070" 
+        cells [9]:
+            string = "2880" 
+rows [1008]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "678" 
+        cells [8]:
+            string = "2420" 
+        cells [9]:
+            string = "3080" 
+rows [1009]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "2700" 
+rows [1010]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "772" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2660" 
+rows [1011]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "183" 
+        cells [7]:
+            string = "843" 
+        cells [8]:
+            string = "1190" 
+        cells [9]:
+            string = "2860" 
+rows [1012]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2780" 
+rows [1013]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "623" 
+        cells [8]:
+            string = "1022" 
+        cells [9]:
+            string = "2700" 
+rows [1014]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "594" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "2640" 
+rows [1015]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2820" 
+rows [1016]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "484" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2640" 
+rows [1017]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "933" 
+        cells [9]:
+            string = "2520" 
+rows [1018]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "325" 
+        cells [8]:
+            string = "750" 
+        cells [9]:
+            string = "2500" 
+rows [1019]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "2050" 
+rows [1020]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "51" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "466" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "1865" 
+rows [1021]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3100" 
+rows [1022]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "178" 
+        cells [7]:
+            string = "356" 
+        cells [8]:
+            string = "2755" 
+        cells [9]:
+            string = "3200" 
+rows [1023]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "388" 
+        cells [8]:
+            string = "2622" 
+        cells [9]:
+            string = "3050" 
+rows [1024]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "426" 
+        cells [8]:
+            string = "2460" 
+        cells [9]:
+            string = "3040" 
+rows [1025]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "592" 
+        cells [8]:
+            string = "2242" 
+        cells [9]:
+            string = "2765" 
+rows [1026]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "191" 
+        cells [7]:
+            string = "535" 
+        cells [8]:
+            string = "2290" 
+        cells [9]:
+            string = "2870" 
+rows [1027]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "2060" 
+        cells [9]:
+            string = "2770" 
+rows [1028]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "162" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "2110" 
+        cells [9]:
+            string = "2618" 
+rows [1029]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "618" 
+        cells [8]:
+            string = "1518" 
+        cells [9]:
+            string = "2700" 
+rows [1030]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "183" 
+        cells [7]:
+            string = "624" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "2660" 
+rows [1031]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "163" 
+        cells [7]:
+            string = "766" 
+        cells [8]:
+            string = "1180" 
+        cells [9]:
+            string = "2340" 
+rows [1032]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "167" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1065" 
+        cells [9]:
+            string = "2640" 
+rows [1033]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "170" 
+        cells [7]:
+            string = "595" 
+        cells [8]:
+            string = "918" 
+        cells [9]:
+            string = "2600" 
+rows [1034]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "176" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "985" 
+        cells [9]:
+            string = "2630" 
+rows [1035]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2600" 
+rows [1036]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "2640" 
+rows [1037]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "375" 
+        cells [8]:
+            string = "1124" 
+        cells [9]:
+            string = "2685" 
+rows [1038]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "375" 
+        cells [8]:
+            string = "1143" 
+        cells [9]:
+            string = "2700" 
+rows [1039]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "180" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "1565" 
+        cells [9]:
+            string = "1835" 
+rows [1040]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "52" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "183" 
+        cells [7]:
+            string = "513" 
+        cells [8]:
+            string = "1578" 
+        cells [9]:
+            string = "1830" 
+rows [1041]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "357" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3360" 
+rows [1042]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2860" 
+        cells [9]:
+            string = "3350" 
+rows [1043]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "3060" 
+rows [1044]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "292" 
+        cells [7]:
+            string = "465" 
+        cells [8]:
+            string = "2598" 
+        cells [9]:
+            string = "3060" 
+rows [1045]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "2980" 
+rows [1046]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "737" 
+        cells [8]:
+            string = "2325" 
+        cells [9]:
+            string = "3100" 
+rows [1047]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "960" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "3000" 
+rows [1048]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "1030" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "3260" 
+rows [1049]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "920" 
+        cells [8]:
+            string = "1512" 
+        cells [9]:
+            string = "2950" 
+rows [1050]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "910" 
+        cells [8]:
+            string = "1688" 
+        cells [9]:
+            string = "3050" 
+rows [1051]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "990" 
+        cells [8]:
+            string = "1237" 
+        cells [9]:
+            string = "2360" 
+rows [1052]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "987" 
+        cells [8]:
+            string = "1172" 
+        cells [9]:
+            string = "3180" 
+rows [1053]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "587" 
+        cells [8]:
+            string = "1068" 
+        cells [9]:
+            string = "3270" 
+rows [1054]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "293" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "990" 
+        cells [9]:
+            string = "3150" 
+rows [1055]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "3190" 
+rows [1056]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1415" 
+        cells [9]:
+            string = "3130" 
+rows [1057]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1045" 
+        cells [9]:
+            string = "3060" 
+rows [1058]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "3030" 
+rows [1059]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2250" 
+rows [1060]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "53" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "504" 
+        cells [8]:
+            string = "1820" 
+        cells [9]:
+            string = "2290" 
+rows [1061]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "240" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3700" 
+rows [1062]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "220" 
+        cells [8]:
+            string = "2850" 
+        cells [9]:
+            string = "3800" 
+rows [1063]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "228" 
+        cells [7]:
+            string = "319" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3020" 
+rows [1064]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "324" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3010" 
+rows [1065]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "616" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "2900" 
+rows [1066]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "615" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2800" 
+rows [1067]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "2120" 
+        cells [9]:
+            string = "2600" 
+rows [1068]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "2680" 
+rows [1069]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "221" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1520" 
+        cells [9]:
+            string = "2380" 
+rows [1070]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "2400" 
+rows [1071]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "199" 
+        cells [7]:
+            string = "995" 
+        cells [8]:
+            string = "1392" 
+        cells [9]:
+            string = "2290" 
+rows [1072]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2440" 
+rows [1073]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "656" 
+        cells [8]:
+            string = "944" 
+        cells [9]:
+            string = "2250" 
+rows [1074]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "960" 
+        cells [9]:
+            string = "2380" 
+rows [1075]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "223" 
+        cells [7]:
+            string = "335" 
+        cells [8]:
+            string = "1049" 
+        cells [9]:
+            string = "2470" 
+rows [1076]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1009" 
+        cells [9]:
+            string = "2300" 
+rows [1077]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "329" 
+        cells [8]:
+            string = "877" 
+        cells [9]:
+            string = "2550" 
+rows [1078]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2530" 
+rows [1079]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1380" 
+        cells [9]:
+            string = "1560" 
+rows [1080]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "54" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "201" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "1480" 
+rows [1081]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "286" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3550" 
+rows [1082]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "241" 
+        cells [7]:
+            string = "289" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3400" 
+rows [1083]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "383" 
+        cells [8]:
+            string = "2420" 
+        cells [9]:
+            string = "3080" 
+rows [1084]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "384" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "3050" 
+rows [1085]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "209" 
+        cells [7]:
+            string = "418" 
+        cells [8]:
+            string = "2430" 
+        cells [9]:
+            string = "3110" 
+rows [1086]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3050" 
+rows [1087]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "187" 
+        cells [7]:
+            string = "861" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2800" 
+rows [1088]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "224" 
+        cells [7]:
+            string = "896" 
+        cells [8]:
+            string = "2040" 
+        cells [9]:
+            string = "3000" 
+rows [1089]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "218" 
+        cells [7]:
+            string = "654" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2800" 
+rows [1090]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1195" 
+        cells [9]:
+            string = "2770" 
+rows [1091]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1103" 
+        cells [9]:
+            string = "2700" 
+rows [1092]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "806" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2850" 
+rows [1093]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "202" 
+        cells [7]:
+            string = "606" 
+        cells [8]:
+            string = "910" 
+        cells [9]:
+            string = "2900" 
+rows [1094]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "201" 
+        cells [7]:
+            string = "583" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "2840" 
+rows [1095]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2650" 
+rows [1096]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2560" 
+rows [1097]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "308" 
+        cells [8]:
+            string = "1025" 
+        cells [9]:
+            string = "2650" 
+rows [1098]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "329" 
+        cells [8]:
+            string = "1151" 
+        cells [9]:
+            string = "2560" 
+rows [1099]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "213" 
+        cells [7]:
+            string = "533" 
+        cells [8]:
+            string = "1425" 
+        cells [9]:
+            string = "1830" 
+rows [1100]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "55" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "535" 
+        cells [8]:
+            string = "1412" 
+        cells [9]:
+            string = "1800" 
+rows [1101]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "307" 
+        cells [8]:
+            string = "2670" 
+        cells [9]:
+            string = "3150" 
+rows [1102]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3250" 
+rows [1103]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "231" 
+        cells [7]:
+            string = "417" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3000" 
+rows [1104]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "239" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "2200" 
+        cells [9]:
+            string = "2910" 
+rows [1105]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "644" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "3000" 
+rows [1106]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "224" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2880" 
+rows [1107]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "224" 
+        cells [7]:
+            string = "784" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2750" 
+rows [1108]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "2890" 
+rows [1109]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "765" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "2700" 
+rows [1110]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "221" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1390" 
+        cells [9]:
+            string = "2790" 
+rows [1111]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "834" 
+        cells [8]:
+            string = "1282" 
+        cells [9]:
+            string = "2800" 
+rows [1112]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1270" 
+        cells [9]:
+            string = "2760" 
+rows [1113]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "229" 
+        cells [7]:
+            string = "688" 
+        cells [8]:
+            string = "1029" 
+        cells [9]:
+            string = "2750" 
+rows [1114]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1040" 
+        cells [9]:
+            string = "2640" 
+rows [1115]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "251" 
+        cells [7]:
+            string = "427" 
+        cells [8]:
+            string = "1506" 
+        cells [9]:
+            string = "2640" 
+rows [1116]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "2610" 
+rows [1117]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "378" 
+        cells [8]:
+            string = "1416" 
+        cells [9]:
+            string = "2580" 
+rows [1118]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "239" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "2610" 
+rows [1119]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "1909" 
+rows [1120]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "56" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "1800" 
+rows [1121]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "384" 
+        cells [8]:
+            string = "2860" 
+        cells [9]:
+            string = "3210" 
+rows [1122]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "375" 
+        cells [8]:
+            string = "3000" 
+        cells [9]:
+            string = "3400" 
+rows [1123]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2665" 
+        cells [9]:
+            string = "3140" 
+rows [1124]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "467" 
+        cells [8]:
+            string = "2680" 
+        cells [9]:
+            string = "3150" 
+rows [1125]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "229" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "2860" 
+rows [1126]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "2530" 
+        cells [9]:
+            string = "3030" 
+rows [1127]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2560" 
+        cells [9]:
+            string = "3150" 
+rows [1128]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "675" 
+        cells [8]:
+            string = "2510" 
+        cells [9]:
+            string = "3145" 
+rows [1129]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "768" 
+        cells [8]:
+            string = "1440" 
+        cells [9]:
+            string = "2855" 
+rows [1130]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "794" 
+        cells [8]:
+            string = "1447" 
+        cells [9]:
+            string = "2920" 
+rows [1131]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "227" 
+        cells [7]:
+            string = "978" 
+        cells [8]:
+            string = "1362" 
+        cells [9]:
+            string = "2724" 
+rows [1132]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "933" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "2610" 
+rows [1133]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2810" 
+rows [1134]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1090" 
+        cells [9]:
+            string = "2840" 
+rows [1135]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1215" 
+        cells [9]:
+            string = "2870" 
+rows [1136]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "239" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1240" 
+        cells [9]:
+            string = "2860" 
+rows [1137]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2820" 
+rows [1138]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "272" 
+        cells [7]:
+            string = "378" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "2990" 
+rows [1139]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "1700" 
+rows [1140]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "57" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "493" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "1775" 
+rows [1141]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "268" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3200" 
+rows [1142]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3050" 
+rows [1143]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "2940" 
+rows [1144]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "251" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "2260" 
+        cells [9]:
+            string = "2980" 
+rows [1145]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "246" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "2220" 
+        cells [9]:
+            string = "2900" 
+rows [1146]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "2250" 
+        cells [9]:
+            string = "2960" 
+rows [1147]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1970" 
+        cells [9]:
+            string = "2890" 
+rows [1148]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "244" 
+        cells [7]:
+            string = "980" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "2920" 
+rows [1149]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "251" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "2760" 
+rows [1150]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "2800" 
+rows [1151]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1130" 
+        cells [9]:
+            string = "3160" 
+rows [1152]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "2940" 
+rows [1153]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "870" 
+        cells [9]:
+            string = "2680" 
+rows [1154]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "2770" 
+rows [1155]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1225" 
+        cells [9]:
+            string = "2500" 
+rows [1156]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "264" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "2560" 
+rows [1157]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "1290" 
+        cells [9]:
+            string = "2530" 
+rows [1158]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "269" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2640" 
+rows [1159]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "2000" 
+rows [1160]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "58" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "254" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "1520" 
+        cells [9]:
+            string = "1950" 
+rows [1161]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2690" 
+        cells [9]:
+            string = "3040" 
+rows [1162]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "261" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2740" 
+        cells [9]:
+            string = "2980" 
+rows [1163]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3400" 
+rows [1164]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3240" 
+rows [1165]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3100" 
+rows [1166]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "2340" 
+        cells [9]:
+            string = "3120" 
+rows [1167]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "2070" 
+        cells [9]:
+            string = "2880" 
+rows [1168]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "890" 
+        cells [8]:
+            string = "1920" 
+        cells [9]:
+            string = "2710" 
+rows [1169]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "257" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "2840" 
+rows [1170]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "257" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "2860" 
+rows [1171]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "790" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3080" 
+rows [1172]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "241" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2960" 
+rows [1173]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "408" 
+        cells [8]:
+            string = "695" 
+        cells [9]:
+            string = "3040" 
+rows [1174]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "246" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "590" 
+        cells [9]:
+            string = "3100" 
+rows [1175]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "251" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2520" 
+rows [1176]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2750" 
+rows [1177]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "419" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2850" 
+rows [1178]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "2800" 
+rows [1179]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "1900" 
+rows [1180]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "59" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "255" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "1890" 
+rows [1181]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "208" 
+        cells [7]:
+            string = "270" 
+        cells [8]:
+            string = "2820" 
+        cells [9]:
+            string = "3450" 
+rows [1182]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "250" 
+        cells [8]:
+            string = "2880" 
+        cells [9]:
+            string = "3350" 
+rows [1183]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "2530" 
+        cells [9]:
+            string = "3060" 
+rows [1184]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "3120" 
+rows [1185]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "3020" 
+rows [1186]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "2430" 
+        cells [9]:
+            string = "3040" 
+rows [1187]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "2090" 
+        cells [9]:
+            string = "3000" 
+rows [1188]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "2870" 
+rows [1189]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "2800" 
+rows [1190]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1530" 
+        cells [9]:
+            string = "2780" 
+rows [1191]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "195" 
+        cells [7]:
+            string = "920" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "2550" 
+rows [1192]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "920" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "2690" 
+rows [1193]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "2420" 
+rows [1194]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2780" 
+rows [1195]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2900" 
+rows [1196]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "237" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1190" 
+        cells [9]:
+            string = "2800" 
+rows [1197]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "980" 
+        cells [9]:
+            string = "3100" 
+rows [1198]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "188" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "3050" 
+rows [1199]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1670" 
+        cells [9]:
+            string = "2050" 
+rows [1200]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "60" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1720" 
+        cells [9]:
+            string = "1900" 
+rows [1201]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "2740" 
+        cells [9]:
+            string = "3200" 
+rows [1202]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "262" 
+        cells [8]:
+            string = "2680" 
+        cells [9]:
+            string = "3170" 
+rows [1203]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "2310" 
+        cells [9]:
+            string = "3020" 
+rows [1204]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "472" 
+        cells [8]:
+            string = "2270" 
+        cells [9]:
+            string = "2950" 
+rows [1205]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1980" 
+        cells [9]:
+            string = "2920" 
+rows [1206]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2110" 
+        cells [9]:
+            string = "2940" 
+rows [1207]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "194" 
+        cells [7]:
+            string = "810" 
+        cells [8]:
+            string = "1860" 
+        cells [9]:
+            string = "2620" 
+rows [1208]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "234" 
+        cells [7]:
+            string = "890" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2700" 
+rows [1209]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "2780" 
+rows [1210]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "2940" 
+rows [1211]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1020" 
+        cells [9]:
+            string = "2650" 
+rows [1212]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1095" 
+        cells [9]:
+            string = "2610" 
+rows [1213]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2760" 
+rows [1214]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "253" 
+        cells [7]:
+            string = "455" 
+        cells [8]:
+            string = "810" 
+        cells [9]:
+            string = "2750" 
+rows [1215]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "282" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "2530" 
+rows [1216]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2450" 
+rows [1217]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "290" 
+        cells [8]:
+            string = "670" 
+        cells [9]:
+            string = "2380" 
+rows [1218]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "630" 
+        cells [9]:
+            string = "2460" 
+rows [1219]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2040" 
+rows [1220]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "w" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "61" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2190" 
+rows [1221]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "228" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "3300" 
+        cells [9]:
+            string = "3950" 
+rows [1222]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "3400" 
+        cells [9]:
+            string = "3850" 
+rows [1223]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2550" 
+        cells [9]:
+            string = "4000" 
+rows [1224]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "4100" 
+rows [1225]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3600" 
+rows [1226]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3850" 
+rows [1227]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3900" 
+rows [1228]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "4050" 
+rows [1229]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "1750" 
+        cells [9]:
+            string = "3550" 
+rows [1230]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "223" 
+        cells [7]:
+            string = "1110" 
+        cells [8]:
+            string = "1690" 
+        cells [9]:
+            string = "4040" 
+rows [1231]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "1220" 
+        cells [8]:
+            string = "1560" 
+        cells [9]:
+            string = "3650" 
+rows [1232]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "1300" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "3450" 
+rows [1233]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "3850" 
+rows [1234]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "217" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1090" 
+        cells [9]:
+            string = "3900" 
+rows [1235]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "206" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "3700" 
+rows [1236]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "3520" 
+rows [1237]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "900" 
+        cells [9]:
+            string = "3900" 
+rows [1238]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "650" 
+        cells [9]:
+            string = "3800" 
+rows [1239]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "2900" 
+rows [1240]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "62" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "200" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "2150" 
+        cells [9]:
+            string = "2550" 
+rows [1241]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "3500" 
+        cells [9]:
+            string = "4260" 
+rows [1242]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "305" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "3400" 
+        cells [9]:
+            string = "4100" 
+rows [1243]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "322" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "3200" 
+        cells [9]:
+            string = "3660" 
+rows [1244]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "325" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "3000" 
+        cells [9]:
+            string = "3800" 
+rows [1245]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3680" 
+rows [1246]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "3120" 
+        cells [9]:
+            string = "3750" 
+rows [1247]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "1130" 
+        cells [8]:
+            string = "2560" 
+        cells [9]:
+            string = "3500" 
+rows [1248]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "1140" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "3560" 
+rows [1249]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "1130" 
+        cells [8]:
+            string = "1740" 
+        cells [9]:
+            string = "3670" 
+rows [1250]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "3450" 
+rows [1251]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "265" 
+        cells [7]:
+            string = "1170" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3440" 
+rows [1252]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "283" 
+        cells [7]:
+            string = "980" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "3100" 
+rows [1253]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "265" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1060" 
+        cells [9]:
+            string = "3450" 
+rows [1254]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "272" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "3000" 
+rows [1255]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1440" 
+        cells [9]:
+            string = "3500" 
+rows [1256]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "294" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "3500" 
+rows [1257]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "333" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "3650" 
+rows [1258]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2950" 
+rows [1259]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "1740" 
+        cells [9]:
+            string = "2460" 
+rows [1260]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "63" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "302" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2200" 
+rows [1261]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "3140" 
+        cells [9]:
+            string = "3700" 
+rows [1262]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "3350" 
+        cells [9]:
+            string = "3650" 
+rows [1263]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3400" 
+rows [1264]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2660" 
+        cells [9]:
+            string = "3500" 
+rows [1265]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "3400" 
+rows [1266]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "672" 
+        cells [8]:
+            string = "2550" 
+        cells [9]:
+            string = "3400" 
+rows [1267]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3370" 
+rows [1268]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "215" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "2850" 
+        cells [9]:
+            string = "3300" 
+rows [1269]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "880" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3200" 
+rows [1270]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "243" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "3250" 
+rows [1271]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "940" 
+        cells [8]:
+            string = "1380" 
+        cells [9]:
+            string = "2400" 
+rows [1272]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "276" 
+        cells [7]:
+            string = "1200" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3160" 
+rows [1273]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3450" 
+rows [1274]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "675" 
+        cells [8]:
+            string = "950" 
+        cells [9]:
+            string = "3240" 
+rows [1275]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3300" 
+rows [1276]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "3500" 
+rows [1277]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "3150" 
+rows [1278]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "3700" 
+rows [1279]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "1700" 
+rows [1280]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "64" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "1620" 
+        cells [9]:
+            string = "1790" 
+rows [1281]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "291" 
+        cells [7]:
+            string = "410" 
+        cells [8]:
+            string = "3200" 
+        cells [9]:
+            string = "3800" 
+rows [1282]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "264" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "3400" 
+        cells [9]:
+            string = "3900" 
+rows [1283]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "291" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3820" 
+rows [1284]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "2840" 
+        cells [9]:
+            string = "3900" 
+rows [1285]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "292" 
+        cells [7]:
+            string = "810" 
+        cells [8]:
+            string = "2640" 
+        cells [9]:
+            string = "4200" 
+rows [1286]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "2720" 
+        cells [9]:
+            string = "4100" 
+rows [1287]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "1080" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3950" 
+rows [1288]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "1050" 
+        cells [8]:
+            string = "2420" 
+        cells [9]:
+            string = "4000" 
+rows [1289]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "3950" 
+rows [1290]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1680" 
+        cells [9]:
+            string = "3800" 
+rows [1291]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "1040" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "3850" 
+rows [1292]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "1100" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "4250" 
+rows [1293]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1150" 
+        cells [9]:
+            string = "3950" 
+rows [1294]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "273" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "3900" 
+rows [1295]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "3800" 
+rows [1296]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "3950" 
+rows [1297]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "3640" 
+rows [1298]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "505" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "3400" 
+rows [1299]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "320" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1940" 
+        cells [9]:
+            string = "2820" 
+rows [1300]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "65" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "265" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "2100" 
+        cells [9]:
+            string = "2600" 
+rows [1301]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "330" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2800" 
+        cells [9]:
+            string = "3550" 
+rows [1302]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "333" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "2730" 
+        cells [9]:
+            string = "3550" 
+rows [1303]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "560" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3450" 
+rows [1304]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3450" 
+rows [1305]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3750" 
+rows [1306]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "835" 
+        cells [8]:
+            string = "2420" 
+        cells [9]:
+            string = "3740" 
+rows [1307]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "282" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "2150" 
+        cells [9]:
+            string = "3650" 
+rows [1308]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "2150" 
+        cells [9]:
+            string = "3700" 
+rows [1309]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "293" 
+        cells [7]:
+            string = "880" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "3750" 
+rows [1310]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "340" 
+        cells [7]:
+            string = "900" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "3650" 
+rows [1311]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "299" 
+        cells [7]:
+            string = "990" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "3750" 
+rows [1312]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "1050" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "3730" 
+rows [1313]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "940" 
+        cells [9]:
+            string = "3750" 
+rows [1314]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "333" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "1020" 
+        cells [9]:
+            string = "3700" 
+rows [1315]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "322" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1195" 
+        cells [9]:
+            string = "3750" 
+rows [1316]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "350" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "3500" 
+rows [1317]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "316" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "3600" 
+rows [1318]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "345" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "3470" 
+rows [1319]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "805" 
+        cells [8]:
+            string = "1705" 
+        cells [9]:
+            string = "2420" 
+rows [1320]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "66" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "2400" 
+rows [1321]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "210" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "3400" 
+        cells [9]:
+            string = "4320" 
+rows [1322]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "227" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "3610" 
+        cells [9]:
+            string = "4220" 
+rows [1323]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "680" 
+        cells [8]:
+            string = "3250" 
+        cells [9]:
+            string = "4380" 
+rows [1324]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "440" 
+        cells [8]:
+            string = "3000" 
+        cells [9]:
+            string = "3790" 
+rows [1325]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3610" 
+rows [1326]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3650" 
+rows [1327]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "1240" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3640" 
+rows [1328]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "215" 
+        cells [7]:
+            string = "1050" 
+        cells [8]:
+            string = "2550" 
+        cells [9]:
+            string = "3550" 
+rows [1329]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "820" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "3500" 
+rows [1330]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "3200" 
+rows [1331]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "218" 
+        cells [7]:
+            string = "1090" 
+        cells [8]:
+            string = "1380" 
+        cells [9]:
+            string = "3050" 
+rows [1332]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "2800" 
+rows [1333]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1220" 
+        cells [9]:
+            string = "3700" 
+rows [1334]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "640" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "3000" 
+rows [1335]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "219" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1360" 
+        cells [9]:
+            string = "3700" 
+rows [1336]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "214" 
+        cells [7]:
+            string = "730" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3600" 
+rows [1337]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "3250" 
+rows [1338]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1280" 
+        cells [9]:
+            string = "3650" 
+rows [1339]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "222" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "2130" 
+        cells [9]:
+            string = "2360" 
+rows [1340]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "67" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "205" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "2240" 
+        cells [9]:
+            string = "2460" 
+rows [1341]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "253" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "3250" 
+        cells [9]:
+            string = "3720" 
+rows [1342]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "3100" 
+        cells [9]:
+            string = "3400" 
+rows [1343]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3640" 
+rows [1344]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "2630" 
+        cells [9]:
+            string = "3640" 
+rows [1345]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "255" 
+        cells [7]:
+            string = "710" 
+        cells [8]:
+            string = "2550" 
+        cells [9]:
+            string = "3560" 
+rows [1346]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3470" 
+rows [1347]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "1140" 
+        cells [8]:
+            string = "2260" 
+        cells [9]:
+            string = "3640" 
+rows [1348]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "1110" 
+        cells [8]:
+            string = "2230" 
+        cells [9]:
+            string = "3380" 
+rows [1349]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "3500" 
+rows [1350]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "257" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "1490" 
+        cells [9]:
+            string = "3300" 
+rows [1351]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "940" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "3400" 
+rows [1352]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "930" 
+        cells [8]:
+            string = "1370" 
+        cells [9]:
+            string = "3120" 
+rows [1353]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "860" 
+        cells [9]:
+            string = "3400" 
+rows [1354]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "910" 
+        cells [9]:
+            string = "3420" 
+rows [1355]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "255" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3320" 
+rows [1356]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "3320" 
+rows [1357]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "274" 
+        cells [7]:
+            string = "360" 
+        cells [8]:
+            string = "660" 
+        cells [9]:
+            string = "3050" 
+rows [1358]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "310" 
+        cells [8]:
+            string = "730" 
+        cells [9]:
+            string = "3500" 
+rows [1359]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "1800" 
+rows [1360]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "68" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "239" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "1960" 
+rows [1361]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "2950" 
+        cells [9]:
+            string = "3600" 
+rows [1362]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "320" 
+        cells [8]:
+            string = "3210" 
+        cells [9]:
+            string = "3600" 
+rows [1363]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "2610" 
+        cells [9]:
+            string = "3560" 
+rows [1364]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "2570" 
+        cells [9]:
+            string = "3600" 
+rows [1365]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "2500" 
+        cells [9]:
+            string = "3580" 
+rows [1366]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2360" 
+        cells [9]:
+            string = "3400" 
+rows [1367]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "2400" 
+        cells [9]:
+            string = "3200" 
+rows [1368]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "2270" 
+        cells [9]:
+            string = "3200" 
+rows [1369]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "3350" 
+rows [1370]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3240" 
+rows [1371]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "2950" 
+rows [1372]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "920" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2770" 
+rows [1373]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "790" 
+        cells [8]:
+            string = "1050" 
+        cells [9]:
+            string = "2900" 
+rows [1374]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "750" 
+        cells [8]:
+            string = "1000" 
+        cells [9]:
+            string = "2500" 
+rows [1375]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1430" 
+        cells [9]:
+            string = "3320" 
+rows [1376]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "263" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "3200" 
+rows [1377]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "295" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3010" 
+rows [1378]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1330" 
+        cells [9]:
+            string = "2840" 
+rows [1379]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "272" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1880" 
+        cells [9]:
+            string = "2400" 
+rows [1380]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "69" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "255" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1610" 
+        cells [9]:
+            string = "1910" 
+rows [1381]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "2820" 
+        cells [9]:
+            string = "3400" 
+rows [1382]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "244" 
+        cells [7]:
+            string = "317" 
+        cells [8]:
+            string = "3125" 
+        cells [9]:
+            string = "3500" 
+rows [1383]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "2520" 
+        cells [9]:
+            string = "3300" 
+rows [1384]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "420" 
+        cells [8]:
+            string = "2480" 
+        cells [9]:
+            string = "3140" 
+rows [1385]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "657" 
+        cells [8]:
+            string = "2300" 
+        cells [9]:
+            string = "3300" 
+rows [1386]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "232" 
+        cells [7]:
+            string = "672" 
+        cells [8]:
+            string = "2275" 
+        cells [9]:
+            string = "3300" 
+rows [1387]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "231" 
+        cells [7]:
+            string = "808" 
+        cells [8]:
+            string = "1950" 
+        cells [9]:
+            string = "3300" 
+rows [1388]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "870" 
+        cells [8]:
+            string = "2000" 
+        cells [9]:
+            string = "3200" 
+rows [1389]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "706" 
+        cells [8]:
+            string = "1410" 
+        cells [9]:
+            string = "3200" 
+rows [1390]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "211" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1480" 
+        cells [9]:
+            string = "2880" 
+rows [1391]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "3100" 
+rows [1392]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "227" 
+        cells [7]:
+            string = "910" 
+        cells [8]:
+            string = "1360" 
+        cells [9]:
+            string = "2950" 
+rows [1393]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "203" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1120" 
+        cells [9]:
+            string = "3070" 
+rows [1394]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2760" 
+rows [1395]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "475" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3150" 
+rows [1396]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "212" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "2750" 
+rows [1397]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "244" 
+        cells [7]:
+            string = "403" 
+        cells [8]:
+            string = "1100" 
+        cells [9]:
+            string = "2950" 
+rows [1398]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "363" 
+        cells [8]:
+            string = "920" 
+        cells [9]:
+            string = "2900" 
+rows [1399]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "226" 
+        cells [7]:
+            string = "452" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "1810" 
+rows [1400]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "70" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "232" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1550" 
+        cells [9]:
+            string = "1740" 
+rows [1401]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "280" 
+        cells [8]:
+            string = "3140" 
+        cells [9]:
+            string = "3830" 
+rows [1402]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "3400" 
+        cells [9]:
+            string = "3950" 
+rows [1403]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "2700" 
+        cells [9]:
+            string = "3650" 
+rows [1404]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "2840" 
+        cells [9]:
+            string = "3700" 
+rows [1405]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "215" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "2650" 
+        cells [9]:
+            string = "3550" 
+rows [1406]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "220" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "2660" 
+        cells [9]:
+            string = "3770" 
+rows [1407]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "910" 
+        cells [8]:
+            string = "2370" 
+        cells [9]:
+            string = "3160" 
+rows [1408]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "930" 
+        cells [8]:
+            string = "2350" 
+        cells [9]:
+            string = "3450" 
+rows [1409]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "770" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "3420" 
+rows [1410]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "690" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "3350" 
+rows [1411]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "242" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "1450" 
+        cells [9]:
+            string = "3260" 
+rows [1412]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "1010" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "3150" 
+rows [1413]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "232" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "3550" 
+rows [1414]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "225" 
+        cells [7]:
+            string = "720" 
+        cells [8]:
+            string = "1260" 
+        cells [9]:
+            string = "3400" 
+rows [1415]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "216" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1640" 
+        cells [9]:
+            string = "3580" 
+rows [1416]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1440" 
+        cells [9]:
+            string = "3500" 
+rows [1417]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "3260" 
+rows [1418]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "273" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "1090" 
+        cells [9]:
+            string = "3350" 
+rows [1419]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "240" 
+        cells [7]:
+            string = "430" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2400" 
+rows [1420]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "71" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "233" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1840" 
+        cells [9]:
+            string = "2400" 
+rows [1421]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "330" 
+        cells [8]:
+            string = "3050" 
+        cells [9]:
+            string = "3800" 
+rows [1422]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "2860" 
+        cells [9]:
+            string = "3610" 
+rows [1423]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "2720" 
+        cells [9]:
+            string = "3360" 
+rows [1424]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "230" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3550" 
+rows [1425]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "735" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "3300" 
+rows [1426]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "2560" 
+        cells [9]:
+            string = "3300" 
+rows [1427]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "235" 
+        cells [7]:
+            string = "940" 
+        cells [8]:
+            string = "2020" 
+        cells [9]:
+            string = "2580" 
+rows [1428]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "232" 
+        cells [7]:
+            string = "1070" 
+        cells [8]:
+            string = "2320" 
+        cells [9]:
+            string = "2900" 
+rows [1429]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "268" 
+        cells [7]:
+            string = "860" 
+        cells [8]:
+            string = "1530" 
+        cells [9]:
+            string = "3100" 
+rows [1430]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "256" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3050" 
+rows [1431]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "245" 
+        cells [7]:
+            string = "780" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3180" 
+rows [1432]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "236" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "3120" 
+rows [1433]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "258" 
+        cells [7]:
+            string = "825" 
+        cells [8]:
+            string = "1210" 
+        cells [9]:
+            string = "3100" 
+rows [1434]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "930" 
+        cells [8]:
+            string = "930" 
+        cells [9]:
+            string = "2900" 
+rows [1435]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "490" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "2860" 
+rows [1436]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1320" 
+        cells [9]:
+            string = "2840" 
+rows [1437]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "470" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "2800" 
+rows [1438]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "1160" 
+        cells [9]:
+            string = "2800" 
+rows [1439]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "268" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1660" 
+        cells [9]:
+            string = "2100" 
+rows [1440]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "72" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "480" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "1830" 
+rows [1441]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "295" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "3200" 
+        cells [9]:
+            string = "4000" 
+rows [1442]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "3250" 
+        cells [9]:
+            string = "3700" 
+rows [1443]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "294" 
+        cells [7]:
+            string = "380" 
+        cells [8]:
+            string = "2960" 
+        cells [9]:
+            string = "3800" 
+rows [1444]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3600" 
+rows [1445]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "670" 
+        cells [8]:
+            string = "2790" 
+        cells [9]:
+            string = "3600" 
+rows [1446]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "620" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3500" 
+rows [1447]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "1070" 
+        cells [8]:
+            string = "2380" 
+        cells [9]:
+            string = "3100" 
+rows [1448]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "1130" 
+        cells [8]:
+            string = "2320" 
+        cells [9]:
+            string = "3110" 
+rows [1449]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "700" 
+        cells [8]:
+            string = "1730" 
+        cells [9]:
+            string = "2960" 
+rows [1450]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "725" 
+        cells [8]:
+            string = "1570" 
+        cells [9]:
+            string = "2900" 
+rows [1451]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "1110" 
+        cells [8]:
+            string = "1630" 
+        cells [9]:
+            string = "2780" 
+rows [1452]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "1130" 
+        cells [8]:
+            string = "1400" 
+        cells [9]:
+            string = "3000" 
+rows [1453]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "292" 
+        cells [7]:
+            string = "580" 
+        cells [8]:
+            string = "930" 
+        cells [9]:
+            string = "2950" 
+rows [1454]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1070" 
+        cells [9]:
+            string = "3000" 
+rows [1455]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "450" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "3000" 
+rows [1456]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "320" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "3150" 
+rows [1457]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "307" 
+        cells [7]:
+            string = "460" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "3070" 
+rows [1458]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "400" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "3000" 
+rows [1459]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1770" 
+        cells [9]:
+            string = "2040" 
+rows [1460]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "73" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "2050" 
+        cells [9]:
+            string = "2300" 
+rows [1461]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "300" 
+        cells [8]:
+            string = "3250" 
+        cells [9]:
+            string = "3850" 
+rows [1462]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "275" 
+        cells [8]:
+            string = "3280" 
+        cells [9]:
+            string = "3800" 
+rows [1463]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "2850" 
+        cells [9]:
+            string = "3400" 
+rows [1464]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "267" 
+        cells [7]:
+            string = "485" 
+        cells [8]:
+            string = "2630" 
+        cells [9]:
+            string = "3450" 
+rows [1465]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "264" 
+        cells [7]:
+            string = "650" 
+        cells [8]:
+            string = "2880" 
+        cells [9]:
+            string = "3500" 
+rows [1466]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "284" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3600" 
+rows [1467]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "1300" 
+        cells [8]:
+            string = "2280" 
+        cells [9]:
+            string = "3130" 
+rows [1468]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "260" 
+        cells [7]:
+            string = "1300" 
+        cells [8]:
+            string = "2160" 
+        cells [9]:
+            string = "3300" 
+rows [1469]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "3020" 
+rows [1470]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "840" 
+        cells [8]:
+            string = "1580" 
+        cells [9]:
+            string = "2880" 
+rows [1471]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "250" 
+        cells [7]:
+            string = "1230" 
+        cells [8]:
+            string = "1300" 
+        cells [9]:
+            string = "3200" 
+rows [1472]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "1090" 
+        cells [8]:
+            string = "1230" 
+        cells [9]:
+            string = "2980" 
+rows [1473]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "265" 
+        cells [7]:
+            string = "850" 
+        cells [8]:
+            string = "850" 
+        cells [9]:
+            string = "2920" 
+rows [1474]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "285" 
+        cells [7]:
+            string = "685" 
+        cells [8]:
+            string = "1030" 
+        cells [9]:
+            string = "2900" 
+rows [1475]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "283" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "3050" 
+rows [1476]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "600" 
+        cells [8]:
+            string = "1440" 
+        cells [9]:
+            string = "2900" 
+rows [1477]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "390" 
+        cells [8]:
+            string = "1340" 
+        cells [9]:
+            string = "2830" 
+rows [1478]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "284" 
+        cells [7]:
+            string = "340" 
+        cells [8]:
+            string = "1110" 
+        cells [9]:
+            string = "3080" 
+rows [1479]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1650" 
+        cells [9]:
+            string = "1740" 
+rows [1480]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "74" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "286" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1660" 
+        cells [9]:
+            string = "1770" 
+rows [1481]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "265" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "2950" 
+        cells [9]:
+            string = "3400" 
+rows [1482]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "370" 
+        cells [8]:
+            string = "2910" 
+        cells [9]:
+            string = "3480" 
+rows [1483]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "271" 
+        cells [7]:
+            string = "515" 
+        cells [8]:
+            string = "2740" 
+        cells [9]:
+            string = "3280" 
+rows [1484]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "290" 
+        cells [7]:
+            string = "485" 
+        cells [8]:
+            string = "2600" 
+        cells [9]:
+            string = "3200" 
+rows [1485]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "2520" 
+        cells [9]:
+            string = "3150" 
+rows [1486]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "272" 
+        cells [7]:
+            string = "565" 
+        cells [8]:
+            string = "2440" 
+        cells [9]:
+            string = "3120" 
+rows [1487]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "262" 
+        cells [7]:
+            string = "970" 
+        cells [8]:
+            string = "2030" 
+        cells [9]:
+            string = "2880" 
+rows [1488]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "915" 
+        cells [8]:
+            string = "2130" 
+        cells [9]:
+            string = "2900" 
+rows [1489]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "810" 
+        cells [8]:
+            string = "1600" 
+        cells [9]:
+            string = "3230" 
+rows [1490]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "280" 
+        cells [7]:
+            string = "760" 
+        cells [8]:
+            string = "1530" 
+        cells [9]:
+            string = "3180" 
+rows [1491]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "810" 
+        cells [8]:
+            string = "1350" 
+        cells [9]:
+            string = "2940" 
+rows [1492]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "1000" 
+        cells [8]:
+            string = "1360" 
+        cells [9]:
+            string = "3000" 
+rows [1493]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "270" 
+        cells [7]:
+            string = "535" 
+        cells [8]:
+            string = "970" 
+        cells [9]:
+            string = "2960" 
+rows [1494]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1080" 
+        cells [9]:
+            string = "2850" 
+rows [1495]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "275" 
+        cells [7]:
+            string = "550" 
+        cells [8]:
+            string = "1420" 
+        cells [9]:
+            string = "3040" 
+rows [1496]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "295" 
+        cells [7]:
+            string = "570" 
+        cells [8]:
+            string = "1500" 
+        cells [9]:
+            string = "3000" 
+rows [1497]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "283" 
+        cells [7]:
+            string = "510" 
+        cells [8]:
+            string = "1700" 
+        cells [9]:
+            string = "3020" 
+rows [1498]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "278" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1640" 
+        cells [9]:
+            string = "3050" 
+rows [1499]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "261" 
+        cells [7]:
+            string = "522" 
+        cells [8]:
+            string = "1830" 
+        cells [9]:
+            string = "2350" 
+rows [1500]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "m" 
+        cells [3]:
+            string = "75" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "282" 
+        cells [7]:
+            string = "530" 
+        cells [8]:
+            string = "1800" 
+        cells [9]:
+            string = "2250" 
+rows [1501]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "320" 
+        cells [7]:
+            string = "350" 
+        cells [8]:
+            string = "3240" 
+        cells [9]:
+            string = "3760" 
+rows [1502]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "iy" 
+        cells [5]:
+            string = "i" 
+        cells [6]:
+            string = "344" 
+        cells [7]:
+            string = "344" 
+        cells [8]:
+            string = "3120" 
+        cells [9]:
+            string = "3640" 
+rows [1503]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "308" 
+        cells [7]:
+            string = "590" 
+        cells [8]:
+            string = "2760" 
+        cells [9]:
+            string = "3500" 
+rows [1504]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ih" 
+        cells [5]:
+            string = "\ic" 
+        cells [6]:
+            string = "320" 
+        cells [7]:
+            string = "540" 
+        cells [8]:
+            string = "2900" 
+        cells [9]:
+            string = "3500" 
+rows [1505]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "307" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "2750" 
+        cells [9]:
+            string = "3650" 
+rows [1506]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "eh" 
+        cells [5]:
+            string = "\ef" 
+        cells [6]:
+            string = "308" 
+        cells [7]:
+            string = "800" 
+        cells [8]:
+            string = "2640" 
+        cells [9]:
+            string = "3540" 
+rows [1507]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "294" 
+        cells [7]:
+            string = "1140" 
+        cells [8]:
+            string = "2450" 
+        cells [9]:
+            string = "3230" 
+rows [1508]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ae" 
+        cells [5]:
+            string = "\ae" 
+        cells [6]:
+            string = "239" 
+        cells [7]:
+            string = "1130" 
+        cells [8]:
+            string = "2550" 
+        cells [9]:
+            string = "3150" 
+rows [1509]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "310" 
+        cells [7]:
+            string = "930" 
+        cells [8]:
+            string = "1540" 
+        cells [9]:
+            string = "3120" 
+rows [1510]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ah" 
+        cells [5]:
+            string = "\vt" 
+        cells [6]:
+            string = "315" 
+        cells [7]:
+            string = "950" 
+        cells [8]:
+            string = "1670" 
+        cells [9]:
+            string = "3150" 
+rows [1511]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "350" 
+        cells [7]:
+            string = "1190" 
+        cells [8]:
+            string = "1470" 
+        cells [9]:
+            string = "3150" 
+rows [1512]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "aa" 
+        cells [5]:
+            string = "\as" 
+        cells [6]:
+            string = "314" 
+        cells [7]:
+            string = "1070" 
+        cells [8]:
+            string = "1460" 
+        cells [9]:
+            string = "2950" 
+rows [1513]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "300" 
+        cells [7]:
+            string = "910" 
+        cells [8]:
+            string = "1200" 
+        cells [9]:
+            string = "3180" 
+rows [1514]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "ao" 
+        cells [5]:
+            string = "\ct" 
+        cells [6]:
+            string = "330" 
+        cells [7]:
+            string = "830" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3250" 
+rows [1515]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "327" 
+        cells [7]:
+            string = "630" 
+        cells [8]:
+            string = "1310" 
+        cells [9]:
+            string = "3270" 
+rows [1516]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "uh" 
+        cells [5]:
+            string = "\hs" 
+        cells [6]:
+            string = "322" 
+        cells [7]:
+            string = "610" 
+        cells [8]:
+            string = "1550" 
+        cells [9]:
+            string = "3400" 
+rows [1517]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "345" 
+        cells [7]:
+            string = "520" 
+        cells [8]:
+            string = "1250" 
+        cells [9]:
+            string = "3460" 
+rows [1518]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "uw" 
+        cells [5]:
+            string = "u" 
+        cells [6]:
+            string = "334" 
+        cells [7]:
+            string = "500" 
+        cells [8]:
+            string = "1140" 
+        cells [9]:
+            string = "3380" 
+rows [1519]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "308" 
+        cells [7]:
+            string = "740" 
+        cells [8]:
+            string = "1850" 
+        cells [9]:
+            string = "2160" 
+rows [1520]:
+    numberOfColumns = 9 
+    cells []: 
+        cells [1]:
+            string = "c" 
+        cells [2]:
+            string = "f" 
+        cells [3]:
+            string = "76" 
+        cells [4]:
+            string = "er" 
+        cells [5]:
+            string = "\er\hr" 
+        cells [6]:
+            string = "328" 
+        cells [7]:
+            string = "660" 
+        cells [8]:
+            string = "1830" 
+        cells [9]:
+            string = "2200" 
diff --git a/test/sys/graphics.praat b/test/sys/graphics.praat
index 85d26a6..430e45c 100644
Binary files a/test/sys/graphics.praat and b/test/sys/graphics.praat differ
diff --git a/test/sys/progress.praat b/test/sys/progress.praat
index 0c20998..175cd9f 100644
Binary files a/test/sys/progress.praat and b/test/sys/progress.praat differ
diff --git a/test/sys/script2.praat b/test/sys/script2.praat
index e468d1e..1033bc9 100644
Binary files a/test/sys/script2.praat and b/test/sys/script2.praat differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/praat.git



More information about the debian-med-commit mailing list